Built motion from commit c3790b09.|2.6.22
authorsupport <support@xcally.com>
Fri, 25 Nov 2022 08:35:05 +0000 (08:35 +0000)
committersupport <support@xcally.com>
Fri, 25 Nov 2022 08:35:05 +0000 (08:35 +0000)
1326 files changed:
apidoc/api_data.js
apidoc/api_data.json
apidoc/api_project.js
apidoc/api_project.json
npm-shrinkwrap.json
package.json
public/app/footer/i18n/ar.json
public/app/footer/i18n/bs.json
public/app/footer/i18n/cs.json
public/app/footer/i18n/da.json
public/app/footer/i18n/de.json
public/app/footer/i18n/en.json
public/app/footer/i18n/es.json
public/app/footer/i18n/et.json
public/app/footer/i18n/fa.json
public/app/footer/i18n/fi.json
public/app/footer/i18n/fr.json
public/app/footer/i18n/he.json
public/app/footer/i18n/hi.json
public/app/footer/i18n/hu.json
public/app/footer/i18n/id.json
public/app/footer/i18n/is.json
public/app/footer/i18n/it.json
public/app/footer/i18n/ja.json
public/app/footer/i18n/ko.json
public/app/footer/i18n/lt.json
public/app/footer/i18n/lv.json
public/app/footer/i18n/nl.json
public/app/footer/i18n/no.json
public/app/footer/i18n/pl.json
public/app/footer/i18n/pt-BR.json
public/app/footer/i18n/pt-PT.json
public/app/footer/i18n/ru.json
public/app/footer/i18n/sv.json
public/app/footer/i18n/tr.json
public/app/footer/i18n/zh-CN.json
public/app/footer/i18n/zh-TW.json
public/index.html
public/scripts/app.788d460c.js [moved from public/scripts/app.8170ac13.js with 53% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authActiveDirectory/authActiveDirectory.controller.js
server/api/authActiveDirectory/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.events.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/client-side-logs.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.oauth.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmContactHasItem/cmContactHasItem.attributes.js
server/api/cmContactHasItem/cmContactHasItem.controller.js
server/api/cmContactHasItem/cmContactHasItem.model.js
server/api/cmContactHasItem/cmContactHasItem.rpc.js
server/api/cmContactHasItem/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
server/api/cmHopperAdditionalPhone/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/contactItemType/contactItemType.attributes.js
server/api/contactItemType/contactItemType.controller.js
server/api/contactItemType/contactItemType.model.js
server/api/contactItemType/contactItemType.rpc.js
server/api/contactItemType/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user-setting/index.js
server/api/user-setting/user-setting.attributes.js
server/api/user-setting/user-setting.controller.js
server/api/user-setting/user-setting.events.js
server/api/user-setting/user-setting.model.js
server/api/user-setting/user-setting.socket.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/contacts/index.js
server/components/contacts/sql-utils.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/import/cm/csvUpdates.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/interaction/sql-utils.js
server/components/interaction/update-interaction.js
server/components/interaction/utils.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/components/realtime/agents.js
server/components/realtime/queues.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/cloud-provider.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/api.js
server/errors/index.js
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/events.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/project.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/index.js
server/services/ami/dialer/models/action.js
server/services/ami/dialer/models/agentComplete.js
server/services/ami/dialer/models/final.js
server/services/ami/dialer/models/hangup.js
server/services/ami/dialer/models/history.js
server/services/ami/dialer/models/queueCallerAbandon.js
server/services/ami/dialer/utils/hopper.js
server/services/ami/dialer/utils/index.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/voiceQueueSummary.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/realtime/utils.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperAdditionalPhone.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/interval.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/tvox.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js
server/utils/client-side-logger.js
server/utils/iftime.js
server/utils/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js
server/utils/update-app-config.js
snippet/3.5.0/assets/fonts/74bd8541f6152e9aa0cb.ttf [moved from snippet/3.8.0/assets/fonts/74bd8541f6152e9aa0cb.ttf with 100% similarity]
snippet/3.5.0/assets/fonts/8a4db4218c8e3ba96535.woff [moved from snippet/3.8.0/assets/fonts/8a4db4218c8e3ba96535.woff with 100% similarity]
snippet/3.5.0/assets/fonts/c90b9e812971d29ad6eb.eot [moved from snippet/3.8.0/assets/fonts/c90b9e812971d29ad6eb.eot with 100% similarity]
snippet/3.5.0/assets/fonts/db15fb94f19c4e36b451.woff [moved from snippet/3.8.0/assets/fonts/db15fb94f19c4e36b451.woff with 100% similarity]
snippet/3.5.0/assets/fonts/dc116c4c8ce73229b683.ttf [moved from snippet/3.8.0/assets/fonts/dc116c4c8ce73229b683.ttf with 100% similarity]
snippet/3.5.0/assets/fonts/f2fc8fdab7e77dd45cca.eot [moved from snippet/3.8.0/assets/fonts/f2fc8fdab7e77dd45cca.eot with 100% similarity]
snippet/3.5.0/assets/fonts/ffef7f48a358edc53224.woff2 [moved from snippet/3.8.0/assets/fonts/ffef7f48a358edc53224.woff2 with 100% similarity]
snippet/3.5.0/assets/images/00fe515d7113c2841e5d.svg [moved from snippet/3.8.0/assets/images/00fe515d7113c2841e5d.svg with 100% similarity]
snippet/3.5.0/assets/images/369ccd33e5368870b112.png [moved from snippet/3.8.0/assets/images/369ccd33e5368870b112.png with 100% similarity]
snippet/3.5.0/assets/images/3b24a6b94b2631f4d565.svg [moved from snippet/3.8.0/assets/images/3b24a6b94b2631f4d565.svg with 100% similarity]
snippet/3.5.0/assets/images/b45cb1fa106a1150f12e.png [moved from snippet/3.8.0/assets/images/b45cb1fa106a1150f12e.png with 100% similarity]
snippet/3.5.0/assets/images/c9f502ad417b1b987198.svg [moved from snippet/3.8.0/assets/images/c9f502ad417b1b987198.svg with 100% similarity]
snippet/3.5.0/index.html [moved from snippet/3.8.0/index.html with 69% similarity]
snippet/3.5.0/scripts/app.js [moved from snippet/3.8.0/scripts/app.js with 100% similarity]
snippet/3.5.0/scripts/app.js.LICENSE.txt [moved from snippet/3.8.0/scripts/app.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/chat.js [new file with mode: 0644]
snippet/3.5.0/scripts/chat.js.LICENSE.txt [moved from snippet/3.8.0/scripts/chat.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/chat.js.map [moved from snippet/3.8.0/scripts/chat.js.map with 52% similarity]
snippet/3.5.0/scripts/mobile.js [moved from snippet/3.8.0/scripts/mobile.js with 100% similarity]
snippet/3.5.0/scripts/runtime.js [moved from snippet/3.8.0/scripts/runtime.js with 100% similarity]
snippet/3.5.0/scripts/runtime.js.map [moved from snippet/3.8.0/scripts/runtime.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-58d021f3.js [moved from snippet/3.8.0/scripts/vendor-angular-58d021f3.js with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-58d021f3.js.map [moved from snippet/3.8.0/scripts/vendor-angular-58d021f3.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-76f2ed34.js [moved from snippet/3.8.0/scripts/vendor-angular-76f2ed34.js with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-76f2ed34.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-angular-76f2ed34.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-76f2ed34.js.map [moved from snippet/3.8.0/scripts/vendor-angular-76f2ed34.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-animate.js [moved from snippet/3.8.0/scripts/vendor-angular-animate.js with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-animate.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-angular-animate.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-animate.js.map [moved from snippet/3.8.0/scripts/vendor-angular-animate.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-local-storage.js [moved from snippet/3.8.0/scripts/vendor-angular-local-storage.js with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-local-storage.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-angular-local-storage.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-local-storage.js.map [moved from snippet/3.8.0/scripts/vendor-angular-local-storage.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-material.js [moved from snippet/3.8.0/scripts/vendor-angular-material.js with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-material.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-angular-material.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-material.js.map [moved from snippet/3.8.0/scripts/vendor-angular-material.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-messages.js [moved from snippet/3.8.0/scripts/vendor-angular-messages.js with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-messages.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-angular-messages.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-messages.js.map [moved from snippet/3.8.0/scripts/vendor-angular-messages.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-resource.js [moved from snippet/3.8.0/scripts/vendor-angular-resource.js with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-resource.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-angular-resource.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-resource.js.map [moved from snippet/3.8.0/scripts/vendor-angular-resource.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-sanitize.js [moved from snippet/3.8.0/scripts/vendor-angular-sanitize.js with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-sanitize.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-angular-sanitize.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-angular-sanitize.js.map [moved from snippet/3.8.0/scripts/vendor-angular-sanitize.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-emojione.js [moved from snippet/3.8.0/scripts/vendor-emojione.js with 100% similarity]
snippet/3.5.0/scripts/vendor-emojione.js.map [moved from snippet/3.8.0/scripts/vendor-emojione.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-emojionearea.js [moved from snippet/3.8.0/scripts/vendor-emojionearea.js with 100% similarity]
snippet/3.5.0/scripts/vendor-emojionearea.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-emojionearea.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-emojionearea.js.map [moved from snippet/3.8.0/scripts/vendor-emojionearea.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-flow.js [moved from snippet/3.8.0/scripts/vendor-flow.js with 100% similarity]
snippet/3.5.0/scripts/vendor-flow.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-flow.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-flow.js.map [moved from snippet/3.8.0/scripts/vendor-flow.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-index.js [moved from snippet/3.8.0/scripts/vendor-index.js with 100% similarity]
snippet/3.5.0/scripts/vendor-index.js.map [moved from snippet/3.8.0/scripts/vendor-index.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-jquery.js [moved from snippet/3.8.0/scripts/vendor-jquery.js with 100% similarity]
snippet/3.5.0/scripts/vendor-jquery.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-jquery.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-jquery.js.map [moved from snippet/3.8.0/scripts/vendor-jquery.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-jquery.textcomplete.js [moved from snippet/3.8.0/scripts/vendor-jquery.textcomplete.js with 100% similarity]
snippet/3.5.0/scripts/vendor-jquery.textcomplete.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-jquery.textcomplete.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-jquery.textcomplete.js.map [moved from snippet/3.8.0/scripts/vendor-jquery.textcomplete.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-moment.js [moved from snippet/3.8.0/scripts/vendor-moment.js with 100% similarity]
snippet/3.5.0/scripts/vendor-moment.js.LICENSE.txt [moved from snippet/3.8.0/scripts/vendor-moment.js.LICENSE.txt with 100% similarity]
snippet/3.5.0/scripts/vendor-moment.js.map [moved from snippet/3.8.0/scripts/vendor-moment.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-ng-embed.js [moved from snippet/3.8.0/scripts/vendor-ng-embed.js with 100% similarity]
snippet/3.5.0/scripts/vendor-ng-embed.js.map [moved from snippet/3.8.0/scripts/vendor-ng-embed.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-stateDirectives.js [moved from snippet/3.8.0/scripts/vendor-stateDirectives.js with 100% similarity]
snippet/3.5.0/scripts/vendor-stateDirectives.js.map [moved from snippet/3.8.0/scripts/vendor-stateDirectives.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-stateService.js [moved from snippet/3.8.0/scripts/vendor-stateService.js with 100% similarity]
snippet/3.5.0/scripts/vendor-stateService.js.map [moved from snippet/3.8.0/scripts/vendor-stateService.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-transition.js [moved from snippet/3.8.0/scripts/vendor-transition.js with 100% similarity]
snippet/3.5.0/scripts/vendor-transition.js.map [moved from snippet/3.8.0/scripts/vendor-transition.js.map with 100% similarity]
snippet/3.5.0/scripts/vendor-urlMatcher.js [moved from snippet/3.8.0/scripts/vendor-urlMatcher.js with 100% similarity]
snippet/3.5.0/scripts/vendor-urlMatcher.js.map [moved from snippet/3.8.0/scripts/vendor-urlMatcher.js.map with 100% similarity]
snippet/3.5.0/styles/app.css [moved from snippet/3.8.0/styles/app.css with 99% similarity]
snippet/3.5.0/styles/app.css.map [moved from snippet/3.8.0/styles/app.css.map with 99% similarity]
snippet/3.5.0/styles/mobile.css [moved from snippet/3.8.0/styles/mobile.css with 100% similarity]
snippet/3.5.0/styles/mobile.css.map [moved from snippet/3.8.0/styles/mobile.css.map with 100% similarity]
snippet/3.5.0/styles/vendor.css [moved from snippet/3.8.0/styles/vendor.css with 100% similarity]
snippet/3.5.0/styles/vendor.css.map [moved from snippet/3.8.0/styles/vendor.css.map with 100% similarity]
snippet/3.5.0/templates/00860aee362cdeeb1080.html [moved from snippet/3.8.0/templates/2444367602029f7ce07b.html with 100% similarity]
snippet/3.5.0/templates/3f18dac5f545add792db.html [moved from snippet/3.8.0/templates/c6696015a1b93372d614.html with 100% similarity]
snippet/3.5.0/templates/6043a16afdb829ba5934.html [moved from snippet/3.8.0/templates/66a0b4b6e8658e97c814.html with 100% similarity]
snippet/3.5.0/templates/9962474df74f9405ac72.html [moved from snippet/3.8.0/templates/c1e929900f2af303341f.html with 100% similarity]
snippet/3.5.0/templates/caf0e553108b226443aa.html [moved from snippet/3.8.0/templates/cd310ba2c496545551ae.html with 100% similarity]
snippet/3.5.0/templates/dc49a9ba939f8c099868.html [moved from snippet/3.8.0/templates/f4b04fc57c34408c2d9e.html with 100% similarity]
snippet/3.8.0/scripts/chat.js [deleted file]

index e6688c1..e2ef896 100644 (file)
@@ -18647,7 +18647,7 @@ define({ "api": [
     ],
     "name": "notify",
     "group": "Openchannel_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre><a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice</a></pre></p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre>&lt;a target=&quot;_blank&quot; href=&quot;https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252245/New+Channels+Configuration+Steps&quot;</a></pre></p>",
     "version": "0.0.0",
     "filename": "server/api/openchannelAccount/index.js",
     "groupTitle": "Openchannel_Accounts"
index 0586e41..ce85c1f 100644 (file)
     ],
     "name": "notify",
     "group": "Openchannel_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre><a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice</a></pre></p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre>&lt;a target=&quot;_blank&quot; href=&quot;https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252245/New+Channels+Configuration+Steps&quot;</a></pre></p>",
     "version": "0.0.0",
     "filename": "server/api/openchannelAccount/index.js",
     "groupTitle": "Openchannel_Accounts"
index 1cb1251..da169b1 100644 (file)
@@ -1,11 +1,11 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.6.24",
+  "version": "2.6.22",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
     "title": "Introduction",
-    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
+    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
   },
   "template": {
     "withGenerator": false,
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-11-24T06:35:15.232Z",
+    "time": "2022-11-25T08:26:34.283Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 0687233..3ce811a 100644 (file)
@@ -1,11 +1,11 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.6.24",
+  "version": "2.6.22",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
     "title": "Introduction",
-    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
+    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
   },
   "template": {
     "withGenerator": false,
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-11-24T06:35:15.232Z",
+    "time": "2022-11-25T08:26:34.283Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 7ce8e58..e40c91e 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.24",
+  "version": "2.6.22",
   "dependencies": {
     "@babel/code-frame": {
       "version": "7.18.6",
index 5d06901..2279703 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.24",
+  "version": "2.6.22",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
index 822cea4..62367a8 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "نحن نستخدم ملفات تعريف الارتباط لنمنحك أفضل تجربة. اقرأ <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie Policy\" class=\"blue-fg\"> سياسة ملفات تعريف الارتباط </a>."
+    "COOKIE_LAW": "نحن نستخدم ملفات تعريف الارتباط لنمنحك أفضل تجربة. اقرأ سياسة ملفات تعريف الارتباط."
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +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>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +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>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index 3ce3659..0b99f17 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Vi bruger cookies til at give dig den bedste oplevelse. Læs vores <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> cookiepolitik </a>."
+    "COOKIE_LAW": "Vi bruger cookies til at give dig den bedste oplevelse. Læs vores cookiepolitik."
   }
 }
index 11227ad..ba4c556 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Wir verwenden Cookies, um Ihnen die bestmögliche Erfahrung zu bieten. Lesen Sie unsere <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> Cookie-Richtlinie </a>."
+    "COOKIE_LAW": "Wir verwenden Cookies, um Ihnen die bestmögliche Erfahrung zu bieten. Lesen Sie unsere Cookie-Richtlinie."
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +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>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index c74cc69..ac52e4e 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Usamos cookies para brindarle la mejor experiencia. Lea nuestra <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\"class=\"blue-fg\"> política de cookies </a>."
+    "COOKIE_LAW": "Usamos cookies para brindarle la mejor experiencia. Lea nuestra política de cookies."
   }
 }
index ee6d003..002d860 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie cookie policy.",
     "ERRORS": {}
   }
 }
index e643895..cad1da2 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "ما از کوکی ها استفاده می کنیم تا بهترین تجربه را به شما بدهیم. <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> خط مشی کوکی </a> را بخوانید."
+    "COOKIE_LAW": "ما از کوکی ها استفاده می کنیم تا بهترین تجربه را به شما بدهیم. خط مشی کوکی را بخوانید."
   }
 }
index 95c865f..504129d 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Käytämme evästeitä saadaksesi sinulle parhaan mahdollisen kokemuksen. Lue <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> evästekäytäntö </a>."
+    "COOKIE_LAW": "Käytämme evästeitä saadaksesi sinulle parhaan mahdollisen kokemuksen. Lue evästekäytäntö."
   }
 }
index 5319e13..56b28f3 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Nous utilisons des cookies pour vous offrir la meilleure expérience. Lisez notre <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> politique sur les cookies </a>."
+    "COOKIE_LAW": "Nous utilisons des cookies pour vous offrir la meilleure expérience. Lisez notre politique sur les cookies."
   }
 }
index e2054af..9e6f38d 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "אנו משתמשים בקובצי cookie כדי להעניק לך חוויה מיטבית. לרשותך נוסח <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">המדיניות שלנו בנושא קובצי cookie</a>.",
+    "COOKIE_LAW": "אנו משתמשים בקובצי cookie כדי להעניק לך חוויה מיטבית. לרשותך נוסח המדיניות שלנו בנושא קובצי cookie.",
     "ERRORS": {}
   }
 }
index be3c5b1..c27a18b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "हम आपको बेहतरीन अनुभव देने के लिए कुकीज़ का उपयोग करते हैं। हमारे <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> कुकी नीति </a> पढ़ें।"
+    "COOKIE_LAW": "हम आपको बेहतरीन अनुभव देने के लिए कुकीज़ का उपयोग करते हैं। हमारे कुकी नीति पढ़ें।"
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +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>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index fb8e39c..ba65ebe 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Kami menggunakan cookie untuk memberi Anda pengalaman terbaik. Baca <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> kebijakan cookie </a> kami."
+    "COOKIE_LAW": "Kami menggunakan cookie untuk memberi Anda pengalaman terbaik. Baca kebijakan cookie kami."
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +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>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index efbfc38..364b39e 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Utilizziamo i cookie per fornirti un'esperienza migliore. Leggi la nostra <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>."
+    "COOKIE_LAW": "Utilizziamo i cookie per fornirti un'esperienza migliore. Leggi la nostra cookie policy."
   }
 }
index 41f2c92..639a80b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "私たちはあなたに最高の経験を与えるためにクッキーを使用しています。 <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie Policy\" class=\"blue-fg\">クッキーポリシー</a>をご覧ください。"
+    "COOKIE_LAW": "私たちはあなたに最高の経験を与えるためにクッキーを使用しています。クッキーポリシーをご覧ください。"
   }
 }
index fb1d248..8938b02 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "우리는 쿠키를 사용하여 최고의 경험을 제공합니다. <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> 쿠키 정책 </a>을 읽어보십시오."
+    "COOKIE_LAW": "우리는 쿠키를 사용하여 최고의 경험을 제공합니다. 쿠키 정책 을 읽어보십시오."
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +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>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index 201d1ee..803db53 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Mēs izmantojam sīkdatnes, lai sniegtu jums vislabāko pieredzi. Lasiet mūsu <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">sīkdatņu politiku</a>."
+    "COOKIE_LAW": "Mēs izmantojam sīkdatnes, lai sniegtu jums vislabāko pieredzi. Lasiet mūsu sīkdatņu politiku."
   }
 }
index 2ef529e..411a580 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Wij gebruiken cookies om u de beste ervaring te bieden. Lees ons <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> cookiebeleid </a>."
+    "COOKIE_LAW": "Wij gebruiken cookies om u de beste ervaring te bieden. Lees ons cookiebeleid."
   }
 }
index 2423f0c..d378a1d 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Vi bruker informasjonskapsler for å gi deg den beste opplevelsen. Les vår <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> informasjonskapsel </a>."
+    "COOKIE_LAW": "Vi bruker informasjonskapsler for å gi deg den beste opplevelsen. Les vår informasjonskapsel."
   }
 }
index 230e172..8d145f8 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Używamy plików cookie, aby zapewnić Ci jak najlepsze wrażenia. Przeczytaj naszą <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> politykę dotyczącą plików cookie </a>."
+    "COOKIE_LAW": "Używamy plików cookie, aby zapewnić Ci jak najlepsze wrażenia. Przeczytaj naszą politykę dotyczącą plików cookie."
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +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>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index 353f9d8..3423241 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Nós usamos cookies para lhe proporcionar a melhor experiência. Leia nossa <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> política de cookies </a>."
+    "COOKIE_LAW": "Nós usamos cookies para lhe proporcionar a melhor experiência. Leia nossa política de cookies."
   }
 }
index b096c67..d23b6cf 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Мы используем файлы cookie, чтобы дать вам лучший опыт. Ознакомьтесь с нашей <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> политикой cookie </a>."
+    "COOKIE_LAW": "Мы используем файлы cookie, чтобы дать вам лучший опыт. Ознакомьтесь с нашей политикой cookie."
   }
 }
index 5db59f7..e0e4c3d 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Vi använder cookies för att ge dig den bästa upplevelsen. Läs vår <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> cookie policy </a>."
+    "COOKIE_LAW": "Vi använder cookies för att ge dig den bästa upplevelsen. Läs vår cookie policy."
   }
 }
index bb26fe4..5ebf75e 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Size en iyi deneyimi sunmak için çerezleri kullanıyoruz. <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> çerez politikamızı </a> okuyun."
+    "COOKIE_LAW": "Size en iyi deneyimi sunmak için çerezleri kullanıyoruz. çerez politikamızı okuyun."
   }
 }
index ca6d024..87fc928 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "我们使用cookies来为您提供最佳体验。请阅读我们的<a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> Cookie政策</a>。"
+    "COOKIE_LAW": "我们使用cookies来为您提供最佳体验。请阅读我们的 Cookie政策。"
   }
 }
index 8f290a1..ef32d41 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "我們使用cookies來為您提供最佳體驗。請閱讀我們的<a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> Cookie政策</a>。"
+    "COOKIE_LAW": "我們使用cookies來為您提供最佳體驗。請閱讀我們的 Cookie政策。"
   }
 }
index 279248e..d3bb31a 100644 (file)
@@ -66,7 +66,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.8170ac13.js"></script>
+  <script src="scripts/app.788d460c.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 53%
rename from public/scripts/app.8170ac13.js
rename to public/scripts/app.788d460c.js
index 52b7b9b..f6f3aee 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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,messengerSoundNotification",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,messengerSoundNotification",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,messengerSoundNotification",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,messengerSoundNotification",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,messengerSoundNotification",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"fullname",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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)})})},setMessengerSoundNotification:function(e){u().messengerSoundNotification=e}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&"ACW"!==E.currentUser.pauseType&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,i,a,s,o){var r=this;function l(e,n){var t=n?"Transfer Success":"Transfer Failed",a="top right";return console.debug("onTransferCallback -> session, textContent, position, delay",e,t,a,3e3),function(){i.show(i.simple().textContent(t).position(a).hideDelay(3e3))}}function d(e){n.hide(e)}r.title="Refer Attended",r.sessions=a,r.session=s,r.isJabraEnabled=o,r.sessionTarget=null,a.length&&(r.target=a[0].user),r.closeDialog=d,r.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===r.target)return e});n=t.outgoing?(e=t,r.session):(e=r.session,t);console.debug("session.refer() -> source, target, replaces, callback",n,e.user,e,"onTransferCallback"),n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:l(s,!0),requestFailed:l(s,!1)}}),function(e,n){e.terminate(),jabra&&n&&jabra.onHook();d()}(s,o)}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t,a,i){var o=this;function r(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}o.currentUser=a.getCurrentUser(),o.messengerSoundNotification=o.currentUser.messengerSoundNotification,_.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=r(n,"audiooutput","ringingId"),s.speakerId=r(n,"audiooutput","speakerId"),s.microphoneId=r(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,o.conf=angular.copy(s),o.devices=n,o.activeSessions=t,o.saveSettings=function(){i.user.messengerSoundNotification({id:o.currentUser.id,enabled:o.messengerSoundNotification}).$promise.then(function(){a.setMessengerSoundNotification(o.messengerSoundNotification),e.hide(o.conf)})},o.closeDialog=function(){e.hide()},o.isCompatibleBrowser=function(){return"chrome"===o.conf.browserName.toLowerCase()||"opera"===o.conf.browserName.toLowerCase()||"safari"===o.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions","Auth","api"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0,i.search()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=s,i.onDateRangeSelection=o,i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}})}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l(!0)},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l(!0);break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(h,f){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function t(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 a(e){return!!_.isNil(e)||_.includes(n,e)}function b(e){var n;return t(e,!1)?"pause":t(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],a))?"busy":"idle"}function A(){return moment().set("year","0000").format()}return{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"},paginateAgents:function(e,n,t){var a={count:0,rows:[]},i=e.filter(function(e){return e.online});if(i.forEach(function(e){var n,t,a;e.globalStatus=b(e),n=e,f.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")}),e.globalStatusDisplayValue=(a=(t=e).globalStatus,"pause"===t.globalStatus?a=t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"):"*pause"===t.globalStatus&&(a="*"+(t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"))),a)}),0<t.globalQueueFilter.length){var s=n.filter(function(e){return t.globalQueueFilter.includes(e.id)}),o=_.uniq(s.flatMap(function(e){return _.map(e.Agents,"id")}));i=i.filter(function(e){return o.includes(e.id)})}if(t.globalStatusFilter&&(i=i.filter(function(e){var n=e.globalStatus===t.globalStatusFilter;return"pause"===e.globalStatus&&t.pauseTypeFilter&&(n=e.pauseType===t.pauseTypeFilter),n})),t.filter){var r=t.filter.toLowerCase();i=i.filter(function(e){return(e.fullname+" "+e.internal).toLowerCase().includes(r)})}var l,d,c,m,u="-"===t.sort[0]?"DESC":"ASC",p="DESC"===u?t.sort.substring(1):t.sort;l=i,c=u,i="globalStatus"===(d=p)?(m=c,l.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===m?(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"===m?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===m?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})):l.sort(function(e,n){var t=e[d],a=n[d];return"fullname"===d?(t=e[d].toLowerCase(),a=n[d].toLowerCase()):"lastPauseAt"===d&&(t=e.globalStatus.includes("pause")?e[d]:A(),a=n.globalStatus.includes("pause")?n[d]:A()),"DESC"===c?t<a?1:-1:t<a?-1:1}),a.count=i.length;var g=t.offset||0,v=g+t.limit;return a.rows=i.slice(g,v),a},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)}}}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"},messengerSoundNotification:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/messengerSoundNotification"},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,startTime:new Date(moment().startOf("day")),startDate:new Date(moment().startOf("day")),endTime:new Date(moment().endOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.export.name=l.export.name.replace(/\//g,"_"),l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).set("hour",l.export.startTime.getHours()).set("minute",l.export.startTime.getMinutes()).set("second",l.export.startTime.getSeconds()).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).set("hour",l.export.endTime.getHours()).set("minute",l.export.endTime.getMinutes()).set("second",l.export.endTime.getSeconds()).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"bn",option:"Bengali"},{value:"bs",option:"Bosnian"},{value:"bg",option:"Bulgarian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gu",option:"Gujarati"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"ko",option:"Korean"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"mk",option:"Macedonian"},{value:"ml",option:"Malayalam"},{value:"mr",option:"Marathi"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt",option:"Portuguese"},{value:"ro",option:"Romanian"},{value:"ru",option:"Russian"},{value:"sr",option:"Serbian"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"ta",option:"Tamil"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=f,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=h(e);return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=S,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=A,g.getFinals=E,g.getHistories=y,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),A(),E(),y()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?f():void 0}).finally(function(){g.contact&&g.contact.id&&(T(),g.contact.dateOfBirth=S(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=T,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(T(n))})};var v=n.getLogger("agent.general.contact");function h(e){return e.firstName||e.lastName?(e.firstName+" "+e.lastName).trim():e.phone}function f(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=h(e);return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function b(n){return function(e){g[n]=e||{count:0,rows:[]}}}function A(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,b("hoppers")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,b("finals")).$promise)}function y(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,b("histories")).$promise)}function S(e){return null===e?void 0:new Date(e)}function T(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(A(),E(),y())});var I=!0,O=1;m.$watch("queryHopper.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=O),A())}),m.$watch("queryFinal.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=O),E())}),m.$watch("queryHistory.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=O),y())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,d.myQueues.count=e.rows.length,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=16,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):_.findLast(h.interaction.Messages,["secret",!1]),E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[],a=_.some(h.messages.rows,["read",!0]);if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length&&!a;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&h.interaction.UserId!==h.user.id&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}},a=e(t),i=a.replace(/(?:\r\n|\r|\n)/g,"<br />");g.ckEditorInstance.insertHtml(i)}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&(g.message.body||o.from))if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,waitfortheassignedQueue: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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.faxAccounts.rows.forEach(function(n){var e=_.find(c.rpcFaxAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",i.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.faxAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.faxAccounts.rows=e.rows,u()}c.currentUser=n.getCurrentUser(),c.faxAccounts=r,c.rpcFaxAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getFaxAccounts=function(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.faxAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="FaxAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)},c.goToFaxAccount=function(e,n){a.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},s.on("faxAccount:save",p),s.on("faxAccount:update",p),s.on("faxMessage:save",function(e){var n=_.find(c.faxAccounts.rows,["id",e.FaxAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var v=!0,h=1;e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=h),c.getFaxAccounts())}),e.$on("$destroy",function(){s.removeAllListeners("faxAccount:save"),s.removeAllListeners("faxAccount:update"),s.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","faxAccounts","rpcFaxAccounts","userProfileSection"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,waitForTheAssignedQueue: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,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.mailAccounts.rows.forEach(function(n){var e=_.find(c.rpcMailAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",i.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.mailAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.mailAccounts.rows=e.rows,u()}function v(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.mailAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="MailAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)}c.currentUser=n.getCurrentUser(),c.mailAccounts=r,c.rpcMailAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getMailAccounts=v,c.goToMailAccount=function(e,n){a.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},c.verifySmtp=function(e,n){{if(n&&n.id)return i.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){o.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){o.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});o.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},s.on("mailAccount:save",p),s.on("mailAccount:update",p),s.on("mailMessage:save",function(e){var n=_.find(c.mailAccounts.rows,["id",e.MailAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),v())}),e.$on("$destroy",function(){s.removeAllListeners("mailAccount:save"),s.removeAllListeners("mailAccount:update"),s.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","mailAccounts","rpcMailAccounts","userProfileSection"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){u.campaigns.rows.forEach(function(e){u.rpcCampaigns[e.id]&&_.merge(e,_.pick(u.rpcCampaigns[e.id],p))})}u.currentUser=m.getCurrentUser(),u.campaigns=o||{rows:[],count:0},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"name",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){var n=_.find(u.campaigns.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:u.campaigns.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.campaigns=e||{count:0,rows:[]},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"name",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.queues=e||{count:0,rows:[]},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,waitForTheAssignedQueue: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,waitForTheAssignedQueue,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(t,a,e,n,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=i.params.direction||"inbound",b=g&&1==g.count?g.rows[0].crudPermissions:null;function A(n){return h.query.offset=(h.query.page-1)*h.query.limit,e.resolve().then(function(){if(!0===n){var e=Object.assign({},_.omit(h.query,["limit","offset","page"]),{nolimit:!0});return o.realtime.getAgents(e).$promise}}).then(function(e){e&&(h.amiAgents=e)}).then(function(){var e=h.queues?h.queues.rows:[];h.agents=l.paginateAgents(h.amiAgents.rows,e,h.query)}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function E(e){return _.find(h.amiAgents.rows,["id",e])}function y(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function S(){A(!0)}function T(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function I(){A(!0)}function O(e){var n=E(e.id);n?(Object.assign(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),A()):r.isAdmin()&&A(!0)}function C(e){if("ATTENDED"!==e.transfer){var n=E(e.id);n?(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,A()):r.isAdmin()&&A(!0)}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(n))_.find(h.queues.rows,function(e){return e.id===n}).Agents.push({id:e.UserId}),A()}}function R(n){if(0!==h.query.globalQueueFilter.length){var t=n[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(t)){var e=_.find(h.queues.rows,function(e){return e.id===t});_.remove(e.Agents,function(e){return e.id===n.UserId}),A()}}}function x(){h.queues&&D(!0)}function N(){h.queues&&D(!0)}function D(e){if(!(h.queues&&0<h.queues.count)||e){var n={type:f,fields:"id,name",sort:"name",nolimit:!0,include:[{model:"User",alias:"Agents",fields:["id","name"],raw:!0}]},t=h.channel+"Queue";return o.getResourcesByRole(h.currentUser,t,n,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}}h.currentUser=r.getCurrentUser(),h.channel=i.params.channel,h.amiAgents=m,h.pauses=p,h.license=u,h.crudPermissions=r.parseCrudPermissions(b),h.utcOffset=v,h.query={channel:h.channel,globalQueueFilter:[],globalStatusFilter:null,pauseTypeFilter:null,limit:10,page:1,sort:"fullname"},h.$onInit=function(){d.on("user:remove",I),d.on("user:save",S),d.on("user:update",T),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("user:ami:update",y),d.on("user:routing:update",y),d.on("user"+_.capitalize(h.channel)+"Queue:save",w),d.on("user"+_.capitalize(h.channel)+"Queue:remove",R),d.on(h.channel+"Queue:save",x),d.on(h.channel+"Queue:remove",N),A()},h.getAgents=A,h.onPaginate=function(){A()},h.onSort=function(){A()},h.logout=function(e){return o.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.pause=function(e,n){return o.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.unpause=function(e){return o.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:f,crudPermissions:h.crudPermissions}})},h.manageScreenRecording=function(e,n){return o.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.getQueuesByChannel=D,h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},n.$on("$destroy",function(){d.removeAllListeners("user:remove"),d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("user:ami:update"),d.removeAllListeners("user:routing:update"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:save"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:remove")})}e.$inject=["$document","$mdDialog","$q","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","agents","license","pauses","userProfileSection","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,waitForTheAssignedQueue: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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],r.customDashboard.crudPermissions=r.crudPermissions,l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-createdAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(){})},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(){})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===g.query.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(){}).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(){}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.OUTGOING_CALL_STATUS_STYLES,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"name",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.queues=e||{count:0,rows:[]},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.telephones=a?a.rows:{},m.rpcTelephones=i?i.rows:{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"fullname",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?e.rows:{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","realtimeManager","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,waitForTheAssignedQueue: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,waitForTheAssignedQueue,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.beepPlayer=null,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){m.beepPlayer=document.getElementById("beep-player"),e.ToId===m.currentUser.id&&e.ToId!==e.FromId&&m.currentUser.messengerSoundNotification&&m.beepPlayer.play().catch(function(e){console.log(e.message)});if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function Q(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):M(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){U()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i=""!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","dialTimezone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors">\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding">\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n              <md-switch ng-model="vm.messengerSoundNotification" aria-label="EnableMessengerSoundNotification">\n                <span translate="TOOLBAR.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</span>\n              </md-switch>              \n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar(true)" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results">\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" >\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin" ng-change="ngChange()">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-2" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 2)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview && !vm.config.crudPermissions.readOnly" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item ng-if="vm.config.crudPermissions.canEdit === true">\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.config.crudPermissions.canDelete === true">\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex style="height: 60px !important; min-height: 60px !important" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, $index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startTime">\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.endTime">\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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.chatWebsite.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\',false)" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\',false)">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\',false)">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="agent-general-home-navbar md-primary-bg width-50">\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts" class="home-contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts" class="home-mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled" class="home-scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice" class="home-voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned" class="home-abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings" class="home-recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat" class="home-chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail" class="home-mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms" class="home-sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel" class="home-openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax" class="home-fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp" class="home-whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" class="home-plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default class="home-default">\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-120 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                  {{ \'VOICE.\' + (agent.status | uppercase) | translate | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\' && agent.status !== \'unavailable\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\' && agent.status !== \'unavailable\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.faxAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts.count > 0">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="account" md-select-id="id" ng-repeat="account in vm.faxAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, account)" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n        <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="true">\n          <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.URI">Uri</label>\n          <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n          <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n          <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n          <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n          <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n          <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n          <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                  <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="vm.dynamics365Account.modernAuthentication == false">\n                  <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                    </div>\n                    <div ng-message="pattern">\n                      <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.URI">Uri</label>\n                  <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                  <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                  <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                  <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                  <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                  <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.mailAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts.count > 0">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="account" md-select-id="id" ng-repeat="account in vm.mailAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="account.Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + account.Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="account.active && (account.Imap.lastSync && account.Imap.lastSync != \'\')">{{account.Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="account.Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ account.Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + account.Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{account.Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!account.Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, account)" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, account)" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column md-order-by="name" class="bl">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns.rows.length > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="campaign in vm.campaigns.rows">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.campaigns.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="queue in vm.queues.rows">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.openchannelAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n\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.onSort">\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.onPaginate\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/queue-calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th ng-if="vm.voiceQueueType === \'inbound\'" md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.voiceQueuesChannels.count > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                      <td md-cell>Dropped Calls Timeout</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                    </tr>\n                    <tr md-row>\n                      <td md-cell>Dropped Calls Caller Exit</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                      </td>\n                    </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<md-menu>\n  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n  </md-button>\n  <md-menu-content width="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.EDIT_QUEUE\' }}">\n        Edit Queue\n      </md-button>\n    </md-menu-item>\n    <md-menu-item ng-if="queue.dialMethod === \'predictive\'">\n      <md-button ng-click="vm.showPredictiveInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n        Show Predictive Info\n      </md-button>\n    </md-menu-item>\n    <md-menu-item>\n      <md-button ng-click="vm.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'VOICE.NAME' | translate }}</th>\n  <th md-column>{{ 'VOICE.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'VOICE.PAUSED' | translate }}</th>\n  <th md-column>{{ 'VOICE.TALKING' | translate }}</th>\n  <th md-column>{{ 'VOICE.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'MOTIONDIALER.NAME' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.PAUSED' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TALKING' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.ORIGINATED_TEXT' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.MESSAGE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.METHOD' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TRUNK' | translate }}</th>\n  <th md-column md-order-by=\"dialActive\">{{ 'MOTIONDIALER.ACTIVE' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\n    <div layout="row" layout-align="center center">\n      <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-align="center center">\n      <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\n    <div layout="row" layout-align="center center">\n      <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking + queue.pTalking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking - queue.pTalking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\' + queue.message | translate) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | translate) : \'--\')}}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n  </td>\n  <td md-cell>\n'+"    <md-icon md-colors=\"{color: {{queue.dialActive ? '\\'green\\'' : '\\'red\\''}}}\" md-font-icon=\"{{queue.dialActive ? 'icon-check' : 'icon-close'}}\"></md-icon>\n  </td>\n\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.QUEUES\' }}">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{ \'DASHBOARDS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'DASHBOARDS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'DASHBOARDS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="1200"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.smsAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue 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.messengerSoundNotification" aria-label="EnableMessengerSoundNotification" \n                ng-if="vm.agent.allowmessenger">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</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          <div class="user-detail-form-container internal-chat md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.INTERNAL_MESSENGER">INTERNAL_MESSENGER</div>\n            </div>\n            <form name="internalChatForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.messengerSoundNotification" \n                aria-label="messengerSoundNotification" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MESSENGERSOUNDNOTIFICATION</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MESSENGERSOUNDNOTIFICATION"></span></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.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType">\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="queue in vm.queues.rows">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.whatsappAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\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  <audio id="beep-player" hidden src="/assets/ms-phonebar/sounds/beep.ogg"></audio>\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id !== vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter: vm_ct.search" ng-click="vm_ct.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper">\n          </md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" layout="row" layout-align="center center">\n      <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n    </div>\n    <div ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n        <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{ vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" flex>\n          <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n          <div layout="row" layout-align="end center">\n            <span class="time secondary-text">{{ message.createdAt | formatdate }}</span>\n            <md-icon ng-if="message.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" registered="vm.isWebRTCBarRegistered" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && (vm.license.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count badge-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n    \n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,messengerSoundNotification",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,messengerSoundNotification",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,messengerSoundNotification",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,messengerSoundNotification",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,messengerSoundNotification",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"fullname",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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)})})},setMessengerSoundNotification:function(e){u().messengerSoundNotification=e}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,i,a,s,o){var r=this;function l(e,n){var t=n?"Transfer Success":"Transfer Failed",a="top right";return console.debug("onTransferCallback -> session, textContent, position, delay",e,t,a,3e3),function(){i.show(i.simple().textContent(t).position(a).hideDelay(3e3))}}function d(e){n.hide(e)}r.title="Refer Attended",r.sessions=a,r.session=s,r.isJabraEnabled=o,r.sessionTarget=null,a.length&&(r.target=a[0].user),r.closeDialog=d,r.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===r.target)return e});n=t.outgoing?(e=t,r.session):(e=r.session,t);console.debug("session.refer() -> source, target, replaces, callback",n,e.user,e,"onTransferCallback"),n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:l(s,!0),requestFailed:l(s,!1)}}),function(e,n){e.terminate(),jabra&&n&&jabra.onHook();d()}(s,o)}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t,a,i){var o=this;function r(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}o.currentUser=a.getCurrentUser(),o.messengerSoundNotification=o.currentUser.messengerSoundNotification,_.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=r(n,"audiooutput","ringingId"),s.speakerId=r(n,"audiooutput","speakerId"),s.microphoneId=r(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,o.conf=angular.copy(s),o.devices=n,o.activeSessions=t,o.saveSettings=function(){i.user.messengerSoundNotification({id:o.currentUser.id,enabled:o.messengerSoundNotification}).$promise.then(function(){a.setMessengerSoundNotification(o.messengerSoundNotification),e.hide(o.conf)})},o.closeDialog=function(){e.hide()},o.isCompatibleBrowser=function(){return"chrome"===o.conf.browserName.toLowerCase()||"opera"===o.conf.browserName.toLowerCase()||"safari"===o.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions","Auth","api"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0,i.search()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=s,i.onDateRangeSelection=o,i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}})}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l(!0)},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l(!0);break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(h,f){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function t(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 a(e){return!!_.isNil(e)||_.includes(n,e)}function b(e){var n;return t(e,!1)?"pause":t(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],a))?"busy":"idle"}function A(){return moment().set("year","0000").format()}return{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"},paginateAgents:function(e,n,t){var a={count:0,rows:[]},i=e.filter(function(e){return e.online});if(i.forEach(function(e){var n,t,a;e.globalStatus=b(e),n=e,f.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")}),e.globalStatusDisplayValue=(a=(t=e).globalStatus,"pause"===t.globalStatus?a=t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"):"*pause"===t.globalStatus&&(a="*"+(t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"))),a)}),0<t.globalQueueFilter.length){var s=n.filter(function(e){return t.globalQueueFilter.includes(e.id)}),o=_.uniq(s.flatMap(function(e){return _.map(e.Agents,"id")}));i=i.filter(function(e){return o.includes(e.id)})}if(t.globalStatusFilter&&(i=i.filter(function(e){var n=e.globalStatus===t.globalStatusFilter;return"pause"===e.globalStatus&&t.pauseTypeFilter&&(n=e.pauseType===t.pauseTypeFilter),n})),t.filter){var r=t.filter.toLowerCase();i=i.filter(function(e){return(e.fullname+" "+e.internal).toLowerCase().includes(r)})}var l,d,c,m,u="-"===t.sort[0]?"DESC":"ASC",p="DESC"===u?t.sort.substring(1):t.sort;l=i,c=u,i="globalStatus"===(d=p)?(m=c,l.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===m?(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"===m?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===m?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})):l.sort(function(e,n){var t=e[d],a=n[d];return"fullname"===d?(t=e[d].toLowerCase(),a=n[d].toLowerCase()):"lastPauseAt"===d&&(t=e.globalStatus.includes("pause")?e[d]:A(),a=n.globalStatus.includes("pause")?n[d]:A()),"DESC"===c?t<a?1:-1:t<a?-1:1}),a.count=i.length;var g=t.offset||0,v=g+t.limit;return a.rows=i.slice(g,v),a},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)}}}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"},messengerSoundNotification:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/messengerSoundNotification"},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,startTime:new Date(moment().startOf("day")),startDate:new Date(moment().startOf("day")),endTime:new Date(moment().endOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.export.name=l.export.name.replace(/\//g,"_"),l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).set("hour",l.export.startTime.getHours()).set("minute",l.export.startTime.getMinutes()).set("second",l.export.startTime.getSeconds()).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).set("hour",l.export.endTime.getHours()).set("minute",l.export.endTime.getMinutes()).set("second",l.export.endTime.getSeconds()).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"bn",option:"Bengali"},{value:"bs",option:"Bosnian"},{value:"bg",option:"Bulgarian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gu",option:"Gujarati"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"ko",option:"Korean"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"mk",option:"Macedonian"},{value:"ml",option:"Malayalam"},{value:"mr",option:"Marathi"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt",option:"Portuguese"},{value:"ro",option:"Romanian"},{value:"ru",option:"Russian"},{value:"sr",option:"Serbian"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"ta",option:"Tamil"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=f,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=h(e);return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=S,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=A,g.getFinals=E,g.getHistories=y,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),A(),E(),y()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?f():void 0}).finally(function(){g.contact&&g.contact.id&&(T(),g.contact.dateOfBirth=S(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=T,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(T(n))})};var v=n.getLogger("agent.general.contact");function h(e){return e.firstName||e.lastName?(e.firstName+" "+e.lastName).trim():e.phone}function f(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=h(e);return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function b(n){return function(e){g[n]=e||{count:0,rows:[]}}}function A(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,b("hoppers")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,b("finals")).$promise)}function y(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,b("histories")).$promise)}function S(e){return null===e?void 0:new Date(e)}function T(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(A(),E(),y())});var I=!0,O=1;m.$watch("queryHopper.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=O),A())}),m.$watch("queryFinal.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=O),E())}),m.$watch("queryHistory.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=O),y())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,d.myQueues.count=e.rows.length,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=16,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):_.findLast(h.interaction.Messages,["secret",!1]),E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[],a=_.some(h.messages.rows,["read",!0]);if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length&&!a;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&h.interaction.UserId!==h.user.id&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}},a=e(t),i=a.replace(/(?:\r\n|\r|\n)/g,"<br />");g.ckEditorInstance.insertHtml(i)}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&(g.message.body||o.from))if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,waitfortheassignedQueue: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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.faxAccounts.rows.forEach(function(n){var e=_.find(c.rpcFaxAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",i.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.faxAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.faxAccounts.rows=e.rows,u()}c.currentUser=n.getCurrentUser(),c.faxAccounts=r,c.rpcFaxAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getFaxAccounts=function(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.faxAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="FaxAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)},c.goToFaxAccount=function(e,n){a.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},s.on("faxAccount:save",p),s.on("faxAccount:update",p),s.on("faxMessage:save",function(e){var n=_.find(c.faxAccounts.rows,["id",e.FaxAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var v=!0,h=1;e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=h),c.getFaxAccounts())}),e.$on("$destroy",function(){s.removeAllListeners("faxAccount:save"),s.removeAllListeners("faxAccount:update"),s.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","faxAccounts","rpcFaxAccounts","userProfileSection"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,waitForTheAssignedQueue: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,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.mailAccounts.rows.forEach(function(n){var e=_.find(c.rpcMailAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",i.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.mailAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.mailAccounts.rows=e.rows,u()}function v(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.mailAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="MailAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)}c.currentUser=n.getCurrentUser(),c.mailAccounts=r,c.rpcMailAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getMailAccounts=v,c.goToMailAccount=function(e,n){a.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},c.verifySmtp=function(e,n){{if(n&&n.id)return i.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){o.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){o.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});o.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},s.on("mailAccount:save",p),s.on("mailAccount:update",p),s.on("mailMessage:save",function(e){var n=_.find(c.mailAccounts.rows,["id",e.MailAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),v())}),e.$on("$destroy",function(){s.removeAllListeners("mailAccount:save"),s.removeAllListeners("mailAccount:update"),s.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","mailAccounts","rpcMailAccounts","userProfileSection"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){u.campaigns.rows.forEach(function(e){u.rpcCampaigns[e.id]&&_.merge(e,_.pick(u.rpcCampaigns[e.id],p))})}u.currentUser=m.getCurrentUser(),u.campaigns=o||{rows:[],count:0},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"name",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){var n=_.find(u.campaigns.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:u.campaigns.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.campaigns=e||{count:0,rows:[]},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"name",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.queues=e||{count:0,rows:[]},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,waitForTheAssignedQueue: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,waitForTheAssignedQueue,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(t,a,e,n,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=i.params.direction||"inbound",b=g&&1==g.count?g.rows[0].crudPermissions:null;function A(n){return h.query.offset=(h.query.page-1)*h.query.limit,e.resolve().then(function(){if(!0===n){var e=Object.assign({},_.omit(h.query,["limit","offset","page"]),{nolimit:!0});return o.realtime.getAgents(e).$promise}}).then(function(e){e&&(h.amiAgents=e)}).then(function(){var e=h.queues?h.queues.rows:[];h.agents=l.paginateAgents(h.amiAgents.rows,e,h.query)}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function E(e){return _.find(h.amiAgents.rows,["id",e])}function y(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function S(){A(!0)}function T(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function I(){A(!0)}function O(e){var n=E(e.id);n?(Object.assign(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),A()):r.isAdmin()&&A(!0)}function C(e){if("ATTENDED"!==e.transfer){var n=E(e.id);n?(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,A()):r.isAdmin()&&A(!0)}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(n))_.find(h.queues.rows,function(e){return e.id===n}).Agents.push({id:e.UserId}),A()}}function R(n){if(0!==h.query.globalQueueFilter.length){var t=n[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(t)){var e=_.find(h.queues.rows,function(e){return e.id===t});_.remove(e.Agents,function(e){return e.id===n.UserId}),A()}}}function x(){h.queues&&D(!0)}function N(){h.queues&&D(!0)}function D(e){if(!(h.queues&&0<h.queues.count)||e){var n={type:f,fields:"id,name",sort:"name",nolimit:!0,include:[{model:"User",alias:"Agents",fields:["id","name"],raw:!0}]},t=h.channel+"Queue";return o.getResourcesByRole(h.currentUser,t,n,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}}h.currentUser=r.getCurrentUser(),h.channel=i.params.channel,h.amiAgents=m,h.pauses=p,h.license=u,h.crudPermissions=r.parseCrudPermissions(b),h.utcOffset=v,h.query={channel:h.channel,globalQueueFilter:[],globalStatusFilter:null,pauseTypeFilter:null,limit:10,page:1,sort:"fullname"},h.$onInit=function(){d.on("user:remove",I),d.on("user:save",S),d.on("user:update",T),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("user:ami:update",y),d.on("user:routing:update",y),d.on("user"+_.capitalize(h.channel)+"Queue:save",w),d.on("user"+_.capitalize(h.channel)+"Queue:remove",R),d.on(h.channel+"Queue:save",x),d.on(h.channel+"Queue:remove",N),A()},h.getAgents=A,h.onPaginate=function(){A()},h.onSort=function(){A()},h.logout=function(e){return o.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.pause=function(e,n){return o.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.unpause=function(e){return o.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:f,crudPermissions:h.crudPermissions}})},h.manageScreenRecording=function(e,n){return o.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.getQueuesByChannel=D,h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},n.$on("$destroy",function(){d.removeAllListeners("user:remove"),d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("user:ami:update"),d.removeAllListeners("user:routing:update"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:save"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:remove")})}e.$inject=["$document","$mdDialog","$q","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","agents","license","pauses","userProfileSection","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,waitForTheAssignedQueue: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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],r.customDashboard.crudPermissions=r.crudPermissions,l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-createdAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(){})},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(){})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===g.query.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(){}).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(){}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.OUTGOING_CALL_STATUS_STYLES,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"name",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.queues=e||{count:0,rows:[]},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.telephones=a?a.rows:{},m.rpcTelephones=i?i.rows:{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"fullname",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?e.rows:{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","realtimeManager","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,waitForTheAssignedQueue: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,waitForTheAssignedQueue,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.beepPlayer=null,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){m.beepPlayer=document.getElementById("beep-player"),e.ToId===m.currentUser.id&&e.ToId!==e.FromId&&m.currentUser.messengerSoundNotification&&m.beepPlayer.play().catch(function(e){console.log(e.message)});if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function Q(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):M(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){U()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i=""!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","dialTimezone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896251872/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-switch ng-model="vm.messengerSoundNotification" aria-label="EnableMessengerSoundNotification">\n                <span translate="TOOLBAR.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</span>\n              </md-switch>              \n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar(true)" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results">\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" >\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin" ng-change="ngChange()">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-2" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 2)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview && !vm.config.crudPermissions.readOnly" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item ng-if="vm.config.crudPermissions.canEdit === true">\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.config.crudPermissions.canDelete === true">\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex style="height: 60px !important; min-height: 60px !important" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span flex class="text-center grey-600-fg">\n        <a translate="FOOTER.COOKIE_LAW"target="_blank" href="https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896253188/Cookie+Policy" flex class="text-center grey-600-fg">We use cookies to give you the best experience. Read our cookie policy.</a>\n      </span>\n      </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, $index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startTime">\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.endTime">\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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.chatWebsite.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\',false)" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\',false)">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\',false)">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="agent-general-home-navbar md-primary-bg width-50">\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts" class="home-contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts" class="home-mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled" class="home-scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice" class="home-voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned" class="home-abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings" class="home-recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat" class="home-chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail" class="home-mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms" class="home-sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel" class="home-openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax" class="home-fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp" class="home-whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" class="home-plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default class="home-default">\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-120 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                  {{ \'VOICE.\' + (agent.status | uppercase) | translate | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\' && agent.status !== \'unavailable\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\' && agent.status !== \'unavailable\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.faxAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts.count > 0">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="account" md-select-id="id" ng-repeat="account in vm.faxAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, account)" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n        <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://xcally.atlassian.net/wiki/spaces/XMV/overview" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://xcally.atlassian.net/wiki/spaces/XMV/overview" 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://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI#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\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.mailAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts.count > 0">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="account" md-select-id="id" ng-repeat="account in vm.mailAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="account.Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + account.Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="account.active && (account.Imap.lastSync && account.Imap.lastSync != \'\')">{{account.Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="account.Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ account.Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + account.Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{account.Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!account.Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, account)" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, account)" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column md-order-by="name" class="bl">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns.rows.length > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="campaign in vm.campaigns.rows">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.campaigns.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="queue in vm.queues.rows">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.openchannelAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n\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.onSort">\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.onPaginate\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/queue-calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th ng-if="vm.voiceQueueType === \'inbound\'" md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.voiceQueuesChannels.count > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                      <td md-cell>Dropped Calls Timeout</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                    </tr>\n                    <tr md-row>\n                      <td md-cell>Dropped Calls Caller Exit</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                      </td>\n                    </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<md-menu>\n  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n  </md-button>\n  <md-menu-content width="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.EDIT_QUEUE\' }}">\n        Edit Queue\n      </md-button>\n    </md-menu-item>\n    <md-menu-item ng-if="queue.dialMethod === \'predictive\'">\n      <md-button ng-click="vm.showPredictiveInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n        Show Predictive Info\n      </md-button>\n    </md-menu-item>\n    <md-menu-item>\n      <md-button ng-click="vm.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'VOICE.NAME' | translate }}</th>\n  <th md-column>{{ 'VOICE.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'VOICE.PAUSED' | translate }}</th>\n  <th md-column>{{ 'VOICE.TALKING' | translate }}</th>\n  <th md-column>{{ 'VOICE.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'MOTIONDIALER.NAME' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.PAUSED' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TALKING' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.ORIGINATED_TEXT' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.MESSAGE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.METHOD' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TRUNK' | translate }}</th>\n  <th md-column md-order-by=\"dialActive\">{{ 'MOTIONDIALER.ACTIVE' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\n    <div layout="row" layout-align="center center">\n      <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-align="center center">\n      <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\n    <div layout="row" layout-align="center center">\n      <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking + queue.pTalking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking - queue.pTalking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\' + queue.message | translate) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | translate) : \'--\')}}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n  </td>\n  <td md-cell>\n'+"    <md-icon md-colors=\"{color: {{queue.dialActive ? '\\'green\\'' : '\\'red\\''}}}\" md-font-icon=\"{{queue.dialActive ? 'icon-check' : 'icon-close'}}\"></md-icon>\n  </td>\n\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.QUEUES\' }}">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{ \'DASHBOARDS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'DASHBOARDS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'DASHBOARDS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="1200"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI#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://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI#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="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.smsAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue 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.messengerSoundNotification" aria-label="EnableMessengerSoundNotification" \n                ng-if="vm.agent.allowmessenger">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</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          <div class="user-detail-form-container internal-chat md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.INTERNAL_MESSENGER">INTERNAL_MESSENGER</div>\n            </div>\n            <form name="internalChatForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.messengerSoundNotification" \n                aria-label="messengerSoundNotification" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MESSENGERSOUNDNOTIFICATION</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MESSENGERSOUNDNOTIFICATION"></span></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.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType">\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="queue in vm.queues.rows">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.whatsappAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\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  <audio id="beep-player" hidden src="/assets/ms-phonebar/sounds/beep.ogg"></audio>\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id !== vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter: vm_ct.search" ng-click="vm_ct.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper">\n          </md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" layout="row" layout-align="center center">\n      <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n    </div>\n    <div ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n        <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{ vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" flex>\n          <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n          <div layout="row" layout-align="end center">\n            <span class="time secondary-text">{{ message.createdAt | formatdate }}</span>\n            <md-icon ng-if="message.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" registered="vm.isWebRTCBarRegistered" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && (vm.license.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count badge-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n    \n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
index 8be8e35..8f11c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1856=['browser','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','action','STRING','contactManager','integration','motionbar','jscripty','urlForward'];(function(_0x1f39b8,_0x38e661){var _0x774782=function(_0x41bef4){while(--_0x41bef4){_0x1f39b8['push'](_0x1f39b8['shift']());}};_0x774782(++_0x38e661);}(_0x1856,0x121));var _0x6185=function(_0x60179,_0x30cb78){_0x60179=_0x60179-0x0;var _0x1ef0f1=_0x1856[_0x60179];return _0x1ef0f1;};'use strict';var Sequelize=require(_0x6185('0x0'));module[_0x6185('0x1')]={'name':{'type':Sequelize[_0x6185('0x2')],'get':function(_0x5aadcc){return this[_0x6185('0x3')](_0x6185('0x4'));}},'action':{'type':Sequelize[_0x6185('0x5')],'allowNull':![],'validate':{'isIn':{'args':[[_0x6185('0x6'),_0x6185('0x7'),_0x6185('0x8'),_0x6185('0x9'),_0x6185('0xa'),_0x6185('0xb'),'bot',_0x6185('0xc')]],'msg':_0x6185('0xd')}},'comment':_0x6185('0xd')},'data1':{'type':Sequelize[_0x6185('0x5')](0x1000),'comment':'jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]'},'data2':{'type':Sequelize[_0x6185('0x5')](0x1000),'comment':_0x6185('0xe')},'data3':{'type':Sequelize[_0x6185('0x5')](0x1000),'comment':_0x6185('0xf')},'data4':{'type':Sequelize['STRING'](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0x6185('0x5')](0x1000),'comments':_0x6185('0x10')},'data6':{'type':Sequelize[_0x6185('0x5')],'comments':_0x6185('0x11')},'data7':{'type':Sequelize[_0x6185('0x12')],'comments':_0x6185('0x13')}};
\ No newline at end of file
+var _0xa8bf=['urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','STRING','integration','motionbar','urlForward','browser','bot','script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0xa8bf,0x1c2));var _0xfa8b=function(_0x38782c,_0x5c9fef){_0x38782c=_0x38782c-0x0;var _0x3708bf=_0xa8bf[_0x38782c];return _0x3708bf;};'use strict';var Sequelize=require(_0xfa8b('0x0'));module[_0xfa8b('0x1')]={'name':{'type':Sequelize[_0xfa8b('0x2')],'get':function(_0x333769){return this[_0xfa8b('0x3')]('action');}},'action':{'type':Sequelize[_0xfa8b('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0xfa8b('0x5'),_0xfa8b('0x6'),'jscripty',_0xfa8b('0x7'),_0xfa8b('0x8'),_0xfa8b('0x9'),_0xfa8b('0xa')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0xfa8b('0x4')](0x1000),'comment':_0xfa8b('0xb')},'data2':{'type':Sequelize[_0xfa8b('0x4')](0x1000),'comment':_0xfa8b('0xc')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0xfa8b('0xd')},'data4':{'type':Sequelize[_0xfa8b('0x4')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0xfa8b('0x4')](0x1000),'comments':_0xfa8b('0xe')},'data6':{'type':Sequelize[_0xfa8b('0x4')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize['TEXT'],'comments':_0xfa8b('0xf')}};
\ No newline at end of file
index dfd1a43..7e81017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x299c=['offset','undefined','count','set','Content-Range','reject','save','then','destroy','error','stack','send','update','body','Action','find','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0x299c,0x120));var _0xc299=function(_0x24502d,_0x3a7c6f){_0x24502d=_0x24502d-0x0;var _0xd3f48c=_0x299c[_0x24502d];return _0xd3f48c;};'use strict';var emlformat=require(_0xc299('0x0'));var rimraf=require(_0xc299('0x1'));var zipdir=require(_0xc299('0x2'));var jsonpatch=require(_0xc299('0x3'));var rp=require(_0xc299('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc299('0x5'));var csv=require('to-csv');var ejs=require(_0xc299('0x6'));var fs=require('fs');var fs_extra=require(_0xc299('0x7'));var _=require(_0xc299('0x8'));var squel=require('squel');var crypto=require(_0xc299('0x9'));var jsforce=require(_0xc299('0xa'));var deskjs=require(_0xc299('0xb'));var toCsv=require(_0xc299('0xc'));var querystring=require(_0xc299('0xd'));var Papa=require(_0xc299('0xe'));var Redis=require('ioredis');var authService=require(_0xc299('0xf'));var qs=require(_0xc299('0x10'));var as=require(_0xc299('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc299('0x12'));var utils=require(_0xc299('0x13'));var config=require(_0xc299('0x14'));var licenseUtil=require(_0xc299('0x15'));var db=require(_0xc299('0x16'))['db'];function respondWithStatusCode(_0x4096e4,_0x150eaf){_0x150eaf=_0x150eaf||0xcc;return function(_0x3b0209){if(_0x3b0209){return _0x4096e4[_0xc299('0x17')](_0x150eaf);}return _0x4096e4['status'](_0x150eaf)[_0xc299('0x18')]();};}function respondWithResult(_0x3cf260,_0x5135cc){_0x5135cc=_0x5135cc||0xc8;return function(_0x5ec60b){if(_0x5ec60b){return _0x3cf260[_0xc299('0x19')](_0x5135cc)[_0xc299('0x1a')](_0x5ec60b);}};}function respondWithFilteredResult(_0x20ac81,_0x48320e){return function(_0x10d2b6){if(_0x10d2b6){var _0x56b164=typeof _0x48320e[_0xc299('0x1b')]===_0xc299('0x1c')&&typeof _0x48320e['limit']==='undefined';var _0x128700=_0x10d2b6[_0xc299('0x1d')];var _0x374b59=_0x56b164?0x0:_0x48320e['offset'];var _0x5791b3=_0x56b164?_0x10d2b6[_0xc299('0x1d')]:_0x48320e[_0xc299('0x1b')]+_0x48320e['limit'];var _0x17a39f;if(_0x5791b3>=_0x128700){_0x5791b3=_0x128700;_0x17a39f=0xc8;}else{_0x17a39f=0xce;}_0x20ac81[_0xc299('0x19')](_0x17a39f);return _0x20ac81[_0xc299('0x1e')](_0xc299('0x1f'),_0x374b59+'-'+_0x5791b3+'/'+_0x128700)[_0xc299('0x1a')](_0x10d2b6);}return null;};}function patchUpdates(_0x183a34){return function(_0x3a0ba1){try{jsonpatch['apply'](_0x3a0ba1,_0x183a34,!![]);}catch(_0x887826){return BPromise[_0xc299('0x20')](_0x887826);}return _0x3a0ba1[_0xc299('0x21')]();};}function saveUpdates(_0x48a5f5,_0x478f20){return function(_0x3483a8){if(_0x3483a8){return _0x3483a8['update'](_0x48a5f5)[_0xc299('0x22')](function(_0x18ce39){return _0x18ce39;});}return null;};}function removeEntity(_0x4ac818,_0x3b1a7b){return function(_0x38e533){if(_0x38e533){return _0x38e533[_0xc299('0x23')]()[_0xc299('0x22')](function(){_0x4ac818[_0xc299('0x19')](0xcc)[_0xc299('0x18')]();});}};}function handleEntityNotFound(_0x265b30,_0x28617a){return function(_0x21a22e){if(!_0x21a22e){_0x265b30['sendStatus'](0x194);}return _0x21a22e;};}function handleError(_0x3662e8,_0x3b0ac1){_0x3b0ac1=_0x3b0ac1||0x1f4;return function(_0x3a63ca){logger[_0xc299('0x24')](_0x3a63ca[_0xc299('0x25')]);if(_0x3a63ca['name']){delete _0x3a63ca['name'];}_0x3662e8['status'](_0x3b0ac1)[_0xc299('0x26')](_0x3a63ca);};}exports[_0xc299('0x27')]=function(_0x6b89b5,_0x5352dc){if(_0x6b89b5[_0xc299('0x28')]['id']){delete _0x6b89b5['body']['id'];}return db[_0xc299('0x29')][_0xc299('0x2a')]({'where':{'id':_0x6b89b5[_0xc299('0x2b')]['id']}})[_0xc299('0x22')](handleEntityNotFound(_0x5352dc,null))[_0xc299('0x22')](saveUpdates(_0x6b89b5[_0xc299('0x28')],null))['then'](respondWithResult(_0x5352dc,null))[_0xc299('0x2c')](handleError(_0x5352dc,null));};exports[_0xc299('0x23')]=function(_0x30877a,_0x44392f){return db[_0xc299('0x29')][_0xc299('0x2a')]({'where':{'id':_0x30877a[_0xc299('0x2b')]['id']}})[_0xc299('0x22')](handleEntityNotFound(_0x44392f,null))[_0xc299('0x22')](removeEntity(_0x44392f,null))[_0xc299('0x2c')](handleError(_0x44392f,null));};
\ No newline at end of file
+var _0x1357=['save','destroy','then','error','stack','name','send','update','body','Action','find','params','catch','eml-format','rimraf','zip-dir','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject'];(function(_0x16fcfe,_0x26392e){var _0xa05f71=function(_0x2f31ad){while(--_0x2f31ad){_0x16fcfe['push'](_0x16fcfe['shift']());}};_0xa05f71(++_0x26392e);}(_0x1357,0x71));var _0x7135=function(_0x21c650,_0x4d9492){_0x21c650=_0x21c650-0x0;var _0x19bbc3=_0x1357[_0x21c650];return _0x19bbc3;};'use strict';var emlformat=require(_0x7135('0x0'));var rimraf=require(_0x7135('0x1'));var zipdir=require(_0x7135('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7135('0x3'));var Mustache=require(_0x7135('0x4'));var util=require('util');var path=require(_0x7135('0x5'));var sox=require(_0x7135('0x6'));var csv=require(_0x7135('0x7'));var ejs=require(_0x7135('0x8'));var fs=require('fs');var fs_extra=require(_0x7135('0x9'));var _=require(_0x7135('0xa'));var squel=require(_0x7135('0xb'));var crypto=require('crypto');var jsforce=require(_0x7135('0xc'));var deskjs=require(_0x7135('0xd'));var toCsv=require(_0x7135('0x7'));var querystring=require(_0x7135('0xe'));var Papa=require(_0x7135('0xf'));var Redis=require(_0x7135('0x10'));var authService=require(_0x7135('0x11'));var qs=require(_0x7135('0x12'));var as=require(_0x7135('0x13'));var hardwareService=require(_0x7135('0x14'));var logger=require(_0x7135('0x15'))(_0x7135('0x16'));var utils=require(_0x7135('0x17'));var config=require(_0x7135('0x18'));var licenseUtil=require(_0x7135('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46df26,_0x43213f){_0x43213f=_0x43213f||0xcc;return function(_0x8757b8){if(_0x8757b8){return _0x46df26[_0x7135('0x1a')](_0x43213f);}return _0x46df26['status'](_0x43213f)[_0x7135('0x1b')]();};}function respondWithResult(_0x434b3d,_0x69403f){_0x69403f=_0x69403f||0xc8;return function(_0x13138b){if(_0x13138b){return _0x434b3d[_0x7135('0x1c')](_0x69403f)[_0x7135('0x1d')](_0x13138b);}};}function respondWithFilteredResult(_0x30bf8f,_0x325000){return function(_0x414211){if(_0x414211){var _0x31330b=typeof _0x325000[_0x7135('0x1e')]===_0x7135('0x1f')&&typeof _0x325000[_0x7135('0x20')]===_0x7135('0x1f');var _0x5604ee=_0x414211[_0x7135('0x21')];var _0x1dd0a1=_0x31330b?0x0:_0x325000[_0x7135('0x1e')];var _0xd9007f=_0x31330b?_0x414211[_0x7135('0x21')]:_0x325000[_0x7135('0x1e')]+_0x325000[_0x7135('0x20')];var _0x4fbcae;if(_0xd9007f>=_0x5604ee){_0xd9007f=_0x5604ee;_0x4fbcae=0xc8;}else{_0x4fbcae=0xce;}_0x30bf8f[_0x7135('0x1c')](_0x4fbcae);return _0x30bf8f[_0x7135('0x22')]('Content-Range',_0x1dd0a1+'-'+_0xd9007f+'/'+_0x5604ee)[_0x7135('0x1d')](_0x414211);}return null;};}function patchUpdates(_0x31f172){return function(_0x5000c4){try{jsonpatch[_0x7135('0x23')](_0x5000c4,_0x31f172,!![]);}catch(_0x5cce82){return BPromise[_0x7135('0x24')](_0x5cce82);}return _0x5000c4[_0x7135('0x25')]();};}function saveUpdates(_0x39c560,_0x4bf207){return function(_0x44302b){if(_0x44302b){return _0x44302b['update'](_0x39c560)['then'](function(_0xaf6c72){return _0xaf6c72;});}return null;};}function removeEntity(_0x4b0f60,_0x40f02b){return function(_0xc8d7e0){if(_0xc8d7e0){return _0xc8d7e0[_0x7135('0x26')]()[_0x7135('0x27')](function(){_0x4b0f60[_0x7135('0x1c')](0xcc)[_0x7135('0x1b')]();});}};}function handleEntityNotFound(_0x13cea7,_0xcb7388){return function(_0x619455){if(!_0x619455){_0x13cea7['sendStatus'](0x194);}return _0x619455;};}function handleError(_0x551fd9,_0x16db53){_0x16db53=_0x16db53||0x1f4;return function(_0x26ca3a){logger[_0x7135('0x28')](_0x26ca3a[_0x7135('0x29')]);if(_0x26ca3a['name']){delete _0x26ca3a[_0x7135('0x2a')];}_0x551fd9[_0x7135('0x1c')](_0x16db53)[_0x7135('0x2b')](_0x26ca3a);};}exports[_0x7135('0x2c')]=function(_0x25136b,_0xd8eda3){if(_0x25136b[_0x7135('0x2d')]['id']){delete _0x25136b['body']['id'];}return db[_0x7135('0x2e')][_0x7135('0x2f')]({'where':{'id':_0x25136b['params']['id']}})[_0x7135('0x27')](handleEntityNotFound(_0xd8eda3,null))['then'](saveUpdates(_0x25136b[_0x7135('0x2d')],null))[_0x7135('0x27')](respondWithResult(_0xd8eda3,null))['catch'](handleError(_0xd8eda3,null));};exports['destroy']=function(_0x351580,_0x2c043b){return db[_0x7135('0x2e')][_0x7135('0x2f')]({'where':{'id':_0x351580[_0x7135('0x30')]['id']}})[_0x7135('0x27')](handleEntityNotFound(_0x2c043b,null))['then'](removeEntity(_0x2c043b,null))[_0x7135('0x31')](handleError(_0x2c043b,null));};
\ No newline at end of file
index 375ee62..a3c8497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c68=['rimraf','../../config/environment','exports','define','Action','tools_actions','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3b629c,_0x52a4b7){var _0x9dc71b=function(_0x549101){while(--_0x549101){_0x3b629c['push'](_0x3b629c['shift']());}};_0x9dc71b(++_0x52a4b7);}(_0x0c68,0x165));var _0x80c6=function(_0x45a09a,_0x50c7cd){_0x45a09a=_0x45a09a-0x0;var _0x506ede=_0x0c68[_0x45a09a];return _0x506ede;};'use strict';var _=require(_0x80c6('0x0'));var util=require('util');var logger=require(_0x80c6('0x1'))(_0x80c6('0x2'));var moment=require(_0x80c6('0x3'));var BPromise=require(_0x80c6('0x4'));var rp=require(_0x80c6('0x5'));var fs=require('fs');var path=require(_0x80c6('0x6'));var rimraf=require(_0x80c6('0x7'));var config=require(_0x80c6('0x8'));var attributes=require('./action.attributes');module[_0x80c6('0x9')]=function(_0x2e2914,_0x2156ee){return _0x2e2914[_0x80c6('0xa')](_0x80c6('0xb'),attributes,{'tableName':_0x80c6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdcda=['rimraf','../../config/environment','./action.attributes','exports','define','Action','tools_actions','lodash','api','moment','bluebird','request-promise','path'];(function(_0x134ccd,_0x5879a8){var _0x498e01=function(_0x4f4ed1){while(--_0x4f4ed1){_0x134ccd['push'](_0x134ccd['shift']());}};_0x498e01(++_0x5879a8);}(_0xdcda,0xa3));var _0xadcd=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xdcda[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0xadcd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xadcd('0x1'));var moment=require(_0xadcd('0x2'));var BPromise=require(_0xadcd('0x3'));var rp=require(_0xadcd('0x4'));var fs=require('fs');var path=require(_0xadcd('0x5'));var rimraf=require(_0xadcd('0x6'));var config=require(_0xadcd('0x7'));var attributes=require(_0xadcd('0x8'));module[_0xadcd('0x9')]=function(_0xfe953d,_0x315e67){return _0xfe953d[_0xadcd('0xa')](_0xadcd('0xb'),attributes,{'tableName':_0xadcd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e898e8c..909ef6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','Action,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x11f2b5,_0x161b25){var _0x2a0d41=function(_0x126ddc){while(--_0x126ddc){_0x11f2b5['push'](_0x11f2b5['shift']());}};_0x2a0d41(++_0x161b25);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xc4aa[_0x1928c9];return _0x51b5fb;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('Action,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0x814b=['info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x814b,0x1a2));var _0xb814=function(_0x4e7c1c,_0x56eafd){_0x4e7c1c=_0x4e7c1c-0x0;var _0x47adb2=_0x814b[_0x4e7c1c];return _0x47adb2;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('Action,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}
\ No newline at end of file
index f216825..b25cbdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4999=['put','/:id','isAuthenticated','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./action.controller'];(function(_0x14f009,_0x4bec47){var _0x3a812f=function(_0x827fa5){while(--_0x827fa5){_0x14f009['push'](_0x14f009['shift']());}};_0x3a812f(++_0x4bec47);}(_0x4999,0x1e6));var _0x9499=function(_0x4d5d28,_0x26bd9b){_0x4d5d28=_0x4d5d28-0x0;var _0x2026b1=_0x4999[_0x4d5d28];return _0x2026b1;};'use strict';var multer=require(_0x9499('0x0'));var util=require(_0x9499('0x1'));var path=require(_0x9499('0x2'));var timeout=require(_0x9499('0x3'));var express=require(_0x9499('0x4'));var router=express[_0x9499('0x5')]();var fs_extra=require(_0x9499('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x9499('0x7'));var config=require(_0x9499('0x8'));var controller=require(_0x9499('0x9'));router[_0x9499('0xa')](_0x9499('0xb'),auth[_0x9499('0xc')](),controller[_0x9499('0xd')]);router['delete'](_0x9499('0xb'),auth[_0x9499('0xc')](),controller[_0x9499('0xe')]);module[_0x9499('0xf')]=router;
\ No newline at end of file
+var _0x2c07=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','isAuthenticated','update','delete'];(function(_0x497826,_0x164921){var _0x4b3ae6=function(_0x1c18e1){while(--_0x1c18e1){_0x497826['push'](_0x497826['shift']());}};_0x4b3ae6(++_0x164921);}(_0x2c07,0x14a));var _0x72c0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2c07[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x72c0('0x0'));var express=require(_0x72c0('0x1'));var router=express[_0x72c0('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x72c0('0x3'));var interaction=require(_0x72c0('0x4'));var config=require(_0x72c0('0x5'));var controller=require(_0x72c0('0x6'));router[_0x72c0('0x7')]('/:id',auth[_0x72c0('0x8')](),controller[_0x72c0('0x9')]);router[_0x72c0('0xa')]('/:id',auth[_0x72c0('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 342cfd8..3c26078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['STRING','TEXT','sequelize','exports'];(function(_0x5a4fe4,_0x13daca){var _0x42aa6e=function(_0x42703c){while(--_0x42703c){_0x5a4fe4['push'](_0x5a4fe4['shift']());}};_0x42aa6e(++_0x13daca);}(_0xf494,0x1c6));var _0x4f49=function(_0x40ff4d,_0x72c2dd){_0x40ff4d=_0x40ff4d-0x0;var _0xc6b831=_0xf494[_0x40ff4d];return _0xc6b831;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'name':{'type':Sequelize[_0x4f49('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4f49('0x2')]},'table':{'type':Sequelize[_0x4f49('0x2')]},'conditions':{'type':Sequelize[_0x4f49('0x3')]},'joins':{'type':Sequelize[_0x4f49('0x3')]}};
\ No newline at end of file
+var _0x2675=['sequelize','STRING','TEXT'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x2675,0x75));var _0x5267=function(_0x3ea9c4,_0x6891a4){_0x3ea9c4=_0x3ea9c4-0x0;var _0x36e3da=_0x2675[_0x3ea9c4];return _0x36e3da;};'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 06506e7..ed4433e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd6f=['name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','ROUND(%s)','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','field','function','replace','format','groupBy','orderBy','joins','includes','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','parse','clone','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','right_join','COUNT(%s)','Sequelize','DESC','output','fullPath','%s-%s.%s','generate','csv','custom','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','info','Run\x20Query:','child_process','../../components/export/','savename','countTable','DATE(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','alias','debug','eml-format','rimraf','fast-json-patch','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','destroy','then','get','CustomReports','UserProfileResource','sendStatus','error','stack'];(function(_0x4b4122,_0x1295e6){var _0x167fd1=function(_0x2ceaf3){while(--_0x2ceaf3){_0x4b4122['push'](_0x4b4122['shift']());}};_0x167fd1(++_0x1295e6);}(_0xcd6f,0x73));var _0xfcd6=function(_0x29c53b,_0x1e529d){_0x29c53b=_0x29c53b-0x0;var _0xb07516=_0xcd6f[_0x29c53b];return _0xb07516;};'use strict';var emlformat=require(_0xfcd6('0x0'));var rimraf=require(_0xfcd6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfcd6('0x2'));var rp=require('request-promise');var moment=require(_0xfcd6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfcd6('0x4'));var util=require(_0xfcd6('0x5'));var path=require('path');var sox=require(_0xfcd6('0x6'));var csv=require(_0xfcd6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfcd6('0x8'));var _=require(_0xfcd6('0x9'));var squel=require(_0xfcd6('0xa'));var crypto=require(_0xfcd6('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xfcd6('0xc'));var toCsv=require(_0xfcd6('0x7'));var querystring=require(_0xfcd6('0xd'));var Papa=require(_0xfcd6('0xe'));var Redis=require('ioredis');var authService=require(_0xfcd6('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xfcd6('0x10'));var hardwareService=require(_0xfcd6('0x11'));var logger=require('../../config/logger')(_0xfcd6('0x12'));var utils=require(_0xfcd6('0x13'));var config=require(_0xfcd6('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xfcd6('0x15'))['db'];var dbH=require(_0xfcd6('0x15'))['dbH'];function respondWithStatusCode(_0x2b8723,_0x269259){_0x269259=_0x269259||0xcc;return function(_0x4da21b){if(_0x4da21b){return _0x2b8723['sendStatus'](_0x269259);}return _0x2b8723['status'](_0x269259)[_0xfcd6('0x16')]();};}function respondWithResult(_0x6df0d5,_0x56ca6b){_0x56ca6b=_0x56ca6b||0xc8;return function(_0x162e91){if(_0x162e91){return _0x6df0d5[_0xfcd6('0x17')](_0x56ca6b)['json'](_0x162e91);}};}function respondWithFilteredResult(_0x5c4e5d,_0x499c74){return function(_0x5150dc){if(_0x5150dc){var _0x46b6b5=typeof _0x499c74[_0xfcd6('0x18')]===_0xfcd6('0x19')&&typeof _0x499c74[_0xfcd6('0x1a')]==='undefined';var _0x275a6f=_0x5150dc['count'];var _0x1eff7e=_0x46b6b5?0x0:_0x499c74[_0xfcd6('0x18')];var _0xf0003a=_0x46b6b5?_0x5150dc[_0xfcd6('0x1b')]:_0x499c74['offset']+_0x499c74[_0xfcd6('0x1a')];var _0x1b72c6;if(_0xf0003a>=_0x275a6f){_0xf0003a=_0x275a6f;_0x1b72c6=0xc8;}else{_0x1b72c6=0xce;}_0x5c4e5d[_0xfcd6('0x17')](_0x1b72c6);return _0x5c4e5d[_0xfcd6('0x1c')](_0xfcd6('0x1d'),_0x1eff7e+'-'+_0xf0003a+'/'+_0x275a6f)[_0xfcd6('0x1e')](_0x5150dc);}return null;};}function patchUpdates(_0x53a8d7){return function(_0x15c101){try{jsonpatch[_0xfcd6('0x1f')](_0x15c101,_0x53a8d7,!![]);}catch(_0xadd9ba){return BPromise[_0xfcd6('0x20')](_0xadd9ba);}return _0x15c101['save']();};}function saveUpdates(_0x2b0664,_0x4feaa2){return function(_0x51d809){if(_0x51d809){return _0x51d809[_0xfcd6('0x21')](_0x2b0664)['then'](function(_0xe83980){return _0xe83980;});}return null;};}function removeEntity(_0x47000b,_0x1985c4){return function(_0x58c328){if(_0x58c328){return _0x58c328[_0xfcd6('0x22')]()[_0xfcd6('0x23')](function(){var _0x1a597c=_0x58c328[_0xfcd6('0x24')]({'plain':!![]});var _0x38d8e0=_0xfcd6('0x25');return db[_0xfcd6('0x26')][_0xfcd6('0x22')]({'where':{'type':_0x38d8e0,'resourceId':_0x1a597c['id']}})[_0xfcd6('0x23')](function(){return _0x58c328;});})[_0xfcd6('0x23')](function(){_0x47000b[_0xfcd6('0x17')](0xcc)[_0xfcd6('0x16')]();});}};}function handleEntityNotFound(_0xc7ddbd,_0x165a60){return function(_0x1ef8b3){if(!_0x1ef8b3){_0xc7ddbd[_0xfcd6('0x27')](0x194);}return _0x1ef8b3;};}function handleError(_0x33395e,_0x5587e3){_0x5587e3=_0x5587e3||0x1f4;return function(_0x2c9ac5){logger[_0xfcd6('0x28')](_0x2c9ac5[_0xfcd6('0x29')]);if(_0x2c9ac5[_0xfcd6('0x2a')]){delete _0x2c9ac5[_0xfcd6('0x2a')];}_0x33395e[_0xfcd6('0x17')](_0x5587e3)[_0xfcd6('0x2b')](_0x2c9ac5);};}exports[_0xfcd6('0x2c')]=function(_0x1c7399,_0x461dc2){var _0x4b6889={},_0x5d074c={},_0x5b8e9f={'count':0x0,'rows':[]};var _0x524fdc=_[_0xfcd6('0x2d')](db[_0xfcd6('0x2e')][_0xfcd6('0x2f')],function(_0x2393c4){return{'name':_0x2393c4[_0xfcd6('0x30')],'type':_0x2393c4[_0xfcd6('0x31')][_0xfcd6('0x32')]};});_0x5d074c[_0xfcd6('0x33')]=_[_0xfcd6('0x2d')](_0x524fdc,_0xfcd6('0x2a'));_0x5d074c[_0xfcd6('0x34')]=_[_0xfcd6('0x35')](_0x1c7399[_0xfcd6('0x34')]);_0x5d074c[_0xfcd6('0x36')]=_[_0xfcd6('0x37')](_0x5d074c[_0xfcd6('0x33')],_0x5d074c[_0xfcd6('0x34')]);_0x4b6889[_0xfcd6('0x38')]=_['intersection'](_0x5d074c[_0xfcd6('0x33')],qs['fields'](_0x1c7399[_0xfcd6('0x34')][_0xfcd6('0x39')]));_0x4b6889['attributes']=_0x4b6889[_0xfcd6('0x38')][_0xfcd6('0x3a')]?_0x4b6889['attributes']:_0x5d074c[_0xfcd6('0x33')];if(!_0x1c7399[_0xfcd6('0x34')][_0xfcd6('0x3b')](_0xfcd6('0x3c'))){_0x4b6889[_0xfcd6('0x1a')]=qs[_0xfcd6('0x1a')](_0x1c7399['query'][_0xfcd6('0x1a')]);_0x4b6889[_0xfcd6('0x18')]=qs[_0xfcd6('0x18')](_0x1c7399[_0xfcd6('0x34')][_0xfcd6('0x18')]);}_0x4b6889[_0xfcd6('0x3d')]=qs[_0xfcd6('0x3e')](_0x1c7399[_0xfcd6('0x34')]['sort']);_0x4b6889[_0xfcd6('0x3f')]=qs['filters'](_[_0xfcd6('0x40')](_0x1c7399['query'],_0x5d074c[_0xfcd6('0x36')]),_0x524fdc);if(_0x1c7399[_0xfcd6('0x34')][_0xfcd6('0x41')]){_0x4b6889[_0xfcd6('0x3f')]=_['merge'](_0x4b6889[_0xfcd6('0x3f')],{'$or':_[_0xfcd6('0x2d')](_0x524fdc,function(_0x37e530){if(_0x37e530[_0xfcd6('0x31')]!=='VIRTUAL'){var _0x1b0d8d={};_0x1b0d8d[_0x37e530['name']]={'$like':'%'+_0x1c7399[_0xfcd6('0x34')][_0xfcd6('0x41')]+'%'};return _0x1b0d8d;}})});}_0x4b6889=_[_0xfcd6('0x42')]({},_0x4b6889,_0x1c7399[_0xfcd6('0x43')]);var _0xed5bbd={'where':_0x4b6889['where']};return db[_0xfcd6('0x2e')][_0xfcd6('0x1b')](_0xed5bbd)[_0xfcd6('0x23')](function(_0x3fbdc4){_0x5b8e9f['count']=_0x3fbdc4;if(_0x1c7399['query'][_0xfcd6('0x44')]){_0x4b6889[_0xfcd6('0x45')]=[{'all':!![]}];}return db[_0xfcd6('0x2e')][_0xfcd6('0x46')](_0x4b6889);})[_0xfcd6('0x23')](function(_0x42c0a4){_0x5b8e9f[_0xfcd6('0x47')]=_0x42c0a4;return _0x5b8e9f;})['then'](respondWithFilteredResult(_0x461dc2,_0x4b6889))[_0xfcd6('0x48')](handleError(_0x461dc2,null));};exports['show']=function(_0x3d7ae0,_0xa66c26){var _0xc59895={'raw':![],'where':{'id':_0x3d7ae0[_0xfcd6('0x49')]['id']}},_0x456a7b={};_0x456a7b[_0xfcd6('0x33')]=_[_0xfcd6('0x35')](db[_0xfcd6('0x2e')]['rawAttributes']);_0x456a7b['query']=_[_0xfcd6('0x35')](_0x3d7ae0[_0xfcd6('0x34')]);_0x456a7b[_0xfcd6('0x36')]=_[_0xfcd6('0x37')](_0x456a7b[_0xfcd6('0x33')],_0x456a7b[_0xfcd6('0x34')]);_0xc59895[_0xfcd6('0x38')]=_[_0xfcd6('0x37')](_0x456a7b[_0xfcd6('0x33')],qs['fields'](_0x3d7ae0['query'][_0xfcd6('0x39')]));_0xc59895[_0xfcd6('0x38')]=_0xc59895[_0xfcd6('0x38')]['length']?_0xc59895[_0xfcd6('0x38')]:_0x456a7b[_0xfcd6('0x33')];if(_0x3d7ae0[_0xfcd6('0x34')]['includeAll']){_0xc59895[_0xfcd6('0x45')]=[{'all':!![]}];}_0xc59895=_[_0xfcd6('0x42')]({},_0xc59895,_0x3d7ae0[_0xfcd6('0x43')]);return db[_0xfcd6('0x2e')][_0xfcd6('0x4a')](_0xc59895)[_0xfcd6('0x23')](handleEntityNotFound(_0xa66c26,null))[_0xfcd6('0x23')](respondWithResult(_0xa66c26,null))[_0xfcd6('0x48')](handleError(_0xa66c26,null));};exports[_0xfcd6('0x4b')]=function(_0xeb7f8f,_0x23c07c){return db[_0xfcd6('0x2e')][_0xfcd6('0x4b')](_0xeb7f8f[_0xfcd6('0x4c')],{})[_0xfcd6('0x23')](function(_0x56cb04){var _0x5a24ef=_0xeb7f8f[_0xfcd6('0x4d')][_0xfcd6('0x24')]({'plain':!![]});if(!_0x5a24ef)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5a24ef[_0xfcd6('0x4e')]===_0xfcd6('0x4d')){var _0x396088=_0x56cb04[_0xfcd6('0x24')]({'plain':!![]});var _0x582f5d='Reports';return db['UserProfileSection'][_0xfcd6('0x4a')]({'where':{'name':_0x582f5d,'userProfileId':_0x5a24ef[_0xfcd6('0x4f')]},'raw':!![]})[_0xfcd6('0x23')](function(_0x4e0fe1){if(_0x4e0fe1&&_0x4e0fe1['autoAssociation']===0x0){return db['UserProfileResource'][_0xfcd6('0x4b')]({'name':_0x396088['name'],'resourceId':_0x396088['id'],'type':_0xfcd6('0x25'),'sectionId':_0x4e0fe1['id']},{})[_0xfcd6('0x23')](function(){return _0x56cb04;});}else{return _0x56cb04;}})[_0xfcd6('0x48')](function(_0x147c47){logger['error'](_0xfcd6('0x50'),_0x147c47);throw _0x147c47;});}return _0x56cb04;})[_0xfcd6('0x23')](respondWithResult(_0x23c07c,0xc9))[_0xfcd6('0x48')](handleError(_0x23c07c,null));};exports[_0xfcd6('0x21')]=function(_0x27804e,_0x2e3abb){if(_0x27804e[_0xfcd6('0x4c')]['id']){delete _0x27804e[_0xfcd6('0x4c')]['id'];}return db[_0xfcd6('0x2e')][_0xfcd6('0x4a')]({'where':{'id':_0x27804e[_0xfcd6('0x49')]['id']}})[_0xfcd6('0x23')](handleEntityNotFound(_0x2e3abb,null))[_0xfcd6('0x23')](saveUpdates(_0x27804e[_0xfcd6('0x4c')],null))['then'](respondWithResult(_0x2e3abb,null))['catch'](handleError(_0x2e3abb,null));};exports[_0xfcd6('0x22')]=function(_0x8f206a,_0x55f02b){return db[_0xfcd6('0x2e')][_0xfcd6('0x4a')]({'where':{'id':_0x8f206a[_0xfcd6('0x49')]['id']}})['then'](handleEntityNotFound(_0x55f02b,null))['then'](removeEntity(_0x55f02b,null))[_0xfcd6('0x48')](handleError(_0x55f02b,null));};exports['preview']=function(_0x5c339e,_0x37e54a){var _0x2567ea=0xa;var _0x4b8c2e=[_0xfcd6('0x51'),_0xfcd6('0x52'),'right_join','cross_join'];var _0x3b2b82={'SUM':_0xfcd6('0x53'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xfcd6('0x54'),'MAX':_0xfcd6('0x55'),'MIN':_0xfcd6('0x56'),'AVG':_0xfcd6('0x57'),'GROUP_CONCAT':_0xfcd6('0x58'),'GROUP_CONCAT ASC':_0xfcd6('0x59'),'GROUP_CONCAT DESC':_0xfcd6('0x5a')};var _0x33233b={'SEC_TO_TIME':_0xfcd6('0x5b'),'DATE':'DATE(%s)','HOUR':_0xfcd6('0x5c'),'ROUND':_0xfcd6('0x5d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x477f47=function(_0x13a8e9){return!_['includes'](['IS\x20NULL',_0xfcd6('0x5e'),_0xfcd6('0x5f'),_0xfcd6('0x60')],_0x13a8e9);};var _0x29320a=function(_0x32b8d2){if(!_0x32b8d2||!_0x32b8d2['rules'][_0xfcd6('0x3a')]){return'';}for(var _0x3adc51='(',_0x1c1c33=0x0;_0x1c1c33<_0x32b8d2[_0xfcd6('0x61')]['length'];_0x1c1c33+=0x1){_0x1c1c33>0x0&&(_0x3adc51+='\x20'+_0x32b8d2[_0xfcd6('0x62')]+'\x20');_0x3adc51+=_0x32b8d2[_0xfcd6('0x61')][_0x1c1c33][_0xfcd6('0x63')]?_0x29320a(_0x32b8d2['rules'][_0x1c1c33]['group']):_0x32b8d2['rules'][_0x1c1c33]['field']+'\x20'+_0x32b8d2[_0xfcd6('0x61')][_0x1c1c33][_0xfcd6('0x64')]+(_0x477f47(_0x32b8d2[_0xfcd6('0x61')][_0x1c1c33][_0xfcd6('0x64')])?'\x20'+_0x32b8d2[_0xfcd6('0x61')][_0x1c1c33][_0xfcd6('0x65')]:'');}return _0x3adc51+')';};var _0xd77141={'where':{'id':_0x5c339e['params']['id']}},_0x32e61d,_0x530806,_0x5765c8,_0x6bd7a5,_0x5c7140;_0xd77141=_[_0xfcd6('0x42')]({},_0xd77141,_0x5c339e[_0xfcd6('0x43')]);return db[_0xfcd6('0x2e')][_0xfcd6('0x4a')](_0xd77141)['then'](function(_0x542a2e){if(_0x542a2e){_0x32e61d=_0x542a2e;return _0x542a2e[_0xfcd6('0x66')]();}return null;})[_0xfcd6('0x23')](function(_0x20ba7e){if(_0x20ba7e){if(!_0x20ba7e[_0xfcd6('0x3a')]){throw new db['Sequelize'][(_0xfcd6('0x67'))](_0xfcd6('0x68'),0x193);}_0x530806=_0x20ba7e;return db[_0xfcd6('0x69')][_0xfcd6('0x46')]({'raw':!![]});}return null;})['then'](function(_0x15a960){if(_0x15a960){_0x5765c8=_[_0xfcd6('0x6a')](_0x15a960,'id');var _0x5049d9;var _0x25ee04=squel[_0xfcd6('0x6b')]();_0x25ee04[_0xfcd6('0x6c')](_0x32e61d[_0xfcd6('0x6d')]);for(var _0x5af4e0=0x0;_0x5af4e0<_0x530806[_0xfcd6('0x3a')];_0x5af4e0+=0x1){_0x5049d9=_0x530806[_0x5af4e0][_0xfcd6('0x6e')]?_0x5765c8[_0x530806[_0x5af4e0][_0xfcd6('0x6e')]][_0xfcd6('0x6f')]:_0x530806[_0x5af4e0][_0xfcd6('0x70')];_0x5049d9=_0x530806[_0x5af4e0][_0xfcd6('0x71')]?_[_0xfcd6('0x72')](_0x3b2b82[_0x530806[_0x5af4e0]['function']],'%s',_0x5049d9):_0x5049d9;_0x5049d9=_0x530806[_0x5af4e0][_0xfcd6('0x73')]?_[_0xfcd6('0x72')](_0x33233b[_0x530806[_0x5af4e0][_0xfcd6('0x73')]],'%s',_0x5049d9):_0x5049d9;if(_0x530806[_0x5af4e0][_0xfcd6('0x74')]){_0x25ee04[_0xfcd6('0x63')](_0x5049d9);}_0x530806[_0x5af4e0]['orderBy']&&_0x25ee04[_0xfcd6('0x3d')](_0x5049d9,_0x530806[_0x5af4e0][_0xfcd6('0x75')]==='DESC'?![]:!![]);_0x25ee04[_0xfcd6('0x70')](_0x5049d9,_0x530806[_0x5af4e0]['alias']||_0x5049d9);}if(_0x32e61d[_0xfcd6('0x76')]){_0x32e61d[_0xfcd6('0x76')]=JSON['parse'](_0x32e61d[_0xfcd6('0x76')]);for(var _0x2e7f46=0x0;_0x2e7f46<_0x32e61d['joins']['length'];_0x2e7f46+=0x1){if(_0x32e61d['joins'][_0x2e7f46][_0xfcd6('0x31')]&&_[_0xfcd6('0x77')](_0x4b8c2e,_0x32e61d[_0xfcd6('0x76')][_0x2e7f46][_0xfcd6('0x31')])&&_0x32e61d[_0xfcd6('0x76')][_0x2e7f46][_0xfcd6('0x78')]&&_0x32e61d['joins'][_0x2e7f46][_0xfcd6('0x79')]&&_0x32e61d['joins'][_0x2e7f46][_0xfcd6('0x7a')]){_0x25ee04[_0x32e61d[_0xfcd6('0x76')][_0x2e7f46][_0xfcd6('0x31')]](_0x32e61d[_0xfcd6('0x76')][_0x2e7f46][_0xfcd6('0x79')],null,util['format'](_0xfcd6('0x7b'),_0x32e61d[_0xfcd6('0x6d')],_0x32e61d[_0xfcd6('0x76')][_0x2e7f46][_0xfcd6('0x78')],_0x32e61d[_0xfcd6('0x76')][_0x2e7f46][_0xfcd6('0x79')],_0x32e61d[_0xfcd6('0x76')][_0x2e7f46][_0xfcd6('0x7a')]));}}}if(_0x32e61d['conditions']){_0x32e61d[_0xfcd6('0x7c')]=JSON[_0xfcd6('0x7d')](_0x32e61d[_0xfcd6('0x7c')]);_0x25ee04['where'](_0x29320a(_0x32e61d['conditions'][_0xfcd6('0x63')]));}_0x5c7140=_0x25ee04[_0xfcd6('0x7e')]();_0x25ee04[_0xfcd6('0x1a')](_0x2567ea);_0x25ee04[_0xfcd6('0x18')](0x0);logger['debug'](_0xfcd6('0x7f'),_0x25ee04['toString']());return dbH[_0xfcd6('0x80')][_0xfcd6('0x34')](_0x25ee04[_0xfcd6('0x81')](),{'type':dbH['sequelize'][_0xfcd6('0x82')][_0xfcd6('0x83')]});}})[_0xfcd6('0x23')](respondWithResult(_0x37e54a,null))[_0xfcd6('0x48')](handleError(_0x37e54a,null));};function runReport(_0x4619a5,_0x4ff4bb,_0x5f2b8b){var _0x356f9c=_0x4ff4bb[_0xfcd6('0x2a')];var _0x51c84a=0xa;var _0x42c8af=[_0xfcd6('0x51'),_0xfcd6('0x52'),_0xfcd6('0x84'),'cross_join'];var _0x43dde6={'SUM':_0xfcd6('0x53'),'COUNT':_0xfcd6('0x85'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0xfcd6('0x57'),'GROUP_CONCAT':_0xfcd6('0x58'),'GROUP_CONCAT ASC':_0xfcd6('0x59'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x549cb3={'SEC_TO_TIME':_0xfcd6('0x5b'),'DATE':'DATE(%s)','HOUR':_0xfcd6('0x5c'),'ROUND':_0xfcd6('0x5d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5a63bd=function(_0x253778){return!_[_0xfcd6('0x77')](['IS\x20NULL','IS\x20NOT\x20NULL',_0xfcd6('0x5f'),_0xfcd6('0x60')],_0x253778);};var _0x4e0736=function(_0x247b54){if(!_0x247b54||!_0x247b54[_0xfcd6('0x61')][_0xfcd6('0x3a')]){return'';}for(var _0x51ef42='(',_0x38dab0=0x0;_0x38dab0<_0x247b54[_0xfcd6('0x61')][_0xfcd6('0x3a')];_0x38dab0+=0x1){_0x38dab0>0x0&&(_0x51ef42+='\x20'+_0x247b54['operator']+'\x20');_0x51ef42+=_0x247b54['rules'][_0x38dab0][_0xfcd6('0x63')]?_0x4e0736(_0x247b54['rules'][_0x38dab0][_0xfcd6('0x63')]):_0x247b54[_0xfcd6('0x61')][_0x38dab0][_0xfcd6('0x70')]+'\x20'+_0x247b54[_0xfcd6('0x61')][_0x38dab0][_0xfcd6('0x64')]+(_0x5a63bd(_0x247b54[_0xfcd6('0x61')][_0x38dab0][_0xfcd6('0x64')])?'\x20'+_0x247b54[_0xfcd6('0x61')][_0x38dab0]['value']:'');}return _0x51ef42+')';};var _0x5d058e={'where':{'id':_0x4619a5['id']}},_0x537075,_0x3e4285,_0x546ef8,_0x56150f,_0xa25976;_0x5d058e=_['merge']({},_0x5d058e,_0x5f2b8b);return db[_0xfcd6('0x2e')][_0xfcd6('0x4a')](_0x5d058e)[_0xfcd6('0x23')](function(_0x3e7d61){if(_0x3e7d61){_0x537075=_0x3e7d61;return _0x3e7d61['getFields']();}return null;})[_0xfcd6('0x23')](function(_0x164ae8){if(_0x164ae8){if(!_0x164ae8[_0xfcd6('0x3a')]){throw new db[(_0xfcd6('0x86'))][(_0xfcd6('0x67'))](_0xfcd6('0x68'),0x193);}_0x3e4285=_0x164ae8;return db['AnalyticMetric'][_0xfcd6('0x46')]({'raw':!![]});}return null;})[_0xfcd6('0x23')](function(_0x139375){if(_0x139375){_0x546ef8=_[_0xfcd6('0x6a')](_0x139375,'id');var _0x21d055;var _0x491db3=squel[_0xfcd6('0x6b')]();_0x491db3[_0xfcd6('0x6c')](_0x537075[_0xfcd6('0x6d')]);for(var _0x1a6678=0x0;_0x1a6678<_0x3e4285[_0xfcd6('0x3a')];_0x1a6678+=0x1){_0x21d055=_0x3e4285[_0x1a6678][_0xfcd6('0x6e')]?_0x546ef8[_0x3e4285[_0x1a6678][_0xfcd6('0x6e')]][_0xfcd6('0x6f')]:_0x3e4285[_0x1a6678][_0xfcd6('0x70')];_0x21d055=_0x3e4285[_0x1a6678][_0xfcd6('0x71')]?_[_0xfcd6('0x72')](_0x43dde6[_0x3e4285[_0x1a6678][_0xfcd6('0x71')]],'%s',_0x21d055):_0x21d055;_0x21d055=_0x3e4285[_0x1a6678]['format']?_[_0xfcd6('0x72')](_0x549cb3[_0x3e4285[_0x1a6678][_0xfcd6('0x73')]],'%s',_0x21d055):_0x21d055;if(_0x3e4285[_0x1a6678]['groupBy']){_0x491db3[_0xfcd6('0x63')](_0x21d055);}_0x3e4285[_0x1a6678][_0xfcd6('0x75')]&&_0x491db3[_0xfcd6('0x3d')](_0x21d055,_0x3e4285[_0x1a6678]['orderBy']===_0xfcd6('0x87')?![]:!![]);_0x491db3[_0xfcd6('0x70')](_0x21d055,_0x3e4285[_0x1a6678]['alias']||_0x21d055);}if(_0x537075['joins']){_0x537075[_0xfcd6('0x76')]=JSON[_0xfcd6('0x7d')](_0x537075['joins']);for(var _0x138e2e=0x0;_0x138e2e<_0x537075[_0xfcd6('0x76')][_0xfcd6('0x3a')];_0x138e2e+=0x1){if(_0x537075[_0xfcd6('0x76')][_0x138e2e][_0xfcd6('0x31')]&&_[_0xfcd6('0x77')](_0x42c8af,_0x537075[_0xfcd6('0x76')][_0x138e2e][_0xfcd6('0x31')])&&_0x537075[_0xfcd6('0x76')][_0x138e2e][_0xfcd6('0x78')]&&_0x537075[_0xfcd6('0x76')][_0x138e2e][_0xfcd6('0x79')]&&_0x537075[_0xfcd6('0x76')][_0x138e2e][_0xfcd6('0x7a')]){_0x491db3[_0x537075[_0xfcd6('0x76')][_0x138e2e][_0xfcd6('0x31')]](_0x537075[_0xfcd6('0x76')][_0x138e2e][_0xfcd6('0x79')],null,util['format'](_0xfcd6('0x7b'),_0x537075['table'],_0x537075[_0xfcd6('0x76')][_0x138e2e]['parentKey'],_0x537075['joins'][_0x138e2e][_0xfcd6('0x79')],_0x537075['joins'][_0x138e2e]['foreignKey']));}}}if(_0x537075[_0xfcd6('0x7c')]){_0x537075['conditions']=JSON[_0xfcd6('0x7d')](_0x537075[_0xfcd6('0x7c')]);_0x491db3[_0xfcd6('0x3f')](_0x4e0736(_0x537075['conditions'][_0xfcd6('0x63')]));}_0xa25976=_0x491db3[_0xfcd6('0x7e')]();_0x491db3['limit'](_0x51c84a);_0x491db3['offset'](0x0);return;}})['then'](function(){if(_0x4ff4bb[_0xfcd6('0x88')]==='web'){return null;}var _0x47772a=_[_0xfcd6('0x42')](_0x4ff4bb,{'name':_0x4ff4bb[_0xfcd6('0x89')]||_0x4ff4bb[_0xfcd6('0x2a')]||_0x537075['name'],'basename':_0x356f9c,'savename':util['format'](_0xfcd6('0x8a'),_0x4ff4bb[_0xfcd6('0x2a')]||_0x537075[_0xfcd6('0x2a')],require('randomstring')[_0xfcd6('0x8b')](0x4),_0x4ff4bb[_0xfcd6('0x88')]||_0xfcd6('0x8c')),'reportId':_0x537075['id'],'reportType':_0xfcd6('0x8d')});return db['AnalyticExtractedReport']['create'](_0x47772a,{'raw':!![]});})[_0xfcd6('0x23')](function(_0x4b7200){if(_0x537075[_0xfcd6('0x6d')]===_0xfcd6('0x8e')){_0xa25976[_0xfcd6('0x3f')](_0x537075[_0xfcd6('0x6d')]+_0xfcd6('0x8f'),_0x4ff4bb['startDate'],_0x4ff4bb['endDate']);}else{_0xa25976[_0xfcd6('0x3f')](_0x537075[_0xfcd6('0x6d')]+_0xfcd6('0x90'),_0x4ff4bb[_0xfcd6('0x91')],_0x4ff4bb['endDate']);}if(_0x4b7200){logger[_0xfcd6('0x92')](_0xfcd6('0x93'),_0xa25976['toString']());require(_0xfcd6('0x94'))['fork'](path[_0xfcd6('0x51')](__dirname,_0xfcd6('0x95'),_0x4b7200[_0xfcd6('0x88')]),[_0x4b7200['id'],_0xa25976[_0xfcd6('0x81')](),path[_0xfcd6('0x51')](__dirname,'../../files/reports',_0x4b7200[_0xfcd6('0x96')]),_0x356f9c]);return _0x4b7200;}else{var _0x4c91c2=squel[_0xfcd6('0x6b')]();_0x4c91c2[_0xfcd6('0x6c')]('('+_0xa25976[_0xfcd6('0x81')]()+')',_0xfcd6('0x97'));_0x4c91c2['field']('COUNT(*)',_0xfcd6('0x1b'));_0xa25976[_0xfcd6('0x1a')](_0x4ff4bb['limit']||_0x51c84a);_0xa25976[_0xfcd6('0x18')](_0x4ff4bb[_0xfcd6('0x18')]||0x0);return dbH[_0xfcd6('0x80')][_0xfcd6('0x34')](_0x4c91c2['toString'](),{'type':dbH[_0xfcd6('0x80')][_0xfcd6('0x82')][_0xfcd6('0x83')]})['then'](function(_0x39d70c){if(!_0x39d70c[_0xfcd6('0x3a')]){_0x56150f=0x0;}else{_0x56150f=_0x39d70c[0x0]['count']||0x0;}return dbH['sequelize'][_0xfcd6('0x34')](_0xa25976[_0xfcd6('0x81')](),{'type':dbH[_0xfcd6('0x80')][_0xfcd6('0x82')][_0xfcd6('0x83')]});})[_0xfcd6('0x23')](function(_0x5ab089){return{'rows':_0x5ab089||[],'count':_0x56150f};});}});}exports['run']=function(_0x485844,_0x526284){return runReport(_0x485844[_0xfcd6('0x49')],_0x485844[_0xfcd6('0x34')],_0x485844[_0xfcd6('0x43')])[_0xfcd6('0x23')](respondWithResult(_0x526284,null))[_0xfcd6('0x48')](handleError(_0x526284,null));};exports['runReport']=runReport;exports['query']=function(_0x307904,_0x5898fa){var _0x46dc3a=0xa;var _0x3df4b7=[_0xfcd6('0x51'),'left_join','right_join','cross_join'];var _0x2c3ade={'SUM':_0xfcd6('0x53'),'COUNT':_0xfcd6('0x85'),'COUNT DISTINCT':_0xfcd6('0x54'),'MAX':'MAX(%s)','MIN':_0xfcd6('0x56'),'AVG':_0xfcd6('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xfcd6('0x59'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x2426a4={'SEC_TO_TIME':_0xfcd6('0x5b'),'DATE':_0xfcd6('0x98'),'HOUR':_0xfcd6('0x5c'),'ROUND':_0xfcd6('0x5d'),'UNIX_TIMESTAMP':_0xfcd6('0x99')};var _0x19fdf8=function(_0x3a2fcf){return!_[_0xfcd6('0x77')]([_0xfcd6('0x9a'),_0xfcd6('0x5e'),_0xfcd6('0x5f'),_0xfcd6('0x60')],_0x3a2fcf);};var _0x17f584=function(_0x55ded7){if(!_0x55ded7||!_0x55ded7[_0xfcd6('0x61')]['length']){return'';}for(var _0x12dcef='(',_0x2e1ea4=0x0;_0x2e1ea4<_0x55ded7[_0xfcd6('0x61')]['length'];_0x2e1ea4+=0x1){_0x2e1ea4>0x0&&(_0x12dcef+='\x20'+_0x55ded7[_0xfcd6('0x62')]+'\x20');_0x12dcef+=_0x55ded7[_0xfcd6('0x61')][_0x2e1ea4][_0xfcd6('0x63')]?_0x17f584(_0x55ded7[_0xfcd6('0x61')][_0x2e1ea4]['group']):_0x55ded7[_0xfcd6('0x61')][_0x2e1ea4][_0xfcd6('0x70')]+'\x20'+_0x55ded7[_0xfcd6('0x61')][_0x2e1ea4][_0xfcd6('0x64')]+(_0x19fdf8(_0x55ded7[_0xfcd6('0x61')][_0x2e1ea4][_0xfcd6('0x64')])?'\x20'+_0x55ded7[_0xfcd6('0x61')][_0x2e1ea4]['value']:'');}return _0x12dcef+')';};var _0x293fd7={'where':{'id':_0x307904[_0xfcd6('0x49')]['id']}},_0xbd5d78,_0x43f9de,_0x399a0f,_0x3a3a74,_0x2c09e9;_0x293fd7=_[_0xfcd6('0x42')]({},_0x293fd7,_0x307904[_0xfcd6('0x43')]);return db[_0xfcd6('0x2e')][_0xfcd6('0x4a')](_0x293fd7)[_0xfcd6('0x23')](function(_0x5da4b9){if(_0x5da4b9){_0xbd5d78=_0x5da4b9;return _0x5da4b9[_0xfcd6('0x66')]();}return null;})['then'](function(_0x1e7603){if(_0x1e7603){if(!_0x1e7603[_0xfcd6('0x3a')]){throw new db[(_0xfcd6('0x86'))][(_0xfcd6('0x67'))](_0xfcd6('0x68'),0x193);}_0x43f9de=_0x1e7603;return db[_0xfcd6('0x69')]['findAll']({'raw':!![]});}return null;})[_0xfcd6('0x23')](function(_0x5a20fe){if(_0x5a20fe){_0x399a0f=_[_0xfcd6('0x6a')](_0x5a20fe,'id');var _0x1e75e1;var _0x1b7953=squel[_0xfcd6('0x6b')]();_0x1b7953['from'](_0xbd5d78[_0xfcd6('0x6d')]);for(var _0x26c831=0x0;_0x26c831<_0x43f9de[_0xfcd6('0x3a')];_0x26c831+=0x1){_0x1e75e1=_0x43f9de[_0x26c831][_0xfcd6('0x6e')]?_0x399a0f[_0x43f9de[_0x26c831][_0xfcd6('0x6e')]][_0xfcd6('0x6f')]:_0x43f9de[_0x26c831][_0xfcd6('0x70')];_0x1e75e1=_0x43f9de[_0x26c831][_0xfcd6('0x71')]?_[_0xfcd6('0x72')](_0x2c3ade[_0x43f9de[_0x26c831][_0xfcd6('0x71')]],'%s',_0x1e75e1):_0x1e75e1;_0x1e75e1=_0x43f9de[_0x26c831]['format']?_[_0xfcd6('0x72')](_0x2426a4[_0x43f9de[_0x26c831][_0xfcd6('0x73')]],'%s',_0x1e75e1):_0x1e75e1;if(_0x43f9de[_0x26c831]['groupBy']){_0x1b7953[_0xfcd6('0x63')](_0x1e75e1);}_0x43f9de[_0x26c831][_0xfcd6('0x75')]&&_0x1b7953[_0xfcd6('0x3d')](_0x1e75e1,_0x43f9de[_0x26c831][_0xfcd6('0x75')]==='DESC'?![]:!![]);_0x1b7953[_0xfcd6('0x70')](_0x1e75e1,_0x43f9de[_0x26c831][_0xfcd6('0x9b')]||_0x1e75e1);}if(_0xbd5d78[_0xfcd6('0x76')]){_0xbd5d78[_0xfcd6('0x76')]=JSON[_0xfcd6('0x7d')](_0xbd5d78['joins']);for(var _0x22b977=0x0;_0x22b977<_0xbd5d78['joins'][_0xfcd6('0x3a')];_0x22b977+=0x1){if(_0xbd5d78[_0xfcd6('0x76')][_0x22b977][_0xfcd6('0x31')]&&_[_0xfcd6('0x77')](_0x3df4b7,_0xbd5d78[_0xfcd6('0x76')][_0x22b977][_0xfcd6('0x31')])&&_0xbd5d78[_0xfcd6('0x76')][_0x22b977][_0xfcd6('0x78')]&&_0xbd5d78['joins'][_0x22b977][_0xfcd6('0x79')]&&_0xbd5d78[_0xfcd6('0x76')][_0x22b977][_0xfcd6('0x7a')]){_0x1b7953[_0xbd5d78[_0xfcd6('0x76')][_0x22b977][_0xfcd6('0x31')]](_0xbd5d78[_0xfcd6('0x76')][_0x22b977][_0xfcd6('0x79')],null,util[_0xfcd6('0x73')](_0xfcd6('0x7b'),_0xbd5d78['table'],_0xbd5d78[_0xfcd6('0x76')][_0x22b977][_0xfcd6('0x78')],_0xbd5d78[_0xfcd6('0x76')][_0x22b977][_0xfcd6('0x79')],_0xbd5d78[_0xfcd6('0x76')][_0x22b977][_0xfcd6('0x7a')]));}}}if(_0xbd5d78['conditions']){_0xbd5d78[_0xfcd6('0x7c')]=JSON['parse'](_0xbd5d78[_0xfcd6('0x7c')]);_0x1b7953['where'](_0x17f584(_0xbd5d78['conditions']['group']));}_0x2c09e9=_0x1b7953[_0xfcd6('0x7e')]();_0x1b7953[_0xfcd6('0x1a')](_0x46dc3a);_0x1b7953[_0xfcd6('0x18')](0x0);logger[_0xfcd6('0x9c')]('Limited\x20Query:',_0x1b7953['toString']());return dbH[_0xfcd6('0x80')][_0xfcd6('0x34')](_0x1b7953[_0xfcd6('0x81')](),{'type':dbH[_0xfcd6('0x80')]['QueryTypes'][_0xfcd6('0x83')]});}})[_0xfcd6('0x23')](function(){return{'sql':_0x2c09e9[_0xfcd6('0x81')]()};})[_0xfcd6('0x23')](respondWithResult(_0x5898fa,null))[_0xfcd6('0x48')](handleError(_0x5898fa,null));};
\ No newline at end of file
+var _0xaf31=['stack','name','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','limit','order','sort','where','pick','filter','VIRTUAL','options','include','findAll','rows','show','params','length','includeAll','merge','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','find','userProfileId','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','operator','group','condition','value','getFields','AnalyticMetric','keyBy','select','table','MetricId','metric','field','function','format','replace','groupBy','orderBy','alias','joins','parse','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','join','left_join','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','Sequelize','ValidationErrorItem','from','foreignKey','output','web','fullPath','%s-%s.%s','randomstring','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','Run\x20Query:','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','run','runReport','IS\x20NOT\x20EMPTY','Please\x20insert\x20at\x20least\x20one\x20field','debug','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','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','dbH','status','end','json','offset','undefined','count','Content-Range','save','update','then','destroy','get','UserProfileResource','error'];(function(_0x5877d8,_0x1b153a){var _0x59ad8c=function(_0x11ee8a){while(--_0x11ee8a){_0x5877d8['push'](_0x5877d8['shift']());}};_0x59ad8c(++_0x1b153a);}(_0xaf31,0x1c1));var _0x1af3=function(_0x3bbb75,_0x27ed74){_0x3bbb75=_0x3bbb75-0x0;var _0x43092d=_0xaf31[_0x3bbb75];return _0x43092d;};'use strict';var emlformat=require(_0x1af3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1af3('0x1'));var jsonpatch=require(_0x1af3('0x2'));var rp=require(_0x1af3('0x3'));var moment=require(_0x1af3('0x4'));var BPromise=require(_0x1af3('0x5'));var Mustache=require(_0x1af3('0x6'));var util=require('util');var path=require(_0x1af3('0x7'));var sox=require(_0x1af3('0x8'));var csv=require(_0x1af3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1af3('0xa'));var _=require('lodash');var squel=require(_0x1af3('0xb'));var crypto=require(_0x1af3('0xc'));var jsforce=require(_0x1af3('0xd'));var deskjs=require(_0x1af3('0xe'));var toCsv=require(_0x1af3('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1af3('0xf'));var authService=require(_0x1af3('0x10'));var qs=require(_0x1af3('0x11'));var as=require(_0x1af3('0x12'));var hardwareService=require(_0x1af3('0x13'));var logger=require(_0x1af3('0x14'))(_0x1af3('0x15'));var utils=require(_0x1af3('0x16'));var config=require(_0x1af3('0x17'));var licenseUtil=require(_0x1af3('0x18'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x1af3('0x19')];function respondWithStatusCode(_0x40273b,_0x1efa5a){_0x1efa5a=_0x1efa5a||0xcc;return function(_0x110b19){if(_0x110b19){return _0x40273b['sendStatus'](_0x1efa5a);}return _0x40273b[_0x1af3('0x1a')](_0x1efa5a)[_0x1af3('0x1b')]();};}function respondWithResult(_0x14b90c,_0x170888){_0x170888=_0x170888||0xc8;return function(_0x4f8c19){if(_0x4f8c19){return _0x14b90c[_0x1af3('0x1a')](_0x170888)[_0x1af3('0x1c')](_0x4f8c19);}};}function respondWithFilteredResult(_0x2e7563,_0x4584bd){return function(_0x3262c7){if(_0x3262c7){var _0x2e3d00=typeof _0x4584bd[_0x1af3('0x1d')]===_0x1af3('0x1e')&&typeof _0x4584bd['limit']===_0x1af3('0x1e');var _0x36f8e5=_0x3262c7[_0x1af3('0x1f')];var _0x21ec50=_0x2e3d00?0x0:_0x4584bd[_0x1af3('0x1d')];var _0x211f66=_0x2e3d00?_0x3262c7[_0x1af3('0x1f')]:_0x4584bd[_0x1af3('0x1d')]+_0x4584bd['limit'];var _0x341bf2;if(_0x211f66>=_0x36f8e5){_0x211f66=_0x36f8e5;_0x341bf2=0xc8;}else{_0x341bf2=0xce;}_0x2e7563['status'](_0x341bf2);return _0x2e7563['set'](_0x1af3('0x20'),_0x21ec50+'-'+_0x211f66+'/'+_0x36f8e5)[_0x1af3('0x1c')](_0x3262c7);}return null;};}function patchUpdates(_0x3c989f){return function(_0x1286f8){try{jsonpatch['apply'](_0x1286f8,_0x3c989f,!![]);}catch(_0x533085){return BPromise['reject'](_0x533085);}return _0x1286f8[_0x1af3('0x21')]();};}function saveUpdates(_0x4102f3,_0x4f9606){return function(_0x385223){if(_0x385223){return _0x385223[_0x1af3('0x22')](_0x4102f3)[_0x1af3('0x23')](function(_0x58d101){return _0x58d101;});}return null;};}function removeEntity(_0x4f14d8,_0x97c509){return function(_0x5aa499){if(_0x5aa499){return _0x5aa499[_0x1af3('0x24')]()['then'](function(){var _0x41b0ae=_0x5aa499[_0x1af3('0x25')]({'plain':!![]});var _0x38133c='CustomReports';return db[_0x1af3('0x26')]['destroy']({'where':{'type':_0x38133c,'resourceId':_0x41b0ae['id']}})[_0x1af3('0x23')](function(){return _0x5aa499;});})[_0x1af3('0x23')](function(){_0x4f14d8[_0x1af3('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x57115a,_0x1bed67){return function(_0x2fedb7){if(!_0x2fedb7){_0x57115a['sendStatus'](0x194);}return _0x2fedb7;};}function handleError(_0x5ddbeb,_0x13287d){_0x13287d=_0x13287d||0x1f4;return function(_0x5b32a3){logger[_0x1af3('0x27')](_0x5b32a3[_0x1af3('0x28')]);if(_0x5b32a3[_0x1af3('0x29')]){delete _0x5b32a3[_0x1af3('0x29')];}_0x5ddbeb[_0x1af3('0x1a')](_0x13287d)['send'](_0x5b32a3);};}exports[_0x1af3('0x2a')]=function(_0x462e88,_0x5aec1b){var _0x1133f6={},_0x4deeea={},_0x32ce31={'count':0x0,'rows':[]};var _0x4f3963=_[_0x1af3('0x2b')](db[_0x1af3('0x2c')][_0x1af3('0x2d')],function(_0x5b0a5c){return{'name':_0x5b0a5c[_0x1af3('0x2e')],'type':_0x5b0a5c[_0x1af3('0x2f')][_0x1af3('0x30')]};});_0x4deeea[_0x1af3('0x31')]=_[_0x1af3('0x2b')](_0x4f3963,_0x1af3('0x29'));_0x4deeea[_0x1af3('0x32')]=_[_0x1af3('0x33')](_0x462e88[_0x1af3('0x32')]);_0x4deeea[_0x1af3('0x34')]=_['intersection'](_0x4deeea[_0x1af3('0x31')],_0x4deeea[_0x1af3('0x32')]);_0x1133f6[_0x1af3('0x35')]=_[_0x1af3('0x36')](_0x4deeea[_0x1af3('0x31')],qs['fields'](_0x462e88[_0x1af3('0x32')][_0x1af3('0x37')]));_0x1133f6['attributes']=_0x1133f6[_0x1af3('0x35')]['length']?_0x1133f6[_0x1af3('0x35')]:_0x4deeea[_0x1af3('0x31')];if(!_0x462e88[_0x1af3('0x32')]['hasOwnProperty'](_0x1af3('0x38'))){_0x1133f6[_0x1af3('0x39')]=qs[_0x1af3('0x39')](_0x462e88[_0x1af3('0x32')][_0x1af3('0x39')]);_0x1133f6[_0x1af3('0x1d')]=qs[_0x1af3('0x1d')](_0x462e88[_0x1af3('0x32')][_0x1af3('0x1d')]);}_0x1133f6[_0x1af3('0x3a')]=qs[_0x1af3('0x3b')](_0x462e88['query'][_0x1af3('0x3b')]);_0x1133f6[_0x1af3('0x3c')]=qs[_0x1af3('0x34')](_[_0x1af3('0x3d')](_0x462e88[_0x1af3('0x32')],_0x4deeea['filters']),_0x4f3963);if(_0x462e88[_0x1af3('0x32')][_0x1af3('0x3e')]){_0x1133f6[_0x1af3('0x3c')]=_['merge'](_0x1133f6[_0x1af3('0x3c')],{'$or':_[_0x1af3('0x2b')](_0x4f3963,function(_0x4ed126){if(_0x4ed126[_0x1af3('0x2f')]!==_0x1af3('0x3f')){var _0x4981fa={};_0x4981fa[_0x4ed126[_0x1af3('0x29')]]={'$like':'%'+_0x462e88['query'][_0x1af3('0x3e')]+'%'};return _0x4981fa;}})});}_0x1133f6=_['merge']({},_0x1133f6,_0x462e88[_0x1af3('0x40')]);var _0xa3e4d8={'where':_0x1133f6[_0x1af3('0x3c')]};return db['AnalyticCustomReport']['count'](_0xa3e4d8)[_0x1af3('0x23')](function(_0x1a472f){_0x32ce31['count']=_0x1a472f;if(_0x462e88[_0x1af3('0x32')]['includeAll']){_0x1133f6[_0x1af3('0x41')]=[{'all':!![]}];}return db[_0x1af3('0x2c')][_0x1af3('0x42')](_0x1133f6);})[_0x1af3('0x23')](function(_0x193000){_0x32ce31[_0x1af3('0x43')]=_0x193000;return _0x32ce31;})[_0x1af3('0x23')](respondWithFilteredResult(_0x5aec1b,_0x1133f6))['catch'](handleError(_0x5aec1b,null));};exports[_0x1af3('0x44')]=function(_0x16a413,_0x30290b){var _0x31c169={'raw':![],'where':{'id':_0x16a413[_0x1af3('0x45')]['id']}},_0x1d698a={};_0x1d698a[_0x1af3('0x31')]=_['keys'](db['AnalyticCustomReport']['rawAttributes']);_0x1d698a[_0x1af3('0x32')]=_[_0x1af3('0x33')](_0x16a413[_0x1af3('0x32')]);_0x1d698a['filters']=_[_0x1af3('0x36')](_0x1d698a[_0x1af3('0x31')],_0x1d698a['query']);_0x31c169[_0x1af3('0x35')]=_[_0x1af3('0x36')](_0x1d698a[_0x1af3('0x31')],qs[_0x1af3('0x37')](_0x16a413[_0x1af3('0x32')][_0x1af3('0x37')]));_0x31c169['attributes']=_0x31c169[_0x1af3('0x35')][_0x1af3('0x46')]?_0x31c169[_0x1af3('0x35')]:_0x1d698a[_0x1af3('0x31')];if(_0x16a413[_0x1af3('0x32')][_0x1af3('0x47')]){_0x31c169[_0x1af3('0x41')]=[{'all':!![]}];}_0x31c169=_[_0x1af3('0x48')]({},_0x31c169,_0x16a413['options']);return db[_0x1af3('0x2c')]['find'](_0x31c169)[_0x1af3('0x23')](handleEntityNotFound(_0x30290b,null))[_0x1af3('0x23')](respondWithResult(_0x30290b,null))[_0x1af3('0x49')](handleError(_0x30290b,null));};exports['create']=function(_0x2b7453,_0x1a5900){return db[_0x1af3('0x2c')][_0x1af3('0x4a')](_0x2b7453['body'],{})[_0x1af3('0x23')](function(_0x69d0f5){var _0x1017a0=_0x2b7453[_0x1af3('0x4b')][_0x1af3('0x25')]({'plain':!![]});if(!_0x1017a0)throw new Error(_0x1af3('0x4c'));if(_0x1017a0['role']===_0x1af3('0x4b')){var _0x5c13e7=_0x69d0f5[_0x1af3('0x25')]({'plain':!![]});var _0x287469=_0x1af3('0x4d');return db['UserProfileSection'][_0x1af3('0x4e')]({'where':{'name':_0x287469,'userProfileId':_0x1017a0[_0x1af3('0x4f')]},'raw':!![]})[_0x1af3('0x23')](function(_0x5af47a){if(_0x5af47a&&_0x5af47a['autoAssociation']===0x0){return db[_0x1af3('0x26')][_0x1af3('0x4a')]({'name':_0x5c13e7[_0x1af3('0x29')],'resourceId':_0x5c13e7['id'],'type':_0x1af3('0x50'),'sectionId':_0x5af47a['id']},{})['then'](function(){return _0x69d0f5;});}else{return _0x69d0f5;}})['catch'](function(_0x2a1556){logger['error'](_0x1af3('0x51'),_0x2a1556);throw _0x2a1556;});}return _0x69d0f5;})[_0x1af3('0x23')](respondWithResult(_0x1a5900,0xc9))['catch'](handleError(_0x1a5900,null));};exports[_0x1af3('0x22')]=function(_0x27acfd,_0x3b8834){if(_0x27acfd[_0x1af3('0x52')]['id']){delete _0x27acfd[_0x1af3('0x52')]['id'];}return db[_0x1af3('0x2c')][_0x1af3('0x4e')]({'where':{'id':_0x27acfd[_0x1af3('0x45')]['id']}})[_0x1af3('0x23')](handleEntityNotFound(_0x3b8834,null))[_0x1af3('0x23')](saveUpdates(_0x27acfd[_0x1af3('0x52')],null))[_0x1af3('0x23')](respondWithResult(_0x3b8834,null))[_0x1af3('0x49')](handleError(_0x3b8834,null));};exports[_0x1af3('0x24')]=function(_0x529a3c,_0x63f9d2){return db['AnalyticCustomReport'][_0x1af3('0x4e')]({'where':{'id':_0x529a3c[_0x1af3('0x45')]['id']}})[_0x1af3('0x23')](handleEntityNotFound(_0x63f9d2,null))['then'](removeEntity(_0x63f9d2,null))[_0x1af3('0x49')](handleError(_0x63f9d2,null));};exports['preview']=function(_0x2eedb9,_0x2effe3){var _0x2c62fd=0xa;var _0x34371e=['join','left_join',_0x1af3('0x53'),_0x1af3('0x54')];var _0x21d539={'SUM':_0x1af3('0x55'),'COUNT':_0x1af3('0x56'),'COUNT DISTINCT':_0x1af3('0x57'),'MAX':_0x1af3('0x58'),'MIN':_0x1af3('0x59'),'AVG':_0x1af3('0x5a'),'GROUP_CONCAT':_0x1af3('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1d4fc0={'SEC_TO_TIME':_0x1af3('0x5c'),'DATE':_0x1af3('0x5d'),'HOUR':_0x1af3('0x5e'),'ROUND':_0x1af3('0x5f'),'UNIX_TIMESTAMP':_0x1af3('0x60')};var _0x3c00b6=function(_0x19ddb4){return!_[_0x1af3('0x61')]([_0x1af3('0x62'),_0x1af3('0x63'),_0x1af3('0x64'),'IS\x20NOT\x20EMPTY'],_0x19ddb4);};var _0x355f85=function(_0x1071fb){if(!_0x1071fb||!_0x1071fb[_0x1af3('0x65')][_0x1af3('0x46')]){return'';}for(var _0x190fc4='(',_0x5e0fb8=0x0;_0x5e0fb8<_0x1071fb[_0x1af3('0x65')][_0x1af3('0x46')];_0x5e0fb8+=0x1){_0x5e0fb8>0x0&&(_0x190fc4+='\x20'+_0x1071fb[_0x1af3('0x66')]+'\x20');_0x190fc4+=_0x1071fb[_0x1af3('0x65')][_0x5e0fb8][_0x1af3('0x67')]?_0x355f85(_0x1071fb[_0x1af3('0x65')][_0x5e0fb8][_0x1af3('0x67')]):_0x1071fb['rules'][_0x5e0fb8]['field']+'\x20'+_0x1071fb[_0x1af3('0x65')][_0x5e0fb8][_0x1af3('0x68')]+(_0x3c00b6(_0x1071fb[_0x1af3('0x65')][_0x5e0fb8]['condition'])?'\x20'+_0x1071fb[_0x1af3('0x65')][_0x5e0fb8][_0x1af3('0x69')]:'');}return _0x190fc4+')';};var _0x2349e5={'where':{'id':_0x2eedb9['params']['id']}},_0x5a3c74,_0x392086,_0x2aa459,_0x3ce971,_0x1161dc;_0x2349e5=_['merge']({},_0x2349e5,_0x2eedb9[_0x1af3('0x40')]);return db[_0x1af3('0x2c')]['find'](_0x2349e5)['then'](function(_0x55997a){if(_0x55997a){_0x5a3c74=_0x55997a;return _0x55997a[_0x1af3('0x6a')]();}return null;})[_0x1af3('0x23')](function(_0x10ab51){if(_0x10ab51){if(!_0x10ab51[_0x1af3('0x46')]){throw new db['Sequelize']['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x392086=_0x10ab51;return db[_0x1af3('0x6b')][_0x1af3('0x42')]({'raw':!![]});}return null;})[_0x1af3('0x23')](function(_0x5642f0){if(_0x5642f0){_0x2aa459=_[_0x1af3('0x6c')](_0x5642f0,'id');var _0x4d03ad;var _0x3b26c2=squel[_0x1af3('0x6d')]();_0x3b26c2['from'](_0x5a3c74[_0x1af3('0x6e')]);for(var _0x38f4a1=0x0;_0x38f4a1<_0x392086[_0x1af3('0x46')];_0x38f4a1+=0x1){_0x4d03ad=_0x392086[_0x38f4a1][_0x1af3('0x6f')]?_0x2aa459[_0x392086[_0x38f4a1][_0x1af3('0x6f')]][_0x1af3('0x70')]:_0x392086[_0x38f4a1][_0x1af3('0x71')];_0x4d03ad=_0x392086[_0x38f4a1][_0x1af3('0x72')]?_['replace'](_0x21d539[_0x392086[_0x38f4a1]['function']],'%s',_0x4d03ad):_0x4d03ad;_0x4d03ad=_0x392086[_0x38f4a1][_0x1af3('0x73')]?_[_0x1af3('0x74')](_0x1d4fc0[_0x392086[_0x38f4a1][_0x1af3('0x73')]],'%s',_0x4d03ad):_0x4d03ad;if(_0x392086[_0x38f4a1][_0x1af3('0x75')]){_0x3b26c2[_0x1af3('0x67')](_0x4d03ad);}_0x392086[_0x38f4a1][_0x1af3('0x76')]&&_0x3b26c2[_0x1af3('0x3a')](_0x4d03ad,_0x392086[_0x38f4a1]['orderBy']==='DESC'?![]:!![]);_0x3b26c2[_0x1af3('0x71')](_0x4d03ad,_0x392086[_0x38f4a1][_0x1af3('0x77')]||_0x4d03ad);}if(_0x5a3c74['joins']){_0x5a3c74[_0x1af3('0x78')]=JSON[_0x1af3('0x79')](_0x5a3c74[_0x1af3('0x78')]);for(var _0x345c31=0x0;_0x345c31<_0x5a3c74[_0x1af3('0x78')]['length'];_0x345c31+=0x1){if(_0x5a3c74[_0x1af3('0x78')][_0x345c31]['type']&&_[_0x1af3('0x61')](_0x34371e,_0x5a3c74['joins'][_0x345c31][_0x1af3('0x2f')])&&_0x5a3c74[_0x1af3('0x78')][_0x345c31][_0x1af3('0x7a')]&&_0x5a3c74['joins'][_0x345c31]['foreignTable']&&_0x5a3c74[_0x1af3('0x78')][_0x345c31]['foreignKey']){_0x3b26c2[_0x5a3c74[_0x1af3('0x78')][_0x345c31][_0x1af3('0x2f')]](_0x5a3c74[_0x1af3('0x78')][_0x345c31][_0x1af3('0x7b')],null,util[_0x1af3('0x73')](_0x1af3('0x7c'),_0x5a3c74[_0x1af3('0x6e')],_0x5a3c74[_0x1af3('0x78')][_0x345c31][_0x1af3('0x7a')],_0x5a3c74[_0x1af3('0x78')][_0x345c31][_0x1af3('0x7b')],_0x5a3c74[_0x1af3('0x78')][_0x345c31]['foreignKey']));}}}if(_0x5a3c74[_0x1af3('0x7d')]){_0x5a3c74['conditions']=JSON[_0x1af3('0x79')](_0x5a3c74[_0x1af3('0x7d')]);_0x3b26c2[_0x1af3('0x3c')](_0x355f85(_0x5a3c74['conditions'][_0x1af3('0x67')]));}_0x1161dc=_0x3b26c2[_0x1af3('0x7e')]();_0x3b26c2['limit'](_0x2c62fd);_0x3b26c2[_0x1af3('0x1d')](0x0);logger['debug'](_0x1af3('0x7f'),_0x3b26c2[_0x1af3('0x80')]());return dbH[_0x1af3('0x81')]['query'](_0x3b26c2[_0x1af3('0x80')](),{'type':dbH[_0x1af3('0x81')][_0x1af3('0x82')][_0x1af3('0x83')]});}})[_0x1af3('0x23')](respondWithResult(_0x2effe3,null))[_0x1af3('0x49')](handleError(_0x2effe3,null));};function runReport(_0x4d8d08,_0x29c85c,_0x4cf3ec){var _0x24a6c2=_0x29c85c[_0x1af3('0x29')];var _0x1e2b08=0xa;var _0x361b66=[_0x1af3('0x84'),_0x1af3('0x85'),_0x1af3('0x53'),'cross_join'];var _0xa08064={'SUM':_0x1af3('0x55'),'COUNT':_0x1af3('0x56'),'COUNT DISTINCT':_0x1af3('0x57'),'MAX':_0x1af3('0x58'),'MIN':_0x1af3('0x59'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x1af3('0x86'),'GROUP_CONCAT DESC':_0x1af3('0x87')};var _0x5a12ec={'SEC_TO_TIME':_0x1af3('0x5c'),'DATE':_0x1af3('0x5d'),'HOUR':_0x1af3('0x5e'),'ROUND':_0x1af3('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x32fa01=function(_0x50348){return!_[_0x1af3('0x61')](['IS\x20NULL',_0x1af3('0x63'),_0x1af3('0x64'),'IS\x20NOT\x20EMPTY'],_0x50348);};var _0xfce05d=function(_0x1cfe80){if(!_0x1cfe80||!_0x1cfe80['rules'][_0x1af3('0x46')]){return'';}for(var _0x3e8f4b='(',_0x8e57f=0x0;_0x8e57f<_0x1cfe80['rules'][_0x1af3('0x46')];_0x8e57f+=0x1){_0x8e57f>0x0&&(_0x3e8f4b+='\x20'+_0x1cfe80[_0x1af3('0x66')]+'\x20');_0x3e8f4b+=_0x1cfe80[_0x1af3('0x65')][_0x8e57f][_0x1af3('0x67')]?_0xfce05d(_0x1cfe80[_0x1af3('0x65')][_0x8e57f]['group']):_0x1cfe80[_0x1af3('0x65')][_0x8e57f][_0x1af3('0x71')]+'\x20'+_0x1cfe80['rules'][_0x8e57f]['condition']+(_0x32fa01(_0x1cfe80[_0x1af3('0x65')][_0x8e57f]['condition'])?'\x20'+_0x1cfe80[_0x1af3('0x65')][_0x8e57f][_0x1af3('0x69')]:'');}return _0x3e8f4b+')';};var _0x33e018={'where':{'id':_0x4d8d08['id']}},_0x51336c,_0x48fd93,_0x299123,_0x4db220,_0x3feb3c;_0x33e018=_['merge']({},_0x33e018,_0x4cf3ec);return db[_0x1af3('0x2c')][_0x1af3('0x4e')](_0x33e018)[_0x1af3('0x23')](function(_0x399cf5){if(_0x399cf5){_0x51336c=_0x399cf5;return _0x399cf5[_0x1af3('0x6a')]();}return null;})[_0x1af3('0x23')](function(_0x2e7b3e){if(_0x2e7b3e){if(!_0x2e7b3e['length']){throw new db[(_0x1af3('0x88'))][(_0x1af3('0x89'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x48fd93=_0x2e7b3e;return db[_0x1af3('0x6b')][_0x1af3('0x42')]({'raw':!![]});}return null;})[_0x1af3('0x23')](function(_0x57bdaa){if(_0x57bdaa){_0x299123=_[_0x1af3('0x6c')](_0x57bdaa,'id');var _0x14b616;var _0x233fcc=squel[_0x1af3('0x6d')]();_0x233fcc[_0x1af3('0x8a')](_0x51336c[_0x1af3('0x6e')]);for(var _0x5e5e25=0x0;_0x5e5e25<_0x48fd93[_0x1af3('0x46')];_0x5e5e25+=0x1){_0x14b616=_0x48fd93[_0x5e5e25][_0x1af3('0x6f')]?_0x299123[_0x48fd93[_0x5e5e25]['MetricId']]['metric']:_0x48fd93[_0x5e5e25][_0x1af3('0x71')];_0x14b616=_0x48fd93[_0x5e5e25]['function']?_[_0x1af3('0x74')](_0xa08064[_0x48fd93[_0x5e5e25][_0x1af3('0x72')]],'%s',_0x14b616):_0x14b616;_0x14b616=_0x48fd93[_0x5e5e25][_0x1af3('0x73')]?_[_0x1af3('0x74')](_0x5a12ec[_0x48fd93[_0x5e5e25][_0x1af3('0x73')]],'%s',_0x14b616):_0x14b616;if(_0x48fd93[_0x5e5e25][_0x1af3('0x75')]){_0x233fcc['group'](_0x14b616);}_0x48fd93[_0x5e5e25][_0x1af3('0x76')]&&_0x233fcc[_0x1af3('0x3a')](_0x14b616,_0x48fd93[_0x5e5e25][_0x1af3('0x76')]==='DESC'?![]:!![]);_0x233fcc[_0x1af3('0x71')](_0x14b616,_0x48fd93[_0x5e5e25][_0x1af3('0x77')]||_0x14b616);}if(_0x51336c[_0x1af3('0x78')]){_0x51336c[_0x1af3('0x78')]=JSON['parse'](_0x51336c['joins']);for(var _0x5dab74=0x0;_0x5dab74<_0x51336c[_0x1af3('0x78')][_0x1af3('0x46')];_0x5dab74+=0x1){if(_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x2f')]&&_['includes'](_0x361b66,_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x2f')])&&_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x7a')]&&_0x51336c['joins'][_0x5dab74][_0x1af3('0x7b')]&&_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x8b')]){_0x233fcc[_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x2f')]](_0x51336c[_0x1af3('0x78')][_0x5dab74]['foreignTable'],null,util[_0x1af3('0x73')](_0x1af3('0x7c'),_0x51336c['table'],_0x51336c['joins'][_0x5dab74]['parentKey'],_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x7b')],_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x8b')]));}}}if(_0x51336c['conditions']){_0x51336c[_0x1af3('0x7d')]=JSON[_0x1af3('0x79')](_0x51336c[_0x1af3('0x7d')]);_0x233fcc[_0x1af3('0x3c')](_0xfce05d(_0x51336c[_0x1af3('0x7d')][_0x1af3('0x67')]));}_0x3feb3c=_0x233fcc['clone']();_0x233fcc['limit'](_0x1e2b08);_0x233fcc[_0x1af3('0x1d')](0x0);return;}})[_0x1af3('0x23')](function(){if(_0x29c85c[_0x1af3('0x8c')]===_0x1af3('0x8d')){return null;}var _0x46997d=_[_0x1af3('0x48')](_0x29c85c,{'name':_0x29c85c[_0x1af3('0x8e')]||_0x29c85c[_0x1af3('0x29')]||_0x51336c[_0x1af3('0x29')],'basename':_0x24a6c2,'savename':util[_0x1af3('0x73')](_0x1af3('0x8f'),_0x29c85c[_0x1af3('0x29')]||_0x51336c[_0x1af3('0x29')],require(_0x1af3('0x90'))['generate'](0x4),_0x29c85c[_0x1af3('0x8c')]||_0x1af3('0x91')),'reportId':_0x51336c['id'],'reportType':'custom'});return db[_0x1af3('0x92')]['create'](_0x46997d,{'raw':!![]});})[_0x1af3('0x23')](function(_0x5abd6c){if(_0x51336c['table']===_0x1af3('0x93')){_0x3feb3c[_0x1af3('0x3c')](_0x51336c[_0x1af3('0x6e')]+_0x1af3('0x94'),_0x29c85c['startDate'],_0x29c85c['endDate']);}else{_0x3feb3c[_0x1af3('0x3c')](_0x51336c[_0x1af3('0x6e')]+_0x1af3('0x95'),_0x29c85c['startDate'],_0x29c85c[_0x1af3('0x96')]);}if(_0x5abd6c){logger['info'](_0x1af3('0x97'),_0x3feb3c[_0x1af3('0x80')]());require(_0x1af3('0x98'))[_0x1af3('0x99')](path['join'](__dirname,_0x1af3('0x9a'),_0x5abd6c['output']),[_0x5abd6c['id'],_0x3feb3c[_0x1af3('0x80')](),path[_0x1af3('0x84')](__dirname,'../../files/reports',_0x5abd6c[_0x1af3('0x9b')]),_0x24a6c2]);return _0x5abd6c;}else{var _0x2333d1=squel[_0x1af3('0x6d')]();_0x2333d1['from']('('+_0x3feb3c[_0x1af3('0x80')]()+')',_0x1af3('0x9c'));_0x2333d1['field'](_0x1af3('0x9d'),_0x1af3('0x1f'));_0x3feb3c[_0x1af3('0x39')](_0x29c85c[_0x1af3('0x39')]||_0x1e2b08);_0x3feb3c[_0x1af3('0x1d')](_0x29c85c[_0x1af3('0x1d')]||0x0);return dbH[_0x1af3('0x81')]['query'](_0x2333d1[_0x1af3('0x80')](),{'type':dbH[_0x1af3('0x81')][_0x1af3('0x82')][_0x1af3('0x83')]})[_0x1af3('0x23')](function(_0x3d1d85){if(!_0x3d1d85[_0x1af3('0x46')]){_0x4db220=0x0;}else{_0x4db220=_0x3d1d85[0x0][_0x1af3('0x1f')]||0x0;}return dbH[_0x1af3('0x81')][_0x1af3('0x32')](_0x3feb3c[_0x1af3('0x80')](),{'type':dbH[_0x1af3('0x81')][_0x1af3('0x82')]['SELECT']});})['then'](function(_0x466d1f){return{'rows':_0x466d1f||[],'count':_0x4db220};});}});}exports[_0x1af3('0x9e')]=function(_0x150b91,_0x51c27a){return runReport(_0x150b91['params'],_0x150b91['query'],_0x150b91[_0x1af3('0x40')])['then'](respondWithResult(_0x51c27a,null))['catch'](handleError(_0x51c27a,null));};exports[_0x1af3('0x9f')]=runReport;exports[_0x1af3('0x32')]=function(_0x5220d2,_0x24d994){var _0x2ff53e=0xa;var _0xe750b2=[_0x1af3('0x84'),_0x1af3('0x85'),_0x1af3('0x53'),_0x1af3('0x54')];var _0x54c395={'SUM':_0x1af3('0x55'),'COUNT':_0x1af3('0x56'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x1af3('0x58'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x1af3('0x5b'),'GROUP_CONCAT ASC':_0x1af3('0x86'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x295066={'SEC_TO_TIME':_0x1af3('0x5c'),'DATE':_0x1af3('0x5d'),'HOUR':_0x1af3('0x5e'),'ROUND':_0x1af3('0x5f'),'UNIX_TIMESTAMP':_0x1af3('0x60')};var _0x34e185=function(_0x3c1f1f){return!_['includes']([_0x1af3('0x62'),_0x1af3('0x63'),'IS\x20EMPTY',_0x1af3('0xa0')],_0x3c1f1f);};var _0x52df67=function(_0x42be5c){if(!_0x42be5c||!_0x42be5c[_0x1af3('0x65')][_0x1af3('0x46')]){return'';}for(var _0x594eaa='(',_0xe8f3cf=0x0;_0xe8f3cf<_0x42be5c[_0x1af3('0x65')][_0x1af3('0x46')];_0xe8f3cf+=0x1){_0xe8f3cf>0x0&&(_0x594eaa+='\x20'+_0x42be5c['operator']+'\x20');_0x594eaa+=_0x42be5c['rules'][_0xe8f3cf]['group']?_0x52df67(_0x42be5c['rules'][_0xe8f3cf][_0x1af3('0x67')]):_0x42be5c[_0x1af3('0x65')][_0xe8f3cf]['field']+'\x20'+_0x42be5c['rules'][_0xe8f3cf]['condition']+(_0x34e185(_0x42be5c[_0x1af3('0x65')][_0xe8f3cf][_0x1af3('0x68')])?'\x20'+_0x42be5c['rules'][_0xe8f3cf][_0x1af3('0x69')]:'');}return _0x594eaa+')';};var _0x594ea3={'where':{'id':_0x5220d2['params']['id']}},_0x4269a7,_0x56b964,_0x5bd08e,_0x3338a1,_0x31d35e;_0x594ea3=_[_0x1af3('0x48')]({},_0x594ea3,_0x5220d2[_0x1af3('0x40')]);return db[_0x1af3('0x2c')][_0x1af3('0x4e')](_0x594ea3)['then'](function(_0x330a3a){if(_0x330a3a){_0x4269a7=_0x330a3a;return _0x330a3a[_0x1af3('0x6a')]();}return null;})[_0x1af3('0x23')](function(_0x4f25cc){if(_0x4f25cc){if(!_0x4f25cc['length']){throw new db[(_0x1af3('0x88'))][(_0x1af3('0x89'))](_0x1af3('0xa1'),0x193);}_0x56b964=_0x4f25cc;return db[_0x1af3('0x6b')][_0x1af3('0x42')]({'raw':!![]});}return null;})['then'](function(_0x89f2d9){if(_0x89f2d9){_0x5bd08e=_[_0x1af3('0x6c')](_0x89f2d9,'id');var _0x24793e;var _0x15debf=squel['select']();_0x15debf[_0x1af3('0x8a')](_0x4269a7[_0x1af3('0x6e')]);for(var _0x1ef6b1=0x0;_0x1ef6b1<_0x56b964[_0x1af3('0x46')];_0x1ef6b1+=0x1){_0x24793e=_0x56b964[_0x1ef6b1][_0x1af3('0x6f')]?_0x5bd08e[_0x56b964[_0x1ef6b1]['MetricId']][_0x1af3('0x70')]:_0x56b964[_0x1ef6b1][_0x1af3('0x71')];_0x24793e=_0x56b964[_0x1ef6b1]['function']?_[_0x1af3('0x74')](_0x54c395[_0x56b964[_0x1ef6b1]['function']],'%s',_0x24793e):_0x24793e;_0x24793e=_0x56b964[_0x1ef6b1][_0x1af3('0x73')]?_[_0x1af3('0x74')](_0x295066[_0x56b964[_0x1ef6b1][_0x1af3('0x73')]],'%s',_0x24793e):_0x24793e;if(_0x56b964[_0x1ef6b1][_0x1af3('0x75')]){_0x15debf[_0x1af3('0x67')](_0x24793e);}_0x56b964[_0x1ef6b1]['orderBy']&&_0x15debf[_0x1af3('0x3a')](_0x24793e,_0x56b964[_0x1ef6b1][_0x1af3('0x76')]==='DESC'?![]:!![]);_0x15debf[_0x1af3('0x71')](_0x24793e,_0x56b964[_0x1ef6b1]['alias']||_0x24793e);}if(_0x4269a7[_0x1af3('0x78')]){_0x4269a7['joins']=JSON['parse'](_0x4269a7[_0x1af3('0x78')]);for(var _0x2007be=0x0;_0x2007be<_0x4269a7[_0x1af3('0x78')][_0x1af3('0x46')];_0x2007be+=0x1){if(_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x2f')]&&_[_0x1af3('0x61')](_0xe750b2,_0x4269a7[_0x1af3('0x78')][_0x2007be]['type'])&&_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x7a')]&&_0x4269a7['joins'][_0x2007be][_0x1af3('0x7b')]&&_0x4269a7['joins'][_0x2007be][_0x1af3('0x8b')]){_0x15debf[_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x2f')]](_0x4269a7[_0x1af3('0x78')][_0x2007be]['foreignTable'],null,util[_0x1af3('0x73')]('%s.%s\x20=\x20%s.%s',_0x4269a7['table'],_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x7a')],_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x7b')],_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x8b')]));}}}if(_0x4269a7['conditions']){_0x4269a7[_0x1af3('0x7d')]=JSON[_0x1af3('0x79')](_0x4269a7[_0x1af3('0x7d')]);_0x15debf[_0x1af3('0x3c')](_0x52df67(_0x4269a7[_0x1af3('0x7d')][_0x1af3('0x67')]));}_0x31d35e=_0x15debf[_0x1af3('0x7e')]();_0x15debf['limit'](_0x2ff53e);_0x15debf[_0x1af3('0x1d')](0x0);logger[_0x1af3('0xa2')](_0x1af3('0x7f'),_0x15debf[_0x1af3('0x80')]());return dbH[_0x1af3('0x81')]['query'](_0x15debf[_0x1af3('0x80')](),{'type':dbH[_0x1af3('0x81')]['QueryTypes'][_0x1af3('0x83')]});}})[_0x1af3('0x23')](function(){return{'sql':_0x31d35e[_0x1af3('0x80')]()};})[_0x1af3('0x23')](respondWithResult(_0x24d994,null))[_0x1af3('0x49')](handleError(_0x24d994,null));};
\ No newline at end of file
index 685c1c2..74b9de7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4807=['../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5e7eb1,_0xeac85b){var _0x4a5384=function(_0x3bb51a){while(--_0x3bb51a){_0x5e7eb1['push'](_0x5e7eb1['shift']());}};_0x4a5384(++_0xeac85b);}(_0x4807,0x126));var _0x7480=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4807[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7480('0x0'))(_0x7480('0x1'));var moment=require(_0x7480('0x2'));var BPromise=require(_0x7480('0x3'));var rp=require(_0x7480('0x4'));var fs=require('fs');var path=require(_0x7480('0x5'));var rimraf=require('rimraf');var config=require(_0x7480('0x6'));var attributes=require(_0x7480('0x7'));module[_0x7480('0x8')]=function(_0x549fe3,_0x656342){return _0x549fe3[_0x7480('0x9')](_0x7480('0xa'),attributes,{'tableName':_0x7480('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf455=['AnalyticCustomReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','exports'];(function(_0x2e0d05,_0x20cf24){var _0x46c076=function(_0x90ca12){while(--_0x90ca12){_0x2e0d05['push'](_0x2e0d05['shift']());}};_0x46c076(++_0x20cf24);}(_0xf455,0x1cd));var _0x5f45=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf455[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5f45('0x0'));var util=require(_0x5f45('0x1'));var logger=require(_0x5f45('0x2'))(_0x5f45('0x3'));var moment=require(_0x5f45('0x4'));var BPromise=require(_0x5f45('0x5'));var rp=require(_0x5f45('0x6'));var fs=require('fs');var path=require(_0x5f45('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./analyticCustomReport.attributes');module[_0x5f45('0x8')]=function(_0x16cffa,_0xcbf7b5){return _0x16cffa['define'](_0x5f45('0x9'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 47b150e..e120a21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d62=['rpc','../../config/environment','jayson/promise','client','http','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0xfb0bf9,_0x17b4a8){var _0x440f17=function(_0xf5282){while(--_0xf5282){_0xfb0bf9['push'](_0xfb0bf9['shift']());}};_0x440f17(++_0x17b4a8);}(_0x0d62,0x6f));var _0x20d6=function(_0xd93b26,_0x12bbf2){_0xd93b26=_0xd93b26-0x0;var _0x25f668=_0x0d62[_0xd93b26];return _0x25f668;};'use strict';var _=require(_0x20d6('0x0'));var util=require(_0x20d6('0x1'));var moment=require(_0x20d6('0x2'));var BPromise=require(_0x20d6('0x3'));var rs=require(_0x20d6('0x4'));var fs=require('fs');var Redis=require(_0x20d6('0x5'));var db=require(_0x20d6('0x6'))['db'];var utils=require(_0x20d6('0x7'));var logger=require(_0x20d6('0x8'))(_0x20d6('0x9'));var config=require(_0x20d6('0xa'));var jayson=require(_0x20d6('0xb'));var client=jayson[_0x20d6('0xc')][_0x20d6('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x3e411a,_0x20c24f,_0x278cb6){return new BPromise(function(_0x4a97cb,_0x1cdad7){return client['request'](_0x3e411a,_0x278cb6)[_0x20d6('0xe')](function(_0x3412e4){logger[_0x20d6('0xf')](_0x20d6('0x10'),_0x20c24f,_0x20d6('0x11'));logger[_0x20d6('0x12')]('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x20c24f,_0x20d6('0x11'),JSON[_0x20d6('0x13')](_0x3412e4));if(_0x3412e4['error']){if(_0x3412e4['error']['code']===0x1f4){logger[_0x20d6('0x14')](_0x20d6('0x10'),_0x20c24f,_0x3412e4[_0x20d6('0x14')][_0x20d6('0x15')]);return _0x1cdad7(_0x3412e4[_0x20d6('0x14')]['message']);}logger['error'](_0x20d6('0x10'),_0x20c24f,_0x3412e4[_0x20d6('0x14')][_0x20d6('0x15')]);return _0x4a97cb(_0x3412e4[_0x20d6('0x14')][_0x20d6('0x15')]);}else{logger[_0x20d6('0xf')](_0x20d6('0x10'),_0x20c24f,'request\x20sent');_0x4a97cb(_0x3412e4[_0x20d6('0x16')][_0x20d6('0x15')]);}})[_0x20d6('0x17')](function(_0x5db050){logger[_0x20d6('0x14')](_0x20d6('0x10'),_0x20c24f,_0x5db050);_0x1cdad7(_0x5db050);});});}
\ No newline at end of file
+var _0x2bfa=['stringify','error','code','AnalyticCustomReport,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x874d83,_0x40c40e){var _0x279731=function(_0x111961){while(--_0x111961){_0x874d83['push'](_0x874d83['shift']());}};_0x279731(++_0x40c40e);}(_0x2bfa,0xd6));var _0xa2bf=function(_0x31deed,_0x18cbcf){_0x31deed=_0x31deed-0x0;var _0x3729fe=_0x2bfa[_0x31deed];return _0x3729fe;};'use strict';var _=require(_0xa2bf('0x0'));var util=require(_0xa2bf('0x1'));var moment=require('moment');var BPromise=require(_0xa2bf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa2bf('0x3'));var db=require(_0xa2bf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa2bf('0x5'))(_0xa2bf('0x6'));var config=require(_0xa2bf('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa2bf('0x8')][_0xa2bf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4e4b50,_0x930c1f,_0x2c040e){return new BPromise(function(_0x109c33,_0x47acbe){return client[_0xa2bf('0xa')](_0x4e4b50,_0x2c040e)[_0xa2bf('0xb')](function(_0xfc7681){logger[_0xa2bf('0xc')]('AnalyticCustomReport,\x20%s,\x20%s',_0x930c1f,'request\x20sent');logger[_0xa2bf('0xd')](_0xa2bf('0xe'),_0x930c1f,_0xa2bf('0xf'),JSON[_0xa2bf('0x10')](_0xfc7681));if(_0xfc7681[_0xa2bf('0x11')]){if(_0xfc7681[_0xa2bf('0x11')][_0xa2bf('0x12')]===0x1f4){logger[_0xa2bf('0x11')](_0xa2bf('0x13'),_0x930c1f,_0xfc7681[_0xa2bf('0x11')]['message']);return _0x47acbe(_0xfc7681['error'][_0xa2bf('0x14')]);}logger['error'](_0xa2bf('0x13'),_0x930c1f,_0xfc7681[_0xa2bf('0x11')][_0xa2bf('0x14')]);return _0x109c33(_0xfc7681[_0xa2bf('0x11')][_0xa2bf('0x14')]);}else{logger['info'](_0xa2bf('0x13'),_0x930c1f,'request\x20sent');_0x109c33(_0xfc7681[_0xa2bf('0x15')]['message']);}})[_0xa2bf('0x16')](function(_0x58eee1){logger[_0xa2bf('0x11')](_0xa2bf('0x13'),_0x930c1f,_0x58eee1);_0x47acbe(_0x58eee1);});});}
\ No newline at end of file
index 2aec7c2..a9659aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51c6=['/:id','show','/:id/preview','preview','/:id/run','run','query','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','index'];(function(_0x2afdcd,_0x1cd724){var _0x2b1314=function(_0x4a05d3){while(--_0x4a05d3){_0x2afdcd['push'](_0x2afdcd['shift']());}};_0x2b1314(++_0x1cd724);}(_0x51c6,0x152));var _0x651c=function(_0x440ff1,_0x1e67d1){_0x440ff1=_0x440ff1-0x0;var _0x4b534d=_0x51c6[_0x440ff1];return _0x4b534d;};'use strict';var multer=require(_0x651c('0x0'));var util=require(_0x651c('0x1'));var path=require(_0x651c('0x2'));var timeout=require(_0x651c('0x3'));var express=require(_0x651c('0x4'));var router=express[_0x651c('0x5')]();var fs_extra=require(_0x651c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x651c('0x7'));var config=require('../../config/environment');var controller=require(_0x651c('0x8'));router[_0x651c('0x9')]('/',auth[_0x651c('0xa')](),controller[_0x651c('0xb')]);router[_0x651c('0x9')](_0x651c('0xc'),auth[_0x651c('0xa')](),controller[_0x651c('0xd')]);router[_0x651c('0x9')](_0x651c('0xe'),auth[_0x651c('0xa')](),controller[_0x651c('0xf')]);router[_0x651c('0x9')](_0x651c('0x10'),auth['isAuthenticated'](),controller[_0x651c('0x11')]);router[_0x651c('0x9')]('/:id/query',auth[_0x651c('0xa')](),controller[_0x651c('0x12')]);router[_0x651c('0x13')]('/',auth[_0x651c('0xa')](),controller[_0x651c('0x14')]);router[_0x651c('0x15')](_0x651c('0xc'),auth[_0x651c('0xa')](),controller[_0x651c('0x16')]);router[_0x651c('0x17')](_0x651c('0xc'),auth['isAuthenticated'](),controller[_0x651c('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x6ae6=['/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','post','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./analyticCustomReport.controller','isAuthenticated','index','get'];(function(_0x5bba53,_0xef501d){var _0x34f645=function(_0x135a87){while(--_0x135a87){_0x5bba53['push'](_0x5bba53['shift']());}};_0x34f645(++_0xef501d);}(_0x6ae6,0x6c));var _0x66ae=function(_0x1dd532,_0x36e81c){_0x1dd532=_0x1dd532-0x0;var _0x3732aa=_0x6ae6[_0x1dd532];return _0x3732aa;};'use strict';var multer=require(_0x66ae('0x0'));var util=require(_0x66ae('0x1'));var path=require(_0x66ae('0x2'));var timeout=require(_0x66ae('0x3'));var express=require(_0x66ae('0x4'));var router=express[_0x66ae('0x5')]();var fs_extra=require(_0x66ae('0x6'));var auth=require(_0x66ae('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x66ae('0x8'));router['get']('/',auth[_0x66ae('0x9')](),controller[_0x66ae('0xa')]);router[_0x66ae('0xb')](_0x66ae('0xc'),auth['isAuthenticated'](),controller[_0x66ae('0xd')]);router[_0x66ae('0xb')](_0x66ae('0xe'),auth[_0x66ae('0x9')](),controller[_0x66ae('0xf')]);router[_0x66ae('0xb')](_0x66ae('0x10'),auth[_0x66ae('0x9')](),controller[_0x66ae('0x11')]);router[_0x66ae('0xb')](_0x66ae('0x12'),auth[_0x66ae('0x9')](),controller['query']);router[_0x66ae('0x13')]('/',auth[_0x66ae('0x9')](),controller['create']);router[_0x66ae('0x14')]('/:id',auth[_0x66ae('0x9')](),controller['update']);router[_0x66ae('0x15')](_0x66ae('0xc'),auth[_0x66ae('0x9')](),controller[_0x66ae('0x16')]);module[_0x66ae('0x17')]=router;
\ No newline at end of file
index f5f28b7..d3c1426 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['STRING','sequelize','exports'];(function(_0xd38274,_0x2cc06e){var _0x37cc67=function(_0x20cea5){while(--_0x20cea5){_0xd38274['push'](_0xd38274['shift']());}};_0x37cc67(++_0x2cc06e);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xc4aa[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require(_0xac4a('0x0'));module[_0xac4a('0x1')]={'name':{'type':Sequelize[_0xac4a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xac4a('0x2')]},'parent':{'type':Sequelize[_0xac4a('0x2')]},'table':{'type':Sequelize[_0xac4a('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x5d17=['sequelize','exports','STRING','TEXT'];(function(_0x4526e9,_0xbff7c8){var _0x4e1da7=function(_0x236cd5){while(--_0x236cd5){_0x4526e9['push'](_0x4526e9['shift']());}};_0x4e1da7(++_0xbff7c8);}(_0x5d17,0x114));var _0x75d1=function(_0x593c1b,_0x35c524){_0x593c1b=_0x593c1b-0x0;var _0x4e0c07=_0x5d17[_0x593c1b];return _0x4e0c07;};'use strict';var Sequelize=require(_0x75d1('0x0'));module[_0x75d1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x75d1('0x2')]},'table':{'type':Sequelize[_0x75d1('0x2')]},'conditions':{'type':Sequelize[_0x75d1('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 5b3c286..fb55840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','pick','VIRTUAL','merge','options','includeAll','include','catch','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','find','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','left_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','select','table','MetricId','metric','field','function','replace','format','groupBy','order','orderBy','DESC','joins','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','parse','clone','toString','sequelize','QueryTypes','right_join','SEC_TO_TIME(%s)','IS\x20EMPTY','Sequelize','keyBy','from','alias','output','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','child_process','fork','../../files/reports','savename','COUNT(*)','SELECT','run','runReport','MIN(%s)','debug','eml-format','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','get','DefaultReports','name','map'];(function(_0x40ff3c,_0x1c6580){var _0x16e888=function(_0x1d472f){while(--_0x1d472f){_0x40ff3c['push'](_0x40ff3c['shift']());}};_0x16e888(++_0x1c6580);}(_0x2675,0x75));var _0x5267=function(_0x29c915,_0x3def05){_0x29c915=_0x29c915-0x0;var _0x1b33a6=_0x2675[_0x29c915];return _0x1b33a6;};'use strict';var emlformat=require(_0x5267('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5267('0x1'));var moment=require(_0x5267('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x5267('0x3'));var util=require(_0x5267('0x4'));var path=require('path');var sox=require(_0x5267('0x5'));var csv=require(_0x5267('0x6'));var ejs=require(_0x5267('0x7'));var fs=require('fs');var fs_extra=require(_0x5267('0x8'));var _=require(_0x5267('0x9'));var squel=require(_0x5267('0xa'));var crypto=require('crypto');var jsforce=require(_0x5267('0xb'));var deskjs=require(_0x5267('0xc'));var toCsv=require('to-csv');var querystring=require(_0x5267('0xd'));var Papa=require('papaparse');var Redis=require(_0x5267('0xe'));var authService=require(_0x5267('0xf'));var qs=require(_0x5267('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5267('0x11'));var logger=require('../../config/logger')(_0x5267('0x12'));var utils=require('../../config/utils');var config=require(_0x5267('0x13'));var licenseUtil=require(_0x5267('0x14'));var db=require(_0x5267('0x15'))['db'];var dbH=require(_0x5267('0x15'))[_0x5267('0x16')];function respondWithStatusCode(_0x1171b9,_0x20785c){_0x20785c=_0x20785c||0xcc;return function(_0x36dc17){if(_0x36dc17){return _0x1171b9[_0x5267('0x17')](_0x20785c);}return _0x1171b9[_0x5267('0x18')](_0x20785c)[_0x5267('0x19')]();};}function respondWithResult(_0x29349a,_0x3e2bab){_0x3e2bab=_0x3e2bab||0xc8;return function(_0x548040){if(_0x548040){return _0x29349a['status'](_0x3e2bab)[_0x5267('0x1a')](_0x548040);}};}function respondWithFilteredResult(_0x40d897,_0x38a147){return function(_0x3f5344){if(_0x3f5344){var _0x46b2c2=typeof _0x38a147[_0x5267('0x1b')]===_0x5267('0x1c')&&typeof _0x38a147[_0x5267('0x1d')]===_0x5267('0x1c');var _0xb1c97a=_0x3f5344[_0x5267('0x1e')];var _0x1ab03=_0x46b2c2?0x0:_0x38a147['offset'];var _0x18f32e=_0x46b2c2?_0x3f5344[_0x5267('0x1e')]:_0x38a147['offset']+_0x38a147[_0x5267('0x1d')];var _0x56733e;if(_0x18f32e>=_0xb1c97a){_0x18f32e=_0xb1c97a;_0x56733e=0xc8;}else{_0x56733e=0xce;}_0x40d897[_0x5267('0x18')](_0x56733e);return _0x40d897[_0x5267('0x1f')](_0x5267('0x20'),_0x1ab03+'-'+_0x18f32e+'/'+_0xb1c97a)[_0x5267('0x1a')](_0x3f5344);}return null;};}function patchUpdates(_0x5ca9c6){return function(_0x4dd637){try{jsonpatch[_0x5267('0x21')](_0x4dd637,_0x5ca9c6,!![]);}catch(_0x5aebdd){return BPromise[_0x5267('0x22')](_0x5aebdd);}return _0x4dd637[_0x5267('0x23')]();};}function saveUpdates(_0x3b53ac,_0x56dd95){return function(_0x499f19){if(_0x499f19){return _0x499f19['update'](_0x3b53ac)['then'](function(_0x5ea6a6){return _0x5ea6a6;});}return null;};}function removeEntity(_0x26c7f8,_0x399e64){return function(_0x2d761d){if(_0x2d761d){return _0x2d761d[_0x5267('0x24')]()[_0x5267('0x25')](function(){var _0x40d1be=_0x2d761d[_0x5267('0x26')]({'plain':!![]});var _0x220e03=_0x5267('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x220e03,'resourceId':_0x40d1be['id']}})[_0x5267('0x25')](function(){return _0x2d761d;});})[_0x5267('0x25')](function(){_0x26c7f8['status'](0xcc)[_0x5267('0x19')]();});}};}function handleEntityNotFound(_0x52504e,_0x4d7c2a){return function(_0x43e7e7){if(!_0x43e7e7){_0x52504e[_0x5267('0x17')](0x194);}return _0x43e7e7;};}function handleError(_0x1f33b7,_0x2d2ace){_0x2d2ace=_0x2d2ace||0x1f4;return function(_0x33c431){logger['error'](_0x33c431['stack']);if(_0x33c431[_0x5267('0x28')]){delete _0x33c431[_0x5267('0x28')];}_0x1f33b7[_0x5267('0x18')](_0x2d2ace)['send'](_0x33c431);};}exports['index']=function(_0xbe7922,_0x3ef2a8){var _0x1fa725={},_0x5bec7e={},_0x59b091={'count':0x0,'rows':[]};var _0x2249a1=_[_0x5267('0x29')](db[_0x5267('0x2a')][_0x5267('0x2b')],function(_0x5bbb83){return{'name':_0x5bbb83[_0x5267('0x2c')],'type':_0x5bbb83[_0x5267('0x2d')][_0x5267('0x2e')]};});_0x5bec7e[_0x5267('0x2f')]=_[_0x5267('0x29')](_0x2249a1,_0x5267('0x28'));_0x5bec7e[_0x5267('0x30')]=_[_0x5267('0x31')](_0xbe7922['query']);_0x5bec7e['filters']=_[_0x5267('0x32')](_0x5bec7e['model'],_0x5bec7e[_0x5267('0x30')]);_0x1fa725[_0x5267('0x33')]=_[_0x5267('0x32')](_0x5bec7e[_0x5267('0x2f')],qs['fields'](_0xbe7922[_0x5267('0x30')][_0x5267('0x34')]));_0x1fa725[_0x5267('0x33')]=_0x1fa725[_0x5267('0x33')][_0x5267('0x35')]?_0x1fa725[_0x5267('0x33')]:_0x5bec7e[_0x5267('0x2f')];if(!_0xbe7922[_0x5267('0x30')]['hasOwnProperty'](_0x5267('0x36'))){_0x1fa725['limit']=qs[_0x5267('0x1d')](_0xbe7922[_0x5267('0x30')][_0x5267('0x1d')]);_0x1fa725[_0x5267('0x1b')]=qs[_0x5267('0x1b')](_0xbe7922[_0x5267('0x30')][_0x5267('0x1b')]);}_0x1fa725['order']=qs[_0x5267('0x37')](_0xbe7922[_0x5267('0x30')][_0x5267('0x37')]);_0x1fa725[_0x5267('0x38')]=qs[_0x5267('0x39')](_[_0x5267('0x3a')](_0xbe7922[_0x5267('0x30')],_0x5bec7e['filters']),_0x2249a1);if(_0xbe7922[_0x5267('0x30')]['filter']){_0x1fa725[_0x5267('0x38')]=_['merge'](_0x1fa725['where'],{'$or':_['map'](_0x2249a1,function(_0x46bfcc){if(_0x46bfcc['type']!==_0x5267('0x3b')){var _0x146476={};_0x146476[_0x46bfcc[_0x5267('0x28')]]={'$like':'%'+_0xbe7922[_0x5267('0x30')]['filter']+'%'};return _0x146476;}})});}_0x1fa725=_[_0x5267('0x3c')]({},_0x1fa725,_0xbe7922[_0x5267('0x3d')]);var _0x588edf={'where':_0x1fa725['where']};return db[_0x5267('0x2a')]['count'](_0x588edf)[_0x5267('0x25')](function(_0x1cf94a){_0x59b091[_0x5267('0x1e')]=_0x1cf94a;if(_0xbe7922[_0x5267('0x30')][_0x5267('0x3e')]){_0x1fa725[_0x5267('0x3f')]=[{'all':!![]}];}return db[_0x5267('0x2a')]['findAll'](_0x1fa725);})['then'](function(_0x28ea4a){_0x59b091['rows']=_0x28ea4a;return _0x59b091;})[_0x5267('0x25')](respondWithFilteredResult(_0x3ef2a8,_0x1fa725))[_0x5267('0x40')](handleError(_0x3ef2a8,null));};exports['show']=function(_0x1fa925,_0xc764cd){var _0x299a13={'raw':!![],'where':{'id':_0x1fa925[_0x5267('0x41')]['id']}},_0x161fed={};_0x161fed[_0x5267('0x2f')]=_[_0x5267('0x31')](db[_0x5267('0x2a')][_0x5267('0x2b')]);_0x161fed['query']=_[_0x5267('0x31')](_0x1fa925[_0x5267('0x30')]);_0x161fed[_0x5267('0x39')]=_[_0x5267('0x32')](_0x161fed[_0x5267('0x2f')],_0x161fed['query']);_0x299a13[_0x5267('0x33')]=_['intersection'](_0x161fed[_0x5267('0x2f')],qs['fields'](_0x1fa925['query'][_0x5267('0x34')]));_0x299a13['attributes']=_0x299a13[_0x5267('0x33')][_0x5267('0x35')]?_0x299a13[_0x5267('0x33')]:_0x161fed[_0x5267('0x2f')];if(_0x1fa925['query'][_0x5267('0x3e')]){_0x299a13['include']=[{'all':!![]}];}_0x299a13=_['merge']({},_0x299a13,_0x1fa925[_0x5267('0x3d')]);return db[_0x5267('0x2a')]['find'](_0x299a13)['then'](handleEntityNotFound(_0xc764cd,null))[_0x5267('0x25')](respondWithResult(_0xc764cd,null))[_0x5267('0x40')](handleError(_0xc764cd,null));};exports[_0x5267('0x42')]=function(_0x1b5a7e,_0x1c2803){return db[_0x5267('0x2a')][_0x5267('0x42')](_0x1b5a7e[_0x5267('0x43')],{})[_0x5267('0x25')](function(_0x2cfe09){var _0x21b040=_0x1b5a7e[_0x5267('0x44')][_0x5267('0x26')]({'plain':!![]});if(!_0x21b040)throw new Error(_0x5267('0x45'));if(_0x21b040['role']===_0x5267('0x44')){var _0x466d46=_0x2cfe09[_0x5267('0x26')]({'plain':!![]});var _0x4f0148=_0x5267('0x46');return db[_0x5267('0x47')][_0x5267('0x48')]({'where':{'name':_0x4f0148,'userProfileId':_0x21b040[_0x5267('0x49')]},'raw':!![]})[_0x5267('0x25')](function(_0x1457cf){if(_0x1457cf&&_0x1457cf['autoAssociation']===0x0){return db[_0x5267('0x4a')]['create']({'name':_0x466d46[_0x5267('0x28')],'resourceId':_0x466d46['id'],'type':_0x5267('0x27'),'sectionId':_0x1457cf['id']},{})[_0x5267('0x25')](function(){return _0x2cfe09;});}else{return _0x2cfe09;}})[_0x5267('0x40')](function(_0x91b932){logger[_0x5267('0x4b')](_0x5267('0x4c'),_0x91b932);throw _0x91b932;});}return _0x2cfe09;})['then'](respondWithResult(_0x1c2803,0xc9))['catch'](handleError(_0x1c2803,null));};exports[_0x5267('0x4d')]=function(_0x15b5c9,_0x566b6f){if(_0x15b5c9[_0x5267('0x43')]['id']){delete _0x15b5c9['body']['id'];}return db['AnalyticDefaultReport'][_0x5267('0x48')]({'where':{'id':_0x15b5c9[_0x5267('0x41')]['id']}})[_0x5267('0x25')](handleEntityNotFound(_0x566b6f,null))[_0x5267('0x25')](saveUpdates(_0x15b5c9[_0x5267('0x43')],null))[_0x5267('0x25')](respondWithResult(_0x566b6f,null))[_0x5267('0x40')](handleError(_0x566b6f,null));};exports[_0x5267('0x24')]=function(_0xf0b5a9,_0x43d254){return db['AnalyticDefaultReport'][_0x5267('0x48')]({'where':{'id':_0xf0b5a9[_0x5267('0x41')]['id']}})[_0x5267('0x25')](handleEntityNotFound(_0x43d254,null))[_0x5267('0x25')](removeEntity(_0x43d254,null))[_0x5267('0x40')](handleError(_0x43d254,null));};exports[_0x5267('0x4e')]=function(_0x552211,_0x195575){var _0x5ad1ce=0xa;var _0x1522d6=[_0x5267('0x4f'),_0x5267('0x50'),'right_join',_0x5267('0x51')];var _0x161dab={'SUM':_0x5267('0x52'),'COUNT':_0x5267('0x53'),'COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':'MIN(%s)','AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0x51220c={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x5267('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x4e3771=function(_0x489780){return!_[_0x5267('0x5d')]([_0x5267('0x5e'),_0x5267('0x5f'),'IS\x20EMPTY',_0x5267('0x60')],_0x489780);};var _0xc88193=function(_0x293e61){if(!_0x293e61||!_0x293e61[_0x5267('0x61')]['length']){return'';}for(var _0x5a87b5='(',_0x540ab8=0x0;_0x540ab8<_0x293e61[_0x5267('0x61')][_0x5267('0x35')];_0x540ab8+=0x1){_0x540ab8>0x0&&(_0x5a87b5+='\x20'+_0x293e61[_0x5267('0x62')]+'\x20');_0x5a87b5+=_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x63')]?_0xc88193(_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x63')]):_0x293e61[_0x5267('0x61')][_0x540ab8]['field']+'\x20'+_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x64')]+(_0x4e3771(_0x293e61['rules'][_0x540ab8][_0x5267('0x64')])?'\x20'+_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x65')]:'');}return _0x5a87b5+')';};var _0x1b6dd7={'where':{'id':_0x552211[_0x5267('0x41')]['id']}},_0x19adf5,_0xde1ecd,_0x4915f4,_0x2ca259,_0x726410;_0x1b6dd7=_[_0x5267('0x3c')]({},_0x1b6dd7,_0x552211[_0x5267('0x3d')]);return db[_0x5267('0x2a')]['find'](_0x1b6dd7)[_0x5267('0x25')](function(_0x87465){if(_0x87465){_0x19adf5=_0x87465;return _0x87465[_0x5267('0x66')]();}return null;})[_0x5267('0x25')](function(_0x1a4016){if(_0x1a4016){if(!_0x1a4016[_0x5267('0x35')]){throw new db['Sequelize'][(_0x5267('0x67'))](_0x5267('0x68'),0x193);}_0xde1ecd=_0x1a4016;return db[_0x5267('0x69')][_0x5267('0x6a')]({'raw':!![]});}return null;})['then'](function(_0x516e6e){if(_0x516e6e){_0x4915f4=_['keyBy'](_0x516e6e,'id');var _0x910f97;var _0x5cca85=squel[_0x5267('0x6b')]();_0x5cca85['from'](_0x19adf5[_0x5267('0x6c')]);for(var _0x1150ba=0x0;_0x1150ba<_0xde1ecd[_0x5267('0x35')];_0x1150ba+=0x1){_0x910f97=_0xde1ecd[_0x1150ba][_0x5267('0x6d')]?_0x4915f4[_0xde1ecd[_0x1150ba][_0x5267('0x6d')]][_0x5267('0x6e')]:_0xde1ecd[_0x1150ba][_0x5267('0x6f')];_0x910f97=_0xde1ecd[_0x1150ba][_0x5267('0x70')]?_['replace'](_0x161dab[_0xde1ecd[_0x1150ba]['function']],'%s',_0x910f97):_0x910f97;_0x910f97=_0xde1ecd[_0x1150ba]['format']?_[_0x5267('0x71')](_0x51220c[_0xde1ecd[_0x1150ba][_0x5267('0x72')]],'%s',_0x910f97):_0x910f97;if(_0xde1ecd[_0x1150ba][_0x5267('0x73')]){_0x5cca85[_0x5267('0x63')](_0x910f97);}_0xde1ecd[_0x1150ba]['orderBy']&&_0x5cca85[_0x5267('0x74')](_0x910f97,_0xde1ecd[_0x1150ba][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x5cca85[_0x5267('0x6f')](_0x910f97,_0xde1ecd[_0x1150ba]['alias']||_0x910f97);}if(_0x19adf5[_0x5267('0x77')]){_0x19adf5[_0x5267('0x77')]=JSON['parse'](_0x19adf5[_0x5267('0x77')]);for(var _0x268805=0x0;_0x268805<_0x19adf5['joins']['length'];_0x268805+=0x1){if(_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x2d')]&&_['includes'](_0x1522d6,_0x19adf5['joins'][_0x268805][_0x5267('0x2d')])&&_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x78')]&&_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x79')]&&_0x19adf5['joins'][_0x268805][_0x5267('0x7a')]){_0x5cca85[_0x19adf5[_0x5267('0x77')][_0x268805]['type']](_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x79')],null,util[_0x5267('0x72')](_0x5267('0x7b'),_0x19adf5[_0x5267('0x6c')],_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x78')],_0x19adf5[_0x5267('0x77')][_0x268805]['foreignTable'],_0x19adf5['joins'][_0x268805][_0x5267('0x7a')]));}}}if(_0x19adf5[_0x5267('0x7c')]){_0x19adf5[_0x5267('0x7c')]=JSON[_0x5267('0x7d')](_0x19adf5['conditions']);_0x5cca85[_0x5267('0x38')](_0xc88193(_0x19adf5['conditions'][_0x5267('0x63')]));}_0x726410=_0x5cca85[_0x5267('0x7e')]();_0x5cca85[_0x5267('0x1d')](_0x5ad1ce);_0x5cca85[_0x5267('0x1b')](0x0);logger['debug']('Limited\x20Query:',_0x5cca85[_0x5267('0x7f')]());return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x5cca85[_0x5267('0x7f')](),{'type':dbH[_0x5267('0x80')][_0x5267('0x81')]['SELECT']});}})[_0x5267('0x25')](respondWithResult(_0x195575,null))['catch'](handleError(_0x195575,null));};function runReport(_0x418a03,_0x5b8026,_0x2c2b95){var _0x20888d=_0x5b8026[_0x5267('0x28')];var _0x87aa90=0xa;var _0x164cc1=[_0x5267('0x4f'),_0x5267('0x50'),_0x5267('0x82'),_0x5267('0x51')];var _0x28e4b6={'SUM':_0x5267('0x52'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':'MIN(%s)','AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0xd18795={'SEC_TO_TIME':_0x5267('0x83'),'DATE':_0x5267('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x2543a4=function(_0x2feea8){return!_[_0x5267('0x5d')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x5267('0x84'),_0x5267('0x60')],_0x2feea8);};var _0x199ff6=function(_0xbf36fb){if(!_0xbf36fb||!_0xbf36fb['rules'][_0x5267('0x35')]){return'';}for(var _0x3cc775='(',_0x2630f2=0x0;_0x2630f2<_0xbf36fb[_0x5267('0x61')][_0x5267('0x35')];_0x2630f2+=0x1){_0x2630f2>0x0&&(_0x3cc775+='\x20'+_0xbf36fb[_0x5267('0x62')]+'\x20');_0x3cc775+=_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x63')]?_0x199ff6(_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x63')]):_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x6f')]+'\x20'+_0xbf36fb[_0x5267('0x61')][_0x2630f2]['condition']+(_0x2543a4(_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x64')])?'\x20'+_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x65')]:'');}return _0x3cc775+')';};var _0x447b5f={'where':{'id':_0x418a03['id']}},_0x25ce90,_0x257c69,_0x160c9c,_0x42694a,_0x11a2f4;_0x447b5f=_[_0x5267('0x3c')]({},_0x447b5f,_0x2c2b95);return db[_0x5267('0x2a')][_0x5267('0x48')](_0x447b5f)[_0x5267('0x25')](function(_0x35c3b7){if(_0x35c3b7){_0x25ce90=_0x35c3b7;return _0x35c3b7[_0x5267('0x66')]();}return null;})[_0x5267('0x25')](function(_0x35a4a3){if(_0x35a4a3){if(!_0x35a4a3[_0x5267('0x35')]){throw new db[(_0x5267('0x85'))][(_0x5267('0x67'))](_0x5267('0x68'),0x193);}_0x257c69=_0x35a4a3;return db[_0x5267('0x69')]['findAll']({'raw':!![]});}return null;})[_0x5267('0x25')](function(_0x318393){if(_0x318393){_0x160c9c=_[_0x5267('0x86')](_0x318393,'id');var _0x405eb4;var _0x38f5b7=squel['select']();_0x38f5b7[_0x5267('0x87')](_0x25ce90[_0x5267('0x6c')]);for(var _0x4c68cd=0x0;_0x4c68cd<_0x257c69['length'];_0x4c68cd+=0x1){_0x405eb4=_0x257c69[_0x4c68cd]['MetricId']?_0x160c9c[_0x257c69[_0x4c68cd][_0x5267('0x6d')]]['metric']:_0x257c69[_0x4c68cd][_0x5267('0x6f')];_0x405eb4=_0x257c69[_0x4c68cd]['function']?_['replace'](_0x28e4b6[_0x257c69[_0x4c68cd][_0x5267('0x70')]],'%s',_0x405eb4):_0x405eb4;_0x405eb4=_0x257c69[_0x4c68cd][_0x5267('0x72')]?_[_0x5267('0x71')](_0xd18795[_0x257c69[_0x4c68cd][_0x5267('0x72')]],'%s',_0x405eb4):_0x405eb4;if(_0x257c69[_0x4c68cd][_0x5267('0x73')]){_0x38f5b7['group'](_0x405eb4);}_0x257c69[_0x4c68cd]['orderBy']&&_0x38f5b7[_0x5267('0x74')](_0x405eb4,_0x257c69[_0x4c68cd][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x38f5b7[_0x5267('0x6f')](_0x405eb4,_0x257c69[_0x4c68cd][_0x5267('0x88')]||_0x405eb4);}if(_0x25ce90['joins']){_0x25ce90[_0x5267('0x77')]=JSON['parse'](_0x25ce90['joins']);for(var _0x3dfd8d=0x0;_0x3dfd8d<_0x25ce90['joins']['length'];_0x3dfd8d+=0x1){if(_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x2d')]&&_['includes'](_0x164cc1,_0x25ce90['joins'][_0x3dfd8d]['type'])&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['parentKey']&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['foreignTable']&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x7a')]){_0x38f5b7[_0x25ce90['joins'][_0x3dfd8d][_0x5267('0x2d')]](_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x79')],null,util[_0x5267('0x72')](_0x5267('0x7b'),_0x25ce90[_0x5267('0x6c')],_0x25ce90['joins'][_0x3dfd8d]['parentKey'],_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['foreignTable'],_0x25ce90['joins'][_0x3dfd8d][_0x5267('0x7a')]));}}}if(_0x25ce90['conditions']){_0x25ce90[_0x5267('0x7c')]=JSON['parse'](_0x25ce90[_0x5267('0x7c')]);_0x38f5b7['where'](_0x199ff6(_0x25ce90[_0x5267('0x7c')][_0x5267('0x63')]));}_0x11a2f4=_0x38f5b7[_0x5267('0x7e')]();_0x38f5b7[_0x5267('0x1d')](_0x87aa90);_0x38f5b7[_0x5267('0x1b')](0x0);return;}})[_0x5267('0x25')](function(){if(_0x5b8026[_0x5267('0x89')]==='web'){return null;}var _0x4df99f=_[_0x5267('0x3c')](_0x5b8026,{'name':_0x5b8026['fullPath']||_0x5b8026['name']||_0x25ce90['name'],'basename':_0x20888d,'savename':util['format']('%s-%s.%s',_0x5b8026['name']||_0x25ce90[_0x5267('0x28')],require(_0x5267('0x8a'))[_0x5267('0x8b')](0x4),_0x5b8026[_0x5267('0x89')]||_0x5267('0x8c')),'reportId':_0x25ce90['id'],'reportType':_0x5267('0x8d')});return db[_0x5267('0x8e')][_0x5267('0x42')](_0x4df99f,{'raw':!![]});})['then'](function(_0x5df23d){if(_0x25ce90['table']===_0x5267('0x8f')){_0x11a2f4[_0x5267('0x38')](_0x25ce90['table']+_0x5267('0x90'),_0x5b8026[_0x5267('0x91')],_0x5b8026[_0x5267('0x92')]);}else{_0x11a2f4[_0x5267('0x38')](_0x25ce90['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5b8026[_0x5267('0x91')],_0x5b8026[_0x5267('0x92')]);}if(_0x5df23d){logger[_0x5267('0x93')](_0x5267('0x94'),_0x11a2f4[_0x5267('0x7f')]());require(_0x5267('0x95'))[_0x5267('0x96')](path['join'](__dirname,'../../components/export/',_0x5df23d['output']),[_0x5df23d['id'],_0x11a2f4[_0x5267('0x7f')](),path[_0x5267('0x4f')](__dirname,_0x5267('0x97'),_0x5df23d[_0x5267('0x98')]),_0x20888d]);return _0x5df23d;}else{var _0x190ef4=squel[_0x5267('0x6b')]();_0x190ef4['from']('('+_0x11a2f4[_0x5267('0x7f')]()+')','countTable');_0x190ef4[_0x5267('0x6f')](_0x5267('0x99'),_0x5267('0x1e'));_0x11a2f4[_0x5267('0x1d')](_0x5b8026[_0x5267('0x1d')]||_0x87aa90);_0x11a2f4['offset'](_0x5b8026[_0x5267('0x1b')]||0x0);return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x190ef4['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x5267('0x9a')]})[_0x5267('0x25')](function(_0x1be763){if(!_0x1be763[_0x5267('0x35')]){_0x42694a=0x0;}else{_0x42694a=_0x1be763[0x0]['count']||0x0;}return dbH['sequelize'][_0x5267('0x30')](_0x11a2f4[_0x5267('0x7f')](),{'type':dbH['sequelize'][_0x5267('0x81')][_0x5267('0x9a')]});})['then'](function(_0x5005b3){return{'rows':_0x5005b3||[],'count':_0x42694a};});}});}exports[_0x5267('0x9b')]=function(_0x11a6f4,_0x5a16ee){return runReport(_0x11a6f4[_0x5267('0x41')],_0x11a6f4[_0x5267('0x30')],_0x11a6f4[_0x5267('0x3d')])[_0x5267('0x25')](respondWithResult(_0x5a16ee,null))[_0x5267('0x40')](handleError(_0x5a16ee,null));};exports[_0x5267('0x9c')]=runReport;exports[_0x5267('0x30')]=function(_0x1e9651,_0x66da7a){var _0x54b582=0xa;var _0x4e4724=[_0x5267('0x4f'),'left_join',_0x5267('0x82'),_0x5267('0x51')];var _0x2722f9={'SUM':_0x5267('0x52'),'COUNT':_0x5267('0x53'),'COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':_0x5267('0x9d'),'AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0x5909b3={'SEC_TO_TIME':_0x5267('0x83'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x1d7987=function(_0x59efe1){return!_[_0x5267('0x5d')]([_0x5267('0x5e'),_0x5267('0x5f'),_0x5267('0x84'),_0x5267('0x60')],_0x59efe1);};var _0x46c79e=function(_0xcfba51){if(!_0xcfba51||!_0xcfba51[_0x5267('0x61')][_0x5267('0x35')]){return'';}for(var _0x3c5516='(',_0x1e8367=0x0;_0x1e8367<_0xcfba51[_0x5267('0x61')]['length'];_0x1e8367+=0x1){_0x1e8367>0x0&&(_0x3c5516+='\x20'+_0xcfba51[_0x5267('0x62')]+'\x20');_0x3c5516+=_0xcfba51[_0x5267('0x61')][_0x1e8367]['group']?_0x46c79e(_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x63')]):_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x6f')]+'\x20'+_0xcfba51['rules'][_0x1e8367][_0x5267('0x64')]+(_0x1d7987(_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x64')])?'\x20'+_0xcfba51['rules'][_0x1e8367][_0x5267('0x65')]:'');}return _0x3c5516+')';};var _0x19935d={'where':{'id':_0x1e9651[_0x5267('0x41')]['id']}},_0x3102e0,_0x2d215e,_0xc0af94,_0x178080,_0x3485ab;_0x19935d=_[_0x5267('0x3c')]({},_0x19935d,_0x1e9651['options']);return db[_0x5267('0x2a')][_0x5267('0x48')](_0x19935d)['then'](function(_0x17d2d4){if(_0x17d2d4){_0x3102e0=_0x17d2d4;return _0x17d2d4['getFields']();}return null;})[_0x5267('0x25')](function(_0x4c5a26){if(_0x4c5a26){if(!_0x4c5a26[_0x5267('0x35')]){throw new db[(_0x5267('0x85'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2d215e=_0x4c5a26;return db[_0x5267('0x69')][_0x5267('0x6a')]({'raw':!![]});}return null;})[_0x5267('0x25')](function(_0x1a0883){if(_0x1a0883){_0xc0af94=_[_0x5267('0x86')](_0x1a0883,'id');var _0x501da6;var _0x3dcf73=squel['select']();_0x3dcf73['from'](_0x3102e0['table']);for(var _0x1ded05=0x0;_0x1ded05<_0x2d215e[_0x5267('0x35')];_0x1ded05+=0x1){_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x6d')]?_0xc0af94[_0x2d215e[_0x1ded05][_0x5267('0x6d')]][_0x5267('0x6e')]:_0x2d215e[_0x1ded05][_0x5267('0x6f')];_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x70')]?_['replace'](_0x2722f9[_0x2d215e[_0x1ded05]['function']],'%s',_0x501da6):_0x501da6;_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x72')]?_[_0x5267('0x71')](_0x5909b3[_0x2d215e[_0x1ded05][_0x5267('0x72')]],'%s',_0x501da6):_0x501da6;if(_0x2d215e[_0x1ded05][_0x5267('0x73')]){_0x3dcf73[_0x5267('0x63')](_0x501da6);}_0x2d215e[_0x1ded05]['orderBy']&&_0x3dcf73[_0x5267('0x74')](_0x501da6,_0x2d215e[_0x1ded05][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x3dcf73[_0x5267('0x6f')](_0x501da6,_0x2d215e[_0x1ded05][_0x5267('0x88')]||_0x501da6);}if(_0x3102e0['joins']){_0x3102e0[_0x5267('0x77')]=JSON[_0x5267('0x7d')](_0x3102e0[_0x5267('0x77')]);for(var _0x4bfafd=0x0;_0x4bfafd<_0x3102e0[_0x5267('0x77')]['length'];_0x4bfafd+=0x1){if(_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x2d')]&&_['includes'](_0x4e4724,_0x3102e0[_0x5267('0x77')][_0x4bfafd]['type'])&&_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x78')]&&_0x3102e0['joins'][_0x4bfafd][_0x5267('0x79')]&&_0x3102e0[_0x5267('0x77')][_0x4bfafd]['foreignKey']){_0x3dcf73[_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x2d')]](_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x79')],null,util[_0x5267('0x72')]('%s.%s\x20=\x20%s.%s',_0x3102e0['table'],_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x78')],_0x3102e0['joins'][_0x4bfafd][_0x5267('0x79')],_0x3102e0['joins'][_0x4bfafd][_0x5267('0x7a')]));}}}if(_0x3102e0[_0x5267('0x7c')]){_0x3102e0[_0x5267('0x7c')]=JSON[_0x5267('0x7d')](_0x3102e0[_0x5267('0x7c')]);_0x3dcf73[_0x5267('0x38')](_0x46c79e(_0x3102e0[_0x5267('0x7c')][_0x5267('0x63')]));}_0x3485ab=_0x3dcf73[_0x5267('0x7e')]();_0x3dcf73[_0x5267('0x1d')](_0x54b582);_0x3dcf73[_0x5267('0x1b')](0x0);logger[_0x5267('0x9e')]('Limited\x20Query:',_0x3dcf73[_0x5267('0x7f')]());return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x3dcf73[_0x5267('0x7f')](),{'type':dbH[_0x5267('0x80')][_0x5267('0x81')][_0x5267('0x9a')]});}})[_0x5267('0x25')](function(){return{'sql':_0x3485ab[_0x5267('0x7f')]()};})[_0x5267('0x25')](respondWithResult(_0x66da7a,null))[_0x5267('0x40')](handleError(_0x66da7a,null));};
\ No newline at end of file
+var _0x46ed=['SEC_TO_TIME(%s)','value','AnalyticMetric','select','DESC','output','fullPath','%s-%s.%s','randomstring','csv','default','AnalyticExtractedReport','cdr','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','child_process','../../files/reports','savename','countTable','COUNT(*)','sequelize','runReport','left_join','COUNT(%s)','MIN(%s)','AVG(%s)','Limited\x20Query:','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','DefaultReports','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','catch','params','find','create','body','user','Reports','UserProfileSection','userProfileId','autoAssociation','preview','join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','order','alias','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','toString','QueryTypes','SELECT'];(function(_0x4aeb44,_0x419730){var _0x1aa240=function(_0x113ba9){while(--_0x113ba9){_0x4aeb44['push'](_0x4aeb44['shift']());}};_0x1aa240(++_0x419730);}(_0x46ed,0x168));var _0xd46e=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x46ed[_0xa148b7];return _0x51efd3;};'use strict';var emlformat=require(_0xd46e('0x0'));var rimraf=require(_0xd46e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd46e('0x2'));var rp=require(_0xd46e('0x3'));var moment=require(_0xd46e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd46e('0x5'));var util=require(_0xd46e('0x6'));var path=require('path');var sox=require(_0xd46e('0x7'));var csv=require(_0xd46e('0x8'));var ejs=require(_0xd46e('0x9'));var fs=require('fs');var fs_extra=require(_0xd46e('0xa'));var _=require(_0xd46e('0xb'));var squel=require(_0xd46e('0xc'));var crypto=require(_0xd46e('0xd'));var jsforce=require(_0xd46e('0xe'));var deskjs=require(_0xd46e('0xf'));var toCsv=require(_0xd46e('0x8'));var querystring=require(_0xd46e('0x10'));var Papa=require('papaparse');var Redis=require(_0xd46e('0x11'));var authService=require(_0xd46e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd46e('0x13'));var hardwareService=require(_0xd46e('0x14'));var logger=require(_0xd46e('0x15'))(_0xd46e('0x16'));var utils=require(_0xd46e('0x17'));var config=require(_0xd46e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd46e('0x19'))['db'];var dbH=require('../../mysqldb')['dbH'];function respondWithStatusCode(_0xf3048c,_0x27dbfb){_0x27dbfb=_0x27dbfb||0xcc;return function(_0x53b309){if(_0x53b309){return _0xf3048c['sendStatus'](_0x27dbfb);}return _0xf3048c[_0xd46e('0x1a')](_0x27dbfb)[_0xd46e('0x1b')]();};}function respondWithResult(_0x1e9aae,_0x3fdf88){_0x3fdf88=_0x3fdf88||0xc8;return function(_0x50c7c3){if(_0x50c7c3){return _0x1e9aae[_0xd46e('0x1a')](_0x3fdf88)[_0xd46e('0x1c')](_0x50c7c3);}};}function respondWithFilteredResult(_0x417402,_0x3d72ce){return function(_0x36a317){if(_0x36a317){var _0x47fa8f=typeof _0x3d72ce[_0xd46e('0x1d')]===_0xd46e('0x1e')&&typeof _0x3d72ce[_0xd46e('0x1f')]==='undefined';var _0x5ddd04=_0x36a317[_0xd46e('0x20')];var _0x1bd574=_0x47fa8f?0x0:_0x3d72ce['offset'];var _0x4fd1f2=_0x47fa8f?_0x36a317[_0xd46e('0x20')]:_0x3d72ce[_0xd46e('0x1d')]+_0x3d72ce[_0xd46e('0x1f')];var _0x2273c5;if(_0x4fd1f2>=_0x5ddd04){_0x4fd1f2=_0x5ddd04;_0x2273c5=0xc8;}else{_0x2273c5=0xce;}_0x417402[_0xd46e('0x1a')](_0x2273c5);return _0x417402[_0xd46e('0x21')](_0xd46e('0x22'),_0x1bd574+'-'+_0x4fd1f2+'/'+_0x5ddd04)[_0xd46e('0x1c')](_0x36a317);}return null;};}function patchUpdates(_0xb4940){return function(_0x3c7e91){try{jsonpatch[_0xd46e('0x23')](_0x3c7e91,_0xb4940,!![]);}catch(_0x5ba94d){return BPromise[_0xd46e('0x24')](_0x5ba94d);}return _0x3c7e91[_0xd46e('0x25')]();};}function saveUpdates(_0x79aa51,_0x45ce0b){return function(_0x128246){if(_0x128246){return _0x128246[_0xd46e('0x26')](_0x79aa51)[_0xd46e('0x27')](function(_0x8a1be){return _0x8a1be;});}return null;};}function removeEntity(_0x62dea5,_0x4cf899){return function(_0x314570){if(_0x314570){return _0x314570['destroy']()['then'](function(){var _0x371054=_0x314570[_0xd46e('0x28')]({'plain':!![]});var _0x21135f=_0xd46e('0x29');return db[_0xd46e('0x2a')][_0xd46e('0x2b')]({'where':{'type':_0x21135f,'resourceId':_0x371054['id']}})[_0xd46e('0x27')](function(){return _0x314570;});})['then'](function(){_0x62dea5[_0xd46e('0x1a')](0xcc)[_0xd46e('0x1b')]();});}};}function handleEntityNotFound(_0xddbce9,_0x17db79){return function(_0x96f15c){if(!_0x96f15c){_0xddbce9[_0xd46e('0x2c')](0x194);}return _0x96f15c;};}function handleError(_0x58aeef,_0x465d54){_0x465d54=_0x465d54||0x1f4;return function(_0x3a1ced){logger[_0xd46e('0x2d')](_0x3a1ced[_0xd46e('0x2e')]);if(_0x3a1ced[_0xd46e('0x2f')]){delete _0x3a1ced[_0xd46e('0x2f')];}_0x58aeef[_0xd46e('0x1a')](_0x465d54)[_0xd46e('0x30')](_0x3a1ced);};}exports[_0xd46e('0x31')]=function(_0x45ea47,_0x2ff785){var _0x504324={},_0x2f4a1b={},_0x5ed8dc={'count':0x0,'rows':[]};var _0x1248ce=_[_0xd46e('0x32')](db[_0xd46e('0x33')][_0xd46e('0x34')],function(_0x5ef248){return{'name':_0x5ef248[_0xd46e('0x35')],'type':_0x5ef248[_0xd46e('0x36')]['key']};});_0x2f4a1b[_0xd46e('0x37')]=_[_0xd46e('0x32')](_0x1248ce,'name');_0x2f4a1b[_0xd46e('0x38')]=_[_0xd46e('0x39')](_0x45ea47[_0xd46e('0x38')]);_0x2f4a1b['filters']=_['intersection'](_0x2f4a1b[_0xd46e('0x37')],_0x2f4a1b[_0xd46e('0x38')]);_0x504324[_0xd46e('0x3a')]=_[_0xd46e('0x3b')](_0x2f4a1b[_0xd46e('0x37')],qs[_0xd46e('0x3c')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x3c')]));_0x504324['attributes']=_0x504324[_0xd46e('0x3a')][_0xd46e('0x3d')]?_0x504324[_0xd46e('0x3a')]:_0x2f4a1b[_0xd46e('0x37')];if(!_0x45ea47[_0xd46e('0x38')][_0xd46e('0x3e')](_0xd46e('0x3f'))){_0x504324['limit']=qs[_0xd46e('0x1f')](_0x45ea47[_0xd46e('0x38')]['limit']);_0x504324[_0xd46e('0x1d')]=qs[_0xd46e('0x1d')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x1d')]);}_0x504324['order']=qs[_0xd46e('0x40')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x40')]);_0x504324[_0xd46e('0x41')]=qs[_0xd46e('0x42')](_[_0xd46e('0x43')](_0x45ea47[_0xd46e('0x38')],_0x2f4a1b[_0xd46e('0x42')]),_0x1248ce);if(_0x45ea47['query'][_0xd46e('0x44')]){_0x504324[_0xd46e('0x41')]=_[_0xd46e('0x45')](_0x504324[_0xd46e('0x41')],{'$or':_[_0xd46e('0x32')](_0x1248ce,function(_0x56f99c){if(_0x56f99c[_0xd46e('0x36')]!=='VIRTUAL'){var _0x55230d={};_0x55230d[_0x56f99c['name']]={'$like':'%'+_0x45ea47['query'][_0xd46e('0x44')]+'%'};return _0x55230d;}})});}_0x504324=_['merge']({},_0x504324,_0x45ea47[_0xd46e('0x46')]);var _0x40720e={'where':_0x504324['where']};return db[_0xd46e('0x33')][_0xd46e('0x20')](_0x40720e)[_0xd46e('0x27')](function(_0x31ba12){_0x5ed8dc[_0xd46e('0x20')]=_0x31ba12;if(_0x45ea47[_0xd46e('0x38')][_0xd46e('0x47')]){_0x504324[_0xd46e('0x48')]=[{'all':!![]}];}return db[_0xd46e('0x33')][_0xd46e('0x49')](_0x504324);})[_0xd46e('0x27')](function(_0x5ea048){_0x5ed8dc['rows']=_0x5ea048;return _0x5ed8dc;})['then'](respondWithFilteredResult(_0x2ff785,_0x504324))[_0xd46e('0x4a')](handleError(_0x2ff785,null));};exports['show']=function(_0x168d35,_0x272f5f){var _0x3fdf67={'raw':!![],'where':{'id':_0x168d35[_0xd46e('0x4b')]['id']}},_0x416505={};_0x416505[_0xd46e('0x37')]=_[_0xd46e('0x39')](db[_0xd46e('0x33')]['rawAttributes']);_0x416505[_0xd46e('0x38')]=_['keys'](_0x168d35[_0xd46e('0x38')]);_0x416505[_0xd46e('0x42')]=_[_0xd46e('0x3b')](_0x416505[_0xd46e('0x37')],_0x416505[_0xd46e('0x38')]);_0x3fdf67['attributes']=_[_0xd46e('0x3b')](_0x416505[_0xd46e('0x37')],qs[_0xd46e('0x3c')](_0x168d35[_0xd46e('0x38')][_0xd46e('0x3c')]));_0x3fdf67['attributes']=_0x3fdf67[_0xd46e('0x3a')][_0xd46e('0x3d')]?_0x3fdf67[_0xd46e('0x3a')]:_0x416505[_0xd46e('0x37')];if(_0x168d35[_0xd46e('0x38')]['includeAll']){_0x3fdf67[_0xd46e('0x48')]=[{'all':!![]}];}_0x3fdf67=_[_0xd46e('0x45')]({},_0x3fdf67,_0x168d35[_0xd46e('0x46')]);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0x3fdf67)[_0xd46e('0x27')](handleEntityNotFound(_0x272f5f,null))[_0xd46e('0x27')](respondWithResult(_0x272f5f,null))[_0xd46e('0x4a')](handleError(_0x272f5f,null));};exports['create']=function(_0xf9dab,_0x71a8dc){return db[_0xd46e('0x33')][_0xd46e('0x4d')](_0xf9dab[_0xd46e('0x4e')],{})['then'](function(_0x4ae314){var _0x3a94cf=_0xf9dab[_0xd46e('0x4f')][_0xd46e('0x28')]({'plain':!![]});if(!_0x3a94cf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a94cf['role']===_0xd46e('0x4f')){var _0x9d8638=_0x4ae314['get']({'plain':!![]});var _0x2eee92=_0xd46e('0x50');return db[_0xd46e('0x51')][_0xd46e('0x4c')]({'where':{'name':_0x2eee92,'userProfileId':_0x3a94cf[_0xd46e('0x52')]},'raw':!![]})[_0xd46e('0x27')](function(_0x80ed51){if(_0x80ed51&&_0x80ed51[_0xd46e('0x53')]===0x0){return db['UserProfileResource'][_0xd46e('0x4d')]({'name':_0x9d8638[_0xd46e('0x2f')],'resourceId':_0x9d8638['id'],'type':_0xd46e('0x29'),'sectionId':_0x80ed51['id']},{})[_0xd46e('0x27')](function(){return _0x4ae314;});}else{return _0x4ae314;}})['catch'](function(_0x56dd9a){logger[_0xd46e('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x56dd9a);throw _0x56dd9a;});}return _0x4ae314;})[_0xd46e('0x27')](respondWithResult(_0x71a8dc,0xc9))[_0xd46e('0x4a')](handleError(_0x71a8dc,null));};exports[_0xd46e('0x26')]=function(_0x31f7eb,_0x5a7870){if(_0x31f7eb[_0xd46e('0x4e')]['id']){delete _0x31f7eb['body']['id'];}return db[_0xd46e('0x33')][_0xd46e('0x4c')]({'where':{'id':_0x31f7eb[_0xd46e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5a7870,null))[_0xd46e('0x27')](saveUpdates(_0x31f7eb[_0xd46e('0x4e')],null))[_0xd46e('0x27')](respondWithResult(_0x5a7870,null))[_0xd46e('0x4a')](handleError(_0x5a7870,null));};exports[_0xd46e('0x2b')]=function(_0x2cc676,_0x2760ef){return db[_0xd46e('0x33')][_0xd46e('0x4c')]({'where':{'id':_0x2cc676[_0xd46e('0x4b')]['id']}})[_0xd46e('0x27')](handleEntityNotFound(_0x2760ef,null))[_0xd46e('0x27')](removeEntity(_0x2760ef,null))[_0xd46e('0x4a')](handleError(_0x2760ef,null));};exports[_0xd46e('0x54')]=function(_0x47a86c,_0x3ec709){var _0x37a22f=0xa;var _0xe0cd61=[_0xd46e('0x55'),'left_join',_0xd46e('0x56'),_0xd46e('0x57')];var _0xaf9641={'SUM':_0xd46e('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':_0xd46e('0x5c'),'GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x481dce={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':_0xd46e('0x61')};var _0x2dacb4=function(_0x2f9fcb){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),_0xd46e('0x64'),_0xd46e('0x65'),_0xd46e('0x66')],_0x2f9fcb);};var _0x1aaa99=function(_0x272514){if(!_0x272514||!_0x272514[_0xd46e('0x67')][_0xd46e('0x3d')]){return'';}for(var _0x476f09='(',_0x5067b7=0x0;_0x5067b7<_0x272514[_0xd46e('0x67')][_0xd46e('0x3d')];_0x5067b7+=0x1){_0x5067b7>0x0&&(_0x476f09+='\x20'+_0x272514[_0xd46e('0x68')]+'\x20');_0x476f09+=_0x272514['rules'][_0x5067b7][_0xd46e('0x69')]?_0x1aaa99(_0x272514[_0xd46e('0x67')][_0x5067b7]['group']):_0x272514[_0xd46e('0x67')][_0x5067b7][_0xd46e('0x6a')]+'\x20'+_0x272514[_0xd46e('0x67')][_0x5067b7]['condition']+(_0x2dacb4(_0x272514[_0xd46e('0x67')][_0x5067b7][_0xd46e('0x6b')])?'\x20'+_0x272514[_0xd46e('0x67')][_0x5067b7]['value']:'');}return _0x476f09+')';};var _0xe5f8cd={'where':{'id':_0x47a86c[_0xd46e('0x4b')]['id']}},_0x516e7d,_0x32eed0,_0x148187,_0x35db1b,_0x4f3ba0;_0xe5f8cd=_[_0xd46e('0x45')]({},_0xe5f8cd,_0x47a86c[_0xd46e('0x46')]);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0xe5f8cd)[_0xd46e('0x27')](function(_0x16f906){if(_0x16f906){_0x516e7d=_0x16f906;return _0x16f906[_0xd46e('0x6c')]();}return null;})[_0xd46e('0x27')](function(_0x3e55a3){if(_0x3e55a3){if(!_0x3e55a3[_0xd46e('0x3d')]){throw new db[(_0xd46e('0x6d'))][(_0xd46e('0x6e'))](_0xd46e('0x6f'),0x193);}_0x32eed0=_0x3e55a3;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0xd46e('0x27')](function(_0x3e0ed5){if(_0x3e0ed5){_0x148187=_[_0xd46e('0x70')](_0x3e0ed5,'id');var _0x2fff69;var _0x249938=squel['select']();_0x249938[_0xd46e('0x71')](_0x516e7d[_0xd46e('0x72')]);for(var _0xfb4073=0x0;_0xfb4073<_0x32eed0[_0xd46e('0x3d')];_0xfb4073+=0x1){_0x2fff69=_0x32eed0[_0xfb4073]['MetricId']?_0x148187[_0x32eed0[_0xfb4073][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x32eed0[_0xfb4073]['field'];_0x2fff69=_0x32eed0[_0xfb4073][_0xd46e('0x75')]?_[_0xd46e('0x76')](_0xaf9641[_0x32eed0[_0xfb4073]['function']],'%s',_0x2fff69):_0x2fff69;_0x2fff69=_0x32eed0[_0xfb4073][_0xd46e('0x77')]?_[_0xd46e('0x76')](_0x481dce[_0x32eed0[_0xfb4073]['format']],'%s',_0x2fff69):_0x2fff69;if(_0x32eed0[_0xfb4073][_0xd46e('0x78')]){_0x249938['group'](_0x2fff69);}_0x32eed0[_0xfb4073][_0xd46e('0x79')]&&_0x249938[_0xd46e('0x7a')](_0x2fff69,_0x32eed0[_0xfb4073]['orderBy']==='DESC'?![]:!![]);_0x249938[_0xd46e('0x6a')](_0x2fff69,_0x32eed0[_0xfb4073][_0xd46e('0x7b')]||_0x2fff69);}if(_0x516e7d[_0xd46e('0x7c')]){_0x516e7d[_0xd46e('0x7c')]=JSON['parse'](_0x516e7d[_0xd46e('0x7c')]);for(var _0x372509=0x0;_0x372509<_0x516e7d['joins'][_0xd46e('0x3d')];_0x372509+=0x1){if(_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0xe0cd61,_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x36')])&&_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7d')]&&_0x516e7d[_0xd46e('0x7c')][_0x372509]['foreignTable']&&_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7e')]){_0x249938[_0x516e7d['joins'][_0x372509][_0xd46e('0x36')]](_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7f')],null,util[_0xd46e('0x77')](_0xd46e('0x80'),_0x516e7d[_0xd46e('0x72')],_0x516e7d['joins'][_0x372509]['parentKey'],_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7f')],_0x516e7d['joins'][_0x372509]['foreignKey']));}}}if(_0x516e7d['conditions']){_0x516e7d[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0x516e7d[_0xd46e('0x81')]);_0x249938['where'](_0x1aaa99(_0x516e7d[_0xd46e('0x81')][_0xd46e('0x69')]));}_0x4f3ba0=_0x249938[_0xd46e('0x83')]();_0x249938['limit'](_0x37a22f);_0x249938['offset'](0x0);logger['debug']('Limited\x20Query:',_0x249938[_0xd46e('0x84')]());return dbH['sequelize'][_0xd46e('0x38')](_0x249938['toString'](),{'type':dbH['sequelize'][_0xd46e('0x85')][_0xd46e('0x86')]});}})[_0xd46e('0x27')](respondWithResult(_0x3ec709,null))[_0xd46e('0x4a')](handleError(_0x3ec709,null));};function runReport(_0xf16d87,_0x99872a,_0x57a7cc){var _0x586024=_0x99872a[_0xd46e('0x2f')];var _0x383919=0xa;var _0x114f2c=[_0xd46e('0x55'),'left_join',_0xd46e('0x56'),_0xd46e('0x57')];var _0x4ca21f={'SUM':_0xd46e('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':_0xd46e('0x5c'),'GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x5ef4cc={'SEC_TO_TIME':_0xd46e('0x87'),'DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':_0xd46e('0x61')};var _0x88460a=function(_0x3a3744){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),_0xd46e('0x64'),_0xd46e('0x65'),_0xd46e('0x66')],_0x3a3744);};var _0x3c476d=function(_0x1b2a6d){if(!_0x1b2a6d||!_0x1b2a6d[_0xd46e('0x67')][_0xd46e('0x3d')]){return'';}for(var _0x441f73='(',_0x1d2738=0x0;_0x1d2738<_0x1b2a6d['rules'][_0xd46e('0x3d')];_0x1d2738+=0x1){_0x1d2738>0x0&&(_0x441f73+='\x20'+_0x1b2a6d['operator']+'\x20');_0x441f73+=_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x69')]?_0x3c476d(_0x1b2a6d['rules'][_0x1d2738][_0xd46e('0x69')]):_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6a')]+'\x20'+_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6b')]+(_0x88460a(_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6b')])?'\x20'+_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x88')]:'');}return _0x441f73+')';};var _0x3fa34d={'where':{'id':_0xf16d87['id']}},_0xc098c9,_0x5f5ba7,_0x493df5,_0x18e140,_0x459a0c;_0x3fa34d=_[_0xd46e('0x45')]({},_0x3fa34d,_0x57a7cc);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0x3fa34d)[_0xd46e('0x27')](function(_0x5b554e){if(_0x5b554e){_0xc098c9=_0x5b554e;return _0x5b554e[_0xd46e('0x6c')]();}return null;})[_0xd46e('0x27')](function(_0xa254f5){if(_0xa254f5){if(!_0xa254f5[_0xd46e('0x3d')]){throw new db[(_0xd46e('0x6d'))][(_0xd46e('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x5f5ba7=_0xa254f5;return db[_0xd46e('0x89')][_0xd46e('0x49')]({'raw':!![]});}return null;})['then'](function(_0x3c8d68){if(_0x3c8d68){_0x493df5=_[_0xd46e('0x70')](_0x3c8d68,'id');var _0x9e222d;var _0x3da17e=squel[_0xd46e('0x8a')]();_0x3da17e[_0xd46e('0x71')](_0xc098c9[_0xd46e('0x72')]);for(var _0x282f71=0x0;_0x282f71<_0x5f5ba7[_0xd46e('0x3d')];_0x282f71+=0x1){_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x73')]?_0x493df5[_0x5f5ba7[_0x282f71][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x5f5ba7[_0x282f71][_0xd46e('0x6a')];_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x75')]?_['replace'](_0x4ca21f[_0x5f5ba7[_0x282f71]['function']],'%s',_0x9e222d):_0x9e222d;_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x77')]?_[_0xd46e('0x76')](_0x5ef4cc[_0x5f5ba7[_0x282f71][_0xd46e('0x77')]],'%s',_0x9e222d):_0x9e222d;if(_0x5f5ba7[_0x282f71][_0xd46e('0x78')]){_0x3da17e[_0xd46e('0x69')](_0x9e222d);}_0x5f5ba7[_0x282f71][_0xd46e('0x79')]&&_0x3da17e['order'](_0x9e222d,_0x5f5ba7[_0x282f71][_0xd46e('0x79')]===_0xd46e('0x8b')?![]:!![]);_0x3da17e[_0xd46e('0x6a')](_0x9e222d,_0x5f5ba7[_0x282f71][_0xd46e('0x7b')]||_0x9e222d);}if(_0xc098c9['joins']){_0xc098c9[_0xd46e('0x7c')]=JSON[_0xd46e('0x82')](_0xc098c9['joins']);for(var _0xdf967c=0x0;_0xdf967c<_0xc098c9['joins']['length'];_0xdf967c+=0x1){if(_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0x114f2c,_0xc098c9[_0xd46e('0x7c')][_0xdf967c]['type'])&&_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7d')]&&_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7f')]&&_0xc098c9['joins'][_0xdf967c]['foreignKey']){_0x3da17e[_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x36')]](_0xc098c9['joins'][_0xdf967c]['foreignTable'],null,util[_0xd46e('0x77')](_0xd46e('0x80'),_0xc098c9[_0xd46e('0x72')],_0xc098c9[_0xd46e('0x7c')][_0xdf967c]['parentKey'],_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x7f')],_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7e')]));}}}if(_0xc098c9[_0xd46e('0x81')]){_0xc098c9[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0xc098c9[_0xd46e('0x81')]);_0x3da17e[_0xd46e('0x41')](_0x3c476d(_0xc098c9['conditions'][_0xd46e('0x69')]));}_0x459a0c=_0x3da17e[_0xd46e('0x83')]();_0x3da17e['limit'](_0x383919);_0x3da17e['offset'](0x0);return;}})[_0xd46e('0x27')](function(){if(_0x99872a[_0xd46e('0x8c')]==='web'){return null;}var _0x5e637d=_[_0xd46e('0x45')](_0x99872a,{'name':_0x99872a[_0xd46e('0x8d')]||_0x99872a['name']||_0xc098c9[_0xd46e('0x2f')],'basename':_0x586024,'savename':util[_0xd46e('0x77')](_0xd46e('0x8e'),_0x99872a[_0xd46e('0x2f')]||_0xc098c9[_0xd46e('0x2f')],require(_0xd46e('0x8f'))['generate'](0x4),_0x99872a[_0xd46e('0x8c')]||_0xd46e('0x90')),'reportId':_0xc098c9['id'],'reportType':_0xd46e('0x91')});return db[_0xd46e('0x92')][_0xd46e('0x4d')](_0x5e637d,{'raw':!![]});})[_0xd46e('0x27')](function(_0x3311a6){if(_0xc098c9[_0xd46e('0x72')]===_0xd46e('0x93')){_0x459a0c[_0xd46e('0x41')](_0xc098c9[_0xd46e('0x72')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x99872a[_0xd46e('0x94')],_0x99872a['endDate']);}else{_0x459a0c['where'](_0xc098c9[_0xd46e('0x72')]+_0xd46e('0x95'),_0x99872a[_0xd46e('0x94')],_0x99872a[_0xd46e('0x96')]);}if(_0x3311a6){logger[_0xd46e('0x97')](_0xd46e('0x98'),_0x459a0c[_0xd46e('0x84')]());require(_0xd46e('0x99'))['fork'](path[_0xd46e('0x55')](__dirname,'../../components/export/',_0x3311a6[_0xd46e('0x8c')]),[_0x3311a6['id'],_0x459a0c[_0xd46e('0x84')](),path[_0xd46e('0x55')](__dirname,_0xd46e('0x9a'),_0x3311a6[_0xd46e('0x9b')]),_0x586024]);return _0x3311a6;}else{var _0x399918=squel[_0xd46e('0x8a')]();_0x399918[_0xd46e('0x71')]('('+_0x459a0c['toString']()+')',_0xd46e('0x9c'));_0x399918[_0xd46e('0x6a')](_0xd46e('0x9d'),'count');_0x459a0c[_0xd46e('0x1f')](_0x99872a[_0xd46e('0x1f')]||_0x383919);_0x459a0c[_0xd46e('0x1d')](_0x99872a['offset']||0x0);return dbH[_0xd46e('0x9e')][_0xd46e('0x38')](_0x399918[_0xd46e('0x84')](),{'type':dbH[_0xd46e('0x9e')][_0xd46e('0x85')][_0xd46e('0x86')]})['then'](function(_0x4967ff){if(!_0x4967ff[_0xd46e('0x3d')]){_0x18e140=0x0;}else{_0x18e140=_0x4967ff[0x0][_0xd46e('0x20')]||0x0;}return dbH['sequelize'][_0xd46e('0x38')](_0x459a0c[_0xd46e('0x84')](),{'type':dbH[_0xd46e('0x9e')][_0xd46e('0x85')][_0xd46e('0x86')]});})[_0xd46e('0x27')](function(_0x4bb76b){return{'rows':_0x4bb76b||[],'count':_0x18e140};});}});}exports['run']=function(_0x204a9f,_0x52ca5a){return runReport(_0x204a9f[_0xd46e('0x4b')],_0x204a9f[_0xd46e('0x38')],_0x204a9f['options'])[_0xd46e('0x27')](respondWithResult(_0x52ca5a,null))[_0xd46e('0x4a')](handleError(_0x52ca5a,null));};exports[_0xd46e('0x9f')]=runReport;exports[_0xd46e('0x38')]=function(_0x786ae,_0x537c73){var _0x1610bd=0xa;var _0x20cc4c=[_0xd46e('0x55'),_0xd46e('0xa0'),_0xd46e('0x56'),_0xd46e('0x57')];var _0x368742={'SUM':_0xd46e('0x58'),'COUNT':_0xd46e('0xa1'),'COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':_0xd46e('0xa2'),'AVG':_0xd46e('0xa3'),'GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x285cf8={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xc87da2=function(_0x195f02){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),'IS\x20NOT\x20NULL',_0xd46e('0x65'),_0xd46e('0x66')],_0x195f02);};var _0x44322f=function(_0x49959f){if(!_0x49959f||!_0x49959f['rules'][_0xd46e('0x3d')]){return'';}for(var _0x2094e5='(',_0x85aac1=0x0;_0x85aac1<_0x49959f[_0xd46e('0x67')][_0xd46e('0x3d')];_0x85aac1+=0x1){_0x85aac1>0x0&&(_0x2094e5+='\x20'+_0x49959f[_0xd46e('0x68')]+'\x20');_0x2094e5+=_0x49959f['rules'][_0x85aac1][_0xd46e('0x69')]?_0x44322f(_0x49959f['rules'][_0x85aac1][_0xd46e('0x69')]):_0x49959f['rules'][_0x85aac1][_0xd46e('0x6a')]+'\x20'+_0x49959f['rules'][_0x85aac1]['condition']+(_0xc87da2(_0x49959f[_0xd46e('0x67')][_0x85aac1][_0xd46e('0x6b')])?'\x20'+_0x49959f[_0xd46e('0x67')][_0x85aac1][_0xd46e('0x88')]:'');}return _0x2094e5+')';};var _0x101a29={'where':{'id':_0x786ae[_0xd46e('0x4b')]['id']}},_0x3a44da,_0x417068,_0x52e73e,_0x206077,_0xe729b6;_0x101a29=_[_0xd46e('0x45')]({},_0x101a29,_0x786ae[_0xd46e('0x46')]);return db['AnalyticDefaultReport'][_0xd46e('0x4c')](_0x101a29)[_0xd46e('0x27')](function(_0x1d08bb){if(_0x1d08bb){_0x3a44da=_0x1d08bb;return _0x1d08bb['getFields']();}return null;})[_0xd46e('0x27')](function(_0x8c6ed1){if(_0x8c6ed1){if(!_0x8c6ed1['length']){throw new db['Sequelize']['ValidationErrorItem'](_0xd46e('0x6f'),0x193);}_0x417068=_0x8c6ed1;return db[_0xd46e('0x89')]['findAll']({'raw':!![]});}return null;})[_0xd46e('0x27')](function(_0x3a13f8){if(_0x3a13f8){_0x52e73e=_['keyBy'](_0x3a13f8,'id');var _0x5a8661;var _0x157fb0=squel[_0xd46e('0x8a')]();_0x157fb0[_0xd46e('0x71')](_0x3a44da[_0xd46e('0x72')]);for(var _0x50750f=0x0;_0x50750f<_0x417068['length'];_0x50750f+=0x1){_0x5a8661=_0x417068[_0x50750f][_0xd46e('0x73')]?_0x52e73e[_0x417068[_0x50750f][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x417068[_0x50750f][_0xd46e('0x6a')];_0x5a8661=_0x417068[_0x50750f][_0xd46e('0x75')]?_[_0xd46e('0x76')](_0x368742[_0x417068[_0x50750f][_0xd46e('0x75')]],'%s',_0x5a8661):_0x5a8661;_0x5a8661=_0x417068[_0x50750f]['format']?_[_0xd46e('0x76')](_0x285cf8[_0x417068[_0x50750f][_0xd46e('0x77')]],'%s',_0x5a8661):_0x5a8661;if(_0x417068[_0x50750f]['groupBy']){_0x157fb0[_0xd46e('0x69')](_0x5a8661);}_0x417068[_0x50750f][_0xd46e('0x79')]&&_0x157fb0[_0xd46e('0x7a')](_0x5a8661,_0x417068[_0x50750f][_0xd46e('0x79')]===_0xd46e('0x8b')?![]:!![]);_0x157fb0[_0xd46e('0x6a')](_0x5a8661,_0x417068[_0x50750f][_0xd46e('0x7b')]||_0x5a8661);}if(_0x3a44da[_0xd46e('0x7c')]){_0x3a44da['joins']=JSON[_0xd46e('0x82')](_0x3a44da[_0xd46e('0x7c')]);for(var _0x3c819b=0x0;_0x3c819b<_0x3a44da[_0xd46e('0x7c')][_0xd46e('0x3d')];_0x3c819b+=0x1){if(_0x3a44da['joins'][_0x3c819b][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0x20cc4c,_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x36')])&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7d')]&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')]&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b]['foreignKey']){_0x157fb0[_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x36')]](_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3a44da[_0xd46e('0x72')],_0x3a44da['joins'][_0x3c819b][_0xd46e('0x7d')],_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')],_0x3a44da[_0xd46e('0x7c')][_0x3c819b]['foreignKey']));}}}if(_0x3a44da[_0xd46e('0x81')]){_0x3a44da[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0x3a44da[_0xd46e('0x81')]);_0x157fb0[_0xd46e('0x41')](_0x44322f(_0x3a44da[_0xd46e('0x81')][_0xd46e('0x69')]));}_0xe729b6=_0x157fb0[_0xd46e('0x83')]();_0x157fb0[_0xd46e('0x1f')](_0x1610bd);_0x157fb0['offset'](0x0);logger['debug'](_0xd46e('0xa4'),_0x157fb0['toString']());return dbH[_0xd46e('0x9e')][_0xd46e('0x38')](_0x157fb0[_0xd46e('0x84')](),{'type':dbH['sequelize'][_0xd46e('0x85')][_0xd46e('0x86')]});}})[_0xd46e('0x27')](function(){return{'sql':_0xe729b6['toString']()};})['then'](respondWithResult(_0x537c73,null))[_0xd46e('0x4a')](handleError(_0x537c73,null));};
\ No newline at end of file
index 7f9bd69..db6d55b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3e2=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','AnalyticDefaultReport','analytics_default_reports','lodash'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0xd3e2,0x196));var _0x2d3e=function(_0x4475ad,_0x322373){_0x4475ad=_0x4475ad-0x0;var _0x414539=_0xd3e2[_0x4475ad];return _0x414539;};'use strict';var _=require(_0x2d3e('0x0'));var util=require(_0x2d3e('0x1'));var logger=require(_0x2d3e('0x2'))(_0x2d3e('0x3'));var moment=require(_0x2d3e('0x4'));var BPromise=require(_0x2d3e('0x5'));var rp=require(_0x2d3e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2d3e('0x7'));var config=require(_0x2d3e('0x8'));var attributes=require('./analyticDefaultReport.attributes');module['exports']=function(_0x5aa4c5,_0x3e5642){return _0x5aa4c5['define'](_0x2d3e('0x9'),attributes,{'tableName':_0x2d3e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x84bc=['exports','define','AnalyticDefaultReport','analytics_default_reports','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./analyticDefaultReport.attributes'];(function(_0x32b5db,_0x1a83a4){var _0x203c46=function(_0x568371){while(--_0x568371){_0x32b5db['push'](_0x32b5db['shift']());}};_0x203c46(++_0x1a83a4);}(_0x84bc,0x64));var _0xc84b=function(_0x5771d1,_0x38b898){_0x5771d1=_0x5771d1-0x0;var _0x40a3cc=_0x84bc[_0x5771d1];return _0x40a3cc;};'use strict';var _=require(_0xc84b('0x0'));var util=require('util');var logger=require(_0xc84b('0x1'))(_0xc84b('0x2'));var moment=require(_0xc84b('0x3'));var BPromise=require(_0xc84b('0x4'));var rp=require(_0xc84b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc84b('0x6'));var attributes=require(_0xc84b('0x7'));module[_0xc84b('0x8')]=function(_0x7d2ce0,_0x3e61f1){return _0x7d2ce0[_0xc84b('0x9')](_0xc84b('0xa'),attributes,{'tableName':_0xc84b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c9a4799..a9ffcc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x058f=['then','info','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','AnalyticDefaultReport,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x1d3026,_0x4960f3){var _0x2777c6=function(_0x540052){while(--_0x540052){_0x1d3026['push'](_0x1d3026['shift']());}};_0x2777c6(++_0x4960f3);}(_0x058f,0x1ee));var _0xf058=function(_0x25cef5,_0x495238){_0x25cef5=_0x25cef5-0x0;var _0x2ae4a4=_0x058f[_0x25cef5];return _0x2ae4a4;};'use strict';var _=require(_0xf058('0x0'));var util=require('util');var moment=require(_0xf058('0x1'));var BPromise=require(_0xf058('0x2'));var rs=require(_0xf058('0x3'));var fs=require('fs');var Redis=require(_0xf058('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf058('0x5'));var logger=require(_0xf058('0x6'))(_0xf058('0x7'));var config=require(_0xf058('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf058('0x9')][_0xf058('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x30f253,_0x218227,_0x35b488){return new BPromise(function(_0x4893c0,_0x1961ad){return client[_0xf058('0xb')](_0x30f253,_0x35b488)[_0xf058('0xc')](function(_0x4b4ae1){logger[_0xf058('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x218227,'request\x20sent');logger[_0xf058('0xe')](_0xf058('0xf'),_0x218227,_0xf058('0x10'),JSON[_0xf058('0x11')](_0x4b4ae1));if(_0x4b4ae1[_0xf058('0x12')]){if(_0x4b4ae1[_0xf058('0x12')]['code']===0x1f4){logger[_0xf058('0x12')](_0xf058('0x13'),_0x218227,_0x4b4ae1[_0xf058('0x12')][_0xf058('0x14')]);return _0x1961ad(_0x4b4ae1['error'][_0xf058('0x14')]);}logger[_0xf058('0x12')](_0xf058('0x13'),_0x218227,_0x4b4ae1[_0xf058('0x12')]['message']);return _0x4893c0(_0x4b4ae1[_0xf058('0x12')][_0xf058('0x14')]);}else{logger['info'](_0xf058('0x13'),_0x218227,'request\x20sent');_0x4893c0(_0x4b4ae1['result'][_0xf058('0x14')]);}})[_0xf058('0x15')](function(_0x33e9bb){logger[_0xf058('0x12')](_0xf058('0x13'),_0x218227,_0x33e9bb);_0x1961ad(_0x33e9bb);});});}
\ No newline at end of file
+var _0xbe17=['stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x54d4fe,_0x55e869){var _0x1ab5bb=function(_0x5b1af2){while(--_0x5b1af2){_0x54d4fe['push'](_0x54d4fe['shift']());}};_0x1ab5bb(++_0x55e869);}(_0xbe17,0xc6));var _0x7be1=function(_0x157275,_0x19800d){_0x157275=_0x157275-0x0;var _0x3a22c1=_0xbe17[_0x157275];return _0x3a22c1;};'use strict';var _=require(_0x7be1('0x0'));var util=require(_0x7be1('0x1'));var moment=require('moment');var BPromise=require(_0x7be1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7be1('0x3'));var db=require(_0x7be1('0x4'))['db'];var utils=require(_0x7be1('0x5'));var logger=require(_0x7be1('0x6'))('rpc');var config=require(_0x7be1('0x7'));var jayson=require(_0x7be1('0x8'));var client=jayson[_0x7be1('0x9')][_0x7be1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ccdb5,_0x188182,_0x471223){return new BPromise(function(_0x4130f5,_0x5671a0){return client[_0x7be1('0xb')](_0x1ccdb5,_0x471223)[_0x7be1('0xc')](function(_0x4da164){logger[_0x7be1('0xd')](_0x7be1('0xe'),_0x188182,'request\x20sent');logger[_0x7be1('0xf')](_0x7be1('0x10'),_0x188182,_0x7be1('0x11'),JSON[_0x7be1('0x12')](_0x4da164));if(_0x4da164[_0x7be1('0x13')]){if(_0x4da164[_0x7be1('0x13')][_0x7be1('0x14')]===0x1f4){logger[_0x7be1('0x13')](_0x7be1('0xe'),_0x188182,_0x4da164['error']['message']);return _0x5671a0(_0x4da164['error'][_0x7be1('0x15')]);}logger[_0x7be1('0x13')](_0x7be1('0xe'),_0x188182,_0x4da164[_0x7be1('0x13')][_0x7be1('0x15')]);return _0x4130f5(_0x4da164['error'][_0x7be1('0x15')]);}else{logger[_0x7be1('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x188182,_0x7be1('0x11'));_0x4130f5(_0x4da164[_0x7be1('0x16')][_0x7be1('0x15')]);}})[_0x7be1('0x17')](function(_0x5ca88d){logger[_0x7be1('0x13')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x188182,_0x5ca88d);_0x5671a0(_0x5ca88d);});});}
\ No newline at end of file
index 6de040d..2254c36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6e9=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticDefaultReport.controller','get','index','/:id','isAuthenticated','show','/:id/preview','preview','/:id/run','run','query','post','create','update','delete','exports','multer'];(function(_0x19a4ac,_0x5d763d){var _0x8f3876=function(_0x26047d){while(--_0x26047d){_0x19a4ac['push'](_0x19a4ac['shift']());}};_0x8f3876(++_0x5d763d);}(_0xf6e9,0x137));var _0x9f6e=function(_0x347e8a,_0x2921ad){_0x347e8a=_0x347e8a-0x0;var _0x2d2354=_0xf6e9[_0x347e8a];return _0x2d2354;};'use strict';var multer=require(_0x9f6e('0x0'));var util=require('util');var path=require(_0x9f6e('0x1'));var timeout=require(_0x9f6e('0x2'));var express=require(_0x9f6e('0x3'));var router=express[_0x9f6e('0x4')]();var fs_extra=require(_0x9f6e('0x5'));var auth=require(_0x9f6e('0x6'));var interaction=require(_0x9f6e('0x7'));var config=require('../../config/environment');var controller=require(_0x9f6e('0x8'));router[_0x9f6e('0x9')]('/',auth['isAuthenticated'](),controller[_0x9f6e('0xa')]);router[_0x9f6e('0x9')](_0x9f6e('0xb'),auth[_0x9f6e('0xc')](),controller[_0x9f6e('0xd')]);router[_0x9f6e('0x9')](_0x9f6e('0xe'),auth[_0x9f6e('0xc')](),controller[_0x9f6e('0xf')]);router[_0x9f6e('0x9')](_0x9f6e('0x10'),auth['isAuthenticated'](),controller[_0x9f6e('0x11')]);router[_0x9f6e('0x9')]('/:id/query',auth['isAuthenticated'](),controller[_0x9f6e('0x12')]);router[_0x9f6e('0x13')]('/',auth[_0x9f6e('0xc')](),controller[_0x9f6e('0x14')]);router['put'](_0x9f6e('0xb'),auth[_0x9f6e('0xc')](),controller[_0x9f6e('0x15')]);router[_0x9f6e('0x16')]('/:id',auth[_0x9f6e('0xc')](),controller['destroy']);module[_0x9f6e('0x17')]=router;
\ No newline at end of file
+var _0x4af3=['./analyticDefaultReport.controller','get','isAuthenticated','/:id','show','/:id/preview','preview','run','query','post','create','put','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x53f69f,_0xecc70a){var _0x1c3d44=function(_0x260b74){while(--_0x260b74){_0x53f69f['push'](_0x53f69f['shift']());}};_0x1c3d44(++_0xecc70a);}(_0x4af3,0x118));var _0x34af=function(_0xf38ca5,_0x31986f){_0xf38ca5=_0xf38ca5-0x0;var _0x2c07c7=_0x4af3[_0xf38ca5];return _0x2c07c7;};'use strict';var multer=require('multer');var util=require(_0x34af('0x0'));var path=require(_0x34af('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x34af('0x2'));var auth=require(_0x34af('0x3'));var interaction=require(_0x34af('0x4'));var config=require(_0x34af('0x5'));var controller=require(_0x34af('0x6'));router[_0x34af('0x7')]('/',auth[_0x34af('0x8')](),controller['index']);router[_0x34af('0x7')](_0x34af('0x9'),auth[_0x34af('0x8')](),controller[_0x34af('0xa')]);router['get'](_0x34af('0xb'),auth[_0x34af('0x8')](),controller[_0x34af('0xc')]);router['get']('/:id/run',auth[_0x34af('0x8')](),controller[_0x34af('0xd')]);router[_0x34af('0x7')]('/:id/query',auth[_0x34af('0x8')](),controller[_0x34af('0xe')]);router[_0x34af('0xf')]('/',auth[_0x34af('0x8')](),controller[_0x34af('0x10')]);router[_0x34af('0x11')](_0x34af('0x9'),auth['isAuthenticated'](),controller[_0x34af('0x12')]);router[_0x34af('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x34af('0x14')]);module[_0x34af('0x15')]=router;
\ No newline at end of file
index 1ca1118..c9f2bb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dc1=['moment','exports','STRING','ENUM','csv','pdf','xlsx','DATE','Loading','manual','scheduled','INTEGER','UNSIGNED','sequelize'];(function(_0x2325fe,_0x49c18a){var _0x2955cf=function(_0x2d3600){while(--_0x2d3600){_0x2325fe['push'](_0x2325fe['shift']());}};_0x2955cf(++_0x49c18a);}(_0x2dc1,0x7d));var _0x12dc=function(_0x5ce850,_0x28bfe5){_0x5ce850=_0x5ce850-0x0;var _0x12753a=_0x2dc1[_0x5ce850];return _0x12753a;};'use strict';var Sequelize=require(_0x12dc('0x0'));var moment=require(_0x12dc('0x1'));module[_0x12dc('0x2')]={'name':{'type':Sequelize[_0x12dc('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x12dc('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x12dc('0x4')](_0x12dc('0x5'),_0x12dc('0x6'),_0x12dc('0x7')),'allowNull':![],'defaultValue':_0x12dc('0x5')},'savename':{'type':Sequelize[_0x12dc('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x12dc('0x8')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x12dc('0x3')],'defaultValue':_0x12dc('0x9')},'type':{'type':Sequelize[_0x12dc('0x4')](_0x12dc('0xa'),_0x12dc('0xb')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x12dc('0xc')](0xb)[_0x12dc('0xd')]},'reportType':{'type':Sequelize[_0x12dc('0x3')]}};
\ No newline at end of file
+var _0xe3f7=['UNSIGNED','moment','exports','STRING','ENUM','csv','pdf','xlsx','DATE','Loading','manual','INTEGER'];(function(_0x252805,_0x1d1e8e){var _0x3e74b9=function(_0x16d7a0){while(--_0x16d7a0){_0x252805['push'](_0x252805['shift']());}};_0x3e74b9(++_0x1d1e8e);}(_0xe3f7,0x1e1));var _0x7e3f=function(_0x442466,_0x210aff){_0x442466=_0x442466-0x0;var _0x574e1d=_0xe3f7[_0x442466];return _0x574e1d;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x7e3f('0x0'));module[_0x7e3f('0x1')]={'name':{'type':Sequelize[_0x7e3f('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x7e3f('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x7e3f('0x3')](_0x7e3f('0x4'),_0x7e3f('0x5'),_0x7e3f('0x6')),'allowNull':![],'defaultValue':_0x7e3f('0x4')},'savename':{'type':Sequelize[_0x7e3f('0x2')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x7e3f('0x7')]},'status':{'type':Sequelize[_0x7e3f('0x2')],'defaultValue':_0x7e3f('0x8')},'type':{'type':Sequelize[_0x7e3f('0x3')](_0x7e3f('0x9'),'scheduled'),'allowNull':![],'defaultValue':_0x7e3f('0x9')},'reportId':{'type':Sequelize[_0x7e3f('0xa')](0xb)[_0x7e3f('0xb')]},'reportType':{'type':Sequelize[_0x7e3f('0x2')]}};
\ No newline at end of file
index 303304f..c1d90ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc08=['mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb','status','json','undefined','limit','offset','count','set','apply','reject','save','then','destroy','ExtractedReports','UserProfileResource','error','stack','name','send','index','map','AnalyticExtractedReport','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','include','findAll','rows','catch','show','params','includeAll','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','download','basename','savename','output','join','root','server/files/reports','ValidationError','Report\x20not\x20found\x20or\x20empty','sendStatus','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x18674c,_0x3c40f7){var _0x3dc010=function(_0x406283){while(--_0x406283){_0x18674c['push'](_0x18674c['shift']());}};_0x3dc010(++_0x3c40f7);}(_0xbc08,0x169));var _0x8bc0=function(_0x5e92b7,_0x47623){_0x5e92b7=_0x5e92b7-0x0;var _0x2554d0=_0xbc08[_0x5e92b7];return _0x2554d0;};'use strict';var emlformat=require(_0x8bc0('0x0'));var rimraf=require(_0x8bc0('0x1'));var zipdir=require(_0x8bc0('0x2'));var jsonpatch=require(_0x8bc0('0x3'));var rp=require(_0x8bc0('0x4'));var moment=require(_0x8bc0('0x5'));var BPromise=require(_0x8bc0('0x6'));var Mustache=require(_0x8bc0('0x7'));var util=require(_0x8bc0('0x8'));var path=require(_0x8bc0('0x9'));var sox=require('sox');var csv=require(_0x8bc0('0xa'));var ejs=require(_0x8bc0('0xb'));var fs=require('fs');var fs_extra=require(_0x8bc0('0xc'));var _=require(_0x8bc0('0xd'));var squel=require('squel');var crypto=require(_0x8bc0('0xe'));var jsforce=require(_0x8bc0('0xf'));var deskjs=require(_0x8bc0('0x10'));var toCsv=require(_0x8bc0('0xa'));var querystring=require(_0x8bc0('0x11'));var Papa=require(_0x8bc0('0x12'));var Redis=require('ioredis');var authService=require(_0x8bc0('0x13'));var qs=require(_0x8bc0('0x14'));var as=require(_0x8bc0('0x15'));var hardwareService=require(_0x8bc0('0x16'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x8bc0('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8bc0('0x18'))['db'];function respondWithStatusCode(_0x90e162,_0x552f53){_0x552f53=_0x552f53||0xcc;return function(_0x26178b){if(_0x26178b){return _0x90e162['sendStatus'](_0x552f53);}return _0x90e162[_0x8bc0('0x19')](_0x552f53)['end']();};}function respondWithResult(_0x46d02a,_0x1f6a35){_0x1f6a35=_0x1f6a35||0xc8;return function(_0xd70b16){if(_0xd70b16){return _0x46d02a[_0x8bc0('0x19')](_0x1f6a35)[_0x8bc0('0x1a')](_0xd70b16);}};}function respondWithFilteredResult(_0x47ef90,_0x210d2f){return function(_0x49f9ee){if(_0x49f9ee){var _0x47f35a=typeof _0x210d2f['offset']===_0x8bc0('0x1b')&&typeof _0x210d2f[_0x8bc0('0x1c')]===_0x8bc0('0x1b');var _0x6b117=_0x49f9ee['count'];var _0x278da4=_0x47f35a?0x0:_0x210d2f[_0x8bc0('0x1d')];var _0x1a920f=_0x47f35a?_0x49f9ee[_0x8bc0('0x1e')]:_0x210d2f[_0x8bc0('0x1d')]+_0x210d2f[_0x8bc0('0x1c')];var _0x56f365;if(_0x1a920f>=_0x6b117){_0x1a920f=_0x6b117;_0x56f365=0xc8;}else{_0x56f365=0xce;}_0x47ef90[_0x8bc0('0x19')](_0x56f365);return _0x47ef90[_0x8bc0('0x1f')]('Content-Range',_0x278da4+'-'+_0x1a920f+'/'+_0x6b117)[_0x8bc0('0x1a')](_0x49f9ee);}return null;};}function patchUpdates(_0x324268){return function(_0x53d5a6){try{jsonpatch[_0x8bc0('0x20')](_0x53d5a6,_0x324268,!![]);}catch(_0x3c476b){return BPromise[_0x8bc0('0x21')](_0x3c476b);}return _0x53d5a6[_0x8bc0('0x22')]();};}function saveUpdates(_0x29138f,_0x15520f){return function(_0x1ca1dc){if(_0x1ca1dc){return _0x1ca1dc['update'](_0x29138f)[_0x8bc0('0x23')](function(_0x53c25f){return _0x53c25f;});}return null;};}function removeEntity(_0xb8e545,_0x3b177f){return function(_0x3bd98d){if(_0x3bd98d){return _0x3bd98d[_0x8bc0('0x24')]()[_0x8bc0('0x23')](function(){var _0x4c73d6=_0x3bd98d['get']({'plain':!![]});var _0x470197=_0x8bc0('0x25');return db[_0x8bc0('0x26')][_0x8bc0('0x24')]({'where':{'type':_0x470197,'resourceId':_0x4c73d6['id']}})['then'](function(){return _0x3bd98d;});})[_0x8bc0('0x23')](function(){_0xb8e545[_0x8bc0('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xea013b,_0x368fdc){return function(_0x3a27ec){if(!_0x3a27ec){_0xea013b['sendStatus'](0x194);}return _0x3a27ec;};}function handleError(_0x5cc47d,_0x35551d){_0x35551d=_0x35551d||0x1f4;return function(_0x300368){logger[_0x8bc0('0x27')](_0x300368[_0x8bc0('0x28')]);if(_0x300368[_0x8bc0('0x29')]){delete _0x300368['name'];}_0x5cc47d[_0x8bc0('0x19')](_0x35551d)[_0x8bc0('0x2a')](_0x300368);};}exports[_0x8bc0('0x2b')]=function(_0x5d2778,_0x2b8ba0){var _0x534bf6={},_0x53057f={},_0x46a69d={'count':0x0,'rows':[]};var _0x41ba43=_[_0x8bc0('0x2c')](db[_0x8bc0('0x2d')]['rawAttributes'],function(_0x2b9958){return{'name':_0x2b9958[_0x8bc0('0x2e')],'type':_0x2b9958['type'][_0x8bc0('0x2f')]};});_0x53057f[_0x8bc0('0x30')]=_[_0x8bc0('0x2c')](_0x41ba43,'name');_0x53057f[_0x8bc0('0x31')]=_[_0x8bc0('0x32')](_0x5d2778[_0x8bc0('0x31')]);_0x53057f[_0x8bc0('0x33')]=_[_0x8bc0('0x34')](_0x53057f['model'],_0x53057f['query']);_0x534bf6[_0x8bc0('0x35')]=_['intersection'](_0x53057f[_0x8bc0('0x30')],qs[_0x8bc0('0x36')](_0x5d2778['query'][_0x8bc0('0x36')]));_0x534bf6[_0x8bc0('0x35')]=_0x534bf6[_0x8bc0('0x35')][_0x8bc0('0x37')]?_0x534bf6[_0x8bc0('0x35')]:_0x53057f[_0x8bc0('0x30')];if(!_0x5d2778['query'][_0x8bc0('0x38')](_0x8bc0('0x39'))){_0x534bf6['limit']=qs[_0x8bc0('0x1c')](_0x5d2778[_0x8bc0('0x31')][_0x8bc0('0x1c')]);_0x534bf6['offset']=qs['offset'](_0x5d2778['query'][_0x8bc0('0x1d')]);}_0x534bf6[_0x8bc0('0x3a')]=qs[_0x8bc0('0x3b')](_0x5d2778[_0x8bc0('0x31')][_0x8bc0('0x3b')]);_0x534bf6[_0x8bc0('0x3c')]=qs[_0x8bc0('0x33')](_['pick'](_0x5d2778[_0x8bc0('0x31')],_0x53057f['filters']),_0x41ba43);if(_0x5d2778['query'][_0x8bc0('0x3d')]){_0x534bf6[_0x8bc0('0x3c')]=_[_0x8bc0('0x3e')](_0x534bf6[_0x8bc0('0x3c')],{'$or':_['map'](_0x41ba43,function(_0x2348d0){if(_0x2348d0[_0x8bc0('0x3f')]!==_0x8bc0('0x40')){var _0x2f9fc5={};_0x2f9fc5[_0x2348d0[_0x8bc0('0x29')]]={'$like':'%'+_0x5d2778[_0x8bc0('0x31')][_0x8bc0('0x3d')]+'%'};return _0x2f9fc5;}})});}_0x534bf6=_[_0x8bc0('0x3e')]({},_0x534bf6,_0x5d2778['options']);var _0x1b62d0={'where':_0x534bf6[_0x8bc0('0x3c')]};return db[_0x8bc0('0x2d')]['count'](_0x1b62d0)[_0x8bc0('0x23')](function(_0x29fd23){_0x46a69d['count']=_0x29fd23;if(_0x5d2778['query']['includeAll']){_0x534bf6[_0x8bc0('0x41')]=[{'all':!![]}];}return db[_0x8bc0('0x2d')][_0x8bc0('0x42')](_0x534bf6);})['then'](function(_0xeea591){_0x46a69d[_0x8bc0('0x43')]=_0xeea591;return _0x46a69d;})[_0x8bc0('0x23')](respondWithFilteredResult(_0x2b8ba0,_0x534bf6))[_0x8bc0('0x44')](handleError(_0x2b8ba0,null));};exports[_0x8bc0('0x45')]=function(_0x4fcd09,_0x322a5c){var _0x3ec3f1={'raw':!![],'where':{'id':_0x4fcd09[_0x8bc0('0x46')]['id']}},_0x5a2be7={};_0x5a2be7[_0x8bc0('0x30')]=_[_0x8bc0('0x32')](db[_0x8bc0('0x2d')]['rawAttributes']);_0x5a2be7[_0x8bc0('0x31')]=_['keys'](_0x4fcd09[_0x8bc0('0x31')]);_0x5a2be7[_0x8bc0('0x33')]=_[_0x8bc0('0x34')](_0x5a2be7[_0x8bc0('0x30')],_0x5a2be7[_0x8bc0('0x31')]);_0x3ec3f1['attributes']=_['intersection'](_0x5a2be7[_0x8bc0('0x30')],qs[_0x8bc0('0x36')](_0x4fcd09[_0x8bc0('0x31')][_0x8bc0('0x36')]));_0x3ec3f1[_0x8bc0('0x35')]=_0x3ec3f1['attributes']['length']?_0x3ec3f1[_0x8bc0('0x35')]:_0x5a2be7[_0x8bc0('0x30')];if(_0x4fcd09[_0x8bc0('0x31')][_0x8bc0('0x47')]){_0x3ec3f1[_0x8bc0('0x41')]=[{'all':!![]}];}_0x3ec3f1=_[_0x8bc0('0x3e')]({},_0x3ec3f1,_0x4fcd09['options']);return db[_0x8bc0('0x2d')][_0x8bc0('0x48')](_0x3ec3f1)[_0x8bc0('0x23')](handleEntityNotFound(_0x322a5c,null))[_0x8bc0('0x23')](respondWithResult(_0x322a5c,null))['catch'](handleError(_0x322a5c,null));};exports[_0x8bc0('0x49')]=function(_0x1f4b4c,_0x29bef5){return db[_0x8bc0('0x2d')]['create'](_0x1f4b4c['body'],{})[_0x8bc0('0x23')](function(_0x3e4f88){var _0x1f1b5b=_0x1f4b4c['user'][_0x8bc0('0x4a')]({'plain':!![]});if(!_0x1f1b5b)throw new Error(_0x8bc0('0x4b'));if(_0x1f1b5b['role']===_0x8bc0('0x4c')){var _0x5d7fdf=_0x3e4f88[_0x8bc0('0x4a')]({'plain':!![]});var _0x450391='ExtractedReports';return db[_0x8bc0('0x4d')][_0x8bc0('0x48')]({'where':{'name':_0x450391,'userProfileId':_0x1f1b5b[_0x8bc0('0x4e')]},'raw':!![]})[_0x8bc0('0x23')](function(_0x572343){if(_0x572343&&_0x572343['autoAssociation']===0x0){return db[_0x8bc0('0x26')]['create']({'name':_0x5d7fdf['name'],'resourceId':_0x5d7fdf['id'],'type':_0x572343['name'],'sectionId':_0x572343['id']},{})[_0x8bc0('0x23')](function(){return _0x3e4f88;});}else{return _0x3e4f88;}})[_0x8bc0('0x44')](function(_0x23a419){logger[_0x8bc0('0x27')](_0x8bc0('0x4f'),_0x23a419);throw _0x23a419;});}return _0x3e4f88;})[_0x8bc0('0x23')](respondWithResult(_0x29bef5,0xc9))[_0x8bc0('0x44')](handleError(_0x29bef5,null));};exports[_0x8bc0('0x50')]=function(_0x4588f6,_0x2671f3){if(_0x4588f6['body']['id']){delete _0x4588f6['body']['id'];}return db['AnalyticExtractedReport']['find']({'where':{'id':_0x4588f6['params']['id']}})[_0x8bc0('0x23')](handleEntityNotFound(_0x2671f3,null))[_0x8bc0('0x23')](saveUpdates(_0x4588f6['body'],null))[_0x8bc0('0x23')](respondWithResult(_0x2671f3,null))['catch'](handleError(_0x2671f3,null));};exports[_0x8bc0('0x24')]=function(_0x348750,_0x2e7ab5){return db[_0x8bc0('0x2d')][_0x8bc0('0x48')]({'where':{'id':_0x348750['params']['id']}})['then'](handleEntityNotFound(_0x2e7ab5,null))[_0x8bc0('0x23')](removeEntity(_0x2e7ab5,null))['catch'](handleError(_0x2e7ab5,null));};exports[_0x8bc0('0x51')]=function(_0x1b098a,_0x5408d8,_0x153978){return db['AnalyticExtractedReport'][_0x8bc0('0x48')]({'where':{'id':_0x1b098a[_0x8bc0('0x46')]['id']},'attributes':[_0x8bc0('0x29'),_0x8bc0('0x52'),_0x8bc0('0x53'),_0x8bc0('0x54')],'raw':!![]})['then'](handleEntityNotFound(_0x5408d8,null))[_0x8bc0('0x23')](function(_0x9eb889){if(_0x9eb889){if(!fs['existsSync'](path[_0x8bc0('0x55')](config[_0x8bc0('0x56')],_0x8bc0('0x57'),_0x9eb889[_0x8bc0('0x53')]))){throw new db['Sequelize'][(_0x8bc0('0x58'))](_0x8bc0('0x59'));}if(_0x1b098a[_0x8bc0('0x31')]['exists']){return _0x5408d8[_0x8bc0('0x5a')](0xc8);}return _0x5408d8[_0x8bc0('0x51')](path[_0x8bc0('0x55')](config['root'],'server/files/reports',_0x9eb889[_0x8bc0('0x53')]),util['format']('%s.%s',_0x9eb889[_0x8bc0('0x52')]||_0x9eb889[_0x8bc0('0x29')],_0x9eb889[_0x8bc0('0x54')][_0x8bc0('0x5b')]()));}})[_0x8bc0('0x44')](handleError(_0x5408d8,null));};
\ No newline at end of file
+var _0xc0d5=['Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','end','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','params','filters','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','download','basename','savename','join','root','Sequelize','ValidationError'];(function(_0x31a0a3,_0x2fecfe){var _0x3f0960=function(_0x494633){while(--_0x494633){_0x31a0a3['push'](_0x31a0a3['shift']());}};_0x3f0960(++_0x2fecfe);}(_0xc0d5,0x131));var _0x5c0d=function(_0x5d04ad,_0x2672a6){_0x5d04ad=_0x5d04ad-0x0;var _0x4361ec=_0xc0d5[_0x5d04ad];return _0x4361ec;};'use strict';var emlformat=require(_0x5c0d('0x0'));var rimraf=require(_0x5c0d('0x1'));var zipdir=require(_0x5c0d('0x2'));var jsonpatch=require(_0x5c0d('0x3'));var rp=require('request-promise');var moment=require(_0x5c0d('0x4'));var BPromise=require(_0x5c0d('0x5'));var Mustache=require(_0x5c0d('0x6'));var util=require(_0x5c0d('0x7'));var path=require(_0x5c0d('0x8'));var sox=require(_0x5c0d('0x9'));var csv=require(_0x5c0d('0xa'));var ejs=require(_0x5c0d('0xb'));var fs=require('fs');var fs_extra=require(_0x5c0d('0xc'));var _=require(_0x5c0d('0xd'));var squel=require(_0x5c0d('0xe'));var crypto=require(_0x5c0d('0xf'));var jsforce=require(_0x5c0d('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x5c0d('0xa'));var querystring=require(_0x5c0d('0x11'));var Papa=require(_0x5c0d('0x12'));var Redis=require(_0x5c0d('0x13'));var authService=require(_0x5c0d('0x14'));var qs=require(_0x5c0d('0x15'));var as=require(_0x5c0d('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5c0d('0x17'))(_0x5c0d('0x18'));var utils=require(_0x5c0d('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5c0d('0x1a'))['db'];function respondWithStatusCode(_0x4c8073,_0x75303a){_0x75303a=_0x75303a||0xcc;return function(_0x2cbb2c){if(_0x2cbb2c){return _0x4c8073[_0x5c0d('0x1b')](_0x75303a);}return _0x4c8073[_0x5c0d('0x1c')](_0x75303a)['end']();};}function respondWithResult(_0x281ce0,_0x5907e8){_0x5907e8=_0x5907e8||0xc8;return function(_0x18db16){if(_0x18db16){return _0x281ce0[_0x5c0d('0x1c')](_0x5907e8)[_0x5c0d('0x1d')](_0x18db16);}};}function respondWithFilteredResult(_0x501275,_0x46fc7b){return function(_0xdf0884){if(_0xdf0884){var _0x27b219=typeof _0x46fc7b[_0x5c0d('0x1e')]===_0x5c0d('0x1f')&&typeof _0x46fc7b[_0x5c0d('0x20')]===_0x5c0d('0x1f');var _0x4eaf74=_0xdf0884[_0x5c0d('0x21')];var _0x3d011f=_0x27b219?0x0:_0x46fc7b[_0x5c0d('0x1e')];var _0x451407=_0x27b219?_0xdf0884[_0x5c0d('0x21')]:_0x46fc7b[_0x5c0d('0x1e')]+_0x46fc7b[_0x5c0d('0x20')];var _0xaff428;if(_0x451407>=_0x4eaf74){_0x451407=_0x4eaf74;_0xaff428=0xc8;}else{_0xaff428=0xce;}_0x501275[_0x5c0d('0x1c')](_0xaff428);return _0x501275[_0x5c0d('0x22')](_0x5c0d('0x23'),_0x3d011f+'-'+_0x451407+'/'+_0x4eaf74)[_0x5c0d('0x1d')](_0xdf0884);}return null;};}function patchUpdates(_0x4581c1){return function(_0x7ff918){try{jsonpatch[_0x5c0d('0x24')](_0x7ff918,_0x4581c1,!![]);}catch(_0x245814){return BPromise[_0x5c0d('0x25')](_0x245814);}return _0x7ff918[_0x5c0d('0x26')]();};}function saveUpdates(_0x153abd,_0x24d497){return function(_0x22b01a){if(_0x22b01a){return _0x22b01a[_0x5c0d('0x27')](_0x153abd)[_0x5c0d('0x28')](function(_0x53a31){return _0x53a31;});}return null;};}function removeEntity(_0x373750,_0x2f1ede){return function(_0x3f99a8){if(_0x3f99a8){return _0x3f99a8[_0x5c0d('0x29')]()[_0x5c0d('0x28')](function(){var _0xe2e52f=_0x3f99a8[_0x5c0d('0x2a')]({'plain':!![]});var _0x492fcf=_0x5c0d('0x2b');return db[_0x5c0d('0x2c')][_0x5c0d('0x29')]({'where':{'type':_0x492fcf,'resourceId':_0xe2e52f['id']}})[_0x5c0d('0x28')](function(){return _0x3f99a8;});})[_0x5c0d('0x28')](function(){_0x373750[_0x5c0d('0x1c')](0xcc)[_0x5c0d('0x2d')]();});}};}function handleEntityNotFound(_0x3f9dbe,_0x3f0bfa){return function(_0x87790e){if(!_0x87790e){_0x3f9dbe[_0x5c0d('0x1b')](0x194);}return _0x87790e;};}function handleError(_0x217d9b,_0x556110){_0x556110=_0x556110||0x1f4;return function(_0x1decc9){logger[_0x5c0d('0x2e')](_0x1decc9[_0x5c0d('0x2f')]);if(_0x1decc9[_0x5c0d('0x30')]){delete _0x1decc9[_0x5c0d('0x30')];}_0x217d9b[_0x5c0d('0x1c')](_0x556110)[_0x5c0d('0x31')](_0x1decc9);};}exports[_0x5c0d('0x32')]=function(_0x21e00f,_0x41beda){var _0x22505b={},_0x2929a7={},_0x4725e4={'count':0x0,'rows':[]};var _0x96e148=_[_0x5c0d('0x33')](db[_0x5c0d('0x34')][_0x5c0d('0x35')],function(_0x11253b){return{'name':_0x11253b[_0x5c0d('0x36')],'type':_0x11253b[_0x5c0d('0x37')][_0x5c0d('0x38')]};});_0x2929a7[_0x5c0d('0x39')]=_[_0x5c0d('0x33')](_0x96e148,_0x5c0d('0x30'));_0x2929a7[_0x5c0d('0x3a')]=_[_0x5c0d('0x3b')](_0x21e00f[_0x5c0d('0x3a')]);_0x2929a7['filters']=_[_0x5c0d('0x3c')](_0x2929a7[_0x5c0d('0x39')],_0x2929a7[_0x5c0d('0x3a')]);_0x22505b[_0x5c0d('0x3d')]=_[_0x5c0d('0x3c')](_0x2929a7[_0x5c0d('0x39')],qs[_0x5c0d('0x3e')](_0x21e00f['query'][_0x5c0d('0x3e')]));_0x22505b['attributes']=_0x22505b['attributes'][_0x5c0d('0x3f')]?_0x22505b[_0x5c0d('0x3d')]:_0x2929a7['model'];if(!_0x21e00f[_0x5c0d('0x3a')]['hasOwnProperty'](_0x5c0d('0x40'))){_0x22505b['limit']=qs['limit'](_0x21e00f['query']['limit']);_0x22505b[_0x5c0d('0x1e')]=qs[_0x5c0d('0x1e')](_0x21e00f[_0x5c0d('0x3a')][_0x5c0d('0x1e')]);}_0x22505b[_0x5c0d('0x41')]=qs[_0x5c0d('0x42')](_0x21e00f[_0x5c0d('0x3a')][_0x5c0d('0x42')]);_0x22505b[_0x5c0d('0x43')]=qs['filters'](_[_0x5c0d('0x44')](_0x21e00f[_0x5c0d('0x3a')],_0x2929a7['filters']),_0x96e148);if(_0x21e00f['query'][_0x5c0d('0x45')]){_0x22505b[_0x5c0d('0x43')]=_[_0x5c0d('0x46')](_0x22505b[_0x5c0d('0x43')],{'$or':_['map'](_0x96e148,function(_0x1cfc71){if(_0x1cfc71[_0x5c0d('0x37')]!==_0x5c0d('0x47')){var _0x2a3f0e={};_0x2a3f0e[_0x1cfc71['name']]={'$like':'%'+_0x21e00f[_0x5c0d('0x3a')][_0x5c0d('0x45')]+'%'};return _0x2a3f0e;}})});}_0x22505b=_[_0x5c0d('0x46')]({},_0x22505b,_0x21e00f['options']);var _0x4ea3bc={'where':_0x22505b['where']};return db[_0x5c0d('0x34')][_0x5c0d('0x21')](_0x4ea3bc)[_0x5c0d('0x28')](function(_0x54d264){_0x4725e4['count']=_0x54d264;if(_0x21e00f[_0x5c0d('0x3a')][_0x5c0d('0x48')]){_0x22505b['include']=[{'all':!![]}];}return db[_0x5c0d('0x34')][_0x5c0d('0x49')](_0x22505b);})[_0x5c0d('0x28')](function(_0x18ae41){_0x4725e4[_0x5c0d('0x4a')]=_0x18ae41;return _0x4725e4;})[_0x5c0d('0x28')](respondWithFilteredResult(_0x41beda,_0x22505b))[_0x5c0d('0x4b')](handleError(_0x41beda,null));};exports['show']=function(_0xbb52ee,_0x118ec3){var _0x225da0={'raw':!![],'where':{'id':_0xbb52ee[_0x5c0d('0x4c')]['id']}},_0x3719bd={};_0x3719bd[_0x5c0d('0x39')]=_[_0x5c0d('0x3b')](db['AnalyticExtractedReport']['rawAttributes']);_0x3719bd[_0x5c0d('0x3a')]=_[_0x5c0d('0x3b')](_0xbb52ee[_0x5c0d('0x3a')]);_0x3719bd[_0x5c0d('0x4d')]=_[_0x5c0d('0x3c')](_0x3719bd[_0x5c0d('0x39')],_0x3719bd[_0x5c0d('0x3a')]);_0x225da0[_0x5c0d('0x3d')]=_['intersection'](_0x3719bd[_0x5c0d('0x39')],qs[_0x5c0d('0x3e')](_0xbb52ee[_0x5c0d('0x3a')]['fields']));_0x225da0[_0x5c0d('0x3d')]=_0x225da0[_0x5c0d('0x3d')]['length']?_0x225da0[_0x5c0d('0x3d')]:_0x3719bd['model'];if(_0xbb52ee[_0x5c0d('0x3a')]['includeAll']){_0x225da0['include']=[{'all':!![]}];}_0x225da0=_[_0x5c0d('0x46')]({},_0x225da0,_0xbb52ee[_0x5c0d('0x4e')]);return db[_0x5c0d('0x34')][_0x5c0d('0x4f')](_0x225da0)[_0x5c0d('0x28')](handleEntityNotFound(_0x118ec3,null))[_0x5c0d('0x28')](respondWithResult(_0x118ec3,null))[_0x5c0d('0x4b')](handleError(_0x118ec3,null));};exports[_0x5c0d('0x50')]=function(_0x323b29,_0x29bb9b){return db['AnalyticExtractedReport']['create'](_0x323b29['body'],{})[_0x5c0d('0x28')](function(_0x41ef8d){var _0x11dbdc=_0x323b29[_0x5c0d('0x51')][_0x5c0d('0x2a')]({'plain':!![]});if(!_0x11dbdc)throw new Error(_0x5c0d('0x52'));if(_0x11dbdc[_0x5c0d('0x53')]===_0x5c0d('0x51')){var _0xfef436=_0x41ef8d[_0x5c0d('0x2a')]({'plain':!![]});var _0x1622b1=_0x5c0d('0x2b');return db[_0x5c0d('0x54')]['find']({'where':{'name':_0x1622b1,'userProfileId':_0x11dbdc['userProfileId']},'raw':!![]})[_0x5c0d('0x28')](function(_0x2219ec){if(_0x2219ec&&_0x2219ec[_0x5c0d('0x55')]===0x0){return db[_0x5c0d('0x2c')]['create']({'name':_0xfef436['name'],'resourceId':_0xfef436['id'],'type':_0x2219ec[_0x5c0d('0x30')],'sectionId':_0x2219ec['id']},{})['then'](function(){return _0x41ef8d;});}else{return _0x41ef8d;}})[_0x5c0d('0x4b')](function(_0x2cb055){logger[_0x5c0d('0x2e')](_0x5c0d('0x56'),_0x2cb055);throw _0x2cb055;});}return _0x41ef8d;})[_0x5c0d('0x28')](respondWithResult(_0x29bb9b,0xc9))[_0x5c0d('0x4b')](handleError(_0x29bb9b,null));};exports[_0x5c0d('0x27')]=function(_0x56cd81,_0x53fc12){if(_0x56cd81['body']['id']){delete _0x56cd81['body']['id'];}return db[_0x5c0d('0x34')][_0x5c0d('0x4f')]({'where':{'id':_0x56cd81[_0x5c0d('0x4c')]['id']}})['then'](handleEntityNotFound(_0x53fc12,null))[_0x5c0d('0x28')](saveUpdates(_0x56cd81[_0x5c0d('0x57')],null))[_0x5c0d('0x28')](respondWithResult(_0x53fc12,null))['catch'](handleError(_0x53fc12,null));};exports[_0x5c0d('0x29')]=function(_0x10b035,_0x17b52e){return db[_0x5c0d('0x34')][_0x5c0d('0x4f')]({'where':{'id':_0x10b035['params']['id']}})[_0x5c0d('0x28')](handleEntityNotFound(_0x17b52e,null))[_0x5c0d('0x28')](removeEntity(_0x17b52e,null))['catch'](handleError(_0x17b52e,null));};exports[_0x5c0d('0x58')]=function(_0x4c44a3,_0x4777d1,_0x17c3a){return db[_0x5c0d('0x34')]['find']({'where':{'id':_0x4c44a3[_0x5c0d('0x4c')]['id']},'attributes':[_0x5c0d('0x30'),_0x5c0d('0x59'),_0x5c0d('0x5a'),'output'],'raw':!![]})[_0x5c0d('0x28')](handleEntityNotFound(_0x4777d1,null))[_0x5c0d('0x28')](function(_0x1ffbc4){if(_0x1ffbc4){if(!fs['existsSync'](path[_0x5c0d('0x5b')](config[_0x5c0d('0x5c')],'server/files/reports',_0x1ffbc4['savename']))){throw new db[(_0x5c0d('0x5d'))][(_0x5c0d('0x5e'))](_0x5c0d('0x5f'));}if(_0x4c44a3[_0x5c0d('0x3a')][_0x5c0d('0x60')]){return _0x4777d1[_0x5c0d('0x1b')](0xc8);}return _0x4777d1[_0x5c0d('0x58')](path['join'](config['root'],'server/files/reports',_0x1ffbc4[_0x5c0d('0x5a')]),util[_0x5c0d('0x61')](_0x5c0d('0x62'),_0x1ffbc4[_0x5c0d('0x59')]||_0x1ffbc4[_0x5c0d('0x30')],_0x1ffbc4['output'][_0x5c0d('0x63')]()));}})[_0x5c0d('0x4b')](handleError(_0x4777d1,null));};
\ No newline at end of file
index c1487e5..b23b654 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0e1=['exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','api','moment','bluebird','../../config/environment','./analyticExtractedReport.attributes'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xb0e1,0xd5));var _0x1b0e=function(_0x5e7ea3,_0x3b4870){_0x5e7ea3=_0x5e7ea3-0x0;var _0x2daabe=_0xb0e1[_0x5e7ea3];return _0x2daabe;};'use strict';var _=require(_0x1b0e('0x0'));var util=require(_0x1b0e('0x1'));var logger=require('../../config/logger')(_0x1b0e('0x2'));var moment=require(_0x1b0e('0x3'));var BPromise=require(_0x1b0e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1b0e('0x5'));var attributes=require(_0x1b0e('0x6'));module[_0x1b0e('0x7')]=function(_0x40b7e8,_0x2e52fb){return _0x40b7e8[_0x1b0e('0x8')](_0x1b0e('0x9'),attributes,{'tableName':_0x1b0e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd521=['../../config/logger','api','bluebird','request-promise','path','rimraf','./analyticExtractedReport.attributes','analytics_extracted_reports','lodash','util'];(function(_0x251ab0,_0x46e532){var _0x11848c=function(_0x78e3a2){while(--_0x78e3a2){_0x251ab0['push'](_0x251ab0['shift']());}};_0x11848c(++_0x46e532);}(_0xd521,0x94));var _0x1d52=function(_0x347ae1,_0x24a93e){_0x347ae1=_0x347ae1-0x0;var _0xf49b96=_0xd521[_0x347ae1];return _0xf49b96;};'use strict';var _=require(_0x1d52('0x0'));var util=require(_0x1d52('0x1'));var logger=require(_0x1d52('0x2'))(_0x1d52('0x3'));var moment=require('moment');var BPromise=require(_0x1d52('0x4'));var rp=require(_0x1d52('0x5'));var fs=require('fs');var path=require(_0x1d52('0x6'));var rimraf=require(_0x1d52('0x7'));var config=require('../../config/environment');var attributes=require(_0x1d52('0x8'));module['exports']=function(_0x3897b8,_0x5c99a7){return _0x3897b8['define']('AnalyticExtractedReport',attributes,{'tableName':_0x1d52('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6e226dc..981ec95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13e3=['error','message','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','code'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x13e3,0x6e));var _0x313e=function(_0x26f702,_0x3919bf){_0x26f702=_0x26f702-0x0;var _0x11417d=_0x13e3[_0x26f702];return _0x11417d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x313e('0x0'));var BPromise=require(_0x313e('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x313e('0x2'));var db=require(_0x313e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x313e('0x4'))('rpc');var config=require(_0x313e('0x5'));var jayson=require(_0x313e('0x6'));var client=jayson[_0x313e('0x7')][_0x313e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x113baf,_0x488c20,_0x29519d){return new BPromise(function(_0x159eaf,_0x52e29b){return client['request'](_0x113baf,_0x29519d)['then'](function(_0x1d2da5){logger[_0x313e('0x9')](_0x313e('0xa'),_0x488c20,_0x313e('0xb'));logger[_0x313e('0xc')](_0x313e('0xd'),_0x488c20,_0x313e('0xb'),JSON[_0x313e('0xe')](_0x1d2da5));if(_0x1d2da5['error']){if(_0x1d2da5['error'][_0x313e('0xf')]===0x1f4){logger[_0x313e('0x10')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x488c20,_0x1d2da5[_0x313e('0x10')]['message']);return _0x52e29b(_0x1d2da5[_0x313e('0x10')][_0x313e('0x11')]);}logger[_0x313e('0x10')](_0x313e('0xa'),_0x488c20,_0x1d2da5[_0x313e('0x10')][_0x313e('0x11')]);return _0x159eaf(_0x1d2da5[_0x313e('0x10')][_0x313e('0x11')]);}else{logger[_0x313e('0x9')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x488c20,_0x313e('0xb'));_0x159eaf(_0x1d2da5['result'][_0x313e('0x11')]);}})['catch'](function(_0x28ac07){logger['error'](_0x313e('0xa'),_0x488c20,_0x28ac07);_0x52e29b(_0x28ac07);});});}
\ No newline at end of file
+var _0xb4ee=['../../config/environment','client','http','request','then','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x3494d7,_0x3e3482){var _0x57cf6b=function(_0x1dacf0){while(--_0x1dacf0){_0x3494d7['push'](_0x3494d7['shift']());}};_0x57cf6b(++_0x3e3482);}(_0xb4ee,0xa8));var _0xeb4e=function(_0xd66a16,_0x51bc10){_0xd66a16=_0xd66a16-0x0;var _0x37881e=_0xb4ee[_0xd66a16];return _0x37881e;};'use strict';var _=require(_0xeb4e('0x0'));var util=require('util');var moment=require(_0xeb4e('0x1'));var BPromise=require(_0xeb4e('0x2'));var rs=require(_0xeb4e('0x3'));var fs=require('fs');var Redis=require(_0xeb4e('0x4'));var db=require(_0xeb4e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xeb4e('0x6'))(_0xeb4e('0x7'));var config=require(_0xeb4e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xeb4e('0x9')][_0xeb4e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x315ccf,_0x20efab,_0x511b10){return new BPromise(function(_0x8369fb,_0x45d3b7){return client[_0xeb4e('0xb')](_0x315ccf,_0x511b10)[_0xeb4e('0xc')](function(_0x5545ef){logger['info'](_0xeb4e('0xd'),_0x20efab,_0xeb4e('0xe'));logger[_0xeb4e('0xf')](_0xeb4e('0x10'),_0x20efab,_0xeb4e('0xe'),JSON[_0xeb4e('0x11')](_0x5545ef));if(_0x5545ef[_0xeb4e('0x12')]){if(_0x5545ef[_0xeb4e('0x12')]['code']===0x1f4){logger[_0xeb4e('0x12')](_0xeb4e('0xd'),_0x20efab,_0x5545ef[_0xeb4e('0x12')]['message']);return _0x45d3b7(_0x5545ef[_0xeb4e('0x12')]['message']);}logger[_0xeb4e('0x12')](_0xeb4e('0xd'),_0x20efab,_0x5545ef[_0xeb4e('0x12')][_0xeb4e('0x13')]);return _0x8369fb(_0x5545ef[_0xeb4e('0x12')][_0xeb4e('0x13')]);}else{logger['info'](_0xeb4e('0xd'),_0x20efab,_0xeb4e('0xe'));_0x8369fb(_0x5545ef[_0xeb4e('0x14')][_0xeb4e('0x13')]);}})[_0xeb4e('0x15')](function(_0x443d0d){logger[_0xeb4e('0x12')](_0xeb4e('0xd'),_0x20efab,_0x443d0d);_0x45d3b7(_0x443d0d);});});}
\ No newline at end of file
index 73ee5e2..3f787de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20f4=['../../config/environment','./analyticExtractedReport.controller','get','/:id','isAuthenticated','download','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x404dea,_0x49844e){var _0x4d076e=function(_0x234d54){while(--_0x234d54){_0x404dea['push'](_0x404dea['shift']());}};_0x4d076e(++_0x49844e);}(_0x20f4,0x1c4));var _0x420f=function(_0x25e782,_0x55d2dd){_0x25e782=_0x25e782-0x0;var _0x10871f=_0x20f4[_0x25e782];return _0x10871f;};'use strict';var multer=require(_0x420f('0x0'));var util=require(_0x420f('0x1'));var path=require(_0x420f('0x2'));var timeout=require('connect-timeout');var express=require(_0x420f('0x3'));var router=express[_0x420f('0x4')]();var fs_extra=require(_0x420f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x420f('0x6'));var config=require(_0x420f('0x7'));var controller=require(_0x420f('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x420f('0x9')](_0x420f('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x420f('0x9')]('/:id/download',auth[_0x420f('0xb')](),controller[_0x420f('0xc')]);router['post']('/',auth[_0x420f('0xb')](),controller['create']);router[_0x420f('0xd')](_0x420f('0xa'),auth[_0x420f('0xb')](),controller[_0x420f('0xe')]);router[_0x420f('0xf')](_0x420f('0xa'),auth[_0x420f('0xb')](),controller[_0x420f('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x04c3=['/:id/download','isAuthenticated','download','post','create','put','update','delete','/:id','destroy','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get'];(function(_0x40bc76,_0x597613){var _0x3c74cb=function(_0x4f4e1e){while(--_0x4f4e1e){_0x40bc76['push'](_0x40bc76['shift']());}};_0x3c74cb(++_0x597613);}(_0x04c3,0xb5));var _0x304c=function(_0x4dce38,_0x2bdd6c){_0x4dce38=_0x4dce38-0x0;var _0x24c2b6=_0x04c3[_0x4dce38];return _0x24c2b6;};'use strict';var multer=require('multer');var util=require(_0x304c('0x0'));var path=require(_0x304c('0x1'));var timeout=require(_0x304c('0x2'));var express=require(_0x304c('0x3'));var router=express[_0x304c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x304c('0x5'));var interaction=require(_0x304c('0x6'));var config=require('../../config/environment');var controller=require(_0x304c('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x304c('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x304c('0x9'),auth[_0x304c('0xa')](),controller[_0x304c('0xb')]);router[_0x304c('0xc')]('/',auth[_0x304c('0xa')](),controller[_0x304c('0xd')]);router[_0x304c('0xe')]('/:id',auth[_0x304c('0xa')](),controller[_0x304c('0xf')]);router[_0x304c('0x10')](_0x304c('0x11'),auth[_0x304c('0xa')](),controller[_0x304c('0x12')]);module['exports']=router;
\ No newline at end of file
index e136b78..f6e60e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57e7=['sequelize','exports','STRING','BOOLEAN'];(function(_0x2161d8,_0x14e2d2){var _0x3acfb8=function(_0x5095fd){while(--_0x5095fd){_0x2161d8['push'](_0x2161d8['shift']());}};_0x3acfb8(++_0x14e2d2);}(_0x57e7,0x1c4));var _0x757e=function(_0x13f6fc,_0x54fabe){_0x13f6fc=_0x13f6fc-0x0;var _0x4f82ab=_0x57e7[_0x13f6fc];return _0x4f82ab;};'use strict';var Sequelize=require(_0x757e('0x0'));module[_0x757e('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x757e('0x2')]},'function':{'type':Sequelize[_0x757e('0x2')]},'format':{'type':Sequelize[_0x757e('0x2')]},'groupBy':{'type':Sequelize[_0x757e('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x757e('0x2')]},'custom':{'type':Sequelize[_0x757e('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5d51=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x5d51,0x124));var _0x15d5=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x5d51[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require(_0x15d5('0x0'));module[_0x15d5('0x1')]={'field':{'type':Sequelize[_0x15d5('0x2')]},'alias':{'type':Sequelize[_0x15d5('0x3')]},'function':{'type':Sequelize[_0x15d5('0x3')]},'format':{'type':Sequelize[_0x15d5('0x3')]},'groupBy':{'type':Sequelize[_0x15d5('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x15d5('0x3')]},'custom':{'type':Sequelize[_0x15d5('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 2f7661e..53bd733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab3d=['offset','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','filter','type','merge','options','includeAll','include','findAll','rows','catch','show','find','body','bulkCreate','params','ids','addFields','findOne','sequelize','transaction','CustomReportId','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','limit','count'];(function(_0x37c07d,_0xdbdb5f){var _0x10dadc=function(_0x2bafb7){while(--_0x2bafb7){_0x37c07d['push'](_0x37c07d['shift']());}};_0x10dadc(++_0xdbdb5f);}(_0xab3d,0x82));var _0xdab3=function(_0x3a64d0,_0x5cfabd){_0x3a64d0=_0x3a64d0-0x0;var _0x4e69f3=_0xab3d[_0x3a64d0];return _0x4e69f3;};'use strict';var emlformat=require(_0xdab3('0x0'));var rimraf=require(_0xdab3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdab3('0x2'));var rp=require(_0xdab3('0x3'));var moment=require(_0xdab3('0x4'));var BPromise=require(_0xdab3('0x5'));var Mustache=require(_0xdab3('0x6'));var util=require(_0xdab3('0x7'));var path=require(_0xdab3('0x8'));var sox=require(_0xdab3('0x9'));var csv=require(_0xdab3('0xa'));var ejs=require(_0xdab3('0xb'));var fs=require('fs');var fs_extra=require(_0xdab3('0xc'));var _=require('lodash');var squel=require(_0xdab3('0xd'));var crypto=require(_0xdab3('0xe'));var jsforce=require(_0xdab3('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xdab3('0xa'));var querystring=require(_0xdab3('0x10'));var Papa=require(_0xdab3('0x11'));var Redis=require(_0xdab3('0x12'));var authService=require(_0xdab3('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xdab3('0x14'))(_0xdab3('0x15'));var utils=require(_0xdab3('0x16'));var config=require(_0xdab3('0x17'));var licenseUtil=require(_0xdab3('0x18'));var db=require(_0xdab3('0x19'))['db'];function respondWithStatusCode(_0x4632e0,_0x2bfaa7){_0x2bfaa7=_0x2bfaa7||0xcc;return function(_0xd20c28){if(_0xd20c28){return _0x4632e0[_0xdab3('0x1a')](_0x2bfaa7);}return _0x4632e0['status'](_0x2bfaa7)['end']();};}function respondWithResult(_0x214871,_0x358e6d){_0x358e6d=_0x358e6d||0xc8;return function(_0x5f424e){if(_0x5f424e){return _0x214871[_0xdab3('0x1b')](_0x358e6d)['json'](_0x5f424e);}};}function respondWithFilteredResult(_0x3a5230,_0x1b6f32){return function(_0x444ded){if(_0x444ded){var _0x1d030a=typeof _0x1b6f32['offset']==='undefined'&&typeof _0x1b6f32[_0xdab3('0x1c')]==='undefined';var _0x26be72=_0x444ded['count'];var _0x49d2c6=_0x1d030a?0x0:_0x1b6f32['offset'];var _0x124f58=_0x1d030a?_0x444ded[_0xdab3('0x1d')]:_0x1b6f32[_0xdab3('0x1e')]+_0x1b6f32['limit'];var _0x15d205;if(_0x124f58>=_0x26be72){_0x124f58=_0x26be72;_0x15d205=0xc8;}else{_0x15d205=0xce;}_0x3a5230[_0xdab3('0x1b')](_0x15d205);return _0x3a5230['set'](_0xdab3('0x1f'),_0x49d2c6+'-'+_0x124f58+'/'+_0x26be72)['json'](_0x444ded);}return null;};}function patchUpdates(_0x535efa){return function(_0x3bef2d){try{jsonpatch['apply'](_0x3bef2d,_0x535efa,!![]);}catch(_0x45579e){return BPromise[_0xdab3('0x20')](_0x45579e);}return _0x3bef2d[_0xdab3('0x21')]();};}function saveUpdates(_0x1551fc,_0x3700be){return function(_0x531e31){if(_0x531e31){return _0x531e31[_0xdab3('0x22')](_0x1551fc)[_0xdab3('0x23')](function(_0x392d41){return _0x392d41;});}return null;};}function removeEntity(_0xd64d08,_0x43087e){return function(_0x4631be){if(_0x4631be){return _0x4631be[_0xdab3('0x24')]()[_0xdab3('0x23')](function(){_0xd64d08['status'](0xcc)[_0xdab3('0x25')]();});}};}function handleEntityNotFound(_0x3fad3a,_0x5de7ea){return function(_0x19ab8c){if(!_0x19ab8c){_0x3fad3a['sendStatus'](0x194);}return _0x19ab8c;};}function handleError(_0x5e3470,_0x558855){_0x558855=_0x558855||0x1f4;return function(_0x170759){logger[_0xdab3('0x26')](_0x170759[_0xdab3('0x27')]);if(_0x170759[_0xdab3('0x28')]){delete _0x170759[_0xdab3('0x28')];}_0x5e3470[_0xdab3('0x1b')](_0x558855)[_0xdab3('0x29')](_0x170759);};}exports[_0xdab3('0x2a')]=function(_0x24c664,_0x2916da){var _0x342dc2={},_0x9933cd={},_0x3cb761={'count':0x0,'rows':[]};var _0x4358df=_[_0xdab3('0x2b')](db[_0xdab3('0x2c')][_0xdab3('0x2d')],function(_0x20587e){return{'name':_0x20587e[_0xdab3('0x2e')],'type':_0x20587e['type']['key']};});_0x9933cd['model']=_[_0xdab3('0x2b')](_0x4358df,_0xdab3('0x28'));_0x9933cd['query']=_[_0xdab3('0x2f')](_0x24c664[_0xdab3('0x30')]);_0x9933cd[_0xdab3('0x31')]=_[_0xdab3('0x32')](_0x9933cd['model'],_0x9933cd[_0xdab3('0x30')]);_0x342dc2[_0xdab3('0x33')]=_[_0xdab3('0x32')](_0x9933cd[_0xdab3('0x34')],qs[_0xdab3('0x35')](_0x24c664[_0xdab3('0x30')][_0xdab3('0x35')]));_0x342dc2[_0xdab3('0x33')]=_0x342dc2[_0xdab3('0x33')][_0xdab3('0x36')]?_0x342dc2['attributes']:_0x9933cd[_0xdab3('0x34')];if(!_0x24c664[_0xdab3('0x30')][_0xdab3('0x37')]('nolimit')){_0x342dc2[_0xdab3('0x1c')]=qs[_0xdab3('0x1c')](_0x24c664[_0xdab3('0x30')][_0xdab3('0x1c')]);_0x342dc2['offset']=qs[_0xdab3('0x1e')](_0x24c664[_0xdab3('0x30')][_0xdab3('0x1e')]);}_0x342dc2[_0xdab3('0x38')]=qs[_0xdab3('0x39')](_0x24c664[_0xdab3('0x30')]['sort']);_0x342dc2[_0xdab3('0x3a')]=qs[_0xdab3('0x31')](_[_0xdab3('0x3b')](_0x24c664[_0xdab3('0x30')],_0x9933cd[_0xdab3('0x31')]),_0x4358df);if(_0x24c664[_0xdab3('0x30')][_0xdab3('0x3c')]){_0x342dc2[_0xdab3('0x3a')]=_['merge'](_0x342dc2['where'],{'$or':_[_0xdab3('0x2b')](_0x4358df,function(_0x38afd6){if(_0x38afd6[_0xdab3('0x3d')]!=='VIRTUAL'){var _0x12e28a={};_0x12e28a[_0x38afd6['name']]={'$like':'%'+_0x24c664[_0xdab3('0x30')][_0xdab3('0x3c')]+'%'};return _0x12e28a;}})});}_0x342dc2=_[_0xdab3('0x3e')]({},_0x342dc2,_0x24c664[_0xdab3('0x3f')]);var _0x386b99={'where':_0x342dc2[_0xdab3('0x3a')]};return db[_0xdab3('0x2c')][_0xdab3('0x1d')](_0x386b99)[_0xdab3('0x23')](function(_0x7c646){_0x3cb761[_0xdab3('0x1d')]=_0x7c646;if(_0x24c664['query'][_0xdab3('0x40')]){_0x342dc2[_0xdab3('0x41')]=[{'all':!![]}];}return db[_0xdab3('0x2c')][_0xdab3('0x42')](_0x342dc2);})[_0xdab3('0x23')](function(_0x344c9d){_0x3cb761[_0xdab3('0x43')]=_0x344c9d;return _0x3cb761;})[_0xdab3('0x23')](respondWithFilteredResult(_0x2916da,_0x342dc2))[_0xdab3('0x44')](handleError(_0x2916da,null));};exports[_0xdab3('0x45')]=function(_0x2dc9b2,_0x34990f){var _0x25f02b={'raw':![],'where':{'id':_0x2dc9b2['params']['id']}},_0x3a59d0={};_0x3a59d0[_0xdab3('0x34')]=_['keys'](db[_0xdab3('0x2c')][_0xdab3('0x2d')]);_0x3a59d0[_0xdab3('0x30')]=_['keys'](_0x2dc9b2[_0xdab3('0x30')]);_0x3a59d0[_0xdab3('0x31')]=_['intersection'](_0x3a59d0['model'],_0x3a59d0[_0xdab3('0x30')]);_0x25f02b[_0xdab3('0x33')]=_[_0xdab3('0x32')](_0x3a59d0[_0xdab3('0x34')],qs[_0xdab3('0x35')](_0x2dc9b2[_0xdab3('0x30')][_0xdab3('0x35')]));_0x25f02b[_0xdab3('0x33')]=_0x25f02b['attributes'][_0xdab3('0x36')]?_0x25f02b[_0xdab3('0x33')]:_0x3a59d0['model'];if(_0x2dc9b2[_0xdab3('0x30')][_0xdab3('0x40')]){_0x25f02b[_0xdab3('0x41')]=[{'all':!![]}];}_0x25f02b=_[_0xdab3('0x3e')]({},_0x25f02b,_0x2dc9b2['options']);return db[_0xdab3('0x2c')][_0xdab3('0x46')](_0x25f02b)[_0xdab3('0x23')](handleEntityNotFound(_0x34990f,null))[_0xdab3('0x23')](respondWithResult(_0x34990f,null))[_0xdab3('0x44')](handleError(_0x34990f,null));};exports['create']=function(_0xd0204c,_0x40f520){return db[_0xdab3('0x2c')]['create'](_0xd0204c[_0xdab3('0x47')],{})[_0xdab3('0x23')](respondWithResult(_0x40f520,0xc9))[_0xdab3('0x44')](handleError(_0x40f520,null));};exports[_0xdab3('0x48')]=function(_0xd9b734,_0x4bfdc9){return db['AnalyticFieldReport'][_0xdab3('0x48')](_0xd9b734[_0xdab3('0x47')],{'raw':![],'individualHooks':!![]})[_0xdab3('0x23')](respondWithResult(_0x4bfdc9,0xc9))[_0xdab3('0x44')](handleError(_0x4bfdc9,null));};exports[_0xdab3('0x22')]=function(_0x2ddbc7,_0x4dd045){if(_0x2ddbc7[_0xdab3('0x47')]['id']){delete _0x2ddbc7[_0xdab3('0x47')]['id'];}return db[_0xdab3('0x2c')][_0xdab3('0x46')]({'where':{'id':_0x2ddbc7[_0xdab3('0x49')]['id']}})[_0xdab3('0x23')](handleEntityNotFound(_0x4dd045,null))['then'](saveUpdates(_0x2ddbc7[_0xdab3('0x47')],null))[_0xdab3('0x23')](respondWithResult(_0x4dd045,null))[_0xdab3('0x44')](handleError(_0x4dd045,null));};exports[_0xdab3('0x24')]=function(_0x19f8f3,_0x3f46cc){return db[_0xdab3('0x2c')][_0xdab3('0x46')]({'where':{'id':_0x19f8f3[_0xdab3('0x49')]['id']}})[_0xdab3('0x23')](handleEntityNotFound(_0x3f46cc,null))['then'](removeEntity(_0x3f46cc,null))['catch'](handleError(_0x3f46cc,null));};exports['bulkDestroy']=function(_0x4e248a,_0x51ec2b){return db['AnalyticFieldReport'][_0xdab3('0x24')]({'where':{'id':_0x4e248a[_0xdab3('0x30')][_0xdab3('0x4a')]||[]},'raw':![],'individualHooks':!![]})[_0xdab3('0x23')](respondWithResult(_0x51ec2b,0xcc))[_0xdab3('0x44')](handleError(_0x51ec2b,null));};exports[_0xdab3('0x4b')]=function(_0x11e937,_0x1ed504,_0x17743a){return db['AnalyticCustomReport'][_0xdab3('0x4c')]({'where':{'id':_0x11e937[_0xdab3('0x49')]['id']}})['then'](handleEntityNotFound(_0x1ed504,null))[_0xdab3('0x23')](function(_0x320131){if(_0x320131){return db[_0xdab3('0x4d')][_0xdab3('0x4e')](function(_0x46e47f){return db[_0xdab3('0x2c')][_0xdab3('0x24')]({'where':{'CustomReportId':_0x11e937['params']['id']},'transaction':_0x46e47f})[_0xdab3('0x23')](function(_0x43e6f3){var _0x5ed5e2=_[_0xdab3('0x2b')](_0x11e937[_0xdab3('0x47')],function(_0x570495){delete _0x570495['id'];_0x570495[_0xdab3('0x4f')]=_0x11e937['params']['id'];return _0x570495;});return db[_0xdab3('0x2c')][_0xdab3('0x48')](_0x5ed5e2,{'transaction':_0x46e47f});});})[_0xdab3('0x23')](function(){return db[_0xdab3('0x2c')]['findAll']({'where':{'CustomReportId':_0x11e937[_0xdab3('0x49')]['id']}});});}})[_0xdab3('0x23')](respondWithResult(_0x1ed504,null))[_0xdab3('0x44')](handleError(_0x1ed504,null));};
\ No newline at end of file
+var _0xcc0c=['reject','save','then','error','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','AnalyticFieldReport','includeAll','include','rows','catch','show','params','keys','options','find','create','body','bulkCreate','destroy','bulkDestroy','ids','AnalyticCustomReport','sequelize','transaction','CustomReportId','findAll','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x235b18,_0x2cb00a){var _0x1ca64c=function(_0x2b6ec3){while(--_0x2b6ec3){_0x235b18['push'](_0x235b18['shift']());}};_0x1ca64c(++_0x2cb00a);}(_0xcc0c,0x88));var _0xccc0=function(_0x1d38fc,_0x27cd20){_0x1d38fc=_0x1d38fc-0x0;var _0x1a260c=_0xcc0c[_0x1d38fc];return _0x1a260c;};'use strict';var emlformat=require(_0xccc0('0x0'));var rimraf=require(_0xccc0('0x1'));var zipdir=require(_0xccc0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xccc0('0x3'));var moment=require(_0xccc0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xccc0('0x5'));var util=require(_0xccc0('0x6'));var path=require(_0xccc0('0x7'));var sox=require(_0xccc0('0x8'));var csv=require(_0xccc0('0x9'));var ejs=require(_0xccc0('0xa'));var fs=require('fs');var fs_extra=require(_0xccc0('0xb'));var _=require(_0xccc0('0xc'));var squel=require(_0xccc0('0xd'));var crypto=require('crypto');var jsforce=require(_0xccc0('0xe'));var deskjs=require(_0xccc0('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xccc0('0x10'));var Redis=require(_0xccc0('0x11'));var authService=require(_0xccc0('0x12'));var qs=require(_0xccc0('0x13'));var as=require(_0xccc0('0x14'));var hardwareService=require(_0xccc0('0x15'));var logger=require(_0xccc0('0x16'))(_0xccc0('0x17'));var utils=require(_0xccc0('0x18'));var config=require(_0xccc0('0x19'));var licenseUtil=require(_0xccc0('0x1a'));var db=require(_0xccc0('0x1b'))['db'];function respondWithStatusCode(_0x4d5205,_0x521c6d){_0x521c6d=_0x521c6d||0xcc;return function(_0x46fb80){if(_0x46fb80){return _0x4d5205[_0xccc0('0x1c')](_0x521c6d);}return _0x4d5205[_0xccc0('0x1d')](_0x521c6d)[_0xccc0('0x1e')]();};}function respondWithResult(_0x294657,_0xface73){_0xface73=_0xface73||0xc8;return function(_0x3a9816){if(_0x3a9816){return _0x294657[_0xccc0('0x1d')](_0xface73)['json'](_0x3a9816);}};}function respondWithFilteredResult(_0x68a037,_0x547cf4){return function(_0x4907e7){if(_0x4907e7){var _0x1568b5=typeof _0x547cf4[_0xccc0('0x1f')]===_0xccc0('0x20')&&typeof _0x547cf4[_0xccc0('0x21')]===_0xccc0('0x20');var _0x2f9e37=_0x4907e7[_0xccc0('0x22')];var _0x514a67=_0x1568b5?0x0:_0x547cf4[_0xccc0('0x1f')];var _0x36e1e7=_0x1568b5?_0x4907e7[_0xccc0('0x22')]:_0x547cf4[_0xccc0('0x1f')]+_0x547cf4['limit'];var _0xb2b0fa;if(_0x36e1e7>=_0x2f9e37){_0x36e1e7=_0x2f9e37;_0xb2b0fa=0xc8;}else{_0xb2b0fa=0xce;}_0x68a037[_0xccc0('0x1d')](_0xb2b0fa);return _0x68a037[_0xccc0('0x23')](_0xccc0('0x24'),_0x514a67+'-'+_0x36e1e7+'/'+_0x2f9e37)['json'](_0x4907e7);}return null;};}function patchUpdates(_0x519a6c){return function(_0x2b4800){try{jsonpatch[_0xccc0('0x25')](_0x2b4800,_0x519a6c,!![]);}catch(_0x20314e){return BPromise[_0xccc0('0x26')](_0x20314e);}return _0x2b4800[_0xccc0('0x27')]();};}function saveUpdates(_0x2a6a76,_0x15f730){return function(_0x2beded){if(_0x2beded){return _0x2beded['update'](_0x2a6a76)[_0xccc0('0x28')](function(_0x5980da){return _0x5980da;});}return null;};}function removeEntity(_0x360c7f,_0x44f61e){return function(_0x1b84b1){if(_0x1b84b1){return _0x1b84b1['destroy']()[_0xccc0('0x28')](function(){_0x360c7f[_0xccc0('0x1d')](0xcc)[_0xccc0('0x1e')]();});}};}function handleEntityNotFound(_0x2ced73,_0x48e2f2){return function(_0x43dadd){if(!_0x43dadd){_0x2ced73[_0xccc0('0x1c')](0x194);}return _0x43dadd;};}function handleError(_0x4a8921,_0x152156){_0x152156=_0x152156||0x1f4;return function(_0xfaa1ff){logger[_0xccc0('0x29')](_0xfaa1ff['stack']);if(_0xfaa1ff[_0xccc0('0x2a')]){delete _0xfaa1ff[_0xccc0('0x2a')];}_0x4a8921['status'](_0x152156)[_0xccc0('0x2b')](_0xfaa1ff);};}exports[_0xccc0('0x2c')]=function(_0xb9677,_0x257cc2){var _0x2cb561={},_0x5e6b9a={},_0x356fe4={'count':0x0,'rows':[]};var _0x268fad=_[_0xccc0('0x2d')](db['AnalyticFieldReport'][_0xccc0('0x2e')],function(_0x4991a2){return{'name':_0x4991a2[_0xccc0('0x2f')],'type':_0x4991a2[_0xccc0('0x30')][_0xccc0('0x31')]};});_0x5e6b9a['model']=_['map'](_0x268fad,_0xccc0('0x2a'));_0x5e6b9a[_0xccc0('0x32')]=_['keys'](_0xb9677[_0xccc0('0x32')]);_0x5e6b9a[_0xccc0('0x33')]=_[_0xccc0('0x34')](_0x5e6b9a[_0xccc0('0x35')],_0x5e6b9a[_0xccc0('0x32')]);_0x2cb561[_0xccc0('0x36')]=_['intersection'](_0x5e6b9a['model'],qs[_0xccc0('0x37')](_0xb9677[_0xccc0('0x32')][_0xccc0('0x37')]));_0x2cb561[_0xccc0('0x36')]=_0x2cb561['attributes'][_0xccc0('0x38')]?_0x2cb561[_0xccc0('0x36')]:_0x5e6b9a[_0xccc0('0x35')];if(!_0xb9677[_0xccc0('0x32')][_0xccc0('0x39')](_0xccc0('0x3a'))){_0x2cb561[_0xccc0('0x21')]=qs[_0xccc0('0x21')](_0xb9677[_0xccc0('0x32')][_0xccc0('0x21')]);_0x2cb561[_0xccc0('0x1f')]=qs[_0xccc0('0x1f')](_0xb9677[_0xccc0('0x32')][_0xccc0('0x1f')]);}_0x2cb561[_0xccc0('0x3b')]=qs[_0xccc0('0x3c')](_0xb9677[_0xccc0('0x32')][_0xccc0('0x3c')]);_0x2cb561[_0xccc0('0x3d')]=qs['filters'](_[_0xccc0('0x3e')](_0xb9677['query'],_0x5e6b9a['filters']),_0x268fad);if(_0xb9677[_0xccc0('0x32')][_0xccc0('0x3f')]){_0x2cb561[_0xccc0('0x3d')]=_['merge'](_0x2cb561[_0xccc0('0x3d')],{'$or':_[_0xccc0('0x2d')](_0x268fad,function(_0x31cb6d){if(_0x31cb6d[_0xccc0('0x30')]!==_0xccc0('0x40')){var _0xe35a6b={};_0xe35a6b[_0x31cb6d[_0xccc0('0x2a')]]={'$like':'%'+_0xb9677['query'][_0xccc0('0x3f')]+'%'};return _0xe35a6b;}})});}_0x2cb561=_[_0xccc0('0x41')]({},_0x2cb561,_0xb9677['options']);var _0x118f35={'where':_0x2cb561[_0xccc0('0x3d')]};return db[_0xccc0('0x42')][_0xccc0('0x22')](_0x118f35)[_0xccc0('0x28')](function(_0x394ad1){_0x356fe4[_0xccc0('0x22')]=_0x394ad1;if(_0xb9677[_0xccc0('0x32')][_0xccc0('0x43')]){_0x2cb561[_0xccc0('0x44')]=[{'all':!![]}];}return db[_0xccc0('0x42')]['findAll'](_0x2cb561);})['then'](function(_0x28c352){_0x356fe4[_0xccc0('0x45')]=_0x28c352;return _0x356fe4;})[_0xccc0('0x28')](respondWithFilteredResult(_0x257cc2,_0x2cb561))[_0xccc0('0x46')](handleError(_0x257cc2,null));};exports[_0xccc0('0x47')]=function(_0x51425a,_0x2fd166){var _0x2da038={'raw':![],'where':{'id':_0x51425a[_0xccc0('0x48')]['id']}},_0x42420e={};_0x42420e['model']=_[_0xccc0('0x49')](db[_0xccc0('0x42')]['rawAttributes']);_0x42420e[_0xccc0('0x32')]=_[_0xccc0('0x49')](_0x51425a[_0xccc0('0x32')]);_0x42420e[_0xccc0('0x33')]=_[_0xccc0('0x34')](_0x42420e[_0xccc0('0x35')],_0x42420e['query']);_0x2da038[_0xccc0('0x36')]=_[_0xccc0('0x34')](_0x42420e[_0xccc0('0x35')],qs[_0xccc0('0x37')](_0x51425a[_0xccc0('0x32')][_0xccc0('0x37')]));_0x2da038[_0xccc0('0x36')]=_0x2da038[_0xccc0('0x36')][_0xccc0('0x38')]?_0x2da038[_0xccc0('0x36')]:_0x42420e[_0xccc0('0x35')];if(_0x51425a[_0xccc0('0x32')][_0xccc0('0x43')]){_0x2da038[_0xccc0('0x44')]=[{'all':!![]}];}_0x2da038=_['merge']({},_0x2da038,_0x51425a[_0xccc0('0x4a')]);return db[_0xccc0('0x42')][_0xccc0('0x4b')](_0x2da038)['then'](handleEntityNotFound(_0x2fd166,null))['then'](respondWithResult(_0x2fd166,null))[_0xccc0('0x46')](handleError(_0x2fd166,null));};exports[_0xccc0('0x4c')]=function(_0x190c33,_0x15d38c){return db['AnalyticFieldReport'][_0xccc0('0x4c')](_0x190c33[_0xccc0('0x4d')],{})[_0xccc0('0x28')](respondWithResult(_0x15d38c,0xc9))[_0xccc0('0x46')](handleError(_0x15d38c,null));};exports[_0xccc0('0x4e')]=function(_0x1ed90c,_0x34589d){return db[_0xccc0('0x42')][_0xccc0('0x4e')](_0x1ed90c[_0xccc0('0x4d')],{'raw':![],'individualHooks':!![]})[_0xccc0('0x28')](respondWithResult(_0x34589d,0xc9))[_0xccc0('0x46')](handleError(_0x34589d,null));};exports['update']=function(_0x306bf8,_0x3d2c82){if(_0x306bf8['body']['id']){delete _0x306bf8[_0xccc0('0x4d')]['id'];}return db[_0xccc0('0x42')][_0xccc0('0x4b')]({'where':{'id':_0x306bf8[_0xccc0('0x48')]['id']}})[_0xccc0('0x28')](handleEntityNotFound(_0x3d2c82,null))[_0xccc0('0x28')](saveUpdates(_0x306bf8[_0xccc0('0x4d')],null))[_0xccc0('0x28')](respondWithResult(_0x3d2c82,null))[_0xccc0('0x46')](handleError(_0x3d2c82,null));};exports[_0xccc0('0x4f')]=function(_0x17106a,_0x2c4fbd){return db[_0xccc0('0x42')]['find']({'where':{'id':_0x17106a[_0xccc0('0x48')]['id']}})[_0xccc0('0x28')](handleEntityNotFound(_0x2c4fbd,null))[_0xccc0('0x28')](removeEntity(_0x2c4fbd,null))[_0xccc0('0x46')](handleError(_0x2c4fbd,null));};exports[_0xccc0('0x50')]=function(_0x7135c8,_0x460663){return db[_0xccc0('0x42')][_0xccc0('0x4f')]({'where':{'id':_0x7135c8[_0xccc0('0x32')][_0xccc0('0x51')]||[]},'raw':![],'individualHooks':!![]})[_0xccc0('0x28')](respondWithResult(_0x460663,0xcc))[_0xccc0('0x46')](handleError(_0x460663,null));};exports['addFields']=function(_0x464706,_0x24e757,_0x283670){return db[_0xccc0('0x52')]['findOne']({'where':{'id':_0x464706[_0xccc0('0x48')]['id']}})['then'](handleEntityNotFound(_0x24e757,null))['then'](function(_0x3ba871){if(_0x3ba871){return db[_0xccc0('0x53')][_0xccc0('0x54')](function(_0x5d6095){return db[_0xccc0('0x42')][_0xccc0('0x4f')]({'where':{'CustomReportId':_0x464706[_0xccc0('0x48')]['id']},'transaction':_0x5d6095})['then'](function(_0x453771){var _0x269392=_[_0xccc0('0x2d')](_0x464706[_0xccc0('0x4d')],function(_0x5775d7){delete _0x5775d7['id'];_0x5775d7[_0xccc0('0x55')]=_0x464706[_0xccc0('0x48')]['id'];return _0x5775d7;});return db[_0xccc0('0x42')][_0xccc0('0x4e')](_0x269392,{'transaction':_0x5d6095});});})[_0xccc0('0x28')](function(){return db[_0xccc0('0x42')][_0xccc0('0x56')]({'where':{'CustomReportId':_0x464706[_0xccc0('0x48')]['id']}});});}})[_0xccc0('0x28')](respondWithResult(_0x24e757,null))['catch'](handleError(_0x24e757,null));};
\ No newline at end of file
index 702c353..5ac2101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1033=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','define','AnalyticFieldReport','analytics_report_fields','lodash'];(function(_0x485abd,_0x32c7c1){var _0x3379f1=function(_0x36b528){while(--_0x36b528){_0x485abd['push'](_0x485abd['shift']());}};_0x3379f1(++_0x32c7c1);}(_0x1033,0x8e));var _0x3103=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x1033[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0x3103('0x0'));var util=require('util');var logger=require(_0x3103('0x1'))(_0x3103('0x2'));var moment=require(_0x3103('0x3'));var BPromise=require(_0x3103('0x4'));var rp=require(_0x3103('0x5'));var fs=require('fs');var path=require(_0x3103('0x6'));var rimraf=require(_0x3103('0x7'));var config=require(_0x3103('0x8'));var attributes=require(_0x3103('0x9'));module['exports']=function(_0x2fe282,_0x201561){return _0x2fe282[_0x3103('0xa')](_0x3103('0xb'),attributes,{'tableName':_0x3103('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc62a=['define','AnalyticFieldReport','analytics_report_fields','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','./analyticFieldReport.attributes','exports'];(function(_0x2debfb,_0x1a7bf8){var _0x3ea4a3=function(_0x53f851){while(--_0x53f851){_0x2debfb['push'](_0x2debfb['shift']());}};_0x3ea4a3(++_0x1a7bf8);}(_0xc62a,0x183));var _0xac62=function(_0x24880a,_0x53f07d){_0x24880a=_0x24880a-0x0;var _0x3fb2b8=_0xc62a[_0x24880a];return _0x3fb2b8;};'use strict';var _=require(_0xac62('0x0'));var util=require(_0xac62('0x1'));var logger=require(_0xac62('0x2'))(_0xac62('0x3'));var moment=require(_0xac62('0x4'));var BPromise=require('bluebird');var rp=require(_0xac62('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac62('0x6'));var attributes=require(_0xac62('0x7'));module[_0xac62('0x8')]=function(_0x397f14,_0x50024f){return _0x397f14[_0xac62('0x9')](_0xac62('0xa'),attributes,{'tableName':_0xac62('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 42aa0cb..e4d7943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02d6=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x55b307,_0x4c5319){var _0x1b5114=function(_0x4424e0){while(--_0x4424e0){_0x55b307['push'](_0x55b307['shift']());}};_0x1b5114(++_0x4c5319);}(_0x02d6,0x1ce));var _0x602d=function(_0x1d2c3a,_0x249200){_0x1d2c3a=_0x1d2c3a-0x0;var _0x3b5128=_0x02d6[_0x1d2c3a];return _0x3b5128;};'use strict';var _=require(_0x602d('0x0'));var util=require(_0x602d('0x1'));var moment=require(_0x602d('0x2'));var BPromise=require(_0x602d('0x3'));var rs=require(_0x602d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x602d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x602d('0x6'))(_0x602d('0x7'));var config=require(_0x602d('0x8'));var jayson=require(_0x602d('0x9'));var client=jayson['client'][_0x602d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2fe431,_0x4f5157,_0x524f99){return new BPromise(function(_0x1822cc,_0x43e21b){return client[_0x602d('0xb')](_0x2fe431,_0x524f99)[_0x602d('0xc')](function(_0x3daef2){logger[_0x602d('0xd')](_0x602d('0xe'),_0x4f5157,_0x602d('0xf'));logger[_0x602d('0x10')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x4f5157,_0x602d('0xf'),JSON[_0x602d('0x11')](_0x3daef2));if(_0x3daef2['error']){if(_0x3daef2[_0x602d('0x12')]['code']===0x1f4){logger[_0x602d('0x12')](_0x602d('0xe'),_0x4f5157,_0x3daef2[_0x602d('0x12')][_0x602d('0x13')]);return _0x43e21b(_0x3daef2[_0x602d('0x12')][_0x602d('0x13')]);}logger[_0x602d('0x12')](_0x602d('0xe'),_0x4f5157,_0x3daef2[_0x602d('0x12')][_0x602d('0x13')]);return _0x1822cc(_0x3daef2[_0x602d('0x12')][_0x602d('0x13')]);}else{logger[_0x602d('0xd')](_0x602d('0xe'),_0x4f5157,_0x602d('0xf'));_0x1822cc(_0x3daef2[_0x602d('0x14')][_0x602d('0x13')]);}})['catch'](function(_0x9ce7a){logger[_0x602d('0x12')](_0x602d('0xe'),_0x4f5157,_0x9ce7a);_0x43e21b(_0x9ce7a);});});}
\ No newline at end of file
+var _0xd8b2=['code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x403c94,_0x3eb720){var _0x6976f0=function(_0x4a363a){while(--_0x4a363a){_0x403c94['push'](_0x403c94['shift']());}};_0x6976f0(++_0x3eb720);}(_0xd8b2,0xb4));var _0x2d8b=function(_0x4b68db,_0x539160){_0x4b68db=_0x4b68db-0x0;var _0xd4b7f8=_0xd8b2[_0x4b68db];return _0xd4b7f8;};'use strict';var _=require(_0x2d8b('0x0'));var util=require(_0x2d8b('0x1'));var moment=require('moment');var BPromise=require(_0x2d8b('0x2'));var rs=require(_0x2d8b('0x3'));var fs=require('fs');var Redis=require(_0x2d8b('0x4'));var db=require(_0x2d8b('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2d8b('0x6'));var config=require(_0x2d8b('0x7'));var jayson=require(_0x2d8b('0x8'));var client=jayson[_0x2d8b('0x9')][_0x2d8b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41a015,_0xe3d281,_0x4e2d84){return new BPromise(function(_0x5a24bf,_0x56b4a1){return client[_0x2d8b('0xb')](_0x41a015,_0x4e2d84)[_0x2d8b('0xc')](function(_0x3b35b2){logger[_0x2d8b('0xd')](_0x2d8b('0xe'),_0xe3d281,_0x2d8b('0xf'));logger['debug']('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0xe3d281,'request\x20sent',JSON[_0x2d8b('0x10')](_0x3b35b2));if(_0x3b35b2[_0x2d8b('0x11')]){if(_0x3b35b2[_0x2d8b('0x11')][_0x2d8b('0x12')]===0x1f4){logger['error'](_0x2d8b('0xe'),_0xe3d281,_0x3b35b2[_0x2d8b('0x11')][_0x2d8b('0x13')]);return _0x56b4a1(_0x3b35b2['error'][_0x2d8b('0x13')]);}logger[_0x2d8b('0x11')]('AnalyticFieldReport,\x20%s,\x20%s',_0xe3d281,_0x3b35b2[_0x2d8b('0x11')][_0x2d8b('0x13')]);return _0x5a24bf(_0x3b35b2['error'][_0x2d8b('0x13')]);}else{logger[_0x2d8b('0xd')]('AnalyticFieldReport,\x20%s,\x20%s',_0xe3d281,'request\x20sent');_0x5a24bf(_0x3b35b2[_0x2d8b('0x14')]['message']);}})[_0x2d8b('0x15')](function(_0x5a4f6d){logger[_0x2d8b('0x11')](_0x2d8b('0xe'),_0xe3d281,_0x5a4f6d);_0x56b4a1(_0x5a4f6d);});});}
\ No newline at end of file
index 5c051e4..d6ce3a6 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(_0x4d3d19,_0x35edd6){var _0x14ba6c=function(_0x7ed61f){while(--_0x7ed61f){_0x4d3d19['push'](_0x4d3d19['shift']());}};_0x14ba6c(++_0x35edd6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa9e0[_0x3899d1];return _0xeb4a7d;};'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(_0x43b7f5,_0xb575d){var _0xafa4f3=function(_0x5d3f2c){while(--_0x5d3f2c){_0x43b7f5['push'](_0x43b7f5['shift']());}};_0xafa4f3(++_0xb575d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'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 29b8089..f12b812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b02=['name','sequelize','exports','STRING'];(function(_0x588d09,_0x1b4518){var _0x37b806=function(_0x573eaf){while(--_0x573eaf){_0x588d09['push'](_0x588d09['shift']());}};_0x37b806(++_0x1b4518);}(_0x5b02,0xe9));var _0x25b0=function(_0x5ec26d,_0x46d3e1){_0x5ec26d=_0x5ec26d-0x0;var _0x43a53c=_0x5b02[_0x5ec26d];return _0x43a53c;};'use strict';var Sequelize=require(_0x25b0('0x0'));module[_0x25b0('0x1')]={'name':{'type':Sequelize[_0x25b0('0x2')],'allowNull':![],'unique':_0x25b0('0x3')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0x25b0('0x2')]}};
\ No newline at end of file
+var _0xd52a=['STRING','TEXT','exports','name'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xd52a,0xca));var _0xad52=function(_0x2edb44,_0xcf8cc1){_0x2edb44=_0x2edb44-0x0;var _0x32ec9a=_0xd52a[_0x2edb44];return _0x32ec9a;};'use strict';var Sequelize=require('sequelize');module[_0xad52('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xad52('0x1')},'table':{'type':Sequelize[_0xad52('0x2')]},'metric':{'type':Sequelize[_0xad52('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f0c5408..3bf1f37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da7=['model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','merge','options','where','AnalyticMetric','includeAll','include','findAll','rows','catch','params','keys','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','json','apply','reject','update','then','destroy','get','Metrics','UserProfileResource','end','name','send','index','map','rawAttributes','fieldName','type','key'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0x7da7,0x10d));var _0x77da=function(_0x296754,_0x5befe9){_0x296754=_0x296754-0x0;var _0x1d9f1d=_0x7da7[_0x296754];return _0x1d9f1d;};'use strict';var emlformat=require(_0x77da('0x0'));var rimraf=require(_0x77da('0x1'));var zipdir=require(_0x77da('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x77da('0x3'));var BPromise=require(_0x77da('0x4'));var Mustache=require('mustache');var util=require(_0x77da('0x5'));var path=require(_0x77da('0x6'));var sox=require('sox');var csv=require(_0x77da('0x7'));var ejs=require(_0x77da('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x77da('0x9'));var squel=require('squel');var crypto=require(_0x77da('0xa'));var jsforce=require(_0x77da('0xb'));var deskjs=require(_0x77da('0xc'));var toCsv=require(_0x77da('0x7'));var querystring=require(_0x77da('0xd'));var Papa=require('papaparse');var Redis=require(_0x77da('0xe'));var authService=require(_0x77da('0xf'));var qs=require(_0x77da('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77da('0x11'));var logger=require(_0x77da('0x12'))(_0x77da('0x13'));var utils=require(_0x77da('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x77da('0x15'));var db=require(_0x77da('0x16'))['db'];function respondWithStatusCode(_0x2acc65,_0x5d6e2f){_0x5d6e2f=_0x5d6e2f||0xcc;return function(_0x4a7748){if(_0x4a7748){return _0x2acc65[_0x77da('0x17')](_0x5d6e2f);}return _0x2acc65[_0x77da('0x18')](_0x5d6e2f)['end']();};}function respondWithResult(_0x3b0ff2,_0x369df0){_0x369df0=_0x369df0||0xc8;return function(_0x355719){if(_0x355719){return _0x3b0ff2[_0x77da('0x18')](_0x369df0)['json'](_0x355719);}};}function respondWithFilteredResult(_0x2172d0,_0x4e130c){return function(_0x29cd7b){if(_0x29cd7b){var _0x366443=typeof _0x4e130c[_0x77da('0x19')]===_0x77da('0x1a')&&typeof _0x4e130c['limit']==='undefined';var _0x514016=_0x29cd7b['count'];var _0x103e46=_0x366443?0x0:_0x4e130c[_0x77da('0x19')];var _0x289887=_0x366443?_0x29cd7b[_0x77da('0x1b')]:_0x4e130c[_0x77da('0x19')]+_0x4e130c[_0x77da('0x1c')];var _0x1d325c;if(_0x289887>=_0x514016){_0x289887=_0x514016;_0x1d325c=0xc8;}else{_0x1d325c=0xce;}_0x2172d0[_0x77da('0x18')](_0x1d325c);return _0x2172d0['set']('Content-Range',_0x103e46+'-'+_0x289887+'/'+_0x514016)[_0x77da('0x1d')](_0x29cd7b);}return null;};}function patchUpdates(_0x4d1512){return function(_0x507979){try{jsonpatch[_0x77da('0x1e')](_0x507979,_0x4d1512,!![]);}catch(_0x304a2b){return BPromise[_0x77da('0x1f')](_0x304a2b);}return _0x507979['save']();};}function saveUpdates(_0x58270c,_0x3e6cfe){return function(_0x58f6c1){if(_0x58f6c1){return _0x58f6c1[_0x77da('0x20')](_0x58270c)[_0x77da('0x21')](function(_0xc52f0e){return _0xc52f0e;});}return null;};}function removeEntity(_0x27b6c7,_0x10399a){return function(_0x270318){if(_0x270318){return _0x270318[_0x77da('0x22')]()['then'](function(){var _0x4885ec=_0x270318[_0x77da('0x23')]({'plain':!![]});var _0x2d009f=_0x77da('0x24');return db[_0x77da('0x25')]['destroy']({'where':{'type':_0x2d009f,'resourceId':_0x4885ec['id']}})[_0x77da('0x21')](function(){return _0x270318;});})[_0x77da('0x21')](function(){_0x27b6c7[_0x77da('0x18')](0xcc)[_0x77da('0x26')]();});}};}function handleEntityNotFound(_0x446ae7,_0x5997b6){return function(_0xce24b8){if(!_0xce24b8){_0x446ae7[_0x77da('0x17')](0x194);}return _0xce24b8;};}function handleError(_0x1f2279,_0x2913f7){_0x2913f7=_0x2913f7||0x1f4;return function(_0x496ecd){logger['error'](_0x496ecd['stack']);if(_0x496ecd[_0x77da('0x27')]){delete _0x496ecd[_0x77da('0x27')];}_0x1f2279[_0x77da('0x18')](_0x2913f7)[_0x77da('0x28')](_0x496ecd);};}exports[_0x77da('0x29')]=function(_0x4eeb99,_0x350b4e){var _0x26f5a0={},_0x356bfb={},_0x1d381b={'count':0x0,'rows':[]};var _0x1e7853=_[_0x77da('0x2a')](db['AnalyticMetric'][_0x77da('0x2b')],function(_0x228851){return{'name':_0x228851[_0x77da('0x2c')],'type':_0x228851[_0x77da('0x2d')][_0x77da('0x2e')]};});_0x356bfb[_0x77da('0x2f')]=_[_0x77da('0x2a')](_0x1e7853,_0x77da('0x27'));_0x356bfb['query']=_['keys'](_0x4eeb99[_0x77da('0x30')]);_0x356bfb[_0x77da('0x31')]=_['intersection'](_0x356bfb[_0x77da('0x2f')],_0x356bfb[_0x77da('0x30')]);_0x26f5a0[_0x77da('0x32')]=_[_0x77da('0x33')](_0x356bfb[_0x77da('0x2f')],qs[_0x77da('0x34')](_0x4eeb99[_0x77da('0x30')]['fields']));_0x26f5a0[_0x77da('0x32')]=_0x26f5a0['attributes']['length']?_0x26f5a0['attributes']:_0x356bfb[_0x77da('0x2f')];if(!_0x4eeb99['query'][_0x77da('0x35')](_0x77da('0x36'))){_0x26f5a0[_0x77da('0x1c')]=qs[_0x77da('0x1c')](_0x4eeb99[_0x77da('0x30')][_0x77da('0x1c')]);_0x26f5a0[_0x77da('0x19')]=qs['offset'](_0x4eeb99[_0x77da('0x30')][_0x77da('0x19')]);}_0x26f5a0[_0x77da('0x37')]=qs[_0x77da('0x38')](_0x4eeb99[_0x77da('0x30')][_0x77da('0x38')]);_0x26f5a0['where']=qs[_0x77da('0x31')](_[_0x77da('0x39')](_0x4eeb99[_0x77da('0x30')],_0x356bfb['filters']),_0x1e7853);if(_0x4eeb99[_0x77da('0x30')]['filter']){_0x26f5a0['where']=_['merge'](_0x26f5a0['where'],{'$or':_[_0x77da('0x2a')](_0x1e7853,function(_0x1adba5){if(_0x1adba5[_0x77da('0x2d')]!=='VIRTUAL'){var _0x21d337={};_0x21d337[_0x1adba5['name']]={'$like':'%'+_0x4eeb99[_0x77da('0x30')]['filter']+'%'};return _0x21d337;}})});}_0x26f5a0=_[_0x77da('0x3a')]({},_0x26f5a0,_0x4eeb99[_0x77da('0x3b')]);var _0x290667={'where':_0x26f5a0[_0x77da('0x3c')]};return db[_0x77da('0x3d')]['count'](_0x290667)[_0x77da('0x21')](function(_0x1f48bd){_0x1d381b[_0x77da('0x1b')]=_0x1f48bd;if(_0x4eeb99[_0x77da('0x30')][_0x77da('0x3e')]){_0x26f5a0[_0x77da('0x3f')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x77da('0x40')](_0x26f5a0);})[_0x77da('0x21')](function(_0x21de41){_0x1d381b[_0x77da('0x41')]=_0x21de41;return _0x1d381b;})[_0x77da('0x21')](respondWithFilteredResult(_0x350b4e,_0x26f5a0))[_0x77da('0x42')](handleError(_0x350b4e,null));};exports['show']=function(_0x10957b,_0x5abcd9){var _0x1ae806={'raw':!![],'where':{'id':_0x10957b[_0x77da('0x43')]['id']}},_0x373fb2={};_0x373fb2['model']=_[_0x77da('0x44')](db[_0x77da('0x3d')][_0x77da('0x2b')]);_0x373fb2[_0x77da('0x30')]=_[_0x77da('0x44')](_0x10957b[_0x77da('0x30')]);_0x373fb2[_0x77da('0x31')]=_[_0x77da('0x33')](_0x373fb2[_0x77da('0x2f')],_0x373fb2['query']);_0x1ae806[_0x77da('0x32')]=_[_0x77da('0x33')](_0x373fb2[_0x77da('0x2f')],qs[_0x77da('0x34')](_0x10957b[_0x77da('0x30')][_0x77da('0x34')]));_0x1ae806['attributes']=_0x1ae806['attributes'][_0x77da('0x45')]?_0x1ae806[_0x77da('0x32')]:_0x373fb2[_0x77da('0x2f')];if(_0x10957b[_0x77da('0x30')][_0x77da('0x3e')]){_0x1ae806[_0x77da('0x3f')]=[{'all':!![]}];}_0x1ae806=_['merge']({},_0x1ae806,_0x10957b[_0x77da('0x3b')]);return db[_0x77da('0x3d')][_0x77da('0x46')](_0x1ae806)[_0x77da('0x21')](handleEntityNotFound(_0x5abcd9,null))['then'](respondWithResult(_0x5abcd9,null))[_0x77da('0x42')](handleError(_0x5abcd9,null));};exports['create']=function(_0x518fd5,_0x36263b){return db[_0x77da('0x3d')][_0x77da('0x47')](_0x518fd5[_0x77da('0x48')],{})['then'](function(_0x16bf4b){var _0x1e36ee=_0x518fd5['user'][_0x77da('0x23')]({'plain':!![]});if(!_0x1e36ee)throw new Error(_0x77da('0x49'));if(_0x1e36ee['role']===_0x77da('0x4a')){var _0x3aaf5b=_0x16bf4b[_0x77da('0x23')]({'plain':!![]});var _0xef2496=_0x77da('0x24');return db[_0x77da('0x4b')][_0x77da('0x46')]({'where':{'name':_0xef2496,'userProfileId':_0x1e36ee[_0x77da('0x4c')]},'raw':!![]})[_0x77da('0x21')](function(_0x3a34a8){if(_0x3a34a8&&_0x3a34a8['autoAssociation']===0x0){return db[_0x77da('0x25')]['create']({'name':_0x3aaf5b[_0x77da('0x27')],'resourceId':_0x3aaf5b['id'],'type':_0x3a34a8[_0x77da('0x27')],'sectionId':_0x3a34a8['id']},{})[_0x77da('0x21')](function(){return _0x16bf4b;});}else{return _0x16bf4b;}})[_0x77da('0x42')](function(_0x374179){logger[_0x77da('0x4d')](_0x77da('0x4e'),_0x374179);throw _0x374179;});}return _0x16bf4b;})['then'](respondWithResult(_0x36263b,0xc9))[_0x77da('0x42')](handleError(_0x36263b,null));};exports[_0x77da('0x20')]=function(_0x1a7115,_0x353be9){if(_0x1a7115['body']['id']){delete _0x1a7115[_0x77da('0x48')]['id'];}return db[_0x77da('0x3d')][_0x77da('0x46')]({'where':{'id':_0x1a7115['params']['id']}})['then'](handleEntityNotFound(_0x353be9,null))[_0x77da('0x21')](saveUpdates(_0x1a7115[_0x77da('0x48')],null))[_0x77da('0x21')](respondWithResult(_0x353be9,null))[_0x77da('0x42')](handleError(_0x353be9,null));};exports[_0x77da('0x22')]=function(_0x528a32,_0x50437b){return db[_0x77da('0x3d')][_0x77da('0x46')]({'where':{'id':_0x528a32['params']['id']}})[_0x77da('0x21')](handleEntityNotFound(_0x50437b,null))[_0x77da('0x21')](removeEntity(_0x50437b,null))[_0x77da('0x42')](handleError(_0x50437b,null));};
\ No newline at end of file
+var _0x7da7=['model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','merge','options','where','AnalyticMetric','includeAll','include','findAll','rows','catch','params','keys','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','json','apply','reject','update','then','destroy','get','Metrics','UserProfileResource','end','name','send','index','map','rawAttributes','fieldName','type','key'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0x7da7,0x10d));var _0x77da=function(_0x1139d0,_0x41e5f8){_0x1139d0=_0x1139d0-0x0;var _0xcc01a6=_0x7da7[_0x1139d0];return _0xcc01a6;};'use strict';var emlformat=require(_0x77da('0x0'));var rimraf=require(_0x77da('0x1'));var zipdir=require(_0x77da('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x77da('0x3'));var BPromise=require(_0x77da('0x4'));var Mustache=require('mustache');var util=require(_0x77da('0x5'));var path=require(_0x77da('0x6'));var sox=require('sox');var csv=require(_0x77da('0x7'));var ejs=require(_0x77da('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x77da('0x9'));var squel=require('squel');var crypto=require(_0x77da('0xa'));var jsforce=require(_0x77da('0xb'));var deskjs=require(_0x77da('0xc'));var toCsv=require(_0x77da('0x7'));var querystring=require(_0x77da('0xd'));var Papa=require('papaparse');var Redis=require(_0x77da('0xe'));var authService=require(_0x77da('0xf'));var qs=require(_0x77da('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77da('0x11'));var logger=require(_0x77da('0x12'))(_0x77da('0x13'));var utils=require(_0x77da('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x77da('0x15'));var db=require(_0x77da('0x16'))['db'];function respondWithStatusCode(_0x2acc65,_0x5d6e2f){_0x5d6e2f=_0x5d6e2f||0xcc;return function(_0x4a7748){if(_0x4a7748){return _0x2acc65[_0x77da('0x17')](_0x5d6e2f);}return _0x2acc65[_0x77da('0x18')](_0x5d6e2f)['end']();};}function respondWithResult(_0x3b0ff2,_0x369df0){_0x369df0=_0x369df0||0xc8;return function(_0x355719){if(_0x355719){return _0x3b0ff2[_0x77da('0x18')](_0x369df0)['json'](_0x355719);}};}function respondWithFilteredResult(_0x2172d0,_0x4e130c){return function(_0x29cd7b){if(_0x29cd7b){var _0x366443=typeof _0x4e130c[_0x77da('0x19')]===_0x77da('0x1a')&&typeof _0x4e130c['limit']==='undefined';var _0x514016=_0x29cd7b['count'];var _0x103e46=_0x366443?0x0:_0x4e130c[_0x77da('0x19')];var _0x289887=_0x366443?_0x29cd7b[_0x77da('0x1b')]:_0x4e130c[_0x77da('0x19')]+_0x4e130c[_0x77da('0x1c')];var _0x1d325c;if(_0x289887>=_0x514016){_0x289887=_0x514016;_0x1d325c=0xc8;}else{_0x1d325c=0xce;}_0x2172d0[_0x77da('0x18')](_0x1d325c);return _0x2172d0['set']('Content-Range',_0x103e46+'-'+_0x289887+'/'+_0x514016)[_0x77da('0x1d')](_0x29cd7b);}return null;};}function patchUpdates(_0x4d1512){return function(_0x507979){try{jsonpatch[_0x77da('0x1e')](_0x507979,_0x4d1512,!![]);}catch(_0x304a2b){return BPromise[_0x77da('0x1f')](_0x304a2b);}return _0x507979['save']();};}function saveUpdates(_0x58270c,_0x3e6cfe){return function(_0x58f6c1){if(_0x58f6c1){return _0x58f6c1[_0x77da('0x20')](_0x58270c)[_0x77da('0x21')](function(_0xc52f0e){return _0xc52f0e;});}return null;};}function removeEntity(_0x27b6c7,_0x10399a){return function(_0x270318){if(_0x270318){return _0x270318[_0x77da('0x22')]()['then'](function(){var _0x4885ec=_0x270318[_0x77da('0x23')]({'plain':!![]});var _0x2d009f=_0x77da('0x24');return db[_0x77da('0x25')]['destroy']({'where':{'type':_0x2d009f,'resourceId':_0x4885ec['id']}})[_0x77da('0x21')](function(){return _0x270318;});})[_0x77da('0x21')](function(){_0x27b6c7[_0x77da('0x18')](0xcc)[_0x77da('0x26')]();});}};}function handleEntityNotFound(_0x446ae7,_0x5997b6){return function(_0xce24b8){if(!_0xce24b8){_0x446ae7[_0x77da('0x17')](0x194);}return _0xce24b8;};}function handleError(_0x1f2279,_0x2913f7){_0x2913f7=_0x2913f7||0x1f4;return function(_0x496ecd){logger['error'](_0x496ecd['stack']);if(_0x496ecd[_0x77da('0x27')]){delete _0x496ecd[_0x77da('0x27')];}_0x1f2279[_0x77da('0x18')](_0x2913f7)[_0x77da('0x28')](_0x496ecd);};}exports[_0x77da('0x29')]=function(_0x4eeb99,_0x350b4e){var _0x26f5a0={},_0x356bfb={},_0x1d381b={'count':0x0,'rows':[]};var _0x1e7853=_[_0x77da('0x2a')](db['AnalyticMetric'][_0x77da('0x2b')],function(_0x228851){return{'name':_0x228851[_0x77da('0x2c')],'type':_0x228851[_0x77da('0x2d')][_0x77da('0x2e')]};});_0x356bfb[_0x77da('0x2f')]=_[_0x77da('0x2a')](_0x1e7853,_0x77da('0x27'));_0x356bfb['query']=_['keys'](_0x4eeb99[_0x77da('0x30')]);_0x356bfb[_0x77da('0x31')]=_['intersection'](_0x356bfb[_0x77da('0x2f')],_0x356bfb[_0x77da('0x30')]);_0x26f5a0[_0x77da('0x32')]=_[_0x77da('0x33')](_0x356bfb[_0x77da('0x2f')],qs[_0x77da('0x34')](_0x4eeb99[_0x77da('0x30')]['fields']));_0x26f5a0[_0x77da('0x32')]=_0x26f5a0['attributes']['length']?_0x26f5a0['attributes']:_0x356bfb[_0x77da('0x2f')];if(!_0x4eeb99['query'][_0x77da('0x35')](_0x77da('0x36'))){_0x26f5a0[_0x77da('0x1c')]=qs[_0x77da('0x1c')](_0x4eeb99[_0x77da('0x30')][_0x77da('0x1c')]);_0x26f5a0[_0x77da('0x19')]=qs['offset'](_0x4eeb99[_0x77da('0x30')][_0x77da('0x19')]);}_0x26f5a0[_0x77da('0x37')]=qs[_0x77da('0x38')](_0x4eeb99[_0x77da('0x30')][_0x77da('0x38')]);_0x26f5a0['where']=qs[_0x77da('0x31')](_[_0x77da('0x39')](_0x4eeb99[_0x77da('0x30')],_0x356bfb['filters']),_0x1e7853);if(_0x4eeb99[_0x77da('0x30')]['filter']){_0x26f5a0['where']=_['merge'](_0x26f5a0['where'],{'$or':_[_0x77da('0x2a')](_0x1e7853,function(_0x1adba5){if(_0x1adba5[_0x77da('0x2d')]!=='VIRTUAL'){var _0x21d337={};_0x21d337[_0x1adba5['name']]={'$like':'%'+_0x4eeb99[_0x77da('0x30')]['filter']+'%'};return _0x21d337;}})});}_0x26f5a0=_[_0x77da('0x3a')]({},_0x26f5a0,_0x4eeb99[_0x77da('0x3b')]);var _0x290667={'where':_0x26f5a0[_0x77da('0x3c')]};return db[_0x77da('0x3d')]['count'](_0x290667)[_0x77da('0x21')](function(_0x1f48bd){_0x1d381b[_0x77da('0x1b')]=_0x1f48bd;if(_0x4eeb99[_0x77da('0x30')][_0x77da('0x3e')]){_0x26f5a0[_0x77da('0x3f')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x77da('0x40')](_0x26f5a0);})[_0x77da('0x21')](function(_0x21de41){_0x1d381b[_0x77da('0x41')]=_0x21de41;return _0x1d381b;})[_0x77da('0x21')](respondWithFilteredResult(_0x350b4e,_0x26f5a0))[_0x77da('0x42')](handleError(_0x350b4e,null));};exports['show']=function(_0x10957b,_0x5abcd9){var _0x1ae806={'raw':!![],'where':{'id':_0x10957b[_0x77da('0x43')]['id']}},_0x373fb2={};_0x373fb2['model']=_[_0x77da('0x44')](db[_0x77da('0x3d')][_0x77da('0x2b')]);_0x373fb2[_0x77da('0x30')]=_[_0x77da('0x44')](_0x10957b[_0x77da('0x30')]);_0x373fb2[_0x77da('0x31')]=_[_0x77da('0x33')](_0x373fb2[_0x77da('0x2f')],_0x373fb2['query']);_0x1ae806[_0x77da('0x32')]=_[_0x77da('0x33')](_0x373fb2[_0x77da('0x2f')],qs[_0x77da('0x34')](_0x10957b[_0x77da('0x30')][_0x77da('0x34')]));_0x1ae806['attributes']=_0x1ae806['attributes'][_0x77da('0x45')]?_0x1ae806[_0x77da('0x32')]:_0x373fb2[_0x77da('0x2f')];if(_0x10957b[_0x77da('0x30')][_0x77da('0x3e')]){_0x1ae806[_0x77da('0x3f')]=[{'all':!![]}];}_0x1ae806=_['merge']({},_0x1ae806,_0x10957b[_0x77da('0x3b')]);return db[_0x77da('0x3d')][_0x77da('0x46')](_0x1ae806)[_0x77da('0x21')](handleEntityNotFound(_0x5abcd9,null))['then'](respondWithResult(_0x5abcd9,null))[_0x77da('0x42')](handleError(_0x5abcd9,null));};exports['create']=function(_0x518fd5,_0x36263b){return db[_0x77da('0x3d')][_0x77da('0x47')](_0x518fd5[_0x77da('0x48')],{})['then'](function(_0x16bf4b){var _0x1e36ee=_0x518fd5['user'][_0x77da('0x23')]({'plain':!![]});if(!_0x1e36ee)throw new Error(_0x77da('0x49'));if(_0x1e36ee['role']===_0x77da('0x4a')){var _0x3aaf5b=_0x16bf4b[_0x77da('0x23')]({'plain':!![]});var _0xef2496=_0x77da('0x24');return db[_0x77da('0x4b')][_0x77da('0x46')]({'where':{'name':_0xef2496,'userProfileId':_0x1e36ee[_0x77da('0x4c')]},'raw':!![]})[_0x77da('0x21')](function(_0x3a34a8){if(_0x3a34a8&&_0x3a34a8['autoAssociation']===0x0){return db[_0x77da('0x25')]['create']({'name':_0x3aaf5b[_0x77da('0x27')],'resourceId':_0x3aaf5b['id'],'type':_0x3a34a8[_0x77da('0x27')],'sectionId':_0x3a34a8['id']},{})[_0x77da('0x21')](function(){return _0x16bf4b;});}else{return _0x16bf4b;}})[_0x77da('0x42')](function(_0x374179){logger[_0x77da('0x4d')](_0x77da('0x4e'),_0x374179);throw _0x374179;});}return _0x16bf4b;})['then'](respondWithResult(_0x36263b,0xc9))[_0x77da('0x42')](handleError(_0x36263b,null));};exports[_0x77da('0x20')]=function(_0x1a7115,_0x353be9){if(_0x1a7115['body']['id']){delete _0x1a7115[_0x77da('0x48')]['id'];}return db[_0x77da('0x3d')][_0x77da('0x46')]({'where':{'id':_0x1a7115['params']['id']}})['then'](handleEntityNotFound(_0x353be9,null))[_0x77da('0x21')](saveUpdates(_0x1a7115[_0x77da('0x48')],null))[_0x77da('0x21')](respondWithResult(_0x353be9,null))[_0x77da('0x42')](handleError(_0x353be9,null));};exports[_0x77da('0x22')]=function(_0x528a32,_0x50437b){return db[_0x77da('0x3d')][_0x77da('0x46')]({'where':{'id':_0x528a32['params']['id']}})[_0x77da('0x21')](handleEntityNotFound(_0x50437b,null))[_0x77da('0x21')](removeEntity(_0x50437b,null))[_0x77da('0x42')](handleError(_0x50437b,null));};
\ No newline at end of file
index 33744ee..74d8d7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2bc=['./analyticMetric.attributes','exports','define','analytics_metrics','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x26bddd,_0x150143){var _0x179b2d=function(_0x2a6edf){while(--_0x2a6edf){_0x26bddd['push'](_0x26bddd['shift']());}};_0x179b2d(++_0x150143);}(_0xe2bc,0x1a6));var _0xce2b=function(_0x1b6c6d,_0x2983b0){_0x1b6c6d=_0x1b6c6d-0x0;var _0x290d9d=_0xe2bc[_0x1b6c6d];return _0x290d9d;};'use strict';var _=require(_0xce2b('0x0'));var util=require('util');var logger=require(_0xce2b('0x1'))('api');var moment=require(_0xce2b('0x2'));var BPromise=require(_0xce2b('0x3'));var rp=require(_0xce2b('0x4'));var fs=require('fs');var path=require(_0xce2b('0x5'));var rimraf=require(_0xce2b('0x6'));var config=require('../../config/environment');var attributes=require(_0xce2b('0x7'));module[_0xce2b('0x8')]=function(_0x3c15d3,_0x343373){return _0x3c15d3[_0xce2b('0x9')]('AnalyticMetric',attributes,{'tableName':_0xce2b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed20=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','AnalyticMetric','analytics_metrics','lodash','util'];(function(_0x447a2e,_0x5d7152){var _0x39031d=function(_0x46a6f8){while(--_0x46a6f8){_0x447a2e['push'](_0x447a2e['shift']());}};_0x39031d(++_0x5d7152);}(_0xed20,0xce));var _0x0ed2=function(_0xcd27d1,_0x39c272){_0xcd27d1=_0xcd27d1-0x0;var _0x3051c6=_0xed20[_0xcd27d1];return _0x3051c6;};'use strict';var _=require(_0x0ed2('0x0'));var util=require(_0x0ed2('0x1'));var logger=require(_0x0ed2('0x2'))('api');var moment=require(_0x0ed2('0x3'));var BPromise=require(_0x0ed2('0x4'));var rp=require(_0x0ed2('0x5'));var fs=require('fs');var path=require(_0x0ed2('0x6'));var rimraf=require(_0x0ed2('0x7'));var config=require(_0x0ed2('0x8'));var attributes=require('./analyticMetric.attributes');module[_0x0ed2('0x9')]=function(_0x88640a,_0x5c686a){return _0x88640a[_0x0ed2('0xa')](_0x0ed2('0xb'),attributes,{'tableName':_0x0ed2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d6a572a..18e9eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23bf=['then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x1cf661,_0x2c4a3c){var _0x2b3877=function(_0x4ca6fb){while(--_0x4ca6fb){_0x1cf661['push'](_0x1cf661['shift']());}};_0x2b3877(++_0x2c4a3c);}(_0x23bf,0x1d8));var _0xf23b=function(_0x27d23c,_0x11fcc7){_0x27d23c=_0x27d23c-0x0;var _0x537ed4=_0x23bf[_0x27d23c];return _0x537ed4;};'use strict';var _=require(_0xf23b('0x0'));var util=require(_0xf23b('0x1'));var moment=require('moment');var BPromise=require(_0xf23b('0x2'));var rs=require(_0xf23b('0x3'));var fs=require('fs');var Redis=require(_0xf23b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf23b('0x5'));var logger=require('../../config/logger')(_0xf23b('0x6'));var config=require(_0xf23b('0x7'));var jayson=require(_0xf23b('0x8'));var client=jayson[_0xf23b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1957ab,_0x16e051,_0x544d5b){return new BPromise(function(_0x291f0d,_0x2792b5){return client[_0xf23b('0xa')](_0x1957ab,_0x544d5b)[_0xf23b('0xb')](function(_0x5506ce){logger[_0xf23b('0xc')](_0xf23b('0xd'),_0x16e051,_0xf23b('0xe'));logger[_0xf23b('0xf')](_0xf23b('0x10'),_0x16e051,_0xf23b('0xe'),JSON[_0xf23b('0x11')](_0x5506ce));if(_0x5506ce[_0xf23b('0x12')]){if(_0x5506ce['error'][_0xf23b('0x13')]===0x1f4){logger[_0xf23b('0x12')](_0xf23b('0xd'),_0x16e051,_0x5506ce[_0xf23b('0x12')][_0xf23b('0x14')]);return _0x2792b5(_0x5506ce['error'][_0xf23b('0x14')]);}logger['error'](_0xf23b('0xd'),_0x16e051,_0x5506ce['error']['message']);return _0x291f0d(_0x5506ce['error'][_0xf23b('0x14')]);}else{logger['info'](_0xf23b('0xd'),_0x16e051,_0xf23b('0xe'));_0x291f0d(_0x5506ce['result'][_0xf23b('0x14')]);}})['catch'](function(_0x39d3c5){logger[_0xf23b('0x12')](_0xf23b('0xd'),_0x16e051,_0x39d3c5);_0x2792b5(_0x39d3c5);});});}
\ No newline at end of file
+var _0x1471=['catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x41d41d,_0x3c6817){var _0x542a92=function(_0x32b645){while(--_0x32b645){_0x41d41d['push'](_0x41d41d['shift']());}};_0x542a92(++_0x3c6817);}(_0x1471,0x6a));var _0x1147=function(_0x452d73,_0xdba000){_0x452d73=_0x452d73-0x0;var _0x2bca53=_0x1471[_0x452d73];return _0x2bca53;};'use strict';var _=require(_0x1147('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1147('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1147('0x2'));var db=require(_0x1147('0x3'))['db'];var utils=require(_0x1147('0x4'));var logger=require(_0x1147('0x5'))('rpc');var config=require(_0x1147('0x6'));var jayson=require(_0x1147('0x7'));var client=jayson[_0x1147('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x278a00,_0x5ed09d,_0x2fbfdb){return new BPromise(function(_0x33d981,_0x4fae5f){return client[_0x1147('0x9')](_0x278a00,_0x2fbfdb)[_0x1147('0xa')](function(_0x5a1a2f){logger[_0x1147('0xb')](_0x1147('0xc'),_0x5ed09d,_0x1147('0xd'));logger['debug'](_0x1147('0xe'),_0x5ed09d,_0x1147('0xd'),JSON[_0x1147('0xf')](_0x5a1a2f));if(_0x5a1a2f[_0x1147('0x10')]){if(_0x5a1a2f[_0x1147('0x10')][_0x1147('0x11')]===0x1f4){logger[_0x1147('0x10')](_0x1147('0xc'),_0x5ed09d,_0x5a1a2f[_0x1147('0x10')][_0x1147('0x12')]);return _0x4fae5f(_0x5a1a2f[_0x1147('0x10')][_0x1147('0x12')]);}logger['error'](_0x1147('0xc'),_0x5ed09d,_0x5a1a2f[_0x1147('0x10')]['message']);return _0x33d981(_0x5a1a2f['error'][_0x1147('0x12')]);}else{logger[_0x1147('0xb')](_0x1147('0xc'),_0x5ed09d,_0x1147('0xd'));_0x33d981(_0x5a1a2f[_0x1147('0x13')][_0x1147('0x12')]);}})[_0x1147('0x14')](function(_0x4790e6){logger[_0x1147('0x10')](_0x1147('0xc'),_0x5ed09d,_0x4790e6);_0x4fae5f(_0x4790e6);});});}
\ No newline at end of file
index 387d3c3..019b475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84e7=['delete','destroy','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','show','create','put','/:id'];(function(_0x4cc18f,_0x3da515){var _0x46bee6=function(_0x1ac75f){while(--_0x1ac75f){_0x4cc18f['push'](_0x4cc18f['shift']());}};_0x46bee6(++_0x3da515);}(_0x84e7,0x122));var _0x784e=function(_0x4d3786,_0x58cb35){_0x4d3786=_0x4d3786-0x0;var _0x3911f7=_0x84e7[_0x4d3786];return _0x3911f7;};'use strict';var multer=require('multer');var util=require(_0x784e('0x0'));var path=require(_0x784e('0x1'));var timeout=require('connect-timeout');var express=require(_0x784e('0x2'));var router=express[_0x784e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x784e('0x4'));var interaction=require(_0x784e('0x5'));var config=require(_0x784e('0x6'));var controller=require(_0x784e('0x7'));router[_0x784e('0x8')]('/',auth[_0x784e('0x9')](),controller['index']);router[_0x784e('0x8')]('/:id',auth[_0x784e('0x9')](),controller[_0x784e('0xa')]);router['post']('/',auth[_0x784e('0x9')](),controller[_0x784e('0xb')]);router[_0x784e('0xc')](_0x784e('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x784e('0xe')](_0x784e('0xd'),auth[_0x784e('0x9')](),controller[_0x784e('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xab29=['delete','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','index','/:id','isAuthenticated','show','create','put','update'];(function(_0x1c08f6,_0x14c077){var _0xbc156a=function(_0x59df22){while(--_0x59df22){_0x1c08f6['push'](_0x1c08f6['shift']());}};_0xbc156a(++_0x14c077);}(_0xab29,0x145));var _0x9ab2=function(_0x5e8559,_0x17a029){_0x5e8559=_0x5e8559-0x0;var _0x329b90=_0xab29[_0x5e8559];return _0x329b90;};'use strict';var multer=require(_0x9ab2('0x0'));var util=require(_0x9ab2('0x1'));var path=require(_0x9ab2('0x2'));var timeout=require(_0x9ab2('0x3'));var express=require('express');var router=express[_0x9ab2('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9ab2('0x5'));var interaction=require(_0x9ab2('0x6'));var config=require(_0x9ab2('0x7'));var controller=require(_0x9ab2('0x8'));router[_0x9ab2('0x9')]('/',auth['isAuthenticated'](),controller[_0x9ab2('0xa')]);router[_0x9ab2('0x9')](_0x9ab2('0xb'),auth[_0x9ab2('0xc')](),controller[_0x9ab2('0xd')]);router['post']('/',auth[_0x9ab2('0xc')](),controller[_0x9ab2('0xe')]);router[_0x9ab2('0xf')](_0x9ab2('0xb'),auth[_0x9ab2('0xc')](),controller[_0x9ab2('0x10')]);router[_0x9ab2('0x11')](_0x9ab2('0xb'),auth[_0x9ab2('0xc')](),controller['destroy']);module[_0x9ab2('0x12')]=router;
\ No newline at end of file
index 8666816..1ed5cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c16=['sequelize'];(function(_0x1f36bb,_0x8af718){var _0xaf97fa=function(_0xeca489){while(--_0xeca489){_0x1f36bb['push'](_0x1f36bb['shift']());}};_0xaf97fa(++_0x8af718);}(_0x8c16,0xb3));var _0x68c1=function(_0x1dcce7,_0x33761c){_0x1dcce7=_0x1dcce7-0x0;var _0x350d60=_0x8c16[_0x1dcce7];return _0x350d60;};'use strict';var Sequelize=require(_0x68c1('0x0'));module['exports']={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0x0d92=['sequelize','exports','TEXT'];(function(_0xdd2bfa,_0x5bd304){var _0x55397e=function(_0x196f7d){while(--_0x196f7d){_0xdd2bfa['push'](_0xdd2bfa['shift']());}};_0x55397e(++_0x5bd304);}(_0x0d92,0x8a));var _0x20d9=function(_0x20ac7d,_0x2fa262){_0x20ac7d=_0x20ac7d-0x0;var _0x452545=_0x0d92[_0x20ac7d];return _0x452545;};'use strict';var Sequelize=require(_0x20d9('0x0'));module[_0x20d9('0x1')]={'tree':{'type':Sequelize[_0x20d9('0x2')],'allowNull':![]}};
\ No newline at end of file
index cc0805f..88c1955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['fieldName','type','key','model','query','keys','intersection','attributes','fields','length','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','AnalyticTreeReport','include','findAll','rows','catch','show','params','includeAll','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x9354,0x69));var _0x4935=function(_0x2134b7,_0x1eb5e2){_0x2134b7=_0x2134b7-0x0;var _0x6c5914=_0x9354[_0x2134b7];return _0x6c5914;};'use strict';var emlformat=require(_0x4935('0x0'));var rimraf=require(_0x4935('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4935('0x2'));var rp=require(_0x4935('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4935('0x4'));var path=require(_0x4935('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4935('0x6'));var fs=require('fs');var fs_extra=require(_0x4935('0x7'));var _=require(_0x4935('0x8'));var squel=require(_0x4935('0x9'));var crypto=require(_0x4935('0xa'));var jsforce=require(_0x4935('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4935('0xc'));var Papa=require(_0x4935('0xd'));var Redis=require(_0x4935('0xe'));var authService=require(_0x4935('0xf'));var qs=require(_0x4935('0x10'));var as=require(_0x4935('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4935('0x12'))(_0x4935('0x13'));var utils=require(_0x4935('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4935('0x15'))['db'];function respondWithStatusCode(_0x43f0bd,_0x58837c){_0x58837c=_0x58837c||0xcc;return function(_0x2a3b47){if(_0x2a3b47){return _0x43f0bd[_0x4935('0x16')](_0x58837c);}return _0x43f0bd[_0x4935('0x17')](_0x58837c)['end']();};}function respondWithResult(_0x33b899,_0x3dc622){_0x3dc622=_0x3dc622||0xc8;return function(_0x196a77){if(_0x196a77){return _0x33b899[_0x4935('0x17')](_0x3dc622)[_0x4935('0x18')](_0x196a77);}};}function respondWithFilteredResult(_0x162d52,_0x2a0de9){return function(_0x3f1b08){if(_0x3f1b08){var _0x36d9f0=typeof _0x2a0de9[_0x4935('0x19')]===_0x4935('0x1a')&&typeof _0x2a0de9['limit']===_0x4935('0x1a');var _0x5000d3=_0x3f1b08[_0x4935('0x1b')];var _0x53b0f4=_0x36d9f0?0x0:_0x2a0de9[_0x4935('0x19')];var _0x2ca23d=_0x36d9f0?_0x3f1b08['count']:_0x2a0de9[_0x4935('0x19')]+_0x2a0de9['limit'];var _0x308459;if(_0x2ca23d>=_0x5000d3){_0x2ca23d=_0x5000d3;_0x308459=0xc8;}else{_0x308459=0xce;}_0x162d52[_0x4935('0x17')](_0x308459);return _0x162d52['set'](_0x4935('0x1c'),_0x53b0f4+'-'+_0x2ca23d+'/'+_0x5000d3)[_0x4935('0x18')](_0x3f1b08);}return null;};}function patchUpdates(_0x1b589e){return function(_0xc7637a){try{jsonpatch[_0x4935('0x1d')](_0xc7637a,_0x1b589e,!![]);}catch(_0x34cca8){return BPromise[_0x4935('0x1e')](_0x34cca8);}return _0xc7637a[_0x4935('0x1f')]();};}function saveUpdates(_0x43c2a5,_0x331324){return function(_0x366793){if(_0x366793){return _0x366793[_0x4935('0x20')](_0x43c2a5)[_0x4935('0x21')](function(_0x5be99e){return _0x5be99e;});}return null;};}function removeEntity(_0x2f5df9,_0x3aa23f){return function(_0x5c96a0){if(_0x5c96a0){return _0x5c96a0[_0x4935('0x22')]()[_0x4935('0x21')](function(){_0x2f5df9[_0x4935('0x17')](0xcc)[_0x4935('0x23')]();});}};}function handleEntityNotFound(_0x1d4579,_0x1945b4){return function(_0x26a759){if(!_0x26a759){_0x1d4579[_0x4935('0x16')](0x194);}return _0x26a759;};}function handleError(_0x10314e,_0x245c6f){_0x245c6f=_0x245c6f||0x1f4;return function(_0x24a0c3){logger[_0x4935('0x24')](_0x24a0c3[_0x4935('0x25')]);if(_0x24a0c3[_0x4935('0x26')]){delete _0x24a0c3['name'];}_0x10314e[_0x4935('0x17')](_0x245c6f)[_0x4935('0x27')](_0x24a0c3);};}exports[_0x4935('0x28')]=function(_0x425595,_0x273205){var _0x5486c8={},_0x44baca={},_0x2d9188={'count':0x0,'rows':[]};var _0x2ce9a0=_[_0x4935('0x29')](db['AnalyticTreeReport'][_0x4935('0x2a')],function(_0x53b37e){return{'name':_0x53b37e[_0x4935('0x2b')],'type':_0x53b37e[_0x4935('0x2c')][_0x4935('0x2d')]};});_0x44baca[_0x4935('0x2e')]=_[_0x4935('0x29')](_0x2ce9a0,_0x4935('0x26'));_0x44baca[_0x4935('0x2f')]=_[_0x4935('0x30')](_0x425595[_0x4935('0x2f')]);_0x44baca['filters']=_[_0x4935('0x31')](_0x44baca[_0x4935('0x2e')],_0x44baca[_0x4935('0x2f')]);_0x5486c8[_0x4935('0x32')]=_[_0x4935('0x31')](_0x44baca['model'],qs[_0x4935('0x33')](_0x425595[_0x4935('0x2f')][_0x4935('0x33')]));_0x5486c8[_0x4935('0x32')]=_0x5486c8[_0x4935('0x32')][_0x4935('0x34')]?_0x5486c8[_0x4935('0x32')]:_0x44baca[_0x4935('0x2e')];if(!_0x425595[_0x4935('0x2f')]['hasOwnProperty']('nolimit')){_0x5486c8[_0x4935('0x35')]=qs[_0x4935('0x35')](_0x425595['query'][_0x4935('0x35')]);_0x5486c8[_0x4935('0x19')]=qs[_0x4935('0x19')](_0x425595['query']['offset']);}_0x5486c8[_0x4935('0x36')]=qs[_0x4935('0x37')](_0x425595[_0x4935('0x2f')][_0x4935('0x37')]);_0x5486c8[_0x4935('0x38')]=qs[_0x4935('0x39')](_[_0x4935('0x3a')](_0x425595[_0x4935('0x2f')],_0x44baca[_0x4935('0x39')]),_0x2ce9a0);if(_0x425595[_0x4935('0x2f')][_0x4935('0x3b')]){_0x5486c8['where']=_[_0x4935('0x3c')](_0x5486c8['where'],{'$or':_['map'](_0x2ce9a0,function(_0x5bbadf){if(_0x5bbadf[_0x4935('0x2c')]!==_0x4935('0x3d')){var _0x21b499={};_0x21b499[_0x5bbadf[_0x4935('0x26')]]={'$like':'%'+_0x425595[_0x4935('0x2f')][_0x4935('0x3b')]+'%'};return _0x21b499;}})});}_0x5486c8=_[_0x4935('0x3c')]({},_0x5486c8,_0x425595[_0x4935('0x3e')]);var _0x53eb99={'where':_0x5486c8['where']};return db[_0x4935('0x3f')][_0x4935('0x1b')](_0x53eb99)[_0x4935('0x21')](function(_0x33bd68){_0x2d9188[_0x4935('0x1b')]=_0x33bd68;if(_0x425595['query']['includeAll']){_0x5486c8[_0x4935('0x40')]=[{'all':!![]}];}return db[_0x4935('0x3f')][_0x4935('0x41')](_0x5486c8);})[_0x4935('0x21')](function(_0x144a0c){_0x2d9188[_0x4935('0x42')]=_0x144a0c;return _0x2d9188;})[_0x4935('0x21')](respondWithFilteredResult(_0x273205,_0x5486c8))[_0x4935('0x43')](handleError(_0x273205,null));};exports[_0x4935('0x44')]=function(_0x195df1,_0x526f3f){var _0x518491={'raw':!![],'where':{'id':_0x195df1[_0x4935('0x45')]['id']}},_0xc6bda3={};_0xc6bda3[_0x4935('0x2e')]=_[_0x4935('0x30')](db[_0x4935('0x3f')]['rawAttributes']);_0xc6bda3['query']=_['keys'](_0x195df1[_0x4935('0x2f')]);_0xc6bda3['filters']=_[_0x4935('0x31')](_0xc6bda3[_0x4935('0x2e')],_0xc6bda3['query']);_0x518491[_0x4935('0x32')]=_[_0x4935('0x31')](_0xc6bda3['model'],qs[_0x4935('0x33')](_0x195df1[_0x4935('0x2f')]['fields']));_0x518491[_0x4935('0x32')]=_0x518491[_0x4935('0x32')]['length']?_0x518491[_0x4935('0x32')]:_0xc6bda3[_0x4935('0x2e')];if(_0x195df1[_0x4935('0x2f')][_0x4935('0x46')]){_0x518491[_0x4935('0x40')]=[{'all':!![]}];}_0x518491=_['merge']({},_0x518491,_0x195df1[_0x4935('0x3e')]);return db[_0x4935('0x3f')]['find'](_0x518491)['then'](handleEntityNotFound(_0x526f3f,null))['then'](respondWithResult(_0x526f3f,null))['catch'](handleError(_0x526f3f,null));};exports['create']=function(_0x17c808,_0x3265f4){return db[_0x4935('0x3f')][_0x4935('0x47')](_0x17c808[_0x4935('0x48')],{})[_0x4935('0x21')](respondWithResult(_0x3265f4,0xc9))[_0x4935('0x43')](handleError(_0x3265f4,null));};exports[_0x4935('0x20')]=function(_0x406c07,_0x108a30){if(_0x406c07[_0x4935('0x48')]['id']){delete _0x406c07[_0x4935('0x48')]['id'];}return db[_0x4935('0x3f')][_0x4935('0x49')]({'where':{'id':_0x406c07['params']['id']}})['then'](handleEntityNotFound(_0x108a30,null))[_0x4935('0x21')](saveUpdates(_0x406c07[_0x4935('0x48')],null))['then'](respondWithResult(_0x108a30,null))[_0x4935('0x43')](handleError(_0x108a30,null));};exports['destroy']=function(_0x4e1838,_0x23cdfc){return db['AnalyticTreeReport'][_0x4935('0x49')]({'where':{'id':_0x4e1838[_0x4935('0x45')]['id']}})[_0x4935('0x21')](handleEntityNotFound(_0x23cdfc,null))[_0x4935('0x21')](removeEntity(_0x23cdfc,null))[_0x4935('0x43')](handleError(_0x23cdfc,null));};
\ No newline at end of file
+var _0x44be=['catch','show','params','includeAll','find','create','body','destroy','eml-format','fast-json-patch','request-promise','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','limit','undefined','count','set','apply','save','update','then','sendStatus','error','stack','name','index','AnalyticTreeReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','merge','options','include','findAll','rows'];(function(_0x1394c9,_0x2b9dd1){var _0x4097ea=function(_0x5e880f){while(--_0x5e880f){_0x1394c9['push'](_0x1394c9['shift']());}};_0x4097ea(++_0x2b9dd1);}(_0x44be,0x1b8));var _0xe44b=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x44be[_0xa148b7];return _0x51efd3;};'use strict';var emlformat=require(_0xe44b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe44b('0x1'));var rp=require(_0xe44b('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe44b('0x3'));var util=require('util');var path=require(_0xe44b('0x4'));var sox=require(_0xe44b('0x5'));var csv=require('to-csv');var ejs=require(_0xe44b('0x6'));var fs=require('fs');var fs_extra=require(_0xe44b('0x7'));var _=require(_0xe44b('0x8'));var squel=require(_0xe44b('0x9'));var crypto=require(_0xe44b('0xa'));var jsforce=require(_0xe44b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xe44b('0xc'));var querystring=require('querystring');var Papa=require(_0xe44b('0xd'));var Redis=require(_0xe44b('0xe'));var authService=require(_0xe44b('0xf'));var qs=require(_0xe44b('0x10'));var as=require(_0xe44b('0x11'));var hardwareService=require(_0xe44b('0x12'));var logger=require(_0xe44b('0x13'))(_0xe44b('0x14'));var utils=require(_0xe44b('0x15'));var config=require(_0xe44b('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e82de,_0x34a933){_0x34a933=_0x34a933||0xcc;return function(_0x35a51e){if(_0x35a51e){return _0x1e82de['sendStatus'](_0x34a933);}return _0x1e82de[_0xe44b('0x17')](_0x34a933)[_0xe44b('0x18')]();};}function respondWithResult(_0xaf536f,_0x4f928e){_0x4f928e=_0x4f928e||0xc8;return function(_0x2defb1){if(_0x2defb1){return _0xaf536f[_0xe44b('0x17')](_0x4f928e)[_0xe44b('0x19')](_0x2defb1);}};}function respondWithFilteredResult(_0x25e96f,_0x19d333){return function(_0x5ac0f0){if(_0x5ac0f0){var _0x15149d=typeof _0x19d333[_0xe44b('0x1a')]==='undefined'&&typeof _0x19d333[_0xe44b('0x1b')]===_0xe44b('0x1c');var _0x5e39fb=_0x5ac0f0[_0xe44b('0x1d')];var _0x4b353b=_0x15149d?0x0:_0x19d333[_0xe44b('0x1a')];var _0x3c7560=_0x15149d?_0x5ac0f0[_0xe44b('0x1d')]:_0x19d333['offset']+_0x19d333[_0xe44b('0x1b')];var _0x10c8c1;if(_0x3c7560>=_0x5e39fb){_0x3c7560=_0x5e39fb;_0x10c8c1=0xc8;}else{_0x10c8c1=0xce;}_0x25e96f[_0xe44b('0x17')](_0x10c8c1);return _0x25e96f[_0xe44b('0x1e')]('Content-Range',_0x4b353b+'-'+_0x3c7560+'/'+_0x5e39fb)[_0xe44b('0x19')](_0x5ac0f0);}return null;};}function patchUpdates(_0x35c94e){return function(_0x11829f){try{jsonpatch[_0xe44b('0x1f')](_0x11829f,_0x35c94e,!![]);}catch(_0x1e99cf){return BPromise['reject'](_0x1e99cf);}return _0x11829f[_0xe44b('0x20')]();};}function saveUpdates(_0xf55eca,_0x71aca0){return function(_0x28e036){if(_0x28e036){return _0x28e036[_0xe44b('0x21')](_0xf55eca)[_0xe44b('0x22')](function(_0x198926){return _0x198926;});}return null;};}function removeEntity(_0x4b177b,_0x64293a){return function(_0x3be8b9){if(_0x3be8b9){return _0x3be8b9['destroy']()['then'](function(){_0x4b177b['status'](0xcc)[_0xe44b('0x18')]();});}};}function handleEntityNotFound(_0x4f219f,_0x8cf62b){return function(_0x5b4bb3){if(!_0x5b4bb3){_0x4f219f[_0xe44b('0x23')](0x194);}return _0x5b4bb3;};}function handleError(_0x3d56c3,_0x35bcd3){_0x35bcd3=_0x35bcd3||0x1f4;return function(_0x50f66b){logger[_0xe44b('0x24')](_0x50f66b[_0xe44b('0x25')]);if(_0x50f66b[_0xe44b('0x26')]){delete _0x50f66b[_0xe44b('0x26')];}_0x3d56c3[_0xe44b('0x17')](_0x35bcd3)['send'](_0x50f66b);};}exports[_0xe44b('0x27')]=function(_0x4fc97b,_0xdd6c31){var _0x492fb6={},_0x58cad0={},_0xe55d1f={'count':0x0,'rows':[]};var _0x5765d0=_['map'](db[_0xe44b('0x28')][_0xe44b('0x29')],function(_0x34a4be){return{'name':_0x34a4be[_0xe44b('0x2a')],'type':_0x34a4be[_0xe44b('0x2b')][_0xe44b('0x2c')]};});_0x58cad0[_0xe44b('0x2d')]=_[_0xe44b('0x2e')](_0x5765d0,_0xe44b('0x26'));_0x58cad0[_0xe44b('0x2f')]=_[_0xe44b('0x30')](_0x4fc97b[_0xe44b('0x2f')]);_0x58cad0[_0xe44b('0x31')]=_[_0xe44b('0x32')](_0x58cad0['model'],_0x58cad0[_0xe44b('0x2f')]);_0x492fb6['attributes']=_[_0xe44b('0x32')](_0x58cad0['model'],qs[_0xe44b('0x33')](_0x4fc97b[_0xe44b('0x2f')][_0xe44b('0x33')]));_0x492fb6['attributes']=_0x492fb6[_0xe44b('0x34')][_0xe44b('0x35')]?_0x492fb6[_0xe44b('0x34')]:_0x58cad0[_0xe44b('0x2d')];if(!_0x4fc97b[_0xe44b('0x2f')]['hasOwnProperty'](_0xe44b('0x36'))){_0x492fb6[_0xe44b('0x1b')]=qs[_0xe44b('0x1b')](_0x4fc97b[_0xe44b('0x2f')][_0xe44b('0x1b')]);_0x492fb6[_0xe44b('0x1a')]=qs[_0xe44b('0x1a')](_0x4fc97b['query']['offset']);}_0x492fb6['order']=qs[_0xe44b('0x37')](_0x4fc97b[_0xe44b('0x2f')]['sort']);_0x492fb6[_0xe44b('0x38')]=qs['filters'](_[_0xe44b('0x39')](_0x4fc97b[_0xe44b('0x2f')],_0x58cad0[_0xe44b('0x31')]),_0x5765d0);if(_0x4fc97b[_0xe44b('0x2f')][_0xe44b('0x3a')]){_0x492fb6[_0xe44b('0x38')]=_[_0xe44b('0x3b')](_0x492fb6[_0xe44b('0x38')],{'$or':_[_0xe44b('0x2e')](_0x5765d0,function(_0x1d29b3){if(_0x1d29b3[_0xe44b('0x2b')]!=='VIRTUAL'){var _0x31ab12={};_0x31ab12[_0x1d29b3[_0xe44b('0x26')]]={'$like':'%'+_0x4fc97b['query'][_0xe44b('0x3a')]+'%'};return _0x31ab12;}})});}_0x492fb6=_[_0xe44b('0x3b')]({},_0x492fb6,_0x4fc97b[_0xe44b('0x3c')]);var _0x4a2c45={'where':_0x492fb6[_0xe44b('0x38')]};return db[_0xe44b('0x28')][_0xe44b('0x1d')](_0x4a2c45)[_0xe44b('0x22')](function(_0x453b53){_0xe55d1f[_0xe44b('0x1d')]=_0x453b53;if(_0x4fc97b[_0xe44b('0x2f')]['includeAll']){_0x492fb6[_0xe44b('0x3d')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0xe44b('0x3e')](_0x492fb6);})[_0xe44b('0x22')](function(_0x1d64a5){_0xe55d1f[_0xe44b('0x3f')]=_0x1d64a5;return _0xe55d1f;})['then'](respondWithFilteredResult(_0xdd6c31,_0x492fb6))[_0xe44b('0x40')](handleError(_0xdd6c31,null));};exports[_0xe44b('0x41')]=function(_0x85ef88,_0x53c388){var _0x34eb1={'raw':!![],'where':{'id':_0x85ef88[_0xe44b('0x42')]['id']}},_0x508eb6={};_0x508eb6['model']=_[_0xe44b('0x30')](db[_0xe44b('0x28')][_0xe44b('0x29')]);_0x508eb6[_0xe44b('0x2f')]=_[_0xe44b('0x30')](_0x85ef88[_0xe44b('0x2f')]);_0x508eb6['filters']=_[_0xe44b('0x32')](_0x508eb6[_0xe44b('0x2d')],_0x508eb6['query']);_0x34eb1[_0xe44b('0x34')]=_['intersection'](_0x508eb6['model'],qs['fields'](_0x85ef88['query']['fields']));_0x34eb1[_0xe44b('0x34')]=_0x34eb1['attributes']['length']?_0x34eb1[_0xe44b('0x34')]:_0x508eb6[_0xe44b('0x2d')];if(_0x85ef88[_0xe44b('0x2f')][_0xe44b('0x43')]){_0x34eb1[_0xe44b('0x3d')]=[{'all':!![]}];}_0x34eb1=_[_0xe44b('0x3b')]({},_0x34eb1,_0x85ef88[_0xe44b('0x3c')]);return db[_0xe44b('0x28')][_0xe44b('0x44')](_0x34eb1)[_0xe44b('0x22')](handleEntityNotFound(_0x53c388,null))[_0xe44b('0x22')](respondWithResult(_0x53c388,null))[_0xe44b('0x40')](handleError(_0x53c388,null));};exports[_0xe44b('0x45')]=function(_0x4ac2e0,_0x57d7dc){return db[_0xe44b('0x28')][_0xe44b('0x45')](_0x4ac2e0[_0xe44b('0x46')],{})[_0xe44b('0x22')](respondWithResult(_0x57d7dc,0xc9))[_0xe44b('0x40')](handleError(_0x57d7dc,null));};exports[_0xe44b('0x21')]=function(_0x513371,_0x106cb5){if(_0x513371[_0xe44b('0x46')]['id']){delete _0x513371[_0xe44b('0x46')]['id'];}return db[_0xe44b('0x28')][_0xe44b('0x44')]({'where':{'id':_0x513371['params']['id']}})['then'](handleEntityNotFound(_0x106cb5,null))[_0xe44b('0x22')](saveUpdates(_0x513371[_0xe44b('0x46')],null))['then'](respondWithResult(_0x106cb5,null))[_0xe44b('0x40')](handleError(_0x106cb5,null));};exports[_0xe44b('0x47')]=function(_0x17695e,_0x170b9c){return db[_0xe44b('0x28')][_0xe44b('0x44')]({'where':{'id':_0x17695e['params']['id']}})[_0xe44b('0x22')](handleEntityNotFound(_0x170b9c,null))['then'](removeEntity(_0x170b9c,null))[_0xe44b('0x40')](handleError(_0x170b9c,null));};
\ No newline at end of file
index 29ca64d..55455c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b57=['AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','moment','bluebird','path','./analyticTreeReport.attributes'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x2b57,0x1ec));var _0x72b5=function(_0x2d699c,_0x52281f){_0x2d699c=_0x2d699c-0x0;var _0xb25aa3=_0x2b57[_0x2d699c];return _0xb25aa3;};'use strict';var _=require(_0x72b5('0x0'));var util=require(_0x72b5('0x1'));var logger=require(_0x72b5('0x2'))(_0x72b5('0x3'));var moment=require(_0x72b5('0x4'));var BPromise=require(_0x72b5('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x72b5('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x72b5('0x7'));module['exports']=function(_0x3f5a40,_0x1206c1){return _0x3f5a40['define'](_0x72b5('0x8'),attributes,{'tableName':_0x72b5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe321=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','define','AnalyticTreeReport','util'];(function(_0x24a1f0,_0x3400f5){var _0x5043f3=function(_0x35f9d5){while(--_0x35f9d5){_0x24a1f0['push'](_0x24a1f0['shift']());}};_0x5043f3(++_0x3400f5);}(_0xe321,0xef));var _0x1e32=function(_0x5ad1d7,_0x2dd2cf){_0x5ad1d7=_0x5ad1d7-0x0;var _0xcf4632=_0xe321[_0x5ad1d7];return _0xcf4632;};'use strict';var _=require('lodash');var util=require(_0x1e32('0x0'));var logger=require(_0x1e32('0x1'))(_0x1e32('0x2'));var moment=require(_0x1e32('0x3'));var BPromise=require(_0x1e32('0x4'));var rp=require(_0x1e32('0x5'));var fs=require('fs');var path=require(_0x1e32('0x6'));var rimraf=require('rimraf');var config=require(_0x1e32('0x7'));var attributes=require('./analyticTreeReport.attributes');module['exports']=function(_0x59a6ad,_0x3d59a7){return _0x59a6ad[_0x1e32('0x8')](_0x1e32('0x9'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e3b890f..13fbf6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x322743,_0x3903b9){var _0x13de4d=function(_0x13a597){while(--_0x13a597){_0x322743['push'](_0x322743['shift']());}};_0x13de4d(++_0x3903b9);}(_0x2ef3,0xba));var _0x32ef=function(_0x28b178,_0x4d8ead){_0x28b178=_0x28b178-0x0;var _0x413f5b=_0x2ef3[_0x28b178];return _0x413f5b;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x251a29,_0x51a89d){var _0x3325be=function(_0x2092cb){while(--_0x2092cb){_0x251a29['push'](_0x251a29['shift']());}};_0x3325be(++_0x51a89d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xc4aa[_0x2d2c16];return _0x53f2fb;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 7043111..9751c0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4feb=['delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','index','/:id','isAuthenticated','show','create','put'];(function(_0x2776db,_0xfb2eda){var _0x572930=function(_0x5e1032){while(--_0x5e1032){_0x2776db['push'](_0x2776db['shift']());}};_0x572930(++_0xfb2eda);}(_0x4feb,0x10d));var _0xb4fe=function(_0x2a2c65,_0x22033b){_0x2a2c65=_0x2a2c65-0x0;var _0x413b09=_0x4feb[_0x2a2c65];return _0x413b09;};'use strict';var multer=require(_0xb4fe('0x0'));var util=require('util');var path=require(_0xb4fe('0x1'));var timeout=require(_0xb4fe('0x2'));var express=require('express');var router=express[_0xb4fe('0x3')]();var fs_extra=require(_0xb4fe('0x4'));var auth=require(_0xb4fe('0x5'));var interaction=require(_0xb4fe('0x6'));var config=require(_0xb4fe('0x7'));var controller=require(_0xb4fe('0x8'));router[_0xb4fe('0x9')]('/',auth['isAuthenticated'](),controller[_0xb4fe('0xa')]);router[_0xb4fe('0x9')](_0xb4fe('0xb'),auth[_0xb4fe('0xc')](),controller[_0xb4fe('0xd')]);router['post']('/',auth[_0xb4fe('0xc')](),controller[_0xb4fe('0xe')]);router[_0xb4fe('0xf')](_0xb4fe('0xb'),auth[_0xb4fe('0xc')](),controller['update']);router[_0xb4fe('0x10')](_0xb4fe('0xb'),auth['isAuthenticated'](),controller[_0xb4fe('0x11')]);module[_0xb4fe('0x12')]=router;
\ No newline at end of file
+var _0x6626=['/:id','show','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0x6626,0xf8));var _0x6662=function(_0x2dd151,_0x43a7e0){_0x2dd151=_0x2dd151-0x0;var _0x4689a7=_0x6626[_0x2dd151];return _0x4689a7;};'use strict';var multer=require(_0x6662('0x0'));var util=require(_0x6662('0x1'));var path=require('path');var timeout=require(_0x6662('0x2'));var express=require(_0x6662('0x3'));var router=express[_0x6662('0x4')]();var fs_extra=require(_0x6662('0x5'));var auth=require(_0x6662('0x6'));var interaction=require(_0x6662('0x7'));var config=require(_0x6662('0x8'));var controller=require(_0x6662('0x9'));router[_0x6662('0xa')]('/',auth[_0x6662('0xb')](),controller['index']);router[_0x6662('0xa')](_0x6662('0xc'),auth['isAuthenticated'](),controller[_0x6662('0xd')]);router[_0x6662('0xe')]('/',auth[_0x6662('0xb')](),controller[_0x6662('0xf')]);router[_0x6662('0x10')](_0x6662('0xc'),auth[_0x6662('0xb')](),controller[_0x6662('0x11')]);router[_0x6662('0x12')](_0x6662('0xc'),auth[_0x6662('0xb')](),controller[_0x6662('0x13')]);module['exports']=router;
\ No newline at end of file
index b3fbacc..142a342 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01d3=['STRING'];(function(_0x5de214,_0x107e9d){var _0x4df627=function(_0x4199e1){while(--_0x4199e1){_0x5de214['push'](_0x5de214['shift']());}};_0x4df627(++_0x107e9d);}(_0x01d3,0xdb));var _0x301d=function(_0x4c5613,_0x2a18f2){_0x4c5613=_0x4c5613-0x0;var _0x2689da=_0x01d3[_0x4c5613];return _0x2689da;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x301d('0x0')]},'basename':{'type':Sequelize[_0x301d('0x0')]},'type':{'type':Sequelize[_0x301d('0x0')]}};
\ No newline at end of file
+var _0x946e=['sequelize','STRING'];(function(_0x10340f,_0x4f39f5){var _0x170742=function(_0x2e14af){while(--_0x2e14af){_0x10340f['push'](_0x10340f['shift']());}};_0x170742(++_0x4f39f5);}(_0x946e,0x1d0));var _0xe946=function(_0xd98c11,_0x499d6e){_0xd98c11=_0xd98c11-0x0;var _0x4ed636=_0x946e[_0xd98c11];return _0x4ed636;};'use strict';var Sequelize=require(_0xe946('0x0'));module['exports']={'name':{'type':Sequelize[_0xe946('0x1')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xe946('0x1')]}};
\ No newline at end of file
index 9bfc560..b7de1ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10d5=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','error','stack','name','send','index','Attachment','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','sort','where','merge','map','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','find','clone','get','omit','createdAt','updatedAt','body','create','file','originalname','filename','mimetype','download','findOne','join','root','server/files/attachments/','basename','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0xeab865,_0x15f419){var _0x1c8000=function(_0x27fb80){while(--_0x27fb80){_0xeab865['push'](_0xeab865['shift']());}};_0x1c8000(++_0x15f419);}(_0x10d5,0x1b6));var _0x510d=function(_0x3dc68d,_0x1c1951){_0x3dc68d=_0x3dc68d-0x0;var _0xdf7f94=_0x10d5[_0x3dc68d];return _0xdf7f94;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x510d('0x0'));var jsonpatch=require(_0x510d('0x1'));var rp=require(_0x510d('0x2'));var moment=require(_0x510d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x510d('0x4'));var util=require(_0x510d('0x5'));var path=require(_0x510d('0x6'));var sox=require(_0x510d('0x7'));var csv=require(_0x510d('0x8'));var ejs=require(_0x510d('0x9'));var fs=require('fs');var fs_extra=require(_0x510d('0xa'));var _=require(_0x510d('0xb'));var squel=require(_0x510d('0xc'));var crypto=require(_0x510d('0xd'));var jsforce=require(_0x510d('0xe'));var deskjs=require(_0x510d('0xf'));var toCsv=require(_0x510d('0x8'));var querystring=require(_0x510d('0x10'));var Papa=require(_0x510d('0x11'));var Redis=require(_0x510d('0x12'));var authService=require(_0x510d('0x13'));var qs=require(_0x510d('0x14'));var as=require(_0x510d('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x510d('0x16'))(_0x510d('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x510d('0x18'));var db=require(_0x510d('0x19'))['db'];function respondWithStatusCode(_0x14f51e,_0x27a665){_0x27a665=_0x27a665||0xcc;return function(_0x4d5c9d){if(_0x4d5c9d){return _0x14f51e[_0x510d('0x1a')](_0x27a665);}return _0x14f51e[_0x510d('0x1b')](_0x27a665)[_0x510d('0x1c')]();};}function respondWithResult(_0x288aea,_0x2c9159){_0x2c9159=_0x2c9159||0xc8;return function(_0x40f8d0){if(_0x40f8d0){return _0x288aea[_0x510d('0x1b')](_0x2c9159)[_0x510d('0x1d')](_0x40f8d0);}};}function respondWithFilteredResult(_0x76c13a,_0x335771){return function(_0x1b48e2){if(_0x1b48e2){var _0x27b2df=typeof _0x335771[_0x510d('0x1e')]==='undefined'&&typeof _0x335771[_0x510d('0x1f')]===_0x510d('0x20');var _0x8f506=_0x1b48e2[_0x510d('0x21')];var _0x53d75e=_0x27b2df?0x0:_0x335771[_0x510d('0x1e')];var _0x5716af=_0x27b2df?_0x1b48e2['count']:_0x335771['offset']+_0x335771[_0x510d('0x1f')];var _0x4f924a;if(_0x5716af>=_0x8f506){_0x5716af=_0x8f506;_0x4f924a=0xc8;}else{_0x4f924a=0xce;}_0x76c13a[_0x510d('0x1b')](_0x4f924a);return _0x76c13a[_0x510d('0x22')](_0x510d('0x23'),_0x53d75e+'-'+_0x5716af+'/'+_0x8f506)['json'](_0x1b48e2);}return null;};}function patchUpdates(_0x40b107){return function(_0x1cbba9){try{jsonpatch[_0x510d('0x24')](_0x1cbba9,_0x40b107,!![]);}catch(_0x4cbcdb){return BPromise[_0x510d('0x25')](_0x4cbcdb);}return _0x1cbba9['save']();};}function saveUpdates(_0x277e9e,_0xffb878){return function(_0x3d1424){if(_0x3d1424){return _0x3d1424[_0x510d('0x26')](_0x277e9e)[_0x510d('0x27')](function(_0x419fcd){return _0x419fcd;});}return null;};}function removeEntity(_0x2f1aac,_0x57b85d){return function(_0x21ebaa){if(_0x21ebaa){return _0x21ebaa['destroy']()[_0x510d('0x27')](function(){_0x2f1aac['status'](0xcc)[_0x510d('0x1c')]();});}};}function handleEntityNotFound(_0x17102d,_0x3e8d2c){return function(_0x30966e){if(!_0x30966e){_0x17102d[_0x510d('0x1a')](0x194);}return _0x30966e;};}function handleError(_0x459870,_0x22ec9a){_0x22ec9a=_0x22ec9a||0x1f4;return function(_0x2b115e){logger[_0x510d('0x28')](_0x2b115e[_0x510d('0x29')]);if(_0x2b115e[_0x510d('0x2a')]){delete _0x2b115e[_0x510d('0x2a')];}_0x459870[_0x510d('0x1b')](_0x22ec9a)[_0x510d('0x2b')](_0x2b115e);};}exports[_0x510d('0x2c')]=function(_0x20d534,_0x1231e7){var _0x1a9976={},_0x4f90d3={},_0x415286={'count':0x0,'rows':[]};var _0x518ca6=_['map'](db[_0x510d('0x2d')][_0x510d('0x2e')],function(_0x51d206){return{'name':_0x51d206[_0x510d('0x2f')],'type':_0x51d206[_0x510d('0x30')][_0x510d('0x31')]};});_0x4f90d3[_0x510d('0x32')]=_['map'](_0x518ca6,_0x510d('0x2a'));_0x4f90d3[_0x510d('0x33')]=_['keys'](_0x20d534[_0x510d('0x33')]);_0x4f90d3[_0x510d('0x34')]=_[_0x510d('0x35')](_0x4f90d3[_0x510d('0x32')],_0x4f90d3[_0x510d('0x33')]);_0x1a9976['attributes']=_[_0x510d('0x35')](_0x4f90d3[_0x510d('0x32')],qs[_0x510d('0x36')](_0x20d534[_0x510d('0x33')][_0x510d('0x36')]));_0x1a9976['attributes']=_0x1a9976[_0x510d('0x37')][_0x510d('0x38')]?_0x1a9976[_0x510d('0x37')]:_0x4f90d3[_0x510d('0x32')];if(!_0x20d534[_0x510d('0x33')]['hasOwnProperty']('nolimit')){_0x1a9976['limit']=qs[_0x510d('0x1f')](_0x20d534[_0x510d('0x33')][_0x510d('0x1f')]);_0x1a9976[_0x510d('0x1e')]=qs[_0x510d('0x1e')](_0x20d534[_0x510d('0x33')]['offset']);}_0x1a9976['order']=qs[_0x510d('0x39')](_0x20d534[_0x510d('0x33')][_0x510d('0x39')]);_0x1a9976['where']=qs[_0x510d('0x34')](_['pick'](_0x20d534[_0x510d('0x33')],_0x4f90d3[_0x510d('0x34')]),_0x518ca6);if(_0x20d534['query']['filter']){_0x1a9976[_0x510d('0x3a')]=_[_0x510d('0x3b')](_0x1a9976[_0x510d('0x3a')],{'$or':_[_0x510d('0x3c')](_0x518ca6,function(_0x2f55f1){if(_0x2f55f1[_0x510d('0x30')]!==_0x510d('0x3d')){var _0x1cbf30={};_0x1cbf30[_0x2f55f1['name']]={'$like':'%'+_0x20d534[_0x510d('0x33')][_0x510d('0x3e')]+'%'};return _0x1cbf30;}})});}_0x1a9976=_[_0x510d('0x3b')]({},_0x1a9976,_0x20d534[_0x510d('0x3f')]);var _0x201cae={'where':_0x1a9976[_0x510d('0x3a')]};return db['Attachment'][_0x510d('0x21')](_0x201cae)['then'](function(_0x50eea5){_0x415286[_0x510d('0x21')]=_0x50eea5;if(_0x20d534[_0x510d('0x33')][_0x510d('0x40')]){_0x1a9976[_0x510d('0x41')]=[{'all':!![]}];}return db[_0x510d('0x2d')][_0x510d('0x42')](_0x1a9976);})[_0x510d('0x27')](function(_0x2e5d59){_0x415286[_0x510d('0x43')]=_0x2e5d59;return _0x415286;})['then'](respondWithFilteredResult(_0x1231e7,_0x1a9976))[_0x510d('0x44')](handleError(_0x1231e7,null));};exports[_0x510d('0x45')]=function(_0x2cf613,_0x19d06f){var _0x26ef39={'raw':!![],'where':{'id':_0x2cf613[_0x510d('0x46')]['id']}},_0x33893f={};_0x33893f[_0x510d('0x32')]=_[_0x510d('0x47')](db['Attachment'][_0x510d('0x2e')]);_0x33893f['query']=_['keys'](_0x2cf613['query']);_0x33893f[_0x510d('0x34')]=_[_0x510d('0x35')](_0x33893f[_0x510d('0x32')],_0x33893f[_0x510d('0x33')]);_0x26ef39['attributes']=_[_0x510d('0x35')](_0x33893f[_0x510d('0x32')],qs[_0x510d('0x36')](_0x2cf613[_0x510d('0x33')][_0x510d('0x36')]));_0x26ef39['attributes']=_0x26ef39[_0x510d('0x37')][_0x510d('0x38')]?_0x26ef39[_0x510d('0x37')]:_0x33893f['model'];if(_0x2cf613['query'][_0x510d('0x40')]){_0x26ef39['include']=[{'all':!![]}];}_0x26ef39=_[_0x510d('0x3b')]({},_0x26ef39,_0x2cf613[_0x510d('0x3f')]);return db['Attachment'][_0x510d('0x48')](_0x26ef39)[_0x510d('0x27')](handleEntityNotFound(_0x19d06f,null))[_0x510d('0x27')](respondWithResult(_0x19d06f,null))['catch'](handleError(_0x19d06f,null));};exports[_0x510d('0x49')]=function(_0x6360b3,_0x3e316e){var _0x51fa45={'where':{'id':_0x6360b3[_0x510d('0x46')]['id']}},_0x5683f0={};_0x5683f0[_0x510d('0x32')]=_[_0x510d('0x47')](db[_0x510d('0x2d')]['rawAttributes']);_0x51fa45[_0x510d('0x37')]=_[_0x510d('0x35')](_0x5683f0[_0x510d('0x32')],qs['fields'](_0x6360b3[_0x510d('0x33')][_0x510d('0x36')]));_0x51fa45[_0x510d('0x37')]=_0x51fa45[_0x510d('0x37')][_0x510d('0x38')]?_0x51fa45[_0x510d('0x37')]:_0x5683f0[_0x510d('0x32')];if(_0x6360b3[_0x510d('0x33')][_0x510d('0x40')]){_0x51fa45[_0x510d('0x41')]=[{'all':!![]}];}_0x51fa45=_['merge']({},_0x51fa45,_0x6360b3['options']);return db[_0x510d('0x2d')]['find'](_0x51fa45)[_0x510d('0x27')](handleEntityNotFound(_0x3e316e,null))[_0x510d('0x27')](function(_0x35d7cc){if(_0x35d7cc){var _0x1ae92f=_0x35d7cc[_0x510d('0x4a')]({'plain':!![]});_0x1ae92f=qs[_0x510d('0x4b')](_0x1ae92f,['id',_0x510d('0x4c'),_0x510d('0x4d')]);_0x6360b3[_0x510d('0x4e')]=_['omit'](_0x6360b3[_0x510d('0x4e')],['id','createdAt',_0x510d('0x4d')]);return db['Attachment'][_0x510d('0x4f')](_[_0x510d('0x3b')](_0x1ae92f,_0x6360b3[_0x510d('0x4e')]),{'include':_0x6360b3['query'][_0x510d('0x40')]?[{'all':!![]}]:undefined});}})[_0x510d('0x27')](respondWithResult(_0x3e316e,0xc9))[_0x510d('0x44')](handleError(_0x3e316e,null));};exports[_0x510d('0x26')]=function(_0x279dd0,_0x2a3f8e){if(_0x279dd0['body']['id']){delete _0x279dd0['body']['id'];}return db[_0x510d('0x2d')][_0x510d('0x48')]({'where':{'id':_0x279dd0['params']['id']}})[_0x510d('0x27')](handleEntityNotFound(_0x2a3f8e,null))[_0x510d('0x27')](saveUpdates(_0x279dd0[_0x510d('0x4e')],null))[_0x510d('0x27')](respondWithResult(_0x2a3f8e,null))[_0x510d('0x44')](handleError(_0x2a3f8e,null));};exports['destroy']=function(_0xa86035,_0x469101){return db[_0x510d('0x2d')][_0x510d('0x48')]({'where':{'id':_0xa86035['params']['id']}})[_0x510d('0x27')](handleEntityNotFound(_0x469101,null))[_0x510d('0x27')](removeEntity(_0x469101,null))[_0x510d('0x44')](handleError(_0x469101,null));};exports[_0x510d('0x4f')]=function(_0xe2e0ea,_0x5cd59c,_0x2b7f76){_0xe2e0ea['body']['name']=_0xe2e0ea[_0x510d('0x50')][_0x510d('0x51')];_0xe2e0ea[_0x510d('0x4e')]['basename']=_0xe2e0ea[_0x510d('0x50')][_0x510d('0x52')];_0xe2e0ea[_0x510d('0x4e')][_0x510d('0x30')]=_0xe2e0ea['file'][_0x510d('0x53')];return db[_0x510d('0x2d')][_0x510d('0x4f')](_0xe2e0ea['body'])['then'](respondWithResult(_0x5cd59c,0xc9))[_0x510d('0x44')](handleError(_0x5cd59c,null));};exports[_0x510d('0x54')]=function(_0x2761c5,_0x315fbc,_0x11972a){return db[_0x510d('0x2d')][_0x510d('0x55')]({'where':{'id':_0x2761c5[_0x510d('0x46')]['id']},'raw':!![]})[_0x510d('0x27')](handleEntityNotFound(_0x315fbc,null))['then'](function(_0x432f41){if(_0x432f41){var _0x164d07=_0x432f41['ChatOfflineMessageId']!==null;var _0x4592f1=path[_0x510d('0x56')](config[_0x510d('0x57')],_0x510d('0x58'));if(_0x164d07){_0x4592f1=path[_0x510d('0x56')](_0x4592f1,'offline-chat/');}var _0x2c665c=path[_0x510d('0x56')](_0x4592f1,_0x432f41[_0x510d('0x59')]);return _0x315fbc[_0x510d('0x54')](_0x2c665c);}})[_0x510d('0x44')](handleError(_0x315fbc,null));};
\ No newline at end of file
+var _0x509e=['to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update','destroy','then','error','stack','name','send','index','rawAttributes','fieldName','key','map','query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filters','filter','type','VIRTUAL','merge','Attachment','includeAll','include','findAll','rows','catch','show','params','options','clone','get','omit','createdAt','body','updatedAt','create','originalname','file','filename','mimetype','findOne','ChatOfflineMessageId','join','basename','download','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','sox'];(function(_0x1ebb10,_0x156b3e){var _0x20d709=function(_0x4cc093){while(--_0x4cc093){_0x1ebb10['push'](_0x1ebb10['shift']());}};_0x20d709(++_0x156b3e);}(_0x509e,0x151));var _0xe509=function(_0x100f70,_0x18c114){_0x100f70=_0x100f70-0x0;var _0x32aaa8=_0x509e[_0x100f70];return _0x32aaa8;};'use strict';var emlformat=require(_0xe509('0x0'));var rimraf=require(_0xe509('0x1'));var zipdir=require(_0xe509('0x2'));var jsonpatch=require(_0xe509('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe509('0x4'));var Mustache=require('mustache');var util=require(_0xe509('0x5'));var path=require('path');var sox=require(_0xe509('0x6'));var csv=require(_0xe509('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe509('0x8'));var _=require(_0xe509('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe509('0xa'));var deskjs=require(_0xe509('0xb'));var toCsv=require(_0xe509('0x7'));var querystring=require(_0xe509('0xc'));var Papa=require(_0xe509('0xd'));var Redis=require('ioredis');var authService=require(_0xe509('0xe'));var qs=require(_0xe509('0xf'));var as=require(_0xe509('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe509('0x11'));var utils=require(_0xe509('0x12'));var config=require(_0xe509('0x13'));var licenseUtil=require(_0xe509('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5cb26c,_0x1fcf26){_0x1fcf26=_0x1fcf26||0xcc;return function(_0x4c6be9){if(_0x4c6be9){return _0x5cb26c[_0xe509('0x15')](_0x1fcf26);}return _0x5cb26c['status'](_0x1fcf26)[_0xe509('0x16')]();};}function respondWithResult(_0x4a917d,_0x3702f9){_0x3702f9=_0x3702f9||0xc8;return function(_0x22f6a9){if(_0x22f6a9){return _0x4a917d[_0xe509('0x17')](_0x3702f9)['json'](_0x22f6a9);}};}function respondWithFilteredResult(_0x24a640,_0x522589){return function(_0x4a282b){if(_0x4a282b){var _0x2c8e13=typeof _0x522589[_0xe509('0x18')]===_0xe509('0x19')&&typeof _0x522589[_0xe509('0x1a')]===_0xe509('0x19');var _0x2cfbe5=_0x4a282b[_0xe509('0x1b')];var _0x4e4794=_0x2c8e13?0x0:_0x522589[_0xe509('0x18')];var _0x571a99=_0x2c8e13?_0x4a282b[_0xe509('0x1b')]:_0x522589[_0xe509('0x18')]+_0x522589[_0xe509('0x1a')];var _0x266980;if(_0x571a99>=_0x2cfbe5){_0x571a99=_0x2cfbe5;_0x266980=0xc8;}else{_0x266980=0xce;}_0x24a640[_0xe509('0x17')](_0x266980);return _0x24a640['set'](_0xe509('0x1c'),_0x4e4794+'-'+_0x571a99+'/'+_0x2cfbe5)[_0xe509('0x1d')](_0x4a282b);}return null;};}function patchUpdates(_0x333d4c){return function(_0x5569c9){try{jsonpatch[_0xe509('0x1e')](_0x5569c9,_0x333d4c,!![]);}catch(_0x5d368f){return BPromise[_0xe509('0x1f')](_0x5d368f);}return _0x5569c9['save']();};}function saveUpdates(_0x2a6561,_0x254036){return function(_0x34af04){if(_0x34af04){return _0x34af04[_0xe509('0x20')](_0x2a6561)['then'](function(_0x3b0ac2){return _0x3b0ac2;});}return null;};}function removeEntity(_0x1db5f5,_0x532390){return function(_0x3f35e0){if(_0x3f35e0){return _0x3f35e0[_0xe509('0x21')]()[_0xe509('0x22')](function(){_0x1db5f5[_0xe509('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1fe7d8,_0xa62fa2){return function(_0x2e3c87){if(!_0x2e3c87){_0x1fe7d8[_0xe509('0x15')](0x194);}return _0x2e3c87;};}function handleError(_0x3beab9,_0x44446f){_0x44446f=_0x44446f||0x1f4;return function(_0x340ec8){logger[_0xe509('0x23')](_0x340ec8[_0xe509('0x24')]);if(_0x340ec8[_0xe509('0x25')]){delete _0x340ec8[_0xe509('0x25')];}_0x3beab9[_0xe509('0x17')](_0x44446f)[_0xe509('0x26')](_0x340ec8);};}exports[_0xe509('0x27')]=function(_0x51e2e9,_0x8313c7){var _0x15beaa={},_0x358ad5={},_0x2a72eb={'count':0x0,'rows':[]};var _0x5d2e6f=_['map'](db['Attachment'][_0xe509('0x28')],function(_0x457cc8){return{'name':_0x457cc8[_0xe509('0x29')],'type':_0x457cc8['type'][_0xe509('0x2a')]};});_0x358ad5['model']=_[_0xe509('0x2b')](_0x5d2e6f,_0xe509('0x25'));_0x358ad5[_0xe509('0x2c')]=_[_0xe509('0x2d')](_0x51e2e9[_0xe509('0x2c')]);_0x358ad5['filters']=_[_0xe509('0x2e')](_0x358ad5[_0xe509('0x2f')],_0x358ad5[_0xe509('0x2c')]);_0x15beaa[_0xe509('0x30')]=_['intersection'](_0x358ad5[_0xe509('0x2f')],qs[_0xe509('0x31')](_0x51e2e9[_0xe509('0x2c')][_0xe509('0x31')]));_0x15beaa['attributes']=_0x15beaa[_0xe509('0x30')][_0xe509('0x32')]?_0x15beaa['attributes']:_0x358ad5[_0xe509('0x2f')];if(!_0x51e2e9[_0xe509('0x2c')]['hasOwnProperty'](_0xe509('0x33'))){_0x15beaa['limit']=qs['limit'](_0x51e2e9[_0xe509('0x2c')][_0xe509('0x1a')]);_0x15beaa[_0xe509('0x18')]=qs[_0xe509('0x18')](_0x51e2e9[_0xe509('0x2c')]['offset']);}_0x15beaa[_0xe509('0x34')]=qs[_0xe509('0x35')](_0x51e2e9[_0xe509('0x2c')][_0xe509('0x35')]);_0x15beaa[_0xe509('0x36')]=qs['filters'](_[_0xe509('0x37')](_0x51e2e9[_0xe509('0x2c')],_0x358ad5[_0xe509('0x38')]),_0x5d2e6f);if(_0x51e2e9[_0xe509('0x2c')][_0xe509('0x39')]){_0x15beaa[_0xe509('0x36')]=_['merge'](_0x15beaa[_0xe509('0x36')],{'$or':_['map'](_0x5d2e6f,function(_0x1fabf1){if(_0x1fabf1[_0xe509('0x3a')]!==_0xe509('0x3b')){var _0x445f28={};_0x445f28[_0x1fabf1[_0xe509('0x25')]]={'$like':'%'+_0x51e2e9['query'][_0xe509('0x39')]+'%'};return _0x445f28;}})});}_0x15beaa=_[_0xe509('0x3c')]({},_0x15beaa,_0x51e2e9['options']);var _0x48a54c={'where':_0x15beaa[_0xe509('0x36')]};return db[_0xe509('0x3d')]['count'](_0x48a54c)[_0xe509('0x22')](function(_0x237433){_0x2a72eb[_0xe509('0x1b')]=_0x237433;if(_0x51e2e9[_0xe509('0x2c')][_0xe509('0x3e')]){_0x15beaa[_0xe509('0x3f')]=[{'all':!![]}];}return db[_0xe509('0x3d')][_0xe509('0x40')](_0x15beaa);})[_0xe509('0x22')](function(_0x7f364){_0x2a72eb[_0xe509('0x41')]=_0x7f364;return _0x2a72eb;})[_0xe509('0x22')](respondWithFilteredResult(_0x8313c7,_0x15beaa))[_0xe509('0x42')](handleError(_0x8313c7,null));};exports[_0xe509('0x43')]=function(_0x54425d,_0x214e56){var _0x35b422={'raw':!![],'where':{'id':_0x54425d[_0xe509('0x44')]['id']}},_0xec22ac={};_0xec22ac[_0xe509('0x2f')]=_[_0xe509('0x2d')](db[_0xe509('0x3d')]['rawAttributes']);_0xec22ac[_0xe509('0x2c')]=_[_0xe509('0x2d')](_0x54425d[_0xe509('0x2c')]);_0xec22ac['filters']=_['intersection'](_0xec22ac[_0xe509('0x2f')],_0xec22ac[_0xe509('0x2c')]);_0x35b422[_0xe509('0x30')]=_['intersection'](_0xec22ac[_0xe509('0x2f')],qs['fields'](_0x54425d[_0xe509('0x2c')][_0xe509('0x31')]));_0x35b422['attributes']=_0x35b422['attributes'][_0xe509('0x32')]?_0x35b422[_0xe509('0x30')]:_0xec22ac['model'];if(_0x54425d['query'][_0xe509('0x3e')]){_0x35b422[_0xe509('0x3f')]=[{'all':!![]}];}_0x35b422=_[_0xe509('0x3c')]({},_0x35b422,_0x54425d[_0xe509('0x45')]);return db[_0xe509('0x3d')]['find'](_0x35b422)['then'](handleEntityNotFound(_0x214e56,null))['then'](respondWithResult(_0x214e56,null))['catch'](handleError(_0x214e56,null));};exports[_0xe509('0x46')]=function(_0xf3f29e,_0x4e474b){var _0x14824a={'where':{'id':_0xf3f29e[_0xe509('0x44')]['id']}},_0x96f3e9={};_0x96f3e9[_0xe509('0x2f')]=_['keys'](db[_0xe509('0x3d')][_0xe509('0x28')]);_0x14824a['attributes']=_['intersection'](_0x96f3e9['model'],qs['fields'](_0xf3f29e[_0xe509('0x2c')][_0xe509('0x31')]));_0x14824a[_0xe509('0x30')]=_0x14824a[_0xe509('0x30')][_0xe509('0x32')]?_0x14824a[_0xe509('0x30')]:_0x96f3e9['model'];if(_0xf3f29e[_0xe509('0x2c')][_0xe509('0x3e')]){_0x14824a['include']=[{'all':!![]}];}_0x14824a=_[_0xe509('0x3c')]({},_0x14824a,_0xf3f29e[_0xe509('0x45')]);return db[_0xe509('0x3d')]['find'](_0x14824a)[_0xe509('0x22')](handleEntityNotFound(_0x4e474b,null))[_0xe509('0x22')](function(_0x462eab){if(_0x462eab){var _0x252fb3=_0x462eab[_0xe509('0x47')]({'plain':!![]});_0x252fb3=qs[_0xe509('0x48')](_0x252fb3,['id',_0xe509('0x49'),'updatedAt']);_0xf3f29e[_0xe509('0x4a')]=_[_0xe509('0x48')](_0xf3f29e[_0xe509('0x4a')],['id',_0xe509('0x49'),_0xe509('0x4b')]);return db[_0xe509('0x3d')][_0xe509('0x4c')](_[_0xe509('0x3c')](_0x252fb3,_0xf3f29e[_0xe509('0x4a')]),{'include':_0xf3f29e[_0xe509('0x2c')][_0xe509('0x3e')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x4e474b,0xc9))['catch'](handleError(_0x4e474b,null));};exports[_0xe509('0x20')]=function(_0x2f5773,_0x3d596b){if(_0x2f5773['body']['id']){delete _0x2f5773[_0xe509('0x4a')]['id'];}return db[_0xe509('0x3d')]['find']({'where':{'id':_0x2f5773['params']['id']}})['then'](handleEntityNotFound(_0x3d596b,null))[_0xe509('0x22')](saveUpdates(_0x2f5773[_0xe509('0x4a')],null))[_0xe509('0x22')](respondWithResult(_0x3d596b,null))[_0xe509('0x42')](handleError(_0x3d596b,null));};exports[_0xe509('0x21')]=function(_0x5da12d,_0x18d0b1){return db[_0xe509('0x3d')]['find']({'where':{'id':_0x5da12d['params']['id']}})[_0xe509('0x22')](handleEntityNotFound(_0x18d0b1,null))['then'](removeEntity(_0x18d0b1,null))['catch'](handleError(_0x18d0b1,null));};exports['create']=function(_0x694beb,_0x3a27d4,_0x52efc9){_0x694beb[_0xe509('0x4a')]['name']=_0x694beb['file'][_0xe509('0x4d')];_0x694beb['body']['basename']=_0x694beb[_0xe509('0x4e')][_0xe509('0x4f')];_0x694beb[_0xe509('0x4a')]['type']=_0x694beb[_0xe509('0x4e')][_0xe509('0x50')];return db[_0xe509('0x3d')][_0xe509('0x4c')](_0x694beb[_0xe509('0x4a')])[_0xe509('0x22')](respondWithResult(_0x3a27d4,0xc9))['catch'](handleError(_0x3a27d4,null));};exports['download']=function(_0x3a6ba9,_0x148498,_0x294ff7){return db['Attachment'][_0xe509('0x51')]({'where':{'id':_0x3a6ba9['params']['id']},'raw':!![]})[_0xe509('0x22')](handleEntityNotFound(_0x148498,null))[_0xe509('0x22')](function(_0x59872d){if(_0x59872d){var _0x120d2a=_0x59872d[_0xe509('0x52')]!==null;var _0x4cfec9=path[_0xe509('0x53')](config['root'],'server/files/attachments/');if(_0x120d2a){_0x4cfec9=path[_0xe509('0x53')](_0x4cfec9,'offline-chat/');}var _0x391d58=path[_0xe509('0x53')](_0x4cfec9,_0x59872d[_0xe509('0x54')]);return _0x148498[_0xe509('0x55')](_0x391d58);}})[_0xe509('0x42')](handleError(_0x148498,null));};
\ No newline at end of file
index ae9c2e3..46f67b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d32=['api','bluebird','rimraf','exports','define','Attachment','attachments','lodash','util','../../config/logger'];(function(_0x5e4e54,_0x22683c){var _0x20b557=function(_0x59d565){while(--_0x59d565){_0x5e4e54['push'](_0x5e4e54['shift']());}};_0x20b557(++_0x22683c);}(_0x4d32,0x9d));var _0x24d3=function(_0x283b7c,_0x53bb1f){_0x283b7c=_0x283b7c-0x0;var _0x2a26ea=_0x4d32[_0x283b7c];return _0x2a26ea;};'use strict';var _=require(_0x24d3('0x0'));var util=require(_0x24d3('0x1'));var logger=require(_0x24d3('0x2'))(_0x24d3('0x3'));var moment=require('moment');var BPromise=require(_0x24d3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x24d3('0x5'));var config=require('../../config/environment');var attributes=require('./attachment.attributes');module[_0x24d3('0x6')]=function(_0x153c25,_0x24fe05){return _0x153c25[_0x24d3('0x7')](_0x24d3('0x8'),attributes,{'tableName':_0x24d3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb3b7=['Attachment','attachments','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','exports','define'];(function(_0x16d10f,_0x2ba2d5){var _0x50c823=function(_0x44e43f){while(--_0x44e43f){_0x16d10f['push'](_0x16d10f['shift']());}};_0x50c823(++_0x2ba2d5);}(_0xb3b7,0x18e));var _0x7b3b=function(_0x36e732,_0x15e51e){_0x36e732=_0x36e732-0x0;var _0x498e16=_0xb3b7[_0x36e732];return _0x498e16;};'use strict';var _=require(_0x7b3b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7b3b('0x1'));var moment=require('moment');var BPromise=require(_0x7b3b('0x2'));var rp=require(_0x7b3b('0x3'));var fs=require('fs');var path=require(_0x7b3b('0x4'));var rimraf=require(_0x7b3b('0x5'));var config=require(_0x7b3b('0x6'));var attributes=require(_0x7b3b('0x7'));module[_0x7b3b('0x8')]=function(_0x40c666,_0x5cbf7a){return _0x40c666[_0x7b3b('0x9')](_0x7b3b('0xa'),attributes,{'tableName':_0x7b3b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index abd14da..2fbae83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4746=['request','request\x20sent','debug','error','code','message','Attachment,\x20%s,\x20%s','info','catch','Attachment','create','body','options','raw','CreateAttachment','stringify','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x5108bf,_0x1e9b2a){var _0x343c7e=function(_0xebcba1){while(--_0xebcba1){_0x5108bf['push'](_0x5108bf['shift']());}};_0x343c7e(++_0x1e9b2a);}(_0x4746,0xc6));var _0x6474=function(_0x1c907e,_0x5d0fcb){_0x1c907e=_0x1c907e-0x0;var _0x20b6f6=_0x4746[_0x1c907e];return _0x20b6f6;};'use strict';var _=require(_0x6474('0x0'));var util=require(_0x6474('0x1'));var moment=require('moment');var BPromise=require(_0x6474('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6474('0x3'));var db=require(_0x6474('0x4'))['db'];var utils=require(_0x6474('0x5'));var logger=require(_0x6474('0x6'))(_0x6474('0x7'));var config=require('../../config/environment');var jayson=require(_0x6474('0x8'));var client=jayson[_0x6474('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x433af9,_0x427f79,_0xcd065e){return new BPromise(function(_0xec3cda,_0x15d4c2){return client[_0x6474('0xa')](_0x433af9,_0xcd065e)['then'](function(_0x1bc38b){logger['info']('Attachment,\x20%s,\x20%s',_0x427f79,_0x6474('0xb'));logger[_0x6474('0xc')]('Attachment,\x20%s,\x20%s,\x20%s',_0x427f79,_0x6474('0xb'),JSON['stringify'](_0x1bc38b));if(_0x1bc38b[_0x6474('0xd')]){if(_0x1bc38b['error'][_0x6474('0xe')]===0x1f4){logger[_0x6474('0xd')]('Attachment,\x20%s,\x20%s',_0x427f79,_0x1bc38b['error']['message']);return _0x15d4c2(_0x1bc38b[_0x6474('0xd')][_0x6474('0xf')]);}logger[_0x6474('0xd')](_0x6474('0x10'),_0x427f79,_0x1bc38b[_0x6474('0xd')][_0x6474('0xf')]);return _0xec3cda(_0x1bc38b[_0x6474('0xd')][_0x6474('0xf')]);}else{logger[_0x6474('0x11')]('Attachment,\x20%s,\x20%s',_0x427f79,'request\x20sent');_0xec3cda(_0x1bc38b['result'][_0x6474('0xf')]);}})[_0x6474('0x12')](function(_0x29c19b){logger[_0x6474('0xd')](_0x6474('0x10'),_0x427f79,_0x29c19b);_0x15d4c2(_0x29c19b);});});}exports['CreateAttachment']=function(_0x1505fc){var _0x7585ed=this;return new Promise(function(_0xb6ecb6,_0xc3448d){return db[_0x6474('0x13')][_0x6474('0x14')](_0x1505fc[_0x6474('0x15')],{'raw':_0x1505fc[_0x6474('0x16')]?_0x1505fc['options'][_0x6474('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0xd23b18){logger[_0x6474('0x11')](_0x6474('0x18'),_0x1505fc);logger[_0x6474('0xc')](_0x6474('0x18'),_0x1505fc,JSON[_0x6474('0x19')](_0xd23b18));_0xb6ecb6(_0xd23b18);})[_0x6474('0x12')](function(_0x5d0e5c){logger[_0x6474('0xd')]('CreateAttachment',_0x5d0e5c[_0x6474('0xf')],_0x1505fc);_0xc3448d(_0x7585ed['error'](0x1f4,_0x5d0e5c['message']));});});};
\ No newline at end of file
+var _0x7764=['debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateAttachment','Attachment','create','options','raw','then','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','info','Attachment,\x20%s,\x20%s','request\x20sent'];(function(_0x1a3634,_0x3a5fe7){var _0x2338c7=function(_0x5ee63d){while(--_0x5ee63d){_0x1a3634['push'](_0x1a3634['shift']());}};_0x2338c7(++_0x3a5fe7);}(_0x7764,0xa4));var _0x4776=function(_0x12bcf7,_0xc11103){_0x12bcf7=_0x12bcf7-0x0;var _0x2825a=_0x7764[_0x12bcf7];return _0x2825a;};'use strict';var _=require(_0x4776('0x0'));var util=require(_0x4776('0x1'));var moment=require(_0x4776('0x2'));var BPromise=require(_0x4776('0x3'));var rs=require(_0x4776('0x4'));var fs=require('fs');var Redis=require(_0x4776('0x5'));var db=require(_0x4776('0x6'))['db'];var utils=require(_0x4776('0x7'));var logger=require(_0x4776('0x8'))(_0x4776('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4776('0xa')][_0x4776('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52f59e,_0x1f9a45,_0x2b61c7){return new BPromise(function(_0x4fcbcc,_0x53f976){return client[_0x4776('0xc')](_0x52f59e,_0x2b61c7)['then'](function(_0x35bf06){logger[_0x4776('0xd')](_0x4776('0xe'),_0x1f9a45,_0x4776('0xf'));logger[_0x4776('0x10')](_0x4776('0x11'),_0x1f9a45,_0x4776('0xf'),JSON[_0x4776('0x12')](_0x35bf06));if(_0x35bf06[_0x4776('0x13')]){if(_0x35bf06[_0x4776('0x13')][_0x4776('0x14')]===0x1f4){logger[_0x4776('0x13')](_0x4776('0xe'),_0x1f9a45,_0x35bf06[_0x4776('0x13')][_0x4776('0x15')]);return _0x53f976(_0x35bf06[_0x4776('0x13')]['message']);}logger['error'](_0x4776('0xe'),_0x1f9a45,_0x35bf06[_0x4776('0x13')][_0x4776('0x15')]);return _0x4fcbcc(_0x35bf06[_0x4776('0x13')][_0x4776('0x15')]);}else{logger[_0x4776('0xd')](_0x4776('0xe'),_0x1f9a45,_0x4776('0xf'));_0x4fcbcc(_0x35bf06[_0x4776('0x16')][_0x4776('0x15')]);}})['catch'](function(_0x46fec7){logger['error'](_0x4776('0xe'),_0x1f9a45,_0x46fec7);_0x53f976(_0x46fec7);});});}exports[_0x4776('0x17')]=function(_0x2366da){var _0xed81b5=this;return new Promise(function(_0xb5c938,_0x4b5f50){return db[_0x4776('0x18')][_0x4776('0x19')](_0x2366da['body'],{'raw':_0x2366da[_0x4776('0x1a')]?_0x2366da[_0x4776('0x1a')][_0x4776('0x1b')]===undefined?!![]:![]:!![]})[_0x4776('0x1c')](function(_0x59b540){logger[_0x4776('0xd')](_0x4776('0x17'),_0x2366da);logger[_0x4776('0x10')](_0x4776('0x17'),_0x2366da,JSON['stringify'](_0x59b540));_0xb5c938(_0x59b540);})[_0x4776('0x1d')](function(_0xaa89dc){logger[_0x4776('0x13')]('CreateAttachment',_0xaa89dc[_0x4776('0x15')],_0x2366da);_0x4b5f50(_0xed81b5[_0x4776('0x13')](0x1f4,_0xaa89dc[_0x4776('0x15')]));});});};
\ No newline at end of file
index 6a918b6..b28ac77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','post','/:id/clone','clone','diskStorage','%s-%s','replace','single','file','create'];(function(_0x2dcb4d,_0xe886b3){var _0x2a0cab=function(_0xd1d9b1){while(--_0xd1d9b1){_0x2dcb4d['push'](_0x2dcb4d['shift']());}};_0x2a0cab(++_0xe886b3);}(_0x757a,0xde));var _0xa757=function(_0x53bfae,_0x1f5a14){_0x53bfae=_0x53bfae-0x0;var _0x587fda=_0x757a[_0x53bfae];return _0x587fda;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0x7')](_0xa757('0xb'),auth[_0xa757('0x9')](),controller['download']);router[_0xa757('0xc')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);var upload=multer({'storage':multer[_0xa757('0xf')]({'destination':function(_0x188ad5,_0x17408b,_0x483d77){_0x483d77(null,path['join'](config['root'],'server/files/attachments/'));},'filename':function(_0x4db68e,_0x421040,_0x544b45){_0x544b45(null,util['format'](_0xa757('0x10'),Date['now'](),_0x421040['originalname'][_0xa757('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xa757('0xc')]('/',upload[_0xa757('0x12')](_0xa757('0x13')),controller[_0xa757('0x14')]);router[_0xa757('0x15')](_0xa757('0x16'),auth[_0xa757('0x9')](),controller[_0xa757('0x17')]);router[_0xa757('0x18')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0x19')]);module[_0xa757('0x1a')]=router;
\ No newline at end of file
+var _0x0b0e=['/:id/clone','clone','diskStorage','join','server/files/attachments/','format','now','originalname','replace','single','create','/:id','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','isAuthenticated','index','show','/:id/download','post'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5ecff9,_0x473070){_0x5ecff9=_0x5ecff9-0x0;var _0x5e1415=_0x0b0e[_0x5ecff9];return _0x5e1415;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['download']);router[_0xe0b0('0xe')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x10')]);var upload=multer({'storage':multer[_0xe0b0('0x11')]({'destination':function(_0x574d96,_0x399320,_0x2cdad2){_0x2cdad2(null,path[_0xe0b0('0x12')](config['root'],_0xe0b0('0x13')));},'filename':function(_0x1c358a,_0x3cc19a,_0x45f914){_0x45f914(null,util[_0xe0b0('0x14')]('%s-%s',Date[_0xe0b0('0x15')](),_0x3cc19a[_0xe0b0('0x16')][_0xe0b0('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xe0b0('0xe')]('/',upload[_0xe0b0('0x18')]('file'),controller[_0xe0b0('0x19')]);router['put'](_0xe0b0('0x1a'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x1b')]('/:id',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x1c')]);module['exports']=router;
\ No newline at end of file
index 44f6abf..4127853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5921=['api','activedirectory','undefined','baseDN','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','findOne','blockDuration','then','adSsoEnabled','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','blocked','blockedAt','online','user','agent','disabled','add','minutes','getLicense','catch','status','message','login','ad-login','signToken','use','User','passport','passport-local','Strategy','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment'];(function(_0x5c883f,_0x38f092){var _0x4210cc=function(_0x51be71){while(--_0x51be71){_0x5c883f['push'](_0x5c883f['shift']());}};_0x4210cc(++_0x38f092);}(_0x5921,0x16e));var _0x1592=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0x5921[_0x4fde08];return _0x12e725;};'use strict';var passport=require(_0x1592('0x0'));var LocalStrategy=require(_0x1592('0x1'))[_0x1592('0x2')];var moment=require('moment');var ActiveDirectory=require(_0x1592('0x3'));var BPromise=require(_0x1592('0x4'));var util=require(_0x1592('0x5'));var db=require(_0x1592('0x6'))['db'];var authService=require(_0x1592('0x7'));var utils=require(_0x1592('0x8'));var config=require(_0x1592('0x9'));var logger=require('../../config/logger')(_0x1592('0xa'));function isActiveDirectoryConfigured(_0xae83ab){var _0x1a232f=![];if(typeof _0xae83ab[_0x1592('0xb')]!==_0x1592('0xc')){_0x1a232f=_0xae83ab[_0x1592('0xb')][_0x1592('0xd')]&&_0xae83ab[_0x1592('0xb')]['url']&&_0xae83ab[_0x1592('0xb')][_0x1592('0xe')];}return _0x1a232f;}function adAuthenticate(_0x3dfcd7,_0x3d3006,_0x6008d8){return new BPromise(function(_0x11a4e3,_0x23765b){try{var _0xd739d2=new ActiveDirectory(_0x3dfcd7);_0xd739d2[_0x1592('0xf')](_0x3d3006,_0x6008d8,function(_0x4de28f,_0x539c43){if(_0x4de28f){logger[_0x1592('0x10')](_0x1592('0x11'),_0x3d3006,util[_0x1592('0x12')](_0x4de28f,{'showHidden':![],'depth':null}));_0x23765b(_0x1592('0x13'));}else if(!_0x539c43){logger[_0x1592('0x10')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x3d3006);_0x23765b('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x11a4e3(_0x539c43);}});}catch(_0x11242a){_0x23765b(_0x11242a);}});}function ActiveDirectoryAuthenticate(_0x5e61b6,_0x23cb05,_0x2b59d9,_0x13b909){var _0x354905,_0x258ef2;if(!isActiveDirectoryConfigured(config)){logger[_0x1592('0x10')](_0x1592('0x14'),_0x23cb05);return _0x13b909(null,![],{'message':_0x1592('0x13')});}return db['Setting'][_0x1592('0x15')]({'where':{'id':0x1},'attributes':['adSsoEnabled',_0x1592('0x16')],'raw':!![]})[_0x1592('0x17')](function(_0x2682d8){_0x354905=_0x2682d8;if(!_0x354905[_0x1592('0x18')]){logger[_0x1592('0x10')](_0x1592('0x19'),_0x23cb05);throw new Error(_0x1592('0x13'));}return _0x5e61b6['findOne']({'attributes':['id',_0x1592('0x1a'),_0x1592('0x1b'),_0x1592('0x1c'),_0x1592('0x1d'),'disabled',_0x1592('0x1e'),_0x1592('0x1f'),_0x1592('0x20')],'where':{'name':_0x23cb05,'role':{'$or':['admin',_0x1592('0x21'),_0x1592('0x22')]},'adSsoEnabled':!![]}});})[_0x1592('0x17')](function(_0x3cf1bd){if(!_0x3cf1bd||_0x3cf1bd&&_0x3cf1bd[_0x1592('0x1a')]!==_0x23cb05){throw new Error(_0x1592('0x13'));}_0x258ef2=_0x3cf1bd;var _0x4e9c5c=_0x258ef2['name']+'@'+config[_0x1592('0xb')][_0x1592('0xe')];return adAuthenticate(config[_0x1592('0xb')],_0x4e9c5c,_0x2b59d9);})['then'](function(_0x2e30fb){if(_0x258ef2[_0x1592('0x23')]){throw new Error(_0x1592('0x13'));}if(_0x354905[_0x1592('0x16')]>0x0){if(_0x258ef2['blocked']){if(moment(_0x258ef2[_0x1592('0x1f')])[_0x1592('0x24')](_0x354905['blockDuration'],_0x1592('0x25'))>moment()){throw new Error(_0x1592('0x13'));}return utils['clearBlockUser'](_0x258ef2,0x0,![],null)[_0x1592('0x17')](function(){return utils[_0x1592('0x26')](_0x258ef2);})[_0x1592('0x17')](function(){return _0x13b909(null,_0x258ef2);});}else{return utils[_0x1592('0x26')](_0x258ef2)[_0x1592('0x17')](function(){return _0x13b909(null,_0x258ef2);});}}else{return utils[_0x1592('0x26')](_0x258ef2)['then'](function(){return _0x13b909(null,_0x258ef2);});}})[_0x1592('0x27')](function(_0x1b7895){return _0x13b909(null,![],_0x1b7895);});}function handleError(_0x1c400c,_0x10e156,_0x2fdd01){return _0x1c400c[_0x1592('0x28')](_0x10e156||0x1f4)['send']({'message':_0x2fdd01?_0x2fdd01[_0x1592('0x29')]||_0x2fdd01:''});}exports[_0x1592('0x2a')]=function(_0x58b561,_0x1197a1,_0x25c618){passport['authenticate'](_0x1592('0x2b'),function(_0x3d7678,_0x4dc941,_0x1ef5af){var _0x2bd194=_0x3d7678||_0x1ef5af;if(_0x2bd194){return handleError(_0x1197a1,0x191,_0x2bd194);}if(!_0x4dc941){return handleError(_0x1197a1,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0xac5cc7={'payload':{'id':_0x4dc941['id'],'role':_0x4dc941[_0x1592('0x1d')]},'options':{'expiresIn':0x15180}};return authService[_0x1592('0x2c')](_0xac5cc7)['then'](function(_0x38446c){_0x1197a1['json']({'id':_0x4dc941['id'],'token':_0x38446c,'statusCall':'','isAlreadyLogged':_0x4dc941[_0x1592('0x20')]});});}})(_0x58b561,_0x1197a1,_0x25c618);};passport[_0x1592('0x2d')](_0x1592('0x2b'),new LocalStrategy({'usernameField':_0x1592('0x1a'),'passwordField':_0x1592('0x1b')},function(_0x32d6e9,_0x57d565,_0x311a4d){return ActiveDirectoryAuthenticate(db[_0x1592('0x2e')],_0x32d6e9,_0x57d565,_0x311a4d);}));
\ No newline at end of file
+var _0x5afc=['../../config/logger','api','undefined','activedirectory','baseDN','domain','authenticate','error','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Setting','adSsoEnabled','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','name','role','disabled','blocked','blockedAt','admin','agent','blockDuration','minutes','clearBlockUser','getLicense','catch','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','use','User','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x3afa78,_0x5704d1){var _0x3c1bb0=function(_0x3cc8be){while(--_0x3cc8be){_0x3afa78['push'](_0x3afa78['shift']());}};_0x3c1bb0(++_0x5704d1);}(_0x5afc,0x1db));var _0xc5af=function(_0x27e32b,_0x1ed642){_0x27e32b=_0x27e32b-0x0;var _0xf2df7b=_0x5afc[_0x27e32b];return _0xf2df7b;};'use strict';var passport=require('passport');var LocalStrategy=require(_0xc5af('0x0'))[_0xc5af('0x1')];var moment=require(_0xc5af('0x2'));var ActiveDirectory=require(_0xc5af('0x3'));var BPromise=require(_0xc5af('0x4'));var util=require(_0xc5af('0x5'));var db=require(_0xc5af('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xc5af('0x7'));var config=require(_0xc5af('0x8'));var logger=require(_0xc5af('0x9'))(_0xc5af('0xa'));function isActiveDirectoryConfigured(_0x37d5c1){var _0x16e002=![];if(typeof _0x37d5c1['activedirectory']!==_0xc5af('0xb')){_0x16e002=_0x37d5c1[_0xc5af('0xc')][_0xc5af('0xd')]&&_0x37d5c1[_0xc5af('0xc')]['url']&&_0x37d5c1[_0xc5af('0xc')][_0xc5af('0xe')];}return _0x16e002;}function adAuthenticate(_0x3cd8f5,_0x460c60,_0x3517a8){return new BPromise(function(_0x4bb329,_0x55d2a7){try{var _0x54997f=new ActiveDirectory(_0x3cd8f5);_0x54997f[_0xc5af('0xf')](_0x460c60,_0x3517a8,function(_0x58e8d5,_0x5758eb){if(_0x58e8d5){logger[_0xc5af('0x10')]('Error\x20authenticate\x20%s:\x20%s',_0x460c60,util[_0xc5af('0x11')](_0x58e8d5,{'showHidden':![],'depth':null}));_0x55d2a7(_0xc5af('0x12'));}else if(!_0x5758eb){logger['error'](_0xc5af('0x13'),_0x460c60);_0x55d2a7('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x4bb329(_0x5758eb);}});}catch(_0x5785d7){_0x55d2a7(_0x5785d7);}});}function ActiveDirectoryAuthenticate(_0x15b213,_0x5c5e18,_0x273b45,_0x5a756b){var _0x32f9ff,_0x4f8f24;if(!isActiveDirectoryConfigured(config)){logger[_0xc5af('0x10')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x5c5e18);return _0x5a756b(null,![],{'message':_0xc5af('0x12')});}return db[_0xc5af('0x14')]['findOne']({'where':{'id':0x1},'attributes':[_0xc5af('0x15'),'blockDuration'],'raw':!![]})[_0xc5af('0x16')](function(_0x73ee8a){_0x32f9ff=_0x73ee8a;if(!_0x32f9ff[_0xc5af('0x15')]){logger['error'](_0xc5af('0x17'),_0x5c5e18);throw new Error(_0xc5af('0x12'));}return _0x15b213[_0xc5af('0x18')]({'attributes':['id',_0xc5af('0x19'),'password','salt',_0xc5af('0x1a'),_0xc5af('0x1b'),_0xc5af('0x1c'),_0xc5af('0x1d'),'online'],'where':{'name':_0x5c5e18,'role':{'$or':[_0xc5af('0x1e'),'user',_0xc5af('0x1f')]},'adSsoEnabled':!![]}});})[_0xc5af('0x16')](function(_0x4b3178){if(!_0x4b3178||_0x4b3178&&_0x4b3178[_0xc5af('0x19')]!==_0x5c5e18){throw new Error(_0xc5af('0x12'));}_0x4f8f24=_0x4b3178;var _0x237df3=_0x4f8f24[_0xc5af('0x19')]+'@'+config[_0xc5af('0xc')][_0xc5af('0xe')];return adAuthenticate(config['activedirectory'],_0x237df3,_0x273b45);})[_0xc5af('0x16')](function(_0x3666b4){if(_0x4f8f24[_0xc5af('0x1b')]){throw new Error(_0xc5af('0x12'));}if(_0x32f9ff[_0xc5af('0x20')]>0x0){if(_0x4f8f24[_0xc5af('0x1c')]){if(moment(_0x4f8f24[_0xc5af('0x1d')])['add'](_0x32f9ff[_0xc5af('0x20')],_0xc5af('0x21'))>moment()){throw new Error(_0xc5af('0x12'));}return utils[_0xc5af('0x22')](_0x4f8f24,0x0,![],null)[_0xc5af('0x16')](function(){return utils[_0xc5af('0x23')](_0x4f8f24);})['then'](function(){return _0x5a756b(null,_0x4f8f24);});}else{return utils[_0xc5af('0x23')](_0x4f8f24)['then'](function(){return _0x5a756b(null,_0x4f8f24);});}}else{return utils[_0xc5af('0x23')](_0x4f8f24)['then'](function(){return _0x5a756b(null,_0x4f8f24);});}})[_0xc5af('0x24')](function(_0x5994c4){return _0x5a756b(null,![],_0x5994c4);});}function handleError(_0x12f4d9,_0x250cc8,_0xc5ca6f){return _0x12f4d9['status'](_0x250cc8||0x1f4)[_0xc5af('0x25')]({'message':_0xc5ca6f?_0xc5ca6f[_0xc5af('0x26')]||_0xc5ca6f:''});}exports[_0xc5af('0x27')]=function(_0x5fb030,_0x2d77e9,_0x401a3b){passport[_0xc5af('0xf')](_0xc5af('0x28'),function(_0x535281,_0x31d15f,_0x53e79b){var _0x1107d6=_0x535281||_0x53e79b;if(_0x1107d6){return handleError(_0x2d77e9,0x191,_0x1107d6);}if(!_0x31d15f){return handleError(_0x2d77e9,0x194,{'message':_0xc5af('0x29')});}else{var _0x381a2c={'payload':{'id':_0x31d15f['id'],'role':_0x31d15f[_0xc5af('0x1a')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x381a2c)[_0xc5af('0x16')](function(_0x493080){_0x2d77e9['json']({'id':_0x31d15f['id'],'token':_0x493080,'statusCall':'','isAlreadyLogged':_0x31d15f['online']});});}})(_0x5fb030,_0x2d77e9,_0x401a3b);};passport[_0xc5af('0x2a')](_0xc5af('0x28'),new LocalStrategy({'usernameField':_0xc5af('0x19'),'passwordField':'password'},function(_0x33409d,_0x215a9f,_0x15a9d6){return ActiveDirectoryAuthenticate(db[_0xc5af('0x2b')],_0x33409d,_0x215a9f,_0x15a9d6);}));
\ No newline at end of file
index 1265db8..1871d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf407=['Router','./authActiveDirectory.controller','post','login','exports','express'];(function(_0x38854e,_0x23cbc9){var _0x3f8415=function(_0x4e493e){while(--_0x4e493e){_0x38854e['push'](_0x38854e['shift']());}};_0x3f8415(++_0x23cbc9);}(_0xf407,0x7d));var _0x7f40=function(_0x355463,_0x19e319){_0x355463=_0x355463-0x0;var _0xd89c57=_0xf407[_0x355463];return _0xd89c57;};'use strict';var express=require(_0x7f40('0x0'));var router=express[_0x7f40('0x1')]();var controller=require(_0x7f40('0x2'));router[_0x7f40('0x3')]('/',controller[_0x7f40('0x4')]);module[_0x7f40('0x5')]=router;
\ No newline at end of file
+var _0xa0aa=['./authActiveDirectory.controller','post','login','exports','express'];(function(_0x23fcec,_0x48ec4c){var _0x447567=function(_0x4781bb){while(--_0x4781bb){_0x23fcec['push'](_0x23fcec['shift']());}};_0x447567(++_0x48ec4c);}(_0xa0aa,0x6d));var _0xaa0a=function(_0x24e933,_0x2ed2b5){_0x24e933=_0x24e933-0x0;var _0x260aee=_0xa0aa[_0x24e933];return _0x260aee;};'use strict';var express=require(_0xaa0a('0x0'));var router=express['Router']();var controller=require(_0xaa0a('0x1'));router[_0xaa0a('0x2')]('/',controller[_0xaa0a('0x3')]);module[_0xaa0a('0x4')]=router;
\ No newline at end of file
index 56dc802..ae8380a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0x7a54,0x106));var _0x47a5=function(_0x58ab23,_0x9713db){_0x58ab23=_0x58ab23-0x0;var _0x2e8d72=_0x7a54[_0x58ab23];return _0x2e8d72;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
+var _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(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x7a54,0x106));var _0x47a5=function(_0x76c1fe,_0x29bdfa){_0x76c1fe=_0x76c1fe-0x0;var _0x4ce449=_0x7a54[_0x76c1fe];return _0x4ce449;};'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 ddc14e3..81be86d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea8=['isMiddleware','setTokenCookie','exports','express','passport','Router','../../components/auth/service','get','login','callback'];(function(_0xb2320d,_0xe69d49){var _0x9db91a=function(_0x5a0878){while(--_0x5a0878){_0xb2320d['push'](_0xb2320d['shift']());}};_0x9db91a(++_0xe69d49);}(_0xcea8,0x1d9));var _0x8cea=function(_0x50aea5,_0x5dd077){_0x50aea5=_0x50aea5-0x0;var _0x4657f1=_0xcea8[_0x50aea5];return _0x4657f1;};'use strict';var express=require(_0x8cea('0x0'));var passport=require(_0x8cea('0x1'));var router=express[_0x8cea('0x2')]();var controller=require('./authGoogle.controller');var userController=require('../user/user.controller.js');var authService=require(_0x8cea('0x3'));router[_0x8cea('0x4')]('/',controller[_0x8cea('0x5')]);router['get']('/callback',controller[_0x8cea('0x6')],authService[_0x8cea('0x7')],userController[_0x8cea('0x5')],authService[_0x8cea('0x8')]);module[_0x8cea('0x9')]=router;
\ No newline at end of file
+var _0xa639=['../../components/auth/service','login','/callback','isMiddleware','exports','passport','Router','./authGoogle.controller','../user/user.controller.js'];(function(_0xb153a9,_0x20aa86){var _0x2de9a3=function(_0x3ee1bd){while(--_0x3ee1bd){_0xb153a9['push'](_0xb153a9['shift']());}};_0x2de9a3(++_0x20aa86);}(_0xa639,0x140));var _0x9a63=function(_0x6c8fc3,_0x439e62){_0x6c8fc3=_0x6c8fc3-0x0;var _0x48d628=_0xa639[_0x6c8fc3];return _0x48d628;};'use strict';var express=require('express');var passport=require(_0x9a63('0x0'));var router=express[_0x9a63('0x1')]();var controller=require(_0x9a63('0x2'));var userController=require(_0x9a63('0x3'));var authService=require(_0x9a63('0x4'));router['get']('/',controller[_0x9a63('0x5')]);router['get'](_0x9a63('0x6'),controller['callback'],authService[_0x9a63('0x7')],userController[_0x9a63('0x5')],authService['setTokenCookie']);module[_0x9a63('0x8')]=router;
\ No newline at end of file
index 1bb01d5..46a6780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe75=['You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','host','/reset/','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','passwordHistoryLimit','securePassword','validatePasswordPattern','password','previousPasswords','validatePasswordHistory','Password\x20reset!','util','passport','passport-local','Strategy','lodash','randomstring','moment','../../components/auth/service','../../config/utils','client','http','Setting','findOne','role','disabled','blocked','blockedAt','admin','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','then','authenticate','blockDuration','add','minutes','clearBlockUser','allowedLoginAttempts','getLicense','catch','MailAccount','find','email','Smtp','CloudProvider','getSmtpOptions','format','\x22%s\x22\x20<%s>','user','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','stringify','status','send','message','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','forgot','body','Email\x20parameter\x20is\x20missing','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','save'];(function(_0xcc0da2,_0x564102){var _0x45860b=function(_0x38b16f){while(--_0x38b16f){_0xcc0da2['push'](_0xcc0da2['shift']());}};_0x45860b(++_0x564102);}(_0xfe75,0xb5));var _0x5fe7=function(_0xde593a,_0x12d3cf){_0xde593a=_0xde593a-0x0;var _0x365fd1=_0xfe75[_0xde593a];return _0x365fd1;};'use strict';var util=require(_0x5fe7('0x0'));var passport=require(_0x5fe7('0x1'));var LocalStrategy=require(_0x5fe7('0x2'))[_0x5fe7('0x3')];var jayson=require('jayson/promise');var _=require(_0x5fe7('0x4'));var rs=require(_0x5fe7('0x5'));var moment=require(_0x5fe7('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0x5fe7('0x7'));var utils=require(_0x5fe7('0x8'));var client=jayson[_0x5fe7('0x9')][_0x5fe7('0xa')]({'port':0x232b});function localAuthenticate(_0x2c77df,_0x35cbd8,_0x2fa2dd,_0x2d51ff){var _0x24d640,_0x3d584a;return db[_0x5fe7('0xb')][_0x5fe7('0xc')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})['then'](function(_0x1734a0){_0x24d640=_0x1734a0;return _0x2c77df[_0x5fe7('0xc')]({'attributes':['id','name','password','salt',_0x5fe7('0xd'),_0x5fe7('0xe'),_0x5fe7('0xf'),_0x5fe7('0x10'),'loginAttempts'],'where':{'name':_0x35cbd8,'role':{'$or':[_0x5fe7('0x11'),'user',_0x5fe7('0x12')]}}});})['then'](function(_0x59d9cf){if(!_0x59d9cf||_0x59d9cf&&_0x59d9cf[_0x5fe7('0x13')]!==_0x35cbd8){throw new Error(_0x5fe7('0x14'));}else{_0x3d584a=_0x59d9cf;return _0x3d584a;}})[_0x5fe7('0x15')](function(){_0x3d584a[_0x5fe7('0x16')](_0x2fa2dd,function(_0x30162d,_0xfd2dc0){var _0x1ca764=_0x3d584a['loginAttempts']+0x1;if(_0x30162d){return _0x2d51ff(_0x30162d);}else if(!_0xfd2dc0){if(_0x3d584a[_0x5fe7('0xe')]){return _0x2d51ff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x24d640['allowedLoginAttempts']>0x0){if(_0x3d584a['blocked']){if(_0x24d640[_0x5fe7('0x17')]>0x0){if(moment(_0x3d584a[_0x5fe7('0x10')])[_0x5fe7('0x18')](_0x24d640[_0x5fe7('0x17')],_0x5fe7('0x19'))>moment()){return _0x2d51ff(null,![],{'message':_0x5fe7('0x14')});}else{return utils[_0x5fe7('0x1a')](_0x3d584a,_0x1ca764,![],null)[_0x5fe7('0x15')](function(){return _0x2d51ff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x2d51ff(null,![],{'message':_0x5fe7('0x14')});}}else{if(_0x1ca764>=_0x24d640[_0x5fe7('0x1b')]){return utils[_0x5fe7('0x1a')](_0x3d584a,0x0,!![],moment())[_0x5fe7('0x15')](function(){return _0x2d51ff(null,![],{'message':_0x5fe7('0x14')});});}else{return utils[_0x5fe7('0x1a')](_0x3d584a,_0x1ca764,![],null)[_0x5fe7('0x15')](function(){return _0x2d51ff(null,![],{'message':_0x5fe7('0x14')});});}}}else{return _0x2d51ff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x3d584a[_0x5fe7('0xe')]){return _0x2d51ff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x24d640[_0x5fe7('0x1b')]>0x0){if(_0x3d584a[_0x5fe7('0xf')]){if(_0x24d640['blockDuration']>0x0){if(moment(_0x3d584a[_0x5fe7('0x10')])[_0x5fe7('0x18')](_0x24d640[_0x5fe7('0x17')],'minutes')>moment()){return _0x2d51ff(null,![],{'message':_0x5fe7('0x14')});}else{return utils[_0x5fe7('0x1a')](_0x3d584a,0x0,![],null)['then'](function(){return utils[_0x5fe7('0x1c')](_0x3d584a);})[_0x5fe7('0x15')](function(){return _0x2d51ff(null,_0x3d584a);});}}else{return _0x2d51ff(null,![],{'message':_0x5fe7('0x14')});}}else{return utils[_0x5fe7('0x1a')](_0x3d584a,0x0,![],null)[_0x5fe7('0x15')](function(){return utils['getLicense'](_0x3d584a);})[_0x5fe7('0x15')](function(){return _0x2d51ff(null,_0x3d584a);})['catch'](function(_0x5048e9){return _0x2d51ff(null,![],_0x5048e9);});}}else{if(_0x3d584a['blocked']){return _0x2d51ff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x5fe7('0x1c')](_0x3d584a)['then'](function(){return _0x2d51ff(null,_0x3d584a);});}}}});})[_0x5fe7('0x1d')](function(_0x422785){return _0x2d51ff(null,![],_0x422785);});}function sendServiceMail(_0xbbee2e){return db[_0x5fe7('0x1e')][_0x5fe7('0x1f')]({'where':{'service':!![]},'attributes':['id',_0x5fe7('0x13'),_0x5fe7('0x20')],'include':[{'model':db['MailServerOut'],'as':_0x5fe7('0x21'),'include':[{'model':db[_0x5fe7('0x22')],'as':'CloudProvider'}]}]})[_0x5fe7('0x15')](function(_0x489ebd){if(!_0x489ebd){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x4d3a70=_0x489ebd[_0x5fe7('0x23')]();var _0x19bb3c={'account':_0x4d3a70,'message':_['merge']({'from':util[_0x5fe7('0x24')](_0x5fe7('0x25'),_0x489ebd[_0x5fe7('0x13')],_0x489ebd[_0x5fe7('0x20')]||_0x489ebd['Smtp'][_0x5fe7('0x26')])},_0xbbee2e)};return client[_0x5fe7('0x27')](_0x5fe7('0x28'),_0x19bb3c);})[_0x5fe7('0x15')](function(_0x11e603){if(_0x11e603[_0x5fe7('0x29')]){throw new Error(util[_0x5fe7('0x24')](_0x5fe7('0x2a'),_0x11e603['error']['message']||JSON[_0x5fe7('0x2b')](_0x11e603[_0x5fe7('0x29')])));}return!![];});}function handleError(_0x157b89,_0x1396b8,_0x5a59a3){return _0x157b89[_0x5fe7('0x2c')](_0x1396b8||0x1f4)[_0x5fe7('0x2d')]({'message':_0x5a59a3?_0x5a59a3[_0x5fe7('0x2e')]||_0x5a59a3:''});}exports['login']=function(_0x41401a,_0x3f27f4,_0x5e21bf){passport[_0x5fe7('0x16')]('local-login',function(_0x4eba4d,_0x12579b,_0x392c91){var _0x50dbf4=_0x4eba4d||_0x392c91;if(_0x50dbf4){return handleError(_0x3f27f4,0x191,_0x50dbf4);}if(!_0x12579b){return handleError(_0x3f27f4,0x194,{'message':_0x5fe7('0x2f')});}else{var _0x236979={'payload':{'id':_0x12579b['id'],'role':_0x12579b[_0x5fe7('0xd')]},'options':{'expiresIn':0x15180}};return authService[_0x5fe7('0x30')](_0x236979)[_0x5fe7('0x15')](function(_0x36f0c2){_0x3f27f4[_0x5fe7('0x31')]({'id':_0x12579b['id'],'token':_0x36f0c2,'statusCall':'','isAlreadyLogged':_0x12579b[_0x5fe7('0x32')]});});}})(_0x41401a,_0x3f27f4,_0x5e21bf);};exports[_0x5fe7('0x33')]=function(_0x43f2f3,_0x458969){if(!_0x43f2f3[_0x5fe7('0x34')]['email']){return handleError(_0x458969,0x1f4,{'message':_0x5fe7('0x35')});}var _0x13a1b5=rs['generate']();_0x43f2f3['body'][_0x5fe7('0x20')]=_0x43f2f3['body'][_0x5fe7('0x20')]['trim']()[_0x5fe7('0x36')]();var _0x4f0d92;return db['Setting'][_0x5fe7('0xc')]({'where':{'id':0x1},'attributes':[_0x5fe7('0x1b'),_0x5fe7('0x17')],'raw':!![]})[_0x5fe7('0x15')](function(_0xe1e814){_0x4f0d92=_0xe1e814;return db[_0x5fe7('0x37')][_0x5fe7('0x1f')]({'where':{'email':_0x43f2f3[_0x5fe7('0x34')][_0x5fe7('0x20')]}});})['then'](function(_0x4024dd){if(!_0x4024dd){throw new Error(_0x5fe7('0x38'));}if(_0x4024dd[_0x5fe7('0xe')]){throw new Error(_0x5fe7('0x39'));}if(_0x4024dd[_0x5fe7('0xf')]){if(moment(_0x4024dd[_0x5fe7('0x10')])[_0x5fe7('0x18')](_0x4f0d92[_0x5fe7('0x17')],'minutes')>moment()){throw new Error(_0x5fe7('0x3a'));}else{_0x4024dd[_0x5fe7('0xf')]=![];_0x4024dd['blockedAt']=null;}}_0x4024dd[_0x5fe7('0x3b')]=_0x13a1b5;_0x4024dd[_0x5fe7('0x3c')]=Date['now']()+0x36ee80;return _0x4024dd[_0x5fe7('0x3d')]();})[_0x5fe7('0x15')](function(){return sendServiceMail({'to':_0x43f2f3[_0x5fe7('0x34')][_0x5fe7('0x20')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':_0x5fe7('0x3e')+_0x5fe7('0x3f')+_0x5fe7('0x40')+_0x43f2f3[_0x5fe7('0x41')][_0x5fe7('0x42')]+_0x5fe7('0x43')+_0x13a1b5+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0x5fe7('0x15')](function(){_0x458969[_0x5fe7('0x2c')](0xc8)[_0x5fe7('0x2d')]({'message':_0x5fe7('0x44')});})['catch'](function(_0x3617e8){return handleError(_0x458969,0x1f4,_0x3617e8);});};exports[_0x5fe7('0x45')]=function(_0x2227c8,_0x268b0e){return db['User']['find']({'where':{'resetPasswordToken':_0x2227c8[_0x5fe7('0x46')][_0x5fe7('0x47')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0x5fe7('0x15')](function(_0x2e4773){if(!_0x2e4773){throw new Error(_0x5fe7('0x48'));}return db['Setting'][_0x5fe7('0xc')]({'attributes':['id','securePassword',_0x5fe7('0x49'),_0x5fe7('0x4a')]})[_0x5fe7('0x15')](function(_0xa0a9c0){if(_0xa0a9c0[_0x5fe7('0x4b')])authService[_0x5fe7('0x4c')](_0x2227c8['body'][_0x5fe7('0x4d')]);if(!_0xa0a9c0[_0x5fe7('0x49')]||!_0x2e4773[_0x5fe7('0x4e')])return _0x2e4773;authService[_0x5fe7('0x4f')](_0x2227c8[_0x5fe7('0x34')][_0x5fe7('0x4d')],_0x2e4773[_0x5fe7('0x4e')],_0xa0a9c0[_0x5fe7('0x4a')]);return _0x2e4773;})[_0x5fe7('0x15')](function(){_0x2e4773[_0x5fe7('0x4d')]=_0x2227c8[_0x5fe7('0x34')][_0x5fe7('0x4d')];_0x2e4773[_0x5fe7('0x3b')]=null;_0x2e4773[_0x5fe7('0x3c')]=null;return _0x2e4773[_0x5fe7('0x3d')]();});})[_0x5fe7('0x15')](function(){_0x268b0e['status'](0xc8)[_0x5fe7('0x2d')]({'message':_0x5fe7('0x50')});})[_0x5fe7('0x1d')](function(_0x486f22){return handleError(_0x268b0e,0x1f4,_0x486f22);});};passport['use']('local-login',new LocalStrategy({'usernameField':'name','passwordField':_0x5fe7('0x4d')},function(_0x4b78d8,_0x37cee6,_0xfe8ed){return localAuthenticate(db[_0x5fe7('0x37')],_0x4b78d8,_0x37cee6,_0xfe8ed);}));
\ No newline at end of file
+var _0xb65b=['allowedLoginAttempts','blockDuration','then','password','salt','disabled','blocked','blockedAt','loginAttempts','admin','user','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','add','clearBlockUser','minutes','getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','status','send','message','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','forgot','body','Email\x20parameter\x20is\x20missing','generate','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','https://','headers','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','securePassword','validatePasswordPattern','previousPasswords','validatePasswordHistory','passwordHistoryLimit','Password\x20reset!','use','util','passport','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne'];(function(_0x39bd56,_0x471791){var _0x37f6af=function(_0x44d714){while(--_0x44d714){_0x39bd56['push'](_0x39bd56['shift']());}};_0x37f6af(++_0x471791);}(_0xb65b,0xf1));var _0xbb65=function(_0x49b23b,_0x5a6eeb){_0x49b23b=_0x49b23b-0x0;var _0x29ad1a=_0xb65b[_0x49b23b];return _0x29ad1a;};'use strict';var util=require(_0xbb65('0x0'));var passport=require(_0xbb65('0x1'));var LocalStrategy=require('passport-local')[_0xbb65('0x2')];var jayson=require(_0xbb65('0x3'));var _=require(_0xbb65('0x4'));var rs=require(_0xbb65('0x5'));var moment=require(_0xbb65('0x6'));var db=require(_0xbb65('0x7'))['db'];var authService=require(_0xbb65('0x8'));var utils=require(_0xbb65('0x9'));var client=jayson[_0xbb65('0xa')][_0xbb65('0xb')]({'port':0x232b});function localAuthenticate(_0x5dec39,_0x4e3397,_0xecbd17,_0x36558b){var _0x1ef626,_0x49f0a8;return db[_0xbb65('0xc')][_0xbb65('0xd')]({'where':{'id':0x1},'attributes':[_0xbb65('0xe'),_0xbb65('0xf')],'raw':!![]})[_0xbb65('0x10')](function(_0x241764){_0x1ef626=_0x241764;return _0x5dec39[_0xbb65('0xd')]({'attributes':['id','name',_0xbb65('0x11'),_0xbb65('0x12'),'role',_0xbb65('0x13'),_0xbb65('0x14'),_0xbb65('0x15'),_0xbb65('0x16')],'where':{'name':_0x4e3397,'role':{'$or':[_0xbb65('0x17'),_0xbb65('0x18'),_0xbb65('0x19')]}}});})[_0xbb65('0x10')](function(_0x2a4484){if(!_0x2a4484||_0x2a4484&&_0x2a4484[_0xbb65('0x1a')]!==_0x4e3397){throw new Error(_0xbb65('0x1b'));}else{_0x49f0a8=_0x2a4484;return _0x49f0a8;}})[_0xbb65('0x10')](function(){_0x49f0a8[_0xbb65('0x1c')](_0xecbd17,function(_0x34538f,_0x5b64db){var _0x37b404=_0x49f0a8[_0xbb65('0x16')]+0x1;if(_0x34538f){return _0x36558b(_0x34538f);}else if(!_0x5b64db){if(_0x49f0a8[_0xbb65('0x13')]){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}else if(_0x1ef626[_0xbb65('0xe')]>0x0){if(_0x49f0a8[_0xbb65('0x14')]){if(_0x1ef626[_0xbb65('0xf')]>0x0){if(moment(_0x49f0a8[_0xbb65('0x15')])[_0xbb65('0x1d')](_0x1ef626[_0xbb65('0xf')],'minutes')>moment()){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}else{return utils[_0xbb65('0x1e')](_0x49f0a8,_0x37b404,![],null)[_0xbb65('0x10')](function(){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});});}}else{return _0x36558b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x37b404>=_0x1ef626[_0xbb65('0xe')]){return utils[_0xbb65('0x1e')](_0x49f0a8,0x0,!![],moment())[_0xbb65('0x10')](function(){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});});}else{return utils[_0xbb65('0x1e')](_0x49f0a8,_0x37b404,![],null)['then'](function(){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});});}}}else{return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}}else{if(_0x49f0a8['disabled']){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}else if(_0x1ef626[_0xbb65('0xe')]>0x0){if(_0x49f0a8[_0xbb65('0x14')]){if(_0x1ef626['blockDuration']>0x0){if(moment(_0x49f0a8[_0xbb65('0x15')])['add'](_0x1ef626[_0xbb65('0xf')],_0xbb65('0x1f'))>moment()){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}else{return utils[_0xbb65('0x1e')](_0x49f0a8,0x0,![],null)['then'](function(){return utils[_0xbb65('0x20')](_0x49f0a8);})[_0xbb65('0x10')](function(){return _0x36558b(null,_0x49f0a8);});}}else{return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}}else{return utils['clearBlockUser'](_0x49f0a8,0x0,![],null)[_0xbb65('0x10')](function(){return utils['getLicense'](_0x49f0a8);})[_0xbb65('0x10')](function(){return _0x36558b(null,_0x49f0a8);})[_0xbb65('0x21')](function(_0x3ccc95){return _0x36558b(null,![],_0x3ccc95);});}}else{if(_0x49f0a8[_0xbb65('0x14')]){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}else{return utils[_0xbb65('0x20')](_0x49f0a8)[_0xbb65('0x10')](function(){return _0x36558b(null,_0x49f0a8);});}}}});})[_0xbb65('0x21')](function(_0x532a22){return _0x36558b(null,![],_0x532a22);});}function sendServiceMail(_0x26e30e){return db[_0xbb65('0x22')][_0xbb65('0x23')]({'where':{'service':!![]},'attributes':['id',_0xbb65('0x1a'),_0xbb65('0x24')],'include':[{'model':db[_0xbb65('0x25')],'as':_0xbb65('0x26'),'include':[{'model':db[_0xbb65('0x27')],'as':'CloudProvider'}]}]})['then'](function(_0x25394f){if(!_0x25394f){throw new Error(_0xbb65('0x28'));}var _0x2ab6b7=_0x25394f[_0xbb65('0x29')]();var _0x183d10={'account':_0x2ab6b7,'message':_[_0xbb65('0x2a')]({'from':util[_0xbb65('0x2b')](_0xbb65('0x2c'),_0x25394f['name'],_0x25394f['email']||_0x25394f[_0xbb65('0x26')]['user'])},_0x26e30e)};return client[_0xbb65('0x2d')](_0xbb65('0x2e'),_0x183d10);})['then'](function(_0x4f544c){if(_0x4f544c[_0xbb65('0x2f')]){throw new Error(util[_0xbb65('0x2b')](_0xbb65('0x30'),_0x4f544c[_0xbb65('0x2f')]['message']||JSON['stringify'](_0x4f544c['error'])));}return!![];});}function handleError(_0x5bcf33,_0x566d07,_0x1b973d){return _0x5bcf33[_0xbb65('0x31')](_0x566d07||0x1f4)[_0xbb65('0x32')]({'message':_0x1b973d?_0x1b973d[_0xbb65('0x33')]||_0x1b973d:''});}exports['login']=function(_0x32ee32,_0x28c8db,_0x369673){passport[_0xbb65('0x1c')](_0xbb65('0x34'),function(_0x386c63,_0x525a4d,_0x12351c){var _0x2d1947=_0x386c63||_0x12351c;if(_0x2d1947){return handleError(_0x28c8db,0x191,_0x2d1947);}if(!_0x525a4d){return handleError(_0x28c8db,0x194,{'message':_0xbb65('0x35')});}else{var _0x11cef0={'payload':{'id':_0x525a4d['id'],'role':_0x525a4d['role']},'options':{'expiresIn':0x15180}};return authService[_0xbb65('0x36')](_0x11cef0)[_0xbb65('0x10')](function(_0x3c5897){_0x28c8db[_0xbb65('0x37')]({'id':_0x525a4d['id'],'token':_0x3c5897,'statusCall':'','isAlreadyLogged':_0x525a4d['online']});});}})(_0x32ee32,_0x28c8db,_0x369673);};exports[_0xbb65('0x38')]=function(_0x1af15c,_0x1eebea){if(!_0x1af15c[_0xbb65('0x39')][_0xbb65('0x24')]){return handleError(_0x1eebea,0x1f4,{'message':_0xbb65('0x3a')});}var _0x2bc27f=rs[_0xbb65('0x3b')]();_0x1af15c[_0xbb65('0x39')]['email']=_0x1af15c[_0xbb65('0x39')][_0xbb65('0x24')]['trim']()[_0xbb65('0x3c')]();var _0x2c4a88;return db[_0xbb65('0xc')]['findOne']({'where':{'id':0x1},'attributes':[_0xbb65('0xe'),_0xbb65('0xf')],'raw':!![]})[_0xbb65('0x10')](function(_0x10564e){_0x2c4a88=_0x10564e;return db['User']['find']({'where':{'email':_0x1af15c[_0xbb65('0x39')][_0xbb65('0x24')]}});})[_0xbb65('0x10')](function(_0x53fbd4){if(!_0x53fbd4){throw new Error(_0xbb65('0x3d'));}if(_0x53fbd4[_0xbb65('0x13')]){throw new Error(_0xbb65('0x3e'));}if(_0x53fbd4['blocked']){if(moment(_0x53fbd4[_0xbb65('0x15')])[_0xbb65('0x1d')](_0x2c4a88[_0xbb65('0xf')],'minutes')>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x53fbd4['blocked']=![];_0x53fbd4[_0xbb65('0x15')]=null;}}_0x53fbd4[_0xbb65('0x3f')]=_0x2bc27f;_0x53fbd4[_0xbb65('0x40')]=Date[_0xbb65('0x41')]()+0x36ee80;return _0x53fbd4[_0xbb65('0x42')]();})[_0xbb65('0x10')](function(){return sendServiceMail({'to':_0x1af15c[_0xbb65('0x39')][_0xbb65('0x24')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0xbb65('0x43')+_0x1af15c[_0xbb65('0x44')][_0xbb65('0x45')]+_0xbb65('0x46')+_0x2bc27f+'\x0a\x0a'+_0xbb65('0x47')});})[_0xbb65('0x10')](function(){_0x1eebea[_0xbb65('0x31')](0xc8)[_0xbb65('0x32')]({'message':_0xbb65('0x48')});})[_0xbb65('0x21')](function(_0x238164){return handleError(_0x1eebea,0x1f4,_0x238164);});};exports[_0xbb65('0x49')]=function(_0x2e76c9,_0x191a11){return db['User']['find']({'where':{'resetPasswordToken':_0x2e76c9[_0xbb65('0x4a')][_0xbb65('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xbb65('0x41')]()}}})[_0xbb65('0x10')](function(_0x3567ad){if(!_0x3567ad){throw new Error(_0xbb65('0x4c'));}return db[_0xbb65('0xc')][_0xbb65('0xd')]({'attributes':['id','securePassword',_0xbb65('0x4d'),'passwordHistoryLimit']})[_0xbb65('0x10')](function(_0x26af3d){if(_0x26af3d[_0xbb65('0x4e')])authService[_0xbb65('0x4f')](_0x2e76c9[_0xbb65('0x39')][_0xbb65('0x11')]);if(!_0x26af3d['enforcePasswordHistory']||!_0x3567ad[_0xbb65('0x50')])return _0x3567ad;authService[_0xbb65('0x51')](_0x2e76c9[_0xbb65('0x39')]['password'],_0x3567ad[_0xbb65('0x50')],_0x26af3d[_0xbb65('0x52')]);return _0x3567ad;})['then'](function(){_0x3567ad[_0xbb65('0x11')]=_0x2e76c9[_0xbb65('0x39')][_0xbb65('0x11')];_0x3567ad[_0xbb65('0x3f')]=null;_0x3567ad[_0xbb65('0x40')]=null;return _0x3567ad[_0xbb65('0x42')]();});})[_0xbb65('0x10')](function(){_0x191a11[_0xbb65('0x31')](0xc8)[_0xbb65('0x32')]({'message':_0xbb65('0x53')});})[_0xbb65('0x21')](function(_0x1e470d){return handleError(_0x191a11,0x1f4,_0x1e470d);});};passport[_0xbb65('0x54')]('local-login',new LocalStrategy({'usernameField':_0xbb65('0x1a'),'passwordField':'password'},function(_0x25c4d4,_0x5b9699,_0x150785){return localAuthenticate(db['User'],_0x25c4d4,_0x5b9699,_0x150785);}));
\ No newline at end of file
index 37756ef..d29c193 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07ee=['post','login','/reset/:token','exports','express'];(function(_0x1bba92,_0x57636e){var _0x305d56=function(_0x418ef0){while(--_0x418ef0){_0x1bba92['push'](_0x1bba92['shift']());}};_0x305d56(++_0x57636e);}(_0x07ee,0x1b2));var _0xe07e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x07ee[_0x37c22c];return _0x119d79;};'use strict';var express=require(_0xe07e('0x0'));var router=express['Router']();var controller=require('./authLocal.controller');router[_0xe07e('0x1')]('/',controller[_0xe07e('0x2')]);router[_0xe07e('0x1')]('/forgot',controller['forgot']);router[_0xe07e('0x1')](_0xe07e('0x3'),controller['reset']);module[_0xe07e('0x4')]=router;
\ No newline at end of file
+var _0x846a=['Router','./authLocal.controller','post','login','/forgot','forgot','/reset/:token','reset','exports','express'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x846a,0x185));var _0xa846=function(_0x4f1802,_0x1613d2){_0x4f1802=_0x4f1802-0x0;var _0x906479=_0x846a[_0x4f1802];return _0x906479;};'use strict';var express=require(_0xa846('0x0'));var router=express[_0xa846('0x1')]();var controller=require(_0xa846('0x2'));router[_0xa846('0x3')]('/',controller[_0xa846('0x4')]);router[_0xa846('0x3')](_0xa846('0x5'),controller[_0xa846('0x6')]);router[_0xa846('0x3')](_0xa846('0x7'),controller[_0xa846('0x8')]);module[_0xa846('0x9')]=router;
\ No newline at end of file
index 4b7e753..9515afa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70b8=['STRING','BOOLEAN','INTEGER','sequelize','exports'];(function(_0x3dbc81,_0x5758fb){var _0x2f54c9=function(_0x16c516){while(--_0x16c516){_0x3dbc81['push'](_0x3dbc81['shift']());}};_0x2f54c9(++_0x5758fb);}(_0x70b8,0x19d));var _0x870b=function(_0x9af5f8,_0x2aba65){_0x9af5f8=_0x9af5f8-0x0;var _0x16f732=_0x70b8[_0x9af5f8];return _0x16f732;};'use strict';var Sequelize=require(_0x870b('0x0'));module[_0x870b('0x1')]={'name':{'type':Sequelize[_0x870b('0x2')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x870b('0x2')]},'status':{'type':Sequelize[_0x870b('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x870b('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xa661=['exports','STRING','BOOLEAN','INTEGER'];(function(_0x2e1a7e,_0x3fdc3b){var _0x212930=function(_0x2e469a){while(--_0x2e469a){_0x2e1a7e['push'](_0x2e1a7e['shift']());}};_0x212930(++_0x3fdc3b);}(_0xa661,0x1c4));var _0x1a66=function(_0x27ba9b,_0x570bb6){_0x27ba9b=_0x27ba9b-0x0;var _0x32b62c=_0xa661[_0x27ba9b];return _0x32b62c;};'use strict';var Sequelize=require('sequelize');module[_0x1a66('0x0')]={'name':{'type':Sequelize[_0x1a66('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x1a66('0x1')]},'description':{'type':Sequelize[_0x1a66('0x1')]},'status':{'type':Sequelize[_0x1a66('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x1a66('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index bc5ccae..8e86fa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd915=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','sendStatus','end','status','undefined','count','offset','limit','set','apply','reject','update','then','destroy','error','name','send','map','Automation','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','merge','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','addConditions','Condition','ids','omit','getConditions','length','Action','addActions','findOne','order','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x3abf91,_0x52b83c){var _0x429cae=function(_0xaa4612){while(--_0xaa4612){_0x3abf91['push'](_0x3abf91['shift']());}};_0x429cae(++_0x52b83c);}(_0xd915,0x137));var _0x5d91=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xd915[_0x2a6809];return _0x11c371;};'use strict';var emlformat=require(_0x5d91('0x0'));var rimraf=require(_0x5d91('0x1'));var zipdir=require(_0x5d91('0x2'));var jsonpatch=require(_0x5d91('0x3'));var rp=require(_0x5d91('0x4'));var moment=require('moment');var BPromise=require(_0x5d91('0x5'));var Mustache=require(_0x5d91('0x6'));var util=require(_0x5d91('0x7'));var path=require(_0x5d91('0x8'));var sox=require(_0x5d91('0x9'));var csv=require(_0x5d91('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5d91('0xb'));var _=require(_0x5d91('0xc'));var squel=require(_0x5d91('0xd'));var crypto=require(_0x5d91('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x5d91('0xf'));var toCsv=require(_0x5d91('0xa'));var querystring=require(_0x5d91('0x10'));var Papa=require(_0x5d91('0x11'));var Redis=require(_0x5d91('0x12'));var authService=require(_0x5d91('0x13'));var qs=require(_0x5d91('0x14'));var as=require(_0x5d91('0x15'));var hardwareService=require(_0x5d91('0x16'));var logger=require(_0x5d91('0x17'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5d91('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f36da,_0x28f2ce){_0x28f2ce=_0x28f2ce||0xcc;return function(_0x15c9f6){if(_0x15c9f6){return _0x2f36da[_0x5d91('0x19')](_0x28f2ce);}return _0x2f36da['status'](_0x28f2ce)[_0x5d91('0x1a')]();};}function respondWithResult(_0x1e7f89,_0xbb7c9e){_0xbb7c9e=_0xbb7c9e||0xc8;return function(_0x2dcb69){if(_0x2dcb69){return _0x1e7f89[_0x5d91('0x1b')](_0xbb7c9e)['json'](_0x2dcb69);}};}function respondWithFilteredResult(_0x332a07,_0x243fa0){return function(_0x73e2d6){if(_0x73e2d6){var _0x122fcb=typeof _0x243fa0['offset']===_0x5d91('0x1c')&&typeof _0x243fa0['limit']===_0x5d91('0x1c');var _0x5e32ae=_0x73e2d6[_0x5d91('0x1d')];var _0x23c7fd=_0x122fcb?0x0:_0x243fa0[_0x5d91('0x1e')];var _0x3c11ca=_0x122fcb?_0x73e2d6[_0x5d91('0x1d')]:_0x243fa0[_0x5d91('0x1e')]+_0x243fa0[_0x5d91('0x1f')];var _0x139cb4;if(_0x3c11ca>=_0x5e32ae){_0x3c11ca=_0x5e32ae;_0x139cb4=0xc8;}else{_0x139cb4=0xce;}_0x332a07[_0x5d91('0x1b')](_0x139cb4);return _0x332a07[_0x5d91('0x20')]('Content-Range',_0x23c7fd+'-'+_0x3c11ca+'/'+_0x5e32ae)['json'](_0x73e2d6);}return null;};}function patchUpdates(_0x2c5d9c){return function(_0x3f55a3){try{jsonpatch[_0x5d91('0x21')](_0x3f55a3,_0x2c5d9c,!![]);}catch(_0x54b9e0){return BPromise[_0x5d91('0x22')](_0x54b9e0);}return _0x3f55a3['save']();};}function saveUpdates(_0x252474,_0x3b19cd){return function(_0xfa179b){if(_0xfa179b){return _0xfa179b[_0x5d91('0x23')](_0x252474)[_0x5d91('0x24')](function(_0x4b8e6c){return _0x4b8e6c;});}return null;};}function removeEntity(_0x1162b5,_0x428c7f){return function(_0x20e8a6){if(_0x20e8a6){return _0x20e8a6[_0x5d91('0x25')]()['then'](function(){_0x1162b5[_0x5d91('0x1b')](0xcc)[_0x5d91('0x1a')]();});}};}function handleEntityNotFound(_0x5a3a6c,_0x41d632){return function(_0x2eac3f){if(!_0x2eac3f){_0x5a3a6c['sendStatus'](0x194);}return _0x2eac3f;};}function handleError(_0x185e30,_0x11fe03){_0x11fe03=_0x11fe03||0x1f4;return function(_0xbf9eb5){logger[_0x5d91('0x26')](_0xbf9eb5['stack']);if(_0xbf9eb5[_0x5d91('0x27')]){delete _0xbf9eb5[_0x5d91('0x27')];}_0x185e30['status'](_0x11fe03)[_0x5d91('0x28')](_0xbf9eb5);};}exports['index']=function(_0x2f925d,_0x34fe10){var _0x49a65c={},_0x4d37f8={},_0xdf6aec={'count':0x0,'rows':[]};var _0x590a62=_[_0x5d91('0x29')](db[_0x5d91('0x2a')][_0x5d91('0x2b')],function(_0x51cbf1){return{'name':_0x51cbf1[_0x5d91('0x2c')],'type':_0x51cbf1[_0x5d91('0x2d')][_0x5d91('0x2e')]};});_0x4d37f8[_0x5d91('0x2f')]=_['map'](_0x590a62,_0x5d91('0x27'));_0x4d37f8[_0x5d91('0x30')]=_[_0x5d91('0x31')](_0x2f925d[_0x5d91('0x30')]);_0x4d37f8['filters']=_[_0x5d91('0x32')](_0x4d37f8[_0x5d91('0x2f')],_0x4d37f8['query']);_0x49a65c[_0x5d91('0x33')]=_[_0x5d91('0x32')](_0x4d37f8[_0x5d91('0x2f')],qs['fields'](_0x2f925d[_0x5d91('0x30')][_0x5d91('0x34')]));_0x49a65c[_0x5d91('0x33')]=_0x49a65c[_0x5d91('0x33')]['length']?_0x49a65c[_0x5d91('0x33')]:_0x4d37f8['model'];if(!_0x2f925d[_0x5d91('0x30')][_0x5d91('0x35')](_0x5d91('0x36'))){_0x49a65c[_0x5d91('0x1f')]=qs[_0x5d91('0x1f')](_0x2f925d[_0x5d91('0x30')][_0x5d91('0x1f')]);_0x49a65c[_0x5d91('0x1e')]=qs[_0x5d91('0x1e')](_0x2f925d[_0x5d91('0x30')][_0x5d91('0x1e')]);}_0x49a65c['order']=qs[_0x5d91('0x37')](_0x2f925d[_0x5d91('0x30')][_0x5d91('0x37')]);_0x49a65c[_0x5d91('0x38')]=qs[_0x5d91('0x39')](_[_0x5d91('0x3a')](_0x2f925d[_0x5d91('0x30')],_0x4d37f8[_0x5d91('0x39')]),_0x590a62);if(_0x2f925d[_0x5d91('0x30')]['filter']){_0x49a65c[_0x5d91('0x38')]=_[_0x5d91('0x3b')](_0x49a65c['where'],{'$or':_[_0x5d91('0x29')](_0x590a62,function(_0x4dccfc){if(_0x4dccfc['type']!=='VIRTUAL'){var _0x504358={};_0x504358[_0x4dccfc[_0x5d91('0x27')]]={'$like':'%'+_0x2f925d[_0x5d91('0x30')][_0x5d91('0x3c')]+'%'};return _0x504358;}})});}_0x49a65c=_['merge']({},_0x49a65c,_0x2f925d[_0x5d91('0x3d')]);var _0x2a10df={'where':_0x49a65c['where']};return db['Automation'][_0x5d91('0x1d')](_0x2a10df)[_0x5d91('0x24')](function(_0x5e3557){_0xdf6aec['count']=_0x5e3557;if(_0x2f925d[_0x5d91('0x30')][_0x5d91('0x3e')]){_0x49a65c[_0x5d91('0x3f')]=[{'all':!![]}];}return db[_0x5d91('0x2a')][_0x5d91('0x40')](_0x49a65c);})['then'](function(_0x21efde){_0xdf6aec[_0x5d91('0x41')]=_0x21efde;return _0xdf6aec;})[_0x5d91('0x24')](respondWithFilteredResult(_0x34fe10,_0x49a65c))[_0x5d91('0x42')](handleError(_0x34fe10,null));};exports[_0x5d91('0x43')]=function(_0x4d4f74,_0x4ae299){var _0x56af87={'raw':![],'where':{'id':_0x4d4f74[_0x5d91('0x44')]['id']}},_0x713703={};_0x713703[_0x5d91('0x2f')]=_['keys'](db[_0x5d91('0x2a')][_0x5d91('0x2b')]);_0x713703[_0x5d91('0x30')]=_[_0x5d91('0x31')](_0x4d4f74['query']);_0x713703['filters']=_[_0x5d91('0x32')](_0x713703[_0x5d91('0x2f')],_0x713703['query']);_0x56af87['attributes']=_['intersection'](_0x713703[_0x5d91('0x2f')],qs[_0x5d91('0x34')](_0x4d4f74['query']['fields']));_0x56af87[_0x5d91('0x33')]=_0x56af87[_0x5d91('0x33')]['length']?_0x56af87['attributes']:_0x713703[_0x5d91('0x2f')];if(_0x4d4f74[_0x5d91('0x30')][_0x5d91('0x3e')]){_0x56af87[_0x5d91('0x3f')]=[{'all':!![]}];}_0x56af87=_['merge']({},_0x56af87,_0x4d4f74[_0x5d91('0x3d')]);return db[_0x5d91('0x2a')][_0x5d91('0x45')](_0x56af87)[_0x5d91('0x24')](handleEntityNotFound(_0x4ae299,null))[_0x5d91('0x24')](respondWithResult(_0x4ae299,null))[_0x5d91('0x42')](handleError(_0x4ae299,null));};exports['create']=function(_0x4ff1a4,_0x2611f6){return db['Automation'][_0x5d91('0x46')](_0x4ff1a4[_0x5d91('0x47')],{})[_0x5d91('0x24')](respondWithResult(_0x2611f6,0xc9))['catch'](handleError(_0x2611f6,null));};exports[_0x5d91('0x23')]=function(_0x727868,_0x3b8c11){if(_0x727868['body']['id']){delete _0x727868[_0x5d91('0x47')]['id'];}return db[_0x5d91('0x2a')]['find']({'where':{'id':_0x727868['params']['id']}})[_0x5d91('0x24')](handleEntityNotFound(_0x3b8c11,null))[_0x5d91('0x24')](saveUpdates(_0x727868[_0x5d91('0x47')],null))['then'](respondWithResult(_0x3b8c11,null))['catch'](handleError(_0x3b8c11,null));};exports[_0x5d91('0x25')]=function(_0x596a35,_0x3006a0){return db['Automation']['find']({'where':{'id':_0x596a35[_0x5d91('0x44')]['id']}})[_0x5d91('0x24')](handleEntityNotFound(_0x3006a0,null))[_0x5d91('0x24')](removeEntity(_0x3006a0,null))['catch'](handleError(_0x3006a0,null));};exports[_0x5d91('0x48')]=function(_0x3e41b3,_0x560620,_0x3018c9){return db[_0x5d91('0x49')][_0x5d91('0x45')]({'where':{'id':_0x3e41b3[_0x5d91('0x44')]['id']}})[_0x5d91('0x24')](handleEntityNotFound(_0x560620,null))[_0x5d91('0x24')](function(_0x4a3099){if(_0x4a3099){return _0x4a3099[_0x5d91('0x48')](_0x3e41b3['body'][_0x5d91('0x4a')],_[_0x5d91('0x4b')](_0x3e41b3[_0x5d91('0x47')],[_0x5d91('0x4a'),'id'])||{});}})[_0x5d91('0x24')](respondWithResult(_0x560620,null))['catch'](handleError(_0x560620,null));};exports[_0x5d91('0x4c')]=function(_0x2dae2e,_0x5021dc,_0x3055ac){var _0x41fe58={};var _0x503c1f={};var _0x2c218b;var _0x554f29;return db[_0x5d91('0x2a')]['findOne']({'where':{'id':_0x2dae2e['params']['id']}})[_0x5d91('0x24')](handleEntityNotFound(_0x5021dc,null))[_0x5d91('0x24')](function(_0x24b2fa){if(_0x24b2fa){_0x2c218b=_0x24b2fa;_0x503c1f['model']=_[_0x5d91('0x31')](db['Condition'][_0x5d91('0x2b')]);_0x503c1f['query']=_['keys'](_0x2dae2e['query']);_0x503c1f[_0x5d91('0x39')]=_[_0x5d91('0x32')](_0x503c1f['model'],_0x503c1f[_0x5d91('0x30')]);_0x41fe58[_0x5d91('0x33')]=_[_0x5d91('0x32')](_0x503c1f[_0x5d91('0x2f')],qs[_0x5d91('0x34')](_0x2dae2e[_0x5d91('0x30')][_0x5d91('0x34')]));_0x41fe58['attributes']=_0x41fe58['attributes']['length']?_0x41fe58[_0x5d91('0x33')]:_0x503c1f[_0x5d91('0x2f')];_0x41fe58['order']=qs[_0x5d91('0x37')](_0x2dae2e[_0x5d91('0x30')][_0x5d91('0x37')]);_0x41fe58['where']=qs[_0x5d91('0x39')](_[_0x5d91('0x3a')](_0x2dae2e['query'],_0x503c1f['filters']));if(_0x2dae2e['query'][_0x5d91('0x3c')]){_0x41fe58[_0x5d91('0x38')]=_['merge'](_0x41fe58[_0x5d91('0x38')],{'$or':_[_0x5d91('0x29')](_0x41fe58[_0x5d91('0x33')],function(_0x32c6e0){var _0x54f14b={};_0x54f14b[_0x32c6e0]={'$like':'%'+_0x2dae2e[_0x5d91('0x30')][_0x5d91('0x3c')]+'%'};return _0x54f14b;})});}_0x41fe58=_[_0x5d91('0x3b')]({},_0x41fe58,_0x2dae2e[_0x5d91('0x3d')]);return _0x2c218b[_0x5d91('0x4c')](_0x41fe58);}})[_0x5d91('0x24')](function(_0x5945ec){if(_0x5945ec){_0x554f29=_0x5945ec[_0x5d91('0x4d')];if(!_0x2dae2e['query']['hasOwnProperty']('nolimit')){_0x41fe58[_0x5d91('0x1f')]=qs[_0x5d91('0x1f')](_0x2dae2e[_0x5d91('0x30')][_0x5d91('0x1f')]);_0x41fe58[_0x5d91('0x1e')]=qs[_0x5d91('0x1e')](_0x2dae2e[_0x5d91('0x30')][_0x5d91('0x1e')]);}return _0x2c218b[_0x5d91('0x4c')](_0x41fe58);}})[_0x5d91('0x24')](function(_0x29ec18){if(_0x29ec18){return _0x29ec18?{'count':_0x554f29,'rows':_0x29ec18}:null;}})['then'](respondWithResult(_0x5021dc,null))[_0x5d91('0x42')](handleError(_0x5021dc,null));};exports['addActions']=function(_0x13f5be,_0x55447b,_0x563342){return db[_0x5d91('0x4e')][_0x5d91('0x45')]({'where':{'id':_0x13f5be[_0x5d91('0x44')]['id']}})[_0x5d91('0x24')](handleEntityNotFound(_0x55447b,null))[_0x5d91('0x24')](function(_0x5d5054){if(_0x5d5054){return _0x5d5054[_0x5d91('0x4f')](_0x13f5be[_0x5d91('0x47')][_0x5d91('0x4a')],_[_0x5d91('0x4b')](_0x13f5be[_0x5d91('0x47')],[_0x5d91('0x4a'),'id'])||{});}})[_0x5d91('0x24')](respondWithResult(_0x55447b,null))[_0x5d91('0x42')](handleError(_0x55447b,null));};exports['getActions']=function(_0x253200,_0x32c996,_0x5e1192){var _0x32eb6d={};var _0x294ce5={};var _0x294ddc;var _0x78384a;return db['Automation'][_0x5d91('0x50')]({'where':{'id':_0x253200[_0x5d91('0x44')]['id']}})[_0x5d91('0x24')](handleEntityNotFound(_0x32c996,null))['then'](function(_0x422a0a){if(_0x422a0a){_0x294ddc=_0x422a0a;_0x294ce5[_0x5d91('0x2f')]=_[_0x5d91('0x31')](db[_0x5d91('0x4e')][_0x5d91('0x2b')]);_0x294ce5[_0x5d91('0x30')]=_['keys'](_0x253200[_0x5d91('0x30')]);_0x294ce5[_0x5d91('0x39')]=_[_0x5d91('0x32')](_0x294ce5[_0x5d91('0x2f')],_0x294ce5[_0x5d91('0x30')]);_0x32eb6d[_0x5d91('0x33')]=_[_0x5d91('0x32')](_0x294ce5[_0x5d91('0x2f')],qs['fields'](_0x253200[_0x5d91('0x30')]['fields']));_0x32eb6d[_0x5d91('0x33')]=_0x32eb6d['attributes'][_0x5d91('0x4d')]?_0x32eb6d[_0x5d91('0x33')]:_0x294ce5['model'];_0x32eb6d[_0x5d91('0x51')]=qs[_0x5d91('0x37')](_0x253200[_0x5d91('0x30')][_0x5d91('0x37')]);_0x32eb6d[_0x5d91('0x38')]=qs[_0x5d91('0x39')](_['pick'](_0x253200['query'],_0x294ce5[_0x5d91('0x39')]));if(_0x253200['query']['filter']){_0x32eb6d[_0x5d91('0x38')]=_['merge'](_0x32eb6d['where'],{'$or':_[_0x5d91('0x29')](_0x32eb6d[_0x5d91('0x33')],function(_0x2f2b24){var _0x406d7e={};_0x406d7e[_0x2f2b24]={'$like':'%'+_0x253200['query'][_0x5d91('0x3c')]+'%'};return _0x406d7e;})});}_0x32eb6d=_[_0x5d91('0x3b')]({},_0x32eb6d,_0x253200[_0x5d91('0x3d')]);return _0x294ddc['getActions'](_0x32eb6d);}})[_0x5d91('0x24')](function(_0x539478){if(_0x539478){_0x78384a=_0x539478[_0x5d91('0x4d')];if(!_0x253200['query'][_0x5d91('0x35')](_0x5d91('0x36'))){_0x32eb6d['limit']=qs[_0x5d91('0x1f')](_0x253200[_0x5d91('0x30')]['limit']);_0x32eb6d['offset']=qs[_0x5d91('0x1e')](_0x253200[_0x5d91('0x30')]['offset']);}return _0x294ddc[_0x5d91('0x52')](_0x32eb6d);}})[_0x5d91('0x24')](function(_0x10147f){if(_0x10147f){return _0x10147f?{'count':_0x78384a,'rows':_0x10147f}:null;}})[_0x5d91('0x24')](respondWithResult(_0x32c996,null))['catch'](handleError(_0x32c996,null));};
\ No newline at end of file
+var _0x740b=['status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','then','destroy','name','send','index','map','Automation','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','length','catch','create','body','addConditions','Condition','find','ids','omit','findOne','order','getConditions','nolimit','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x99f14d,_0x1ccfe9){var _0x254c9e=function(_0x57afbd){while(--_0x57afbd){_0x99f14d['push'](_0x99f14d['shift']());}};_0x254c9e(++_0x1ccfe9);}(_0x740b,0x197));var _0xb740=function(_0x21a848,_0x5ce41a){_0x21a848=_0x21a848-0x0;var _0x5aaf99=_0x740b[_0x21a848];return _0x5aaf99;};'use strict';var emlformat=require(_0xb740('0x0'));var rimraf=require(_0xb740('0x1'));var zipdir=require(_0xb740('0x2'));var jsonpatch=require(_0xb740('0x3'));var rp=require(_0xb740('0x4'));var moment=require('moment');var BPromise=require(_0xb740('0x5'));var Mustache=require(_0xb740('0x6'));var util=require('util');var path=require(_0xb740('0x7'));var sox=require(_0xb740('0x8'));var csv=require(_0xb740('0x9'));var ejs=require(_0xb740('0xa'));var fs=require('fs');var fs_extra=require(_0xb740('0xb'));var _=require(_0xb740('0xc'));var squel=require(_0xb740('0xd'));var crypto=require(_0xb740('0xe'));var jsforce=require(_0xb740('0xf'));var deskjs=require(_0xb740('0x10'));var toCsv=require(_0xb740('0x9'));var querystring=require('querystring');var Papa=require(_0xb740('0x11'));var Redis=require('ioredis');var authService=require(_0xb740('0x12'));var qs=require(_0xb740('0x13'));var as=require(_0xb740('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb740('0x15'))(_0xb740('0x16'));var utils=require(_0xb740('0x17'));var config=require(_0xb740('0x18'));var licenseUtil=require(_0xb740('0x19'));var db=require(_0xb740('0x1a'))['db'];function respondWithStatusCode(_0x340c93,_0x3e7acc){_0x3e7acc=_0x3e7acc||0xcc;return function(_0x49c24d){if(_0x49c24d){return _0x340c93[_0xb740('0x1b')](_0x3e7acc);}return _0x340c93[_0xb740('0x1c')](_0x3e7acc)[_0xb740('0x1d')]();};}function respondWithResult(_0x374ee2,_0xc80d40){_0xc80d40=_0xc80d40||0xc8;return function(_0x1be96e){if(_0x1be96e){return _0x374ee2[_0xb740('0x1c')](_0xc80d40)['json'](_0x1be96e);}};}function respondWithFilteredResult(_0x310b3d,_0x421317){return function(_0x49964){if(_0x49964){var _0x186b52=typeof _0x421317['offset']===_0xb740('0x1e')&&typeof _0x421317[_0xb740('0x1f')]===_0xb740('0x1e');var _0x382ba9=_0x49964[_0xb740('0x20')];var _0x3e2424=_0x186b52?0x0:_0x421317[_0xb740('0x21')];var _0x1da382=_0x186b52?_0x49964[_0xb740('0x20')]:_0x421317[_0xb740('0x21')]+_0x421317[_0xb740('0x1f')];var _0xb726e9;if(_0x1da382>=_0x382ba9){_0x1da382=_0x382ba9;_0xb726e9=0xc8;}else{_0xb726e9=0xce;}_0x310b3d[_0xb740('0x1c')](_0xb726e9);return _0x310b3d[_0xb740('0x22')](_0xb740('0x23'),_0x3e2424+'-'+_0x1da382+'/'+_0x382ba9)[_0xb740('0x24')](_0x49964);}return null;};}function patchUpdates(_0x96f142){return function(_0x5dd890){try{jsonpatch[_0xb740('0x25')](_0x5dd890,_0x96f142,!![]);}catch(_0x31fac8){return BPromise[_0xb740('0x26')](_0x31fac8);}return _0x5dd890['save']();};}function saveUpdates(_0x16d753,_0x9b6fe2){return function(_0x747ba3){if(_0x747ba3){return _0x747ba3[_0xb740('0x27')](_0x16d753)[_0xb740('0x28')](function(_0x2bcb77){return _0x2bcb77;});}return null;};}function removeEntity(_0x2639e6,_0x22de63){return function(_0x10597a){if(_0x10597a){return _0x10597a[_0xb740('0x29')]()[_0xb740('0x28')](function(){_0x2639e6[_0xb740('0x1c')](0xcc)[_0xb740('0x1d')]();});}};}function handleEntityNotFound(_0x3cf94a,_0x444078){return function(_0x5c1b95){if(!_0x5c1b95){_0x3cf94a[_0xb740('0x1b')](0x194);}return _0x5c1b95;};}function handleError(_0xe70625,_0x207761){_0x207761=_0x207761||0x1f4;return function(_0x4d1260){logger['error'](_0x4d1260['stack']);if(_0x4d1260[_0xb740('0x2a')]){delete _0x4d1260[_0xb740('0x2a')];}_0xe70625[_0xb740('0x1c')](_0x207761)[_0xb740('0x2b')](_0x4d1260);};}exports[_0xb740('0x2c')]=function(_0x2b852b,_0x511310){var _0x4bc3d3={},_0x48c050={},_0x80389b={'count':0x0,'rows':[]};var _0x537d88=_[_0xb740('0x2d')](db[_0xb740('0x2e')]['rawAttributes'],function(_0x1e0384){return{'name':_0x1e0384[_0xb740('0x2f')],'type':_0x1e0384[_0xb740('0x30')][_0xb740('0x31')]};});_0x48c050[_0xb740('0x32')]=_[_0xb740('0x2d')](_0x537d88,_0xb740('0x2a'));_0x48c050['query']=_[_0xb740('0x33')](_0x2b852b[_0xb740('0x34')]);_0x48c050[_0xb740('0x35')]=_[_0xb740('0x36')](_0x48c050[_0xb740('0x32')],_0x48c050[_0xb740('0x34')]);_0x4bc3d3[_0xb740('0x37')]=_[_0xb740('0x36')](_0x48c050['model'],qs[_0xb740('0x38')](_0x2b852b['query'][_0xb740('0x38')]));_0x4bc3d3[_0xb740('0x37')]=_0x4bc3d3[_0xb740('0x37')]['length']?_0x4bc3d3[_0xb740('0x37')]:_0x48c050[_0xb740('0x32')];if(!_0x2b852b[_0xb740('0x34')][_0xb740('0x39')]('nolimit')){_0x4bc3d3['limit']=qs[_0xb740('0x1f')](_0x2b852b[_0xb740('0x34')][_0xb740('0x1f')]);_0x4bc3d3[_0xb740('0x21')]=qs[_0xb740('0x21')](_0x2b852b[_0xb740('0x34')][_0xb740('0x21')]);}_0x4bc3d3['order']=qs[_0xb740('0x3a')](_0x2b852b[_0xb740('0x34')][_0xb740('0x3a')]);_0x4bc3d3[_0xb740('0x3b')]=qs[_0xb740('0x35')](_[_0xb740('0x3c')](_0x2b852b[_0xb740('0x34')],_0x48c050[_0xb740('0x35')]),_0x537d88);if(_0x2b852b[_0xb740('0x34')][_0xb740('0x3d')]){_0x4bc3d3['where']=_['merge'](_0x4bc3d3[_0xb740('0x3b')],{'$or':_[_0xb740('0x2d')](_0x537d88,function(_0x50a75b){if(_0x50a75b[_0xb740('0x30')]!=='VIRTUAL'){var _0x2cadb4={};_0x2cadb4[_0x50a75b[_0xb740('0x2a')]]={'$like':'%'+_0x2b852b[_0xb740('0x34')][_0xb740('0x3d')]+'%'};return _0x2cadb4;}})});}_0x4bc3d3=_[_0xb740('0x3e')]({},_0x4bc3d3,_0x2b852b[_0xb740('0x3f')]);var _0x2f9b70={'where':_0x4bc3d3[_0xb740('0x3b')]};return db[_0xb740('0x2e')][_0xb740('0x20')](_0x2f9b70)[_0xb740('0x28')](function(_0x3cac42){_0x80389b[_0xb740('0x20')]=_0x3cac42;if(_0x2b852b[_0xb740('0x34')][_0xb740('0x40')]){_0x4bc3d3[_0xb740('0x41')]=[{'all':!![]}];}return db[_0xb740('0x2e')][_0xb740('0x42')](_0x4bc3d3);})[_0xb740('0x28')](function(_0x27bc61){_0x80389b[_0xb740('0x43')]=_0x27bc61;return _0x80389b;})[_0xb740('0x28')](respondWithFilteredResult(_0x511310,_0x4bc3d3))['catch'](handleError(_0x511310,null));};exports[_0xb740('0x44')]=function(_0x168e38,_0x31231a){var _0x2ae63d={'raw':![],'where':{'id':_0x168e38[_0xb740('0x45')]['id']}},_0x2eaf96={};_0x2eaf96[_0xb740('0x32')]=_[_0xb740('0x33')](db[_0xb740('0x2e')][_0xb740('0x46')]);_0x2eaf96[_0xb740('0x34')]=_[_0xb740('0x33')](_0x168e38[_0xb740('0x34')]);_0x2eaf96['filters']=_[_0xb740('0x36')](_0x2eaf96['model'],_0x2eaf96[_0xb740('0x34')]);_0x2ae63d[_0xb740('0x37')]=_[_0xb740('0x36')](_0x2eaf96[_0xb740('0x32')],qs[_0xb740('0x38')](_0x168e38[_0xb740('0x34')][_0xb740('0x38')]));_0x2ae63d[_0xb740('0x37')]=_0x2ae63d['attributes'][_0xb740('0x47')]?_0x2ae63d[_0xb740('0x37')]:_0x2eaf96[_0xb740('0x32')];if(_0x168e38[_0xb740('0x34')][_0xb740('0x40')]){_0x2ae63d[_0xb740('0x41')]=[{'all':!![]}];}_0x2ae63d=_[_0xb740('0x3e')]({},_0x2ae63d,_0x168e38[_0xb740('0x3f')]);return db['Automation']['find'](_0x2ae63d)[_0xb740('0x28')](handleEntityNotFound(_0x31231a,null))[_0xb740('0x28')](respondWithResult(_0x31231a,null))[_0xb740('0x48')](handleError(_0x31231a,null));};exports[_0xb740('0x49')]=function(_0x529e04,_0x13d7cf){return db[_0xb740('0x2e')][_0xb740('0x49')](_0x529e04['body'],{})[_0xb740('0x28')](respondWithResult(_0x13d7cf,0xc9))[_0xb740('0x48')](handleError(_0x13d7cf,null));};exports[_0xb740('0x27')]=function(_0x5dd762,_0x42ddd5){if(_0x5dd762[_0xb740('0x4a')]['id']){delete _0x5dd762[_0xb740('0x4a')]['id'];}return db['Automation']['find']({'where':{'id':_0x5dd762['params']['id']}})['then'](handleEntityNotFound(_0x42ddd5,null))[_0xb740('0x28')](saveUpdates(_0x5dd762[_0xb740('0x4a')],null))['then'](respondWithResult(_0x42ddd5,null))[_0xb740('0x48')](handleError(_0x42ddd5,null));};exports[_0xb740('0x29')]=function(_0x3b74a2,_0x38a82e){return db[_0xb740('0x2e')]['find']({'where':{'id':_0x3b74a2[_0xb740('0x45')]['id']}})['then'](handleEntityNotFound(_0x38a82e,null))[_0xb740('0x28')](removeEntity(_0x38a82e,null))[_0xb740('0x48')](handleError(_0x38a82e,null));};exports[_0xb740('0x4b')]=function(_0x1e587b,_0x477f5e,_0x2749a3){return db[_0xb740('0x4c')][_0xb740('0x4d')]({'where':{'id':_0x1e587b['params']['id']}})[_0xb740('0x28')](handleEntityNotFound(_0x477f5e,null))['then'](function(_0x57ce1f){if(_0x57ce1f){return _0x57ce1f[_0xb740('0x4b')](_0x1e587b[_0xb740('0x4a')][_0xb740('0x4e')],_[_0xb740('0x4f')](_0x1e587b[_0xb740('0x4a')],['ids','id'])||{});}})[_0xb740('0x28')](respondWithResult(_0x477f5e,null))[_0xb740('0x48')](handleError(_0x477f5e,null));};exports['getConditions']=function(_0x564376,_0x4c617e,_0x11e8bb){var _0x11ce88={};var _0x3f4c42={};var _0x173dc;var _0x1730a8;return db[_0xb740('0x2e')][_0xb740('0x50')]({'where':{'id':_0x564376[_0xb740('0x45')]['id']}})[_0xb740('0x28')](handleEntityNotFound(_0x4c617e,null))[_0xb740('0x28')](function(_0x36a920){if(_0x36a920){_0x173dc=_0x36a920;_0x3f4c42[_0xb740('0x32')]=_[_0xb740('0x33')](db[_0xb740('0x4c')]['rawAttributes']);_0x3f4c42[_0xb740('0x34')]=_[_0xb740('0x33')](_0x564376['query']);_0x3f4c42[_0xb740('0x35')]=_['intersection'](_0x3f4c42[_0xb740('0x32')],_0x3f4c42['query']);_0x11ce88[_0xb740('0x37')]=_['intersection'](_0x3f4c42[_0xb740('0x32')],qs[_0xb740('0x38')](_0x564376[_0xb740('0x34')][_0xb740('0x38')]));_0x11ce88[_0xb740('0x37')]=_0x11ce88[_0xb740('0x37')]['length']?_0x11ce88[_0xb740('0x37')]:_0x3f4c42[_0xb740('0x32')];_0x11ce88[_0xb740('0x51')]=qs[_0xb740('0x3a')](_0x564376[_0xb740('0x34')][_0xb740('0x3a')]);_0x11ce88[_0xb740('0x3b')]=qs[_0xb740('0x35')](_[_0xb740('0x3c')](_0x564376[_0xb740('0x34')],_0x3f4c42['filters']));if(_0x564376[_0xb740('0x34')][_0xb740('0x3d')]){_0x11ce88[_0xb740('0x3b')]=_['merge'](_0x11ce88[_0xb740('0x3b')],{'$or':_['map'](_0x11ce88['attributes'],function(_0x5012c0){var _0x25601f={};_0x25601f[_0x5012c0]={'$like':'%'+_0x564376[_0xb740('0x34')][_0xb740('0x3d')]+'%'};return _0x25601f;})});}_0x11ce88=_[_0xb740('0x3e')]({},_0x11ce88,_0x564376[_0xb740('0x3f')]);return _0x173dc[_0xb740('0x52')](_0x11ce88);}})[_0xb740('0x28')](function(_0x501891){if(_0x501891){_0x1730a8=_0x501891[_0xb740('0x47')];if(!_0x564376['query']['hasOwnProperty'](_0xb740('0x53'))){_0x11ce88[_0xb740('0x1f')]=qs[_0xb740('0x1f')](_0x564376[_0xb740('0x34')][_0xb740('0x1f')]);_0x11ce88['offset']=qs['offset'](_0x564376[_0xb740('0x34')]['offset']);}return _0x173dc[_0xb740('0x52')](_0x11ce88);}})['then'](function(_0x172b8a){if(_0x172b8a){return _0x172b8a?{'count':_0x1730a8,'rows':_0x172b8a}:null;}})[_0xb740('0x28')](respondWithResult(_0x4c617e,null))[_0xb740('0x48')](handleError(_0x4c617e,null));};exports[_0xb740('0x54')]=function(_0xee8fab,_0x154d24,_0x5207d2){return db[_0xb740('0x55')][_0xb740('0x4d')]({'where':{'id':_0xee8fab[_0xb740('0x45')]['id']}})[_0xb740('0x28')](handleEntityNotFound(_0x154d24,null))['then'](function(_0x3cdcac){if(_0x3cdcac){return _0x3cdcac['addActions'](_0xee8fab[_0xb740('0x4a')][_0xb740('0x4e')],_[_0xb740('0x4f')](_0xee8fab[_0xb740('0x4a')],[_0xb740('0x4e'),'id'])||{});}})[_0xb740('0x28')](respondWithResult(_0x154d24,null))[_0xb740('0x48')](handleError(_0x154d24,null));};exports[_0xb740('0x56')]=function(_0xdfea90,_0x19fe5f,_0x316b08){var _0x5f30da={};var _0x4fa827={};var _0x3dc727;var _0x85a922;return db[_0xb740('0x2e')][_0xb740('0x50')]({'where':{'id':_0xdfea90[_0xb740('0x45')]['id']}})[_0xb740('0x28')](handleEntityNotFound(_0x19fe5f,null))[_0xb740('0x28')](function(_0x4d985d){if(_0x4d985d){_0x3dc727=_0x4d985d;_0x4fa827[_0xb740('0x32')]=_['keys'](db[_0xb740('0x55')][_0xb740('0x46')]);_0x4fa827[_0xb740('0x34')]=_['keys'](_0xdfea90[_0xb740('0x34')]);_0x4fa827[_0xb740('0x35')]=_['intersection'](_0x4fa827['model'],_0x4fa827[_0xb740('0x34')]);_0x5f30da[_0xb740('0x37')]=_['intersection'](_0x4fa827[_0xb740('0x32')],qs[_0xb740('0x38')](_0xdfea90[_0xb740('0x34')][_0xb740('0x38')]));_0x5f30da['attributes']=_0x5f30da[_0xb740('0x37')][_0xb740('0x47')]?_0x5f30da[_0xb740('0x37')]:_0x4fa827['model'];_0x5f30da[_0xb740('0x51')]=qs[_0xb740('0x3a')](_0xdfea90[_0xb740('0x34')][_0xb740('0x3a')]);_0x5f30da[_0xb740('0x3b')]=qs[_0xb740('0x35')](_[_0xb740('0x3c')](_0xdfea90[_0xb740('0x34')],_0x4fa827[_0xb740('0x35')]));if(_0xdfea90[_0xb740('0x34')][_0xb740('0x3d')]){_0x5f30da[_0xb740('0x3b')]=_[_0xb740('0x3e')](_0x5f30da[_0xb740('0x3b')],{'$or':_[_0xb740('0x2d')](_0x5f30da[_0xb740('0x37')],function(_0x188fe3){var _0x4813e6={};_0x4813e6[_0x188fe3]={'$like':'%'+_0xdfea90[_0xb740('0x34')]['filter']+'%'};return _0x4813e6;})});}_0x5f30da=_[_0xb740('0x3e')]({},_0x5f30da,_0xdfea90['options']);return _0x3dc727['getActions'](_0x5f30da);}})[_0xb740('0x28')](function(_0x439354){if(_0x439354){_0x85a922=_0x439354[_0xb740('0x47')];if(!_0xdfea90[_0xb740('0x34')][_0xb740('0x39')](_0xb740('0x53'))){_0x5f30da[_0xb740('0x1f')]=qs['limit'](_0xdfea90[_0xb740('0x34')][_0xb740('0x1f')]);_0x5f30da['offset']=qs[_0xb740('0x21')](_0xdfea90['query']['offset']);}return _0x3dc727['getActions'](_0x5f30da);}})[_0xb740('0x28')](function(_0x10a7c4){if(_0x10a7c4){return _0x10a7c4?{'count':_0x85a922,'rows':_0x10a7c4}:null;}})['then'](respondWithResult(_0x19fe5f,null))[_0xb740('0x48')](handleError(_0x19fe5f,null));};
\ No newline at end of file
index eb1cb19..8a181b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8afd=['../../config/logger','api','moment','bluebird','path','../../config/environment','./automation.attributes','exports','Automation','tools_automations','lodash'];(function(_0x341422,_0x34e3a3){var _0x237b92=function(_0x20cba3){while(--_0x20cba3){_0x341422['push'](_0x341422['shift']());}};_0x237b92(++_0x34e3a3);}(_0x8afd,0x154));var _0xd8af=function(_0x3907d7,_0xdbc834){_0x3907d7=_0x3907d7-0x0;var _0x5b9610=_0x8afd[_0x3907d7];return _0x5b9610;};'use strict';var _=require(_0xd8af('0x0'));var util=require('util');var logger=require(_0xd8af('0x1'))(_0xd8af('0x2'));var moment=require(_0xd8af('0x3'));var BPromise=require(_0xd8af('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd8af('0x5'));var rimraf=require('rimraf');var config=require(_0xd8af('0x6'));var attributes=require(_0xd8af('0x7'));module[_0xd8af('0x8')]=function(_0x1ccc17,_0x37faf0){return _0x1ccc17['define'](_0xd8af('0x9'),attributes,{'tableName':_0xd8af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x677a=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Automation','tools_automations'];(function(_0x3a04a5,_0x3fb3c8){var _0x1b6f37=function(_0xceb45a){while(--_0xceb45a){_0x3a04a5['push'](_0x3a04a5['shift']());}};_0x1b6f37(++_0x3fb3c8);}(_0x677a,0xa9));var _0xa677=function(_0x147483,_0x15d210){_0x147483=_0x147483-0x0;var _0x37b381=_0x677a[_0x147483];return _0x37b381;};'use strict';var _=require('lodash');var util=require(_0xa677('0x0'));var logger=require(_0xa677('0x1'))(_0xa677('0x2'));var moment=require(_0xa677('0x3'));var BPromise=require(_0xa677('0x4'));var rp=require(_0xa677('0x5'));var fs=require('fs');var path=require(_0xa677('0x6'));var rimraf=require(_0xa677('0x7'));var config=require(_0xa677('0x8'));var attributes=require('./automation.attributes');module[_0xa677('0x9')]=function(_0x2fa9d9,_0x4ebce5){return _0x2fa9d9[_0xa677('0xa')](_0xa677('0xb'),attributes,{'tableName':_0xa677('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 19bcc13..b711ec1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4849=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0x1a39cc,_0x356cac){var _0x1ccebb=function(_0x207168){while(--_0x207168){_0x1a39cc['push'](_0x1a39cc['shift']());}};_0x1ccebb(++_0x356cac);}(_0x4849,0xf8));var _0x9484=function(_0x248a91,_0x173716){_0x248a91=_0x248a91-0x0;var _0x46cd36=_0x4849[_0x248a91];return _0x46cd36;};'use strict';var _=require(_0x9484('0x0'));var util=require(_0x9484('0x1'));var moment=require(_0x9484('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9484('0x3'));var db=require(_0x9484('0x4'))['db'];var utils=require(_0x9484('0x5'));var logger=require(_0x9484('0x6'))(_0x9484('0x7'));var config=require(_0x9484('0x8'));var jayson=require(_0x9484('0x9'));var client=jayson[_0x9484('0xa')][_0x9484('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x536b43,_0x4a8a70,_0x11f2a1){return new BPromise(function(_0x583079,_0x3929b9){return client[_0x9484('0xc')](_0x536b43,_0x11f2a1)[_0x9484('0xd')](function(_0xe8b216){logger[_0x9484('0xe')](_0x9484('0xf'),_0x4a8a70,_0x9484('0x10'));logger[_0x9484('0x11')](_0x9484('0x12'),_0x4a8a70,_0x9484('0x10'),JSON[_0x9484('0x13')](_0xe8b216));if(_0xe8b216[_0x9484('0x14')]){if(_0xe8b216[_0x9484('0x14')][_0x9484('0x15')]===0x1f4){logger[_0x9484('0x14')]('Automation,\x20%s,\x20%s',_0x4a8a70,_0xe8b216[_0x9484('0x14')]['message']);return _0x3929b9(_0xe8b216[_0x9484('0x14')][_0x9484('0x16')]);}logger[_0x9484('0x14')](_0x9484('0xf'),_0x4a8a70,_0xe8b216[_0x9484('0x14')][_0x9484('0x16')]);return _0x583079(_0xe8b216['error'][_0x9484('0x16')]);}else{logger[_0x9484('0xe')]('Automation,\x20%s,\x20%s',_0x4a8a70,'request\x20sent');_0x583079(_0xe8b216[_0x9484('0x17')]['message']);}})[_0x9484('0x18')](function(_0x4e974f){logger[_0x9484('0x14')](_0x9484('0xf'),_0x4a8a70,_0x4e974f);_0x3929b9(_0x4e974f);});});}
\ No newline at end of file
+var _0xccde=['stringify','error','code','Automation,\x20%s,\x20%s','message','result','lodash','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent'];(function(_0x57d100,_0x3559c7){var _0x170781=function(_0x33d115){while(--_0x33d115){_0x57d100['push'](_0x57d100['shift']());}};_0x170781(++_0x3559c7);}(_0xccde,0x1e1));var _0xeccd=function(_0x43dc7e,_0x49a390){_0x43dc7e=_0x43dc7e-0x0;var _0x21e12d=_0xccde[_0x43dc7e];return _0x21e12d;};'use strict';var _=require(_0xeccd('0x0'));var util=require('util');var moment=require(_0xeccd('0x1'));var BPromise=require('bluebird');var rs=require(_0xeccd('0x2'));var fs=require('fs');var Redis=require(_0xeccd('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xeccd('0x4'))(_0xeccd('0x5'));var config=require(_0xeccd('0x6'));var jayson=require(_0xeccd('0x7'));var client=jayson[_0xeccd('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x338742,_0x130f1c,_0x1b622f){return new BPromise(function(_0x1eebfb,_0x4b068e){return client[_0xeccd('0x9')](_0x338742,_0x1b622f)[_0xeccd('0xa')](function(_0x9dccd){logger[_0xeccd('0xb')]('Automation,\x20%s,\x20%s',_0x130f1c,'request\x20sent');logger['debug']('Automation,\x20%s,\x20%s,\x20%s',_0x130f1c,_0xeccd('0xc'),JSON[_0xeccd('0xd')](_0x9dccd));if(_0x9dccd[_0xeccd('0xe')]){if(_0x9dccd[_0xeccd('0xe')][_0xeccd('0xf')]===0x1f4){logger['error'](_0xeccd('0x10'),_0x130f1c,_0x9dccd[_0xeccd('0xe')][_0xeccd('0x11')]);return _0x4b068e(_0x9dccd[_0xeccd('0xe')][_0xeccd('0x11')]);}logger[_0xeccd('0xe')]('Automation,\x20%s,\x20%s',_0x130f1c,_0x9dccd['error'][_0xeccd('0x11')]);return _0x1eebfb(_0x9dccd[_0xeccd('0xe')][_0xeccd('0x11')]);}else{logger[_0xeccd('0xb')]('Automation,\x20%s,\x20%s',_0x130f1c,_0xeccd('0xc'));_0x1eebfb(_0x9dccd[_0xeccd('0x12')]['message']);}})['catch'](function(_0x42e47e){logger[_0xeccd('0xe')](_0xeccd('0x10'),_0x130f1c,_0x42e47e);_0x4b068e(_0x42e47e);});});}
\ No newline at end of file
index a4671cc..e87ce50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6611=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','/:id','/:id/conditions','getConditions','/:id/actions','getActions','post','create','addActions','put','update','delete','destroy','exports','util','path','connect-timeout','express'];(function(_0x22b8a3,_0x2a79a7){var _0x199a0c=function(_0x544c66){while(--_0x544c66){_0x22b8a3['push'](_0x22b8a3['shift']());}};_0x199a0c(++_0x2a79a7);}(_0x6611,0xdd));var _0x1661=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6611[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0x1661('0x0'));var path=require(_0x1661('0x1'));var timeout=require(_0x1661('0x2'));var express=require(_0x1661('0x3'));var router=express[_0x1661('0x4')]();var fs_extra=require(_0x1661('0x5'));var auth=require(_0x1661('0x6'));var interaction=require(_0x1661('0x7'));var config=require(_0x1661('0x8'));var controller=require(_0x1661('0x9'));router[_0x1661('0xa')]('/',auth[_0x1661('0xb')](),controller['index']);router['get'](_0x1661('0xc'),auth[_0x1661('0xb')](),controller['show']);router['get'](_0x1661('0xd'),auth[_0x1661('0xb')](),controller[_0x1661('0xe')]);router[_0x1661('0xa')](_0x1661('0xf'),auth[_0x1661('0xb')](),controller[_0x1661('0x10')]);router[_0x1661('0x11')]('/',auth['isAuthenticated'](),controller[_0x1661('0x12')]);router[_0x1661('0x11')]('/:id/conditions',auth[_0x1661('0xb')](),controller['addConditions']);router[_0x1661('0x11')](_0x1661('0xf'),auth[_0x1661('0xb')](),controller[_0x1661('0x13')]);router[_0x1661('0x14')](_0x1661('0xc'),auth[_0x1661('0xb')](),controller[_0x1661('0x15')]);router[_0x1661('0x16')](_0x1661('0xc'),auth[_0x1661('0xb')](),controller[_0x1661('0x17')]);module[_0x1661('0x18')]=router;
\ No newline at end of file
+var _0xb613=['/:id','show','/:id/conditions','getConditions','/:id/actions','getActions','post','create','addConditions','addActions','put','update','destroy','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index'];(function(_0x3cd9ca,_0x37f8b8){var _0x19b9c6=function(_0x494399){while(--_0x494399){_0x3cd9ca['push'](_0x3cd9ca['shift']());}};_0x19b9c6(++_0x37f8b8);}(_0xb613,0x9d));var _0x3b61=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0xb613[_0x53cf8e];return _0x459197;};'use strict';var multer=require(_0x3b61('0x0'));var util=require(_0x3b61('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3b61('0x2'));var router=express[_0x3b61('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3b61('0x4'));var interaction=require(_0x3b61('0x5'));var config=require(_0x3b61('0x6'));var controller=require(_0x3b61('0x7'));router[_0x3b61('0x8')]('/',auth[_0x3b61('0x9')](),controller[_0x3b61('0xa')]);router['get'](_0x3b61('0xb'),auth[_0x3b61('0x9')](),controller[_0x3b61('0xc')]);router[_0x3b61('0x8')](_0x3b61('0xd'),auth[_0x3b61('0x9')](),controller[_0x3b61('0xe')]);router[_0x3b61('0x8')](_0x3b61('0xf'),auth[_0x3b61('0x9')](),controller[_0x3b61('0x10')]);router[_0x3b61('0x11')]('/',auth[_0x3b61('0x9')](),controller[_0x3b61('0x12')]);router[_0x3b61('0x11')]('/:id/conditions',auth[_0x3b61('0x9')](),controller[_0x3b61('0x13')]);router[_0x3b61('0x11')](_0x3b61('0xf'),auth['isAuthenticated'](),controller[_0x3b61('0x14')]);router[_0x3b61('0x15')](_0x3b61('0xb'),auth[_0x3b61('0x9')](),controller[_0x3b61('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x3b61('0x17')]);module['exports']=router;
\ No newline at end of file
index 34067a4..20e6f2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6df=['Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','sequelize','exports','name','ivr','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','Max\x20200\x20calls.','STRING','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','INTEGER','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','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)','ENUM','always','never','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)'];(function(_0x4e1d69,_0x543378){var _0x719b41=function(_0x3db182){while(--_0x3db182){_0x4e1d69['push'](_0x4e1d69['shift']());}};_0x719b41(++_0x543378);}(_0xc6df,0x16a));var _0xfc6d=function(_0x31eaf4,_0x3b2380){_0x31eaf4=_0x31eaf4-0x0;var _0x4df397=_0xc6df[_0x31eaf4];return _0x4df397;};'use strict';var Sequelize=require(_0xfc6d('0x0'));module[_0xfc6d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xfc6d('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('ivr'),'allowNull':![],'defaultValue':_0xfc6d('0x3')},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xfc6d('0x4')],'defaultValue':0x0,'comment':_0xfc6d('0x5')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0xfc6d('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xfc6d('0x7')},'dialOriginateCallerIdName':{'type':Sequelize[_0xfc6d('0x8')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xfc6d('0x8')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfc6d('0x9')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xfc6d('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfc6d('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xfc6d('0xb')](0x5)[_0xfc6d('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfc6d('0xc')},'dialBusyMaxRetry':{'type':Sequelize[_0xfc6d('0xb')](0x3)[_0xfc6d('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfc6d('0xd')},'dialBusyRetryFrequency':{'type':Sequelize[_0xfc6d('0xb')](0x5)[_0xfc6d('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfc6d('0xe')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xfc6d('0xb')](0x3)[_0xfc6d('0x6')],'defaultValue':0x3,'comment':_0xfc6d('0xf')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfc6d('0x10')},'dialGlobalMaxRetry':{'type':Sequelize[_0xfc6d('0xb')](0x3)[_0xfc6d('0x6')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xfc6d('0x11')},'dialTimezone':{'type':Sequelize[_0xfc6d('0x8')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xfc6d('0x8')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0xfc6d('0x12')](_0xfc6d('0x13'),_0xfc6d('0x14'),_0xfc6d('0x15')),'defaultValue':_0xfc6d('0x13')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xfc6d('0xb')](0x9)[_0xfc6d('0x6')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xfc6d('0x16')},'dialAMDGreeting':{'type':Sequelize[_0xfc6d('0xb')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xfc6d('0x17')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xfc6d('0xb')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xfc6d('0x18')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xfc6d('0xb')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xfc6d('0xb')](0x9)[_0xfc6d('0x6')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xfc6d('0x19')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xfc6d('0xb')](0x9)[_0xfc6d('0x6')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xfc6d('0x1a')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xfc6d('0xb')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xfc6d('0x1b')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xfc6d('0x6')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xfc6d('0x1c')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xfc6d('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xfc6d('0x1d')},'dialOrderByScheduledAt':{'type':Sequelize[_0xfc6d('0x12')](_0xfc6d('0x1e'),_0xfc6d('0x1f')),'defaultValue':_0xfc6d('0x1e')},'dialPrefix':{'type':Sequelize[_0xfc6d('0x8')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xfc6d('0xb')](0x3)[_0xfc6d('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xfc6d('0xb')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xfc6d('0x20')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xfc6d('0xb')](0x3)[_0xfc6d('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xfc6d('0xb')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfc6d('0x21')},'dialDropMaxRetry':{'type':Sequelize[_0xfc6d('0xb')](0x3)[_0xfc6d('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfc6d('0x22')},'dialDropRetryFrequency':{'type':Sequelize[_0xfc6d('0xb')](0x5)[_0xfc6d('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfc6d('0x23')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xfc6d('0xb')](0x3)[_0xfc6d('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xfc6d('0xb')](0x5)[_0xfc6d('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfc6d('0x24')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xfc6d('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfc6d('0x25')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xfc6d('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfc6d('0x26')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xfc6d('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfc6d('0x27')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xfc6d('0xb')](0x5)[_0xfc6d('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
+var _0x0f3f=['AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','name','ENUM','ivr','STRING','BOOLEAN','UNSIGNED','Max\x20200\x20calls.','INTEGER','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)'];(function(_0x32db1a,_0x3fbb65){var _0x4afee5=function(_0x25bbb3){while(--_0x25bbb3){_0x32db1a['push'](_0x32db1a['shift']());}};_0x4afee5(++_0x3fbb65);}(_0x0f3f,0x198));var _0xf0f3=function(_0x2f8c05,_0x551e3d){_0x2f8c05=_0x2f8c05-0x0;var _0x14cfde=_0x0f3f[_0x2f8c05];return _0x14cfde;};'use strict';var Sequelize=require(_0xf0f3('0x0'));module[_0xf0f3('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xf0f3('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xf0f3('0x3')](_0xf0f3('0x4')),'allowNull':![],'defaultValue':_0xf0f3('0x4')},'description':{'type':Sequelize[_0xf0f3('0x5')]},'active':{'type':Sequelize[_0xf0f3('0x6')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0xf0f3('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xf0f3('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0xf0f3('0x5')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xf0f3('0x5')]},'dialOriginateTimeout':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0xa')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf0f3('0xc')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0xd')},'dialBusyRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf0f3('0xe')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'comment':_0xf0f3('0xf')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0xf0f3('0x5')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xf0f3('0x5')],'defaultValue':_0xf0f3('0x10')},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always','never',_0xf0f3('0x11')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xf0f3('0x6')],'defaultValue':0x0,'comment':_0xf0f3('0x12')},'dialAMDInitialSilence':{'type':Sequelize[_0xf0f3('0x9')](0x9)[_0xf0f3('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0xf0f3('0x9')](0x9)[_0xf0f3('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xf0f3('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xf0f3('0x9')](0x9)[_0xf0f3('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xf0f3('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xf0f3('0x9')](0x9)[_0xf0f3('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xf0f3('0x15')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf0f3('0x9')](0x9)[_0xf0f3('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xf0f3('0x16')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xf0f3('0x9')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xf0f3('0x17')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xf0f3('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xf0f3('0x18')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xf0f3('0x9')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf0f3('0x19')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xf0f3('0x1a'),_0xf0f3('0x1b')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0xf0f3('0x5')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf0f3('0x1c')},'dialCutDigit':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf0f3('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf0f3('0x1f')},'dialDropMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf0f3('0x20')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0x21')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0x22')},'dialMachineRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf0f3('0x24')}};
\ No newline at end of file
index f0da8af..f826c0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8322=['map','Campaign','rawAttributes','fieldName','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','includeAll','include','findAll','rows','catch','params','create','body','user','IvrCampaigns','UserProfileSection','find','userProfileId','autoAssociation','clone','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','findOne','CmHopper','options','count','getHopperHistories','CampaignId','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','format','addLists','ids','spread','dialCheckDuplicateType','always','into','cm_hopper','phone','scheduledAt','ListId','select','field','NOW()','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','from','onlyIfOpen','phone\x20IS\x20NOT\x20NULL','insert','ContactId','cm_hopper_additional_phones','fromQuery','cmHopperId','OrderBy','ci.item','ci.OrderBY','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','getBlackLists','addBlackLists','YYYY-MM-DD\x20HH:mm:ss','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','error','name','send','index'];(function(_0x6b475b,_0x3b9f10){var _0x472550=function(_0x3af4f2){while(--_0x3af4f2){_0x6b475b['push'](_0x6b475b['shift']());}};_0x472550(++_0x3b9f10);}(_0x8322,0x186));var _0x2832=function(_0x3818c0,_0x542521){_0x3818c0=_0x3818c0-0x0;var _0x55ec33=_0x8322[_0x3818c0];return _0x55ec33;};'use strict';var emlformat=require(_0x2832('0x0'));var rimraf=require(_0x2832('0x1'));var zipdir=require(_0x2832('0x2'));var jsonpatch=require(_0x2832('0x3'));var rp=require(_0x2832('0x4'));var moment=require(_0x2832('0x5'));var BPromise=require(_0x2832('0x6'));var Mustache=require(_0x2832('0x7'));var util=require(_0x2832('0x8'));var path=require(_0x2832('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2832('0xa'));var fs=require('fs');var fs_extra=require(_0x2832('0xb'));var _=require(_0x2832('0xc'));var squel=require(_0x2832('0xd'));var crypto=require(_0x2832('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x2832('0xf'));var toCsv=require(_0x2832('0x10'));var querystring=require(_0x2832('0x11'));var Papa=require(_0x2832('0x12'));var Redis=require('ioredis');var authService=require(_0x2832('0x13'));var qs=require(_0x2832('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2832('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x2832('0x16'));var licenseUtil=require(_0x2832('0x17'));var db=require(_0x2832('0x18'))['db'];function respondWithStatusCode(_0x362f97,_0x53f53c){_0x53f53c=_0x53f53c||0xcc;return function(_0x2fc06a){if(_0x2fc06a){return _0x362f97[_0x2832('0x19')](_0x53f53c);}return _0x362f97['status'](_0x53f53c)[_0x2832('0x1a')]();};}function respondWithResult(_0x4629fd,_0x285038){_0x285038=_0x285038||0xc8;return function(_0x324a19){if(_0x324a19){return _0x4629fd[_0x2832('0x1b')](_0x285038)[_0x2832('0x1c')](_0x324a19);}};}function respondWithFilteredResult(_0x12dc34,_0x5aa322){return function(_0x1805db){if(_0x1805db){var _0x38f293=typeof _0x5aa322['offset']===_0x2832('0x1d')&&typeof _0x5aa322['limit']===_0x2832('0x1d');var _0x4d11a4=_0x1805db['count'];var _0x1bb3f0=_0x38f293?0x0:_0x5aa322[_0x2832('0x1e')];var _0x2c0355=_0x38f293?_0x1805db['count']:_0x5aa322[_0x2832('0x1e')]+_0x5aa322[_0x2832('0x1f')];var _0x52f067;if(_0x2c0355>=_0x4d11a4){_0x2c0355=_0x4d11a4;_0x52f067=0xc8;}else{_0x52f067=0xce;}_0x12dc34[_0x2832('0x1b')](_0x52f067);return _0x12dc34[_0x2832('0x20')](_0x2832('0x21'),_0x1bb3f0+'-'+_0x2c0355+'/'+_0x4d11a4)[_0x2832('0x1c')](_0x1805db);}return null;};}function patchUpdates(_0x561169){return function(_0x265a6c){try{jsonpatch[_0x2832('0x22')](_0x265a6c,_0x561169,!![]);}catch(_0x3d57f9){return BPromise[_0x2832('0x23')](_0x3d57f9);}return _0x265a6c[_0x2832('0x24')]();};}function saveUpdates(_0x2df647,_0x3f8f4a){return function(_0x22fab6){if(_0x22fab6){return _0x22fab6[_0x2832('0x25')](_0x2df647)[_0x2832('0x26')](function(_0x1ccbd8){return _0x1ccbd8;});}return null;};}function removeEntity(_0x56bb6e,_0x2ac1a7){return function(_0x216357){if(_0x216357){return _0x216357[_0x2832('0x27')]()[_0x2832('0x26')](function(){var _0x24621a=_0x216357[_0x2832('0x28')]({'plain':!![]});var _0x203cd0='IvrCampaigns';return db['UserProfileResource']['destroy']({'where':{'type':_0x203cd0,'resourceId':_0x24621a['id']}})[_0x2832('0x26')](function(){return _0x216357;});})[_0x2832('0x26')](function(){_0x56bb6e['status'](0xcc)[_0x2832('0x1a')]();});}};}function handleEntityNotFound(_0x6c1907,_0x4694ac){return function(_0x3703b1){if(!_0x3703b1){_0x6c1907[_0x2832('0x19')](0x194);}return _0x3703b1;};}function handleError(_0x42b595,_0x2469ab){_0x2469ab=_0x2469ab||0x1f4;return function(_0x117b4c){logger[_0x2832('0x29')](_0x117b4c['stack']);if(_0x117b4c[_0x2832('0x2a')]){delete _0x117b4c['name'];}_0x42b595[_0x2832('0x1b')](_0x2469ab)[_0x2832('0x2b')](_0x117b4c);};}exports[_0x2832('0x2c')]=function(_0x2cbd15,_0x23c709){var _0xc472a4={},_0x2e1f81={},_0x57aafa={'count':0x0,'rows':[]};var _0x438735=_[_0x2832('0x2d')](db[_0x2832('0x2e')][_0x2832('0x2f')],function(_0x4db237){return{'name':_0x4db237[_0x2832('0x30')],'type':_0x4db237['type'][_0x2832('0x31')]};});_0x2e1f81['model']=_['map'](_0x438735,_0x2832('0x2a'));_0x2e1f81[_0x2832('0x32')]=_[_0x2832('0x33')](_0x2cbd15[_0x2832('0x32')]);_0x2e1f81[_0x2832('0x34')]=_[_0x2832('0x35')](_0x2e1f81[_0x2832('0x36')],_0x2e1f81[_0x2832('0x32')]);_0xc472a4['attributes']=_[_0x2832('0x35')](_0x2e1f81[_0x2832('0x36')],qs[_0x2832('0x37')](_0x2cbd15['query'][_0x2832('0x37')]));_0xc472a4[_0x2832('0x38')]=_0xc472a4[_0x2832('0x38')][_0x2832('0x39')]?_0xc472a4[_0x2832('0x38')]:_0x2e1f81['model'];if(!_0x2cbd15['query'][_0x2832('0x3a')](_0x2832('0x3b'))){_0xc472a4[_0x2832('0x1f')]=qs['limit'](_0x2cbd15[_0x2832('0x32')][_0x2832('0x1f')]);_0xc472a4[_0x2832('0x1e')]=qs['offset'](_0x2cbd15['query'][_0x2832('0x1e')]);}_0xc472a4[_0x2832('0x3c')]=qs[_0x2832('0x3d')](_0x2cbd15[_0x2832('0x32')][_0x2832('0x3d')]);_0xc472a4[_0x2832('0x3e')]=qs['filters'](_[_0x2832('0x3f')](_0x2cbd15[_0x2832('0x32')],_0x2e1f81[_0x2832('0x34')]),_0x438735);if(_0x2cbd15[_0x2832('0x32')][_0x2832('0x40')]){_0xc472a4['where']=_[_0x2832('0x41')](_0xc472a4[_0x2832('0x3e')],{'$or':_[_0x2832('0x2d')](_0x438735,function(_0x834cae){if(_0x834cae[_0x2832('0x42')]!=='VIRTUAL'){var _0x31b5b1={};_0x31b5b1[_0x834cae['name']]={'$like':'%'+_0x2cbd15[_0x2832('0x32')][_0x2832('0x40')]+'%'};return _0x31b5b1;}})});}_0xc472a4=_[_0x2832('0x41')]({},_0xc472a4,_0x2cbd15['options']);var _0x1300d3={'where':_0xc472a4[_0x2832('0x3e')]};return db['Campaign']['count'](_0x1300d3)[_0x2832('0x26')](function(_0x759be8){_0x57aafa['count']=_0x759be8;if(_0x2cbd15[_0x2832('0x32')][_0x2832('0x43')]){_0xc472a4[_0x2832('0x44')]=[{'all':!![]}];}return db[_0x2832('0x2e')][_0x2832('0x45')](_0xc472a4);})[_0x2832('0x26')](function(_0x18713b){_0x57aafa[_0x2832('0x46')]=_0x18713b;return _0x57aafa;})[_0x2832('0x26')](respondWithFilteredResult(_0x23c709,_0xc472a4))[_0x2832('0x47')](handleError(_0x23c709,null));};exports['show']=function(_0x1c51e9,_0x5f159c){var _0x133b12={'raw':![],'where':{'id':_0x1c51e9[_0x2832('0x48')]['id']}},_0x5b5a20={};_0x5b5a20[_0x2832('0x36')]=_['keys'](db[_0x2832('0x2e')][_0x2832('0x2f')]);_0x5b5a20['query']=_[_0x2832('0x33')](_0x1c51e9['query']);_0x5b5a20[_0x2832('0x34')]=_[_0x2832('0x35')](_0x5b5a20[_0x2832('0x36')],_0x5b5a20[_0x2832('0x32')]);_0x133b12[_0x2832('0x38')]=_[_0x2832('0x35')](_0x5b5a20[_0x2832('0x36')],qs[_0x2832('0x37')](_0x1c51e9['query']['fields']));_0x133b12[_0x2832('0x38')]=_0x133b12[_0x2832('0x38')][_0x2832('0x39')]?_0x133b12[_0x2832('0x38')]:_0x5b5a20[_0x2832('0x36')];if(_0x1c51e9[_0x2832('0x32')][_0x2832('0x43')]){_0x133b12[_0x2832('0x44')]=[{'all':!![]}];}_0x133b12=_[_0x2832('0x41')]({},_0x133b12,_0x1c51e9['options']);return db[_0x2832('0x2e')]['find'](_0x133b12)['then'](handleEntityNotFound(_0x5f159c,null))[_0x2832('0x26')](respondWithResult(_0x5f159c,null))[_0x2832('0x47')](handleError(_0x5f159c,null));};exports[_0x2832('0x49')]=function(_0xea06cf,_0x514707){return db[_0x2832('0x2e')][_0x2832('0x49')](_0xea06cf[_0x2832('0x4a')],{})[_0x2832('0x26')](function(_0x39b483){var _0x43fa8a=_0xea06cf[_0x2832('0x4b')]['get']({'plain':!![]});if(!_0x43fa8a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x43fa8a['role']==='user'){var _0x5a9fc7=_0x39b483['get']({'plain':!![]});var _0x31304b=_0x2832('0x4c');return db[_0x2832('0x4d')][_0x2832('0x4e')]({'where':{'name':_0x31304b,'userProfileId':_0x43fa8a[_0x2832('0x4f')]},'raw':!![]})[_0x2832('0x26')](function(_0x2942a9){if(_0x2942a9&&_0x2942a9[_0x2832('0x50')]===0x0){return db['UserProfileResource'][_0x2832('0x49')]({'name':_0x5a9fc7[_0x2832('0x2a')],'resourceId':_0x5a9fc7['id'],'type':_0x2942a9[_0x2832('0x2a')],'sectionId':_0x2942a9['id']},{})[_0x2832('0x26')](function(){return _0x39b483;});}else{return _0x39b483;}})[_0x2832('0x47')](function(_0x426ab5){logger[_0x2832('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x426ab5);throw _0x426ab5;});}return _0x39b483;})['then'](respondWithResult(_0x514707,0xc9))[_0x2832('0x47')](handleError(_0x514707,null));};exports[_0x2832('0x51')]=function(_0x3baa71,_0x9ee86b){var _0x1b55ed={'where':{'id':_0x3baa71['params']['id']}},_0x296e03={};_0x296e03[_0x2832('0x36')]=_[_0x2832('0x33')](db[_0x2832('0x2e')]['rawAttributes']);_0x1b55ed[_0x2832('0x38')]=_['intersection'](_0x296e03[_0x2832('0x36')],qs['fields'](_0x3baa71[_0x2832('0x32')][_0x2832('0x37')]));_0x1b55ed['attributes']=_0x1b55ed[_0x2832('0x38')]['length']?_0x1b55ed[_0x2832('0x38')]:_0x296e03['model'];if(_0x3baa71[_0x2832('0x32')]['includeAll']){_0x1b55ed['include']=[{'all':!![]}];}_0x1b55ed=_[_0x2832('0x41')]({},_0x1b55ed,_0x3baa71['options']);return db[_0x2832('0x2e')]['find'](_0x1b55ed)[_0x2832('0x26')](handleEntityNotFound(_0x9ee86b,null))[_0x2832('0x26')](function(_0xda9900){if(_0xda9900){var _0x26484e=_0xda9900[_0x2832('0x28')]({'plain':!![]});_0x26484e=qs[_0x2832('0x52')](_0x26484e,['id',_0x2832('0x53'),_0x2832('0x54')]);_0x3baa71[_0x2832('0x4a')]=_[_0x2832('0x52')](_0x3baa71['body'],['id',_0x2832('0x53'),_0x2832('0x54')]);return db[_0x2832('0x2e')][_0x2832('0x49')](_[_0x2832('0x41')](_0x26484e,_0x3baa71[_0x2832('0x4a')]),{'include':_0x3baa71[_0x2832('0x32')][_0x2832('0x43')]?[{'all':!![]}]:undefined})[_0x2832('0x26')](function(_0x97924a){var _0x350fb1=_0x3baa71[_0x2832('0x4b')]['get']({'plain':!![]});if(!_0x350fb1)throw new Error(_0x2832('0x55'));if(_0x350fb1[_0x2832('0x56')]==='user'){var _0xbe55df=_0x97924a['get']({'plain':!![]});var _0xd4f239=_0x2832('0x4c');return db[_0x2832('0x4d')][_0x2832('0x4e')]({'where':{'name':_0xd4f239,'userProfileId':_0x350fb1[_0x2832('0x4f')]},'raw':!![]})[_0x2832('0x26')](function(_0x27db6e){if(_0x27db6e&&_0x27db6e['autoAssociation']===0x0){return db['UserProfileResource'][_0x2832('0x49')]({'name':_0xbe55df['name'],'resourceId':_0xbe55df['id'],'type':_0x27db6e[_0x2832('0x2a')],'sectionId':_0x27db6e['id']},{})[_0x2832('0x26')](function(){return _0x97924a;});}else{return _0x97924a;}})[_0x2832('0x47')](function(_0xbddbc1){logger[_0x2832('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xbddbc1);throw _0xbddbc1;});}return _0x97924a;});}})['then'](respondWithResult(_0x9ee86b,0xc9))['catch'](handleError(_0x9ee86b,null));};exports[_0x2832('0x25')]=function(_0x39ad39,_0x1addfa){if(_0x39ad39['body']['id']){delete _0x39ad39[_0x2832('0x4a')]['id'];}return db[_0x2832('0x2e')][_0x2832('0x4e')]({'where':{'id':_0x39ad39[_0x2832('0x48')]['id']}})[_0x2832('0x26')](handleEntityNotFound(_0x1addfa,null))['then'](saveUpdates(_0x39ad39['body'],null))[_0x2832('0x26')](respondWithResult(_0x1addfa,null))[_0x2832('0x47')](handleError(_0x1addfa,null));};exports['destroy']=function(_0x1d7668,_0x105696){return db[_0x2832('0x2e')][_0x2832('0x4e')]({'where':{'id':_0x1d7668[_0x2832('0x48')]['id']}})['then'](handleEntityNotFound(_0x105696,null))[_0x2832('0x26')](removeEntity(_0x105696,null))['catch'](handleError(_0x105696,null));};exports['getHoppers']=function(_0x2ed018,_0x127dd1,_0x1b852a){var _0x2f7fbe={'raw':!![],'where':{}};var _0xf5f1af={};var _0x3f389c={'count':0x0,'rows':[]};return db[_0x2832('0x2e')][_0x2832('0x57')]({'where':{'id':_0x2ed018[_0x2832('0x48')]['id']}})[_0x2832('0x26')](handleEntityNotFound(_0x127dd1,null))['then'](function(_0x312afb){if(_0x312afb){_0xf5f1af[_0x2832('0x36')]=_['keys'](db[_0x2832('0x58')][_0x2832('0x2f')]);_0xf5f1af[_0x2832('0x32')]=_[_0x2832('0x33')](_0x2ed018[_0x2832('0x32')]);_0xf5f1af[_0x2832('0x34')]=_[_0x2832('0x35')](_0xf5f1af[_0x2832('0x36')],_0xf5f1af[_0x2832('0x32')]);_0x2f7fbe[_0x2832('0x38')]=_[_0x2832('0x35')](_0xf5f1af['model'],qs[_0x2832('0x37')](_0x2ed018[_0x2832('0x32')][_0x2832('0x37')]));_0x2f7fbe[_0x2832('0x38')]=_0x2f7fbe[_0x2832('0x38')][_0x2832('0x39')]?_0x2f7fbe[_0x2832('0x38')]:_0xf5f1af[_0x2832('0x36')];if(!_0x2ed018['query'][_0x2832('0x3a')](_0x2832('0x3b'))){_0x2f7fbe[_0x2832('0x1f')]=qs[_0x2832('0x1f')](_0x2ed018['query'][_0x2832('0x1f')]);_0x2f7fbe[_0x2832('0x1e')]=qs[_0x2832('0x1e')](_0x2ed018[_0x2832('0x32')][_0x2832('0x1e')]);}_0x2f7fbe['order']=qs['sort'](_0x2ed018[_0x2832('0x32')]['sort']);_0x2f7fbe['where']=qs[_0x2832('0x34')](_[_0x2832('0x3f')](_0x2ed018['query'],_0xf5f1af[_0x2832('0x34')]));_0x2f7fbe[_0x2832('0x3e')]['CampaignId']=_0x312afb['id'];if(_0x2ed018[_0x2832('0x32')][_0x2832('0x40')]){_0x2f7fbe[_0x2832('0x3e')]=_[_0x2832('0x41')](_0x2f7fbe[_0x2832('0x3e')],{'$or':_[_0x2832('0x2d')](_0x2f7fbe[_0x2832('0x38')],function(_0x301a9b){var _0x150b2e={};_0x150b2e[_0x301a9b]={'$like':'%'+_0x2ed018[_0x2832('0x32')][_0x2832('0x40')]+'%'};return _0x150b2e;})});}_0x2f7fbe=_[_0x2832('0x41')]({},_0x2f7fbe,_0x2ed018[_0x2832('0x59')]);return db[_0x2832('0x58')][_0x2832('0x5a')]({'where':_0x2f7fbe[_0x2832('0x3e')]})[_0x2832('0x26')](function(_0x3444fb){_0x3f389c[_0x2832('0x5a')]=_0x3444fb;if(_0x2ed018[_0x2832('0x32')][_0x2832('0x43')]){_0x2f7fbe[_0x2832('0x44')]=[{'all':!![]}];}return db['CmHopper'][_0x2832('0x45')](_0x2f7fbe);})[_0x2832('0x26')](function(_0xa6b8d6){_0x3f389c['rows']=_0xa6b8d6;return _0x3f389c;});}})[_0x2832('0x26')](respondWithFilteredResult(_0x127dd1,_0x2f7fbe))[_0x2832('0x47')](handleError(_0x127dd1,null));};exports[_0x2832('0x5b')]=function(_0x500467,_0x20b961,_0x1f2f7a){var _0x1f358e={'raw':!![],'where':{}};var _0x4f47ae={};var _0x128d9f={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x500467[_0x2832('0x48')]['id']}})[_0x2832('0x26')](handleEntityNotFound(_0x20b961,null))[_0x2832('0x26')](function(_0x673521){if(_0x673521){_0x4f47ae[_0x2832('0x36')]=_[_0x2832('0x33')](db['CmHopperHistory'][_0x2832('0x2f')]);_0x4f47ae[_0x2832('0x32')]=_[_0x2832('0x33')](_0x500467['query']);_0x4f47ae['filters']=_[_0x2832('0x35')](_0x4f47ae[_0x2832('0x36')],_0x4f47ae[_0x2832('0x32')]);_0x1f358e[_0x2832('0x38')]=_[_0x2832('0x35')](_0x4f47ae['model'],qs['fields'](_0x500467[_0x2832('0x32')][_0x2832('0x37')]));_0x1f358e[_0x2832('0x38')]=_0x1f358e[_0x2832('0x38')][_0x2832('0x39')]?_0x1f358e[_0x2832('0x38')]:_0x4f47ae[_0x2832('0x36')];if(!_0x500467[_0x2832('0x32')]['hasOwnProperty'](_0x2832('0x3b'))){_0x1f358e[_0x2832('0x1f')]=qs[_0x2832('0x1f')](_0x500467[_0x2832('0x32')][_0x2832('0x1f')]);_0x1f358e['offset']=qs[_0x2832('0x1e')](_0x500467[_0x2832('0x32')]['offset']);}_0x1f358e['order']=qs[_0x2832('0x3d')](_0x500467[_0x2832('0x32')]['sort']);_0x1f358e[_0x2832('0x3e')]=qs[_0x2832('0x34')](_[_0x2832('0x3f')](_0x500467['query'],_0x4f47ae['filters']));_0x1f358e[_0x2832('0x3e')][_0x2832('0x5c')]=_0x673521['id'];if(_0x500467[_0x2832('0x32')][_0x2832('0x40')]){_0x1f358e['where']=_[_0x2832('0x41')](_0x1f358e['where'],{'$or':_['map'](_0x1f358e[_0x2832('0x38')],function(_0x252510){var _0xfa577b={};_0xfa577b[_0x252510]={'$like':'%'+_0x500467[_0x2832('0x32')][_0x2832('0x40')]+'%'};return _0xfa577b;})});}_0x1f358e=_['merge']({},_0x1f358e,_0x500467['options']);return db[_0x2832('0x5d')]['count']({'where':_0x1f358e[_0x2832('0x3e')]})[_0x2832('0x26')](function(_0x2fe103){_0x128d9f['count']=_0x2fe103;if(_0x500467[_0x2832('0x32')]['includeAll']){_0x1f358e[_0x2832('0x44')]=[{'all':!![]}];}return db[_0x2832('0x5d')][_0x2832('0x45')](_0x1f358e);})[_0x2832('0x26')](function(_0x90b0fa){_0x128d9f[_0x2832('0x46')]=_0x90b0fa;return _0x128d9f;});}})[_0x2832('0x26')](respondWithFilteredResult(_0x20b961,_0x1f358e))[_0x2832('0x47')](handleError(_0x20b961,null));};exports[_0x2832('0x5e')]=function(_0x431438,_0x3912ea,_0x3d3a9c){var _0x150825={'raw':!![],'where':{}};var _0x3e2800={};var _0xf915b0={'count':0x0,'rows':[]};return db[_0x2832('0x2e')][_0x2832('0x57')]({'where':{'id':_0x431438[_0x2832('0x48')]['id']}})[_0x2832('0x26')](handleEntityNotFound(_0x3912ea,null))[_0x2832('0x26')](function(_0x5954fe){if(_0x5954fe){_0x3e2800[_0x2832('0x36')]=_[_0x2832('0x33')](db[_0x2832('0x5f')][_0x2832('0x2f')]);_0x3e2800['query']=_['keys'](_0x431438[_0x2832('0x32')]);_0x3e2800['filters']=_[_0x2832('0x35')](_0x3e2800[_0x2832('0x36')],_0x3e2800[_0x2832('0x32')]);_0x150825[_0x2832('0x38')]=_['intersection'](_0x3e2800[_0x2832('0x36')],qs[_0x2832('0x37')](_0x431438[_0x2832('0x32')][_0x2832('0x37')]));_0x150825[_0x2832('0x38')]=_0x150825[_0x2832('0x38')]['length']?_0x150825[_0x2832('0x38')]:_0x3e2800['model'];if(!_0x431438[_0x2832('0x32')][_0x2832('0x3a')](_0x2832('0x3b'))){_0x150825[_0x2832('0x1f')]=qs['limit'](_0x431438[_0x2832('0x32')]['limit']);_0x150825['offset']=qs[_0x2832('0x1e')](_0x431438[_0x2832('0x32')]['offset']);}_0x150825['order']=qs[_0x2832('0x3d')](_0x431438[_0x2832('0x32')][_0x2832('0x3d')]);_0x150825[_0x2832('0x3e')]=qs[_0x2832('0x34')](_[_0x2832('0x3f')](_0x431438[_0x2832('0x32')],_0x3e2800[_0x2832('0x34')]));_0x150825[_0x2832('0x3e')][_0x2832('0x5c')]=_0x5954fe['id'];if(_0x431438['query']['filter']){_0x150825[_0x2832('0x3e')]=_[_0x2832('0x41')](_0x150825[_0x2832('0x3e')],{'$or':_[_0x2832('0x2d')](_0x150825['attributes'],function(_0x52999e){var _0x25fb5d={};_0x25fb5d[_0x52999e]={'$like':'%'+_0x431438[_0x2832('0x32')][_0x2832('0x40')]+'%'};return _0x25fb5d;})});}_0x150825=_[_0x2832('0x41')]({},_0x150825,_0x431438[_0x2832('0x59')]);return db[_0x2832('0x5f')][_0x2832('0x5a')]({'where':_0x150825[_0x2832('0x3e')]})[_0x2832('0x26')](function(_0x316c10){_0xf915b0['count']=_0x316c10;if(_0x431438[_0x2832('0x32')][_0x2832('0x43')]){_0x150825['include']=[{'all':!![]}];}return db[_0x2832('0x5f')]['findAll'](_0x150825);})['then'](function(_0x20178c){_0xf915b0[_0x2832('0x46')]=_0x20178c;return _0xf915b0;});}})[_0x2832('0x26')](respondWithFilteredResult(_0x3912ea,_0x150825))['catch'](handleError(_0x3912ea,null));};exports['getHopperBlacks']=function(_0x4c6561,_0xa37246,_0x267ddf){var _0x4efd79={'raw':!![],'where':{}};var _0x1a2da9={};var _0x511545={'count':0x0,'rows':[]};return db[_0x2832('0x2e')][_0x2832('0x57')]({'where':{'id':_0x4c6561['params']['id']}})['then'](handleEntityNotFound(_0xa37246,null))[_0x2832('0x26')](function(_0x5c7ddc){if(_0x5c7ddc){_0x1a2da9[_0x2832('0x36')]=_[_0x2832('0x33')](db['CmHopperBlack'][_0x2832('0x2f')]);_0x1a2da9[_0x2832('0x32')]=_['keys'](_0x4c6561['query']);_0x1a2da9[_0x2832('0x34')]=_[_0x2832('0x35')](_0x1a2da9['model'],_0x1a2da9['query']);_0x4efd79['attributes']=_['intersection'](_0x1a2da9['model'],qs[_0x2832('0x37')](_0x4c6561[_0x2832('0x32')]['fields']));_0x4efd79['attributes']=_0x4efd79[_0x2832('0x38')][_0x2832('0x39')]?_0x4efd79[_0x2832('0x38')]:_0x1a2da9[_0x2832('0x36')];if(!_0x4c6561[_0x2832('0x32')][_0x2832('0x3a')](_0x2832('0x3b'))){_0x4efd79[_0x2832('0x1f')]=qs['limit'](_0x4c6561[_0x2832('0x32')][_0x2832('0x1f')]);_0x4efd79[_0x2832('0x1e')]=qs['offset'](_0x4c6561[_0x2832('0x32')][_0x2832('0x1e')]);}_0x4efd79[_0x2832('0x3c')]=qs[_0x2832('0x3d')](_0x4c6561[_0x2832('0x32')]['sort']);_0x4efd79[_0x2832('0x3e')]=qs['filters'](_[_0x2832('0x3f')](_0x4c6561[_0x2832('0x32')],_0x1a2da9[_0x2832('0x34')]));_0x4efd79[_0x2832('0x3e')][_0x2832('0x5c')]=_0x5c7ddc['id'];if(_0x4c6561[_0x2832('0x32')][_0x2832('0x40')]){_0x4efd79[_0x2832('0x3e')]=_['merge'](_0x4efd79['where'],{'$or':_[_0x2832('0x2d')](_0x4efd79[_0x2832('0x38')],function(_0x251f03){var _0x484669={};_0x484669[_0x251f03]={'$like':'%'+_0x4c6561[_0x2832('0x32')][_0x2832('0x40')]+'%'};return _0x484669;})});}_0x4efd79=_[_0x2832('0x41')]({},_0x4efd79,_0x4c6561['options']);return db[_0x2832('0x60')][_0x2832('0x5a')]({'where':_0x4efd79[_0x2832('0x3e')]})[_0x2832('0x26')](function(_0x35748d){_0x511545['count']=_0x35748d;if(_0x4c6561[_0x2832('0x32')][_0x2832('0x43')]){_0x4efd79[_0x2832('0x44')]=[{'all':!![]}];}return db[_0x2832('0x60')][_0x2832('0x45')](_0x4efd79);})[_0x2832('0x26')](function(_0x4e6cf0){_0x511545[_0x2832('0x46')]=_0x4e6cf0;return _0x511545;});}})['then'](respondWithFilteredResult(_0xa37246,_0x4efd79))[_0x2832('0x47')](handleError(_0xa37246,null));};exports[_0x2832('0x61')]=function(_0x25000e,_0x3e86d9,_0x47e809){var _0x3bbd0b={};var _0x232346={};var _0x1e6710;var _0x9de397;return db[_0x2832('0x2e')]['findOne']({'where':{'id':_0x25000e['params']['id']}})[_0x2832('0x26')](handleEntityNotFound(_0x3e86d9,null))[_0x2832('0x26')](function(_0x5eb7a9){if(_0x5eb7a9){_0x1e6710=_0x5eb7a9;_0x232346[_0x2832('0x36')]=_['keys'](db['CmList']['rawAttributes']);_0x232346[_0x2832('0x32')]=_['keys'](_0x25000e[_0x2832('0x32')]);_0x232346[_0x2832('0x34')]=_[_0x2832('0x35')](_0x232346[_0x2832('0x36')],_0x232346[_0x2832('0x32')]);_0x3bbd0b[_0x2832('0x38')]=_[_0x2832('0x35')](_0x232346['model'],qs['fields'](_0x25000e[_0x2832('0x32')][_0x2832('0x37')]));_0x3bbd0b[_0x2832('0x38')]=_0x3bbd0b[_0x2832('0x38')][_0x2832('0x39')]?_0x3bbd0b[_0x2832('0x38')]:_0x232346[_0x2832('0x36')];_0x3bbd0b[_0x2832('0x3c')]=qs[_0x2832('0x3d')](_0x25000e['query']['sort']);_0x3bbd0b[_0x2832('0x3e')]=qs[_0x2832('0x34')](_[_0x2832('0x3f')](_0x25000e[_0x2832('0x32')],_0x232346[_0x2832('0x34')]));if(_0x25000e['query'][_0x2832('0x40')]){_0x3bbd0b[_0x2832('0x3e')]=_[_0x2832('0x41')](_0x3bbd0b[_0x2832('0x3e')],{'$or':_['map'](_0x3bbd0b[_0x2832('0x38')],function(_0x343b79){var _0x25b82b={};_0x25b82b[_0x343b79]={'$like':'%'+_0x25000e['query']['filter']+'%'};return _0x25b82b;})});}_0x3bbd0b=_[_0x2832('0x41')]({},_0x3bbd0b,_0x25000e[_0x2832('0x59')]);return _0x1e6710[_0x2832('0x61')](_0x3bbd0b);}})[_0x2832('0x26')](function(_0x4903c6){if(_0x4903c6){_0x9de397=_0x4903c6[_0x2832('0x39')];if(!_0x25000e[_0x2832('0x32')][_0x2832('0x3a')](_0x2832('0x3b'))){_0x3bbd0b['limit']=qs[_0x2832('0x1f')](_0x25000e[_0x2832('0x32')][_0x2832('0x1f')]);_0x3bbd0b['offset']=qs['offset'](_0x25000e[_0x2832('0x32')][_0x2832('0x1e')]);}return _0x1e6710[_0x2832('0x61')](_0x3bbd0b);}})['then'](function(_0x3448f0){if(_0x3448f0){return _0x3448f0?{'count':_0x9de397,'rows':_0x3448f0}:null;}})['then'](respondWithResult(_0x3e86d9,null))[_0x2832('0x47')](handleError(_0x3e86d9,null));};exports['addLists']=function(_0x26046b,_0x5c66fd,_0x4af7d8){var _0xc66e98,_0xf37a67;var _0x1f082b=[];var _0x28f435=moment()[_0x2832('0x62')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0x2832('0x2e')]['find']({'where':{'id':_0x26046b[_0x2832('0x48')]['id']}})[_0x2832('0x26')](handleEntityNotFound(_0x5c66fd,null))['then'](function(_0x56eb8f){if(_0x56eb8f){_0xf37a67=_0x56eb8f;return _0x56eb8f[_0x2832('0x63')](_0x26046b[_0x2832('0x4a')][_0x2832('0x64')],_['omit'](_0x26046b[_0x2832('0x4a')],[_0x2832('0x64'),'id'])||{});}return null;})[_0x2832('0x65')](function(_0x3c7864){var _0x2eb9a9;var _0x1958f2;_0xc66e98=_0x3c7864||[];var _0x2441c0=[];if(_0x3c7864){for(var _0x22bd5c=0x0;_0x22bd5c<_0x3c7864[_0x2832('0x39')];_0x22bd5c+=0x1){var _0x471b58=_0x3c7864[_0x22bd5c]['get']({'plain':!![]});_0xf37a67[_0x2832('0x66')]=_0x26046b[_0x2832('0x4a')][_0x2832('0x66')]?_0x26046b[_0x2832('0x4a')][_0x2832('0x66')]:_0xf37a67['dialCheckDuplicateType'];switch(_0xf37a67[_0x2832('0x66')]){case _0x2832('0x67'):_0x2eb9a9=squel['insert']()[_0x2832('0x68')](_0x2832('0x69'))['fromQuery']([_0x2832('0x6a'),_0x2832('0x6b'),'ContactId',_0x2832('0x6c'),_0x2832('0x5c'),_0x2832('0x53'),'updatedAt'],squel[_0x2832('0x6d')]()['field'](_0x2832('0x6a'),_0x2832('0x6a'))[_0x2832('0x6e')](_0x2832('0x6f'),'scheduledAt')['field']('id','ContactId')[_0x2832('0x6e')](_0x471b58[_0x2832('0x70')][_0x2832('0x71')](),'ListId')['field'](_0x26046b[_0x2832('0x48')]['id'][_0x2832('0x71')](),_0x2832('0x5c'))['field']('\x27'+_0x28f435+'\x27',_0x2832('0x53'))['field']('\x27'+_0x28f435+'\x27',_0x2832('0x54'))['from'](_0x2832('0x72'))['where'](_0x2832('0x73'))['where'](_0x2832('0x74'),_0x471b58[_0x2832('0x70')][_0x2832('0x71')]())[_0x2832('0x3e')]('phone\x20IS\x20NOT\x20NULL')['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x2832('0x6d')]()[_0x2832('0x6e')](_0x2832('0x75'))['from']('cm_hopper_final')['where'](_0x2832('0x76'),_0x26046b[_0x2832('0x48')]['id'][_0x2832('0x71')]()))[_0x2832('0x3e')](_0x2832('0x77'),squel[_0x2832('0x6d')]()[_0x2832('0x6e')](_0x2832('0x78'))[_0x2832('0x79')](_0x2832('0x69'))['where'](_0x2832('0x76'),_0x26046b[_0x2832('0x48')]['id'][_0x2832('0x71')]())))[_0x2832('0x71')]();break;case _0x2832('0x7a'):_0x2eb9a9=squel['insert']()[_0x2832('0x68')](_0x2832('0x69'))['fromQuery']([_0x2832('0x6a'),_0x2832('0x6b'),'ContactId',_0x2832('0x6c'),_0x2832('0x5c'),_0x2832('0x53'),_0x2832('0x54')],squel['select']()[_0x2832('0x6e')](_0x2832('0x6a'),'phone')[_0x2832('0x6e')](_0x2832('0x6f'),_0x2832('0x6b'))[_0x2832('0x6e')]('id','ContactId')['field'](_0x471b58['CmListId'][_0x2832('0x71')](),'ListId')[_0x2832('0x6e')](_0x26046b[_0x2832('0x48')]['id'][_0x2832('0x71')](),_0x2832('0x5c'))[_0x2832('0x6e')]('\x27'+_0x28f435+'\x27',_0x2832('0x53'))['field']('\x27'+_0x28f435+'\x27','updatedAt')[_0x2832('0x79')](_0x2832('0x72'))[_0x2832('0x3e')]('deletedAt\x20IS\x20NULL')[_0x2832('0x3e')](_0x2832('0x74'),_0x471b58['CmListId'][_0x2832('0x71')]())[_0x2832('0x3e')](_0x2832('0x7b'))[_0x2832('0x3e')](_0x2832('0x77'),squel[_0x2832('0x6d')]()[_0x2832('0x6e')]('COALESCE(phone,\x27\x27)')[_0x2832('0x79')](_0x2832('0x69'))[_0x2832('0x3e')](_0x2832('0x76'),_0x26046b[_0x2832('0x48')]['id'][_0x2832('0x71')]())))[_0x2832('0x71')]();break;default:_0x2eb9a9=squel[_0x2832('0x7c')]()[_0x2832('0x68')](_0x2832('0x69'))['fromQuery'](['phone','scheduledAt',_0x2832('0x7d'),_0x2832('0x6c'),'CampaignId',_0x2832('0x53'),_0x2832('0x54')],squel[_0x2832('0x6d')]()['field'](_0x2832('0x6a'),'phone')[_0x2832('0x6e')](_0x2832('0x6f'),_0x2832('0x6b'))[_0x2832('0x6e')]('id',_0x2832('0x7d'))['field'](_0x471b58[_0x2832('0x70')][_0x2832('0x71')](),'ListId')['field'](_0x26046b[_0x2832('0x48')]['id'][_0x2832('0x71')](),_0x2832('0x5c'))[_0x2832('0x6e')]('\x27'+_0x28f435+'\x27','createdAt')[_0x2832('0x6e')]('\x27'+_0x28f435+'\x27',_0x2832('0x54'))[_0x2832('0x79')](_0x2832('0x72'))[_0x2832('0x3e')](_0x2832('0x73'))[_0x2832('0x3e')](_0x2832('0x74'),_0x471b58[_0x2832('0x70')][_0x2832('0x71')]())[_0x2832('0x3e')](_0x2832('0x7b')))[_0x2832('0x71')]();}_0x1958f2=squel[_0x2832('0x7c')]()['into'](_0x2832('0x7e'))[_0x2832('0x7f')]([_0x2832('0x80'),_0x2832('0x6b'),'phone',_0x2832('0x81'),_0x2832('0x53'),'updatedAt'],squel[_0x2832('0x6d')]()[_0x2832('0x6e')]('h.id','id')[_0x2832('0x6e')]('NOW()',_0x2832('0x6b'))[_0x2832('0x6e')](_0x2832('0x82'),'phone')[_0x2832('0x6e')](_0x2832('0x83'),_0x2832('0x81'))[_0x2832('0x6e')]('\x27'+_0x28f435+'\x27',_0x2832('0x53'))[_0x2832('0x6e')]('\x27'+_0x28f435+'\x27',_0x2832('0x54'))[_0x2832('0x79')](_0x2832('0x84'),'ci')[_0x2832('0x85')](_0x2832('0x69'),'h',_0x2832('0x86'))['where']('h.ListId\x20=\x20?',_0x471b58[_0x2832('0x70')]['toString']())[_0x2832('0x3e')](_0x2832('0x87'),_0x26046b[_0x2832('0x48')]['id'][_0x2832('0x71')]())[_0x2832('0x3e')](_0x2832('0x88'),_0x28f435))[_0x2832('0x71')]();_0x2441c0[_0x2832('0x89')](db[_0x2832('0x8a')]['query'](_0x2eb9a9));_0x1f082b[_0x2832('0x89')](db[_0x2832('0x8a')]['query'](_0x1958f2));}return BPromise[_0x2832('0x8b')](_0x2441c0);}})['then'](function(){return BPromise['all'](_0x1f082b);})['then'](function(){return _0xc66e98;})[_0x2832('0x26')](respondWithResult(_0x5c66fd,null))[_0x2832('0x47')](handleError(_0x5c66fd,null));};exports['removeLists']=function(_0x55032a,_0x2da7ee,_0x275135){return db[_0x2832('0x2e')][_0x2832('0x4e')]({'where':{'id':_0x55032a['params']['id']}})[_0x2832('0x26')](handleEntityNotFound(_0x2da7ee,null))[_0x2832('0x26')](function(_0x5c56b2){if(_0x5c56b2){return _0x5c56b2['removeLists'](_0x55032a[_0x2832('0x32')]['ids']);}})[_0x2832('0x26')](function(_0x4c3932){if(_0x4c3932){return db[_0x2832('0x58')][_0x2832('0x27')]({'where':{'ListId':_0x55032a[_0x2832('0x32')][_0x2832('0x64')],'CampaignId':_0x55032a[_0x2832('0x48')]['id']}})[_0x2832('0x26')](function(){return _0x4c3932;});}})[_0x2832('0x26')](respondWithStatusCode(_0x2da7ee,null))[_0x2832('0x47')](handleError(_0x2da7ee,null));};exports[_0x2832('0x8c')]=function(_0x35a686,_0x58d63a,_0x3f89e4){var _0x14a5de={};var _0x1a298a={};var _0x21b2d1;var _0x17b50f;return db[_0x2832('0x2e')][_0x2832('0x57')]({'where':{'id':_0x35a686[_0x2832('0x48')]['id']}})[_0x2832('0x26')](handleEntityNotFound(_0x58d63a,null))['then'](function(_0x25ef86){if(_0x25ef86){_0x21b2d1=_0x25ef86;_0x1a298a[_0x2832('0x36')]=_[_0x2832('0x33')](db['CmList'][_0x2832('0x2f')]);_0x1a298a[_0x2832('0x32')]=_['keys'](_0x35a686[_0x2832('0x32')]);_0x1a298a[_0x2832('0x34')]=_['intersection'](_0x1a298a['model'],_0x1a298a['query']);_0x14a5de['attributes']=_[_0x2832('0x35')](_0x1a298a[_0x2832('0x36')],qs[_0x2832('0x37')](_0x35a686['query'][_0x2832('0x37')]));_0x14a5de[_0x2832('0x38')]=_0x14a5de[_0x2832('0x38')][_0x2832('0x39')]?_0x14a5de['attributes']:_0x1a298a[_0x2832('0x36')];_0x14a5de[_0x2832('0x3c')]=qs[_0x2832('0x3d')](_0x35a686[_0x2832('0x32')]['sort']);_0x14a5de[_0x2832('0x3e')]=qs[_0x2832('0x34')](_[_0x2832('0x3f')](_0x35a686['query'],_0x1a298a[_0x2832('0x34')]));if(_0x35a686[_0x2832('0x32')][_0x2832('0x40')]){_0x14a5de[_0x2832('0x3e')]=_['merge'](_0x14a5de[_0x2832('0x3e')],{'$or':_[_0x2832('0x2d')](_0x14a5de[_0x2832('0x38')],function(_0x5348de){var _0x31b941={};_0x31b941[_0x5348de]={'$like':'%'+_0x35a686['query'][_0x2832('0x40')]+'%'};return _0x31b941;})});}_0x14a5de=_[_0x2832('0x41')]({},_0x14a5de,_0x35a686[_0x2832('0x59')]);return _0x21b2d1['getBlackLists'](_0x14a5de);}})[_0x2832('0x26')](function(_0x480834){if(_0x480834){_0x17b50f=_0x480834[_0x2832('0x39')];if(!_0x35a686[_0x2832('0x32')]['hasOwnProperty']('nolimit')){_0x14a5de[_0x2832('0x1f')]=qs['limit'](_0x35a686['query'][_0x2832('0x1f')]);_0x14a5de['offset']=qs[_0x2832('0x1e')](_0x35a686[_0x2832('0x32')]['offset']);}return _0x21b2d1[_0x2832('0x8c')](_0x14a5de);}})['then'](function(_0xf2e412){if(_0xf2e412){return _0xf2e412?{'count':_0x17b50f,'rows':_0xf2e412}:null;}})['then'](respondWithResult(_0x58d63a,null))['catch'](handleError(_0x58d63a,null));};exports[_0x2832('0x8d')]=function(_0x330a33,_0x35fe1f,_0x415a1f){var _0x1c11a6,_0x4463ab;var _0x5d342e=[];var _0x16bde5=moment()['format'](_0x2832('0x8e'));return db[_0x2832('0x2e')][_0x2832('0x4e')]({'where':{'id':_0x330a33[_0x2832('0x48')]['id']}})['then'](handleEntityNotFound(_0x35fe1f,null))[_0x2832('0x26')](function(_0x4529a0){if(_0x4529a0){_0x4463ab=_0x4529a0;return _0x4529a0['addBlackLists'](_0x330a33[_0x2832('0x4a')][_0x2832('0x64')],_[_0x2832('0x52')](_0x330a33[_0x2832('0x4a')],['ids','id'])||{});}return null;})[_0x2832('0x65')](function(_0x5da40f){var _0x3cdd31;var _0xd44100;_0x1c11a6=_0x5da40f||[];var _0x555213=[];if(_0x5da40f){for(var _0x2b3648=0x0;_0x2b3648<_0x5da40f[_0x2832('0x39')];_0x2b3648+=0x1){var _0x14172d=_0x5da40f[_0x2b3648]['get']({'plain':!![]});_0x3cdd31=squel[_0x2832('0x7c')]()[_0x2832('0x68')](_0x2832('0x8f'))['fromQuery']([_0x2832('0x6a'),_0x2832('0x7d'),'ListId','CampaignId',_0x2832('0x53'),_0x2832('0x54')],squel[_0x2832('0x6d')]()[_0x2832('0x6e')]('phone',_0x2832('0x6a'))['field']('id',_0x2832('0x7d'))[_0x2832('0x6e')](_0x14172d['CmListId'][_0x2832('0x71')](),_0x2832('0x6c'))[_0x2832('0x6e')](_0x330a33[_0x2832('0x48')]['id'][_0x2832('0x71')](),_0x2832('0x5c'))['field']('NOW()',_0x2832('0x53'))[_0x2832('0x6e')](_0x2832('0x6f'),'updatedAt')[_0x2832('0x79')](_0x2832('0x72'))['where'](_0x2832('0x73'))[_0x2832('0x3e')]('ListId\x20=\x20?',_0x14172d[_0x2832('0x70')]['toString']())[_0x2832('0x3e')](_0x2832('0x7b')))['toString']();_0x555213[_0x2832('0x89')](db['sequelize'][_0x2832('0x32')](_0x3cdd31));}return BPromise[_0x2832('0x8b')](_0x555213);}})['then'](function(){return _0x1c11a6;})[_0x2832('0x26')](respondWithResult(_0x35fe1f,null))['catch'](handleError(_0x35fe1f,null));};exports['removeBlackLists']=function(_0x7151b3,_0x44ec34,_0x9b2fc4){return db[_0x2832('0x2e')][_0x2832('0x4e')]({'where':{'id':_0x7151b3[_0x2832('0x48')]['id']}})[_0x2832('0x26')](handleEntityNotFound(_0x44ec34,null))['then'](function(_0x50f35b){if(_0x50f35b){return _0x50f35b[_0x2832('0x90')](_0x7151b3[_0x2832('0x32')][_0x2832('0x64')]);}})['then'](function(_0x5b6280){if(_0x5b6280){return db[_0x2832('0x60')][_0x2832('0x27')]({'where':{'ListId':_0x7151b3[_0x2832('0x32')]['ids'],'CampaignId':_0x7151b3[_0x2832('0x48')]['id']}})[_0x2832('0x26')](function(){return _0x5b6280;});}})[_0x2832('0x26')](respondWithStatusCode(_0x44ec34,null))[_0x2832('0x47')](handleError(_0x44ec34,null));};
\ No newline at end of file
+var _0x47c0=['always','insert','fromQuery','scheduledAt','ListId','select','field','phone','NOW()','ContactId','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','from','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','into','OrderBy','h.id','ci.OrderBY','cm_contact_has_items','join','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','getBlackLists','addBlackLists','removeBlackLists','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','get','IvrCampaigns','UserProfileResource','destroy','end','error','stack','name','send','index','map','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','Campaign','includeAll','findAll','rows','catch','params','rawAttributes','keys','length','include','options','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','clone','omit','createdAt','updatedAt','getHoppers','findOne','CmHopper','CmHopperHistory','CampaignId','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','format','ids','spread','dialCheckDuplicateType'];(function(_0x296051,_0x13678b){var _0x22c51d=function(_0xa4aeb1){while(--_0xa4aeb1){_0x296051['push'](_0x296051['shift']());}};_0x22c51d(++_0x13678b);}(_0x47c0,0x1dc));var _0x047c=function(_0x319752,_0x56a4fb){_0x319752=_0x319752-0x0;var _0x53e17d=_0x47c0[_0x319752];return _0x53e17d;};'use strict';var emlformat=require(_0x047c('0x0'));var rimraf=require(_0x047c('0x1'));var zipdir=require(_0x047c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x047c('0x3'));var moment=require(_0x047c('0x4'));var BPromise=require(_0x047c('0x5'));var Mustache=require(_0x047c('0x6'));var util=require(_0x047c('0x7'));var path=require(_0x047c('0x8'));var sox=require('sox');var csv=require(_0x047c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x047c('0xa'));var _=require(_0x047c('0xb'));var squel=require('squel');var crypto=require(_0x047c('0xc'));var jsforce=require(_0x047c('0xd'));var deskjs=require(_0x047c('0xe'));var toCsv=require(_0x047c('0x9'));var querystring=require(_0x047c('0xf'));var Papa=require('papaparse');var Redis=require(_0x047c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x047c('0x11'));var as=require(_0x047c('0x12'));var hardwareService=require(_0x047c('0x13'));var logger=require('../../config/logger')(_0x047c('0x14'));var utils=require(_0x047c('0x15'));var config=require(_0x047c('0x16'));var licenseUtil=require(_0x047c('0x17'));var db=require(_0x047c('0x18'))['db'];function respondWithStatusCode(_0x473a46,_0x19dbf9){_0x19dbf9=_0x19dbf9||0xcc;return function(_0x3dbae3){if(_0x3dbae3){return _0x473a46[_0x047c('0x19')](_0x19dbf9);}return _0x473a46[_0x047c('0x1a')](_0x19dbf9)['end']();};}function respondWithResult(_0x4a6c33,_0x4ea7fc){_0x4ea7fc=_0x4ea7fc||0xc8;return function(_0x44f6da){if(_0x44f6da){return _0x4a6c33[_0x047c('0x1a')](_0x4ea7fc)[_0x047c('0x1b')](_0x44f6da);}};}function respondWithFilteredResult(_0x62458f,_0x47c468){return function(_0x5d6cc9){if(_0x5d6cc9){var _0x598e4e=typeof _0x47c468['offset']===_0x047c('0x1c')&&typeof _0x47c468[_0x047c('0x1d')]===_0x047c('0x1c');var _0x4b6274=_0x5d6cc9[_0x047c('0x1e')];var _0x3b129a=_0x598e4e?0x0:_0x47c468[_0x047c('0x1f')];var _0x4330b8=_0x598e4e?_0x5d6cc9[_0x047c('0x1e')]:_0x47c468[_0x047c('0x1f')]+_0x47c468['limit'];var _0x40f272;if(_0x4330b8>=_0x4b6274){_0x4330b8=_0x4b6274;_0x40f272=0xc8;}else{_0x40f272=0xce;}_0x62458f[_0x047c('0x1a')](_0x40f272);return _0x62458f[_0x047c('0x20')](_0x047c('0x21'),_0x3b129a+'-'+_0x4330b8+'/'+_0x4b6274)[_0x047c('0x1b')](_0x5d6cc9);}return null;};}function patchUpdates(_0x3c9dc7){return function(_0x3b466b){try{jsonpatch[_0x047c('0x22')](_0x3b466b,_0x3c9dc7,!![]);}catch(_0xe248e8){return BPromise[_0x047c('0x23')](_0xe248e8);}return _0x3b466b[_0x047c('0x24')]();};}function saveUpdates(_0x30f3e9,_0x500cc8){return function(_0x23f5cf){if(_0x23f5cf){return _0x23f5cf[_0x047c('0x25')](_0x30f3e9)[_0x047c('0x26')](function(_0x3f229a){return _0x3f229a;});}return null;};}function removeEntity(_0x19afa4,_0x4b94b3){return function(_0x596033){if(_0x596033){return _0x596033['destroy']()[_0x047c('0x26')](function(){var _0x3b0a2c=_0x596033[_0x047c('0x27')]({'plain':!![]});var _0x36903f=_0x047c('0x28');return db[_0x047c('0x29')][_0x047c('0x2a')]({'where':{'type':_0x36903f,'resourceId':_0x3b0a2c['id']}})[_0x047c('0x26')](function(){return _0x596033;});})[_0x047c('0x26')](function(){_0x19afa4[_0x047c('0x1a')](0xcc)[_0x047c('0x2b')]();});}};}function handleEntityNotFound(_0x52fe40,_0x46a354){return function(_0x11a0ea){if(!_0x11a0ea){_0x52fe40[_0x047c('0x19')](0x194);}return _0x11a0ea;};}function handleError(_0x29d99f,_0x5c53a5){_0x5c53a5=_0x5c53a5||0x1f4;return function(_0xfd2440){logger[_0x047c('0x2c')](_0xfd2440[_0x047c('0x2d')]);if(_0xfd2440[_0x047c('0x2e')]){delete _0xfd2440[_0x047c('0x2e')];}_0x29d99f[_0x047c('0x1a')](_0x5c53a5)[_0x047c('0x2f')](_0xfd2440);};}exports[_0x047c('0x30')]=function(_0x585a62,_0x6a3795){var _0x46f4de={},_0x2e50c3={},_0x20ef6a={'count':0x0,'rows':[]};var _0xccd9ac=_[_0x047c('0x31')](db['Campaign']['rawAttributes'],function(_0x3642d6){return{'name':_0x3642d6[_0x047c('0x32')],'type':_0x3642d6['type'][_0x047c('0x33')]};});_0x2e50c3[_0x047c('0x34')]=_[_0x047c('0x31')](_0xccd9ac,_0x047c('0x2e'));_0x2e50c3[_0x047c('0x35')]=_['keys'](_0x585a62[_0x047c('0x35')]);_0x2e50c3[_0x047c('0x36')]=_[_0x047c('0x37')](_0x2e50c3[_0x047c('0x34')],_0x2e50c3[_0x047c('0x35')]);_0x46f4de[_0x047c('0x38')]=_['intersection'](_0x2e50c3[_0x047c('0x34')],qs[_0x047c('0x39')](_0x585a62[_0x047c('0x35')][_0x047c('0x39')]));_0x46f4de['attributes']=_0x46f4de[_0x047c('0x38')]['length']?_0x46f4de[_0x047c('0x38')]:_0x2e50c3[_0x047c('0x34')];if(!_0x585a62[_0x047c('0x35')][_0x047c('0x3a')](_0x047c('0x3b'))){_0x46f4de[_0x047c('0x1d')]=qs[_0x047c('0x1d')](_0x585a62[_0x047c('0x35')][_0x047c('0x1d')]);_0x46f4de[_0x047c('0x1f')]=qs[_0x047c('0x1f')](_0x585a62[_0x047c('0x35')][_0x047c('0x1f')]);}_0x46f4de[_0x047c('0x3c')]=qs[_0x047c('0x3d')](_0x585a62[_0x047c('0x35')][_0x047c('0x3d')]);_0x46f4de['where']=qs[_0x047c('0x36')](_[_0x047c('0x3e')](_0x585a62[_0x047c('0x35')],_0x2e50c3[_0x047c('0x36')]),_0xccd9ac);if(_0x585a62[_0x047c('0x35')][_0x047c('0x3f')]){_0x46f4de[_0x047c('0x40')]=_[_0x047c('0x41')](_0x46f4de[_0x047c('0x40')],{'$or':_['map'](_0xccd9ac,function(_0x3e9dd1){if(_0x3e9dd1[_0x047c('0x42')]!==_0x047c('0x43')){var _0xd41eb9={};_0xd41eb9[_0x3e9dd1[_0x047c('0x2e')]]={'$like':'%'+_0x585a62[_0x047c('0x35')][_0x047c('0x3f')]+'%'};return _0xd41eb9;}})});}_0x46f4de=_['merge']({},_0x46f4de,_0x585a62['options']);var _0x213ffd={'where':_0x46f4de[_0x047c('0x40')]};return db[_0x047c('0x44')]['count'](_0x213ffd)[_0x047c('0x26')](function(_0x5e8b84){_0x20ef6a[_0x047c('0x1e')]=_0x5e8b84;if(_0x585a62['query'][_0x047c('0x45')]){_0x46f4de['include']=[{'all':!![]}];}return db[_0x047c('0x44')][_0x047c('0x46')](_0x46f4de);})[_0x047c('0x26')](function(_0x430e92){_0x20ef6a[_0x047c('0x47')]=_0x430e92;return _0x20ef6a;})[_0x047c('0x26')](respondWithFilteredResult(_0x6a3795,_0x46f4de))[_0x047c('0x48')](handleError(_0x6a3795,null));};exports['show']=function(_0x14b4f0,_0x3202e4){var _0x1f5d35={'raw':![],'where':{'id':_0x14b4f0[_0x047c('0x49')]['id']}},_0x569836={};_0x569836['model']=_['keys'](db[_0x047c('0x44')][_0x047c('0x4a')]);_0x569836[_0x047c('0x35')]=_[_0x047c('0x4b')](_0x14b4f0[_0x047c('0x35')]);_0x569836[_0x047c('0x36')]=_[_0x047c('0x37')](_0x569836[_0x047c('0x34')],_0x569836['query']);_0x1f5d35[_0x047c('0x38')]=_[_0x047c('0x37')](_0x569836['model'],qs[_0x047c('0x39')](_0x14b4f0[_0x047c('0x35')][_0x047c('0x39')]));_0x1f5d35[_0x047c('0x38')]=_0x1f5d35['attributes'][_0x047c('0x4c')]?_0x1f5d35[_0x047c('0x38')]:_0x569836[_0x047c('0x34')];if(_0x14b4f0[_0x047c('0x35')][_0x047c('0x45')]){_0x1f5d35[_0x047c('0x4d')]=[{'all':!![]}];}_0x1f5d35=_[_0x047c('0x41')]({},_0x1f5d35,_0x14b4f0[_0x047c('0x4e')]);return db[_0x047c('0x44')]['find'](_0x1f5d35)[_0x047c('0x26')](handleEntityNotFound(_0x3202e4,null))[_0x047c('0x26')](respondWithResult(_0x3202e4,null))[_0x047c('0x48')](handleError(_0x3202e4,null));};exports[_0x047c('0x4f')]=function(_0x1e8e8b,_0x3336e1){return db[_0x047c('0x44')][_0x047c('0x4f')](_0x1e8e8b[_0x047c('0x50')],{})['then'](function(_0x27a9bf){var _0x5c10f2=_0x1e8e8b[_0x047c('0x51')]['get']({'plain':!![]});if(!_0x5c10f2)throw new Error(_0x047c('0x52'));if(_0x5c10f2[_0x047c('0x53')]===_0x047c('0x51')){var _0x34ca84=_0x27a9bf['get']({'plain':!![]});var _0x5d1721=_0x047c('0x28');return db[_0x047c('0x54')][_0x047c('0x55')]({'where':{'name':_0x5d1721,'userProfileId':_0x5c10f2[_0x047c('0x56')]},'raw':!![]})[_0x047c('0x26')](function(_0x4e3c5d){if(_0x4e3c5d&&_0x4e3c5d[_0x047c('0x57')]===0x0){return db[_0x047c('0x29')][_0x047c('0x4f')]({'name':_0x34ca84['name'],'resourceId':_0x34ca84['id'],'type':_0x4e3c5d[_0x047c('0x2e')],'sectionId':_0x4e3c5d['id']},{})['then'](function(){return _0x27a9bf;});}else{return _0x27a9bf;}})[_0x047c('0x48')](function(_0x3de804){logger['error'](_0x047c('0x58'),_0x3de804);throw _0x3de804;});}return _0x27a9bf;})[_0x047c('0x26')](respondWithResult(_0x3336e1,0xc9))[_0x047c('0x48')](handleError(_0x3336e1,null));};exports[_0x047c('0x59')]=function(_0xc4e5e2,_0x344077){var _0x4e8603={'where':{'id':_0xc4e5e2[_0x047c('0x49')]['id']}},_0x41bdba={};_0x41bdba[_0x047c('0x34')]=_[_0x047c('0x4b')](db['Campaign'][_0x047c('0x4a')]);_0x4e8603['attributes']=_[_0x047c('0x37')](_0x41bdba[_0x047c('0x34')],qs[_0x047c('0x39')](_0xc4e5e2['query']['fields']));_0x4e8603[_0x047c('0x38')]=_0x4e8603[_0x047c('0x38')][_0x047c('0x4c')]?_0x4e8603[_0x047c('0x38')]:_0x41bdba['model'];if(_0xc4e5e2[_0x047c('0x35')]['includeAll']){_0x4e8603['include']=[{'all':!![]}];}_0x4e8603=_[_0x047c('0x41')]({},_0x4e8603,_0xc4e5e2[_0x047c('0x4e')]);return db['Campaign']['find'](_0x4e8603)[_0x047c('0x26')](handleEntityNotFound(_0x344077,null))['then'](function(_0x2775a6){if(_0x2775a6){var _0x962307=_0x2775a6[_0x047c('0x27')]({'plain':!![]});_0x962307=qs[_0x047c('0x5a')](_0x962307,['id',_0x047c('0x5b'),_0x047c('0x5c')]);_0xc4e5e2[_0x047c('0x50')]=_[_0x047c('0x5a')](_0xc4e5e2['body'],['id',_0x047c('0x5b'),_0x047c('0x5c')]);return db[_0x047c('0x44')][_0x047c('0x4f')](_[_0x047c('0x41')](_0x962307,_0xc4e5e2[_0x047c('0x50')]),{'include':_0xc4e5e2['query'][_0x047c('0x45')]?[{'all':!![]}]:undefined})[_0x047c('0x26')](function(_0x2816d6){var _0x5afa5f=_0xc4e5e2[_0x047c('0x51')][_0x047c('0x27')]({'plain':!![]});if(!_0x5afa5f)throw new Error(_0x047c('0x52'));if(_0x5afa5f[_0x047c('0x53')]===_0x047c('0x51')){var _0x28ad4f=_0x2816d6[_0x047c('0x27')]({'plain':!![]});var _0x1ef53b='IvrCampaigns';return db[_0x047c('0x54')][_0x047c('0x55')]({'where':{'name':_0x1ef53b,'userProfileId':_0x5afa5f[_0x047c('0x56')]},'raw':!![]})[_0x047c('0x26')](function(_0x428a32){if(_0x428a32&&_0x428a32['autoAssociation']===0x0){return db[_0x047c('0x29')][_0x047c('0x4f')]({'name':_0x28ad4f[_0x047c('0x2e')],'resourceId':_0x28ad4f['id'],'type':_0x428a32[_0x047c('0x2e')],'sectionId':_0x428a32['id']},{})[_0x047c('0x26')](function(){return _0x2816d6;});}else{return _0x2816d6;}})[_0x047c('0x48')](function(_0x47508a){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x47508a);throw _0x47508a;});}return _0x2816d6;});}})[_0x047c('0x26')](respondWithResult(_0x344077,0xc9))[_0x047c('0x48')](handleError(_0x344077,null));};exports[_0x047c('0x25')]=function(_0x45c535,_0x422b90){if(_0x45c535[_0x047c('0x50')]['id']){delete _0x45c535['body']['id'];}return db[_0x047c('0x44')][_0x047c('0x55')]({'where':{'id':_0x45c535['params']['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x422b90,null))[_0x047c('0x26')](saveUpdates(_0x45c535[_0x047c('0x50')],null))[_0x047c('0x26')](respondWithResult(_0x422b90,null))[_0x047c('0x48')](handleError(_0x422b90,null));};exports['destroy']=function(_0xf5e690,_0x31f7da){return db[_0x047c('0x44')][_0x047c('0x55')]({'where':{'id':_0xf5e690[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x31f7da,null))[_0x047c('0x26')](removeEntity(_0x31f7da,null))[_0x047c('0x48')](handleError(_0x31f7da,null));};exports[_0x047c('0x5d')]=function(_0x1b73dc,_0x4cf38b,_0x2c7c2d){var _0x642ab3={'raw':!![],'where':{}};var _0x27b1ee={};var _0xe52202={'count':0x0,'rows':[]};return db[_0x047c('0x44')][_0x047c('0x5e')]({'where':{'id':_0x1b73dc[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x4cf38b,null))[_0x047c('0x26')](function(_0x4b8e05){if(_0x4b8e05){_0x27b1ee['model']=_[_0x047c('0x4b')](db[_0x047c('0x5f')][_0x047c('0x4a')]);_0x27b1ee[_0x047c('0x35')]=_[_0x047c('0x4b')](_0x1b73dc[_0x047c('0x35')]);_0x27b1ee[_0x047c('0x36')]=_[_0x047c('0x37')](_0x27b1ee[_0x047c('0x34')],_0x27b1ee[_0x047c('0x35')]);_0x642ab3['attributes']=_[_0x047c('0x37')](_0x27b1ee[_0x047c('0x34')],qs['fields'](_0x1b73dc[_0x047c('0x35')][_0x047c('0x39')]));_0x642ab3[_0x047c('0x38')]=_0x642ab3[_0x047c('0x38')][_0x047c('0x4c')]?_0x642ab3['attributes']:_0x27b1ee['model'];if(!_0x1b73dc[_0x047c('0x35')][_0x047c('0x3a')]('nolimit')){_0x642ab3['limit']=qs[_0x047c('0x1d')](_0x1b73dc[_0x047c('0x35')][_0x047c('0x1d')]);_0x642ab3['offset']=qs[_0x047c('0x1f')](_0x1b73dc['query'][_0x047c('0x1f')]);}_0x642ab3['order']=qs[_0x047c('0x3d')](_0x1b73dc[_0x047c('0x35')]['sort']);_0x642ab3[_0x047c('0x40')]=qs[_0x047c('0x36')](_[_0x047c('0x3e')](_0x1b73dc[_0x047c('0x35')],_0x27b1ee[_0x047c('0x36')]));_0x642ab3[_0x047c('0x40')]['CampaignId']=_0x4b8e05['id'];if(_0x1b73dc['query'][_0x047c('0x3f')]){_0x642ab3[_0x047c('0x40')]=_[_0x047c('0x41')](_0x642ab3[_0x047c('0x40')],{'$or':_[_0x047c('0x31')](_0x642ab3['attributes'],function(_0x3dcb6f){var _0x4ba468={};_0x4ba468[_0x3dcb6f]={'$like':'%'+_0x1b73dc[_0x047c('0x35')][_0x047c('0x3f')]+'%'};return _0x4ba468;})});}_0x642ab3=_[_0x047c('0x41')]({},_0x642ab3,_0x1b73dc[_0x047c('0x4e')]);return db[_0x047c('0x5f')][_0x047c('0x1e')]({'where':_0x642ab3['where']})[_0x047c('0x26')](function(_0x2071a4){_0xe52202[_0x047c('0x1e')]=_0x2071a4;if(_0x1b73dc[_0x047c('0x35')]['includeAll']){_0x642ab3['include']=[{'all':!![]}];}return db[_0x047c('0x5f')]['findAll'](_0x642ab3);})[_0x047c('0x26')](function(_0x553928){_0xe52202[_0x047c('0x47')]=_0x553928;return _0xe52202;});}})['then'](respondWithFilteredResult(_0x4cf38b,_0x642ab3))['catch'](handleError(_0x4cf38b,null));};exports['getHopperHistories']=function(_0x4d39c7,_0x3126d2,_0x4c30e7){var _0x198790={'raw':!![],'where':{}};var _0x424820={};var _0x103d33={'count':0x0,'rows':[]};return db[_0x047c('0x44')][_0x047c('0x5e')]({'where':{'id':_0x4d39c7[_0x047c('0x49')]['id']}})['then'](handleEntityNotFound(_0x3126d2,null))[_0x047c('0x26')](function(_0x879abe){if(_0x879abe){_0x424820[_0x047c('0x34')]=_[_0x047c('0x4b')](db[_0x047c('0x60')][_0x047c('0x4a')]);_0x424820[_0x047c('0x35')]=_['keys'](_0x4d39c7[_0x047c('0x35')]);_0x424820[_0x047c('0x36')]=_['intersection'](_0x424820[_0x047c('0x34')],_0x424820[_0x047c('0x35')]);_0x198790[_0x047c('0x38')]=_[_0x047c('0x37')](_0x424820[_0x047c('0x34')],qs[_0x047c('0x39')](_0x4d39c7[_0x047c('0x35')]['fields']));_0x198790[_0x047c('0x38')]=_0x198790['attributes'][_0x047c('0x4c')]?_0x198790[_0x047c('0x38')]:_0x424820[_0x047c('0x34')];if(!_0x4d39c7[_0x047c('0x35')][_0x047c('0x3a')]('nolimit')){_0x198790[_0x047c('0x1d')]=qs['limit'](_0x4d39c7['query'][_0x047c('0x1d')]);_0x198790['offset']=qs[_0x047c('0x1f')](_0x4d39c7['query'][_0x047c('0x1f')]);}_0x198790[_0x047c('0x3c')]=qs[_0x047c('0x3d')](_0x4d39c7[_0x047c('0x35')]['sort']);_0x198790['where']=qs['filters'](_[_0x047c('0x3e')](_0x4d39c7[_0x047c('0x35')],_0x424820[_0x047c('0x36')]));_0x198790[_0x047c('0x40')][_0x047c('0x61')]=_0x879abe['id'];if(_0x4d39c7['query'][_0x047c('0x3f')]){_0x198790[_0x047c('0x40')]=_[_0x047c('0x41')](_0x198790['where'],{'$or':_['map'](_0x198790[_0x047c('0x38')],function(_0x3ad340){var _0x1c07a4={};_0x1c07a4[_0x3ad340]={'$like':'%'+_0x4d39c7[_0x047c('0x35')]['filter']+'%'};return _0x1c07a4;})});}_0x198790=_['merge']({},_0x198790,_0x4d39c7['options']);return db[_0x047c('0x60')]['count']({'where':_0x198790[_0x047c('0x40')]})[_0x047c('0x26')](function(_0x39cd57){_0x103d33[_0x047c('0x1e')]=_0x39cd57;if(_0x4d39c7[_0x047c('0x35')][_0x047c('0x45')]){_0x198790[_0x047c('0x4d')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x047c('0x46')](_0x198790);})[_0x047c('0x26')](function(_0x16b89e){_0x103d33[_0x047c('0x47')]=_0x16b89e;return _0x103d33;});}})[_0x047c('0x26')](respondWithFilteredResult(_0x3126d2,_0x198790))[_0x047c('0x48')](handleError(_0x3126d2,null));};exports[_0x047c('0x62')]=function(_0x2655b9,_0x3ddd3f,_0x544af4){var _0x5ba989={'raw':!![],'where':{}};var _0x1b72ad={};var _0x45027c={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x2655b9[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x3ddd3f,null))[_0x047c('0x26')](function(_0x587953){if(_0x587953){_0x1b72ad['model']=_[_0x047c('0x4b')](db[_0x047c('0x63')][_0x047c('0x4a')]);_0x1b72ad[_0x047c('0x35')]=_['keys'](_0x2655b9[_0x047c('0x35')]);_0x1b72ad[_0x047c('0x36')]=_[_0x047c('0x37')](_0x1b72ad['model'],_0x1b72ad[_0x047c('0x35')]);_0x5ba989[_0x047c('0x38')]=_[_0x047c('0x37')](_0x1b72ad[_0x047c('0x34')],qs[_0x047c('0x39')](_0x2655b9[_0x047c('0x35')][_0x047c('0x39')]));_0x5ba989['attributes']=_0x5ba989[_0x047c('0x38')][_0x047c('0x4c')]?_0x5ba989[_0x047c('0x38')]:_0x1b72ad[_0x047c('0x34')];if(!_0x2655b9[_0x047c('0x35')][_0x047c('0x3a')](_0x047c('0x3b'))){_0x5ba989[_0x047c('0x1d')]=qs[_0x047c('0x1d')](_0x2655b9[_0x047c('0x35')][_0x047c('0x1d')]);_0x5ba989[_0x047c('0x1f')]=qs['offset'](_0x2655b9['query'][_0x047c('0x1f')]);}_0x5ba989[_0x047c('0x3c')]=qs['sort'](_0x2655b9[_0x047c('0x35')]['sort']);_0x5ba989[_0x047c('0x40')]=qs[_0x047c('0x36')](_['pick'](_0x2655b9[_0x047c('0x35')],_0x1b72ad['filters']));_0x5ba989[_0x047c('0x40')]['CampaignId']=_0x587953['id'];if(_0x2655b9[_0x047c('0x35')][_0x047c('0x3f')]){_0x5ba989[_0x047c('0x40')]=_[_0x047c('0x41')](_0x5ba989['where'],{'$or':_[_0x047c('0x31')](_0x5ba989[_0x047c('0x38')],function(_0x184b55){var _0x39a24c={};_0x39a24c[_0x184b55]={'$like':'%'+_0x2655b9[_0x047c('0x35')][_0x047c('0x3f')]+'%'};return _0x39a24c;})});}_0x5ba989=_[_0x047c('0x41')]({},_0x5ba989,_0x2655b9[_0x047c('0x4e')]);return db['CmHopperFinal']['count']({'where':_0x5ba989[_0x047c('0x40')]})[_0x047c('0x26')](function(_0x181d9f){_0x45027c[_0x047c('0x1e')]=_0x181d9f;if(_0x2655b9[_0x047c('0x35')][_0x047c('0x45')]){_0x5ba989[_0x047c('0x4d')]=[{'all':!![]}];}return db[_0x047c('0x63')][_0x047c('0x46')](_0x5ba989);})[_0x047c('0x26')](function(_0x5c0f53){_0x45027c['rows']=_0x5c0f53;return _0x45027c;});}})[_0x047c('0x26')](respondWithFilteredResult(_0x3ddd3f,_0x5ba989))[_0x047c('0x48')](handleError(_0x3ddd3f,null));};exports['getHopperBlacks']=function(_0x4cd6a7,_0x3e2e7b,_0x2be4d1){var _0x408694={'raw':!![],'where':{}};var _0x347fa1={};var _0x46804d={'count':0x0,'rows':[]};return db[_0x047c('0x44')][_0x047c('0x5e')]({'where':{'id':_0x4cd6a7[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x3e2e7b,null))[_0x047c('0x26')](function(_0x17b98b){if(_0x17b98b){_0x347fa1[_0x047c('0x34')]=_['keys'](db[_0x047c('0x64')][_0x047c('0x4a')]);_0x347fa1[_0x047c('0x35')]=_[_0x047c('0x4b')](_0x4cd6a7[_0x047c('0x35')]);_0x347fa1['filters']=_[_0x047c('0x37')](_0x347fa1['model'],_0x347fa1[_0x047c('0x35')]);_0x408694[_0x047c('0x38')]=_[_0x047c('0x37')](_0x347fa1[_0x047c('0x34')],qs[_0x047c('0x39')](_0x4cd6a7[_0x047c('0x35')][_0x047c('0x39')]));_0x408694[_0x047c('0x38')]=_0x408694[_0x047c('0x38')][_0x047c('0x4c')]?_0x408694['attributes']:_0x347fa1[_0x047c('0x34')];if(!_0x4cd6a7['query']['hasOwnProperty'](_0x047c('0x3b'))){_0x408694['limit']=qs[_0x047c('0x1d')](_0x4cd6a7['query'][_0x047c('0x1d')]);_0x408694[_0x047c('0x1f')]=qs[_0x047c('0x1f')](_0x4cd6a7[_0x047c('0x35')][_0x047c('0x1f')]);}_0x408694[_0x047c('0x3c')]=qs['sort'](_0x4cd6a7['query'][_0x047c('0x3d')]);_0x408694[_0x047c('0x40')]=qs[_0x047c('0x36')](_[_0x047c('0x3e')](_0x4cd6a7[_0x047c('0x35')],_0x347fa1[_0x047c('0x36')]));_0x408694[_0x047c('0x40')][_0x047c('0x61')]=_0x17b98b['id'];if(_0x4cd6a7['query']['filter']){_0x408694[_0x047c('0x40')]=_['merge'](_0x408694[_0x047c('0x40')],{'$or':_[_0x047c('0x31')](_0x408694[_0x047c('0x38')],function(_0x44d959){var _0x5598b2={};_0x5598b2[_0x44d959]={'$like':'%'+_0x4cd6a7[_0x047c('0x35')][_0x047c('0x3f')]+'%'};return _0x5598b2;})});}_0x408694=_['merge']({},_0x408694,_0x4cd6a7[_0x047c('0x4e')]);return db[_0x047c('0x64')][_0x047c('0x1e')]({'where':_0x408694['where']})[_0x047c('0x26')](function(_0x50724b){_0x46804d[_0x047c('0x1e')]=_0x50724b;if(_0x4cd6a7[_0x047c('0x35')]['includeAll']){_0x408694[_0x047c('0x4d')]=[{'all':!![]}];}return db[_0x047c('0x64')][_0x047c('0x46')](_0x408694);})['then'](function(_0x58dd57){_0x46804d[_0x047c('0x47')]=_0x58dd57;return _0x46804d;});}})[_0x047c('0x26')](respondWithFilteredResult(_0x3e2e7b,_0x408694))[_0x047c('0x48')](handleError(_0x3e2e7b,null));};exports[_0x047c('0x65')]=function(_0x181e6f,_0x3337c0,_0x583a59){var _0x401fa4={};var _0x464dcb={};var _0x4bf742;var _0x37d680;return db[_0x047c('0x44')][_0x047c('0x5e')]({'where':{'id':_0x181e6f['params']['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x3337c0,null))[_0x047c('0x26')](function(_0x58e39a){if(_0x58e39a){_0x4bf742=_0x58e39a;_0x464dcb[_0x047c('0x34')]=_[_0x047c('0x4b')](db[_0x047c('0x66')][_0x047c('0x4a')]);_0x464dcb[_0x047c('0x35')]=_['keys'](_0x181e6f[_0x047c('0x35')]);_0x464dcb[_0x047c('0x36')]=_[_0x047c('0x37')](_0x464dcb[_0x047c('0x34')],_0x464dcb[_0x047c('0x35')]);_0x401fa4[_0x047c('0x38')]=_[_0x047c('0x37')](_0x464dcb[_0x047c('0x34')],qs['fields'](_0x181e6f[_0x047c('0x35')][_0x047c('0x39')]));_0x401fa4[_0x047c('0x38')]=_0x401fa4[_0x047c('0x38')][_0x047c('0x4c')]?_0x401fa4[_0x047c('0x38')]:_0x464dcb[_0x047c('0x34')];_0x401fa4[_0x047c('0x3c')]=qs[_0x047c('0x3d')](_0x181e6f[_0x047c('0x35')][_0x047c('0x3d')]);_0x401fa4[_0x047c('0x40')]=qs[_0x047c('0x36')](_[_0x047c('0x3e')](_0x181e6f[_0x047c('0x35')],_0x464dcb['filters']));if(_0x181e6f[_0x047c('0x35')][_0x047c('0x3f')]){_0x401fa4[_0x047c('0x40')]=_[_0x047c('0x41')](_0x401fa4[_0x047c('0x40')],{'$or':_[_0x047c('0x31')](_0x401fa4['attributes'],function(_0x4055a8){var _0xd5c754={};_0xd5c754[_0x4055a8]={'$like':'%'+_0x181e6f['query']['filter']+'%'};return _0xd5c754;})});}_0x401fa4=_[_0x047c('0x41')]({},_0x401fa4,_0x181e6f[_0x047c('0x4e')]);return _0x4bf742['getLists'](_0x401fa4);}})[_0x047c('0x26')](function(_0xefbf14){if(_0xefbf14){_0x37d680=_0xefbf14['length'];if(!_0x181e6f[_0x047c('0x35')][_0x047c('0x3a')]('nolimit')){_0x401fa4[_0x047c('0x1d')]=qs[_0x047c('0x1d')](_0x181e6f[_0x047c('0x35')][_0x047c('0x1d')]);_0x401fa4['offset']=qs[_0x047c('0x1f')](_0x181e6f[_0x047c('0x35')][_0x047c('0x1f')]);}return _0x4bf742[_0x047c('0x65')](_0x401fa4);}})[_0x047c('0x26')](function(_0x509af6){if(_0x509af6){return _0x509af6?{'count':_0x37d680,'rows':_0x509af6}:null;}})[_0x047c('0x26')](respondWithResult(_0x3337c0,null))['catch'](handleError(_0x3337c0,null));};exports[_0x047c('0x67')]=function(_0x48df4d,_0x1597e5,_0x4c6367){var _0x2140f7,_0x33e4ae;var _0x39920a=[];var _0x452022=moment()[_0x047c('0x68')]('YYYY-MM-DD\x20HH:mm:ss');return db['Campaign']['find']({'where':{'id':_0x48df4d[_0x047c('0x49')]['id']}})['then'](handleEntityNotFound(_0x1597e5,null))['then'](function(_0x338ead){if(_0x338ead){_0x33e4ae=_0x338ead;return _0x338ead['addLists'](_0x48df4d['body']['ids'],_[_0x047c('0x5a')](_0x48df4d[_0x047c('0x50')],[_0x047c('0x69'),'id'])||{});}return null;})[_0x047c('0x6a')](function(_0xd78606){var _0x3ce59b;var _0x47f68a;_0x2140f7=_0xd78606||[];var _0x11391f=[];if(_0xd78606){for(var _0x5f3d04=0x0;_0x5f3d04<_0xd78606[_0x047c('0x4c')];_0x5f3d04+=0x1){var _0x15eee0=_0xd78606[_0x5f3d04][_0x047c('0x27')]({'plain':!![]});_0x33e4ae[_0x047c('0x6b')]=_0x48df4d['body']['dialCheckDuplicateType']?_0x48df4d[_0x047c('0x50')][_0x047c('0x6b')]:_0x33e4ae['dialCheckDuplicateType'];switch(_0x33e4ae[_0x047c('0x6b')]){case _0x047c('0x6c'):_0x3ce59b=squel[_0x047c('0x6d')]()['into']('cm_hopper')[_0x047c('0x6e')](['phone',_0x047c('0x6f'),'ContactId',_0x047c('0x70'),'CampaignId',_0x047c('0x5b'),_0x047c('0x5c')],squel[_0x047c('0x71')]()[_0x047c('0x72')](_0x047c('0x73'),_0x047c('0x73'))['field'](_0x047c('0x74'),_0x047c('0x6f'))['field']('id',_0x047c('0x75'))[_0x047c('0x72')](_0x15eee0[_0x047c('0x76')][_0x047c('0x77')](),_0x047c('0x70'))[_0x047c('0x72')](_0x48df4d[_0x047c('0x49')]['id'][_0x047c('0x77')](),_0x047c('0x61'))['field']('\x27'+_0x452022+'\x27',_0x047c('0x5b'))['field']('\x27'+_0x452022+'\x27',_0x047c('0x5c'))['from'](_0x047c('0x78'))[_0x047c('0x40')](_0x047c('0x79'))['where'](_0x047c('0x7a'),_0x15eee0[_0x047c('0x76')][_0x047c('0x77')]())[_0x047c('0x40')](_0x047c('0x7b'))[_0x047c('0x40')](_0x047c('0x7c'),squel['select']()[_0x047c('0x72')](_0x047c('0x7d'))[_0x047c('0x7e')]('cm_hopper_final')[_0x047c('0x40')](_0x047c('0x7f'),_0x48df4d[_0x047c('0x49')]['id'][_0x047c('0x77')]()))[_0x047c('0x40')](_0x047c('0x7c'),squel[_0x047c('0x71')]()[_0x047c('0x72')](_0x047c('0x80'))[_0x047c('0x7e')](_0x047c('0x81'))['where'](_0x047c('0x7f'),_0x48df4d['params']['id'][_0x047c('0x77')]())))[_0x047c('0x77')]();break;case _0x047c('0x82'):_0x3ce59b=squel[_0x047c('0x6d')]()['into'](_0x047c('0x81'))['fromQuery']([_0x047c('0x73'),_0x047c('0x6f'),'ContactId',_0x047c('0x70'),'CampaignId','createdAt',_0x047c('0x5c')],squel[_0x047c('0x71')]()[_0x047c('0x72')](_0x047c('0x73'),_0x047c('0x73'))[_0x047c('0x72')](_0x047c('0x74'),'scheduledAt')[_0x047c('0x72')]('id',_0x047c('0x75'))['field'](_0x15eee0[_0x047c('0x76')][_0x047c('0x77')](),_0x047c('0x70'))[_0x047c('0x72')](_0x48df4d[_0x047c('0x49')]['id']['toString'](),_0x047c('0x61'))[_0x047c('0x72')]('\x27'+_0x452022+'\x27','createdAt')[_0x047c('0x72')]('\x27'+_0x452022+'\x27',_0x047c('0x5c'))['from'](_0x047c('0x78'))[_0x047c('0x40')](_0x047c('0x79'))[_0x047c('0x40')](_0x047c('0x7a'),_0x15eee0[_0x047c('0x76')][_0x047c('0x77')]())['where'](_0x047c('0x7b'))[_0x047c('0x40')](_0x047c('0x7c'),squel[_0x047c('0x71')]()[_0x047c('0x72')](_0x047c('0x80'))[_0x047c('0x7e')](_0x047c('0x81'))['where'](_0x047c('0x7f'),_0x48df4d[_0x047c('0x49')]['id']['toString']())))['toString']();break;default:_0x3ce59b=squel[_0x047c('0x6d')]()[_0x047c('0x83')](_0x047c('0x81'))[_0x047c('0x6e')]([_0x047c('0x73'),'scheduledAt',_0x047c('0x75'),'ListId',_0x047c('0x61'),'createdAt','updatedAt'],squel[_0x047c('0x71')]()[_0x047c('0x72')](_0x047c('0x73'),_0x047c('0x73'))[_0x047c('0x72')]('NOW()',_0x047c('0x6f'))[_0x047c('0x72')]('id',_0x047c('0x75'))[_0x047c('0x72')](_0x15eee0[_0x047c('0x76')][_0x047c('0x77')](),_0x047c('0x70'))[_0x047c('0x72')](_0x48df4d['params']['id'][_0x047c('0x77')](),_0x047c('0x61'))[_0x047c('0x72')]('\x27'+_0x452022+'\x27',_0x047c('0x5b'))[_0x047c('0x72')]('\x27'+_0x452022+'\x27',_0x047c('0x5c'))[_0x047c('0x7e')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x047c('0x40')](_0x047c('0x7a'),_0x15eee0[_0x047c('0x76')][_0x047c('0x77')]())[_0x047c('0x40')](_0x047c('0x7b')))[_0x047c('0x77')]();}_0x47f68a=squel[_0x047c('0x6d')]()[_0x047c('0x83')]('cm_hopper_additional_phones')[_0x047c('0x6e')](['cmHopperId',_0x047c('0x6f'),'phone',_0x047c('0x84'),_0x047c('0x5b'),'updatedAt'],squel[_0x047c('0x71')]()['field'](_0x047c('0x85'),'id')[_0x047c('0x72')](_0x047c('0x74'),_0x047c('0x6f'))[_0x047c('0x72')]('ci.item','phone')['field'](_0x047c('0x86'),'OrderBy')[_0x047c('0x72')]('\x27'+_0x452022+'\x27',_0x047c('0x5b'))[_0x047c('0x72')]('\x27'+_0x452022+'\x27',_0x047c('0x5c'))[_0x047c('0x7e')](_0x047c('0x87'),'ci')[_0x047c('0x88')](_0x047c('0x81'),'h','h.ContactId\x20=\x20ci.CmContactId')[_0x047c('0x40')](_0x047c('0x89'),_0x15eee0['CmListId'][_0x047c('0x77')]())[_0x047c('0x40')](_0x047c('0x8a'),_0x48df4d['params']['id'][_0x047c('0x77')]())[_0x047c('0x40')](_0x047c('0x8b'),_0x452022))[_0x047c('0x77')]();_0x11391f[_0x047c('0x8c')](db[_0x047c('0x8d')][_0x047c('0x35')](_0x3ce59b));_0x39920a[_0x047c('0x8c')](db['sequelize'][_0x047c('0x35')](_0x47f68a));}return BPromise[_0x047c('0x8e')](_0x11391f);}})[_0x047c('0x26')](function(){return BPromise['all'](_0x39920a);})[_0x047c('0x26')](function(){return _0x2140f7;})['then'](respondWithResult(_0x1597e5,null))[_0x047c('0x48')](handleError(_0x1597e5,null));};exports['removeLists']=function(_0x14209a,_0x43a416,_0xa0fb10){return db[_0x047c('0x44')][_0x047c('0x55')]({'where':{'id':_0x14209a[_0x047c('0x49')]['id']}})['then'](handleEntityNotFound(_0x43a416,null))['then'](function(_0x25d0a0){if(_0x25d0a0){return _0x25d0a0['removeLists'](_0x14209a['query'][_0x047c('0x69')]);}})['then'](function(_0x1495e0){if(_0x1495e0){return db[_0x047c('0x5f')][_0x047c('0x2a')]({'where':{'ListId':_0x14209a[_0x047c('0x35')][_0x047c('0x69')],'CampaignId':_0x14209a['params']['id']}})[_0x047c('0x26')](function(){return _0x1495e0;});}})['then'](respondWithStatusCode(_0x43a416,null))['catch'](handleError(_0x43a416,null));};exports['getBlackLists']=function(_0x35a688,_0x593c4c,_0x3b2c59){var _0x4d635f={};var _0x3d63ae={};var _0x330989;var _0x5e5008;return db[_0x047c('0x44')][_0x047c('0x5e')]({'where':{'id':_0x35a688[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x593c4c,null))[_0x047c('0x26')](function(_0x1cfa94){if(_0x1cfa94){_0x330989=_0x1cfa94;_0x3d63ae[_0x047c('0x34')]=_[_0x047c('0x4b')](db['CmList'][_0x047c('0x4a')]);_0x3d63ae[_0x047c('0x35')]=_[_0x047c('0x4b')](_0x35a688[_0x047c('0x35')]);_0x3d63ae[_0x047c('0x36')]=_[_0x047c('0x37')](_0x3d63ae[_0x047c('0x34')],_0x3d63ae[_0x047c('0x35')]);_0x4d635f[_0x047c('0x38')]=_['intersection'](_0x3d63ae['model'],qs[_0x047c('0x39')](_0x35a688[_0x047c('0x35')][_0x047c('0x39')]));_0x4d635f[_0x047c('0x38')]=_0x4d635f[_0x047c('0x38')]['length']?_0x4d635f['attributes']:_0x3d63ae['model'];_0x4d635f[_0x047c('0x3c')]=qs[_0x047c('0x3d')](_0x35a688[_0x047c('0x35')][_0x047c('0x3d')]);_0x4d635f[_0x047c('0x40')]=qs[_0x047c('0x36')](_[_0x047c('0x3e')](_0x35a688[_0x047c('0x35')],_0x3d63ae['filters']));if(_0x35a688[_0x047c('0x35')]['filter']){_0x4d635f[_0x047c('0x40')]=_[_0x047c('0x41')](_0x4d635f[_0x047c('0x40')],{'$or':_[_0x047c('0x31')](_0x4d635f[_0x047c('0x38')],function(_0x22e9dd){var _0x8b05be={};_0x8b05be[_0x22e9dd]={'$like':'%'+_0x35a688[_0x047c('0x35')][_0x047c('0x3f')]+'%'};return _0x8b05be;})});}_0x4d635f=_[_0x047c('0x41')]({},_0x4d635f,_0x35a688[_0x047c('0x4e')]);return _0x330989[_0x047c('0x8f')](_0x4d635f);}})[_0x047c('0x26')](function(_0xd8f37d){if(_0xd8f37d){_0x5e5008=_0xd8f37d[_0x047c('0x4c')];if(!_0x35a688['query'][_0x047c('0x3a')](_0x047c('0x3b'))){_0x4d635f[_0x047c('0x1d')]=qs[_0x047c('0x1d')](_0x35a688['query'][_0x047c('0x1d')]);_0x4d635f[_0x047c('0x1f')]=qs[_0x047c('0x1f')](_0x35a688['query']['offset']);}return _0x330989[_0x047c('0x8f')](_0x4d635f);}})['then'](function(_0x4851e6){if(_0x4851e6){return _0x4851e6?{'count':_0x5e5008,'rows':_0x4851e6}:null;}})[_0x047c('0x26')](respondWithResult(_0x593c4c,null))[_0x047c('0x48')](handleError(_0x593c4c,null));};exports['addBlackLists']=function(_0x2287e9,_0x424a45,_0x3a54e7){var _0x38718b,_0x50e9d7;var _0x12ac82=[];var _0x5d8b95=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');return db[_0x047c('0x44')][_0x047c('0x55')]({'where':{'id':_0x2287e9[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x424a45,null))['then'](function(_0x4933f9){if(_0x4933f9){_0x50e9d7=_0x4933f9;return _0x4933f9[_0x047c('0x90')](_0x2287e9['body'][_0x047c('0x69')],_[_0x047c('0x5a')](_0x2287e9[_0x047c('0x50')],['ids','id'])||{});}return null;})['spread'](function(_0x2c1781){var _0x461123;var _0x273f4d;_0x38718b=_0x2c1781||[];var _0x10e45c=[];if(_0x2c1781){for(var _0x383351=0x0;_0x383351<_0x2c1781[_0x047c('0x4c')];_0x383351+=0x1){var _0x536d65=_0x2c1781[_0x383351]['get']({'plain':!![]});_0x461123=squel[_0x047c('0x6d')]()[_0x047c('0x83')]('cm_hopper_black')[_0x047c('0x6e')]([_0x047c('0x73'),'ContactId','ListId','CampaignId','createdAt',_0x047c('0x5c')],squel['select']()['field']('phone',_0x047c('0x73'))[_0x047c('0x72')]('id',_0x047c('0x75'))[_0x047c('0x72')](_0x536d65[_0x047c('0x76')][_0x047c('0x77')](),_0x047c('0x70'))['field'](_0x2287e9[_0x047c('0x49')]['id'][_0x047c('0x77')](),_0x047c('0x61'))[_0x047c('0x72')]('NOW()',_0x047c('0x5b'))['field'](_0x047c('0x74'),_0x047c('0x5c'))[_0x047c('0x7e')](_0x047c('0x78'))[_0x047c('0x40')](_0x047c('0x79'))[_0x047c('0x40')](_0x047c('0x7a'),_0x536d65['CmListId']['toString']())['where'](_0x047c('0x7b')))[_0x047c('0x77')]();_0x10e45c['push'](db[_0x047c('0x8d')]['query'](_0x461123));}return BPromise[_0x047c('0x8e')](_0x10e45c);}})[_0x047c('0x26')](function(){return _0x38718b;})['then'](respondWithResult(_0x424a45,null))[_0x047c('0x48')](handleError(_0x424a45,null));};exports[_0x047c('0x91')]=function(_0x26b2bb,_0x4a02f7,_0x3f71b7){return db[_0x047c('0x44')][_0x047c('0x55')]({'where':{'id':_0x26b2bb[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x4a02f7,null))['then'](function(_0x5cb19a){if(_0x5cb19a){return _0x5cb19a[_0x047c('0x91')](_0x26b2bb[_0x047c('0x35')][_0x047c('0x69')]);}})['then'](function(_0x1e1649){if(_0x1e1649){return db['CmHopperBlack'][_0x047c('0x2a')]({'where':{'ListId':_0x26b2bb['query'][_0x047c('0x69')],'CampaignId':_0x26b2bb[_0x047c('0x49')]['id']}})[_0x047c('0x26')](function(){return _0x1e1649;});}})[_0x047c('0x26')](respondWithStatusCode(_0x4a02f7,null))[_0x047c('0x48')](handleError(_0x4a02f7,null));};
\ No newline at end of file
index 481ae88..7937cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x1a7846,_0x59723e){var _0x48049=function(_0x203ff6){while(--_0x203ff6){_0x1a7846['push'](_0x1a7846['shift']());}};_0x48049(++_0x59723e);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d691a7e..58b27c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7e9=['error','code','message','info','result','catch','GetCampaign','Campaign','findAll','options','attributes','include','map','model','debug','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','http','request','then','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3a544a,_0x73a217){var _0x342f1e=function(_0x519dce){while(--_0x519dce){_0x3a544a['push'](_0x3a544a['shift']());}};_0x342f1e(++_0x73a217);}(_0xc7e9,0x1ef));var _0x9c7e=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0xc7e9[_0x40220a];return _0x3903cc;};'use strict';var _=require(_0x9c7e('0x0'));var util=require(_0x9c7e('0x1'));var moment=require('moment');var BPromise=require(_0x9c7e('0x2'));var rs=require(_0x9c7e('0x3'));var fs=require('fs');var Redis=require(_0x9c7e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9c7e('0x5'));var logger=require(_0x9c7e('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9c7e('0x7'));var client=jayson['client'][_0x9c7e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2c96a9,_0x15399d,_0x39b04b){return new BPromise(function(_0x54e2c6,_0x2f97c0){return client[_0x9c7e('0x9')](_0x2c96a9,_0x39b04b)[_0x9c7e('0xa')](function(_0x21f6fe){logger['info'](_0x9c7e('0xb'),_0x15399d,_0x9c7e('0xc'));logger['debug'](_0x9c7e('0xd'),_0x15399d,'request\x20sent',JSON[_0x9c7e('0xe')](_0x21f6fe));if(_0x21f6fe[_0x9c7e('0xf')]){if(_0x21f6fe['error'][_0x9c7e('0x10')]===0x1f4){logger['error'](_0x9c7e('0xb'),_0x15399d,_0x21f6fe[_0x9c7e('0xf')][_0x9c7e('0x11')]);return _0x2f97c0(_0x21f6fe[_0x9c7e('0xf')][_0x9c7e('0x11')]);}logger['error'](_0x9c7e('0xb'),_0x15399d,_0x21f6fe[_0x9c7e('0xf')][_0x9c7e('0x11')]);return _0x54e2c6(_0x21f6fe[_0x9c7e('0xf')][_0x9c7e('0x11')]);}else{logger[_0x9c7e('0x12')]('Campaign,\x20%s,\x20%s',_0x15399d,_0x9c7e('0xc'));_0x54e2c6(_0x21f6fe[_0x9c7e('0x13')][_0x9c7e('0x11')]);}})[_0x9c7e('0x14')](function(_0x26871f){logger['error'](_0x9c7e('0xb'),_0x15399d,_0x26871f);_0x2f97c0(_0x26871f);});});}exports[_0x9c7e('0x15')]=function(_0x5af216){var _0x164412=this;return new Promise(function(_0x26dd66,_0x15d639){return db[_0x9c7e('0x16')][_0x9c7e('0x17')]({'raw':_0x5af216['options']?_0x5af216[_0x9c7e('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x5af216[_0x9c7e('0x18')]?_0x5af216['options']['where']||null:null,'attributes':_0x5af216[_0x9c7e('0x18')]?_0x5af216[_0x9c7e('0x18')][_0x9c7e('0x19')]||null:null,'limit':_0x5af216[_0x9c7e('0x18')]?_0x5af216[_0x9c7e('0x18')]['limit']||null:null,'include':_0x5af216[_0x9c7e('0x18')]?_0x5af216[_0x9c7e('0x18')][_0x9c7e('0x1a')]?_[_0x9c7e('0x1b')](_0x5af216[_0x9c7e('0x18')][_0x9c7e('0x1a')],function(_0x376e0c){return{'model':db[_0x376e0c[_0x9c7e('0x1c')]],'as':_0x376e0c['as'],'attributes':_0x376e0c[_0x9c7e('0x19')],'include':_0x376e0c[_0x9c7e('0x1a')]?_[_0x9c7e('0x1b')](_0x376e0c[_0x9c7e('0x1a')],function(_0x4a8a46){return{'model':db[_0x4a8a46[_0x9c7e('0x1c')]],'as':_0x4a8a46['as'],'attributes':_0x4a8a46[_0x9c7e('0x19')],'include':_0x4a8a46[_0x9c7e('0x1a')]?_[_0x9c7e('0x1b')](_0x4a8a46[_0x9c7e('0x1a')],function(_0x224056){return{'model':db[_0x224056['model']],'as':_0x224056['as'],'attributes':_0x224056['attributes']};}):[]};}):[]};}):[]:[]})[_0x9c7e('0xa')](function(_0x46cfe0){logger[_0x9c7e('0x12')](_0x9c7e('0x15'),_0x5af216);logger[_0x9c7e('0x1d')](_0x9c7e('0x15'),_0x5af216,JSON[_0x9c7e('0xe')](_0x46cfe0));_0x26dd66(_0x46cfe0);})[_0x9c7e('0x14')](function(_0x531544){logger[_0x9c7e('0xf')]('GetCampaign',_0x531544[_0x9c7e('0x11')],_0x5af216);_0x15d639(_0x164412['error'](0x1f4,_0x531544['message']));});});};
\ No newline at end of file
+var _0xfa7c=['raw','where','attributes','include','map','model','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error','message','info','result','GetCampaign','findAll','options'];(function(_0x323d87,_0x4ef3f9){var _0x5e8f74=function(_0x185735){while(--_0x185735){_0x323d87['push'](_0x323d87['shift']());}};_0x5e8f74(++_0x4ef3f9);}(_0xfa7c,0x15b));var _0xcfa7=function(_0x2720ac,_0x6a380b){_0x2720ac=_0x2720ac-0x0;var _0x4b32e2=_0xfa7c[_0x2720ac];return _0x4b32e2;};'use strict';var _=require(_0xcfa7('0x0'));var util=require('util');var moment=require(_0xcfa7('0x1'));var BPromise=require(_0xcfa7('0x2'));var rs=require(_0xcfa7('0x3'));var fs=require('fs');var Redis=require(_0xcfa7('0x4'));var db=require(_0xcfa7('0x5'))['db'];var utils=require(_0xcfa7('0x6'));var logger=require(_0xcfa7('0x7'))(_0xcfa7('0x8'));var config=require('../../config/environment');var jayson=require(_0xcfa7('0x9'));var client=jayson[_0xcfa7('0xa')][_0xcfa7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d5f85,_0x4b2669,_0x816590){return new BPromise(function(_0x573432,_0x376c4e){return client[_0xcfa7('0xc')](_0x1d5f85,_0x816590)[_0xcfa7('0xd')](function(_0x14e62a){logger['info'](_0xcfa7('0xe'),_0x4b2669,_0xcfa7('0xf'));logger[_0xcfa7('0x10')](_0xcfa7('0x11'),_0x4b2669,_0xcfa7('0xf'),JSON['stringify'](_0x14e62a));if(_0x14e62a['error']){if(_0x14e62a[_0xcfa7('0x12')]['code']===0x1f4){logger[_0xcfa7('0x12')](_0xcfa7('0xe'),_0x4b2669,_0x14e62a[_0xcfa7('0x12')][_0xcfa7('0x13')]);return _0x376c4e(_0x14e62a[_0xcfa7('0x12')][_0xcfa7('0x13')]);}logger[_0xcfa7('0x12')](_0xcfa7('0xe'),_0x4b2669,_0x14e62a['error'][_0xcfa7('0x13')]);return _0x573432(_0x14e62a['error']['message']);}else{logger[_0xcfa7('0x14')](_0xcfa7('0xe'),_0x4b2669,_0xcfa7('0xf'));_0x573432(_0x14e62a[_0xcfa7('0x15')][_0xcfa7('0x13')]);}})['catch'](function(_0x11d8bf){logger[_0xcfa7('0x12')](_0xcfa7('0xe'),_0x4b2669,_0x11d8bf);_0x376c4e(_0x11d8bf);});});}exports[_0xcfa7('0x16')]=function(_0x4e2a46){var _0x21f73c=this;return new Promise(function(_0x34f829,_0x558a21){return db['Campaign'][_0xcfa7('0x17')]({'raw':_0x4e2a46[_0xcfa7('0x18')]?_0x4e2a46[_0xcfa7('0x18')][_0xcfa7('0x19')]===undefined?!![]:![]:!![],'where':_0x4e2a46[_0xcfa7('0x18')]?_0x4e2a46[_0xcfa7('0x18')][_0xcfa7('0x1a')]||null:null,'attributes':_0x4e2a46[_0xcfa7('0x18')]?_0x4e2a46['options'][_0xcfa7('0x1b')]||null:null,'limit':_0x4e2a46['options']?_0x4e2a46['options']['limit']||null:null,'include':_0x4e2a46[_0xcfa7('0x18')]?_0x4e2a46['options'][_0xcfa7('0x1c')]?_[_0xcfa7('0x1d')](_0x4e2a46[_0xcfa7('0x18')][_0xcfa7('0x1c')],function(_0xdd7c11){return{'model':db[_0xdd7c11[_0xcfa7('0x1e')]],'as':_0xdd7c11['as'],'attributes':_0xdd7c11[_0xcfa7('0x1b')],'include':_0xdd7c11[_0xcfa7('0x1c')]?_['map'](_0xdd7c11[_0xcfa7('0x1c')],function(_0x222ce2){return{'model':db[_0x222ce2[_0xcfa7('0x1e')]],'as':_0x222ce2['as'],'attributes':_0x222ce2[_0xcfa7('0x1b')],'include':_0x222ce2['include']?_[_0xcfa7('0x1d')](_0x222ce2[_0xcfa7('0x1c')],function(_0x3fece6){return{'model':db[_0x3fece6[_0xcfa7('0x1e')]],'as':_0x3fece6['as'],'attributes':_0x3fece6[_0xcfa7('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x458cc6){logger[_0xcfa7('0x14')](_0xcfa7('0x16'),_0x4e2a46);logger[_0xcfa7('0x10')]('GetCampaign',_0x4e2a46,JSON['stringify'](_0x458cc6));_0x34f829(_0x458cc6);})['catch'](function(_0x10f85f){logger[_0xcfa7('0x12')](_0xcfa7('0x16'),_0x10f85f['message'],_0x4e2a46);_0x558a21(_0x21f73c['error'](0x1f4,_0x10f85f[_0xcfa7('0x13')]));});});};
\ No newline at end of file
index 1cc03c3..8ba2099 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fa4=['addLists','addBlackLists','put','delete','removeLists','removeBlackLists','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated','/:id','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperFinals','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','/:id/clone','clone'];(function(_0x3020cd,_0x1353ec){var _0x57e0aa=function(_0x4172f9){while(--_0x4172f9){_0x3020cd['push'](_0x3020cd['shift']());}};_0x57e0aa(++_0x1353ec);}(_0x3fa4,0x87));var _0x43fa=function(_0x49d427,_0x4a4ef8){_0x49d427=_0x49d427-0x0;var _0x319910=_0x3fa4[_0x49d427];return _0x319910;};'use strict';var multer=require('multer');var util=require(_0x43fa('0x0'));var path=require(_0x43fa('0x1'));var timeout=require(_0x43fa('0x2'));var express=require(_0x43fa('0x3'));var router=express[_0x43fa('0x4')]();var fs_extra=require(_0x43fa('0x5'));var auth=require(_0x43fa('0x6'));var interaction=require(_0x43fa('0x7'));var config=require(_0x43fa('0x8'));var controller=require(_0x43fa('0x9'));router[_0x43fa('0xa')]('/',auth[_0x43fa('0xb')](),controller['index']);router[_0x43fa('0xa')](_0x43fa('0xc'),auth['isAuthenticated'](),controller['show']);router['get'](_0x43fa('0xd'),auth[_0x43fa('0xb')](),controller[_0x43fa('0xe')]);router[_0x43fa('0xa')](_0x43fa('0xf'),auth[_0x43fa('0xb')](),controller['getHopperHistories']);router[_0x43fa('0xa')]('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0x43fa('0x10')]);router[_0x43fa('0xa')]('/:id/hopper_black',auth['isAuthenticated'](),controller[_0x43fa('0x11')]);router[_0x43fa('0xa')](_0x43fa('0x12'),auth[_0x43fa('0xb')](),controller[_0x43fa('0x13')]);router[_0x43fa('0xa')](_0x43fa('0x14'),auth[_0x43fa('0xb')](),controller[_0x43fa('0x15')]);router[_0x43fa('0x16')]('/',auth[_0x43fa('0xb')](),controller['create']);router[_0x43fa('0x16')](_0x43fa('0x17'),auth[_0x43fa('0xb')](),controller[_0x43fa('0x18')]);router[_0x43fa('0x16')](_0x43fa('0x12'),auth['isAuthenticated'](),controller[_0x43fa('0x19')]);router[_0x43fa('0x16')](_0x43fa('0x14'),auth[_0x43fa('0xb')](),controller[_0x43fa('0x1a')]);router[_0x43fa('0x1b')](_0x43fa('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x43fa('0x1c')](_0x43fa('0xc'),auth[_0x43fa('0xb')](),controller['destroy']);router['delete']('/:id/lists',auth[_0x43fa('0xb')](),controller[_0x43fa('0x1d')]);router[_0x43fa('0x1c')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0x43fa('0x1e')]);module[_0x43fa('0x1f')]=router;
\ No newline at end of file
+var _0xac52=['removeBlackLists','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./campaign.controller','get','isAuthenticated','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','/:id/clone','clone','addLists','put','delete','destroy','removeLists'];(function(_0x3fedc0,_0x558857){var _0xd3f5e0=function(_0x437704){while(--_0x437704){_0x3fedc0['push'](_0x3fedc0['shift']());}};_0xd3f5e0(++_0x558857);}(_0xac52,0x122));var _0x2ac5=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xac52[_0xf50820];return _0x2a9b10;};'use strict';var multer=require('multer');var util=require(_0x2ac5('0x0'));var path=require(_0x2ac5('0x1'));var timeout=require(_0x2ac5('0x2'));var express=require(_0x2ac5('0x3'));var router=express[_0x2ac5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2ac5('0x5'));var interaction=require(_0x2ac5('0x6'));var config=require('../../config/environment');var controller=require(_0x2ac5('0x7'));router[_0x2ac5('0x8')]('/',auth[_0x2ac5('0x9')](),controller['index']);router['get'](_0x2ac5('0xa'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0xb')]);router[_0x2ac5('0x8')](_0x2ac5('0xc'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0xd')]);router[_0x2ac5('0x8')](_0x2ac5('0xe'),auth[_0x2ac5('0x9')](),controller['getHopperHistories']);router[_0x2ac5('0x8')](_0x2ac5('0xf'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x10')]);router['get']('/:id/hopper_black',auth['isAuthenticated'](),controller[_0x2ac5('0x11')]);router[_0x2ac5('0x8')](_0x2ac5('0x12'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x13')]);router['get'](_0x2ac5('0x14'),auth['isAuthenticated'](),controller[_0x2ac5('0x15')]);router[_0x2ac5('0x16')]('/',auth[_0x2ac5('0x9')](),controller['create']);router['post'](_0x2ac5('0x17'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x18')]);router[_0x2ac5('0x16')](_0x2ac5('0x12'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x19')]);router[_0x2ac5('0x16')](_0x2ac5('0x14'),auth[_0x2ac5('0x9')](),controller['addBlackLists']);router[_0x2ac5('0x1a')](_0x2ac5('0xa'),auth[_0x2ac5('0x9')](),controller['update']);router[_0x2ac5('0x1b')](_0x2ac5('0xa'),auth['isAuthenticated'](),controller[_0x2ac5('0x1c')]);router[_0x2ac5('0x1b')](_0x2ac5('0x12'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x1d')]);router[_0x2ac5('0x1b')](_0x2ac5('0x14'),auth['isAuthenticated'](),controller[_0x2ac5('0x1e')]);module[_0x2ac5('0x1f')]=router;
\ No newline at end of file
index 672111a..35858ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2273=['key','sequelize','STRING','TEXT','VIRTUAL'];(function(_0x3ca825,_0x47905a){var _0x89f1ca=function(_0x358b32){while(--_0x358b32){_0x3ca825['push'](_0x3ca825['shift']());}};_0x89f1ca(++_0x47905a);}(_0x2273,0xec));var _0x3227=function(_0x2bd20a,_0x1a9924){_0x2bd20a=_0x2bd20a-0x0;var _0x373500=_0x2273[_0x2bd20a];return _0x373500;};'use strict';var Sequelize=require(_0x3227('0x0'));module['exports']={'key':{'type':Sequelize[_0x3227('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0x3227('0x2')],'length':'medium','allowNull':![]},'description':{'type':Sequelize[_0x3227('0x1')]},'name':{'type':Sequelize[_0x3227('0x3')],'get':function(){return this['getDataValue'](_0x3227('0x4'));}}};
\ No newline at end of file
+var _0xb3b7=['exports','TEXT','STRING','VIRTUAL','getDataValue','key'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0xb3b7,0x1ec));var _0x7b3b=function(_0x26fd9f,_0x6848d0){_0x26fd9f=_0x26fd9f-0x0;var _0x24055c=_0xb3b7[_0x26fd9f];return _0x24055c;};'use strict';var Sequelize=require('sequelize');module[_0x7b3b('0x0')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x7b3b('0x1')],'length':'medium','allowNull':![]},'description':{'type':Sequelize[_0x7b3b('0x2')]},'name':{'type':Sequelize[_0x7b3b('0x3')],'get':function(){return this[_0x7b3b('0x4')](_0x7b3b('0x5'));}}};
\ No newline at end of file
index af15577..6f15285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa2e=['catch','show','body','find','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','CannedAnswers','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','name','send','CannedAnswer','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','attributes','fields','length','query','hasOwnProperty','nolimit','order','where','pick','filter','options','includeAll','include','rows'];(function(_0x4b6c62,_0x3a7a89){var _0x377eb6=function(_0x5a1cd6){while(--_0x5a1cd6){_0x4b6c62['push'](_0x4b6c62['shift']());}};_0x377eb6(++_0x3a7a89);}(_0xaa2e,0xc1));var _0xeaa2=function(_0x54fa80,_0x1c2ac9){_0x54fa80=_0x54fa80-0x0;var _0x4c894d=_0xaa2e[_0x54fa80];return _0x4c894d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeaa2('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xeaa2('0x1'));var BPromise=require(_0xeaa2('0x2'));var Mustache=require(_0xeaa2('0x3'));var util=require(_0xeaa2('0x4'));var path=require('path');var sox=require(_0xeaa2('0x5'));var csv=require(_0xeaa2('0x6'));var ejs=require(_0xeaa2('0x7'));var fs=require('fs');var fs_extra=require(_0xeaa2('0x8'));var _=require(_0xeaa2('0x9'));var squel=require(_0xeaa2('0xa'));var crypto=require('crypto');var jsforce=require(_0xeaa2('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xeaa2('0x6'));var querystring=require('querystring');var Papa=require(_0xeaa2('0xc'));var Redis=require(_0xeaa2('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xeaa2('0xe'));var hardwareService=require(_0xeaa2('0xf'));var logger=require(_0xeaa2('0x10'))(_0xeaa2('0x11'));var utils=require(_0xeaa2('0x12'));var config=require(_0xeaa2('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xeaa2('0x14'))['db'];function respondWithStatusCode(_0x42ee49,_0x378a12){_0x378a12=_0x378a12||0xcc;return function(_0x578cfd){if(_0x578cfd){return _0x42ee49[_0xeaa2('0x15')](_0x378a12);}return _0x42ee49[_0xeaa2('0x16')](_0x378a12)[_0xeaa2('0x17')]();};}function respondWithResult(_0x3d2c78,_0x339dea){_0x339dea=_0x339dea||0xc8;return function(_0x54eef6){if(_0x54eef6){return _0x3d2c78[_0xeaa2('0x16')](_0x339dea)[_0xeaa2('0x18')](_0x54eef6);}};}function respondWithFilteredResult(_0x425d4d,_0x1bff0e){return function(_0x316bc5){if(_0x316bc5){var _0x1ad1f7=typeof _0x1bff0e[_0xeaa2('0x19')]==='undefined'&&typeof _0x1bff0e[_0xeaa2('0x1a')]==='undefined';var _0x3b4dd3=_0x316bc5[_0xeaa2('0x1b')];var _0x362794=_0x1ad1f7?0x0:_0x1bff0e['offset'];var _0x23cfe8=_0x1ad1f7?_0x316bc5[_0xeaa2('0x1b')]:_0x1bff0e[_0xeaa2('0x19')]+_0x1bff0e[_0xeaa2('0x1a')];var _0x5f5d30;if(_0x23cfe8>=_0x3b4dd3){_0x23cfe8=_0x3b4dd3;_0x5f5d30=0xc8;}else{_0x5f5d30=0xce;}_0x425d4d[_0xeaa2('0x16')](_0x5f5d30);return _0x425d4d[_0xeaa2('0x1c')](_0xeaa2('0x1d'),_0x362794+'-'+_0x23cfe8+'/'+_0x3b4dd3)[_0xeaa2('0x18')](_0x316bc5);}return null;};}function patchUpdates(_0x3a832a){return function(_0x26c197){try{jsonpatch[_0xeaa2('0x1e')](_0x26c197,_0x3a832a,!![]);}catch(_0x1986b3){return BPromise[_0xeaa2('0x1f')](_0x1986b3);}return _0x26c197[_0xeaa2('0x20')]();};}function saveUpdates(_0x28f166,_0x3ecaa6){return function(_0x4b334b){if(_0x4b334b){return _0x4b334b[_0xeaa2('0x21')](_0x28f166)[_0xeaa2('0x22')](function(_0x4ed7ab){return _0x4ed7ab;});}return null;};}function removeEntity(_0x31b5fc,_0x34c1a7){return function(_0x4a2890){if(_0x4a2890){return _0x4a2890[_0xeaa2('0x23')]()[_0xeaa2('0x22')](function(){var _0x2b18f5=_0x4a2890[_0xeaa2('0x24')]({'plain':!![]});var _0x5df68f='CannedAnswers';return db[_0xeaa2('0x25')][_0xeaa2('0x23')]({'where':{'type':_0x5df68f,'resourceId':_0x2b18f5['id']}})[_0xeaa2('0x22')](function(){return _0x4a2890;});})[_0xeaa2('0x22')](function(){_0x31b5fc['status'](0xcc)[_0xeaa2('0x17')]();});}};}function handleEntityNotFound(_0x2a6309,_0x42ebce){return function(_0x5f4536){if(!_0x5f4536){_0x2a6309[_0xeaa2('0x15')](0x194);}return _0x5f4536;};}function handleError(_0x4e1851,_0x4af6c9){_0x4af6c9=_0x4af6c9||0x1f4;return function(_0x2f5216){logger[_0xeaa2('0x26')](_0x2f5216['stack']);if(_0x2f5216[_0xeaa2('0x27')]){delete _0x2f5216[_0xeaa2('0x27')];}_0x4e1851[_0xeaa2('0x16')](_0x4af6c9)[_0xeaa2('0x28')](_0x2f5216);};}exports['index']=function(_0x1a969d,_0x5230d5){var _0x2959b0={},_0x224bfe={},_0x465a55={'count':0x0,'rows':[]};var _0x24cdaf=_['map'](db[_0xeaa2('0x29')][_0xeaa2('0x2a')],function(_0x1068c7){return{'name':_0x1068c7[_0xeaa2('0x2b')],'type':_0x1068c7[_0xeaa2('0x2c')][_0xeaa2('0x2d')]};});_0x224bfe[_0xeaa2('0x2e')]=_[_0xeaa2('0x2f')](_0x24cdaf,'name');_0x224bfe['query']=_[_0xeaa2('0x30')](_0x1a969d['query']);_0x224bfe[_0xeaa2('0x31')]=_[_0xeaa2('0x32')](_0x224bfe['model'],_0x224bfe['query']);_0x2959b0[_0xeaa2('0x33')]=_['intersection'](_0x224bfe[_0xeaa2('0x2e')],qs[_0xeaa2('0x34')](_0x1a969d['query'][_0xeaa2('0x34')]));_0x2959b0[_0xeaa2('0x33')]=_0x2959b0[_0xeaa2('0x33')][_0xeaa2('0x35')]?_0x2959b0[_0xeaa2('0x33')]:_0x224bfe['model'];if(!_0x1a969d[_0xeaa2('0x36')][_0xeaa2('0x37')](_0xeaa2('0x38'))){_0x2959b0['limit']=qs[_0xeaa2('0x1a')](_0x1a969d['query'][_0xeaa2('0x1a')]);_0x2959b0[_0xeaa2('0x19')]=qs['offset'](_0x1a969d['query'][_0xeaa2('0x19')]);}_0x2959b0[_0xeaa2('0x39')]=qs['sort'](_0x1a969d[_0xeaa2('0x36')]['sort']);_0x2959b0[_0xeaa2('0x3a')]=qs[_0xeaa2('0x31')](_[_0xeaa2('0x3b')](_0x1a969d[_0xeaa2('0x36')],_0x224bfe[_0xeaa2('0x31')]),_0x24cdaf);if(_0x1a969d[_0xeaa2('0x36')][_0xeaa2('0x3c')]){_0x2959b0[_0xeaa2('0x3a')]=_['merge'](_0x2959b0[_0xeaa2('0x3a')],{'$or':[{'key':{'$like':'%'+_0x1a969d[_0xeaa2('0x36')]['filter']+'%'}},{'value':{'$like':'%'+_0x1a969d['query'][_0xeaa2('0x3c')]+'%'}}]});}_0x2959b0=_['merge']({},_0x2959b0,_0x1a969d[_0xeaa2('0x3d')]);var _0x3995bd={'where':_0x2959b0[_0xeaa2('0x3a')]};return db[_0xeaa2('0x29')][_0xeaa2('0x1b')](_0x3995bd)[_0xeaa2('0x22')](function(_0x3360d0){_0x465a55[_0xeaa2('0x1b')]=_0x3360d0;if(_0x1a969d[_0xeaa2('0x36')][_0xeaa2('0x3e')]){_0x2959b0[_0xeaa2('0x3f')]=[{'all':!![]}];}return db[_0xeaa2('0x29')]['findAll'](_0x2959b0);})[_0xeaa2('0x22')](function(_0xa46811){_0x465a55[_0xeaa2('0x40')]=_0xa46811;return _0x465a55;})[_0xeaa2('0x22')](respondWithFilteredResult(_0x5230d5,_0x2959b0))[_0xeaa2('0x41')](handleError(_0x5230d5,null));};exports[_0xeaa2('0x42')]=function(_0x4c4650,_0x5987ec){var _0x44516e={'raw':!![],'where':{'id':_0x4c4650['params']['id']}},_0x53c65d={};_0x53c65d['model']=_[_0xeaa2('0x30')](db['CannedAnswer']['rawAttributes']);_0x53c65d[_0xeaa2('0x36')]=_['keys'](_0x4c4650[_0xeaa2('0x36')]);_0x53c65d[_0xeaa2('0x31')]=_[_0xeaa2('0x32')](_0x53c65d[_0xeaa2('0x2e')],_0x53c65d[_0xeaa2('0x36')]);_0x44516e[_0xeaa2('0x33')]=_['intersection'](_0x53c65d['model'],qs[_0xeaa2('0x34')](_0x4c4650['query'][_0xeaa2('0x34')]));_0x44516e[_0xeaa2('0x33')]=_0x44516e[_0xeaa2('0x33')][_0xeaa2('0x35')]?_0x44516e['attributes']:_0x53c65d[_0xeaa2('0x2e')];if(_0x4c4650['query']['includeAll']){_0x44516e[_0xeaa2('0x3f')]=[{'all':!![]}];}_0x44516e=_['merge']({},_0x44516e,_0x4c4650[_0xeaa2('0x3d')]);return db[_0xeaa2('0x29')]['find'](_0x44516e)[_0xeaa2('0x22')](handleEntityNotFound(_0x5987ec,null))[_0xeaa2('0x22')](respondWithResult(_0x5987ec,null))['catch'](handleError(_0x5987ec,null));};exports[_0xeaa2('0x21')]=function(_0x35e8cf,_0x501b7a){if(_0x35e8cf[_0xeaa2('0x43')]['id']){delete _0x35e8cf['body']['id'];}return db[_0xeaa2('0x29')][_0xeaa2('0x44')]({'where':{'id':_0x35e8cf[_0xeaa2('0x45')]['id']}})[_0xeaa2('0x22')](handleEntityNotFound(_0x501b7a,null))[_0xeaa2('0x22')](saveUpdates(_0x35e8cf['body'],null))[_0xeaa2('0x22')](respondWithResult(_0x501b7a,null))[_0xeaa2('0x41')](handleError(_0x501b7a,null));};exports['destroy']=function(_0x29d710,_0x11f7f8){return db['CannedAnswer'][_0xeaa2('0x44')]({'where':{'id':_0x29d710[_0xeaa2('0x45')]['id']}})['then'](handleEntityNotFound(_0x11f7f8,null))[_0xeaa2('0x22')](removeEntity(_0x11f7f8,null))[_0xeaa2('0x41')](handleError(_0x11f7f8,null));};exports[_0xeaa2('0x46')]=function(_0x40a847,_0x364e42){var _0x44361c={'key':_0x40a847[_0xeaa2('0x43')]['key']};if(_0x40a847[_0xeaa2('0x43')][_0xeaa2('0x47')]){_0x44361c[_0xeaa2('0x47')]=_0x40a847[_0xeaa2('0x43')][_0xeaa2('0x47')];}else if(_0x40a847[_0xeaa2('0x43')]['SmsAccountId']){_0x44361c[_0xeaa2('0x48')]=_0x40a847[_0xeaa2('0x43')][_0xeaa2('0x48')];}else if(_0x40a847[_0xeaa2('0x43')][_0xeaa2('0x49')]){_0x44361c['OpenchannelAccountId']=_0x40a847[_0xeaa2('0x43')][_0xeaa2('0x49')];}else if(_0x40a847[_0xeaa2('0x43')][_0xeaa2('0x4a')]){_0x44361c[_0xeaa2('0x4a')]=_0x40a847[_0xeaa2('0x43')][_0xeaa2('0x4a')];}return db['CannedAnswer']['find']({'where':_0x44361c})[_0xeaa2('0x22')](function(_0x1f484e){if(_0x1f484e){throw new db[(_0xeaa2('0x4b'))][(_0xeaa2('0x4c'))](_0xeaa2('0x4d'));}return db[_0xeaa2('0x29')][_0xeaa2('0x46')](_0x40a847[_0xeaa2('0x43')]);})[_0xeaa2('0x22')](function(_0x912208){var _0x30dd27=_0x40a847[_0xeaa2('0x4e')][_0xeaa2('0x24')]({'plain':!![]});if(!_0x30dd27)throw new Error(_0xeaa2('0x4f'));if(_0x30dd27[_0xeaa2('0x50')]===_0xeaa2('0x4e')){var _0x2d8b1d=_0x912208[_0xeaa2('0x24')]({'plain':!![]});return db[_0xeaa2('0x51')]['find']({'where':{'name':_0xeaa2('0x52'),'userProfileId':_0x30dd27[_0xeaa2('0x53')]},'raw':!![]})['then'](function(_0x54d3d8){if(_0x54d3d8&&_0x54d3d8[_0xeaa2('0x54')]===0x0){return db['UserProfileResource'][_0xeaa2('0x46')]({'name':_0x2d8b1d[_0xeaa2('0x27')],'resourceId':_0x2d8b1d['id'],'type':_0x54d3d8[_0xeaa2('0x27')],'sectionId':_0x54d3d8['id']},{})[_0xeaa2('0x22')](function(){return _0x912208;});}else{return _0x912208;}})[_0xeaa2('0x41')](function(_0x3f6c01){logger['error'](_0xeaa2('0x55'),_0x3f6c01);throw _0x3f6c01;});}return _0x912208;})[_0xeaa2('0x22')](respondWithResult(_0x364e42,0xc9))[_0xeaa2('0x41')](handleError(_0x364e42,null));};
\ No newline at end of file
+var _0x06da=['apply','reject','save','update','then','destroy','get','UserProfileResource','end','error','name','index','map','CannedAnswer','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','rows','show','rawAttributes','includeAll','options','find','body','params','catch','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','CannedAnswers','userProfileId','autoAssociation','create','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','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../mysqldb','sendStatus','status','offset','count','limit','set','Content-Range','json'];(function(_0x21331a,_0x57fc48){var _0x325c55=function(_0x770dfa){while(--_0x770dfa){_0x21331a['push'](_0x21331a['shift']());}};_0x325c55(++_0x57fc48);}(_0x06da,0x192));var _0xa06d=function(_0x4cede8,_0x56b6b8){_0x4cede8=_0x4cede8-0x0;var _0x4be89a=_0x06da[_0x4cede8];return _0x4be89a;};'use strict';var emlformat=require(_0xa06d('0x0'));var rimraf=require(_0xa06d('0x1'));var zipdir=require(_0xa06d('0x2'));var jsonpatch=require(_0xa06d('0x3'));var rp=require(_0xa06d('0x4'));var moment=require(_0xa06d('0x5'));var BPromise=require(_0xa06d('0x6'));var Mustache=require(_0xa06d('0x7'));var util=require(_0xa06d('0x8'));var path=require(_0xa06d('0x9'));var sox=require(_0xa06d('0xa'));var csv=require(_0xa06d('0xb'));var ejs=require(_0xa06d('0xc'));var fs=require('fs');var fs_extra=require(_0xa06d('0xd'));var _=require(_0xa06d('0xe'));var squel=require(_0xa06d('0xf'));var crypto=require(_0xa06d('0x10'));var jsforce=require(_0xa06d('0x11'));var deskjs=require(_0xa06d('0x12'));var toCsv=require(_0xa06d('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa06d('0x13'));var qs=require(_0xa06d('0x14'));var as=require(_0xa06d('0x15'));var hardwareService=require(_0xa06d('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0xa06d('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa06d('0x18'))['db'];function respondWithStatusCode(_0x317725,_0x15736d){_0x15736d=_0x15736d||0xcc;return function(_0x5326c1){if(_0x5326c1){return _0x317725[_0xa06d('0x19')](_0x15736d);}return _0x317725[_0xa06d('0x1a')](_0x15736d)['end']();};}function respondWithResult(_0x525ba9,_0x318530){_0x318530=_0x318530||0xc8;return function(_0x5a2242){if(_0x5a2242){return _0x525ba9[_0xa06d('0x1a')](_0x318530)['json'](_0x5a2242);}};}function respondWithFilteredResult(_0x317052,_0x400a95){return function(_0x2136a1){if(_0x2136a1){var _0x4fa531=typeof _0x400a95[_0xa06d('0x1b')]==='undefined'&&typeof _0x400a95['limit']==='undefined';var _0x3cd9bb=_0x2136a1[_0xa06d('0x1c')];var _0x47cff1=_0x4fa531?0x0:_0x400a95[_0xa06d('0x1b')];var _0x49d143=_0x4fa531?_0x2136a1[_0xa06d('0x1c')]:_0x400a95[_0xa06d('0x1b')]+_0x400a95[_0xa06d('0x1d')];var _0x1e6949;if(_0x49d143>=_0x3cd9bb){_0x49d143=_0x3cd9bb;_0x1e6949=0xc8;}else{_0x1e6949=0xce;}_0x317052['status'](_0x1e6949);return _0x317052[_0xa06d('0x1e')](_0xa06d('0x1f'),_0x47cff1+'-'+_0x49d143+'/'+_0x3cd9bb)[_0xa06d('0x20')](_0x2136a1);}return null;};}function patchUpdates(_0x4abdaf){return function(_0x21c869){try{jsonpatch[_0xa06d('0x21')](_0x21c869,_0x4abdaf,!![]);}catch(_0x9ef367){return BPromise[_0xa06d('0x22')](_0x9ef367);}return _0x21c869[_0xa06d('0x23')]();};}function saveUpdates(_0x21d515,_0x1835f1){return function(_0x1aa614){if(_0x1aa614){return _0x1aa614[_0xa06d('0x24')](_0x21d515)[_0xa06d('0x25')](function(_0x5f4e26){return _0x5f4e26;});}return null;};}function removeEntity(_0x1b400d,_0x49ce61){return function(_0x47452e){if(_0x47452e){return _0x47452e[_0xa06d('0x26')]()[_0xa06d('0x25')](function(){var _0x20f14a=_0x47452e[_0xa06d('0x27')]({'plain':!![]});var _0x27a230='CannedAnswers';return db[_0xa06d('0x28')][_0xa06d('0x26')]({'where':{'type':_0x27a230,'resourceId':_0x20f14a['id']}})[_0xa06d('0x25')](function(){return _0x47452e;});})[_0xa06d('0x25')](function(){_0x1b400d[_0xa06d('0x1a')](0xcc)[_0xa06d('0x29')]();});}};}function handleEntityNotFound(_0x46036a,_0x5cf16c){return function(_0x16628f){if(!_0x16628f){_0x46036a['sendStatus'](0x194);}return _0x16628f;};}function handleError(_0xb9c8b4,_0x110ca0){_0x110ca0=_0x110ca0||0x1f4;return function(_0x30ee15){logger[_0xa06d('0x2a')](_0x30ee15['stack']);if(_0x30ee15['name']){delete _0x30ee15[_0xa06d('0x2b')];}_0xb9c8b4[_0xa06d('0x1a')](_0x110ca0)['send'](_0x30ee15);};}exports[_0xa06d('0x2c')]=function(_0x12da27,_0x354aa5){var _0x4ee2b2={},_0x380018={},_0x222289={'count':0x0,'rows':[]};var _0x2be185=_[_0xa06d('0x2d')](db[_0xa06d('0x2e')]['rawAttributes'],function(_0x3b4876){return{'name':_0x3b4876['fieldName'],'type':_0x3b4876[_0xa06d('0x2f')]['key']};});_0x380018[_0xa06d('0x30')]=_[_0xa06d('0x2d')](_0x2be185,'name');_0x380018[_0xa06d('0x31')]=_[_0xa06d('0x32')](_0x12da27['query']);_0x380018[_0xa06d('0x33')]=_[_0xa06d('0x34')](_0x380018[_0xa06d('0x30')],_0x380018[_0xa06d('0x31')]);_0x4ee2b2[_0xa06d('0x35')]=_['intersection'](_0x380018[_0xa06d('0x30')],qs[_0xa06d('0x36')](_0x12da27[_0xa06d('0x31')]['fields']));_0x4ee2b2[_0xa06d('0x35')]=_0x4ee2b2['attributes'][_0xa06d('0x37')]?_0x4ee2b2[_0xa06d('0x35')]:_0x380018[_0xa06d('0x30')];if(!_0x12da27[_0xa06d('0x31')][_0xa06d('0x38')]('nolimit')){_0x4ee2b2[_0xa06d('0x1d')]=qs['limit'](_0x12da27[_0xa06d('0x31')]['limit']);_0x4ee2b2[_0xa06d('0x1b')]=qs[_0xa06d('0x1b')](_0x12da27[_0xa06d('0x31')][_0xa06d('0x1b')]);}_0x4ee2b2['order']=qs[_0xa06d('0x39')](_0x12da27[_0xa06d('0x31')][_0xa06d('0x39')]);_0x4ee2b2[_0xa06d('0x3a')]=qs['filters'](_[_0xa06d('0x3b')](_0x12da27[_0xa06d('0x31')],_0x380018['filters']),_0x2be185);if(_0x12da27[_0xa06d('0x31')]['filter']){_0x4ee2b2[_0xa06d('0x3a')]=_['merge'](_0x4ee2b2['where'],{'$or':[{'key':{'$like':'%'+_0x12da27[_0xa06d('0x31')]['filter']+'%'}},{'value':{'$like':'%'+_0x12da27[_0xa06d('0x31')][_0xa06d('0x3c')]+'%'}}]});}_0x4ee2b2=_[_0xa06d('0x3d')]({},_0x4ee2b2,_0x12da27['options']);var _0xeaf615={'where':_0x4ee2b2[_0xa06d('0x3a')]};return db[_0xa06d('0x2e')][_0xa06d('0x1c')](_0xeaf615)['then'](function(_0x395fc5){_0x222289[_0xa06d('0x1c')]=_0x395fc5;if(_0x12da27[_0xa06d('0x31')]['includeAll']){_0x4ee2b2['include']=[{'all':!![]}];}return db[_0xa06d('0x2e')]['findAll'](_0x4ee2b2);})['then'](function(_0x1e8a75){_0x222289[_0xa06d('0x3e')]=_0x1e8a75;return _0x222289;})[_0xa06d('0x25')](respondWithFilteredResult(_0x354aa5,_0x4ee2b2))['catch'](handleError(_0x354aa5,null));};exports[_0xa06d('0x3f')]=function(_0x297661,_0x6ee7db){var _0x2936e2={'raw':!![],'where':{'id':_0x297661['params']['id']}},_0x18546f={};_0x18546f[_0xa06d('0x30')]=_[_0xa06d('0x32')](db[_0xa06d('0x2e')][_0xa06d('0x40')]);_0x18546f[_0xa06d('0x31')]=_[_0xa06d('0x32')](_0x297661['query']);_0x18546f[_0xa06d('0x33')]=_['intersection'](_0x18546f[_0xa06d('0x30')],_0x18546f[_0xa06d('0x31')]);_0x2936e2[_0xa06d('0x35')]=_[_0xa06d('0x34')](_0x18546f['model'],qs[_0xa06d('0x36')](_0x297661[_0xa06d('0x31')][_0xa06d('0x36')]));_0x2936e2[_0xa06d('0x35')]=_0x2936e2[_0xa06d('0x35')]['length']?_0x2936e2[_0xa06d('0x35')]:_0x18546f[_0xa06d('0x30')];if(_0x297661[_0xa06d('0x31')][_0xa06d('0x41')]){_0x2936e2['include']=[{'all':!![]}];}_0x2936e2=_[_0xa06d('0x3d')]({},_0x2936e2,_0x297661[_0xa06d('0x42')]);return db['CannedAnswer'][_0xa06d('0x43')](_0x2936e2)[_0xa06d('0x25')](handleEntityNotFound(_0x6ee7db,null))[_0xa06d('0x25')](respondWithResult(_0x6ee7db,null))['catch'](handleError(_0x6ee7db,null));};exports[_0xa06d('0x24')]=function(_0x44784c,_0x32a72e){if(_0x44784c[_0xa06d('0x44')]['id']){delete _0x44784c[_0xa06d('0x44')]['id'];}return db[_0xa06d('0x2e')][_0xa06d('0x43')]({'where':{'id':_0x44784c[_0xa06d('0x45')]['id']}})[_0xa06d('0x25')](handleEntityNotFound(_0x32a72e,null))[_0xa06d('0x25')](saveUpdates(_0x44784c[_0xa06d('0x44')],null))[_0xa06d('0x25')](respondWithResult(_0x32a72e,null))[_0xa06d('0x46')](handleError(_0x32a72e,null));};exports[_0xa06d('0x26')]=function(_0x1fc621,_0x5884a1){return db[_0xa06d('0x2e')]['find']({'where':{'id':_0x1fc621[_0xa06d('0x45')]['id']}})[_0xa06d('0x25')](handleEntityNotFound(_0x5884a1,null))[_0xa06d('0x25')](removeEntity(_0x5884a1,null))[_0xa06d('0x46')](handleError(_0x5884a1,null));};exports['create']=function(_0x9685c7,_0x172961){var _0x3024f8={'key':_0x9685c7[_0xa06d('0x44')][_0xa06d('0x47')]};if(_0x9685c7[_0xa06d('0x44')]['MailAccountId']){_0x3024f8[_0xa06d('0x48')]=_0x9685c7[_0xa06d('0x44')]['MailAccountId'];}else if(_0x9685c7[_0xa06d('0x44')][_0xa06d('0x49')]){_0x3024f8[_0xa06d('0x49')]=_0x9685c7[_0xa06d('0x44')]['SmsAccountId'];}else if(_0x9685c7[_0xa06d('0x44')][_0xa06d('0x4a')]){_0x3024f8[_0xa06d('0x4a')]=_0x9685c7[_0xa06d('0x44')][_0xa06d('0x4a')];}else if(_0x9685c7['body']['ChatWebsiteId']){_0x3024f8[_0xa06d('0x4b')]=_0x9685c7[_0xa06d('0x44')][_0xa06d('0x4b')];}return db[_0xa06d('0x2e')][_0xa06d('0x43')]({'where':_0x3024f8})[_0xa06d('0x25')](function(_0x4aec5d){if(_0x4aec5d){throw new db[(_0xa06d('0x4c'))][(_0xa06d('0x4d'))](_0xa06d('0x4e'));}return db[_0xa06d('0x2e')]['create'](_0x9685c7[_0xa06d('0x44')]);})['then'](function(_0x227055){var _0x4a0279=_0x9685c7[_0xa06d('0x4f')][_0xa06d('0x27')]({'plain':!![]});if(!_0x4a0279)throw new Error(_0xa06d('0x50'));if(_0x4a0279['role']==='user'){var _0x46967c=_0x227055[_0xa06d('0x27')]({'plain':!![]});return db[_0xa06d('0x51')][_0xa06d('0x43')]({'where':{'name':_0xa06d('0x52'),'userProfileId':_0x4a0279[_0xa06d('0x53')]},'raw':!![]})[_0xa06d('0x25')](function(_0x44d629){if(_0x44d629&&_0x44d629[_0xa06d('0x54')]===0x0){return db[_0xa06d('0x28')][_0xa06d('0x55')]({'name':_0x46967c[_0xa06d('0x2b')],'resourceId':_0x46967c['id'],'type':_0x44d629[_0xa06d('0x2b')],'sectionId':_0x44d629['id']},{})[_0xa06d('0x25')](function(){return _0x227055;});}else{return _0x227055;}})[_0xa06d('0x46')](function(_0x3c1895){logger[_0xa06d('0x2a')](_0xa06d('0x56'),_0x3c1895);throw _0x3c1895;});}return _0x227055;})[_0xa06d('0x25')](respondWithResult(_0x172961,0xc9))['catch'](handleError(_0x172961,null));};
\ No newline at end of file
index 17d782d..6b5b99f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbf6=['api','moment','bluebird','path','../../config/environment','./cannedAnswer.attributes','exports','define','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0x19d2c8,_0x3eaadc){var _0x14805a=function(_0x181afd){while(--_0x181afd){_0x19d2c8['push'](_0x19d2c8['shift']());}};_0x14805a(++_0x3eaadc);}(_0xbbf6,0x143));var _0x6bbf=function(_0x227c85,_0x1f839c){_0x227c85=_0x227c85-0x0;var _0x3de7ca=_0xbbf6[_0x227c85];return _0x3de7ca;};'use strict';var _=require(_0x6bbf('0x0'));var util=require('util');var logger=require(_0x6bbf('0x1'))(_0x6bbf('0x2'));var moment=require(_0x6bbf('0x3'));var BPromise=require(_0x6bbf('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6bbf('0x5'));var rimraf=require('rimraf');var config=require(_0x6bbf('0x6'));var attributes=require(_0x6bbf('0x7'));module[_0x6bbf('0x8')]=function(_0x4670a0,_0x37a458){return _0x4670a0[_0x6bbf('0x9')]('CannedAnswer',attributes,{'tableName':_0x6bbf('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6bbf('0xb'),'collate':_0x6bbf('0xc')});};
\ No newline at end of file
+var _0x0121=['lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CannedAnswer','tools_canned_answers','utf8mb4'];(function(_0x664ed2,_0x5dee8c){var _0x4ced49=function(_0x510572){while(--_0x510572){_0x664ed2['push'](_0x664ed2['shift']());}};_0x4ced49(++_0x5dee8c);}(_0x0121,0xf0));var _0x1012=function(_0x308e05,_0x3efd10){_0x308e05=_0x308e05-0x0;var _0xf2cda9=_0x0121[_0x308e05];return _0xf2cda9;};'use strict';var _=require(_0x1012('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1012('0x1'));var moment=require('moment');var BPromise=require(_0x1012('0x2'));var rp=require(_0x1012('0x3'));var fs=require('fs');var path=require(_0x1012('0x4'));var rimraf=require(_0x1012('0x5'));var config=require(_0x1012('0x6'));var attributes=require('./cannedAnswer.attributes');module[_0x1012('0x7')]=function(_0x1a6877,_0x2aa9a1){return _0x1a6877[_0x1012('0x8')](_0x1012('0x9'),attributes,{'tableName':_0x1012('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1012('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index d59e761..fbdee39 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(_0x1f95a4,_0x16db7c){var _0x9e7049=function(_0x4bbd55){while(--_0x4bbd55){_0x1f95a4['push'](_0x1f95a4['shift']());}};_0x9e7049(++_0x16db7c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ 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(_0x170337,_0x5bcdff){var _0x27cc18=function(_0x2351e5){while(--_0x2351e5){_0x170337['push'](_0x170337['shift']());}};_0x27cc18(++_0x5bcdff);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'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 0264e5a..0b15c5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b63=['show','post','create','put','update','destroy','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./cannedAnswer.controller','get','isAuthenticated','index','/:id'];(function(_0x59eefb,_0x2151ce){var _0x1a49e8=function(_0x5a758c){while(--_0x5a758c){_0x59eefb['push'](_0x59eefb['shift']());}};_0x1a49e8(++_0x2151ce);}(_0x3b63,0x96));var _0x33b6=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x3b63[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x33b6('0x0'));var util=require(_0x33b6('0x1'));var path=require('path');var timeout=require(_0x33b6('0x2'));var express=require(_0x33b6('0x3'));var router=express['Router']();var fs_extra=require(_0x33b6('0x4'));var auth=require(_0x33b6('0x5'));var interaction=require(_0x33b6('0x6'));var config=require('../../config/environment');var controller=require(_0x33b6('0x7'));router[_0x33b6('0x8')]('/',auth[_0x33b6('0x9')](),controller[_0x33b6('0xa')]);router[_0x33b6('0x8')](_0x33b6('0xb'),auth['isAuthenticated'](),controller[_0x33b6('0xc')]);router[_0x33b6('0xd')]('/',auth[_0x33b6('0x9')](),controller[_0x33b6('0xe')]);router[_0x33b6('0xf')](_0x33b6('0xb'),auth[_0x33b6('0x9')](),controller[_0x33b6('0x10')]);router['delete'](_0x33b6('0xb'),auth[_0x33b6('0x9')](),controller[_0x33b6('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xe2f7=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/:id','isAuthenticated','post','create','put','update','delete','destroy'];(function(_0x2c9527,_0x3d3e1d){var _0x2fd230=function(_0x301888){while(--_0x301888){_0x2c9527['push'](_0x2c9527['shift']());}};_0x2fd230(++_0x3d3e1d);}(_0xe2f7,0x72));var _0x7e2f=function(_0x421f3c,_0x5edac1){_0x421f3c=_0x421f3c-0x0;var _0x8aee90=_0xe2f7[_0x421f3c];return _0x8aee90;};'use strict';var multer=require(_0x7e2f('0x0'));var util=require(_0x7e2f('0x1'));var path=require(_0x7e2f('0x2'));var timeout=require(_0x7e2f('0x3'));var express=require(_0x7e2f('0x4'));var router=express[_0x7e2f('0x5')]();var fs_extra=require(_0x7e2f('0x6'));var auth=require(_0x7e2f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x7e2f('0x8'));var controller=require('./cannedAnswer.controller');router[_0x7e2f('0x9')]('/',auth['isAuthenticated'](),controller[_0x7e2f('0xa')]);router[_0x7e2f('0x9')](_0x7e2f('0xb'),auth[_0x7e2f('0xc')](),controller['show']);router[_0x7e2f('0xd')]('/',auth[_0x7e2f('0xc')](),controller[_0x7e2f('0xe')]);router[_0x7e2f('0xf')](_0x7e2f('0xb'),auth['isAuthenticated'](),controller[_0x7e2f('0x10')]);router[_0x7e2f('0x11')](_0x7e2f('0xb'),auth['isAuthenticated'](),controller[_0x7e2f('0x12')]);module['exports']=router;
\ No newline at end of file
index 5c3eb6b..8626d2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3ee=['STRING','INTEGER','DATE','1970-01-01\x2000:00:01'];(function(_0x546aaf,_0x1ed138){var _0x1cbf6d=function(_0x36c837){while(--_0x36c837){_0x546aaf['push'](_0x546aaf['shift']());}};_0x1cbf6d(++_0x1ed138);}(_0xe3ee,0x116));var _0xee3e=function(_0x13cda6,_0x599fee){_0x13cda6=_0x13cda6-0x0;var _0x3852b4=_0xe3ee[_0x13cda6];return _0x3852b4;};'use strict';var Sequelize=require('sequelize');module['exports']={'calldate':{'type':Sequelize[_0xee3e('0x0')],'allowNull':![],'defaultValue':_0xee3e('0x1')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0xee3e('0x2')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0xee3e('0x2')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0xee3e('0x2')]},'duration':{'type':Sequelize[_0xee3e('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xee3e('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xee3e('0x2')]},'amaflags':{'type':Sequelize[_0xee3e('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xee3e('0x2')]},'userfield':{'type':Sequelize[_0xee3e('0x2')]},'uniqueid':{'type':Sequelize[_0xee3e('0x2')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0xee3e('0x2')]},'peeraccount':{'type':Sequelize[_0xee3e('0x2')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0xee3e('0x2')]}};
\ No newline at end of file
+var _0x2121=['sequelize','exports','STRING','INTEGER'];(function(_0x115038,_0x739bbf){var _0x412aa7=function(_0x4710b1){while(--_0x4710b1){_0x115038['push'](_0x115038['shift']());}};_0x412aa7(++_0x739bbf);}(_0x2121,0x1b4));var _0x1212=function(_0xecbc49,_0x32c666){_0xecbc49=_0xecbc49-0x0;var _0x20f184=_0x2121[_0xecbc49];return _0x20f184;};'use strict';var Sequelize=require(_0x1212('0x0'));module[_0x1212('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x1212('0x2')]},'src':{'type':Sequelize[_0x1212('0x2')]},'dst':{'type':Sequelize[_0x1212('0x2')]},'dcontext':{'type':Sequelize[_0x1212('0x2')]},'channel':{'type':Sequelize[_0x1212('0x2')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0x1212('0x2')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0x1212('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x1212('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x1212('0x2')]},'amaflags':{'type':Sequelize[_0x1212('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x1212('0x2')]},'userfield':{'type':Sequelize[_0x1212('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x1212('0x2')]},'sequence':{'type':Sequelize[_0x1212('0x2')]},'peeraccount':{'type':Sequelize[_0x1212('0x2')]},'type':{'type':Sequelize[_0x1212('0x2')]},'tag':{'type':Sequelize[_0x1212('0x2')]}};
\ No newline at end of file
index 9543b34..f93158b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f4d=['query','keys','filters','intersection','fields','attributes','length','order','sort','where','pick','merge','type','options','include','findAll','rows','catch','rawAttributes','find','create','body','params','describe','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','stack','name','send','index','map','Cdr','model'];(function(_0x2f072f,_0x5803e2){var _0x29aa69=function(_0x4ec359){while(--_0x4ec359){_0x2f072f['push'](_0x2f072f['shift']());}};_0x29aa69(++_0x5803e2);}(_0x0f4d,0x12c));var _0xd0f4=function(_0x1e6428,_0x517bb3){_0x1e6428=_0x1e6428-0x0;var _0x1ff6f4=_0x0f4d[_0x1e6428];return _0x1ff6f4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd0f4('0x0'));var rp=require('request-promise');var moment=require(_0xd0f4('0x1'));var BPromise=require(_0xd0f4('0x2'));var Mustache=require(_0xd0f4('0x3'));var util=require(_0xd0f4('0x4'));var path=require(_0xd0f4('0x5'));var sox=require(_0xd0f4('0x6'));var csv=require(_0xd0f4('0x7'));var ejs=require(_0xd0f4('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd0f4('0x9'));var squel=require(_0xd0f4('0xa'));var crypto=require('crypto');var jsforce=require(_0xd0f4('0xb'));var deskjs=require(_0xd0f4('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd0f4('0xd'));var Papa=require(_0xd0f4('0xe'));var Redis=require('ioredis');var authService=require(_0xd0f4('0xf'));var qs=require(_0xd0f4('0x10'));var as=require(_0xd0f4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd0f4('0x12'));var utils=require(_0xd0f4('0x13'));var config=require(_0xd0f4('0x14'));var licenseUtil=require(_0xd0f4('0x15'));var db=require(_0xd0f4('0x16'))['db'];function respondWithStatusCode(_0x64232c,_0x134492){_0x134492=_0x134492||0xcc;return function(_0x5679a7){if(_0x5679a7){return _0x64232c[_0xd0f4('0x17')](_0x134492);}return _0x64232c[_0xd0f4('0x18')](_0x134492)['end']();};}function respondWithResult(_0x104d48,_0x536d71){_0x536d71=_0x536d71||0xc8;return function(_0x828792){if(_0x828792){return _0x104d48['status'](_0x536d71)[_0xd0f4('0x19')](_0x828792);}};}function respondWithFilteredResult(_0x4d5aef,_0x4afe4d){return function(_0x54b806){if(_0x54b806){var _0x45b32e=typeof _0x4afe4d[_0xd0f4('0x1a')]===_0xd0f4('0x1b')&&typeof _0x4afe4d[_0xd0f4('0x1c')]===_0xd0f4('0x1b');var _0x10acbe=_0x54b806[_0xd0f4('0x1d')];var _0x35be48=_0x45b32e?0x0:_0x4afe4d[_0xd0f4('0x1a')];var _0x5de07b=_0x45b32e?_0x54b806[_0xd0f4('0x1d')]:_0x4afe4d[_0xd0f4('0x1a')]+_0x4afe4d[_0xd0f4('0x1c')];var _0xa0662;if(_0x5de07b>=_0x10acbe){_0x5de07b=_0x10acbe;_0xa0662=0xc8;}else{_0xa0662=0xce;}_0x4d5aef['status'](_0xa0662);return _0x4d5aef[_0xd0f4('0x1e')](_0xd0f4('0x1f'),_0x35be48+'-'+_0x5de07b+'/'+_0x10acbe)[_0xd0f4('0x19')](_0x54b806);}return null;};}function patchUpdates(_0x208a6f){return function(_0x4e1689){try{jsonpatch[_0xd0f4('0x20')](_0x4e1689,_0x208a6f,!![]);}catch(_0xda1d14){return BPromise[_0xd0f4('0x21')](_0xda1d14);}return _0x4e1689[_0xd0f4('0x22')]();};}function saveUpdates(_0x14ba70,_0x2a1df0){return function(_0x25ee43){if(_0x25ee43){return _0x25ee43['update'](_0x14ba70)[_0xd0f4('0x23')](function(_0x327696){return _0x327696;});}return null;};}function removeEntity(_0x20e0c8,_0x299904){return function(_0x4d49c0){if(_0x4d49c0){return _0x4d49c0[_0xd0f4('0x24')]()['then'](function(){_0x20e0c8[_0xd0f4('0x18')](0xcc)[_0xd0f4('0x25')]();});}};}function handleEntityNotFound(_0x1cf493,_0x567eb4){return function(_0x42d944){if(!_0x42d944){_0x1cf493[_0xd0f4('0x17')](0x194);}return _0x42d944;};}function handleError(_0x459931,_0x1ed6e2){_0x1ed6e2=_0x1ed6e2||0x1f4;return function(_0x366af6){logger['error'](_0x366af6[_0xd0f4('0x26')]);if(_0x366af6[_0xd0f4('0x27')]){delete _0x366af6[_0xd0f4('0x27')];}_0x459931[_0xd0f4('0x18')](_0x1ed6e2)[_0xd0f4('0x28')](_0x366af6);};}exports[_0xd0f4('0x29')]=function(_0x1d3246,_0x33eb58){var _0x3cb97c={},_0x4cff90={},_0x42a44f={'count':0x0,'rows':[]};var _0x2df1ed=_[_0xd0f4('0x2a')](db[_0xd0f4('0x2b')]['rawAttributes'],function(_0x4058d7){return{'name':_0x4058d7['fieldName'],'type':_0x4058d7['type']['key']};});_0x4cff90[_0xd0f4('0x2c')]=_[_0xd0f4('0x2a')](_0x2df1ed,_0xd0f4('0x27'));_0x4cff90[_0xd0f4('0x2d')]=_[_0xd0f4('0x2e')](_0x1d3246[_0xd0f4('0x2d')]);_0x4cff90[_0xd0f4('0x2f')]=_[_0xd0f4('0x30')](_0x4cff90['model'],_0x4cff90[_0xd0f4('0x2d')]);_0x3cb97c['attributes']=_[_0xd0f4('0x30')](_0x4cff90[_0xd0f4('0x2c')],qs['fields'](_0x1d3246['query'][_0xd0f4('0x31')]));_0x3cb97c['attributes']=_0x3cb97c[_0xd0f4('0x32')][_0xd0f4('0x33')]?_0x3cb97c['attributes']:_0x4cff90[_0xd0f4('0x2c')];if(!_0x1d3246[_0xd0f4('0x2d')]['hasOwnProperty']('nolimit')){_0x3cb97c[_0xd0f4('0x1c')]=qs[_0xd0f4('0x1c')](_0x1d3246['query'][_0xd0f4('0x1c')]);_0x3cb97c['offset']=qs[_0xd0f4('0x1a')](_0x1d3246[_0xd0f4('0x2d')]['offset']);}_0x3cb97c[_0xd0f4('0x34')]=qs[_0xd0f4('0x35')](_0x1d3246[_0xd0f4('0x2d')][_0xd0f4('0x35')]);_0x3cb97c[_0xd0f4('0x36')]=qs['filters'](_[_0xd0f4('0x37')](_0x1d3246[_0xd0f4('0x2d')],_0x4cff90[_0xd0f4('0x2f')]),_0x2df1ed);if(_0x1d3246[_0xd0f4('0x2d')]['filter']){_0x3cb97c[_0xd0f4('0x36')]=_[_0xd0f4('0x38')](_0x3cb97c[_0xd0f4('0x36')],{'$or':_[_0xd0f4('0x2a')](_0x2df1ed,function(_0xd109a4){if(_0xd109a4[_0xd0f4('0x39')]!=='VIRTUAL'){var _0x269629={};_0x269629[_0xd109a4[_0xd0f4('0x27')]]={'$like':'%'+_0x1d3246[_0xd0f4('0x2d')]['filter']+'%'};return _0x269629;}})});}_0x3cb97c=_[_0xd0f4('0x38')]({},_0x3cb97c,_0x1d3246[_0xd0f4('0x3a')]);var _0x4bebe8={'where':_0x3cb97c[_0xd0f4('0x36')]};return db[_0xd0f4('0x2b')]['count'](_0x4bebe8)['then'](function(_0x3bb4ab){_0x42a44f[_0xd0f4('0x1d')]=_0x3bb4ab;if(_0x1d3246[_0xd0f4('0x2d')]['includeAll']){_0x3cb97c[_0xd0f4('0x3b')]=[{'all':!![]}];}return db['Cdr'][_0xd0f4('0x3c')](_0x3cb97c);})['then'](function(_0x29439d){_0x42a44f[_0xd0f4('0x3d')]=_0x29439d;return _0x42a44f;})[_0xd0f4('0x23')](respondWithFilteredResult(_0x33eb58,_0x3cb97c))[_0xd0f4('0x3e')](handleError(_0x33eb58,null));};exports['show']=function(_0x10509e,_0x198e47){var _0xb02892={'raw':!![],'where':{'id':_0x10509e['params']['id']}},_0x4c8b9a={};_0x4c8b9a[_0xd0f4('0x2c')]=_[_0xd0f4('0x2e')](db[_0xd0f4('0x2b')][_0xd0f4('0x3f')]);_0x4c8b9a[_0xd0f4('0x2d')]=_[_0xd0f4('0x2e')](_0x10509e[_0xd0f4('0x2d')]);_0x4c8b9a[_0xd0f4('0x2f')]=_[_0xd0f4('0x30')](_0x4c8b9a[_0xd0f4('0x2c')],_0x4c8b9a[_0xd0f4('0x2d')]);_0xb02892[_0xd0f4('0x32')]=_['intersection'](_0x4c8b9a[_0xd0f4('0x2c')],qs[_0xd0f4('0x31')](_0x10509e['query'][_0xd0f4('0x31')]));_0xb02892[_0xd0f4('0x32')]=_0xb02892[_0xd0f4('0x32')][_0xd0f4('0x33')]?_0xb02892[_0xd0f4('0x32')]:_0x4c8b9a[_0xd0f4('0x2c')];if(_0x10509e[_0xd0f4('0x2d')]['includeAll']){_0xb02892[_0xd0f4('0x3b')]=[{'all':!![]}];}_0xb02892=_[_0xd0f4('0x38')]({},_0xb02892,_0x10509e[_0xd0f4('0x3a')]);return db['Cdr'][_0xd0f4('0x40')](_0xb02892)[_0xd0f4('0x23')](handleEntityNotFound(_0x198e47,null))[_0xd0f4('0x23')](respondWithResult(_0x198e47,null))[_0xd0f4('0x3e')](handleError(_0x198e47,null));};exports[_0xd0f4('0x41')]=function(_0x563759,_0x54bb8d){return db['Cdr'][_0xd0f4('0x41')](_0x563759[_0xd0f4('0x42')],{})[_0xd0f4('0x23')](respondWithResult(_0x54bb8d,0xc9))[_0xd0f4('0x3e')](handleError(_0x54bb8d,null));};exports['update']=function(_0x31db89,_0x1b1baa){if(_0x31db89['body']['id']){delete _0x31db89[_0xd0f4('0x42')]['id'];}return db[_0xd0f4('0x2b')][_0xd0f4('0x40')]({'where':{'id':_0x31db89[_0xd0f4('0x43')]['id']}})[_0xd0f4('0x23')](handleEntityNotFound(_0x1b1baa,null))[_0xd0f4('0x23')](saveUpdates(_0x31db89[_0xd0f4('0x42')],null))[_0xd0f4('0x23')](respondWithResult(_0x1b1baa,null))[_0xd0f4('0x3e')](handleError(_0x1b1baa,null));};exports[_0xd0f4('0x24')]=function(_0x431df3,_0x120c17){return db[_0xd0f4('0x2b')]['find']({'where':{'id':_0x431df3[_0xd0f4('0x43')]['id']}})[_0xd0f4('0x23')](handleEntityNotFound(_0x120c17,null))[_0xd0f4('0x23')](removeEntity(_0x120c17,null))['catch'](handleError(_0x120c17,null));};exports[_0xd0f4('0x44')]=function(_0x3f8bcc,_0x1d8543){return db['Cdr'][_0xd0f4('0x44')]()['then'](respondWithResult(_0x1d8543,null))[_0xd0f4('0x3e')](handleError(_0x1d8543,null));};
\ No newline at end of file
+var _0x8ece=['findAll','rows','catch','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','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','end','status','json','offset','undefined','count','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','limit','order','sort','where','filters','filter','merge','VIRTUAL','options','Cdr','includeAll'];(function(_0x27a4b4,_0x5d28f9){var _0x215a8e=function(_0x9fbb41){while(--_0x9fbb41){_0x27a4b4['push'](_0x27a4b4['shift']());}};_0x215a8e(++_0x5d28f9);}(_0x8ece,0x195));var _0xe8ec=function(_0x1fa63e,_0x14aea6){_0x1fa63e=_0x1fa63e-0x0;var _0x11ecea=_0x8ece[_0x1fa63e];return _0x11ecea;};'use strict';var emlformat=require(_0xe8ec('0x0'));var rimraf=require(_0xe8ec('0x1'));var zipdir=require(_0xe8ec('0x2'));var jsonpatch=require(_0xe8ec('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe8ec('0x4'));var Mustache=require(_0xe8ec('0x5'));var util=require(_0xe8ec('0x6'));var path=require(_0xe8ec('0x7'));var sox=require(_0xe8ec('0x8'));var csv=require('to-csv');var ejs=require(_0xe8ec('0x9'));var fs=require('fs');var fs_extra=require(_0xe8ec('0xa'));var _=require(_0xe8ec('0xb'));var squel=require(_0xe8ec('0xc'));var crypto=require(_0xe8ec('0xd'));var jsforce=require(_0xe8ec('0xe'));var deskjs=require(_0xe8ec('0xf'));var toCsv=require('to-csv');var querystring=require(_0xe8ec('0x10'));var Papa=require('papaparse');var Redis=require(_0xe8ec('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xe8ec('0x12'));var as=require(_0xe8ec('0x13'));var hardwareService=require(_0xe8ec('0x14'));var logger=require(_0xe8ec('0x15'))(_0xe8ec('0x16'));var utils=require(_0xe8ec('0x17'));var config=require(_0xe8ec('0x18'));var licenseUtil=require(_0xe8ec('0x19'));var db=require(_0xe8ec('0x1a'))['db'];function respondWithStatusCode(_0x69a424,_0xf72aa7){_0xf72aa7=_0xf72aa7||0xcc;return function(_0x153203){if(_0x153203){return _0x69a424[_0xe8ec('0x1b')](_0xf72aa7);}return _0x69a424['status'](_0xf72aa7)[_0xe8ec('0x1c')]();};}function respondWithResult(_0x431723,_0x2e5a88){_0x2e5a88=_0x2e5a88||0xc8;return function(_0x167ebb){if(_0x167ebb){return _0x431723[_0xe8ec('0x1d')](_0x2e5a88)[_0xe8ec('0x1e')](_0x167ebb);}};}function respondWithFilteredResult(_0x1e76ac,_0x218a4b){return function(_0x531f69){if(_0x531f69){var _0x2e7c82=typeof _0x218a4b[_0xe8ec('0x1f')]===_0xe8ec('0x20')&&typeof _0x218a4b['limit']===_0xe8ec('0x20');var _0x20e847=_0x531f69[_0xe8ec('0x21')];var _0x34a582=_0x2e7c82?0x0:_0x218a4b[_0xe8ec('0x1f')];var _0x39e557=_0x2e7c82?_0x531f69[_0xe8ec('0x21')]:_0x218a4b[_0xe8ec('0x1f')]+_0x218a4b['limit'];var _0x11dbe0;if(_0x39e557>=_0x20e847){_0x39e557=_0x20e847;_0x11dbe0=0xc8;}else{_0x11dbe0=0xce;}_0x1e76ac[_0xe8ec('0x1d')](_0x11dbe0);return _0x1e76ac[_0xe8ec('0x22')](_0xe8ec('0x23'),_0x34a582+'-'+_0x39e557+'/'+_0x20e847)[_0xe8ec('0x1e')](_0x531f69);}return null;};}function patchUpdates(_0x3d6fbc){return function(_0xd5ccf5){try{jsonpatch[_0xe8ec('0x24')](_0xd5ccf5,_0x3d6fbc,!![]);}catch(_0x3a5d14){return BPromise['reject'](_0x3a5d14);}return _0xd5ccf5[_0xe8ec('0x25')]();};}function saveUpdates(_0x3fa53f,_0x3de125){return function(_0x31a97d){if(_0x31a97d){return _0x31a97d[_0xe8ec('0x26')](_0x3fa53f)['then'](function(_0x2e05d8){return _0x2e05d8;});}return null;};}function removeEntity(_0x78b6f4,_0x431af0){return function(_0x24260b){if(_0x24260b){return _0x24260b[_0xe8ec('0x27')]()[_0xe8ec('0x28')](function(){_0x78b6f4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x457607,_0x1899d9){return function(_0x35af9b){if(!_0x35af9b){_0x457607[_0xe8ec('0x1b')](0x194);}return _0x35af9b;};}function handleError(_0xbec801,_0x3519a5){_0x3519a5=_0x3519a5||0x1f4;return function(_0x267356){logger[_0xe8ec('0x29')](_0x267356[_0xe8ec('0x2a')]);if(_0x267356[_0xe8ec('0x2b')]){delete _0x267356[_0xe8ec('0x2b')];}_0xbec801[_0xe8ec('0x1d')](_0x3519a5)[_0xe8ec('0x2c')](_0x267356);};}exports[_0xe8ec('0x2d')]=function(_0x1140d6,_0x5d6888){var _0x21badd={},_0x243904={},_0x2ec6ff={'count':0x0,'rows':[]};var _0x52c0b1=_[_0xe8ec('0x2e')](db['Cdr'][_0xe8ec('0x2f')],function(_0x3b27d3){return{'name':_0x3b27d3[_0xe8ec('0x30')],'type':_0x3b27d3[_0xe8ec('0x31')][_0xe8ec('0x32')]};});_0x243904['model']=_[_0xe8ec('0x2e')](_0x52c0b1,_0xe8ec('0x2b'));_0x243904[_0xe8ec('0x33')]=_['keys'](_0x1140d6[_0xe8ec('0x33')]);_0x243904['filters']=_[_0xe8ec('0x34')](_0x243904[_0xe8ec('0x35')],_0x243904[_0xe8ec('0x33')]);_0x21badd[_0xe8ec('0x36')]=_[_0xe8ec('0x34')](_0x243904[_0xe8ec('0x35')],qs[_0xe8ec('0x37')](_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x37')]));_0x21badd['attributes']=_0x21badd[_0xe8ec('0x36')][_0xe8ec('0x38')]?_0x21badd[_0xe8ec('0x36')]:_0x243904['model'];if(!_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x39')]('nolimit')){_0x21badd[_0xe8ec('0x3a')]=qs[_0xe8ec('0x3a')](_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x3a')]);_0x21badd['offset']=qs[_0xe8ec('0x1f')](_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x1f')]);}_0x21badd[_0xe8ec('0x3b')]=qs[_0xe8ec('0x3c')](_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x3c')]);_0x21badd[_0xe8ec('0x3d')]=qs['filters'](_['pick'](_0x1140d6[_0xe8ec('0x33')],_0x243904[_0xe8ec('0x3e')]),_0x52c0b1);if(_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x3f')]){_0x21badd[_0xe8ec('0x3d')]=_[_0xe8ec('0x40')](_0x21badd[_0xe8ec('0x3d')],{'$or':_['map'](_0x52c0b1,function(_0x3ab84e){if(_0x3ab84e['type']!==_0xe8ec('0x41')){var _0x17b7b0={};_0x17b7b0[_0x3ab84e['name']]={'$like':'%'+_0x1140d6['query'][_0xe8ec('0x3f')]+'%'};return _0x17b7b0;}})});}_0x21badd=_[_0xe8ec('0x40')]({},_0x21badd,_0x1140d6[_0xe8ec('0x42')]);var _0x5c99cd={'where':_0x21badd[_0xe8ec('0x3d')]};return db[_0xe8ec('0x43')][_0xe8ec('0x21')](_0x5c99cd)[_0xe8ec('0x28')](function(_0x3d52c9){_0x2ec6ff['count']=_0x3d52c9;if(_0x1140d6['query'][_0xe8ec('0x44')]){_0x21badd['include']=[{'all':!![]}];}return db[_0xe8ec('0x43')][_0xe8ec('0x45')](_0x21badd);})[_0xe8ec('0x28')](function(_0x1ed587){_0x2ec6ff[_0xe8ec('0x46')]=_0x1ed587;return _0x2ec6ff;})[_0xe8ec('0x28')](respondWithFilteredResult(_0x5d6888,_0x21badd))[_0xe8ec('0x47')](handleError(_0x5d6888,null));};exports['show']=function(_0x33b672,_0x305d15){var _0x40e8b3={'raw':!![],'where':{'id':_0x33b672[_0xe8ec('0x48')]['id']}},_0x582d67={};_0x582d67[_0xe8ec('0x35')]=_[_0xe8ec('0x49')](db[_0xe8ec('0x43')]['rawAttributes']);_0x582d67[_0xe8ec('0x33')]=_[_0xe8ec('0x49')](_0x33b672[_0xe8ec('0x33')]);_0x582d67['filters']=_[_0xe8ec('0x34')](_0x582d67['model'],_0x582d67[_0xe8ec('0x33')]);_0x40e8b3[_0xe8ec('0x36')]=_[_0xe8ec('0x34')](_0x582d67['model'],qs[_0xe8ec('0x37')](_0x33b672[_0xe8ec('0x33')]['fields']));_0x40e8b3[_0xe8ec('0x36')]=_0x40e8b3['attributes'][_0xe8ec('0x38')]?_0x40e8b3['attributes']:_0x582d67[_0xe8ec('0x35')];if(_0x33b672[_0xe8ec('0x33')][_0xe8ec('0x44')]){_0x40e8b3[_0xe8ec('0x4a')]=[{'all':!![]}];}_0x40e8b3=_['merge']({},_0x40e8b3,_0x33b672['options']);return db['Cdr'][_0xe8ec('0x4b')](_0x40e8b3)[_0xe8ec('0x28')](handleEntityNotFound(_0x305d15,null))[_0xe8ec('0x28')](respondWithResult(_0x305d15,null))['catch'](handleError(_0x305d15,null));};exports[_0xe8ec('0x4c')]=function(_0x354984,_0x96ca5f){return db[_0xe8ec('0x43')][_0xe8ec('0x4c')](_0x354984['body'],{})[_0xe8ec('0x28')](respondWithResult(_0x96ca5f,0xc9))[_0xe8ec('0x47')](handleError(_0x96ca5f,null));};exports[_0xe8ec('0x26')]=function(_0x3de7aa,_0x329ef3){if(_0x3de7aa[_0xe8ec('0x4d')]['id']){delete _0x3de7aa[_0xe8ec('0x4d')]['id'];}return db['Cdr'][_0xe8ec('0x4b')]({'where':{'id':_0x3de7aa[_0xe8ec('0x48')]['id']}})['then'](handleEntityNotFound(_0x329ef3,null))[_0xe8ec('0x28')](saveUpdates(_0x3de7aa[_0xe8ec('0x4d')],null))[_0xe8ec('0x28')](respondWithResult(_0x329ef3,null))[_0xe8ec('0x47')](handleError(_0x329ef3,null));};exports['destroy']=function(_0x30f211,_0x1367dd){return db[_0xe8ec('0x43')][_0xe8ec('0x4b')]({'where':{'id':_0x30f211[_0xe8ec('0x48')]['id']}})[_0xe8ec('0x28')](handleEntityNotFound(_0x1367dd,null))['then'](removeEntity(_0x1367dd,null))[_0xe8ec('0x47')](handleError(_0x1367dd,null));};exports[_0xe8ec('0x4e')]=function(_0x482856,_0x4f9e25){return db[_0xe8ec('0x43')]['describe']()['then'](respondWithResult(_0x4f9e25,null))[_0xe8ec('0x47')](handleError(_0x4f9e25,null));};
\ No newline at end of file
index a9f5cfb..732dbf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x3f6987,_0x1ad59a){var _0x5a8248=function(_0xe2a261){while(--_0xe2a261){_0x3f6987['push'](_0x3f6987['shift']());}};_0x5a8248(++_0x1ad59a);}(_0x7a54,0x106));var _0x47a5=function(_0x97d60f,_0x19d958){_0x97d60f=_0x97d60f-0x0;var _0x5ce0c6=_0x7a54[_0x97d60f];return _0x5ce0c6;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x3d6d08,_0x54e088){var _0x44417e=function(_0x42b9eb){while(--_0x42b9eb){_0x3d6d08['push'](_0x3d6d08['shift']());}};_0x44417e(++_0x54e088);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index 05710b6..9ee3b7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0eb=['error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x462725,_0x2f890b){var _0x581f26=function(_0x126f74){while(--_0x126f74){_0x462725['push'](_0x462725['shift']());}};_0x581f26(++_0x2f890b);}(_0xc0eb,0x1a7));var _0xbc0e=function(_0x25902b,_0x229966){_0x25902b=_0x25902b-0x0;var _0x1884f0=_0xc0eb[_0x25902b];return _0x1884f0;};'use strict';var _=require(_0xbc0e('0x0'));var util=require(_0xbc0e('0x1'));var moment=require('moment');var BPromise=require(_0xbc0e('0x2'));var rs=require(_0xbc0e('0x3'));var fs=require('fs');var Redis=require(_0xbc0e('0x4'));var db=require(_0xbc0e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xbc0e('0x6'))(_0xbc0e('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbc0e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2159a1,_0x188bb1,_0xc48094){return new BPromise(function(_0x2e175d,_0x48b65d){return client[_0xbc0e('0x9')](_0x2159a1,_0xc48094)[_0xbc0e('0xa')](function(_0x222f25){logger[_0xbc0e('0xb')](_0xbc0e('0xc'),_0x188bb1,_0xbc0e('0xd'));logger[_0xbc0e('0xe')](_0xbc0e('0xf'),_0x188bb1,_0xbc0e('0xd'),JSON[_0xbc0e('0x10')](_0x222f25));if(_0x222f25[_0xbc0e('0x11')]){if(_0x222f25['error'][_0xbc0e('0x12')]===0x1f4){logger[_0xbc0e('0x11')](_0xbc0e('0xc'),_0x188bb1,_0x222f25[_0xbc0e('0x11')][_0xbc0e('0x13')]);return _0x48b65d(_0x222f25[_0xbc0e('0x11')][_0xbc0e('0x13')]);}logger['error'](_0xbc0e('0xc'),_0x188bb1,_0x222f25['error'][_0xbc0e('0x13')]);return _0x2e175d(_0x222f25[_0xbc0e('0x11')][_0xbc0e('0x13')]);}else{logger['info'](_0xbc0e('0xc'),_0x188bb1,_0xbc0e('0xd'));_0x2e175d(_0x222f25[_0xbc0e('0x14')][_0xbc0e('0x13')]);}})[_0xbc0e('0x15')](function(_0x525b26){logger[_0xbc0e('0x11')](_0xbc0e('0xc'),_0x188bb1,_0x525b26);_0x48b65d(_0x525b26);});});}
\ No newline at end of file
+var _0x6d4c=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x4492af,_0x47e25d){var _0x216729=function(_0x4964c8){while(--_0x4964c8){_0x4492af['push'](_0x4492af['shift']());}};_0x216729(++_0x47e25d);}(_0x6d4c,0x1dc));var _0xc6d4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6d4c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc6d4('0x0'));var util=require(_0xc6d4('0x1'));var moment=require(_0xc6d4('0x2'));var BPromise=require(_0xc6d4('0x3'));var rs=require(_0xc6d4('0x4'));var fs=require('fs');var Redis=require(_0xc6d4('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc6d4('0x6'));var logger=require(_0xc6d4('0x7'))(_0xc6d4('0x8'));var config=require('../../config/environment');var jayson=require(_0xc6d4('0x9'));var client=jayson[_0xc6d4('0xa')][_0xc6d4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3f65a9,_0x10069e,_0x484014){return new BPromise(function(_0x31941c,_0xae9b7d){return client[_0xc6d4('0xc')](_0x3f65a9,_0x484014)[_0xc6d4('0xd')](function(_0x419d34){logger[_0xc6d4('0xe')](_0xc6d4('0xf'),_0x10069e,'request\x20sent');logger[_0xc6d4('0x10')](_0xc6d4('0x11'),_0x10069e,_0xc6d4('0x12'),JSON[_0xc6d4('0x13')](_0x419d34));if(_0x419d34[_0xc6d4('0x14')]){if(_0x419d34[_0xc6d4('0x14')]['code']===0x1f4){logger[_0xc6d4('0x14')](_0xc6d4('0xf'),_0x10069e,_0x419d34[_0xc6d4('0x14')][_0xc6d4('0x15')]);return _0xae9b7d(_0x419d34[_0xc6d4('0x14')][_0xc6d4('0x15')]);}logger[_0xc6d4('0x14')]('Cdr,\x20%s,\x20%s',_0x10069e,_0x419d34[_0xc6d4('0x14')][_0xc6d4('0x15')]);return _0x31941c(_0x419d34[_0xc6d4('0x14')][_0xc6d4('0x15')]);}else{logger[_0xc6d4('0xe')](_0xc6d4('0xf'),_0x10069e,_0xc6d4('0x12'));_0x31941c(_0x419d34[_0xc6d4('0x16')][_0xc6d4('0x15')]);}})['catch'](function(_0x4c0d5a){logger[_0xc6d4('0x14')](_0xc6d4('0xf'),_0x10069e,_0x4c0d5a);_0xae9b7d(_0x4c0d5a);});});}
\ No newline at end of file
index bc71c7f..055842d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x6bb9,_0x10f2b6){var _0xe3b3bc=function(_0x3438ed){while(--_0x3438ed){_0x6bb9['push'](_0x6bb9['shift']());}};_0xe3b3bc(++_0x10f2b6);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _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(_0x4f4107,_0x342cd4){var _0x2f02bc=function(_0x1b9918){while(--_0x1b9918){_0x4f4107['push'](_0x4f4107['shift']());}};_0x2f02bc(++_0x342cd4);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index 89133c4..b779ac2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x638d=['noop','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x3d24f9,_0x5c79b7){var _0x2a0278=function(_0x223f27){while(--_0x223f27){_0x3d24f9['push'](_0x3d24f9['shift']());}};_0x2a0278(++_0x5c79b7);}(_0x638d,0x1e2));var _0xd638=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x638d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd638('0x0'));module[_0xd638('0x1')]={'priority':{'type':Sequelize[_0xd638('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xd638('0x3')],'allowNull':![],'defaultValue':_0xd638('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xd638('0x3')]},'interval':{'type':Sequelize[_0xd638('0x3')],'defaultValue':_0xd638('0x5')}};
\ No newline at end of file
+var _0x3b7f=['sequelize','exports','INTEGER','noop','STRING'];(function(_0x26a6dd,_0x249e9e){var _0xf4dc31=function(_0xc31c22){while(--_0xc31c22){_0x26a6dd['push'](_0x26a6dd['shift']());}};_0xf4dc31(++_0x249e9e);}(_0x3b7f,0xb4));var _0xf3b7=function(_0x1edbcf,_0x5a59a1){_0x1edbcf=_0x1edbcf-0x0;var _0x1215be=_0x3b7f[_0x1edbcf];return _0x1215be;};'use strict';var Sequelize=require(_0xf3b7('0x0'));module[_0xf3b7('0x1')]={'priority':{'type':Sequelize[_0xf3b7('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf3b7('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xf3b7('0x4')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 6cedcc0..93bcf90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4584=['ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','then','sendStatus','error','stack','name','send','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','length','merge','options','find','catch','body','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x4584,0x1cf));var _0x4458=function(_0x43a1b8,_0x1c90c8){_0x43a1b8=_0x43a1b8-0x0;var _0x324ecc=_0x4584[_0x43a1b8];return _0x324ecc;};'use strict';var emlformat=require(_0x4458('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4458('0x1'));var jsonpatch=require(_0x4458('0x2'));var rp=require(_0x4458('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4458('0x4'));var util=require(_0x4458('0x5'));var path=require(_0x4458('0x6'));var sox=require(_0x4458('0x7'));var csv=require(_0x4458('0x8'));var ejs=require(_0x4458('0x9'));var fs=require('fs');var fs_extra=require(_0x4458('0xa'));var _=require(_0x4458('0xb'));var squel=require(_0x4458('0xc'));var crypto=require('crypto');var jsforce=require(_0x4458('0xd'));var deskjs=require(_0x4458('0xe'));var toCsv=require(_0x4458('0x8'));var querystring=require(_0x4458('0xf'));var Papa=require(_0x4458('0x10'));var Redis=require(_0x4458('0x11'));var authService=require(_0x4458('0x12'));var qs=require(_0x4458('0x13'));var as=require(_0x4458('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4458('0x15'))(_0x4458('0x16'));var utils=require(_0x4458('0x17'));var config=require(_0x4458('0x18'));var licenseUtil=require(_0x4458('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x302552,_0x527809){_0x527809=_0x527809||0xcc;return function(_0x1f13ab){if(_0x1f13ab){return _0x302552['sendStatus'](_0x527809);}return _0x302552[_0x4458('0x1a')](_0x527809)[_0x4458('0x1b')]();};}function respondWithResult(_0x4abaf9,_0x5e2f05){_0x5e2f05=_0x5e2f05||0xc8;return function(_0x42771e){if(_0x42771e){return _0x4abaf9[_0x4458('0x1a')](_0x5e2f05)[_0x4458('0x1c')](_0x42771e);}};}function respondWithFilteredResult(_0x2619ed,_0x30d440){return function(_0x21ff11){if(_0x21ff11){var _0x225679=typeof _0x30d440[_0x4458('0x1d')]==='undefined'&&typeof _0x30d440[_0x4458('0x1e')]==='undefined';var _0x3bb7f4=_0x21ff11[_0x4458('0x1f')];var _0x130d39=_0x225679?0x0:_0x30d440['offset'];var _0x319247=_0x225679?_0x21ff11[_0x4458('0x1f')]:_0x30d440[_0x4458('0x1d')]+_0x30d440[_0x4458('0x1e')];var _0x463809;if(_0x319247>=_0x3bb7f4){_0x319247=_0x3bb7f4;_0x463809=0xc8;}else{_0x463809=0xce;}_0x2619ed[_0x4458('0x1a')](_0x463809);return _0x2619ed[_0x4458('0x20')](_0x4458('0x21'),_0x130d39+'-'+_0x319247+'/'+_0x3bb7f4)[_0x4458('0x1c')](_0x21ff11);}return null;};}function patchUpdates(_0x2dfcf1){return function(_0x531ab6){try{jsonpatch[_0x4458('0x22')](_0x531ab6,_0x2dfcf1,!![]);}catch(_0x24ecd1){return BPromise[_0x4458('0x23')](_0x24ecd1);}return _0x531ab6['save']();};}function saveUpdates(_0xe09a2b,_0x1688f2){return function(_0x58aeca){if(_0x58aeca){return _0x58aeca[_0x4458('0x24')](_0xe09a2b)[_0x4458('0x25')](function(_0x5d3df2){return _0x5d3df2;});}return null;};}function removeEntity(_0xcf668c,_0x17e482){return function(_0x3e7945){if(_0x3e7945){return _0x3e7945['destroy']()[_0x4458('0x25')](function(){_0xcf668c['status'](0xcc)[_0x4458('0x1b')]();});}};}function handleEntityNotFound(_0x504a86,_0x543e21){return function(_0x277b1c){if(!_0x277b1c){_0x504a86[_0x4458('0x26')](0x194);}return _0x277b1c;};}function handleError(_0x1631d3,_0x25ade9){_0x25ade9=_0x25ade9||0x1f4;return function(_0x153a98){logger[_0x4458('0x27')](_0x153a98[_0x4458('0x28')]);if(_0x153a98[_0x4458('0x29')]){delete _0x153a98[_0x4458('0x29')];}_0x1631d3[_0x4458('0x1a')](_0x25ade9)[_0x4458('0x2a')](_0x153a98);};}exports['show']=function(_0x179be7,_0x4e076a){var _0x4579d9={'raw':!![],'where':{'id':_0x179be7[_0x4458('0x2b')]['id']}},_0x5f22be={};_0x5f22be[_0x4458('0x2c')]=_[_0x4458('0x2d')](db[_0x4458('0x2e')][_0x4458('0x2f')]);_0x5f22be[_0x4458('0x30')]=_[_0x4458('0x2d')](_0x179be7[_0x4458('0x30')]);_0x5f22be[_0x4458('0x31')]=_[_0x4458('0x32')](_0x5f22be[_0x4458('0x2c')],_0x5f22be[_0x4458('0x30')]);_0x4579d9[_0x4458('0x33')]=_[_0x4458('0x32')](_0x5f22be['model'],qs[_0x4458('0x34')](_0x179be7[_0x4458('0x30')][_0x4458('0x34')]));_0x4579d9[_0x4458('0x33')]=_0x4579d9[_0x4458('0x33')][_0x4458('0x35')]?_0x4579d9[_0x4458('0x33')]:_0x5f22be[_0x4458('0x2c')];if(_0x179be7['query']['includeAll']){_0x4579d9['include']=[{'all':!![]}];}_0x4579d9=_[_0x4458('0x36')]({},_0x4579d9,_0x179be7[_0x4458('0x37')]);return db[_0x4458('0x2e')][_0x4458('0x38')](_0x4579d9)[_0x4458('0x25')](handleEntityNotFound(_0x4e076a,null))[_0x4458('0x25')](respondWithResult(_0x4e076a,null))[_0x4458('0x39')](handleError(_0x4e076a,null));};exports[_0x4458('0x24')]=function(_0x755e3b,_0xd804f0){if(_0x755e3b[_0x4458('0x3a')]['id']){delete _0x755e3b[_0x4458('0x3a')]['id'];}return db[_0x4458('0x2e')]['find']({'where':{'id':_0x755e3b[_0x4458('0x2b')]['id']}})['then'](handleEntityNotFound(_0xd804f0,null))[_0x4458('0x25')](saveUpdates(_0x755e3b[_0x4458('0x3a')],null))[_0x4458('0x25')](respondWithResult(_0xd804f0,null))[_0x4458('0x39')](handleError(_0xd804f0,null));};exports['destroy']=function(_0x4d08d8,_0x3b573c){return db[_0x4458('0x2e')][_0x4458('0x38')]({'where':{'id':_0x4d08d8['params']['id']}})[_0x4458('0x25')](handleEntityNotFound(_0x3b573c,null))[_0x4458('0x25')](removeEntity(_0x3b573c,null))[_0x4458('0x39')](handleError(_0x3b573c,null));};
\ No newline at end of file
+var _0x693f=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','show','params','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','model','fields','length','include','merge','options','find','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x4aa31e,_0x391603){var _0x5d1a73=function(_0x5141a1){while(--_0x5141a1){_0x4aa31e['push'](_0x4aa31e['shift']());}};_0x5d1a73(++_0x391603);}(_0x693f,0x9d));var _0xf693=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x693f[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xf693('0x0'));var rimraf=require(_0xf693('0x1'));var zipdir=require(_0xf693('0x2'));var jsonpatch=require(_0xf693('0x3'));var rp=require('request-promise');var moment=require(_0xf693('0x4'));var BPromise=require(_0xf693('0x5'));var Mustache=require(_0xf693('0x6'));var util=require(_0xf693('0x7'));var path=require(_0xf693('0x8'));var sox=require(_0xf693('0x9'));var csv=require(_0xf693('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf693('0xb'));var _=require(_0xf693('0xc'));var squel=require('squel');var crypto=require(_0xf693('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf693('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf693('0xf'));var Papa=require(_0xf693('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf693('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf693('0x12'))(_0xf693('0x13'));var utils=require(_0xf693('0x14'));var config=require(_0xf693('0x15'));var licenseUtil=require(_0xf693('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d0d4c,_0xd08be1){_0xd08be1=_0xd08be1||0xcc;return function(_0x38bd65){if(_0x38bd65){return _0x5d0d4c['sendStatus'](_0xd08be1);}return _0x5d0d4c[_0xf693('0x17')](_0xd08be1)[_0xf693('0x18')]();};}function respondWithResult(_0x5a5f86,_0x5c42f0){_0x5c42f0=_0x5c42f0||0xc8;return function(_0x957c3f){if(_0x957c3f){return _0x5a5f86[_0xf693('0x17')](_0x5c42f0)[_0xf693('0x19')](_0x957c3f);}};}function respondWithFilteredResult(_0x208f32,_0x36d92c){return function(_0x5541a7){if(_0x5541a7){var _0x1d9278=typeof _0x36d92c[_0xf693('0x1a')]===_0xf693('0x1b')&&typeof _0x36d92c[_0xf693('0x1c')]===_0xf693('0x1b');var _0x19ea07=_0x5541a7['count'];var _0x5e02e0=_0x1d9278?0x0:_0x36d92c['offset'];var _0x2474d4=_0x1d9278?_0x5541a7[_0xf693('0x1d')]:_0x36d92c[_0xf693('0x1a')]+_0x36d92c[_0xf693('0x1c')];var _0x350996;if(_0x2474d4>=_0x19ea07){_0x2474d4=_0x19ea07;_0x350996=0xc8;}else{_0x350996=0xce;}_0x208f32['status'](_0x350996);return _0x208f32[_0xf693('0x1e')](_0xf693('0x1f'),_0x5e02e0+'-'+_0x2474d4+'/'+_0x19ea07)[_0xf693('0x19')](_0x5541a7);}return null;};}function patchUpdates(_0x31b887){return function(_0x1d20fc){try{jsonpatch[_0xf693('0x20')](_0x1d20fc,_0x31b887,!![]);}catch(_0x44b55d){return BPromise[_0xf693('0x21')](_0x44b55d);}return _0x1d20fc['save']();};}function saveUpdates(_0x505ada,_0x1188c6){return function(_0x2e022b){if(_0x2e022b){return _0x2e022b[_0xf693('0x22')](_0x505ada)[_0xf693('0x23')](function(_0x786611){return _0x786611;});}return null;};}function removeEntity(_0x200c95,_0x5407f5){return function(_0x179e25){if(_0x179e25){return _0x179e25[_0xf693('0x24')]()[_0xf693('0x23')](function(){_0x200c95[_0xf693('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x950632,_0x302e08){return function(_0xe7a396){if(!_0xe7a396){_0x950632[_0xf693('0x25')](0x194);}return _0xe7a396;};}function handleError(_0x1fc10e,_0xbbbf29){_0xbbbf29=_0xbbbf29||0x1f4;return function(_0x1c6ff2){logger[_0xf693('0x26')](_0x1c6ff2[_0xf693('0x27')]);if(_0x1c6ff2[_0xf693('0x28')]){delete _0x1c6ff2['name'];}_0x1fc10e[_0xf693('0x17')](_0xbbbf29)[_0xf693('0x29')](_0x1c6ff2);};}exports[_0xf693('0x2a')]=function(_0x405f94,_0x83cd35){var _0x7fdc22={'raw':!![],'where':{'id':_0x405f94[_0xf693('0x2b')]['id']}},_0x1936c0={};_0x1936c0['model']=_[_0xf693('0x2c')](db[_0xf693('0x2d')][_0xf693('0x2e')]);_0x1936c0[_0xf693('0x2f')]=_['keys'](_0x405f94['query']);_0x1936c0[_0xf693('0x30')]=_[_0xf693('0x31')](_0x1936c0['model'],_0x1936c0[_0xf693('0x2f')]);_0x7fdc22[_0xf693('0x32')]=_[_0xf693('0x31')](_0x1936c0[_0xf693('0x33')],qs['fields'](_0x405f94[_0xf693('0x2f')][_0xf693('0x34')]));_0x7fdc22[_0xf693('0x32')]=_0x7fdc22[_0xf693('0x32')][_0xf693('0x35')]?_0x7fdc22[_0xf693('0x32')]:_0x1936c0[_0xf693('0x33')];if(_0x405f94[_0xf693('0x2f')]['includeAll']){_0x7fdc22[_0xf693('0x36')]=[{'all':!![]}];}_0x7fdc22=_[_0xf693('0x37')]({},_0x7fdc22,_0x405f94[_0xf693('0x38')]);return db[_0xf693('0x2d')][_0xf693('0x39')](_0x7fdc22)[_0xf693('0x23')](handleEntityNotFound(_0x83cd35,null))['then'](respondWithResult(_0x83cd35,null))['catch'](handleError(_0x83cd35,null));};exports[_0xf693('0x22')]=function(_0x39cfd2,_0x45bd06){if(_0x39cfd2['body']['id']){delete _0x39cfd2[_0xf693('0x3a')]['id'];}return db[_0xf693('0x2d')][_0xf693('0x39')]({'where':{'id':_0x39cfd2[_0xf693('0x2b')]['id']}})[_0xf693('0x23')](handleEntityNotFound(_0x45bd06,null))['then'](saveUpdates(_0x39cfd2[_0xf693('0x3a')],null))[_0xf693('0x23')](respondWithResult(_0x45bd06,null))[_0xf693('0x3b')](handleError(_0x45bd06,null));};exports['destroy']=function(_0x42ddc0,_0x5dc44c){return db[_0xf693('0x2d')][_0xf693('0x39')]({'where':{'id':_0x42ddc0[_0xf693('0x2b')]['id']}})[_0xf693('0x23')](handleEntityNotFound(_0x5dc44c,null))[_0xf693('0x23')](removeEntity(_0x5dc44c,null))['catch'](handleError(_0x5dc44c,null));};
\ No newline at end of file
index 613d905..ba83ada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca66=['../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./chatApplication.attributes','exports','ChatApplication','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x5f2f8f,_0x13390a){var _0x454a0f=function(_0x2c5b71){while(--_0x2c5b71){_0x5f2f8f['push'](_0x5f2f8f['shift']());}};_0x454a0f(++_0x13390a);}(_0xca66,0xb3));var _0x6ca6=function(_0x18626c,_0x4dc2c1){_0x18626c=_0x18626c-0x0;var _0x4b5de6=_0xca66[_0x18626c];return _0x4b5de6;};'use strict';var _=require(_0x6ca6('0x0'));var util=require('util');var logger=require(_0x6ca6('0x1'))(_0x6ca6('0x2'));var moment=require(_0x6ca6('0x3'));var BPromise=require('bluebird');var rp=require(_0x6ca6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6ca6('0x5'));var config=require(_0x6ca6('0x6'));var attributes=require(_0x6ca6('0x7'));module[_0x6ca6('0x8')]=function(_0x132583,_0x4ab56d){return _0x132583['define'](_0x6ca6('0x9'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6ca6('0xa'),'collate':_0x6ca6('0xb')});};
\ No newline at end of file
+var _0x4f38=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0x4cefdf,_0x34f6d2){var _0x78fc66=function(_0x3f3cc0){while(--_0x3f3cc0){_0x4cefdf['push'](_0x4cefdf['shift']());}};_0x78fc66(++_0x34f6d2);}(_0x4f38,0x11c));var _0x84f3=function(_0xaaed5b,_0x55632c){_0xaaed5b=_0xaaed5b-0x0;var _0x45eac3=_0x4f38[_0xaaed5b];return _0x45eac3;};'use strict';var _=require(_0x84f3('0x0'));var util=require('util');var logger=require(_0x84f3('0x1'))(_0x84f3('0x2'));var moment=require(_0x84f3('0x3'));var BPromise=require(_0x84f3('0x4'));var rp=require(_0x84f3('0x5'));var fs=require('fs');var path=require(_0x84f3('0x6'));var rimraf=require(_0x84f3('0x7'));var config=require(_0x84f3('0x8'));var attributes=require('./chatApplication.attributes');module[_0x84f3('0x9')]=function(_0x4a27e5,_0x4923eb){return _0x4a27e5['define'](_0x84f3('0xa'),attributes,{'tableName':_0x84f3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x84f3('0xc')});};
\ No newline at end of file
index 1235526..faefe79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5b7=['http','request','then','info','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','error','code','ChatApplication,\x20%s,\x20%s','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client'];(function(_0x40bc88,_0x5c07fd){var _0xa87651=function(_0x2170b3){while(--_0x2170b3){_0x40bc88['push'](_0x40bc88['shift']());}};_0xa87651(++_0x5c07fd);}(_0xf5b7,0x76));var _0x7f5b=function(_0x354357,_0x876b35){_0x354357=_0x354357-0x0;var _0x438970=_0xf5b7[_0x354357];return _0x438970;};'use strict';var _=require(_0x7f5b('0x0'));var util=require('util');var moment=require(_0x7f5b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f5b('0x2'));var db=require(_0x7f5b('0x3'))['db'];var utils=require(_0x7f5b('0x4'));var logger=require(_0x7f5b('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7f5b('0x6'));var client=jayson[_0x7f5b('0x7')][_0x7f5b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x53c05e,_0x221649,_0x195bfa){return new BPromise(function(_0x4ba61e,_0x4eff87){return client[_0x7f5b('0x9')](_0x53c05e,_0x195bfa)[_0x7f5b('0xa')](function(_0x5cc2f9){logger[_0x7f5b('0xb')]('ChatApplication,\x20%s,\x20%s',_0x221649,_0x7f5b('0xc'));logger[_0x7f5b('0xd')](_0x7f5b('0xe'),_0x221649,_0x7f5b('0xc'),JSON['stringify'](_0x5cc2f9));if(_0x5cc2f9[_0x7f5b('0xf')]){if(_0x5cc2f9[_0x7f5b('0xf')][_0x7f5b('0x10')]===0x1f4){logger[_0x7f5b('0xf')](_0x7f5b('0x11'),_0x221649,_0x5cc2f9[_0x7f5b('0xf')][_0x7f5b('0x12')]);return _0x4eff87(_0x5cc2f9[_0x7f5b('0xf')][_0x7f5b('0x12')]);}logger[_0x7f5b('0xf')]('ChatApplication,\x20%s,\x20%s',_0x221649,_0x5cc2f9['error'][_0x7f5b('0x12')]);return _0x4ba61e(_0x5cc2f9['error'][_0x7f5b('0x12')]);}else{logger[_0x7f5b('0xb')](_0x7f5b('0x11'),_0x221649,_0x7f5b('0xc'));_0x4ba61e(_0x5cc2f9[_0x7f5b('0x13')][_0x7f5b('0x12')]);}})[_0x7f5b('0x14')](function(_0x1e3203){logger[_0x7f5b('0xf')](_0x7f5b('0x11'),_0x221649,_0x1e3203);_0x4eff87(_0x1e3203);});});}
\ No newline at end of file
+var _0x623d=['debug','request\x20sent','stringify','error','code','ChatApplication,\x20%s,\x20%s','message','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x48783c,_0x1f986b){var _0x2ce586=function(_0x38e1bd){while(--_0x38e1bd){_0x48783c['push'](_0x48783c['shift']());}};_0x2ce586(++_0x1f986b);}(_0x623d,0x12e));var _0xd623=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x623d[_0x432682];return _0x463d05;};'use strict';var _=require(_0xd623('0x0'));var util=require('util');var moment=require(_0xd623('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd623('0x2'));var db=require(_0xd623('0x3'))['db'];var utils=require(_0xd623('0x4'));var logger=require(_0xd623('0x5'))(_0xd623('0x6'));var config=require('../../config/environment');var jayson=require(_0xd623('0x7'));var client=jayson[_0xd623('0x8')][_0xd623('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x278cb1,_0x26e84c,_0x71dd17){return new BPromise(function(_0x56dc18,_0x3fd5d7){return client[_0xd623('0xa')](_0x278cb1,_0x71dd17)[_0xd623('0xb')](function(_0x22935b){logger[_0xd623('0xc')]('ChatApplication,\x20%s,\x20%s',_0x26e84c,'request\x20sent');logger[_0xd623('0xd')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x26e84c,_0xd623('0xe'),JSON[_0xd623('0xf')](_0x22935b));if(_0x22935b[_0xd623('0x10')]){if(_0x22935b[_0xd623('0x10')][_0xd623('0x11')]===0x1f4){logger[_0xd623('0x10')](_0xd623('0x12'),_0x26e84c,_0x22935b['error'][_0xd623('0x13')]);return _0x3fd5d7(_0x22935b[_0xd623('0x10')][_0xd623('0x13')]);}logger[_0xd623('0x10')](_0xd623('0x12'),_0x26e84c,_0x22935b['error'][_0xd623('0x13')]);return _0x56dc18(_0x22935b[_0xd623('0x10')][_0xd623('0x13')]);}else{logger[_0xd623('0xc')](_0xd623('0x12'),_0x26e84c,_0xd623('0xe'));_0x56dc18(_0x22935b['result'][_0xd623('0x13')]);}})[_0xd623('0x14')](function(_0xa29a2a){logger[_0xd623('0x10')]('ChatApplication,\x20%s,\x20%s',_0x26e84c,_0xa29a2a);_0x3fd5d7(_0xa29a2a);});});}
\ No newline at end of file
index 9eab644..da44e41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30af=['/:id','isAuthenticated','show','update','destroy','exports','multer','util','path','connect-timeout','express','../../components/interaction/service','get'];(function(_0x23002b,_0x33cc05){var _0x54a86c=function(_0x39d003){while(--_0x39d003){_0x23002b['push'](_0x23002b['shift']());}};_0x54a86c(++_0x33cc05);}(_0x30af,0x1c0));var _0xf30a=function(_0x27380a,_0x11b4db){_0x27380a=_0x27380a-0x0;var _0x49557d=_0x30af[_0x27380a];return _0x49557d;};'use strict';var multer=require(_0xf30a('0x0'));var util=require(_0xf30a('0x1'));var path=require(_0xf30a('0x2'));var timeout=require(_0xf30a('0x3'));var express=require(_0xf30a('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf30a('0x5'));var config=require('../../config/environment');var controller=require('./chatApplication.controller');router[_0xf30a('0x6')](_0xf30a('0x7'),auth[_0xf30a('0x8')](),controller[_0xf30a('0x9')]);router['put'](_0xf30a('0x7'),auth['isAuthenticated'](),controller[_0xf30a('0xa')]);router['delete'](_0xf30a('0x7'),auth[_0xf30a('0x8')](),controller[_0xf30a('0xb')]);module[_0xf30a('0xc')]=router;
\ No newline at end of file
+var _0x265c=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','put'];(function(_0x36f7cb,_0x245db1){var _0xacbfd5=function(_0x2d70cc){while(--_0x2d70cc){_0x36f7cb['push'](_0x36f7cb['shift']());}};_0xacbfd5(++_0x245db1);}(_0x265c,0x125));var _0xc265=function(_0x307af2,_0x41c51a){_0x307af2=_0x307af2-0x0;var _0x4aca63=_0x265c[_0x307af2];return _0x4aca63;};'use strict';var multer=require(_0xc265('0x0'));var util=require(_0xc265('0x1'));var path=require(_0xc265('0x2'));var timeout=require(_0xc265('0x3'));var express=require(_0xc265('0x4'));var router=express['Router']();var fs_extra=require(_0xc265('0x5'));var auth=require(_0xc265('0x6'));var interaction=require(_0xc265('0x7'));var config=require(_0xc265('0x8'));var controller=require('./chatApplication.controller');router[_0xc265('0x9')](_0xc265('0xa'),auth[_0xc265('0xb')](),controller['show']);router[_0xc265('0xc')](_0xc265('0xa'),auth[_0xc265('0xb')](),controller[_0xc265('0xd')]);router[_0xc265('0xe')](_0xc265('0xa'),auth[_0xc265('0xb')](),controller[_0xc265('0xf')]);module[_0xc265('0x10')]=router;
\ No newline at end of file
index 36601b7..77c1755 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09b1=['exports','STRING','BOOLEAN','sequelize'];(function(_0x17afb2,_0x261563){var _0x4cb006=function(_0x5b3b29){while(--_0x5b3b29){_0x17afb2['push'](_0x17afb2['shift']());}};_0x4cb006(++_0x261563);}(_0x09b1,0xa7));var _0x109b=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0x09b1[_0x5a776b];return _0xbbef59;};'use strict';var Sequelize=require(_0x109b('0x0'));module[_0x109b('0x1')]={'name':{'type':Sequelize[_0x109b('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x109b('0x2')]},'write':{'type':Sequelize[_0x109b('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x2687=['exports','STRING','BOOLEAN','sequelize'];(function(_0x42890a,_0x4e6dd4){var _0x459102=function(_0x47b2bb){while(--_0x47b2bb){_0x42890a['push'](_0x42890a['shift']());}};_0x459102(++_0x4e6dd4);}(_0x2687,0x8f));var _0x7268=function(_0x3bbd1f,_0x119571){_0x3bbd1f=_0x3bbd1f-0x0;var _0x4cb1fe=_0x2687[_0x3bbd1f];return _0x4cb1fe;};'use strict';var Sequelize=require(_0x7268('0x0'));module[_0x7268('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x7268('0x2')]},'write':{'type':Sequelize[_0x7268('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 40befe6..8d17af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4197=['create','body','params','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','getMembers','findOne','order','options','hasOwnProperty','removeMembers','addMessage','ChatGroupId','$gte','split','format','getMessages','nolimit','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','socket.io-emitter','./chatGroup.socket','register','sendStatus','end','undefined','limit','count','offset','status','set','Content-Range','json','apply','reject','update','destroy','then','error','stack','map','fieldName','type','key','model','name','keys','query','filters','intersection','attributes','fields','length','sort','where','pick','filter','merge','VIRTUAL','ChatGroup','include','findAll','rows','catch','rawAttributes','find'];(function(_0x3f5309,_0x3f30e9){var _0x206858=function(_0x7a7a6f){while(--_0x7a7a6f){_0x3f5309['push'](_0x3f5309['shift']());}};_0x206858(++_0x3f30e9);}(_0x4197,0xd1));var _0x7419=function(_0x55bebc,_0x4dbb47){_0x55bebc=_0x55bebc-0x0;var _0x173674=_0x4197[_0x55bebc];return _0x173674;};'use strict';var emlformat=require(_0x7419('0x0'));var rimraf=require(_0x7419('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7419('0x2'));var rp=require(_0x7419('0x3'));var moment=require(_0x7419('0x4'));var BPromise=require(_0x7419('0x5'));var Mustache=require(_0x7419('0x6'));var util=require('util');var path=require('path');var sox=require(_0x7419('0x7'));var csv=require('to-csv');var ejs=require(_0x7419('0x8'));var fs=require('fs');var fs_extra=require(_0x7419('0x9'));var _=require(_0x7419('0xa'));var squel=require(_0x7419('0xb'));var crypto=require('crypto');var jsforce=require(_0x7419('0xc'));var deskjs=require(_0x7419('0xd'));var toCsv=require('to-csv');var querystring=require(_0x7419('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7419('0xf'));var qs=require(_0x7419('0x10'));var as=require(_0x7419('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7419('0x12'))(_0x7419('0x13'));var utils=require(_0x7419('0x14'));var config=require(_0x7419('0x15'));var licenseUtil=require(_0x7419('0x16'));var db=require('../../mysqldb')['db'];config[_0x7419('0x17')]=_['defaults'](config[_0x7419('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x7419('0x18'))(new Redis(config['redis']));require(_0x7419('0x19'))[_0x7419('0x1a')](socket);function respondWithStatusCode(_0x33c059,_0x4d78e3){_0x4d78e3=_0x4d78e3||0xcc;return function(_0x268342){if(_0x268342){return _0x33c059[_0x7419('0x1b')](_0x4d78e3);}return _0x33c059['status'](_0x4d78e3)[_0x7419('0x1c')]();};}function respondWithResult(_0x49107b,_0x2ccbe5){_0x2ccbe5=_0x2ccbe5||0xc8;return function(_0x57ff95){if(_0x57ff95){return _0x49107b['status'](_0x2ccbe5)['json'](_0x57ff95);}};}function respondWithFilteredResult(_0x5d35e4,_0x4029c8){return function(_0x2364e4){if(_0x2364e4){var _0x11b04c=typeof _0x4029c8['offset']===_0x7419('0x1d')&&typeof _0x4029c8[_0x7419('0x1e')]===_0x7419('0x1d');var _0x9269c2=_0x2364e4[_0x7419('0x1f')];var _0x15db56=_0x11b04c?0x0:_0x4029c8['offset'];var _0x36239c=_0x11b04c?_0x2364e4[_0x7419('0x1f')]:_0x4029c8[_0x7419('0x20')]+_0x4029c8['limit'];var _0x33861b;if(_0x36239c>=_0x9269c2){_0x36239c=_0x9269c2;_0x33861b=0xc8;}else{_0x33861b=0xce;}_0x5d35e4[_0x7419('0x21')](_0x33861b);return _0x5d35e4[_0x7419('0x22')](_0x7419('0x23'),_0x15db56+'-'+_0x36239c+'/'+_0x9269c2)[_0x7419('0x24')](_0x2364e4);}return null;};}function patchUpdates(_0xbb931a){return function(_0x598510){try{jsonpatch[_0x7419('0x25')](_0x598510,_0xbb931a,!![]);}catch(_0x147187){return BPromise[_0x7419('0x26')](_0x147187);}return _0x598510['save']();};}function saveUpdates(_0x151640,_0x52f537){return function(_0x505baf){if(_0x505baf){return _0x505baf[_0x7419('0x27')](_0x151640)['then'](function(_0x175064){return _0x175064;});}return null;};}function removeEntity(_0x53847a,_0x63e87){return function(_0x18f0c1){if(_0x18f0c1){return _0x18f0c1[_0x7419('0x28')]()[_0x7419('0x29')](function(){_0x53847a[_0x7419('0x21')](0xcc)[_0x7419('0x1c')]();});}};}function handleEntityNotFound(_0x4dbde6,_0x2ab777){return function(_0x548fb5){if(!_0x548fb5){_0x4dbde6[_0x7419('0x1b')](0x194);}return _0x548fb5;};}function handleError(_0x10631b,_0x56d966){_0x56d966=_0x56d966||0x1f4;return function(_0x1f291a){logger[_0x7419('0x2a')](_0x1f291a[_0x7419('0x2b')]);if(_0x1f291a['name']){delete _0x1f291a['name'];}_0x10631b[_0x7419('0x21')](_0x56d966)['send'](_0x1f291a);};}exports['index']=function(_0x5d1be1,_0x3e351c){var _0x104eec={},_0x4bc9a3={},_0x224761={'count':0x0,'rows':[]};var _0x6b8e60=_[_0x7419('0x2c')](db['ChatGroup']['rawAttributes'],function(_0x29876b){return{'name':_0x29876b[_0x7419('0x2d')],'type':_0x29876b[_0x7419('0x2e')][_0x7419('0x2f')]};});_0x4bc9a3[_0x7419('0x30')]=_[_0x7419('0x2c')](_0x6b8e60,_0x7419('0x31'));_0x4bc9a3['query']=_[_0x7419('0x32')](_0x5d1be1[_0x7419('0x33')]);_0x4bc9a3[_0x7419('0x34')]=_[_0x7419('0x35')](_0x4bc9a3['model'],_0x4bc9a3[_0x7419('0x33')]);_0x104eec[_0x7419('0x36')]=_[_0x7419('0x35')](_0x4bc9a3[_0x7419('0x30')],qs['fields'](_0x5d1be1[_0x7419('0x33')][_0x7419('0x37')]));_0x104eec[_0x7419('0x36')]=_0x104eec[_0x7419('0x36')][_0x7419('0x38')]?_0x104eec['attributes']:_0x4bc9a3['model'];if(!_0x5d1be1['query']['hasOwnProperty']('nolimit')){_0x104eec['limit']=qs[_0x7419('0x1e')](_0x5d1be1[_0x7419('0x33')][_0x7419('0x1e')]);_0x104eec['offset']=qs[_0x7419('0x20')](_0x5d1be1['query'][_0x7419('0x20')]);}_0x104eec['order']=qs[_0x7419('0x39')](_0x5d1be1['query'][_0x7419('0x39')]);_0x104eec[_0x7419('0x3a')]=qs[_0x7419('0x34')](_[_0x7419('0x3b')](_0x5d1be1[_0x7419('0x33')],_0x4bc9a3['filters']),_0x6b8e60);if(_0x5d1be1[_0x7419('0x33')][_0x7419('0x3c')]){_0x104eec[_0x7419('0x3a')]=_[_0x7419('0x3d')](_0x104eec['where'],{'$or':_[_0x7419('0x2c')](_0x6b8e60,function(_0x10e0d7){if(_0x10e0d7['type']!==_0x7419('0x3e')){var _0x30253d={};_0x30253d[_0x10e0d7[_0x7419('0x31')]]={'$like':'%'+_0x5d1be1[_0x7419('0x33')][_0x7419('0x3c')]+'%'};return _0x30253d;}})});}_0x104eec=_[_0x7419('0x3d')]({},_0x104eec,_0x5d1be1['options']);var _0x1c5e28={'where':_0x104eec[_0x7419('0x3a')]};return db[_0x7419('0x3f')][_0x7419('0x1f')](_0x1c5e28)[_0x7419('0x29')](function(_0x377c58){_0x224761[_0x7419('0x1f')]=_0x377c58;if(_0x5d1be1['query']['includeAll']){_0x104eec[_0x7419('0x40')]=[{'all':!![]}];}return db[_0x7419('0x3f')][_0x7419('0x41')](_0x104eec);})[_0x7419('0x29')](function(_0x427738){_0x224761[_0x7419('0x42')]=_0x427738;return _0x224761;})[_0x7419('0x29')](respondWithFilteredResult(_0x3e351c,_0x104eec))[_0x7419('0x43')](handleError(_0x3e351c,null));};exports['show']=function(_0x75829e,_0x1a867a){var _0x352ac7={'raw':!![],'where':{'id':_0x75829e['params']['id']}},_0x555426={};_0x555426[_0x7419('0x30')]=_[_0x7419('0x32')](db[_0x7419('0x3f')][_0x7419('0x44')]);_0x555426[_0x7419('0x33')]=_[_0x7419('0x32')](_0x75829e['query']);_0x555426[_0x7419('0x34')]=_[_0x7419('0x35')](_0x555426[_0x7419('0x30')],_0x555426[_0x7419('0x33')]);_0x352ac7[_0x7419('0x36')]=_[_0x7419('0x35')](_0x555426[_0x7419('0x30')],qs[_0x7419('0x37')](_0x75829e[_0x7419('0x33')][_0x7419('0x37')]));_0x352ac7[_0x7419('0x36')]=_0x352ac7[_0x7419('0x36')][_0x7419('0x38')]?_0x352ac7[_0x7419('0x36')]:_0x555426[_0x7419('0x30')];if(_0x75829e['query']['includeAll']){_0x352ac7[_0x7419('0x40')]=[{'all':!![]}];}_0x352ac7=_[_0x7419('0x3d')]({},_0x352ac7,_0x75829e['options']);return db[_0x7419('0x3f')][_0x7419('0x45')](_0x352ac7)['then'](handleEntityNotFound(_0x1a867a,null))[_0x7419('0x29')](respondWithResult(_0x1a867a,null))['catch'](handleError(_0x1a867a,null));};exports['create']=function(_0x4c4981,_0x210ff7){return db[_0x7419('0x3f')][_0x7419('0x46')](_0x4c4981[_0x7419('0x47')],{})['then'](respondWithResult(_0x210ff7,0xc9))[_0x7419('0x43')](handleError(_0x210ff7,null));};exports[_0x7419('0x27')]=function(_0x5d31f5,_0x366135){if(_0x5d31f5[_0x7419('0x47')]['id']){delete _0x5d31f5[_0x7419('0x47')]['id'];}return db[_0x7419('0x3f')][_0x7419('0x45')]({'where':{'id':_0x5d31f5['params']['id']}})[_0x7419('0x29')](handleEntityNotFound(_0x366135,null))[_0x7419('0x29')](saveUpdates(_0x5d31f5['body'],null))[_0x7419('0x29')](respondWithResult(_0x366135,null))[_0x7419('0x43')](handleError(_0x366135,null));};exports[_0x7419('0x28')]=function(_0x15206d,_0x43dc5a){return db['ChatGroup'][_0x7419('0x45')]({'where':{'id':_0x15206d[_0x7419('0x48')]['id']}})[_0x7419('0x29')](handleEntityNotFound(_0x43dc5a,null))[_0x7419('0x29')](removeEntity(_0x43dc5a,null))['catch'](handleError(_0x43dc5a,null));};exports[_0x7419('0x49')]=function(_0x151e54,_0x5c7071){return db[_0x7419('0x3f')]['describe']()[_0x7419('0x29')](respondWithResult(_0x5c7071,null))[_0x7419('0x43')](handleError(_0x5c7071,null));};exports[_0x7419('0x4a')]=function(_0x3f5f91,_0xad6424,_0x462ca7){return db[_0x7419('0x4b')][_0x7419('0x1f')]({'where':{'ChatGroupId':_0x3f5f91['params']['id'],'ToId':_0x3f5f91[_0x7419('0x4c')]['id'],'read':![]}})[_0x7419('0x29')](function(_0x14fa47){return{'id':_[_0x7419('0x4d')](_0x3f5f91['params']['id']),'count':_0x14fa47};})[_0x7419('0x29')](respondWithResult(_0xad6424,null))[_0x7419('0x43')](handleError(_0xad6424,null));};exports[_0x7419('0x4e')]=function(_0x176d50,_0x1b1edb,_0x558b4d){return db[_0x7419('0x3f')][_0x7419('0x45')]({'where':{'id':_0x176d50[_0x7419('0x48')]['id']}})['then'](handleEntityNotFound(_0x1b1edb,null))[_0x7419('0x29')](function(_0x34d34d){if(_0x34d34d){return _0x34d34d[_0x7419('0x4e')](_0x176d50[_0x7419('0x47')][_0x7419('0x4f')],_['omit'](_0x176d50['body'],[_0x7419('0x4f'),'id'])||{});}})[_0x7419('0x29')](respondWithResult(_0x1b1edb,null))[_0x7419('0x43')](handleError(_0x1b1edb,null));};exports[_0x7419('0x50')]=function(_0x43f225,_0x202aa4,_0x32646d){var _0x5f8355={};var _0x1dd8d0={};var _0x5a166d;var _0x46bd9e;return db[_0x7419('0x3f')][_0x7419('0x51')]({'where':{'id':_0x43f225[_0x7419('0x48')]['id']}})[_0x7419('0x29')](handleEntityNotFound(_0x202aa4,null))[_0x7419('0x29')](function(_0x4715d7){if(_0x4715d7){_0x5a166d=_0x4715d7;_0x1dd8d0[_0x7419('0x30')]=_['keys'](db['User']['rawAttributes']);_0x1dd8d0[_0x7419('0x33')]=_[_0x7419('0x32')](_0x43f225[_0x7419('0x33')]);_0x1dd8d0[_0x7419('0x34')]=_['intersection'](_0x1dd8d0[_0x7419('0x30')],_0x1dd8d0[_0x7419('0x33')]);_0x5f8355[_0x7419('0x36')]=_['intersection'](_0x1dd8d0[_0x7419('0x30')],qs[_0x7419('0x37')](_0x43f225['query']['fields']));_0x5f8355[_0x7419('0x36')]=_0x5f8355['attributes'][_0x7419('0x38')]?_0x5f8355[_0x7419('0x36')]:_0x1dd8d0[_0x7419('0x30')];_0x5f8355[_0x7419('0x52')]=qs[_0x7419('0x39')](_0x43f225[_0x7419('0x33')][_0x7419('0x39')]);_0x5f8355[_0x7419('0x3a')]=qs[_0x7419('0x34')](_[_0x7419('0x3b')](_0x43f225[_0x7419('0x33')],_0x1dd8d0['filters']));if(_0x43f225['query']['filter']){_0x5f8355[_0x7419('0x3a')]=_[_0x7419('0x3d')](_0x5f8355[_0x7419('0x3a')],{'$or':_[_0x7419('0x2c')](_0x5f8355[_0x7419('0x36')],function(_0x50354f){var _0x1ceb8e={};_0x1ceb8e[_0x50354f]={'$like':'%'+_0x43f225['query'][_0x7419('0x3c')]+'%'};return _0x1ceb8e;})});}_0x5f8355=_[_0x7419('0x3d')]({},_0x5f8355,_0x43f225[_0x7419('0x53')]);return _0x5a166d[_0x7419('0x50')](_0x5f8355);}})['then'](function(_0x21f077){if(_0x21f077){_0x46bd9e=_0x21f077[_0x7419('0x38')];if(!_0x43f225[_0x7419('0x33')][_0x7419('0x54')]('nolimit')){_0x5f8355[_0x7419('0x1e')]=qs['limit'](_0x43f225['query'][_0x7419('0x1e')]);_0x5f8355[_0x7419('0x20')]=qs['offset'](_0x43f225['query'][_0x7419('0x20')]);}return _0x5a166d[_0x7419('0x50')](_0x5f8355);}})[_0x7419('0x29')](function(_0x5a4fb5){if(_0x5a4fb5){return _0x5a4fb5?{'count':_0x46bd9e,'rows':_0x5a4fb5}:null;}})[_0x7419('0x29')](respondWithResult(_0x202aa4,null))['catch'](handleError(_0x202aa4,null));};exports[_0x7419('0x55')]=function(_0x2093df,_0x434534,_0x55e406){return db['ChatGroup'][_0x7419('0x45')]({'where':{'id':_0x2093df[_0x7419('0x48')]['id']}})[_0x7419('0x29')](handleEntityNotFound(_0x434534,null))[_0x7419('0x29')](function(_0x302cc5){if(_0x302cc5){return _0x302cc5[_0x7419('0x55')](_0x2093df[_0x7419('0x33')][_0x7419('0x4f')]);}})['then'](respondWithStatusCode(_0x434534,null))['catch'](handleError(_0x434534,null));};exports[_0x7419('0x56')]=function(_0x28e6db,_0x3d867c,_0x5361a0){if(_0x28e6db['body']['id']){delete _0x28e6db[_0x7419('0x47')]['id'];}return db[_0x7419('0x3f')]['find']({'where':{'id':_0x28e6db['params']['id']}})[_0x7419('0x29')](handleEntityNotFound(_0x3d867c,null))[_0x7419('0x29')](function(_0x88cd14){if(_0x88cd14){_0x28e6db['body'][_0x7419('0x57')]=_0x88cd14['id'];return db[_0x7419('0x4b')][_0x7419('0x46')](_0x28e6db['body']);}})[_0x7419('0x29')](respondWithResult(_0x3d867c,null))['catch'](handleError(_0x3d867c,null));};exports['getMessages']=function(_0x2924a4,_0x494c58,_0x2ef965){var _0xf112d9={};var _0x2d5e0f={};var _0x48de85;var _0x53d2bf;return db['ChatGroup'][_0x7419('0x51')]({'where':{'id':_0x2924a4[_0x7419('0x48')]['id']}})[_0x7419('0x29')](handleEntityNotFound(_0x494c58,null))[_0x7419('0x29')](function(_0x4a6048){if(_0x4a6048){_0x48de85=_0x4a6048;_0x2d5e0f[_0x7419('0x30')]=_['keys'](db['ChatInternalMessage'][_0x7419('0x44')]);_0x2d5e0f[_0x7419('0x33')]=_['keys'](_0x2924a4[_0x7419('0x33')]);_0x2d5e0f['filters']=_[_0x7419('0x35')](_0x2d5e0f['model'],_0x2d5e0f[_0x7419('0x33')]);_0xf112d9[_0x7419('0x36')]=_['intersection'](_0x2d5e0f[_0x7419('0x30')],qs['fields'](_0x2924a4[_0x7419('0x33')][_0x7419('0x37')]));_0xf112d9[_0x7419('0x36')]=_0xf112d9[_0x7419('0x36')][_0x7419('0x38')]?_0xf112d9[_0x7419('0x36')]:_0x2d5e0f[_0x7419('0x30')];_0xf112d9['order']=qs[_0x7419('0x39')](_0x2924a4[_0x7419('0x33')][_0x7419('0x39')]);_0xf112d9[_0x7419('0x3a')]=qs[_0x7419('0x34')](_[_0x7419('0x3b')](_0x2924a4[_0x7419('0x33')],_0x2d5e0f[_0x7419('0x34')]));if(_0x2924a4[_0x7419('0x33')]['filter']){_0xf112d9['where']=_['merge'](_0xf112d9[_0x7419('0x3a')],{'$or':_[_0x7419('0x2c')](_0xf112d9['attributes'],function(_0x3a79d1){var _0x4c6f9e={};_0x4c6f9e[_0x3a79d1]={'$like':'%'+_0x2924a4[_0x7419('0x33')][_0x7419('0x3c')]+'%'};return _0x4c6f9e;})});}if(_0x2924a4[_0x7419('0x33')]['$gte']){var _0x2e14ff=_0x2924a4[_0x7419('0x33')][_0x7419('0x58')][_0x7419('0x59')](',');var _0x17231a={};_0x17231a[_0x2e14ff[0x0]]={'$gte':moment(_0x2e14ff[0x1])[_0x7419('0x5a')]('YYYY-MM-DD\x20HH:mm:ss')};_0xf112d9['where']=_['merge'](_0xf112d9[_0x7419('0x3a')],_0x17231a);}_0xf112d9=_['merge']({},_0xf112d9,_0x2924a4['options']);return _0x48de85[_0x7419('0x5b')](_0xf112d9);}})[_0x7419('0x29')](function(_0x330a7a){if(_0x330a7a){_0x53d2bf=_0x330a7a['length'];if(!_0x2924a4['query']['hasOwnProperty'](_0x7419('0x5c'))){_0xf112d9[_0x7419('0x1e')]=qs[_0x7419('0x1e')](_0x2924a4[_0x7419('0x33')][_0x7419('0x1e')]);_0xf112d9[_0x7419('0x20')]=qs[_0x7419('0x20')](_0x2924a4['query'][_0x7419('0x20')]);}return _0x48de85[_0x7419('0x5b')](_0xf112d9);}})[_0x7419('0x29')](function(_0x1727f3){if(_0x1727f3){return _0x1727f3?{'count':_0x53d2bf,'rows':_0x1727f3}:null;}})[_0x7419('0x29')](respondWithResult(_0x494c58,null))['catch'](handleError(_0x494c58,null));};
\ No newline at end of file
+var _0xc283=['limit','count','offset','set','Content-Range','apply','reject','update','destroy','sendStatus','stack','index','fieldName','type','key','model','name','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','then','ChatGroup','rows','catch','show','rawAttributes','includeAll','find','create','body','params','describe','ChatInternalMessage','toInteger','addMembers','ids','omit','getMembers','findOne','User','order','removeMembers','addMessage','getMessages','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','status','end','json','undefined'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xc283,0x96));var _0x3c28=function(_0x14f733,_0x2d3a97){_0x14f733=_0x14f733-0x0;var _0x51fe88=_0xc283[_0x14f733];return _0x51fe88;};'use strict';var emlformat=require(_0x3c28('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3c28('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3c28('0x2'));var moment=require(_0x3c28('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3c28('0x4'));var util=require(_0x3c28('0x5'));var path=require('path');var sox=require(_0x3c28('0x6'));var csv=require(_0x3c28('0x7'));var ejs=require(_0x3c28('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c28('0x9'));var squel=require(_0x3c28('0xa'));var crypto=require('crypto');var jsforce=require(_0x3c28('0xb'));var deskjs=require(_0x3c28('0xc'));var toCsv=require('to-csv');var querystring=require(_0x3c28('0xd'));var Papa=require(_0x3c28('0xe'));var Redis=require('ioredis');var authService=require(_0x3c28('0xf'));var qs=require(_0x3c28('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3c28('0x11'));var utils=require(_0x3c28('0x12'));var config=require(_0x3c28('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x3c28('0x14'))['db'];config[_0x3c28('0x15')]=_[_0x3c28('0x16')](config[_0x3c28('0x15')],{'host':_0x3c28('0x17'),'port':0x18eb});var socket=require(_0x3c28('0x18'))(new Redis(config[_0x3c28('0x15')]));require(_0x3c28('0x19'))['register'](socket);function respondWithStatusCode(_0x31ef1c,_0x322f88){_0x322f88=_0x322f88||0xcc;return function(_0x31213a){if(_0x31213a){return _0x31ef1c['sendStatus'](_0x322f88);}return _0x31ef1c[_0x3c28('0x1a')](_0x322f88)[_0x3c28('0x1b')]();};}function respondWithResult(_0x276466,_0x32a3ef){_0x32a3ef=_0x32a3ef||0xc8;return function(_0x67110){if(_0x67110){return _0x276466[_0x3c28('0x1a')](_0x32a3ef)[_0x3c28('0x1c')](_0x67110);}};}function respondWithFilteredResult(_0x4c94c4,_0x387444){return function(_0x28cd18){if(_0x28cd18){var _0x518833=typeof _0x387444['offset']===_0x3c28('0x1d')&&typeof _0x387444[_0x3c28('0x1e')]===_0x3c28('0x1d');var _0x5490bf=_0x28cd18[_0x3c28('0x1f')];var _0x3919c7=_0x518833?0x0:_0x387444['offset'];var _0x1393bc=_0x518833?_0x28cd18[_0x3c28('0x1f')]:_0x387444[_0x3c28('0x20')]+_0x387444['limit'];var _0xf7e224;if(_0x1393bc>=_0x5490bf){_0x1393bc=_0x5490bf;_0xf7e224=0xc8;}else{_0xf7e224=0xce;}_0x4c94c4[_0x3c28('0x1a')](_0xf7e224);return _0x4c94c4[_0x3c28('0x21')](_0x3c28('0x22'),_0x3919c7+'-'+_0x1393bc+'/'+_0x5490bf)[_0x3c28('0x1c')](_0x28cd18);}return null;};}function patchUpdates(_0x273078){return function(_0x1f495c){try{jsonpatch[_0x3c28('0x23')](_0x1f495c,_0x273078,!![]);}catch(_0x3a2fec){return BPromise[_0x3c28('0x24')](_0x3a2fec);}return _0x1f495c['save']();};}function saveUpdates(_0x27d68a,_0x46ce93){return function(_0x18e7a8){if(_0x18e7a8){return _0x18e7a8[_0x3c28('0x25')](_0x27d68a)['then'](function(_0x2620d4){return _0x2620d4;});}return null;};}function removeEntity(_0x28b6df,_0x3607b2){return function(_0xa033ea){if(_0xa033ea){return _0xa033ea[_0x3c28('0x26')]()['then'](function(){_0x28b6df[_0x3c28('0x1a')](0xcc)[_0x3c28('0x1b')]();});}};}function handleEntityNotFound(_0x1984fc,_0x5c67a0){return function(_0x21a658){if(!_0x21a658){_0x1984fc[_0x3c28('0x27')](0x194);}return _0x21a658;};}function handleError(_0xdc5e4a,_0x4e447f){_0x4e447f=_0x4e447f||0x1f4;return function(_0x50eb80){logger['error'](_0x50eb80[_0x3c28('0x28')]);if(_0x50eb80['name']){delete _0x50eb80['name'];}_0xdc5e4a[_0x3c28('0x1a')](_0x4e447f)['send'](_0x50eb80);};}exports[_0x3c28('0x29')]=function(_0x47e8fa,_0x50900c){var _0x2712ae={},_0x163d91={},_0x4444d6={'count':0x0,'rows':[]};var _0x53439d=_['map'](db['ChatGroup']['rawAttributes'],function(_0x5de78b){return{'name':_0x5de78b[_0x3c28('0x2a')],'type':_0x5de78b[_0x3c28('0x2b')][_0x3c28('0x2c')]};});_0x163d91[_0x3c28('0x2d')]=_['map'](_0x53439d,_0x3c28('0x2e'));_0x163d91['query']=_[_0x3c28('0x2f')](_0x47e8fa['query']);_0x163d91[_0x3c28('0x30')]=_[_0x3c28('0x31')](_0x163d91[_0x3c28('0x2d')],_0x163d91[_0x3c28('0x32')]);_0x2712ae[_0x3c28('0x33')]=_[_0x3c28('0x31')](_0x163d91[_0x3c28('0x2d')],qs[_0x3c28('0x34')](_0x47e8fa[_0x3c28('0x32')]['fields']));_0x2712ae[_0x3c28('0x33')]=_0x2712ae[_0x3c28('0x33')][_0x3c28('0x35')]?_0x2712ae[_0x3c28('0x33')]:_0x163d91[_0x3c28('0x2d')];if(!_0x47e8fa[_0x3c28('0x32')][_0x3c28('0x36')](_0x3c28('0x37'))){_0x2712ae[_0x3c28('0x1e')]=qs[_0x3c28('0x1e')](_0x47e8fa[_0x3c28('0x32')][_0x3c28('0x1e')]);_0x2712ae[_0x3c28('0x20')]=qs[_0x3c28('0x20')](_0x47e8fa[_0x3c28('0x32')][_0x3c28('0x20')]);}_0x2712ae['order']=qs[_0x3c28('0x38')](_0x47e8fa[_0x3c28('0x32')][_0x3c28('0x38')]);_0x2712ae[_0x3c28('0x39')]=qs['filters'](_[_0x3c28('0x3a')](_0x47e8fa[_0x3c28('0x32')],_0x163d91['filters']),_0x53439d);if(_0x47e8fa[_0x3c28('0x32')][_0x3c28('0x3b')]){_0x2712ae['where']=_[_0x3c28('0x3c')](_0x2712ae[_0x3c28('0x39')],{'$or':_[_0x3c28('0x3d')](_0x53439d,function(_0x441659){if(_0x441659[_0x3c28('0x2b')]!==_0x3c28('0x3e')){var _0x2d2b21={};_0x2d2b21[_0x441659[_0x3c28('0x2e')]]={'$like':'%'+_0x47e8fa['query'][_0x3c28('0x3b')]+'%'};return _0x2d2b21;}})});}_0x2712ae=_[_0x3c28('0x3c')]({},_0x2712ae,_0x47e8fa[_0x3c28('0x3f')]);var _0x1f896e={'where':_0x2712ae['where']};return db['ChatGroup'][_0x3c28('0x1f')](_0x1f896e)[_0x3c28('0x40')](function(_0x5b776f){_0x4444d6[_0x3c28('0x1f')]=_0x5b776f;if(_0x47e8fa[_0x3c28('0x32')]['includeAll']){_0x2712ae['include']=[{'all':!![]}];}return db[_0x3c28('0x41')]['findAll'](_0x2712ae);})['then'](function(_0x1d3899){_0x4444d6[_0x3c28('0x42')]=_0x1d3899;return _0x4444d6;})[_0x3c28('0x40')](respondWithFilteredResult(_0x50900c,_0x2712ae))[_0x3c28('0x43')](handleError(_0x50900c,null));};exports[_0x3c28('0x44')]=function(_0x5a5c4c,_0x3fb6fb){var _0xcf7e5c={'raw':!![],'where':{'id':_0x5a5c4c['params']['id']}},_0x317a90={};_0x317a90[_0x3c28('0x2d')]=_[_0x3c28('0x2f')](db[_0x3c28('0x41')][_0x3c28('0x45')]);_0x317a90[_0x3c28('0x32')]=_[_0x3c28('0x2f')](_0x5a5c4c[_0x3c28('0x32')]);_0x317a90['filters']=_[_0x3c28('0x31')](_0x317a90['model'],_0x317a90[_0x3c28('0x32')]);_0xcf7e5c['attributes']=_[_0x3c28('0x31')](_0x317a90[_0x3c28('0x2d')],qs['fields'](_0x5a5c4c[_0x3c28('0x32')]['fields']));_0xcf7e5c['attributes']=_0xcf7e5c[_0x3c28('0x33')]['length']?_0xcf7e5c['attributes']:_0x317a90['model'];if(_0x5a5c4c['query'][_0x3c28('0x46')]){_0xcf7e5c['include']=[{'all':!![]}];}_0xcf7e5c=_['merge']({},_0xcf7e5c,_0x5a5c4c[_0x3c28('0x3f')]);return db[_0x3c28('0x41')][_0x3c28('0x47')](_0xcf7e5c)[_0x3c28('0x40')](handleEntityNotFound(_0x3fb6fb,null))[_0x3c28('0x40')](respondWithResult(_0x3fb6fb,null))['catch'](handleError(_0x3fb6fb,null));};exports[_0x3c28('0x48')]=function(_0x16333a,_0x56961c){return db[_0x3c28('0x41')][_0x3c28('0x48')](_0x16333a[_0x3c28('0x49')],{})[_0x3c28('0x40')](respondWithResult(_0x56961c,0xc9))['catch'](handleError(_0x56961c,null));};exports[_0x3c28('0x25')]=function(_0x9090da,_0x542afc){if(_0x9090da[_0x3c28('0x49')]['id']){delete _0x9090da[_0x3c28('0x49')]['id'];}return db[_0x3c28('0x41')][_0x3c28('0x47')]({'where':{'id':_0x9090da[_0x3c28('0x4a')]['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x542afc,null))[_0x3c28('0x40')](saveUpdates(_0x9090da[_0x3c28('0x49')],null))[_0x3c28('0x40')](respondWithResult(_0x542afc,null))[_0x3c28('0x43')](handleError(_0x542afc,null));};exports['destroy']=function(_0x3078d3,_0x34d253){return db[_0x3c28('0x41')][_0x3c28('0x47')]({'where':{'id':_0x3078d3[_0x3c28('0x4a')]['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x34d253,null))[_0x3c28('0x40')](removeEntity(_0x34d253,null))['catch'](handleError(_0x34d253,null));};exports[_0x3c28('0x4b')]=function(_0x3173a4,_0x53fd00){return db['ChatGroup'][_0x3c28('0x4b')]()['then'](respondWithResult(_0x53fd00,null))[_0x3c28('0x43')](handleError(_0x53fd00,null));};exports['getUnread']=function(_0x52c493,_0x474008,_0x19b55a){return db[_0x3c28('0x4c')][_0x3c28('0x1f')]({'where':{'ChatGroupId':_0x52c493[_0x3c28('0x4a')]['id'],'ToId':_0x52c493['user']['id'],'read':![]}})[_0x3c28('0x40')](function(_0x276665){return{'id':_[_0x3c28('0x4d')](_0x52c493['params']['id']),'count':_0x276665};})[_0x3c28('0x40')](respondWithResult(_0x474008,null))[_0x3c28('0x43')](handleError(_0x474008,null));};exports['addMembers']=function(_0x360739,_0x1dab0f,_0x1582f5){return db['ChatGroup']['find']({'where':{'id':_0x360739['params']['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x1dab0f,null))[_0x3c28('0x40')](function(_0x3444f3){if(_0x3444f3){return _0x3444f3[_0x3c28('0x4e')](_0x360739[_0x3c28('0x49')][_0x3c28('0x4f')],_[_0x3c28('0x50')](_0x360739[_0x3c28('0x49')],[_0x3c28('0x4f'),'id'])||{});}})['then'](respondWithResult(_0x1dab0f,null))[_0x3c28('0x43')](handleError(_0x1dab0f,null));};exports[_0x3c28('0x51')]=function(_0x1a85b1,_0x1bb188,_0x48974){var _0x4daa74={};var _0x4c3854={};var _0x3594ee;var _0x23c7c3;return db[_0x3c28('0x41')][_0x3c28('0x52')]({'where':{'id':_0x1a85b1[_0x3c28('0x4a')]['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x1bb188,null))[_0x3c28('0x40')](function(_0x37d5e7){if(_0x37d5e7){_0x3594ee=_0x37d5e7;_0x4c3854[_0x3c28('0x2d')]=_[_0x3c28('0x2f')](db[_0x3c28('0x53')]['rawAttributes']);_0x4c3854[_0x3c28('0x32')]=_[_0x3c28('0x2f')](_0x1a85b1[_0x3c28('0x32')]);_0x4c3854[_0x3c28('0x30')]=_[_0x3c28('0x31')](_0x4c3854['model'],_0x4c3854[_0x3c28('0x32')]);_0x4daa74[_0x3c28('0x33')]=_[_0x3c28('0x31')](_0x4c3854[_0x3c28('0x2d')],qs['fields'](_0x1a85b1[_0x3c28('0x32')][_0x3c28('0x34')]));_0x4daa74[_0x3c28('0x33')]=_0x4daa74[_0x3c28('0x33')][_0x3c28('0x35')]?_0x4daa74[_0x3c28('0x33')]:_0x4c3854[_0x3c28('0x2d')];_0x4daa74[_0x3c28('0x54')]=qs[_0x3c28('0x38')](_0x1a85b1[_0x3c28('0x32')][_0x3c28('0x38')]);_0x4daa74[_0x3c28('0x39')]=qs[_0x3c28('0x30')](_[_0x3c28('0x3a')](_0x1a85b1[_0x3c28('0x32')],_0x4c3854['filters']));if(_0x1a85b1['query'][_0x3c28('0x3b')]){_0x4daa74[_0x3c28('0x39')]=_[_0x3c28('0x3c')](_0x4daa74[_0x3c28('0x39')],{'$or':_['map'](_0x4daa74[_0x3c28('0x33')],function(_0x4e429c){var _0x51b453={};_0x51b453[_0x4e429c]={'$like':'%'+_0x1a85b1[_0x3c28('0x32')]['filter']+'%'};return _0x51b453;})});}_0x4daa74=_['merge']({},_0x4daa74,_0x1a85b1[_0x3c28('0x3f')]);return _0x3594ee['getMembers'](_0x4daa74);}})[_0x3c28('0x40')](function(_0x489778){if(_0x489778){_0x23c7c3=_0x489778[_0x3c28('0x35')];if(!_0x1a85b1[_0x3c28('0x32')]['hasOwnProperty']('nolimit')){_0x4daa74['limit']=qs[_0x3c28('0x1e')](_0x1a85b1['query'][_0x3c28('0x1e')]);_0x4daa74[_0x3c28('0x20')]=qs[_0x3c28('0x20')](_0x1a85b1[_0x3c28('0x32')][_0x3c28('0x20')]);}return _0x3594ee[_0x3c28('0x51')](_0x4daa74);}})[_0x3c28('0x40')](function(_0x124a8a){if(_0x124a8a){return _0x124a8a?{'count':_0x23c7c3,'rows':_0x124a8a}:null;}})[_0x3c28('0x40')](respondWithResult(_0x1bb188,null))[_0x3c28('0x43')](handleError(_0x1bb188,null));};exports[_0x3c28('0x55')]=function(_0x2fcbd2,_0x14cf2c,_0x4dabea){return db[_0x3c28('0x41')][_0x3c28('0x47')]({'where':{'id':_0x2fcbd2['params']['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x14cf2c,null))['then'](function(_0x544314){if(_0x544314){return _0x544314['removeMembers'](_0x2fcbd2['query'][_0x3c28('0x4f')]);}})[_0x3c28('0x40')](respondWithStatusCode(_0x14cf2c,null))['catch'](handleError(_0x14cf2c,null));};exports[_0x3c28('0x56')]=function(_0x166024,_0x167d4b,_0x2ea5e5){if(_0x166024['body']['id']){delete _0x166024[_0x3c28('0x49')]['id'];}return db[_0x3c28('0x41')]['find']({'where':{'id':_0x166024[_0x3c28('0x4a')]['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x167d4b,null))[_0x3c28('0x40')](function(_0x5a6ce5){if(_0x5a6ce5){_0x166024[_0x3c28('0x49')]['ChatGroupId']=_0x5a6ce5['id'];return db[_0x3c28('0x4c')][_0x3c28('0x48')](_0x166024[_0x3c28('0x49')]);}})[_0x3c28('0x40')](respondWithResult(_0x167d4b,null))['catch'](handleError(_0x167d4b,null));};exports[_0x3c28('0x57')]=function(_0x147fd8,_0x1f3373,_0x49a2dd){var _0x5569be={};var _0x5130d9={};var _0x1cae39;var _0x248bae;return db[_0x3c28('0x41')][_0x3c28('0x52')]({'where':{'id':_0x147fd8[_0x3c28('0x4a')]['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x1f3373,null))[_0x3c28('0x40')](function(_0x748a4a){if(_0x748a4a){_0x1cae39=_0x748a4a;_0x5130d9[_0x3c28('0x2d')]=_[_0x3c28('0x2f')](db[_0x3c28('0x4c')][_0x3c28('0x45')]);_0x5130d9[_0x3c28('0x32')]=_['keys'](_0x147fd8['query']);_0x5130d9[_0x3c28('0x30')]=_['intersection'](_0x5130d9[_0x3c28('0x2d')],_0x5130d9[_0x3c28('0x32')]);_0x5569be[_0x3c28('0x33')]=_[_0x3c28('0x31')](_0x5130d9[_0x3c28('0x2d')],qs[_0x3c28('0x34')](_0x147fd8[_0x3c28('0x32')][_0x3c28('0x34')]));_0x5569be[_0x3c28('0x33')]=_0x5569be['attributes'][_0x3c28('0x35')]?_0x5569be[_0x3c28('0x33')]:_0x5130d9[_0x3c28('0x2d')];_0x5569be[_0x3c28('0x54')]=qs[_0x3c28('0x38')](_0x147fd8[_0x3c28('0x32')][_0x3c28('0x38')]);_0x5569be['where']=qs['filters'](_[_0x3c28('0x3a')](_0x147fd8[_0x3c28('0x32')],_0x5130d9[_0x3c28('0x30')]));if(_0x147fd8[_0x3c28('0x32')][_0x3c28('0x3b')]){_0x5569be[_0x3c28('0x39')]=_[_0x3c28('0x3c')](_0x5569be[_0x3c28('0x39')],{'$or':_[_0x3c28('0x3d')](_0x5569be['attributes'],function(_0x1f6b07){var _0x2db3d5={};_0x2db3d5[_0x1f6b07]={'$like':'%'+_0x147fd8[_0x3c28('0x32')]['filter']+'%'};return _0x2db3d5;})});}if(_0x147fd8['query']['$gte']){var _0xc810e6=_0x147fd8['query']['$gte']['split'](',');var _0x19f78d={};_0x19f78d[_0xc810e6[0x0]]={'$gte':moment(_0xc810e6[0x1])[_0x3c28('0x58')](_0x3c28('0x59'))};_0x5569be['where']=_[_0x3c28('0x3c')](_0x5569be[_0x3c28('0x39')],_0x19f78d);}_0x5569be=_['merge']({},_0x5569be,_0x147fd8[_0x3c28('0x3f')]);return _0x1cae39[_0x3c28('0x57')](_0x5569be);}})['then'](function(_0x3a40ba){if(_0x3a40ba){_0x248bae=_0x3a40ba[_0x3c28('0x35')];if(!_0x147fd8['query'][_0x3c28('0x36')](_0x3c28('0x37'))){_0x5569be[_0x3c28('0x1e')]=qs[_0x3c28('0x1e')](_0x147fd8[_0x3c28('0x32')][_0x3c28('0x1e')]);_0x5569be['offset']=qs[_0x3c28('0x20')](_0x147fd8[_0x3c28('0x32')][_0x3c28('0x20')]);}return _0x1cae39[_0x3c28('0x57')](_0x5569be);}})[_0x3c28('0x40')](function(_0x358802){if(_0x358802){return _0x358802?{'count':_0x248bae,'rows':_0x358802}:null;}})[_0x3c28('0x40')](respondWithResult(_0x1f3373,null))['catch'](handleError(_0x1f3373,null));};
\ No newline at end of file
index 6c8ace6..5600be9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaecc=['events','ChatGroup','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0xdf3db6,_0x2a1952){var _0x4b7a65=function(_0x2953be){while(--_0x2953be){_0xdf3db6['push'](_0xdf3db6['shift']());}};_0x4b7a65(++_0x2a1952);}(_0xaecc,0x172));var _0xcaec=function(_0x2e0998,_0x2e4b2c){_0x2e0998=_0x2e0998-0x0;var _0x7ce4bc=_0xaecc[_0x2e0998];return _0x7ce4bc;};'use strict';var EventEmitter=require(_0xcaec('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0xcaec('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xcaec('0x2')](0x0);var events={'afterCreate':_0xcaec('0x3'),'afterUpdate':_0xcaec('0x4'),'afterDestroy':_0xcaec('0x5')};function emitEvent(_0x1b7339){return function(_0x1de6a3,_0x5ab26c,_0x366499){ChatGroupEvents[_0xcaec('0x6')](_0x1b7339+':'+_0x1de6a3['id'],_0x1de6a3);ChatGroupEvents[_0xcaec('0x6')](_0x1b7339,_0x1de6a3);_0x366499(null);};}for(var e in events){if(events[_0xcaec('0x7')](e)){var event=events[e];ChatGroup[_0xcaec('0x8')](e,emitEvent(event));}}module[_0xcaec('0x9')]=ChatGroupEvents;
\ No newline at end of file
+var _0xef7e=['emit','hasOwnProperty','hook','exports','events','ChatGroup','setMaxListeners','update'];(function(_0x4aa159,_0x1f2b53){var _0x2b282f=function(_0x17cf0e){while(--_0x17cf0e){_0x4aa159['push'](_0x4aa159['shift']());}};_0x2b282f(++_0x1f2b53);}(_0xef7e,0x194));var _0xeef7=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xef7e[_0xa464c9];return _0x3d73c4;};'use strict';var EventEmitter=require(_0xeef7('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0xeef7('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xeef7('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xeef7('0x3'),'afterDestroy':'remove'};function emitEvent(_0x38f950){return function(_0x285e1a,_0x69891e,_0x3f8f09){ChatGroupEvents[_0xeef7('0x4')](_0x38f950+':'+_0x285e1a['id'],_0x285e1a);ChatGroupEvents[_0xeef7('0x4')](_0x38f950,_0x285e1a);_0x3f8f09(null);};}for(var e in events){if(events[_0xeef7('0x5')](e)){var event=events[e];ChatGroup[_0xeef7('0x6')](e,emitEvent(event));}}module[_0xeef7('0x7')]=ChatGroupEvents;
\ No newline at end of file
index fdfa869..e9a2d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfd7=['moment','request-promise','path','rimraf','../../config/environment','./chatGroup.attributes','exports','define','util','api'];(function(_0x507056,_0xe16b72){var _0x4eaecc=function(_0x440b91){while(--_0x440b91){_0x507056['push'](_0x507056['shift']());}};_0x4eaecc(++_0xe16b72);}(_0xcfd7,0x1ac));var _0x7cfd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcfd7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x7cfd('0x0'));var logger=require('../../config/logger')(_0x7cfd('0x1'));var moment=require(_0x7cfd('0x2'));var BPromise=require('bluebird');var rp=require(_0x7cfd('0x3'));var fs=require('fs');var path=require(_0x7cfd('0x4'));var rimraf=require(_0x7cfd('0x5'));var config=require(_0x7cfd('0x6'));var attributes=require(_0x7cfd('0x7'));module[_0x7cfd('0x8')]=function(_0x25c86d,_0x5dd5a8){return _0x25c86d[_0x7cfd('0x9')]('ChatGroup',attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x36f9=['util','api','moment','bluebird','path','rimraf','../../config/environment','./chatGroup.attributes','exports','define','chat_groups','lodash'];(function(_0x1592f8,_0x519497){var _0x49fb74=function(_0xe752fd){while(--_0xe752fd){_0x1592f8['push'](_0x1592f8['shift']());}};_0x49fb74(++_0x519497);}(_0x36f9,0x12b));var _0x936f=function(_0x4cc1ed,_0x5586e3){_0x4cc1ed=_0x4cc1ed-0x0;var _0x287ab6=_0x36f9[_0x4cc1ed];return _0x287ab6;};'use strict';var _=require(_0x936f('0x0'));var util=require(_0x936f('0x1'));var logger=require('../../config/logger')(_0x936f('0x2'));var moment=require(_0x936f('0x3'));var BPromise=require(_0x936f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x936f('0x5'));var rimraf=require(_0x936f('0x6'));var config=require(_0x936f('0x7'));var attributes=require(_0x936f('0x8'));module[_0x936f('0x9')]=function(_0xa6a1b2,_0x206ace){return _0xa6a1b2[_0x936f('0xa')]('ChatGroup',attributes,{'tableName':_0x936f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d176814..b85f8b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a93=['client','http','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x5822dc,_0x400557){var _0x2df565=function(_0x5e5471){while(--_0x5e5471){_0x5822dc['push'](_0x5822dc['shift']());}};_0x2df565(++_0x400557);}(_0x6a93,0x1d7));var _0x36a9=function(_0x3247cc,_0x513e80){_0x3247cc=_0x3247cc-0x0;var _0x479941=_0x6a93[_0x3247cc];return _0x479941;};'use strict';var _=require(_0x36a9('0x0'));var util=require(_0x36a9('0x1'));var moment=require(_0x36a9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x36a9('0x3'));var db=require(_0x36a9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x36a9('0x5'))(_0x36a9('0x6'));var config=require(_0x36a9('0x7'));var jayson=require(_0x36a9('0x8'));var client=jayson[_0x36a9('0x9')][_0x36a9('0xa')]({'port':0x232a});config[_0x36a9('0xb')]=_[_0x36a9('0xc')](config[_0x36a9('0xb')],{'host':_0x36a9('0xd'),'port':0x18eb});var socket=require(_0x36a9('0xe'))(new Redis(config['redis']));require(_0x36a9('0xf'))[_0x36a9('0x10')](socket);function respondWithRpcPromise(_0x4abb01,_0x4aaf2f,_0x283a00){return new BPromise(function(_0x116533,_0x1a6db3){return client[_0x36a9('0x11')](_0x4abb01,_0x283a00)[_0x36a9('0x12')](function(_0x220b13){logger[_0x36a9('0x13')](_0x36a9('0x14'),_0x4aaf2f,_0x36a9('0x15'));logger[_0x36a9('0x16')](_0x36a9('0x17'),_0x4aaf2f,_0x36a9('0x15'),JSON[_0x36a9('0x18')](_0x220b13));if(_0x220b13[_0x36a9('0x19')]){if(_0x220b13[_0x36a9('0x19')][_0x36a9('0x1a')]===0x1f4){logger[_0x36a9('0x19')](_0x36a9('0x14'),_0x4aaf2f,_0x220b13[_0x36a9('0x19')]['message']);return _0x1a6db3(_0x220b13[_0x36a9('0x19')]['message']);}logger['error'](_0x36a9('0x14'),_0x4aaf2f,_0x220b13[_0x36a9('0x19')][_0x36a9('0x1b')]);return _0x116533(_0x220b13['error'][_0x36a9('0x1b')]);}else{logger[_0x36a9('0x13')](_0x36a9('0x14'),_0x4aaf2f,_0x36a9('0x15'));_0x116533(_0x220b13[_0x36a9('0x1c')][_0x36a9('0x1b')]);}})[_0x36a9('0x1d')](function(_0x307b15){logger[_0x36a9('0x19')]('ChatGroup,\x20%s,\x20%s',_0x4aaf2f,_0x307b15);_0x1a6db3(_0x307b15);});});}
\ No newline at end of file
+var _0x5da1=['randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','then','info','request\x20sent','debug','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','catch','bluebird'];(function(_0x2b55b5,_0x78505e){var _0x103d28=function(_0x5095a2){while(--_0x5095a2){_0x2b55b5['push'](_0x2b55b5['shift']());}};_0x103d28(++_0x78505e);}(_0x5da1,0xbf));var _0x15da=function(_0x49de58,_0x2e3612){_0x49de58=_0x49de58-0x0;var _0x43fa01=_0x5da1[_0x49de58];return _0x43fa01;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x15da('0x0'));var rs=require(_0x15da('0x1'));var fs=require('fs');var Redis=require(_0x15da('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x15da('0x3'));var logger=require('../../config/logger')(_0x15da('0x4'));var config=require(_0x15da('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x15da('0x6')][_0x15da('0x7')]({'port':0x232a});config[_0x15da('0x8')]=_[_0x15da('0x9')](config[_0x15da('0x8')],{'host':_0x15da('0xa'),'port':0x18eb});var socket=require(_0x15da('0xb'))(new Redis(config[_0x15da('0x8')]));require('./chatGroup.socket')[_0x15da('0xc')](socket);function respondWithRpcPromise(_0x156537,_0x4c7f3b,_0x23123b){return new BPromise(function(_0x7e41fe,_0x3f4f42){return client['request'](_0x156537,_0x23123b)[_0x15da('0xd')](function(_0x5d4ee1){logger[_0x15da('0xe')]('ChatGroup,\x20%s,\x20%s',_0x4c7f3b,_0x15da('0xf'));logger[_0x15da('0x10')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x4c7f3b,_0x15da('0xf'),JSON[_0x15da('0x11')](_0x5d4ee1));if(_0x5d4ee1[_0x15da('0x12')]){if(_0x5d4ee1[_0x15da('0x12')][_0x15da('0x13')]===0x1f4){logger[_0x15da('0x12')](_0x15da('0x14'),_0x4c7f3b,_0x5d4ee1['error'][_0x15da('0x15')]);return _0x3f4f42(_0x5d4ee1[_0x15da('0x12')][_0x15da('0x15')]);}logger[_0x15da('0x12')](_0x15da('0x14'),_0x4c7f3b,_0x5d4ee1[_0x15da('0x12')][_0x15da('0x15')]);return _0x7e41fe(_0x5d4ee1[_0x15da('0x12')][_0x15da('0x15')]);}else{logger[_0x15da('0xe')]('ChatGroup,\x20%s,\x20%s',_0x4c7f3b,_0x15da('0xf'));_0x7e41fe(_0x5d4ee1[_0x15da('0x16')]['message']);}})[_0x15da('0x17')](function(_0x17058a){logger['error'](_0x15da('0x14'),_0x4c7f3b,_0x17058a);_0x3f4f42(_0x17058a);});});}
\ No newline at end of file
index ae36c1d..3191946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7980=['save','remove','update','emit','register','length','chatGroup:'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7980,0xd9));var _0x0798=function(_0x32bd26,_0x58dba1){_0x32bd26=_0x32bd26-0x0;var _0x196100=_0x7980[_0x32bd26];return _0x196100;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0x0798('0x0'),_0x0798('0x1'),_0x0798('0x2')];function createListener(_0x2f78ae,_0x594115){return function(_0x402a45){_0x594115[_0x0798('0x3')](_0x2f78ae,_0x402a45);};}function removeListener(_0x16d6d8,_0x1fb351){return function(){ChatGroupEvents['removeListener'](_0x16d6d8,_0x1fb351);};}exports[_0x0798('0x4')]=function(_0x5013b4){for(var _0x4bb55e=0x0,_0x399858=events[_0x0798('0x5')];_0x4bb55e<_0x399858;_0x4bb55e++){var _0x2df5c9=events[_0x4bb55e];var _0x54ac85=createListener(_0x0798('0x6')+_0x2df5c9,_0x5013b4);ChatGroupEvents['on'](_0x2df5c9,_0x54ac85);}};
\ No newline at end of file
+var _0x2213=['removeListener','chatGroup:','./chatGroup.events','remove','update','emit'];(function(_0x3dab54,_0x17ae72){var _0x144d02=function(_0x242f74){while(--_0x242f74){_0x3dab54['push'](_0x3dab54['shift']());}};_0x144d02(++_0x17ae72);}(_0x2213,0x1f4));var _0x3221=function(_0x50f435,_0x4bf71e){_0x50f435=_0x50f435-0x0;var _0x55b39f=_0x2213[_0x50f435];return _0x55b39f;};'use strict';var ChatGroupEvents=require(_0x3221('0x0'));var events=['save',_0x3221('0x1'),_0x3221('0x2')];function createListener(_0x7e6976,_0x33049a){return function(_0x24e072){_0x33049a[_0x3221('0x3')](_0x7e6976,_0x24e072);};}function removeListener(_0x124caa,_0x54d8c7){return function(){ChatGroupEvents[_0x3221('0x4')](_0x124caa,_0x54d8c7);};}exports['register']=function(_0x2539f5){for(var _0x360327=0x0,_0xe4c01d=events['length'];_0x360327<_0xe4c01d;_0x360327++){var _0x346411=events[_0x360327];var _0x122e37=createListener(_0x3221('0x5')+_0x346411,_0x2539f5);ChatGroupEvents['on'](_0x346411,_0x122e37);}};
\ No newline at end of file
index b7280c8..d510ae0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa42f=['getUnread','getMessages','post','create','/:id/members','addMessage','put','delete','removeMembers','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatGroup.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/unread'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0xa42f,0x1e6));var _0xfa42=function(_0x3d44c0,_0x24bcc6){_0x3d44c0=_0x3d44c0-0x0;var _0x3441d0=_0xa42f[_0x3d44c0];return _0x3441d0;};'use strict';var multer=require(_0xfa42('0x0'));var util=require(_0xfa42('0x1'));var path=require(_0xfa42('0x2'));var timeout=require(_0xfa42('0x3'));var express=require(_0xfa42('0x4'));var router=express[_0xfa42('0x5')]();var fs_extra=require(_0xfa42('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xfa42('0x7'));var config=require(_0xfa42('0x8'));var controller=require(_0xfa42('0x9'));router['get']('/',auth[_0xfa42('0xa')](),controller[_0xfa42('0xb')]);router[_0xfa42('0xc')](_0xfa42('0xd'),auth[_0xfa42('0xa')](),controller[_0xfa42('0xe')]);router[_0xfa42('0xc')](_0xfa42('0xf'),auth['isAuthenticated'](),controller[_0xfa42('0x10')]);router['get'](_0xfa42('0x11'),auth[_0xfa42('0xa')](),controller[_0xfa42('0x12')]);router[_0xfa42('0xc')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router['get']('/:id/messages',auth['isAuthenticated'](),controller[_0xfa42('0x13')]);router[_0xfa42('0x14')]('/',auth['isAuthenticated'](),controller[_0xfa42('0x15')]);router[_0xfa42('0x14')](_0xfa42('0x16'),auth[_0xfa42('0xa')](),controller['addMembers']);router['post']('/:id/messages',auth[_0xfa42('0xa')](),controller[_0xfa42('0x17')]);router[_0xfa42('0x18')](_0xfa42('0xf'),auth[_0xfa42('0xa')](),controller['update']);router[_0xfa42('0x19')](_0xfa42('0xf'),auth['isAuthenticated'](),controller['destroy']);router[_0xfa42('0x19')](_0xfa42('0x16'),auth[_0xfa42('0xa')](),controller[_0xfa42('0x1a')]);module[_0xfa42('0x1b')]=router;
\ No newline at end of file
+var _0x2ad9=['/describe','/:id','show','/:id/unread','/:id/members','/:id/messages','getMessages','post','create','addMembers','put','delete','removeMembers','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','./chatGroup.controller','get','isAuthenticated','index'];(function(_0x4635d1,_0x4a58a0){var _0x257565=function(_0x5a1fa3){while(--_0x5a1fa3){_0x4635d1['push'](_0x4635d1['shift']());}};_0x257565(++_0x4a58a0);}(_0x2ad9,0x15e));var _0x92ad=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x2ad9[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x92ad('0x0'));var util=require(_0x92ad('0x1'));var path=require(_0x92ad('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x92ad('0x3')]();var fs_extra=require(_0x92ad('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x92ad('0x5'));var config=require('../../config/environment');var controller=require(_0x92ad('0x6'));router[_0x92ad('0x7')]('/',auth[_0x92ad('0x8')](),controller[_0x92ad('0x9')]);router[_0x92ad('0x7')](_0x92ad('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x92ad('0x7')](_0x92ad('0xb'),auth[_0x92ad('0x8')](),controller[_0x92ad('0xc')]);router[_0x92ad('0x7')](_0x92ad('0xd'),auth[_0x92ad('0x8')](),controller['getUnread']);router[_0x92ad('0x7')](_0x92ad('0xe'),auth[_0x92ad('0x8')](),controller['getMembers']);router[_0x92ad('0x7')](_0x92ad('0xf'),auth[_0x92ad('0x8')](),controller[_0x92ad('0x10')]);router[_0x92ad('0x11')]('/',auth['isAuthenticated'](),controller[_0x92ad('0x12')]);router[_0x92ad('0x11')](_0x92ad('0xe'),auth[_0x92ad('0x8')](),controller[_0x92ad('0x13')]);router[_0x92ad('0x11')](_0x92ad('0xf'),auth[_0x92ad('0x8')](),controller['addMessage']);router[_0x92ad('0x14')](_0x92ad('0xb'),auth[_0x92ad('0x8')](),controller['update']);router[_0x92ad('0x15')]('/:id',auth['isAuthenticated'](),controller['destroy']);router['delete']('/:id/members',auth['isAuthenticated'](),controller[_0x92ad('0x16')]);module[_0x92ad('0x17')]=router;
\ No newline at end of file
index f85d0fb..bfa5912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc072=['INTEGER','ENUM','star','thumb','TEXT','DATE','STRING','long','out','BOOLEAN'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0xc072,0x96));var _0x2c07=function(_0x130fe4,_0x140f0c){_0x130fe4=_0x130fe4-0x0;var _0x19880f=_0xc072[_0x130fe4];return _0x19880f;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x2c07('0x0')]},'ratingType':{'type':Sequelize[_0x2c07('0x1')](_0x2c07('0x2'),_0x2c07('0x3')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x2c07('0x4')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x2c07('0x5')]},'disposition':{'type':Sequelize[_0x2c07('0x6')]},'secondDisposition':{'type':Sequelize[_0x2c07('0x6')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0x2c07('0x6')]},'osName':{'type':Sequelize[_0x2c07('0x6')]},'osVersion':{'type':Sequelize[_0x2c07('0x6')]},'deviceModel':{'type':Sequelize[_0x2c07('0x6')]},'deviceVendor':{'type':Sequelize[_0x2c07('0x6')]},'deviceType':{'type':Sequelize[_0x2c07('0x6')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x2c07('0x6')]},'formData':{'type':Sequelize['TEXT'](_0x2c07('0x7'))},'read1stAt':{'type':Sequelize[_0x2c07('0x5')]},'lastMsgAt':{'type':Sequelize[_0x2c07('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x2c07('0x1')]('in',_0x2c07('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x2c07('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x2c07('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x2c07('0x9')],'defaultValue':![]},'queueId':{'type':Sequelize[_0x2c07('0x0')]}};
\ No newline at end of file
+var _0x6ef3=['long','sequelize','exports','BOOLEAN','INTEGER','star','thumb','TEXT','STRING','DATE'];(function(_0x394b4d,_0x2844da){var _0x4d43cc=function(_0xb469d3){while(--_0xb469d3){_0x394b4d['push'](_0x394b4d['shift']());}};_0x4d43cc(++_0x2844da);}(_0x6ef3,0x1b9));var _0x36ef=function(_0x487120,_0x29bc7a){_0x487120=_0x487120-0x0;var _0x1d9679=_0x6ef3[_0x487120];return _0x1d9679;};'use strict';var Sequelize=require(_0x36ef('0x0'));module[_0x36ef('0x1')]={'closed':{'type':Sequelize[_0x36ef('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x36ef('0x3')]},'ratingType':{'type':Sequelize['ENUM'](_0x36ef('0x4'),_0x36ef('0x5')),'defaultValue':_0x36ef('0x4')},'ratingMessage':{'type':Sequelize[_0x36ef('0x6')]},'pathTranscript':{'type':Sequelize[_0x36ef('0x6')]},'mailTranscript':{'type':Sequelize[_0x36ef('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x36ef('0x8')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x36ef('0x7')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x36ef('0x7')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0x36ef('0x7')]},'osName':{'type':Sequelize[_0x36ef('0x7')]},'osVersion':{'type':Sequelize[_0x36ef('0x7')]},'deviceModel':{'type':Sequelize[_0x36ef('0x7')]},'deviceVendor':{'type':Sequelize[_0x36ef('0x7')]},'deviceType':{'type':Sequelize[_0x36ef('0x7')]},'referer':{'type':Sequelize[_0x36ef('0x6')]},'customerIp':{'type':Sequelize[_0x36ef('0x7')]},'formData':{'type':Sequelize[_0x36ef('0x6')](_0x36ef('0x9'))},'read1stAt':{'type':Sequelize[_0x36ef('0x8')]},'lastMsgAt':{'type':Sequelize[_0x36ef('0x8')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x36ef('0x7')]},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x36ef('0x2')],'defaultValue':![]},'queueId':{'type':Sequelize[_0x36ef('0x3')]}};
\ No newline at end of file
index bbad031..8fbfcc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a8a=['map','ChatInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','chat','query','user','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','include','find','catch','create','body','describe','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','email','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','parse','metadata','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','Contact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','update','disposition','AbandonInteraction','attachmentUpload','file','originalname','filename','mimetype','attachmentDownload','closed','Attachment','attachId','ChatOfflineMessageId','join','root','offline-chat/','basename','download','close','mailTranscript','server/files/chat/upload/','transcript-%s.txt','pathTranscript','Messages','User','CmContact','ContactId','%s%d','agentAlias','customer','format','Visitor','agentIdentifier','website_alias','System','agent_alias','alias','fullname','[%s]\x20%s:\x20%s\x0a','createdAt','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','addMessage','omit','ids','getMessages','hasOwnProperty','nolimit','order','sort','where','pick','ChatInteractionId','merge','filter','$gte','YYYY-MM-DD\x20HH:mm:ss','options','rows','secret','push','setTags','spread','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','direction','read','Account','Owner','get','Chat','N.A.','toString','browserName','osName','referer','customerPort','existsSync','createReadStream','value','renderFile','views','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','request-promise','moment','bluebird','mustache','util','path','lodash','ioredis','../../components/parsers/qs','../../components/export/pdf','api','../../config/environment','../../mysqldb','defaults','redis','socket.io-emitter','./chatInteraction.socket','jayson/promise','client','http','request','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','destroy','stack','name','render','agent','interaction','account','index'];(function(_0x3da556,_0x5bd01f){var _0x49fd15=function(_0x5e0372){while(--_0x5e0372){_0x3da556['push'](_0x3da556['shift']());}};_0x49fd15(++_0x5bd01f);}(_0x0a8a,0x16d));var _0xa0a8=function(_0xad4203,_0x5c5fc5){_0xad4203=_0xad4203-0x0;var _0x455ee1=_0x0a8a[_0xad4203];return _0x455ee1;};'use strict';var rimraf=require(_0xa0a8('0x0'));var zipdir=require('zip-dir');var rp=require(_0xa0a8('0x1'));var moment=require(_0xa0a8('0x2'));var BPromise=require(_0xa0a8('0x3'));var Mustache=require(_0xa0a8('0x4'));var util=require(_0xa0a8('0x5'));var path=require(_0xa0a8('0x6'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xa0a8('0x7'));var Redis=require(_0xa0a8('0x8'));var interaction=require('../../components/interaction/service');var qs=require(_0xa0a8('0x9'));var pdf=require(_0xa0a8('0xa'));var logger=require('../../config/logger')(_0xa0a8('0xb'));var config=require(_0xa0a8('0xc'));var db=require(_0xa0a8('0xd'))['db'];config['redis']=_[_0xa0a8('0xe')](config[_0xa0a8('0xf')],{'host':'localhost','port':0x18eb});var socket=require(_0xa0a8('0x10'))(new Redis(config['redis']));require(_0xa0a8('0x11'))['register'](socket);var jayson=require(_0xa0a8('0x12'));var client=jayson[_0xa0a8('0x13')]['http']({'port':0x232b});var client9004=jayson['client'][_0xa0a8('0x14')]({'port':0x232c});function respondWithRpcPromise(_0x188ad,_0x18bc03,_0x1780f5,_0x90779){return new BPromise(function(_0x84ba26,_0x39e23d){var _0x5b0974=_0x90779||client;return _0x5b0974[_0xa0a8('0x15')](_0x188ad,_0x1780f5)[_0xa0a8('0x16')](function(_0x38da7a){logger['info'](_0xa0a8('0x17'),_0x18bc03,_0xa0a8('0x18'));logger['debug']('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x18bc03,_0xa0a8('0x18'),JSON[_0xa0a8('0x19')](_0x38da7a));if(_0x38da7a[_0xa0a8('0x1a')]){if(_0x38da7a['error'][_0xa0a8('0x1b')]===0x1f4){logger['error'](_0xa0a8('0x17'),_0x18bc03,_0x38da7a[_0xa0a8('0x1a')][_0xa0a8('0x1c')]);return _0x39e23d(_0x38da7a[_0xa0a8('0x1a')][_0xa0a8('0x1c')]);}logger[_0xa0a8('0x1a')](_0xa0a8('0x17'),_0x18bc03,_0x38da7a[_0xa0a8('0x1a')][_0xa0a8('0x1c')]);return _0x84ba26(_0x38da7a[_0xa0a8('0x1a')][_0xa0a8('0x1c')]);}else{logger[_0xa0a8('0x1d')](_0xa0a8('0x17'),_0x18bc03,_0xa0a8('0x18'));_0x84ba26(_0x38da7a[_0xa0a8('0x1e')]['message']);}})['catch'](function(_0x161f49){logger[_0xa0a8('0x1a')](_0xa0a8('0x17'),_0x18bc03,_0x161f49);_0x39e23d(_0x161f49);});});}function respondWithStatusCode(_0x289542,_0x14d47a){_0x14d47a=_0x14d47a||0xcc;return function(_0x31f1de){if(_0x31f1de){return _0x289542[_0xa0a8('0x1f')](_0x14d47a);}return _0x289542[_0xa0a8('0x20')](_0x14d47a)[_0xa0a8('0x21')]();};}function respondWithResult(_0x400631,_0x4ba8ee){_0x4ba8ee=_0x4ba8ee||0xc8;return function(_0x3aea0a){if(_0x3aea0a){return _0x400631[_0xa0a8('0x20')](_0x4ba8ee)[_0xa0a8('0x22')](_0x3aea0a);}};}function respondWithFilteredResult(_0xc44d52,_0xb91cb4){return function(_0x108a60){if(_0x108a60){var _0x4963e1=typeof _0xb91cb4[_0xa0a8('0x23')]===_0xa0a8('0x24')&&typeof _0xb91cb4[_0xa0a8('0x25')]===_0xa0a8('0x24');var _0x29cbbc=_0x108a60[_0xa0a8('0x26')];var _0x404ecc=_0x4963e1?0x0:_0xb91cb4[_0xa0a8('0x23')];var _0x57846f=_0x4963e1?_0x108a60[_0xa0a8('0x26')]:_0xb91cb4[_0xa0a8('0x23')]+_0xb91cb4[_0xa0a8('0x25')];var _0x560cdc;if(_0x57846f>=_0x29cbbc){_0x57846f=_0x29cbbc;_0x560cdc=0xc8;}else{_0x560cdc=0xce;}_0xc44d52[_0xa0a8('0x20')](_0x560cdc);return _0xc44d52[_0xa0a8('0x27')](_0xa0a8('0x28'),_0x404ecc+'-'+_0x57846f+'/'+_0x29cbbc)['json'](_0x108a60);}return null;};}function saveUpdates(_0x18c675){return function(_0x54691d){if(_0x54691d){return _0x54691d['update'](_0x18c675)[_0xa0a8('0x16')](function(_0x43b20f){return _0x43b20f;});}return null;};}function removeEntity(_0x39f80f){return function(_0x2a0e44){if(_0x2a0e44){return _0x2a0e44[_0xa0a8('0x29')]()[_0xa0a8('0x16')](function(){_0x39f80f[_0xa0a8('0x20')](0xcc)[_0xa0a8('0x21')]();});}};}function handleEntityNotFound(_0x300941){return function(_0x19b2b9){if(!_0x19b2b9){_0x300941[_0xa0a8('0x1f')](0x194);}return _0x19b2b9;};}function handleError(_0x54f700,_0x299795){_0x299795=_0x299795||0x1f4;return function(_0x47334e){logger['error'](_0x47334e[_0xa0a8('0x2a')]);if(_0x47334e[_0xa0a8('0x2b')]){delete _0x47334e[_0xa0a8('0x2b')];}_0x54f700['status'](_0x299795)['send'](_0x47334e);};}function getMustacheRender(_0x39e31e,_0x1afb21){return Mustache[_0xa0a8('0x2c')](_0x39e31e,_['merge'](_0x1afb21['body'],{'contact':_0x1afb21['contact'],'message':_0x1afb21[_0xa0a8('0x1c')],'agent':_0x1afb21[_0xa0a8('0x2d')],'interaction':_0x1afb21[_0xa0a8('0x2e')],'account':_0x1afb21[_0xa0a8('0x2f')]}))||'';}exports[_0xa0a8('0x30')]=function(_0x28672b,_0x311981){var _0x38e395={};var _0x4c438c=_[_0xa0a8('0x31')](db[_0xa0a8('0x32')][_0xa0a8('0x33')],function(_0x33087e){return{'name':_0x33087e[_0xa0a8('0x34')],'type':_0x33087e[_0xa0a8('0x35')][_0xa0a8('0x36')]};});_0x38e395=qs[_0xa0a8('0x37')](_0x4c438c,_0x28672b);return interaction[_0xa0a8('0x38')](_0xa0a8('0x39'),_0x28672b[_0xa0a8('0x3a')],_0x28672b[_0xa0a8('0x3b')],_0x38e395,_0x4c438c)[_0xa0a8('0x16')](respondWithFilteredResult(_0x311981,_0x38e395))['catch'](handleError(_0x311981,null));};exports[_0xa0a8('0x3c')]=function(_0x136232,_0x27d55b){var _0x3fa00d={'raw':![],'where':{'id':_0x136232[_0xa0a8('0x3d')]['id']}},_0x3299b8={};_0x3299b8[_0xa0a8('0x3e')]=_[_0xa0a8('0x3f')](db[_0xa0a8('0x32')][_0xa0a8('0x33')]);_0x3299b8[_0xa0a8('0x3a')]=_[_0xa0a8('0x3f')](_0x136232[_0xa0a8('0x3a')]);_0x3299b8[_0xa0a8('0x40')]=_[_0xa0a8('0x41')](_0x3299b8[_0xa0a8('0x3e')],_0x3299b8['query']);_0x3fa00d[_0xa0a8('0x42')]=_[_0xa0a8('0x41')](_0x3299b8[_0xa0a8('0x3e')],qs[_0xa0a8('0x43')](_0x136232[_0xa0a8('0x3a')][_0xa0a8('0x43')]));_0x3fa00d[_0xa0a8('0x42')]=_0x3fa00d[_0xa0a8('0x42')][_0xa0a8('0x44')]?_0x3fa00d['attributes']:_0x3299b8['model'];if(_0x136232[_0xa0a8('0x3a')][_0xa0a8('0x45')]){_0x3fa00d[_0xa0a8('0x46')]=[{'all':!![]}];}_0x3fa00d=_['merge']({},_0x3fa00d,_0x136232['options']);return db['ChatInteraction'][_0xa0a8('0x47')](_0x3fa00d)[_0xa0a8('0x16')](handleEntityNotFound(_0x27d55b,null))[_0xa0a8('0x16')](respondWithResult(_0x27d55b,null))[_0xa0a8('0x48')](handleError(_0x27d55b,null));};exports[_0xa0a8('0x49')]=function(_0x3bfbe0,_0x3c34aa){return db[_0xa0a8('0x32')][_0xa0a8('0x49')](_0x3bfbe0[_0xa0a8('0x4a')],{})['then'](respondWithResult(_0x3c34aa,0xc9))[_0xa0a8('0x48')](handleError(_0x3c34aa,null));};exports['update']=function(_0x1ab5c8,_0x282466){if(_0x1ab5c8[_0xa0a8('0x4a')]['id']){delete _0x1ab5c8[_0xa0a8('0x4a')]['id'];}return db[_0xa0a8('0x32')]['find']({'where':{'id':_0x1ab5c8[_0xa0a8('0x3d')]['id']}})[_0xa0a8('0x16')](handleEntityNotFound(_0x282466,null))[_0xa0a8('0x16')](saveUpdates(_0x1ab5c8[_0xa0a8('0x4a')],null))[_0xa0a8('0x16')](respondWithResult(_0x282466,null))[_0xa0a8('0x48')](handleError(_0x282466,null));};exports['destroy']=function(_0x162557,_0x3d05be){return db['ChatInteraction']['find']({'where':{'id':_0x162557[_0xa0a8('0x3d')]['id']}})[_0xa0a8('0x16')](handleEntityNotFound(_0x3d05be,null))[_0xa0a8('0x16')](removeEntity(_0x3d05be,null))[_0xa0a8('0x48')](handleError(_0x3d05be,null));};exports[_0xa0a8('0x4b')]=function(_0x23c05d,_0xa8b6e7){return db[_0xa0a8('0x32')][_0xa0a8('0x4b')]()[_0xa0a8('0x16')](respondWithResult(_0xa8b6e7,null))[_0xa0a8('0x48')](handleError(_0xa8b6e7,null));};exports['createVidaooSession']=function(_0x3c289a,_0x67c994){var _0x403014=_0x3c289a['params']['id'];var _0x30a35d;var _0x55cb91;var _0x5465b3;return db[_0xa0a8('0x32')][_0xa0a8('0x4c')]({'where':{'id':_0x403014}})[_0xa0a8('0x16')](function(_0x259802){_0x30a35d=_0x259802;return db[_0xa0a8('0x4d')][_0xa0a8('0x4c')]({'where':{'id':_0x259802[_0xa0a8('0x4e')]},'attributes':['id',_0xa0a8('0x4f'),_0xa0a8('0x50'),_0xa0a8('0x51'),_0xa0a8('0x52'),_0xa0a8('0x53')],'raw':!![]});})[_0xa0a8('0x16')](function(_0xdb1a69){if(_0xdb1a69&&_0xdb1a69[_0xa0a8('0x4f')]&&_0xdb1a69[_0xa0a8('0x50')]){_0x55cb91=_0xdb1a69;var _0x255ea3={'interaction':{'id':_0x403014},'agent':{'id':_0x3c289a[_0xa0a8('0x3b')]['id'],'name':_0x3c289a[_0xa0a8('0x3b')][_0xa0a8('0x2b')],'fullname':_0x3c289a[_0xa0a8('0x3b')]['fullname'],'email':_0x3c289a[_0xa0a8('0x3b')][_0xa0a8('0x54')]},'contact':_0x3c289a['body'][_0xa0a8('0x55')],'account':_0x3c289a[_0xa0a8('0x4a')][_0xa0a8('0x2f')]};var _0x84ea4f={'rejectUnauthorized':![],'method':_0xa0a8('0x56'),'url':_0xa0a8('0x57'),'headers':{'X-APIKEY':_0xdb1a69[_0xa0a8('0x4f')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x3c289a[_0xa0a8('0x3b')][_0xa0a8('0x54')]],'buttons':null,'topic':_0x55cb91[_0xa0a8('0x51')],'note':_[_0xa0a8('0x58')](_0x55cb91[_0xa0a8('0x52')])?null:getMustacheRender(_0x55cb91[_0xa0a8('0x52')],_0x255ea3),'metadata':null},'redirect':_0xa0a8('0x59'),'json':!![]};try{if(!_[_0xa0a8('0x58')](_0x55cb91[_0xa0a8('0x53')])){var _0x3b302a=getMustacheRender(_0x55cb91['vidaooMetadata'],_0x255ea3);var _0xbd9866=JSON[_0xa0a8('0x5a')](_0x3b302a);_0x84ea4f[_0xa0a8('0x4a')][_0xa0a8('0x5b')]=_0xbd9866;}}catch(_0x2b230a){throw new db[(_0xa0a8('0x5c'))][(_0xa0a8('0x5d'))](_0xa0a8('0x5e'));}return rp(_0x84ea4f);}else{throw new db['Sequelize']['ValidationError'](_0xa0a8('0x5f'));}})['then'](function(_0x508f1b){_0x5465b3=_0x508f1b;if(_0x5465b3['id']){var _0x299b95={'body':_0x5465b3[_0xa0a8('0x60')],'ChatWebsiteId':_0x55cb91['id'],'ChatInteractionId':_0x30a35d['id'],'direction':_0xa0a8('0x61'),'UserId':_0x3c289a['user']['id']};return db[_0xa0a8('0x62')][_0xa0a8('0x49')](_0x299b95,{});}else{throw new db[(_0xa0a8('0x5c'))][(_0xa0a8('0x5d'))](_0xa0a8('0x63'));}})[_0xa0a8('0x16')](function(){return _0x30a35d[_0xa0a8('0x64')]({'vidaooSessionId':_0x5465b3['id']});})['then'](respondWithResult(_0x67c994,null))['catch'](handleError(_0x67c994,null));};exports[_0xa0a8('0x65')]=function(_0x49de2d,_0x460d0b){if(_0x49de2d[_0xa0a8('0x4a')]['id']){delete _0x49de2d[_0xa0a8('0x4a')]['id'];}return db['ChatInteraction'][_0xa0a8('0x47')]({'where':{'id':_0x49de2d[_0xa0a8('0x3d')]['id']},'include':[{'model':db['CmContact'],'as':_0xa0a8('0x66')}]})[_0xa0a8('0x16')](handleEntityNotFound(_0x460d0b,null))[_0xa0a8('0x16')](saveUpdates(_0x49de2d[_0xa0a8('0x4a')],null))[_0xa0a8('0x16')](respondWithResult(_0x460d0b,null))[_0xa0a8('0x48')](handleError(_0x460d0b,null));};exports[_0xa0a8('0x67')]=function(_0x69cace,_0x2afa5f){if(_0x69cace[_0xa0a8('0x4a')]['id']){delete _0x69cace[_0xa0a8('0x4a')]['id'];}return db['ChatInteraction'][_0xa0a8('0x47')]({'where':{'id':_0x69cace[_0xa0a8('0x3d')]['id']}})[_0xa0a8('0x16')](function(_0x43c5ac){if(!_0x43c5ac){logger[_0xa0a8('0x1a')](_0xa0a8('0x68'),_0xa0a8('0x67'),0x194,_0xa0a8('0x69'));_0x2afa5f['sendStatus'](0x194);}else{if(_0x43c5ac[_0xa0a8('0x6a')]){throw new db[(_0xa0a8('0x5c'))]['ValidationError']('Interaction\x20already\x20assigned');}}return _0x43c5ac;})[_0xa0a8('0x16')](function(_0x30f581){if(_0x30f581){return _0x30f581[_0xa0a8('0x6b')]({'closed':_0x69cace[_0xa0a8('0x4a')]['closed'],'disposition':_0x69cace[_0xa0a8('0x4a')][_0xa0a8('0x6c')]})[_0xa0a8('0x16')](function(_0x2d2bb7){return _0x2d2bb7;});}})[_0xa0a8('0x16')](function(){return respondWithRpcPromise(_0xa0a8('0x6d'),_0xa0a8('0x67'),_0x69cace[_0xa0a8('0x4a')],client9004);})[_0xa0a8('0x16')](respondWithResult(_0x2afa5f,null))[_0xa0a8('0x48')](handleError(_0x2afa5f,null));};exports[_0xa0a8('0x6e')]=function(_0x333b88,_0x424433){_0x333b88[_0xa0a8('0x4a')][_0xa0a8('0x2b')]=_0x333b88[_0xa0a8('0x6f')][_0xa0a8('0x70')];_0x333b88['body']['basename']=_0x333b88[_0xa0a8('0x6f')][_0xa0a8('0x71')];_0x333b88['body']['type']=_0x333b88[_0xa0a8('0x6f')][_0xa0a8('0x72')];return db['Attachment'][_0xa0a8('0x49')](_0x333b88['body'])[_0xa0a8('0x16')](respondWithResult(_0x424433,0xc9))[_0xa0a8('0x48')](handleError(_0x424433,null));};exports[_0xa0a8('0x73')]=function(_0x5bbd7f,_0x52f298){return db[_0xa0a8('0x32')]['findOne']({'where':{'id':_0x5bbd7f[_0xa0a8('0x3d')]['id']},'raw':!![]})[_0xa0a8('0x16')](handleEntityNotFound(_0x52f298,null))[_0xa0a8('0x16')](function(_0x36a4cf){if(_0x36a4cf){if(_0x36a4cf[_0xa0a8('0x74')]){return _0x52f298[_0xa0a8('0x20')](0x193)[_0xa0a8('0x22')]({'status':0x193,'message':'Unauthorized'});}return db[_0xa0a8('0x75')][_0xa0a8('0x4c')]({'where':{'id':_0x5bbd7f[_0xa0a8('0x3a')][_0xa0a8('0x76')]},'raw':!![]})[_0xa0a8('0x16')](handleEntityNotFound(_0x52f298,null));}})[_0xa0a8('0x16')](function(_0x16776e){if(_0x16776e){var _0x1ee0a8=_0x16776e[_0xa0a8('0x77')]!==null;var _0x527649=path[_0xa0a8('0x78')](config[_0xa0a8('0x79')],'server/files/attachments/');if(_0x1ee0a8){_0x527649=path[_0xa0a8('0x78')](_0x527649,_0xa0a8('0x7a'));}var _0x232b62=path[_0xa0a8('0x78')](_0x527649,_0x16776e[_0xa0a8('0x7b')]);return _0x52f298[_0xa0a8('0x7c')](_0x232b62);}})[_0xa0a8('0x48')](handleError(_0x52f298,null));};exports[_0xa0a8('0x7d')]=function(_0x38df96,_0x484ec3){var _0x1689a7=null;var _0x4d73a4=null;var _0x5a2fe0=null;if(_0x38df96[_0xa0a8('0x4a')]['id']){delete _0x38df96[_0xa0a8('0x4a')]['id'];}if(_0x38df96[_0xa0a8('0x4a')][_0xa0a8('0x7e')]){_0x5a2fe0=path['join'](config[_0xa0a8('0x79')],_0xa0a8('0x7f'),util['format'](_0xa0a8('0x80'),Date['now']()));_0x38df96[_0xa0a8('0x4a')][_0xa0a8('0x81')]=_0x5a2fe0;}return db[_0xa0a8('0x32')][_0xa0a8('0x47')]({'where':{'id':_0x38df96['params']['id']},'include':[{'model':db[_0xa0a8('0x62')],'as':_0xa0a8('0x82'),'include':[{'model':db[_0xa0a8('0x83')],'as':_0xa0a8('0x83')}]}]})[_0xa0a8('0x16')](handleEntityNotFound(_0x484ec3,null))[_0xa0a8('0x16')](saveUpdates(_0x38df96['body'],null))[_0xa0a8('0x16')](function(_0x9be9d6){if(_0x9be9d6){_0x1689a7=_0x9be9d6;return db[_0xa0a8('0x4d')][_0xa0a8('0x47')]({'where':{'id':_0x1689a7[_0xa0a8('0x4e')]}});}})[_0xa0a8('0x16')](function(_0x1944dd){if(_0x1944dd){_0x4d73a4=_0x1944dd;return db[_0xa0a8('0x84')]['find']({'where':{'id':_0x1689a7[_0xa0a8('0x85')]}});}})[_0xa0a8('0x16')](function(_0x2bcd0e){if(_0x2bcd0e){if(_0x5a2fe0){var _0x1a294b=null;for(var _0x50953c=0x1;_0x50953c<_0x1689a7['Messages']['length'];++_0x50953c){_0x1a294b=_0x1689a7[_0xa0a8('0x82')][_0x50953c];var _0x43a90f=_0x1a294b['UserId']?util['format'](_0xa0a8('0x86'),_0x4d73a4[_0xa0a8('0x87')],_0x1a294b[_0xa0a8('0x6a')]):'System';var _0x226c88=_0x38df96[_0xa0a8('0x4a')][_0xa0a8('0x88')]||util[_0xa0a8('0x89')]('%s%d',_0xa0a8('0x8a'),_0x1a294b[_0xa0a8('0x85')]);switch(_0x4d73a4[_0xa0a8('0x8b')]){case _0xa0a8('0x8c'):_0x43a90f=_0x1a294b[_0xa0a8('0x6a')]?util[_0xa0a8('0x89')](_0xa0a8('0x86'),_0x4d73a4[_0xa0a8('0x87')],_0x1a294b['UserId']):_0xa0a8('0x8d');break;case _0xa0a8('0x8e'):_0x43a90f=_0x1a294b['UserId']?_0x1a294b[_0xa0a8('0x83')][_0xa0a8('0x8f')]||_0x1a294b[_0xa0a8('0x83')][_0xa0a8('0x90')]:_0xa0a8('0x8d');break;case'agent_fullname':_0x43a90f=_0x1a294b[_0xa0a8('0x6a')]?_0x1a294b[_0xa0a8('0x83')]['fullname']:_0xa0a8('0x8d');break;default:_0x43a90f=_0x1a294b[_0xa0a8('0x6a')]?util[_0xa0a8('0x89')]('%s%d',_0x4d73a4[_0xa0a8('0x87')],_0x1a294b[_0xa0a8('0x6a')]):'System';}var _0x5e5cb0=util['format'](_0xa0a8('0x91'),moment(_0x1a294b[_0xa0a8('0x92')])[_0xa0a8('0x89')]('MM/DD/YYYY\x20HH:mm:ss'),_0x1a294b['direction']==='in'?_0x226c88:_0x43a90f,_0x1a294b[_0xa0a8('0x4a')]);if(!_0x1a294b['secret']){fs['appendFileSync'](_0x5a2fe0,_0x5e5cb0);}}return db[_0xa0a8('0x93')][_0xa0a8('0x4c')]({'where':{'service':!![]},'include':[{'model':db[_0xa0a8('0x94')],'as':_0xa0a8('0x95'),'raw':!![],'include':[{'model':db[_0xa0a8('0x96')],'as':'CloudProvider','raw':!![]}]}]});}}})[_0xa0a8('0x16')](function(_0x5a0d7a){if(!_0x5a0d7a||!_0x5a0d7a[_0xa0a8('0x95')]||!_0x38df96['body'])return _0x1689a7;var _0x51f93c=_0x5a0d7a[_0xa0a8('0x97')]();return respondWithRpcPromise(_0xa0a8('0x98'),_0xa0a8('0x99'),{'account':_0x51f93c,'message':{'from':util[_0xa0a8('0x89')](_0xa0a8('0x9a'),_0x5a0d7a[_0xa0a8('0x2b')],_0x5a0d7a[_0xa0a8('0x54')]||_0x5a0d7a[_0xa0a8('0x95')][_0xa0a8('0x3b')]),'to':_0x38df96[_0xa0a8('0x4a')][_0xa0a8('0x7e')],'subject':_0xa0a8('0x9b'),'text':util[_0xa0a8('0x89')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x38df96['body'][_0xa0a8('0x7e')]),'attachments':[{'path':_0x5a2fe0}]}})[_0xa0a8('0x16')](function(){return _0x1689a7;})['catch'](function(_0x548593){logger['error'](_0x548593);});})['then'](respondWithStatusCode(_0x484ec3,0xc8))['catch'](handleError(_0x484ec3,null));};exports[_0xa0a8('0x9c')]=function(_0x30351c,_0x345ccf){return db[_0xa0a8('0x62')][_0xa0a8('0x47')]({'where':{'id':_0x30351c[_0xa0a8('0x3d')]['id']}})[_0xa0a8('0x16')](handleEntityNotFound(_0x345ccf,null))[_0xa0a8('0x16')](function(_0x1f534d){if(_0x1f534d){return _0x1f534d['addMessage'](_0x30351c[_0xa0a8('0x4a')]['ids'],_[_0xa0a8('0x9d')](_0x30351c[_0xa0a8('0x4a')],[_0xa0a8('0x9e'),'id'])||{});}})[_0xa0a8('0x16')](respondWithResult(_0x345ccf,null))[_0xa0a8('0x48')](handleError(_0x345ccf,null));};exports[_0xa0a8('0x9f')]=function(_0x53867f,_0x4c383b){var _0x3364e5={'raw':![],'where':{}};var _0x30496={};var _0xce8f09={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xa0a8('0x4c')]({'where':{'id':_0x53867f[_0xa0a8('0x3d')]['id']}})[_0xa0a8('0x16')](handleEntityNotFound(_0x4c383b,null))[_0xa0a8('0x16')](function(_0x272467){if(_0x272467){_0x30496[_0xa0a8('0x3e')]=_[_0xa0a8('0x3f')](db[_0xa0a8('0x62')][_0xa0a8('0x33')]);_0x30496[_0xa0a8('0x3a')]=_[_0xa0a8('0x3f')](_0x53867f[_0xa0a8('0x3a')]);_0x30496[_0xa0a8('0x40')]=_['intersection'](_0x30496[_0xa0a8('0x3e')],_0x30496[_0xa0a8('0x3a')]);_0x3364e5[_0xa0a8('0x42')]=_['intersection'](_0x30496['model'],qs[_0xa0a8('0x43')](_0x53867f[_0xa0a8('0x3a')][_0xa0a8('0x43')]));_0x3364e5['attributes']=_0x3364e5[_0xa0a8('0x42')][_0xa0a8('0x44')]?_0x3364e5[_0xa0a8('0x42')]:_0x30496[_0xa0a8('0x3e')];if(!_0x53867f[_0xa0a8('0x3a')][_0xa0a8('0xa0')](_0xa0a8('0xa1'))){_0x3364e5[_0xa0a8('0x25')]=qs[_0xa0a8('0x25')](_0x53867f[_0xa0a8('0x3a')][_0xa0a8('0x25')]);_0x3364e5[_0xa0a8('0x23')]=qs[_0xa0a8('0x23')](_0x53867f[_0xa0a8('0x3a')][_0xa0a8('0x23')]);}_0x3364e5[_0xa0a8('0xa2')]=qs[_0xa0a8('0xa3')](_0x53867f['query'][_0xa0a8('0xa3')]);_0x3364e5[_0xa0a8('0xa4')]=qs[_0xa0a8('0x40')](_[_0xa0a8('0xa5')](_0x53867f[_0xa0a8('0x3a')],_0x30496['filters']));_0x3364e5[_0xa0a8('0xa4')][_0xa0a8('0xa6')]=_0x272467['id'];if(_0x53867f[_0xa0a8('0x3a')]['filter']){_0x3364e5[_0xa0a8('0xa4')]=_[_0xa0a8('0xa7')](_0x3364e5['where'],{'$or':_[_0xa0a8('0x31')](_0x3364e5['attributes'],function(_0x5397ef){var _0x39b85e={};_0x39b85e[_0x5397ef]={'$like':'%'+_0x53867f[_0xa0a8('0x3a')][_0xa0a8('0xa8')]+'%'};return _0x39b85e;})});}if(_0x53867f[_0xa0a8('0x3a')][_0xa0a8('0xa9')]){var _0x3be48b=_0x53867f[_0xa0a8('0x3a')][_0xa0a8('0xa9')]['split'](',');var _0x21d64a={};_0x21d64a[_0x3be48b[0x0]]={'$gte':moment(_0x3be48b[0x1])[_0xa0a8('0x89')](_0xa0a8('0xaa'))};_0x3364e5['where']=_['merge'](_0x3364e5[_0xa0a8('0xa4')],_0x21d64a);}_0x3364e5=_[_0xa0a8('0xa7')]({},_0x3364e5,_0x53867f[_0xa0a8('0xab')]);return db[_0xa0a8('0x62')][_0xa0a8('0x26')]({'where':_0x3364e5[_0xa0a8('0xa4')]})[_0xa0a8('0x16')](function(_0xeaf1a0){_0xce8f09['count']=_0xeaf1a0;if(_0x53867f['query'][_0xa0a8('0x45')]){_0x3364e5[_0xa0a8('0x46')]=[{'all':!![]}];}return db[_0xa0a8('0x62')][_0xa0a8('0x38')](_0x3364e5);})['then'](function(_0x406c24){_0xce8f09[_0xa0a8('0xac')]=_0x406c24;return _0xce8f09;});}})[_0xa0a8('0x16')](respondWithFilteredResult(_0x4c383b,_0x3364e5))[_0xa0a8('0x48')](handleError(_0x4c383b,null));};exports['getMyMessages']=function(_0x172a3e,_0x3220ca){var _0x1a0fd6={'where':{}},_0x5e7119={},_0xce83a1={'count':0x0,'rows':[]};return db['ChatInteraction']['findOne']({'where':{'id':_0x172a3e[_0xa0a8('0x3d')]['id']}})[_0xa0a8('0x16')](handleEntityNotFound(_0x3220ca,null))[_0xa0a8('0x16')](function(_0x77be29){if(_0x77be29){_0x5e7119[_0xa0a8('0x3e')]=_[_0xa0a8('0x3f')](db[_0xa0a8('0x62')][_0xa0a8('0x33')]);_0x5e7119['query']=_[_0xa0a8('0x3f')](_0x172a3e[_0xa0a8('0x3a')]);_0x5e7119['filters']=_['intersection'](_0x5e7119[_0xa0a8('0x3e')],_0x5e7119[_0xa0a8('0x3a')]);_0x1a0fd6['attributes']=_[_0xa0a8('0x41')](_0x5e7119[_0xa0a8('0x3e')],qs[_0xa0a8('0x43')](_0x172a3e[_0xa0a8('0x3a')][_0xa0a8('0x43')]));_0x1a0fd6['attributes']=_0x1a0fd6[_0xa0a8('0x42')][_0xa0a8('0x44')]?_0x1a0fd6[_0xa0a8('0x42')]:_0x5e7119[_0xa0a8('0x3e')];if(!_0x172a3e['query'][_0xa0a8('0xa0')]('nolimit')){_0x1a0fd6[_0xa0a8('0x25')]=qs[_0xa0a8('0x25')](_0x172a3e[_0xa0a8('0x3a')]['limit']);_0x1a0fd6['offset']=qs['offset'](_0x172a3e[_0xa0a8('0x3a')][_0xa0a8('0x23')]);}_0x1a0fd6[_0xa0a8('0xa2')]=qs[_0xa0a8('0xa3')](_0x172a3e['query'][_0xa0a8('0xa3')]);_0x1a0fd6['where']=qs[_0xa0a8('0x40')](_[_0xa0a8('0xa5')](_0x172a3e[_0xa0a8('0x3a')],_0x5e7119[_0xa0a8('0x40')]));_0x1a0fd6[_0xa0a8('0xa4')][_0xa0a8('0xa6')]=_0x77be29['id'];if(_0x172a3e[_0xa0a8('0x3a')][_0xa0a8('0xa8')]){_0x1a0fd6[_0xa0a8('0xa4')]=_[_0xa0a8('0xa7')](_0x1a0fd6[_0xa0a8('0xa4')],{'$or':_['map'](_0x1a0fd6[_0xa0a8('0x42')],function(_0x4144f9){var _0x12332f={};_0x12332f[_0x4144f9]={'$like':'%'+_0x172a3e[_0xa0a8('0x3a')][_0xa0a8('0xa8')]+'%'};return _0x12332f;})});}_0x1a0fd6[_0xa0a8('0xa4')][_0xa0a8('0xad')]=![];if(_0x172a3e[_0xa0a8('0x3a')]['id']){_0x1a0fd6[_0xa0a8('0xa4')]['id']={'$gt':_0x172a3e['query']['id']};}_0x1a0fd6=_[_0xa0a8('0xa7')]({},_0x1a0fd6,_0x172a3e[_0xa0a8('0xab')]);return db[_0xa0a8('0x62')][_0xa0a8('0x26')]({'where':_0x1a0fd6[_0xa0a8('0xa4')]})[_0xa0a8('0x16')](function(_0x343a6d){_0xce83a1['count']=_0x343a6d;_0x1a0fd6[_0xa0a8('0x46')]=[];if(_0x172a3e[_0xa0a8('0x3a')]['includeAgent']){_0x1a0fd6[_0xa0a8('0x46')][_0xa0a8('0xae')]({'model':db['User'],'as':_0xa0a8('0x83'),'attributes':['id',_0xa0a8('0x90'),'alias']});}if(_0x172a3e[_0xa0a8('0x3a')][_0xa0a8('0x45')]){_0x1a0fd6[_0xa0a8('0x46')]=[{'all':!![]}];}return db[_0xa0a8('0x62')]['findAll'](_0x1a0fd6);})[_0xa0a8('0x16')](function(_0x26d6ef){_0xce83a1[_0xa0a8('0xac')]=_0x26d6ef;return _0xce83a1;});}})[_0xa0a8('0x16')](respondWithFilteredResult(_0x3220ca,_0x1a0fd6))[_0xa0a8('0x48')](handleError(_0x3220ca,null));};exports['addTags']=function(_0x556efd,_0x25c659){return db[_0xa0a8('0x32')][_0xa0a8('0x47')]({'where':{'id':_0x556efd[_0xa0a8('0x3d')]['id']}})['then'](handleEntityNotFound(_0x25c659,null))[_0xa0a8('0x16')](function(_0x4f659d){if(_0x4f659d){return _0x4f659d[_0xa0a8('0xaf')](_0x556efd[_0xa0a8('0x4a')]['ids'],_[_0xa0a8('0x9d')](_0x556efd[_0xa0a8('0x4a')],[_0xa0a8('0x9e'),'id'])||{})[_0xa0a8('0xb0')](function(){return db['Tag'][_0xa0a8('0x38')]({'attributes':['id',_0xa0a8('0x2b'),'color'],'where':{'id':_0x556efd['body'][_0xa0a8('0x9e')]}});})[_0xa0a8('0x16')](function(_0x1cbb6f){socket['emit']('chatInteractionTags:save',{'id':Number(_0x556efd[_0xa0a8('0x3d')]['id']),'tags':_0x1cbb6f||[]});return{'id':Number(_0x556efd[_0xa0a8('0x3d')]['id']),'tags':_0x1cbb6f||[]};});}})[_0xa0a8('0x16')](respondWithResult(_0x25c659,null))['catch'](handleError(_0x25c659,null));};exports[_0xa0a8('0xb1')]=function(_0x412263,_0x3ba9aa){return db[_0xa0a8('0x32')][_0xa0a8('0x47')]({'where':{'id':_0x412263[_0xa0a8('0x3d')]['id']}})[_0xa0a8('0x16')](handleEntityNotFound(_0x3ba9aa,null))[_0xa0a8('0x16')](function(_0x47f1fb){if(_0x47f1fb){return _0x47f1fb['removeTags'](_0x412263[_0xa0a8('0x3a')][_0xa0a8('0x9e')]);}})['then'](respondWithStatusCode(_0x3ba9aa,null))[_0xa0a8('0x48')](handleError(_0x3ba9aa,null));};exports[_0xa0a8('0x7c')]=function(_0x4d337d,_0x1adad5){var _0x58c51e=moment()[_0xa0a8('0xb2')]()['toString']();var _0x3218bb=path[_0xa0a8('0x78')](config[_0xa0a8('0x79')],_0xa0a8('0xb3'),_0xa0a8('0xb4'),_0xa0a8('0xb5'));var _0x3c9a1e=path[_0xa0a8('0x78')](config[_0xa0a8('0x79')],_0xa0a8('0xb3'),_0xa0a8('0xb4'),_0xa0a8('0xb6'));var _0x2f3928=path[_0xa0a8('0x78')](_0x3218bb,_0x58c51e);var _0x2463ac=util[_0xa0a8('0x89')](_0xa0a8('0xb7'),_0x4d337d[_0xa0a8('0x3d')]['id'],_0x58c51e);var _0xe40df0=path[_0xa0a8('0x78')](_0x3218bb,_0x2463ac);var _0x202ba1=[];_0x202ba1[_0xa0a8('0xae')]({'model':db['User'],'as':_0xa0a8('0x83'),'attributes':['id',_0xa0a8('0x90')],'raw':!![]});_0x202ba1[_0xa0a8('0xae')]({'model':db['CmContact'],'as':_0xa0a8('0x66'),'attributes':['id',_0xa0a8('0xb8'),_0xa0a8('0xb9')],'raw':!![]});if(_0x4d337d[_0xa0a8('0x3a')][_0xa0a8('0xb6')]){_0x202ba1[_0xa0a8('0xae')]({'model':db[_0xa0a8('0x75')],'as':_0xa0a8('0x75'),'raw':!![]});}var _0x575d14=[{'model':db[_0xa0a8('0x62')],'as':_0xa0a8('0x82'),'attributes':['id',_0xa0a8('0x4a'),'createdAt',_0xa0a8('0xba'),_0xa0a8('0xad'),_0xa0a8('0xbb')],'include':_0x202ba1}];_0x575d14[_0xa0a8('0xae')]({'model':db[_0xa0a8('0x4d')],'as':_0xa0a8('0xbc'),'attributes':['id',_0xa0a8('0x2b')]});_0x575d14['push']({'model':db[_0xa0a8('0x83')],'as':_0xa0a8('0xbd'),'attributes':['id',_0xa0a8('0x90')]});return db[_0xa0a8('0x32')][_0xa0a8('0x47')]({'where':{'id':_0x4d337d[_0xa0a8('0x3d')]['id']},'include':_0x575d14})[_0xa0a8('0x16')](handleEntityNotFound(_0x1adad5,null))['then'](function(_0x3ecd23){if(_0x3ecd23){var _0x9366dc=_0x3ecd23[_0xa0a8('0xbe')]({'plain':!![]});fs['mkdirSync'](_0x2f3928);var _0x5b54ac={'channel':_0xa0a8('0xbf'),'account':_0x9366dc[_0xa0a8('0xbc')][_0xa0a8('0x2b')],'agent':_0x9366dc[_0xa0a8('0xbd')]?_0x9366dc[_0xa0a8('0xbd')][_0xa0a8('0x90')]:_0xa0a8('0xc0'),'createdAt':moment(_0x9366dc[_0xa0a8('0x92')])[_0xa0a8('0x89')](_0xa0a8('0xaa'))[_0xa0a8('0xc1')](),'closedAt':_0x9366dc['closed']?moment(_0x9366dc['closedAt'])[_0xa0a8('0x89')](_0xa0a8('0xaa'))[_0xa0a8('0xc1')]():'','disposition':_0x9366dc[_0xa0a8('0x6c')],'chatInfo':{'browser':_0x9366dc[_0xa0a8('0xc2')],'os':_0x9366dc[_0xa0a8('0xc3')],'referer':_0x9366dc[_0xa0a8('0xc4')],'customerIp':_0x9366dc['customerIp'],'customerPort':_0x9366dc[_0xa0a8('0xc5')]?_0x9366dc[_0xa0a8('0xc5')]:_0xa0a8('0xc0')},'messages':_(_0x9366dc['Messages'])['tail']()[_0xa0a8('0xa8')]({'secret':![]})[_0xa0a8('0x31')](function(_0x10942f){if(_0x10942f[_0xa0a8('0x75')]){var _0x2393d2=path[_0xa0a8('0x78')](_0x3c9a1e,_0x10942f['Attachment'][_0xa0a8('0x7b')]);if(fs[_0xa0a8('0xc6')](_0x2393d2)){fs[_0xa0a8('0xc7')](_0x2393d2)['pipe'](fs['createWriteStream'](path[_0xa0a8('0x78')](_0x2f3928,_0x10942f['Attachment'][_0xa0a8('0x7b')])));}}return{'date':moment(_0x10942f[_0xa0a8('0x92')])[_0xa0a8('0x89')](_0xa0a8('0xaa'))[_0xa0a8('0xc1')](),'sender':_0x10942f['direction']===_0xa0a8('0x61')?_0x10942f[_0xa0a8('0x83')]?_0x10942f['User'][_0xa0a8('0x90')]:_0xa0a8('0x8d'):_0x10942f[_0xa0a8('0x66')]['firstName']+(_0x10942f[_0xa0a8('0x66')]['lastName']?'\x20'+_0x10942f[_0xa0a8('0x66')]['lastName']:''),'body':_0x10942f[_0xa0a8('0x75')]?_0x10942f['Attachment'][_0xa0a8('0x7b')]:_0x10942f['body'],'direction':_0x10942f[_0xa0a8('0xba')]==='out'?'A':'C','secret':_0x10942f[_0xa0a8('0xad')],'read':_0x10942f[_0xa0a8('0xbb')],'attachment':_0x10942f[_0xa0a8('0x75')]};})[_0xa0a8('0xc8')]()};return ejs[_0xa0a8('0xc9')](path[_0xa0a8('0x78')](config[_0xa0a8('0x79')],_0xa0a8('0xb3'),_0xa0a8('0xca'),'downloadInteraction.ejs'),{'interaction':_0x5b54ac})[_0xa0a8('0x16')](function(_0x4fe9f5){var _0x2bdb75=path[_0xa0a8('0x78')](_0x2f3928,'transcript-'+_0x9366dc['id']+'-'+_0x58c51e+_0xa0a8('0xcb'));var _0x1774ab={'path':_0x2bdb75,'channel':_0xa0a8('0xbf'),'interactionId':_0x9366dc['id']};return pdf[_0xa0a8('0xcc')](_0x4fe9f5,_0x1774ab);})[_0xa0a8('0x16')](function(){return new Promise(function(_0x72e462,_0x393aeb){zipdir(_0x2f3928,{'saveTo':_0xe40df0},function(_0x1f2bad,_0x42cd90){if(_0x1f2bad)return _0x393aeb(_0x1f2bad);return _0x72e462(_0x42cd90);});})[_0xa0a8('0x16')](function(){return new BPromise(function(_0xd2f2f2,_0x16eaa2){rimraf(_0x2f3928,function(_0xcf8bad){if(_0xcf8bad)_0x16eaa2(_0xcf8bad);return _0xd2f2f2();});});})[_0xa0a8('0x16')](function(){return _0x1adad5[_0xa0a8('0x7c')](_0xe40df0,_0x2463ac,function(_0x3986c0){if(_0x3986c0){logger[_0xa0a8('0x1a')](_0xa0a8('0xcd'),_0x3986c0);}else{fs[_0xa0a8('0xce')](_0xe40df0);}});});});}else{return _0x1adad5[_0xa0a8('0x1f')](0xc8);}})['catch'](handleError(_0x1adad5,null));};
\ No newline at end of file
+var _0xf0d4=['[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','CloudProvider','Smtp','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','hasOwnProperty','nolimit','order','sort','where','pick','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','ChatInteractionId','options','includeAgent','setTags','omit','spread','Tag','color','emit','chatInteractionTags:save','removeTags','toString','server','files','tmp','attachments','transcript-%d-%s.zip','push','firstName','lastName','createdAt','read','Account','Owner','get','mkdirSync','Chat','closedAt','browserName','osName','referer','customerIp','customerPort','N.A.','tail','existsSync','createReadStream','pipe','createWriteStream','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','update','destroy','stack','name','send','render','body','agent','interaction','map','ChatInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','chat','query','user','show','model','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','find','create','describe','createVidaooSession','params','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','fullname','contact','account','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','vidaooTopic','isNull','vidaooNote','follow','vidaooMetadata','metadata','Sequelize','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','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','originalname','file','Attachment','attachmentDownload','join','root','server/files/attachments/','offline-chat/','basename','download','close','mailTranscript','server/files/chat/upload/','format','pathTranscript','Messages','User','ChatWebsiteId','ContactId','%s%d','System','Visitor','website_alias','agentAlias','agent_alias','alias','agent_fullname'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xf0d4,0x124));var _0x4f0d=function(_0x5815af,_0x361f0b){_0x5815af=_0x5815af-0x0;var _0x3f14cb=_0xf0d4[_0x5815af];return _0x3f14cb;};'use strict';var rimraf=require(_0x4f0d('0x0'));var zipdir=require(_0x4f0d('0x1'));var rp=require(_0x4f0d('0x2'));var moment=require(_0x4f0d('0x3'));var BPromise=require(_0x4f0d('0x4'));var Mustache=require(_0x4f0d('0x5'));var util=require(_0x4f0d('0x6'));var path=require(_0x4f0d('0x7'));var ejs=require(_0x4f0d('0x8'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x4f0d('0x9'));var qs=require(_0x4f0d('0xa'));var pdf=require(_0x4f0d('0xb'));var logger=require(_0x4f0d('0xc'))(_0x4f0d('0xd'));var config=require(_0x4f0d('0xe'));var db=require(_0x4f0d('0xf'))['db'];config[_0x4f0d('0x10')]=_[_0x4f0d('0x11')](config[_0x4f0d('0x10')],{'host':_0x4f0d('0x12'),'port':0x18eb});var socket=require(_0x4f0d('0x13'))(new Redis(config['redis']));require(_0x4f0d('0x14'))['register'](socket);var jayson=require(_0x4f0d('0x15'));var client=jayson[_0x4f0d('0x16')]['http']({'port':0x232b});var client9004=jayson['client'][_0x4f0d('0x17')]({'port':0x232c});function respondWithRpcPromise(_0x2e0e7c,_0x413c4d,_0x1f73b8,_0x473521){return new BPromise(function(_0x5f2ffb,_0x3b325e){var _0x3eeb58=_0x473521||client;return _0x3eeb58[_0x4f0d('0x18')](_0x2e0e7c,_0x1f73b8)[_0x4f0d('0x19')](function(_0xe20d4c){logger[_0x4f0d('0x1a')](_0x4f0d('0x1b'),_0x413c4d,_0x4f0d('0x1c'));logger[_0x4f0d('0x1d')](_0x4f0d('0x1e'),_0x413c4d,_0x4f0d('0x1c'),JSON[_0x4f0d('0x1f')](_0xe20d4c));if(_0xe20d4c[_0x4f0d('0x20')]){if(_0xe20d4c['error'][_0x4f0d('0x21')]===0x1f4){logger['error'](_0x4f0d('0x1b'),_0x413c4d,_0xe20d4c[_0x4f0d('0x20')][_0x4f0d('0x22')]);return _0x3b325e(_0xe20d4c[_0x4f0d('0x20')][_0x4f0d('0x22')]);}logger[_0x4f0d('0x20')](_0x4f0d('0x1b'),_0x413c4d,_0xe20d4c[_0x4f0d('0x20')]['message']);return _0x5f2ffb(_0xe20d4c[_0x4f0d('0x20')]['message']);}else{logger[_0x4f0d('0x1a')](_0x4f0d('0x1b'),_0x413c4d,_0x4f0d('0x1c'));_0x5f2ffb(_0xe20d4c['result'][_0x4f0d('0x22')]);}})[_0x4f0d('0x23')](function(_0x560b83){logger[_0x4f0d('0x20')](_0x4f0d('0x1b'),_0x413c4d,_0x560b83);_0x3b325e(_0x560b83);});});}function respondWithStatusCode(_0x4cf136,_0x47abd6){_0x47abd6=_0x47abd6||0xcc;return function(_0x5bff38){if(_0x5bff38){return _0x4cf136[_0x4f0d('0x24')](_0x47abd6);}return _0x4cf136[_0x4f0d('0x25')](_0x47abd6)[_0x4f0d('0x26')]();};}function respondWithResult(_0x306c7a,_0x5a7cf3){_0x5a7cf3=_0x5a7cf3||0xc8;return function(_0x513fa6){if(_0x513fa6){return _0x306c7a[_0x4f0d('0x25')](_0x5a7cf3)[_0x4f0d('0x27')](_0x513fa6);}};}function respondWithFilteredResult(_0x23e6dd,_0x3fb3ed){return function(_0x15e380){if(_0x15e380){var _0xb3a1f0=typeof _0x3fb3ed['offset']===_0x4f0d('0x28')&&typeof _0x3fb3ed[_0x4f0d('0x29')]==='undefined';var _0x50a570=_0x15e380[_0x4f0d('0x2a')];var _0x3d8f4a=_0xb3a1f0?0x0:_0x3fb3ed[_0x4f0d('0x2b')];var _0x24c2f2=_0xb3a1f0?_0x15e380[_0x4f0d('0x2a')]:_0x3fb3ed[_0x4f0d('0x2b')]+_0x3fb3ed['limit'];var _0x269f94;if(_0x24c2f2>=_0x50a570){_0x24c2f2=_0x50a570;_0x269f94=0xc8;}else{_0x269f94=0xce;}_0x23e6dd[_0x4f0d('0x25')](_0x269f94);return _0x23e6dd['set'](_0x4f0d('0x2c'),_0x3d8f4a+'-'+_0x24c2f2+'/'+_0x50a570)[_0x4f0d('0x27')](_0x15e380);}return null;};}function saveUpdates(_0x3e6382){return function(_0xc4aa51){if(_0xc4aa51){return _0xc4aa51[_0x4f0d('0x2d')](_0x3e6382)[_0x4f0d('0x19')](function(_0x2ecc62){return _0x2ecc62;});}return null;};}function removeEntity(_0x34b22f){return function(_0x3c5394){if(_0x3c5394){return _0x3c5394[_0x4f0d('0x2e')]()[_0x4f0d('0x19')](function(){_0x34b22f[_0x4f0d('0x25')](0xcc)[_0x4f0d('0x26')]();});}};}function handleEntityNotFound(_0x565cfa){return function(_0x2c6acc){if(!_0x2c6acc){_0x565cfa[_0x4f0d('0x24')](0x194);}return _0x2c6acc;};}function handleError(_0x2eadfd,_0x52cfde){_0x52cfde=_0x52cfde||0x1f4;return function(_0x4ce6da){logger[_0x4f0d('0x20')](_0x4ce6da[_0x4f0d('0x2f')]);if(_0x4ce6da[_0x4f0d('0x30')]){delete _0x4ce6da['name'];}_0x2eadfd['status'](_0x52cfde)[_0x4f0d('0x31')](_0x4ce6da);};}function getMustacheRender(_0x508f5b,_0x5653ae){return Mustache[_0x4f0d('0x32')](_0x508f5b,_['merge'](_0x5653ae[_0x4f0d('0x33')],{'contact':_0x5653ae['contact'],'message':_0x5653ae['message'],'agent':_0x5653ae[_0x4f0d('0x34')],'interaction':_0x5653ae[_0x4f0d('0x35')],'account':_0x5653ae['account']}))||'';}exports['index']=function(_0x272741,_0x210d18){var _0x447b84={};var _0x5101ab=_[_0x4f0d('0x36')](db[_0x4f0d('0x37')][_0x4f0d('0x38')],function(_0x3435af){return{'name':_0x3435af[_0x4f0d('0x39')],'type':_0x3435af[_0x4f0d('0x3a')][_0x4f0d('0x3b')]};});_0x447b84=qs[_0x4f0d('0x3c')](_0x5101ab,_0x272741);return interaction[_0x4f0d('0x3d')](_0x4f0d('0x3e'),_0x272741[_0x4f0d('0x3f')],_0x272741[_0x4f0d('0x40')],_0x447b84,_0x5101ab)[_0x4f0d('0x19')](respondWithFilteredResult(_0x210d18,_0x447b84))['catch'](handleError(_0x210d18,null));};exports[_0x4f0d('0x41')]=function(_0x5b5086,_0x1c5922){var _0x36cfc0={'raw':![],'where':{'id':_0x5b5086['params']['id']}},_0x20884c={};_0x20884c[_0x4f0d('0x42')]=_[_0x4f0d('0x43')](db[_0x4f0d('0x37')][_0x4f0d('0x38')]);_0x20884c[_0x4f0d('0x3f')]=_[_0x4f0d('0x43')](_0x5b5086[_0x4f0d('0x3f')]);_0x20884c[_0x4f0d('0x44')]=_[_0x4f0d('0x45')](_0x20884c['model'],_0x20884c[_0x4f0d('0x3f')]);_0x36cfc0[_0x4f0d('0x46')]=_[_0x4f0d('0x45')](_0x20884c[_0x4f0d('0x42')],qs[_0x4f0d('0x47')](_0x5b5086[_0x4f0d('0x3f')]['fields']));_0x36cfc0[_0x4f0d('0x46')]=_0x36cfc0['attributes'][_0x4f0d('0x48')]?_0x36cfc0[_0x4f0d('0x46')]:_0x20884c[_0x4f0d('0x42')];if(_0x5b5086[_0x4f0d('0x3f')][_0x4f0d('0x49')]){_0x36cfc0[_0x4f0d('0x4a')]=[{'all':!![]}];}_0x36cfc0=_[_0x4f0d('0x4b')]({},_0x36cfc0,_0x5b5086['options']);return db['ChatInteraction'][_0x4f0d('0x4c')](_0x36cfc0)[_0x4f0d('0x19')](handleEntityNotFound(_0x1c5922,null))[_0x4f0d('0x19')](respondWithResult(_0x1c5922,null))['catch'](handleError(_0x1c5922,null));};exports[_0x4f0d('0x4d')]=function(_0x2a4402,_0x2d03cc){return db[_0x4f0d('0x37')][_0x4f0d('0x4d')](_0x2a4402[_0x4f0d('0x33')],{})['then'](respondWithResult(_0x2d03cc,0xc9))[_0x4f0d('0x23')](handleError(_0x2d03cc,null));};exports['update']=function(_0x35d9df,_0x3911af){if(_0x35d9df[_0x4f0d('0x33')]['id']){delete _0x35d9df[_0x4f0d('0x33')]['id'];}return db[_0x4f0d('0x37')]['find']({'where':{'id':_0x35d9df['params']['id']}})['then'](handleEntityNotFound(_0x3911af,null))[_0x4f0d('0x19')](saveUpdates(_0x35d9df[_0x4f0d('0x33')],null))[_0x4f0d('0x19')](respondWithResult(_0x3911af,null))[_0x4f0d('0x23')](handleError(_0x3911af,null));};exports[_0x4f0d('0x2e')]=function(_0x19501b,_0x5ec25a){return db[_0x4f0d('0x37')][_0x4f0d('0x4c')]({'where':{'id':_0x19501b['params']['id']}})[_0x4f0d('0x19')](handleEntityNotFound(_0x5ec25a,null))[_0x4f0d('0x19')](removeEntity(_0x5ec25a,null))['catch'](handleError(_0x5ec25a,null));};exports[_0x4f0d('0x4e')]=function(_0x2b45fc,_0xc42e27){return db[_0x4f0d('0x37')][_0x4f0d('0x4e')]()[_0x4f0d('0x19')](respondWithResult(_0xc42e27,null))['catch'](handleError(_0xc42e27,null));};exports[_0x4f0d('0x4f')]=function(_0x55f936,_0x525d53){var _0x60f6c7=_0x55f936[_0x4f0d('0x50')]['id'];var _0x2e96de;var _0x9250bb;var _0x25a684;return db['ChatInteraction'][_0x4f0d('0x51')]({'where':{'id':_0x60f6c7}})[_0x4f0d('0x19')](function(_0x23b68c){_0x2e96de=_0x23b68c;return db[_0x4f0d('0x52')][_0x4f0d('0x51')]({'where':{'id':_0x23b68c['ChatWebsiteId']},'attributes':['id',_0x4f0d('0x53'),_0x4f0d('0x54'),'vidaooTopic','vidaooNote','vidaooMetadata'],'raw':!![]});})['then'](function(_0x4a5607){if(_0x4a5607&&_0x4a5607[_0x4f0d('0x53')]&&_0x4a5607[_0x4f0d('0x54')]){_0x9250bb=_0x4a5607;var _0x2d17ff={'interaction':{'id':_0x60f6c7},'agent':{'id':_0x55f936['user']['id'],'name':_0x55f936['user'][_0x4f0d('0x30')],'fullname':_0x55f936[_0x4f0d('0x40')][_0x4f0d('0x55')],'email':_0x55f936[_0x4f0d('0x40')]['email']},'contact':_0x55f936[_0x4f0d('0x33')][_0x4f0d('0x56')],'account':_0x55f936[_0x4f0d('0x33')][_0x4f0d('0x57')]};var _0x55424c={'rejectUnauthorized':![],'method':_0x4f0d('0x58'),'url':_0x4f0d('0x59'),'headers':{'X-APIKEY':_0x4a5607[_0x4f0d('0x53')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x55f936[_0x4f0d('0x40')][_0x4f0d('0x5a')]],'buttons':null,'topic':_0x9250bb[_0x4f0d('0x5b')],'note':_[_0x4f0d('0x5c')](_0x9250bb[_0x4f0d('0x5d')])?null:getMustacheRender(_0x9250bb[_0x4f0d('0x5d')],_0x2d17ff),'metadata':null},'redirect':_0x4f0d('0x5e'),'json':!![]};try{if(!_[_0x4f0d('0x5c')](_0x9250bb['vidaooMetadata'])){var _0x1c5913=getMustacheRender(_0x9250bb[_0x4f0d('0x5f')],_0x2d17ff);var _0x2b73a6=JSON['parse'](_0x1c5913);_0x55424c[_0x4f0d('0x33')][_0x4f0d('0x60')]=_0x2b73a6;}}catch(_0x41277e){throw new db[(_0x4f0d('0x61'))][(_0x4f0d('0x62'))]('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x55424c);}else{throw new db[(_0x4f0d('0x61'))][(_0x4f0d('0x62'))](_0x4f0d('0x63'));}})[_0x4f0d('0x19')](function(_0x1e4891){_0x25a684=_0x1e4891;if(_0x25a684['id']){var _0x5ad702={'body':_0x25a684[_0x4f0d('0x64')],'ChatWebsiteId':_0x9250bb['id'],'ChatInteractionId':_0x2e96de['id'],'direction':_0x4f0d('0x65'),'UserId':_0x55f936[_0x4f0d('0x40')]['id']};return db[_0x4f0d('0x66')][_0x4f0d('0x4d')](_0x5ad702,{});}else{throw new db[(_0x4f0d('0x61'))][(_0x4f0d('0x62'))](_0x4f0d('0x67'));}})[_0x4f0d('0x19')](function(){return _0x2e96de[_0x4f0d('0x68')]({'vidaooSessionId':_0x25a684['id']});})[_0x4f0d('0x19')](respondWithResult(_0x525d53,null))['catch'](handleError(_0x525d53,null));};exports[_0x4f0d('0x69')]=function(_0xef6484,_0x47243c){if(_0xef6484[_0x4f0d('0x33')]['id']){delete _0xef6484[_0x4f0d('0x33')]['id'];}return db['ChatInteraction'][_0x4f0d('0x4c')]({'where':{'id':_0xef6484[_0x4f0d('0x50')]['id']},'include':[{'model':db[_0x4f0d('0x6a')],'as':_0x4f0d('0x6b')}]})[_0x4f0d('0x19')](handleEntityNotFound(_0x47243c,null))[_0x4f0d('0x19')](saveUpdates(_0xef6484[_0x4f0d('0x33')],null))[_0x4f0d('0x19')](respondWithResult(_0x47243c,null))[_0x4f0d('0x23')](handleError(_0x47243c,null));};exports[_0x4f0d('0x6c')]=function(_0x127a1a,_0x12f1b2){if(_0x127a1a[_0x4f0d('0x33')]['id']){delete _0x127a1a[_0x4f0d('0x33')]['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x127a1a[_0x4f0d('0x50')]['id']}})['then'](function(_0x2e24b7){if(!_0x2e24b7){logger['error'](_0x4f0d('0x6d'),_0x4f0d('0x6c'),0x194,_0x4f0d('0x6e'));_0x12f1b2[_0x4f0d('0x24')](0x194);}else{if(_0x2e24b7[_0x4f0d('0x6f')]){throw new db[(_0x4f0d('0x61'))][(_0x4f0d('0x62'))](_0x4f0d('0x70'));}}return _0x2e24b7;})['then'](function(_0x3cbae2){if(_0x3cbae2){return _0x3cbae2[_0x4f0d('0x2d')]({'closed':_0x127a1a[_0x4f0d('0x33')][_0x4f0d('0x71')],'disposition':_0x127a1a['body'][_0x4f0d('0x72')]})[_0x4f0d('0x19')](function(_0x60793f){return _0x60793f;});}})[_0x4f0d('0x19')](function(){return respondWithRpcPromise(_0x4f0d('0x73'),_0x4f0d('0x6c'),_0x127a1a[_0x4f0d('0x33')],client9004);})['then'](respondWithResult(_0x12f1b2,null))[_0x4f0d('0x23')](handleError(_0x12f1b2,null));};exports[_0x4f0d('0x74')]=function(_0x3aa87e,_0x5cbeb9){_0x3aa87e[_0x4f0d('0x33')][_0x4f0d('0x30')]=_0x3aa87e['file'][_0x4f0d('0x75')];_0x3aa87e[_0x4f0d('0x33')]['basename']=_0x3aa87e[_0x4f0d('0x76')]['filename'];_0x3aa87e[_0x4f0d('0x33')][_0x4f0d('0x3a')]=_0x3aa87e['file']['mimetype'];return db[_0x4f0d('0x77')][_0x4f0d('0x4d')](_0x3aa87e[_0x4f0d('0x33')])[_0x4f0d('0x19')](respondWithResult(_0x5cbeb9,0xc9))[_0x4f0d('0x23')](handleError(_0x5cbeb9,null));};exports[_0x4f0d('0x78')]=function(_0x1288da,_0x8cc2b7){return db['ChatInteraction'][_0x4f0d('0x51')]({'where':{'id':_0x1288da[_0x4f0d('0x50')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x8cc2b7,null))['then'](function(_0x3a82c2){if(_0x3a82c2){if(_0x3a82c2[_0x4f0d('0x71')]){return _0x8cc2b7[_0x4f0d('0x25')](0x193)[_0x4f0d('0x27')]({'status':0x193,'message':'Unauthorized'});}return db['Attachment'][_0x4f0d('0x51')]({'where':{'id':_0x1288da[_0x4f0d('0x3f')]['attachId']},'raw':!![]})['then'](handleEntityNotFound(_0x8cc2b7,null));}})[_0x4f0d('0x19')](function(_0x1922b1){if(_0x1922b1){var _0x748058=_0x1922b1['ChatOfflineMessageId']!==null;var _0x4c2aaa=path[_0x4f0d('0x79')](config[_0x4f0d('0x7a')],_0x4f0d('0x7b'));if(_0x748058){_0x4c2aaa=path['join'](_0x4c2aaa,_0x4f0d('0x7c'));}var _0x338bd=path[_0x4f0d('0x79')](_0x4c2aaa,_0x1922b1[_0x4f0d('0x7d')]);return _0x8cc2b7[_0x4f0d('0x7e')](_0x338bd);}})[_0x4f0d('0x23')](handleError(_0x8cc2b7,null));};exports[_0x4f0d('0x7f')]=function(_0xa50f8,_0x474fe8){var _0x5afe8b=null;var _0x207940=null;var _0x4d8d54=null;if(_0xa50f8[_0x4f0d('0x33')]['id']){delete _0xa50f8[_0x4f0d('0x33')]['id'];}if(_0xa50f8[_0x4f0d('0x33')][_0x4f0d('0x80')]){_0x4d8d54=path['join'](config[_0x4f0d('0x7a')],_0x4f0d('0x81'),util[_0x4f0d('0x82')]('transcript-%s.txt',Date['now']()));_0xa50f8['body'][_0x4f0d('0x83')]=_0x4d8d54;}return db['ChatInteraction'][_0x4f0d('0x4c')]({'where':{'id':_0xa50f8[_0x4f0d('0x50')]['id']},'include':[{'model':db['ChatMessage'],'as':_0x4f0d('0x84'),'include':[{'model':db[_0x4f0d('0x85')],'as':_0x4f0d('0x85')}]}]})['then'](handleEntityNotFound(_0x474fe8,null))[_0x4f0d('0x19')](saveUpdates(_0xa50f8[_0x4f0d('0x33')],null))['then'](function(_0x32fef9){if(_0x32fef9){_0x5afe8b=_0x32fef9;return db[_0x4f0d('0x52')][_0x4f0d('0x4c')]({'where':{'id':_0x5afe8b[_0x4f0d('0x86')]}});}})[_0x4f0d('0x19')](function(_0x290491){if(_0x290491){_0x207940=_0x290491;return db[_0x4f0d('0x6a')]['find']({'where':{'id':_0x5afe8b[_0x4f0d('0x87')]}});}})['then'](function(_0x113f69){if(_0x113f69){if(_0x4d8d54){var _0x2a105d=null;for(var _0x3ef42e=0x1;_0x3ef42e<_0x5afe8b[_0x4f0d('0x84')]['length'];++_0x3ef42e){_0x2a105d=_0x5afe8b[_0x4f0d('0x84')][_0x3ef42e];var _0x1389cf=_0x2a105d[_0x4f0d('0x6f')]?util[_0x4f0d('0x82')](_0x4f0d('0x88'),_0x207940['agentAlias'],_0x2a105d['UserId']):_0x4f0d('0x89');var _0x19c33c=_0xa50f8['body']['customer']||util[_0x4f0d('0x82')](_0x4f0d('0x88'),_0x4f0d('0x8a'),_0x2a105d[_0x4f0d('0x87')]);switch(_0x207940['agentIdentifier']){case _0x4f0d('0x8b'):_0x1389cf=_0x2a105d['UserId']?util[_0x4f0d('0x82')](_0x4f0d('0x88'),_0x207940[_0x4f0d('0x8c')],_0x2a105d[_0x4f0d('0x6f')]):_0x4f0d('0x89');break;case _0x4f0d('0x8d'):_0x1389cf=_0x2a105d[_0x4f0d('0x6f')]?_0x2a105d[_0x4f0d('0x85')][_0x4f0d('0x8e')]||_0x2a105d[_0x4f0d('0x85')][_0x4f0d('0x55')]:_0x4f0d('0x89');break;case _0x4f0d('0x8f'):_0x1389cf=_0x2a105d[_0x4f0d('0x6f')]?_0x2a105d[_0x4f0d('0x85')][_0x4f0d('0x55')]:_0x4f0d('0x89');break;default:_0x1389cf=_0x2a105d[_0x4f0d('0x6f')]?util['format'](_0x4f0d('0x88'),_0x207940[_0x4f0d('0x8c')],_0x2a105d[_0x4f0d('0x6f')]):'System';}var _0x135904=util[_0x4f0d('0x82')](_0x4f0d('0x90'),moment(_0x2a105d['createdAt'])[_0x4f0d('0x82')](_0x4f0d('0x91')),_0x2a105d[_0x4f0d('0x92')]==='in'?_0x19c33c:_0x1389cf,_0x2a105d[_0x4f0d('0x33')]);if(!_0x2a105d[_0x4f0d('0x93')]){fs[_0x4f0d('0x94')](_0x4d8d54,_0x135904);}}return db[_0x4f0d('0x95')][_0x4f0d('0x51')]({'where':{'service':!![]},'include':[{'model':db[_0x4f0d('0x96')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x4f0d('0x97')],'as':_0x4f0d('0x97'),'raw':!![]}]}]});}}})[_0x4f0d('0x19')](function(_0x5d673b){if(!_0x5d673b||!_0x5d673b[_0x4f0d('0x98')]||!_0xa50f8[_0x4f0d('0x33')])return _0x5afe8b;var _0x2bc68a=_0x5d673b[_0x4f0d('0x99')]();return respondWithRpcPromise(_0x4f0d('0x9a'),_0x4f0d('0x9b'),{'account':_0x2bc68a,'message':{'from':util[_0x4f0d('0x82')](_0x4f0d('0x9c'),_0x5d673b[_0x4f0d('0x30')],_0x5d673b['email']||_0x5d673b[_0x4f0d('0x98')]['user']),'to':_0xa50f8[_0x4f0d('0x33')][_0x4f0d('0x80')],'subject':'Mail\x20Transcript','text':util[_0x4f0d('0x82')](_0x4f0d('0x9d'),_0xa50f8[_0x4f0d('0x33')][_0x4f0d('0x80')]),'attachments':[{'path':_0x4d8d54}]}})[_0x4f0d('0x19')](function(){return _0x5afe8b;})[_0x4f0d('0x23')](function(_0x5f16a2){logger[_0x4f0d('0x20')](_0x5f16a2);});})[_0x4f0d('0x19')](respondWithStatusCode(_0x474fe8,0xc8))[_0x4f0d('0x23')](handleError(_0x474fe8,null));};exports['addMessage']=function(_0x2aed39,_0xe3df45){return db[_0x4f0d('0x66')][_0x4f0d('0x4c')]({'where':{'id':_0x2aed39[_0x4f0d('0x50')]['id']}})['then'](handleEntityNotFound(_0xe3df45,null))[_0x4f0d('0x19')](function(_0x1ee731){if(_0x1ee731){return _0x1ee731[_0x4f0d('0x9e')](_0x2aed39['body'][_0x4f0d('0x9f')],_['omit'](_0x2aed39[_0x4f0d('0x33')],[_0x4f0d('0x9f'),'id'])||{});}})[_0x4f0d('0x19')](respondWithResult(_0xe3df45,null))[_0x4f0d('0x23')](handleError(_0xe3df45,null));};exports['getMessages']=function(_0x4ac835,_0x1f8640){var _0x414661={'raw':![],'where':{}};var _0x472595={};var _0x4ccbfa={'count':0x0,'rows':[]};return db[_0x4f0d('0x37')]['findOne']({'where':{'id':_0x4ac835[_0x4f0d('0x50')]['id']}})['then'](handleEntityNotFound(_0x1f8640,null))[_0x4f0d('0x19')](function(_0x1cab22){if(_0x1cab22){_0x472595[_0x4f0d('0x42')]=_[_0x4f0d('0x43')](db['ChatMessage'][_0x4f0d('0x38')]);_0x472595[_0x4f0d('0x3f')]=_[_0x4f0d('0x43')](_0x4ac835[_0x4f0d('0x3f')]);_0x472595['filters']=_['intersection'](_0x472595[_0x4f0d('0x42')],_0x472595[_0x4f0d('0x3f')]);_0x414661[_0x4f0d('0x46')]=_['intersection'](_0x472595[_0x4f0d('0x42')],qs[_0x4f0d('0x47')](_0x4ac835[_0x4f0d('0x3f')][_0x4f0d('0x47')]));_0x414661[_0x4f0d('0x46')]=_0x414661[_0x4f0d('0x46')][_0x4f0d('0x48')]?_0x414661[_0x4f0d('0x46')]:_0x472595[_0x4f0d('0x42')];if(!_0x4ac835[_0x4f0d('0x3f')][_0x4f0d('0xa0')](_0x4f0d('0xa1'))){_0x414661[_0x4f0d('0x29')]=qs['limit'](_0x4ac835['query'][_0x4f0d('0x29')]);_0x414661['offset']=qs['offset'](_0x4ac835[_0x4f0d('0x3f')]['offset']);}_0x414661[_0x4f0d('0xa2')]=qs[_0x4f0d('0xa3')](_0x4ac835[_0x4f0d('0x3f')][_0x4f0d('0xa3')]);_0x414661[_0x4f0d('0xa4')]=qs['filters'](_[_0x4f0d('0xa5')](_0x4ac835[_0x4f0d('0x3f')],_0x472595[_0x4f0d('0x44')]));_0x414661['where']['ChatInteractionId']=_0x1cab22['id'];if(_0x4ac835[_0x4f0d('0x3f')][_0x4f0d('0xa6')]){_0x414661[_0x4f0d('0xa4')]=_[_0x4f0d('0x4b')](_0x414661['where'],{'$or':_[_0x4f0d('0x36')](_0x414661[_0x4f0d('0x46')],function(_0x3499b1){var _0x15f6ab={};_0x15f6ab[_0x3499b1]={'$like':'%'+_0x4ac835['query'][_0x4f0d('0xa6')]+'%'};return _0x15f6ab;})});}if(_0x4ac835[_0x4f0d('0x3f')][_0x4f0d('0xa7')]){var _0x257ea8=_0x4ac835[_0x4f0d('0x3f')]['$gte'][_0x4f0d('0xa8')](',');var _0x128183={};_0x128183[_0x257ea8[0x0]]={'$gte':moment(_0x257ea8[0x1])[_0x4f0d('0x82')](_0x4f0d('0xa9'))};_0x414661[_0x4f0d('0xa4')]=_[_0x4f0d('0x4b')](_0x414661[_0x4f0d('0xa4')],_0x128183);}_0x414661=_[_0x4f0d('0x4b')]({},_0x414661,_0x4ac835['options']);return db['ChatMessage'][_0x4f0d('0x2a')]({'where':_0x414661[_0x4f0d('0xa4')]})['then'](function(_0x30074c){_0x4ccbfa['count']=_0x30074c;if(_0x4ac835['query'][_0x4f0d('0x49')]){_0x414661[_0x4f0d('0x4a')]=[{'all':!![]}];}return db[_0x4f0d('0x66')][_0x4f0d('0x3d')](_0x414661);})['then'](function(_0x15e670){_0x4ccbfa['rows']=_0x15e670;return _0x4ccbfa;});}})['then'](respondWithFilteredResult(_0x1f8640,_0x414661))[_0x4f0d('0x23')](handleError(_0x1f8640,null));};exports['getMyMessages']=function(_0x1f5beb,_0x71b271){var _0x7a1323={'where':{}},_0x2df271={},_0x3a87f2={'count':0x0,'rows':[]};return db[_0x4f0d('0x37')][_0x4f0d('0x51')]({'where':{'id':_0x1f5beb[_0x4f0d('0x50')]['id']}})[_0x4f0d('0x19')](handleEntityNotFound(_0x71b271,null))['then'](function(_0x391a61){if(_0x391a61){_0x2df271[_0x4f0d('0x42')]=_['keys'](db['ChatMessage'][_0x4f0d('0x38')]);_0x2df271[_0x4f0d('0x3f')]=_['keys'](_0x1f5beb[_0x4f0d('0x3f')]);_0x2df271[_0x4f0d('0x44')]=_[_0x4f0d('0x45')](_0x2df271[_0x4f0d('0x42')],_0x2df271[_0x4f0d('0x3f')]);_0x7a1323[_0x4f0d('0x46')]=_[_0x4f0d('0x45')](_0x2df271[_0x4f0d('0x42')],qs[_0x4f0d('0x47')](_0x1f5beb[_0x4f0d('0x3f')][_0x4f0d('0x47')]));_0x7a1323[_0x4f0d('0x46')]=_0x7a1323['attributes'][_0x4f0d('0x48')]?_0x7a1323[_0x4f0d('0x46')]:_0x2df271[_0x4f0d('0x42')];if(!_0x1f5beb[_0x4f0d('0x3f')]['hasOwnProperty'](_0x4f0d('0xa1'))){_0x7a1323[_0x4f0d('0x29')]=qs[_0x4f0d('0x29')](_0x1f5beb[_0x4f0d('0x3f')][_0x4f0d('0x29')]);_0x7a1323[_0x4f0d('0x2b')]=qs[_0x4f0d('0x2b')](_0x1f5beb[_0x4f0d('0x3f')]['offset']);}_0x7a1323['order']=qs[_0x4f0d('0xa3')](_0x1f5beb[_0x4f0d('0x3f')]['sort']);_0x7a1323[_0x4f0d('0xa4')]=qs['filters'](_[_0x4f0d('0xa5')](_0x1f5beb[_0x4f0d('0x3f')],_0x2df271['filters']));_0x7a1323['where'][_0x4f0d('0xaa')]=_0x391a61['id'];if(_0x1f5beb[_0x4f0d('0x3f')][_0x4f0d('0xa6')]){_0x7a1323['where']=_[_0x4f0d('0x4b')](_0x7a1323[_0x4f0d('0xa4')],{'$or':_[_0x4f0d('0x36')](_0x7a1323[_0x4f0d('0x46')],function(_0x58da49){var _0x311b4e={};_0x311b4e[_0x58da49]={'$like':'%'+_0x1f5beb['query'][_0x4f0d('0xa6')]+'%'};return _0x311b4e;})});}_0x7a1323[_0x4f0d('0xa4')][_0x4f0d('0x93')]=![];if(_0x1f5beb[_0x4f0d('0x3f')]['id']){_0x7a1323[_0x4f0d('0xa4')]['id']={'$gt':_0x1f5beb[_0x4f0d('0x3f')]['id']};}_0x7a1323=_[_0x4f0d('0x4b')]({},_0x7a1323,_0x1f5beb[_0x4f0d('0xab')]);return db[_0x4f0d('0x66')][_0x4f0d('0x2a')]({'where':_0x7a1323[_0x4f0d('0xa4')]})[_0x4f0d('0x19')](function(_0x41fb15){_0x3a87f2[_0x4f0d('0x2a')]=_0x41fb15;_0x7a1323[_0x4f0d('0x4a')]=[];if(_0x1f5beb[_0x4f0d('0x3f')][_0x4f0d('0xac')]){_0x7a1323['include']['push']({'model':db['User'],'as':_0x4f0d('0x85'),'attributes':['id',_0x4f0d('0x55'),_0x4f0d('0x8e')]});}if(_0x1f5beb[_0x4f0d('0x3f')][_0x4f0d('0x49')]){_0x7a1323['include']=[{'all':!![]}];}return db[_0x4f0d('0x66')][_0x4f0d('0x3d')](_0x7a1323);})[_0x4f0d('0x19')](function(_0x2fbe3f){_0x3a87f2['rows']=_0x2fbe3f;return _0x3a87f2;});}})[_0x4f0d('0x19')](respondWithFilteredResult(_0x71b271,_0x7a1323))[_0x4f0d('0x23')](handleError(_0x71b271,null));};exports['addTags']=function(_0x97949c,_0x3b6957){return db[_0x4f0d('0x37')][_0x4f0d('0x4c')]({'where':{'id':_0x97949c[_0x4f0d('0x50')]['id']}})[_0x4f0d('0x19')](handleEntityNotFound(_0x3b6957,null))[_0x4f0d('0x19')](function(_0x1e3637){if(_0x1e3637){return _0x1e3637[_0x4f0d('0xad')](_0x97949c['body'][_0x4f0d('0x9f')],_[_0x4f0d('0xae')](_0x97949c[_0x4f0d('0x33')],[_0x4f0d('0x9f'),'id'])||{})[_0x4f0d('0xaf')](function(){return db[_0x4f0d('0xb0')]['findAll']({'attributes':['id',_0x4f0d('0x30'),_0x4f0d('0xb1')],'where':{'id':_0x97949c[_0x4f0d('0x33')][_0x4f0d('0x9f')]}});})[_0x4f0d('0x19')](function(_0xe5151a){socket[_0x4f0d('0xb2')](_0x4f0d('0xb3'),{'id':Number(_0x97949c['params']['id']),'tags':_0xe5151a||[]});return{'id':Number(_0x97949c['params']['id']),'tags':_0xe5151a||[]};});}})[_0x4f0d('0x19')](respondWithResult(_0x3b6957,null))[_0x4f0d('0x23')](handleError(_0x3b6957,null));};exports['removeTags']=function(_0x3a998c,_0x41c5cd){return db[_0x4f0d('0x37')]['find']({'where':{'id':_0x3a998c[_0x4f0d('0x50')]['id']}})[_0x4f0d('0x19')](handleEntityNotFound(_0x41c5cd,null))[_0x4f0d('0x19')](function(_0x5bbea5){if(_0x5bbea5){return _0x5bbea5[_0x4f0d('0xb4')](_0x3a998c[_0x4f0d('0x3f')]['ids']);}})[_0x4f0d('0x19')](respondWithStatusCode(_0x41c5cd,null))[_0x4f0d('0x23')](handleError(_0x41c5cd,null));};exports[_0x4f0d('0x7e')]=function(_0x357e46,_0x364e83){var _0xb06ffe=moment()['unix']()[_0x4f0d('0xb5')]();var _0xd5a557=path[_0x4f0d('0x79')](config[_0x4f0d('0x7a')],_0x4f0d('0xb6'),_0x4f0d('0xb7'),_0x4f0d('0xb8'));var _0x539d92=path['join'](config[_0x4f0d('0x7a')],_0x4f0d('0xb6'),'files',_0x4f0d('0xb9'));var _0x1c18dd=path['join'](_0xd5a557,_0xb06ffe);var _0x45ff08=util[_0x4f0d('0x82')](_0x4f0d('0xba'),_0x357e46['params']['id'],_0xb06ffe);var _0x2e26b8=path['join'](_0xd5a557,_0x45ff08);var _0x483a01=[];_0x483a01[_0x4f0d('0xbb')]({'model':db[_0x4f0d('0x85')],'as':'User','attributes':['id',_0x4f0d('0x55')],'raw':!![]});_0x483a01[_0x4f0d('0xbb')]({'model':db[_0x4f0d('0x6a')],'as':_0x4f0d('0x6b'),'attributes':['id',_0x4f0d('0xbc'),_0x4f0d('0xbd')],'raw':!![]});if(_0x357e46[_0x4f0d('0x3f')][_0x4f0d('0xb9')]){_0x483a01[_0x4f0d('0xbb')]({'model':db[_0x4f0d('0x77')],'as':_0x4f0d('0x77'),'raw':!![]});}var _0x5f1ed1=[{'model':db['ChatMessage'],'as':_0x4f0d('0x84'),'attributes':['id',_0x4f0d('0x33'),_0x4f0d('0xbe'),_0x4f0d('0x92'),_0x4f0d('0x93'),_0x4f0d('0xbf')],'include':_0x483a01}];_0x5f1ed1['push']({'model':db[_0x4f0d('0x52')],'as':_0x4f0d('0xc0'),'attributes':['id',_0x4f0d('0x30')]});_0x5f1ed1[_0x4f0d('0xbb')]({'model':db['User'],'as':_0x4f0d('0xc1'),'attributes':['id','fullname']});return db[_0x4f0d('0x37')][_0x4f0d('0x4c')]({'where':{'id':_0x357e46[_0x4f0d('0x50')]['id']},'include':_0x5f1ed1})[_0x4f0d('0x19')](handleEntityNotFound(_0x364e83,null))['then'](function(_0x3896f8){if(_0x3896f8){var _0x831eb1=_0x3896f8[_0x4f0d('0xc2')]({'plain':!![]});fs[_0x4f0d('0xc3')](_0x1c18dd);var _0x5b10e2={'channel':_0x4f0d('0xc4'),'account':_0x831eb1[_0x4f0d('0xc0')][_0x4f0d('0x30')],'agent':_0x831eb1[_0x4f0d('0xc1')]?_0x831eb1[_0x4f0d('0xc1')]['fullname']:'N.A.','createdAt':moment(_0x831eb1[_0x4f0d('0xbe')])[_0x4f0d('0x82')](_0x4f0d('0xa9'))['toString'](),'closedAt':_0x831eb1[_0x4f0d('0x71')]?moment(_0x831eb1[_0x4f0d('0xc5')])[_0x4f0d('0x82')](_0x4f0d('0xa9'))['toString']():'','disposition':_0x831eb1[_0x4f0d('0x72')],'chatInfo':{'browser':_0x831eb1[_0x4f0d('0xc6')],'os':_0x831eb1[_0x4f0d('0xc7')],'referer':_0x831eb1[_0x4f0d('0xc8')],'customerIp':_0x831eb1[_0x4f0d('0xc9')],'customerPort':_0x831eb1[_0x4f0d('0xca')]?_0x831eb1['customerPort']:_0x4f0d('0xcb')},'messages':_(_0x831eb1[_0x4f0d('0x84')])[_0x4f0d('0xcc')]()[_0x4f0d('0xa6')]({'secret':![]})['map'](function(_0x42e5be){if(_0x42e5be[_0x4f0d('0x77')]){var _0x372775=path[_0x4f0d('0x79')](_0x539d92,_0x42e5be[_0x4f0d('0x77')][_0x4f0d('0x7d')]);if(fs[_0x4f0d('0xcd')](_0x372775)){fs[_0x4f0d('0xce')](_0x372775)[_0x4f0d('0xcf')](fs[_0x4f0d('0xd0')](path[_0x4f0d('0x79')](_0x1c18dd,_0x42e5be['Attachment'][_0x4f0d('0x7d')])));}}return{'date':moment(_0x42e5be[_0x4f0d('0xbe')])[_0x4f0d('0x82')](_0x4f0d('0xa9'))['toString'](),'sender':_0x42e5be[_0x4f0d('0x92')]===_0x4f0d('0x65')?_0x42e5be[_0x4f0d('0x85')]?_0x42e5be[_0x4f0d('0x85')][_0x4f0d('0x55')]:'System':_0x42e5be[_0x4f0d('0x6b')][_0x4f0d('0xbc')]+(_0x42e5be['Contact'][_0x4f0d('0xbd')]?'\x20'+_0x42e5be[_0x4f0d('0x6b')][_0x4f0d('0xbd')]:''),'body':_0x42e5be[_0x4f0d('0x77')]?_0x42e5be[_0x4f0d('0x77')][_0x4f0d('0x7d')]:_0x42e5be['body'],'direction':_0x42e5be[_0x4f0d('0x92')]===_0x4f0d('0x65')?'A':'C','secret':_0x42e5be[_0x4f0d('0x93')],'read':_0x42e5be[_0x4f0d('0xbf')],'attachment':_0x42e5be[_0x4f0d('0x77')]};})[_0x4f0d('0xd1')]()};return ejs[_0x4f0d('0xd2')](path[_0x4f0d('0x79')](config[_0x4f0d('0x7a')],'server',_0x4f0d('0xd3'),_0x4f0d('0xd4')),{'interaction':_0x5b10e2})[_0x4f0d('0x19')](function(_0x24c7b8){var _0x1f64ce=path['join'](_0x1c18dd,_0x4f0d('0xd5')+_0x831eb1['id']+'-'+_0xb06ffe+_0x4f0d('0xd6'));var _0x257b81={'path':_0x1f64ce,'channel':_0x4f0d('0xc4'),'interactionId':_0x831eb1['id']};return pdf[_0x4f0d('0xd7')](_0x24c7b8,_0x257b81);})[_0x4f0d('0x19')](function(){return new Promise(function(_0x4b4e3c,_0x19e2f5){zipdir(_0x1c18dd,{'saveTo':_0x2e26b8},function(_0x14f066,_0x5f2df6){if(_0x14f066)return _0x19e2f5(_0x14f066);return _0x4b4e3c(_0x5f2df6);});})[_0x4f0d('0x19')](function(){return new BPromise(function(_0x3d08e9,_0x7e0957){rimraf(_0x1c18dd,function(_0x2021b5){if(_0x2021b5)_0x7e0957(_0x2021b5);return _0x3d08e9();});});})[_0x4f0d('0x19')](function(){return _0x364e83['download'](_0x2e26b8,_0x45ff08,function(_0x72cde4){if(_0x72cde4){logger[_0x4f0d('0x20')](_0x4f0d('0xd8'),_0x72cde4);}else{fs[_0x4f0d('0xd9')](_0x2e26b8);}});});});}else{return _0x364e83[_0x4f0d('0x24')](0xc8);}})[_0x4f0d('0x23')](handleError(_0x364e83,null));};
\ No newline at end of file
index f53eca7..7b5e871 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd08=['events','../../mysqldb','ChatInteraction','save','then','setDataValue','Users','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports'];(function(_0x57882a,_0x164508){var _0x12a914=function(_0x38ecb0){while(--_0x38ecb0){_0x57882a['push'](_0x57882a['shift']());}};_0x12a914(++_0x164508);}(_0xcd08,0x16c));var _0x8cd0=function(_0x64a0e8,_0x2c86a5){_0x64a0e8=_0x64a0e8-0x0;var _0xb2f2e2=_0xcd08[_0x64a0e8];return _0xb2f2e2;};'use strict';var EventEmitter=require(_0x8cd0('0x0'));var ChatInteraction=require(_0x8cd0('0x1'))['db'][_0x8cd0('0x2')];var ChatMessage=require(_0x8cd0('0x1'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8cd0('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x49f160){return function(_0x208ed6,_0x7b29f5,_0x509731){_0x208ed6['getUsers']({'attributes':['id'],'raw':!![]})[_0x8cd0('0x4')](function(_0x1f7e2a){_0x208ed6[_0x8cd0('0x5')](_0x8cd0('0x6'),_0x1f7e2a['map'](function(_0x1f9928){return{'id':_0x1f9928['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x208ed6['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8cd0('0x4')](function(_0x3777f5){_0x208ed6[_0x8cd0('0x5')](_0x8cd0('0x7'),_0x3777f5[_0x8cd0('0x8')]);ChatInteractionEvents['emit'](_0x49f160+':'+_0x208ed6['id'],_0x208ed6);ChatInteractionEvents[_0x8cd0('0x9')](_0x49f160,_0x208ed6);_0x509731(null);})[_0x8cd0('0xa')](_0x509731(null));};}for(var e in events){if(events[_0x8cd0('0xb')](e)){var event=events[e];ChatInteraction[_0x8cd0('0xc')](e,emitEvent(event));}}module[_0x8cd0('0xd')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x1ed5=['remove','getUsers','then','setDataValue','Users','map','findAll','emit','catch','hook','exports','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','update'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x1ed5,0xcb));var _0x51ed=function(_0x2e5249,_0xa4eed1){_0x2e5249=_0x2e5249-0x0;var _0x3f59fc=_0x1ed5[_0x2e5249];return _0x3f59fc;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0x51ed('0x0'))['db'][_0x51ed('0x1')];var ChatMessage=require(_0x51ed('0x0'))['db'][_0x51ed('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x51ed('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x51ed('0x4'),'afterDestroy':_0x51ed('0x5')};function emitEvent(_0x438e5d){return function(_0x11aa69,_0x294540,_0xe90eab){_0x11aa69[_0x51ed('0x6')]({'attributes':['id'],'raw':!![]})[_0x51ed('0x7')](function(_0x780cd7){_0x11aa69[_0x51ed('0x8')](_0x51ed('0x9'),_0x780cd7[_0x51ed('0xa')](function(_0x2f5034){return{'id':_0x2f5034['id']};}));return ChatMessage[_0x51ed('0xb')]({'where':{'ChatInteractionId':_0x11aa69['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x59c33d){_0x11aa69[_0x51ed('0x8')]('unreadMessages',_0x59c33d['length']);ChatInteractionEvents['emit'](_0x438e5d+':'+_0x11aa69['id'],_0x11aa69);ChatInteractionEvents[_0x51ed('0xc')](_0x438e5d,_0x11aa69);_0xe90eab(null);})[_0x51ed('0xd')](_0xe90eab(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0x51ed('0xe')](e,emitEvent(event));}}module[_0x51ed('0xf')]=ChatInteractionEvents;
\ No newline at end of file
index e688243..ff86b4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ebb=['format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','ChatInteraction','chat_interactions','closed','closedAt'];(function(_0x4a0a69,_0x56acd5){var _0x14abbf=function(_0x3e0854){while(--_0x3e0854){_0x4a0a69['push'](_0x4a0a69['shift']());}};_0x14abbf(++_0x56acd5);}(_0x0ebb,0x124));var _0xb0eb=function(_0x4f2861,_0x26eb9e){_0x4f2861=_0x4f2861-0x0;var _0x7504f1=_0x0ebb[_0x4f2861];return _0x7504f1;};'use strict';var _=require(_0xb0eb('0x0'));var util=require('util');var logger=require(_0xb0eb('0x1'))(_0xb0eb('0x2'));var moment=require(_0xb0eb('0x3'));var BPromise=require(_0xb0eb('0x4'));var rp=require(_0xb0eb('0x5'));var fs=require('fs');var path=require(_0xb0eb('0x6'));var rimraf=require(_0xb0eb('0x7'));var config=require(_0xb0eb('0x8'));var attributes=require(_0xb0eb('0x9'));module['exports']=function(_0x3f920a,_0x6083cf){return _0x3f920a['define'](_0xb0eb('0xa'),attributes,{'tableName':_0xb0eb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5ce48f,_0x274b38,_0xc05d3e){if(_0x5ce48f['changed'](_0xb0eb('0xc'))){_0x5ce48f[_0xb0eb('0xd')]=moment()[_0xb0eb('0xe')](_0xb0eb('0xf'));}_0xc05d3e(null,_0x5ce48f);}},'charset':'utf8mb4','collate':_0xb0eb('0x10')});};
\ No newline at end of file
+var _0x2390=['util','../../config/logger','api','request-promise','rimraf','./chatInteraction.attributes','define','changed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci'];(function(_0x5b6cf1,_0x32fdcd){var _0x46278c=function(_0x53fd9b){while(--_0x53fd9b){_0x5b6cf1['push'](_0x5b6cf1['shift']());}};_0x46278c(++_0x32fdcd);}(_0x2390,0x1ec));var _0x0239=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x2390[_0x376b45];return _0x2341b3;};'use strict';var _=require('lodash');var util=require(_0x0239('0x0'));var logger=require(_0x0239('0x1'))(_0x0239('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0239('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0239('0x4'));var config=require('../../config/environment');var attributes=require(_0x0239('0x5'));module['exports']=function(_0x13afdd,_0x1776ea){return _0x13afdd[_0x0239('0x6')]('ChatInteraction',attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x37d5b2,_0x54cf2c,_0x1e2529){if(_0x37d5b2[_0x0239('0x7')]('closed')){_0x37d5b2['closedAt']=moment()[_0x0239('0x8')](_0x0239('0x9'));}_0x1e2529(null,_0x37d5b2);}},'charset':_0x0239('0xa'),'collate':_0x0239('0xb')});};
\ No newline at end of file
index b2ba656..6d8fbb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c58=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','request','then','info','request\x20sent','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw','where','limit','stringify','AddTagsToChatInteraction','find','addTags','ids','omit','spread','debug','AddTags','lodash','util','moment'];(function(_0x210603,_0x4adbac){var _0x1bcb7d=function(_0x2cdf89){while(--_0x2cdf89){_0x210603['push'](_0x210603['shift']());}};_0x1bcb7d(++_0x4adbac);}(_0x2c58,0x84));var _0x82c5=function(_0x26745a,_0x1771c7){_0x26745a=_0x26745a-0x0;var _0x7cc231=_0x2c58[_0x26745a];return _0x7cc231;};'use strict';var _=require(_0x82c5('0x0'));var util=require(_0x82c5('0x1'));var moment=require(_0x82c5('0x2'));var BPromise=require('bluebird');var rs=require(_0x82c5('0x3'));var fs=require('fs');var Redis=require(_0x82c5('0x4'));var db=require(_0x82c5('0x5'))['db'];var utils=require(_0x82c5('0x6'));var logger=require(_0x82c5('0x7'))(_0x82c5('0x8'));var config=require(_0x82c5('0x9'));var jayson=require(_0x82c5('0xa'));var client=jayson[_0x82c5('0xb')][_0x82c5('0xc')]({'port':0x232a});config[_0x82c5('0xd')]=_[_0x82c5('0xe')](config[_0x82c5('0xd')],{'host':_0x82c5('0xf'),'port':0x18eb});var socket=require(_0x82c5('0x10'))(new Redis(config[_0x82c5('0xd')]));require(_0x82c5('0x11'))['register'](socket);function respondWithRpcPromise(_0x1c3622,_0x559f9a,_0x4231c0){return new BPromise(function(_0x5ec25d,_0x151d9f){return client[_0x82c5('0x12')](_0x1c3622,_0x4231c0)[_0x82c5('0x13')](function(_0x24203){logger[_0x82c5('0x14')]('ChatInteraction,\x20%s,\x20%s',_0x559f9a,_0x82c5('0x15'));logger['debug']('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x559f9a,_0x82c5('0x15'),JSON['stringify'](_0x24203));if(_0x24203[_0x82c5('0x16')]){if(_0x24203[_0x82c5('0x16')][_0x82c5('0x17')]===0x1f4){logger[_0x82c5('0x16')](_0x82c5('0x18'),_0x559f9a,_0x24203[_0x82c5('0x16')][_0x82c5('0x19')]);return _0x151d9f(_0x24203[_0x82c5('0x16')][_0x82c5('0x19')]);}logger[_0x82c5('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x559f9a,_0x24203['error'][_0x82c5('0x19')]);return _0x5ec25d(_0x24203['error']['message']);}else{logger[_0x82c5('0x14')](_0x82c5('0x18'),_0x559f9a,_0x82c5('0x15'));_0x5ec25d(_0x24203[_0x82c5('0x1a')][_0x82c5('0x19')]);}})[_0x82c5('0x1b')](function(_0x5ec106){logger[_0x82c5('0x16')](_0x82c5('0x18'),_0x559f9a,_0x5ec106);_0x151d9f(_0x5ec106);});});}exports[_0x82c5('0x1c')]=function(_0x3757e0){var _0x4d3438=this;return new Promise(function(_0x59905f,_0xaae61c){return db[_0x82c5('0x1d')][_0x82c5('0x1e')](_0x3757e0[_0x82c5('0x1f')],{'raw':_0x3757e0[_0x82c5('0x20')]?_0x3757e0['options'][_0x82c5('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3757e0[_0x82c5('0x20')]?_0x3757e0[_0x82c5('0x20')][_0x82c5('0x22')]||null:null,'attributes':_0x3757e0[_0x82c5('0x20')]?_0x3757e0[_0x82c5('0x20')]['attributes']||null:null,'limit':_0x3757e0[_0x82c5('0x20')]?_0x3757e0[_0x82c5('0x20')][_0x82c5('0x23')]||null:null})[_0x82c5('0x13')](function(_0x5dc496){logger[_0x82c5('0x14')](_0x82c5('0x1c'),_0x3757e0);logger['debug']('UpdateChatInteraction',_0x3757e0,JSON[_0x82c5('0x24')](_0x5dc496));_0x59905f(_0x5dc496);})[_0x82c5('0x1b')](function(_0xfe3474){logger[_0x82c5('0x16')](_0x82c5('0x1c'),_0xfe3474[_0x82c5('0x19')],_0x3757e0);_0xaae61c(_0x4d3438[_0x82c5('0x16')](0x1f4,_0xfe3474[_0x82c5('0x19')]));});});};exports[_0x82c5('0x25')]=function(_0x5ed1a0){return new Promise(function(_0x484c29,_0x50f443){return db[_0x82c5('0x1d')][_0x82c5('0x26')]({'where':_0x5ed1a0['options']?_0x5ed1a0['options'][_0x82c5('0x22')]||null:null})[_0x82c5('0x13')](function(_0x31c316){if(_0x31c316){return _0x31c316[_0x82c5('0x27')](_0x5ed1a0[_0x82c5('0x1f')][_0x82c5('0x28')],_[_0x82c5('0x29')](_0x5ed1a0[_0x82c5('0x1f')],[_0x82c5('0x28'),'id'])||{});}})[_0x82c5('0x2a')](function(_0x24194b){logger[_0x82c5('0x14')]('AddTags',_0x5ed1a0);logger[_0x82c5('0x2b')](_0x82c5('0x2c'),_0x5ed1a0,JSON['stringify'](_0x24194b));_0x484c29(_0x24194b);})[_0x82c5('0x1b')](function(_0x3813a5){logger[_0x82c5('0x16')]('AddTags',_0x3813a5[_0x82c5('0x19')],_0x5ed1a0);_0x50f443(_this[_0x82c5('0x16')](0x1f4,_0x3813a5[_0x82c5('0x19')]));});});};
\ No newline at end of file
+var _0xa7fe=['info','result','catch','body','options','raw','where','attributes','limit','UpdateChatInteraction','AddTagsToChatInteraction','ChatInteraction','find','addTags','ids','omit','AddTags','stringify','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0xa7fe,0xc2));var _0xea7f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa7fe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xea7f('0x0'));var moment=require(_0xea7f('0x1'));var BPromise=require(_0xea7f('0x2'));var rs=require(_0xea7f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xea7f('0x4'))['db'];var utils=require(_0xea7f('0x5'));var logger=require(_0xea7f('0x6'))(_0xea7f('0x7'));var config=require(_0xea7f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xea7f('0x9')][_0xea7f('0xa')]({'port':0x232a});config[_0xea7f('0xb')]=_[_0xea7f('0xc')](config[_0xea7f('0xb')],{'host':_0xea7f('0xd'),'port':0x18eb});var socket=require(_0xea7f('0xe'))(new Redis(config[_0xea7f('0xb')]));require(_0xea7f('0xf'))[_0xea7f('0x10')](socket);function respondWithRpcPromise(_0x5392cb,_0x5a7506,_0x122bc9){return new BPromise(function(_0x2de262,_0x1c8e0b){return client[_0xea7f('0x11')](_0x5392cb,_0x122bc9)[_0xea7f('0x12')](function(_0x1ce8eb){logger['info'](_0xea7f('0x13'),_0x5a7506,_0xea7f('0x14'));logger[_0xea7f('0x15')](_0xea7f('0x16'),_0x5a7506,'request\x20sent',JSON['stringify'](_0x1ce8eb));if(_0x1ce8eb[_0xea7f('0x17')]){if(_0x1ce8eb['error'][_0xea7f('0x18')]===0x1f4){logger[_0xea7f('0x17')](_0xea7f('0x13'),_0x5a7506,_0x1ce8eb[_0xea7f('0x17')][_0xea7f('0x19')]);return _0x1c8e0b(_0x1ce8eb[_0xea7f('0x17')][_0xea7f('0x19')]);}logger[_0xea7f('0x17')](_0xea7f('0x13'),_0x5a7506,_0x1ce8eb[_0xea7f('0x17')][_0xea7f('0x19')]);return _0x2de262(_0x1ce8eb[_0xea7f('0x17')][_0xea7f('0x19')]);}else{logger[_0xea7f('0x1a')]('ChatInteraction,\x20%s,\x20%s',_0x5a7506,_0xea7f('0x14'));_0x2de262(_0x1ce8eb[_0xea7f('0x1b')][_0xea7f('0x19')]);}})[_0xea7f('0x1c')](function(_0x22d69e){logger[_0xea7f('0x17')](_0xea7f('0x13'),_0x5a7506,_0x22d69e);_0x1c8e0b(_0x22d69e);});});}exports['UpdateChatInteraction']=function(_0x3db29c){var _0x175fb0=this;return new Promise(function(_0x4e2730,_0x38e9b1){return db['ChatInteraction']['update'](_0x3db29c[_0xea7f('0x1d')],{'raw':_0x3db29c[_0xea7f('0x1e')]?_0x3db29c[_0xea7f('0x1e')][_0xea7f('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3db29c[_0xea7f('0x1e')]?_0x3db29c[_0xea7f('0x1e')][_0xea7f('0x20')]||null:null,'attributes':_0x3db29c[_0xea7f('0x1e')]?_0x3db29c[_0xea7f('0x1e')][_0xea7f('0x21')]||null:null,'limit':_0x3db29c[_0xea7f('0x1e')]?_0x3db29c[_0xea7f('0x1e')][_0xea7f('0x22')]||null:null})[_0xea7f('0x12')](function(_0x32ce20){logger['info'](_0xea7f('0x23'),_0x3db29c);logger[_0xea7f('0x15')](_0xea7f('0x23'),_0x3db29c,JSON['stringify'](_0x32ce20));_0x4e2730(_0x32ce20);})[_0xea7f('0x1c')](function(_0x49a3c2){logger[_0xea7f('0x17')](_0xea7f('0x23'),_0x49a3c2[_0xea7f('0x19')],_0x3db29c);_0x38e9b1(_0x175fb0[_0xea7f('0x17')](0x1f4,_0x49a3c2[_0xea7f('0x19')]));});});};exports[_0xea7f('0x24')]=function(_0xb6a590){return new Promise(function(_0x15a70d,_0x564ac6){return db[_0xea7f('0x25')][_0xea7f('0x26')]({'where':_0xb6a590[_0xea7f('0x1e')]?_0xb6a590['options'][_0xea7f('0x20')]||null:null})[_0xea7f('0x12')](function(_0x3f6e8b){if(_0x3f6e8b){return _0x3f6e8b[_0xea7f('0x27')](_0xb6a590[_0xea7f('0x1d')][_0xea7f('0x28')],_[_0xea7f('0x29')](_0xb6a590[_0xea7f('0x1d')],[_0xea7f('0x28'),'id'])||{});}})['spread'](function(_0x4ae47e){logger[_0xea7f('0x1a')](_0xea7f('0x2a'),_0xb6a590);logger[_0xea7f('0x15')](_0xea7f('0x2a'),_0xb6a590,JSON[_0xea7f('0x2b')](_0x4ae47e));_0x15a70d(_0x4ae47e);})[_0xea7f('0x1c')](function(_0x3e075f){logger['error'](_0xea7f('0x2a'),_0x3e075f[_0xea7f('0x19')],_0xb6a590);_0x564ac6(_this[_0xea7f('0x17')](0x1f4,_0x3e075f[_0xea7f('0x19')]));});});};
\ No newline at end of file
index d60483a..d80f28f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aca=['update','emit','removeListener','register','chatInteraction:','./chatInteraction.events'];(function(_0x31ae8c,_0x15dd90){var _0x30e30b=function(_0x33676b){while(--_0x33676b){_0x31ae8c['push'](_0x31ae8c['shift']());}};_0x30e30b(++_0x15dd90);}(_0x3aca,0x83));var _0xa3ac=function(_0x5b27da,_0x4a6532){_0x5b27da=_0x5b27da-0x0;var _0x3254f4=_0x3aca[_0x5b27da];return _0x3254f4;};'use strict';var ChatInteractionEvents=require(_0xa3ac('0x0'));var events=['save','remove',_0xa3ac('0x1')];function createListener(_0x2e1dde,_0x3e44a3){return function(_0x585e8f){_0x3e44a3[_0xa3ac('0x2')](_0x2e1dde,_0x585e8f);};}function removeListener(_0x1127ed,_0x520276){return function(){ChatInteractionEvents[_0xa3ac('0x3')](_0x1127ed,_0x520276);};}exports[_0xa3ac('0x4')]=function(_0x56c21d){for(var _0x219b27=0x0,_0x5d9b73=events['length'];_0x219b27<_0x5d9b73;_0x219b27++){var _0x389abc=events[_0x219b27];var _0x4da43d=createListener(_0xa3ac('0x5')+_0x389abc,_0x56c21d);ChatInteractionEvents['on'](_0x389abc,_0x4da43d);}};
\ No newline at end of file
+var _0x255c=['length','./chatInteraction.events','update','removeListener'];(function(_0x5159fd,_0x4b760b){var _0x409bae=function(_0x30f5f0){while(--_0x30f5f0){_0x5159fd['push'](_0x5159fd['shift']());}};_0x409bae(++_0x4b760b);}(_0x255c,0x1bd));var _0xc255=function(_0x5b1696,_0xb76345){_0x5b1696=_0x5b1696-0x0;var _0x3ecd3e=_0x255c[_0x5b1696];return _0x3ecd3e;};'use strict';var ChatInteractionEvents=require(_0xc255('0x0'));var events=['save','remove',_0xc255('0x1')];function createListener(_0x18c0f6,_0x50327f){return function(_0x40e7ab){_0x50327f['emit'](_0x18c0f6,_0x40e7ab);};}function removeListener(_0x1bf010,_0x1fa14c){return function(){ChatInteractionEvents[_0xc255('0x2')](_0x1bf010,_0x1fa14c);};}exports['register']=function(_0x470ab0){for(var _0x4b3198=0x0,_0x17b60f=events[_0xc255('0x3')];_0x4b3198<_0x17b60f;_0x4b3198++){var _0x4ead55=events[_0x4b3198];var _0x57e0ed=createListener('chatInteraction:'+_0x4ead55,_0x470ab0);ChatInteractionEvents['on'](_0x4ead55,_0x57e0ed);}};
\ No newline at end of file
index 57a2b92..2372cd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15e2=['server/files/attachments/','format','%s-%s','now','replace','/:id/attachment_upload','single','file','attachmentUpload','/:id/messages','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','put','customUpdate','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','exports','multer','util','path','express','Router','../../config/environment','./chatInteraction.controller','isAuthenticated','index','describe','/:id','isChatInteractionAuthorized','show','get','/:id/attachment_download','/:id/my_messages','getMyMessages','/:id/download','post','create','createVidaooSession','join'];(function(_0x1ef48d,_0x19781c){var _0x25776c=function(_0x384d0e){while(--_0x384d0e){_0x1ef48d['push'](_0x1ef48d['shift']());}};_0x25776c(++_0x19781c);}(_0x15e2,0xfe));var _0x215e=function(_0x39d544,_0x35c14f){_0x39d544=_0x39d544-0x0;var _0x5a5ff2=_0x15e2[_0x39d544];return _0x5a5ff2;};'use strict';var multer=require(_0x215e('0x0'));var util=require(_0x215e('0x1'));var path=require(_0x215e('0x2'));var timeout=require('connect-timeout');var express=require(_0x215e('0x3'));var router=express[_0x215e('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x215e('0x5'));var controller=require(_0x215e('0x6'));router['get']('/',auth[_0x215e('0x7')](),controller[_0x215e('0x8')]);router['get']('/describe',auth[_0x215e('0x7')](),controller[_0x215e('0x9')]);router['get'](_0x215e('0xa'),auth[_0x215e('0xb')](),controller[_0x215e('0xc')]);router[_0x215e('0xd')](_0x215e('0xe'),auth['isChatInteractionAuthorized'](),controller['attachmentDownload']);router[_0x215e('0xd')]('/:id/messages',auth['isAuthenticated'](),controller['getMessages']);router['get'](_0x215e('0xf'),auth[_0x215e('0xb')](),controller[_0x215e('0x10')]);router[_0x215e('0xd')](_0x215e('0x11'),auth[_0x215e('0x7')](),controller['download']);router[_0x215e('0x12')]('/',auth['isAuthenticated'](),controller[_0x215e('0x13')]);router[_0x215e('0x12')]('/:id/vidaoo',auth['isAuthenticated'](),controller[_0x215e('0x14')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1d1d82,_0x224a3a,_0x1b5fff){_0x1b5fff(null,path[_0x215e('0x15')](config['root'],_0x215e('0x16')));},'filename':function(_0x2ad1f2,_0x8aa3e1,_0x128baf){_0x128baf(null,util[_0x215e('0x17')](_0x215e('0x18'),Date[_0x215e('0x19')](),_0x8aa3e1['originalname'][_0x215e('0x1a')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0x215e('0x1b'),upload[_0x215e('0x1c')](_0x215e('0x1d')),controller[_0x215e('0x1e')]);router[_0x215e('0x12')](_0x215e('0x1f'),auth[_0x215e('0xb')](),controller[_0x215e('0x20')]);router[_0x215e('0x12')](_0x215e('0x21'),auth[_0x215e('0x7')](),interaction[_0x215e('0x22')](_0x215e('0x23'),_0x215e('0x24')),controller['addTags']);router[_0x215e('0x25')](_0x215e('0xa'),auth[_0x215e('0x7')](),interaction[_0x215e('0x22')](_0x215e('0x23'),'chatinteraction:update'),controller['update']);router['put']('/:id/custom_update',controller[_0x215e('0x26')]);router['put']('/:id/abandon',auth[_0x215e('0xb')](),controller[_0x215e('0x27')]);router[_0x215e('0x25')](_0x215e('0x28'),controller[_0x215e('0x29')]);router[_0x215e('0x2a')](_0x215e('0xa'),auth[_0x215e('0x7')](),interaction['tracked'](_0x215e('0x23'),_0x215e('0x2b')),controller[_0x215e('0x2c')]);router[_0x215e('0x2a')](_0x215e('0x21'),auth['isAuthenticated'](),controller['removeTags']);module[_0x215e('0x2d')]=router;
\ No newline at end of file
+var _0x8ef1=['../../components/auth/service','../../config/environment','./chatInteraction.controller','isAuthenticated','index','/describe','get','show','/:id/attachment_download','isChatInteractionAuthorized','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','/:id/download','post','/:id/vidaoo','createVidaooSession','diskStorage','join','%s-%s','now','originalname','replace','/:id/attachment_upload','file','addMessage','tracked','chat','chatinteraction:addtags','addTags','put','/:id','chatinteraction:update','/:id/custom_update','customUpdate','/:id/abandon','close','delete','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x202c61,_0x3673e0){var _0x540691=function(_0x409610){while(--_0x409610){_0x202c61['push'](_0x202c61['shift']());}};_0x540691(++_0x3673e0);}(_0x8ef1,0xea));var _0x18ef=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x8ef1[_0xbd08b4];return _0x314f1e;};'use strict';var multer=require(_0x18ef('0x0'));var util=require(_0x18ef('0x1'));var path=require(_0x18ef('0x2'));var timeout=require(_0x18ef('0x3'));var express=require(_0x18ef('0x4'));var router=express[_0x18ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x18ef('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x18ef('0x7'));var controller=require(_0x18ef('0x8'));router['get']('/',auth[_0x18ef('0x9')](),controller[_0x18ef('0xa')]);router['get'](_0x18ef('0xb'),auth[_0x18ef('0x9')](),controller['describe']);router[_0x18ef('0xc')]('/:id',auth['isChatInteractionAuthorized'](),controller[_0x18ef('0xd')]);router[_0x18ef('0xc')](_0x18ef('0xe'),auth[_0x18ef('0xf')](),controller[_0x18ef('0x10')]);router[_0x18ef('0xc')](_0x18ef('0x11'),auth[_0x18ef('0x9')](),controller[_0x18ef('0x12')]);router[_0x18ef('0xc')](_0x18ef('0x13'),auth['isChatInteractionAuthorized'](),controller['getMyMessages']);router[_0x18ef('0xc')](_0x18ef('0x14'),auth[_0x18ef('0x9')](),controller['download']);router[_0x18ef('0x15')]('/',auth[_0x18ef('0x9')](),controller['create']);router[_0x18ef('0x15')](_0x18ef('0x16'),auth[_0x18ef('0x9')](),controller[_0x18ef('0x17')]);var upload=multer({'storage':multer[_0x18ef('0x18')]({'destination':function(_0x3cb1c9,_0x1daff2,_0x595a8b){_0x595a8b(null,path[_0x18ef('0x19')](config['root'],'server/files/attachments/'));},'filename':function(_0x4a1e43,_0x28c027,_0x260f61){_0x260f61(null,util['format'](_0x18ef('0x1a'),Date[_0x18ef('0x1b')](),_0x28c027[_0x18ef('0x1c')][_0x18ef('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x18ef('0x15')](_0x18ef('0x1e'),upload['single'](_0x18ef('0x1f')),controller['attachmentUpload']);router[_0x18ef('0x15')](_0x18ef('0x11'),auth[_0x18ef('0xf')](),controller[_0x18ef('0x20')]);router[_0x18ef('0x15')]('/:id/tags',auth['isAuthenticated'](),interaction[_0x18ef('0x21')](_0x18ef('0x22'),_0x18ef('0x23')),controller[_0x18ef('0x24')]);router[_0x18ef('0x25')](_0x18ef('0x26'),auth[_0x18ef('0x9')](),interaction[_0x18ef('0x21')](_0x18ef('0x22'),_0x18ef('0x27')),controller['update']);router[_0x18ef('0x25')](_0x18ef('0x28'),controller[_0x18ef('0x29')]);router[_0x18ef('0x25')](_0x18ef('0x2a'),auth[_0x18ef('0xf')](),controller['abandon']);router[_0x18ef('0x25')]('/:id/close',controller[_0x18ef('0x2b')]);router[_0x18ef('0x2c')](_0x18ef('0x26'),auth['isAuthenticated'](),interaction['tracked'](_0x18ef('0x22'),'chatinteraction:destroy'),controller[_0x18ef('0x2d')]);router[_0x18ef('0x2c')]('/:id/tags',auth[_0x18ef('0x9')](),controller[_0x18ef('0x2e')]);module[_0x18ef('0x2f')]=router;
\ No newline at end of file
index a3e5ed1..80f4116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c3c=['TEXT','sequelize','exports'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0x3c3c,0x130));var _0xc3c3=function(_0x151dc6,_0x314721){_0x151dc6=_0x151dc6-0x0;var _0x25d2c1=_0x3c3c[_0x151dc6];return _0x25d2c1;};'use strict';var Sequelize=require(_0xc3c3('0x0'));module[_0xc3c3('0x1')]={'body':{'type':Sequelize[_0xc3c3('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xcdd1=['BOOLEAN','INTEGER','sequelize','exports','TEXT','medium'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcdd1,0x16a));var _0x1cdd=function(_0x3b56c0,_0xe100d8){_0x3b56c0=_0x3b56c0-0x0;var _0x377efe=_0xcdd1[_0x3b56c0];return _0x377efe;};'use strict';var Sequelize=require(_0x1cdd('0x0'));module[_0x1cdd('0x1')]={'body':{'type':Sequelize[_0x1cdd('0x2')](_0x1cdd('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x1cdd('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x1cdd('0x5')]}};
\ No newline at end of file
index f274df0..f67946b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ce=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','autoAssociation','UserProfileResource','resourceId','push','FromId','ToId','read','all','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','end','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','sendStatus','error','stack','name','map','ChatInternalMessage','rawAttributes','fieldName','type','key','query','keys','model','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','length','find','create','update','body','destroy','describe','get','messages','lastMessageAt','createdAt','format','YYYY-MM-DD\x20HH:mm:ss','lastMessage','User','agent','admin','role','showWebBar','-online'];(function(_0x4bbada,_0x11a75c){var _0x4b0cfa=function(_0x56a719){while(--_0x56a719){_0x4bbada['push'](_0x4bbada['shift']());}};_0x4b0cfa(++_0x11a75c);}(_0xd2ce,0x14a));var _0xed2c=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xd2ce[_0x42245d];return _0x4b211a;};'use strict';var emlformat=require(_0xed2c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xed2c('0x1'));var jsonpatch=require(_0xed2c('0x2'));var rp=require(_0xed2c('0x3'));var moment=require(_0xed2c('0x4'));var BPromise=require(_0xed2c('0x5'));var Mustache=require(_0xed2c('0x6'));var util=require('util');var path=require(_0xed2c('0x7'));var sox=require('sox');var csv=require(_0xed2c('0x8'));var ejs=require(_0xed2c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xed2c('0xa'));var squel=require(_0xed2c('0xb'));var crypto=require(_0xed2c('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xed2c('0xd'));var toCsv=require(_0xed2c('0x8'));var querystring=require(_0xed2c('0xe'));var Papa=require(_0xed2c('0xf'));var Redis=require(_0xed2c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xed2c('0x11'));var as=require(_0xed2c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xed2c('0x13'))(_0xed2c('0x14'));var utils=require(_0xed2c('0x15'));var config=require(_0xed2c('0x16'));var licenseUtil=require(_0xed2c('0x17'));var db=require(_0xed2c('0x18'))['db'];config['redis']=_[_0xed2c('0x19')](config[_0xed2c('0x1a')],{'host':_0xed2c('0x1b'),'port':0x18eb});var socket=require(_0xed2c('0x1c'))(new Redis(config[_0xed2c('0x1a')]));require(_0xed2c('0x1d'))[_0xed2c('0x1e')](socket);function respondWithStatusCode(_0x45b7cb,_0x522056){_0x522056=_0x522056||0xcc;return function(_0x320323){if(_0x320323){return _0x45b7cb['sendStatus'](_0x522056);}return _0x45b7cb['status'](_0x522056)[_0xed2c('0x1f')]();};}function respondWithResult(_0x184aa6,_0x12fc1e){_0x12fc1e=_0x12fc1e||0xc8;return function(_0x514c4b){if(_0x514c4b){return _0x184aa6[_0xed2c('0x20')](_0x12fc1e)[_0xed2c('0x21')](_0x514c4b);}};}function respondWithFilteredResult(_0x454728,_0x2ff6dc){return function(_0x122a73){if(_0x122a73){var _0xbe10c2=typeof _0x2ff6dc['offset']==='undefined'&&typeof _0x2ff6dc['limit']===_0xed2c('0x22');var _0x1abe1c=_0x122a73[_0xed2c('0x23')];var _0x12b990=_0xbe10c2?0x0:_0x2ff6dc[_0xed2c('0x24')];var _0x16779e=_0xbe10c2?_0x122a73[_0xed2c('0x23')]:_0x2ff6dc[_0xed2c('0x24')]+_0x2ff6dc[_0xed2c('0x25')];var _0x12504b;if(_0x16779e>=_0x1abe1c){_0x16779e=_0x1abe1c;_0x12504b=0xc8;}else{_0x12504b=0xce;}_0x454728['status'](_0x12504b);return _0x454728[_0xed2c('0x26')](_0xed2c('0x27'),_0x12b990+'-'+_0x16779e+'/'+_0x1abe1c)[_0xed2c('0x21')](_0x122a73);}return null;};}function patchUpdates(_0x26bde3){return function(_0x57eb11){try{jsonpatch['apply'](_0x57eb11,_0x26bde3,!![]);}catch(_0x5717bf){return BPromise[_0xed2c('0x28')](_0x5717bf);}return _0x57eb11[_0xed2c('0x29')]();};}function saveUpdates(_0x2cc46f,_0x79dc6e){return function(_0x229587){if(_0x229587){return _0x229587['update'](_0x2cc46f)[_0xed2c('0x2a')](function(_0x8c77a){return _0x8c77a;});}return null;};}function removeEntity(_0x1ec8f5,_0x2aa194){return function(_0x4b2e4f){if(_0x4b2e4f){return _0x4b2e4f['destroy']()[_0xed2c('0x2a')](function(){_0x1ec8f5[_0xed2c('0x20')](0xcc)[_0xed2c('0x1f')]();});}};}function handleEntityNotFound(_0x28449e,_0x19dc62){return function(_0x1230cc){if(!_0x1230cc){_0x28449e[_0xed2c('0x2b')](0x194);}return _0x1230cc;};}function handleError(_0x1f71fd,_0x17b2e0){_0x17b2e0=_0x17b2e0||0x1f4;return function(_0x4178c9){logger[_0xed2c('0x2c')](_0x4178c9[_0xed2c('0x2d')]);if(_0x4178c9[_0xed2c('0x2e')]){delete _0x4178c9['name'];}_0x1f71fd[_0xed2c('0x20')](_0x17b2e0)['send'](_0x4178c9);};}exports['index']=function(_0x41a434,_0x4534f7){var _0x1d3e58={},_0x2b02ea={},_0xb0eca7={'count':0x0,'rows':[]};var _0x20650e=_[_0xed2c('0x2f')](db[_0xed2c('0x30')][_0xed2c('0x31')],function(_0x2005ce){return{'name':_0x2005ce[_0xed2c('0x32')],'type':_0x2005ce[_0xed2c('0x33')][_0xed2c('0x34')]};});_0x2b02ea['model']=_[_0xed2c('0x2f')](_0x20650e,_0xed2c('0x2e'));_0x2b02ea[_0xed2c('0x35')]=_[_0xed2c('0x36')](_0x41a434[_0xed2c('0x35')]);_0x2b02ea['filters']=_['intersection'](_0x2b02ea[_0xed2c('0x37')],_0x2b02ea[_0xed2c('0x35')]);_0x1d3e58[_0xed2c('0x38')]=_[_0xed2c('0x39')](_0x2b02ea[_0xed2c('0x37')],qs[_0xed2c('0x3a')](_0x41a434['query'][_0xed2c('0x3a')]));_0x1d3e58[_0xed2c('0x38')]=_0x1d3e58[_0xed2c('0x38')]['length']?_0x1d3e58[_0xed2c('0x38')]:_0x2b02ea[_0xed2c('0x37')];if(!_0x41a434[_0xed2c('0x35')][_0xed2c('0x3b')](_0xed2c('0x3c'))){_0x1d3e58[_0xed2c('0x25')]=qs['limit'](_0x41a434[_0xed2c('0x35')][_0xed2c('0x25')]);_0x1d3e58['offset']=qs[_0xed2c('0x24')](_0x41a434[_0xed2c('0x35')][_0xed2c('0x24')]);}_0x1d3e58['order']=qs['sort'](_0x41a434['query'][_0xed2c('0x3d')]);_0x1d3e58[_0xed2c('0x3e')]=qs[_0xed2c('0x3f')](_[_0xed2c('0x40')](_0x41a434[_0xed2c('0x35')],_0x2b02ea[_0xed2c('0x3f')]),_0x20650e);if(_0x41a434[_0xed2c('0x35')][_0xed2c('0x41')]){_0x1d3e58[_0xed2c('0x3e')]=_[_0xed2c('0x42')](_0x1d3e58[_0xed2c('0x3e')],{'$or':_[_0xed2c('0x2f')](_0x20650e,function(_0x5caa2c){if(_0x5caa2c['type']!==_0xed2c('0x43')){var _0xf1a8b7={};_0xf1a8b7[_0x5caa2c['name']]={'$like':'%'+_0x41a434[_0xed2c('0x35')]['filter']+'%'};return _0xf1a8b7;}})});}_0x1d3e58=_[_0xed2c('0x42')]({},_0x1d3e58,_0x41a434[_0xed2c('0x44')]);var _0x30a1ae={'where':_0x1d3e58[_0xed2c('0x3e')]};return db[_0xed2c('0x30')][_0xed2c('0x23')](_0x30a1ae)[_0xed2c('0x2a')](function(_0x56fe58){_0xb0eca7[_0xed2c('0x23')]=_0x56fe58;if(_0x41a434['query'][_0xed2c('0x45')]){_0x1d3e58[_0xed2c('0x46')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0xed2c('0x47')](_0x1d3e58);})[_0xed2c('0x2a')](function(_0x573c58){_0xb0eca7['rows']=_0x573c58;return _0xb0eca7;})[_0xed2c('0x2a')](respondWithFilteredResult(_0x4534f7,_0x1d3e58))[_0xed2c('0x48')](handleError(_0x4534f7,null));};exports[_0xed2c('0x49')]=function(_0x55504e,_0x8651c2){var _0x2f6a63={'raw':!![],'where':{'id':_0x55504e['params']['id']}},_0x27f98b={};_0x27f98b[_0xed2c('0x37')]=_[_0xed2c('0x36')](db[_0xed2c('0x30')][_0xed2c('0x31')]);_0x27f98b[_0xed2c('0x35')]=_[_0xed2c('0x36')](_0x55504e['query']);_0x27f98b[_0xed2c('0x3f')]=_[_0xed2c('0x39')](_0x27f98b[_0xed2c('0x37')],_0x27f98b[_0xed2c('0x35')]);_0x2f6a63[_0xed2c('0x38')]=_[_0xed2c('0x39')](_0x27f98b[_0xed2c('0x37')],qs[_0xed2c('0x3a')](_0x55504e[_0xed2c('0x35')][_0xed2c('0x3a')]));_0x2f6a63[_0xed2c('0x38')]=_0x2f6a63[_0xed2c('0x38')][_0xed2c('0x4a')]?_0x2f6a63[_0xed2c('0x38')]:_0x27f98b[_0xed2c('0x37')];if(_0x55504e[_0xed2c('0x35')]['includeAll']){_0x2f6a63[_0xed2c('0x46')]=[{'all':!![]}];}_0x2f6a63=_[_0xed2c('0x42')]({},_0x2f6a63,_0x55504e[_0xed2c('0x44')]);return db[_0xed2c('0x30')][_0xed2c('0x4b')](_0x2f6a63)['then'](handleEntityNotFound(_0x8651c2,null))['then'](respondWithResult(_0x8651c2,null))[_0xed2c('0x48')](handleError(_0x8651c2,null));};exports['create']=function(_0x3d7862,_0x209176){return db[_0xed2c('0x30')][_0xed2c('0x4c')](_0x3d7862['body'],{})['then'](respondWithResult(_0x209176,0xc9))['catch'](handleError(_0x209176,null));};exports[_0xed2c('0x4d')]=function(_0x3d69da,_0x1a345e){if(_0x3d69da[_0xed2c('0x4e')]['id']){delete _0x3d69da[_0xed2c('0x4e')]['id'];}return db[_0xed2c('0x30')][_0xed2c('0x4b')]({'where':{'id':_0x3d69da['params']['id']}})[_0xed2c('0x2a')](handleEntityNotFound(_0x1a345e,null))[_0xed2c('0x2a')](saveUpdates(_0x3d69da['body'],null))[_0xed2c('0x2a')](respondWithResult(_0x1a345e,null))[_0xed2c('0x48')](handleError(_0x1a345e,null));};exports[_0xed2c('0x4f')]=function(_0x44b423,_0x3fea9f){return db[_0xed2c('0x30')][_0xed2c('0x4b')]({'where':{'id':_0x44b423['params']['id']}})[_0xed2c('0x2a')](handleEntityNotFound(_0x3fea9f,null))[_0xed2c('0x2a')](removeEntity(_0x3fea9f,null))[_0xed2c('0x48')](handleError(_0x3fea9f,null));};exports[_0xed2c('0x50')]=function(_0x4bc082,_0x2e1ec8){return db[_0xed2c('0x30')]['describe']()[_0xed2c('0x2a')](respondWithResult(_0x2e1ec8,null))[_0xed2c('0x48')](handleError(_0x2e1ec8,null));};function wrapUser(_0x2e48e4){return function(_0x16fc12){var _0x1726dd=_0x2e48e4[_0xed2c('0x51')]({'plain':!![]});_0x1726dd[_0xed2c('0x52')]=[];if(_0x16fc12){_0x1726dd[_0xed2c('0x53')]=_0x16fc12[_0xed2c('0x54')];_0x1726dd['lastMessage']=_0x16fc12;}else{_0x1726dd[_0xed2c('0x53')]=moment(0x0)[_0xed2c('0x55')](_0xed2c('0x56'));_0x1726dd[_0xed2c('0x57')]={};}return _0x1726dd;};}exports['getUsers']=function(_0x4dd2ce,_0x39ce2b,_0x2d558b){var _0x535797=[];return db[_0xed2c('0x58')][_0xed2c('0x47')]({'where':{'role':[_0xed2c('0x59'),_0xed2c('0x5a'),'user']},'attributes':['id','fullname','name',_0xed2c('0x5b'),'userpic','internal','online','lastLoginAt','allowmessenger',_0xed2c('0x5c')],'order':qs['sort'](_0xed2c('0x5d')),'include':[{'model':db['VoiceQueue'],'as':'VoiceQueues','attributes':['id','name',_0xed2c('0x33')],'through':{'attributes':[]}}]})[_0xed2c('0x2a')](function(_0x364f07){if(_0x364f07){var _0x1f6a9e=_0x4dd2ce[_0xed2c('0x5e')]['get']({'plain':!![]});if(!_0x1f6a9e)throw new Error(_0xed2c('0x5f'));if(_0x1f6a9e[_0xed2c('0x5b')]===_0xed2c('0x5e')){return db[_0xed2c('0x60')][_0xed2c('0x4b')]({'where':{'name':_0xed2c('0x61'),'userProfileId':_0x1f6a9e['userProfileId']},'raw':!![]})[_0xed2c('0x2a')](function(_0x5ae8bc){if(_0x5ae8bc){if(_0x5ae8bc[_0xed2c('0x62')]===0x0){return db[_0xed2c('0x63')][_0xed2c('0x47')]({'where':{'sectionId':_0x5ae8bc['id']},'raw':!![]})[_0xed2c('0x2a')](function(_0x591c66){var _0x19c49c=[];if(_['isEmpty'](_0x591c66)){_0x19c49c=_['filter'](_0x364f07,function(_0x5439ac){if(_0x5439ac['role']!==_0xed2c('0x59')){return _0x5439ac;}});return _0x19c49c;}else{for(var _0x11bdb2=0x0;_0x11bdb2<_0x364f07['length'];_0x11bdb2++){var _0x51e5e2=_0x364f07[_0x11bdb2];if(_0x51e5e2[_0xed2c('0x5b')]==='agent'){var _0x36f59d=_[_0xed2c('0x4b')](_0x591c66,function(_0x1b32b8){return _0x1b32b8[_0xed2c('0x64')]===_0x51e5e2['id'];});if(_0x36f59d)_0x19c49c['push'](_0x51e5e2);}else{_0x19c49c[_0xed2c('0x65')](_0x51e5e2);}}return _0x19c49c;}});}else{return _0x364f07;}}else{var _0x1aaf84=_[_0xed2c('0x41')](_0x364f07,function(_0x5f1c88){if(_0x5f1c88[_0xed2c('0x5b')]!==_0xed2c('0x59')){return _0x5f1c88;}});return _0x1aaf84;}});}else{return _0x364f07;}}})[_0xed2c('0x2a')](function(_0x2f0040){var _0x25f4f9=[];if(_0x2f0040){_0x535797=_0x2f0040;for(var _0x124621=0x0;_0x124621<_0x2f0040[_0xed2c('0x4a')];_0x124621+=0x1){_0x535797[_0x124621][_0xed2c('0x52')]=[];_0x25f4f9[_0xed2c('0x65')](db[_0xed2c('0x30')][_0xed2c('0x4b')]({'where':{'FromId':[_0x4dd2ce['user']['id'],_0x2f0040[_0x124621]['id']],'ToId':[_0x4dd2ce[_0xed2c('0x5e')]['id'],_0x2f0040[_0x124621]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xed2c('0x66'),_0xed2c('0x67'),_0xed2c('0x68'),'body'],'order':qs[_0xed2c('0x3d')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0xed2c('0x2a')](wrapUser(_0x2f0040[_0x124621])));}return BPromise[_0xed2c('0x69')](_0x25f4f9);}return[];})[_0xed2c('0x2a')](function(_0x273149){return{'rows':_0x273149,'count':_0x273149[_0xed2c('0x4a')]};})[_0xed2c('0x2a')](respondWithResult(_0x39ce2b,null))[_0xed2c('0x48')](handleError(_0x39ce2b,null));};
\ No newline at end of file
+var _0x1efa=['filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','find','create','body','describe','messages','lastMessageAt','createdAt','lastMessage','format','getUsers','User','agent','user','fullname','internal','online','showWebBar','-online','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','UserProfileResource','isEmpty','role','resourceId','push','FromId','-createdAt','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','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','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','status','end','offset','limit','count','set','Content-Range','json','reject','save','update','then','destroy','sendStatus','error','stack','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','model','name','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x2c087c,_0x503da9){var _0x3953d5=function(_0x111f07){while(--_0x111f07){_0x2c087c['push'](_0x2c087c['shift']());}};_0x3953d5(++_0x503da9);}(_0x1efa,0x95));var _0xa1ef=function(_0x2105a6,_0x53b53a){_0x2105a6=_0x2105a6-0x0;var _0x52b71c=_0x1efa[_0x2105a6];return _0x52b71c;};'use strict';var emlformat=require(_0xa1ef('0x0'));var rimraf=require(_0xa1ef('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa1ef('0x2'));var rp=require(_0xa1ef('0x3'));var moment=require(_0xa1ef('0x4'));var BPromise=require(_0xa1ef('0x5'));var Mustache=require(_0xa1ef('0x6'));var util=require(_0xa1ef('0x7'));var path=require(_0xa1ef('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa1ef('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa1ef('0xa'));var squel=require(_0xa1ef('0xb'));var crypto=require(_0xa1ef('0xc'));var jsforce=require(_0xa1ef('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xa1ef('0xe'));var querystring=require(_0xa1ef('0xf'));var Papa=require(_0xa1ef('0x10'));var Redis=require(_0xa1ef('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa1ef('0x12'));var as=require(_0xa1ef('0x13'));var hardwareService=require(_0xa1ef('0x14'));var logger=require(_0xa1ef('0x15'))(_0xa1ef('0x16'));var utils=require(_0xa1ef('0x17'));var config=require(_0xa1ef('0x18'));var licenseUtil=require(_0xa1ef('0x19'));var db=require('../../mysqldb')['db'];config[_0xa1ef('0x1a')]=_[_0xa1ef('0x1b')](config[_0xa1ef('0x1a')],{'host':_0xa1ef('0x1c'),'port':0x18eb});var socket=require(_0xa1ef('0x1d'))(new Redis(config['redis']));require(_0xa1ef('0x1e'))[_0xa1ef('0x1f')](socket);function respondWithStatusCode(_0x48172c,_0x3ca47f){_0x3ca47f=_0x3ca47f||0xcc;return function(_0x2cac97){if(_0x2cac97){return _0x48172c['sendStatus'](_0x3ca47f);}return _0x48172c[_0xa1ef('0x20')](_0x3ca47f)[_0xa1ef('0x21')]();};}function respondWithResult(_0x36caed,_0x4f5850){_0x4f5850=_0x4f5850||0xc8;return function(_0x296e8f){if(_0x296e8f){return _0x36caed[_0xa1ef('0x20')](_0x4f5850)['json'](_0x296e8f);}};}function respondWithFilteredResult(_0x4114c6,_0x42b1fb){return function(_0x184f96){if(_0x184f96){var _0xe1b8ff=typeof _0x42b1fb[_0xa1ef('0x22')]==='undefined'&&typeof _0x42b1fb[_0xa1ef('0x23')]==='undefined';var _0x4f75cd=_0x184f96[_0xa1ef('0x24')];var _0x18ef2b=_0xe1b8ff?0x0:_0x42b1fb[_0xa1ef('0x22')];var _0x66d467=_0xe1b8ff?_0x184f96['count']:_0x42b1fb[_0xa1ef('0x22')]+_0x42b1fb[_0xa1ef('0x23')];var _0x3b57d4;if(_0x66d467>=_0x4f75cd){_0x66d467=_0x4f75cd;_0x3b57d4=0xc8;}else{_0x3b57d4=0xce;}_0x4114c6[_0xa1ef('0x20')](_0x3b57d4);return _0x4114c6[_0xa1ef('0x25')](_0xa1ef('0x26'),_0x18ef2b+'-'+_0x66d467+'/'+_0x4f75cd)[_0xa1ef('0x27')](_0x184f96);}return null;};}function patchUpdates(_0x27727b){return function(_0x4b3345){try{jsonpatch['apply'](_0x4b3345,_0x27727b,!![]);}catch(_0x16e297){return BPromise[_0xa1ef('0x28')](_0x16e297);}return _0x4b3345[_0xa1ef('0x29')]();};}function saveUpdates(_0x1d2e37,_0x5f3330){return function(_0x122bd2){if(_0x122bd2){return _0x122bd2[_0xa1ef('0x2a')](_0x1d2e37)[_0xa1ef('0x2b')](function(_0xccfc30){return _0xccfc30;});}return null;};}function removeEntity(_0xbb1eed,_0x5e00c2){return function(_0x353dc2){if(_0x353dc2){return _0x353dc2[_0xa1ef('0x2c')]()[_0xa1ef('0x2b')](function(){_0xbb1eed[_0xa1ef('0x20')](0xcc)[_0xa1ef('0x21')]();});}};}function handleEntityNotFound(_0xf45318,_0x3afc1f){return function(_0x4a3538){if(!_0x4a3538){_0xf45318[_0xa1ef('0x2d')](0x194);}return _0x4a3538;};}function handleError(_0x420034,_0x459bd5){_0x459bd5=_0x459bd5||0x1f4;return function(_0xb07ee8){logger[_0xa1ef('0x2e')](_0xb07ee8[_0xa1ef('0x2f')]);if(_0xb07ee8['name']){delete _0xb07ee8['name'];}_0x420034[_0xa1ef('0x20')](_0x459bd5)[_0xa1ef('0x30')](_0xb07ee8);};}exports[_0xa1ef('0x31')]=function(_0xfbc19b,_0x479bcf){var _0xf9f859={},_0x5cb5d4={},_0x490002={'count':0x0,'rows':[]};var _0xd6bc70=_[_0xa1ef('0x32')](db[_0xa1ef('0x33')][_0xa1ef('0x34')],function(_0x160dd7){return{'name':_0x160dd7[_0xa1ef('0x35')],'type':_0x160dd7[_0xa1ef('0x36')][_0xa1ef('0x37')]};});_0x5cb5d4[_0xa1ef('0x38')]=_[_0xa1ef('0x32')](_0xd6bc70,_0xa1ef('0x39'));_0x5cb5d4['query']=_[_0xa1ef('0x3a')](_0xfbc19b[_0xa1ef('0x3b')]);_0x5cb5d4[_0xa1ef('0x3c')]=_[_0xa1ef('0x3d')](_0x5cb5d4[_0xa1ef('0x38')],_0x5cb5d4[_0xa1ef('0x3b')]);_0xf9f859['attributes']=_[_0xa1ef('0x3d')](_0x5cb5d4[_0xa1ef('0x38')],qs[_0xa1ef('0x3e')](_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x3e')]));_0xf9f859[_0xa1ef('0x3f')]=_0xf9f859[_0xa1ef('0x3f')][_0xa1ef('0x40')]?_0xf9f859[_0xa1ef('0x3f')]:_0x5cb5d4[_0xa1ef('0x38')];if(!_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x41')](_0xa1ef('0x42'))){_0xf9f859[_0xa1ef('0x23')]=qs[_0xa1ef('0x23')](_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x23')]);_0xf9f859[_0xa1ef('0x22')]=qs[_0xa1ef('0x22')](_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x22')]);}_0xf9f859[_0xa1ef('0x43')]=qs[_0xa1ef('0x44')](_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x44')]);_0xf9f859[_0xa1ef('0x45')]=qs[_0xa1ef('0x3c')](_[_0xa1ef('0x46')](_0xfbc19b[_0xa1ef('0x3b')],_0x5cb5d4[_0xa1ef('0x3c')]),_0xd6bc70);if(_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x47')]){_0xf9f859[_0xa1ef('0x45')]=_['merge'](_0xf9f859[_0xa1ef('0x45')],{'$or':_[_0xa1ef('0x32')](_0xd6bc70,function(_0x263331){if(_0x263331[_0xa1ef('0x36')]!==_0xa1ef('0x48')){var _0x23f3cc={};_0x23f3cc[_0x263331['name']]={'$like':'%'+_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x47')]+'%'};return _0x23f3cc;}})});}_0xf9f859=_['merge']({},_0xf9f859,_0xfbc19b[_0xa1ef('0x49')]);var _0x5485c9={'where':_0xf9f859[_0xa1ef('0x45')]};return db[_0xa1ef('0x33')]['count'](_0x5485c9)[_0xa1ef('0x2b')](function(_0x258847){_0x490002[_0xa1ef('0x24')]=_0x258847;if(_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x4a')]){_0xf9f859['include']=[{'all':!![]}];}return db['ChatInternalMessage'][_0xa1ef('0x4b')](_0xf9f859);})[_0xa1ef('0x2b')](function(_0x30daa5){_0x490002[_0xa1ef('0x4c')]=_0x30daa5;return _0x490002;})[_0xa1ef('0x2b')](respondWithFilteredResult(_0x479bcf,_0xf9f859))[_0xa1ef('0x4d')](handleError(_0x479bcf,null));};exports[_0xa1ef('0x4e')]=function(_0x37d16f,_0x5dd983){var _0x20bed0={'raw':!![],'where':{'id':_0x37d16f[_0xa1ef('0x4f')]['id']}},_0xc72b59={};_0xc72b59['model']=_['keys'](db[_0xa1ef('0x33')][_0xa1ef('0x34')]);_0xc72b59['query']=_[_0xa1ef('0x3a')](_0x37d16f[_0xa1ef('0x3b')]);_0xc72b59[_0xa1ef('0x3c')]=_[_0xa1ef('0x3d')](_0xc72b59[_0xa1ef('0x38')],_0xc72b59['query']);_0x20bed0['attributes']=_[_0xa1ef('0x3d')](_0xc72b59['model'],qs[_0xa1ef('0x3e')](_0x37d16f[_0xa1ef('0x3b')][_0xa1ef('0x3e')]));_0x20bed0[_0xa1ef('0x3f')]=_0x20bed0[_0xa1ef('0x3f')][_0xa1ef('0x40')]?_0x20bed0[_0xa1ef('0x3f')]:_0xc72b59['model'];if(_0x37d16f[_0xa1ef('0x3b')]['includeAll']){_0x20bed0['include']=[{'all':!![]}];}_0x20bed0=_['merge']({},_0x20bed0,_0x37d16f['options']);return db['ChatInternalMessage'][_0xa1ef('0x50')](_0x20bed0)[_0xa1ef('0x2b')](handleEntityNotFound(_0x5dd983,null))[_0xa1ef('0x2b')](respondWithResult(_0x5dd983,null))[_0xa1ef('0x4d')](handleError(_0x5dd983,null));};exports[_0xa1ef('0x51')]=function(_0x24507d,_0x403514){return db['ChatInternalMessage']['create'](_0x24507d[_0xa1ef('0x52')],{})[_0xa1ef('0x2b')](respondWithResult(_0x403514,0xc9))[_0xa1ef('0x4d')](handleError(_0x403514,null));};exports[_0xa1ef('0x2a')]=function(_0x54249e,_0x3194e3){if(_0x54249e['body']['id']){delete _0x54249e[_0xa1ef('0x52')]['id'];}return db['ChatInternalMessage'][_0xa1ef('0x50')]({'where':{'id':_0x54249e[_0xa1ef('0x4f')]['id']}})[_0xa1ef('0x2b')](handleEntityNotFound(_0x3194e3,null))[_0xa1ef('0x2b')](saveUpdates(_0x54249e[_0xa1ef('0x52')],null))[_0xa1ef('0x2b')](respondWithResult(_0x3194e3,null))[_0xa1ef('0x4d')](handleError(_0x3194e3,null));};exports[_0xa1ef('0x2c')]=function(_0xfc164f,_0x3cd628){return db[_0xa1ef('0x33')][_0xa1ef('0x50')]({'where':{'id':_0xfc164f['params']['id']}})['then'](handleEntityNotFound(_0x3cd628,null))[_0xa1ef('0x2b')](removeEntity(_0x3cd628,null))[_0xa1ef('0x4d')](handleError(_0x3cd628,null));};exports[_0xa1ef('0x53')]=function(_0x5e6be2,_0x3261b2){return db[_0xa1ef('0x33')][_0xa1ef('0x53')]()[_0xa1ef('0x2b')](respondWithResult(_0x3261b2,null))[_0xa1ef('0x4d')](handleError(_0x3261b2,null));};function wrapUser(_0x241215){return function(_0x1e645d){var _0x383438=_0x241215['get']({'plain':!![]});_0x383438[_0xa1ef('0x54')]=[];if(_0x1e645d){_0x383438[_0xa1ef('0x55')]=_0x1e645d[_0xa1ef('0x56')];_0x383438[_0xa1ef('0x57')]=_0x1e645d;}else{_0x383438[_0xa1ef('0x55')]=moment(0x0)[_0xa1ef('0x58')]('YYYY-MM-DD\x20HH:mm:ss');_0x383438[_0xa1ef('0x57')]={};}return _0x383438;};}exports[_0xa1ef('0x59')]=function(_0x533f65,_0x2ba1c8,_0x35d5b2){var _0x54267a=[];return db[_0xa1ef('0x5a')][_0xa1ef('0x4b')]({'where':{'role':[_0xa1ef('0x5b'),'admin',_0xa1ef('0x5c')]},'attributes':['id',_0xa1ef('0x5d'),_0xa1ef('0x39'),'role','userpic',_0xa1ef('0x5e'),_0xa1ef('0x5f'),'lastLoginAt','allowmessenger',_0xa1ef('0x60')],'order':qs[_0xa1ef('0x44')](_0xa1ef('0x61')),'include':[{'model':db['VoiceQueue'],'as':_0xa1ef('0x62'),'attributes':['id','name','type'],'through':{'attributes':[]}}]})[_0xa1ef('0x2b')](function(_0x484933){if(_0x484933){var _0x1a0d6b=_0x533f65[_0xa1ef('0x5c')]['get']({'plain':!![]});if(!_0x1a0d6b)throw new Error(_0xa1ef('0x63'));if(_0x1a0d6b['role']===_0xa1ef('0x5c')){return db[_0xa1ef('0x64')][_0xa1ef('0x50')]({'where':{'name':_0xa1ef('0x65'),'userProfileId':_0x1a0d6b[_0xa1ef('0x66')]},'raw':!![]})[_0xa1ef('0x2b')](function(_0x3be606){if(_0x3be606){if(_0x3be606['autoAssociation']===0x0){return db[_0xa1ef('0x67')]['findAll']({'where':{'sectionId':_0x3be606['id']},'raw':!![]})[_0xa1ef('0x2b')](function(_0x457766){var _0x187b70=[];if(_[_0xa1ef('0x68')](_0x457766)){_0x187b70=_[_0xa1ef('0x47')](_0x484933,function(_0x5915c3){if(_0x5915c3[_0xa1ef('0x69')]!=='agent'){return _0x5915c3;}});return _0x187b70;}else{for(var _0x261c2d=0x0;_0x261c2d<_0x484933[_0xa1ef('0x40')];_0x261c2d++){var _0x415acf=_0x484933[_0x261c2d];if(_0x415acf[_0xa1ef('0x69')]===_0xa1ef('0x5b')){var _0x4f92fa=_['find'](_0x457766,function(_0x14b4fa){return _0x14b4fa[_0xa1ef('0x6a')]===_0x415acf['id'];});if(_0x4f92fa)_0x187b70['push'](_0x415acf);}else{_0x187b70[_0xa1ef('0x6b')](_0x415acf);}}return _0x187b70;}});}else{return _0x484933;}}else{var _0x2720bb=_['filter'](_0x484933,function(_0x54231d){if(_0x54231d[_0xa1ef('0x69')]!==_0xa1ef('0x5b')){return _0x54231d;}});return _0x2720bb;}});}else{return _0x484933;}}})['then'](function(_0x5e4130){var _0xac91cf=[];if(_0x5e4130){_0x54267a=_0x5e4130;for(var _0x384561=0x0;_0x384561<_0x5e4130[_0xa1ef('0x40')];_0x384561+=0x1){_0x54267a[_0x384561][_0xa1ef('0x54')]=[];_0xac91cf[_0xa1ef('0x6b')](db[_0xa1ef('0x33')][_0xa1ef('0x50')]({'where':{'FromId':[_0x533f65[_0xa1ef('0x5c')]['id'],_0x5e4130[_0x384561]['id']],'ToId':[_0x533f65[_0xa1ef('0x5c')]['id'],_0x5e4130[_0x384561]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xa1ef('0x6c'),'ToId','read',_0xa1ef('0x52')],'order':qs['sort'](_0xa1ef('0x6d')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x5e4130[_0x384561])));}return BPromise['all'](_0xac91cf);}return[];})[_0xa1ef('0x2b')](function(_0x1d1477){return{'rows':_0x1d1477,'count':_0x1d1477[_0xa1ef('0x40')]};})['then'](respondWithResult(_0x2ba1c8,null))[_0xa1ef('0x4d')](handleError(_0x2ba1c8,null));};
\ No newline at end of file
index 2163849..ecb40d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0a3=['hasOwnProperty','hook','exports','../../mysqldb','ChatInternalMessage','save','update','remove','emit'];(function(_0x341569,_0x1edec3){var _0x2cb5c7=function(_0x50dafc){while(--_0x50dafc){_0x341569['push'](_0x341569['shift']());}};_0x2cb5c7(++_0x1edec3);}(_0xa0a3,0x1e0));var _0x3a0a=function(_0x98fd67,_0x4abe55){_0x98fd67=_0x98fd67-0x0;var _0x15b8c3=_0xa0a3[_0x98fd67];return _0x15b8c3;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x3a0a('0x0'))['db'][_0x3a0a('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3a0a('0x2'),'afterUpdate':_0x3a0a('0x3'),'afterDestroy':_0x3a0a('0x4')};function emitEvent(_0x438f82){return function(_0x4f9090,_0x7f2ad7,_0xded829){ChatInternalMessageEvents[_0x3a0a('0x5')](_0x438f82+':'+_0x4f9090['id'],_0x4f9090);ChatInternalMessageEvents[_0x3a0a('0x5')](_0x438f82,_0x4f9090);_0xded829(null);};}for(var e in events){if(events[_0x3a0a('0x6')](e)){var event=events[e];ChatInternalMessage[_0x3a0a('0x7')](e,emitEvent(event));}}module[_0x3a0a('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x9e00=['../../mysqldb','setMaxListeners','emit','hasOwnProperty','hook','exports','events'];(function(_0x8db3d4,_0xab1fdb){var _0x5e7882=function(_0x263e49){while(--_0x263e49){_0x8db3d4['push'](_0x8db3d4['shift']());}};_0x5e7882(++_0xab1fdb);}(_0x9e00,0x1b8));var _0x09e0=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9e00[_0x5b644e];return _0x49c6bf;};'use strict';var EventEmitter=require(_0x09e0('0x0'));var ChatInternalMessage=require(_0x09e0('0x1'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x09e0('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4bde46){return function(_0x1348be,_0x4d4c54,_0x2a8e32){ChatInternalMessageEvents['emit'](_0x4bde46+':'+_0x1348be['id'],_0x1348be);ChatInternalMessageEvents[_0x09e0('0x3')](_0x4bde46,_0x1348be);_0x2a8e32(null);};}for(var e in events){if(events[_0x09e0('0x4')](e)){var event=events[e];ChatInternalMessage[_0x09e0('0x5')](e,emitEvent(event));}}module[_0x09e0('0x6')]=ChatInternalMessageEvents;
\ No newline at end of file
index 39fc00a..8b401d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89e0=['path','rimraf','../../config/environment','./chatInternalMessage.attributes','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird'];(function(_0x2af6f0,_0x1e50a3){var _0x4de96f=function(_0x2ba1a2){while(--_0x2ba1a2){_0x2af6f0['push'](_0x2af6f0['shift']());}};_0x4de96f(++_0x1e50a3);}(_0x89e0,0x119));var _0x089e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x89e0[_0xf71120];return _0xbe2fd3;};'use strict';var _=require(_0x089e('0x0'));var util=require(_0x089e('0x1'));var logger=require(_0x089e('0x2'))('api');var moment=require(_0x089e('0x3'));var BPromise=require(_0x089e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x089e('0x5'));var rimraf=require(_0x089e('0x6'));var config=require(_0x089e('0x7'));var attributes=require(_0x089e('0x8'));module['exports']=function(_0x2f2a65,_0x1c94c4){return _0x2f2a65['define'](_0x089e('0x9'),attributes,{'tableName':_0x089e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x089e('0xb'),'collate':_0x089e('0xc')});};
\ No newline at end of file
+var _0xa27b=['request-promise','path','./chatInternalMessage.attributes','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird'];(function(_0x234bcf,_0x383aa8){var _0x4dcf0e=function(_0x3250b2){while(--_0x3250b2){_0x234bcf['push'](_0x234bcf['shift']());}};_0x4dcf0e(++_0x383aa8);}(_0xa27b,0x80));var _0xba27=function(_0x29ec7c,_0x520bdf){_0x29ec7c=_0x29ec7c-0x0;var _0x254284=_0xa27b[_0x29ec7c];return _0x254284;};'use strict';var _=require('lodash');var util=require(_0xba27('0x0'));var logger=require(_0xba27('0x1'))('api');var moment=require(_0xba27('0x2'));var BPromise=require(_0xba27('0x3'));var rp=require(_0xba27('0x4'));var fs=require('fs');var path=require(_0xba27('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xba27('0x6'));module['exports']=function(_0x5626f7,_0x537c48){return _0x5626f7[_0xba27('0x7')](_0xba27('0x8'),attributes,{'tableName':_0xba27('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xba27('0xa'),'collate':_0xba27('0xb')});};
\ No newline at end of file
index b2c612f..849e177 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ae5=['register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket'];(function(_0x2ee857,_0x51a024){var _0x53ea56=function(_0x5285c4){while(--_0x5285c4){_0x2ee857['push'](_0x2ee857['shift']());}};_0x53ea56(++_0x51a024);}(_0x8ae5,0x1dd));var _0x58ae=function(_0x28e4ea,_0x4856fd){_0x28e4ea=_0x28e4ea-0x0;var _0x545c63=_0x8ae5[_0x28e4ea];return _0x545c63;};'use strict';var _=require(_0x58ae('0x0'));var util=require(_0x58ae('0x1'));var moment=require(_0x58ae('0x2'));var BPromise=require('bluebird');var rs=require(_0x58ae('0x3'));var fs=require('fs');var Redis=require(_0x58ae('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x58ae('0x5'));var logger=require(_0x58ae('0x6'))(_0x58ae('0x7'));var config=require('../../config/environment');var jayson=require(_0x58ae('0x8'));var client=jayson[_0x58ae('0x9')][_0x58ae('0xa')]({'port':0x232a});config[_0x58ae('0xb')]=_[_0x58ae('0xc')](config[_0x58ae('0xb')],{'host':_0x58ae('0xd'),'port':0x18eb});var socket=require(_0x58ae('0xe'))(new Redis(config[_0x58ae('0xb')]));require(_0x58ae('0xf'))[_0x58ae('0x10')](socket);function respondWithRpcPromise(_0x5ecabb,_0x306322,_0x10e440){return new BPromise(function(_0x2d6560,_0x2a8dec){return client[_0x58ae('0x11')](_0x5ecabb,_0x10e440)[_0x58ae('0x12')](function(_0x241363){logger[_0x58ae('0x13')](_0x58ae('0x14'),_0x306322,_0x58ae('0x15'));logger[_0x58ae('0x16')](_0x58ae('0x17'),_0x306322,_0x58ae('0x15'),JSON[_0x58ae('0x18')](_0x241363));if(_0x241363[_0x58ae('0x19')]){if(_0x241363[_0x58ae('0x19')][_0x58ae('0x1a')]===0x1f4){logger['error'](_0x58ae('0x14'),_0x306322,_0x241363[_0x58ae('0x19')][_0x58ae('0x1b')]);return _0x2a8dec(_0x241363[_0x58ae('0x19')][_0x58ae('0x1b')]);}logger[_0x58ae('0x19')]('ChatInternalMessage,\x20%s,\x20%s',_0x306322,_0x241363[_0x58ae('0x19')]['message']);return _0x2d6560(_0x241363[_0x58ae('0x19')][_0x58ae('0x1b')]);}else{logger[_0x58ae('0x13')](_0x58ae('0x14'),_0x306322,'request\x20sent');_0x2d6560(_0x241363['result']['message']);}})[_0x58ae('0x1c')](function(_0xb242bf){logger[_0x58ae('0x19')](_0x58ae('0x14'),_0x306322,_0xb242bf);_0x2a8dec(_0xb242bf);});});}
\ No newline at end of file
+var _0xd2ca=['info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','request'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xd2ca,0x15a));var _0xad2c=function(_0x107395,_0x1b59cd){_0x107395=_0x107395-0x0;var _0x115033=_0xd2ca[_0x107395];return _0x115033;};'use strict';var _=require(_0xad2c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xad2c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xad2c('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xad2c('0x3'))('rpc');var config=require(_0xad2c('0x4'));var jayson=require(_0xad2c('0x5'));var client=jayson[_0xad2c('0x6')][_0xad2c('0x7')]({'port':0x232a});config[_0xad2c('0x8')]=_[_0xad2c('0x9')](config[_0xad2c('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xad2c('0xa'))(new Redis(config['redis']));require(_0xad2c('0xb'))[_0xad2c('0xc')](socket);function respondWithRpcPromise(_0x1ec446,_0x538a7c,_0x2cd6f9){return new BPromise(function(_0x48a2f7,_0x565ff9){return client[_0xad2c('0xd')](_0x1ec446,_0x2cd6f9)['then'](function(_0x30cdcd){logger[_0xad2c('0xe')](_0xad2c('0xf'),_0x538a7c,_0xad2c('0x10'));logger['debug'](_0xad2c('0x11'),_0x538a7c,_0xad2c('0x10'),JSON[_0xad2c('0x12')](_0x30cdcd));if(_0x30cdcd['error']){if(_0x30cdcd[_0xad2c('0x13')][_0xad2c('0x14')]===0x1f4){logger[_0xad2c('0x13')](_0xad2c('0xf'),_0x538a7c,_0x30cdcd['error']['message']);return _0x565ff9(_0x30cdcd[_0xad2c('0x13')][_0xad2c('0x15')]);}logger['error'](_0xad2c('0xf'),_0x538a7c,_0x30cdcd[_0xad2c('0x13')][_0xad2c('0x15')]);return _0x48a2f7(_0x30cdcd[_0xad2c('0x13')]['message']);}else{logger['info'](_0xad2c('0xf'),_0x538a7c,_0xad2c('0x10'));_0x48a2f7(_0x30cdcd[_0xad2c('0x16')]['message']);}})[_0xad2c('0x17')](function(_0x21c86a){logger['error'](_0xad2c('0xf'),_0x538a7c,_0x21c86a);_0x565ff9(_0x21c86a);});});}
\ No newline at end of file
index f97ea89..13d9118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4472=['./chatInternalMessage.events','save','emit','removeListener','register','chatInternalMessage:'];(function(_0x12b35d,_0x5f3569){var _0x4eb62c=function(_0x564692){while(--_0x564692){_0x12b35d['push'](_0x12b35d['shift']());}};_0x4eb62c(++_0x5f3569);}(_0x4472,0x108));var _0x2447=function(_0x367dbd,_0x106eba){_0x367dbd=_0x367dbd-0x0;var _0x3ddb21=_0x4472[_0x367dbd];return _0x3ddb21;};'use strict';var ChatInternalMessageEvents=require(_0x2447('0x0'));var events=[_0x2447('0x1'),'remove','update'];function createListener(_0xc42efc,_0x55ceba){return function(_0x14bd41){_0x55ceba[_0x2447('0x2')](_0xc42efc,_0x14bd41);};}function removeListener(_0xd22153,_0x27471a){return function(){ChatInternalMessageEvents[_0x2447('0x3')](_0xd22153,_0x27471a);};}exports[_0x2447('0x4')]=function(_0x803e8f){for(var _0x310652=0x0,_0x48081a=events['length'];_0x310652<_0x48081a;_0x310652++){var _0x3d3c7d=events[_0x310652];var _0x333bf2=createListener(_0x2447('0x5')+_0x3d3c7d,_0x803e8f);ChatInternalMessageEvents['on'](_0x3d3c7d,_0x333bf2);}};
\ No newline at end of file
+var _0x493b=['emit','removeListener','save','remove','update'];(function(_0x186999,_0x30eca8){var _0x205000=function(_0xe8da1c){while(--_0xe8da1c){_0x186999['push'](_0x186999['shift']());}};_0x205000(++_0x30eca8);}(_0x493b,0x1b0));var _0xb493=function(_0x4b48df,_0x229682){_0x4b48df=_0x4b48df-0x0;var _0xa4335a=_0x493b[_0x4b48df];return _0xa4335a;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0xb493('0x0'),_0xb493('0x1'),_0xb493('0x2')];function createListener(_0x2b846a,_0x31eb7c){return function(_0x28a7cd){_0x31eb7c[_0xb493('0x3')](_0x2b846a,_0x28a7cd);};}function removeListener(_0x1bf8ab,_0x2246e0){return function(){ChatInternalMessageEvents[_0xb493('0x4')](_0x1bf8ab,_0x2246e0);};}exports['register']=function(_0x4f82c1){for(var _0x4728f5=0x0,_0x5eb6fb=events['length'];_0x4728f5<_0x5eb6fb;_0x4728f5++){var _0x46302e=events[_0x4728f5];var _0x34ebea=createListener('chatInternalMessage:'+_0x46302e,_0x4f82c1);ChatInternalMessageEvents['on'](_0x46302e,_0x34ebea);}};
\ No newline at end of file
index ccbab14..7741353 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb01f=['/users','/:id','show','post','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe'];(function(_0xfee9fd,_0x299d5d){var _0x17cd9f=function(_0x343c22){while(--_0x343c22){_0xfee9fd['push'](_0xfee9fd['shift']());}};_0x17cd9f(++_0x299d5d);}(_0xb01f,0x184));var _0xfb01=function(_0x2e124d,_0x31ce4a){_0x2e124d=_0x2e124d-0x0;var _0x1c03d2=_0xb01f[_0x2e124d];return _0x1c03d2;};'use strict';var multer=require(_0xfb01('0x0'));var util=require(_0xfb01('0x1'));var path=require(_0xfb01('0x2'));var timeout=require(_0xfb01('0x3'));var express=require('express');var router=express[_0xfb01('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xfb01('0x5'));var interaction=require(_0xfb01('0x6'));var config=require(_0xfb01('0x7'));var controller=require('./chatInternalMessage.controller');router[_0xfb01('0x8')]('/',auth[_0xfb01('0x9')](),controller[_0xfb01('0xa')]);router[_0xfb01('0x8')]('/describe',auth[_0xfb01('0x9')](),controller[_0xfb01('0xb')]);router[_0xfb01('0x8')](_0xfb01('0xc'),auth['isAuthenticated'](),controller['getUsers']);router[_0xfb01('0x8')](_0xfb01('0xd'),auth[_0xfb01('0x9')](),controller[_0xfb01('0xe')]);router[_0xfb01('0xf')]('/',auth[_0xfb01('0x9')](),controller['create']);router['put'](_0xfb01('0xd'),controller[_0xfb01('0x10')]);router[_0xfb01('0x11')](_0xfb01('0xd'),auth[_0xfb01('0x9')](),controller[_0xfb01('0x12')]);module[_0xfb01('0x13')]=router;
\ No newline at end of file
+var _0x2aa6=['/:id','post','create','put','update','delete','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','index','isAuthenticated','describe','/users','getUsers'];(function(_0x26c00a,_0x527ec6){var _0x94dda1=function(_0x2437c8){while(--_0x2437c8){_0x26c00a['push'](_0x26c00a['shift']());}};_0x94dda1(++_0x527ec6);}(_0x2aa6,0x1aa));var _0x62aa=function(_0x946518,_0x22816f){_0x946518=_0x946518-0x0;var _0x909b69=_0x2aa6[_0x946518];return _0x909b69;};'use strict';var multer=require(_0x62aa('0x0'));var util=require(_0x62aa('0x1'));var path=require(_0x62aa('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x62aa('0x3'));var auth=require(_0x62aa('0x4'));var interaction=require(_0x62aa('0x5'));var config=require(_0x62aa('0x6'));var controller=require(_0x62aa('0x7'));router[_0x62aa('0x8')]('/',auth['isAuthenticated'](),controller[_0x62aa('0x9')]);router[_0x62aa('0x8')]('/describe',auth[_0x62aa('0xa')](),controller[_0x62aa('0xb')]);router['get'](_0x62aa('0xc'),auth[_0x62aa('0xa')](),controller[_0x62aa('0xd')]);router[_0x62aa('0x8')](_0x62aa('0xe'),auth[_0x62aa('0xa')](),controller['show']);router[_0x62aa('0xf')]('/',auth[_0x62aa('0xa')](),controller[_0x62aa('0x10')]);router[_0x62aa('0x11')](_0x62aa('0xe'),controller[_0x62aa('0x12')]);router[_0x62aa('0x13')](_0x62aa('0xe'),auth[_0x62aa('0xa')](),controller[_0x62aa('0x14')]);module[_0x62aa('0x15')]=router;
\ No newline at end of file
index a6f37e5..57968c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb574=['medium','BOOLEAN','ENUM','out','DATE','STRING','sequelize','exports'];(function(_0xa6fd41,_0x5b44e9){var _0xa6ed48=function(_0x3ec7e9){while(--_0x3ec7e9){_0xa6fd41['push'](_0xa6fd41['shift']());}};_0xa6ed48(++_0x5b44e9);}(_0xb574,0x106));var _0x4b57=function(_0x220dba,_0x26ab28){_0x220dba=_0x220dba-0x0;var _0x1abb8b=_0xb574[_0x220dba];return _0x1abb8b;};'use strict';var Sequelize=require(_0x4b57('0x0'));module[_0x4b57('0x1')]={'body':{'type':Sequelize['TEXT'](_0x4b57('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4b57('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x4b57('0x4')]('in',_0x4b57('0x5')),'defaultValue':_0x4b57('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x4b57('0x6')]},'providerName':{'type':Sequelize[_0x4b57('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xcf2f=['BOOLEAN','ENUM','out','DATE','STRING','sequelize','exports','TEXT','medium'];(function(_0x3880a4,_0x868040){var _0x29918f=function(_0x16744c){while(--_0x16744c){_0x3880a4['push'](_0x3880a4['shift']());}};_0x29918f(++_0x868040);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x13a911,_0x119043){_0x13a911=_0x13a911-0x0;var _0x4eadfd=_0xcf2f[_0x13a911];return _0x4eadfd;};'use strict';var Sequelize=require(_0xfcf2('0x0'));module[_0xfcf2('0x1')]={'body':{'type':Sequelize[_0xfcf2('0x2')](_0xfcf2('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xfcf2('0x4')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xfcf2('0x5')]('in',_0xfcf2('0x6')),'defaultValue':_0xfcf2('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0xfcf2('0x7')]},'providerName':{'type':Sequelize[_0xfcf2('0x8')]},'providerResponse':{'type':Sequelize[_0xfcf2('0x2')]}};
\ No newline at end of file
index efe8c76..dfe62c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3580=['agent','ChatInteractionId','read1stAt','format','YYYY-MM-DD\x20HH:mm:ss','interaction','get','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','User','email','internal','manual','interface','channel','motionChannel','event','EventManager','parse','formData','ChatInteraction','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','rejectMessage','QueryTypes','contact','fullname','SIP/%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','destroy','stack','name','index','map','ChatMessage','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','count','includeAll','include','rows','show','params','create','body','update','find','describe','chat-interactions','accept','chat','read','readAt','UserId','user'];(function(_0x680821,_0x23e67f){var _0x3f132c=function(_0x1bbcea){while(--_0x1bbcea){_0x680821['push'](_0x680821['shift']());}};_0x3f132c(++_0x23e67f);}(_0x3580,0x1b8));var _0x0358=function(_0x3ef6bb,_0x1bb97f){_0x3ef6bb=_0x3ef6bb-0x0;var _0xa5f12a=_0x3580[_0x3ef6bb];return _0xa5f12a;};'use strict';var emlformat=require(_0x0358('0x0'));var rimraf=require(_0x0358('0x1'));var zipdir=require(_0x0358('0x2'));var jsonpatch=require(_0x0358('0x3'));var rp=require(_0x0358('0x4'));var moment=require('moment');var BPromise=require(_0x0358('0x5'));var Mustache=require(_0x0358('0x6'));var util=require(_0x0358('0x7'));var path=require(_0x0358('0x8'));var sox=require(_0x0358('0x9'));var csv=require('to-csv');var ejs=require(_0x0358('0xa'));var fs=require('fs');var fs_extra=require(_0x0358('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0358('0xc'));var jsforce=require(_0x0358('0xd'));var deskjs=require(_0x0358('0xe'));var toCsv=require(_0x0358('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0358('0x10'));var authService=require(_0x0358('0x11'));var qs=require(_0x0358('0x12'));var as=require(_0x0358('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0358('0x14'))(_0x0358('0x15'));var utils=require(_0x0358('0x16'));var config=require(_0x0358('0x17'));var licenseUtil=require(_0x0358('0x18'));var db=require(_0x0358('0x19'))['db'];config['redis']=_['defaults'](config[_0x0358('0x1a')],{'host':_0x0358('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0358('0x1a')]));require(_0x0358('0x1c'))[_0x0358('0x1d')](socket);var jayson=require(_0x0358('0x1e'));var client=jayson[_0x0358('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x0358('0x1f')][_0x0358('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x55643f,_0x310743,_0x25aaf2,_0x35c55c){return new BPromise(function(_0x375a17,_0x2011a5){var _0x335401=_0x35c55c||client;return _0x335401[_0x0358('0x21')](_0x55643f,_0x25aaf2)[_0x0358('0x22')](function(_0x3e4913){logger[_0x0358('0x23')](_0x0358('0x24'),_0x310743,'request\x20sent');logger['debug'](_0x0358('0x25'),_0x310743,_0x0358('0x26'),JSON[_0x0358('0x27')](_0x3e4913));if(_0x3e4913[_0x0358('0x28')]){if(_0x3e4913[_0x0358('0x28')][_0x0358('0x29')]===0x1f4){logger[_0x0358('0x28')](_0x0358('0x24'),_0x310743,_0x3e4913[_0x0358('0x28')][_0x0358('0x2a')]);return _0x2011a5(_0x3e4913['error'][_0x0358('0x2a')]);}logger[_0x0358('0x28')]('ChatMessage,\x20%s,\x20%s',_0x310743,_0x3e4913[_0x0358('0x28')][_0x0358('0x2a')]);return _0x375a17(_0x3e4913['error'][_0x0358('0x2a')]);}else{logger[_0x0358('0x23')](_0x0358('0x24'),_0x310743,'request\x20sent');_0x375a17(_0x3e4913['result'][_0x0358('0x2a')]);}})[_0x0358('0x2b')](function(_0x583106){logger[_0x0358('0x28')](_0x0358('0x24'),_0x310743,_0x583106);_0x2011a5(_0x583106);});});}function respondWithStatusCode(_0x1bd1fa,_0x21bd46){_0x21bd46=_0x21bd46||0xcc;return function(_0x49c14b){if(_0x49c14b){return _0x1bd1fa[_0x0358('0x2c')](_0x21bd46);}return _0x1bd1fa[_0x0358('0x2d')](_0x21bd46)[_0x0358('0x2e')]();};}function respondWithResult(_0x2a99e9,_0x1020e6){_0x1020e6=_0x1020e6||0xc8;return function(_0x353e4f){if(_0x353e4f){return _0x2a99e9[_0x0358('0x2d')](_0x1020e6)[_0x0358('0x2f')](_0x353e4f);}};}function respondWithFilteredResult(_0x53ccdb,_0x2a9d73){return function(_0x3ef6b8){if(_0x3ef6b8){var _0x39e023=typeof _0x2a9d73[_0x0358('0x30')]===_0x0358('0x31')&&typeof _0x2a9d73['limit']===_0x0358('0x31');var _0x252ee5=_0x3ef6b8['count'];var _0x14592d=_0x39e023?0x0:_0x2a9d73[_0x0358('0x30')];var _0x1622d6=_0x39e023?_0x3ef6b8['count']:_0x2a9d73[_0x0358('0x30')]+_0x2a9d73[_0x0358('0x32')];var _0x224660;if(_0x1622d6>=_0x252ee5){_0x1622d6=_0x252ee5;_0x224660=0xc8;}else{_0x224660=0xce;}_0x53ccdb['status'](_0x224660);return _0x53ccdb[_0x0358('0x33')](_0x0358('0x34'),_0x14592d+'-'+_0x1622d6+'/'+_0x252ee5)[_0x0358('0x2f')](_0x3ef6b8);}return null;};}function patchUpdates(_0xab0630){return function(_0x1676a3){try{jsonpatch[_0x0358('0x35')](_0x1676a3,_0xab0630,!![]);}catch(_0x22d5ae){return BPromise[_0x0358('0x36')](_0x22d5ae);}return _0x1676a3[_0x0358('0x37')]();};}function saveUpdates(_0x8520c0,_0x1a9e41){return function(_0xb2180b){if(_0xb2180b){return _0xb2180b['update'](_0x8520c0)[_0x0358('0x22')](function(_0x2bea06){return _0x2bea06;});}return null;};}function removeEntity(_0x4ea71e,_0x267936){return function(_0x1277c8){if(_0x1277c8){return _0x1277c8[_0x0358('0x38')]()[_0x0358('0x22')](function(){_0x4ea71e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x234c61,_0x59c845){return function(_0x4c7f50){if(!_0x4c7f50){_0x234c61[_0x0358('0x2c')](0x194);}return _0x4c7f50;};}function handleError(_0x38da59,_0x3c3b71){_0x3c3b71=_0x3c3b71||0x1f4;return function(_0x2827f8){logger['error'](_0x2827f8[_0x0358('0x39')]);if(_0x2827f8[_0x0358('0x3a')]){delete _0x2827f8[_0x0358('0x3a')];}_0x38da59[_0x0358('0x2d')](_0x3c3b71)['send'](_0x2827f8);};}exports[_0x0358('0x3b')]=function(_0x12df16,_0x5a9e8a){var _0x17a525={},_0x18f029={},_0x9309ef={'count':0x0,'rows':[]};var _0x10f336=_[_0x0358('0x3c')](db[_0x0358('0x3d')][_0x0358('0x3e')],function(_0x4bad8c){return{'name':_0x4bad8c['fieldName'],'type':_0x4bad8c[_0x0358('0x3f')][_0x0358('0x40')]};});_0x18f029[_0x0358('0x41')]=_[_0x0358('0x3c')](_0x10f336,_0x0358('0x3a'));_0x18f029[_0x0358('0x42')]=_[_0x0358('0x43')](_0x12df16[_0x0358('0x42')]);_0x18f029[_0x0358('0x44')]=_['intersection'](_0x18f029[_0x0358('0x41')],_0x18f029[_0x0358('0x42')]);_0x17a525['attributes']=_[_0x0358('0x45')](_0x18f029['model'],qs[_0x0358('0x46')](_0x12df16[_0x0358('0x42')][_0x0358('0x46')]));_0x17a525['attributes']=_0x17a525[_0x0358('0x47')][_0x0358('0x48')]?_0x17a525['attributes']:_0x18f029[_0x0358('0x41')];if(!_0x12df16[_0x0358('0x42')][_0x0358('0x49')]('nolimit')){_0x17a525[_0x0358('0x32')]=qs[_0x0358('0x32')](_0x12df16[_0x0358('0x42')][_0x0358('0x32')]);_0x17a525[_0x0358('0x30')]=qs['offset'](_0x12df16[_0x0358('0x42')][_0x0358('0x30')]);}_0x17a525[_0x0358('0x4a')]=qs[_0x0358('0x4b')](_0x12df16['query']['sort']);_0x17a525['where']=qs[_0x0358('0x44')](_[_0x0358('0x4c')](_0x12df16['query'],_0x18f029['filters']),_0x10f336);if(_0x12df16[_0x0358('0x42')][_0x0358('0x4d')]){_0x17a525[_0x0358('0x4e')]=_[_0x0358('0x4f')](_0x17a525[_0x0358('0x4e')],{'$or':_['map'](_0x10f336,function(_0x5f3e29){if(_0x5f3e29[_0x0358('0x3f')]!==_0x0358('0x50')){var _0x57d17f={};_0x57d17f[_0x5f3e29['name']]={'$like':'%'+_0x12df16[_0x0358('0x42')][_0x0358('0x4d')]+'%'};return _0x57d17f;}})});}_0x17a525=_['merge']({},_0x17a525,_0x12df16[_0x0358('0x51')]);var _0x3d4390={'where':_0x17a525['where']};return db[_0x0358('0x3d')]['count'](_0x3d4390)['then'](function(_0x272e4a){_0x9309ef[_0x0358('0x52')]=_0x272e4a;if(_0x12df16[_0x0358('0x42')][_0x0358('0x53')]){_0x17a525[_0x0358('0x54')]=[{'all':!![]}];}return db[_0x0358('0x3d')]['findAll'](_0x17a525);})['then'](function(_0x48ce4b){_0x9309ef[_0x0358('0x55')]=_0x48ce4b;return _0x9309ef;})[_0x0358('0x22')](respondWithFilteredResult(_0x5a9e8a,_0x17a525))['catch'](handleError(_0x5a9e8a,null));};exports[_0x0358('0x56')]=function(_0x1c20f9,_0x1c7a81){var _0x1a4610={'raw':!![],'where':{'id':_0x1c20f9[_0x0358('0x57')]['id']}},_0x2c7982={};_0x2c7982['model']=_[_0x0358('0x43')](db['ChatMessage'][_0x0358('0x3e')]);_0x2c7982[_0x0358('0x42')]=_['keys'](_0x1c20f9[_0x0358('0x42')]);_0x2c7982[_0x0358('0x44')]=_[_0x0358('0x45')](_0x2c7982[_0x0358('0x41')],_0x2c7982[_0x0358('0x42')]);_0x1a4610[_0x0358('0x47')]=_[_0x0358('0x45')](_0x2c7982['model'],qs[_0x0358('0x46')](_0x1c20f9[_0x0358('0x42')][_0x0358('0x46')]));_0x1a4610[_0x0358('0x47')]=_0x1a4610['attributes'][_0x0358('0x48')]?_0x1a4610[_0x0358('0x47')]:_0x2c7982[_0x0358('0x41')];if(_0x1c20f9[_0x0358('0x42')][_0x0358('0x53')]){_0x1a4610[_0x0358('0x54')]=[{'all':!![]}];}_0x1a4610=_[_0x0358('0x4f')]({},_0x1a4610,_0x1c20f9[_0x0358('0x51')]);return db[_0x0358('0x3d')]['find'](_0x1a4610)[_0x0358('0x22')](handleEntityNotFound(_0x1c7a81,null))['then'](respondWithResult(_0x1c7a81,null))['catch'](handleError(_0x1c7a81,null));};exports[_0x0358('0x58')]=function(_0x34b6eb,_0x365ca6){return db['ChatMessage']['create'](_0x34b6eb[_0x0358('0x59')],{})['then'](respondWithResult(_0x365ca6,0xc9))['catch'](handleError(_0x365ca6,null));};exports[_0x0358('0x5a')]=function(_0x31392f,_0x2713d3){if(_0x31392f['body']['id']){delete _0x31392f[_0x0358('0x59')]['id'];}return db[_0x0358('0x3d')][_0x0358('0x5b')]({'where':{'id':_0x31392f[_0x0358('0x57')]['id']}})[_0x0358('0x22')](handleEntityNotFound(_0x2713d3,null))['then'](saveUpdates(_0x31392f['body'],null))[_0x0358('0x22')](respondWithResult(_0x2713d3,null))['catch'](handleError(_0x2713d3,null));};exports[_0x0358('0x38')]=function(_0x26817b,_0x1583d7){return db[_0x0358('0x3d')][_0x0358('0x5b')]({'where':{'id':_0x26817b[_0x0358('0x57')]['id']}})['then'](handleEntityNotFound(_0x1583d7,null))[_0x0358('0x22')](removeEntity(_0x1583d7,null))['catch'](handleError(_0x1583d7,null));};exports[_0x0358('0x5c')]=function(_0x1bf7dc,_0x4bf761){return db[_0x0358('0x3d')][_0x0358('0x5c')]()[_0x0358('0x22')](respondWithResult(_0x4bf761,null))[_0x0358('0x2b')](handleError(_0x4bf761,null));};var interaction_log=require(_0x0358('0x14'))(_0x0358('0x5d'));exports[_0x0358('0x5e')]=function(_0x3e1e4a,_0x3532f1,_0x2e220e){var _0x594911={'agent':{},'channel':_0x0358('0x5f')};if(_0x3e1e4a['body']['id']){delete _0x3e1e4a[_0x0358('0x59')]['id'];}_0x3e1e4a['body'][_0x0358('0x60')]=!![];_0x3e1e4a[_0x0358('0x59')][_0x0358('0x61')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3e1e4a[_0x0358('0x59')][_0x0358('0x62')]=_0x3e1e4a[_0x0358('0x59')]['UserId']||_0x3e1e4a[_0x0358('0x63')]['id'];_0x594911[_0x0358('0x64')]['id']=_0x3e1e4a[_0x0358('0x59')][_0x0358('0x62')];return db[_0x0358('0x3d')][_0x0358('0x5b')]({'where':{'id':_0x3e1e4a['params']['id'],'UserId':null}})[_0x0358('0x22')](handleEntityNotFound(_0x3532f1,null))[_0x0358('0x22')](saveUpdates(_0x3e1e4a[_0x0358('0x59')],null))[_0x0358('0x22')](function(_0x2fed87){if(_0x2fed87){_0x594911[_0x0358('0x2a')]=_0x2fed87['get']({'plain':!![]});return db['ChatInteraction'][_0x0358('0x5b')]({'where':{'id':_0x2fed87[_0x0358('0x65')]}});}return null;})[_0x0358('0x22')](handleEntityNotFound(_0x3532f1,null))['then'](function(_0x3c3f5c){if(_0x3c3f5c){return _0x3c3f5c['update']({'UserId':_0x3e1e4a[_0x0358('0x59')]['UserId'],'read1stAt':_['isNil'](_0x3c3f5c[_0x0358('0x66')])?moment()[_0x0358('0x67')](_0x0358('0x68')):undefined});}return null;})['then'](function(_0x1ee4d9){if(_0x1ee4d9){_0x594911[_0x0358('0x69')]=_0x1ee4d9[_0x0358('0x6a')]({'plain':!![]});interaction_log[_0x0358('0x23')](_0x0358('0x6b'),_0x3e1e4a['user']['id'],_0x3e1e4a[_0x0358('0x63')][_0x0358('0x3a')],_0x3e1e4a['user'][_0x0358('0x6c')],_0x594911['interaction']['id'],_0x3e1e4a[_0x0358('0x59')]?JSON['stringify'](_0x3e1e4a['body']):'null');return respondWithRpcPromise(_0x0358('0x6d'),_0x0358('0x6e'),_0x594911);}return null;})[_0x0358('0x22')](function(_0x58a26e){var _0x1f1584=_0x0358('0x6f')+_0x58a26e['message'][_0x0358('0x70')];return db[_0x0358('0x71')][_0x0358('0x42')](_0x1f1584,{'type':db[_0x0358('0x72')]['QueryTypes'][_0x0358('0x73')],'raw':!![]})[_0x0358('0x22')](function(_0x1d6a07){return _0x1d6a07;});})[_0x0358('0x22')](function(_0x396901){if(_0x396901){_0x594911[_0x0358('0x2a')]['contact']=_0x396901[0x0];if(!_0x3e1e4a[_0x0358('0x59')][_0x0358('0x62')])return;return db[_0x0358('0x74')][_0x0358('0x5b')]({'where':{'id':_0x3e1e4a[_0x0358('0x59')][_0x0358('0x62')],'role':_0x0358('0x64')},'attributes':['id',_0x0358('0x3a'),'fullname',_0x0358('0x75'),_0x0358('0x76')],'raw':!![]});}return null;})[_0x0358('0x22')](function(_0x47b244){if(!_0x47b244)return null;_0x594911['message'][_0x0358('0x64')]=_0x47b244;return _0x594911;})[_0x0358('0x22')](function(_0x533249){if(_0x533249){if(_0x3e1e4a[_0x0358('0x59')][_0x0358('0x77')]){_0x594911[_0x0358('0x2a')][_0x0358('0x78')]=util[_0x0358('0x67')]('SIP/%s',_0x3e1e4a[_0x0358('0x63')][_0x0358('0x3a')]);_0x594911['message'][_0x0358('0x79')]=_0x594911[_0x0358('0x79')];_0x594911[_0x0358('0x2a')][_0x0358('0x7a')]=_0x594911['channel'];_0x594911[_0x0358('0x2a')][_0x0358('0x7b')]=_0x0358('0x5e');return respondWithRpcPromise(_0x0358('0x7c'),'EventManager',{'event':'acceptmessage','message':_[_0x0358('0x4f')](_0x594911[_0x0358('0x2a')],JSON[_0x0358('0x7d')](_0x594911[_0x0358('0x69')][_0x0358('0x7e')]))},client9002)[_0x0358('0x22')](function(){return _0x594911;});}return _0x594911;}return null;})[_0x0358('0x22')](respondWithResult(_0x3532f1,null))[_0x0358('0x2b')](handleError(_0x3532f1,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x0358('0x36')]=function(_0x3910c7,_0x1fe6ee,_0x1ea44b){var _0x41e0cf={'agent':{},'channel':_0x0358('0x5f')};if(_0x3910c7[_0x0358('0x59')]['id']){delete _0x3910c7['body']['id'];}_0x3910c7[_0x0358('0x59')][_0x0358('0x62')]=_0x3910c7[_0x0358('0x59')]['UserId']||_0x3910c7[_0x0358('0x63')]['id'];_0x41e0cf[_0x0358('0x64')]['id']=_0x3910c7[_0x0358('0x59')][_0x0358('0x62')];return db[_0x0358('0x3d')][_0x0358('0x5b')]({'where':{'id':_0x3910c7['params']['id'],'UserId':null}})[_0x0358('0x22')](handleEntityNotFound(_0x1fe6ee,null))[_0x0358('0x22')](function(_0x281e27){if(_0x281e27){_0x41e0cf[_0x0358('0x2a')]=_0x281e27[_0x0358('0x6a')]({'plain':!![]});return db[_0x0358('0x7f')][_0x0358('0x5b')]({'where':{'id':_0x281e27[_0x0358('0x65')]}});}return null;})[_0x0358('0x22')](handleEntityNotFound(_0x1fe6ee,null))[_0x0358('0x22')](function(_0x37c6a6){if(_0x37c6a6){_0x41e0cf[_0x0358('0x69')]=_0x37c6a6[_0x0358('0x6a')]({'plain':!![]});interaction_log[_0x0358('0x23')](_0x0358('0x80'),_0x3910c7[_0x0358('0x63')]['id'],_0x3910c7[_0x0358('0x63')][_0x0358('0x3a')],_0x3910c7[_0x0358('0x63')][_0x0358('0x6c')],_0x41e0cf[_0x0358('0x69')]['id'],_0x3910c7['body']?JSON[_0x0358('0x27')](_0x3910c7[_0x0358('0x59')]):_0x0358('0x81'));return respondWithRpcPromise('RejectMessage',_0x0358('0x82'),_0x41e0cf);}return null;})[_0x0358('0x22')](function(_0x4e2cf6){var _0x22cfbe=_0x0358('0x6f')+_0x4e2cf6[_0x0358('0x2a')][_0x0358('0x70')];return db[_0x0358('0x71')][_0x0358('0x42')](_0x22cfbe,{'type':db['Sequelize'][_0x0358('0x83')][_0x0358('0x73')],'raw':!![]})[_0x0358('0x22')](function(_0xeaf15f){return _0xeaf15f;});})[_0x0358('0x22')](function(_0x59c816){if(_0x59c816){_0x41e0cf[_0x0358('0x2a')][_0x0358('0x84')]=_0x59c816[0x0];if(!_0x3910c7[_0x0358('0x59')]['UserId'])return;return db[_0x0358('0x74')]['find']({'where':{'id':_0x3910c7['body'][_0x0358('0x62')],'role':_0x0358('0x64')},'attributes':['id',_0x0358('0x3a'),_0x0358('0x85'),_0x0358('0x75'),_0x0358('0x76')],'raw':!![]});}return null;})[_0x0358('0x22')](function(_0x3a0d43){if(!_0x3a0d43)return null;_0x41e0cf[_0x0358('0x2a')][_0x0358('0x64')]=_0x3a0d43;return _0x41e0cf;})['then'](function(_0x127cda){if(_0x127cda){_0x127cda[_0x0358('0x2a')][_0x0358('0x78')]=util[_0x0358('0x67')](_0x0358('0x86'),_0x3910c7[_0x0358('0x63')][_0x0358('0x3a')]);_0x127cda[_0x0358('0x2a')]['channel']=_0x41e0cf['channel'];_0x127cda['message'][_0x0358('0x7a')]=_0x41e0cf['channel'];_0x127cda[_0x0358('0x2a')][_0x0358('0x7b')]=_0x0358('0x36');respondWithRpcPromise(_0x0358('0x7c'),'EventManager',{'event':'rejectmessage','message':_['merge'](_0x41e0cf[_0x0358('0x2a')],JSON[_0x0358('0x7d')](_0x41e0cf['interaction'][_0x0358('0x7e')]))},client9002);return _0x41e0cf;}return null;})[_0x0358('0x22')](respondWithResult(_0x1fe6ee,null))[_0x0358('0x2b')](handleError(_0x1fe6ee,null));};
\ No newline at end of file
+var _0xb578=['json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','stack','name','index','map','ChatMessage','fieldName','type','key','model','keys','filters','query','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','show','params','intersection','options','find','create','body','update','describe','accept','chat','format','YYYY-MM-DD\x20HH:mm:ss','agent','get','ChatInteractionId','UserId','isNil','read1stAt','interaction','user','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','fullname','internal','interface','SIP/%s','channel','motionChannel','event','acceptmessage','merge','parse','chat-interactions','reject','null','sequelize','contact','email','EventManager','rejectmessage','formData','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','request','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb578,0x1d2));var _0x8b57=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb578[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x8b57('0x0'));var rimraf=require(_0x8b57('0x1'));var zipdir=require(_0x8b57('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8b57('0x3'));var BPromise=require(_0x8b57('0x4'));var Mustache=require(_0x8b57('0x5'));var util=require(_0x8b57('0x6'));var path=require(_0x8b57('0x7'));var sox=require(_0x8b57('0x8'));var csv=require('to-csv');var ejs=require(_0x8b57('0x9'));var fs=require('fs');var fs_extra=require(_0x8b57('0xa'));var _=require(_0x8b57('0xb'));var squel=require(_0x8b57('0xc'));var crypto=require(_0x8b57('0xd'));var jsforce=require(_0x8b57('0xe'));var deskjs=require(_0x8b57('0xf'));var toCsv=require('to-csv');var querystring=require(_0x8b57('0x10'));var Papa=require('papaparse');var Redis=require(_0x8b57('0x11'));var authService=require(_0x8b57('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x8b57('0x13'));var hardwareService=require(_0x8b57('0x14'));var logger=require(_0x8b57('0x15'))(_0x8b57('0x16'));var utils=require(_0x8b57('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x8b57('0x18'));var db=require(_0x8b57('0x19'))['db'];config[_0x8b57('0x1a')]=_[_0x8b57('0x1b')](config[_0x8b57('0x1a')],{'host':_0x8b57('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8b57('0x1d'))[_0x8b57('0x1e')](socket);var jayson=require(_0x8b57('0x1f'));var client=jayson[_0x8b57('0x20')][_0x8b57('0x21')]({'port':0x232c});var client9002=jayson[_0x8b57('0x20')][_0x8b57('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x1c857b,_0x3eda1a,_0x299735,_0x380307){return new BPromise(function(_0x50644e,_0xbc58d5){var _0x3f5ea8=_0x380307||client;return _0x3f5ea8[_0x8b57('0x22')](_0x1c857b,_0x299735)['then'](function(_0x306eae){logger[_0x8b57('0x23')](_0x8b57('0x24'),_0x3eda1a,_0x8b57('0x25'));logger['debug'](_0x8b57('0x26'),_0x3eda1a,_0x8b57('0x25'),JSON[_0x8b57('0x27')](_0x306eae));if(_0x306eae['error']){if(_0x306eae[_0x8b57('0x28')]['code']===0x1f4){logger['error'](_0x8b57('0x24'),_0x3eda1a,_0x306eae[_0x8b57('0x28')][_0x8b57('0x29')]);return _0xbc58d5(_0x306eae['error'][_0x8b57('0x29')]);}logger[_0x8b57('0x28')](_0x8b57('0x24'),_0x3eda1a,_0x306eae[_0x8b57('0x28')][_0x8b57('0x29')]);return _0x50644e(_0x306eae[_0x8b57('0x28')]['message']);}else{logger[_0x8b57('0x23')]('ChatMessage,\x20%s,\x20%s',_0x3eda1a,_0x8b57('0x25'));_0x50644e(_0x306eae['result'][_0x8b57('0x29')]);}})[_0x8b57('0x2a')](function(_0x18327a){logger[_0x8b57('0x28')]('ChatMessage,\x20%s,\x20%s',_0x3eda1a,_0x18327a);_0xbc58d5(_0x18327a);});});}function respondWithStatusCode(_0x5ceb65,_0x5e3ec6){_0x5e3ec6=_0x5e3ec6||0xcc;return function(_0x30bcc8){if(_0x30bcc8){return _0x5ceb65[_0x8b57('0x2b')](_0x5e3ec6);}return _0x5ceb65[_0x8b57('0x2c')](_0x5e3ec6)[_0x8b57('0x2d')]();};}function respondWithResult(_0x325b7f,_0x241877){_0x241877=_0x241877||0xc8;return function(_0x5b5786){if(_0x5b5786){return _0x325b7f['status'](_0x241877)[_0x8b57('0x2e')](_0x5b5786);}};}function respondWithFilteredResult(_0x5365d8,_0x5dc16f){return function(_0x33d511){if(_0x33d511){var _0x4a4b36=typeof _0x5dc16f[_0x8b57('0x2f')]===_0x8b57('0x30')&&typeof _0x5dc16f[_0x8b57('0x31')]===_0x8b57('0x30');var _0xe2f2df=_0x33d511[_0x8b57('0x32')];var _0xb2d9fa=_0x4a4b36?0x0:_0x5dc16f[_0x8b57('0x2f')];var _0x2e32e5=_0x4a4b36?_0x33d511[_0x8b57('0x32')]:_0x5dc16f['offset']+_0x5dc16f['limit'];var _0x3a74d7;if(_0x2e32e5>=_0xe2f2df){_0x2e32e5=_0xe2f2df;_0x3a74d7=0xc8;}else{_0x3a74d7=0xce;}_0x5365d8[_0x8b57('0x2c')](_0x3a74d7);return _0x5365d8['set'](_0x8b57('0x33'),_0xb2d9fa+'-'+_0x2e32e5+'/'+_0xe2f2df)['json'](_0x33d511);}return null;};}function patchUpdates(_0x12a821){return function(_0x138f26){try{jsonpatch[_0x8b57('0x34')](_0x138f26,_0x12a821,!![]);}catch(_0x1bb1f4){return BPromise['reject'](_0x1bb1f4);}return _0x138f26[_0x8b57('0x35')]();};}function saveUpdates(_0x339cfe,_0x2d4b63){return function(_0x27dc1b){if(_0x27dc1b){return _0x27dc1b['update'](_0x339cfe)[_0x8b57('0x36')](function(_0x442d6b){return _0x442d6b;});}return null;};}function removeEntity(_0x54ef43,_0x51ce7b){return function(_0x40d6d2){if(_0x40d6d2){return _0x40d6d2[_0x8b57('0x37')]()[_0x8b57('0x36')](function(){_0x54ef43[_0x8b57('0x2c')](0xcc)[_0x8b57('0x2d')]();});}};}function handleEntityNotFound(_0x25096e,_0x3ee641){return function(_0x32cf1c){if(!_0x32cf1c){_0x25096e[_0x8b57('0x2b')](0x194);}return _0x32cf1c;};}function handleError(_0x483992,_0x51b9d2){_0x51b9d2=_0x51b9d2||0x1f4;return function(_0x2b880b){logger[_0x8b57('0x28')](_0x2b880b[_0x8b57('0x38')]);if(_0x2b880b[_0x8b57('0x39')]){delete _0x2b880b['name'];}_0x483992['status'](_0x51b9d2)['send'](_0x2b880b);};}exports[_0x8b57('0x3a')]=function(_0x494fdc,_0x12b4f6){var _0x20d08d={},_0x4bdcb4={},_0x2ad3b2={'count':0x0,'rows':[]};var _0x1a3592=_[_0x8b57('0x3b')](db[_0x8b57('0x3c')]['rawAttributes'],function(_0x2eccfd){return{'name':_0x2eccfd[_0x8b57('0x3d')],'type':_0x2eccfd[_0x8b57('0x3e')][_0x8b57('0x3f')]};});_0x4bdcb4[_0x8b57('0x40')]=_[_0x8b57('0x3b')](_0x1a3592,_0x8b57('0x39'));_0x4bdcb4['query']=_[_0x8b57('0x41')](_0x494fdc['query']);_0x4bdcb4[_0x8b57('0x42')]=_['intersection'](_0x4bdcb4[_0x8b57('0x40')],_0x4bdcb4[_0x8b57('0x43')]);_0x20d08d[_0x8b57('0x44')]=_['intersection'](_0x4bdcb4[_0x8b57('0x40')],qs['fields'](_0x494fdc[_0x8b57('0x43')][_0x8b57('0x45')]));_0x20d08d['attributes']=_0x20d08d['attributes'][_0x8b57('0x46')]?_0x20d08d['attributes']:_0x4bdcb4['model'];if(!_0x494fdc[_0x8b57('0x43')][_0x8b57('0x47')]('nolimit')){_0x20d08d['limit']=qs[_0x8b57('0x31')](_0x494fdc[_0x8b57('0x43')]['limit']);_0x20d08d[_0x8b57('0x2f')]=qs[_0x8b57('0x2f')](_0x494fdc[_0x8b57('0x43')][_0x8b57('0x2f')]);}_0x20d08d['order']=qs[_0x8b57('0x48')](_0x494fdc[_0x8b57('0x43')][_0x8b57('0x48')]);_0x20d08d[_0x8b57('0x49')]=qs[_0x8b57('0x42')](_[_0x8b57('0x4a')](_0x494fdc['query'],_0x4bdcb4[_0x8b57('0x42')]),_0x1a3592);if(_0x494fdc[_0x8b57('0x43')][_0x8b57('0x4b')]){_0x20d08d[_0x8b57('0x49')]=_['merge'](_0x20d08d['where'],{'$or':_[_0x8b57('0x3b')](_0x1a3592,function(_0x5ab97b){if(_0x5ab97b[_0x8b57('0x3e')]!==_0x8b57('0x4c')){var _0x4aaa66={};_0x4aaa66[_0x5ab97b[_0x8b57('0x39')]]={'$like':'%'+_0x494fdc[_0x8b57('0x43')][_0x8b57('0x4b')]+'%'};return _0x4aaa66;}})});}_0x20d08d=_['merge']({},_0x20d08d,_0x494fdc['options']);var _0xb05ace={'where':_0x20d08d[_0x8b57('0x49')]};return db['ChatMessage'][_0x8b57('0x32')](_0xb05ace)[_0x8b57('0x36')](function(_0x1ab253){_0x2ad3b2[_0x8b57('0x32')]=_0x1ab253;if(_0x494fdc['query'][_0x8b57('0x4d')]){_0x20d08d[_0x8b57('0x4e')]=[{'all':!![]}];}return db['ChatMessage'][_0x8b57('0x4f')](_0x20d08d);})[_0x8b57('0x36')](function(_0x36ba71){_0x2ad3b2['rows']=_0x36ba71;return _0x2ad3b2;})['then'](respondWithFilteredResult(_0x12b4f6,_0x20d08d))[_0x8b57('0x2a')](handleError(_0x12b4f6,null));};exports[_0x8b57('0x50')]=function(_0x42ea98,_0x3a93c0){var _0xd8b354={'raw':!![],'where':{'id':_0x42ea98[_0x8b57('0x51')]['id']}},_0x3ac162={};_0x3ac162[_0x8b57('0x40')]=_[_0x8b57('0x41')](db['ChatMessage']['rawAttributes']);_0x3ac162[_0x8b57('0x43')]=_['keys'](_0x42ea98[_0x8b57('0x43')]);_0x3ac162[_0x8b57('0x42')]=_['intersection'](_0x3ac162[_0x8b57('0x40')],_0x3ac162[_0x8b57('0x43')]);_0xd8b354[_0x8b57('0x44')]=_[_0x8b57('0x52')](_0x3ac162[_0x8b57('0x40')],qs[_0x8b57('0x45')](_0x42ea98['query'][_0x8b57('0x45')]));_0xd8b354[_0x8b57('0x44')]=_0xd8b354[_0x8b57('0x44')][_0x8b57('0x46')]?_0xd8b354['attributes']:_0x3ac162['model'];if(_0x42ea98[_0x8b57('0x43')][_0x8b57('0x4d')]){_0xd8b354[_0x8b57('0x4e')]=[{'all':!![]}];}_0xd8b354=_['merge']({},_0xd8b354,_0x42ea98[_0x8b57('0x53')]);return db['ChatMessage'][_0x8b57('0x54')](_0xd8b354)[_0x8b57('0x36')](handleEntityNotFound(_0x3a93c0,null))[_0x8b57('0x36')](respondWithResult(_0x3a93c0,null))[_0x8b57('0x2a')](handleError(_0x3a93c0,null));};exports['create']=function(_0x1ae543,_0x3f6aff){return db[_0x8b57('0x3c')][_0x8b57('0x55')](_0x1ae543[_0x8b57('0x56')],{})[_0x8b57('0x36')](respondWithResult(_0x3f6aff,0xc9))[_0x8b57('0x2a')](handleError(_0x3f6aff,null));};exports[_0x8b57('0x57')]=function(_0x1753fb,_0x393323){if(_0x1753fb['body']['id']){delete _0x1753fb['body']['id'];}return db[_0x8b57('0x3c')][_0x8b57('0x54')]({'where':{'id':_0x1753fb[_0x8b57('0x51')]['id']}})[_0x8b57('0x36')](handleEntityNotFound(_0x393323,null))[_0x8b57('0x36')](saveUpdates(_0x1753fb[_0x8b57('0x56')],null))[_0x8b57('0x36')](respondWithResult(_0x393323,null))['catch'](handleError(_0x393323,null));};exports[_0x8b57('0x37')]=function(_0x49c910,_0x27ad95){return db[_0x8b57('0x3c')][_0x8b57('0x54')]({'where':{'id':_0x49c910['params']['id']}})[_0x8b57('0x36')](handleEntityNotFound(_0x27ad95,null))[_0x8b57('0x36')](removeEntity(_0x27ad95,null))[_0x8b57('0x2a')](handleError(_0x27ad95,null));};exports[_0x8b57('0x58')]=function(_0x4d8edc,_0x453455){return db['ChatMessage'][_0x8b57('0x58')]()[_0x8b57('0x36')](respondWithResult(_0x453455,null))[_0x8b57('0x2a')](handleError(_0x453455,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x8b57('0x59')]=function(_0x435776,_0x3a2fcc,_0x3cee6e){var _0x2a7f6e={'agent':{},'channel':_0x8b57('0x5a')};if(_0x435776['body']['id']){delete _0x435776[_0x8b57('0x56')]['id'];}_0x435776['body']['read']=!![];_0x435776[_0x8b57('0x56')]['readAt']=moment()[_0x8b57('0x5b')](_0x8b57('0x5c'));_0x435776[_0x8b57('0x56')]['UserId']=_0x435776[_0x8b57('0x56')]['UserId']||_0x435776['user']['id'];_0x2a7f6e[_0x8b57('0x5d')]['id']=_0x435776[_0x8b57('0x56')]['UserId'];return db[_0x8b57('0x3c')]['find']({'where':{'id':_0x435776[_0x8b57('0x51')]['id'],'UserId':null}})[_0x8b57('0x36')](handleEntityNotFound(_0x3a2fcc,null))[_0x8b57('0x36')](saveUpdates(_0x435776['body'],null))[_0x8b57('0x36')](function(_0x142320){if(_0x142320){_0x2a7f6e[_0x8b57('0x29')]=_0x142320[_0x8b57('0x5e')]({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0x142320[_0x8b57('0x5f')]}});}return null;})[_0x8b57('0x36')](handleEntityNotFound(_0x3a2fcc,null))[_0x8b57('0x36')](function(_0x4a7d4e){if(_0x4a7d4e){return _0x4a7d4e[_0x8b57('0x57')]({'UserId':_0x435776[_0x8b57('0x56')][_0x8b57('0x60')],'read1stAt':_[_0x8b57('0x61')](_0x4a7d4e[_0x8b57('0x62')])?moment()[_0x8b57('0x5b')](_0x8b57('0x5c')):undefined});}return null;})[_0x8b57('0x36')](function(_0x2c4cc4){if(_0x2c4cc4){_0x2a7f6e[_0x8b57('0x63')]=_0x2c4cc4[_0x8b57('0x5e')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x435776[_0x8b57('0x64')]['id'],_0x435776[_0x8b57('0x64')][_0x8b57('0x39')],_0x435776[_0x8b57('0x64')][_0x8b57('0x65')],_0x2a7f6e[_0x8b57('0x63')]['id'],_0x435776[_0x8b57('0x56')]?JSON[_0x8b57('0x27')](_0x435776[_0x8b57('0x56')]):'null');return respondWithRpcPromise(_0x8b57('0x66'),_0x8b57('0x67'),_0x2a7f6e);}return null;})[_0x8b57('0x36')](function(_0x2dc099){var _0x177796=_0x8b57('0x68')+_0x2dc099[_0x8b57('0x29')][_0x8b57('0x69')];return db['sequelize']['query'](_0x177796,{'type':db[_0x8b57('0x6a')][_0x8b57('0x6b')][_0x8b57('0x6c')],'raw':!![]})[_0x8b57('0x36')](function(_0x437743){return _0x437743;});})[_0x8b57('0x36')](function(_0x5c36e6){if(_0x5c36e6){_0x2a7f6e['message']['contact']=_0x5c36e6[0x0];if(!_0x435776[_0x8b57('0x56')][_0x8b57('0x60')])return;return db['User']['find']({'where':{'id':_0x435776[_0x8b57('0x56')][_0x8b57('0x60')],'role':'agent'},'attributes':['id',_0x8b57('0x39'),_0x8b57('0x6d'),'email',_0x8b57('0x6e')],'raw':!![]});}return null;})['then'](function(_0x31e069){if(!_0x31e069)return null;_0x2a7f6e[_0x8b57('0x29')][_0x8b57('0x5d')]=_0x31e069;return _0x2a7f6e;})['then'](function(_0x396cf7){if(_0x396cf7){if(_0x435776['body']['manual']){_0x2a7f6e['message'][_0x8b57('0x6f')]=util[_0x8b57('0x5b')](_0x8b57('0x70'),_0x435776[_0x8b57('0x64')][_0x8b57('0x39')]);_0x2a7f6e[_0x8b57('0x29')][_0x8b57('0x71')]=_0x2a7f6e[_0x8b57('0x71')];_0x2a7f6e['message'][_0x8b57('0x72')]=_0x2a7f6e[_0x8b57('0x71')];_0x2a7f6e[_0x8b57('0x29')][_0x8b57('0x73')]='accept';return respondWithRpcPromise('EventManager','EventManager',{'event':_0x8b57('0x74'),'message':_[_0x8b57('0x75')](_0x2a7f6e[_0x8b57('0x29')],JSON[_0x8b57('0x76')](_0x2a7f6e[_0x8b57('0x63')]['formData']))},client9002)[_0x8b57('0x36')](function(){return _0x2a7f6e;});}return _0x2a7f6e;}return null;})[_0x8b57('0x36')](respondWithResult(_0x3a2fcc,null))[_0x8b57('0x2a')](handleError(_0x3a2fcc,null));};var interaction_log=require('../../config/logger')(_0x8b57('0x77'));exports[_0x8b57('0x78')]=function(_0x5871e6,_0x2596af,_0x31754b){var _0x1e2e3a={'agent':{},'channel':'chat'};if(_0x5871e6[_0x8b57('0x56')]['id']){delete _0x5871e6[_0x8b57('0x56')]['id'];}_0x5871e6[_0x8b57('0x56')]['UserId']=_0x5871e6[_0x8b57('0x56')]['UserId']||_0x5871e6[_0x8b57('0x64')]['id'];_0x1e2e3a[_0x8b57('0x5d')]['id']=_0x5871e6[_0x8b57('0x56')][_0x8b57('0x60')];return db['ChatMessage'][_0x8b57('0x54')]({'where':{'id':_0x5871e6['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2596af,null))['then'](function(_0x26b066){if(_0x26b066){_0x1e2e3a[_0x8b57('0x29')]=_0x26b066['get']({'plain':!![]});return db['ChatInteraction'][_0x8b57('0x54')]({'where':{'id':_0x26b066['ChatInteractionId']}});}return null;})[_0x8b57('0x36')](handleEntityNotFound(_0x2596af,null))[_0x8b57('0x36')](function(_0x46880b){if(_0x46880b){_0x1e2e3a[_0x8b57('0x63')]=_0x46880b[_0x8b57('0x5e')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5871e6[_0x8b57('0x64')]['id'],_0x5871e6[_0x8b57('0x64')][_0x8b57('0x39')],_0x5871e6[_0x8b57('0x64')][_0x8b57('0x65')],_0x1e2e3a[_0x8b57('0x63')]['id'],_0x5871e6[_0x8b57('0x56')]?JSON[_0x8b57('0x27')](_0x5871e6[_0x8b57('0x56')]):_0x8b57('0x79'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x1e2e3a);}return null;})[_0x8b57('0x36')](function(_0x33cb89){var _0x2ea0c2=_0x8b57('0x68')+_0x33cb89[_0x8b57('0x29')][_0x8b57('0x69')];return db[_0x8b57('0x7a')][_0x8b57('0x43')](_0x2ea0c2,{'type':db[_0x8b57('0x6a')][_0x8b57('0x6b')]['SELECT'],'raw':!![]})[_0x8b57('0x36')](function(_0x23e5ce){return _0x23e5ce;});})[_0x8b57('0x36')](function(_0x44b871){if(_0x44b871){_0x1e2e3a[_0x8b57('0x29')][_0x8b57('0x7b')]=_0x44b871[0x0];if(!_0x5871e6['body'][_0x8b57('0x60')])return;return db['User']['find']({'where':{'id':_0x5871e6[_0x8b57('0x56')][_0x8b57('0x60')],'role':_0x8b57('0x5d')},'attributes':['id',_0x8b57('0x39'),_0x8b57('0x6d'),_0x8b57('0x7c'),_0x8b57('0x6e')],'raw':!![]});}return null;})[_0x8b57('0x36')](function(_0x43bf58){if(!_0x43bf58)return null;_0x1e2e3a[_0x8b57('0x29')]['agent']=_0x43bf58;return _0x1e2e3a;})['then'](function(_0x27599c){if(_0x27599c){_0x27599c[_0x8b57('0x29')][_0x8b57('0x6f')]=util[_0x8b57('0x5b')]('SIP/%s',_0x5871e6[_0x8b57('0x64')]['name']);_0x27599c[_0x8b57('0x29')][_0x8b57('0x71')]=_0x1e2e3a[_0x8b57('0x71')];_0x27599c[_0x8b57('0x29')][_0x8b57('0x72')]=_0x1e2e3a[_0x8b57('0x71')];_0x27599c[_0x8b57('0x29')][_0x8b57('0x73')]=_0x8b57('0x78');respondWithRpcPromise(_0x8b57('0x7d'),_0x8b57('0x7d'),{'event':_0x8b57('0x7e'),'message':_[_0x8b57('0x75')](_0x1e2e3a[_0x8b57('0x29')],JSON[_0x8b57('0x76')](_0x1e2e3a[_0x8b57('0x63')][_0x8b57('0x7f')]))},client9002);return _0x1e2e3a;}return null;})['then'](respondWithResult(_0x2596af,null))[_0x8b57('0x2a')](handleError(_0x2596af,null));};
\ No newline at end of file
index 1c58226..540197d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5f4=['update','remove','emit','hook','events','../../mysqldb','setMaxListeners'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xb5f4,0x15b));var _0x4b5f=function(_0x570b17,_0x3e25d4){_0x570b17=_0x570b17-0x0;var _0x230b47=_0xb5f4[_0x570b17];return _0x230b47;};'use strict';var EventEmitter=require(_0x4b5f('0x0'));var ChatMessage=require(_0x4b5f('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x4b5f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4b5f('0x3'),'afterDestroy':_0x4b5f('0x4')};function emitEvent(_0x14a1b0){return function(_0x892dbe,_0x446aa0,_0x3104da){ChatMessageEvents[_0x4b5f('0x5')](_0x14a1b0+':'+_0x892dbe['id'],_0x892dbe);ChatMessageEvents[_0x4b5f('0x5')](_0x14a1b0,_0x892dbe);_0x3104da(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x4b5f('0x6')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
+var _0xea5f=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','ChatMessage','save','update'];(function(_0x5d0af8,_0x204c8c){var _0x44a12b=function(_0x3b8880){while(--_0x3b8880){_0x5d0af8['push'](_0x5d0af8['shift']());}};_0x44a12b(++_0x204c8c);}(_0xea5f,0xb8));var _0xfea5=function(_0x59c301,_0x359c50){_0x59c301=_0x59c301-0x0;var _0x3866b9=_0xea5f[_0x59c301];return _0x3866b9;};'use strict';var EventEmitter=require(_0xfea5('0x0'));var ChatMessage=require(_0xfea5('0x1'))['db'][_0xfea5('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfea5('0x3'),'afterUpdate':_0xfea5('0x4'),'afterDestroy':_0xfea5('0x5')};function emitEvent(_0x5ccc79){return function(_0x1badfe,_0x4e4b09,_0x50b597){ChatMessageEvents[_0xfea5('0x6')](_0x5ccc79+':'+_0x1badfe['id'],_0x1badfe);ChatMessageEvents[_0xfea5('0x6')](_0x5ccc79,_0x1badfe);_0x50b597(null);};}for(var e in events){if(events[_0xfea5('0x7')](e)){var event=events[e];ChatMessage[_0xfea5('0x8')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
index f2a2027..62a5926 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfe5=['rimraf','../../config/environment','./chatMessage.attributes','define','chat_messages','fti_chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','ChatInteraction','ChatInteractionId','update','utf8mb4_unicode_ci','lodash','util','request-promise'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xcfe5,0x1c9));var _0x5cfe=function(_0x1d0aee,_0x2c4454){_0x1d0aee=_0x1d0aee-0x0;var _0x34ee2c=_0xcfe5[_0x1d0aee];return _0x34ee2c;};'use strict';var _=require(_0x5cfe('0x0'));var util=require(_0x5cfe('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5cfe('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5cfe('0x3'));var config=require(_0x5cfe('0x4'));var attributes=require(_0x5cfe('0x5'));module['exports']=function(_0x26bdda,_0x4a33f0){return _0x26bdda[_0x5cfe('0x6')]('ChatMessage',attributes,{'tableName':_0x5cfe('0x7'),'paranoid':![],'indexes':[{'name':_0x5cfe('0x8'),'fields':[_0x5cfe('0x9')],'type':_0x5cfe('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x73f7b2,_0x19bce2,_0x1f9cb2){var _0x1e9498=_0x26bdda[_0x5cfe('0xb')];var _0x4788da=_0x73f7b2[_0x5cfe('0xc')]({'plain':!![]});if(_0x4788da[_0x5cfe('0xd')]['toLowerCase']()==='in'||_0x4788da[_0x5cfe('0xd')][_0x5cfe('0xe')]()==='out'&&!_0x4788da[_0x5cfe('0xf')]&&!_['isNil'](_0x4788da['UserId'])){_0x1e9498[_0x5cfe('0x10')]['findOne']({'where':{'id':_0x4788da[_0x5cfe('0x11')]}})['then'](function(_0x59de75){if(_0x59de75){_0x59de75[_0x5cfe('0x12')]({'lastMsgAt':_0x4788da['createdAt'],'lastMsgDirection':_0x4788da[_0x5cfe('0xd')]['toLowerCase']()});}})['catch'](function(_0x169bf5){console['error'](_0x169bf5);});}_0x1f9cb2();}},'charset':'utf8mb4','collate':_0x5cfe('0x13')});};
\ No newline at end of file
+var _0xdab6=['secret','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','toLowerCase','error','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','define','ChatMessage','chat_messages','body','FULLTEXT','models','get','direction','out'];(function(_0x10208d,_0x435c09){var _0x441041=function(_0x5756d0){while(--_0x5756d0){_0x10208d['push'](_0x10208d['shift']());}};_0x441041(++_0x435c09);}(_0xdab6,0x10f));var _0x6dab=function(_0x202c7a,_0x3dca8e){_0x202c7a=_0x202c7a-0x0;var _0x11d0d7=_0xdab6[_0x202c7a];return _0x11d0d7;};'use strict';var _=require('lodash');var util=require(_0x6dab('0x0'));var logger=require(_0x6dab('0x1'))(_0x6dab('0x2'));var moment=require(_0x6dab('0x3'));var BPromise=require(_0x6dab('0x4'));var rp=require(_0x6dab('0x5'));var fs=require('fs');var path=require(_0x6dab('0x6'));var rimraf=require(_0x6dab('0x7'));var config=require(_0x6dab('0x8'));var attributes=require(_0x6dab('0x9'));module['exports']=function(_0x481149,_0x1b7229){return _0x481149[_0x6dab('0xa')](_0x6dab('0xb'),attributes,{'tableName':_0x6dab('0xc'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0x6dab('0xd')],'type':_0x6dab('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x325777,_0x4035ea,_0x3774b2){var _0x205856=_0x481149[_0x6dab('0xf')];var _0x588a03=_0x325777[_0x6dab('0x10')]({'plain':!![]});if(_0x588a03[_0x6dab('0x11')]['toLowerCase']()==='in'||_0x588a03[_0x6dab('0x11')]['toLowerCase']()===_0x6dab('0x12')&&!_0x588a03[_0x6dab('0x13')]&&!_['isNil'](_0x588a03[_0x6dab('0x14')])){_0x205856[_0x6dab('0x15')][_0x6dab('0x16')]({'where':{'id':_0x588a03[_0x6dab('0x17')]}})[_0x6dab('0x18')](function(_0x6093a7){if(_0x6093a7){_0x6093a7[_0x6dab('0x19')]({'lastMsgAt':_0x588a03['createdAt'],'lastMsgDirection':_0x588a03[_0x6dab('0x11')][_0x6dab('0x1a')]()});}})['catch'](function(_0x540901){console[_0x6dab('0x1b')](_0x540901);});}_0x3774b2();}},'charset':'utf8mb4','collate':_0x6dab('0x1c')});};
\ No newline at end of file
index 7d6b9e8..2a41a48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ed7=['options','raw','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','request','then','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','info','result','catch','CreateChatMessage','ChatMessage','create','body'];(function(_0x57f6ac,_0xe1e134){var _0x55a690=function(_0x59e6ed){while(--_0x59e6ed){_0x57f6ac['push'](_0x57f6ac['shift']());}};_0x55a690(++_0xe1e134);}(_0x9ed7,0x1a6));var _0x79ed=function(_0x2cacef,_0xba1573){_0x2cacef=_0x2cacef-0x0;var _0x289ba6=_0x9ed7[_0x2cacef];return _0x289ba6;};'use strict';var _=require(_0x79ed('0x0'));var util=require(_0x79ed('0x1'));var moment=require(_0x79ed('0x2'));var BPromise=require('bluebird');var rs=require(_0x79ed('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x79ed('0x4'))['db'];var utils=require(_0x79ed('0x5'));var logger=require(_0x79ed('0x6'))(_0x79ed('0x7'));var config=require(_0x79ed('0x8'));var jayson=require(_0x79ed('0x9'));var client=jayson[_0x79ed('0xa')]['http']({'port':0x232a});config[_0x79ed('0xb')]=_[_0x79ed('0xc')](config[_0x79ed('0xb')],{'host':_0x79ed('0xd'),'port':0x18eb});var socket=require(_0x79ed('0xe'))(new Redis(config[_0x79ed('0xb')]));require(_0x79ed('0xf'))['register'](socket);function respondWithRpcPromise(_0xc900c6,_0x5d824b,_0x5ed6ba){return new BPromise(function(_0x47cf4f,_0x130dc8){return client[_0x79ed('0x10')](_0xc900c6,_0x5ed6ba)[_0x79ed('0x11')](function(_0xc84329){logger['info']('ChatMessage,\x20%s,\x20%s',_0x5d824b,_0x79ed('0x12'));logger[_0x79ed('0x13')](_0x79ed('0x14'),_0x5d824b,'request\x20sent',JSON[_0x79ed('0x15')](_0xc84329));if(_0xc84329[_0x79ed('0x16')]){if(_0xc84329[_0x79ed('0x16')][_0x79ed('0x17')]===0x1f4){logger[_0x79ed('0x16')](_0x79ed('0x18'),_0x5d824b,_0xc84329[_0x79ed('0x16')]['message']);return _0x130dc8(_0xc84329[_0x79ed('0x16')][_0x79ed('0x19')]);}logger[_0x79ed('0x16')](_0x79ed('0x18'),_0x5d824b,_0xc84329['error'][_0x79ed('0x19')]);return _0x47cf4f(_0xc84329[_0x79ed('0x16')][_0x79ed('0x19')]);}else{logger[_0x79ed('0x1a')](_0x79ed('0x18'),_0x5d824b,_0x79ed('0x12'));_0x47cf4f(_0xc84329[_0x79ed('0x1b')][_0x79ed('0x19')]);}})[_0x79ed('0x1c')](function(_0x22d2f7){logger[_0x79ed('0x16')](_0x79ed('0x18'),_0x5d824b,_0x22d2f7);_0x130dc8(_0x22d2f7);});});}exports[_0x79ed('0x1d')]=function(_0x5e7c58){var _0x11f5df=this;return new Promise(function(_0x58c32a,_0x3dc35){return db[_0x79ed('0x1e')][_0x79ed('0x1f')](_0x5e7c58[_0x79ed('0x20')],{'raw':_0x5e7c58['options']?_0x5e7c58[_0x79ed('0x21')][_0x79ed('0x22')]===undefined?!![]:![]:!![]})[_0x79ed('0x11')](function(_0x25d67e){logger[_0x79ed('0x1a')](_0x79ed('0x1d'),_0x5e7c58);logger[_0x79ed('0x13')](_0x79ed('0x1d'),_0x5e7c58,JSON[_0x79ed('0x15')](_0x25d67e));_0x58c32a(_0x25d67e);})['catch'](function(_0x572c85){logger[_0x79ed('0x16')](_0x79ed('0x1d'),_0x572c85[_0x79ed('0x19')],_0x5e7c58);_0x3dc35(_0x11f5df[_0x79ed('0x16')](0x1f4,_0x572c85[_0x79ed('0x19')]));});});};
\ No newline at end of file
+var _0x5496=['ChatMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','CreateChatMessage','create','body','options','raw','debug','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./chatMessage.socket','register','then','info'];(function(_0x1165ac,_0x77fe80){var _0x15d1d6=function(_0x2cd65a){while(--_0x2cd65a){_0x1165ac['push'](_0x1165ac['shift']());}};_0x15d1d6(++_0x77fe80);}(_0x5496,0x175));var _0x6549=function(_0x55f8ad,_0x3e1b30){_0x55f8ad=_0x55f8ad-0x0;var _0x51c55a=_0x5496[_0x55f8ad];return _0x51c55a;};'use strict';var _=require(_0x6549('0x0'));var util=require(_0x6549('0x1'));var moment=require(_0x6549('0x2'));var BPromise=require(_0x6549('0x3'));var rs=require(_0x6549('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6549('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6549('0x6'))(_0x6549('0x7'));var config=require(_0x6549('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6549('0x9')]({'port':0x232a});config[_0x6549('0xa')]=_['defaults'](config[_0x6549('0xa')],{'host':_0x6549('0xb'),'port':0x18eb});var socket=require(_0x6549('0xc'))(new Redis(config['redis']));require(_0x6549('0xd'))[_0x6549('0xe')](socket);function respondWithRpcPromise(_0x2ecce2,_0x135c2c,_0x1e5083){return new BPromise(function(_0x3e08a6,_0x50fa35){return client['request'](_0x2ecce2,_0x1e5083)[_0x6549('0xf')](function(_0xac828c){logger[_0x6549('0x10')](_0x6549('0x11'),_0x135c2c,_0x6549('0x12'));logger['debug']('ChatMessage,\x20%s,\x20%s,\x20%s',_0x135c2c,_0x6549('0x12'),JSON[_0x6549('0x13')](_0xac828c));if(_0xac828c['error']){if(_0xac828c[_0x6549('0x14')][_0x6549('0x15')]===0x1f4){logger[_0x6549('0x14')](_0x6549('0x11'),_0x135c2c,_0xac828c[_0x6549('0x14')][_0x6549('0x16')]);return _0x50fa35(_0xac828c['error']['message']);}logger[_0x6549('0x14')](_0x6549('0x11'),_0x135c2c,_0xac828c['error'][_0x6549('0x16')]);return _0x3e08a6(_0xac828c[_0x6549('0x14')][_0x6549('0x16')]);}else{logger[_0x6549('0x10')](_0x6549('0x11'),_0x135c2c,'request\x20sent');_0x3e08a6(_0xac828c['result'][_0x6549('0x16')]);}})['catch'](function(_0x56c15b){logger[_0x6549('0x14')](_0x6549('0x11'),_0x135c2c,_0x56c15b);_0x50fa35(_0x56c15b);});});}exports[_0x6549('0x17')]=function(_0xfca192){var _0x236fd9=this;return new Promise(function(_0x5ce3aa,_0x228117){return db['ChatMessage'][_0x6549('0x18')](_0xfca192[_0x6549('0x19')],{'raw':_0xfca192[_0x6549('0x1a')]?_0xfca192[_0x6549('0x1a')][_0x6549('0x1b')]===undefined?!![]:![]:!![]})[_0x6549('0xf')](function(_0x427b47){logger[_0x6549('0x10')](_0x6549('0x17'),_0xfca192);logger[_0x6549('0x1c')](_0x6549('0x17'),_0xfca192,JSON[_0x6549('0x13')](_0x427b47));_0x5ce3aa(_0x427b47);})[_0x6549('0x1d')](function(_0x5eeacd){logger[_0x6549('0x14')](_0x6549('0x17'),_0x5eeacd['message'],_0xfca192);_0x228117(_0x236fd9[_0x6549('0x14')](0x1f4,_0x5eeacd[_0x6549('0x16')]));});});};
\ No newline at end of file
index 61d276a..813b22c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cc=['update','emit','removeListener','length','chatMessage:','./chatMessage.events','save','remove'];(function(_0x1e48d3,_0x5d8c43){var _0x2852b1=function(_0x11d7b3){while(--_0x11d7b3){_0x1e48d3['push'](_0x1e48d3['shift']());}};_0x2852b1(++_0x5d8c43);}(_0xf3cc,0x10d));var _0xcf3c=function(_0x46939d,_0xc1b36d){_0x46939d=_0x46939d-0x0;var _0x5105e8=_0xf3cc[_0x46939d];return _0x5105e8;};'use strict';var ChatMessageEvents=require(_0xcf3c('0x0'));var events=[_0xcf3c('0x1'),_0xcf3c('0x2'),_0xcf3c('0x3')];function createListener(_0x48d2a6,_0x3b60ce){return function(_0x14ec9a){_0x3b60ce[_0xcf3c('0x4')](_0x48d2a6,_0x14ec9a);};}function removeListener(_0x582153,_0x2e0b47){return function(){ChatMessageEvents[_0xcf3c('0x5')](_0x582153,_0x2e0b47);};}exports['register']=function(_0x41f804){for(var _0x2b5cae=0x0,_0x35cb18=events[_0xcf3c('0x6')];_0x2b5cae<_0x35cb18;_0x2b5cae++){var _0x11deda=events[_0x2b5cae];var _0x147e12=createListener(_0xcf3c('0x7')+_0x11deda,_0x41f804);ChatMessageEvents['on'](_0x11deda,_0x147e12);}};
\ No newline at end of file
+var _0x3d6d=['update','emit','removeListener','length','./chatMessage.events','save','remove'];(function(_0x2efb2c,_0x253b0e){var _0x26a69a=function(_0x1ad3b0){while(--_0x1ad3b0){_0x2efb2c['push'](_0x2efb2c['shift']());}};_0x26a69a(++_0x253b0e);}(_0x3d6d,0xb3));var _0xd3d6=function(_0x484e47,_0x155a54){_0x484e47=_0x484e47-0x0;var _0x5c6ea5=_0x3d6d[_0x484e47];return _0x5c6ea5;};'use strict';var ChatMessageEvents=require(_0xd3d6('0x0'));var events=[_0xd3d6('0x1'),_0xd3d6('0x2'),_0xd3d6('0x3')];function createListener(_0x380c09,_0x1e1915){return function(_0x366f41){_0x1e1915[_0xd3d6('0x4')](_0x380c09,_0x366f41);};}function removeListener(_0x297bd6,_0x3d5e37){return function(){ChatMessageEvents[_0xd3d6('0x5')](_0x297bd6,_0x3d5e37);};}exports['register']=function(_0x5400f8){for(var _0x3f36=0x0,_0x1f02f5=events[_0xd3d6('0x6')];_0x3f36<_0x1f02f5;_0x3f36++){var _0x3c2a9b=events[_0x3f36];var _0x4356b7=createListener('chatMessage:'+_0x3c2a9b,_0x5400f8);ChatMessageEvents['on'](_0x3c2a9b,_0x4356b7);}};
\ No newline at end of file
index d580049..97daf8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf961=['show','post','tracked','chat','chatmessage:create','create','put','update','/:id/accept','accept','reject','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x290dc1,_0x27decd){var _0x13d597=function(_0x1f2d11){while(--_0x1f2d11){_0x290dc1['push'](_0x290dc1['shift']());}};_0x13d597(++_0x27decd);}(_0xf961,0x68));var _0x1f96=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0xf961[_0x243b2f];return _0xcb3c2d;};'use strict';var multer=require(_0x1f96('0x0'));var util=require(_0x1f96('0x1'));var path=require(_0x1f96('0x2'));var timeout=require(_0x1f96('0x3'));var express=require('express');var router=express[_0x1f96('0x4')]();var fs_extra=require(_0x1f96('0x5'));var auth=require(_0x1f96('0x6'));var interaction=require(_0x1f96('0x7'));var config=require(_0x1f96('0x8'));var controller=require(_0x1f96('0x9'));router[_0x1f96('0xa')]('/',auth[_0x1f96('0xb')](),controller[_0x1f96('0xc')]);router[_0x1f96('0xa')](_0x1f96('0xd'),auth['isAuthenticated'](),controller[_0x1f96('0xe')]);router[_0x1f96('0xa')](_0x1f96('0xf'),auth[_0x1f96('0xb')](),controller[_0x1f96('0x10')]);router[_0x1f96('0x11')]('/',auth[_0x1f96('0xb')](),interaction[_0x1f96('0x12')](_0x1f96('0x13'),_0x1f96('0x14')),controller[_0x1f96('0x15')]);router[_0x1f96('0x16')](_0x1f96('0xf'),controller[_0x1f96('0x17')]);router[_0x1f96('0x16')](_0x1f96('0x18'),auth[_0x1f96('0xb')](),controller[_0x1f96('0x19')]);router[_0x1f96('0x16')]('/:id/reject',auth[_0x1f96('0xb')](),controller[_0x1f96('0x1a')]);router[_0x1f96('0x1b')]('/:id',auth[_0x1f96('0xb')](),controller[_0x1f96('0x1c')]);module[_0x1f96('0x1d')]=router;
\ No newline at end of file
+var _0x5042=['/:id','show','post','chatmessage:create','update','put','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','isAuthenticated','get','/describe','describe'];(function(_0x44b8ac,_0xdf2fc3){var _0x71b2d4=function(_0x45a6e5){while(--_0x45a6e5){_0x44b8ac['push'](_0x44b8ac['shift']());}};_0x71b2d4(++_0xdf2fc3);}(_0x5042,0x138));var _0x2504=function(_0x19d15c,_0x3ab569){_0x19d15c=_0x19d15c-0x0;var _0x2999ea=_0x5042[_0x19d15c];return _0x2999ea;};'use strict';var multer=require(_0x2504('0x0'));var util=require(_0x2504('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2504('0x2'));var router=express[_0x2504('0x3')]();var fs_extra=require(_0x2504('0x4'));var auth=require(_0x2504('0x5'));var interaction=require(_0x2504('0x6'));var config=require(_0x2504('0x7'));var controller=require(_0x2504('0x8'));router['get']('/',auth[_0x2504('0x9')](),controller['index']);router[_0x2504('0xa')](_0x2504('0xb'),auth['isAuthenticated'](),controller[_0x2504('0xc')]);router[_0x2504('0xa')](_0x2504('0xd'),auth[_0x2504('0x9')](),controller[_0x2504('0xe')]);router[_0x2504('0xf')]('/',auth[_0x2504('0x9')](),interaction['tracked']('chat',_0x2504('0x10')),controller['create']);router['put'](_0x2504('0xd'),controller[_0x2504('0x11')]);router[_0x2504('0x12')](_0x2504('0x13'),auth[_0x2504('0x9')](),controller[_0x2504('0x14')]);router[_0x2504('0x12')](_0x2504('0x15'),auth['isAuthenticated'](),controller[_0x2504('0x16')]);router[_0x2504('0x17')](_0x2504('0xd'),auth['isAuthenticated'](),controller[_0x2504('0x18')]);module['exports']=router;
\ No newline at end of file
index 7005f07..a0270a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['medium','sequelize','TEXT'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x0b0e,0x187));var _0xe0b0=function(_0x409682,_0x370090){_0x409682=_0x409682-0x0;var _0x1ee901=_0x0b0e[_0x409682];return _0x1ee901;};'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
+var _0x0b0e=['medium','sequelize','TEXT'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1b9c2a,_0x50582e){_0x1b9c2a=_0x1b9c2a-0x0;var _0x21ab47=_0x0b0e[_0x1b9c2a];return _0x21ab47;};'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 a899547..a4a792b 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(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x7a54,0x106));var _0x47a5=function(_0x735ea2,_0x25d9cb){_0x735ea2=_0x735ea2-0x0;var _0x271167=_0x7a54[_0x735ea2];return _0x271167;};'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(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x7a54,0x106));var _0x47a5=function(_0x32ccc5,_0x5b5624){_0x32ccc5=_0x32ccc5-0x0;var _0x5680ce=_0x7a54[_0x32ccc5];return _0x5680ce;};'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 989456e..6609453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab13=['emit','hasOwnProperty','hook','exports','events','ChatOfflineMessage','save','update','remove'];(function(_0x13039,_0x19f3fe){var _0x52a0e3=function(_0x107cc3){while(--_0x107cc3){_0x13039['push'](_0x13039['shift']());}};_0x52a0e3(++_0x19f3fe);}(_0xab13,0x8b));var _0x3ab1=function(_0x11c913,_0x1c6f22){_0x11c913=_0x11c913-0x0;var _0x5ba6eb=_0xab13[_0x11c913];return _0x5ba6eb;};'use strict';var EventEmitter=require(_0x3ab1('0x0'));var ChatOfflineMessage=require('../../mysqldb')['db'][_0x3ab1('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3ab1('0x2'),'afterUpdate':_0x3ab1('0x3'),'afterDestroy':_0x3ab1('0x4')};function emitEvent(_0x59262c){return function(_0x49ff19,_0x87151e,_0xb90526){ChatOfflineMessageEvents[_0x3ab1('0x5')](_0x59262c+':'+_0x49ff19['id'],_0x49ff19);ChatOfflineMessageEvents[_0x3ab1('0x5')](_0x59262c,_0x49ff19);_0xb90526(null);};}for(var e in events){if(events[_0x3ab1('0x6')](e)){var event=events[e];ChatOfflineMessage[_0x3ab1('0x7')](e,emitEvent(event));}}module[_0x3ab1('0x8')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0xfee1=['update','remove','emit','hook','exports','../../mysqldb','ChatOfflineMessage','save'];(function(_0x377217,_0x26b013){var _0x26258d=function(_0x1e1894){while(--_0x1e1894){_0x377217['push'](_0x377217['shift']());}};_0x26258d(++_0x26b013);}(_0xfee1,0x85));var _0x1fee=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0xfee1[_0xac151d];return _0x111dba;};'use strict';var EventEmitter=require('events');var ChatOfflineMessage=require(_0x1fee('0x0'))['db'][_0x1fee('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1fee('0x2'),'afterUpdate':_0x1fee('0x3'),'afterDestroy':_0x1fee('0x4')};function emitEvent(_0x195be6){return function(_0x35f7ba,_0x110446,_0x3cc2f9){ChatOfflineMessageEvents['emit'](_0x195be6+':'+_0x35f7ba['id'],_0x35f7ba);ChatOfflineMessageEvents[_0x1fee('0x5')](_0x195be6,_0x35f7ba);_0x3cc2f9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x1fee('0x6')](e,emitEvent(event));}}module[_0x1fee('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 404aac7..5fa21c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b7d=['utf8mb4','./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','chat_offline_messages'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0b7d,0x79));var _0xd0b7=function(_0x50d471,_0x2d9086){_0x50d471=_0x50d471-0x0;var _0x214900=_0x0b7d[_0x50d471];return _0x214900;};'use strict';var attributes=require(_0xd0b7('0x0'));module[_0xd0b7('0x1')]=function(_0x4c21ee){return _0x4c21ee[_0xd0b7('0x2')](_0xd0b7('0x3'),attributes,{'tableName':_0xd0b7('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd0b7('0x5'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4853=['exports','define','chat_offline_messages','utf8mb4_unicode_ci','./chatOfflineMessage.attributes'];(function(_0xfcfc35,_0x41125e){var _0x13a3c7=function(_0x594a49){while(--_0x594a49){_0xfcfc35['push'](_0xfcfc35['shift']());}};_0x13a3c7(++_0x41125e);}(_0x4853,0xae));var _0x3485=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4853[_0xa464c9];return _0x3d73c4;};'use strict';var attributes=require(_0x3485('0x0'));module[_0x3485('0x1')]=function(_0x4a22c4){return _0x4a22c4[_0x3485('0x2')]('ChatOfflineMessage',attributes,{'tableName':_0x3485('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x3485('0x4')});};
\ No newline at end of file
index 38809d1..ce3f51b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde15=['http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client'];(function(_0x7a68b,_0x964789){var _0x110d37=function(_0x482401){while(--_0x482401){_0x7a68b['push'](_0x7a68b['shift']());}};_0x110d37(++_0x964789);}(_0xde15,0x148));var _0x5de1=function(_0x3b4db4,_0x322fb8){_0x3b4db4=_0x3b4db4-0x0;var _0x532180=_0xde15[_0x3b4db4];return _0x532180;};'use strict';var _=require(_0x5de1('0x0'));var util=require('util');var moment=require(_0x5de1('0x1'));var BPromise=require(_0x5de1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5de1('0x3'));var db=require(_0x5de1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5de1('0x5'))(_0x5de1('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5de1('0x7')][_0x5de1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x851ac3,_0x391db2,_0x1b3512){return new BPromise(function(_0x3baddc,_0x162350){return client[_0x5de1('0x9')](_0x851ac3,_0x1b3512)[_0x5de1('0xa')](function(_0x3c5133){logger[_0x5de1('0xb')](_0x5de1('0xc'),_0x391db2,_0x5de1('0xd'));logger['debug'](_0x5de1('0xe'),_0x391db2,_0x5de1('0xd'),JSON[_0x5de1('0xf')](_0x3c5133));if(_0x3c5133[_0x5de1('0x10')]){if(_0x3c5133[_0x5de1('0x10')][_0x5de1('0x11')]===0x1f4){logger[_0x5de1('0x10')](_0x5de1('0xc'),_0x391db2,_0x3c5133['error'][_0x5de1('0x12')]);return _0x162350(_0x3c5133['error']['message']);}logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x391db2,_0x3c5133[_0x5de1('0x10')][_0x5de1('0x12')]);return _0x3baddc(_0x3c5133[_0x5de1('0x10')]['message']);}else{logger[_0x5de1('0xb')]('ChatOfflineMessage,\x20%s,\x20%s',_0x391db2,_0x5de1('0xd'));_0x3baddc(_0x3c5133[_0x5de1('0x13')][_0x5de1('0x12')]);}})[_0x5de1('0x14')](function(_0x132a68){logger[_0x5de1('0x10')](_0x5de1('0xc'),_0x391db2,_0x132a68);_0x162350(_0x132a68);});});}
\ No newline at end of file
+var _0xd931=['code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0xd931,0xa4));var _0x1d93=function(_0x5d76cc,_0x195736){_0x5d76cc=_0x5d76cc-0x0;var _0x4acce4=_0xd931[_0x5d76cc];return _0x4acce4;};'use strict';var _=require(_0x1d93('0x0'));var util=require(_0x1d93('0x1'));var moment=require('moment');var BPromise=require(_0x1d93('0x2'));var rs=require(_0x1d93('0x3'));var fs=require('fs');var Redis=require(_0x1d93('0x4'));var db=require(_0x1d93('0x5'))['db'];var utils=require(_0x1d93('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x1d93('0x7'));var client=jayson[_0x1d93('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1e0d4a,_0x2010a8,_0x54129c){return new BPromise(function(_0xf74069,_0x5dcf51){return client['request'](_0x1e0d4a,_0x54129c)[_0x1d93('0x9')](function(_0x3cd236){logger[_0x1d93('0xa')](_0x1d93('0xb'),_0x2010a8,_0x1d93('0xc'));logger[_0x1d93('0xd')](_0x1d93('0xe'),_0x2010a8,'request\x20sent',JSON['stringify'](_0x3cd236));if(_0x3cd236['error']){if(_0x3cd236[_0x1d93('0xf')][_0x1d93('0x10')]===0x1f4){logger['error'](_0x1d93('0xb'),_0x2010a8,_0x3cd236[_0x1d93('0xf')][_0x1d93('0x11')]);return _0x5dcf51(_0x3cd236[_0x1d93('0xf')][_0x1d93('0x11')]);}logger[_0x1d93('0xf')](_0x1d93('0xb'),_0x2010a8,_0x3cd236[_0x1d93('0xf')][_0x1d93('0x11')]);return _0xf74069(_0x3cd236[_0x1d93('0xf')][_0x1d93('0x11')]);}else{logger[_0x1d93('0xa')](_0x1d93('0xb'),_0x2010a8,_0x1d93('0xc'));_0xf74069(_0x3cd236[_0x1d93('0x12')][_0x1d93('0x11')]);}})[_0x1d93('0x13')](function(_0x2de244){logger['error'](_0x1d93('0xb'),_0x2010a8,_0x2de244);_0x5dcf51(_0x2de244);});});}
\ No newline at end of file
index 9cf0b97..a00809c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73db=['/describe','/:id','show','post','create','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index'];(function(_0x500c0,_0xdb6a03){var _0xdd146f=function(_0x2e8090){while(--_0x2e8090){_0x500c0['push'](_0x500c0['shift']());}};_0xdd146f(++_0xdb6a03);}(_0x73db,0x1ec));var _0xb73d=function(_0x35984f,_0x499c98){_0x35984f=_0x35984f-0x0;var _0x5b7bb3=_0x73db[_0x35984f];return _0x5b7bb3;};'use strict';var multer=require(_0xb73d('0x0'));var util=require('util');var path=require(_0xb73d('0x1'));var timeout=require('connect-timeout');var express=require(_0xb73d('0x2'));var router=express[_0xb73d('0x3')]();var fs_extra=require(_0xb73d('0x4'));var auth=require(_0xb73d('0x5'));var interaction=require(_0xb73d('0x6'));var config=require(_0xb73d('0x7'));var controller=require(_0xb73d('0x8'));router[_0xb73d('0x9')]('/',auth[_0xb73d('0xa')](),controller[_0xb73d('0xb')]);router[_0xb73d('0x9')](_0xb73d('0xc'),auth[_0xb73d('0xa')](),controller['describe']);router[_0xb73d('0x9')](_0xb73d('0xd'),auth[_0xb73d('0xa')](),controller[_0xb73d('0xe')]);router[_0xb73d('0xf')]('/',auth[_0xb73d('0xa')](),controller[_0xb73d('0x10')]);router['put']('/:id',auth[_0xb73d('0xa')](),controller[_0xb73d('0x11')]);router[_0xb73d('0x12')](_0xb73d('0xd'),auth[_0xb73d('0xa')](),controller[_0xb73d('0x13')]);module[_0xb73d('0x14')]=router;
\ No newline at end of file
+var _0x4784=['put','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','post','create'];(function(_0x43b9e1,_0x22f2d0){var _0x249f31=function(_0xa9acd0){while(--_0xa9acd0){_0x43b9e1['push'](_0x43b9e1['shift']());}};_0x249f31(++_0x22f2d0);}(_0x4784,0xd4));var _0x4478=function(_0xbdd469,_0x2401aa){_0xbdd469=_0xbdd469-0x0;var _0x4f9586=_0x4784[_0xbdd469];return _0x4f9586;};'use strict';var multer=require(_0x4478('0x0'));var util=require(_0x4478('0x1'));var path=require(_0x4478('0x2'));var timeout=require(_0x4478('0x3'));var express=require(_0x4478('0x4'));var router=express['Router']();var fs_extra=require(_0x4478('0x5'));var auth=require(_0x4478('0x6'));var interaction=require(_0x4478('0x7'));var config=require('../../config/environment');var controller=require('./chatOfflineMessage.controller');router[_0x4478('0x8')]('/',auth[_0x4478('0x9')](),controller[_0x4478('0xa')]);router['get'](_0x4478('0xb'),auth[_0x4478('0x9')](),controller[_0x4478('0xc')]);router[_0x4478('0x8')](_0x4478('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x4478('0xe')]('/',auth['isAuthenticated'](),controller[_0x4478('0xf')]);router[_0x4478('0x10')](_0x4478('0xd'),auth[_0x4478('0x9')](),controller[_0x4478('0x11')]);router[_0x4478('0x12')](_0x4478('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b29ac00..22743af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ebd=['STRING','ENUM','mouseOver','timeout','INTEGER','sequelize','exports'];(function(_0x2c504e,_0x380208){var _0x2fc226=function(_0x4b893a){while(--_0x4b893a){_0x2c504e['push'](_0x2c504e['shift']());}};_0x2fc226(++_0x380208);}(_0x1ebd,0x155));var _0xd1eb=function(_0x5804d7,_0x2461bf){_0x5804d7=_0x5804d7-0x0;var _0x15cad0=_0x1ebd[_0x5804d7];return _0x15cad0;};'use strict';var Sequelize=require(_0xd1eb('0x0'));module[_0xd1eb('0x1')]={'name':{'type':Sequelize[_0xd1eb('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xd1eb('0x3')](_0xd1eb('0x4'),_0xd1eb('0x5')),'defaultValue':_0xd1eb('0x4')},'selector':{'type':Sequelize[_0xd1eb('0x2')]},'timeout':{'type':Sequelize[_0xd1eb('0x6')]}};
\ No newline at end of file
+var _0xcbb9=['STRING','ENUM','mouseOver','timeout','INTEGER','sequelize','exports'];(function(_0x5f0f73,_0x708c9b){var _0xada950=function(_0x426306){while(--_0x426306){_0x5f0f73['push'](_0x5f0f73['shift']());}};_0xada950(++_0x708c9b);}(_0xcbb9,0x124));var _0x9cbb=function(_0x5e2d3e,_0xc1f6ce){_0x5e2d3e=_0x5e2d3e-0x0;var _0x2abd8f=_0xcbb9[_0x5e2d3e];return _0x2abd8f;};'use strict';var Sequelize=require(_0x9cbb('0x0'));module[_0x9cbb('0x1')]={'name':{'type':Sequelize[_0x9cbb('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9cbb('0x3')](_0x9cbb('0x4'),_0x9cbb('0x5')),'defaultValue':_0x9cbb('0x4')},'selector':{'type':Sequelize[_0x9cbb('0x2')]},'timeout':{'type':Sequelize[_0x9cbb('0x6')]}};
\ No newline at end of file
index e891936..074981e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e85=['length','include','options','find','catch','create','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','send','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','attributes','fields'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x0e85,0x7c));var _0x50e8=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x0e85[_0x29d915];return _0x160f86;};'use strict';var emlformat=require(_0x50e8('0x0'));var rimraf=require(_0x50e8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x50e8('0x2'));var rp=require(_0x50e8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x50e8('0x4'));var path=require('path');var sox=require(_0x50e8('0x5'));var csv=require(_0x50e8('0x6'));var ejs=require(_0x50e8('0x7'));var fs=require('fs');var fs_extra=require(_0x50e8('0x8'));var _=require('lodash');var squel=require(_0x50e8('0x9'));var crypto=require(_0x50e8('0xa'));var jsforce=require(_0x50e8('0xb'));var deskjs=require(_0x50e8('0xc'));var toCsv=require(_0x50e8('0x6'));var querystring=require(_0x50e8('0xd'));var Papa=require('papaparse');var Redis=require(_0x50e8('0xe'));var authService=require(_0x50e8('0xf'));var qs=require(_0x50e8('0x10'));var as=require(_0x50e8('0x11'));var hardwareService=require(_0x50e8('0x12'));var logger=require(_0x50e8('0x13'))(_0x50e8('0x14'));var utils=require(_0x50e8('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x50e8('0x16'))['db'];function respondWithStatusCode(_0x24d381,_0x508377){_0x508377=_0x508377||0xcc;return function(_0x49e02f){if(_0x49e02f){return _0x24d381[_0x50e8('0x17')](_0x508377);}return _0x24d381[_0x50e8('0x18')](_0x508377)[_0x50e8('0x19')]();};}function respondWithResult(_0x473aa7,_0x54efd3){_0x54efd3=_0x54efd3||0xc8;return function(_0x18596f){if(_0x18596f){return _0x473aa7[_0x50e8('0x18')](_0x54efd3)[_0x50e8('0x1a')](_0x18596f);}};}function respondWithFilteredResult(_0x5c3baa,_0x5524a3){return function(_0x30a872){if(_0x30a872){var _0xf02b48=typeof _0x5524a3[_0x50e8('0x1b')]===_0x50e8('0x1c')&&typeof _0x5524a3[_0x50e8('0x1d')]===_0x50e8('0x1c');var _0x5642bf=_0x30a872['count'];var _0x441f25=_0xf02b48?0x0:_0x5524a3[_0x50e8('0x1b')];var _0x40d060=_0xf02b48?_0x30a872[_0x50e8('0x1e')]:_0x5524a3[_0x50e8('0x1b')]+_0x5524a3[_0x50e8('0x1d')];var _0x1a451d;if(_0x40d060>=_0x5642bf){_0x40d060=_0x5642bf;_0x1a451d=0xc8;}else{_0x1a451d=0xce;}_0x5c3baa['status'](_0x1a451d);return _0x5c3baa[_0x50e8('0x1f')]('Content-Range',_0x441f25+'-'+_0x40d060+'/'+_0x5642bf)[_0x50e8('0x1a')](_0x30a872);}return null;};}function patchUpdates(_0xe04a5c){return function(_0xd263d){try{jsonpatch[_0x50e8('0x20')](_0xd263d,_0xe04a5c,!![]);}catch(_0x46af8e){return BPromise['reject'](_0x46af8e);}return _0xd263d[_0x50e8('0x21')]();};}function saveUpdates(_0x1e4e0d,_0x58110d){return function(_0x31d23c){if(_0x31d23c){return _0x31d23c[_0x50e8('0x22')](_0x1e4e0d)['then'](function(_0x1ce7fc){return _0x1ce7fc;});}return null;};}function removeEntity(_0xe7e56c,_0x4f56b7){return function(_0x47a3d8){if(_0x47a3d8){return _0x47a3d8['destroy']()[_0x50e8('0x23')](function(){_0xe7e56c[_0x50e8('0x18')](0xcc)[_0x50e8('0x19')]();});}};}function handleEntityNotFound(_0x371a1f,_0xc2f832){return function(_0x13b6e9){if(!_0x13b6e9){_0x371a1f['sendStatus'](0x194);}return _0x13b6e9;};}function handleError(_0x3a6442,_0x396611){_0x396611=_0x396611||0x1f4;return function(_0x4b3a09){logger[_0x50e8('0x24')](_0x4b3a09[_0x50e8('0x25')]);if(_0x4b3a09[_0x50e8('0x26')]){delete _0x4b3a09[_0x50e8('0x26')];}_0x3a6442['status'](_0x396611)[_0x50e8('0x27')](_0x4b3a09);};}exports['show']=function(_0x30fedf,_0x39c0c6){var _0x42bbef={'raw':!![],'where':{'id':_0x30fedf[_0x50e8('0x28')]['id']}},_0x4f0b88={};_0x4f0b88[_0x50e8('0x29')]=_[_0x50e8('0x2a')](db[_0x50e8('0x2b')][_0x50e8('0x2c')]);_0x4f0b88[_0x50e8('0x2d')]=_[_0x50e8('0x2a')](_0x30fedf['query']);_0x4f0b88[_0x50e8('0x2e')]=_[_0x50e8('0x2f')](_0x4f0b88['model'],_0x4f0b88['query']);_0x42bbef[_0x50e8('0x30')]=_[_0x50e8('0x2f')](_0x4f0b88[_0x50e8('0x29')],qs['fields'](_0x30fedf['query'][_0x50e8('0x31')]));_0x42bbef[_0x50e8('0x30')]=_0x42bbef['attributes'][_0x50e8('0x32')]?_0x42bbef[_0x50e8('0x30')]:_0x4f0b88[_0x50e8('0x29')];if(_0x30fedf[_0x50e8('0x2d')]['includeAll']){_0x42bbef[_0x50e8('0x33')]=[{'all':!![]}];}_0x42bbef=_['merge']({},_0x42bbef,_0x30fedf[_0x50e8('0x34')]);return db[_0x50e8('0x2b')][_0x50e8('0x35')](_0x42bbef)['then'](handleEntityNotFound(_0x39c0c6,null))[_0x50e8('0x23')](respondWithResult(_0x39c0c6,null))[_0x50e8('0x36')](handleError(_0x39c0c6,null));};exports['create']=function(_0x245b45,_0x1c2fdb){return db[_0x50e8('0x2b')][_0x50e8('0x37')](_0x245b45['body'],{})[_0x50e8('0x23')](respondWithResult(_0x1c2fdb,0xc9))[_0x50e8('0x36')](handleError(_0x1c2fdb,null));};exports[_0x50e8('0x22')]=function(_0x4e2a37,_0x5e556c){if(_0x4e2a37[_0x50e8('0x38')]['id']){delete _0x4e2a37[_0x50e8('0x38')]['id'];}return db[_0x50e8('0x2b')]['find']({'where':{'id':_0x4e2a37['params']['id']}})['then'](handleEntityNotFound(_0x5e556c,null))[_0x50e8('0x23')](saveUpdates(_0x4e2a37[_0x50e8('0x38')],null))[_0x50e8('0x23')](respondWithResult(_0x5e556c,null))[_0x50e8('0x36')](handleError(_0x5e556c,null));};exports[_0x50e8('0x39')]=function(_0x18986f,_0xb566c2){return db[_0x50e8('0x2b')][_0x50e8('0x35')]({'where':{'id':_0x18986f[_0x50e8('0x28')]['id']}})['then'](handleEntityNotFound(_0xb566c2,null))[_0x50e8('0x23')](removeEntity(_0xb566c2,null))[_0x50e8('0x36')](handleError(_0xb566c2,null));};
\ No newline at end of file
+var _0x16d8=['api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','sendStatus','error','name','send','show','params','model','ChatProactiveAction','rawAttributes','query','keys','filters','intersection','fields','attributes','length','includeAll','include','merge','find','create','catch','update','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x1dc8f8,_0x1d5fb8){var _0x271cd0=function(_0x449fea){while(--_0x449fea){_0x1dc8f8['push'](_0x1dc8f8['shift']());}};_0x271cd0(++_0x1d5fb8);}(_0x16d8,0xa3));var _0x816d=function(_0x2a9f06,_0x2d9036){_0x2a9f06=_0x2a9f06-0x0;var _0x3cb8fb=_0x16d8[_0x2a9f06];return _0x3cb8fb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x816d('0x0'));var zipdir=require(_0x816d('0x1'));var jsonpatch=require(_0x816d('0x2'));var rp=require(_0x816d('0x3'));var moment=require(_0x816d('0x4'));var BPromise=require(_0x816d('0x5'));var Mustache=require(_0x816d('0x6'));var util=require(_0x816d('0x7'));var path=require(_0x816d('0x8'));var sox=require('sox');var csv=require(_0x816d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x816d('0xa'));var _=require(_0x816d('0xb'));var squel=require(_0x816d('0xc'));var crypto=require(_0x816d('0xd'));var jsforce=require(_0x816d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x816d('0x9'));var querystring=require(_0x816d('0xf'));var Papa=require(_0x816d('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x816d('0x11'));var hardwareService=require(_0x816d('0x12'));var logger=require(_0x816d('0x13'))(_0x816d('0x14'));var utils=require('../../config/utils');var config=require(_0x816d('0x15'));var licenseUtil=require(_0x816d('0x16'));var db=require(_0x816d('0x17'))['db'];function respondWithStatusCode(_0x58de02,_0x45dfa4){_0x45dfa4=_0x45dfa4||0xcc;return function(_0x10cc6f){if(_0x10cc6f){return _0x58de02['sendStatus'](_0x45dfa4);}return _0x58de02[_0x816d('0x18')](_0x45dfa4)[_0x816d('0x19')]();};}function respondWithResult(_0x58f22b,_0xc9a9c7){_0xc9a9c7=_0xc9a9c7||0xc8;return function(_0x3a50c8){if(_0x3a50c8){return _0x58f22b['status'](_0xc9a9c7)[_0x816d('0x1a')](_0x3a50c8);}};}function respondWithFilteredResult(_0xa2c0f,_0x2f3564){return function(_0x1ac493){if(_0x1ac493){var _0x61942=typeof _0x2f3564[_0x816d('0x1b')]===_0x816d('0x1c')&&typeof _0x2f3564[_0x816d('0x1d')]===_0x816d('0x1c');var _0x525c3b=_0x1ac493[_0x816d('0x1e')];var _0x2cee1c=_0x61942?0x0:_0x2f3564[_0x816d('0x1b')];var _0x52be88=_0x61942?_0x1ac493[_0x816d('0x1e')]:_0x2f3564[_0x816d('0x1b')]+_0x2f3564[_0x816d('0x1d')];var _0x8bea23;if(_0x52be88>=_0x525c3b){_0x52be88=_0x525c3b;_0x8bea23=0xc8;}else{_0x8bea23=0xce;}_0xa2c0f[_0x816d('0x18')](_0x8bea23);return _0xa2c0f[_0x816d('0x1f')]('Content-Range',_0x2cee1c+'-'+_0x52be88+'/'+_0x525c3b)[_0x816d('0x1a')](_0x1ac493);}return null;};}function patchUpdates(_0x3187b8){return function(_0x11ff2b){try{jsonpatch[_0x816d('0x20')](_0x11ff2b,_0x3187b8,!![]);}catch(_0x128865){return BPromise[_0x816d('0x21')](_0x128865);}return _0x11ff2b[_0x816d('0x22')]();};}function saveUpdates(_0x3b57dc,_0x5a15b1){return function(_0x430009){if(_0x430009){return _0x430009['update'](_0x3b57dc)[_0x816d('0x23')](function(_0x2d4ff2){return _0x2d4ff2;});}return null;};}function removeEntity(_0x24ffd5,_0x22ee4c){return function(_0x1cf6db){if(_0x1cf6db){return _0x1cf6db[_0x816d('0x24')]()[_0x816d('0x23')](function(){_0x24ffd5[_0x816d('0x18')](0xcc)[_0x816d('0x19')]();});}};}function handleEntityNotFound(_0x3d4410,_0x2d2d98){return function(_0xf79dfd){if(!_0xf79dfd){_0x3d4410[_0x816d('0x25')](0x194);}return _0xf79dfd;};}function handleError(_0x8bdca7,_0x3133d4){_0x3133d4=_0x3133d4||0x1f4;return function(_0x19e167){logger[_0x816d('0x26')](_0x19e167['stack']);if(_0x19e167[_0x816d('0x27')]){delete _0x19e167[_0x816d('0x27')];}_0x8bdca7[_0x816d('0x18')](_0x3133d4)[_0x816d('0x28')](_0x19e167);};}exports[_0x816d('0x29')]=function(_0x54c775,_0x5baba1){var _0x5f3e4f={'raw':!![],'where':{'id':_0x54c775[_0x816d('0x2a')]['id']}},_0x45cd32={};_0x45cd32[_0x816d('0x2b')]=_['keys'](db[_0x816d('0x2c')][_0x816d('0x2d')]);_0x45cd32[_0x816d('0x2e')]=_[_0x816d('0x2f')](_0x54c775['query']);_0x45cd32[_0x816d('0x30')]=_[_0x816d('0x31')](_0x45cd32[_0x816d('0x2b')],_0x45cd32['query']);_0x5f3e4f['attributes']=_['intersection'](_0x45cd32['model'],qs[_0x816d('0x32')](_0x54c775['query'][_0x816d('0x32')]));_0x5f3e4f[_0x816d('0x33')]=_0x5f3e4f[_0x816d('0x33')][_0x816d('0x34')]?_0x5f3e4f[_0x816d('0x33')]:_0x45cd32['model'];if(_0x54c775['query'][_0x816d('0x35')]){_0x5f3e4f[_0x816d('0x36')]=[{'all':!![]}];}_0x5f3e4f=_[_0x816d('0x37')]({},_0x5f3e4f,_0x54c775['options']);return db[_0x816d('0x2c')][_0x816d('0x38')](_0x5f3e4f)[_0x816d('0x23')](handleEntityNotFound(_0x5baba1,null))[_0x816d('0x23')](respondWithResult(_0x5baba1,null))['catch'](handleError(_0x5baba1,null));};exports[_0x816d('0x39')]=function(_0x236558,_0xeaaa7c){return db[_0x816d('0x2c')][_0x816d('0x39')](_0x236558['body'],{})[_0x816d('0x23')](respondWithResult(_0xeaaa7c,0xc9))[_0x816d('0x3a')](handleError(_0xeaaa7c,null));};exports[_0x816d('0x3b')]=function(_0x15bf0e,_0x2c4711){if(_0x15bf0e[_0x816d('0x3c')]['id']){delete _0x15bf0e[_0x816d('0x3c')]['id'];}return db['ChatProactiveAction'][_0x816d('0x38')]({'where':{'id':_0x15bf0e[_0x816d('0x2a')]['id']}})[_0x816d('0x23')](handleEntityNotFound(_0x2c4711,null))[_0x816d('0x23')](saveUpdates(_0x15bf0e[_0x816d('0x3c')],null))[_0x816d('0x23')](respondWithResult(_0x2c4711,null))[_0x816d('0x3a')](handleError(_0x2c4711,null));};exports[_0x816d('0x24')]=function(_0x1850e9,_0x536110){return db[_0x816d('0x2c')][_0x816d('0x38')]({'where':{'id':_0x1850e9[_0x816d('0x2a')]['id']}})[_0x816d('0x23')](handleEntityNotFound(_0x536110,null))['then'](removeEntity(_0x536110,null))[_0x816d('0x3a')](handleError(_0x536110,null));};
\ No newline at end of file
index 9466792..ff50e87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa04e=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','ChatProactiveAction','chat_proactive_actions'];(function(_0x167a7,_0x386464){var _0x32991a=function(_0xf6d675){while(--_0xf6d675){_0x167a7['push'](_0x167a7['shift']());}};_0x32991a(++_0x386464);}(_0xa04e,0x1ad));var _0xea04=function(_0x53a142,_0x3498b0){_0x53a142=_0x53a142-0x0;var _0x461127=_0xa04e[_0x53a142];return _0x461127;};'use strict';var _=require(_0xea04('0x0'));var util=require(_0xea04('0x1'));var logger=require(_0xea04('0x2'))(_0xea04('0x3'));var moment=require(_0xea04('0x4'));var BPromise=require(_0xea04('0x5'));var rp=require(_0xea04('0x6'));var fs=require('fs');var path=require(_0xea04('0x7'));var rimraf=require('rimraf');var config=require(_0xea04('0x8'));var attributes=require('./chatProactiveAction.attributes');module[_0xea04('0x9')]=function(_0x30d672,_0x973b81){return _0x30d672[_0xea04('0xa')](_0xea04('0xb'),attributes,{'tableName':_0xea04('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9683=['../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x5a8367,_0xad015e){var _0x3fce63=function(_0x22d2f2){while(--_0x22d2f2){_0x5a8367['push'](_0x5a8367['shift']());}};_0x3fce63(++_0xad015e);}(_0x9683,0x76));var _0x3968=function(_0x43f571,_0x51d333){_0x43f571=_0x43f571-0x0;var _0x395260=_0x9683[_0x43f571];return _0x395260;};'use strict';var _=require(_0x3968('0x0'));var util=require(_0x3968('0x1'));var logger=require(_0x3968('0x2'))(_0x3968('0x3'));var moment=require(_0x3968('0x4'));var BPromise=require('bluebird');var rp=require(_0x3968('0x5'));var fs=require('fs');var path=require(_0x3968('0x6'));var rimraf=require(_0x3968('0x7'));var config=require(_0x3968('0x8'));var attributes=require(_0x3968('0x9'));module[_0x3968('0xa')]=function(_0x3d0b3c,_0x470cf1){return _0x3d0b3c[_0x3968('0xb')](_0x3968('0xc'),attributes,{'tableName':_0x3968('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca991e4..7851781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbce4=['code','ChatProactiveAction,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','request\x20sent','stringify','error'];(function(_0x11e05d,_0x3a4491){var _0x335588=function(_0x35ec3f){while(--_0x35ec3f){_0x11e05d['push'](_0x11e05d['shift']());}};_0x335588(++_0x3a4491);}(_0xbce4,0x83));var _0x4bce=function(_0x4c13ca,_0xfad5da){_0x4c13ca=_0x4c13ca-0x0;var _0x17b3d6=_0xbce4[_0x4c13ca];return _0x17b3d6;};'use strict';var _=require(_0x4bce('0x0'));var util=require(_0x4bce('0x1'));var moment=require('moment');var BPromise=require(_0x4bce('0x2'));var rs=require(_0x4bce('0x3'));var fs=require('fs');var Redis=require(_0x4bce('0x4'));var db=require(_0x4bce('0x5'))['db'];var utils=require(_0x4bce('0x6'));var logger=require(_0x4bce('0x7'))(_0x4bce('0x8'));var config=require(_0x4bce('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4bce('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x40e59c,_0x1df39e,_0x14b723){return new BPromise(function(_0x3f193b,_0x2a33f8){return client[_0x4bce('0xb')](_0x40e59c,_0x14b723)['then'](function(_0x3164a1){logger[_0x4bce('0xc')]('ChatProactiveAction,\x20%s,\x20%s',_0x1df39e,_0x4bce('0xd'));logger['debug']('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x1df39e,_0x4bce('0xd'),JSON[_0x4bce('0xe')](_0x3164a1));if(_0x3164a1[_0x4bce('0xf')]){if(_0x3164a1[_0x4bce('0xf')][_0x4bce('0x10')]===0x1f4){logger[_0x4bce('0xf')](_0x4bce('0x11'),_0x1df39e,_0x3164a1[_0x4bce('0xf')][_0x4bce('0x12')]);return _0x2a33f8(_0x3164a1[_0x4bce('0xf')][_0x4bce('0x12')]);}logger['error'](_0x4bce('0x11'),_0x1df39e,_0x3164a1['error'][_0x4bce('0x12')]);return _0x3f193b(_0x3164a1['error'][_0x4bce('0x12')]);}else{logger['info'](_0x4bce('0x11'),_0x1df39e,_0x4bce('0xd'));_0x3f193b(_0x3164a1[_0x4bce('0x13')]['message']);}})[_0x4bce('0x14')](function(_0x58d449){logger[_0x4bce('0xf')](_0x4bce('0x11'),_0x1df39e,_0x58d449);_0x2a33f8(_0x58d449);});});}
\ No newline at end of file
+var _0x3955=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','client','http','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x59cc8b,_0x2709a8){var _0x4924eb=function(_0x37b262){while(--_0x37b262){_0x59cc8b['push'](_0x59cc8b['shift']());}};_0x4924eb(++_0x2709a8);}(_0x3955,0x7d));var _0x5395=function(_0x45d82b,_0x3e95a8){_0x45d82b=_0x45d82b-0x0;var _0x32a727=_0x3955[_0x45d82b];return _0x32a727;};'use strict';var _=require(_0x5395('0x0'));var util=require(_0x5395('0x1'));var moment=require(_0x5395('0x2'));var BPromise=require(_0x5395('0x3'));var rs=require(_0x5395('0x4'));var fs=require('fs');var Redis=require(_0x5395('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5395('0x6'));var logger=require(_0x5395('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5395('0x8')][_0x5395('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2975e8,_0x20650c,_0x3cf2f3){return new BPromise(function(_0x56020f,_0x28d162){return client['request'](_0x2975e8,_0x3cf2f3)[_0x5395('0xa')](function(_0x15faf8){logger[_0x5395('0xb')](_0x5395('0xc'),_0x20650c,_0x5395('0xd'));logger['debug'](_0x5395('0xe'),_0x20650c,_0x5395('0xd'),JSON[_0x5395('0xf')](_0x15faf8));if(_0x15faf8[_0x5395('0x10')]){if(_0x15faf8[_0x5395('0x10')][_0x5395('0x11')]===0x1f4){logger[_0x5395('0x10')](_0x5395('0xc'),_0x20650c,_0x15faf8['error']['message']);return _0x28d162(_0x15faf8['error'][_0x5395('0x12')]);}logger[_0x5395('0x10')]('ChatProactiveAction,\x20%s,\x20%s',_0x20650c,_0x15faf8[_0x5395('0x10')][_0x5395('0x12')]);return _0x56020f(_0x15faf8[_0x5395('0x10')][_0x5395('0x12')]);}else{logger['info']('ChatProactiveAction,\x20%s,\x20%s',_0x20650c,_0x5395('0xd'));_0x56020f(_0x15faf8[_0x5395('0x13')]['message']);}})[_0x5395('0x14')](function(_0x3ef405){logger['error'](_0x5395('0xc'),_0x20650c,_0x3ef405);_0x28d162(_0x3ef405);});});}
\ No newline at end of file
index b24f071..2dfdb9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','isAuthenticated','post','create','put','update','delete','/:id','destroy','exports'];(function(_0xf85f5a,_0x4e8dae){var _0x48408a=function(_0x1ce554){while(--_0x1ce554){_0xf85f5a['push'](_0xf85f5a['shift']());}};_0x48408a(++_0x4e8dae);}(_0xd8fb,0x99));var _0xbd8f=function(_0x590789,_0x13eb39){_0x590789=_0x590789-0x0;var _0x1a4abe=_0xd8fb[_0x590789];return _0x1a4abe;};'use strict';var multer=require(_0xbd8f('0x0'));var util=require(_0xbd8f('0x1'));var path=require(_0xbd8f('0x2'));var timeout=require(_0xbd8f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xbd8f('0x4'));var interaction=require(_0xbd8f('0x5'));var config=require('../../config/environment');var controller=require(_0xbd8f('0x6'));router[_0xbd8f('0x7')]('/:id',auth[_0xbd8f('0x8')](),controller['show']);router[_0xbd8f('0x9')]('/',auth['isAuthenticated'](),controller[_0xbd8f('0xa')]);router[_0xbd8f('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xbd8f('0xc')]);router[_0xbd8f('0xd')](_0xbd8f('0xe'),auth['isAuthenticated'](),controller[_0xbd8f('0xf')]);module[_0xbd8f('0x10')]=router;
\ No newline at end of file
+var _0x5d58=['/:id','isAuthenticated','show','create','update','delete','Router','fs-extra','../../components/interaction/service','../../config/environment','get'];(function(_0x27fb50,_0x33a207){var _0x24a89a=function(_0x501e28){while(--_0x501e28){_0x27fb50['push'](_0x27fb50['shift']());}};_0x24a89a(++_0x33a207);}(_0x5d58,0x187));var _0x85d5=function(_0x433196,_0xa5e2c3){_0x433196=_0x433196-0x0;var _0x3d3205=_0x5d58[_0x433196];return _0x3d3205;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x85d5('0x0')]();var fs_extra=require(_0x85d5('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x85d5('0x2'));var config=require(_0x85d5('0x3'));var controller=require('./chatProactiveAction.controller');router[_0x85d5('0x4')](_0x85d5('0x5'),auth[_0x85d5('0x6')](),controller[_0x85d5('0x7')]);router['post']('/',auth[_0x85d5('0x6')](),controller[_0x85d5('0x8')]);router['put'](_0x85d5('0x5'),auth['isAuthenticated'](),controller[_0x85d5('0x9')]);router[_0x85d5('0xa')](_0x85d5('0x5'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index a93012f..579e081 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0021=['INTEGER','ENUM','rrmemory','roundrobin','sequelize','exports','STRING','name'];(function(_0x3de7e0,_0x28cbff){var _0x11d0b3=function(_0xd95412){while(--_0xd95412){_0x3de7e0['push'](_0x3de7e0['shift']());}};_0x11d0b3(++_0x28cbff);}(_0x0021,0x1dc));var _0x1002=function(_0x28014d,_0x383e2f){_0x28014d=_0x28014d-0x0;var _0x2572cc=_0x0021[_0x28014d];return _0x2572cc;};'use strict';var Sequelize=require(_0x1002('0x0'));module[_0x1002('0x1')]={'name':{'type':Sequelize[_0x1002('0x2')],'unique':_0x1002('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x1002('0x2')]},'timeout':{'type':Sequelize[_0x1002('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1002('0x5')](_0x1002('0x6'),'beepall',_0x1002('0x7'))}};
\ No newline at end of file
+var _0x5836=['sequelize','STRING','INTEGER','rrmemory','beepall'];(function(_0x337741,_0x42b623){var _0x12ea8a=function(_0x2feefc){while(--_0x2feefc){_0x337741['push'](_0x337741['shift']());}};_0x12ea8a(++_0x42b623);}(_0x5836,0xa0));var _0x6583=function(_0x46b295,_0x554b00){_0x46b295=_0x46b295-0x0;var _0x1c4c10=_0x5836[_0x46b295];return _0x1c4c10;};'use strict';var Sequelize=require(_0x6583('0x0'));module['exports']={'name':{'type':Sequelize[_0x6583('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x6583('0x1')]},'timeout':{'type':Sequelize[_0x6583('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x6583('0x3'),_0x6583('0x4'),'roundrobin')}};
\ No newline at end of file
index 0b24dfe..46fa368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29a4=['User','findAndCountAll','chatPause','createdAt','rows','format','%s/%s','SIP','getTeams','findOne','Team','addTeams','ids','Agents','online','voicePause','flatMap','transaction','each','forEach','userChatQueue:save','removeTeams','select','field','from','team_has_chat_queues','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','every','TeamId','compact','value','userChatQueue:remove','addAgents','omit','emit','removeAgents','isArray','getAgents','lodash','ioredis','../../config/logger','../../config/environment','defaults','redis','localhost','socket.io-emitter','./chatQueue.socket','register','status','end','offset','undefined','limit','count','set','Content-Range','update','then','destroy','ChatQueues','UserProfileResource','sendStatus','error','stack','name','send','map','ChatQueue','rawAttributes','fieldName','key','getOptions','where','include','query','findAll','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','options','find','create','body','user','get','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','hasOwnProperty','nolimit','order','sort','pick','ChatQueueId','filter','merge','UserChatQueue'];(function(_0x104212,_0x43f4eb){var _0x1376dc=function(_0x4dc731){while(--_0x4dc731){_0x104212['push'](_0x104212['shift']());}};_0x1376dc(++_0x43f4eb);}(_0x29a4,0x1ef));var _0x429a=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0x29a4[_0x341e0f];return _0x59555a;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0x429a('0x0'));var squel=require('squel');var Redis=require(_0x429a('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x429a('0x2'))('api');var config=require(_0x429a('0x3'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x429a('0x4')](config[_0x429a('0x5')],{'host':_0x429a('0x6'),'port':0x18eb});var socket=require(_0x429a('0x7'))(new Redis(config['redis']));require(_0x429a('0x8'))[_0x429a('0x9')](socket);function respondWithStatusCode(_0x2a31e1,_0x43f526){_0x43f526=_0x43f526||0xcc;return function(_0x4532cd){if(_0x4532cd){return _0x2a31e1['sendStatus'](_0x43f526);}return _0x2a31e1[_0x429a('0xa')](_0x43f526)[_0x429a('0xb')]();};}function respondWithResult(_0x1f9a06,_0x3f70b0){_0x3f70b0=_0x3f70b0||0xc8;return function(_0x36bb71){if(_0x36bb71){return _0x1f9a06[_0x429a('0xa')](_0x3f70b0)['json'](_0x36bb71);}};}function respondWithFilteredResult(_0x564183,_0x5e86f3){return function(_0x314e1a){if(_0x314e1a){var _0x92cecb=typeof _0x5e86f3[_0x429a('0xc')]===_0x429a('0xd')&&typeof _0x5e86f3[_0x429a('0xe')]==='undefined';var _0x2a42ea=_0x314e1a[_0x429a('0xf')];var _0x2f4dcb=_0x92cecb?0x0:_0x5e86f3[_0x429a('0xc')];var _0x5b9ad6=_0x92cecb?_0x314e1a[_0x429a('0xf')]:_0x5e86f3[_0x429a('0xc')]+_0x5e86f3[_0x429a('0xe')];var _0x1d30a2;if(_0x5b9ad6>=_0x2a42ea){_0x5b9ad6=_0x2a42ea;_0x1d30a2=0xc8;}else{_0x1d30a2=0xce;}_0x564183['status'](_0x1d30a2);return _0x564183[_0x429a('0x10')](_0x429a('0x11'),_0x2f4dcb+'-'+_0x5b9ad6+'/'+_0x2a42ea)['json'](_0x314e1a);}return null;};}function saveUpdates(_0x5a0ee1){return function(_0x38a913){if(_0x38a913){return _0x38a913[_0x429a('0x12')](_0x5a0ee1)[_0x429a('0x13')](function(_0x19a335){return _0x19a335;});}return null;};}function removeEntity(_0x17c0f8){return function(_0x4b48d5){if(_0x4b48d5){return _0x4b48d5[_0x429a('0x14')]()[_0x429a('0x13')](function(){var _0x22d3d9=_0x4b48d5['get']({'plain':!![]});var _0xc92608=_0x429a('0x15');return db[_0x429a('0x16')]['destroy']({'where':{'type':_0xc92608,'resourceId':_0x22d3d9['id']}})['then'](function(){return _0x4b48d5;});})[_0x429a('0x13')](function(){_0x17c0f8['status'](0xcc)[_0x429a('0xb')]();});}};}function handleEntityNotFound(_0x592b1e){return function(_0x408f5b){if(!_0x408f5b){_0x592b1e[_0x429a('0x17')](0x194);}return _0x408f5b;};}function handleError(_0xd014a7,_0x11f488){_0x11f488=_0x11f488||0x1f4;return function(_0x460943){logger[_0x429a('0x18')](_0x460943[_0x429a('0x19')]);if(_0x460943['name']){delete _0x460943[_0x429a('0x1a')];}_0xd014a7['status'](_0x11f488)[_0x429a('0x1b')](_0x460943);};}exports['index']=function(_0x444bed,_0x465ba4){var _0x7547e8={};var _0x7353ca={'count':0x0,'rows':[]};var _0x14e24c=_[_0x429a('0x1c')](db[_0x429a('0x1d')][_0x429a('0x1e')],function(_0x50d4b8){return{'name':_0x50d4b8[_0x429a('0x1f')],'type':_0x50d4b8['type'][_0x429a('0x20')]};});_0x7547e8=qs[_0x429a('0x21')](_0x14e24c,_0x444bed);var _0x46b056={'where':_0x7547e8[_0x429a('0x22')]};return db[_0x429a('0x1d')][_0x429a('0xf')](_0x46b056)[_0x429a('0x13')](function(_0x2d5e1a){_0x7353ca[_0x429a('0xf')]=_0x2d5e1a;_0x7547e8['include']=qs[_0x429a('0x23')](_0x444bed[_0x429a('0x24')]);return db[_0x429a('0x1d')][_0x429a('0x25')](_0x7547e8);})[_0x429a('0x13')](function(_0x1e6bfa){_0x7353ca['rows']=_0x1e6bfa;return _0x7353ca;})[_0x429a('0x13')](respondWithFilteredResult(_0x465ba4,_0x7547e8))['catch'](handleError(_0x465ba4,null));};exports[_0x429a('0x26')]=function(_0x4af095,_0x228f71){var _0x1c9a9d={'raw':!![],'where':{'id':_0x4af095[_0x429a('0x27')]['id']}},_0x52f666={};_0x52f666[_0x429a('0x28')]=_[_0x429a('0x29')](db['ChatQueue']['rawAttributes']);_0x52f666[_0x429a('0x24')]=_['keys'](_0x4af095[_0x429a('0x24')]);_0x52f666[_0x429a('0x2a')]=_[_0x429a('0x2b')](_0x52f666[_0x429a('0x28')],_0x52f666[_0x429a('0x24')]);_0x1c9a9d[_0x429a('0x2c')]=_[_0x429a('0x2b')](_0x52f666[_0x429a('0x28')],qs[_0x429a('0x2d')](_0x4af095[_0x429a('0x24')][_0x429a('0x2d')]));_0x1c9a9d['attributes']=_0x1c9a9d['attributes'][_0x429a('0x2e')]?_0x1c9a9d[_0x429a('0x2c')]:_0x52f666['model'];if(_0x4af095[_0x429a('0x24')][_0x429a('0x2f')]){_0x1c9a9d[_0x429a('0x23')]=[{'all':!![]}];}_0x1c9a9d=_['merge']({},_0x1c9a9d,_0x4af095[_0x429a('0x30')]);return db[_0x429a('0x1d')][_0x429a('0x31')](_0x1c9a9d)['then'](handleEntityNotFound(_0x228f71,null))[_0x429a('0x13')](respondWithResult(_0x228f71,null))['catch'](handleError(_0x228f71,null));};exports[_0x429a('0x32')]=function(_0xabd178,_0x1b6b32){return db[_0x429a('0x1d')][_0x429a('0x32')](_0xabd178[_0x429a('0x33')],{})[_0x429a('0x13')](function(_0x2ff172){var _0x2f6595=_0xabd178[_0x429a('0x34')][_0x429a('0x35')]({'plain':!![]});if(!_0x2f6595)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f6595['role']===_0x429a('0x34')){var _0xb6c3e9=_0x2ff172[_0x429a('0x35')]({'plain':!![]});var _0x1549a8=_0x429a('0x15');return db[_0x429a('0x36')]['find']({'where':{'name':_0x1549a8,'userProfileId':_0x2f6595[_0x429a('0x37')]},'raw':!![]})[_0x429a('0x13')](function(_0x58c2a0){if(_0x58c2a0&&_0x58c2a0[_0x429a('0x38')]===0x0){return db['UserProfileResource'][_0x429a('0x32')]({'name':_0xb6c3e9[_0x429a('0x1a')],'resourceId':_0xb6c3e9['id'],'type':_0x58c2a0[_0x429a('0x1a')],'sectionId':_0x58c2a0['id']},{})[_0x429a('0x13')](function(){return _0x2ff172;});}else{return _0x2ff172;}})[_0x429a('0x39')](function(_0x58a9af){logger[_0x429a('0x18')](_0x429a('0x3a'),_0x58a9af);throw _0x58a9af;});}return _0x2ff172;})[_0x429a('0x13')](respondWithResult(_0x1b6b32,0xc9))[_0x429a('0x39')](handleError(_0x1b6b32,null));};exports[_0x429a('0x12')]=function(_0x218357,_0x256d37){if(_0x218357[_0x429a('0x33')]['id']){delete _0x218357['body']['id'];}return db['ChatQueue'][_0x429a('0x31')]({'where':{'id':_0x218357[_0x429a('0x27')]['id']}})[_0x429a('0x13')](handleEntityNotFound(_0x256d37,null))[_0x429a('0x13')](saveUpdates(_0x218357[_0x429a('0x33')],null))[_0x429a('0x13')](respondWithResult(_0x256d37,null))['catch'](handleError(_0x256d37,null));};exports[_0x429a('0x14')]=function(_0x1fa02f,_0x26dbd4){return db[_0x429a('0x1d')][_0x429a('0x31')]({'where':{'id':_0x1fa02f[_0x429a('0x27')]['id']}})['then'](handleEntityNotFound(_0x26dbd4,null))['then'](removeEntity(_0x26dbd4,null))[_0x429a('0x39')](handleError(_0x26dbd4,null));};exports[_0x429a('0x3b')]=function(_0x315aba,_0x40f7d4){return db[_0x429a('0x1d')][_0x429a('0x3b')]()[_0x429a('0x13')](respondWithResult(_0x40f7d4,null))['catch'](handleError(_0x40f7d4,null));};exports[_0x429a('0x3c')]=function(_0xc22b1c,_0x36ac8f){var _0x57af4e={'raw':!![],'where':{}},_0x36b842={},_0x55ba94;return db[_0x429a('0x1d')]['findOne']({'where':{'id':_0xc22b1c[_0x429a('0x27')]['id']}})['then'](handleEntityNotFound(_0x36ac8f,null))[_0x429a('0x13')](function(_0x516dda){if(_0x516dda){_0x55ba94=_0x516dda['get']({'plain':!![]});_0x36b842[_0x429a('0x28')]=_[_0x429a('0x29')](db['UserChatQueue'][_0x429a('0x1e')]);_0x36b842[_0x429a('0x24')]=_['keys'](_0xc22b1c[_0x429a('0x24')]);_0x36b842['filters']=_[_0x429a('0x2b')](_0x36b842['model'],_0x36b842['query']);_0x57af4e[_0x429a('0x2c')]=_[_0x429a('0x2b')](_0x36b842[_0x429a('0x28')],qs[_0x429a('0x2d')](_0xc22b1c[_0x429a('0x24')]['fields']));_0x57af4e[_0x429a('0x2c')]=_0x57af4e[_0x429a('0x2c')][_0x429a('0x2e')]?_0x57af4e[_0x429a('0x2c')]:_0x36b842[_0x429a('0x28')];if(!_0xc22b1c[_0x429a('0x24')][_0x429a('0x3d')](_0x429a('0x3e'))){_0x57af4e[_0x429a('0xe')]=qs[_0x429a('0xe')](_0xc22b1c[_0x429a('0x24')][_0x429a('0xe')]);_0x57af4e[_0x429a('0xc')]=qs['offset'](_0xc22b1c[_0x429a('0x24')]['offset']);}_0x57af4e[_0x429a('0x3f')]=qs['sort'](_0xc22b1c[_0x429a('0x24')][_0x429a('0x40')]);_0x57af4e['where']=qs[_0x429a('0x2a')](_[_0x429a('0x41')](_0xc22b1c['query'],_0x36b842[_0x429a('0x2a')]));_0x57af4e[_0x429a('0x22')][_0x429a('0x42')]=_0x516dda['id'];if(_0xc22b1c['query'][_0x429a('0x43')]){_0x57af4e[_0x429a('0x22')]=_['merge'](_0x57af4e[_0x429a('0x22')],{'$or':_[_0x429a('0x1c')](_0x57af4e[_0x429a('0x2c')],function(_0x526d60){var _0x4d39b0={};_0x4d39b0[_0x526d60]={'$like':'%'+_0xc22b1c['query']['filter']+'%'};return _0x4d39b0;})});}_0x57af4e=_[_0x429a('0x44')]({},_0x57af4e,_0xc22b1c['options']);return db[_0x429a('0x45')]['findAll'](_0x57af4e);}})[_0x429a('0x13')](function(_0x342646){if(_0x342646){return db[_0x429a('0x46')][_0x429a('0x47')]({'where':{'id':_[_0x429a('0x1c')](_0x342646,'UserId'),'role':'agent'},'attributes':['id',_0x429a('0x1a'),_0x429a('0x48'),'updatedAt',_0x429a('0x49')]});}})[_0x429a('0x13')](function(_0x237a66){if(_0x237a66){return{'count':_0x237a66[_0x429a('0xf')],'rows':_[_0x429a('0x1c')](_0x237a66[_0x429a('0x4a')],function(_0x2191c7){return{'membername':_0x2191c7[_0x429a('0x1a')],'UserId':_0x2191c7['id'],'queue_name':_0x55ba94['name'],'ChatQueueId':_0x55ba94['id'],'interface':util[_0x429a('0x4b')](_0x429a('0x4c'),_0x429a('0x4d'),_0x2191c7['name']),'penalty':0x0,'paused':_0x2191c7[_0x429a('0x48')],'createdAt':_0x2191c7[_0x429a('0x49')],'updatedAt':_0x2191c7['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x429a('0x13')](respondWithFilteredResult(_0x36ac8f,_0x57af4e))[_0x429a('0x39')](handleError(_0x36ac8f,null));};exports[_0x429a('0x4e')]=function(_0x160d30,_0x182aef){var _0x480a79={};var _0x4c654d={};var _0x58899c;var _0x3add2b;return db[_0x429a('0x1d')][_0x429a('0x4f')]({'where':{'id':_0x160d30[_0x429a('0x27')]['id']}})[_0x429a('0x13')](handleEntityNotFound(_0x182aef,null))[_0x429a('0x13')](function(_0x333bc0){if(_0x333bc0){_0x58899c=_0x333bc0;_0x4c654d[_0x429a('0x28')]=_['keys'](db[_0x429a('0x50')][_0x429a('0x1e')]);_0x4c654d['query']=_[_0x429a('0x29')](_0x160d30['query']);_0x4c654d[_0x429a('0x2a')]=_[_0x429a('0x2b')](_0x4c654d[_0x429a('0x28')],_0x4c654d[_0x429a('0x24')]);_0x480a79[_0x429a('0x2c')]=_[_0x429a('0x2b')](_0x4c654d[_0x429a('0x28')],qs[_0x429a('0x2d')](_0x160d30['query'][_0x429a('0x2d')]));_0x480a79[_0x429a('0x2c')]=_0x480a79[_0x429a('0x2c')][_0x429a('0x2e')]?_0x480a79[_0x429a('0x2c')]:_0x4c654d[_0x429a('0x28')];_0x480a79[_0x429a('0x3f')]=qs[_0x429a('0x40')](_0x160d30[_0x429a('0x24')][_0x429a('0x40')]);_0x480a79[_0x429a('0x22')]=qs[_0x429a('0x2a')](_[_0x429a('0x41')](_0x160d30[_0x429a('0x24')],_0x4c654d['filters']));if(_0x160d30['query'][_0x429a('0x43')]){_0x480a79[_0x429a('0x22')]=_['merge'](_0x480a79[_0x429a('0x22')],{'$or':_['map'](_0x480a79[_0x429a('0x2c')],function(_0x53c326){var _0x392013={};_0x392013[_0x53c326]={'$like':'%'+_0x160d30[_0x429a('0x24')][_0x429a('0x43')]+'%'};return _0x392013;})});}_0x480a79=_['merge']({},_0x480a79,_0x160d30[_0x429a('0x30')]);return _0x58899c[_0x429a('0x4e')](_0x480a79);}})[_0x429a('0x13')](function(_0x1d7887){if(_0x1d7887){_0x3add2b=_0x1d7887['length'];if(!_0x160d30[_0x429a('0x24')]['hasOwnProperty'](_0x429a('0x3e'))){_0x480a79[_0x429a('0xe')]=qs[_0x429a('0xe')](_0x160d30['query'][_0x429a('0xe')]);_0x480a79[_0x429a('0xc')]=qs[_0x429a('0xc')](_0x160d30['query'][_0x429a('0xc')]);}return _0x58899c[_0x429a('0x4e')](_0x480a79);}})[_0x429a('0x13')](function(_0x13d01b){if(_0x13d01b){return _0x13d01b?{'count':_0x3add2b,'rows':_0x13d01b}:null;}})[_0x429a('0x13')](respondWithResult(_0x182aef,null))[_0x429a('0x39')](handleError(_0x182aef,null));};exports[_0x429a('0x51')]=function(_0x4d0c2d,_0x360c7e){var _0x565eca=_0x4d0c2d['body'][_0x429a('0x52')];return db[_0x429a('0x50')][_0x429a('0x25')]({'where':{'id':_0x565eca},'attributes':['id'],'include':[{'model':db['User'],'as':_0x429a('0x53'),'attributes':['id',_0x429a('0x1a'),_0x429a('0x54'),_0x429a('0x55'),'interface'],'raw':!![]}]})[_0x429a('0x13')](function(_0x21edd1){if(_0x21edd1){var _0x37f6d4=_[_0x429a('0x56')](_0x21edd1,function(_0x38a0c5){var _0x379570=_0x38a0c5[_0x429a('0x35')]({'plain':!![]});return _0x379570['Agents'];});return db[_0x429a('0x1d')][_0x429a('0x31')]({'where':{'id':_0x4d0c2d['params']['id']}})['then'](function(_0x2104f4){return db['sequelize'][_0x429a('0x57')](function(_0x442cb6){return _0x2104f4['addTeams'](_0x565eca,{'transaction':_0x442cb6})['then'](function(){return BPromise[_0x429a('0x58')](_0x37f6d4,function(_0x30f6f5){return db[_0x429a('0x45')]['findOrCreate']({'where':{'UserId':_0x30f6f5['id'],'ChatQueueId':_0x4d0c2d['params']['id']},'transaction':_0x442cb6});});})[_0x429a('0x13')](function(){_0x37f6d4[_0x429a('0x59')](function(_0xe73202){socket['emit'](_0x429a('0x5a'),{'UserId':_0xe73202['id'],'ChatQueueId':_0x2104f4['id']});});});});});}})[_0x429a('0x13')](respondWithStatusCode(_0x360c7e,null))[_0x429a('0x39')](handleError(_0x360c7e,null));};exports[_0x429a('0x5b')]=function(_0x1041a4,_0x25f406){return db[_0x429a('0x50')]['findAll']({'where':{'id':_0x1041a4[_0x429a('0x24')][_0x429a('0x52')]},'attributes':['id'],'include':[{'model':db[_0x429a('0x46')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x429a('0x13')](handleEntityNotFound(_0x25f406,null))[_0x429a('0x13')](function(_0x25bf4c){var _0x378ec1=_[_0x429a('0x1c')](_0x25bf4c,'id');var _0xddca92=[];var _0x182ecc=[];var _0x481de3=squel[_0x429a('0x5c')]();_0x481de3[_0x429a('0x5d')]('tq.TeamId')[_0x429a('0x5e')](_0x429a('0x5f'),'tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x429a('0x22')](_0x429a('0x60'),_0x1041a4[_0x429a('0x27')]['id']);for(var _0x1f79bf=0x0;_0x1f79bf<_0x25bf4c[_0x429a('0x2e')];_0x1f79bf+=0x1){let _0x7750cf=_0x25bf4c[_0x1f79bf];for(var _0x3c5e75=0x0;_0x3c5e75<_0x7750cf['Agents']['length'];_0x3c5e75+=0x1){let _0x193517=_0x7750cf[_0x429a('0x53')][_0x3c5e75];var _0xa8ee2=_0x481de3[_0x429a('0x61')]();_0xa8ee2[_0x429a('0x22')](_0x429a('0x62'),_0x193517['id']);_0x182ecc['push'](db[_0x429a('0x63')][_0x429a('0x24')](_0xa8ee2[_0x429a('0x64')](),{'type':db[_0x429a('0x63')][_0x429a('0x65')]['SELECT']})[_0x429a('0x13')](function(_0x225ee1){if(_0x225ee1[_0x429a('0x2e')]===0x1){return _0x193517['id'];}else{var _0x573531=_[_0x429a('0x66')](_[_0x429a('0x1c')](_0x225ee1,_0x429a('0x67')),function(_0x4cf1b7){return _['includes'](_0x378ec1,_0x4cf1b7);});if(_0x573531){return _0x193517['id'];}}}));}}return BPromise['all'](_0x182ecc)['then'](function(_0x4d6fa2){_0xddca92=_(_0xddca92)['union'](_0x4d6fa2)[_0x429a('0x68')]()[_0x429a('0x69')]();return db[_0x429a('0x1d')][_0x429a('0x31')]({'where':{'id':_0x1041a4[_0x429a('0x27')]['id']}})[_0x429a('0x13')](function(_0x4ce60f){return db[_0x429a('0x63')]['transaction'](function(_0x4f770d){return _0x4ce60f[_0x429a('0x5b')](_0x1041a4[_0x429a('0x24')][_0x429a('0x52')],{'transaction':_0x4f770d})[_0x429a('0x13')](function(){if(!_['isEmpty'](_0xddca92)){return _0x4ce60f['removeAgents'](_0xddca92,{'transaction':_0x4f770d});}})[_0x429a('0x13')](function(){_0xddca92[_0x429a('0x59')](function(_0x44f19f){socket['emit'](_0x429a('0x6a'),{'UserId':_0x44f19f,'ChatQueueId':_0x4ce60f['id']});});});});});});})[_0x429a('0x13')](respondWithStatusCode(_0x25f406,null))[_0x429a('0x39')](handleError(_0x25f406,null));};exports[_0x429a('0x6b')]=function(_0x179fca,_0x2407eb){return db[_0x429a('0x1d')][_0x429a('0x31')]({'where':{'id':_0x179fca[_0x429a('0x27')]['id']}})[_0x429a('0x13')](handleEntityNotFound(_0x2407eb,null))[_0x429a('0x13')](function(_0x3b6697){if(_0x3b6697){return _0x3b6697[_0x429a('0x6b')](_0x179fca['body'][_0x429a('0x52')],_[_0x429a('0x6c')](_0x179fca[_0x429a('0x33')],['ids','id'])||{})['spread'](function(_0xf478bc){for(var _0x3c55bd=0x0;_0x3c55bd<_0x179fca[_0x429a('0x33')][_0x429a('0x52')][_0x429a('0x2e')];_0x3c55bd+=0x1){socket[_0x429a('0x6d')](_0x429a('0x5a'),{'UserId':Number(_0x179fca[_0x429a('0x33')][_0x429a('0x52')][_0x3c55bd]),'ChatQueueId':Number(_0x179fca[_0x429a('0x27')]['id'])});}return _0xf478bc;});}})[_0x429a('0x13')](respondWithResult(_0x2407eb,null))[_0x429a('0x39')](handleError(_0x2407eb,null));};exports[_0x429a('0x6e')]=function(_0x3d25bf,_0x1bb97c){return db[_0x429a('0x1d')][_0x429a('0x31')]({'where':{'id':_0x3d25bf['params']['id']}})['then'](handleEntityNotFound(_0x1bb97c,null))[_0x429a('0x13')](function(_0x172c24){if(_0x172c24){return _0x172c24['removeAgents'](_0x3d25bf['query'][_0x429a('0x52')])['then'](function(){if(_[_0x429a('0x6f')](_0x3d25bf[_0x429a('0x24')][_0x429a('0x52')])){for(var _0x1570ec=0x0;_0x1570ec<_0x3d25bf[_0x429a('0x24')]['ids'][_0x429a('0x2e')];_0x1570ec+=0x1){socket[_0x429a('0x6d')]('userChatQueue:remove',{'UserId':Number(_0x3d25bf[_0x429a('0x24')][_0x429a('0x52')][_0x1570ec]),'ChatQueueId':Number(_0x3d25bf[_0x429a('0x27')]['id'])});}}else{socket[_0x429a('0x6d')](_0x429a('0x6a'),{'UserId':Number(_0x3d25bf['query'][_0x429a('0x52')]),'ChatQueueId':Number(_0x3d25bf['params']['id'])});}});}})[_0x429a('0x13')](respondWithStatusCode(_0x1bb97c,null))['catch'](handleError(_0x1bb97c,null));};exports[_0x429a('0x70')]=function(_0x761779,_0x1ba74a){var _0x37dbb3={};var _0x15a429={};var _0x95617e;var _0x4f4c77;return db['ChatQueue']['findOne']({'where':{'id':_0x761779[_0x429a('0x27')]['id']}})[_0x429a('0x13')](handleEntityNotFound(_0x1ba74a,null))['then'](function(_0x3e7ef4){if(_0x3e7ef4){_0x95617e=_0x3e7ef4;_0x15a429[_0x429a('0x28')]=_[_0x429a('0x29')](db[_0x429a('0x46')][_0x429a('0x1e')]);_0x15a429[_0x429a('0x24')]=_[_0x429a('0x29')](_0x761779[_0x429a('0x24')]);_0x15a429[_0x429a('0x2a')]=_[_0x429a('0x2b')](_0x15a429[_0x429a('0x28')],_0x15a429[_0x429a('0x24')]);_0x37dbb3[_0x429a('0x2c')]=_['intersection'](_0x15a429['model'],qs[_0x429a('0x2d')](_0x761779['query'][_0x429a('0x2d')]));_0x37dbb3['attributes']=_0x37dbb3[_0x429a('0x2c')]['length']?_0x37dbb3[_0x429a('0x2c')]:_0x15a429[_0x429a('0x28')];_0x37dbb3[_0x429a('0x3f')]=qs[_0x429a('0x40')](_0x761779[_0x429a('0x24')][_0x429a('0x40')]);_0x37dbb3['where']=qs[_0x429a('0x2a')](_[_0x429a('0x41')](_0x761779[_0x429a('0x24')],_0x15a429[_0x429a('0x2a')]));if(_0x761779[_0x429a('0x24')][_0x429a('0x43')]){_0x37dbb3['where']=_[_0x429a('0x44')](_0x37dbb3[_0x429a('0x22')],{'$or':_['map'](_0x37dbb3['attributes'],function(_0x15d48b){var _0x14dbb7={};_0x14dbb7[_0x15d48b]={'$like':'%'+_0x761779[_0x429a('0x24')][_0x429a('0x43')]+'%'};return _0x14dbb7;})});}_0x37dbb3=_[_0x429a('0x44')]({},_0x37dbb3,_0x761779[_0x429a('0x30')]);return _0x95617e['getAgents'](_0x37dbb3);}})[_0x429a('0x13')](function(_0x232182){if(_0x232182){_0x4f4c77=_0x232182[_0x429a('0x2e')];if(!_0x761779[_0x429a('0x24')][_0x429a('0x3d')](_0x429a('0x3e'))){_0x37dbb3['limit']=qs[_0x429a('0xe')](_0x761779[_0x429a('0x24')][_0x429a('0xe')]);_0x37dbb3[_0x429a('0xc')]=qs[_0x429a('0xc')](_0x761779[_0x429a('0x24')]['offset']);}return _0x95617e[_0x429a('0x70')](_0x37dbb3);}})['then'](function(_0x1ea080){if(_0x1ea080){return _0x1ea080?{'count':_0x4f4c77,'rows':_0x1ea080}:null;}})[_0x429a('0x13')](respondWithResult(_0x1ba74a,null))['catch'](handleError(_0x1ba74a,null));};
\ No newline at end of file
+var _0x73d5=['isArray','getAgents','bluebird','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','update','then','get','UserProfileResource','error','stack','name','index','map','ChatQueue','rawAttributes','fieldName','key','getOptions','where','include','query','findAll','rows','catch','show','params','model','keys','filters','intersection','fields','attributes','length','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','ChatQueues','autoAssociation','destroy','describe','getMembers','hasOwnProperty','nolimit','order','sort','pick','ChatQueueId','filter','options','UserChatQueue','User','findAndCountAll','UserId','agent','chatPause','format','%s/%s','SIP','createdAt','updatedAt','getTeams','findOne','addTeams','ids','Team','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','userChatQueue:save','removeTeams','field','tq.TeamId','from','team_has_chat_queues','join','ut.TeamId\x20=\x20tq.TeamId','push','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','emit','userChatQueue:remove','addAgents','omit','spread'];(function(_0x1af5b2,_0x1b82fe){var _0xf1aa2d=function(_0x2ceae2){while(--_0x2ceae2){_0x1af5b2['push'](_0x1af5b2['shift']());}};_0xf1aa2d(++_0x1b82fe);}(_0x73d5,0x1f2));var _0x573d=function(_0x5e99ae,_0x37d21f){_0x5e99ae=_0x5e99ae-0x0;var _0x286019=_0x73d5[_0x5e99ae];return _0x286019;};'use strict';var BPromise=require(_0x573d('0x0'));var util=require(_0x573d('0x1'));var _=require(_0x573d('0x2'));var squel=require(_0x573d('0x3'));var Redis=require(_0x573d('0x4'));var qs=require(_0x573d('0x5'));var logger=require(_0x573d('0x6'))(_0x573d('0x7'));var config=require(_0x573d('0x8'));var db=require(_0x573d('0x9'))['db'];config[_0x573d('0xa')]=_[_0x573d('0xb')](config[_0x573d('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x573d('0xc'))(new Redis(config[_0x573d('0xa')]));require(_0x573d('0xd'))[_0x573d('0xe')](socket);function respondWithStatusCode(_0x2f857a,_0x335428){_0x335428=_0x335428||0xcc;return function(_0x4fe77c){if(_0x4fe77c){return _0x2f857a[_0x573d('0xf')](_0x335428);}return _0x2f857a[_0x573d('0x10')](_0x335428)[_0x573d('0x11')]();};}function respondWithResult(_0x3edf70,_0x2bd6bb){_0x2bd6bb=_0x2bd6bb||0xc8;return function(_0x1ccf16){if(_0x1ccf16){return _0x3edf70['status'](_0x2bd6bb)[_0x573d('0x12')](_0x1ccf16);}};}function respondWithFilteredResult(_0x415948,_0x237639){return function(_0x168158){if(_0x168158){var _0x45d2d4=typeof _0x237639[_0x573d('0x13')]==='undefined'&&typeof _0x237639[_0x573d('0x14')]===_0x573d('0x15');var _0x471ebd=_0x168158[_0x573d('0x16')];var _0x5c8229=_0x45d2d4?0x0:_0x237639[_0x573d('0x13')];var _0x59f0ea=_0x45d2d4?_0x168158[_0x573d('0x16')]:_0x237639[_0x573d('0x13')]+_0x237639['limit'];var _0x5f018f;if(_0x59f0ea>=_0x471ebd){_0x59f0ea=_0x471ebd;_0x5f018f=0xc8;}else{_0x5f018f=0xce;}_0x415948['status'](_0x5f018f);return _0x415948['set'](_0x573d('0x17'),_0x5c8229+'-'+_0x59f0ea+'/'+_0x471ebd)[_0x573d('0x12')](_0x168158);}return null;};}function saveUpdates(_0x2f5163){return function(_0x4387c9){if(_0x4387c9){return _0x4387c9[_0x573d('0x18')](_0x2f5163)[_0x573d('0x19')](function(_0x2c5361){return _0x2c5361;});}return null;};}function removeEntity(_0x833f88){return function(_0x51dded){if(_0x51dded){return _0x51dded['destroy']()[_0x573d('0x19')](function(){var _0x48cd8c=_0x51dded[_0x573d('0x1a')]({'plain':!![]});var _0x5df750='ChatQueues';return db[_0x573d('0x1b')]['destroy']({'where':{'type':_0x5df750,'resourceId':_0x48cd8c['id']}})[_0x573d('0x19')](function(){return _0x51dded;});})[_0x573d('0x19')](function(){_0x833f88[_0x573d('0x10')](0xcc)[_0x573d('0x11')]();});}};}function handleEntityNotFound(_0x3752b7){return function(_0x2b45a4){if(!_0x2b45a4){_0x3752b7[_0x573d('0xf')](0x194);}return _0x2b45a4;};}function handleError(_0x72dcc8,_0x18a0d4){_0x18a0d4=_0x18a0d4||0x1f4;return function(_0x4157d3){logger[_0x573d('0x1c')](_0x4157d3[_0x573d('0x1d')]);if(_0x4157d3[_0x573d('0x1e')]){delete _0x4157d3['name'];}_0x72dcc8[_0x573d('0x10')](_0x18a0d4)['send'](_0x4157d3);};}exports[_0x573d('0x1f')]=function(_0x2a0723,_0xe1b269){var _0x10824b={};var _0x26f4c2={'count':0x0,'rows':[]};var _0x328fdd=_[_0x573d('0x20')](db[_0x573d('0x21')][_0x573d('0x22')],function(_0x2b4d60){return{'name':_0x2b4d60[_0x573d('0x23')],'type':_0x2b4d60['type'][_0x573d('0x24')]};});_0x10824b=qs[_0x573d('0x25')](_0x328fdd,_0x2a0723);var _0x535eec={'where':_0x10824b[_0x573d('0x26')]};return db['ChatQueue'][_0x573d('0x16')](_0x535eec)[_0x573d('0x19')](function(_0x1af77f){_0x26f4c2[_0x573d('0x16')]=_0x1af77f;_0x10824b[_0x573d('0x27')]=qs[_0x573d('0x27')](_0x2a0723[_0x573d('0x28')]);return db[_0x573d('0x21')][_0x573d('0x29')](_0x10824b);})[_0x573d('0x19')](function(_0x155367){_0x26f4c2[_0x573d('0x2a')]=_0x155367;return _0x26f4c2;})[_0x573d('0x19')](respondWithFilteredResult(_0xe1b269,_0x10824b))[_0x573d('0x2b')](handleError(_0xe1b269,null));};exports[_0x573d('0x2c')]=function(_0x532d5e,_0x548203){var _0x3e52aa={'raw':!![],'where':{'id':_0x532d5e[_0x573d('0x2d')]['id']}},_0x5932eb={};_0x5932eb[_0x573d('0x2e')]=_[_0x573d('0x2f')](db[_0x573d('0x21')][_0x573d('0x22')]);_0x5932eb[_0x573d('0x28')]=_['keys'](_0x532d5e[_0x573d('0x28')]);_0x5932eb[_0x573d('0x30')]=_['intersection'](_0x5932eb['model'],_0x5932eb[_0x573d('0x28')]);_0x3e52aa['attributes']=_[_0x573d('0x31')](_0x5932eb[_0x573d('0x2e')],qs[_0x573d('0x32')](_0x532d5e[_0x573d('0x28')][_0x573d('0x32')]));_0x3e52aa[_0x573d('0x33')]=_0x3e52aa[_0x573d('0x33')][_0x573d('0x34')]?_0x3e52aa['attributes']:_0x5932eb['model'];if(_0x532d5e[_0x573d('0x28')]['includeAll']){_0x3e52aa[_0x573d('0x27')]=[{'all':!![]}];}_0x3e52aa=_[_0x573d('0x35')]({},_0x3e52aa,_0x532d5e['options']);return db[_0x573d('0x21')][_0x573d('0x36')](_0x3e52aa)[_0x573d('0x19')](handleEntityNotFound(_0x548203,null))[_0x573d('0x19')](respondWithResult(_0x548203,null))['catch'](handleError(_0x548203,null));};exports[_0x573d('0x37')]=function(_0x5c2466,_0x22be4a){return db[_0x573d('0x21')][_0x573d('0x37')](_0x5c2466[_0x573d('0x38')],{})[_0x573d('0x19')](function(_0x551bcb){var _0x2ee82b=_0x5c2466['user'][_0x573d('0x1a')]({'plain':!![]});if(!_0x2ee82b)throw new Error(_0x573d('0x39'));if(_0x2ee82b['role']===_0x573d('0x3a')){var _0x129e57=_0x551bcb['get']({'plain':!![]});var _0x5b9e2c=_0x573d('0x3b');return db['UserProfileSection'][_0x573d('0x36')]({'where':{'name':_0x5b9e2c,'userProfileId':_0x2ee82b['userProfileId']},'raw':!![]})['then'](function(_0x52f08d){if(_0x52f08d&&_0x52f08d[_0x573d('0x3c')]===0x0){return db[_0x573d('0x1b')][_0x573d('0x37')]({'name':_0x129e57['name'],'resourceId':_0x129e57['id'],'type':_0x52f08d[_0x573d('0x1e')],'sectionId':_0x52f08d['id']},{})[_0x573d('0x19')](function(){return _0x551bcb;});}else{return _0x551bcb;}})[_0x573d('0x2b')](function(_0x210586){logger[_0x573d('0x1c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x210586);throw _0x210586;});}return _0x551bcb;})['then'](respondWithResult(_0x22be4a,0xc9))[_0x573d('0x2b')](handleError(_0x22be4a,null));};exports[_0x573d('0x18')]=function(_0x39e992,_0x4eea94){if(_0x39e992[_0x573d('0x38')]['id']){delete _0x39e992[_0x573d('0x38')]['id'];}return db[_0x573d('0x21')]['find']({'where':{'id':_0x39e992['params']['id']}})[_0x573d('0x19')](handleEntityNotFound(_0x4eea94,null))[_0x573d('0x19')](saveUpdates(_0x39e992[_0x573d('0x38')],null))[_0x573d('0x19')](respondWithResult(_0x4eea94,null))['catch'](handleError(_0x4eea94,null));};exports[_0x573d('0x3d')]=function(_0xbe341d,_0x2c6c7c){return db[_0x573d('0x21')][_0x573d('0x36')]({'where':{'id':_0xbe341d['params']['id']}})['then'](handleEntityNotFound(_0x2c6c7c,null))[_0x573d('0x19')](removeEntity(_0x2c6c7c,null))[_0x573d('0x2b')](handleError(_0x2c6c7c,null));};exports['describe']=function(_0x3d22f8,_0x558d4d){return db[_0x573d('0x21')][_0x573d('0x3e')]()['then'](respondWithResult(_0x558d4d,null))[_0x573d('0x2b')](handleError(_0x558d4d,null));};exports[_0x573d('0x3f')]=function(_0x34f242,_0x52a362){var _0x229e53={'raw':!![],'where':{}},_0x1582b8={},_0x35c4e3;return db['ChatQueue']['findOne']({'where':{'id':_0x34f242[_0x573d('0x2d')]['id']}})[_0x573d('0x19')](handleEntityNotFound(_0x52a362,null))[_0x573d('0x19')](function(_0x4df8e4){if(_0x4df8e4){_0x35c4e3=_0x4df8e4[_0x573d('0x1a')]({'plain':!![]});_0x1582b8[_0x573d('0x2e')]=_['keys'](db['UserChatQueue'][_0x573d('0x22')]);_0x1582b8[_0x573d('0x28')]=_[_0x573d('0x2f')](_0x34f242[_0x573d('0x28')]);_0x1582b8[_0x573d('0x30')]=_[_0x573d('0x31')](_0x1582b8[_0x573d('0x2e')],_0x1582b8[_0x573d('0x28')]);_0x229e53['attributes']=_['intersection'](_0x1582b8[_0x573d('0x2e')],qs[_0x573d('0x32')](_0x34f242[_0x573d('0x28')][_0x573d('0x32')]));_0x229e53[_0x573d('0x33')]=_0x229e53[_0x573d('0x33')][_0x573d('0x34')]?_0x229e53['attributes']:_0x1582b8[_0x573d('0x2e')];if(!_0x34f242['query'][_0x573d('0x40')](_0x573d('0x41'))){_0x229e53[_0x573d('0x14')]=qs[_0x573d('0x14')](_0x34f242[_0x573d('0x28')][_0x573d('0x14')]);_0x229e53[_0x573d('0x13')]=qs[_0x573d('0x13')](_0x34f242[_0x573d('0x28')]['offset']);}_0x229e53[_0x573d('0x42')]=qs[_0x573d('0x43')](_0x34f242[_0x573d('0x28')][_0x573d('0x43')]);_0x229e53[_0x573d('0x26')]=qs[_0x573d('0x30')](_[_0x573d('0x44')](_0x34f242['query'],_0x1582b8[_0x573d('0x30')]));_0x229e53[_0x573d('0x26')][_0x573d('0x45')]=_0x4df8e4['id'];if(_0x34f242[_0x573d('0x28')][_0x573d('0x46')]){_0x229e53[_0x573d('0x26')]=_[_0x573d('0x35')](_0x229e53['where'],{'$or':_[_0x573d('0x20')](_0x229e53[_0x573d('0x33')],function(_0x2067d3){var _0xfd2be0={};_0xfd2be0[_0x2067d3]={'$like':'%'+_0x34f242[_0x573d('0x28')][_0x573d('0x46')]+'%'};return _0xfd2be0;})});}_0x229e53=_['merge']({},_0x229e53,_0x34f242[_0x573d('0x47')]);return db[_0x573d('0x48')][_0x573d('0x29')](_0x229e53);}})[_0x573d('0x19')](function(_0x497d93){if(_0x497d93){return db[_0x573d('0x49')][_0x573d('0x4a')]({'where':{'id':_[_0x573d('0x20')](_0x497d93,_0x573d('0x4b')),'role':_0x573d('0x4c')},'attributes':['id',_0x573d('0x1e'),_0x573d('0x4d'),'updatedAt','createdAt']});}})[_0x573d('0x19')](function(_0x158430){if(_0x158430){return{'count':_0x158430[_0x573d('0x16')],'rows':_[_0x573d('0x20')](_0x158430['rows'],function(_0x505e90){return{'membername':_0x505e90[_0x573d('0x1e')],'UserId':_0x505e90['id'],'queue_name':_0x35c4e3[_0x573d('0x1e')],'ChatQueueId':_0x35c4e3['id'],'interface':util[_0x573d('0x4e')](_0x573d('0x4f'),_0x573d('0x50'),_0x505e90[_0x573d('0x1e')]),'penalty':0x0,'paused':_0x505e90[_0x573d('0x4d')],'createdAt':_0x505e90[_0x573d('0x51')],'updatedAt':_0x505e90[_0x573d('0x52')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x573d('0x19')](respondWithFilteredResult(_0x52a362,_0x229e53))['catch'](handleError(_0x52a362,null));};exports[_0x573d('0x53')]=function(_0x2a65ec,_0x20110b){var _0x1a75aa={};var _0x21656e={};var _0x4467e2;var _0x3ad007;return db[_0x573d('0x21')][_0x573d('0x54')]({'where':{'id':_0x2a65ec['params']['id']}})['then'](handleEntityNotFound(_0x20110b,null))[_0x573d('0x19')](function(_0x27a8e8){if(_0x27a8e8){_0x4467e2=_0x27a8e8;_0x21656e[_0x573d('0x2e')]=_[_0x573d('0x2f')](db['Team'][_0x573d('0x22')]);_0x21656e[_0x573d('0x28')]=_[_0x573d('0x2f')](_0x2a65ec['query']);_0x21656e['filters']=_[_0x573d('0x31')](_0x21656e[_0x573d('0x2e')],_0x21656e[_0x573d('0x28')]);_0x1a75aa[_0x573d('0x33')]=_['intersection'](_0x21656e[_0x573d('0x2e')],qs[_0x573d('0x32')](_0x2a65ec[_0x573d('0x28')][_0x573d('0x32')]));_0x1a75aa['attributes']=_0x1a75aa[_0x573d('0x33')][_0x573d('0x34')]?_0x1a75aa[_0x573d('0x33')]:_0x21656e[_0x573d('0x2e')];_0x1a75aa[_0x573d('0x42')]=qs[_0x573d('0x43')](_0x2a65ec['query'][_0x573d('0x43')]);_0x1a75aa[_0x573d('0x26')]=qs[_0x573d('0x30')](_[_0x573d('0x44')](_0x2a65ec['query'],_0x21656e[_0x573d('0x30')]));if(_0x2a65ec[_0x573d('0x28')][_0x573d('0x46')]){_0x1a75aa[_0x573d('0x26')]=_[_0x573d('0x35')](_0x1a75aa[_0x573d('0x26')],{'$or':_[_0x573d('0x20')](_0x1a75aa[_0x573d('0x33')],function(_0xbc97b4){var _0x22ee56={};_0x22ee56[_0xbc97b4]={'$like':'%'+_0x2a65ec[_0x573d('0x28')][_0x573d('0x46')]+'%'};return _0x22ee56;})});}_0x1a75aa=_[_0x573d('0x35')]({},_0x1a75aa,_0x2a65ec[_0x573d('0x47')]);return _0x4467e2[_0x573d('0x53')](_0x1a75aa);}})[_0x573d('0x19')](function(_0x4b570f){if(_0x4b570f){_0x3ad007=_0x4b570f[_0x573d('0x34')];if(!_0x2a65ec[_0x573d('0x28')][_0x573d('0x40')](_0x573d('0x41'))){_0x1a75aa[_0x573d('0x14')]=qs[_0x573d('0x14')](_0x2a65ec[_0x573d('0x28')][_0x573d('0x14')]);_0x1a75aa[_0x573d('0x13')]=qs[_0x573d('0x13')](_0x2a65ec[_0x573d('0x28')][_0x573d('0x13')]);}return _0x4467e2['getTeams'](_0x1a75aa);}})[_0x573d('0x19')](function(_0x3b99a4){if(_0x3b99a4){return _0x3b99a4?{'count':_0x3ad007,'rows':_0x3b99a4}:null;}})['then'](respondWithResult(_0x20110b,null))['catch'](handleError(_0x20110b,null));};exports[_0x573d('0x55')]=function(_0x3279b8,_0x157e16){var _0xa2f904=_0x3279b8[_0x573d('0x38')][_0x573d('0x56')];return db[_0x573d('0x57')]['findAll']({'where':{'id':_0xa2f904},'attributes':['id'],'include':[{'model':db[_0x573d('0x49')],'as':_0x573d('0x58'),'attributes':['id',_0x573d('0x1e'),_0x573d('0x59'),_0x573d('0x5a'),'interface'],'raw':!![]}]})['then'](function(_0x3af31d){if(_0x3af31d){var _0x372114=_[_0x573d('0x5b')](_0x3af31d,function(_0x5d7469){var _0x2dd8a6=_0x5d7469[_0x573d('0x1a')]({'plain':!![]});return _0x2dd8a6[_0x573d('0x58')];});return db[_0x573d('0x21')]['find']({'where':{'id':_0x3279b8[_0x573d('0x2d')]['id']}})[_0x573d('0x19')](function(_0x27c882){return db[_0x573d('0x5c')][_0x573d('0x5d')](function(_0x261a9a){return _0x27c882[_0x573d('0x55')](_0xa2f904,{'transaction':_0x261a9a})[_0x573d('0x19')](function(){return BPromise[_0x573d('0x5e')](_0x372114,function(_0x3be7e5){return db[_0x573d('0x48')][_0x573d('0x5f')]({'where':{'UserId':_0x3be7e5['id'],'ChatQueueId':_0x3279b8[_0x573d('0x2d')]['id']},'transaction':_0x261a9a});});})[_0x573d('0x19')](function(){_0x372114[_0x573d('0x60')](function(_0x392241){socket['emit'](_0x573d('0x61'),{'UserId':_0x392241['id'],'ChatQueueId':_0x27c882['id']});});});});});}})[_0x573d('0x19')](respondWithStatusCode(_0x157e16,null))[_0x573d('0x2b')](handleError(_0x157e16,null));};exports[_0x573d('0x62')]=function(_0x21690c,_0x4626fa){return db[_0x573d('0x57')][_0x573d('0x29')]({'where':{'id':_0x21690c[_0x573d('0x28')][_0x573d('0x56')]},'attributes':['id'],'include':[{'model':db[_0x573d('0x49')],'as':_0x573d('0x58'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4626fa,null))['then'](function(_0x1b8a80){var _0x2775dc=_[_0x573d('0x20')](_0x1b8a80,'id');var _0x6be719=[];var _0x459f03=[];var _0x2fa947=squel['select']();_0x2fa947[_0x573d('0x63')](_0x573d('0x64'))[_0x573d('0x65')](_0x573d('0x66'),'tq')[_0x573d('0x67')]('user_has_teams','ut',_0x573d('0x68'))[_0x573d('0x26')]('ChatQueueId\x20=\x20?',_0x21690c[_0x573d('0x2d')]['id']);for(var _0x28e21b=0x0;_0x28e21b<_0x1b8a80['length'];_0x28e21b+=0x1){let _0x79f0dc=_0x1b8a80[_0x28e21b];for(var _0x96d6ea=0x0;_0x96d6ea<_0x79f0dc[_0x573d('0x58')][_0x573d('0x34')];_0x96d6ea+=0x1){let _0x16165d=_0x79f0dc[_0x573d('0x58')][_0x96d6ea];var _0x3c102e=_0x2fa947['clone']();_0x3c102e[_0x573d('0x26')]('ut.UserId\x20=\x20?',_0x16165d['id']);_0x459f03[_0x573d('0x69')](db['sequelize'][_0x573d('0x28')](_0x3c102e['toString'](),{'type':db[_0x573d('0x5c')][_0x573d('0x6a')][_0x573d('0x6b')]})[_0x573d('0x19')](function(_0x134963){if(_0x134963[_0x573d('0x34')]===0x1){return _0x16165d['id'];}else{var _0x205fde=_[_0x573d('0x6c')](_['map'](_0x134963,_0x573d('0x6d')),function(_0x3f62bc){return _[_0x573d('0x6e')](_0x2775dc,_0x3f62bc);});if(_0x205fde){return _0x16165d['id'];}}}));}}return BPromise[_0x573d('0x6f')](_0x459f03)[_0x573d('0x19')](function(_0x4bad21){_0x6be719=_(_0x6be719)[_0x573d('0x70')](_0x4bad21)[_0x573d('0x71')]()[_0x573d('0x72')]();return db[_0x573d('0x21')][_0x573d('0x36')]({'where':{'id':_0x21690c[_0x573d('0x2d')]['id']}})['then'](function(_0x317bbf){return db[_0x573d('0x5c')][_0x573d('0x5d')](function(_0x322dc5){return _0x317bbf['removeTeams'](_0x21690c[_0x573d('0x28')]['ids'],{'transaction':_0x322dc5})['then'](function(){if(!_[_0x573d('0x73')](_0x6be719)){return _0x317bbf[_0x573d('0x74')](_0x6be719,{'transaction':_0x322dc5});}})[_0x573d('0x19')](function(){_0x6be719[_0x573d('0x60')](function(_0x12dc17){socket[_0x573d('0x75')](_0x573d('0x76'),{'UserId':_0x12dc17,'ChatQueueId':_0x317bbf['id']});});});});});});})['then'](respondWithStatusCode(_0x4626fa,null))[_0x573d('0x2b')](handleError(_0x4626fa,null));};exports[_0x573d('0x77')]=function(_0x56fa67,_0x51623e){return db[_0x573d('0x21')][_0x573d('0x36')]({'where':{'id':_0x56fa67[_0x573d('0x2d')]['id']}})[_0x573d('0x19')](handleEntityNotFound(_0x51623e,null))[_0x573d('0x19')](function(_0x44ee6a){if(_0x44ee6a){return _0x44ee6a['addAgents'](_0x56fa67['body']['ids'],_[_0x573d('0x78')](_0x56fa67[_0x573d('0x38')],['ids','id'])||{})[_0x573d('0x79')](function(_0x18fc49){for(var _0xa247a2=0x0;_0xa247a2<_0x56fa67[_0x573d('0x38')]['ids'][_0x573d('0x34')];_0xa247a2+=0x1){socket[_0x573d('0x75')](_0x573d('0x61'),{'UserId':Number(_0x56fa67['body'][_0x573d('0x56')][_0xa247a2]),'ChatQueueId':Number(_0x56fa67[_0x573d('0x2d')]['id'])});}return _0x18fc49;});}})['then'](respondWithResult(_0x51623e,null))[_0x573d('0x2b')](handleError(_0x51623e,null));};exports['removeAgents']=function(_0x43bd48,_0x2ef2f8){return db[_0x573d('0x21')]['find']({'where':{'id':_0x43bd48[_0x573d('0x2d')]['id']}})[_0x573d('0x19')](handleEntityNotFound(_0x2ef2f8,null))['then'](function(_0x3f575b){if(_0x3f575b){return _0x3f575b['removeAgents'](_0x43bd48[_0x573d('0x28')][_0x573d('0x56')])[_0x573d('0x19')](function(){if(_[_0x573d('0x7a')](_0x43bd48[_0x573d('0x28')]['ids'])){for(var _0x34622c=0x0;_0x34622c<_0x43bd48[_0x573d('0x28')][_0x573d('0x56')][_0x573d('0x34')];_0x34622c+=0x1){socket[_0x573d('0x75')]('userChatQueue:remove',{'UserId':Number(_0x43bd48[_0x573d('0x28')][_0x573d('0x56')][_0x34622c]),'ChatQueueId':Number(_0x43bd48['params']['id'])});}}else{socket['emit'](_0x573d('0x76'),{'UserId':Number(_0x43bd48[_0x573d('0x28')][_0x573d('0x56')]),'ChatQueueId':Number(_0x43bd48[_0x573d('0x2d')]['id'])});}});}})[_0x573d('0x19')](respondWithStatusCode(_0x2ef2f8,null))[_0x573d('0x2b')](handleError(_0x2ef2f8,null));};exports[_0x573d('0x7b')]=function(_0xccd45c,_0x356a98){var _0x47c221={};var _0x32acdf={};var _0x87da64;var _0xa76f6e;return db[_0x573d('0x21')]['findOne']({'where':{'id':_0xccd45c[_0x573d('0x2d')]['id']}})[_0x573d('0x19')](handleEntityNotFound(_0x356a98,null))[_0x573d('0x19')](function(_0x3864c9){if(_0x3864c9){_0x87da64=_0x3864c9;_0x32acdf[_0x573d('0x2e')]=_[_0x573d('0x2f')](db[_0x573d('0x49')][_0x573d('0x22')]);_0x32acdf[_0x573d('0x28')]=_['keys'](_0xccd45c['query']);_0x32acdf[_0x573d('0x30')]=_[_0x573d('0x31')](_0x32acdf[_0x573d('0x2e')],_0x32acdf[_0x573d('0x28')]);_0x47c221[_0x573d('0x33')]=_[_0x573d('0x31')](_0x32acdf[_0x573d('0x2e')],qs[_0x573d('0x32')](_0xccd45c[_0x573d('0x28')]['fields']));_0x47c221[_0x573d('0x33')]=_0x47c221[_0x573d('0x33')][_0x573d('0x34')]?_0x47c221['attributes']:_0x32acdf[_0x573d('0x2e')];_0x47c221['order']=qs[_0x573d('0x43')](_0xccd45c[_0x573d('0x28')][_0x573d('0x43')]);_0x47c221[_0x573d('0x26')]=qs[_0x573d('0x30')](_[_0x573d('0x44')](_0xccd45c[_0x573d('0x28')],_0x32acdf['filters']));if(_0xccd45c['query'][_0x573d('0x46')]){_0x47c221[_0x573d('0x26')]=_['merge'](_0x47c221[_0x573d('0x26')],{'$or':_[_0x573d('0x20')](_0x47c221['attributes'],function(_0x363bd1){var _0x2625b0={};_0x2625b0[_0x363bd1]={'$like':'%'+_0xccd45c[_0x573d('0x28')][_0x573d('0x46')]+'%'};return _0x2625b0;})});}_0x47c221=_[_0x573d('0x35')]({},_0x47c221,_0xccd45c[_0x573d('0x47')]);return _0x87da64['getAgents'](_0x47c221);}})['then'](function(_0x49e578){if(_0x49e578){_0xa76f6e=_0x49e578['length'];if(!_0xccd45c[_0x573d('0x28')][_0x573d('0x40')](_0x573d('0x41'))){_0x47c221['limit']=qs[_0x573d('0x14')](_0xccd45c[_0x573d('0x28')][_0x573d('0x14')]);_0x47c221[_0x573d('0x13')]=qs[_0x573d('0x13')](_0xccd45c[_0x573d('0x28')]['offset']);}return _0x87da64[_0x573d('0x7b')](_0x47c221);}})[_0x573d('0x19')](function(_0x11cb6f){if(_0x11cb6f){return _0x11cb6f?{'count':_0xa76f6e,'rows':_0x11cb6f}:null;}})[_0x573d('0x19')](respondWithResult(_0x356a98,null))[_0x573d('0x2b')](handleError(_0x356a98,null));};
\ No newline at end of file
index e951df3..6740dc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56c7=['emit','hook','exports','events','ChatQueue','update','remove'];(function(_0xd93cf7,_0xc8445b){var _0x2791eb=function(_0x8ddfc1){while(--_0x8ddfc1){_0xd93cf7['push'](_0xd93cf7['shift']());}};_0x2791eb(++_0xc8445b);}(_0x56c7,0x14c));var _0x756c=function(_0xd9c529,_0x19f8cc){_0xd9c529=_0xd9c529-0x0;var _0x146760=_0x56c7[_0xd9c529];return _0x146760;};'use strict';var EventEmitter=require(_0x756c('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0x756c('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x756c('0x2'),'afterDestroy':_0x756c('0x3')};function emitEvent(_0x45d7a9){return function(_0x323d10,_0x2df6f5,_0x3c29d7){ChatQueueEvents[_0x756c('0x4')](_0x45d7a9+':'+_0x323d10['id'],_0x323d10);ChatQueueEvents[_0x756c('0x4')](_0x45d7a9,_0x323d10);_0x3c29d7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0x756c('0x5')](e,emitEvent(event));}}module[_0x756c('0x6')]=ChatQueueEvents;
\ No newline at end of file
+var _0x38e2=['emit','hasOwnProperty','exports','../../mysqldb','ChatQueue','update','remove'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0x38e2,0xff));var _0x238e=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x38e2[_0x4a9fb1];return _0x348672;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0x238e('0x0'))['db'][_0x238e('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x238e('0x2'),'afterDestroy':_0x238e('0x3')};function emitEvent(_0x57cbf9){return function(_0x4c7381,_0x2ad3da,_0x3b44bb){ChatQueueEvents[_0x238e('0x4')](_0x57cbf9+':'+_0x4c7381['id'],_0x4c7381);ChatQueueEvents[_0x238e('0x4')](_0x57cbf9,_0x4c7381);_0x3b44bb(null);};}for(var e in events){if(events[_0x238e('0x5')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0x238e('0x6')]=ChatQueueEvents;
\ No newline at end of file
index 2e135fe..3225ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1aa=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues'];(function(_0x3a2373,_0x2ef4fe){var _0x177352=function(_0x53cd26){while(--_0x53cd26){_0x3a2373['push'](_0x3a2373['shift']());}};_0x177352(++_0x2ef4fe);}(_0xf1aa,0x15e));var _0xaf1a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf1aa[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xaf1a('0x0'));var util=require(_0xaf1a('0x1'));var logger=require(_0xaf1a('0x2'))(_0xaf1a('0x3'));var moment=require(_0xaf1a('0x4'));var BPromise=require('bluebird');var rp=require(_0xaf1a('0x5'));var fs=require('fs');var path=require(_0xaf1a('0x6'));var rimraf=require(_0xaf1a('0x7'));var config=require(_0xaf1a('0x8'));var attributes=require(_0xaf1a('0x9'));module[_0xaf1a('0xa')]=function(_0x3d739d,_0x4fb2dd){return _0x3d739d[_0xaf1a('0xb')](_0xaf1a('0xc'),attributes,{'tableName':_0xaf1a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x57d5=['../../config/environment','./chatQueue.attributes','exports','ChatQueue','chat_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x57d5,0x1cd));var _0x557d=function(_0x5e4563,_0x3ff918){_0x5e4563=_0x5e4563-0x0;var _0x8d1bf5=_0x57d5[_0x5e4563];return _0x8d1bf5;};'use strict';var _=require(_0x557d('0x0'));var util=require('util');var logger=require(_0x557d('0x1'))(_0x557d('0x2'));var moment=require(_0x557d('0x3'));var BPromise=require(_0x557d('0x4'));var rp=require(_0x557d('0x5'));var fs=require('fs');var path=require(_0x557d('0x6'));var rimraf=require('rimraf');var config=require(_0x557d('0x7'));var attributes=require(_0x557d('0x8'));module[_0x557d('0x9')]=function(_0x2e2718,_0x235e88){return _0x2e2718['define'](_0x557d('0xa'),attributes,{'tableName':_0x557d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1b23a34..7d56c3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e16=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ChatQueue','options','raw','where','attributes','limit','include','map','model','debug','GetChatQueue','catch','ShowChatQueue','lodash','randomstring','ioredis'];(function(_0x434c9e,_0xba1333){var _0x5b7169=function(_0x5cd22c){while(--_0x5cd22c){_0x434c9e['push'](_0x434c9e['shift']());}};_0x5b7169(++_0xba1333);}(_0x2e16,0x8d));var _0x62e1=function(_0xb40024,_0x26f783){_0xb40024=_0xb40024-0x0;var _0x57ecb4=_0x2e16[_0xb40024];return _0x57ecb4;};'use strict';var _=require(_0x62e1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x62e1('0x1'));var fs=require('fs');var Redis=require(_0x62e1('0x2'));var db=require(_0x62e1('0x3'))['db'];var utils=require(_0x62e1('0x4'));var logger=require('../../config/logger')(_0x62e1('0x5'));var config=require(_0x62e1('0x6'));var jayson=require(_0x62e1('0x7'));var client=jayson[_0x62e1('0x8')][_0x62e1('0x9')]({'port':0x232a});config[_0x62e1('0xa')]=_[_0x62e1('0xb')](config[_0x62e1('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x62e1('0xc'))(new Redis(config[_0x62e1('0xa')]));require('./chatQueue.socket')[_0x62e1('0xd')](socket);function respondWithRpcPromise(_0x528ec6,_0x4f66e4,_0x2bd27c){return new BPromise(function(_0xbc14e4,_0x3d741f){return client[_0x62e1('0xe')](_0x528ec6,_0x2bd27c)[_0x62e1('0xf')](function(_0xab7486){logger[_0x62e1('0x10')](_0x62e1('0x11'),_0x4f66e4,_0x62e1('0x12'));logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0x4f66e4,_0x62e1('0x12'),JSON[_0x62e1('0x13')](_0xab7486));if(_0xab7486[_0x62e1('0x14')]){if(_0xab7486[_0x62e1('0x14')][_0x62e1('0x15')]===0x1f4){logger[_0x62e1('0x14')]('ChatQueue,\x20%s,\x20%s',_0x4f66e4,_0xab7486[_0x62e1('0x14')][_0x62e1('0x16')]);return _0x3d741f(_0xab7486['error'][_0x62e1('0x16')]);}logger[_0x62e1('0x14')]('ChatQueue,\x20%s,\x20%s',_0x4f66e4,_0xab7486[_0x62e1('0x14')][_0x62e1('0x16')]);return _0xbc14e4(_0xab7486['error'][_0x62e1('0x16')]);}else{logger['info'](_0x62e1('0x11'),_0x4f66e4,_0x62e1('0x12'));_0xbc14e4(_0xab7486['result']['message']);}})['catch'](function(_0x4d63a0){logger[_0x62e1('0x14')](_0x62e1('0x11'),_0x4f66e4,_0x4d63a0);_0x3d741f(_0x4d63a0);});});}exports['GetChatQueue']=function(_0x295f93){var _0x3bdf8e=this;return new Promise(function(_0x5d1142,_0x3a232a){return db[_0x62e1('0x17')]['findAll']({'raw':_0x295f93[_0x62e1('0x18')]?_0x295f93[_0x62e1('0x18')][_0x62e1('0x19')]===undefined?!![]:![]:!![],'where':_0x295f93['options']?_0x295f93[_0x62e1('0x18')][_0x62e1('0x1a')]||null:null,'attributes':_0x295f93[_0x62e1('0x18')]?_0x295f93[_0x62e1('0x18')][_0x62e1('0x1b')]||null:null,'limit':_0x295f93[_0x62e1('0x18')]?_0x295f93[_0x62e1('0x18')][_0x62e1('0x1c')]||null:null,'include':_0x295f93[_0x62e1('0x18')]?_0x295f93['options'][_0x62e1('0x1d')]?_['map'](_0x295f93[_0x62e1('0x18')][_0x62e1('0x1d')],function(_0xba9310){return{'model':db[_0xba9310['model']],'as':_0xba9310['as'],'attributes':_0xba9310[_0x62e1('0x1b')],'include':_0xba9310[_0x62e1('0x1d')]?_[_0x62e1('0x1e')](_0xba9310['include'],function(_0x563338){return{'model':db[_0x563338['model']],'as':_0x563338['as'],'attributes':_0x563338['attributes'],'include':_0x563338[_0x62e1('0x1d')]?_[_0x62e1('0x1e')](_0x563338[_0x62e1('0x1d')],function(_0x48cb73){return{'model':db[_0x48cb73[_0x62e1('0x1f')]],'as':_0x48cb73['as'],'attributes':_0x48cb73[_0x62e1('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x62e1('0xf')](function(_0x9b39f2){logger[_0x62e1('0x10')]('GetChatQueue',_0x295f93);logger[_0x62e1('0x20')](_0x62e1('0x21'),_0x295f93,JSON[_0x62e1('0x13')](_0x9b39f2));_0x5d1142(_0x9b39f2);})[_0x62e1('0x22')](function(_0x4482d8){logger['error'](_0x62e1('0x21'),_0x4482d8[_0x62e1('0x16')],_0x295f93);_0x3a232a(_0x3bdf8e[_0x62e1('0x14')](0x1f4,_0x4482d8[_0x62e1('0x16')]));});});};exports[_0x62e1('0x23')]=function(_0x4c0d52){var _0x24cdb5=this;return new Promise(function(_0x405981,_0x48cb78){return db[_0x62e1('0x17')]['find']({'raw':_0x4c0d52[_0x62e1('0x18')]?_0x4c0d52['options'][_0x62e1('0x19')]===undefined?!![]:![]:!![],'where':_0x4c0d52[_0x62e1('0x18')]?_0x4c0d52[_0x62e1('0x18')][_0x62e1('0x1a')]||null:null,'attributes':_0x4c0d52[_0x62e1('0x18')]?_0x4c0d52[_0x62e1('0x18')][_0x62e1('0x1b')]||null:null,'include':_0x4c0d52[_0x62e1('0x18')]?_0x4c0d52['options'][_0x62e1('0x1d')]?_[_0x62e1('0x1e')](_0x4c0d52['options'][_0x62e1('0x1d')],function(_0x421d76){return{'model':db[_0x421d76[_0x62e1('0x1f')]],'as':_0x421d76['as'],'attributes':_0x421d76[_0x62e1('0x1b')],'include':_0x421d76[_0x62e1('0x1d')]?_[_0x62e1('0x1e')](_0x421d76[_0x62e1('0x1d')],function(_0x5393c2){return{'model':db[_0x5393c2[_0x62e1('0x1f')]],'as':_0x5393c2['as'],'attributes':_0x5393c2[_0x62e1('0x1b')],'include':_0x5393c2[_0x62e1('0x1d')]?_['map'](_0x5393c2[_0x62e1('0x1d')],function(_0x4a5b91){return{'model':db[_0x4a5b91[_0x62e1('0x1f')]],'as':_0x4a5b91['as'],'attributes':_0x4a5b91[_0x62e1('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x35e413){logger['info'](_0x62e1('0x23'),_0x4c0d52);logger[_0x62e1('0x20')]('ShowChatQueue',_0x4c0d52,JSON[_0x62e1('0x13')](_0x35e413));_0x405981(_0x35e413);})[_0x62e1('0x22')](function(_0x28a416){logger['error'](_0x62e1('0x23'),_0x28a416[_0x62e1('0x16')],_0x4c0d52);_0x48cb78(_0x24cdb5[_0x62e1('0x14')](0x1f4,_0x28a416[_0x62e1('0x16')]));});});};
\ No newline at end of file
+var _0xf990=['result','catch','GetChatQueue','ChatQueue','findAll','raw','options','where','limit','include','map','model','attributes','ShowChatQueue','find','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatQueue.socket','request','then','info','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ChatQueue,\x20%s,\x20%s'];(function(_0x70cfa9,_0x46c289){var _0x984577=function(_0x329600){while(--_0x329600){_0x70cfa9['push'](_0x70cfa9['shift']());}};_0x984577(++_0x46c289);}(_0xf990,0x87));var _0x0f99=function(_0x3b0966,_0x3fc4ca){_0x3b0966=_0x3b0966-0x0;var _0x18e6b0=_0xf990[_0x3b0966];return _0x18e6b0;};'use strict';var _=require(_0x0f99('0x0'));var util=require('util');var moment=require(_0x0f99('0x1'));var BPromise=require(_0x0f99('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0f99('0x3'));var db=require(_0x0f99('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0f99('0x5'))(_0x0f99('0x6'));var config=require('../../config/environment');var jayson=require(_0x0f99('0x7'));var client=jayson[_0x0f99('0x8')][_0x0f99('0x9')]({'port':0x232a});config[_0x0f99('0xa')]=_['defaults'](config['redis'],{'host':_0x0f99('0xb'),'port':0x18eb});var socket=require(_0x0f99('0xc'))(new Redis(config[_0x0f99('0xa')]));require(_0x0f99('0xd'))['register'](socket);function respondWithRpcPromise(_0x184326,_0x40e2e8,_0x1dae9f){return new BPromise(function(_0x32a489,_0x56b042){return client[_0x0f99('0xe')](_0x184326,_0x1dae9f)[_0x0f99('0xf')](function(_0x31c4e8){logger[_0x0f99('0x10')]('ChatQueue,\x20%s,\x20%s',_0x40e2e8,'request\x20sent');logger[_0x0f99('0x11')](_0x0f99('0x12'),_0x40e2e8,_0x0f99('0x13'),JSON[_0x0f99('0x14')](_0x31c4e8));if(_0x31c4e8[_0x0f99('0x15')]){if(_0x31c4e8[_0x0f99('0x15')][_0x0f99('0x16')]===0x1f4){logger[_0x0f99('0x15')]('ChatQueue,\x20%s,\x20%s',_0x40e2e8,_0x31c4e8[_0x0f99('0x15')]['message']);return _0x56b042(_0x31c4e8['error'][_0x0f99('0x17')]);}logger[_0x0f99('0x15')](_0x0f99('0x18'),_0x40e2e8,_0x31c4e8[_0x0f99('0x15')][_0x0f99('0x17')]);return _0x32a489(_0x31c4e8['error'][_0x0f99('0x17')]);}else{logger[_0x0f99('0x10')]('ChatQueue,\x20%s,\x20%s',_0x40e2e8,_0x0f99('0x13'));_0x32a489(_0x31c4e8[_0x0f99('0x19')][_0x0f99('0x17')]);}})[_0x0f99('0x1a')](function(_0x34b545){logger[_0x0f99('0x15')](_0x0f99('0x18'),_0x40e2e8,_0x34b545);_0x56b042(_0x34b545);});});}exports[_0x0f99('0x1b')]=function(_0x119e5d){var _0x347656=this;return new Promise(function(_0x4f1fb1,_0x2f977c){return db[_0x0f99('0x1c')][_0x0f99('0x1d')]({'raw':_0x119e5d['options']?_0x119e5d['options'][_0x0f99('0x1e')]===undefined?!![]:![]:!![],'where':_0x119e5d[_0x0f99('0x1f')]?_0x119e5d['options'][_0x0f99('0x20')]||null:null,'attributes':_0x119e5d[_0x0f99('0x1f')]?_0x119e5d[_0x0f99('0x1f')]['attributes']||null:null,'limit':_0x119e5d[_0x0f99('0x1f')]?_0x119e5d[_0x0f99('0x1f')][_0x0f99('0x21')]||null:null,'include':_0x119e5d[_0x0f99('0x1f')]?_0x119e5d[_0x0f99('0x1f')][_0x0f99('0x22')]?_[_0x0f99('0x23')](_0x119e5d[_0x0f99('0x1f')]['include'],function(_0x32584c){return{'model':db[_0x32584c[_0x0f99('0x24')]],'as':_0x32584c['as'],'attributes':_0x32584c['attributes'],'include':_0x32584c[_0x0f99('0x22')]?_[_0x0f99('0x23')](_0x32584c[_0x0f99('0x22')],function(_0x3a32c6){return{'model':db[_0x3a32c6['model']],'as':_0x3a32c6['as'],'attributes':_0x3a32c6['attributes'],'include':_0x3a32c6[_0x0f99('0x22')]?_[_0x0f99('0x23')](_0x3a32c6[_0x0f99('0x22')],function(_0x32eb8d){return{'model':db[_0x32eb8d['model']],'as':_0x32eb8d['as'],'attributes':_0x32eb8d[_0x0f99('0x25')]};}):[]};}):[]};}):[]:[]})[_0x0f99('0xf')](function(_0x7bdbd9){logger['info'](_0x0f99('0x1b'),_0x119e5d);logger['debug']('GetChatQueue',_0x119e5d,JSON[_0x0f99('0x14')](_0x7bdbd9));_0x4f1fb1(_0x7bdbd9);})['catch'](function(_0x4ed199){logger[_0x0f99('0x15')](_0x0f99('0x1b'),_0x4ed199['message'],_0x119e5d);_0x2f977c(_0x347656[_0x0f99('0x15')](0x1f4,_0x4ed199[_0x0f99('0x17')]));});});};exports[_0x0f99('0x26')]=function(_0x13a887){var _0x42e263=this;return new Promise(function(_0x32f40b,_0x5b86f8){return db['ChatQueue'][_0x0f99('0x27')]({'raw':_0x13a887[_0x0f99('0x1f')]?_0x13a887[_0x0f99('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x13a887[_0x0f99('0x1f')]?_0x13a887[_0x0f99('0x1f')][_0x0f99('0x20')]||null:null,'attributes':_0x13a887[_0x0f99('0x1f')]?_0x13a887[_0x0f99('0x1f')][_0x0f99('0x25')]||null:null,'include':_0x13a887[_0x0f99('0x1f')]?_0x13a887[_0x0f99('0x1f')][_0x0f99('0x22')]?_[_0x0f99('0x23')](_0x13a887[_0x0f99('0x1f')][_0x0f99('0x22')],function(_0x38c6f5){return{'model':db[_0x38c6f5[_0x0f99('0x24')]],'as':_0x38c6f5['as'],'attributes':_0x38c6f5[_0x0f99('0x25')],'include':_0x38c6f5['include']?_[_0x0f99('0x23')](_0x38c6f5[_0x0f99('0x22')],function(_0x2c5034){return{'model':db[_0x2c5034[_0x0f99('0x24')]],'as':_0x2c5034['as'],'attributes':_0x2c5034[_0x0f99('0x25')],'include':_0x2c5034[_0x0f99('0x22')]?_[_0x0f99('0x23')](_0x2c5034[_0x0f99('0x22')],function(_0x2b68fd){return{'model':db[_0x2b68fd[_0x0f99('0x24')]],'as':_0x2b68fd['as'],'attributes':_0x2b68fd[_0x0f99('0x25')]};}):[]};}):[]};}):[]:[]})[_0x0f99('0xf')](function(_0x2f644f){logger['info'](_0x0f99('0x26'),_0x13a887);logger[_0x0f99('0x11')](_0x0f99('0x26'),_0x13a887,JSON['stringify'](_0x2f644f));_0x32f40b(_0x2f644f);})[_0x0f99('0x1a')](function(_0x50a145){logger[_0x0f99('0x15')](_0x0f99('0x26'),_0x50a145[_0x0f99('0x17')],_0x13a887);_0x5b86f8(_0x42e263[_0x0f99('0x15')](0x1f4,_0x50a145[_0x0f99('0x17')]));});});};
\ No newline at end of file
index 7c7a57f..7e0a595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['removeListener','register','chatQueue:','./chatQueue.events','save','remove','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9a19,0x114));var _0x99a1=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0x9a19[_0x2b9b7f];return _0x4ed19a;};'use strict';var ChatQueueEvents=require(_0x99a1('0x0'));var events=[_0x99a1('0x1'),_0x99a1('0x2'),'update'];function createListener(_0x16fd8b,_0x2ba463){return function(_0x112bcc){_0x2ba463[_0x99a1('0x3')](_0x16fd8b,_0x112bcc);};}function removeListener(_0x214082,_0x3d73c5){return function(){ChatQueueEvents[_0x99a1('0x4')](_0x214082,_0x3d73c5);};}exports[_0x99a1('0x5')]=function(_0x3eff4a){for(var _0xff0240=0x0,_0x65045d=events['length'];_0xff0240<_0x65045d;_0xff0240++){var _0x4d2a5c=events[_0xff0240];var _0x5aa6c2=createListener(_0x99a1('0x6')+_0x4d2a5c,_0x3eff4a);ChatQueueEvents['on'](_0x4d2a5c,_0x5aa6c2);}};
\ No newline at end of file
+var _0x826a=['update','emit','removeListener','register','length','chatQueue:','save'];(function(_0x145c02,_0x3e40bf){var _0x1b59fa=function(_0x2aa272){while(--_0x2aa272){_0x145c02['push'](_0x145c02['shift']());}};_0x1b59fa(++_0x3e40bf);}(_0x826a,0x1aa));var _0xa826=function(_0x5046bf,_0x501609){_0x5046bf=_0x5046bf-0x0;var _0x2e03df=_0x826a[_0x5046bf];return _0x2e03df;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0xa826('0x0'),'remove',_0xa826('0x1')];function createListener(_0x50c70e,_0x376d53){return function(_0x19ba11){_0x376d53[_0xa826('0x2')](_0x50c70e,_0x19ba11);};}function removeListener(_0x34e1ad,_0x5372ab){return function(){ChatQueueEvents[_0xa826('0x3')](_0x34e1ad,_0x5372ab);};}exports[_0xa826('0x4')]=function(_0x3929d4){for(var _0x34327b=0x0,_0x45154f=events[_0xa826('0x5')];_0x34327b<_0x45154f;_0x34327b++){var _0x4339f9=events[_0x34327b];var _0x14c2ba=createListener(_0xa826('0x6')+_0x4339f9,_0x3929d4);ChatQueueEvents['on'](_0x4339f9,_0x14c2ba);}};
\ No newline at end of file
index 7365171..ef3a3f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x36a00a,_0x86031f){var _0x4fba83=function(_0x5574f2){while(--_0x5574f2){_0x36a00a['push'](_0x36a00a['shift']());}};_0x4fba83(++_0x86031f);}(_0x7217,0x19e));var _0x7721=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x7217[_0x4154a6];return _0x3b2786;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getAgents']);router[_0x7721('0x14')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x14')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x15')]);router['post'](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['addAgents']);router['put']('/:id',auth[_0x7721('0x9')](),controller[_0x7721('0x16')]);router[_0x7721('0x17')](_0x7721('0xd'),auth['isAuthenticated'](),controller[_0x7721('0x18')]);router['delete'](_0x7721('0x11'),auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x17')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1a')]);module[_0x7721('0x1b')]=router;
\ No newline at end of file
+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(_0x576217,_0x271e63){var _0x489efa=function(_0x5ae9fc){while(--_0x5ae9fc){_0x576217['push'](_0x576217['shift']());}};_0x489efa(++_0x271e63);}(_0xe14b,0x93));var _0xbe14=function(_0xd0e86f,_0x413ab5){_0xd0e86f=_0xd0e86f-0x0;var _0x5bb972=_0xe14b[_0xd0e86f];return _0x5bb972;};'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 e0b62b7..d828e88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3954=['DATE','moment','sequelize','STRING'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3954,0x16d));var _0x4395=function(_0x5c2c9d,_0x4fafe1){_0x5c2c9d=_0x5c2c9d-0x0;var _0x20cda4=_0x3954[_0x5c2c9d];return _0x20cda4;};'use strict';var moment=require(_0x4395('0x0'));var Sequelize=require(_0x4395('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x4395('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x4395('0x3')]},'leaveAt':{'type':Sequelize[_0x4395('0x3')]},'acceptAt':{'type':Sequelize[_0x4395('0x3')]},'exitAt':{'type':Sequelize[_0x4395('0x3')]},'reason':{'type':Sequelize[_0x4395('0x2')]}};
\ No newline at end of file
+var _0x397a=['moment','sequelize','exports','STRING','DATE'];(function(_0x43e4b3,_0x1444de){var _0x10c655=function(_0x56c01d){while(--_0x56c01d){_0x43e4b3['push'](_0x43e4b3['shift']());}};_0x10c655(++_0x1444de);}(_0x397a,0x1ea));var _0xa397=function(_0x280da9,_0x281ef7){_0x280da9=_0x280da9-0x0;var _0x47e86c=_0x397a[_0x280da9];return _0x47e86c;};'use strict';var moment=require(_0xa397('0x0'));var Sequelize=require(_0xa397('0x1'));module[_0xa397('0x2')]={'uniqueid':{'type':Sequelize[_0xa397('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xa397('0x3')]},'joinAt':{'type':Sequelize[_0xa397('0x4')]},'leaveAt':{'type':Sequelize[_0xa397('0x4')]},'acceptAt':{'type':Sequelize[_0xa397('0x4')]},'exitAt':{'type':Sequelize[_0xa397('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ba6fee8..3f7fddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1115=['crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','ChatQueueReport','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','squel'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1115,0x1b6));var _0x5111=function(_0x5ec706,_0x60f8df){_0x5ec706=_0x5ec706-0x0;var _0x391992=_0x1115[_0x5ec706];return _0x391992;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5111('0x0'));var zipdir=require(_0x5111('0x1'));var jsonpatch=require(_0x5111('0x2'));var rp=require(_0x5111('0x3'));var moment=require(_0x5111('0x4'));var BPromise=require(_0x5111('0x5'));var Mustache=require(_0x5111('0x6'));var util=require(_0x5111('0x7'));var path=require(_0x5111('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5111('0x9'));var fs=require('fs');var fs_extra=require(_0x5111('0xa'));var _=require('lodash');var squel=require(_0x5111('0xb'));var crypto=require(_0x5111('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5111('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5111('0xe'));var Papa=require(_0x5111('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5111('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5111('0x11'));var logger=require('../../config/logger')(_0x5111('0x12'));var utils=require(_0x5111('0x13'));var config=require(_0x5111('0x14'));var licenseUtil=require(_0x5111('0x15'));var db=require(_0x5111('0x16'))['db'];function respondWithStatusCode(_0x54f83a,_0x266625){_0x266625=_0x266625||0xcc;return function(_0x14b4e3){if(_0x14b4e3){return _0x54f83a[_0x5111('0x17')](_0x266625);}return _0x54f83a[_0x5111('0x18')](_0x266625)[_0x5111('0x19')]();};}function respondWithResult(_0x62ce44,_0x264703){_0x264703=_0x264703||0xc8;return function(_0x3e60b5){if(_0x3e60b5){return _0x62ce44[_0x5111('0x18')](_0x264703)[_0x5111('0x1a')](_0x3e60b5);}};}function respondWithFilteredResult(_0x77ddfd,_0x45052e){return function(_0x478b68){if(_0x478b68){var _0x1ac606=typeof _0x45052e['offset']==='undefined'&&typeof _0x45052e[_0x5111('0x1b')]===_0x5111('0x1c');var _0x638470=_0x478b68['count'];var _0x367f8d=_0x1ac606?0x0:_0x45052e[_0x5111('0x1d')];var _0x52c614=_0x1ac606?_0x478b68[_0x5111('0x1e')]:_0x45052e[_0x5111('0x1d')]+_0x45052e[_0x5111('0x1b')];var _0x1b3b45;if(_0x52c614>=_0x638470){_0x52c614=_0x638470;_0x1b3b45=0xc8;}else{_0x1b3b45=0xce;}_0x77ddfd['status'](_0x1b3b45);return _0x77ddfd[_0x5111('0x1f')](_0x5111('0x20'),_0x367f8d+'-'+_0x52c614+'/'+_0x638470)[_0x5111('0x1a')](_0x478b68);}return null;};}function patchUpdates(_0x1b3136){return function(_0x22c7cd){try{jsonpatch[_0x5111('0x21')](_0x22c7cd,_0x1b3136,!![]);}catch(_0x3e8de1){return BPromise[_0x5111('0x22')](_0x3e8de1);}return _0x22c7cd[_0x5111('0x23')]();};}function saveUpdates(_0x3a3fae,_0x4b73ce){return function(_0x3f462d){if(_0x3f462d){return _0x3f462d[_0x5111('0x24')](_0x3a3fae)[_0x5111('0x25')](function(_0x5bf534){return _0x5bf534;});}return null;};}function removeEntity(_0x28cc87,_0x20a4f7){return function(_0x2d9446){if(_0x2d9446){return _0x2d9446[_0x5111('0x26')]()[_0x5111('0x25')](function(){_0x28cc87[_0x5111('0x18')](0xcc)[_0x5111('0x19')]();});}};}function handleEntityNotFound(_0x316b39,_0x382bd0){return function(_0x1a5793){if(!_0x1a5793){_0x316b39['sendStatus'](0x194);}return _0x1a5793;};}function handleError(_0x1bdd54,_0x3d6825){_0x3d6825=_0x3d6825||0x1f4;return function(_0x151b67){logger[_0x5111('0x27')](_0x151b67[_0x5111('0x28')]);if(_0x151b67[_0x5111('0x29')]){delete _0x151b67[_0x5111('0x29')];}_0x1bdd54['status'](_0x3d6825)[_0x5111('0x2a')](_0x151b67);};}exports[_0x5111('0x2b')]=function(_0x25a75a,_0x5efec6){var _0xdf9031={},_0x28efc1={},_0x16107a={'count':0x0,'rows':[]};var _0x48379a=_['map'](db[_0x5111('0x2c')]['rawAttributes'],function(_0xbacf9e){return{'name':_0xbacf9e['fieldName'],'type':_0xbacf9e[_0x5111('0x2d')]['key']};});_0x28efc1['model']=_['map'](_0x48379a,_0x5111('0x29'));_0x28efc1[_0x5111('0x2e')]=_[_0x5111('0x2f')](_0x25a75a[_0x5111('0x2e')]);_0x28efc1[_0x5111('0x30')]=_[_0x5111('0x31')](_0x28efc1[_0x5111('0x32')],_0x28efc1['query']);_0xdf9031[_0x5111('0x33')]=_[_0x5111('0x31')](_0x28efc1[_0x5111('0x32')],qs[_0x5111('0x34')](_0x25a75a['query']['fields']));_0xdf9031[_0x5111('0x33')]=_0xdf9031[_0x5111('0x33')][_0x5111('0x35')]?_0xdf9031[_0x5111('0x33')]:_0x28efc1[_0x5111('0x32')];if(!_0x25a75a[_0x5111('0x2e')][_0x5111('0x36')](_0x5111('0x37'))){_0xdf9031['limit']=qs[_0x5111('0x1b')](_0x25a75a[_0x5111('0x2e')][_0x5111('0x1b')]);_0xdf9031['offset']=qs[_0x5111('0x1d')](_0x25a75a[_0x5111('0x2e')][_0x5111('0x1d')]);}_0xdf9031['order']=qs['sort'](_0x25a75a['query'][_0x5111('0x38')]);_0xdf9031[_0x5111('0x39')]=qs[_0x5111('0x30')](_[_0x5111('0x3a')](_0x25a75a[_0x5111('0x2e')],_0x28efc1['filters']),_0x48379a);if(_0x25a75a[_0x5111('0x2e')][_0x5111('0x3b')]){_0xdf9031[_0x5111('0x39')]=_[_0x5111('0x3c')](_0xdf9031['where'],{'$or':_[_0x5111('0x3d')](_0x48379a,function(_0x444d82){if(_0x444d82[_0x5111('0x2d')]!==_0x5111('0x3e')){var _0x2f0224={};_0x2f0224[_0x444d82[_0x5111('0x29')]]={'$like':'%'+_0x25a75a[_0x5111('0x2e')][_0x5111('0x3b')]+'%'};return _0x2f0224;}})});}_0xdf9031=_[_0x5111('0x3c')]({},_0xdf9031,_0x25a75a[_0x5111('0x3f')]);var _0x35c3b5={'where':_0xdf9031[_0x5111('0x39')]};return db[_0x5111('0x2c')]['count'](_0x35c3b5)[_0x5111('0x25')](function(_0xf00f9){_0x16107a['count']=_0xf00f9;if(_0x25a75a[_0x5111('0x2e')][_0x5111('0x40')]){_0xdf9031[_0x5111('0x41')]=[{'all':!![]}];}return db[_0x5111('0x2c')][_0x5111('0x42')](_0xdf9031);})[_0x5111('0x25')](function(_0x1f1534){_0x16107a['rows']=_0x1f1534;return _0x16107a;})[_0x5111('0x25')](respondWithFilteredResult(_0x5efec6,_0xdf9031))[_0x5111('0x43')](handleError(_0x5efec6,null));};exports[_0x5111('0x44')]=function(_0x1c2e17,_0x96893c){var _0x49307f={'raw':!![],'where':{'id':_0x1c2e17[_0x5111('0x45')]['id']}},_0x50a293={};_0x50a293[_0x5111('0x32')]=_['keys'](db[_0x5111('0x2c')][_0x5111('0x46')]);_0x50a293[_0x5111('0x2e')]=_[_0x5111('0x2f')](_0x1c2e17[_0x5111('0x2e')]);_0x50a293[_0x5111('0x30')]=_[_0x5111('0x31')](_0x50a293[_0x5111('0x32')],_0x50a293[_0x5111('0x2e')]);_0x49307f[_0x5111('0x33')]=_['intersection'](_0x50a293['model'],qs[_0x5111('0x34')](_0x1c2e17[_0x5111('0x2e')][_0x5111('0x34')]));_0x49307f[_0x5111('0x33')]=_0x49307f[_0x5111('0x33')][_0x5111('0x35')]?_0x49307f['attributes']:_0x50a293[_0x5111('0x32')];if(_0x1c2e17[_0x5111('0x2e')][_0x5111('0x40')]){_0x49307f[_0x5111('0x41')]=[{'all':!![]}];}_0x49307f=_['merge']({},_0x49307f,_0x1c2e17[_0x5111('0x3f')]);return db[_0x5111('0x2c')][_0x5111('0x47')](_0x49307f)['then'](handleEntityNotFound(_0x96893c,null))[_0x5111('0x25')](respondWithResult(_0x96893c,null))[_0x5111('0x43')](handleError(_0x96893c,null));};exports[_0x5111('0x48')]=function(_0x2d64de,_0x5cd7a5){return db['ChatQueueReport'][_0x5111('0x48')](_0x2d64de['body'],{})['then'](respondWithResult(_0x5cd7a5,0xc9))[_0x5111('0x43')](handleError(_0x5cd7a5,null));};exports[_0x5111('0x24')]=function(_0x4aa934,_0x296f87){if(_0x4aa934[_0x5111('0x49')]['id']){delete _0x4aa934[_0x5111('0x49')]['id'];}return db[_0x5111('0x2c')][_0x5111('0x47')]({'where':{'id':_0x4aa934[_0x5111('0x45')]['id']}})[_0x5111('0x25')](handleEntityNotFound(_0x296f87,null))[_0x5111('0x25')](saveUpdates(_0x4aa934[_0x5111('0x49')],null))[_0x5111('0x25')](respondWithResult(_0x296f87,null))[_0x5111('0x43')](handleError(_0x296f87,null));};exports[_0x5111('0x26')]=function(_0x53d631,_0x79427d){return db[_0x5111('0x2c')][_0x5111('0x47')]({'where':{'id':_0x53d631[_0x5111('0x45')]['id']}})[_0x5111('0x25')](handleEntityNotFound(_0x79427d,null))[_0x5111('0x25')](removeEntity(_0x79427d,null))[_0x5111('0x43')](handleError(_0x79427d,null));};exports['describe']=function(_0x55cba5,_0x13fe1b){return db['ChatQueueReport'][_0x5111('0x4a')]()[_0x5111('0x25')](respondWithResult(_0x13fe1b,null))[_0x5111('0x43')](handleError(_0x13fe1b,null));};
\ No newline at end of file
+var _0xc21e=['length','hasOwnProperty','nolimit','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','merge','find','create','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','save','update','destroy','then','end','error','stack','name','index','map','ChatQueueReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes'];(function(_0x5d3414,_0x540d0b){var _0x3492d1=function(_0x27ecc5){while(--_0x27ecc5){_0x5d3414['push'](_0x5d3414['shift']());}};_0x3492d1(++_0x540d0b);}(_0xc21e,0x1ca));var _0xec21=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xc21e[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xec21('0x0'));var zipdir=require(_0xec21('0x1'));var jsonpatch=require(_0xec21('0x2'));var rp=require(_0xec21('0x3'));var moment=require(_0xec21('0x4'));var BPromise=require(_0xec21('0x5'));var Mustache=require('mustache');var util=require(_0xec21('0x6'));var path=require(_0xec21('0x7'));var sox=require(_0xec21('0x8'));var csv=require(_0xec21('0x9'));var ejs=require(_0xec21('0xa'));var fs=require('fs');var fs_extra=require(_0xec21('0xb'));var _=require(_0xec21('0xc'));var squel=require(_0xec21('0xd'));var crypto=require('crypto');var jsforce=require(_0xec21('0xe'));var deskjs=require(_0xec21('0xf'));var toCsv=require(_0xec21('0x9'));var querystring=require(_0xec21('0x10'));var Papa=require(_0xec21('0x11'));var Redis=require('ioredis');var authService=require(_0xec21('0x12'));var qs=require(_0xec21('0x13'));var as=require(_0xec21('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xec21('0x15'));var utils=require(_0xec21('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xec21('0x17'));var db=require(_0xec21('0x18'))['db'];function respondWithStatusCode(_0xd9232e,_0x3a6e6a){_0x3a6e6a=_0x3a6e6a||0xcc;return function(_0xc1cca0){if(_0xc1cca0){return _0xd9232e['sendStatus'](_0x3a6e6a);}return _0xd9232e[_0xec21('0x19')](_0x3a6e6a)['end']();};}function respondWithResult(_0x3ea83f,_0x1987f4){_0x1987f4=_0x1987f4||0xc8;return function(_0x34e6af){if(_0x34e6af){return _0x3ea83f['status'](_0x1987f4)[_0xec21('0x1a')](_0x34e6af);}};}function respondWithFilteredResult(_0x3ee6f7,_0x3838c3){return function(_0x2c3124){if(_0x2c3124){var _0x324853=typeof _0x3838c3[_0xec21('0x1b')]===_0xec21('0x1c')&&typeof _0x3838c3[_0xec21('0x1d')]==='undefined';var _0x398c29=_0x2c3124[_0xec21('0x1e')];var _0x2fcbcc=_0x324853?0x0:_0x3838c3[_0xec21('0x1b')];var _0x3ab226=_0x324853?_0x2c3124[_0xec21('0x1e')]:_0x3838c3[_0xec21('0x1b')]+_0x3838c3[_0xec21('0x1d')];var _0x3c790e;if(_0x3ab226>=_0x398c29){_0x3ab226=_0x398c29;_0x3c790e=0xc8;}else{_0x3c790e=0xce;}_0x3ee6f7[_0xec21('0x19')](_0x3c790e);return _0x3ee6f7['set']('Content-Range',_0x2fcbcc+'-'+_0x3ab226+'/'+_0x398c29)[_0xec21('0x1a')](_0x2c3124);}return null;};}function patchUpdates(_0x2f4ef9){return function(_0x5ab97e){try{jsonpatch['apply'](_0x5ab97e,_0x2f4ef9,!![]);}catch(_0x176b59){return BPromise[_0xec21('0x1f')](_0x176b59);}return _0x5ab97e[_0xec21('0x20')]();};}function saveUpdates(_0x5dff00,_0x17d1ac){return function(_0x1f86d2){if(_0x1f86d2){return _0x1f86d2[_0xec21('0x21')](_0x5dff00)['then'](function(_0x20ede9){return _0x20ede9;});}return null;};}function removeEntity(_0x454d31,_0x2d521a){return function(_0x46fd9e){if(_0x46fd9e){return _0x46fd9e[_0xec21('0x22')]()[_0xec21('0x23')](function(){_0x454d31['status'](0xcc)[_0xec21('0x24')]();});}};}function handleEntityNotFound(_0x26cdae,_0x4cd699){return function(_0x19b556){if(!_0x19b556){_0x26cdae['sendStatus'](0x194);}return _0x19b556;};}function handleError(_0x27e2d,_0x49fd27){_0x49fd27=_0x49fd27||0x1f4;return function(_0x4ef840){logger[_0xec21('0x25')](_0x4ef840[_0xec21('0x26')]);if(_0x4ef840[_0xec21('0x27')]){delete _0x4ef840[_0xec21('0x27')];}_0x27e2d[_0xec21('0x19')](_0x49fd27)['send'](_0x4ef840);};}exports[_0xec21('0x28')]=function(_0x592971,_0x343f4f){var _0x233bf9={},_0x116a23={},_0x35b2bf={'count':0x0,'rows':[]};var _0x4dd56b=_[_0xec21('0x29')](db[_0xec21('0x2a')][_0xec21('0x2b')],function(_0x233231){return{'name':_0x233231[_0xec21('0x2c')],'type':_0x233231[_0xec21('0x2d')][_0xec21('0x2e')]};});_0x116a23[_0xec21('0x2f')]=_[_0xec21('0x29')](_0x4dd56b,_0xec21('0x27'));_0x116a23[_0xec21('0x30')]=_['keys'](_0x592971[_0xec21('0x30')]);_0x116a23[_0xec21('0x31')]=_[_0xec21('0x32')](_0x116a23[_0xec21('0x2f')],_0x116a23[_0xec21('0x30')]);_0x233bf9['attributes']=_[_0xec21('0x32')](_0x116a23['model'],qs['fields'](_0x592971['query'][_0xec21('0x33')]));_0x233bf9[_0xec21('0x34')]=_0x233bf9[_0xec21('0x34')][_0xec21('0x35')]?_0x233bf9[_0xec21('0x34')]:_0x116a23[_0xec21('0x2f')];if(!_0x592971[_0xec21('0x30')][_0xec21('0x36')](_0xec21('0x37'))){_0x233bf9[_0xec21('0x1d')]=qs[_0xec21('0x1d')](_0x592971[_0xec21('0x30')]['limit']);_0x233bf9[_0xec21('0x1b')]=qs[_0xec21('0x1b')](_0x592971['query'][_0xec21('0x1b')]);}_0x233bf9['order']=qs['sort'](_0x592971[_0xec21('0x30')]['sort']);_0x233bf9[_0xec21('0x38')]=qs['filters'](_[_0xec21('0x39')](_0x592971[_0xec21('0x30')],_0x116a23['filters']),_0x4dd56b);if(_0x592971[_0xec21('0x30')][_0xec21('0x3a')]){_0x233bf9[_0xec21('0x38')]=_['merge'](_0x233bf9[_0xec21('0x38')],{'$or':_[_0xec21('0x29')](_0x4dd56b,function(_0xcce304){if(_0xcce304['type']!==_0xec21('0x3b')){var _0x2cf43b={};_0x2cf43b[_0xcce304[_0xec21('0x27')]]={'$like':'%'+_0x592971[_0xec21('0x30')][_0xec21('0x3a')]+'%'};return _0x2cf43b;}})});}_0x233bf9=_['merge']({},_0x233bf9,_0x592971[_0xec21('0x3c')]);var _0xc36cc2={'where':_0x233bf9['where']};return db[_0xec21('0x2a')]['count'](_0xc36cc2)[_0xec21('0x23')](function(_0x18e20d){_0x35b2bf[_0xec21('0x1e')]=_0x18e20d;if(_0x592971['query'][_0xec21('0x3d')]){_0x233bf9[_0xec21('0x3e')]=[{'all':!![]}];}return db[_0xec21('0x2a')][_0xec21('0x3f')](_0x233bf9);})['then'](function(_0x575e99){_0x35b2bf[_0xec21('0x40')]=_0x575e99;return _0x35b2bf;})['then'](respondWithFilteredResult(_0x343f4f,_0x233bf9))[_0xec21('0x41')](handleError(_0x343f4f,null));};exports['show']=function(_0x16a794,_0x52e024){var _0x46d4f4={'raw':!![],'where':{'id':_0x16a794['params']['id']}},_0x3510dd={};_0x3510dd[_0xec21('0x2f')]=_[_0xec21('0x42')](db['ChatQueueReport'][_0xec21('0x2b')]);_0x3510dd[_0xec21('0x30')]=_[_0xec21('0x42')](_0x16a794[_0xec21('0x30')]);_0x3510dd[_0xec21('0x31')]=_[_0xec21('0x32')](_0x3510dd[_0xec21('0x2f')],_0x3510dd[_0xec21('0x30')]);_0x46d4f4[_0xec21('0x34')]=_['intersection'](_0x3510dd['model'],qs[_0xec21('0x33')](_0x16a794[_0xec21('0x30')][_0xec21('0x33')]));_0x46d4f4['attributes']=_0x46d4f4[_0xec21('0x34')][_0xec21('0x35')]?_0x46d4f4[_0xec21('0x34')]:_0x3510dd['model'];if(_0x16a794['query']['includeAll']){_0x46d4f4[_0xec21('0x3e')]=[{'all':!![]}];}_0x46d4f4=_[_0xec21('0x43')]({},_0x46d4f4,_0x16a794[_0xec21('0x3c')]);return db[_0xec21('0x2a')][_0xec21('0x44')](_0x46d4f4)[_0xec21('0x23')](handleEntityNotFound(_0x52e024,null))[_0xec21('0x23')](respondWithResult(_0x52e024,null))['catch'](handleError(_0x52e024,null));};exports[_0xec21('0x45')]=function(_0x21fe90,_0x2edf34){return db[_0xec21('0x2a')][_0xec21('0x45')](_0x21fe90[_0xec21('0x46')],{})[_0xec21('0x23')](respondWithResult(_0x2edf34,0xc9))[_0xec21('0x41')](handleError(_0x2edf34,null));};exports['update']=function(_0x4204d7,_0x21e67f){if(_0x4204d7[_0xec21('0x46')]['id']){delete _0x4204d7['body']['id'];}return db['ChatQueueReport']['find']({'where':{'id':_0x4204d7[_0xec21('0x47')]['id']}})[_0xec21('0x23')](handleEntityNotFound(_0x21e67f,null))['then'](saveUpdates(_0x4204d7[_0xec21('0x46')],null))[_0xec21('0x23')](respondWithResult(_0x21e67f,null))[_0xec21('0x41')](handleError(_0x21e67f,null));};exports['destroy']=function(_0x2d6426,_0x5e90eb){return db[_0xec21('0x2a')]['find']({'where':{'id':_0x2d6426[_0xec21('0x47')]['id']}})[_0xec21('0x23')](handleEntityNotFound(_0x5e90eb,null))[_0xec21('0x23')](removeEntity(_0x5e90eb,null))[_0xec21('0x41')](handleError(_0x5e90eb,null));};exports[_0xec21('0x48')]=function(_0x5c994d,_0x157d42){return db['ChatQueueReport'][_0xec21('0x48')]()['then'](respondWithResult(_0x157d42,null))[_0xec21('0x41')](handleError(_0x157d42,null));};
\ No newline at end of file
index 9854054..c4ab94f 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(_0x19f9e6,_0x4f59a6){var _0x45c862=function(_0x3447fb){while(--_0x3447fb){_0x19f9e6['push'](_0x19f9e6['shift']());}};_0x45c862(++_0x4f59a6);}(_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 _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x5ed9c2,_0x1d7737){var _0x529395=function(_0x16fd46){while(--_0x16fd46){_0x5ed9c2['push'](_0x5ed9c2['shift']());}};_0x529395(++_0x1d7737);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./chatQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('ChatQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 4a33dfe..b0112ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0b0=['UpdateChatQueueReport','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','ChatQueueReport,\x20%s,\x20%s','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','CreateChatQueueReport','create','body','options','raw','ChatQueueReport','update','where','attributes','limit'];(function(_0x31144e,_0x14fc9e){var _0x44553c=function(_0x4431c1){while(--_0x4431c1){_0x31144e['push'](_0x31144e['shift']());}};_0x44553c(++_0x14fc9e);}(_0xf0b0,0x16c));var _0x0f0b=function(_0x2e26eb,_0x49afba){_0x2e26eb=_0x2e26eb-0x0;var _0x432e15=_0xf0b0[_0x2e26eb];return _0x432e15;};'use strict';var _=require('lodash');var util=require(_0x0f0b('0x0'));var moment=require(_0x0f0b('0x1'));var BPromise=require(_0x0f0b('0x2'));var rs=require(_0x0f0b('0x3'));var fs=require('fs');var Redis=require(_0x0f0b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0f0b('0x5'));var logger=require(_0x0f0b('0x6'))(_0x0f0b('0x7'));var config=require(_0x0f0b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0f0b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1fcbb9,_0x444876,_0x34712e){return new BPromise(function(_0x2bd5f5,_0x4f497d){return client[_0x0f0b('0xa')](_0x1fcbb9,_0x34712e)[_0x0f0b('0xb')](function(_0x259167){logger[_0x0f0b('0xc')](_0x0f0b('0xd'),_0x444876,'request\x20sent');logger[_0x0f0b('0xe')](_0x0f0b('0xf'),_0x444876,'request\x20sent',JSON[_0x0f0b('0x10')](_0x259167));if(_0x259167[_0x0f0b('0x11')]){if(_0x259167[_0x0f0b('0x11')][_0x0f0b('0x12')]===0x1f4){logger[_0x0f0b('0x11')](_0x0f0b('0xd'),_0x444876,_0x259167['error'][_0x0f0b('0x13')]);return _0x4f497d(_0x259167['error'][_0x0f0b('0x13')]);}logger[_0x0f0b('0x11')](_0x0f0b('0xd'),_0x444876,_0x259167[_0x0f0b('0x11')][_0x0f0b('0x13')]);return _0x2bd5f5(_0x259167[_0x0f0b('0x11')][_0x0f0b('0x13')]);}else{logger[_0x0f0b('0xc')](_0x0f0b('0xd'),_0x444876,_0x0f0b('0x14'));_0x2bd5f5(_0x259167['result'][_0x0f0b('0x13')]);}})[_0x0f0b('0x15')](function(_0x5eeb66){logger[_0x0f0b('0x11')]('ChatQueueReport,\x20%s,\x20%s',_0x444876,_0x5eeb66);_0x4f497d(_0x5eeb66);});});}exports[_0x0f0b('0x16')]=function(_0x2c03a6){var _0x5d8fa1=this;return new Promise(function(_0x3d0572,_0x2f52a5){return db['ChatQueueReport'][_0x0f0b('0x17')](_0x2c03a6[_0x0f0b('0x18')],{'raw':_0x2c03a6[_0x0f0b('0x19')]?_0x2c03a6[_0x0f0b('0x19')][_0x0f0b('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x365c76){logger[_0x0f0b('0xc')]('CreateChatQueueReport',_0x2c03a6);logger[_0x0f0b('0xe')](_0x0f0b('0x16'),_0x2c03a6,JSON[_0x0f0b('0x10')](_0x365c76));_0x3d0572(_0x365c76);})['catch'](function(_0x3b5a54){logger[_0x0f0b('0x11')]('CreateChatQueueReport',_0x3b5a54['message'],_0x2c03a6);_0x2f52a5(_0x5d8fa1['error'](0x1f4,_0x3b5a54[_0x0f0b('0x13')]));});});};exports['UpdateChatQueueReport']=function(_0x69d616){var _0x1fdbb4=this;return new Promise(function(_0xe34c31,_0x2be5d6){return db[_0x0f0b('0x1b')][_0x0f0b('0x1c')](_0x69d616[_0x0f0b('0x18')],{'raw':_0x69d616['options']?_0x69d616[_0x0f0b('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x69d616[_0x0f0b('0x19')]?_0x69d616['options'][_0x0f0b('0x1d')]||null:null,'attributes':_0x69d616[_0x0f0b('0x19')]?_0x69d616[_0x0f0b('0x19')][_0x0f0b('0x1e')]||null:null,'limit':_0x69d616[_0x0f0b('0x19')]?_0x69d616[_0x0f0b('0x19')][_0x0f0b('0x1f')]||null:null})['then'](function(_0xa62c01){logger[_0x0f0b('0xc')](_0x0f0b('0x20'),_0x69d616);logger[_0x0f0b('0xe')]('UpdateChatQueueReport',_0x69d616,JSON['stringify'](_0xa62c01));_0xe34c31(_0xa62c01);})[_0x0f0b('0x15')](function(_0x52cd58){logger[_0x0f0b('0x11')]('UpdateChatQueueReport',_0x52cd58[_0x0f0b('0x13')],_0x69d616);_0x2be5d6(_0x1fdbb4[_0x0f0b('0x11')](0x1f4,_0x52cd58[_0x0f0b('0x13')]));});});};
\ No newline at end of file
+var _0x0be6=['info','result','catch','ChatQueueReport','create','body','options','CreateChatQueueReport','UpdateChatQueueReport','raw','where','attributes','limit','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','then','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueueReport,\x20%s,\x20%s','message'];(function(_0x5191a7,_0x1a08f0){var _0x5c4350=function(_0x5bff07){while(--_0x5bff07){_0x5191a7['push'](_0x5191a7['shift']());}};_0x5c4350(++_0x1a08f0);}(_0x0be6,0xa8));var _0x60be=function(_0x14f368,_0x212355){_0x14f368=_0x14f368-0x0;var _0x27db3f=_0x0be6[_0x14f368];return _0x27db3f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x60be('0x0'));var BPromise=require(_0x60be('0x1'));var rs=require(_0x60be('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x60be('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x60be('0x4'))(_0x60be('0x5'));var config=require('../../config/environment');var jayson=require(_0x60be('0x6'));var client=jayson[_0x60be('0x7')][_0x60be('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x57bdf1,_0x4ce415,_0x192030){return new BPromise(function(_0x1c024e,_0x5a2581){return client['request'](_0x57bdf1,_0x192030)[_0x60be('0x9')](function(_0x15c6c7){logger['info']('ChatQueueReport,\x20%s,\x20%s',_0x4ce415,_0x60be('0xa'));logger[_0x60be('0xb')](_0x60be('0xc'),_0x4ce415,'request\x20sent',JSON[_0x60be('0xd')](_0x15c6c7));if(_0x15c6c7[_0x60be('0xe')]){if(_0x15c6c7[_0x60be('0xe')][_0x60be('0xf')]===0x1f4){logger[_0x60be('0xe')](_0x60be('0x10'),_0x4ce415,_0x15c6c7[_0x60be('0xe')]['message']);return _0x5a2581(_0x15c6c7[_0x60be('0xe')][_0x60be('0x11')]);}logger[_0x60be('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x4ce415,_0x15c6c7[_0x60be('0xe')]['message']);return _0x1c024e(_0x15c6c7['error'][_0x60be('0x11')]);}else{logger[_0x60be('0x12')](_0x60be('0x10'),_0x4ce415,_0x60be('0xa'));_0x1c024e(_0x15c6c7[_0x60be('0x13')][_0x60be('0x11')]);}})[_0x60be('0x14')](function(_0x280059){logger[_0x60be('0xe')](_0x60be('0x10'),_0x4ce415,_0x280059);_0x5a2581(_0x280059);});});}exports['CreateChatQueueReport']=function(_0x1d8968){var _0x4d8f73=this;return new Promise(function(_0x2ca85c,_0x2673f3){return db[_0x60be('0x15')][_0x60be('0x16')](_0x1d8968[_0x60be('0x17')],{'raw':_0x1d8968[_0x60be('0x18')]?_0x1d8968[_0x60be('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x60be('0x9')](function(_0x279a3a){logger[_0x60be('0x12')]('CreateChatQueueReport',_0x1d8968);logger[_0x60be('0xb')](_0x60be('0x19'),_0x1d8968,JSON[_0x60be('0xd')](_0x279a3a));_0x2ca85c(_0x279a3a);})[_0x60be('0x14')](function(_0x44883d){logger[_0x60be('0xe')](_0x60be('0x19'),_0x44883d[_0x60be('0x11')],_0x1d8968);_0x2673f3(_0x4d8f73[_0x60be('0xe')](0x1f4,_0x44883d[_0x60be('0x11')]));});});};exports[_0x60be('0x1a')]=function(_0x553b91){var _0x5c3fba=this;return new Promise(function(_0xfc47e1,_0x4edebd){return db[_0x60be('0x15')]['update'](_0x553b91['body'],{'raw':_0x553b91[_0x60be('0x18')]?_0x553b91[_0x60be('0x18')][_0x60be('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x553b91['options']?_0x553b91[_0x60be('0x18')][_0x60be('0x1c')]||null:null,'attributes':_0x553b91[_0x60be('0x18')]?_0x553b91['options'][_0x60be('0x1d')]||null:null,'limit':_0x553b91[_0x60be('0x18')]?_0x553b91['options'][_0x60be('0x1e')]||null:null})[_0x60be('0x9')](function(_0x304ef4){logger[_0x60be('0x12')](_0x60be('0x1a'),_0x553b91);logger[_0x60be('0xb')](_0x60be('0x1a'),_0x553b91,JSON[_0x60be('0xd')](_0x304ef4));_0xfc47e1(_0x304ef4);})[_0x60be('0x14')](function(_0x117723){logger['error']('UpdateChatQueueReport',_0x117723['message'],_0x553b91);_0x4edebd(_0x5c3fba[_0x60be('0xe')](0x1f4,_0x117723[_0x60be('0x11')]));});});};
\ No newline at end of file
index d167297..67fbd82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x381a=['../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra'];(function(_0x34412f,_0x116bea){var _0x4b4b5a=function(_0x56fc5b){while(--_0x56fc5b){_0x34412f['push'](_0x34412f['shift']());}};_0x4b4b5a(++_0x116bea);}(_0x381a,0x13a));var _0xa381=function(_0x5127f4,_0xf5363b){_0x5127f4=_0x5127f4-0x0;var _0x3cdbcc=_0x381a[_0x5127f4];return _0x3cdbcc;};'use strict';var multer=require(_0xa381('0x0'));var util=require(_0xa381('0x1'));var path=require(_0xa381('0x2'));var timeout=require('connect-timeout');var express=require(_0xa381('0x3'));var router=express[_0xa381('0x4')]();var fs_extra=require(_0xa381('0x5'));var auth=require(_0xa381('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa381('0x7'));var controller=require('./chatQueueReport.controller');router[_0xa381('0x8')]('/',auth[_0xa381('0x9')](),controller['index']);router[_0xa381('0x8')](_0xa381('0xa'),auth[_0xa381('0x9')](),controller['describe']);router['get'](_0xa381('0xb'),auth['isAuthenticated'](),controller[_0xa381('0xc')]);router[_0xa381('0xd')]('/',auth[_0xa381('0x9')](),controller[_0xa381('0xe')]);router[_0xa381('0xf')](_0xa381('0xb'),auth[_0xa381('0x9')](),controller[_0xa381('0x10')]);router[_0xa381('0x11')](_0xa381('0xb'),auth[_0xa381('0x9')](),controller[_0xa381('0x12')]);module[_0xa381('0x13')]=router;
\ No newline at end of file
+var _0xb03d=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueueReport.controller','get','index','/describe','isAuthenticated','show','create','put','/:id','update','delete','multer'];(function(_0x3cef4d,_0x3f3516){var _0x8c5437=function(_0x12bf9e){while(--_0x12bf9e){_0x3cef4d['push'](_0x3cef4d['shift']());}};_0x8c5437(++_0x3f3516);}(_0xb03d,0x97));var _0xdb03=function(_0x3eef0f,_0x380369){_0x3eef0f=_0x3eef0f-0x0;var _0x4e8a69=_0xb03d[_0x3eef0f];return _0x4e8a69;};'use strict';var multer=require(_0xdb03('0x0'));var util=require(_0xdb03('0x1'));var path=require(_0xdb03('0x2'));var timeout=require(_0xdb03('0x3'));var express=require('express');var router=express[_0xdb03('0x4')]();var fs_extra=require(_0xdb03('0x5'));var auth=require(_0xdb03('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xdb03('0x7'));var controller=require(_0xdb03('0x8'));router[_0xdb03('0x9')]('/',auth['isAuthenticated'](),controller[_0xdb03('0xa')]);router[_0xdb03('0x9')](_0xdb03('0xb'),auth[_0xdb03('0xc')](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller[_0xdb03('0xd')]);router['post']('/',auth[_0xdb03('0xc')](),controller[_0xdb03('0xe')]);router[_0xdb03('0xf')](_0xdb03('0x10'),auth['isAuthenticated'](),controller[_0xdb03('0x11')]);router[_0xdb03('0x12')](_0xdb03('0x10'),auth[_0xdb03('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 881990e..f40c053 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(_0x4843f9,_0x4af459){var _0x193c6a=function(_0x51eca9){while(--_0x51eca9){_0x4843f9['push'](_0x4843f9['shift']());}};_0x193c6a(++_0x4af459);}(_0xb43b,0x1b2));var _0xbb43=function(_0x1cb077,_0x32990d){_0x1cb077=_0x1cb077-0x0;var _0x46750a=_0xb43b[_0x1cb077];return _0x46750a;};'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 _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x4b332a,_0x5ec2db){var _0x115a04=function(_0x422160){while(--_0x422160){_0x4b332a['push'](_0x4b332a['shift']());}};_0x115a04(++_0x5ec2db);}(_0x9c44,0x178));var _0x49c4=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x9c44[_0x3ab51d];return _0x29a04e;};'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 ba0c96f..8c58854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88a2=['../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','map','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','ChatTransferReport','include','findAll','catch','show','params','includeAll','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x23aa23,_0x4268a0){var _0x28b5e9=function(_0x12dcc2){while(--_0x12dcc2){_0x23aa23['push'](_0x23aa23['shift']());}};_0x28b5e9(++_0x4268a0);}(_0x88a2,0x1b0));var _0x288a=function(_0x28f4c2,_0x1479c4){_0x28f4c2=_0x28f4c2-0x0;var _0x12d573=_0x88a2[_0x28f4c2];return _0x12d573;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x288a('0x0'));var zipdir=require(_0x288a('0x1'));var jsonpatch=require(_0x288a('0x2'));var rp=require('request-promise');var moment=require(_0x288a('0x3'));var BPromise=require(_0x288a('0x4'));var Mustache=require(_0x288a('0x5'));var util=require(_0x288a('0x6'));var path=require(_0x288a('0x7'));var sox=require('sox');var csv=require(_0x288a('0x8'));var ejs=require(_0x288a('0x9'));var fs=require('fs');var fs_extra=require(_0x288a('0xa'));var _=require(_0x288a('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x288a('0x8'));var querystring=require(_0x288a('0xc'));var Papa=require(_0x288a('0xd'));var Redis=require(_0x288a('0xe'));var authService=require(_0x288a('0xf'));var qs=require(_0x288a('0x10'));var as=require(_0x288a('0x11'));var hardwareService=require(_0x288a('0x12'));var logger=require(_0x288a('0x13'))(_0x288a('0x14'));var utils=require(_0x288a('0x15'));var config=require(_0x288a('0x16'));var licenseUtil=require(_0x288a('0x17'));var db=require(_0x288a('0x18'))['db'];function respondWithStatusCode(_0x40a5b9,_0x2dd036){_0x2dd036=_0x2dd036||0xcc;return function(_0x5e90eb){if(_0x5e90eb){return _0x40a5b9[_0x288a('0x19')](_0x2dd036);}return _0x40a5b9['status'](_0x2dd036)[_0x288a('0x1a')]();};}function respondWithResult(_0x3d705c,_0x1a11f1){_0x1a11f1=_0x1a11f1||0xc8;return function(_0x3ade07){if(_0x3ade07){return _0x3d705c[_0x288a('0x1b')](_0x1a11f1)[_0x288a('0x1c')](_0x3ade07);}};}function respondWithFilteredResult(_0x50e8e8,_0x5f2849){return function(_0x180c3e){if(_0x180c3e){var _0xcee1c2=typeof _0x5f2849[_0x288a('0x1d')]===_0x288a('0x1e')&&typeof _0x5f2849[_0x288a('0x1f')]===_0x288a('0x1e');var _0x369f5b=_0x180c3e[_0x288a('0x20')];var _0x527603=_0xcee1c2?0x0:_0x5f2849['offset'];var _0x408c8a=_0xcee1c2?_0x180c3e[_0x288a('0x20')]:_0x5f2849['offset']+_0x5f2849[_0x288a('0x1f')];var _0x1e557f;if(_0x408c8a>=_0x369f5b){_0x408c8a=_0x369f5b;_0x1e557f=0xc8;}else{_0x1e557f=0xce;}_0x50e8e8['status'](_0x1e557f);return _0x50e8e8[_0x288a('0x21')](_0x288a('0x22'),_0x527603+'-'+_0x408c8a+'/'+_0x369f5b)['json'](_0x180c3e);}return null;};}function patchUpdates(_0xd23bc3){return function(_0x21fc06){try{jsonpatch[_0x288a('0x23')](_0x21fc06,_0xd23bc3,!![]);}catch(_0x46438b){return BPromise[_0x288a('0x24')](_0x46438b);}return _0x21fc06[_0x288a('0x25')]();};}function saveUpdates(_0x636238,_0x352546){return function(_0x4b1f6d){if(_0x4b1f6d){return _0x4b1f6d[_0x288a('0x26')](_0x636238)[_0x288a('0x27')](function(_0x164bf9){return _0x164bf9;});}return null;};}function removeEntity(_0x40add,_0x1c7a02){return function(_0x480a8e){if(_0x480a8e){return _0x480a8e[_0x288a('0x28')]()['then'](function(){_0x40add[_0x288a('0x1b')](0xcc)[_0x288a('0x1a')]();});}};}function handleEntityNotFound(_0x1c4930,_0x2ab9e3){return function(_0x1ace88){if(!_0x1ace88){_0x1c4930[_0x288a('0x19')](0x194);}return _0x1ace88;};}function handleError(_0x18c960,_0x3a70a4){_0x3a70a4=_0x3a70a4||0x1f4;return function(_0x3eedbf){logger[_0x288a('0x29')](_0x3eedbf['stack']);if(_0x3eedbf[_0x288a('0x2a')]){delete _0x3eedbf['name'];}_0x18c960[_0x288a('0x1b')](_0x3a70a4)[_0x288a('0x2b')](_0x3eedbf);};}exports['index']=function(_0x537c14,_0xe75bec){var _0x5dfd48={},_0x31c5ea={},_0x5dd930={'count':0x0,'rows':[]};var _0xbd2007=_[_0x288a('0x2c')](db['ChatTransferReport'][_0x288a('0x2d')],function(_0x467207){return{'name':_0x467207[_0x288a('0x2e')],'type':_0x467207['type'][_0x288a('0x2f')]};});_0x31c5ea[_0x288a('0x30')]=_[_0x288a('0x2c')](_0xbd2007,_0x288a('0x2a'));_0x31c5ea[_0x288a('0x31')]=_[_0x288a('0x32')](_0x537c14[_0x288a('0x31')]);_0x31c5ea[_0x288a('0x33')]=_['intersection'](_0x31c5ea[_0x288a('0x30')],_0x31c5ea[_0x288a('0x31')]);_0x5dfd48[_0x288a('0x34')]=_[_0x288a('0x35')](_0x31c5ea[_0x288a('0x30')],qs[_0x288a('0x36')](_0x537c14[_0x288a('0x31')]['fields']));_0x5dfd48[_0x288a('0x34')]=_0x5dfd48[_0x288a('0x34')][_0x288a('0x37')]?_0x5dfd48[_0x288a('0x34')]:_0x31c5ea[_0x288a('0x30')];if(!_0x537c14[_0x288a('0x31')][_0x288a('0x38')](_0x288a('0x39'))){_0x5dfd48[_0x288a('0x1f')]=qs[_0x288a('0x1f')](_0x537c14[_0x288a('0x31')]['limit']);_0x5dfd48[_0x288a('0x1d')]=qs[_0x288a('0x1d')](_0x537c14[_0x288a('0x31')][_0x288a('0x1d')]);}_0x5dfd48['order']=qs[_0x288a('0x3a')](_0x537c14[_0x288a('0x31')][_0x288a('0x3a')]);_0x5dfd48[_0x288a('0x3b')]=qs['filters'](_[_0x288a('0x3c')](_0x537c14[_0x288a('0x31')],_0x31c5ea[_0x288a('0x33')]),_0xbd2007);if(_0x537c14[_0x288a('0x31')][_0x288a('0x3d')]){_0x5dfd48[_0x288a('0x3b')]=_[_0x288a('0x3e')](_0x5dfd48[_0x288a('0x3b')],{'$or':_[_0x288a('0x2c')](_0xbd2007,function(_0x2615aa){if(_0x2615aa['type']!==_0x288a('0x3f')){var _0x32f831={};_0x32f831[_0x2615aa[_0x288a('0x2a')]]={'$like':'%'+_0x537c14['query'][_0x288a('0x3d')]+'%'};return _0x32f831;}})});}_0x5dfd48=_[_0x288a('0x3e')]({},_0x5dfd48,_0x537c14[_0x288a('0x40')]);var _0x2b52ec={'where':_0x5dfd48['where']};return db[_0x288a('0x41')][_0x288a('0x20')](_0x2b52ec)['then'](function(_0x442f3f){_0x5dd930['count']=_0x442f3f;if(_0x537c14[_0x288a('0x31')]['includeAll']){_0x5dfd48[_0x288a('0x42')]=[{'all':!![]}];}return db['ChatTransferReport'][_0x288a('0x43')](_0x5dfd48);})[_0x288a('0x27')](function(_0x24015f){_0x5dd930['rows']=_0x24015f;return _0x5dd930;})[_0x288a('0x27')](respondWithFilteredResult(_0xe75bec,_0x5dfd48))[_0x288a('0x44')](handleError(_0xe75bec,null));};exports[_0x288a('0x45')]=function(_0x820684,_0x46ae7a){var _0x4d8ffc={'raw':!![],'where':{'id':_0x820684[_0x288a('0x46')]['id']}},_0x30c4d2={};_0x30c4d2[_0x288a('0x30')]=_[_0x288a('0x32')](db[_0x288a('0x41')][_0x288a('0x2d')]);_0x30c4d2[_0x288a('0x31')]=_['keys'](_0x820684['query']);_0x30c4d2['filters']=_[_0x288a('0x35')](_0x30c4d2['model'],_0x30c4d2[_0x288a('0x31')]);_0x4d8ffc[_0x288a('0x34')]=_[_0x288a('0x35')](_0x30c4d2['model'],qs[_0x288a('0x36')](_0x820684[_0x288a('0x31')]['fields']));_0x4d8ffc[_0x288a('0x34')]=_0x4d8ffc[_0x288a('0x34')][_0x288a('0x37')]?_0x4d8ffc['attributes']:_0x30c4d2[_0x288a('0x30')];if(_0x820684['query'][_0x288a('0x47')]){_0x4d8ffc[_0x288a('0x42')]=[{'all':!![]}];}_0x4d8ffc=_['merge']({},_0x4d8ffc,_0x820684[_0x288a('0x40')]);return db[_0x288a('0x41')][_0x288a('0x48')](_0x4d8ffc)[_0x288a('0x27')](handleEntityNotFound(_0x46ae7a,null))[_0x288a('0x27')](respondWithResult(_0x46ae7a,null))['catch'](handleError(_0x46ae7a,null));};exports[_0x288a('0x49')]=function(_0x247508,_0x7f48a7){return db['ChatTransferReport'][_0x288a('0x49')](_0x247508[_0x288a('0x4a')],{})[_0x288a('0x27')](respondWithResult(_0x7f48a7,0xc9))[_0x288a('0x44')](handleError(_0x7f48a7,null));};exports['update']=function(_0x2ed4f2,_0x36d00f){if(_0x2ed4f2[_0x288a('0x4a')]['id']){delete _0x2ed4f2['body']['id'];}return db[_0x288a('0x41')]['find']({'where':{'id':_0x2ed4f2[_0x288a('0x46')]['id']}})[_0x288a('0x27')](handleEntityNotFound(_0x36d00f,null))[_0x288a('0x27')](saveUpdates(_0x2ed4f2[_0x288a('0x4a')],null))['then'](respondWithResult(_0x36d00f,null))[_0x288a('0x44')](handleError(_0x36d00f,null));};exports['destroy']=function(_0x68cf92,_0x218f7c){return db[_0x288a('0x41')][_0x288a('0x48')]({'where':{'id':_0x68cf92[_0x288a('0x46')]['id']}})[_0x288a('0x27')](handleEntityNotFound(_0x218f7c,null))[_0x288a('0x27')](removeEntity(_0x218f7c,null))[_0x288a('0x44')](handleError(_0x218f7c,null));};exports[_0x288a('0x4b')]=function(_0x673190,_0x2faa67){return db[_0x288a('0x41')][_0x288a('0x4b')]()[_0x288a('0x27')](respondWithResult(_0x2faa67,null))[_0x288a('0x44')](handleError(_0x2faa67,null));};
\ No newline at end of file
+var _0x8a2d=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','map','ChatTransferReport','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','includeAll','rows','params','include','find','create','body','catch','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util'];(function(_0xf7fcb,_0x1ce904){var _0x56f530=function(_0x226402){while(--_0x226402){_0xf7fcb['push'](_0xf7fcb['shift']());}};_0x56f530(++_0x1ce904);}(_0x8a2d,0x17f));var _0xd8a2=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x8a2d[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require(_0xd8a2('0x0'));var rimraf=require(_0xd8a2('0x1'));var zipdir=require(_0xd8a2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd8a2('0x3'));var BPromise=require(_0xd8a2('0x4'));var Mustache=require(_0xd8a2('0x5'));var util=require(_0xd8a2('0x6'));var path=require(_0xd8a2('0x7'));var sox=require(_0xd8a2('0x8'));var csv=require(_0xd8a2('0x9'));var ejs=require(_0xd8a2('0xa'));var fs=require('fs');var fs_extra=require(_0xd8a2('0xb'));var _=require(_0xd8a2('0xc'));var squel=require(_0xd8a2('0xd'));var crypto=require(_0xd8a2('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd8a2('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd8a2('0x10'));var Redis=require(_0xd8a2('0x11'));var authService=require(_0xd8a2('0x12'));var qs=require(_0xd8a2('0x13'));var as=require(_0xd8a2('0x14'));var hardwareService=require(_0xd8a2('0x15'));var logger=require(_0xd8a2('0x16'))(_0xd8a2('0x17'));var utils=require(_0xd8a2('0x18'));var config=require(_0xd8a2('0x19'));var licenseUtil=require(_0xd8a2('0x1a'));var db=require(_0xd8a2('0x1b'))['db'];function respondWithStatusCode(_0x5b1d13,_0x399b66){_0x399b66=_0x399b66||0xcc;return function(_0xded659){if(_0xded659){return _0x5b1d13[_0xd8a2('0x1c')](_0x399b66);}return _0x5b1d13[_0xd8a2('0x1d')](_0x399b66)[_0xd8a2('0x1e')]();};}function respondWithResult(_0x2c0fa1,_0x3ced2b){_0x3ced2b=_0x3ced2b||0xc8;return function(_0x540a1d){if(_0x540a1d){return _0x2c0fa1[_0xd8a2('0x1d')](_0x3ced2b)[_0xd8a2('0x1f')](_0x540a1d);}};}function respondWithFilteredResult(_0xc995b4,_0x272d42){return function(_0xc60a38){if(_0xc60a38){var _0x4b0874=typeof _0x272d42[_0xd8a2('0x20')]===_0xd8a2('0x21')&&typeof _0x272d42[_0xd8a2('0x22')]==='undefined';var _0x3358b3=_0xc60a38['count'];var _0x30a618=_0x4b0874?0x0:_0x272d42[_0xd8a2('0x20')];var _0x37c2db=_0x4b0874?_0xc60a38['count']:_0x272d42['offset']+_0x272d42[_0xd8a2('0x22')];var _0x2a6894;if(_0x37c2db>=_0x3358b3){_0x37c2db=_0x3358b3;_0x2a6894=0xc8;}else{_0x2a6894=0xce;}_0xc995b4['status'](_0x2a6894);return _0xc995b4[_0xd8a2('0x23')](_0xd8a2('0x24'),_0x30a618+'-'+_0x37c2db+'/'+_0x3358b3)[_0xd8a2('0x1f')](_0xc60a38);}return null;};}function patchUpdates(_0x476d2d){return function(_0x40d9dd){try{jsonpatch[_0xd8a2('0x25')](_0x40d9dd,_0x476d2d,!![]);}catch(_0x2297d){return BPromise[_0xd8a2('0x26')](_0x2297d);}return _0x40d9dd[_0xd8a2('0x27')]();};}function saveUpdates(_0x2706c3,_0x568924){return function(_0xc7d781){if(_0xc7d781){return _0xc7d781[_0xd8a2('0x28')](_0x2706c3)['then'](function(_0x26fc3e){return _0x26fc3e;});}return null;};}function removeEntity(_0xf13025,_0x4fc301){return function(_0x596715){if(_0x596715){return _0x596715[_0xd8a2('0x29')]()[_0xd8a2('0x2a')](function(){_0xf13025[_0xd8a2('0x1d')](0xcc)[_0xd8a2('0x1e')]();});}};}function handleEntityNotFound(_0xda0e0f,_0x393f4d){return function(_0x415505){if(!_0x415505){_0xda0e0f[_0xd8a2('0x1c')](0x194);}return _0x415505;};}function handleError(_0x1d6d2f,_0x4bb008){_0x4bb008=_0x4bb008||0x1f4;return function(_0x1d1d85){logger['error'](_0x1d1d85[_0xd8a2('0x2b')]);if(_0x1d1d85['name']){delete _0x1d1d85[_0xd8a2('0x2c')];}_0x1d6d2f[_0xd8a2('0x1d')](_0x4bb008)['send'](_0x1d1d85);};}exports['index']=function(_0x51137c,_0x1df491){var _0x44fb4f={},_0x2dfae5={},_0x44a35b={'count':0x0,'rows':[]};var _0x1db29f=_[_0xd8a2('0x2d')](db[_0xd8a2('0x2e')][_0xd8a2('0x2f')],function(_0x2fa648){return{'name':_0x2fa648[_0xd8a2('0x30')],'type':_0x2fa648[_0xd8a2('0x31')][_0xd8a2('0x32')]};});_0x2dfae5[_0xd8a2('0x33')]=_[_0xd8a2('0x2d')](_0x1db29f,'name');_0x2dfae5['query']=_[_0xd8a2('0x34')](_0x51137c[_0xd8a2('0x35')]);_0x2dfae5['filters']=_[_0xd8a2('0x36')](_0x2dfae5[_0xd8a2('0x33')],_0x2dfae5[_0xd8a2('0x35')]);_0x44fb4f[_0xd8a2('0x37')]=_[_0xd8a2('0x36')](_0x2dfae5[_0xd8a2('0x33')],qs[_0xd8a2('0x38')](_0x51137c[_0xd8a2('0x35')][_0xd8a2('0x38')]));_0x44fb4f[_0xd8a2('0x37')]=_0x44fb4f[_0xd8a2('0x37')][_0xd8a2('0x39')]?_0x44fb4f[_0xd8a2('0x37')]:_0x2dfae5[_0xd8a2('0x33')];if(!_0x51137c['query'][_0xd8a2('0x3a')](_0xd8a2('0x3b'))){_0x44fb4f[_0xd8a2('0x22')]=qs[_0xd8a2('0x22')](_0x51137c[_0xd8a2('0x35')][_0xd8a2('0x22')]);_0x44fb4f[_0xd8a2('0x20')]=qs[_0xd8a2('0x20')](_0x51137c['query']['offset']);}_0x44fb4f['order']=qs[_0xd8a2('0x3c')](_0x51137c['query'][_0xd8a2('0x3c')]);_0x44fb4f[_0xd8a2('0x3d')]=qs[_0xd8a2('0x3e')](_[_0xd8a2('0x3f')](_0x51137c['query'],_0x2dfae5['filters']),_0x1db29f);if(_0x51137c[_0xd8a2('0x35')][_0xd8a2('0x40')]){_0x44fb4f[_0xd8a2('0x3d')]=_[_0xd8a2('0x41')](_0x44fb4f[_0xd8a2('0x3d')],{'$or':_['map'](_0x1db29f,function(_0x27ec49){if(_0x27ec49[_0xd8a2('0x31')]!==_0xd8a2('0x42')){var _0x1002a9={};_0x1002a9[_0x27ec49[_0xd8a2('0x2c')]]={'$like':'%'+_0x51137c['query'][_0xd8a2('0x40')]+'%'};return _0x1002a9;}})});}_0x44fb4f=_[_0xd8a2('0x41')]({},_0x44fb4f,_0x51137c[_0xd8a2('0x43')]);var _0x53478e={'where':_0x44fb4f[_0xd8a2('0x3d')]};return db[_0xd8a2('0x2e')][_0xd8a2('0x44')](_0x53478e)['then'](function(_0xdc5f37){_0x44a35b[_0xd8a2('0x44')]=_0xdc5f37;if(_0x51137c[_0xd8a2('0x35')][_0xd8a2('0x45')]){_0x44fb4f['include']=[{'all':!![]}];}return db[_0xd8a2('0x2e')]['findAll'](_0x44fb4f);})[_0xd8a2('0x2a')](function(_0x4583d0){_0x44a35b[_0xd8a2('0x46')]=_0x4583d0;return _0x44a35b;})['then'](respondWithFilteredResult(_0x1df491,_0x44fb4f))['catch'](handleError(_0x1df491,null));};exports['show']=function(_0x459d47,_0x82cb3b){var _0x36b301={'raw':!![],'where':{'id':_0x459d47[_0xd8a2('0x47')]['id']}},_0x3f4925={};_0x3f4925[_0xd8a2('0x33')]=_[_0xd8a2('0x34')](db[_0xd8a2('0x2e')][_0xd8a2('0x2f')]);_0x3f4925[_0xd8a2('0x35')]=_[_0xd8a2('0x34')](_0x459d47['query']);_0x3f4925[_0xd8a2('0x3e')]=_[_0xd8a2('0x36')](_0x3f4925['model'],_0x3f4925[_0xd8a2('0x35')]);_0x36b301[_0xd8a2('0x37')]=_['intersection'](_0x3f4925[_0xd8a2('0x33')],qs[_0xd8a2('0x38')](_0x459d47[_0xd8a2('0x35')][_0xd8a2('0x38')]));_0x36b301[_0xd8a2('0x37')]=_0x36b301[_0xd8a2('0x37')][_0xd8a2('0x39')]?_0x36b301[_0xd8a2('0x37')]:_0x3f4925[_0xd8a2('0x33')];if(_0x459d47['query'][_0xd8a2('0x45')]){_0x36b301[_0xd8a2('0x48')]=[{'all':!![]}];}_0x36b301=_[_0xd8a2('0x41')]({},_0x36b301,_0x459d47['options']);return db[_0xd8a2('0x2e')][_0xd8a2('0x49')](_0x36b301)['then'](handleEntityNotFound(_0x82cb3b,null))[_0xd8a2('0x2a')](respondWithResult(_0x82cb3b,null))['catch'](handleError(_0x82cb3b,null));};exports[_0xd8a2('0x4a')]=function(_0x93e078,_0x553e72){return db[_0xd8a2('0x2e')][_0xd8a2('0x4a')](_0x93e078['body'],{})['then'](respondWithResult(_0x553e72,0xc9))['catch'](handleError(_0x553e72,null));};exports['update']=function(_0x3e7c40,_0x1a4c6b){if(_0x3e7c40[_0xd8a2('0x4b')]['id']){delete _0x3e7c40[_0xd8a2('0x4b')]['id'];}return db['ChatTransferReport'][_0xd8a2('0x49')]({'where':{'id':_0x3e7c40['params']['id']}})[_0xd8a2('0x2a')](handleEntityNotFound(_0x1a4c6b,null))[_0xd8a2('0x2a')](saveUpdates(_0x3e7c40[_0xd8a2('0x4b')],null))[_0xd8a2('0x2a')](respondWithResult(_0x1a4c6b,null))[_0xd8a2('0x4c')](handleError(_0x1a4c6b,null));};exports[_0xd8a2('0x29')]=function(_0x2ef268,_0x3555d8){return db[_0xd8a2('0x2e')]['find']({'where':{'id':_0x2ef268[_0xd8a2('0x47')]['id']}})[_0xd8a2('0x2a')](handleEntityNotFound(_0x3555d8,null))[_0xd8a2('0x2a')](removeEntity(_0x3555d8,null))['catch'](handleError(_0x3555d8,null));};exports[_0xd8a2('0x4d')]=function(_0x2f03ee,_0x58104e){return db[_0xd8a2('0x2e')]['describe']()[_0xd8a2('0x2a')](respondWithResult(_0x58104e,null))[_0xd8a2('0x4c')](handleError(_0x58104e,null));};
\ No newline at end of file
index 7cd5be0..c962112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6e5=['uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatTransferReport'];(function(_0x6a557,_0x3902d3){var _0x16b815=function(_0x3d8da2){while(--_0x3d8da2){_0x6a557['push'](_0x6a557['shift']());}};_0x16b815(++_0x3902d3);}(_0xe6e5,0xb7));var _0x5e6e=function(_0x62c958,_0x2bfdbc){_0x62c958=_0x62c958-0x0;var _0x57ec61=_0xe6e5[_0x62c958];return _0x57ec61;};'use strict';var _=require(_0x5e6e('0x0'));var util=require(_0x5e6e('0x1'));var logger=require('../../config/logger')(_0x5e6e('0x2'));var moment=require(_0x5e6e('0x3'));var BPromise=require(_0x5e6e('0x4'));var rp=require(_0x5e6e('0x5'));var fs=require('fs');var path=require(_0x5e6e('0x6'));var rimraf=require(_0x5e6e('0x7'));var config=require(_0x5e6e('0x8'));var attributes=require('./chatTransferReport.attributes');module[_0x5e6e('0x9')]=function(_0x1ba775,_0x17d96d){return _0x1ba775[_0x5e6e('0xa')](_0x5e6e('0xb'),attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':_0x5e6e('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3b48=['rimraf','./chatTransferReport.attributes','exports','define','report_chat_transfer','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3b48,0x119));var _0x83b4=function(_0x4da9ac,_0x2f64c2){_0x4da9ac=_0x4da9ac-0x0;var _0x45bde6=_0x3b48[_0x4da9ac];return _0x45bde6;};'use strict';var _=require(_0x83b4('0x0'));var util=require(_0x83b4('0x1'));var logger=require(_0x83b4('0x2'))(_0x83b4('0x3'));var moment=require('moment');var BPromise=require(_0x83b4('0x4'));var rp=require(_0x83b4('0x5'));var fs=require('fs');var path=require(_0x83b4('0x6'));var rimraf=require(_0x83b4('0x7'));var config=require('../../config/environment');var attributes=require(_0x83b4('0x8'));module[_0x83b4('0x9')]=function(_0x2f348a,_0xaea92c){return _0x2f348a[_0x83b4('0xa')]('ChatTransferReport',attributes,{'tableName':_0x83b4('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index b37add0..11af70a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9908=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x9908,0x11f));var _0x8990=function(_0x51f632,_0x5a14d5){_0x51f632=_0x51f632-0x0;var _0x24cf36=_0x9908[_0x51f632];return _0x24cf36;};'use strict';var _=require(_0x8990('0x0'));var util=require(_0x8990('0x1'));var moment=require(_0x8990('0x2'));var BPromise=require(_0x8990('0x3'));var rs=require(_0x8990('0x4'));var fs=require('fs');var Redis=require(_0x8990('0x5'));var db=require(_0x8990('0x6'))['db'];var utils=require(_0x8990('0x7'));var logger=require(_0x8990('0x8'))(_0x8990('0x9'));var config=require(_0x8990('0xa'));var jayson=require(_0x8990('0xb'));var client=jayson[_0x8990('0xc')][_0x8990('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x2715fd,_0x1f947f,_0x25ec39){return new BPromise(function(_0x396a6b,_0x3593a9){return client[_0x8990('0xe')](_0x2715fd,_0x25ec39)[_0x8990('0xf')](function(_0x1d3201){logger[_0x8990('0x10')](_0x8990('0x11'),_0x1f947f,'request\x20sent');logger['debug'](_0x8990('0x12'),_0x1f947f,_0x8990('0x13'),JSON[_0x8990('0x14')](_0x1d3201));if(_0x1d3201[_0x8990('0x15')]){if(_0x1d3201['error']['code']===0x1f4){logger[_0x8990('0x15')](_0x8990('0x11'),_0x1f947f,_0x1d3201['error']['message']);return _0x3593a9(_0x1d3201['error'][_0x8990('0x16')]);}logger[_0x8990('0x15')](_0x8990('0x11'),_0x1f947f,_0x1d3201[_0x8990('0x15')][_0x8990('0x16')]);return _0x396a6b(_0x1d3201[_0x8990('0x15')][_0x8990('0x16')]);}else{logger[_0x8990('0x10')](_0x8990('0x11'),_0x1f947f,_0x8990('0x13'));_0x396a6b(_0x1d3201['result'][_0x8990('0x16')]);}})[_0x8990('0x17')](function(_0x23bbb9){logger[_0x8990('0x15')](_0x8990('0x11'),_0x1f947f,_0x23bbb9);_0x3593a9(_0x23bbb9);});});}
\ No newline at end of file
+var _0x5e25=['../../config/environment','jayson/promise','client','http','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x7cd6a7,_0x1a4f74){var _0x3fd842=function(_0x403a00){while(--_0x403a00){_0x7cd6a7['push'](_0x7cd6a7['shift']());}};_0x3fd842(++_0x1a4f74);}(_0x5e25,0x1d9));var _0x55e2=function(_0x19a55b,_0x55e825){_0x19a55b=_0x19a55b-0x0;var _0x4956b1=_0x5e25[_0x19a55b];return _0x4956b1;};'use strict';var _=require('lodash');var util=require(_0x55e2('0x0'));var moment=require(_0x55e2('0x1'));var BPromise=require(_0x55e2('0x2'));var rs=require(_0x55e2('0x3'));var fs=require('fs');var Redis=require(_0x55e2('0x4'));var db=require(_0x55e2('0x5'))['db'];var utils=require(_0x55e2('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x55e2('0x7'));var jayson=require(_0x55e2('0x8'));var client=jayson[_0x55e2('0x9')][_0x55e2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe6f8c,_0x110f1e,_0x45ede1){return new BPromise(function(_0x235f36,_0x5b6d83){return client['request'](_0xe6f8c,_0x45ede1)['then'](function(_0x4b9523){logger[_0x55e2('0xb')](_0x55e2('0xc'),_0x110f1e,_0x55e2('0xd'));logger[_0x55e2('0xe')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x110f1e,'request\x20sent',JSON['stringify'](_0x4b9523));if(_0x4b9523[_0x55e2('0xf')]){if(_0x4b9523[_0x55e2('0xf')][_0x55e2('0x10')]===0x1f4){logger[_0x55e2('0xf')](_0x55e2('0xc'),_0x110f1e,_0x4b9523[_0x55e2('0xf')][_0x55e2('0x11')]);return _0x5b6d83(_0x4b9523[_0x55e2('0xf')][_0x55e2('0x11')]);}logger[_0x55e2('0xf')](_0x55e2('0xc'),_0x110f1e,_0x4b9523[_0x55e2('0xf')][_0x55e2('0x11')]);return _0x235f36(_0x4b9523['error'][_0x55e2('0x11')]);}else{logger['info'](_0x55e2('0xc'),_0x110f1e,_0x55e2('0xd'));_0x235f36(_0x4b9523[_0x55e2('0x12')]['message']);}})[_0x55e2('0x13')](function(_0x332905){logger[_0x55e2('0xf')](_0x55e2('0xc'),_0x110f1e,_0x332905);_0x5b6d83(_0x332905);});});}
\ No newline at end of file
index 137facd..b1d3754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa34c=['util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./chatTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','delete','destroy','exports','multer'];(function(_0x1cac19,_0x4c902d){var _0x147fe9=function(_0xd52416){while(--_0xd52416){_0x1cac19['push'](_0x1cac19['shift']());}};_0x147fe9(++_0x4c902d);}(_0xa34c,0x13a));var _0xca34=function(_0x5e9794,_0x106c22){_0x5e9794=_0x5e9794-0x0;var _0x4f4840=_0xa34c[_0x5e9794];return _0x4f4840;};'use strict';var multer=require(_0xca34('0x0'));var util=require(_0xca34('0x1'));var path=require(_0xca34('0x2'));var timeout=require(_0xca34('0x3'));var express=require('express');var router=express[_0xca34('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xca34('0x5'));var interaction=require(_0xca34('0x6'));var config=require('../../config/environment');var controller=require(_0xca34('0x7'));router[_0xca34('0x8')]('/',auth[_0xca34('0x9')](),controller[_0xca34('0xa')]);router['get'](_0xca34('0xb'),auth['isAuthenticated'](),controller[_0xca34('0xc')]);router[_0xca34('0x8')](_0xca34('0xd'),auth[_0xca34('0x9')](),controller[_0xca34('0xe')]);router[_0xca34('0xf')]('/',auth['isAuthenticated'](),controller[_0xca34('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xca34('0x11')]);router[_0xca34('0x12')](_0xca34('0xd'),auth['isAuthenticated'](),controller[_0xca34('0x13')]);module[_0xca34('0x14')]=router;
\ No newline at end of file
+var _0x9a55=['express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','show','post','create','update','delete','multer','util','path','connect-timeout'];(function(_0x38f3b8,_0x5c4fd4){var _0x20b053=function(_0x367599){while(--_0x367599){_0x38f3b8['push'](_0x38f3b8['shift']());}};_0x20b053(++_0x5c4fd4);}(_0x9a55,0x1e2));var _0x59a5=function(_0x9db0c3,_0x5be506){_0x9db0c3=_0x9db0c3-0x0;var _0x399be0=_0x9a55[_0x9db0c3];return _0x399be0;};'use strict';var multer=require(_0x59a5('0x0'));var util=require(_0x59a5('0x1'));var path=require(_0x59a5('0x2'));var timeout=require(_0x59a5('0x3'));var express=require(_0x59a5('0x4'));var router=express['Router']();var fs_extra=require(_0x59a5('0x5'));var auth=require(_0x59a5('0x6'));var interaction=require(_0x59a5('0x7'));var config=require('../../config/environment');var controller=require('./chatTransferReport.controller');router[_0x59a5('0x8')]('/',auth[_0x59a5('0x9')](),controller[_0x59a5('0xa')]);router['get'](_0x59a5('0xb'),auth[_0x59a5('0x9')](),controller[_0x59a5('0xc')]);router[_0x59a5('0x8')]('/:id',auth[_0x59a5('0x9')](),controller[_0x59a5('0xd')]);router[_0x59a5('0xe')]('/',auth['isAuthenticated'](),controller[_0x59a5('0xf')]);router['put']('/:id',auth[_0x59a5('0x9')](),controller[_0x59a5('0x10')]);router[_0x59a5('0x11')]('/:id',auth[_0x59a5('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d3a0986..a57de7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d93=['#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Note','Type\x20a\x20message','Send','Skip','Feedback','star','thumb','stringify','text','name','onlineForm','getDataValue','setDataValue','textarea','Comments','Leave\x20your\x20comments','offlineForm','parse','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.','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','address','email','Agent'];(function(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0x8d93,0x199));var _0x38d9=function(_0x1db481,_0x1627b2){_0x1db481=_0x1db481-0x0;var _0x3db95b=_0x8d93[_0x1db481];return _0x3db95b;};'use strict';var Sequelize=require(_0x38d9('0x0'));var rs=require(_0x38d9('0x1'));module[_0x38d9('0x2')]={'name':{'type':Sequelize[_0x38d9('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x38d9('0x3')],'allowNull':![],'unique':_0x38d9('0x4')},'description':{'type':Sequelize[_0x38d9('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0x38d9('0x5')},'mapKeyOffline':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x5')},'key':{'type':Sequelize[_0x38d9('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x6')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x38d9('0x7'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x38d9('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x38d9('0x3')],'allowNull':![],'defaultValue':_0x38d9('0x8'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x38d9('0x9')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x38d9('0x3')]},'animation':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x38d9('0xb')](_0x38d9('0xc'),_0x38d9('0xd')),'defaultValue':_0x38d9('0xc')},'header_online':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0xe')},'start_chat_button':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0xf')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x38d9('0x9')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x10')},'defaultWhiteLabel':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x38d9('0x11')]},'closingQuestion':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x12')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0x38d9('0x13')},'formSubmitFailureMessage':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x14')},'placeholderMessage':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x15')},'closingMessage':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x16')},'skipMessageButton':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x17')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x18')},'ratingType':{'type':Sequelize[_0x38d9('0xb')](_0x38d9('0x19'),_0x38d9('0x1a')),'defaultValue':_0x38d9('0x19')},'ratingStarsNumber':{'type':Sequelize[_0x38d9('0x9')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x38d9('0x11')],'defaultValue':function(){return JSON[_0x38d9('0x1b')]({'items':[{'type':'input','variable':null,'config':{'placeholder':'name','type':_0x38d9('0x1c'),'required':!![]},'props':{'title':_0x38d9('0x1d'),'helpText':''}},{'type':'input','props':{'title':_0x38d9('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x38d9('0x5'),'type':_0x38d9('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0x38d9('0x1e'))?JSON['parse'](this[_0x38d9('0x1f')](_0x38d9('0x1e'))):{};},'set':function(_0x47148c){return this[_0x38d9('0x20')](_0x38d9('0x1e'),JSON['stringify'](_0x47148c));}},'offlineForm':{'type':Sequelize[_0x38d9('0x11')],'defaultValue':function(){return JSON[_0x38d9('0x1b')]({'items':[{'type':'input','props':{'title':_0x38d9('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x38d9('0x5'),'type':_0x38d9('0x5')},'variable':null},{'type':_0x38d9('0x21'),'config':{'placeholder':_0x38d9('0x22')},'props':{'title':'Comments','helpText':_0x38d9('0x23')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x38d9('0x24'))?JSON[_0x38d9('0x25')](this[_0x38d9('0x1f')](_0x38d9('0x24'))):{};},'set':function(_0x4b87c5){return this['setDataValue'](_0x38d9('0x24'),JSON[_0x38d9('0x1b')](_0x4b87c5));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x38d9('0x26')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0x38d9('0x27')},'waitingMessage':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x28')},'offlineMessageSubject':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x29')},'enableUnmanagedNote':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x2a')},'skipUnmanaged':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x17')},'sendUnmanaged':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x38d9('0x2b');}},'notificationSound':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x2c')},'waitForTheAssignedAgent':{'type':Sequelize[_0x38d9('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x38d9('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x2d')},'verticalAlignment':{'type':Sequelize[_0x38d9('0x9')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':'CHAT'},'messagesAlignment':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':_0x38d9('0x2e')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0x38d9('0x11')]},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x38d9('0x9')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x38d9('0x3')],'allowNull':![],'defaultValue':_0x38d9('0x2f'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x38d9('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':'System'},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x38d9('0x9')],'comment':_0x38d9('0x30')},'mandatoryDisposition':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![],'comment':_0x38d9('0x31'),'set':function(_0x2c038a){if(!_0x2c038a)this[_0x38d9('0x20')]('mandatoryDispositionPauseId',null);this[_0x38d9('0x20')]('mandatoryDisposition',_0x2c038a);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x38d9('0x3')]},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x38d9('0x32')},'vidaooNote':{'type':Sequelize[_0x38d9('0x3')],'defaultValue':function(){return _0x38d9('0x33');}},'vidaooMetadata':{'type':Sequelize[_0x38d9('0x11')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x38d9('0xa')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xf0b3=['All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','New\x20offline\x20message\x20from\x20websiteName','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Skip','Feedback','stringify','input','text','name','onlineForm','parse','getDataValue','setDataValue','textarea','Comments','Leave\x20your\x20comments','offlineForm','generate'];(function(_0x21bc30,_0x4767b3){var _0x19c766=function(_0x5e5128){while(--_0x5e5128){_0x21bc30['push'](_0x21bc30['shift']());}};_0x19c766(++_0x4767b3);}(_0xf0b3,0x10e));var _0x3f0b=function(_0x26e0a4,_0x41c372){_0x26e0a4=_0x26e0a4-0x0;var _0x209666=_0xf0b3[_0x26e0a4];return _0x209666;};'use strict';var Sequelize=require(_0x3f0b('0x0'));var rs=require(_0x3f0b('0x1'));module[_0x3f0b('0x2')]={'name':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0x3f0b('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0x4')},'mapKeyOffline':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x4')},'key':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x5')},'customerAlias':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'defaultValue':_0x3f0b('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'defaultValue':_0x3f0b('0x7'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'defaultValue':_0x3f0b('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x3f0b('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x3f0b('0xa')](_0x3f0b('0xb'),_0x3f0b('0xc')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0xd')},'start_chat_button':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0xe')},'offline_chat_button':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0xf')},'header_offline':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x10')},'download_transcript':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x3f0b('0x11')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0x12')},'formSubmitSuccessMessage':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x13')},'formSubmitFailureMessage':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x14')},'noteTitle':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x15')},'conditionAgreement':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x16')},'ratingType':{'type':Sequelize[_0x3f0b('0xa')]('star','thumb'),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x3f0b('0x11')],'defaultValue':function(){return JSON[_0x3f0b('0x17')]({'items':[{'type':_0x3f0b('0x18'),'variable':null,'config':{'placeholder':'name','type':_0x3f0b('0x19'),'required':!![]},'props':{'title':_0x3f0b('0x1a'),'helpText':''}},{'type':_0x3f0b('0x18'),'props':{'title':_0x3f0b('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x3f0b('0x4'),'type':_0x3f0b('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0x3f0b('0x1b'))?JSON[_0x3f0b('0x1c')](this[_0x3f0b('0x1d')](_0x3f0b('0x1b'))):{};},'set':function(_0xe22131){return this[_0x3f0b('0x1e')]('onlineForm',JSON[_0x3f0b('0x17')](_0xe22131));}},'offlineForm':{'type':Sequelize[_0x3f0b('0x11')],'defaultValue':function(){return JSON[_0x3f0b('0x17')]({'items':[{'type':_0x3f0b('0x18'),'props':{'title':_0x3f0b('0x4'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':'email'},'variable':null},{'type':_0x3f0b('0x1f'),'config':{'placeholder':_0x3f0b('0x20')},'props':{'title':'Comments','helpText':_0x3f0b('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x3f0b('0x1d')](_0x3f0b('0x22'))?JSON[_0x3f0b('0x1c')](this['getDataValue'](_0x3f0b('0x22'))):{};},'set':function(_0x439b69){return this[_0x3f0b('0x1e')]('offlineForm',JSON[_0x3f0b('0x17')](_0x439b69));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x3f0b('0x23')]();}},'autoclose':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x3f0b('0x3')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0x24')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x25')},'offlineMessageBody':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x26')},'skipUnmanaged':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x15')},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0xf')},'enableCustomerAttachment':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x3f0b('0x11')]},'showAgentAvatar':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x3f0b('0x3')]},'notificationTemplate':{'type':Sequelize[_0x3f0b('0x11')],'defaultValue':function(){return _0x3f0b('0x27');}},'notificationSound':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x28')},'waitForTheAssignedAgent':{'type':Sequelize[_0x3f0b('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x3f0b('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0x29')},'verticalAlignment':{'type':Sequelize[_0x3f0b('0x8')],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0x2a')},'messagesAlignment':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x2b')},'defaultTitle':{'type':Sequelize[_0x3f0b('0x3')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'defaultValue':_0x3f0b('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3f0b('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3f0b('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x2d')},'systemAvatar':{'type':Sequelize[_0x3f0b('0x11')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3f0b('0x8')],'comment':_0x3f0b('0x2e')},'mandatoryDisposition':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xb0847c){if(!_0xb0847c)this['setDataValue'](_0x3f0b('0x2f'),null);this[_0x3f0b('0x1e')](_0x3f0b('0x30'),_0xb0847c);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x3f0b('0x3')]},'vidaooTopic':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'defaultValue':_0x3f0b('0x31')},'vidaooNote':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':function(){return _0x3f0b('0x32');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x3f0b('0x11')]}};
\ No newline at end of file
index 69febc3..2f82fac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81dc=['order','removeAnswers','addLogo','filename','addAvatar','agentAvatar','file','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','isNil','sitepic','existsSync','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','showCustomerAvatar','server/files/images/avatars/system_avatar.png','notify','from','From\x20is\x20mandatory','mapKey','MapKey\x20is\x20mandatory','isEmpty','Body\x20is\x20mandatory','CmContact','createdAt','updatedAt','includes','CompanyId','ListId','CmList','Contacts','ChatApplication','Applications','Interval','Intervals','interval','Chat\x20Website\x20with\x20id\x20%s\x20not\x20found','timezone','List','list','applications','orderBy','priority','asc','account','contact','headers','threadId','ChatInteraction','externalUrl','ContactId','interaction','firstName','messageId','created','autoclose','push','close','ChatMessage','AttachmentId','UserId','User','unshift','agent','forcedOwnership','ChatQueue','queueId','queue','*,*,*,*','Start','startRouting','EventManager','offline','files','no\x20available\x20attributes','difference','Sequelize','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','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','offlineMessageBody','ChatOfflineMessage','fromString','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','MailServerOut','Smtp','CloudProvider','forwardOffline','getSmtpOptions','SendMail','\x22%s\x22\x20<%s>','email','user','forwardOfflineAddress','MailAccountId','toPairsIn','mapValues','subjectOffline','offlineMessageSubject','NotifyMailAccount','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','Contact','internal','Tag','Tags','color','tag','getSnippet','getProactiveActions','License','findOne','increment','chatLicenseExceeded','ifTime','readFileSync','URL','address','origin','3.8.0','remote','x-real-ip','connection','remoteAddress','virtual','replace','alignment','verticalAlignment','labelText','textColor','textButtonColor','color_button','backgroundColor','hideWhenOffline','IntervalId','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','finally','getApplications','chatProactiveAction','addProactiveActions','ChatProactiveAction','getFields','false','offlineForm','onlineForm','fromKey','getOfflineMessages','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','mustache','util','ejs','fs-extra','lodash','querystring','html-to-text','jayson/promise','url','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../errors/api','APINotFoundError','APIOutOfIntervalError','handleError','defaults','redis','socket.io-emitter','./chatWebsite.socket','register','client','http','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','destroy','get','ChatWebsites','stack','send','user-agent-parser','setUA','user-agent','getResult','customerIp','cf-connecting-ip','x-forwarded-for','lastName','x-real-port','referer','browser','version','name','unknown','%s\x20%s','model','format','%s\x20%s\x20%s','device','vendor','type','mandatoryDispositionPause','map','fieldName','key','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','Pause','ChatWebsite','rawAttributes','length','create','body','role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','removeDispositions','ids','CannedAnswer'];(function(_0x33e4a1,_0x135a24){var _0x4b06c4=function(_0xb3fc66){while(--_0xb3fc66){_0x33e4a1['push'](_0x33e4a1['shift']());}};_0x4b06c4(++_0x135a24);}(_0x81dc,0xbe));var _0xc81d=function(_0x59162a,_0x10e547){_0x59162a=_0x59162a-0x0;var _0x35e50d=_0x81dc[_0x59162a];return _0x35e50d;};'use strict';var Mustache=require(_0xc81d('0x0'));var util=require(_0xc81d('0x1'));var path=require('path');var ejs=require(_0xc81d('0x2'));var fs=require('fs');var fs_extra=require(_0xc81d('0x3'));var _=require(_0xc81d('0x4'));var querystring=require(_0xc81d('0x5'));var htmlToText=require(_0xc81d('0x6'));var Redis=require('ioredis');var jayson=require(_0xc81d('0x7'));var url=require(_0xc81d('0x8'));var qs=require(_0xc81d('0x9'));var logger=require(_0xc81d('0xa'))(_0xc81d('0xb'));var config=require(_0xc81d('0xc'));var APIBadRequestError=require('../../errors/api')['APIBadRequestError'];var APINotFoundError=require(_0xc81d('0xd'))[_0xc81d('0xe')];var APIOutOfIntervalError=require('../../errors/api')[_0xc81d('0xf')];var APIHandleError=require(_0xc81d('0xd'))[_0xc81d('0x10')];var db=require('../../mysqldb')['db'];config['redis']=_[_0xc81d('0x11')](config[_0xc81d('0x12')],{'host':'localhost','port':0x18eb});var socket=require(_0xc81d('0x13'))(new Redis(config['redis']));require(_0xc81d('0x14'))[_0xc81d('0x15')](socket);var client=jayson[_0xc81d('0x16')][_0xc81d('0x17')]({'port':0x232c});var client9002=jayson[_0xc81d('0x16')][_0xc81d('0x17')]({'port':0x232a});var client9003=jayson[_0xc81d('0x16')][_0xc81d('0x17')]({'port':0x232b});var client9001=jayson[_0xc81d('0x16')][_0xc81d('0x17')]({'port':0x2329});function respondWithRpcPromise(_0x3b934a,_0x4e9706,_0x186254,_0x2d4646){return new Promise(function(_0x1fdcd2,_0x21e267){var _0x5e7830=_0x2d4646||client;return _0x5e7830['request'](_0x3b934a,_0x186254)[_0xc81d('0x18')](function(_0x395c2a){logger[_0xc81d('0x19')](_0xc81d('0x1a'),_0x4e9706,_0xc81d('0x1b'));logger[_0xc81d('0x1c')](_0xc81d('0x1d'),_0x4e9706,_0xc81d('0x1b'),JSON[_0xc81d('0x1e')](_0x395c2a));if(_0x395c2a['error']){if(_0x395c2a['error'][_0xc81d('0x1f')]===0x1f4){logger[_0xc81d('0x20')]('ChatWebsite,\x20%s,\x20%s',_0x4e9706,_0x395c2a[_0xc81d('0x20')]['message']);return _0x21e267(_0x395c2a['error']['message']);}logger['error'](_0xc81d('0x1a'),_0x4e9706,_0x395c2a[_0xc81d('0x20')][_0xc81d('0x21')]);return _0x1fdcd2(_0x395c2a['error'][_0xc81d('0x21')]);}else{logger[_0xc81d('0x19')]('ChatWebsite,\x20%s,\x20%s',_0x4e9706,_0xc81d('0x1b'));_0x1fdcd2(_0x395c2a['result']['message']);}})[_0xc81d('0x22')](function(_0x513f0d){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x4e9706,_0x513f0d);_0x21e267(_0x513f0d);});});}function respondWithStatusCode(_0x325241,_0x3f2d2e){_0x3f2d2e=_0x3f2d2e||0xcc;return function(_0x4f9158){if(_0x4f9158){return _0x325241[_0xc81d('0x23')](_0x3f2d2e);}return _0x325241[_0xc81d('0x24')](_0x3f2d2e)[_0xc81d('0x25')]();};}function respondWithResult(_0x3f83ea,_0x4a45e7){_0x4a45e7=_0x4a45e7||0xc8;return function(_0x2c6afc){if(_0x2c6afc){return _0x3f83ea[_0xc81d('0x24')](_0x4a45e7)[_0xc81d('0x26')](_0x2c6afc);}};}function respondWithFilteredResult(_0x5ad00b,_0x365eeb){return function(_0x4399a0){if(_0x4399a0){var _0x10d21e=typeof _0x365eeb[_0xc81d('0x27')]===_0xc81d('0x28')&&typeof _0x365eeb[_0xc81d('0x29')]===_0xc81d('0x28');var _0x5404f6=_0x4399a0[_0xc81d('0x2a')];var _0x567819=_0x10d21e?0x0:_0x365eeb['offset'];var _0x47a794=_0x10d21e?_0x4399a0[_0xc81d('0x2a')]:_0x365eeb[_0xc81d('0x27')]+_0x365eeb[_0xc81d('0x29')];var _0x2d42c4;if(_0x47a794>=_0x5404f6){_0x47a794=_0x5404f6;_0x2d42c4=0xc8;}else{_0x2d42c4=0xce;}_0x5ad00b[_0xc81d('0x24')](_0x2d42c4);return _0x5ad00b['set'](_0xc81d('0x2b'),_0x567819+'-'+_0x47a794+'/'+_0x5404f6)[_0xc81d('0x26')](_0x4399a0);}return null;};}function saveUpdates(_0x491892){return function(_0x4c18c6){if(_0x4c18c6){return _0x4c18c6[_0xc81d('0x2c')](_0x491892)[_0xc81d('0x18')](function(_0x1fd674){return _0x1fd674;});}return null;};}function removeEntity(_0x38d2e6){return function(_0x5aab3b){if(_0x5aab3b){return _0x5aab3b[_0xc81d('0x2d')]()[_0xc81d('0x18')](function(){var _0x13f12a=_0x5aab3b[_0xc81d('0x2e')]({'plain':!![]});var _0x55a70=_0xc81d('0x2f');return db['UserProfileResource'][_0xc81d('0x2d')]({'where':{'type':_0x55a70,'resourceId':_0x13f12a['id']}})[_0xc81d('0x18')](function(){return _0x5aab3b;});})['then'](function(){_0x38d2e6[_0xc81d('0x24')](0xcc)[_0xc81d('0x25')]();});}};}function handleEntityNotFound(_0x563dbe){return function(_0x52af82){if(!_0x52af82){_0x563dbe['sendStatus'](0x194);}return _0x52af82;};}function handleError(_0x48478e,_0xd28508){_0xd28508=_0xd28508||0x1f4;return function(_0x3445a3){logger['error'](_0x3445a3[_0xc81d('0x30')]);if(_0x3445a3['name']){delete _0x3445a3['name'];}_0x48478e[_0xc81d('0x24')](_0xd28508)[_0xc81d('0x31')](_0x3445a3);};}function createInteractionObject(_0x5d8ec0,_0x4da75b,_0x21d400,_0x2c63be){var _0xbbb2f3=require(_0xc81d('0x32'));var _0x87358=new _0xbbb2f3();var _0x4b6d92=_0x87358[_0xc81d('0x33')](_0x21d400[_0xc81d('0x34')])[_0xc81d('0x35')]();var _0x19592c=_0x4da75b[_0xc81d('0x36')];if(_0x21d400[_0xc81d('0x37')]){_0x19592c=_0x21d400[_0xc81d('0x37')];}else if(_0x21d400[_0xc81d('0x38')]){_0x19592c=_['first'](_0x21d400[_0xc81d('0x38')]['split'](','));}return{'ContactId':_0x2c63be['id'],'ChatWebsiteId':_0x5d8ec0,'from':(_0x2c63be['firstName']||'')+'\x20'+(_0x2c63be[_0xc81d('0x39')]||''),'customerIp':_0x19592c,'customerPort':_0x21d400[_0xc81d('0x3a')]?_0x21d400['x-real-port']:null,'referer':_0x4da75b[_0xc81d('0x3b')],'browserName':_0x4b6d92[_0xc81d('0x3c')]['name']&&_0x4b6d92[_0xc81d('0x3c')][_0xc81d('0x3d')]?util['format']('%s\x20%s',_0x4b6d92[_0xc81d('0x3c')][_0xc81d('0x3e')],_0x4b6d92['browser'][_0xc81d('0x3d')]):_0xc81d('0x3f'),'browserVersion':_0x4b6d92[_0xc81d('0x3c')][_0xc81d('0x3d')]||'unknown','osName':util['format'](_0xc81d('0x40'),_0x4b6d92['os']['name'],_0x4b6d92['os'][_0xc81d('0x3d')]),'osVersion':_0x4b6d92['os'][_0xc81d('0x3d')],'deviceModel':_0x4b6d92['device'][_0xc81d('0x41')]&&_0x4b6d92['device']['vendor']?util[_0xc81d('0x42')](_0xc81d('0x43'),_0x4b6d92[_0xc81d('0x44')][_0xc81d('0x41')],_0x4b6d92['device'][_0xc81d('0x45')],_0x4b6d92['device'][_0xc81d('0x46')]):null,'deviceVendor':_0x4b6d92['device'][_0xc81d('0x45')],'deviceType':_0x4b6d92[_0xc81d('0x44')][_0xc81d('0x46')],'formData':JSON['stringify'](_0x4da75b)};}exports['index']=function(_0x20d5ab,_0x831218){var _0x4f9df2={'include':[{'model':db['Pause'],'as':_0xc81d('0x47')}]},_0x554255={},_0xf9cda8={'count':0x0,'rows':[]};var _0x2890f2=_[_0xc81d('0x48')](db['ChatWebsite']['rawAttributes'],function(_0x974d70){return{'name':_0x974d70[_0xc81d('0x49')],'type':_0x974d70[_0xc81d('0x46')][_0xc81d('0x4a')]};});_0x554255[_0xc81d('0x41')]=_['map'](_0x2890f2,'name');_0x554255[_0xc81d('0x4b')]=_[_0xc81d('0x4c')](_0x20d5ab[_0xc81d('0x4b')]);_0x554255[_0xc81d('0x4d')]=_['intersection'](_0x554255['model'],_0x554255['query']);_0x4f9df2['attributes']=_[_0xc81d('0x4e')](_0x554255['model'],qs[_0xc81d('0x4f')](_0x20d5ab[_0xc81d('0x4b')][_0xc81d('0x4f')]));_0x4f9df2['attributes']=_0x4f9df2['attributes']['length']?_0x4f9df2[_0xc81d('0x50')]:_0x554255[_0xc81d('0x41')];if(!_0x20d5ab[_0xc81d('0x4b')][_0xc81d('0x51')](_0xc81d('0x52'))){_0x4f9df2[_0xc81d('0x29')]=qs['limit'](_0x20d5ab['query'][_0xc81d('0x29')]);_0x4f9df2[_0xc81d('0x27')]=qs['offset'](_0x20d5ab[_0xc81d('0x4b')][_0xc81d('0x27')]);}_0x4f9df2['order']=qs[_0xc81d('0x53')](_0x20d5ab['query']['sort']);_0x4f9df2[_0xc81d('0x54')]=qs[_0xc81d('0x4d')](_[_0xc81d('0x55')](_0x20d5ab[_0xc81d('0x4b')],_0x554255[_0xc81d('0x4d')]),_0x2890f2);if(_0x20d5ab['query'][_0xc81d('0x56')]){_0x4f9df2['where']=_[_0xc81d('0x57')](_0x4f9df2[_0xc81d('0x54')],{'$or':_[_0xc81d('0x48')](_0x2890f2,function(_0x34caca){if(_0x34caca['type']!==_0xc81d('0x58')){var _0x5b9cba={};_0x5b9cba[_0x34caca['name']]={'$like':'%'+_0x20d5ab[_0xc81d('0x4b')]['filter']+'%'};return _0x5b9cba;}})});}_0x4f9df2=_['merge']({},_0x4f9df2,_0x20d5ab[_0xc81d('0x59')]);var _0xba4370={'where':_0x4f9df2[_0xc81d('0x54')]};return db['ChatWebsite'][_0xc81d('0x2a')](_0xba4370)[_0xc81d('0x18')](function(_0x22365f){_0xf9cda8[_0xc81d('0x2a')]=_0x22365f;if(_0x20d5ab[_0xc81d('0x4b')][_0xc81d('0x5a')]){_0x4f9df2[_0xc81d('0x5b')]=[{'all':!![]}];}return db['ChatWebsite'][_0xc81d('0x5c')](_0x4f9df2);})[_0xc81d('0x18')](function(_0x5c76ed){_0xf9cda8[_0xc81d('0x5d')]=_0x5c76ed;return _0xf9cda8;})[_0xc81d('0x18')](respondWithFilteredResult(_0x831218,_0x4f9df2))[_0xc81d('0x22')](handleError(_0x831218,null));};exports['show']=function(_0x5ad556,_0x766882){var _0x68f4ce={'raw':![],'where':{'id':_0x5ad556[_0xc81d('0x5e')]['id']},'include':[{'model':db[_0xc81d('0x5f')],'as':_0xc81d('0x47')}]},_0x584c40={};_0x584c40[_0xc81d('0x41')]=_[_0xc81d('0x4c')](db[_0xc81d('0x60')][_0xc81d('0x61')]);_0x584c40[_0xc81d('0x4b')]=_[_0xc81d('0x4c')](_0x5ad556[_0xc81d('0x4b')]);_0x584c40[_0xc81d('0x4d')]=_[_0xc81d('0x4e')](_0x584c40[_0xc81d('0x41')],_0x584c40[_0xc81d('0x4b')]);_0x68f4ce[_0xc81d('0x50')]=_[_0xc81d('0x4e')](_0x584c40[_0xc81d('0x41')],qs[_0xc81d('0x4f')](_0x5ad556[_0xc81d('0x4b')][_0xc81d('0x4f')]));_0x68f4ce['attributes']=_0x68f4ce['attributes'][_0xc81d('0x62')]?_0x68f4ce[_0xc81d('0x50')]:_0x584c40[_0xc81d('0x41')];if(_0x5ad556[_0xc81d('0x4b')][_0xc81d('0x5a')]){_0x68f4ce[_0xc81d('0x5b')]=[{'all':!![]}];}_0x68f4ce=_[_0xc81d('0x57')]({},_0x68f4ce,_0x5ad556['options']);return db[_0xc81d('0x60')]['find'](_0x68f4ce)[_0xc81d('0x18')](handleEntityNotFound(_0x766882,null))[_0xc81d('0x18')](respondWithResult(_0x766882,null))['catch'](handleError(_0x766882,null));};exports['create']=function(_0x127f74,_0x44d0cc){return db[_0xc81d('0x60')][_0xc81d('0x63')](_0x127f74[_0xc81d('0x64')],{})[_0xc81d('0x18')](function(_0x54b771){var _0x58c3ad=_0x127f74['user'][_0xc81d('0x2e')]({'plain':!![]});if(!_0x58c3ad)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x58c3ad[_0xc81d('0x65')]==='user'){var _0x11d1c5=_0x54b771[_0xc81d('0x2e')]({'plain':!![]});var _0x9ec1f9='ChatWebsites';return db['UserProfileSection'][_0xc81d('0x66')]({'where':{'name':_0x9ec1f9,'userProfileId':_0x58c3ad[_0xc81d('0x67')]},'raw':!![]})[_0xc81d('0x18')](function(_0x44b005){if(_0x44b005&&_0x44b005[_0xc81d('0x68')]===0x0){return db['UserProfileResource'][_0xc81d('0x63')]({'name':_0x11d1c5[_0xc81d('0x3e')],'resourceId':_0x11d1c5['id'],'type':_0x44b005[_0xc81d('0x3e')],'sectionId':_0x44b005['id']},{})['then'](function(){return _0x54b771;});}else{return _0x54b771;}})['catch'](function(_0xe8e6bd){logger[_0xc81d('0x20')](_0xc81d('0x69'),_0xe8e6bd);throw _0xe8e6bd;});}return _0x54b771;})['then'](respondWithResult(_0x44d0cc,0xc9))[_0xc81d('0x22')](handleError(_0x44d0cc,null));};exports[_0xc81d('0x2c')]=function(_0x3d53a2,_0x3d8c9b){if(_0x3d53a2[_0xc81d('0x64')]['id']){delete _0x3d53a2[_0xc81d('0x64')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x3d53a2['params']['id']},'include':[{'model':db[_0xc81d('0x5f')],'as':_0xc81d('0x47')}]})[_0xc81d('0x18')](handleEntityNotFound(_0x3d8c9b,null))['then'](saveUpdates(_0x3d53a2[_0xc81d('0x64')],null))[_0xc81d('0x18')](respondWithResult(_0x3d8c9b,null))[_0xc81d('0x22')](handleError(_0x3d8c9b,null));};exports[_0xc81d('0x2d')]=function(_0xb30286,_0x544652){return db[_0xc81d('0x60')][_0xc81d('0x66')]({'where':{'id':_0xb30286[_0xc81d('0x5e')]['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x544652,null))[_0xc81d('0x18')](removeEntity(_0x544652,null))[_0xc81d('0x22')](handleError(_0x544652,null));};exports[_0xc81d('0x6a')]=function(_0x2622f9,_0x38944a){return db[_0xc81d('0x60')][_0xc81d('0x6a')]()[_0xc81d('0x18')](respondWithResult(_0x38944a,null))['catch'](handleError(_0x38944a,null));};exports[_0xc81d('0x6b')]=function(_0xc303da,_0x20115d){if(_0xc303da[_0xc81d('0x64')]['id']){delete _0xc303da[_0xc81d('0x64')]['id'];}return db[_0xc81d('0x60')]['find']({'where':{'id':_0xc303da[_0xc81d('0x5e')]['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x20115d,null))[_0xc81d('0x18')](function(_0x4bbf56){if(_0x4bbf56){_0xc303da['body'][_0xc81d('0x6c')]=_0x4bbf56['id'];return db[_0xc81d('0x6d')][_0xc81d('0x63')](_0xc303da[_0xc81d('0x64')]);}})[_0xc81d('0x18')](respondWithResult(_0x20115d,null))[_0xc81d('0x22')](handleError(_0x20115d,null));};exports[_0xc81d('0x6e')]=function(_0xb164c4,_0x14ebca){var _0xafb769={'raw':![],'where':{}};var _0x5b588b={};var _0x501191={'count':0x0,'rows':[]};return db[_0xc81d('0x60')]['findOne']({'where':{'id':_0xb164c4['params']['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x14ebca,null))[_0xc81d('0x18')](function(_0x41d63f){if(_0x41d63f){_0x5b588b[_0xc81d('0x41')]=_[_0xc81d('0x4c')](db[_0xc81d('0x6d')][_0xc81d('0x61')]);_0x5b588b[_0xc81d('0x4b')]=_[_0xc81d('0x4c')](_0xb164c4['query']);_0x5b588b[_0xc81d('0x4d')]=_['intersection'](_0x5b588b[_0xc81d('0x41')],_0x5b588b[_0xc81d('0x4b')]);_0xafb769[_0xc81d('0x50')]=_[_0xc81d('0x4e')](_0x5b588b['model'],qs[_0xc81d('0x4f')](_0xb164c4[_0xc81d('0x4b')][_0xc81d('0x4f')]));_0xafb769['attributes']=_0xafb769[_0xc81d('0x50')][_0xc81d('0x62')]?_0xafb769[_0xc81d('0x50')]:_0x5b588b['model'];if(!_0xb164c4[_0xc81d('0x4b')][_0xc81d('0x51')]('nolimit')){_0xafb769[_0xc81d('0x29')]=qs[_0xc81d('0x29')](_0xb164c4[_0xc81d('0x4b')][_0xc81d('0x29')]);_0xafb769[_0xc81d('0x27')]=qs[_0xc81d('0x27')](_0xb164c4[_0xc81d('0x4b')]['offset']);}_0xafb769['order']=qs[_0xc81d('0x53')](_0xb164c4[_0xc81d('0x4b')][_0xc81d('0x53')]);_0xafb769[_0xc81d('0x54')]=qs[_0xc81d('0x4d')](_[_0xc81d('0x55')](_0xb164c4[_0xc81d('0x4b')],_0x5b588b[_0xc81d('0x4d')]));_0xafb769[_0xc81d('0x54')][_0xc81d('0x6c')]=_0x41d63f['id'];if(_0xb164c4[_0xc81d('0x4b')]['filter']){_0xafb769[_0xc81d('0x54')]=_[_0xc81d('0x57')](_0xafb769['where'],{'$or':_[_0xc81d('0x48')](_0xafb769[_0xc81d('0x50')],function(_0x545db4){var _0x5c8b17={};_0x5c8b17[_0x545db4]={'$like':'%'+_0xb164c4[_0xc81d('0x4b')][_0xc81d('0x56')]+'%'};return _0x5c8b17;})});}_0xafb769=_['merge']({},_0xafb769,_0xb164c4[_0xc81d('0x59')]);return db[_0xc81d('0x6d')][_0xc81d('0x2a')]({'where':_0xafb769[_0xc81d('0x54')]})['then'](function(_0xc2a165){_0x501191[_0xc81d('0x2a')]=_0xc2a165;if(_0xb164c4[_0xc81d('0x4b')]['includeAll']){_0xafb769[_0xc81d('0x5b')]=[{'all':!![]}];}return db['Disposition'][_0xc81d('0x5c')](_0xafb769);})[_0xc81d('0x18')](function(_0x4b8a88){_0x501191[_0xc81d('0x5d')]=_0x4b8a88;return _0x501191;});}})[_0xc81d('0x18')](respondWithFilteredResult(_0x14ebca,_0xafb769))[_0xc81d('0x22')](handleError(_0x14ebca,null));};exports[_0xc81d('0x6f')]=function(_0x5759c0,_0x178e4c){return db[_0xc81d('0x60')][_0xc81d('0x66')]({'where':{'id':_0x5759c0['params']['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x178e4c,null))[_0xc81d('0x18')](function(_0x13b60f){if(_0x13b60f){return _0x13b60f[_0xc81d('0x6f')](_0x5759c0[_0xc81d('0x4b')][_0xc81d('0x70')]);}})[_0xc81d('0x18')](respondWithStatusCode(_0x178e4c,null))[_0xc81d('0x22')](handleError(_0x178e4c,null));};exports['addAnswer']=function(_0x2ba75c,_0x122da5){if(_0x2ba75c[_0xc81d('0x64')]['id']){delete _0x2ba75c[_0xc81d('0x64')]['id'];}return db['ChatWebsite'][_0xc81d('0x66')]({'where':{'id':_0x2ba75c[_0xc81d('0x5e')]['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x122da5,null))[_0xc81d('0x18')](function(_0x11711e){if(_0x11711e){_0x2ba75c[_0xc81d('0x64')][_0xc81d('0x6c')]=_0x11711e['id'];return db[_0xc81d('0x71')]['create'](_0x2ba75c[_0xc81d('0x64')]);}})[_0xc81d('0x18')](respondWithResult(_0x122da5,null))['catch'](handleError(_0x122da5,null));};exports['getAnswers']=function(_0x5b422a,_0x5711f2){var _0x3ea02a={'raw':![],'where':{}};var _0x301911={};var _0x528b55={'count':0x0,'rows':[]};return db[_0xc81d('0x60')]['findOne']({'where':{'id':_0x5b422a[_0xc81d('0x5e')]['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x5711f2,null))['then'](function(_0x3c4d3a){if(_0x3c4d3a){_0x301911[_0xc81d('0x41')]=_[_0xc81d('0x4c')](db[_0xc81d('0x71')][_0xc81d('0x61')]);_0x301911['query']=_[_0xc81d('0x4c')](_0x5b422a[_0xc81d('0x4b')]);_0x301911[_0xc81d('0x4d')]=_[_0xc81d('0x4e')](_0x301911[_0xc81d('0x41')],_0x301911[_0xc81d('0x4b')]);_0x3ea02a[_0xc81d('0x50')]=_['intersection'](_0x301911[_0xc81d('0x41')],qs[_0xc81d('0x4f')](_0x5b422a[_0xc81d('0x4b')][_0xc81d('0x4f')]));_0x3ea02a[_0xc81d('0x50')]=_0x3ea02a['attributes'][_0xc81d('0x62')]?_0x3ea02a[_0xc81d('0x50')]:_0x301911['model'];if(!_0x5b422a[_0xc81d('0x4b')][_0xc81d('0x51')](_0xc81d('0x52'))){_0x3ea02a[_0xc81d('0x29')]=qs[_0xc81d('0x29')](_0x5b422a['query'][_0xc81d('0x29')]);_0x3ea02a[_0xc81d('0x27')]=qs[_0xc81d('0x27')](_0x5b422a[_0xc81d('0x4b')][_0xc81d('0x27')]);}_0x3ea02a[_0xc81d('0x72')]=qs[_0xc81d('0x53')](_0x5b422a[_0xc81d('0x4b')][_0xc81d('0x53')]);_0x3ea02a[_0xc81d('0x54')]=qs[_0xc81d('0x4d')](_[_0xc81d('0x55')](_0x5b422a[_0xc81d('0x4b')],_0x301911[_0xc81d('0x4d')]));_0x3ea02a[_0xc81d('0x54')]['ChatWebsiteId']=_0x3c4d3a['id'];if(_0x5b422a[_0xc81d('0x4b')][_0xc81d('0x56')]){_0x3ea02a[_0xc81d('0x54')]=_[_0xc81d('0x57')](_0x3ea02a['where'],{'$or':_[_0xc81d('0x48')](_0x3ea02a['attributes'],function(_0x4796e1){var _0x5ac618={};_0x5ac618[_0x4796e1]={'$like':'%'+_0x5b422a['query'][_0xc81d('0x56')]+'%'};return _0x5ac618;})});}_0x3ea02a=_[_0xc81d('0x57')]({},_0x3ea02a,_0x5b422a[_0xc81d('0x59')]);return db[_0xc81d('0x71')]['count']({'where':_0x3ea02a[_0xc81d('0x54')]})[_0xc81d('0x18')](function(_0x34b5aa){_0x528b55[_0xc81d('0x2a')]=_0x34b5aa;if(_0x5b422a['query'][_0xc81d('0x5a')]){_0x3ea02a['include']=[{'all':!![]}];}return db[_0xc81d('0x71')][_0xc81d('0x5c')](_0x3ea02a);})['then'](function(_0xb3f5e0){_0x528b55[_0xc81d('0x5d')]=_0xb3f5e0;return _0x528b55;});}})[_0xc81d('0x18')](respondWithFilteredResult(_0x5711f2,_0x3ea02a))[_0xc81d('0x22')](handleError(_0x5711f2,null));};exports[_0xc81d('0x73')]=function(_0x1dded3,_0x4bf238){return db[_0xc81d('0x60')]['find']({'where':{'id':_0x1dded3[_0xc81d('0x5e')]['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x4bf238,null))[_0xc81d('0x18')](function(_0x392cdf){if(_0x392cdf){return _0x392cdf[_0xc81d('0x73')](_0x1dded3[_0xc81d('0x4b')][_0xc81d('0x70')]);}})['then'](respondWithStatusCode(_0x4bf238,null))[_0xc81d('0x22')](handleError(_0x4bf238,null));};exports[_0xc81d('0x74')]=function(_0x1dfb3a,_0x27a61c){_0x1dfb3a['body']['sitepic']=_0x1dfb3a['file'][_0xc81d('0x75')];return db['ChatWebsite']['find']({'where':{'id':_0x1dfb3a[_0xc81d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x27a61c,null))[_0xc81d('0x18')](saveUpdates(_0x1dfb3a[_0xc81d('0x64')],null))[_0xc81d('0x18')](respondWithResult(_0x27a61c,null))[_0xc81d('0x22')](handleError(_0x27a61c,null));};exports[_0xc81d('0x76')]=function(_0x28becc,_0x108a09){_0x28becc[_0xc81d('0x64')][_0xc81d('0x77')]=_0x28becc[_0xc81d('0x78')][_0xc81d('0x75')];return db['ChatWebsite'][_0xc81d('0x66')]({'where':{'id':_0x28becc[_0xc81d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x108a09,null))[_0xc81d('0x18')](saveUpdates(_0x28becc[_0xc81d('0x64')],null))['then'](respondWithResult(_0x108a09,null))['catch'](handleError(_0x108a09,null));};exports[_0xc81d('0x79')]=function(_0x5ab4cc,_0x2294bf){_0x5ab4cc[_0xc81d('0x64')][_0xc81d('0x7a')]=_0x5ab4cc['file'][_0xc81d('0x75')];return db[_0xc81d('0x60')][_0xc81d('0x66')]({'where':{'id':_0x5ab4cc[_0xc81d('0x5e')]['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x2294bf,null))[_0xc81d('0x18')](saveUpdates(_0x5ab4cc[_0xc81d('0x64')],null))[_0xc81d('0x18')](respondWithResult(_0x2294bf,null))[_0xc81d('0x22')](handleError(_0x2294bf,null));};exports[_0xc81d('0x7b')]=function(_0x1a352f,_0x2d82dd){_0x1a352f[_0xc81d('0x64')][_0xc81d('0x7c')]=_0x1a352f[_0xc81d('0x78')][_0xc81d('0x75')];return db[_0xc81d('0x60')][_0xc81d('0x66')]({'where':{'id':_0x1a352f[_0xc81d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x2d82dd,null))[_0xc81d('0x18')](saveUpdates(_0x1a352f['body'],null))[_0xc81d('0x18')](respondWithResult(_0x2d82dd,null))['catch'](handleError(_0x2d82dd,null));};exports[_0xc81d('0x7d')]=function(_0x240294,_0x536477){var _0x4e8c89=path[_0xc81d('0x7e')](config[_0xc81d('0x7f')],_0xc81d('0x80'));var _0xb7f045={'where':{'id':_0x240294['params']['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x101fae=![];return require(_0xc81d('0x81'))[_0xc81d('0x82')]()[_0xc81d('0x18')](function(_0x4a37df){if(_0x4a37df){_0x101fae=_0x4a37df[_0xc81d('0x83')];}})['then'](function(){return db[_0xc81d('0x60')][_0xc81d('0x66')](_0xb7f045);})[_0xc81d('0x18')](handleEntityNotFound(_0x536477,null))[_0xc81d('0x18')](function(_0x27e696){if(_0x27e696){if(!_[_0xc81d('0x84')](_0x27e696[_0xc81d('0x85')])){if(fs[_0xc81d('0x86')](path['join'](config[_0xc81d('0x7f')],_0xc81d('0x87'),_0x27e696[_0xc81d('0x85')]))&&_0x101fae){_0x4e8c89=path[_0xc81d('0x7e')](config['root'],_0xc81d('0x87'),_0x27e696[_0xc81d('0x85')]);}}return _0x536477[_0xc81d('0x88')](_0x4e8c89);}})[_0xc81d('0x22')](handleError(_0x536477,null));};exports[_0xc81d('0x89')]=function(_0x3c8c58,_0x4265a6){var _0x52270a=path['join'](config['root'],_0xc81d('0x8a'));var _0x3983d3={'where':{'id':_0x3c8c58[_0xc81d('0x5e')]['id']},'attributes':['id',_0xc81d('0x77')],'raw':!![]};return db['ChatWebsite']['find'](_0x3983d3)[_0xc81d('0x18')](handleEntityNotFound(_0x4265a6,null))['then'](function(_0x32f306){if(_0x32f306){if(!_[_0xc81d('0x84')](_0x32f306[_0xc81d('0x77')])){if(fs[_0xc81d('0x86')](path[_0xc81d('0x7e')](config[_0xc81d('0x7f')],_0xc81d('0x8b'),_0x32f306[_0xc81d('0x77')]))){_0x52270a=path['join'](config[_0xc81d('0x7f')],_0xc81d('0x8b'),_0x32f306[_0xc81d('0x77')]);}}return _0x4265a6['download'](_0x52270a);}})[_0xc81d('0x22')](handleError(_0x4265a6,null));};exports['getCustomerAvatar']=function(_0x50e6cd,_0x1bf038){var _0x4c9f9d=path['join'](config['root'],'server/files/images/avatars/customer_avatar.png');var _0x2a0db8={'where':{'id':_0x50e6cd[_0xc81d('0x5e')]['id']},'attributes':['id',_0xc81d('0x7a'),_0xc81d('0x8c')],'raw':!![]};return db[_0xc81d('0x60')][_0xc81d('0x66')](_0x2a0db8)['then'](handleEntityNotFound(_0x1bf038,null))[_0xc81d('0x18')](function(_0x2e6520){if(_0x2e6520){if(!_[_0xc81d('0x84')](_0x2e6520[_0xc81d('0x7a')])){if(fs['existsSync'](path[_0xc81d('0x7e')](config[_0xc81d('0x7f')],_0xc81d('0x8b'),_0x2e6520[_0xc81d('0x7a')]))&&_0x2e6520['showCustomerAvatar']){_0x4c9f9d=path[_0xc81d('0x7e')](config['root'],_0xc81d('0x8b'),_0x2e6520[_0xc81d('0x7a')]);}}return _0x1bf038[_0xc81d('0x88')](_0x4c9f9d);}})[_0xc81d('0x22')](handleError(_0x1bf038,null));};exports['getSystemAvatar']=function(_0x8e301a,_0x17464d){var _0x28fc75=path[_0xc81d('0x7e')](config['root'],_0xc81d('0x8d'));var _0xfd2beb={'where':{'id':_0x8e301a[_0xc81d('0x5e')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db['ChatWebsite'][_0xc81d('0x66')](_0xfd2beb)[_0xc81d('0x18')](handleEntityNotFound(_0x17464d,null))[_0xc81d('0x18')](function(_0x316fc0){if(_0x316fc0){if(!_[_0xc81d('0x84')](_0x316fc0[_0xc81d('0x7c')])){if(fs[_0xc81d('0x86')](path[_0xc81d('0x7e')](config[_0xc81d('0x7f')],'server/files/images/avatars/',_0x316fc0[_0xc81d('0x7c')]))){_0x28fc75=path[_0xc81d('0x7e')](config[_0xc81d('0x7f')],_0xc81d('0x8b'),_0x316fc0[_0xc81d('0x7c')]);}}return _0x17464d[_0xc81d('0x88')](_0x28fc75);}})[_0xc81d('0x22')](handleError(_0x17464d,null));};exports[_0xc81d('0x8e')]=function(_0x2d9088,_0x2eb15a){var _0x20ee4f={'body':_0x2d9088[_0xc81d('0x64')],'channel':'chat'};var _0x4a1cf5=[];var _0x390851=[];var _0x344b56={};var _0x572812=![];if(_0x2d9088[_0xc81d('0x64')]['id']){delete _0x2d9088[_0xc81d('0x64')]['id'];}if(_[_0xc81d('0x84')](_0x2d9088['body'][_0xc81d('0x8f')])){throw new APIBadRequestError(_0xc81d('0x90'));}if(_['isNil'](_0x2d9088['body'][_0xc81d('0x91')])){throw new APIBadRequestError(_0xc81d('0x92'));}if(_[_0xc81d('0x93')](_0x2d9088[_0xc81d('0x64')][_0xc81d('0x64')])){throw new APIBadRequestError(_0xc81d('0x94'));}return db[_0xc81d('0x95')][_0xc81d('0x6a')]()['then'](function(_0x22a76e){if(!_0x22a76e){throw new Error('No\x20available\x20attributes');}_0x4a1cf5=Object[_0xc81d('0x4c')](_0x22a76e)[_0xc81d('0x56')](function(_0x298df6){return![_0xc81d('0x96'),_0xc81d('0x97')][_0xc81d('0x98')](_0x298df6);});_0x390851=Object[_0xc81d('0x4c')](_0x22a76e)[_0xc81d('0x56')](function(_0x5480f4){return!['createdAt',_0xc81d('0x97'),_0xc81d('0x99'),_0xc81d('0x9a')][_0xc81d('0x98')](_0x5480f4);});if(!_[_0xc81d('0x98')](_0x390851,_0x2d9088[_0xc81d('0x64')]['mapKey'])){throw new APIBadRequestError('Invalid\x20MapKey\x20parameter.\x20Allowed\x20values:\x20'+_0x390851['join'](',\x20'));}_0x344b56[_0x2d9088[_0xc81d('0x64')][_0xc81d('0x91')]]=_0x2d9088['body'][_0xc81d('0x8f')];})[_0xc81d('0x18')](function(){return db[_0xc81d('0x60')]['find']({'where':{'id':_0x2d9088[_0xc81d('0x5e')]['id']},'include':[{'model':db[_0xc81d('0x9b')],'as':'List','include':[{'model':db[_0xc81d('0x95')],'as':_0xc81d('0x9c'),'where':_0x344b56,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xc81d('0x9d')],'as':_0xc81d('0x9e')},{'model':db[_0xc81d('0x9f')],'as':_0xc81d('0x9f'),'include':[{'model':db[_0xc81d('0x9f')],'as':_0xc81d('0xa0'),'attributes':['id',_0xc81d('0xa1')],'raw':!![]}]}]});})[_0xc81d('0x18')](function(_0x4ebc67){if(!_0x4ebc67){throw new APINotFoundError(util['format'](_0xc81d('0xa2'),_0x2d9088[_0xc81d('0x5e')]['id']));}var _0x18780c=_0x4ebc67[_0xc81d('0x9f')];if(_0x18780c){var _0x1dbec7=_0x4ebc67[_0xc81d('0xa3')]||undefined;return _0x18780c['ifTime'](_0x1dbec7)[_0xc81d('0x18')](function(_0x2f9942){if(!_0x2f9942){throw new APIOutOfIntervalError();}return _0x4ebc67;});}else{return _0x4ebc67;}})['then'](function(_0x5a827a){if(!_0x5a827a[_0xc81d('0xa4')]){return;}_0x20ee4f['account']=_0x5a827a;_0x20ee4f[_0xc81d('0xa5')]=_0x5a827a['List'];_0x20ee4f[_0xc81d('0xa6')]=_[_0xc81d('0xa7')](_0x5a827a[_0xc81d('0x9e')],[_0xc81d('0xa8')],[_0xc81d('0xa9')]);if(_0x20ee4f[_0xc81d('0xaa')]['Applications']){delete _0x20ee4f[_0xc81d('0xaa')][_0xc81d('0x9e')];}if(_0x20ee4f[_0xc81d('0xaa')][_0xc81d('0xa4')]&&_0x20ee4f[_0xc81d('0xaa')][_0xc81d('0xa4')][_0xc81d('0x9c')][_0xc81d('0x62')]){return _0x20ee4f[_0xc81d('0xaa')]['List']['Contacts'][0x0];}var _0x4024a3=_[_0xc81d('0x11')](_0x2d9088[_0xc81d('0x64')],{'firstName':_0x2d9088[_0xc81d('0x64')][_0xc81d('0x8f')],'ListId':_0x5a827a[_0xc81d('0x9a')]});_0x4024a3[_0x2d9088[_0xc81d('0x64')]['mapKey']]=_0x2d9088[_0xc81d('0x64')]['from'];return db[_0xc81d('0x95')][_0xc81d('0x63')](_0x4024a3,{'fields':_0x4a1cf5,'raw':!![]});})[_0xc81d('0x18')](function(_0x4a7741){_0x20ee4f[_0xc81d('0xab')]=_0x4a7741;var _0x48fc07=createInteractionObject(_0x2d9088[_0xc81d('0x5e')]['id'],_0x2d9088[_0xc81d('0x64')],_0x2d9088[_0xc81d('0xac')],_0x4a7741);var _0x4dc643={'ChatWebsiteId':_0x2d9088['params']['id'],'closed':![]};if(_0x2d9088[_0xc81d('0x64')]['threadId']){_0x4dc643[_0xc81d('0xad')]=_0x2d9088[_0xc81d('0x64')][_0xc81d('0xad')];return db[_0xc81d('0xae')][_0xc81d('0x66')]({'where':_0x4dc643})[_0xc81d('0x18')](function(_0x197d52){if(_0x197d52){_0x572812=!![];return _0x197d52;}_0x48fc07[_0xc81d('0xad')]=_0x2d9088[_0xc81d('0x64')][_0xc81d('0xad')];_0x48fc07[_0xc81d('0xaf')]=_0x2d9088[_0xc81d('0x64')][_0xc81d('0xaf')];return db['ChatInteraction'][_0xc81d('0x63')](_0x48fc07);});}_0x4dc643[_0xc81d('0xb0')]=_0x4a7741['id'];if(_0x2d9088[_0xc81d('0x64')][_0xc81d('0xb1')]&&_0x2d9088[_0xc81d('0x64')][_0xc81d('0xb1')]['id']){_0x4dc643['id']=_0x2d9088[_0xc81d('0x64')][_0xc81d('0xb1')]['id'];return db[_0xc81d('0xae')][_0xc81d('0x66')]({'where':_0x4dc643})[_0xc81d('0x18')](function(_0x35b785){if(_0x35b785){_0x572812=!![];return _0x35b785;}return db['ChatInteraction'][_0xc81d('0x63')](_0x48fc07);});}return db[_0xc81d('0xae')][_0xc81d('0x63')](_0x48fc07);})[_0xc81d('0x18')](function(_0x184609){if(!_0x572812){return _0x184609;}var _0x2c6c70={'from':(_0x20ee4f[_0xc81d('0xab')][_0xc81d('0xb2')]||'')+'\x20'+(_0x20ee4f['contact'][_0xc81d('0x39')]||'')};if(_0x2d9088[_0xc81d('0x64')]['threadId']&&_0x2d9088['body'][_0xc81d('0xb3')]&&_0x2d9088[_0xc81d('0x64')][_0xc81d('0xad')]!=_0x2d9088['body'][_0xc81d('0xb3')]){_0x2c6c70[_0xc81d('0xad')]=_0x2d9088['body'][_0xc81d('0xb3')];}return _0x184609[_0xc81d('0x2c')](_0x2c6c70);})[_0xc81d('0x18')](function(_0x28b397){_0x20ee4f[_0xc81d('0xb1')]=_0x28b397['get']({'plain':!![]});_0x20ee4f[_0xc81d('0xb1')][_0xc81d('0xb4')]=!_0x572812;if(_0x20ee4f[_0xc81d('0xb1')][_0xc81d('0xb4')]){if(_0x20ee4f['account'][_0xc81d('0xb5')]){_0x20ee4f[_0xc81d('0xa6')][_0xc81d('0xb6')]({'id':0x0,'priority':_0x20ee4f['applications'][_0xc81d('0x62')]+0x1,'app':_0xc81d('0xb7'),'appdata':'unmanaged','interval':'*,*,*,*'});}}return db[_0xc81d('0xb8')][_0xc81d('0x63')]({'body':_0x2d9088['body']['body'],'ChatWebsiteId':_0x2d9088[_0xc81d('0x5e')]['id'],'ChatInteractionId':_0x28b397['id'],'direction':'in','ContactId':_0x20ee4f[_0xc81d('0xab')]['id'],'AttachmentId':_0x2d9088[_0xc81d('0x64')][_0xc81d('0xb9')]});})[_0xc81d('0x18')](function(_0x1394a4){_0x20ee4f[_0xc81d('0x21')]=_0x1394a4;if(!_0x20ee4f[_0xc81d('0xb1')][_0xc81d('0xba')]){return;}return db[_0xc81d('0xbb')][_0xc81d('0x66')]({'attributes':['id',_0xc81d('0x3e')],'where':{'id':_0x20ee4f['interaction']['UserId']}});})[_0xc81d('0x18')](function(_0x1cc3e2){if(_0x1cc3e2){_0x20ee4f[_0xc81d('0xa6')][_0xc81d('0xbc')]({'id':0x0,'priority':0x0,'app':_0xc81d('0xbd'),'appdata':_0x1cc3e2[_0xc81d('0x3e')]+','+(_0x20ee4f[_0xc81d('0xaa')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});_0x20ee4f[_0xc81d('0xbe')]=!![];}if(!_0x20ee4f['interaction']['queueId']){return;}return db[_0xc81d('0xbf')][_0xc81d('0x66')]({'attributes':['id',_0xc81d('0x3e')],'where':{'id':_0x20ee4f['interaction'][_0xc81d('0xc0')]}});})[_0xc81d('0x18')](function(_0xe42b6c){if(_0xe42b6c){_0x20ee4f[_0xc81d('0xa6')][_0xc81d('0xbc')]({'id':0x0,'priority':0x1,'app':_0xc81d('0xc1'),'appdata':_0xe42b6c[_0xc81d('0x3e')]+','+(_0x20ee4f[_0xc81d('0xaa')]['waitForTheAssignedQueue']||0x12c),'interval':_0xc81d('0xc2')});}return respondWithRpcPromise(_0xc81d('0xc3'),_0xc81d('0xc4'),_0x20ee4f);})[_0xc81d('0x18')](function(_0x2a0e60){respondWithRpcPromise(_0xc81d('0xc5'),_0xc81d('0xc5'),{'event':_0xc81d('0x8e'),'message':_0x2a0e60},client9002);return _0x2a0e60;})['then'](respondWithResult(_0x2eb15a,null))[_0xc81d('0x22')](APIHandleError(_0x2eb15a));};exports[_0xc81d('0xc6')]=function(_0x3d6804,_0x5a9d5a){var _0x1799d7,_0x51f639,_0x4e7320;var _0x502443=[];var _0x5a88fd={};var _0xd87f0d=_0x3d6804[_0xc81d('0xc7')]||[];var _0x2407db=[];var _0x21c939;return db[_0xc81d('0x95')][_0xc81d('0x6a')]()[_0xc81d('0x18')](function(_0x586728){if(!_0x586728){throw new db['Sequelize']['ValidationError'](_0xc81d('0xc8'));}_0x502443=_[_0xc81d('0xc9')](_[_0xc81d('0x4c')](_0x586728),[_0xc81d('0x96'),_0xc81d('0x97'),_0xc81d('0x99'),_0xc81d('0x9a')]);if(_0x3d6804[_0xc81d('0x64')]['id']){delete _0x3d6804[_0xc81d('0x64')]['id'];}if(_[_0xc81d('0x84')](_0x3d6804['body'][_0xc81d('0x8f')])){throw _0x5a9d5a[_0xc81d('0x24')](0x1f4)['send'](new db[(_0xc81d('0xca'))][(_0xc81d('0xcb'))](_0xc81d('0xcc')));}if(_[_0xc81d('0x84')](_0x3d6804['body'][_0xc81d('0x64')])||_0x3d6804['body'][_0xc81d('0x64')]===''){throw _0x5a9d5a[_0xc81d('0x24')](0x1f4)[_0xc81d('0x31')](new db['Sequelize'][(_0xc81d('0xcb'))](_0xc81d('0xcd')));}if(_[_0xc81d('0x84')](_0x3d6804[_0xc81d('0x64')][_0xc81d('0xce')])){throw _0x5a9d5a[_0xc81d('0x24')](0x1f4)[_0xc81d('0x31')](new db[(_0xc81d('0xca'))][(_0xc81d('0xcb'))](_0xc81d('0xcf')+_0x502443));}if(!_[_0xc81d('0x98')](_0x502443,_0x3d6804['body'][_0xc81d('0xce')])){throw _0x5a9d5a[_0xc81d('0x24')](0x1f4)[_0xc81d('0x31')](new db['Sequelize'][(_0xc81d('0xcb'))](_0xc81d('0xd0')+_0x502443));}_0x5a88fd[_0x3d6804['body'][_0xc81d('0xce')]]=_0x3d6804['body']['from'];})[_0xc81d('0x18')](function(){return db[_0xc81d('0x60')][_0xc81d('0x66')]({'where':{'id':_0x3d6804['params']['id']},'include':[{'model':db['CmList'],'as':_0xc81d('0xa4')},{'model':db['MailAccount'],'as':_0xc81d('0xd1')}]});})[_0xc81d('0x18')](handleEntityNotFound(_0x5a9d5a,null))[_0xc81d('0x18')](function(_0x68ecd3){if(_0x68ecd3&&_0x68ecd3[_0xc81d('0xa4')]){_0x51f639=_0x68ecd3;var _0xde2730=_[_0xc81d('0x11')](_0x3d6804[_0xc81d('0x64')],{'firstName':_0x3d6804['body'][_0xc81d('0x8f')],'phone':_0x3d6804[_0xc81d('0x64')][_0xc81d('0x8f')],'ListId':_0x68ecd3['ListId']});_0xde2730[_0x3d6804['body']['mapKeyOffline']]=_0x3d6804['body'][_0xc81d('0x8f')];return db['CmContact'][_0xc81d('0xd2')]({'where':_0x5a88fd,'defaults':_0xde2730});}})['spread'](function(_0x3a5452){if(_0x3a5452){_0x4e7320=_0x3a5452;var _0x42d39e=fs['readFileSync'](path[_0xc81d('0x7e')](config[_0xc81d('0x7f')],_0xc81d('0xd3')),_0xc81d('0xd4'));var _0x2713ee=ejs[_0xc81d('0xd5')](_0x42d39e,{'body':_[_0xc81d('0xd6')](_0x3d6804[_0xc81d('0x64')][_0xc81d('0x64')]),'bodyTitle':_0x51f639[_0xc81d('0xd7')]});return db[_0xc81d('0xd8')]['create']({'body':_0x2713ee,'plainBody':htmlToText[_0xc81d('0xd9')](_0x2713ee),'ContactId':_0x3a5452['id'],'ChatWebsiteId':_0x51f639['id']});}})['then'](function(_0x3890f0){_0x21c939=_0x3890f0;if(_0xd87f0d['length']){var _0x40a060=_0xd87f0d['map'](function(_0x3b98b5){return{'name':_0x3b98b5[_0xc81d('0xda')],'basename':_0x3b98b5[_0xc81d('0x75')],'type':_0x3b98b5[_0xc81d('0xdb')],'ChatOfflineMessageId':_0x3890f0['id']};});_0x2407db=_0x40a060[_0xc81d('0x48')](_0x48a84f=>{var _0x13aba0={'filename':_0x48a84f[_0xc81d('0x3e')],'path':path[_0xc81d('0x7e')](config['root'],_0xc81d('0xdc'),_0xc81d('0xc7'),_0xc81d('0xdd'),_0xc81d('0xde'),_0x48a84f[_0xc81d('0xdf')])};return _0x13aba0;});if(!_0x51f639[_0xc81d('0xe0')]){return db[_0xc81d('0xe1')][_0xc81d('0xe2')](function(_0x292154){return db[_0xc81d('0xe3')]['bulkCreate'](_0x40a060,{'transaction':_0x292154});});}}})[_0xc81d('0x18')](function(){if(_0x21c939){_0x1799d7=_0x21c939;return db[_0xc81d('0xd1')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xc81d('0xe4')],'as':_0xc81d('0xe5'),'raw':!![],'include':[{'model':db[_0xc81d('0xe6')],'as':_0xc81d('0xe6'),'raw':!![]}]}]});}})[_0xc81d('0x18')](function(_0x19c60c){if(_0x19c60c&&_0x19c60c[_0xc81d('0xe5')]&&_0x51f639[_0xc81d('0xe7')]&&_0x51f639['forwardOfflineAddress']){var _0x2a2f42=_0x19c60c[_0xc81d('0xe8')]();return respondWithRpcPromise(_0xc81d('0xe9'),'sendMail',{'account':_0x2a2f42,'message':{'from':util[_0xc81d('0x42')](_0xc81d('0xea'),_0x19c60c[_0xc81d('0x3e')],_0x19c60c[_0xc81d('0xeb')]||_0x19c60c[_0xc81d('0xe5')][_0xc81d('0xec')]),'to':_0x51f639[_0xc81d('0xed')],'subject':_0x51f639['offlineMessageSubject'],'html':_0x1799d7[_0xc81d('0x64')],'attachments':_0x2407db}},client9003)[_0xc81d('0x18')](function(){return _0x1799d7;})['catch'](function(_0x156da3){logger['error'](_0x156da3);});}})[_0xc81d('0x18')](function(){if(_0x51f639&&_0x51f639['openNewInteraction']&&_0x51f639[_0xc81d('0xee')]){var _0x1232a3=[];if(_0xd87f0d[_0xc81d('0x62')]){_0x1232a3=_0xd87f0d[_0xc81d('0x48')](function(_0x1b4ef4){return{'name':_0x1b4ef4[_0xc81d('0xda')],'basename':_0x1b4ef4['filename'],'type':_0x1b4ef4[_0xc81d('0xdb')],'ChatOfflineMessageId':_0x21c939['id']};});}var _0x29350e;if(!_[_0xc81d('0x84')](_0x51f639['subjectOffline'])){var _0x2755c2=_[_0xc81d('0x48')](_0x3d6804[_0xc81d('0x64')],function(_0x40c638){return _0x40c638;});var _0x29d387=_[_0xc81d('0xef')](_0x2755c2)[0x0];var _0xf5cadf=_[_0xc81d('0xf0')](_0x29d387,function(_0x2f0773){return _0x2f0773;});_0x29350e=_0xf5cadf[0x1][_0x51f639[_0xc81d('0xf1')]];}var _0x1f674c={'from':_0x4e7320[_0xc81d('0xeb')],'firstName':_0x4e7320[_0xc81d('0xb2')],'lastName':_0x4e7320[_0xc81d('0x39')],'mapKey':'email','message':{'from':_0x4e7320[_0xc81d('0xeb')],'to':_0x51f639[_0xc81d('0xd1')][_0xc81d('0xeb')],'cc':'','subject':_[_0xc81d('0x84')](_0x29350e)?_0x51f639[_0xc81d('0xf2')]:_0x29350e,'messageId':'','sentAt':new Date(),'attach':_0x1232a3['length'],'attachments':_0x1232a3,'originChannel':'Chat','ChatWebsiteId':_0x51f639['id'],'ChatOfflineMessageId':_0x1799d7['id'],'originTo':_0x51f639[_0xc81d('0xd1')][_0xc81d('0xeb')]},'body':_0x1799d7[_0xc81d('0x64')]};var _0x697a4c={'account':{'id':_0x51f639[_0xc81d('0xee')]},'body':_0x1f674c,'log':_0xc81d('0xf3')};return respondWithRpcPromise(_0xc81d('0xf3'),'notifyMail',_0x697a4c,client9001)[_0xc81d('0x18')](function(){return _0x1799d7;})[_0xc81d('0x22')](function(_0x34b87f){logger[_0xc81d('0x20')](_0x34b87f);});}return;})['then'](function(){if(_0x1799d7){return _0x1799d7;}})[_0xc81d('0x18')](respondWithResult(_0x5a9d5a,null))['catch'](function(){for(var _0x1d1440 of _0xd87f0d){var _0x3f6bd3=path[_0xc81d('0x7e')](config[_0xc81d('0x7f')],'server',_0xc81d('0xc7'),_0xc81d('0xdd'),'offline-chat',_0x1d1440[_0xc81d('0x75')]);fs_extra[_0xc81d('0xf4')](_0x3f6bd3)[_0xc81d('0x22')](function(_0x3dbd3b){logger[_0xc81d('0x20')](_0xc81d('0xf5'),_0x3f6bd3,_0x3dbd3b);});}});};exports[_0xc81d('0xf6')]=function(_0x4b6a83,_0x5b3aa1){return db['ChatInteraction'][_0xc81d('0x66')]({'where':{'id':_0x4b6a83[_0xc81d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x5b3aa1,null))[_0xc81d('0x18')](function(_0x366897){if(_0x366897){return _0x366897[_0xc81d('0xf6')](_0x4b6a83['body'][_0xc81d('0x70')],_[_0xc81d('0xf7')](_0x4b6a83[_0xc81d('0x64')],[_0xc81d('0x70'),'id'])||{});}})['then'](respondWithResult(_0x5b3aa1,null))[_0xc81d('0x22')](handleError(_0x5b3aa1,null));};exports['getInteractions']=function(_0x534a1e,_0x4e0f1c){var _0x9d3fcd={'raw':![],'where':{}};var _0x59e421={};var _0x1b7d3f={'count':0x0,'rows':[]};return db[_0xc81d('0x60')]['findOne']({'where':{'id':_0x534a1e['params']['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x4e0f1c,null))[_0xc81d('0x18')](function(_0x487583){if(_0x487583){_0x59e421[_0xc81d('0x41')]=_['keys'](db['ChatInteraction'][_0xc81d('0x61')]);_0x59e421[_0xc81d('0x4b')]=_[_0xc81d('0x4c')](_0x534a1e[_0xc81d('0x4b')]);_0x59e421[_0xc81d('0x4d')]=_[_0xc81d('0x4e')](_0x59e421[_0xc81d('0x41')],_0x59e421[_0xc81d('0x4b')]);_0x9d3fcd[_0xc81d('0x50')]=_[_0xc81d('0x4e')](_0x59e421['model'],qs[_0xc81d('0x4f')](_0x534a1e[_0xc81d('0x4b')][_0xc81d('0x4f')]));_0x9d3fcd[_0xc81d('0x50')]=_0x9d3fcd[_0xc81d('0x50')]['length']?_0x9d3fcd['attributes']:_0x59e421[_0xc81d('0x41')];if(!_0x534a1e[_0xc81d('0x4b')]['hasOwnProperty']('nolimit')){_0x9d3fcd[_0xc81d('0x29')]=qs[_0xc81d('0x29')](_0x534a1e[_0xc81d('0x4b')]['limit']);_0x9d3fcd['offset']=qs[_0xc81d('0x27')](_0x534a1e[_0xc81d('0x4b')]['offset']);}_0x9d3fcd[_0xc81d('0x72')]=qs[_0xc81d('0x53')](_0x534a1e[_0xc81d('0x4b')][_0xc81d('0x53')]);_0x9d3fcd['where']=qs[_0xc81d('0x4d')](_[_0xc81d('0x55')](_0x534a1e[_0xc81d('0x4b')],_0x59e421[_0xc81d('0x4d')]));_0x9d3fcd['where'][_0xc81d('0x6c')]=_0x487583['id'];if(_0x534a1e[_0xc81d('0x4b')][_0xc81d('0x56')]){_0x9d3fcd['where']=_['merge'](_0x9d3fcd[_0xc81d('0x54')],{'$or':_['map'](_0x9d3fcd[_0xc81d('0x50')],function(_0x540fec){var _0x300ff6={};_0x300ff6[_0x540fec]={'$like':'%'+_0x534a1e[_0xc81d('0x4b')][_0xc81d('0x56')]+'%'};return _0x300ff6;})});}_0x9d3fcd=_['merge']({},_0x9d3fcd,_0x534a1e[_0xc81d('0x59')]);return db[_0xc81d('0xae')][_0xc81d('0x2a')]({'where':_0x9d3fcd[_0xc81d('0x54')]})[_0xc81d('0x18')](function(_0x97188){_0x1b7d3f[_0xc81d('0x2a')]=_0x97188;if(_0x534a1e[_0xc81d('0x4b')][_0xc81d('0x5a')]){_0x9d3fcd['include']=[{'model':db['CmContact'],'as':_0xc81d('0xf8'),'required':![]},{'model':db[_0xc81d('0xbb')],'as':'Owner','attributes':['name','fullname',_0xc81d('0xf9')],'required':![]},{'model':db[_0xc81d('0xfa')],'as':_0xc81d('0xfb'),'attributes':['id',_0xc81d('0x3e'),_0xc81d('0xfc')],'where':_0x534a1e['query'][_0xc81d('0xfd')]?{'id':_0x534a1e[_0xc81d('0x4b')][_0xc81d('0xfd')]}:undefined,'required':_0x534a1e[_0xc81d('0x4b')]['tag']?!![]:![]}];}return db[_0xc81d('0xae')]['findAll'](_0x9d3fcd);})['then'](function(_0x2c5d2c){_0x1b7d3f[_0xc81d('0x5d')]=_0x2c5d2c;return _0x1b7d3f;});}})['then'](respondWithFilteredResult(_0x4e0f1c,_0x9d3fcd))[_0xc81d('0x22')](handleError(_0x4e0f1c,null));};exports[_0xc81d('0xfe')]=function(_0x2724ee,_0x3b6af0){var _0x355fff=0x0;var _0x5d7cc2=0x0;var _0x372995=![];var _0x104a72;var _0x3323c8;return db[_0xc81d('0x60')][_0xc81d('0x66')]({'where':{'id':_0x2724ee[_0xc81d('0x5e')]['id']},'include':[{'model':db[_0xc81d('0x9f')],'as':_0xc81d('0x9f'),'include':[{'model':db[_0xc81d('0x9f')],'as':_0xc81d('0xa0'),'attributes':['id',_0xc81d('0xa1')]}]}]})['then'](handleEntityNotFound(_0x3b6af0,null))[_0xc81d('0x18')](function(_0x259191){if(_0x259191){_0x104a72=_0x259191;return _0x259191[_0xc81d('0xff')]({'raw':!![]});}})['then'](function(_0x57bbbb){if(_0x104a72){if(_0x57bbbb){_0x3323c8=_0x57bbbb;}}return require(_0xc81d('0x81'))['getLicense']();})[_0xc81d('0x18')](function(_0x3671ba){if(_0x3671ba){_0x5d7cc2=_0x3671ba['virtual'];_0x372995=_0x3671ba['custom'];}})['then'](function(){return db[_0xc81d('0xae')][_0xc81d('0x2a')]({'where':{'closed':![]}});})[_0xc81d('0x18')](function(_0x34819f){_0x355fff=_0x34819f;if(_0x5d7cc2&&_0x34819f>_0x5d7cc2){return db[_0xc81d('0x100')][_0xc81d('0x101')]({'where':{'id':0x1}})['then'](function(_0xe61322){if(_0xe61322){_0xe61322[_0xc81d('0x102')](_0xc81d('0x103'));}});}})[_0xc81d('0x18')](function(){var _0x36716e=_0x104a72[_0xc81d('0x9f')];var _0x33e665=_0x104a72[_0xc81d('0xa3')]||undefined;return _0x36716e?_0x36716e[_0xc81d('0x104')](_0x33e665):!![];})[_0xc81d('0x18')](function(_0x4fc108){var _0x5524bc=fs[_0xc81d('0x105')](path[_0xc81d('0x7e')](config[_0xc81d('0x7f')],'server/files/chat/iframe.ejs'),'utf8');var _0x391123=new url[(_0xc81d('0x106'))](_0x104a72[_0xc81d('0x107')])[_0xc81d('0x108')];var _0x2d47c0=_0xc81d('0x109');var _0x3bc9eb=![];var _0x4124c7={'chatVersion':_0x2d47c0,'chatWebsiteAddressOrigin':_0x391123,'remote':_0x104a72[_0xc81d('0x10a')],'query':querystring[_0xc81d('0x1e')](_[_0xc81d('0x57')](_0x104a72[_0xc81d('0x2e')]({'plain':!![]}),{'customerIp':_0x2724ee['headers']['x-forwarded-for']||_0x2724ee[_0xc81d('0xac')][_0xc81d('0x10b')]||_0x2724ee[_0xc81d('0x10c')][_0xc81d('0x10d')]||_0x2724ee['ip'],'referer':_0x2724ee[_0xc81d('0xac')][_0xc81d('0x3b')],'openedInteractions':_0x355fff,'maxInteractions':_0x5d7cc2,'virtual':_0x372995[_0xc81d('0x10e')],'online':_0x4fc108,'custom':_0x372995}))[_0xc81d('0x10f')](/'/g,'\x5c\x27')};_0x3b6af0[_0xc81d('0x31')](ejs[_0xc81d('0xd5')](Mustache[_0xc81d('0xd5')](_0x5524bc,_0x4124c7),{'proactiveActions':_0x3323c8,'alignment':_0x104a72[_0xc81d('0x110')],'verticalAlignment':_0x104a72[_0xc81d('0x111')],'div_color':_0x104a72['color'],'labelText':_0x104a72[_0xc81d('0x112')],'text_color':_0x104a72[_0xc81d('0x113')],'text_button_color':_0x104a72[_0xc81d('0x114')],'button_color':_0x104a72[_0xc81d('0x115')],'background_color':_0x104a72[_0xc81d('0x116')],'hideWhenOffline':_0x104a72[_0xc81d('0x117')],'intervalId':_0x104a72[_0xc81d('0x118')],'isDevelopment':_0x3bc9eb,'chatVersion':_0x2d47c0}));})[_0xc81d('0x22')](handleError(_0x3b6af0,null));};exports['addApplications']=function(_0x2a6c67,_0x1273b2){var _0x58d6f2=_0x2a6c67[_0xc81d('0x5e')]['id'];var _0x17ecc7=_0x2a6c67['body'];var _0x385ccd=0xc8;var _0x36ab63=null;return db[_0xc81d('0xe1')]['transaction']({'isolationLevel':db['sequelize'][_0xc81d('0x119')][_0xc81d('0x11a')][_0xc81d('0x11b')]},function(_0x2255db){return db[_0xc81d('0x60')][_0xc81d('0x101')]({'where':{'id':_0x58d6f2},'transaction':_0x2255db})[_0xc81d('0x18')](function(_0x45349d){if(_0x45349d){return db[_0xc81d('0x9d')][_0xc81d('0x2d')]({'where':{'ChatWebsiteId':_0x58d6f2},'transaction':_0x2255db})[_0xc81d('0x18')](function(){var _0x51e936=_[_0xc81d('0x48')](_0x17ecc7,function(_0x22090e){_0x22090e[_0xc81d('0x6c')]=_0x58d6f2;return _0x22090e;});return db[_0xc81d('0x9d')][_0xc81d('0x11c')](_0x51e936,{'transaction':_0x2255db});});}else{_0x385ccd=0x194;_0x36ab63=[];}});})[_0xc81d('0x18')](function(){if(_0x385ccd!==0x194){return db[_0xc81d('0x9d')]['findAndCountAll']({'where':{'ChatWebsiteId':_0x58d6f2},'order':'priority'})[_0xc81d('0x18')](function(_0xd9d900){_0x36ab63=_0xd9d900;});}})[_0xc81d('0x22')](function(_0x3c54c8){_0x385ccd=0x1f4;logger[_0xc81d('0x20')](_0x3c54c8['stack']);if(_0x3c54c8[_0xc81d('0x3e')]){delete _0x3c54c8[_0xc81d('0x3e')];}_0x36ab63=_0x3c54c8;})[_0xc81d('0x11d')](function(){if(_0x36ab63===null){_0x1273b2[_0xc81d('0x23')](_0x385ccd);}else{if(_0x385ccd===0x1f4){_0x1273b2[_0xc81d('0x24')](_0x385ccd)[_0xc81d('0x31')](_0x36ab63);}else{_0x1273b2['status'](_0x385ccd)[_0xc81d('0x26')](_0x36ab63);}}});};exports['getApplications']=function(_0xdcd67b,_0x3bcda0){var _0x3cc2f3={};var _0x426e63={};var _0x3228f3;var _0x327ead;return db[_0xc81d('0x60')]['findOne']({'where':{'id':_0xdcd67b['params']['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x3bcda0,null))['then'](function(_0x393de6){if(_0x393de6){_0x3228f3=_0x393de6;_0x426e63['model']=_[_0xc81d('0x4c')](db[_0xc81d('0x9d')][_0xc81d('0x61')]);_0x426e63[_0xc81d('0x4b')]=_[_0xc81d('0x4c')](_0xdcd67b[_0xc81d('0x4b')]);_0x426e63[_0xc81d('0x4d')]=_['intersection'](_0x426e63[_0xc81d('0x41')],_0x426e63['query']);_0x3cc2f3[_0xc81d('0x50')]=_['intersection'](_0x426e63[_0xc81d('0x41')],qs[_0xc81d('0x4f')](_0xdcd67b[_0xc81d('0x4b')]['fields']));_0x3cc2f3[_0xc81d('0x50')]=_0x3cc2f3[_0xc81d('0x50')][_0xc81d('0x62')]?_0x3cc2f3[_0xc81d('0x50')]:_0x426e63['model'];_0x3cc2f3[_0xc81d('0x72')]=qs['sort'](_0xdcd67b[_0xc81d('0x4b')][_0xc81d('0x53')]);_0x3cc2f3[_0xc81d('0x54')]=qs['filters'](_[_0xc81d('0x55')](_0xdcd67b['query'],_0x426e63[_0xc81d('0x4d')]));if(_0xdcd67b[_0xc81d('0x4b')]['filter']){_0x3cc2f3[_0xc81d('0x54')]=_[_0xc81d('0x57')](_0x3cc2f3[_0xc81d('0x54')],{'$or':_[_0xc81d('0x48')](_0x3cc2f3[_0xc81d('0x50')],function(_0xf2e010){var _0xa0e89d={};_0xa0e89d[_0xf2e010]={'$like':'%'+_0xdcd67b[_0xc81d('0x4b')][_0xc81d('0x56')]+'%'};return _0xa0e89d;})});}_0x3cc2f3=_[_0xc81d('0x57')]({},_0x3cc2f3,_0xdcd67b[_0xc81d('0x59')]);return _0x3228f3[_0xc81d('0x11e')](_0x3cc2f3);}})['then'](function(_0x443e69){if(_0x443e69){_0x327ead=_0x443e69[_0xc81d('0x62')];if(!_0xdcd67b[_0xc81d('0x4b')][_0xc81d('0x51')](_0xc81d('0x52'))){_0x3cc2f3[_0xc81d('0x29')]=qs[_0xc81d('0x29')](_0xdcd67b[_0xc81d('0x4b')][_0xc81d('0x29')]);_0x3cc2f3[_0xc81d('0x27')]=qs[_0xc81d('0x27')](_0xdcd67b[_0xc81d('0x4b')][_0xc81d('0x27')]);}return _0x3228f3[_0xc81d('0x11e')](_0x3cc2f3);}})[_0xc81d('0x18')](function(_0x5295d7){if(_0x5295d7){return _0x5295d7?{'count':_0x327ead,'rows':_0x5295d7}:null;}})[_0xc81d('0x18')](respondWithResult(_0x3bcda0,null))[_0xc81d('0x22')](handleError(_0x3bcda0,null));};exports['addProactiveActions']=function(_0x1a131d,_0x37318e){return db[_0xc81d('0x11f')][_0xc81d('0x66')]({'where':{'id':_0x1a131d[_0xc81d('0x5e')]['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x37318e,null))[_0xc81d('0x18')](function(_0x490b20){if(_0x490b20){return _0x490b20[_0xc81d('0x120')](_0x1a131d['body'][_0xc81d('0x70')],_[_0xc81d('0xf7')](_0x1a131d[_0xc81d('0x64')],['ids','id'])||{});}})['then'](respondWithResult(_0x37318e,null))['catch'](handleError(_0x37318e,null));};exports[_0xc81d('0xff')]=function(_0x3e4770,_0x144920){var _0x1c8584={};var _0x559411={};var _0x1d1ae6;var _0x4bd6ad;return db[_0xc81d('0x60')][_0xc81d('0x101')]({'where':{'id':_0x3e4770[_0xc81d('0x5e')]['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x144920,null))[_0xc81d('0x18')](function(_0x401324){if(_0x401324){_0x1d1ae6=_0x401324;_0x559411['model']=_[_0xc81d('0x4c')](db[_0xc81d('0x121')][_0xc81d('0x61')]);_0x559411['query']=_[_0xc81d('0x4c')](_0x3e4770[_0xc81d('0x4b')]);_0x559411[_0xc81d('0x4d')]=_[_0xc81d('0x4e')](_0x559411[_0xc81d('0x41')],_0x559411['query']);_0x1c8584[_0xc81d('0x50')]=_[_0xc81d('0x4e')](_0x559411[_0xc81d('0x41')],qs['fields'](_0x3e4770['query']['fields']));_0x1c8584[_0xc81d('0x50')]=_0x1c8584[_0xc81d('0x50')]['length']?_0x1c8584['attributes']:_0x559411['model'];_0x1c8584['order']=qs[_0xc81d('0x53')](_0x3e4770[_0xc81d('0x4b')][_0xc81d('0x53')]);_0x1c8584[_0xc81d('0x54')]=qs[_0xc81d('0x4d')](_[_0xc81d('0x55')](_0x3e4770[_0xc81d('0x4b')],_0x559411[_0xc81d('0x4d')]));if(_0x3e4770[_0xc81d('0x4b')][_0xc81d('0x56')]){_0x1c8584[_0xc81d('0x54')]=_[_0xc81d('0x57')](_0x1c8584[_0xc81d('0x54')],{'$or':_['map'](_0x1c8584[_0xc81d('0x50')],function(_0x5331aa){var _0x12fb34={};_0x12fb34[_0x5331aa]={'$like':'%'+_0x3e4770['query']['filter']+'%'};return _0x12fb34;})});}_0x1c8584=_[_0xc81d('0x57')]({},_0x1c8584,_0x3e4770[_0xc81d('0x59')]);return _0x1d1ae6[_0xc81d('0xff')](_0x1c8584);}})[_0xc81d('0x18')](function(_0x48c0cf){if(_0x48c0cf){_0x4bd6ad=_0x48c0cf[_0xc81d('0x62')];if(!_0x3e4770[_0xc81d('0x4b')][_0xc81d('0x51')](_0xc81d('0x52'))){_0x1c8584[_0xc81d('0x29')]=qs[_0xc81d('0x29')](_0x3e4770[_0xc81d('0x4b')][_0xc81d('0x29')]);_0x1c8584['offset']=qs['offset'](_0x3e4770[_0xc81d('0x4b')][_0xc81d('0x27')]);}return _0x1d1ae6[_0xc81d('0xff')](_0x1c8584);}})['then'](function(_0x349388){if(_0x349388){return _0x349388?{'count':_0x4bd6ad,'rows':_0x349388}:null;}})[_0xc81d('0x18')](respondWithResult(_0x144920,null))[_0xc81d('0x22')](handleError(_0x144920,null));};exports[_0xc81d('0x122')]=function(_0x2ace7e,_0x57f7df){var _0x4113df=_0x2ace7e[_0xc81d('0x4b')]['online']===_0xc81d('0x123')?_0xc81d('0x124'):_0xc81d('0x125');return db['ChatWebsite'][_0xc81d('0x66')]({'attributes':['id',_0x4113df],'where':{'id':_0x2ace7e[_0xc81d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x57f7df,null))[_0xc81d('0x18')](function(_0x51735e){if(_0x51735e){var _0x1b06a1=_0x51735e[_0x4113df];var _0x5f158f=_0x1b06a1&&_0x1b06a1['items']?_0x1b06a1['items']:[];_0x57f7df[_0xc81d('0x31')]({'fromKey':_['isNil'](_0x1b06a1[_0xc81d('0x126')])?undefined:_0x1b06a1[_0xc81d('0x126')],'count':_0x5f158f[_0xc81d('0x62')],'rows':_0x5f158f});}})['catch'](handleError(_0x57f7df,null));};exports[_0xc81d('0x127')]=function(_0x1cc09c,_0x506c7a){var _0x47eef9={'raw':![],'where':{}};var _0x5371e9={};var _0x1c423f={'count':0x0,'rows':[]};return db[_0xc81d('0x60')][_0xc81d('0x101')]({'where':{'id':_0x1cc09c[_0xc81d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x506c7a,null))[_0xc81d('0x18')](function(_0x6dc3c8){if(_0x6dc3c8){_0x5371e9[_0xc81d('0x41')]=_['keys'](db['ChatOfflineMessage'][_0xc81d('0x61')]);_0x5371e9[_0xc81d('0x4b')]=_[_0xc81d('0x4c')](_0x1cc09c[_0xc81d('0x4b')]);_0x5371e9['filters']=_[_0xc81d('0x4e')](_0x5371e9[_0xc81d('0x41')],_0x5371e9[_0xc81d('0x4b')]);_0x47eef9[_0xc81d('0x50')]=_[_0xc81d('0x4e')](_0x5371e9['model'],qs[_0xc81d('0x4f')](_0x1cc09c[_0xc81d('0x4b')][_0xc81d('0x4f')]));_0x47eef9[_0xc81d('0x50')]=_0x47eef9[_0xc81d('0x50')][_0xc81d('0x62')]?_0x47eef9['attributes']:_0x5371e9[_0xc81d('0x41')];if(!_0x1cc09c[_0xc81d('0x4b')][_0xc81d('0x51')](_0xc81d('0x52'))){_0x47eef9[_0xc81d('0x29')]=qs[_0xc81d('0x29')](_0x1cc09c[_0xc81d('0x4b')]['limit']);_0x47eef9[_0xc81d('0x27')]=qs['offset'](_0x1cc09c['query'][_0xc81d('0x27')]);}_0x47eef9[_0xc81d('0x72')]=qs['sort'](_0x1cc09c['query']['sort']);_0x47eef9[_0xc81d('0x54')]=qs[_0xc81d('0x4d')](_['pick'](_0x1cc09c[_0xc81d('0x4b')],_0x5371e9[_0xc81d('0x4d')]));_0x47eef9[_0xc81d('0x54')]['ChatWebsiteId']=_0x6dc3c8['id'];if(_0x1cc09c[_0xc81d('0x4b')][_0xc81d('0x56')]){_0x47eef9[_0xc81d('0x54')]=_['merge'](_0x47eef9[_0xc81d('0x54')],{'$or':_[_0xc81d('0x48')](_0x47eef9[_0xc81d('0x50')],function(_0x5908dd){var _0x500f93={};_0x500f93[_0x5908dd]={'$like':'%'+_0x1cc09c[_0xc81d('0x4b')]['filter']+'%'};return _0x500f93;})});}_0x47eef9=_[_0xc81d('0x57')]({},_0x47eef9,_0x1cc09c['options']);return db[_0xc81d('0xd8')][_0xc81d('0x2a')]({'where':_0x47eef9[_0xc81d('0x54')]})[_0xc81d('0x18')](function(_0x3b03ff){_0x1c423f['count']=_0x3b03ff;if(_0x1cc09c[_0xc81d('0x4b')][_0xc81d('0x5a')]){_0x47eef9[_0xc81d('0x5b')]=[{'all':!![]}];}else{_0x47eef9[_0xc81d('0x5b')]=[{'model':db['CmContact'],'as':_0xc81d('0xf8'),'required':![]},{'model':db[_0xc81d('0xe3')],'as':_0xc81d('0x128'),'required':![]}];}return db[_0xc81d('0xd8')][_0xc81d('0x5c')](_0x47eef9);})[_0xc81d('0x18')](function(_0x21d20c){_0x1c423f['rows']=_0x21d20c;return _0x1c423f;});}})['then'](respondWithFilteredResult(_0x506c7a,_0x47eef9))[_0xc81d('0x22')](handleError(_0x506c7a,null));};exports[_0xc81d('0x129')]=function(_0x1c71be,_0x266365){return db['ChatWebsite'][_0xc81d('0x66')]({'where':{'id':_0x1c71be[_0xc81d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x266365,null))['then'](function(_0x10f2fd){if(_0x10f2fd){return _0x10f2fd[_0xc81d('0x129')](_0x1c71be[_0xc81d('0x64')][_0xc81d('0x70')],_[_0xc81d('0xf7')](_0x1c71be[_0xc81d('0x64')],[_0xc81d('0x70'),'id'])||{})['spread'](function(_0x3be846){for(var _0x4e6601=0x0;_0x4e6601<_0x1c71be[_0xc81d('0x64')][_0xc81d('0x70')]['length'];_0x4e6601+=0x1){socket[_0xc81d('0x12a')](_0xc81d('0x12b'),{'UserId':Number(_0x1c71be[_0xc81d('0x64')]['ids'][_0x4e6601]),'ChatWebsiteId':Number(_0x1c71be[_0xc81d('0x5e')]['id'])});}return _0x3be846;});}})[_0xc81d('0x18')](respondWithResult(_0x266365,null))['catch'](handleError(_0x266365,null));};exports[_0xc81d('0x12c')]=function(_0x4a62,_0x37ecf8){return db[_0xc81d('0x60')]['find']({'where':{'id':_0x4a62[_0xc81d('0x5e')]['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x37ecf8,null))['then'](function(_0x4eecb1){if(_0x4eecb1){return _0x4eecb1[_0xc81d('0x12c')](_0x4a62[_0xc81d('0x4b')][_0xc81d('0x70')])[_0xc81d('0x18')](function(){if(_[_0xc81d('0x12d')](_0x4a62[_0xc81d('0x4b')][_0xc81d('0x70')])){for(var _0x534af4=0x0;_0x534af4<_0x4a62['query'][_0xc81d('0x70')][_0xc81d('0x62')];_0x534af4+=0x1){socket[_0xc81d('0x12a')](_0xc81d('0x12e'),{'UserId':Number(_0x4a62[_0xc81d('0x4b')][_0xc81d('0x70')][_0x534af4]),'ChatWebsiteId':Number(_0x4a62['params']['id'])});}}else{socket[_0xc81d('0x12a')]('userChatWebsite:remove',{'UserId':Number(_0x4a62[_0xc81d('0x4b')][_0xc81d('0x70')]),'ChatWebsiteId':Number(_0x4a62[_0xc81d('0x5e')]['id'])});}});}})[_0xc81d('0x18')](respondWithStatusCode(_0x37ecf8,null))[_0xc81d('0x22')](handleError(_0x37ecf8,null));};exports[_0xc81d('0x12f')]=function(_0x3b04d8,_0x447c63){var _0x5cfe19={};var _0x2e78ba={};var _0x327be4;var _0x33edce;return db[_0xc81d('0x60')][_0xc81d('0x101')]({'where':{'id':_0x3b04d8['params']['id']}})[_0xc81d('0x18')](handleEntityNotFound(_0x447c63,null))[_0xc81d('0x18')](function(_0x5412a2){if(_0x5412a2){_0x327be4=_0x5412a2;_0x2e78ba['model']=_['keys'](db[_0xc81d('0xbb')][_0xc81d('0x61')]);_0x2e78ba[_0xc81d('0x4b')]=_[_0xc81d('0x4c')](_0x3b04d8[_0xc81d('0x4b')]);_0x2e78ba[_0xc81d('0x4d')]=_[_0xc81d('0x4e')](_0x2e78ba[_0xc81d('0x41')],_0x2e78ba[_0xc81d('0x4b')]);_0x5cfe19[_0xc81d('0x50')]=_[_0xc81d('0x4e')](_0x2e78ba[_0xc81d('0x41')],qs['fields'](_0x3b04d8[_0xc81d('0x4b')][_0xc81d('0x4f')]));_0x5cfe19[_0xc81d('0x50')]=_0x5cfe19[_0xc81d('0x50')][_0xc81d('0x62')]?_0x5cfe19['attributes']:_0x2e78ba['model'];_0x5cfe19[_0xc81d('0x72')]=qs[_0xc81d('0x53')](_0x3b04d8[_0xc81d('0x4b')]['sort']);_0x5cfe19[_0xc81d('0x54')]=qs['filters'](_['pick'](_0x3b04d8[_0xc81d('0x4b')],_0x2e78ba['filters']));if(_0x3b04d8[_0xc81d('0x4b')]['filter']){_0x5cfe19['where']=_['merge'](_0x5cfe19[_0xc81d('0x54')],{'$or':_[_0xc81d('0x48')](_0x5cfe19[_0xc81d('0x50')],function(_0x120868){var _0x5a13e2={};_0x5a13e2[_0x120868]={'$like':'%'+_0x3b04d8['query'][_0xc81d('0x56')]+'%'};return _0x5a13e2;})});}_0x5cfe19=_[_0xc81d('0x57')]({},_0x5cfe19,_0x3b04d8[_0xc81d('0x59')]);return _0x327be4['getAgents'](_0x5cfe19);}})[_0xc81d('0x18')](function(_0x502bc3){if(_0x502bc3){_0x33edce=_0x502bc3[_0xc81d('0x62')];if(!_0x3b04d8[_0xc81d('0x4b')][_0xc81d('0x51')](_0xc81d('0x52'))){_0x5cfe19['limit']=qs[_0xc81d('0x29')](_0x3b04d8[_0xc81d('0x4b')][_0xc81d('0x29')]);_0x5cfe19['offset']=qs[_0xc81d('0x27')](_0x3b04d8['query'][_0xc81d('0x27')]);}return _0x327be4[_0xc81d('0x12f')](_0x5cfe19);}})[_0xc81d('0x18')](function(_0x5dbbca){if(_0x5dbbca){return _0x5dbbca?{'count':_0x33edce,'rows':_0x5dbbca}:null;}})[_0xc81d('0x18')](respondWithResult(_0x447c63,null))[_0xc81d('0x22')](handleError(_0x447c63,null));};
\ No newline at end of file
+var _0xbfa2=['version','%s\x20%s','unknown','device','model','vendor','%s\x20%s\x20%s','type','index','Pause','mandatoryDispositionPause','ChatWebsite','key','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','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','params','describe','addDisposition','ChatWebsiteId','Disposition','findOne','rawAttributes','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','order','removeAnswers','addLogo','sitepic','file','filename','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','existsSync','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','isNil','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','notify','chat','Sequelize','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ValidationError','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','CmContact','Contacts','DESC','ChatApplication','Applications','Chat\x20Website\x20with\x20id\x20%s\x20not\x20found','spread','account','list','orderBy','asc','contact','headers','threadId','ChatInteraction','externalUrl','ContactId','interaction','messageId','created','autoclose','applications','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','forcedOwnership','queueId','ChatQueue','waitForTheAssignedQueue','Start','startRouting','EventManager','offline','files','ListId','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','defaults','findOrCreate','server/files/templates/chatOfflineMessage.ejs','render','toPairs','offlineMessageBody','originalname','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','forwardOfflineAddress','getSmtpOptions','SendMail','sendMail','email','MailAccountId','mimetype','subjectOffline','toPairsIn','Chat','NotifyMailAccount','server','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','Contact','User','Owner','fullname','internal','Tag','color','tag','virtual','License','increment','chatLicenseExceeded','server/files/chat/iframe.ejs','URL','address','origin','3.5.0','remote','x-real-ip','connection','remoteAddress','replace','verticalAlignment','labelText','textColor','textButtonColor','color_button','backgroundColor','hideWhenOffline','IntervalId','addApplications','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','priority','finally','getApplications','addProactiveActions','getProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','ChatOfflineMessage','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','mustache','util','path','ejs','fs-extra','lodash','querystring','html-to-text','ioredis','jayson/promise','url','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../errors/api','APIOutOfIntervalError','APINotFoundError','../../mysqldb','redis','localhost','socket.io-emitter','./chatWebsite.socket','register','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','end','json','offset','undefined','count','set','Content-Range','update','destroy','ChatWebsites','UserProfileResource','status','stack','name','send','Command','timezone','format','iftime\x20%s,%s','interval','iftime\x20%s','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','No\x20timezone','inspect','map','Interval','Intervals','some','setUA','user-agent','getResult','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser'];(function(_0x5e7e1a,_0x38a7c6){var _0x46b94f=function(_0x4d6e22){while(--_0x4d6e22){_0x5e7e1a['push'](_0x5e7e1a['shift']());}};_0x46b94f(++_0x38a7c6);}(_0xbfa2,0xed));var _0x2bfa=function(_0x16c206,_0x1e45c4){_0x16c206=_0x16c206-0x0;var _0x311092=_0xbfa2[_0x16c206];return _0x311092;};'use strict';var Mustache=require(_0x2bfa('0x0'));var util=require(_0x2bfa('0x1'));var path=require(_0x2bfa('0x2'));var ejs=require(_0x2bfa('0x3'));var fs=require('fs');var fs_extra=require(_0x2bfa('0x4'));var _=require(_0x2bfa('0x5'));var querystring=require(_0x2bfa('0x6'));var htmlToText=require(_0x2bfa('0x7'));var Redis=require(_0x2bfa('0x8'));var jayson=require(_0x2bfa('0x9'));var url=require(_0x2bfa('0xa'));var qs=require(_0x2bfa('0xb'));var logger=require(_0x2bfa('0xc'))(_0x2bfa('0xd'));var config=require(_0x2bfa('0xe'));var APIOutOfIntervalError=require(_0x2bfa('0xf'))[_0x2bfa('0x10')];var APINotFoundError=require(_0x2bfa('0xf'))[_0x2bfa('0x11')];var APIHandleError=require(_0x2bfa('0xf'))['handleError'];var db=require(_0x2bfa('0x12'))['db'];config[_0x2bfa('0x13')]=_['defaults'](config['redis'],{'host':_0x2bfa('0x14'),'port':0x18eb});var socket=require(_0x2bfa('0x15'))(new Redis(config[_0x2bfa('0x13')]));require(_0x2bfa('0x16'))[_0x2bfa('0x17')](socket);var client=jayson[_0x2bfa('0x18')][_0x2bfa('0x19')]({'port':0x232c});var client9002=jayson[_0x2bfa('0x18')][_0x2bfa('0x19')]({'port':0x232a});var client9003=jayson[_0x2bfa('0x18')][_0x2bfa('0x19')]({'port':0x232b});var client9001=jayson[_0x2bfa('0x18')][_0x2bfa('0x19')]({'port':0x2329});function respondWithRpcPromise(_0x282b0a,_0x43fe25,_0x27f57c,_0x279459){return new Promise(function(_0x136fa1,_0x1903a6){var _0x1164d1=_0x279459||client;return _0x1164d1[_0x2bfa('0x1a')](_0x282b0a,_0x27f57c)[_0x2bfa('0x1b')](function(_0x496629){logger[_0x2bfa('0x1c')](_0x2bfa('0x1d'),_0x43fe25,'request\x20sent');logger[_0x2bfa('0x1e')](_0x2bfa('0x1f'),_0x43fe25,_0x2bfa('0x20'),JSON[_0x2bfa('0x21')](_0x496629));if(_0x496629[_0x2bfa('0x22')]){if(_0x496629[_0x2bfa('0x22')][_0x2bfa('0x23')]===0x1f4){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x43fe25,_0x496629[_0x2bfa('0x22')][_0x2bfa('0x24')]);return _0x1903a6(_0x496629[_0x2bfa('0x22')][_0x2bfa('0x24')]);}logger[_0x2bfa('0x22')](_0x2bfa('0x1d'),_0x43fe25,_0x496629[_0x2bfa('0x22')]['message']);return _0x136fa1(_0x496629[_0x2bfa('0x22')][_0x2bfa('0x24')]);}else{logger[_0x2bfa('0x1c')](_0x2bfa('0x1d'),_0x43fe25,'request\x20sent');_0x136fa1(_0x496629[_0x2bfa('0x25')][_0x2bfa('0x24')]);}})[_0x2bfa('0x26')](function(_0xd7767e){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x43fe25,_0xd7767e);_0x1903a6(_0xd7767e);});});}function respondWithStatusCode(_0x491fd1,_0x796d72){_0x796d72=_0x796d72||0xcc;return function(_0x2e2321){if(_0x2e2321){return _0x491fd1[_0x2bfa('0x27')](_0x796d72);}return _0x491fd1['status'](_0x796d72)[_0x2bfa('0x28')]();};}function respondWithResult(_0x49ad27,_0x461864){_0x461864=_0x461864||0xc8;return function(_0x2ff0d4){if(_0x2ff0d4){return _0x49ad27['status'](_0x461864)[_0x2bfa('0x29')](_0x2ff0d4);}};}function respondWithFilteredResult(_0x28fb48,_0x47892e){return function(_0x46edab){if(_0x46edab){var _0xf46e88=typeof _0x47892e[_0x2bfa('0x2a')]===_0x2bfa('0x2b')&&typeof _0x47892e['limit']==='undefined';var _0x48f976=_0x46edab[_0x2bfa('0x2c')];var _0x4f6fc9=_0xf46e88?0x0:_0x47892e['offset'];var _0x2997f2=_0xf46e88?_0x46edab['count']:_0x47892e['offset']+_0x47892e['limit'];var _0x15832a;if(_0x2997f2>=_0x48f976){_0x2997f2=_0x48f976;_0x15832a=0xc8;}else{_0x15832a=0xce;}_0x28fb48['status'](_0x15832a);return _0x28fb48[_0x2bfa('0x2d')](_0x2bfa('0x2e'),_0x4f6fc9+'-'+_0x2997f2+'/'+_0x48f976)[_0x2bfa('0x29')](_0x46edab);}return null;};}function saveUpdates(_0xfe5d7){return function(_0x361e93){if(_0x361e93){return _0x361e93[_0x2bfa('0x2f')](_0xfe5d7)[_0x2bfa('0x1b')](function(_0x514c65){return _0x514c65;});}return null;};}function removeEntity(_0x4f5fe0){return function(_0x535799){if(_0x535799){return _0x535799[_0x2bfa('0x30')]()[_0x2bfa('0x1b')](function(){var _0x258d15=_0x535799['get']({'plain':!![]});var _0x24ccea=_0x2bfa('0x31');return db[_0x2bfa('0x32')][_0x2bfa('0x30')]({'where':{'type':_0x24ccea,'resourceId':_0x258d15['id']}})[_0x2bfa('0x1b')](function(){return _0x535799;});})[_0x2bfa('0x1b')](function(){_0x4f5fe0[_0x2bfa('0x33')](0xcc)[_0x2bfa('0x28')]();});}};}function handleEntityNotFound(_0x5eb4cc){return function(_0x5d2696){if(!_0x5d2696){_0x5eb4cc[_0x2bfa('0x27')](0x194);}return _0x5d2696;};}function handleError(_0x42687a,_0xbde848){_0xbde848=_0xbde848||0x1f4;return function(_0x57ae0c){logger[_0x2bfa('0x22')](_0x57ae0c[_0x2bfa('0x34')]);if(_0x57ae0c['name']){delete _0x57ae0c[_0x2bfa('0x35')];}_0x42687a[_0x2bfa('0x33')](_0xbde848)[_0x2bfa('0x36')](_0x57ae0c);};}function iftimePromise(_0x1959c7,_0x15a3a9){return respondWithRpcPromise(_0x2bfa('0x37'),'getSnippet',{'command':_0x15a3a9[_0x2bfa('0x38')]?util[_0x2bfa('0x39')](_0x2bfa('0x3a'),_0x1959c7[_0x2bfa('0x3b')],_0x15a3a9[_0x2bfa('0x38')]):util[_0x2bfa('0x39')](_0x2bfa('0x3c'),_0x1959c7[_0x2bfa('0x3b')])},client9002)['then'](function(_0x304130){var _0x477503=_0x304130&&_0x304130['indexOf'](_0x2bfa('0x3d'))>=0x0?!![]:![];logger[_0x2bfa('0x1c')](_0x2bfa('0x3e'),_0x15a3a9['id'],_0x1959c7['id'],_0x1959c7['interval'],_0x477503?'ONLINE':'OFFLINE',_0x15a3a9['timezone']?_0x15a3a9[_0x2bfa('0x38')]:_0x2bfa('0x3f'));return _0x477503;})[_0x2bfa('0x26')](function(_0x41f7f9){logger[_0x2bfa('0x22')](_0x2bfa('0x3e'),_0x15a3a9['id'],_0x1959c7['id'],_0x1959c7[_0x2bfa('0x3b')],util[_0x2bfa('0x40')](_0x41f7f9,{'showHidden':![],'depth':null}),_0x15a3a9[_0x2bfa('0x38')]?_0x15a3a9['timezone']:_0x2bfa('0x3f'));return![];});}function checkWebsiteIntervals(_0x36f48c){var _0x4766bd=_[_0x2bfa('0x41')](_0x36f48c[_0x2bfa('0x42')][_0x2bfa('0x43')],function(_0x39a981){var _0x519ee5=_0x39a981['get']({'plain':!![]});return iftimePromise(_0x519ee5,_0x36f48c);});return Promise['all'](_0x4766bd)['then'](function(_0x5891e8){return _[_0x2bfa('0x44')](_0x5891e8);});}function createInteractionObject(_0x74d559,_0xd1938b,_0x293bc2,_0x22b989){var _0x531457=require('user-agent-parser');var _0x19d47a=new _0x531457();var _0x59ef70=_0x19d47a[_0x2bfa('0x45')](_0x293bc2[_0x2bfa('0x46')])[_0x2bfa('0x47')]();var _0x51b928=_0xd1938b[_0x2bfa('0x48')];if(_0x293bc2['cf-connecting-ip']){_0x51b928=_0x293bc2[_0x2bfa('0x49')];}else if(_0x293bc2[_0x2bfa('0x4a')]){_0x51b928=_[_0x2bfa('0x4b')](_0x293bc2[_0x2bfa('0x4a')][_0x2bfa('0x4c')](','));}return{'ContactId':_0x22b989['id'],'ChatWebsiteId':_0x74d559,'from':(_0x22b989[_0x2bfa('0x4d')]||'')+'\x20'+(_0x22b989[_0x2bfa('0x4e')]||''),'customerIp':_0x51b928,'customerPort':_0x293bc2[_0x2bfa('0x4f')]?_0x293bc2[_0x2bfa('0x4f')]:null,'referer':_0xd1938b[_0x2bfa('0x50')],'browserName':_0x59ef70[_0x2bfa('0x51')]['name']&&_0x59ef70[_0x2bfa('0x51')][_0x2bfa('0x52')]?util[_0x2bfa('0x39')](_0x2bfa('0x53'),_0x59ef70[_0x2bfa('0x51')][_0x2bfa('0x35')],_0x59ef70[_0x2bfa('0x51')][_0x2bfa('0x52')]):_0x2bfa('0x54'),'browserVersion':_0x59ef70[_0x2bfa('0x51')][_0x2bfa('0x52')]||'unknown','osName':util[_0x2bfa('0x39')](_0x2bfa('0x53'),_0x59ef70['os']['name'],_0x59ef70['os'][_0x2bfa('0x52')]),'osVersion':_0x59ef70['os'][_0x2bfa('0x52')],'deviceModel':_0x59ef70[_0x2bfa('0x55')][_0x2bfa('0x56')]&&_0x59ef70[_0x2bfa('0x55')][_0x2bfa('0x57')]?util[_0x2bfa('0x39')](_0x2bfa('0x58'),_0x59ef70[_0x2bfa('0x55')][_0x2bfa('0x56')],_0x59ef70[_0x2bfa('0x55')][_0x2bfa('0x57')],_0x59ef70['device'][_0x2bfa('0x59')]):null,'deviceVendor':_0x59ef70['device'][_0x2bfa('0x57')],'deviceType':_0x59ef70[_0x2bfa('0x55')]['type'],'formData':JSON[_0x2bfa('0x21')](_0xd1938b)};}exports[_0x2bfa('0x5a')]=function(_0x38ca72,_0x532913){var _0x4e05bc={'include':[{'model':db[_0x2bfa('0x5b')],'as':_0x2bfa('0x5c')}]},_0x452f51={},_0x3e1f5e={'count':0x0,'rows':[]};var _0x6f3416=_[_0x2bfa('0x41')](db[_0x2bfa('0x5d')]['rawAttributes'],function(_0x225328){return{'name':_0x225328['fieldName'],'type':_0x225328['type'][_0x2bfa('0x5e')]};});_0x452f51[_0x2bfa('0x56')]=_[_0x2bfa('0x41')](_0x6f3416,_0x2bfa('0x35'));_0x452f51[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x38ca72[_0x2bfa('0x5f')]);_0x452f51['filters']=_['intersection'](_0x452f51['model'],_0x452f51['query']);_0x4e05bc[_0x2bfa('0x61')]=_[_0x2bfa('0x62')](_0x452f51['model'],qs[_0x2bfa('0x63')](_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x4e05bc[_0x2bfa('0x61')]=_0x4e05bc['attributes'][_0x2bfa('0x64')]?_0x4e05bc['attributes']:_0x452f51[_0x2bfa('0x56')];if(!_0x38ca72['query'][_0x2bfa('0x65')](_0x2bfa('0x66'))){_0x4e05bc[_0x2bfa('0x67')]=qs[_0x2bfa('0x67')](_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x67')]);_0x4e05bc[_0x2bfa('0x2a')]=qs['offset'](_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x2a')]);}_0x4e05bc['order']=qs[_0x2bfa('0x68')](_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x68')]);_0x4e05bc[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x38ca72[_0x2bfa('0x5f')],_0x452f51['filters']),_0x6f3416);if(_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x4e05bc[_0x2bfa('0x69')]=_[_0x2bfa('0x6d')](_0x4e05bc[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x6f3416,function(_0x92ecb5){if(_0x92ecb5[_0x2bfa('0x59')]!==_0x2bfa('0x6e')){var _0x2dd8c5={};_0x2dd8c5[_0x92ecb5[_0x2bfa('0x35')]]={'$like':'%'+_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x6c')]+'%'};return _0x2dd8c5;}})});}_0x4e05bc=_[_0x2bfa('0x6d')]({},_0x4e05bc,_0x38ca72[_0x2bfa('0x6f')]);var _0x3130b5={'where':_0x4e05bc[_0x2bfa('0x69')]};return db[_0x2bfa('0x5d')][_0x2bfa('0x2c')](_0x3130b5)['then'](function(_0x22f2fe){_0x3e1f5e[_0x2bfa('0x2c')]=_0x22f2fe;if(_0x38ca72['query'][_0x2bfa('0x70')]){_0x4e05bc[_0x2bfa('0x71')]=[{'all':!![]}];}return db[_0x2bfa('0x5d')][_0x2bfa('0x72')](_0x4e05bc);})['then'](function(_0x104e01){_0x3e1f5e[_0x2bfa('0x73')]=_0x104e01;return _0x3e1f5e;})[_0x2bfa('0x1b')](respondWithFilteredResult(_0x532913,_0x4e05bc))['catch'](handleError(_0x532913,null));};exports[_0x2bfa('0x74')]=function(_0xec32af,_0xf360e5){var _0x56de9f={'raw':![],'where':{'id':_0xec32af['params']['id']},'include':[{'model':db[_0x2bfa('0x5b')],'as':_0x2bfa('0x5c')}]},_0x4b4dee={};_0x4b4dee['model']=_['keys'](db['ChatWebsite']['rawAttributes']);_0x4b4dee[_0x2bfa('0x5f')]=_['keys'](_0xec32af[_0x2bfa('0x5f')]);_0x4b4dee[_0x2bfa('0x6a')]=_[_0x2bfa('0x62')](_0x4b4dee[_0x2bfa('0x56')],_0x4b4dee[_0x2bfa('0x5f')]);_0x56de9f[_0x2bfa('0x61')]=_['intersection'](_0x4b4dee[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0xec32af[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x56de9f[_0x2bfa('0x61')]=_0x56de9f[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x56de9f['attributes']:_0x4b4dee[_0x2bfa('0x56')];if(_0xec32af[_0x2bfa('0x5f')][_0x2bfa('0x70')]){_0x56de9f[_0x2bfa('0x71')]=[{'all':!![]}];}_0x56de9f=_[_0x2bfa('0x6d')]({},_0x56de9f,_0xec32af[_0x2bfa('0x6f')]);return db[_0x2bfa('0x5d')][_0x2bfa('0x75')](_0x56de9f)['then'](handleEntityNotFound(_0xf360e5,null))[_0x2bfa('0x1b')](respondWithResult(_0xf360e5,null))[_0x2bfa('0x26')](handleError(_0xf360e5,null));};exports[_0x2bfa('0x76')]=function(_0x2b7fa6,_0x5ec3a5){return db[_0x2bfa('0x5d')][_0x2bfa('0x76')](_0x2b7fa6[_0x2bfa('0x77')],{})[_0x2bfa('0x1b')](function(_0x4560c3){var _0x24682e=_0x2b7fa6[_0x2bfa('0x78')][_0x2bfa('0x79')]({'plain':!![]});if(!_0x24682e)throw new Error(_0x2bfa('0x7a'));if(_0x24682e[_0x2bfa('0x7b')]===_0x2bfa('0x78')){var _0x409845=_0x4560c3[_0x2bfa('0x79')]({'plain':!![]});var _0x55a89d='ChatWebsites';return db[_0x2bfa('0x7c')][_0x2bfa('0x75')]({'where':{'name':_0x55a89d,'userProfileId':_0x24682e[_0x2bfa('0x7d')]},'raw':!![]})[_0x2bfa('0x1b')](function(_0x4ffdb5){if(_0x4ffdb5&&_0x4ffdb5['autoAssociation']===0x0){return db['UserProfileResource'][_0x2bfa('0x76')]({'name':_0x409845[_0x2bfa('0x35')],'resourceId':_0x409845['id'],'type':_0x4ffdb5[_0x2bfa('0x35')],'sectionId':_0x4ffdb5['id']},{})[_0x2bfa('0x1b')](function(){return _0x4560c3;});}else{return _0x4560c3;}})[_0x2bfa('0x26')](function(_0x39621a){logger['error'](_0x2bfa('0x7e'),_0x39621a);throw _0x39621a;});}return _0x4560c3;})[_0x2bfa('0x1b')](respondWithResult(_0x5ec3a5,0xc9))[_0x2bfa('0x26')](handleError(_0x5ec3a5,null));};exports[_0x2bfa('0x2f')]=function(_0x3c7e62,_0x557718){if(_0x3c7e62[_0x2bfa('0x77')]['id']){delete _0x3c7e62[_0x2bfa('0x77')]['id'];}return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x3c7e62[_0x2bfa('0x7f')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x557718,null))[_0x2bfa('0x1b')](saveUpdates(_0x3c7e62[_0x2bfa('0x77')],null))['then'](respondWithResult(_0x557718,null))[_0x2bfa('0x26')](handleError(_0x557718,null));};exports[_0x2bfa('0x30')]=function(_0x2b1815,_0x4360d1){return db['ChatWebsite']['find']({'where':{'id':_0x2b1815[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x4360d1,null))[_0x2bfa('0x1b')](removeEntity(_0x4360d1,null))[_0x2bfa('0x26')](handleError(_0x4360d1,null));};exports[_0x2bfa('0x80')]=function(_0x590a8f,_0x29d6a4){return db[_0x2bfa('0x5d')][_0x2bfa('0x80')]()[_0x2bfa('0x1b')](respondWithResult(_0x29d6a4,null))[_0x2bfa('0x26')](handleError(_0x29d6a4,null));};exports[_0x2bfa('0x81')]=function(_0x19e738,_0x24bcf8){if(_0x19e738[_0x2bfa('0x77')]['id']){delete _0x19e738[_0x2bfa('0x77')]['id'];}return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x19e738[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x24bcf8,null))['then'](function(_0x5c191f){if(_0x5c191f){_0x19e738[_0x2bfa('0x77')][_0x2bfa('0x82')]=_0x5c191f['id'];return db[_0x2bfa('0x83')][_0x2bfa('0x76')](_0x19e738[_0x2bfa('0x77')]);}})[_0x2bfa('0x1b')](respondWithResult(_0x24bcf8,null))['catch'](handleError(_0x24bcf8,null));};exports['getDispositions']=function(_0x33a0ef,_0x339c06){var _0x57b4f3={'raw':![],'where':{}};var _0x1eb0a6={};var _0x24e3b4={'count':0x0,'rows':[]};return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x33a0ef['params']['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x339c06,null))['then'](function(_0x5bd1d2){if(_0x5bd1d2){_0x1eb0a6[_0x2bfa('0x56')]=_['keys'](db[_0x2bfa('0x83')][_0x2bfa('0x85')]);_0x1eb0a6[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x33a0ef[_0x2bfa('0x5f')]);_0x1eb0a6['filters']=_[_0x2bfa('0x62')](_0x1eb0a6[_0x2bfa('0x56')],_0x1eb0a6[_0x2bfa('0x5f')]);_0x57b4f3[_0x2bfa('0x61')]=_[_0x2bfa('0x62')](_0x1eb0a6[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0x33a0ef[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x57b4f3[_0x2bfa('0x61')]=_0x57b4f3['attributes'][_0x2bfa('0x64')]?_0x57b4f3[_0x2bfa('0x61')]:_0x1eb0a6[_0x2bfa('0x56')];if(!_0x33a0ef[_0x2bfa('0x5f')][_0x2bfa('0x65')]('nolimit')){_0x57b4f3['limit']=qs[_0x2bfa('0x67')](_0x33a0ef['query'][_0x2bfa('0x67')]);_0x57b4f3['offset']=qs[_0x2bfa('0x2a')](_0x33a0ef[_0x2bfa('0x5f')][_0x2bfa('0x2a')]);}_0x57b4f3['order']=qs[_0x2bfa('0x68')](_0x33a0ef[_0x2bfa('0x5f')]['sort']);_0x57b4f3[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x33a0ef[_0x2bfa('0x5f')],_0x1eb0a6[_0x2bfa('0x6a')]));_0x57b4f3['where'][_0x2bfa('0x82')]=_0x5bd1d2['id'];if(_0x33a0ef[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x57b4f3[_0x2bfa('0x69')]=_[_0x2bfa('0x6d')](_0x57b4f3[_0x2bfa('0x69')],{'$or':_['map'](_0x57b4f3[_0x2bfa('0x61')],function(_0x1bc4e9){var _0x4f12f4={};_0x4f12f4[_0x1bc4e9]={'$like':'%'+_0x33a0ef[_0x2bfa('0x5f')]['filter']+'%'};return _0x4f12f4;})});}_0x57b4f3=_[_0x2bfa('0x6d')]({},_0x57b4f3,_0x33a0ef[_0x2bfa('0x6f')]);return db[_0x2bfa('0x83')][_0x2bfa('0x2c')]({'where':_0x57b4f3[_0x2bfa('0x69')]})[_0x2bfa('0x1b')](function(_0x16f3e9){_0x24e3b4['count']=_0x16f3e9;if(_0x33a0ef[_0x2bfa('0x5f')][_0x2bfa('0x70')]){_0x57b4f3['include']=[{'all':!![]}];}return db[_0x2bfa('0x83')][_0x2bfa('0x72')](_0x57b4f3);})[_0x2bfa('0x1b')](function(_0x2a63aa){_0x24e3b4[_0x2bfa('0x73')]=_0x2a63aa;return _0x24e3b4;});}})[_0x2bfa('0x1b')](respondWithFilteredResult(_0x339c06,_0x57b4f3))[_0x2bfa('0x26')](handleError(_0x339c06,null));};exports['removeDispositions']=function(_0x42fb9d,_0x5241c2){return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x42fb9d[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x5241c2,null))[_0x2bfa('0x1b')](function(_0xc5f5e8){if(_0xc5f5e8){return _0xc5f5e8[_0x2bfa('0x86')](_0x42fb9d[_0x2bfa('0x5f')][_0x2bfa('0x87')]);}})[_0x2bfa('0x1b')](respondWithStatusCode(_0x5241c2,null))[_0x2bfa('0x26')](handleError(_0x5241c2,null));};exports[_0x2bfa('0x88')]=function(_0x24e70a,_0x519903){if(_0x24e70a['body']['id']){delete _0x24e70a[_0x2bfa('0x77')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x24e70a['params']['id']}})['then'](handleEntityNotFound(_0x519903,null))['then'](function(_0x1aac07){if(_0x1aac07){_0x24e70a[_0x2bfa('0x77')]['ChatWebsiteId']=_0x1aac07['id'];return db[_0x2bfa('0x89')][_0x2bfa('0x76')](_0x24e70a[_0x2bfa('0x77')]);}})[_0x2bfa('0x1b')](respondWithResult(_0x519903,null))['catch'](handleError(_0x519903,null));};exports[_0x2bfa('0x8a')]=function(_0x18ddc4,_0x1e8fa9){var _0x2ddc57={'raw':![],'where':{}};var _0xb4f35b={};var _0x556dc3={'count':0x0,'rows':[]};return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x18ddc4[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x1e8fa9,null))['then'](function(_0x255272){if(_0x255272){_0xb4f35b[_0x2bfa('0x56')]=_[_0x2bfa('0x60')](db[_0x2bfa('0x89')][_0x2bfa('0x85')]);_0xb4f35b[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x18ddc4[_0x2bfa('0x5f')]);_0xb4f35b['filters']=_[_0x2bfa('0x62')](_0xb4f35b['model'],_0xb4f35b[_0x2bfa('0x5f')]);_0x2ddc57['attributes']=_[_0x2bfa('0x62')](_0xb4f35b[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0x18ddc4['query']['fields']));_0x2ddc57[_0x2bfa('0x61')]=_0x2ddc57[_0x2bfa('0x61')]['length']?_0x2ddc57['attributes']:_0xb4f35b['model'];if(!_0x18ddc4[_0x2bfa('0x5f')][_0x2bfa('0x65')]('nolimit')){_0x2ddc57['limit']=qs['limit'](_0x18ddc4[_0x2bfa('0x5f')][_0x2bfa('0x67')]);_0x2ddc57[_0x2bfa('0x2a')]=qs[_0x2bfa('0x2a')](_0x18ddc4[_0x2bfa('0x5f')]['offset']);}_0x2ddc57[_0x2bfa('0x8b')]=qs[_0x2bfa('0x68')](_0x18ddc4[_0x2bfa('0x5f')][_0x2bfa('0x68')]);_0x2ddc57[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x18ddc4[_0x2bfa('0x5f')],_0xb4f35b[_0x2bfa('0x6a')]));_0x2ddc57[_0x2bfa('0x69')]['ChatWebsiteId']=_0x255272['id'];if(_0x18ddc4[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x2ddc57[_0x2bfa('0x69')]=_['merge'](_0x2ddc57[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x2ddc57[_0x2bfa('0x61')],function(_0x57227f){var _0x1fc8ca={};_0x1fc8ca[_0x57227f]={'$like':'%'+_0x18ddc4['query'][_0x2bfa('0x6c')]+'%'};return _0x1fc8ca;})});}_0x2ddc57=_[_0x2bfa('0x6d')]({},_0x2ddc57,_0x18ddc4[_0x2bfa('0x6f')]);return db[_0x2bfa('0x89')][_0x2bfa('0x2c')]({'where':_0x2ddc57[_0x2bfa('0x69')]})[_0x2bfa('0x1b')](function(_0x54ca96){_0x556dc3[_0x2bfa('0x2c')]=_0x54ca96;if(_0x18ddc4[_0x2bfa('0x5f')][_0x2bfa('0x70')]){_0x2ddc57[_0x2bfa('0x71')]=[{'all':!![]}];}return db[_0x2bfa('0x89')][_0x2bfa('0x72')](_0x2ddc57);})[_0x2bfa('0x1b')](function(_0x20143a){_0x556dc3['rows']=_0x20143a;return _0x556dc3;});}})['then'](respondWithFilteredResult(_0x1e8fa9,_0x2ddc57))[_0x2bfa('0x26')](handleError(_0x1e8fa9,null));};exports[_0x2bfa('0x8c')]=function(_0x27728d,_0x5636d0){return db['ChatWebsite'][_0x2bfa('0x75')]({'where':{'id':_0x27728d[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x5636d0,null))[_0x2bfa('0x1b')](function(_0x1fc586){if(_0x1fc586){return _0x1fc586['removeAnswers'](_0x27728d[_0x2bfa('0x5f')][_0x2bfa('0x87')]);}})[_0x2bfa('0x1b')](respondWithStatusCode(_0x5636d0,null))['catch'](handleError(_0x5636d0,null));};exports[_0x2bfa('0x8d')]=function(_0x1f4d8d,_0x40bd71){_0x1f4d8d[_0x2bfa('0x77')][_0x2bfa('0x8e')]=_0x1f4d8d[_0x2bfa('0x8f')][_0x2bfa('0x90')];return db['ChatWebsite'][_0x2bfa('0x75')]({'where':{'id':_0x1f4d8d[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x40bd71,null))['then'](saveUpdates(_0x1f4d8d[_0x2bfa('0x77')],null))[_0x2bfa('0x1b')](respondWithResult(_0x40bd71,null))[_0x2bfa('0x26')](handleError(_0x40bd71,null));};exports['addAvatar']=function(_0x39c54b,_0x4d9ebf){_0x39c54b['body'][_0x2bfa('0x91')]=_0x39c54b['file'][_0x2bfa('0x90')];return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x39c54b[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x4d9ebf,null))['then'](saveUpdates(_0x39c54b[_0x2bfa('0x77')],null))[_0x2bfa('0x1b')](respondWithResult(_0x4d9ebf,null))[_0x2bfa('0x26')](handleError(_0x4d9ebf,null));};exports[_0x2bfa('0x92')]=function(_0x44669a,_0x4b5236){_0x44669a[_0x2bfa('0x77')][_0x2bfa('0x93')]=_0x44669a['file']['filename'];return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x44669a[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x4b5236,null))['then'](saveUpdates(_0x44669a[_0x2bfa('0x77')],null))[_0x2bfa('0x1b')](respondWithResult(_0x4b5236,null))[_0x2bfa('0x26')](handleError(_0x4b5236,null));};exports[_0x2bfa('0x94')]=function(_0x4eda71,_0x2dfb32){_0x4eda71['body'][_0x2bfa('0x95')]=_0x4eda71[_0x2bfa('0x8f')][_0x2bfa('0x90')];return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x4eda71[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x2dfb32,null))[_0x2bfa('0x1b')](saveUpdates(_0x4eda71[_0x2bfa('0x77')],null))[_0x2bfa('0x1b')](respondWithResult(_0x2dfb32,null))[_0x2bfa('0x26')](handleError(_0x2dfb32,null));};exports[_0x2bfa('0x96')]=function(_0x300f25,_0x582d50){var _0x2e3333=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0x99'));var _0x19d404={'where':{'id':_0x300f25[_0x2bfa('0x7f')]['id']},'attributes':['id',_0x2bfa('0x8e')],'raw':!![]};var _0x236cf8=![];return require(_0x2bfa('0x9a'))[_0x2bfa('0x9b')]()[_0x2bfa('0x1b')](function(_0x3b4b0a){if(_0x3b4b0a){_0x236cf8=_0x3b4b0a[_0x2bfa('0x9c')];}})[_0x2bfa('0x1b')](function(){return db['ChatWebsite']['find'](_0x19d404);})['then'](handleEntityNotFound(_0x582d50,null))['then'](function(_0x516d50){if(_0x516d50){if(!_['isNil'](_0x516d50[_0x2bfa('0x8e')])){if(fs[_0x2bfa('0x9d')](path['join'](config[_0x2bfa('0x98')],'server/files/images/logos/',_0x516d50[_0x2bfa('0x8e')]))&&_0x236cf8){_0x2e3333=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0x9e'),_0x516d50[_0x2bfa('0x8e')]);}}return _0x582d50[_0x2bfa('0x9f')](_0x2e3333);}})[_0x2bfa('0x26')](handleError(_0x582d50,null));};exports['getAvatar']=function(_0x48272d,_0x36c399){var _0x53cd70=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0xa0'));var _0x1ea95f={'where':{'id':_0x48272d[_0x2bfa('0x7f')]['id']},'attributes':['id',_0x2bfa('0x91')],'raw':!![]};return db[_0x2bfa('0x5d')][_0x2bfa('0x75')](_0x1ea95f)['then'](handleEntityNotFound(_0x36c399,null))[_0x2bfa('0x1b')](function(_0x46f61d){if(_0x46f61d){if(!_[_0x2bfa('0xa1')](_0x46f61d[_0x2bfa('0x91')])){if(fs[_0x2bfa('0x9d')](path['join'](config[_0x2bfa('0x98')],_0x2bfa('0xa2'),_0x46f61d[_0x2bfa('0x91')]))){_0x53cd70=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0xa2'),_0x46f61d[_0x2bfa('0x91')]);}}return _0x36c399[_0x2bfa('0x9f')](_0x53cd70);}})[_0x2bfa('0x26')](handleError(_0x36c399,null));};exports[_0x2bfa('0xa3')]=function(_0x5e43d8,_0x269e2c){var _0x376e84=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0xa4'));var _0x20439e={'where':{'id':_0x5e43d8[_0x2bfa('0x7f')]['id']},'attributes':['id','customerAvatar',_0x2bfa('0xa5')],'raw':!![]};return db[_0x2bfa('0x5d')][_0x2bfa('0x75')](_0x20439e)[_0x2bfa('0x1b')](handleEntityNotFound(_0x269e2c,null))[_0x2bfa('0x1b')](function(_0x719327){if(_0x719327){if(!_['isNil'](_0x719327['customerAvatar'])){if(fs['existsSync'](path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],'server/files/images/avatars/',_0x719327[_0x2bfa('0x93')]))&&_0x719327[_0x2bfa('0xa5')]){_0x376e84=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0xa2'),_0x719327['customerAvatar']);}}return _0x269e2c['download'](_0x376e84);}})[_0x2bfa('0x26')](handleError(_0x269e2c,null));};exports[_0x2bfa('0xa6')]=function(_0x1df8eb,_0x5ea865){var _0x2b0cdb=path[_0x2bfa('0x97')](config['root'],'server/files/images/avatars/system_avatar.png');var _0x3c1a54={'where':{'id':_0x1df8eb['params']['id']},'attributes':['id',_0x2bfa('0x95')],'raw':!![]};return db[_0x2bfa('0x5d')][_0x2bfa('0x75')](_0x3c1a54)['then'](handleEntityNotFound(_0x5ea865,null))['then'](function(_0x203dd8){if(_0x203dd8){if(!_['isNil'](_0x203dd8[_0x2bfa('0x95')])){if(fs[_0x2bfa('0x9d')](path['join'](config[_0x2bfa('0x98')],_0x2bfa('0xa2'),_0x203dd8[_0x2bfa('0x95')]))){_0x2b0cdb=path[_0x2bfa('0x97')](config['root'],_0x2bfa('0xa2'),_0x203dd8[_0x2bfa('0x95')]);}}return _0x5ea865[_0x2bfa('0x9f')](_0x2b0cdb);}})[_0x2bfa('0x26')](handleError(_0x5ea865,null));};exports[_0x2bfa('0xa7')]=function(_0x3dacec,_0x180901){var _0x15fa37={'body':_0x3dacec[_0x2bfa('0x77')],'channel':_0x2bfa('0xa8')};var _0x54467f=[];var _0x26c6a2=[];var _0x208c76={};var _0x358fad=![];return db['CmContact']['describe']()[_0x2bfa('0x1b')](function(_0x1ff36e){if(!_0x1ff36e){throw new db[(_0x2bfa('0xa9'))]['ValidationError'](_0x2bfa('0xaa'));}_0x54467f=_['difference'](_[_0x2bfa('0x60')](_0x1ff36e),[_0x2bfa('0xab'),_0x2bfa('0xac')]);_0x26c6a2=_[_0x2bfa('0xad')](_[_0x2bfa('0x60')](_0x1ff36e),[_0x2bfa('0xab'),_0x2bfa('0xac'),_0x2bfa('0xae'),'ListId']);if(_0x3dacec[_0x2bfa('0x77')]['id']){delete _0x3dacec['body']['id'];}if(_[_0x2bfa('0xa1')](_0x3dacec[_0x2bfa('0x77')]['from'])){throw new db[(_0x2bfa('0xa9'))][(_0x2bfa('0xaf'))]('from\x20is\x20mandatory');}if(_[_0x2bfa('0xa1')](_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0x77')])||_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0x77')]===''){throw new db[(_0x2bfa('0xa9'))][(_0x2bfa('0xaf'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x2bfa('0xa1')](_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xb0')])){throw new db['Sequelize']['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x26c6a2);}if(!_['includes'](_0x26c6a2,_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xb0')])){throw new db[(_0x2bfa('0xa9'))]['ValidationError'](_0x2bfa('0xb1')+_0x26c6a2);}_0x208c76[_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xb0')]]=_0x3dacec['body'][_0x2bfa('0xb2')];})[_0x2bfa('0x1b')](function(){return db['ChatWebsite'][_0x2bfa('0x75')]({'where':{'id':_0x3dacec[_0x2bfa('0x7f')]['id']},'include':[{'model':db[_0x2bfa('0xb3')],'as':_0x2bfa('0xb4'),'include':[{'model':db[_0x2bfa('0xb5')],'as':_0x2bfa('0xb6'),'where':_0x208c76,'limit':0x1,'order':[[_0x2bfa('0xac'),_0x2bfa('0xb7')]]}]},{'model':db[_0x2bfa('0xb8')],'as':_0x2bfa('0xb9')},{'model':db['Interval'],'as':'Interval','include':[{'model':db[_0x2bfa('0x42')],'as':_0x2bfa('0x43'),'attributes':['id',_0x2bfa('0x3b')],'raw':!![]}]}]});})['then'](function(_0x31fd26){if(!_0x31fd26)throw new APINotFoundError(util[_0x2bfa('0x39')](_0x2bfa('0xba'),_0x3dacec[_0x2bfa('0x7f')]['id']));if(!_0x31fd26[_0x2bfa('0x42')]||!_0x31fd26['Interval'][_0x2bfa('0x43')])return[_0x31fd26,!![]];return[_0x31fd26,checkWebsiteIntervals(_0x31fd26)];})[_0x2bfa('0xbb')](function(_0x30af9b,_0x226e26){if(!_0x226e26)throw new APIOutOfIntervalError();if(!_0x30af9b[_0x2bfa('0xb4')])return;_0x15fa37[_0x2bfa('0xbc')]=_0x30af9b;_0x15fa37[_0x2bfa('0xbd')]=_0x30af9b[_0x2bfa('0xb4')];_0x15fa37['applications']=_[_0x2bfa('0xbe')](_0x30af9b[_0x2bfa('0xb9')],['priority'],[_0x2bfa('0xbf')]);if(_0x15fa37['account']['Applications']){delete _0x15fa37['account'][_0x2bfa('0xb9')];}if(_0x15fa37[_0x2bfa('0xbc')][_0x2bfa('0xb4')]&&_0x15fa37[_0x2bfa('0xbc')]['List'][_0x2bfa('0xb6')]['length']){return _0x15fa37['account'][_0x2bfa('0xb4')][_0x2bfa('0xb6')][0x0];}var _0x49ce92=_['defaults'](_0x3dacec[_0x2bfa('0x77')],{'firstName':_0x3dacec['body'][_0x2bfa('0xb2')],'ListId':_0x30af9b['ListId']});_0x49ce92[_0x3dacec[_0x2bfa('0x77')]['mapKey']]=_0x3dacec['body'][_0x2bfa('0xb2')];return db[_0x2bfa('0xb5')][_0x2bfa('0x76')](_0x49ce92,{'fields':_0x54467f,'raw':!![]});})[_0x2bfa('0x1b')](function(_0x40e5d7){_0x15fa37[_0x2bfa('0xc0')]=_0x40e5d7;var _0x1de949=createInteractionObject(_0x3dacec['params']['id'],_0x3dacec[_0x2bfa('0x77')],_0x3dacec[_0x2bfa('0xc1')],_0x40e5d7);var _0xd31de6={'ChatWebsiteId':_0x3dacec[_0x2bfa('0x7f')]['id'],'closed':![]};if(_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc2')]){_0xd31de6[_0x2bfa('0xc2')]=_0x3dacec['body'][_0x2bfa('0xc2')];return db[_0x2bfa('0xc3')][_0x2bfa('0x75')]({'where':_0xd31de6})[_0x2bfa('0x1b')](function(_0x2d1e83){if(_0x2d1e83){_0x358fad=!![];return _0x2d1e83;}_0x1de949[_0x2bfa('0xc2')]=_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc2')];_0x1de949[_0x2bfa('0xc4')]=_0x3dacec['body'][_0x2bfa('0xc4')];return db['ChatInteraction']['create'](_0x1de949);});}_0xd31de6[_0x2bfa('0xc5')]=_0x40e5d7['id'];if(_0x3dacec['body'][_0x2bfa('0xc6')]&&_0x3dacec[_0x2bfa('0x77')]['interaction']['id']){_0xd31de6['id']=_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc6')]['id'];return db[_0x2bfa('0xc3')][_0x2bfa('0x75')]({'where':_0xd31de6})[_0x2bfa('0x1b')](function(_0x21a86e){if(_0x21a86e){_0x358fad=!![];return _0x21a86e;}return db[_0x2bfa('0xc3')][_0x2bfa('0x76')](_0x1de949);});}return db['ChatInteraction'][_0x2bfa('0x76')](_0x1de949);})[_0x2bfa('0x1b')](function(_0x4f9f81){if(!_0x358fad)return _0x4f9f81;var _0x182930={'from':(_0x15fa37['contact'][_0x2bfa('0x4d')]||'')+'\x20'+(_0x15fa37[_0x2bfa('0xc0')][_0x2bfa('0x4e')]||'')};if(_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc2')]&&_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc7')]&&_0x3dacec[_0x2bfa('0x77')]['threadId']!=_0x3dacec['body'][_0x2bfa('0xc7')]){_0x182930[_0x2bfa('0xc2')]=_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc7')];}return _0x4f9f81[_0x2bfa('0x2f')](_0x182930);})[_0x2bfa('0x1b')](function(_0x47a5ff){_0x15fa37['interaction']=_0x47a5ff[_0x2bfa('0x79')]({'plain':!![]});_0x15fa37['interaction'][_0x2bfa('0xc8')]=!_0x358fad;if(_0x15fa37[_0x2bfa('0xc6')][_0x2bfa('0xc8')]){if(_0x15fa37['account'][_0x2bfa('0xc9')]){_0x15fa37[_0x2bfa('0xca')]['push']({'id':0x0,'priority':_0x15fa37[_0x2bfa('0xca')][_0x2bfa('0x64')]+0x1,'app':_0x2bfa('0xcb'),'appdata':_0x2bfa('0xcc'),'interval':_0x2bfa('0xcd')});}}return db[_0x2bfa('0xce')]['create']({'body':_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0x77')],'ChatWebsiteId':_0x3dacec[_0x2bfa('0x7f')]['id'],'ChatInteractionId':_0x47a5ff['id'],'direction':'in','ContactId':_0x15fa37[_0x2bfa('0xc0')]['id'],'AttachmentId':_0x3dacec['body'][_0x2bfa('0xcf')]});})['then'](function(_0x1b591e){_0x15fa37[_0x2bfa('0x24')]=_0x1b591e;if(!_0x15fa37[_0x2bfa('0xc6')][_0x2bfa('0xd0')]){return;}return db['User'][_0x2bfa('0x75')]({'attributes':['id',_0x2bfa('0x35')],'where':{'id':_0x15fa37[_0x2bfa('0xc6')][_0x2bfa('0xd0')]}});})[_0x2bfa('0x1b')](function(_0xaa4973){if(_0xaa4973){_0x15fa37['applications'][_0x2bfa('0xd1')]({'id':0x0,'priority':0x0,'app':_0x2bfa('0xd2'),'appdata':_0xaa4973[_0x2bfa('0x35')]+','+(_0x15fa37[_0x2bfa('0xbc')]['waitForTheAssignedAgent']||0xa),'interval':_0x2bfa('0xcd')});_0x15fa37[_0x2bfa('0xd3')]=!![];}if(!_0x15fa37[_0x2bfa('0xc6')][_0x2bfa('0xd4')]){return;}return db[_0x2bfa('0xd5')]['find']({'attributes':['id',_0x2bfa('0x35')],'where':{'id':_0x15fa37[_0x2bfa('0xc6')][_0x2bfa('0xd4')]}});})[_0x2bfa('0x1b')](function(_0x2f796a){if(_0x2f796a){_0x15fa37[_0x2bfa('0xca')][_0x2bfa('0xd1')]({'id':0x0,'priority':0x1,'app':'queue','appdata':_0x2f796a[_0x2bfa('0x35')]+','+(_0x15fa37[_0x2bfa('0xbc')][_0x2bfa('0xd6')]||0x12c),'interval':_0x2bfa('0xcd')});}return respondWithRpcPromise(_0x2bfa('0xd7'),_0x2bfa('0xd8'),_0x15fa37);})[_0x2bfa('0x1b')](function(_0x211eef){respondWithRpcPromise('EventManager',_0x2bfa('0xd9'),{'event':_0x2bfa('0xa7'),'message':_0x211eef},client9002);return _0x211eef;})[_0x2bfa('0x1b')](respondWithResult(_0x180901,null))[_0x2bfa('0x26')](APIHandleError(_0x180901));};exports[_0x2bfa('0xda')]=function(_0x44abc3,_0x33cc47){var _0x3ff7d6,_0x20400f,_0x148e02;var _0x1a3a36=[];var _0x76011c={};var _0x3756f0=_0x44abc3[_0x2bfa('0xdb')]||[];var _0x2ec837=[];var _0x1f8212;return db[_0x2bfa('0xb5')][_0x2bfa('0x80')]()[_0x2bfa('0x1b')](function(_0x56e959){if(!_0x56e959){throw new db[(_0x2bfa('0xa9'))][(_0x2bfa('0xaf'))](_0x2bfa('0xaa'));}_0x1a3a36=_[_0x2bfa('0xad')](_[_0x2bfa('0x60')](_0x56e959),[_0x2bfa('0xab'),_0x2bfa('0xac'),_0x2bfa('0xae'),_0x2bfa('0xdc')]);if(_0x44abc3[_0x2bfa('0x77')]['id']){delete _0x44abc3[_0x2bfa('0x77')]['id'];}if(_[_0x2bfa('0xa1')](_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0xb2')])){throw _0x33cc47['status'](0x1f4)[_0x2bfa('0x36')](new db[(_0x2bfa('0xa9'))]['ValidationError'](_0x2bfa('0xdd')));}if(_[_0x2bfa('0xa1')](_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0x77')])||_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0x77')]===''){throw _0x33cc47['status'](0x1f4)['send'](new db[(_0x2bfa('0xa9'))][(_0x2bfa('0xaf'))](_0x2bfa('0xde')));}if(_['isNil'](_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0xdf')])){throw _0x33cc47[_0x2bfa('0x33')](0x1f4)[_0x2bfa('0x36')](new db[(_0x2bfa('0xa9'))][(_0x2bfa('0xaf'))](_0x2bfa('0xe0')+_0x1a3a36));}if(!_[_0x2bfa('0xe1')](_0x1a3a36,_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0xdf')])){throw _0x33cc47[_0x2bfa('0x33')](0x1f4)[_0x2bfa('0x36')](new db['Sequelize']['ValidationError'](_0x2bfa('0xe2')+_0x1a3a36));}_0x76011c[_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0xdf')]]=_0x44abc3[_0x2bfa('0x77')]['from'];})[_0x2bfa('0x1b')](function(){return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x44abc3[_0x2bfa('0x7f')]['id']},'include':[{'model':db[_0x2bfa('0xb3')],'as':_0x2bfa('0xb4')},{'model':db[_0x2bfa('0xe3')],'as':_0x2bfa('0xe3')}]});})[_0x2bfa('0x1b')](handleEntityNotFound(_0x33cc47,null))['then'](function(_0x4e90b4){if(_0x4e90b4&&_0x4e90b4['List']){_0x20400f=_0x4e90b4;var _0x34e793=_[_0x2bfa('0xe4')](_0x44abc3[_0x2bfa('0x77')],{'firstName':_0x44abc3[_0x2bfa('0x77')]['from'],'phone':_0x44abc3[_0x2bfa('0x77')]['from'],'ListId':_0x4e90b4[_0x2bfa('0xdc')]});_0x34e793[_0x44abc3[_0x2bfa('0x77')]['mapKeyOffline']]=_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0xb2')];return db['CmContact'][_0x2bfa('0xe5')]({'where':_0x76011c,'defaults':_0x34e793});}})[_0x2bfa('0xbb')](function(_0x331a81){if(_0x331a81){_0x148e02=_0x331a81;var _0x1999ec=fs['readFileSync'](path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0xe6')),'utf8');var _0x6b82b7=ejs[_0x2bfa('0xe7')](_0x1999ec,{'body':_[_0x2bfa('0xe8')](_0x44abc3['body'][_0x2bfa('0x77')]),'bodyTitle':_0x20400f[_0x2bfa('0xe9')]});return db['ChatOfflineMessage'][_0x2bfa('0x76')]({'body':_0x6b82b7,'plainBody':htmlToText['fromString'](_0x6b82b7),'ContactId':_0x331a81['id'],'ChatWebsiteId':_0x20400f['id']});}})[_0x2bfa('0x1b')](function(_0x4f18d6){_0x1f8212=_0x4f18d6;if(_0x3756f0[_0x2bfa('0x64')]){var _0x33c51a=_0x3756f0[_0x2bfa('0x41')](function(_0x99d7a5){return{'name':_0x99d7a5[_0x2bfa('0xea')],'basename':_0x99d7a5[_0x2bfa('0x90')],'type':_0x99d7a5['mimetype'],'ChatOfflineMessageId':_0x4f18d6['id']};});_0x2ec837=_0x33c51a[_0x2bfa('0x41')](_0x3ccacf=>{var _0x372206={'filename':_0x3ccacf[_0x2bfa('0x35')],'path':path[_0x2bfa('0x97')](config['root'],'server',_0x2bfa('0xdb'),_0x2bfa('0xeb'),_0x2bfa('0xec'),_0x3ccacf[_0x2bfa('0xed')])};return _0x372206;});if(!_0x20400f[_0x2bfa('0xee')]){return db[_0x2bfa('0xef')][_0x2bfa('0xf0')](function(_0x17fb19){return db[_0x2bfa('0xf1')][_0x2bfa('0xf2')](_0x33c51a,{'transaction':_0x17fb19});});}}})[_0x2bfa('0x1b')](function(){if(_0x1f8212){_0x3ff7d6=_0x1f8212;return db[_0x2bfa('0xe3')][_0x2bfa('0x84')]({'where':{'service':!![]},'include':[{'model':db[_0x2bfa('0xf3')],'as':_0x2bfa('0xf4'),'raw':!![],'include':[{'model':db[_0x2bfa('0xf5')],'as':_0x2bfa('0xf5'),'raw':!![]}]}]});}})[_0x2bfa('0x1b')](function(_0x490ee9){if(_0x490ee9&&_0x490ee9[_0x2bfa('0xf4')]&&_0x20400f[_0x2bfa('0xf6')]&&_0x20400f[_0x2bfa('0xf7')]){var _0x339777=_0x490ee9[_0x2bfa('0xf8')]();return respondWithRpcPromise(_0x2bfa('0xf9'),_0x2bfa('0xfa'),{'account':_0x339777,'message':{'from':util[_0x2bfa('0x39')]('\x22%s\x22\x20<%s>',_0x490ee9[_0x2bfa('0x35')],_0x490ee9[_0x2bfa('0xfb')]||_0x490ee9['Smtp']['user']),'to':_0x20400f['forwardOfflineAddress'],'subject':_0x20400f['offlineMessageSubject'],'html':_0x3ff7d6[_0x2bfa('0x77')],'attachments':_0x2ec837}},client9003)[_0x2bfa('0x1b')](function(){return _0x3ff7d6;})[_0x2bfa('0x26')](function(_0x31a3a2){logger[_0x2bfa('0x22')](_0x31a3a2);});}})[_0x2bfa('0x1b')](function(){if(_0x20400f&&_0x20400f[_0x2bfa('0xee')]&&_0x20400f[_0x2bfa('0xfc')]){var _0x88815c=[];if(_0x3756f0[_0x2bfa('0x64')]){_0x88815c=_0x3756f0[_0x2bfa('0x41')](function(_0x4a6497){return{'name':_0x4a6497[_0x2bfa('0xea')],'basename':_0x4a6497[_0x2bfa('0x90')],'type':_0x4a6497[_0x2bfa('0xfd')],'ChatOfflineMessageId':_0x1f8212['id']};});}var _0x5ac04c;if(!_['isNil'](_0x20400f[_0x2bfa('0xfe')])){var _0x38154d=_[_0x2bfa('0x41')](_0x44abc3[_0x2bfa('0x77')],function(_0x4d5da1){return _0x4d5da1;});var _0x3d1eb3=_[_0x2bfa('0xff')](_0x38154d)[0x0];var _0x4cab40=_['mapValues'](_0x3d1eb3,function(_0x4136f1){return _0x4136f1;});_0x5ac04c=_0x4cab40[0x1][_0x20400f[_0x2bfa('0xfe')]];}var _0x1861b0={'from':_0x148e02[_0x2bfa('0xfb')],'firstName':_0x148e02['firstName'],'lastName':_0x148e02[_0x2bfa('0x4e')],'mapKey':'email','message':{'from':_0x148e02[_0x2bfa('0xfb')],'to':_0x20400f['MailAccount']['email'],'cc':'','subject':_[_0x2bfa('0xa1')](_0x5ac04c)?_0x20400f['offlineMessageSubject']:_0x5ac04c,'messageId':'','sentAt':new Date(),'attach':_0x88815c[_0x2bfa('0x64')],'attachments':_0x88815c,'originChannel':_0x2bfa('0x100'),'ChatWebsiteId':_0x20400f['id'],'ChatOfflineMessageId':_0x3ff7d6['id'],'originTo':_0x20400f['MailAccount'][_0x2bfa('0xfb')]},'body':_0x3ff7d6['body']};var _0x2a4881={'account':{'id':_0x20400f[_0x2bfa('0xfc')]},'body':_0x1861b0,'log':_0x2bfa('0x101')};return respondWithRpcPromise('NotifyMailAccount','notifyMail',_0x2a4881,client9001)[_0x2bfa('0x1b')](function(){return _0x3ff7d6;})[_0x2bfa('0x26')](function(_0x31498a){logger[_0x2bfa('0x22')](_0x31498a);});}return;})[_0x2bfa('0x1b')](function(){if(_0x3ff7d6){return _0x3ff7d6;}})['then'](respondWithResult(_0x33cc47,null))['catch'](function(){for(var _0xc5aee1 of _0x3756f0){var _0x17c10b=path['join'](config['root'],_0x2bfa('0x102'),_0x2bfa('0xdb'),_0x2bfa('0xeb'),_0x2bfa('0xec'),_0xc5aee1[_0x2bfa('0x90')]);fs_extra['remove'](_0x17c10b)[_0x2bfa('0x26')](function(_0x5cdc5d){logger['error'](_0x2bfa('0x103'),_0x17c10b,_0x5cdc5d);});}});};exports[_0x2bfa('0x104')]=function(_0x1c58ed,_0x4a8d2b){return db[_0x2bfa('0xc3')][_0x2bfa('0x75')]({'where':{'id':_0x1c58ed['params']['id']}})['then'](handleEntityNotFound(_0x4a8d2b,null))['then'](function(_0x541428){if(_0x541428){return _0x541428['addInteraction'](_0x1c58ed[_0x2bfa('0x77')][_0x2bfa('0x87')],_[_0x2bfa('0x105')](_0x1c58ed['body'],[_0x2bfa('0x87'),'id'])||{});}})['then'](respondWithResult(_0x4a8d2b,null))['catch'](handleError(_0x4a8d2b,null));};exports['getInteractions']=function(_0x104cc6,_0x32e959){var _0x1c408f={'raw':![],'where':{}};var _0x60b81={};var _0x1dfe17={'count':0x0,'rows':[]};return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x104cc6[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x32e959,null))[_0x2bfa('0x1b')](function(_0x44f99e){if(_0x44f99e){_0x60b81['model']=_[_0x2bfa('0x60')](db['ChatInteraction'][_0x2bfa('0x85')]);_0x60b81[_0x2bfa('0x5f')]=_['keys'](_0x104cc6[_0x2bfa('0x5f')]);_0x60b81[_0x2bfa('0x6a')]=_[_0x2bfa('0x62')](_0x60b81[_0x2bfa('0x56')],_0x60b81[_0x2bfa('0x5f')]);_0x1c408f[_0x2bfa('0x61')]=_['intersection'](_0x60b81['model'],qs['fields'](_0x104cc6[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x1c408f[_0x2bfa('0x61')]=_0x1c408f[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x1c408f[_0x2bfa('0x61')]:_0x60b81[_0x2bfa('0x56')];if(!_0x104cc6['query'][_0x2bfa('0x65')](_0x2bfa('0x66'))){_0x1c408f[_0x2bfa('0x67')]=qs[_0x2bfa('0x67')](_0x104cc6[_0x2bfa('0x5f')]['limit']);_0x1c408f[_0x2bfa('0x2a')]=qs[_0x2bfa('0x2a')](_0x104cc6[_0x2bfa('0x5f')]['offset']);}_0x1c408f[_0x2bfa('0x8b')]=qs['sort'](_0x104cc6['query'][_0x2bfa('0x68')]);_0x1c408f[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x104cc6['query'],_0x60b81[_0x2bfa('0x6a')]));_0x1c408f['where'][_0x2bfa('0x82')]=_0x44f99e['id'];if(_0x104cc6[_0x2bfa('0x5f')]['filter']){_0x1c408f[_0x2bfa('0x69')]=_[_0x2bfa('0x6d')](_0x1c408f[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x1c408f[_0x2bfa('0x61')],function(_0x4a4cd4){var _0x3b32ee={};_0x3b32ee[_0x4a4cd4]={'$like':'%'+_0x104cc6[_0x2bfa('0x5f')][_0x2bfa('0x6c')]+'%'};return _0x3b32ee;})});}_0x1c408f=_['merge']({},_0x1c408f,_0x104cc6[_0x2bfa('0x6f')]);return db[_0x2bfa('0xc3')][_0x2bfa('0x2c')]({'where':_0x1c408f[_0x2bfa('0x69')]})[_0x2bfa('0x1b')](function(_0x431c26){_0x1dfe17[_0x2bfa('0x2c')]=_0x431c26;if(_0x104cc6[_0x2bfa('0x5f')]['includeAll']){_0x1c408f[_0x2bfa('0x71')]=[{'model':db[_0x2bfa('0xb5')],'as':_0x2bfa('0x106'),'required':![]},{'model':db[_0x2bfa('0x107')],'as':_0x2bfa('0x108'),'attributes':[_0x2bfa('0x35'),_0x2bfa('0x109'),_0x2bfa('0x10a')],'required':![]},{'model':db[_0x2bfa('0x10b')],'as':'Tags','attributes':['id',_0x2bfa('0x35'),_0x2bfa('0x10c')],'where':_0x104cc6[_0x2bfa('0x5f')][_0x2bfa('0x10d')]?{'id':_0x104cc6[_0x2bfa('0x5f')]['tag']}:undefined,'required':_0x104cc6[_0x2bfa('0x5f')]['tag']?!![]:![]}];}return db[_0x2bfa('0xc3')]['findAll'](_0x1c408f);})['then'](function(_0x4e2a10){_0x1dfe17[_0x2bfa('0x73')]=_0x4e2a10;return _0x1dfe17;});}})[_0x2bfa('0x1b')](respondWithFilteredResult(_0x32e959,_0x1c408f))[_0x2bfa('0x26')](handleError(_0x32e959,null));};exports['getSnippet']=function(_0x275991,_0x43e6d7){var _0x4e7b6f=0x0;var _0x32e544=0x0;var _0x3fe2f2=![];var _0x49c450;var _0x10c555;return db['ChatWebsite'][_0x2bfa('0x75')]({'where':{'id':_0x275991['params']['id']},'include':[{'model':db[_0x2bfa('0x42')],'as':_0x2bfa('0x42'),'include':[{'model':db['Interval'],'as':_0x2bfa('0x43'),'attributes':['id',_0x2bfa('0x3b')]}]}]})[_0x2bfa('0x1b')](handleEntityNotFound(_0x43e6d7,null))[_0x2bfa('0x1b')](function(_0x3f649f){if(_0x3f649f){_0x49c450=_0x3f649f;return _0x3f649f['getProactiveActions']({'raw':!![]});}})[_0x2bfa('0x1b')](function(_0x31624a){if(_0x49c450){if(_0x31624a){_0x10c555=_0x31624a;}}return require(_0x2bfa('0x9a'))[_0x2bfa('0x9b')]();})[_0x2bfa('0x1b')](function(_0x285fff){if(_0x285fff){_0x32e544=_0x285fff[_0x2bfa('0x10e')];_0x3fe2f2=_0x285fff[_0x2bfa('0x9c')];}})['then'](function(){return db[_0x2bfa('0xc3')][_0x2bfa('0x2c')]({'where':{'closed':![]}});})[_0x2bfa('0x1b')](function(_0xba882d){_0x4e7b6f=_0xba882d;if(_0x32e544&&_0xba882d>_0x32e544){return db[_0x2bfa('0x10f')][_0x2bfa('0x84')]({'where':{'id':0x1}})[_0x2bfa('0x1b')](function(_0x149b3d){if(_0x149b3d){_0x149b3d[_0x2bfa('0x110')](_0x2bfa('0x111'));}});}})['then'](function(){if(!_0x49c450['Interval']||!_0x49c450[_0x2bfa('0x42')][_0x2bfa('0x43')])return!![];return checkWebsiteIntervals(_0x49c450);})[_0x2bfa('0x1b')](function(_0x4976d8){var _0x504abe=fs['readFileSync'](path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0x112')),'utf8');var _0x2f0774=new url[(_0x2bfa('0x113'))](_0x49c450[_0x2bfa('0x114')])[_0x2bfa('0x115')];var _0xe479e0=_0x2bfa('0x116');var _0x57bf32=![];var _0x1fbe7d={'chatVersion':_0xe479e0,'chatWebsiteAddressOrigin':_0x2f0774,'remote':_0x49c450[_0x2bfa('0x117')],'query':querystring[_0x2bfa('0x21')](_[_0x2bfa('0x6d')](_0x49c450[_0x2bfa('0x79')]({'plain':!![]}),{'customerIp':_0x275991['headers']['x-forwarded-for']||_0x275991[_0x2bfa('0xc1')][_0x2bfa('0x118')]||_0x275991[_0x2bfa('0x119')][_0x2bfa('0x11a')]||_0x275991['ip'],'referer':_0x275991['headers'][_0x2bfa('0x50')],'openedInteractions':_0x4e7b6f,'maxInteractions':_0x32e544,'virtual':_0x3fe2f2[_0x2bfa('0x10e')],'online':_0x4976d8,'custom':_0x3fe2f2}))[_0x2bfa('0x11b')](/'/g,'\x5c\x27')};_0x43e6d7[_0x2bfa('0x36')](ejs[_0x2bfa('0xe7')](Mustache[_0x2bfa('0xe7')](_0x504abe,_0x1fbe7d),{'proactiveActions':_0x10c555,'alignment':_0x49c450['alignment'],'verticalAlignment':_0x49c450[_0x2bfa('0x11c')],'div_color':_0x49c450[_0x2bfa('0x10c')],'labelText':_0x49c450[_0x2bfa('0x11d')],'text_color':_0x49c450[_0x2bfa('0x11e')],'text_button_color':_0x49c450[_0x2bfa('0x11f')],'button_color':_0x49c450[_0x2bfa('0x120')],'background_color':_0x49c450[_0x2bfa('0x121')],'hideWhenOffline':_0x49c450[_0x2bfa('0x122')],'intervalId':_0x49c450[_0x2bfa('0x123')],'isDevelopment':_0x57bf32,'chatVersion':_0xe479e0}));})[_0x2bfa('0x26')](handleError(_0x43e6d7,null));};exports[_0x2bfa('0x124')]=function(_0x20b3e1,_0x1570cf){var _0x13610d=_0x20b3e1[_0x2bfa('0x7f')]['id'];var _0x369c29=_0x20b3e1[_0x2bfa('0x77')];var _0x1b36f0=0xc8;var _0x51d408=null;return db['sequelize'][_0x2bfa('0xf0')]({'isolationLevel':db['sequelize']['Transaction'][_0x2bfa('0x125')][_0x2bfa('0x126')]},function(_0x17f7db){return db[_0x2bfa('0x5d')]['findOne']({'where':{'id':_0x13610d},'transaction':_0x17f7db})[_0x2bfa('0x1b')](function(_0x510d09){if(_0x510d09){return db['ChatApplication'][_0x2bfa('0x30')]({'where':{'ChatWebsiteId':_0x13610d},'transaction':_0x17f7db})[_0x2bfa('0x1b')](function(){var _0x159a3e=_['map'](_0x369c29,function(_0x4b991e){_0x4b991e['ChatWebsiteId']=_0x13610d;return _0x4b991e;});return db[_0x2bfa('0xb8')][_0x2bfa('0xf2')](_0x159a3e,{'transaction':_0x17f7db});});}else{_0x1b36f0=0x194;_0x51d408=[];}});})['then'](function(){if(_0x1b36f0!==0x194){return db[_0x2bfa('0xb8')][_0x2bfa('0x127')]({'where':{'ChatWebsiteId':_0x13610d},'order':_0x2bfa('0x128')})[_0x2bfa('0x1b')](function(_0xc0d91){_0x51d408=_0xc0d91;});}})[_0x2bfa('0x26')](function(_0x2510a2){_0x1b36f0=0x1f4;logger[_0x2bfa('0x22')](_0x2510a2[_0x2bfa('0x34')]);if(_0x2510a2[_0x2bfa('0x35')]){delete _0x2510a2[_0x2bfa('0x35')];}_0x51d408=_0x2510a2;})[_0x2bfa('0x129')](function(){if(_0x51d408===null){_0x1570cf[_0x2bfa('0x27')](_0x1b36f0);}else{if(_0x1b36f0===0x1f4){_0x1570cf[_0x2bfa('0x33')](_0x1b36f0)[_0x2bfa('0x36')](_0x51d408);}else{_0x1570cf[_0x2bfa('0x33')](_0x1b36f0)[_0x2bfa('0x29')](_0x51d408);}}});};exports[_0x2bfa('0x12a')]=function(_0x45e4a1,_0x3669f7){var _0x1bd2a8={};var _0x46d786={};var _0x25a537;var _0x20af16;return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x45e4a1['params']['id']}})['then'](handleEntityNotFound(_0x3669f7,null))[_0x2bfa('0x1b')](function(_0x3fb515){if(_0x3fb515){_0x25a537=_0x3fb515;_0x46d786[_0x2bfa('0x56')]=_[_0x2bfa('0x60')](db['ChatApplication'][_0x2bfa('0x85')]);_0x46d786[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x45e4a1[_0x2bfa('0x5f')]);_0x46d786['filters']=_['intersection'](_0x46d786['model'],_0x46d786[_0x2bfa('0x5f')]);_0x1bd2a8[_0x2bfa('0x61')]=_[_0x2bfa('0x62')](_0x46d786[_0x2bfa('0x56')],qs['fields'](_0x45e4a1[_0x2bfa('0x5f')]['fields']));_0x1bd2a8[_0x2bfa('0x61')]=_0x1bd2a8[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x1bd2a8[_0x2bfa('0x61')]:_0x46d786[_0x2bfa('0x56')];_0x1bd2a8[_0x2bfa('0x8b')]=qs['sort'](_0x45e4a1['query']['sort']);_0x1bd2a8[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x45e4a1[_0x2bfa('0x5f')],_0x46d786[_0x2bfa('0x6a')]));if(_0x45e4a1[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x1bd2a8['where']=_[_0x2bfa('0x6d')](_0x1bd2a8[_0x2bfa('0x69')],{'$or':_['map'](_0x1bd2a8[_0x2bfa('0x61')],function(_0xa0e5b7){var _0x18b805={};_0x18b805[_0xa0e5b7]={'$like':'%'+_0x45e4a1['query'][_0x2bfa('0x6c')]+'%'};return _0x18b805;})});}_0x1bd2a8=_[_0x2bfa('0x6d')]({},_0x1bd2a8,_0x45e4a1[_0x2bfa('0x6f')]);return _0x25a537[_0x2bfa('0x12a')](_0x1bd2a8);}})[_0x2bfa('0x1b')](function(_0x32093d){if(_0x32093d){_0x20af16=_0x32093d[_0x2bfa('0x64')];if(!_0x45e4a1[_0x2bfa('0x5f')][_0x2bfa('0x65')](_0x2bfa('0x66'))){_0x1bd2a8[_0x2bfa('0x67')]=qs[_0x2bfa('0x67')](_0x45e4a1[_0x2bfa('0x5f')][_0x2bfa('0x67')]);_0x1bd2a8[_0x2bfa('0x2a')]=qs['offset'](_0x45e4a1[_0x2bfa('0x5f')][_0x2bfa('0x2a')]);}return _0x25a537['getApplications'](_0x1bd2a8);}})['then'](function(_0x17f907){if(_0x17f907){return _0x17f907?{'count':_0x20af16,'rows':_0x17f907}:null;}})[_0x2bfa('0x1b')](respondWithResult(_0x3669f7,null))['catch'](handleError(_0x3669f7,null));};exports[_0x2bfa('0x12b')]=function(_0x344fec,_0x2d6b3f){return db['chatProactiveAction']['find']({'where':{'id':_0x344fec[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x2d6b3f,null))[_0x2bfa('0x1b')](function(_0x3e8502){if(_0x3e8502){return _0x3e8502['addProactiveActions'](_0x344fec['body']['ids'],_[_0x2bfa('0x105')](_0x344fec[_0x2bfa('0x77')],['ids','id'])||{});}})['then'](respondWithResult(_0x2d6b3f,null))[_0x2bfa('0x26')](handleError(_0x2d6b3f,null));};exports[_0x2bfa('0x12c')]=function(_0x2d1038,_0x3fbad8){var _0x524f4f={};var _0x3be2f2={};var _0xe72a49;var _0x45ed04;return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x2d1038[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x3fbad8,null))[_0x2bfa('0x1b')](function(_0x1f96f7){if(_0x1f96f7){_0xe72a49=_0x1f96f7;_0x3be2f2[_0x2bfa('0x56')]=_['keys'](db[_0x2bfa('0x12d')][_0x2bfa('0x85')]);_0x3be2f2[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x2d1038['query']);_0x3be2f2['filters']=_['intersection'](_0x3be2f2[_0x2bfa('0x56')],_0x3be2f2[_0x2bfa('0x5f')]);_0x524f4f[_0x2bfa('0x61')]=_['intersection'](_0x3be2f2[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x524f4f[_0x2bfa('0x61')]=_0x524f4f[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x524f4f[_0x2bfa('0x61')]:_0x3be2f2[_0x2bfa('0x56')];_0x524f4f['order']=qs[_0x2bfa('0x68')](_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x68')]);_0x524f4f[_0x2bfa('0x69')]=qs['filters'](_[_0x2bfa('0x6b')](_0x2d1038[_0x2bfa('0x5f')],_0x3be2f2[_0x2bfa('0x6a')]));if(_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x524f4f[_0x2bfa('0x69')]=_[_0x2bfa('0x6d')](_0x524f4f[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x524f4f['attributes'],function(_0x37fb84){var _0x50e745={};_0x50e745[_0x37fb84]={'$like':'%'+_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x6c')]+'%'};return _0x50e745;})});}_0x524f4f=_[_0x2bfa('0x6d')]({},_0x524f4f,_0x2d1038[_0x2bfa('0x6f')]);return _0xe72a49[_0x2bfa('0x12c')](_0x524f4f);}})[_0x2bfa('0x1b')](function(_0x1c2b6c){if(_0x1c2b6c){_0x45ed04=_0x1c2b6c[_0x2bfa('0x64')];if(!_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x65')](_0x2bfa('0x66'))){_0x524f4f[_0x2bfa('0x67')]=qs[_0x2bfa('0x67')](_0x2d1038['query'][_0x2bfa('0x67')]);_0x524f4f[_0x2bfa('0x2a')]=qs[_0x2bfa('0x2a')](_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x2a')]);}return _0xe72a49[_0x2bfa('0x12c')](_0x524f4f);}})['then'](function(_0x590532){if(_0x590532){return _0x590532?{'count':_0x45ed04,'rows':_0x590532}:null;}})[_0x2bfa('0x1b')](respondWithResult(_0x3fbad8,null))[_0x2bfa('0x26')](handleError(_0x3fbad8,null));};exports[_0x2bfa('0x12e')]=function(_0x26c658,_0x378129){var _0x39bf9c=_0x26c658[_0x2bfa('0x5f')][_0x2bfa('0x12f')]===_0x2bfa('0x130')?_0x2bfa('0x131'):_0x2bfa('0x132');return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'attributes':['id',_0x39bf9c],'where':{'id':_0x26c658[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x378129,null))[_0x2bfa('0x1b')](function(_0x145163){if(_0x145163){var _0x5c8d1a=_0x145163[_0x39bf9c];var _0x4588b1=_0x5c8d1a&&_0x5c8d1a[_0x2bfa('0x133')]?_0x5c8d1a[_0x2bfa('0x133')]:[];_0x378129[_0x2bfa('0x36')]({'fromKey':_[_0x2bfa('0xa1')](_0x5c8d1a[_0x2bfa('0x134')])?undefined:_0x5c8d1a['fromKey'],'count':_0x4588b1[_0x2bfa('0x64')],'rows':_0x4588b1});}})[_0x2bfa('0x26')](handleError(_0x378129,null));};exports[_0x2bfa('0x135')]=function(_0x43dd1f,_0x52e2ae){var _0x1820a7={'raw':![],'where':{}};var _0x2468ed={};var _0x4a877e={'count':0x0,'rows':[]};return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x43dd1f[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x52e2ae,null))[_0x2bfa('0x1b')](function(_0x154254){if(_0x154254){_0x2468ed[_0x2bfa('0x56')]=_[_0x2bfa('0x60')](db[_0x2bfa('0x136')]['rawAttributes']);_0x2468ed[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x43dd1f[_0x2bfa('0x5f')]);_0x2468ed[_0x2bfa('0x6a')]=_[_0x2bfa('0x62')](_0x2468ed[_0x2bfa('0x56')],_0x2468ed['query']);_0x1820a7[_0x2bfa('0x61')]=_['intersection'](_0x2468ed[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0x43dd1f['query'][_0x2bfa('0x63')]));_0x1820a7[_0x2bfa('0x61')]=_0x1820a7[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x1820a7[_0x2bfa('0x61')]:_0x2468ed[_0x2bfa('0x56')];if(!_0x43dd1f[_0x2bfa('0x5f')][_0x2bfa('0x65')](_0x2bfa('0x66'))){_0x1820a7[_0x2bfa('0x67')]=qs['limit'](_0x43dd1f[_0x2bfa('0x5f')][_0x2bfa('0x67')]);_0x1820a7[_0x2bfa('0x2a')]=qs['offset'](_0x43dd1f['query'][_0x2bfa('0x2a')]);}_0x1820a7[_0x2bfa('0x8b')]=qs[_0x2bfa('0x68')](_0x43dd1f[_0x2bfa('0x5f')]['sort']);_0x1820a7[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x43dd1f['query'],_0x2468ed['filters']));_0x1820a7[_0x2bfa('0x69')][_0x2bfa('0x82')]=_0x154254['id'];if(_0x43dd1f[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x1820a7['where']=_[_0x2bfa('0x6d')](_0x1820a7[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x1820a7[_0x2bfa('0x61')],function(_0x3cdada){var _0x17ec82={};_0x17ec82[_0x3cdada]={'$like':'%'+_0x43dd1f[_0x2bfa('0x5f')]['filter']+'%'};return _0x17ec82;})});}_0x1820a7=_['merge']({},_0x1820a7,_0x43dd1f[_0x2bfa('0x6f')]);return db['ChatOfflineMessage'][_0x2bfa('0x2c')]({'where':_0x1820a7[_0x2bfa('0x69')]})[_0x2bfa('0x1b')](function(_0x542f23){_0x4a877e[_0x2bfa('0x2c')]=_0x542f23;if(_0x43dd1f['query'][_0x2bfa('0x70')]){_0x1820a7[_0x2bfa('0x71')]=[{'all':!![]}];}else{_0x1820a7['include']=[{'model':db[_0x2bfa('0xb5')],'as':_0x2bfa('0x106'),'required':![]},{'model':db['Attachment'],'as':_0x2bfa('0x137'),'required':![]}];}return db['ChatOfflineMessage'][_0x2bfa('0x72')](_0x1820a7);})[_0x2bfa('0x1b')](function(_0x28ec60){_0x4a877e[_0x2bfa('0x73')]=_0x28ec60;return _0x4a877e;});}})[_0x2bfa('0x1b')](respondWithFilteredResult(_0x52e2ae,_0x1820a7))[_0x2bfa('0x26')](handleError(_0x52e2ae,null));};exports['addAgents']=function(_0x2f950c,_0x2fd547){return db[_0x2bfa('0x5d')]['find']({'where':{'id':_0x2f950c[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x2fd547,null))[_0x2bfa('0x1b')](function(_0x21a1cd){if(_0x21a1cd){return _0x21a1cd[_0x2bfa('0x138')](_0x2f950c[_0x2bfa('0x77')][_0x2bfa('0x87')],_['omit'](_0x2f950c[_0x2bfa('0x77')],[_0x2bfa('0x87'),'id'])||{})[_0x2bfa('0xbb')](function(_0x1b2225){for(var _0x344b4c=0x0;_0x344b4c<_0x2f950c[_0x2bfa('0x77')][_0x2bfa('0x87')][_0x2bfa('0x64')];_0x344b4c+=0x1){socket[_0x2bfa('0x139')](_0x2bfa('0x13a'),{'UserId':Number(_0x2f950c[_0x2bfa('0x77')][_0x2bfa('0x87')][_0x344b4c]),'ChatWebsiteId':Number(_0x2f950c[_0x2bfa('0x7f')]['id'])});}return _0x1b2225;});}})[_0x2bfa('0x1b')](respondWithResult(_0x2fd547,null))[_0x2bfa('0x26')](handleError(_0x2fd547,null));};exports[_0x2bfa('0x13b')]=function(_0x249908,_0x1c177c){return db['ChatWebsite'][_0x2bfa('0x75')]({'where':{'id':_0x249908[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x1c177c,null))['then'](function(_0x2668bc){if(_0x2668bc){return _0x2668bc[_0x2bfa('0x13b')](_0x249908[_0x2bfa('0x5f')][_0x2bfa('0x87')])['then'](function(){if(_[_0x2bfa('0x13c')](_0x249908[_0x2bfa('0x5f')][_0x2bfa('0x87')])){for(var _0x693c8b=0x0;_0x693c8b<_0x249908['query'][_0x2bfa('0x87')][_0x2bfa('0x64')];_0x693c8b+=0x1){socket[_0x2bfa('0x139')]('userChatWebsite:remove',{'UserId':Number(_0x249908['query'][_0x2bfa('0x87')][_0x693c8b]),'ChatWebsiteId':Number(_0x249908['params']['id'])});}}else{socket['emit'](_0x2bfa('0x13d'),{'UserId':Number(_0x249908[_0x2bfa('0x5f')][_0x2bfa('0x87')]),'ChatWebsiteId':Number(_0x249908[_0x2bfa('0x7f')]['id'])});}});}})[_0x2bfa('0x1b')](respondWithStatusCode(_0x1c177c,null))[_0x2bfa('0x26')](handleError(_0x1c177c,null));};exports[_0x2bfa('0x13e')]=function(_0x58a558,_0x257c76){var _0x31bd21={};var _0x95fa5b={};var _0x31b0b2;var _0x14d7a1;return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x58a558[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x257c76,null))[_0x2bfa('0x1b')](function(_0x18067a){if(_0x18067a){_0x31b0b2=_0x18067a;_0x95fa5b[_0x2bfa('0x56')]=_[_0x2bfa('0x60')](db[_0x2bfa('0x107')][_0x2bfa('0x85')]);_0x95fa5b[_0x2bfa('0x5f')]=_['keys'](_0x58a558['query']);_0x95fa5b['filters']=_[_0x2bfa('0x62')](_0x95fa5b[_0x2bfa('0x56')],_0x95fa5b[_0x2bfa('0x5f')]);_0x31bd21[_0x2bfa('0x61')]=_[_0x2bfa('0x62')](_0x95fa5b[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0x58a558[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x31bd21[_0x2bfa('0x61')]=_0x31bd21[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x31bd21[_0x2bfa('0x61')]:_0x95fa5b[_0x2bfa('0x56')];_0x31bd21[_0x2bfa('0x8b')]=qs[_0x2bfa('0x68')](_0x58a558[_0x2bfa('0x5f')]['sort']);_0x31bd21[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x58a558[_0x2bfa('0x5f')],_0x95fa5b[_0x2bfa('0x6a')]));if(_0x58a558[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x31bd21[_0x2bfa('0x69')]=_[_0x2bfa('0x6d')](_0x31bd21[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x31bd21[_0x2bfa('0x61')],function(_0x53dfab){var _0x53cec3={};_0x53cec3[_0x53dfab]={'$like':'%'+_0x58a558[_0x2bfa('0x5f')][_0x2bfa('0x6c')]+'%'};return _0x53cec3;})});}_0x31bd21=_[_0x2bfa('0x6d')]({},_0x31bd21,_0x58a558[_0x2bfa('0x6f')]);return _0x31b0b2[_0x2bfa('0x13e')](_0x31bd21);}})[_0x2bfa('0x1b')](function(_0x13f3f6){if(_0x13f3f6){_0x14d7a1=_0x13f3f6['length'];if(!_0x58a558['query']['hasOwnProperty'](_0x2bfa('0x66'))){_0x31bd21[_0x2bfa('0x67')]=qs[_0x2bfa('0x67')](_0x58a558[_0x2bfa('0x5f')]['limit']);_0x31bd21[_0x2bfa('0x2a')]=qs[_0x2bfa('0x2a')](_0x58a558[_0x2bfa('0x5f')][_0x2bfa('0x2a')]);}return _0x31b0b2[_0x2bfa('0x13e')](_0x31bd21);}})[_0x2bfa('0x1b')](function(_0x386991){if(_0x386991){return _0x386991?{'count':_0x14d7a1,'rows':_0x386991}:null;}})['then'](respondWithResult(_0x257c76,null))[_0x2bfa('0x26')](handleError(_0x257c76,null));};
\ No newline at end of file
index abb3d08..12c5fbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaefc=['events','../../mysqldb','ChatWebsite','save','update','emit','hasOwnProperty','exports'];(function(_0x2f0f16,_0x42d05a){var _0x4fbc2a=function(_0x46c91a){while(--_0x46c91a){_0x2f0f16['push'](_0x2f0f16['shift']());}};_0x4fbc2a(++_0x42d05a);}(_0xaefc,0xc8));var _0xcaef=function(_0x4eddb9,_0x10d308){_0x4eddb9=_0x4eddb9-0x0;var _0x4aebd3=_0xaefc[_0x4eddb9];return _0x4aebd3;};'use strict';var EventEmitter=require(_0xcaef('0x0'));var ChatWebsite=require(_0xcaef('0x1'))['db'][_0xcaef('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcaef('0x3'),'afterUpdate':_0xcaef('0x4'),'afterDestroy':'remove'};function emitEvent(_0x575523){return function(_0x37a134,_0x46a35e,_0x5f160f){ChatWebsiteEvents['emit'](_0x575523+':'+_0x37a134['id'],_0x37a134);ChatWebsiteEvents[_0xcaef('0x5')](_0x575523,_0x37a134);_0x5f160f(null);};}for(var e in events){if(events[_0xcaef('0x6')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module[_0xcaef('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0xb43b=['ChatWebsite','setMaxListeners','save','update','remove','emit','hook','events'];(function(_0xab4d52,_0x21c548){var _0x4c8131=function(_0x2efe43){while(--_0x2efe43){_0xab4d52['push'](_0xab4d52['shift']());}};_0x4c8131(++_0x21c548);}(_0xb43b,0xbf));var _0xbb43=function(_0x3b9cd1,_0x29c3db){_0x3b9cd1=_0x3b9cd1-0x0;var _0x5e53a0=_0xb43b[_0x3b9cd1];return _0x5e53a0;};'use strict';var EventEmitter=require(_0xbb43('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0xbb43('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xbb43('0x2')](0x0);var events={'afterCreate':_0xbb43('0x3'),'afterUpdate':_0xbb43('0x4'),'afterDestroy':_0xbb43('0x5')};function emitEvent(_0xeeec7c){return function(_0x2e9c09,_0x25f690,_0x24edde){ChatWebsiteEvents[_0xbb43('0x6')](_0xeeec7c+':'+_0x2e9c09['id'],_0x2e9c09);ChatWebsiteEvents[_0xbb43('0x6')](_0xeeec7c,_0x2e9c09);_0x24edde(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0xbb43('0x7')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index 8234f4e..9610299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a17=['./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x27e7f5,_0x593031){var _0xdfad9c=function(_0x37b89d){while(--_0x37b89d){_0x27e7f5['push'](_0x27e7f5['shift']());}};_0xdfad9c(++_0x593031);}(_0x7a17,0x17e));var _0x77a1=function(_0x400cd8,_0x302f62){_0x400cd8=_0x400cd8-0x0;var _0x39f4e2=_0x7a17[_0x400cd8];return _0x39f4e2;};'use strict';var _=require('lodash');var util=require(_0x77a1('0x0'));var logger=require(_0x77a1('0x1'))(_0x77a1('0x2'));var moment=require(_0x77a1('0x3'));var BPromise=require(_0x77a1('0x4'));var rp=require(_0x77a1('0x5'));var fs=require('fs');var path=require(_0x77a1('0x6'));var rimraf=require('rimraf');var config=require(_0x77a1('0x7'));var attributes=require(_0x77a1('0x8'));module[_0x77a1('0x9')]=function(_0x4bd3fd,_0x4dfbda){return _0x4bd3fd[_0x77a1('0xa')](_0x77a1('0xb'),attributes,{'tableName':_0x77a1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2045=['ChatWebsite','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatWebsite.attributes','define'];(function(_0x4a7e98,_0x250137){var _0x27d10d=function(_0x378768){while(--_0x378768){_0x4a7e98['push'](_0x4a7e98['shift']());}};_0x27d10d(++_0x250137);}(_0x2045,0x109));var _0x5204=function(_0x269b97,_0x10d133){_0x269b97=_0x269b97-0x0;var _0x120efa=_0x2045[_0x269b97];return _0x120efa;};'use strict';var _=require(_0x5204('0x0'));var util=require(_0x5204('0x1'));var logger=require(_0x5204('0x2'))(_0x5204('0x3'));var moment=require(_0x5204('0x4'));var BPromise=require('bluebird');var rp=require(_0x5204('0x5'));var fs=require('fs');var path=require(_0x5204('0x6'));var rimraf=require(_0x5204('0x7'));var config=require(_0x5204('0x8'));var attributes=require(_0x5204('0x9'));module['exports']=function(_0x252bcd,_0x5ebf26){return _0x252bcd[_0x5204('0xa')](_0x5204('0xb'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1c18c0f..d9194db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63f6=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x444d51,_0x398e25){var _0x37a214=function(_0x11e5a6){while(--_0x11e5a6){_0x444d51['push'](_0x444d51['shift']());}};_0x37a214(++_0x398e25);}(_0x63f6,0x1a2));var _0x663f=function(_0x5a0c3e,_0x5f3780){_0x5a0c3e=_0x5a0c3e-0x0;var _0x318886=_0x63f6[_0x5a0c3e];return _0x318886;};'use strict';var _=require(_0x663f('0x0'));var util=require(_0x663f('0x1'));var moment=require(_0x663f('0x2'));var BPromise=require(_0x663f('0x3'));var rs=require(_0x663f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x663f('0x5'))['db'];var utils=require(_0x663f('0x6'));var logger=require(_0x663f('0x7'))(_0x663f('0x8'));var config=require(_0x663f('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x663f('0xa')]({'port':0x232a});config[_0x663f('0xb')]=_[_0x663f('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x663f('0xb')]));require(_0x663f('0xd'))[_0x663f('0xe')](socket);function respondWithRpcPromise(_0x3e5397,_0x427209,_0x51ea85){return new BPromise(function(_0x522844,_0x37a2f2){return client['request'](_0x3e5397,_0x51ea85)[_0x663f('0xf')](function(_0x1cdc5a){logger[_0x663f('0x10')](_0x663f('0x11'),_0x427209,_0x663f('0x12'));logger[_0x663f('0x13')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x427209,_0x663f('0x12'),JSON[_0x663f('0x14')](_0x1cdc5a));if(_0x1cdc5a['error']){if(_0x1cdc5a[_0x663f('0x15')][_0x663f('0x16')]===0x1f4){logger[_0x663f('0x15')](_0x663f('0x11'),_0x427209,_0x1cdc5a[_0x663f('0x15')][_0x663f('0x17')]);return _0x37a2f2(_0x1cdc5a[_0x663f('0x15')]['message']);}logger[_0x663f('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x427209,_0x1cdc5a[_0x663f('0x15')][_0x663f('0x17')]);return _0x522844(_0x1cdc5a['error'][_0x663f('0x17')]);}else{logger[_0x663f('0x10')](_0x663f('0x11'),_0x427209,_0x663f('0x12'));_0x522844(_0x1cdc5a[_0x663f('0x18')]['message']);}})[_0x663f('0x19')](function(_0x385e5f){logger['error'](_0x663f('0x11'),_0x427209,_0x385e5f);_0x37a2f2(_0x385e5f);});});}
\ No newline at end of file
+var _0x3014=['error','code','ChatWebsite,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatWebsite.socket','register','request','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s'];(function(_0x3eb766,_0x10f89b){var _0x5c6fab=function(_0x56db6f){while(--_0x56db6f){_0x3eb766['push'](_0x3eb766['shift']());}};_0x5c6fab(++_0x10f89b);}(_0x3014,0x14a));var _0x4301=function(_0x36e87,_0x9cf332){_0x36e87=_0x36e87-0x0;var _0x5d4650=_0x3014[_0x36e87];return _0x5d4650;};'use strict';var _=require(_0x4301('0x0'));var util=require(_0x4301('0x1'));var moment=require(_0x4301('0x2'));var BPromise=require(_0x4301('0x3'));var rs=require(_0x4301('0x4'));var fs=require('fs');var Redis=require(_0x4301('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4301('0x6'));var logger=require(_0x4301('0x7'))(_0x4301('0x8'));var config=require(_0x4301('0x9'));var jayson=require(_0x4301('0xa'));var client=jayson[_0x4301('0xb')][_0x4301('0xc')]({'port':0x232a});config['redis']=_['defaults'](config[_0x4301('0xd')],{'host':_0x4301('0xe'),'port':0x18eb});var socket=require(_0x4301('0xf'))(new Redis(config[_0x4301('0xd')]));require(_0x4301('0x10'))[_0x4301('0x11')](socket);function respondWithRpcPromise(_0x290026,_0x9a5890,_0x1cdcf6){return new BPromise(function(_0x4e1952,_0x2af0a5){return client[_0x4301('0x12')](_0x290026,_0x1cdcf6)['then'](function(_0x51c714){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x9a5890,_0x4301('0x13'));logger['debug'](_0x4301('0x14'),_0x9a5890,_0x4301('0x13'),JSON['stringify'](_0x51c714));if(_0x51c714[_0x4301('0x15')]){if(_0x51c714['error'][_0x4301('0x16')]===0x1f4){logger[_0x4301('0x15')](_0x4301('0x17'),_0x9a5890,_0x51c714[_0x4301('0x15')]['message']);return _0x2af0a5(_0x51c714['error'][_0x4301('0x18')]);}logger[_0x4301('0x15')](_0x4301('0x17'),_0x9a5890,_0x51c714['error'][_0x4301('0x18')]);return _0x4e1952(_0x51c714[_0x4301('0x15')][_0x4301('0x18')]);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x9a5890,'request\x20sent');_0x4e1952(_0x51c714[_0x4301('0x19')][_0x4301('0x18')]);}})[_0x4301('0x1a')](function(_0xb6fbe9){logger[_0x4301('0x15')](_0x4301('0x17'),_0x9a5890,_0xb6fbe9);_0x2af0a5(_0xb6fbe9);});});}
\ No newline at end of file
index 9edf55c..409772d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x288a=['remove','removeListener','./chatWebsite.events','save'];(function(_0x5834bc,_0x3d4801){var _0x3e183a=function(_0x18b023){while(--_0x18b023){_0x5834bc['push'](_0x5834bc['shift']());}};_0x3e183a(++_0x3d4801);}(_0x288a,0x1b2));var _0xa288=function(_0x10e061,_0x3c25ec){_0x10e061=_0x10e061-0x0;var _0x5f46a3=_0x288a[_0x10e061];return _0x5f46a3;};'use strict';var ChatWebsiteEvents=require(_0xa288('0x0'));var events=[_0xa288('0x1'),_0xa288('0x2'),'update'];function createListener(_0x13f32c,_0x56390a){return function(_0x5f5d71){_0x56390a['emit'](_0x13f32c,_0x5f5d71);};}function removeListener(_0x14be09,_0x368b17){return function(){ChatWebsiteEvents[_0xa288('0x3')](_0x14be09,_0x368b17);};}exports['register']=function(_0x417d4a){for(var _0x3a8ee3=0x0,_0x5b1881=events['length'];_0x3a8ee3<_0x5b1881;_0x3a8ee3++){var _0x1f98ad=events[_0x3a8ee3];var _0x2875e7=createListener('chatWebsite:'+_0x1f98ad,_0x417d4a);ChatWebsiteEvents['on'](_0x1f98ad,_0x2875e7);}};
\ No newline at end of file
+var _0xa775=['register','length','chatWebsite:','./chatWebsite.events','save','remove','update'];(function(_0x331b13,_0x1dd7e0){var _0x1814c2=function(_0x166dc2){while(--_0x166dc2){_0x331b13['push'](_0x331b13['shift']());}};_0x1814c2(++_0x1dd7e0);}(_0xa775,0x129));var _0x5a77=function(_0x4e0f73,_0x553596){_0x4e0f73=_0x4e0f73-0x0;var _0x471e53=_0xa775[_0x4e0f73];return _0x471e53;};'use strict';var ChatWebsiteEvents=require(_0x5a77('0x0'));var events=[_0x5a77('0x1'),_0x5a77('0x2'),_0x5a77('0x3')];function createListener(_0x58ac20,_0x3f9fa5){return function(_0x7cad0f){_0x3f9fa5['emit'](_0x58ac20,_0x7cad0f);};}function removeListener(_0x545e5a,_0x5916ac){return function(){ChatWebsiteEvents['removeListener'](_0x545e5a,_0x5916ac);};}exports[_0x5a77('0x4')]=function(_0x20561c){for(var _0x3b6b52=0x0,_0x1e3108=events[_0x5a77('0x5')];_0x3b6b52<_0x1e3108;_0x3b6b52++){var _0x59eec3=events[_0x3b6b52];var _0x2df035=createListener(_0x5a77('0x6')+_0x59eec3,_0x20561c);ChatWebsiteEvents['on'](_0x59eec3,_0x2df035);}};
\ No newline at end of file
index 48dfe9a..18a8917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf0f=['/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','getApplications','/:id/proactive_actions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','post','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','server/files/images/avatars/','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','attachments','offline-chat','ensureDir','extname','replace','any','offline','addInteraction','addApplications','addProactiveActions','/:id/users','addAgents','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/logo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar'];(function(_0x5bf2b3,_0xfcd364){var _0x5e8a9b=function(_0x43546b){while(--_0x43546b){_0x5bf2b3['push'](_0x5bf2b3['shift']());}};_0x5e8a9b(++_0xfcd364);}(_0xdf0f,0x1cc));var _0xfdf0=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xdf0f[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require(_0xfdf0('0x0'));var util=require(_0xfdf0('0x1'));var path=require(_0xfdf0('0x2'));var timeout=require(_0xfdf0('0x3'));var express=require(_0xfdf0('0x4'));var router=express['Router']();var fs_extra=require(_0xfdf0('0x5'));var auth=require(_0xfdf0('0x6'));var interaction=require(_0xfdf0('0x7'));var config=require(_0xfdf0('0x8'));var controller=require('./chatWebsite.controller');router[_0xfdf0('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xfdf0('0x9')](_0xfdf0('0xa'),auth[_0xfdf0('0xb')](),controller[_0xfdf0('0xc')]);router[_0xfdf0('0x9')](_0xfdf0('0xd'),auth[_0xfdf0('0xb')](),controller[_0xfdf0('0xe')]);router[_0xfdf0('0x9')](_0xfdf0('0xf'),auth[_0xfdf0('0xb')](),controller['getDispositions']);router[_0xfdf0('0x9')](_0xfdf0('0x10'),auth[_0xfdf0('0xb')](),controller[_0xfdf0('0x11')]);router[_0xfdf0('0x9')](_0xfdf0('0x12'),controller['getLogo']);router[_0xfdf0('0x9')](_0xfdf0('0x13'),controller[_0xfdf0('0x14')]);router['get'](_0xfdf0('0x15'),controller[_0xfdf0('0x16')]);router[_0xfdf0('0x9')](_0xfdf0('0x17'),controller[_0xfdf0('0x18')]);router[_0xfdf0('0x9')]('/:id/interactions',auth[_0xfdf0('0xb')](),controller[_0xfdf0('0x19')]);router['get'](_0xfdf0('0x1a'),controller['getSnippet']);router[_0xfdf0('0x9')]('/:id/applications',auth['isAuthenticated'](),controller[_0xfdf0('0x1b')]);router[_0xfdf0('0x9')](_0xfdf0('0x1c'),auth[_0xfdf0('0xb')](),controller['getProactiveActions']);router[_0xfdf0('0x9')](_0xfdf0('0x1d'),controller[_0xfdf0('0x1e')]);router[_0xfdf0('0x9')](_0xfdf0('0x1f'),auth[_0xfdf0('0xb')](),controller[_0xfdf0('0x20')]);router['get']('/:id/users',auth[_0xfdf0('0xb')](),controller['getAgents']);router[_0xfdf0('0x21')]('/',auth[_0xfdf0('0xb')](),controller['create']);router[_0xfdf0('0x21')](_0xfdf0('0xf'),auth['isAuthenticated'](),controller[_0xfdf0('0x22')]);router[_0xfdf0('0x21')]('/:id/canned_answers',auth[_0xfdf0('0xb')](),controller[_0xfdf0('0x23')]);var upload=multer({'storage':multer[_0xfdf0('0x24')]({'destination':function(_0x4c9e06,_0x1792d6,_0x2f1fa1){_0x2f1fa1(null,path[_0xfdf0('0x25')](config[_0xfdf0('0x26')],_0xfdf0('0x27')));},'filename':function(_0x2014a9,_0x58a200,_0x34501f){_0x34501f(null,util[_0xfdf0('0x28')](_0xfdf0('0x29'),Date[_0xfdf0('0x2a')](),_0x58a200[_0xfdf0('0x2b')]));}})});router[_0xfdf0('0x21')](_0xfdf0('0x12'),upload[_0xfdf0('0x2c')](_0xfdf0('0x2d')),controller['addLogo']);var upload=multer({'storage':multer[_0xfdf0('0x24')]({'destination':function(_0x2ff7b8,_0x3d5dde,_0x34b5e0){_0x34b5e0(null,path['join'](config[_0xfdf0('0x26')],_0xfdf0('0x2e')));},'filename':function(_0x1618c3,_0x38b1a8,_0x382777){_0x382777(null,util[_0xfdf0('0x28')](_0xfdf0('0x29'),Date[_0xfdf0('0x2a')](),_0x38b1a8['originalname']));}})});router[_0xfdf0('0x21')](_0xfdf0('0x13'),upload[_0xfdf0('0x2c')]('file'),controller['addAvatar']);var upload=multer({'storage':multer[_0xfdf0('0x24')]({'destination':function(_0x2e0795,_0x11f028,_0x5cc05e){_0x5cc05e(null,path[_0xfdf0('0x25')](config[_0xfdf0('0x26')],_0xfdf0('0x2e')));},'filename':function(_0x1986fb,_0x17b683,_0x51bea2){_0x51bea2(null,util['format']('%s-%s',Date[_0xfdf0('0x2a')](),_0x17b683[_0xfdf0('0x2b')]));}})});router[_0xfdf0('0x21')](_0xfdf0('0x15'),upload['single']('file'),controller[_0xfdf0('0x2f')]);var upload=multer({'storage':multer[_0xfdf0('0x24')]({'destination':function(_0x5d30cc,_0x5db01a,_0x275a17){_0x275a17(null,path[_0xfdf0('0x25')](config['root'],_0xfdf0('0x2e')));},'filename':function(_0xe25b3d,_0x218655,_0x427205){_0x427205(null,util[_0xfdf0('0x28')]('%s-%s',Date[_0xfdf0('0x2a')](),_0x218655['originalname']));}})});router['post'](_0xfdf0('0x17'),upload[_0xfdf0('0x2c')](_0xfdf0('0x2d')),controller[_0xfdf0('0x30')]);router[_0xfdf0('0x21')](_0xfdf0('0x31'),controller[_0xfdf0('0x32')]);const offlineUploadMulter=multer({'storage':multer[_0xfdf0('0x24')]({'destination':function(_0x4f134f,_0x2a3f0c,_0x2d5652){const _0x58ecbd=path['join'](config['root'],'server/files',_0xfdf0('0x33'),_0xfdf0('0x34'));fs_extra[_0xfdf0('0x35')](_0x58ecbd,function(){_0x2d5652(null,_0x58ecbd);});},'filename':function(_0x5a2ff0,_0x18d93d,_0x358c1e){const _0x121d4e=_0x18d93d['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x4dea0f=path[_0xfdf0('0x36')](_0x121d4e);const _0x9b71ac=Date[_0xfdf0('0x2a')]()+'-'+_0x121d4e[_0xfdf0('0x37')](_0x4dea0f,'')+_0x4dea0f;_0x358c1e(null,_0x9b71ac);}})});router[_0xfdf0('0x21')]('/:id/offline',offlineUploadMulter[_0xfdf0('0x38')](),controller[_0xfdf0('0x39')]);router[_0xfdf0('0x21')]('/:id/interactions',auth[_0xfdf0('0xb')](),controller[_0xfdf0('0x3a')]);router[_0xfdf0('0x21')]('/:id/applications',auth['isAuthenticated'](),controller[_0xfdf0('0x3b')]);router[_0xfdf0('0x21')]('/:id/proactive_actions',auth[_0xfdf0('0xb')](),controller[_0xfdf0('0x3c')]);router[_0xfdf0('0x21')](_0xfdf0('0x3d'),auth[_0xfdf0('0xb')](),controller[_0xfdf0('0x3e')]);router['put'](_0xfdf0('0xd'),auth[_0xfdf0('0xb')](),controller[_0xfdf0('0x3f')]);router[_0xfdf0('0x40')](_0xfdf0('0xd'),auth['isAuthenticated'](),controller[_0xfdf0('0x41')]);router[_0xfdf0('0x40')]('/:id/dispositions',auth[_0xfdf0('0xb')](),controller[_0xfdf0('0x42')]);router['delete'](_0xfdf0('0x10'),auth['isAuthenticated'](),controller[_0xfdf0('0x43')]);router[_0xfdf0('0x40')](_0xfdf0('0x3d'),auth[_0xfdf0('0xb')](),controller[_0xfdf0('0x44')]);module['exports']=router;
\ No newline at end of file
+var _0x7895=['../../components/auth/service','../../config/environment','./chatWebsite.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','/:id/snippet','getSnippet','/:id/applications','/:id/proactive_actions','getProactiveActions','/:id/fields','/:id/offline_messages','getOfflineMessages','getAgents','post','create','addDisposition','diskStorage','root','server/files/images/logos/','format','now','single','file','addLogo','join','server/files/images/avatars/','%s-%s','originalname','addAvatar','/:id/customer_avatar','addCustomerAvatar','addSystemAvatar','/:id/notify','server/files','attachments','ensureDir','extname','replace','/:id/offline','offline','addInteraction','addProactiveActions','addAgents','update','destroy','delete','removeDispositions','removeAnswers','/:id/users','removeAgents','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x4e18b8,_0xa8e6a4){var _0x36ae51=function(_0x1b78af){while(--_0x1b78af){_0x4e18b8['push'](_0x4e18b8['shift']());}};_0x36ae51(++_0xa8e6a4);}(_0x7895,0x167));var _0x5789=function(_0x11f275,_0x1cbadf){_0x11f275=_0x11f275-0x0;var _0xad208c=_0x7895[_0x11f275];return _0xad208c;};'use strict';var multer=require(_0x5789('0x0'));var util=require(_0x5789('0x1'));var path=require(_0x5789('0x2'));var timeout=require(_0x5789('0x3'));var express=require('express');var router=express[_0x5789('0x4')]();var fs_extra=require(_0x5789('0x5'));var auth=require(_0x5789('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5789('0x7'));var controller=require(_0x5789('0x8'));router['get']('/',auth[_0x5789('0x9')](),controller[_0x5789('0xa')]);router[_0x5789('0xb')](_0x5789('0xc'),auth[_0x5789('0x9')](),controller[_0x5789('0xd')]);router[_0x5789('0xb')](_0x5789('0xe'),auth['isAuthenticated'](),controller[_0x5789('0xf')]);router[_0x5789('0xb')](_0x5789('0x10'),auth['isAuthenticated'](),controller[_0x5789('0x11')]);router['get'](_0x5789('0x12'),auth[_0x5789('0x9')](),controller[_0x5789('0x13')]);router[_0x5789('0xb')](_0x5789('0x14'),controller[_0x5789('0x15')]);router[_0x5789('0xb')](_0x5789('0x16'),controller['getAvatar']);router[_0x5789('0xb')]('/:id/customer_avatar',controller[_0x5789('0x17')]);router[_0x5789('0xb')](_0x5789('0x18'),controller[_0x5789('0x19')]);router[_0x5789('0xb')](_0x5789('0x1a'),auth[_0x5789('0x9')](),controller['getInteractions']);router[_0x5789('0xb')](_0x5789('0x1b'),controller[_0x5789('0x1c')]);router['get'](_0x5789('0x1d'),auth[_0x5789('0x9')](),controller['getApplications']);router['get'](_0x5789('0x1e'),auth[_0x5789('0x9')](),controller[_0x5789('0x1f')]);router['get'](_0x5789('0x20'),controller['getFields']);router[_0x5789('0xb')](_0x5789('0x21'),auth[_0x5789('0x9')](),controller[_0x5789('0x22')]);router[_0x5789('0xb')]('/:id/users',auth['isAuthenticated'](),controller[_0x5789('0x23')]);router[_0x5789('0x24')]('/',auth[_0x5789('0x9')](),controller[_0x5789('0x25')]);router[_0x5789('0x24')](_0x5789('0x10'),auth['isAuthenticated'](),controller[_0x5789('0x26')]);router[_0x5789('0x24')]('/:id/canned_answers',auth[_0x5789('0x9')](),controller['addAnswer']);var upload=multer({'storage':multer[_0x5789('0x27')]({'destination':function(_0x4bfe4d,_0x47b3f9,_0x1c9887){_0x1c9887(null,path['join'](config[_0x5789('0x28')],_0x5789('0x29')));},'filename':function(_0x443477,_0x36a870,_0x211676){_0x211676(null,util[_0x5789('0x2a')]('%s-%s',Date[_0x5789('0x2b')](),_0x36a870['originalname']));}})});router[_0x5789('0x24')](_0x5789('0x14'),upload[_0x5789('0x2c')](_0x5789('0x2d')),controller[_0x5789('0x2e')]);var upload=multer({'storage':multer[_0x5789('0x27')]({'destination':function(_0x2a1ef1,_0x6e1267,_0x47beca){_0x47beca(null,path[_0x5789('0x2f')](config[_0x5789('0x28')],_0x5789('0x30')));},'filename':function(_0x5af377,_0x1dd097,_0x369d68){_0x369d68(null,util['format'](_0x5789('0x31'),Date[_0x5789('0x2b')](),_0x1dd097[_0x5789('0x32')]));}})});router[_0x5789('0x24')](_0x5789('0x16'),upload['single'](_0x5789('0x2d')),controller[_0x5789('0x33')]);var upload=multer({'storage':multer[_0x5789('0x27')]({'destination':function(_0x5d7e29,_0x5d1a5b,_0x1be21d){_0x1be21d(null,path[_0x5789('0x2f')](config[_0x5789('0x28')],_0x5789('0x30')));},'filename':function(_0xd80c0b,_0x2b74b8,_0x4c4339){_0x4c4339(null,util[_0x5789('0x2a')](_0x5789('0x31'),Date[_0x5789('0x2b')](),_0x2b74b8['originalname']));}})});router[_0x5789('0x24')](_0x5789('0x34'),upload[_0x5789('0x2c')](_0x5789('0x2d')),controller[_0x5789('0x35')]);var upload=multer({'storage':multer[_0x5789('0x27')]({'destination':function(_0x20ca46,_0x47474d,_0x36e204){_0x36e204(null,path[_0x5789('0x2f')](config['root'],_0x5789('0x30')));},'filename':function(_0x3c83b7,_0xcd55e4,_0x24c0c6){_0x24c0c6(null,util[_0x5789('0x2a')](_0x5789('0x31'),Date[_0x5789('0x2b')](),_0xcd55e4['originalname']));}})});router[_0x5789('0x24')](_0x5789('0x18'),upload[_0x5789('0x2c')]('file'),controller[_0x5789('0x36')]);router[_0x5789('0x24')](_0x5789('0x37'),controller['notify']);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x5a7e8e,_0x5ba9ab,_0x309251){const _0x404d92=path[_0x5789('0x2f')](config[_0x5789('0x28')],_0x5789('0x38'),_0x5789('0x39'),'offline-chat');fs_extra[_0x5789('0x3a')](_0x404d92,function(){_0x309251(null,_0x404d92);});},'filename':function(_0x155436,_0x14a3e5,_0x277d42){const _0x58aea4=_0x14a3e5[_0x5789('0x32')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x231a0d=path[_0x5789('0x3b')](_0x58aea4);const _0x1f3802=Date['now']()+'-'+_0x58aea4[_0x5789('0x3c')](_0x231a0d,'')+_0x231a0d;_0x277d42(null,_0x1f3802);}})});router['post'](_0x5789('0x3d'),offlineUploadMulter['any'](),controller[_0x5789('0x3e')]);router[_0x5789('0x24')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x5789('0x3f')]);router[_0x5789('0x24')](_0x5789('0x1d'),auth[_0x5789('0x9')](),controller['addApplications']);router[_0x5789('0x24')](_0x5789('0x1e'),auth[_0x5789('0x9')](),controller[_0x5789('0x40')]);router[_0x5789('0x24')]('/:id/users',auth[_0x5789('0x9')](),controller[_0x5789('0x41')]);router['put']('/:id',auth[_0x5789('0x9')](),controller[_0x5789('0x42')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5789('0x43')]);router[_0x5789('0x44')](_0x5789('0x10'),auth[_0x5789('0x9')](),controller[_0x5789('0x45')]);router[_0x5789('0x44')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x5789('0x46')]);router['delete'](_0x5789('0x47'),auth['isAuthenticated'](),controller[_0x5789('0x48')]);module['exports']=router;
\ No newline at end of file
index 3b45e16..b097941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc73e=['env','production','app','get','client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint','isAuthenticated','exports','beaver-logger/server','express','../components/auth/service','Router'];(function(_0x1e356c,_0x1761c5){var _0x386592=function(_0x55e079){while(--_0x55e079){_0x1e356c['push'](_0x1e356c['shift']());}};_0x386592(++_0x1761c5);}(_0xc73e,0x1c3));var _0xec73=function(_0x13fcd8,_0x54681a){_0x13fcd8=_0x13fcd8-0x0;var _0x19cd5b=_0xc73e[_0x13fcd8];return _0x19cd5b;};var beaverLogger=require(_0xec73('0x0'));var express=require(_0xec73('0x1'));var auth=require(_0xec73('0x2'));var config=require('../config/environment');var router=express[_0xec73('0x3')]();var isProduction=config[_0xec73('0x4')]===_0xec73('0x5')||![];function clientSideLogs(_0x16995b,_0x504062,_0x32b314){var _0x2f315b=_0x16995b[_0xec73('0x6')][_0xec73('0x7')](_0xec73('0x8'));if(!_0x2f315b){throw new Error(_0xec73('0x9'));}return beaverLogger[_0xec73('0xa')]({'uri':'/client-logs','logger':_0x2f315b,'enableCors':!isProduction})(_0x16995b,_0x504062,_0x32b314);}router['use'](auth[_0xec73('0xb')](),clientSideLogs);module[_0xec73('0xc')]=router;
\ No newline at end of file
+var _0xf2b5=['use','isAuthenticated','beaver-logger/server','express','../components/auth/service','../config/environment','Router','production','app','client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint'];(function(_0x4d12c2,_0x2ad644){var _0x18e9c6=function(_0x35c221){while(--_0x35c221){_0x4d12c2['push'](_0x4d12c2['shift']());}};_0x18e9c6(++_0x2ad644);}(_0xf2b5,0x152));var _0x5f2b=function(_0x2c0dc0,_0x19900d){_0x2c0dc0=_0x2c0dc0-0x0;var _0x4c0990=_0xf2b5[_0x2c0dc0];return _0x4c0990;};var beaverLogger=require(_0x5f2b('0x0'));var express=require(_0x5f2b('0x1'));var auth=require(_0x5f2b('0x2'));var config=require(_0x5f2b('0x3'));var router=express[_0x5f2b('0x4')]();var isProduction=config['env']===_0x5f2b('0x5')||![];function clientSideLogs(_0x3693ae,_0x5f00ea,_0x40adcc){var _0x40b398=_0x3693ae[_0x5f2b('0x6')]['get'](_0x5f2b('0x7'));if(!_0x40b398){throw new Error(_0x5f2b('0x8'));}return beaverLogger[_0x5f2b('0x9')]({'uri':'/client-logs','logger':_0x40b398,'enableCors':!isProduction})(_0x3693ae,_0x5f00ea,_0x40adcc);}router[_0x5f2b('0xa')](auth[_0x5f2b('0xb')](),clientSideLogs);module['exports']=router;
\ No newline at end of file
index 6957367..b41c9da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f85=['MicrosoftAzure','Outlook365','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING','ENUM','AmazonAWS','Google'];(function(_0x490dfe,_0x37a166){var _0x25acd6=function(_0x13b554){while(--_0x13b554){_0x490dfe['push'](_0x490dfe['shift']());}};_0x25acd6(++_0x37a166);}(_0x6f85,0xa2));var _0x56f8=function(_0x54b0f3,_0x1fe2f7){_0x54b0f3=_0x54b0f3-0x0;var _0x5ae957=_0x6f85[_0x54b0f3];return _0x5ae957;};'use strict';var Sequelize=require(_0x56f8('0x0'));module[_0x56f8('0x1')]={'name':{'type':Sequelize[_0x56f8('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x56f8('0x3')](_0x56f8('0x4'),_0x56f8('0x5'),_0x56f8('0x6')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x56f8('0x3')](_0x56f8('0x7'),'Dynamics365')},'data1':{'type':Sequelize['STRING'],'comment':_0x56f8('0x8')},'data2':{'type':Sequelize['STRING'],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0x56f8('0x2')],'comment':'MicrosoftAzure\x20=>\x20client_secret'},'data4':{'type':Sequelize[_0x56f8('0x2')],'comment':_0x56f8('0x9')},'data5':{'type':Sequelize[_0x56f8('0xa')],'comment':_0x56f8('0xb')},'data6':{'type':Sequelize['TEXT'],'comment':_0x56f8('0xc')},'data7':{'type':Sequelize[_0x56f8('0xa')],'comment':_0x56f8('0xd')}};
\ No newline at end of file
+var _0x3bde=['sequelize','exports','STRING','ENUM','AmazonAWS','Google','MicrosoftAzure','Dynamics365','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','MicrosoftAzure\x20=>\x20access_token','TEXT','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri'];(function(_0x242d32,_0x44fb0e){var _0x14af4e=function(_0x1252a6){while(--_0x1252a6){_0x242d32['push'](_0x242d32['shift']());}};_0x14af4e(++_0x44fb0e);}(_0x3bde,0x190));var _0xe3bd=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0x3bde[_0x35da42];return _0x370035;};'use strict';var Sequelize=require(_0xe3bd('0x0'));module[_0xe3bd('0x1')]={'name':{'type':Sequelize[_0xe3bd('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xe3bd('0x3')](_0xe3bd('0x4'),_0xe3bd('0x5'),_0xe3bd('0x6')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xe3bd('0x3')]('Outlook365',_0xe3bd('0x7'))},'data1':{'type':Sequelize[_0xe3bd('0x2')],'comment':_0xe3bd('0x8')},'data2':{'type':Sequelize[_0xe3bd('0x2')],'comment':_0xe3bd('0x9')},'data3':{'type':Sequelize[_0xe3bd('0x2')],'comment':_0xe3bd('0xa')},'data4':{'type':Sequelize[_0xe3bd('0x2')],'comment':_0xe3bd('0xb')},'data5':{'type':Sequelize['TEXT'],'comment':_0xe3bd('0xc')},'data6':{'type':Sequelize[_0xe3bd('0xd')],'comment':_0xe3bd('0xe')},'data7':{'type':Sequelize[_0xe3bd('0xd')],'comment':_0xe3bd('0xf')}};
\ No newline at end of file
index b2e43a8..0291182 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4daa=['join','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','Invalid\x20state\x20parameter','parse','from','base64','ascii','del','state','getOauth2MicrosoftAccessToken','code','data5','access_token','refresh_token','data6','emit','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../config/environment','../../config/logger','../../mysqldb','redis','defaults','localhost','end','status','offset','limit','undefined','count','set','update','then','destroy','sendStatus','error','stack','name','send','padEnd','slice','map','CloudProvider','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','service','MicrosoftAzure','decryptString','data3','show','params','keys','rawAttributes','include','find','catch','create','body','Name\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20'];(function(_0x4d88f6,_0x52f758){var _0x2041c8=function(_0x16f556){while(--_0x16f556){_0x4d88f6['push'](_0x4d88f6['shift']());}};_0x2041c8(++_0x52f758);}(_0x4daa,0xd7));var _0xa4da=function(_0x389cda,_0x31155c){_0x389cda=_0x389cda-0x0;var _0x5889bc=_0x4daa[_0x389cda];return _0x5889bc;};'use strict';var _=require(_0xa4da('0x0'));var Redis=require(_0xa4da('0x1'));var qs=require(_0xa4da('0x2'));var encryptor=require('../../components/encryptor');var config=require(_0xa4da('0x3'));var logger=require(_0xa4da('0x4'))('api');var db=require(_0xa4da('0x5'))['db'];var oauth=require('./cloudProvider.oauth');config[_0xa4da('0x6')]=_[_0xa4da('0x7')](config[_0xa4da('0x6')],{'host':_0xa4da('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa4da('0x6')]));var redis=new Redis(config[_0xa4da('0x6')]);function respondWithStatusCode(_0x51930f,_0xe23d45){_0xe23d45=_0xe23d45||0xcc;return function(_0x3e964f){if(_0x3e964f){return _0x51930f['sendStatus'](_0xe23d45);}return _0x51930f['status'](_0xe23d45)[_0xa4da('0x9')]();};}function respondWithResult(_0x49fa26,_0x301f30){_0x301f30=_0x301f30||0xc8;return function(_0x2af756){if(_0x2af756){return _0x49fa26[_0xa4da('0xa')](_0x301f30)['json'](_0x2af756);}};}function respondWithFilteredResult(_0x2d1840,_0x7a64b2){return function(_0x2e4728){if(_0x2e4728){var _0x32bc64=typeof _0x7a64b2[_0xa4da('0xb')]==='undefined'&&typeof _0x7a64b2[_0xa4da('0xc')]===_0xa4da('0xd');var _0x588f0d=_0x2e4728[_0xa4da('0xe')];var _0x344f66=_0x32bc64?0x0:_0x7a64b2[_0xa4da('0xb')];var _0x38c282=_0x32bc64?_0x2e4728['count']:_0x7a64b2['offset']+_0x7a64b2[_0xa4da('0xc')];var _0x5e041e;if(_0x38c282>=_0x588f0d){_0x38c282=_0x588f0d;_0x5e041e=0xc8;}else{_0x5e041e=0xce;}_0x2d1840[_0xa4da('0xa')](_0x5e041e);return _0x2d1840[_0xa4da('0xf')]('Content-Range',_0x344f66+'-'+_0x38c282+'/'+_0x588f0d)['json'](_0x2e4728);}return null;};}function saveUpdates(_0x3dcbca){return function(_0xfdd21b){if(_0xfdd21b){return _0xfdd21b[_0xa4da('0x10')](_0x3dcbca)[_0xa4da('0x11')](function(_0x550aab){return _0x550aab;});}return null;};}function removeEntity(_0x245465){return function(_0x199fbb){if(_0x199fbb){return _0x199fbb[_0xa4da('0x12')]()[_0xa4da('0x11')](function(){_0x245465[_0xa4da('0xa')](0xcc)['end']();});}};}function handleEntityNotFound(_0x176aa1){return function(_0x3ee147){if(!_0x3ee147){_0x176aa1[_0xa4da('0x13')](0x194);}return _0x3ee147;};}function handleError(_0x2a668e,_0x5e845e){_0x5e845e=_0x5e845e||0x1f4;return function(_0x2c9e77){logger[_0xa4da('0x14')](_0x2c9e77[_0xa4da('0x15')]);if(_0x2c9e77[_0xa4da('0x16')]){delete _0x2c9e77[_0xa4da('0x16')];}_0x2a668e[_0xa4da('0xa')](_0x5e845e)[_0xa4da('0x17')](_0x2c9e77);};}function maskClientSecret(_0x56ffe4){return _[_0xa4da('0x18')](_0x56ffe4[_0xa4da('0x19')](0x0,0x3),0x14,'*');}exports['index']=function(_0x4dd4d8,_0x54a764){var _0x23a855={},_0x15f992={},_0x3a3e5d={'count':0x0,'rows':[]};var _0x4e7fcb=_[_0xa4da('0x1a')](db[_0xa4da('0x1b')]['rawAttributes'],function(_0x3180c0){return{'name':_0x3180c0[_0xa4da('0x1c')],'type':_0x3180c0[_0xa4da('0x1d')]['key']};});_0x15f992[_0xa4da('0x1e')]=_['map'](_0x4e7fcb,_0xa4da('0x16'));_0x15f992[_0xa4da('0x1f')]=_['keys'](_0x4dd4d8['query']);_0x15f992[_0xa4da('0x20')]=_[_0xa4da('0x21')](_0x15f992[_0xa4da('0x1e')],_0x15f992[_0xa4da('0x1f')]);_0x23a855[_0xa4da('0x22')]=_[_0xa4da('0x21')](_0x15f992['model'],qs[_0xa4da('0x23')](_0x4dd4d8[_0xa4da('0x1f')][_0xa4da('0x23')]));_0x23a855[_0xa4da('0x22')]=_0x23a855[_0xa4da('0x22')][_0xa4da('0x24')]?_0x23a855[_0xa4da('0x22')]:_0x15f992[_0xa4da('0x1e')];if(!_0x4dd4d8['query'][_0xa4da('0x25')](_0xa4da('0x26'))){_0x23a855[_0xa4da('0xc')]=qs[_0xa4da('0xc')](_0x4dd4d8[_0xa4da('0x1f')]['limit']);_0x23a855[_0xa4da('0xb')]=qs[_0xa4da('0xb')](_0x4dd4d8[_0xa4da('0x1f')][_0xa4da('0xb')]);}_0x23a855[_0xa4da('0x27')]=qs[_0xa4da('0x28')](_0x4dd4d8[_0xa4da('0x1f')][_0xa4da('0x28')]);_0x23a855['where']=qs['filters'](_[_0xa4da('0x29')](_0x4dd4d8[_0xa4da('0x1f')],_0x15f992['filters']),_0x4e7fcb);if(_0x4dd4d8['query'][_0xa4da('0x2a')]){_0x23a855[_0xa4da('0x2b')]=_[_0xa4da('0x2c')](_0x23a855[_0xa4da('0x2b')],{'$or':_[_0xa4da('0x1a')](_0x4e7fcb,function(_0x57a168){if(_0x57a168[_0xa4da('0x1d')]!==_0xa4da('0x2d')){var _0x3f1239={};_0x3f1239[_0x57a168[_0xa4da('0x16')]]={'$like':'%'+_0x4dd4d8[_0xa4da('0x1f')][_0xa4da('0x2a')]+'%'};return _0x3f1239;}})});}_0x23a855=_[_0xa4da('0x2c')]({},_0x23a855,_0x4dd4d8[_0xa4da('0x2e')]);var _0x18c8e6={'where':_0x23a855[_0xa4da('0x2b')]};return db[_0xa4da('0x1b')]['count'](_0x18c8e6)[_0xa4da('0x11')](function(_0x10be09){_0x3a3e5d['count']=_0x10be09;if(_0x4dd4d8['query'][_0xa4da('0x2f')]){_0x23a855['include']=[{'all':!![]}];}return db[_0xa4da('0x1b')][_0xa4da('0x30')](_0x23a855);})[_0xa4da('0x11')](function(_0x150d38){_0x3a3e5d[_0xa4da('0x31')]=_['map'](_0x150d38,function(_0xacecde){if(_0xacecde[_0xa4da('0x32')]===_0xa4da('0x33')){var _0x4a89d4=encryptor[_0xa4da('0x34')](_0xacecde[_0xa4da('0x35')]);_0xacecde[_0xa4da('0x35')]=maskClientSecret(_0x4a89d4);}return _0xacecde;});return _0x3a3e5d;})[_0xa4da('0x11')](respondWithFilteredResult(_0x54a764,_0x23a855))['catch'](handleError(_0x54a764,null));};exports[_0xa4da('0x36')]=function(_0x343098,_0x193b72){var _0x4ef36a={'raw':!![],'where':{'id':_0x343098[_0xa4da('0x37')]['id']}},_0x57492c={};_0x57492c[_0xa4da('0x1e')]=_[_0xa4da('0x38')](db['CloudProvider'][_0xa4da('0x39')]);_0x57492c['query']=_['keys'](_0x343098[_0xa4da('0x1f')]);_0x57492c[_0xa4da('0x20')]=_[_0xa4da('0x21')](_0x57492c[_0xa4da('0x1e')],_0x57492c[_0xa4da('0x1f')]);_0x4ef36a[_0xa4da('0x22')]=_[_0xa4da('0x21')](_0x57492c[_0xa4da('0x1e')],qs['fields'](_0x343098[_0xa4da('0x1f')]['fields']));_0x4ef36a[_0xa4da('0x22')]=_0x4ef36a[_0xa4da('0x22')]['length']?_0x4ef36a[_0xa4da('0x22')]:_0x57492c[_0xa4da('0x1e')];if(_0x343098['query']['includeAll']){_0x4ef36a[_0xa4da('0x3a')]=[{'all':!![]}];}_0x4ef36a=_[_0xa4da('0x2c')]({},_0x4ef36a,_0x343098[_0xa4da('0x2e')]);return db[_0xa4da('0x1b')][_0xa4da('0x3b')](_0x4ef36a)['then'](handleEntityNotFound(_0x193b72,null))['then'](function(_0x3a2d64){if(_0x3a2d64[_0xa4da('0x32')]===_0xa4da('0x33')){var _0x2c3cdd=encryptor[_0xa4da('0x34')](_0x3a2d64['data3']);_0x3a2d64[_0xa4da('0x35')]=maskClientSecret(_0x2c3cdd);}return _0x3a2d64;})[_0xa4da('0x11')](respondWithResult(_0x193b72,null))[_0xa4da('0x3c')](handleError(_0x193b72,null));};exports[_0xa4da('0x3d')]=function(_0x1fa6e1,_0x3ce0be){if(!_0x1fa6e1[_0xa4da('0x3e')][_0xa4da('0x16')])throw new Error(_0xa4da('0x3f'));if(!_0x1fa6e1['body'][_0xa4da('0x32')])throw new Error('Service\x20parameter\x20not\x20specified');var _0xe4265=db['CloudProvider'][_0xa4da('0x39')][_0xa4da('0x32')][_0xa4da('0x40')];if(!_0xe4265[_0xa4da('0x41')](_0x1fa6e1[_0xa4da('0x3e')][_0xa4da('0x32')]))throw new Error(_0xa4da('0x42')+_0xe4265[_0xa4da('0x43')](',\x20'));if(_0x1fa6e1[_0xa4da('0x3e')][_0xa4da('0x32')]==='MicrosoftAzure'&&_0x1fa6e1[_0xa4da('0x3e')][_0xa4da('0x35')]){_0x1fa6e1[_0xa4da('0x3e')]['data3']=encryptor[_0xa4da('0x44')](_0x1fa6e1[_0xa4da('0x3e')][_0xa4da('0x35')]);}return db[_0xa4da('0x1b')]['create'](_0x1fa6e1[_0xa4da('0x3e')],{})[_0xa4da('0x11')](respondWithResult(_0x3ce0be,0xc9))[_0xa4da('0x3c')](handleError(_0x3ce0be,null));};exports['update']=function(_0x32407a,_0x23495b){if(_0x32407a[_0xa4da('0x3e')]['id']){delete _0x32407a[_0xa4da('0x3e')]['id'];}return db[_0xa4da('0x1b')][_0xa4da('0x3b')]({'where':{'id':_0x32407a[_0xa4da('0x37')]['id']}})[_0xa4da('0x11')](handleEntityNotFound(_0x23495b,null))[_0xa4da('0x11')](function(_0xc78927){if(_0xc78927[_0xa4da('0x32')]==='MicrosoftAzure'&&_0x32407a[_0xa4da('0x3e')]['data3']){_0x32407a[_0xa4da('0x3e')]['data3']=encryptor[_0xa4da('0x44')](_0x32407a[_0xa4da('0x3e')]['data3']);}return _0xc78927;})[_0xa4da('0x11')](saveUpdates(_0x32407a[_0xa4da('0x3e')],null))[_0xa4da('0x11')](respondWithResult(_0x23495b,null))[_0xa4da('0x3c')](handleError(_0x23495b,null));};exports[_0xa4da('0x12')]=function(_0x27dab2,_0x3b5c36){return db['CloudProvider'][_0xa4da('0x3b')]({'where':{'id':_0x27dab2[_0xa4da('0x37')]['id']}})[_0xa4da('0x11')](handleEntityNotFound(_0x3b5c36,null))[_0xa4da('0x11')](removeEntity(_0x3b5c36,null))[_0xa4da('0x3c')](handleError(_0x3b5c36,null));};exports[_0xa4da('0x45')]=function(_0x57b7a0,_0x2b32f3){return db[_0xa4da('0x1b')][_0xa4da('0x46')]({'where':{'id':_0x57b7a0[_0xa4da('0x37')]['id']},'raw':!![]})[_0xa4da('0x11')](function(_0x59de18){if(!_0x59de18)return _0x2b32f3[_0xa4da('0x13')](0x194);return{'url':oauth[_0xa4da('0x47')](_0x59de18,_0x57b7a0[_0xa4da('0x48')]['id'])};})[_0xa4da('0x11')](respondWithResult(_0x2b32f3,null))[_0xa4da('0x3c')](handleError(_0x2b32f3,null));};exports[_0xa4da('0x49')]=function(_0x3f85ed,_0xcd254d){var _0x32b119=_0x3f85ed[_0xa4da('0x3e')];var _0x3e05cb;var _0x5a0d0b;if(_0x32b119[_0xa4da('0x14')])throw _0x32b119;redis[_0xa4da('0x4a')](_0x32b119['state'])[_0xa4da('0x11')](function(_0x2031eb){if(!_0x2031eb)throw new Error(_0xa4da('0x4b'));_0x3e05cb=JSON[_0xa4da('0x4c')](_0x2031eb);var _0x1c313d=Buffer[_0xa4da('0x4d')](_0x32b119['state'],_0xa4da('0x4e'))['toString'](_0xa4da('0x4f'));_0x5a0d0b=JSON[_0xa4da('0x4c')](_0x1c313d);if(!oauth['isValidIdToken'](_0x32b119['id_token'],_0x3e05cb['oauth2Claims']))throw new Error('Unable\x20to\x20validate\x20id_token');redis[_0xa4da('0x50')](_0x32b119[_0xa4da('0x51')]);return oauth[_0xa4da('0x52')](_0x32b119[_0xa4da('0x53')],_0x3e05cb);})[_0xa4da('0x11')](function(_0x1be52b){_0x3e05cb[_0xa4da('0x54')]=_0x1be52b[_0xa4da('0x55')];_0x3e05cb['data6']=_0x1be52b[_0xa4da('0x56')];return db['CloudProvider'][_0xa4da('0x10')]({'data5':_0x3e05cb['data5'],'data6':_0x3e05cb[_0xa4da('0x57')]},{'where':{'id':_0x3e05cb['id']}});})['then'](function(){oauth['startRefreshInterval'](_0x3e05cb);socket[_0xa4da('0x58')]('microsoftAuthorization:success',{'id':_0x5a0d0b['id']});return;})['then'](respondWithStatusCode(_0xcd254d,null))[_0xa4da('0x3c')](function(_0x1af8de){if(_0x5a0d0b){socket[_0xa4da('0x58')](_0xa4da('0x59'),{'id':_0x5a0d0b['id']});}if(!_0x3e05cb){logger[_0xa4da('0x14')](_0xa4da('0x5a'),_0x1af8de);return _0xcd254d['status'](0x1f4)['send'](_0x1af8de[_0xa4da('0x5b')]);}logger[_0xa4da('0x14')](_0xa4da('0x5c'),_0x3e05cb['id'],JSON[_0xa4da('0x5d')](_0x1af8de));});};
\ No newline at end of file
+var _0x9e7f=['params','filters','length','include','find','data3','create','Name\x20parameter\x20not\x20specified','service','Service\x20parameter\x20not\x20specified','values','includes','body','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','state','parse','from','base64','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','getOauth2MicrosoftAccessToken','code','data5','access_token','data6','startRefreshInterval','microsoftAuthorization:success','send','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','sendStatus','status','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','error','stack','name','slice','map','CloudProvider','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','MicrosoftAzure','decryptString','catch','show'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x9e7f,0xe0));var _0xf9e7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9e7f[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xf9e7('0x0'));var Redis=require(_0xf9e7('0x1'));var qs=require(_0xf9e7('0x2'));var encryptor=require('../../components/encryptor');var config=require('../../config/environment');var logger=require(_0xf9e7('0x3'))(_0xf9e7('0x4'));var db=require(_0xf9e7('0x5'))['db'];var oauth=require(_0xf9e7('0x6'));config[_0xf9e7('0x7')]=_[_0xf9e7('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf9e7('0x7')]));var redis=new Redis(config[_0xf9e7('0x7')]);function respondWithStatusCode(_0x2c6068,_0x1ab633){_0x1ab633=_0x1ab633||0xcc;return function(_0x5911ca){if(_0x5911ca){return _0x2c6068[_0xf9e7('0x9')](_0x1ab633);}return _0x2c6068[_0xf9e7('0xa')](_0x1ab633)['end']();};}function respondWithResult(_0x86cb6e,_0x465b5d){_0x465b5d=_0x465b5d||0xc8;return function(_0x44e113){if(_0x44e113){return _0x86cb6e[_0xf9e7('0xa')](_0x465b5d)['json'](_0x44e113);}};}function respondWithFilteredResult(_0x3a62e3,_0x3f2df7){return function(_0x48aea2){if(_0x48aea2){var _0x2f4b12=typeof _0x3f2df7[_0xf9e7('0xb')]===_0xf9e7('0xc')&&typeof _0x3f2df7[_0xf9e7('0xd')]==='undefined';var _0x490b7e=_0x48aea2[_0xf9e7('0xe')];var _0x125f5c=_0x2f4b12?0x0:_0x3f2df7[_0xf9e7('0xb')];var _0x410776=_0x2f4b12?_0x48aea2[_0xf9e7('0xe')]:_0x3f2df7[_0xf9e7('0xb')]+_0x3f2df7[_0xf9e7('0xd')];var _0x21680f;if(_0x410776>=_0x490b7e){_0x410776=_0x490b7e;_0x21680f=0xc8;}else{_0x21680f=0xce;}_0x3a62e3['status'](_0x21680f);return _0x3a62e3[_0xf9e7('0xf')](_0xf9e7('0x10'),_0x125f5c+'-'+_0x410776+'/'+_0x490b7e)['json'](_0x48aea2);}return null;};}function saveUpdates(_0x42668d){return function(_0x470412){if(_0x470412){return _0x470412[_0xf9e7('0x11')](_0x42668d)[_0xf9e7('0x12')](function(_0x21a21b){return _0x21a21b;});}return null;};}function removeEntity(_0x528604){return function(_0x3a2bdf){if(_0x3a2bdf){return _0x3a2bdf[_0xf9e7('0x13')]()[_0xf9e7('0x12')](function(){_0x528604[_0xf9e7('0xa')](0xcc)[_0xf9e7('0x14')]();});}};}function handleEntityNotFound(_0x1842a8){return function(_0x13b633){if(!_0x13b633){_0x1842a8[_0xf9e7('0x9')](0x194);}return _0x13b633;};}function handleError(_0x4a2ee3,_0x3938ae){_0x3938ae=_0x3938ae||0x1f4;return function(_0x313114){logger[_0xf9e7('0x15')](_0x313114[_0xf9e7('0x16')]);if(_0x313114[_0xf9e7('0x17')]){delete _0x313114[_0xf9e7('0x17')];}_0x4a2ee3[_0xf9e7('0xa')](_0x3938ae)['send'](_0x313114);};}function maskClientSecret(_0x5d2c61){return _['padEnd'](_0x5d2c61[_0xf9e7('0x18')](0x0,0x3),0x14,'*');}exports['index']=function(_0x3e8b41,_0x52c537){var _0xaf5f49={},_0x3126e3={},_0x482b8d={'count':0x0,'rows':[]};var _0x5a0b84=_[_0xf9e7('0x19')](db[_0xf9e7('0x1a')][_0xf9e7('0x1b')],function(_0xa7b357){return{'name':_0xa7b357[_0xf9e7('0x1c')],'type':_0xa7b357['type'][_0xf9e7('0x1d')]};});_0x3126e3[_0xf9e7('0x1e')]=_[_0xf9e7('0x19')](_0x5a0b84,_0xf9e7('0x17'));_0x3126e3[_0xf9e7('0x1f')]=_[_0xf9e7('0x20')](_0x3e8b41[_0xf9e7('0x1f')]);_0x3126e3['filters']=_['intersection'](_0x3126e3[_0xf9e7('0x1e')],_0x3126e3['query']);_0xaf5f49['attributes']=_[_0xf9e7('0x21')](_0x3126e3['model'],qs['fields'](_0x3e8b41['query'][_0xf9e7('0x22')]));_0xaf5f49['attributes']=_0xaf5f49['attributes']['length']?_0xaf5f49[_0xf9e7('0x23')]:_0x3126e3['model'];if(!_0x3e8b41[_0xf9e7('0x1f')][_0xf9e7('0x24')]('nolimit')){_0xaf5f49['limit']=qs[_0xf9e7('0xd')](_0x3e8b41[_0xf9e7('0x1f')][_0xf9e7('0xd')]);_0xaf5f49[_0xf9e7('0xb')]=qs['offset'](_0x3e8b41['query'][_0xf9e7('0xb')]);}_0xaf5f49['order']=qs[_0xf9e7('0x25')](_0x3e8b41[_0xf9e7('0x1f')]['sort']);_0xaf5f49[_0xf9e7('0x26')]=qs['filters'](_[_0xf9e7('0x27')](_0x3e8b41[_0xf9e7('0x1f')],_0x3126e3['filters']),_0x5a0b84);if(_0x3e8b41[_0xf9e7('0x1f')][_0xf9e7('0x28')]){_0xaf5f49['where']=_['merge'](_0xaf5f49[_0xf9e7('0x26')],{'$or':_[_0xf9e7('0x19')](_0x5a0b84,function(_0x3605a2){if(_0x3605a2[_0xf9e7('0x29')]!==_0xf9e7('0x2a')){var _0x1905ff={};_0x1905ff[_0x3605a2[_0xf9e7('0x17')]]={'$like':'%'+_0x3e8b41['query']['filter']+'%'};return _0x1905ff;}})});}_0xaf5f49=_[_0xf9e7('0x2b')]({},_0xaf5f49,_0x3e8b41[_0xf9e7('0x2c')]);var _0x4c3865={'where':_0xaf5f49['where']};return db[_0xf9e7('0x1a')]['count'](_0x4c3865)[_0xf9e7('0x12')](function(_0x53551d){_0x482b8d[_0xf9e7('0xe')]=_0x53551d;if(_0x3e8b41[_0xf9e7('0x1f')][_0xf9e7('0x2d')]){_0xaf5f49['include']=[{'all':!![]}];}return db[_0xf9e7('0x1a')][_0xf9e7('0x2e')](_0xaf5f49);})[_0xf9e7('0x12')](function(_0x32766f){_0x482b8d[_0xf9e7('0x2f')]=_['map'](_0x32766f,function(_0x2a7655){if(_0x2a7655['service']===_0xf9e7('0x30')){var _0x45f372=encryptor[_0xf9e7('0x31')](_0x2a7655['data3']);_0x2a7655['data3']=maskClientSecret(_0x45f372);}return _0x2a7655;});return _0x482b8d;})[_0xf9e7('0x12')](respondWithFilteredResult(_0x52c537,_0xaf5f49))[_0xf9e7('0x32')](handleError(_0x52c537,null));};exports[_0xf9e7('0x33')]=function(_0x50b069,_0x3aaefb){var _0x19dc2a={'raw':!![],'where':{'id':_0x50b069[_0xf9e7('0x34')]['id']}},_0x5d3589={};_0x5d3589[_0xf9e7('0x1e')]=_[_0xf9e7('0x20')](db[_0xf9e7('0x1a')]['rawAttributes']);_0x5d3589[_0xf9e7('0x1f')]=_['keys'](_0x50b069[_0xf9e7('0x1f')]);_0x5d3589[_0xf9e7('0x35')]=_[_0xf9e7('0x21')](_0x5d3589['model'],_0x5d3589[_0xf9e7('0x1f')]);_0x19dc2a['attributes']=_['intersection'](_0x5d3589[_0xf9e7('0x1e')],qs[_0xf9e7('0x22')](_0x50b069['query'][_0xf9e7('0x22')]));_0x19dc2a['attributes']=_0x19dc2a[_0xf9e7('0x23')][_0xf9e7('0x36')]?_0x19dc2a['attributes']:_0x5d3589[_0xf9e7('0x1e')];if(_0x50b069[_0xf9e7('0x1f')][_0xf9e7('0x2d')]){_0x19dc2a[_0xf9e7('0x37')]=[{'all':!![]}];}_0x19dc2a=_[_0xf9e7('0x2b')]({},_0x19dc2a,_0x50b069[_0xf9e7('0x2c')]);return db[_0xf9e7('0x1a')][_0xf9e7('0x38')](_0x19dc2a)[_0xf9e7('0x12')](handleEntityNotFound(_0x3aaefb,null))['then'](function(_0x9ed4dd){if(_0x9ed4dd['service']===_0xf9e7('0x30')){var _0x1d24f0=encryptor[_0xf9e7('0x31')](_0x9ed4dd[_0xf9e7('0x39')]);_0x9ed4dd[_0xf9e7('0x39')]=maskClientSecret(_0x1d24f0);}return _0x9ed4dd;})[_0xf9e7('0x12')](respondWithResult(_0x3aaefb,null))[_0xf9e7('0x32')](handleError(_0x3aaefb,null));};exports[_0xf9e7('0x3a')]=function(_0x3f6eb3,_0x607c42){if(!_0x3f6eb3['body'][_0xf9e7('0x17')])throw new Error(_0xf9e7('0x3b'));if(!_0x3f6eb3['body'][_0xf9e7('0x3c')])throw new Error(_0xf9e7('0x3d'));var _0x105186=db[_0xf9e7('0x1a')][_0xf9e7('0x1b')]['service'][_0xf9e7('0x3e')];if(!_0x105186[_0xf9e7('0x3f')](_0x3f6eb3[_0xf9e7('0x40')][_0xf9e7('0x3c')]))throw new Error(_0xf9e7('0x41')+_0x105186['join'](',\x20'));if(_0x3f6eb3[_0xf9e7('0x40')][_0xf9e7('0x3c')]===_0xf9e7('0x30')&&_0x3f6eb3[_0xf9e7('0x40')][_0xf9e7('0x39')]){_0x3f6eb3['body'][_0xf9e7('0x39')]=encryptor[_0xf9e7('0x42')](_0x3f6eb3[_0xf9e7('0x40')][_0xf9e7('0x39')]);}return db[_0xf9e7('0x1a')][_0xf9e7('0x3a')](_0x3f6eb3[_0xf9e7('0x40')],{})['then'](respondWithResult(_0x607c42,0xc9))[_0xf9e7('0x32')](handleError(_0x607c42,null));};exports[_0xf9e7('0x11')]=function(_0xdc2d47,_0x4e9d9c){if(_0xdc2d47[_0xf9e7('0x40')]['id']){delete _0xdc2d47[_0xf9e7('0x40')]['id'];}return db[_0xf9e7('0x1a')]['find']({'where':{'id':_0xdc2d47[_0xf9e7('0x34')]['id']}})['then'](handleEntityNotFound(_0x4e9d9c,null))['then'](function(_0x3cbf6c){if(_0x3cbf6c[_0xf9e7('0x3c')]==='MicrosoftAzure'&&_0xdc2d47[_0xf9e7('0x40')]['data3']){_0xdc2d47[_0xf9e7('0x40')]['data3']=encryptor['encryptString'](_0xdc2d47[_0xf9e7('0x40')][_0xf9e7('0x39')]);}return _0x3cbf6c;})['then'](saveUpdates(_0xdc2d47[_0xf9e7('0x40')],null))['then'](respondWithResult(_0x4e9d9c,null))[_0xf9e7('0x32')](handleError(_0x4e9d9c,null));};exports[_0xf9e7('0x13')]=function(_0x42b438,_0x47ce7f){return db[_0xf9e7('0x1a')][_0xf9e7('0x38')]({'where':{'id':_0x42b438[_0xf9e7('0x34')]['id']}})[_0xf9e7('0x12')](handleEntityNotFound(_0x47ce7f,null))['then'](removeEntity(_0x47ce7f,null))[_0xf9e7('0x32')](handleError(_0x47ce7f,null));};exports[_0xf9e7('0x43')]=function(_0x401691,_0x1279c9){return db[_0xf9e7('0x1a')][_0xf9e7('0x44')]({'where':{'id':_0x401691[_0xf9e7('0x34')]['id']},'raw':!![]})[_0xf9e7('0x12')](function(_0x2a275f){if(!_0x2a275f)return _0x1279c9['sendStatus'](0x194);return{'url':oauth[_0xf9e7('0x45')](_0x2a275f,_0x401691[_0xf9e7('0x46')]['id'])};})['then'](respondWithResult(_0x1279c9,null))[_0xf9e7('0x32')](handleError(_0x1279c9,null));};exports[_0xf9e7('0x47')]=function(_0x409f2a,_0xcc54e2){var _0xfbe9bd=_0x409f2a[_0xf9e7('0x40')];var _0x5b97e2;var _0x445a79;if(_0xfbe9bd[_0xf9e7('0x15')])throw _0xfbe9bd;redis[_0xf9e7('0x48')](_0xfbe9bd[_0xf9e7('0x49')])['then'](function(_0x2b66c1){if(!_0x2b66c1)throw new Error('Invalid\x20state\x20parameter');_0x5b97e2=JSON[_0xf9e7('0x4a')](_0x2b66c1);var _0x3bc84c=Buffer[_0xf9e7('0x4b')](_0xfbe9bd[_0xf9e7('0x49')],_0xf9e7('0x4c'))['toString'](_0xf9e7('0x4d'));_0x445a79=JSON[_0xf9e7('0x4a')](_0x3bc84c);if(!oauth[_0xf9e7('0x4e')](_0xfbe9bd[_0xf9e7('0x4f')],_0x5b97e2[_0xf9e7('0x50')]))throw new Error(_0xf9e7('0x51'));redis['del'](_0xfbe9bd[_0xf9e7('0x49')]);return oauth[_0xf9e7('0x52')](_0xfbe9bd[_0xf9e7('0x53')],_0x5b97e2);})[_0xf9e7('0x12')](function(_0x95563c){_0x5b97e2[_0xf9e7('0x54')]=_0x95563c[_0xf9e7('0x55')];_0x5b97e2[_0xf9e7('0x56')]=_0x95563c['refresh_token'];return db[_0xf9e7('0x1a')][_0xf9e7('0x11')]({'data5':_0x5b97e2[_0xf9e7('0x54')],'data6':_0x5b97e2[_0xf9e7('0x56')]},{'where':{'id':_0x5b97e2['id']}});})['then'](function(){oauth[_0xf9e7('0x57')](_0x5b97e2);socket['emit'](_0xf9e7('0x58'),{'id':_0x445a79['id']});return;})[_0xf9e7('0x12')](respondWithStatusCode(_0xcc54e2,null))[_0xf9e7('0x32')](function(_0x481db2){if(_0x445a79){socket['emit']('microsoftAuthorization:error',{'id':_0x445a79['id']});}if(!_0x5b97e2){logger[_0xf9e7('0x15')]('Invalid\x20authentication\x20state\x20parameter',_0x481db2);return _0xcc54e2[_0xf9e7('0xa')](0x1f4)[_0xf9e7('0x59')](_0x481db2['message']);}logger[_0xf9e7('0x15')](_0xf9e7('0x5a'),_0x5b97e2['id'],JSON[_0xf9e7('0x5b')](_0x481db2));});};
\ No newline at end of file
index f905e5c..74fe8aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e35=['rimraf','../../config/environment','./cloudProvider.attributes','define','CloudProvider','cloud_providers','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x17d64d,_0x327d53){var _0x17eb46=function(_0x89f708){while(--_0x89f708){_0x17d64d['push'](_0x17d64d['shift']());}};_0x17eb46(++_0x327d53);}(_0x2e35,0xe6));var _0x52e3=function(_0x561913,_0x2f3c72){_0x561913=_0x561913-0x0;var _0x23487f=_0x2e35[_0x561913];return _0x23487f;};'use strict';var _=require(_0x52e3('0x0'));var util=require(_0x52e3('0x1'));var logger=require(_0x52e3('0x2'))(_0x52e3('0x3'));var moment=require(_0x52e3('0x4'));var BPromise=require(_0x52e3('0x5'));var rp=require(_0x52e3('0x6'));var fs=require('fs');var path=require(_0x52e3('0x7'));var rimraf=require(_0x52e3('0x8'));var config=require(_0x52e3('0x9'));var attributes=require(_0x52e3('0xa'));module['exports']=function(_0x2c2a04,_0x55326f){return _0x2c2a04[_0x52e3('0xb')](_0x52e3('0xc'),attributes,{'tableName':_0x52e3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x29f3=['CloudProvider','cloud_providers','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x12b26a,_0x455760){var _0x1ad356=function(_0x2dd5cf){while(--_0x2dd5cf){_0x12b26a['push'](_0x12b26a['shift']());}};_0x1ad356(++_0x455760);}(_0x29f3,0x19a));var _0x329f=function(_0x589eee,_0x391826){_0x589eee=_0x589eee-0x0;var _0xb91c8a=_0x29f3[_0x589eee];return _0xb91c8a;};'use strict';var _=require(_0x329f('0x0'));var util=require(_0x329f('0x1'));var logger=require(_0x329f('0x2'))(_0x329f('0x3'));var moment=require('moment');var BPromise=require(_0x329f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x329f('0x5'));var rimraf=require(_0x329f('0x6'));var config=require(_0x329f('0x7'));var attributes=require('./cloudProvider.attributes');module[_0x329f('0x8')]=function(_0x2858f1,_0xfc78e0){return _0x2858f1[_0x329f('0x9')](_0x329f('0xa'),attributes,{'tableName':_0x329f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d57eff4..51ac6b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0433=['hex','client_id','response_type','redirect_uri','response_mode','form_post','scope','state','nonce','prompt','login','key','value','oauth2Claims','replace','oauth2/','data1','set','decode','payload','issuer','aud','audience','unix','exp','resolve','then','CloudProvider','findOne','refresh_token','data6','data4','decryptString','data3','data2','data5','access_token','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','POST','intervals','bind','findAll','all','inspect','exports','lodash','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','api','../../mysqldb','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','/token','map','type','Dynamics365','push','/.default','join','Outlook365','{TENANT_ID}','id_token','from','stringify','base64','randomBytes'];(function(_0x420ab0,_0x500c31){var _0x5b29dd=function(_0x48dab0){while(--_0x48dab0){_0x420ab0['push'](_0x420ab0['shift']());}};_0x5b29dd(++_0x500c31);}(_0x0433,0xd5));var _0x3043=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x0433[_0x4f9b18];return _0x29f20c;};'use strict';var _=require(_0x3043('0x0'));var crypto=require('crypto');var jwt=require(_0x3043('0x1'));var moment=require(_0x3043('0x2'));var Redis=require(_0x3043('0x3'));var rp=require(_0x3043('0x4'));var util=require(_0x3043('0x5'));var encryptor=require(_0x3043('0x6'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x3043('0x7'));var schedule=require('../../config/schedule/cloud-provider');var db=require(_0x3043('0x8'))['db'];config[_0x3043('0x9')]=_[_0x3043('0xa')](config[_0x3043('0x9')],{'host':_0x3043('0xb'),'port':0x18eb});var redis=new Redis(config[_0x3043('0x9')]);var MICROSOFT_AUTH_URL=_0x3043('0xc');var AZURE_AUTH_SCOPES={'Outlook365':[_0x3043('0xd'),'profile','email',_0x3043('0xe'),_0x3043('0xf'),_0x3043('0x10'),_0x3043('0x11')],'Dynamics365':[_0x3043('0xd'),_0x3043('0xe')]};var MICROSOFT_AUTH_ENDPOINT=_0x3043('0x12');var MICROSOFT_TOKEN_ENDPOINT=_0x3043('0x13');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x841923){var _0x2ca88e=_[_0x3043('0x14')](AZURE_AUTH_SCOPES[_0x841923[_0x3043('0x15')]]);if(_0x841923['type']===_0x3043('0x16'))_0x2ca88e[_0x3043('0x17')](_0x841923['data7']+_0x3043('0x18'));return _0x2ca88e[_0x3043('0x19')]('\x20');}function getAccessTokenScope(_0xda3a23){if(_0xda3a23[_0x3043('0x15')]===_0x3043('0x1a'))return _0x3043('0xf');if(_0xda3a23[_0x3043('0x15')]===_0x3043('0x16'))return _0xda3a23['data7']+_0x3043('0x18');}function generateMicrosoftAuthorizationUrl(_0x7c3a66,_0x26e90e){var _0x4d3568=MICROSOFT_AUTH_URL['replace'](_0x3043('0x1b'),_0x7c3a66['data2']);var _0x27c23e=['code',_0x3043('0x1c')];var _0x1b74b6=Buffer[_0x3043('0x1d')](JSON[_0x3043('0x1e')]({'id':_0x26e90e}))['toString'](_0x3043('0x1f'));var _0x1dc9cf=crypto[_0x3043('0x20')](0x10)['toString'](_0x3043('0x21'));var _0xc49a70=getAuthorizationScopes(_0x7c3a66);var _0x4e226c=[{'key':_0x3043('0x22'),'value':_0x7c3a66['data1']},{'key':_0x3043('0x23'),'value':encodeURIComponent(_0x27c23e[_0x3043('0x19')]('\x20'))},{'key':_0x3043('0x24'),'value':_0x7c3a66['data4']},{'key':_0x3043('0x25'),'value':_0x3043('0x26')},{'key':_0x3043('0x27'),'value':encodeURIComponent(_0xc49a70)},{'key':_0x3043('0x28'),'value':_0x1b74b6},{'key':_0x3043('0x29'),'value':_0x1dc9cf},{'key':_0x3043('0x2a'),'value':_0x3043('0x2b')}];var _0x1aef41=_0x4d3568+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x4e226c,function(_0x1f395d){return _0x1f395d[_0x3043('0x2c')]+'='+_0x1f395d[_0x3043('0x2d')];})[_0x3043('0x19')]('&');_0x7c3a66[_0x3043('0x2e')]={'issuer':_0x4d3568[_0x3043('0x2f')](_0x3043('0x30'),''),'audience':_0x7c3a66[_0x3043('0x31')],'state':_0x1b74b6,'nonce':_0x1dc9cf};redis[_0x3043('0x32')](_0x1b74b6,JSON[_0x3043('0x1e')](_0x7c3a66));return _0x1aef41;}function isValidIdToken(_0x1b0220,_0x26d0d9){try{var _0x3d66ea=jwt[_0x3043('0x33')](_0x1b0220,{'complete':!![]});var _0x24c081=_0x3d66ea[_0x3043('0x34')];if(_0x24c081['iss']!==_0x26d0d9[_0x3043('0x35')])return![];if(_0x24c081[_0x3043('0x36')]!==_0x26d0d9[_0x3043('0x37')])return![];if(_0x24c081[_0x3043('0x29')]!==_0x26d0d9[_0x3043('0x29')])return![];if(moment()['isAfter'](moment[_0x3043('0x38')](_0x24c081[_0x3043('0x39')])))return![];return!![];}catch(_0x4972bb){throw _0x4972bb;}}function refreshOauth2MicrosoftAccessToken(_0x3466e7){return Promise[_0x3043('0x3a')]()[_0x3043('0x3b')](function(){if(_0x3466e7['data3'])return _0x3466e7;return db[_0x3043('0x3c')][_0x3043('0x3d')]({'where':{'id':_0x3466e7['id']},'raw':!![]});})[_0x3043('0x3b')](function(_0x2c3dce){var _0xe78a2={'grant_type':_0x3043('0x3e'),'refresh_token':_0x2c3dce[_0x3043('0x3f')],'scope':getAccessTokenScope(_0x2c3dce),'redirect_uri':_0x2c3dce[_0x3043('0x40')],'client_id':_0x2c3dce['data1'],'client_secret':encryptor[_0x3043('0x41')](_0x2c3dce[_0x3043('0x42')])};var _0x342c90={'method':'POST','uri':MICROSOFT_AUTH_URL['replace'](_0x3043('0x1b'),_0x2c3dce[_0x3043('0x43')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xe78a2,'json':!![]};return rp(_0x342c90);})[_0x3043('0x3b')](function(_0x12581c){_0x3466e7[_0x3043('0x44')]=_0x12581c[_0x3043('0x45')];_0x3466e7[_0x3043('0x3f')]=_0x12581c[_0x3043('0x3e')];return db[_0x3043('0x3c')][_0x3043('0x46')]({'data5':_0x3466e7[_0x3043('0x44')],'data6':_0x3466e7[_0x3043('0x3f')]},{'where':{'id':_0x3466e7['id']}});})[_0x3043('0x3b')](function(){return _0x3466e7;})[_0x3043('0x47')](function(_0x318de2){logger[_0x3043('0x48')](_0x3043('0x49'),_0x3466e7['id'],_0x318de2);});}function getOauth2MicrosoftAccessToken(_0x4e98d1,_0xb75226){var _0x33bfbd={'grant_type':_0x3043('0x4a'),'code':_0x4e98d1,'scope':getAccessTokenScope(_0xb75226),'redirect_uri':_0xb75226[_0x3043('0x40')],'client_id':_0xb75226[_0x3043('0x31')],'client_secret':encryptor['decryptString'](_0xb75226[_0x3043('0x42')])};var _0x105f89={'method':_0x3043('0x4b'),'uri':MICROSOFT_AUTH_URL['replace'](_0x3043('0x1b'),_0xb75226[_0x3043('0x43')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x33bfbd,'json':!![]};return rp(_0x105f89);}function startRefreshInterval(_0x13326f){var _0x46a3f3=schedule[_0x3043('0x4c')];if(_0x46a3f3[_0x13326f['id']])clearInterval(_0x46a3f3[_0x13326f['id']]);_0x46a3f3[_0x13326f['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x3043('0x4d')](this,{'id':_0x13326f['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x3043('0x4c')]=_0x46a3f3;}function startAllRefreshIntervals(){return db[_0x3043('0x3c')][_0x3043('0x4e')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x3043('0x3b')](function(_0x278744){var _0x73221f=_0x278744[_0x3043('0x14')](function(_0x3c865e){return refreshOauth2MicrosoftAccessToken(_0x3c865e)['then'](function(_0x55b145){startRefreshInterval(_0x55b145);});});return Promise[_0x3043('0x4f')](_0x73221f);})[_0x3043('0x47')](function(_0x36ac9c){var _0x152e5a=_0x36ac9c?util[_0x3043('0x50')](_0x36ac9c,{'showHidden':![],'depth':null}):'';logger['error']('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x152e5a);});}module[_0x3043('0x51')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x80bb=['https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','openid','/authorize','Dynamics365','data7','/.default','join','type','replace','{TENANT_ID}','id_token','from','stringify','toString','hex','client_id','redirect_uri','data4','response_mode','form_post','scope','state','prompt','login','key','data1','set','decode','iss','audience','nonce','isAfter','unix','resolve','data3','CloudProvider','findOne','then','data6','decryptString','POST','data2','data5','access_token','refresh_token','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','bind','findAll','map','all','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','../../config/schedule/cloud-provider','../../mysqldb','defaults','localhost','redis','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','profile'];(function(_0x59ec69,_0x157939){var _0x2162fd=function(_0x5a6960){while(--_0x5a6960){_0x59ec69['push'](_0x59ec69['shift']());}};_0x2162fd(++_0x157939);}(_0x80bb,0xcd));var _0xb80b=function(_0x21dc61,_0x4f3889){_0x21dc61=_0x21dc61-0x0;var _0x8fa6fb=_0x80bb[_0x21dc61];return _0x8fa6fb;};'use strict';var _=require(_0xb80b('0x0'));var crypto=require('crypto');var jwt=require(_0xb80b('0x1'));var moment=require(_0xb80b('0x2'));var Redis=require(_0xb80b('0x3'));var rp=require(_0xb80b('0x4'));var util=require(_0xb80b('0x5'));var encryptor=require(_0xb80b('0x6'));var config=require('../../config/environment');var logger=require('../../config/logger')('api');var schedule=require(_0xb80b('0x7'));var db=require(_0xb80b('0x8'))['db'];config['redis']=_[_0xb80b('0x9')](config['redis'],{'host':_0xb80b('0xa'),'port':0x18eb});var redis=new Redis(config[_0xb80b('0xb')]);var MICROSOFT_AUTH_URL=_0xb80b('0xc');var AZURE_AUTH_SCOPES={'Outlook365':['openid',_0xb80b('0xd'),'email','offline_access',_0xb80b('0xe'),'https://outlook.office.com/POP.AccessAsUser.All',_0xb80b('0xf')],'Dynamics365':[_0xb80b('0x10'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0xb80b('0x11');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x44f3d1){var _0x346e6b=_['map'](AZURE_AUTH_SCOPES[_0x44f3d1['type']]);if(_0x44f3d1['type']===_0xb80b('0x12'))_0x346e6b['push'](_0x44f3d1[_0xb80b('0x13')]+_0xb80b('0x14'));return _0x346e6b[_0xb80b('0x15')]('\x20');}function getAccessTokenScope(_0x29b120){if(_0x29b120[_0xb80b('0x16')]==='Outlook365')return _0xb80b('0xe');if(_0x29b120[_0xb80b('0x16')]===_0xb80b('0x12'))return _0x29b120['data7']+_0xb80b('0x14');}function generateMicrosoftAuthorizationUrl(_0x2ae831,_0x189493){var _0xe38205=MICROSOFT_AUTH_URL[_0xb80b('0x17')](_0xb80b('0x18'),_0x2ae831['data2']);var _0x7e1fbb=['code',_0xb80b('0x19')];var _0x460302=Buffer[_0xb80b('0x1a')](JSON[_0xb80b('0x1b')]({'id':_0x189493}))[_0xb80b('0x1c')]('base64');var _0x5b880a=crypto['randomBytes'](0x10)[_0xb80b('0x1c')](_0xb80b('0x1d'));var _0x1023b9=getAuthorizationScopes(_0x2ae831);var _0x46c5e7=[{'key':_0xb80b('0x1e'),'value':_0x2ae831['data1']},{'key':'response_type','value':encodeURIComponent(_0x7e1fbb[_0xb80b('0x15')]('\x20'))},{'key':_0xb80b('0x1f'),'value':_0x2ae831[_0xb80b('0x20')]},{'key':_0xb80b('0x21'),'value':_0xb80b('0x22')},{'key':_0xb80b('0x23'),'value':encodeURIComponent(_0x1023b9)},{'key':_0xb80b('0x24'),'value':_0x460302},{'key':'nonce','value':_0x5b880a},{'key':_0xb80b('0x25'),'value':_0xb80b('0x26')}];var _0x477afd=_0xe38205+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x46c5e7,function(_0x48db2e){return _0x48db2e[_0xb80b('0x27')]+'='+_0x48db2e['value'];})[_0xb80b('0x15')]('&');_0x2ae831['oauth2Claims']={'issuer':_0xe38205[_0xb80b('0x17')]('oauth2/',''),'audience':_0x2ae831[_0xb80b('0x28')],'state':_0x460302,'nonce':_0x5b880a};redis[_0xb80b('0x29')](_0x460302,JSON[_0xb80b('0x1b')](_0x2ae831));return _0x477afd;}function isValidIdToken(_0x40db3d,_0x355bc1){try{var _0x146f36=jwt[_0xb80b('0x2a')](_0x40db3d,{'complete':!![]});var _0x202947=_0x146f36['payload'];if(_0x202947[_0xb80b('0x2b')]!==_0x355bc1['issuer'])return![];if(_0x202947['aud']!==_0x355bc1[_0xb80b('0x2c')])return![];if(_0x202947[_0xb80b('0x2d')]!==_0x355bc1[_0xb80b('0x2d')])return![];if(moment()[_0xb80b('0x2e')](moment[_0xb80b('0x2f')](_0x202947['exp'])))return![];return!![];}catch(_0x93694b){throw _0x93694b;}}function refreshOauth2MicrosoftAccessToken(_0x31868a){return Promise[_0xb80b('0x30')]()['then'](function(){if(_0x31868a[_0xb80b('0x31')])return _0x31868a;return db[_0xb80b('0x32')][_0xb80b('0x33')]({'where':{'id':_0x31868a['id']},'raw':!![]});})[_0xb80b('0x34')](function(_0x5b4ce3){var _0x329662={'grant_type':'refresh_token','refresh_token':_0x5b4ce3[_0xb80b('0x35')],'scope':getAccessTokenScope(_0x5b4ce3),'redirect_uri':_0x5b4ce3[_0xb80b('0x20')],'client_id':_0x5b4ce3[_0xb80b('0x28')],'client_secret':encryptor[_0xb80b('0x36')](_0x5b4ce3[_0xb80b('0x31')])};var _0x380daf={'method':_0xb80b('0x37'),'uri':MICROSOFT_AUTH_URL['replace'](_0xb80b('0x18'),_0x5b4ce3[_0xb80b('0x38')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x329662,'json':!![]};return rp(_0x380daf);})[_0xb80b('0x34')](function(_0x5d6840){_0x31868a[_0xb80b('0x39')]=_0x5d6840[_0xb80b('0x3a')];_0x31868a[_0xb80b('0x35')]=_0x5d6840[_0xb80b('0x3b')];return db[_0xb80b('0x32')][_0xb80b('0x3c')]({'data5':_0x31868a[_0xb80b('0x39')],'data6':_0x31868a['data6']},{'where':{'id':_0x31868a['id']}});})[_0xb80b('0x34')](function(){return _0x31868a;})[_0xb80b('0x3d')](function(_0x1ad619){logger[_0xb80b('0x3e')](_0xb80b('0x3f'),_0x31868a['id'],_0x1ad619);});}function getOauth2MicrosoftAccessToken(_0x22eeed,_0x1674b8){var _0x50b08f={'grant_type':_0xb80b('0x40'),'code':_0x22eeed,'scope':getAccessTokenScope(_0x1674b8),'redirect_uri':_0x1674b8['data4'],'client_id':_0x1674b8[_0xb80b('0x28')],'client_secret':encryptor[_0xb80b('0x36')](_0x1674b8[_0xb80b('0x31')])};var _0x523357={'method':'POST','uri':MICROSOFT_AUTH_URL[_0xb80b('0x17')](_0xb80b('0x18'),_0x1674b8[_0xb80b('0x38')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x50b08f,'json':!![]};return rp(_0x523357);}function startRefreshInterval(_0x434f68){var _0x598119=schedule[_0xb80b('0x41')];if(_0x598119[_0x434f68['id']])clearInterval(_0x598119[_0x434f68['id']]);_0x598119[_0x434f68['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xb80b('0x42')](this,{'id':_0x434f68['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x598119;}function startAllRefreshIntervals(){return db['CloudProvider'][_0xb80b('0x43')]({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x2a888e){var _0x50a455=_0x2a888e[_0xb80b('0x44')](function(_0x6feeed){return refreshOauth2MicrosoftAccessToken(_0x6feeed)[_0xb80b('0x34')](function(_0x26ebe6){startRefreshInterval(_0x26ebe6);});});return Promise[_0xb80b('0x45')](_0x50a455);})['catch'](function(_0x200dfe){var _0x293434=_0x200dfe?util[_0xb80b('0x46')](_0x200dfe,{'showHidden':![],'depth':null}):'';logger[_0xb80b('0x3e')](_0xb80b('0x47'),_0x293434);});}module[_0xb80b('0x48')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 7240584..f8d77f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb511=['error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x263c58,_0x252bb8){var _0x5232aa=function(_0x25febe){while(--_0x25febe){_0x263c58['push'](_0x263c58['shift']());}};_0x5232aa(++_0x252bb8);}(_0xb511,0x165));var _0x1b51=function(_0x182192,_0x28f6fa){_0x182192=_0x182192-0x0;var _0x1a1293=_0xb511[_0x182192];return _0x1a1293;};'use strict';var _=require(_0x1b51('0x0'));var util=require(_0x1b51('0x1'));var moment=require(_0x1b51('0x2'));var BPromise=require('bluebird');var rs=require(_0x1b51('0x3'));var fs=require('fs');var Redis=require(_0x1b51('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1b51('0x5'));var logger=require(_0x1b51('0x6'))(_0x1b51('0x7'));var config=require('../../config/environment');var jayson=require(_0x1b51('0x8'));var client=jayson[_0x1b51('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x475add,_0x43c14c,_0x5e7ece){return new BPromise(function(_0xfa46a3,_0x1690c9){return client[_0x1b51('0xa')](_0x475add,_0x5e7ece)[_0x1b51('0xb')](function(_0x3ceabe){logger[_0x1b51('0xc')](_0x1b51('0xd'),_0x43c14c,_0x1b51('0xe'));logger['debug'](_0x1b51('0xf'),_0x43c14c,_0x1b51('0xe'),JSON[_0x1b51('0x10')](_0x3ceabe));if(_0x3ceabe[_0x1b51('0x11')]){if(_0x3ceabe[_0x1b51('0x11')][_0x1b51('0x12')]===0x1f4){logger['error'](_0x1b51('0xd'),_0x43c14c,_0x3ceabe[_0x1b51('0x11')][_0x1b51('0x13')]);return _0x1690c9(_0x3ceabe[_0x1b51('0x11')][_0x1b51('0x13')]);}logger[_0x1b51('0x11')](_0x1b51('0xd'),_0x43c14c,_0x3ceabe['error'][_0x1b51('0x13')]);return _0xfa46a3(_0x3ceabe['error']['message']);}else{logger[_0x1b51('0xc')](_0x1b51('0xd'),_0x43c14c,'request\x20sent');_0xfa46a3(_0x3ceabe[_0x1b51('0x14')][_0x1b51('0x13')]);}})[_0x1b51('0x15')](function(_0x4ea5e3){logger[_0x1b51('0x11')](_0x1b51('0xd'),_0x43c14c,_0x4ea5e3);_0x1690c9(_0x4ea5e3);});});}
\ No newline at end of file
+var _0xb0ee=['../../config/environment','client','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4d8998,_0x5b603a){var _0x4f1a3c=function(_0x3d5a02){while(--_0x3d5a02){_0x4d8998['push'](_0x4d8998['shift']());}};_0x4f1a3c(++_0x5b603a);}(_0xb0ee,0x18f));var _0xeb0e=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0xb0ee[_0x4e9d3c];return _0x2d0825;};'use strict';var _=require('lodash');var util=require(_0xeb0e('0x0'));var moment=require(_0xeb0e('0x1'));var BPromise=require(_0xeb0e('0x2'));var rs=require(_0xeb0e('0x3'));var fs=require('fs');var Redis=require(_0xeb0e('0x4'));var db=require(_0xeb0e('0x5'))['db'];var utils=require(_0xeb0e('0x6'));var logger=require(_0xeb0e('0x7'))(_0xeb0e('0x8'));var config=require(_0xeb0e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xeb0e('0xa')][_0xeb0e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x423095,_0x3e7872,_0x572ee1){return new BPromise(function(_0x3b3c6e,_0x1dcf56){return client[_0xeb0e('0xc')](_0x423095,_0x572ee1)[_0xeb0e('0xd')](function(_0x2b90ba){logger[_0xeb0e('0xe')](_0xeb0e('0xf'),_0x3e7872,_0xeb0e('0x10'));logger[_0xeb0e('0x11')](_0xeb0e('0x12'),_0x3e7872,_0xeb0e('0x10'),JSON[_0xeb0e('0x13')](_0x2b90ba));if(_0x2b90ba[_0xeb0e('0x14')]){if(_0x2b90ba[_0xeb0e('0x14')][_0xeb0e('0x15')]===0x1f4){logger[_0xeb0e('0x14')](_0xeb0e('0xf'),_0x3e7872,_0x2b90ba[_0xeb0e('0x14')]['message']);return _0x1dcf56(_0x2b90ba['error'][_0xeb0e('0x16')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x3e7872,_0x2b90ba[_0xeb0e('0x14')][_0xeb0e('0x16')]);return _0x3b3c6e(_0x2b90ba[_0xeb0e('0x14')][_0xeb0e('0x16')]);}else{logger['info'](_0xeb0e('0xf'),_0x3e7872,_0xeb0e('0x10'));_0x3b3c6e(_0x2b90ba['result'][_0xeb0e('0x16')]);}})[_0xeb0e('0x17')](function(_0xa9a9c4){logger[_0xeb0e('0x14')](_0xeb0e('0xf'),_0x3e7872,_0xa9a9c4);_0x1dcf56(_0xa9a9c4);});});}
\ No newline at end of file
index 24a6f9b..0c4c94b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['delete','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','/oauth2/microsoft/callback','oauth2MicrosoftCallback','express','Router','../../components/auth/service','./cloudProvider.controller','isAuthenticated','index','get','/:id','post','update'];(function(_0x4b8f43,_0x2534d2){var _0x39d806=function(_0x38490d){while(--_0x38490d){_0x4b8f43['push'](_0x4b8f43['shift']());}};_0x39d806(++_0x2534d2);}(_0xdb28,0x106));var _0x8db2=function(_0xd97d1f,_0xc5377f){_0xd97d1f=_0xd97d1f-0x0;var _0x57cd28=_0xdb28[_0xd97d1f];return _0x57cd28;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['get']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);router[_0x8db2('0x6')](_0x8db2('0x7'),auth[_0x8db2('0x4')](),controller['show']);router[_0x8db2('0x8')]('/',auth[_0x8db2('0x4')](),controller['create']);router['put'](_0x8db2('0x7'),auth[_0x8db2('0x4')](),controller[_0x8db2('0x9')]);router[_0x8db2('0xa')](_0x8db2('0x7'),auth[_0x8db2('0x4')](),controller[_0x8db2('0xb')]);router['get'](_0x8db2('0xc'),auth[_0x8db2('0x4')](),controller[_0x8db2('0xd')]);router['post'](_0x8db2('0xe'),controller[_0x8db2('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x7a54=['isAuthenticated','/:id','show','post','create','delete','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback','exports','express','Router','../../components/auth/service','get'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x7a54,0x106));var _0x47a5=function(_0x52230d,_0x53f4eb){_0x52230d=_0x52230d-0x0;var _0x16c5b4=_0x7a54[_0x52230d];return _0x16c5b4;};'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 8a4ceea..56ea0f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3687=['STRING','name','sequelize'];(function(_0x251300,_0x26dc28){var _0xbe458=function(_0x1b73c8){while(--_0x1b73c8){_0x251300['push'](_0x251300['shift']());}};_0xbe458(++_0x26dc28);}(_0x3687,0x188));var _0x7368=function(_0x10dc3a,_0x274aa8){_0x10dc3a=_0x10dc3a-0x0;var _0x66550b=_0x3687[_0x10dc3a];return _0x66550b;};'use strict';var Sequelize=require(_0x7368('0x0'));module['exports']={'name':{'type':Sequelize[_0x7368('0x1')],'unique':_0x7368('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x7368('0x1')]},'companyId':{'type':Sequelize[_0x7368('0x1')]},'website':{'type':Sequelize[_0x7368('0x1')]},'phone':{'type':Sequelize[_0x7368('0x1')]},'fax':{'type':Sequelize[_0x7368('0x1')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x7368('0x1')]},'city':{'type':Sequelize[_0x7368('0x1')]},'country':{'type':Sequelize[_0x7368('0x1')]},'email':{'type':Sequelize[_0x7368('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0x7368('0x1')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7368('0x1')]}};
\ No newline at end of file
+var _0x5947=['STRING','name','sequelize','exports'];(function(_0x45af4b,_0x1fc922){var _0x5ee98=function(_0x592bdc){while(--_0x592bdc){_0x45af4b['push'](_0x45af4b['shift']());}};_0x5ee98(++_0x1fc922);}(_0x5947,0x16e));var _0x7594=function(_0x599d57,_0x466120){_0x599d57=_0x599d57-0x0;var _0x5945f6=_0x5947[_0x599d57];return _0x5945f6;};'use strict';var Sequelize=require(_0x7594('0x0'));module[_0x7594('0x1')]={'name':{'type':Sequelize[_0x7594('0x2')],'unique':_0x7594('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x7594('0x2')]},'companyId':{'type':Sequelize[_0x7594('0x2')]},'website':{'type':Sequelize[_0x7594('0x2')]},'phone':{'type':Sequelize[_0x7594('0x2')]},'fax':{'type':Sequelize[_0x7594('0x2')]},'type':{'type':Sequelize[_0x7594('0x2')]},'street':{'type':Sequelize[_0x7594('0x2')]},'postalCode':{'type':Sequelize[_0x7594('0x2')]},'city':{'type':Sequelize[_0x7594('0x2')]},'country':{'type':Sequelize[_0x7594('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x7594('0x2')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x7594('0x2')]},'sCountry':{'type':Sequelize[_0x7594('0x2')]},'description':{'type':Sequelize[_0x7594('0x2')]}};
\ No newline at end of file
index 12f061e..c0bee4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52f7=['status','error','stack','name','send','index','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','merge','map','options','includeAll','include','catch','show','rawAttributes','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','update','body','params','addContacts','CmContact','omit','ids','findOne','filter','getContacts','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','count','set','apply','reject','save','then','get','Companies','UserProfileResource','destroy'];(function(_0x41e509,_0x33ab91){var _0x522164=function(_0xc05c2b){while(--_0xc05c2b){_0x41e509['push'](_0x41e509['shift']());}};_0x522164(++_0x33ab91);}(_0x52f7,0xdc));var _0x752f=function(_0x2944d8,_0x2af76d){_0x2944d8=_0x2944d8-0x0;var _0x1245e1=_0x52f7[_0x2944d8];return _0x1245e1;};'use strict';var emlformat=require(_0x752f('0x0'));var rimraf=require(_0x752f('0x1'));var zipdir=require(_0x752f('0x2'));var jsonpatch=require(_0x752f('0x3'));var rp=require(_0x752f('0x4'));var moment=require(_0x752f('0x5'));var BPromise=require(_0x752f('0x6'));var Mustache=require(_0x752f('0x7'));var util=require(_0x752f('0x8'));var path=require(_0x752f('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x752f('0xa'));var fs=require('fs');var fs_extra=require(_0x752f('0xb'));var _=require(_0x752f('0xc'));var squel=require(_0x752f('0xd'));var crypto=require(_0x752f('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x752f('0xf'));var toCsv=require(_0x752f('0x10'));var querystring=require(_0x752f('0x11'));var Papa=require(_0x752f('0x12'));var Redis=require('ioredis');var authService=require(_0x752f('0x13'));var qs=require(_0x752f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x752f('0x15'));var logger=require('../../config/logger')(_0x752f('0x16'));var utils=require(_0x752f('0x17'));var config=require(_0x752f('0x18'));var licenseUtil=require(_0x752f('0x19'));var db=require(_0x752f('0x1a'))['db'];function respondWithStatusCode(_0x4bbb45,_0xd9142f){_0xd9142f=_0xd9142f||0xcc;return function(_0x4e83a9){if(_0x4e83a9){return _0x4bbb45[_0x752f('0x1b')](_0xd9142f);}return _0x4bbb45['status'](_0xd9142f)[_0x752f('0x1c')]();};}function respondWithResult(_0x3a7c12,_0x3afba1){_0x3afba1=_0x3afba1||0xc8;return function(_0x183d59){if(_0x183d59){return _0x3a7c12['status'](_0x3afba1)[_0x752f('0x1d')](_0x183d59);}};}function respondWithFilteredResult(_0x516846,_0x4feb83){return function(_0x593777){if(_0x593777){var _0x2a7ae1=typeof _0x4feb83[_0x752f('0x1e')]==='undefined'&&typeof _0x4feb83['limit']==='undefined';var _0xf24bba=_0x593777[_0x752f('0x1f')];var _0x487110=_0x2a7ae1?0x0:_0x4feb83[_0x752f('0x1e')];var _0x6df19d=_0x2a7ae1?_0x593777[_0x752f('0x1f')]:_0x4feb83[_0x752f('0x1e')]+_0x4feb83['limit'];var _0x300bcf;if(_0x6df19d>=_0xf24bba){_0x6df19d=_0xf24bba;_0x300bcf=0xc8;}else{_0x300bcf=0xce;}_0x516846['status'](_0x300bcf);return _0x516846[_0x752f('0x20')]('Content-Range',_0x487110+'-'+_0x6df19d+'/'+_0xf24bba)[_0x752f('0x1d')](_0x593777);}return null;};}function patchUpdates(_0x47eb6a){return function(_0xc320e){try{jsonpatch[_0x752f('0x21')](_0xc320e,_0x47eb6a,!![]);}catch(_0x38a273){return BPromise[_0x752f('0x22')](_0x38a273);}return _0xc320e[_0x752f('0x23')]();};}function saveUpdates(_0x450ccf,_0x5a5fdc){return function(_0x446e93){if(_0x446e93){return _0x446e93['update'](_0x450ccf)['then'](function(_0x6c179){return _0x6c179;});}return null;};}function removeEntity(_0x432375,_0x3a91c8){return function(_0x194add){if(_0x194add){return _0x194add['destroy']()[_0x752f('0x24')](function(){var _0x425847=_0x194add[_0x752f('0x25')]({'plain':!![]});var _0x28bc4d=_0x752f('0x26');return db[_0x752f('0x27')][_0x752f('0x28')]({'where':{'type':_0x28bc4d,'resourceId':_0x425847['id']}})[_0x752f('0x24')](function(){return _0x194add;});})[_0x752f('0x24')](function(){_0x432375[_0x752f('0x29')](0xcc)[_0x752f('0x1c')]();});}};}function handleEntityNotFound(_0x1519e4,_0x3bfe37){return function(_0x46de19){if(!_0x46de19){_0x1519e4[_0x752f('0x1b')](0x194);}return _0x46de19;};}function handleError(_0x7fbf73,_0x1c346b){_0x1c346b=_0x1c346b||0x1f4;return function(_0x210ecd){logger[_0x752f('0x2a')](_0x210ecd[_0x752f('0x2b')]);if(_0x210ecd['name']){delete _0x210ecd[_0x752f('0x2c')];}_0x7fbf73[_0x752f('0x29')](_0x1c346b)[_0x752f('0x2d')](_0x210ecd);};}exports[_0x752f('0x2e')]=function(_0x576e6d,_0x40ec34){var _0x55c14c={},_0x152b07={},_0x5898dc={'count':0x0,'rows':[]};return db[_0x752f('0x2f')][_0x752f('0x30')]()[_0x752f('0x24')](function(_0x4f54d4){_0x152b07[_0x752f('0x31')]=_[_0x752f('0x32')](_0x4f54d4);_0x152b07[_0x752f('0x33')]=_['keys'](_0x576e6d[_0x752f('0x33')]);_0x152b07[_0x752f('0x34')]=_[_0x752f('0x35')](_0x152b07['model'],_0x152b07[_0x752f('0x33')]);_0x55c14c[_0x752f('0x36')]=_['intersection'](_0x152b07['model'],qs[_0x752f('0x37')](_0x576e6d[_0x752f('0x33')][_0x752f('0x37')]));_0x55c14c[_0x752f('0x36')]=_0x55c14c['attributes'][_0x752f('0x38')]?_0x55c14c['attributes']:_0x152b07[_0x752f('0x31')];if(!_0x576e6d[_0x752f('0x33')][_0x752f('0x39')](_0x752f('0x3a'))){_0x55c14c[_0x752f('0x3b')]=qs['limit'](_0x576e6d[_0x752f('0x33')][_0x752f('0x3b')]);_0x55c14c[_0x752f('0x1e')]=qs['offset'](_0x576e6d[_0x752f('0x33')][_0x752f('0x1e')]);}_0x55c14c[_0x752f('0x3c')]=qs[_0x752f('0x3d')](_0x576e6d[_0x752f('0x33')][_0x752f('0x3d')]);_0x55c14c['where']=qs['filters'](_['pick'](_0x576e6d['query'],_0x152b07['filters']),_0x4f54d4);if(_0x576e6d[_0x752f('0x33')]['filter']){_0x55c14c[_0x752f('0x3e')]=_[_0x752f('0x3f')](_0x55c14c[_0x752f('0x3e')],{'$or':_[_0x752f('0x40')](_0x55c14c[_0x752f('0x36')],function(_0x3577f6){var _0x46015f={};_0x46015f[_0x3577f6]={'$like':'%'+_0x576e6d[_0x752f('0x33')]['filter']+'%'};return _0x46015f;})});}_0x55c14c=_[_0x752f('0x3f')]({},_0x55c14c,_0x576e6d[_0x752f('0x41')]);var _0x35f3e0={'where':_0x55c14c[_0x752f('0x3e')]};return db[_0x752f('0x2f')][_0x752f('0x1f')](_0x35f3e0)['then'](function(_0x4b8ab7){_0x5898dc[_0x752f('0x1f')]=_0x4b8ab7;if(_0x576e6d[_0x752f('0x33')][_0x752f('0x42')]){_0x55c14c[_0x752f('0x43')]=[{'all':!![]}];}return db[_0x752f('0x2f')]['findAll'](_0x55c14c);})[_0x752f('0x24')](function(_0x523b4c){_0x5898dc['rows']=_0x523b4c;return _0x5898dc;})[_0x752f('0x24')](respondWithFilteredResult(_0x40ec34,_0x55c14c))[_0x752f('0x44')](handleError(_0x40ec34,null));})[_0x752f('0x44')](handleError(_0x40ec34,null));};exports[_0x752f('0x45')]=function(_0xbebd1b,_0x367b3b){var _0x3c41d6={'raw':![],'where':{'id':_0xbebd1b['params']['id']}},_0x3fe7fc={};_0x3fe7fc['model']=_[_0x752f('0x32')](db[_0x752f('0x2f')][_0x752f('0x46')]);_0x3fe7fc[_0x752f('0x33')]=_[_0x752f('0x32')](_0xbebd1b[_0x752f('0x33')]);_0x3fe7fc[_0x752f('0x34')]=_[_0x752f('0x35')](_0x3fe7fc[_0x752f('0x31')],_0x3fe7fc[_0x752f('0x33')]);_0x3c41d6[_0x752f('0x36')]=_[_0x752f('0x35')](_0x3fe7fc[_0x752f('0x31')],qs[_0x752f('0x37')](_0xbebd1b[_0x752f('0x33')][_0x752f('0x37')]));_0x3c41d6[_0x752f('0x36')]=_0x3c41d6['attributes']['length']?_0x3c41d6[_0x752f('0x36')]:_0x3fe7fc[_0x752f('0x31')];if(_0xbebd1b['query'][_0x752f('0x42')]){_0x3c41d6[_0x752f('0x43')]=[{'all':!![]}];}_0x3c41d6=_[_0x752f('0x3f')]({},_0x3c41d6,_0xbebd1b[_0x752f('0x41')]);return db[_0x752f('0x2f')]['find'](_0x3c41d6)[_0x752f('0x24')](handleEntityNotFound(_0x367b3b,null))['then'](respondWithResult(_0x367b3b,null))[_0x752f('0x44')](handleError(_0x367b3b,null));};exports['create']=function(_0x2588fb,_0x11b8d2){return db[_0x752f('0x2f')][_0x752f('0x47')](_0x2588fb['body'],{})[_0x752f('0x24')](function(_0x197a8d){var _0x185d6d=_0x2588fb['user'][_0x752f('0x25')]({'plain':!![]});if(!_0x185d6d)throw new Error(_0x752f('0x48'));if(_0x185d6d[_0x752f('0x49')]==='user'){var _0x4566b9=_0x197a8d[_0x752f('0x25')]({'plain':!![]});var _0xc6d7d6=_0x752f('0x26');return db[_0x752f('0x4a')][_0x752f('0x4b')]({'where':{'name':_0xc6d7d6,'userProfileId':_0x185d6d['userProfileId']},'raw':!![]})['then'](function(_0x1f4de3){if(_0x1f4de3&&_0x1f4de3[_0x752f('0x4c')]===0x0){return db[_0x752f('0x27')][_0x752f('0x47')]({'name':_0x4566b9[_0x752f('0x2c')],'resourceId':_0x4566b9['id'],'type':_0x1f4de3[_0x752f('0x2c')],'sectionId':_0x1f4de3['id']},{})['then'](function(){return _0x197a8d;});}else{return _0x197a8d;}})[_0x752f('0x44')](function(_0x1bc947){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1bc947);throw _0x1bc947;});}return _0x197a8d;})[_0x752f('0x24')](respondWithResult(_0x11b8d2,0xc9))['catch'](handleError(_0x11b8d2,null));};exports[_0x752f('0x4d')]=function(_0x5a33df,_0x3ae86b){if(_0x5a33df['body']['id']){delete _0x5a33df[_0x752f('0x4e')]['id'];}return db[_0x752f('0x2f')][_0x752f('0x4b')]({'where':{'id':_0x5a33df['params']['id']}})[_0x752f('0x24')](handleEntityNotFound(_0x3ae86b,null))[_0x752f('0x24')](saveUpdates(_0x5a33df[_0x752f('0x4e')],null))['then'](respondWithResult(_0x3ae86b,null))[_0x752f('0x44')](handleError(_0x3ae86b,null));};exports[_0x752f('0x28')]=function(_0x274927,_0x3ee261){return db[_0x752f('0x2f')][_0x752f('0x4b')]({'where':{'id':_0x274927[_0x752f('0x4f')]['id']}})[_0x752f('0x24')](handleEntityNotFound(_0x3ee261,null))[_0x752f('0x24')](removeEntity(_0x3ee261,null))[_0x752f('0x44')](handleError(_0x3ee261,null));};exports[_0x752f('0x30')]=function(_0x5de34c,_0x2af29f){return db[_0x752f('0x2f')][_0x752f('0x30')]()[_0x752f('0x24')](respondWithResult(_0x2af29f,null))[_0x752f('0x44')](handleError(_0x2af29f,null));};exports[_0x752f('0x50')]=function(_0x330233,_0x428bda,_0x45ebe2){return db[_0x752f('0x51')][_0x752f('0x4b')]({'where':{'id':_0x330233[_0x752f('0x4f')]['id']}})[_0x752f('0x24')](handleEntityNotFound(_0x428bda,null))['then'](function(_0x52e6e2){if(_0x52e6e2){return _0x52e6e2[_0x752f('0x50')](_0x330233[_0x752f('0x4e')]['ids'],_[_0x752f('0x52')](_0x330233['body'],[_0x752f('0x53'),'id'])||{});}})[_0x752f('0x24')](respondWithResult(_0x428bda,null))[_0x752f('0x44')](handleError(_0x428bda,null));};exports['getContacts']=function(_0x3362fc,_0x5a4dda,_0x327d00){var _0x199706={};var _0x3d50ee={};var _0x20bde8;var _0x503ec8;return db[_0x752f('0x2f')][_0x752f('0x54')]({'where':{'id':_0x3362fc[_0x752f('0x4f')]['id']}})[_0x752f('0x24')](handleEntityNotFound(_0x5a4dda,null))['then'](function(_0x157cb4){if(_0x157cb4){_0x20bde8=_0x157cb4;_0x3d50ee[_0x752f('0x31')]=_[_0x752f('0x32')](db['CmContact'][_0x752f('0x46')]);_0x3d50ee[_0x752f('0x33')]=_[_0x752f('0x32')](_0x3362fc[_0x752f('0x33')]);_0x3d50ee['filters']=_[_0x752f('0x35')](_0x3d50ee['model'],_0x3d50ee[_0x752f('0x33')]);_0x199706[_0x752f('0x36')]=_[_0x752f('0x35')](_0x3d50ee[_0x752f('0x31')],qs[_0x752f('0x37')](_0x3362fc[_0x752f('0x33')]['fields']));_0x199706['attributes']=_0x199706['attributes']['length']?_0x199706[_0x752f('0x36')]:_0x3d50ee[_0x752f('0x31')];_0x199706[_0x752f('0x3c')]=qs[_0x752f('0x3d')](_0x3362fc[_0x752f('0x33')][_0x752f('0x3d')]);_0x199706[_0x752f('0x3e')]=qs[_0x752f('0x34')](_['pick'](_0x3362fc['query'],_0x3d50ee[_0x752f('0x34')]));if(_0x3362fc[_0x752f('0x33')][_0x752f('0x55')]){_0x199706['where']=_[_0x752f('0x3f')](_0x199706[_0x752f('0x3e')],{'$or':_[_0x752f('0x40')](_0x199706['attributes'],function(_0x1c6746){var _0x1d721d={};_0x1d721d[_0x1c6746]={'$like':'%'+_0x3362fc[_0x752f('0x33')][_0x752f('0x55')]+'%'};return _0x1d721d;})});}_0x199706=_[_0x752f('0x3f')]({},_0x199706,_0x3362fc['options']);return _0x20bde8[_0x752f('0x56')](_0x199706);}})['then'](function(_0xd1c4b3){if(_0xd1c4b3){_0x503ec8=_0xd1c4b3[_0x752f('0x38')];if(!_0x3362fc['query'][_0x752f('0x39')](_0x752f('0x3a'))){_0x199706[_0x752f('0x3b')]=qs[_0x752f('0x3b')](_0x3362fc['query']['limit']);_0x199706['offset']=qs[_0x752f('0x1e')](_0x3362fc['query'][_0x752f('0x1e')]);}return _0x20bde8['getContacts'](_0x199706);}})[_0x752f('0x24')](function(_0x13ed7d){if(_0x13ed7d){return _0x13ed7d?{'count':_0x503ec8,'rows':_0x13ed7d}:null;}})[_0x752f('0x24')](respondWithResult(_0x5a4dda,null))[_0x752f('0x44')](handleError(_0x5a4dda,null));};
\ No newline at end of file
+var _0xfd33=['update','get','UserProfileResource','then','end','error','stack','name','index','describe','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','map','merge','includeAll','CmCompany','findAll','rows','catch','show','params','rawAttributes','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Companies','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','CmContact','addContacts','ids','omit','getContacts','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','json','apply','reject','save'];(function(_0x2ceb64,_0x21dcef){var _0x2d8712=function(_0x3b44f0){while(--_0x3b44f0){_0x2ceb64['push'](_0x2ceb64['shift']());}};_0x2d8712(++_0x21dcef);}(_0xfd33,0x8b));var _0x3fd3=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0xfd33[_0x10004e];return _0x5af990;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3fd3('0x0'));var zipdir=require(_0x3fd3('0x1'));var jsonpatch=require(_0x3fd3('0x2'));var rp=require(_0x3fd3('0x3'));var moment=require('moment');var BPromise=require(_0x3fd3('0x4'));var Mustache=require(_0x3fd3('0x5'));var util=require(_0x3fd3('0x6'));var path=require(_0x3fd3('0x7'));var sox=require(_0x3fd3('0x8'));var csv=require(_0x3fd3('0x9'));var ejs=require(_0x3fd3('0xa'));var fs=require('fs');var fs_extra=require(_0x3fd3('0xb'));var _=require('lodash');var squel=require(_0x3fd3('0xc'));var crypto=require(_0x3fd3('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3fd3('0xe'));var toCsv=require(_0x3fd3('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3fd3('0xf'));var authService=require(_0x3fd3('0x10'));var qs=require(_0x3fd3('0x11'));var as=require(_0x3fd3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3fd3('0x13'))('api');var utils=require(_0x3fd3('0x14'));var config=require(_0x3fd3('0x15'));var licenseUtil=require(_0x3fd3('0x16'));var db=require(_0x3fd3('0x17'))['db'];function respondWithStatusCode(_0x207759,_0x2b5b62){_0x2b5b62=_0x2b5b62||0xcc;return function(_0x12f84e){if(_0x12f84e){return _0x207759[_0x3fd3('0x18')](_0x2b5b62);}return _0x207759[_0x3fd3('0x19')](_0x2b5b62)['end']();};}function respondWithResult(_0x14e298,_0x5b6e87){_0x5b6e87=_0x5b6e87||0xc8;return function(_0x60e69){if(_0x60e69){return _0x14e298[_0x3fd3('0x19')](_0x5b6e87)['json'](_0x60e69);}};}function respondWithFilteredResult(_0x371fa4,_0x2e999c){return function(_0x70197c){if(_0x70197c){var _0x12544a=typeof _0x2e999c[_0x3fd3('0x1a')]===_0x3fd3('0x1b')&&typeof _0x2e999c[_0x3fd3('0x1c')]===_0x3fd3('0x1b');var _0x4536cb=_0x70197c[_0x3fd3('0x1d')];var _0x60fa22=_0x12544a?0x0:_0x2e999c[_0x3fd3('0x1a')];var _0xeb0a1=_0x12544a?_0x70197c[_0x3fd3('0x1d')]:_0x2e999c[_0x3fd3('0x1a')]+_0x2e999c[_0x3fd3('0x1c')];var _0x3c27da;if(_0xeb0a1>=_0x4536cb){_0xeb0a1=_0x4536cb;_0x3c27da=0xc8;}else{_0x3c27da=0xce;}_0x371fa4[_0x3fd3('0x19')](_0x3c27da);return _0x371fa4[_0x3fd3('0x1e')]('Content-Range',_0x60fa22+'-'+_0xeb0a1+'/'+_0x4536cb)[_0x3fd3('0x1f')](_0x70197c);}return null;};}function patchUpdates(_0x194964){return function(_0x58dfc0){try{jsonpatch[_0x3fd3('0x20')](_0x58dfc0,_0x194964,!![]);}catch(_0x33636d){return BPromise[_0x3fd3('0x21')](_0x33636d);}return _0x58dfc0[_0x3fd3('0x22')]();};}function saveUpdates(_0x35d93c,_0xea2723){return function(_0x5e874f){if(_0x5e874f){return _0x5e874f[_0x3fd3('0x23')](_0x35d93c)['then'](function(_0x4fb5d4){return _0x4fb5d4;});}return null;};}function removeEntity(_0x2e1728,_0x1698e2){return function(_0x3e2198){if(_0x3e2198){return _0x3e2198['destroy']()['then'](function(){var _0x3cdf11=_0x3e2198[_0x3fd3('0x24')]({'plain':!![]});var _0x1e7baf='Companies';return db[_0x3fd3('0x25')]['destroy']({'where':{'type':_0x1e7baf,'resourceId':_0x3cdf11['id']}})[_0x3fd3('0x26')](function(){return _0x3e2198;});})[_0x3fd3('0x26')](function(){_0x2e1728['status'](0xcc)[_0x3fd3('0x27')]();});}};}function handleEntityNotFound(_0x169c97,_0x351200){return function(_0x1a813e){if(!_0x1a813e){_0x169c97['sendStatus'](0x194);}return _0x1a813e;};}function handleError(_0xd7d693,_0x342237){_0x342237=_0x342237||0x1f4;return function(_0x586139){logger[_0x3fd3('0x28')](_0x586139[_0x3fd3('0x29')]);if(_0x586139[_0x3fd3('0x2a')]){delete _0x586139[_0x3fd3('0x2a')];}_0xd7d693[_0x3fd3('0x19')](_0x342237)['send'](_0x586139);};}exports[_0x3fd3('0x2b')]=function(_0x52da29,_0x2b5825){var _0x416292={},_0xf3da32={},_0x1c3e16={'count':0x0,'rows':[]};return db['CmCompany'][_0x3fd3('0x2c')]()['then'](function(_0x5d0b40){_0xf3da32[_0x3fd3('0x2d')]=_[_0x3fd3('0x2e')](_0x5d0b40);_0xf3da32[_0x3fd3('0x2f')]=_[_0x3fd3('0x2e')](_0x52da29[_0x3fd3('0x2f')]);_0xf3da32[_0x3fd3('0x30')]=_[_0x3fd3('0x31')](_0xf3da32['model'],_0xf3da32[_0x3fd3('0x2f')]);_0x416292['attributes']=_[_0x3fd3('0x31')](_0xf3da32[_0x3fd3('0x2d')],qs[_0x3fd3('0x32')](_0x52da29[_0x3fd3('0x2f')][_0x3fd3('0x32')]));_0x416292['attributes']=_0x416292[_0x3fd3('0x33')][_0x3fd3('0x34')]?_0x416292[_0x3fd3('0x33')]:_0xf3da32['model'];if(!_0x52da29[_0x3fd3('0x2f')][_0x3fd3('0x35')](_0x3fd3('0x36'))){_0x416292[_0x3fd3('0x1c')]=qs[_0x3fd3('0x1c')](_0x52da29[_0x3fd3('0x2f')]['limit']);_0x416292['offset']=qs[_0x3fd3('0x1a')](_0x52da29['query'][_0x3fd3('0x1a')]);}_0x416292[_0x3fd3('0x37')]=qs[_0x3fd3('0x38')](_0x52da29[_0x3fd3('0x2f')][_0x3fd3('0x38')]);_0x416292['where']=qs[_0x3fd3('0x30')](_[_0x3fd3('0x39')](_0x52da29['query'],_0xf3da32['filters']),_0x5d0b40);if(_0x52da29['query'][_0x3fd3('0x3a')]){_0x416292['where']=_['merge'](_0x416292[_0x3fd3('0x3b')],{'$or':_[_0x3fd3('0x3c')](_0x416292[_0x3fd3('0x33')],function(_0x5bab6c){var _0x55ae37={};_0x55ae37[_0x5bab6c]={'$like':'%'+_0x52da29[_0x3fd3('0x2f')]['filter']+'%'};return _0x55ae37;})});}_0x416292=_[_0x3fd3('0x3d')]({},_0x416292,_0x52da29['options']);var _0x36ca53={'where':_0x416292[_0x3fd3('0x3b')]};return db['CmCompany']['count'](_0x36ca53)['then'](function(_0x2e928e){_0x1c3e16[_0x3fd3('0x1d')]=_0x2e928e;if(_0x52da29['query'][_0x3fd3('0x3e')]){_0x416292['include']=[{'all':!![]}];}return db[_0x3fd3('0x3f')][_0x3fd3('0x40')](_0x416292);})[_0x3fd3('0x26')](function(_0x4636bf){_0x1c3e16[_0x3fd3('0x41')]=_0x4636bf;return _0x1c3e16;})[_0x3fd3('0x26')](respondWithFilteredResult(_0x2b5825,_0x416292))['catch'](handleError(_0x2b5825,null));})[_0x3fd3('0x42')](handleError(_0x2b5825,null));};exports[_0x3fd3('0x43')]=function(_0x22de9d,_0x41df6f){var _0x362270={'raw':![],'where':{'id':_0x22de9d[_0x3fd3('0x44')]['id']}},_0x5cd927={};_0x5cd927[_0x3fd3('0x2d')]=_['keys'](db[_0x3fd3('0x3f')][_0x3fd3('0x45')]);_0x5cd927['query']=_['keys'](_0x22de9d[_0x3fd3('0x2f')]);_0x5cd927[_0x3fd3('0x30')]=_[_0x3fd3('0x31')](_0x5cd927[_0x3fd3('0x2d')],_0x5cd927[_0x3fd3('0x2f')]);_0x362270[_0x3fd3('0x33')]=_[_0x3fd3('0x31')](_0x5cd927[_0x3fd3('0x2d')],qs['fields'](_0x22de9d[_0x3fd3('0x2f')][_0x3fd3('0x32')]));_0x362270[_0x3fd3('0x33')]=_0x362270[_0x3fd3('0x33')][_0x3fd3('0x34')]?_0x362270[_0x3fd3('0x33')]:_0x5cd927[_0x3fd3('0x2d')];if(_0x22de9d['query'][_0x3fd3('0x3e')]){_0x362270[_0x3fd3('0x46')]=[{'all':!![]}];}_0x362270=_['merge']({},_0x362270,_0x22de9d[_0x3fd3('0x47')]);return db[_0x3fd3('0x3f')][_0x3fd3('0x48')](_0x362270)['then'](handleEntityNotFound(_0x41df6f,null))[_0x3fd3('0x26')](respondWithResult(_0x41df6f,null))[_0x3fd3('0x42')](handleError(_0x41df6f,null));};exports[_0x3fd3('0x49')]=function(_0x1e8883,_0x200289){return db[_0x3fd3('0x3f')][_0x3fd3('0x49')](_0x1e8883[_0x3fd3('0x4a')],{})[_0x3fd3('0x26')](function(_0x2ccf19){var _0x69105a=_0x1e8883[_0x3fd3('0x4b')][_0x3fd3('0x24')]({'plain':!![]});if(!_0x69105a)throw new Error(_0x3fd3('0x4c'));if(_0x69105a[_0x3fd3('0x4d')]===_0x3fd3('0x4b')){var _0xdf2f1b=_0x2ccf19[_0x3fd3('0x24')]({'plain':!![]});var _0x325f4b=_0x3fd3('0x4e');return db['UserProfileSection'][_0x3fd3('0x48')]({'where':{'name':_0x325f4b,'userProfileId':_0x69105a['userProfileId']},'raw':!![]})[_0x3fd3('0x26')](function(_0x38aa6e){if(_0x38aa6e&&_0x38aa6e[_0x3fd3('0x4f')]===0x0){return db[_0x3fd3('0x25')][_0x3fd3('0x49')]({'name':_0xdf2f1b[_0x3fd3('0x2a')],'resourceId':_0xdf2f1b['id'],'type':_0x38aa6e[_0x3fd3('0x2a')],'sectionId':_0x38aa6e['id']},{})[_0x3fd3('0x26')](function(){return _0x2ccf19;});}else{return _0x2ccf19;}})[_0x3fd3('0x42')](function(_0x8b3fa2){logger[_0x3fd3('0x28')](_0x3fd3('0x50'),_0x8b3fa2);throw _0x8b3fa2;});}return _0x2ccf19;})[_0x3fd3('0x26')](respondWithResult(_0x200289,0xc9))[_0x3fd3('0x42')](handleError(_0x200289,null));};exports[_0x3fd3('0x23')]=function(_0x2bfbea,_0x1b7ec0){if(_0x2bfbea[_0x3fd3('0x4a')]['id']){delete _0x2bfbea[_0x3fd3('0x4a')]['id'];}return db[_0x3fd3('0x3f')][_0x3fd3('0x48')]({'where':{'id':_0x2bfbea[_0x3fd3('0x44')]['id']}})['then'](handleEntityNotFound(_0x1b7ec0,null))[_0x3fd3('0x26')](saveUpdates(_0x2bfbea[_0x3fd3('0x4a')],null))[_0x3fd3('0x26')](respondWithResult(_0x1b7ec0,null))[_0x3fd3('0x42')](handleError(_0x1b7ec0,null));};exports[_0x3fd3('0x51')]=function(_0x528911,_0x466c77){return db[_0x3fd3('0x3f')]['find']({'where':{'id':_0x528911['params']['id']}})['then'](handleEntityNotFound(_0x466c77,null))[_0x3fd3('0x26')](removeEntity(_0x466c77,null))[_0x3fd3('0x42')](handleError(_0x466c77,null));};exports[_0x3fd3('0x2c')]=function(_0x3580e5,_0x7941e6){return db[_0x3fd3('0x3f')][_0x3fd3('0x2c')]()[_0x3fd3('0x26')](respondWithResult(_0x7941e6,null))[_0x3fd3('0x42')](handleError(_0x7941e6,null));};exports['addContacts']=function(_0x5508c9,_0x262eb8,_0x1f0b47){return db[_0x3fd3('0x52')][_0x3fd3('0x48')]({'where':{'id':_0x5508c9['params']['id']}})[_0x3fd3('0x26')](handleEntityNotFound(_0x262eb8,null))[_0x3fd3('0x26')](function(_0x1339dd){if(_0x1339dd){return _0x1339dd[_0x3fd3('0x53')](_0x5508c9[_0x3fd3('0x4a')][_0x3fd3('0x54')],_[_0x3fd3('0x55')](_0x5508c9[_0x3fd3('0x4a')],[_0x3fd3('0x54'),'id'])||{});}})[_0x3fd3('0x26')](respondWithResult(_0x262eb8,null))[_0x3fd3('0x42')](handleError(_0x262eb8,null));};exports[_0x3fd3('0x56')]=function(_0x36ac46,_0x4df954,_0x4d82e1){var _0x2fdc7c={};var _0x5d6463={};var _0x38481f;var _0x4ab991;return db[_0x3fd3('0x3f')]['findOne']({'where':{'id':_0x36ac46[_0x3fd3('0x44')]['id']}})['then'](handleEntityNotFound(_0x4df954,null))[_0x3fd3('0x26')](function(_0x22545e){if(_0x22545e){_0x38481f=_0x22545e;_0x5d6463['model']=_[_0x3fd3('0x2e')](db[_0x3fd3('0x52')][_0x3fd3('0x45')]);_0x5d6463[_0x3fd3('0x2f')]=_[_0x3fd3('0x2e')](_0x36ac46[_0x3fd3('0x2f')]);_0x5d6463['filters']=_[_0x3fd3('0x31')](_0x5d6463[_0x3fd3('0x2d')],_0x5d6463[_0x3fd3('0x2f')]);_0x2fdc7c[_0x3fd3('0x33')]=_['intersection'](_0x5d6463[_0x3fd3('0x2d')],qs['fields'](_0x36ac46[_0x3fd3('0x2f')][_0x3fd3('0x32')]));_0x2fdc7c['attributes']=_0x2fdc7c[_0x3fd3('0x33')][_0x3fd3('0x34')]?_0x2fdc7c['attributes']:_0x5d6463[_0x3fd3('0x2d')];_0x2fdc7c[_0x3fd3('0x37')]=qs[_0x3fd3('0x38')](_0x36ac46['query'][_0x3fd3('0x38')]);_0x2fdc7c['where']=qs[_0x3fd3('0x30')](_[_0x3fd3('0x39')](_0x36ac46[_0x3fd3('0x2f')],_0x5d6463[_0x3fd3('0x30')]));if(_0x36ac46[_0x3fd3('0x2f')][_0x3fd3('0x3a')]){_0x2fdc7c[_0x3fd3('0x3b')]=_['merge'](_0x2fdc7c[_0x3fd3('0x3b')],{'$or':_[_0x3fd3('0x3c')](_0x2fdc7c[_0x3fd3('0x33')],function(_0x3ee353){var _0x152b53={};_0x152b53[_0x3ee353]={'$like':'%'+_0x36ac46['query'][_0x3fd3('0x3a')]+'%'};return _0x152b53;})});}_0x2fdc7c=_['merge']({},_0x2fdc7c,_0x36ac46[_0x3fd3('0x47')]);return _0x38481f['getContacts'](_0x2fdc7c);}})[_0x3fd3('0x26')](function(_0x5d97f2){if(_0x5d97f2){_0x4ab991=_0x5d97f2[_0x3fd3('0x34')];if(!_0x36ac46['query'][_0x3fd3('0x35')](_0x3fd3('0x36'))){_0x2fdc7c[_0x3fd3('0x1c')]=qs[_0x3fd3('0x1c')](_0x36ac46['query'][_0x3fd3('0x1c')]);_0x2fdc7c[_0x3fd3('0x1a')]=qs['offset'](_0x36ac46[_0x3fd3('0x2f')]['offset']);}return _0x38481f[_0x3fd3('0x56')](_0x2fdc7c);}})['then'](function(_0x5c237f){if(_0x5c237f){return _0x5c237f?{'count':_0x4ab991,'rows':_0x5c237f}:null;}})['then'](respondWithResult(_0x4df954,null))['catch'](handleError(_0x4df954,null));};
\ No newline at end of file
index 6d6bf96..983992e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc923=['define','cm_companies','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes'];(function(_0x28acc5,_0x34d628){var _0x5ea8e0=function(_0xef8ea5){while(--_0xef8ea5){_0x28acc5['push'](_0x28acc5['shift']());}};_0x5ea8e0(++_0x34d628);}(_0xc923,0x1c5));var _0x3c92=function(_0x4f4707,_0x445387){_0x4f4707=_0x4f4707-0x0;var _0x7731d1=_0xc923[_0x4f4707];return _0x7731d1;};'use strict';var _=require(_0x3c92('0x0'));var util=require('util');var logger=require(_0x3c92('0x1'))('api');var moment=require(_0x3c92('0x2'));var BPromise=require(_0x3c92('0x3'));var rp=require(_0x3c92('0x4'));var fs=require('fs');var path=require(_0x3c92('0x5'));var rimraf=require(_0x3c92('0x6'));var config=require(_0x3c92('0x7'));var attributes=require(_0x3c92('0x8'));module['exports']=function(_0x2b5104,_0x5b070f){return _0x2b5104[_0x3c92('0x9')]('CmCompany',attributes,{'tableName':_0x3c92('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbf4e=['rimraf','../../config/environment','./cmCompany.attributes','define','util','moment','bluebird'];(function(_0x3af700,_0x3f08a3){var _0x4e184c=function(_0x507e49){while(--_0x507e49){_0x3af700['push'](_0x3af700['shift']());}};_0x4e184c(++_0x3f08a3);}(_0xbf4e,0xdd));var _0xebf4=function(_0x4e93c1,_0x477ec6){_0x4e93c1=_0x4e93c1-0x0;var _0x41e3ff=_0xbf4e[_0x4e93c1];return _0x41e3ff;};'use strict';var _=require('lodash');var util=require(_0xebf4('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xebf4('0x1'));var BPromise=require(_0xebf4('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xebf4('0x3'));var config=require(_0xebf4('0x4'));var attributes=require(_0xebf4('0x5'));module['exports']=function(_0x66fd13,_0x210cd0){return _0x66fd13[_0xebf4('0x6')]('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 63810f1..8ea11da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83e5=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','ioredis','../../mysqldb'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x83e5,0x130));var _0x583e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x83e5[_0x484e36];return _0xafc85d;};'use strict';var _=require(_0x583e('0x0'));var util=require('util');var moment=require(_0x583e('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x583e('0x2'));var db=require(_0x583e('0x3'))['db'];var utils=require(_0x583e('0x4'));var logger=require('../../config/logger')(_0x583e('0x5'));var config=require(_0x583e('0x6'));var jayson=require(_0x583e('0x7'));var client=jayson[_0x583e('0x8')][_0x583e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x555368,_0xae3e5a,_0x5bc2f2){return new BPromise(function(_0x541ff0,_0x19a736){return client['request'](_0x555368,_0x5bc2f2)[_0x583e('0xa')](function(_0x97d4a6){logger[_0x583e('0xb')](_0x583e('0xc'),_0xae3e5a,_0x583e('0xd'));logger[_0x583e('0xe')](_0x583e('0xf'),_0xae3e5a,'request\x20sent',JSON[_0x583e('0x10')](_0x97d4a6));if(_0x97d4a6[_0x583e('0x11')]){if(_0x97d4a6[_0x583e('0x11')][_0x583e('0x12')]===0x1f4){logger['error'](_0x583e('0xc'),_0xae3e5a,_0x97d4a6['error'][_0x583e('0x13')]);return _0x19a736(_0x97d4a6[_0x583e('0x11')]['message']);}logger[_0x583e('0x11')](_0x583e('0xc'),_0xae3e5a,_0x97d4a6[_0x583e('0x11')]['message']);return _0x541ff0(_0x97d4a6[_0x583e('0x11')][_0x583e('0x13')]);}else{logger[_0x583e('0xb')](_0x583e('0xc'),_0xae3e5a,'request\x20sent');_0x541ff0(_0x97d4a6[_0x583e('0x14')][_0x583e('0x13')]);}})[_0x583e('0x15')](function(_0x3a2985){logger[_0x583e('0x11')](_0x583e('0xc'),_0xae3e5a,_0x3a2985);_0x19a736(_0x3a2985);});});}
\ No newline at end of file
+var _0xcee2=['../../config/environment','jayson/promise','http','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','../../mysqldb','../../config/logger'];(function(_0x11155f,_0x57b687){var _0xd07e48=function(_0x592615){while(--_0x592615){_0x11155f['push'](_0x11155f['shift']());}};_0xd07e48(++_0x57b687);}(_0xcee2,0xec));var _0x2cee=function(_0x2951bd,_0x4b647f){_0x2951bd=_0x2951bd-0x0;var _0x5a7332=_0xcee2[_0x2951bd];return _0x5a7332;};'use strict';var _=require('lodash');var util=require(_0x2cee('0x0'));var moment=require(_0x2cee('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2cee('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x2cee('0x3'))('rpc');var config=require(_0x2cee('0x4'));var jayson=require(_0x2cee('0x5'));var client=jayson['client'][_0x2cee('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4a5cfd,_0x49e8ea,_0x3395f9){return new BPromise(function(_0x405841,_0xfe0e2c){return client['request'](_0x4a5cfd,_0x3395f9)['then'](function(_0x308f1a){logger[_0x2cee('0x7')](_0x2cee('0x8'),_0x49e8ea,_0x2cee('0x9'));logger[_0x2cee('0xa')](_0x2cee('0xb'),_0x49e8ea,'request\x20sent',JSON[_0x2cee('0xc')](_0x308f1a));if(_0x308f1a[_0x2cee('0xd')]){if(_0x308f1a[_0x2cee('0xd')]['code']===0x1f4){logger[_0x2cee('0xd')](_0x2cee('0x8'),_0x49e8ea,_0x308f1a[_0x2cee('0xd')][_0x2cee('0xe')]);return _0xfe0e2c(_0x308f1a[_0x2cee('0xd')]['message']);}logger[_0x2cee('0xd')](_0x2cee('0x8'),_0x49e8ea,_0x308f1a[_0x2cee('0xd')]['message']);return _0x405841(_0x308f1a[_0x2cee('0xd')][_0x2cee('0xe')]);}else{logger[_0x2cee('0x7')](_0x2cee('0x8'),_0x49e8ea,_0x2cee('0x9'));_0x405841(_0x308f1a[_0x2cee('0xf')]['message']);}})['catch'](function(_0x2ece87){logger['error'](_0x2cee('0x8'),_0x49e8ea,_0x2ece87);_0xfe0e2c(_0x2ece87);});});}
\ No newline at end of file
index 6d87995..fc9cd82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a58=['describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','update','delete','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','/describe'];(function(_0x55bdd1,_0x440615){var _0x18f9e9=function(_0x3c1c6e){while(--_0x3c1c6e){_0x55bdd1['push'](_0x55bdd1['shift']());}};_0x18f9e9(++_0x440615);}(_0x1a58,0xfe));var _0x81a5=function(_0xa2c37d,_0x644ba2){_0xa2c37d=_0xa2c37d-0x0;var _0x469aca=_0x1a58[_0xa2c37d];return _0x469aca;};'use strict';var multer=require(_0x81a5('0x0'));var util=require('util');var path=require(_0x81a5('0x1'));var timeout=require('connect-timeout');var express=require(_0x81a5('0x2'));var router=express['Router']();var fs_extra=require(_0x81a5('0x3'));var auth=require(_0x81a5('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x81a5('0x5'));var controller=require(_0x81a5('0x6'));router[_0x81a5('0x7')]('/',auth[_0x81a5('0x8')](),controller['index']);router['get'](_0x81a5('0x9'),auth[_0x81a5('0x8')](),controller[_0x81a5('0xa')]);router['get'](_0x81a5('0xb'),auth[_0x81a5('0x8')](),controller[_0x81a5('0xc')]);router[_0x81a5('0x7')](_0x81a5('0xd'),auth[_0x81a5('0x8')](),controller[_0x81a5('0xe')]);router[_0x81a5('0xf')]('/',auth[_0x81a5('0x8')](),controller[_0x81a5('0x10')]);router[_0x81a5('0xf')]('/:id/contacts',auth[_0x81a5('0x8')](),controller[_0x81a5('0x11')]);router['put'](_0x81a5('0xb'),auth[_0x81a5('0x8')](),controller[_0x81a5('0x12')]);router[_0x81a5('0x13')](_0x81a5('0xb'),auth[_0x81a5('0x8')](),controller[_0x81a5('0x14')]);module[_0x81a5('0x15')]=router;
\ No newline at end of file
+var _0x035d=['get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts','getContacts','create','post','put','update','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x53d5c6,_0x4c9b37){var _0x48e281=function(_0x57c6b8){while(--_0x57c6b8){_0x53d5c6['push'](_0x53d5c6['shift']());}};_0x48e281(++_0x4c9b37);}(_0x035d,0x15a));var _0xd035=function(_0x1706d1,_0x51eb6d){_0x1706d1=_0x1706d1-0x0;var _0x10838a=_0x035d[_0x1706d1];return _0x10838a;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xd035('0x0'));var express=require(_0xd035('0x1'));var router=express[_0xd035('0x2')]();var fs_extra=require(_0xd035('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd035('0x4'));var config=require(_0xd035('0x5'));var controller=require('./cmCompany.controller');router[_0xd035('0x6')]('/',auth[_0xd035('0x7')](),controller[_0xd035('0x8')]);router[_0xd035('0x6')](_0xd035('0x9'),auth[_0xd035('0x7')](),controller[_0xd035('0xa')]);router['get'](_0xd035('0xb'),auth[_0xd035('0x7')](),controller[_0xd035('0xc')]);router['get'](_0xd035('0xd'),auth[_0xd035('0x7')](),controller[_0xd035('0xe')]);router['post']('/',auth[_0xd035('0x7')](),controller[_0xd035('0xf')]);router[_0xd035('0x10')](_0xd035('0xd'),auth['isAuthenticated'](),controller['addContacts']);router[_0xd035('0x11')](_0xd035('0xb'),auth['isAuthenticated'](),controller[_0xd035('0x12')]);router[_0xd035('0x13')](_0xd035('0xb'),auth[_0xd035('0x7')](),controller[_0xd035('0x14')]);module[_0xd035('0x15')]=router;
\ No newline at end of file
index 3ded97b..c86b6c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecac=['UNSIGNED','DATE','lodash','sequelize','exports','STRING','INTEGER'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xecac,0x1a6));var _0xceca=function(_0xb59fda,_0x1f7181){_0xb59fda=_0xb59fda-0x0;var _0x563988=_0xecac[_0xb59fda];return _0x563988;};'use strict';var _=require(_0xceca('0x0'));var Sequelize=require(_0xceca('0x1'));module[_0xceca('0x2')]={'firstName':{'type':Sequelize[_0xceca('0x3')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xceca('0x3')]},'postalCode':{'type':Sequelize[_0xceca('0x3')]},'city':{'type':Sequelize[_0xceca('0x3')]},'country':{'type':Sequelize[_0xceca('0x3')]},'dateOfBirth':{'type':Sequelize[_0xceca('0x3')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0xceca('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xceca('0x3')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xceca('0x3')]},'facebook':{'type':Sequelize[_0xceca('0x3')]},'fb_data':{'type':Sequelize[_0xceca('0x3')]},'twitter':{'type':Sequelize[_0xceca('0x3')]},'skype':{'type':Sequelize[_0xceca('0x3')]},'teams':{'type':Sequelize[_0xceca('0x3')]},'viber':{'type':Sequelize[_0xceca('0x3')]},'line':{'type':Sequelize[_0xceca('0x3')]},'wechat':{'type':Sequelize[_0xceca('0x3')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0xceca('0x4')]},'AdditionalPhones':{'type':Sequelize[_0xceca('0x3')]},'priority':{'type':Sequelize[_0xceca('0x4')](0x2)[_0xceca('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xceca('0x6')],'defaultValue':Sequelize['NOW']},'dialTimezone':{'type':Sequelize['STRING']},'utcOffset':{'type':Sequelize[_0xceca('0x4')]}};
\ No newline at end of file
+var _0xb764=['UNSIGNED','lodash','sequelize','STRING','TEXT','INTEGER'];(function(_0x5a03e7,_0x17b33b){var _0x5c2f0f=function(_0x5d560b){while(--_0x5d560b){_0x5a03e7['push'](_0x5a03e7['shift']());}};_0x5c2f0f(++_0x17b33b);}(_0xb764,0x181));var _0x4b76=function(_0x4f6ea3,_0x34b825){_0x4f6ea3=_0x4f6ea3-0x0;var _0x3baf5c=_0xb764[_0x4f6ea3];return _0x3baf5c;};'use strict';var _=require(_0x4b76('0x0'));var Sequelize=require(_0x4b76('0x1'));module['exports']={'firstName':{'type':Sequelize[_0x4b76('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x4b76('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x4b76('0x2')]},'city':{'type':Sequelize[_0x4b76('0x2')]},'country':{'type':Sequelize[_0x4b76('0x2')]},'dateOfBirth':{'type':Sequelize[_0x4b76('0x2')]},'description':{'type':Sequelize[_0x4b76('0x3')]},'phone':{'type':Sequelize[_0x4b76('0x2')]},'mobile':{'type':Sequelize[_0x4b76('0x2')]},'fax':{'type':Sequelize[_0x4b76('0x2')]},'email':{'type':Sequelize[_0x4b76('0x2')]},'url':{'type':Sequelize[_0x4b76('0x2')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0x4b76('0x2')]},'twitter':{'type':Sequelize[_0x4b76('0x2')]},'skype':{'type':Sequelize[_0x4b76('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0x4b76('0x2')]},'line':{'type':Sequelize[_0x4b76('0x2')]},'wechat':{'type':Sequelize[_0x4b76('0x2')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize['INTEGER']},'AdditionalPhones':{'type':Sequelize[_0x4b76('0x2')]},'priority':{'type':Sequelize[_0x4b76('0x4')](0x2)[_0x4b76('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize['NOW']},'dialTimezone':{'type':Sequelize[_0x4b76('0x2')]},'utcOffset':{'type':Sequelize[_0x4b76('0x4')]}};
\ No newline at end of file
index 8ea4e0d..4cc7515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaaf=['Phones.OrderBy','omit','map','format','cf_%d','$and','pickBy','isEmpty','table','cm_contacts','setFields','toParam','text','getTags','findOne','model','Tag','rawAttributes','filters','intersection','attributes','fields','sort','filter','options','setTags','ids','OrderBy','items','item_types','ItemTypeId','description','phone','contact\x20phone\x20exists','PHONE','item','CmHopperId','ItemType.OrderBy','CmHopperAdditionalPhone','getAdditionalPhones','`ItemType`.OrderBy','duplicateAdditionalPhones','fromContactId','CmContactId','toContactId','rescheduleAdditionalPhones','hopperId','getHoppers','order','pick','ContactId','includeAll','include','rows','nolimit','getHopperFinals','getJscriptySessions','uploadCsv','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','socket_timestamp','binding_keys','binding_values','split','zipObject','firstName','No\x20firstName\x20column\x20specified','server/files/tmp','filename','0777','child_process','fork','../../components/import/cm/csv','File\x20uploaded\x20correctly!','pid','send','createReadStream','file','parse','meta','import','User','agent','No\x20ListId\x20specified','binding','No\x20phone\x20column\x20specified','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','importUpdates','../../components/import/cm/csvUpdates','getJourney','mail','chat','fax','whatsapp','voice','resolve','channel','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','type','source','destination','endtime','duration','createdAt','userDisposition','userSecondDisposition','fullname','DESC','VoiceCallReport','findAndCountAll','startCase','Website','Account','closed','closedAt','note','disposition','secondDisposition','thirdDisposition','UserId','key','Owner','browserName','customerPort','ratingMessage','ratingValue','referer','subject','openchannel','sortBy','reverse','value','slice','moment','bluebird','util','path','lodash','squel','papaparse','ioredis','../../config/logger','../../config/environment','../../config/environment/shared','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','index','getOptions','findAll','query','CmContact','find','catch','describe','tags','keys','startsWith','cf_','columnName','analytics','CmCustomField','length','displayName','alias','custom','values','info','Custom\x20field\x20%s\x20not\x20found\x20on\x20cm_contacts\x20table','forEach','merge','body','from','get','mergeWith','isArray','join','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','MailMessage','SmsInteraction','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','CmHopperHistory','ReportAgentPreview','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','each','duplicates','$or','where','ListId','findOrCreate','spread','hasOwnProperty','push','contact','all','show','params','Tags','color','tag','ContactItemType','ItemType','sequelize','literal'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcaaf,0x199));var _0xfcaa=function(_0x51c703,_0x48d443){_0x51c703=_0x51c703-0x0;var _0x39cd28=_0xcaaf[_0x51c703];return _0x39cd28;};'use strict';var moment=require(_0xfcaa('0x0'));var BPromise=require(_0xfcaa('0x1'));var util=require(_0xfcaa('0x2'));var path=require(_0xfcaa('0x3'));var fs=require('fs');var _=require(_0xfcaa('0x4'));var squel=require(_0xfcaa('0x5'));var Papa=require(_0xfcaa('0x6'));var Redis=require(_0xfcaa('0x7'));var contacts=require('../../components/contacts');var qs=require('../../components/parsers/qs');var logger=require(_0xfcaa('0x8'))('api');var config=require(_0xfcaa('0x9'));var shared=require(_0xfcaa('0xa'));var db=require(_0xfcaa('0xb'))['db'];config[_0xfcaa('0xc')]=_[_0xfcaa('0xd')](config[_0xfcaa('0xc')],{'host':_0xfcaa('0xe'),'port':0x18eb});var socket=require(_0xfcaa('0xf'))(new Redis(config[_0xfcaa('0xc')]));require(_0xfcaa('0x10'))[_0xfcaa('0x11')](socket);function respondWithResult(_0x15ede1,_0x13d854){_0x13d854=_0x13d854||0xc8;return function(_0x4e8cda){if(_0x4e8cda){return _0x15ede1[_0xfcaa('0x12')](_0x13d854)[_0xfcaa('0x13')](_0x4e8cda);}};}function respondWithFilteredResult(_0x562b17,_0x305331){return function(_0xcb7b1f){if(_0xcb7b1f){var _0x3f6b29=typeof _0x305331[_0xfcaa('0x14')]===_0xfcaa('0x15')&&typeof _0x305331[_0xfcaa('0x16')]===_0xfcaa('0x15');var _0x2cabfa=_0xcb7b1f[_0xfcaa('0x17')];var _0x4331d6=_0x3f6b29?0x0:_0x305331['offset'];var _0x12ad7f=_0x3f6b29?_0xcb7b1f[_0xfcaa('0x17')]:_0x305331[_0xfcaa('0x14')]+_0x305331['limit'];var _0x5252d8;if(_0x12ad7f>=_0x2cabfa){_0x12ad7f=_0x2cabfa;_0x5252d8=0xc8;}else{_0x5252d8=0xce;}_0x562b17[_0xfcaa('0x12')](_0x5252d8);return _0x562b17[_0xfcaa('0x18')](_0xfcaa('0x19'),_0x4331d6+'-'+_0x12ad7f+'/'+_0x2cabfa)[_0xfcaa('0x13')](_0xcb7b1f);}return null;};}function saveUpdates(_0x475509){return function(_0x180029){if(_0x180029){return _0x180029[_0xfcaa('0x1a')](_0x475509)[_0xfcaa('0x1b')](function(_0x3447b1){return _0x3447b1;});}return null;};}function removeEntity(_0xc247fe){return function(_0x7094c5){if(_0x7094c5){return _0x7094c5[_0xfcaa('0x1c')]()[_0xfcaa('0x1b')](function(){_0xc247fe[_0xfcaa('0x12')](0xcc)[_0xfcaa('0x1d')]();});}};}function handleEntityNotFound(_0x195afd){return function(_0x14a905){if(!_0x14a905){_0x195afd[_0xfcaa('0x1e')](0x194);}return _0x14a905;};}function handleError(_0xdc6895,_0x3b3ca4){_0x3b3ca4=_0x3b3ca4||0x1f4;return function(_0x2dafbc){logger[_0xfcaa('0x1f')](_0x2dafbc[_0xfcaa('0x20')]);if(_0x2dafbc[_0xfcaa('0x21')]){delete _0x2dafbc[_0xfcaa('0x21')];}_0xdc6895['status'](_0x3b3ca4)['send'](_0x2dafbc);};}exports[_0xfcaa('0x22')]=function(_0x567485,_0x23963d){var _0xe02044={};return contacts['describe']()[_0xfcaa('0x1b')](function(_0x1655a8){_0xe02044=qs[_0xfcaa('0x23')](_0x1655a8,_0x567485);return contacts[_0xfcaa('0x24')](_0x567485[_0xfcaa('0x25')],_0x567485['user'],_0xe02044,_0x1655a8);})['then'](respondWithFilteredResult(_0x23963d,_0xe02044))['catch'](handleError(_0x23963d,null));};exports[_0xfcaa('0x1c')]=function(_0x127052,_0x5931ae){return db[_0xfcaa('0x26')][_0xfcaa('0x27')]({'where':{'id':_0x127052['params']['id']}})[_0xfcaa('0x1b')](handleEntityNotFound(_0x5931ae,null))[_0xfcaa('0x1b')](removeEntity(_0x5931ae,null))[_0xfcaa('0x28')](handleError(_0x5931ae,null));};exports[_0xfcaa('0x29')]=function(_0x59bbf1,_0x4b582e){return db[_0xfcaa('0x26')]['describe']()['then'](function(_0x49df45){delete _0x49df45[_0xfcaa('0x2a')];for(var _0x52a375=0x0;_0x52a375<Object[_0xfcaa('0x2b')](_0x49df45)['length'];_0x52a375++){var _0x271bc5=Object[_0xfcaa('0x2b')](_0x49df45)[_0x52a375];if(!_[_0xfcaa('0x2c')](_0x271bc5,_0xfcaa('0x2d'))){_0x49df45[_0x271bc5][_0xfcaa('0x2e')]=_0x271bc5;_0x49df45[_0x271bc5]['displayName']=_0x271bc5;}}return _0x49df45;})[_0xfcaa('0x1b')](function(_0x481c71){var _0x277e4d={'where':Boolean(_0x59bbf1[_0xfcaa('0x25')][_0xfcaa('0x2f')])===!![]?undefined:{'$or':[{'ListId':_0x59bbf1[_0xfcaa('0x25')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xfcaa('0x30')][_0xfcaa('0x24')](_0x277e4d)[_0xfcaa('0x1b')](function(_0x226f35){for(var _0x19597e=0x0;_0x19597e<_0x226f35[_0xfcaa('0x31')];_0x19597e++){var _0x4c1217=_0xfcaa('0x2d')+_0x226f35[_0x19597e]['id'];if(_0x481c71[_0x4c1217]){_0x481c71[_0x4c1217][_0xfcaa('0x2e')]=_0x4c1217;_0x481c71[_0x4c1217][_0xfcaa('0x32')]=_0x226f35[_0x19597e][_0xfcaa('0x33')];_0x481c71[_0x4c1217][_0xfcaa('0x34')]={'type':_0x226f35[_0x19597e]['type'],'values':_0x226f35[_0x19597e][_0xfcaa('0x35')]};}else{logger[_0xfcaa('0x36')](_0xfcaa('0x37'),_0x4c1217);}}Object['keys'](_0x481c71)[_0xfcaa('0x38')](function(_0x1ad8ea){if(!_0x481c71[_0x1ad8ea]['hasOwnProperty'](_0xfcaa('0x2e'))){delete _0x481c71[_0x1ad8ea];}});return _0x481c71;});})[_0xfcaa('0x1b')](respondWithResult(_0x4b582e,null))[_0xfcaa('0x28')](handleError(_0x4b582e,null));};exports[_0xfcaa('0x39')]=function(_0x4538a6,_0x6d12c0){var _0x227ed4;var _0x8b694c;var _0x501d51;if(_0x4538a6[_0xfcaa('0x3a')]['id']){delete _0x4538a6[_0xfcaa('0x3a')]['id'];}return db[_0xfcaa('0x26')]['findAll']({'where':{'id':[_0x4538a6['body']['to'],_0x4538a6[_0xfcaa('0x3a')][_0xfcaa('0x3b')]]}})['then'](function(_0x17af10){if(_0x17af10){if(_0x17af10[_0xfcaa('0x31')]!==0x2){return null;}_0x17af10[0x0]=_0x17af10[0x0]['get']({'plain':!![]});_0x17af10[0x1]=_0x17af10[0x1][_0xfcaa('0x3c')]({'plain':!![]});delete _0x17af10[0x0]['id'];delete _0x17af10[0x1]['id'];return _[_0xfcaa('0x3d')](_0x17af10[0x0],_0x17af10[0x1],function(_0x44c3d7,_0x361bf1){if(Array[_0xfcaa('0x3e')](_0x361bf1)&&!_0x361bf1['length']){return _0x44c3d7;}else if(!_0x361bf1){return _0x44c3d7;}});}})[_0xfcaa('0x1b')](handleEntityNotFound(_0x6d12c0,null))['then'](function(_0x363cf9){if(_0x363cf9){if(_0x363cf9['tags']&&_[_0xfcaa('0x3e')](_0x363cf9[_0xfcaa('0x2a')])){_0x363cf9['tags']=_0x363cf9[_0xfcaa('0x2a')][_0xfcaa('0x3f')]();}logger[_0xfcaa('0x36')](_0xfcaa('0x40'),_0x4538a6[_0xfcaa('0x3a')]['to'],_0x4538a6[_0xfcaa('0x3a')][_0xfcaa('0x3b')]);return db[_0xfcaa('0x41')][_0xfcaa('0x1c')]({'where':{'ContactId':[_0x4538a6['body']['to'],_0x4538a6[_0xfcaa('0x3a')][_0xfcaa('0x3b')]]}})[_0xfcaa('0x1b')](function(_0x5d9ae7){logger[_0xfcaa('0x36')](_0xfcaa('0x42'),_0x5d9ae7);return db[_0xfcaa('0x43')][_0xfcaa('0x1c')]({'where':{'ContactId':[_0x4538a6[_0xfcaa('0x3a')]['to'],_0x4538a6['body'][_0xfcaa('0x3b')]]}})[_0xfcaa('0x1b')](function(_0x64ea94){logger[_0xfcaa('0x36')](_0xfcaa('0x44'),_0x64ea94);return db[_0xfcaa('0x26')][_0xfcaa('0x45')](_0x363cf9);});});}})[_0xfcaa('0x1b')](function(_0x3e7c84){if(_0x3e7c84){_0x227ed4=_0x3e7c84;_0x8b694c={'ContactId':_0x227ed4['id']};_0x501d51={'where':{'ContactId':[_0x4538a6[_0xfcaa('0x3a')]['to'],_0x4538a6[_0xfcaa('0x3a')][_0xfcaa('0x3b')]]}};return db[_0xfcaa('0x46')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})['then'](function(){if(_0x227ed4){return db[_0xfcaa('0x47')]['update'](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db['ChatOfflineMessage'][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db['MailInteraction'][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})['then'](function(){if(_0x227ed4){return db[_0xfcaa('0x48')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db['MailInteraction'][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x48')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x49')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db['SmsMessage'][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x4a')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x4b')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x4c')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x4d')]['update'](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x4e')][_0xfcaa('0x1a')]({'CmContactId':_0x227ed4['id']},{'where':{'CmContactId':[_0x4538a6[_0xfcaa('0x3a')]['to'],_0x4538a6[_0xfcaa('0x3a')]['from']]}});}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x4f')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x50')]['update'](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x51')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db['VoiceCallReport']['update'](_0x8b694c,_0x501d51);}})['then'](function(){if(_0x227ed4){return db[_0xfcaa('0x52')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x53')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x54')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})['then'](function(){if(_0x227ed4){return db[_0xfcaa('0x55')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x56')]['update'](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x57')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})['then'](function(){if(_0x227ed4){return db[_0xfcaa('0x58')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})['then'](function(){if(_0x227ed4){return db[_0xfcaa('0x59')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return db[_0xfcaa('0x5a')][_0xfcaa('0x1a')](_0x8b694c,_0x501d51);}})['then'](function(){if(_0x227ed4){return db['CmContact']['destroy']({'where':{'id':[_0x4538a6[_0xfcaa('0x3a')]['to'],_0x4538a6[_0xfcaa('0x3a')][_0xfcaa('0x3b')]]}});}})[_0xfcaa('0x1b')](function(){if(_0x227ed4){return _0x227ed4;}})[_0xfcaa('0x1b')](respondWithResult(_0x6d12c0,null))[_0xfcaa('0x28')](handleError(_0x6d12c0,null));};exports['create']=function(_0x48d954,_0x2a5d7b){return db['CmContact'][_0xfcaa('0x29')]()[_0xfcaa('0x1b')](function(_0x3a007b){if(_0x48d954['body'][_0xfcaa('0x2a')]&&_[_0xfcaa('0x3e')](_0x48d954[_0xfcaa('0x3a')][_0xfcaa('0x2a')])){if(_0x48d954[_0xfcaa('0x3a')][_0xfcaa('0x2a')][_0xfcaa('0x31')]){_0x48d954[_0xfcaa('0x3a')][_0xfcaa('0x2a')]=_0x48d954[_0xfcaa('0x3a')][_0xfcaa('0x2a')]['join'](';')+';';}else{_0x48d954[_0xfcaa('0x3a')][_0xfcaa('0x2a')]=null;}}else{_0x48d954[_0xfcaa('0x3a')][_0xfcaa('0x2a')]=null;}if(!_['isNil'](_0x48d954[_0xfcaa('0x3a')][_0xfcaa('0x5b')])){var _0x461998=_0x48d954[_0xfcaa('0x3a')][_0xfcaa('0x5b')];if(!_[_0xfcaa('0x5c')](shared[_0xfcaa('0x5d')][_0x461998]))_0x48d954['body'][_0xfcaa('0x5e')]=shared[_0xfcaa('0x5d')][_0x461998][_0xfcaa('0x5e')];}return db[_0xfcaa('0x26')]['create'](_0x48d954[_0xfcaa('0x3a')],{'fields':_[_0xfcaa('0x2b')](_0x3a007b),'raw':!![]});})[_0xfcaa('0x1b')](function(_0xeb525a){if(_0x48d954[_0xfcaa('0x3a')][_0xfcaa('0x5f')]){return insertAdditionalPhones(_0xeb525a,_0x48d954[_0xfcaa('0x3a')][_0xfcaa('0x5f')]);}else{return _0xeb525a;}})[_0xfcaa('0x1b')](respondWithResult(_0x2a5d7b,0xc9))['catch'](handleError(_0x2a5d7b,null));};exports[_0xfcaa('0x60')]=function(_0x66b314,_0x21ca96){var _0x5a6853=0x0;var _0x2d0c15=0x0;var _0xf446bc=0x0;var _0x248107=[];return db[_0xfcaa('0x26')]['describe']()[_0xfcaa('0x1b')](function(_0x12d07e){return BPromise[_0xfcaa('0x61')](_0x66b314['body'],function(_0x291f39){var _0x49542b={'where':{'$or':[]},'defaults':_0x291f39,'fields':_[_0xfcaa('0x2b')](_0x12d07e),'raw':!![]};if(_0x291f39[_0xfcaa('0x62')]){for(var _0xe1ef26=0x0;_0xe1ef26<_0x291f39['duplicates'][_0xfcaa('0x31')];_0xe1ef26++){var _0x3b9f59={};_0x3b9f59[_0x291f39[_0xfcaa('0x62')][_0xe1ef26]]=_0x291f39[_0x291f39[_0xfcaa('0x62')][_0xe1ef26]];_0x49542b['where'][_0xfcaa('0x63')]['push'](_0x3b9f59);}_0x49542b[_0xfcaa('0x64')][_0xfcaa('0x65')]=_0x291f39[_0xfcaa('0x65')];}return db['CmContact'][_0xfcaa('0x66')](_0x49542b)[_0xfcaa('0x67')](function(_0x30e59b,_0x1f56e5){if(_0x1f56e5){if(_0x291f39[_0xfcaa('0x68')](_0xfcaa('0x5f'))){_0x248107[_0xfcaa('0x69')]({'contact':_0x30e59b,'additionalPhones':_0x291f39[_0xfcaa('0x5f')]});}_0x5a6853++;}else{_0xf446bc++;}})['catch'](function(){_0x2d0c15++;});});})[_0xfcaa('0x1b')](function(_0x54e819){if(_0x54e819){if(_0x248107[_0xfcaa('0x31')]>0x0){return new Promise(function(_0x746be){var _0x450692=[];for(var _0x47ea2e=0x0;_0x47ea2e<_0x248107[_0xfcaa('0x31')];_0x47ea2e++){_0x450692[_0xfcaa('0x69')](insertAdditionalPhones(_0x248107[_0x47ea2e][_0xfcaa('0x6a')],_0x248107[_0x47ea2e][_0xfcaa('0x5f')]));}Promise[_0xfcaa('0x6b')](_0x450692)['then'](function(){_0x746be(0x1);});})[_0xfcaa('0x1b')](function(){return{'success':_0x5a6853,'failure':_0x2d0c15,'duplicates':_0xf446bc};});}else{return{'success':_0x5a6853,'failure':_0x2d0c15,'duplicates':_0xf446bc};}}})['then'](respondWithResult(_0x21ca96,0xc9))[_0xfcaa('0x28')](handleError(_0x21ca96,null));};exports[_0xfcaa('0x6c')]=function(_0x2a7c50,_0x22182d){var _0x1634d1;return db[_0xfcaa('0x26')][_0xfcaa('0x29')]()[_0xfcaa('0x1b')](function(_0xe4ca96){return db['CmContact'][_0xfcaa('0x27')]({'where':{'id':_0x2a7c50[_0xfcaa('0x6d')]['id']},'include':[{'model':db['Tag'],'as':_0xfcaa('0x6e'),'attributes':['id',_0xfcaa('0x21'),_0xfcaa('0x6f')],'required':_0x2a7c50['query'][_0xfcaa('0x70')]?!![]:![]},{'model':db[_0xfcaa('0x4e')],'as':'Phones','where':{'CmContactId':_0x2a7c50['params']['id']},'required':![],'include':[{'model':db[_0xfcaa('0x71')],'as':_0xfcaa('0x72')}]}],'order':[db[_0xfcaa('0x73')][_0xfcaa('0x74')](_0xfcaa('0x75'))],'attributes':_['keys'](_0xe4ca96)});})[_0xfcaa('0x1b')](function(_0x5093ab){if(!_[_0xfcaa('0x5c')](_0x5093ab)){_0x1634d1=_0x5093ab[_0xfcaa('0x3c')]({'plain':!![]});var _0x25ca33={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x5093ab&&_0x5093ab['ListId']){if(_0x5093ab[_0xfcaa('0x65')]){_0x25ca33[_0xfcaa('0x64')]['$and'][_0xfcaa('0x69')]({'ListId':{'$ne':_0x5093ab[_0xfcaa('0x65')]}});}}return db[_0xfcaa('0x30')][_0xfcaa('0x24')](_0x25ca33);}})['then'](function(_0x3d7c9b){if(!_[_0xfcaa('0x5c')](_0x3d7c9b)){return _[_0xfcaa('0x76')](_0x1634d1,_[_0xfcaa('0x77')](_0x3d7c9b,function(_0x7edfff){return util[_0xfcaa('0x78')](_0xfcaa('0x79'),_0x7edfff['id']);}));}})[_0xfcaa('0x1b')](handleEntityNotFound(_0x22182d,null))[_0xfcaa('0x1b')](respondWithResult(_0x22182d,null))['catch'](handleError(_0x22182d,null));};exports['update']=function(_0x3d103a,_0x498bb7){var _0x41d1f3;if(_0x3d103a[_0xfcaa('0x3a')]['id']){delete _0x3d103a['body']['id'];}if(!_[_0xfcaa('0x5c')](_0x3d103a[_0xfcaa('0x3a')][_0xfcaa('0x5b')])){var _0x149b7c=_0x3d103a[_0xfcaa('0x3a')]['dialTimezone'];if(!_['isNil'](shared['timezones'][_0x149b7c]))_0x3d103a[_0xfcaa('0x3a')][_0xfcaa('0x5e')]=shared['timezones'][_0x149b7c][_0xfcaa('0x5e')];}return db[_0xfcaa('0x26')][_0xfcaa('0x27')]({'where':{'id':_0x3d103a[_0xfcaa('0x6d')]['id']}})[_0xfcaa('0x1b')](handleEntityNotFound(_0x498bb7,null))[_0xfcaa('0x1b')](saveUpdates(_0x3d103a[_0xfcaa('0x3a')],null))[_0xfcaa('0x1b')](function(_0x20c31e){_0x41d1f3=_0x20c31e;var _0x5e81c4={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x20c31e&&_0x20c31e[_0xfcaa('0x65')]){if(_0x20c31e[_0xfcaa('0x65')]){_0x5e81c4['where'][_0xfcaa('0x7a')][_0xfcaa('0x69')]({'ListId':{'$ne':_0x20c31e[_0xfcaa('0x65')]}});}}return db['CmCustomField'][_0xfcaa('0x24')](_0x5e81c4);})[_0xfcaa('0x1b')](function(_0x5a244c){if(_0x5a244c){return _[_0xfcaa('0x76')](_[_0xfcaa('0x7b')](_0x3d103a[_0xfcaa('0x3a')],function(_0x51ff19,_0x4e0c1e){return _[_0xfcaa('0x2c')](_0x4e0c1e,'cf_');}),_['map'](_0x5a244c,function(_0x38cf96){return util['format'](_0xfcaa('0x79'),_0x38cf96['id']);}));}})['then'](function(_0x4a74f3){if(_0x4a74f3&&!_[_0xfcaa('0x7c')](_0x4a74f3)){var _0x4d6da8=squel[_0xfcaa('0x1a')]()[_0xfcaa('0x7d')](_0xfcaa('0x7e'))[_0xfcaa('0x7f')](_0x4a74f3)[_0xfcaa('0x64')]('id\x20=\x20?',_0x3d103a[_0xfcaa('0x6d')]['id'])[_0xfcaa('0x80')]();return db[_0xfcaa('0x73')]['query'](_0x4d6da8[_0xfcaa('0x81')],{'replacements':_0x4d6da8['values']});}})[_0xfcaa('0x1b')](function(){if(_0x3d103a[_0xfcaa('0x3a')]['phone']&&_0x41d1f3){return db['CmHopper'][_0xfcaa('0x1a')]({'phone':_0x3d103a[_0xfcaa('0x3a')]['phone'],'OrderBy':0x0},{'where':{'ContactId':_0x41d1f3['id']}});}})[_0xfcaa('0x1b')](function(){return _0x41d1f3;})[_0xfcaa('0x1b')](respondWithResult(_0x498bb7,null))[_0xfcaa('0x28')](handleError(_0x498bb7,null));};exports[_0xfcaa('0x82')]=function(_0x29b090,_0x13b5e3){var _0xec3e6b={};var _0x4802da={};var _0x44335e;var _0x105a14;return db[_0xfcaa('0x26')][_0xfcaa('0x83')]({'where':{'id':_0x29b090[_0xfcaa('0x6d')]['id']}})['then'](handleEntityNotFound(_0x13b5e3,null))[_0xfcaa('0x1b')](function(_0x9e8d3d){if(_0x9e8d3d){_0x44335e=_0x9e8d3d;_0x4802da[_0xfcaa('0x84')]=_[_0xfcaa('0x2b')](db[_0xfcaa('0x85')][_0xfcaa('0x86')]);_0x4802da[_0xfcaa('0x25')]=_['keys'](_0x29b090['query']);_0x4802da[_0xfcaa('0x87')]=_[_0xfcaa('0x88')](_0x4802da['model'],_0x4802da['query']);_0xec3e6b[_0xfcaa('0x89')]=_[_0xfcaa('0x88')](_0x4802da['model'],qs[_0xfcaa('0x8a')](_0x29b090[_0xfcaa('0x25')]['fields']));_0xec3e6b[_0xfcaa('0x89')]=_0xec3e6b[_0xfcaa('0x89')]['length']?_0xec3e6b[_0xfcaa('0x89')]:_0x4802da['model'];_0xec3e6b['order']=qs[_0xfcaa('0x8b')](_0x29b090[_0xfcaa('0x25')][_0xfcaa('0x8b')]);_0xec3e6b[_0xfcaa('0x64')]=qs[_0xfcaa('0x87')](_['pick'](_0x29b090[_0xfcaa('0x25')],_0x4802da[_0xfcaa('0x87')]));if(_0x29b090[_0xfcaa('0x25')][_0xfcaa('0x8c')]){_0xec3e6b[_0xfcaa('0x64')]=_['merge'](_0xec3e6b['where'],{'$or':_[_0xfcaa('0x77')](_0xec3e6b[_0xfcaa('0x89')],function(_0x6ce376){var _0x48aa9a={};_0x48aa9a[_0x6ce376]={'$like':'%'+_0x29b090[_0xfcaa('0x25')][_0xfcaa('0x8c')]+'%'};return _0x48aa9a;})});}_0xec3e6b=_[_0xfcaa('0x39')]({},_0xec3e6b,_0x29b090[_0xfcaa('0x8d')]);return _0x44335e[_0xfcaa('0x82')](_0xec3e6b);}})[_0xfcaa('0x1b')](function(_0x576fcf){if(_0x576fcf){_0x105a14=_0x576fcf[_0xfcaa('0x31')];if(!_0x29b090[_0xfcaa('0x25')][_0xfcaa('0x68')]('nolimit')){_0xec3e6b[_0xfcaa('0x16')]=qs['limit'](_0x29b090['query'][_0xfcaa('0x16')]);_0xec3e6b[_0xfcaa('0x14')]=qs[_0xfcaa('0x14')](_0x29b090['query']['offset']);}return _0x44335e[_0xfcaa('0x82')](_0xec3e6b);}})[_0xfcaa('0x1b')](function(_0x1bd5c2){if(_0x1bd5c2){return _0x1bd5c2?{'count':_0x105a14,'rows':_0x1bd5c2}:null;}})[_0xfcaa('0x1b')](respondWithResult(_0x13b5e3,null))['catch'](handleError(_0x13b5e3,null));};exports[_0xfcaa('0x8e')]=function(_0x424b13,_0x4d5db5){if(_0x424b13[_0xfcaa('0x3a')]['id']){delete _0x424b13['body']['id'];}return db[_0xfcaa('0x26')][_0xfcaa('0x83')]({'where':{'id':_0x424b13[_0xfcaa('0x6d')]['id']}})[_0xfcaa('0x1b')](handleEntityNotFound(_0x4d5db5,null))[_0xfcaa('0x1b')](function(_0x1294aa){if(_0x1294aa){return _0x1294aa['setTags'](_0x424b13[_0xfcaa('0x3a')][_0xfcaa('0x8f')]||[]);}return null;})['then'](respondWithResult(_0x4d5db5,null))['catch'](handleError(_0x4d5db5,null));};exports['setAdditionalPhones']=function(_0x40422c,_0x4380f8){var _0x2d5320=[];_0x2d5320['push'](addAdditionalPhones(_0x40422c[_0xfcaa('0x3a')]));Promise[_0xfcaa('0x6b')](_0x2d5320)['then'](function(){_0x2d5320=[];_0x2d5320[_0xfcaa('0x69')](deleteCmHopperPhones(_0x40422c[_0xfcaa('0x3a')]['id']));_0x2d5320['push'](addCmHopperPhones(_0x40422c[_0xfcaa('0x3a')]['id']));Promise[_0xfcaa('0x6b')](_0x2d5320)['then'](function(){return[0x1];})[_0xfcaa('0x1b')](respondWithResult(_0x4380f8,null));});};function addAdditionalPhones(_0x3f791c){var _0x97e625;return new Promise(function(_0x1b6d5b){return db[_0xfcaa('0x4e')][_0xfcaa('0x1c')]({'where':{'CmContactId':_0x3f791c['id']}})[_0xfcaa('0x1b')](function(){db['ContactItemType'][_0xfcaa('0x24')]({'raw':!![],'attributes':['id',_0xfcaa('0x90')]})['then'](function(_0x139cff){var _0x5f1878=[];for(var _0x38056c=0x0;_0x38056c<_0x3f791c[_0xfcaa('0x91')][_0xfcaa('0x31')];_0x38056c++){var _0x2a369d=_0x3f791c[_0xfcaa('0x92')]?_[_0xfcaa('0x5c')](_0x3f791c['item_types'][_0x38056c])?'':_0x3f791c[_0xfcaa('0x92')][_0x38056c]:_0x3f791c[_0xfcaa('0x91')][_0x38056c]['ItemTypeId']?_0x3f791c[_0xfcaa('0x91')][_0x38056c][_0xfcaa('0x93')]:'';var _0x48aeac=_[_0xfcaa('0x5c')](_0x3f791c[_0xfcaa('0x91')][_0x38056c][_0xfcaa('0x94')])?'':_0x3f791c['items'][_0x38056c][_0xfcaa('0x94')];var _0x1c9664=_0x2a369d+':'+_0x3f791c[_0xfcaa('0x91')][_0x38056c][_0xfcaa('0x95')]+'§'+_0x48aeac;if(_[_0xfcaa('0x5c')](_0x97e625))_0x97e625=_0x1c9664;else _0x97e625+=';'+_0x1c9664;var _0x5a7311=null;var _0x182804=null;if(_0x3f791c['item_types']){if(!_['isNil'](_0x3f791c[_0xfcaa('0x92')][_0x38056c])){_0x182804=_[_0xfcaa('0x27')](_0x139cff,function(_0x2ecafc){return _0x2ecafc['id']===_0x3f791c[_0xfcaa('0x92')][_0x38056c];});if(!_[_0xfcaa('0x5c')](_0x182804)){_0x5a7311=_0x182804[_0xfcaa('0x90')];}}}else{if(!_['isNil'](_0x3f791c['items'][_0x38056c])){_0x182804=_[_0xfcaa('0x27')](_0x139cff,function(_0xb055de){return _0xb055de['id']===_0x3f791c[_0xfcaa('0x91')][_0x38056c][_0xfcaa('0x93')];});if(!_['isNil'](_0x182804)){_0x5a7311=_0x38056c;}}}if(_['isNil'](_0x5a7311)){_0x5a7311=0x64;}_0x5f1878[_0xfcaa('0x69')](addAdditionalPhone(_0x3f791c['id'],_0x3f791c['items'][_0x38056c]['phone'],_0x3f791c[_0xfcaa('0x92')]?_[_0xfcaa('0x5c')](_0x3f791c['item_types'][_0x38056c])?null:_0x3f791c[_0xfcaa('0x92')][_0x38056c]:_0x3f791c['items'][_0x38056c][_0xfcaa('0x93')]?_0x3f791c['items'][_0x38056c][_0xfcaa('0x93')]:null,_0x5a7311,_0x48aeac));}Promise[_0xfcaa('0x6b')](_0x5f1878)[_0xfcaa('0x1b')](function(){db[_0xfcaa('0x26')][_0xfcaa('0x1a')]({'AdditionalPhones':_0x97e625},{'where':{'id':_0x3f791c['id']}})[_0xfcaa('0x1b')](function(){_0x1b6d5b(0x1);});});});});});}function addAdditionalPhone(_0x50b518,_0x3a4533,_0x3a06fb,_0x58fb63,_0xdc60d9){return db[_0xfcaa('0x4e')][_0xfcaa('0x27')]({'where':{'CmContactId':_0x50b518,'item':_0x3a4533}})[_0xfcaa('0x1b')](function(_0xa8ee10){if(_0xa8ee10)logger['info'](_0xfcaa('0x96'),_0xa8ee10);else{db[_0xfcaa('0x4e')]['create']({'CmContactId':_0x50b518,'item':_0x3a4533,'ItemTypeId':_0x3a06fb,'OrderBy':_0x58fb63,'ItemClass':_0xfcaa('0x97'),'description':_0xdc60d9});}});}function deleteCmHopperPhones(_0x4a77db){return new Promise(function(_0x1bb01a){return db['CmHopper']['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x4a77db}})['then'](function(_0x1efcd8){db['CmHopperAdditionalPhone']['destroy']({'where':{'CmHopperId':{'$in':_['map'](_0x1efcd8,'id')}}});})['then'](function(){_0x1bb01a(0x1);});});}function addCmHopperPhones(_0x1066a8){return new Promise(function(_0x1be4a9){return db['CmHopper'][_0xfcaa('0x24')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1066a8}})[_0xfcaa('0x1b')](function(_0x7f1839){var _0x29d05d=[];_[_0xfcaa('0x77')](_0x7f1839,function(_0x219808){_0x29d05d[_0xfcaa('0x69')](createCmHopperPhone(_0x1066a8,_0x219808['id']));});Promise[_0xfcaa('0x6b')](_0x29d05d)['then'](function(){_0x1be4a9(0x1);});});});}function createCmHopperPhone(_0x38cb03,_0x3657bf){return new Promise(function(_0xb15fd1){db['CmContactHasItem'][_0xfcaa('0x24')]({'raw':!![],'attributes':[_0xfcaa('0x98'),_0xfcaa('0x90')],'where':{'CmContactId':_0x38cb03,'ItemClass':_0xfcaa('0x97')},'include':[{'model':db[_0xfcaa('0x71')],'attributes':[_0xfcaa('0x90')],'as':_0xfcaa('0x72')}],'order':[_0xfcaa('0x90'),db[_0xfcaa('0x73')][_0xfcaa('0x74')]('`ItemType`.OrderBy')]})['then'](function(_0x1457b7){var _0x4de4f6=0x1;var _0x361d2e=_[_0xfcaa('0x77')](_0x1457b7,function(_0x574f30){_0x574f30[_0xfcaa('0x99')]=_0x3657bf;_0x574f30[_0xfcaa('0x95')]=_0x574f30['item'];_0x574f30['OrderBy']=_0x4de4f6;delete _0x574f30[_0xfcaa('0x9a')];_0x4de4f6=_0x4de4f6+0x1;return _0x574f30;});return db[_0xfcaa('0x9b')][_0xfcaa('0x60')](_0x361d2e,{});})[_0xfcaa('0x1b')](function(){_0xb15fd1(0x1);});});}function insertAdditionalPhones(_0x51febb,_0x3260a8){return new Promise(function(_0x3d74e6){var _0x20ec34=[];for(var _0x576c0b=0x0;_0x576c0b<_0x3260a8[_0xfcaa('0x31')];_0x576c0b++){var _0x117c0d=_0x3260a8[_0x576c0b];_0x20ec34[_0xfcaa('0x69')](parseContactItemType(_0x117c0d));}Promise[_0xfcaa('0x6b')](_0x20ec34)[_0xfcaa('0x1b')](function(){var _0x100339={'id':_0x51febb['id'],'items':_0x3260a8};return addAdditionalPhones(_0x100339)[_0xfcaa('0x1b')](function(){return addCmHopperPhones(_0x51febb['id']);});})[_0xfcaa('0x1b')](function(){_0x3d74e6(_0x51febb);});});}function parseContactItemType(_0x555754){return new Promise(function(_0x37b8c5){if(_0x555754[_0xfcaa('0x68')]('ItemTypeId')){_0x37b8c5(_0x555754);}else{return db['ContactItemType'][_0xfcaa('0x27')]({'where':{'name':_0x555754[_0xfcaa('0x72')]}})[_0xfcaa('0x1b')](function(_0x8ac373){if(_[_0xfcaa('0x5c')](_0x8ac373))_0x555754[_0xfcaa('0x93')]=null;else _0x555754[_0xfcaa('0x93')]=_0x8ac373['id'];_0x37b8c5(_0x555754);});}});}exports[_0xfcaa('0x9c')]=function(_0x43a427,_0x469fbd){return db['CmContactHasItem'][_0xfcaa('0x24')]({'raw':!![],'where':{'CmContactId':_0x43a427[_0xfcaa('0x6d')]['id'],'ItemClass':'PHONE'},'include':[{'model':db[_0xfcaa('0x71')],'as':_0xfcaa('0x72')}],'order':[[_0xfcaa('0x90')],[db['sequelize']['literal'](_0xfcaa('0x9d'))]]})[_0xfcaa('0x1b')](function(_0x2386e6){return _0x2386e6;})['then'](respondWithResult(_0x469fbd,null))[_0xfcaa('0x28')](handleError(_0x469fbd,null));};exports[_0xfcaa('0x9e')]=function(_0x4eccec,_0x4f3a9f){return db[_0xfcaa('0x4e')][_0xfcaa('0x24')]({'raw':!![],'where':{'CmContactId':_0x4eccec[_0xfcaa('0x3a')][_0xfcaa('0x9f')]}})['then'](function(_0x97c05b){var _0x1b4ee5=_[_0xfcaa('0x77')](_0x97c05b,function(_0x4313d6){_0x4313d6[_0xfcaa('0xa0')]=_0x4eccec['body'][_0xfcaa('0xa1')];return _0x4313d6;});return db[_0xfcaa('0x4e')][_0xfcaa('0x60')](_0x1b4ee5,{});})[_0xfcaa('0x1b')](function(){return addCmHopperPhones(_0x4eccec['body'][_0xfcaa('0xa1')]);})[_0xfcaa('0x1b')](function(){return['ok'];})[_0xfcaa('0x1b')](respondWithResult(_0x4f3a9f,null))[_0xfcaa('0x28')](handleError(_0x4f3a9f,null));};exports[_0xfcaa('0xa2')]=function(_0x147f5e,_0xcc3100){var _0x2cdaac=[];_0x2cdaac[_0xfcaa('0x69')](createCmHopperPhone(_0x147f5e[_0xfcaa('0x3a')]['id'],_0x147f5e[_0xfcaa('0x3a')][_0xfcaa('0xa3')]));Promise[_0xfcaa('0x6b')](_0x2cdaac)['then'](function(){return[0x1];})[_0xfcaa('0x1b')](respondWithResult(_0xcc3100,null));};exports[_0xfcaa('0xa4')]=function(_0x5b9f21,_0x16252f){var _0x220928={'raw':![],'where':{}};var _0x280814={};var _0x5aa3ba={'count':0x0,'rows':[]};return db['CmContact'][_0xfcaa('0x83')]({'where':{'id':_0x5b9f21['params']['id']}})['then'](handleEntityNotFound(_0x16252f,null))[_0xfcaa('0x1b')](function(_0x5cf352){if(_0x5cf352){_0x280814['model']=_[_0xfcaa('0x2b')](db[_0xfcaa('0x41')][_0xfcaa('0x86')]);_0x280814[_0xfcaa('0x25')]=_[_0xfcaa('0x2b')](_0x5b9f21[_0xfcaa('0x25')]);_0x280814[_0xfcaa('0x87')]=_[_0xfcaa('0x88')](_0x280814[_0xfcaa('0x84')],_0x280814[_0xfcaa('0x25')]);_0x220928[_0xfcaa('0x89')]=_[_0xfcaa('0x88')](_0x280814[_0xfcaa('0x84')],qs[_0xfcaa('0x8a')](_0x5b9f21[_0xfcaa('0x25')][_0xfcaa('0x8a')]));_0x220928['attributes']=_0x220928['attributes']['length']?_0x220928[_0xfcaa('0x89')]:_0x280814[_0xfcaa('0x84')];if(!_0x5b9f21[_0xfcaa('0x25')]['hasOwnProperty']('nolimit')){_0x220928[_0xfcaa('0x16')]=qs[_0xfcaa('0x16')](_0x5b9f21[_0xfcaa('0x25')]['limit']);_0x220928[_0xfcaa('0x14')]=qs[_0xfcaa('0x14')](_0x5b9f21[_0xfcaa('0x25')][_0xfcaa('0x14')]);}_0x220928[_0xfcaa('0xa5')]=qs['sort'](_0x5b9f21[_0xfcaa('0x25')][_0xfcaa('0x8b')]);_0x220928['where']=qs['filters'](_[_0xfcaa('0xa6')](_0x5b9f21[_0xfcaa('0x25')],_0x280814[_0xfcaa('0x87')]));_0x220928[_0xfcaa('0x64')][_0xfcaa('0xa7')]=_0x5cf352['id'];if(_0x5b9f21[_0xfcaa('0x25')][_0xfcaa('0x8c')]){_0x220928['where']=_[_0xfcaa('0x39')](_0x220928[_0xfcaa('0x64')],{'$or':_[_0xfcaa('0x77')](_0x220928[_0xfcaa('0x89')],function(_0x306427){var _0x5b126d={};_0x5b126d[_0x306427]={'$like':'%'+_0x5b9f21[_0xfcaa('0x25')][_0xfcaa('0x8c')]+'%'};return _0x5b126d;})});}_0x220928=_[_0xfcaa('0x39')]({},_0x220928,_0x5b9f21[_0xfcaa('0x8d')]);return db[_0xfcaa('0x41')]['count']({'where':_0x220928[_0xfcaa('0x64')]})[_0xfcaa('0x1b')](function(_0x54cf6e){_0x5aa3ba['count']=_0x54cf6e;if(_0x5b9f21[_0xfcaa('0x25')][_0xfcaa('0xa8')]){_0x220928[_0xfcaa('0xa9')]=[{'all':!![]}];}return db[_0xfcaa('0x41')][_0xfcaa('0x24')](_0x220928);})[_0xfcaa('0x1b')](function(_0x435e9a){_0x5aa3ba[_0xfcaa('0xaa')]=_0x435e9a;return _0x5aa3ba;});}})[_0xfcaa('0x1b')](respondWithFilteredResult(_0x16252f,_0x220928))[_0xfcaa('0x28')](handleError(_0x16252f,null));};exports['getHopperHistories']=function(_0x496d87,_0x1ffdae){var _0x6a4ca={'raw':!![],'where':{}};var _0x502598={};var _0xd668a4={'count':0x0,'rows':[]};return db[_0xfcaa('0x26')]['findOne']({'where':{'id':_0x496d87[_0xfcaa('0x6d')]['id']}})[_0xfcaa('0x1b')](handleEntityNotFound(_0x1ffdae,null))['then'](function(_0x50d518){if(_0x50d518){_0x502598['model']=_[_0xfcaa('0x2b')](db[_0xfcaa('0x50')][_0xfcaa('0x86')]);_0x502598[_0xfcaa('0x25')]=_[_0xfcaa('0x2b')](_0x496d87[_0xfcaa('0x25')]);_0x502598[_0xfcaa('0x87')]=_[_0xfcaa('0x88')](_0x502598['model'],_0x502598[_0xfcaa('0x25')]);_0x6a4ca[_0xfcaa('0x89')]=_['intersection'](_0x502598['model'],qs['fields'](_0x496d87[_0xfcaa('0x25')][_0xfcaa('0x8a')]));_0x6a4ca[_0xfcaa('0x89')]=_0x6a4ca[_0xfcaa('0x89')][_0xfcaa('0x31')]?_0x6a4ca[_0xfcaa('0x89')]:_0x502598[_0xfcaa('0x84')];if(!_0x496d87[_0xfcaa('0x25')][_0xfcaa('0x68')](_0xfcaa('0xab'))){_0x6a4ca[_0xfcaa('0x16')]=qs[_0xfcaa('0x16')](_0x496d87[_0xfcaa('0x25')][_0xfcaa('0x16')]);_0x6a4ca[_0xfcaa('0x14')]=qs[_0xfcaa('0x14')](_0x496d87[_0xfcaa('0x25')][_0xfcaa('0x14')]);}_0x6a4ca['order']=qs[_0xfcaa('0x8b')](_0x496d87[_0xfcaa('0x25')][_0xfcaa('0x8b')]);_0x6a4ca[_0xfcaa('0x64')]=qs[_0xfcaa('0x87')](_[_0xfcaa('0xa6')](_0x496d87['query'],_0x502598['filters']));_0x6a4ca[_0xfcaa('0x64')][_0xfcaa('0xa7')]=_0x50d518['id'];if(_0x496d87['query'][_0xfcaa('0x8c')]){_0x6a4ca['where']=_[_0xfcaa('0x39')](_0x6a4ca[_0xfcaa('0x64')],{'$or':_[_0xfcaa('0x77')](_0x6a4ca['attributes'],function(_0x3627fd){var _0x187b55={};_0x187b55[_0x3627fd]={'$like':'%'+_0x496d87['query'][_0xfcaa('0x8c')]+'%'};return _0x187b55;})});}_0x6a4ca=_[_0xfcaa('0x39')]({},_0x6a4ca,_0x496d87['options']);return db[_0xfcaa('0x50')][_0xfcaa('0x17')]({'where':_0x6a4ca['where']})[_0xfcaa('0x1b')](function(_0x321eb6){_0xd668a4[_0xfcaa('0x17')]=_0x321eb6;if(_0x496d87[_0xfcaa('0x25')][_0xfcaa('0xa8')]){_0x6a4ca[_0xfcaa('0xa9')]=[{'all':!![]}];}return db[_0xfcaa('0x50')][_0xfcaa('0x24')](_0x6a4ca);})[_0xfcaa('0x1b')](function(_0x5e960f){_0xd668a4[_0xfcaa('0xaa')]=_0x5e960f;return _0xd668a4;});}})[_0xfcaa('0x1b')](respondWithFilteredResult(_0x1ffdae,_0x6a4ca))[_0xfcaa('0x28')](handleError(_0x1ffdae,null));};exports[_0xfcaa('0xac')]=function(_0x1fec72,_0x584392){var _0x3aee67={'raw':!![],'where':{}};var _0x56c74c={};var _0x4fe08b={'count':0x0,'rows':[]};return db['CmContact'][_0xfcaa('0x83')]({'where':{'id':_0x1fec72[_0xfcaa('0x6d')]['id']}})[_0xfcaa('0x1b')](handleEntityNotFound(_0x584392,null))['then'](function(_0x3bdcc3){if(_0x3bdcc3){_0x56c74c[_0xfcaa('0x84')]=_[_0xfcaa('0x2b')](db[_0xfcaa('0x4f')][_0xfcaa('0x86')]);_0x56c74c[_0xfcaa('0x25')]=_['keys'](_0x1fec72['query']);_0x56c74c['filters']=_['intersection'](_0x56c74c[_0xfcaa('0x84')],_0x56c74c['query']);_0x3aee67['attributes']=_['intersection'](_0x56c74c[_0xfcaa('0x84')],qs[_0xfcaa('0x8a')](_0x1fec72['query'][_0xfcaa('0x8a')]));_0x3aee67[_0xfcaa('0x89')]=_0x3aee67[_0xfcaa('0x89')][_0xfcaa('0x31')]?_0x3aee67['attributes']:_0x56c74c[_0xfcaa('0x84')];if(!_0x1fec72[_0xfcaa('0x25')][_0xfcaa('0x68')]('nolimit')){_0x3aee67['limit']=qs[_0xfcaa('0x16')](_0x1fec72['query'][_0xfcaa('0x16')]);_0x3aee67[_0xfcaa('0x14')]=qs[_0xfcaa('0x14')](_0x1fec72['query'][_0xfcaa('0x14')]);}_0x3aee67['order']=qs['sort'](_0x1fec72[_0xfcaa('0x25')]['sort']);_0x3aee67[_0xfcaa('0x64')]=qs[_0xfcaa('0x87')](_[_0xfcaa('0xa6')](_0x1fec72[_0xfcaa('0x25')],_0x56c74c[_0xfcaa('0x87')]));_0x3aee67['where'][_0xfcaa('0xa7')]=_0x3bdcc3['id'];if(_0x1fec72['query']['filter']){_0x3aee67[_0xfcaa('0x64')]=_[_0xfcaa('0x39')](_0x3aee67[_0xfcaa('0x64')],{'$or':_[_0xfcaa('0x77')](_0x3aee67[_0xfcaa('0x89')],function(_0x2063f7){var _0x50d700={};_0x50d700[_0x2063f7]={'$like':'%'+_0x1fec72['query'][_0xfcaa('0x8c')]+'%'};return _0x50d700;})});}_0x3aee67=_[_0xfcaa('0x39')]({},_0x3aee67,_0x1fec72[_0xfcaa('0x8d')]);return db[_0xfcaa('0x4f')][_0xfcaa('0x17')]({'where':_0x3aee67['where']})['then'](function(_0x193256){_0x4fe08b['count']=_0x193256;if(_0x1fec72['query'][_0xfcaa('0xa8')]){_0x3aee67[_0xfcaa('0xa9')]=[{'all':!![]}];}return db[_0xfcaa('0x4f')]['findAll'](_0x3aee67);})[_0xfcaa('0x1b')](function(_0x4175e6){_0x4fe08b['rows']=_0x4175e6;return _0x4fe08b;});}})[_0xfcaa('0x1b')](respondWithFilteredResult(_0x584392,_0x3aee67))['catch'](handleError(_0x584392,null));};exports[_0xfcaa('0xad')]=function(_0x583428,_0x2dec18){var _0x3f99fb={'raw':!![],'where':{}};var _0x207cff={};var _0x19a971={'count':0x0,'rows':[]};return db['CmContact'][_0xfcaa('0x83')]({'where':{'id':_0x583428['params']['id']}})[_0xfcaa('0x1b')](handleEntityNotFound(_0x2dec18,null))[_0xfcaa('0x1b')](function(_0x3b598a){if(_0x3b598a){_0x207cff[_0xfcaa('0x84')]=_['keys'](db[_0xfcaa('0x57')][_0xfcaa('0x86')]);_0x207cff[_0xfcaa('0x25')]=_[_0xfcaa('0x2b')](_0x583428['query']);_0x207cff[_0xfcaa('0x87')]=_['intersection'](_0x207cff['model'],_0x207cff[_0xfcaa('0x25')]);_0x3f99fb[_0xfcaa('0x89')]=_[_0xfcaa('0x88')](_0x207cff[_0xfcaa('0x84')],qs[_0xfcaa('0x8a')](_0x583428[_0xfcaa('0x25')][_0xfcaa('0x8a')]));_0x3f99fb[_0xfcaa('0x89')]=_0x3f99fb['attributes'][_0xfcaa('0x31')]?_0x3f99fb[_0xfcaa('0x89')]:_0x207cff[_0xfcaa('0x84')];if(!_0x583428[_0xfcaa('0x25')][_0xfcaa('0x68')](_0xfcaa('0xab'))){_0x3f99fb['limit']=qs['limit'](_0x583428[_0xfcaa('0x25')]['limit']);_0x3f99fb[_0xfcaa('0x14')]=qs['offset'](_0x583428[_0xfcaa('0x25')]['offset']);}_0x3f99fb['order']=qs[_0xfcaa('0x8b')](_0x583428[_0xfcaa('0x25')]['sort']);_0x3f99fb[_0xfcaa('0x64')]=qs[_0xfcaa('0x87')](_['pick'](_0x583428[_0xfcaa('0x25')],_0x207cff[_0xfcaa('0x87')]));_0x3f99fb[_0xfcaa('0x64')]['ContactId']=_0x3b598a['id'];if(_0x583428[_0xfcaa('0x25')][_0xfcaa('0x8c')]){_0x3f99fb[_0xfcaa('0x64')]=_[_0xfcaa('0x39')](_0x3f99fb['where'],{'$or':_[_0xfcaa('0x77')](_0x3f99fb[_0xfcaa('0x89')],function(_0x27fb61){var _0x1bffcd={};_0x1bffcd[_0x27fb61]={'$like':'%'+_0x583428[_0xfcaa('0x25')][_0xfcaa('0x8c')]+'%'};return _0x1bffcd;})});}_0x3f99fb=_['merge']({},_0x3f99fb,_0x583428[_0xfcaa('0x8d')]);return db['JscriptySessionReport']['count']({'where':_0x3f99fb['where']})[_0xfcaa('0x1b')](function(_0x1f65fa){_0x19a971[_0xfcaa('0x17')]=_0x1f65fa;if(_0x583428[_0xfcaa('0x25')][_0xfcaa('0xa8')]){_0x3f99fb['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0xfcaa('0x24')](_0x3f99fb);})[_0xfcaa('0x1b')](function(_0x12976a){_0x19a971[_0xfcaa('0xaa')]=_0x12976a;return _0x19a971;});}})[_0xfcaa('0x1b')](respondWithFilteredResult(_0x2dec18,_0x3f99fb))[_0xfcaa('0x28')](handleError(_0x2dec18,null));};exports[_0xfcaa('0xae')]=function(_0x12b531,_0x4842e5){try{if(!_0x12b531[_0xfcaa('0x3a')][_0xfcaa('0x65')]){throw new Error('No\x20ListId\x20specified');}if(!_0x12b531[_0xfcaa('0x3a')]['binding_keys']){throw new Error(_0xfcaa('0xaf'));}if(!_0x12b531[_0xfcaa('0x3a')]['binding_values']){throw new Error(_0xfcaa('0xb0'));}if(!_0x12b531[_0xfcaa('0x3a')][_0xfcaa('0xb1')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x3570dc=_0x12b531[_0xfcaa('0x3a')][_0xfcaa('0xb2')]['split'](',');var _0x18fc66=_0x12b531[_0xfcaa('0x3a')][_0xfcaa('0xb3')][_0xfcaa('0xb4')](',');if(!_0x3570dc[_0xfcaa('0x31')]||!_0x18fc66[_0xfcaa('0x31')]||_0x3570dc[_0xfcaa('0x31')]!==_0x18fc66[_0xfcaa('0x31')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x12b531['body'][_0xfcaa('0x8a')]=_[_0xfcaa('0xb5')](_0x3570dc,_0x18fc66);if(!_0x12b531[_0xfcaa('0x3a')]['fields'][_0xfcaa('0x95')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x12b531[_0xfcaa('0x3a')]['fields'][_0xfcaa('0xb6')]){throw new Error(_0xfcaa('0xb7'));}var _0x3a420e=path[_0xfcaa('0x3f')](config['root'],_0xfcaa('0xb8'),_0x12b531['file'][_0xfcaa('0xb9')]);fs['chmodSync'](_0x3a420e,parseInt(_0xfcaa('0xba'),0x8));var _0x394f8d=require(_0xfcaa('0xbb'))[_0xfcaa('0xbc')](path['join'](__dirname,_0xfcaa('0xbd')),[_0x3a420e,_0x12b531[_0xfcaa('0x3a')][_0xfcaa('0xb2')],_0x12b531[_0xfcaa('0x3a')][_0xfcaa('0xb3')],_0x12b531[_0xfcaa('0x3a')]['ListId'],_0x12b531[_0xfcaa('0x3a')]['CompanyId'],_0x12b531['body'][_0xfcaa('0x62')],_0x12b531['body'][_0xfcaa('0xb1')]]);return _0x4842e5[_0xfcaa('0x12')](0xc8)[_0xfcaa('0x13')]({'message':_0xfcaa('0xbe'),'pid':_0x394f8d[_0xfcaa('0xbf')]});}catch(_0x3b8621){return _0x4842e5[_0xfcaa('0x12')](0x1f4)[_0xfcaa('0xc0')](_0x3b8621);}};exports['upload']=function(_0x3ea31c,_0x4a9a43){var _0x417618=fs[_0xfcaa('0xc1')](_0x3ea31c[_0xfcaa('0xc2')]['path']);Papa[_0xfcaa('0xc3')](_0x417618,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x300355){return _0x4a9a43['status'](0xc8)[_0xfcaa('0x13')]({'file':_0x3ea31c[_0xfcaa('0xc2')],'fields':_0x300355[_0xfcaa('0xc4')][_0xfcaa('0x8a')]});}});};exports[_0xfcaa('0xc5')]=function(_0x4d36fd,_0xec1eea){return db[_0xfcaa('0xc6')][_0xfcaa('0x24')]({'raw':!![],'attributes':['id'],'where':{'role':_0xfcaa('0xc7')}})[_0xfcaa('0x1b')](function(_0x21bd65){var _0x2349e3=![];if(!_0x4d36fd[_0xfcaa('0x3a')]['ListId']){throw new Error(_0xfcaa('0xc8'));}if(!_0x4d36fd['body'][_0xfcaa('0xc9')][_0xfcaa('0x95')]){throw new Error(_0xfcaa('0xca'));}if(!_0x4d36fd[_0xfcaa('0x3a')][_0xfcaa('0xc9')]['firstName']){throw new Error(_0xfcaa('0xb7'));}if(!_0x4d36fd[_0xfcaa('0x3a')][_0xfcaa('0xb1')]){throw new Error(_0xfcaa('0xcb'));}var _0xfb5a78=require('child_process')['fork'](path[_0xfcaa('0x3f')](__dirname,_0xfcaa('0xcc')),[_0x4d36fd['params']['id'],JSON[_0xfcaa('0xcd')](_0x4d36fd[_0xfcaa('0x3a')]),JSON[_0xfcaa('0xcd')](_0x21bd65)]);_0xfb5a78['on'](_0xfcaa('0xce'),function(){_0x2349e3=!![];return _0xec1eea[_0xfcaa('0x12')](0xc8)[_0xfcaa('0x13')]({'message':_0xfcaa('0xcf'),'pid':_0xfb5a78['pid']});});_0xfb5a78['on'](_0xfcaa('0xd0'),function(_0x3f248a){if(_0x3f248a&&!_0x2349e3){return _0xec1eea[_0xfcaa('0x12')](0x1f4)[_0xfcaa('0x13')]({'message':_0xfcaa('0xd1'),'pid':_0xfb5a78[_0xfcaa('0xbf')]});}});})[_0xfcaa('0x28')](handleError(_0xec1eea,null));};exports[_0xfcaa('0xd2')]=function(_0x37becd,_0x4c5acc){return db['User'][_0xfcaa('0x24')]({'raw':!![],'attributes':['id'],'where':{'role':_0xfcaa('0xc7')}})[_0xfcaa('0x1b')](function(_0x1ec2f3){var _0x1276e8=![];if(!_0x37becd['body'][_0xfcaa('0x65')]){throw new Error(_0xfcaa('0xc8'));}if(!_0x37becd[_0xfcaa('0x3a')][_0xfcaa('0xc9')]['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x37becd[_0xfcaa('0x3a')][_0xfcaa('0xc9')][_0xfcaa('0xb6')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x37becd['body']['socket_timestamp']){throw new Error(_0xfcaa('0xcb'));}var _0x16ef47=require('child_process')[_0xfcaa('0xbc')](path['join'](__dirname,_0xfcaa('0xd3')),[_0x37becd['params']['id'],JSON[_0xfcaa('0xcd')](_0x37becd[_0xfcaa('0x3a')]),JSON[_0xfcaa('0xcd')](_0x1ec2f3)]);_0x16ef47['on']('message',function(){_0x1276e8=!![];return _0x4c5acc['status'](0xc8)[_0xfcaa('0x13')]({'message':_0xfcaa('0xcf'),'pid':_0x16ef47[_0xfcaa('0xbf')]});});_0x16ef47['on'](_0xfcaa('0xd0'),function(_0x19d2e0){if(_0x19d2e0&&!_0x1276e8){return _0x4c5acc[_0xfcaa('0x12')](0x1f4)[_0xfcaa('0x13')]({'message':_0xfcaa('0xd1'),'pid':_0x16ef47[_0xfcaa('0xbf')]});}});})[_0xfcaa('0x28')](handleError(_0x4c5acc,null));};exports[_0xfcaa('0xd4')]=function(_0x5032f8,_0x70a5e0){var _0x3872d8=[_0xfcaa('0xd5'),_0xfcaa('0xd6'),'sms','openchannel',_0xfcaa('0xd7'),_0xfcaa('0xd8'),_0xfcaa('0xd9')];var _0x1bf4e1={'offset':0x0,'order':qs[_0xfcaa('0x8b')]('-createdAt')},_0x8c9431={'count':0x0,'rows':[]};Promise[_0xfcaa('0xda')]()[_0xfcaa('0x1b')](function(){if(_0x5032f8[_0xfcaa('0x25')][_0xfcaa('0xdb')]){if(!_['includes'](_0x3872d8,_0x5032f8['query'][_0xfcaa('0xdb')][_0xfcaa('0xdc')]())){throw new Error(_0xfcaa('0xdd'));}_0x3872d8=[_0x5032f8[_0xfcaa('0x25')][_0xfcaa('0xdb')][_0xfcaa('0xdc')]()];}if(_0x5032f8[_0xfcaa('0x25')][_0xfcaa('0xde')]){try{var _0x25604e=JSON['parse'](_0x5032f8[_0xfcaa('0x25')]['range']);if(!moment(_0x25604e[_0xfcaa('0x3b')])[_0xfcaa('0xdf')]()){throw new Error(_0xfcaa('0xe0'));}if(!moment(_0x25604e['to'])[_0xfcaa('0xdf')]()){throw new Error(_0xfcaa('0xe1'));}}catch(_0x3ed517){throw new Error(_0xfcaa('0xe2'));}}if(!_0x5032f8[_0xfcaa('0x25')][_0xfcaa('0x68')](_0xfcaa('0xab'))){_0x1bf4e1[_0xfcaa('0x16')]=qs[_0xfcaa('0x16')](_0x5032f8['query'][_0xfcaa('0x16')]||0xa);_0x1bf4e1[_0xfcaa('0x14')]=qs[_0xfcaa('0x14')](_0x5032f8['query'][_0xfcaa('0x14')]);}var _0x1469db=_0x3872d8['map'](function(_0x3962d3){if(_0x3962d3===_0xfcaa('0xd9')){var _0x546cbb={'attributes':['id',_0xfcaa('0xe3'),_0xfcaa('0xe4'),_0xfcaa('0xe5'),_0xfcaa('0xe6'),'callerid','starttime',_0xfcaa('0xe7'),_0xfcaa('0xe8'),'note',_0xfcaa('0xe9'),_0xfcaa('0xea'),_0xfcaa('0xeb'),'userThirdDisposition','UserId'],'where':{'ContactId':_0x5032f8['params']['id']},'include':[{'model':db[_0xfcaa('0xc6')],'as':_0xfcaa('0xc6'),'attributes':['id','name',_0xfcaa('0xec'),_0xfcaa('0x33')]}],'order':[[_0xfcaa('0xe9'),_0xfcaa('0xed')]]};if(_0x5032f8[_0xfcaa('0x25')][_0xfcaa('0xde')]){_0x546cbb[_0xfcaa('0x64')][_0xfcaa('0xe9')]={'$gte':_0x25604e['from'],'$lte':_0x25604e['to']};}return db[_0xfcaa('0xee')][_0xfcaa('0xef')](_0x546cbb)[_0xfcaa('0x1b')](function(_0x80f604){_0x8c9431[_0xfcaa('0x17')]+=_0x80f604[_0xfcaa('0x17')];return _['map'](_0x80f604[_0xfcaa('0xaa')],function(_0x117e68){var _0x1e6e8c=_0x117e68['get']({'plain':!![]});_0x1e6e8c[_0xfcaa('0xdb')]=_0x3962d3;if(_0x1e6e8c[_0xfcaa('0xc6')]){_0x1e6e8c[_0xfcaa('0xc6')]={'id':_0x1e6e8c[_0xfcaa('0xc6')]['id'],'name':_0x1e6e8c['User'][_0xfcaa('0x21')],'fullname':_0x1e6e8c[_0xfcaa('0xc6')][_0xfcaa('0xec')],'alias':_0x1e6e8c[_0xfcaa('0xc6')][_0xfcaa('0x33')]};}return _0x1e6e8c;});});}else{var _0x4cc126=_[_0xfcaa('0xf0')](_0x3962d3)+(_0x3962d3===_0xfcaa('0xd6')?_0xfcaa('0xf1'):_0xfcaa('0xf2'));var _0x3ed0f4={'attributes':['id',_0xfcaa('0xf3'),_0xfcaa('0xf4'),_0xfcaa('0xe9'),_0xfcaa('0xf5'),_0xfcaa('0xf6'),_0xfcaa('0xf7'),_0xfcaa('0xf8'),_0xfcaa('0xf9'),_0x4cc126+'Id'],'where':{'ContactId':_0x5032f8[_0xfcaa('0x6d')]['id']},'include':[{'model':db[_0x4cc126],'as':_0xfcaa('0xf2'),'attributes':['id',_0xfcaa('0x21'),_0xfcaa('0xfa')]},{'model':db[_0xfcaa('0xc6')],'as':_0xfcaa('0xfb'),'attributes':['id',_0xfcaa('0x21'),_0xfcaa('0xec')]},{'model':db['Tag'],'as':_0xfcaa('0x6e'),'attributes':['id',_0xfcaa('0x21'),'color'],'through':{'attributes':[]}}],'order':[['createdAt',_0xfcaa('0xed')]]};if(_0x5032f8[_0xfcaa('0x25')][_0xfcaa('0xde')]){_0x3ed0f4['where'][_0xfcaa('0xe9')]={'$gte':_0x25604e[_0xfcaa('0x3b')],'$lte':_0x25604e['to']};}switch(_0x3962d3){case _0xfcaa('0xd6'):_0x3ed0f4['attributes'][_0xfcaa('0x69')](_0xfcaa('0xfc'),'customerIp',_0xfcaa('0xfd'),'deviceModel','osName',_0xfcaa('0xfe'),'ratingType',_0xfcaa('0xff'),_0xfcaa('0x100'));break;case _0xfcaa('0xd5'):_0x3ed0f4['attributes']['push'](_0xfcaa('0x101'),'substatus');break;case _0xfcaa('0x102'):_0x3ed0f4['attributes'][_0xfcaa('0x69')]('externalUrl','threadId');break;}return db[_[_0xfcaa('0xf0')](_0x3962d3)+'Interaction'][_0xfcaa('0xef')](_0x3ed0f4)['then'](function(_0x1741a5){_0x8c9431[_0xfcaa('0x17')]+=_0x1741a5[_0xfcaa('0x17')];return _[_0xfcaa('0x77')](_0x1741a5[_0xfcaa('0xaa')],function(_0x1a0e1c){var _0x3a7e5a=_0x1a0e1c['get']({'plain':!![]});_0x3a7e5a[_0xfcaa('0xdb')]=_0x3962d3;if(_0x3a7e5a['Owner']){_0x3a7e5a[_0xfcaa('0xfb')]={'id':_0x3a7e5a[_0xfcaa('0xfb')]['id'],'name':_0x3a7e5a['Owner'][_0xfcaa('0x21')],'fullname':_0x3a7e5a['Owner'][_0xfcaa('0xec')]};}return _0x3a7e5a;});});}});return Promise['all'](_0x1469db);})[_0xfcaa('0x1b')](function(_0xf99837){return _(_0xf99837)['flatten']()[_0xfcaa('0x103')]('createdAt')[_0xfcaa('0x104')]()[_0xfcaa('0x105')]();})[_0xfcaa('0x1b')](function(_0x2dd35d){_0x8c9431[_0xfcaa('0xaa')]=_0x1bf4e1['limit']?_0x2dd35d[_0xfcaa('0x106')](_0x1bf4e1[_0xfcaa('0x14')],_0x1bf4e1[_0xfcaa('0x14')]+_0x1bf4e1['limit']):_0x2dd35d;return _0x8c9431;})['then'](respondWithFilteredResult(_0x70a5e0,_0x1bf4e1))[_0xfcaa('0x28')](handleError(_0x70a5e0,null));};
\ No newline at end of file
+var _0x8b4e=['OpenchannelMessage','CmContactHasItem','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','create','isArray','isNil','dialTimezone','timezones','utcOffset','additionalPhones','each','duplicates','where','$or','push','ListId','findOrCreate','spread','contact','all','show','Tag','Tags','Phones','ItemType','sequelize','Phones.OrderBy','$and','format','cf_%d','omit','pickBy','map','table','cm_contacts','setFields','id\x20=\x20?','text','phone','getTags','model','filters','intersection','fields','attributes','order','sort','pick','filter','options','nolimit','limit','findOne','setTags','ContactItemType','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','PHONE','CmHopperAdditionalPhone','item','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','bulkCreate','getAdditionalPhones','literal','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','hopperId','rawAttributes','includeAll','include','rows','getHopperHistories','getHopperFinals','ContactId','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','root','server/files/tmp','file','filename','0777','fork','CompanyId','pid','upload','createReadStream','path','meta','import','User','agent','binding','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','child_process','stringify','message','exit','error\x20child\x20process','importUpdates','../../components/import/cm/csvUpdates','start\x20child\x20process\x20correctly!','mail','chat','sms','openchannel','fax','whatsapp','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','uniqueid','source','callerid','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','fullname','DESC','findAndCountAll','startCase','Account','closed','closedAt','disposition','secondDisposition','thirdDisposition','UserId','Owner','color','customerIp','deviceModel','osName','ratingMessage','ratingType','referer','subject','substatus','externalUrl','threadId','Interaction','flatten','sortBy','reverse','value','slice','moment','bluebird','util','squel','papaparse','ioredis','../../components/contacts','../../components/parsers/qs','api','../../config/environment/shared','../../mysqldb','redis','defaults','socket.io-emitter','./cmContact.socket','register','status','json','offset','undefined','count','set','Content-Range','update','then','destroy','sendStatus','error','stack','name','send','index','getOptions','findAll','query','user','catch','CmContact','find','params','describe','tags','keys','length','startsWith','cf_','columnName','displayName','analytics','CmCustomField','alias','custom','type','values','hasOwnProperty','merge','body','from','get','mergeWith','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsMessage','FaxInteraction','OpenchannelInteraction'];(function(_0x383cb6,_0x67a28d){var _0x407e2e=function(_0x25bd90){while(--_0x25bd90){_0x383cb6['push'](_0x383cb6['shift']());}};_0x407e2e(++_0x67a28d);}(_0x8b4e,0x1be));var _0xe8b4=function(_0x33dba2,_0x5736c9){_0x33dba2=_0x33dba2-0x0;var _0x183636=_0x8b4e[_0x33dba2];return _0x183636;};'use strict';var moment=require(_0xe8b4('0x0'));var BPromise=require(_0xe8b4('0x1'));var util=require(_0xe8b4('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0xe8b4('0x3'));var Papa=require(_0xe8b4('0x4'));var Redis=require(_0xe8b4('0x5'));var contacts=require(_0xe8b4('0x6'));var qs=require(_0xe8b4('0x7'));var logger=require('../../config/logger')(_0xe8b4('0x8'));var config=require('../../config/environment');var shared=require(_0xe8b4('0x9'));var db=require(_0xe8b4('0xa'))['db'];config[_0xe8b4('0xb')]=_[_0xe8b4('0xc')](config[_0xe8b4('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xe8b4('0xd'))(new Redis(config['redis']));require(_0xe8b4('0xe'))[_0xe8b4('0xf')](socket);function respondWithResult(_0x221493,_0x2c03a7){_0x2c03a7=_0x2c03a7||0xc8;return function(_0x1be971){if(_0x1be971){return _0x221493[_0xe8b4('0x10')](_0x2c03a7)[_0xe8b4('0x11')](_0x1be971);}};}function respondWithFilteredResult(_0x512e32,_0x4e1530){return function(_0x295958){if(_0x295958){var _0x5a393a=typeof _0x4e1530[_0xe8b4('0x12')]===_0xe8b4('0x13')&&typeof _0x4e1530['limit']===_0xe8b4('0x13');var _0x4a92e8=_0x295958['count'];var _0x5bed71=_0x5a393a?0x0:_0x4e1530['offset'];var _0xab0221=_0x5a393a?_0x295958[_0xe8b4('0x14')]:_0x4e1530[_0xe8b4('0x12')]+_0x4e1530['limit'];var _0x4e34d5;if(_0xab0221>=_0x4a92e8){_0xab0221=_0x4a92e8;_0x4e34d5=0xc8;}else{_0x4e34d5=0xce;}_0x512e32[_0xe8b4('0x10')](_0x4e34d5);return _0x512e32[_0xe8b4('0x15')](_0xe8b4('0x16'),_0x5bed71+'-'+_0xab0221+'/'+_0x4a92e8)[_0xe8b4('0x11')](_0x295958);}return null;};}function saveUpdates(_0x2ba759){return function(_0x464c5e){if(_0x464c5e){return _0x464c5e[_0xe8b4('0x17')](_0x2ba759)[_0xe8b4('0x18')](function(_0x26ad70){return _0x26ad70;});}return null;};}function removeEntity(_0x4d22b7){return function(_0x4825ce){if(_0x4825ce){return _0x4825ce[_0xe8b4('0x19')]()[_0xe8b4('0x18')](function(){_0x4d22b7[_0xe8b4('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c8b47){return function(_0x57d768){if(!_0x57d768){_0x3c8b47[_0xe8b4('0x1a')](0x194);}return _0x57d768;};}function handleError(_0xb318bb,_0x50313d){_0x50313d=_0x50313d||0x1f4;return function(_0x4d7928){logger[_0xe8b4('0x1b')](_0x4d7928[_0xe8b4('0x1c')]);if(_0x4d7928[_0xe8b4('0x1d')]){delete _0x4d7928[_0xe8b4('0x1d')];}_0xb318bb[_0xe8b4('0x10')](_0x50313d)[_0xe8b4('0x1e')](_0x4d7928);};}exports[_0xe8b4('0x1f')]=function(_0x335db9,_0x314908){var _0x5b7017={};return contacts['describe']()[_0xe8b4('0x18')](function(_0xc75d44){_0x5b7017=qs[_0xe8b4('0x20')](_0xc75d44,_0x335db9);return contacts[_0xe8b4('0x21')](_0x335db9[_0xe8b4('0x22')],_0x335db9[_0xe8b4('0x23')],_0x5b7017,_0xc75d44);})[_0xe8b4('0x18')](respondWithFilteredResult(_0x314908,_0x5b7017))[_0xe8b4('0x24')](handleError(_0x314908,null));};exports['destroy']=function(_0x21ca0d,_0x4f9c5f){return db[_0xe8b4('0x25')][_0xe8b4('0x26')]({'where':{'id':_0x21ca0d[_0xe8b4('0x27')]['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0x4f9c5f,null))[_0xe8b4('0x18')](removeEntity(_0x4f9c5f,null))[_0xe8b4('0x24')](handleError(_0x4f9c5f,null));};exports[_0xe8b4('0x28')]=function(_0x5d8060,_0x20fc19){return db['CmContact']['describe']()['then'](function(_0x2b143f){delete _0x2b143f[_0xe8b4('0x29')];for(var _0x3ab014=0x0;_0x3ab014<Object[_0xe8b4('0x2a')](_0x2b143f)[_0xe8b4('0x2b')];_0x3ab014++){var _0x523eed=Object[_0xe8b4('0x2a')](_0x2b143f)[_0x3ab014];if(!_[_0xe8b4('0x2c')](_0x523eed,_0xe8b4('0x2d'))){_0x2b143f[_0x523eed][_0xe8b4('0x2e')]=_0x523eed;_0x2b143f[_0x523eed][_0xe8b4('0x2f')]=_0x523eed;}}return _0x2b143f;})[_0xe8b4('0x18')](function(_0x24edf3){var _0x4cfc23={'where':Boolean(_0x5d8060[_0xe8b4('0x22')][_0xe8b4('0x30')])===!![]?undefined:{'$or':[{'ListId':_0x5d8060['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0xe8b4('0x31')][_0xe8b4('0x21')](_0x4cfc23)[_0xe8b4('0x18')](function(_0x5ab883){for(var _0x3935e6=0x0;_0x3935e6<_0x5ab883[_0xe8b4('0x2b')];_0x3935e6++){var _0xdb2e2c=_0xe8b4('0x2d')+_0x5ab883[_0x3935e6]['id'];if(_0x24edf3[_0xdb2e2c]){_0x24edf3[_0xdb2e2c][_0xe8b4('0x2e')]=_0xdb2e2c;_0x24edf3[_0xdb2e2c][_0xe8b4('0x2f')]=_0x5ab883[_0x3935e6][_0xe8b4('0x32')];_0x24edf3[_0xdb2e2c][_0xe8b4('0x33')]={'type':_0x5ab883[_0x3935e6][_0xe8b4('0x34')],'values':_0x5ab883[_0x3935e6][_0xe8b4('0x35')]};}else{logger['info']('Custom\x20field\x20%s\x20not\x20found\x20on\x20cm_contacts\x20table',_0xdb2e2c);}}Object[_0xe8b4('0x2a')](_0x24edf3)['forEach'](function(_0x408143){if(!_0x24edf3[_0x408143][_0xe8b4('0x36')]('columnName')){delete _0x24edf3[_0x408143];}});return _0x24edf3;});})[_0xe8b4('0x18')](respondWithResult(_0x20fc19,null))['catch'](handleError(_0x20fc19,null));};exports[_0xe8b4('0x37')]=function(_0x2531d5,_0x5cba3c){var _0x29faf7;var _0x58c1b4;var _0x28d439;if(_0x2531d5['body']['id']){delete _0x2531d5['body']['id'];}return db[_0xe8b4('0x25')][_0xe8b4('0x21')]({'where':{'id':[_0x2531d5['body']['to'],_0x2531d5[_0xe8b4('0x38')][_0xe8b4('0x39')]]}})[_0xe8b4('0x18')](function(_0x1bd46b){if(_0x1bd46b){if(_0x1bd46b['length']!==0x2){return null;}_0x1bd46b[0x0]=_0x1bd46b[0x0][_0xe8b4('0x3a')]({'plain':!![]});_0x1bd46b[0x1]=_0x1bd46b[0x1][_0xe8b4('0x3a')]({'plain':!![]});delete _0x1bd46b[0x0]['id'];delete _0x1bd46b[0x1]['id'];return _[_0xe8b4('0x3b')](_0x1bd46b[0x0],_0x1bd46b[0x1],function(_0x1bc4a8,_0xfc7069){if(Array['isArray'](_0xfc7069)&&!_0xfc7069['length']){return _0x1bc4a8;}else if(!_0xfc7069){return _0x1bc4a8;}});}})[_0xe8b4('0x18')](handleEntityNotFound(_0x5cba3c,null))[_0xe8b4('0x18')](function(_0x2d62ef){if(_0x2d62ef){if(_0x2d62ef['tags']&&_['isArray'](_0x2d62ef[_0xe8b4('0x29')])){_0x2d62ef[_0xe8b4('0x29')]=_0x2d62ef[_0xe8b4('0x29')][_0xe8b4('0x3c')]();}logger[_0xe8b4('0x3d')](_0xe8b4('0x3e'),_0x2531d5['body']['to'],_0x2531d5[_0xe8b4('0x38')][_0xe8b4('0x39')]);return db[_0xe8b4('0x3f')]['destroy']({'where':{'ContactId':[_0x2531d5[_0xe8b4('0x38')]['to'],_0x2531d5[_0xe8b4('0x38')]['from']]}})[_0xe8b4('0x18')](function(_0x238f02){logger[_0xe8b4('0x3d')](_0xe8b4('0x40'),_0x238f02);return db[_0xe8b4('0x41')][_0xe8b4('0x19')]({'where':{'ContactId':[_0x2531d5['body']['to'],_0x2531d5[_0xe8b4('0x38')][_0xe8b4('0x39')]]}})['then'](function(_0xd6e620){logger[_0xe8b4('0x3d')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0xd6e620);return db['CmContact']['create'](_0x2d62ef);});});}})[_0xe8b4('0x18')](function(_0x26e805){if(_0x26e805){_0x29faf7=_0x26e805;_0x58c1b4={'ContactId':_0x29faf7['id']};_0x28d439={'where':{'ContactId':[_0x2531d5['body']['to'],_0x2531d5['body']['from']]}};return db[_0xe8b4('0x42')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x43')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x44')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x45')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x46')]['update'](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x45')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db['MailMessage'][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db['SmsInteraction']['update'](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x47')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x48')]['update'](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db['FaxMessage'][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x49')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x4a')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x4b')]['update']({'CmContactId':_0x29faf7['id']},{'where':{'CmContactId':[_0x2531d5['body']['to'],_0x2531d5['body'][_0xe8b4('0x39')]]}});}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x4c')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x4d')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x4e')]['update'](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x4f')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db['ChatQueueReport'][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x50')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x51')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x52')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x53')]['update'](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x54')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x55')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x56')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x57')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x25')][_0xe8b4('0x19')]({'where':{'id':[_0x2531d5[_0xe8b4('0x38')]['to'],_0x2531d5['body'][_0xe8b4('0x39')]]}});}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return _0x29faf7;}})[_0xe8b4('0x18')](respondWithResult(_0x5cba3c,null))[_0xe8b4('0x24')](handleError(_0x5cba3c,null));};exports[_0xe8b4('0x58')]=function(_0x27d65c,_0x121410){return db[_0xe8b4('0x25')][_0xe8b4('0x28')]()[_0xe8b4('0x18')](function(_0x12f0ca){if(_0x27d65c['body'][_0xe8b4('0x29')]&&_[_0xe8b4('0x59')](_0x27d65c[_0xe8b4('0x38')][_0xe8b4('0x29')])){if(_0x27d65c[_0xe8b4('0x38')]['tags']['length']){_0x27d65c['body'][_0xe8b4('0x29')]=_0x27d65c[_0xe8b4('0x38')]['tags'][_0xe8b4('0x3c')](';')+';';}else{_0x27d65c[_0xe8b4('0x38')][_0xe8b4('0x29')]=null;}}else{_0x27d65c[_0xe8b4('0x38')][_0xe8b4('0x29')]=null;}if(!_[_0xe8b4('0x5a')](_0x27d65c[_0xe8b4('0x38')][_0xe8b4('0x5b')])){var _0x130065=_0x27d65c[_0xe8b4('0x38')][_0xe8b4('0x5b')];if(!_[_0xe8b4('0x5a')](shared[_0xe8b4('0x5c')][_0x130065]))_0x27d65c['body'][_0xe8b4('0x5d')]=shared[_0xe8b4('0x5c')][_0x130065][_0xe8b4('0x5d')];}return db[_0xe8b4('0x25')][_0xe8b4('0x58')](_0x27d65c[_0xe8b4('0x38')],{'fields':_[_0xe8b4('0x2a')](_0x12f0ca),'raw':!![]});})[_0xe8b4('0x18')](function(_0x201be7){if(_0x27d65c['body'][_0xe8b4('0x5e')]){return insertAdditionalPhones(_0x201be7,_0x27d65c['body'][_0xe8b4('0x5e')]);}else{return _0x201be7;}})[_0xe8b4('0x18')](respondWithResult(_0x121410,0xc9))[_0xe8b4('0x24')](handleError(_0x121410,null));};exports['bulkCreate']=function(_0x175890,_0x68fde1){var _0x3f29c2=0x0;var _0x5a1d8c=0x0;var _0x461f5e=0x0;var _0x432ad6=[];return db[_0xe8b4('0x25')][_0xe8b4('0x28')]()[_0xe8b4('0x18')](function(_0x5c230e){return BPromise[_0xe8b4('0x5f')](_0x175890['body'],function(_0x3330ca){var _0x10aa2d={'where':{'$or':[]},'defaults':_0x3330ca,'fields':_['keys'](_0x5c230e),'raw':!![]};if(_0x3330ca[_0xe8b4('0x60')]){for(var _0x30458f=0x0;_0x30458f<_0x3330ca['duplicates'][_0xe8b4('0x2b')];_0x30458f++){var _0x31363b={};_0x31363b[_0x3330ca[_0xe8b4('0x60')][_0x30458f]]=_0x3330ca[_0x3330ca[_0xe8b4('0x60')][_0x30458f]];_0x10aa2d[_0xe8b4('0x61')][_0xe8b4('0x62')][_0xe8b4('0x63')](_0x31363b);}_0x10aa2d['where'][_0xe8b4('0x64')]=_0x3330ca[_0xe8b4('0x64')];}return db['CmContact'][_0xe8b4('0x65')](_0x10aa2d)[_0xe8b4('0x66')](function(_0x2ceeaf,_0x4dd422){if(_0x4dd422){if(_0x3330ca['hasOwnProperty'](_0xe8b4('0x5e'))){_0x432ad6[_0xe8b4('0x63')]({'contact':_0x2ceeaf,'additionalPhones':_0x3330ca[_0xe8b4('0x5e')]});}_0x3f29c2++;}else{_0x461f5e++;}})['catch'](function(){_0x5a1d8c++;});});})[_0xe8b4('0x18')](function(_0x202084){if(_0x202084){if(_0x432ad6[_0xe8b4('0x2b')]>0x0){return new Promise(function(_0x1aa802){var _0x4a6de8=[];for(var _0x8fab9f=0x0;_0x8fab9f<_0x432ad6[_0xe8b4('0x2b')];_0x8fab9f++){_0x4a6de8['push'](insertAdditionalPhones(_0x432ad6[_0x8fab9f][_0xe8b4('0x67')],_0x432ad6[_0x8fab9f][_0xe8b4('0x5e')]));}Promise[_0xe8b4('0x68')](_0x4a6de8)[_0xe8b4('0x18')](function(){_0x1aa802(0x1);});})['then'](function(){return{'success':_0x3f29c2,'failure':_0x5a1d8c,'duplicates':_0x461f5e};});}else{return{'success':_0x3f29c2,'failure':_0x5a1d8c,'duplicates':_0x461f5e};}}})[_0xe8b4('0x18')](respondWithResult(_0x68fde1,0xc9))[_0xe8b4('0x24')](handleError(_0x68fde1,null));};exports[_0xe8b4('0x69')]=function(_0x6c17c7,_0x25a0b8){var _0x57ae0e;return db[_0xe8b4('0x25')][_0xe8b4('0x28')]()['then'](function(_0x17de05){return db[_0xe8b4('0x25')]['find']({'where':{'id':_0x6c17c7[_0xe8b4('0x27')]['id']},'include':[{'model':db[_0xe8b4('0x6a')],'as':_0xe8b4('0x6b'),'attributes':['id',_0xe8b4('0x1d'),'color'],'required':_0x6c17c7[_0xe8b4('0x22')]['tag']?!![]:![]},{'model':db[_0xe8b4('0x4b')],'as':_0xe8b4('0x6c'),'where':{'CmContactId':_0x6c17c7['params']['id']},'required':![],'include':[{'model':db['ContactItemType'],'as':_0xe8b4('0x6d')}]}],'order':[db[_0xe8b4('0x6e')]['literal'](_0xe8b4('0x6f'))],'attributes':_[_0xe8b4('0x2a')](_0x17de05)});})[_0xe8b4('0x18')](function(_0x5db208){if(!_[_0xe8b4('0x5a')](_0x5db208)){_0x57ae0e=_0x5db208[_0xe8b4('0x3a')]({'plain':!![]});var _0x54ba9a={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x5db208&&_0x5db208[_0xe8b4('0x64')]){if(_0x5db208['ListId']){_0x54ba9a[_0xe8b4('0x61')][_0xe8b4('0x70')][_0xe8b4('0x63')]({'ListId':{'$ne':_0x5db208[_0xe8b4('0x64')]}});}}return db[_0xe8b4('0x31')][_0xe8b4('0x21')](_0x54ba9a);}})['then'](function(_0x1f2df5){if(!_[_0xe8b4('0x5a')](_0x1f2df5)){return _['omit'](_0x57ae0e,_['map'](_0x1f2df5,function(_0x10080a){return util[_0xe8b4('0x71')](_0xe8b4('0x72'),_0x10080a['id']);}));}})['then'](handleEntityNotFound(_0x25a0b8,null))[_0xe8b4('0x18')](respondWithResult(_0x25a0b8,null))[_0xe8b4('0x24')](handleError(_0x25a0b8,null));};exports[_0xe8b4('0x17')]=function(_0x25b6d8,_0x4d05f6){var _0x549607;if(_0x25b6d8[_0xe8b4('0x38')]['id']){delete _0x25b6d8['body']['id'];}if(!_[_0xe8b4('0x5a')](_0x25b6d8[_0xe8b4('0x38')][_0xe8b4('0x5b')])){var _0x250b74=_0x25b6d8[_0xe8b4('0x38')][_0xe8b4('0x5b')];if(!_[_0xe8b4('0x5a')](shared[_0xe8b4('0x5c')][_0x250b74]))_0x25b6d8[_0xe8b4('0x38')][_0xe8b4('0x5d')]=shared['timezones'][_0x250b74]['utcOffset'];}return db[_0xe8b4('0x25')][_0xe8b4('0x26')]({'where':{'id':_0x25b6d8['params']['id']}})['then'](handleEntityNotFound(_0x4d05f6,null))[_0xe8b4('0x18')](saveUpdates(_0x25b6d8[_0xe8b4('0x38')],null))['then'](function(_0x3ad8eb){_0x549607=_0x3ad8eb;var _0x471fd5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3ad8eb&&_0x3ad8eb[_0xe8b4('0x64')]){if(_0x3ad8eb[_0xe8b4('0x64')]){_0x471fd5['where'][_0xe8b4('0x70')][_0xe8b4('0x63')]({'ListId':{'$ne':_0x3ad8eb['ListId']}});}}return db[_0xe8b4('0x31')][_0xe8b4('0x21')](_0x471fd5);})[_0xe8b4('0x18')](function(_0x25f548){if(_0x25f548){return _[_0xe8b4('0x73')](_[_0xe8b4('0x74')](_0x25b6d8[_0xe8b4('0x38')],function(_0x55bcd0,_0x2526ab){return _[_0xe8b4('0x2c')](_0x2526ab,_0xe8b4('0x2d'));}),_[_0xe8b4('0x75')](_0x25f548,function(_0x27aaa8){return util[_0xe8b4('0x71')]('cf_%d',_0x27aaa8['id']);}));}})['then'](function(_0x4f45fd){if(_0x4f45fd&&!_['isEmpty'](_0x4f45fd)){var _0x2ad6e3=squel['update']()[_0xe8b4('0x76')](_0xe8b4('0x77'))[_0xe8b4('0x78')](_0x4f45fd)['where'](_0xe8b4('0x79'),_0x25b6d8[_0xe8b4('0x27')]['id'])['toParam']();return db['sequelize'][_0xe8b4('0x22')](_0x2ad6e3[_0xe8b4('0x7a')],{'replacements':_0x2ad6e3[_0xe8b4('0x35')]});}})[_0xe8b4('0x18')](function(){if(_0x25b6d8[_0xe8b4('0x38')][_0xe8b4('0x7b')]&&_0x549607){return db[_0xe8b4('0x3f')][_0xe8b4('0x17')]({'phone':_0x25b6d8['body']['phone'],'OrderBy':0x0},{'where':{'ContactId':_0x549607['id']}});}})['then'](function(){return _0x549607;})[_0xe8b4('0x18')](respondWithResult(_0x4d05f6,null))[_0xe8b4('0x24')](handleError(_0x4d05f6,null));};exports[_0xe8b4('0x7c')]=function(_0x25abfc,_0xd098e3){var _0x1ef277={};var _0x25c73e={};var _0x5723a4;var _0x2e05db;return db[_0xe8b4('0x25')]['findOne']({'where':{'id':_0x25abfc['params']['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0xd098e3,null))[_0xe8b4('0x18')](function(_0x6af0f9){if(_0x6af0f9){_0x5723a4=_0x6af0f9;_0x25c73e[_0xe8b4('0x7d')]=_[_0xe8b4('0x2a')](db['Tag']['rawAttributes']);_0x25c73e[_0xe8b4('0x22')]=_['keys'](_0x25abfc[_0xe8b4('0x22')]);_0x25c73e[_0xe8b4('0x7e')]=_[_0xe8b4('0x7f')](_0x25c73e['model'],_0x25c73e['query']);_0x1ef277['attributes']=_['intersection'](_0x25c73e[_0xe8b4('0x7d')],qs['fields'](_0x25abfc[_0xe8b4('0x22')][_0xe8b4('0x80')]));_0x1ef277[_0xe8b4('0x81')]=_0x1ef277[_0xe8b4('0x81')]['length']?_0x1ef277[_0xe8b4('0x81')]:_0x25c73e['model'];_0x1ef277[_0xe8b4('0x82')]=qs[_0xe8b4('0x83')](_0x25abfc[_0xe8b4('0x22')]['sort']);_0x1ef277[_0xe8b4('0x61')]=qs[_0xe8b4('0x7e')](_[_0xe8b4('0x84')](_0x25abfc['query'],_0x25c73e[_0xe8b4('0x7e')]));if(_0x25abfc[_0xe8b4('0x22')][_0xe8b4('0x85')]){_0x1ef277[_0xe8b4('0x61')]=_[_0xe8b4('0x37')](_0x1ef277[_0xe8b4('0x61')],{'$or':_[_0xe8b4('0x75')](_0x1ef277[_0xe8b4('0x81')],function(_0x2c7c2f){var _0x23b53c={};_0x23b53c[_0x2c7c2f]={'$like':'%'+_0x25abfc['query'][_0xe8b4('0x85')]+'%'};return _0x23b53c;})});}_0x1ef277=_[_0xe8b4('0x37')]({},_0x1ef277,_0x25abfc[_0xe8b4('0x86')]);return _0x5723a4['getTags'](_0x1ef277);}})['then'](function(_0x2f475a){if(_0x2f475a){_0x2e05db=_0x2f475a[_0xe8b4('0x2b')];if(!_0x25abfc[_0xe8b4('0x22')][_0xe8b4('0x36')](_0xe8b4('0x87'))){_0x1ef277[_0xe8b4('0x88')]=qs[_0xe8b4('0x88')](_0x25abfc[_0xe8b4('0x22')][_0xe8b4('0x88')]);_0x1ef277[_0xe8b4('0x12')]=qs[_0xe8b4('0x12')](_0x25abfc[_0xe8b4('0x22')]['offset']);}return _0x5723a4[_0xe8b4('0x7c')](_0x1ef277);}})[_0xe8b4('0x18')](function(_0x4d0e87){if(_0x4d0e87){return _0x4d0e87?{'count':_0x2e05db,'rows':_0x4d0e87}:null;}})['then'](respondWithResult(_0xd098e3,null))['catch'](handleError(_0xd098e3,null));};exports['setTags']=function(_0x59a476,_0x48bdac){if(_0x59a476[_0xe8b4('0x38')]['id']){delete _0x59a476[_0xe8b4('0x38')]['id'];}return db[_0xe8b4('0x25')][_0xe8b4('0x89')]({'where':{'id':_0x59a476[_0xe8b4('0x27')]['id']}})['then'](handleEntityNotFound(_0x48bdac,null))[_0xe8b4('0x18')](function(_0x2edd3f){if(_0x2edd3f){return _0x2edd3f[_0xe8b4('0x8a')](_0x59a476[_0xe8b4('0x38')]['ids']||[]);}return null;})[_0xe8b4('0x18')](respondWithResult(_0x48bdac,null))[_0xe8b4('0x24')](handleError(_0x48bdac,null));};exports['setAdditionalPhones']=function(_0x54727c,_0x278497){var _0x196617=[];_0x196617['push'](addAdditionalPhones(_0x54727c[_0xe8b4('0x38')]));Promise[_0xe8b4('0x68')](_0x196617)[_0xe8b4('0x18')](function(){_0x196617=[];_0x196617[_0xe8b4('0x63')](deleteCmHopperPhones(_0x54727c[_0xe8b4('0x38')]['id']));_0x196617[_0xe8b4('0x63')](addCmHopperPhones(_0x54727c[_0xe8b4('0x38')]['id']));Promise[_0xe8b4('0x68')](_0x196617)[_0xe8b4('0x18')](function(){return[0x1];})[_0xe8b4('0x18')](respondWithResult(_0x278497,null));});};function addAdditionalPhones(_0xd3f7e0){var _0xa530aa;return new Promise(function(_0xa3b0fd){return db[_0xe8b4('0x4b')][_0xe8b4('0x19')]({'where':{'CmContactId':_0xd3f7e0['id']}})['then'](function(){db[_0xe8b4('0x8b')][_0xe8b4('0x21')]({'raw':!![],'attributes':['id',_0xe8b4('0x8c')]})[_0xe8b4('0x18')](function(_0x366d21){var _0x3e0d50=[];for(var _0x5c13d2=0x0;_0x5c13d2<_0xd3f7e0[_0xe8b4('0x8d')][_0xe8b4('0x2b')];_0x5c13d2++){var _0x568fd1=_0xd3f7e0[_0xe8b4('0x8e')]?_[_0xe8b4('0x5a')](_0xd3f7e0['item_types'][_0x5c13d2])?'':_0xd3f7e0[_0xe8b4('0x8e')][_0x5c13d2]:_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x8f')]?_0xd3f7e0['items'][_0x5c13d2][_0xe8b4('0x8f')]:'';var _0x288782=_[_0xe8b4('0x5a')](_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x90')])?'':_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2]['description'];var _0x63b8a2=_0x568fd1+':'+_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x7b')]+'§'+_0x288782;if(_[_0xe8b4('0x5a')](_0xa530aa))_0xa530aa=_0x63b8a2;else _0xa530aa+=';'+_0x63b8a2;var _0xfb0b59=null;var _0x5bbbe0=null;if(_0xd3f7e0['item_types']){if(!_[_0xe8b4('0x5a')](_0xd3f7e0[_0xe8b4('0x8e')][_0x5c13d2])){_0x5bbbe0=_['find'](_0x366d21,function(_0x445749){return _0x445749['id']===_0xd3f7e0[_0xe8b4('0x8e')][_0x5c13d2];});if(!_[_0xe8b4('0x5a')](_0x5bbbe0)){_0xfb0b59=_0x5bbbe0['OrderBy'];}}}else{if(!_[_0xe8b4('0x5a')](_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2])){_0x5bbbe0=_[_0xe8b4('0x26')](_0x366d21,function(_0x21155e){return _0x21155e['id']===_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x8f')];});if(!_[_0xe8b4('0x5a')](_0x5bbbe0)){_0xfb0b59=_0x5c13d2;}}}if(_[_0xe8b4('0x5a')](_0xfb0b59)){_0xfb0b59=0x64;}_0x3e0d50['push'](addAdditionalPhone(_0xd3f7e0['id'],_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2]['phone'],_0xd3f7e0[_0xe8b4('0x8e')]?_[_0xe8b4('0x5a')](_0xd3f7e0[_0xe8b4('0x8e')][_0x5c13d2])?null:_0xd3f7e0[_0xe8b4('0x8e')][_0x5c13d2]:_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x8f')]?_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x8f')]:null,_0xfb0b59,_0x288782));}Promise['all'](_0x3e0d50)[_0xe8b4('0x18')](function(){db['CmContact'][_0xe8b4('0x17')]({'AdditionalPhones':_0xa530aa},{'where':{'id':_0xd3f7e0['id']}})[_0xe8b4('0x18')](function(){_0xa3b0fd(0x1);});});});});});}function addAdditionalPhone(_0x2cd6fe,_0x2da253,_0x569565,_0x3c838b,_0x50f741){return db[_0xe8b4('0x4b')]['find']({'where':{'CmContactId':_0x2cd6fe,'item':_0x2da253}})['then'](function(_0x124982){if(_0x124982)logger['info'](_0xe8b4('0x91'),_0x124982);else{db[_0xe8b4('0x4b')]['create']({'CmContactId':_0x2cd6fe,'item':_0x2da253,'ItemTypeId':_0x569565,'OrderBy':_0x3c838b,'ItemClass':_0xe8b4('0x92'),'description':_0x50f741});}});}function deleteCmHopperPhones(_0x33c7de){return new Promise(function(_0x2a7faf){return db['CmHopper'][_0xe8b4('0x21')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x33c7de}})[_0xe8b4('0x18')](function(_0x1ecf5b){db[_0xe8b4('0x93')]['destroy']({'where':{'CmHopperId':{'$in':_[_0xe8b4('0x75')](_0x1ecf5b,'id')}}});})[_0xe8b4('0x18')](function(){_0x2a7faf(0x1);});});}function addCmHopperPhones(_0x9030e6){return new Promise(function(_0x3616da){return db[_0xe8b4('0x3f')][_0xe8b4('0x21')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x9030e6}})['then'](function(_0x49e2d9){var _0x5bc287=[];_[_0xe8b4('0x75')](_0x49e2d9,function(_0x4623de){_0x5bc287[_0xe8b4('0x63')](createCmHopperPhone(_0x9030e6,_0x4623de['id']));});Promise[_0xe8b4('0x68')](_0x5bc287)['then'](function(){_0x3616da(0x1);});});});}function createCmHopperPhone(_0x1bdf8d,_0x32accd){return new Promise(function(_0x3ca75d){db[_0xe8b4('0x4b')][_0xe8b4('0x21')]({'raw':!![],'attributes':[_0xe8b4('0x94'),_0xe8b4('0x8c')],'where':{'CmContactId':_0x1bdf8d,'ItemClass':'PHONE'},'include':[{'model':db['ContactItemType'],'attributes':['OrderBy'],'as':_0xe8b4('0x6d')}],'order':[_0xe8b4('0x8c'),db[_0xe8b4('0x6e')]['literal'](_0xe8b4('0x95'))]})[_0xe8b4('0x18')](function(_0x3fa5ac){var _0x567acf=0x1;var _0x93039a=_[_0xe8b4('0x75')](_0x3fa5ac,function(_0x1cf963){_0x1cf963[_0xe8b4('0x96')]=_0x32accd;_0x1cf963['phone']=_0x1cf963[_0xe8b4('0x94')];_0x1cf963['OrderBy']=_0x567acf;delete _0x1cf963[_0xe8b4('0x97')];_0x567acf=_0x567acf+0x1;return _0x1cf963;});return db['CmHopperAdditionalPhone'][_0xe8b4('0x98')](_0x93039a,{});})[_0xe8b4('0x18')](function(){_0x3ca75d(0x1);});});}function insertAdditionalPhones(_0x34927d,_0x14f01f){return new Promise(function(_0x5dde49){var _0x1a0724=[];for(var _0x5be91e=0x0;_0x5be91e<_0x14f01f['length'];_0x5be91e++){var _0x331077=_0x14f01f[_0x5be91e];_0x1a0724['push'](parseContactItemType(_0x331077));}Promise[_0xe8b4('0x68')](_0x1a0724)[_0xe8b4('0x18')](function(){var _0x592514={'id':_0x34927d['id'],'items':_0x14f01f};return addAdditionalPhones(_0x592514)['then'](function(){return addCmHopperPhones(_0x34927d['id']);});})['then'](function(){_0x5dde49(_0x34927d);});});}function parseContactItemType(_0x137737){return new Promise(function(_0x5a0860){if(_0x137737[_0xe8b4('0x36')](_0xe8b4('0x8f'))){_0x5a0860(_0x137737);}else{return db[_0xe8b4('0x8b')][_0xe8b4('0x26')]({'where':{'name':_0x137737[_0xe8b4('0x6d')]}})[_0xe8b4('0x18')](function(_0x227a18){if(_['isNil'](_0x227a18))_0x137737[_0xe8b4('0x8f')]=null;else _0x137737[_0xe8b4('0x8f')]=_0x227a18['id'];_0x5a0860(_0x137737);});}});}exports[_0xe8b4('0x99')]=function(_0xadac7f,_0x10598d){return db[_0xe8b4('0x4b')][_0xe8b4('0x21')]({'raw':!![],'where':{'CmContactId':_0xadac7f['params']['id'],'ItemClass':_0xe8b4('0x92')},'include':[{'model':db[_0xe8b4('0x8b')],'as':_0xe8b4('0x6d')}],'order':[['OrderBy'],[db['sequelize'][_0xe8b4('0x9a')](_0xe8b4('0x95'))]]})[_0xe8b4('0x18')](function(_0x4d8d57){return _0x4d8d57;})[_0xe8b4('0x18')](respondWithResult(_0x10598d,null))[_0xe8b4('0x24')](handleError(_0x10598d,null));};exports[_0xe8b4('0x9b')]=function(_0x41831d,_0x38c7b3){return db[_0xe8b4('0x4b')]['findAll']({'raw':!![],'where':{'CmContactId':_0x41831d[_0xe8b4('0x38')]['fromContactId']}})['then'](function(_0x421a5c){var _0x253ada=_[_0xe8b4('0x75')](_0x421a5c,function(_0x30d6d0){_0x30d6d0[_0xe8b4('0x9c')]=_0x41831d['body'][_0xe8b4('0x9d')];return _0x30d6d0;});return db[_0xe8b4('0x4b')][_0xe8b4('0x98')](_0x253ada,{});})[_0xe8b4('0x18')](function(){return addCmHopperPhones(_0x41831d['body'][_0xe8b4('0x9d')]);})[_0xe8b4('0x18')](function(){return['ok'];})[_0xe8b4('0x18')](respondWithResult(_0x38c7b3,null))[_0xe8b4('0x24')](handleError(_0x38c7b3,null));};exports[_0xe8b4('0x9e')]=function(_0x32590f,_0x56c83f){var _0x2616da=[];_0x2616da[_0xe8b4('0x63')](createCmHopperPhone(_0x32590f[_0xe8b4('0x38')]['id'],_0x32590f['body'][_0xe8b4('0x9f')]));Promise[_0xe8b4('0x68')](_0x2616da)[_0xe8b4('0x18')](function(){return[0x1];})[_0xe8b4('0x18')](respondWithResult(_0x56c83f,null));};exports['getHoppers']=function(_0x52fea7,_0x55b9f7){var _0x275258={'raw':![],'where':{}};var _0x119384={};var _0x1ca833={'count':0x0,'rows':[]};return db[_0xe8b4('0x25')][_0xe8b4('0x89')]({'where':{'id':_0x52fea7[_0xe8b4('0x27')]['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0x55b9f7,null))[_0xe8b4('0x18')](function(_0x4ace7e){if(_0x4ace7e){_0x119384['model']=_[_0xe8b4('0x2a')](db[_0xe8b4('0x3f')][_0xe8b4('0xa0')]);_0x119384[_0xe8b4('0x22')]=_[_0xe8b4('0x2a')](_0x52fea7[_0xe8b4('0x22')]);_0x119384[_0xe8b4('0x7e')]=_['intersection'](_0x119384[_0xe8b4('0x7d')],_0x119384[_0xe8b4('0x22')]);_0x275258[_0xe8b4('0x81')]=_[_0xe8b4('0x7f')](_0x119384[_0xe8b4('0x7d')],qs[_0xe8b4('0x80')](_0x52fea7[_0xe8b4('0x22')][_0xe8b4('0x80')]));_0x275258[_0xe8b4('0x81')]=_0x275258['attributes'][_0xe8b4('0x2b')]?_0x275258[_0xe8b4('0x81')]:_0x119384[_0xe8b4('0x7d')];if(!_0x52fea7[_0xe8b4('0x22')][_0xe8b4('0x36')](_0xe8b4('0x87'))){_0x275258['limit']=qs[_0xe8b4('0x88')](_0x52fea7[_0xe8b4('0x22')][_0xe8b4('0x88')]);_0x275258['offset']=qs[_0xe8b4('0x12')](_0x52fea7[_0xe8b4('0x22')][_0xe8b4('0x12')]);}_0x275258[_0xe8b4('0x82')]=qs[_0xe8b4('0x83')](_0x52fea7[_0xe8b4('0x22')]['sort']);_0x275258[_0xe8b4('0x61')]=qs['filters'](_['pick'](_0x52fea7[_0xe8b4('0x22')],_0x119384['filters']));_0x275258[_0xe8b4('0x61')]['ContactId']=_0x4ace7e['id'];if(_0x52fea7['query'][_0xe8b4('0x85')]){_0x275258[_0xe8b4('0x61')]=_['merge'](_0x275258[_0xe8b4('0x61')],{'$or':_[_0xe8b4('0x75')](_0x275258['attributes'],function(_0x38cfbd){var _0x286f5d={};_0x286f5d[_0x38cfbd]={'$like':'%'+_0x52fea7[_0xe8b4('0x22')]['filter']+'%'};return _0x286f5d;})});}_0x275258=_[_0xe8b4('0x37')]({},_0x275258,_0x52fea7[_0xe8b4('0x86')]);return db['CmHopper'][_0xe8b4('0x14')]({'where':_0x275258[_0xe8b4('0x61')]})[_0xe8b4('0x18')](function(_0x33dec4){_0x1ca833[_0xe8b4('0x14')]=_0x33dec4;if(_0x52fea7[_0xe8b4('0x22')][_0xe8b4('0xa1')]){_0x275258[_0xe8b4('0xa2')]=[{'all':!![]}];}return db['CmHopper'][_0xe8b4('0x21')](_0x275258);})['then'](function(_0x2231c9){_0x1ca833[_0xe8b4('0xa3')]=_0x2231c9;return _0x1ca833;});}})[_0xe8b4('0x18')](respondWithFilteredResult(_0x55b9f7,_0x275258))[_0xe8b4('0x24')](handleError(_0x55b9f7,null));};exports[_0xe8b4('0xa4')]=function(_0x30ab5b,_0xfe3fa2){var _0x42fcf3={'raw':!![],'where':{}};var _0x3e0c46={};var _0x24aa17={'count':0x0,'rows':[]};return db[_0xe8b4('0x25')]['findOne']({'where':{'id':_0x30ab5b['params']['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0xfe3fa2,null))[_0xe8b4('0x18')](function(_0x19c181){if(_0x19c181){_0x3e0c46[_0xe8b4('0x7d')]=_[_0xe8b4('0x2a')](db[_0xe8b4('0x4d')][_0xe8b4('0xa0')]);_0x3e0c46[_0xe8b4('0x22')]=_[_0xe8b4('0x2a')](_0x30ab5b[_0xe8b4('0x22')]);_0x3e0c46[_0xe8b4('0x7e')]=_[_0xe8b4('0x7f')](_0x3e0c46[_0xe8b4('0x7d')],_0x3e0c46[_0xe8b4('0x22')]);_0x42fcf3[_0xe8b4('0x81')]=_[_0xe8b4('0x7f')](_0x3e0c46[_0xe8b4('0x7d')],qs[_0xe8b4('0x80')](_0x30ab5b[_0xe8b4('0x22')]['fields']));_0x42fcf3[_0xe8b4('0x81')]=_0x42fcf3[_0xe8b4('0x81')][_0xe8b4('0x2b')]?_0x42fcf3[_0xe8b4('0x81')]:_0x3e0c46[_0xe8b4('0x7d')];if(!_0x30ab5b['query'][_0xe8b4('0x36')](_0xe8b4('0x87'))){_0x42fcf3['limit']=qs['limit'](_0x30ab5b[_0xe8b4('0x22')][_0xe8b4('0x88')]);_0x42fcf3[_0xe8b4('0x12')]=qs[_0xe8b4('0x12')](_0x30ab5b[_0xe8b4('0x22')]['offset']);}_0x42fcf3['order']=qs[_0xe8b4('0x83')](_0x30ab5b['query'][_0xe8b4('0x83')]);_0x42fcf3[_0xe8b4('0x61')]=qs[_0xe8b4('0x7e')](_[_0xe8b4('0x84')](_0x30ab5b[_0xe8b4('0x22')],_0x3e0c46[_0xe8b4('0x7e')]));_0x42fcf3[_0xe8b4('0x61')]['ContactId']=_0x19c181['id'];if(_0x30ab5b[_0xe8b4('0x22')][_0xe8b4('0x85')]){_0x42fcf3['where']=_[_0xe8b4('0x37')](_0x42fcf3[_0xe8b4('0x61')],{'$or':_[_0xe8b4('0x75')](_0x42fcf3[_0xe8b4('0x81')],function(_0x1dfc66){var _0x5c7d09={};_0x5c7d09[_0x1dfc66]={'$like':'%'+_0x30ab5b[_0xe8b4('0x22')]['filter']+'%'};return _0x5c7d09;})});}_0x42fcf3=_['merge']({},_0x42fcf3,_0x30ab5b[_0xe8b4('0x86')]);return db[_0xe8b4('0x4d')]['count']({'where':_0x42fcf3[_0xe8b4('0x61')]})[_0xe8b4('0x18')](function(_0x2666d6){_0x24aa17['count']=_0x2666d6;if(_0x30ab5b['query'][_0xe8b4('0xa1')]){_0x42fcf3[_0xe8b4('0xa2')]=[{'all':!![]}];}return db[_0xe8b4('0x4d')][_0xe8b4('0x21')](_0x42fcf3);})['then'](function(_0x286e0f){_0x24aa17[_0xe8b4('0xa3')]=_0x286e0f;return _0x24aa17;});}})[_0xe8b4('0x18')](respondWithFilteredResult(_0xfe3fa2,_0x42fcf3))[_0xe8b4('0x24')](handleError(_0xfe3fa2,null));};exports[_0xe8b4('0xa5')]=function(_0xcd0227,_0x487ba9){var _0x493d6c={'raw':!![],'where':{}};var _0x26f50e={};var _0x645f88={'count':0x0,'rows':[]};return db[_0xe8b4('0x25')][_0xe8b4('0x89')]({'where':{'id':_0xcd0227[_0xe8b4('0x27')]['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0x487ba9,null))[_0xe8b4('0x18')](function(_0xa9f518){if(_0xa9f518){_0x26f50e[_0xe8b4('0x7d')]=_[_0xe8b4('0x2a')](db[_0xe8b4('0x4c')]['rawAttributes']);_0x26f50e[_0xe8b4('0x22')]=_[_0xe8b4('0x2a')](_0xcd0227[_0xe8b4('0x22')]);_0x26f50e[_0xe8b4('0x7e')]=_[_0xe8b4('0x7f')](_0x26f50e['model'],_0x26f50e[_0xe8b4('0x22')]);_0x493d6c['attributes']=_['intersection'](_0x26f50e[_0xe8b4('0x7d')],qs['fields'](_0xcd0227[_0xe8b4('0x22')]['fields']));_0x493d6c[_0xe8b4('0x81')]=_0x493d6c['attributes']['length']?_0x493d6c[_0xe8b4('0x81')]:_0x26f50e['model'];if(!_0xcd0227['query']['hasOwnProperty'](_0xe8b4('0x87'))){_0x493d6c[_0xe8b4('0x88')]=qs[_0xe8b4('0x88')](_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0x88')]);_0x493d6c['offset']=qs[_0xe8b4('0x12')](_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0x12')]);}_0x493d6c[_0xe8b4('0x82')]=qs['sort'](_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0x83')]);_0x493d6c[_0xe8b4('0x61')]=qs[_0xe8b4('0x7e')](_[_0xe8b4('0x84')](_0xcd0227[_0xe8b4('0x22')],_0x26f50e[_0xe8b4('0x7e')]));_0x493d6c['where'][_0xe8b4('0xa6')]=_0xa9f518['id'];if(_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0x85')]){_0x493d6c[_0xe8b4('0x61')]=_['merge'](_0x493d6c[_0xe8b4('0x61')],{'$or':_['map'](_0x493d6c[_0xe8b4('0x81')],function(_0x47c231){var _0x79936e={};_0x79936e[_0x47c231]={'$like':'%'+_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0x85')]+'%'};return _0x79936e;})});}_0x493d6c=_[_0xe8b4('0x37')]({},_0x493d6c,_0xcd0227[_0xe8b4('0x86')]);return db[_0xe8b4('0x4c')][_0xe8b4('0x14')]({'where':_0x493d6c['where']})[_0xe8b4('0x18')](function(_0x4e68c1){_0x645f88[_0xe8b4('0x14')]=_0x4e68c1;if(_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0xa1')]){_0x493d6c[_0xe8b4('0xa2')]=[{'all':!![]}];}return db[_0xe8b4('0x4c')][_0xe8b4('0x21')](_0x493d6c);})['then'](function(_0x551f4c){_0x645f88[_0xe8b4('0xa3')]=_0x551f4c;return _0x645f88;});}})[_0xe8b4('0x18')](respondWithFilteredResult(_0x487ba9,_0x493d6c))[_0xe8b4('0x24')](handleError(_0x487ba9,null));};exports[_0xe8b4('0xa7')]=function(_0x566f4c,_0x450df3){var _0x271d01={'raw':!![],'where':{}};var _0x1b5fd8={};var _0x43fb03={'count':0x0,'rows':[]};return db[_0xe8b4('0x25')][_0xe8b4('0x89')]({'where':{'id':_0x566f4c[_0xe8b4('0x27')]['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0x450df3,null))[_0xe8b4('0x18')](function(_0x1da9f9){if(_0x1da9f9){_0x1b5fd8[_0xe8b4('0x7d')]=_[_0xe8b4('0x2a')](db[_0xe8b4('0x54')]['rawAttributes']);_0x1b5fd8[_0xe8b4('0x22')]=_[_0xe8b4('0x2a')](_0x566f4c[_0xe8b4('0x22')]);_0x1b5fd8[_0xe8b4('0x7e')]=_[_0xe8b4('0x7f')](_0x1b5fd8['model'],_0x1b5fd8[_0xe8b4('0x22')]);_0x271d01['attributes']=_[_0xe8b4('0x7f')](_0x1b5fd8[_0xe8b4('0x7d')],qs[_0xe8b4('0x80')](_0x566f4c['query'][_0xe8b4('0x80')]));_0x271d01['attributes']=_0x271d01[_0xe8b4('0x81')][_0xe8b4('0x2b')]?_0x271d01[_0xe8b4('0x81')]:_0x1b5fd8[_0xe8b4('0x7d')];if(!_0x566f4c[_0xe8b4('0x22')][_0xe8b4('0x36')](_0xe8b4('0x87'))){_0x271d01[_0xe8b4('0x88')]=qs['limit'](_0x566f4c[_0xe8b4('0x22')]['limit']);_0x271d01[_0xe8b4('0x12')]=qs[_0xe8b4('0x12')](_0x566f4c[_0xe8b4('0x22')]['offset']);}_0x271d01[_0xe8b4('0x82')]=qs['sort'](_0x566f4c['query']['sort']);_0x271d01[_0xe8b4('0x61')]=qs[_0xe8b4('0x7e')](_[_0xe8b4('0x84')](_0x566f4c[_0xe8b4('0x22')],_0x1b5fd8[_0xe8b4('0x7e')]));_0x271d01[_0xe8b4('0x61')][_0xe8b4('0xa6')]=_0x1da9f9['id'];if(_0x566f4c[_0xe8b4('0x22')][_0xe8b4('0x85')]){_0x271d01['where']=_[_0xe8b4('0x37')](_0x271d01[_0xe8b4('0x61')],{'$or':_[_0xe8b4('0x75')](_0x271d01[_0xe8b4('0x81')],function(_0x470544){var _0x45d359={};_0x45d359[_0x470544]={'$like':'%'+_0x566f4c[_0xe8b4('0x22')][_0xe8b4('0x85')]+'%'};return _0x45d359;})});}_0x271d01=_['merge']({},_0x271d01,_0x566f4c[_0xe8b4('0x86')]);return db[_0xe8b4('0x54')][_0xe8b4('0x14')]({'where':_0x271d01['where']})['then'](function(_0x130bc7){_0x43fb03[_0xe8b4('0x14')]=_0x130bc7;if(_0x566f4c[_0xe8b4('0x22')]['includeAll']){_0x271d01[_0xe8b4('0xa2')]=[{'all':!![]}];}return db[_0xe8b4('0x54')][_0xe8b4('0x21')](_0x271d01);})[_0xe8b4('0x18')](function(_0x249f9a){_0x43fb03[_0xe8b4('0xa3')]=_0x249f9a;return _0x43fb03;});}})[_0xe8b4('0x18')](respondWithFilteredResult(_0x450df3,_0x271d01))['catch'](handleError(_0x450df3,null));};exports[_0xe8b4('0xa8')]=function(_0x3b630b,_0x41826e){try{if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0x64')]){throw new Error(_0xe8b4('0xa9'));}if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xaa')]){throw new Error(_0xe8b4('0xab'));}if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xac')]){throw new Error(_0xe8b4('0xad'));}if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xae')]){throw new Error(_0xe8b4('0xaf'));}var _0xb85212=_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xaa')][_0xe8b4('0xb0')](',');var _0x4f2a9f=_0x3b630b[_0xe8b4('0x38')]['binding_values']['split'](',');if(!_0xb85212[_0xe8b4('0x2b')]||!_0x4f2a9f['length']||_0xb85212['length']!==_0x4f2a9f['length']){throw new Error(_0xe8b4('0xb1'));}_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0x80')]=_['zipObject'](_0xb85212,_0x4f2a9f);if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0x80')][_0xe8b4('0x7b')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0x80')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}var _0x45f2a6=path[_0xe8b4('0x3c')](config[_0xe8b4('0xb2')],_0xe8b4('0xb3'),_0x3b630b[_0xe8b4('0xb4')][_0xe8b4('0xb5')]);fs['chmodSync'](_0x45f2a6,parseInt(_0xe8b4('0xb6'),0x8));var _0x2ba5ae=require('child_process')[_0xe8b4('0xb7')](path[_0xe8b4('0x3c')](__dirname,'../../components/import/cm/csv'),[_0x45f2a6,_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xaa')],_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xac')],_0x3b630b[_0xe8b4('0x38')]['ListId'],_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xb8')],_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0x60')],_0x3b630b['body'][_0xe8b4('0xae')]]);return _0x41826e[_0xe8b4('0x10')](0xc8)['json']({'message':'File\x20uploaded\x20correctly!','pid':_0x2ba5ae[_0xe8b4('0xb9')]});}catch(_0x3206da){return _0x41826e[_0xe8b4('0x10')](0x1f4)[_0xe8b4('0x1e')](_0x3206da);}};exports[_0xe8b4('0xba')]=function(_0xda9f39,_0x1c3304){var _0x37be74=fs[_0xe8b4('0xbb')](_0xda9f39[_0xe8b4('0xb4')][_0xe8b4('0xbc')]);Papa['parse'](_0x37be74,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x501764){return _0x1c3304[_0xe8b4('0x10')](0xc8)[_0xe8b4('0x11')]({'file':_0xda9f39[_0xe8b4('0xb4')],'fields':_0x501764[_0xe8b4('0xbd')]['fields']});}});};exports[_0xe8b4('0xbe')]=function(_0x2edf73,_0x1b2c78){return db[_0xe8b4('0xbf')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xe8b4('0xc0')}})[_0xe8b4('0x18')](function(_0x3b48e9){var _0x5f53eb=![];if(!_0x2edf73[_0xe8b4('0x38')][_0xe8b4('0x64')]){throw new Error(_0xe8b4('0xa9'));}if(!_0x2edf73[_0xe8b4('0x38')][_0xe8b4('0xc1')][_0xe8b4('0x7b')]){throw new Error(_0xe8b4('0xc2'));}if(!_0x2edf73[_0xe8b4('0x38')]['binding'][_0xe8b4('0xc3')]){throw new Error(_0xe8b4('0xc4'));}if(!_0x2edf73[_0xe8b4('0x38')]['socket_timestamp']){throw new Error(_0xe8b4('0xaf'));}var _0x3f76af=require(_0xe8b4('0xc5'))[_0xe8b4('0xb7')](path[_0xe8b4('0x3c')](__dirname,'../../components/import/cm/csv2'),[_0x2edf73[_0xe8b4('0x27')]['id'],JSON[_0xe8b4('0xc6')](_0x2edf73[_0xe8b4('0x38')]),JSON['stringify'](_0x3b48e9)]);_0x3f76af['on'](_0xe8b4('0xc7'),function(){_0x5f53eb=!![];return _0x1b2c78['status'](0xc8)[_0xe8b4('0x11')]({'message':'start\x20child\x20process\x20correctly!','pid':_0x3f76af[_0xe8b4('0xb9')]});});_0x3f76af['on'](_0xe8b4('0xc8'),function(_0xe3ab09){if(_0xe3ab09&&!_0x5f53eb){return _0x1b2c78[_0xe8b4('0x10')](0x1f4)[_0xe8b4('0x11')]({'message':_0xe8b4('0xc9'),'pid':_0x3f76af[_0xe8b4('0xb9')]});}});})[_0xe8b4('0x24')](handleError(_0x1b2c78,null));};exports[_0xe8b4('0xca')]=function(_0x51c7b2,_0x5f8a33){return db[_0xe8b4('0xbf')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xe8b4('0xc0')}})['then'](function(_0x4b5c7c){var _0x54264d=![];if(!_0x51c7b2[_0xe8b4('0x38')][_0xe8b4('0x64')]){throw new Error('No\x20ListId\x20specified');}if(!_0x51c7b2['body'][_0xe8b4('0xc1')]['phone']){throw new Error(_0xe8b4('0xc2'));}if(!_0x51c7b2['body'][_0xe8b4('0xc1')][_0xe8b4('0xc3')]){throw new Error(_0xe8b4('0xc4'));}if(!_0x51c7b2[_0xe8b4('0x38')]['socket_timestamp']){throw new Error(_0xe8b4('0xaf'));}var _0xc0841a=require(_0xe8b4('0xc5'))['fork'](path[_0xe8b4('0x3c')](__dirname,_0xe8b4('0xcb')),[_0x51c7b2[_0xe8b4('0x27')]['id'],JSON[_0xe8b4('0xc6')](_0x51c7b2['body']),JSON[_0xe8b4('0xc6')](_0x4b5c7c)]);_0xc0841a['on']('message',function(){_0x54264d=!![];return _0x5f8a33[_0xe8b4('0x10')](0xc8)['json']({'message':_0xe8b4('0xcc'),'pid':_0xc0841a[_0xe8b4('0xb9')]});});_0xc0841a['on']('exit',function(_0x3d865e){if(_0x3d865e&&!_0x54264d){return _0x5f8a33['status'](0x1f4)[_0xe8b4('0x11')]({'message':_0xe8b4('0xc9'),'pid':_0xc0841a[_0xe8b4('0xb9')]});}});})[_0xe8b4('0x24')](handleError(_0x5f8a33,null));};exports['getJourney']=function(_0x1dda1f,_0x34b5e8){var _0x2a36e6=[_0xe8b4('0xcd'),_0xe8b4('0xce'),_0xe8b4('0xcf'),_0xe8b4('0xd0'),_0xe8b4('0xd1'),_0xe8b4('0xd2'),'voice'];var _0x192e8d={'offset':0x0,'order':qs[_0xe8b4('0x83')](_0xe8b4('0xd3'))},_0x27bb6e={'count':0x0,'rows':[]};Promise[_0xe8b4('0xd4')]()[_0xe8b4('0x18')](function(){if(_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0xd5')]){if(!_[_0xe8b4('0xd6')](_0x2a36e6,_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0xd5')][_0xe8b4('0xd7')]())){throw new Error(_0xe8b4('0xd8'));}_0x2a36e6=[_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0xd5')][_0xe8b4('0xd7')]()];}if(_0x1dda1f['query'][_0xe8b4('0xd9')]){try{var _0x1a683a=JSON['parse'](_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0xd9')]);if(!moment(_0x1a683a[_0xe8b4('0x39')])[_0xe8b4('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x1a683a['to'])[_0xe8b4('0xda')]()){throw new Error(_0xe8b4('0xdb'));}}catch(_0x943632){throw new Error(_0xe8b4('0xdc'));}}if(!_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0x36')](_0xe8b4('0x87'))){_0x192e8d[_0xe8b4('0x88')]=qs[_0xe8b4('0x88')](_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0x88')]||0xa);_0x192e8d['offset']=qs[_0xe8b4('0x12')](_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0x12')]);}var _0x35b41d=_0x2a36e6[_0xe8b4('0x75')](function(_0x5e69a2){if(_0x5e69a2===_0xe8b4('0xdd')){var _0x2d678c={'attributes':['id',_0xe8b4('0xde'),'type',_0xe8b4('0xdf'),'destination',_0xe8b4('0xe0'),'starttime',_0xe8b4('0xe1'),_0xe8b4('0xe2'),_0xe8b4('0xe3'),_0xe8b4('0xe4'),_0xe8b4('0xe5'),_0xe8b4('0xe6'),'userThirdDisposition','UserId'],'where':{'ContactId':_0x1dda1f[_0xe8b4('0x27')]['id']},'include':[{'model':db[_0xe8b4('0xbf')],'as':_0xe8b4('0xbf'),'attributes':['id',_0xe8b4('0x1d'),_0xe8b4('0xe7'),_0xe8b4('0x32')]}],'order':[['createdAt',_0xe8b4('0xe8')]]};if(_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0xd9')]){_0x2d678c['where'][_0xe8b4('0xe4')]={'$gte':_0x1a683a[_0xe8b4('0x39')],'$lte':_0x1a683a['to']};}return db[_0xe8b4('0x4f')][_0xe8b4('0xe9')](_0x2d678c)[_0xe8b4('0x18')](function(_0x21186b){_0x27bb6e[_0xe8b4('0x14')]+=_0x21186b['count'];return _[_0xe8b4('0x75')](_0x21186b[_0xe8b4('0xa3')],function(_0x4f87a7){var _0x37ef3e=_0x4f87a7['get']({'plain':!![]});_0x37ef3e[_0xe8b4('0xd5')]=_0x5e69a2;if(_0x37ef3e[_0xe8b4('0xbf')]){_0x37ef3e['User']={'id':_0x37ef3e[_0xe8b4('0xbf')]['id'],'name':_0x37ef3e[_0xe8b4('0xbf')]['name'],'fullname':_0x37ef3e['User'][_0xe8b4('0xe7')],'alias':_0x37ef3e[_0xe8b4('0xbf')][_0xe8b4('0x32')]};}return _0x37ef3e;});});}else{var _0x4a1ae9=_[_0xe8b4('0xea')](_0x5e69a2)+(_0x5e69a2===_0xe8b4('0xce')?'Website':_0xe8b4('0xeb'));var _0x1c7c9e={'attributes':['id',_0xe8b4('0xec'),_0xe8b4('0xed'),_0xe8b4('0xe4'),_0xe8b4('0xe3'),_0xe8b4('0xee'),_0xe8b4('0xef'),_0xe8b4('0xf0'),_0xe8b4('0xf1'),_0x4a1ae9+'Id'],'where':{'ContactId':_0x1dda1f[_0xe8b4('0x27')]['id']},'include':[{'model':db[_0x4a1ae9],'as':_0xe8b4('0xeb'),'attributes':['id','name','key']},{'model':db['User'],'as':_0xe8b4('0xf2'),'attributes':['id',_0xe8b4('0x1d'),_0xe8b4('0xe7')]},{'model':db[_0xe8b4('0x6a')],'as':_0xe8b4('0x6b'),'attributes':['id',_0xe8b4('0x1d'),_0xe8b4('0xf3')],'through':{'attributes':[]}}],'order':[[_0xe8b4('0xe4'),'DESC']]};if(_0x1dda1f[_0xe8b4('0x22')]['range']){_0x1c7c9e[_0xe8b4('0x61')]['createdAt']={'$gte':_0x1a683a[_0xe8b4('0x39')],'$lte':_0x1a683a['to']};}switch(_0x5e69a2){case _0xe8b4('0xce'):_0x1c7c9e[_0xe8b4('0x81')][_0xe8b4('0x63')]('browserName',_0xe8b4('0xf4'),'customerPort',_0xe8b4('0xf5'),_0xe8b4('0xf6'),_0xe8b4('0xf7'),_0xe8b4('0xf8'),'ratingValue',_0xe8b4('0xf9'));break;case _0xe8b4('0xcd'):_0x1c7c9e[_0xe8b4('0x81')][_0xe8b4('0x63')](_0xe8b4('0xfa'),_0xe8b4('0xfb'));break;case _0xe8b4('0xd0'):_0x1c7c9e[_0xe8b4('0x81')]['push'](_0xe8b4('0xfc'),_0xe8b4('0xfd'));break;}return db[_[_0xe8b4('0xea')](_0x5e69a2)+_0xe8b4('0xfe')]['findAndCountAll'](_0x1c7c9e)[_0xe8b4('0x18')](function(_0x4e314c){_0x27bb6e[_0xe8b4('0x14')]+=_0x4e314c[_0xe8b4('0x14')];return _['map'](_0x4e314c[_0xe8b4('0xa3')],function(_0x4d9ce5){var _0x3a0c2d=_0x4d9ce5[_0xe8b4('0x3a')]({'plain':!![]});_0x3a0c2d[_0xe8b4('0xd5')]=_0x5e69a2;if(_0x3a0c2d[_0xe8b4('0xf2')]){_0x3a0c2d[_0xe8b4('0xf2')]={'id':_0x3a0c2d[_0xe8b4('0xf2')]['id'],'name':_0x3a0c2d[_0xe8b4('0xf2')][_0xe8b4('0x1d')],'fullname':_0x3a0c2d['Owner'][_0xe8b4('0xe7')]};}return _0x3a0c2d;});});}});return Promise[_0xe8b4('0x68')](_0x35b41d);})[_0xe8b4('0x18')](function(_0x26bedb){return _(_0x26bedb)[_0xe8b4('0xff')]()[_0xe8b4('0x100')](_0xe8b4('0xe4'))[_0xe8b4('0x101')]()[_0xe8b4('0x102')]();})[_0xe8b4('0x18')](function(_0x4b23a1){_0x27bb6e[_0xe8b4('0xa3')]=_0x192e8d[_0xe8b4('0x88')]?_0x4b23a1[_0xe8b4('0x103')](_0x192e8d[_0xe8b4('0x12')],_0x192e8d[_0xe8b4('0x12')]+_0x192e8d['limit']):_0x4b23a1;return _0x27bb6e;})[_0xe8b4('0x18')](respondWithFilteredResult(_0x34b5e8,_0x192e8d))[_0xe8b4('0x24')](handleError(_0x34b5e8,null));};
\ No newline at end of file
index 3d5bb9b..aaf83b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4123=['setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x4123,0x142));var _0x3412=function(_0x50b651,_0x2ce0c5){_0x50b651=_0x50b651-0x0;var _0x1ec2b0=_0x4123[_0x50b651];return _0x1ec2b0;};'use strict';var EventEmitter=require(_0x3412('0x0'));var CmContact=require(_0x3412('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0x3412('0x2')](0x0);var events={'afterCreate':_0x3412('0x3'),'afterUpdate':_0x3412('0x4'),'afterDestroy':_0x3412('0x5')};function emitEvent(_0x5c7766){return function(_0xb8e5f9,_0x3cdc43,_0x3b3201){CmContactEvents[_0x3412('0x6')](_0x5c7766+':'+_0xb8e5f9['id'],_0xb8e5f9);CmContactEvents[_0x3412('0x6')](_0x5c7766,_0xb8e5f9);_0x3b3201(null);};}for(var e in events){if(events[_0x3412('0x7')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0x3412('0x8')]=CmContactEvents;
\ No newline at end of file
+var _0x7ede=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmContact','setMaxListeners','save'];(function(_0x36c158,_0x560d11){var _0x493493=function(_0x5c078b){while(--_0x5c078b){_0x36c158['push'](_0x36c158['shift']());}};_0x493493(++_0x560d11);}(_0x7ede,0x1e5));var _0xe7ed=function(_0x53abe5,_0x33a9e5){_0x53abe5=_0x53abe5-0x0;var _0xc1c37e=_0x7ede[_0x53abe5];return _0xc1c37e;};'use strict';var EventEmitter=require(_0xe7ed('0x0'));var CmContact=require(_0xe7ed('0x1'))['db'][_0xe7ed('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xe7ed('0x3')](0x0);var events={'afterCreate':_0xe7ed('0x4'),'afterUpdate':_0xe7ed('0x5'),'afterDestroy':'remove'};function emitEvent(_0x175473){return function(_0x208a4b,_0x1d7dc9,_0x1b7380){CmContactEvents[_0xe7ed('0x6')](_0x175473+':'+_0x208a4b['id'],_0x208a4b);CmContactEvents[_0xe7ed('0x6')](_0x175473,_0x208a4b);_0x1b7380(null);};}for(var e in events){if(events[_0xe7ed('0x7')](e)){var event=events[e];CmContact[_0xe7ed('0x8')](e,emitEvent(event));}}module[_0xe7ed('0x9')]=CmContactEvents;
\ No newline at end of file
index 5ff56a1..fd54d6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21d7=['afterCreate','inspect','scheduledat','isNil','VoiceQueue','findOne','then','dialTimezone','timezones','utcOffset','add','format','YYYY-MM-DD\x20HH:mm:ss','ret','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','cmContact','Campaign','minutes','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','outbound','dialCheckDuplicateType','Lists','length','get','always','onlyIfOpen','CmHopperBlack','CmList','BlackLists','cmContact,\x20%s,\x20%s','message','List\x20not\x20found','isEmpty','destroy','ContactId','CampaignId','push','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','fax','FULLTEXT','utf8mb4_unicode_ci','models','error'];(function(_0x28dbf4,_0x57cd92){var _0x389ac1=function(_0x28ad1d){while(--_0x28ad1d){_0x28dbf4['push'](_0x28dbf4['shift']());}};_0x389ac1(++_0x57cd92);}(_0x21d7,0x1ac));var _0x721d=function(_0x4dc035,_0x3f320d){_0x4dc035=_0x4dc035-0x0;var _0x459127=_0x21d7[_0x4dc035];return _0x459127;};'use strict';var _=require(_0x721d('0x0'));var util=require(_0x721d('0x1'));var logger=require(_0x721d('0x2'))(_0x721d('0x3'));var moment=require(_0x721d('0x4'));var BPromise=require(_0x721d('0x5'));var rp=require(_0x721d('0x6'));var fs=require('fs');var path=require(_0x721d('0x7'));var rimraf=require('rimraf');var config=require(_0x721d('0x8'));var shared=require('../../config/environment/shared');var attributes=require(_0x721d('0x9'));module[_0x721d('0xa')]=function(_0x3e7309,_0x4c7d94){return _0x3e7309[_0x721d('0xb')](_0x721d('0xc'),attributes,{'tableName':_0x721d('0xd'),'paranoid':!![],'indexes':[{'name':_0x721d('0xe'),'fields':[_0x721d('0xe')]},{'name':_0x721d('0xf'),'fields':[_0x721d('0x10'),'lastName','phone','mobile',_0x721d('0x11'),'email'],'type':_0x721d('0x12')}],'timestamps':!![],'charset':'utf8mb4','collate':_0x721d('0x13'),'hooks':{'afterCreate':function(_0x3ec9f2,_0x25567c,_0x13da3c){var _0x2d3d7b=_0x3e7309[_0x721d('0x14')];var _0x1fbfc2=_0x3ec9f2['get']({'plain':!![]});function _0x2da0a8(){return function(_0x21dbfe){logger[_0x721d('0x15')]('cmContact',_0x721d('0x16'),util[_0x721d('0x17')](_0x21dbfe,{'showHidden':![],'depth':null}));};}function _0x4e87df(_0x12548c,_0x126bbe){var _0x350386=_0x126bbe[_0x721d('0x18')]?_0x126bbe[_0x721d('0x18')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x1a2898,_0x386584){if(_[_0x721d('0x19')](_0x126bbe['dialTimezone'])){_0x1a2898({'ret':_0x350386});}else{_0x2d3d7b[_0x721d('0x1a')][_0x721d('0x1b')]({'where':{'id':_0x12548c['id']}})[_0x721d('0x1c')](function(_0x48bc80){if(!_[_0x721d('0x19')](_0x48bc80)){var _0x202efa=_0x48bc80[_0x721d('0x1d')];if(!_['isNil'](_0x202efa)){var _0x32a6a9=shared[_0x721d('0x1e')];var _0x8cb3ac=_0x32a6a9[_0x202efa];var _0x2d09c7=_0x32a6a9[_0x126bbe[_0x721d('0x1d')]];if(!_[_0x721d('0x19')](_0x8cb3ac)&&!_[_0x721d('0x19')](_0x2d09c7)){var _0x5f099a=_0x8cb3ac[_0x721d('0x1f')]-_0x2d09c7[_0x721d('0x1f')];_0x350386=_0x126bbe[_0x721d('0x18')]?_0x126bbe['scheduledat']:moment();var _0x228ef0=moment(_0x350386)[_0x721d('0x20')](_0x5f099a,'minutes');_0x1a2898({'ret':_0x228ef0[_0x721d('0x21')](_0x721d('0x22'))});}else _0x1a2898({'ret':_0x350386});}else _0x1a2898({'ret':_0x350386});}else{_0x1a2898({'ret':_0x350386});}});}});return 0xa;}var _0xcd058=function(_0x3bd0bf){return new BPromise(function(_0x2b93ee,_0x536c31){_0x4e87df(_0x3bd0bf,_0x1fbfc2)[_0x721d('0x1c')](function(_0x2c9143){_0x1fbfc2[_0x721d('0x18')]=_0x2c9143[_0x721d('0x23')];_0x2d3d7b[_0x721d('0x24')]['findOne']({'where':{'phone':_0x1fbfc2[_0x721d('0xe')],'VoiceQueueId':_0x3bd0bf['id']}})[_0x721d('0x1c')](function(_0x1c87c3){if(!_['isNil'](_0x1c87c3)){throw new Error(_0x721d('0x25')+_0x1fbfc2[_0x721d('0xe')]+_0x721d('0x26')+_0x3bd0bf['id']);}return _0x2d3d7b[_0x721d('0x24')][_0x721d('0x27')]({'phone':_0x1fbfc2[_0x721d('0xe')],'ContactId':_0x1fbfc2['id'],'ListId':_0x1fbfc2[_0x721d('0x28')],'priority':_0x1fbfc2[_0x721d('0x29')]?_0x1fbfc2['priority']:0x2,'scheduledat':_0x1fbfc2[_0x721d('0x18')]?_0x1fbfc2['scheduledat']:moment()[_0x721d('0x21')](_0x721d('0x22')),'callback':_0x1fbfc2[_0x721d('0x2a')]?!![]:![],'callbackuniqueid':_0x1fbfc2[_0x721d('0x2a')]?_0x1fbfc2[_0x721d('0x2a')]:undefined,'callbackat':_0x1fbfc2[_0x721d('0x2a')]?moment()[_0x721d('0x21')](_0x721d('0x22')):undefined,'VoiceQueueId':_0x3bd0bf['id']});})[_0x721d('0x2b')](function(_0x253b74){_0x536c31(_0x253b74);});});});};var _0x597c97=function(_0x101617){return new BPromise(function(_0x1d77de,_0x16a778){_0x4e87df(_0x101617,_0x1fbfc2)[_0x721d('0x1c')](function(_0x54f4ac){_0x1fbfc2[_0x721d('0x18')]=_0x54f4ac['ret'];_0x2d3d7b['CmHopper'][_0x721d('0x1b')]({'where':{'phone':_0x1fbfc2[_0x721d('0xe')],'VoiceQueueId':_0x101617['id']}})[_0x721d('0x1c')](function(_0x240580){if(!_['isNil'](_0x240580)){throw new Error(_0x721d('0x25')+_0x1fbfc2['phone']+_0x721d('0x2c')+_0x101617['id']);}return _0x2d3d7b[_0x721d('0x2d')][_0x721d('0x1b')]({'where':{'calleridnum':_0x1fbfc2[_0x721d('0xe')],'VoiceQueueId':_0x101617['id']}});})['then'](function(_0x101b91){if(!_[_0x721d('0x19')](_0x101b91)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x1fbfc2[_0x721d('0xe')]+_0x721d('0x2e')+_0x101617['id']);}return _0x2d3d7b[_0x721d('0x24')]['create']({'phone':_0x1fbfc2[_0x721d('0xe')],'ContactId':_0x1fbfc2['id'],'ListId':_0x1fbfc2[_0x721d('0x28')],'priority':_0x1fbfc2[_0x721d('0x29')]?_0x1fbfc2[_0x721d('0x29')]:0x2,'scheduledat':_0x1fbfc2[_0x721d('0x18')]?_0x1fbfc2[_0x721d('0x18')]:moment()[_0x721d('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x1fbfc2[_0x721d('0x2a')]?!![]:![],'callbackuniqueid':_0x1fbfc2[_0x721d('0x2a')]?_0x1fbfc2[_0x721d('0x2a')]:undefined,'callbackat':_0x1fbfc2[_0x721d('0x2a')]?moment()[_0x721d('0x21')](_0x721d('0x22')):undefined,'VoiceQueueId':_0x101617['id']});})[_0x721d('0x2b')](function(_0x264234){_0x16a778(_0x264234);});});});};function _0x198fa5(){return function(_0x3425d8){logger[_0x721d('0x15')](_0x721d('0x2f'),'afterCreate',util['inspect'](_0x3425d8,{'showHidden':![],'depth':null}));};}function _0x76c175(_0x2f46b7,_0x3f3d4b){var _0x2d5273=_0x3f3d4b[_0x721d('0x18')]?_0x3f3d4b['scheduledat']:moment()[_0x721d('0x21')](_0x721d('0x22'));return new BPromise(function(_0x33a1c5,_0x4380e2){if(_[_0x721d('0x19')](_0x3f3d4b[_0x721d('0x1d')])){_0x33a1c5({'ret':_0x2d5273});}else{_0x2d3d7b[_0x721d('0x30')][_0x721d('0x1b')]({'where':{'id':_0x2f46b7['id']}})[_0x721d('0x1c')](function(_0x27a765){if(!_[_0x721d('0x19')](_0x27a765)){var _0x19036c=_0x27a765[_0x721d('0x1d')];if(!_['isNil'](_0x19036c)){var _0x368ebd=shared[_0x721d('0x1e')];var _0x403d74=_0x368ebd[_0x19036c];var _0x37ee6b=_0x368ebd[_0x3f3d4b['dialTimezone']];if(!_[_0x721d('0x19')](_0x403d74)&&!_[_0x721d('0x19')](_0x37ee6b)){var _0x45aa74=_0x403d74[_0x721d('0x1f')]-_0x37ee6b[_0x721d('0x1f')];_0x2d5273=_0x3f3d4b['scheduledat']?_0x3f3d4b[_0x721d('0x18')]:moment();var _0x47059d=moment(_0x2d5273)[_0x721d('0x20')](_0x45aa74,_0x721d('0x31'));_0x33a1c5({'ret':_0x47059d[_0x721d('0x21')](_0x721d('0x22'))});}else _0x33a1c5({'ret':_0x2d5273});}else _0x33a1c5({'ret':_0x2d5273});}else{_0x33a1c5({'ret':_0x2d5273});}});}});return 0xa;}var _0x2c201a=function(_0x44a880){return new BPromise(function(_0x2931aa,_0xa5b072){_0x76c175(_0x44a880,_0x1fbfc2)[_0x721d('0x1c')](function(_0x48f5ee){_0x1fbfc2[_0x721d('0x18')]=_0x48f5ee[_0x721d('0x23')];_0x2d3d7b[_0x721d('0x24')][_0x721d('0x1b')]({'where':{'phone':_0x1fbfc2[_0x721d('0xe')],'CampaignId':_0x44a880['id']}})[_0x721d('0x1c')](function(_0x4ebdfa){if(!_[_0x721d('0x19')](_0x4ebdfa)){throw new Error('cmContact,\x20afterCreate\x20'+_0x1fbfc2['phone']+_0x721d('0x32')+_0x44a880['id']);}return _0x2d3d7b[_0x721d('0x24')][_0x721d('0x27')]({'phone':_0x1fbfc2[_0x721d('0xe')],'ContactId':_0x1fbfc2['id'],'ListId':_0x1fbfc2[_0x721d('0x28')],'priority':_0x1fbfc2[_0x721d('0x29')]?_0x1fbfc2[_0x721d('0x29')]:0x2,'scheduledat':_0x1fbfc2['scheduledat']?_0x1fbfc2[_0x721d('0x18')]:moment()['format'](_0x721d('0x22')),'callback':_0x1fbfc2['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1fbfc2['callbackUniqueid']?_0x1fbfc2['callbackUniqueid']:undefined,'callbackat':_0x1fbfc2[_0x721d('0x2a')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x44a880['id']});})[_0x721d('0x2b')](function(_0x518740){_0xa5b072(_0x518740);});});});};var _0x20f2a4=function(_0x148b27){return new BPromise(function(_0x3e36d2,_0x16faba){_0x76c175(_0x148b27,_0x1fbfc2)[_0x721d('0x1c')](function(_0x21c7b8){_0x1fbfc2['scheduledat']=_0x21c7b8['ret'];_0x2d3d7b['CmHopper'][_0x721d('0x1b')]({'where':{'phone':_0x1fbfc2[_0x721d('0xe')],'CampaignId':_0x148b27['id']}})[_0x721d('0x1c')](function(_0x38a4b4){if(!_['isNil'](_0x38a4b4)){throw new Error('cmContact,\x20afterCreate\x20'+_0x1fbfc2['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x148b27['id']);}return _0x2d3d7b[_0x721d('0x2d')][_0x721d('0x1b')]({'where':{'calleridnum':_0x1fbfc2[_0x721d('0xe')],'CampaignId':_0x148b27['id']}});})[_0x721d('0x1c')](function(_0x23d3bd){if(!_[_0x721d('0x19')](_0x23d3bd)){throw new Error(_0x721d('0x33')+_0x1fbfc2[_0x721d('0xe')]+_0x721d('0x34')+_0x148b27['id']);}return _0x2d3d7b[_0x721d('0x24')]['create']({'phone':_0x1fbfc2[_0x721d('0xe')],'ContactId':_0x1fbfc2['id'],'ListId':_0x1fbfc2[_0x721d('0x28')],'priority':_0x1fbfc2[_0x721d('0x29')]?_0x1fbfc2[_0x721d('0x29')]:0x2,'scheduledat':_0x1fbfc2[_0x721d('0x18')]?_0x1fbfc2[_0x721d('0x18')]:moment()['format'](_0x721d('0x22')),'callback':_0x1fbfc2['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1fbfc2[_0x721d('0x2a')]?_0x1fbfc2[_0x721d('0x2a')]:undefined,'callbackat':_0x1fbfc2[_0x721d('0x2a')]?moment()[_0x721d('0x21')](_0x721d('0x22')):undefined,'CampaignId':_0x148b27['id']});})[_0x721d('0x2b')](function(_0xaf79e1){_0x16faba(_0xaf79e1);});});});};if(_0x1fbfc2['ListId']){_0x2d3d7b[_0x721d('0x1a')][_0x721d('0x35')]({'where':{'type':_0x721d('0x36')},'attributes':['id',_0x721d('0x37'),_0x721d('0x1d')],'include':[{'model':_0x2d3d7b['CmList'],'as':_0x721d('0x38'),'where':{'id':_0x1fbfc2[_0x721d('0x28')]}}]})[_0x721d('0x1c')](function(_0x580b4a){if(_0x580b4a){var _0x4a8d2f=[];for(var _0x2d6019=0x0,_0x2593c9;_0x2d6019<_0x580b4a[_0x721d('0x39')];_0x2d6019+=0x1){_0x2593c9=_0x580b4a[_0x2d6019][_0x721d('0x3a')]({'plain':!![]});switch(_0x2593c9[_0x721d('0x37')]){case _0x721d('0x3b'):_0x597c97(_0x2593c9)['catch'](_0x2da0a8());break;case _0x721d('0x3c'):_0xcd058(_0x2593c9)[_0x721d('0x2b')](_0x2da0a8());break;default:_0x76c175(_0x2593c9,_0x1fbfc2)[_0x721d('0x1c')](function(_0x1a3195){_0x1fbfc2[_0x721d('0x18')]=_0x1a3195[_0x721d('0x23')];_0x2d3d7b[_0x721d('0x24')][_0x721d('0x27')]({'phone':_0x1fbfc2[_0x721d('0xe')],'ContactId':_0x1fbfc2['id'],'ListId':_0x1fbfc2[_0x721d('0x28')],'scheduledat':_0x1fbfc2[_0x721d('0x18')]?_0x1fbfc2[_0x721d('0x18')]:moment()['format'](_0x721d('0x22')),'priority':_0x1fbfc2[_0x721d('0x29')]?_0x1fbfc2[_0x721d('0x29')]:0x2,'callback':_0x1fbfc2[_0x721d('0x2a')]?!![]:![],'callbackuniqueid':_0x1fbfc2['callbackUniqueid']?_0x1fbfc2[_0x721d('0x2a')]:undefined,'callbackat':_0x1fbfc2['callbackUniqueid']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x2593c9['id']})[_0x721d('0x2b')](_0x2da0a8());});}}}})[_0x721d('0x1c')](function(){return _0x2d3d7b[_0x721d('0x1a')]['findAll']({'where':{'type':_0x721d('0x36')},'attributes':['id'],'include':[{'model':_0x2d3d7b['CmList'],'as':'BlackLists','where':{'id':_0x1fbfc2[_0x721d('0x28')]}}]})[_0x721d('0x1c')](function(_0x3aa8b5){if(_0x3aa8b5){var _0xe4127c=[];for(var _0x285151=0x0,_0x4db47c;_0x285151<_0x3aa8b5[_0x721d('0x39')];_0x285151+=0x1){_0x4db47c=_0x3aa8b5[_0x285151][_0x721d('0x3a')]({'plain':!![]});_0x2d3d7b[_0x721d('0x3d')][_0x721d('0x27')]({'phone':_0x1fbfc2[_0x721d('0xe')],'ContactId':_0x1fbfc2['id'],'ListId':_0x1fbfc2[_0x721d('0x28')],'VoiceQueueId':_0x4db47c['id']})[_0x721d('0x2b')](function(_0x3e6230){logger['error']('cmContact,\x20%s,\x20%s',_0x721d('0x16'),_0x3e6230['message']);});}}});})[_0x721d('0x1c')](function(){return _0x2d3d7b[_0x721d('0x30')]['findAll']({'attributes':['id',_0x721d('0x37'),_0x721d('0x1d')],'include':[{'model':_0x2d3d7b['CmList'],'as':'Lists','where':{'id':_0x1fbfc2[_0x721d('0x28')]}}]})[_0x721d('0x1c')](function(_0x57c715){if(_0x57c715){var _0x1a02d5=[];for(var _0x4f8399=0x0,_0x65ceaf;_0x4f8399<_0x57c715[_0x721d('0x39')];_0x4f8399+=0x1){_0x65ceaf=_0x57c715[_0x4f8399][_0x721d('0x3a')]({'plain':!![]});switch(_0x65ceaf[_0x721d('0x37')]){case _0x721d('0x3b'):_0x20f2a4(_0x65ceaf)[_0x721d('0x2b')](_0x198fa5());break;case _0x721d('0x3c'):_0x2c201a(_0x65ceaf)[_0x721d('0x2b')](_0x198fa5());break;default:_0x2d3d7b['CmHopper'][_0x721d('0x27')]({'phone':_0x1fbfc2[_0x721d('0xe')],'ContactId':_0x1fbfc2['id'],'ListId':_0x1fbfc2['ListId'],'scheduledat':_0x1fbfc2['scheduledat']?_0x1fbfc2[_0x721d('0x18')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x1fbfc2['priority']?_0x1fbfc2[_0x721d('0x29')]:0x2,'callback':_0x1fbfc2[_0x721d('0x2a')]?!![]:![],'callbackuniqueid':_0x1fbfc2['callbackUniqueid']?_0x1fbfc2['callbackUniqueid']:undefined,'callbackat':_0x1fbfc2[_0x721d('0x2a')]?moment()[_0x721d('0x21')](_0x721d('0x22')):undefined,'CampaignId':_0x65ceaf['id']})[_0x721d('0x2b')](_0x198fa5());}}}});})[_0x721d('0x1c')](function(){return _0x2d3d7b['Campaign'][_0x721d('0x35')]({'attributes':['id'],'include':[{'model':_0x2d3d7b[_0x721d('0x3e')],'as':_0x721d('0x3f'),'where':{'id':_0x1fbfc2[_0x721d('0x28')]}}]})[_0x721d('0x1c')](function(_0x4ee763){if(_0x4ee763){var _0x561805=[];for(var _0x447348=0x0,_0x590ec1;_0x447348<_0x4ee763[_0x721d('0x39')];_0x447348+=0x1){_0x590ec1=_0x4ee763[_0x447348][_0x721d('0x3a')]({'plain':!![]});_0x2d3d7b[_0x721d('0x3d')][_0x721d('0x27')]({'phone':_0x1fbfc2['phone'],'ContactId':_0x1fbfc2['id'],'ListId':_0x1fbfc2['ListId'],'CampaignId':_0x590ec1['id']})[_0x721d('0x2b')](function(_0x524761){logger[_0x721d('0x15')](_0x721d('0x40'),_0x721d('0x16'),_0x524761[_0x721d('0x41')]);});}}});})[_0x721d('0x1c')](function(){_0x13da3c();})[_0x721d('0x2b')](function(_0x342817){logger[_0x721d('0x15')](_0x721d('0x40'),_0x721d('0x16'),_0x342817[_0x721d('0x41')]);_0x13da3c(_0x342817);});}else{_0x13da3c(new Error(_0x721d('0x42')));}},'afterDestroy':function(_0x2b3855,_0x2a9fd8,_0x5d1457){var _0x4da58f=_0x3e7309[_0x721d('0x14')];var _0x1fd305=_0x2b3855['get']({'plain':!![]});return _0x4da58f[_0x721d('0x24')]['findAll']({'raw':!![],'where':{'ListId':_0x1fd305[_0x721d('0x28')],'ContactId':_0x1fd305['id']}})[_0x721d('0x1c')](function(_0xfa2272){if(!_[_0x721d('0x43')](_0xfa2272)){var _0x423f67=[];for(var _0x41b039=0x0;_0x41b039<_0xfa2272['length'];_0x41b039+=0x1){var _0x49472e=_0x4da58f[_0x721d('0x24')][_0x721d('0x44')]({'where':{'ListId':_0xfa2272[_0x41b039][_0x721d('0x28')],'ContactId':_0xfa2272[_0x41b039][_0x721d('0x45')],'VoiceQueueId':_0xfa2272[_0x41b039]['VoiceQueueId'],'CampaignId':_0xfa2272[_0x41b039][_0x721d('0x46')]}});_0x423f67[_0x721d('0x47')](_0x49472e);}return BPromise['all'](_0x423f67);}})[_0x721d('0x1c')](function(_0x33764f){logger[_0x721d('0x48')](_0x721d('0x49'),util[_0x721d('0x17')](_0x33764f,{'showHidden':![],'depth':null}));_0x5d1457();})[_0x721d('0x2b')](function(_0x4ab7ac){logger[_0x721d('0x15')](_0x721d('0x4a'),util[_0x721d('0x17')](_0x4ab7ac,{'showHidden':![],'depth':null}));_0x5d1457(_0x4ab7ac);});}}});};
\ No newline at end of file
+var _0xbd13=['findAll','outbound','dialCheckDuplicateType','Lists','always','onlyIfOpen','CmList','length','CmHopperBlack','error','message','BlackLists','cmContact,\x20%s,\x20%s','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','api','moment','path','rimraf','./cmContact.attributes','exports','define','phone','fti_cm_contacts','firstName','lastName','mobile','utf8mb4','models','get','cmContact','afterCreate','inspect','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','VoiceQueue','findOne','then','timezones','utcOffset','add','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','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','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'];(function(_0x102d73,_0x356571){var _0x185ef9=function(_0x89bc24){while(--_0x89bc24){_0x102d73['push'](_0x102d73['shift']());}};_0x185ef9(++_0x356571);}(_0xbd13,0x17f));var _0x3bd1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbd13[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3bd1('0x0'));var util=require(_0x3bd1('0x1'));var logger=require('../../config/logger')(_0x3bd1('0x2'));var moment=require(_0x3bd1('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3bd1('0x4'));var rimraf=require(_0x3bd1('0x5'));var config=require('../../config/environment');var shared=require('../../config/environment/shared');var attributes=require(_0x3bd1('0x6'));module[_0x3bd1('0x7')]=function(_0x4d77dd,_0x57ca3d){return _0x4d77dd[_0x3bd1('0x8')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x3bd1('0x9'),'fields':[_0x3bd1('0x9')]},{'name':_0x3bd1('0xa'),'fields':[_0x3bd1('0xb'),_0x3bd1('0xc'),_0x3bd1('0x9'),_0x3bd1('0xd'),'fax','email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x3bd1('0xe'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x5958e1,_0x13c8ec,_0x5bfc52){var _0x58f908=_0x4d77dd[_0x3bd1('0xf')];var _0x5cecd1=_0x5958e1[_0x3bd1('0x10')]({'plain':!![]});function _0x3fcb83(){return function(_0x314c9f){logger['error'](_0x3bd1('0x11'),_0x3bd1('0x12'),util[_0x3bd1('0x13')](_0x314c9f,{'showHidden':![],'depth':null}));};}function _0x5af7b9(_0x3d7706,_0x1a0554){var _0x2fa89c=_0x1a0554['scheduledat']?_0x1a0554[_0x3bd1('0x14')]:moment()[_0x3bd1('0x15')](_0x3bd1('0x16'));return new BPromise(function(_0xe07109,_0x483ec0){if(_[_0x3bd1('0x17')](_0x1a0554[_0x3bd1('0x18')])){_0xe07109({'ret':_0x2fa89c});}else{_0x58f908[_0x3bd1('0x19')][_0x3bd1('0x1a')]({'where':{'id':_0x3d7706['id']}})[_0x3bd1('0x1b')](function(_0x52f7b3){if(!_[_0x3bd1('0x17')](_0x52f7b3)){var _0x39ddc0=_0x52f7b3[_0x3bd1('0x18')];if(!_[_0x3bd1('0x17')](_0x39ddc0)){var _0x45c4b3=shared[_0x3bd1('0x1c')];var _0x70f3cf=_0x45c4b3[_0x39ddc0];var _0x2084e3=_0x45c4b3[_0x1a0554[_0x3bd1('0x18')]];if(!_[_0x3bd1('0x17')](_0x70f3cf)&&!_['isNil'](_0x2084e3)){var _0x768aec=_0x70f3cf['utcOffset']-_0x2084e3[_0x3bd1('0x1d')];_0x2fa89c=_0x1a0554['scheduledat']?_0x1a0554[_0x3bd1('0x14')]:moment();var _0x3cba3a=moment(_0x2fa89c)[_0x3bd1('0x1e')](_0x768aec,'minutes');_0xe07109({'ret':_0x3cba3a['format']('YYYY-MM-DD\x20HH:mm:ss')});}else _0xe07109({'ret':_0x2fa89c});}else _0xe07109({'ret':_0x2fa89c});}else{_0xe07109({'ret':_0x2fa89c});}});}});return 0xa;}var _0x2a6324=function(_0x16af4f){return new BPromise(function(_0x3f9569,_0x346f66){_0x5af7b9(_0x16af4f,_0x5cecd1)[_0x3bd1('0x1b')](function(_0x1a5893){_0x5cecd1[_0x3bd1('0x14')]=_0x1a5893['ret'];_0x58f908[_0x3bd1('0x1f')]['findOne']({'where':{'phone':_0x5cecd1[_0x3bd1('0x9')],'VoiceQueueId':_0x16af4f['id']}})[_0x3bd1('0x1b')](function(_0x2db36d){if(!_['isNil'](_0x2db36d)){throw new Error(_0x3bd1('0x20')+_0x5cecd1['phone']+_0x3bd1('0x21')+_0x16af4f['id']);}return _0x58f908['CmHopper'][_0x3bd1('0x22')]({'phone':_0x5cecd1['phone'],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'priority':_0x5cecd1[_0x3bd1('0x24')]?_0x5cecd1['priority']:0x2,'scheduledat':_0x5cecd1['scheduledat']?_0x5cecd1[_0x3bd1('0x14')]:moment()[_0x3bd1('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x5cecd1[_0x3bd1('0x25')]?!![]:![],'callbackuniqueid':_0x5cecd1[_0x3bd1('0x25')]?_0x5cecd1[_0x3bd1('0x25')]:undefined,'callbackat':_0x5cecd1[_0x3bd1('0x25')]?moment()[_0x3bd1('0x15')](_0x3bd1('0x16')):undefined,'VoiceQueueId':_0x16af4f['id']});})[_0x3bd1('0x26')](function(_0x19ac61){_0x346f66(_0x19ac61);});});});};var _0x4c5eb7=function(_0x5c2642){return new BPromise(function(_0x42ee25,_0x2edc77){_0x5af7b9(_0x5c2642,_0x5cecd1)[_0x3bd1('0x1b')](function(_0x3d1ade){_0x5cecd1[_0x3bd1('0x14')]=_0x3d1ade[_0x3bd1('0x27')];_0x58f908['CmHopper']['findOne']({'where':{'phone':_0x5cecd1['phone'],'VoiceQueueId':_0x5c2642['id']}})[_0x3bd1('0x1b')](function(_0x39b53a){if(!_[_0x3bd1('0x17')](_0x39b53a)){throw new Error(_0x3bd1('0x20')+_0x5cecd1['phone']+_0x3bd1('0x28')+_0x5c2642['id']);}return _0x58f908[_0x3bd1('0x29')][_0x3bd1('0x1a')]({'where':{'calleridnum':_0x5cecd1[_0x3bd1('0x9')],'VoiceQueueId':_0x5c2642['id']}});})['then'](function(_0x17dfa3){if(!_[_0x3bd1('0x17')](_0x17dfa3)){throw new Error(_0x3bd1('0x2a')+_0x5cecd1[_0x3bd1('0x9')]+_0x3bd1('0x2b')+_0x5c2642['id']);}return _0x58f908[_0x3bd1('0x1f')][_0x3bd1('0x22')]({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'priority':_0x5cecd1[_0x3bd1('0x24')]?_0x5cecd1[_0x3bd1('0x24')]:0x2,'scheduledat':_0x5cecd1[_0x3bd1('0x14')]?_0x5cecd1[_0x3bd1('0x14')]:moment()[_0x3bd1('0x15')](_0x3bd1('0x16')),'callback':_0x5cecd1[_0x3bd1('0x25')]?!![]:![],'callbackuniqueid':_0x5cecd1[_0x3bd1('0x25')]?_0x5cecd1[_0x3bd1('0x25')]:undefined,'callbackat':_0x5cecd1['callbackUniqueid']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x5c2642['id']});})[_0x3bd1('0x26')](function(_0x291161){_0x2edc77(_0x291161);});});});};function _0x3f8656(){return function(_0x3d3f89){logger['error']('cmContact',_0x3bd1('0x12'),util[_0x3bd1('0x13')](_0x3d3f89,{'showHidden':![],'depth':null}));};}function _0x18eb02(_0x1cdb39,_0x382a67){var _0x131f2c=_0x382a67['scheduledat']?_0x382a67[_0x3bd1('0x14')]:moment()[_0x3bd1('0x15')](_0x3bd1('0x16'));return new BPromise(function(_0xe7538b,_0x1b78cc){if(_[_0x3bd1('0x17')](_0x382a67[_0x3bd1('0x18')])){_0xe7538b({'ret':_0x131f2c});}else{_0x58f908[_0x3bd1('0x2c')][_0x3bd1('0x1a')]({'where':{'id':_0x1cdb39['id']}})['then'](function(_0x378ae7){if(!_['isNil'](_0x378ae7)){var _0x454ef1=_0x378ae7[_0x3bd1('0x18')];if(!_[_0x3bd1('0x17')](_0x454ef1)){var _0x516f1e=shared[_0x3bd1('0x1c')];var _0x5d5756=_0x516f1e[_0x454ef1];var _0x52e5b4=_0x516f1e[_0x382a67[_0x3bd1('0x18')]];if(!_[_0x3bd1('0x17')](_0x5d5756)&&!_[_0x3bd1('0x17')](_0x52e5b4)){var _0x6ffeac=_0x5d5756[_0x3bd1('0x1d')]-_0x52e5b4[_0x3bd1('0x1d')];_0x131f2c=_0x382a67[_0x3bd1('0x14')]?_0x382a67[_0x3bd1('0x14')]:moment();var _0x307556=moment(_0x131f2c)[_0x3bd1('0x1e')](_0x6ffeac,_0x3bd1('0x2d'));_0xe7538b({'ret':_0x307556[_0x3bd1('0x15')](_0x3bd1('0x16'))});}else _0xe7538b({'ret':_0x131f2c});}else _0xe7538b({'ret':_0x131f2c});}else{_0xe7538b({'ret':_0x131f2c});}});}});return 0xa;}var _0x187ec4=function(_0x3b36c4){return new BPromise(function(_0x8d12bf,_0x35fd90){_0x18eb02(_0x3b36c4,_0x5cecd1)[_0x3bd1('0x1b')](function(_0x5be8ef){_0x5cecd1[_0x3bd1('0x14')]=_0x5be8ef[_0x3bd1('0x27')];_0x58f908['CmHopper'][_0x3bd1('0x1a')]({'where':{'phone':_0x5cecd1[_0x3bd1('0x9')],'CampaignId':_0x3b36c4['id']}})[_0x3bd1('0x1b')](function(_0x21b84c){if(!_['isNil'](_0x21b84c)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5cecd1['phone']+_0x3bd1('0x2e')+_0x3b36c4['id']);}return _0x58f908[_0x3bd1('0x1f')][_0x3bd1('0x22')]({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'priority':_0x5cecd1[_0x3bd1('0x24')]?_0x5cecd1['priority']:0x2,'scheduledat':_0x5cecd1['scheduledat']?_0x5cecd1['scheduledat']:moment()[_0x3bd1('0x15')](_0x3bd1('0x16')),'callback':_0x5cecd1['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5cecd1[_0x3bd1('0x25')]?_0x5cecd1['callbackUniqueid']:undefined,'callbackat':_0x5cecd1[_0x3bd1('0x25')]?moment()[_0x3bd1('0x15')](_0x3bd1('0x16')):undefined,'CampaignId':_0x3b36c4['id']});})['catch'](function(_0x2b837f){_0x35fd90(_0x2b837f);});});});};var _0x33b963=function(_0x36516a){return new BPromise(function(_0x306d5e,_0x459aee){_0x18eb02(_0x36516a,_0x5cecd1)['then'](function(_0xa6fb6f){_0x5cecd1[_0x3bd1('0x14')]=_0xa6fb6f[_0x3bd1('0x27')];_0x58f908[_0x3bd1('0x1f')][_0x3bd1('0x1a')]({'where':{'phone':_0x5cecd1[_0x3bd1('0x9')],'CampaignId':_0x36516a['id']}})[_0x3bd1('0x1b')](function(_0x316fb7){if(!_[_0x3bd1('0x17')](_0x316fb7)){throw new Error(_0x3bd1('0x20')+_0x5cecd1['phone']+_0x3bd1('0x2f')+_0x36516a['id']);}return _0x58f908[_0x3bd1('0x29')][_0x3bd1('0x1a')]({'where':{'calleridnum':_0x5cecd1['phone'],'CampaignId':_0x36516a['id']}});})[_0x3bd1('0x1b')](function(_0x3150e3){if(!_[_0x3bd1('0x17')](_0x3150e3)){throw new Error(_0x3bd1('0x2a')+_0x5cecd1[_0x3bd1('0x9')]+_0x3bd1('0x30')+_0x36516a['id']);}return _0x58f908[_0x3bd1('0x1f')][_0x3bd1('0x22')]({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'priority':_0x5cecd1[_0x3bd1('0x24')]?_0x5cecd1[_0x3bd1('0x24')]:0x2,'scheduledat':_0x5cecd1['scheduledat']?_0x5cecd1['scheduledat']:moment()[_0x3bd1('0x15')](_0x3bd1('0x16')),'callback':_0x5cecd1[_0x3bd1('0x25')]?!![]:![],'callbackuniqueid':_0x5cecd1['callbackUniqueid']?_0x5cecd1[_0x3bd1('0x25')]:undefined,'callbackat':_0x5cecd1[_0x3bd1('0x25')]?moment()['format'](_0x3bd1('0x16')):undefined,'CampaignId':_0x36516a['id']});})[_0x3bd1('0x26')](function(_0x3c80fe){_0x459aee(_0x3c80fe);});});});};if(_0x5cecd1[_0x3bd1('0x23')]){_0x58f908[_0x3bd1('0x19')][_0x3bd1('0x31')]({'where':{'type':_0x3bd1('0x32')},'attributes':['id',_0x3bd1('0x33'),_0x3bd1('0x18')],'include':[{'model':_0x58f908['CmList'],'as':_0x3bd1('0x34'),'where':{'id':_0x5cecd1[_0x3bd1('0x23')]}}]})[_0x3bd1('0x1b')](function(_0x3df384){if(_0x3df384){var _0x77246a=[];for(var _0x3e9e15=0x0,_0x54def1;_0x3e9e15<_0x3df384['length'];_0x3e9e15+=0x1){_0x54def1=_0x3df384[_0x3e9e15][_0x3bd1('0x10')]({'plain':!![]});switch(_0x54def1['dialCheckDuplicateType']){case _0x3bd1('0x35'):_0x4c5eb7(_0x54def1)['catch'](_0x3fcb83());break;case _0x3bd1('0x36'):_0x2a6324(_0x54def1)['catch'](_0x3fcb83());break;default:_0x18eb02(_0x54def1,_0x5cecd1)[_0x3bd1('0x1b')](function(_0x5ee602){_0x5cecd1['scheduledat']=_0x5ee602[_0x3bd1('0x27')];_0x58f908[_0x3bd1('0x1f')][_0x3bd1('0x22')]({'phone':_0x5cecd1['phone'],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'scheduledat':_0x5cecd1[_0x3bd1('0x14')]?_0x5cecd1[_0x3bd1('0x14')]:moment()[_0x3bd1('0x15')](_0x3bd1('0x16')),'priority':_0x5cecd1[_0x3bd1('0x24')]?_0x5cecd1['priority']:0x2,'callback':_0x5cecd1['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5cecd1['callbackUniqueid']?_0x5cecd1[_0x3bd1('0x25')]:undefined,'callbackat':_0x5cecd1['callbackUniqueid']?moment()[_0x3bd1('0x15')](_0x3bd1('0x16')):undefined,'VoiceQueueId':_0x54def1['id']})[_0x3bd1('0x26')](_0x3fcb83());});}}}})[_0x3bd1('0x1b')](function(){return _0x58f908[_0x3bd1('0x19')][_0x3bd1('0x31')]({'where':{'type':_0x3bd1('0x32')},'attributes':['id'],'include':[{'model':_0x58f908[_0x3bd1('0x37')],'as':'BlackLists','where':{'id':_0x5cecd1[_0x3bd1('0x23')]}}]})[_0x3bd1('0x1b')](function(_0x34b591){if(_0x34b591){var _0x498b2b=[];for(var _0x35df0f=0x0,_0x47808a;_0x35df0f<_0x34b591[_0x3bd1('0x38')];_0x35df0f+=0x1){_0x47808a=_0x34b591[_0x35df0f]['get']({'plain':!![]});_0x58f908[_0x3bd1('0x39')]['create']({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'VoiceQueueId':_0x47808a['id']})['catch'](function(_0x2fbc56){logger[_0x3bd1('0x3a')]('cmContact,\x20%s,\x20%s',_0x3bd1('0x12'),_0x2fbc56[_0x3bd1('0x3b')]);});}}});})['then'](function(){return _0x58f908[_0x3bd1('0x2c')][_0x3bd1('0x31')]({'attributes':['id',_0x3bd1('0x33'),_0x3bd1('0x18')],'include':[{'model':_0x58f908['CmList'],'as':'Lists','where':{'id':_0x5cecd1['ListId']}}]})[_0x3bd1('0x1b')](function(_0x7eba46){if(_0x7eba46){var _0x5b35ca=[];for(var _0x13b922=0x0,_0x185cec;_0x13b922<_0x7eba46[_0x3bd1('0x38')];_0x13b922+=0x1){_0x185cec=_0x7eba46[_0x13b922][_0x3bd1('0x10')]({'plain':!![]});switch(_0x185cec[_0x3bd1('0x33')]){case _0x3bd1('0x35'):_0x33b963(_0x185cec)[_0x3bd1('0x26')](_0x3f8656());break;case'onlyIfOpen':_0x187ec4(_0x185cec)[_0x3bd1('0x26')](_0x3f8656());break;default:_0x58f908[_0x3bd1('0x1f')]['create']({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'scheduledat':_0x5cecd1[_0x3bd1('0x14')]?_0x5cecd1[_0x3bd1('0x14')]:moment()['format'](_0x3bd1('0x16')),'priority':_0x5cecd1['priority']?_0x5cecd1['priority']:0x2,'callback':_0x5cecd1[_0x3bd1('0x25')]?!![]:![],'callbackuniqueid':_0x5cecd1[_0x3bd1('0x25')]?_0x5cecd1[_0x3bd1('0x25')]:undefined,'callbackat':_0x5cecd1['callbackUniqueid']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x185cec['id']})[_0x3bd1('0x26')](_0x3f8656());}}}});})[_0x3bd1('0x1b')](function(){return _0x58f908['Campaign']['findAll']({'attributes':['id'],'include':[{'model':_0x58f908[_0x3bd1('0x37')],'as':_0x3bd1('0x3c'),'where':{'id':_0x5cecd1[_0x3bd1('0x23')]}}]})['then'](function(_0x2d5827){if(_0x2d5827){var _0x181735=[];for(var _0x3f1c4c=0x0,_0x59b1ab;_0x3f1c4c<_0x2d5827[_0x3bd1('0x38')];_0x3f1c4c+=0x1){_0x59b1ab=_0x2d5827[_0x3f1c4c]['get']({'plain':!![]});_0x58f908['CmHopperBlack'][_0x3bd1('0x22')]({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'CampaignId':_0x59b1ab['id']})['catch'](function(_0x55dac6){logger['error']('cmContact,\x20%s,\x20%s',_0x3bd1('0x12'),_0x55dac6[_0x3bd1('0x3b')]);});}}});})[_0x3bd1('0x1b')](function(){_0x5bfc52();})[_0x3bd1('0x26')](function(_0x574ebe){logger[_0x3bd1('0x3a')](_0x3bd1('0x3d'),_0x3bd1('0x12'),_0x574ebe[_0x3bd1('0x3b')]);_0x5bfc52(_0x574ebe);});}else{_0x5bfc52(new Error(_0x3bd1('0x3e')));}},'afterDestroy':function(_0x44f358,_0x393fae,_0x31f619){var _0x2c9f98=_0x4d77dd[_0x3bd1('0xf')];var _0x23d5b2=_0x44f358['get']({'plain':!![]});return _0x2c9f98[_0x3bd1('0x1f')][_0x3bd1('0x31')]({'raw':!![],'where':{'ListId':_0x23d5b2['ListId'],'ContactId':_0x23d5b2['id']}})[_0x3bd1('0x1b')](function(_0x405db1){if(!_[_0x3bd1('0x3f')](_0x405db1)){var _0x2d7cba=[];for(var _0x359d30=0x0;_0x359d30<_0x405db1[_0x3bd1('0x38')];_0x359d30+=0x1){var _0x4e7708=_0x2c9f98[_0x3bd1('0x1f')][_0x3bd1('0x40')]({'where':{'ListId':_0x405db1[_0x359d30]['ListId'],'ContactId':_0x405db1[_0x359d30][_0x3bd1('0x41')],'VoiceQueueId':_0x405db1[_0x359d30][_0x3bd1('0x42')],'CampaignId':_0x405db1[_0x359d30][_0x3bd1('0x43')]}});_0x2d7cba['push'](_0x4e7708);}return BPromise[_0x3bd1('0x44')](_0x2d7cba);}})[_0x3bd1('0x1b')](function(_0x4eead0){logger[_0x3bd1('0x45')](_0x3bd1('0x46'),util[_0x3bd1('0x13')](_0x4eead0,{'showHidden':![],'depth':null}));_0x31f619();})[_0x3bd1('0x26')](function(_0x336dae){logger[_0x3bd1('0x3a')](_0x3bd1('0x47'),util[_0x3bd1('0x13')](_0x336dae,{'showHidden':![],'depth':null}));_0x31f619(_0x336dae);});}}});};
\ No newline at end of file
index 0f4de93..bfb7f1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
+var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'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 52fd4af..9bfa652 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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 3205ce5..4410352 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(_0x213c19,_0x4f1ad8){var _0x53e5b6=function(_0xe6ee97){while(--_0xe6ee97){_0x213c19['push'](_0x213c19['shift']());}};_0x53e5b6(++_0x4f1ad8);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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(_0x33468e,_0x46ca79){var _0x5b57dd=function(_0x3a759b){while(--_0x3a759b){_0x33468e['push'](_0x33468e['shift']());}};_0x5b57dd(++_0x46ca79);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/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 a7132e9..72a07d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0b2=['exports','INTEGER','STRING','PHONE'];(function(_0x10bc52,_0x81c478){var _0x1b7021=function(_0xb25d2){while(--_0xb25d2){_0x10bc52['push'](_0x10bc52['shift']());}};_0x1b7021(++_0x81c478);}(_0xe0b2,0xec));var _0x2e0b=function(_0x5445f5,_0x46fffb){_0x5445f5=_0x5445f5-0x0;var _0x20dcdf=_0xe0b2[_0x5445f5];return _0x20dcdf;};'use strict';var Sequelize=require('sequelize');module[_0x2e0b('0x0')]={'CmContactId':{'type':Sequelize[_0x2e0b('0x1')],'primaryKey':!![]},'item':{'type':Sequelize[_0x2e0b('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x2e0b('0x1')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x2e0b('0x2')],'defaultValue':_0x2e0b('0x3')},'OrderBy':{'type':Sequelize[_0x2e0b('0x1')],'defaultValue':null},'description':{'type':Sequelize['STRING'],'defaultValue':null}};
\ No newline at end of file
+var _0xd73a=['STRING','sequelize','exports','INTEGER'];(function(_0xc3e845,_0x341233){var _0x32bdb5=function(_0x43323d){while(--_0x43323d){_0xc3e845['push'](_0xc3e845['shift']());}};_0x32bdb5(++_0x341233);}(_0xd73a,0x171));var _0xad73=function(_0x3e83b7,_0x435885){_0x3e83b7=_0x3e83b7-0x0;var _0x28d13a=_0xd73a[_0x3e83b7];return _0x28d13a;};'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 a128bf2..063c0ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7591=['Content-Range','apply','reject','save','update','then','get','CmContactHasItems','UserProfileResource','error','name','send','index','CmContactHasItem','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','pick','filter','merge','map','VIRTUAL','options','where','includeAll','findAll','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit'];(function(_0x3c5e54,_0x2b991b){var _0x3ae1f3=function(_0x43f80f){while(--_0x43f80f){_0x3c5e54['push'](_0x3c5e54['shift']());}};_0x3ae1f3(++_0x2b991b);}(_0x7591,0x83));var _0x1759=function(_0x42a3bd,_0x297428){_0x42a3bd=_0x42a3bd-0x0;var _0x2d45fc=_0x7591[_0x42a3bd];return _0x2d45fc;};'use strict';var emlformat=require(_0x1759('0x0'));var rimraf=require(_0x1759('0x1'));var zipdir=require(_0x1759('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1759('0x3'));var moment=require(_0x1759('0x4'));var BPromise=require(_0x1759('0x5'));var Mustache=require(_0x1759('0x6'));var util=require(_0x1759('0x7'));var path=require(_0x1759('0x8'));var sox=require(_0x1759('0x9'));var csv=require(_0x1759('0xa'));var ejs=require(_0x1759('0xb'));var fs=require('fs');var fs_extra=require(_0x1759('0xc'));var _=require(_0x1759('0xd'));var squel=require('squel');var crypto=require(_0x1759('0xe'));var jsforce=require(_0x1759('0xf'));var deskjs=require(_0x1759('0x10'));var toCsv=require(_0x1759('0xa'));var querystring=require(_0x1759('0x11'));var Papa=require(_0x1759('0x12'));var Redis=require(_0x1759('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x1759('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1759('0x15'));var logger=require(_0x1759('0x16'))(_0x1759('0x17'));var utils=require(_0x1759('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x1759('0x19'));var db=require(_0x1759('0x1a'))['db'];function respondWithStatusCode(_0x468efb,_0x3ed9c1){_0x3ed9c1=_0x3ed9c1||0xcc;return function(_0x2554ce){if(_0x2554ce){return _0x468efb[_0x1759('0x1b')](_0x3ed9c1);}return _0x468efb['status'](_0x3ed9c1)[_0x1759('0x1c')]();};}function respondWithResult(_0x3fa25d,_0x318845){_0x318845=_0x318845||0xc8;return function(_0x1813e9){if(_0x1813e9){return _0x3fa25d[_0x1759('0x1d')](_0x318845)[_0x1759('0x1e')](_0x1813e9);}};}function respondWithFilteredResult(_0x472bd5,_0x3463de){return function(_0x484729){if(_0x484729){var _0xa3dcf6=typeof _0x3463de[_0x1759('0x1f')]==='undefined'&&typeof _0x3463de['limit']===_0x1759('0x20');var _0x2cd8bb=_0x484729[_0x1759('0x21')];var _0xc12f6e=_0xa3dcf6?0x0:_0x3463de[_0x1759('0x1f')];var _0x455793=_0xa3dcf6?_0x484729[_0x1759('0x21')]:_0x3463de[_0x1759('0x1f')]+_0x3463de[_0x1759('0x22')];var _0x39b862;if(_0x455793>=_0x2cd8bb){_0x455793=_0x2cd8bb;_0x39b862=0xc8;}else{_0x39b862=0xce;}_0x472bd5[_0x1759('0x1d')](_0x39b862);return _0x472bd5['set'](_0x1759('0x23'),_0xc12f6e+'-'+_0x455793+'/'+_0x2cd8bb)[_0x1759('0x1e')](_0x484729);}return null;};}function patchUpdates(_0x15ffbf){return function(_0x24776d){try{jsonpatch[_0x1759('0x24')](_0x24776d,_0x15ffbf,!![]);}catch(_0x5782d0){return BPromise[_0x1759('0x25')](_0x5782d0);}return _0x24776d[_0x1759('0x26')]();};}function saveUpdates(_0x513e9b,_0xd004f2){return function(_0x3b9d8e){if(_0x3b9d8e){return _0x3b9d8e[_0x1759('0x27')](_0x513e9b)[_0x1759('0x28')](function(_0x5e3cc1){return _0x5e3cc1;});}return null;};}function removeEntity(_0x61f776,_0x2269fa){return function(_0x6cc525){if(_0x6cc525){return _0x6cc525['destroy']()['then'](function(){var _0x43f855=_0x6cc525[_0x1759('0x29')]({'plain':!![]});var _0x4f1733=_0x1759('0x2a');return db[_0x1759('0x2b')]['destroy']({'where':{'type':_0x4f1733,'resourceId':_0x43f855['id']}})[_0x1759('0x28')](function(){return _0x6cc525;});})[_0x1759('0x28')](function(){_0x61f776['status'](0xcc)[_0x1759('0x1c')]();});}};}function handleEntityNotFound(_0x35642f,_0xf20618){return function(_0x1cb55b){if(!_0x1cb55b){_0x35642f[_0x1759('0x1b')](0x194);}return _0x1cb55b;};}function handleError(_0x32c356,_0x53c161){_0x53c161=_0x53c161||0x1f4;return function(_0x3b554b){logger[_0x1759('0x2c')](_0x3b554b['stack']);if(_0x3b554b[_0x1759('0x2d')]){delete _0x3b554b[_0x1759('0x2d')];}_0x32c356[_0x1759('0x1d')](_0x53c161)[_0x1759('0x2e')](_0x3b554b);};}exports[_0x1759('0x2f')]=function(_0x176632,_0xa252b9){var _0x599fad={},_0x298aeb={},_0x4c2ad4={'count':0x0,'rows':[]};var _0x22ec7a=_['map'](db[_0x1759('0x30')][_0x1759('0x31')],function(_0x5ee746){return{'name':_0x5ee746[_0x1759('0x32')],'type':_0x5ee746[_0x1759('0x33')]['key']};});_0x298aeb[_0x1759('0x34')]=_['map'](_0x22ec7a,_0x1759('0x2d'));_0x298aeb[_0x1759('0x35')]=_[_0x1759('0x36')](_0x176632['query']);_0x298aeb[_0x1759('0x37')]=_[_0x1759('0x38')](_0x298aeb[_0x1759('0x34')],_0x298aeb['query']);_0x599fad[_0x1759('0x39')]=_['intersection'](_0x298aeb['model'],qs[_0x1759('0x3a')](_0x176632[_0x1759('0x35')][_0x1759('0x3a')]));_0x599fad[_0x1759('0x39')]=_0x599fad[_0x1759('0x39')]['length']?_0x599fad[_0x1759('0x39')]:_0x298aeb['model'];if(!_0x176632[_0x1759('0x35')][_0x1759('0x3b')]('nolimit')){_0x599fad[_0x1759('0x22')]=qs[_0x1759('0x22')](_0x176632[_0x1759('0x35')][_0x1759('0x22')]);_0x599fad[_0x1759('0x1f')]=qs[_0x1759('0x1f')](_0x176632[_0x1759('0x35')][_0x1759('0x1f')]);}_0x599fad[_0x1759('0x3c')]=qs['sort'](_0x176632[_0x1759('0x35')]['sort']);_0x599fad['where']=qs['filters'](_[_0x1759('0x3d')](_0x176632[_0x1759('0x35')],_0x298aeb[_0x1759('0x37')]),_0x22ec7a);if(_0x176632[_0x1759('0x35')][_0x1759('0x3e')]){_0x599fad['where']=_[_0x1759('0x3f')](_0x599fad['where'],{'$or':_[_0x1759('0x40')](_0x22ec7a,function(_0x42bdc7){if(_0x42bdc7['type']!==_0x1759('0x41')){var _0x3fd081={};_0x3fd081[_0x42bdc7[_0x1759('0x2d')]]={'$like':'%'+_0x176632[_0x1759('0x35')][_0x1759('0x3e')]+'%'};return _0x3fd081;}})});}_0x599fad=_[_0x1759('0x3f')]({},_0x599fad,_0x176632[_0x1759('0x42')]);var _0x3673ee={'where':_0x599fad[_0x1759('0x43')]};return db[_0x1759('0x30')]['count'](_0x3673ee)[_0x1759('0x28')](function(_0x192810){_0x4c2ad4['count']=_0x192810;if(_0x176632[_0x1759('0x35')][_0x1759('0x44')]){_0x599fad['include']=[{'all':!![]}];}return db['CmContactHasItem'][_0x1759('0x45')](_0x599fad);})[_0x1759('0x28')](function(_0x563e4d){_0x4c2ad4['rows']=_0x563e4d;return _0x4c2ad4;})[_0x1759('0x28')](respondWithFilteredResult(_0xa252b9,_0x599fad))[_0x1759('0x46')](handleError(_0xa252b9,null));};exports[_0x1759('0x47')]=function(_0x272d32,_0x5c033f){var _0x1c350f={'raw':!![],'where':{'id':_0x272d32[_0x1759('0x48')]['id']}},_0x3619e2={};_0x3619e2[_0x1759('0x34')]=_['keys'](db[_0x1759('0x30')][_0x1759('0x31')]);_0x3619e2[_0x1759('0x35')]=_['keys'](_0x272d32[_0x1759('0x35')]);_0x3619e2[_0x1759('0x37')]=_[_0x1759('0x38')](_0x3619e2[_0x1759('0x34')],_0x3619e2['query']);_0x1c350f[_0x1759('0x39')]=_['intersection'](_0x3619e2[_0x1759('0x34')],qs[_0x1759('0x3a')](_0x272d32[_0x1759('0x35')]['fields']));_0x1c350f[_0x1759('0x39')]=_0x1c350f[_0x1759('0x39')][_0x1759('0x49')]?_0x1c350f[_0x1759('0x39')]:_0x3619e2[_0x1759('0x34')];if(_0x272d32[_0x1759('0x35')][_0x1759('0x44')]){_0x1c350f['include']=[{'all':!![]}];}_0x1c350f=_[_0x1759('0x3f')]({},_0x1c350f,_0x272d32['options']);return db[_0x1759('0x30')][_0x1759('0x4a')](_0x1c350f)[_0x1759('0x28')](handleEntityNotFound(_0x5c033f,null))['then'](respondWithResult(_0x5c033f,null))['catch'](handleError(_0x5c033f,null));};exports[_0x1759('0x4b')]=function(_0x5700b6,_0x148b32){return db['CmContactHasItem']['create'](_0x5700b6[_0x1759('0x4c')],{})['then'](function(_0x553ccb){var _0x9a61ed=_0x5700b6[_0x1759('0x4d')][_0x1759('0x29')]({'plain':!![]});if(!_0x9a61ed)throw new Error(_0x1759('0x4e'));if(_0x9a61ed[_0x1759('0x4f')]===_0x1759('0x4d')){var _0x30392c=_0x553ccb[_0x1759('0x29')]({'plain':!![]});var _0x2a9ae2='CmContactHasItems';return db['UserProfileSection'][_0x1759('0x4a')]({'where':{'name':_0x2a9ae2,'userProfileId':_0x9a61ed[_0x1759('0x50')]},'raw':!![]})['then'](function(_0x147e95){if(_0x147e95&&_0x147e95['autoAssociation']===0x0){return db[_0x1759('0x2b')][_0x1759('0x4b')]({'name':_0x30392c[_0x1759('0x2d')],'resourceId':_0x30392c['id'],'type':_0x147e95[_0x1759('0x2d')],'sectionId':_0x147e95['id']},{})['then'](function(){return _0x553ccb;});}else{return _0x553ccb;}})['catch'](function(_0x3cb7a9){logger[_0x1759('0x2c')](_0x1759('0x51'),_0x3cb7a9);throw _0x3cb7a9;});}return _0x553ccb;})[_0x1759('0x28')](respondWithResult(_0x148b32,0xc9))[_0x1759('0x46')](handleError(_0x148b32,null));};exports[_0x1759('0x27')]=function(_0x1969a6,_0xa552e8){if(_0x1969a6[_0x1759('0x4c')]['id']){delete _0x1969a6[_0x1759('0x4c')]['id'];}return db[_0x1759('0x30')][_0x1759('0x4a')]({'where':{'id':_0x1969a6[_0x1759('0x48')]['id']}})[_0x1759('0x28')](handleEntityNotFound(_0xa552e8,null))[_0x1759('0x28')](saveUpdates(_0x1969a6[_0x1759('0x4c')],null))[_0x1759('0x28')](respondWithResult(_0xa552e8,null))[_0x1759('0x46')](handleError(_0xa552e8,null));};exports[_0x1759('0x52')]=function(_0x472bba,_0x205683){return db['CmContactHasItem'][_0x1759('0x4a')]({'where':{'id':_0x472bba[_0x1759('0x48')]['id']}})[_0x1759('0x28')](handleEntityNotFound(_0x205683,null))[_0x1759('0x28')](removeEntity(_0x205683,null))[_0x1759('0x46')](handleError(_0x205683,null));};
\ No newline at end of file
+var _0x119e=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','lodash','desk.js','to-csv','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','then','get','CmContactHasItems','UserProfileResource','destroy','error','stack','name','send','index','map','CmContactHasItem','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','find','create','body','user'];(function(_0xfb6da,_0x106036){var _0x5956e9=function(_0x420892){while(--_0x420892){_0xfb6da['push'](_0xfb6da['shift']());}};_0x5956e9(++_0x106036);}(_0x119e,0x1e7));var _0xe119=function(_0x28c517,_0x1fcbc2){_0x28c517=_0x28c517-0x0;var _0x1e8a1b=_0x119e[_0x28c517];return _0x1e8a1b;};'use strict';var emlformat=require(_0xe119('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe119('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe119('0x2'));var moment=require(_0xe119('0x3'));var BPromise=require(_0xe119('0x4'));var Mustache=require(_0xe119('0x5'));var util=require(_0xe119('0x6'));var path=require(_0xe119('0x7'));var sox=require(_0xe119('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe119('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe119('0xa'));var toCsv=require(_0xe119('0xb'));var querystring=require(_0xe119('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe119('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe119('0xe'));var logger=require(_0xe119('0xf'))(_0xe119('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe119('0x11'));var db=require(_0xe119('0x12'))['db'];function respondWithStatusCode(_0x2a0ab3,_0xdc394b){_0xdc394b=_0xdc394b||0xcc;return function(_0xef19b0){if(_0xef19b0){return _0x2a0ab3[_0xe119('0x13')](_0xdc394b);}return _0x2a0ab3[_0xe119('0x14')](_0xdc394b)[_0xe119('0x15')]();};}function respondWithResult(_0x4c227c,_0x4aa7b3){_0x4aa7b3=_0x4aa7b3||0xc8;return function(_0x3fca84){if(_0x3fca84){return _0x4c227c[_0xe119('0x14')](_0x4aa7b3)[_0xe119('0x16')](_0x3fca84);}};}function respondWithFilteredResult(_0x15b754,_0x27f157){return function(_0x106ecb){if(_0x106ecb){var _0x4666cc=typeof _0x27f157[_0xe119('0x17')]==='undefined'&&typeof _0x27f157[_0xe119('0x18')]===_0xe119('0x19');var _0x5b4a9f=_0x106ecb[_0xe119('0x1a')];var _0xd50ac3=_0x4666cc?0x0:_0x27f157[_0xe119('0x17')];var _0x5b5a03=_0x4666cc?_0x106ecb[_0xe119('0x1a')]:_0x27f157['offset']+_0x27f157[_0xe119('0x18')];var _0x3e40a4;if(_0x5b5a03>=_0x5b4a9f){_0x5b5a03=_0x5b4a9f;_0x3e40a4=0xc8;}else{_0x3e40a4=0xce;}_0x15b754['status'](_0x3e40a4);return _0x15b754[_0xe119('0x1b')](_0xe119('0x1c'),_0xd50ac3+'-'+_0x5b5a03+'/'+_0x5b4a9f)[_0xe119('0x16')](_0x106ecb);}return null;};}function patchUpdates(_0x37a067){return function(_0x5a1671){try{jsonpatch[_0xe119('0x1d')](_0x5a1671,_0x37a067,!![]);}catch(_0x500869){return BPromise['reject'](_0x500869);}return _0x5a1671['save']();};}function saveUpdates(_0x288fe8,_0x1dce35){return function(_0xb72614){if(_0xb72614){return _0xb72614['update'](_0x288fe8)[_0xe119('0x1e')](function(_0x2e9b27){return _0x2e9b27;});}return null;};}function removeEntity(_0x1bd082,_0x182468){return function(_0x2674c2){if(_0x2674c2){return _0x2674c2['destroy']()[_0xe119('0x1e')](function(){var _0x3db47a=_0x2674c2[_0xe119('0x1f')]({'plain':!![]});var _0x17f75f=_0xe119('0x20');return db[_0xe119('0x21')][_0xe119('0x22')]({'where':{'type':_0x17f75f,'resourceId':_0x3db47a['id']}})['then'](function(){return _0x2674c2;});})['then'](function(){_0x1bd082[_0xe119('0x14')](0xcc)[_0xe119('0x15')]();});}};}function handleEntityNotFound(_0x524e7b,_0x48c3d3){return function(_0x295930){if(!_0x295930){_0x524e7b[_0xe119('0x13')](0x194);}return _0x295930;};}function handleError(_0x4b5878,_0x591ff1){_0x591ff1=_0x591ff1||0x1f4;return function(_0x2ac5f5){logger[_0xe119('0x23')](_0x2ac5f5[_0xe119('0x24')]);if(_0x2ac5f5['name']){delete _0x2ac5f5[_0xe119('0x25')];}_0x4b5878[_0xe119('0x14')](_0x591ff1)[_0xe119('0x26')](_0x2ac5f5);};}exports[_0xe119('0x27')]=function(_0x5d5f91,_0x550eea){var _0x5c52f2={},_0x2d2f2d={},_0x53a6c2={'count':0x0,'rows':[]};var _0x4aa4fd=_[_0xe119('0x28')](db[_0xe119('0x29')][_0xe119('0x2a')],function(_0x2472bd){return{'name':_0x2472bd['fieldName'],'type':_0x2472bd[_0xe119('0x2b')][_0xe119('0x2c')]};});_0x2d2f2d[_0xe119('0x2d')]=_['map'](_0x4aa4fd,_0xe119('0x25'));_0x2d2f2d[_0xe119('0x2e')]=_[_0xe119('0x2f')](_0x5d5f91[_0xe119('0x2e')]);_0x2d2f2d['filters']=_['intersection'](_0x2d2f2d[_0xe119('0x2d')],_0x2d2f2d[_0xe119('0x2e')]);_0x5c52f2[_0xe119('0x30')]=_[_0xe119('0x31')](_0x2d2f2d[_0xe119('0x2d')],qs[_0xe119('0x32')](_0x5d5f91[_0xe119('0x2e')][_0xe119('0x32')]));_0x5c52f2['attributes']=_0x5c52f2[_0xe119('0x30')][_0xe119('0x33')]?_0x5c52f2[_0xe119('0x30')]:_0x2d2f2d[_0xe119('0x2d')];if(!_0x5d5f91[_0xe119('0x2e')][_0xe119('0x34')](_0xe119('0x35'))){_0x5c52f2[_0xe119('0x18')]=qs[_0xe119('0x18')](_0x5d5f91[_0xe119('0x2e')][_0xe119('0x18')]);_0x5c52f2[_0xe119('0x17')]=qs['offset'](_0x5d5f91[_0xe119('0x2e')]['offset']);}_0x5c52f2[_0xe119('0x36')]=qs[_0xe119('0x37')](_0x5d5f91[_0xe119('0x2e')][_0xe119('0x37')]);_0x5c52f2[_0xe119('0x38')]=qs['filters'](_[_0xe119('0x39')](_0x5d5f91['query'],_0x2d2f2d[_0xe119('0x3a')]),_0x4aa4fd);if(_0x5d5f91[_0xe119('0x2e')][_0xe119('0x3b')]){_0x5c52f2[_0xe119('0x38')]=_[_0xe119('0x3c')](_0x5c52f2['where'],{'$or':_['map'](_0x4aa4fd,function(_0x475603){if(_0x475603[_0xe119('0x2b')]!==_0xe119('0x3d')){var _0x1d5a6e={};_0x1d5a6e[_0x475603[_0xe119('0x25')]]={'$like':'%'+_0x5d5f91[_0xe119('0x2e')][_0xe119('0x3b')]+'%'};return _0x1d5a6e;}})});}_0x5c52f2=_['merge']({},_0x5c52f2,_0x5d5f91[_0xe119('0x3e')]);var _0x2ce7cf={'where':_0x5c52f2[_0xe119('0x38')]};return db[_0xe119('0x29')][_0xe119('0x1a')](_0x2ce7cf)[_0xe119('0x1e')](function(_0x235f6b){_0x53a6c2[_0xe119('0x1a')]=_0x235f6b;if(_0x5d5f91['query'][_0xe119('0x3f')]){_0x5c52f2['include']=[{'all':!![]}];}return db[_0xe119('0x29')][_0xe119('0x40')](_0x5c52f2);})[_0xe119('0x1e')](function(_0x2967d0){_0x53a6c2[_0xe119('0x41')]=_0x2967d0;return _0x53a6c2;})['then'](respondWithFilteredResult(_0x550eea,_0x5c52f2))[_0xe119('0x42')](handleError(_0x550eea,null));};exports[_0xe119('0x43')]=function(_0x46b137,_0x5cefd3){var _0x54124c={'raw':!![],'where':{'id':_0x46b137[_0xe119('0x44')]['id']}},_0x1da93e={};_0x1da93e[_0xe119('0x2d')]=_['keys'](db[_0xe119('0x29')][_0xe119('0x2a')]);_0x1da93e['query']=_['keys'](_0x46b137[_0xe119('0x2e')]);_0x1da93e[_0xe119('0x3a')]=_['intersection'](_0x1da93e[_0xe119('0x2d')],_0x1da93e[_0xe119('0x2e')]);_0x54124c[_0xe119('0x30')]=_[_0xe119('0x31')](_0x1da93e[_0xe119('0x2d')],qs[_0xe119('0x32')](_0x46b137[_0xe119('0x2e')][_0xe119('0x32')]));_0x54124c[_0xe119('0x30')]=_0x54124c[_0xe119('0x30')][_0xe119('0x33')]?_0x54124c['attributes']:_0x1da93e[_0xe119('0x2d')];if(_0x46b137[_0xe119('0x2e')]['includeAll']){_0x54124c['include']=[{'all':!![]}];}_0x54124c=_[_0xe119('0x3c')]({},_0x54124c,_0x46b137[_0xe119('0x3e')]);return db[_0xe119('0x29')][_0xe119('0x45')](_0x54124c)[_0xe119('0x1e')](handleEntityNotFound(_0x5cefd3,null))['then'](respondWithResult(_0x5cefd3,null))[_0xe119('0x42')](handleError(_0x5cefd3,null));};exports['create']=function(_0xe2d2af,_0x2a0d60){return db['CmContactHasItem'][_0xe119('0x46')](_0xe2d2af[_0xe119('0x47')],{})[_0xe119('0x1e')](function(_0xebc4ff){var _0x5f4b48=_0xe2d2af[_0xe119('0x48')]['get']({'plain':!![]});if(!_0x5f4b48)throw new Error(_0xe119('0x49'));if(_0x5f4b48[_0xe119('0x4a')]===_0xe119('0x48')){var _0x1ac3d9=_0xebc4ff[_0xe119('0x1f')]({'plain':!![]});var _0x3c43f5=_0xe119('0x20');return db[_0xe119('0x4b')][_0xe119('0x45')]({'where':{'name':_0x3c43f5,'userProfileId':_0x5f4b48[_0xe119('0x4c')]},'raw':!![]})[_0xe119('0x1e')](function(_0x211846){if(_0x211846&&_0x211846[_0xe119('0x4d')]===0x0){return db['UserProfileResource']['create']({'name':_0x1ac3d9['name'],'resourceId':_0x1ac3d9['id'],'type':_0x211846['name'],'sectionId':_0x211846['id']},{})[_0xe119('0x1e')](function(){return _0xebc4ff;});}else{return _0xebc4ff;}})[_0xe119('0x42')](function(_0xeacff0){logger[_0xe119('0x23')](_0xe119('0x4e'),_0xeacff0);throw _0xeacff0;});}return _0xebc4ff;})['then'](respondWithResult(_0x2a0d60,0xc9))['catch'](handleError(_0x2a0d60,null));};exports[_0xe119('0x4f')]=function(_0x5ca8da,_0x483366){if(_0x5ca8da[_0xe119('0x47')]['id']){delete _0x5ca8da[_0xe119('0x47')]['id'];}return db[_0xe119('0x29')][_0xe119('0x45')]({'where':{'id':_0x5ca8da[_0xe119('0x44')]['id']}})[_0xe119('0x1e')](handleEntityNotFound(_0x483366,null))[_0xe119('0x1e')](saveUpdates(_0x5ca8da[_0xe119('0x47')],null))[_0xe119('0x1e')](respondWithResult(_0x483366,null))[_0xe119('0x42')](handleError(_0x483366,null));};exports[_0xe119('0x22')]=function(_0x183827,_0x597208){return db['CmContactHasItem'][_0xe119('0x45')]({'where':{'id':_0x183827[_0xe119('0x44')]['id']}})[_0xe119('0x1e')](handleEntityNotFound(_0x597208,null))[_0xe119('0x1e')](removeEntity(_0x597208,null))[_0xe119('0x42')](handleError(_0x597208,null));};
\ No newline at end of file
index 80c3077..5c3c94e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52f2=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmContactHasItem.attributes','define','CmContactHasItem','cm_contact_has_items','lodash','util'];(function(_0x296bfb,_0x1a5cdd){var _0x29f45d=function(_0x20e9da){while(--_0x20e9da){_0x296bfb['push'](_0x296bfb['shift']());}};_0x29f45d(++_0x1a5cdd);}(_0x52f2,0x11c));var _0x252f=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x52f2[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x252f('0x0'));var util=require(_0x252f('0x1'));var logger=require(_0x252f('0x2'))(_0x252f('0x3'));var moment=require(_0x252f('0x4'));var BPromise=require(_0x252f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x252f('0x6'));var rimraf=require(_0x252f('0x7'));var config=require(_0x252f('0x8'));var attributes=require(_0x252f('0x9'));module['exports']=function(_0x5419eb,_0x2f7fde){return _0x5419eb[_0x252f('0xa')](_0x252f('0xb'),attributes,{'tableName':_0x252f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x92ce=['path','rimraf','./cmContactHasItem.attributes','exports','define','CmContactHasItem','cm_contact_has_items','lodash','api','bluebird','request-promise'];(function(_0x154ce8,_0xbf2ded){var _0x5092db=function(_0x1561e0){while(--_0x1561e0){_0x154ce8['push'](_0x154ce8['shift']());}};_0x5092db(++_0xbf2ded);}(_0x92ce,0x1a9));var _0xe92c=function(_0xe4751c,_0x3c31af){_0xe4751c=_0xe4751c-0x0;var _0x37b78d=_0x92ce[_0xe4751c];return _0x37b78d;};'use strict';var _=require(_0xe92c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe92c('0x1'));var moment=require('moment');var BPromise=require(_0xe92c('0x2'));var rp=require(_0xe92c('0x3'));var fs=require('fs');var path=require(_0xe92c('0x4'));var rimraf=require(_0xe92c('0x5'));var config=require('../../config/environment');var attributes=require(_0xe92c('0x6'));module[_0xe92c('0x7')]=function(_0x584723,_0x360e98){return _0x584723[_0xe92c('0x8')](_0xe92c('0x9'),attributes,{'tableName':_0xe92c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a3822d0..1ecc682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd80a=['randomstring','../../mysqldb','rpc','../../config/environment','client','request','then','request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','code','CmContactHasItem,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird'];(function(_0x2f3a5c,_0x5bb18e){var _0x266768=function(_0x23d056){while(--_0x23d056){_0x2f3a5c['push'](_0x2f3a5c['shift']());}};_0x266768(++_0x5bb18e);}(_0xd80a,0xd8));var _0xad80=function(_0x5e5937,_0x302d4b){_0x5e5937=_0x5e5937-0x0;var _0x13f53f=_0xd80a[_0x5e5937];return _0x13f53f;};'use strict';var _=require(_0xad80('0x0'));var util=require(_0xad80('0x1'));var moment=require(_0xad80('0x2'));var BPromise=require(_0xad80('0x3'));var rs=require(_0xad80('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xad80('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xad80('0x6'));var config=require(_0xad80('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xad80('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b319c,_0x1ecbe8,_0x32c2ae){return new BPromise(function(_0x5668d4,_0x153a15){return client[_0xad80('0x9')](_0x4b319c,_0x32c2ae)[_0xad80('0xa')](function(_0x1f75d4){logger['info']('CmContactHasItem,\x20%s,\x20%s',_0x1ecbe8,_0xad80('0xb'));logger[_0xad80('0xc')](_0xad80('0xd'),_0x1ecbe8,_0xad80('0xb'),JSON[_0xad80('0xe')](_0x1f75d4));if(_0x1f75d4[_0xad80('0xf')]){if(_0x1f75d4[_0xad80('0xf')][_0xad80('0x10')]===0x1f4){logger[_0xad80('0xf')](_0xad80('0x11'),_0x1ecbe8,_0x1f75d4[_0xad80('0xf')][_0xad80('0x12')]);return _0x153a15(_0x1f75d4['error'][_0xad80('0x12')]);}logger['error'](_0xad80('0x11'),_0x1ecbe8,_0x1f75d4[_0xad80('0xf')][_0xad80('0x12')]);return _0x5668d4(_0x1f75d4['error'][_0xad80('0x12')]);}else{logger[_0xad80('0x13')](_0xad80('0x11'),_0x1ecbe8,_0xad80('0xb'));_0x5668d4(_0x1f75d4[_0xad80('0x14')]['message']);}})[_0xad80('0x15')](function(_0x23702e){logger[_0xad80('0xf')](_0xad80('0x11'),_0x1ecbe8,_0x23702e);_0x153a15(_0x23702e);});});}
\ No newline at end of file
+var _0x59ad=['lodash','util','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x281478,_0x42c4cf){var _0x173abf=function(_0x82862b){while(--_0x82862b){_0x281478['push'](_0x281478['shift']());}};_0x173abf(++_0x42c4cf);}(_0x59ad,0x108));var _0xd59a=function(_0x449734,_0x512830){_0x449734=_0x449734-0x0;var _0x3be949=_0x59ad[_0x449734];return _0x3be949;};'use strict';var _=require(_0xd59a('0x0'));var util=require(_0xd59a('0x1'));var moment=require(_0xd59a('0x2'));var BPromise=require('bluebird');var rs=require(_0xd59a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd59a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd59a('0x5'))('rpc');var config=require(_0xd59a('0x6'));var jayson=require(_0xd59a('0x7'));var client=jayson[_0xd59a('0x8')][_0xd59a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f444e,_0x4b5120,_0x503e99){return new BPromise(function(_0x3c55c4,_0x258943){return client[_0xd59a('0xa')](_0x3f444e,_0x503e99)[_0xd59a('0xb')](function(_0x3dc562){logger[_0xd59a('0xc')](_0xd59a('0xd'),_0x4b5120,_0xd59a('0xe'));logger[_0xd59a('0xf')]('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0x4b5120,'request\x20sent',JSON[_0xd59a('0x10')](_0x3dc562));if(_0x3dc562[_0xd59a('0x11')]){if(_0x3dc562['error'][_0xd59a('0x12')]===0x1f4){logger['error'](_0xd59a('0xd'),_0x4b5120,_0x3dc562[_0xd59a('0x11')]['message']);return _0x258943(_0x3dc562[_0xd59a('0x11')][_0xd59a('0x13')]);}logger[_0xd59a('0x11')]('CmContactHasItem,\x20%s,\x20%s',_0x4b5120,_0x3dc562['error']['message']);return _0x3c55c4(_0x3dc562['error'][_0xd59a('0x13')]);}else{logger['info'](_0xd59a('0xd'),_0x4b5120,_0xd59a('0xe'));_0x3c55c4(_0x3dc562[_0xd59a('0x14')]['message']);}})[_0xd59a('0x15')](function(_0x3cc67d){logger[_0xd59a('0x11')](_0xd59a('0xd'),_0x4b5120,_0x3cc67d);_0x258943(_0x3cc67d);});});}
\ No newline at end of file
index ef78632..1f3e26e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa883=['fs-extra','../../config/environment','./cmContactHasItem.controller','isAuthenticated','index','get','/:id','show','create','put','delete','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0xd4132,_0x52d7d7){var _0x53e796=function(_0x12756c){while(--_0x12756c){_0xd4132['push'](_0xd4132['shift']());}};_0x53e796(++_0x52d7d7);}(_0xa883,0x1f2));var _0x3a88=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa883[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x3a88('0x0'));var util=require(_0x3a88('0x1'));var path=require(_0x3a88('0x2'));var timeout=require(_0x3a88('0x3'));var express=require(_0x3a88('0x4'));var router=express[_0x3a88('0x5')]();var fs_extra=require(_0x3a88('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3a88('0x7'));var controller=require(_0x3a88('0x8'));router['get']('/',auth[_0x3a88('0x9')](),controller[_0x3a88('0xa')]);router[_0x3a88('0xb')](_0x3a88('0xc'),auth[_0x3a88('0x9')](),controller[_0x3a88('0xd')]);router['post']('/',auth[_0x3a88('0x9')](),controller[_0x3a88('0xe')]);router[_0x3a88('0xf')](_0x3a88('0xc'),auth[_0x3a88('0x9')](),controller['update']);router[_0x3a88('0x10')](_0x3a88('0xc'),auth[_0x3a88('0x9')](),controller[_0x3a88('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x974f=['put','delete','exports','util','path','connect-timeout','express','get','isAuthenticated','index','/:id','post','create'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0x974f,0x85));var _0xf974=function(_0x112948,_0x10dfcf){_0x112948=_0x112948-0x0;var _0x1eec08=_0x974f[_0x112948];return _0x1eec08;};'use strict';var multer=require('multer');var util=require(_0xf974('0x0'));var path=require(_0xf974('0x1'));var timeout=require(_0xf974('0x2'));var express=require(_0xf974('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmContactHasItem.controller');router[_0xf974('0x4')]('/',auth[_0xf974('0x5')](),controller[_0xf974('0x6')]);router[_0xf974('0x4')](_0xf974('0x7'),auth[_0xf974('0x5')](),controller['show']);router[_0xf974('0x8')]('/',auth[_0xf974('0x5')](),controller[_0xf974('0x9')]);router[_0xf974('0xa')](_0xf974('0x7'),auth[_0xf974('0x5')](),controller['update']);router[_0xf974('0xb')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xf974('0xc')]=router;
\ No newline at end of file
index e508d40..3f551c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b1b=['VIRTUAL','getDataValue','alias','STRING','name','TEXT','long','select','values','isArray','stringify','setDataValue','BOOLEAN','lodash','exports'];(function(_0x2b5520,_0x1ca914){var _0x3049c6=function(_0x396f53){while(--_0x396f53){_0x2b5520['push'](_0x2b5520['shift']());}};_0x3049c6(++_0x1ca914);}(_0x7b1b,0x166));var _0xb7b1=function(_0xbdfc2f,_0x15e1be){_0xbdfc2f=_0xbdfc2f-0x0;var _0x42f80b=_0x7b1b[_0xbdfc2f];return _0x42f80b;};'use strict';var Sequelize=require('sequelize');var _=require(_0xb7b1('0x0'));module[_0xb7b1('0x1')]={'name':{'type':Sequelize[_0xb7b1('0x2')],'get':function(_0x2e78b6){return this[_0xb7b1('0x3')](_0xb7b1('0x4'));}},'alias':{'type':Sequelize[_0xb7b1('0x5')],'allowNull':![],'set':function(_0xc278d0){this['setDataValue'](_0xb7b1('0x4'),_0xc278d0?_0xc278d0:this[_0xb7b1('0x3')](_0xb7b1('0x6')));}},'type':{'type':Sequelize[_0xb7b1('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0xb7b1('0x7')](_0xb7b1('0x8')),'get':function(){if(this[_0xb7b1('0x3')]('type')===_0xb7b1('0x9')){return JSON['parse'](this['getDataValue']('values'));}else{return this['getDataValue'](_0xb7b1('0xa'));}},'set':function(_0x20b03b){if(Array[_0xb7b1('0xb')](_0x20b03b)){this['setDataValue'](_0xb7b1('0xa'),JSON[_0xb7b1('0xc')](_0x20b03b));}else{this[_0xb7b1('0xd')](_0xb7b1('0xa'),_0x20b03b);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xb7b1('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM']('voice')}};
\ No newline at end of file
+var _0x528e=['parse','values','isArray','setDataValue','stringify','BOOLEAN','ENUM','sequelize','lodash','VIRTUAL','getDataValue','name','STRING','TEXT','select'];(function(_0x5f3127,_0xf0dab1){var _0x37d392=function(_0x6db34e){while(--_0x6db34e){_0x5f3127['push'](_0x5f3127['shift']());}};_0x37d392(++_0xf0dab1);}(_0x528e,0x160));var _0xe528=function(_0x153e1e,_0x5eb52f){_0x153e1e=_0x153e1e-0x0;var _0x2654ed=_0x528e[_0x153e1e];return _0x2654ed;};'use strict';var Sequelize=require(_0xe528('0x0'));var _=require(_0xe528('0x1'));module['exports']={'name':{'type':Sequelize[_0xe528('0x2')],'get':function(_0x54ef53){return this[_0xe528('0x3')]('alias');}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x1e9b2a){this['setDataValue']('alias',_0x1e9b2a?_0x1e9b2a:this[_0xe528('0x3')](_0xe528('0x4')));}},'type':{'type':Sequelize[_0xe528('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0xe528('0x6')]('long'),'get':function(){if(this['getDataValue']('type')===_0xe528('0x7')){return JSON[_0xe528('0x8')](this[_0xe528('0x3')](_0xe528('0x9')));}else{return this[_0xe528('0x3')](_0xe528('0x9'));}},'set':function(_0x1ed329){if(Array[_0xe528('0xa')](_0x1ed329)){this[_0xe528('0xb')]('values',JSON[_0xe528('0xc')](_0x1ed329));}else{this[_0xe528('0xb')](_0xe528('0x9'),_0x1ed329);}}},'required':{'type':Sequelize[_0xe528('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xe528('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xe528('0xe')]('voice')}};
\ No newline at end of file
index fceeca0..7a819ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bd5=['model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','params','length','includeAll','find','body','catch','create','sequelize','transaction','TEXT','text','Sequelize','number','switch','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','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','reject','save','update','then','destroy','error','stack','name','send','index','map','CmCustomField','rawAttributes','fieldName','type','key'];(function(_0x1f2847,_0x4d21da){var _0x157ba6=function(_0x5d823b){while(--_0x5d823b){_0x1f2847['push'](_0x1f2847['shift']());}};_0x157ba6(++_0x4d21da);}(_0x4bd5,0x77));var _0x54bd=function(_0x17c8cc,_0x5e5647){_0x17c8cc=_0x17c8cc-0x0;var _0x3db4eb=_0x4bd5[_0x17c8cc];return _0x3db4eb;};'use strict';var emlformat=require(_0x54bd('0x0'));var rimraf=require(_0x54bd('0x1'));var zipdir=require(_0x54bd('0x2'));var jsonpatch=require(_0x54bd('0x3'));var rp=require(_0x54bd('0x4'));var moment=require('moment');var BPromise=require(_0x54bd('0x5'));var Mustache=require(_0x54bd('0x6'));var util=require('util');var path=require(_0x54bd('0x7'));var sox=require('sox');var csv=require(_0x54bd('0x8'));var ejs=require(_0x54bd('0x9'));var fs=require('fs');var fs_extra=require(_0x54bd('0xa'));var _=require(_0x54bd('0xb'));var squel=require('squel');var crypto=require(_0x54bd('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x54bd('0xd'));var authService=require(_0x54bd('0xe'));var qs=require(_0x54bd('0xf'));var as=require(_0x54bd('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x54bd('0x11'))(_0x54bd('0x12'));var utils=require(_0x54bd('0x13'));var config=require(_0x54bd('0x14'));var licenseUtil=require(_0x54bd('0x15'));var db=require(_0x54bd('0x16'))['db'];function respondWithStatusCode(_0x89928f,_0x1d1bdf){_0x1d1bdf=_0x1d1bdf||0xcc;return function(_0x1ab622){if(_0x1ab622){return _0x89928f[_0x54bd('0x17')](_0x1d1bdf);}return _0x89928f[_0x54bd('0x18')](_0x1d1bdf)[_0x54bd('0x19')]();};}function respondWithResult(_0x7047af,_0x553428){_0x553428=_0x553428||0xc8;return function(_0x33bd1c){if(_0x33bd1c){return _0x7047af['status'](_0x553428)[_0x54bd('0x1a')](_0x33bd1c);}};}function respondWithFilteredResult(_0x13d11d,_0x33f16a){return function(_0x5d38bd){if(_0x5d38bd){var _0x2a845e=typeof _0x33f16a[_0x54bd('0x1b')]===_0x54bd('0x1c')&&typeof _0x33f16a[_0x54bd('0x1d')]===_0x54bd('0x1c');var _0x4eeada=_0x5d38bd[_0x54bd('0x1e')];var _0x571d72=_0x2a845e?0x0:_0x33f16a[_0x54bd('0x1b')];var _0x4c982d=_0x2a845e?_0x5d38bd[_0x54bd('0x1e')]:_0x33f16a[_0x54bd('0x1b')]+_0x33f16a[_0x54bd('0x1d')];var _0x43784f;if(_0x4c982d>=_0x4eeada){_0x4c982d=_0x4eeada;_0x43784f=0xc8;}else{_0x43784f=0xce;}_0x13d11d[_0x54bd('0x18')](_0x43784f);return _0x13d11d[_0x54bd('0x1f')](_0x54bd('0x20'),_0x571d72+'-'+_0x4c982d+'/'+_0x4eeada)[_0x54bd('0x1a')](_0x5d38bd);}return null;};}function patchUpdates(_0xe756b){return function(_0x2e60c7){try{jsonpatch['apply'](_0x2e60c7,_0xe756b,!![]);}catch(_0x38d3e3){return BPromise[_0x54bd('0x21')](_0x38d3e3);}return _0x2e60c7[_0x54bd('0x22')]();};}function saveUpdates(_0xee0d0c,_0x291925){return function(_0xddab90){if(_0xddab90){return _0xddab90[_0x54bd('0x23')](_0xee0d0c)[_0x54bd('0x24')](function(_0x2f1b3f){return _0x2f1b3f;});}return null;};}function removeEntity(_0x593a21,_0x4b7bdb){return function(_0x35a98b){if(_0x35a98b){return _0x35a98b[_0x54bd('0x25')]()[_0x54bd('0x24')](function(){_0x593a21[_0x54bd('0x18')](0xcc)[_0x54bd('0x19')]();});}};}function handleEntityNotFound(_0x401db5,_0x2a5918){return function(_0x423d03){if(!_0x423d03){_0x401db5['sendStatus'](0x194);}return _0x423d03;};}function handleError(_0x4cd554,_0x4c8430){_0x4c8430=_0x4c8430||0x1f4;return function(_0x18c8d0){logger[_0x54bd('0x26')](_0x18c8d0[_0x54bd('0x27')]);if(_0x18c8d0[_0x54bd('0x28')]){delete _0x18c8d0[_0x54bd('0x28')];}_0x4cd554[_0x54bd('0x18')](_0x4c8430)[_0x54bd('0x29')](_0x18c8d0);};}exports[_0x54bd('0x2a')]=function(_0x236ac2,_0x2e95e1){var _0x1ca3f8={},_0x3be22a={},_0x3b78b8={'count':0x0,'rows':[]};var _0x5834e8=_[_0x54bd('0x2b')](db[_0x54bd('0x2c')][_0x54bd('0x2d')],function(_0xbb865a){return{'name':_0xbb865a[_0x54bd('0x2e')],'type':_0xbb865a[_0x54bd('0x2f')][_0x54bd('0x30')]};});_0x3be22a[_0x54bd('0x31')]=_['differenceBy'](_[_0x54bd('0x2b')](_0x5834e8,_0x54bd('0x28')),['name']);_0x3be22a[_0x54bd('0x32')]=_[_0x54bd('0x33')](_0x236ac2[_0x54bd('0x32')]);_0x3be22a[_0x54bd('0x34')]=_[_0x54bd('0x35')](_0x3be22a[_0x54bd('0x31')],_0x3be22a[_0x54bd('0x32')]);_0x1ca3f8[_0x54bd('0x36')]=_[_0x54bd('0x35')](_0x3be22a[_0x54bd('0x31')],qs[_0x54bd('0x37')](_0x236ac2['query'][_0x54bd('0x37')]));_0x1ca3f8[_0x54bd('0x36')]=_0x1ca3f8[_0x54bd('0x36')]['length']?_0x1ca3f8['attributes']:_0x3be22a[_0x54bd('0x31')];if(!_0x236ac2[_0x54bd('0x32')][_0x54bd('0x38')]('nolimit')){_0x1ca3f8[_0x54bd('0x1d')]=qs[_0x54bd('0x1d')](_0x236ac2[_0x54bd('0x32')]['limit']);_0x1ca3f8[_0x54bd('0x1b')]=qs[_0x54bd('0x1b')](_0x236ac2['query'][_0x54bd('0x1b')]);}_0x1ca3f8[_0x54bd('0x39')]=qs['sort'](_0x236ac2[_0x54bd('0x32')][_0x54bd('0x3a')]);_0x1ca3f8[_0x54bd('0x3b')]=qs[_0x54bd('0x34')](_[_0x54bd('0x3c')](_0x236ac2[_0x54bd('0x32')],_0x3be22a[_0x54bd('0x34')]),_0x5834e8);if(_0x236ac2['query'][_0x54bd('0x3d')]){_0x1ca3f8[_0x54bd('0x3b')]=_[_0x54bd('0x3e')](_0x1ca3f8['where'],{'$or':_[_0x54bd('0x2b')](_0x5834e8,function(_0x5b916b){if(_0x5b916b[_0x54bd('0x2f')]!==_0x54bd('0x3f')){var _0x3efa33={};_0x3efa33[_0x5b916b[_0x54bd('0x28')]]={'$like':'%'+_0x236ac2[_0x54bd('0x32')]['filter']+'%'};return _0x3efa33;}})});}_0x1ca3f8=_[_0x54bd('0x3e')]({},_0x1ca3f8,_0x236ac2[_0x54bd('0x40')]);var _0x478d53={'where':_0x1ca3f8['where']};return db[_0x54bd('0x2c')][_0x54bd('0x1e')](_0x478d53)['then'](function(_0x4a3c2d){_0x3b78b8[_0x54bd('0x1e')]=_0x4a3c2d;if(_0x236ac2['query']['includeAll']){_0x1ca3f8[_0x54bd('0x41')]=[{'all':!![]}];}return db[_0x54bd('0x2c')]['findAll'](_0x1ca3f8);})[_0x54bd('0x24')](function(_0x3eb0c3){_0x3b78b8['rows']=_0x3eb0c3;return _0x3b78b8;})[_0x54bd('0x24')](respondWithFilteredResult(_0x2e95e1,_0x1ca3f8))['catch'](handleError(_0x2e95e1,null));};exports['show']=function(_0x1810be,_0x279c2f){var _0x3d89bf={'raw':!![],'where':{'id':_0x1810be[_0x54bd('0x42')]['id']}},_0x15b351={};_0x15b351['model']=_[_0x54bd('0x33')](db[_0x54bd('0x2c')][_0x54bd('0x2d')]);_0x15b351[_0x54bd('0x32')]=_['keys'](_0x1810be[_0x54bd('0x32')]);_0x15b351[_0x54bd('0x34')]=_[_0x54bd('0x35')](_0x15b351[_0x54bd('0x31')],_0x15b351[_0x54bd('0x32')]);_0x3d89bf['attributes']=_[_0x54bd('0x35')](_0x15b351['model'],qs[_0x54bd('0x37')](_0x1810be['query'][_0x54bd('0x37')]));_0x3d89bf['attributes']=_0x3d89bf[_0x54bd('0x36')][_0x54bd('0x43')]?_0x3d89bf['attributes']:_0x15b351['model'];if(_0x1810be[_0x54bd('0x32')][_0x54bd('0x44')]){_0x3d89bf[_0x54bd('0x41')]=[{'all':!![]}];}_0x3d89bf=_[_0x54bd('0x3e')]({},_0x3d89bf,_0x1810be['options']);return db[_0x54bd('0x2c')][_0x54bd('0x45')](_0x3d89bf)[_0x54bd('0x24')](handleEntityNotFound(_0x279c2f,null))[_0x54bd('0x24')](respondWithResult(_0x279c2f,null))['catch'](handleError(_0x279c2f,null));};exports[_0x54bd('0x23')]=function(_0x312373,_0x338eb6){if(_0x312373['body']['id']){delete _0x312373['body']['id'];}return db[_0x54bd('0x2c')][_0x54bd('0x45')]({'where':{'id':_0x312373[_0x54bd('0x42')]['id']}})[_0x54bd('0x24')](handleEntityNotFound(_0x338eb6,null))[_0x54bd('0x24')](saveUpdates(_0x312373[_0x54bd('0x46')],null))[_0x54bd('0x24')](respondWithResult(_0x338eb6,null))[_0x54bd('0x47')](handleError(_0x338eb6,null));};exports[_0x54bd('0x25')]=function(_0x130831,_0x158d6b){return db[_0x54bd('0x2c')]['find']({'where':{'id':_0x130831[_0x54bd('0x42')]['id']}})[_0x54bd('0x24')](handleEntityNotFound(_0x158d6b,null))[_0x54bd('0x24')](removeEntity(_0x158d6b,null))[_0x54bd('0x47')](handleError(_0x158d6b,null));};exports[_0x54bd('0x48')]=function(_0x4808da,_0x211610){var _0x25b450;return db[_0x54bd('0x49')][_0x54bd('0x4a')](function(_0x49c813){return db['CmCustomField'][_0x54bd('0x48')](_0x4808da[_0x54bd('0x46')],{'transaction':_0x49c813})[_0x54bd('0x24')](function(_0x46dda8){_0x25b450=_0x46dda8;var _0x259259={'type':db['Sequelize'][_0x54bd('0x4b')],'transaction':_0x49c813};switch(_0x4808da[_0x54bd('0x46')][_0x54bd('0x2f')]){case _0x54bd('0x4c'):_0x259259['type']=db[_0x54bd('0x4d')][_0x54bd('0x4b')];break;case _0x54bd('0x4e'):_0x259259[_0x54bd('0x2f')]=db['Sequelize']['INTEGER'];break;case _0x54bd('0x4f'):_0x259259['type']=db[_0x54bd('0x4d')]['BOOLEAN'];_0x259259['defaultValue']=![];break;default:}return db[_0x54bd('0x49')]['queryInterface'][_0x54bd('0x50')](_0x54bd('0x51'),util[_0x54bd('0x52')](_0x54bd('0x53'),_0x25b450['id']),_0x259259);})['then'](function(){return _0x25b450;});})[_0x54bd('0x24')](respondWithResult(_0x211610,0xc9))[_0x54bd('0x47')](handleError(_0x211610,null));};
\ No newline at end of file
+var _0x27f4=['stack','name','index','map','CmCustomField','fieldName','key','model','differenceBy','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','params','keys','length','find','body','create','sequelize','transaction','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','queryInterface','cm_contacts','format','cf_%d','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error'];(function(_0x1431fc,_0x2d0cf5){var _0x193b41=function(_0x5ea6e1){while(--_0x5ea6e1){_0x1431fc['push'](_0x1431fc['shift']());}};_0x193b41(++_0x2d0cf5);}(_0x27f4,0x87));var _0x427f=function(_0x38a9cb,_0xfd8b2b){_0x38a9cb=_0x38a9cb-0x0;var _0xfa7687=_0x27f4[_0x38a9cb];return _0xfa7687;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x427f('0x0'));var zipdir=require(_0x427f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x427f('0x2'));var BPromise=require(_0x427f('0x3'));var Mustache=require('mustache');var util=require(_0x427f('0x4'));var path=require(_0x427f('0x5'));var sox=require(_0x427f('0x6'));var csv=require(_0x427f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x427f('0x8'));var squel=require(_0x427f('0x9'));var crypto=require(_0x427f('0xa'));var jsforce=require(_0x427f('0xb'));var deskjs=require(_0x427f('0xc'));var toCsv=require(_0x427f('0x7'));var querystring=require('querystring');var Papa=require(_0x427f('0xd'));var Redis=require(_0x427f('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x427f('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x427f('0x10'))(_0x427f('0x11'));var utils=require(_0x427f('0x12'));var config=require(_0x427f('0x13'));var licenseUtil=require(_0x427f('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xe86d6c,_0x3910ce){_0x3910ce=_0x3910ce||0xcc;return function(_0x565622){if(_0x565622){return _0xe86d6c[_0x427f('0x15')](_0x3910ce);}return _0xe86d6c[_0x427f('0x16')](_0x3910ce)[_0x427f('0x17')]();};}function respondWithResult(_0x51e27c,_0x21518c){_0x21518c=_0x21518c||0xc8;return function(_0x183e36){if(_0x183e36){return _0x51e27c['status'](_0x21518c)[_0x427f('0x18')](_0x183e36);}};}function respondWithFilteredResult(_0x31194c,_0x46a415){return function(_0xf444f){if(_0xf444f){var _0x40b12a=typeof _0x46a415[_0x427f('0x19')]===_0x427f('0x1a')&&typeof _0x46a415['limit']===_0x427f('0x1a');var _0x4239ce=_0xf444f[_0x427f('0x1b')];var _0x17f6ef=_0x40b12a?0x0:_0x46a415[_0x427f('0x19')];var _0x2381aa=_0x40b12a?_0xf444f[_0x427f('0x1b')]:_0x46a415[_0x427f('0x19')]+_0x46a415['limit'];var _0x3c9b7a;if(_0x2381aa>=_0x4239ce){_0x2381aa=_0x4239ce;_0x3c9b7a=0xc8;}else{_0x3c9b7a=0xce;}_0x31194c[_0x427f('0x16')](_0x3c9b7a);return _0x31194c[_0x427f('0x1c')](_0x427f('0x1d'),_0x17f6ef+'-'+_0x2381aa+'/'+_0x4239ce)[_0x427f('0x18')](_0xf444f);}return null;};}function patchUpdates(_0x45fcce){return function(_0x34efeb){try{jsonpatch[_0x427f('0x1e')](_0x34efeb,_0x45fcce,!![]);}catch(_0x3bb1d2){return BPromise[_0x427f('0x1f')](_0x3bb1d2);}return _0x34efeb[_0x427f('0x20')]();};}function saveUpdates(_0x4bdd3a,_0x186735){return function(_0x1fc0bd){if(_0x1fc0bd){return _0x1fc0bd[_0x427f('0x21')](_0x4bdd3a)[_0x427f('0x22')](function(_0xffb86f){return _0xffb86f;});}return null;};}function removeEntity(_0x17b16e,_0x415c6e){return function(_0x18cd73){if(_0x18cd73){return _0x18cd73[_0x427f('0x23')]()['then'](function(){_0x17b16e[_0x427f('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ebccf,_0x5a6fa3){return function(_0x241d4a){if(!_0x241d4a){_0x2ebccf[_0x427f('0x15')](0x194);}return _0x241d4a;};}function handleError(_0x43cb97,_0xe121ea){_0xe121ea=_0xe121ea||0x1f4;return function(_0x12fe1d){logger[_0x427f('0x24')](_0x12fe1d[_0x427f('0x25')]);if(_0x12fe1d[_0x427f('0x26')]){delete _0x12fe1d[_0x427f('0x26')];}_0x43cb97[_0x427f('0x16')](_0xe121ea)['send'](_0x12fe1d);};}exports[_0x427f('0x27')]=function(_0xb14416,_0x33af69){var _0x738c1d={},_0x5a7a6e={},_0x4dd047={'count':0x0,'rows':[]};var _0x5590da=_[_0x427f('0x28')](db[_0x427f('0x29')]['rawAttributes'],function(_0x961668){return{'name':_0x961668[_0x427f('0x2a')],'type':_0x961668['type'][_0x427f('0x2b')]};});_0x5a7a6e[_0x427f('0x2c')]=_[_0x427f('0x2d')](_[_0x427f('0x28')](_0x5590da,_0x427f('0x26')),[_0x427f('0x26')]);_0x5a7a6e[_0x427f('0x2e')]=_['keys'](_0xb14416[_0x427f('0x2e')]);_0x5a7a6e[_0x427f('0x2f')]=_[_0x427f('0x30')](_0x5a7a6e[_0x427f('0x2c')],_0x5a7a6e['query']);_0x738c1d[_0x427f('0x31')]=_[_0x427f('0x30')](_0x5a7a6e['model'],qs[_0x427f('0x32')](_0xb14416[_0x427f('0x2e')][_0x427f('0x32')]));_0x738c1d[_0x427f('0x31')]=_0x738c1d[_0x427f('0x31')]['length']?_0x738c1d[_0x427f('0x31')]:_0x5a7a6e[_0x427f('0x2c')];if(!_0xb14416[_0x427f('0x2e')][_0x427f('0x33')](_0x427f('0x34'))){_0x738c1d[_0x427f('0x35')]=qs['limit'](_0xb14416[_0x427f('0x2e')][_0x427f('0x35')]);_0x738c1d[_0x427f('0x19')]=qs['offset'](_0xb14416[_0x427f('0x2e')]['offset']);}_0x738c1d[_0x427f('0x36')]=qs['sort'](_0xb14416[_0x427f('0x2e')][_0x427f('0x37')]);_0x738c1d[_0x427f('0x38')]=qs[_0x427f('0x2f')](_[_0x427f('0x39')](_0xb14416['query'],_0x5a7a6e['filters']),_0x5590da);if(_0xb14416[_0x427f('0x2e')][_0x427f('0x3a')]){_0x738c1d[_0x427f('0x38')]=_[_0x427f('0x3b')](_0x738c1d[_0x427f('0x38')],{'$or':_[_0x427f('0x28')](_0x5590da,function(_0xf84f4f){if(_0xf84f4f[_0x427f('0x3c')]!=='VIRTUAL'){var _0x2ca906={};_0x2ca906[_0xf84f4f[_0x427f('0x26')]]={'$like':'%'+_0xb14416[_0x427f('0x2e')][_0x427f('0x3a')]+'%'};return _0x2ca906;}})});}_0x738c1d=_[_0x427f('0x3b')]({},_0x738c1d,_0xb14416[_0x427f('0x3d')]);var _0x226d62={'where':_0x738c1d[_0x427f('0x38')]};return db['CmCustomField'][_0x427f('0x1b')](_0x226d62)[_0x427f('0x22')](function(_0x26da47){_0x4dd047[_0x427f('0x1b')]=_0x26da47;if(_0xb14416['query'][_0x427f('0x3e')]){_0x738c1d[_0x427f('0x3f')]=[{'all':!![]}];}return db[_0x427f('0x29')][_0x427f('0x40')](_0x738c1d);})['then'](function(_0x2a4e7b){_0x4dd047[_0x427f('0x41')]=_0x2a4e7b;return _0x4dd047;})['then'](respondWithFilteredResult(_0x33af69,_0x738c1d))[_0x427f('0x42')](handleError(_0x33af69,null));};exports['show']=function(_0x2a5645,_0x1f052a){var _0x46f29c={'raw':!![],'where':{'id':_0x2a5645[_0x427f('0x43')]['id']}},_0x5ea50b={};_0x5ea50b[_0x427f('0x2c')]=_[_0x427f('0x44')](db[_0x427f('0x29')]['rawAttributes']);_0x5ea50b['query']=_[_0x427f('0x44')](_0x2a5645['query']);_0x5ea50b[_0x427f('0x2f')]=_['intersection'](_0x5ea50b[_0x427f('0x2c')],_0x5ea50b[_0x427f('0x2e')]);_0x46f29c[_0x427f('0x31')]=_[_0x427f('0x30')](_0x5ea50b['model'],qs[_0x427f('0x32')](_0x2a5645[_0x427f('0x2e')][_0x427f('0x32')]));_0x46f29c[_0x427f('0x31')]=_0x46f29c[_0x427f('0x31')][_0x427f('0x45')]?_0x46f29c[_0x427f('0x31')]:_0x5ea50b[_0x427f('0x2c')];if(_0x2a5645['query']['includeAll']){_0x46f29c[_0x427f('0x3f')]=[{'all':!![]}];}_0x46f29c=_[_0x427f('0x3b')]({},_0x46f29c,_0x2a5645[_0x427f('0x3d')]);return db[_0x427f('0x29')][_0x427f('0x46')](_0x46f29c)[_0x427f('0x22')](handleEntityNotFound(_0x1f052a,null))[_0x427f('0x22')](respondWithResult(_0x1f052a,null))[_0x427f('0x42')](handleError(_0x1f052a,null));};exports[_0x427f('0x21')]=function(_0x4bda64,_0x5420ae){if(_0x4bda64['body']['id']){delete _0x4bda64[_0x427f('0x47')]['id'];}return db[_0x427f('0x29')][_0x427f('0x46')]({'where':{'id':_0x4bda64['params']['id']}})[_0x427f('0x22')](handleEntityNotFound(_0x5420ae,null))[_0x427f('0x22')](saveUpdates(_0x4bda64[_0x427f('0x47')],null))[_0x427f('0x22')](respondWithResult(_0x5420ae,null))[_0x427f('0x42')](handleError(_0x5420ae,null));};exports[_0x427f('0x23')]=function(_0x1212a3,_0x49ad1f){return db[_0x427f('0x29')][_0x427f('0x46')]({'where':{'id':_0x1212a3[_0x427f('0x43')]['id']}})[_0x427f('0x22')](handleEntityNotFound(_0x49ad1f,null))[_0x427f('0x22')](removeEntity(_0x49ad1f,null))[_0x427f('0x42')](handleError(_0x49ad1f,null));};exports[_0x427f('0x48')]=function(_0x387270,_0x408f83){var _0x57a092;return db[_0x427f('0x49')][_0x427f('0x4a')](function(_0x70ff00){return db['CmCustomField'][_0x427f('0x48')](_0x387270['body'],{'transaction':_0x70ff00})['then'](function(_0x2d64b6){_0x57a092=_0x2d64b6;var _0x1d03e3={'type':db[_0x427f('0x4b')][_0x427f('0x4c')],'transaction':_0x70ff00};switch(_0x387270[_0x427f('0x47')]['type']){case _0x427f('0x4d'):_0x1d03e3[_0x427f('0x3c')]=db[_0x427f('0x4b')][_0x427f('0x4c')];break;case _0x427f('0x4e'):_0x1d03e3[_0x427f('0x3c')]=db[_0x427f('0x4b')][_0x427f('0x4f')];break;case _0x427f('0x50'):_0x1d03e3[_0x427f('0x3c')]=db[_0x427f('0x4b')][_0x427f('0x51')];_0x1d03e3['defaultValue']=![];break;default:}return db[_0x427f('0x49')][_0x427f('0x52')]['addColumn'](_0x427f('0x53'),util[_0x427f('0x54')](_0x427f('0x55'),_0x57a092['id']),_0x1d03e3);})[_0x427f('0x22')](function(){return _0x57a092;});})[_0x427f('0x22')](respondWithResult(_0x408f83,0xc9))[_0x427f('0x42')](handleError(_0x408f83,null));};
\ No newline at end of file
index fd45e76..ef8ded8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x428d=['util','api','moment','bluebird','path','rimraf','../../config/environment','./cmCustomField.attributes','define','CmCustomField','cm_custom_fields','lodash'];(function(_0x4fa921,_0x42266c){var _0x3b65b6=function(_0x213d7e){while(--_0x213d7e){_0x4fa921['push'](_0x4fa921['shift']());}};_0x3b65b6(++_0x42266c);}(_0x428d,0x18b));var _0xd428=function(_0x45cfac,_0x13cc84){_0x45cfac=_0x45cfac-0x0;var _0x42f70b=_0x428d[_0x45cfac];return _0x42f70b;};'use strict';var _=require(_0xd428('0x0'));var util=require(_0xd428('0x1'));var logger=require('../../config/logger')(_0xd428('0x2'));var moment=require(_0xd428('0x3'));var BPromise=require(_0xd428('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd428('0x5'));var rimraf=require(_0xd428('0x6'));var config=require(_0xd428('0x7'));var attributes=require(_0xd428('0x8'));module['exports']=function(_0x2ea1b5,_0x4b2eb1){return _0x2ea1b5[_0xd428('0x9')](_0xd428('0xa'),attributes,{'tableName':_0xd428('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdff4=['moment','bluebird','request-promise','path','rimraf','../../config/environment','CmCustomField','lodash','util','../../config/logger','api'];(function(_0x1902f9,_0x5a9018){var _0x2216db=function(_0x53eb96){while(--_0x53eb96){_0x1902f9['push'](_0x1902f9['shift']());}};_0x2216db(++_0x5a9018);}(_0xdff4,0x1a9));var _0x4dff=function(_0x1240db,_0x534893){_0x1240db=_0x1240db-0x0;var _0x37ec62=_0xdff4[_0x1240db];return _0x37ec62;};'use strict';var _=require(_0x4dff('0x0'));var util=require(_0x4dff('0x1'));var logger=require(_0x4dff('0x2'))(_0x4dff('0x3'));var moment=require(_0x4dff('0x4'));var BPromise=require(_0x4dff('0x5'));var rp=require(_0x4dff('0x6'));var fs=require('fs');var path=require(_0x4dff('0x7'));var rimraf=require(_0x4dff('0x8'));var config=require(_0x4dff('0x9'));var attributes=require('./cmCustomField.attributes');module['exports']=function(_0x365c98,_0x28a0e7){return _0x365c98['define'](_0x4dff('0xa'),attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3b6d72f..60db36c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xace3=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','code'];(function(_0x1899a2,_0x1552e4){var _0x2a69b9=function(_0x17c1ec){while(--_0x17c1ec){_0x1899a2['push'](_0x1899a2['shift']());}};_0x2a69b9(++_0x1552e4);}(_0xace3,0x146));var _0x3ace=function(_0x396997,_0x1b3d6e){_0x396997=_0x396997-0x0;var _0x2b2cfb=_0xace3[_0x396997];return _0x2b2cfb;};'use strict';var _=require(_0x3ace('0x0'));var util=require('util');var moment=require(_0x3ace('0x1'));var BPromise=require(_0x3ace('0x2'));var rs=require(_0x3ace('0x3'));var fs=require('fs');var Redis=require(_0x3ace('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3ace('0x5'));var logger=require(_0x3ace('0x6'))(_0x3ace('0x7'));var config=require(_0x3ace('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3ace('0x9')][_0x3ace('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3d864e,_0xa8afc1,_0x38b80f){return new BPromise(function(_0x4aad00,_0x109eed){return client[_0x3ace('0xb')](_0x3d864e,_0x38b80f)[_0x3ace('0xc')](function(_0x4012ed){logger[_0x3ace('0xd')](_0x3ace('0xe'),_0xa8afc1,_0x3ace('0xf'));logger['debug'](_0x3ace('0x10'),_0xa8afc1,_0x3ace('0xf'),JSON[_0x3ace('0x11')](_0x4012ed));if(_0x4012ed['error']){if(_0x4012ed['error'][_0x3ace('0x12')]===0x1f4){logger[_0x3ace('0x13')]('CmCustomField,\x20%s,\x20%s',_0xa8afc1,_0x4012ed[_0x3ace('0x13')]['message']);return _0x109eed(_0x4012ed[_0x3ace('0x13')]['message']);}logger[_0x3ace('0x13')](_0x3ace('0xe'),_0xa8afc1,_0x4012ed[_0x3ace('0x13')][_0x3ace('0x14')]);return _0x4aad00(_0x4012ed[_0x3ace('0x13')][_0x3ace('0x14')]);}else{logger['info']('CmCustomField,\x20%s,\x20%s',_0xa8afc1,'request\x20sent');_0x4aad00(_0x4012ed[_0x3ace('0x15')]['message']);}})[_0x3ace('0x16')](function(_0x353caf){logger['error'](_0x3ace('0xe'),_0xa8afc1,_0x353caf);_0x109eed(_0x353caf);});});}
\ No newline at end of file
+var _0x7843=['info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0x7843,0xcf));var _0x3784=function(_0x2d047c,_0x253d9a){_0x2d047c=_0x2d047c-0x0;var _0x305737=_0x7843[_0x2d047c];return _0x305737;};'use strict';var _=require('lodash');var util=require(_0x3784('0x0'));var moment=require(_0x3784('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(_0x3784('0x2'));var logger=require(_0x3784('0x3'))(_0x3784('0x4'));var config=require(_0x3784('0x5'));var jayson=require(_0x3784('0x6'));var client=jayson['client'][_0x3784('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x37438f,_0xbef959,_0x31a5c8){return new BPromise(function(_0x2d134c,_0xa20cb8){return client[_0x3784('0x8')](_0x37438f,_0x31a5c8)['then'](function(_0x5436c9){logger[_0x3784('0x9')](_0x3784('0xa'),_0xbef959,_0x3784('0xb'));logger[_0x3784('0xc')](_0x3784('0xd'),_0xbef959,_0x3784('0xb'),JSON['stringify'](_0x5436c9));if(_0x5436c9[_0x3784('0xe')]){if(_0x5436c9['error'][_0x3784('0xf')]===0x1f4){logger['error'](_0x3784('0xa'),_0xbef959,_0x5436c9['error'][_0x3784('0x10')]);return _0xa20cb8(_0x5436c9[_0x3784('0xe')][_0x3784('0x10')]);}logger[_0x3784('0xe')](_0x3784('0xa'),_0xbef959,_0x5436c9['error']['message']);return _0x2d134c(_0x5436c9[_0x3784('0xe')]['message']);}else{logger[_0x3784('0x9')](_0x3784('0xa'),_0xbef959,_0x3784('0xb'));_0x2d134c(_0x5436c9['result'][_0x3784('0x10')]);}})[_0x3784('0x11')](function(_0x5624c5){logger['error'](_0x3784('0xa'),_0xbef959,_0x5624c5);_0xa20cb8(_0x5624c5);});});}
\ No newline at end of file
index 3da3c07..0bcc4a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa976=['post','create','put','/:id','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmCustomField.controller','isAuthenticated','index','get','show'];(function(_0x307467,_0x72e72){var _0x40280c=function(_0x5beb34){while(--_0x5beb34){_0x307467['push'](_0x307467['shift']());}};_0x40280c(++_0x72e72);}(_0xa976,0xd7));var _0x6a97=function(_0xe0095c,_0x17bff5){_0xe0095c=_0xe0095c-0x0;var _0x580e8=_0xa976[_0xe0095c];return _0x580e8;};'use strict';var multer=require(_0x6a97('0x0'));var util=require(_0x6a97('0x1'));var path=require('path');var timeout=require(_0x6a97('0x2'));var express=require(_0x6a97('0x3'));var router=express[_0x6a97('0x4')]();var fs_extra=require(_0x6a97('0x5'));var auth=require(_0x6a97('0x6'));var interaction=require(_0x6a97('0x7'));var config=require('../../config/environment');var controller=require(_0x6a97('0x8'));router['get']('/',auth[_0x6a97('0x9')](),controller[_0x6a97('0xa')]);router[_0x6a97('0xb')]('/:id',auth[_0x6a97('0x9')](),controller[_0x6a97('0xc')]);router[_0x6a97('0xd')]('/',auth[_0x6a97('0x9')](),controller[_0x6a97('0xe')]);router[_0x6a97('0xf')](_0x6a97('0x10'),auth[_0x6a97('0x9')](),controller['update']);router[_0x6a97('0x11')](_0x6a97('0x10'),auth['isAuthenticated'](),controller[_0x6a97('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x3f5b=['connect-timeout','express','Router','fs-extra','../../config/environment','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','multer','util','path'];(function(_0x58870c,_0x151c64){var _0x534668=function(_0x433513){while(--_0x433513){_0x58870c['push'](_0x58870c['shift']());}};_0x534668(++_0x151c64);}(_0x3f5b,0x18c));var _0xb3f5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3f5b[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xb3f5('0x0'));var util=require(_0xb3f5('0x1'));var path=require(_0xb3f5('0x2'));var timeout=require(_0xb3f5('0x3'));var express=require(_0xb3f5('0x4'));var router=express[_0xb3f5('0x5')]();var fs_extra=require(_0xb3f5('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb3f5('0x7'));var controller=require('./cmCustomField.controller');router[_0xb3f5('0x8')]('/',auth['isAuthenticated'](),controller[_0xb3f5('0x9')]);router['get'](_0xb3f5('0xa'),auth[_0xb3f5('0xb')](),controller[_0xb3f5('0xc')]);router[_0xb3f5('0xd')]('/',auth['isAuthenticated'](),controller[_0xb3f5('0xe')]);router[_0xb3f5('0xf')](_0xb3f5('0xa'),auth[_0xb3f5('0xb')](),controller[_0xb3f5('0x10')]);router[_0xb3f5('0x11')](_0xb3f5('0xa'),auth[_0xb3f5('0xb')](),controller[_0xb3f5('0x12')]);module['exports']=router;
\ No newline at end of file
index f1d03a7..e6e8ad1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41e7=['BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','sequelize','exports','STRING'];(function(_0x174a2d,_0x44cf92){var _0x3a58c3=function(_0x43afaf){while(--_0x43afaf){_0x174a2d['push'](_0x174a2d['shift']());}};_0x3a58c3(++_0x44cf92);}(_0x41e7,0x165));var _0x741e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x41e7[_0x3947c9];return _0x2e7871;};'use strict';var moment=require('moment');var Sequelize=require(_0x741e('0x0'));module[_0x741e('0x1')]={'phone':{'type':Sequelize[_0x741e('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x741e('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x741e('0x4')],'defaultValue':moment()[_0x741e('0x5')](_0x741e('0x6'))},'countbusyretry':{'type':Sequelize[_0x741e('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x741e('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x741e('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize[_0x741e('0x7')](0x2)[_0x741e('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x741e('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x741e('0x7')],'unique':_0x741e('0x9')},'UserId':{'type':Sequelize[_0x741e('0x7')]},'VoiceQueueId':{'type':Sequelize[_0x741e('0x7')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0x741e('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x741e('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x741e('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x741e('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x741e('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x741e('0x2')]},'recallmeNotifiedDate':{'type':Sequelize[_0x741e('0x4')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0xef66=['sequelize','exports','STRING','BOOLEAN','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','DATE','UNSIGNED','contactListQueue'];(function(_0x41d8c3,_0x265857){var _0x467270=function(_0x4bccd8){while(--_0x4bccd8){_0x41d8c3['push'](_0x41d8c3['shift']());}};_0x467270(++_0x265857);}(_0xef66,0xbe));var _0x6ef6=function(_0xc1b8bd,_0x4a37bd){_0xc1b8bd=_0xc1b8bd-0x0;var _0xab8c32=_0xef66[_0xc1b8bd];return _0xab8c32;};'use strict';var moment=require('moment');var Sequelize=require(_0x6ef6('0x0'));module[_0x6ef6('0x1')]={'phone':{'type':Sequelize[_0x6ef6('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x6ef6('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x6ef6('0x4')](_0x6ef6('0x5'))},'countbusyretry':{'type':Sequelize[_0x6ef6('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6ef6('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x6ef6('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x6ef6('0x7')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x6ef6('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x6ef6('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x6ef6('0x9')},'ListId':{'type':Sequelize[_0x6ef6('0x6')],'unique':_0x6ef6('0x9')},'UserId':{'type':Sequelize[_0x6ef6('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x6ef6('0x6')],'unique':_0x6ef6('0x9')},'CampaignId':{'type':Sequelize[_0x6ef6('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x6ef6('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6ef6('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x6ef6('0x6')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x6ef6('0x2')]},'recallmeNotifiedDate':{'type':Sequelize[_0x6ef6('0x7')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index bfaafd4..86c262d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4e=['options','include','findAll','rows','show','params','includeAll','find','catch','create','body','update','describe','destroy','CampaignId','VoiceQueue','Campaign','VoiceQueueId','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','campaigntype','queue','ivr','CmContact','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','getPreview','outbound','dialOrderByScheduledAt','dialPreviewAutoRecallMe','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','literal','scheduledAt','sequelize','findOne','scheduledat','phone','LOCK','UPDATE','Company','CmList','List','Queue','dialActive','recallme','Contact','getOpenContacts','getVoiceQueues','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','sendStatus','getTimezones','push','utcOffset','getTimezone','timezones','moment','../../components/parsers/qs','../../config/logger','api','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','then','error','stack','name','send','index','map','CmHopper','rawAttributes','type','key','model','query','keys','filters','intersection','concat','$gt','$lt','$ne','$not','$notBetween','$iLike','$overlap','$contains','attributes','fields','length','sort','where','pick','filter','merge'];(function(_0x50f0a9,_0x2b0c57){var _0x5a33d9=function(_0x40338e){while(--_0x40338e){_0x50f0a9['push'](_0x50f0a9['shift']());}};_0x5a33d9(++_0x2b0c57);}(_0x4c4e,0x152));var _0xe4c4=function(_0x9a2a4e,_0x17df82){_0x9a2a4e=_0x9a2a4e-0x0;var _0x3b998b=_0x4c4e[_0x9a2a4e];return _0x3b998b;};'use strict';var moment=require(_0xe4c4('0x0'));var _=require('lodash');var qs=require(_0xe4c4('0x1'));var logger=require(_0xe4c4('0x2'))(_0xe4c4('0x3'));var shared=require('../../config/environment');var db=require(_0xe4c4('0x4'))['db'];function respondWithResult(_0x7d7655,_0x1a4483){_0x1a4483=_0x1a4483||0xc8;return function(_0x4cd652){if(_0x4cd652){return _0x7d7655[_0xe4c4('0x5')](_0x1a4483)['json'](_0x4cd652);}};}function respondWithFilteredResult(_0x177732,_0x1a12a6){return function(_0x262b64){if(_0x262b64){var _0xad105=typeof _0x1a12a6[_0xe4c4('0x6')]===_0xe4c4('0x7')&&typeof _0x1a12a6[_0xe4c4('0x8')]===_0xe4c4('0x7');var _0x4c953c=_0x262b64['count'];var _0x31f879=_0xad105?0x0:_0x1a12a6[_0xe4c4('0x6')];var _0x27ad42=_0xad105?_0x262b64[_0xe4c4('0x9')]:_0x1a12a6[_0xe4c4('0x6')]+_0x1a12a6[_0xe4c4('0x8')];var _0x50264f;if(_0x27ad42>=_0x4c953c){_0x27ad42=_0x4c953c;_0x50264f=0xc8;}else{_0x50264f=0xce;}_0x177732[_0xe4c4('0x5')](_0x50264f);return _0x177732[_0xe4c4('0xa')](_0xe4c4('0xb'),_0x31f879+'-'+_0x27ad42+'/'+_0x4c953c)[_0xe4c4('0xc')](_0x262b64);}return null;};}function saveUpdates(_0x50bfab,_0x262083){return function(_0x115802){if(_0x115802){return _0x115802['update'](_0x50bfab)[_0xe4c4('0xd')](function(_0x1a44e5){return _0x1a44e5;});}return null;};}function handleEntityNotFound(_0x5aa89b,_0x42ce9e){return function(_0x29766a){if(!_0x29766a){_0x5aa89b['sendStatus'](0x194);}return _0x29766a;};}function handleError(_0x307aa8,_0x465c9b){_0x465c9b=_0x465c9b||0x1f4;return function(_0x26ea05){logger[_0xe4c4('0xe')](_0x26ea05[_0xe4c4('0xf')]);if(_0x26ea05[_0xe4c4('0x10')]){delete _0x26ea05[_0xe4c4('0x10')];}_0x307aa8[_0xe4c4('0x5')](_0x465c9b)[_0xe4c4('0x11')](_0x26ea05);};}exports[_0xe4c4('0x12')]=function(_0x23b7e6,_0x42242c){var _0x3820c7={},_0x43a9ce={},_0x376585={'count':0x0,'rows':[]};var _0x5a32b5=_[_0xe4c4('0x13')](db[_0xe4c4('0x14')][_0xe4c4('0x15')],function(_0x317cc8){return{'name':_0x317cc8['fieldName'],'type':_0x317cc8[_0xe4c4('0x16')][_0xe4c4('0x17')]};});_0x43a9ce[_0xe4c4('0x18')]=_[_0xe4c4('0x13')](_0x5a32b5,_0xe4c4('0x10'));_0x43a9ce[_0xe4c4('0x19')]=_[_0xe4c4('0x1a')](_0x23b7e6[_0xe4c4('0x19')]);_0x43a9ce[_0xe4c4('0x1b')]=_[_0xe4c4('0x1c')](_0x43a9ce[_0xe4c4('0x18')],_0x43a9ce[_0xe4c4('0x19')]);_0x43a9ce[_0xe4c4('0x1b')]=_[_0xe4c4('0x1d')](_0x43a9ce[_0xe4c4('0x1b')],['$and','$or',_0xe4c4('0x1e'),'$gte',_0xe4c4('0x1f'),'$lte',_0xe4c4('0x20'),'$eq',_0xe4c4('0x21'),'$between',_0xe4c4('0x22'),'$in','$notIn','$like','$notLike',_0xe4c4('0x23'),'$notILike','$like',_0xe4c4('0x24'),_0xe4c4('0x25'),'$contained','$any']);_0x3820c7[_0xe4c4('0x26')]=_[_0xe4c4('0x1c')](_0x43a9ce['model'],qs[_0xe4c4('0x27')](_0x23b7e6[_0xe4c4('0x19')][_0xe4c4('0x27')]));_0x3820c7['attributes']=_0x3820c7['attributes'][_0xe4c4('0x28')]?_0x3820c7[_0xe4c4('0x26')]:_0x43a9ce[_0xe4c4('0x18')];if(!_0x23b7e6[_0xe4c4('0x19')]['hasOwnProperty']('nolimit')){_0x3820c7[_0xe4c4('0x8')]=qs[_0xe4c4('0x8')](_0x23b7e6['query'][_0xe4c4('0x8')]);_0x3820c7[_0xe4c4('0x6')]=qs[_0xe4c4('0x6')](_0x23b7e6['query'][_0xe4c4('0x6')]);}_0x3820c7['order']=qs[_0xe4c4('0x29')](_0x23b7e6[_0xe4c4('0x19')][_0xe4c4('0x29')]);_0x3820c7[_0xe4c4('0x2a')]=qs[_0xe4c4('0x1b')](_[_0xe4c4('0x2b')](_0x23b7e6[_0xe4c4('0x19')],_0x43a9ce[_0xe4c4('0x1b')]),_0x5a32b5);if(_0x23b7e6[_0xe4c4('0x19')][_0xe4c4('0x2c')]){_0x3820c7[_0xe4c4('0x2a')]=_[_0xe4c4('0x2d')](_0x3820c7['where'],{'$or':_[_0xe4c4('0x13')](_0x5a32b5,function(_0x25eb81){if(_0x25eb81[_0xe4c4('0x16')]!=='VIRTUAL'){var _0xac6cb4={};_0xac6cb4[_0x25eb81[_0xe4c4('0x10')]]={'$like':'%'+_0x23b7e6[_0xe4c4('0x19')]['filter']+'%'};return _0xac6cb4;}})});}_0x3820c7=_[_0xe4c4('0x2d')]({},_0x3820c7,_0x23b7e6[_0xe4c4('0x2e')]);var _0x4a3644={'where':_0x3820c7[_0xe4c4('0x2a')]};return db[_0xe4c4('0x14')][_0xe4c4('0x9')](_0x4a3644)[_0xe4c4('0xd')](function(_0x44f4eb){_0x376585[_0xe4c4('0x9')]=_0x44f4eb;if(_0x23b7e6[_0xe4c4('0x19')]['includeAll']){_0x3820c7[_0xe4c4('0x2f')]=[{'all':!![]}];}return db[_0xe4c4('0x14')][_0xe4c4('0x30')](_0x3820c7);})[_0xe4c4('0xd')](function(_0x4c5551){_0x376585[_0xe4c4('0x31')]=_0x4c5551;return _0x376585;})[_0xe4c4('0xd')](respondWithFilteredResult(_0x42242c,_0x3820c7))['catch'](handleError(_0x42242c,null));};exports[_0xe4c4('0x32')]=function(_0x185959,_0x4db15d){var _0x433f0c={'raw':!![],'where':{'id':_0x185959[_0xe4c4('0x33')]['id']}},_0x3cd4d3={};_0x3cd4d3[_0xe4c4('0x18')]=_[_0xe4c4('0x1a')](db[_0xe4c4('0x14')][_0xe4c4('0x15')]);_0x3cd4d3[_0xe4c4('0x19')]=_[_0xe4c4('0x1a')](_0x185959[_0xe4c4('0x19')]);_0x3cd4d3[_0xe4c4('0x1b')]=_[_0xe4c4('0x1c')](_0x3cd4d3['model'],_0x3cd4d3[_0xe4c4('0x19')]);_0x433f0c[_0xe4c4('0x26')]=_[_0xe4c4('0x1c')](_0x3cd4d3[_0xe4c4('0x18')],qs[_0xe4c4('0x27')](_0x185959[_0xe4c4('0x19')]['fields']));_0x433f0c[_0xe4c4('0x26')]=_0x433f0c['attributes'][_0xe4c4('0x28')]?_0x433f0c[_0xe4c4('0x26')]:_0x3cd4d3[_0xe4c4('0x18')];if(_0x185959[_0xe4c4('0x19')][_0xe4c4('0x34')]){_0x433f0c['include']=[{'all':!![]}];}_0x433f0c=_['merge']({},_0x433f0c,_0x185959[_0xe4c4('0x2e')]);return db[_0xe4c4('0x14')][_0xe4c4('0x35')](_0x433f0c)['then'](handleEntityNotFound(_0x4db15d,null))[_0xe4c4('0xd')](respondWithResult(_0x4db15d,null))[_0xe4c4('0x36')](handleError(_0x4db15d,null));};exports[_0xe4c4('0x37')]=function(_0x36e7b1,_0x54e073){return db[_0xe4c4('0x14')][_0xe4c4('0x37')](_0x36e7b1[_0xe4c4('0x38')],{})[_0xe4c4('0xd')](respondWithResult(_0x54e073,0xc9))[_0xe4c4('0x36')](handleError(_0x54e073,null));};exports[_0xe4c4('0x39')]=function(_0x1eda5e,_0x176712){if(_0x1eda5e[_0xe4c4('0x38')]['id']){delete _0x1eda5e['body']['id'];}return db[_0xe4c4('0x14')]['find']({'where':{'id':_0x1eda5e[_0xe4c4('0x33')]['id']}})[_0xe4c4('0xd')](handleEntityNotFound(_0x176712,null))[_0xe4c4('0xd')](saveUpdates(_0x1eda5e[_0xe4c4('0x38')],null))[_0xe4c4('0xd')](respondWithResult(_0x176712,null))[_0xe4c4('0x36')](handleError(_0x176712,null));};exports[_0xe4c4('0x3a')]=function(_0xeb6432,_0x36f8ad){return db[_0xe4c4('0x14')][_0xe4c4('0x3a')]()[_0xe4c4('0xd')](respondWithResult(_0x36f8ad,null))[_0xe4c4('0x36')](handleError(_0x36f8ad,null));};exports[_0xe4c4('0x3b')]=function(_0x535bcc,_0x4922f5){var _0xe0e351;var _0x198961=_0x535bcc['params']['id'];return db[_0xe4c4('0x14')][_0xe4c4('0x35')]({'where':{'id':_0x535bcc[_0xe4c4('0x33')]['id']}})[_0xe4c4('0xd')](handleEntityNotFound(_0x4922f5,null))[_0xe4c4('0xd')](function(_0x5587b2){if(_0x5587b2){return _0x5587b2[_0xe4c4('0x3b')]()[_0xe4c4('0xd')](function(_0x4f6e03){return _0x4f6e03;});}})[_0xe4c4('0xd')](function(_0x24b0e7){_0xe0e351=_0x24b0e7;if(_0x24b0e7){if(_0x24b0e7['VoiceQueueId']||_0x24b0e7[_0xe4c4('0x3c')]){return db[_0x24b0e7['VoiceQueueId']?_0xe4c4('0x3d'):_0xe4c4('0x3e')][_0xe4c4('0x35')]({'where':{'id':_0x24b0e7[_0xe4c4('0x3f')]?_0x24b0e7[_0xe4c4('0x3f')]:_0x24b0e7['CampaignId']},'attributes':['id',_0xe4c4('0x10')],'raw':!![]});}}})[_0xe4c4('0xd')](function(_0x33bcec){var _0x2350d7={};if(_0x33bcec){_[_0xe4c4('0x2d')](_0x2350d7,_[_0xe4c4('0x40')](_0xe0e351[_0xe4c4('0x41')],[_0xe4c4('0x42'),_0xe4c4('0x43'),'id']));_0x2350d7[_0xe4c4('0x44')]=0x15;_0x2350d7[_0xe4c4('0x45')]=_0xe4c4('0x46');_0x2350d7[_0xe4c4('0x47')]=_0x33bcec[_0xe4c4('0x10')];_0x2350d7[_0xe4c4('0x48')]=_0x535bcc[_0xe4c4('0x49')]['name'];_0x2350d7[_0xe4c4('0x4a')]=_0x535bcc[_0xe4c4('0x49')]['id'];_0x2350d7[_0xe4c4('0x46')]=!![];_0x2350d7['deletedat']=moment()[_0xe4c4('0x4b')](_0xe4c4('0x4c'));_0x2350d7[_0xe4c4('0x4d')]=_0xe0e351['phone'];_0x2350d7[_0xe4c4('0x4e')]=_0xe0e351['VoiceQueueId']?_0xe4c4('0x4f'):_0xe4c4('0x50');return db[_0xe4c4('0x51')]['find']({'where':{'id':_0x2350d7['ContactId']},'attributes':[_0xe4c4('0x52'),_0xe4c4('0x53')]})[_0xe4c4('0xd')](function(_0x5edcae){if(!_[_0xe4c4('0x54')](_0x4922f5)&&!_['isNil'](_0x5edcae['firstName'])){_0x2350d7['calleridname']=_0x5edcae['firstName'];if(!_[_0xe4c4('0x54')](_0x5edcae[_0xe4c4('0x53')])){_0x2350d7[_0xe4c4('0x55')]+='\x20'+_0x5edcae[_0xe4c4('0x53')];}}})[_0xe4c4('0x56')](function(){return db[_0xe4c4('0x57')]['create'](_0x2350d7);});}})[_0xe4c4('0xd')](function(_0x44eb3b){return db[_0xe4c4('0x58')][_0xe4c4('0x3b')]({'where':{'CmHopperId':_0x198961}});})[_0xe4c4('0xd')](function(){return _0x4922f5[_0xe4c4('0x5')](0xcc)['end']();})['catch'](handleError(_0x4922f5,null));};exports[_0xe4c4('0x59')]=function(_0x6f374e,_0x1986ab){var _0x3c8e44=[];return db[_0xe4c4('0x51')][_0xe4c4('0x3a')]()[_0xe4c4('0xd')](function(_0x24e1a2){_0x3c8e44=_[_0xe4c4('0x1a')](_0x24e1a2);return _0x6f374e['user']['getVoiceQueues']({'where':{'type':_0xe4c4('0x5a'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xe4c4('0x5b'),_0xe4c4('0x5c')],'raw':!![]});})[_0xe4c4('0xd')](function(_0x58f2dd){if(_0x58f2dd&&_0x58f2dd[_0xe4c4('0x28')]){return db['sequelize'][_0xe4c4('0x5d')](function(_0x56ead3){var _0x5d6c0a={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xe4c4('0x4b')](_0xe4c4('0x4c'))},'VoiceQueueId':{'$in':_[_0xe4c4('0x13')](_0x58f2dd,'id')},'$or':[{'UserId':null},{'UserId':_0x6f374e['user']['id']}]};var _0x57e38e={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x58f2dd)['filter']([_0xe4c4('0x5c'),0x0])[_0xe4c4('0x13')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x6f374e[_0xe4c4('0x49')]['id']}]};var _0x3850da={'$or':[_0x5d6c0a,_0x57e38e]};var _0x11115a=[];if(_0x6f374e['body']['direction']&&_0x6f374e[_0xe4c4('0x38')][_0xe4c4('0x5e')]===_0xe4c4('0x5f')){if(!_[_0xe4c4('0x60')](_0x6f374e[_0xe4c4('0x38')][_0xe4c4('0x61')])){_0x3850da['id']={'$in':_0x6f374e['body'][_0xe4c4('0x61')]};}_0x11115a=[[_0xe4c4('0x62'),_0xe4c4('0x63')],['scheduledAt',_0x58f2dd[0x0][_0xe4c4('0x5b')]===_0xe4c4('0x63')?_0xe4c4('0x64'):'ASC'],db['sequelize'][_0xe4c4('0x65')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id','DESC']];}else{if(!_[_0xe4c4('0x60')](_0x6f374e[_0xe4c4('0x38')][_0xe4c4('0x61')])){_0x3850da['id']={'$notIn':_0x6f374e[_0xe4c4('0x38')][_0xe4c4('0x61')]};}_0x11115a=[[_0xe4c4('0x62'),_0xe4c4('0x64')],[_0xe4c4('0x66'),_0x58f2dd[0x0]['dialOrderByScheduledAt']],db[_0xe4c4('0x67')][_0xe4c4('0x65')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id','ASC']];}return db[_0xe4c4('0x14')][_0xe4c4('0x68')]({'attributes':['id',_0xe4c4('0x69'),_0xe4c4('0x6a'),'recallme'],'where':_0x3850da,'order':_0x11115a,'transaction':_0x56ead3,'lock':_0x56ead3[_0xe4c4('0x6b')][_0xe4c4('0x6c')],'include':[{'model':db[_0xe4c4('0x51')],'as':'Contact','attributes':_0x3c8e44,'include':[{'model':db['CmCompany'],'as':_0xe4c4('0x6d'),'attributes':['id',_0xe4c4('0x10')]}]},{'model':db[_0xe4c4('0x6e')],'as':_0xe4c4('0x6f'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0xe4c4('0x70'),'attributes':['id',_0xe4c4('0x10'),_0xe4c4('0x71')]}]})[_0xe4c4('0xd')](function(_0x1c9f4b){if(_0x1c9f4b){return _0x1c9f4b['update']({'UserId':_0x6f374e[_0xe4c4('0x49')]['id']},{'transaction':_0x56ead3});}});});}})['then'](handleEntityNotFound(_0x1986ab,null))[_0xe4c4('0xd')](respondWithResult(_0x1986ab,null))[_0xe4c4('0x36')](handleError(_0x1986ab,null));};exports['getPreviewRecall']=function(_0x570f1f,_0x4eddfd,_0x279075){var _0x250bb8=[];var _0x1f880f=_0x570f1f[_0xe4c4('0x33')]['id'];var _0x5b41e6=_0x570f1f['user']['id'];return db['CmContact'][_0xe4c4('0x3a')]()[_0xe4c4('0xd')](function(_0x4c10ef){_0x250bb8=_[_0xe4c4('0x1a')](_0x4c10ef);return db[_0xe4c4('0x67')][_0xe4c4('0x5d')](function(_0xb0a006){const _0x5cbc28={'id':_0x1f880f};return db['CmHopper'][_0xe4c4('0x68')]({'attributes':['id',_0xe4c4('0x69'),_0xe4c4('0x72')],'where':_0x5cbc28,'transaction':_0xb0a006,'lock':_0xb0a006[_0xe4c4('0x6b')][_0xe4c4('0x6c')],'include':[{'model':db[_0xe4c4('0x51')],'as':_0xe4c4('0x73'),'attributes':_0x250bb8,'include':[{'model':db['CmCompany'],'as':_0xe4c4('0x6d'),'attributes':['id',_0xe4c4('0x10')]}]},{'model':db[_0xe4c4('0x6e')],'as':_0xe4c4('0x6f'),'attributes':['id','name']},{'model':db[_0xe4c4('0x3d')],'as':_0xe4c4('0x70'),'attributes':['id',_0xe4c4('0x10'),_0xe4c4('0x71')]}]})['then'](function(_0x209602){if(_0x209602){return _0x209602[_0xe4c4('0x39')]({'UserId':_0x5b41e6},{'transaction':_0xb0a006});}});});})['then'](handleEntityNotFound(_0x4eddfd,null))['then'](respondWithResult(_0x4eddfd,null))[_0xe4c4('0x36')](handleError(_0x4eddfd,null));};exports[_0xe4c4('0x74')]=function(_0x3314d6,_0xe30faf){return _0x3314d6[_0xe4c4('0x49')][_0xe4c4('0x75')]({'where':{'type':_0xe4c4('0x5a'),'dialActive':!![],'dialMethod':_0xe4c4('0x76')},'attributes':['id'],'raw':!![]})['then'](function(_0x5ae9f0){if(_0x5ae9f0&&_0x5ae9f0[_0xe4c4('0x28')]){return db[_0xe4c4('0x14')][_0xe4c4('0x9')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xe4c4('0x4b')](_0xe4c4('0x4c'))},'VoiceQueueId':{'$in':_['map'](_0x5ae9f0,'id')},'$or':[{'UserId':null},{'UserId':_0x3314d6[_0xe4c4('0x49')]['id']}]}});}return 0x0;})[_0xe4c4('0xd')](function(_0x425f38){if(!_[_0xe4c4('0x54')](_0x425f38)&&_[_0xe4c4('0x77')](_0x425f38)){return _0xe30faf[_0xe4c4('0x5')](0xc8)[_0xe4c4('0xc')]({'contacts':_0x425f38});}else{logger[_0xe4c4('0xe')](_0xe4c4('0x78'),_0xe4c4('0x74'),0x194,_0xe4c4('0x79'));_0xe30faf[_0xe4c4('0x7a')](0x194);}})[_0xe4c4('0x36')](handleError(_0xe30faf,null));};exports[_0xe4c4('0x7b')]=function(_0x1ccdb2,_0x1295a4){var _0x52c3e0=shared['timezones'];var _0x340983=[];_['map'](_0x52c3e0,function(_0x46de38){_0x340983[_0xe4c4('0x7c')]({'id':_0x46de38[_0xe4c4('0x10')],'name':_0x46de38[_0xe4c4('0x10')],'utcOffset':_0x46de38[_0xe4c4('0x7d')]});});return _0x1295a4[_0xe4c4('0x5')](0xc8)[_0xe4c4('0xc')]({'tz':_0x340983});};exports[_0xe4c4('0x7e')]=function(_0x371947,_0x1579fe){var _0x37bf48=shared[_0xe4c4('0x7f')];var _0x3030f6={};if(!_['isNil'](_0x37bf48[_0x371947[_0xe4c4('0x38')]['id']]))_0x3030f6=_0x37bf48[_0x371947[_0xe4c4('0x38')]['id']];return _0x1579fe[_0xe4c4('0x5')](0xc8)[_0xe4c4('0xc')](_0x3030f6);};
\ No newline at end of file
+var _0xbeea=['phone','campaigntype','queue','ivr','ContactId','firstName','lastName','isNil','calleridname','end','getPreview','CmContact','getVoiceQueues','outbound','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','direction','isEmpty','hopperIds','priority','scheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Contact','Company','List','dialActive','update','CmCompany','Queue','getOpenContacts','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','timezones','push','utcOffset','getTimezone','moment','../../components/parsers/qs','../../config/logger','api','../../mysqldb','status','json','offset','limit','count','Content-Range','sendStatus','error','stack','name','send','rawAttributes','type','key','model','map','keys','filters','concat','$and','$or','$gt','$gte','$lte','$ne','$eq','$not','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','intersection','fields','query','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','CmHopper','then','includeAll','include','findAll','rows','catch','params','find','create','body','describe','destroy','CampaignId','VoiceQueue','Campaign','VoiceQueueId','omit','createdAt','updatedAt','state','deleted','campaign','membername','UserId','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum'];(function(_0x12ffbd,_0x37c0aa){var _0x49c195=function(_0x50a9ac){while(--_0x50a9ac){_0x12ffbd['push'](_0x12ffbd['shift']());}};_0x49c195(++_0x37c0aa);}(_0xbeea,0xb1));var _0xabee=function(_0x5c125b,_0x569610){_0x5c125b=_0x5c125b-0x0;var _0x16b6d5=_0xbeea[_0x5c125b];return _0x16b6d5;};'use strict';var moment=require(_0xabee('0x0'));var _=require('lodash');var qs=require(_0xabee('0x1'));var logger=require(_0xabee('0x2'))(_0xabee('0x3'));var shared=require('../../config/environment');var db=require(_0xabee('0x4'))['db'];function respondWithResult(_0x59e264,_0x58afa7){_0x58afa7=_0x58afa7||0xc8;return function(_0x33571e){if(_0x33571e){return _0x59e264[_0xabee('0x5')](_0x58afa7)[_0xabee('0x6')](_0x33571e);}};}function respondWithFilteredResult(_0x1ea258,_0x58c9ef){return function(_0x5bb218){if(_0x5bb218){var _0x238317=typeof _0x58c9ef[_0xabee('0x7')]==='undefined'&&typeof _0x58c9ef[_0xabee('0x8')]==='undefined';var _0x14a78d=_0x5bb218[_0xabee('0x9')];var _0x2a1c06=_0x238317?0x0:_0x58c9ef[_0xabee('0x7')];var _0x33a862=_0x238317?_0x5bb218[_0xabee('0x9')]:_0x58c9ef['offset']+_0x58c9ef[_0xabee('0x8')];var _0x3bbb18;if(_0x33a862>=_0x14a78d){_0x33a862=_0x14a78d;_0x3bbb18=0xc8;}else{_0x3bbb18=0xce;}_0x1ea258[_0xabee('0x5')](_0x3bbb18);return _0x1ea258['set'](_0xabee('0xa'),_0x2a1c06+'-'+_0x33a862+'/'+_0x14a78d)[_0xabee('0x6')](_0x5bb218);}return null;};}function saveUpdates(_0x16d6a5,_0x49fb73){return function(_0x5915a1){if(_0x5915a1){return _0x5915a1['update'](_0x16d6a5)['then'](function(_0x57abc2){return _0x57abc2;});}return null;};}function handleEntityNotFound(_0x113c5c,_0x370a4e){return function(_0x38ba29){if(!_0x38ba29){_0x113c5c[_0xabee('0xb')](0x194);}return _0x38ba29;};}function handleError(_0x38cf66,_0x5e94ff){_0x5e94ff=_0x5e94ff||0x1f4;return function(_0x177670){logger[_0xabee('0xc')](_0x177670[_0xabee('0xd')]);if(_0x177670[_0xabee('0xe')]){delete _0x177670[_0xabee('0xe')];}_0x38cf66[_0xabee('0x5')](_0x5e94ff)[_0xabee('0xf')](_0x177670);};}exports['index']=function(_0x33e3c0,_0x112bb9){var _0x447ed3={},_0x471b24={},_0x150bdb={'count':0x0,'rows':[]};var _0xcf2973=_['map'](db['CmHopper'][_0xabee('0x10')],function(_0x593923){return{'name':_0x593923['fieldName'],'type':_0x593923[_0xabee('0x11')][_0xabee('0x12')]};});_0x471b24[_0xabee('0x13')]=_[_0xabee('0x14')](_0xcf2973,_0xabee('0xe'));_0x471b24['query']=_[_0xabee('0x15')](_0x33e3c0['query']);_0x471b24['filters']=_['intersection'](_0x471b24[_0xabee('0x13')],_0x471b24['query']);_0x471b24[_0xabee('0x16')]=_[_0xabee('0x17')](_0x471b24[_0xabee('0x16')],[_0xabee('0x18'),_0xabee('0x19'),_0xabee('0x1a'),_0xabee('0x1b'),'$lt',_0xabee('0x1c'),_0xabee('0x1d'),_0xabee('0x1e'),_0xabee('0x1f'),'$between',_0xabee('0x20'),_0xabee('0x21'),'$notIn',_0xabee('0x22'),_0xabee('0x23'),_0xabee('0x24'),_0xabee('0x25'),'$like',_0xabee('0x26'),_0xabee('0x27'),_0xabee('0x28'),_0xabee('0x29')]);_0x447ed3[_0xabee('0x2a')]=_[_0xabee('0x2b')](_0x471b24[_0xabee('0x13')],qs[_0xabee('0x2c')](_0x33e3c0[_0xabee('0x2d')]['fields']));_0x447ed3[_0xabee('0x2a')]=_0x447ed3['attributes'][_0xabee('0x2e')]?_0x447ed3[_0xabee('0x2a')]:_0x471b24[_0xabee('0x13')];if(!_0x33e3c0[_0xabee('0x2d')]['hasOwnProperty'](_0xabee('0x2f'))){_0x447ed3['limit']=qs[_0xabee('0x8')](_0x33e3c0['query'][_0xabee('0x8')]);_0x447ed3['offset']=qs['offset'](_0x33e3c0[_0xabee('0x2d')][_0xabee('0x7')]);}_0x447ed3[_0xabee('0x30')]=qs[_0xabee('0x31')](_0x33e3c0[_0xabee('0x2d')][_0xabee('0x31')]);_0x447ed3[_0xabee('0x32')]=qs[_0xabee('0x16')](_['pick'](_0x33e3c0[_0xabee('0x2d')],_0x471b24[_0xabee('0x16')]),_0xcf2973);if(_0x33e3c0[_0xabee('0x2d')][_0xabee('0x33')]){_0x447ed3[_0xabee('0x32')]=_[_0xabee('0x34')](_0x447ed3[_0xabee('0x32')],{'$or':_[_0xabee('0x14')](_0xcf2973,function(_0x41c4a3){if(_0x41c4a3[_0xabee('0x11')]!==_0xabee('0x35')){var _0x3112fd={};_0x3112fd[_0x41c4a3[_0xabee('0xe')]]={'$like':'%'+_0x33e3c0[_0xabee('0x2d')][_0xabee('0x33')]+'%'};return _0x3112fd;}})});}_0x447ed3=_[_0xabee('0x34')]({},_0x447ed3,_0x33e3c0[_0xabee('0x36')]);var _0x491279={'where':_0x447ed3['where']};return db[_0xabee('0x37')][_0xabee('0x9')](_0x491279)[_0xabee('0x38')](function(_0x153c0b){_0x150bdb['count']=_0x153c0b;if(_0x33e3c0[_0xabee('0x2d')][_0xabee('0x39')]){_0x447ed3[_0xabee('0x3a')]=[{'all':!![]}];}return db['CmHopper'][_0xabee('0x3b')](_0x447ed3);})['then'](function(_0x186333){_0x150bdb[_0xabee('0x3c')]=_0x186333;return _0x150bdb;})[_0xabee('0x38')](respondWithFilteredResult(_0x112bb9,_0x447ed3))[_0xabee('0x3d')](handleError(_0x112bb9,null));};exports['show']=function(_0x48d6ca,_0x417281){var _0xb76b1d={'raw':!![],'where':{'id':_0x48d6ca[_0xabee('0x3e')]['id']}},_0xa2ae67={};_0xa2ae67[_0xabee('0x13')]=_['keys'](db[_0xabee('0x37')][_0xabee('0x10')]);_0xa2ae67['query']=_[_0xabee('0x15')](_0x48d6ca[_0xabee('0x2d')]);_0xa2ae67['filters']=_[_0xabee('0x2b')](_0xa2ae67[_0xabee('0x13')],_0xa2ae67[_0xabee('0x2d')]);_0xb76b1d[_0xabee('0x2a')]=_[_0xabee('0x2b')](_0xa2ae67[_0xabee('0x13')],qs[_0xabee('0x2c')](_0x48d6ca['query'][_0xabee('0x2c')]));_0xb76b1d[_0xabee('0x2a')]=_0xb76b1d[_0xabee('0x2a')]['length']?_0xb76b1d[_0xabee('0x2a')]:_0xa2ae67[_0xabee('0x13')];if(_0x48d6ca['query'][_0xabee('0x39')]){_0xb76b1d[_0xabee('0x3a')]=[{'all':!![]}];}_0xb76b1d=_['merge']({},_0xb76b1d,_0x48d6ca[_0xabee('0x36')]);return db[_0xabee('0x37')][_0xabee('0x3f')](_0xb76b1d)[_0xabee('0x38')](handleEntityNotFound(_0x417281,null))[_0xabee('0x38')](respondWithResult(_0x417281,null))[_0xabee('0x3d')](handleError(_0x417281,null));};exports[_0xabee('0x40')]=function(_0x5a5fa7,_0x2aa2f0){return db[_0xabee('0x37')][_0xabee('0x40')](_0x5a5fa7['body'],{})[_0xabee('0x38')](respondWithResult(_0x2aa2f0,0xc9))[_0xabee('0x3d')](handleError(_0x2aa2f0,null));};exports['update']=function(_0x57c65c,_0x4b458f){if(_0x57c65c[_0xabee('0x41')]['id']){delete _0x57c65c[_0xabee('0x41')]['id'];}return db['CmHopper']['find']({'where':{'id':_0x57c65c[_0xabee('0x3e')]['id']}})[_0xabee('0x38')](handleEntityNotFound(_0x4b458f,null))[_0xabee('0x38')](saveUpdates(_0x57c65c[_0xabee('0x41')],null))[_0xabee('0x38')](respondWithResult(_0x4b458f,null))[_0xabee('0x3d')](handleError(_0x4b458f,null));};exports[_0xabee('0x42')]=function(_0x307d34,_0xfb2b6f){return db[_0xabee('0x37')][_0xabee('0x42')]()[_0xabee('0x38')](respondWithResult(_0xfb2b6f,null))[_0xabee('0x3d')](handleError(_0xfb2b6f,null));};exports[_0xabee('0x43')]=function(_0x3e277d,_0x252f60){var _0x1b5cf2;var _0x34dca8=_0x3e277d['params']['id'];return db[_0xabee('0x37')][_0xabee('0x3f')]({'where':{'id':_0x3e277d['params']['id']}})['then'](handleEntityNotFound(_0x252f60,null))[_0xabee('0x38')](function(_0x3ecfff){if(_0x3ecfff){return _0x3ecfff[_0xabee('0x43')]()[_0xabee('0x38')](function(_0xe2433f){return _0xe2433f;});}})[_0xabee('0x38')](function(_0x37e589){_0x1b5cf2=_0x37e589;if(_0x37e589){if(_0x37e589['VoiceQueueId']||_0x37e589[_0xabee('0x44')]){return db[_0x37e589['VoiceQueueId']?_0xabee('0x45'):_0xabee('0x46')]['find']({'where':{'id':_0x37e589[_0xabee('0x47')]?_0x37e589[_0xabee('0x47')]:_0x37e589[_0xabee('0x44')]},'attributes':['id','name'],'raw':!![]});}}})[_0xabee('0x38')](function(_0x4f36a4){var _0x1fc0da={};if(_0x4f36a4){_[_0xabee('0x34')](_0x1fc0da,_[_0xabee('0x48')](_0x1b5cf2['dataValues'],[_0xabee('0x49'),_0xabee('0x4a'),'id']));_0x1fc0da[_0xabee('0x4b')]=0x15;_0x1fc0da['statedesc']=_0xabee('0x4c');_0x1fc0da[_0xabee('0x4d')]=_0x4f36a4[_0xabee('0xe')];_0x1fc0da[_0xabee('0x4e')]=_0x3e277d['user'][_0xabee('0xe')];_0x1fc0da[_0xabee('0x4f')]=_0x3e277d[_0xabee('0x50')]['id'];_0x1fc0da['deleted']=!![];_0x1fc0da[_0xabee('0x51')]=moment()[_0xabee('0x52')](_0xabee('0x53'));_0x1fc0da[_0xabee('0x54')]=_0x1b5cf2[_0xabee('0x55')];_0x1fc0da[_0xabee('0x56')]=_0x1b5cf2[_0xabee('0x47')]?_0xabee('0x57'):_0xabee('0x58');return db['CmContact']['find']({'where':{'id':_0x1fc0da[_0xabee('0x59')]},'attributes':[_0xabee('0x5a'),_0xabee('0x5b')]})[_0xabee('0x38')](function(_0x30f70c){if(!_[_0xabee('0x5c')](_0x252f60)&&!_['isNil'](_0x30f70c[_0xabee('0x5a')])){_0x1fc0da[_0xabee('0x5d')]=_0x30f70c[_0xabee('0x5a')];if(!_['isNil'](_0x30f70c['lastName'])){_0x1fc0da[_0xabee('0x5d')]+='\x20'+_0x30f70c['lastName'];}}})['finally'](function(){return db['CmHopperFinal'][_0xabee('0x40')](_0x1fc0da);});}})['then'](function(_0x449530){return db['CmHopperAdditionalPhone'][_0xabee('0x43')]({'where':{'CmHopperId':_0x34dca8}});})['then'](function(){return _0x252f60[_0xabee('0x5')](0xcc)[_0xabee('0x5e')]();})[_0xabee('0x3d')](handleError(_0x252f60,null));};exports[_0xabee('0x5f')]=function(_0x553cfb,_0xc4a70d){var _0x5d52fd=[];return db[_0xabee('0x60')][_0xabee('0x42')]()[_0xabee('0x38')](function(_0x3a41cd){_0x5d52fd=_[_0xabee('0x15')](_0x3a41cd);return _0x553cfb[_0xabee('0x50')][_0xabee('0x61')]({'where':{'type':_0xabee('0x62'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xabee('0x63'),_0xabee('0x64')],'raw':!![]});})['then'](function(_0x1d9fc3){if(_0x1d9fc3&&_0x1d9fc3['length']){return db[_0xabee('0x65')][_0xabee('0x66')](function(_0x230d3a){var _0x3d4fef={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xabee('0x53'))},'VoiceQueueId':{'$in':_[_0xabee('0x14')](_0x1d9fc3,'id')},'$or':[{'UserId':null},{'UserId':_0x553cfb[_0xabee('0x50')]['id']}]};var _0x47a0d2={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x1d9fc3)[_0xabee('0x33')]([_0xabee('0x64'),0x0])['map']('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x553cfb[_0xabee('0x50')]['id']}]};var _0x1e0082={'$or':[_0x3d4fef,_0x47a0d2]};var _0x4a7bef=[];if(_0x553cfb[_0xabee('0x41')]['direction']&&_0x553cfb[_0xabee('0x41')][_0xabee('0x67')]==='prev'){if(!_[_0xabee('0x68')](_0x553cfb[_0xabee('0x41')][_0xabee('0x69')])){_0x1e0082['id']={'$in':_0x553cfb[_0xabee('0x41')][_0xabee('0x69')]};}_0x4a7bef=[[_0xabee('0x6a'),'ASC'],[_0xabee('0x6b'),_0x1d9fc3[0x0][_0xabee('0x63')]===_0xabee('0x6c')?_0xabee('0x6d'):'ASC'],db[_0xabee('0x65')][_0xabee('0x6e')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0xabee('0x6d')]];}else{if(!_[_0xabee('0x68')](_0x553cfb[_0xabee('0x41')]['hopperIds'])){_0x1e0082['id']={'$notIn':_0x553cfb[_0xabee('0x41')][_0xabee('0x69')]};}_0x4a7bef=[[_0xabee('0x6a'),_0xabee('0x6d')],['scheduledAt',_0x1d9fc3[0x0][_0xabee('0x63')]],db['sequelize'][_0xabee('0x6e')](_0xabee('0x6f')),['id',_0xabee('0x6c')]];}return db[_0xabee('0x37')][_0xabee('0x70')]({'attributes':['id',_0xabee('0x71'),_0xabee('0x55'),'recallme'],'where':_0x1e0082,'order':_0x4a7bef,'transaction':_0x230d3a,'lock':_0x230d3a[_0xabee('0x72')]['UPDATE'],'include':[{'model':db[_0xabee('0x60')],'as':_0xabee('0x73'),'attributes':_0x5d52fd,'include':[{'model':db['CmCompany'],'as':_0xabee('0x74'),'attributes':['id',_0xabee('0xe')]}]},{'model':db['CmList'],'as':_0xabee('0x75'),'attributes':['id',_0xabee('0xe')]},{'model':db[_0xabee('0x45')],'as':'Queue','attributes':['id',_0xabee('0xe'),_0xabee('0x76')]}]})['then'](function(_0x446f9b){if(_0x446f9b){return _0x446f9b[_0xabee('0x77')]({'UserId':_0x553cfb['user']['id']},{'transaction':_0x230d3a});}});});}})[_0xabee('0x38')](handleEntityNotFound(_0xc4a70d,null))[_0xabee('0x38')](respondWithResult(_0xc4a70d,null))[_0xabee('0x3d')](handleError(_0xc4a70d,null));};exports['getPreviewRecall']=function(_0x5e4e68,_0x2e2c08,_0xfc581){var _0x112861=[];var _0x19d112=_0x5e4e68[_0xabee('0x3e')]['id'];var _0x3a9913=_0x5e4e68[_0xabee('0x50')]['id'];return db[_0xabee('0x60')][_0xabee('0x42')]()[_0xabee('0x38')](function(_0x414f81){_0x112861=_[_0xabee('0x15')](_0x414f81);return db['sequelize']['transaction'](function(_0x22f073){const _0x43af53={'id':_0x19d112};return db[_0xabee('0x37')]['findOne']({'attributes':['id',_0xabee('0x71'),'recallme'],'where':_0x43af53,'transaction':_0x22f073,'lock':_0x22f073[_0xabee('0x72')]['UPDATE'],'include':[{'model':db[_0xabee('0x60')],'as':_0xabee('0x73'),'attributes':_0x112861,'include':[{'model':db[_0xabee('0x78')],'as':_0xabee('0x74'),'attributes':['id','name']}]},{'model':db['CmList'],'as':_0xabee('0x75'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0xabee('0x79'),'attributes':['id',_0xabee('0xe'),_0xabee('0x76')]}]})[_0xabee('0x38')](function(_0x235463){if(_0x235463){return _0x235463[_0xabee('0x77')]({'UserId':_0x3a9913},{'transaction':_0x22f073});}});});})[_0xabee('0x38')](handleEntityNotFound(_0x2e2c08,null))['then'](respondWithResult(_0x2e2c08,null))['catch'](handleError(_0x2e2c08,null));};exports[_0xabee('0x7a')]=function(_0x398870,_0x5c49e6){return _0x398870[_0xabee('0x50')][_0xabee('0x61')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xabee('0x7b')},'attributes':['id'],'raw':!![]})[_0xabee('0x38')](function(_0x5eb87b){if(_0x5eb87b&&_0x5eb87b[_0xabee('0x2e')]){return db['CmHopper'][_0xabee('0x9')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xabee('0x52')](_0xabee('0x53'))},'VoiceQueueId':{'$in':_[_0xabee('0x14')](_0x5eb87b,'id')},'$or':[{'UserId':null},{'UserId':_0x398870[_0xabee('0x50')]['id']}]}});}return 0x0;})[_0xabee('0x38')](function(_0xe8c89d){if(!_[_0xabee('0x5c')](_0xe8c89d)&&_[_0xabee('0x7c')](_0xe8c89d)){return _0x5c49e6[_0xabee('0x5')](0xc8)[_0xabee('0x6')]({'contacts':_0xe8c89d});}else{logger[_0xabee('0xc')](_0xabee('0x7d'),'getOpenContacts',0x194,_0xabee('0x7e'));_0x5c49e6[_0xabee('0xb')](0x194);}})[_0xabee('0x3d')](handleError(_0x5c49e6,null));};exports['getTimezones']=function(_0x4d72b9,_0x5ed061){var _0x56b37d=shared[_0xabee('0x7f')];var _0x1a6a66=[];_[_0xabee('0x14')](_0x56b37d,function(_0x4433b8){_0x1a6a66[_0xabee('0x80')]({'id':_0x4433b8[_0xabee('0xe')],'name':_0x4433b8[_0xabee('0xe')],'utcOffset':_0x4433b8[_0xabee('0x81')]});});return _0x5ed061[_0xabee('0x5')](0xc8)['json']({'tz':_0x1a6a66});};exports[_0xabee('0x82')]=function(_0x529640,_0x191634){var _0x50a6db=shared['timezones'];var _0x3ded8f={};if(!_[_0xabee('0x5c')](_0x50a6db[_0x529640[_0xabee('0x41')]['id']]))_0x3ded8f=_0x50a6db[_0x529640[_0xabee('0x41')]['id']];return _0x191634['status'](0xc8)[_0xabee('0x6')](_0x3ded8f);};
\ No newline at end of file
index 092f863..dc62a00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['define','CmHopper','scheduledat','phone','priority','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x5e09c4,_0x4a5a51){var _0x2cd5a6=function(_0x4d480b){while(--_0x4d480b){_0x5e09c4['push'](_0x5e09c4['shift']());}};_0x2cd5a6(++_0x4a5a51);}(_0x524e,0x15e));var _0xe524=function(_0x2106db,_0x430906){_0x2106db=_0x2106db-0x0;var _0x40ace6=_0x524e[_0x2106db];return _0x40ace6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe524('0x0'))(_0xe524('0x1'));var moment=require(_0xe524('0x2'));var BPromise=require(_0xe524('0x3'));var rp=require(_0xe524('0x4'));var fs=require('fs');var path=require(_0xe524('0x5'));var rimraf=require(_0xe524('0x6'));var config=require(_0xe524('0x7'));var attributes=require(_0xe524('0x8'));module[_0xe524('0x9')]=function(_0x4f75d6,_0xaaeaa9){return _0x4f75d6[_0xe524('0xa')](_0xe524('0xb'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xe524('0xc'),'fields':[_0xe524('0xc')]},{'name':_0xe524('0xd'),'fields':[_0xe524('0xd')]},{'name':_0xe524('0xe'),'fields':[_0xe524('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','priority','lodash'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x326f,0xd1));var _0xf326=function(_0x4437cd,_0x10c4a1){_0x4437cd=_0x4437cd-0x0;var _0x2ec959=_0x326f[_0x4437cd];return _0x2ec959;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['scheduledat']},{'name':'phone','fields':['phone']},{'name':_0xf326('0xe'),'fields':[_0xf326('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index df0eb40..59f095a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x536d=['transaction','LOCK','Contact','keys','Agent','name','voicePause','length','includes','push','dataValues','ContactId','MoveContactManagedDialer','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','\x20,\x201,\x20null','contactsRescheduled','CountReScheduled','GetContactRecallMe','CmContact','order','UserId','all','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','availableAgentsIds','NOW()','CmList','util','moment','../../mysqldb','../../config/logger','rpc','GetCmHopper','CmHopper','findAll','options','raw','where','include','map','model','attributes','then','info','debug','stringify','catch','error','message','ShowCmHopper','CreateCmHopper','create','body','UpdateCmHopper','update','limit','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','destroy','GetContactDialer','describe','sequelize'];(function(_0xdeac17,_0x19ad66){var _0x33aabd=function(_0x558a9e){while(--_0x558a9e){_0xdeac17['push'](_0xdeac17['shift']());}};_0x33aabd(++_0x19ad66);}(_0x536d,0x192));var _0xd536=function(_0x2f4258,_0x4fae6c){_0x2f4258=_0x2f4258-0x0;var _0x3a98ce=_0x536d[_0x2f4258];return _0x3a98ce;};'use strict';var _=require('lodash');var util=require(_0xd536('0x0'));var moment=require(_0xd536('0x1'));var BPromise=require('bluebird');var db=require(_0xd536('0x2'))['db'];var logger=require(_0xd536('0x3'))(_0xd536('0x4'));exports[_0xd536('0x5')]=function(_0x45dafc){var _0x3eb12e=this;return new Promise(function(_0x422ed0,_0x201606){return db[_0xd536('0x6')][_0xd536('0x7')]({'raw':_0x45dafc[_0xd536('0x8')]?_0x45dafc['options'][_0xd536('0x9')]===undefined?!![]:![]:!![],'where':_0x45dafc[_0xd536('0x8')]?_0x45dafc[_0xd536('0x8')][_0xd536('0xa')]||null:null,'attributes':_0x45dafc[_0xd536('0x8')]?_0x45dafc[_0xd536('0x8')]['attributes']||null:null,'limit':_0x45dafc['options']?_0x45dafc[_0xd536('0x8')]['limit']||null:null,'include':_0x45dafc['options']?_0x45dafc[_0xd536('0x8')][_0xd536('0xb')]?_[_0xd536('0xc')](_0x45dafc[_0xd536('0x8')]['include'],function(_0x5a43d0){return{'model':db[_0x5a43d0[_0xd536('0xd')]],'as':_0x5a43d0['as'],'attributes':_0x5a43d0['attributes'],'include':_0x5a43d0[_0xd536('0xb')]?_['map'](_0x5a43d0[_0xd536('0xb')],function(_0x51beba){return{'model':db[_0x51beba[_0xd536('0xd')]],'as':_0x51beba['as'],'attributes':_0x51beba[_0xd536('0xe')],'include':_0x51beba[_0xd536('0xb')]?_[_0xd536('0xc')](_0x51beba[_0xd536('0xb')],function(_0x18babb){return{'model':db[_0x18babb['model']],'as':_0x18babb['as'],'attributes':_0x18babb[_0xd536('0xe')]};}):[]};}):[]};}):[]:[]})[_0xd536('0xf')](function(_0x51856d){logger[_0xd536('0x10')](_0xd536('0x5'),_0x45dafc);logger[_0xd536('0x11')]('GetCmHopper',_0x45dafc,JSON[_0xd536('0x12')](_0x51856d));_0x422ed0(_0x51856d);})[_0xd536('0x13')](function(_0x453010){logger[_0xd536('0x14')](_0xd536('0x5'),_0x453010[_0xd536('0x15')],_0x45dafc);_0x201606(_0x3eb12e['error'](0x1f4,_0x453010[_0xd536('0x15')]));});});};exports[_0xd536('0x16')]=function(_0x262e33){var _0x1d8f61=this;return new Promise(function(_0xc4d4a9,_0x34a89f){return db[_0xd536('0x6')]['find']({'raw':_0x262e33['options']?_0x262e33[_0xd536('0x8')]['raw']===undefined?!![]:![]:!![],'where':_0x262e33['options']?_0x262e33[_0xd536('0x8')][_0xd536('0xa')]||null:null,'attributes':_0x262e33['options']?_0x262e33['options'][_0xd536('0xe')]||null:null,'include':_0x262e33['options']?_0x262e33[_0xd536('0x8')]['include']?_['map'](_0x262e33[_0xd536('0x8')][_0xd536('0xb')],function(_0x1ba712){return{'model':db[_0x1ba712['model']],'as':_0x1ba712['as'],'attributes':_0x1ba712['attributes'],'include':_0x1ba712[_0xd536('0xb')]?_['map'](_0x1ba712[_0xd536('0xb')],function(_0x35aad2){return{'model':db[_0x35aad2['model']],'as':_0x35aad2['as'],'attributes':_0x35aad2[_0xd536('0xe')],'include':_0x35aad2[_0xd536('0xb')]?_[_0xd536('0xc')](_0x35aad2[_0xd536('0xb')],function(_0x3f11a1){return{'model':db[_0x3f11a1['model']],'as':_0x3f11a1['as'],'attributes':_0x3f11a1[_0xd536('0xe')]};}):[]};}):[]};}):[]:[]})[_0xd536('0xf')](function(_0x1a0ec5){logger[_0xd536('0x10')](_0xd536('0x16'),_0x262e33);logger[_0xd536('0x11')](_0xd536('0x16'),_0x262e33,JSON[_0xd536('0x12')](_0x1a0ec5));_0xc4d4a9(_0x1a0ec5);})['catch'](function(_0x22e414){logger[_0xd536('0x14')](_0xd536('0x16'),_0x22e414['message'],_0x262e33);_0x34a89f(_0x1d8f61[_0xd536('0x14')](0x1f4,_0x22e414[_0xd536('0x15')]));});});};exports[_0xd536('0x17')]=function(_0x819250){var _0x179446=this;return new Promise(function(_0x45b4ab,_0x3c56ad){return db['CmHopper'][_0xd536('0x18')](_0x819250[_0xd536('0x19')],{'raw':_0x819250[_0xd536('0x8')]?_0x819250[_0xd536('0x8')][_0xd536('0x9')]===undefined?!![]:![]:!![]})['then'](function(_0x163f30){logger[_0xd536('0x10')](_0xd536('0x17'),_0x819250);logger['debug'](_0xd536('0x17'),_0x819250,JSON['stringify'](_0x163f30));_0x45b4ab(_0x163f30);})['catch'](function(_0x298713){logger[_0xd536('0x14')](_0xd536('0x17'),_0x298713[_0xd536('0x15')],_0x819250);_0x3c56ad(_0x179446['error'](0x1f4,_0x298713[_0xd536('0x15')]));});});};exports[_0xd536('0x1a')]=function(_0x203e4a){var _0x702798=this;return new Promise(function(_0x1270d4,_0xbefe07){return db[_0xd536('0x6')][_0xd536('0x1b')](_0x203e4a[_0xd536('0x19')],{'raw':_0x203e4a[_0xd536('0x8')]?_0x203e4a[_0xd536('0x8')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x203e4a[_0xd536('0x8')]?_0x203e4a[_0xd536('0x8')][_0xd536('0xa')]||null:null,'attributes':_0x203e4a[_0xd536('0x8')]?_0x203e4a[_0xd536('0x8')][_0xd536('0xe')]||null:null,'limit':_0x203e4a[_0xd536('0x8')]?_0x203e4a[_0xd536('0x8')][_0xd536('0x1c')]||null:null})[_0xd536('0xf')](function(_0x1e213b){logger[_0xd536('0x10')](_0xd536('0x1a'),_0x203e4a);logger[_0xd536('0x10')](_0xd536('0x1d'),JSON[_0xd536('0x12')](_0x203e4a[_0xd536('0x8')][_0xd536('0xa')]),_0x203e4a[_0xd536('0x19')][_0xd536('0x1e')]);logger[_0xd536('0x11')](_0xd536('0x1a'),_0x203e4a,JSON[_0xd536('0x12')](_0x1e213b));_0x1270d4(_0x1e213b);})[_0xd536('0x13')](function(_0x47756d){logger[_0xd536('0x14')](_0xd536('0x1a'),_0x47756d['message'],_0x203e4a);_0xbefe07(_0x702798[_0xd536('0x14')](0x1f4,_0x47756d[_0xd536('0x15')]));});});};exports[_0xd536('0x1f')]=function(_0x420120){var _0xd61b89=this;return new Promise(function(_0x1775e5,_0x344b54){return db[_0xd536('0x6')][_0xd536('0x20')]({'where':_0x420120[_0xd536('0x8')]?_0x420120[_0xd536('0x8')][_0xd536('0xa')]||null:null})[_0xd536('0xf')](function(_0x3378f8){logger[_0xd536('0x10')]('DestroyCmHopper',_0x420120);logger['debug'](_0xd536('0x1f'),_0x420120,JSON[_0xd536('0x12')](_0x3378f8));_0x1775e5(_0x3378f8);})['catch'](function(_0x56ca20){logger['error'](_0xd536('0x1f'),_0x56ca20['message'],_0x420120);_0x344b54(_0xd61b89[_0xd536('0x14')](0x1f4,_0x56ca20[_0xd536('0x15')]));});});};exports[_0xd536('0x21')]=function(_0x475ea6){var _0x23f1cf=this;return new Promise(function(_0x20d16c,_0x241761){return db['CmContact'][_0xd536('0x22')]()[_0xd536('0xf')](function(_0x3e956d){return db[_0xd536('0x23')][_0xd536('0x24')](function(_0x4d2ed9){return db['CmHopper'][_0xd536('0x7')]({'where':_0x475ea6[_0xd536('0x8')]?_0x475ea6['options'][_0xd536('0xa')]||null:null,'attributes':_0x475ea6[_0xd536('0x8')]?_0x475ea6['options'][_0xd536('0xe')]||null:null,'limit':_0x475ea6[_0xd536('0x8')]?_0x475ea6[_0xd536('0x8')][_0xd536('0x1c')]||null:null,'order':_0x475ea6[_0xd536('0x8')]?_0x475ea6[_0xd536('0x8')]['order']||null:null,'transaction':_0x4d2ed9,'lock':_0x4d2ed9[_0xd536('0x25')]['UPDATE'],'include':[{'model':db['CmContact'],'as':_0xd536('0x26'),'attributes':_[_0xd536('0x27')](_0x3e956d)},{'model':db['User'],'as':_0xd536('0x28'),'attributes':['id',_0xd536('0x29'),_0xd536('0x2a')]}]})[_0xd536('0xf')](function(_0x295c1b){var _0x1e4250=[];var _0x1ccccb=[];for(var _0xba8fe6=0x0;_0xba8fe6<_0x295c1b[_0xd536('0x2b')];_0xba8fe6+=0x1){var _0x3871c5=_0x295c1b[_0xba8fe6]['UserId'];if(_0x3871c5===null){_0x1e4250['push'](_0x295c1b[_0xba8fe6][_0xd536('0x1b')](_0x475ea6[_0xd536('0x19')],{'transaction':_0x4d2ed9}));}else if(!_0x1ccccb[_0xd536('0x2c')](_0x3871c5)){_0x1ccccb[_0xd536('0x2d')](_0x3871c5);_0x1e4250['push'](_0x295c1b[_0xba8fe6][_0xd536('0x1b')](_0x475ea6['body'],{'transaction':_0x4d2ed9}));}}return BPromise['all'](_0x1e4250);});})[_0xd536('0xf')](function(_0x3ffc23){logger[_0xd536('0x10')]('GetContactDialer',_0x475ea6);if(_0x3ffc23[_0xd536('0x2b')]>0x0){logger[_0xd536('0x10')]('GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]',_0x3ffc23[0x0][_0xd536('0x2e')]['id'],_0x3ffc23[0x0]['dataValues'][_0xd536('0x2f')],_0x3ffc23[0x0][_0xd536('0x2e')][_0xd536('0x1e')]);}logger[_0xd536('0x11')](_0xd536('0x21'),_0x475ea6,JSON[_0xd536('0x12')](_0x3ffc23));_0x20d16c(_0x3ffc23);})[_0xd536('0x13')](function(_0x1524cc){logger['error'](_0xd536('0x21'),_0x1524cc[_0xd536('0x15')],_0x475ea6);_0x241761(_0x23f1cf[_0xd536('0x14')](0x1f4,_0x1524cc[_0xd536('0x15')]));});});});};exports[_0xd536('0x30')]=function(_0x5ef8db){var _0x25763a=this;return new Promise(function(_0x174655,_0x225884){return db['sequelize'][_0xd536('0x24')](function(_0x5e8c46){return db['CmHopperFinal']['create'](_0x5ef8db[_0xd536('0x19')],{'raw':_0x5ef8db['options']?_0x5ef8db[_0xd536('0x8')][_0xd536('0x9')]===undefined?!![]:![]:!![],'transaction':_0x5e8c46})[_0xd536('0xf')](function(){logger[_0xd536('0x10')](_0xd536('0x31'),JSON['stringify'](_0x5ef8db['options']['where']),_0x5ef8db[_0xd536('0x8')]['where'][_0xd536('0x1e')]);return db[_0xd536('0x6')][_0xd536('0x20')]({'where':_0x5ef8db['options']?_0x5ef8db[_0xd536('0x8')][_0xd536('0xa')]||null:null,'transaction':_0x5e8c46});});})['then'](function(_0x17a410){logger[_0xd536('0x10')](_0xd536('0x30'),_0x5ef8db);logger[_0xd536('0x11')](_0xd536('0x30'),_0x5ef8db,JSON['stringify'](_0x17a410));_0x174655(_0x17a410);})[_0xd536('0x13')](function(_0xb524ad){logger[_0xd536('0x14')](_0xd536('0x30'),_0xb524ad['message'],_0x5ef8db);_0x225884(_0x25763a[_0xd536('0x14')](0x1f4,_0xb524ad['message']));});});};exports['CountReScheduled']=function(_0x2bc0b6){var _0x414a8d=this;return new Promise(function(_0x20a188,_0x4de847){return db[_0xd536('0x6')]['findAll']({'raw':_0x2bc0b6['options']?_0x2bc0b6[_0xd536('0x8')]['raw']===undefined?!![]:![]:!![],'where':_0x2bc0b6['options']?_0x2bc0b6[_0xd536('0x8')][_0xd536('0xa')]||null:null,'attributes':[[db[_0xd536('0x23')]['fn']('COUNT',db[_0xd536('0x23')]['fn']('IF',db[_0xd536('0x23')][_0xd536('0x32')](_0xd536('0x33')+util[_0xd536('0x34')](_0xd536('0x35'),moment()[_0xd536('0x34')]('YYYY-MM-DD\x20HH:mm:ss'))+_0xd536('0x36')))),_0xd536('0x37')]]})['then'](function(_0x2ef277){logger[_0xd536('0x10')]('CountReScheduled',_0x2bc0b6);logger[_0xd536('0x11')](_0xd536('0x38'),_0x2bc0b6,JSON[_0xd536('0x12')](_0x2ef277));_0x20a188(_0x2ef277);})[_0xd536('0x13')](function(_0x12f81a){logger[_0xd536('0x14')]('CountReScheduled',_0x12f81a[_0xd536('0x15')],_0x2bc0b6);_0x4de847(_0x414a8d[_0xd536('0x14')](0x1f4,_0x12f81a[_0xd536('0x15')]));});});};exports[_0xd536('0x39')]=function(_0x2c6350){var _0x338ff6=this;return new Promise(function(_0x3742f6,_0x10cef1){return db[_0xd536('0x3a')][_0xd536('0x22')]()[_0xd536('0xf')](function(){return db['sequelize'][_0xd536('0x24')](function(_0x152cfd){return db[_0xd536('0x6')][_0xd536('0x7')]({'where':_0x2c6350[_0xd536('0x8')]?_0x2c6350[_0xd536('0x8')][_0xd536('0xa')]||null:null,'attributes':_0x2c6350[_0xd536('0x8')]?_0x2c6350[_0xd536('0x8')]['attributes']||null:null,'limit':0x1,'order':_0x2c6350[_0xd536('0x8')]?_0x2c6350[_0xd536('0x8')][_0xd536('0x3b')]||null:null,'group':db[_0xd536('0x6')][_0xd536('0x3c')],'transaction':_0x152cfd,'lock':_0x152cfd['LOCK']['UPDATE'],'include':_0x2c6350[_0xd536('0x8')]?_0x2c6350['options'][_0xd536('0xb')]?_[_0xd536('0xc')](_0x2c6350[_0xd536('0x8')][_0xd536('0xb')],function(_0x3c79b1){return{'model':db[_0x3c79b1[_0xd536('0xd')]],'as':_0x3c79b1['as'],'attributes':_0x3c79b1[_0xd536('0xe')],'include':_0x3c79b1[_0xd536('0xb')]?_[_0xd536('0xc')](_0x3c79b1['include'],function(_0x67c270){return{'model':db[_0x67c270[_0xd536('0xd')]],'as':_0x67c270['as'],'attributes':_0x67c270[_0xd536('0xe')],'include':_0x67c270['include']?_[_0xd536('0xc')](_0x67c270[_0xd536('0xb')],function(_0x142ac9){return{'model':db[_0x142ac9[_0xd536('0xd')]],'as':_0x142ac9['as'],'attributes':_0x142ac9[_0xd536('0xe')]};}):[]};}):[]};}):[]:[]})[_0xd536('0xf')](function(_0x305107){var _0x4af742=[];for(var _0x1aef67=0x0;_0x1aef67<_0x305107[_0xd536('0x2b')];_0x1aef67+=0x1){_0x4af742[_0xd536('0x2d')](_0x305107[_0x1aef67]['update'](_0x2c6350[_0xd536('0x19')],{'transaction':_0x152cfd}));}return BPromise[_0xd536('0x3d')](_0x4af742);});})[_0xd536('0xf')](function(_0x503c45){logger[_0xd536('0x10')](_0xd536('0x39'),_0x2c6350);logger[_0xd536('0x11')]('GetContactRecallMe',_0x2c6350,JSON[_0xd536('0x12')](_0x503c45));_0x3742f6(_0x503c45);})[_0xd536('0x13')](function(_0x920ae3){logger[_0xd536('0x14')](_0xd536('0x39'),_0x920ae3[_0xd536('0x15')],_0x2c6350);_0x10cef1(_0x338ff6[_0xd536('0x14')](0x1f4,_0x920ae3[_0xd536('0x15')]));});});});};exports['GetCmHopperPreview']=function(_0xeaa2ec){var _0xa5e293=this;return new Promise(function(_0x31c461,_0x54369a){db[_0xd536('0x3a')][_0xd536('0x22')]()[_0xd536('0xf')](function(_0x80c8bb){return db[_0xd536('0x6')][_0xd536('0x7')]({'raw':_0xeaa2ec[_0xd536('0x8')]?_0xeaa2ec['options']['raw']===undefined?!![]:![]:!![],'where':_0xeaa2ec['options']?_0xeaa2ec[_0xd536('0x8')]['where']||null:null,'attributes':_0xeaa2ec['options']?_0xeaa2ec[_0xd536('0x8')][_0xd536('0xe')]||null:null,'limit':_0xeaa2ec[_0xd536('0x8')]?_0xeaa2ec['options'][_0xd536('0x1c')]||null:null,'include':_0xeaa2ec['options']?_0xeaa2ec[_0xd536('0x8')][_0xd536('0xb')]?_[_0xd536('0xc')](_0xeaa2ec['options'][_0xd536('0xb')],function(_0x33d788){return{'model':db[_0x33d788['model']],'as':_0x33d788['as'],'attributes':_0x33d788['as']===_0xd536('0x26')?_[_0xd536('0x27')](_0x80c8bb):_0x33d788['attributes'],'include':_0x33d788[_0xd536('0xb')]?_[_0xd536('0xc')](_0x33d788[_0xd536('0xb')],function(_0x4bba7d){return{'model':db[_0x4bba7d[_0xd536('0xd')]],'as':_0x4bba7d['as'],'attributes':_0x4bba7d['attributes'],'include':_0x4bba7d['include']?_['map'](_0x4bba7d[_0xd536('0xb')],function(_0x12a9c2){return{'model':db[_0x12a9c2[_0xd536('0xd')]],'as':_0x12a9c2['as'],'attributes':_0x12a9c2['attributes']};}):[]};}):[]};}):[]:[]})[_0xd536('0xf')](function(_0x1dbdb9){logger[_0xd536('0x10')](_0xd536('0x5'),_0xeaa2ec);logger[_0xd536('0x11')](_0xd536('0x5'),_0xeaa2ec,JSON[_0xd536('0x12')](_0x1dbdb9));_0x31c461(_0x1dbdb9);})[_0xd536('0x13')](function(_0x479a9e){logger[_0xd536('0x14')](_0xd536('0x5'),_0x479a9e[_0xd536('0x15')],_0xeaa2ec);_0x54369a(_0xa5e293['error'](0x1f4,_0x479a9e['message']));});});});};exports['GetContactByPhone']=function(_0x73bc86){var _0x54e9fb=this;return new Promise(function(_0x2a0ab6,_0x34838d){return db[_0xd536('0x3a')][_0xd536('0x3e')]({'raw':!![],'where':{'phone':_0x73bc86['options'][_0xd536('0xa')][_0xd536('0x3f')]},'attributes':['id',_0xd536('0x40')],'order':[['id',_0xd536('0x41')]]})[_0xd536('0xf')](function(_0x46cc71){logger['info']('getContactByPhone',_0x73bc86);logger[_0xd536('0x11')](_0xd536('0x42'),_0x73bc86,JSON[_0xd536('0x12')](_0x46cc71));_0x2a0ab6(_0x46cc71);})['catch'](function(_0x194d8d){logger['error'](_0xd536('0x42'),_0x194d8d['message'],_0x73bc86);_0x34838d(_0x54e9fb[_0xd536('0x14')](0x1f4,_0x194d8d['message']));});});};exports[_0xd536('0x43')]=function(_0x510a0b){var _0x451cfa=this;return new Promise(function(_0x78a65e,_0x42ff98){return db[_0xd536('0x23')]['transaction'](function(_0x42d709){var _0x3240ac=_0x510a0b[_0xd536('0x8')]&&_0x510a0b[_0xd536('0x8')][_0xd536('0xa')]?_0x510a0b[_0xd536('0x8')][_0xd536('0xa')]:{};return db[_0xd536('0x6')][_0xd536('0x1b')](_0x510a0b[_0xd536('0x19')],{'where':_0x3240ac,'transaction':_0x42d709})[_0xd536('0xf')](function(_0x469fa6){logger[_0xd536('0x10')](_0xd536('0x43'),_0x510a0b);logger[_0xd536('0x11')](_0xd536('0x43'),_0x510a0b,JSON['stringify'](_0x469fa6));_0x78a65e(_0x469fa6);})[_0xd536('0x13')](function(_0x3ecee2){logger[_0xd536('0x14')](_0xd536('0x43'),_0x3ecee2[_0xd536('0x15')],_0x510a0b);_0x42ff98(_0x451cfa[_0xd536('0x14')](0x1f4,_0x3ecee2[_0xd536('0x15')]));});});});};exports[_0xd536('0x44')]=function(_0x15d21f){var _0x1be92c=this;var _0x4e18a4=_0x15d21f['body'][_0xd536('0xa')][_0xd536('0x45')];var _0xeaca55=_0x15d21f[_0xd536('0x19')][_0xd536('0xa')]['interval'];var _0x4ef3bc=_0x15d21f[_0xd536('0x19')]['where'][_0xd536('0x46')];return new Promise(function(_0x38e00e,_0x31c558){return db[_0xd536('0x6')][_0xd536('0x7')]({'where':{'voiceQueueId':{'$in':_0x4e18a4},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0xd536('0x23')][_0xd536('0x32')]('NOW()\x20+\x20INTERVAL\x20'+_0xeaca55+'\x20MINUTE'),'$gt':db[_0xd536('0x23')][_0xd536('0x32')](_0xd536('0x47'))}},'UserId':{'$in':_0x4ef3bc}},'include':[{'model':db[_0xd536('0x3a')],'as':'Contact'},{'model':db['User'],'as':_0xd536('0x28'),'attributes':['id',_0xd536('0x29'),_0xd536('0x2a')]},{'model':db[_0xd536('0x48')],'as':'List'}]})['then'](function(_0x43207c){if(_0x43207c[_0xd536('0x2b')]>0x0){return db['sequelize'][_0xd536('0x24')](function(_0x2d000a){return db['CmHopper']['update']({'recallmeNotifiedDate':db[_0xd536('0x23')][_0xd536('0x32')](_0xd536('0x47'))},{'where':{'id':{'$in':_[_0xd536('0xc')](_0x43207c,'id')}},'transaction':_0x2d000a})[_0xd536('0xf')](function(){_0x38e00e(_0x43207c);})['catch'](function(_0x2308d8){logger['error'](_0xd536('0x44'),_0x2308d8[_0xd536('0x15')],_0x15d21f);_0x31c558(_0x1be92c[_0xd536('0x14')](0x1f4,_0x2308d8[_0xd536('0x15')]));});})[_0xd536('0x13')](function(_0x4789c3){logger[_0xd536('0x14')]('CmHopperHandlePreviewRecallNotifications',_0x4789c3['message'],_0x15d21f);_0x31c558(_0x1be92c[_0xd536('0x14')](0x1f4,_0x4789c3[_0xd536('0x15')]));});}else{_0x38e00e(_0x43207c);}});});};
\ No newline at end of file
+var _0x495e=['CreateCmHopper','create','body','UpdateCmHopper','limit','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','GetContactDialer','CmContact','sequelize','order','LOCK','UPDATE','Contact','keys','User','name','voicePause','length','push','update','includes','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','MoveContactManagedDialer','transaction','destroy','CountReScheduled','COUNT','format','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','describe','UserId','all','GetContactRecallMe','GetCmHopperPreview','GetContactByPhone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','literal','NOW()','Agent','CmList','lodash','util','moment','bluebird','../../mysqldb','rpc','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','include','map','model','info','catch','error','message','ShowCmHopper','find','then','debug','stringify'];(function(_0x227ecf,_0x5910fe){var _0x3124fa=function(_0x356498){while(--_0x356498){_0x227ecf['push'](_0x227ecf['shift']());}};_0x3124fa(++_0x5910fe);}(_0x495e,0xd1));var _0xe495=function(_0x297eea,_0x5060be){_0x297eea=_0x297eea-0x0;var _0x1c42d2=_0x495e[_0x297eea];return _0x1c42d2;};'use strict';var _=require(_0xe495('0x0'));var util=require(_0xe495('0x1'));var moment=require(_0xe495('0x2'));var BPromise=require(_0xe495('0x3'));var db=require(_0xe495('0x4'))['db'];var logger=require('../../config/logger')(_0xe495('0x5'));exports[_0xe495('0x6')]=function(_0xfdc362){var _0x5c68bf=this;return new Promise(function(_0x57f816,_0x242618){return db[_0xe495('0x7')][_0xe495('0x8')]({'raw':_0xfdc362[_0xe495('0x9')]?_0xfdc362[_0xe495('0x9')][_0xe495('0xa')]===undefined?!![]:![]:!![],'where':_0xfdc362['options']?_0xfdc362[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0xfdc362[_0xe495('0x9')]?_0xfdc362[_0xe495('0x9')][_0xe495('0xc')]||null:null,'limit':_0xfdc362[_0xe495('0x9')]?_0xfdc362[_0xe495('0x9')]['limit']||null:null,'include':_0xfdc362[_0xe495('0x9')]?_0xfdc362[_0xe495('0x9')][_0xe495('0xd')]?_[_0xe495('0xe')](_0xfdc362[_0xe495('0x9')][_0xe495('0xd')],function(_0x56c39c){return{'model':db[_0x56c39c[_0xe495('0xf')]],'as':_0x56c39c['as'],'attributes':_0x56c39c['attributes'],'include':_0x56c39c['include']?_[_0xe495('0xe')](_0x56c39c[_0xe495('0xd')],function(_0x144f49){return{'model':db[_0x144f49[_0xe495('0xf')]],'as':_0x144f49['as'],'attributes':_0x144f49[_0xe495('0xc')],'include':_0x144f49[_0xe495('0xd')]?_[_0xe495('0xe')](_0x144f49[_0xe495('0xd')],function(_0x5c4435){return{'model':db[_0x5c4435[_0xe495('0xf')]],'as':_0x5c4435['as'],'attributes':_0x5c4435['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5ab1e6){logger[_0xe495('0x10')](_0xe495('0x6'),_0xfdc362);logger['debug'](_0xe495('0x6'),_0xfdc362,JSON['stringify'](_0x5ab1e6));_0x57f816(_0x5ab1e6);})[_0xe495('0x11')](function(_0xa71d04){logger[_0xe495('0x12')]('GetCmHopper',_0xa71d04['message'],_0xfdc362);_0x242618(_0x5c68bf[_0xe495('0x12')](0x1f4,_0xa71d04[_0xe495('0x13')]));});});};exports[_0xe495('0x14')]=function(_0x235405){var _0x40dbe3=this;return new Promise(function(_0x310354,_0x3897ed){return db[_0xe495('0x7')][_0xe495('0x15')]({'raw':_0x235405[_0xe495('0x9')]?_0x235405[_0xe495('0x9')][_0xe495('0xa')]===undefined?!![]:![]:!![],'where':_0x235405[_0xe495('0x9')]?_0x235405[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0x235405[_0xe495('0x9')]?_0x235405[_0xe495('0x9')]['attributes']||null:null,'include':_0x235405[_0xe495('0x9')]?_0x235405[_0xe495('0x9')][_0xe495('0xd')]?_[_0xe495('0xe')](_0x235405[_0xe495('0x9')][_0xe495('0xd')],function(_0x3e4886){return{'model':db[_0x3e4886[_0xe495('0xf')]],'as':_0x3e4886['as'],'attributes':_0x3e4886['attributes'],'include':_0x3e4886[_0xe495('0xd')]?_[_0xe495('0xe')](_0x3e4886[_0xe495('0xd')],function(_0x1a765f){return{'model':db[_0x1a765f[_0xe495('0xf')]],'as':_0x1a765f['as'],'attributes':_0x1a765f[_0xe495('0xc')],'include':_0x1a765f[_0xe495('0xd')]?_[_0xe495('0xe')](_0x1a765f['include'],function(_0x4b9a8f){return{'model':db[_0x4b9a8f[_0xe495('0xf')]],'as':_0x4b9a8f['as'],'attributes':_0x4b9a8f['attributes']};}):[]};}):[]};}):[]:[]})[_0xe495('0x16')](function(_0x3f190c){logger[_0xe495('0x10')](_0xe495('0x14'),_0x235405);logger[_0xe495('0x17')]('ShowCmHopper',_0x235405,JSON[_0xe495('0x18')](_0x3f190c));_0x310354(_0x3f190c);})[_0xe495('0x11')](function(_0x53bb95){logger['error'](_0xe495('0x14'),_0x53bb95[_0xe495('0x13')],_0x235405);_0x3897ed(_0x40dbe3[_0xe495('0x12')](0x1f4,_0x53bb95[_0xe495('0x13')]));});});};exports[_0xe495('0x19')]=function(_0x44c960){var _0x41313d=this;return new Promise(function(_0x14c810,_0x4bdf40){return db[_0xe495('0x7')][_0xe495('0x1a')](_0x44c960[_0xe495('0x1b')],{'raw':_0x44c960[_0xe495('0x9')]?_0x44c960[_0xe495('0x9')][_0xe495('0xa')]===undefined?!![]:![]:!![]})[_0xe495('0x16')](function(_0x57914d){logger[_0xe495('0x10')](_0xe495('0x19'),_0x44c960);logger[_0xe495('0x17')](_0xe495('0x19'),_0x44c960,JSON[_0xe495('0x18')](_0x57914d));_0x14c810(_0x57914d);})[_0xe495('0x11')](function(_0x1db2aa){logger[_0xe495('0x12')]('CreateCmHopper',_0x1db2aa['message'],_0x44c960);_0x4bdf40(_0x41313d[_0xe495('0x12')](0x1f4,_0x1db2aa['message']));});});};exports[_0xe495('0x1c')]=function(_0x24ef53){var _0x298747=this;return new Promise(function(_0x4ecc66,_0x5a6d64){return db[_0xe495('0x7')]['update'](_0x24ef53['body'],{'raw':_0x24ef53['options']?_0x24ef53[_0xe495('0x9')][_0xe495('0xa')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x24ef53[_0xe495('0x9')]?_0x24ef53[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0x24ef53[_0xe495('0x9')]?_0x24ef53[_0xe495('0x9')][_0xe495('0xc')]||null:null,'limit':_0x24ef53[_0xe495('0x9')]?_0x24ef53['options'][_0xe495('0x1d')]||null:null})[_0xe495('0x16')](function(_0x110d41){logger[_0xe495('0x10')](_0xe495('0x1c'),_0x24ef53);logger[_0xe495('0x10')](_0xe495('0x1e'),JSON[_0xe495('0x18')](_0x24ef53['options'][_0xe495('0xb')]),_0x24ef53['body'][_0xe495('0x1f')]);logger[_0xe495('0x17')](_0xe495('0x1c'),_0x24ef53,JSON[_0xe495('0x18')](_0x110d41));_0x4ecc66(_0x110d41);})[_0xe495('0x11')](function(_0x5a214c){logger['error']('UpdateCmHopper',_0x5a214c[_0xe495('0x13')],_0x24ef53);_0x5a6d64(_0x298747['error'](0x1f4,_0x5a214c[_0xe495('0x13')]));});});};exports[_0xe495('0x20')]=function(_0x539433){var _0xedee34=this;return new Promise(function(_0x664ef2,_0x1e3bcc){return db[_0xe495('0x7')]['destroy']({'where':_0x539433[_0xe495('0x9')]?_0x539433['options'][_0xe495('0xb')]||null:null})[_0xe495('0x16')](function(_0x13f537){logger[_0xe495('0x10')]('DestroyCmHopper',_0x539433);logger['debug'](_0xe495('0x20'),_0x539433,JSON[_0xe495('0x18')](_0x13f537));_0x664ef2(_0x13f537);})[_0xe495('0x11')](function(_0x48401a){logger['error'](_0xe495('0x20'),_0x48401a['message'],_0x539433);_0x1e3bcc(_0xedee34[_0xe495('0x12')](0x1f4,_0x48401a[_0xe495('0x13')]));});});};exports[_0xe495('0x21')]=function(_0x2a73c0){var _0x3f7904=this;return new Promise(function(_0x4b8dc6,_0x5279ce){return db[_0xe495('0x22')]['describe']()['then'](function(_0xd0ed6e){return db[_0xe495('0x23')]['transaction'](function(_0x10621a){return db[_0xe495('0x7')]['findAll']({'where':_0x2a73c0[_0xe495('0x9')]?_0x2a73c0[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0x2a73c0[_0xe495('0x9')]?_0x2a73c0[_0xe495('0x9')]['attributes']||null:null,'limit':_0x2a73c0[_0xe495('0x9')]?_0x2a73c0['options']['limit']||null:null,'order':_0x2a73c0[_0xe495('0x9')]?_0x2a73c0['options'][_0xe495('0x24')]||null:null,'transaction':_0x10621a,'lock':_0x10621a[_0xe495('0x25')][_0xe495('0x26')],'include':[{'model':db[_0xe495('0x22')],'as':_0xe495('0x27'),'attributes':_[_0xe495('0x28')](_0xd0ed6e)},{'model':db[_0xe495('0x29')],'as':'Agent','attributes':['id',_0xe495('0x2a'),_0xe495('0x2b')]}]})[_0xe495('0x16')](function(_0x3cc387){var _0x35ac02=[];var _0x3ec507=[];for(var _0x29fe31=0x0;_0x29fe31<_0x3cc387[_0xe495('0x2c')];_0x29fe31+=0x1){var _0x312811=_0x3cc387[_0x29fe31]['UserId'];if(_0x312811===null){_0x35ac02[_0xe495('0x2d')](_0x3cc387[_0x29fe31][_0xe495('0x2e')](_0x2a73c0[_0xe495('0x1b')],{'transaction':_0x10621a}));}else if(!_0x3ec507[_0xe495('0x2f')](_0x312811)){_0x3ec507[_0xe495('0x2d')](_0x312811);_0x35ac02[_0xe495('0x2d')](_0x3cc387[_0x29fe31][_0xe495('0x2e')](_0x2a73c0[_0xe495('0x1b')],{'transaction':_0x10621a}));}}return BPromise['all'](_0x35ac02);});})[_0xe495('0x16')](function(_0x32cfd2){logger[_0xe495('0x10')](_0xe495('0x21'),_0x2a73c0);if(_0x32cfd2['length']>0x0){logger[_0xe495('0x10')](_0xe495('0x30'),_0x32cfd2[0x0][_0xe495('0x31')]['id'],_0x32cfd2[0x0][_0xe495('0x31')]['ContactId'],_0x32cfd2[0x0][_0xe495('0x31')]['active']);}logger[_0xe495('0x17')]('GetContactDialer',_0x2a73c0,JSON['stringify'](_0x32cfd2));_0x4b8dc6(_0x32cfd2);})[_0xe495('0x11')](function(_0x5d42b6){logger['error'](_0xe495('0x21'),_0x5d42b6[_0xe495('0x13')],_0x2a73c0);_0x5279ce(_0x3f7904['error'](0x1f4,_0x5d42b6[_0xe495('0x13')]));});});});};exports[_0xe495('0x32')]=function(_0x308293){var _0x1e637a=this;return new Promise(function(_0xf7fe78,_0x430b58){return db[_0xe495('0x23')][_0xe495('0x33')](function(_0xfd5d09){return db['CmHopperFinal'][_0xe495('0x1a')](_0x308293[_0xe495('0x1b')],{'raw':_0x308293[_0xe495('0x9')]?_0x308293[_0xe495('0x9')][_0xe495('0xa')]===undefined?!![]:![]:!![],'transaction':_0xfd5d09})[_0xe495('0x16')](function(){logger[_0xe495('0x10')]('MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0xe495('0x18')](_0x308293[_0xe495('0x9')][_0xe495('0xb')]),_0x308293[_0xe495('0x9')][_0xe495('0xb')][_0xe495('0x1f')]);return db[_0xe495('0x7')][_0xe495('0x34')]({'where':_0x308293[_0xe495('0x9')]?_0x308293['options'][_0xe495('0xb')]||null:null,'transaction':_0xfd5d09});});})[_0xe495('0x16')](function(_0xc4a44b){logger[_0xe495('0x10')](_0xe495('0x32'),_0x308293);logger[_0xe495('0x17')](_0xe495('0x32'),_0x308293,JSON[_0xe495('0x18')](_0xc4a44b));_0xf7fe78(_0xc4a44b);})['catch'](function(_0x445352){logger[_0xe495('0x12')](_0xe495('0x32'),_0x445352['message'],_0x308293);_0x430b58(_0x1e637a['error'](0x1f4,_0x445352[_0xe495('0x13')]));});});};exports[_0xe495('0x35')]=function(_0x5a1dd5){var _0x46682f=this;return new Promise(function(_0x5f0322,_0x537624){return db['CmHopper']['findAll']({'raw':_0x5a1dd5[_0xe495('0x9')]?_0x5a1dd5['options'][_0xe495('0xa')]===undefined?!![]:![]:!![],'where':_0x5a1dd5[_0xe495('0x9')]?_0x5a1dd5[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':[[db['sequelize']['fn'](_0xe495('0x36'),db[_0xe495('0x23')]['fn']('IF',db['sequelize']['literal']('`scheduledat`\x20>=\x20'+util['format']('\x22%s\x22',moment()[_0xe495('0x37')](_0xe495('0x38')))+'\x20,\x201,\x20null'))),_0xe495('0x39')]]})[_0xe495('0x16')](function(_0x181571){logger[_0xe495('0x10')](_0xe495('0x35'),_0x5a1dd5);logger[_0xe495('0x17')](_0xe495('0x35'),_0x5a1dd5,JSON[_0xe495('0x18')](_0x181571));_0x5f0322(_0x181571);})['catch'](function(_0x17e8a3){logger[_0xe495('0x12')](_0xe495('0x35'),_0x17e8a3[_0xe495('0x13')],_0x5a1dd5);_0x537624(_0x46682f[_0xe495('0x12')](0x1f4,_0x17e8a3[_0xe495('0x13')]));});});};exports['GetContactRecallMe']=function(_0x157169){var _0x48d90a=this;return new Promise(function(_0x1040f1,_0x5af417){return db['CmContact'][_0xe495('0x3a')]()[_0xe495('0x16')](function(){return db['sequelize'][_0xe495('0x33')](function(_0xefde8b){return db[_0xe495('0x7')][_0xe495('0x8')]({'where':_0x157169[_0xe495('0x9')]?_0x157169[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0x157169[_0xe495('0x9')]?_0x157169['options'][_0xe495('0xc')]||null:null,'limit':0x1,'order':_0x157169[_0xe495('0x9')]?_0x157169[_0xe495('0x9')][_0xe495('0x24')]||null:null,'group':db['CmHopper'][_0xe495('0x3b')],'transaction':_0xefde8b,'lock':_0xefde8b[_0xe495('0x25')][_0xe495('0x26')],'include':_0x157169[_0xe495('0x9')]?_0x157169[_0xe495('0x9')]['include']?_[_0xe495('0xe')](_0x157169[_0xe495('0x9')][_0xe495('0xd')],function(_0xad33f0){return{'model':db[_0xad33f0[_0xe495('0xf')]],'as':_0xad33f0['as'],'attributes':_0xad33f0[_0xe495('0xc')],'include':_0xad33f0[_0xe495('0xd')]?_[_0xe495('0xe')](_0xad33f0['include'],function(_0x4bace1){return{'model':db[_0x4bace1[_0xe495('0xf')]],'as':_0x4bace1['as'],'attributes':_0x4bace1[_0xe495('0xc')],'include':_0x4bace1['include']?_[_0xe495('0xe')](_0x4bace1['include'],function(_0x83abd5){return{'model':db[_0x83abd5[_0xe495('0xf')]],'as':_0x83abd5['as'],'attributes':_0x83abd5[_0xe495('0xc')]};}):[]};}):[]};}):[]:[]})[_0xe495('0x16')](function(_0x36107c){var _0x1f2f16=[];for(var _0x1f020c=0x0;_0x1f020c<_0x36107c[_0xe495('0x2c')];_0x1f020c+=0x1){_0x1f2f16['push'](_0x36107c[_0x1f020c][_0xe495('0x2e')](_0x157169[_0xe495('0x1b')],{'transaction':_0xefde8b}));}return BPromise[_0xe495('0x3c')](_0x1f2f16);});})[_0xe495('0x16')](function(_0x558845){logger[_0xe495('0x10')](_0xe495('0x3d'),_0x157169);logger['debug'](_0xe495('0x3d'),_0x157169,JSON['stringify'](_0x558845));_0x1040f1(_0x558845);})[_0xe495('0x11')](function(_0x1837f1){logger[_0xe495('0x12')](_0xe495('0x3d'),_0x1837f1[_0xe495('0x13')],_0x157169);_0x5af417(_0x48d90a[_0xe495('0x12')](0x1f4,_0x1837f1[_0xe495('0x13')]));});});});};exports[_0xe495('0x3e')]=function(_0x1e72c1){var _0x2ef0f0=this;return new Promise(function(_0x1d5e9d,_0x4c86e9){db[_0xe495('0x22')][_0xe495('0x3a')]()['then'](function(_0x2edb63){return db[_0xe495('0x7')][_0xe495('0x8')]({'raw':_0x1e72c1[_0xe495('0x9')]?_0x1e72c1[_0xe495('0x9')]['raw']===undefined?!![]:![]:!![],'where':_0x1e72c1[_0xe495('0x9')]?_0x1e72c1[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0x1e72c1[_0xe495('0x9')]?_0x1e72c1['options'][_0xe495('0xc')]||null:null,'limit':_0x1e72c1['options']?_0x1e72c1[_0xe495('0x9')][_0xe495('0x1d')]||null:null,'include':_0x1e72c1[_0xe495('0x9')]?_0x1e72c1[_0xe495('0x9')][_0xe495('0xd')]?_['map'](_0x1e72c1[_0xe495('0x9')][_0xe495('0xd')],function(_0x11e035){return{'model':db[_0x11e035[_0xe495('0xf')]],'as':_0x11e035['as'],'attributes':_0x11e035['as']==='Contact'?_[_0xe495('0x28')](_0x2edb63):_0x11e035['attributes'],'include':_0x11e035[_0xe495('0xd')]?_[_0xe495('0xe')](_0x11e035['include'],function(_0x44b5c2){return{'model':db[_0x44b5c2['model']],'as':_0x44b5c2['as'],'attributes':_0x44b5c2[_0xe495('0xc')],'include':_0x44b5c2['include']?_[_0xe495('0xe')](_0x44b5c2[_0xe495('0xd')],function(_0x536323){return{'model':db[_0x536323[_0xe495('0xf')]],'as':_0x536323['as'],'attributes':_0x536323[_0xe495('0xc')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x21bfa1){logger[_0xe495('0x10')]('GetCmHopper',_0x1e72c1);logger[_0xe495('0x17')]('GetCmHopper',_0x1e72c1,JSON['stringify'](_0x21bfa1));_0x1d5e9d(_0x21bfa1);})['catch'](function(_0x510df7){logger[_0xe495('0x12')](_0xe495('0x6'),_0x510df7[_0xe495('0x13')],_0x1e72c1);_0x4c86e9(_0x2ef0f0[_0xe495('0x12')](0x1f4,_0x510df7[_0xe495('0x13')]));});});});};exports[_0xe495('0x3f')]=function(_0x3f05f7){var _0x47873d=this;return new Promise(function(_0x3126e2,_0x37d755){return db[_0xe495('0x22')]['findOne']({'raw':!![],'where':{'phone':_0x3f05f7['options'][_0xe495('0xb')]['phone']},'attributes':['id',_0xe495('0x40')],'order':[['id',_0xe495('0x41')]]})[_0xe495('0x16')](function(_0x3981e1){logger['info'](_0xe495('0x42'),_0x3f05f7);logger['debug']('getContactByPhone',_0x3f05f7,JSON[_0xe495('0x18')](_0x3981e1));_0x3126e2(_0x3981e1);})[_0xe495('0x11')](function(_0x1d35b3){logger[_0xe495('0x12')](_0xe495('0x42'),_0x1d35b3[_0xe495('0x13')],_0x3f05f7);_0x37d755(_0x47873d['error'](0x1f4,_0x1d35b3['message']));});});};exports[_0xe495('0x43')]=function(_0x20ebf9){var _0x1a4a4e=this;return new Promise(function(_0x3ab39c,_0x33b42b){return db[_0xe495('0x23')][_0xe495('0x33')](function(_0x5e2fb7){var _0x2a0f18=_0x20ebf9[_0xe495('0x9')]&&_0x20ebf9[_0xe495('0x9')][_0xe495('0xb')]?_0x20ebf9[_0xe495('0x9')][_0xe495('0xb')]:{};return db[_0xe495('0x7')][_0xe495('0x2e')](_0x20ebf9[_0xe495('0x1b')],{'where':_0x2a0f18,'transaction':_0x5e2fb7})[_0xe495('0x16')](function(_0x55cb37){logger['info']('ResetActiveCalls',_0x20ebf9);logger['debug'](_0xe495('0x43'),_0x20ebf9,JSON['stringify'](_0x55cb37));_0x3ab39c(_0x55cb37);})['catch'](function(_0x498b1c){logger[_0xe495('0x12')]('ResetActiveCalls',_0x498b1c[_0xe495('0x13')],_0x20ebf9);_0x33b42b(_0x1a4a4e[_0xe495('0x12')](0x1f4,_0x498b1c[_0xe495('0x13')]));});});});};exports[_0xe495('0x44')]=function(_0x21943f){var _0x3014dc=this;var _0x4238b7=_0x21943f[_0xe495('0x1b')]['where'][_0xe495('0x45')];var _0x7ee56d=_0x21943f[_0xe495('0x1b')]['where'][_0xe495('0x46')];var _0x30526d=_0x21943f[_0xe495('0x1b')]['where'][_0xe495('0x47')];return new Promise(function(_0x2f98ff,_0x336837){return db['CmHopper']['findAll']({'where':{'voiceQueueId':{'$in':_0x4238b7},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize']['literal'](_0xe495('0x48')+_0x7ee56d+_0xe495('0x49')),'$gt':db[_0xe495('0x23')][_0xe495('0x4a')](_0xe495('0x4b'))}},'UserId':{'$in':_0x30526d}},'include':[{'model':db[_0xe495('0x22')],'as':_0xe495('0x27')},{'model':db[_0xe495('0x29')],'as':_0xe495('0x4c'),'attributes':['id',_0xe495('0x2a'),'voicePause']},{'model':db[_0xe495('0x4d')],'as':'List'}]})[_0xe495('0x16')](function(_0x1f0992){if(_0x1f0992[_0xe495('0x2c')]>0x0){return db['sequelize']['transaction'](function(_0x2cb407){return db[_0xe495('0x7')][_0xe495('0x2e')]({'recallmeNotifiedDate':db['sequelize'][_0xe495('0x4a')]('NOW()')},{'where':{'id':{'$in':_[_0xe495('0xe')](_0x1f0992,'id')}},'transaction':_0x2cb407})[_0xe495('0x16')](function(){_0x2f98ff(_0x1f0992);})[_0xe495('0x11')](function(_0x44db35){logger[_0xe495('0x12')]('CmHopperHandlePreviewRecallNotifications',_0x44db35['message'],_0x21943f);_0x336837(_0x3014dc[_0xe495('0x12')](0x1f4,_0x44db35['message']));});})[_0xe495('0x11')](function(_0x5cf294){logger[_0xe495('0x12')](_0xe495('0x44'),_0x5cf294[_0xe495('0x13')],_0x21943f);_0x336837(_0x3014dc[_0xe495('0x12')](0x1f4,_0x5cf294['message']));});}else{_0x2f98ff(_0x1f0992);}});});};
\ No newline at end of file
index c68c4e1..9709c33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ed=['/:id','/:id/previewrecall','post','/preview','getPreview','/timezone','getTimezone','destroy','exports','express','Router','../../components/auth/service','get','isAuthenticated','/describe','describe','/opencontacts','getOpenContacts','/timezones','getTimezones'];(function(_0x46404e,_0x5a4df2){var _0x1a6e05=function(_0x349105){while(--_0x349105){_0x46404e['push'](_0x46404e['shift']());}};_0x1a6e05(++_0x5a4df2);}(_0x54ed,0x1ad));var _0xd54e=function(_0x15f80e,_0x28a721){_0x15f80e=_0x15f80e-0x0;var _0x4c8a21=_0x54ed[_0x15f80e];return _0x4c8a21;};'use strict';var express=require(_0xd54e('0x0'));var router=express[_0xd54e('0x1')]();var auth=require(_0xd54e('0x2'));var controller=require('./cmHopper.controller');router[_0xd54e('0x3')]('/',auth[_0xd54e('0x4')](),controller['index']);router[_0xd54e('0x3')](_0xd54e('0x5'),auth[_0xd54e('0x4')](),controller[_0xd54e('0x6')]);router[_0xd54e('0x3')](_0xd54e('0x7'),auth['isAuthenticated'](),controller[_0xd54e('0x8')]);router[_0xd54e('0x3')](_0xd54e('0x9'),auth[_0xd54e('0x4')](),controller[_0xd54e('0xa')]);router[_0xd54e('0x3')](_0xd54e('0xb'),auth[_0xd54e('0x4')](),controller['show']);router['get'](_0xd54e('0xc'),auth[_0xd54e('0x4')](),controller['getPreviewRecall']);router[_0xd54e('0xd')]('/',auth[_0xd54e('0x4')](),controller['create']);router['post'](_0xd54e('0xe'),auth[_0xd54e('0x4')](),controller[_0xd54e('0xf')]);router['post'](_0xd54e('0x10'),auth[_0xd54e('0x4')](),controller[_0xd54e('0x11')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0xd54e('0xb'),auth[_0xd54e('0x4')](),controller[_0xd54e('0x12')]);module[_0xd54e('0x13')]=router;
\ No newline at end of file
+var _0x39c9=['/preview','/timezone','getTimezone','put','update','exports','express','Router','../../components/auth/service','./cmHopper.controller','get','isAuthenticated','/describe','describe','/opencontacts','getOpenContacts','/timezones','/:id','show','/:id/previewrecall','getPreviewRecall','create'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x39c9,0x1be));var _0x939c=function(_0x2e3f40,_0x47410c){_0x2e3f40=_0x2e3f40-0x0;var _0x28abc1=_0x39c9[_0x2e3f40];return _0x28abc1;};'use strict';var express=require(_0x939c('0x0'));var router=express[_0x939c('0x1')]();var auth=require(_0x939c('0x2'));var controller=require(_0x939c('0x3'));router[_0x939c('0x4')]('/',auth[_0x939c('0x5')](),controller['index']);router[_0x939c('0x4')](_0x939c('0x6'),auth[_0x939c('0x5')](),controller[_0x939c('0x7')]);router['get'](_0x939c('0x8'),auth['isAuthenticated'](),controller[_0x939c('0x9')]);router[_0x939c('0x4')](_0x939c('0xa'),auth[_0x939c('0x5')](),controller['getTimezones']);router[_0x939c('0x4')](_0x939c('0xb'),auth['isAuthenticated'](),controller[_0x939c('0xc')]);router['get'](_0x939c('0xd'),auth[_0x939c('0x5')](),controller[_0x939c('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x939c('0xf')]);router['post'](_0x939c('0x10'),auth[_0x939c('0x5')](),controller['getPreview']);router['post'](_0x939c('0x11'),auth[_0x939c('0x5')](),controller[_0x939c('0x12')]);router[_0x939c('0x13')](_0x939c('0xb'),auth['isAuthenticated'](),controller[_0x939c('0x14')]);router['delete'](_0x939c('0xb'),auth[_0x939c('0x5')](),controller['destroy']);module[_0x939c('0x15')]=router;
\ No newline at end of file
index 912f636..0de8097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2742=['INTEGER','STRING','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize','exports'];(function(_0x300f4f,_0x55693a){var _0x5bc82c=function(_0x2e343c){while(--_0x2e343c){_0x300f4f['push'](_0x300f4f['shift']());}};_0x5bc82c(++_0x55693a);}(_0x2742,0x81));var _0x2274=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2742[_0x321bb2];return _0x9c12ed;};'use strict';var moment=require(_0x2274('0x0'));var Sequelize=require(_0x2274('0x1'));module[_0x2274('0x2')]={'CmHopperId':{'type':Sequelize[_0x2274('0x3')]},'phone':{'type':Sequelize[_0x2274('0x4')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x2274('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format'](_0x2274('0x5'))},'countbusyretry':{'type':Sequelize[_0x2274('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x2274('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x2274('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x2274('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x2274('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xebd3=['YYYY-MM-DD\x20HH:mm:ss','moment','sequelize','exports','INTEGER','DATE'];(function(_0xf266a9,_0x5aef5d){var _0x299a72=function(_0x1c0eb0){while(--_0x1c0eb0){_0xf266a9['push'](_0xf266a9['shift']());}};_0x299a72(++_0x5aef5d);}(_0xebd3,0x17b));var _0x3ebd=function(_0x310504,_0x26ad95){_0x310504=_0x310504-0x0;var _0x5b36d0=_0xebd3[_0x310504];return _0x5b36d0;};'use strict';var moment=require(_0x3ebd('0x0'));var Sequelize=require(_0x3ebd('0x1'));module[_0x3ebd('0x2')]={'CmHopperId':{'type':Sequelize[_0x3ebd('0x3')]},'phone':{'type':Sequelize['STRING'],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x3ebd('0x4')],'defaultValue':moment()['format'](_0x3ebd('0x5'))},'countbusyretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index ad2cd2d..1fb0c27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2af=['filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','user','role','CmHopperAdditionalPhones','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','Content-Range','json','apply','reject','save','then','get','UserProfileResource','destroy','error','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0xb6e2ea,_0x3b26e9){var _0x2a57bb=function(_0x2a1ac9){while(--_0x2a1ac9){_0xb6e2ea['push'](_0xb6e2ea['shift']());}};_0x2a57bb(++_0x3b26e9);}(_0xd2af,0x6b));var _0xfd2a=function(_0x266ddc,_0x45aa52){_0x266ddc=_0x266ddc-0x0;var _0x39c1d7=_0xd2af[_0x266ddc];return _0x39c1d7;};'use strict';var emlformat=require(_0xfd2a('0x0'));var rimraf=require(_0xfd2a('0x1'));var zipdir=require(_0xfd2a('0x2'));var jsonpatch=require(_0xfd2a('0x3'));var rp=require(_0xfd2a('0x4'));var moment=require(_0xfd2a('0x5'));var BPromise=require(_0xfd2a('0x6'));var Mustache=require(_0xfd2a('0x7'));var util=require(_0xfd2a('0x8'));var path=require(_0xfd2a('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfd2a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfd2a('0xb'));var squel=require(_0xfd2a('0xc'));var crypto=require(_0xfd2a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xfd2a('0xe'));var toCsv=require(_0xfd2a('0xf'));var querystring=require(_0xfd2a('0x10'));var Papa=require(_0xfd2a('0x11'));var Redis=require(_0xfd2a('0x12'));var authService=require(_0xfd2a('0x13'));var qs=require(_0xfd2a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfd2a('0x15'));var logger=require(_0xfd2a('0x16'))('api');var utils=require(_0xfd2a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xfd2a('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c2f28,_0xaa202f){_0xaa202f=_0xaa202f||0xcc;return function(_0x2c7357){if(_0x2c7357){return _0x4c2f28[_0xfd2a('0x19')](_0xaa202f);}return _0x4c2f28[_0xfd2a('0x1a')](_0xaa202f)[_0xfd2a('0x1b')]();};}function respondWithResult(_0x3ac67f,_0x347ba1){_0x347ba1=_0x347ba1||0xc8;return function(_0x14f2e7){if(_0x14f2e7){return _0x3ac67f[_0xfd2a('0x1a')](_0x347ba1)['json'](_0x14f2e7);}};}function respondWithFilteredResult(_0x2de96e,_0x5b938a){return function(_0x26f04d){if(_0x26f04d){var _0x2311df=typeof _0x5b938a['offset']===_0xfd2a('0x1c')&&typeof _0x5b938a['limit']===_0xfd2a('0x1c');var _0x4ced5b=_0x26f04d[_0xfd2a('0x1d')];var _0x31e4b5=_0x2311df?0x0:_0x5b938a['offset'];var _0x5be102=_0x2311df?_0x26f04d[_0xfd2a('0x1d')]:_0x5b938a[_0xfd2a('0x1e')]+_0x5b938a[_0xfd2a('0x1f')];var _0x19acd0;if(_0x5be102>=_0x4ced5b){_0x5be102=_0x4ced5b;_0x19acd0=0xc8;}else{_0x19acd0=0xce;}_0x2de96e[_0xfd2a('0x1a')](_0x19acd0);return _0x2de96e['set'](_0xfd2a('0x20'),_0x31e4b5+'-'+_0x5be102+'/'+_0x4ced5b)[_0xfd2a('0x21')](_0x26f04d);}return null;};}function patchUpdates(_0x5b2c1f){return function(_0x3dad41){try{jsonpatch[_0xfd2a('0x22')](_0x3dad41,_0x5b2c1f,!![]);}catch(_0x511749){return BPromise[_0xfd2a('0x23')](_0x511749);}return _0x3dad41[_0xfd2a('0x24')]();};}function saveUpdates(_0x5df606,_0x70a901){return function(_0x22d622){if(_0x22d622){return _0x22d622['update'](_0x5df606)[_0xfd2a('0x25')](function(_0x34ab2e){return _0x34ab2e;});}return null;};}function removeEntity(_0x175f82,_0x57dc33){return function(_0x2b1b17){if(_0x2b1b17){return _0x2b1b17['destroy']()[_0xfd2a('0x25')](function(){var _0x326989=_0x2b1b17[_0xfd2a('0x26')]({'plain':!![]});var _0xc8d3c1='CmHopperAdditionalPhones';return db[_0xfd2a('0x27')][_0xfd2a('0x28')]({'where':{'type':_0xc8d3c1,'resourceId':_0x326989['id']}})[_0xfd2a('0x25')](function(){return _0x2b1b17;});})['then'](function(){_0x175f82[_0xfd2a('0x1a')](0xcc)[_0xfd2a('0x1b')]();});}};}function handleEntityNotFound(_0x4ecc56,_0x3d2053){return function(_0x267464){if(!_0x267464){_0x4ecc56['sendStatus'](0x194);}return _0x267464;};}function handleError(_0x2c922d,_0x242114){_0x242114=_0x242114||0x1f4;return function(_0x1c6ccc){logger[_0xfd2a('0x29')](_0x1c6ccc[_0xfd2a('0x2a')]);if(_0x1c6ccc[_0xfd2a('0x2b')]){delete _0x1c6ccc[_0xfd2a('0x2b')];}_0x2c922d[_0xfd2a('0x1a')](_0x242114)[_0xfd2a('0x2c')](_0x1c6ccc);};}exports[_0xfd2a('0x2d')]=function(_0x3489db,_0x3dc7f0){var _0x56cf42={},_0x1a0010={},_0x365fdb={'count':0x0,'rows':[]};var _0x24a71c=_[_0xfd2a('0x2e')](db[_0xfd2a('0x2f')][_0xfd2a('0x30')],function(_0x4bd7ae){return{'name':_0x4bd7ae[_0xfd2a('0x31')],'type':_0x4bd7ae[_0xfd2a('0x32')][_0xfd2a('0x33')]};});_0x1a0010['model']=_[_0xfd2a('0x2e')](_0x24a71c,'name');_0x1a0010[_0xfd2a('0x34')]=_['keys'](_0x3489db[_0xfd2a('0x34')]);_0x1a0010['filters']=_[_0xfd2a('0x35')](_0x1a0010[_0xfd2a('0x36')],_0x1a0010[_0xfd2a('0x34')]);_0x56cf42[_0xfd2a('0x37')]=_['intersection'](_0x1a0010[_0xfd2a('0x36')],qs[_0xfd2a('0x38')](_0x3489db[_0xfd2a('0x34')]['fields']));_0x56cf42['attributes']=_0x56cf42[_0xfd2a('0x37')][_0xfd2a('0x39')]?_0x56cf42[_0xfd2a('0x37')]:_0x1a0010[_0xfd2a('0x36')];if(!_0x3489db[_0xfd2a('0x34')][_0xfd2a('0x3a')](_0xfd2a('0x3b'))){_0x56cf42[_0xfd2a('0x1f')]=qs[_0xfd2a('0x1f')](_0x3489db[_0xfd2a('0x34')][_0xfd2a('0x1f')]);_0x56cf42[_0xfd2a('0x1e')]=qs[_0xfd2a('0x1e')](_0x3489db[_0xfd2a('0x34')][_0xfd2a('0x1e')]);}_0x56cf42[_0xfd2a('0x3c')]=qs[_0xfd2a('0x3d')](_0x3489db['query'][_0xfd2a('0x3d')]);_0x56cf42[_0xfd2a('0x3e')]=qs[_0xfd2a('0x3f')](_[_0xfd2a('0x40')](_0x3489db[_0xfd2a('0x34')],_0x1a0010['filters']),_0x24a71c);if(_0x3489db['query'][_0xfd2a('0x41')]){_0x56cf42[_0xfd2a('0x3e')]=_[_0xfd2a('0x42')](_0x56cf42[_0xfd2a('0x3e')],{'$or':_[_0xfd2a('0x2e')](_0x24a71c,function(_0x5aede6){if(_0x5aede6['type']!=='VIRTUAL'){var _0x2278d1={};_0x2278d1[_0x5aede6['name']]={'$like':'%'+_0x3489db['query'][_0xfd2a('0x41')]+'%'};return _0x2278d1;}})});}_0x56cf42=_[_0xfd2a('0x42')]({},_0x56cf42,_0x3489db[_0xfd2a('0x43')]);var _0xfd42be={'where':_0x56cf42['where']};return db[_0xfd2a('0x2f')][_0xfd2a('0x1d')](_0xfd42be)[_0xfd2a('0x25')](function(_0x20d19a){_0x365fdb[_0xfd2a('0x1d')]=_0x20d19a;if(_0x3489db['query'][_0xfd2a('0x44')]){_0x56cf42[_0xfd2a('0x45')]=[{'all':!![]}];}return db[_0xfd2a('0x2f')][_0xfd2a('0x46')](_0x56cf42);})['then'](function(_0xdcf69e){_0x365fdb[_0xfd2a('0x47')]=_0xdcf69e;return _0x365fdb;})[_0xfd2a('0x25')](respondWithFilteredResult(_0x3dc7f0,_0x56cf42))[_0xfd2a('0x48')](handleError(_0x3dc7f0,null));};exports[_0xfd2a('0x49')]=function(_0x48efba,_0x5b2b5a){var _0x558bcc={'raw':!![],'where':{'id':_0x48efba[_0xfd2a('0x4a')]['id']}},_0x1931a0={};_0x1931a0['model']=_['keys'](db[_0xfd2a('0x2f')][_0xfd2a('0x30')]);_0x1931a0[_0xfd2a('0x34')]=_[_0xfd2a('0x4b')](_0x48efba[_0xfd2a('0x34')]);_0x1931a0[_0xfd2a('0x3f')]=_[_0xfd2a('0x35')](_0x1931a0['model'],_0x1931a0[_0xfd2a('0x34')]);_0x558bcc[_0xfd2a('0x37')]=_[_0xfd2a('0x35')](_0x1931a0[_0xfd2a('0x36')],qs[_0xfd2a('0x38')](_0x48efba[_0xfd2a('0x34')][_0xfd2a('0x38')]));_0x558bcc[_0xfd2a('0x37')]=_0x558bcc[_0xfd2a('0x37')][_0xfd2a('0x39')]?_0x558bcc[_0xfd2a('0x37')]:_0x1931a0['model'];if(_0x48efba['query']['includeAll']){_0x558bcc['include']=[{'all':!![]}];}_0x558bcc=_[_0xfd2a('0x42')]({},_0x558bcc,_0x48efba[_0xfd2a('0x43')]);return db[_0xfd2a('0x2f')][_0xfd2a('0x4c')](_0x558bcc)[_0xfd2a('0x25')](handleEntityNotFound(_0x5b2b5a,null))[_0xfd2a('0x25')](respondWithResult(_0x5b2b5a,null))[_0xfd2a('0x48')](handleError(_0x5b2b5a,null));};exports[_0xfd2a('0x4d')]=function(_0x36aea6,_0x1f1b39){return db[_0xfd2a('0x2f')]['create'](_0x36aea6[_0xfd2a('0x4e')],{})[_0xfd2a('0x25')](function(_0x2d6ce7){var _0x2f8ae4=_0x36aea6[_0xfd2a('0x4f')][_0xfd2a('0x26')]({'plain':!![]});if(!_0x2f8ae4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f8ae4[_0xfd2a('0x50')]===_0xfd2a('0x4f')){var _0x14b019=_0x2d6ce7[_0xfd2a('0x26')]({'plain':!![]});var _0x4d73d9=_0xfd2a('0x51');return db['UserProfileSection'][_0xfd2a('0x4c')]({'where':{'name':_0x4d73d9,'userProfileId':_0x2f8ae4[_0xfd2a('0x52')]},'raw':!![]})['then'](function(_0x441d2f){if(_0x441d2f&&_0x441d2f[_0xfd2a('0x53')]===0x0){return db[_0xfd2a('0x27')][_0xfd2a('0x4d')]({'name':_0x14b019['name'],'resourceId':_0x14b019['id'],'type':_0x441d2f[_0xfd2a('0x2b')],'sectionId':_0x441d2f['id']},{})[_0xfd2a('0x25')](function(){return _0x2d6ce7;});}else{return _0x2d6ce7;}})[_0xfd2a('0x48')](function(_0x14186d){logger[_0xfd2a('0x29')](_0xfd2a('0x54'),_0x14186d);throw _0x14186d;});}return _0x2d6ce7;})['then'](respondWithResult(_0x1f1b39,0xc9))[_0xfd2a('0x48')](handleError(_0x1f1b39,null));};exports[_0xfd2a('0x55')]=function(_0x2ddb03,_0x258023){if(_0x2ddb03[_0xfd2a('0x4e')]['id']){delete _0x2ddb03[_0xfd2a('0x4e')]['id'];}return db[_0xfd2a('0x2f')][_0xfd2a('0x4c')]({'where':{'id':_0x2ddb03[_0xfd2a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x258023,null))['then'](saveUpdates(_0x2ddb03[_0xfd2a('0x4e')],null))['then'](respondWithResult(_0x258023,null))[_0xfd2a('0x48')](handleError(_0x258023,null));};exports[_0xfd2a('0x28')]=function(_0x4bd527,_0x5389d9){return db[_0xfd2a('0x2f')]['find']({'where':{'id':_0x4bd527['params']['id']}})[_0xfd2a('0x25')](handleEntityNotFound(_0x5389d9,null))[_0xfd2a('0x25')](removeEntity(_0x5389d9,null))[_0xfd2a('0x48')](handleError(_0x5389d9,null));};
\ No newline at end of file
+var _0x7c7c=['params','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','eml-format','rimraf','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','update','destroy','then','get','CmHopperAdditionalPhones','UserProfileResource','error','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch'];(function(_0x5e5632,_0x26afd9){var _0x4e84c2=function(_0x1110ab){while(--_0x1110ab){_0x5e5632['push'](_0x5e5632['shift']());}};_0x4e84c2(++_0x26afd9);}(_0x7c7c,0x10a));var _0xc7c7=function(_0x2f4090,_0x5ae69b){_0x2f4090=_0x2f4090-0x0;var _0x111790=_0x7c7c[_0x2f4090];return _0x111790;};'use strict';var emlformat=require(_0xc7c7('0x0'));var rimraf=require(_0xc7c7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc7c7('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xc7c7('0x3'));var util=require(_0xc7c7('0x4'));var path=require(_0xc7c7('0x5'));var sox=require(_0xc7c7('0x6'));var csv=require(_0xc7c7('0x7'));var ejs=require(_0xc7c7('0x8'));var fs=require('fs');var fs_extra=require(_0xc7c7('0x9'));var _=require(_0xc7c7('0xa'));var squel=require('squel');var crypto=require(_0xc7c7('0xb'));var jsforce=require(_0xc7c7('0xc'));var deskjs=require(_0xc7c7('0xd'));var toCsv=require(_0xc7c7('0x7'));var querystring=require(_0xc7c7('0xe'));var Papa=require(_0xc7c7('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc7c7('0x10'));var as=require(_0xc7c7('0x11'));var hardwareService=require(_0xc7c7('0x12'));var logger=require(_0xc7c7('0x13'))(_0xc7c7('0x14'));var utils=require(_0xc7c7('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc7c7('0x16'));var db=require(_0xc7c7('0x17'))['db'];function respondWithStatusCode(_0x2916a3,_0x359c42){_0x359c42=_0x359c42||0xcc;return function(_0x442c7a){if(_0x442c7a){return _0x2916a3[_0xc7c7('0x18')](_0x359c42);}return _0x2916a3['status'](_0x359c42)[_0xc7c7('0x19')]();};}function respondWithResult(_0x382725,_0x1ff696){_0x1ff696=_0x1ff696||0xc8;return function(_0x4f3d1e){if(_0x4f3d1e){return _0x382725[_0xc7c7('0x1a')](_0x1ff696)[_0xc7c7('0x1b')](_0x4f3d1e);}};}function respondWithFilteredResult(_0x560775,_0x3fdb4d){return function(_0x43d9a6){if(_0x43d9a6){var _0x23666c=typeof _0x3fdb4d[_0xc7c7('0x1c')]===_0xc7c7('0x1d')&&typeof _0x3fdb4d[_0xc7c7('0x1e')]===_0xc7c7('0x1d');var _0x262b7e=_0x43d9a6['count'];var _0x470767=_0x23666c?0x0:_0x3fdb4d[_0xc7c7('0x1c')];var _0x14f0ac=_0x23666c?_0x43d9a6['count']:_0x3fdb4d[_0xc7c7('0x1c')]+_0x3fdb4d[_0xc7c7('0x1e')];var _0x4d7f89;if(_0x14f0ac>=_0x262b7e){_0x14f0ac=_0x262b7e;_0x4d7f89=0xc8;}else{_0x4d7f89=0xce;}_0x560775['status'](_0x4d7f89);return _0x560775[_0xc7c7('0x1f')](_0xc7c7('0x20'),_0x470767+'-'+_0x14f0ac+'/'+_0x262b7e)['json'](_0x43d9a6);}return null;};}function patchUpdates(_0x4557da){return function(_0x38a708){try{jsonpatch[_0xc7c7('0x21')](_0x38a708,_0x4557da,!![]);}catch(_0xce75b9){return BPromise['reject'](_0xce75b9);}return _0x38a708['save']();};}function saveUpdates(_0x127c64,_0x7f3d6b){return function(_0x2e6f3e){if(_0x2e6f3e){return _0x2e6f3e[_0xc7c7('0x22')](_0x127c64)['then'](function(_0x5202df){return _0x5202df;});}return null;};}function removeEntity(_0x5dcf4b,_0x2917d8){return function(_0x4fd465){if(_0x4fd465){return _0x4fd465[_0xc7c7('0x23')]()[_0xc7c7('0x24')](function(){var _0x6f1b27=_0x4fd465[_0xc7c7('0x25')]({'plain':!![]});var _0x24e3f9=_0xc7c7('0x26');return db[_0xc7c7('0x27')][_0xc7c7('0x23')]({'where':{'type':_0x24e3f9,'resourceId':_0x6f1b27['id']}})['then'](function(){return _0x4fd465;});})['then'](function(){_0x5dcf4b['status'](0xcc)[_0xc7c7('0x19')]();});}};}function handleEntityNotFound(_0x499c9e,_0x1b3e70){return function(_0x5c4ca1){if(!_0x5c4ca1){_0x499c9e[_0xc7c7('0x18')](0x194);}return _0x5c4ca1;};}function handleError(_0x40639e,_0x596328){_0x596328=_0x596328||0x1f4;return function(_0x3594bb){logger[_0xc7c7('0x28')](_0x3594bb[_0xc7c7('0x29')]);if(_0x3594bb[_0xc7c7('0x2a')]){delete _0x3594bb['name'];}_0x40639e[_0xc7c7('0x1a')](_0x596328)[_0xc7c7('0x2b')](_0x3594bb);};}exports[_0xc7c7('0x2c')]=function(_0x1fa9ca,_0xfd1706){var _0x420de0={},_0x1232c1={},_0x5e1653={'count':0x0,'rows':[]};var _0x4e26e4=_[_0xc7c7('0x2d')](db[_0xc7c7('0x2e')][_0xc7c7('0x2f')],function(_0x1a7831){return{'name':_0x1a7831[_0xc7c7('0x30')],'type':_0x1a7831[_0xc7c7('0x31')]['key']};});_0x1232c1[_0xc7c7('0x32')]=_[_0xc7c7('0x2d')](_0x4e26e4,_0xc7c7('0x2a'));_0x1232c1[_0xc7c7('0x33')]=_[_0xc7c7('0x34')](_0x1fa9ca[_0xc7c7('0x33')]);_0x1232c1[_0xc7c7('0x35')]=_[_0xc7c7('0x36')](_0x1232c1[_0xc7c7('0x32')],_0x1232c1[_0xc7c7('0x33')]);_0x420de0[_0xc7c7('0x37')]=_[_0xc7c7('0x36')](_0x1232c1[_0xc7c7('0x32')],qs['fields'](_0x1fa9ca[_0xc7c7('0x33')][_0xc7c7('0x38')]));_0x420de0[_0xc7c7('0x37')]=_0x420de0[_0xc7c7('0x37')][_0xc7c7('0x39')]?_0x420de0['attributes']:_0x1232c1[_0xc7c7('0x32')];if(!_0x1fa9ca['query'][_0xc7c7('0x3a')](_0xc7c7('0x3b'))){_0x420de0[_0xc7c7('0x1e')]=qs['limit'](_0x1fa9ca[_0xc7c7('0x33')][_0xc7c7('0x1e')]);_0x420de0[_0xc7c7('0x1c')]=qs[_0xc7c7('0x1c')](_0x1fa9ca['query'][_0xc7c7('0x1c')]);}_0x420de0[_0xc7c7('0x3c')]=qs[_0xc7c7('0x3d')](_0x1fa9ca[_0xc7c7('0x33')][_0xc7c7('0x3d')]);_0x420de0[_0xc7c7('0x3e')]=qs[_0xc7c7('0x35')](_[_0xc7c7('0x3f')](_0x1fa9ca[_0xc7c7('0x33')],_0x1232c1[_0xc7c7('0x35')]),_0x4e26e4);if(_0x1fa9ca[_0xc7c7('0x33')][_0xc7c7('0x40')]){_0x420de0[_0xc7c7('0x3e')]=_[_0xc7c7('0x41')](_0x420de0[_0xc7c7('0x3e')],{'$or':_['map'](_0x4e26e4,function(_0x251a0d){if(_0x251a0d[_0xc7c7('0x31')]!==_0xc7c7('0x42')){var _0x56526d={};_0x56526d[_0x251a0d['name']]={'$like':'%'+_0x1fa9ca[_0xc7c7('0x33')]['filter']+'%'};return _0x56526d;}})});}_0x420de0=_['merge']({},_0x420de0,_0x1fa9ca[_0xc7c7('0x43')]);var _0x4a543c={'where':_0x420de0['where']};return db['CmHopperAdditionalPhone'][_0xc7c7('0x44')](_0x4a543c)[_0xc7c7('0x24')](function(_0x4b41e8){_0x5e1653[_0xc7c7('0x44')]=_0x4b41e8;if(_0x1fa9ca[_0xc7c7('0x33')][_0xc7c7('0x45')]){_0x420de0[_0xc7c7('0x46')]=[{'all':!![]}];}return db[_0xc7c7('0x2e')][_0xc7c7('0x47')](_0x420de0);})[_0xc7c7('0x24')](function(_0x49a7d0){_0x5e1653[_0xc7c7('0x48')]=_0x49a7d0;return _0x5e1653;})[_0xc7c7('0x24')](respondWithFilteredResult(_0xfd1706,_0x420de0))[_0xc7c7('0x49')](handleError(_0xfd1706,null));};exports['show']=function(_0x238bc9,_0x131c15){var _0x1d82cf={'raw':!![],'where':{'id':_0x238bc9[_0xc7c7('0x4a')]['id']}},_0x444177={};_0x444177[_0xc7c7('0x32')]=_[_0xc7c7('0x34')](db[_0xc7c7('0x2e')][_0xc7c7('0x2f')]);_0x444177[_0xc7c7('0x33')]=_[_0xc7c7('0x34')](_0x238bc9[_0xc7c7('0x33')]);_0x444177[_0xc7c7('0x35')]=_['intersection'](_0x444177[_0xc7c7('0x32')],_0x444177[_0xc7c7('0x33')]);_0x1d82cf[_0xc7c7('0x37')]=_[_0xc7c7('0x36')](_0x444177[_0xc7c7('0x32')],qs[_0xc7c7('0x38')](_0x238bc9['query'][_0xc7c7('0x38')]));_0x1d82cf[_0xc7c7('0x37')]=_0x1d82cf[_0xc7c7('0x37')][_0xc7c7('0x39')]?_0x1d82cf[_0xc7c7('0x37')]:_0x444177['model'];if(_0x238bc9[_0xc7c7('0x33')][_0xc7c7('0x45')]){_0x1d82cf[_0xc7c7('0x46')]=[{'all':!![]}];}_0x1d82cf=_['merge']({},_0x1d82cf,_0x238bc9['options']);return db[_0xc7c7('0x2e')][_0xc7c7('0x4b')](_0x1d82cf)[_0xc7c7('0x24')](handleEntityNotFound(_0x131c15,null))[_0xc7c7('0x24')](respondWithResult(_0x131c15,null))['catch'](handleError(_0x131c15,null));};exports[_0xc7c7('0x4c')]=function(_0x25523a,_0x40281b){return db[_0xc7c7('0x2e')][_0xc7c7('0x4c')](_0x25523a[_0xc7c7('0x4d')],{})[_0xc7c7('0x24')](function(_0x4c0eeb){var _0x4fb61a=_0x25523a[_0xc7c7('0x4e')][_0xc7c7('0x25')]({'plain':!![]});if(!_0x4fb61a)throw new Error(_0xc7c7('0x4f'));if(_0x4fb61a[_0xc7c7('0x50')]===_0xc7c7('0x4e')){var _0x19cf01=_0x4c0eeb[_0xc7c7('0x25')]({'plain':!![]});var _0x1c06d0='CmHopperAdditionalPhones';return db[_0xc7c7('0x51')][_0xc7c7('0x4b')]({'where':{'name':_0x1c06d0,'userProfileId':_0x4fb61a[_0xc7c7('0x52')]},'raw':!![]})[_0xc7c7('0x24')](function(_0x2e7157){if(_0x2e7157&&_0x2e7157[_0xc7c7('0x53')]===0x0){return db[_0xc7c7('0x27')][_0xc7c7('0x4c')]({'name':_0x19cf01['name'],'resourceId':_0x19cf01['id'],'type':_0x2e7157[_0xc7c7('0x2a')],'sectionId':_0x2e7157['id']},{})['then'](function(){return _0x4c0eeb;});}else{return _0x4c0eeb;}})['catch'](function(_0x3e5f66){logger[_0xc7c7('0x28')](_0xc7c7('0x54'),_0x3e5f66);throw _0x3e5f66;});}return _0x4c0eeb;})['then'](respondWithResult(_0x40281b,0xc9))['catch'](handleError(_0x40281b,null));};exports['update']=function(_0x475927,_0x1dc469){if(_0x475927[_0xc7c7('0x4d')]['id']){delete _0x475927[_0xc7c7('0x4d')]['id'];}return db[_0xc7c7('0x2e')][_0xc7c7('0x4b')]({'where':{'id':_0x475927[_0xc7c7('0x4a')]['id']}})[_0xc7c7('0x24')](handleEntityNotFound(_0x1dc469,null))['then'](saveUpdates(_0x475927[_0xc7c7('0x4d')],null))[_0xc7c7('0x24')](respondWithResult(_0x1dc469,null))[_0xc7c7('0x49')](handleError(_0x1dc469,null));};exports['destroy']=function(_0x46a595,_0x41f083){return db[_0xc7c7('0x2e')][_0xc7c7('0x4b')]({'where':{'id':_0x46a595[_0xc7c7('0x4a')]['id']}})['then'](handleEntityNotFound(_0x41f083,null))[_0xc7c7('0x24')](removeEntity(_0x41f083,null))[_0xc7c7('0x49')](handleError(_0x41f083,null));};
\ No newline at end of file
index ec3a159..f04881c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb73=['cm_hopper_additional_phones','lodash','moment','path','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','define'];(function(_0x466bfd,_0x56f4bb){var _0x29293d=function(_0x47298b){while(--_0x47298b){_0x466bfd['push'](_0x466bfd['shift']());}};_0x29293d(++_0x56f4bb);}(_0xcb73,0xf9));var _0x3cb7=function(_0x344b54,_0x4c8fb5){_0x344b54=_0x344b54-0x0;var _0x1d9812=_0xcb73[_0x344b54];return _0x1d9812;};'use strict';var _=require(_0x3cb7('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x3cb7('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3cb7('0x2'));var rimraf=require('rimraf');var config=require(_0x3cb7('0x3'));var attributes=require(_0x3cb7('0x4'));module[_0x3cb7('0x5')]=function(_0x3510af,_0x2dcf1c){return _0x3510af[_0x3cb7('0x6')]('CmHopperAdditionalPhone',attributes,{'tableName':_0x3cb7('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd843=['cm_hopper_additional_phones','lodash','util','api','request-promise','path','rimraf','../../config/environment','CmHopperAdditionalPhone'];(function(_0x2a723e,_0x61bb43){var _0x48a0e1=function(_0x470e57){while(--_0x470e57){_0x2a723e['push'](_0x2a723e['shift']());}};_0x48a0e1(++_0x61bb43);}(_0xd843,0x172));var _0x3d84=function(_0xa72345,_0x1fd304){_0xa72345=_0xa72345-0x0;var _0xbc82fb=_0xd843[_0xa72345];return _0xbc82fb;};'use strict';var _=require(_0x3d84('0x0'));var util=require(_0x3d84('0x1'));var logger=require('../../config/logger')(_0x3d84('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3d84('0x3'));var fs=require('fs');var path=require(_0x3d84('0x4'));var rimraf=require(_0x3d84('0x5'));var config=require(_0x3d84('0x6'));var attributes=require('./cmHopperAdditionalPhone.attributes');module['exports']=function(_0x351cc2,_0x5d21e){return _0x351cc2['define'](_0x3d84('0x7'),attributes,{'tableName':_0x3d84('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be32a44..009de5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2c2=['countnosuchnumberretry','countmachineretry','SwapAdditionalPhones','duration','waitTime','scheduledat','add','minutes','isNil','createdAt','updatedAt','phone','sequelize','transaction','update','IncrementPreviewCounters','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countagentrejectretry','entity','dialGlobalMaxRetry','CmHopperAdditionalPhone'];(function(_0x326aa7,_0x12dceb){var _0x3955b2=function(_0x1fc290){while(--_0x1fc290){_0x326aa7['push'](_0x326aa7['shift']());}};_0x3955b2(++_0x12dceb);}(_0xf2c2,0x132));var _0x2f2c=function(_0x57913b,_0x41bb78){_0x57913b=_0x57913b-0x0;var _0x5ce491=_0xf2c2[_0x57913b];return _0x5ce491;};'use strict';var _=require(_0x2f2c('0x0'));var util=require(_0x2f2c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2f2c('0x2'));var fs=require('fs');var Redis=require(_0x2f2c('0x3'));var db=require(_0x2f2c('0x4'))['db'];var utils=require(_0x2f2c('0x5'));var logger=require(_0x2f2c('0x6'))(_0x2f2c('0x7'));var config=require('../../config/environment');var jayson=require(_0x2f2c('0x8'));var client=jayson[_0x2f2c('0x9')][_0x2f2c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x485bfd,_0x1d2092,_0x5134e8){return new BPromise(function(_0x47c357,_0x19c5ce){return client[_0x2f2c('0xb')](_0x485bfd,_0x5134e8)[_0x2f2c('0xc')](function(_0x519cfe){logger[_0x2f2c('0xd')](_0x2f2c('0xe'),_0x1d2092,_0x2f2c('0xf'));logger[_0x2f2c('0x10')]('CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s',_0x1d2092,'request\x20sent',JSON[_0x2f2c('0x11')](_0x519cfe));if(_0x519cfe[_0x2f2c('0x12')]){if(_0x519cfe[_0x2f2c('0x12')][_0x2f2c('0x13')]===0x1f4){logger[_0x2f2c('0x12')](_0x2f2c('0xe'),_0x1d2092,_0x519cfe['error']['message']);return _0x19c5ce(_0x519cfe[_0x2f2c('0x12')][_0x2f2c('0x14')]);}logger[_0x2f2c('0x12')](_0x2f2c('0xe'),_0x1d2092,_0x519cfe[_0x2f2c('0x12')][_0x2f2c('0x14')]);return _0x47c357(_0x519cfe[_0x2f2c('0x12')][_0x2f2c('0x14')]);}else{logger[_0x2f2c('0xd')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x1d2092,_0x2f2c('0xf'));_0x47c357(_0x519cfe[_0x2f2c('0x15')][_0x2f2c('0x14')]);}})[_0x2f2c('0x16')](function(_0x3f36c6){logger[_0x2f2c('0x12')](_0x2f2c('0xe'),_0x1d2092,_0x3f36c6);_0x19c5ce(_0x3f36c6);});});}exports[_0x2f2c('0x17')]=function(_0x4e1350){var _0x52c187=this;return new Promise(function(_0x235cbf,_0x930f8e){return db[_0x2f2c('0x18')][_0x2f2c('0x19')]({'raw':!![],'where':{'ContactId':_0x4e1350[_0x2f2c('0x1a')][_0x2f2c('0x1b')],'ListId':_0x4e1350['body'][_0x2f2c('0x1c')],'VoiceQueueId':_0x4e1350[_0x2f2c('0x1a')][_0x2f2c('0x1d')]===undefined?null:_0x4e1350[_0x2f2c('0x1a')]['VoiceQueueId'],'CampaignId':_0x4e1350[_0x2f2c('0x1a')]['CampaignId']===undefined?null:_0x4e1350[_0x2f2c('0x1a')][_0x2f2c('0x1e')]}})[_0x2f2c('0xc')](function(_0x4ce150){if(_0x4ce150!=null){return db['CmHopperAdditionalPhone'][_0x2f2c('0x19')]({'raw':!![],'where':{'CmHopperId':_0x4ce150['id'],'OrderBy':{'$gt':_0x4ce150[_0x2f2c('0x1f')]}},'order':[[_0x2f2c('0x1f'),_0x2f2c('0x20')]]})[_0x2f2c('0xc')](function(_0x74d3ef){var _0x584d48=0x0;if(_0x74d3ef){if(_0x74d3ef[_0x2f2c('0x21')]+_0x74d3ef[_0x2f2c('0x22')]+_0x74d3ef[_0x2f2c('0x23')]+_0x74d3ef['countnosuchnumberretry']+_0x74d3ef[_0x2f2c('0x24')]+_0x74d3ef[_0x2f2c('0x25')]+_0x74d3ef['countmachineretry']+_0x74d3ef[_0x2f2c('0x26')]<_0x4e1350[_0x2f2c('0x27')][_0x2f2c('0x28')])_0x584d48=0x1;_0x235cbf({'additional':_0x584d48});}else{return db[_0x2f2c('0x29')][_0x2f2c('0x19')]({'raw':!![],'where':{'CmHopperId':_0x4ce150['id']},'order':[[_0x2f2c('0x1f'),'ASC']]})[_0x2f2c('0xc')](function(_0x458050){var _0x16ee0a=0x0;if(_0x458050){if(_0x458050[_0x2f2c('0x21')]+_0x458050[_0x2f2c('0x22')]+_0x458050[_0x2f2c('0x23')]+_0x458050[_0x2f2c('0x2a')]+_0x458050[_0x2f2c('0x24')]+_0x458050[_0x2f2c('0x25')]+_0x458050[_0x2f2c('0x2b')]+_0x458050[_0x2f2c('0x26')]<_0x4e1350[_0x2f2c('0x27')][_0x2f2c('0x28')])_0x16ee0a=0x1;_0x235cbf({'additional':_0x16ee0a});}else{_0x235cbf({'additional':0x0});}})[_0x2f2c('0x16')](function(_0x2fb406){logger['error'](_0x2f2c('0x17'),_0x2fb406[_0x2f2c('0x14')]);_0x930f8e(_0x52c187[_0x2f2c('0x12')](0x1f4,_0x2fb406[_0x2f2c('0x14')]));});}})[_0x2f2c('0x16')](function(_0x3bcb5f){logger[_0x2f2c('0x12')](_0x2f2c('0x17'),_0x3bcb5f[_0x2f2c('0x14')]);_0x930f8e(_0x52c187['error'](0x1f4,_0x3bcb5f[_0x2f2c('0x14')]));});}else _0x235cbf({'additional':0x0});});});};exports[_0x2f2c('0x2c')]=function(_0x493168){var _0x493e31=this;return new Promise(function(_0x3ab714,_0x3e4568){return db[_0x2f2c('0x18')]['findOne']({'raw':!![],'where':{'ContactId':_0x493168['body'][_0x2f2c('0x1b')],'ListId':_0x493168[_0x2f2c('0x1a')][_0x2f2c('0x1c')],'VoiceQueueId':_0x493168[_0x2f2c('0x1a')][_0x2f2c('0x1d')]===undefined?null:_0x493168[_0x2f2c('0x1a')][_0x2f2c('0x1d')],'CampaignId':_0x493168[_0x2f2c('0x1a')]['CampaignId']===undefined?null:_0x493168[_0x2f2c('0x1a')][_0x2f2c('0x1e')]}})[_0x2f2c('0xc')](function(_0x2c4f6f){if(_0x2c4f6f!=null){return db['CmHopperAdditionalPhone']['findOne']({'raw':!![],'where':{'CmHopperId':_0x2c4f6f['id'],'OrderBy':{'$gte':_0x2c4f6f[_0x2f2c('0x1f')]}},'order':[[_0x2f2c('0x1f'),_0x2f2c('0x20')]]})[_0x2f2c('0xc')](function(_0x464c05){if(_0x464c05)return activateAdditionalPhone(_0x2c4f6f,_0x493168[_0x2f2c('0x1a')],_0x464c05,_0x493168[_0x2f2c('0x2d')],_0x493168[_0x2f2c('0x2e')])[_0x2f2c('0xc')](function(_0x4f977c){_0x3ab714(_0x4f977c);});else{return db['CmHopperAdditionalPhone'][_0x2f2c('0x19')]({'raw':!![],'where':{'CmHopperId':_0x2c4f6f['id']},'order':[['OrderBy',_0x2f2c('0x20')]]})[_0x2f2c('0xc')](function(_0x4071a3){if(_0x4071a3)return activateAdditionalPhone(_0x2c4f6f,_0x493168[_0x2f2c('0x1a')],_0x4071a3,_0x493168[_0x2f2c('0x2d')],_0x493168[_0x2f2c('0x2e')])['then'](function(_0x5da4f9){_0x3ab714(_0x5da4f9);});else{_0x3ab714({'id':_0x2c4f6f['id'],'phone':''});}})[_0x2f2c('0x16')](function(_0x2945de){logger['error'](_0x2f2c('0x17'),_0x2945de[_0x2f2c('0x14')]);_0x3e4568(_0x493e31['error'](0x1f4,_0x2945de[_0x2f2c('0x14')]));});}})[_0x2f2c('0x16')](function(_0x362774){logger[_0x2f2c('0x12')](_0x2f2c('0x17'),_0x362774['message']);_0x3e4568(_0x493e31[_0x2f2c('0x12')](0x1f4,_0x362774[_0x2f2c('0x14')]));});}else _0x3ab714(0x1);});});};function activateAdditionalPhone(_0xa32d96,_0x2000d9,_0x13ff1f,_0x127364,_0x960840){return new Promise(function(_0x2406d5,_0x33d225){var _0x342dd8;if(_['isNil'](_0x13ff1f['scheduledat'])){_0x13ff1f[_0x2f2c('0x2f')]=moment();}if(moment()>moment(_0x13ff1f[_0x2f2c('0x2f')])){_0x342dd8=moment()[_0x2f2c('0x30')](_0x960840||0x3,_0x2f2c('0x31'));}else{if(_0x13ff1f[_0x2f2c('0x1f')]==0x0){_0x342dd8=moment(_0x13ff1f['scheduledat']);}else{_0x342dd8=moment()[_0x2f2c('0x30')](_0x960840||0x3,'minutes');}}if(_[_0x2f2c('0x32')](_0x342dd8)){_0x342dd8=moment()['add'](_0x960840||0x3,_0x2f2c('0x31'));}var _0xeb88a8={'phone':_0xa32d96['phone'],'active':0x0,'OrderBy':_['isNil'](_0xa32d96['OrderBy'])?0x0:_0xa32d96[_0x2f2c('0x1f')],'scheduledat':moment()[_0x2f2c('0x30')](_0x127364||0x1,_0x2f2c('0x31')),'countbusyretry':_0x2000d9[_0x2f2c('0x21')],'countcongestionretry':_0x2000d9[_0x2f2c('0x22')],'countnoanswerretry':_0x2000d9['countnoanswerretry'],'countnosuchnumberretry':_0x2000d9[_0x2f2c('0x2a')],'countdropretry':_0x2000d9[_0x2f2c('0x24')],'countabandonedretry':_0x2000d9['countabandonedretry'],'countmachineretry':_0x2000d9[_0x2f2c('0x2b')],'countagentrejectretry':_0x2000d9[_0x2f2c('0x26')],'createdAt':_0x2000d9[_0x2f2c('0x33')],'updatedAt':_0x2000d9[_0x2f2c('0x34')]};var _0x5a942d={'CmHopperId':_0xa32d96['id'],'phone':_0x13ff1f[_0x2f2c('0x35')],'active':0x0,'OrderBy':_[_0x2f2c('0x32')](_0x13ff1f['OrderBy'])?0x0:_0x13ff1f['OrderBy'],'scheduledat':_0x342dd8,'countbusyretry':_0x13ff1f[_0x2f2c('0x21')],'countcongestionretry':_0x13ff1f[_0x2f2c('0x22')],'countnoanswerretry':_0x13ff1f[_0x2f2c('0x23')],'countnosuchnumberretry':_0x13ff1f[_0x2f2c('0x2a')],'countdropretry':_0x13ff1f[_0x2f2c('0x24')],'countabandonedretry':_0x13ff1f['countabandonedretry'],'countmachineretry':_0x13ff1f[_0x2f2c('0x2b')],'countagentrejectretry':_0x13ff1f[_0x2f2c('0x26')],'createdAt':_0x13ff1f[_0x2f2c('0x33')],'updatedAt':_0x13ff1f[_0x2f2c('0x34')]};return db[_0x2f2c('0x36')][_0x2f2c('0x37')](function(_0x5665ab){return db['CmHopperAdditionalPhone']['update'](_0xeb88a8,{'where':{'id':_0x13ff1f['id']}},{'transaction':_0x5665ab})[_0x2f2c('0xc')](function(){return db['CmHopper'][_0x2f2c('0x38')](_0x5a942d,{'where':{'id':_0xa32d96['id']}},{'transaction':_0x5665ab});});})[_0x2f2c('0xc')](function(_0x1a87c2){_0x2406d5({'id':_0xa32d96['id'],'phone':_0x13ff1f[_0x2f2c('0x35')]});})[_0x2f2c('0x16')](function(_0x28ac2f){logger['error']('activateAdditionalPhone',_0x28ac2f[_0x2f2c('0x14')]);_0x33d225({'error':_0x28ac2f[_0x2f2c('0x14')]});});});}exports[_0x2f2c('0x39')]=function(_0xa31455){var _0x5a46ba=this;return new Promise(function(_0x18157d,_0x903e85){return db[_0x2f2c('0x18')][_0x2f2c('0x38')](_0xa31455[_0x2f2c('0x1a')]['field'],{'where':{'id':_0xa31455['body']['id']}})['then'](function(_0x2b60ea){_0x18157d(_0x2b60ea);})[_0x2f2c('0x16')](function(_0x3b3846){logger[_0x2f2c('0x12')]('IncrementPreviewCounters',_0x3b3846[_0x2f2c('0x14')]);_0x903e85(_0x5a46ba[_0x2f2c('0x12')](0x1f4,_0x3b3846['message']));});});};
\ No newline at end of file
+var _0x1d14=['../../config/environment','jayson/promise','http','request','CmHopperAdditionalPhone,\x20%s,\x20%s','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','then','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','SwapAdditionalPhones','duration','waitTime','catch','isNil','scheduledat','add','minutes','countdropretry','createdAt','updatedAt','sequelize','transaction','update','phone','activateAdditionalPhone','IncrementPreviewCounters','field','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2a2166,_0x3a077f){var _0x3bcf50=function(_0x3f0300){while(--_0x3f0300){_0x2a2166['push'](_0x2a2166['shift']());}};_0x3bcf50(++_0x3a077f);}(_0x1d14,0x70));var _0x41d1=function(_0x164328,_0x286f2e){_0x164328=_0x164328-0x0;var _0x442302=_0x1d14[_0x164328];return _0x442302;};'use strict';var _=require(_0x41d1('0x0'));var util=require(_0x41d1('0x1'));var moment=require(_0x41d1('0x2'));var BPromise=require('bluebird');var rs=require(_0x41d1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x41d1('0x4'))['db'];var utils=require(_0x41d1('0x5'));var logger=require(_0x41d1('0x6'))(_0x41d1('0x7'));var config=require(_0x41d1('0x8'));var jayson=require(_0x41d1('0x9'));var client=jayson['client'][_0x41d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x360ce8,_0x2455cf,_0x510d8a){return new BPromise(function(_0xe945e6,_0x4d11da){return client[_0x41d1('0xb')](_0x360ce8,_0x510d8a)['then'](function(_0x49de0c){logger['info'](_0x41d1('0xc'),_0x2455cf,'request\x20sent');logger[_0x41d1('0xd')](_0x41d1('0xe'),_0x2455cf,_0x41d1('0xf'),JSON[_0x41d1('0x10')](_0x49de0c));if(_0x49de0c[_0x41d1('0x11')]){if(_0x49de0c[_0x41d1('0x11')][_0x41d1('0x12')]===0x1f4){logger['error'](_0x41d1('0xc'),_0x2455cf,_0x49de0c['error'][_0x41d1('0x13')]);return _0x4d11da(_0x49de0c[_0x41d1('0x11')]['message']);}logger[_0x41d1('0x11')](_0x41d1('0xc'),_0x2455cf,_0x49de0c[_0x41d1('0x11')][_0x41d1('0x13')]);return _0xe945e6(_0x49de0c[_0x41d1('0x11')][_0x41d1('0x13')]);}else{logger[_0x41d1('0x14')](_0x41d1('0xc'),_0x2455cf,'request\x20sent');_0xe945e6(_0x49de0c[_0x41d1('0x15')][_0x41d1('0x13')]);}})['catch'](function(_0x33da93){logger[_0x41d1('0x11')](_0x41d1('0xc'),_0x2455cf,_0x33da93);_0x4d11da(_0x33da93);});});}exports[_0x41d1('0x16')]=function(_0x3bebfb){var _0x3ae46b=this;return new Promise(function(_0x42e80a,_0x1f8b0e){return db[_0x41d1('0x17')][_0x41d1('0x18')]({'raw':!![],'where':{'ContactId':_0x3bebfb[_0x41d1('0x19')][_0x41d1('0x1a')],'ListId':_0x3bebfb[_0x41d1('0x19')][_0x41d1('0x1b')],'VoiceQueueId':_0x3bebfb[_0x41d1('0x19')][_0x41d1('0x1c')]===undefined?null:_0x3bebfb[_0x41d1('0x19')][_0x41d1('0x1c')],'CampaignId':_0x3bebfb['body'][_0x41d1('0x1d')]===undefined?null:_0x3bebfb[_0x41d1('0x19')][_0x41d1('0x1d')]}})[_0x41d1('0x1e')](function(_0x5645dc){if(_0x5645dc!=null){return db[_0x41d1('0x1f')][_0x41d1('0x18')]({'raw':!![],'where':{'CmHopperId':_0x5645dc['id'],'OrderBy':{'$gt':_0x5645dc[_0x41d1('0x20')]}},'order':[[_0x41d1('0x20'),_0x41d1('0x21')]]})[_0x41d1('0x1e')](function(_0x5d81ab){var _0x4d2c65=0x0;if(_0x5d81ab){if(_0x5d81ab[_0x41d1('0x22')]+_0x5d81ab[_0x41d1('0x23')]+_0x5d81ab[_0x41d1('0x24')]+_0x5d81ab[_0x41d1('0x25')]+_0x5d81ab['countdropretry']+_0x5d81ab[_0x41d1('0x26')]+_0x5d81ab[_0x41d1('0x27')]+_0x5d81ab[_0x41d1('0x28')]<_0x3bebfb[_0x41d1('0x29')]['dialGlobalMaxRetry'])_0x4d2c65=0x1;_0x42e80a({'additional':_0x4d2c65});}else{return db[_0x41d1('0x1f')][_0x41d1('0x18')]({'raw':!![],'where':{'CmHopperId':_0x5645dc['id']},'order':[[_0x41d1('0x20'),'ASC']]})[_0x41d1('0x1e')](function(_0x407aaf){var _0x19523f=0x0;if(_0x407aaf){if(_0x407aaf['countbusyretry']+_0x407aaf[_0x41d1('0x23')]+_0x407aaf[_0x41d1('0x24')]+_0x407aaf[_0x41d1('0x25')]+_0x407aaf['countdropretry']+_0x407aaf['countabandonedretry']+_0x407aaf[_0x41d1('0x27')]+_0x407aaf[_0x41d1('0x28')]<_0x3bebfb[_0x41d1('0x29')]['dialGlobalMaxRetry'])_0x19523f=0x1;_0x42e80a({'additional':_0x19523f});}else{_0x42e80a({'additional':0x0});}})['catch'](function(_0x2ed0f4){logger['error']('VerifyAdditionalPhones',_0x2ed0f4[_0x41d1('0x13')]);_0x1f8b0e(_0x3ae46b[_0x41d1('0x11')](0x1f4,_0x2ed0f4['message']));});}})['catch'](function(_0x453f7a){logger[_0x41d1('0x11')](_0x41d1('0x16'),_0x453f7a[_0x41d1('0x13')]);_0x1f8b0e(_0x3ae46b[_0x41d1('0x11')](0x1f4,_0x453f7a[_0x41d1('0x13')]));});}else _0x42e80a({'additional':0x0});});});};exports[_0x41d1('0x2a')]=function(_0x53cd70){var _0x5cc9dd=this;return new Promise(function(_0x2cbde0,_0x48bcf4){return db[_0x41d1('0x17')]['findOne']({'raw':!![],'where':{'ContactId':_0x53cd70[_0x41d1('0x19')][_0x41d1('0x1a')],'ListId':_0x53cd70[_0x41d1('0x19')][_0x41d1('0x1b')],'VoiceQueueId':_0x53cd70['body'][_0x41d1('0x1c')]===undefined?null:_0x53cd70[_0x41d1('0x19')][_0x41d1('0x1c')],'CampaignId':_0x53cd70['body'][_0x41d1('0x1d')]===undefined?null:_0x53cd70['body']['CampaignId']}})[_0x41d1('0x1e')](function(_0xef0af7){if(_0xef0af7!=null){return db[_0x41d1('0x1f')]['findOne']({'raw':!![],'where':{'CmHopperId':_0xef0af7['id'],'OrderBy':{'$gte':_0xef0af7[_0x41d1('0x20')]}},'order':[[_0x41d1('0x20'),_0x41d1('0x21')]]})[_0x41d1('0x1e')](function(_0x1fcac4){if(_0x1fcac4)return activateAdditionalPhone(_0xef0af7,_0x53cd70[_0x41d1('0x19')],_0x1fcac4,_0x53cd70[_0x41d1('0x2b')],_0x53cd70[_0x41d1('0x2c')])[_0x41d1('0x1e')](function(_0x1224fc){_0x2cbde0(_0x1224fc);});else{return db[_0x41d1('0x1f')]['findOne']({'raw':!![],'where':{'CmHopperId':_0xef0af7['id']},'order':[[_0x41d1('0x20'),_0x41d1('0x21')]]})[_0x41d1('0x1e')](function(_0x433bcd){if(_0x433bcd)return activateAdditionalPhone(_0xef0af7,_0x53cd70['body'],_0x433bcd,_0x53cd70['duration'],_0x53cd70[_0x41d1('0x2c')])[_0x41d1('0x1e')](function(_0x3b1615){_0x2cbde0(_0x3b1615);});else{_0x2cbde0({'id':_0xef0af7['id'],'phone':''});}})['catch'](function(_0x39b45c){logger[_0x41d1('0x11')](_0x41d1('0x16'),_0x39b45c['message']);_0x48bcf4(_0x5cc9dd[_0x41d1('0x11')](0x1f4,_0x39b45c[_0x41d1('0x13')]));});}})[_0x41d1('0x2d')](function(_0x593dfd){logger[_0x41d1('0x11')](_0x41d1('0x16'),_0x593dfd[_0x41d1('0x13')]);_0x48bcf4(_0x5cc9dd[_0x41d1('0x11')](0x1f4,_0x593dfd[_0x41d1('0x13')]));});}else _0x2cbde0(0x1);});});};function activateAdditionalPhone(_0x4552c7,_0x126331,_0x6a9ea8,_0xcabcd4,_0x133d23){return new Promise(function(_0x2f02e4,_0x5612e5){var _0x2c54a8;if(_[_0x41d1('0x2e')](_0x6a9ea8[_0x41d1('0x2f')])){_0x6a9ea8[_0x41d1('0x2f')]=moment();}if(moment()>moment(_0x6a9ea8['scheduledat'])){_0x2c54a8=moment()[_0x41d1('0x30')](_0x133d23||0x3,_0x41d1('0x31'));}else{if(_0x6a9ea8[_0x41d1('0x20')]==0x0){_0x2c54a8=moment(_0x6a9ea8[_0x41d1('0x2f')]);}else{_0x2c54a8=moment()['add'](_0x133d23||0x3,_0x41d1('0x31'));}}if(_[_0x41d1('0x2e')](_0x2c54a8)){_0x2c54a8=moment()[_0x41d1('0x30')](_0x133d23||0x3,_0x41d1('0x31'));}var _0x212b88={'phone':_0x4552c7['phone'],'active':0x0,'OrderBy':_[_0x41d1('0x2e')](_0x4552c7[_0x41d1('0x20')])?0x0:_0x4552c7[_0x41d1('0x20')],'scheduledat':moment()[_0x41d1('0x30')](_0xcabcd4||0x1,'minutes'),'countbusyretry':_0x126331[_0x41d1('0x22')],'countcongestionretry':_0x126331['countcongestionretry'],'countnoanswerretry':_0x126331[_0x41d1('0x24')],'countnosuchnumberretry':_0x126331[_0x41d1('0x25')],'countdropretry':_0x126331[_0x41d1('0x32')],'countabandonedretry':_0x126331[_0x41d1('0x26')],'countmachineretry':_0x126331[_0x41d1('0x27')],'countagentrejectretry':_0x126331['countagentrejectretry'],'createdAt':_0x126331[_0x41d1('0x33')],'updatedAt':_0x126331['updatedAt']};var _0xbf0ac9={'CmHopperId':_0x4552c7['id'],'phone':_0x6a9ea8['phone'],'active':0x0,'OrderBy':_[_0x41d1('0x2e')](_0x6a9ea8[_0x41d1('0x20')])?0x0:_0x6a9ea8[_0x41d1('0x20')],'scheduledat':_0x2c54a8,'countbusyretry':_0x6a9ea8[_0x41d1('0x22')],'countcongestionretry':_0x6a9ea8['countcongestionretry'],'countnoanswerretry':_0x6a9ea8[_0x41d1('0x24')],'countnosuchnumberretry':_0x6a9ea8[_0x41d1('0x25')],'countdropretry':_0x6a9ea8[_0x41d1('0x32')],'countabandonedretry':_0x6a9ea8['countabandonedretry'],'countmachineretry':_0x6a9ea8[_0x41d1('0x27')],'countagentrejectretry':_0x6a9ea8['countagentrejectretry'],'createdAt':_0x6a9ea8[_0x41d1('0x33')],'updatedAt':_0x6a9ea8[_0x41d1('0x34')]};return db[_0x41d1('0x35')][_0x41d1('0x36')](function(_0x5458f8){return db[_0x41d1('0x1f')]['update'](_0x212b88,{'where':{'id':_0x6a9ea8['id']}},{'transaction':_0x5458f8})[_0x41d1('0x1e')](function(){return db[_0x41d1('0x17')][_0x41d1('0x37')](_0xbf0ac9,{'where':{'id':_0x4552c7['id']}},{'transaction':_0x5458f8});});})[_0x41d1('0x1e')](function(_0x1fd905){_0x2f02e4({'id':_0x4552c7['id'],'phone':_0x6a9ea8[_0x41d1('0x38')]});})[_0x41d1('0x2d')](function(_0x23f3fc){logger[_0x41d1('0x11')](_0x41d1('0x39'),_0x23f3fc['message']);_0x5612e5({'error':_0x23f3fc[_0x41d1('0x13')]});});});}exports[_0x41d1('0x3a')]=function(_0x319b57){var _0x8a756=this;return new Promise(function(_0x4698d7,_0xc12d0b){return db['CmHopper'][_0x41d1('0x37')](_0x319b57[_0x41d1('0x19')][_0x41d1('0x3b')],{'where':{'id':_0x319b57[_0x41d1('0x19')]['id']}})['then'](function(_0x56c261){_0x4698d7(_0x56c261);})[_0x41d1('0x2d')](function(_0x3264a0){logger[_0x41d1('0x11')]('IncrementPreviewCounters',_0x3264a0[_0x41d1('0x13')]);_0xc12d0b(_0x8a756[_0x41d1('0x11')](0x1f4,_0x3264a0[_0x41d1('0x13')]));});});};
\ No newline at end of file
index 2356849..67db5bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5523=['update','delete','/:id','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','post','create'];(function(_0x594a7c,_0x168001){var _0x392474=function(_0x56a6b9){while(--_0x56a6b9){_0x594a7c['push'](_0x594a7c['shift']());}};_0x392474(++_0x168001);}(_0x5523,0x137));var _0x3552=function(_0x76cc41,_0x1e38c6){_0x76cc41=_0x76cc41-0x0;var _0x5750e5=_0x5523[_0x76cc41];return _0x5750e5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3552('0x0'));var timeout=require(_0x3552('0x1'));var express=require(_0x3552('0x2'));var router=express[_0x3552('0x3')]();var fs_extra=require(_0x3552('0x4'));var auth=require(_0x3552('0x5'));var interaction=require(_0x3552('0x6'));var config=require(_0x3552('0x7'));var controller=require(_0x3552('0x8'));router[_0x3552('0x9')]('/',auth[_0x3552('0xa')](),controller['index']);router['get']('/:id',auth[_0x3552('0xa')](),controller['show']);router[_0x3552('0xb')]('/',auth[_0x3552('0xa')](),controller[_0x3552('0xc')]);router['put']('/:id',auth[_0x3552('0xa')](),controller[_0x3552('0xd')]);router[_0x3552('0xe')](_0x3552('0xf'),auth[_0x3552('0xa')](),controller[_0x3552('0x10')]);module[_0x3552('0x11')]=router;
\ No newline at end of file
+var _0x8fa8=['../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','/:id','show','post','put','update','delete','multer','path','Router'];(function(_0x1e66af,_0x1d5167){var _0xf955bf=function(_0x584116){while(--_0x584116){_0x1e66af['push'](_0x1e66af['shift']());}};_0xf955bf(++_0x1d5167);}(_0x8fa8,0x1b0));var _0x88fa=function(_0x21231e,_0x35422b){_0x21231e=_0x21231e-0x0;var _0x57e46e=_0x8fa8[_0x21231e];return _0x57e46e;};'use strict';var multer=require(_0x88fa('0x0'));var util=require('util');var path=require(_0x88fa('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x88fa('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x88fa('0x3'));var interaction=require(_0x88fa('0x4'));var config=require(_0x88fa('0x5'));var controller=require(_0x88fa('0x6'));router[_0x88fa('0x7')]('/',auth[_0x88fa('0x8')](),controller['index']);router['get'](_0x88fa('0x9'),auth[_0x88fa('0x8')](),controller[_0x88fa('0xa')]);router[_0x88fa('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x88fa('0xc')](_0x88fa('0x9'),auth[_0x88fa('0x8')](),controller[_0x88fa('0xd')]);router[_0x88fa('0xe')]('/:id',auth[_0x88fa('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c1ad835..4418c81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc962=['contactListQueue','moment','INTEGER'];(function(_0x3c4f1f,_0x20d3ec){var _0x19cb69=function(_0x2e04bc){while(--_0x2e04bc){_0x3c4f1f['push'](_0x3c4f1f['shift']());}};_0x19cb69(++_0x20d3ec);}(_0xc962,0x6d));var _0x2c96=function(_0x18605c,_0x4ea07d){_0x18605c=_0x18605c-0x0;var _0x311817=_0xc962[_0x18605c];return _0x311817;};'use strict';var moment=require(_0x2c96('0x0'));var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0x2c96('0x1')],'unique':_0x2c96('0x2')},'ListId':{'type':Sequelize[_0x2c96('0x1')],'unique':_0x2c96('0x2')},'VoiceQueueId':{'type':Sequelize[_0x2c96('0x1')],'unique':_0x2c96('0x2')}};
\ No newline at end of file
+var _0x16cc=['STRING','INTEGER','contactListQueue','sequelize','exports'];(function(_0x3c557e,_0x464054){var _0xb68133=function(_0x5ebb13){while(--_0x5ebb13){_0x3c557e['push'](_0x3c557e['shift']());}};_0xb68133(++_0x464054);}(_0x16cc,0x120));var _0xc16c=function(_0x4e39ad,_0x5516de){_0x4e39ad=_0x4e39ad-0x0;var _0x127035=_0x16cc[_0x4e39ad];return _0x127035;};'use strict';var moment=require('moment');var Sequelize=require(_0xc16c('0x0'));module[_0xc16c('0x1')]={'phone':{'type':Sequelize[_0xc16c('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xc16c('0x3')],'unique':_0xc16c('0x4')},'ListId':{'type':Sequelize[_0xc16c('0x3')],'unique':_0xc16c('0x4')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0xc16c('0x4')}};
\ No newline at end of file
index de34791..45d6c77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fad=['fields','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','body','find','catch','describe','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','reject','save','update','then','destroy','end','stack','name','index','CmHopperBlack','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes'];(function(_0x46800d,_0x588500){var _0x3824cd=function(_0x14b132){while(--_0x14b132){_0x46800d['push'](_0x46800d['shift']());}};_0x3824cd(++_0x588500);}(_0x5fad,0x12f));var _0xd5fa=function(_0x4acf20,_0x3f4636){_0x4acf20=_0x4acf20-0x0;var _0x50eabc=_0x5fad[_0x4acf20];return _0x50eabc;};'use strict';var emlformat=require(_0xd5fa('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd5fa('0x1'));var rp=require(_0xd5fa('0x2'));var moment=require('moment');var BPromise=require(_0xd5fa('0x3'));var Mustache=require(_0xd5fa('0x4'));var util=require(_0xd5fa('0x5'));var path=require(_0xd5fa('0x6'));var sox=require(_0xd5fa('0x7'));var csv=require(_0xd5fa('0x8'));var ejs=require(_0xd5fa('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd5fa('0xa'));var crypto=require(_0xd5fa('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd5fa('0xc'));var toCsv=require(_0xd5fa('0x8'));var querystring=require(_0xd5fa('0xd'));var Papa=require(_0xd5fa('0xe'));var Redis=require(_0xd5fa('0xf'));var authService=require(_0xd5fa('0x10'));var qs=require(_0xd5fa('0x11'));var as=require(_0xd5fa('0x12'));var hardwareService=require(_0xd5fa('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xd5fa('0x14'));var licenseUtil=require(_0xd5fa('0x15'));var db=require(_0xd5fa('0x16'))['db'];function respondWithStatusCode(_0x7d5656,_0x27b953){_0x27b953=_0x27b953||0xcc;return function(_0x360386){if(_0x360386){return _0x7d5656[_0xd5fa('0x17')](_0x27b953);}return _0x7d5656[_0xd5fa('0x18')](_0x27b953)['end']();};}function respondWithResult(_0x1742ae,_0x4dae08){_0x4dae08=_0x4dae08||0xc8;return function(_0xa4a966){if(_0xa4a966){return _0x1742ae[_0xd5fa('0x18')](_0x4dae08)['json'](_0xa4a966);}};}function respondWithFilteredResult(_0x223424,_0x5f1bc0){return function(_0x17b02e){if(_0x17b02e){var _0x429458=typeof _0x5f1bc0['offset']===_0xd5fa('0x19')&&typeof _0x5f1bc0[_0xd5fa('0x1a')]===_0xd5fa('0x19');var _0x67e820=_0x17b02e[_0xd5fa('0x1b')];var _0x1c7b33=_0x429458?0x0:_0x5f1bc0[_0xd5fa('0x1c')];var _0x47839e=_0x429458?_0x17b02e['count']:_0x5f1bc0[_0xd5fa('0x1c')]+_0x5f1bc0[_0xd5fa('0x1a')];var _0x1a08db;if(_0x47839e>=_0x67e820){_0x47839e=_0x67e820;_0x1a08db=0xc8;}else{_0x1a08db=0xce;}_0x223424[_0xd5fa('0x18')](_0x1a08db);return _0x223424[_0xd5fa('0x1d')](_0xd5fa('0x1e'),_0x1c7b33+'-'+_0x47839e+'/'+_0x67e820)[_0xd5fa('0x1f')](_0x17b02e);}return null;};}function patchUpdates(_0x2c03b7){return function(_0x59d180){try{jsonpatch['apply'](_0x59d180,_0x2c03b7,!![]);}catch(_0x42fc35){return BPromise[_0xd5fa('0x20')](_0x42fc35);}return _0x59d180[_0xd5fa('0x21')]();};}function saveUpdates(_0x53e60d,_0x3d2035){return function(_0x202715){if(_0x202715){return _0x202715[_0xd5fa('0x22')](_0x53e60d)[_0xd5fa('0x23')](function(_0x27d914){return _0x27d914;});}return null;};}function removeEntity(_0x39172f,_0x43f41f){return function(_0x4988ce){if(_0x4988ce){return _0x4988ce[_0xd5fa('0x24')]()[_0xd5fa('0x23')](function(){_0x39172f[_0xd5fa('0x18')](0xcc)[_0xd5fa('0x25')]();});}};}function handleEntityNotFound(_0x5c906f,_0xbb9aff){return function(_0xf3e81d){if(!_0xf3e81d){_0x5c906f[_0xd5fa('0x17')](0x194);}return _0xf3e81d;};}function handleError(_0x281b7a,_0x1d7dff){_0x1d7dff=_0x1d7dff||0x1f4;return function(_0x30afa1){logger['error'](_0x30afa1[_0xd5fa('0x26')]);if(_0x30afa1[_0xd5fa('0x27')]){delete _0x30afa1[_0xd5fa('0x27')];}_0x281b7a['status'](_0x1d7dff)['send'](_0x30afa1);};}exports[_0xd5fa('0x28')]=function(_0x1e544c,_0x2a3de7){var _0x6e40e2={},_0x5868c5={},_0x161880={'count':0x0,'rows':[]};var _0x20caeb=_['map'](db[_0xd5fa('0x29')][_0xd5fa('0x2a')],function(_0x2b0391){return{'name':_0x2b0391['fieldName'],'type':_0x2b0391[_0xd5fa('0x2b')][_0xd5fa('0x2c')]};});_0x5868c5[_0xd5fa('0x2d')]=_[_0xd5fa('0x2e')](_0x20caeb,_0xd5fa('0x27'));_0x5868c5[_0xd5fa('0x2f')]=_[_0xd5fa('0x30')](_0x1e544c['query']);_0x5868c5[_0xd5fa('0x31')]=_[_0xd5fa('0x32')](_0x5868c5[_0xd5fa('0x2d')],_0x5868c5['query']);_0x6e40e2[_0xd5fa('0x33')]=_[_0xd5fa('0x32')](_0x5868c5[_0xd5fa('0x2d')],qs[_0xd5fa('0x34')](_0x1e544c[_0xd5fa('0x2f')][_0xd5fa('0x34')]));_0x6e40e2[_0xd5fa('0x33')]=_0x6e40e2['attributes']['length']?_0x6e40e2[_0xd5fa('0x33')]:_0x5868c5['model'];if(!_0x1e544c['query']['hasOwnProperty'](_0xd5fa('0x35'))){_0x6e40e2['limit']=qs['limit'](_0x1e544c[_0xd5fa('0x2f')][_0xd5fa('0x1a')]);_0x6e40e2[_0xd5fa('0x1c')]=qs[_0xd5fa('0x1c')](_0x1e544c[_0xd5fa('0x2f')][_0xd5fa('0x1c')]);}_0x6e40e2['order']=qs[_0xd5fa('0x36')](_0x1e544c[_0xd5fa('0x2f')]['sort']);_0x6e40e2[_0xd5fa('0x37')]=qs[_0xd5fa('0x31')](_[_0xd5fa('0x38')](_0x1e544c['query'],_0x5868c5[_0xd5fa('0x31')]),_0x20caeb);if(_0x1e544c[_0xd5fa('0x2f')]['filter']){_0x6e40e2[_0xd5fa('0x37')]=_[_0xd5fa('0x39')](_0x6e40e2[_0xd5fa('0x37')],{'$or':_[_0xd5fa('0x2e')](_0x20caeb,function(_0x586eba){if(_0x586eba['type']!==_0xd5fa('0x3a')){var _0xeb5aaf={};_0xeb5aaf[_0x586eba[_0xd5fa('0x27')]]={'$like':'%'+_0x1e544c[_0xd5fa('0x2f')]['filter']+'%'};return _0xeb5aaf;}})});}_0x6e40e2=_[_0xd5fa('0x39')]({},_0x6e40e2,_0x1e544c[_0xd5fa('0x3b')]);var _0x572431={'where':_0x6e40e2[_0xd5fa('0x37')]};return db[_0xd5fa('0x29')][_0xd5fa('0x1b')](_0x572431)[_0xd5fa('0x23')](function(_0x35bb72){_0x161880['count']=_0x35bb72;if(_0x1e544c['query'][_0xd5fa('0x3c')]){_0x6e40e2[_0xd5fa('0x3d')]=[{'all':!![]}];}return db[_0xd5fa('0x29')][_0xd5fa('0x3e')](_0x6e40e2);})[_0xd5fa('0x23')](function(_0xf4bf31){_0x161880[_0xd5fa('0x3f')]=_0xf4bf31;return _0x161880;})[_0xd5fa('0x23')](respondWithFilteredResult(_0x2a3de7,_0x6e40e2))['catch'](handleError(_0x2a3de7,null));};exports[_0xd5fa('0x40')]=function(_0x3bd75f,_0x1d5dcf){var _0x3fb1f3={'raw':!![],'where':{'id':_0x3bd75f[_0xd5fa('0x41')]['id']}},_0x570b23={};_0x570b23[_0xd5fa('0x2d')]=_['keys'](db['CmHopperBlack'][_0xd5fa('0x2a')]);_0x570b23[_0xd5fa('0x2f')]=_[_0xd5fa('0x30')](_0x3bd75f[_0xd5fa('0x2f')]);_0x570b23[_0xd5fa('0x31')]=_[_0xd5fa('0x32')](_0x570b23[_0xd5fa('0x2d')],_0x570b23[_0xd5fa('0x2f')]);_0x3fb1f3['attributes']=_[_0xd5fa('0x32')](_0x570b23[_0xd5fa('0x2d')],qs[_0xd5fa('0x34')](_0x3bd75f[_0xd5fa('0x2f')][_0xd5fa('0x34')]));_0x3fb1f3[_0xd5fa('0x33')]=_0x3fb1f3['attributes'][_0xd5fa('0x42')]?_0x3fb1f3[_0xd5fa('0x33')]:_0x570b23[_0xd5fa('0x2d')];if(_0x3bd75f[_0xd5fa('0x2f')][_0xd5fa('0x3c')]){_0x3fb1f3[_0xd5fa('0x3d')]=[{'all':!![]}];}_0x3fb1f3=_[_0xd5fa('0x39')]({},_0x3fb1f3,_0x3bd75f[_0xd5fa('0x3b')]);return db[_0xd5fa('0x29')]['find'](_0x3fb1f3)[_0xd5fa('0x23')](handleEntityNotFound(_0x1d5dcf,null))['then'](respondWithResult(_0x1d5dcf,null))['catch'](handleError(_0x1d5dcf,null));};exports[_0xd5fa('0x22')]=function(_0x445c71,_0x966b1e){if(_0x445c71[_0xd5fa('0x43')]['id']){delete _0x445c71[_0xd5fa('0x43')]['id'];}return db[_0xd5fa('0x29')][_0xd5fa('0x44')]({'where':{'id':_0x445c71[_0xd5fa('0x41')]['id']}})['then'](handleEntityNotFound(_0x966b1e,null))[_0xd5fa('0x23')](saveUpdates(_0x445c71[_0xd5fa('0x43')],null))[_0xd5fa('0x23')](respondWithResult(_0x966b1e,null))['catch'](handleError(_0x966b1e,null));};exports[_0xd5fa('0x24')]=function(_0x4e5026,_0x2caf94){return db[_0xd5fa('0x29')][_0xd5fa('0x44')]({'where':{'id':_0x4e5026[_0xd5fa('0x41')]['id']}})[_0xd5fa('0x23')](handleEntityNotFound(_0x2caf94,null))[_0xd5fa('0x23')](removeEntity(_0x2caf94,null))[_0xd5fa('0x45')](handleError(_0x2caf94,null));};exports[_0xd5fa('0x46')]=function(_0x5ab6b7,_0x2716aa){return db[_0xd5fa('0x29')][_0xd5fa('0x46')]()[_0xd5fa('0x23')](respondWithResult(_0x2716aa,null))[_0xd5fa('0x45')](handleError(_0x2716aa,null));};
\ No newline at end of file
+var _0x9e7f=['sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','status','offset','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','sendStatus','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order'];(function(_0x3cf5a3,_0x5a4492){var _0x39ba2d=function(_0x3ed989){while(--_0x3ed989){_0x3cf5a3['push'](_0x3cf5a3['shift']());}};_0x39ba2d(++_0x5a4492);}(_0x9e7f,0x17d));var _0xf9e7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9e7f[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0xf9e7('0x0'));var rimraf=require(_0xf9e7('0x1'));var zipdir=require(_0xf9e7('0x2'));var jsonpatch=require(_0xf9e7('0x3'));var rp=require(_0xf9e7('0x4'));var moment=require(_0xf9e7('0x5'));var BPromise=require(_0xf9e7('0x6'));var Mustache=require(_0xf9e7('0x7'));var util=require(_0xf9e7('0x8'));var path=require(_0xf9e7('0x9'));var sox=require('sox');var csv=require(_0xf9e7('0xa'));var ejs=require(_0xf9e7('0xb'));var fs=require('fs');var fs_extra=require(_0xf9e7('0xc'));var _=require('lodash');var squel=require(_0xf9e7('0xd'));var crypto=require(_0xf9e7('0xe'));var jsforce=require(_0xf9e7('0xf'));var deskjs=require(_0xf9e7('0x10'));var toCsv=require('to-csv');var querystring=require(_0xf9e7('0x11'));var Papa=require(_0xf9e7('0x12'));var Redis=require(_0xf9e7('0x13'));var authService=require(_0xf9e7('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf9e7('0x15'));var logger=require('../../config/logger')(_0xf9e7('0x16'));var utils=require('../../config/utils');var config=require(_0xf9e7('0x17'));var licenseUtil=require(_0xf9e7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x26983e,_0x50833f){_0x50833f=_0x50833f||0xcc;return function(_0x2217dd){if(_0x2217dd){return _0x26983e['sendStatus'](_0x50833f);}return _0x26983e[_0xf9e7('0x19')](_0x50833f)['end']();};}function respondWithResult(_0x17d84e,_0x226291){_0x226291=_0x226291||0xc8;return function(_0x1c1231){if(_0x1c1231){return _0x17d84e[_0xf9e7('0x19')](_0x226291)['json'](_0x1c1231);}};}function respondWithFilteredResult(_0x2eb997,_0x3a76ed){return function(_0x4eef8b){if(_0x4eef8b){var _0x210b25=typeof _0x3a76ed[_0xf9e7('0x1a')]==='undefined'&&typeof _0x3a76ed[_0xf9e7('0x1b')]==='undefined';var _0x5a43d1=_0x4eef8b[_0xf9e7('0x1c')];var _0x478aee=_0x210b25?0x0:_0x3a76ed[_0xf9e7('0x1a')];var _0x5cc798=_0x210b25?_0x4eef8b[_0xf9e7('0x1c')]:_0x3a76ed['offset']+_0x3a76ed['limit'];var _0x3b4f6d;if(_0x5cc798>=_0x5a43d1){_0x5cc798=_0x5a43d1;_0x3b4f6d=0xc8;}else{_0x3b4f6d=0xce;}_0x2eb997[_0xf9e7('0x19')](_0x3b4f6d);return _0x2eb997[_0xf9e7('0x1d')](_0xf9e7('0x1e'),_0x478aee+'-'+_0x5cc798+'/'+_0x5a43d1)['json'](_0x4eef8b);}return null;};}function patchUpdates(_0x520f18){return function(_0x422d91){try{jsonpatch[_0xf9e7('0x1f')](_0x422d91,_0x520f18,!![]);}catch(_0x28c0f5){return BPromise[_0xf9e7('0x20')](_0x28c0f5);}return _0x422d91[_0xf9e7('0x21')]();};}function saveUpdates(_0x378099,_0xe636ca){return function(_0x30da96){if(_0x30da96){return _0x30da96['update'](_0x378099)[_0xf9e7('0x22')](function(_0x5b0032){return _0x5b0032;});}return null;};}function removeEntity(_0x3752c9,_0x14e732){return function(_0x42465b){if(_0x42465b){return _0x42465b[_0xf9e7('0x23')]()[_0xf9e7('0x22')](function(){_0x3752c9['status'](0xcc)[_0xf9e7('0x24')]();});}};}function handleEntityNotFound(_0x2fbab1,_0xad2506){return function(_0x5e6919){if(!_0x5e6919){_0x2fbab1[_0xf9e7('0x25')](0x194);}return _0x5e6919;};}function handleError(_0x3b279a,_0x549d6e){_0x549d6e=_0x549d6e||0x1f4;return function(_0x14bf1d){logger['error'](_0x14bf1d['stack']);if(_0x14bf1d[_0xf9e7('0x26')]){delete _0x14bf1d['name'];}_0x3b279a['status'](_0x549d6e)[_0xf9e7('0x27')](_0x14bf1d);};}exports[_0xf9e7('0x28')]=function(_0x55e1a3,_0x1c7798){var _0x84dae3={},_0x2997c6={},_0x56208c={'count':0x0,'rows':[]};var _0x5bd9a4=_[_0xf9e7('0x29')](db[_0xf9e7('0x2a')][_0xf9e7('0x2b')],function(_0x96cd9f){return{'name':_0x96cd9f[_0xf9e7('0x2c')],'type':_0x96cd9f[_0xf9e7('0x2d')][_0xf9e7('0x2e')]};});_0x2997c6['model']=_[_0xf9e7('0x29')](_0x5bd9a4,_0xf9e7('0x26'));_0x2997c6[_0xf9e7('0x2f')]=_[_0xf9e7('0x30')](_0x55e1a3[_0xf9e7('0x2f')]);_0x2997c6[_0xf9e7('0x31')]=_[_0xf9e7('0x32')](_0x2997c6[_0xf9e7('0x33')],_0x2997c6[_0xf9e7('0x2f')]);_0x84dae3[_0xf9e7('0x34')]=_[_0xf9e7('0x32')](_0x2997c6[_0xf9e7('0x33')],qs['fields'](_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x35')]));_0x84dae3[_0xf9e7('0x34')]=_0x84dae3[_0xf9e7('0x34')][_0xf9e7('0x36')]?_0x84dae3[_0xf9e7('0x34')]:_0x2997c6[_0xf9e7('0x33')];if(!_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x37')]('nolimit')){_0x84dae3[_0xf9e7('0x1b')]=qs[_0xf9e7('0x1b')](_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x1b')]);_0x84dae3[_0xf9e7('0x1a')]=qs['offset'](_0x55e1a3['query'][_0xf9e7('0x1a')]);}_0x84dae3[_0xf9e7('0x38')]=qs[_0xf9e7('0x39')](_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x39')]);_0x84dae3[_0xf9e7('0x3a')]=qs[_0xf9e7('0x31')](_['pick'](_0x55e1a3[_0xf9e7('0x2f')],_0x2997c6[_0xf9e7('0x31')]),_0x5bd9a4);if(_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x3b')]){_0x84dae3[_0xf9e7('0x3a')]=_[_0xf9e7('0x3c')](_0x84dae3[_0xf9e7('0x3a')],{'$or':_[_0xf9e7('0x29')](_0x5bd9a4,function(_0x357a9b){if(_0x357a9b[_0xf9e7('0x2d')]!==_0xf9e7('0x3d')){var _0x2df45c={};_0x2df45c[_0x357a9b[_0xf9e7('0x26')]]={'$like':'%'+_0x55e1a3['query'][_0xf9e7('0x3b')]+'%'};return _0x2df45c;}})});}_0x84dae3=_[_0xf9e7('0x3c')]({},_0x84dae3,_0x55e1a3[_0xf9e7('0x3e')]);var _0xc669aa={'where':_0x84dae3[_0xf9e7('0x3a')]};return db[_0xf9e7('0x2a')][_0xf9e7('0x1c')](_0xc669aa)[_0xf9e7('0x22')](function(_0x183d34){_0x56208c[_0xf9e7('0x1c')]=_0x183d34;if(_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x3f')]){_0x84dae3[_0xf9e7('0x40')]=[{'all':!![]}];}return db[_0xf9e7('0x2a')][_0xf9e7('0x41')](_0x84dae3);})['then'](function(_0x396c12){_0x56208c[_0xf9e7('0x42')]=_0x396c12;return _0x56208c;})[_0xf9e7('0x22')](respondWithFilteredResult(_0x1c7798,_0x84dae3))[_0xf9e7('0x43')](handleError(_0x1c7798,null));};exports[_0xf9e7('0x44')]=function(_0x28b99d,_0x220b40){var _0x2045df={'raw':!![],'where':{'id':_0x28b99d[_0xf9e7('0x45')]['id']}},_0x10da17={};_0x10da17[_0xf9e7('0x33')]=_[_0xf9e7('0x30')](db[_0xf9e7('0x2a')][_0xf9e7('0x2b')]);_0x10da17['query']=_[_0xf9e7('0x30')](_0x28b99d['query']);_0x10da17['filters']=_[_0xf9e7('0x32')](_0x10da17[_0xf9e7('0x33')],_0x10da17[_0xf9e7('0x2f')]);_0x2045df[_0xf9e7('0x34')]=_['intersection'](_0x10da17['model'],qs['fields'](_0x28b99d['query'][_0xf9e7('0x35')]));_0x2045df[_0xf9e7('0x34')]=_0x2045df[_0xf9e7('0x34')]['length']?_0x2045df[_0xf9e7('0x34')]:_0x10da17[_0xf9e7('0x33')];if(_0x28b99d['query'][_0xf9e7('0x3f')]){_0x2045df[_0xf9e7('0x40')]=[{'all':!![]}];}_0x2045df=_[_0xf9e7('0x3c')]({},_0x2045df,_0x28b99d[_0xf9e7('0x3e')]);return db[_0xf9e7('0x2a')][_0xf9e7('0x46')](_0x2045df)[_0xf9e7('0x22')](handleEntityNotFound(_0x220b40,null))[_0xf9e7('0x22')](respondWithResult(_0x220b40,null))[_0xf9e7('0x43')](handleError(_0x220b40,null));};exports['update']=function(_0x3e4f40,_0x130d03){if(_0x3e4f40[_0xf9e7('0x47')]['id']){delete _0x3e4f40[_0xf9e7('0x47')]['id'];}return db['CmHopperBlack']['find']({'where':{'id':_0x3e4f40['params']['id']}})[_0xf9e7('0x22')](handleEntityNotFound(_0x130d03,null))[_0xf9e7('0x22')](saveUpdates(_0x3e4f40['body'],null))[_0xf9e7('0x22')](respondWithResult(_0x130d03,null))[_0xf9e7('0x43')](handleError(_0x130d03,null));};exports[_0xf9e7('0x23')]=function(_0x4cfef2,_0x2ed4db){return db[_0xf9e7('0x2a')][_0xf9e7('0x46')]({'where':{'id':_0x4cfef2[_0xf9e7('0x45')]['id']}})[_0xf9e7('0x22')](handleEntityNotFound(_0x2ed4db,null))[_0xf9e7('0x22')](removeEntity(_0x2ed4db,null))[_0xf9e7('0x43')](handleError(_0x2ed4db,null));};exports[_0xf9e7('0x48')]=function(_0x1295f2,_0x2d0968){return db[_0xf9e7('0x2a')][_0xf9e7('0x48')]()['then'](respondWithResult(_0x2d0968,null))[_0xf9e7('0x43')](handleError(_0x2d0968,null));};
\ No newline at end of file
index 5ece8f8..76192c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d80=['moment','request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','define','CmHopperBlack','cm_hopper_black','lodash','util'];(function(_0x109073,_0x429082){var _0x116a96=function(_0x143825){while(--_0x143825){_0x109073['push'](_0x109073['shift']());}};_0x116a96(++_0x429082);}(_0x3d80,0x76));var _0x03d8=function(_0x30805d,_0x3b9978){_0x30805d=_0x30805d-0x0;var _0x27e3b7=_0x3d80[_0x30805d];return _0x27e3b7;};'use strict';var _=require(_0x03d8('0x0'));var util=require(_0x03d8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x03d8('0x2'));var BPromise=require('bluebird');var rp=require(_0x03d8('0x3'));var fs=require('fs');var path=require(_0x03d8('0x4'));var rimraf=require(_0x03d8('0x5'));var config=require(_0x03d8('0x6'));var attributes=require(_0x03d8('0x7'));module[_0x03d8('0x8')]=function(_0x31a44b,_0x47f4f9){return _0x31a44b[_0x03d8('0x9')](_0x03d8('0xa'),attributes,{'tableName':_0x03d8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0b46=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','CmHopperBlack','util','../../config/logger'];(function(_0x36dd8e,_0x502347){var _0x527151=function(_0x1a209b){while(--_0x1a209b){_0x36dd8e['push'](_0x36dd8e['shift']());}};_0x527151(++_0x502347);}(_0x0b46,0x169));var _0x60b4=function(_0x104a84,_0x285970){_0x104a84=_0x104a84-0x0;var _0x4973ff=_0x0b46[_0x104a84];return _0x4973ff;};'use strict';var _=require('lodash');var util=require(_0x60b4('0x0'));var logger=require(_0x60b4('0x1'))(_0x60b4('0x2'));var moment=require(_0x60b4('0x3'));var BPromise=require(_0x60b4('0x4'));var rp=require(_0x60b4('0x5'));var fs=require('fs');var path=require(_0x60b4('0x6'));var rimraf=require(_0x60b4('0x7'));var config=require(_0x60b4('0x8'));var attributes=require('./cmHopperBlack.attributes');module['exports']=function(_0x31a1dc,_0x27f3f8){return _0x31a1dc[_0x60b4('0x9')](_0x60b4('0xa'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd342d1..3384770 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3107=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','CmHopperBlack,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','GetCmHopperBlack','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','UpdateCmHopperBlack','CmHopperBlack','body','DestroyCmHopperBlack','destroy','lodash','moment','bluebird'];(function(_0x5dee2a,_0x47d02a){var _0x31e98e=function(_0x48b1e9){while(--_0x48b1e9){_0x5dee2a['push'](_0x5dee2a['shift']());}};_0x31e98e(++_0x47d02a);}(_0x3107,0xbb));var _0x7310=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3107[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7310('0x0'));var util=require('util');var moment=require(_0x7310('0x1'));var BPromise=require(_0x7310('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7310('0x3'));var db=require(_0x7310('0x4'))['db'];var utils=require(_0x7310('0x5'));var logger=require(_0x7310('0x6'))(_0x7310('0x7'));var config=require(_0x7310('0x8'));var jayson=require(_0x7310('0x9'));var client=jayson[_0x7310('0xa')][_0x7310('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x212655,_0x355a9c,_0x2672d4){return new BPromise(function(_0xfead82,_0x5d8f1d){return client[_0x7310('0xc')](_0x212655,_0x2672d4)['then'](function(_0x3e8629){logger['info'](_0x7310('0xd'),_0x355a9c,'request\x20sent');logger['debug']('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x355a9c,_0x7310('0xe'),JSON[_0x7310('0xf')](_0x3e8629));if(_0x3e8629['error']){if(_0x3e8629[_0x7310('0x10')][_0x7310('0x11')]===0x1f4){logger[_0x7310('0x10')](_0x7310('0xd'),_0x355a9c,_0x3e8629[_0x7310('0x10')][_0x7310('0x12')]);return _0x5d8f1d(_0x3e8629[_0x7310('0x10')][_0x7310('0x12')]);}logger[_0x7310('0x10')]('CmHopperBlack,\x20%s,\x20%s',_0x355a9c,_0x3e8629[_0x7310('0x10')][_0x7310('0x12')]);return _0xfead82(_0x3e8629[_0x7310('0x10')]['message']);}else{logger[_0x7310('0x13')]('CmHopperBlack,\x20%s,\x20%s',_0x355a9c,_0x7310('0xe'));_0xfead82(_0x3e8629['result'][_0x7310('0x12')]);}})[_0x7310('0x14')](function(_0x24fa0c){logger[_0x7310('0x10')](_0x7310('0xd'),_0x355a9c,_0x24fa0c);_0x5d8f1d(_0x24fa0c);});});}exports[_0x7310('0x15')]=function(_0xffcaef){var _0x218f60=this;return new Promise(function(_0x164682,_0x50e39b){return db['CmHopperBlack'][_0x7310('0x16')]({'raw':_0xffcaef[_0x7310('0x17')]?_0xffcaef[_0x7310('0x17')][_0x7310('0x18')]===undefined?!![]:![]:!![],'where':_0xffcaef['options']?_0xffcaef['options'][_0x7310('0x19')]||null:null,'attributes':_0xffcaef[_0x7310('0x17')]?_0xffcaef[_0x7310('0x17')][_0x7310('0x1a')]||null:null,'limit':_0xffcaef[_0x7310('0x17')]?_0xffcaef[_0x7310('0x17')][_0x7310('0x1b')]||null:null,'include':_0xffcaef[_0x7310('0x17')]?_0xffcaef[_0x7310('0x17')][_0x7310('0x1c')]?_[_0x7310('0x1d')](_0xffcaef[_0x7310('0x17')][_0x7310('0x1c')],function(_0x1f35f9){return{'model':db[_0x1f35f9[_0x7310('0x1e')]],'as':_0x1f35f9['as'],'attributes':_0x1f35f9[_0x7310('0x1a')],'include':_0x1f35f9[_0x7310('0x1c')]?_['map'](_0x1f35f9[_0x7310('0x1c')],function(_0xbf4b5a){return{'model':db[_0xbf4b5a[_0x7310('0x1e')]],'as':_0xbf4b5a['as'],'attributes':_0xbf4b5a[_0x7310('0x1a')],'include':_0xbf4b5a[_0x7310('0x1c')]?_[_0x7310('0x1d')](_0xbf4b5a[_0x7310('0x1c')],function(_0x447007){return{'model':db[_0x447007['model']],'as':_0x447007['as'],'attributes':_0x447007[_0x7310('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x7310('0x1f')](function(_0x40e057){logger[_0x7310('0x13')]('GetCmHopperBlack',_0xffcaef);logger[_0x7310('0x20')](_0x7310('0x15'),_0xffcaef,JSON[_0x7310('0xf')](_0x40e057));_0x164682(_0x40e057);})[_0x7310('0x14')](function(_0x2bbda2){logger[_0x7310('0x10')](_0x7310('0x15'),_0x2bbda2[_0x7310('0x12')],_0xffcaef);_0x50e39b(_0x218f60[_0x7310('0x10')](0x1f4,_0x2bbda2['message']));});});};exports[_0x7310('0x21')]=function(_0xf3bb8c){var _0x9f7d8a=this;return new Promise(function(_0x598376,_0x175311){return db[_0x7310('0x22')]['update'](_0xf3bb8c[_0x7310('0x23')],{'raw':_0xf3bb8c['options']?_0xf3bb8c[_0x7310('0x17')][_0x7310('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf3bb8c[_0x7310('0x17')]?_0xf3bb8c[_0x7310('0x17')]['where']||null:null,'attributes':_0xf3bb8c['options']?_0xf3bb8c['options'][_0x7310('0x1a')]||null:null,'limit':_0xf3bb8c['options']?_0xf3bb8c[_0x7310('0x17')][_0x7310('0x1b')]||null:null})[_0x7310('0x1f')](function(_0x10a713){logger[_0x7310('0x13')](_0x7310('0x21'),_0xf3bb8c);logger[_0x7310('0x20')]('UpdateCmHopperBlack',_0xf3bb8c,JSON['stringify'](_0x10a713));_0x598376(_0x10a713);})[_0x7310('0x14')](function(_0x1ccae4){logger['error'](_0x7310('0x21'),_0x1ccae4['message'],_0xf3bb8c);_0x175311(_0x9f7d8a[_0x7310('0x10')](0x1f4,_0x1ccae4[_0x7310('0x12')]));});});};exports[_0x7310('0x24')]=function(_0x1b05c3){var _0x57241a=this;return new Promise(function(_0x2b248c,_0x1765f8){return db['CmHopperBlack'][_0x7310('0x25')]({'where':_0x1b05c3['options']?_0x1b05c3[_0x7310('0x17')][_0x7310('0x19')]||null:null})['then'](function(_0x1968e2){logger['info']('DestroyCmHopperBlack',_0x1b05c3);logger[_0x7310('0x20')](_0x7310('0x24'),_0x1b05c3,JSON[_0x7310('0xf')](_0x1968e2));_0x2b248c(_0x1968e2);})[_0x7310('0x14')](function(_0x477bb0){logger[_0x7310('0x10')](_0x7310('0x24'),_0x477bb0[_0x7310('0x12')],_0x1b05c3);_0x1765f8(_0x57241a[_0x7310('0x10')](0x1f4,_0x477bb0['message']));});});};
\ No newline at end of file
+var _0xeb60=['CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','GetCmHopperBlack','findAll','options','where','limit','include','map','model','attributes','UpdateCmHopperBlack','update','body','raw','catch','DestroyCmHopperBlack','CmHopperBlack','destroy','debug','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info','CmHopperBlack,\x20%s,\x20%s'];(function(_0x5a2b55,_0x37acd0){var _0x388b10=function(_0x214bb2){while(--_0x214bb2){_0x5a2b55['push'](_0x5a2b55['shift']());}};_0x388b10(++_0x37acd0);}(_0xeb60,0x88));var _0x0eb6=function(_0x5da5d7,_0x196b51){_0x5da5d7=_0x5da5d7-0x0;var _0x5ddc2c=_0xeb60[_0x5da5d7];return _0x5ddc2c;};'use strict';var _=require(_0x0eb6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0eb6('0x1'));var rs=require(_0x0eb6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0eb6('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0eb6('0x4'))(_0x0eb6('0x5'));var config=require(_0x0eb6('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0eb6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2beb57,_0x3a2c18,_0x23a4e1){return new BPromise(function(_0x41c906,_0x4a934f){return client[_0x0eb6('0x8')](_0x2beb57,_0x23a4e1)[_0x0eb6('0x9')](function(_0x5b03f7){logger[_0x0eb6('0xa')](_0x0eb6('0xb'),_0x3a2c18,'request\x20sent');logger['debug'](_0x0eb6('0xc'),_0x3a2c18,'request\x20sent',JSON[_0x0eb6('0xd')](_0x5b03f7));if(_0x5b03f7[_0x0eb6('0xe')]){if(_0x5b03f7[_0x0eb6('0xe')][_0x0eb6('0xf')]===0x1f4){logger[_0x0eb6('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x3a2c18,_0x5b03f7['error']['message']);return _0x4a934f(_0x5b03f7['error']['message']);}logger[_0x0eb6('0xe')](_0x0eb6('0xb'),_0x3a2c18,_0x5b03f7[_0x0eb6('0xe')]['message']);return _0x41c906(_0x5b03f7['error'][_0x0eb6('0x10')]);}else{logger[_0x0eb6('0xa')]('CmHopperBlack,\x20%s,\x20%s',_0x3a2c18,_0x0eb6('0x11'));_0x41c906(_0x5b03f7[_0x0eb6('0x12')]['message']);}})['catch'](function(_0x21c6ad){logger[_0x0eb6('0xe')](_0x0eb6('0xb'),_0x3a2c18,_0x21c6ad);_0x4a934f(_0x21c6ad);});});}exports[_0x0eb6('0x13')]=function(_0x8d4aa5){var _0x20ee10=this;return new Promise(function(_0x33cf7c,_0x421fae){return db['CmHopperBlack'][_0x0eb6('0x14')]({'raw':_0x8d4aa5[_0x0eb6('0x15')]?_0x8d4aa5[_0x0eb6('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x8d4aa5[_0x0eb6('0x15')]?_0x8d4aa5[_0x0eb6('0x15')][_0x0eb6('0x16')]||null:null,'attributes':_0x8d4aa5[_0x0eb6('0x15')]?_0x8d4aa5[_0x0eb6('0x15')]['attributes']||null:null,'limit':_0x8d4aa5[_0x0eb6('0x15')]?_0x8d4aa5[_0x0eb6('0x15')][_0x0eb6('0x17')]||null:null,'include':_0x8d4aa5[_0x0eb6('0x15')]?_0x8d4aa5[_0x0eb6('0x15')][_0x0eb6('0x18')]?_[_0x0eb6('0x19')](_0x8d4aa5['options'][_0x0eb6('0x18')],function(_0x3196c0){return{'model':db[_0x3196c0[_0x0eb6('0x1a')]],'as':_0x3196c0['as'],'attributes':_0x3196c0[_0x0eb6('0x1b')],'include':_0x3196c0[_0x0eb6('0x18')]?_[_0x0eb6('0x19')](_0x3196c0[_0x0eb6('0x18')],function(_0x4195c4){return{'model':db[_0x4195c4[_0x0eb6('0x1a')]],'as':_0x4195c4['as'],'attributes':_0x4195c4[_0x0eb6('0x1b')],'include':_0x4195c4['include']?_[_0x0eb6('0x19')](_0x4195c4[_0x0eb6('0x18')],function(_0x3d1d7a){return{'model':db[_0x3d1d7a[_0x0eb6('0x1a')]],'as':_0x3d1d7a['as'],'attributes':_0x3d1d7a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x40f751){logger[_0x0eb6('0xa')]('GetCmHopperBlack',_0x8d4aa5);logger['debug'](_0x0eb6('0x13'),_0x8d4aa5,JSON[_0x0eb6('0xd')](_0x40f751));_0x33cf7c(_0x40f751);})['catch'](function(_0x20a61e){logger[_0x0eb6('0xe')](_0x0eb6('0x13'),_0x20a61e[_0x0eb6('0x10')],_0x8d4aa5);_0x421fae(_0x20ee10[_0x0eb6('0xe')](0x1f4,_0x20a61e[_0x0eb6('0x10')]));});});};exports[_0x0eb6('0x1c')]=function(_0x20e7d5){var _0x449c81=this;return new Promise(function(_0x7a461a,_0x58ca18){return db['CmHopperBlack'][_0x0eb6('0x1d')](_0x20e7d5[_0x0eb6('0x1e')],{'raw':_0x20e7d5[_0x0eb6('0x15')]?_0x20e7d5[_0x0eb6('0x15')][_0x0eb6('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20e7d5[_0x0eb6('0x15')]?_0x20e7d5['options'][_0x0eb6('0x16')]||null:null,'attributes':_0x20e7d5[_0x0eb6('0x15')]?_0x20e7d5[_0x0eb6('0x15')]['attributes']||null:null,'limit':_0x20e7d5[_0x0eb6('0x15')]?_0x20e7d5['options'][_0x0eb6('0x17')]||null:null})[_0x0eb6('0x9')](function(_0x3fa28a){logger[_0x0eb6('0xa')](_0x0eb6('0x1c'),_0x20e7d5);logger['debug']('UpdateCmHopperBlack',_0x20e7d5,JSON[_0x0eb6('0xd')](_0x3fa28a));_0x7a461a(_0x3fa28a);})[_0x0eb6('0x20')](function(_0xa45f3e){logger['error']('UpdateCmHopperBlack',_0xa45f3e['message'],_0x20e7d5);_0x58ca18(_0x449c81[_0x0eb6('0xe')](0x1f4,_0xa45f3e['message']));});});};exports[_0x0eb6('0x21')]=function(_0x518960){var _0x4bf908=this;return new Promise(function(_0x15be55,_0x49b2e9){return db[_0x0eb6('0x22')][_0x0eb6('0x23')]({'where':_0x518960[_0x0eb6('0x15')]?_0x518960['options'][_0x0eb6('0x16')]||null:null})[_0x0eb6('0x9')](function(_0x87a4a8){logger[_0x0eb6('0xa')](_0x0eb6('0x21'),_0x518960);logger[_0x0eb6('0x24')](_0x0eb6('0x21'),_0x518960,JSON['stringify'](_0x87a4a8));_0x15be55(_0x87a4a8);})[_0x0eb6('0x20')](function(_0x35d522){logger[_0x0eb6('0xe')]('DestroyCmHopperBlack',_0x35d522[_0x0eb6('0x10')],_0x518960);_0x49b2e9(_0x4bf908['error'](0x1f4,_0x35d522[_0x0eb6('0x10')]));});});};
\ No newline at end of file
index 6f9c850..2c4331f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b0=['update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','describe','/:id','put'];(function(_0x426711,_0x12264c){var _0x592991=function(_0x564614){while(--_0x564614){_0x426711['push'](_0x426711['shift']());}};_0x592991(++_0x12264c);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x6b71d7,_0x266a51){_0x6b71d7=_0x6b71d7-0x0;var _0x15f2f9=_0xa6b0[_0x6b71d7];return _0x15f2f9;};'use strict';var multer=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0a6b('0x2'));var router=express[_0x0a6b('0x3')]();var fs_extra=require(_0x0a6b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0a6b('0x5'));var config=require(_0x0a6b('0x6'));var controller=require(_0x0a6b('0x7'));router[_0x0a6b('0x8')]('/',auth[_0x0a6b('0x9')](),controller[_0x0a6b('0xa')]);router[_0x0a6b('0x8')](_0x0a6b('0xb'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0xc')]);router[_0x0a6b('0x8')](_0x0a6b('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x0a6b('0xe')](_0x0a6b('0xd'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0xf')]);router[_0x0a6b('0x10')](_0x0a6b('0xd'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0x11')]);module[_0x0a6b('0x12')]=router;
\ No newline at end of file
+var _0x4745=['isAuthenticated','/:id','show','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index'];(function(_0x430140,_0x3c915b){var _0x569416=function(_0x3126a3){while(--_0x3126a3){_0x430140['push'](_0x430140['shift']());}};_0x569416(++_0x3c915b);}(_0x4745,0x1e7));var _0x5474=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x4745[_0x4dbaad];return _0x226c72;};'use strict';var multer=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var path=require(_0x5474('0x2'));var timeout=require(_0x5474('0x3'));var express=require(_0x5474('0x4'));var router=express[_0x5474('0x5')]();var fs_extra=require(_0x5474('0x6'));var auth=require(_0x5474('0x7'));var interaction=require(_0x5474('0x8'));var config=require(_0x5474('0x9'));var controller=require(_0x5474('0xa'));router[_0x5474('0xb')]('/',auth['isAuthenticated'](),controller[_0x5474('0xc')]);router[_0x5474('0xb')]('/describe',auth[_0x5474('0xd')](),controller['describe']);router[_0x5474('0xb')](_0x5474('0xe'),auth['isAuthenticated'](),controller[_0x5474('0xf')]);router[_0x5474('0x10')](_0x5474('0xe'),auth[_0x5474('0xd')](),controller[_0x5474('0x11')]);router[_0x5474('0x12')](_0x5474('0xe'),auth[_0x5474('0xd')](),controller['destroy']);module[_0x5474('0x13')]=router;
\ No newline at end of file
index e46cd95..d8a480f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d65=['seconds','BOOLEAN','sequelize','moment','exports','INTEGER','DATE','STRING','getDataValue','setDataValue','followuptime'];(function(_0x5d92ce,_0x5c4f15){var _0x2e1cf5=function(_0x44c83a){while(--_0x44c83a){_0x5d92ce['push'](_0x5d92ce['shift']());}};_0x2e1cf5(++_0x5c4f15);}(_0x2d65,0x18e));var _0x52d6=function(_0x266411,_0x2615a8){_0x266411=_0x266411-0x0;var _0x14d2ea=_0x2d65[_0x266411];return _0x14d2ea;};'use strict';var Sequelize=require(_0x52d6('0x0'));var moment=require(_0x52d6('0x1'));module[_0x52d6('0x2')]={'state':{'type':Sequelize[_0x52d6('0x3')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x52d6('0x4')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x52d6('0x5')]},'originatecalleridnum':{'type':Sequelize[_0x52d6('0x5')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x52d6('0x5')]},'calleridname':{'type':Sequelize[_0x52d6('0x5')]},'starttime':{'type':Sequelize[_0x52d6('0x4')]},'responsetime':{'type':Sequelize[_0x52d6('0x4')]},'answertime':{'type':Sequelize[_0x52d6('0x4')]},'droptime':{'type':Sequelize[_0x52d6('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x52d6('0x5')]},'campaign':{'type':Sequelize[_0x52d6('0x5')]},'campaigntype':{'type':Sequelize[_0x52d6('0x5')]},'membername':{'type':Sequelize[_0x52d6('0x5')]},'reason':{'type':Sequelize[_0x52d6('0x5')]},'disposition':{'type':Sequelize[_0x52d6('0x5')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x52d6('0x5')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x3ef41b){var _0x365c22=this[_0x52d6('0x6')]('endtime');if(_0x365c22&&_0x3ef41b){this[_0x52d6('0x7')](_0x52d6('0x8'),moment(_0x3ef41b)['diff'](moment(_0x365c22),_0x52d6('0x9')));}}},'amd':{'type':Sequelize[_0x52d6('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0x52d6('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x52d6('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x52d6('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x52d6('0x4')]},'callback':{'type':Sequelize[_0x52d6('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x52d6('0x4')]},'deleted':{'type':Sequelize[_0x52d6('0x5')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x52d6('0x4')]},'recallme':{'type':Sequelize[_0x52d6('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x52d6('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x52d6('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5871=['seconds','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','followuptime','diff'];(function(_0x29ce14,_0x334166){var _0x48f289=function(_0x288d11){while(--_0x288d11){_0x29ce14['push'](_0x29ce14['shift']());}};_0x48f289(++_0x334166);}(_0x5871,0x1e3));var _0x1587=function(_0x267abd,_0x43f3a8){_0x267abd=_0x267abd-0x0;var _0x8e9562=_0x5871[_0x267abd];return _0x8e9562;};'use strict';var Sequelize=require(_0x1587('0x0'));var moment=require(_0x1587('0x1'));module[_0x1587('0x2')]={'state':{'type':Sequelize[_0x1587('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x1587('0x4')]},'scheduledat':{'type':Sequelize[_0x1587('0x5')]},'countbusyretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x1587('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x1587('0x4')]},'originatecalleridname':{'type':Sequelize[_0x1587('0x4')]},'calleridnum':{'type':Sequelize[_0x1587('0x4')]},'calleridname':{'type':Sequelize[_0x1587('0x4')]},'starttime':{'type':Sequelize[_0x1587('0x5')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x1587('0x5')]},'droptime':{'type':Sequelize[_0x1587('0x5')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x1587('0x4')]},'campaign':{'type':Sequelize[_0x1587('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x1587('0x4')]},'disposition':{'type':Sequelize[_0x1587('0x4')]},'secondDisposition':{'type':Sequelize[_0x1587('0x4')]},'thirdDisposition':{'type':Sequelize[_0x1587('0x4')]},'dispositionat':{'type':Sequelize[_0x1587('0x5')],'set':function(_0x5d5a20){var _0x365a70=this[_0x1587('0x6')](_0x1587('0x7'));if(_0x365a70&&_0x5d5a20){this[_0x1587('0x8')](_0x1587('0x9'),moment(_0x5d5a20)[_0x1587('0xa')](moment(_0x365a70),_0x1587('0xb')));}}},'amd':{'type':Sequelize[_0x1587('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0x1587('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x1587('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x1587('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x1587('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x1587('0x5')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x1587('0x5')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 6347b77..ec7bdfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','error','stack','name','index','map','CmHopperFinal','fieldName','model','query','keys','filters','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','then','includeAll','include','findAll','rows','catch','params','rawAttributes','intersection','length','options','find','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','COUNT','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','reCallContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','fromQuery','phone','scheduledAt','ContactId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','ANY_VALUE(ContactId)','ListId','NOW()','from','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','cm_hopper','calleridnum','state\x20=\x204','moveContactsIvrCampaignHopperFinal','Campaign','CampaignId','select','ANY_VALUE(ListId)','CampaignId\x20=\x20?','cm_hopper_final','group','checkContactHopper','CmHopper','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring'];(function(_0x4d43b8,_0x5a083f){var _0x1b4851=function(_0x2d3dc1){while(--_0x2d3dc1){_0x4d43b8['push'](_0x4d43b8['shift']());}};_0x1b4851(++_0x5a083f);}(_0x9536,0x179));var _0x6953=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x9536[_0x1035c1];return _0x308d67;};'use strict';var emlformat=require(_0x6953('0x0'));var rimraf=require(_0x6953('0x1'));var zipdir=require(_0x6953('0x2'));var jsonpatch=require(_0x6953('0x3'));var rp=require('request-promise');var moment=require(_0x6953('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6953('0x5'));var util=require(_0x6953('0x6'));var path=require(_0x6953('0x7'));var sox=require(_0x6953('0x8'));var csv=require(_0x6953('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6953('0xa'));var _=require(_0x6953('0xb'));var squel=require(_0x6953('0xc'));var crypto=require(_0x6953('0xd'));var jsforce=require(_0x6953('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6953('0x9'));var querystring=require(_0x6953('0xf'));var Papa=require(_0x6953('0x10'));var Redis=require('ioredis');var authService=require(_0x6953('0x11'));var qs=require(_0x6953('0x12'));var as=require(_0x6953('0x13'));var hardwareService=require(_0x6953('0x14'));var logger=require(_0x6953('0x15'))(_0x6953('0x16'));var utils=require(_0x6953('0x17'));var config=require(_0x6953('0x18'));var licenseUtil=require(_0x6953('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x358388,_0x513dd0){_0x513dd0=_0x513dd0||0xcc;return function(_0x8de91e){if(_0x8de91e){return _0x358388[_0x6953('0x1a')](_0x513dd0);}return _0x358388[_0x6953('0x1b')](_0x513dd0)[_0x6953('0x1c')]();};}function respondWithResult(_0x1b5221,_0x244713){_0x244713=_0x244713||0xc8;return function(_0x175fa9){if(_0x175fa9){return _0x1b5221[_0x6953('0x1b')](_0x244713)[_0x6953('0x1d')](_0x175fa9);}};}function respondWithFilteredResult(_0x31d182,_0xae5515){return function(_0x548473){if(_0x548473){var _0x5f49db=typeof _0xae5515[_0x6953('0x1e')]===_0x6953('0x1f')&&typeof _0xae5515[_0x6953('0x20')]===_0x6953('0x1f');var _0x510d46=_0x548473[_0x6953('0x21')];var _0x2da771=_0x5f49db?0x0:_0xae5515['offset'];var _0x10858a=_0x5f49db?_0x548473[_0x6953('0x21')]:_0xae5515[_0x6953('0x1e')]+_0xae5515[_0x6953('0x20')];var _0xc714d3;if(_0x10858a>=_0x510d46){_0x10858a=_0x510d46;_0xc714d3=0xc8;}else{_0xc714d3=0xce;}_0x31d182['status'](_0xc714d3);return _0x31d182[_0x6953('0x22')](_0x6953('0x23'),_0x2da771+'-'+_0x10858a+'/'+_0x510d46)[_0x6953('0x1d')](_0x548473);}return null;};}function patchUpdates(_0x2ba433){return function(_0x41f021){try{jsonpatch['apply'](_0x41f021,_0x2ba433,!![]);}catch(_0xf96d07){return BPromise[_0x6953('0x24')](_0xf96d07);}return _0x41f021['save']();};}function saveUpdates(_0x317979,_0x40c9d1){return function(_0xb92529){if(_0xb92529){return _0xb92529[_0x6953('0x25')](_0x317979)['then'](function(_0x37f339){return _0x37f339;});}return null;};}function removeEntity(_0x231cb2,_0x2a7f6a){return function(_0x508ea7){if(_0x508ea7){return _0x508ea7['destroy']()['then'](function(){_0x231cb2[_0x6953('0x1b')](0xcc)[_0x6953('0x1c')]();});}};}function handleEntityNotFound(_0x550be4,_0x1a32f4){return function(_0x587df0){if(!_0x587df0){_0x550be4[_0x6953('0x1a')](0x194);}return _0x587df0;};}function handleError(_0x2bf39b,_0xcdbce8){_0xcdbce8=_0xcdbce8||0x1f4;return function(_0x2cc01e){logger[_0x6953('0x26')](_0x2cc01e[_0x6953('0x27')]);if(_0x2cc01e['name']){delete _0x2cc01e[_0x6953('0x28')];}_0x2bf39b[_0x6953('0x1b')](_0xcdbce8)['send'](_0x2cc01e);};}exports[_0x6953('0x29')]=function(_0x4af39d,_0x173b3c){var _0x3b1175={},_0x426c7c={},_0x4b0325={'count':0x0,'rows':[]};var _0x131992=_[_0x6953('0x2a')](db[_0x6953('0x2b')]['rawAttributes'],function(_0x4c49fc){return{'name':_0x4c49fc[_0x6953('0x2c')],'type':_0x4c49fc['type']['key']};});_0x426c7c[_0x6953('0x2d')]=_[_0x6953('0x2a')](_0x131992,_0x6953('0x28'));_0x426c7c[_0x6953('0x2e')]=_[_0x6953('0x2f')](_0x4af39d['query']);_0x426c7c[_0x6953('0x30')]=_['intersection'](_0x426c7c[_0x6953('0x2d')],_0x426c7c[_0x6953('0x2e')]);_0x3b1175['attributes']=_['intersection'](_0x426c7c[_0x6953('0x2d')],qs[_0x6953('0x31')](_0x4af39d[_0x6953('0x2e')]['fields']));_0x3b1175[_0x6953('0x32')]=_0x3b1175['attributes']['length']?_0x3b1175['attributes']:_0x426c7c['model'];if(!_0x4af39d[_0x6953('0x2e')][_0x6953('0x33')](_0x6953('0x34'))){_0x3b1175[_0x6953('0x20')]=qs[_0x6953('0x20')](_0x4af39d[_0x6953('0x2e')]['limit']);_0x3b1175[_0x6953('0x1e')]=qs['offset'](_0x4af39d[_0x6953('0x2e')]['offset']);}_0x3b1175[_0x6953('0x35')]=qs[_0x6953('0x36')](_0x4af39d[_0x6953('0x2e')][_0x6953('0x36')]);_0x3b1175['where']=qs[_0x6953('0x30')](_[_0x6953('0x37')](_0x4af39d[_0x6953('0x2e')],_0x426c7c[_0x6953('0x30')]),_0x131992);if(_0x4af39d[_0x6953('0x2e')][_0x6953('0x38')]){_0x3b1175[_0x6953('0x39')]=_[_0x6953('0x3a')](_0x3b1175[_0x6953('0x39')],{'$or':_[_0x6953('0x2a')](_0x131992,function(_0x2d9d81){if(_0x2d9d81['type']!==_0x6953('0x3b')){var _0x3c03ab={};_0x3c03ab[_0x2d9d81[_0x6953('0x28')]]={'$like':'%'+_0x4af39d['query']['filter']+'%'};return _0x3c03ab;}})});}_0x3b1175=_[_0x6953('0x3a')]({},_0x3b1175,_0x4af39d['options']);var _0x5abaf2={'where':_0x3b1175[_0x6953('0x39')]};return db[_0x6953('0x2b')]['count'](_0x5abaf2)[_0x6953('0x3c')](function(_0x263728){_0x4b0325[_0x6953('0x21')]=_0x263728;if(_0x4af39d[_0x6953('0x2e')][_0x6953('0x3d')]){_0x3b1175[_0x6953('0x3e')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x6953('0x3f')](_0x3b1175);})[_0x6953('0x3c')](function(_0x30a27a){_0x4b0325[_0x6953('0x40')]=_0x30a27a;return _0x4b0325;})[_0x6953('0x3c')](respondWithFilteredResult(_0x173b3c,_0x3b1175))[_0x6953('0x41')](handleError(_0x173b3c,null));};exports['show']=function(_0x5a40de,_0xeef91a){var _0x54d7c2={'raw':!![],'where':{'id':_0x5a40de[_0x6953('0x42')]['id']}},_0x588ff8={};_0x588ff8[_0x6953('0x2d')]=_[_0x6953('0x2f')](db[_0x6953('0x2b')][_0x6953('0x43')]);_0x588ff8['query']=_['keys'](_0x5a40de[_0x6953('0x2e')]);_0x588ff8[_0x6953('0x30')]=_['intersection'](_0x588ff8[_0x6953('0x2d')],_0x588ff8['query']);_0x54d7c2[_0x6953('0x32')]=_[_0x6953('0x44')](_0x588ff8[_0x6953('0x2d')],qs[_0x6953('0x31')](_0x5a40de['query'][_0x6953('0x31')]));_0x54d7c2[_0x6953('0x32')]=_0x54d7c2['attributes'][_0x6953('0x45')]?_0x54d7c2[_0x6953('0x32')]:_0x588ff8[_0x6953('0x2d')];if(_0x5a40de[_0x6953('0x2e')][_0x6953('0x3d')]){_0x54d7c2[_0x6953('0x3e')]=[{'all':!![]}];}_0x54d7c2=_[_0x6953('0x3a')]({},_0x54d7c2,_0x5a40de[_0x6953('0x46')]);return db[_0x6953('0x2b')][_0x6953('0x47')](_0x54d7c2)[_0x6953('0x3c')](handleEntityNotFound(_0xeef91a,null))['then'](respondWithResult(_0xeef91a,null))[_0x6953('0x41')](handleError(_0xeef91a,null));};exports['describe']=function(_0x15c142,_0x1d5979){return db[_0x6953('0x2b')]['describe']()[_0x6953('0x3c')](respondWithResult(_0x1d5979,null))[_0x6953('0x41')](handleError(_0x1d5979,null));};exports['update']=function(_0x525145,_0xbf5b61){if(_0x525145[_0x6953('0x48')][_0x6953('0x49')]){delete _0x525145[_0x6953('0x48')][_0x6953('0x49')];}return db[_0x6953('0x2b')][_0x6953('0x47')]({'where':{'uniqueid':_0x525145[_0x6953('0x42')]['id']}})[_0x6953('0x3c')](handleEntityNotFound(_0xbf5b61,null))[_0x6953('0x3c')](saveUpdates(_0x525145[_0x6953('0x48')],null))['then'](respondWithResult(_0xbf5b61,null))['catch'](handleError(_0xbf5b61,null));};exports[_0x6953('0x4a')]=function(_0x38e3e8,_0x68ab5d,_0x7bcd92){return db[_0x6953('0x2b')][_0x6953('0x3f')]({'raw':![],'where':{'VoiceQueueId':_0x38e3e8[_0x6953('0x42')]['id']},'attributes':[[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x200,\x201,\x20null'))),_0x6953('0x4d')],[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db['sequelize']['fn']('IF',db['sequelize'][_0x6953('0x4e')](_0x6953('0x4f')))),_0x6953('0x50')],[db['sequelize']['fn']('COUNT',db[_0x6953('0x4b')]['fn']('IF',db[_0x6953('0x4b')]['literal']('`state`\x20=\x205,\x201,\x20null'))),_0x6953('0x51')],[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db[_0x6953('0x4b')]['fn']('IF',db[_0x6953('0x4b')]['literal'](_0x6953('0x52')))),_0x6953('0x53')],[db['sequelize']['fn'](_0x6953('0x4c'),db['sequelize']['fn']('IF',db[_0x6953('0x4b')][_0x6953('0x4e')](_0x6953('0x54')))),_0x6953('0x55')],[db['sequelize']['fn'](_0x6953('0x4c'),db[_0x6953('0x4b')]['fn']('IF',db[_0x6953('0x4b')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x6953('0x56')],[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db['sequelize']['fn']('IF',db['sequelize'][_0x6953('0x4e')](_0x6953('0x57')))),'reCallContacts'],[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db['sequelize']['fn']('IF',db[_0x6953('0x4b')][_0x6953('0x4e')](_0x6953('0x58')))),_0x6953('0x59')]]})[_0x6953('0x3c')](handleEntityNotFound(_0x68ab5d,null))['then'](respondWithResult(_0x68ab5d,null))[_0x6953('0x41')](handleError(_0x68ab5d,null));};exports[_0x6953('0x5a')]=function(_0x35ac0e,_0x57ffab,_0x479ab4){return db[_0x6953('0x2b')][_0x6953('0x3f')]({'raw':![],'where':{'CampaignId':_0x35ac0e[_0x6953('0x42')]['id']},'attributes':[[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db['sequelize']['fn']('IF',db[_0x6953('0x4b')][_0x6953('0x4e')](_0x6953('0x5b')))),_0x6953('0x4d')],[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db[_0x6953('0x4b')]['fn']('IF',db[_0x6953('0x4b')][_0x6953('0x4e')](_0x6953('0x4f')))),_0x6953('0x50')],[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db['sequelize']['fn']('IF',db[_0x6953('0x4b')][_0x6953('0x4e')](_0x6953('0x5c')))),_0x6953('0x51')],[db[_0x6953('0x4b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x6953('0x4b')]['literal'](_0x6953('0x52')))),_0x6953('0x53')],[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db['sequelize']['fn']('IF',db[_0x6953('0x4b')][_0x6953('0x4e')](_0x6953('0x54')))),_0x6953('0x55')],[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db[_0x6953('0x4b')]['fn']('IF',db[_0x6953('0x4b')][_0x6953('0x4e')](_0x6953('0x5d')))),_0x6953('0x56')],[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db[_0x6953('0x4b')]['fn']('IF',db[_0x6953('0x4b')]['literal'](_0x6953('0x57')))),_0x6953('0x5e')],[db[_0x6953('0x4b')]['fn'](_0x6953('0x4c'),db[_0x6953('0x4b')]['fn']('IF',db[_0x6953('0x4b')][_0x6953('0x4e')]('`state`\x20=\x2019,\x201,\x20null'))),_0x6953('0x59')]]})[_0x6953('0x3c')](handleEntityNotFound(_0x57ffab,null))['then'](respondWithResult(_0x57ffab,null))[_0x6953('0x41')](handleError(_0x57ffab,null));};exports[_0x6953('0x5f')]=function(_0x41d74d,_0x5063ac,_0x4cb8a4){return db[_0x6953('0x60')][_0x6953('0x47')]({'where':{'id':_0x41d74d[_0x6953('0x42')]['id']}})[_0x6953('0x3c')](handleEntityNotFound(_0x5063ac,null))[_0x6953('0x3c')](function(_0x43a39f){var _0x3cf1c0;if(_0x43a39f){_0x3cf1c0=squel[_0x6953('0x61')]()[_0x6953('0x62')]('cm_hopper')[_0x6953('0x63')]([_0x6953('0x64'),_0x6953('0x65'),_0x6953('0x66'),'ListId',_0x6953('0x67'),_0x6953('0x68'),_0x6953('0x69')],squel['select']()[_0x6953('0x6a')](_0x6953('0x6b'),_0x6953('0x64'))[_0x6953('0x6a')]('NOW()',_0x6953('0x65'))[_0x6953('0x6a')](_0x6953('0x6c'),_0x6953('0x66'))['field']('ANY_VALUE(ListId)',_0x6953('0x6d'))[_0x6953('0x6a')]('ANY_VALUE(VoiceQueueId)','VoiceQueueId')[_0x6953('0x6a')](_0x6953('0x6e'),_0x6953('0x68'))[_0x6953('0x6a')]('NOW()',_0x6953('0x69'))[_0x6953('0x6f')]('cm_hopper_final')[_0x6953('0x39')](_0x6953('0x70'),_0x41d74d['params']['id']['toString']())['where'](_0x6953('0x71'),_0x41d74d[_0x6953('0x48')][_0x6953('0x72')][_0x6953('0x73')]())[_0x6953('0x39')](_0x6953('0x74'))[_0x6953('0x39')](_0x6953('0x75'),squel['select']()[_0x6953('0x6a')](_0x6953('0x64'))[_0x6953('0x6f')](_0x6953('0x76'))[_0x6953('0x39')](_0x6953('0x70'),_0x41d74d['params']['id'][_0x6953('0x73')]()))['where'](_0x6953('0x75'),squel['select']()[_0x6953('0x6a')](_0x6953('0x77'))[_0x6953('0x6f')]('cm_hopper_final')[_0x6953('0x39')](_0x6953('0x70'),_0x41d74d[_0x6953('0x42')]['id'][_0x6953('0x73')]())[_0x6953('0x39')](_0x6953('0x78')))['group'](_0x6953('0x66')))[_0x6953('0x73')]();return db[_0x6953('0x4b')][_0x6953('0x2e')](_0x3cf1c0);}return[];})[_0x6953('0x3c')](respondWithResult(_0x5063ac,null))[_0x6953('0x41')](handleError(_0x5063ac,null));};exports[_0x6953('0x79')]=function(_0xa26241,_0xefb593,_0x216b92){return db[_0x6953('0x7a')]['find']({'where':{'id':_0xa26241[_0x6953('0x42')]['id']}})[_0x6953('0x3c')](handleEntityNotFound(_0xefb593,null))[_0x6953('0x3c')](function(_0x396a9f){var _0x92c0bc;if(_0x396a9f){_0x92c0bc=squel[_0x6953('0x61')]()[_0x6953('0x62')](_0x6953('0x76'))[_0x6953('0x63')]([_0x6953('0x64'),_0x6953('0x65'),'ContactId',_0x6953('0x6d'),_0x6953('0x7b'),_0x6953('0x68'),'updatedAt'],squel[_0x6953('0x7c')]()['field']('ANY_VALUE(calleridnum)',_0x6953('0x64'))[_0x6953('0x6a')](_0x6953('0x6e'),_0x6953('0x65'))[_0x6953('0x6a')](_0x6953('0x6c'),_0x6953('0x66'))['field'](_0x6953('0x7d'),_0x6953('0x6d'))[_0x6953('0x6a')]('ANY_VALUE(CampaignId)',_0x6953('0x7b'))[_0x6953('0x6a')]('NOW()',_0x6953('0x68'))['field']('NOW()',_0x6953('0x69'))['from']('cm_hopper_final')[_0x6953('0x39')](_0x6953('0x7e'),_0xa26241[_0x6953('0x42')]['id']['toString']())[_0x6953('0x39')](_0x6953('0x71'),_0xa26241['body'][_0x6953('0x72')][_0x6953('0x73')]())[_0x6953('0x39')](_0x6953('0x74'))[_0x6953('0x39')](_0x6953('0x75'),squel[_0x6953('0x7c')]()[_0x6953('0x6a')](_0x6953('0x64'))['from'](_0x6953('0x76'))[_0x6953('0x39')]('CampaignId\x20=\x20?',_0xa26241[_0x6953('0x42')]['id'][_0x6953('0x73')]()))[_0x6953('0x39')](_0x6953('0x75'),squel[_0x6953('0x7c')]()[_0x6953('0x6a')](_0x6953('0x77'))['from'](_0x6953('0x7f'))[_0x6953('0x39')](_0x6953('0x7e'),_0xa26241[_0x6953('0x42')]['id'][_0x6953('0x73')]())[_0x6953('0x39')](_0x6953('0x78')))[_0x6953('0x80')](_0x6953('0x66')))['toString']();return db[_0x6953('0x4b')]['query'](_0x92c0bc);}return[];})[_0x6953('0x3c')](respondWithResult(_0xefb593,null))['catch'](handleError(_0xefb593,null));};exports[_0x6953('0x81')]=function(_0x7215ed,_0x3cb96a,_0x46bcec){return db[_0x6953('0x82')]['findOne']({'where':{'VoiceQueueId':_0x7215ed[_0x6953('0x48')]['VoiceQueueId'],'CampaignId':_0x7215ed[_0x6953('0x48')][_0x6953('0x7b')],'ContactId':_0x7215ed[_0x6953('0x48')][_0x6953('0x66')]}})['then'](handleEntityNotFound(_0x3cb96a,null))[_0x6953('0x3c')](function(_0x50f019){if(_0x50f019){return _0x50f019;}return null;})[_0x6953('0x3c')](respondWithResult(_0x3cb96a,null))[_0x6953('0x41')](handleError(_0x3cb96a,null));};
\ No newline at end of file
+var _0x5d17=['ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20NOT\x20IN\x20(?)','cm_hopper','state\x20=\x204','moveContactsIvrCampaignHopperFinal','into','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum','group','checkContactHopper','findOne','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','name','send','index','CmHopperFinal','rawAttributes','fieldName','type','model','map','query','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','describe','update','body','uniqueid','find','countContactsQueueCampaignHopperFinal','COUNT','sequelize','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','literal','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','answeringMachine','countContactsIvrCampaignHopperFinal','congestionContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','fromQuery','scheduledAt','ContactId','ListId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','phone','NOW()'];(function(_0x265003,_0xf0f023){var _0x33c743=function(_0x326a5d){while(--_0x326a5d){_0x265003['push'](_0x265003['shift']());}};_0x33c743(++_0xf0f023);}(_0x5d17,0x114));var _0x75d1=function(_0x180297,_0x56bb6d){_0x180297=_0x180297-0x0;var _0x1f7aae=_0x5d17[_0x180297];return _0x1f7aae;};'use strict';var emlformat=require(_0x75d1('0x0'));var rimraf=require(_0x75d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75d1('0x2'));var moment=require(_0x75d1('0x3'));var BPromise=require(_0x75d1('0x4'));var Mustache=require('mustache');var util=require(_0x75d1('0x5'));var path=require(_0x75d1('0x6'));var sox=require(_0x75d1('0x7'));var csv=require(_0x75d1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x75d1('0x9'));var _=require(_0x75d1('0xa'));var squel=require(_0x75d1('0xb'));var crypto=require(_0x75d1('0xc'));var jsforce=require(_0x75d1('0xd'));var deskjs=require(_0x75d1('0xe'));var toCsv=require(_0x75d1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x75d1('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x75d1('0x10'));var hardwareService=require(_0x75d1('0x11'));var logger=require('../../config/logger')(_0x75d1('0x12'));var utils=require(_0x75d1('0x13'));var config=require(_0x75d1('0x14'));var licenseUtil=require(_0x75d1('0x15'));var db=require(_0x75d1('0x16'))['db'];function respondWithStatusCode(_0xd089cf,_0x49667a){_0x49667a=_0x49667a||0xcc;return function(_0x19e825){if(_0x19e825){return _0xd089cf[_0x75d1('0x17')](_0x49667a);}return _0xd089cf[_0x75d1('0x18')](_0x49667a)[_0x75d1('0x19')]();};}function respondWithResult(_0x49d723,_0x553697){_0x553697=_0x553697||0xc8;return function(_0x55b8a0){if(_0x55b8a0){return _0x49d723[_0x75d1('0x18')](_0x553697)[_0x75d1('0x1a')](_0x55b8a0);}};}function respondWithFilteredResult(_0x2fd022,_0x52e649){return function(_0x1f9620){if(_0x1f9620){var _0x3fff9b=typeof _0x52e649[_0x75d1('0x1b')]===_0x75d1('0x1c')&&typeof _0x52e649[_0x75d1('0x1d')]===_0x75d1('0x1c');var _0x2845bc=_0x1f9620[_0x75d1('0x1e')];var _0x1bc5de=_0x3fff9b?0x0:_0x52e649[_0x75d1('0x1b')];var _0x2c2a6d=_0x3fff9b?_0x1f9620['count']:_0x52e649['offset']+_0x52e649[_0x75d1('0x1d')];var _0x42b7ac;if(_0x2c2a6d>=_0x2845bc){_0x2c2a6d=_0x2845bc;_0x42b7ac=0xc8;}else{_0x42b7ac=0xce;}_0x2fd022['status'](_0x42b7ac);return _0x2fd022[_0x75d1('0x1f')](_0x75d1('0x20'),_0x1bc5de+'-'+_0x2c2a6d+'/'+_0x2845bc)[_0x75d1('0x1a')](_0x1f9620);}return null;};}function patchUpdates(_0xf6cc70){return function(_0xa42dbe){try{jsonpatch[_0x75d1('0x21')](_0xa42dbe,_0xf6cc70,!![]);}catch(_0x51d3b0){return BPromise[_0x75d1('0x22')](_0x51d3b0);}return _0xa42dbe[_0x75d1('0x23')]();};}function saveUpdates(_0x501cc7,_0x1cb58c){return function(_0x641ea4){if(_0x641ea4){return _0x641ea4['update'](_0x501cc7)[_0x75d1('0x24')](function(_0x5e70ec){return _0x5e70ec;});}return null;};}function removeEntity(_0x3a85c0,_0xc256af){return function(_0x345cf5){if(_0x345cf5){return _0x345cf5['destroy']()['then'](function(){_0x3a85c0[_0x75d1('0x18')](0xcc)[_0x75d1('0x19')]();});}};}function handleEntityNotFound(_0x315ce5,_0x18184b){return function(_0x51d043){if(!_0x51d043){_0x315ce5[_0x75d1('0x17')](0x194);}return _0x51d043;};}function handleError(_0x2b5848,_0x367238){_0x367238=_0x367238||0x1f4;return function(_0x51138e){logger['error'](_0x51138e['stack']);if(_0x51138e[_0x75d1('0x25')]){delete _0x51138e[_0x75d1('0x25')];}_0x2b5848[_0x75d1('0x18')](_0x367238)[_0x75d1('0x26')](_0x51138e);};}exports[_0x75d1('0x27')]=function(_0x519ceb,_0x4d292e){var _0x410e16={},_0x197f52={},_0x4967b5={'count':0x0,'rows':[]};var _0x2408b6=_['map'](db[_0x75d1('0x28')][_0x75d1('0x29')],function(_0x91e7c9){return{'name':_0x91e7c9[_0x75d1('0x2a')],'type':_0x91e7c9[_0x75d1('0x2b')]['key']};});_0x197f52[_0x75d1('0x2c')]=_[_0x75d1('0x2d')](_0x2408b6,_0x75d1('0x25'));_0x197f52[_0x75d1('0x2e')]=_['keys'](_0x519ceb[_0x75d1('0x2e')]);_0x197f52['filters']=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],_0x197f52['query']);_0x410e16[_0x75d1('0x30')]=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x519ceb[_0x75d1('0x2e')]['fields']));_0x410e16[_0x75d1('0x30')]=_0x410e16[_0x75d1('0x30')][_0x75d1('0x32')]?_0x410e16[_0x75d1('0x30')]:_0x197f52['model'];if(!_0x519ceb['query']['hasOwnProperty'](_0x75d1('0x33'))){_0x410e16[_0x75d1('0x1d')]=qs[_0x75d1('0x1d')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1d')]);_0x410e16[_0x75d1('0x1b')]=qs[_0x75d1('0x1b')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1b')]);}_0x410e16['order']=qs[_0x75d1('0x34')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x34')]);_0x410e16[_0x75d1('0x35')]=qs[_0x75d1('0x36')](_['pick'](_0x519ceb['query'],_0x197f52['filters']),_0x2408b6);if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x37')]){_0x410e16[_0x75d1('0x35')]=_[_0x75d1('0x38')](_0x410e16[_0x75d1('0x35')],{'$or':_[_0x75d1('0x2d')](_0x2408b6,function(_0x48f9f3){if(_0x48f9f3['type']!=='VIRTUAL'){var _0x3f2569={};_0x3f2569[_0x48f9f3['name']]={'$like':'%'+_0x519ceb['query'][_0x75d1('0x37')]+'%'};return _0x3f2569;}})});}_0x410e16=_[_0x75d1('0x38')]({},_0x410e16,_0x519ceb[_0x75d1('0x39')]);var _0x46854c={'where':_0x410e16['where']};return db[_0x75d1('0x28')][_0x75d1('0x1e')](_0x46854c)[_0x75d1('0x24')](function(_0x3d4137){_0x4967b5[_0x75d1('0x1e')]=_0x3d4137;if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x410e16[_0x75d1('0x3b')]=[{'all':!![]}];}return db[_0x75d1('0x28')][_0x75d1('0x3c')](_0x410e16);})[_0x75d1('0x24')](function(_0x93922f){_0x4967b5[_0x75d1('0x3d')]=_0x93922f;return _0x4967b5;})[_0x75d1('0x24')](respondWithFilteredResult(_0x4d292e,_0x410e16))[_0x75d1('0x3e')](handleError(_0x4d292e,null));};exports[_0x75d1('0x3f')]=function(_0x25f689,_0x2ad3ef){var _0x42c18c={'raw':!![],'where':{'id':_0x25f689[_0x75d1('0x40')]['id']}},_0x2384aa={};_0x2384aa[_0x75d1('0x2c')]=_['keys'](db['CmHopperFinal'][_0x75d1('0x29')]);_0x2384aa[_0x75d1('0x2e')]=_[_0x75d1('0x41')](_0x25f689[_0x75d1('0x2e')]);_0x2384aa['filters']=_[_0x75d1('0x2f')](_0x2384aa[_0x75d1('0x2c')],_0x2384aa[_0x75d1('0x2e')]);_0x42c18c[_0x75d1('0x30')]=_['intersection'](_0x2384aa[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x25f689[_0x75d1('0x2e')][_0x75d1('0x31')]));_0x42c18c['attributes']=_0x42c18c[_0x75d1('0x30')]['length']?_0x42c18c[_0x75d1('0x30')]:_0x2384aa[_0x75d1('0x2c')];if(_0x25f689[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x42c18c[_0x75d1('0x3b')]=[{'all':!![]}];}_0x42c18c=_[_0x75d1('0x38')]({},_0x42c18c,_0x25f689['options']);return db[_0x75d1('0x28')]['find'](_0x42c18c)['then'](handleEntityNotFound(_0x2ad3ef,null))[_0x75d1('0x24')](respondWithResult(_0x2ad3ef,null))[_0x75d1('0x3e')](handleError(_0x2ad3ef,null));};exports[_0x75d1('0x42')]=function(_0x12bd67,_0x16f744){return db[_0x75d1('0x28')][_0x75d1('0x42')]()['then'](respondWithResult(_0x16f744,null))['catch'](handleError(_0x16f744,null));};exports[_0x75d1('0x43')]=function(_0x8ce3d2,_0x50def3){if(_0x8ce3d2[_0x75d1('0x44')][_0x75d1('0x45')]){delete _0x8ce3d2[_0x75d1('0x44')]['uniqueid'];}return db[_0x75d1('0x28')][_0x75d1('0x46')]({'where':{'uniqueid':_0x8ce3d2[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x50def3,null))[_0x75d1('0x24')](saveUpdates(_0x8ce3d2[_0x75d1('0x44')],null))[_0x75d1('0x24')](respondWithResult(_0x50def3,null))['catch'](handleError(_0x50def3,null));};exports[_0x75d1('0x47')]=function(_0x382195,_0x16b3c0,_0x395e0b){return db[_0x75d1('0x28')][_0x75d1('0x3c')]({'raw':![],'where':{'VoiceQueueId':_0x382195[_0x75d1('0x40')]['id']},'attributes':[[db['sequelize']['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')]['literal'](_0x75d1('0x4a')))),_0x75d1('0x4b')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')]['literal'](_0x75d1('0x4c')))),_0x75d1('0x4d')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x4f')))),_0x75d1('0x50')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db['sequelize']['literal'](_0x75d1('0x51')))),'congestionContacts'],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db['sequelize']['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x52')))),_0x75d1('0x53')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db['sequelize'][_0x75d1('0x4e')](_0x75d1('0x54')))),_0x75d1('0x55')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x56')))),_0x75d1('0x57')],[db['sequelize']['fn']('COUNT',db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')]('`state`\x20=\x2019,\x201,\x20null'))),_0x75d1('0x58')]]})['then'](handleEntityNotFound(_0x16b3c0,null))[_0x75d1('0x24')](respondWithResult(_0x16b3c0,null))[_0x75d1('0x3e')](handleError(_0x16b3c0,null));};exports[_0x75d1('0x59')]=function(_0x16cc70,_0x5d2219,_0x22ce12){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'CampaignId':_0x16cc70[_0x75d1('0x40')]['id']},'attributes':[[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db['sequelize']['literal'](_0x75d1('0x4a')))),_0x75d1('0x4b')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db['sequelize'][_0x75d1('0x4e')](_0x75d1('0x4c')))),_0x75d1('0x4d')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x4f')))),_0x75d1('0x50')],[db[_0x75d1('0x49')]['fn']('COUNT',db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x51')))),_0x75d1('0x5a')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db['sequelize']['fn']('IF',db['sequelize'][_0x75d1('0x4e')](_0x75d1('0x52')))),_0x75d1('0x53')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db['sequelize']['fn']('IF',db['sequelize'][_0x75d1('0x4e')](_0x75d1('0x54')))),'abandonedContacts'],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x56')))),'reCallContacts'],[db['sequelize']['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db['sequelize'][_0x75d1('0x4e')]('`state`\x20=\x2019,\x201,\x20null'))),_0x75d1('0x58')]]})[_0x75d1('0x24')](handleEntityNotFound(_0x5d2219,null))[_0x75d1('0x24')](respondWithResult(_0x5d2219,null))['catch'](handleError(_0x5d2219,null));};exports[_0x75d1('0x5b')]=function(_0x1f9ac2,_0x290587,_0x1baaca){return db[_0x75d1('0x5c')]['find']({'where':{'id':_0x1f9ac2['params']['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x290587,null))['then'](function(_0x3f15f3){var _0xf29a9f;if(_0x3f15f3){_0xf29a9f=squel[_0x75d1('0x5d')]()['into']('cm_hopper')[_0x75d1('0x5e')](['phone',_0x75d1('0x5f'),_0x75d1('0x60'),_0x75d1('0x61'),'VoiceQueueId',_0x75d1('0x62'),_0x75d1('0x63')],squel[_0x75d1('0x64')]()[_0x75d1('0x65')](_0x75d1('0x66'),_0x75d1('0x67'))[_0x75d1('0x65')](_0x75d1('0x68'),_0x75d1('0x5f'))[_0x75d1('0x65')](_0x75d1('0x69'),_0x75d1('0x60'))[_0x75d1('0x65')](_0x75d1('0x6a'),'ListId')['field'](_0x75d1('0x6b'),_0x75d1('0x6c'))['field'](_0x75d1('0x68'),'createdAt')['field']('NOW()',_0x75d1('0x63'))[_0x75d1('0x6d')](_0x75d1('0x6e'))[_0x75d1('0x35')](_0x75d1('0x6f'),_0x1f9ac2['params']['id'][_0x75d1('0x70')]())[_0x75d1('0x35')](_0x75d1('0x71'),_0x1f9ac2[_0x75d1('0x44')][_0x75d1('0x72')]['toString']())[_0x75d1('0x35')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x75d1('0x35')](_0x75d1('0x73'),squel[_0x75d1('0x64')]()['field']('phone')['from'](_0x75d1('0x74'))[_0x75d1('0x35')](_0x75d1('0x6f'),_0x1f9ac2[_0x75d1('0x40')]['id'][_0x75d1('0x70')]()))[_0x75d1('0x35')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x75d1('0x64')]()[_0x75d1('0x65')]('calleridnum')[_0x75d1('0x6d')]('cm_hopper_final')['where']('VoiceQueueId\x20=\x20?',_0x1f9ac2[_0x75d1('0x40')]['id']['toString']())['where'](_0x75d1('0x75')))['group'](_0x75d1('0x60')))[_0x75d1('0x70')]();return db[_0x75d1('0x49')][_0x75d1('0x2e')](_0xf29a9f);}return[];})[_0x75d1('0x24')](respondWithResult(_0x290587,null))[_0x75d1('0x3e')](handleError(_0x290587,null));};exports[_0x75d1('0x76')]=function(_0x217347,_0x51b682,_0x195a0a){return db['Campaign'][_0x75d1('0x46')]({'where':{'id':_0x217347[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x51b682,null))['then'](function(_0x10bc92){var _0x150735;if(_0x10bc92){_0x150735=squel[_0x75d1('0x5d')]()[_0x75d1('0x77')](_0x75d1('0x74'))[_0x75d1('0x5e')]([_0x75d1('0x67'),'scheduledAt',_0x75d1('0x60'),_0x75d1('0x61'),_0x75d1('0x78'),_0x75d1('0x62'),_0x75d1('0x63')],squel['select']()['field'](_0x75d1('0x66'),'phone')[_0x75d1('0x65')](_0x75d1('0x68'),_0x75d1('0x5f'))[_0x75d1('0x65')]('ANY_VALUE(ContactId)','ContactId')[_0x75d1('0x65')](_0x75d1('0x6a'),_0x75d1('0x61'))[_0x75d1('0x65')](_0x75d1('0x79'),'CampaignId')[_0x75d1('0x65')](_0x75d1('0x68'),'createdAt')[_0x75d1('0x65')](_0x75d1('0x68'),_0x75d1('0x63'))[_0x75d1('0x6d')](_0x75d1('0x6e'))[_0x75d1('0x35')]('CampaignId\x20=\x20?',_0x217347[_0x75d1('0x40')]['id'][_0x75d1('0x70')]())[_0x75d1('0x35')](_0x75d1('0x71'),_0x217347[_0x75d1('0x44')][_0x75d1('0x72')]['toString']())[_0x75d1('0x35')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x75d1('0x35')](_0x75d1('0x73'),squel[_0x75d1('0x64')]()[_0x75d1('0x65')](_0x75d1('0x67'))[_0x75d1('0x6d')]('cm_hopper')[_0x75d1('0x35')](_0x75d1('0x7a'),_0x217347[_0x75d1('0x40')]['id']['toString']()))[_0x75d1('0x35')](_0x75d1('0x73'),squel['select']()[_0x75d1('0x65')](_0x75d1('0x7b'))[_0x75d1('0x6d')](_0x75d1('0x6e'))[_0x75d1('0x35')](_0x75d1('0x7a'),_0x217347[_0x75d1('0x40')]['id'][_0x75d1('0x70')]())[_0x75d1('0x35')]('state\x20=\x204'))[_0x75d1('0x7c')](_0x75d1('0x60')))['toString']();return db[_0x75d1('0x49')][_0x75d1('0x2e')](_0x150735);}return[];})['then'](respondWithResult(_0x51b682,null))['catch'](handleError(_0x51b682,null));};exports[_0x75d1('0x7d')]=function(_0x44a017,_0x4d8e5d,_0x1f3a7e){return db['CmHopper'][_0x75d1('0x7e')]({'where':{'VoiceQueueId':_0x44a017['body'][_0x75d1('0x6c')],'CampaignId':_0x44a017[_0x75d1('0x44')][_0x75d1('0x78')],'ContactId':_0x44a017[_0x75d1('0x44')][_0x75d1('0x60')]}})[_0x75d1('0x24')](handleEntityNotFound(_0x4d8e5d,null))[_0x75d1('0x24')](function(_0x205e82){if(_0x205e82){return _0x205e82;}return null;})[_0x75d1('0x24')](respondWithResult(_0x4d8e5d,null))[_0x75d1('0x3e')](handleError(_0x4d8e5d,null));};
\ No newline at end of file
index 0e64415..8725343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8884=['define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports'];(function(_0x12d163,_0x2d9f8b){var _0x3d5a69=function(_0x39aa69){while(--_0x39aa69){_0x12d163['push'](_0x12d163['shift']());}};_0x3d5a69(++_0x2d9f8b);}(_0x8884,0x85));var _0x4888=function(_0x5833ae,_0x342389){_0x5833ae=_0x5833ae-0x0;var _0x1e66e0=_0x8884[_0x5833ae];return _0x1e66e0;};'use strict';var _=require(_0x4888('0x0'));var util=require(_0x4888('0x1'));var logger=require('../../config/logger')(_0x4888('0x2'));var moment=require(_0x4888('0x3'));var BPromise=require(_0x4888('0x4'));var rp=require(_0x4888('0x5'));var fs=require('fs');var path=require(_0x4888('0x6'));var rimraf=require(_0x4888('0x7'));var config=require(_0x4888('0x8'));var attributes=require(_0x4888('0x9'));module[_0x4888('0xa')]=function(_0x9d5954,_0x2c360a){return _0x9d5954[_0x4888('0xb')](_0x4888('0xc'),attributes,{'tableName':_0x4888('0xd'),'paranoid':![],'indexes':[{'name':_0x4888('0xe'),'fields':[_0x4888('0xe')]},{'name':_0x4888('0xf'),'fields':[_0x4888('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9cb1=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','../../config/logger'];(function(_0x331b2f,_0x109eca){var _0x1e375d=function(_0x5af3ad){while(--_0x5af3ad){_0x331b2f['push'](_0x331b2f['shift']());}};_0x1e375d(++_0x109eca);}(_0x9cb1,0x11c));var _0x19cb=function(_0x120161,_0x42f759){_0x120161=_0x120161-0x0;var _0x23cf0f=_0x9cb1[_0x120161];return _0x23cf0f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x19cb('0x0'))(_0x19cb('0x1'));var moment=require(_0x19cb('0x2'));var BPromise=require(_0x19cb('0x3'));var rp=require(_0x19cb('0x4'));var fs=require('fs');var path=require(_0x19cb('0x5'));var rimraf=require(_0x19cb('0x6'));var config=require(_0x19cb('0x7'));var attributes=require(_0x19cb('0x8'));module[_0x19cb('0x9')]=function(_0x7420e4,_0x1d3eb5){return _0x7420e4[_0x19cb('0xa')](_0x19cb('0xb'),attributes,{'tableName':_0x19cb('0xc'),'paranoid':![],'indexes':[{'name':_0x19cb('0xd'),'fields':[_0x19cb('0xd')]},{'name':_0x19cb('0xe'),'fields':[_0x19cb('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index d519288..84680ad 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(_0x19c024,_0xfc1946){var _0x535b2a=function(_0x496c86){while(--_0x496c86){_0x19c024['push'](_0x19c024['shift']());}};_0x535b2a(++_0xfc1946);}(_0x7a54,0x106));var _0x47a5=function(_0x12be88,_0x454487){_0x12be88=_0x12be88-0x0;var _0x60b27c=_0x7a54[_0x12be88];return _0x60b27c;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x4b0747,_0x2b3de0){var _0x1c16c3=function(_0x29a695){while(--_0x29a695){_0x4b0747['push'](_0x4b0747['shift']());}};_0x1c16c3(++_0x2b3de0);}(_0xb10b,0x12a));var _0xbb10=function(_0x340380,_0x4bd2a8){_0x340380=_0x340380-0x0;var _0x49ce1c=_0xb10b[_0x340380];return _0x49ce1c;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 900b0f0..f78a2fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67d5=['countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','post','/checkContactHopper','checkContactHopper','update','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','/describe','describe','/:id','/voice/queue/countAttributes/:id'];(function(_0x280f4a,_0x2ed8d6){var _0x1bb157=function(_0x37de94){while(--_0x37de94){_0x280f4a['push'](_0x280f4a['shift']());}};_0x1bb157(++_0x2ed8d6);}(_0x67d5,0x18a));var _0x567d=function(_0x4ed51c,_0x24d55c){_0x4ed51c=_0x4ed51c-0x0;var _0x1fb265=_0x67d5[_0x4ed51c];return _0x1fb265;};'use strict';var multer=require('multer');var util=require(_0x567d('0x0'));var path=require(_0x567d('0x1'));var timeout=require('connect-timeout');var express=require(_0x567d('0x2'));var router=express['Router']();var fs_extra=require(_0x567d('0x3'));var auth=require(_0x567d('0x4'));var interaction=require(_0x567d('0x5'));var config=require(_0x567d('0x6'));var controller=require(_0x567d('0x7'));router[_0x567d('0x8')]('/',auth[_0x567d('0x9')](),controller['index']);router[_0x567d('0x8')](_0x567d('0xa'),auth[_0x567d('0x9')](),controller[_0x567d('0xb')]);router[_0x567d('0x8')](_0x567d('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x567d('0x8')](_0x567d('0xd'),auth[_0x567d('0x9')](),controller[_0x567d('0xe')]);router[_0x567d('0x8')](_0x567d('0xf'),auth[_0x567d('0x9')](),controller[_0x567d('0x10')]);router['post'](_0x567d('0x11'),auth[_0x567d('0x9')](),controller[_0x567d('0x12')]);router[_0x567d('0x13')]('/voice/campaign/moveContacts/:id',auth[_0x567d('0x9')](),controller['moveContactsIvrCampaignHopperFinal']);router[_0x567d('0x13')](_0x567d('0x14'),auth['isAuthenticated'](),controller[_0x567d('0x15')]);router['put'](_0x567d('0xc'),auth[_0x567d('0x9')](),controller[_0x567d('0x16')]);module[_0x567d('0x17')]=router;
\ No newline at end of file
+var _0x147c=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','exports','multer'];(function(_0x1278e1,_0x556695){var _0x51c887=function(_0x4b1fac){while(--_0x4b1fac){_0x1278e1['push'](_0x1278e1['shift']());}};_0x51c887(++_0x556695);}(_0x147c,0x144));var _0xc147=function(_0x1d426f,_0x37e919){_0x1d426f=_0x1d426f-0x0;var _0x17f71a=_0x147c[_0x1d426f];return _0x17f71a;};'use strict';var multer=require(_0xc147('0x0'));var util=require('util');var path=require(_0xc147('0x1'));var timeout=require(_0xc147('0x2'));var express=require(_0xc147('0x3'));var router=express[_0xc147('0x4')]();var fs_extra=require(_0xc147('0x5'));var auth=require(_0xc147('0x6'));var interaction=require(_0xc147('0x7'));var config=require(_0xc147('0x8'));var controller=require('./cmHopperFinal.controller');router[_0xc147('0x9')]('/',auth['isAuthenticated'](),controller[_0xc147('0xa')]);router[_0xc147('0x9')]('/describe',auth[_0xc147('0xb')](),controller[_0xc147('0xc')]);router[_0xc147('0x9')]('/:id',auth[_0xc147('0xb')](),controller[_0xc147('0xd')]);router[_0xc147('0x9')](_0xc147('0xe'),auth[_0xc147('0xb')](),controller[_0xc147('0xf')]);router[_0xc147('0x9')]('/campaign/countAttributes/:id',auth[_0xc147('0xb')](),controller[_0xc147('0x10')]);router[_0xc147('0x11')](_0xc147('0x12'),auth[_0xc147('0xb')](),controller['moveContactsQueueCampaignHopperFinal']);router[_0xc147('0x11')]('/voice/campaign/moveContacts/:id',auth[_0xc147('0xb')](),controller[_0xc147('0x13')]);router[_0xc147('0x11')](_0xc147('0x14'),auth[_0xc147('0xb')](),controller[_0xc147('0x15')]);router[_0xc147('0x16')]('/:id',auth[_0xc147('0xb')](),controller[_0xc147('0x17')]);module[_0xc147('0x18')]=router;
\ No newline at end of file
index 1604eec..87c7f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a72=['DATE','STRING','BOOLEAN','sequelize','INTEGER'];(function(_0x4d515d,_0x108c96){var _0x58fe07=function(_0x2e18bf){while(--_0x2e18bf){_0x4d515d['push'](_0x4d515d['shift']());}};_0x58fe07(++_0x108c96);}(_0x5a72,0x1c5));var _0x25a7=function(_0x35de64,_0x6ff220){_0x35de64=_0x35de64-0x0;var _0x1c75b8=_0x5a72[_0x35de64];return _0x1c75b8;};'use strict';var Sequelize=require(_0x25a7('0x0'));module['exports']={'state':{'type':Sequelize[_0x25a7('0x1')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x25a7('0x2')]},'countbusyretry':{'type':Sequelize[_0x25a7('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x25a7('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x25a7('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x25a7('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x25a7('0x3')]},'originatecalleridname':{'type':Sequelize[_0x25a7('0x3')]},'calleridnum':{'type':Sequelize[_0x25a7('0x3')]},'calleridname':{'type':Sequelize[_0x25a7('0x3')]},'starttime':{'type':Sequelize[_0x25a7('0x2')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x25a7('0x2')]},'droptime':{'type':Sequelize[_0x25a7('0x2')]},'endtime':{'type':Sequelize[_0x25a7('0x2')]},'ringtime':{'type':Sequelize[_0x25a7('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x25a7('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x25a7('0x3')]},'campaign':{'type':Sequelize[_0x25a7('0x3')]},'campaigntype':{'type':Sequelize[_0x25a7('0x3')]},'membername':{'type':Sequelize[_0x25a7('0x3')]},'reason':{'type':Sequelize[_0x25a7('0x3')]},'amd':{'type':Sequelize[_0x25a7('0x4')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0x25a7('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x25a7('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x25a7('0x2')]},'recallme':{'type':Sequelize[_0x25a7('0x4')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x25a7('0x2')]},'edited':{'type':Sequelize[_0x25a7('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x25a7('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x25a7('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x25a7('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x25a7('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x25a7('0x3')]}};
\ No newline at end of file
+var _0xd92e=['INTEGER','DATE','STRING','BOOLEAN','exports'];(function(_0x172da6,_0x40e761){var _0x5660f7=function(_0x42469b){while(--_0x42469b){_0x172da6['push'](_0x172da6['shift']());}};_0x5660f7(++_0x40e761);}(_0xd92e,0x1bc));var _0xed92=function(_0x518584,_0x4262c3){_0x518584=_0x518584-0x0;var _0x11489c=_0xd92e[_0x518584];return _0x11489c;};'use strict';var Sequelize=require('sequelize');module[_0xed92('0x0')]={'state':{'type':Sequelize[_0xed92('0x1')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xed92('0x2')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0xed92('0x3')]},'originatecalleridname':{'type':Sequelize[_0xed92('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xed92('0x2')]},'answertime':{'type':Sequelize[_0xed92('0x2')]},'droptime':{'type':Sequelize[_0xed92('0x2')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xed92('0x3')]},'campaign':{'type':Sequelize[_0xed92('0x3')]},'campaigntype':{'type':Sequelize[_0xed92('0x3')]},'membername':{'type':Sequelize[_0xed92('0x3')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0xed92('0x4')],'defaultValue':![]},'fax':{'type':Sequelize[_0xed92('0x4')],'defaultValue':![]},'callback':{'type':Sequelize[_0xed92('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xed92('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xed92('0x2')]},'recallme':{'type':Sequelize[_0xed92('0x4')],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 9787b1f..27d3f5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4217=['includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','VIRTUAL','filter','options'];(function(_0x2053a9,_0x4397d4){var _0x4ac51a=function(_0x46d085){while(--_0x46d085){_0x2053a9['push'](_0x2053a9['shift']());}};_0x4ac51a(++_0x4397d4);}(_0x4217,0x1e6));var _0x7421=function(_0x825eb1,_0x49a452){_0x825eb1=_0x825eb1-0x0;var _0x104d4d=_0x4217[_0x825eb1];return _0x104d4d;};'use strict';var emlformat=require(_0x7421('0x0'));var rimraf=require(_0x7421('0x1'));var zipdir=require(_0x7421('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7421('0x3'));var moment=require(_0x7421('0x4'));var BPromise=require(_0x7421('0x5'));var Mustache=require('mustache');var util=require(_0x7421('0x6'));var path=require(_0x7421('0x7'));var sox=require(_0x7421('0x8'));var csv=require(_0x7421('0x9'));var ejs=require(_0x7421('0xa'));var fs=require('fs');var fs_extra=require(_0x7421('0xb'));var _=require(_0x7421('0xc'));var squel=require('squel');var crypto=require(_0x7421('0xd'));var jsforce=require(_0x7421('0xe'));var deskjs=require(_0x7421('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7421('0x10'));var Papa=require(_0x7421('0x11'));var Redis=require(_0x7421('0x12'));var authService=require(_0x7421('0x13'));var qs=require(_0x7421('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7421('0x15'))('api');var utils=require(_0x7421('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7421('0x17'))['db'];function respondWithStatusCode(_0x39d629,_0x4b074d){_0x4b074d=_0x4b074d||0xcc;return function(_0x188f49){if(_0x188f49){return _0x39d629[_0x7421('0x18')](_0x4b074d);}return _0x39d629[_0x7421('0x19')](_0x4b074d)[_0x7421('0x1a')]();};}function respondWithResult(_0x57a0bd,_0xe4170e){_0xe4170e=_0xe4170e||0xc8;return function(_0xeef40d){if(_0xeef40d){return _0x57a0bd[_0x7421('0x19')](_0xe4170e)[_0x7421('0x1b')](_0xeef40d);}};}function respondWithFilteredResult(_0x43d7a4,_0x13ec4f){return function(_0x1c2841){if(_0x1c2841){var _0x46be41=typeof _0x13ec4f[_0x7421('0x1c')]===_0x7421('0x1d')&&typeof _0x13ec4f[_0x7421('0x1e')]===_0x7421('0x1d');var _0xbe9dee=_0x1c2841['count'];var _0x5777cb=_0x46be41?0x0:_0x13ec4f['offset'];var _0x3626f7=_0x46be41?_0x1c2841[_0x7421('0x1f')]:_0x13ec4f[_0x7421('0x1c')]+_0x13ec4f['limit'];var _0x9eaa88;if(_0x3626f7>=_0xbe9dee){_0x3626f7=_0xbe9dee;_0x9eaa88=0xc8;}else{_0x9eaa88=0xce;}_0x43d7a4[_0x7421('0x19')](_0x9eaa88);return _0x43d7a4[_0x7421('0x20')]('Content-Range',_0x5777cb+'-'+_0x3626f7+'/'+_0xbe9dee)[_0x7421('0x1b')](_0x1c2841);}return null;};}function patchUpdates(_0x20a4cb){return function(_0x4abc9a){try{jsonpatch[_0x7421('0x21')](_0x4abc9a,_0x20a4cb,!![]);}catch(_0xa4b78b){return BPromise[_0x7421('0x22')](_0xa4b78b);}return _0x4abc9a[_0x7421('0x23')]();};}function saveUpdates(_0x5c772f,_0xf162d8){return function(_0x27a148){if(_0x27a148){return _0x27a148[_0x7421('0x24')](_0x5c772f)[_0x7421('0x25')](function(_0x659f6e){return _0x659f6e;});}return null;};}function removeEntity(_0x3d0a56,_0x370009){return function(_0x578813){if(_0x578813){return _0x578813['destroy']()[_0x7421('0x25')](function(){_0x3d0a56[_0x7421('0x19')](0xcc)[_0x7421('0x1a')]();});}};}function handleEntityNotFound(_0x2a4d3d,_0x444e22){return function(_0x17923c){if(!_0x17923c){_0x2a4d3d[_0x7421('0x18')](0x194);}return _0x17923c;};}function handleError(_0x2ab76e,_0x5efb5a){_0x5efb5a=_0x5efb5a||0x1f4;return function(_0x46103d){logger[_0x7421('0x26')](_0x46103d[_0x7421('0x27')]);if(_0x46103d[_0x7421('0x28')]){delete _0x46103d[_0x7421('0x28')];}_0x2ab76e[_0x7421('0x19')](_0x5efb5a)[_0x7421('0x29')](_0x46103d);};}exports[_0x7421('0x2a')]=function(_0xa3d58e,_0x369528){var _0x894987={},_0x2a404a={},_0x258ea2={'count':0x0,'rows':[]};var _0x3ccac5=_[_0x7421('0x2b')](db[_0x7421('0x2c')][_0x7421('0x2d')],function(_0x13c3ee){return{'name':_0x13c3ee[_0x7421('0x2e')],'type':_0x13c3ee[_0x7421('0x2f')][_0x7421('0x30')]};});_0x2a404a[_0x7421('0x31')]=_['map'](_0x3ccac5,_0x7421('0x28'));_0x2a404a[_0x7421('0x32')]=_[_0x7421('0x33')](_0xa3d58e[_0x7421('0x32')]);_0x2a404a['filters']=_['intersection'](_0x2a404a[_0x7421('0x31')],_0x2a404a['query']);_0x894987[_0x7421('0x34')]=_[_0x7421('0x35')](_0x2a404a[_0x7421('0x31')],qs[_0x7421('0x36')](_0xa3d58e['query'][_0x7421('0x36')]));_0x894987['attributes']=_0x894987[_0x7421('0x34')][_0x7421('0x37')]?_0x894987[_0x7421('0x34')]:_0x2a404a['model'];if(!_0xa3d58e['query'][_0x7421('0x38')](_0x7421('0x39'))){_0x894987[_0x7421('0x1e')]=qs[_0x7421('0x1e')](_0xa3d58e['query'][_0x7421('0x1e')]);_0x894987[_0x7421('0x1c')]=qs[_0x7421('0x1c')](_0xa3d58e['query'][_0x7421('0x1c')]);}_0x894987[_0x7421('0x3a')]=qs['sort'](_0xa3d58e[_0x7421('0x32')][_0x7421('0x3b')]);_0x894987[_0x7421('0x3c')]=qs['filters'](_[_0x7421('0x3d')](_0xa3d58e[_0x7421('0x32')],_0x2a404a[_0x7421('0x3e')]),_0x3ccac5);if(_0xa3d58e['query']['filter']){_0x894987[_0x7421('0x3c')]=_[_0x7421('0x3f')](_0x894987[_0x7421('0x3c')],{'$or':_[_0x7421('0x2b')](_0x3ccac5,function(_0x2b46da){if(_0x2b46da['type']!==_0x7421('0x40')){var _0x46dcb5={};_0x46dcb5[_0x2b46da[_0x7421('0x28')]]={'$like':'%'+_0xa3d58e['query'][_0x7421('0x41')]+'%'};return _0x46dcb5;}})});}_0x894987=_[_0x7421('0x3f')]({},_0x894987,_0xa3d58e[_0x7421('0x42')]);var _0x1aa241={'where':_0x894987[_0x7421('0x3c')]};return db[_0x7421('0x2c')][_0x7421('0x1f')](_0x1aa241)[_0x7421('0x25')](function(_0x1c19ce){_0x258ea2[_0x7421('0x1f')]=_0x1c19ce;if(_0xa3d58e[_0x7421('0x32')][_0x7421('0x43')]){_0x894987[_0x7421('0x44')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x7421('0x45')](_0x894987);})[_0x7421('0x25')](function(_0x4f06ac){_0x258ea2[_0x7421('0x46')]=_0x4f06ac;return _0x258ea2;})['then'](respondWithFilteredResult(_0x369528,_0x894987))[_0x7421('0x47')](handleError(_0x369528,null));};exports[_0x7421('0x48')]=function(_0x13716e,_0x1de3d5){var _0x5b8055={'raw':!![],'where':{'id':_0x13716e[_0x7421('0x49')]['id']}},_0x519ea2={};_0x519ea2[_0x7421('0x31')]=_[_0x7421('0x33')](db[_0x7421('0x2c')][_0x7421('0x2d')]);_0x519ea2[_0x7421('0x32')]=_['keys'](_0x13716e[_0x7421('0x32')]);_0x519ea2[_0x7421('0x3e')]=_[_0x7421('0x35')](_0x519ea2[_0x7421('0x31')],_0x519ea2[_0x7421('0x32')]);_0x5b8055['attributes']=_[_0x7421('0x35')](_0x519ea2['model'],qs['fields'](_0x13716e['query'][_0x7421('0x36')]));_0x5b8055[_0x7421('0x34')]=_0x5b8055['attributes'][_0x7421('0x37')]?_0x5b8055[_0x7421('0x34')]:_0x519ea2[_0x7421('0x31')];if(_0x13716e[_0x7421('0x32')]['includeAll']){_0x5b8055[_0x7421('0x44')]=[{'all':!![]}];}_0x5b8055=_[_0x7421('0x3f')]({},_0x5b8055,_0x13716e[_0x7421('0x42')]);return db[_0x7421('0x2c')][_0x7421('0x4a')](_0x5b8055)['then'](handleEntityNotFound(_0x1de3d5,null))[_0x7421('0x25')](respondWithResult(_0x1de3d5,null))[_0x7421('0x47')](handleError(_0x1de3d5,null));};exports[_0x7421('0x4b')]=function(_0x26f83a,_0x246f3b){return db['CmHopperHistory'][_0x7421('0x4b')](_0x26f83a[_0x7421('0x4c')],{})[_0x7421('0x25')](respondWithResult(_0x246f3b,0xc9))['catch'](handleError(_0x246f3b,null));};exports[_0x7421('0x4d')]=function(_0x55da50,_0x365a78){return db['CmHopperHistory'][_0x7421('0x4d')]()[_0x7421('0x25')](respondWithResult(_0x365a78,null))[_0x7421('0x47')](handleError(_0x365a78,null));};exports['update']=function(_0x408758,_0x24397c){if(_0x408758[_0x7421('0x4c')][_0x7421('0x4e')]){delete _0x408758['body'][_0x7421('0x4e')];}return db[_0x7421('0x2c')][_0x7421('0x4a')]({'where':{'uniqueid':_0x408758[_0x7421('0x49')]['id']}})[_0x7421('0x25')](handleEntityNotFound(_0x24397c,null))[_0x7421('0x25')](saveUpdates(_0x408758['body'],null))[_0x7421('0x25')](respondWithResult(_0x24397c,null))['catch'](handleError(_0x24397c,null));};
\ No newline at end of file
+var _0x5c82=['querystring','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','Content-Range','apply','reject','update','then','stack','name','send','map','rawAttributes','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','CmHopperHistory','includeAll','findAll','rows','catch','show','params','find','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js'];(function(_0x210d5f,_0x369e2a){var _0x1d89a3=function(_0x272a9c){while(--_0x272a9c){_0x210d5f['push'](_0x210d5f['shift']());}};_0x1d89a3(++_0x369e2a);}(_0x5c82,0x89));var _0x25c8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5c82[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x25c8('0x0'));var rimraf=require(_0x25c8('0x1'));var zipdir=require(_0x25c8('0x2'));var jsonpatch=require(_0x25c8('0x3'));var rp=require(_0x25c8('0x4'));var moment=require(_0x25c8('0x5'));var BPromise=require(_0x25c8('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x25c8('0x7'));var sox=require(_0x25c8('0x8'));var csv=require(_0x25c8('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x25c8('0xa'));var _=require(_0x25c8('0xb'));var squel=require(_0x25c8('0xc'));var crypto=require(_0x25c8('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x25c8('0xe'));var toCsv=require(_0x25c8('0x9'));var querystring=require(_0x25c8('0xf'));var Papa=require(_0x25c8('0x10'));var Redis=require(_0x25c8('0x11'));var authService=require(_0x25c8('0x12'));var qs=require(_0x25c8('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x25c8('0x14'));var logger=require(_0x25c8('0x15'))('api');var utils=require(_0x25c8('0x16'));var config=require(_0x25c8('0x17'));var licenseUtil=require(_0x25c8('0x18'));var db=require(_0x25c8('0x19'))['db'];function respondWithStatusCode(_0x15b366,_0x62d2c9){_0x62d2c9=_0x62d2c9||0xcc;return function(_0x17d038){if(_0x17d038){return _0x15b366[_0x25c8('0x1a')](_0x62d2c9);}return _0x15b366[_0x25c8('0x1b')](_0x62d2c9)[_0x25c8('0x1c')]();};}function respondWithResult(_0x5d8f6f,_0x3bff56){_0x3bff56=_0x3bff56||0xc8;return function(_0x212f6b){if(_0x212f6b){return _0x5d8f6f[_0x25c8('0x1b')](_0x3bff56)[_0x25c8('0x1d')](_0x212f6b);}};}function respondWithFilteredResult(_0x5862bb,_0x39545b){return function(_0x3a5a2d){if(_0x3a5a2d){var _0x13f780=typeof _0x39545b[_0x25c8('0x1e')]==='undefined'&&typeof _0x39545b['limit']===_0x25c8('0x1f');var _0x2afd4f=_0x3a5a2d[_0x25c8('0x20')];var _0x27f42d=_0x13f780?0x0:_0x39545b[_0x25c8('0x1e')];var _0x43a5b6=_0x13f780?_0x3a5a2d[_0x25c8('0x20')]:_0x39545b[_0x25c8('0x1e')]+_0x39545b[_0x25c8('0x21')];var _0x49df8a;if(_0x43a5b6>=_0x2afd4f){_0x43a5b6=_0x2afd4f;_0x49df8a=0xc8;}else{_0x49df8a=0xce;}_0x5862bb[_0x25c8('0x1b')](_0x49df8a);return _0x5862bb[_0x25c8('0x22')](_0x25c8('0x23'),_0x27f42d+'-'+_0x43a5b6+'/'+_0x2afd4f)[_0x25c8('0x1d')](_0x3a5a2d);}return null;};}function patchUpdates(_0x2db5d7){return function(_0x1065d4){try{jsonpatch[_0x25c8('0x24')](_0x1065d4,_0x2db5d7,!![]);}catch(_0x1129da){return BPromise[_0x25c8('0x25')](_0x1129da);}return _0x1065d4['save']();};}function saveUpdates(_0x3351f5,_0x421a03){return function(_0x4f3099){if(_0x4f3099){return _0x4f3099[_0x25c8('0x26')](_0x3351f5)['then'](function(_0x3e5fcf){return _0x3e5fcf;});}return null;};}function removeEntity(_0x544a53,_0x3a5ab5){return function(_0x1cee67){if(_0x1cee67){return _0x1cee67['destroy']()[_0x25c8('0x27')](function(){_0x544a53[_0x25c8('0x1b')](0xcc)[_0x25c8('0x1c')]();});}};}function handleEntityNotFound(_0x3996c1,_0xac03ff){return function(_0x124bbf){if(!_0x124bbf){_0x3996c1[_0x25c8('0x1a')](0x194);}return _0x124bbf;};}function handleError(_0x567198,_0x1e6b32){_0x1e6b32=_0x1e6b32||0x1f4;return function(_0x5b7184){logger['error'](_0x5b7184[_0x25c8('0x28')]);if(_0x5b7184[_0x25c8('0x29')]){delete _0x5b7184[_0x25c8('0x29')];}_0x567198[_0x25c8('0x1b')](_0x1e6b32)[_0x25c8('0x2a')](_0x5b7184);};}exports['index']=function(_0x90d6a9,_0xc68ae7){var _0x3fb0a0={},_0x40a604={},_0x4296a2={'count':0x0,'rows':[]};var _0x51883d=_[_0x25c8('0x2b')](db['CmHopperHistory'][_0x25c8('0x2c')],function(_0x5831d7){return{'name':_0x5831d7['fieldName'],'type':_0x5831d7[_0x25c8('0x2d')][_0x25c8('0x2e')]};});_0x40a604['model']=_[_0x25c8('0x2b')](_0x51883d,_0x25c8('0x29'));_0x40a604['query']=_[_0x25c8('0x2f')](_0x90d6a9[_0x25c8('0x30')]);_0x40a604[_0x25c8('0x31')]=_[_0x25c8('0x32')](_0x40a604[_0x25c8('0x33')],_0x40a604[_0x25c8('0x30')]);_0x3fb0a0[_0x25c8('0x34')]=_[_0x25c8('0x32')](_0x40a604[_0x25c8('0x33')],qs[_0x25c8('0x35')](_0x90d6a9[_0x25c8('0x30')][_0x25c8('0x35')]));_0x3fb0a0[_0x25c8('0x34')]=_0x3fb0a0[_0x25c8('0x34')][_0x25c8('0x36')]?_0x3fb0a0[_0x25c8('0x34')]:_0x40a604['model'];if(!_0x90d6a9[_0x25c8('0x30')][_0x25c8('0x37')](_0x25c8('0x38'))){_0x3fb0a0['limit']=qs[_0x25c8('0x21')](_0x90d6a9[_0x25c8('0x30')][_0x25c8('0x21')]);_0x3fb0a0[_0x25c8('0x1e')]=qs['offset'](_0x90d6a9['query'][_0x25c8('0x1e')]);}_0x3fb0a0[_0x25c8('0x39')]=qs[_0x25c8('0x3a')](_0x90d6a9['query'][_0x25c8('0x3a')]);_0x3fb0a0[_0x25c8('0x3b')]=qs[_0x25c8('0x31')](_[_0x25c8('0x3c')](_0x90d6a9[_0x25c8('0x30')],_0x40a604[_0x25c8('0x31')]),_0x51883d);if(_0x90d6a9[_0x25c8('0x30')][_0x25c8('0x3d')]){_0x3fb0a0[_0x25c8('0x3b')]=_['merge'](_0x3fb0a0['where'],{'$or':_['map'](_0x51883d,function(_0x42c415){if(_0x42c415[_0x25c8('0x2d')]!==_0x25c8('0x3e')){var _0x3593f1={};_0x3593f1[_0x42c415['name']]={'$like':'%'+_0x90d6a9['query']['filter']+'%'};return _0x3593f1;}})});}_0x3fb0a0=_[_0x25c8('0x3f')]({},_0x3fb0a0,_0x90d6a9['options']);var _0x3de372={'where':_0x3fb0a0[_0x25c8('0x3b')]};return db[_0x25c8('0x40')]['count'](_0x3de372)[_0x25c8('0x27')](function(_0x4a4130){_0x4296a2['count']=_0x4a4130;if(_0x90d6a9[_0x25c8('0x30')][_0x25c8('0x41')]){_0x3fb0a0['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x25c8('0x42')](_0x3fb0a0);})[_0x25c8('0x27')](function(_0xc346e8){_0x4296a2[_0x25c8('0x43')]=_0xc346e8;return _0x4296a2;})['then'](respondWithFilteredResult(_0xc68ae7,_0x3fb0a0))[_0x25c8('0x44')](handleError(_0xc68ae7,null));};exports[_0x25c8('0x45')]=function(_0x375f5d,_0x1f5377){var _0x184412={'raw':!![],'where':{'id':_0x375f5d[_0x25c8('0x46')]['id']}},_0x4af926={};_0x4af926[_0x25c8('0x33')]=_['keys'](db[_0x25c8('0x40')]['rawAttributes']);_0x4af926['query']=_[_0x25c8('0x2f')](_0x375f5d['query']);_0x4af926[_0x25c8('0x31')]=_[_0x25c8('0x32')](_0x4af926[_0x25c8('0x33')],_0x4af926['query']);_0x184412[_0x25c8('0x34')]=_['intersection'](_0x4af926[_0x25c8('0x33')],qs[_0x25c8('0x35')](_0x375f5d[_0x25c8('0x30')]['fields']));_0x184412['attributes']=_0x184412[_0x25c8('0x34')]['length']?_0x184412[_0x25c8('0x34')]:_0x4af926[_0x25c8('0x33')];if(_0x375f5d['query'][_0x25c8('0x41')]){_0x184412['include']=[{'all':!![]}];}_0x184412=_[_0x25c8('0x3f')]({},_0x184412,_0x375f5d['options']);return db[_0x25c8('0x40')][_0x25c8('0x47')](_0x184412)[_0x25c8('0x27')](handleEntityNotFound(_0x1f5377,null))['then'](respondWithResult(_0x1f5377,null))[_0x25c8('0x44')](handleError(_0x1f5377,null));};exports[_0x25c8('0x48')]=function(_0x3bcea1,_0x569fc9){return db[_0x25c8('0x40')][_0x25c8('0x48')](_0x3bcea1[_0x25c8('0x49')],{})[_0x25c8('0x27')](respondWithResult(_0x569fc9,0xc9))[_0x25c8('0x44')](handleError(_0x569fc9,null));};exports[_0x25c8('0x4a')]=function(_0x1cbab1,_0x1dd22c){return db[_0x25c8('0x40')][_0x25c8('0x4a')]()['then'](respondWithResult(_0x1dd22c,null))[_0x25c8('0x44')](handleError(_0x1dd22c,null));};exports[_0x25c8('0x26')]=function(_0x56d81c,_0xc43d50){if(_0x56d81c[_0x25c8('0x49')][_0x25c8('0x4b')]){delete _0x56d81c[_0x25c8('0x49')][_0x25c8('0x4b')];}return db['CmHopperHistory'][_0x25c8('0x47')]({'where':{'uniqueid':_0x56d81c['params']['id']}})[_0x25c8('0x27')](handleEntityNotFound(_0xc43d50,null))['then'](saveUpdates(_0x56d81c[_0x25c8('0x49')],null))[_0x25c8('0x27')](respondWithResult(_0xc43d50,null))['catch'](handleError(_0xc43d50,null));};
\ No newline at end of file
index 597612b..fadda8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3b3=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','CmHopperHistory','cm_hopper_history','endtime','uniqueid'];(function(_0x37ff5f,_0x543aa6){var _0x2bb1b0=function(_0x5cc1ff){while(--_0x5cc1ff){_0x37ff5f['push'](_0x37ff5f['shift']());}};_0x2bb1b0(++_0x543aa6);}(_0xe3b3,0x1b3));var _0x3e3b=function(_0x23b7b1,_0x4215ae){_0x23b7b1=_0x23b7b1-0x0;var _0x16f057=_0xe3b3[_0x23b7b1];return _0x16f057;};'use strict';var _=require(_0x3e3b('0x0'));var util=require(_0x3e3b('0x1'));var logger=require(_0x3e3b('0x2'))(_0x3e3b('0x3'));var moment=require(_0x3e3b('0x4'));var BPromise=require(_0x3e3b('0x5'));var rp=require(_0x3e3b('0x6'));var fs=require('fs');var path=require(_0x3e3b('0x7'));var rimraf=require(_0x3e3b('0x8'));var config=require(_0x3e3b('0x9'));var attributes=require('./cmHopperHistory.attributes');module[_0x3e3b('0xa')]=function(_0x3fd79a,_0x410458){return _0x3fd79a['define'](_0x3e3b('0xb'),attributes,{'tableName':_0x3e3b('0xc'),'paranoid':![],'indexes':[{'name':_0x3e3b('0xd'),'fields':[_0x3e3b('0xd')]},{'name':_0x3e3b('0xe'),'fields':[_0x3e3b('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x095b=['define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperHistory.attributes','exports'];(function(_0x5a77a6,_0x594885){var _0x148553=function(_0x1b529b){while(--_0x1b529b){_0x5a77a6['push'](_0x5a77a6['shift']());}};_0x148553(++_0x594885);}(_0x095b,0x6e));var _0xb095=function(_0x4ca24a,_0x489a68){_0x4ca24a=_0x4ca24a-0x0;var _0x165c32=_0x095b[_0x4ca24a];return _0x165c32;};'use strict';var _=require(_0xb095('0x0'));var util=require('util');var logger=require(_0xb095('0x1'))(_0xb095('0x2'));var moment=require(_0xb095('0x3'));var BPromise=require(_0xb095('0x4'));var rp=require(_0xb095('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb095('0x6'));var config=require(_0xb095('0x7'));var attributes=require(_0xb095('0x8'));module[_0xb095('0x9')]=function(_0x10a03d,_0x3e4cc9){return _0x10a03d[_0xb095('0xa')](_0xb095('0xb'),attributes,{'tableName':_0xb095('0xc'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0xb095('0xd')]},{'name':_0xb095('0xe'),'fields':[_0xb095('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index b1251e5..4158a78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd84c=['AvgHandleTime','findAll','raw','where','col','predictiveIntervalTotalCalls','COUNT','sequelize','`state`\x20=\x204,\x201,\x20null','literal','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','name','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','campaign','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','result','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options'];(function(_0x1a2f9e,_0x54e904){var _0x42544e=function(_0x349190){while(--_0x349190){_0x1a2f9e['push'](_0x1a2f9e['shift']());}};_0x42544e(++_0x54e904);}(_0xd84c,0x102));var _0xcd84=function(_0x2d2f41,_0x11913a){_0x2d2f41=_0x2d2f41-0x0;var _0x292497=_0xd84c[_0x2d2f41];return _0x292497;};'use strict';var _=require(_0xcd84('0x0'));var util=require(_0xcd84('0x1'));var moment=require(_0xcd84('0x2'));var BPromise=require(_0xcd84('0x3'));var rs=require(_0xcd84('0x4'));var fs=require('fs');var Redis=require(_0xcd84('0x5'));var db=require(_0xcd84('0x6'))['db'];var utils=require(_0xcd84('0x7'));var logger=require(_0xcd84('0x8'))('rpc');var config=require(_0xcd84('0x9'));var jayson=require(_0xcd84('0xa'));var client=jayson[_0xcd84('0xb')][_0xcd84('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x520d49,_0x2b5383,_0x22c811){return new BPromise(function(_0x3f3617,_0x5408e2){return client[_0xcd84('0xd')](_0x520d49,_0x22c811)[_0xcd84('0xe')](function(_0xec34a2){logger[_0xcd84('0xf')]('CmHopperHistory,\x20%s,\x20%s',_0x2b5383,_0xcd84('0x10'));logger[_0xcd84('0x11')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x2b5383,_0xcd84('0x10'),JSON[_0xcd84('0x12')](_0xec34a2));if(_0xec34a2[_0xcd84('0x13')]){if(_0xec34a2['error'][_0xcd84('0x14')]===0x1f4){logger[_0xcd84('0x13')](_0xcd84('0x15'),_0x2b5383,_0xec34a2[_0xcd84('0x13')]['message']);return _0x5408e2(_0xec34a2[_0xcd84('0x13')][_0xcd84('0x16')]);}logger[_0xcd84('0x13')](_0xcd84('0x15'),_0x2b5383,_0xec34a2[_0xcd84('0x13')][_0xcd84('0x16')]);return _0x3f3617(_0xec34a2[_0xcd84('0x13')][_0xcd84('0x16')]);}else{logger[_0xcd84('0xf')](_0xcd84('0x15'),_0x2b5383,_0xcd84('0x10'));_0x3f3617(_0xec34a2[_0xcd84('0x17')][_0xcd84('0x16')]);}})[_0xcd84('0x18')](function(_0xfc4ec7){logger[_0xcd84('0x13')](_0xcd84('0x15'),_0x2b5383,_0xfc4ec7);_0x5408e2(_0xfc4ec7);});});}exports[_0xcd84('0x19')]=function(_0x4ff790){var _0x3c2d33=this;return new Promise(function(_0x15099f,_0x4c9509){return db[_0xcd84('0x1a')][_0xcd84('0x1b')](_0x4ff790[_0xcd84('0x1c')],{'raw':_0x4ff790[_0xcd84('0x1d')]?_0x4ff790[_0xcd84('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0xcd84('0xe')](function(_0x171813){logger[_0xcd84('0xf')]('CreateCmHopperHistory',_0x4ff790);logger['debug'](_0xcd84('0x19'),_0x4ff790,JSON['stringify'](_0x171813));_0x15099f(_0x171813);})[_0xcd84('0x18')](function(_0x20b0ce){logger['error'](_0xcd84('0x19'),_0x20b0ce[_0xcd84('0x16')],_0x4ff790);_0x4c9509(_0x3c2d33[_0xcd84('0x13')](0x1f4,_0x20b0ce[_0xcd84('0x16')]));});});};exports[_0xcd84('0x1e')]=function(_0xfc2a17){var _0x49f7e8=this;return new Promise(function(_0x41d6c2,_0x113711){return db[_0xcd84('0x1a')][_0xcd84('0x1f')]({'raw':_0xfc2a17[_0xcd84('0x1d')]?_0xfc2a17[_0xcd84('0x1d')][_0xcd84('0x20')]===undefined?!![]:![]:!![],'where':_0xfc2a17['options']?_0xfc2a17['options'][_0xcd84('0x21')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db['sequelize'][_0xcd84('0x22')]('id')),_0xcd84('0x23')],[db['sequelize']['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db[_0xcd84('0x25')]['literal'](_0xcd84('0x26')))),'predictiveIntervalAnsweredCalls'],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db[_0xcd84('0x25')][_0xcd84('0x27')](_0xcd84('0x28')))),_0xcd84('0x29')],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db[_0xcd84('0x25')][_0xcd84('0x27')]('`state`\x20=\x2011,\x201,\x20null'))),_0xcd84('0x2a')],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x2b'),db[_0xcd84('0x25')]['fn']('IF',db['sequelize'][_0xcd84('0x27')](_0xcd84('0x2c')))),_0xcd84('0x2d')],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x2b'),db['sequelize']['fn']('IF',db[_0xcd84('0x25')][_0xcd84('0x27')](_0xcd84('0x2e')))),_0xcd84('0x2f')]]})[_0xcd84('0xe')](function(_0x15a7ac){logger[_0xcd84('0xf')]('AvgHandleTime',_0xfc2a17);logger[_0xcd84('0x11')](_0xcd84('0x1e'),_0xfc2a17,JSON['stringify'](_0x15a7ac));_0x41d6c2(_0x15a7ac);})[_0xcd84('0x18')](function(_0x59af28){logger[_0xcd84('0x13')](_0xcd84('0x1e'),_0x59af28[_0xcd84('0x16')],_0xfc2a17);_0x113711(_0x49f7e8[_0xcd84('0x13')](0x1f4,_0x59af28[_0xcd84('0x16')]));});});};exports[_0xcd84('0x30')]=function(_0x27d0ac){var _0x83f5f4=this;return new Promise(function(_0xd0fa6a,_0x2dd941){return db[_0xcd84('0x1a')][_0xcd84('0x1f')]({'raw':_0x27d0ac[_0xcd84('0x1d')]?_0x27d0ac[_0xcd84('0x1d')][_0xcd84('0x20')]===undefined?!![]:![]:!![],'where':_0x27d0ac['options']?_0x27d0ac[_0xcd84('0x1d')]['where']||null:null,'attributes':[['campaign',_0xcd84('0x31')],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db['sequelize']['literal'](_0xcd84('0x32')))),'outboundNoSuchCallsDay'],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x24'),db['sequelize']['fn']('IF',db[_0xcd84('0x25')]['literal'](_0xcd84('0x33')))),_0xcd84('0x34')],[db[_0xcd84('0x25')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xcd84('0x25')][_0xcd84('0x27')](_0xcd84('0x26')))),_0xcd84('0x35')],[db['sequelize']['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db[_0xcd84('0x25')][_0xcd84('0x27')](_0xcd84('0x36')))),_0xcd84('0x37')],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db['sequelize'][_0xcd84('0x27')]('`state`\x20=\x208,\x201,\x20null'))),_0xcd84('0x38')],[db['sequelize']['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db['sequelize']['literal'](_0xcd84('0x39')))),_0xcd84('0x3a')],[db[_0xcd84('0x25')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xcd84('0x25')]['literal'](_0xcd84('0x3b')))),_0xcd84('0x3c')],[db['sequelize']['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db['sequelize'][_0xcd84('0x27')](_0xcd84('0x3d')))),_0xcd84('0x3e')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xcd84('0x25')][_0xcd84('0x27')](_0xcd84('0x3f')))),_0xcd84('0x40')],[db[_0xcd84('0x25')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xcd84('0x25')][_0xcd84('0x27')]('`state`\x20=\x2014,\x201,\x20null'))),'outboundOriginateFailureCallsDay'],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db[_0xcd84('0x25')][_0xcd84('0x27')](_0xcd84('0x41')))),_0xcd84('0x42')],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db[_0xcd84('0x25')]['literal'](_0xcd84('0x43')))),'outboundAnswerAgiCallsDay'],[db[_0xcd84('0x25')]['fn']('COUNT',db[_0xcd84('0x25')]['fn']('IF',db['sequelize'][_0xcd84('0x27')]('`state`\x20=\x2020,\x201,\x20null'))),_0xcd84('0x42')],[db[_0xcd84('0x25')]['fn']('COUNT',db[_0xcd84('0x25')]['fn']('IF',db[_0xcd84('0x25')][_0xcd84('0x27')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),'outboundReCallsDay']],'group':[_0xcd84('0x44')]})[_0xcd84('0xe')](function(_0x4f8e02){logger['info']('GetVoiceQueueHopperHistory',_0x27d0ac);logger['debug'](_0xcd84('0x30'),_0x27d0ac,JSON[_0xcd84('0x12')](_0x4f8e02));_0xd0fa6a(_0x4f8e02);})[_0xcd84('0x18')](function(_0x52e473){logger[_0xcd84('0x13')](_0xcd84('0x30'),_0x52e473[_0xcd84('0x16')],_0x27d0ac);_0x2dd941(_0x83f5f4[_0xcd84('0x13')](0x1f4,_0x52e473[_0xcd84('0x16')]));});});};exports[_0xcd84('0x45')]=function(_0x1b453c){var _0x43e03e=this;return new Promise(function(_0x42e536,_0x2cbf2d){return db[_0xcd84('0x1a')][_0xcd84('0x1f')]({'raw':_0x1b453c[_0xcd84('0x1d')]?_0x1b453c[_0xcd84('0x1d')][_0xcd84('0x20')]===undefined?!![]:![]:!![],'where':_0x1b453c[_0xcd84('0x1d')]?_0x1b453c[_0xcd84('0x1d')][_0xcd84('0x21')]||null:null,'attributes':[[_0xcd84('0x44'),'name'],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['col']('id')),_0xcd84('0x46')],[db[_0xcd84('0x25')]['fn'](_0xcd84('0x24'),db[_0xcd84('0x25')]['fn']('IF',db[_0xcd84('0x25')]['literal'](_0xcd84('0x26')))),_0xcd84('0x47')]],'group':[_0xcd84('0x44')]})[_0xcd84('0xe')](function(_0x2906f3){logger['info'](_0xcd84('0x45'),_0x1b453c);logger[_0xcd84('0x11')](_0xcd84('0x45'),_0x1b453c,JSON['stringify'](_0x2906f3));_0x42e536(_0x2906f3);})[_0xcd84('0x18')](function(_0x6a7605){logger[_0xcd84('0x13')]('GetCampaignHopperHistory',_0x6a7605[_0xcd84('0x16')],_0x1b453c);_0x2cbf2d(_0x43e03e['error'](0x1f4,_0x6a7605[_0xcd84('0x16')]));});});};
\ No newline at end of file
+var _0x3ce4=['then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','stringify','AvgHandleTime','findAll','raw','where','COUNT','predictiveIntervalTotalCalls','sequelize','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','literal','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','`state`\x20=\x204,\x20`talktime`,\x20null','GetVoiceQueueHopperHistory','name','`state`\x20=\x200,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','campaign','GetCampaignHopperHistory','col','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x3ce4,0xcb));var _0x43ce=function(_0x4eafed,_0x26e2bc){_0x4eafed=_0x4eafed-0x0;var _0x159c85=_0x3ce4[_0x4eafed];return _0x159c85;};'use strict';var _=require(_0x43ce('0x0'));var util=require('util');var moment=require(_0x43ce('0x1'));var BPromise=require('bluebird');var rs=require(_0x43ce('0x2'));var fs=require('fs');var Redis=require(_0x43ce('0x3'));var db=require(_0x43ce('0x4'))['db'];var utils=require(_0x43ce('0x5'));var logger=require(_0x43ce('0x6'))('rpc');var config=require(_0x43ce('0x7'));var jayson=require(_0x43ce('0x8'));var client=jayson['client'][_0x43ce('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x51e29b,_0x1f93c9,_0x2fd0e2){return new BPromise(function(_0x189654,_0x20c136){return client['request'](_0x51e29b,_0x2fd0e2)[_0x43ce('0xa')](function(_0x13dbc6){logger[_0x43ce('0xb')](_0x43ce('0xc'),_0x1f93c9,_0x43ce('0xd'));logger[_0x43ce('0xe')](_0x43ce('0xf'),_0x1f93c9,_0x43ce('0xd'),JSON['stringify'](_0x13dbc6));if(_0x13dbc6[_0x43ce('0x10')]){if(_0x13dbc6['error'][_0x43ce('0x11')]===0x1f4){logger[_0x43ce('0x10')](_0x43ce('0xc'),_0x1f93c9,_0x13dbc6[_0x43ce('0x10')][_0x43ce('0x12')]);return _0x20c136(_0x13dbc6[_0x43ce('0x10')][_0x43ce('0x12')]);}logger['error'](_0x43ce('0xc'),_0x1f93c9,_0x13dbc6['error'][_0x43ce('0x12')]);return _0x189654(_0x13dbc6[_0x43ce('0x10')][_0x43ce('0x12')]);}else{logger['info'](_0x43ce('0xc'),_0x1f93c9,_0x43ce('0xd'));_0x189654(_0x13dbc6[_0x43ce('0x13')][_0x43ce('0x12')]);}})[_0x43ce('0x14')](function(_0x34b84b){logger[_0x43ce('0x10')](_0x43ce('0xc'),_0x1f93c9,_0x34b84b);_0x20c136(_0x34b84b);});});}exports[_0x43ce('0x15')]=function(_0x2f679){var _0x361b27=this;return new Promise(function(_0x1b7f2,_0x36b87f){return db[_0x43ce('0x16')][_0x43ce('0x17')](_0x2f679[_0x43ce('0x18')],{'raw':_0x2f679[_0x43ce('0x19')]?_0x2f679['options']['raw']===undefined?!![]:![]:!![]})[_0x43ce('0xa')](function(_0x2f8d63){logger[_0x43ce('0xb')]('CreateCmHopperHistory',_0x2f679);logger['debug'](_0x43ce('0x15'),_0x2f679,JSON[_0x43ce('0x1a')](_0x2f8d63));_0x1b7f2(_0x2f8d63);})[_0x43ce('0x14')](function(_0x439063){logger['error']('CreateCmHopperHistory',_0x439063[_0x43ce('0x12')],_0x2f679);_0x36b87f(_0x361b27['error'](0x1f4,_0x439063[_0x43ce('0x12')]));});});};exports[_0x43ce('0x1b')]=function(_0x2a74ec){var _0x3e7a93=this;return new Promise(function(_0x1d38a1,_0x52f858){return db['CmHopperHistory'][_0x43ce('0x1c')]({'raw':_0x2a74ec[_0x43ce('0x19')]?_0x2a74ec[_0x43ce('0x19')][_0x43ce('0x1d')]===undefined?!![]:![]:!![],'where':_0x2a74ec['options']?_0x2a74ec[_0x43ce('0x19')][_0x43ce('0x1e')]||null:null,'attributes':[[db['sequelize']['fn'](_0x43ce('0x1f'),db['sequelize']['col']('id')),_0x43ce('0x20')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')]['literal'](_0x43ce('0x22')))),_0x43ce('0x23')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db['sequelize']['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x25')))),_0x43ce('0x26')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')]('`state`\x20=\x2011,\x201,\x20null'))),_0x43ce('0x27')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x28'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x29')))),'predictiveIntervalAvgHoldtime'],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x28'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x2a')))),'predictiveIntervalAvgTalktime']]})[_0x43ce('0xa')](function(_0x58e067){logger[_0x43ce('0xb')](_0x43ce('0x1b'),_0x2a74ec);logger['debug'](_0x43ce('0x1b'),_0x2a74ec,JSON['stringify'](_0x58e067));_0x1d38a1(_0x58e067);})['catch'](function(_0x2c5185){logger[_0x43ce('0x10')](_0x43ce('0x1b'),_0x2c5185[_0x43ce('0x12')],_0x2a74ec);_0x52f858(_0x3e7a93[_0x43ce('0x10')](0x1f4,_0x2c5185[_0x43ce('0x12')]));});});};exports[_0x43ce('0x2b')]=function(_0x4269a5){var _0x5b2275=this;return new Promise(function(_0x5065fe,_0x1d01b0){return db[_0x43ce('0x16')][_0x43ce('0x1c')]({'raw':_0x4269a5[_0x43ce('0x19')]?_0x4269a5['options'][_0x43ce('0x1d')]===undefined?!![]:![]:!![],'where':_0x4269a5[_0x43ce('0x19')]?_0x4269a5['options'][_0x43ce('0x1e')]||null:null,'attributes':[['campaign',_0x43ce('0x2c')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x2d')))),'outboundNoSuchCallsDay'],[db['sequelize']['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')]('`state`\x20=\x203,\x201,\x20null'))),_0x43ce('0x2e')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x22')))),_0x43ce('0x2f')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')]('`state`\x20=\x205,\x201,\x20null'))),_0x43ce('0x30')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x31')))),_0x43ce('0x32')],[db[_0x43ce('0x21')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x43ce('0x21')]['literal'](_0x43ce('0x33')))),_0x43ce('0x34')],[db[_0x43ce('0x21')]['fn']('COUNT',db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')]['literal'](_0x43ce('0x35')))),_0x43ce('0x36')],[db[_0x43ce('0x21')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x43ce('0x21')]['literal'](_0x43ce('0x37')))),_0x43ce('0x38')],[db[_0x43ce('0x21')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x39')))),_0x43ce('0x3a')],[db[_0x43ce('0x21')]['fn']('COUNT',db[_0x43ce('0x21')]['fn']('IF',db['sequelize'][_0x43ce('0x24')](_0x43ce('0x3b')))),_0x43ce('0x3c')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x3d')))),_0x43ce('0x3e')],[db['sequelize']['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x3f')))),_0x43ce('0x40')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x41')))),_0x43ce('0x3e')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')]['literal']('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),'outboundReCallsDay']],'group':[_0x43ce('0x42')]})[_0x43ce('0xa')](function(_0x1ad203){logger[_0x43ce('0xb')]('GetVoiceQueueHopperHistory',_0x4269a5);logger[_0x43ce('0xe')]('GetVoiceQueueHopperHistory',_0x4269a5,JSON[_0x43ce('0x1a')](_0x1ad203));_0x5065fe(_0x1ad203);})[_0x43ce('0x14')](function(_0x4dbe46){logger[_0x43ce('0x10')](_0x43ce('0x2b'),_0x4dbe46[_0x43ce('0x12')],_0x4269a5);_0x1d01b0(_0x5b2275[_0x43ce('0x10')](0x1f4,_0x4dbe46[_0x43ce('0x12')]));});});};exports[_0x43ce('0x43')]=function(_0x27272e){var _0x25c07e=this;return new Promise(function(_0x5971a2,_0x28686c){return db[_0x43ce('0x16')][_0x43ce('0x1c')]({'raw':_0x27272e['options']?_0x27272e['options'][_0x43ce('0x1d')]===undefined?!![]:![]:!![],'where':_0x27272e[_0x43ce('0x19')]?_0x27272e['options'][_0x43ce('0x1e')]||null:null,'attributes':[[_0x43ce('0x42'),_0x43ce('0x2c')],[db['sequelize']['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')][_0x43ce('0x44')]('id')),_0x43ce('0x45')],[db[_0x43ce('0x21')]['fn']('COUNT',db[_0x43ce('0x21')]['fn']('IF',db['sequelize']['literal'](_0x43ce('0x22')))),_0x43ce('0x46')]],'group':['campaign']})[_0x43ce('0xa')](function(_0x3c0e30){logger[_0x43ce('0xb')](_0x43ce('0x43'),_0x27272e);logger[_0x43ce('0xe')](_0x43ce('0x43'),_0x27272e,JSON['stringify'](_0x3c0e30));_0x5971a2(_0x3c0e30);})[_0x43ce('0x14')](function(_0xe3c982){logger[_0x43ce('0x10')](_0x43ce('0x43'),_0xe3c982[_0x43ce('0x12')],_0x27272e);_0x28686c(_0x25c07e[_0x43ce('0x10')](0x1f4,_0xe3c982['message']));});});};
\ No newline at end of file
index 824dc8a..8b520fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a69=['../../components/auth/service','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update','exports','util','path','connect-timeout','Router','fs-extra'];(function(_0x522054,_0x3ce23c){var _0x28e8b9=function(_0x23d31b){while(--_0x23d31b){_0x522054['push'](_0x522054['shift']());}};_0x28e8b9(++_0x3ce23c);}(_0x9a69,0x182));var _0x99a6=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x9a69[_0x19950b];return _0x3c6b41;};'use strict';var multer=require('multer');var util=require(_0x99a6('0x0'));var path=require(_0x99a6('0x1'));var timeout=require(_0x99a6('0x2'));var express=require('express');var router=express[_0x99a6('0x3')]();var fs_extra=require(_0x99a6('0x4'));var auth=require(_0x99a6('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x99a6('0x6'));router[_0x99a6('0x7')]('/',auth[_0x99a6('0x8')](),controller[_0x99a6('0x9')]);router[_0x99a6('0x7')](_0x99a6('0xa'),auth['isAuthenticated'](),controller[_0x99a6('0xb')]);router[_0x99a6('0x7')](_0x99a6('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x99a6('0xd')]('/',auth[_0x99a6('0x8')](),controller['create']);router[_0x99a6('0xe')](_0x99a6('0xc'),auth[_0x99a6('0x8')](),controller[_0x99a6('0xf')]);module[_0x99a6('0x10')]=router;
\ No newline at end of file
+var _0x6070=['exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','isAuthenticated','index','get','/describe','/:id','show','post','create','put','update'];(function(_0x28c8fe,_0x250255){var _0x148bbf=function(_0x15f66d){while(--_0x15f66d){_0x28c8fe['push'](_0x28c8fe['shift']());}};_0x148bbf(++_0x250255);}(_0x6070,0xdd));var _0x0607=function(_0x590b46,_0x5522cb){_0x590b46=_0x590b46-0x0;var _0x3f4805=_0x6070[_0x590b46];return _0x3f4805;};'use strict';var multer=require(_0x0607('0x0'));var util=require(_0x0607('0x1'));var path=require('path');var timeout=require(_0x0607('0x2'));var express=require('express');var router=express[_0x0607('0x3')]();var fs_extra=require(_0x0607('0x4'));var auth=require(_0x0607('0x5'));var interaction=require(_0x0607('0x6'));var config=require(_0x0607('0x7'));var controller=require(_0x0607('0x8'));router['get']('/',auth[_0x0607('0x9')](),controller[_0x0607('0xa')]);router[_0x0607('0xb')](_0x0607('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x0607('0xb')](_0x0607('0xd'),auth[_0x0607('0x9')](),controller[_0x0607('0xe')]);router[_0x0607('0xf')]('/',auth[_0x0607('0x9')](),controller[_0x0607('0x10')]);router[_0x0607('0x11')](_0x0607('0xd'),auth['isAuthenticated'](),controller[_0x0607('0x12')]);module[_0x0607('0x13')]=router;
\ No newline at end of file
index 405375b..749c367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce6=['sequelize','STRING','name'];(function(_0x5261bb,_0x4081a5){var _0x53e0a6=function(_0x5c5ede){while(--_0x5c5ede){_0x5261bb['push'](_0x5261bb['shift']());}};_0x53e0a6(++_0x4081a5);}(_0x4ce6,0x108));var _0x64ce=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x4ce6[_0x5e3b04];return _0x1fc44d;};'use strict';var Sequelize=require(_0x64ce('0x0'));module['exports']={'name':{'type':Sequelize[_0x64ce('0x1')],'unique':_0x64ce('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x64ce('0x1')]},'dialPrefix':{'type':Sequelize[_0x64ce('0x1')]}};
\ No newline at end of file
+var _0xc5c7=['name','exports','STRING'];(function(_0x554259,_0x3ef649){var _0x12832a=function(_0x23ec4a){while(--_0x23ec4a){_0x554259['push'](_0x554259['shift']());}};_0x12832a(++_0x3ef649);}(_0xc5c7,0x1cf));var _0x7c5c=function(_0x5480f4,_0xc86b4b){_0x5480f4=_0x5480f4-0x0;var _0x150aaf=_0xc5c7[_0x5480f4];return _0x150aaf;};'use strict';var Sequelize=require('sequelize');module[_0x7c5c('0x0')]={'name':{'type':Sequelize[_0x7c5c('0x1')],'unique':_0x7c5c('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x7c5c('0x1')]},'dialPrefix':{'type':Sequelize[_0x7c5c('0x1')]}};
\ No newline at end of file
index 8ae0e93..277ed81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e96=['mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','error','stack','name','CmList','rawAttributes','key','model','map','query','keys','intersection','attributes','hasOwnProperty','sort','where','pick','filter','type','merge','options','includeAll','include','findAll','rows','catch','filters','fields','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Lists','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','ListId','Disposition','nolimit','order','removeDispositions','ids','CmContact','tags','isArray','join','push','each','omit','success','dataValues','message','Malformed\x20request\x20syntax','format','cf_%d','raw','getContacts','CmCustomField','alias','select','from','c.ListId\x20=\x20?','distinct','field','c.cf_','customField_','item','cm_contact_has_items','CmContactId\x20=\x20c.id','additionalPhone_','description','ItemTypeId\x20=\x20?','description_additionalPhone_','toString','isEmpty','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','addCustomField','transaction','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','sequelize','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findOne','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','info','eml-format','rimraf','fast-json-patch','request-promise','moment'];(function(_0x5189ca,_0x40d55f){var _0x5a8918=function(_0x17589){while(--_0x17589){_0x5189ca['push'](_0x5189ca['shift']());}};_0x5a8918(++_0x40d55f);}(_0x4e96,0x13d));var _0x64e9=function(_0x22bff1,_0x1d964a){_0x22bff1=_0x22bff1-0x0;var _0x279396=_0x4e96[_0x22bff1];return _0x279396;};'use strict';var emlformat=require(_0x64e9('0x0'));var rimraf=require(_0x64e9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x64e9('0x2'));var rp=require(_0x64e9('0x3'));var moment=require(_0x64e9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x64e9('0x5'));var util=require(_0x64e9('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x64e9('0x7'));var ejs=require(_0x64e9('0x8'));var fs=require('fs');var fs_extra=require(_0x64e9('0x9'));var _=require(_0x64e9('0xa'));var squel=require(_0x64e9('0xb'));var crypto=require(_0x64e9('0xc'));var jsforce=require(_0x64e9('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x64e9('0x7'));var querystring=require(_0x64e9('0xe'));var Papa=require(_0x64e9('0xf'));var Redis=require('ioredis');var authService=require(_0x64e9('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x64e9('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x64e9('0x12'))(_0x64e9('0x13'));var utils=require(_0x64e9('0x14'));var config=require(_0x64e9('0x15'));var licenseUtil=require(_0x64e9('0x16'));var db=require(_0x64e9('0x17'))['db'];var csv_results;config[_0x64e9('0x18')]=_[_0x64e9('0x19')](config[_0x64e9('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x64e9('0x1a'))(new Redis(config[_0x64e9('0x18')]));require(_0x64e9('0x1b'))[_0x64e9('0x1c')](socket);function respondWithStatusCode(_0x3a9dec,_0x16d281){_0x16d281=_0x16d281||0xcc;return function(_0x520772){if(_0x520772){return _0x3a9dec[_0x64e9('0x1d')](_0x16d281);}return _0x3a9dec[_0x64e9('0x1e')](_0x16d281)[_0x64e9('0x1f')]();};}function respondWithResult(_0x437f4d,_0x5e4dc5){_0x5e4dc5=_0x5e4dc5||0xc8;return function(_0x2b2581){if(_0x2b2581){return _0x437f4d[_0x64e9('0x1e')](_0x5e4dc5)[_0x64e9('0x20')](_0x2b2581);}};}function respondWithFilteredResult(_0x473626,_0x2675a3){return function(_0x273fb8){if(_0x273fb8){var _0x127f8f=typeof _0x2675a3[_0x64e9('0x21')]===_0x64e9('0x22')&&typeof _0x2675a3['limit']===_0x64e9('0x22');var _0x18e421=_0x273fb8[_0x64e9('0x23')];var _0x1c1da9=_0x127f8f?0x0:_0x2675a3[_0x64e9('0x21')];var _0x4d6497=_0x127f8f?_0x273fb8[_0x64e9('0x23')]:_0x2675a3[_0x64e9('0x21')]+_0x2675a3[_0x64e9('0x24')];var _0xde378d;if(_0x4d6497>=_0x18e421){_0x4d6497=_0x18e421;_0xde378d=0xc8;}else{_0xde378d=0xce;}_0x473626[_0x64e9('0x1e')](_0xde378d);return _0x473626[_0x64e9('0x25')](_0x64e9('0x26'),_0x1c1da9+'-'+_0x4d6497+'/'+_0x18e421)[_0x64e9('0x20')](_0x273fb8);}return null;};}function patchUpdates(_0x2978db){return function(_0x294525){try{jsonpatch[_0x64e9('0x27')](_0x294525,_0x2978db,!![]);}catch(_0x231c33){return BPromise[_0x64e9('0x28')](_0x231c33);}return _0x294525['save']();};}function saveUpdates(_0x21f90c,_0x3095fe){return function(_0x3aa10a){if(_0x3aa10a){return _0x3aa10a[_0x64e9('0x29')](_0x21f90c)[_0x64e9('0x2a')](function(_0x28509e){return _0x28509e;});}return null;};}function removeEntity(_0x199ac3,_0x388f1a){return function(_0x2f8d49){if(_0x2f8d49){return _0x2f8d49[_0x64e9('0x2b')]()[_0x64e9('0x2a')](function(){var _0x547136=_0x2f8d49[_0x64e9('0x2c')]({'plain':!![]});var _0x456c13='Lists';return db['UserProfileResource']['destroy']({'where':{'type':_0x456c13,'resourceId':_0x547136['id']}})[_0x64e9('0x2a')](function(){return _0x2f8d49;});})[_0x64e9('0x2a')](function(){_0x199ac3['status'](0xcc)[_0x64e9('0x1f')]();});}};}function handleEntityNotFound(_0x1b1e99,_0x3fec13){return function(_0x32a899){if(!_0x32a899){_0x1b1e99[_0x64e9('0x1d')](0x194);}return _0x32a899;};}function handleError(_0x191019,_0x46ca16){_0x46ca16=_0x46ca16||0x1f4;return function(_0x44538b){logger[_0x64e9('0x2d')](_0x44538b[_0x64e9('0x2e')]);if(_0x44538b[_0x64e9('0x2f')]){delete _0x44538b[_0x64e9('0x2f')];}_0x191019[_0x64e9('0x1e')](_0x46ca16)['send'](_0x44538b);};}exports['index']=function(_0x4be3e3,_0x4d081b){var _0x3f0c21={},_0x4bdbe8={},_0x433621={'count':0x0,'rows':[]};var _0x3a19c5=_['map'](db[_0x64e9('0x30')][_0x64e9('0x31')],function(_0x4fd996){return{'name':_0x4fd996['fieldName'],'type':_0x4fd996['type'][_0x64e9('0x32')]};});_0x4bdbe8[_0x64e9('0x33')]=_[_0x64e9('0x34')](_0x3a19c5,'name');_0x4bdbe8[_0x64e9('0x35')]=_[_0x64e9('0x36')](_0x4be3e3['query']);_0x4bdbe8['filters']=_[_0x64e9('0x37')](_0x4bdbe8['model'],_0x4bdbe8[_0x64e9('0x35')]);_0x3f0c21[_0x64e9('0x38')]=_['intersection'](_0x4bdbe8['model'],qs['fields'](_0x4be3e3['query']['fields']));_0x3f0c21[_0x64e9('0x38')]=_0x3f0c21[_0x64e9('0x38')]['length']?_0x3f0c21[_0x64e9('0x38')]:_0x4bdbe8['model'];if(!_0x4be3e3[_0x64e9('0x35')][_0x64e9('0x39')]('nolimit')){_0x3f0c21[_0x64e9('0x24')]=qs['limit'](_0x4be3e3[_0x64e9('0x35')][_0x64e9('0x24')]);_0x3f0c21['offset']=qs['offset'](_0x4be3e3[_0x64e9('0x35')][_0x64e9('0x21')]);}_0x3f0c21['order']=qs[_0x64e9('0x3a')](_0x4be3e3[_0x64e9('0x35')]['sort']);_0x3f0c21[_0x64e9('0x3b')]=qs['filters'](_[_0x64e9('0x3c')](_0x4be3e3[_0x64e9('0x35')],_0x4bdbe8['filters']),_0x3a19c5);if(_0x4be3e3[_0x64e9('0x35')][_0x64e9('0x3d')]){_0x3f0c21[_0x64e9('0x3b')]=_['merge'](_0x3f0c21['where'],{'$or':_[_0x64e9('0x34')](_0x3a19c5,function(_0x2dad83){if(_0x2dad83[_0x64e9('0x3e')]!=='VIRTUAL'){var _0x3bee8f={};_0x3bee8f[_0x2dad83['name']]={'$like':'%'+_0x4be3e3[_0x64e9('0x35')][_0x64e9('0x3d')]+'%'};return _0x3bee8f;}})});}_0x3f0c21=_[_0x64e9('0x3f')]({},_0x3f0c21,_0x4be3e3[_0x64e9('0x40')]);var _0x52445f={'where':_0x3f0c21[_0x64e9('0x3b')]};return db[_0x64e9('0x30')][_0x64e9('0x23')](_0x52445f)['then'](function(_0x517a7f){_0x433621[_0x64e9('0x23')]=_0x517a7f;if(_0x4be3e3[_0x64e9('0x35')][_0x64e9('0x41')]){_0x3f0c21[_0x64e9('0x42')]=[{'all':!![]}];}return db['CmList'][_0x64e9('0x43')](_0x3f0c21);})[_0x64e9('0x2a')](function(_0x5d5fec){_0x433621[_0x64e9('0x44')]=_0x5d5fec;return _0x433621;})[_0x64e9('0x2a')](respondWithFilteredResult(_0x4d081b,_0x3f0c21))[_0x64e9('0x45')](handleError(_0x4d081b,null));};exports['show']=function(_0x51daf5,_0x3f8237){var _0xd67164={'raw':![],'where':{'id':_0x51daf5['params']['id']}},_0x4dc0df={};_0x4dc0df[_0x64e9('0x33')]=_[_0x64e9('0x36')](db[_0x64e9('0x30')]['rawAttributes']);_0x4dc0df['query']=_['keys'](_0x51daf5[_0x64e9('0x35')]);_0x4dc0df[_0x64e9('0x46')]=_['intersection'](_0x4dc0df[_0x64e9('0x33')],_0x4dc0df['query']);_0xd67164[_0x64e9('0x38')]=_[_0x64e9('0x37')](_0x4dc0df[_0x64e9('0x33')],qs[_0x64e9('0x47')](_0x51daf5[_0x64e9('0x35')][_0x64e9('0x47')]));_0xd67164[_0x64e9('0x38')]=_0xd67164['attributes'][_0x64e9('0x48')]?_0xd67164[_0x64e9('0x38')]:_0x4dc0df[_0x64e9('0x33')];if(_0x51daf5['query'][_0x64e9('0x41')]){_0xd67164['include']=[{'all':!![]}];}_0xd67164=_[_0x64e9('0x3f')]({},_0xd67164,_0x51daf5[_0x64e9('0x40')]);return db[_0x64e9('0x30')][_0x64e9('0x49')](_0xd67164)['then'](handleEntityNotFound(_0x3f8237,null))['then'](respondWithResult(_0x3f8237,null))[_0x64e9('0x45')](handleError(_0x3f8237,null));};exports['create']=function(_0x29c786,_0x4efe2e){return db[_0x64e9('0x30')][_0x64e9('0x4a')](_0x29c786['body'],{})[_0x64e9('0x2a')](function(_0x73b070){var _0x5e2edd=_0x29c786[_0x64e9('0x4b')]['get']({'plain':!![]});if(!_0x5e2edd)throw new Error(_0x64e9('0x4c'));if(_0x5e2edd[_0x64e9('0x4d')]===_0x64e9('0x4b')){var _0x1791a1=_0x73b070[_0x64e9('0x2c')]({'plain':!![]});var _0x14434a=_0x64e9('0x4e');return db[_0x64e9('0x4f')]['find']({'where':{'name':_0x14434a,'userProfileId':_0x5e2edd[_0x64e9('0x50')]},'raw':!![]})[_0x64e9('0x2a')](function(_0x15a0b2){if(_0x15a0b2&&_0x15a0b2['autoAssociation']===0x0){return db[_0x64e9('0x51')][_0x64e9('0x4a')]({'name':_0x1791a1[_0x64e9('0x2f')],'resourceId':_0x1791a1['id'],'type':_0x15a0b2[_0x64e9('0x2f')],'sectionId':_0x15a0b2['id']},{})[_0x64e9('0x2a')](function(){return _0x73b070;});}else{return _0x73b070;}})['catch'](function(_0x544fe3){logger[_0x64e9('0x2d')](_0x64e9('0x52'),_0x544fe3);throw _0x544fe3;});}return _0x73b070;})[_0x64e9('0x2a')](respondWithResult(_0x4efe2e,0xc9))['catch'](handleError(_0x4efe2e,null));};exports[_0x64e9('0x29')]=function(_0x3356ac,_0x311218){if(_0x3356ac['body']['id']){delete _0x3356ac[_0x64e9('0x53')]['id'];}return db[_0x64e9('0x30')][_0x64e9('0x49')]({'where':{'id':_0x3356ac[_0x64e9('0x54')]['id']}})[_0x64e9('0x2a')](handleEntityNotFound(_0x311218,null))[_0x64e9('0x2a')](saveUpdates(_0x3356ac['body'],null))[_0x64e9('0x2a')](respondWithResult(_0x311218,null))[_0x64e9('0x45')](handleError(_0x311218,null));};exports[_0x64e9('0x2b')]=function(_0x14135b,_0x581459){return db['CmList']['find']({'where':{'id':_0x14135b[_0x64e9('0x54')]['id']}})[_0x64e9('0x2a')](handleEntityNotFound(_0x581459,null))[_0x64e9('0x2a')](removeEntity(_0x581459,null))[_0x64e9('0x45')](handleError(_0x581459,null));};exports[_0x64e9('0x55')]=function(_0xebe6dc,_0x1f04cc){return db['CmList'][_0x64e9('0x55')]()[_0x64e9('0x2a')](respondWithResult(_0x1f04cc,null))[_0x64e9('0x45')](handleError(_0x1f04cc,null));};exports[_0x64e9('0x56')]=function(_0x4495ba,_0x2e2314,_0xfa7f2d){if(_0x4495ba[_0x64e9('0x53')]['id']){delete _0x4495ba['body']['id'];}return db[_0x64e9('0x30')][_0x64e9('0x49')]({'where':{'id':_0x4495ba[_0x64e9('0x54')]['id']}})[_0x64e9('0x2a')](handleEntityNotFound(_0x2e2314,null))['then'](function(_0x36e7eb){if(_0x36e7eb){_0x4495ba[_0x64e9('0x53')][_0x64e9('0x57')]=_0x36e7eb['id'];return db[_0x64e9('0x58')][_0x64e9('0x4a')](_0x4495ba[_0x64e9('0x53')]);}})[_0x64e9('0x2a')](respondWithResult(_0x2e2314,null))[_0x64e9('0x45')](handleError(_0x2e2314,null));};exports['getDispositions']=function(_0x59fe04,_0xa6a4fd,_0x2e290f){var _0x5abc19={'raw':![],'where':{}};var _0x5c64b8={};var _0x488c0a={'count':0x0,'rows':[]};return db['CmList']['findOne']({'where':{'id':_0x59fe04[_0x64e9('0x54')]['id']}})[_0x64e9('0x2a')](handleEntityNotFound(_0xa6a4fd,null))[_0x64e9('0x2a')](function(_0x507945){if(_0x507945){_0x5c64b8[_0x64e9('0x33')]=_['keys'](db[_0x64e9('0x58')][_0x64e9('0x31')]);_0x5c64b8[_0x64e9('0x35')]=_[_0x64e9('0x36')](_0x59fe04[_0x64e9('0x35')]);_0x5c64b8[_0x64e9('0x46')]=_[_0x64e9('0x37')](_0x5c64b8[_0x64e9('0x33')],_0x5c64b8[_0x64e9('0x35')]);_0x5abc19['attributes']=_[_0x64e9('0x37')](_0x5c64b8['model'],qs[_0x64e9('0x47')](_0x59fe04[_0x64e9('0x35')][_0x64e9('0x47')]));_0x5abc19[_0x64e9('0x38')]=_0x5abc19[_0x64e9('0x38')][_0x64e9('0x48')]?_0x5abc19[_0x64e9('0x38')]:_0x5c64b8[_0x64e9('0x33')];if(!_0x59fe04[_0x64e9('0x35')][_0x64e9('0x39')](_0x64e9('0x59'))){_0x5abc19['limit']=qs[_0x64e9('0x24')](_0x59fe04[_0x64e9('0x35')][_0x64e9('0x24')]);_0x5abc19[_0x64e9('0x21')]=qs[_0x64e9('0x21')](_0x59fe04[_0x64e9('0x35')]['offset']);}_0x5abc19[_0x64e9('0x5a')]=qs[_0x64e9('0x3a')](_0x59fe04[_0x64e9('0x35')][_0x64e9('0x3a')]);_0x5abc19[_0x64e9('0x3b')]=qs[_0x64e9('0x46')](_[_0x64e9('0x3c')](_0x59fe04['query'],_0x5c64b8['filters']));_0x5abc19[_0x64e9('0x3b')][_0x64e9('0x57')]=_0x507945['id'];if(_0x59fe04[_0x64e9('0x35')]['filter']){_0x5abc19[_0x64e9('0x3b')]=_[_0x64e9('0x3f')](_0x5abc19[_0x64e9('0x3b')],{'$or':_[_0x64e9('0x34')](_0x5abc19[_0x64e9('0x38')],function(_0x4a2e42){var _0x75053d={};_0x75053d[_0x4a2e42]={'$like':'%'+_0x59fe04[_0x64e9('0x35')][_0x64e9('0x3d')]+'%'};return _0x75053d;})});}_0x5abc19=_[_0x64e9('0x3f')]({},_0x5abc19,_0x59fe04['options']);return db[_0x64e9('0x58')]['count']({'where':_0x5abc19[_0x64e9('0x3b')]})['then'](function(_0x3c23f8){_0x488c0a['count']=_0x3c23f8;if(_0x59fe04[_0x64e9('0x35')][_0x64e9('0x41')]){_0x5abc19[_0x64e9('0x42')]=[{'all':!![]}];}return db[_0x64e9('0x58')]['findAll'](_0x5abc19);})[_0x64e9('0x2a')](function(_0x1d545a){_0x488c0a[_0x64e9('0x44')]=_0x1d545a;return _0x488c0a;});}})[_0x64e9('0x2a')](respondWithFilteredResult(_0xa6a4fd,_0x5abc19))['catch'](handleError(_0xa6a4fd,null));};exports[_0x64e9('0x5b')]=function(_0x2efae1,_0x3727bf,_0xafc70f){return db['CmList'][_0x64e9('0x49')]({'where':{'id':_0x2efae1[_0x64e9('0x54')]['id']}})[_0x64e9('0x2a')](handleEntityNotFound(_0x3727bf,null))[_0x64e9('0x2a')](function(_0x5534dd){if(_0x5534dd){return _0x5534dd['removeDispositions'](_0x2efae1['query'][_0x64e9('0x5c')]);}})[_0x64e9('0x2a')](respondWithStatusCode(_0x3727bf,null))['catch'](handleError(_0x3727bf,null));};exports['addContacts']=function(_0x5bdc78,_0xaab61b,_0x5720bc){return db[_0x64e9('0x30')][_0x64e9('0x49')]({'where':{'id':_0x5bdc78[_0x64e9('0x54')]['id']}})[_0x64e9('0x2a')](handleEntityNotFound(_0xaab61b,null))['then'](function(_0x4b8f25){if(_0x4b8f25){var _0x3ebf6a=[];var _0x5b32af={'success':[],'errors':[]};return db[_0x64e9('0x5d')]['describe']()['then'](function(_0x31fae3){if(_0x5bdc78[_0x64e9('0x53')][_0x64e9('0x5e')]&&_[_0x64e9('0x5f')](_0x5bdc78['body'][_0x64e9('0x5e')])){if(_0x5bdc78['body'][_0x64e9('0x5e')][_0x64e9('0x48')]){_0x5bdc78[_0x64e9('0x53')]['tags']=_0x5bdc78[_0x64e9('0x53')]['tags'][_0x64e9('0x60')](';')+';';}else{_0x5bdc78[_0x64e9('0x53')][_0x64e9('0x5e')]=null;}}else{_0x5bdc78['body']['tags']=null;}if(_0x5bdc78[_0x64e9('0x53')]&&_[_0x64e9('0x5f')](_0x5bdc78[_0x64e9('0x53')])){for(var _0x5d6b78=0x0;_0x5d6b78<_0x5bdc78['body']['length'];_0x5d6b78+=0x1){_0x5bdc78[_0x64e9('0x53')][_0x5d6b78]['ListId']=_0x5bdc78[_0x64e9('0x54')]['id'];_0x3ebf6a[_0x64e9('0x61')](_0x5bdc78[_0x64e9('0x53')][_0x5d6b78]);}return BPromise[_0x64e9('0x62')](_0x3ebf6a,function(_0x18445a){return db[_0x64e9('0x5d')]['create'](_[_0x64e9('0x63')](_0x18445a,[_0x64e9('0x5c'),'id'])||{},{'fields':_[_0x64e9('0x36')](_0x31fae3),'raw':!![]})[_0x64e9('0x2a')](function(_0x319379){_0x5b32af[_0x64e9('0x64')][_0x64e9('0x61')](_0x319379[_0x64e9('0x65')]);})[_0x64e9('0x45')](function(_0x15a813){_0x5b32af['errors'][_0x64e9('0x61')]({'data':_0x18445a,'error':_0x15a813[_0x64e9('0x66')]});});})[_0x64e9('0x2a')](function(_0x2f6156){return _0x5b32af;})[_0x64e9('0x45')](function(_0x180b6b){return _0x180b6b;});}else{_0xaab61b[_0x64e9('0x1e')](0x190)[_0x64e9('0x20')]({'message':_0x64e9('0x67')});}});}})[_0x64e9('0x2a')](respondWithResult(_0xaab61b,null))[_0x64e9('0x45')](handleError(_0xaab61b,null));};exports['getContacts']=function(_0x2bc549,_0x203f89,_0x46044b){var _0x1e03ea;return db[_0x64e9('0x30')][_0x64e9('0x49')]({'where':{'id':_0x2bc549['params']['id']},'include':[{'model':db['CmCustomField'],'as':'CustomFields'}]})[_0x64e9('0x2a')](handleEntityNotFound(_0x203f89,null))['then'](function(_0x72475b){if(_0x72475b){_0x1e03ea=_0x72475b;return db['CmContact'][_0x64e9('0x31')];}})[_0x64e9('0x2a')](function(_0x46171b){if(_0x46171b){var _0xda795d={};var _0x36afe0={};_0x36afe0[_0x64e9('0x33')]=_['concat'](_['keys'](_0x46171b),_[_0x64e9('0x34')](_0x1e03ea['CustomFields'],function(_0x581b73){return util[_0x64e9('0x68')](_0x64e9('0x69'),_0x581b73['id']);}));_0x36afe0[_0x64e9('0x35')]=_[_0x64e9('0x36')](_0x2bc549[_0x64e9('0x35')]);_0x36afe0[_0x64e9('0x46')]=_[_0x64e9('0x37')](_0x36afe0[_0x64e9('0x33')],_0x36afe0['query']);_0xda795d[_0x64e9('0x38')]=_['intersection'](_0x36afe0[_0x64e9('0x33')],qs['fields'](_0x2bc549['query']['fields']));_0xda795d[_0x64e9('0x38')]=_0xda795d[_0x64e9('0x38')][_0x64e9('0x48')]?_0xda795d[_0x64e9('0x38')]:_0x36afe0[_0x64e9('0x33')];if(!_0x2bc549[_0x64e9('0x35')][_0x64e9('0x39')](_0x64e9('0x59'))){_0xda795d['limit']=qs[_0x64e9('0x24')](_0x2bc549[_0x64e9('0x35')]['limit']);_0xda795d[_0x64e9('0x21')]=qs[_0x64e9('0x21')](_0x2bc549['query'][_0x64e9('0x21')]);}_0xda795d[_0x64e9('0x5a')]=qs['sort'](_0x2bc549[_0x64e9('0x35')][_0x64e9('0x3a')]);_0xda795d[_0x64e9('0x3b')]=qs[_0x64e9('0x46')](_[_0x64e9('0x3c')](_0x2bc549[_0x64e9('0x35')],_0x36afe0[_0x64e9('0x46')]));_0xda795d[_0x64e9('0x6a')]=!![];if(_0x2bc549[_0x64e9('0x35')][_0x64e9('0x3d')]){_0xda795d[_0x64e9('0x3b')]=_['merge'](_0xda795d[_0x64e9('0x3b')],{'$or':_[_0x64e9('0x34')](_0xda795d[_0x64e9('0x38')],function(_0x3a1d26){var _0x3cd028={};_0x3cd028[_0x3a1d26]={'$like':'%'+_0x2bc549['query'][_0x64e9('0x3d')]+'%'};return _0x3cd028;})});}_0xda795d=_[_0x64e9('0x3f')]({},_0xda795d,_0x2bc549['options']);return _0x1e03ea[_0x64e9('0x6b')](_0xda795d);}})['then'](respondWithResult(_0x203f89,null))[_0x64e9('0x45')](handleError(_0x203f89,null));};exports['getContactsCsv']=function(_0x3aac6e,_0x4377f5,_0xf41a15){var _0x384f5c;var _0x49c132;var _0x1f8a97;var _0x392f4c=_0x3aac6e['params']['id'];csv_results=[];return db['ContactItemType'][_0x64e9('0x43')]({'attributes':['id',_0x64e9('0x2f')],'raw':!![],'order':['OrderBy']})['then'](function(_0x3dc441){_0x384f5c=_0x3dc441;var _0x3fb4d8=_[_0x64e9('0x36')](db[_0x64e9('0x5d')][_0x64e9('0x31')]);return db[_0x64e9('0x6c')][_0x64e9('0x43')]({'raw':!![],'attributes':['id',_0x64e9('0x6d')]})[_0x64e9('0x2a')](function(_0x2fca9b){_0x49c132=_0x2fca9b;var _0x3bc72a=squel[_0x64e9('0x6e')]()[_0x64e9('0x47')](_0x3fb4d8)[_0x64e9('0x6f')]('cm_contacts','c')[_0x64e9('0x3b')](_0x64e9('0x70'),_0x392f4c)['where']('c.deletedAt\x20is\x20null')[_0x64e9('0x71')]();for(var _0x1daff0=0x0;_0x1daff0<_0x49c132[_0x64e9('0x48')];_0x1daff0++){_0x3bc72a[_0x64e9('0x72')](_0x64e9('0x73')+_0x49c132[_0x1daff0]['id'],_0x64e9('0x74')+_0x49c132[_0x1daff0]['alias']);}for(var _0x1daff0=0x0;_0x1daff0<_0x384f5c[_0x64e9('0x48')];_0x1daff0++){_0x3bc72a['field'](squel[_0x64e9('0x6e')]()[_0x64e9('0x72')](_0x64e9('0x75'))[_0x64e9('0x6f')](_0x64e9('0x76'))[_0x64e9('0x3b')]('ItemTypeId\x20=\x20?',_0x384f5c[_0x1daff0]['id'])[_0x64e9('0x3b')](_0x64e9('0x77')),_0x64e9('0x78')+_0x384f5c[_0x1daff0][_0x64e9('0x2f')]);_0x3bc72a[_0x64e9('0x72')](squel['select']()[_0x64e9('0x72')](_0x64e9('0x79'))[_0x64e9('0x6f')](_0x64e9('0x76'))['where'](_0x64e9('0x7a'),_0x384f5c[_0x1daff0]['id'])['where']('CmContactId\x20=\x20c.id'),_0x64e9('0x7b')+_0x384f5c[_0x1daff0][_0x64e9('0x2f')]);}var _0x2a64fb=[];_0x2a64fb['push'](_0x3bc72a['toString']());BPromise[_0x64e9('0x62')](_0x2a64fb,handleQuery)[_0x64e9('0x2a')](function(_0x3cfd56){handleQuery(_0x3bc72a[_0x64e9('0x7c')]());var _0x34d589=csv_results[0x0];if(!_[_0x64e9('0x7d')](_0x34d589)){var _0x211dda=toCsv(_0x34d589);var _0x508384=Date['now']();fs[_0x64e9('0x7e')](util[_0x64e9('0x68')](_0x64e9('0x7f'),_0x392f4c,_0x508384),_0x211dda);_0x4377f5[_0x64e9('0x80')](_0x64e9('0x81'),_0x64e9('0x82')+util['format'](_0x64e9('0x83'),_0x392f4c,_0x508384));_0x4377f5[_0x64e9('0x80')](_0x64e9('0x84'),_0x64e9('0x85'));return _0x4377f5['download'](util[_0x64e9('0x68')]('/tmp/list_%d_%s.csv',_0x392f4c,_0x508384));}else{return _0x4377f5[_0x64e9('0x1d')](0xcc);}});});});};exports[_0x64e9('0x86')]=function(_0x59db56,_0x13ca62,_0x45b9bf){var _0x49528b;delete _0x59db56['body']['id'];return db[_0x64e9('0x30')]['findOne']({'where':{'id':_0x59db56[_0x64e9('0x54')]['id']}})['then'](handleEntityNotFound(_0x13ca62,null))[_0x64e9('0x2a')](function(_0x406a16){if(_0x406a16){return db['sequelize'][_0x64e9('0x87')](function(_0x359911){return db[_0x64e9('0x6c')][_0x64e9('0x4a')](_0x59db56['body'],{'transaction':_0x359911})[_0x64e9('0x2a')](function(_0x5dc005){_0x49528b=_0x5dc005;return _0x406a16[_0x64e9('0x88')](_0x5dc005,{'transaction':_0x359911});})[_0x64e9('0x2a')](function(){var _0x1dcc80={'type':db[_0x64e9('0x89')][_0x64e9('0x8a')],'transaction':_0x359911};switch(_0x59db56[_0x64e9('0x53')]['type']){case _0x64e9('0x8b'):_0x1dcc80['type']=db['Sequelize']['TEXT'];break;case _0x64e9('0x8c'):_0x1dcc80[_0x64e9('0x3e')]=db['Sequelize'][_0x64e9('0x8d')];break;case _0x64e9('0x8e'):_0x1dcc80[_0x64e9('0x3e')]=db[_0x64e9('0x89')][_0x64e9('0x8f')];_0x1dcc80['defaultValue']=![];break;default:}return db[_0x64e9('0x90')][_0x64e9('0x91')][_0x64e9('0x92')](_0x64e9('0x93'),util['format'](_0x64e9('0x94'),_0x49528b['id']),_0x1dcc80);})[_0x64e9('0x2a')](function(){return _0x49528b;});});}})[_0x64e9('0x2a')](respondWithResult(_0x13ca62,null))[_0x64e9('0x45')](handleError(_0x13ca62,null));};exports[_0x64e9('0x95')]=function(_0x597a1c,_0x2ccdbd,_0x4a98a1){var _0x3bec1c={};var _0x46d58a={};var _0x5d78e1;var _0x3e5a9b;return db[_0x64e9('0x30')][_0x64e9('0x96')]({'where':{'id':_0x597a1c[_0x64e9('0x54')]['id']}})['then'](handleEntityNotFound(_0x2ccdbd,null))[_0x64e9('0x2a')](function(_0x4ef350){if(_0x4ef350){_0x5d78e1=_0x4ef350;_0x46d58a[_0x64e9('0x33')]=_[_0x64e9('0x36')](db['CmCustomField'][_0x64e9('0x31')]);_0x46d58a[_0x64e9('0x35')]=_['keys'](_0x597a1c[_0x64e9('0x35')]);_0x46d58a[_0x64e9('0x46')]=_[_0x64e9('0x37')](_0x46d58a['model'],_0x46d58a[_0x64e9('0x35')]);_0x3bec1c[_0x64e9('0x38')]=_[_0x64e9('0x37')](_0x46d58a[_0x64e9('0x33')],qs[_0x64e9('0x47')](_0x597a1c['query'][_0x64e9('0x47')]));_0x3bec1c[_0x64e9('0x38')]=_0x3bec1c[_0x64e9('0x38')]['length']?_0x3bec1c[_0x64e9('0x38')]:_0x46d58a[_0x64e9('0x33')];_0x3bec1c[_0x64e9('0x5a')]=qs[_0x64e9('0x3a')](_0x597a1c[_0x64e9('0x35')][_0x64e9('0x3a')]);_0x3bec1c['where']=qs[_0x64e9('0x46')](_[_0x64e9('0x3c')](_0x597a1c['query'],_0x46d58a[_0x64e9('0x46')]));_0x3bec1c[_0x64e9('0x3b')]=_[_0x64e9('0x3f')](_0x3bec1c[_0x64e9('0x3b')],{'$or':[{'ListId':_0x4ef350['id']},{'ListId':null}]});if(_0x597a1c[_0x64e9('0x35')][_0x64e9('0x3d')]){_0x3bec1c[_0x64e9('0x3b')]=_[_0x64e9('0x3f')](_0x3bec1c['where'],{'$or':_['map'](_0x3bec1c[_0x64e9('0x38')],function(_0x2efc81){var _0xeec1de={};_0xeec1de[_0x2efc81]={'$like':'%'+_0x597a1c['query'][_0x64e9('0x3d')]+'%'};return _0xeec1de;})});}_0x3bec1c=_['merge']({},_0x3bec1c,_0x597a1c[_0x64e9('0x40')]);return db[_0x64e9('0x6c')][_0x64e9('0x97')](_0x3bec1c);}})[_0x64e9('0x2a')](respondWithResult(_0x2ccdbd,null))['catch'](handleError(_0x2ccdbd,null));};exports[_0x64e9('0x98')]=function(_0x1f155e,_0x5ba49b){return db[_0x64e9('0x6c')][_0x64e9('0x97')]({'where':{'ListId':null}})[_0x64e9('0x2a')](handleEntityNotFound(_0x5ba49b,null))[_0x64e9('0x2a')](function(_0x454c04){return _0x454c04;})['then'](respondWithResult(_0x5ba49b,null))[_0x64e9('0x45')](handleError(_0x5ba49b,null));};exports[_0x64e9('0x99')]=function(_0x1f87b0,_0x1b5d2a,_0x5019ec){return db['CmList'][_0x64e9('0x49')]({'where':{'id':_0x1f87b0['params']['id']}})[_0x64e9('0x2a')](handleEntityNotFound(_0x1b5d2a,null))[_0x64e9('0x2a')](function(_0x4b5e25){if(_0x4b5e25){return _0x4b5e25['addAgents'](_0x1f87b0[_0x64e9('0x53')][_0x64e9('0x5c')],_['omit'](_0x1f87b0[_0x64e9('0x53')],[_0x64e9('0x5c'),'id'])||{})[_0x64e9('0x9a')](function(_0x634da){for(var _0x418756=0x0;_0x418756<_0x1f87b0[_0x64e9('0x53')][_0x64e9('0x5c')][_0x64e9('0x48')];_0x418756+=0x1){socket[_0x64e9('0x9b')](_0x64e9('0x9c'),{'UserId':Number(_0x1f87b0[_0x64e9('0x53')][_0x64e9('0x5c')][_0x418756]),'CmListId':Number(_0x1f87b0['params']['id'])});}return _0x634da;});}})[_0x64e9('0x2a')](respondWithResult(_0x1b5d2a,null))[_0x64e9('0x45')](handleError(_0x1b5d2a,null));};exports['removeAgents']=function(_0x3c2723,_0x4cad57,_0x503ce2){return db[_0x64e9('0x30')][_0x64e9('0x49')]({'where':{'id':_0x3c2723[_0x64e9('0x54')]['id']}})[_0x64e9('0x2a')](handleEntityNotFound(_0x4cad57,null))[_0x64e9('0x2a')](function(_0x2f3b8f){if(_0x2f3b8f){return _0x2f3b8f[_0x64e9('0x9d')](_0x3c2723['query']['ids'])[_0x64e9('0x2a')](function(){if(_[_0x64e9('0x5f')](_0x3c2723[_0x64e9('0x35')][_0x64e9('0x5c')])){for(var _0x161e3e=0x0;_0x161e3e<_0x3c2723[_0x64e9('0x35')][_0x64e9('0x5c')][_0x64e9('0x48')];_0x161e3e+=0x1){socket[_0x64e9('0x9b')](_0x64e9('0x9e'),{'UserId':Number(_0x3c2723[_0x64e9('0x35')][_0x64e9('0x5c')][_0x161e3e]),'CmListId':Number(_0x3c2723['params']['id'])});}}else{socket[_0x64e9('0x9b')](_0x64e9('0x9e'),{'UserId':Number(_0x3c2723[_0x64e9('0x35')]['ids']),'CmListId':Number(_0x3c2723['params']['id'])});}});}})[_0x64e9('0x2a')](respondWithStatusCode(_0x4cad57,null))[_0x64e9('0x45')](handleError(_0x4cad57,null));};exports['getAgents']=function(_0x68f661,_0x1e6a89,_0x41c227){var _0x10b462={};var _0xb167a7={};var _0x263278;var _0x5aa8cb;return db[_0x64e9('0x30')][_0x64e9('0x96')]({'where':{'id':_0x68f661['params']['id']}})['then'](handleEntityNotFound(_0x1e6a89,null))[_0x64e9('0x2a')](function(_0x2db49e){if(_0x2db49e){_0x263278=_0x2db49e;_0xb167a7[_0x64e9('0x33')]=_[_0x64e9('0x36')](db['User'][_0x64e9('0x31')]);_0xb167a7[_0x64e9('0x35')]=_[_0x64e9('0x36')](_0x68f661[_0x64e9('0x35')]);_0xb167a7['filters']=_[_0x64e9('0x37')](_0xb167a7['model'],_0xb167a7[_0x64e9('0x35')]);_0x10b462[_0x64e9('0x38')]=_[_0x64e9('0x37')](_0xb167a7[_0x64e9('0x33')],qs[_0x64e9('0x47')](_0x68f661[_0x64e9('0x35')]['fields']));_0x10b462[_0x64e9('0x38')]=_0x10b462[_0x64e9('0x38')][_0x64e9('0x48')]?_0x10b462[_0x64e9('0x38')]:_0xb167a7[_0x64e9('0x33')];_0x10b462[_0x64e9('0x5a')]=qs[_0x64e9('0x3a')](_0x68f661['query'][_0x64e9('0x3a')]);_0x10b462[_0x64e9('0x3b')]=qs['filters'](_[_0x64e9('0x3c')](_0x68f661[_0x64e9('0x35')],_0xb167a7[_0x64e9('0x46')]));if(_0x68f661['query'][_0x64e9('0x3d')]){_0x10b462[_0x64e9('0x3b')]=_[_0x64e9('0x3f')](_0x10b462[_0x64e9('0x3b')],{'$or':_[_0x64e9('0x34')](_0x10b462[_0x64e9('0x38')],function(_0x3aad82){var _0x3ed309={};_0x3ed309[_0x3aad82]={'$like':'%'+_0x68f661['query'][_0x64e9('0x3d')]+'%'};return _0x3ed309;})});}_0x10b462=_[_0x64e9('0x3f')]({},_0x10b462,_0x68f661[_0x64e9('0x40')]);return _0x263278[_0x64e9('0x9f')](_0x10b462);}})[_0x64e9('0x2a')](function(_0x1db55e){if(_0x1db55e){_0x5aa8cb=_0x1db55e[_0x64e9('0x48')];if(!_0x68f661[_0x64e9('0x35')][_0x64e9('0x39')]('nolimit')){_0x10b462[_0x64e9('0x24')]=qs['limit'](_0x68f661[_0x64e9('0x35')][_0x64e9('0x24')]);_0x10b462[_0x64e9('0x21')]=qs[_0x64e9('0x21')](_0x68f661['query'][_0x64e9('0x21')]);}return _0x263278[_0x64e9('0x9f')](_0x10b462);}})['then'](function(_0x240104){if(_0x240104){return _0x240104?{'count':_0x5aa8cb,'rows':_0x240104}:null;}})[_0x64e9('0x2a')](respondWithResult(_0x1e6a89,null))[_0x64e9('0x45')](handleError(_0x1e6a89,null));};function handleQuery(_0x3e2beb){logger[_0x64e9('0xa0')](_0x3e2beb);return db[_0x64e9('0x90')][_0x64e9('0x35')](_0x3e2beb)['spread'](function(_0x29e2d4){csv_results['push'](_0x29e2d4);})[_0x64e9('0x45')](function(_0x341973){logger[_0x64e9('0x2d')](_0x341973[_0x64e9('0x66')]);});}
\ No newline at end of file
+var _0x8d12=['fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','limit','sort','where','pick','merge','filter','include','findAll','rows','catch','show','params','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','getDispositions','findOne','Disposition','order','ListId','includeAll','removeDispositions','ids','addContacts','CmContact','tags','isArray','push','each','omit','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','raw','getContactsCsv','ContactItemType','OrderBy','alias','select','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','field','customField_','item','cm_contact_has_items','additionalPhone_','description','from','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','description_additionalPhone_','toString','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','text/csv','addCustomField','transaction','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','defaultValue','sequelize','queryInterface','addColumn','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','User','info','eml-format','rimraf','zip-dir','moment','mustache','util','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','Lists','error','stack','name','index','map','CmList','rawAttributes'];(function(_0x1e2080,_0x53283b){var _0x260111=function(_0x15da5e){while(--_0x15da5e){_0x1e2080['push'](_0x1e2080['shift']());}};_0x260111(++_0x53283b);}(_0x8d12,0x73));var _0x28d1=function(_0x4d0662,_0x145963){_0x4d0662=_0x4d0662-0x0;var _0x6eea6d=_0x8d12[_0x4d0662];return _0x6eea6d;};'use strict';var emlformat=require(_0x28d1('0x0'));var rimraf=require(_0x28d1('0x1'));var zipdir=require(_0x28d1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x28d1('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x28d1('0x4'));var util=require(_0x28d1('0x5'));var path=require(_0x28d1('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x28d1('0x7'));var _=require(_0x28d1('0x8'));var squel=require(_0x28d1('0x9'));var crypto=require(_0x28d1('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x28d1('0xb'));var toCsv=require(_0x28d1('0xc'));var querystring=require(_0x28d1('0xd'));var Papa=require(_0x28d1('0xe'));var Redis=require('ioredis');var authService=require(_0x28d1('0xf'));var qs=require(_0x28d1('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x28d1('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x28d1('0x12'))['db'];var csv_results;config[_0x28d1('0x13')]=_[_0x28d1('0x14')](config[_0x28d1('0x13')],{'host':_0x28d1('0x15'),'port':0x18eb});var socket=require(_0x28d1('0x16'))(new Redis(config[_0x28d1('0x13')]));require(_0x28d1('0x17'))[_0x28d1('0x18')](socket);function respondWithStatusCode(_0x42a40e,_0x3bef32){_0x3bef32=_0x3bef32||0xcc;return function(_0x2d7cb4){if(_0x2d7cb4){return _0x42a40e[_0x28d1('0x19')](_0x3bef32);}return _0x42a40e['status'](_0x3bef32)[_0x28d1('0x1a')]();};}function respondWithResult(_0xb2ecc9,_0x5cdf02){_0x5cdf02=_0x5cdf02||0xc8;return function(_0x525948){if(_0x525948){return _0xb2ecc9[_0x28d1('0x1b')](_0x5cdf02)[_0x28d1('0x1c')](_0x525948);}};}function respondWithFilteredResult(_0x1f6f49,_0x2fe834){return function(_0x3f1639){if(_0x3f1639){var _0x55e61c=typeof _0x2fe834[_0x28d1('0x1d')]===_0x28d1('0x1e')&&typeof _0x2fe834['limit']===_0x28d1('0x1e');var _0x5c80ab=_0x3f1639['count'];var _0x20ac2b=_0x55e61c?0x0:_0x2fe834[_0x28d1('0x1d')];var _0x59d042=_0x55e61c?_0x3f1639[_0x28d1('0x1f')]:_0x2fe834[_0x28d1('0x1d')]+_0x2fe834['limit'];var _0x2fc0f6;if(_0x59d042>=_0x5c80ab){_0x59d042=_0x5c80ab;_0x2fc0f6=0xc8;}else{_0x2fc0f6=0xce;}_0x1f6f49['status'](_0x2fc0f6);return _0x1f6f49[_0x28d1('0x20')](_0x28d1('0x21'),_0x20ac2b+'-'+_0x59d042+'/'+_0x5c80ab)[_0x28d1('0x1c')](_0x3f1639);}return null;};}function patchUpdates(_0x335f67){return function(_0x41b940){try{jsonpatch[_0x28d1('0x22')](_0x41b940,_0x335f67,!![]);}catch(_0x3f6c3a){return BPromise[_0x28d1('0x23')](_0x3f6c3a);}return _0x41b940[_0x28d1('0x24')]();};}function saveUpdates(_0x1f3a35,_0x27b27d){return function(_0xc76818){if(_0xc76818){return _0xc76818[_0x28d1('0x25')](_0x1f3a35)[_0x28d1('0x26')](function(_0x598b87){return _0x598b87;});}return null;};}function removeEntity(_0xc18d4d,_0x3011ac){return function(_0x3ca812){if(_0x3ca812){return _0x3ca812[_0x28d1('0x27')]()[_0x28d1('0x26')](function(){var _0x438fe5=_0x3ca812['get']({'plain':!![]});var _0x91e7dc=_0x28d1('0x28');return db['UserProfileResource'][_0x28d1('0x27')]({'where':{'type':_0x91e7dc,'resourceId':_0x438fe5['id']}})['then'](function(){return _0x3ca812;});})[_0x28d1('0x26')](function(){_0xc18d4d[_0x28d1('0x1b')](0xcc)[_0x28d1('0x1a')]();});}};}function handleEntityNotFound(_0x216892,_0x2ed446){return function(_0x14b7ce){if(!_0x14b7ce){_0x216892[_0x28d1('0x19')](0x194);}return _0x14b7ce;};}function handleError(_0xbe4693,_0x325220){_0x325220=_0x325220||0x1f4;return function(_0x52ee0d){logger[_0x28d1('0x29')](_0x52ee0d[_0x28d1('0x2a')]);if(_0x52ee0d['name']){delete _0x52ee0d[_0x28d1('0x2b')];}_0xbe4693[_0x28d1('0x1b')](_0x325220)['send'](_0x52ee0d);};}exports[_0x28d1('0x2c')]=function(_0x567443,_0x578759){var _0xa28603={},_0x17c99e={},_0x1eee54={'count':0x0,'rows':[]};var _0x42d6ed=_[_0x28d1('0x2d')](db[_0x28d1('0x2e')][_0x28d1('0x2f')],function(_0x1e54df){return{'name':_0x1e54df[_0x28d1('0x30')],'type':_0x1e54df[_0x28d1('0x31')][_0x28d1('0x32')]};});_0x17c99e['model']=_[_0x28d1('0x2d')](_0x42d6ed,_0x28d1('0x2b'));_0x17c99e[_0x28d1('0x33')]=_[_0x28d1('0x34')](_0x567443[_0x28d1('0x33')]);_0x17c99e[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0x17c99e['model'],_0x17c99e['query']);_0xa28603[_0x28d1('0x37')]=_[_0x28d1('0x36')](_0x17c99e['model'],qs[_0x28d1('0x38')](_0x567443[_0x28d1('0x33')][_0x28d1('0x38')]));_0xa28603[_0x28d1('0x37')]=_0xa28603[_0x28d1('0x37')][_0x28d1('0x39')]?_0xa28603[_0x28d1('0x37')]:_0x17c99e[_0x28d1('0x3a')];if(!_0x567443[_0x28d1('0x33')][_0x28d1('0x3b')](_0x28d1('0x3c'))){_0xa28603[_0x28d1('0x3d')]=qs[_0x28d1('0x3d')](_0x567443[_0x28d1('0x33')][_0x28d1('0x3d')]);_0xa28603[_0x28d1('0x1d')]=qs[_0x28d1('0x1d')](_0x567443[_0x28d1('0x33')][_0x28d1('0x1d')]);}_0xa28603['order']=qs['sort'](_0x567443[_0x28d1('0x33')][_0x28d1('0x3e')]);_0xa28603[_0x28d1('0x3f')]=qs[_0x28d1('0x35')](_[_0x28d1('0x40')](_0x567443[_0x28d1('0x33')],_0x17c99e[_0x28d1('0x35')]),_0x42d6ed);if(_0x567443[_0x28d1('0x33')]['filter']){_0xa28603[_0x28d1('0x3f')]=_[_0x28d1('0x41')](_0xa28603[_0x28d1('0x3f')],{'$or':_[_0x28d1('0x2d')](_0x42d6ed,function(_0x198cde){if(_0x198cde[_0x28d1('0x31')]!=='VIRTUAL'){var _0x213493={};_0x213493[_0x198cde[_0x28d1('0x2b')]]={'$like':'%'+_0x567443['query'][_0x28d1('0x42')]+'%'};return _0x213493;}})});}_0xa28603=_['merge']({},_0xa28603,_0x567443['options']);var _0x427c41={'where':_0xa28603[_0x28d1('0x3f')]};return db[_0x28d1('0x2e')][_0x28d1('0x1f')](_0x427c41)[_0x28d1('0x26')](function(_0x570796){_0x1eee54['count']=_0x570796;if(_0x567443[_0x28d1('0x33')]['includeAll']){_0xa28603[_0x28d1('0x43')]=[{'all':!![]}];}return db['CmList'][_0x28d1('0x44')](_0xa28603);})[_0x28d1('0x26')](function(_0x2ab3c7){_0x1eee54[_0x28d1('0x45')]=_0x2ab3c7;return _0x1eee54;})['then'](respondWithFilteredResult(_0x578759,_0xa28603))[_0x28d1('0x46')](handleError(_0x578759,null));};exports[_0x28d1('0x47')]=function(_0x305d14,_0x1b3893){var _0x508176={'raw':![],'where':{'id':_0x305d14[_0x28d1('0x48')]['id']}},_0x52625f={};_0x52625f[_0x28d1('0x3a')]=_['keys'](db[_0x28d1('0x2e')][_0x28d1('0x2f')]);_0x52625f[_0x28d1('0x33')]=_['keys'](_0x305d14[_0x28d1('0x33')]);_0x52625f[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0x52625f[_0x28d1('0x3a')],_0x52625f[_0x28d1('0x33')]);_0x508176[_0x28d1('0x37')]=_[_0x28d1('0x36')](_0x52625f['model'],qs['fields'](_0x305d14[_0x28d1('0x33')]['fields']));_0x508176[_0x28d1('0x37')]=_0x508176['attributes']['length']?_0x508176['attributes']:_0x52625f[_0x28d1('0x3a')];if(_0x305d14[_0x28d1('0x33')]['includeAll']){_0x508176[_0x28d1('0x43')]=[{'all':!![]}];}_0x508176=_[_0x28d1('0x41')]({},_0x508176,_0x305d14[_0x28d1('0x49')]);return db['CmList']['find'](_0x508176)[_0x28d1('0x26')](handleEntityNotFound(_0x1b3893,null))[_0x28d1('0x26')](respondWithResult(_0x1b3893,null))[_0x28d1('0x46')](handleError(_0x1b3893,null));};exports[_0x28d1('0x4a')]=function(_0x2b8136,_0x302f2f){return db['CmList'][_0x28d1('0x4a')](_0x2b8136[_0x28d1('0x4b')],{})['then'](function(_0x411016){var _0x78dcb5=_0x2b8136[_0x28d1('0x4c')]['get']({'plain':!![]});if(!_0x78dcb5)throw new Error(_0x28d1('0x4d'));if(_0x78dcb5[_0x28d1('0x4e')]===_0x28d1('0x4c')){var _0x156cce=_0x411016[_0x28d1('0x4f')]({'plain':!![]});var _0x3b83c4=_0x28d1('0x28');return db['UserProfileSection']['find']({'where':{'name':_0x3b83c4,'userProfileId':_0x78dcb5[_0x28d1('0x50')]},'raw':!![]})['then'](function(_0x2f9e0d){if(_0x2f9e0d&&_0x2f9e0d[_0x28d1('0x51')]===0x0){return db['UserProfileResource'][_0x28d1('0x4a')]({'name':_0x156cce[_0x28d1('0x2b')],'resourceId':_0x156cce['id'],'type':_0x2f9e0d[_0x28d1('0x2b')],'sectionId':_0x2f9e0d['id']},{})['then'](function(){return _0x411016;});}else{return _0x411016;}})['catch'](function(_0x42de4f){logger[_0x28d1('0x29')](_0x28d1('0x52'),_0x42de4f);throw _0x42de4f;});}return _0x411016;})[_0x28d1('0x26')](respondWithResult(_0x302f2f,0xc9))[_0x28d1('0x46')](handleError(_0x302f2f,null));};exports[_0x28d1('0x25')]=function(_0x330cbe,_0x5d9672){if(_0x330cbe[_0x28d1('0x4b')]['id']){delete _0x330cbe[_0x28d1('0x4b')]['id'];}return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x330cbe[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x5d9672,null))[_0x28d1('0x26')](saveUpdates(_0x330cbe['body'],null))[_0x28d1('0x26')](respondWithResult(_0x5d9672,null))['catch'](handleError(_0x5d9672,null));};exports[_0x28d1('0x27')]=function(_0x381faf,_0x247ae4){return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x381faf[_0x28d1('0x48')]['id']}})[_0x28d1('0x26')](handleEntityNotFound(_0x247ae4,null))[_0x28d1('0x26')](removeEntity(_0x247ae4,null))[_0x28d1('0x46')](handleError(_0x247ae4,null));};exports[_0x28d1('0x54')]=function(_0x98f181,_0x28bfbd){return db['CmList']['describe']()['then'](respondWithResult(_0x28bfbd,null))['catch'](handleError(_0x28bfbd,null));};exports['addDisposition']=function(_0x43241c,_0x5d3abb,_0x2745ea){if(_0x43241c[_0x28d1('0x4b')]['id']){delete _0x43241c[_0x28d1('0x4b')]['id'];}return db['CmList']['find']({'where':{'id':_0x43241c['params']['id']}})['then'](handleEntityNotFound(_0x5d3abb,null))['then'](function(_0x59fa78){if(_0x59fa78){_0x43241c[_0x28d1('0x4b')]['ListId']=_0x59fa78['id'];return db['Disposition']['create'](_0x43241c['body']);}})[_0x28d1('0x26')](respondWithResult(_0x5d3abb,null))[_0x28d1('0x46')](handleError(_0x5d3abb,null));};exports[_0x28d1('0x55')]=function(_0x5ea19d,_0x49d237,_0x19f671){var _0x5d307b={'raw':![],'where':{}};var _0x5c77b8={};var _0x36bb98={'count':0x0,'rows':[]};return db[_0x28d1('0x2e')][_0x28d1('0x56')]({'where':{'id':_0x5ea19d[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x49d237,null))[_0x28d1('0x26')](function(_0x5743c9){if(_0x5743c9){_0x5c77b8['model']=_[_0x28d1('0x34')](db[_0x28d1('0x57')][_0x28d1('0x2f')]);_0x5c77b8['query']=_[_0x28d1('0x34')](_0x5ea19d[_0x28d1('0x33')]);_0x5c77b8[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0x5c77b8[_0x28d1('0x3a')],_0x5c77b8[_0x28d1('0x33')]);_0x5d307b[_0x28d1('0x37')]=_[_0x28d1('0x36')](_0x5c77b8[_0x28d1('0x3a')],qs[_0x28d1('0x38')](_0x5ea19d['query'][_0x28d1('0x38')]));_0x5d307b[_0x28d1('0x37')]=_0x5d307b[_0x28d1('0x37')][_0x28d1('0x39')]?_0x5d307b[_0x28d1('0x37')]:_0x5c77b8['model'];if(!_0x5ea19d[_0x28d1('0x33')]['hasOwnProperty'](_0x28d1('0x3c'))){_0x5d307b[_0x28d1('0x3d')]=qs[_0x28d1('0x3d')](_0x5ea19d[_0x28d1('0x33')]['limit']);_0x5d307b[_0x28d1('0x1d')]=qs[_0x28d1('0x1d')](_0x5ea19d[_0x28d1('0x33')][_0x28d1('0x1d')]);}_0x5d307b[_0x28d1('0x58')]=qs[_0x28d1('0x3e')](_0x5ea19d[_0x28d1('0x33')]['sort']);_0x5d307b['where']=qs['filters'](_['pick'](_0x5ea19d[_0x28d1('0x33')],_0x5c77b8[_0x28d1('0x35')]));_0x5d307b['where'][_0x28d1('0x59')]=_0x5743c9['id'];if(_0x5ea19d['query'][_0x28d1('0x42')]){_0x5d307b[_0x28d1('0x3f')]=_[_0x28d1('0x41')](_0x5d307b['where'],{'$or':_[_0x28d1('0x2d')](_0x5d307b['attributes'],function(_0x7a46cc){var _0x3044a8={};_0x3044a8[_0x7a46cc]={'$like':'%'+_0x5ea19d[_0x28d1('0x33')][_0x28d1('0x42')]+'%'};return _0x3044a8;})});}_0x5d307b=_[_0x28d1('0x41')]({},_0x5d307b,_0x5ea19d[_0x28d1('0x49')]);return db[_0x28d1('0x57')][_0x28d1('0x1f')]({'where':_0x5d307b['where']})[_0x28d1('0x26')](function(_0x95fc3c){_0x36bb98[_0x28d1('0x1f')]=_0x95fc3c;if(_0x5ea19d[_0x28d1('0x33')][_0x28d1('0x5a')]){_0x5d307b[_0x28d1('0x43')]=[{'all':!![]}];}return db['Disposition'][_0x28d1('0x44')](_0x5d307b);})[_0x28d1('0x26')](function(_0x187ecd){_0x36bb98[_0x28d1('0x45')]=_0x187ecd;return _0x36bb98;});}})[_0x28d1('0x26')](respondWithFilteredResult(_0x49d237,_0x5d307b))[_0x28d1('0x46')](handleError(_0x49d237,null));};exports[_0x28d1('0x5b')]=function(_0x1b63b4,_0x359ee0,_0x189e0a){return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x1b63b4[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x359ee0,null))[_0x28d1('0x26')](function(_0x43bd47){if(_0x43bd47){return _0x43bd47['removeDispositions'](_0x1b63b4[_0x28d1('0x33')][_0x28d1('0x5c')]);}})[_0x28d1('0x26')](respondWithStatusCode(_0x359ee0,null))[_0x28d1('0x46')](handleError(_0x359ee0,null));};exports[_0x28d1('0x5d')]=function(_0x84a941,_0x5bd7d5,_0x24a504){return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x84a941['params']['id']}})['then'](handleEntityNotFound(_0x5bd7d5,null))[_0x28d1('0x26')](function(_0x47a1a3){if(_0x47a1a3){var _0x4c51bb=[];var _0x5d5014={'success':[],'errors':[]};return db[_0x28d1('0x5e')]['describe']()['then'](function(_0x344704){if(_0x84a941[_0x28d1('0x4b')][_0x28d1('0x5f')]&&_[_0x28d1('0x60')](_0x84a941[_0x28d1('0x4b')][_0x28d1('0x5f')])){if(_0x84a941[_0x28d1('0x4b')][_0x28d1('0x5f')][_0x28d1('0x39')]){_0x84a941['body'][_0x28d1('0x5f')]=_0x84a941[_0x28d1('0x4b')]['tags']['join'](';')+';';}else{_0x84a941[_0x28d1('0x4b')][_0x28d1('0x5f')]=null;}}else{_0x84a941['body'][_0x28d1('0x5f')]=null;}if(_0x84a941[_0x28d1('0x4b')]&&_[_0x28d1('0x60')](_0x84a941[_0x28d1('0x4b')])){for(var _0x300b88=0x0;_0x300b88<_0x84a941['body'][_0x28d1('0x39')];_0x300b88+=0x1){_0x84a941[_0x28d1('0x4b')][_0x300b88][_0x28d1('0x59')]=_0x84a941[_0x28d1('0x48')]['id'];_0x4c51bb[_0x28d1('0x61')](_0x84a941['body'][_0x300b88]);}return BPromise[_0x28d1('0x62')](_0x4c51bb,function(_0x2f3128){return db[_0x28d1('0x5e')]['create'](_[_0x28d1('0x63')](_0x2f3128,[_0x28d1('0x5c'),'id'])||{},{'fields':_['keys'](_0x344704),'raw':!![]})['then'](function(_0x3f7ca3){_0x5d5014[_0x28d1('0x64')]['push'](_0x3f7ca3[_0x28d1('0x65')]);})[_0x28d1('0x46')](function(_0x258f68){_0x5d5014[_0x28d1('0x66')][_0x28d1('0x61')]({'data':_0x2f3128,'error':_0x258f68[_0x28d1('0x67')]});});})[_0x28d1('0x26')](function(_0x1f5de8){return _0x5d5014;})[_0x28d1('0x46')](function(_0x502bf3){return _0x502bf3;});}else{_0x5bd7d5[_0x28d1('0x1b')](0x190)['json']({'message':_0x28d1('0x68')});}});}})['then'](respondWithResult(_0x5bd7d5,null))[_0x28d1('0x46')](handleError(_0x5bd7d5,null));};exports[_0x28d1('0x69')]=function(_0x165699,_0x238a26,_0x208337){var _0x136b10;return db[_0x28d1('0x2e')]['find']({'where':{'id':_0x165699[_0x28d1('0x48')]['id']},'include':[{'model':db[_0x28d1('0x6a')],'as':_0x28d1('0x6b')}]})[_0x28d1('0x26')](handleEntityNotFound(_0x238a26,null))[_0x28d1('0x26')](function(_0x1bda69){if(_0x1bda69){_0x136b10=_0x1bda69;return db['CmContact'][_0x28d1('0x2f')];}})[_0x28d1('0x26')](function(_0xcd5de9){if(_0xcd5de9){var _0x57fe8d={};var _0xee4b82={};_0xee4b82[_0x28d1('0x3a')]=_[_0x28d1('0x6c')](_[_0x28d1('0x34')](_0xcd5de9),_['map'](_0x136b10[_0x28d1('0x6b')],function(_0x12d09d){return util[_0x28d1('0x6d')](_0x28d1('0x6e'),_0x12d09d['id']);}));_0xee4b82[_0x28d1('0x33')]=_[_0x28d1('0x34')](_0x165699['query']);_0xee4b82[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0xee4b82[_0x28d1('0x3a')],_0xee4b82[_0x28d1('0x33')]);_0x57fe8d[_0x28d1('0x37')]=_[_0x28d1('0x36')](_0xee4b82['model'],qs[_0x28d1('0x38')](_0x165699['query']['fields']));_0x57fe8d[_0x28d1('0x37')]=_0x57fe8d[_0x28d1('0x37')][_0x28d1('0x39')]?_0x57fe8d[_0x28d1('0x37')]:_0xee4b82[_0x28d1('0x3a')];if(!_0x165699[_0x28d1('0x33')][_0x28d1('0x3b')](_0x28d1('0x3c'))){_0x57fe8d['limit']=qs['limit'](_0x165699[_0x28d1('0x33')]['limit']);_0x57fe8d['offset']=qs[_0x28d1('0x1d')](_0x165699[_0x28d1('0x33')]['offset']);}_0x57fe8d[_0x28d1('0x58')]=qs[_0x28d1('0x3e')](_0x165699[_0x28d1('0x33')][_0x28d1('0x3e')]);_0x57fe8d[_0x28d1('0x3f')]=qs[_0x28d1('0x35')](_[_0x28d1('0x40')](_0x165699[_0x28d1('0x33')],_0xee4b82[_0x28d1('0x35')]));_0x57fe8d[_0x28d1('0x6f')]=!![];if(_0x165699[_0x28d1('0x33')][_0x28d1('0x42')]){_0x57fe8d['where']=_[_0x28d1('0x41')](_0x57fe8d['where'],{'$or':_['map'](_0x57fe8d[_0x28d1('0x37')],function(_0x4446fa){var _0x4d4a99={};_0x4d4a99[_0x4446fa]={'$like':'%'+_0x165699[_0x28d1('0x33')][_0x28d1('0x42')]+'%'};return _0x4d4a99;})});}_0x57fe8d=_['merge']({},_0x57fe8d,_0x165699[_0x28d1('0x49')]);return _0x136b10[_0x28d1('0x69')](_0x57fe8d);}})[_0x28d1('0x26')](respondWithResult(_0x238a26,null))[_0x28d1('0x46')](handleError(_0x238a26,null));};exports[_0x28d1('0x70')]=function(_0x1b9c4b,_0x30e606,_0x52abb9){var _0x5850e9;var _0x16dce3;var _0x51268e;var _0x1fa141=_0x1b9c4b[_0x28d1('0x48')]['id'];csv_results=[];return db[_0x28d1('0x71')][_0x28d1('0x44')]({'attributes':['id',_0x28d1('0x2b')],'raw':!![],'order':[_0x28d1('0x72')]})[_0x28d1('0x26')](function(_0x4371bf){_0x5850e9=_0x4371bf;var _0x590e32=_[_0x28d1('0x34')](db[_0x28d1('0x5e')][_0x28d1('0x2f')]);return db[_0x28d1('0x6a')][_0x28d1('0x44')]({'raw':!![],'attributes':['id',_0x28d1('0x73')]})['then'](function(_0x290636){_0x16dce3=_0x290636;var _0x2e7943=squel[_0x28d1('0x74')]()['fields'](_0x590e32)['from'](_0x28d1('0x75'),'c')[_0x28d1('0x3f')](_0x28d1('0x76'),_0x1fa141)[_0x28d1('0x3f')](_0x28d1('0x77'))[_0x28d1('0x78')]();for(var _0x12f02a=0x0;_0x12f02a<_0x16dce3[_0x28d1('0x39')];_0x12f02a++){_0x2e7943[_0x28d1('0x79')]('c.cf_'+_0x16dce3[_0x12f02a]['id'],_0x28d1('0x7a')+_0x16dce3[_0x12f02a]['alias']);}for(var _0x12f02a=0x0;_0x12f02a<_0x5850e9[_0x28d1('0x39')];_0x12f02a++){_0x2e7943['field'](squel['select']()['field'](_0x28d1('0x7b'))['from'](_0x28d1('0x7c'))[_0x28d1('0x3f')]('ItemTypeId\x20=\x20?',_0x5850e9[_0x12f02a]['id'])[_0x28d1('0x3f')]('CmContactId\x20=\x20c.id'),_0x28d1('0x7d')+_0x5850e9[_0x12f02a][_0x28d1('0x2b')]);_0x2e7943[_0x28d1('0x79')](squel[_0x28d1('0x74')]()[_0x28d1('0x79')](_0x28d1('0x7e'))[_0x28d1('0x7f')]('cm_contact_has_items')[_0x28d1('0x3f')](_0x28d1('0x80'),_0x5850e9[_0x12f02a]['id'])[_0x28d1('0x3f')](_0x28d1('0x81')),_0x28d1('0x82')+_0x5850e9[_0x12f02a][_0x28d1('0x2b')]);}var _0x4eb653=[];_0x4eb653['push'](_0x2e7943[_0x28d1('0x83')]());BPromise['each'](_0x4eb653,handleQuery)[_0x28d1('0x26')](function(_0x1d2b60){handleQuery(_0x2e7943[_0x28d1('0x83')]());var _0x4d83c8=csv_results[0x0];if(!_[_0x28d1('0x84')](_0x4d83c8)){var _0x512f6b=toCsv(_0x4d83c8);var _0x498275=Date[_0x28d1('0x85')]();fs[_0x28d1('0x86')](util['format'](_0x28d1('0x87'),_0x1fa141,_0x498275),_0x512f6b);_0x30e606['setHeader'](_0x28d1('0x88'),_0x28d1('0x89')+util[_0x28d1('0x6d')]('list_%d_%s.csv',_0x1fa141,_0x498275));_0x30e606['setHeader']('Content-type',_0x28d1('0x8a'));return _0x30e606['download'](util[_0x28d1('0x6d')](_0x28d1('0x87'),_0x1fa141,_0x498275));}else{return _0x30e606['sendStatus'](0xcc);}});});});};exports[_0x28d1('0x8b')]=function(_0x5ae7a5,_0x23c411,_0xe2bfed){var _0x59914f;delete _0x5ae7a5[_0x28d1('0x4b')]['id'];return db[_0x28d1('0x2e')][_0x28d1('0x56')]({'where':{'id':_0x5ae7a5[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x23c411,null))[_0x28d1('0x26')](function(_0x4b30b8){if(_0x4b30b8){return db['sequelize'][_0x28d1('0x8c')](function(_0x39cbf0){return db['CmCustomField'][_0x28d1('0x4a')](_0x5ae7a5['body'],{'transaction':_0x39cbf0})[_0x28d1('0x26')](function(_0x34884e){_0x59914f=_0x34884e;return _0x4b30b8[_0x28d1('0x8d')](_0x34884e,{'transaction':_0x39cbf0});})[_0x28d1('0x26')](function(){var _0x54775e={'type':db[_0x28d1('0x8e')][_0x28d1('0x8f')],'transaction':_0x39cbf0};switch(_0x5ae7a5[_0x28d1('0x4b')][_0x28d1('0x31')]){case'text':_0x54775e[_0x28d1('0x31')]=db['Sequelize'][_0x28d1('0x8f')];break;case _0x28d1('0x90'):_0x54775e[_0x28d1('0x31')]=db[_0x28d1('0x8e')][_0x28d1('0x91')];break;case _0x28d1('0x92'):_0x54775e[_0x28d1('0x31')]=db[_0x28d1('0x8e')]['BOOLEAN'];_0x54775e[_0x28d1('0x93')]=![];break;default:}return db[_0x28d1('0x94')][_0x28d1('0x95')][_0x28d1('0x96')]('cm_contacts',util[_0x28d1('0x6d')](_0x28d1('0x97'),_0x59914f['id']),_0x54775e);})['then'](function(){return _0x59914f;});});}})[_0x28d1('0x26')](respondWithResult(_0x23c411,null))[_0x28d1('0x46')](handleError(_0x23c411,null));};exports[_0x28d1('0x98')]=function(_0x30a2a5,_0x29e16a,_0x3c1ad2){var _0x60d892={};var _0x18f877={};var _0x2afc4b;var _0x21b481;return db[_0x28d1('0x2e')][_0x28d1('0x56')]({'where':{'id':_0x30a2a5[_0x28d1('0x48')]['id']}})[_0x28d1('0x26')](handleEntityNotFound(_0x29e16a,null))[_0x28d1('0x26')](function(_0x25a172){if(_0x25a172){_0x2afc4b=_0x25a172;_0x18f877[_0x28d1('0x3a')]=_['keys'](db[_0x28d1('0x6a')][_0x28d1('0x2f')]);_0x18f877[_0x28d1('0x33')]=_[_0x28d1('0x34')](_0x30a2a5[_0x28d1('0x33')]);_0x18f877[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0x18f877[_0x28d1('0x3a')],_0x18f877[_0x28d1('0x33')]);_0x60d892[_0x28d1('0x37')]=_['intersection'](_0x18f877['model'],qs['fields'](_0x30a2a5[_0x28d1('0x33')][_0x28d1('0x38')]));_0x60d892[_0x28d1('0x37')]=_0x60d892[_0x28d1('0x37')][_0x28d1('0x39')]?_0x60d892[_0x28d1('0x37')]:_0x18f877['model'];_0x60d892[_0x28d1('0x58')]=qs['sort'](_0x30a2a5[_0x28d1('0x33')]['sort']);_0x60d892[_0x28d1('0x3f')]=qs[_0x28d1('0x35')](_['pick'](_0x30a2a5[_0x28d1('0x33')],_0x18f877[_0x28d1('0x35')]));_0x60d892[_0x28d1('0x3f')]=_[_0x28d1('0x41')](_0x60d892[_0x28d1('0x3f')],{'$or':[{'ListId':_0x25a172['id']},{'ListId':null}]});if(_0x30a2a5[_0x28d1('0x33')]['filter']){_0x60d892['where']=_[_0x28d1('0x41')](_0x60d892[_0x28d1('0x3f')],{'$or':_[_0x28d1('0x2d')](_0x60d892['attributes'],function(_0x3dc8fc){var _0x1f55ec={};_0x1f55ec[_0x3dc8fc]={'$like':'%'+_0x30a2a5['query']['filter']+'%'};return _0x1f55ec;})});}_0x60d892=_['merge']({},_0x60d892,_0x30a2a5[_0x28d1('0x49')]);return db[_0x28d1('0x6a')][_0x28d1('0x99')](_0x60d892);}})[_0x28d1('0x26')](respondWithResult(_0x29e16a,null))[_0x28d1('0x46')](handleError(_0x29e16a,null));};exports['getGlobalCustomFields']=function(_0x44883c,_0x3a062f){return db[_0x28d1('0x6a')][_0x28d1('0x99')]({'where':{'ListId':null}})[_0x28d1('0x26')](handleEntityNotFound(_0x3a062f,null))[_0x28d1('0x26')](function(_0x2d2713){return _0x2d2713;})[_0x28d1('0x26')](respondWithResult(_0x3a062f,null))[_0x28d1('0x46')](handleError(_0x3a062f,null));};exports[_0x28d1('0x9a')]=function(_0x188afc,_0x15c9dc,_0x5131fe){return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x188afc[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x15c9dc,null))[_0x28d1('0x26')](function(_0x1c9eb5){if(_0x1c9eb5){return _0x1c9eb5[_0x28d1('0x9a')](_0x188afc[_0x28d1('0x4b')][_0x28d1('0x5c')],_['omit'](_0x188afc['body'],[_0x28d1('0x5c'),'id'])||{})[_0x28d1('0x9b')](function(_0x3d2251){for(var _0x58e362=0x0;_0x58e362<_0x188afc[_0x28d1('0x4b')][_0x28d1('0x5c')][_0x28d1('0x39')];_0x58e362+=0x1){socket['emit'](_0x28d1('0x9c'),{'UserId':Number(_0x188afc[_0x28d1('0x4b')][_0x28d1('0x5c')][_0x58e362]),'CmListId':Number(_0x188afc[_0x28d1('0x48')]['id'])});}return _0x3d2251;});}})[_0x28d1('0x26')](respondWithResult(_0x15c9dc,null))[_0x28d1('0x46')](handleError(_0x15c9dc,null));};exports[_0x28d1('0x9d')]=function(_0x2123c3,_0x14d422,_0x4a60fc){return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x2123c3['params']['id']}})[_0x28d1('0x26')](handleEntityNotFound(_0x14d422,null))['then'](function(_0x4d3757){if(_0x4d3757){return _0x4d3757['removeAgents'](_0x2123c3[_0x28d1('0x33')][_0x28d1('0x5c')])[_0x28d1('0x26')](function(){if(_['isArray'](_0x2123c3[_0x28d1('0x33')]['ids'])){for(var _0x31492c=0x0;_0x31492c<_0x2123c3[_0x28d1('0x33')][_0x28d1('0x5c')]['length'];_0x31492c+=0x1){socket[_0x28d1('0x9e')](_0x28d1('0x9f'),{'UserId':Number(_0x2123c3[_0x28d1('0x33')][_0x28d1('0x5c')][_0x31492c]),'CmListId':Number(_0x2123c3[_0x28d1('0x48')]['id'])});}}else{socket[_0x28d1('0x9e')]('userCmList:remove',{'UserId':Number(_0x2123c3[_0x28d1('0x33')]['ids']),'CmListId':Number(_0x2123c3['params']['id'])});}});}})[_0x28d1('0x26')](respondWithStatusCode(_0x14d422,null))['catch'](handleError(_0x14d422,null));};exports[_0x28d1('0xa0')]=function(_0x87aaf3,_0x284f06,_0xa2f840){var _0x50cf1f={};var _0x53f9dd={};var _0x2cdc48;var _0x3fdf06;return db[_0x28d1('0x2e')]['findOne']({'where':{'id':_0x87aaf3[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x284f06,null))[_0x28d1('0x26')](function(_0x5f232e){if(_0x5f232e){_0x2cdc48=_0x5f232e;_0x53f9dd[_0x28d1('0x3a')]=_[_0x28d1('0x34')](db[_0x28d1('0xa1')][_0x28d1('0x2f')]);_0x53f9dd[_0x28d1('0x33')]=_['keys'](_0x87aaf3['query']);_0x53f9dd[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0x53f9dd['model'],_0x53f9dd['query']);_0x50cf1f[_0x28d1('0x37')]=_[_0x28d1('0x36')](_0x53f9dd['model'],qs['fields'](_0x87aaf3[_0x28d1('0x33')][_0x28d1('0x38')]));_0x50cf1f[_0x28d1('0x37')]=_0x50cf1f[_0x28d1('0x37')]['length']?_0x50cf1f[_0x28d1('0x37')]:_0x53f9dd[_0x28d1('0x3a')];_0x50cf1f[_0x28d1('0x58')]=qs[_0x28d1('0x3e')](_0x87aaf3[_0x28d1('0x33')][_0x28d1('0x3e')]);_0x50cf1f[_0x28d1('0x3f')]=qs['filters'](_[_0x28d1('0x40')](_0x87aaf3[_0x28d1('0x33')],_0x53f9dd['filters']));if(_0x87aaf3['query']['filter']){_0x50cf1f['where']=_[_0x28d1('0x41')](_0x50cf1f[_0x28d1('0x3f')],{'$or':_['map'](_0x50cf1f[_0x28d1('0x37')],function(_0x554e9e){var _0x2962d8={};_0x2962d8[_0x554e9e]={'$like':'%'+_0x87aaf3[_0x28d1('0x33')][_0x28d1('0x42')]+'%'};return _0x2962d8;})});}_0x50cf1f=_[_0x28d1('0x41')]({},_0x50cf1f,_0x87aaf3[_0x28d1('0x49')]);return _0x2cdc48[_0x28d1('0xa0')](_0x50cf1f);}})['then'](function(_0x18f5df){if(_0x18f5df){_0x3fdf06=_0x18f5df[_0x28d1('0x39')];if(!_0x87aaf3[_0x28d1('0x33')][_0x28d1('0x3b')]('nolimit')){_0x50cf1f[_0x28d1('0x3d')]=qs[_0x28d1('0x3d')](_0x87aaf3['query'][_0x28d1('0x3d')]);_0x50cf1f[_0x28d1('0x1d')]=qs[_0x28d1('0x1d')](_0x87aaf3['query'][_0x28d1('0x1d')]);}return _0x2cdc48[_0x28d1('0xa0')](_0x50cf1f);}})[_0x28d1('0x26')](function(_0x3f187c){if(_0x3f187c){return _0x3f187c?{'count':_0x3fdf06,'rows':_0x3f187c}:null;}})['then'](respondWithResult(_0x284f06,null))[_0x28d1('0x46')](handleError(_0x284f06,null));};function handleQuery(_0x3818b5){logger[_0x28d1('0xa2')](_0x3818b5);return db[_0x28d1('0x94')]['query'](_0x3818b5)['spread'](function(_0x9da2a4){csv_results['push'](_0x9da2a4);})[_0x28d1('0x46')](function(_0x44bed5){logger[_0x28d1('0x29')](_0x44bed5[_0x28d1('0x67')]);});}
\ No newline at end of file
index 9a0bc4b..64fbc35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmList'];(function(_0x55a67f,_0x2fe3aa){var _0x197c8c=function(_0x1f0c9f){while(--_0x1f0c9f){_0x55a67f['push'](_0x55a67f['shift']());}};_0x197c8c(++_0x2fe3aa);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'use strict';var EventEmitter=require(_0x7995('0x0'));var CmList=require(_0x7995('0x1'))['db'][_0x7995('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0x7995('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7995('0x4'),'afterDestroy':_0x7995('0x5')};function emitEvent(_0x1902b4){return function(_0x462a03,_0x576d89,_0x744bea){CmListEvents[_0x7995('0x6')](_0x1902b4+':'+_0x462a03['id'],_0x462a03);CmListEvents[_0x7995('0x6')](_0x1902b4,_0x462a03);_0x744bea(null);};}for(var e in events){if(events[_0x7995('0x7')](e)){var event=events[e];CmList[_0x7995('0x8')](e,emitEvent(event));}}module[_0x7995('0x9')]=CmListEvents;
\ No newline at end of file
+var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x2c7780,_0x100f4a){var _0x580bc8=function(_0x3d435c){while(--_0x3d435c){_0x2c7780['push'](_0x2c7780['shift']());}};_0x580bc8(++_0x100f4a);}(_0x7217,0x19e));var _0x7721=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x7217[_0x139a3c];return _0x2b375b;};'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
index 1ec69ca..c68b99f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['rimraf','../../config/environment','./cmList.attributes','exports','cm_lists','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x5e77db,_0x356d1c){var _0x34b675=function(_0x4914b5){while(--_0x4914b5){_0x5e77db['push'](_0x5e77db['shift']());}};_0x34b675(++_0x356d1c);}(_0xb903,0x185));var _0x3b90=function(_0x2940a4,_0x25041f){_0x2940a4=_0x2940a4-0x0;var _0x2724c7=_0xb903[_0x2940a4];return _0x2724c7;};'use strict';var _=require(_0x3b90('0x0'));var util=require(_0x3b90('0x1'));var logger=require(_0x3b90('0x2'))(_0x3b90('0x3'));var moment=require('moment');var BPromise=require(_0x3b90('0x4'));var rp=require(_0x3b90('0x5'));var fs=require('fs');var path=require(_0x3b90('0x6'));var rimraf=require(_0x3b90('0x7'));var config=require(_0x3b90('0x8'));var attributes=require(_0x3b90('0x9'));module[_0x3b90('0xa')]=function(_0x5acd76,_0x15b68f){return _0x5acd76['define']('CmList',attributes,{'tableName':_0x3b90('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c81=['moment','../../config/environment','./cmList.attributes','exports','define','CmList','lodash','util','api'];(function(_0x323fd3,_0x5ca5a4){var _0x526412=function(_0x12d765){while(--_0x12d765){_0x323fd3['push'](_0x323fd3['shift']());}};_0x526412(++_0x5ca5a4);}(_0x3c81,0x102));var _0x13c8=function(_0x51bbb7,_0x32f055){_0x51bbb7=_0x51bbb7-0x0;var _0x1ea30b=_0x3c81[_0x51bbb7];return _0x1ea30b;};'use strict';var _=require(_0x13c8('0x0'));var util=require(_0x13c8('0x1'));var logger=require('../../config/logger')(_0x13c8('0x2'));var moment=require(_0x13c8('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x13c8('0x4'));var attributes=require(_0x13c8('0x5'));module[_0x13c8('0x6')]=function(_0x1c16f1,_0x2a4d66){return _0x1c16f1[_0x13c8('0x7')](_0x13c8('0x8'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a949e6e..1cd75b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2238=['message','info','result','util','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./cmList.socket','register','then','CmList,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x15c4d9,_0x4c38ff){var _0x18f0f2=function(_0xa14932){while(--_0xa14932){_0x15c4d9['push'](_0x15c4d9['shift']());}};_0x18f0f2(++_0x4c38ff);}(_0x2238,0xd5));var _0x8223=function(_0x4a18e9,_0xd5f3aa){_0x4a18e9=_0x4a18e9-0x0;var _0x4b92be=_0x2238[_0x4a18e9];return _0x4b92be;};'use strict';var _=require('lodash');var util=require(_0x8223('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8223('0x1'));var fs=require('fs');var Redis=require(_0x8223('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8223('0x3'));var logger=require('../../config/logger')(_0x8223('0x4'));var config=require(_0x8223('0x5'));var jayson=require(_0x8223('0x6'));var client=jayson['client'][_0x8223('0x7')]({'port':0x232a});config[_0x8223('0x8')]=_[_0x8223('0x9')](config['redis'],{'host':_0x8223('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8223('0x8')]));require(_0x8223('0xb'))[_0x8223('0xc')](socket);function respondWithRpcPromise(_0x38f299,_0x761859,_0x3b7aff){return new BPromise(function(_0x1d455a,_0x4f6abe){return client['request'](_0x38f299,_0x3b7aff)[_0x8223('0xd')](function(_0x5c42f1){logger['info'](_0x8223('0xe'),_0x761859,_0x8223('0xf'));logger['debug']('CmList,\x20%s,\x20%s,\x20%s',_0x761859,_0x8223('0xf'),JSON[_0x8223('0x10')](_0x5c42f1));if(_0x5c42f1[_0x8223('0x11')]){if(_0x5c42f1[_0x8223('0x11')]['code']===0x1f4){logger[_0x8223('0x11')](_0x8223('0xe'),_0x761859,_0x5c42f1[_0x8223('0x11')]['message']);return _0x4f6abe(_0x5c42f1[_0x8223('0x11')][_0x8223('0x12')]);}logger[_0x8223('0x11')](_0x8223('0xe'),_0x761859,_0x5c42f1['error'][_0x8223('0x12')]);return _0x1d455a(_0x5c42f1[_0x8223('0x11')]['message']);}else{logger[_0x8223('0x13')](_0x8223('0xe'),_0x761859,_0x8223('0xf'));_0x1d455a(_0x5c42f1[_0x8223('0x14')][_0x8223('0x12')]);}})['catch'](function(_0x2a6bb6){logger[_0x8223('0x11')](_0x8223('0xe'),_0x761859,_0x2a6bb6);_0x4f6abe(_0x2a6bb6);});});}
\ No newline at end of file
+var _0x12a5=['util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x12a5,0x1af));var _0x512a=function(_0x4c73f2,_0x5160fb){_0x4c73f2=_0x4c73f2-0x0;var _0x259697=_0x12a5[_0x4c73f2];return _0x259697;};'use strict';var _=require(_0x512a('0x0'));var util=require(_0x512a('0x1'));var moment=require('moment');var BPromise=require(_0x512a('0x2'));var rs=require(_0x512a('0x3'));var fs=require('fs');var Redis=require(_0x512a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x512a('0x5'));var logger=require(_0x512a('0x6'))(_0x512a('0x7'));var config=require('../../config/environment');var jayson=require(_0x512a('0x8'));var client=jayson['client'][_0x512a('0x9')]({'port':0x232a});config[_0x512a('0xa')]=_[_0x512a('0xb')](config['redis'],{'host':_0x512a('0xc'),'port':0x18eb});var socket=require(_0x512a('0xd'))(new Redis(config[_0x512a('0xa')]));require(_0x512a('0xe'))[_0x512a('0xf')](socket);function respondWithRpcPromise(_0x286667,_0x1d2bd8,_0x110b21){return new BPromise(function(_0x59c44b,_0x42d892){return client[_0x512a('0x10')](_0x286667,_0x110b21)[_0x512a('0x11')](function(_0x171f1d){logger[_0x512a('0x12')](_0x512a('0x13'),_0x1d2bd8,'request\x20sent');logger[_0x512a('0x14')]('CmList,\x20%s,\x20%s,\x20%s',_0x1d2bd8,_0x512a('0x15'),JSON[_0x512a('0x16')](_0x171f1d));if(_0x171f1d[_0x512a('0x17')]){if(_0x171f1d[_0x512a('0x17')][_0x512a('0x18')]===0x1f4){logger['error'](_0x512a('0x13'),_0x1d2bd8,_0x171f1d['error'][_0x512a('0x19')]);return _0x42d892(_0x171f1d[_0x512a('0x17')][_0x512a('0x19')]);}logger[_0x512a('0x17')](_0x512a('0x13'),_0x1d2bd8,_0x171f1d[_0x512a('0x17')][_0x512a('0x19')]);return _0x59c44b(_0x171f1d[_0x512a('0x17')][_0x512a('0x19')]);}else{logger[_0x512a('0x12')](_0x512a('0x13'),_0x1d2bd8,_0x512a('0x15'));_0x59c44b(_0x171f1d['result']['message']);}})[_0x512a('0x1a')](function(_0x539e7c){logger[_0x512a('0x17')]('CmList,\x20%s,\x20%s',_0x1d2bd8,_0x539e7c);_0x42d892(_0x539e7c);});});}
\ No newline at end of file
index 903dee3..e981de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb40c=['register','cmList:','./cmList.events','save','remove','emit','removeListener'];(function(_0x5cdde3,_0x9789ce){var _0x53619d=function(_0x418e43){while(--_0x418e43){_0x5cdde3['push'](_0x5cdde3['shift']());}};_0x53619d(++_0x9789ce);}(_0xb40c,0x79));var _0xcb40=function(_0x59fb58,_0x5b6971){_0x59fb58=_0x59fb58-0x0;var _0x2e0dfd=_0xb40c[_0x59fb58];return _0x2e0dfd;};'use strict';var CmListEvents=require(_0xcb40('0x0'));var events=[_0xcb40('0x1'),_0xcb40('0x2'),'update'];function createListener(_0x1349f3,_0x5cf787){return function(_0x20d461){_0x5cf787[_0xcb40('0x3')](_0x1349f3,_0x20d461);};}function removeListener(_0x5a3fdb,_0x261700){return function(){CmListEvents[_0xcb40('0x4')](_0x5a3fdb,_0x261700);};}exports[_0xcb40('0x5')]=function(_0x1d5ad5){for(var _0x474ead=0x0,_0x3549f7=events['length'];_0x474ead<_0x3549f7;_0x474ead++){var _0x51fdd8=events[_0x474ead];var _0x21658c=createListener(_0xcb40('0x6')+_0x51fdd8,_0x1d5ad5);CmListEvents['on'](_0x51fdd8,_0x21658c);}};
\ No newline at end of file
+var _0x25bc=['save','remove','register','length','./cmList.events'];(function(_0x1d17a7,_0x49670a){var _0x491e32=function(_0x1e88fa){while(--_0x1e88fa){_0x1d17a7['push'](_0x1d17a7['shift']());}};_0x491e32(++_0x49670a);}(_0x25bc,0x13f));var _0xc25b=function(_0x204093,_0x2549bb){_0x204093=_0x204093-0x0;var _0x31a20b=_0x25bc[_0x204093];return _0x31a20b;};'use strict';var CmListEvents=require(_0xc25b('0x0'));var events=[_0xc25b('0x1'),_0xc25b('0x2'),'update'];function createListener(_0x47b90d,_0x4f2684){return function(_0x3c652b){_0x4f2684['emit'](_0x47b90d,_0x3c652b);};}function removeListener(_0x3082af,_0x1c18e0){return function(){CmListEvents['removeListener'](_0x3082af,_0x1c18e0);};}exports[_0xc25b('0x3')]=function(_0x34e1cd){for(var _0x5394af=0x0,_0x461d9a=events[_0xc25b('0x4')];_0x5394af<_0x461d9a;_0x5394af++){var _0x256ea2=events[_0x5394af];var _0x38a855=createListener('cmList:'+_0x256ea2,_0x34e1cd);CmListEvents['on'](_0x256ea2,_0x38a855);}};
\ No newline at end of file
index 534e7f2..849d6e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6475=['exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmList.controller','isAuthenticated','index','describe','get','/global_fields','/:id','show','/:id/dispositions','getDispositions','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','addCustomField','addAgents','update','delete','removeDispositions'];(function(_0x3d962f,_0x518679){var _0x11c5cf=function(_0x13d0ca){while(--_0x13d0ca){_0x3d962f['push'](_0x3d962f['shift']());}};_0x11c5cf(++_0x518679);}(_0x6475,0x133));var _0x5647=function(_0x4b0342,_0x5b071c){_0x4b0342=_0x4b0342-0x0;var _0xc62aa3=_0x6475[_0x4b0342];return _0xc62aa3;};'use strict';var multer=require(_0x5647('0x0'));var util=require(_0x5647('0x1'));var path=require(_0x5647('0x2'));var timeout=require('connect-timeout');var express=require(_0x5647('0x3'));var router=express[_0x5647('0x4')]();var fs_extra=require(_0x5647('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x5647('0x6'));var config=require(_0x5647('0x7'));var controller=require(_0x5647('0x8'));router['get']('/',auth[_0x5647('0x9')](),controller[_0x5647('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x5647('0xb')]);router[_0x5647('0xc')](_0x5647('0xd'),auth['isAuthenticated'](),controller['getGlobalCustomFields']);router[_0x5647('0xc')](_0x5647('0xe'),auth[_0x5647('0x9')](),controller[_0x5647('0xf')]);router[_0x5647('0xc')](_0x5647('0x10'),auth['isAuthenticated'](),controller[_0x5647('0x11')]);router['get']('/:id/contacts',auth[_0x5647('0x9')](),controller[_0x5647('0x12')]);router['get'](_0x5647('0x13'),auth[_0x5647('0x9')](),controller[_0x5647('0x14')]);router[_0x5647('0xc')](_0x5647('0x15'),auth['isAuthenticated'](),controller[_0x5647('0x16')]);router[_0x5647('0xc')](_0x5647('0x17'),auth[_0x5647('0x9')](),controller[_0x5647('0x18')]);router[_0x5647('0x19')]('/',auth[_0x5647('0x9')](),controller[_0x5647('0x1a')]);router['post'](_0x5647('0x10'),auth['isAuthenticated'](),controller[_0x5647('0x1b')]);router[_0x5647('0x19')]('/:id/contacts',auth['isAuthenticated'](),controller['addContacts']);router[_0x5647('0x19')]('/:id/fields',auth['isAuthenticated'](),controller[_0x5647('0x1c')]);router['post']('/:id/users',auth[_0x5647('0x9')](),controller[_0x5647('0x1d')]);router['put']('/:id',auth[_0x5647('0x9')](),controller[_0x5647('0x1e')]);router[_0x5647('0x1f')](_0x5647('0xe'),auth[_0x5647('0x9')](),controller['destroy']);router[_0x5647('0x1f')](_0x5647('0x10'),auth[_0x5647('0x9')](),controller[_0x5647('0x20')]);router[_0x5647('0x1f')](_0x5647('0x17'),auth[_0x5647('0x9')](),controller['removeAgents']);module[_0x5647('0x21')]=router;
\ No newline at end of file
+var _0x0384=['isAuthenticated','/describe','describe','/global_fields','getGlobalCustomFields','/:id','show','/:id/dispositions','/:id/contacts','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addContacts','addCustomField','addAgents','destroy','delete','removeDispositions','removeAgents','multer','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./cmList.controller','get'];(function(_0x2751d3,_0xf6726a){var _0x587c44=function(_0x49a41d){while(--_0x49a41d){_0x2751d3['push'](_0x2751d3['shift']());}};_0x587c44(++_0xf6726a);}(_0x0384,0xb2));var _0x4038=function(_0x3fa568,_0x1a33bb){_0x3fa568=_0x3fa568-0x0;var _0x29ea0c=_0x0384[_0x3fa568];return _0x29ea0c;};'use strict';var multer=require(_0x4038('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4038('0x1'));var express=require(_0x4038('0x2'));var router=express[_0x4038('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4038('0x4'));var config=require(_0x4038('0x5'));var controller=require(_0x4038('0x6'));router[_0x4038('0x7')]('/',auth[_0x4038('0x8')](),controller['index']);router[_0x4038('0x7')](_0x4038('0x9'),auth['isAuthenticated'](),controller[_0x4038('0xa')]);router[_0x4038('0x7')](_0x4038('0xb'),auth[_0x4038('0x8')](),controller[_0x4038('0xc')]);router[_0x4038('0x7')](_0x4038('0xd'),auth[_0x4038('0x8')](),controller[_0x4038('0xe')]);router[_0x4038('0x7')](_0x4038('0xf'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x4038('0x7')](_0x4038('0x10'),auth[_0x4038('0x8')](),controller['getContacts']);router[_0x4038('0x7')]('/:id/contacts/csv',auth['isAuthenticated'](),controller[_0x4038('0x11')]);router[_0x4038('0x7')](_0x4038('0x12'),auth['isAuthenticated'](),controller[_0x4038('0x13')]);router[_0x4038('0x7')](_0x4038('0x14'),auth[_0x4038('0x8')](),controller[_0x4038('0x15')]);router[_0x4038('0x16')]('/',auth[_0x4038('0x8')](),controller[_0x4038('0x17')]);router[_0x4038('0x16')](_0x4038('0xf'),auth[_0x4038('0x8')](),controller['addDisposition']);router[_0x4038('0x16')]('/:id/contacts',auth['isAuthenticated'](),controller[_0x4038('0x18')]);router['post'](_0x4038('0x12'),auth[_0x4038('0x8')](),controller[_0x4038('0x19')]);router['post'](_0x4038('0x14'),auth[_0x4038('0x8')](),controller[_0x4038('0x1a')]);router['put'](_0x4038('0xd'),auth[_0x4038('0x8')](),controller['update']);router['delete'](_0x4038('0xd'),auth['isAuthenticated'](),controller[_0x4038('0x1b')]);router[_0x4038('0x1c')](_0x4038('0xf'),auth[_0x4038('0x8')](),controller[_0x4038('0x1d')]);router[_0x4038('0x1c')](_0x4038('0x14'),auth['isAuthenticated'](),controller[_0x4038('0x1e')]);module['exports']=router;
\ No newline at end of file
index 6614e51..2bf5cd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa73e=['sequelize','exports','VIRTUAL','field','STRING'];(function(_0x30a2d2,_0x18b37b){var _0x4fe43a=function(_0x7338bd){while(--_0x7338bd){_0x30a2d2['push'](_0x30a2d2['shift']());}};_0x4fe43a(++_0x18b37b);}(_0xa73e,0x131));var _0xea73=function(_0x3ce609,_0x56fdf7){_0x3ce609=_0x3ce609-0x0;var _0x4c7860=_0xa73e[_0x3ce609];return _0x4c7860;};'use strict';var Sequelize=require(_0xea73('0x0'));module[_0xea73('0x1')]={'name':{'type':Sequelize[_0xea73('0x2')],'get':function(_0xca9616){return this['getDataValue'](_0xea73('0x3'));}},'field':{'type':Sequelize[_0xea73('0x4')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xea73('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0xc0d7=['getDataValue','field','STRING','sequelize','exports','VIRTUAL'];(function(_0x582f72,_0x886d8){var _0x4cd5fe=function(_0x4ac1c7){while(--_0x4ac1c7){_0x582f72['push'](_0x582f72['shift']());}};_0x4cd5fe(++_0x886d8);}(_0xc0d7,0xcf));var _0x7c0d=function(_0x43c086,_0xd5d01d){_0x43c086=_0x43c086-0x0;var _0x227708=_0xc0d7[_0x43c086];return _0x227708;};'use strict';var Sequelize=require(_0x7c0d('0x0'));module[_0x7c0d('0x1')]={'name':{'type':Sequelize[_0x7c0d('0x2')],'get':function(_0x3448ec){return this[_0x7c0d('0x3')](_0x7c0d('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x7c0d('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x7c0d('0x5')],'allowNull':![]}};
\ No newline at end of file
index c4dccaf..b50b7db 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(_0x186293,_0x4aef61){var _0xfebaac=function(_0x28132e){while(--_0x28132e){_0x186293['push'](_0x186293['shift']());}};_0xfebaac(++_0x4aef61);}(_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
+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(_0x5c5753,_0x283b8a){var _0x90a11a=function(_0xe84baf){while(--_0xe84baf){_0x5c5753['push'](_0x5c5753['shift']());}};_0x90a11a(++_0x283b8a);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
index cc149ca..2fa6056 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa015=['path','../../config/environment','exports','define','Condition','tools_conditions','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x349420,_0x4813cc){var _0x22111e=function(_0x18096e){while(--_0x18096e){_0x349420['push'](_0x349420['shift']());}};_0x22111e(++_0x4813cc);}(_0xa015,0x103));var _0x5a01=function(_0x4a522f,_0x90a85f){_0x4a522f=_0x4a522f-0x0;var _0x25d72=_0xa015[_0x4a522f];return _0x25d72;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5a01('0x0'))(_0x5a01('0x1'));var moment=require(_0x5a01('0x2'));var BPromise=require(_0x5a01('0x3'));var rp=require(_0x5a01('0x4'));var fs=require('fs');var path=require(_0x5a01('0x5'));var rimraf=require('rimraf');var config=require(_0x5a01('0x6'));var attributes=require('./condition.attributes');module[_0x5a01('0x7')]=function(_0xa9cc02,_0x4407c5){return _0xa9cc02[_0x5a01('0x8')](_0x5a01('0x9'),attributes,{'tableName':_0x5a01('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfc96=['bluebird','request-promise','rimraf','../../config/environment','exports','define','tools_conditions','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfc96,0x1db));var _0x6fc9=function(_0x20d360,_0x5a14a1){_0x20d360=_0x20d360-0x0;var _0x1acec0=_0xfc96[_0x20d360];return _0x1acec0;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x6fc9('0x0'));var moment=require(_0x6fc9('0x1'));var BPromise=require(_0x6fc9('0x2'));var rp=require(_0x6fc9('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6fc9('0x4'));var config=require(_0x6fc9('0x5'));var attributes=require('./condition.attributes');module[_0x6fc9('0x6')]=function(_0x3d173c,_0x296a81){return _0x3d173c[_0x6fc9('0x7')]('Condition',attributes,{'tableName':_0x6fc9('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1a54f18..349e6d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae6e=['jayson/promise','http','request','then','info','debug','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Condition,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2b7442,_0x561591){var _0x56e035=function(_0x42e09d){while(--_0x42e09d){_0x2b7442['push'](_0x2b7442['shift']());}};_0x56e035(++_0x561591);}(_0xae6e,0x1a6));var _0xeae6=function(_0x3bc29c,_0x2d517a){_0x3bc29c=_0x3bc29c-0x0;var _0xf1548c=_0xae6e[_0x3bc29c];return _0xf1548c;};'use strict';var _=require(_0xeae6('0x0'));var util=require(_0xeae6('0x1'));var moment=require(_0xeae6('0x2'));var BPromise=require(_0xeae6('0x3'));var rs=require(_0xeae6('0x4'));var fs=require('fs');var Redis=require(_0xeae6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xeae6('0x6'));var logger=require(_0xeae6('0x7'))(_0xeae6('0x8'));var config=require(_0xeae6('0x9'));var jayson=require(_0xeae6('0xa'));var client=jayson['client'][_0xeae6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45abea,_0x4acf4c,_0xd4ae4){return new BPromise(function(_0x2fe262,_0x5705ba){return client[_0xeae6('0xc')](_0x45abea,_0xd4ae4)[_0xeae6('0xd')](function(_0x5bed38){logger[_0xeae6('0xe')]('Condition,\x20%s,\x20%s',_0x4acf4c,'request\x20sent');logger[_0xeae6('0xf')](_0xeae6('0x10'),_0x4acf4c,_0xeae6('0x11'),JSON['stringify'](_0x5bed38));if(_0x5bed38[_0xeae6('0x12')]){if(_0x5bed38[_0xeae6('0x12')][_0xeae6('0x13')]===0x1f4){logger['error'](_0xeae6('0x14'),_0x4acf4c,_0x5bed38['error']['message']);return _0x5705ba(_0x5bed38['error']['message']);}logger[_0xeae6('0x12')](_0xeae6('0x14'),_0x4acf4c,_0x5bed38['error']['message']);return _0x2fe262(_0x5bed38['error'][_0xeae6('0x15')]);}else{logger['info'](_0xeae6('0x14'),_0x4acf4c,'request\x20sent');_0x2fe262(_0x5bed38[_0xeae6('0x16')][_0xeae6('0x15')]);}})[_0xeae6('0x17')](function(_0x518b2a){logger['error']('Condition,\x20%s,\x20%s',_0x4acf4c,_0x518b2a);_0x5705ba(_0x518b2a);});});}
\ No newline at end of file
+var _0x5921=['code','message','result','catch','lodash','moment','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','Condition,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x38ced4,_0x24263f){var _0x547c07=function(_0x279fc4){while(--_0x279fc4){_0x38ced4['push'](_0x38ced4['shift']());}};_0x547c07(++_0x24263f);}(_0x5921,0xf4));var _0x1592=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x5921[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x1592('0x0'));var util=require('util');var moment=require(_0x1592('0x1'));var BPromise=require('bluebird');var rs=require(_0x1592('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1592('0x3'));var logger=require(_0x1592('0x4'))('rpc');var config=require(_0x1592('0x5'));var jayson=require(_0x1592('0x6'));var client=jayson['client'][_0x1592('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x13e8a7,_0x1a0ad,_0x227682){return new BPromise(function(_0x25d9de,_0x514e77){return client[_0x1592('0x8')](_0x13e8a7,_0x227682)[_0x1592('0x9')](function(_0x379508){logger[_0x1592('0xa')](_0x1592('0xb'),_0x1a0ad,_0x1592('0xc'));logger['debug'](_0x1592('0xd'),_0x1a0ad,_0x1592('0xc'),JSON[_0x1592('0xe')](_0x379508));if(_0x379508[_0x1592('0xf')]){if(_0x379508['error'][_0x1592('0x10')]===0x1f4){logger[_0x1592('0xf')](_0x1592('0xb'),_0x1a0ad,_0x379508[_0x1592('0xf')][_0x1592('0x11')]);return _0x514e77(_0x379508[_0x1592('0xf')][_0x1592('0x11')]);}logger['error']('Condition,\x20%s,\x20%s',_0x1a0ad,_0x379508[_0x1592('0xf')][_0x1592('0x11')]);return _0x25d9de(_0x379508[_0x1592('0xf')][_0x1592('0x11')]);}else{logger[_0x1592('0xa')]('Condition,\x20%s,\x20%s',_0x1a0ad,_0x1592('0xc'));_0x25d9de(_0x379508[_0x1592('0x12')][_0x1592('0x11')]);}})[_0x1592('0x13')](function(_0x44dd2c){logger['error'](_0x1592('0xb'),_0x1a0ad,_0x44dd2c);_0x514e77(_0x44dd2c);});});}
\ No newline at end of file
index 7a1b5b4..fff861a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x682a=['connect-timeout','express','Router','../../components/auth/service','../../config/environment','./condition.controller','put','/:id','update','delete','isAuthenticated','destroy','exports','util','path'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x682a,0x148));var _0xa682=function(_0x57a7ce,_0x27e3fc){_0x57a7ce=_0x57a7ce-0x0;var _0x24810f=_0x682a[_0x57a7ce];return _0x24810f;};'use strict';var multer=require('multer');var util=require(_0xa682('0x0'));var path=require(_0xa682('0x1'));var timeout=require(_0xa682('0x2'));var express=require(_0xa682('0x3'));var router=express[_0xa682('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa682('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa682('0x6'));var controller=require(_0xa682('0x7'));router[_0xa682('0x8')](_0xa682('0x9'),auth['isAuthenticated'](),controller[_0xa682('0xa')]);router[_0xa682('0xb')](_0xa682('0x9'),auth[_0xa682('0xc')](),controller[_0xa682('0xd')]);module[_0xa682('0xe')]=router;
\ No newline at end of file
+var _0xe839=['isAuthenticated','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','put','update','delete'];(function(_0xe1b5f6,_0x210c09){var _0x44636e=function(_0x3a3212){while(--_0x3a3212){_0xe1b5f6['push'](_0xe1b5f6['shift']());}};_0x44636e(++_0x210c09);}(_0xe839,0x1b3));var _0x9e83=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0xe839[_0x31a371];return _0x2a5bd6;};'use strict';var multer=require(_0x9e83('0x0'));var util=require(_0x9e83('0x1'));var path=require(_0x9e83('0x2'));var timeout=require(_0x9e83('0x3'));var express=require('express');var router=express[_0x9e83('0x4')]();var fs_extra=require(_0x9e83('0x5'));var auth=require(_0x9e83('0x6'));var interaction=require(_0x9e83('0x7'));var config=require(_0x9e83('0x8'));var controller=require(_0x9e83('0x9'));router[_0x9e83('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x9e83('0xb')]);router[_0x9e83('0xc')]('/:id',auth[_0x9e83('0xd')](),controller[_0x9e83('0xe')]);module[_0x9e83('0xf')]=router;
\ No newline at end of file
index dc2cbb2..565771a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2d0=['exports','STRING','name','INTEGER','sequelize'];(function(_0x21d532,_0x4552a4){var _0x37bda1=function(_0x134a6f){while(--_0x134a6f){_0x21d532['push'](_0x21d532['shift']());}};_0x37bda1(++_0x4552a4);}(_0xc2d0,0x9f));var _0x0c2d=function(_0x419fa1,_0x580e54){_0x419fa1=_0x419fa1-0x0;var _0x3f5ebf=_0xc2d0[_0x419fa1];return _0x3f5ebf;};'use strict';var Sequelize=require(_0x0c2d('0x0'));module[_0x0c2d('0x1')]={'name':{'type':Sequelize[_0x0c2d('0x2')],'allowNull':![],'unique':_0x0c2d('0x3')},'OrderBy':{'type':Sequelize[_0x0c2d('0x4')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x0c2d('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xb23f=['INTEGER','sequelize','exports','STRING'];(function(_0x33912e,_0x5715ed){var _0x11f95b=function(_0x399c0e){while(--_0x399c0e){_0x33912e['push'](_0x33912e['shift']());}};_0x11f95b(++_0x5715ed);}(_0xb23f,0xad));var _0xfb23=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb23f[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xfb23('0x0'));module[_0xfb23('0x1')]={'name':{'type':Sequelize[_0xfb23('0x2')],'allowNull':![],'unique':'name'},'OrderBy':{'type':Sequelize[_0xfb23('0x3')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xfb23('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 9bd732f..e731285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','status','json','offset','undefined','count','limit','Content-Range','apply','update','then','get','ContactItemTypes','UserProfileResource','destroy','end','error','name','send','map','ContactItemType','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','include','rows','catch','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','CmContactHasItem','rimraf','zip-dir','bluebird','mustache','util','path'];(function(_0xabb8a1,_0x5ed479){var _0x9a4673=function(_0x44ed09){while(--_0x44ed09){_0xabb8a1['push'](_0xabb8a1['shift']());}};_0x9a4673(++_0x5ed479);}(_0x757a,0xde));var _0xa757=function(_0x179661,_0x43c1b2){_0x179661=_0x179661-0x0;var _0x436a11=_0x757a[_0x179661];return _0x436a11;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa757('0x0'));var zipdir=require(_0xa757('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa757('0x2'));var Mustache=require(_0xa757('0x3'));var util=require(_0xa757('0x4'));var path=require(_0xa757('0x5'));var sox=require(_0xa757('0x6'));var csv=require(_0xa757('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa757('0x8'));var _=require(_0xa757('0x9'));var squel=require('squel');var crypto=require(_0xa757('0xa'));var jsforce=require(_0xa757('0xb'));var deskjs=require(_0xa757('0xc'));var toCsv=require(_0xa757('0x7'));var querystring=require(_0xa757('0xd'));var Papa=require('papaparse');var Redis=require(_0xa757('0xe'));var authService=require(_0xa757('0xf'));var qs=require(_0xa757('0x10'));var as=require(_0xa757('0x11'));var hardwareService=require(_0xa757('0x12'));var logger=require(_0xa757('0x13'))(_0xa757('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4db68e,_0x421040){_0x421040=_0x421040||0xcc;return function(_0x544b45){if(_0x544b45){return _0x4db68e['sendStatus'](_0x421040);}return _0x4db68e[_0xa757('0x15')](_0x421040)['end']();};}function respondWithResult(_0x481508,_0x32112b){_0x32112b=_0x32112b||0xc8;return function(_0x1b670e){if(_0x1b670e){return _0x481508[_0xa757('0x15')](_0x32112b)[_0xa757('0x16')](_0x1b670e);}};}function respondWithFilteredResult(_0x86abd,_0x31cfd2){return function(_0xf12b68){if(_0xf12b68){var _0x2f7947=typeof _0x31cfd2[_0xa757('0x17')]===_0xa757('0x18')&&typeof _0x31cfd2['limit']===_0xa757('0x18');var _0x44eab8=_0xf12b68[_0xa757('0x19')];var _0x4d9f58=_0x2f7947?0x0:_0x31cfd2['offset'];var _0x151c04=_0x2f7947?_0xf12b68[_0xa757('0x19')]:_0x31cfd2[_0xa757('0x17')]+_0x31cfd2[_0xa757('0x1a')];var _0x27f4ba;if(_0x151c04>=_0x44eab8){_0x151c04=_0x44eab8;_0x27f4ba=0xc8;}else{_0x27f4ba=0xce;}_0x86abd[_0xa757('0x15')](_0x27f4ba);return _0x86abd['set'](_0xa757('0x1b'),_0x4d9f58+'-'+_0x151c04+'/'+_0x44eab8)['json'](_0xf12b68);}return null;};}function patchUpdates(_0x32c2a1){return function(_0x167640){try{jsonpatch[_0xa757('0x1c')](_0x167640,_0x32c2a1,!![]);}catch(_0x2c9ec6){return BPromise['reject'](_0x2c9ec6);}return _0x167640['save']();};}function saveUpdates(_0x40ec48,_0x2159cf){return function(_0x2ba923){if(_0x2ba923){return _0x2ba923[_0xa757('0x1d')](_0x40ec48)[_0xa757('0x1e')](function(_0x40562f){return _0x40562f;});}return null;};}function removeEntity(_0x2ca10d,_0x21f1af){return function(_0x2bf276){if(_0x2bf276){return _0x2bf276['destroy']()[_0xa757('0x1e')](function(){var _0x59e9d4=_0x2bf276[_0xa757('0x1f')]({'plain':!![]});var _0x47903b=_0xa757('0x20');return db[_0xa757('0x21')][_0xa757('0x22')]({'where':{'type':_0x47903b,'resourceId':_0x59e9d4['id']}})['then'](function(){return _0x2bf276;});})[_0xa757('0x1e')](function(){_0x2ca10d[_0xa757('0x15')](0xcc)[_0xa757('0x23')]();});}};}function handleEntityNotFound(_0x3bf7f3,_0x5b4779){return function(_0x449a7d){if(!_0x449a7d){_0x3bf7f3['sendStatus'](0x194);}return _0x449a7d;};}function handleError(_0x5a5664,_0x54b75e){_0x54b75e=_0x54b75e||0x1f4;return function(_0x4f8de2){logger[_0xa757('0x24')](_0x4f8de2['stack']);if(_0x4f8de2[_0xa757('0x25')]){delete _0x4f8de2[_0xa757('0x25')];}_0x5a5664['status'](_0x54b75e)[_0xa757('0x26')](_0x4f8de2);};}exports['index']=function(_0x2c4823,_0xa6d0f6){var _0x5307c3={},_0x235e54={},_0x5ade7b={'count':0x0,'rows':[]};var _0x3a4a66=_[_0xa757('0x27')](db[_0xa757('0x28')][_0xa757('0x29')],function(_0xcc87c0){return{'name':_0xcc87c0[_0xa757('0x2a')],'type':_0xcc87c0[_0xa757('0x2b')][_0xa757('0x2c')]};});_0x235e54[_0xa757('0x2d')]=_[_0xa757('0x27')](_0x3a4a66,_0xa757('0x25'));_0x235e54[_0xa757('0x2e')]=_[_0xa757('0x2f')](_0x2c4823[_0xa757('0x2e')]);_0x235e54[_0xa757('0x30')]=_[_0xa757('0x31')](_0x235e54[_0xa757('0x2d')],_0x235e54[_0xa757('0x2e')]);_0x5307c3[_0xa757('0x32')]=_[_0xa757('0x31')](_0x235e54[_0xa757('0x2d')],qs[_0xa757('0x33')](_0x2c4823[_0xa757('0x2e')][_0xa757('0x33')]));_0x5307c3['attributes']=_0x5307c3[_0xa757('0x32')][_0xa757('0x34')]?_0x5307c3[_0xa757('0x32')]:_0x235e54[_0xa757('0x2d')];if(!_0x2c4823[_0xa757('0x2e')]['hasOwnProperty'](_0xa757('0x35'))){_0x5307c3[_0xa757('0x1a')]=qs[_0xa757('0x1a')](_0x2c4823[_0xa757('0x2e')][_0xa757('0x1a')]);_0x5307c3[_0xa757('0x17')]=qs['offset'](_0x2c4823[_0xa757('0x2e')][_0xa757('0x17')]);}_0x5307c3[_0xa757('0x36')]=qs[_0xa757('0x37')](_0x2c4823[_0xa757('0x2e')][_0xa757('0x37')]);_0x5307c3[_0xa757('0x38')]=qs[_0xa757('0x30')](_[_0xa757('0x39')](_0x2c4823['query'],_0x235e54[_0xa757('0x30')]),_0x3a4a66);if(_0x2c4823[_0xa757('0x2e')][_0xa757('0x3a')]){_0x5307c3[_0xa757('0x38')]=_[_0xa757('0x3b')](_0x5307c3[_0xa757('0x38')],{'$or':_['map'](_0x3a4a66,function(_0x10d3fd){if(_0x10d3fd[_0xa757('0x2b')]!=='VIRTUAL'){var _0x5eae0b={};_0x5eae0b[_0x10d3fd[_0xa757('0x25')]]={'$like':'%'+_0x2c4823[_0xa757('0x2e')]['filter']+'%'};return _0x5eae0b;}})});}_0x5307c3=_['merge']({},_0x5307c3,_0x2c4823[_0xa757('0x3c')]);var _0x1725a2={'where':_0x5307c3[_0xa757('0x38')]};return db['ContactItemType'][_0xa757('0x19')](_0x1725a2)[_0xa757('0x1e')](function(_0x26802c){_0x5ade7b[_0xa757('0x19')]=_0x26802c;if(_0x2c4823[_0xa757('0x2e')]['includeAll']){_0x5307c3[_0xa757('0x3d')]=[{'all':!![]}];}return db['ContactItemType']['findAll'](_0x5307c3);})[_0xa757('0x1e')](function(_0x57298b){_0x5ade7b[_0xa757('0x3e')]=_0x57298b;return _0x5ade7b;})[_0xa757('0x1e')](respondWithFilteredResult(_0xa6d0f6,_0x5307c3))[_0xa757('0x3f')](handleError(_0xa6d0f6,null));};exports['show']=function(_0x5d25bb,_0x11e141){var _0x129d77={'raw':!![],'where':{'id':_0x5d25bb[_0xa757('0x40')]['id']}},_0x2b171c={};_0x2b171c[_0xa757('0x2d')]=_[_0xa757('0x2f')](db['ContactItemType'][_0xa757('0x29')]);_0x2b171c[_0xa757('0x2e')]=_['keys'](_0x5d25bb[_0xa757('0x2e')]);_0x2b171c['filters']=_[_0xa757('0x31')](_0x2b171c[_0xa757('0x2d')],_0x2b171c['query']);_0x129d77[_0xa757('0x32')]=_[_0xa757('0x31')](_0x2b171c['model'],qs[_0xa757('0x33')](_0x5d25bb[_0xa757('0x2e')][_0xa757('0x33')]));_0x129d77[_0xa757('0x32')]=_0x129d77['attributes'][_0xa757('0x34')]?_0x129d77[_0xa757('0x32')]:_0x2b171c[_0xa757('0x2d')];if(_0x5d25bb[_0xa757('0x2e')]['includeAll']){_0x129d77[_0xa757('0x3d')]=[{'all':!![]}];}_0x129d77=_['merge']({},_0x129d77,_0x5d25bb['options']);return db[_0xa757('0x28')][_0xa757('0x41')](_0x129d77)[_0xa757('0x1e')](handleEntityNotFound(_0x11e141,null))['then'](respondWithResult(_0x11e141,null))[_0xa757('0x3f')](handleError(_0x11e141,null));};exports['create']=function(_0x2ed63f,_0x151cc3){return db[_0xa757('0x28')][_0xa757('0x42')](_0x2ed63f[_0xa757('0x43')],{})[_0xa757('0x1e')](function(_0x57bf73){var _0x505cd=_0x2ed63f['user'][_0xa757('0x1f')]({'plain':!![]});if(!_0x505cd)throw new Error(_0xa757('0x44'));if(_0x505cd[_0xa757('0x45')]===_0xa757('0x46')){var _0x319988=_0x57bf73[_0xa757('0x1f')]({'plain':!![]});var _0x15bad7=_0xa757('0x20');return db[_0xa757('0x47')][_0xa757('0x41')]({'where':{'name':_0x15bad7,'userProfileId':_0x505cd[_0xa757('0x48')]},'raw':!![]})[_0xa757('0x1e')](function(_0x2367c7){if(_0x2367c7&&_0x2367c7[_0xa757('0x49')]===0x0){return db[_0xa757('0x21')][_0xa757('0x42')]({'name':_0x319988['name'],'resourceId':_0x319988['id'],'type':_0x2367c7[_0xa757('0x25')],'sectionId':_0x2367c7['id']},{})['then'](function(){return _0x57bf73;});}else{return _0x57bf73;}})[_0xa757('0x3f')](function(_0x311c25){logger[_0xa757('0x24')](_0xa757('0x4a'),_0x311c25);throw _0x311c25;});}return _0x57bf73;})['then'](respondWithResult(_0x151cc3,0xc9))[_0xa757('0x3f')](handleError(_0x151cc3,null));};exports[_0xa757('0x1d')]=function(_0x8614f9,_0x980e1){if(_0x8614f9['body']['id']){delete _0x8614f9[_0xa757('0x43')]['id'];}return db[_0xa757('0x28')][_0xa757('0x41')]({'where':{'id':_0x8614f9[_0xa757('0x40')]['id']}})[_0xa757('0x1e')](handleEntityNotFound(_0x980e1,null))[_0xa757('0x1e')](saveUpdates(_0x8614f9['body'],null))['then'](respondWithResult(_0x980e1,null))['catch'](handleError(_0x980e1,null));};exports['destroy']=function(_0x1d8742,_0x9b3779){return db[_0xa757('0x28')][_0xa757('0x41')]({'where':{'id':_0x1d8742[_0xa757('0x40')]['id']}})[_0xa757('0x1e')](handleEntityNotFound(_0x9b3779,null))['then'](db[_0xa757('0x4b')][_0xa757('0x1d')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x1d8742[_0xa757('0x40')]['id']}}))[_0xa757('0x1e')](removeEntity(_0x9b3779,null))['catch'](handleError(_0x9b3779,null));};
\ No newline at end of file
+var _0x0b0e=['desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','UserProfileResource','stack','name','send','index','map','ContactItemType','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','include','findAll','catch','params','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','error','update','find','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce'];(function(_0x58795b,_0x303bfc){var _0x58bba2=function(_0x5ac9b2){while(--_0x5ac9b2){_0x58795b['push'](_0x58795b['shift']());}};_0x58bba2(++_0x303bfc);}(_0x0b0e,0x187));var _0xe0b0=function(_0x18ae6d,_0x255d00){_0x18ae6d=_0x18ae6d-0x0;var _0x3deb94=_0x0b0e[_0x18ae6d];return _0x3deb94;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){var _0x28586d=_0x503883['get']({'plain':!![]});var _0x3e5c88='ContactItemTypes';return db[_0xe0b0('0x25')]['destroy']({'where':{'type':_0x3e5c88,'resourceId':_0x28586d['id']}})[_0xe0b0('0x23')](function(){return _0x503883;});})['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)[_0xe0b0('0x19')]();});}};}function handleEntityNotFound(_0x1f1ebd,_0x1d91ad){return function(_0x3ec2){if(!_0x3ec2){_0x1f1ebd[_0xe0b0('0x18')](0x194);}return _0x3ec2;};}function handleError(_0x5200a6,_0x1444b9){_0x1444b9=_0x1444b9||0x1f4;return function(_0x1b8aa8){logger['error'](_0x1b8aa8[_0xe0b0('0x26')]);if(_0x1b8aa8[_0xe0b0('0x27')]){delete _0x1b8aa8[_0xe0b0('0x27')];}_0x5200a6[_0xe0b0('0x1a')](_0x1444b9)[_0xe0b0('0x28')](_0x1b8aa8);};}exports[_0xe0b0('0x29')]=function(_0x136bd4,_0x4fb3b7){var _0x1854b8={},_0x3c0109={},_0x48a9b5={'count':0x0,'rows':[]};var _0x4fe400=_[_0xe0b0('0x2a')](db[_0xe0b0('0x2b')][_0xe0b0('0x2c')],function(_0x3f81d5){return{'name':_0x3f81d5[_0xe0b0('0x2d')],'type':_0x3f81d5['type'][_0xe0b0('0x2e')]};});_0x3c0109[_0xe0b0('0x2f')]=_[_0xe0b0('0x2a')](_0x4fe400,_0xe0b0('0x27'));_0x3c0109[_0xe0b0('0x30')]=_['keys'](_0x136bd4[_0xe0b0('0x30')]);_0x3c0109[_0xe0b0('0x31')]=_[_0xe0b0('0x32')](_0x3c0109[_0xe0b0('0x2f')],_0x3c0109[_0xe0b0('0x30')]);_0x1854b8[_0xe0b0('0x33')]=_[_0xe0b0('0x32')](_0x3c0109[_0xe0b0('0x2f')],qs[_0xe0b0('0x34')](_0x136bd4[_0xe0b0('0x30')][_0xe0b0('0x34')]));_0x1854b8[_0xe0b0('0x33')]=_0x1854b8[_0xe0b0('0x33')][_0xe0b0('0x35')]?_0x1854b8[_0xe0b0('0x33')]:_0x3c0109['model'];if(!_0x136bd4[_0xe0b0('0x30')][_0xe0b0('0x36')](_0xe0b0('0x37'))){_0x1854b8[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x136bd4[_0xe0b0('0x30')][_0xe0b0('0x1d')]);_0x1854b8['offset']=qs['offset'](_0x136bd4['query']['offset']);}_0x1854b8[_0xe0b0('0x38')]=qs[_0xe0b0('0x39')](_0x136bd4[_0xe0b0('0x30')]['sort']);_0x1854b8[_0xe0b0('0x3a')]=qs[_0xe0b0('0x31')](_[_0xe0b0('0x3b')](_0x136bd4[_0xe0b0('0x30')],_0x3c0109['filters']),_0x4fe400);if(_0x136bd4[_0xe0b0('0x30')][_0xe0b0('0x3c')]){_0x1854b8[_0xe0b0('0x3a')]=_[_0xe0b0('0x3d')](_0x1854b8[_0xe0b0('0x3a')],{'$or':_[_0xe0b0('0x2a')](_0x4fe400,function(_0x8b745){if(_0x8b745[_0xe0b0('0x3e')]!==_0xe0b0('0x3f')){var _0x54f251={};_0x54f251[_0x8b745[_0xe0b0('0x27')]]={'$like':'%'+_0x136bd4['query'][_0xe0b0('0x3c')]+'%'};return _0x54f251;}})});}_0x1854b8=_[_0xe0b0('0x3d')]({},_0x1854b8,_0x136bd4[_0xe0b0('0x40')]);var _0x74f3fa={'where':_0x1854b8['where']};return db[_0xe0b0('0x2b')][_0xe0b0('0x41')](_0x74f3fa)[_0xe0b0('0x23')](function(_0x402a0e){_0x48a9b5[_0xe0b0('0x41')]=_0x402a0e;if(_0x136bd4[_0xe0b0('0x30')][_0xe0b0('0x42')]){_0x1854b8[_0xe0b0('0x43')]=[{'all':!![]}];}return db['ContactItemType'][_0xe0b0('0x44')](_0x1854b8);})[_0xe0b0('0x23')](function(_0x528818){_0x48a9b5['rows']=_0x528818;return _0x48a9b5;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x4fb3b7,_0x1854b8))[_0xe0b0('0x45')](handleError(_0x4fb3b7,null));};exports['show']=function(_0x18a59d,_0x285d61){var _0x6bca5c={'raw':!![],'where':{'id':_0x18a59d[_0xe0b0('0x46')]['id']}},_0x1c869d={};_0x1c869d['model']=_['keys'](db['ContactItemType'][_0xe0b0('0x2c')]);_0x1c869d[_0xe0b0('0x30')]=_['keys'](_0x18a59d[_0xe0b0('0x30')]);_0x1c869d[_0xe0b0('0x31')]=_[_0xe0b0('0x32')](_0x1c869d[_0xe0b0('0x2f')],_0x1c869d[_0xe0b0('0x30')]);_0x6bca5c['attributes']=_['intersection'](_0x1c869d[_0xe0b0('0x2f')],qs[_0xe0b0('0x34')](_0x18a59d[_0xe0b0('0x30')][_0xe0b0('0x34')]));_0x6bca5c[_0xe0b0('0x33')]=_0x6bca5c['attributes'][_0xe0b0('0x35')]?_0x6bca5c[_0xe0b0('0x33')]:_0x1c869d['model'];if(_0x18a59d['query']['includeAll']){_0x6bca5c[_0xe0b0('0x43')]=[{'all':!![]}];}_0x6bca5c=_[_0xe0b0('0x3d')]({},_0x6bca5c,_0x18a59d[_0xe0b0('0x40')]);return db[_0xe0b0('0x2b')]['find'](_0x6bca5c)[_0xe0b0('0x23')](handleEntityNotFound(_0x285d61,null))[_0xe0b0('0x23')](respondWithResult(_0x285d61,null))['catch'](handleError(_0x285d61,null));};exports['create']=function(_0x2365be,_0x1bc6e0){return db['ContactItemType'][_0xe0b0('0x47')](_0x2365be[_0xe0b0('0x48')],{})['then'](function(_0x5cb2b6){var _0x123ad2=_0x2365be['user'][_0xe0b0('0x49')]({'plain':!![]});if(!_0x123ad2)throw new Error(_0xe0b0('0x4a'));if(_0x123ad2[_0xe0b0('0x4b')]===_0xe0b0('0x4c')){var _0x19ee71=_0x5cb2b6[_0xe0b0('0x49')]({'plain':!![]});var _0x5f5486='ContactItemTypes';return db[_0xe0b0('0x4d')]['find']({'where':{'name':_0x5f5486,'userProfileId':_0x123ad2['userProfileId']},'raw':!![]})[_0xe0b0('0x23')](function(_0x222174){if(_0x222174&&_0x222174['autoAssociation']===0x0){return db['UserProfileResource'][_0xe0b0('0x47')]({'name':_0x19ee71[_0xe0b0('0x27')],'resourceId':_0x19ee71['id'],'type':_0x222174[_0xe0b0('0x27')],'sectionId':_0x222174['id']},{})[_0xe0b0('0x23')](function(){return _0x5cb2b6;});}else{return _0x5cb2b6;}})[_0xe0b0('0x45')](function(_0x24115f){logger[_0xe0b0('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x24115f);throw _0x24115f;});}return _0x5cb2b6;})[_0xe0b0('0x23')](respondWithResult(_0x1bc6e0,0xc9))['catch'](handleError(_0x1bc6e0,null));};exports[_0xe0b0('0x4f')]=function(_0x54106c,_0x5b2055){if(_0x54106c[_0xe0b0('0x48')]['id']){delete _0x54106c[_0xe0b0('0x48')]['id'];}return db[_0xe0b0('0x2b')][_0xe0b0('0x50')]({'where':{'id':_0x54106c[_0xe0b0('0x46')]['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x5b2055,null))[_0xe0b0('0x23')](saveUpdates(_0x54106c[_0xe0b0('0x48')],null))[_0xe0b0('0x23')](respondWithResult(_0x5b2055,null))['catch'](handleError(_0x5b2055,null));};exports[_0xe0b0('0x24')]=function(_0x57ccc9,_0x2b5553){return db[_0xe0b0('0x2b')][_0xe0b0('0x50')]({'where':{'id':_0x57ccc9[_0xe0b0('0x46')]['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x2b5553,null))[_0xe0b0('0x23')](db['CmContactHasItem'][_0xe0b0('0x4f')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x57ccc9[_0xe0b0('0x46')]['id']}}))[_0xe0b0('0x23')](removeEntity(_0x2b5553,null))[_0xe0b0('0x45')](handleError(_0x2b5553,null));};
\ No newline at end of file
index 24d0ee3..98bf2be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27ed=['request-promise','rimraf','../../config/environment','./contactItemType.attributes','exports','define','ContactItemType','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x27ed,0xa3));var _0xd27e=function(_0x5a9af1,_0x2e97de){_0x5a9af1=_0x5a9af1-0x0;var _0x3840ff=_0x27ed[_0x5a9af1];return _0x3840ff;};'use strict';var _=require(_0xd27e('0x0'));var util=require(_0xd27e('0x1'));var logger=require(_0xd27e('0x2'))(_0xd27e('0x3'));var moment=require(_0xd27e('0x4'));var BPromise=require(_0xd27e('0x5'));var rp=require(_0xd27e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd27e('0x7'));var config=require(_0xd27e('0x8'));var attributes=require(_0xd27e('0x9'));module[_0xd27e('0xa')]=function(_0x58d22a,_0x38bb02){return _0x58d22a[_0xd27e('0xb')](_0xd27e('0xc'),attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd76b=['api','bluebird','request-promise','path','rimraf','../../config/environment','./contactItemType.attributes','exports','define','ContactItemType','tools_contact_item_types','lodash','util'];(function(_0x66edea,_0x27b874){var _0x1b8b3e=function(_0x48033d){while(--_0x48033d){_0x66edea['push'](_0x66edea['shift']());}};_0x1b8b3e(++_0x27b874);}(_0xd76b,0x102));var _0xbd76=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xd76b[_0x565c49];return _0x20ca34;};'use strict';var _=require(_0xbd76('0x0'));var util=require(_0xbd76('0x1'));var logger=require('../../config/logger')(_0xbd76('0x2'));var moment=require('moment');var BPromise=require(_0xbd76('0x3'));var rp=require(_0xbd76('0x4'));var fs=require('fs');var path=require(_0xbd76('0x5'));var rimraf=require(_0xbd76('0x6'));var config=require(_0xbd76('0x7'));var attributes=require(_0xbd76('0x8'));module[_0xbd76('0x9')]=function(_0x4113c3,_0x337db2){return _0x4113c3[_0xbd76('0xa')](_0xbd76('0xb'),attributes,{'tableName':_0xbd76('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 07a5635..9f35877 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x173d=['../../config/environment','client','http','info','request\x20sent','debug','stringify','error','code','ContactItemType,\x20%s,\x20%s','message','result','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x11a55c,_0x4eced9){var _0x26c390=function(_0x5b0662){while(--_0x5b0662){_0x11a55c['push'](_0x11a55c['shift']());}};_0x26c390(++_0x4eced9);}(_0x173d,0x108));var _0xd173=function(_0x1f0ae4,_0x4f57a8){_0x1f0ae4=_0x1f0ae4-0x0;var _0x22acf5=_0x173d[_0x1f0ae4];return _0x22acf5;};'use strict';var _=require('lodash');var util=require(_0xd173('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd173('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd173('0x2'))['db'];var utils=require(_0xd173('0x3'));var logger=require(_0xd173('0x4'))(_0xd173('0x5'));var config=require(_0xd173('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xd173('0x7')][_0xd173('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x454bfa,_0x5dc244,_0x239a90){return new BPromise(function(_0x5229ad,_0x3a1529){return client['request'](_0x454bfa,_0x239a90)['then'](function(_0x2e5ecc){logger[_0xd173('0x9')]('ContactItemType,\x20%s,\x20%s',_0x5dc244,_0xd173('0xa'));logger[_0xd173('0xb')]('ContactItemType,\x20%s,\x20%s,\x20%s',_0x5dc244,_0xd173('0xa'),JSON[_0xd173('0xc')](_0x2e5ecc));if(_0x2e5ecc[_0xd173('0xd')]){if(_0x2e5ecc[_0xd173('0xd')][_0xd173('0xe')]===0x1f4){logger[_0xd173('0xd')](_0xd173('0xf'),_0x5dc244,_0x2e5ecc[_0xd173('0xd')][_0xd173('0x10')]);return _0x3a1529(_0x2e5ecc[_0xd173('0xd')][_0xd173('0x10')]);}logger[_0xd173('0xd')]('ContactItemType,\x20%s,\x20%s',_0x5dc244,_0x2e5ecc[_0xd173('0xd')]['message']);return _0x5229ad(_0x2e5ecc[_0xd173('0xd')][_0xd173('0x10')]);}else{logger['info'](_0xd173('0xf'),_0x5dc244,_0xd173('0xa'));_0x5229ad(_0x2e5ecc[_0xd173('0x11')][_0xd173('0x10')]);}})['catch'](function(_0x5b96e1){logger[_0xd173('0xd')](_0xd173('0xf'),_0x5dc244,_0x5b96e1);_0x3a1529(_0x5b96e1);});});}
\ No newline at end of file
+var _0x819f=['code','ContactItemType,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','request\x20sent','debug','stringify','error'];(function(_0x14e48d,_0x3a9c35){var _0x5ca176=function(_0x4b6cbc){while(--_0x4b6cbc){_0x14e48d['push'](_0x14e48d['shift']());}};_0x5ca176(++_0x3a9c35);}(_0x819f,0x1bd));var _0xf819=function(_0x500c0,_0xdb6a03){_0x500c0=_0x500c0-0x0;var _0xdd146f=_0x819f[_0x500c0];return _0xdd146f;};'use strict';var _=require(_0xf819('0x0'));var util=require(_0xf819('0x1'));var moment=require(_0xf819('0x2'));var BPromise=require(_0xf819('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf819('0x4'))['db'];var utils=require(_0xf819('0x5'));var logger=require(_0xf819('0x6'))(_0xf819('0x7'));var config=require('../../config/environment');var jayson=require(_0xf819('0x8'));var client=jayson[_0xf819('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x590f19,_0x27d578,_0x4c5042){return new BPromise(function(_0x447fc3,_0x525099){return client[_0xf819('0xa')](_0x590f19,_0x4c5042)[_0xf819('0xb')](function(_0x49d106){logger[_0xf819('0xc')]('ContactItemType,\x20%s,\x20%s',_0x27d578,_0xf819('0xd'));logger[_0xf819('0xe')]('ContactItemType,\x20%s,\x20%s,\x20%s',_0x27d578,'request\x20sent',JSON[_0xf819('0xf')](_0x49d106));if(_0x49d106[_0xf819('0x10')]){if(_0x49d106['error'][_0xf819('0x11')]===0x1f4){logger[_0xf819('0x10')](_0xf819('0x12'),_0x27d578,_0x49d106[_0xf819('0x10')][_0xf819('0x13')]);return _0x525099(_0x49d106[_0xf819('0x10')]['message']);}logger[_0xf819('0x10')](_0xf819('0x12'),_0x27d578,_0x49d106[_0xf819('0x10')]['message']);return _0x447fc3(_0x49d106[_0xf819('0x10')][_0xf819('0x13')]);}else{logger['info'](_0xf819('0x12'),_0x27d578,_0xf819('0xd'));_0x447fc3(_0x49d106[_0xf819('0x14')][_0xf819('0x13')]);}})[_0xf819('0x15')](function(_0x15b7bb){logger[_0xf819('0x10')]('ContactItemType,\x20%s,\x20%s',_0x27d578,_0x15b7bb);_0x525099(_0x15b7bb);});});}
\ No newline at end of file
index d007df2..d9ed5f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa184=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./contactItemType.controller','get','index','/:id','isAuthenticated','create','put','update','delete','multer','util','path','connect-timeout'];(function(_0x5e9dac,_0x57a29c){var _0x5ab15d=function(_0x230174){while(--_0x230174){_0x5e9dac['push'](_0x5e9dac['shift']());}};_0x5ab15d(++_0x57a29c);}(_0xa184,0x7a));var _0x4a18=function(_0x9cfe28,_0x1a335c){_0x9cfe28=_0x9cfe28-0x0;var _0x54a1d0=_0xa184[_0x9cfe28];return _0x54a1d0;};'use strict';var multer=require(_0x4a18('0x0'));var util=require(_0x4a18('0x1'));var path=require(_0x4a18('0x2'));var timeout=require(_0x4a18('0x3'));var express=require(_0x4a18('0x4'));var router=express[_0x4a18('0x5')]();var fs_extra=require(_0x4a18('0x6'));var auth=require(_0x4a18('0x7'));var interaction=require(_0x4a18('0x8'));var config=require('../../config/environment');var controller=require(_0x4a18('0x9'));router[_0x4a18('0xa')]('/',auth['isAuthenticated'](),controller[_0x4a18('0xb')]);router[_0x4a18('0xa')](_0x4a18('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x4a18('0xd')](),controller[_0x4a18('0xe')]);router[_0x4a18('0xf')]('/:id',auth[_0x4a18('0xd')](),controller[_0x4a18('0x10')]);router[_0x4a18('0x11')](_0x4a18('0xc'),auth[_0x4a18('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x9ac6=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','post','create','put','update','delete','destroy'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x9ac6,0x1c8));var _0x69ac=function(_0x940f1d,_0x193aff){_0x940f1d=_0x940f1d-0x0;var _0x1f15aa=_0x9ac6[_0x940f1d];return _0x1f15aa;};'use strict';var multer=require(_0x69ac('0x0'));var util=require('util');var path=require(_0x69ac('0x1'));var timeout=require(_0x69ac('0x2'));var express=require(_0x69ac('0x3'));var router=express[_0x69ac('0x4')]();var fs_extra=require(_0x69ac('0x5'));var auth=require(_0x69ac('0x6'));var interaction=require(_0x69ac('0x7'));var config=require(_0x69ac('0x8'));var controller=require('./contactItemType.controller');router[_0x69ac('0x9')]('/',auth['isAuthenticated'](),controller[_0x69ac('0xa')]);router[_0x69ac('0x9')](_0x69ac('0xb'),auth[_0x69ac('0xc')](),controller['show']);router[_0x69ac('0xd')]('/',auth[_0x69ac('0xc')](),controller[_0x69ac('0xe')]);router[_0x69ac('0xf')](_0x69ac('0xb'),auth[_0x69ac('0xc')](),controller[_0x69ac('0x10')]);router[_0x69ac('0x11')](_0x69ac('0xb'),auth[_0x69ac('0xc')](),controller[_0x69ac('0x12')]);module['exports']=router;
\ No newline at end of file
index 62e83aa..47b3edc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0x1b9b59,_0x5a6c8c){var _0x3309f3=function(_0x4bf738){while(--_0x4bf738){_0x1b9b59['push'](_0x1b9b59['shift']());}};_0x3309f3(++_0x5a6c8c);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
+var _0xb7e7=['STRING','sequelize'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0xb7e7[_0x1a36a5];return _0x746243;};'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 53bea6e..b2f895b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab54=['params','keys','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','iframe','attrUrl','attrs','https://','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','DashboardId','DashboardItem','getItems','order','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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','../../config/logger','api','../../config/utils','../../mysqldb','redis','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomDashboards','UserProfileResource','error','stack','name','index','map','Dashboard','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show'];(function(_0x109371,_0x441c8e){var _0x4fd858=function(_0x13504f){while(--_0x13504f){_0x109371['push'](_0x109371['shift']());}};_0x4fd858(++_0x441c8e);}(_0xab54,0xbd));var _0x4ab5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xab54[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x4ab5('0x0'));var rimraf=require(_0x4ab5('0x1'));var zipdir=require(_0x4ab5('0x2'));var jsonpatch=require(_0x4ab5('0x3'));var rp=require(_0x4ab5('0x4'));var moment=require(_0x4ab5('0x5'));var BPromise=require(_0x4ab5('0x6'));var Mustache=require(_0x4ab5('0x7'));var util=require(_0x4ab5('0x8'));var path=require(_0x4ab5('0x9'));var sox=require(_0x4ab5('0xa'));var csv=require(_0x4ab5('0xb'));var ejs=require(_0x4ab5('0xc'));var fs=require('fs');var fs_extra=require(_0x4ab5('0xd'));var _=require(_0x4ab5('0xe'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4ab5('0xf'));var deskjs=require(_0x4ab5('0x10'));var toCsv=require(_0x4ab5('0xb'));var querystring=require(_0x4ab5('0x11'));var Papa=require(_0x4ab5('0x12'));var Redis=require('ioredis');var authService=require(_0x4ab5('0x13'));var qs=require(_0x4ab5('0x14'));var as=require(_0x4ab5('0x15'));var hardwareService=require(_0x4ab5('0x16'));var logger=require(_0x4ab5('0x17'))(_0x4ab5('0x18'));var utils=require(_0x4ab5('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4ab5('0x1a'))['db'];config[_0x4ab5('0x1b')]=_['defaults'](config[_0x4ab5('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x4ab5('0x1c'))(new Redis(config[_0x4ab5('0x1b')]));require(_0x4ab5('0x1d'))[_0x4ab5('0x1e')](socket);function respondWithStatusCode(_0x39eddb,_0x4d618f){_0x4d618f=_0x4d618f||0xcc;return function(_0x3338de){if(_0x3338de){return _0x39eddb[_0x4ab5('0x1f')](_0x4d618f);}return _0x39eddb[_0x4ab5('0x20')](_0x4d618f)[_0x4ab5('0x21')]();};}function respondWithResult(_0x4e2ff2,_0x249f78){_0x249f78=_0x249f78||0xc8;return function(_0x342595){if(_0x342595){return _0x4e2ff2[_0x4ab5('0x20')](_0x249f78)[_0x4ab5('0x22')](_0x342595);}};}function respondWithFilteredResult(_0x161f54,_0x4349ea){return function(_0x102cf8){if(_0x102cf8){var _0x1982b4=typeof _0x4349ea[_0x4ab5('0x23')]==='undefined'&&typeof _0x4349ea[_0x4ab5('0x24')]===_0x4ab5('0x25');var _0x3fd633=_0x102cf8['count'];var _0x32f55d=_0x1982b4?0x0:_0x4349ea[_0x4ab5('0x23')];var _0x3f33c9=_0x1982b4?_0x102cf8[_0x4ab5('0x26')]:_0x4349ea[_0x4ab5('0x23')]+_0x4349ea[_0x4ab5('0x24')];var _0x52a35d;if(_0x3f33c9>=_0x3fd633){_0x3f33c9=_0x3fd633;_0x52a35d=0xc8;}else{_0x52a35d=0xce;}_0x161f54[_0x4ab5('0x20')](_0x52a35d);return _0x161f54[_0x4ab5('0x27')](_0x4ab5('0x28'),_0x32f55d+'-'+_0x3f33c9+'/'+_0x3fd633)['json'](_0x102cf8);}return null;};}function patchUpdates(_0x2c46dc){return function(_0x3e7ab3){try{jsonpatch[_0x4ab5('0x29')](_0x3e7ab3,_0x2c46dc,!![]);}catch(_0x201353){return BPromise[_0x4ab5('0x2a')](_0x201353);}return _0x3e7ab3[_0x4ab5('0x2b')]();};}function saveUpdates(_0x292096,_0x3ac8f8){return function(_0x45565f){if(_0x45565f){return _0x45565f[_0x4ab5('0x2c')](_0x292096)[_0x4ab5('0x2d')](function(_0xa1066f){return _0xa1066f;});}return null;};}function removeEntity(_0x1a6d90,_0x427b8a){return function(_0x38c5c1){if(_0x38c5c1){return _0x38c5c1[_0x4ab5('0x2e')]()[_0x4ab5('0x2d')](function(){var _0x114b3c=_0x38c5c1[_0x4ab5('0x2f')]({'plain':!![]});var _0x1a086f=_0x4ab5('0x30');return db[_0x4ab5('0x31')]['destroy']({'where':{'type':_0x1a086f,'resourceId':_0x114b3c['id']}})['then'](function(){return _0x38c5c1;});})[_0x4ab5('0x2d')](function(){_0x1a6d90[_0x4ab5('0x20')](0xcc)[_0x4ab5('0x21')]();});}};}function handleEntityNotFound(_0x2754ad,_0xb40647){return function(_0x5885f5){if(!_0x5885f5){_0x2754ad['sendStatus'](0x194);}return _0x5885f5;};}function handleError(_0x5cba60,_0x393780){_0x393780=_0x393780||0x1f4;return function(_0x59f19b){logger[_0x4ab5('0x32')](_0x59f19b[_0x4ab5('0x33')]);if(_0x59f19b[_0x4ab5('0x34')]){delete _0x59f19b[_0x4ab5('0x34')];}_0x5cba60[_0x4ab5('0x20')](_0x393780)['send'](_0x59f19b);};}exports[_0x4ab5('0x35')]=function(_0x35fe1d,_0x283b83){var _0x11afd7={},_0x52349e={},_0x4c2fbe={'count':0x0,'rows':[]};var _0x566766=_[_0x4ab5('0x36')](db[_0x4ab5('0x37')][_0x4ab5('0x38')],function(_0x371dc5){return{'name':_0x371dc5[_0x4ab5('0x39')],'type':_0x371dc5[_0x4ab5('0x3a')]['key']};});_0x52349e[_0x4ab5('0x3b')]=_[_0x4ab5('0x36')](_0x566766,_0x4ab5('0x34'));_0x52349e[_0x4ab5('0x3c')]=_['keys'](_0x35fe1d[_0x4ab5('0x3c')]);_0x52349e[_0x4ab5('0x3d')]=_[_0x4ab5('0x3e')](_0x52349e[_0x4ab5('0x3b')],_0x52349e[_0x4ab5('0x3c')]);_0x11afd7[_0x4ab5('0x3f')]=_['intersection'](_0x52349e[_0x4ab5('0x3b')],qs['fields'](_0x35fe1d[_0x4ab5('0x3c')][_0x4ab5('0x40')]));_0x11afd7['attributes']=_0x11afd7[_0x4ab5('0x3f')][_0x4ab5('0x41')]?_0x11afd7[_0x4ab5('0x3f')]:_0x52349e[_0x4ab5('0x3b')];if(!_0x35fe1d[_0x4ab5('0x3c')][_0x4ab5('0x42')](_0x4ab5('0x43'))){_0x11afd7[_0x4ab5('0x24')]=qs['limit'](_0x35fe1d[_0x4ab5('0x3c')][_0x4ab5('0x24')]);_0x11afd7[_0x4ab5('0x23')]=qs[_0x4ab5('0x23')](_0x35fe1d[_0x4ab5('0x3c')]['offset']);}_0x11afd7['order']=qs[_0x4ab5('0x44')](_0x35fe1d[_0x4ab5('0x3c')][_0x4ab5('0x44')]);_0x11afd7['where']=qs[_0x4ab5('0x3d')](_[_0x4ab5('0x45')](_0x35fe1d['query'],_0x52349e[_0x4ab5('0x3d')]),_0x566766);if(_0x35fe1d[_0x4ab5('0x3c')][_0x4ab5('0x46')]){_0x11afd7['where']=_[_0x4ab5('0x47')](_0x11afd7[_0x4ab5('0x48')],{'$or':_['map'](_0x566766,function(_0x4419fd){if(_0x4419fd[_0x4ab5('0x3a')]!==_0x4ab5('0x49')){var _0x54d007={};_0x54d007[_0x4419fd[_0x4ab5('0x34')]]={'$like':'%'+_0x35fe1d['query']['filter']+'%'};return _0x54d007;}})});}_0x11afd7=_[_0x4ab5('0x47')]({},_0x11afd7,_0x35fe1d[_0x4ab5('0x4a')]);var _0x5c064b={'where':_0x11afd7[_0x4ab5('0x48')]};return db['Dashboard'][_0x4ab5('0x26')](_0x5c064b)[_0x4ab5('0x2d')](function(_0x2b187a){_0x4c2fbe['count']=_0x2b187a;if(_0x35fe1d[_0x4ab5('0x3c')][_0x4ab5('0x4b')]){_0x11afd7[_0x4ab5('0x4c')]=[{'all':!![]}];}return db[_0x4ab5('0x37')][_0x4ab5('0x4d')](_0x11afd7);})[_0x4ab5('0x2d')](function(_0x4d92c1){_0x4c2fbe[_0x4ab5('0x4e')]=_0x4d92c1;return _0x4c2fbe;})['then'](respondWithFilteredResult(_0x283b83,_0x11afd7))[_0x4ab5('0x4f')](handleError(_0x283b83,null));};exports[_0x4ab5('0x50')]=function(_0x51dd69,_0x2eb4a3){var _0x51679b={'raw':![],'where':{'id':_0x51dd69[_0x4ab5('0x51')]['id']}},_0x1697ac={};_0x1697ac['model']=_[_0x4ab5('0x52')](db[_0x4ab5('0x37')][_0x4ab5('0x38')]);_0x1697ac[_0x4ab5('0x3c')]=_[_0x4ab5('0x52')](_0x51dd69[_0x4ab5('0x3c')]);_0x1697ac[_0x4ab5('0x3d')]=_['intersection'](_0x1697ac['model'],_0x1697ac[_0x4ab5('0x3c')]);_0x51679b[_0x4ab5('0x3f')]=_[_0x4ab5('0x3e')](_0x1697ac[_0x4ab5('0x3b')],qs[_0x4ab5('0x40')](_0x51dd69[_0x4ab5('0x3c')][_0x4ab5('0x40')]));_0x51679b['attributes']=_0x51679b[_0x4ab5('0x3f')]['length']?_0x51679b['attributes']:_0x1697ac[_0x4ab5('0x3b')];if(_0x51dd69[_0x4ab5('0x3c')][_0x4ab5('0x4b')]){_0x51679b[_0x4ab5('0x4c')]=[{'all':!![]}];}_0x51679b=_[_0x4ab5('0x47')]({},_0x51679b,_0x51dd69[_0x4ab5('0x4a')]);return db[_0x4ab5('0x37')][_0x4ab5('0x53')](_0x51679b)[_0x4ab5('0x2d')](handleEntityNotFound(_0x2eb4a3,null))['then'](respondWithResult(_0x2eb4a3,null))[_0x4ab5('0x4f')](handleError(_0x2eb4a3,null));};exports[_0x4ab5('0x54')]=function(_0x7bd989,_0xb78a5e){return db[_0x4ab5('0x37')][_0x4ab5('0x54')](_0x7bd989['body'],{})[_0x4ab5('0x2d')](function(_0x2ba320){var _0x249475=_0x7bd989[_0x4ab5('0x55')]['get']({'plain':!![]});if(!_0x249475)throw new Error(_0x4ab5('0x56'));if(_0x249475[_0x4ab5('0x57')]===_0x4ab5('0x55')){var _0x56c56b=_0x2ba320[_0x4ab5('0x2f')]({'plain':!![]});var _0x517ae1=_0x4ab5('0x30');return db[_0x4ab5('0x58')][_0x4ab5('0x53')]({'where':{'name':_0x517ae1,'userProfileId':_0x249475[_0x4ab5('0x59')]},'raw':!![]})[_0x4ab5('0x2d')](function(_0x5ba99a){if(_0x5ba99a&&_0x5ba99a[_0x4ab5('0x5a')]===0x0){return db[_0x4ab5('0x31')][_0x4ab5('0x54')]({'name':_0x56c56b[_0x4ab5('0x34')],'resourceId':_0x56c56b['id'],'type':_0x5ba99a[_0x4ab5('0x34')],'sectionId':_0x5ba99a['id']},{})[_0x4ab5('0x2d')](function(){return _0x2ba320;});}else{return _0x2ba320;}})[_0x4ab5('0x4f')](function(_0x5bd469){logger[_0x4ab5('0x32')](_0x4ab5('0x5b'),_0x5bd469);throw _0x5bd469;});}return _0x2ba320;})[_0x4ab5('0x2d')](respondWithResult(_0xb78a5e,0xc9))[_0x4ab5('0x4f')](handleError(_0xb78a5e,null));};exports[_0x4ab5('0x5c')]=function(_0x5528a6,_0x46b597){var _0x157917={'where':{'id':_0x5528a6[_0x4ab5('0x51')]['id']}},_0x276bc7={};_0x276bc7[_0x4ab5('0x3b')]=_[_0x4ab5('0x52')](db[_0x4ab5('0x37')][_0x4ab5('0x38')]);_0x157917[_0x4ab5('0x3f')]=_[_0x4ab5('0x3e')](_0x276bc7[_0x4ab5('0x3b')],qs[_0x4ab5('0x40')](_0x5528a6[_0x4ab5('0x3c')]['fields']));_0x157917[_0x4ab5('0x3f')]=_0x157917['attributes'][_0x4ab5('0x41')]?_0x157917[_0x4ab5('0x3f')]:_0x276bc7[_0x4ab5('0x3b')];if(_0x5528a6[_0x4ab5('0x3c')][_0x4ab5('0x4b')]){_0x157917[_0x4ab5('0x4c')]=[{'all':!![]}];}_0x157917=_[_0x4ab5('0x47')]({},_0x157917,_0x5528a6['options']);return db[_0x4ab5('0x37')]['find'](_0x157917)['then'](handleEntityNotFound(_0x46b597,null))['then'](function(_0xd7c044){if(_0xd7c044){var _0x2ca804=_0xd7c044['get']({'plain':!![]});_0x2ca804=qs[_0x4ab5('0x5d')](_0x2ca804,['id',_0x4ab5('0x5e'),_0x4ab5('0x5f')]);_0x5528a6['body']=_[_0x4ab5('0x5d')](_0x5528a6[_0x4ab5('0x60')],['id',_0x4ab5('0x5e'),_0x4ab5('0x5f')]);return db[_0x4ab5('0x37')][_0x4ab5('0x54')](_[_0x4ab5('0x47')](_0x2ca804,_0x5528a6[_0x4ab5('0x60')]),{'include':_0x5528a6[_0x4ab5('0x3c')][_0x4ab5('0x4b')]?[{'all':!![]}]:undefined})[_0x4ab5('0x2d')](function(_0x315878){var _0x1f5364=_0x5528a6[_0x4ab5('0x55')][_0x4ab5('0x2f')]({'plain':!![]});if(!_0x1f5364)throw new Error(_0x4ab5('0x56'));if(_0x1f5364[_0x4ab5('0x57')]==='user'){var _0x5d00be=_0x315878[_0x4ab5('0x2f')]({'plain':!![]});var _0x465fc1=_0x4ab5('0x30');return db[_0x4ab5('0x58')][_0x4ab5('0x53')]({'where':{'name':_0x465fc1,'userProfileId':_0x1f5364[_0x4ab5('0x59')]},'raw':!![]})[_0x4ab5('0x2d')](function(_0x19807b){if(_0x19807b&&_0x19807b[_0x4ab5('0x5a')]===0x0){return db[_0x4ab5('0x31')][_0x4ab5('0x54')]({'name':_0x5d00be[_0x4ab5('0x34')],'resourceId':_0x5d00be['id'],'type':_0x19807b['name'],'sectionId':_0x19807b['id']},{})['then'](function(){return _0x315878;});}else{return _0x315878;}})['catch'](function(_0x1cbe2e){logger[_0x4ab5('0x32')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1cbe2e);throw _0x1cbe2e;});}return _0x315878;});}})[_0x4ab5('0x2d')](respondWithResult(_0x46b597,0xc9))[_0x4ab5('0x4f')](handleError(_0x46b597,null));};exports[_0x4ab5('0x2c')]=function(_0x1985e9,_0x439b6a){if(_0x1985e9['body']['id']){delete _0x1985e9['body']['id'];}return db['Dashboard'][_0x4ab5('0x53')]({'where':{'id':_0x1985e9[_0x4ab5('0x51')]['id']}})[_0x4ab5('0x2d')](handleEntityNotFound(_0x439b6a,null))[_0x4ab5('0x2d')](saveUpdates(_0x1985e9[_0x4ab5('0x60')],null))['then'](respondWithResult(_0x439b6a,null))[_0x4ab5('0x4f')](handleError(_0x439b6a,null));};exports['destroy']=function(_0x3c5000,_0xc3519b){return db[_0x4ab5('0x37')][_0x4ab5('0x53')]({'where':{'id':_0x3c5000[_0x4ab5('0x51')]['id']}})[_0x4ab5('0x2d')](handleEntityNotFound(_0xc3519b,null))['then'](removeEntity(_0xc3519b,null))[_0x4ab5('0x4f')](handleError(_0xc3519b,null));};function widgetAttributes(_0x3520fe){try{switch(_0x3520fe[_0x4ab5('0x3a')]){case _0x4ab5('0x61'):return[{'name':_0x4ab5('0x62'),'value':_0x3520fe[_0x4ab5('0x62')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x0]?_0x3520fe['attrs'][0x0]['value']:undefined)||_0x4ab5('0x64')}];case _0x4ab5('0x65'):return[{'name':_0x4ab5('0x66'),'value':_0x3520fe[_0x4ab5('0x66')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe['attrs'][0x0]?_0x3520fe[_0x4ab5('0x63')][0x0][_0x4ab5('0x67')]:undefined)||''}];case _0x4ab5('0x68'):return[{'name':_0x4ab5('0x69'),'value':_0x3520fe[_0x4ab5('0x69')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x0]?_0x3520fe[_0x4ab5('0x63')][0x0][_0x4ab5('0x67')]:undefined)||_0x4ab5('0x6a')},{'name':_0x4ab5('0x6b'),'value':_0x3520fe[_0x4ab5('0x6b')]||(_0x3520fe['attrs']&&_0x3520fe['attrs'][0x1]?_0x3520fe['attrs'][0x1]['value']:undefined)||_0x4ab5('0x6c')},{'name':_0x4ab5('0x6d'),'value':_0x3520fe[_0x4ab5('0x6d')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe['attrs'][0x2]?_0x3520fe[_0x4ab5('0x63')][0x2][_0x4ab5('0x67')]:undefined)||0xc}];case'counter':return[{'name':_0x4ab5('0x6e'),'value':_0x3520fe[_0x4ab5('0x6e')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x0]?_0x3520fe['attrs'][0x0]['value']:undefined)||_0x4ab5('0x6f')},{'name':'attrVoiceQueues','value':_0x3520fe[_0x4ab5('0x70')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x1]?_0x3520fe['attrs'][0x1][_0x4ab5('0x67')]:undefined)||[]},{'name':_0x4ab5('0x6d'),'value':_0x3520fe[_0x4ab5('0x6d')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe['attrs'][0x2]?_0x3520fe[_0x4ab5('0x63')][0x2][_0x4ab5('0x67')]:undefined)||0x14},{'name':_0x4ab5('0x71'),'value':_0x3520fe[_0x4ab5('0x71')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe['attrs'][0x3]?_0x3520fe['attrs'][0x3][_0x4ab5('0x67')]:undefined)||_0x4ab5('0x72')},{'name':_0x4ab5('0x73'),'value':_0x3520fe[_0x4ab5('0x73')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x4]?_0x3520fe['attrs'][0x4]['value']:undefined)||''},{'name':_0x4ab5('0x74'),'value':_0x3520fe[_0x4ab5('0x74')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x5]?_0x3520fe[_0x4ab5('0x63')][0x5]['value']:undefined)||''},{'name':_0x4ab5('0x75'),'value':_0x3520fe[_0x4ab5('0x75')]||(_0x3520fe['attrs']&&_0x3520fe[_0x4ab5('0x63')][0x6]?_0x3520fe[_0x4ab5('0x63')][0x6][_0x4ab5('0x67')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x3520fe[_0x4ab5('0x76')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x7]?_0x3520fe['attrs'][0x7][_0x4ab5('0x67')]:undefined)||''},{'name':_0x4ab5('0x77'),'value':_0x3520fe['attrWhatsappAccounts']||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x8]?_0x3520fe['attrs'][0x8][_0x4ab5('0x67')]:undefined)||''},{'name':'attrChatWebsites','value':_0x3520fe[_0x4ab5('0x78')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x9]?_0x3520fe[_0x4ab5('0x63')][0x9][_0x4ab5('0x67')]:undefined)||''}];case'multibar-chart':case _0x4ab5('0x79'):return[{'name':_0x4ab5('0x7a'),'value':_0x3520fe['attrSerie1']||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x0]?_0x3520fe[_0x4ab5('0x63')][0x0][_0x4ab5('0x67')]:undefined)||_0x4ab5('0x6f')},{'name':_0x4ab5('0x7b'),'value':_0x3520fe[_0x4ab5('0x7b')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x1]?_0x3520fe[_0x4ab5('0x63')][0x1][_0x4ab5('0x67')]:undefined)||null},{'name':'attrSerie3','value':_0x3520fe[_0x4ab5('0x7c')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x2]?_0x3520fe[_0x4ab5('0x63')][0x2][_0x4ab5('0x67')]:undefined)||null},{'name':_0x4ab5('0x70'),'value':_0x3520fe[_0x4ab5('0x70')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x3]?_0x3520fe[_0x4ab5('0x63')][0x3][_0x4ab5('0x67')]:undefined)||[]},{'name':_0x4ab5('0x71'),'value':_0x3520fe[_0x4ab5('0x71')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x4]?_0x3520fe[_0x4ab5('0x63')][0x4][_0x4ab5('0x67')]:undefined)||_0x4ab5('0x72')},{'name':'attrEmailAccounts','value':_0x3520fe[_0x4ab5('0x73')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x5]?_0x3520fe[_0x4ab5('0x63')][0x5][_0x4ab5('0x67')]:undefined)||''},{'name':_0x4ab5('0x74'),'value':_0x3520fe['attrFaxAccounts']||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x6]?_0x3520fe[_0x4ab5('0x63')][0x6][_0x4ab5('0x67')]:undefined)||''},{'name':_0x4ab5('0x75'),'value':_0x3520fe[_0x4ab5('0x75')]||(_0x3520fe['attrs']&&_0x3520fe[_0x4ab5('0x63')][0x7]?_0x3520fe[_0x4ab5('0x63')][0x7][_0x4ab5('0x67')]:undefined)||''},{'name':_0x4ab5('0x76'),'value':_0x3520fe[_0x4ab5('0x76')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x8]?_0x3520fe['attrs'][0x8][_0x4ab5('0x67')]:undefined)||''},{'name':_0x4ab5('0x77'),'value':_0x3520fe[_0x4ab5('0x77')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x9]?_0x3520fe['attrs'][0x9][_0x4ab5('0x67')]:undefined)||''},{'name':_0x4ab5('0x78'),'value':_0x3520fe[_0x4ab5('0x78')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0xa]?_0x3520fe[_0x4ab5('0x63')][0xa][_0x4ab5('0x67')]:undefined)||''}];case _0x4ab5('0x7d'):return[{'name':_0x4ab5('0x7e'),'type':_0x3520fe[_0x4ab5('0x7f')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe['attrs'][0x0]?_0x3520fe['attrs'][0x0][_0x4ab5('0x3a')]:undefined)||null,'value':_0x3520fe[_0x4ab5('0x7e')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x0]?_0x3520fe['attrs'][0x0][_0x4ab5('0x67')]:undefined)||null},{'name':_0x4ab5('0x80'),'value':_0x3520fe[_0x4ab5('0x80')]||(_0x3520fe[_0x4ab5('0x63')]&&_0x3520fe[_0x4ab5('0x63')][0x1]?_0x3520fe[_0x4ab5('0x63')][0x1][_0x4ab5('0x67')]:undefined)||0x0}];default:return[];}}catch(_0x207c95){logger['error'](_0x4ab5('0x81'),JSON[_0x4ab5('0x82')](_0x207c95));return[];}}exports['addItem']=function(_0x9d3549,_0x1b4916,_0x37e5a0){if(_0x9d3549[_0x4ab5('0x60')]['id']){delete _0x9d3549[_0x4ab5('0x60')]['id'];}return db[_0x4ab5('0x37')][_0x4ab5('0x53')]({'where':{'id':_0x9d3549[_0x4ab5('0x51')]['id']}})[_0x4ab5('0x2d')](handleEntityNotFound(_0x1b4916,null))['then'](function(_0x37c479){if(_0x37c479){_0x9d3549['body'][_0x4ab5('0x83')]=_0x37c479['id'];_0x9d3549[_0x4ab5('0x60')][_0x4ab5('0x63')]=widgetAttributes(_0x9d3549['body']);return db[_0x4ab5('0x84')]['create'](_0x9d3549[_0x4ab5('0x60')]);}})[_0x4ab5('0x2d')](respondWithResult(_0x1b4916,null))[_0x4ab5('0x4f')](handleError(_0x1b4916,null));};exports[_0x4ab5('0x85')]=function(_0x3a0c30,_0x40e83e,_0x467c55){var _0x1e147c={};var _0x151c6d={};var _0x2981ed;var _0x4b0d49;return db[_0x4ab5('0x37')]['findOne']({'where':{'id':_0x3a0c30['params']['id']}})[_0x4ab5('0x2d')](handleEntityNotFound(_0x40e83e,null))[_0x4ab5('0x2d')](function(_0x42a349){if(_0x42a349){_0x2981ed=_0x42a349;_0x151c6d[_0x4ab5('0x3b')]=_[_0x4ab5('0x52')](db[_0x4ab5('0x84')]['rawAttributes']);_0x151c6d[_0x4ab5('0x3c')]=_[_0x4ab5('0x52')](_0x3a0c30[_0x4ab5('0x3c')]);_0x151c6d['filters']=_['intersection'](_0x151c6d[_0x4ab5('0x3b')],_0x151c6d[_0x4ab5('0x3c')]);_0x1e147c[_0x4ab5('0x3f')]=_[_0x4ab5('0x3e')](_0x151c6d[_0x4ab5('0x3b')],qs[_0x4ab5('0x40')](_0x3a0c30['query'][_0x4ab5('0x40')]));_0x1e147c['attributes']=_0x1e147c['attributes'][_0x4ab5('0x41')]?_0x1e147c[_0x4ab5('0x3f')]:_0x151c6d[_0x4ab5('0x3b')];_0x1e147c[_0x4ab5('0x86')]=qs[_0x4ab5('0x44')](_0x3a0c30[_0x4ab5('0x3c')][_0x4ab5('0x44')]);_0x1e147c[_0x4ab5('0x48')]=qs[_0x4ab5('0x3d')](_[_0x4ab5('0x45')](_0x3a0c30[_0x4ab5('0x3c')],_0x151c6d[_0x4ab5('0x3d')]));if(_0x3a0c30[_0x4ab5('0x3c')][_0x4ab5('0x46')]){_0x1e147c[_0x4ab5('0x48')]=_[_0x4ab5('0x47')](_0x1e147c[_0x4ab5('0x48')],{'$or':_[_0x4ab5('0x36')](_0x1e147c[_0x4ab5('0x3f')],function(_0x513e3e){var _0x54d0b3={};_0x54d0b3[_0x513e3e]={'$like':'%'+_0x3a0c30[_0x4ab5('0x3c')][_0x4ab5('0x46')]+'%'};return _0x54d0b3;})});}_0x1e147c=_['merge']({},_0x1e147c,_0x3a0c30[_0x4ab5('0x4a')]);return _0x2981ed[_0x4ab5('0x85')](_0x1e147c);}})['then'](function(_0x13e931){if(_0x13e931){_0x4b0d49=_0x13e931['length'];if(!_0x3a0c30[_0x4ab5('0x3c')][_0x4ab5('0x42')](_0x4ab5('0x43'))){_0x1e147c['limit']=qs[_0x4ab5('0x24')](_0x3a0c30[_0x4ab5('0x3c')][_0x4ab5('0x24')]);_0x1e147c['offset']=qs[_0x4ab5('0x23')](_0x3a0c30[_0x4ab5('0x3c')]['offset']);}return _0x2981ed[_0x4ab5('0x85')](_0x1e147c);}})['then'](function(_0x151be0){if(_0x151be0){return _0x151be0?{'count':_0x4b0d49,'rows':_0x151be0}:null;}})['then'](respondWithResult(_0x40e83e,null))[_0x4ab5('0x4f')](handleError(_0x40e83e,null));};
\ No newline at end of file
+var _0x6744=['fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','clone','params','rawAttributes','include','omit','createdAt','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','attrUrl','attrs','value','https://','custom','clock','attrHourFormat','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','voice','attrEmailAccounts','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./dashboard.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','reject','update','then','destroy','get','CustomDashboards','UserProfileResource','end','stack','name','send','index','map','Dashboard','fieldName','type','key','model','query','keys','intersection','attributes'];(function(_0x3c312e,_0x94260){var _0x5ddb51=function(_0x1708dd){while(--_0x1708dd){_0x3c312e['push'](_0x3c312e['shift']());}};_0x5ddb51(++_0x94260);}(_0x6744,0x14f));var _0x4674=function(_0x228e72,_0x4b679d){_0x228e72=_0x228e72-0x0;var _0x410025=_0x6744[_0x228e72];return _0x410025;};'use strict';var emlformat=require(_0x4674('0x0'));var rimraf=require(_0x4674('0x1'));var zipdir=require(_0x4674('0x2'));var jsonpatch=require(_0x4674('0x3'));var rp=require(_0x4674('0x4'));var moment=require(_0x4674('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4674('0x6'));var util=require(_0x4674('0x7'));var path=require(_0x4674('0x8'));var sox=require('sox');var csv=require(_0x4674('0x9'));var ejs=require(_0x4674('0xa'));var fs=require('fs');var fs_extra=require(_0x4674('0xb'));var _=require(_0x4674('0xc'));var squel=require(_0x4674('0xd'));var crypto=require(_0x4674('0xe'));var jsforce=require(_0x4674('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x4674('0x9'));var querystring=require(_0x4674('0x10'));var Papa=require(_0x4674('0x11'));var Redis=require('ioredis');var authService=require(_0x4674('0x12'));var qs=require(_0x4674('0x13'));var as=require(_0x4674('0x14'));var hardwareService=require(_0x4674('0x15'));var logger=require('../../config/logger')(_0x4674('0x16'));var utils=require(_0x4674('0x17'));var config=require(_0x4674('0x18'));var licenseUtil=require(_0x4674('0x19'));var db=require('../../mysqldb')['db'];config[_0x4674('0x1a')]=_[_0x4674('0x1b')](config[_0x4674('0x1a')],{'host':_0x4674('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4674('0x1a')]));require(_0x4674('0x1d'))[_0x4674('0x1e')](socket);function respondWithStatusCode(_0x1a9146,_0x26160b){_0x26160b=_0x26160b||0xcc;return function(_0x26b99b){if(_0x26b99b){return _0x1a9146[_0x4674('0x1f')](_0x26160b);}return _0x1a9146['status'](_0x26160b)['end']();};}function respondWithResult(_0x14446c,_0x5c2c19){_0x5c2c19=_0x5c2c19||0xc8;return function(_0x40981f){if(_0x40981f){return _0x14446c[_0x4674('0x20')](_0x5c2c19)[_0x4674('0x21')](_0x40981f);}};}function respondWithFilteredResult(_0x2e29b2,_0x4ac110){return function(_0x3fb262){if(_0x3fb262){var _0x1bcff6=typeof _0x4ac110[_0x4674('0x22')]===_0x4674('0x23')&&typeof _0x4ac110['limit']===_0x4674('0x23');var _0xdc2f3d=_0x3fb262[_0x4674('0x24')];var _0x2188f4=_0x1bcff6?0x0:_0x4ac110[_0x4674('0x22')];var _0x294011=_0x1bcff6?_0x3fb262[_0x4674('0x24')]:_0x4ac110[_0x4674('0x22')]+_0x4ac110[_0x4674('0x25')];var _0x3ffd9e;if(_0x294011>=_0xdc2f3d){_0x294011=_0xdc2f3d;_0x3ffd9e=0xc8;}else{_0x3ffd9e=0xce;}_0x2e29b2[_0x4674('0x20')](_0x3ffd9e);return _0x2e29b2[_0x4674('0x26')]('Content-Range',_0x2188f4+'-'+_0x294011+'/'+_0xdc2f3d)['json'](_0x3fb262);}return null;};}function patchUpdates(_0x5e00f3){return function(_0x460363){try{jsonpatch['apply'](_0x460363,_0x5e00f3,!![]);}catch(_0x2a1831){return BPromise[_0x4674('0x27')](_0x2a1831);}return _0x460363['save']();};}function saveUpdates(_0x3b7495,_0x3cde8b){return function(_0x304668){if(_0x304668){return _0x304668[_0x4674('0x28')](_0x3b7495)[_0x4674('0x29')](function(_0x5ab55d){return _0x5ab55d;});}return null;};}function removeEntity(_0x3df71c,_0x2bbe5d){return function(_0x5987b3){if(_0x5987b3){return _0x5987b3[_0x4674('0x2a')]()[_0x4674('0x29')](function(){var _0x5321ea=_0x5987b3[_0x4674('0x2b')]({'plain':!![]});var _0x2d3d44=_0x4674('0x2c');return db[_0x4674('0x2d')][_0x4674('0x2a')]({'where':{'type':_0x2d3d44,'resourceId':_0x5321ea['id']}})[_0x4674('0x29')](function(){return _0x5987b3;});})[_0x4674('0x29')](function(){_0x3df71c['status'](0xcc)[_0x4674('0x2e')]();});}};}function handleEntityNotFound(_0x12bbf0,_0x408b12){return function(_0x125f7c){if(!_0x125f7c){_0x12bbf0['sendStatus'](0x194);}return _0x125f7c;};}function handleError(_0x31574f,_0x479119){_0x479119=_0x479119||0x1f4;return function(_0x279ac4){logger['error'](_0x279ac4[_0x4674('0x2f')]);if(_0x279ac4[_0x4674('0x30')]){delete _0x279ac4[_0x4674('0x30')];}_0x31574f['status'](_0x479119)[_0x4674('0x31')](_0x279ac4);};}exports[_0x4674('0x32')]=function(_0x360238,_0x4bc110){var _0xe9ab34={},_0x35d7ca={},_0x3d1496={'count':0x0,'rows':[]};var _0x327f60=_[_0x4674('0x33')](db[_0x4674('0x34')]['rawAttributes'],function(_0x186094){return{'name':_0x186094[_0x4674('0x35')],'type':_0x186094[_0x4674('0x36')][_0x4674('0x37')]};});_0x35d7ca[_0x4674('0x38')]=_['map'](_0x327f60,_0x4674('0x30'));_0x35d7ca[_0x4674('0x39')]=_[_0x4674('0x3a')](_0x360238['query']);_0x35d7ca['filters']=_[_0x4674('0x3b')](_0x35d7ca[_0x4674('0x38')],_0x35d7ca[_0x4674('0x39')]);_0xe9ab34[_0x4674('0x3c')]=_['intersection'](_0x35d7ca[_0x4674('0x38')],qs[_0x4674('0x3d')](_0x360238[_0x4674('0x39')][_0x4674('0x3d')]));_0xe9ab34[_0x4674('0x3c')]=_0xe9ab34[_0x4674('0x3c')][_0x4674('0x3e')]?_0xe9ab34[_0x4674('0x3c')]:_0x35d7ca[_0x4674('0x38')];if(!_0x360238[_0x4674('0x39')][_0x4674('0x3f')]('nolimit')){_0xe9ab34['limit']=qs[_0x4674('0x25')](_0x360238['query']['limit']);_0xe9ab34['offset']=qs[_0x4674('0x22')](_0x360238[_0x4674('0x39')][_0x4674('0x22')]);}_0xe9ab34[_0x4674('0x40')]=qs[_0x4674('0x41')](_0x360238['query']['sort']);_0xe9ab34[_0x4674('0x42')]=qs[_0x4674('0x43')](_[_0x4674('0x44')](_0x360238[_0x4674('0x39')],_0x35d7ca[_0x4674('0x43')]),_0x327f60);if(_0x360238[_0x4674('0x39')][_0x4674('0x45')]){_0xe9ab34[_0x4674('0x42')]=_[_0x4674('0x46')](_0xe9ab34['where'],{'$or':_[_0x4674('0x33')](_0x327f60,function(_0x583063){if(_0x583063[_0x4674('0x36')]!==_0x4674('0x47')){var _0x13eb64={};_0x13eb64[_0x583063[_0x4674('0x30')]]={'$like':'%'+_0x360238['query'][_0x4674('0x45')]+'%'};return _0x13eb64;}})});}_0xe9ab34=_[_0x4674('0x46')]({},_0xe9ab34,_0x360238[_0x4674('0x48')]);var _0x39c447={'where':_0xe9ab34['where']};return db['Dashboard'][_0x4674('0x24')](_0x39c447)[_0x4674('0x29')](function(_0x4a4ee5){_0x3d1496[_0x4674('0x24')]=_0x4a4ee5;if(_0x360238['query'][_0x4674('0x49')]){_0xe9ab34['include']=[{'all':!![]}];}return db['Dashboard'][_0x4674('0x4a')](_0xe9ab34);})[_0x4674('0x29')](function(_0x4b1e0b){_0x3d1496[_0x4674('0x4b')]=_0x4b1e0b;return _0x3d1496;})[_0x4674('0x29')](respondWithFilteredResult(_0x4bc110,_0xe9ab34))[_0x4674('0x4c')](handleError(_0x4bc110,null));};exports[_0x4674('0x4d')]=function(_0x12ae93,_0x404746){var _0x41e001={'raw':![],'where':{'id':_0x12ae93['params']['id']}},_0x41aafd={};_0x41aafd[_0x4674('0x38')]=_[_0x4674('0x3a')](db[_0x4674('0x34')]['rawAttributes']);_0x41aafd[_0x4674('0x39')]=_[_0x4674('0x3a')](_0x12ae93['query']);_0x41aafd[_0x4674('0x43')]=_['intersection'](_0x41aafd['model'],_0x41aafd[_0x4674('0x39')]);_0x41e001[_0x4674('0x3c')]=_[_0x4674('0x3b')](_0x41aafd['model'],qs['fields'](_0x12ae93[_0x4674('0x39')][_0x4674('0x3d')]));_0x41e001['attributes']=_0x41e001[_0x4674('0x3c')][_0x4674('0x3e')]?_0x41e001[_0x4674('0x3c')]:_0x41aafd[_0x4674('0x38')];if(_0x12ae93['query'][_0x4674('0x49')]){_0x41e001['include']=[{'all':!![]}];}_0x41e001=_[_0x4674('0x46')]({},_0x41e001,_0x12ae93[_0x4674('0x48')]);return db[_0x4674('0x34')][_0x4674('0x4e')](_0x41e001)[_0x4674('0x29')](handleEntityNotFound(_0x404746,null))['then'](respondWithResult(_0x404746,null))[_0x4674('0x4c')](handleError(_0x404746,null));};exports['create']=function(_0x594f97,_0x53eac8){return db[_0x4674('0x34')][_0x4674('0x4f')](_0x594f97[_0x4674('0x50')],{})[_0x4674('0x29')](function(_0x30f2c4){var _0x2d5b37=_0x594f97[_0x4674('0x51')]['get']({'plain':!![]});if(!_0x2d5b37)throw new Error(_0x4674('0x52'));if(_0x2d5b37[_0x4674('0x53')]==='user'){var _0x180529=_0x30f2c4['get']({'plain':!![]});var _0xad0f7d='CustomDashboards';return db[_0x4674('0x54')]['find']({'where':{'name':_0xad0f7d,'userProfileId':_0x2d5b37[_0x4674('0x55')]},'raw':!![]})['then'](function(_0x570d0a){if(_0x570d0a&&_0x570d0a[_0x4674('0x56')]===0x0){return db[_0x4674('0x2d')]['create']({'name':_0x180529[_0x4674('0x30')],'resourceId':_0x180529['id'],'type':_0x570d0a[_0x4674('0x30')],'sectionId':_0x570d0a['id']},{})['then'](function(){return _0x30f2c4;});}else{return _0x30f2c4;}})[_0x4674('0x4c')](function(_0x5f5291){logger[_0x4674('0x57')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5f5291);throw _0x5f5291;});}return _0x30f2c4;})['then'](respondWithResult(_0x53eac8,0xc9))[_0x4674('0x4c')](handleError(_0x53eac8,null));};exports[_0x4674('0x58')]=function(_0x20044e,_0x186ec8){var _0x567e80={'where':{'id':_0x20044e[_0x4674('0x59')]['id']}},_0x256391={};_0x256391['model']=_[_0x4674('0x3a')](db['Dashboard'][_0x4674('0x5a')]);_0x567e80[_0x4674('0x3c')]=_[_0x4674('0x3b')](_0x256391['model'],qs[_0x4674('0x3d')](_0x20044e[_0x4674('0x39')][_0x4674('0x3d')]));_0x567e80[_0x4674('0x3c')]=_0x567e80[_0x4674('0x3c')][_0x4674('0x3e')]?_0x567e80[_0x4674('0x3c')]:_0x256391[_0x4674('0x38')];if(_0x20044e[_0x4674('0x39')][_0x4674('0x49')]){_0x567e80[_0x4674('0x5b')]=[{'all':!![]}];}_0x567e80=_[_0x4674('0x46')]({},_0x567e80,_0x20044e[_0x4674('0x48')]);return db[_0x4674('0x34')][_0x4674('0x4e')](_0x567e80)[_0x4674('0x29')](handleEntityNotFound(_0x186ec8,null))[_0x4674('0x29')](function(_0x3f37d){if(_0x3f37d){var _0x5ca71c=_0x3f37d[_0x4674('0x2b')]({'plain':!![]});_0x5ca71c=qs[_0x4674('0x5c')](_0x5ca71c,['id',_0x4674('0x5d'),'updatedAt']);_0x20044e[_0x4674('0x50')]=_[_0x4674('0x5c')](_0x20044e[_0x4674('0x50')],['id','createdAt','updatedAt']);return db['Dashboard'][_0x4674('0x4f')](_[_0x4674('0x46')](_0x5ca71c,_0x20044e[_0x4674('0x50')]),{'include':_0x20044e[_0x4674('0x39')][_0x4674('0x49')]?[{'all':!![]}]:undefined})['then'](function(_0x1499c4){var _0x3ea809=_0x20044e[_0x4674('0x51')][_0x4674('0x2b')]({'plain':!![]});if(!_0x3ea809)throw new Error(_0x4674('0x52'));if(_0x3ea809[_0x4674('0x53')]===_0x4674('0x51')){var _0x37fb4b=_0x1499c4[_0x4674('0x2b')]({'plain':!![]});var _0x4390e8=_0x4674('0x2c');return db[_0x4674('0x54')]['find']({'where':{'name':_0x4390e8,'userProfileId':_0x3ea809[_0x4674('0x55')]},'raw':!![]})['then'](function(_0x3dbaaa){if(_0x3dbaaa&&_0x3dbaaa['autoAssociation']===0x0){return db[_0x4674('0x2d')][_0x4674('0x4f')]({'name':_0x37fb4b['name'],'resourceId':_0x37fb4b['id'],'type':_0x3dbaaa['name'],'sectionId':_0x3dbaaa['id']},{})['then'](function(){return _0x1499c4;});}else{return _0x1499c4;}})[_0x4674('0x4c')](function(_0x30905b){logger[_0x4674('0x57')](_0x4674('0x5e'),_0x30905b);throw _0x30905b;});}return _0x1499c4;});}})['then'](respondWithResult(_0x186ec8,0xc9))[_0x4674('0x4c')](handleError(_0x186ec8,null));};exports[_0x4674('0x28')]=function(_0x44a484,_0x887896){if(_0x44a484[_0x4674('0x50')]['id']){delete _0x44a484[_0x4674('0x50')]['id'];}return db[_0x4674('0x34')]['find']({'where':{'id':_0x44a484[_0x4674('0x59')]['id']}})[_0x4674('0x29')](handleEntityNotFound(_0x887896,null))[_0x4674('0x29')](saveUpdates(_0x44a484[_0x4674('0x50')],null))[_0x4674('0x29')](respondWithResult(_0x887896,null))[_0x4674('0x4c')](handleError(_0x887896,null));};exports['destroy']=function(_0x4d29f2,_0x5c78c2){return db[_0x4674('0x34')][_0x4674('0x4e')]({'where':{'id':_0x4d29f2['params']['id']}})[_0x4674('0x29')](handleEntityNotFound(_0x5c78c2,null))['then'](removeEntity(_0x5c78c2,null))[_0x4674('0x4c')](handleError(_0x5c78c2,null));};function widgetAttributes(_0x4d0a7a){try{switch(_0x4d0a7a[_0x4674('0x36')]){case'iframe':return[{'name':'attrUrl','value':_0x4d0a7a[_0x4674('0x5f')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0][_0x4674('0x61')]:undefined)||_0x4674('0x62')}];case _0x4674('0x63'):return[{'name':'attrPath','value':_0x4d0a7a['attrPath']||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0][_0x4674('0x61')]:undefined)||''}];case _0x4674('0x64'):return[{'name':_0x4674('0x65'),'value':_0x4d0a7a['attrHourFormat']||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0][_0x4674('0x61')]:undefined)||'HH:mm:ss'},{'name':_0x4674('0x66'),'value':_0x4d0a7a[_0x4674('0x66')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x1]?_0x4d0a7a[_0x4674('0x60')][0x1][_0x4674('0x61')]:undefined)||'0.00'},{'name':_0x4674('0x67'),'value':_0x4d0a7a[_0x4674('0x67')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x2]?_0x4d0a7a[_0x4674('0x60')][0x2][_0x4674('0x61')]:undefined)||0xc}];case _0x4674('0x68'):return[{'name':'attrMetric','value':_0x4d0a7a[_0x4674('0x69')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0][_0x4674('0x61')]:undefined)||_0x4674('0x6a')},{'name':_0x4674('0x6b'),'value':_0x4d0a7a[_0x4674('0x6b')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x1]?_0x4d0a7a[_0x4674('0x60')][0x1][_0x4674('0x61')]:undefined)||[]},{'name':'attrFontSize','value':_0x4d0a7a[_0x4674('0x67')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x2]?_0x4d0a7a['attrs'][0x2][_0x4674('0x61')]:undefined)||0x14},{'name':'attrChannel','value':_0x4d0a7a[_0x4674('0x6c')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x3]?_0x4d0a7a[_0x4674('0x60')][0x3][_0x4674('0x61')]:undefined)||'voice'},{'name':'attrEmailAccounts','value':_0x4d0a7a['attrEmailAccounts']||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x4]?_0x4d0a7a[_0x4674('0x60')][0x4][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x6d'),'value':_0x4d0a7a[_0x4674('0x6d')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x5]?_0x4d0a7a[_0x4674('0x60')][0x5][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x6e'),'value':_0x4d0a7a[_0x4674('0x6e')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x6]?_0x4d0a7a[_0x4674('0x60')][0x6][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x6f'),'value':_0x4d0a7a[_0x4674('0x6f')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x7]?_0x4d0a7a['attrs'][0x7][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x70'),'value':_0x4d0a7a[_0x4674('0x70')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x8]?_0x4d0a7a['attrs'][0x8][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x71'),'value':_0x4d0a7a[_0x4674('0x71')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x9]?_0x4d0a7a[_0x4674('0x60')][0x9][_0x4674('0x61')]:undefined)||''}];case _0x4674('0x72'):case _0x4674('0x73'):return[{'name':_0x4674('0x74'),'value':_0x4d0a7a[_0x4674('0x74')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0][_0x4674('0x61')]:undefined)||_0x4674('0x6a')},{'name':_0x4674('0x75'),'value':_0x4d0a7a[_0x4674('0x75')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x1]?_0x4d0a7a[_0x4674('0x60')][0x1]['value']:undefined)||null},{'name':_0x4674('0x76'),'value':_0x4d0a7a['attrSerie3']||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x2]?_0x4d0a7a[_0x4674('0x60')][0x2][_0x4674('0x61')]:undefined)||null},{'name':_0x4674('0x6b'),'value':_0x4d0a7a['attrVoiceQueues']||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x3]?_0x4d0a7a['attrs'][0x3][_0x4674('0x61')]:undefined)||[]},{'name':_0x4674('0x6c'),'value':_0x4d0a7a[_0x4674('0x6c')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x4]?_0x4d0a7a[_0x4674('0x60')][0x4]['value']:undefined)||_0x4674('0x77')},{'name':'attrEmailAccounts','value':_0x4d0a7a[_0x4674('0x78')]||(_0x4d0a7a['attrs']&&_0x4d0a7a['attrs'][0x5]?_0x4d0a7a[_0x4674('0x60')][0x5][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x6d'),'value':_0x4d0a7a[_0x4674('0x6d')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a['attrs'][0x6]?_0x4d0a7a['attrs'][0x6][_0x4674('0x61')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x4d0a7a[_0x4674('0x6e')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x7]?_0x4d0a7a['attrs'][0x7][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x6f'),'value':_0x4d0a7a[_0x4674('0x6f')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a['attrs'][0x8]?_0x4d0a7a['attrs'][0x8][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x70'),'value':_0x4d0a7a[_0x4674('0x70')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x9]?_0x4d0a7a[_0x4674('0x60')][0x9][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x71'),'value':_0x4d0a7a[_0x4674('0x71')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0xa]?_0x4d0a7a['attrs'][0xa][_0x4674('0x61')]:undefined)||''}];case _0x4674('0x79'):return[{'name':'attrReport','type':_0x4d0a7a['reportType']||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a['attrs'][0x0][_0x4674('0x36')]:undefined)||null,'value':_0x4d0a7a[_0x4674('0x7a')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0]['value']:undefined)||null},{'name':_0x4674('0x7b'),'value':_0x4d0a7a[_0x4674('0x7b')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x1]?_0x4d0a7a[_0x4674('0x60')][0x1][_0x4674('0x61')]:undefined)||0x0}];default:return[];}}catch(_0x4e56b8){logger[_0x4674('0x57')](_0x4674('0x7c'),JSON[_0x4674('0x7d')](_0x4e56b8));return[];}}exports[_0x4674('0x7e')]=function(_0x21ffac,_0x2145e1,_0x2d39a2){if(_0x21ffac[_0x4674('0x50')]['id']){delete _0x21ffac[_0x4674('0x50')]['id'];}return db['Dashboard']['find']({'where':{'id':_0x21ffac['params']['id']}})[_0x4674('0x29')](handleEntityNotFound(_0x2145e1,null))[_0x4674('0x29')](function(_0x419ea4){if(_0x419ea4){_0x21ffac[_0x4674('0x50')][_0x4674('0x7f')]=_0x419ea4['id'];_0x21ffac[_0x4674('0x50')]['attrs']=widgetAttributes(_0x21ffac[_0x4674('0x50')]);return db[_0x4674('0x80')][_0x4674('0x4f')](_0x21ffac[_0x4674('0x50')]);}})[_0x4674('0x29')](respondWithResult(_0x2145e1,null))[_0x4674('0x4c')](handleError(_0x2145e1,null));};exports[_0x4674('0x81')]=function(_0x54d2c2,_0x3d0994,_0x18c3cb){var _0x1ebb37={};var _0x1484ef={};var _0xfa819;var _0x265889;return db[_0x4674('0x34')][_0x4674('0x82')]({'where':{'id':_0x54d2c2[_0x4674('0x59')]['id']}})[_0x4674('0x29')](handleEntityNotFound(_0x3d0994,null))[_0x4674('0x29')](function(_0x434a21){if(_0x434a21){_0xfa819=_0x434a21;_0x1484ef[_0x4674('0x38')]=_['keys'](db[_0x4674('0x80')][_0x4674('0x5a')]);_0x1484ef[_0x4674('0x39')]=_[_0x4674('0x3a')](_0x54d2c2['query']);_0x1484ef[_0x4674('0x43')]=_['intersection'](_0x1484ef[_0x4674('0x38')],_0x1484ef['query']);_0x1ebb37[_0x4674('0x3c')]=_[_0x4674('0x3b')](_0x1484ef[_0x4674('0x38')],qs[_0x4674('0x3d')](_0x54d2c2[_0x4674('0x39')][_0x4674('0x3d')]));_0x1ebb37['attributes']=_0x1ebb37['attributes'][_0x4674('0x3e')]?_0x1ebb37[_0x4674('0x3c')]:_0x1484ef['model'];_0x1ebb37['order']=qs['sort'](_0x54d2c2[_0x4674('0x39')][_0x4674('0x41')]);_0x1ebb37['where']=qs[_0x4674('0x43')](_[_0x4674('0x44')](_0x54d2c2[_0x4674('0x39')],_0x1484ef['filters']));if(_0x54d2c2[_0x4674('0x39')][_0x4674('0x45')]){_0x1ebb37[_0x4674('0x42')]=_[_0x4674('0x46')](_0x1ebb37['where'],{'$or':_[_0x4674('0x33')](_0x1ebb37['attributes'],function(_0x25390f){var _0x3aa346={};_0x3aa346[_0x25390f]={'$like':'%'+_0x54d2c2[_0x4674('0x39')][_0x4674('0x45')]+'%'};return _0x3aa346;})});}_0x1ebb37=_[_0x4674('0x46')]({},_0x1ebb37,_0x54d2c2[_0x4674('0x48')]);return _0xfa819[_0x4674('0x81')](_0x1ebb37);}})[_0x4674('0x29')](function(_0x433dac){if(_0x433dac){_0x265889=_0x433dac[_0x4674('0x3e')];if(!_0x54d2c2[_0x4674('0x39')][_0x4674('0x3f')](_0x4674('0x83'))){_0x1ebb37['limit']=qs[_0x4674('0x25')](_0x54d2c2['query'][_0x4674('0x25')]);_0x1ebb37['offset']=qs[_0x4674('0x22')](_0x54d2c2['query']['offset']);}return _0xfa819[_0x4674('0x81')](_0x1ebb37);}})[_0x4674('0x29')](function(_0x34930e){if(_0x34930e){return _0x34930e?{'count':_0x265889,'rows':_0x34930e}:null;}})['then'](respondWithResult(_0x3d0994,null))[_0x4674('0x4c')](handleError(_0x3d0994,null));};
\ No newline at end of file
index cc06ed8..aaea578 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x339d=['Dashboard','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0xb1c7f2,_0x4528a2){var _0x3fc9b2=function(_0x58aa8d){while(--_0x58aa8d){_0xb1c7f2['push'](_0xb1c7f2['shift']());}};_0x3fc9b2(++_0x4528a2);}(_0x339d,0x14c));var _0xd339=function(_0x1a0daa,_0x2a4634){_0x1a0daa=_0x1a0daa-0x0;var _0x1dbe15=_0x339d[_0x1a0daa];return _0x1dbe15;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0xd339('0x0'))['db'][_0xd339('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xd339('0x2')](0x0);var events={'afterCreate':_0xd339('0x3'),'afterUpdate':'update','afterDestroy':_0xd339('0x4')};function emitEvent(_0xf4d9bd){return function(_0xd0c398,_0x4202b6,_0x3a4180){DashboardEvents[_0xd339('0x5')](_0xf4d9bd+':'+_0xd0c398['id'],_0xd0c398);DashboardEvents[_0xd339('0x5')](_0xf4d9bd,_0xd0c398);_0x3a4180(null);};}for(var e in events){if(events[_0xd339('0x6')](e)){var event=events[e];Dashboard[_0xd339('0x7')](e,emitEvent(event));}}module[_0xd339('0x8')]=DashboardEvents;
\ No newline at end of file
+var _0xbfa2=['Dashboard','setMaxListeners','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x18672d,_0x7eb9a5){var _0x21f0cb=function(_0x488899){while(--_0x488899){_0x18672d['push'](_0x18672d['shift']());}};_0x21f0cb(++_0x7eb9a5);}(_0xbfa2,0xf1));var _0x2bfa=function(_0x416bca,_0x42668b){_0x416bca=_0x416bca-0x0;var _0x448e0c=_0xbfa2[_0x416bca];return _0x448e0c;};'use strict';var EventEmitter=require(_0x2bfa('0x0'));var Dashboard=require(_0x2bfa('0x1'))['db'][_0x2bfa('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x2bfa('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2bfa('0x4'),'afterDestroy':_0x2bfa('0x5')};function emitEvent(_0x53ab7b){return function(_0x4ac5e4,_0x35ce6e,_0x3dab4b){DashboardEvents[_0x2bfa('0x6')](_0x53ab7b+':'+_0x4ac5e4['id'],_0x4ac5e4);DashboardEvents[_0x2bfa('0x6')](_0x53ab7b,_0x4ac5e4);_0x3dab4b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x2bfa('0x7')](e,emitEvent(event));}}module[_0x2bfa('0x8')]=DashboardEvents;
\ No newline at end of file
index 9d90969..c22a89d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x940d=['request-promise','path','rimraf','../../config/environment','./dashboard.attributes','define','Dashboard','dashboards','lodash','util','api','moment','bluebird'];(function(_0x725a4c,_0x102507){var _0x37b2cc=function(_0x505fc9){while(--_0x505fc9){_0x725a4c['push'](_0x725a4c['shift']());}};_0x37b2cc(++_0x102507);}(_0x940d,0x181));var _0xd940=function(_0x2e93bd,_0x472c56){_0x2e93bd=_0x2e93bd-0x0;var _0x5414ce=_0x940d[_0x2e93bd];return _0x5414ce;};'use strict';var _=require(_0xd940('0x0'));var util=require(_0xd940('0x1'));var logger=require('../../config/logger')(_0xd940('0x2'));var moment=require(_0xd940('0x3'));var BPromise=require(_0xd940('0x4'));var rp=require(_0xd940('0x5'));var fs=require('fs');var path=require(_0xd940('0x6'));var rimraf=require(_0xd940('0x7'));var config=require(_0xd940('0x8'));var attributes=require(_0xd940('0x9'));module['exports']=function(_0x66d36b,_0x435036){return _0x66d36b[_0xd940('0xa')](_0xd940('0xb'),attributes,{'tableName':_0xd940('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x73a4=['dashboards','lodash','util','../../config/logger','moment','bluebird','./dashboard.attributes','exports','define','Dashboard'];(function(_0x38ced4,_0x24263f){var _0x547c07=function(_0x279fc4){while(--_0x279fc4){_0x38ced4['push'](_0x38ced4['shift']());}};_0x547c07(++_0x24263f);}(_0x73a4,0xd3));var _0x473a=function(_0x3bc994,_0x21628e){_0x3bc994=_0x3bc994-0x0;var _0xf14048=_0x73a4[_0x3bc994];return _0xf14048;};'use strict';var _=require(_0x473a('0x0'));var util=require(_0x473a('0x1'));var logger=require(_0x473a('0x2'))('api');var moment=require(_0x473a('0x3'));var BPromise=require(_0x473a('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(_0x473a('0x5'));module[_0x473a('0x6')]=function(_0x44c3d7,_0x1a81d8){return _0x44c3d7[_0x473a('0x7')](_0x473a('0x8'),attributes,{'tableName':_0x473a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9563525..4859e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15c4=['result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./dashboard.socket','register','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x3eaacf,_0x5f2511){var _0x74ce8=function(_0x40a490){while(--_0x40a490){_0x3eaacf['push'](_0x3eaacf['shift']());}};_0x74ce8(++_0x5f2511);}(_0x15c4,0x16e));var _0x415c=function(_0x8b3a2c,_0x58ed0b){_0x8b3a2c=_0x8b3a2c-0x0;var _0x40b721=_0x15c4[_0x8b3a2c];return _0x40b721;};'use strict';var _=require('lodash');var util=require(_0x415c('0x0'));var moment=require(_0x415c('0x1'));var BPromise=require('bluebird');var rs=require(_0x415c('0x2'));var fs=require('fs');var Redis=require(_0x415c('0x3'));var db=require(_0x415c('0x4'))['db'];var utils=require(_0x415c('0x5'));var logger=require(_0x415c('0x6'))('rpc');var config=require(_0x415c('0x7'));var jayson=require(_0x415c('0x8'));var client=jayson['client'][_0x415c('0x9')]({'port':0x232a});config['redis']=_[_0x415c('0xa')](config[_0x415c('0xb')],{'host':_0x415c('0xc'),'port':0x18eb});var socket=require(_0x415c('0xd'))(new Redis(config[_0x415c('0xb')]));require(_0x415c('0xe'))[_0x415c('0xf')](socket);function respondWithRpcPromise(_0x40e223,_0x6d2fb4,_0x19093a){return new BPromise(function(_0x9a72c0,_0x149ad8){return client['request'](_0x40e223,_0x19093a)[_0x415c('0x10')](function(_0x19883a){logger[_0x415c('0x11')](_0x415c('0x12'),_0x6d2fb4,_0x415c('0x13'));logger['debug'](_0x415c('0x14'),_0x6d2fb4,_0x415c('0x13'),JSON[_0x415c('0x15')](_0x19883a));if(_0x19883a[_0x415c('0x16')]){if(_0x19883a[_0x415c('0x16')]['code']===0x1f4){logger[_0x415c('0x16')](_0x415c('0x12'),_0x6d2fb4,_0x19883a[_0x415c('0x16')][_0x415c('0x17')]);return _0x149ad8(_0x19883a['error'][_0x415c('0x17')]);}logger[_0x415c('0x16')](_0x415c('0x12'),_0x6d2fb4,_0x19883a['error'][_0x415c('0x17')]);return _0x9a72c0(_0x19883a[_0x415c('0x16')][_0x415c('0x17')]);}else{logger['info']('Dashboard,\x20%s,\x20%s',_0x6d2fb4,_0x415c('0x13'));_0x9a72c0(_0x19883a[_0x415c('0x18')][_0x415c('0x17')]);}})[_0x415c('0x19')](function(_0x34b710){logger[_0x415c('0x16')]('Dashboard,\x20%s,\x20%s',_0x6d2fb4,_0x34b710);_0x149ad8(_0x34b710);});});}
\ No newline at end of file
+var _0x4db0=['request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./dashboard.socket','register','request','then','Dashboard,\x20%s,\x20%s'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4db0,0x96));var _0x04db=function(_0x75ce5b,_0x3b582f){_0x75ce5b=_0x75ce5b-0x0;var _0x22195e=_0x4db0[_0x75ce5b];return _0x22195e;};'use strict';var _=require(_0x04db('0x0'));var util=require(_0x04db('0x1'));var moment=require(_0x04db('0x2'));var BPromise=require('bluebird');var rs=require(_0x04db('0x3'));var fs=require('fs');var Redis=require(_0x04db('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x04db('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x04db('0x6'));var jayson=require(_0x04db('0x7'));var client=jayson[_0x04db('0x8')][_0x04db('0x9')]({'port':0x232a});config['redis']=_[_0x04db('0xa')](config[_0x04db('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x04db('0xc'))(new Redis(config[_0x04db('0xb')]));require(_0x04db('0xd'))[_0x04db('0xe')](socket);function respondWithRpcPromise(_0x1e2e50,_0x3fc789,_0xe1b071){return new BPromise(function(_0x2f051f,_0x27f6e3){return client[_0x04db('0xf')](_0x1e2e50,_0xe1b071)[_0x04db('0x10')](function(_0x533dae){logger['info'](_0x04db('0x11'),_0x3fc789,_0x04db('0x12'));logger[_0x04db('0x13')](_0x04db('0x14'),_0x3fc789,_0x04db('0x12'),JSON[_0x04db('0x15')](_0x533dae));if(_0x533dae[_0x04db('0x16')]){if(_0x533dae[_0x04db('0x16')][_0x04db('0x17')]===0x1f4){logger['error'](_0x04db('0x11'),_0x3fc789,_0x533dae[_0x04db('0x16')][_0x04db('0x18')]);return _0x27f6e3(_0x533dae[_0x04db('0x16')][_0x04db('0x18')]);}logger['error']('Dashboard,\x20%s,\x20%s',_0x3fc789,_0x533dae[_0x04db('0x16')][_0x04db('0x18')]);return _0x2f051f(_0x533dae[_0x04db('0x16')][_0x04db('0x18')]);}else{logger[_0x04db('0x19')](_0x04db('0x11'),_0x3fc789,_0x04db('0x12'));_0x2f051f(_0x533dae[_0x04db('0x1a')][_0x04db('0x18')]);}})[_0x04db('0x1b')](function(_0x3be66e){logger['error'](_0x04db('0x11'),_0x3fc789,_0x3be66e);_0x27f6e3(_0x3be66e);});});}
\ No newline at end of file
index 423dc81..669906c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3b7=['register','length','save','remove','update','emit','removeListener'];(function(_0x1bb691,_0x8b7003){var _0x571e3b=function(_0x35bc89){while(--_0x35bc89){_0x1bb691['push'](_0x1bb691['shift']());}};_0x571e3b(++_0x8b7003);}(_0xe3b7,0x19f));var _0x7e3b=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0xe3b7[_0x5608a3];return _0x1ed50a;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x7e3b('0x0'),_0x7e3b('0x1'),_0x7e3b('0x2')];function createListener(_0x246e8f,_0x585a9b){return function(_0x5d0ba5){_0x585a9b[_0x7e3b('0x3')](_0x246e8f,_0x5d0ba5);};}function removeListener(_0x51e69d,_0x3549a2){return function(){DashboardEvents[_0x7e3b('0x4')](_0x51e69d,_0x3549a2);};}exports[_0x7e3b('0x5')]=function(_0x567586){for(var _0x3ad216=0x0,_0x3fea9f=events[_0x7e3b('0x6')];_0x3ad216<_0x3fea9f;_0x3ad216++){var _0x4df5ee=events[_0x3ad216];var _0x159bae=createListener('dashboard:'+_0x4df5ee,_0x567586);DashboardEvents['on'](_0x4df5ee,_0x159bae);}};
\ No newline at end of file
+var _0x9fb0=['./dashboard.events','save','update','removeListener','register','length','dashboard:'];(function(_0x20589d,_0x55d5bf){var _0x422de9=function(_0x44cbbb){while(--_0x44cbbb){_0x20589d['push'](_0x20589d['shift']());}};_0x422de9(++_0x55d5bf);}(_0x9fb0,0x1b9));var _0x09fb=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x9fb0[_0xe66cf2];return _0x2d84e7;};'use strict';var DashboardEvents=require(_0x09fb('0x0'));var events=[_0x09fb('0x1'),'remove',_0x09fb('0x2')];function createListener(_0x55f83b,_0x1a69d5){return function(_0x588494){_0x1a69d5['emit'](_0x55f83b,_0x588494);};}function removeListener(_0x329207,_0xa5d016){return function(){DashboardEvents[_0x09fb('0x3')](_0x329207,_0xa5d016);};}exports[_0x09fb('0x4')]=function(_0x3eecc9){for(var _0x157c66=0x0,_0x15fac9=events[_0x09fb('0x5')];_0x157c66<_0x15fac9;_0x157c66++){var _0x4c26b3=events[_0x157c66];var _0x3c0b27=createListener(_0x09fb('0x6')+_0x4c26b3,_0x3eecc9);DashboardEvents['on'](_0x4c26b3,_0x3c0b27);}};
\ No newline at end of file
index ef5f0be..cd18fa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x711a=['addItem','put','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','index','/:id','show','/:id/items','getItems','create','post','/:id/clone','clone'];(function(_0x2992fc,_0x149db9){var _0x2f3183=function(_0x58f3e6){while(--_0x58f3e6){_0x2992fc['push'](_0x2992fc['shift']());}};_0x2f3183(++_0x149db9);}(_0x711a,0xf3));var _0xa711=function(_0x4f2d0b,_0x4f1701){_0x4f2d0b=_0x4f2d0b-0x0;var _0x4bb805=_0x711a[_0x4f2d0b];return _0x4bb805;};'use strict';var multer=require(_0xa711('0x0'));var util=require(_0xa711('0x1'));var path=require(_0xa711('0x2'));var timeout=require(_0xa711('0x3'));var express=require('express');var router=express[_0xa711('0x4')]();var fs_extra=require(_0xa711('0x5'));var auth=require(_0xa711('0x6'));var interaction=require(_0xa711('0x7'));var config=require(_0xa711('0x8'));var controller=require(_0xa711('0x9'));router[_0xa711('0xa')]('/',auth[_0xa711('0xb')](),controller[_0xa711('0xc')]);router[_0xa711('0xa')](_0xa711('0xd'),auth[_0xa711('0xb')](),controller[_0xa711('0xe')]);router[_0xa711('0xa')](_0xa711('0xf'),auth[_0xa711('0xb')](),controller[_0xa711('0x10')]);router['post']('/',auth[_0xa711('0xb')](),controller[_0xa711('0x11')]);router[_0xa711('0x12')](_0xa711('0x13'),auth['isAuthenticated'](),controller[_0xa711('0x14')]);router[_0xa711('0x12')](_0xa711('0xf'),auth[_0xa711('0xb')](),controller[_0xa711('0x15')]);router[_0xa711('0x16')](_0xa711('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xa711('0xd'),auth[_0xa711('0xb')](),controller['destroy']);module[_0xa711('0x17')]=router;
\ No newline at end of file
+var _0x0490=['isAuthenticated','get','/:id','show','/:id/items','post','create','/:id/clone','clone','addItem','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller'];(function(_0x3abb36,_0x20012d){var _0x53be8b=function(_0x3e6f2e){while(--_0x3e6f2e){_0x3abb36['push'](_0x3abb36['shift']());}};_0x53be8b(++_0x20012d);}(_0x0490,0x8a));var _0x0049=function(_0x53b8d6,_0x29cfd9){_0x53b8d6=_0x53b8d6-0x0;var _0x3f1df6=_0x0490[_0x53b8d6];return _0x3f1df6;};'use strict';var multer=require(_0x0049('0x0'));var util=require(_0x0049('0x1'));var path=require('path');var timeout=require(_0x0049('0x2'));var express=require('express');var router=express[_0x0049('0x3')]();var fs_extra=require(_0x0049('0x4'));var auth=require(_0x0049('0x5'));var interaction=require(_0x0049('0x6'));var config=require(_0x0049('0x7'));var controller=require(_0x0049('0x8'));router['get']('/',auth[_0x0049('0x9')](),controller['index']);router[_0x0049('0xa')](_0x0049('0xb'),auth[_0x0049('0x9')](),controller[_0x0049('0xc')]);router[_0x0049('0xa')](_0x0049('0xd'),auth['isAuthenticated'](),controller['getItems']);router[_0x0049('0xe')]('/',auth[_0x0049('0x9')](),controller[_0x0049('0xf')]);router[_0x0049('0xe')](_0x0049('0x10'),auth[_0x0049('0x9')](),controller[_0x0049('0x11')]);router[_0x0049('0xe')](_0x0049('0xd'),auth[_0x0049('0x9')](),controller[_0x0049('0x12')]);router['put'](_0x0049('0xb'),auth[_0x0049('0x9')](),controller['update']);router[_0x0049('0x13')]('/:id',auth[_0x0049('0x9')](),controller[_0x0049('0x14')]);module['exports']=router;
\ No newline at end of file
index 86c09b5..c739640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['parse','attrs','stringify','setDataValue','INTEGER','#2196f3','sequelize','squel','lodash','exports','STRING','long'];(function(_0x2a6f09,_0x3a2e71){var _0x19be70=function(_0x1de29a){while(--_0x1de29a){_0x2a6f09['push'](_0x2a6f09['shift']());}};_0x19be70(++_0x3a2e71);}(_0x2ef3,0xba));var _0x32ef=function(_0x463bf3,_0x8854d3){_0x463bf3=_0x463bf3-0x0;var _0x23a434=_0x2ef3[_0x463bf3];return _0x23a434;};'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
+var _0x90b1=['#2196f3','sequelize','squel','lodash','STRING','TEXT','long','parse','setDataValue','attrs','stringify','INTEGER','#ffffff'];(function(_0x22be6d,_0x90876b){var _0x1985e1=function(_0x4a8921){while(--_0x4a8921){_0x22be6d['push'](_0x22be6d['shift']());}};_0x1985e1(++_0x90876b);}(_0x90b1,0x1bb));var _0x190b=function(_0x5d2f39,_0x11e2f4){_0x5d2f39=_0x5d2f39-0x0;var _0x3df8f6=_0x90b1[_0x5d2f39];return _0x3df8f6;};'use strict';var Sequelize=require(_0x190b('0x0'));var squel=require(_0x190b('0x1'));var _=require(_0x190b('0x2'));module['exports']={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x190b('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x190b('0x4')](_0x190b('0x5')),'get':function(){try{return JSON[_0x190b('0x6')](this['getDataValue']('attrs'));}catch(_0x5cbebb){return[];}},'set':function(_0x5da9c1){try{this[_0x190b('0x7')](_0x190b('0x8'),JSON[_0x190b('0x9')](_0x5da9c1));}catch(_0x626aa1){this[_0x190b('0x7')](_0x190b('0x8'),JSON[_0x190b('0x9')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x190b('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x190b('0xa')]},'col':{'type':Sequelize[_0x190b('0xa')]},'background':{'type':Sequelize[_0x190b('0x3')],'allowNull':![],'defaultValue':_0x190b('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x190b('0x3')],'allowNull':![],'defaultValue':_0x190b('0xc'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x190b('0x3')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index 1fb045d..bb7a2ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaafc=['crypto','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','params','model','DashboardItem','rawAttributes','query','filters','intersection','attributes','fields','includeAll','include','merge','find','destroy','catch','attrUrl','attrs','https://','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','voice','attrEmailAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrChannel','attrFaxAccounts','web-report','attrReport','type','attrRefresh','stringify','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','ejs','lodash','squel'];(function(_0x5bccbf,_0x547e42){var _0x2158c6=function(_0x40f28a){while(--_0x40f28a){_0x5bccbf['push'](_0x5bccbf['shift']());}};_0x2158c6(++_0x547e42);}(_0xaafc,0x176));var _0xcaaf=function(_0x4188af,_0x35a3a4){_0x4188af=_0x4188af-0x0;var _0xe25423=_0xaafc[_0x4188af];return _0xe25423;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcaaf('0x0'));var zipdir=require(_0xcaaf('0x1'));var jsonpatch=require(_0xcaaf('0x2'));var rp=require(_0xcaaf('0x3'));var moment=require('moment');var BPromise=require(_0xcaaf('0x4'));var Mustache=require(_0xcaaf('0x5'));var util=require('util');var path=require('path');var sox=require(_0xcaaf('0x6'));var csv=require('to-csv');var ejs=require(_0xcaaf('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcaaf('0x8'));var squel=require(_0xcaaf('0x9'));var crypto=require(_0xcaaf('0xa'));var jsforce=require(_0xcaaf('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xcaaf('0xc'));var querystring=require('querystring');var Papa=require(_0xcaaf('0xd'));var Redis=require('ioredis');var authService=require(_0xcaaf('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xcaaf('0xf'));var hardwareService=require(_0xcaaf('0x10'));var logger=require(_0xcaaf('0x11'))(_0xcaaf('0x12'));var utils=require(_0xcaaf('0x13'));var config=require(_0xcaaf('0x14'));var licenseUtil=require(_0xcaaf('0x15'));var db=require(_0xcaaf('0x16'))['db'];config[_0xcaaf('0x17')]=_['defaults'](config[_0xcaaf('0x17')],{'host':_0xcaaf('0x18'),'port':0x18eb});var socket=require(_0xcaaf('0x19'))(new Redis(config[_0xcaaf('0x17')]));require(_0xcaaf('0x1a'))[_0xcaaf('0x1b')](socket);function respondWithStatusCode(_0x6afc3,_0x439c40){_0x439c40=_0x439c40||0xcc;return function(_0x42861d){if(_0x42861d){return _0x6afc3[_0xcaaf('0x1c')](_0x439c40);}return _0x6afc3[_0xcaaf('0x1d')](_0x439c40)['end']();};}function respondWithResult(_0x301344,_0xb8532b){_0xb8532b=_0xb8532b||0xc8;return function(_0x7f23fb){if(_0x7f23fb){return _0x301344[_0xcaaf('0x1d')](_0xb8532b)[_0xcaaf('0x1e')](_0x7f23fb);}};}function respondWithFilteredResult(_0x360078,_0x4b55e3){return function(_0xf8e303){if(_0xf8e303){var _0x10ad54=typeof _0x4b55e3['offset']===_0xcaaf('0x1f')&&typeof _0x4b55e3[_0xcaaf('0x20')]===_0xcaaf('0x1f');var _0x43631b=_0xf8e303[_0xcaaf('0x21')];var _0x535eb8=_0x10ad54?0x0:_0x4b55e3[_0xcaaf('0x22')];var _0x731e33=_0x10ad54?_0xf8e303[_0xcaaf('0x21')]:_0x4b55e3[_0xcaaf('0x22')]+_0x4b55e3[_0xcaaf('0x20')];var _0x5bdc7a;if(_0x731e33>=_0x43631b){_0x731e33=_0x43631b;_0x5bdc7a=0xc8;}else{_0x5bdc7a=0xce;}_0x360078[_0xcaaf('0x1d')](_0x5bdc7a);return _0x360078[_0xcaaf('0x23')](_0xcaaf('0x24'),_0x535eb8+'-'+_0x731e33+'/'+_0x43631b)[_0xcaaf('0x1e')](_0xf8e303);}return null;};}function patchUpdates(_0x359339){return function(_0x16f83d){try{jsonpatch[_0xcaaf('0x25')](_0x16f83d,_0x359339,!![]);}catch(_0x5e0463){return BPromise[_0xcaaf('0x26')](_0x5e0463);}return _0x16f83d[_0xcaaf('0x27')]();};}function saveUpdates(_0x3f62c8,_0x4c1dcd){return function(_0x34f878){if(_0x34f878){return _0x34f878[_0xcaaf('0x28')](_0x3f62c8)[_0xcaaf('0x29')](function(_0x3dac7d){return _0x3dac7d;});}return null;};}function removeEntity(_0x2a6d15,_0x4346e2){return function(_0x1cc1fb){if(_0x1cc1fb){return _0x1cc1fb['destroy']()[_0xcaaf('0x29')](function(){_0x2a6d15['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x548b1d,_0x30d68a){return function(_0x85b4a){if(!_0x85b4a){_0x548b1d[_0xcaaf('0x1c')](0x194);}return _0x85b4a;};}function handleError(_0x84f284,_0xc98ce4){_0xc98ce4=_0xc98ce4||0x1f4;return function(_0x35e500){logger[_0xcaaf('0x2a')](_0x35e500[_0xcaaf('0x2b')]);if(_0x35e500[_0xcaaf('0x2c')]){delete _0x35e500['name'];}_0x84f284['status'](_0xc98ce4)[_0xcaaf('0x2d')](_0x35e500);};}exports['show']=function(_0x4429e3,_0x58c170){var _0x343cd5={'raw':![],'where':{'id':_0x4429e3[_0xcaaf('0x2e')]['id']}},_0x10fec3={};_0x10fec3[_0xcaaf('0x2f')]=_['keys'](db[_0xcaaf('0x30')][_0xcaaf('0x31')]);_0x10fec3[_0xcaaf('0x32')]=_['keys'](_0x4429e3['query']);_0x10fec3[_0xcaaf('0x33')]=_[_0xcaaf('0x34')](_0x10fec3['model'],_0x10fec3[_0xcaaf('0x32')]);_0x343cd5[_0xcaaf('0x35')]=_[_0xcaaf('0x34')](_0x10fec3[_0xcaaf('0x2f')],qs[_0xcaaf('0x36')](_0x4429e3[_0xcaaf('0x32')][_0xcaaf('0x36')]));_0x343cd5[_0xcaaf('0x35')]=_0x343cd5[_0xcaaf('0x35')]['length']?_0x343cd5['attributes']:_0x10fec3[_0xcaaf('0x2f')];if(_0x4429e3['query'][_0xcaaf('0x37')]){_0x343cd5[_0xcaaf('0x38')]=[{'all':!![]}];}_0x343cd5=_[_0xcaaf('0x39')]({},_0x343cd5,_0x4429e3['options']);return db['DashboardItem'][_0xcaaf('0x3a')](_0x343cd5)[_0xcaaf('0x29')](handleEntityNotFound(_0x58c170,null))['then'](respondWithResult(_0x58c170,null))['catch'](handleError(_0x58c170,null));};exports[_0xcaaf('0x3b')]=function(_0x12a4fc,_0x3573b3){return db['DashboardItem'][_0xcaaf('0x3a')]({'where':{'id':_0x12a4fc['params']['id']}})[_0xcaaf('0x29')](handleEntityNotFound(_0x3573b3,null))['then'](removeEntity(_0x3573b3,null))[_0xcaaf('0x3c')](handleError(_0x3573b3,null));};function widgetAttributes(_0x44abfd){try{switch(_0x44abfd['type']){case'iframe':return[{'name':_0xcaaf('0x3d'),'value':_0x44abfd[_0xcaaf('0x3d')]||(_0x44abfd['attrs']&&_0x44abfd[_0xcaaf('0x3e')][0x0]?_0x44abfd[_0xcaaf('0x3e')][0x0]['value']:undefined)||_0xcaaf('0x3f')}];case'custom':return[{'name':_0xcaaf('0x40'),'value':_0x44abfd[_0xcaaf('0x40')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x0]?_0x44abfd[_0xcaaf('0x3e')][0x0][_0xcaaf('0x41')]:undefined)||''}];case _0xcaaf('0x42'):return[{'name':_0xcaaf('0x43'),'value':_0x44abfd[_0xcaaf('0x43')]||(_0x44abfd['attrs']&&_0x44abfd['attrs'][0x0]?_0x44abfd[_0xcaaf('0x3e')][0x0]['value']:undefined)||_0xcaaf('0x44')},{'name':'attrTimezone','value':_0x44abfd[_0xcaaf('0x45')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x1]?_0x44abfd[_0xcaaf('0x3e')][0x1]['value']:undefined)||_0xcaaf('0x46')},{'name':_0xcaaf('0x47'),'value':_0x44abfd['attrFontSize']||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x2]?_0x44abfd[_0xcaaf('0x3e')][0x2][_0xcaaf('0x41')]:undefined)||0xc}];case _0xcaaf('0x48'):return[{'name':_0xcaaf('0x49'),'value':_0x44abfd[_0xcaaf('0x49')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x0]?_0x44abfd[_0xcaaf('0x3e')][0x0][_0xcaaf('0x41')]:undefined)||_0xcaaf('0x4a')},{'name':_0xcaaf('0x4b'),'value':_0x44abfd[_0xcaaf('0x4b')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x1]?_0x44abfd['attrs'][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x44abfd['attrFontSize']||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x2]?_0x44abfd[_0xcaaf('0x3e')][0x2][_0xcaaf('0x41')]:undefined)||0x14},{'name':'attrChannel','value':_0x44abfd['attrChannel']||(_0x44abfd['attrs']&&_0x44abfd[_0xcaaf('0x3e')][0x3]?_0x44abfd[_0xcaaf('0x3e')][0x3][_0xcaaf('0x41')]:undefined)||_0xcaaf('0x4c')},{'name':_0xcaaf('0x4d'),'value':_0x44abfd[_0xcaaf('0x4d')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd['attrs'][0x4]?_0x44abfd[_0xcaaf('0x3e')][0x4][_0xcaaf('0x41')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x44abfd['attrFaxAccounts']||(_0x44abfd['attrs']&&_0x44abfd[_0xcaaf('0x3e')][0x5]?_0x44abfd[_0xcaaf('0x3e')][0x5]['value']:undefined)||''},{'name':_0xcaaf('0x4e'),'value':_0x44abfd['attrSmsAccounts']||(_0x44abfd['attrs']&&_0x44abfd[_0xcaaf('0x3e')][0x6]?_0x44abfd[_0xcaaf('0x3e')][0x6][_0xcaaf('0x41')]:undefined)||''},{'name':_0xcaaf('0x4f'),'value':_0x44abfd[_0xcaaf('0x4f')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x7]?_0x44abfd['attrs'][0x7][_0xcaaf('0x41')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x44abfd[_0xcaaf('0x50')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x8]?_0x44abfd[_0xcaaf('0x3e')][0x8]['value']:undefined)||''},{'name':_0xcaaf('0x51'),'value':_0x44abfd['attrChatWebsites']||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x9]?_0x44abfd[_0xcaaf('0x3e')][0x9][_0xcaaf('0x41')]:undefined)||''}];case _0xcaaf('0x52'):case _0xcaaf('0x53'):return[{'name':_0xcaaf('0x54'),'value':_0x44abfd[_0xcaaf('0x54')]||(_0x44abfd['attrs']&&_0x44abfd[_0xcaaf('0x3e')][0x0]?_0x44abfd[_0xcaaf('0x3e')][0x0]['value']:undefined)||_0xcaaf('0x4a')},{'name':'attrSerie2','value':_0x44abfd[_0xcaaf('0x55')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd['attrs'][0x1]?_0x44abfd[_0xcaaf('0x3e')][0x1][_0xcaaf('0x41')]:undefined)||null},{'name':'attrSerie3','value':_0x44abfd[_0xcaaf('0x56')]||(_0x44abfd['attrs']&&_0x44abfd[_0xcaaf('0x3e')][0x2]?_0x44abfd['attrs'][0x2][_0xcaaf('0x41')]:undefined)||null},{'name':_0xcaaf('0x4b'),'value':_0x44abfd[_0xcaaf('0x4b')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x3]?_0x44abfd[_0xcaaf('0x3e')][0x3][_0xcaaf('0x41')]:undefined)||[]},{'name':_0xcaaf('0x57'),'value':_0x44abfd[_0xcaaf('0x57')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x4]?_0x44abfd['attrs'][0x4][_0xcaaf('0x41')]:undefined)||_0xcaaf('0x4c')},{'name':_0xcaaf('0x4d'),'value':_0x44abfd[_0xcaaf('0x4d')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x5]?_0x44abfd[_0xcaaf('0x3e')][0x5][_0xcaaf('0x41')]:undefined)||''},{'name':_0xcaaf('0x58'),'value':_0x44abfd[_0xcaaf('0x58')]||(_0x44abfd['attrs']&&_0x44abfd['attrs'][0x6]?_0x44abfd[_0xcaaf('0x3e')][0x6][_0xcaaf('0x41')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x44abfd[_0xcaaf('0x4e')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd['attrs'][0x7]?_0x44abfd[_0xcaaf('0x3e')][0x7][_0xcaaf('0x41')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x44abfd[_0xcaaf('0x4f')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x8]?_0x44abfd['attrs'][0x8][_0xcaaf('0x41')]:undefined)||''},{'name':_0xcaaf('0x50'),'value':_0x44abfd[_0xcaaf('0x50')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x9]?_0x44abfd[_0xcaaf('0x3e')][0x9][_0xcaaf('0x41')]:undefined)||''},{'name':'attrChatWebsites','value':_0x44abfd['attrChatWebsites']||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0xa]?_0x44abfd[_0xcaaf('0x3e')][0xa]['value']:undefined)||''}];case _0xcaaf('0x59'):return[{'name':_0xcaaf('0x5a'),'type':_0x44abfd['reportType']||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x0]?_0x44abfd[_0xcaaf('0x3e')][0x0][_0xcaaf('0x5b')]:undefined)||null,'value':_0x44abfd[_0xcaaf('0x5a')]||(_0x44abfd['attrs']&&_0x44abfd[_0xcaaf('0x3e')][0x0]?_0x44abfd[_0xcaaf('0x3e')][0x0][_0xcaaf('0x41')]:undefined)||null},{'name':_0xcaaf('0x5c'),'value':_0x44abfd[_0xcaaf('0x5c')]||(_0x44abfd[_0xcaaf('0x3e')]&&_0x44abfd[_0xcaaf('0x3e')][0x1]?_0x44abfd['attrs'][0x1][_0xcaaf('0x41')]:undefined)||0x0}];default:return[];}}catch(_0x50ddfc){logger[_0xcaaf('0x2a')]('widgetAttributes:\x20%s',JSON[_0xcaaf('0x5d')](_0x50ddfc));return[];}}exports[_0xcaaf('0x5e')]=function(_0x21b3bc,_0x28c1b8){if(_0x21b3bc[_0xcaaf('0x5f')]){_0x21b3bc[_0xcaaf('0x5f')]['attrs']=widgetAttributes(_0x21b3bc[_0xcaaf('0x5f')]);}return db[_0xcaaf('0x30')][_0xcaaf('0x5e')](_0x21b3bc[_0xcaaf('0x5f')],{})[_0xcaaf('0x29')](respondWithResult(_0x28c1b8,0xc9))[_0xcaaf('0x3c')](handleError(_0x28c1b8,null));};exports[_0xcaaf('0x28')]=function(_0xc56e47,_0x3ff275){if(_0xc56e47[_0xcaaf('0x5f')]['id']){delete _0xc56e47['body']['id'];}_0xc56e47[_0xcaaf('0x5f')]['attrs']=widgetAttributes(_0xc56e47[_0xcaaf('0x5f')]);return db[_0xcaaf('0x30')][_0xcaaf('0x3a')]({'where':{'id':_0xc56e47[_0xcaaf('0x2e')]['id']}})['then'](handleEntityNotFound(_0x3ff275,null))[_0xcaaf('0x29')](saveUpdates(_0xc56e47[_0xcaaf('0x5f')],null))[_0xcaaf('0x29')](respondWithResult(_0x3ff275,null))[_0xcaaf('0x3c')](handleError(_0x3ff275,null));};
\ No newline at end of file
+var _0x9829=['request-promise','bluebird','mustache','util','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','show','params','model','DashboardItem','rawAttributes','query','keys','filters','attributes','intersection','fields','length','includeAll','merge','find','catch','type','attrUrl','attrs','attrPath','value','clock','attrHourFormat','HH:mm:ss','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','error','widgetAttributes:\x20%s','stringify','body','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x3f86bd,_0x571513){var _0xa1bcc3=function(_0x214a4e){while(--_0x214a4e){_0x3f86bd['push'](_0x3f86bd['shift']());}};_0xa1bcc3(++_0x571513);}(_0x9829,0xc4));var _0x9982=function(_0xc8db6b,_0x320abd){_0xc8db6b=_0xc8db6b-0x0;var _0x12cb81=_0x9829[_0xc8db6b];return _0x12cb81;};'use strict';var emlformat=require(_0x9982('0x0'));var rimraf=require(_0x9982('0x1'));var zipdir=require(_0x9982('0x2'));var jsonpatch=require(_0x9982('0x3'));var rp=require(_0x9982('0x4'));var moment=require('moment');var BPromise=require(_0x9982('0x5'));var Mustache=require(_0x9982('0x6'));var util=require(_0x9982('0x7'));var path=require('path');var sox=require(_0x9982('0x8'));var csv=require(_0x9982('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9982('0xa'));var squel=require(_0x9982('0xb'));var crypto=require('crypto');var jsforce=require(_0x9982('0xc'));var deskjs=require(_0x9982('0xd'));var toCsv=require(_0x9982('0x9'));var querystring=require(_0x9982('0xe'));var Papa=require(_0x9982('0xf'));var Redis=require(_0x9982('0x10'));var authService=require(_0x9982('0x11'));var qs=require(_0x9982('0x12'));var as=require(_0x9982('0x13'));var hardwareService=require(_0x9982('0x14'));var logger=require(_0x9982('0x15'))(_0x9982('0x16'));var utils=require(_0x9982('0x17'));var config=require(_0x9982('0x18'));var licenseUtil=require(_0x9982('0x19'));var db=require(_0x9982('0x1a'))['db'];config[_0x9982('0x1b')]=_[_0x9982('0x1c')](config['redis'],{'host':_0x9982('0x1d'),'port':0x18eb});var socket=require(_0x9982('0x1e'))(new Redis(config['redis']));require(_0x9982('0x1f'))['register'](socket);function respondWithStatusCode(_0x39d32c,_0xbf0d32){_0xbf0d32=_0xbf0d32||0xcc;return function(_0xca7c34){if(_0xca7c34){return _0x39d32c[_0x9982('0x20')](_0xbf0d32);}return _0x39d32c[_0x9982('0x21')](_0xbf0d32)[_0x9982('0x22')]();};}function respondWithResult(_0x2883f6,_0xca588d){_0xca588d=_0xca588d||0xc8;return function(_0x1b8ecd){if(_0x1b8ecd){return _0x2883f6['status'](_0xca588d)[_0x9982('0x23')](_0x1b8ecd);}};}function respondWithFilteredResult(_0x5385cc,_0x3fd557){return function(_0x44b5ed){if(_0x44b5ed){var _0x51fc02=typeof _0x3fd557[_0x9982('0x24')]===_0x9982('0x25')&&typeof _0x3fd557[_0x9982('0x26')]===_0x9982('0x25');var _0x1297d7=_0x44b5ed[_0x9982('0x27')];var _0x4e1066=_0x51fc02?0x0:_0x3fd557[_0x9982('0x24')];var _0x3802d4=_0x51fc02?_0x44b5ed['count']:_0x3fd557[_0x9982('0x24')]+_0x3fd557[_0x9982('0x26')];var _0x6523c0;if(_0x3802d4>=_0x1297d7){_0x3802d4=_0x1297d7;_0x6523c0=0xc8;}else{_0x6523c0=0xce;}_0x5385cc[_0x9982('0x21')](_0x6523c0);return _0x5385cc[_0x9982('0x28')](_0x9982('0x29'),_0x4e1066+'-'+_0x3802d4+'/'+_0x1297d7)[_0x9982('0x23')](_0x44b5ed);}return null;};}function patchUpdates(_0x541cc8){return function(_0x3f6125){try{jsonpatch[_0x9982('0x2a')](_0x3f6125,_0x541cc8,!![]);}catch(_0x11a7e8){return BPromise[_0x9982('0x2b')](_0x11a7e8);}return _0x3f6125[_0x9982('0x2c')]();};}function saveUpdates(_0x4a27d6,_0x865a6d){return function(_0x5a5d57){if(_0x5a5d57){return _0x5a5d57[_0x9982('0x2d')](_0x4a27d6)[_0x9982('0x2e')](function(_0x2d4622){return _0x2d4622;});}return null;};}function removeEntity(_0x39747a,_0x3c129a){return function(_0x30b79e){if(_0x30b79e){return _0x30b79e[_0x9982('0x2f')]()[_0x9982('0x2e')](function(){_0x39747a[_0x9982('0x21')](0xcc)[_0x9982('0x22')]();});}};}function handleEntityNotFound(_0x1eab54,_0x2dc1ba){return function(_0x14d49c){if(!_0x14d49c){_0x1eab54[_0x9982('0x20')](0x194);}return _0x14d49c;};}function handleError(_0x13449e,_0x2f56f2){_0x2f56f2=_0x2f56f2||0x1f4;return function(_0x50d976){logger['error'](_0x50d976[_0x9982('0x30')]);if(_0x50d976[_0x9982('0x31')]){delete _0x50d976[_0x9982('0x31')];}_0x13449e[_0x9982('0x21')](_0x2f56f2)[_0x9982('0x32')](_0x50d976);};}exports[_0x9982('0x33')]=function(_0x3b90e9,_0x3337e2){var _0x1a1d91={'raw':![],'where':{'id':_0x3b90e9[_0x9982('0x34')]['id']}},_0x26a999={};_0x26a999[_0x9982('0x35')]=_['keys'](db[_0x9982('0x36')][_0x9982('0x37')]);_0x26a999[_0x9982('0x38')]=_[_0x9982('0x39')](_0x3b90e9[_0x9982('0x38')]);_0x26a999[_0x9982('0x3a')]=_['intersection'](_0x26a999[_0x9982('0x35')],_0x26a999['query']);_0x1a1d91[_0x9982('0x3b')]=_[_0x9982('0x3c')](_0x26a999[_0x9982('0x35')],qs[_0x9982('0x3d')](_0x3b90e9[_0x9982('0x38')][_0x9982('0x3d')]));_0x1a1d91[_0x9982('0x3b')]=_0x1a1d91['attributes'][_0x9982('0x3e')]?_0x1a1d91[_0x9982('0x3b')]:_0x26a999[_0x9982('0x35')];if(_0x3b90e9[_0x9982('0x38')][_0x9982('0x3f')]){_0x1a1d91['include']=[{'all':!![]}];}_0x1a1d91=_[_0x9982('0x40')]({},_0x1a1d91,_0x3b90e9['options']);return db['DashboardItem'][_0x9982('0x41')](_0x1a1d91)[_0x9982('0x2e')](handleEntityNotFound(_0x3337e2,null))['then'](respondWithResult(_0x3337e2,null))[_0x9982('0x42')](handleError(_0x3337e2,null));};exports[_0x9982('0x2f')]=function(_0x1db893,_0x342f9f){return db[_0x9982('0x36')][_0x9982('0x41')]({'where':{'id':_0x1db893[_0x9982('0x34')]['id']}})[_0x9982('0x2e')](handleEntityNotFound(_0x342f9f,null))[_0x9982('0x2e')](removeEntity(_0x342f9f,null))[_0x9982('0x42')](handleError(_0x342f9f,null));};function widgetAttributes(_0x3770f1){try{switch(_0x3770f1[_0x9982('0x43')]){case'iframe':return[{'name':_0x9982('0x44'),'value':_0x3770f1[_0x9982('0x44')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1[_0x9982('0x45')][0x0]['value']:undefined)||'https://'}];case'custom':return[{'name':_0x9982('0x46'),'value':_0x3770f1[_0x9982('0x46')]||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1[_0x9982('0x45')][0x0][_0x9982('0x47')]:undefined)||''}];case _0x9982('0x48'):return[{'name':'attrHourFormat','value':_0x3770f1[_0x9982('0x49')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1[_0x9982('0x45')][0x0][_0x9982('0x47')]:undefined)||_0x9982('0x4a')},{'name':'attrTimezone','value':_0x3770f1['attrTimezone']||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x1]?_0x3770f1[_0x9982('0x45')][0x1]['value']:undefined)||_0x9982('0x4b')},{'name':_0x9982('0x4c'),'value':_0x3770f1[_0x9982('0x4c')]||(_0x3770f1['attrs']&&_0x3770f1['attrs'][0x2]?_0x3770f1['attrs'][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0x9982('0x4d'),'value':_0x3770f1['attrMetric']||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1['attrs'][0x0][_0x9982('0x47')]:undefined)||_0x9982('0x4e')},{'name':_0x9982('0x4f'),'value':_0x3770f1[_0x9982('0x4f')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x1]?_0x3770f1[_0x9982('0x45')][0x1][_0x9982('0x47')]:undefined)||[]},{'name':_0x9982('0x4c'),'value':_0x3770f1[_0x9982('0x4c')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x2]?_0x3770f1[_0x9982('0x45')][0x2][_0x9982('0x47')]:undefined)||0x14},{'name':_0x9982('0x50'),'value':_0x3770f1['attrChannel']||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x3]?_0x3770f1['attrs'][0x3][_0x9982('0x47')]:undefined)||_0x9982('0x51')},{'name':'attrEmailAccounts','value':_0x3770f1[_0x9982('0x52')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x4]?_0x3770f1[_0x9982('0x45')][0x4][_0x9982('0x47')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x3770f1[_0x9982('0x53')]||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x5]?_0x3770f1[_0x9982('0x45')][0x5]['value']:undefined)||''},{'name':_0x9982('0x54'),'value':_0x3770f1[_0x9982('0x54')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x6]?_0x3770f1[_0x9982('0x45')][0x6]['value']:undefined)||''},{'name':_0x9982('0x55'),'value':_0x3770f1[_0x9982('0x55')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x7]?_0x3770f1['attrs'][0x7]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x3770f1[_0x9982('0x56')]||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x8]?_0x3770f1[_0x9982('0x45')][0x8]['value']:undefined)||''},{'name':'attrChatWebsites','value':_0x3770f1[_0x9982('0x57')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x9]?_0x3770f1[_0x9982('0x45')][0x9][_0x9982('0x47')]:undefined)||''}];case _0x9982('0x58'):case'pie-chart':return[{'name':_0x9982('0x59'),'value':_0x3770f1[_0x9982('0x59')]||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1['attrs'][0x0][_0x9982('0x47')]:undefined)||_0x9982('0x4e')},{'name':'attrSerie2','value':_0x3770f1[_0x9982('0x5a')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x1]?_0x3770f1[_0x9982('0x45')][0x1][_0x9982('0x47')]:undefined)||null},{'name':_0x9982('0x5b'),'value':_0x3770f1[_0x9982('0x5b')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x2]?_0x3770f1[_0x9982('0x45')][0x2][_0x9982('0x47')]:undefined)||null},{'name':_0x9982('0x4f'),'value':_0x3770f1[_0x9982('0x4f')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x3]?_0x3770f1[_0x9982('0x45')][0x3][_0x9982('0x47')]:undefined)||[]},{'name':_0x9982('0x50'),'value':_0x3770f1['attrChannel']||(_0x3770f1['attrs']&&_0x3770f1['attrs'][0x4]?_0x3770f1[_0x9982('0x45')][0x4][_0x9982('0x47')]:undefined)||_0x9982('0x51')},{'name':'attrEmailAccounts','value':_0x3770f1[_0x9982('0x52')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x5]?_0x3770f1[_0x9982('0x45')][0x5][_0x9982('0x47')]:undefined)||''},{'name':_0x9982('0x53'),'value':_0x3770f1[_0x9982('0x53')]||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x6]?_0x3770f1[_0x9982('0x45')][0x6][_0x9982('0x47')]:undefined)||''},{'name':_0x9982('0x54'),'value':_0x3770f1['attrSmsAccounts']||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x7]?_0x3770f1[_0x9982('0x45')][0x7][_0x9982('0x47')]:undefined)||''},{'name':_0x9982('0x55'),'value':_0x3770f1[_0x9982('0x55')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x8]?_0x3770f1[_0x9982('0x45')][0x8]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x3770f1[_0x9982('0x56')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x9]?_0x3770f1[_0x9982('0x45')][0x9][_0x9982('0x47')]:undefined)||''},{'name':_0x9982('0x57'),'value':_0x3770f1[_0x9982('0x57')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0xa]?_0x3770f1[_0x9982('0x45')][0xa]['value']:undefined)||''}];case _0x9982('0x5c'):return[{'name':_0x9982('0x5d'),'type':_0x3770f1[_0x9982('0x5e')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1[_0x9982('0x45')][0x0]['type']:undefined)||null,'value':_0x3770f1['attrReport']||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1['attrs'][0x0][_0x9982('0x47')]:undefined)||null},{'name':'attrRefresh','value':_0x3770f1[_0x9982('0x5f')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x1]?_0x3770f1['attrs'][0x1][_0x9982('0x47')]:undefined)||0x0}];default:return[];}}catch(_0x3f06f7){logger[_0x9982('0x60')](_0x9982('0x61'),JSON[_0x9982('0x62')](_0x3f06f7));return[];}}exports['create']=function(_0x294f10,_0x5bdbd4){if(_0x294f10[_0x9982('0x63')]){_0x294f10[_0x9982('0x63')][_0x9982('0x45')]=widgetAttributes(_0x294f10['body']);}return db['DashboardItem']['create'](_0x294f10[_0x9982('0x63')],{})['then'](respondWithResult(_0x5bdbd4,0xc9))[_0x9982('0x42')](handleError(_0x5bdbd4,null));};exports['update']=function(_0x278fe2,_0x4bfbca){if(_0x278fe2[_0x9982('0x63')]['id']){delete _0x278fe2[_0x9982('0x63')]['id'];}_0x278fe2[_0x9982('0x63')]['attrs']=widgetAttributes(_0x278fe2[_0x9982('0x63')]);return db['DashboardItem'][_0x9982('0x41')]({'where':{'id':_0x278fe2[_0x9982('0x34')]['id']}})[_0x9982('0x2e')](handleEntityNotFound(_0x4bfbca,null))[_0x9982('0x2e')](saveUpdates(_0x278fe2[_0x9982('0x63')],null))['then'](respondWithResult(_0x4bfbca,null))['catch'](handleError(_0x4bfbca,null));};
\ No newline at end of file
index 1445328..a6d009b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd30f=['emit','hasOwnProperty','hook','exports','DashboardItem','setMaxListeners','update','remove'];(function(_0xaa3856,_0x24fbc9){var _0x3a0f88=function(_0x8f773e){while(--_0x8f773e){_0xaa3856['push'](_0xaa3856['shift']());}};_0x3a0f88(++_0x24fbc9);}(_0xd30f,0x1bc));var _0xfd30=function(_0x47058d,_0x334adb){_0x47058d=_0x47058d-0x0;var _0x3720e6=_0xd30f[_0x47058d];return _0x3720e6;};'use strict';var EventEmitter=require('events');var DashboardItem=require('../../mysqldb')['db'][_0xfd30('0x0')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xfd30('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xfd30('0x2'),'afterDestroy':_0xfd30('0x3')};function emitEvent(_0x249f2e){return function(_0x29c02b,_0x3f13a2,_0x143a7c){DashboardItemEvents[_0xfd30('0x4')](_0x249f2e+':'+_0x29c02b['id'],_0x29c02b);DashboardItemEvents[_0xfd30('0x4')](_0x249f2e,_0x29c02b);_0x143a7c(null);};}for(var e in events){if(events[_0xfd30('0x5')](e)){var event=events[e];DashboardItem[_0xfd30('0x6')](e,emitEvent(event));}}module[_0xfd30('0x7')]=DashboardItemEvents;
\ No newline at end of file
+var _0x5e6e=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','DashboardItem','setMaxListeners'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x5e6e,0x74));var _0xe5e6=function(_0x457e57,_0x2ab6e0){_0x457e57=_0x457e57-0x0;var _0x5e5a19=_0x5e6e[_0x457e57];return _0x5e5a19;};'use strict';var EventEmitter=require(_0xe5e6('0x0'));var DashboardItem=require(_0xe5e6('0x1'))['db'][_0xe5e6('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xe5e6('0x3')](0x0);var events={'afterCreate':_0xe5e6('0x4'),'afterUpdate':_0xe5e6('0x5'),'afterDestroy':_0xe5e6('0x6')};function emitEvent(_0x2df215){return function(_0x5a09a3,_0x301b71,_0x1a8b1c){DashboardItemEvents[_0xe5e6('0x7')](_0x2df215+':'+_0x5a09a3['id'],_0x5a09a3);DashboardItemEvents[_0xe5e6('0x7')](_0x2df215,_0x5a09a3);_0x1a8b1c(null);};}for(var e in events){if(events[_0xe5e6('0x8')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0xe5e6('0x9')]=DashboardItemEvents;
\ No newline at end of file
index c5fc098..23ea421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fa8=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','lodash','util'];(function(_0x17eaf7,_0x193666){var _0x58372c=function(_0x66cc4e){while(--_0x66cc4e){_0x17eaf7['push'](_0x17eaf7['shift']());}};_0x58372c(++_0x193666);}(_0x1fa8,0x1cc));var _0x81fa=function(_0x1560d9,_0x4736ed){_0x1560d9=_0x1560d9-0x0;var _0x2161ab=_0x1fa8[_0x1560d9];return _0x2161ab;};'use strict';var _=require(_0x81fa('0x0'));var util=require(_0x81fa('0x1'));var logger=require(_0x81fa('0x2'))('api');var moment=require(_0x81fa('0x3'));var BPromise=require(_0x81fa('0x4'));var rp=require(_0x81fa('0x5'));var fs=require('fs');var path=require(_0x81fa('0x6'));var rimraf=require(_0x81fa('0x7'));var config=require(_0x81fa('0x8'));var attributes=require(_0x81fa('0x9'));module[_0x81fa('0xa')]=function(_0x194cc6,_0x3acb95){return _0x194cc6[_0x81fa('0xb')](_0x81fa('0xc'),attributes,{'tableName':_0x81fa('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3045=['bluebird','request-promise','path','DashboardItem','lodash','util','../../config/logger','moment'];(function(_0x58ba3f,_0x32f6d3){var _0xb2c31e=function(_0x9ac79a){while(--_0x9ac79a){_0x58ba3f['push'](_0x58ba3f['shift']());}};_0xb2c31e(++_0x32f6d3);}(_0x3045,0x134));var _0x5304=function(_0x5d2a66,_0x35797f){_0x5d2a66=_0x5d2a66-0x0;var _0x3da62d=_0x3045[_0x5d2a66];return _0x3da62d;};'use strict';var _=require(_0x5304('0x0'));var util=require(_0x5304('0x1'));var logger=require(_0x5304('0x2'))('api');var moment=require(_0x5304('0x3'));var BPromise=require(_0x5304('0x4'));var rp=require(_0x5304('0x5'));var fs=require('fs');var path=require(_0x5304('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./dashboardItem.attributes');module['exports']=function(_0x373e94,_0x38684a){return _0x373e94['define'](_0x5304('0x7'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 31ad5e1..a094398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf625=['then','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','socket.io-emitter','register'];(function(_0xcf8f87,_0x5f5772){var _0x485b48=function(_0x621938){while(--_0x621938){_0xcf8f87['push'](_0xcf8f87['shift']());}};_0x485b48(++_0x5f5772);}(_0xf625,0x9a));var _0x5f62=function(_0x3feec6,_0x4db012){_0x3feec6=_0x3feec6-0x0;var _0x56d5e2=_0xf625[_0x3feec6];return _0x56d5e2;};'use strict';var _=require(_0x5f62('0x0'));var util=require('util');var moment=require(_0x5f62('0x1'));var BPromise=require(_0x5f62('0x2'));var rs=require(_0x5f62('0x3'));var fs=require('fs');var Redis=require(_0x5f62('0x4'));var db=require(_0x5f62('0x5'))['db'];var utils=require(_0x5f62('0x6'));var logger=require(_0x5f62('0x7'))(_0x5f62('0x8'));var config=require(_0x5f62('0x9'));var jayson=require(_0x5f62('0xa'));var client=jayson[_0x5f62('0xb')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5f62('0xc'))(new Redis(config['redis']));require('./dashboardItem.socket')[_0x5f62('0xd')](socket);function respondWithRpcPromise(_0xd8bcc5,_0x3a3ffe,_0x370b30){return new BPromise(function(_0x4d8ecb,_0x475818){return client['request'](_0xd8bcc5,_0x370b30)[_0x5f62('0xe')](function(_0x419159){logger['info'](_0x5f62('0xf'),_0x3a3ffe,_0x5f62('0x10'));logger[_0x5f62('0x11')](_0x5f62('0x12'),_0x3a3ffe,_0x5f62('0x10'),JSON['stringify'](_0x419159));if(_0x419159[_0x5f62('0x13')]){if(_0x419159['error'][_0x5f62('0x14')]===0x1f4){logger[_0x5f62('0x13')](_0x5f62('0xf'),_0x3a3ffe,_0x419159[_0x5f62('0x13')][_0x5f62('0x15')]);return _0x475818(_0x419159[_0x5f62('0x13')][_0x5f62('0x15')]);}logger['error'](_0x5f62('0xf'),_0x3a3ffe,_0x419159[_0x5f62('0x13')][_0x5f62('0x15')]);return _0x4d8ecb(_0x419159[_0x5f62('0x13')][_0x5f62('0x15')]);}else{logger['info'](_0x5f62('0xf'),_0x3a3ffe,'request\x20sent');_0x4d8ecb(_0x419159[_0x5f62('0x16')][_0x5f62('0x15')]);}})[_0x5f62('0x17')](function(_0x2f98d4){logger['error']('DashboardItem,\x20%s,\x20%s',_0x3a3ffe,_0x2f98d4);_0x475818(_0x2f98d4);});});}
\ No newline at end of file
+var _0x23cc=['randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','bluebird'];(function(_0x22aa7e,_0x2a985c){var _0x2caee2=function(_0x5e90fe){while(--_0x5e90fe){_0x22aa7e['push'](_0x22aa7e['shift']());}};_0x2caee2(++_0x2a985c);}(_0x23cc,0x9a));var _0xc23c=function(_0x4b97fc,_0x3e0f5e){_0x4b97fc=_0x4b97fc-0x0;var _0x2a9252=_0x23cc[_0x4b97fc];return _0x2a9252;};'use strict';var _=require(_0xc23c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc23c('0x1'));var rs=require(_0xc23c('0x2'));var fs=require('fs');var Redis=require(_0xc23c('0x3'));var db=require(_0xc23c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc23c('0x5'));var config=require(_0xc23c('0x6'));var jayson=require(_0xc23c('0x7'));var client=jayson[_0xc23c('0x8')][_0xc23c('0x9')]({'port':0x232a});config[_0xc23c('0xa')]=_[_0xc23c('0xb')](config['redis'],{'host':_0xc23c('0xc'),'port':0x18eb});var socket=require(_0xc23c('0xd'))(new Redis(config['redis']));require(_0xc23c('0xe'))[_0xc23c('0xf')](socket);function respondWithRpcPromise(_0x5f03a0,_0x5a69c2,_0x2ad212){return new BPromise(function(_0x4a8902,_0x52d8f2){return client[_0xc23c('0x10')](_0x5f03a0,_0x2ad212)[_0xc23c('0x11')](function(_0x359c2e){logger[_0xc23c('0x12')](_0xc23c('0x13'),_0x5a69c2,_0xc23c('0x14'));logger['debug']('DashboardItem,\x20%s,\x20%s,\x20%s',_0x5a69c2,_0xc23c('0x14'),JSON[_0xc23c('0x15')](_0x359c2e));if(_0x359c2e['error']){if(_0x359c2e[_0xc23c('0x16')]['code']===0x1f4){logger[_0xc23c('0x16')](_0xc23c('0x13'),_0x5a69c2,_0x359c2e['error'][_0xc23c('0x17')]);return _0x52d8f2(_0x359c2e[_0xc23c('0x16')][_0xc23c('0x17')]);}logger[_0xc23c('0x16')](_0xc23c('0x13'),_0x5a69c2,_0x359c2e['error'][_0xc23c('0x17')]);return _0x4a8902(_0x359c2e['error'][_0xc23c('0x17')]);}else{logger[_0xc23c('0x12')](_0xc23c('0x13'),_0x5a69c2,_0xc23c('0x14'));_0x4a8902(_0x359c2e[_0xc23c('0x18')][_0xc23c('0x17')]);}})[_0xc23c('0x19')](function(_0x2cb0d5){logger['error'](_0xc23c('0x13'),_0x5a69c2,_0x2cb0d5);_0x52d8f2(_0x2cb0d5);});});}
\ No newline at end of file
index 2633f65..ad86984 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27b7=['register','length','dashboardItem:','./dashboardItem.events','update','removeListener'];(function(_0x234341,_0x1f0568){var _0x2fd6e9=function(_0x1fd8dd){while(--_0x1fd8dd){_0x234341['push'](_0x234341['shift']());}};_0x2fd6e9(++_0x1f0568);}(_0x27b7,0xc9));var _0x727b=function(_0x503e40,_0xe68845){_0x503e40=_0x503e40-0x0;var _0x59ee2b=_0x27b7[_0x503e40];return _0x59ee2b;};'use strict';var DashboardItemEvents=require(_0x727b('0x0'));var events=['save','remove',_0x727b('0x1')];function createListener(_0x2ac287,_0x3bafee){return function(_0x297e3f){_0x3bafee['emit'](_0x2ac287,_0x297e3f);};}function removeListener(_0x26b4d5,_0x220977){return function(){DashboardItemEvents[_0x727b('0x2')](_0x26b4d5,_0x220977);};}exports[_0x727b('0x3')]=function(_0x42b14e){for(var _0x4a6bf3=0x0,_0x5ee979=events[_0x727b('0x4')];_0x4a6bf3<_0x5ee979;_0x4a6bf3++){var _0x535cdd=events[_0x4a6bf3];var _0x19f3c2=createListener(_0x727b('0x5')+_0x535cdd,_0x42b14e);DashboardItemEvents['on'](_0x535cdd,_0x19f3c2);}};
\ No newline at end of file
+var _0x2840=['dashboardItem:','./dashboardItem.events','save','remove','update','emit','removeListener','register','length'];(function(_0x375fab,_0x49af77){var _0x1e8e34=function(_0x38d861){while(--_0x38d861){_0x375fab['push'](_0x375fab['shift']());}};_0x1e8e34(++_0x49af77);}(_0x2840,0x133));var _0x0284=function(_0x15ed84,_0x589521){_0x15ed84=_0x15ed84-0x0;var _0x426d2b=_0x2840[_0x15ed84];return _0x426d2b;};'use strict';var DashboardItemEvents=require(_0x0284('0x0'));var events=[_0x0284('0x1'),_0x0284('0x2'),_0x0284('0x3')];function createListener(_0x41d9db,_0x22367c){return function(_0x1545ae){_0x22367c[_0x0284('0x4')](_0x41d9db,_0x1545ae);};}function removeListener(_0x50f63d,_0x4fe836){return function(){DashboardItemEvents[_0x0284('0x5')](_0x50f63d,_0x4fe836);};}exports[_0x0284('0x6')]=function(_0x4fdcd3){for(var _0x25e5ef=0x0,_0x5f5bb7=events[_0x0284('0x7')];_0x25e5ef<_0x5f5bb7;_0x25e5ef++){var _0x1a5de2=events[_0x25e5ef];var _0x4f6979=createListener(_0x0284('0x8')+_0x1a5de2,_0x4fdcd3);DashboardItemEvents['on'](_0x1a5de2,_0x4f6979);}};
\ No newline at end of file
index 4a63c0a..ec05fa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27fe=['./dashboardItem.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1d0304,_0x315c51){var _0x2ef571=function(_0x37f359){while(--_0x37f359){_0x1d0304['push'](_0x1d0304['shift']());}};_0x2ef571(++_0x315c51);}(_0x27fe,0x7e));var _0xe27f=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0x27fe[_0xf50820];return _0x2a9b10;};'use strict';var multer=require(_0xe27f('0x0'));var util=require(_0xe27f('0x1'));var path=require(_0xe27f('0x2'));var timeout=require(_0xe27f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe27f('0x4'));var interaction=require(_0xe27f('0x5'));var config=require(_0xe27f('0x6'));var controller=require(_0xe27f('0x7'));router[_0xe27f('0x8')](_0xe27f('0x9'),auth[_0xe27f('0xa')](),controller[_0xe27f('0xb')]);router[_0xe27f('0xc')]('/',auth[_0xe27f('0xa')](),controller[_0xe27f('0xd')]);router[_0xe27f('0xe')](_0xe27f('0x9'),auth['isAuthenticated'](),controller[_0xe27f('0xf')]);router[_0xe27f('0x10')](_0xe27f('0x9'),auth['isAuthenticated'](),controller[_0xe27f('0x11')]);module[_0xe27f('0x12')]=router;
\ No newline at end of file
+var _0x902c=['exports','multer','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','put','delete','destroy'];(function(_0x475067,_0x1217db){var _0x182f2a=function(_0x1845c1){while(--_0x1845c1){_0x475067['push'](_0x475067['shift']());}};_0x182f2a(++_0x1217db);}(_0x902c,0xf1));var _0xc902=function(_0x5b5dbf,_0x87aba4){_0x5b5dbf=_0x5b5dbf-0x0;var _0xdcf771=_0x902c[_0x5b5dbf];return _0xdcf771;};'use strict';var multer=require(_0xc902('0x0'));var util=require('util');var path=require(_0xc902('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc902('0x2')]();var fs_extra=require(_0xc902('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xc902('0x4'));var config=require(_0xc902('0x5'));var controller=require(_0xc902('0x6'));router[_0xc902('0x7')](_0xc902('0x8'),auth[_0xc902('0x9')](),controller[_0xc902('0xa')]);router[_0xc902('0xb')]('/',auth[_0xc902('0x9')](),controller['create']);router[_0xc902('0xc')](_0xc902('0x8'),auth[_0xc902('0x9')](),controller['update']);router[_0xc902('0xd')](_0xc902('0x8'),auth[_0xc902('0x9')](),controller[_0xc902('0xe')]);module[_0xc902('0xf')]=router;
\ No newline at end of file
index 9f6677d..1321c74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74e7=['first','sequelize','exports','STRING'];(function(_0x119961,_0x38c0a1){var _0x147fe2=function(_0xd2e914){while(--_0xd2e914){_0x119961['push'](_0x119961['shift']());}};_0x147fe2(++_0x38c0a1);}(_0x74e7,0x141));var _0x774e=function(_0x45fd9d,_0xdb5fe1){_0x45fd9d=_0x45fd9d-0x0;var _0x541ea0=_0x74e7[_0x45fd9d];return _0x541ea0;};'use strict';var Sequelize=require(_0x774e('0x0'));module[_0x774e('0x1')]={'name':{'type':Sequelize[_0x774e('0x2')],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0x774e('0x3'),'second','third'),'allowNull':![],'defaultValue':_0x774e('0x3')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc54e=['exports','STRING','second','third'];(function(_0x5af0b8,_0xaeaecf){var _0x358c88=function(_0x4aa008){while(--_0x4aa008){_0x5af0b8['push'](_0x5af0b8['shift']());}};_0x358c88(++_0xaeaecf);}(_0xc54e,0xcc));var _0xec54=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0xc54e[_0x2892da];return _0x28cff2;};'use strict';var Sequelize=require('sequelize');module[_0xec54('0x0')]={'name':{'type':Sequelize[_0xec54('0x1')],'allowNull':![]},'level':{'type':Sequelize['ENUM']('first',_0xec54('0x2'),_0xec54('0x3')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0xec54('0x1')]}};
\ No newline at end of file
index 3c6abd5..c84fd6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19d1=['../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','update','then','destroy','get','Dispositions','UserProfileResource','name','index','Disposition','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','count','findAll','catch','show','rawAttributes','includeAll','include','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','rimraf','request-promise','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util'];(function(_0x2920dd,_0x19d049){var _0x5d4e52=function(_0x46c751){while(--_0x46c751){_0x2920dd['push'](_0x2920dd['shift']());}};_0x5d4e52(++_0x19d049);}(_0x19d1,0xd6));var _0x119d=function(_0x417423,_0x3b478f){_0x417423=_0x417423-0x0;var _0x41ed07=_0x19d1[_0x417423];return _0x41ed07;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x119d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x119d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x119d('0x2'));var util=require(_0x119d('0x3'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x119d('0x4'));var fs=require('fs');var fs_extra=require(_0x119d('0x5'));var _=require(_0x119d('0x6'));var squel=require(_0x119d('0x7'));var crypto=require(_0x119d('0x8'));var jsforce=require(_0x119d('0x9'));var deskjs=require(_0x119d('0xa'));var toCsv=require('to-csv');var querystring=require(_0x119d('0xb'));var Papa=require(_0x119d('0xc'));var Redis=require(_0x119d('0xd'));var authService=require(_0x119d('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x119d('0xf'));var logger=require(_0x119d('0x10'))(_0x119d('0x11'));var utils=require(_0x119d('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x119d('0x13'));var db=require(_0x119d('0x14'))['db'];function respondWithStatusCode(_0x44e281,_0x5e1e6c){_0x5e1e6c=_0x5e1e6c||0xcc;return function(_0x4efaf6){if(_0x4efaf6){return _0x44e281[_0x119d('0x15')](_0x5e1e6c);}return _0x44e281[_0x119d('0x16')](_0x5e1e6c)[_0x119d('0x17')]();};}function respondWithResult(_0x1b8683,_0x29e9fa){_0x29e9fa=_0x29e9fa||0xc8;return function(_0x3d00c3){if(_0x3d00c3){return _0x1b8683['status'](_0x29e9fa)[_0x119d('0x18')](_0x3d00c3);}};}function respondWithFilteredResult(_0x5022c2,_0x55257d){return function(_0x3e1b07){if(_0x3e1b07){var _0x317573=typeof _0x55257d[_0x119d('0x19')]===_0x119d('0x1a')&&typeof _0x55257d[_0x119d('0x1b')]===_0x119d('0x1a');var _0x15791b=_0x3e1b07['count'];var _0x465cb2=_0x317573?0x0:_0x55257d['offset'];var _0x1dc80b=_0x317573?_0x3e1b07['count']:_0x55257d[_0x119d('0x19')]+_0x55257d[_0x119d('0x1b')];var _0x41e5e6;if(_0x1dc80b>=_0x15791b){_0x1dc80b=_0x15791b;_0x41e5e6=0xc8;}else{_0x41e5e6=0xce;}_0x5022c2[_0x119d('0x16')](_0x41e5e6);return _0x5022c2[_0x119d('0x1c')]('Content-Range',_0x465cb2+'-'+_0x1dc80b+'/'+_0x15791b)['json'](_0x3e1b07);}return null;};}function patchUpdates(_0x30346d){return function(_0x3423be){try{jsonpatch[_0x119d('0x1d')](_0x3423be,_0x30346d,!![]);}catch(_0x5020bf){return BPromise[_0x119d('0x1e')](_0x5020bf);}return _0x3423be[_0x119d('0x1f')]();};}function saveUpdates(_0xfd56f6,_0x58245b){return function(_0x532283){if(_0x532283){return _0x532283[_0x119d('0x20')](_0xfd56f6)[_0x119d('0x21')](function(_0x53919f){return _0x53919f;});}return null;};}function removeEntity(_0x3d8df0,_0x5e07aa){return function(_0x281d48){if(_0x281d48){return _0x281d48[_0x119d('0x22')]()[_0x119d('0x21')](function(){var _0x4ddacb=_0x281d48[_0x119d('0x23')]({'plain':!![]});var _0x4fd794=_0x119d('0x24');return db[_0x119d('0x25')][_0x119d('0x22')]({'where':{'type':_0x4fd794,'resourceId':_0x4ddacb['id']}})[_0x119d('0x21')](function(){return _0x281d48;});})[_0x119d('0x21')](function(){_0x3d8df0[_0x119d('0x16')](0xcc)[_0x119d('0x17')]();});}};}function handleEntityNotFound(_0x58e30e,_0x11bcb2){return function(_0xd48c9a){if(!_0xd48c9a){_0x58e30e['sendStatus'](0x194);}return _0xd48c9a;};}function handleError(_0x3c1d67,_0x3d059e){_0x3d059e=_0x3d059e||0x1f4;return function(_0xbf08bc){logger['error'](_0xbf08bc['stack']);if(_0xbf08bc[_0x119d('0x26')]){delete _0xbf08bc[_0x119d('0x26')];}_0x3c1d67[_0x119d('0x16')](_0x3d059e)['send'](_0xbf08bc);};}exports[_0x119d('0x27')]=function(_0x1766f3,_0x20ac23){var _0x29cab8={},_0x1ef0e0={},_0x4da8a4={'count':0x0,'rows':[]};var _0x3b8b14=_['map'](db[_0x119d('0x28')]['rawAttributes'],function(_0x3d7b1e){return{'name':_0x3d7b1e[_0x119d('0x29')],'type':_0x3d7b1e[_0x119d('0x2a')][_0x119d('0x2b')]};});_0x1ef0e0[_0x119d('0x2c')]=_[_0x119d('0x2d')](_0x3b8b14,_0x119d('0x26'));_0x1ef0e0[_0x119d('0x2e')]=_[_0x119d('0x2f')](_0x1766f3['query']);_0x1ef0e0[_0x119d('0x30')]=_[_0x119d('0x31')](_0x1ef0e0[_0x119d('0x2c')],_0x1ef0e0[_0x119d('0x2e')]);_0x29cab8[_0x119d('0x32')]=_['intersection'](_0x1ef0e0[_0x119d('0x2c')],qs[_0x119d('0x33')](_0x1766f3[_0x119d('0x2e')][_0x119d('0x33')]));_0x29cab8[_0x119d('0x32')]=_0x29cab8[_0x119d('0x32')][_0x119d('0x34')]?_0x29cab8[_0x119d('0x32')]:_0x1ef0e0[_0x119d('0x2c')];if(!_0x1766f3['query']['hasOwnProperty'](_0x119d('0x35'))){_0x29cab8[_0x119d('0x1b')]=qs['limit'](_0x1766f3[_0x119d('0x2e')]['limit']);_0x29cab8[_0x119d('0x19')]=qs[_0x119d('0x19')](_0x1766f3['query'][_0x119d('0x19')]);}_0x29cab8[_0x119d('0x36')]=qs[_0x119d('0x37')](_0x1766f3[_0x119d('0x2e')][_0x119d('0x37')]);_0x29cab8[_0x119d('0x38')]=qs[_0x119d('0x30')](_[_0x119d('0x39')](_0x1766f3['query'],_0x1ef0e0[_0x119d('0x30')]),_0x3b8b14);if(_0x1766f3[_0x119d('0x2e')][_0x119d('0x3a')]){_0x29cab8[_0x119d('0x38')]=_[_0x119d('0x3b')](_0x29cab8[_0x119d('0x38')],{'$or':_[_0x119d('0x2d')](_0x3b8b14,function(_0x36cd56){if(_0x36cd56[_0x119d('0x2a')]!=='VIRTUAL'){var _0x316542={};_0x316542[_0x36cd56[_0x119d('0x26')]]={'$like':'%'+_0x1766f3['query'][_0x119d('0x3a')]+'%'};return _0x316542;}})});}_0x29cab8=_[_0x119d('0x3b')]({},_0x29cab8,_0x1766f3[_0x119d('0x3c')]);var _0x5e09e3={'where':_0x29cab8[_0x119d('0x38')]};return db[_0x119d('0x28')][_0x119d('0x3d')](_0x5e09e3)['then'](function(_0x4f6df1){_0x4da8a4[_0x119d('0x3d')]=_0x4f6df1;if(_0x1766f3[_0x119d('0x2e')]['includeAll']){_0x29cab8['include']=[{'all':!![]}];}return db[_0x119d('0x28')][_0x119d('0x3e')](_0x29cab8);})[_0x119d('0x21')](function(_0x2c67b2){_0x4da8a4['rows']=_0x2c67b2;return _0x4da8a4;})['then'](respondWithFilteredResult(_0x20ac23,_0x29cab8))[_0x119d('0x3f')](handleError(_0x20ac23,null));};exports[_0x119d('0x40')]=function(_0x340665,_0x44c1cd){var _0x5e0953={'raw':!![],'where':{'id':_0x340665['params']['id']}},_0x528e53={};_0x528e53[_0x119d('0x2c')]=_[_0x119d('0x2f')](db['Disposition'][_0x119d('0x41')]);_0x528e53[_0x119d('0x2e')]=_[_0x119d('0x2f')](_0x340665[_0x119d('0x2e')]);_0x528e53['filters']=_[_0x119d('0x31')](_0x528e53[_0x119d('0x2c')],_0x528e53[_0x119d('0x2e')]);_0x5e0953[_0x119d('0x32')]=_[_0x119d('0x31')](_0x528e53[_0x119d('0x2c')],qs['fields'](_0x340665['query'][_0x119d('0x33')]));_0x5e0953[_0x119d('0x32')]=_0x5e0953[_0x119d('0x32')]['length']?_0x5e0953[_0x119d('0x32')]:_0x528e53[_0x119d('0x2c')];if(_0x340665[_0x119d('0x2e')][_0x119d('0x42')]){_0x5e0953[_0x119d('0x43')]=[{'all':!![]}];}_0x5e0953=_[_0x119d('0x3b')]({},_0x5e0953,_0x340665[_0x119d('0x3c')]);return db[_0x119d('0x28')]['find'](_0x5e0953)['then'](handleEntityNotFound(_0x44c1cd,null))[_0x119d('0x21')](respondWithResult(_0x44c1cd,null))[_0x119d('0x3f')](handleError(_0x44c1cd,null));};exports[_0x119d('0x44')]=function(_0x4603c1,_0x36c11a){return db[_0x119d('0x28')][_0x119d('0x44')](_0x4603c1['body'],{})[_0x119d('0x21')](function(_0x1e0f0a){var _0x3f2789=_0x4603c1[_0x119d('0x45')][_0x119d('0x23')]({'plain':!![]});if(!_0x3f2789)throw new Error(_0x119d('0x46'));if(_0x3f2789['role']==='user'){var _0x37ff29=_0x1e0f0a[_0x119d('0x23')]({'plain':!![]});var _0xcbc0bf=_0x119d('0x24');return db[_0x119d('0x47')][_0x119d('0x48')]({'where':{'name':_0xcbc0bf,'userProfileId':_0x3f2789['userProfileId']},'raw':!![]})[_0x119d('0x21')](function(_0x4da73e){if(_0x4da73e&&_0x4da73e[_0x119d('0x49')]===0x0){return db[_0x119d('0x25')]['create']({'name':_0x37ff29[_0x119d('0x26')],'resourceId':_0x37ff29['id'],'type':_0x4da73e[_0x119d('0x26')],'sectionId':_0x4da73e['id']},{})[_0x119d('0x21')](function(){return _0x1e0f0a;});}else{return _0x1e0f0a;}})['catch'](function(_0x2f3bf7){logger[_0x119d('0x4a')](_0x119d('0x4b'),_0x2f3bf7);throw _0x2f3bf7;});}return _0x1e0f0a;})[_0x119d('0x21')](respondWithResult(_0x36c11a,0xc9))['catch'](handleError(_0x36c11a,null));};exports[_0x119d('0x20')]=function(_0x46916b,_0x45f877){if(_0x46916b[_0x119d('0x4c')]['id']){delete _0x46916b['body']['id'];}return db['Disposition']['find']({'where':{'id':_0x46916b[_0x119d('0x4d')]['id']}})[_0x119d('0x21')](handleEntityNotFound(_0x45f877,null))[_0x119d('0x21')](saveUpdates(_0x46916b[_0x119d('0x4c')],null))[_0x119d('0x21')](respondWithResult(_0x45f877,null))['catch'](handleError(_0x45f877,null));};exports[_0x119d('0x22')]=function(_0x2bcc4e,_0x546eee){return db[_0x119d('0x28')]['find']({'where':{'id':_0x2bcc4e[_0x119d('0x4d')]['id']}})[_0x119d('0x21')](handleEntityNotFound(_0x546eee,null))[_0x119d('0x21')](removeEntity(_0x546eee,null))[_0x119d('0x3f')](handleError(_0x546eee,null));};
\ No newline at end of file
+var _0xb501=['get','Dispositions','UserProfileResource','error','name','send','index','Disposition','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','count','includeAll','include','rows','catch','show','params','keys','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','set','apply','reject','save','update','then'];(function(_0x5c0979,_0x287854){var _0x309972=function(_0x17defd){while(--_0x17defd){_0x5c0979['push'](_0x5c0979['shift']());}};_0x309972(++_0x287854);}(_0xb501,0x1ce));var _0x1b50=function(_0x49127c,_0xbc47af){_0x49127c=_0x49127c-0x0;var _0x3ab7d2=_0xb501[_0x49127c];return _0x3ab7d2;};'use strict';var emlformat=require(_0x1b50('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1b50('0x1'));var jsonpatch=require(_0x1b50('0x2'));var rp=require('request-promise');var moment=require(_0x1b50('0x3'));var BPromise=require(_0x1b50('0x4'));var Mustache=require(_0x1b50('0x5'));var util=require('util');var path=require('path');var sox=require(_0x1b50('0x6'));var csv=require(_0x1b50('0x7'));var ejs=require(_0x1b50('0x8'));var fs=require('fs');var fs_extra=require(_0x1b50('0x9'));var _=require('lodash');var squel=require(_0x1b50('0xa'));var crypto=require(_0x1b50('0xb'));var jsforce=require(_0x1b50('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1b50('0x7'));var querystring=require(_0x1b50('0xd'));var Papa=require(_0x1b50('0xe'));var Redis=require(_0x1b50('0xf'));var authService=require(_0x1b50('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x1b50('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1b50('0x12'))(_0x1b50('0x13'));var utils=require(_0x1b50('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x1b50('0x15'));var db=require(_0x1b50('0x16'))['db'];function respondWithStatusCode(_0x5890c4,_0x2c4816){_0x2c4816=_0x2c4816||0xcc;return function(_0x472be5){if(_0x472be5){return _0x5890c4[_0x1b50('0x17')](_0x2c4816);}return _0x5890c4['status'](_0x2c4816)[_0x1b50('0x18')]();};}function respondWithResult(_0x5c0fbf,_0x1b4ad9){_0x1b4ad9=_0x1b4ad9||0xc8;return function(_0x342738){if(_0x342738){return _0x5c0fbf[_0x1b50('0x19')](_0x1b4ad9)[_0x1b50('0x1a')](_0x342738);}};}function respondWithFilteredResult(_0x4403f1,_0x248854){return function(_0x4e4b2f){if(_0x4e4b2f){var _0x1ee1e4=typeof _0x248854[_0x1b50('0x1b')]==='undefined'&&typeof _0x248854[_0x1b50('0x1c')]===_0x1b50('0x1d');var _0x344b0d=_0x4e4b2f['count'];var _0x17c3e2=_0x1ee1e4?0x0:_0x248854[_0x1b50('0x1b')];var _0xb4c09=_0x1ee1e4?_0x4e4b2f['count']:_0x248854[_0x1b50('0x1b')]+_0x248854[_0x1b50('0x1c')];var _0x549130;if(_0xb4c09>=_0x344b0d){_0xb4c09=_0x344b0d;_0x549130=0xc8;}else{_0x549130=0xce;}_0x4403f1['status'](_0x549130);return _0x4403f1[_0x1b50('0x1e')]('Content-Range',_0x17c3e2+'-'+_0xb4c09+'/'+_0x344b0d)['json'](_0x4e4b2f);}return null;};}function patchUpdates(_0x479864){return function(_0x2c413e){try{jsonpatch[_0x1b50('0x1f')](_0x2c413e,_0x479864,!![]);}catch(_0x664701){return BPromise[_0x1b50('0x20')](_0x664701);}return _0x2c413e[_0x1b50('0x21')]();};}function saveUpdates(_0x52afb6,_0xa30306){return function(_0x2901e8){if(_0x2901e8){return _0x2901e8[_0x1b50('0x22')](_0x52afb6)[_0x1b50('0x23')](function(_0x4f0e55){return _0x4f0e55;});}return null;};}function removeEntity(_0x2c3e65,_0x4fb649){return function(_0x155cb1){if(_0x155cb1){return _0x155cb1['destroy']()[_0x1b50('0x23')](function(){var _0x3d28dd=_0x155cb1[_0x1b50('0x24')]({'plain':!![]});var _0x56c0af=_0x1b50('0x25');return db[_0x1b50('0x26')]['destroy']({'where':{'type':_0x56c0af,'resourceId':_0x3d28dd['id']}})[_0x1b50('0x23')](function(){return _0x155cb1;});})[_0x1b50('0x23')](function(){_0x2c3e65[_0x1b50('0x19')](0xcc)[_0x1b50('0x18')]();});}};}function handleEntityNotFound(_0x3bc4bc,_0x46b864){return function(_0x20500b){if(!_0x20500b){_0x3bc4bc['sendStatus'](0x194);}return _0x20500b;};}function handleError(_0x35a730,_0x1a7e40){_0x1a7e40=_0x1a7e40||0x1f4;return function(_0x4fd651){logger[_0x1b50('0x27')](_0x4fd651['stack']);if(_0x4fd651[_0x1b50('0x28')]){delete _0x4fd651[_0x1b50('0x28')];}_0x35a730[_0x1b50('0x19')](_0x1a7e40)[_0x1b50('0x29')](_0x4fd651);};}exports[_0x1b50('0x2a')]=function(_0x24b09e,_0x31281b){var _0xc7d157={},_0x558266={},_0x3bc10e={'count':0x0,'rows':[]};var _0x34b14a=_['map'](db[_0x1b50('0x2b')]['rawAttributes'],function(_0x5d590c){return{'name':_0x5d590c[_0x1b50('0x2c')],'type':_0x5d590c[_0x1b50('0x2d')][_0x1b50('0x2e')]};});_0x558266[_0x1b50('0x2f')]=_[_0x1b50('0x30')](_0x34b14a,_0x1b50('0x28'));_0x558266['query']=_['keys'](_0x24b09e[_0x1b50('0x31')]);_0x558266[_0x1b50('0x32')]=_['intersection'](_0x558266[_0x1b50('0x2f')],_0x558266[_0x1b50('0x31')]);_0xc7d157[_0x1b50('0x33')]=_[_0x1b50('0x34')](_0x558266[_0x1b50('0x2f')],qs[_0x1b50('0x35')](_0x24b09e[_0x1b50('0x31')]['fields']));_0xc7d157['attributes']=_0xc7d157[_0x1b50('0x33')][_0x1b50('0x36')]?_0xc7d157[_0x1b50('0x33')]:_0x558266[_0x1b50('0x2f')];if(!_0x24b09e[_0x1b50('0x31')][_0x1b50('0x37')](_0x1b50('0x38'))){_0xc7d157['limit']=qs[_0x1b50('0x1c')](_0x24b09e[_0x1b50('0x31')]['limit']);_0xc7d157['offset']=qs[_0x1b50('0x1b')](_0x24b09e[_0x1b50('0x31')][_0x1b50('0x1b')]);}_0xc7d157['order']=qs[_0x1b50('0x39')](_0x24b09e[_0x1b50('0x31')][_0x1b50('0x39')]);_0xc7d157[_0x1b50('0x3a')]=qs[_0x1b50('0x32')](_[_0x1b50('0x3b')](_0x24b09e[_0x1b50('0x31')],_0x558266[_0x1b50('0x32')]),_0x34b14a);if(_0x24b09e[_0x1b50('0x31')]['filter']){_0xc7d157[_0x1b50('0x3a')]=_[_0x1b50('0x3c')](_0xc7d157[_0x1b50('0x3a')],{'$or':_[_0x1b50('0x30')](_0x34b14a,function(_0x437bf0){if(_0x437bf0[_0x1b50('0x2d')]!==_0x1b50('0x3d')){var _0x2880aa={};_0x2880aa[_0x437bf0[_0x1b50('0x28')]]={'$like':'%'+_0x24b09e[_0x1b50('0x31')][_0x1b50('0x3e')]+'%'};return _0x2880aa;}})});}_0xc7d157=_[_0x1b50('0x3c')]({},_0xc7d157,_0x24b09e[_0x1b50('0x3f')]);var _0x30ac3d={'where':_0xc7d157[_0x1b50('0x3a')]};return db[_0x1b50('0x2b')][_0x1b50('0x40')](_0x30ac3d)['then'](function(_0x3ed8a9){_0x3bc10e[_0x1b50('0x40')]=_0x3ed8a9;if(_0x24b09e[_0x1b50('0x31')][_0x1b50('0x41')]){_0xc7d157[_0x1b50('0x42')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0xc7d157);})[_0x1b50('0x23')](function(_0x35ad99){_0x3bc10e[_0x1b50('0x43')]=_0x35ad99;return _0x3bc10e;})[_0x1b50('0x23')](respondWithFilteredResult(_0x31281b,_0xc7d157))[_0x1b50('0x44')](handleError(_0x31281b,null));};exports[_0x1b50('0x45')]=function(_0x453e04,_0x1cb0d0){var _0x215f09={'raw':!![],'where':{'id':_0x453e04[_0x1b50('0x46')]['id']}},_0x92e14f={};_0x92e14f['model']=_[_0x1b50('0x47')](db['Disposition'][_0x1b50('0x48')]);_0x92e14f[_0x1b50('0x31')]=_[_0x1b50('0x47')](_0x453e04[_0x1b50('0x31')]);_0x92e14f['filters']=_[_0x1b50('0x34')](_0x92e14f[_0x1b50('0x2f')],_0x92e14f[_0x1b50('0x31')]);_0x215f09[_0x1b50('0x33')]=_[_0x1b50('0x34')](_0x92e14f['model'],qs[_0x1b50('0x35')](_0x453e04['query']['fields']));_0x215f09[_0x1b50('0x33')]=_0x215f09[_0x1b50('0x33')][_0x1b50('0x36')]?_0x215f09['attributes']:_0x92e14f['model'];if(_0x453e04[_0x1b50('0x31')][_0x1b50('0x41')]){_0x215f09[_0x1b50('0x42')]=[{'all':!![]}];}_0x215f09=_[_0x1b50('0x3c')]({},_0x215f09,_0x453e04['options']);return db[_0x1b50('0x2b')][_0x1b50('0x49')](_0x215f09)[_0x1b50('0x23')](handleEntityNotFound(_0x1cb0d0,null))['then'](respondWithResult(_0x1cb0d0,null))[_0x1b50('0x44')](handleError(_0x1cb0d0,null));};exports[_0x1b50('0x4a')]=function(_0x502a21,_0x15bfc){return db[_0x1b50('0x2b')][_0x1b50('0x4a')](_0x502a21[_0x1b50('0x4b')],{})[_0x1b50('0x23')](function(_0x2e14b4){var _0x3067d8=_0x502a21[_0x1b50('0x4c')][_0x1b50('0x24')]({'plain':!![]});if(!_0x3067d8)throw new Error(_0x1b50('0x4d'));if(_0x3067d8['role']===_0x1b50('0x4c')){var _0x1ca1a0=_0x2e14b4[_0x1b50('0x24')]({'plain':!![]});var _0x9e2e67=_0x1b50('0x25');return db[_0x1b50('0x4e')][_0x1b50('0x49')]({'where':{'name':_0x9e2e67,'userProfileId':_0x3067d8[_0x1b50('0x4f')]},'raw':!![]})[_0x1b50('0x23')](function(_0x236011){if(_0x236011&&_0x236011[_0x1b50('0x50')]===0x0){return db[_0x1b50('0x26')][_0x1b50('0x4a')]({'name':_0x1ca1a0[_0x1b50('0x28')],'resourceId':_0x1ca1a0['id'],'type':_0x236011[_0x1b50('0x28')],'sectionId':_0x236011['id']},{})[_0x1b50('0x23')](function(){return _0x2e14b4;});}else{return _0x2e14b4;}})['catch'](function(_0x155453){logger[_0x1b50('0x27')](_0x1b50('0x51'),_0x155453);throw _0x155453;});}return _0x2e14b4;})[_0x1b50('0x23')](respondWithResult(_0x15bfc,0xc9))[_0x1b50('0x44')](handleError(_0x15bfc,null));};exports[_0x1b50('0x22')]=function(_0x17c1f1,_0x160f08){if(_0x17c1f1[_0x1b50('0x4b')]['id']){delete _0x17c1f1[_0x1b50('0x4b')]['id'];}return db['Disposition'][_0x1b50('0x49')]({'where':{'id':_0x17c1f1['params']['id']}})[_0x1b50('0x23')](handleEntityNotFound(_0x160f08,null))['then'](saveUpdates(_0x17c1f1['body'],null))['then'](respondWithResult(_0x160f08,null))[_0x1b50('0x44')](handleError(_0x160f08,null));};exports[_0x1b50('0x52')]=function(_0x3e7108,_0x10a863){return db[_0x1b50('0x2b')][_0x1b50('0x49')]({'where':{'id':_0x3e7108[_0x1b50('0x46')]['id']}})['then'](handleEntityNotFound(_0x10a863,null))[_0x1b50('0x23')](removeEntity(_0x10a863,null))[_0x1b50('0x44')](handleError(_0x10a863,null));};
\ No newline at end of file
index f586d63..c7ecf06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6c8=['api','moment','request-promise','./disposition.attributes','define','Disposition','tools_dispositions','name_voice','name','ListId','name_chat','name_sms','SmsAccountId','FaxAccountId','name_openchannel','name_whatsapp','util'];(function(_0x44e9b2,_0x156f15){var _0x1f0665=function(_0x2fc179){while(--_0x2fc179){_0x44e9b2['push'](_0x44e9b2['shift']());}};_0x1f0665(++_0x156f15);}(_0xa6c8,0xcb));var _0x8a6c=function(_0x2882c2,_0x539cf1){_0x2882c2=_0x2882c2-0x0;var _0x46e1ab=_0xa6c8[_0x2882c2];return _0x46e1ab;};'use strict';var _=require('lodash');var util=require(_0x8a6c('0x0'));var logger=require('../../config/logger')(_0x8a6c('0x1'));var moment=require(_0x8a6c('0x2'));var BPromise=require('bluebird');var rp=require(_0x8a6c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8a6c('0x4'));module['exports']=function(_0x1233de,_0x22186c){return _0x1233de[_0x8a6c('0x5')](_0x8a6c('0x6'),attributes,{'tableName':_0x8a6c('0x7'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x8a6c('0x8'),'fields':[_0x8a6c('0x9'),_0x8a6c('0xa')]},{'unique':!![],'name':_0x8a6c('0xb'),'fields':[_0x8a6c('0x9'),'ChatWebsiteId']},{'unique':!![],'name':'name_mail','fields':[_0x8a6c('0x9'),'MailAccountId']},{'unique':!![],'name':_0x8a6c('0xc'),'fields':['name',_0x8a6c('0xd')]},{'unique':!![],'name':'name_fax','fields':[_0x8a6c('0x9'),_0x8a6c('0xe')]},{'unique':!![],'name':_0x8a6c('0xf'),'fields':[_0x8a6c('0x9'),'OpenchannelAccountId']},{'unique':!![],'name':_0x8a6c('0x10'),'fields':['name','WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3bcf=['SmsAccountId','name_fax','FaxAccountId','name_openchannel','name_whatsapp','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./disposition.attributes','define','Disposition','tools_dispositions','name_voice','ListId','name_chat','name','name_mail','MailAccountId'];(function(_0x12936c,_0x5a922d){var _0xd2d595=function(_0x1df8b4){while(--_0x1df8b4){_0x12936c['push'](_0x12936c['shift']());}};_0xd2d595(++_0x5a922d);}(_0x3bcf,0xdd));var _0xf3bc=function(_0x10085c,_0x50086f){_0x10085c=_0x10085c-0x0;var _0x34389c=_0x3bcf[_0x10085c];return _0x34389c;};'use strict';var _=require(_0xf3bc('0x0'));var util=require(_0xf3bc('0x1'));var logger=require(_0xf3bc('0x2'))(_0xf3bc('0x3'));var moment=require(_0xf3bc('0x4'));var BPromise=require(_0xf3bc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf3bc('0x6'));var rimraf=require(_0xf3bc('0x7'));var config=require(_0xf3bc('0x8'));var attributes=require(_0xf3bc('0x9'));module['exports']=function(_0x403472,_0x3456d0){return _0x403472[_0xf3bc('0xa')](_0xf3bc('0xb'),attributes,{'tableName':_0xf3bc('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xf3bc('0xd'),'fields':['name',_0xf3bc('0xe')]},{'unique':!![],'name':_0xf3bc('0xf'),'fields':[_0xf3bc('0x10'),'ChatWebsiteId']},{'unique':!![],'name':_0xf3bc('0x11'),'fields':[_0xf3bc('0x10'),_0xf3bc('0x12')]},{'unique':!![],'name':'name_sms','fields':[_0xf3bc('0x10'),_0xf3bc('0x13')]},{'unique':!![],'name':_0xf3bc('0x14'),'fields':[_0xf3bc('0x10'),_0xf3bc('0x15')]},{'unique':!![],'name':_0xf3bc('0x16'),'fields':[_0xf3bc('0x10'),'OpenchannelAccountId']},{'unique':!![],'name':_0xf3bc('0x17'),'fields':['name','WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index 6b1e0ac..5a9333f 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(_0x3a69ea,_0x441df2){var _0x414f8c=function(_0x167b77){while(--_0x167b77){_0x3a69ea['push'](_0x3a69ea['shift']());}};_0x414f8c(++_0x441df2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+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(_0xce77f5,_0x189ffe){var _0x22f1c2=function(_0x47e79e){while(--_0x47e79e){_0xce77f5['push'](_0xce77f5['shift']());}};_0x22f1c2(++_0x189ffe);}(_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 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 956edee..1894879 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958d=['post','create','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show'];(function(_0x1f5d02,_0x1e5616){var _0x49675e=function(_0x4ad950){while(--_0x4ad950){_0x1f5d02['push'](_0x1f5d02['shift']());}};_0x49675e(++_0x1e5616);}(_0x958d,0x15b));var _0xd958=function(_0x55292a,_0x406c28){_0x55292a=_0x55292a-0x0;var _0x2c77ae=_0x958d[_0x55292a];return _0x2c77ae;};'use strict';var multer=require(_0xd958('0x0'));var util=require(_0xd958('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd958('0x2'));var router=express[_0xd958('0x3')]();var fs_extra=require(_0xd958('0x4'));var auth=require(_0xd958('0x5'));var interaction=require(_0xd958('0x6'));var config=require(_0xd958('0x7'));var controller=require('./disposition.controller');router[_0xd958('0x8')]('/',auth[_0xd958('0x9')](),controller[_0xd958('0xa')]);router[_0xd958('0x8')](_0xd958('0xb'),auth[_0xd958('0x9')](),controller[_0xd958('0xc')]);router[_0xd958('0xd')]('/',auth[_0xd958('0x9')](),controller[_0xd958('0xe')]);router['put'](_0xd958('0xb'),auth[_0xd958('0x9')](),controller['update']);router[_0xd958('0xf')](_0xd958('0xb'),auth['isAuthenticated'](),controller[_0xd958('0x10')]);module[_0xd958('0x11')]=router;
\ No newline at end of file
+var _0xc68d=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','show','post','put','update','/:id','destroy','exports','multer'];(function(_0x50341b,_0x5a4eee){var _0x11ec2f=function(_0x74d143){while(--_0x74d143){_0x50341b['push'](_0x50341b['shift']());}};_0x11ec2f(++_0x5a4eee);}(_0xc68d,0xfe));var _0xdc68=function(_0x1f8209,_0x17a332){_0x1f8209=_0x1f8209-0x0;var _0x298915=_0xc68d[_0x1f8209];return _0x298915;};'use strict';var multer=require(_0xdc68('0x0'));var util=require(_0xdc68('0x1'));var path=require(_0xdc68('0x2'));var timeout=require(_0xdc68('0x3'));var express=require(_0xdc68('0x4'));var router=express[_0xdc68('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xdc68('0x6'));var interaction=require(_0xdc68('0x7'));var config=require('../../config/environment');var controller=require('./disposition.controller');router[_0xdc68('0x8')]('/',auth[_0xdc68('0x9')](),controller['index']);router[_0xdc68('0x8')]('/:id',auth[_0xdc68('0x9')](),controller[_0xdc68('0xa')]);router[_0xdc68('0xb')]('/',auth[_0xdc68('0x9')](),controller['create']);router[_0xdc68('0xc')]('/:id',auth[_0xdc68('0x9')](),controller[_0xdc68('0xd')]);router['delete'](_0xdc68('0xe'),auth[_0xdc68('0x9')](),controller[_0xdc68('0xf')]);module[_0xdc68('0x10')]=router;
\ No newline at end of file
index c257064..626fc1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b0=['2400','4800','7200','9600','12000','14400','v17,v27,v29','INTEGER','SIP','IAX','DADHI','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','ENUM','yes','xCALLY\x20Motion\x20Fax','STRING','localstationid'];(function(_0x4f785a,_0x5c39ba){var _0x2d29bb=function(_0x45ac01){while(--_0x45ac01){_0x4f785a['push'](_0x4f785a['shift']());}};_0x2d29bb(++_0x5c39ba);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x30f2bc,_0x52ede1){_0x30f2bc=_0x30f2bc-0x0;var _0x40a772=_0xa6b0[_0x30f2bc];return _0x40a772;};'use strict';var Sequelize=require(_0x0a6b('0x0'));module[_0x0a6b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize[_0x0a6b('0x2')](_0x0a6b('0x3'),'no'),'defaultValue':_0x0a6b('0x3')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':_0x0a6b('0x4')},'localstationid':{'type':Sequelize[_0x0a6b('0x5')],'unique':_0x0a6b('0x6')},'minrate':{'type':Sequelize[_0x0a6b('0x2')](_0x0a6b('0x7'),_0x0a6b('0x8'),_0x0a6b('0x9'),_0x0a6b('0xa'),_0x0a6b('0xb'),_0x0a6b('0xc')),'defaultValue':_0x0a6b('0x8')},'maxrate':{'type':Sequelize[_0x0a6b('0x2')]('2400','4800',_0x0a6b('0x9'),_0x0a6b('0xa'),_0x0a6b('0xb'),_0x0a6b('0xc')),'defaultValue':_0x0a6b('0xc')},'modem':{'type':Sequelize[_0x0a6b('0x5')],'defaultValue':_0x0a6b('0xd')},'gateway':{'type':Sequelize[_0x0a6b('0x5')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x0a6b('0x5')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x0a6b('0xe')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x0a6b('0x2')](_0x0a6b('0xf'),_0x0a6b('0x10'),_0x0a6b('0x11'),'KHOMP'),'defaultValue':'SIP'},'key':{'type':Sequelize[_0x0a6b('0x5')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x0a6b('0x12')],'defaultValue':function(){return _0x0a6b('0x13');}},'notificationSound':{'type':Sequelize[_0x0a6b('0x14')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0a6b('0x14')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0a6b('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x0a6b('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x0a6b('0x14')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0a6b('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0a6b('0x14')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0a6b('0xe')],'allowNull':!![],'defaultValue':null,'comment':_0x0a6b('0x15')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x0a6b('0x16'),'set':function(_0x4d0e3b){if(!_0x4d0e3b)this[_0x0a6b('0x17')](_0x0a6b('0x18'),null);this[_0x0a6b('0x17')](_0x0a6b('0x19'),_0x4d0e3b);}}};
\ No newline at end of file
+var _0x15ef=['setDataValue','mandatoryDisposition','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','7200','9600','14400','2400','4800','INTEGER','SIP','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x59054f,_0x154a28){var _0xe391c0=function(_0x13ad54){while(--_0x13ad54){_0x59054f['push'](_0x59054f['shift']());}};_0xe391c0(++_0x154a28);}(_0x15ef,0x80));var _0xf15e=function(_0x5f2be7,_0x55ae49){_0x5f2be7=_0x5f2be7-0x0;var _0x2e5a50=_0x15ef[_0x5f2be7];return _0x2e5a50;};'use strict';var Sequelize=require('sequelize');module[_0xf15e('0x0')]={'name':{'type':Sequelize[_0xf15e('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize[_0xf15e('0x2')](_0xf15e('0x3'),'no'),'defaultValue':_0xf15e('0x3')},'headerinfo':{'type':Sequelize[_0xf15e('0x1')],'defaultValue':_0xf15e('0x4')},'localstationid':{'type':Sequelize['STRING'],'unique':_0xf15e('0x5')},'minrate':{'type':Sequelize[_0xf15e('0x2')]('2400','4800',_0xf15e('0x6'),_0xf15e('0x7'),'12000',_0xf15e('0x8')),'defaultValue':'4800'},'maxrate':{'type':Sequelize[_0xf15e('0x2')](_0xf15e('0x9'),_0xf15e('0xa'),_0xf15e('0x6'),'9600','12000','14400'),'defaultValue':_0xf15e('0x8')},'modem':{'type':Sequelize[_0xf15e('0x1')],'defaultValue':'v17,v27,v29'},'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[_0xf15e('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xf15e('0x2')](_0xf15e('0xc'),'IAX',_0xf15e('0xd'),_0xf15e('0xe')),'defaultValue':_0xf15e('0xc')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xf15e('0xf')],'defaultValue':function(){return _0xf15e('0x10');}},'notificationSound':{'type':Sequelize[_0xf15e('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf15e('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf15e('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0xf15e('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf15e('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf15e('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf15e('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf15e('0xb')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xf15e('0x11')],'defaultValue':![],'comment':_0xf15e('0x12'),'set':function(_0x45e418){if(!_0x45e418)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0xf15e('0x13')](_0xf15e('0x14'),_0x45e418);}}};
\ No newline at end of file
index 4a3a4b5..80b11ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa30=['message','result','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','reject','save','update','then','get','FaxAccounts','UserProfileResource','destroy','name','index','Pause','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','FaxAccount','include','findAll','rows','show','params','mandatoryDispositionPause','length','options','find','catch','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','FaxAccountId','Disposition','create','findOne','hasOwnProperty','includeAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addInteraction','FaxInteraction','CmContact','User','Owner','internal','Tag','Tags','color','tag','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','priority','stack','send','getApplications','context','from-voip-provider','exten','localstationid','app','system','description','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','gateway','headerinfo','maxrate','minrate','t38timeout','FAXOPT(','Wait','ReceiveFax','updateAccountApplications','transaction','VoiceExtension','tech','createdAt','updatedAt','TrunkId','findById','$gte','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','DESC','attachments','root','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List','Contacts','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','spread','ContactId','dataValues','SendFaxRpc,\x20%s','addAgents','omit','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','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','redis','defaults','localhost','register','jayson/promise','http','client','request','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x203296,_0x2906cb){var _0x57df2c=function(_0x5160ee){while(--_0x5160ee){_0x203296['push'](_0x203296['shift']());}};_0x57df2c(++_0x2906cb);}(_0xfa30,0x164));var _0x0fa3=function(_0x38b59d,_0x32e8f9){_0x38b59d=_0x38b59d-0x0;var _0x45d027=_0xfa30[_0x38b59d];return _0x45d027;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0fa3('0x0'));var zipdir=require(_0x0fa3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0fa3('0x2'));var moment=require(_0x0fa3('0x3'));var BPromise=require(_0x0fa3('0x4'));var Mustache=require(_0x0fa3('0x5'));var util=require(_0x0fa3('0x6'));var path=require(_0x0fa3('0x7'));var sox=require(_0x0fa3('0x8'));var csv=require(_0x0fa3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0fa3('0xa'));var _=require(_0x0fa3('0xb'));var squel=require('squel');var crypto=require(_0x0fa3('0xc'));var jsforce=require(_0x0fa3('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x0fa3('0x9'));var querystring=require(_0x0fa3('0xe'));var Papa=require(_0x0fa3('0xf'));var Redis=require(_0x0fa3('0x10'));var authService=require(_0x0fa3('0x11'));var qs=require(_0x0fa3('0x12'));var as=require(_0x0fa3('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0fa3('0x14'))(_0x0fa3('0x15'));var utils=require(_0x0fa3('0x16'));var config=require(_0x0fa3('0x17'));var licenseUtil=require(_0x0fa3('0x18'));var db=require(_0x0fa3('0x19'))['db'];config[_0x0fa3('0x1a')]=_[_0x0fa3('0x1b')](config['redis'],{'host':_0x0fa3('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0fa3('0x1a')]));require('./faxAccount.socket')[_0x0fa3('0x1d')](socket);var jayson=require(_0x0fa3('0x1e'));var client=jayson['client'][_0x0fa3('0x1f')]({'port':0x232c});var client9002=jayson[_0x0fa3('0x20')][_0x0fa3('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x7126fc,_0x514c77,_0x3c5104,_0xb8c3bc){return new BPromise(function(_0x2cb23c,_0x4f00a8){var _0x494a77=_0xb8c3bc||client;return _0x494a77[_0x0fa3('0x21')](_0x7126fc,_0x3c5104)['then'](function(_0x47adcf){logger[_0x0fa3('0x22')](_0x0fa3('0x23'),_0x514c77,'request\x20sent');logger[_0x0fa3('0x24')](_0x0fa3('0x25'),_0x514c77,_0x0fa3('0x26'),JSON[_0x0fa3('0x27')](_0x47adcf));if(_0x47adcf[_0x0fa3('0x28')]){if(_0x47adcf[_0x0fa3('0x28')][_0x0fa3('0x29')]===0x1f4){logger[_0x0fa3('0x28')](_0x0fa3('0x23'),_0x514c77,_0x47adcf[_0x0fa3('0x28')][_0x0fa3('0x2a')]);return _0x4f00a8(_0x47adcf[_0x0fa3('0x28')][_0x0fa3('0x2a')]);}logger['error'](_0x0fa3('0x23'),_0x514c77,_0x47adcf[_0x0fa3('0x28')][_0x0fa3('0x2a')]);return _0x2cb23c(_0x47adcf[_0x0fa3('0x28')]['message']);}else{logger[_0x0fa3('0x22')](_0x0fa3('0x23'),_0x514c77,_0x0fa3('0x26'));_0x2cb23c(_0x47adcf[_0x0fa3('0x2b')]['message']);}})['catch'](function(_0x1def18){logger[_0x0fa3('0x28')](_0x0fa3('0x23'),_0x514c77,_0x1def18);_0x4f00a8(_0x1def18);});});}function respondWithStatusCode(_0x48149b,_0x504a3a){_0x504a3a=_0x504a3a||0xcc;return function(_0x2eb15d){if(_0x2eb15d){return _0x48149b[_0x0fa3('0x2c')](_0x504a3a);}return _0x48149b[_0x0fa3('0x2d')](_0x504a3a)[_0x0fa3('0x2e')]();};}function respondWithResult(_0x5e47fb,_0x57d877){_0x57d877=_0x57d877||0xc8;return function(_0x1796f4){if(_0x1796f4){return _0x5e47fb[_0x0fa3('0x2d')](_0x57d877)['json'](_0x1796f4);}};}function respondWithFilteredResult(_0x3a8bab,_0x3d1e67){return function(_0x180543){if(_0x180543){var _0x1193ec=typeof _0x3d1e67['offset']===_0x0fa3('0x2f')&&typeof _0x3d1e67[_0x0fa3('0x30')]===_0x0fa3('0x2f');var _0xefe58d=_0x180543[_0x0fa3('0x31')];var _0x1285da=_0x1193ec?0x0:_0x3d1e67['offset'];var _0x22906d=_0x1193ec?_0x180543[_0x0fa3('0x31')]:_0x3d1e67[_0x0fa3('0x32')]+_0x3d1e67[_0x0fa3('0x30')];var _0x1da132;if(_0x22906d>=_0xefe58d){_0x22906d=_0xefe58d;_0x1da132=0xc8;}else{_0x1da132=0xce;}_0x3a8bab[_0x0fa3('0x2d')](_0x1da132);return _0x3a8bab[_0x0fa3('0x33')](_0x0fa3('0x34'),_0x1285da+'-'+_0x22906d+'/'+_0xefe58d)[_0x0fa3('0x35')](_0x180543);}return null;};}function patchUpdates(_0x3450f8){return function(_0x4c0427){try{jsonpatch['apply'](_0x4c0427,_0x3450f8,!![]);}catch(_0xb89a17){return BPromise[_0x0fa3('0x36')](_0xb89a17);}return _0x4c0427[_0x0fa3('0x37')]();};}function saveUpdates(_0x5327a5,_0x5627a9){return function(_0xec5402){if(_0xec5402){return _0xec5402[_0x0fa3('0x38')](_0x5327a5)['then'](function(_0x27218c){return _0x27218c;});}return null;};}function removeEntity(_0x404d8a,_0x49a327){return function(_0x561435){if(_0x561435){return _0x561435['destroy']()[_0x0fa3('0x39')](function(){var _0x33ad57=_0x561435[_0x0fa3('0x3a')]({'plain':!![]});var _0x449102=_0x0fa3('0x3b');return db[_0x0fa3('0x3c')][_0x0fa3('0x3d')]({'where':{'type':_0x449102,'resourceId':_0x33ad57['id']}})[_0x0fa3('0x39')](function(){return _0x561435;});})[_0x0fa3('0x39')](function(){_0x404d8a[_0x0fa3('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x181e63,_0x4ca569){return function(_0x5d2619){if(!_0x5d2619){_0x181e63['sendStatus'](0x194);}return _0x5d2619;};}function handleError(_0x5a763e,_0x12c203){_0x12c203=_0x12c203||0x1f4;return function(_0x2f5b6e){logger[_0x0fa3('0x28')](_0x2f5b6e['stack']);if(_0x2f5b6e[_0x0fa3('0x3e')]){delete _0x2f5b6e[_0x0fa3('0x3e')];}_0x5a763e[_0x0fa3('0x2d')](_0x12c203)['send'](_0x2f5b6e);};}exports[_0x0fa3('0x3f')]=function(_0x1bfca5,_0x53c26a){var _0x4cd607={'include':[{'model':db[_0x0fa3('0x40')],'as':'mandatoryDispositionPause'}]},_0x4575b0={},_0x4b0aed={'count':0x0,'rows':[]};var _0x4ce892=_[_0x0fa3('0x41')](db['FaxAccount'][_0x0fa3('0x42')],function(_0x2d37d1){return{'name':_0x2d37d1[_0x0fa3('0x43')],'type':_0x2d37d1['type'][_0x0fa3('0x44')]};});_0x4575b0[_0x0fa3('0x45')]=_[_0x0fa3('0x41')](_0x4ce892,_0x0fa3('0x3e'));_0x4575b0['query']=_[_0x0fa3('0x46')](_0x1bfca5[_0x0fa3('0x47')]);_0x4575b0['filters']=_[_0x0fa3('0x48')](_0x4575b0['model'],_0x4575b0['query']);_0x4cd607[_0x0fa3('0x49')]=_[_0x0fa3('0x48')](_0x4575b0[_0x0fa3('0x45')],qs[_0x0fa3('0x4a')](_0x1bfca5[_0x0fa3('0x47')][_0x0fa3('0x4a')]));_0x4cd607[_0x0fa3('0x49')]=_0x4cd607[_0x0fa3('0x49')]['length']?_0x4cd607[_0x0fa3('0x49')]:_0x4575b0[_0x0fa3('0x45')];if(!_0x1bfca5['query']['hasOwnProperty'](_0x0fa3('0x4b'))){_0x4cd607['limit']=qs['limit'](_0x1bfca5['query']['limit']);_0x4cd607['offset']=qs[_0x0fa3('0x32')](_0x1bfca5['query'][_0x0fa3('0x32')]);}_0x4cd607[_0x0fa3('0x4c')]=qs[_0x0fa3('0x4d')](_0x1bfca5[_0x0fa3('0x47')][_0x0fa3('0x4d')]);_0x4cd607[_0x0fa3('0x4e')]=qs[_0x0fa3('0x4f')](_[_0x0fa3('0x50')](_0x1bfca5[_0x0fa3('0x47')],_0x4575b0['filters']),_0x4ce892);if(_0x1bfca5[_0x0fa3('0x47')][_0x0fa3('0x51')]){_0x4cd607['where']=_['merge'](_0x4cd607[_0x0fa3('0x4e')],{'$or':_[_0x0fa3('0x41')](_0x4ce892,function(_0x6c78ae){if(_0x6c78ae[_0x0fa3('0x52')]!==_0x0fa3('0x53')){var _0x1d92d8={};_0x1d92d8[_0x6c78ae[_0x0fa3('0x3e')]]={'$like':'%'+_0x1bfca5[_0x0fa3('0x47')][_0x0fa3('0x51')]+'%'};return _0x1d92d8;}})});}_0x4cd607=_[_0x0fa3('0x54')]({},_0x4cd607,_0x1bfca5['options']);var _0x55216b={'where':_0x4cd607[_0x0fa3('0x4e')]};return db[_0x0fa3('0x55')][_0x0fa3('0x31')](_0x55216b)[_0x0fa3('0x39')](function(_0x4f831f){_0x4b0aed[_0x0fa3('0x31')]=_0x4f831f;if(_0x1bfca5['query']['includeAll']){_0x4cd607[_0x0fa3('0x56')]=[{'all':!![]}];}return db[_0x0fa3('0x55')][_0x0fa3('0x57')](_0x4cd607);})['then'](function(_0x81e4f7){_0x4b0aed[_0x0fa3('0x58')]=_0x81e4f7;return _0x4b0aed;})['then'](respondWithFilteredResult(_0x53c26a,_0x4cd607))['catch'](handleError(_0x53c26a,null));};exports[_0x0fa3('0x59')]=function(_0x3bf3d5,_0x46c5eb){var _0x2455a4={'raw':![],'where':{'id':_0x3bf3d5[_0x0fa3('0x5a')]['id']},'include':[{'model':db[_0x0fa3('0x40')],'as':_0x0fa3('0x5b')}]},_0x375a07={};_0x375a07[_0x0fa3('0x45')]=_[_0x0fa3('0x46')](db['FaxAccount'][_0x0fa3('0x42')]);_0x375a07['query']=_['keys'](_0x3bf3d5[_0x0fa3('0x47')]);_0x375a07[_0x0fa3('0x4f')]=_['intersection'](_0x375a07['model'],_0x375a07['query']);_0x2455a4[_0x0fa3('0x49')]=_[_0x0fa3('0x48')](_0x375a07['model'],qs[_0x0fa3('0x4a')](_0x3bf3d5[_0x0fa3('0x47')][_0x0fa3('0x4a')]));_0x2455a4[_0x0fa3('0x49')]=_0x2455a4[_0x0fa3('0x49')][_0x0fa3('0x5c')]?_0x2455a4['attributes']:_0x375a07['model'];if(_0x3bf3d5[_0x0fa3('0x47')]['includeAll']){_0x2455a4[_0x0fa3('0x56')]=[{'all':!![]}];}_0x2455a4=_[_0x0fa3('0x54')]({},_0x2455a4,_0x3bf3d5[_0x0fa3('0x5d')]);return db[_0x0fa3('0x55')][_0x0fa3('0x5e')](_0x2455a4)[_0x0fa3('0x39')](handleEntityNotFound(_0x46c5eb,null))['then'](respondWithResult(_0x46c5eb,null))[_0x0fa3('0x5f')](handleError(_0x46c5eb,null));};exports['create']=function(_0x4d3e5d,_0x4699bd){return db[_0x0fa3('0x55')]['create'](_0x4d3e5d['body'],{})[_0x0fa3('0x39')](function(_0x81e308){var _0x6b1730=_0x4d3e5d[_0x0fa3('0x60')][_0x0fa3('0x3a')]({'plain':!![]});if(!_0x6b1730)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x6b1730['role']===_0x0fa3('0x60')){var _0x170cca=_0x81e308[_0x0fa3('0x3a')]({'plain':!![]});var _0x179e66=_0x0fa3('0x3b');return db[_0x0fa3('0x61')][_0x0fa3('0x5e')]({'where':{'name':_0x179e66,'userProfileId':_0x6b1730[_0x0fa3('0x62')]},'raw':!![]})[_0x0fa3('0x39')](function(_0x426f91){if(_0x426f91&&_0x426f91['autoAssociation']===0x0){return db[_0x0fa3('0x3c')]['create']({'name':_0x170cca['name'],'resourceId':_0x170cca['id'],'type':_0x426f91['name'],'sectionId':_0x426f91['id']},{})[_0x0fa3('0x39')](function(){return _0x81e308;});}else{return _0x81e308;}})[_0x0fa3('0x5f')](function(_0x496a43){logger[_0x0fa3('0x28')](_0x0fa3('0x63'),_0x496a43);throw _0x496a43;});}return _0x81e308;})['then'](respondWithResult(_0x4699bd,0xc9))[_0x0fa3('0x5f')](handleError(_0x4699bd,null));};exports[_0x0fa3('0x38')]=function(_0x4f2a07,_0x19d950){if(_0x4f2a07['body']['id']){delete _0x4f2a07[_0x0fa3('0x64')]['id'];}return db[_0x0fa3('0x55')]['find']({'where':{'id':_0x4f2a07[_0x0fa3('0x5a')]['id']},'include':[{'model':db[_0x0fa3('0x40')],'as':_0x0fa3('0x5b')}]})['then'](handleEntityNotFound(_0x19d950,null))[_0x0fa3('0x39')](saveUpdates(_0x4f2a07[_0x0fa3('0x64')],null))[_0x0fa3('0x39')](respondWithResult(_0x19d950,null))[_0x0fa3('0x5f')](handleError(_0x19d950,null));};exports['destroy']=function(_0x10f634,_0x228b49){return db['FaxAccount']['find']({'where':{'id':_0x10f634[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x228b49,null))['then'](removeEntity(_0x228b49,null))['catch'](handleError(_0x228b49,null));};exports[_0x0fa3('0x65')]=function(_0x818684,_0x38b7a5){return db[_0x0fa3('0x55')]['describe']()['then'](respondWithResult(_0x38b7a5,null))[_0x0fa3('0x5f')](handleError(_0x38b7a5,null));};exports[_0x0fa3('0x66')]=function(_0x586521,_0x88a2bf,_0x4397e6){if(_0x586521[_0x0fa3('0x64')]['id']){delete _0x586521['body']['id'];}return db[_0x0fa3('0x55')][_0x0fa3('0x5e')]({'where':{'id':_0x586521[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x88a2bf,null))[_0x0fa3('0x39')](function(_0x44b6f9){if(_0x44b6f9){_0x586521[_0x0fa3('0x64')][_0x0fa3('0x67')]=_0x44b6f9['id'];return db[_0x0fa3('0x68')][_0x0fa3('0x69')](_0x586521[_0x0fa3('0x64')]);}})['then'](respondWithResult(_0x88a2bf,null))[_0x0fa3('0x5f')](handleError(_0x88a2bf,null));};exports['getDispositions']=function(_0x565b04,_0x43cd40,_0x3262c1){var _0xd6f8f0={'raw':![],'where':{}};var _0xbe6118={};var _0x3a4adb={'count':0x0,'rows':[]};return db[_0x0fa3('0x55')][_0x0fa3('0x6a')]({'where':{'id':_0x565b04[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x43cd40,null))[_0x0fa3('0x39')](function(_0x2eeb00){if(_0x2eeb00){_0xbe6118[_0x0fa3('0x45')]=_['keys'](db[_0x0fa3('0x68')][_0x0fa3('0x42')]);_0xbe6118['query']=_[_0x0fa3('0x46')](_0x565b04[_0x0fa3('0x47')]);_0xbe6118[_0x0fa3('0x4f')]=_[_0x0fa3('0x48')](_0xbe6118[_0x0fa3('0x45')],_0xbe6118[_0x0fa3('0x47')]);_0xd6f8f0[_0x0fa3('0x49')]=_[_0x0fa3('0x48')](_0xbe6118[_0x0fa3('0x45')],qs['fields'](_0x565b04[_0x0fa3('0x47')][_0x0fa3('0x4a')]));_0xd6f8f0[_0x0fa3('0x49')]=_0xd6f8f0[_0x0fa3('0x49')][_0x0fa3('0x5c')]?_0xd6f8f0['attributes']:_0xbe6118[_0x0fa3('0x45')];if(!_0x565b04['query'][_0x0fa3('0x6b')](_0x0fa3('0x4b'))){_0xd6f8f0[_0x0fa3('0x30')]=qs['limit'](_0x565b04[_0x0fa3('0x47')][_0x0fa3('0x30')]);_0xd6f8f0[_0x0fa3('0x32')]=qs[_0x0fa3('0x32')](_0x565b04[_0x0fa3('0x47')][_0x0fa3('0x32')]);}_0xd6f8f0['order']=qs[_0x0fa3('0x4d')](_0x565b04[_0x0fa3('0x47')][_0x0fa3('0x4d')]);_0xd6f8f0[_0x0fa3('0x4e')]=qs['filters'](_['pick'](_0x565b04[_0x0fa3('0x47')],_0xbe6118[_0x0fa3('0x4f')]));_0xd6f8f0[_0x0fa3('0x4e')][_0x0fa3('0x67')]=_0x2eeb00['id'];if(_0x565b04[_0x0fa3('0x47')][_0x0fa3('0x51')]){_0xd6f8f0['where']=_[_0x0fa3('0x54')](_0xd6f8f0['where'],{'$or':_[_0x0fa3('0x41')](_0xd6f8f0[_0x0fa3('0x49')],function(_0x4d1bbc){var _0x272d3d={};_0x272d3d[_0x4d1bbc]={'$like':'%'+_0x565b04[_0x0fa3('0x47')]['filter']+'%'};return _0x272d3d;})});}_0xd6f8f0=_[_0x0fa3('0x54')]({},_0xd6f8f0,_0x565b04[_0x0fa3('0x5d')]);return db[_0x0fa3('0x68')][_0x0fa3('0x31')]({'where':_0xd6f8f0[_0x0fa3('0x4e')]})[_0x0fa3('0x39')](function(_0x59d95a){_0x3a4adb[_0x0fa3('0x31')]=_0x59d95a;if(_0x565b04[_0x0fa3('0x47')][_0x0fa3('0x6c')]){_0xd6f8f0['include']=[{'all':!![]}];}return db['Disposition'][_0x0fa3('0x57')](_0xd6f8f0);})['then'](function(_0x2a2d57){_0x3a4adb[_0x0fa3('0x58')]=_0x2a2d57;return _0x3a4adb;});}})[_0x0fa3('0x39')](respondWithFilteredResult(_0x43cd40,_0xd6f8f0))[_0x0fa3('0x5f')](handleError(_0x43cd40,null));};exports[_0x0fa3('0x6d')]=function(_0x539228,_0x501aed,_0x55de6f){return db[_0x0fa3('0x55')][_0x0fa3('0x5e')]({'where':{'id':_0x539228[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x501aed,null))['then'](function(_0x4b431d){if(_0x4b431d){return _0x4b431d['removeDispositions'](_0x539228[_0x0fa3('0x47')]['ids']);}})[_0x0fa3('0x39')](respondWithStatusCode(_0x501aed,null))[_0x0fa3('0x5f')](handleError(_0x501aed,null));};exports[_0x0fa3('0x6e')]=function(_0x30e383,_0x53febb,_0x57fb78){if(_0x30e383[_0x0fa3('0x64')]['id']){delete _0x30e383[_0x0fa3('0x64')]['id'];}return db[_0x0fa3('0x55')][_0x0fa3('0x5e')]({'where':{'id':_0x30e383[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x53febb,null))[_0x0fa3('0x39')](function(_0x280fd8){if(_0x280fd8){_0x30e383[_0x0fa3('0x64')][_0x0fa3('0x67')]=_0x280fd8['id'];return db[_0x0fa3('0x6f')]['create'](_0x30e383[_0x0fa3('0x64')]);}})[_0x0fa3('0x39')](respondWithResult(_0x53febb,null))[_0x0fa3('0x5f')](handleError(_0x53febb,null));};exports[_0x0fa3('0x70')]=function(_0x27567,_0x153618,_0x8f5a9d){var _0x110e93={'raw':![],'where':{}};var _0x55acc0={};var _0x283041={'count':0x0,'rows':[]};return db[_0x0fa3('0x55')][_0x0fa3('0x6a')]({'where':{'id':_0x27567['params']['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x153618,null))['then'](function(_0x3de1bc){if(_0x3de1bc){_0x55acc0[_0x0fa3('0x45')]=_['keys'](db[_0x0fa3('0x6f')][_0x0fa3('0x42')]);_0x55acc0[_0x0fa3('0x47')]=_[_0x0fa3('0x46')](_0x27567['query']);_0x55acc0[_0x0fa3('0x4f')]=_[_0x0fa3('0x48')](_0x55acc0[_0x0fa3('0x45')],_0x55acc0[_0x0fa3('0x47')]);_0x110e93[_0x0fa3('0x49')]=_[_0x0fa3('0x48')](_0x55acc0[_0x0fa3('0x45')],qs[_0x0fa3('0x4a')](_0x27567[_0x0fa3('0x47')]['fields']));_0x110e93['attributes']=_0x110e93[_0x0fa3('0x49')][_0x0fa3('0x5c')]?_0x110e93[_0x0fa3('0x49')]:_0x55acc0[_0x0fa3('0x45')];if(!_0x27567[_0x0fa3('0x47')][_0x0fa3('0x6b')](_0x0fa3('0x4b'))){_0x110e93[_0x0fa3('0x30')]=qs[_0x0fa3('0x30')](_0x27567[_0x0fa3('0x47')]['limit']);_0x110e93[_0x0fa3('0x32')]=qs['offset'](_0x27567['query'][_0x0fa3('0x32')]);}_0x110e93[_0x0fa3('0x4c')]=qs[_0x0fa3('0x4d')](_0x27567['query'][_0x0fa3('0x4d')]);_0x110e93[_0x0fa3('0x4e')]=qs[_0x0fa3('0x4f')](_['pick'](_0x27567[_0x0fa3('0x47')],_0x55acc0['filters']));_0x110e93[_0x0fa3('0x4e')][_0x0fa3('0x67')]=_0x3de1bc['id'];if(_0x27567[_0x0fa3('0x47')]['filter']){_0x110e93[_0x0fa3('0x4e')]=_[_0x0fa3('0x54')](_0x110e93[_0x0fa3('0x4e')],{'$or':_[_0x0fa3('0x41')](_0x110e93[_0x0fa3('0x49')],function(_0x2d6792){var _0x4da8e2={};_0x4da8e2[_0x2d6792]={'$like':'%'+_0x27567[_0x0fa3('0x47')][_0x0fa3('0x51')]+'%'};return _0x4da8e2;})});}_0x110e93=_[_0x0fa3('0x54')]({},_0x110e93,_0x27567[_0x0fa3('0x5d')]);return db[_0x0fa3('0x6f')][_0x0fa3('0x31')]({'where':_0x110e93[_0x0fa3('0x4e')]})[_0x0fa3('0x39')](function(_0x30826e){_0x283041[_0x0fa3('0x31')]=_0x30826e;if(_0x27567[_0x0fa3('0x47')][_0x0fa3('0x6c')]){_0x110e93['include']=[{'all':!![]}];}return db[_0x0fa3('0x6f')]['findAll'](_0x110e93);})[_0x0fa3('0x39')](function(_0x594a99){_0x283041['rows']=_0x594a99;return _0x283041;});}})[_0x0fa3('0x39')](respondWithFilteredResult(_0x153618,_0x110e93))['catch'](handleError(_0x153618,null));};exports['removeAnswers']=function(_0x596afb,_0x31eb20,_0x4929af){return db['FaxAccount']['find']({'where':{'id':_0x596afb[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x31eb20,null))['then'](function(_0x3bb848){if(_0x3bb848){return _0x3bb848[_0x0fa3('0x71')](_0x596afb['query'][_0x0fa3('0x72')]);}})[_0x0fa3('0x39')](respondWithStatusCode(_0x31eb20,null))[_0x0fa3('0x5f')](handleError(_0x31eb20,null));};exports[_0x0fa3('0x73')]=function(_0x1555cb,_0x41ba4e,_0x30cb12){return db[_0x0fa3('0x74')][_0x0fa3('0x5e')]({'where':{'id':_0x1555cb[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x41ba4e,null))['then'](function(_0x459a4c){if(_0x459a4c){return _0x459a4c[_0x0fa3('0x73')](_0x1555cb['body'][_0x0fa3('0x72')],_['omit'](_0x1555cb[_0x0fa3('0x64')],[_0x0fa3('0x72'),'id'])||{});}})[_0x0fa3('0x39')](respondWithResult(_0x41ba4e,null))['catch'](handleError(_0x41ba4e,null));};exports['getInteractions']=function(_0x68d23f,_0x26b13c,_0x76f6f7){var _0x1c4587={'raw':![],'where':{}};var _0x45b7a2={};var _0x26b1d3={'count':0x0,'rows':[]};return db[_0x0fa3('0x55')][_0x0fa3('0x6a')]({'where':{'id':_0x68d23f[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x26b13c,null))[_0x0fa3('0x39')](function(_0xfdc441){if(_0xfdc441){_0x45b7a2['model']=_[_0x0fa3('0x46')](db[_0x0fa3('0x74')]['rawAttributes']);_0x45b7a2[_0x0fa3('0x47')]=_[_0x0fa3('0x46')](_0x68d23f[_0x0fa3('0x47')]);_0x45b7a2[_0x0fa3('0x4f')]=_[_0x0fa3('0x48')](_0x45b7a2[_0x0fa3('0x45')],_0x45b7a2[_0x0fa3('0x47')]);_0x1c4587['attributes']=_[_0x0fa3('0x48')](_0x45b7a2[_0x0fa3('0x45')],qs['fields'](_0x68d23f[_0x0fa3('0x47')][_0x0fa3('0x4a')]));_0x1c4587['attributes']=_0x1c4587[_0x0fa3('0x49')][_0x0fa3('0x5c')]?_0x1c4587[_0x0fa3('0x49')]:_0x45b7a2[_0x0fa3('0x45')];if(!_0x68d23f[_0x0fa3('0x47')]['hasOwnProperty'](_0x0fa3('0x4b'))){_0x1c4587[_0x0fa3('0x30')]=qs[_0x0fa3('0x30')](_0x68d23f[_0x0fa3('0x47')][_0x0fa3('0x30')]);_0x1c4587[_0x0fa3('0x32')]=qs[_0x0fa3('0x32')](_0x68d23f['query']['offset']);}_0x1c4587[_0x0fa3('0x4c')]=qs[_0x0fa3('0x4d')](_0x68d23f['query']['sort']);_0x1c4587['where']=qs[_0x0fa3('0x4f')](_[_0x0fa3('0x50')](_0x68d23f[_0x0fa3('0x47')],_0x45b7a2[_0x0fa3('0x4f')]));_0x1c4587[_0x0fa3('0x4e')][_0x0fa3('0x67')]=_0xfdc441['id'];if(_0x68d23f[_0x0fa3('0x47')][_0x0fa3('0x51')]){_0x1c4587['where']=_['merge'](_0x1c4587['where'],{'$or':_[_0x0fa3('0x41')](_0x1c4587[_0x0fa3('0x49')],function(_0x25d18f){var _0x437077={};_0x437077[_0x25d18f]={'$like':'%'+_0x68d23f[_0x0fa3('0x47')][_0x0fa3('0x51')]+'%'};return _0x437077;})});}_0x1c4587=_[_0x0fa3('0x54')]({},_0x1c4587,_0x68d23f['options']);return db['FaxInteraction'][_0x0fa3('0x31')]({'where':_0x1c4587[_0x0fa3('0x4e')]})['then'](function(_0x479e2c){_0x26b1d3['count']=_0x479e2c;if(_0x68d23f[_0x0fa3('0x47')][_0x0fa3('0x6c')]){_0x1c4587['include']=[{'model':db[_0x0fa3('0x75')],'as':'Contact','required':![]},{'model':db[_0x0fa3('0x76')],'as':_0x0fa3('0x77'),'attributes':[_0x0fa3('0x3e'),'fullname',_0x0fa3('0x78')],'required':![]},{'model':db[_0x0fa3('0x79')],'as':_0x0fa3('0x7a'),'attributes':['id','name',_0x0fa3('0x7b')],'where':_0x68d23f[_0x0fa3('0x47')][_0x0fa3('0x7c')]?{'id':_0x68d23f[_0x0fa3('0x47')][_0x0fa3('0x7c')]}:undefined,'required':_0x68d23f[_0x0fa3('0x47')]['tag']?!![]:![]}];}return db[_0x0fa3('0x74')][_0x0fa3('0x57')](_0x1c4587);})[_0x0fa3('0x39')](function(_0x4ef82a){_0x26b1d3[_0x0fa3('0x58')]=_0x4ef82a;return _0x26b1d3;});}})[_0x0fa3('0x39')](respondWithFilteredResult(_0x26b13c,_0x1c4587))[_0x0fa3('0x5f')](handleError(_0x26b13c,null));};exports[_0x0fa3('0x7d')]=function(_0x591b80,_0x1b4087){var _0x21b529=_0x591b80[_0x0fa3('0x5a')]['id'];var _0x201ee9=_0x591b80[_0x0fa3('0x64')];var _0x1606a4=0xc8;var _0x20d48e=null;return db[_0x0fa3('0x7e')]['transaction']({'isolationLevel':db[_0x0fa3('0x7e')][_0x0fa3('0x7f')][_0x0fa3('0x80')][_0x0fa3('0x81')]},function(_0x3ff85c){return db[_0x0fa3('0x55')][_0x0fa3('0x6a')]({'where':{'id':_0x21b529},'transaction':_0x3ff85c})[_0x0fa3('0x39')](function(_0x363215){if(_0x363215){return db[_0x0fa3('0x82')]['destroy']({'where':{'FaxAccountId':_0x21b529},'transaction':_0x3ff85c})[_0x0fa3('0x39')](function(){var _0x1a786=_[_0x0fa3('0x41')](_0x201ee9,function(_0x321e97){_0x321e97[_0x0fa3('0x67')]=_0x21b529;return _0x321e97;});return db[_0x0fa3('0x82')][_0x0fa3('0x83')](_0x1a786,{'transaction':_0x3ff85c});});}else{_0x1606a4=0x194;_0x20d48e=[];}});})[_0x0fa3('0x39')](function(){if(_0x1606a4!==0x194){return db[_0x0fa3('0x82')][_0x0fa3('0x84')]({'where':{'FaxAccountId':_0x21b529},'order':_0x0fa3('0x85')})[_0x0fa3('0x39')](function(_0x2f24eb){_0x20d48e=_0x2f24eb;});}})['catch'](function(_0x18ce09){_0x1606a4=0x1f4;logger[_0x0fa3('0x28')](_0x18ce09[_0x0fa3('0x86')]);if(_0x18ce09['name']){delete _0x18ce09[_0x0fa3('0x3e')];}_0x20d48e=_0x18ce09;})['finally'](function(){if(_0x20d48e===null){_0x1b4087[_0x0fa3('0x2c')](_0x1606a4);}else{if(_0x1606a4===0x1f4){_0x1b4087[_0x0fa3('0x2d')](_0x1606a4)[_0x0fa3('0x87')](_0x20d48e);}else{_0x1b4087[_0x0fa3('0x2d')](_0x1606a4)['json'](_0x20d48e);}}});};exports['getApplications']=function(_0x5be673,_0x4273a7,_0xbb1ad2){var _0x223e34={};var _0x31e438={};var _0xf5753d;var _0xded7e6;return db['FaxAccount'][_0x0fa3('0x6a')]({'where':{'id':_0x5be673[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x4273a7,null))[_0x0fa3('0x39')](function(_0x219b3c){if(_0x219b3c){_0xf5753d=_0x219b3c;_0x31e438[_0x0fa3('0x45')]=_[_0x0fa3('0x46')](db['FaxApplication'][_0x0fa3('0x42')]);_0x31e438[_0x0fa3('0x47')]=_[_0x0fa3('0x46')](_0x5be673[_0x0fa3('0x47')]);_0x31e438[_0x0fa3('0x4f')]=_[_0x0fa3('0x48')](_0x31e438[_0x0fa3('0x45')],_0x31e438[_0x0fa3('0x47')]);_0x223e34[_0x0fa3('0x49')]=_['intersection'](_0x31e438['model'],qs[_0x0fa3('0x4a')](_0x5be673[_0x0fa3('0x47')][_0x0fa3('0x4a')]));_0x223e34[_0x0fa3('0x49')]=_0x223e34[_0x0fa3('0x49')][_0x0fa3('0x5c')]?_0x223e34[_0x0fa3('0x49')]:_0x31e438[_0x0fa3('0x45')];_0x223e34[_0x0fa3('0x4c')]=qs['sort'](_0x5be673['query'][_0x0fa3('0x4d')]);_0x223e34['where']=qs[_0x0fa3('0x4f')](_['pick'](_0x5be673[_0x0fa3('0x47')],_0x31e438[_0x0fa3('0x4f')]));if(_0x5be673['query'][_0x0fa3('0x51')]){_0x223e34[_0x0fa3('0x4e')]=_[_0x0fa3('0x54')](_0x223e34[_0x0fa3('0x4e')],{'$or':_[_0x0fa3('0x41')](_0x223e34['attributes'],function(_0x30d623){var _0x33e24d={};_0x33e24d[_0x30d623]={'$like':'%'+_0x5be673[_0x0fa3('0x47')][_0x0fa3('0x51')]+'%'};return _0x33e24d;})});}_0x223e34=_[_0x0fa3('0x54')]({},_0x223e34,_0x5be673[_0x0fa3('0x5d')]);return _0xf5753d[_0x0fa3('0x88')](_0x223e34);}})[_0x0fa3('0x39')](function(_0x42951b){if(_0x42951b){_0xded7e6=_0x42951b[_0x0fa3('0x5c')];if(!_0x5be673[_0x0fa3('0x47')][_0x0fa3('0x6b')](_0x0fa3('0x4b'))){_0x223e34['limit']=qs[_0x0fa3('0x30')](_0x5be673[_0x0fa3('0x47')][_0x0fa3('0x30')]);_0x223e34[_0x0fa3('0x32')]=qs[_0x0fa3('0x32')](_0x5be673[_0x0fa3('0x47')][_0x0fa3('0x32')]);}return _0xf5753d[_0x0fa3('0x88')](_0x223e34);}})['then'](function(_0x55dba5){if(_0x55dba5){return _0x55dba5?{'count':_0xded7e6,'rows':_0x55dba5}:null;}})[_0x0fa3('0x39')](respondWithResult(_0x4273a7,null))[_0x0fa3('0x5f')](handleError(_0x4273a7,null));};function Extension(_0x13430d,_0x6b0927,_0x1dffae,_0x5cb986){this[_0x0fa3('0x89')]=_0x0fa3('0x8a');this[_0x0fa3('0x8b')]=_0x13430d[_0x0fa3('0x8c')];this[_0x0fa3('0x8d')]=_0x5cb986;this[_0x0fa3('0x52')]=_0x0fa3('0x8e');this[_0x0fa3('0x8f')]=_0x0fa3('0x90');this[_0x0fa3('0x67')]=_0x13430d['id'];this[_0x0fa3('0x85')]=_0x6b0927;this[_0x0fa3('0x91')]=_0x1dffae;}function createExtensionsReciveFax(_0x43e556){var _0x47021f=0x1;var _0x3fc82b=[];_0x3fc82b[_0x0fa3('0x92')](new Extension(_0x43e556,_0x47021f,'',_0x0fa3('0x93')));_0x47021f+=0x1;_0x3fc82b['push'](new Extension(_0x43e556,_0x47021f,_0x0fa3('0x94'),_0x0fa3('0x95')));_0x47021f+=0x1;for(var _0x165ca9 in _0x43e556){if(_0x43e556[_0x0fa3('0x6b')](_0x165ca9)&&(_0x165ca9==='ecm'||_0x165ca9===_0x0fa3('0x8c')||_0x165ca9===_0x0fa3('0x96')||_0x165ca9==='faxdetect'||_0x165ca9===_0x0fa3('0x97')||_0x165ca9===_0x0fa3('0x98')||_0x165ca9===_0x0fa3('0x99')||_0x165ca9==='modem'||_0x165ca9===_0x0fa3('0x9a'))){_0x3fc82b[_0x0fa3('0x92')](new Extension(_0x43e556,_0x47021f,_0x0fa3('0x9b')+_0x165ca9+')='+_0x43e556[_0x165ca9],_0x0fa3('0x95')));_0x47021f+=0x1;}}_0x3fc82b['push'](new Extension(_0x43e556,_0x47021f,'6',_0x0fa3('0x9c')));_0x47021f+=0x1;_0x3fc82b['push'](new Extension(_0x43e556,_0x47021f,'/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',_0x0fa3('0x9d')));_0x47021f=0x0;return _0x3fc82b;}exports['addAccountApplications']=function(_0xeb9d56,_0x304f9e,_0x29ffcb){var _0x25413c;return db[_0x0fa3('0x7e')]['transaction'](function(_0x4e29b0){return db[_0x0fa3('0x55')]['create'](_0xeb9d56[_0x0fa3('0x64')],{'transaction':_0x4e29b0})['then'](function(_0x3aa9ec){_0x25413c=_0x3aa9ec[_0x0fa3('0x3a')]({'plain':!![]});return db['VoiceExtension'][_0x0fa3('0x83')](createExtensionsReciveFax(_0x25413c),{'transaction':_0x4e29b0});});})[_0x0fa3('0x39')](function(){return _0x25413c;})[_0x0fa3('0x39')](respondWithResult(_0x304f9e,null))[_0x0fa3('0x5f')](handleError(_0x304f9e,null));};exports[_0x0fa3('0x9e')]=function(_0x1871bc,_0x295704,_0xa3978f){var _0x23e0ff;return db[_0x0fa3('0x7e')][_0x0fa3('0x9f')](function(_0x223947){return db['FaxAccount']['update'](_0x1871bc[_0x0fa3('0x64')],{'where':{'id':_0x1871bc[_0x0fa3('0x64')]['id']},'transaction':_0x223947})['then'](function(_0x58c29b){return db[_0x0fa3('0xa0')][_0x0fa3('0x3d')]({'where':{'FaxAccountId':_0x1871bc[_0x0fa3('0x64')]['id']},'transaction':_0x223947})[_0x0fa3('0x39')](function(_0xdeb8f2){return db['VoiceExtension'][_0x0fa3('0x83')](createExtensionsReciveFax(_['omit'](_0x1871bc[_0x0fa3('0x64')],[_0x0fa3('0xa1'),_0x0fa3('0x44'),_0x0fa3('0xa2'),_0x0fa3('0xa3'),_0x0fa3('0xa4'),'ListId'])),{'transaction':_0x223947});});});})[_0x0fa3('0x39')](function(){return db[_0x0fa3('0x55')][_0x0fa3('0xa5')](_0x1871bc[_0x0fa3('0x64')]['id']);})['then'](respondWithResult(_0x295704,null))[_0x0fa3('0x5f')](handleError(_0x295704,null));};exports['getMessages']=function(_0x4a60e7,_0x4316ab,_0x17caf6){var _0x54bd72={'raw':!![],'where':{}};var _0x3b8971={};var _0x387601={'count':0x0,'rows':[]};return db[_0x0fa3('0x55')][_0x0fa3('0x6a')]({'where':{'id':_0x4a60e7[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x4316ab,null))[_0x0fa3('0x39')](function(_0x2330e6){if(_0x2330e6){_0x3b8971[_0x0fa3('0x45')]=_[_0x0fa3('0x46')](db['FaxMessage'][_0x0fa3('0x42')]);_0x3b8971[_0x0fa3('0x47')]=_[_0x0fa3('0x46')](_0x4a60e7['query']);_0x3b8971[_0x0fa3('0x4f')]=_[_0x0fa3('0x48')](_0x3b8971[_0x0fa3('0x45')],_0x3b8971['query']);_0x54bd72['attributes']=_[_0x0fa3('0x48')](_0x3b8971['model'],qs['fields'](_0x4a60e7['query'][_0x0fa3('0x4a')]));_0x54bd72[_0x0fa3('0x49')]=_0x54bd72[_0x0fa3('0x49')][_0x0fa3('0x5c')]?_0x54bd72[_0x0fa3('0x49')]:_0x3b8971[_0x0fa3('0x45')];if(!_0x4a60e7['query'][_0x0fa3('0x6b')](_0x0fa3('0x4b'))){_0x54bd72['limit']=qs[_0x0fa3('0x30')](_0x4a60e7[_0x0fa3('0x47')][_0x0fa3('0x30')]);_0x54bd72[_0x0fa3('0x32')]=qs[_0x0fa3('0x32')](_0x4a60e7[_0x0fa3('0x47')][_0x0fa3('0x32')]);}_0x54bd72[_0x0fa3('0x4c')]=qs[_0x0fa3('0x4d')](_0x4a60e7[_0x0fa3('0x47')][_0x0fa3('0x4d')]);_0x54bd72[_0x0fa3('0x4e')]=qs[_0x0fa3('0x4f')](_[_0x0fa3('0x50')](_0x4a60e7[_0x0fa3('0x47')],_0x3b8971[_0x0fa3('0x4f')]));_0x54bd72[_0x0fa3('0x4e')][_0x0fa3('0x67')]=_0x2330e6['id'];if(_0x4a60e7[_0x0fa3('0x47')][_0x0fa3('0x51')]){_0x54bd72[_0x0fa3('0x4e')]=_[_0x0fa3('0x54')](_0x54bd72[_0x0fa3('0x4e')],{'$or':_['map'](_0x54bd72['attributes'],function(_0x4deac5){var _0x5f967={};_0x5f967[_0x4deac5]={'$like':'%'+_0x4a60e7[_0x0fa3('0x47')][_0x0fa3('0x51')]+'%'};return _0x5f967;})});}if(_0x4a60e7[_0x0fa3('0x47')][_0x0fa3('0xa6')]){var _0x528ac0=_0x4a60e7[_0x0fa3('0x47')][_0x0fa3('0xa6')]['split'](',');var _0x1aaf70={};_0x1aaf70[_0x528ac0[0x0]]={'$gte':moment(_0x528ac0[0x1])[_0x0fa3('0xa7')](_0x0fa3('0xa8'))};_0x54bd72[_0x0fa3('0x4e')]=_[_0x0fa3('0x54')](_0x54bd72[_0x0fa3('0x4e')],_0x1aaf70);}_0x54bd72=_[_0x0fa3('0x54')]({},_0x54bd72,_0x4a60e7[_0x0fa3('0x5d')]);return db['FaxMessage'][_0x0fa3('0x31')]({'where':_0x54bd72['where']})[_0x0fa3('0x39')](function(_0x20b798){_0x387601[_0x0fa3('0x31')]=_0x20b798;if(_0x4a60e7['query'][_0x0fa3('0x6c')]){_0x54bd72[_0x0fa3('0x56')]=[{'all':!![]}];}return db[_0x0fa3('0xa9')]['findAll'](_0x54bd72);})[_0x0fa3('0x39')](function(_0x16d210){_0x387601[_0x0fa3('0x58')]=_0x16d210;return _0x387601;});}})[_0x0fa3('0x39')](respondWithFilteredResult(_0x4316ab,_0x54bd72))['catch'](handleError(_0x4316ab,null));};exports[_0x0fa3('0x87')]=function(_0x5e264b,_0x2a6c6e,_0x2f2525){var _0x4a56cd,_0x36ddf2={},_0x550f15;if(_0x5e264b[_0x0fa3('0x64')]['to']){_0x550f15=_0x5e264b[_0x0fa3('0x64')]['to'][0x0];}return db[_0x0fa3('0x55')]['find']({'where':{'id':_0x5e264b[_0x0fa3('0x5a')]['id']},'include':[{'model':db[_0x0fa3('0xaa')],'as':'List','include':[{'model':db[_0x0fa3('0x75')],'as':'Contacts','where':{'fax':_0x550f15},'limit':0x1,'order':[[_0x0fa3('0xa3'),_0x0fa3('0xab')]]}]}]})[_0x0fa3('0x39')](handleEntityNotFound(_0x2a6c6e,null))[_0x0fa3('0x39')](function(_0x50cced){_0x4a56cd=_0x50cced;if(_0x5e264b['body'][_0x0fa3('0xac')]&&_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xac')]['length']){for(var _0x3c479a=0x0;_0x3c479a<_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xac')]['length'];_0x3c479a+=0x1){_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xac')][_0x3c479a]={'filename':_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xac')][_0x3c479a][_0x0fa3('0x3e')],'id':_0x5e264b['body'][_0x0fa3('0xac')][_0x3c479a]['id'],'path':path['join'](config[_0x0fa3('0xad')],'server/files/attachments',_0x5e264b[_0x0fa3('0x64')]['attachments'][_0x3c479a][_0x0fa3('0xae')])};}}return respondWithRpcPromise(_0x0fa3('0xaf'),'CheckAfterSend',{'FaxAccountId':_['isNil'](_0x5e264b[_0x0fa3('0x5a')]['id'])?undefined:_0x5e264b['params']['id'],'path':_[_0x0fa3('0xb0')](_0x5e264b[_0x0fa3('0x64')]['attachments'][0x0][_0x0fa3('0x7')])?undefined:_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xac')][0x0][_0x0fa3('0x7')],'fax':_[_0x0fa3('0xb0')](_0x5e264b[_0x0fa3('0x64')]['to'][0x0])?undefined:_0x5e264b['body']['to'][0x0]},client9002);})[_0x0fa3('0x39')](function(){if(_0x4a56cd){if(_[_0x0fa3('0xb0')](_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xb1')])){_0x5e264b['body'][_0x0fa3('0xb1')]=util['format'](_0x0fa3('0xb2'),_0x4a56cd[_0x0fa3('0x3e')],_0x4a56cd[_0x0fa3('0xb3')]);}if(_0x4a56cd['List']){if(_0x4a56cd[_0x0fa3('0xb4')][_0x0fa3('0xb5')][_0x0fa3('0x5c')]){return _0x4a56cd['List'][_0x0fa3('0xb5')][0x0];}else{return db[_0x0fa3('0x75')][_0x0fa3('0x69')](_['defaults'](_0x5e264b[_0x0fa3('0x64')],{'firstName':_0x5e264b['body']['to'][0x0],'phone':_0x5e264b['body']['to'][0x0],'fax':_0x5e264b[_0x0fa3('0x64')]['to'][0x0],'ListId':_0x4a56cd[_0x0fa3('0xb6')]}));}}else{throw new Error(_0x0fa3('0xb7'));}}else{throw new Error(_0x0fa3('0xb8'));}})['then'](function(_0x2b3d97){if(_0x2b3d97){return db[_0x0fa3('0x74')]['find']({'where':{'ContactId':_0x2b3d97['id'],'closed':![],'FaxAccountId':_0x4a56cd['id']}})[_0x0fa3('0x39')](function(_0x2a9e0d){if(_0x2a9e0d){return[_0x2a9e0d,![]];}return db[_0x0fa3('0x74')]['create']({'UserId':_0x5e264b['user']['id'],'ContactId':_0x2b3d97['id'],'FaxAccountId':_0x4a56cd['id'],'fax':_0x5e264b[_0x0fa3('0x64')]['to'][0x0],'firstMsgDirection':_0x0fa3('0xb9'),'Messages':[_[_0x0fa3('0x54')](_0x5e264b['body'],{'read':![],'body':_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xac')][0x0][_0x0fa3('0xba')],'FaxAccountId':_0x4a56cd['id'],'UserId':_0x5e264b[_0x0fa3('0x60')]['id'],'ContactId':_0x2b3d97['id'],'AttachmentId':_0x5e264b['body'][_0x0fa3('0xac')][0x0]['id']})]},{'include':[{'model':db[_0x0fa3('0xa9')],'as':_0x0fa3('0xbb')}]})[_0x0fa3('0x39')](function(_0x5240dd){return[_0x5240dd,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x0fa3('0xbc')](function(_0x4736b0,_0x4049a7){if(_0x4049a7){return _0x4736b0;}return db[_0x0fa3('0xa9')][_0x0fa3('0x69')]({'direction':_0x0fa3('0xb9'),'read':![],'body':_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xac')][0x0][_0x0fa3('0xba')],'FaxAccountId':_0x4a56cd['id'],'FaxInteractionId':_0x4736b0['id'],'UserId':_0x5e264b[_0x0fa3('0x60')]['id'],'ContactId':_0x4736b0[_0x0fa3('0xbd')],'AttachmentId':_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xac')][0x0]['id']})[_0x0fa3('0x39')](function(_0x3e89d1){_0x4736b0['dataValues'][_0x0fa3('0xbb')]=[];_0x4736b0[_0x0fa3('0xbe')][_0x0fa3('0xbb')][_0x0fa3('0x92')](_0x3e89d1[_0x0fa3('0xbe')]);return _0x4736b0;});})[_0x0fa3('0x39')](function(_0x4b1e44){respondWithRpcPromise('SendFax','SendFax',{'FaxAccountId':_[_0x0fa3('0xb0')](_0x5e264b[_0x0fa3('0x5a')]['id'])?undefined:_0x5e264b[_0x0fa3('0x5a')]['id'],'path':_[_0x0fa3('0xb0')](_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xac')][0x0][_0x0fa3('0x7')])?undefined:_0x5e264b[_0x0fa3('0x64')]['attachments'][0x0]['path'],'fax':_[_0x0fa3('0xb0')](_0x5e264b['body']['to'][0x0])?undefined:_0x5e264b[_0x0fa3('0x64')]['to'][0x0],'AttachmentId':_0x5e264b[_0x0fa3('0x64')][_0x0fa3('0xac')][0x0]['id']},client9002)[_0x0fa3('0x39')](function(_0x36b630){logger['info'](_0x0fa3('0xbf'),_0x36b630);})[_0x0fa3('0x5f')](function(_0x413c63){logger['info'](_0x0fa3('0xbf'),_0x413c63);});return _0x4b1e44;})[_0x0fa3('0x39')](respondWithResult(_0x2a6c6e,null))[_0x0fa3('0x5f')](handleError(_0x2a6c6e,null));};exports[_0x0fa3('0xc0')]=function(_0x1610c5,_0x37a842,_0x36601d){return db['FaxAccount'][_0x0fa3('0x5e')]({'where':{'id':_0x1610c5[_0x0fa3('0x5a')]['id']}})['then'](handleEntityNotFound(_0x37a842,null))['then'](function(_0x3b6143){if(_0x3b6143){return _0x3b6143['addAgents'](_0x1610c5['body'][_0x0fa3('0x72')],_[_0x0fa3('0xc1')](_0x1610c5['body'],[_0x0fa3('0x72'),'id'])||{})['spread'](function(_0x24f2cd){for(var _0x4e62dd=0x0;_0x4e62dd<_0x1610c5[_0x0fa3('0x64')][_0x0fa3('0x72')][_0x0fa3('0x5c')];_0x4e62dd+=0x1){socket[_0x0fa3('0xc2')](_0x0fa3('0xc3'),{'UserId':Number(_0x1610c5[_0x0fa3('0x64')][_0x0fa3('0x72')][_0x4e62dd]),'FaxAccountId':Number(_0x1610c5[_0x0fa3('0x5a')]['id'])});}return _0x24f2cd;});}})['then'](respondWithResult(_0x37a842,null))[_0x0fa3('0x5f')](handleError(_0x37a842,null));};exports[_0x0fa3('0xc4')]=function(_0x4c420c,_0x1eb067,_0x53fb88){return db[_0x0fa3('0x55')][_0x0fa3('0x5e')]({'where':{'id':_0x4c420c[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x1eb067,null))[_0x0fa3('0x39')](function(_0x959072){if(_0x959072){return _0x959072[_0x0fa3('0xc4')](_0x4c420c['query']['ids'])[_0x0fa3('0x39')](function(){if(_['isArray'](_0x4c420c[_0x0fa3('0x47')][_0x0fa3('0x72')])){for(var _0x2f7aa3=0x0;_0x2f7aa3<_0x4c420c['query'][_0x0fa3('0x72')][_0x0fa3('0x5c')];_0x2f7aa3+=0x1){socket['emit'](_0x0fa3('0xc5'),{'UserId':Number(_0x4c420c['query'][_0x0fa3('0x72')][_0x2f7aa3]),'FaxAccountId':Number(_0x4c420c[_0x0fa3('0x5a')]['id'])});}}else{socket[_0x0fa3('0xc2')](_0x0fa3('0xc5'),{'UserId':Number(_0x4c420c['query'][_0x0fa3('0x72')]),'FaxAccountId':Number(_0x4c420c[_0x0fa3('0x5a')]['id'])});}});}})[_0x0fa3('0x39')](respondWithStatusCode(_0x1eb067,null))['catch'](handleError(_0x1eb067,null));};exports['getAgents']=function(_0x47dec4,_0x363255,_0x2ce3bb){var _0x5c2c0d={};var _0x2a1db0={};var _0x2972ad;var _0x368e1c;return db['FaxAccount'][_0x0fa3('0x6a')]({'where':{'id':_0x47dec4[_0x0fa3('0x5a')]['id']}})[_0x0fa3('0x39')](handleEntityNotFound(_0x363255,null))['then'](function(_0x1f3ae9){if(_0x1f3ae9){_0x2972ad=_0x1f3ae9;_0x2a1db0[_0x0fa3('0x45')]=_[_0x0fa3('0x46')](db[_0x0fa3('0x76')][_0x0fa3('0x42')]);_0x2a1db0[_0x0fa3('0x47')]=_[_0x0fa3('0x46')](_0x47dec4[_0x0fa3('0x47')]);_0x2a1db0[_0x0fa3('0x4f')]=_[_0x0fa3('0x48')](_0x2a1db0[_0x0fa3('0x45')],_0x2a1db0[_0x0fa3('0x47')]);_0x5c2c0d[_0x0fa3('0x49')]=_['intersection'](_0x2a1db0[_0x0fa3('0x45')],qs[_0x0fa3('0x4a')](_0x47dec4[_0x0fa3('0x47')][_0x0fa3('0x4a')]));_0x5c2c0d[_0x0fa3('0x49')]=_0x5c2c0d[_0x0fa3('0x49')]['length']?_0x5c2c0d[_0x0fa3('0x49')]:_0x2a1db0[_0x0fa3('0x45')];_0x5c2c0d[_0x0fa3('0x4c')]=qs[_0x0fa3('0x4d')](_0x47dec4[_0x0fa3('0x47')][_0x0fa3('0x4d')]);_0x5c2c0d[_0x0fa3('0x4e')]=qs[_0x0fa3('0x4f')](_[_0x0fa3('0x50')](_0x47dec4[_0x0fa3('0x47')],_0x2a1db0[_0x0fa3('0x4f')]));if(_0x47dec4[_0x0fa3('0x47')][_0x0fa3('0x51')]){_0x5c2c0d[_0x0fa3('0x4e')]=_[_0x0fa3('0x54')](_0x5c2c0d[_0x0fa3('0x4e')],{'$or':_[_0x0fa3('0x41')](_0x5c2c0d[_0x0fa3('0x49')],function(_0x6dcb77){var _0xcfb7fb={};_0xcfb7fb[_0x6dcb77]={'$like':'%'+_0x47dec4[_0x0fa3('0x47')][_0x0fa3('0x51')]+'%'};return _0xcfb7fb;})});}_0x5c2c0d=_['merge']({},_0x5c2c0d,_0x47dec4[_0x0fa3('0x5d')]);return _0x2972ad[_0x0fa3('0xc6')](_0x5c2c0d);}})[_0x0fa3('0x39')](function(_0x237729){if(_0x237729){_0x368e1c=_0x237729[_0x0fa3('0x5c')];if(!_0x47dec4[_0x0fa3('0x47')][_0x0fa3('0x6b')](_0x0fa3('0x4b'))){_0x5c2c0d[_0x0fa3('0x30')]=qs[_0x0fa3('0x30')](_0x47dec4[_0x0fa3('0x47')][_0x0fa3('0x30')]);_0x5c2c0d['offset']=qs[_0x0fa3('0x32')](_0x47dec4['query'][_0x0fa3('0x32')]);}return _0x2972ad[_0x0fa3('0xc6')](_0x5c2c0d);}})[_0x0fa3('0x39')](function(_0x297ff9){if(_0x297ff9){return _0x297ff9?{'count':_0x368e1c,'rows':_0x297ff9}:null;}})[_0x0fa3('0x39')](respondWithResult(_0x363255,null))[_0x0fa3('0x5f')](handleError(_0x363255,null));};
\ No newline at end of file
+var _0xab0b=['Send\x20Fax\x20failed','Messages','spread','out','filename','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','userFaxAccount:save','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','defaults','redis','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','request','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','status','end','json','limit','count','set','Content-Range','apply','reject','save','destroy','get','FaxAccounts','sendStatus','stack','name','send','map','FaxAccount','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','offset','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','rawAttributes','length','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','Pause','addDisposition','FaxAccountId','Disposition','getDispositions','filters','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','nolimit','findAll','removeAnswers','addInteraction','FaxInteraction','getInteractions','CmContact','Contact','User','Owner','fullname','Tag','Tags','tag','addApplications','transaction','sequelize','Transaction','READ_COMMITTED','bulkCreate','FaxApplication','findAndCountAll','priority','finally','getApplications','context','from-voip-provider','exten','app','description','Fax\x20Extension','push','Answer','CDR(type)=inbound-fax','Set','localstationid','gateway','faxdetect','minrate','modem','t38timeout','ReceiveFax','addAccountApplications','VoiceExtension','omit','tech','updatedAt','TrunkId','findById','getMessages','$gte','split','format','FaxMessage','CmList','List','Contacts','DESC','attachments','join','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax'];(function(_0x1d5352,_0x4f7974){var _0x3395c2=function(_0x1f062a){while(--_0x1f062a){_0x1d5352['push'](_0x1d5352['shift']());}};_0x3395c2(++_0x4f7974);}(_0xab0b,0x19c));var _0xbab0=function(_0x596cdd,_0x939916){_0x596cdd=_0x596cdd-0x0;var _0x5b65ab=_0xab0b[_0x596cdd];return _0x5b65ab;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbab0('0x0'));var zipdir=require(_0xbab0('0x1'));var jsonpatch=require(_0xbab0('0x2'));var rp=require(_0xbab0('0x3'));var moment=require(_0xbab0('0x4'));var BPromise=require(_0xbab0('0x5'));var Mustache=require(_0xbab0('0x6'));var util=require(_0xbab0('0x7'));var path=require(_0xbab0('0x8'));var sox=require(_0xbab0('0x9'));var csv=require(_0xbab0('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbab0('0xb'));var _=require(_0xbab0('0xc'));var squel=require(_0xbab0('0xd'));var crypto=require(_0xbab0('0xe'));var jsforce=require(_0xbab0('0xf'));var deskjs=require(_0xbab0('0x10'));var toCsv=require(_0xbab0('0xa'));var querystring=require(_0xbab0('0x11'));var Papa=require(_0xbab0('0x12'));var Redis=require(_0xbab0('0x13'));var authService=require(_0xbab0('0x14'));var qs=require(_0xbab0('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbab0('0x16'));var logger=require(_0xbab0('0x17'))(_0xbab0('0x18'));var utils=require(_0xbab0('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0xbab0('0x1a')](config[_0xbab0('0x1b')],{'host':_0xbab0('0x1c'),'port':0x18eb});var socket=require(_0xbab0('0x1d'))(new Redis(config[_0xbab0('0x1b')]));require(_0xbab0('0x1e'))[_0xbab0('0x1f')](socket);var jayson=require(_0xbab0('0x20'));var client=jayson[_0xbab0('0x21')]['http']({'port':0x232c});var client9002=jayson[_0xbab0('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1ead53,_0x219eb5,_0x459bb6,_0x15ed61){return new BPromise(function(_0x477192,_0x20b2ad){var _0x3bb2cc=_0x15ed61||client;return _0x3bb2cc[_0xbab0('0x22')](_0x1ead53,_0x459bb6)[_0xbab0('0x23')](function(_0x3805c8){logger['info'](_0xbab0('0x24'),_0x219eb5,_0xbab0('0x25'));logger[_0xbab0('0x26')](_0xbab0('0x27'),_0x219eb5,'request\x20sent',JSON[_0xbab0('0x28')](_0x3805c8));if(_0x3805c8[_0xbab0('0x29')]){if(_0x3805c8[_0xbab0('0x29')]['code']===0x1f4){logger['error'](_0xbab0('0x24'),_0x219eb5,_0x3805c8['error'][_0xbab0('0x2a')]);return _0x20b2ad(_0x3805c8['error'][_0xbab0('0x2a')]);}logger[_0xbab0('0x29')]('FaxAccount,\x20%s,\x20%s',_0x219eb5,_0x3805c8[_0xbab0('0x29')][_0xbab0('0x2a')]);return _0x477192(_0x3805c8['error']['message']);}else{logger[_0xbab0('0x2b')]('FaxAccount,\x20%s,\x20%s',_0x219eb5,_0xbab0('0x25'));_0x477192(_0x3805c8[_0xbab0('0x2c')][_0xbab0('0x2a')]);}})['catch'](function(_0x565ff2){logger[_0xbab0('0x29')](_0xbab0('0x24'),_0x219eb5,_0x565ff2);_0x20b2ad(_0x565ff2);});});}function respondWithStatusCode(_0x3609e4,_0x215ea6){_0x215ea6=_0x215ea6||0xcc;return function(_0x2256d1){if(_0x2256d1){return _0x3609e4['sendStatus'](_0x215ea6);}return _0x3609e4[_0xbab0('0x2d')](_0x215ea6)[_0xbab0('0x2e')]();};}function respondWithResult(_0x51d418,_0x362eee){_0x362eee=_0x362eee||0xc8;return function(_0x4bb03c){if(_0x4bb03c){return _0x51d418['status'](_0x362eee)[_0xbab0('0x2f')](_0x4bb03c);}};}function respondWithFilteredResult(_0x38fa4e,_0x35e67c){return function(_0x228899){if(_0x228899){var _0x379e52=typeof _0x35e67c['offset']==='undefined'&&typeof _0x35e67c[_0xbab0('0x30')]==='undefined';var _0x3271ba=_0x228899[_0xbab0('0x31')];var _0x2fa9b9=_0x379e52?0x0:_0x35e67c['offset'];var _0x26f1bc=_0x379e52?_0x228899[_0xbab0('0x31')]:_0x35e67c['offset']+_0x35e67c[_0xbab0('0x30')];var _0x419cf7;if(_0x26f1bc>=_0x3271ba){_0x26f1bc=_0x3271ba;_0x419cf7=0xc8;}else{_0x419cf7=0xce;}_0x38fa4e[_0xbab0('0x2d')](_0x419cf7);return _0x38fa4e[_0xbab0('0x32')](_0xbab0('0x33'),_0x2fa9b9+'-'+_0x26f1bc+'/'+_0x3271ba)[_0xbab0('0x2f')](_0x228899);}return null;};}function patchUpdates(_0x387f69){return function(_0x49e834){try{jsonpatch[_0xbab0('0x34')](_0x49e834,_0x387f69,!![]);}catch(_0x249035){return BPromise[_0xbab0('0x35')](_0x249035);}return _0x49e834[_0xbab0('0x36')]();};}function saveUpdates(_0x41054a,_0x145107){return function(_0x430408){if(_0x430408){return _0x430408['update'](_0x41054a)[_0xbab0('0x23')](function(_0x1e1040){return _0x1e1040;});}return null;};}function removeEntity(_0xd295ea,_0x567db6){return function(_0x4ce1ae){if(_0x4ce1ae){return _0x4ce1ae[_0xbab0('0x37')]()[_0xbab0('0x23')](function(){var _0x1af3ff=_0x4ce1ae[_0xbab0('0x38')]({'plain':!![]});var _0x2fb192=_0xbab0('0x39');return db['UserProfileResource'][_0xbab0('0x37')]({'where':{'type':_0x2fb192,'resourceId':_0x1af3ff['id']}})[_0xbab0('0x23')](function(){return _0x4ce1ae;});})[_0xbab0('0x23')](function(){_0xd295ea[_0xbab0('0x2d')](0xcc)[_0xbab0('0x2e')]();});}};}function handleEntityNotFound(_0x4fd543,_0x42fd5b){return function(_0x170342){if(!_0x170342){_0x4fd543[_0xbab0('0x3a')](0x194);}return _0x170342;};}function handleError(_0x50de66,_0x17cb50){_0x17cb50=_0x17cb50||0x1f4;return function(_0x596a7b){logger['error'](_0x596a7b[_0xbab0('0x3b')]);if(_0x596a7b[_0xbab0('0x3c')]){delete _0x596a7b['name'];}_0x50de66['status'](_0x17cb50)[_0xbab0('0x3d')](_0x596a7b);};}exports['index']=function(_0x58ea0e,_0xc9bd1){var _0x28eafc={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x32cfd7={},_0x444d76={'count':0x0,'rows':[]};var _0xf5a87f=_[_0xbab0('0x3e')](db[_0xbab0('0x3f')]['rawAttributes'],function(_0x2961ad){return{'name':_0x2961ad[_0xbab0('0x40')],'type':_0x2961ad[_0xbab0('0x41')][_0xbab0('0x42')]};});_0x32cfd7[_0xbab0('0x43')]=_[_0xbab0('0x3e')](_0xf5a87f,_0xbab0('0x3c'));_0x32cfd7['query']=_[_0xbab0('0x44')](_0x58ea0e[_0xbab0('0x45')]);_0x32cfd7['filters']=_[_0xbab0('0x46')](_0x32cfd7['model'],_0x32cfd7[_0xbab0('0x45')]);_0x28eafc[_0xbab0('0x47')]=_['intersection'](_0x32cfd7[_0xbab0('0x43')],qs[_0xbab0('0x48')](_0x58ea0e[_0xbab0('0x45')]['fields']));_0x28eafc['attributes']=_0x28eafc[_0xbab0('0x47')]['length']?_0x28eafc[_0xbab0('0x47')]:_0x32cfd7[_0xbab0('0x43')];if(!_0x58ea0e[_0xbab0('0x45')][_0xbab0('0x49')]('nolimit')){_0x28eafc[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x58ea0e[_0xbab0('0x45')]['limit']);_0x28eafc[_0xbab0('0x4a')]=qs[_0xbab0('0x4a')](_0x58ea0e['query']['offset']);}_0x28eafc[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x58ea0e[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x28eafc[_0xbab0('0x4d')]=qs['filters'](_[_0xbab0('0x4e')](_0x58ea0e['query'],_0x32cfd7['filters']),_0xf5a87f);if(_0x58ea0e[_0xbab0('0x45')][_0xbab0('0x4f')]){_0x28eafc[_0xbab0('0x4d')]=_[_0xbab0('0x50')](_0x28eafc[_0xbab0('0x4d')],{'$or':_['map'](_0xf5a87f,function(_0x5cebbb){if(_0x5cebbb['type']!==_0xbab0('0x51')){var _0x24f341={};_0x24f341[_0x5cebbb[_0xbab0('0x3c')]]={'$like':'%'+_0x58ea0e[_0xbab0('0x45')][_0xbab0('0x4f')]+'%'};return _0x24f341;}})});}_0x28eafc=_[_0xbab0('0x50')]({},_0x28eafc,_0x58ea0e['options']);var _0x4ded75={'where':_0x28eafc[_0xbab0('0x4d')]};return db[_0xbab0('0x3f')][_0xbab0('0x31')](_0x4ded75)[_0xbab0('0x23')](function(_0x1e9b60){_0x444d76[_0xbab0('0x31')]=_0x1e9b60;if(_0x58ea0e[_0xbab0('0x45')][_0xbab0('0x52')]){_0x28eafc[_0xbab0('0x53')]=[{'all':!![]}];}return db[_0xbab0('0x3f')]['findAll'](_0x28eafc);})[_0xbab0('0x23')](function(_0x2ebf5b){_0x444d76[_0xbab0('0x54')]=_0x2ebf5b;return _0x444d76;})['then'](respondWithFilteredResult(_0xc9bd1,_0x28eafc))[_0xbab0('0x55')](handleError(_0xc9bd1,null));};exports[_0xbab0('0x56')]=function(_0x1e50b0,_0x4c116d){var _0xd71cd1={'raw':![],'where':{'id':_0x1e50b0[_0xbab0('0x57')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x22a642={};_0x22a642[_0xbab0('0x43')]=_[_0xbab0('0x44')](db[_0xbab0('0x3f')][_0xbab0('0x58')]);_0x22a642['query']=_[_0xbab0('0x44')](_0x1e50b0[_0xbab0('0x45')]);_0x22a642['filters']=_['intersection'](_0x22a642[_0xbab0('0x43')],_0x22a642[_0xbab0('0x45')]);_0xd71cd1['attributes']=_[_0xbab0('0x46')](_0x22a642[_0xbab0('0x43')],qs[_0xbab0('0x48')](_0x1e50b0[_0xbab0('0x45')][_0xbab0('0x48')]));_0xd71cd1[_0xbab0('0x47')]=_0xd71cd1[_0xbab0('0x47')][_0xbab0('0x59')]?_0xd71cd1[_0xbab0('0x47')]:_0x22a642[_0xbab0('0x43')];if(_0x1e50b0[_0xbab0('0x45')][_0xbab0('0x52')]){_0xd71cd1['include']=[{'all':!![]}];}_0xd71cd1=_['merge']({},_0xd71cd1,_0x1e50b0[_0xbab0('0x5a')]);return db[_0xbab0('0x3f')][_0xbab0('0x5b')](_0xd71cd1)[_0xbab0('0x23')](handleEntityNotFound(_0x4c116d,null))[_0xbab0('0x23')](respondWithResult(_0x4c116d,null))[_0xbab0('0x55')](handleError(_0x4c116d,null));};exports[_0xbab0('0x5c')]=function(_0x2340c2,_0x9441e2){return db['FaxAccount'][_0xbab0('0x5c')](_0x2340c2[_0xbab0('0x5d')],{})[_0xbab0('0x23')](function(_0x4d5f48){var _0x5b669a=_0x2340c2[_0xbab0('0x5e')][_0xbab0('0x38')]({'plain':!![]});if(!_0x5b669a)throw new Error(_0xbab0('0x5f'));if(_0x5b669a[_0xbab0('0x60')]===_0xbab0('0x5e')){var _0x438c8f=_0x4d5f48[_0xbab0('0x38')]({'plain':!![]});var _0x465d1e=_0xbab0('0x39');return db[_0xbab0('0x61')][_0xbab0('0x5b')]({'where':{'name':_0x465d1e,'userProfileId':_0x5b669a[_0xbab0('0x62')]},'raw':!![]})[_0xbab0('0x23')](function(_0x434961){if(_0x434961&&_0x434961[_0xbab0('0x63')]===0x0){return db[_0xbab0('0x64')][_0xbab0('0x5c')]({'name':_0x438c8f[_0xbab0('0x3c')],'resourceId':_0x438c8f['id'],'type':_0x434961[_0xbab0('0x3c')],'sectionId':_0x434961['id']},{})[_0xbab0('0x23')](function(){return _0x4d5f48;});}else{return _0x4d5f48;}})[_0xbab0('0x55')](function(_0x117711){logger[_0xbab0('0x29')](_0xbab0('0x65'),_0x117711);throw _0x117711;});}return _0x4d5f48;})[_0xbab0('0x23')](respondWithResult(_0x9441e2,0xc9))[_0xbab0('0x55')](handleError(_0x9441e2,null));};exports[_0xbab0('0x66')]=function(_0x587a15,_0x2e1b5b){if(_0x587a15[_0xbab0('0x5d')]['id']){delete _0x587a15[_0xbab0('0x5d')]['id'];}return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x587a15[_0xbab0('0x57')]['id']},'include':[{'model':db[_0xbab0('0x67')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x2e1b5b,null))['then'](saveUpdates(_0x587a15[_0xbab0('0x5d')],null))[_0xbab0('0x23')](respondWithResult(_0x2e1b5b,null))[_0xbab0('0x55')](handleError(_0x2e1b5b,null));};exports[_0xbab0('0x37')]=function(_0x11ff5b,_0x8697ee){return db[_0xbab0('0x3f')]['find']({'where':{'id':_0x11ff5b[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x8697ee,null))['then'](removeEntity(_0x8697ee,null))['catch'](handleError(_0x8697ee,null));};exports['describe']=function(_0xe5e385,_0x1f8269){return db[_0xbab0('0x3f')]['describe']()[_0xbab0('0x23')](respondWithResult(_0x1f8269,null))[_0xbab0('0x55')](handleError(_0x1f8269,null));};exports[_0xbab0('0x68')]=function(_0x28ad9f,_0x2b7e26,_0x2a9288){if(_0x28ad9f[_0xbab0('0x5d')]['id']){delete _0x28ad9f[_0xbab0('0x5d')]['id'];}return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x28ad9f[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x2b7e26,null))[_0xbab0('0x23')](function(_0x3899e4){if(_0x3899e4){_0x28ad9f['body'][_0xbab0('0x69')]=_0x3899e4['id'];return db[_0xbab0('0x6a')][_0xbab0('0x5c')](_0x28ad9f[_0xbab0('0x5d')]);}})[_0xbab0('0x23')](respondWithResult(_0x2b7e26,null))[_0xbab0('0x55')](handleError(_0x2b7e26,null));};exports[_0xbab0('0x6b')]=function(_0x134477,_0x365d1e,_0x24a6a1){var _0x395169={'raw':![],'where':{}};var _0x2e7743={};var _0x2b2861={'count':0x0,'rows':[]};return db[_0xbab0('0x3f')]['findOne']({'where':{'id':_0x134477['params']['id']}})['then'](handleEntityNotFound(_0x365d1e,null))[_0xbab0('0x23')](function(_0x5bb4){if(_0x5bb4){_0x2e7743['model']=_[_0xbab0('0x44')](db[_0xbab0('0x6a')]['rawAttributes']);_0x2e7743[_0xbab0('0x45')]=_[_0xbab0('0x44')](_0x134477[_0xbab0('0x45')]);_0x2e7743[_0xbab0('0x6c')]=_[_0xbab0('0x46')](_0x2e7743['model'],_0x2e7743['query']);_0x395169[_0xbab0('0x47')]=_[_0xbab0('0x46')](_0x2e7743[_0xbab0('0x43')],qs[_0xbab0('0x48')](_0x134477[_0xbab0('0x45')]['fields']));_0x395169[_0xbab0('0x47')]=_0x395169[_0xbab0('0x47')]['length']?_0x395169[_0xbab0('0x47')]:_0x2e7743[_0xbab0('0x43')];if(!_0x134477['query'][_0xbab0('0x49')]('nolimit')){_0x395169[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x134477[_0xbab0('0x45')]['limit']);_0x395169[_0xbab0('0x4a')]=qs['offset'](_0x134477[_0xbab0('0x45')][_0xbab0('0x4a')]);}_0x395169[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x134477[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x395169[_0xbab0('0x4d')]=qs[_0xbab0('0x6c')](_[_0xbab0('0x4e')](_0x134477[_0xbab0('0x45')],_0x2e7743[_0xbab0('0x6c')]));_0x395169[_0xbab0('0x4d')][_0xbab0('0x69')]=_0x5bb4['id'];if(_0x134477[_0xbab0('0x45')]['filter']){_0x395169['where']=_[_0xbab0('0x50')](_0x395169[_0xbab0('0x4d')],{'$or':_[_0xbab0('0x3e')](_0x395169[_0xbab0('0x47')],function(_0x182eab){var _0x1005fb={};_0x1005fb[_0x182eab]={'$like':'%'+_0x134477[_0xbab0('0x45')][_0xbab0('0x4f')]+'%'};return _0x1005fb;})});}_0x395169=_[_0xbab0('0x50')]({},_0x395169,_0x134477[_0xbab0('0x5a')]);return db[_0xbab0('0x6a')][_0xbab0('0x31')]({'where':_0x395169[_0xbab0('0x4d')]})[_0xbab0('0x23')](function(_0x28e95e){_0x2b2861[_0xbab0('0x31')]=_0x28e95e;if(_0x134477[_0xbab0('0x45')][_0xbab0('0x52')]){_0x395169[_0xbab0('0x53')]=[{'all':!![]}];}return db[_0xbab0('0x6a')]['findAll'](_0x395169);})[_0xbab0('0x23')](function(_0x17726b){_0x2b2861[_0xbab0('0x54')]=_0x17726b;return _0x2b2861;});}})[_0xbab0('0x23')](respondWithFilteredResult(_0x365d1e,_0x395169))[_0xbab0('0x55')](handleError(_0x365d1e,null));};exports['removeDispositions']=function(_0x49cf92,_0x3cf4e1,_0x220ddb){return db['FaxAccount'][_0xbab0('0x5b')]({'where':{'id':_0x49cf92[_0xbab0('0x57')]['id']}})['then'](handleEntityNotFound(_0x3cf4e1,null))[_0xbab0('0x23')](function(_0x2cf19a){if(_0x2cf19a){return _0x2cf19a[_0xbab0('0x6d')](_0x49cf92[_0xbab0('0x45')][_0xbab0('0x6e')]);}})[_0xbab0('0x23')](respondWithStatusCode(_0x3cf4e1,null))[_0xbab0('0x55')](handleError(_0x3cf4e1,null));};exports[_0xbab0('0x6f')]=function(_0x425d0a,_0x3292bc,_0x18fb83){if(_0x425d0a['body']['id']){delete _0x425d0a[_0xbab0('0x5d')]['id'];}return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x425d0a[_0xbab0('0x57')]['id']}})['then'](handleEntityNotFound(_0x3292bc,null))['then'](function(_0x12617a){if(_0x12617a){_0x425d0a[_0xbab0('0x5d')][_0xbab0('0x69')]=_0x12617a['id'];return db[_0xbab0('0x70')][_0xbab0('0x5c')](_0x425d0a[_0xbab0('0x5d')]);}})[_0xbab0('0x23')](respondWithResult(_0x3292bc,null))[_0xbab0('0x55')](handleError(_0x3292bc,null));};exports[_0xbab0('0x71')]=function(_0x83e4a7,_0x9bc4a2,_0x4d665a){var _0x1f18da={'raw':![],'where':{}};var _0x241eba={};var _0x382488={'count':0x0,'rows':[]};return db['FaxAccount'][_0xbab0('0x72')]({'where':{'id':_0x83e4a7[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x9bc4a2,null))[_0xbab0('0x23')](function(_0x4ed4b6){if(_0x4ed4b6){_0x241eba[_0xbab0('0x43')]=_['keys'](db[_0xbab0('0x70')]['rawAttributes']);_0x241eba['query']=_[_0xbab0('0x44')](_0x83e4a7['query']);_0x241eba[_0xbab0('0x6c')]=_[_0xbab0('0x46')](_0x241eba['model'],_0x241eba[_0xbab0('0x45')]);_0x1f18da['attributes']=_[_0xbab0('0x46')](_0x241eba[_0xbab0('0x43')],qs['fields'](_0x83e4a7[_0xbab0('0x45')]['fields']));_0x1f18da[_0xbab0('0x47')]=_0x1f18da[_0xbab0('0x47')][_0xbab0('0x59')]?_0x1f18da[_0xbab0('0x47')]:_0x241eba['model'];if(!_0x83e4a7[_0xbab0('0x45')]['hasOwnProperty'](_0xbab0('0x73'))){_0x1f18da[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x83e4a7[_0xbab0('0x45')][_0xbab0('0x30')]);_0x1f18da[_0xbab0('0x4a')]=qs[_0xbab0('0x4a')](_0x83e4a7[_0xbab0('0x45')][_0xbab0('0x4a')]);}_0x1f18da[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x83e4a7[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x1f18da['where']=qs[_0xbab0('0x6c')](_[_0xbab0('0x4e')](_0x83e4a7['query'],_0x241eba[_0xbab0('0x6c')]));_0x1f18da[_0xbab0('0x4d')]['FaxAccountId']=_0x4ed4b6['id'];if(_0x83e4a7[_0xbab0('0x45')]['filter']){_0x1f18da[_0xbab0('0x4d')]=_[_0xbab0('0x50')](_0x1f18da[_0xbab0('0x4d')],{'$or':_['map'](_0x1f18da['attributes'],function(_0xe70f22){var _0x2c5927={};_0x2c5927[_0xe70f22]={'$like':'%'+_0x83e4a7[_0xbab0('0x45')][_0xbab0('0x4f')]+'%'};return _0x2c5927;})});}_0x1f18da=_['merge']({},_0x1f18da,_0x83e4a7['options']);return db[_0xbab0('0x70')][_0xbab0('0x31')]({'where':_0x1f18da[_0xbab0('0x4d')]})[_0xbab0('0x23')](function(_0x42f214){_0x382488[_0xbab0('0x31')]=_0x42f214;if(_0x83e4a7[_0xbab0('0x45')][_0xbab0('0x52')]){_0x1f18da[_0xbab0('0x53')]=[{'all':!![]}];}return db['CannedAnswer'][_0xbab0('0x74')](_0x1f18da);})[_0xbab0('0x23')](function(_0x334b77){_0x382488[_0xbab0('0x54')]=_0x334b77;return _0x382488;});}})[_0xbab0('0x23')](respondWithFilteredResult(_0x9bc4a2,_0x1f18da))['catch'](handleError(_0x9bc4a2,null));};exports['removeAnswers']=function(_0x2122bc,_0x33b0ff,_0x557144){return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x2122bc['params']['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x33b0ff,null))['then'](function(_0x1a5a7c){if(_0x1a5a7c){return _0x1a5a7c[_0xbab0('0x75')](_0x2122bc[_0xbab0('0x45')][_0xbab0('0x6e')]);}})[_0xbab0('0x23')](respondWithStatusCode(_0x33b0ff,null))[_0xbab0('0x55')](handleError(_0x33b0ff,null));};exports[_0xbab0('0x76')]=function(_0x24e8c9,_0x3dd0f4,_0x56bd10){return db[_0xbab0('0x77')][_0xbab0('0x5b')]({'where':{'id':_0x24e8c9['params']['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x3dd0f4,null))[_0xbab0('0x23')](function(_0xf3e69){if(_0xf3e69){return _0xf3e69['addInteraction'](_0x24e8c9[_0xbab0('0x5d')][_0xbab0('0x6e')],_['omit'](_0x24e8c9['body'],['ids','id'])||{});}})[_0xbab0('0x23')](respondWithResult(_0x3dd0f4,null))[_0xbab0('0x55')](handleError(_0x3dd0f4,null));};exports[_0xbab0('0x78')]=function(_0x12725d,_0x18f92a,_0x7b6d07){var _0x346ccf={'raw':![],'where':{}};var _0x58cbb4={};var _0x5379af={'count':0x0,'rows':[]};return db[_0xbab0('0x3f')][_0xbab0('0x72')]({'where':{'id':_0x12725d['params']['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x18f92a,null))[_0xbab0('0x23')](function(_0x10ceb5){if(_0x10ceb5){_0x58cbb4['model']=_[_0xbab0('0x44')](db[_0xbab0('0x77')]['rawAttributes']);_0x58cbb4[_0xbab0('0x45')]=_[_0xbab0('0x44')](_0x12725d[_0xbab0('0x45')]);_0x58cbb4[_0xbab0('0x6c')]=_[_0xbab0('0x46')](_0x58cbb4[_0xbab0('0x43')],_0x58cbb4[_0xbab0('0x45')]);_0x346ccf[_0xbab0('0x47')]=_[_0xbab0('0x46')](_0x58cbb4['model'],qs[_0xbab0('0x48')](_0x12725d['query'][_0xbab0('0x48')]));_0x346ccf[_0xbab0('0x47')]=_0x346ccf['attributes'][_0xbab0('0x59')]?_0x346ccf[_0xbab0('0x47')]:_0x58cbb4['model'];if(!_0x12725d[_0xbab0('0x45')][_0xbab0('0x49')](_0xbab0('0x73'))){_0x346ccf[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x12725d[_0xbab0('0x45')][_0xbab0('0x30')]);_0x346ccf[_0xbab0('0x4a')]=qs[_0xbab0('0x4a')](_0x12725d[_0xbab0('0x45')][_0xbab0('0x4a')]);}_0x346ccf[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x12725d['query'][_0xbab0('0x4c')]);_0x346ccf[_0xbab0('0x4d')]=qs[_0xbab0('0x6c')](_['pick'](_0x12725d[_0xbab0('0x45')],_0x58cbb4['filters']));_0x346ccf[_0xbab0('0x4d')][_0xbab0('0x69')]=_0x10ceb5['id'];if(_0x12725d[_0xbab0('0x45')]['filter']){_0x346ccf['where']=_[_0xbab0('0x50')](_0x346ccf[_0xbab0('0x4d')],{'$or':_[_0xbab0('0x3e')](_0x346ccf[_0xbab0('0x47')],function(_0x487643){var _0x1adb3c={};_0x1adb3c[_0x487643]={'$like':'%'+_0x12725d[_0xbab0('0x45')][_0xbab0('0x4f')]+'%'};return _0x1adb3c;})});}_0x346ccf=_[_0xbab0('0x50')]({},_0x346ccf,_0x12725d[_0xbab0('0x5a')]);return db[_0xbab0('0x77')][_0xbab0('0x31')]({'where':_0x346ccf[_0xbab0('0x4d')]})[_0xbab0('0x23')](function(_0x2255be){_0x5379af['count']=_0x2255be;if(_0x12725d[_0xbab0('0x45')][_0xbab0('0x52')]){_0x346ccf[_0xbab0('0x53')]=[{'model':db[_0xbab0('0x79')],'as':_0xbab0('0x7a'),'required':![]},{'model':db[_0xbab0('0x7b')],'as':_0xbab0('0x7c'),'attributes':[_0xbab0('0x3c'),_0xbab0('0x7d'),'internal'],'required':![]},{'model':db[_0xbab0('0x7e')],'as':_0xbab0('0x7f'),'attributes':['id','name','color'],'where':_0x12725d[_0xbab0('0x45')][_0xbab0('0x80')]?{'id':_0x12725d['query'][_0xbab0('0x80')]}:undefined,'required':_0x12725d['query'][_0xbab0('0x80')]?!![]:![]}];}return db['FaxInteraction'][_0xbab0('0x74')](_0x346ccf);})['then'](function(_0x3f141a){_0x5379af[_0xbab0('0x54')]=_0x3f141a;return _0x5379af;});}})[_0xbab0('0x23')](respondWithFilteredResult(_0x18f92a,_0x346ccf))[_0xbab0('0x55')](handleError(_0x18f92a,null));};exports[_0xbab0('0x81')]=function(_0x16c310,_0x3af3d5){var _0x34e505=_0x16c310['params']['id'];var _0x3c6d47=_0x16c310[_0xbab0('0x5d')];var _0x32d881=0xc8;var _0x4418aa=null;return db['sequelize'][_0xbab0('0x82')]({'isolationLevel':db[_0xbab0('0x83')][_0xbab0('0x84')]['ISOLATION_LEVELS'][_0xbab0('0x85')]},function(_0x57d9c6){return db['FaxAccount'][_0xbab0('0x72')]({'where':{'id':_0x34e505},'transaction':_0x57d9c6})[_0xbab0('0x23')](function(_0x2d21f9){if(_0x2d21f9){return db['FaxApplication'][_0xbab0('0x37')]({'where':{'FaxAccountId':_0x34e505},'transaction':_0x57d9c6})[_0xbab0('0x23')](function(){var _0x5dc9af=_['map'](_0x3c6d47,function(_0x87c255){_0x87c255[_0xbab0('0x69')]=_0x34e505;return _0x87c255;});return db['FaxApplication'][_0xbab0('0x86')](_0x5dc9af,{'transaction':_0x57d9c6});});}else{_0x32d881=0x194;_0x4418aa=[];}});})[_0xbab0('0x23')](function(){if(_0x32d881!==0x194){return db[_0xbab0('0x87')][_0xbab0('0x88')]({'where':{'FaxAccountId':_0x34e505},'order':_0xbab0('0x89')})[_0xbab0('0x23')](function(_0x367b68){_0x4418aa=_0x367b68;});}})[_0xbab0('0x55')](function(_0x27a341){_0x32d881=0x1f4;logger[_0xbab0('0x29')](_0x27a341[_0xbab0('0x3b')]);if(_0x27a341[_0xbab0('0x3c')]){delete _0x27a341['name'];}_0x4418aa=_0x27a341;})[_0xbab0('0x8a')](function(){if(_0x4418aa===null){_0x3af3d5[_0xbab0('0x3a')](_0x32d881);}else{if(_0x32d881===0x1f4){_0x3af3d5[_0xbab0('0x2d')](_0x32d881)[_0xbab0('0x3d')](_0x4418aa);}else{_0x3af3d5[_0xbab0('0x2d')](_0x32d881)['json'](_0x4418aa);}}});};exports['getApplications']=function(_0x34f331,_0x506e46,_0x10a14f){var _0x1027f7={};var _0x56fb2c={};var _0x17e7b3;var _0x4d7d73;return db['FaxAccount'][_0xbab0('0x72')]({'where':{'id':_0x34f331[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x506e46,null))['then'](function(_0x43e8ba){if(_0x43e8ba){_0x17e7b3=_0x43e8ba;_0x56fb2c[_0xbab0('0x43')]=_['keys'](db['FaxApplication'][_0xbab0('0x58')]);_0x56fb2c[_0xbab0('0x45')]=_[_0xbab0('0x44')](_0x34f331[_0xbab0('0x45')]);_0x56fb2c[_0xbab0('0x6c')]=_[_0xbab0('0x46')](_0x56fb2c[_0xbab0('0x43')],_0x56fb2c[_0xbab0('0x45')]);_0x1027f7[_0xbab0('0x47')]=_[_0xbab0('0x46')](_0x56fb2c[_0xbab0('0x43')],qs['fields'](_0x34f331['query']['fields']));_0x1027f7[_0xbab0('0x47')]=_0x1027f7[_0xbab0('0x47')]['length']?_0x1027f7[_0xbab0('0x47')]:_0x56fb2c[_0xbab0('0x43')];_0x1027f7[_0xbab0('0x4b')]=qs['sort'](_0x34f331[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x1027f7['where']=qs[_0xbab0('0x6c')](_[_0xbab0('0x4e')](_0x34f331['query'],_0x56fb2c[_0xbab0('0x6c')]));if(_0x34f331[_0xbab0('0x45')][_0xbab0('0x4f')]){_0x1027f7[_0xbab0('0x4d')]=_['merge'](_0x1027f7['where'],{'$or':_[_0xbab0('0x3e')](_0x1027f7[_0xbab0('0x47')],function(_0x1d7c83){var _0x5c80c9={};_0x5c80c9[_0x1d7c83]={'$like':'%'+_0x34f331[_0xbab0('0x45')][_0xbab0('0x4f')]+'%'};return _0x5c80c9;})});}_0x1027f7=_['merge']({},_0x1027f7,_0x34f331[_0xbab0('0x5a')]);return _0x17e7b3[_0xbab0('0x8b')](_0x1027f7);}})[_0xbab0('0x23')](function(_0x76b146){if(_0x76b146){_0x4d7d73=_0x76b146['length'];if(!_0x34f331[_0xbab0('0x45')][_0xbab0('0x49')](_0xbab0('0x73'))){_0x1027f7[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x34f331['query'][_0xbab0('0x30')]);_0x1027f7[_0xbab0('0x4a')]=qs[_0xbab0('0x4a')](_0x34f331[_0xbab0('0x45')][_0xbab0('0x4a')]);}return _0x17e7b3[_0xbab0('0x8b')](_0x1027f7);}})['then'](function(_0x142d9b){if(_0x142d9b){return _0x142d9b?{'count':_0x4d7d73,'rows':_0x142d9b}:null;}})[_0xbab0('0x23')](respondWithResult(_0x506e46,null))['catch'](handleError(_0x506e46,null));};function Extension(_0x10400e,_0x2441da,_0x555c1d,_0x5a3d52){this[_0xbab0('0x8c')]=_0xbab0('0x8d');this[_0xbab0('0x8e')]=_0x10400e['localstationid'];this[_0xbab0('0x8f')]=_0x5a3d52;this[_0xbab0('0x41')]='system';this[_0xbab0('0x90')]=_0xbab0('0x91');this['FaxAccountId']=_0x10400e['id'];this[_0xbab0('0x89')]=_0x2441da;this['appdata']=_0x555c1d;}function createExtensionsReciveFax(_0x4d5834){var _0x273284=0x1;var _0x20c0c3=[];_0x20c0c3[_0xbab0('0x92')](new Extension(_0x4d5834,_0x273284,'',_0xbab0('0x93')));_0x273284+=0x1;_0x20c0c3[_0xbab0('0x92')](new Extension(_0x4d5834,_0x273284,_0xbab0('0x94'),_0xbab0('0x95')));_0x273284+=0x1;for(var _0x4a4c7a in _0x4d5834){if(_0x4d5834['hasOwnProperty'](_0x4a4c7a)&&(_0x4a4c7a==='ecm'||_0x4a4c7a===_0xbab0('0x96')||_0x4a4c7a===_0xbab0('0x97')||_0x4a4c7a===_0xbab0('0x98')||_0x4a4c7a==='headerinfo'||_0x4a4c7a==='maxrate'||_0x4a4c7a===_0xbab0('0x99')||_0x4a4c7a===_0xbab0('0x9a')||_0x4a4c7a===_0xbab0('0x9b'))){_0x20c0c3[_0xbab0('0x92')](new Extension(_0x4d5834,_0x273284,'FAXOPT('+_0x4a4c7a+')='+_0x4d5834[_0x4a4c7a],_0xbab0('0x95')));_0x273284+=0x1;}}_0x20c0c3[_0xbab0('0x92')](new Extension(_0x4d5834,_0x273284,'6','Wait'));_0x273284+=0x1;_0x20c0c3[_0xbab0('0x92')](new Extension(_0x4d5834,_0x273284,'/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',_0xbab0('0x9c')));_0x273284=0x0;return _0x20c0c3;}exports[_0xbab0('0x9d')]=function(_0x3c567f,_0x390934,_0x4a4d95){var _0x362b45;return db['sequelize'][_0xbab0('0x82')](function(_0xc87c27){return db[_0xbab0('0x3f')][_0xbab0('0x5c')](_0x3c567f[_0xbab0('0x5d')],{'transaction':_0xc87c27})[_0xbab0('0x23')](function(_0x4cddc3){_0x362b45=_0x4cddc3['get']({'plain':!![]});return db[_0xbab0('0x9e')]['bulkCreate'](createExtensionsReciveFax(_0x362b45),{'transaction':_0xc87c27});});})[_0xbab0('0x23')](function(){return _0x362b45;})[_0xbab0('0x23')](respondWithResult(_0x390934,null))['catch'](handleError(_0x390934,null));};exports['updateAccountApplications']=function(_0x56320e,_0x1d87e8,_0x55590f){var _0xcdb889;return db[_0xbab0('0x83')][_0xbab0('0x82')](function(_0x47b6fc){return db[_0xbab0('0x3f')][_0xbab0('0x66')](_0x56320e[_0xbab0('0x5d')],{'where':{'id':_0x56320e['body']['id']},'transaction':_0x47b6fc})[_0xbab0('0x23')](function(_0x3e34a4){return db[_0xbab0('0x9e')][_0xbab0('0x37')]({'where':{'FaxAccountId':_0x56320e[_0xbab0('0x5d')]['id']},'transaction':_0x47b6fc})[_0xbab0('0x23')](function(_0x38e052){return db[_0xbab0('0x9e')][_0xbab0('0x86')](createExtensionsReciveFax(_[_0xbab0('0x9f')](_0x56320e[_0xbab0('0x5d')],[_0xbab0('0xa0'),_0xbab0('0x42'),'createdAt',_0xbab0('0xa1'),_0xbab0('0xa2'),'ListId'])),{'transaction':_0x47b6fc});});});})[_0xbab0('0x23')](function(){return db[_0xbab0('0x3f')][_0xbab0('0xa3')](_0x56320e['body']['id']);})[_0xbab0('0x23')](respondWithResult(_0x1d87e8,null))['catch'](handleError(_0x1d87e8,null));};exports[_0xbab0('0xa4')]=function(_0x194a10,_0x27d861,_0x473333){var _0x61f8d0={'raw':!![],'where':{}};var _0x46cc72={};var _0x5aa510={'count':0x0,'rows':[]};return db['FaxAccount'][_0xbab0('0x72')]({'where':{'id':_0x194a10[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x27d861,null))[_0xbab0('0x23')](function(_0x31c803){if(_0x31c803){_0x46cc72[_0xbab0('0x43')]=_[_0xbab0('0x44')](db['FaxMessage'][_0xbab0('0x58')]);_0x46cc72['query']=_[_0xbab0('0x44')](_0x194a10[_0xbab0('0x45')]);_0x46cc72[_0xbab0('0x6c')]=_['intersection'](_0x46cc72[_0xbab0('0x43')],_0x46cc72[_0xbab0('0x45')]);_0x61f8d0['attributes']=_['intersection'](_0x46cc72[_0xbab0('0x43')],qs[_0xbab0('0x48')](_0x194a10['query'][_0xbab0('0x48')]));_0x61f8d0['attributes']=_0x61f8d0[_0xbab0('0x47')][_0xbab0('0x59')]?_0x61f8d0[_0xbab0('0x47')]:_0x46cc72['model'];if(!_0x194a10['query'][_0xbab0('0x49')](_0xbab0('0x73'))){_0x61f8d0[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x194a10['query']['limit']);_0x61f8d0[_0xbab0('0x4a')]=qs[_0xbab0('0x4a')](_0x194a10[_0xbab0('0x45')][_0xbab0('0x4a')]);}_0x61f8d0[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x194a10[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x61f8d0[_0xbab0('0x4d')]=qs['filters'](_[_0xbab0('0x4e')](_0x194a10[_0xbab0('0x45')],_0x46cc72[_0xbab0('0x6c')]));_0x61f8d0[_0xbab0('0x4d')][_0xbab0('0x69')]=_0x31c803['id'];if(_0x194a10[_0xbab0('0x45')][_0xbab0('0x4f')]){_0x61f8d0[_0xbab0('0x4d')]=_[_0xbab0('0x50')](_0x61f8d0['where'],{'$or':_[_0xbab0('0x3e')](_0x61f8d0[_0xbab0('0x47')],function(_0x42688e){var _0x42082c={};_0x42082c[_0x42688e]={'$like':'%'+_0x194a10[_0xbab0('0x45')]['filter']+'%'};return _0x42082c;})});}if(_0x194a10['query']['$gte']){var _0x434894=_0x194a10[_0xbab0('0x45')][_0xbab0('0xa5')][_0xbab0('0xa6')](',');var _0x54251a={};_0x54251a[_0x434894[0x0]]={'$gte':moment(_0x434894[0x1])[_0xbab0('0xa7')]('YYYY-MM-DD\x20HH:mm:ss')};_0x61f8d0[_0xbab0('0x4d')]=_[_0xbab0('0x50')](_0x61f8d0['where'],_0x54251a);}_0x61f8d0=_[_0xbab0('0x50')]({},_0x61f8d0,_0x194a10[_0xbab0('0x5a')]);return db[_0xbab0('0xa8')][_0xbab0('0x31')]({'where':_0x61f8d0[_0xbab0('0x4d')]})['then'](function(_0x2e9c9c){_0x5aa510[_0xbab0('0x31')]=_0x2e9c9c;if(_0x194a10[_0xbab0('0x45')]['includeAll']){_0x61f8d0[_0xbab0('0x53')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x61f8d0);})[_0xbab0('0x23')](function(_0x541c5d){_0x5aa510['rows']=_0x541c5d;return _0x5aa510;});}})[_0xbab0('0x23')](respondWithFilteredResult(_0x27d861,_0x61f8d0))[_0xbab0('0x55')](handleError(_0x27d861,null));};exports['send']=function(_0x182023,_0x250a99,_0x2c38aa){var _0x5e88a5,_0x3c342d={},_0x318102;if(_0x182023['body']['to']){_0x318102=_0x182023[_0xbab0('0x5d')]['to'][0x0];}return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x182023[_0xbab0('0x57')]['id']},'include':[{'model':db[_0xbab0('0xa9')],'as':_0xbab0('0xaa'),'include':[{'model':db['CmContact'],'as':_0xbab0('0xab'),'where':{'fax':_0x318102},'limit':0x1,'order':[[_0xbab0('0xa1'),_0xbab0('0xac')]]}]}]})[_0xbab0('0x23')](handleEntityNotFound(_0x250a99,null))['then'](function(_0x29f90c){_0x5e88a5=_0x29f90c;if(_0x182023['body'][_0xbab0('0xad')]&&_0x182023[_0xbab0('0x5d')]['attachments'][_0xbab0('0x59')]){for(var _0x36be49=0x0;_0x36be49<_0x182023[_0xbab0('0x5d')]['attachments'][_0xbab0('0x59')];_0x36be49+=0x1){_0x182023[_0xbab0('0x5d')]['attachments'][_0x36be49]={'filename':_0x182023[_0xbab0('0x5d')]['attachments'][_0x36be49]['name'],'id':_0x182023['body'][_0xbab0('0xad')][_0x36be49]['id'],'path':path[_0xbab0('0xae')](config['root'],_0xbab0('0xaf'),_0x182023[_0xbab0('0x5d')][_0xbab0('0xad')][_0x36be49][_0xbab0('0xb0')])};}}return respondWithRpcPromise(_0xbab0('0xb1'),_0xbab0('0xb1'),{'FaxAccountId':_['isNil'](_0x182023[_0xbab0('0x57')]['id'])?undefined:_0x182023[_0xbab0('0x57')]['id'],'path':_[_0xbab0('0xb2')](_0x182023['body'][_0xbab0('0xad')][0x0][_0xbab0('0x8')])?undefined:_0x182023['body']['attachments'][0x0][_0xbab0('0x8')],'fax':_[_0xbab0('0xb2')](_0x182023[_0xbab0('0x5d')]['to'][0x0])?undefined:_0x182023[_0xbab0('0x5d')]['to'][0x0]},client9002);})['then'](function(){if(_0x5e88a5){if(_[_0xbab0('0xb2')](_0x182023[_0xbab0('0x5d')][_0xbab0('0xb3')])){_0x182023[_0xbab0('0x5d')][_0xbab0('0xb3')]=util[_0xbab0('0xa7')](_0xbab0('0xb4'),_0x5e88a5['name'],_0x5e88a5[_0xbab0('0xb5')]);}if(_0x5e88a5[_0xbab0('0xaa')]){if(_0x5e88a5[_0xbab0('0xaa')][_0xbab0('0xab')][_0xbab0('0x59')]){return _0x5e88a5['List'][_0xbab0('0xab')][0x0];}else{return db[_0xbab0('0x79')][_0xbab0('0x5c')](_[_0xbab0('0x1a')](_0x182023[_0xbab0('0x5d')],{'firstName':_0x182023[_0xbab0('0x5d')]['to'][0x0],'phone':_0x182023[_0xbab0('0x5d')]['to'][0x0],'fax':_0x182023[_0xbab0('0x5d')]['to'][0x0],'ListId':_0x5e88a5['ListId']}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0xbab0('0xb6'));}})[_0xbab0('0x23')](function(_0xf5a0b4){if(_0xf5a0b4){return db[_0xbab0('0x77')]['find']({'where':{'ContactId':_0xf5a0b4['id'],'closed':![],'FaxAccountId':_0x5e88a5['id']}})[_0xbab0('0x23')](function(_0x49d255){if(_0x49d255){return[_0x49d255,![]];}return db['FaxInteraction']['create']({'UserId':_0x182023[_0xbab0('0x5e')]['id'],'ContactId':_0xf5a0b4['id'],'FaxAccountId':_0x5e88a5['id'],'fax':_0x182023[_0xbab0('0x5d')]['to'][0x0],'firstMsgDirection':'out','Messages':[_['merge'](_0x182023[_0xbab0('0x5d')],{'read':![],'body':_0x182023[_0xbab0('0x5d')][_0xbab0('0xad')][0x0]['filename'],'FaxAccountId':_0x5e88a5['id'],'UserId':_0x182023[_0xbab0('0x5e')]['id'],'ContactId':_0xf5a0b4['id'],'AttachmentId':_0x182023['body'][_0xbab0('0xad')][0x0]['id']})]},{'include':[{'model':db[_0xbab0('0xa8')],'as':_0xbab0('0xb7')}]})[_0xbab0('0x23')](function(_0x16b147){return[_0x16b147,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xbab0('0xb8')](function(_0x1da6f8,_0x38937f){if(_0x38937f){return _0x1da6f8;}return db['FaxMessage']['create']({'direction':_0xbab0('0xb9'),'read':![],'body':_0x182023[_0xbab0('0x5d')][_0xbab0('0xad')][0x0][_0xbab0('0xba')],'FaxAccountId':_0x5e88a5['id'],'FaxInteractionId':_0x1da6f8['id'],'UserId':_0x182023[_0xbab0('0x5e')]['id'],'ContactId':_0x1da6f8[_0xbab0('0xbb')],'AttachmentId':_0x182023[_0xbab0('0x5d')]['attachments'][0x0]['id']})[_0xbab0('0x23')](function(_0x504ffd){_0x1da6f8[_0xbab0('0xbc')][_0xbab0('0xb7')]=[];_0x1da6f8[_0xbab0('0xbc')]['Messages']['push'](_0x504ffd[_0xbab0('0xbc')]);return _0x1da6f8;});})[_0xbab0('0x23')](function(_0x212b05){respondWithRpcPromise(_0xbab0('0xbd'),_0xbab0('0xbd'),{'FaxAccountId':_[_0xbab0('0xb2')](_0x182023['params']['id'])?undefined:_0x182023[_0xbab0('0x57')]['id'],'path':_['isNil'](_0x182023['body']['attachments'][0x0][_0xbab0('0x8')])?undefined:_0x182023[_0xbab0('0x5d')]['attachments'][0x0][_0xbab0('0x8')],'fax':_[_0xbab0('0xb2')](_0x182023[_0xbab0('0x5d')]['to'][0x0])?undefined:_0x182023[_0xbab0('0x5d')]['to'][0x0],'AttachmentId':_0x182023['body']['attachments'][0x0]['id']},client9002)['then'](function(_0x35a393){logger[_0xbab0('0x2b')](_0xbab0('0xbe'),_0x35a393);})[_0xbab0('0x55')](function(_0x4bb92b){logger['info'](_0xbab0('0xbe'),_0x4bb92b);});return _0x212b05;})[_0xbab0('0x23')](respondWithResult(_0x250a99,null))[_0xbab0('0x55')](handleError(_0x250a99,null));};exports['addAgents']=function(_0x46fcc0,_0x21c9f6,_0x1648c7){return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x46fcc0[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x21c9f6,null))[_0xbab0('0x23')](function(_0x4a41b6){if(_0x4a41b6){return _0x4a41b6[_0xbab0('0xbf')](_0x46fcc0[_0xbab0('0x5d')][_0xbab0('0x6e')],_[_0xbab0('0x9f')](_0x46fcc0['body'],[_0xbab0('0x6e'),'id'])||{})[_0xbab0('0xb8')](function(_0x14b45c){for(var _0x9c8fb4=0x0;_0x9c8fb4<_0x46fcc0['body'][_0xbab0('0x6e')]['length'];_0x9c8fb4+=0x1){socket['emit'](_0xbab0('0xc0'),{'UserId':Number(_0x46fcc0[_0xbab0('0x5d')][_0xbab0('0x6e')][_0x9c8fb4]),'FaxAccountId':Number(_0x46fcc0['params']['id'])});}return _0x14b45c;});}})[_0xbab0('0x23')](respondWithResult(_0x21c9f6,null))[_0xbab0('0x55')](handleError(_0x21c9f6,null));};exports[_0xbab0('0xc1')]=function(_0x205c3d,_0x4918a9,_0x5d954b){return db['FaxAccount']['find']({'where':{'id':_0x205c3d['params']['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x4918a9,null))[_0xbab0('0x23')](function(_0xe56181){if(_0xe56181){return _0xe56181[_0xbab0('0xc1')](_0x205c3d[_0xbab0('0x45')][_0xbab0('0x6e')])['then'](function(){if(_[_0xbab0('0xc2')](_0x205c3d[_0xbab0('0x45')]['ids'])){for(var _0xc8f37a=0x0;_0xc8f37a<_0x205c3d[_0xbab0('0x45')][_0xbab0('0x6e')][_0xbab0('0x59')];_0xc8f37a+=0x1){socket[_0xbab0('0xc3')](_0xbab0('0xc4'),{'UserId':Number(_0x205c3d['query'][_0xbab0('0x6e')][_0xc8f37a]),'FaxAccountId':Number(_0x205c3d[_0xbab0('0x57')]['id'])});}}else{socket[_0xbab0('0xc3')](_0xbab0('0xc4'),{'UserId':Number(_0x205c3d['query'][_0xbab0('0x6e')]),'FaxAccountId':Number(_0x205c3d[_0xbab0('0x57')]['id'])});}});}})[_0xbab0('0x23')](respondWithStatusCode(_0x4918a9,null))[_0xbab0('0x55')](handleError(_0x4918a9,null));};exports['getAgents']=function(_0x41e722,_0x48ad11,_0x33099b){var _0x2d7332={};var _0x8fe6c8={};var _0x27ed2b;var _0x26b931;return db[_0xbab0('0x3f')]['findOne']({'where':{'id':_0x41e722['params']['id']}})['then'](handleEntityNotFound(_0x48ad11,null))[_0xbab0('0x23')](function(_0x1ae6c1){if(_0x1ae6c1){_0x27ed2b=_0x1ae6c1;_0x8fe6c8['model']=_[_0xbab0('0x44')](db['User'][_0xbab0('0x58')]);_0x8fe6c8['query']=_[_0xbab0('0x44')](_0x41e722['query']);_0x8fe6c8['filters']=_[_0xbab0('0x46')](_0x8fe6c8[_0xbab0('0x43')],_0x8fe6c8[_0xbab0('0x45')]);_0x2d7332[_0xbab0('0x47')]=_[_0xbab0('0x46')](_0x8fe6c8[_0xbab0('0x43')],qs['fields'](_0x41e722[_0xbab0('0x45')][_0xbab0('0x48')]));_0x2d7332[_0xbab0('0x47')]=_0x2d7332['attributes']['length']?_0x2d7332[_0xbab0('0x47')]:_0x8fe6c8['model'];_0x2d7332[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x41e722[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x2d7332[_0xbab0('0x4d')]=qs[_0xbab0('0x6c')](_[_0xbab0('0x4e')](_0x41e722[_0xbab0('0x45')],_0x8fe6c8[_0xbab0('0x6c')]));if(_0x41e722['query'][_0xbab0('0x4f')]){_0x2d7332[_0xbab0('0x4d')]=_[_0xbab0('0x50')](_0x2d7332['where'],{'$or':_[_0xbab0('0x3e')](_0x2d7332['attributes'],function(_0x40ba79){var _0x160c79={};_0x160c79[_0x40ba79]={'$like':'%'+_0x41e722['query'][_0xbab0('0x4f')]+'%'};return _0x160c79;})});}_0x2d7332=_[_0xbab0('0x50')]({},_0x2d7332,_0x41e722[_0xbab0('0x5a')]);return _0x27ed2b['getAgents'](_0x2d7332);}})[_0xbab0('0x23')](function(_0x4ef958){if(_0x4ef958){_0x26b931=_0x4ef958[_0xbab0('0x59')];if(!_0x41e722[_0xbab0('0x45')][_0xbab0('0x49')]('nolimit')){_0x2d7332[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x41e722[_0xbab0('0x45')][_0xbab0('0x30')]);_0x2d7332['offset']=qs[_0xbab0('0x4a')](_0x41e722['query']['offset']);}return _0x27ed2b[_0xbab0('0xc5')](_0x2d7332);}})['then'](function(_0x40b31a){if(_0x40b31a){return _0x40b31a?{'count':_0x26b931,'rows':_0x40b31a}:null;}})[_0xbab0('0x23')](respondWithResult(_0x48ad11,null))[_0xbab0('0x55')](handleError(_0x48ad11,null));};
\ No newline at end of file
index 3417d87..4f87395 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf33=['emit','hasOwnProperty','hook','events','../../mysqldb','FaxAccount','setMaxListeners','update','remove'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xaf33,0x12c));var _0x3af3=function(_0xd147d8,_0x481a41){_0xd147d8=_0xd147d8-0x0;var _0x3fcaba=_0xaf33[_0xd147d8];return _0x3fcaba;};'use strict';var EventEmitter=require(_0x3af3('0x0'));var FaxAccount=require(_0x3af3('0x1'))['db'][_0x3af3('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x3af3('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3af3('0x4'),'afterDestroy':_0x3af3('0x5')};function emitEvent(_0x457486){return function(_0x2ef234,_0x1158d3,_0x285f25){FaxAccountEvents[_0x3af3('0x6')](_0x457486+':'+_0x2ef234['id'],_0x2ef234);FaxAccountEvents[_0x3af3('0x6')](_0x457486,_0x2ef234);_0x285f25(null);};}for(var e in events){if(events[_0x3af3('0x7')](e)){var event=events[e];FaxAccount[_0x3af3('0x8')](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
+var _0x2539=['emit','hasOwnProperty','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save','update'];(function(_0x93ad9f,_0x1f6c4f){var _0x25ecea=function(_0x33fcb9){while(--_0x33fcb9){_0x93ad9f['push'](_0x93ad9f['shift']());}};_0x25ecea(++_0x1f6c4f);}(_0x2539,0x147));var _0x9253=function(_0x1eba27,_0x5021ec){_0x1eba27=_0x1eba27-0x0;var _0x19d345=_0x2539[_0x1eba27];return _0x19d345;};'use strict';var EventEmitter=require(_0x9253('0x0'));var FaxAccount=require(_0x9253('0x1'))['db'][_0x9253('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x9253('0x3')](0x0);var events={'afterCreate':_0x9253('0x4'),'afterUpdate':_0x9253('0x5'),'afterDestroy':'remove'};function emitEvent(_0x2a18dc){return function(_0xecd5e9,_0x4cea82,_0x5db41e){FaxAccountEvents[_0x9253('0x6')](_0x2a18dc+':'+_0xecd5e9['id'],_0xecd5e9);FaxAccountEvents['emit'](_0x2a18dc,_0xecd5e9);_0x5db41e(null);};}for(var e in events){if(events[_0x9253('0x7')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0x9253('0x8')]=FaxAccountEvents;
\ No newline at end of file
index 0047f41..6ed999f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84d7=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','exports','define','FaxAccount'];(function(_0x10ab62,_0x21d1da){var _0x3b325b=function(_0x4aae9d){while(--_0x4aae9d){_0x10ab62['push'](_0x10ab62['shift']());}};_0x3b325b(++_0x21d1da);}(_0x84d7,0x75));var _0x784d=function(_0x576170,_0x1712ae){_0x576170=_0x576170-0x0;var _0x397c70=_0x84d7[_0x576170];return _0x397c70;};'use strict';var _=require(_0x784d('0x0'));var util=require('util');var logger=require(_0x784d('0x1'))(_0x784d('0x2'));var moment=require(_0x784d('0x3'));var BPromise=require(_0x784d('0x4'));var rp=require(_0x784d('0x5'));var fs=require('fs');var path=require(_0x784d('0x6'));var rimraf=require(_0x784d('0x7'));var config=require(_0x784d('0x8'));var attributes=require(_0x784d('0x9'));module[_0x784d('0xa')]=function(_0x2d0d20,_0x10a5b2){return _0x2d0d20[_0x784d('0xb')](_0x784d('0xc'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x12c1=['define','FaxAccount','fax_accounts','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes'];(function(_0x4715fb,_0x38585f){var _0x3b6f7e=function(_0x3074a2){while(--_0x3074a2){_0x4715fb['push'](_0x4715fb['shift']());}};_0x3b6f7e(++_0x38585f);}(_0x12c1,0x177));var _0x112c=function(_0x27e08a,_0x49d986){_0x27e08a=_0x27e08a-0x0;var _0x52cb80=_0x12c1[_0x27e08a];return _0x52cb80;};'use strict';var _=require(_0x112c('0x0'));var util=require(_0x112c('0x1'));var logger=require(_0x112c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x112c('0x3'));var rp=require(_0x112c('0x4'));var fs=require('fs');var path=require(_0x112c('0x5'));var rimraf=require(_0x112c('0x6'));var config=require(_0x112c('0x7'));var attributes=require(_0x112c('0x8'));module['exports']=function(_0x2a41fb,_0x3dffa7){return _0x2a41fb[_0x112c('0x9')](_0x112c('0xa'),attributes,{'tableName':_0x112c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b9ba24f..dd29d59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b60=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','request','then','info','FaxAccount,\x20%s,\x20%s','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','GetFaxAccount','FaxAccount','options','raw','limit','include','model','attributes','map','debug','body','fax','CmContact','describe','Sequelize','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','from','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','Contacts','DESC','FaxApplication','Applications','get','applications','orderBy','asc','length','ListId','create','contact','FaxInteraction','Contact\x20not\x20found','spread','autoclose','push','close','*,*,*,*','created','interaction','FaxMessage','ContactId','UserId','name','unshift','queueId','queue','waitForTheAssignedQueue','lodash','util','moment'];(function(_0x5e9a69,_0x40c0ec){var _0x5979c8=function(_0x293da2){while(--_0x293da2){_0x5e9a69['push'](_0x5e9a69['shift']());}};_0x5979c8(++_0x40c0ec);}(_0x5b60,0x1b5));var _0x05b6=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x5b60[_0x55f8b4];return _0x2475f9;};'use strict';var _=require(_0x05b6('0x0'));var util=require(_0x05b6('0x1'));var moment=require(_0x05b6('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x05b6('0x3'));var db=require(_0x05b6('0x4'))['db'];var utils=require(_0x05b6('0x5'));var logger=require(_0x05b6('0x6'))(_0x05b6('0x7'));var config=require('../../config/environment');var jayson=require(_0x05b6('0x8'));var client=jayson[_0x05b6('0x9')]['http']({'port':0x232c});config[_0x05b6('0xa')]=_[_0x05b6('0xb')](config['redis'],{'host':_0x05b6('0xc'),'port':0x18eb});var socket=require(_0x05b6('0xd'))(new Redis(config[_0x05b6('0xa')]));require(_0x05b6('0xe'))['register'](socket);function respondWithRpcPromise(_0xb00988,_0x4367b0,_0x5a1c31){return new BPromise(function(_0x5a983c,_0x9c14ca){return client[_0x05b6('0xf')](_0xb00988,_0x5a1c31)[_0x05b6('0x10')](function(_0x2d61c3){logger[_0x05b6('0x11')](_0x05b6('0x12'),_0x4367b0,'request\x20sent');logger['debug'](_0x05b6('0x13'),_0x4367b0,'request\x20sent',JSON[_0x05b6('0x14')](_0x2d61c3));if(_0x2d61c3['error']){if(_0x2d61c3[_0x05b6('0x15')][_0x05b6('0x16')]===0x1f4){logger[_0x05b6('0x15')](_0x05b6('0x12'),_0x4367b0,_0x2d61c3[_0x05b6('0x15')][_0x05b6('0x17')]);return _0x9c14ca(_0x2d61c3[_0x05b6('0x15')]['message']);}logger[_0x05b6('0x15')](_0x05b6('0x12'),_0x4367b0,_0x2d61c3['error'][_0x05b6('0x17')]);return _0x5a983c(_0x2d61c3[_0x05b6('0x15')][_0x05b6('0x17')]);}else{logger[_0x05b6('0x11')](_0x05b6('0x12'),_0x4367b0,_0x05b6('0x18'));_0x5a983c(_0x2d61c3['result'][_0x05b6('0x17')]);}})[_0x05b6('0x19')](function(_0x2fc427){logger['error'](_0x05b6('0x12'),_0x4367b0,_0x2fc427);_0x9c14ca(_0x2fc427);});});}exports[_0x05b6('0x1a')]=function(_0x31d6cd){var _0x2b5871=this;return new Promise(function(_0x2320ff,_0x5b93a5){return db[_0x05b6('0x1b')]['findAll']({'raw':_0x31d6cd[_0x05b6('0x1c')]?_0x31d6cd['options'][_0x05b6('0x1d')]===undefined?!![]:![]:!![],'where':_0x31d6cd[_0x05b6('0x1c')]?_0x31d6cd[_0x05b6('0x1c')]['where']||null:null,'attributes':_0x31d6cd['options']?_0x31d6cd[_0x05b6('0x1c')]['attributes']||null:null,'limit':_0x31d6cd['options']?_0x31d6cd['options'][_0x05b6('0x1e')]||null:null,'include':_0x31d6cd[_0x05b6('0x1c')]?_0x31d6cd[_0x05b6('0x1c')][_0x05b6('0x1f')]?_['map'](_0x31d6cd[_0x05b6('0x1c')][_0x05b6('0x1f')],function(_0x295c18){return{'model':db[_0x295c18[_0x05b6('0x20')]],'as':_0x295c18['as'],'attributes':_0x295c18[_0x05b6('0x21')],'include':_0x295c18['include']?_['map'](_0x295c18[_0x05b6('0x1f')],function(_0x59df10){return{'model':db[_0x59df10['model']],'as':_0x59df10['as'],'attributes':_0x59df10[_0x05b6('0x21')],'include':_0x59df10[_0x05b6('0x1f')]?_[_0x05b6('0x22')](_0x59df10[_0x05b6('0x1f')],function(_0x3a68c0){return{'model':db[_0x3a68c0[_0x05b6('0x20')]],'as':_0x3a68c0['as'],'attributes':_0x3a68c0[_0x05b6('0x21')]};}):[]};}):[]};}):[]:[]})[_0x05b6('0x10')](function(_0x1603a1){logger[_0x05b6('0x11')](_0x05b6('0x1a'),_0x31d6cd);logger[_0x05b6('0x23')](_0x05b6('0x1a'),_0x31d6cd,JSON[_0x05b6('0x14')](_0x1603a1));_0x2320ff(_0x1603a1);})[_0x05b6('0x19')](function(_0xaafcd6){logger[_0x05b6('0x15')](_0x05b6('0x1a'),_0xaafcd6['message'],_0x31d6cd);_0x5b93a5(_0x2b5871[_0x05b6('0x15')](0x1f4,_0xaafcd6[_0x05b6('0x17')]));});});};exports['NotifyFaxAccount']=function(_0x233736,_0x3aedfa,_0x59653e){var _0x24751c=this;return new Promise(function(_0x5cd85c,_0x54bc5b){var _0x23c818={'body':_0x233736[_0x05b6('0x24')],'channel':_0x05b6('0x25')};var _0x3d5218=[];var _0x2a5f42=[];var _0x587158={};return db[_0x05b6('0x26')][_0x05b6('0x27')]()[_0x05b6('0x10')](function(_0x28c1ef){if(!_0x28c1ef){throw new db[(_0x05b6('0x28'))]['ValidationError'](_0x05b6('0x29'));}_0x3d5218=_[_0x05b6('0x2a')](_[_0x05b6('0x2b')](_0x28c1ef),[_0x05b6('0x2c'),_0x05b6('0x2d')]);_0x2a5f42=_[_0x05b6('0x2a')](_[_0x05b6('0x2b')](_0x28c1ef),[_0x05b6('0x2c'),_0x05b6('0x2d'),_0x05b6('0x2e'),'ListId']);if(_0x233736[_0x05b6('0x24')]['id']){delete _0x233736['body']['id'];}if(_['isNil'](_0x233736[_0x05b6('0x24')][_0x05b6('0x2f')])){throw new db[(_0x05b6('0x28'))][(_0x05b6('0x30'))](_0x05b6('0x31'));}if(_['isNil'](_0x233736[_0x05b6('0x24')][_0x05b6('0x24')])||_0x233736[_0x05b6('0x24')][_0x05b6('0x24')]===''){throw new db[(_0x05b6('0x28'))][(_0x05b6('0x30'))](_0x05b6('0x32'));}if(_[_0x05b6('0x33')](_0x233736[_0x05b6('0x24')][_0x05b6('0x34')])){throw new db[(_0x05b6('0x28'))]['ValidationError'](_0x05b6('0x35')+_0x2a5f42);}if(!_['includes'](_0x2a5f42,_0x233736[_0x05b6('0x24')]['mapKey'])){throw new db['Sequelize'][(_0x05b6('0x30'))](_0x05b6('0x36')+_0x2a5f42);}_0x587158[_0x233736[_0x05b6('0x24')][_0x05b6('0x34')]]=_0x233736[_0x05b6('0x24')]['from'];})[_0x05b6('0x10')](function(){return db[_0x05b6('0x1b')][_0x05b6('0x37')]({'where':{'id':_0x233736[_0x05b6('0x38')]['id']},'include':[{'model':db[_0x05b6('0x39')],'as':_0x05b6('0x3a'),'include':[{'model':db[_0x05b6('0x26')],'as':_0x05b6('0x3b'),'where':_0x587158,'limit':0x1,'order':[[_0x05b6('0x2d'),_0x05b6('0x3c')]]}]},{'model':db[_0x05b6('0x3d')],'as':_0x05b6('0x3e')}]});})[_0x05b6('0x10')](function(_0x5d1f13){if(_0x5d1f13&&_0x5d1f13['List']){var _0x59fdea=_0x5d1f13[_0x05b6('0x3f')]({'plain':!![]});_0x23c818['account']=_0x59fdea;_0x23c818['applications']=_0x59fdea[_0x05b6('0x3e')];_0x23c818['list']=_0x59fdea['List'];_0x23c818[_0x05b6('0x40')]=_[_0x05b6('0x41')](_0x23c818['applications'],['priority'],[_0x05b6('0x42')]);if(_0x23c818[_0x05b6('0x38')][_0x05b6('0x3e')]){delete _0x23c818[_0x05b6('0x38')][_0x05b6('0x3e')];}if(_0x23c818[_0x05b6('0x38')][_0x05b6('0x3a')]&&_0x23c818[_0x05b6('0x38')][_0x05b6('0x3a')][_0x05b6('0x3b')][_0x05b6('0x43')]){return _0x23c818['account'][_0x05b6('0x3a')][_0x05b6('0x3b')][0x0];}var _0x35309a=_[_0x05b6('0xb')](_0x233736[_0x05b6('0x24')],{'firstName':_0x233736[_0x05b6('0x24')]['from'],'ListId':_0x59fdea[_0x05b6('0x44')]});_0x35309a[_0x233736[_0x05b6('0x24')][_0x05b6('0x34')]]=_0x233736[_0x05b6('0x24')]['from'];return db['CmContact'][_0x05b6('0x45')](_0x35309a,{'fields':_0x3d5218,'raw':!![]});}})[_0x05b6('0x10')](function(_0x1e1785){_0x23c818[_0x05b6('0x46')]=_0x1e1785;if(_0x1e1785){var _0x43fdf2={'ContactId':_0x1e1785['id'],'FaxAccountId':_0x233736[_0x05b6('0x38')]['id'],'fax':_0x1e1785[_0x05b6('0x25')]};return db[_0x05b6('0x47')][_0x05b6('0x37')]({'where':{'ContactId':_0x1e1785['id'],'closed':![],'FaxAccountId':_0x233736[_0x05b6('0x38')]['id']}})[_0x05b6('0x10')](function(_0xac75a2){if(_0xac75a2){return[_0xac75a2,![]];}return db[_0x05b6('0x47')][_0x05b6('0x45')](_0x43fdf2)[_0x05b6('0x10')](function(_0x2acc11){return[_0x2acc11,!![]];});});}else{throw new Error(_0x05b6('0x48'));}})[_0x05b6('0x49')](function(_0x1fdfba,_0x6a654){var _0x2616b8=_0x1fdfba[_0x05b6('0x3f')]({'plain':!![]});if(_0x6a654){if(_0x23c818['account'][_0x05b6('0x4a')]){_0x23c818['applications'][_0x05b6('0x4b')]({'id':0x0,'priority':_0x23c818[_0x05b6('0x40')][_0x05b6('0x43')]+0x1,'app':_0x05b6('0x4c'),'appdata':'unmanaged','interval':_0x05b6('0x4d')});}_0x2616b8[_0x05b6('0x4e')]=!![];}else{_0x2616b8[_0x05b6('0x4e')]=![];}_0x23c818[_0x05b6('0x4f')]=_0x2616b8;return db[_0x05b6('0x50')][_0x05b6('0x45')]({'body':_0x233736[_0x05b6('0x24')][_0x05b6('0x24')],'FaxAccountId':_0x233736[_0x05b6('0x38')]['id'],'FaxInteractionId':_0x1fdfba['id'],'direction':'in','ContactId':_0x1fdfba[_0x05b6('0x51')],'AttachmentId':_0x233736[_0x05b6('0x24')]['AttachmentId']});})[_0x05b6('0x10')](function(_0x17728e){_0x23c818[_0x05b6('0x17')]=_0x17728e;if(!_0x23c818['interaction'][_0x05b6('0x52')])return;return db['User'][_0x05b6('0x37')]({'attributes':['id',_0x05b6('0x53')],'where':{'id':_0x23c818[_0x05b6('0x4f')][_0x05b6('0x52')]}});})[_0x05b6('0x10')](function(_0x457091){if(_0x457091){_0x23c818[_0x05b6('0x40')][_0x05b6('0x54')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x457091['name']+','+(_0x23c818[_0x05b6('0x38')]['waitForTheAssignedAgent']||0xa),'interval':_0x05b6('0x4d')});}if(!_0x23c818['interaction'][_0x05b6('0x55')])return;return db['FaxQueue'][_0x05b6('0x37')]({'attributes':['id',_0x05b6('0x53')],'where':{'id':_0x23c818['interaction'][_0x05b6('0x55')]}});})[_0x05b6('0x10')](function(_0x3841be){if(_0x3841be){_0x23c818[_0x05b6('0x40')][_0x05b6('0x54')]({'id':0x0,'priority':0x1,'app':_0x05b6('0x56'),'appdata':_0x3841be[_0x05b6('0x53')]+','+(_0x23c818[_0x05b6('0x38')][_0x05b6('0x57')]||0x12c),'interval':_0x05b6('0x4d')});}return respondWithRpcPromise('Start','startRouting',_0x23c818);})[_0x05b6('0x10')](function(_0x1bca89){_0x5cd85c(_0x1bca89);})[_0x05b6('0x19')](function(_0x5c0abf){_0x54bc5b(_0x24751c[_0x05b6('0x15')](0x1f4,_0x5c0abf[_0x05b6('0x17')]));});});};
\ No newline at end of file
+var _0x2c0a=['FaxInteraction','spread','autoclose','push','close','unmanaged','interaction','ContactId','UserId','agent','name','FaxQueue','unshift','queue','waitForTheAssignedQueue','Start','startRouting','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','socket.io-emitter','./faxAccount.socket','register','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFaxAccount','findAll','options','raw','attributes','limit','include','model','map','debug','NotifyFaxAccount','body','CmContact','then','Sequelize','ValidationError','difference','createdAt','updatedAt','keys','CompanyId','ListId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','from','FaxAccount','account','CmList','Contacts','DESC','FaxApplication','Applications','get','applications','list','List','orderBy','priority','asc','length','create','find'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x2c0a,0x1c4));var _0xa2c0=function(_0x473738,_0x15ea31){_0x473738=_0x473738-0x0;var _0x1df4ae=_0x2c0a[_0x473738];return _0x1df4ae;};'use strict';var _=require(_0xa2c0('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa2c0('0x1'));var fs=require('fs');var Redis=require(_0xa2c0('0x2'));var db=require(_0xa2c0('0x3'))['db'];var utils=require(_0xa2c0('0x4'));var logger=require(_0xa2c0('0x5'))(_0xa2c0('0x6'));var config=require('../../config/environment');var jayson=require(_0xa2c0('0x7'));var client=jayson['client'][_0xa2c0('0x8')]({'port':0x232c});config[_0xa2c0('0x9')]=_[_0xa2c0('0xa')](config[_0xa2c0('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xa2c0('0xb'))(new Redis(config[_0xa2c0('0x9')]));require(_0xa2c0('0xc'))[_0xa2c0('0xd')](socket);function respondWithRpcPromise(_0x1e1f20,_0xa1394a,_0x3a385e){return new BPromise(function(_0x486673,_0x10289f){return client[_0xa2c0('0xe')](_0x1e1f20,_0x3a385e)['then'](function(_0x223456){logger[_0xa2c0('0xf')](_0xa2c0('0x10'),_0xa1394a,'request\x20sent');logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0xa1394a,_0xa2c0('0x11'),JSON[_0xa2c0('0x12')](_0x223456));if(_0x223456[_0xa2c0('0x13')]){if(_0x223456[_0xa2c0('0x13')][_0xa2c0('0x14')]===0x1f4){logger[_0xa2c0('0x13')]('FaxAccount,\x20%s,\x20%s',_0xa1394a,_0x223456[_0xa2c0('0x13')][_0xa2c0('0x15')]);return _0x10289f(_0x223456[_0xa2c0('0x13')]['message']);}logger[_0xa2c0('0x13')]('FaxAccount,\x20%s,\x20%s',_0xa1394a,_0x223456['error']['message']);return _0x486673(_0x223456[_0xa2c0('0x13')][_0xa2c0('0x15')]);}else{logger[_0xa2c0('0xf')](_0xa2c0('0x10'),_0xa1394a,_0xa2c0('0x11'));_0x486673(_0x223456[_0xa2c0('0x16')][_0xa2c0('0x15')]);}})[_0xa2c0('0x17')](function(_0x303799){logger['error'](_0xa2c0('0x10'),_0xa1394a,_0x303799);_0x10289f(_0x303799);});});}exports[_0xa2c0('0x18')]=function(_0x1b05f8){var _0x433d19=this;return new Promise(function(_0x23f6db,_0x1124fb){return db['FaxAccount'][_0xa2c0('0x19')]({'raw':_0x1b05f8[_0xa2c0('0x1a')]?_0x1b05f8[_0xa2c0('0x1a')][_0xa2c0('0x1b')]===undefined?!![]:![]:!![],'where':_0x1b05f8[_0xa2c0('0x1a')]?_0x1b05f8[_0xa2c0('0x1a')]['where']||null:null,'attributes':_0x1b05f8[_0xa2c0('0x1a')]?_0x1b05f8[_0xa2c0('0x1a')][_0xa2c0('0x1c')]||null:null,'limit':_0x1b05f8[_0xa2c0('0x1a')]?_0x1b05f8[_0xa2c0('0x1a')][_0xa2c0('0x1d')]||null:null,'include':_0x1b05f8[_0xa2c0('0x1a')]?_0x1b05f8[_0xa2c0('0x1a')][_0xa2c0('0x1e')]?_['map'](_0x1b05f8['options'][_0xa2c0('0x1e')],function(_0x4b018b){return{'model':db[_0x4b018b[_0xa2c0('0x1f')]],'as':_0x4b018b['as'],'attributes':_0x4b018b[_0xa2c0('0x1c')],'include':_0x4b018b[_0xa2c0('0x1e')]?_[_0xa2c0('0x20')](_0x4b018b['include'],function(_0x1956a8){return{'model':db[_0x1956a8[_0xa2c0('0x1f')]],'as':_0x1956a8['as'],'attributes':_0x1956a8[_0xa2c0('0x1c')],'include':_0x1956a8['include']?_[_0xa2c0('0x20')](_0x1956a8[_0xa2c0('0x1e')],function(_0x41d02c){return{'model':db[_0x41d02c['model']],'as':_0x41d02c['as'],'attributes':_0x41d02c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5d242a){logger[_0xa2c0('0xf')](_0xa2c0('0x18'),_0x1b05f8);logger[_0xa2c0('0x21')](_0xa2c0('0x18'),_0x1b05f8,JSON[_0xa2c0('0x12')](_0x5d242a));_0x23f6db(_0x5d242a);})[_0xa2c0('0x17')](function(_0x54a82f){logger[_0xa2c0('0x13')](_0xa2c0('0x18'),_0x54a82f[_0xa2c0('0x15')],_0x1b05f8);_0x1124fb(_0x433d19[_0xa2c0('0x13')](0x1f4,_0x54a82f[_0xa2c0('0x15')]));});});};exports[_0xa2c0('0x22')]=function(_0x43ab2d,_0x259f4a,_0x3754eb){var _0x20cf4e=this;return new Promise(function(_0x55ce71,_0x37df9e){var _0x1ffb15={'body':_0x43ab2d[_0xa2c0('0x23')],'channel':'fax'};var _0x56c099=[];var _0x5b9825=[];var _0x113dbd={};return db[_0xa2c0('0x24')]['describe']()[_0xa2c0('0x25')](function(_0x18e20d){if(!_0x18e20d){throw new db[(_0xa2c0('0x26'))][(_0xa2c0('0x27'))]('no\x20available\x20attributes');}_0x56c099=_[_0xa2c0('0x28')](_['keys'](_0x18e20d),[_0xa2c0('0x29'),_0xa2c0('0x2a')]);_0x5b9825=_[_0xa2c0('0x28')](_[_0xa2c0('0x2b')](_0x18e20d),[_0xa2c0('0x29'),_0xa2c0('0x2a'),_0xa2c0('0x2c'),_0xa2c0('0x2d')]);if(_0x43ab2d[_0xa2c0('0x23')]['id']){delete _0x43ab2d[_0xa2c0('0x23')]['id'];}if(_[_0xa2c0('0x2e')](_0x43ab2d[_0xa2c0('0x23')]['from'])){throw new db[(_0xa2c0('0x26'))][(_0xa2c0('0x27'))](_0xa2c0('0x2f'));}if(_['isNil'](_0x43ab2d[_0xa2c0('0x23')][_0xa2c0('0x23')])||_0x43ab2d['body']['body']===''){throw new db[(_0xa2c0('0x26'))][(_0xa2c0('0x27'))](_0xa2c0('0x30'));}if(_['isNil'](_0x43ab2d[_0xa2c0('0x23')]['mapKey'])){throw new db[(_0xa2c0('0x26'))][(_0xa2c0('0x27'))](_0xa2c0('0x31')+_0x5b9825);}if(!_['includes'](_0x5b9825,_0x43ab2d[_0xa2c0('0x23')]['mapKey'])){throw new db[(_0xa2c0('0x26'))][(_0xa2c0('0x27'))](_0xa2c0('0x32')+_0x5b9825);}_0x113dbd[_0x43ab2d['body'][_0xa2c0('0x33')]]=_0x43ab2d[_0xa2c0('0x23')][_0xa2c0('0x34')];})['then'](function(){return db[_0xa2c0('0x35')]['find']({'where':{'id':_0x43ab2d[_0xa2c0('0x36')]['id']},'include':[{'model':db[_0xa2c0('0x37')],'as':'List','include':[{'model':db[_0xa2c0('0x24')],'as':_0xa2c0('0x38'),'where':_0x113dbd,'limit':0x1,'order':[[_0xa2c0('0x2a'),_0xa2c0('0x39')]]}]},{'model':db[_0xa2c0('0x3a')],'as':_0xa2c0('0x3b')}]});})[_0xa2c0('0x25')](function(_0x52852b){if(_0x52852b&&_0x52852b['List']){var _0x150cb9=_0x52852b[_0xa2c0('0x3c')]({'plain':!![]});_0x1ffb15[_0xa2c0('0x36')]=_0x150cb9;_0x1ffb15[_0xa2c0('0x3d')]=_0x150cb9[_0xa2c0('0x3b')];_0x1ffb15[_0xa2c0('0x3e')]=_0x150cb9[_0xa2c0('0x3f')];_0x1ffb15[_0xa2c0('0x3d')]=_[_0xa2c0('0x40')](_0x1ffb15['applications'],[_0xa2c0('0x41')],[_0xa2c0('0x42')]);if(_0x1ffb15['account']['Applications']){delete _0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x3b')];}if(_0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x3f')]&&_0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x3f')][_0xa2c0('0x38')][_0xa2c0('0x43')]){return _0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x3f')][_0xa2c0('0x38')][0x0];}var _0x19cb4d=_[_0xa2c0('0xa')](_0x43ab2d['body'],{'firstName':_0x43ab2d['body']['from'],'ListId':_0x150cb9[_0xa2c0('0x2d')]});_0x19cb4d[_0x43ab2d['body']['mapKey']]=_0x43ab2d[_0xa2c0('0x23')][_0xa2c0('0x34')];return db[_0xa2c0('0x24')][_0xa2c0('0x44')](_0x19cb4d,{'fields':_0x56c099,'raw':!![]});}})[_0xa2c0('0x25')](function(_0x3c3c6e){_0x1ffb15['contact']=_0x3c3c6e;if(_0x3c3c6e){var _0x187a1b={'ContactId':_0x3c3c6e['id'],'FaxAccountId':_0x43ab2d[_0xa2c0('0x36')]['id'],'fax':_0x3c3c6e['fax']};return db['FaxInteraction'][_0xa2c0('0x45')]({'where':{'ContactId':_0x3c3c6e['id'],'closed':![],'FaxAccountId':_0x43ab2d[_0xa2c0('0x36')]['id']}})['then'](function(_0x41653a){if(_0x41653a){return[_0x41653a,![]];}return db[_0xa2c0('0x46')][_0xa2c0('0x44')](_0x187a1b)[_0xa2c0('0x25')](function(_0x2f18f0){return[_0x2f18f0,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xa2c0('0x47')](function(_0x5ab124,_0x11e41c){var _0xbd7b9d=_0x5ab124[_0xa2c0('0x3c')]({'plain':!![]});if(_0x11e41c){if(_0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x48')]){_0x1ffb15['applications'][_0xa2c0('0x49')]({'id':0x0,'priority':_0x1ffb15['applications'][_0xa2c0('0x43')]+0x1,'app':_0xa2c0('0x4a'),'appdata':_0xa2c0('0x4b'),'interval':'*,*,*,*'});}_0xbd7b9d['created']=!![];}else{_0xbd7b9d['created']=![];}_0x1ffb15[_0xa2c0('0x4c')]=_0xbd7b9d;return db['FaxMessage'][_0xa2c0('0x44')]({'body':_0x43ab2d[_0xa2c0('0x23')][_0xa2c0('0x23')],'FaxAccountId':_0x43ab2d[_0xa2c0('0x36')]['id'],'FaxInteractionId':_0x5ab124['id'],'direction':'in','ContactId':_0x5ab124[_0xa2c0('0x4d')],'AttachmentId':_0x43ab2d['body']['AttachmentId']});})['then'](function(_0x2cf59c){_0x1ffb15[_0xa2c0('0x15')]=_0x2cf59c;if(!_0x1ffb15[_0xa2c0('0x4c')][_0xa2c0('0x4e')])return;return db['User'][_0xa2c0('0x45')]({'attributes':['id','name'],'where':{'id':_0x1ffb15[_0xa2c0('0x4c')][_0xa2c0('0x4e')]}});})[_0xa2c0('0x25')](function(_0x46805b){if(_0x46805b){_0x1ffb15['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0xa2c0('0x4f'),'appdata':_0x46805b[_0xa2c0('0x50')]+','+(_0x1ffb15[_0xa2c0('0x36')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}if(!_0x1ffb15[_0xa2c0('0x4c')]['queueId'])return;return db[_0xa2c0('0x51')][_0xa2c0('0x45')]({'attributes':['id',_0xa2c0('0x50')],'where':{'id':_0x1ffb15['interaction']['queueId']}});})['then'](function(_0x36668c){if(_0x36668c){_0x1ffb15[_0xa2c0('0x3d')][_0xa2c0('0x52')]({'id':0x0,'priority':0x1,'app':_0xa2c0('0x53'),'appdata':_0x36668c[_0xa2c0('0x50')]+','+(_0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x54')]||0x12c),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xa2c0('0x55'),_0xa2c0('0x56'),_0x1ffb15);})[_0xa2c0('0x25')](function(_0x254b62){_0x55ce71(_0x254b62);})[_0xa2c0('0x17')](function(_0x54f5bb){_0x37df9e(_0x20cf4e[_0xa2c0('0x13')](0x1f4,_0x54f5bb[_0xa2c0('0x15')]));});});};
\ No newline at end of file
index 9d01c84..4e761cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f5c=['save','remove','update','emit','removeListener','register','faxAccount:'];(function(_0x3740fe,_0x6c543c){var _0x55492b=function(_0x1f851f){while(--_0x1f851f){_0x3740fe['push'](_0x3740fe['shift']());}};_0x55492b(++_0x6c543c);}(_0x0f5c,0x18f));var _0xc0f5=function(_0x53c256,_0x382a24){_0x53c256=_0x53c256-0x0;var _0x25feb6=_0x0f5c[_0x53c256];return _0x25feb6;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0xc0f5('0x0'),_0xc0f5('0x1'),_0xc0f5('0x2')];function createListener(_0x233454,_0x2bd087){return function(_0x3657f5){_0x2bd087[_0xc0f5('0x3')](_0x233454,_0x3657f5);};}function removeListener(_0x382b22,_0x4e4c0b){return function(){FaxAccountEvents[_0xc0f5('0x4')](_0x382b22,_0x4e4c0b);};}exports[_0xc0f5('0x5')]=function(_0x2d421c){for(var _0x2a7172=0x0,_0x5180a6=events['length'];_0x2a7172<_0x5180a6;_0x2a7172++){var _0x1ae9ba=events[_0x2a7172];var _0x15d20b=createListener(_0xc0f5('0x6')+_0x1ae9ba,_0x2d421c);FaxAccountEvents['on'](_0x1ae9ba,_0x15d20b);}};
\ No newline at end of file
+var _0x629c=['update','emit','removeListener','register','length','faxAccount:','./faxAccount.events','save','remove'];(function(_0x36020b,_0x2c3db5){var _0x176661=function(_0x445e66){while(--_0x445e66){_0x36020b['push'](_0x36020b['shift']());}};_0x176661(++_0x2c3db5);}(_0x629c,0x1da));var _0xc629=function(_0x146a5c,_0x426cc1){_0x146a5c=_0x146a5c-0x0;var _0x3f2f2d=_0x629c[_0x146a5c];return _0x3f2f2d;};'use strict';var FaxAccountEvents=require(_0xc629('0x0'));var events=[_0xc629('0x1'),_0xc629('0x2'),_0xc629('0x3')];function createListener(_0x532648,_0x33da2c){return function(_0x20de56){_0x33da2c[_0xc629('0x4')](_0x532648,_0x20de56);};}function removeListener(_0x3b2eeb,_0x1560aa){return function(){FaxAccountEvents[_0xc629('0x5')](_0x3b2eeb,_0x1560aa);};}exports[_0xc629('0x6')]=function(_0x1ed98f){for(var _0x53788f=0x0,_0x49eaf9=events[_0xc629('0x7')];_0x53788f<_0x49eaf9;_0x53788f++){var _0x57d7a5=events[_0x53788f];var _0x92909=createListener(_0xc629('0x8')+_0x57d7a5,_0x1ed98f);FaxAccountEvents['on'](_0x57d7a5,_0x92909);}};
\ No newline at end of file
index 01f9291..6f95584 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc093=['/addaccountapplications','addAccountApplications','/updateaccountapplications','updateAccountApplications','/:id/send','put','update','destroy','delete','removeDispositions','removeAnswers','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/interactions','getInteractions','getApplications','/:id/messages','/:id/users','getAgents','create','post','addDisposition','addAnswer','addInteraction','addApplications'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xc093,0x1ba));var _0x3c09=function(_0x6f1f57,_0x6510a4){_0x6f1f57=_0x6f1f57-0x0;var _0x51dcf9=_0xc093[_0x6f1f57];return _0x51dcf9;};'use strict';var multer=require(_0x3c09('0x0'));var util=require(_0x3c09('0x1'));var path=require(_0x3c09('0x2'));var timeout=require('connect-timeout');var express=require(_0x3c09('0x3'));var router=express['Router']();var fs_extra=require(_0x3c09('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3c09('0x5'));var config=require(_0x3c09('0x6'));var controller=require(_0x3c09('0x7'));router[_0x3c09('0x8')]('/',auth['isAuthenticated'](),controller[_0x3c09('0x9')]);router[_0x3c09('0x8')](_0x3c09('0xa'),auth[_0x3c09('0xb')](),controller[_0x3c09('0xc')]);router[_0x3c09('0x8')](_0x3c09('0xd'),auth[_0x3c09('0xb')](),controller[_0x3c09('0xe')]);router[_0x3c09('0x8')](_0x3c09('0xf'),auth[_0x3c09('0xb')](),controller[_0x3c09('0x10')]);router[_0x3c09('0x8')](_0x3c09('0x11'),auth[_0x3c09('0xb')](),controller[_0x3c09('0x12')]);router[_0x3c09('0x8')](_0x3c09('0x13'),auth[_0x3c09('0xb')](),controller[_0x3c09('0x14')]);router[_0x3c09('0x8')]('/:id/applications',auth[_0x3c09('0xb')](),controller[_0x3c09('0x15')]);router[_0x3c09('0x8')](_0x3c09('0x16'),auth[_0x3c09('0xb')](),controller['getMessages']);router['get'](_0x3c09('0x17'),auth['isAuthenticated'](),controller[_0x3c09('0x18')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3c09('0x19')]);router[_0x3c09('0x1a')](_0x3c09('0xf'),auth[_0x3c09('0xb')](),controller[_0x3c09('0x1b')]);router['post'](_0x3c09('0x11'),auth['isAuthenticated'](),controller[_0x3c09('0x1c')]);router[_0x3c09('0x1a')](_0x3c09('0x13'),auth['isAuthenticated'](),controller[_0x3c09('0x1d')]);router[_0x3c09('0x1a')]('/:id/applications',auth['isAuthenticated'](),controller[_0x3c09('0x1e')]);router[_0x3c09('0x1a')](_0x3c09('0x1f'),auth[_0x3c09('0xb')](),controller[_0x3c09('0x20')]);router['post'](_0x3c09('0x21'),auth[_0x3c09('0xb')](),controller[_0x3c09('0x22')]);router[_0x3c09('0x1a')](_0x3c09('0x23'),auth['isAuthenticated'](),controller['send']);router[_0x3c09('0x1a')](_0x3c09('0x17'),auth[_0x3c09('0xb')](),controller['addAgents']);router[_0x3c09('0x24')](_0x3c09('0xd'),auth[_0x3c09('0xb')](),controller[_0x3c09('0x25')]);router['delete'](_0x3c09('0xd'),auth[_0x3c09('0xb')](),controller[_0x3c09('0x26')]);router[_0x3c09('0x27')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x3c09('0x28')]);router[_0x3c09('0x27')](_0x3c09('0x11'),auth[_0x3c09('0xb')](),controller[_0x3c09('0x29')]);router[_0x3c09('0x27')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x3c09('0x2a')]=router;
\ No newline at end of file
+var _0x702c=['update','delete','removeDispositions','removeAnswers','removeAgents','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./faxAccount.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getInteractions','/:id/applications','getApplications','getMessages','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/interactions','addApplications','/addaccountapplications','/updateaccountapplications','updateAccountApplications','/:id/send','send','addAgents','put'];(function(_0x334b2b,_0x4b8144){var _0x10d7ec=function(_0x2b0718){while(--_0x2b0718){_0x334b2b['push'](_0x334b2b['shift']());}};_0x10d7ec(++_0x4b8144);}(_0x702c,0x102));var _0xc702=function(_0xbee3c0,_0x417d90){_0xbee3c0=_0xbee3c0-0x0;var _0x301e00=_0x702c[_0xbee3c0];return _0x301e00;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc702('0x0'));var timeout=require(_0xc702('0x1'));var express=require(_0xc702('0x2'));var router=express[_0xc702('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc702('0x4'));var interaction=require(_0xc702('0x5'));var config=require('../../config/environment');var controller=require(_0xc702('0x6'));router[_0xc702('0x7')]('/',auth[_0xc702('0x8')](),controller[_0xc702('0x9')]);router[_0xc702('0x7')](_0xc702('0xa'),auth[_0xc702('0x8')](),controller['describe']);router[_0xc702('0x7')](_0xc702('0xb'),auth[_0xc702('0x8')](),controller[_0xc702('0xc')]);router[_0xc702('0x7')](_0xc702('0xd'),auth[_0xc702('0x8')](),controller[_0xc702('0xe')]);router[_0xc702('0x7')](_0xc702('0xf'),auth[_0xc702('0x8')](),controller[_0xc702('0x10')]);router[_0xc702('0x7')]('/:id/interactions',auth[_0xc702('0x8')](),controller[_0xc702('0x11')]);router[_0xc702('0x7')](_0xc702('0x12'),auth['isAuthenticated'](),controller[_0xc702('0x13')]);router[_0xc702('0x7')]('/:id/messages',auth[_0xc702('0x8')](),controller[_0xc702('0x14')]);router['get'](_0xc702('0x15'),auth[_0xc702('0x8')](),controller[_0xc702('0x16')]);router[_0xc702('0x17')]('/',auth[_0xc702('0x8')](),controller[_0xc702('0x18')]);router[_0xc702('0x17')](_0xc702('0xd'),auth[_0xc702('0x8')](),controller[_0xc702('0x19')]);router[_0xc702('0x17')](_0xc702('0xf'),auth[_0xc702('0x8')](),controller[_0xc702('0x1a')]);router[_0xc702('0x17')](_0xc702('0x1b'),auth[_0xc702('0x8')](),controller['addInteraction']);router['post'](_0xc702('0x12'),auth['isAuthenticated'](),controller[_0xc702('0x1c')]);router['post'](_0xc702('0x1d'),auth['isAuthenticated'](),controller['addAccountApplications']);router[_0xc702('0x17')](_0xc702('0x1e'),auth[_0xc702('0x8')](),controller[_0xc702('0x1f')]);router[_0xc702('0x17')](_0xc702('0x20'),auth[_0xc702('0x8')](),controller[_0xc702('0x21')]);router[_0xc702('0x17')](_0xc702('0x15'),auth[_0xc702('0x8')](),controller[_0xc702('0x22')]);router[_0xc702('0x23')]('/:id',auth[_0xc702('0x8')](),controller[_0xc702('0x24')]);router[_0xc702('0x25')](_0xc702('0xb'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0xc702('0xd'),auth['isAuthenticated'](),controller[_0xc702('0x26')]);router[_0xc702('0x25')](_0xc702('0xf'),auth['isAuthenticated'](),controller[_0xc702('0x27')]);router[_0xc702('0x25')](_0xc702('0x15'),auth[_0xc702('0x8')](),controller[_0xc702('0x28')]);module[_0xc702('0x29')]=router;
\ No newline at end of file
index 9a767ef..3eb1651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd205=['STRING','noop','TEXT','*,*,*,*','exports','INTEGER'];(function(_0x5642bd,_0x5dbcc2){var _0x366ca1=function(_0x15bfdb){while(--_0x15bfdb){_0x5642bd['push'](_0x5642bd['shift']());}};_0x366ca1(++_0x5dbcc2);}(_0xd205,0xa0));var _0x5d20=function(_0x1279eb,_0x3d03ab){_0x1279eb=_0x1279eb-0x0;var _0x31a914=_0xd205[_0x1279eb];return _0x31a914;};'use strict';var Sequelize=require('sequelize');module[_0x5d20('0x0')]={'priority':{'type':Sequelize[_0x5d20('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x5d20('0x2')],'allowNull':![],'defaultValue':_0x5d20('0x3')},'appdata':{'type':Sequelize[_0x5d20('0x4')]()},'description':{'type':Sequelize[_0x5d20('0x2')]},'interval':{'type':Sequelize[_0x5d20('0x2')],'defaultValue':_0x5d20('0x5')}};
\ No newline at end of file
+var _0xc92e=['STRING','noop','*,*,*,*','exports'];(function(_0x473b87,_0x3fb8d3){var _0x41e241=function(_0x3a4da4){while(--_0x3a4da4){_0x473b87['push'](_0x473b87['shift']());}};_0x41e241(++_0x3fb8d3);}(_0xc92e,0x8f));var _0xec92=function(_0x56e775,_0x468827){_0x56e775=_0x56e775-0x0;var _0x37dacd=_0xc92e[_0x56e775];return _0x37dacd;};'use strict';var Sequelize=require('sequelize');module[_0xec92('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xec92('0x1')],'allowNull':![],'defaultValue':_0xec92('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xec92('0x1')],'defaultValue':_0xec92('0x3')}};
\ No newline at end of file
index c05bd29..8c43e14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1303=['squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','offset','undefined','limit','set','Content-Range','reject','save','update','destroy','then','error','name','send','map','FaxApplication','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','includeAll','findAll','rows','show','include','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash'];(function(_0x211118,_0x47e095){var _0x517edf=function(_0x39ffee){while(--_0x39ffee){_0x211118['push'](_0x211118['shift']());}};_0x517edf(++_0x47e095);}(_0x1303,0x1ba));var _0x3130=function(_0x5173b3,_0x26273d){_0x5173b3=_0x5173b3-0x0;var _0x16d4d7=_0x1303[_0x5173b3];return _0x16d4d7;};'use strict';var emlformat=require(_0x3130('0x0'));var rimraf=require(_0x3130('0x1'));var zipdir=require(_0x3130('0x2'));var jsonpatch=require(_0x3130('0x3'));var rp=require(_0x3130('0x4'));var moment=require(_0x3130('0x5'));var BPromise=require(_0x3130('0x6'));var Mustache=require(_0x3130('0x7'));var util=require(_0x3130('0x8'));var path=require(_0x3130('0x9'));var sox=require(_0x3130('0xa'));var csv=require(_0x3130('0xb'));var ejs=require(_0x3130('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3130('0xd'));var squel=require(_0x3130('0xe'));var crypto=require(_0x3130('0xf'));var jsforce=require(_0x3130('0x10'));var deskjs=require(_0x3130('0x11'));var toCsv=require(_0x3130('0xb'));var querystring=require(_0x3130('0x12'));var Papa=require('papaparse');var Redis=require(_0x3130('0x13'));var authService=require(_0x3130('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x3130('0x15'));var hardwareService=require(_0x3130('0x16'));var logger=require(_0x3130('0x17'))(_0x3130('0x18'));var utils=require(_0x3130('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x3130('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2eb461,_0x1da6bc){_0x1da6bc=_0x1da6bc||0xcc;return function(_0x5597b3){if(_0x5597b3){return _0x2eb461['sendStatus'](_0x1da6bc);}return _0x2eb461[_0x3130('0x1b')](_0x1da6bc)[_0x3130('0x1c')]();};}function respondWithResult(_0x577769,_0x544298){_0x544298=_0x544298||0xc8;return function(_0x1e9bb9){if(_0x1e9bb9){return _0x577769[_0x3130('0x1b')](_0x544298)[_0x3130('0x1d')](_0x1e9bb9);}};}function respondWithFilteredResult(_0x2d0a3a,_0xdcf621){return function(_0x543f43){if(_0x543f43){var _0x41b1d5=typeof _0xdcf621[_0x3130('0x1e')]===_0x3130('0x1f')&&typeof _0xdcf621[_0x3130('0x20')]==='undefined';var _0x5095cb=_0x543f43['count'];var _0x10f021=_0x41b1d5?0x0:_0xdcf621[_0x3130('0x1e')];var _0x2f6da1=_0x41b1d5?_0x543f43['count']:_0xdcf621[_0x3130('0x1e')]+_0xdcf621[_0x3130('0x20')];var _0x393acb;if(_0x2f6da1>=_0x5095cb){_0x2f6da1=_0x5095cb;_0x393acb=0xc8;}else{_0x393acb=0xce;}_0x2d0a3a[_0x3130('0x1b')](_0x393acb);return _0x2d0a3a[_0x3130('0x21')](_0x3130('0x22'),_0x10f021+'-'+_0x2f6da1+'/'+_0x5095cb)[_0x3130('0x1d')](_0x543f43);}return null;};}function patchUpdates(_0x38c911){return function(_0x283a99){try{jsonpatch['apply'](_0x283a99,_0x38c911,!![]);}catch(_0x398ef3){return BPromise[_0x3130('0x23')](_0x398ef3);}return _0x283a99[_0x3130('0x24')]();};}function saveUpdates(_0x5ac7ce,_0x147d40){return function(_0x46993c){if(_0x46993c){return _0x46993c[_0x3130('0x25')](_0x5ac7ce)['then'](function(_0x4ac020){return _0x4ac020;});}return null;};}function removeEntity(_0x25cb16,_0x2fbcce){return function(_0x25dd32){if(_0x25dd32){return _0x25dd32[_0x3130('0x26')]()[_0x3130('0x27')](function(){_0x25cb16['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1770f6,_0x2e08ff){return function(_0x117f95){if(!_0x117f95){_0x1770f6['sendStatus'](0x194);}return _0x117f95;};}function handleError(_0x473cec,_0x3a905c){_0x3a905c=_0x3a905c||0x1f4;return function(_0x2b5b2d){logger[_0x3130('0x28')](_0x2b5b2d['stack']);if(_0x2b5b2d[_0x3130('0x29')]){delete _0x2b5b2d[_0x3130('0x29')];}_0x473cec[_0x3130('0x1b')](_0x3a905c)[_0x3130('0x2a')](_0x2b5b2d);};}exports['index']=function(_0x115762,_0x2b0b58){var _0xf9165d={},_0xc46b57={},_0x3e0f7d={'count':0x0,'rows':[]};var _0x5d305d=_[_0x3130('0x2b')](db[_0x3130('0x2c')][_0x3130('0x2d')],function(_0x2cc5f3){return{'name':_0x2cc5f3[_0x3130('0x2e')],'type':_0x2cc5f3[_0x3130('0x2f')]['key']};});_0xc46b57[_0x3130('0x30')]=_[_0x3130('0x2b')](_0x5d305d,'name');_0xc46b57['query']=_[_0x3130('0x31')](_0x115762[_0x3130('0x32')]);_0xc46b57[_0x3130('0x33')]=_[_0x3130('0x34')](_0xc46b57[_0x3130('0x30')],_0xc46b57['query']);_0xf9165d['attributes']=_[_0x3130('0x34')](_0xc46b57[_0x3130('0x30')],qs[_0x3130('0x35')](_0x115762[_0x3130('0x32')][_0x3130('0x35')]));_0xf9165d[_0x3130('0x36')]=_0xf9165d[_0x3130('0x36')][_0x3130('0x37')]?_0xf9165d['attributes']:_0xc46b57[_0x3130('0x30')];if(!_0x115762[_0x3130('0x32')][_0x3130('0x38')](_0x3130('0x39'))){_0xf9165d['limit']=qs[_0x3130('0x20')](_0x115762[_0x3130('0x32')]['limit']);_0xf9165d[_0x3130('0x1e')]=qs[_0x3130('0x1e')](_0x115762[_0x3130('0x32')][_0x3130('0x1e')]);}_0xf9165d[_0x3130('0x3a')]=qs[_0x3130('0x3b')](_0x115762[_0x3130('0x32')][_0x3130('0x3b')]);_0xf9165d[_0x3130('0x3c')]=qs[_0x3130('0x33')](_['pick'](_0x115762[_0x3130('0x32')],_0xc46b57[_0x3130('0x33')]),_0x5d305d);if(_0x115762['query'][_0x3130('0x3d')]){_0xf9165d[_0x3130('0x3c')]=_[_0x3130('0x3e')](_0xf9165d['where'],{'$or':_['map'](_0x5d305d,function(_0xc5764a){if(_0xc5764a[_0x3130('0x2f')]!==_0x3130('0x3f')){var _0xf7bd7a={};_0xf7bd7a[_0xc5764a[_0x3130('0x29')]]={'$like':'%'+_0x115762[_0x3130('0x32')][_0x3130('0x3d')]+'%'};return _0xf7bd7a;}})});}_0xf9165d=_['merge']({},_0xf9165d,_0x115762[_0x3130('0x40')]);var _0x2fb512={'where':_0xf9165d[_0x3130('0x3c')]};return db[_0x3130('0x2c')][_0x3130('0x41')](_0x2fb512)[_0x3130('0x27')](function(_0x38a289){_0x3e0f7d[_0x3130('0x41')]=_0x38a289;if(_0x115762[_0x3130('0x32')][_0x3130('0x42')]){_0xf9165d['include']=[{'all':!![]}];}return db[_0x3130('0x2c')][_0x3130('0x43')](_0xf9165d);})[_0x3130('0x27')](function(_0x4318c8){_0x3e0f7d[_0x3130('0x44')]=_0x4318c8;return _0x3e0f7d;})[_0x3130('0x27')](respondWithFilteredResult(_0x2b0b58,_0xf9165d))['catch'](handleError(_0x2b0b58,null));};exports[_0x3130('0x45')]=function(_0x222efd,_0x4391b4){var _0x48c70b={'raw':!![],'where':{'id':_0x222efd['params']['id']}},_0x201eb4={};_0x201eb4[_0x3130('0x30')]=_[_0x3130('0x31')](db[_0x3130('0x2c')][_0x3130('0x2d')]);_0x201eb4[_0x3130('0x32')]=_[_0x3130('0x31')](_0x222efd[_0x3130('0x32')]);_0x201eb4[_0x3130('0x33')]=_[_0x3130('0x34')](_0x201eb4[_0x3130('0x30')],_0x201eb4[_0x3130('0x32')]);_0x48c70b['attributes']=_[_0x3130('0x34')](_0x201eb4['model'],qs[_0x3130('0x35')](_0x222efd['query']['fields']));_0x48c70b[_0x3130('0x36')]=_0x48c70b[_0x3130('0x36')][_0x3130('0x37')]?_0x48c70b[_0x3130('0x36')]:_0x201eb4['model'];if(_0x222efd['query'][_0x3130('0x42')]){_0x48c70b[_0x3130('0x46')]=[{'all':!![]}];}_0x48c70b=_[_0x3130('0x3e')]({},_0x48c70b,_0x222efd[_0x3130('0x40')]);return db[_0x3130('0x2c')][_0x3130('0x47')](_0x48c70b)['then'](handleEntityNotFound(_0x4391b4,null))[_0x3130('0x27')](respondWithResult(_0x4391b4,null))[_0x3130('0x48')](handleError(_0x4391b4,null));};exports['create']=function(_0x38b514,_0x4cd129){return db[_0x3130('0x2c')][_0x3130('0x49')](_0x38b514['body'],{})[_0x3130('0x27')](respondWithResult(_0x4cd129,0xc9))[_0x3130('0x48')](handleError(_0x4cd129,null));};exports[_0x3130('0x25')]=function(_0x26e863,_0x33337e){if(_0x26e863[_0x3130('0x4a')]['id']){delete _0x26e863[_0x3130('0x4a')]['id'];}return db[_0x3130('0x2c')]['find']({'where':{'id':_0x26e863[_0x3130('0x4b')]['id']}})[_0x3130('0x27')](handleEntityNotFound(_0x33337e,null))[_0x3130('0x27')](saveUpdates(_0x26e863[_0x3130('0x4a')],null))[_0x3130('0x27')](respondWithResult(_0x33337e,null))[_0x3130('0x48')](handleError(_0x33337e,null));};exports['destroy']=function(_0x3f7300,_0x8ca803){return db[_0x3130('0x2c')]['find']({'where':{'id':_0x3f7300[_0x3130('0x4b')]['id']}})['then'](handleEntityNotFound(_0x8ca803,null))[_0x3130('0x27')](removeEntity(_0x8ca803,null))['catch'](handleError(_0x8ca803,null));};
\ No newline at end of file
+var _0x3c1a=['type','key','model','map','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','FaxApplication','includeAll','include','findAll','show','params','keys','catch','create','body','find','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','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','sendStatus','status','end','json','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','rawAttributes'];(function(_0x2b2325,_0x2400fb){var _0x37b7f2=function(_0x47b4ed){while(--_0x47b4ed){_0x2b2325['push'](_0x2b2325['shift']());}};_0x37b7f2(++_0x2400fb);}(_0x3c1a,0x1d4));var _0xa3c1=function(_0x5eef05,_0x1be989){_0x5eef05=_0x5eef05-0x0;var _0x56d4b8=_0x3c1a[_0x5eef05];return _0x56d4b8;};'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(_0xa3c1('0x0'));var moment=require('moment');var BPromise=require(_0xa3c1('0x1'));var Mustache=require(_0xa3c1('0x2'));var util=require(_0xa3c1('0x3'));var path=require('path');var sox=require(_0xa3c1('0x4'));var csv=require(_0xa3c1('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa3c1('0x6'));var _=require(_0xa3c1('0x7'));var squel=require(_0xa3c1('0x8'));var crypto=require('crypto');var jsforce=require(_0xa3c1('0x9'));var deskjs=require(_0xa3c1('0xa'));var toCsv=require(_0xa3c1('0x5'));var querystring=require('querystring');var Papa=require(_0xa3c1('0xb'));var Redis=require(_0xa3c1('0xc'));var authService=require(_0xa3c1('0xd'));var qs=require(_0xa3c1('0xe'));var as=require(_0xa3c1('0xf'));var hardwareService=require(_0xa3c1('0x10'));var logger=require(_0xa3c1('0x11'))(_0xa3c1('0x12'));var utils=require(_0xa3c1('0x13'));var config=require(_0xa3c1('0x14'));var licenseUtil=require(_0xa3c1('0x15'));var db=require(_0xa3c1('0x16'))['db'];function respondWithStatusCode(_0xa1e31b,_0x28a0ee){_0x28a0ee=_0x28a0ee||0xcc;return function(_0x156230){if(_0x156230){return _0xa1e31b[_0xa3c1('0x17')](_0x28a0ee);}return _0xa1e31b[_0xa3c1('0x18')](_0x28a0ee)[_0xa3c1('0x19')]();};}function respondWithResult(_0x1043de,_0x4bb6d6){_0x4bb6d6=_0x4bb6d6||0xc8;return function(_0x2e8ab2){if(_0x2e8ab2){return _0x1043de[_0xa3c1('0x18')](_0x4bb6d6)[_0xa3c1('0x1a')](_0x2e8ab2);}};}function respondWithFilteredResult(_0x43425e,_0x55b45d){return function(_0x1ec10d){if(_0x1ec10d){var _0x160f53=typeof _0x55b45d['offset']==='undefined'&&typeof _0x55b45d[_0xa3c1('0x1b')]==='undefined';var _0x41b0b7=_0x1ec10d[_0xa3c1('0x1c')];var _0x4e90fd=_0x160f53?0x0:_0x55b45d[_0xa3c1('0x1d')];var _0x4c5e8f=_0x160f53?_0x1ec10d['count']:_0x55b45d[_0xa3c1('0x1d')]+_0x55b45d[_0xa3c1('0x1b')];var _0x478885;if(_0x4c5e8f>=_0x41b0b7){_0x4c5e8f=_0x41b0b7;_0x478885=0xc8;}else{_0x478885=0xce;}_0x43425e['status'](_0x478885);return _0x43425e[_0xa3c1('0x1e')](_0xa3c1('0x1f'),_0x4e90fd+'-'+_0x4c5e8f+'/'+_0x41b0b7)[_0xa3c1('0x1a')](_0x1ec10d);}return null;};}function patchUpdates(_0x4ba9da){return function(_0x3632da){try{jsonpatch[_0xa3c1('0x20')](_0x3632da,_0x4ba9da,!![]);}catch(_0x541c2b){return BPromise['reject'](_0x541c2b);}return _0x3632da[_0xa3c1('0x21')]();};}function saveUpdates(_0x5d91bb,_0xb8cd1e){return function(_0x3c0d0d){if(_0x3c0d0d){return _0x3c0d0d[_0xa3c1('0x22')](_0x5d91bb)[_0xa3c1('0x23')](function(_0xed7e7a){return _0xed7e7a;});}return null;};}function removeEntity(_0x144656,_0x3c416f){return function(_0x1231f1){if(_0x1231f1){return _0x1231f1[_0xa3c1('0x24')]()[_0xa3c1('0x23')](function(){_0x144656['status'](0xcc)[_0xa3c1('0x19')]();});}};}function handleEntityNotFound(_0x50cd18,_0x58b8f9){return function(_0x1bf018){if(!_0x1bf018){_0x50cd18['sendStatus'](0x194);}return _0x1bf018;};}function handleError(_0x472272,_0x3a6bf9){_0x3a6bf9=_0x3a6bf9||0x1f4;return function(_0x5ee1fc){logger[_0xa3c1('0x25')](_0x5ee1fc[_0xa3c1('0x26')]);if(_0x5ee1fc[_0xa3c1('0x27')]){delete _0x5ee1fc['name'];}_0x472272[_0xa3c1('0x18')](_0x3a6bf9)[_0xa3c1('0x28')](_0x5ee1fc);};}exports[_0xa3c1('0x29')]=function(_0x4ae49f,_0x1b0f33){var _0x4a517c={},_0x36bef4={},_0x38b6f2={'count':0x0,'rows':[]};var _0x2b6184=_['map'](db['FaxApplication'][_0xa3c1('0x2a')],function(_0x525bda){return{'name':_0x525bda['fieldName'],'type':_0x525bda[_0xa3c1('0x2b')][_0xa3c1('0x2c')]};});_0x36bef4[_0xa3c1('0x2d')]=_[_0xa3c1('0x2e')](_0x2b6184,_0xa3c1('0x27'));_0x36bef4['query']=_['keys'](_0x4ae49f[_0xa3c1('0x2f')]);_0x36bef4[_0xa3c1('0x30')]=_[_0xa3c1('0x31')](_0x36bef4['model'],_0x36bef4[_0xa3c1('0x2f')]);_0x4a517c['attributes']=_[_0xa3c1('0x31')](_0x36bef4[_0xa3c1('0x2d')],qs[_0xa3c1('0x32')](_0x4ae49f['query'][_0xa3c1('0x32')]));_0x4a517c['attributes']=_0x4a517c[_0xa3c1('0x33')][_0xa3c1('0x34')]?_0x4a517c[_0xa3c1('0x33')]:_0x36bef4[_0xa3c1('0x2d')];if(!_0x4ae49f['query']['hasOwnProperty'](_0xa3c1('0x35'))){_0x4a517c[_0xa3c1('0x1b')]=qs['limit'](_0x4ae49f['query']['limit']);_0x4a517c[_0xa3c1('0x1d')]=qs[_0xa3c1('0x1d')](_0x4ae49f[_0xa3c1('0x2f')][_0xa3c1('0x1d')]);}_0x4a517c[_0xa3c1('0x36')]=qs[_0xa3c1('0x37')](_0x4ae49f[_0xa3c1('0x2f')][_0xa3c1('0x37')]);_0x4a517c[_0xa3c1('0x38')]=qs[_0xa3c1('0x30')](_[_0xa3c1('0x39')](_0x4ae49f[_0xa3c1('0x2f')],_0x36bef4[_0xa3c1('0x30')]),_0x2b6184);if(_0x4ae49f[_0xa3c1('0x2f')][_0xa3c1('0x3a')]){_0x4a517c[_0xa3c1('0x38')]=_[_0xa3c1('0x3b')](_0x4a517c[_0xa3c1('0x38')],{'$or':_[_0xa3c1('0x2e')](_0x2b6184,function(_0x4d2955){if(_0x4d2955[_0xa3c1('0x2b')]!==_0xa3c1('0x3c')){var _0x51a50f={};_0x51a50f[_0x4d2955[_0xa3c1('0x27')]]={'$like':'%'+_0x4ae49f['query'][_0xa3c1('0x3a')]+'%'};return _0x51a50f;}})});}_0x4a517c=_[_0xa3c1('0x3b')]({},_0x4a517c,_0x4ae49f[_0xa3c1('0x3d')]);var _0x115090={'where':_0x4a517c['where']};return db[_0xa3c1('0x3e')][_0xa3c1('0x1c')](_0x115090)[_0xa3c1('0x23')](function(_0x595a8c){_0x38b6f2[_0xa3c1('0x1c')]=_0x595a8c;if(_0x4ae49f[_0xa3c1('0x2f')][_0xa3c1('0x3f')]){_0x4a517c[_0xa3c1('0x40')]=[{'all':!![]}];}return db[_0xa3c1('0x3e')][_0xa3c1('0x41')](_0x4a517c);})['then'](function(_0xe66f2e){_0x38b6f2['rows']=_0xe66f2e;return _0x38b6f2;})[_0xa3c1('0x23')](respondWithFilteredResult(_0x1b0f33,_0x4a517c))['catch'](handleError(_0x1b0f33,null));};exports[_0xa3c1('0x42')]=function(_0x105c95,_0x509664){var _0x32542f={'raw':!![],'where':{'id':_0x105c95[_0xa3c1('0x43')]['id']}},_0x97edcd={};_0x97edcd[_0xa3c1('0x2d')]=_[_0xa3c1('0x44')](db[_0xa3c1('0x3e')]['rawAttributes']);_0x97edcd[_0xa3c1('0x2f')]=_['keys'](_0x105c95[_0xa3c1('0x2f')]);_0x97edcd[_0xa3c1('0x30')]=_['intersection'](_0x97edcd['model'],_0x97edcd['query']);_0x32542f['attributes']=_[_0xa3c1('0x31')](_0x97edcd[_0xa3c1('0x2d')],qs['fields'](_0x105c95[_0xa3c1('0x2f')][_0xa3c1('0x32')]));_0x32542f['attributes']=_0x32542f['attributes'][_0xa3c1('0x34')]?_0x32542f[_0xa3c1('0x33')]:_0x97edcd[_0xa3c1('0x2d')];if(_0x105c95[_0xa3c1('0x2f')][_0xa3c1('0x3f')]){_0x32542f[_0xa3c1('0x40')]=[{'all':!![]}];}_0x32542f=_[_0xa3c1('0x3b')]({},_0x32542f,_0x105c95['options']);return db[_0xa3c1('0x3e')]['find'](_0x32542f)[_0xa3c1('0x23')](handleEntityNotFound(_0x509664,null))['then'](respondWithResult(_0x509664,null))[_0xa3c1('0x45')](handleError(_0x509664,null));};exports[_0xa3c1('0x46')]=function(_0xe31f02,_0x267293){return db[_0xa3c1('0x3e')][_0xa3c1('0x46')](_0xe31f02[_0xa3c1('0x47')],{})[_0xa3c1('0x23')](respondWithResult(_0x267293,0xc9))['catch'](handleError(_0x267293,null));};exports[_0xa3c1('0x22')]=function(_0x2d9bea,_0x20ceb1){if(_0x2d9bea[_0xa3c1('0x47')]['id']){delete _0x2d9bea['body']['id'];}return db[_0xa3c1('0x3e')][_0xa3c1('0x48')]({'where':{'id':_0x2d9bea[_0xa3c1('0x43')]['id']}})['then'](handleEntityNotFound(_0x20ceb1,null))[_0xa3c1('0x23')](saveUpdates(_0x2d9bea['body'],null))[_0xa3c1('0x23')](respondWithResult(_0x20ceb1,null))['catch'](handleError(_0x20ceb1,null));};exports[_0xa3c1('0x24')]=function(_0x1bfe97,_0x41c72e){return db[_0xa3c1('0x3e')][_0xa3c1('0x48')]({'where':{'id':_0x1bfe97[_0xa3c1('0x43')]['id']}})[_0xa3c1('0x23')](handleEntityNotFound(_0x41c72e,null))['then'](removeEntity(_0x41c72e,null))['catch'](handleError(_0x41c72e,null));};
\ No newline at end of file
index 873b426..1204eef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087c=['../../config/environment','exports','fax_applications','utf8mb4','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x1d41ae,_0x4f5543){var _0x3a040c=function(_0x2b9657){while(--_0x2b9657){_0x1d41ae['push'](_0x1d41ae['shift']());}};_0x3a040c(++_0x4f5543);}(_0x087c,0xd6));var _0xc087=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x087c[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc087('0x0'))(_0xc087('0x1'));var moment=require('moment');var BPromise=require(_0xc087('0x2'));var rp=require(_0xc087('0x3'));var fs=require('fs');var path=require(_0xc087('0x4'));var rimraf=require(_0xc087('0x5'));var config=require(_0xc087('0x6'));var attributes=require('./faxApplication.attributes');module[_0xc087('0x7')]=function(_0x3351bb,_0x38472a){return _0x3351bb['define']('FaxApplication',attributes,{'tableName':_0xc087('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc087('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xc91b=['path','rimraf','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','bluebird'];(function(_0x578275,_0xe7ae46){var _0xf78041=function(_0x13148c){while(--_0x13148c){_0x578275['push'](_0x578275['shift']());}};_0xf78041(++_0xe7ae46);}(_0xc91b,0x101));var _0xbc91=function(_0x151685,_0x10a578){_0x151685=_0x151685-0x0;var _0x4fb1a4=_0xc91b[_0x151685];return _0x4fb1a4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xbc91('0x0'))(_0xbc91('0x1'));var moment=require('moment');var BPromise=require(_0xbc91('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbc91('0x3'));var rimraf=require(_0xbc91('0x4'));var config=require(_0xbc91('0x5'));var attributes=require(_0xbc91('0x6'));module[_0xbc91('0x7')]=function(_0x5027d4,_0x58c41f){return _0x5027d4[_0xbc91('0x8')](_0xbc91('0x9'),attributes,{'tableName':_0xbc91('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xbc91('0xb'),'collate':_0xbc91('0xc')});};
\ No newline at end of file
index 8b73c09..569a95a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x074b=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','FaxApplication','update','body','options','raw','where','limit','UpdateFaxApplication','lodash'];(function(_0x7d093e,_0xf569ea){var _0x34432d=function(_0x3996f9){while(--_0x3996f9){_0x7d093e['push'](_0x7d093e['shift']());}};_0x34432d(++_0xf569ea);}(_0x074b,0x195));var _0xb074=function(_0x14c14f,_0x580094){_0x14c14f=_0x14c14f-0x0;var _0x7be2b6=_0x074b[_0x14c14f];return _0x7be2b6;};'use strict';var _=require(_0xb074('0x0'));var util=require(_0xb074('0x1'));var moment=require(_0xb074('0x2'));var BPromise=require(_0xb074('0x3'));var rs=require(_0xb074('0x4'));var fs=require('fs');var Redis=require(_0xb074('0x5'));var db=require(_0xb074('0x6'))['db'];var utils=require(_0xb074('0x7'));var logger=require(_0xb074('0x8'))(_0xb074('0x9'));var config=require('../../config/environment');var jayson=require(_0xb074('0xa'));var client=jayson[_0xb074('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f8d92,_0x330d20,_0x24515c){return new BPromise(function(_0x542721,_0x16e8ff){return client['request'](_0x1f8d92,_0x24515c)[_0xb074('0xc')](function(_0x27ff21){logger[_0xb074('0xd')](_0xb074('0xe'),_0x330d20,_0xb074('0xf'));logger[_0xb074('0x10')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0x330d20,_0xb074('0xf'),JSON['stringify'](_0x27ff21));if(_0x27ff21[_0xb074('0x11')]){if(_0x27ff21[_0xb074('0x11')][_0xb074('0x12')]===0x1f4){logger[_0xb074('0x11')](_0xb074('0xe'),_0x330d20,_0x27ff21[_0xb074('0x11')][_0xb074('0x13')]);return _0x16e8ff(_0x27ff21[_0xb074('0x11')][_0xb074('0x13')]);}logger[_0xb074('0x11')]('FaxApplication,\x20%s,\x20%s',_0x330d20,_0x27ff21[_0xb074('0x11')][_0xb074('0x13')]);return _0x542721(_0x27ff21['error'][_0xb074('0x13')]);}else{logger['info']('FaxApplication,\x20%s,\x20%s',_0x330d20,_0xb074('0xf'));_0x542721(_0x27ff21['result'][_0xb074('0x13')]);}})[_0xb074('0x14')](function(_0xa9af0a){logger[_0xb074('0x11')](_0xb074('0xe'),_0x330d20,_0xa9af0a);_0x16e8ff(_0xa9af0a);});});}exports['UpdateFaxApplication']=function(_0x3222ce){var _0x259843=this;return new Promise(function(_0x221fd1,_0x4a2a31){return db[_0xb074('0x15')][_0xb074('0x16')](_0x3222ce[_0xb074('0x17')],{'raw':_0x3222ce['options']?_0x3222ce[_0xb074('0x18')][_0xb074('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3222ce[_0xb074('0x18')]?_0x3222ce[_0xb074('0x18')][_0xb074('0x1a')]||null:null,'attributes':_0x3222ce['options']?_0x3222ce['options']['attributes']||null:null,'limit':_0x3222ce['options']?_0x3222ce['options'][_0xb074('0x1b')]||null:null})['then'](function(_0x370e6b){logger['info']('UpdateFaxApplication',_0x3222ce);logger[_0xb074('0x10')]('UpdateFaxApplication',_0x3222ce,JSON['stringify'](_0x370e6b));_0x221fd1(_0x370e6b);})[_0xb074('0x14')](function(_0x2d7944){logger[_0xb074('0x11')](_0xb074('0x1c'),_0x2d7944[_0xb074('0x13')],_0x3222ce);_0x4a2a31(_0x259843[_0xb074('0x11')](0x1f4,_0x2d7944['message']));});});};
\ No newline at end of file
+var _0xb000=['debug','FaxApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','raw','where','attributes','lodash','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','FaxApplication,\x20%s,\x20%s'];(function(_0x54f52d,_0x5bc394){var _0x1b483e=function(_0x2e34fe){while(--_0x2e34fe){_0x54f52d['push'](_0x54f52d['shift']());}};_0x1b483e(++_0x5bc394);}(_0xb000,0x1a7));var _0x0b00=function(_0xdefbc3,_0x1ea49a){_0xdefbc3=_0xdefbc3-0x0;var _0x367798=_0xb000[_0xdefbc3];return _0x367798;};'use strict';var _=require(_0x0b00('0x0'));var util=require('util');var moment=require(_0x0b00('0x1'));var BPromise=require(_0x0b00('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0b00('0x3'));var db=require(_0x0b00('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0b00('0x5'));var config=require(_0x0b00('0x6'));var jayson=require(_0x0b00('0x7'));var client=jayson[_0x0b00('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x24f76b,_0x37bd48,_0x1b4523){return new BPromise(function(_0x34fabe,_0x5145af){return client['request'](_0x24f76b,_0x1b4523)[_0x0b00('0x9')](function(_0x19d76b){logger[_0x0b00('0xa')](_0x0b00('0xb'),_0x37bd48,'request\x20sent');logger[_0x0b00('0xc')](_0x0b00('0xd'),_0x37bd48,_0x0b00('0xe'),JSON[_0x0b00('0xf')](_0x19d76b));if(_0x19d76b[_0x0b00('0x10')]){if(_0x19d76b[_0x0b00('0x10')][_0x0b00('0x11')]===0x1f4){logger['error'](_0x0b00('0xb'),_0x37bd48,_0x19d76b[_0x0b00('0x10')][_0x0b00('0x12')]);return _0x5145af(_0x19d76b['error'][_0x0b00('0x12')]);}logger[_0x0b00('0x10')](_0x0b00('0xb'),_0x37bd48,_0x19d76b[_0x0b00('0x10')][_0x0b00('0x12')]);return _0x34fabe(_0x19d76b[_0x0b00('0x10')][_0x0b00('0x12')]);}else{logger[_0x0b00('0xa')](_0x0b00('0xb'),_0x37bd48,_0x0b00('0xe'));_0x34fabe(_0x19d76b[_0x0b00('0x13')][_0x0b00('0x12')]);}})[_0x0b00('0x14')](function(_0x1aca85){logger[_0x0b00('0x10')](_0x0b00('0xb'),_0x37bd48,_0x1aca85);_0x5145af(_0x1aca85);});});}exports[_0x0b00('0x15')]=function(_0x45cf82){var _0x5d5f19=this;return new Promise(function(_0x61554a,_0x29969f){return db[_0x0b00('0x16')][_0x0b00('0x17')](_0x45cf82[_0x0b00('0x18')],{'raw':_0x45cf82[_0x0b00('0x19')]?_0x45cf82[_0x0b00('0x19')][_0x0b00('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45cf82['options']?_0x45cf82[_0x0b00('0x19')][_0x0b00('0x1b')]||null:null,'attributes':_0x45cf82[_0x0b00('0x19')]?_0x45cf82[_0x0b00('0x19')][_0x0b00('0x1c')]||null:null,'limit':_0x45cf82['options']?_0x45cf82['options']['limit']||null:null})['then'](function(_0x165566){logger['info'](_0x0b00('0x15'),_0x45cf82);logger[_0x0b00('0xc')]('UpdateFaxApplication',_0x45cf82,JSON[_0x0b00('0xf')](_0x165566));_0x61554a(_0x165566);})[_0x0b00('0x14')](function(_0x54a01f){logger[_0x0b00('0x10')](_0x0b00('0x15'),_0x54a01f['message'],_0x45cf82);_0x29969f(_0x5d5f19[_0x0b00('0x10')](0x1f4,_0x54a01f[_0x0b00('0x12')]));});});};
\ No newline at end of file
index 2c2fdd4..383c797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4213=['post','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./faxApplication.controller','get','isAuthenticated','index','/:id','show'];(function(_0x23427e,_0x8ef89d){var _0x25a9c7=function(_0xa25e1b){while(--_0xa25e1b){_0x23427e['push'](_0x23427e['shift']());}};_0x25a9c7(++_0x8ef89d);}(_0x4213,0x77));var _0x3421=function(_0x5b40f6,_0x35c981){_0x5b40f6=_0x5b40f6-0x0;var _0x50fd3d=_0x4213[_0x5b40f6];return _0x50fd3d;};'use strict';var multer=require(_0x3421('0x0'));var util=require(_0x3421('0x1'));var path=require(_0x3421('0x2'));var timeout=require(_0x3421('0x3'));var express=require(_0x3421('0x4'));var router=express[_0x3421('0x5')]();var fs_extra=require(_0x3421('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3421('0x7'));var config=require('../../config/environment');var controller=require(_0x3421('0x8'));router[_0x3421('0x9')]('/',auth[_0x3421('0xa')](),controller[_0x3421('0xb')]);router['get'](_0x3421('0xc'),auth[_0x3421('0xa')](),controller[_0x3421('0xd')]);router[_0x3421('0xe')]('/',auth[_0x3421('0xa')](),controller['create']);router[_0x3421('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x3421('0x10')]);router['delete'](_0x3421('0xc'),auth[_0x3421('0xa')](),controller[_0x3421('0x11')]);module[_0x3421('0x12')]=router;
\ No newline at end of file
+var _0xea28=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xea28,0x13a));var _0x8ea2=function(_0x44ff64,_0xdd7040){_0x44ff64=_0x44ff64-0x0;var _0x147e19=_0xea28[_0x44ff64];return _0x147e19;};'use strict';var multer=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var path=require(_0x8ea2('0x2'));var timeout=require(_0x8ea2('0x3'));var express=require(_0x8ea2('0x4'));var router=express[_0x8ea2('0x5')]();var fs_extra=require(_0x8ea2('0x6'));var auth=require(_0x8ea2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x8ea2('0x8'));var controller=require(_0x8ea2('0x9'));router[_0x8ea2('0xa')]('/',auth['isAuthenticated'](),controller[_0x8ea2('0xb')]);router[_0x8ea2('0xa')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0xe')]);router[_0x8ea2('0xf')]('/',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x10')]);router[_0x8ea2('0x11')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x12')]);router['delete']('/:id',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x13')]);module[_0x8ea2('0x14')]=router;
\ No newline at end of file
index 384ab05..bdbb61c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf55=['DATE','STRING','ENUM','out','INTEGER','sequelize','exports'];(function(_0x3cfa46,_0x941198){var _0x4b92a9=function(_0x383f97){while(--_0x383f97){_0x3cfa46['push'](_0x3cfa46['shift']());}};_0x4b92a9(++_0x941198);}(_0xdf55,0x83));var _0x5df5=function(_0x14b239,_0x3fda4e){_0x14b239=_0x14b239-0x0;var _0x3443eb=_0xdf55[_0x14b239];return _0x3443eb;};'use strict';var Sequelize=require(_0x5df5('0x0'));module[_0x5df5('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x5df5('0x2')]},'disposition':{'type':Sequelize[_0x5df5('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x5df5('0x3')]},'note':{'type':Sequelize[_0x5df5('0x3')]},'read1stAt':{'type':Sequelize[_0x5df5('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x5df5('0x4')]('in',_0x5df5('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x5df5('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x5df5('0x4')]('in',_0x5df5('0x5')),'defaultValue':'in','allowNull':![]},'queueId':{'type':Sequelize[_0x5df5('0x6')]}};
\ No newline at end of file
+var _0x8952=['DATE','STRING','out','ENUM','exports','BOOLEAN'];(function(_0x93942f,_0xb48547){var _0x23fcd8=function(_0x4728be){while(--_0x4728be){_0x93942f['push'](_0x93942f['shift']());}};_0x23fcd8(++_0xb48547);}(_0x8952,0x17e));var _0x2895=function(_0x2f2148,_0xc2ff2){_0x2f2148=_0x2f2148-0x0;var _0x3e1996=_0x8952[_0x2f2148];return _0x3e1996;};'use strict';var Sequelize=require('sequelize');module[_0x2895('0x0')]={'closed':{'type':Sequelize[_0x2895('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x2895('0x2')]},'disposition':{'type':Sequelize[_0x2895('0x3')]},'secondDisposition':{'type':Sequelize[_0x2895('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x2895('0x3')]},'read1stAt':{'type':Sequelize[_0x2895('0x2')]},'fax':{'type':Sequelize[_0x2895('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x2895('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2895('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x2895('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index c657677..c7a23ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd428=['mkdirSync','existsSync','createReadStream','pipe','createWriteStream','basename','err','unlinkSync','rimraf','zip-dir','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../mysqldb','redis','socket.io-emitter','./faxInteraction.socket','status','end','json','offset','limit','undefined','count','set','update','then','destroy','sendStatus','error','name','index','map','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','user','catch','model','keys','filters','intersection','fields','attributes','include','merge','options','create','body','find','params','describe','addMessage','FaxMessage','ids','omit','getMessages','length','order','where','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','addTags','setTags','spread','Tag','color','emit','faxInteractionTags:save','download','unix','server','files','tmp','join','root','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get'];(function(_0x1a76b8,_0x4aebad){var _0x9de13f=function(_0x1acad0){while(--_0x1acad0){_0x1a76b8['push'](_0x1a76b8['shift']());}};_0x9de13f(++_0x4aebad);}(_0xd428,0x6c));var _0x8d42=function(_0x335647,_0x13f7a0){_0x335647=_0x335647-0x0;var _0x5dbf94=_0xd428[_0x335647];return _0x5dbf94;};'use strict';var rimraf=require(_0x8d42('0x0'));var zipdir=require(_0x8d42('0x1'));var moment=require('moment');var BPromise=require(_0x8d42('0x2'));var util=require(_0x8d42('0x3'));var path=require(_0x8d42('0x4'));var fs=require('fs');var _=require(_0x8d42('0x5'));var Redis=require(_0x8d42('0x6'));var interaction=require(_0x8d42('0x7'));var qs=require(_0x8d42('0x8'));var logger=require(_0x8d42('0x9'))('api');var config=require('../../config/environment');var db=require(_0x8d42('0xa'))['db'];config[_0x8d42('0xb')]=_['defaults'](config[_0x8d42('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x8d42('0xc'))(new Redis(config[_0x8d42('0xb')]));require(_0x8d42('0xd'))['register'](socket);function respondWithStatusCode(_0x3945ea,_0x7b1350){_0x7b1350=_0x7b1350||0xcc;return function(_0x5b30aa){if(_0x5b30aa){return _0x3945ea['sendStatus'](_0x7b1350);}return _0x3945ea[_0x8d42('0xe')](_0x7b1350)[_0x8d42('0xf')]();};}function respondWithResult(_0x1d6bc0,_0x3f6342){_0x3f6342=_0x3f6342||0xc8;return function(_0x8f81ce){if(_0x8f81ce){return _0x1d6bc0['status'](_0x3f6342)[_0x8d42('0x10')](_0x8f81ce);}};}function respondWithFilteredResult(_0x5d978b,_0x551dc1){return function(_0x37a153){if(_0x37a153){var _0x318adb=typeof _0x551dc1[_0x8d42('0x11')]==='undefined'&&typeof _0x551dc1[_0x8d42('0x12')]===_0x8d42('0x13');var _0x2d4653=_0x37a153['count'];var _0x17d6b7=_0x318adb?0x0:_0x551dc1[_0x8d42('0x11')];var _0x2bd177=_0x318adb?_0x37a153[_0x8d42('0x14')]:_0x551dc1['offset']+_0x551dc1['limit'];var _0x3d929d;if(_0x2bd177>=_0x2d4653){_0x2bd177=_0x2d4653;_0x3d929d=0xc8;}else{_0x3d929d=0xce;}_0x5d978b[_0x8d42('0xe')](_0x3d929d);return _0x5d978b[_0x8d42('0x15')]('Content-Range',_0x17d6b7+'-'+_0x2bd177+'/'+_0x2d4653)[_0x8d42('0x10')](_0x37a153);}return null;};}function saveUpdates(_0x4e5d25){return function(_0x1ce3e9){if(_0x1ce3e9){return _0x1ce3e9[_0x8d42('0x16')](_0x4e5d25)[_0x8d42('0x17')](function(_0x5b19ad){return _0x5b19ad;});}return null;};}function removeEntity(_0xe65359){return function(_0x5667b1){if(_0x5667b1){return _0x5667b1[_0x8d42('0x18')]()[_0x8d42('0x17')](function(){_0xe65359['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x14a5bf){return function(_0x14c512){if(!_0x14c512){_0x14a5bf[_0x8d42('0x19')](0x194);}return _0x14c512;};}function handleError(_0x273d52,_0x4f2d37){_0x4f2d37=_0x4f2d37||0x1f4;return function(_0x463295){logger[_0x8d42('0x1a')](_0x463295['stack']);if(_0x463295[_0x8d42('0x1b')]){delete _0x463295[_0x8d42('0x1b')];}_0x273d52[_0x8d42('0xe')](_0x4f2d37)['send'](_0x463295);};}exports[_0x8d42('0x1c')]=function(_0x59fd63,_0x37e2c6){var _0x4b9a83={};var _0x87b8b5=_[_0x8d42('0x1d')](db[_0x8d42('0x1e')][_0x8d42('0x1f')],function(_0x6a1c41){return{'name':_0x6a1c41[_0x8d42('0x20')],'type':_0x6a1c41[_0x8d42('0x21')][_0x8d42('0x22')]};});_0x4b9a83=qs[_0x8d42('0x23')](_0x87b8b5,_0x59fd63);return interaction[_0x8d42('0x24')](_0x8d42('0x25'),_0x59fd63[_0x8d42('0x26')],_0x59fd63[_0x8d42('0x27')],_0x4b9a83,_0x87b8b5)[_0x8d42('0x17')](respondWithFilteredResult(_0x37e2c6,_0x4b9a83))[_0x8d42('0x28')](handleError(_0x37e2c6,null));};exports['show']=function(_0x2584db,_0x1d5219){var _0x3e3c63={'raw':![],'where':{'id':_0x2584db['params']['id']}},_0x47cadc={};_0x47cadc[_0x8d42('0x29')]=_[_0x8d42('0x2a')](db[_0x8d42('0x1e')][_0x8d42('0x1f')]);_0x47cadc[_0x8d42('0x26')]=_['keys'](_0x2584db[_0x8d42('0x26')]);_0x47cadc[_0x8d42('0x2b')]=_[_0x8d42('0x2c')](_0x47cadc[_0x8d42('0x29')],_0x47cadc[_0x8d42('0x26')]);_0x3e3c63['attributes']=_[_0x8d42('0x2c')](_0x47cadc[_0x8d42('0x29')],qs[_0x8d42('0x2d')](_0x2584db[_0x8d42('0x26')][_0x8d42('0x2d')]));_0x3e3c63['attributes']=_0x3e3c63[_0x8d42('0x2e')]['length']?_0x3e3c63[_0x8d42('0x2e')]:_0x47cadc[_0x8d42('0x29')];if(_0x2584db['query']['includeAll']){_0x3e3c63[_0x8d42('0x2f')]=[{'all':!![]}];}_0x3e3c63=_[_0x8d42('0x30')]({},_0x3e3c63,_0x2584db[_0x8d42('0x31')]);return db[_0x8d42('0x1e')]['find'](_0x3e3c63)[_0x8d42('0x17')](handleEntityNotFound(_0x1d5219,null))[_0x8d42('0x17')](respondWithResult(_0x1d5219,null))[_0x8d42('0x28')](handleError(_0x1d5219,null));};exports[_0x8d42('0x32')]=function(_0x149444,_0x34c204){return db[_0x8d42('0x1e')]['create'](_0x149444['body'],{})[_0x8d42('0x17')](respondWithResult(_0x34c204,0xc9))[_0x8d42('0x28')](handleError(_0x34c204,null));};exports['update']=function(_0x18272b,_0x5a389c){if(_0x18272b[_0x8d42('0x33')]['id']){delete _0x18272b[_0x8d42('0x33')]['id'];}return db['FaxInteraction'][_0x8d42('0x34')]({'where':{'id':_0x18272b[_0x8d42('0x35')]['id']}})[_0x8d42('0x17')](handleEntityNotFound(_0x5a389c,null))[_0x8d42('0x17')](saveUpdates(_0x18272b['body'],null))[_0x8d42('0x17')](respondWithResult(_0x5a389c,null))[_0x8d42('0x28')](handleError(_0x5a389c,null));};exports[_0x8d42('0x18')]=function(_0x414bd7,_0x47123b){return db['FaxInteraction'][_0x8d42('0x34')]({'where':{'id':_0x414bd7[_0x8d42('0x35')]['id']}})['then'](handleEntityNotFound(_0x47123b,null))[_0x8d42('0x17')](removeEntity(_0x47123b,null))['catch'](handleError(_0x47123b,null));};exports[_0x8d42('0x36')]=function(_0x289649,_0x196ac8){return db['FaxInteraction'][_0x8d42('0x36')]()[_0x8d42('0x17')](respondWithResult(_0x196ac8,null))[_0x8d42('0x28')](handleError(_0x196ac8,null));};exports[_0x8d42('0x37')]=function(_0xdb7400,_0x528033){return db[_0x8d42('0x38')][_0x8d42('0x34')]({'where':{'id':_0xdb7400['params']['id']}})['then'](handleEntityNotFound(_0x528033,null))['then'](function(_0x4be4eb){if(_0x4be4eb){return _0x4be4eb[_0x8d42('0x37')](_0xdb7400[_0x8d42('0x33')][_0x8d42('0x39')],_[_0x8d42('0x3a')](_0xdb7400[_0x8d42('0x33')],[_0x8d42('0x39'),'id'])||{});}})[_0x8d42('0x17')](respondWithResult(_0x528033,null))['catch'](handleError(_0x528033,null));};exports[_0x8d42('0x3b')]=function(_0x391c47,_0xc17c2f){var _0x1b1841={'raw':![],'where':{}};var _0x20cfa1={};var _0x227a1e={'count':0x0,'rows':[]};return db['FaxInteraction']['findOne']({'where':{'id':_0x391c47[_0x8d42('0x35')]['id']}})[_0x8d42('0x17')](handleEntityNotFound(_0xc17c2f,null))[_0x8d42('0x17')](function(_0x8f26f0){if(_0x8f26f0){_0x20cfa1[_0x8d42('0x29')]=_[_0x8d42('0x2a')](db[_0x8d42('0x38')][_0x8d42('0x1f')]);_0x20cfa1['query']=_[_0x8d42('0x2a')](_0x391c47[_0x8d42('0x26')]);_0x20cfa1[_0x8d42('0x2b')]=_[_0x8d42('0x2c')](_0x20cfa1[_0x8d42('0x29')],_0x20cfa1[_0x8d42('0x26')]);_0x1b1841[_0x8d42('0x2e')]=_['intersection'](_0x20cfa1[_0x8d42('0x29')],qs[_0x8d42('0x2d')](_0x391c47[_0x8d42('0x26')][_0x8d42('0x2d')]));_0x1b1841[_0x8d42('0x2e')]=_0x1b1841['attributes'][_0x8d42('0x3c')]?_0x1b1841[_0x8d42('0x2e')]:_0x20cfa1[_0x8d42('0x29')];if(!_0x391c47[_0x8d42('0x26')]['hasOwnProperty']('nolimit')){_0x1b1841[_0x8d42('0x12')]=qs['limit'](_0x391c47[_0x8d42('0x26')][_0x8d42('0x12')]);_0x1b1841[_0x8d42('0x11')]=qs['offset'](_0x391c47['query'][_0x8d42('0x11')]);}_0x1b1841[_0x8d42('0x3d')]=qs['sort'](_0x391c47['query']['sort']);_0x1b1841[_0x8d42('0x3e')]=qs[_0x8d42('0x2b')](_['pick'](_0x391c47['query'],_0x20cfa1[_0x8d42('0x2b')]));_0x1b1841[_0x8d42('0x3e')][_0x8d42('0x3f')]=_0x8f26f0['id'];if(_0x391c47[_0x8d42('0x26')][_0x8d42('0x40')]){_0x1b1841[_0x8d42('0x3e')]=_['merge'](_0x1b1841['where'],{'$or':_[_0x8d42('0x1d')](_0x1b1841['attributes'],function(_0x5b8b45){var _0x5680c4={};_0x5680c4[_0x5b8b45]={'$like':'%'+_0x391c47[_0x8d42('0x26')][_0x8d42('0x40')]+'%'};return _0x5680c4;})});}if(_0x391c47[_0x8d42('0x26')][_0x8d42('0x41')]){var _0x5bc1ef=_0x391c47[_0x8d42('0x26')]['$gte'][_0x8d42('0x42')](',');var _0x594a94={};_0x594a94[_0x5bc1ef[0x0]]={'$gte':moment(_0x5bc1ef[0x1])[_0x8d42('0x43')](_0x8d42('0x44'))};_0x1b1841[_0x8d42('0x3e')]=_[_0x8d42('0x30')](_0x1b1841[_0x8d42('0x3e')],_0x594a94);}_0x1b1841=_[_0x8d42('0x30')]({},_0x1b1841,_0x391c47['options']);return db['FaxMessage'][_0x8d42('0x14')]({'where':_0x1b1841[_0x8d42('0x3e')]})[_0x8d42('0x17')](function(_0xc78705){_0x227a1e[_0x8d42('0x14')]=_0xc78705;if(_0x391c47[_0x8d42('0x26')][_0x8d42('0x45')]){_0x1b1841['include']=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x1b1841);})[_0x8d42('0x17')](function(_0x12e1ef){_0x227a1e[_0x8d42('0x46')]=_0x12e1ef;return _0x227a1e;});}})[_0x8d42('0x17')](respondWithFilteredResult(_0xc17c2f,_0x1b1841))[_0x8d42('0x28')](handleError(_0xc17c2f,null));};exports[_0x8d42('0x47')]=function(_0x184678,_0x5673a3){return db[_0x8d42('0x1e')][_0x8d42('0x34')]({'where':{'id':_0x184678['params']['id']}})[_0x8d42('0x17')](handleEntityNotFound(_0x5673a3,null))['then'](function(_0x22dbbc){if(_0x22dbbc){return _0x22dbbc[_0x8d42('0x48')](_0x184678[_0x8d42('0x33')]['ids'],_['omit'](_0x184678[_0x8d42('0x33')],['ids','id'])||{})[_0x8d42('0x49')](function(){return db[_0x8d42('0x4a')][_0x8d42('0x24')]({'attributes':['id','name',_0x8d42('0x4b')],'where':{'id':_0x184678[_0x8d42('0x33')][_0x8d42('0x39')]}});})['then'](function(_0x4c1572){socket[_0x8d42('0x4c')](_0x8d42('0x4d'),{'id':Number(_0x184678[_0x8d42('0x35')]['id']),'tags':_0x4c1572||[]});return{'id':Number(_0x184678[_0x8d42('0x35')]['id']),'tags':_0x4c1572||[]};});}})[_0x8d42('0x17')](respondWithResult(_0x5673a3,null))[_0x8d42('0x28')](handleError(_0x5673a3,null));};exports['removeTags']=function(_0x508e7b,_0x45da61){return db[_0x8d42('0x1e')][_0x8d42('0x34')]({'where':{'id':_0x508e7b[_0x8d42('0x35')]['id']}})[_0x8d42('0x17')](handleEntityNotFound(_0x45da61,null))[_0x8d42('0x17')](function(_0x2c77e0){if(_0x2c77e0){return _0x2c77e0['removeTags'](_0x508e7b['query'][_0x8d42('0x39')]);}})[_0x8d42('0x17')](respondWithStatusCode(_0x45da61,null))['catch'](handleError(_0x45da61,null));};exports[_0x8d42('0x4e')]=function(_0x4602e5,_0x5574d4){var _0x3d8ef3=moment()[_0x8d42('0x4f')]()['toString']();var _0x37b921=path['join'](config['root'],_0x8d42('0x50'),_0x8d42('0x51'),_0x8d42('0x52'));var _0x379a2b=path[_0x8d42('0x53')](config[_0x8d42('0x54')],_0x8d42('0x50'),_0x8d42('0x51'),_0x8d42('0x55'));var _0x40a267=path[_0x8d42('0x53')](_0x37b921,_0x3d8ef3);var _0x3d2a50=util[_0x8d42('0x43')](_0x8d42('0x56'),_0x4602e5[_0x8d42('0x35')]['id'],_0x3d8ef3);var _0x15b40a=path[_0x8d42('0x53')](_0x37b921,_0x3d2a50);var _0x45601f=[];_0x45601f[_0x8d42('0x57')]({'model':db[_0x8d42('0x58')],'as':'Attachment','raw':!![]});var _0x14130c=[{'model':db['FaxMessage'],'as':_0x8d42('0x59'),'attributes':['id',_0x8d42('0x33'),_0x8d42('0x5a')],'include':_0x45601f}];return db[_0x8d42('0x1e')]['find']({'where':{'id':_0x4602e5[_0x8d42('0x35')]['id']},'include':_0x14130c})[_0x8d42('0x17')](handleEntityNotFound(_0x5574d4,null))[_0x8d42('0x17')](function(_0x16a6bc){if(_0x16a6bc&&_0x16a6bc[_0x8d42('0x59')]){var _0x16fa18=_0x16a6bc[_0x8d42('0x5b')]({'plain':!![]});fs[_0x8d42('0x5c')](_0x40a267);for(var _0x4f8afe=0x0;_0x4f8afe<_0x16fa18[_0x8d42('0x59')][_0x8d42('0x3c')];_0x4f8afe++){var _0x382372=_0x16fa18[_0x8d42('0x59')][_0x4f8afe][_0x8d42('0x58')];if(_0x382372){var _0x4191e4=path[_0x8d42('0x53')](_0x379a2b,_0x382372['basename']);if(fs[_0x8d42('0x5d')](_0x4191e4)){fs[_0x8d42('0x5e')](_0x4191e4)[_0x8d42('0x5f')](fs[_0x8d42('0x60')](path['join'](_0x40a267,_0x382372[_0x8d42('0x61')])));}}}return BPromise['resolve']()[_0x8d42('0x17')](function(){return new BPromise(function(_0x3f4da0,_0xaa7607){zipdir(_0x40a267,{'saveTo':_0x15b40a},function(_0x31bc9,_0x4ff7c5){if(_0x31bc9)return _0xaa7607(_0x31bc9);return _0x3f4da0(_0x4ff7c5);});})[_0x8d42('0x17')](function(){return new BPromise(function(_0x2082e1,_0x13b0d1){rimraf(_0x40a267,function(_0x4796b8){if(_0x4796b8)_0x13b0d1(_0x4796b8);return _0x2082e1();});});})[_0x8d42('0x17')](function(){return _0x5574d4[_0x8d42('0x4e')](_0x15b40a,_0x3d2a50,function(_0x31b542){if(_0x31b542){console['log'](_0x8d42('0x62'),_0x31b542);}else{fs[_0x8d42('0x63')](_0x15b40a);}});});});}else{return _0x5574d4['sendStatus'](0xc8);}})[_0x8d42('0x28')](handleError(_0x5574d4,null));};
\ No newline at end of file
+var _0x494b=['include','addTags','setTags','spread','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','basename','createReadStream','createWriteStream','resolve','err','unlinkSync','zip-dir','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','update','destroy','error','stack','send','index','map','FaxInteraction','rawAttributes','fieldName','type','getOptions','findAll','query','user','catch','show','params','model','keys','intersection','attributes','merge','options','find','then','create','body','describe','addMessage','FaxMessage','ids','omit','fields','length','hasOwnProperty','order','sort','where','pick','filters','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll'];(function(_0x38ac0c,_0x5b11ec){var _0x173e56=function(_0x5bd697){while(--_0x5bd697){_0x38ac0c['push'](_0x38ac0c['shift']());}};_0x173e56(++_0x5b11ec);}(_0x494b,0x146));var _0xb494=function(_0xbaf094,_0x2f86ad){_0xbaf094=_0xbaf094-0x0;var _0x3974fd=_0x494b[_0xbaf094];return _0x3974fd;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xb494('0x0'));var moment=require('moment');var BPromise=require(_0xb494('0x1'));var util=require(_0xb494('0x2'));var path=require(_0xb494('0x3'));var fs=require('fs');var _=require(_0xb494('0x4'));var Redis=require(_0xb494('0x5'));var interaction=require(_0xb494('0x6'));var qs=require(_0xb494('0x7'));var logger=require(_0xb494('0x8'))(_0xb494('0x9'));var config=require(_0xb494('0xa'));var db=require(_0xb494('0xb'))['db'];config[_0xb494('0xc')]=_['defaults'](config[_0xb494('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xb494('0xd'))(new Redis(config[_0xb494('0xc')]));require(_0xb494('0xe'))[_0xb494('0xf')](socket);function respondWithStatusCode(_0x265dcb,_0x3f96dd){_0x3f96dd=_0x3f96dd||0xcc;return function(_0x546f4c){if(_0x546f4c){return _0x265dcb[_0xb494('0x10')](_0x3f96dd);}return _0x265dcb[_0xb494('0x11')](_0x3f96dd)[_0xb494('0x12')]();};}function respondWithResult(_0x159f46,_0x2a2538){_0x2a2538=_0x2a2538||0xc8;return function(_0x30c7b7){if(_0x30c7b7){return _0x159f46[_0xb494('0x11')](_0x2a2538)[_0xb494('0x13')](_0x30c7b7);}};}function respondWithFilteredResult(_0x535919,_0x2cd061){return function(_0x560c57){if(_0x560c57){var _0x2d547b=typeof _0x2cd061[_0xb494('0x14')]==='undefined'&&typeof _0x2cd061[_0xb494('0x15')]===_0xb494('0x16');var _0x5ecb97=_0x560c57['count'];var _0x1b61c4=_0x2d547b?0x0:_0x2cd061[_0xb494('0x14')];var _0x3d23be=_0x2d547b?_0x560c57[_0xb494('0x17')]:_0x2cd061[_0xb494('0x14')]+_0x2cd061['limit'];var _0x2a19c0;if(_0x3d23be>=_0x5ecb97){_0x3d23be=_0x5ecb97;_0x2a19c0=0xc8;}else{_0x2a19c0=0xce;}_0x535919['status'](_0x2a19c0);return _0x535919[_0xb494('0x18')](_0xb494('0x19'),_0x1b61c4+'-'+_0x3d23be+'/'+_0x5ecb97)[_0xb494('0x13')](_0x560c57);}return null;};}function saveUpdates(_0x49bf25){return function(_0x375145){if(_0x375145){return _0x375145[_0xb494('0x1a')](_0x49bf25)['then'](function(_0x1d6469){return _0x1d6469;});}return null;};}function removeEntity(_0x4d6376){return function(_0x555d63){if(_0x555d63){return _0x555d63[_0xb494('0x1b')]()['then'](function(){_0x4d6376[_0xb494('0x11')](0xcc)[_0xb494('0x12')]();});}};}function handleEntityNotFound(_0x501588){return function(_0xe0b596){if(!_0xe0b596){_0x501588[_0xb494('0x10')](0x194);}return _0xe0b596;};}function handleError(_0x1dbb0d,_0x43143e){_0x43143e=_0x43143e||0x1f4;return function(_0x4720d6){logger[_0xb494('0x1c')](_0x4720d6[_0xb494('0x1d')]);if(_0x4720d6['name']){delete _0x4720d6['name'];}_0x1dbb0d['status'](_0x43143e)[_0xb494('0x1e')](_0x4720d6);};}exports[_0xb494('0x1f')]=function(_0x319d3d,_0x4a7dc9){var _0x1b1615={};var _0x4642ac=_[_0xb494('0x20')](db[_0xb494('0x21')][_0xb494('0x22')],function(_0x20210f){return{'name':_0x20210f[_0xb494('0x23')],'type':_0x20210f[_0xb494('0x24')]['key']};});_0x1b1615=qs[_0xb494('0x25')](_0x4642ac,_0x319d3d);return interaction[_0xb494('0x26')]('fax',_0x319d3d[_0xb494('0x27')],_0x319d3d[_0xb494('0x28')],_0x1b1615,_0x4642ac)['then'](respondWithFilteredResult(_0x4a7dc9,_0x1b1615))[_0xb494('0x29')](handleError(_0x4a7dc9,null));};exports[_0xb494('0x2a')]=function(_0x42ae14,_0x52f878){var _0x478639={'raw':![],'where':{'id':_0x42ae14[_0xb494('0x2b')]['id']}},_0x287e8c={};_0x287e8c[_0xb494('0x2c')]=_[_0xb494('0x2d')](db['FaxInteraction'][_0xb494('0x22')]);_0x287e8c['query']=_['keys'](_0x42ae14[_0xb494('0x27')]);_0x287e8c['filters']=_[_0xb494('0x2e')](_0x287e8c[_0xb494('0x2c')],_0x287e8c[_0xb494('0x27')]);_0x478639[_0xb494('0x2f')]=_[_0xb494('0x2e')](_0x287e8c['model'],qs['fields'](_0x42ae14[_0xb494('0x27')]['fields']));_0x478639['attributes']=_0x478639[_0xb494('0x2f')]['length']?_0x478639[_0xb494('0x2f')]:_0x287e8c[_0xb494('0x2c')];if(_0x42ae14[_0xb494('0x27')]['includeAll']){_0x478639['include']=[{'all':!![]}];}_0x478639=_[_0xb494('0x30')]({},_0x478639,_0x42ae14[_0xb494('0x31')]);return db['FaxInteraction'][_0xb494('0x32')](_0x478639)[_0xb494('0x33')](handleEntityNotFound(_0x52f878,null))[_0xb494('0x33')](respondWithResult(_0x52f878,null))['catch'](handleError(_0x52f878,null));};exports[_0xb494('0x34')]=function(_0x2406c4,_0x45590e){return db[_0xb494('0x21')]['create'](_0x2406c4['body'],{})[_0xb494('0x33')](respondWithResult(_0x45590e,0xc9))[_0xb494('0x29')](handleError(_0x45590e,null));};exports[_0xb494('0x1a')]=function(_0x9436f6,_0x4a87bd){if(_0x9436f6[_0xb494('0x35')]['id']){delete _0x9436f6[_0xb494('0x35')]['id'];}return db[_0xb494('0x21')][_0xb494('0x32')]({'where':{'id':_0x9436f6[_0xb494('0x2b')]['id']}})['then'](handleEntityNotFound(_0x4a87bd,null))[_0xb494('0x33')](saveUpdates(_0x9436f6[_0xb494('0x35')],null))[_0xb494('0x33')](respondWithResult(_0x4a87bd,null))['catch'](handleError(_0x4a87bd,null));};exports[_0xb494('0x1b')]=function(_0x162284,_0x5e3486){return db[_0xb494('0x21')][_0xb494('0x32')]({'where':{'id':_0x162284[_0xb494('0x2b')]['id']}})[_0xb494('0x33')](handleEntityNotFound(_0x5e3486,null))['then'](removeEntity(_0x5e3486,null))[_0xb494('0x29')](handleError(_0x5e3486,null));};exports['describe']=function(_0x591aaa,_0x395edb){return db[_0xb494('0x21')][_0xb494('0x36')]()[_0xb494('0x33')](respondWithResult(_0x395edb,null))[_0xb494('0x29')](handleError(_0x395edb,null));};exports[_0xb494('0x37')]=function(_0x7dcdd5,_0x597392){return db[_0xb494('0x38')]['find']({'where':{'id':_0x7dcdd5['params']['id']}})[_0xb494('0x33')](handleEntityNotFound(_0x597392,null))['then'](function(_0x421d2e){if(_0x421d2e){return _0x421d2e[_0xb494('0x37')](_0x7dcdd5['body'][_0xb494('0x39')],_[_0xb494('0x3a')](_0x7dcdd5['body'],[_0xb494('0x39'),'id'])||{});}})[_0xb494('0x33')](respondWithResult(_0x597392,null))[_0xb494('0x29')](handleError(_0x597392,null));};exports['getMessages']=function(_0x4fd1ab,_0x178bcd){var _0x1242dd={'raw':![],'where':{}};var _0x244c43={};var _0xc57fe9={'count':0x0,'rows':[]};return db[_0xb494('0x21')]['findOne']({'where':{'id':_0x4fd1ab[_0xb494('0x2b')]['id']}})['then'](handleEntityNotFound(_0x178bcd,null))['then'](function(_0x3cfd93){if(_0x3cfd93){_0x244c43[_0xb494('0x2c')]=_[_0xb494('0x2d')](db[_0xb494('0x38')][_0xb494('0x22')]);_0x244c43[_0xb494('0x27')]=_['keys'](_0x4fd1ab[_0xb494('0x27')]);_0x244c43['filters']=_['intersection'](_0x244c43[_0xb494('0x2c')],_0x244c43[_0xb494('0x27')]);_0x1242dd[_0xb494('0x2f')]=_[_0xb494('0x2e')](_0x244c43['model'],qs[_0xb494('0x3b')](_0x4fd1ab[_0xb494('0x27')][_0xb494('0x3b')]));_0x1242dd[_0xb494('0x2f')]=_0x1242dd['attributes'][_0xb494('0x3c')]?_0x1242dd[_0xb494('0x2f')]:_0x244c43[_0xb494('0x2c')];if(!_0x4fd1ab[_0xb494('0x27')][_0xb494('0x3d')]('nolimit')){_0x1242dd[_0xb494('0x15')]=qs[_0xb494('0x15')](_0x4fd1ab['query'][_0xb494('0x15')]);_0x1242dd[_0xb494('0x14')]=qs['offset'](_0x4fd1ab[_0xb494('0x27')][_0xb494('0x14')]);}_0x1242dd[_0xb494('0x3e')]=qs[_0xb494('0x3f')](_0x4fd1ab[_0xb494('0x27')][_0xb494('0x3f')]);_0x1242dd[_0xb494('0x40')]=qs['filters'](_[_0xb494('0x41')](_0x4fd1ab[_0xb494('0x27')],_0x244c43[_0xb494('0x42')]));_0x1242dd[_0xb494('0x40')][_0xb494('0x43')]=_0x3cfd93['id'];if(_0x4fd1ab[_0xb494('0x27')][_0xb494('0x44')]){_0x1242dd[_0xb494('0x40')]=_[_0xb494('0x30')](_0x1242dd['where'],{'$or':_[_0xb494('0x20')](_0x1242dd[_0xb494('0x2f')],function(_0x4f9fd7){var _0xb27609={};_0xb27609[_0x4f9fd7]={'$like':'%'+_0x4fd1ab[_0xb494('0x27')][_0xb494('0x44')]+'%'};return _0xb27609;})});}if(_0x4fd1ab['query'][_0xb494('0x45')]){var _0x13ab69=_0x4fd1ab['query'][_0xb494('0x45')][_0xb494('0x46')](',');var _0x53224d={};_0x53224d[_0x13ab69[0x0]]={'$gte':moment(_0x13ab69[0x1])[_0xb494('0x47')](_0xb494('0x48'))};_0x1242dd[_0xb494('0x40')]=_[_0xb494('0x30')](_0x1242dd['where'],_0x53224d);}_0x1242dd=_[_0xb494('0x30')]({},_0x1242dd,_0x4fd1ab['options']);return db[_0xb494('0x38')][_0xb494('0x17')]({'where':_0x1242dd['where']})[_0xb494('0x33')](function(_0x22b853){_0xc57fe9['count']=_0x22b853;if(_0x4fd1ab['query'][_0xb494('0x49')]){_0x1242dd[_0xb494('0x4a')]=[{'all':!![]}];}return db[_0xb494('0x38')]['findAll'](_0x1242dd);})[_0xb494('0x33')](function(_0x524c07){_0xc57fe9['rows']=_0x524c07;return _0xc57fe9;});}})[_0xb494('0x33')](respondWithFilteredResult(_0x178bcd,_0x1242dd))['catch'](handleError(_0x178bcd,null));};exports[_0xb494('0x4b')]=function(_0x1a5e6a,_0x1a2153){return db[_0xb494('0x21')][_0xb494('0x32')]({'where':{'id':_0x1a5e6a[_0xb494('0x2b')]['id']}})['then'](handleEntityNotFound(_0x1a2153,null))[_0xb494('0x33')](function(_0x339a7e){if(_0x339a7e){return _0x339a7e[_0xb494('0x4c')](_0x1a5e6a['body']['ids'],_[_0xb494('0x3a')](_0x1a5e6a[_0xb494('0x35')],[_0xb494('0x39'),'id'])||{})[_0xb494('0x4d')](function(){return db['Tag']['findAll']({'attributes':['id','name','color'],'where':{'id':_0x1a5e6a[_0xb494('0x35')]['ids']}});})[_0xb494('0x33')](function(_0x4b9de4){socket['emit'](_0xb494('0x4e'),{'id':Number(_0x1a5e6a[_0xb494('0x2b')]['id']),'tags':_0x4b9de4||[]});return{'id':Number(_0x1a5e6a[_0xb494('0x2b')]['id']),'tags':_0x4b9de4||[]};});}})['then'](respondWithResult(_0x1a2153,null))[_0xb494('0x29')](handleError(_0x1a2153,null));};exports['removeTags']=function(_0x57e179,_0x1452de){return db[_0xb494('0x21')][_0xb494('0x32')]({'where':{'id':_0x57e179[_0xb494('0x2b')]['id']}})[_0xb494('0x33')](handleEntityNotFound(_0x1452de,null))[_0xb494('0x33')](function(_0x45f3af){if(_0x45f3af){return _0x45f3af[_0xb494('0x4f')](_0x57e179[_0xb494('0x27')][_0xb494('0x39')]);}})[_0xb494('0x33')](respondWithStatusCode(_0x1452de,null))['catch'](handleError(_0x1452de,null));};exports[_0xb494('0x50')]=function(_0x41636d,_0x24e788){var _0x4b4a47=moment()[_0xb494('0x51')]()['toString']();var _0x9acfb8=path[_0xb494('0x52')](config[_0xb494('0x53')],_0xb494('0x54'),_0xb494('0x55'),_0xb494('0x56'));var _0x29a2dc=path[_0xb494('0x52')](config[_0xb494('0x53')],_0xb494('0x54'),'files',_0xb494('0x57'));var _0x31f93f=path['join'](_0x9acfb8,_0x4b4a47);var _0x114e1c=util[_0xb494('0x47')](_0xb494('0x58'),_0x41636d[_0xb494('0x2b')]['id'],_0x4b4a47);var _0x3890f8=path[_0xb494('0x52')](_0x9acfb8,_0x114e1c);var _0x28b543=[];_0x28b543[_0xb494('0x59')]({'model':db['Attachment'],'as':_0xb494('0x5a'),'raw':!![]});var _0x5e98bb=[{'model':db[_0xb494('0x38')],'as':_0xb494('0x5b'),'attributes':['id',_0xb494('0x35'),_0xb494('0x5c')],'include':_0x28b543}];return db[_0xb494('0x21')][_0xb494('0x32')]({'where':{'id':_0x41636d[_0xb494('0x2b')]['id']},'include':_0x5e98bb})['then'](handleEntityNotFound(_0x24e788,null))[_0xb494('0x33')](function(_0x4d0f66){if(_0x4d0f66&&_0x4d0f66[_0xb494('0x5b')]){var _0x2b0bf1=_0x4d0f66[_0xb494('0x5d')]({'plain':!![]});fs['mkdirSync'](_0x31f93f);for(var _0xced468=0x0;_0xced468<_0x2b0bf1[_0xb494('0x5b')]['length'];_0xced468++){var _0x19e830=_0x2b0bf1[_0xb494('0x5b')][_0xced468]['Attachment'];if(_0x19e830){var _0x12e290=path[_0xb494('0x52')](_0x29a2dc,_0x19e830[_0xb494('0x5e')]);if(fs['existsSync'](_0x12e290)){fs[_0xb494('0x5f')](_0x12e290)['pipe'](fs[_0xb494('0x60')](path[_0xb494('0x52')](_0x31f93f,_0x19e830['basename'])));}}}return BPromise[_0xb494('0x61')]()[_0xb494('0x33')](function(){return new BPromise(function(_0x2586d3,_0xfdc152){zipdir(_0x31f93f,{'saveTo':_0x3890f8},function(_0x1196a5,_0x75b616){if(_0x1196a5)return _0xfdc152(_0x1196a5);return _0x2586d3(_0x75b616);});})['then'](function(){return new BPromise(function(_0x404ffe,_0x25756f){rimraf(_0x31f93f,function(_0x3ae404){if(_0x3ae404)_0x25756f(_0x3ae404);return _0x404ffe();});});})['then'](function(){return _0x24e788[_0xb494('0x50')](_0x3890f8,_0x114e1c,function(_0x27b6b2){if(_0x27b6b2){console['log'](_0xb494('0x62'),_0x27b6b2);}else{fs[_0xb494('0x63')](_0x3890f8);}});});});}else{return _0x24e788['sendStatus'](0xc8);}})[_0xb494('0x29')](handleError(_0x24e788,null));};
\ No newline at end of file
index f2315d6..227723a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe110=['map','findAll','unreadMessages','length','emit','hasOwnProperty','hook','exports','../../mysqldb','FaxInteraction','FaxMessage','save','update','remove','then','setDataValue','Users'];(function(_0x4340e4,_0x6be7c9){var _0x3640e6=function(_0x3091bd){while(--_0x3091bd){_0x4340e4['push'](_0x4340e4['shift']());}};_0x3640e6(++_0x6be7c9);}(_0xe110,0x1c2));var _0x0e11=function(_0x595bae,_0x52f914){_0x595bae=_0x595bae-0x0;var _0x21b4f3=_0xe110[_0x595bae];return _0x21b4f3;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x0e11('0x0'))['db'][_0x0e11('0x1')];var FaxMessage=require(_0x0e11('0x0'))['db'][_0x0e11('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0e11('0x3'),'afterUpdate':_0x0e11('0x4'),'afterDestroy':_0x0e11('0x5')};function emitEvent(_0x423bdc){return function(_0x649771,_0x5aab21,_0xd474f9){_0x649771['getUsers']({'attributes':['id'],'raw':!![]})[_0x0e11('0x6')](function(_0x23b298){_0x649771[_0x0e11('0x7')](_0x0e11('0x8'),_0x23b298[_0x0e11('0x9')](function(_0xcaac30){return{'id':_0xcaac30['id']};}));return FaxMessage[_0x0e11('0xa')]({'where':{'FaxInteractionId':_0x649771['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0e11('0x6')](function(_0x4aefa8){_0x649771[_0x0e11('0x7')](_0x0e11('0xb'),_0x4aefa8[_0x0e11('0xc')]);FaxInteractionEvents[_0x0e11('0xd')](_0x423bdc+':'+_0x649771['id'],_0x649771);FaxInteractionEvents[_0x0e11('0xd')](_0x423bdc,_0x649771);_0xd474f9(null);})['catch'](_0xd474f9(null));};}for(var e in events){if(events[_0x0e11('0xe')](e)){var event=events[e];FaxInteraction[_0x0e11('0xf')](e,emitEvent(event));}}module[_0x0e11('0x10')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x70a4=['length','emit','catch','hasOwnProperty','exports','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','update','remove','getUsers','then','Users','map','setDataValue','unreadMessages'];(function(_0x25c465,_0x4e1875){var _0x507037=function(_0x45b978){while(--_0x45b978){_0x25c465['push'](_0x25c465['shift']());}};_0x507037(++_0x4e1875);}(_0x70a4,0x1d0));var _0x470a=function(_0x225f77,_0x3f05b7){_0x225f77=_0x225f77-0x0;var _0x1ff15a=_0x70a4[_0x225f77];return _0x1ff15a;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x470a('0x0'))['db'][_0x470a('0x1')];var FaxMessage=require('../../mysqldb')['db'][_0x470a('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x470a('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x470a('0x4'),'afterDestroy':_0x470a('0x5')};function emitEvent(_0x4c26a5){return function(_0x1e1fa8,_0x4ec301,_0x5a0053){_0x1e1fa8[_0x470a('0x6')]({'attributes':['id'],'raw':!![]})[_0x470a('0x7')](function(_0x35c317){_0x1e1fa8['setDataValue'](_0x470a('0x8'),_0x35c317[_0x470a('0x9')](function(_0x1c50aa){return{'id':_0x1c50aa['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x1e1fa8['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x12c296){_0x1e1fa8[_0x470a('0xa')](_0x470a('0xb'),_0x12c296[_0x470a('0xc')]);FaxInteractionEvents[_0x470a('0xd')](_0x4c26a5+':'+_0x1e1fa8['id'],_0x1e1fa8);FaxInteractionEvents[_0x470a('0xd')](_0x4c26a5,_0x1e1fa8);_0x5a0053(null);})[_0x470a('0xe')](_0x5a0053(null));};}for(var e in events){if(events[_0x470a('0xf')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x470a('0x10')]=FaxInteractionEvents;
\ No newline at end of file
index 46f23db..21129be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55c1=['rimraf','../../config/environment','exports','FaxInteraction','fax_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','bluebird','request-promise','path'];(function(_0x481bcd,_0x4e96d4){var _0x491491=function(_0x5b42b3){while(--_0x5b42b3){_0x481bcd['push'](_0x481bcd['shift']());}};_0x491491(++_0x4e96d4);}(_0x55c1,0x1e5));var _0x155c=function(_0x4a30b3,_0x3ddbdb){_0x4a30b3=_0x4a30b3-0x0;var _0x161079=_0x55c1[_0x4a30b3];return _0x161079;};'use strict';var _=require(_0x155c('0x0'));var util=require(_0x155c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x155c('0x2'));var rp=require(_0x155c('0x3'));var fs=require('fs');var path=require(_0x155c('0x4'));var rimraf=require(_0x155c('0x5'));var config=require(_0x155c('0x6'));var attributes=require('./faxInteraction.attributes');module[_0x155c('0x7')]=function(_0x55a3ae,_0x1b30c6){return _0x55a3ae['define'](_0x155c('0x8'),attributes,{'tableName':_0x155c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x22ed0d,_0x5f4274,_0x5ee4c7){if(_0x22ed0d['changed'](_0x155c('0xa'))){_0x22ed0d[_0x155c('0xb')]=moment()[_0x155c('0xc')](_0x155c('0xd'));}_0x5ee4c7(null,_0x22ed0d);}}});};
\ No newline at end of file
+var _0xf0ea=['path','rimraf','./faxInteraction.attributes','define','fax_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','bluebird','request-promise'];(function(_0x4f8d8e,_0x550df1){var _0x54344e=function(_0x13776c){while(--_0x13776c){_0x4f8d8e['push'](_0x4f8d8e['shift']());}};_0x54344e(++_0x550df1);}(_0xf0ea,0x10e));var _0xaf0e=function(_0x3d224a,_0x47d2bd){_0x3d224a=_0x3d224a-0x0;var _0x353923=_0xf0ea[_0x3d224a];return _0x353923;};'use strict';var _=require('lodash');var util=require(_0xaf0e('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xaf0e('0x1'));var rp=require(_0xaf0e('0x2'));var fs=require('fs');var path=require(_0xaf0e('0x3'));var rimraf=require(_0xaf0e('0x4'));var config=require('../../config/environment');var attributes=require(_0xaf0e('0x5'));module['exports']=function(_0x272f88,_0x3f71bb){return _0x272f88[_0xaf0e('0x6')]('FaxInteraction',attributes,{'tableName':_0xaf0e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x54ec87,_0x5d1235,_0x57285c){if(_0x54ec87[_0xaf0e('0x8')](_0xaf0e('0x9'))){_0x54ec87[_0xaf0e('0xa')]=moment()[_0xaf0e('0xb')](_0xaf0e('0xc'));}_0x57285c(null,_0x54ec87);}}});};
\ No newline at end of file
index bd82fb5..268c359 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7c2=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','where','attributes','limit','AddTagsToFaxInteraction','find','omit','ids','spread','AddTags','lodash','util','bluebird','randomstring','../../mysqldb'];(function(_0x4aac5a,_0x15b04c){var _0x42e7bc=function(_0x1da766){while(--_0x1da766){_0x4aac5a['push'](_0x4aac5a['shift']());}};_0x42e7bc(++_0x15b04c);}(_0xc7c2,0x121));var _0x2c7c=function(_0x147ceb,_0x26e073){_0x147ceb=_0x147ceb-0x0;var _0x32a839=_0xc7c2[_0x147ceb];return _0x32a839;};'use strict';var _=require(_0x2c7c('0x0'));var util=require(_0x2c7c('0x1'));var moment=require('moment');var BPromise=require(_0x2c7c('0x2'));var rs=require(_0x2c7c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2c7c('0x4'))['db'];var utils=require(_0x2c7c('0x5'));var logger=require('../../config/logger')(_0x2c7c('0x6'));var config=require(_0x2c7c('0x7'));var jayson=require(_0x2c7c('0x8'));var client=jayson[_0x2c7c('0x9')][_0x2c7c('0xa')]({'port':0x232a});config[_0x2c7c('0xb')]=_[_0x2c7c('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2c7c('0xb')]));require(_0x2c7c('0xd'))[_0x2c7c('0xe')](socket);function respondWithRpcPromise(_0x12e7c2,_0x2cab0a,_0x4e599e){return new BPromise(function(_0x31942f,_0x126614){return client[_0x2c7c('0xf')](_0x12e7c2,_0x4e599e)[_0x2c7c('0x10')](function(_0x183c3d){logger[_0x2c7c('0x11')](_0x2c7c('0x12'),_0x2cab0a,'request\x20sent');logger[_0x2c7c('0x13')](_0x2c7c('0x14'),_0x2cab0a,'request\x20sent',JSON[_0x2c7c('0x15')](_0x183c3d));if(_0x183c3d['error']){if(_0x183c3d[_0x2c7c('0x16')][_0x2c7c('0x17')]===0x1f4){logger[_0x2c7c('0x16')](_0x2c7c('0x12'),_0x2cab0a,_0x183c3d[_0x2c7c('0x16')][_0x2c7c('0x18')]);return _0x126614(_0x183c3d[_0x2c7c('0x16')]['message']);}logger[_0x2c7c('0x16')](_0x2c7c('0x12'),_0x2cab0a,_0x183c3d[_0x2c7c('0x16')][_0x2c7c('0x18')]);return _0x31942f(_0x183c3d[_0x2c7c('0x16')][_0x2c7c('0x18')]);}else{logger[_0x2c7c('0x11')](_0x2c7c('0x12'),_0x2cab0a,'request\x20sent');_0x31942f(_0x183c3d[_0x2c7c('0x19')][_0x2c7c('0x18')]);}})[_0x2c7c('0x1a')](function(_0x2e09aa){logger[_0x2c7c('0x16')](_0x2c7c('0x12'),_0x2cab0a,_0x2e09aa);_0x126614(_0x2e09aa);});});}exports[_0x2c7c('0x1b')]=function(_0xc51d3d){var _0xe4c6f5=this;return new Promise(function(_0x56252b,_0x54b589){return db[_0x2c7c('0x1c')][_0x2c7c('0x1d')](_0xc51d3d[_0x2c7c('0x1e')],{'raw':_0xc51d3d['options']?_0xc51d3d[_0x2c7c('0x1f')][_0x2c7c('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xc51d3d[_0x2c7c('0x1f')]?_0xc51d3d[_0x2c7c('0x1f')][_0x2c7c('0x21')]||null:null,'attributes':_0xc51d3d['options']?_0xc51d3d['options'][_0x2c7c('0x22')]||null:null,'limit':_0xc51d3d[_0x2c7c('0x1f')]?_0xc51d3d[_0x2c7c('0x1f')][_0x2c7c('0x23')]||null:null})[_0x2c7c('0x10')](function(_0x255be8){logger[_0x2c7c('0x11')](_0x2c7c('0x1b'),_0xc51d3d);logger['debug'](_0x2c7c('0x1b'),_0xc51d3d,JSON[_0x2c7c('0x15')](_0x255be8));_0x56252b(_0x255be8);})[_0x2c7c('0x1a')](function(_0x5873bd){logger[_0x2c7c('0x16')]('UpdateFaxInteraction',_0x5873bd[_0x2c7c('0x18')],_0xc51d3d);_0x54b589(_0xe4c6f5['error'](0x1f4,_0x5873bd['message']));});});};exports[_0x2c7c('0x24')]=function(_0x277f7d){return new Promise(function(_0x595eab,_0x3e3e0c){return db[_0x2c7c('0x1c')][_0x2c7c('0x25')]({'where':_0x277f7d[_0x2c7c('0x1f')]?_0x277f7d[_0x2c7c('0x1f')][_0x2c7c('0x21')]||null:null})[_0x2c7c('0x10')](function(_0xa93e76){if(_0xa93e76){return _0xa93e76['addTags'](_0x277f7d[_0x2c7c('0x1e')]['ids'],_[_0x2c7c('0x26')](_0x277f7d['body'],[_0x2c7c('0x27'),'id'])||{});}})[_0x2c7c('0x28')](function(_0x52b926){logger[_0x2c7c('0x11')](_0x2c7c('0x29'),_0x277f7d);logger['debug']('AddTags',_0x277f7d,JSON[_0x2c7c('0x15')](_0x52b926));_0x595eab(_0x52b926);})[_0x2c7c('0x1a')](function(_0x3f853e){logger[_0x2c7c('0x16')](_0x2c7c('0x29'),_0x3f853e[_0x2c7c('0x18')],_0x277f7d);_0x3e3e0c(_this[_0x2c7c('0x16')](0x1f4,_0x3f853e['message']));});});};
\ No newline at end of file
+var _0x4e51=['options','where','attributes','limit','then','catch','find','addTags','body','ids','omit','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','request','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','UpdateFaxInteraction','FaxInteraction'];(function(_0x233385,_0x2bc576){var _0x4d016a=function(_0x5deb73){while(--_0x5deb73){_0x233385['push'](_0x233385['shift']());}};_0x4d016a(++_0x2bc576);}(_0x4e51,0xb8));var _0x14e5=function(_0x562362,_0x5d54f4){_0x562362=_0x562362-0x0;var _0x3a18ce=_0x4e51[_0x562362];return _0x3a18ce;};'use strict';var _=require(_0x14e5('0x0'));var util=require(_0x14e5('0x1'));var moment=require('moment');var BPromise=require(_0x14e5('0x2'));var rs=require(_0x14e5('0x3'));var fs=require('fs');var Redis=require(_0x14e5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x14e5('0x5'));var logger=require(_0x14e5('0x6'))(_0x14e5('0x7'));var config=require(_0x14e5('0x8'));var jayson=require(_0x14e5('0x9'));var client=jayson[_0x14e5('0xa')][_0x14e5('0xb')]({'port':0x232a});config[_0x14e5('0xc')]=_[_0x14e5('0xd')](config[_0x14e5('0xc')],{'host':_0x14e5('0xe'),'port':0x18eb});var socket=require(_0x14e5('0xf'))(new Redis(config[_0x14e5('0xc')]));require(_0x14e5('0x10'))[_0x14e5('0x11')](socket);function respondWithRpcPromise(_0x3e2047,_0x5efd31,_0x14f510){return new BPromise(function(_0x322af8,_0x2bf7a9){return client[_0x14e5('0x12')](_0x3e2047,_0x14f510)['then'](function(_0x2205df){logger['info'](_0x14e5('0x13'),_0x5efd31,_0x14e5('0x14'));logger[_0x14e5('0x15')](_0x14e5('0x16'),_0x5efd31,'request\x20sent',JSON[_0x14e5('0x17')](_0x2205df));if(_0x2205df[_0x14e5('0x18')]){if(_0x2205df[_0x14e5('0x18')][_0x14e5('0x19')]===0x1f4){logger['error'](_0x14e5('0x13'),_0x5efd31,_0x2205df[_0x14e5('0x18')]['message']);return _0x2bf7a9(_0x2205df[_0x14e5('0x18')][_0x14e5('0x1a')]);}logger[_0x14e5('0x18')]('FaxInteraction,\x20%s,\x20%s',_0x5efd31,_0x2205df['error'][_0x14e5('0x1a')]);return _0x322af8(_0x2205df['error'][_0x14e5('0x1a')]);}else{logger[_0x14e5('0x1b')](_0x14e5('0x13'),_0x5efd31,_0x14e5('0x14'));_0x322af8(_0x2205df[_0x14e5('0x1c')][_0x14e5('0x1a')]);}})['catch'](function(_0xc67ba2){logger['error'](_0x14e5('0x13'),_0x5efd31,_0xc67ba2);_0x2bf7a9(_0xc67ba2);});});}exports[_0x14e5('0x1d')]=function(_0x16b2d8){var _0x5df6c9=this;return new Promise(function(_0x35741f,_0x534d5a){return db[_0x14e5('0x1e')]['update'](_0x16b2d8['body'],{'raw':_0x16b2d8[_0x14e5('0x1f')]?_0x16b2d8[_0x14e5('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16b2d8['options']?_0x16b2d8[_0x14e5('0x1f')][_0x14e5('0x20')]||null:null,'attributes':_0x16b2d8[_0x14e5('0x1f')]?_0x16b2d8['options'][_0x14e5('0x21')]||null:null,'limit':_0x16b2d8[_0x14e5('0x1f')]?_0x16b2d8[_0x14e5('0x1f')][_0x14e5('0x22')]||null:null})[_0x14e5('0x23')](function(_0x14cd8b){logger[_0x14e5('0x1b')](_0x14e5('0x1d'),_0x16b2d8);logger[_0x14e5('0x15')]('UpdateFaxInteraction',_0x16b2d8,JSON[_0x14e5('0x17')](_0x14cd8b));_0x35741f(_0x14cd8b);})[_0x14e5('0x24')](function(_0x4c0003){logger['error'](_0x14e5('0x1d'),_0x4c0003[_0x14e5('0x1a')],_0x16b2d8);_0x534d5a(_0x5df6c9[_0x14e5('0x18')](0x1f4,_0x4c0003[_0x14e5('0x1a')]));});});};exports['AddTagsToFaxInteraction']=function(_0x10ca57){return new Promise(function(_0x54fba0,_0x252468){return db[_0x14e5('0x1e')][_0x14e5('0x25')]({'where':_0x10ca57[_0x14e5('0x1f')]?_0x10ca57[_0x14e5('0x1f')][_0x14e5('0x20')]||null:null})['then'](function(_0x403f4c){if(_0x403f4c){return _0x403f4c[_0x14e5('0x26')](_0x10ca57[_0x14e5('0x27')][_0x14e5('0x28')],_[_0x14e5('0x29')](_0x10ca57['body'],[_0x14e5('0x28'),'id'])||{});}})['spread'](function(_0xe5d291){logger[_0x14e5('0x1b')](_0x14e5('0x2a'),_0x10ca57);logger[_0x14e5('0x15')](_0x14e5('0x2a'),_0x10ca57,JSON[_0x14e5('0x17')](_0xe5d291));_0x54fba0(_0xe5d291);})[_0x14e5('0x24')](function(_0x19c246){logger[_0x14e5('0x18')](_0x14e5('0x2a'),_0x19c246[_0x14e5('0x1a')],_0x10ca57);_0x252468(_this[_0x14e5('0x18')](0x1f4,_0x19c246['message']));});});};
\ No newline at end of file
index 20b4bf0..45635d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b10=['update','removeListener','register','length','faxInteraction:','./faxInteraction.events','save','remove'];(function(_0x4c85c0,_0x225a67){var _0x59e164=function(_0x3583a0){while(--_0x3583a0){_0x4c85c0['push'](_0x4c85c0['shift']());}};_0x59e164(++_0x225a67);}(_0x7b10,0x65));var _0x07b1=function(_0x3a8ec7,_0x54d882){_0x3a8ec7=_0x3a8ec7-0x0;var _0x4ed690=_0x7b10[_0x3a8ec7];return _0x4ed690;};'use strict';var FaxInteractionEvents=require(_0x07b1('0x0'));var events=[_0x07b1('0x1'),_0x07b1('0x2'),_0x07b1('0x3')];function createListener(_0x107aa3,_0x3af919){return function(_0x1456e0){_0x3af919['emit'](_0x107aa3,_0x1456e0);};}function removeListener(_0x23f2f3,_0x42ddee){return function(){FaxInteractionEvents[_0x07b1('0x4')](_0x23f2f3,_0x42ddee);};}exports[_0x07b1('0x5')]=function(_0xd71b10){for(var _0x3e988b=0x0,_0x1a0f1b=events[_0x07b1('0x6')];_0x3e988b<_0x1a0f1b;_0x3e988b++){var _0x55bfbd=events[_0x3e988b];var _0x23427d=createListener(_0x07b1('0x7')+_0x55bfbd,_0xd71b10);FaxInteractionEvents['on'](_0x55bfbd,_0x23427d);}};
\ No newline at end of file
+var _0x70c6=['register','./faxInteraction.events','save','update','emit','removeListener'];(function(_0x3b92e6,_0x41b21d){var _0x269f4d=function(_0x5b2e7f){while(--_0x5b2e7f){_0x3b92e6['push'](_0x3b92e6['shift']());}};_0x269f4d(++_0x41b21d);}(_0x70c6,0xf1));var _0x670c=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x70c6[_0x59ee6f];return _0x4c0979;};'use strict';var FaxInteractionEvents=require(_0x670c('0x0'));var events=[_0x670c('0x1'),'remove',_0x670c('0x2')];function createListener(_0x57606c,_0x34a259){return function(_0x53c814){_0x34a259[_0x670c('0x3')](_0x57606c,_0x53c814);};}function removeListener(_0x17a369,_0x25fbe0){return function(){FaxInteractionEvents[_0x670c('0x4')](_0x17a369,_0x25fbe0);};}exports[_0x670c('0x5')]=function(_0x119b56){for(var _0x17cec9=0x0,_0x3d34f1=events['length'];_0x17cec9<_0x3d34f1;_0x17cec9++){var _0x2ded42=events[_0x17cec9];var _0x485805=createListener('faxInteraction:'+_0x2ded42,_0x119b56);FaxInteractionEvents['on'](_0x2ded42,_0x485805);}};
\ No newline at end of file
index d48fdec..0636146 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21bb=['update','delete','faxinteraction:destroy','removeTags','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update'];(function(_0xd299c3,_0x4ba0f1){var _0x376574=function(_0xc585f){while(--_0xc585f){_0xd299c3['push'](_0xd299c3['shift']());}};_0x376574(++_0x4ba0f1);}(_0x21bb,0x131));var _0xb21b=function(_0x100f77,_0x1c6be6){_0x100f77=_0x100f77-0x0;var _0x370725=_0x21bb[_0x100f77];return _0x370725;};'use strict';var multer=require('multer');var util=require(_0xb21b('0x0'));var path=require(_0xb21b('0x1'));var timeout=require('connect-timeout');var express=require(_0xb21b('0x2'));var router=express[_0xb21b('0x3')]();var fs_extra=require(_0xb21b('0x4'));var auth=require(_0xb21b('0x5'));var interaction=require(_0xb21b('0x6'));var config=require(_0xb21b('0x7'));var controller=require(_0xb21b('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xb21b('0x9')](_0xb21b('0xa'),auth[_0xb21b('0xb')](),controller[_0xb21b('0xc')]);router[_0xb21b('0x9')](_0xb21b('0xd'),auth[_0xb21b('0xb')](),controller[_0xb21b('0xe')]);router[_0xb21b('0x9')]('/:id/messages',auth['isAuthenticated'](),controller['getMessages']);router[_0xb21b('0x9')]('/:id/download',auth[_0xb21b('0xb')](),controller['download']);router[_0xb21b('0xf')]('/',auth[_0xb21b('0xb')](),controller[_0xb21b('0x10')]);router[_0xb21b('0xf')]('/:id/messages',auth[_0xb21b('0xb')](),controller[_0xb21b('0x11')]);router[_0xb21b('0xf')](_0xb21b('0x12'),auth['isAuthenticated'](),interaction[_0xb21b('0x13')](_0xb21b('0x14'),_0xb21b('0x15')),controller[_0xb21b('0x16')]);router[_0xb21b('0x17')](_0xb21b('0xd'),auth[_0xb21b('0xb')](),interaction[_0xb21b('0x13')](_0xb21b('0x14'),_0xb21b('0x18')),controller[_0xb21b('0x19')]);router[_0xb21b('0x1a')]('/:id',auth[_0xb21b('0xb')](),interaction[_0xb21b('0x13')](_0xb21b('0x14'),_0xb21b('0x1b')),controller['destroy']);router['delete'](_0xb21b('0x12'),auth[_0xb21b('0xb')](),controller[_0xb21b('0x1c')]);module[_0xb21b('0x1d')]=router;
\ No newline at end of file
+var _0x24ff=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','isAuthenticated','index','/describe','get','/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','faxinteraction:addtags','addTags','put','fax','faxinteraction:update','update','faxinteraction:destroy','delete','removeTags','exports','multer','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x24ff,0x64));var _0xf24f=function(_0x3f81bb,_0x89b302){_0x3f81bb=_0x3f81bb-0x0;var _0x12eeb0=_0x24ff[_0x3f81bb];return _0x12eeb0;};'use strict';var multer=require(_0xf24f('0x0'));var util=require(_0xf24f('0x1'));var path=require('path');var timeout=require(_0xf24f('0x2'));var express=require(_0xf24f('0x3'));var router=express[_0xf24f('0x4')]();var fs_extra=require(_0xf24f('0x5'));var auth=require(_0xf24f('0x6'));var interaction=require(_0xf24f('0x7'));var config=require(_0xf24f('0x8'));var controller=require(_0xf24f('0x9'));router['get']('/',auth[_0xf24f('0xa')](),controller[_0xf24f('0xb')]);router['get'](_0xf24f('0xc'),auth[_0xf24f('0xa')](),controller['describe']);router[_0xf24f('0xd')](_0xf24f('0xe'),auth['isAuthenticated'](),controller[_0xf24f('0xf')]);router[_0xf24f('0xd')](_0xf24f('0x10'),auth[_0xf24f('0xa')](),controller[_0xf24f('0x11')]);router[_0xf24f('0xd')](_0xf24f('0x12'),auth[_0xf24f('0xa')](),controller[_0xf24f('0x13')]);router[_0xf24f('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf24f('0x14')](_0xf24f('0x10'),auth[_0xf24f('0xa')](),controller[_0xf24f('0x15')]);router[_0xf24f('0x14')](_0xf24f('0x16'),auth[_0xf24f('0xa')](),interaction[_0xf24f('0x17')]('fax',_0xf24f('0x18')),controller[_0xf24f('0x19')]);router[_0xf24f('0x1a')](_0xf24f('0xe'),auth[_0xf24f('0xa')](),interaction[_0xf24f('0x17')](_0xf24f('0x1b'),_0xf24f('0x1c')),controller[_0xf24f('0x1d')]);router['delete'](_0xf24f('0xe'),auth[_0xf24f('0xa')](),interaction[_0xf24f('0x17')](_0xf24f('0x1b'),_0xf24f('0x1e')),controller['destroy']);router[_0xf24f('0x1f')](_0xf24f('0x16'),auth['isAuthenticated'](),controller[_0xf24f('0x20')]);module[_0xf24f('0x21')]=router;
\ No newline at end of file
index 6d9d2cb..2fb8e7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca66=['DATE','sequelize','medium','BOOLEAN','ENUM','out'];(function(_0x68a63e,_0x2f087d){var _0xc23718=function(_0x14f41a){while(--_0x14f41a){_0x68a63e['push'](_0x68a63e['shift']());}};_0xc23718(++_0x2f087d);}(_0xca66,0x8b));var _0x6ca6=function(_0xf9ccb,_0x312a15){_0xf9ccb=_0xf9ccb-0x0;var _0x2e2d4b=_0xca66[_0xf9ccb];return _0x2e2d4b;};'use strict';var Sequelize=require(_0x6ca6('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x6ca6('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x6ca6('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x6ca6('0x3')]('in','out'),'defaultValue':_0x6ca6('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x6ca6('0x5')]}};
\ No newline at end of file
+var _0x4944=['out','sequelize','TEXT','medium','BOOLEAN','ENUM'];(function(_0x4e9a52,_0x25b20d){var _0x2d425f=function(_0x4f2157){while(--_0x4f2157){_0x4e9a52['push'](_0x4e9a52['shift']());}};_0x2d425f(++_0x25b20d);}(_0x4944,0x6d));var _0x4494=function(_0x3d6b15,_0x410af6){_0x3d6b15=_0x3d6b15-0x0;var _0x31b069=_0x4944[_0x3d6b15];return _0x31b069;};'use strict';var Sequelize=require(_0x4494('0x0'));module['exports']={'body':{'type':Sequelize[_0x4494('0x1')](_0x4494('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4494('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4494('0x4')]('in',_0x4494('0x5')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x4494('0x1')],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index 6b22f1b..8fd0e07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd677=['SELECT','contact','User','agent','fullname','email','internal','interface','channel','accept','acceptmessage','FaxInteractionId','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','ContactId','SIP/%s','event','EventManager','create','CmContact','findOne','Attachment','/var/opt/motion2/server/files/attachments/%s','basename','AttachmentId','download','join','root','server','files','attachments','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxMessage.socket','register','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','json','offset','undefined','limit','count','status','set','apply','reject','save','destroy','end','stack','name','send','index','FaxMessage','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','rows','fields','options','find','update','body','params','describe','../../config/logger','fax-interactions','fax','read','readAt','format','UserId','get','FaxInteraction','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes'];(function(_0x1c06c0,_0x1f9731){var _0x5857c0=function(_0xc8e0c7){while(--_0xc8e0c7){_0x1c06c0['push'](_0x1c06c0['shift']());}};_0x5857c0(++_0x1f9731);}(_0xd677,0x1cd));var _0x7d67=function(_0x5c3cfd,_0x491545){_0x5c3cfd=_0x5c3cfd-0x0;var _0x3488f1=_0xd677[_0x5c3cfd];return _0x3488f1;};'use strict';var emlformat=require(_0x7d67('0x0'));var rimraf=require(_0x7d67('0x1'));var zipdir=require(_0x7d67('0x2'));var jsonpatch=require(_0x7d67('0x3'));var rp=require(_0x7d67('0x4'));var moment=require(_0x7d67('0x5'));var BPromise=require(_0x7d67('0x6'));var Mustache=require(_0x7d67('0x7'));var util=require(_0x7d67('0x8'));var path=require(_0x7d67('0x9'));var sox=require(_0x7d67('0xa'));var csv=require(_0x7d67('0xb'));var ejs=require(_0x7d67('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x7d67('0xd'));var jsforce=require(_0x7d67('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7d67('0xf'));var Papa=require(_0x7d67('0x10'));var Redis=require('ioredis');var authService=require(_0x7d67('0x11'));var qs=require(_0x7d67('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7d67('0x13'));var logger=require('../../config/logger')(_0x7d67('0x14'));var utils=require(_0x7d67('0x15'));var config=require(_0x7d67('0x16'));var licenseUtil=require(_0x7d67('0x17'));var db=require(_0x7d67('0x18'))['db'];config['redis']=_['defaults'](config[_0x7d67('0x19')],{'host':_0x7d67('0x1a'),'port':0x18eb});var socket=require(_0x7d67('0x1b'))(new Redis(config[_0x7d67('0x19')]));require(_0x7d67('0x1c'))[_0x7d67('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7d67('0x1e')][_0x7d67('0x1f')]({'port':0x232c});var client9002=jayson[_0x7d67('0x1e')][_0x7d67('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x3625ac,_0x1de9fa,_0x229471,_0x1550ec){return new BPromise(function(_0x12161a,_0x10316c){var _0x46b71f=_0x1550ec||client;return _0x46b71f[_0x7d67('0x20')](_0x3625ac,_0x229471)[_0x7d67('0x21')](function(_0x4f1895){logger[_0x7d67('0x22')](_0x7d67('0x23'),_0x1de9fa,_0x7d67('0x24'));logger['debug'](_0x7d67('0x25'),_0x1de9fa,_0x7d67('0x24'),JSON[_0x7d67('0x26')](_0x4f1895));if(_0x4f1895[_0x7d67('0x27')]){if(_0x4f1895[_0x7d67('0x27')][_0x7d67('0x28')]===0x1f4){logger['error'](_0x7d67('0x23'),_0x1de9fa,_0x4f1895[_0x7d67('0x27')][_0x7d67('0x29')]);return _0x10316c(_0x4f1895[_0x7d67('0x27')][_0x7d67('0x29')]);}logger[_0x7d67('0x27')](_0x7d67('0x23'),_0x1de9fa,_0x4f1895[_0x7d67('0x27')][_0x7d67('0x29')]);return _0x12161a(_0x4f1895[_0x7d67('0x27')][_0x7d67('0x29')]);}else{logger[_0x7d67('0x22')](_0x7d67('0x23'),_0x1de9fa,_0x7d67('0x24'));_0x12161a(_0x4f1895[_0x7d67('0x2a')][_0x7d67('0x29')]);}})[_0x7d67('0x2b')](function(_0x535e30){logger[_0x7d67('0x27')]('FaxMessage,\x20%s,\x20%s',_0x1de9fa,_0x535e30);_0x10316c(_0x535e30);});});}function respondWithStatusCode(_0x5dc363,_0x7b30c3){_0x7b30c3=_0x7b30c3||0xcc;return function(_0x2e5332){if(_0x2e5332){return _0x5dc363[_0x7d67('0x2c')](_0x7b30c3);}return _0x5dc363['status'](_0x7b30c3)['end']();};}function respondWithResult(_0x2d1fbf,_0x1219ff){_0x1219ff=_0x1219ff||0xc8;return function(_0x496693){if(_0x496693){return _0x2d1fbf['status'](_0x1219ff)[_0x7d67('0x2d')](_0x496693);}};}function respondWithFilteredResult(_0x2c1869,_0x2bd762){return function(_0x161a73){if(_0x161a73){var _0x794c28=typeof _0x2bd762[_0x7d67('0x2e')]===_0x7d67('0x2f')&&typeof _0x2bd762[_0x7d67('0x30')]===_0x7d67('0x2f');var _0x334db3=_0x161a73[_0x7d67('0x31')];var _0x1e5159=_0x794c28?0x0:_0x2bd762[_0x7d67('0x2e')];var _0x75e946=_0x794c28?_0x161a73[_0x7d67('0x31')]:_0x2bd762[_0x7d67('0x2e')]+_0x2bd762[_0x7d67('0x30')];var _0x39f786;if(_0x75e946>=_0x334db3){_0x75e946=_0x334db3;_0x39f786=0xc8;}else{_0x39f786=0xce;}_0x2c1869[_0x7d67('0x32')](_0x39f786);return _0x2c1869[_0x7d67('0x33')]('Content-Range',_0x1e5159+'-'+_0x75e946+'/'+_0x334db3)[_0x7d67('0x2d')](_0x161a73);}return null;};}function patchUpdates(_0x3a8584){return function(_0x4ceb06){try{jsonpatch[_0x7d67('0x34')](_0x4ceb06,_0x3a8584,!![]);}catch(_0x263491){return BPromise[_0x7d67('0x35')](_0x263491);}return _0x4ceb06[_0x7d67('0x36')]();};}function saveUpdates(_0x536561,_0x1715af){return function(_0x21877f){if(_0x21877f){return _0x21877f['update'](_0x536561)[_0x7d67('0x21')](function(_0x1fff8c){return _0x1fff8c;});}return null;};}function removeEntity(_0x4b7860,_0x482d3d){return function(_0x377b64){if(_0x377b64){return _0x377b64[_0x7d67('0x37')]()['then'](function(){_0x4b7860[_0x7d67('0x32')](0xcc)[_0x7d67('0x38')]();});}};}function handleEntityNotFound(_0xd1fcd9,_0x185e13){return function(_0xc791bd){if(!_0xc791bd){_0xd1fcd9[_0x7d67('0x2c')](0x194);}return _0xc791bd;};}function handleError(_0x4aa99b,_0x5b4e11){_0x5b4e11=_0x5b4e11||0x1f4;return function(_0x4b6861){logger['error'](_0x4b6861[_0x7d67('0x39')]);if(_0x4b6861[_0x7d67('0x3a')]){delete _0x4b6861[_0x7d67('0x3a')];}_0x4aa99b[_0x7d67('0x32')](_0x5b4e11)[_0x7d67('0x3b')](_0x4b6861);};}exports[_0x7d67('0x3c')]=function(_0x38b7f7,_0x365e23){var _0x2d43b4={},_0x33b765={},_0x1090c5={'count':0x0,'rows':[]};var _0x279fa1=_['map'](db[_0x7d67('0x3d')][_0x7d67('0x3e')],function(_0x19a23b){return{'name':_0x19a23b[_0x7d67('0x3f')],'type':_0x19a23b[_0x7d67('0x40')][_0x7d67('0x41')]};});_0x33b765[_0x7d67('0x42')]=_[_0x7d67('0x43')](_0x279fa1,_0x7d67('0x3a'));_0x33b765['query']=_[_0x7d67('0x44')](_0x38b7f7['query']);_0x33b765[_0x7d67('0x45')]=_[_0x7d67('0x46')](_0x33b765[_0x7d67('0x42')],_0x33b765[_0x7d67('0x47')]);_0x2d43b4[_0x7d67('0x48')]=_['intersection'](_0x33b765[_0x7d67('0x42')],qs['fields'](_0x38b7f7[_0x7d67('0x47')]['fields']));_0x2d43b4['attributes']=_0x2d43b4[_0x7d67('0x48')][_0x7d67('0x49')]?_0x2d43b4[_0x7d67('0x48')]:_0x33b765[_0x7d67('0x42')];if(!_0x38b7f7[_0x7d67('0x47')][_0x7d67('0x4a')](_0x7d67('0x4b'))){_0x2d43b4[_0x7d67('0x30')]=qs[_0x7d67('0x30')](_0x38b7f7[_0x7d67('0x47')][_0x7d67('0x30')]);_0x2d43b4[_0x7d67('0x2e')]=qs[_0x7d67('0x2e')](_0x38b7f7['query'][_0x7d67('0x2e')]);}_0x2d43b4[_0x7d67('0x4c')]=qs[_0x7d67('0x4d')](_0x38b7f7['query'][_0x7d67('0x4d')]);_0x2d43b4[_0x7d67('0x4e')]=qs[_0x7d67('0x45')](_['pick'](_0x38b7f7[_0x7d67('0x47')],_0x33b765[_0x7d67('0x45')]),_0x279fa1);if(_0x38b7f7[_0x7d67('0x47')][_0x7d67('0x4f')]){_0x2d43b4[_0x7d67('0x4e')]=_[_0x7d67('0x50')](_0x2d43b4[_0x7d67('0x4e')],{'$or':_[_0x7d67('0x43')](_0x279fa1,function(_0x48afc3){if(_0x48afc3[_0x7d67('0x40')]!=='VIRTUAL'){var _0x223477={};_0x223477[_0x48afc3['name']]={'$like':'%'+_0x38b7f7['query'][_0x7d67('0x4f')]+'%'};return _0x223477;}})});}_0x2d43b4=_[_0x7d67('0x50')]({},_0x2d43b4,_0x38b7f7['options']);var _0x423b6d={'where':_0x2d43b4[_0x7d67('0x4e')]};return db[_0x7d67('0x3d')][_0x7d67('0x31')](_0x423b6d)[_0x7d67('0x21')](function(_0x29f2dd){_0x1090c5[_0x7d67('0x31')]=_0x29f2dd;if(_0x38b7f7[_0x7d67('0x47')][_0x7d67('0x51')]){_0x2d43b4['include']=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x2d43b4);})[_0x7d67('0x21')](function(_0x5ba332){_0x1090c5[_0x7d67('0x52')]=_0x5ba332;return _0x1090c5;})[_0x7d67('0x21')](respondWithFilteredResult(_0x365e23,_0x2d43b4))[_0x7d67('0x2b')](handleError(_0x365e23,null));};exports['show']=function(_0xb1e2f7,_0x4c949a){var _0xde834e={'raw':!![],'where':{'id':_0xb1e2f7['params']['id']}},_0x16619c={};_0x16619c[_0x7d67('0x42')]=_[_0x7d67('0x44')](db[_0x7d67('0x3d')][_0x7d67('0x3e')]);_0x16619c[_0x7d67('0x47')]=_[_0x7d67('0x44')](_0xb1e2f7[_0x7d67('0x47')]);_0x16619c[_0x7d67('0x45')]=_[_0x7d67('0x46')](_0x16619c['model'],_0x16619c[_0x7d67('0x47')]);_0xde834e[_0x7d67('0x48')]=_[_0x7d67('0x46')](_0x16619c[_0x7d67('0x42')],qs[_0x7d67('0x53')](_0xb1e2f7['query'][_0x7d67('0x53')]));_0xde834e[_0x7d67('0x48')]=_0xde834e[_0x7d67('0x48')]['length']?_0xde834e[_0x7d67('0x48')]:_0x16619c[_0x7d67('0x42')];if(_0xb1e2f7[_0x7d67('0x47')][_0x7d67('0x51')]){_0xde834e['include']=[{'all':!![]}];}_0xde834e=_['merge']({},_0xde834e,_0xb1e2f7[_0x7d67('0x54')]);return db['FaxMessage'][_0x7d67('0x55')](_0xde834e)['then'](handleEntityNotFound(_0x4c949a,null))[_0x7d67('0x21')](respondWithResult(_0x4c949a,null))[_0x7d67('0x2b')](handleError(_0x4c949a,null));};exports[_0x7d67('0x56')]=function(_0x18f9a4,_0x5747a2){if(_0x18f9a4[_0x7d67('0x57')]['id']){delete _0x18f9a4[_0x7d67('0x57')]['id'];}return db[_0x7d67('0x3d')][_0x7d67('0x55')]({'where':{'id':_0x18f9a4[_0x7d67('0x58')]['id']}})['then'](handleEntityNotFound(_0x5747a2,null))['then'](saveUpdates(_0x18f9a4[_0x7d67('0x57')],null))['then'](respondWithResult(_0x5747a2,null))[_0x7d67('0x2b')](handleError(_0x5747a2,null));};exports[_0x7d67('0x37')]=function(_0x210854,_0x5a1a20){return db[_0x7d67('0x3d')][_0x7d67('0x55')]({'where':{'id':_0x210854[_0x7d67('0x58')]['id']}})[_0x7d67('0x21')](handleEntityNotFound(_0x5a1a20,null))[_0x7d67('0x21')](removeEntity(_0x5a1a20,null))['catch'](handleError(_0x5a1a20,null));};exports['describe']=function(_0x293b18,_0x2857e1){return db[_0x7d67('0x3d')][_0x7d67('0x59')]()['then'](respondWithResult(_0x2857e1,null))[_0x7d67('0x2b')](handleError(_0x2857e1,null));};var interaction_log=require(_0x7d67('0x5a'))(_0x7d67('0x5b'));exports['accept']=function(_0xe9453b,_0x26ae8c,_0x267275){var _0x3a1c52={'agent':{},'channel':_0x7d67('0x5c')};if(_0xe9453b[_0x7d67('0x57')]['id']){delete _0xe9453b['body']['id'];}_0xe9453b[_0x7d67('0x57')][_0x7d67('0x5d')]=!![];_0xe9453b[_0x7d67('0x57')][_0x7d67('0x5e')]=moment()[_0x7d67('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0xe9453b['body'][_0x7d67('0x60')]=_0xe9453b[_0x7d67('0x57')][_0x7d67('0x60')]||_0xe9453b['user']['id'];_0x3a1c52['agent']['id']=_0xe9453b[_0x7d67('0x57')]['UserId'];return db[_0x7d67('0x3d')][_0x7d67('0x55')]({'where':{'id':_0xe9453b[_0x7d67('0x58')]['id'],'UserId':null}})[_0x7d67('0x21')](handleEntityNotFound(_0x26ae8c,null))[_0x7d67('0x21')](saveUpdates(_0xe9453b[_0x7d67('0x57')],null))[_0x7d67('0x21')](function(_0x1a5a21){if(_0x1a5a21){_0x3a1c52[_0x7d67('0x29')]=_0x1a5a21[_0x7d67('0x61')]({'plain':!![]});return db[_0x7d67('0x62')][_0x7d67('0x55')]({'where':{'id':_0x1a5a21['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x26ae8c,null))['then'](function(_0x437853){if(_0x437853){return _0x437853[_0x7d67('0x56')]({'UserId':_0xe9453b[_0x7d67('0x57')][_0x7d67('0x60')],'read1stAt':_[_0x7d67('0x63')](_0x437853[_0x7d67('0x64')])?moment()[_0x7d67('0x5f')](_0x7d67('0x65')):undefined});}return null;})[_0x7d67('0x21')](function(_0x43c7f8){if(_0x43c7f8){_0x3a1c52[_0x7d67('0x66')]=_0x43c7f8[_0x7d67('0x61')]({'plain':!![]});interaction_log[_0x7d67('0x22')](_0x7d67('0x67'),_0xe9453b[_0x7d67('0x68')]['id'],_0xe9453b[_0x7d67('0x68')]['name'],_0xe9453b[_0x7d67('0x68')]['role'],_0x3a1c52[_0x7d67('0x66')]['id'],_0xe9453b[_0x7d67('0x57')]?JSON[_0x7d67('0x26')](_0xe9453b['body']):_0x7d67('0x69'));return respondWithRpcPromise(_0x7d67('0x6a'),'acceptMessage',_0x3a1c52);}return null;})[_0x7d67('0x21')](function(_0x90c446){var _0x4b1678=_0x7d67('0x6b')+_0x90c446['message']['ContactId'];return db[_0x7d67('0x6c')][_0x7d67('0x47')](_0x4b1678,{'type':db[_0x7d67('0x6d')][_0x7d67('0x6e')][_0x7d67('0x6f')],'raw':!![]})['then'](function(_0x30d324){return _0x30d324;});})[_0x7d67('0x21')](function(_0x25d14c){if(_0x25d14c){_0x3a1c52[_0x7d67('0x29')][_0x7d67('0x70')]=_0x25d14c[0x0];if(!_0xe9453b[_0x7d67('0x57')][_0x7d67('0x60')])return;return db[_0x7d67('0x71')][_0x7d67('0x55')]({'where':{'id':_0xe9453b[_0x7d67('0x57')][_0x7d67('0x60')],'role':_0x7d67('0x72')},'attributes':['id','name',_0x7d67('0x73'),_0x7d67('0x74'),_0x7d67('0x75')],'raw':!![]});}return null;})[_0x7d67('0x21')](function(_0x3858f0){if(!_0x3858f0)return null;_0x3a1c52[_0x7d67('0x29')][_0x7d67('0x72')]=_0x3858f0;return _0x3a1c52;})[_0x7d67('0x21')](function(_0x1b149f){if(_0x1b149f){if(_0xe9453b['body']['manual']){_0x3a1c52['message'][_0x7d67('0x76')]=util[_0x7d67('0x5f')]('SIP/%s',_0xe9453b[_0x7d67('0x68')][_0x7d67('0x3a')]);_0x3a1c52[_0x7d67('0x29')][_0x7d67('0x77')]=_0x3a1c52[_0x7d67('0x77')];_0x3a1c52['message']['motionChannel']=_0x3a1c52[_0x7d67('0x77')];_0x3a1c52[_0x7d67('0x29')]['event']=_0x7d67('0x78');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x7d67('0x79'),'message':_0x3a1c52['message']},client9002)[_0x7d67('0x21')](function(){return _0x3a1c52;});}return _0x3a1c52;}return null;})[_0x7d67('0x21')](respondWithResult(_0x26ae8c,null))[_0x7d67('0x2b')](handleError(_0x26ae8c,null));};var interaction_log=require(_0x7d67('0x5a'))(_0x7d67('0x5b'));exports['reject']=function(_0x4159a2,_0x17f29c,_0x662cb){var _0x3ef6ec={'agent':{},'channel':_0x7d67('0x5c')};if(_0x4159a2[_0x7d67('0x57')]['id']){delete _0x4159a2[_0x7d67('0x57')]['id'];}_0x4159a2[_0x7d67('0x57')][_0x7d67('0x60')]=_0x4159a2['body'][_0x7d67('0x60')]||_0x4159a2[_0x7d67('0x68')]['id'];_0x3ef6ec['agent']['id']=_0x4159a2[_0x7d67('0x57')][_0x7d67('0x60')];return db[_0x7d67('0x3d')][_0x7d67('0x55')]({'where':{'id':_0x4159a2[_0x7d67('0x58')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x17f29c,null))['then'](function(_0x4047ac){if(_0x4047ac){_0x3ef6ec[_0x7d67('0x29')]=_0x4047ac['get']({'plain':!![]});return db[_0x7d67('0x62')][_0x7d67('0x55')]({'where':{'id':_0x4047ac[_0x7d67('0x7a')]}});}return null;})[_0x7d67('0x21')](handleEntityNotFound(_0x17f29c,null))['then'](function(_0x4ec81a){if(_0x4ec81a){_0x3ef6ec[_0x7d67('0x66')]=_0x4ec81a[_0x7d67('0x61')]({'plain':!![]});interaction_log[_0x7d67('0x22')](_0x7d67('0x7b'),_0x4159a2[_0x7d67('0x68')]['id'],_0x4159a2[_0x7d67('0x68')]['name'],_0x4159a2[_0x7d67('0x68')][_0x7d67('0x7c')],_0x3ef6ec[_0x7d67('0x66')]['id'],_0x4159a2[_0x7d67('0x57')]?JSON[_0x7d67('0x26')](_0x4159a2[_0x7d67('0x57')]):_0x7d67('0x69'));return respondWithRpcPromise(_0x7d67('0x7d'),'rejectMessage',_0x3ef6ec);}return null;})[_0x7d67('0x21')](function(_0x498b6d){var _0x5d3a14=_0x7d67('0x6b')+_0x498b6d['message'][_0x7d67('0x7e')];return db[_0x7d67('0x6c')][_0x7d67('0x47')](_0x5d3a14,{'type':db['Sequelize'][_0x7d67('0x6e')]['SELECT'],'raw':!![]})[_0x7d67('0x21')](function(_0x5e5fbe){return _0x5e5fbe;});})[_0x7d67('0x21')](function(_0x453510){if(_0x453510){_0x3ef6ec[_0x7d67('0x29')][_0x7d67('0x70')]=_0x453510[0x0];if(!_0x4159a2[_0x7d67('0x57')][_0x7d67('0x60')])return;return db[_0x7d67('0x71')][_0x7d67('0x55')]({'where':{'id':_0x4159a2[_0x7d67('0x57')][_0x7d67('0x60')],'role':_0x7d67('0x72')},'attributes':['id',_0x7d67('0x3a'),'fullname','email',_0x7d67('0x75')],'raw':!![]});}return null;})[_0x7d67('0x21')](function(_0x242659){if(!_0x242659)return null;_0x3ef6ec[_0x7d67('0x29')][_0x7d67('0x72')]=_0x242659;return _0x3ef6ec;})[_0x7d67('0x21')](function(_0x1d3ae9){if(_0x1d3ae9){_0x1d3ae9[_0x7d67('0x29')][_0x7d67('0x76')]=util[_0x7d67('0x5f')](_0x7d67('0x7f'),_0x4159a2[_0x7d67('0x68')][_0x7d67('0x3a')]);_0x1d3ae9['message'][_0x7d67('0x77')]=_0x3ef6ec['channel'];_0x1d3ae9[_0x7d67('0x29')]['motionChannel']=_0x3ef6ec[_0x7d67('0x77')];_0x1d3ae9[_0x7d67('0x29')][_0x7d67('0x80')]=_0x7d67('0x35');respondWithRpcPromise(_0x7d67('0x81'),_0x7d67('0x81'),{'event':'rejectmessage','message':_0x1d3ae9['message']},client9002);return _0x3ef6ec;}return null;})['then'](respondWithResult(_0x17f29c,null))[_0x7d67('0x2b')](handleError(_0x17f29c,null));};exports[_0x7d67('0x82')]=function(_0x3754d6,_0x40b960){var _0x13b60f;return db['FaxMessage']['create'](_0x3754d6[_0x7d67('0x57')],{})[_0x7d67('0x21')](function(_0x2cf6d5){_0x13b60f=_0x2cf6d5;return db[_0x7d67('0x83')][_0x7d67('0x84')]({'where':{'id':_0x13b60f['ContactId']}});})[_0x7d67('0x21')](function(_0x38c2f5){if(_[_0x7d67('0x63')](_0x38c2f5)){return;}else{_0x13b60f[_0x7d67('0x5c')]=_0x38c2f5[_0x7d67('0x5c')];return db[_0x7d67('0x85')][_0x7d67('0x84')]({'where':{'id':_0x13b60f['AttachmentId']}});}})[_0x7d67('0x21')](function(_0x26623c){return respondWithRpcPromise('SendFax','SendFax',{'FaxAccountId':_[_0x7d67('0x63')](_0x3754d6[_0x7d67('0x57')])?undefined:_0x3754d6['body']['FaxAccountId'],'path':_[_0x7d67('0x63')](_0x26623c)?undefined:util['format'](_0x7d67('0x86'),_0x26623c[_0x7d67('0x87')]),'fax':_[_0x7d67('0x63')](_0x13b60f[_0x7d67('0x5c')])?undefined:_0x13b60f[_0x7d67('0x5c')],'AttachmentId':_0x13b60f[_0x7d67('0x88')]},client9002);})['then'](respondWithResult(_0x40b960,0xc9))[_0x7d67('0x2b')](handleError(_0x40b960,null));};exports[_0x7d67('0x89')]=function(_0x4400d6,_0x5adacc){var _0x1a5de1=path[_0x7d67('0x8a')](config[_0x7d67('0x8b')],_0x7d67('0x8c'),_0x7d67('0x8d'),_0x7d67('0x8e'));return db[_0x7d67('0x3d')][_0x7d67('0x55')]({'where':{'id':_0x4400d6[_0x7d67('0x58')]['id']},'include':[{'model':db['Attachment'],'as':_0x7d67('0x85')}]})[_0x7d67('0x21')](handleEntityNotFound(_0x5adacc,null))[_0x7d67('0x21')](function(_0x26b407){if(_0x26b407){return _0x5adacc[_0x7d67('0x89')](path[_0x7d67('0x8a')](_0x1a5de1,_0x26b407['Attachment'][_0x7d67('0x87')]));}})['catch'](handleError(_0x5adacc,null));};
\ No newline at end of file
+var _0x6449=['fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','request\x20sent','error','code','FaxMessage,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','undefined','count','limit','Content-Range','save','then','destroy','end','stack','name','send','index','map','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','options','FaxMessage','includeAll','include','findAll','rows','show','params','find','update','body','describe','fax-interactions','read','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','isNil','format','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','SIP/%s','channel','motionChannel','accept','EventManager','acceptmessage','reject','fax','FaxInteractionId','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','contact','interface','event','create','CmContact','findOne','Attachment','AttachmentId','SendFax','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs'];(function(_0x523597,_0x234653){var _0x1d190c=function(_0x23dfe7){while(--_0x23dfe7){_0x523597['push'](_0x523597['shift']());}};_0x1d190c(++_0x234653);}(_0x6449,0x1a2));var _0x9644=function(_0x243217,_0x522951){_0x243217=_0x243217-0x0;var _0x478029=_0x6449[_0x243217];return _0x478029;};'use strict';var emlformat=require(_0x9644('0x0'));var rimraf=require(_0x9644('0x1'));var zipdir=require(_0x9644('0x2'));var jsonpatch=require(_0x9644('0x3'));var rp=require(_0x9644('0x4'));var moment=require(_0x9644('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9644('0x6'));var util=require(_0x9644('0x7'));var path=require('path');var sox=require(_0x9644('0x8'));var csv=require(_0x9644('0x9'));var ejs=require(_0x9644('0xa'));var fs=require('fs');var fs_extra=require(_0x9644('0xb'));var _=require(_0x9644('0xc'));var squel=require('squel');var crypto=require(_0x9644('0xd'));var jsforce=require(_0x9644('0xe'));var deskjs=require(_0x9644('0xf'));var toCsv=require(_0x9644('0x9'));var querystring=require(_0x9644('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9644('0x11'));var qs=require(_0x9644('0x12'));var as=require(_0x9644('0x13'));var hardwareService=require(_0x9644('0x14'));var logger=require(_0x9644('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x9644('0x16'));var licenseUtil=require(_0x9644('0x17'));var db=require(_0x9644('0x18'))['db'];config[_0x9644('0x19')]=_[_0x9644('0x1a')](config[_0x9644('0x19')],{'host':_0x9644('0x1b'),'port':0x18eb});var socket=require(_0x9644('0x1c'))(new Redis(config[_0x9644('0x19')]));require('./faxMessage.socket')[_0x9644('0x1d')](socket);var jayson=require(_0x9644('0x1e'));var client=jayson[_0x9644('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x9644('0x1f')][_0x9644('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x32af45,_0x105972,_0x54162a,_0x229543){return new BPromise(function(_0x178952,_0x142f8d){var _0x3a366b=_0x229543||client;return _0x3a366b[_0x9644('0x21')](_0x32af45,_0x54162a)['then'](function(_0x30b46a){logger[_0x9644('0x22')]('FaxMessage,\x20%s,\x20%s',_0x105972,_0x9644('0x23'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x105972,_0x9644('0x23'),JSON['stringify'](_0x30b46a));if(_0x30b46a[_0x9644('0x24')]){if(_0x30b46a[_0x9644('0x24')][_0x9644('0x25')]===0x1f4){logger[_0x9644('0x24')]('FaxMessage,\x20%s,\x20%s',_0x105972,_0x30b46a['error']['message']);return _0x142f8d(_0x30b46a['error']['message']);}logger[_0x9644('0x24')](_0x9644('0x26'),_0x105972,_0x30b46a[_0x9644('0x24')][_0x9644('0x27')]);return _0x178952(_0x30b46a[_0x9644('0x24')][_0x9644('0x27')]);}else{logger[_0x9644('0x22')](_0x9644('0x26'),_0x105972,_0x9644('0x23'));_0x178952(_0x30b46a[_0x9644('0x28')][_0x9644('0x27')]);}})[_0x9644('0x29')](function(_0x4d8269){logger[_0x9644('0x24')](_0x9644('0x26'),_0x105972,_0x4d8269);_0x142f8d(_0x4d8269);});});}function respondWithStatusCode(_0x1a64c2,_0x2adc74){_0x2adc74=_0x2adc74||0xcc;return function(_0x4d6188){if(_0x4d6188){return _0x1a64c2[_0x9644('0x2a')](_0x2adc74);}return _0x1a64c2[_0x9644('0x2b')](_0x2adc74)['end']();};}function respondWithResult(_0x2e8ca8,_0x5b21ca){_0x5b21ca=_0x5b21ca||0xc8;return function(_0x568128){if(_0x568128){return _0x2e8ca8['status'](_0x5b21ca)[_0x9644('0x2c')](_0x568128);}};}function respondWithFilteredResult(_0x45c201,_0x32879c){return function(_0x1f4727){if(_0x1f4727){var _0x4c7dbd=typeof _0x32879c[_0x9644('0x2d')]===_0x9644('0x2e')&&typeof _0x32879c['limit']==='undefined';var _0x44660e=_0x1f4727[_0x9644('0x2f')];var _0x298cd3=_0x4c7dbd?0x0:_0x32879c[_0x9644('0x2d')];var _0x26fab3=_0x4c7dbd?_0x1f4727[_0x9644('0x2f')]:_0x32879c['offset']+_0x32879c[_0x9644('0x30')];var _0x1684c5;if(_0x26fab3>=_0x44660e){_0x26fab3=_0x44660e;_0x1684c5=0xc8;}else{_0x1684c5=0xce;}_0x45c201[_0x9644('0x2b')](_0x1684c5);return _0x45c201['set'](_0x9644('0x31'),_0x298cd3+'-'+_0x26fab3+'/'+_0x44660e)[_0x9644('0x2c')](_0x1f4727);}return null;};}function patchUpdates(_0xaf5200){return function(_0x78d393){try{jsonpatch['apply'](_0x78d393,_0xaf5200,!![]);}catch(_0x54a269){return BPromise['reject'](_0x54a269);}return _0x78d393[_0x9644('0x32')]();};}function saveUpdates(_0x4dab02,_0x5f5942){return function(_0x1edf3b){if(_0x1edf3b){return _0x1edf3b['update'](_0x4dab02)[_0x9644('0x33')](function(_0x34381b){return _0x34381b;});}return null;};}function removeEntity(_0xaff650,_0x3f5c28){return function(_0x1a219b){if(_0x1a219b){return _0x1a219b[_0x9644('0x34')]()[_0x9644('0x33')](function(){_0xaff650[_0x9644('0x2b')](0xcc)[_0x9644('0x35')]();});}};}function handleEntityNotFound(_0x282e7a,_0x37c949){return function(_0x446852){if(!_0x446852){_0x282e7a['sendStatus'](0x194);}return _0x446852;};}function handleError(_0x1783e2,_0x566ebe){_0x566ebe=_0x566ebe||0x1f4;return function(_0x1e880d){logger[_0x9644('0x24')](_0x1e880d[_0x9644('0x36')]);if(_0x1e880d['name']){delete _0x1e880d[_0x9644('0x37')];}_0x1783e2[_0x9644('0x2b')](_0x566ebe)[_0x9644('0x38')](_0x1e880d);};}exports[_0x9644('0x39')]=function(_0x12539b,_0x4080e5){var _0x1a5d4b={},_0x2ce628={},_0x2685aa={'count':0x0,'rows':[]};var _0x308e33=_[_0x9644('0x3a')](db['FaxMessage'][_0x9644('0x3b')],function(_0x5927ca){return{'name':_0x5927ca['fieldName'],'type':_0x5927ca[_0x9644('0x3c')]['key']};});_0x2ce628[_0x9644('0x3d')]=_[_0x9644('0x3a')](_0x308e33,'name');_0x2ce628[_0x9644('0x3e')]=_[_0x9644('0x3f')](_0x12539b[_0x9644('0x3e')]);_0x2ce628[_0x9644('0x40')]=_['intersection'](_0x2ce628[_0x9644('0x3d')],_0x2ce628[_0x9644('0x3e')]);_0x1a5d4b[_0x9644('0x41')]=_[_0x9644('0x42')](_0x2ce628[_0x9644('0x3d')],qs[_0x9644('0x43')](_0x12539b[_0x9644('0x3e')][_0x9644('0x43')]));_0x1a5d4b[_0x9644('0x41')]=_0x1a5d4b[_0x9644('0x41')][_0x9644('0x44')]?_0x1a5d4b[_0x9644('0x41')]:_0x2ce628[_0x9644('0x3d')];if(!_0x12539b['query'][_0x9644('0x45')]('nolimit')){_0x1a5d4b[_0x9644('0x30')]=qs[_0x9644('0x30')](_0x12539b['query'][_0x9644('0x30')]);_0x1a5d4b[_0x9644('0x2d')]=qs[_0x9644('0x2d')](_0x12539b[_0x9644('0x3e')][_0x9644('0x2d')]);}_0x1a5d4b['order']=qs[_0x9644('0x46')](_0x12539b[_0x9644('0x3e')]['sort']);_0x1a5d4b[_0x9644('0x47')]=qs[_0x9644('0x40')](_[_0x9644('0x48')](_0x12539b[_0x9644('0x3e')],_0x2ce628['filters']),_0x308e33);if(_0x12539b[_0x9644('0x3e')]['filter']){_0x1a5d4b[_0x9644('0x47')]=_[_0x9644('0x49')](_0x1a5d4b['where'],{'$or':_[_0x9644('0x3a')](_0x308e33,function(_0x14c2e7){if(_0x14c2e7[_0x9644('0x3c')]!==_0x9644('0x4a')){var _0x358258={};_0x358258[_0x14c2e7[_0x9644('0x37')]]={'$like':'%'+_0x12539b['query'][_0x9644('0x4b')]+'%'};return _0x358258;}})});}_0x1a5d4b=_[_0x9644('0x49')]({},_0x1a5d4b,_0x12539b[_0x9644('0x4c')]);var _0x3b8e33={'where':_0x1a5d4b[_0x9644('0x47')]};return db[_0x9644('0x4d')][_0x9644('0x2f')](_0x3b8e33)['then'](function(_0x8211e3){_0x2685aa[_0x9644('0x2f')]=_0x8211e3;if(_0x12539b['query'][_0x9644('0x4e')]){_0x1a5d4b[_0x9644('0x4f')]=[{'all':!![]}];}return db[_0x9644('0x4d')][_0x9644('0x50')](_0x1a5d4b);})[_0x9644('0x33')](function(_0x34a1e1){_0x2685aa[_0x9644('0x51')]=_0x34a1e1;return _0x2685aa;})[_0x9644('0x33')](respondWithFilteredResult(_0x4080e5,_0x1a5d4b))[_0x9644('0x29')](handleError(_0x4080e5,null));};exports[_0x9644('0x52')]=function(_0x65e0f8,_0x2ba7e2){var _0x41313f={'raw':!![],'where':{'id':_0x65e0f8[_0x9644('0x53')]['id']}},_0x12255c={};_0x12255c['model']=_[_0x9644('0x3f')](db[_0x9644('0x4d')][_0x9644('0x3b')]);_0x12255c[_0x9644('0x3e')]=_['keys'](_0x65e0f8[_0x9644('0x3e')]);_0x12255c['filters']=_[_0x9644('0x42')](_0x12255c[_0x9644('0x3d')],_0x12255c[_0x9644('0x3e')]);_0x41313f[_0x9644('0x41')]=_[_0x9644('0x42')](_0x12255c['model'],qs[_0x9644('0x43')](_0x65e0f8[_0x9644('0x3e')]['fields']));_0x41313f[_0x9644('0x41')]=_0x41313f[_0x9644('0x41')][_0x9644('0x44')]?_0x41313f['attributes']:_0x12255c[_0x9644('0x3d')];if(_0x65e0f8[_0x9644('0x3e')][_0x9644('0x4e')]){_0x41313f[_0x9644('0x4f')]=[{'all':!![]}];}_0x41313f=_[_0x9644('0x49')]({},_0x41313f,_0x65e0f8[_0x9644('0x4c')]);return db[_0x9644('0x4d')][_0x9644('0x54')](_0x41313f)['then'](handleEntityNotFound(_0x2ba7e2,null))['then'](respondWithResult(_0x2ba7e2,null))[_0x9644('0x29')](handleError(_0x2ba7e2,null));};exports[_0x9644('0x55')]=function(_0xfa0824,_0x2f6448){if(_0xfa0824[_0x9644('0x56')]['id']){delete _0xfa0824[_0x9644('0x56')]['id'];}return db[_0x9644('0x4d')]['find']({'where':{'id':_0xfa0824['params']['id']}})[_0x9644('0x33')](handleEntityNotFound(_0x2f6448,null))[_0x9644('0x33')](saveUpdates(_0xfa0824['body'],null))['then'](respondWithResult(_0x2f6448,null))[_0x9644('0x29')](handleError(_0x2f6448,null));};exports['destroy']=function(_0x47e78f,_0x3779df){return db[_0x9644('0x4d')][_0x9644('0x54')]({'where':{'id':_0x47e78f[_0x9644('0x53')]['id']}})[_0x9644('0x33')](handleEntityNotFound(_0x3779df,null))['then'](removeEntity(_0x3779df,null))['catch'](handleError(_0x3779df,null));};exports[_0x9644('0x57')]=function(_0x446f17,_0x24046c){return db[_0x9644('0x4d')]['describe']()[_0x9644('0x33')](respondWithResult(_0x24046c,null))[_0x9644('0x29')](handleError(_0x24046c,null));};var interaction_log=require(_0x9644('0x15'))(_0x9644('0x58'));exports['accept']=function(_0x16ea54,_0x4d3442,_0x357d14){var _0x3c4dd1={'agent':{},'channel':'fax'};if(_0x16ea54[_0x9644('0x56')]['id']){delete _0x16ea54[_0x9644('0x56')]['id'];}_0x16ea54[_0x9644('0x56')][_0x9644('0x59')]=!![];_0x16ea54[_0x9644('0x56')]['readAt']=moment()['format'](_0x9644('0x5a'));_0x16ea54[_0x9644('0x56')]['UserId']=_0x16ea54[_0x9644('0x56')][_0x9644('0x5b')]||_0x16ea54[_0x9644('0x5c')]['id'];_0x3c4dd1[_0x9644('0x5d')]['id']=_0x16ea54[_0x9644('0x56')][_0x9644('0x5b')];return db[_0x9644('0x4d')][_0x9644('0x54')]({'where':{'id':_0x16ea54[_0x9644('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4d3442,null))['then'](saveUpdates(_0x16ea54[_0x9644('0x56')],null))[_0x9644('0x33')](function(_0x136d1a){if(_0x136d1a){_0x3c4dd1[_0x9644('0x27')]=_0x136d1a[_0x9644('0x5e')]({'plain':!![]});return db[_0x9644('0x5f')][_0x9644('0x54')]({'where':{'id':_0x136d1a['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x4d3442,null))[_0x9644('0x33')](function(_0x45e935){if(_0x45e935){return _0x45e935[_0x9644('0x55')]({'UserId':_0x16ea54[_0x9644('0x56')][_0x9644('0x5b')],'read1stAt':_[_0x9644('0x60')](_0x45e935['read1stAt'])?moment()[_0x9644('0x61')](_0x9644('0x5a')):undefined});}return null;})['then'](function(_0x4438e7){if(_0x4438e7){_0x3c4dd1[_0x9644('0x62')]=_0x4438e7[_0x9644('0x5e')]({'plain':!![]});interaction_log[_0x9644('0x22')](_0x9644('0x63'),_0x16ea54[_0x9644('0x5c')]['id'],_0x16ea54[_0x9644('0x5c')][_0x9644('0x37')],_0x16ea54[_0x9644('0x5c')][_0x9644('0x64')],_0x3c4dd1[_0x9644('0x62')]['id'],_0x16ea54['body']?JSON[_0x9644('0x65')](_0x16ea54[_0x9644('0x56')]):_0x9644('0x66'));return respondWithRpcPromise(_0x9644('0x67'),_0x9644('0x68'),_0x3c4dd1);}return null;})[_0x9644('0x33')](function(_0x277ecb){var _0x457c39=_0x9644('0x69')+_0x277ecb[_0x9644('0x27')][_0x9644('0x6a')];return db[_0x9644('0x6b')][_0x9644('0x3e')](_0x457c39,{'type':db[_0x9644('0x6c')][_0x9644('0x6d')][_0x9644('0x6e')],'raw':!![]})[_0x9644('0x33')](function(_0x501836){return _0x501836;});})[_0x9644('0x33')](function(_0x30eeb6){if(_0x30eeb6){_0x3c4dd1['message']['contact']=_0x30eeb6[0x0];if(!_0x16ea54['body'][_0x9644('0x5b')])return;return db[_0x9644('0x6f')]['find']({'where':{'id':_0x16ea54[_0x9644('0x56')]['UserId'],'role':'agent'},'attributes':['id',_0x9644('0x37'),_0x9644('0x70'),_0x9644('0x71'),_0x9644('0x72')],'raw':!![]});}return null;})[_0x9644('0x33')](function(_0x237555){if(!_0x237555)return null;_0x3c4dd1['message'][_0x9644('0x5d')]=_0x237555;return _0x3c4dd1;})[_0x9644('0x33')](function(_0x21242e){if(_0x21242e){if(_0x16ea54['body']['manual']){_0x3c4dd1[_0x9644('0x27')]['interface']=util[_0x9644('0x61')](_0x9644('0x73'),_0x16ea54[_0x9644('0x5c')]['name']);_0x3c4dd1[_0x9644('0x27')][_0x9644('0x74')]=_0x3c4dd1[_0x9644('0x74')];_0x3c4dd1['message'][_0x9644('0x75')]=_0x3c4dd1[_0x9644('0x74')];_0x3c4dd1[_0x9644('0x27')]['event']=_0x9644('0x76');return respondWithRpcPromise('EventManager',_0x9644('0x77'),{'event':_0x9644('0x78'),'message':_0x3c4dd1[_0x9644('0x27')]},client9002)[_0x9644('0x33')](function(){return _0x3c4dd1;});}return _0x3c4dd1;}return null;})['then'](respondWithResult(_0x4d3442,null))[_0x9644('0x29')](handleError(_0x4d3442,null));};var interaction_log=require('../../config/logger')(_0x9644('0x58'));exports[_0x9644('0x79')]=function(_0x199cd8,_0x26dfd4,_0x2c345d){var _0x3f0a61={'agent':{},'channel':_0x9644('0x7a')};if(_0x199cd8[_0x9644('0x56')]['id']){delete _0x199cd8[_0x9644('0x56')]['id'];}_0x199cd8['body']['UserId']=_0x199cd8['body']['UserId']||_0x199cd8['user']['id'];_0x3f0a61[_0x9644('0x5d')]['id']=_0x199cd8[_0x9644('0x56')][_0x9644('0x5b')];return db[_0x9644('0x4d')]['find']({'where':{'id':_0x199cd8[_0x9644('0x53')]['id'],'UserId':null}})[_0x9644('0x33')](handleEntityNotFound(_0x26dfd4,null))[_0x9644('0x33')](function(_0x43a1a4){if(_0x43a1a4){_0x3f0a61['message']=_0x43a1a4[_0x9644('0x5e')]({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0x43a1a4[_0x9644('0x7b')]}});}return null;})[_0x9644('0x33')](handleEntityNotFound(_0x26dfd4,null))[_0x9644('0x33')](function(_0x1b8ca5){if(_0x1b8ca5){_0x3f0a61[_0x9644('0x62')]=_0x1b8ca5[_0x9644('0x5e')]({'plain':!![]});interaction_log[_0x9644('0x22')](_0x9644('0x7c'),_0x199cd8[_0x9644('0x5c')]['id'],_0x199cd8['user'][_0x9644('0x37')],_0x199cd8['user'][_0x9644('0x64')],_0x3f0a61['interaction']['id'],_0x199cd8[_0x9644('0x56')]?JSON['stringify'](_0x199cd8[_0x9644('0x56')]):_0x9644('0x66'));return respondWithRpcPromise(_0x9644('0x7d'),'rejectMessage',_0x3f0a61);}return null;})[_0x9644('0x33')](function(_0x21e652){var _0x339279=_0x9644('0x69')+_0x21e652['message']['ContactId'];return db[_0x9644('0x6b')]['query'](_0x339279,{'type':db[_0x9644('0x6c')]['QueryTypes']['SELECT'],'raw':!![]})[_0x9644('0x33')](function(_0x399b8e){return _0x399b8e;});})[_0x9644('0x33')](function(_0x133bd2){if(_0x133bd2){_0x3f0a61[_0x9644('0x27')][_0x9644('0x7e')]=_0x133bd2[0x0];if(!_0x199cd8['body'][_0x9644('0x5b')])return;return db[_0x9644('0x6f')][_0x9644('0x54')]({'where':{'id':_0x199cd8['body']['UserId'],'role':_0x9644('0x5d')},'attributes':['id',_0x9644('0x37'),_0x9644('0x70'),_0x9644('0x71'),_0x9644('0x72')],'raw':!![]});}return null;})[_0x9644('0x33')](function(_0x7cd6c2){if(!_0x7cd6c2)return null;_0x3f0a61[_0x9644('0x27')]['agent']=_0x7cd6c2;return _0x3f0a61;})['then'](function(_0x4b12ca){if(_0x4b12ca){_0x4b12ca[_0x9644('0x27')][_0x9644('0x7f')]=util[_0x9644('0x61')]('SIP/%s',_0x199cd8[_0x9644('0x5c')][_0x9644('0x37')]);_0x4b12ca[_0x9644('0x27')][_0x9644('0x74')]=_0x3f0a61[_0x9644('0x74')];_0x4b12ca['message'][_0x9644('0x75')]=_0x3f0a61[_0x9644('0x74')];_0x4b12ca[_0x9644('0x27')][_0x9644('0x80')]=_0x9644('0x79');respondWithRpcPromise(_0x9644('0x77'),_0x9644('0x77'),{'event':'rejectmessage','message':_0x4b12ca[_0x9644('0x27')]},client9002);return _0x3f0a61;}return null;})['then'](respondWithResult(_0x26dfd4,null))[_0x9644('0x29')](handleError(_0x26dfd4,null));};exports[_0x9644('0x81')]=function(_0x1e5818,_0x26ab95){var _0x11dfa7;return db['FaxMessage']['create'](_0x1e5818[_0x9644('0x56')],{})[_0x9644('0x33')](function(_0x405873){_0x11dfa7=_0x405873;return db[_0x9644('0x82')][_0x9644('0x83')]({'where':{'id':_0x11dfa7['ContactId']}});})['then'](function(_0x515f84){if(_[_0x9644('0x60')](_0x515f84)){return;}else{_0x11dfa7[_0x9644('0x7a')]=_0x515f84[_0x9644('0x7a')];return db[_0x9644('0x84')][_0x9644('0x83')]({'where':{'id':_0x11dfa7[_0x9644('0x85')]}});}})[_0x9644('0x33')](function(_0x3fc16f){return respondWithRpcPromise(_0x9644('0x86'),'SendFax',{'FaxAccountId':_['isNil'](_0x1e5818['body'])?undefined:_0x1e5818[_0x9644('0x56')]['FaxAccountId'],'path':_[_0x9644('0x60')](_0x3fc16f)?undefined:util['format'](_0x9644('0x87'),_0x3fc16f[_0x9644('0x88')]),'fax':_['isNil'](_0x11dfa7['fax'])?undefined:_0x11dfa7[_0x9644('0x7a')],'AttachmentId':_0x11dfa7[_0x9644('0x85')]},client9002);})[_0x9644('0x33')](respondWithResult(_0x26ab95,0xc9))[_0x9644('0x29')](handleError(_0x26ab95,null));};exports[_0x9644('0x89')]=function(_0x13de07,_0x46cc93){var _0x43fd1a=path[_0x9644('0x8a')](config[_0x9644('0x8b')],_0x9644('0x8c'),_0x9644('0x8d'),_0x9644('0x8e'));return db[_0x9644('0x4d')]['find']({'where':{'id':_0x13de07[_0x9644('0x53')]['id']},'include':[{'model':db[_0x9644('0x84')],'as':_0x9644('0x84')}]})['then'](handleEntityNotFound(_0x46cc93,null))[_0x9644('0x33')](function(_0x3060de){if(_0x3060de){return _0x46cc93[_0x9644('0x89')](path[_0x9644('0x8a')](_0x43fd1a,_0x3060de[_0x9644('0x84')]['basename']));}})[_0x9644('0x29')](handleError(_0x46cc93,null));};
\ No newline at end of file
index 513f87f..a37e70f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7ee=['exports','events','FaxMessage','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0xa7ee,0x159));var _0xea7e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa7ee[_0x4709c0];return _0x13348b;};'use strict';var EventEmitter=require(_0xea7e('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0xea7e('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xea7e('0x2')](0x0);var events={'afterCreate':_0xea7e('0x3'),'afterUpdate':_0xea7e('0x4'),'afterDestroy':'remove'};function emitEvent(_0x547937){return function(_0x1a88ef,_0x5ef5bd,_0x2439f9){FaxMessageEvents[_0xea7e('0x5')](_0x547937+':'+_0x1a88ef['id'],_0x1a88ef);FaxMessageEvents[_0xea7e('0x5')](_0x547937,_0x1a88ef);_0x2439f9(null);};}for(var e in events){if(events[_0xea7e('0x6')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0xea7e('0x7')]=FaxMessageEvents;
\ No newline at end of file
+var _0x5334=['../../mysqldb','FaxMessage','setMaxListeners','save','remove','hasOwnProperty','events'];(function(_0x151418,_0x2cbffa){var _0x40e29a=function(_0xec4d7){while(--_0xec4d7){_0x151418['push'](_0x151418['shift']());}};_0x40e29a(++_0x2cbffa);}(_0x5334,0x84));var _0x4533=function(_0xeffb20,_0x32af68){_0xeffb20=_0xeffb20-0x0;var _0x4ec0f8=_0x5334[_0xeffb20];return _0x4ec0f8;};'use strict';var EventEmitter=require(_0x4533('0x0'));var FaxMessage=require(_0x4533('0x1'))['db'][_0x4533('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x4533('0x3')](0x0);var events={'afterCreate':_0x4533('0x4'),'afterUpdate':'update','afterDestroy':_0x4533('0x5')};function emitEvent(_0x5176b5){return function(_0x42184d,_0x11ce61,_0x5cbca4){FaxMessageEvents['emit'](_0x5176b5+':'+_0x42184d['id'],_0x42184d);FaxMessageEvents['emit'](_0x5176b5,_0x42184d);_0x5cbca4(null);};}for(var e in events){if(events[_0x4533('0x6')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
index 019553a..f9d60ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafad=['fax_messages','fti_fax_messages','body','FULLTEXT','toLowerCase','direction','secret','UserId','findOne','then','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','FaxMessage'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0xafad,0x17b));var _0xdafa=function(_0x231e16,_0x67347b){_0x231e16=_0x231e16-0x0;var _0x570a7c=_0xafad[_0x231e16];return _0x570a7c;};'use strict';var _=require('lodash');var util=require(_0xdafa('0x0'));var logger=require(_0xdafa('0x1'))(_0xdafa('0x2'));var moment=require(_0xdafa('0x3'));var BPromise=require(_0xdafa('0x4'));var rp=require(_0xdafa('0x5'));var fs=require('fs');var path=require(_0xdafa('0x6'));var rimraf=require(_0xdafa('0x7'));var config=require(_0xdafa('0x8'));var attributes=require(_0xdafa('0x9'));module[_0xdafa('0xa')]=function(_0x29fef4,_0x586668){return _0x29fef4[_0xdafa('0xb')](_0xdafa('0xc'),attributes,{'tableName':_0xdafa('0xd'),'paranoid':![],'indexes':[{'name':_0xdafa('0xe'),'fields':[_0xdafa('0xf')],'type':_0xdafa('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1a6be5,_0x3390e6,_0x71946){var _0x49642e=_0x29fef4['models'];var _0x2afb84=_0x1a6be5['get']({'plain':!![]});if(_0x2afb84['direction'][_0xdafa('0x11')]()==='in'||_0x2afb84[_0xdafa('0x12')][_0xdafa('0x11')]()==='out'&&!_0x2afb84[_0xdafa('0x13')]&&!_['isNil'](_0x2afb84[_0xdafa('0x14')])){_0x49642e['FaxInteraction'][_0xdafa('0x15')]({'where':{'id':_0x2afb84['FaxInteractionId']}})[_0xdafa('0x16')](function(_0x22d3ac){if(_0x22d3ac){_0x22d3ac['update']({'lastMsgAt':_0x2afb84[_0xdafa('0x17')],'lastMsgDirection':_0x2afb84[_0xdafa('0x12')][_0xdafa('0x11')]()});}})[_0xdafa('0x18')](function(_0x3fb3af){console[_0xdafa('0x19')](_0x3fb3af);});}_0x71946();}},'charset':_0xdafa('0x1a'),'collate':_0xdafa('0x1b')});};
\ No newline at end of file
+var _0x34f2=['FaxInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','request-promise','path','rimraf','../../config/environment','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction'];(function(_0x1ec05e,_0x4feae2){var _0x979be9=function(_0x425f76){while(--_0x425f76){_0x1ec05e['push'](_0x1ec05e['shift']());}};_0x979be9(++_0x4feae2);}(_0x34f2,0x1c9));var _0x234f=function(_0x5b9219,_0x53cb1b){_0x5b9219=_0x5b9219-0x0;var _0x3e0097=_0x34f2[_0x5b9219];return _0x3e0097;};'use strict';var _=require(_0x234f('0x0'));var util=require(_0x234f('0x1'));var logger=require('../../config/logger')(_0x234f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x234f('0x3'));var fs=require('fs');var path=require(_0x234f('0x4'));var rimraf=require(_0x234f('0x5'));var config=require(_0x234f('0x6'));var attributes=require('./faxMessage.attributes');module[_0x234f('0x7')]=function(_0x1c691d,_0x4ebbc8){return _0x1c691d[_0x234f('0x8')](_0x234f('0x9'),attributes,{'tableName':_0x234f('0xa'),'paranoid':![],'indexes':[{'name':_0x234f('0xb'),'fields':[_0x234f('0xc')],'type':_0x234f('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x44e105,_0x24556f,_0x13a3e7){var _0x1364a1=_0x1c691d[_0x234f('0xe')];var _0x30ef7e=_0x44e105[_0x234f('0xf')]({'plain':!![]});if(_0x30ef7e[_0x234f('0x10')][_0x234f('0x11')]()==='in'||_0x30ef7e[_0x234f('0x10')]['toLowerCase']()===_0x234f('0x12')&&!_0x30ef7e[_0x234f('0x13')]&&!_[_0x234f('0x14')](_0x30ef7e[_0x234f('0x15')])){_0x1364a1[_0x234f('0x16')]['findOne']({'where':{'id':_0x30ef7e[_0x234f('0x17')]}})['then'](function(_0x4ae54d){if(_0x4ae54d){_0x4ae54d[_0x234f('0x18')]({'lastMsgAt':_0x30ef7e[_0x234f('0x19')],'lastMsgDirection':_0x30ef7e['direction'][_0x234f('0x11')]()});}})[_0x234f('0x1a')](function(_0x4fc42e){console[_0x234f('0x1b')](_0x4fc42e);});}_0x13a3e7();}},'charset':_0x234f('0x1c'),'collate':_0x234f('0x1d')});};
\ No newline at end of file
index 0d68ae5..339c68b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['register','request','then','info','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateFaxMessage','create','body','options','raw','stringify','UpdateFaxMessage','FaxMessage','update','where','attributes','limit','util','moment','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket'];(function(_0x5eafce,_0x3d62b6){var _0x414698=function(_0x58ff9a){while(--_0x58ff9a){_0x5eafce['push'](_0x5eafce['shift']());}};_0x414698(++_0x3d62b6);}(_0xb821,0xa7));var _0x1b82=function(_0x1214dd,_0x445b87){_0x1214dd=_0x1214dd-0x0;var _0x57bde6=_0xb821[_0x1214dd];return _0x57bde6;};'use strict';var _=require('lodash');var util=require(_0x1b82('0x0'));var moment=require(_0x1b82('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1b82('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1b82('0x3'))(_0x1b82('0x4'));var config=require(_0x1b82('0x5'));var jayson=require(_0x1b82('0x6'));var client=jayson['client'][_0x1b82('0x7')]({'port':0x232a});config[_0x1b82('0x8')]=_[_0x1b82('0x9')](config[_0x1b82('0x8')],{'host':_0x1b82('0xa'),'port':0x18eb});var socket=require(_0x1b82('0xb'))(new Redis(config[_0x1b82('0x8')]));require(_0x1b82('0xc'))[_0x1b82('0xd')](socket);function respondWithRpcPromise(_0x4955b5,_0x4011f2,_0x30c6ee){return new BPromise(function(_0x44dfd4,_0x14c57a){return client[_0x1b82('0xe')](_0x4955b5,_0x30c6ee)[_0x1b82('0xf')](function(_0x739f99){logger[_0x1b82('0x10')]('FaxMessage,\x20%s,\x20%s',_0x4011f2,_0x1b82('0x11'));logger[_0x1b82('0x12')](_0x1b82('0x13'),_0x4011f2,_0x1b82('0x11'),JSON['stringify'](_0x739f99));if(_0x739f99[_0x1b82('0x14')]){if(_0x739f99['error']['code']===0x1f4){logger[_0x1b82('0x14')]('FaxMessage,\x20%s,\x20%s',_0x4011f2,_0x739f99[_0x1b82('0x14')][_0x1b82('0x15')]);return _0x14c57a(_0x739f99['error'][_0x1b82('0x15')]);}logger['error']('FaxMessage,\x20%s,\x20%s',_0x4011f2,_0x739f99[_0x1b82('0x14')]['message']);return _0x44dfd4(_0x739f99[_0x1b82('0x14')][_0x1b82('0x15')]);}else{logger[_0x1b82('0x10')]('FaxMessage,\x20%s,\x20%s',_0x4011f2,'request\x20sent');_0x44dfd4(_0x739f99[_0x1b82('0x16')]['message']);}})[_0x1b82('0x17')](function(_0x1002a1){logger[_0x1b82('0x14')]('FaxMessage,\x20%s,\x20%s',_0x4011f2,_0x1002a1);_0x14c57a(_0x1002a1);});});}exports[_0x1b82('0x18')]=function(_0x2b6ee8){var _0x11af50=this;return new Promise(function(_0x46e5e2,_0x10d45c){return db['FaxMessage'][_0x1b82('0x19')](_0x2b6ee8[_0x1b82('0x1a')],{'raw':_0x2b6ee8[_0x1b82('0x1b')]?_0x2b6ee8[_0x1b82('0x1b')][_0x1b82('0x1c')]===undefined?!![]:![]:!![]})[_0x1b82('0xf')](function(_0x2d07f4){logger['info'](_0x1b82('0x18'),_0x2b6ee8);logger[_0x1b82('0x12')]('CreateFaxMessage',_0x2b6ee8,JSON[_0x1b82('0x1d')](_0x2d07f4));_0x46e5e2(_0x2d07f4);})[_0x1b82('0x17')](function(_0x1ad9d6){logger['error'](_0x1b82('0x18'),_0x1ad9d6['message'],_0x2b6ee8);_0x10d45c(_0x11af50['error'](0x1f4,_0x1ad9d6['message']));});});};exports[_0x1b82('0x1e')]=function(_0x149d0f){var _0xfd00d1=this;return new Promise(function(_0x257b79,_0x548a3b){return db[_0x1b82('0x1f')][_0x1b82('0x20')](_0x149d0f[_0x1b82('0x1a')],{'raw':_0x149d0f[_0x1b82('0x1b')]?_0x149d0f[_0x1b82('0x1b')][_0x1b82('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x149d0f[_0x1b82('0x1b')]?_0x149d0f[_0x1b82('0x1b')][_0x1b82('0x21')]||null:null,'attributes':_0x149d0f[_0x1b82('0x1b')]?_0x149d0f[_0x1b82('0x1b')][_0x1b82('0x22')]||null:null,'limit':_0x149d0f[_0x1b82('0x1b')]?_0x149d0f['options'][_0x1b82('0x23')]||null:null})[_0x1b82('0xf')](function(_0x155a34){logger[_0x1b82('0x10')](_0x1b82('0x1e'),_0x149d0f);logger[_0x1b82('0x12')](_0x1b82('0x1e'),_0x149d0f,JSON[_0x1b82('0x1d')](_0x155a34));_0x257b79(_0x155a34);})[_0x1b82('0x17')](function(_0x362657){logger['error'](_0x1b82('0x1e'),_0x362657[_0x1b82('0x15')],_0x149d0f);_0x548a3b(_0xfd00d1[_0x1b82('0x14')](0x1f4,_0x362657[_0x1b82('0x15')]));});});};
\ No newline at end of file
+var _0xd6d6=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','then','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxMessage,\x20%s,\x20%s','message','result','catch','FaxMessage','create','body','options','raw','info','CreateFaxMessage','update','where','limit','UpdateFaxMessage'];(function(_0x5f4dcd,_0xce4f33){var _0x55ea8e=function(_0x3264e2){while(--_0x3264e2){_0x5f4dcd['push'](_0x5f4dcd['shift']());}};_0x55ea8e(++_0xce4f33);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x28830a,_0x1e3ac6){_0x28830a=_0x28830a-0x0;var _0x378c00=_0xd6d6[_0x28830a];return _0x378c00;};'use strict';var _=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var moment=require(_0x6d6d('0x2'));var BPromise=require(_0x6d6d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6d6d('0x4'));var db=require(_0x6d6d('0x5'))['db'];var utils=require(_0x6d6d('0x6'));var logger=require(_0x6d6d('0x7'))(_0x6d6d('0x8'));var config=require(_0x6d6d('0x9'));var jayson=require(_0x6d6d('0xa'));var client=jayson['client'][_0x6d6d('0xb')]({'port':0x232a});config[_0x6d6d('0xc')]=_[_0x6d6d('0xd')](config[_0x6d6d('0xc')],{'host':_0x6d6d('0xe'),'port':0x18eb});var socket=require(_0x6d6d('0xf'))(new Redis(config[_0x6d6d('0xc')]));require('./faxMessage.socket')['register'](socket);function respondWithRpcPromise(_0x404c88,_0x1fa46d,_0x23b18a){return new BPromise(function(_0x290dfb,_0xf84314){return client['request'](_0x404c88,_0x23b18a)[_0x6d6d('0x10')](function(_0x158f82){logger['info']('FaxMessage,\x20%s,\x20%s',_0x1fa46d,_0x6d6d('0x11'));logger[_0x6d6d('0x12')](_0x6d6d('0x13'),_0x1fa46d,_0x6d6d('0x11'),JSON[_0x6d6d('0x14')](_0x158f82));if(_0x158f82[_0x6d6d('0x15')]){if(_0x158f82[_0x6d6d('0x15')][_0x6d6d('0x16')]===0x1f4){logger['error'](_0x6d6d('0x17'),_0x1fa46d,_0x158f82[_0x6d6d('0x15')][_0x6d6d('0x18')]);return _0xf84314(_0x158f82[_0x6d6d('0x15')][_0x6d6d('0x18')]);}logger['error'](_0x6d6d('0x17'),_0x1fa46d,_0x158f82['error'][_0x6d6d('0x18')]);return _0x290dfb(_0x158f82[_0x6d6d('0x15')][_0x6d6d('0x18')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x1fa46d,_0x6d6d('0x11'));_0x290dfb(_0x158f82[_0x6d6d('0x19')][_0x6d6d('0x18')]);}})[_0x6d6d('0x1a')](function(_0x51fff6){logger['error'](_0x6d6d('0x17'),_0x1fa46d,_0x51fff6);_0xf84314(_0x51fff6);});});}exports['CreateFaxMessage']=function(_0x26f631){var _0xb8590d=this;return new Promise(function(_0x30d87d,_0x450352){return db[_0x6d6d('0x1b')][_0x6d6d('0x1c')](_0x26f631[_0x6d6d('0x1d')],{'raw':_0x26f631[_0x6d6d('0x1e')]?_0x26f631[_0x6d6d('0x1e')][_0x6d6d('0x1f')]===undefined?!![]:![]:!![]})[_0x6d6d('0x10')](function(_0x6e58e3){logger[_0x6d6d('0x20')](_0x6d6d('0x21'),_0x26f631);logger[_0x6d6d('0x12')](_0x6d6d('0x21'),_0x26f631,JSON[_0x6d6d('0x14')](_0x6e58e3));_0x30d87d(_0x6e58e3);})['catch'](function(_0x3b73e5){logger[_0x6d6d('0x15')](_0x6d6d('0x21'),_0x3b73e5[_0x6d6d('0x18')],_0x26f631);_0x450352(_0xb8590d[_0x6d6d('0x15')](0x1f4,_0x3b73e5[_0x6d6d('0x18')]));});});};exports['UpdateFaxMessage']=function(_0x2851dd){var _0x2b5e31=this;return new Promise(function(_0x235451,_0x126ac8){return db[_0x6d6d('0x1b')][_0x6d6d('0x22')](_0x2851dd[_0x6d6d('0x1d')],{'raw':_0x2851dd['options']?_0x2851dd[_0x6d6d('0x1e')][_0x6d6d('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2851dd['options']?_0x2851dd['options'][_0x6d6d('0x23')]||null:null,'attributes':_0x2851dd[_0x6d6d('0x1e')]?_0x2851dd[_0x6d6d('0x1e')]['attributes']||null:null,'limit':_0x2851dd[_0x6d6d('0x1e')]?_0x2851dd[_0x6d6d('0x1e')][_0x6d6d('0x24')]||null:null})[_0x6d6d('0x10')](function(_0x64d1f7){logger[_0x6d6d('0x20')](_0x6d6d('0x25'),_0x2851dd);logger[_0x6d6d('0x12')](_0x6d6d('0x25'),_0x2851dd,JSON[_0x6d6d('0x14')](_0x64d1f7));_0x235451(_0x64d1f7);})['catch'](function(_0x1f9469){logger['error'](_0x6d6d('0x25'),_0x1f9469[_0x6d6d('0x18')],_0x2851dd);_0x126ac8(_0x2b5e31[_0x6d6d('0x15')](0x1f4,_0x1f9469[_0x6d6d('0x18')]));});});};
\ No newline at end of file
index c1d2aaf..cd88a5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa6=['./faxMessage.events','save','remove','emit','removeListener','length','faxMessage:'];(function(_0x28fbe3,_0x4ac6f8){var _0x45db6a=function(_0x296ecb){while(--_0x296ecb){_0x28fbe3['push'](_0x28fbe3['shift']());}};_0x45db6a(++_0x4ac6f8);}(_0x9fa6,0xfc));var _0x69fa=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x9fa6[_0x2be8c2];return _0x97f531;};'use strict';var FaxMessageEvents=require(_0x69fa('0x0'));var events=[_0x69fa('0x1'),_0x69fa('0x2'),'update'];function createListener(_0xc945a,_0x97f6dd){return function(_0x110025){_0x97f6dd[_0x69fa('0x3')](_0xc945a,_0x110025);};}function removeListener(_0x3e1fd5,_0x2db4fa){return function(){FaxMessageEvents[_0x69fa('0x4')](_0x3e1fd5,_0x2db4fa);};}exports['register']=function(_0xdd08a9){for(var _0x1eeea7=0x0,_0x5cc1da=events[_0x69fa('0x5')];_0x1eeea7<_0x5cc1da;_0x1eeea7++){var _0x550c13=events[_0x1eeea7];var _0x5efa20=createListener(_0x69fa('0x6')+_0x550c13,_0xdd08a9);FaxMessageEvents['on'](_0x550c13,_0x5efa20);}};
\ No newline at end of file
+var _0x617e=['length','faxMessage:','./faxMessage.events','remove','update','emit','removeListener','register'];(function(_0x4322c6,_0x28f126){var _0x4e7537=function(_0x3cf272){while(--_0x3cf272){_0x4322c6['push'](_0x4322c6['shift']());}};_0x4e7537(++_0x28f126);}(_0x617e,0xda));var _0xe617=function(_0x75fecf,_0x1f2410){_0x75fecf=_0x75fecf-0x0;var _0x3666a6=_0x617e[_0x75fecf];return _0x3666a6;};'use strict';var FaxMessageEvents=require(_0xe617('0x0'));var events=['save',_0xe617('0x1'),_0xe617('0x2')];function createListener(_0x34bc32,_0x366e08){return function(_0x4a20e6){_0x366e08[_0xe617('0x3')](_0x34bc32,_0x4a20e6);};}function removeListener(_0x461ebb,_0xe9dc98){return function(){FaxMessageEvents[_0xe617('0x4')](_0x461ebb,_0xe9dc98);};}exports[_0xe617('0x5')]=function(_0x5ddef0){for(var _0x30574d=0x0,_0x545341=events[_0xe617('0x6')];_0x30574d<_0x545341;_0x30574d++){var _0x2ea8fd=events[_0x30574d];var _0xc6d8a=createListener(_0xe617('0x7')+_0x2ea8fd,_0x5ddef0);FaxMessageEvents['on'](_0x2ea8fd,_0xc6d8a);}};
\ No newline at end of file
index 2a6d409..d6bc0a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb74=['Router','fs-extra','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','describe','show','/:id/download','download','post','fax','faxmessage:create','create','put','/:id','update','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x446d41,_0x7b235){var _0x214844=function(_0x4707b3){while(--_0x4707b3){_0x446d41['push'](_0x446d41['shift']());}};_0x214844(++_0x7b235);}(_0xeb74,0xe3));var _0x4eb7=function(_0xcb3df9,_0x256fb1){_0xcb3df9=_0xcb3df9-0x0;var _0x3c2156=_0xeb74[_0xcb3df9];return _0x3c2156;};'use strict';var multer=require(_0x4eb7('0x0'));var util=require(_0x4eb7('0x1'));var path=require(_0x4eb7('0x2'));var timeout=require(_0x4eb7('0x3'));var express=require(_0x4eb7('0x4'));var router=express[_0x4eb7('0x5')]();var fs_extra=require(_0x4eb7('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x4eb7('0x7'));var config=require(_0x4eb7('0x8'));var controller=require(_0x4eb7('0x9'));router[_0x4eb7('0xa')]('/',auth[_0x4eb7('0xb')](),controller['index']);router[_0x4eb7('0xa')]('/describe',auth[_0x4eb7('0xb')](),controller[_0x4eb7('0xc')]);router['get']('/:id',auth[_0x4eb7('0xb')](),controller[_0x4eb7('0xd')]);router['get'](_0x4eb7('0xe'),auth['isAuthenticated'](),controller[_0x4eb7('0xf')]);router[_0x4eb7('0x10')]('/',auth[_0x4eb7('0xb')](),interaction['tracked'](_0x4eb7('0x11'),_0x4eb7('0x12')),controller[_0x4eb7('0x13')]);router[_0x4eb7('0x14')](_0x4eb7('0x15'),auth[_0x4eb7('0xb')](),controller[_0x4eb7('0x16')]);router['put']('/:id/accept',auth['isAuthenticated'](),controller[_0x4eb7('0x17')]);router['put'](_0x4eb7('0x18'),auth[_0x4eb7('0xb')](),controller[_0x4eb7('0x19')]);router[_0x4eb7('0x1a')](_0x4eb7('0x15'),auth[_0x4eb7('0xb')](),controller[_0x4eb7('0x1b')]);module[_0x4eb7('0x1c')]=router;
\ No newline at end of file
+var _0x5b02=['put','/:id','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','/describe','describe','show','download','post','tracked','fax','faxmessage:create','create'];(function(_0x47f767,_0x46732a){var _0x5ad748=function(_0x46322b){while(--_0x46322b){_0x47f767['push'](_0x47f767['shift']());}};_0x5ad748(++_0x46732a);}(_0x5b02,0xe9));var _0x25b0=function(_0x4246bc,_0x294e38){_0x4246bc=_0x4246bc-0x0;var _0x1ddae0=_0x5b02[_0x4246bc];return _0x1ddae0;};'use strict';var multer=require(_0x25b0('0x0'));var util=require(_0x25b0('0x1'));var path=require(_0x25b0('0x2'));var timeout=require(_0x25b0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x25b0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x25b0('0x5'));var config=require(_0x25b0('0x6'));var controller=require(_0x25b0('0x7'));router[_0x25b0('0x8')]('/',auth[_0x25b0('0x9')](),controller['index']);router[_0x25b0('0x8')](_0x25b0('0xa'),auth['isAuthenticated'](),controller[_0x25b0('0xb')]);router['get']('/:id',auth[_0x25b0('0x9')](),controller[_0x25b0('0xc')]);router[_0x25b0('0x8')]('/:id/download',auth[_0x25b0('0x9')](),controller[_0x25b0('0xd')]);router[_0x25b0('0xe')]('/',auth[_0x25b0('0x9')](),interaction[_0x25b0('0xf')](_0x25b0('0x10'),_0x25b0('0x11')),controller[_0x25b0('0x12')]);router[_0x25b0('0x13')](_0x25b0('0x14'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x15')]);router[_0x25b0('0x13')](_0x25b0('0x16'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x17')]);router[_0x25b0('0x13')](_0x25b0('0x18'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x19')]);router[_0x25b0('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0x25b0('0x1b')]);module['exports']=router;
\ No newline at end of file
index 55cf20c..a05c090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d1b=['sequelize','STRING','name','INTEGER','rrmemory','roundrobin'];(function(_0x1c1259,_0x2db8ee){var _0x1dab5c=function(_0x5d2670){while(--_0x5d2670){_0x1c1259['push'](_0x1c1259['shift']());}};_0x1dab5c(++_0x2db8ee);}(_0x4d1b,0x102));var _0xb4d1=function(_0xfed299,_0x21b8d0){_0xfed299=_0xfed299-0x0;var _0x4ef1f2=_0x4d1b[_0xfed299];return _0x4ef1f2;};'use strict';var Sequelize=require(_0xb4d1('0x0'));module['exports']={'name':{'type':Sequelize[_0xb4d1('0x1')],'unique':_0xb4d1('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb4d1('0x1')]},'timeout':{'type':Sequelize[_0xb4d1('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xb4d1('0x4'),'beepall',_0xb4d1('0x5')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xb4d1('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x752c=['STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x98a7f4,_0x26a940){var _0x1d8a5a=function(_0x47c3a8){while(--_0x47c3a8){_0x98a7f4['push'](_0x98a7f4['shift']());}};_0x1d8a5a(++_0x26a940);}(_0x752c,0x10e));var _0xc752=function(_0x21a8fa,_0x37c5b5){_0x21a8fa=_0x21a8fa-0x0;var _0x17361b=_0x752c[_0x21a8fa];return _0x17361b;};'use strict';var Sequelize=require(_0xc752('0x0'));module[_0xc752('0x1')]={'name':{'type':Sequelize[_0xc752('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc752('0x2')]},'timeout':{'type':Sequelize[_0xc752('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc752('0x4')](_0xc752('0x5'),_0xc752('0x6'),_0xc752('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xc752('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index f583335..cf08369 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf4=['offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','get','FaxQueues','UserProfileResource','sendStatus','error','stack','name','send','map','FaxQueue','fieldName','type','key','getOptions','where','include','query','findAll','catch','show','params','keys','rawAttributes','filters','intersection','model','includeAll','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getMembers','findOne','UserFaxQueue','attributes','fields','length','hasOwnProperty','nolimit','sort','FaxQueueId','filter','merge','findAndCountAll','UserId','agent','createdAt','format','%s/%s','SIP','faxPause','updatedAt','getTeams','Team','pick','addTeams','ids','User','Agents','online','flatMap','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','select','field','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','union','compact','removeTeams','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','isArray','getAgents','order','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','status','end'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xacf4,0xe7));var _0x4acf=function(_0x22a9b7,_0x58e5d4){_0x22a9b7=_0x22a9b7-0x0;var _0x8a8568=_0xacf4[_0x22a9b7];return _0x8a8568;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0x4acf('0x0'));var squel=require(_0x4acf('0x1'));var Redis=require(_0x4acf('0x2'));var qs=require(_0x4acf('0x3'));var logger=require(_0x4acf('0x4'))(_0x4acf('0x5'));var config=require(_0x4acf('0x6'));var db=require('../../mysqldb')['db'];config[_0x4acf('0x7')]=_[_0x4acf('0x8')](config['redis'],{'host':_0x4acf('0x9'),'port':0x18eb});var socket=require(_0x4acf('0xa'))(new Redis(config[_0x4acf('0x7')]));require(_0x4acf('0xb'))[_0x4acf('0xc')](socket);function respondWithStatusCode(_0x50f5f4,_0x55f61d){_0x55f61d=_0x55f61d||0xcc;return function(_0x41970b){if(_0x41970b){return _0x50f5f4['sendStatus'](_0x55f61d);}return _0x50f5f4[_0x4acf('0xd')](_0x55f61d)[_0x4acf('0xe')]();};}function respondWithResult(_0x3e9ddd,_0x4ff233){_0x4ff233=_0x4ff233||0xc8;return function(_0x290ca7){if(_0x290ca7){return _0x3e9ddd[_0x4acf('0xd')](_0x4ff233)['json'](_0x290ca7);}};}function respondWithFilteredResult(_0x5f22d9,_0x1fe474){return function(_0x540c8f){if(_0x540c8f){var _0x5bca4e=typeof _0x1fe474[_0x4acf('0xf')]===_0x4acf('0x10')&&typeof _0x1fe474[_0x4acf('0x11')]===_0x4acf('0x10');var _0x18629e=_0x540c8f[_0x4acf('0x12')];var _0x7ab3ea=_0x5bca4e?0x0:_0x1fe474[_0x4acf('0xf')];var _0x2025ca=_0x5bca4e?_0x540c8f[_0x4acf('0x12')]:_0x1fe474[_0x4acf('0xf')]+_0x1fe474['limit'];var _0x1b584a;if(_0x2025ca>=_0x18629e){_0x2025ca=_0x18629e;_0x1b584a=0xc8;}else{_0x1b584a=0xce;}_0x5f22d9['status'](_0x1b584a);return _0x5f22d9[_0x4acf('0x13')](_0x4acf('0x14'),_0x7ab3ea+'-'+_0x2025ca+'/'+_0x18629e)[_0x4acf('0x15')](_0x540c8f);}return null;};}function saveUpdates(_0x5d934a){return function(_0x5207e7){if(_0x5207e7){return _0x5207e7[_0x4acf('0x16')](_0x5d934a)[_0x4acf('0x17')](function(_0x240c00){return _0x240c00;});}return null;};}function removeEntity(_0x4b1d93){return function(_0x2a678b){if(_0x2a678b){return _0x2a678b[_0x4acf('0x18')]()[_0x4acf('0x17')](function(){var _0x8b55f8=_0x2a678b[_0x4acf('0x19')]({'plain':!![]});var _0x21e385=_0x4acf('0x1a');return db[_0x4acf('0x1b')][_0x4acf('0x18')]({'where':{'type':_0x21e385,'resourceId':_0x8b55f8['id']}})[_0x4acf('0x17')](function(){return _0x2a678b;});})[_0x4acf('0x17')](function(){_0x4b1d93['status'](0xcc)[_0x4acf('0xe')]();});}};}function handleEntityNotFound(_0x6bd89){return function(_0x57ea46){if(!_0x57ea46){_0x6bd89[_0x4acf('0x1c')](0x194);}return _0x57ea46;};}function handleError(_0x17775f,_0x569d9e){_0x569d9e=_0x569d9e||0x1f4;return function(_0x3b26ac){logger[_0x4acf('0x1d')](_0x3b26ac[_0x4acf('0x1e')]);if(_0x3b26ac[_0x4acf('0x1f')]){delete _0x3b26ac['name'];}_0x17775f[_0x4acf('0xd')](_0x569d9e)[_0x4acf('0x20')](_0x3b26ac);};}exports['index']=function(_0x32771e,_0x1af4e9){var _0x52a84a={};var _0x126522={'count':0x0,'rows':[]};var _0x7ebb=_[_0x4acf('0x21')](db[_0x4acf('0x22')]['rawAttributes'],function(_0x50236d){return{'name':_0x50236d[_0x4acf('0x23')],'type':_0x50236d[_0x4acf('0x24')][_0x4acf('0x25')]};});_0x52a84a=qs[_0x4acf('0x26')](_0x7ebb,_0x32771e);var _0x14086c={'where':_0x52a84a[_0x4acf('0x27')]};return db[_0x4acf('0x22')][_0x4acf('0x12')](_0x14086c)[_0x4acf('0x17')](function(_0x2a3830){_0x126522['count']=_0x2a3830;_0x52a84a[_0x4acf('0x28')]=qs[_0x4acf('0x28')](_0x32771e[_0x4acf('0x29')]);return db[_0x4acf('0x22')][_0x4acf('0x2a')](_0x52a84a);})[_0x4acf('0x17')](function(_0x27384c){_0x126522['rows']=_0x27384c;return _0x126522;})[_0x4acf('0x17')](respondWithFilteredResult(_0x1af4e9,_0x52a84a))[_0x4acf('0x2b')](handleError(_0x1af4e9,null));};exports[_0x4acf('0x2c')]=function(_0x50dced,_0x387735){var _0x18d0bf={'raw':!![],'where':{'id':_0x50dced[_0x4acf('0x2d')]['id']}},_0x1fc815={};_0x1fc815['model']=_[_0x4acf('0x2e')](db[_0x4acf('0x22')][_0x4acf('0x2f')]);_0x1fc815['query']=_[_0x4acf('0x2e')](_0x50dced[_0x4acf('0x29')]);_0x1fc815[_0x4acf('0x30')]=_[_0x4acf('0x31')](_0x1fc815[_0x4acf('0x32')],_0x1fc815[_0x4acf('0x29')]);_0x18d0bf['attributes']=_[_0x4acf('0x31')](_0x1fc815[_0x4acf('0x32')],qs['fields'](_0x50dced[_0x4acf('0x29')]['fields']));_0x18d0bf['attributes']=_0x18d0bf['attributes']['length']?_0x18d0bf['attributes']:_0x1fc815['model'];if(_0x50dced['query'][_0x4acf('0x33')]){_0x18d0bf[_0x4acf('0x28')]=[{'all':!![]}];}_0x18d0bf=_['merge']({},_0x18d0bf,_0x50dced[_0x4acf('0x34')]);return db[_0x4acf('0x22')][_0x4acf('0x35')](_0x18d0bf)[_0x4acf('0x17')](handleEntityNotFound(_0x387735,null))[_0x4acf('0x17')](respondWithResult(_0x387735,null))[_0x4acf('0x2b')](handleError(_0x387735,null));};exports[_0x4acf('0x36')]=function(_0x29dc65,_0x24465b){return db[_0x4acf('0x22')]['create'](_0x29dc65['body'],{})[_0x4acf('0x17')](function(_0x2e984e){var _0x4859b6=_0x29dc65[_0x4acf('0x37')][_0x4acf('0x19')]({'plain':!![]});if(!_0x4859b6)throw new Error(_0x4acf('0x38'));if(_0x4859b6[_0x4acf('0x39')]==='user'){var _0x528550=_0x2e984e[_0x4acf('0x19')]({'plain':!![]});var _0x2bf803=_0x4acf('0x1a');return db[_0x4acf('0x3a')]['find']({'where':{'name':_0x2bf803,'userProfileId':_0x4859b6[_0x4acf('0x3b')]},'raw':!![]})[_0x4acf('0x17')](function(_0x4e9370){if(_0x4e9370&&_0x4e9370['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x528550[_0x4acf('0x1f')],'resourceId':_0x528550['id'],'type':_0x4e9370[_0x4acf('0x1f')],'sectionId':_0x4e9370['id']},{})[_0x4acf('0x17')](function(){return _0x2e984e;});}else{return _0x2e984e;}})['catch'](function(_0x1015e3){logger[_0x4acf('0x1d')](_0x4acf('0x3c'),_0x1015e3);throw _0x1015e3;});}return _0x2e984e;})[_0x4acf('0x17')](respondWithResult(_0x24465b,0xc9))[_0x4acf('0x2b')](handleError(_0x24465b,null));};exports[_0x4acf('0x16')]=function(_0x7cf2a,_0x17d5e9){if(_0x7cf2a[_0x4acf('0x3d')]['id']){delete _0x7cf2a[_0x4acf('0x3d')]['id'];}return db[_0x4acf('0x22')]['find']({'where':{'id':_0x7cf2a[_0x4acf('0x2d')]['id']}})[_0x4acf('0x17')](handleEntityNotFound(_0x17d5e9,null))[_0x4acf('0x17')](saveUpdates(_0x7cf2a[_0x4acf('0x3d')],null))[_0x4acf('0x17')](respondWithResult(_0x17d5e9,null))['catch'](handleError(_0x17d5e9,null));};exports['destroy']=function(_0x18b9d2,_0x2fc411){return db[_0x4acf('0x22')][_0x4acf('0x35')]({'where':{'id':_0x18b9d2[_0x4acf('0x2d')]['id']}})[_0x4acf('0x17')](handleEntityNotFound(_0x2fc411,null))['then'](removeEntity(_0x2fc411,null))[_0x4acf('0x2b')](handleError(_0x2fc411,null));};exports['describe']=function(_0xd6d197,_0x3c3e65){return db['FaxQueue']['describe']()[_0x4acf('0x17')](respondWithResult(_0x3c3e65,null))[_0x4acf('0x2b')](handleError(_0x3c3e65,null));};exports[_0x4acf('0x3e')]=function(_0x3e4a0e,_0x52584a){var _0x2f1d23={'raw':!![],'where':{}},_0x13fac4={},_0x2378c6;return db[_0x4acf('0x22')][_0x4acf('0x3f')]({'where':{'id':_0x3e4a0e[_0x4acf('0x2d')]['id']}})[_0x4acf('0x17')](handleEntityNotFound(_0x52584a,null))[_0x4acf('0x17')](function(_0x51e931){if(_0x51e931){_0x2378c6=_0x51e931['get']({'plain':!![]});_0x13fac4[_0x4acf('0x32')]=_[_0x4acf('0x2e')](db[_0x4acf('0x40')][_0x4acf('0x2f')]);_0x13fac4[_0x4acf('0x29')]=_[_0x4acf('0x2e')](_0x3e4a0e[_0x4acf('0x29')]);_0x13fac4[_0x4acf('0x30')]=_[_0x4acf('0x31')](_0x13fac4[_0x4acf('0x32')],_0x13fac4[_0x4acf('0x29')]);_0x2f1d23[_0x4acf('0x41')]=_['intersection'](_0x13fac4[_0x4acf('0x32')],qs[_0x4acf('0x42')](_0x3e4a0e[_0x4acf('0x29')][_0x4acf('0x42')]));_0x2f1d23[_0x4acf('0x41')]=_0x2f1d23[_0x4acf('0x41')][_0x4acf('0x43')]?_0x2f1d23[_0x4acf('0x41')]:_0x13fac4[_0x4acf('0x32')];if(!_0x3e4a0e[_0x4acf('0x29')][_0x4acf('0x44')](_0x4acf('0x45'))){_0x2f1d23[_0x4acf('0x11')]=qs[_0x4acf('0x11')](_0x3e4a0e[_0x4acf('0x29')][_0x4acf('0x11')]);_0x2f1d23['offset']=qs[_0x4acf('0xf')](_0x3e4a0e[_0x4acf('0x29')][_0x4acf('0xf')]);}_0x2f1d23['order']=qs[_0x4acf('0x46')](_0x3e4a0e[_0x4acf('0x29')][_0x4acf('0x46')]);_0x2f1d23[_0x4acf('0x27')]=qs['filters'](_['pick'](_0x3e4a0e['query'],_0x13fac4[_0x4acf('0x30')]));_0x2f1d23[_0x4acf('0x27')][_0x4acf('0x47')]=_0x51e931['id'];if(_0x3e4a0e['query'][_0x4acf('0x48')]){_0x2f1d23[_0x4acf('0x27')]=_['merge'](_0x2f1d23[_0x4acf('0x27')],{'$or':_[_0x4acf('0x21')](_0x2f1d23[_0x4acf('0x41')],function(_0x141e04){var _0x5405d2={};_0x5405d2[_0x141e04]={'$like':'%'+_0x3e4a0e[_0x4acf('0x29')][_0x4acf('0x48')]+'%'};return _0x5405d2;})});}_0x2f1d23=_[_0x4acf('0x49')]({},_0x2f1d23,_0x3e4a0e[_0x4acf('0x34')]);return db['UserFaxQueue'][_0x4acf('0x2a')](_0x2f1d23);}})['then'](function(_0x137220){if(_0x137220){return db['User'][_0x4acf('0x4a')]({'where':{'id':_[_0x4acf('0x21')](_0x137220,_0x4acf('0x4b')),'role':_0x4acf('0x4c')},'attributes':['id','name','faxPause','updatedAt',_0x4acf('0x4d')]});}})[_0x4acf('0x17')](function(_0x4c8d4b){if(_0x4c8d4b){return{'count':_0x4c8d4b[_0x4acf('0x12')],'rows':_[_0x4acf('0x21')](_0x4c8d4b['rows'],function(_0xd6a3b2){return{'membername':_0xd6a3b2[_0x4acf('0x1f')],'UserId':_0xd6a3b2['id'],'queue_name':_0x2378c6['name'],'FaxQueueId':_0x2378c6['id'],'interface':util[_0x4acf('0x4e')](_0x4acf('0x4f'),_0x4acf('0x50'),_0xd6a3b2['name']),'penalty':0x0,'paused':_0xd6a3b2[_0x4acf('0x51')],'createdAt':_0xd6a3b2[_0x4acf('0x4d')],'updatedAt':_0xd6a3b2[_0x4acf('0x52')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4acf('0x17')](respondWithFilteredResult(_0x52584a,_0x2f1d23))['catch'](handleError(_0x52584a,null));};exports[_0x4acf('0x53')]=function(_0x8c1c3c,_0x2fde8f){var _0x52d92a={};var _0x482d02={};var _0x234a5c;var _0x395e0f;return db[_0x4acf('0x22')][_0x4acf('0x3f')]({'where':{'id':_0x8c1c3c[_0x4acf('0x2d')]['id']}})[_0x4acf('0x17')](handleEntityNotFound(_0x2fde8f,null))[_0x4acf('0x17')](function(_0x27e7f4){if(_0x27e7f4){_0x234a5c=_0x27e7f4;_0x482d02[_0x4acf('0x32')]=_[_0x4acf('0x2e')](db[_0x4acf('0x54')][_0x4acf('0x2f')]);_0x482d02[_0x4acf('0x29')]=_[_0x4acf('0x2e')](_0x8c1c3c['query']);_0x482d02[_0x4acf('0x30')]=_[_0x4acf('0x31')](_0x482d02[_0x4acf('0x32')],_0x482d02[_0x4acf('0x29')]);_0x52d92a[_0x4acf('0x41')]=_[_0x4acf('0x31')](_0x482d02[_0x4acf('0x32')],qs[_0x4acf('0x42')](_0x8c1c3c['query']['fields']));_0x52d92a[_0x4acf('0x41')]=_0x52d92a['attributes'][_0x4acf('0x43')]?_0x52d92a['attributes']:_0x482d02['model'];_0x52d92a['order']=qs[_0x4acf('0x46')](_0x8c1c3c[_0x4acf('0x29')][_0x4acf('0x46')]);_0x52d92a[_0x4acf('0x27')]=qs[_0x4acf('0x30')](_[_0x4acf('0x55')](_0x8c1c3c['query'],_0x482d02['filters']));if(_0x8c1c3c['query'][_0x4acf('0x48')]){_0x52d92a[_0x4acf('0x27')]=_[_0x4acf('0x49')](_0x52d92a['where'],{'$or':_[_0x4acf('0x21')](_0x52d92a[_0x4acf('0x41')],function(_0xd72e85){var _0x114198={};_0x114198[_0xd72e85]={'$like':'%'+_0x8c1c3c[_0x4acf('0x29')][_0x4acf('0x48')]+'%'};return _0x114198;})});}_0x52d92a=_['merge']({},_0x52d92a,_0x8c1c3c[_0x4acf('0x34')]);return _0x234a5c['getTeams'](_0x52d92a);}})[_0x4acf('0x17')](function(_0x1d22ba){if(_0x1d22ba){_0x395e0f=_0x1d22ba[_0x4acf('0x43')];if(!_0x8c1c3c[_0x4acf('0x29')][_0x4acf('0x44')](_0x4acf('0x45'))){_0x52d92a[_0x4acf('0x11')]=qs[_0x4acf('0x11')](_0x8c1c3c[_0x4acf('0x29')][_0x4acf('0x11')]);_0x52d92a[_0x4acf('0xf')]=qs[_0x4acf('0xf')](_0x8c1c3c['query'][_0x4acf('0xf')]);}return _0x234a5c[_0x4acf('0x53')](_0x52d92a);}})[_0x4acf('0x17')](function(_0x155456){if(_0x155456){return _0x155456?{'count':_0x395e0f,'rows':_0x155456}:null;}})[_0x4acf('0x17')](respondWithResult(_0x2fde8f,null))[_0x4acf('0x2b')](handleError(_0x2fde8f,null));};exports[_0x4acf('0x56')]=function(_0x46c924,_0x304754){var _0x80c575=_0x46c924['body'][_0x4acf('0x57')];return db[_0x4acf('0x54')]['findAll']({'where':{'id':_0x80c575},'attributes':['id'],'include':[{'model':db[_0x4acf('0x58')],'as':_0x4acf('0x59'),'attributes':['id','name',_0x4acf('0x5a'),'voicePause','interface'],'raw':!![]}]})[_0x4acf('0x17')](function(_0x50bc20){if(_0x50bc20){var _0x22729c=_[_0x4acf('0x5b')](_0x50bc20,function(_0x13f042){var _0x2034e4=_0x13f042['get']({'plain':!![]});return _0x2034e4[_0x4acf('0x59')];});return db[_0x4acf('0x22')]['find']({'where':{'id':_0x46c924['params']['id']}})['then'](function(_0x1dd32a){return db['sequelize'][_0x4acf('0x5c')](function(_0x34ad58){return _0x1dd32a[_0x4acf('0x56')](_0x80c575,{'transaction':_0x34ad58})['then'](function(){return BPromise[_0x4acf('0x5d')](_0x22729c,function(_0x30dfed){return db['UserFaxQueue'][_0x4acf('0x5e')]({'where':{'UserId':_0x30dfed['id'],'FaxQueueId':_0x46c924[_0x4acf('0x2d')]['id']},'transaction':_0x34ad58});});})['then'](function(){_0x22729c[_0x4acf('0x5f')](function(_0x2d7cdf){socket[_0x4acf('0x60')](_0x4acf('0x61'),{'UserId':_0x2d7cdf['id'],'FaxQueueId':_0x1dd32a['id']});});});});});}})[_0x4acf('0x17')](respondWithStatusCode(_0x304754,null))[_0x4acf('0x2b')](handleError(_0x304754,null));};exports['removeTeams']=function(_0x208157,_0x59a1e8){return db[_0x4acf('0x54')][_0x4acf('0x2a')]({'where':{'id':_0x208157['query']['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4acf('0x59'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x59a1e8,null))['then'](function(_0x51ddb0){var _0x25b078=_['map'](_0x51ddb0,'id');var _0x3b21ed=[];var _0x375be6=[];var _0x25ea71=squel[_0x4acf('0x62')]();_0x25ea71[_0x4acf('0x63')]('tq.TeamId')['from'](_0x4acf('0x64'),'tq')[_0x4acf('0x65')](_0x4acf('0x66'),'ut',_0x4acf('0x67'))[_0x4acf('0x27')]('FaxQueueId\x20=\x20?',_0x208157[_0x4acf('0x2d')]['id']);for(var _0x455887=0x0;_0x455887<_0x51ddb0[_0x4acf('0x43')];_0x455887+=0x1){let _0x453c6d=_0x51ddb0[_0x455887];for(var _0x1a82e7=0x0;_0x1a82e7<_0x453c6d[_0x4acf('0x59')][_0x4acf('0x43')];_0x1a82e7+=0x1){let _0x5b3925=_0x453c6d[_0x4acf('0x59')][_0x1a82e7];var _0x55b14d=_0x25ea71[_0x4acf('0x68')]();_0x55b14d[_0x4acf('0x27')](_0x4acf('0x69'),_0x5b3925['id']);_0x375be6[_0x4acf('0x6a')](db[_0x4acf('0x6b')]['query'](_0x55b14d[_0x4acf('0x6c')](),{'type':db['sequelize'][_0x4acf('0x6d')][_0x4acf('0x6e')]})['then'](function(_0x46a402){if(_0x46a402[_0x4acf('0x43')]===0x1){return _0x5b3925['id'];}else{var _0x2cddf3=_[_0x4acf('0x6f')](_[_0x4acf('0x21')](_0x46a402,'TeamId'),function(_0x203f59){return _['includes'](_0x25b078,_0x203f59);});if(_0x2cddf3){return _0x5b3925['id'];}}}));}}return BPromise['all'](_0x375be6)[_0x4acf('0x17')](function(_0x46f88f){_0x3b21ed=_(_0x3b21ed)[_0x4acf('0x70')](_0x46f88f)[_0x4acf('0x71')]()['value']();return db['FaxQueue'][_0x4acf('0x35')]({'where':{'id':_0x208157[_0x4acf('0x2d')]['id']}})[_0x4acf('0x17')](function(_0xe86c1f){return db[_0x4acf('0x6b')][_0x4acf('0x5c')](function(_0x4446fe){return _0xe86c1f[_0x4acf('0x72')](_0x208157['query']['ids'],{'transaction':_0x4446fe})[_0x4acf('0x17')](function(){if(!_[_0x4acf('0x73')](_0x3b21ed)){return _0xe86c1f[_0x4acf('0x74')](_0x3b21ed,{'transaction':_0x4446fe});}})[_0x4acf('0x17')](function(){_0x3b21ed[_0x4acf('0x5f')](function(_0x40acb1){socket[_0x4acf('0x60')](_0x4acf('0x75'),{'UserId':_0x40acb1,'FaxQueueId':_0xe86c1f['id']});});});});});});})[_0x4acf('0x17')](respondWithStatusCode(_0x59a1e8,null))['catch'](handleError(_0x59a1e8,null));};exports[_0x4acf('0x76')]=function(_0x3b3fef,_0x179935){return db[_0x4acf('0x22')][_0x4acf('0x35')]({'where':{'id':_0x3b3fef[_0x4acf('0x2d')]['id']}})[_0x4acf('0x17')](handleEntityNotFound(_0x179935,null))[_0x4acf('0x17')](function(_0x37870c){if(_0x37870c){return _0x37870c[_0x4acf('0x76')](_0x3b3fef[_0x4acf('0x3d')][_0x4acf('0x57')],_[_0x4acf('0x77')](_0x3b3fef['body'],[_0x4acf('0x57'),'id'])||{})['spread'](function(_0x327a21){for(var _0x322e45=0x0;_0x322e45<_0x3b3fef['body'][_0x4acf('0x57')][_0x4acf('0x43')];_0x322e45+=0x1){socket['emit']('userFaxQueue:save',{'UserId':Number(_0x3b3fef[_0x4acf('0x3d')][_0x4acf('0x57')][_0x322e45]),'FaxQueueId':Number(_0x3b3fef['params']['id'])});}return _0x327a21;});}})['then'](respondWithResult(_0x179935,null))[_0x4acf('0x2b')](handleError(_0x179935,null));};exports[_0x4acf('0x74')]=function(_0x26fed7,_0x201bc9){return db['FaxQueue'][_0x4acf('0x35')]({'where':{'id':_0x26fed7[_0x4acf('0x2d')]['id']}})[_0x4acf('0x17')](handleEntityNotFound(_0x201bc9,null))[_0x4acf('0x17')](function(_0x43e9bf){if(_0x43e9bf){return _0x43e9bf[_0x4acf('0x74')](_0x26fed7[_0x4acf('0x29')]['ids'])[_0x4acf('0x17')](function(){if(_[_0x4acf('0x78')](_0x26fed7[_0x4acf('0x29')]['ids'])){for(var _0x40cccb=0x0;_0x40cccb<_0x26fed7[_0x4acf('0x29')][_0x4acf('0x57')][_0x4acf('0x43')];_0x40cccb+=0x1){socket[_0x4acf('0x60')](_0x4acf('0x75'),{'UserId':Number(_0x26fed7[_0x4acf('0x29')][_0x4acf('0x57')][_0x40cccb]),'FaxQueueId':Number(_0x26fed7['params']['id'])});}}else{socket['emit']('userFaxQueue:remove',{'UserId':Number(_0x26fed7['query']['ids']),'FaxQueueId':Number(_0x26fed7[_0x4acf('0x2d')]['id'])});}});}})['then'](respondWithStatusCode(_0x201bc9,null))[_0x4acf('0x2b')](handleError(_0x201bc9,null));};exports[_0x4acf('0x79')]=function(_0x59596e,_0x341f2c){var _0x14ef45={};var _0x1e08cf={};var _0x35ddbc;var _0x10df25;return db[_0x4acf('0x22')][_0x4acf('0x3f')]({'where':{'id':_0x59596e[_0x4acf('0x2d')]['id']}})[_0x4acf('0x17')](handleEntityNotFound(_0x341f2c,null))[_0x4acf('0x17')](function(_0x2d2240){if(_0x2d2240){_0x35ddbc=_0x2d2240;_0x1e08cf[_0x4acf('0x32')]=_[_0x4acf('0x2e')](db[_0x4acf('0x58')][_0x4acf('0x2f')]);_0x1e08cf[_0x4acf('0x29')]=_[_0x4acf('0x2e')](_0x59596e['query']);_0x1e08cf['filters']=_[_0x4acf('0x31')](_0x1e08cf[_0x4acf('0x32')],_0x1e08cf[_0x4acf('0x29')]);_0x14ef45[_0x4acf('0x41')]=_[_0x4acf('0x31')](_0x1e08cf[_0x4acf('0x32')],qs[_0x4acf('0x42')](_0x59596e[_0x4acf('0x29')][_0x4acf('0x42')]));_0x14ef45[_0x4acf('0x41')]=_0x14ef45[_0x4acf('0x41')][_0x4acf('0x43')]?_0x14ef45['attributes']:_0x1e08cf['model'];_0x14ef45[_0x4acf('0x7a')]=qs[_0x4acf('0x46')](_0x59596e[_0x4acf('0x29')][_0x4acf('0x46')]);_0x14ef45[_0x4acf('0x27')]=qs[_0x4acf('0x30')](_['pick'](_0x59596e[_0x4acf('0x29')],_0x1e08cf[_0x4acf('0x30')]));if(_0x59596e[_0x4acf('0x29')]['filter']){_0x14ef45[_0x4acf('0x27')]=_[_0x4acf('0x49')](_0x14ef45[_0x4acf('0x27')],{'$or':_[_0x4acf('0x21')](_0x14ef45[_0x4acf('0x41')],function(_0x20cdb4){var _0xfc9508={};_0xfc9508[_0x20cdb4]={'$like':'%'+_0x59596e[_0x4acf('0x29')][_0x4acf('0x48')]+'%'};return _0xfc9508;})});}_0x14ef45=_['merge']({},_0x14ef45,_0x59596e[_0x4acf('0x34')]);return _0x35ddbc['getAgents'](_0x14ef45);}})['then'](function(_0xfd74f){if(_0xfd74f){_0x10df25=_0xfd74f[_0x4acf('0x43')];if(!_0x59596e[_0x4acf('0x29')][_0x4acf('0x44')](_0x4acf('0x45'))){_0x14ef45[_0x4acf('0x11')]=qs[_0x4acf('0x11')](_0x59596e[_0x4acf('0x29')]['limit']);_0x14ef45[_0x4acf('0xf')]=qs[_0x4acf('0xf')](_0x59596e[_0x4acf('0x29')][_0x4acf('0xf')]);}return _0x35ddbc[_0x4acf('0x79')](_0x14ef45);}})[_0x4acf('0x17')](function(_0x499214){if(_0x499214){return _0x499214?{'count':_0x10df25,'rows':_0x499214}:null;}})[_0x4acf('0x17')](respondWithResult(_0x341f2c,null))[_0x4acf('0x2b')](handleError(_0x341f2c,null));};
\ No newline at end of file
+var _0xa6bb=['includeAll','merge','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','find','params','describe','getMembers','findOne','UserFaxQueue','rawAttributes','nolimit','limit','order','sort','where','FaxQueueId','filter','findAll','User','findAndCountAll','UserId','updatedAt','createdAt','format','SIP','faxPause','getTeams','Team','pick','hasOwnProperty','addTeams','ids','Agents','online','interface','flatMap','sequelize','findOrCreate','emit','userFaxQueue:save','select','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','TeamId','all','union','removeTeams','isEmpty','forEach','userFaxQueue:remove','addAgents','omit','spread','removeAgents','getAgents','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./faxQueue.socket','sendStatus','status','end','undefined','count','offset','json','destroy','then','get','UserProfileResource','error','stack','name','map','FaxQueue','fieldName','type','getOptions','include','rows','catch','show','keys','query','filters','intersection','model','attributes','fields','length'];(function(_0x419a10,_0x57d49b){var _0x20b9d2=function(_0x53530a){while(--_0x53530a){_0x419a10['push'](_0x419a10['shift']());}};_0x20b9d2(++_0x57d49b);}(_0xa6bb,0x12c));var _0xba6b=function(_0x530fa2,_0x3bf466){_0x530fa2=_0x530fa2-0x0;var _0x2c1c89=_0xa6bb[_0x530fa2];return _0x2c1c89;};'use strict';var BPromise=require('bluebird');var util=require(_0xba6b('0x0'));var _=require(_0xba6b('0x1'));var squel=require(_0xba6b('0x2'));var Redis=require(_0xba6b('0x3'));var qs=require(_0xba6b('0x4'));var logger=require('../../config/logger')('api');var config=require(_0xba6b('0x5'));var db=require(_0xba6b('0x6'))['db'];config[_0xba6b('0x7')]=_[_0xba6b('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xba6b('0x9'))(new Redis(config[_0xba6b('0x7')]));require(_0xba6b('0xa'))['register'](socket);function respondWithStatusCode(_0x55f5c3,_0x135892){_0x135892=_0x135892||0xcc;return function(_0x16bfde){if(_0x16bfde){return _0x55f5c3[_0xba6b('0xb')](_0x135892);}return _0x55f5c3[_0xba6b('0xc')](_0x135892)[_0xba6b('0xd')]();};}function respondWithResult(_0x534849,_0x17e6c8){_0x17e6c8=_0x17e6c8||0xc8;return function(_0x297f02){if(_0x297f02){return _0x534849[_0xba6b('0xc')](_0x17e6c8)['json'](_0x297f02);}};}function respondWithFilteredResult(_0x16fd15,_0x35e23d){return function(_0x3bf240){if(_0x3bf240){var _0x11bcb9=typeof _0x35e23d['offset']===_0xba6b('0xe')&&typeof _0x35e23d['limit']===_0xba6b('0xe');var _0x1adc27=_0x3bf240[_0xba6b('0xf')];var _0x15d4e2=_0x11bcb9?0x0:_0x35e23d[_0xba6b('0x10')];var _0x53ec00=_0x11bcb9?_0x3bf240[_0xba6b('0xf')]:_0x35e23d[_0xba6b('0x10')]+_0x35e23d['limit'];var _0x16c3d0;if(_0x53ec00>=_0x1adc27){_0x53ec00=_0x1adc27;_0x16c3d0=0xc8;}else{_0x16c3d0=0xce;}_0x16fd15[_0xba6b('0xc')](_0x16c3d0);return _0x16fd15['set']('Content-Range',_0x15d4e2+'-'+_0x53ec00+'/'+_0x1adc27)[_0xba6b('0x11')](_0x3bf240);}return null;};}function saveUpdates(_0x5b32cd){return function(_0x5d5a6c){if(_0x5d5a6c){return _0x5d5a6c['update'](_0x5b32cd)['then'](function(_0x4be059){return _0x4be059;});}return null;};}function removeEntity(_0x16b130){return function(_0x34aa97){if(_0x34aa97){return _0x34aa97[_0xba6b('0x12')]()[_0xba6b('0x13')](function(){var _0x300399=_0x34aa97[_0xba6b('0x14')]({'plain':!![]});var _0x44a7a3='FaxQueues';return db[_0xba6b('0x15')]['destroy']({'where':{'type':_0x44a7a3,'resourceId':_0x300399['id']}})['then'](function(){return _0x34aa97;});})[_0xba6b('0x13')](function(){_0x16b130[_0xba6b('0xc')](0xcc)[_0xba6b('0xd')]();});}};}function handleEntityNotFound(_0x1751f3){return function(_0x47b615){if(!_0x47b615){_0x1751f3[_0xba6b('0xb')](0x194);}return _0x47b615;};}function handleError(_0x436623,_0x548c1b){_0x548c1b=_0x548c1b||0x1f4;return function(_0x38c46a){logger[_0xba6b('0x16')](_0x38c46a[_0xba6b('0x17')]);if(_0x38c46a[_0xba6b('0x18')]){delete _0x38c46a[_0xba6b('0x18')];}_0x436623['status'](_0x548c1b)['send'](_0x38c46a);};}exports['index']=function(_0x5d9163,_0x211434){var _0x2525f8={};var _0x2f5343={'count':0x0,'rows':[]};var _0x39f052=_[_0xba6b('0x19')](db[_0xba6b('0x1a')]['rawAttributes'],function(_0x876e58){return{'name':_0x876e58[_0xba6b('0x1b')],'type':_0x876e58[_0xba6b('0x1c')]['key']};});_0x2525f8=qs[_0xba6b('0x1d')](_0x39f052,_0x5d9163);var _0x131830={'where':_0x2525f8['where']};return db[_0xba6b('0x1a')][_0xba6b('0xf')](_0x131830)[_0xba6b('0x13')](function(_0x41a0e0){_0x2f5343[_0xba6b('0xf')]=_0x41a0e0;_0x2525f8['include']=qs[_0xba6b('0x1e')](_0x5d9163['query']);return db[_0xba6b('0x1a')]['findAll'](_0x2525f8);})[_0xba6b('0x13')](function(_0x53649d){_0x2f5343[_0xba6b('0x1f')]=_0x53649d;return _0x2f5343;})['then'](respondWithFilteredResult(_0x211434,_0x2525f8))[_0xba6b('0x20')](handleError(_0x211434,null));};exports[_0xba6b('0x21')]=function(_0xc20433,_0x474cc7){var _0x5e87ed={'raw':!![],'where':{'id':_0xc20433['params']['id']}},_0x2e9bda={};_0x2e9bda['model']=_[_0xba6b('0x22')](db[_0xba6b('0x1a')]['rawAttributes']);_0x2e9bda[_0xba6b('0x23')]=_['keys'](_0xc20433['query']);_0x2e9bda[_0xba6b('0x24')]=_[_0xba6b('0x25')](_0x2e9bda[_0xba6b('0x26')],_0x2e9bda[_0xba6b('0x23')]);_0x5e87ed[_0xba6b('0x27')]=_['intersection'](_0x2e9bda[_0xba6b('0x26')],qs[_0xba6b('0x28')](_0xc20433[_0xba6b('0x23')][_0xba6b('0x28')]));_0x5e87ed[_0xba6b('0x27')]=_0x5e87ed[_0xba6b('0x27')][_0xba6b('0x29')]?_0x5e87ed[_0xba6b('0x27')]:_0x2e9bda[_0xba6b('0x26')];if(_0xc20433['query'][_0xba6b('0x2a')]){_0x5e87ed[_0xba6b('0x1e')]=[{'all':!![]}];}_0x5e87ed=_[_0xba6b('0x2b')]({},_0x5e87ed,_0xc20433[_0xba6b('0x2c')]);return db['FaxQueue']['find'](_0x5e87ed)[_0xba6b('0x13')](handleEntityNotFound(_0x474cc7,null))[_0xba6b('0x13')](respondWithResult(_0x474cc7,null))[_0xba6b('0x20')](handleError(_0x474cc7,null));};exports[_0xba6b('0x2d')]=function(_0x4a3386,_0x3ed42a){return db[_0xba6b('0x1a')]['create'](_0x4a3386[_0xba6b('0x2e')],{})['then'](function(_0x142eb0){var _0x36df21=_0x4a3386[_0xba6b('0x2f')]['get']({'plain':!![]});if(!_0x36df21)throw new Error(_0xba6b('0x30'));if(_0x36df21[_0xba6b('0x31')]==='user'){var _0x2ecbb7=_0x142eb0['get']({'plain':!![]});var _0x87884b='FaxQueues';return db[_0xba6b('0x32')]['find']({'where':{'name':_0x87884b,'userProfileId':_0x36df21[_0xba6b('0x33')]},'raw':!![]})['then'](function(_0x37dcb6){if(_0x37dcb6&&_0x37dcb6[_0xba6b('0x34')]===0x0){return db[_0xba6b('0x15')][_0xba6b('0x2d')]({'name':_0x2ecbb7['name'],'resourceId':_0x2ecbb7['id'],'type':_0x37dcb6[_0xba6b('0x18')],'sectionId':_0x37dcb6['id']},{})[_0xba6b('0x13')](function(){return _0x142eb0;});}else{return _0x142eb0;}})[_0xba6b('0x20')](function(_0x31fe5a){logger[_0xba6b('0x16')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31fe5a);throw _0x31fe5a;});}return _0x142eb0;})[_0xba6b('0x13')](respondWithResult(_0x3ed42a,0xc9))['catch'](handleError(_0x3ed42a,null));};exports[_0xba6b('0x35')]=function(_0x7cb298,_0x5b710a){if(_0x7cb298['body']['id']){delete _0x7cb298[_0xba6b('0x2e')]['id'];}return db[_0xba6b('0x1a')][_0xba6b('0x36')]({'where':{'id':_0x7cb298[_0xba6b('0x37')]['id']}})['then'](handleEntityNotFound(_0x5b710a,null))[_0xba6b('0x13')](saveUpdates(_0x7cb298[_0xba6b('0x2e')],null))[_0xba6b('0x13')](respondWithResult(_0x5b710a,null))[_0xba6b('0x20')](handleError(_0x5b710a,null));};exports['destroy']=function(_0x25d208,_0x1029b6){return db[_0xba6b('0x1a')][_0xba6b('0x36')]({'where':{'id':_0x25d208[_0xba6b('0x37')]['id']}})[_0xba6b('0x13')](handleEntityNotFound(_0x1029b6,null))['then'](removeEntity(_0x1029b6,null))[_0xba6b('0x20')](handleError(_0x1029b6,null));};exports[_0xba6b('0x38')]=function(_0x652c9a,_0x4c166e){return db[_0xba6b('0x1a')][_0xba6b('0x38')]()[_0xba6b('0x13')](respondWithResult(_0x4c166e,null))[_0xba6b('0x20')](handleError(_0x4c166e,null));};exports[_0xba6b('0x39')]=function(_0x3e1071,_0x29bbad){var _0x37c4a4={'raw':!![],'where':{}},_0x4f2e50={},_0x15e3c5;return db[_0xba6b('0x1a')][_0xba6b('0x3a')]({'where':{'id':_0x3e1071['params']['id']}})[_0xba6b('0x13')](handleEntityNotFound(_0x29bbad,null))[_0xba6b('0x13')](function(_0x268e05){if(_0x268e05){_0x15e3c5=_0x268e05[_0xba6b('0x14')]({'plain':!![]});_0x4f2e50[_0xba6b('0x26')]=_[_0xba6b('0x22')](db[_0xba6b('0x3b')][_0xba6b('0x3c')]);_0x4f2e50[_0xba6b('0x23')]=_['keys'](_0x3e1071[_0xba6b('0x23')]);_0x4f2e50[_0xba6b('0x24')]=_[_0xba6b('0x25')](_0x4f2e50[_0xba6b('0x26')],_0x4f2e50[_0xba6b('0x23')]);_0x37c4a4[_0xba6b('0x27')]=_[_0xba6b('0x25')](_0x4f2e50[_0xba6b('0x26')],qs[_0xba6b('0x28')](_0x3e1071[_0xba6b('0x23')]['fields']));_0x37c4a4[_0xba6b('0x27')]=_0x37c4a4[_0xba6b('0x27')]['length']?_0x37c4a4[_0xba6b('0x27')]:_0x4f2e50[_0xba6b('0x26')];if(!_0x3e1071[_0xba6b('0x23')]['hasOwnProperty'](_0xba6b('0x3d'))){_0x37c4a4[_0xba6b('0x3e')]=qs[_0xba6b('0x3e')](_0x3e1071['query'][_0xba6b('0x3e')]);_0x37c4a4['offset']=qs['offset'](_0x3e1071['query']['offset']);}_0x37c4a4[_0xba6b('0x3f')]=qs[_0xba6b('0x40')](_0x3e1071[_0xba6b('0x23')]['sort']);_0x37c4a4[_0xba6b('0x41')]=qs['filters'](_['pick'](_0x3e1071[_0xba6b('0x23')],_0x4f2e50[_0xba6b('0x24')]));_0x37c4a4[_0xba6b('0x41')][_0xba6b('0x42')]=_0x268e05['id'];if(_0x3e1071[_0xba6b('0x23')]['filter']){_0x37c4a4['where']=_[_0xba6b('0x2b')](_0x37c4a4[_0xba6b('0x41')],{'$or':_['map'](_0x37c4a4[_0xba6b('0x27')],function(_0x5ac0fe){var _0x3f59de={};_0x3f59de[_0x5ac0fe]={'$like':'%'+_0x3e1071[_0xba6b('0x23')][_0xba6b('0x43')]+'%'};return _0x3f59de;})});}_0x37c4a4=_[_0xba6b('0x2b')]({},_0x37c4a4,_0x3e1071['options']);return db[_0xba6b('0x3b')][_0xba6b('0x44')](_0x37c4a4);}})['then'](function(_0x2731fe){if(_0x2731fe){return db[_0xba6b('0x45')][_0xba6b('0x46')]({'where':{'id':_['map'](_0x2731fe,_0xba6b('0x47')),'role':'agent'},'attributes':['id','name','faxPause',_0xba6b('0x48'),_0xba6b('0x49')]});}})['then'](function(_0xdd7a79){if(_0xdd7a79){return{'count':_0xdd7a79[_0xba6b('0xf')],'rows':_[_0xba6b('0x19')](_0xdd7a79[_0xba6b('0x1f')],function(_0x587aa6){return{'membername':_0x587aa6[_0xba6b('0x18')],'UserId':_0x587aa6['id'],'queue_name':_0x15e3c5[_0xba6b('0x18')],'FaxQueueId':_0x15e3c5['id'],'interface':util[_0xba6b('0x4a')]('%s/%s',_0xba6b('0x4b'),_0x587aa6['name']),'penalty':0x0,'paused':_0x587aa6[_0xba6b('0x4c')],'createdAt':_0x587aa6[_0xba6b('0x49')],'updatedAt':_0x587aa6[_0xba6b('0x48')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xba6b('0x13')](respondWithFilteredResult(_0x29bbad,_0x37c4a4))[_0xba6b('0x20')](handleError(_0x29bbad,null));};exports[_0xba6b('0x4d')]=function(_0x21e692,_0x326ebd){var _0x2056bc={};var _0x54efaf={};var _0x2072bc;var _0x37bfa8;return db[_0xba6b('0x1a')][_0xba6b('0x3a')]({'where':{'id':_0x21e692[_0xba6b('0x37')]['id']}})[_0xba6b('0x13')](handleEntityNotFound(_0x326ebd,null))[_0xba6b('0x13')](function(_0x1442a4){if(_0x1442a4){_0x2072bc=_0x1442a4;_0x54efaf[_0xba6b('0x26')]=_[_0xba6b('0x22')](db[_0xba6b('0x4e')][_0xba6b('0x3c')]);_0x54efaf[_0xba6b('0x23')]=_['keys'](_0x21e692['query']);_0x54efaf[_0xba6b('0x24')]=_[_0xba6b('0x25')](_0x54efaf['model'],_0x54efaf[_0xba6b('0x23')]);_0x2056bc[_0xba6b('0x27')]=_[_0xba6b('0x25')](_0x54efaf[_0xba6b('0x26')],qs[_0xba6b('0x28')](_0x21e692['query'][_0xba6b('0x28')]));_0x2056bc[_0xba6b('0x27')]=_0x2056bc[_0xba6b('0x27')]['length']?_0x2056bc['attributes']:_0x54efaf[_0xba6b('0x26')];_0x2056bc['order']=qs[_0xba6b('0x40')](_0x21e692['query'][_0xba6b('0x40')]);_0x2056bc['where']=qs[_0xba6b('0x24')](_[_0xba6b('0x4f')](_0x21e692['query'],_0x54efaf['filters']));if(_0x21e692[_0xba6b('0x23')]['filter']){_0x2056bc[_0xba6b('0x41')]=_[_0xba6b('0x2b')](_0x2056bc[_0xba6b('0x41')],{'$or':_[_0xba6b('0x19')](_0x2056bc[_0xba6b('0x27')],function(_0x56ae09){var _0xe11c3d={};_0xe11c3d[_0x56ae09]={'$like':'%'+_0x21e692[_0xba6b('0x23')]['filter']+'%'};return _0xe11c3d;})});}_0x2056bc=_[_0xba6b('0x2b')]({},_0x2056bc,_0x21e692[_0xba6b('0x2c')]);return _0x2072bc['getTeams'](_0x2056bc);}})['then'](function(_0x3b4837){if(_0x3b4837){_0x37bfa8=_0x3b4837[_0xba6b('0x29')];if(!_0x21e692['query'][_0xba6b('0x50')]('nolimit')){_0x2056bc[_0xba6b('0x3e')]=qs['limit'](_0x21e692[_0xba6b('0x23')][_0xba6b('0x3e')]);_0x2056bc['offset']=qs[_0xba6b('0x10')](_0x21e692[_0xba6b('0x23')][_0xba6b('0x10')]);}return _0x2072bc[_0xba6b('0x4d')](_0x2056bc);}})['then'](function(_0x166df4){if(_0x166df4){return _0x166df4?{'count':_0x37bfa8,'rows':_0x166df4}:null;}})[_0xba6b('0x13')](respondWithResult(_0x326ebd,null))['catch'](handleError(_0x326ebd,null));};exports[_0xba6b('0x51')]=function(_0x4f0ea3,_0x2c9db2){var _0x573407=_0x4f0ea3[_0xba6b('0x2e')][_0xba6b('0x52')];return db['Team']['findAll']({'where':{'id':_0x573407},'attributes':['id'],'include':[{'model':db['User'],'as':_0xba6b('0x53'),'attributes':['id',_0xba6b('0x18'),_0xba6b('0x54'),'voicePause',_0xba6b('0x55')],'raw':!![]}]})[_0xba6b('0x13')](function(_0x25f58b){if(_0x25f58b){var _0x21d5b7=_[_0xba6b('0x56')](_0x25f58b,function(_0x523279){var _0x110ec0=_0x523279[_0xba6b('0x14')]({'plain':!![]});return _0x110ec0['Agents'];});return db[_0xba6b('0x1a')][_0xba6b('0x36')]({'where':{'id':_0x4f0ea3[_0xba6b('0x37')]['id']}})[_0xba6b('0x13')](function(_0x30506e){return db[_0xba6b('0x57')]['transaction'](function(_0x2ad609){return _0x30506e[_0xba6b('0x51')](_0x573407,{'transaction':_0x2ad609})[_0xba6b('0x13')](function(){return BPromise['each'](_0x21d5b7,function(_0x4f2faa){return db[_0xba6b('0x3b')][_0xba6b('0x58')]({'where':{'UserId':_0x4f2faa['id'],'FaxQueueId':_0x4f0ea3[_0xba6b('0x37')]['id']},'transaction':_0x2ad609});});})[_0xba6b('0x13')](function(){_0x21d5b7['forEach'](function(_0xf85bb6){socket[_0xba6b('0x59')](_0xba6b('0x5a'),{'UserId':_0xf85bb6['id'],'FaxQueueId':_0x30506e['id']});});});});});}})[_0xba6b('0x13')](respondWithStatusCode(_0x2c9db2,null))[_0xba6b('0x20')](handleError(_0x2c9db2,null));};exports['removeTeams']=function(_0x214954,_0x270e4c){return db['Team'][_0xba6b('0x44')]({'where':{'id':_0x214954['query'][_0xba6b('0x52')]},'attributes':['id'],'include':[{'model':db[_0xba6b('0x45')],'as':_0xba6b('0x53'),'attributes':['id'],'raw':!![]}]})[_0xba6b('0x13')](handleEntityNotFound(_0x270e4c,null))[_0xba6b('0x13')](function(_0x3b6ce6){var _0x2f1a44=_[_0xba6b('0x19')](_0x3b6ce6,'id');var _0x276696=[];var _0x309cc1=[];var _0x59b6ea=squel[_0xba6b('0x5b')]();_0x59b6ea['field']('tq.TeamId')[_0xba6b('0x5c')](_0xba6b('0x5d'),'tq')[_0xba6b('0x5e')](_0xba6b('0x5f'),'ut',_0xba6b('0x60'))[_0xba6b('0x41')]('FaxQueueId\x20=\x20?',_0x214954[_0xba6b('0x37')]['id']);for(var _0x3a003d=0x0;_0x3a003d<_0x3b6ce6[_0xba6b('0x29')];_0x3a003d+=0x1){let _0x86fa58=_0x3b6ce6[_0x3a003d];for(var _0x2e4297=0x0;_0x2e4297<_0x86fa58[_0xba6b('0x53')][_0xba6b('0x29')];_0x2e4297+=0x1){let _0x475c57=_0x86fa58['Agents'][_0x2e4297];var _0xa063f6=_0x59b6ea[_0xba6b('0x61')]();_0xa063f6[_0xba6b('0x41')](_0xba6b('0x62'),_0x475c57['id']);_0x309cc1[_0xba6b('0x63')](db[_0xba6b('0x57')][_0xba6b('0x23')](_0xa063f6[_0xba6b('0x64')](),{'type':db[_0xba6b('0x57')][_0xba6b('0x65')]['SELECT']})[_0xba6b('0x13')](function(_0x35521e){if(_0x35521e[_0xba6b('0x29')]===0x1){return _0x475c57['id'];}else{var _0x55e141=_['every'](_[_0xba6b('0x19')](_0x35521e,_0xba6b('0x66')),function(_0x428f9f){return _['includes'](_0x2f1a44,_0x428f9f);});if(_0x55e141){return _0x475c57['id'];}}}));}}return BPromise[_0xba6b('0x67')](_0x309cc1)[_0xba6b('0x13')](function(_0x1d5a33){_0x276696=_(_0x276696)[_0xba6b('0x68')](_0x1d5a33)['compact']()['value']();return db[_0xba6b('0x1a')]['find']({'where':{'id':_0x214954[_0xba6b('0x37')]['id']}})['then'](function(_0x2597b8){return db[_0xba6b('0x57')]['transaction'](function(_0x279c89){return _0x2597b8[_0xba6b('0x69')](_0x214954[_0xba6b('0x23')][_0xba6b('0x52')],{'transaction':_0x279c89})[_0xba6b('0x13')](function(){if(!_[_0xba6b('0x6a')](_0x276696)){return _0x2597b8['removeAgents'](_0x276696,{'transaction':_0x279c89});}})['then'](function(){_0x276696[_0xba6b('0x6b')](function(_0x5ee33d){socket[_0xba6b('0x59')](_0xba6b('0x6c'),{'UserId':_0x5ee33d,'FaxQueueId':_0x2597b8['id']});});});});});});})[_0xba6b('0x13')](respondWithStatusCode(_0x270e4c,null))['catch'](handleError(_0x270e4c,null));};exports[_0xba6b('0x6d')]=function(_0x2d8590,_0x8244cf){return db[_0xba6b('0x1a')][_0xba6b('0x36')]({'where':{'id':_0x2d8590['params']['id']}})[_0xba6b('0x13')](handleEntityNotFound(_0x8244cf,null))[_0xba6b('0x13')](function(_0x69582a){if(_0x69582a){return _0x69582a[_0xba6b('0x6d')](_0x2d8590[_0xba6b('0x2e')][_0xba6b('0x52')],_[_0xba6b('0x6e')](_0x2d8590[_0xba6b('0x2e')],['ids','id'])||{})[_0xba6b('0x6f')](function(_0x1ec6d5){for(var _0x2b82cc=0x0;_0x2b82cc<_0x2d8590[_0xba6b('0x2e')][_0xba6b('0x52')][_0xba6b('0x29')];_0x2b82cc+=0x1){socket[_0xba6b('0x59')](_0xba6b('0x5a'),{'UserId':Number(_0x2d8590[_0xba6b('0x2e')][_0xba6b('0x52')][_0x2b82cc]),'FaxQueueId':Number(_0x2d8590[_0xba6b('0x37')]['id'])});}return _0x1ec6d5;});}})[_0xba6b('0x13')](respondWithResult(_0x8244cf,null))[_0xba6b('0x20')](handleError(_0x8244cf,null));};exports[_0xba6b('0x70')]=function(_0x50aa25,_0x4fa4ef){return db['FaxQueue']['find']({'where':{'id':_0x50aa25['params']['id']}})[_0xba6b('0x13')](handleEntityNotFound(_0x4fa4ef,null))[_0xba6b('0x13')](function(_0x297ab8){if(_0x297ab8){return _0x297ab8[_0xba6b('0x70')](_0x50aa25[_0xba6b('0x23')]['ids'])[_0xba6b('0x13')](function(){if(_['isArray'](_0x50aa25['query']['ids'])){for(var _0x677b76=0x0;_0x677b76<_0x50aa25[_0xba6b('0x23')][_0xba6b('0x52')]['length'];_0x677b76+=0x1){socket['emit'](_0xba6b('0x6c'),{'UserId':Number(_0x50aa25[_0xba6b('0x23')][_0xba6b('0x52')][_0x677b76]),'FaxQueueId':Number(_0x50aa25['params']['id'])});}}else{socket[_0xba6b('0x59')](_0xba6b('0x6c'),{'UserId':Number(_0x50aa25['query'][_0xba6b('0x52')]),'FaxQueueId':Number(_0x50aa25['params']['id'])});}});}})[_0xba6b('0x13')](respondWithStatusCode(_0x4fa4ef,null))[_0xba6b('0x20')](handleError(_0x4fa4ef,null));};exports[_0xba6b('0x71')]=function(_0x33f7ce,_0xf93a0d){var _0x51a44e={};var _0x11ee0b={};var _0x53b63a;var _0x3b172b;return db[_0xba6b('0x1a')]['findOne']({'where':{'id':_0x33f7ce[_0xba6b('0x37')]['id']}})['then'](handleEntityNotFound(_0xf93a0d,null))[_0xba6b('0x13')](function(_0x671948){if(_0x671948){_0x53b63a=_0x671948;_0x11ee0b['model']=_[_0xba6b('0x22')](db[_0xba6b('0x45')]['rawAttributes']);_0x11ee0b[_0xba6b('0x23')]=_[_0xba6b('0x22')](_0x33f7ce[_0xba6b('0x23')]);_0x11ee0b[_0xba6b('0x24')]=_[_0xba6b('0x25')](_0x11ee0b[_0xba6b('0x26')],_0x11ee0b[_0xba6b('0x23')]);_0x51a44e['attributes']=_['intersection'](_0x11ee0b[_0xba6b('0x26')],qs[_0xba6b('0x28')](_0x33f7ce[_0xba6b('0x23')][_0xba6b('0x28')]));_0x51a44e[_0xba6b('0x27')]=_0x51a44e['attributes'][_0xba6b('0x29')]?_0x51a44e[_0xba6b('0x27')]:_0x11ee0b[_0xba6b('0x26')];_0x51a44e[_0xba6b('0x3f')]=qs[_0xba6b('0x40')](_0x33f7ce['query']['sort']);_0x51a44e[_0xba6b('0x41')]=qs[_0xba6b('0x24')](_[_0xba6b('0x4f')](_0x33f7ce[_0xba6b('0x23')],_0x11ee0b[_0xba6b('0x24')]));if(_0x33f7ce['query'][_0xba6b('0x43')]){_0x51a44e['where']=_['merge'](_0x51a44e[_0xba6b('0x41')],{'$or':_[_0xba6b('0x19')](_0x51a44e[_0xba6b('0x27')],function(_0x23c320){var _0x51fa51={};_0x51fa51[_0x23c320]={'$like':'%'+_0x33f7ce['query'][_0xba6b('0x43')]+'%'};return _0x51fa51;})});}_0x51a44e=_[_0xba6b('0x2b')]({},_0x51a44e,_0x33f7ce['options']);return _0x53b63a[_0xba6b('0x71')](_0x51a44e);}})['then'](function(_0x44ecea){if(_0x44ecea){_0x3b172b=_0x44ecea[_0xba6b('0x29')];if(!_0x33f7ce['query']['hasOwnProperty'](_0xba6b('0x3d'))){_0x51a44e[_0xba6b('0x3e')]=qs[_0xba6b('0x3e')](_0x33f7ce[_0xba6b('0x23')]['limit']);_0x51a44e['offset']=qs[_0xba6b('0x10')](_0x33f7ce['query']['offset']);}return _0x53b63a[_0xba6b('0x71')](_0x51a44e);}})[_0xba6b('0x13')](function(_0x2eee24){if(_0x2eee24){return _0x2eee24?{'count':_0x3b172b,'rows':_0x2eee24}:null;}})['then'](respondWithResult(_0xf93a0d,null))[_0xba6b('0x20')](handleError(_0xf93a0d,null));};
\ No newline at end of file
index b9c5035..abf5b39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe214=['emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','update','remove'];(function(_0xc51cc6,_0x221ed5){var _0x30ed2c=function(_0x2ba766){while(--_0x2ba766){_0xc51cc6['push'](_0xc51cc6['shift']());}};_0x30ed2c(++_0x221ed5);}(_0xe214,0x9b));var _0x4e21=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xe214[_0x3947c9];return _0x2e7871;};'use strict';var EventEmitter=require(_0x4e21('0x0'));var FaxQueue=require(_0x4e21('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x4e21('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4e21('0x3'),'afterDestroy':_0x4e21('0x4')};function emitEvent(_0x43333a){return function(_0x4a03e4,_0x52b9a0,_0x3490ab){FaxQueueEvents[_0x4e21('0x5')](_0x43333a+':'+_0x4a03e4['id'],_0x4a03e4);FaxQueueEvents[_0x4e21('0x5')](_0x43333a,_0x4a03e4);_0x3490ab(null);};}for(var e in events){if(events[_0x4e21('0x6')](e)){var event=events[e];FaxQueue[_0x4e21('0x7')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
+var _0x7d1f=['save','update','emit','hasOwnProperty','exports','events','FaxQueue','setMaxListeners'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7d1f,0x185));var _0xf7d1=function(_0x510e5f,_0x50fa5b){_0x510e5f=_0x510e5f-0x0;var _0x3f4815=_0x7d1f[_0x510e5f];return _0x3f4815;};'use strict';var EventEmitter=require(_0xf7d1('0x0'));var FaxQueue=require('../../mysqldb')['db'][_0xf7d1('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xf7d1('0x2')](0x0);var events={'afterCreate':_0xf7d1('0x3'),'afterUpdate':_0xf7d1('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4cef7b){return function(_0x96f18a,_0x42bc64,_0x1302f4){FaxQueueEvents[_0xf7d1('0x5')](_0x4cef7b+':'+_0x96f18a['id'],_0x96f18a);FaxQueueEvents[_0xf7d1('0x5')](_0x4cef7b,_0x96f18a);_0x1302f4(null);};}for(var e in events){if(events[_0xf7d1('0x6')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0xf7d1('0x7')]=FaxQueueEvents;
\ No newline at end of file
index cb50c4e..2ce61f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e55=['bluebird','request-promise','path','rimraf','./faxQueue.attributes','exports','define','FaxQueue','fax_queues','lodash','../../config/logger','api','moment'];(function(_0x334c5e,_0x29d196){var _0x31035e=function(_0x135f9b){while(--_0x135f9b){_0x334c5e['push'](_0x334c5e['shift']());}};_0x31035e(++_0x29d196);}(_0x4e55,0x1b6));var _0x54e5=function(_0x1b8032,_0x283aae){_0x1b8032=_0x1b8032-0x0;var _0x1762a3=_0x4e55[_0x1b8032];return _0x1762a3;};'use strict';var _=require(_0x54e5('0x0'));var util=require('util');var logger=require(_0x54e5('0x1'))(_0x54e5('0x2'));var moment=require(_0x54e5('0x3'));var BPromise=require(_0x54e5('0x4'));var rp=require(_0x54e5('0x5'));var fs=require('fs');var path=require(_0x54e5('0x6'));var rimraf=require(_0x54e5('0x7'));var config=require('../../config/environment');var attributes=require(_0x54e5('0x8'));module[_0x54e5('0x9')]=function(_0xa30d1f,_0x38d0e0){return _0xa30d1f[_0x54e5('0xa')](_0x54e5('0xb'),attributes,{'tableName':_0x54e5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x858b=['./faxQueue.attributes','exports','define','FaxQueue','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x858b,0xd4));var _0xb858=function(_0x599c94,_0x464f0e){_0x599c94=_0x599c94-0x0;var _0x34e215=_0x858b[_0x599c94];return _0x34e215;};'use strict';var _=require(_0xb858('0x0'));var util=require(_0xb858('0x1'));var logger=require(_0xb858('0x2'))('api');var moment=require(_0xb858('0x3'));var BPromise=require(_0xb858('0x4'));var rp=require(_0xb858('0x5'));var fs=require('fs');var path=require(_0xb858('0x6'));var rimraf=require(_0xb858('0x7'));var config=require(_0xb858('0x8'));var attributes=require(_0xb858('0x9'));module[_0xb858('0xa')]=function(_0x597562,_0x38f2db){return _0x597562[_0xb858('0xb')](_0xb858('0xc'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d0adf79..9fef409 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6ae=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./faxQueue.socket','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','FaxQueue','findAll','options','raw','attributes','limit','include','map','model','GetFaxQueue','stringify','ShowFaxQueue','find','where'];(function(_0x2ea5d6,_0x2ef3e7){var _0x20dcb3=function(_0x22ed56){while(--_0x22ed56){_0x2ea5d6['push'](_0x2ea5d6['shift']());}};_0x20dcb3(++_0x2ef3e7);}(_0xa6ae,0x171));var _0xea6a=function(_0x2d959a,_0x4d8b26){_0x2d959a=_0x2d959a-0x0;var _0x2fa8d6=_0xa6ae[_0x2d959a];return _0x2fa8d6;};'use strict';var _=require(_0xea6a('0x0'));var util=require('util');var moment=require(_0xea6a('0x1'));var BPromise=require(_0xea6a('0x2'));var rs=require(_0xea6a('0x3'));var fs=require('fs');var Redis=require(_0xea6a('0x4'));var db=require(_0xea6a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xea6a('0x6'))(_0xea6a('0x7'));var config=require('../../config/environment');var jayson=require(_0xea6a('0x8'));var client=jayson[_0xea6a('0x9')][_0xea6a('0xa')]({'port':0x232a});config[_0xea6a('0xb')]=_[_0xea6a('0xc')](config[_0xea6a('0xb')],{'host':_0xea6a('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xea6a('0xb')]));require(_0xea6a('0xe'))['register'](socket);function respondWithRpcPromise(_0x2636df,_0x3490f4,_0x1cb670){return new BPromise(function(_0x224fdf,_0xd46685){return client[_0xea6a('0xf')](_0x2636df,_0x1cb670)[_0xea6a('0x10')](function(_0xf3d3b3){logger[_0xea6a('0x11')](_0xea6a('0x12'),_0x3490f4,_0xea6a('0x13'));logger[_0xea6a('0x14')](_0xea6a('0x15'),_0x3490f4,'request\x20sent',JSON['stringify'](_0xf3d3b3));if(_0xf3d3b3[_0xea6a('0x16')]){if(_0xf3d3b3[_0xea6a('0x16')][_0xea6a('0x17')]===0x1f4){logger[_0xea6a('0x16')]('FaxQueue,\x20%s,\x20%s',_0x3490f4,_0xf3d3b3[_0xea6a('0x16')][_0xea6a('0x18')]);return _0xd46685(_0xf3d3b3[_0xea6a('0x16')]['message']);}logger[_0xea6a('0x16')](_0xea6a('0x12'),_0x3490f4,_0xf3d3b3[_0xea6a('0x16')][_0xea6a('0x18')]);return _0x224fdf(_0xf3d3b3['error']['message']);}else{logger[_0xea6a('0x11')](_0xea6a('0x12'),_0x3490f4,'request\x20sent');_0x224fdf(_0xf3d3b3[_0xea6a('0x19')][_0xea6a('0x18')]);}})[_0xea6a('0x1a')](function(_0x4b669e){logger[_0xea6a('0x16')](_0xea6a('0x12'),_0x3490f4,_0x4b669e);_0xd46685(_0x4b669e);});});}exports['GetFaxQueue']=function(_0xecee02){var _0x3095d3=this;return new Promise(function(_0x19f41e,_0x3ee252){return db[_0xea6a('0x1b')][_0xea6a('0x1c')]({'raw':_0xecee02[_0xea6a('0x1d')]?_0xecee02[_0xea6a('0x1d')][_0xea6a('0x1e')]===undefined?!![]:![]:!![],'where':_0xecee02[_0xea6a('0x1d')]?_0xecee02[_0xea6a('0x1d')]['where']||null:null,'attributes':_0xecee02['options']?_0xecee02[_0xea6a('0x1d')][_0xea6a('0x1f')]||null:null,'limit':_0xecee02[_0xea6a('0x1d')]?_0xecee02['options'][_0xea6a('0x20')]||null:null,'include':_0xecee02['options']?_0xecee02[_0xea6a('0x1d')][_0xea6a('0x21')]?_[_0xea6a('0x22')](_0xecee02[_0xea6a('0x1d')][_0xea6a('0x21')],function(_0x197677){return{'model':db[_0x197677[_0xea6a('0x23')]],'as':_0x197677['as'],'attributes':_0x197677['attributes'],'include':_0x197677[_0xea6a('0x21')]?_[_0xea6a('0x22')](_0x197677[_0xea6a('0x21')],function(_0x58cf3a){return{'model':db[_0x58cf3a[_0xea6a('0x23')]],'as':_0x58cf3a['as'],'attributes':_0x58cf3a[_0xea6a('0x1f')],'include':_0x58cf3a[_0xea6a('0x21')]?_[_0xea6a('0x22')](_0x58cf3a[_0xea6a('0x21')],function(_0x460653){return{'model':db[_0x460653[_0xea6a('0x23')]],'as':_0x460653['as'],'attributes':_0x460653[_0xea6a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xea6a('0x10')](function(_0x1b82fd){logger['info'](_0xea6a('0x24'),_0xecee02);logger[_0xea6a('0x14')](_0xea6a('0x24'),_0xecee02,JSON[_0xea6a('0x25')](_0x1b82fd));_0x19f41e(_0x1b82fd);})[_0xea6a('0x1a')](function(_0x4bd7c4){logger[_0xea6a('0x16')](_0xea6a('0x24'),_0x4bd7c4[_0xea6a('0x18')],_0xecee02);_0x3ee252(_0x3095d3[_0xea6a('0x16')](0x1f4,_0x4bd7c4[_0xea6a('0x18')]));});});};exports[_0xea6a('0x26')]=function(_0x12ec56){var _0xe81c05=this;return new Promise(function(_0x4cef51,_0x45b31d){return db[_0xea6a('0x1b')][_0xea6a('0x27')]({'raw':_0x12ec56[_0xea6a('0x1d')]?_0x12ec56[_0xea6a('0x1d')][_0xea6a('0x1e')]===undefined?!![]:![]:!![],'where':_0x12ec56[_0xea6a('0x1d')]?_0x12ec56[_0xea6a('0x1d')][_0xea6a('0x28')]||null:null,'attributes':_0x12ec56[_0xea6a('0x1d')]?_0x12ec56[_0xea6a('0x1d')][_0xea6a('0x1f')]||null:null,'include':_0x12ec56[_0xea6a('0x1d')]?_0x12ec56[_0xea6a('0x1d')][_0xea6a('0x21')]?_[_0xea6a('0x22')](_0x12ec56[_0xea6a('0x1d')]['include'],function(_0x4ee7f5){return{'model':db[_0x4ee7f5[_0xea6a('0x23')]],'as':_0x4ee7f5['as'],'attributes':_0x4ee7f5[_0xea6a('0x1f')],'include':_0x4ee7f5[_0xea6a('0x21')]?_[_0xea6a('0x22')](_0x4ee7f5[_0xea6a('0x21')],function(_0x3c54c4){return{'model':db[_0x3c54c4[_0xea6a('0x23')]],'as':_0x3c54c4['as'],'attributes':_0x3c54c4[_0xea6a('0x1f')],'include':_0x3c54c4[_0xea6a('0x21')]?_['map'](_0x3c54c4['include'],function(_0x3f74de){return{'model':db[_0x3f74de['model']],'as':_0x3f74de['as'],'attributes':_0x3f74de['attributes']};}):[]};}):[]};}):[]:[]})[_0xea6a('0x10')](function(_0x4d96e9){logger[_0xea6a('0x11')]('ShowFaxQueue',_0x12ec56);logger[_0xea6a('0x14')]('ShowFaxQueue',_0x12ec56,JSON[_0xea6a('0x25')](_0x4d96e9));_0x4cef51(_0x4d96e9);})[_0xea6a('0x1a')](function(_0x4441e6){logger[_0xea6a('0x16')](_0xea6a('0x26'),_0x4441e6[_0xea6a('0x18')],_0x12ec56);_0x45b31d(_0xe81c05[_0xea6a('0x16')](0x1f4,_0x4441e6['message']));});});};
\ No newline at end of file
+var _0xab75=['include','model','catch','find','ShowFaxQueue','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','limit','map'];(function(_0x3bda86,_0x3c45e5){var _0x4d7ffa=function(_0x15185d){while(--_0x15185d){_0x3bda86['push'](_0x3bda86['shift']());}};_0x4d7ffa(++_0x3c45e5);}(_0xab75,0x13d));var _0x5ab7=function(_0x291231,_0x266872){_0x291231=_0x291231-0x0;var _0x566418=_0xab75[_0x291231];return _0x566418;};'use strict';var _=require(_0x5ab7('0x0'));var util=require('util');var moment=require(_0x5ab7('0x1'));var BPromise=require(_0x5ab7('0x2'));var rs=require(_0x5ab7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ab7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5ab7('0x5'))(_0x5ab7('0x6'));var config=require('../../config/environment');var jayson=require(_0x5ab7('0x7'));var client=jayson['client'][_0x5ab7('0x8')]({'port':0x232a});config[_0x5ab7('0x9')]=_[_0x5ab7('0xa')](config['redis'],{'host':_0x5ab7('0xb'),'port':0x18eb});var socket=require(_0x5ab7('0xc'))(new Redis(config[_0x5ab7('0x9')]));require(_0x5ab7('0xd'))['register'](socket);function respondWithRpcPromise(_0x2c93f6,_0x3862f0,_0x1359d6){return new BPromise(function(_0x2b8212,_0x2ffafe){return client[_0x5ab7('0xe')](_0x2c93f6,_0x1359d6)[_0x5ab7('0xf')](function(_0x16f0cd){logger[_0x5ab7('0x10')](_0x5ab7('0x11'),_0x3862f0,_0x5ab7('0x12'));logger[_0x5ab7('0x13')](_0x5ab7('0x14'),_0x3862f0,_0x5ab7('0x12'),JSON[_0x5ab7('0x15')](_0x16f0cd));if(_0x16f0cd[_0x5ab7('0x16')]){if(_0x16f0cd[_0x5ab7('0x16')][_0x5ab7('0x17')]===0x1f4){logger[_0x5ab7('0x16')](_0x5ab7('0x11'),_0x3862f0,_0x16f0cd['error']['message']);return _0x2ffafe(_0x16f0cd[_0x5ab7('0x16')][_0x5ab7('0x18')]);}logger['error']('FaxQueue,\x20%s,\x20%s',_0x3862f0,_0x16f0cd['error']['message']);return _0x2b8212(_0x16f0cd[_0x5ab7('0x16')][_0x5ab7('0x18')]);}else{logger[_0x5ab7('0x10')](_0x5ab7('0x11'),_0x3862f0,_0x5ab7('0x12'));_0x2b8212(_0x16f0cd['result'][_0x5ab7('0x18')]);}})['catch'](function(_0x58d3e7){logger[_0x5ab7('0x16')](_0x5ab7('0x11'),_0x3862f0,_0x58d3e7);_0x2ffafe(_0x58d3e7);});});}exports[_0x5ab7('0x19')]=function(_0x514f37){var _0x49a08c=this;return new Promise(function(_0x8130c3,_0x11cdcf){return db[_0x5ab7('0x1a')][_0x5ab7('0x1b')]({'raw':_0x514f37[_0x5ab7('0x1c')]?_0x514f37[_0x5ab7('0x1c')][_0x5ab7('0x1d')]===undefined?!![]:![]:!![],'where':_0x514f37[_0x5ab7('0x1c')]?_0x514f37[_0x5ab7('0x1c')][_0x5ab7('0x1e')]||null:null,'attributes':_0x514f37[_0x5ab7('0x1c')]?_0x514f37['options'][_0x5ab7('0x1f')]||null:null,'limit':_0x514f37[_0x5ab7('0x1c')]?_0x514f37['options'][_0x5ab7('0x20')]||null:null,'include':_0x514f37[_0x5ab7('0x1c')]?_0x514f37['options']['include']?_[_0x5ab7('0x21')](_0x514f37[_0x5ab7('0x1c')][_0x5ab7('0x22')],function(_0xd69a04){return{'model':db[_0xd69a04['model']],'as':_0xd69a04['as'],'attributes':_0xd69a04[_0x5ab7('0x1f')],'include':_0xd69a04[_0x5ab7('0x22')]?_['map'](_0xd69a04['include'],function(_0xbf6baa){return{'model':db[_0xbf6baa[_0x5ab7('0x23')]],'as':_0xbf6baa['as'],'attributes':_0xbf6baa['attributes'],'include':_0xbf6baa['include']?_[_0x5ab7('0x21')](_0xbf6baa[_0x5ab7('0x22')],function(_0x1fdaab){return{'model':db[_0x1fdaab['model']],'as':_0x1fdaab['as'],'attributes':_0x1fdaab[_0x5ab7('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c16e9){logger[_0x5ab7('0x10')](_0x5ab7('0x19'),_0x514f37);logger['debug'](_0x5ab7('0x19'),_0x514f37,JSON[_0x5ab7('0x15')](_0x1c16e9));_0x8130c3(_0x1c16e9);})[_0x5ab7('0x24')](function(_0x306c39){logger[_0x5ab7('0x16')](_0x5ab7('0x19'),_0x306c39[_0x5ab7('0x18')],_0x514f37);_0x11cdcf(_0x49a08c[_0x5ab7('0x16')](0x1f4,_0x306c39[_0x5ab7('0x18')]));});});};exports['ShowFaxQueue']=function(_0xfd8c59){var _0x3986b5=this;return new Promise(function(_0x542795,_0x4b5246){return db['FaxQueue'][_0x5ab7('0x25')]({'raw':_0xfd8c59[_0x5ab7('0x1c')]?_0xfd8c59[_0x5ab7('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0xfd8c59['options']?_0xfd8c59['options']['where']||null:null,'attributes':_0xfd8c59[_0x5ab7('0x1c')]?_0xfd8c59[_0x5ab7('0x1c')][_0x5ab7('0x1f')]||null:null,'include':_0xfd8c59[_0x5ab7('0x1c')]?_0xfd8c59[_0x5ab7('0x1c')][_0x5ab7('0x22')]?_[_0x5ab7('0x21')](_0xfd8c59[_0x5ab7('0x1c')]['include'],function(_0x5c235f){return{'model':db[_0x5c235f['model']],'as':_0x5c235f['as'],'attributes':_0x5c235f[_0x5ab7('0x1f')],'include':_0x5c235f[_0x5ab7('0x22')]?_[_0x5ab7('0x21')](_0x5c235f[_0x5ab7('0x22')],function(_0x2de257){return{'model':db[_0x2de257[_0x5ab7('0x23')]],'as':_0x2de257['as'],'attributes':_0x2de257['attributes'],'include':_0x2de257[_0x5ab7('0x22')]?_[_0x5ab7('0x21')](_0x2de257[_0x5ab7('0x22')],function(_0xb3ac99){return{'model':db[_0xb3ac99['model']],'as':_0xb3ac99['as'],'attributes':_0xb3ac99[_0x5ab7('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x612754){logger['info'](_0x5ab7('0x26'),_0xfd8c59);logger['debug'](_0x5ab7('0x26'),_0xfd8c59,JSON[_0x5ab7('0x15')](_0x612754));_0x542795(_0x612754);})['catch'](function(_0x9f26e6){logger[_0x5ab7('0x16')]('ShowFaxQueue',_0x9f26e6[_0x5ab7('0x18')],_0xfd8c59);_0x4b5246(_0x3986b5[_0x5ab7('0x16')](0x1f4,_0x9f26e6[_0x5ab7('0x18')]));});});};
\ No newline at end of file
index 6d4797a..bbe6120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc741=['./faxQueue.events','save','remove','update','emit','removeListener','faxQueue:'];(function(_0x314c1d,_0x3fba0c){var _0x511529=function(_0xf49646){while(--_0xf49646){_0x314c1d['push'](_0x314c1d['shift']());}};_0x511529(++_0x3fba0c);}(_0xc741,0xe7));var _0x1c74=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0xc741[_0x4ae6ef];return _0x3cbb4e;};'use strict';var FaxQueueEvents=require(_0x1c74('0x0'));var events=[_0x1c74('0x1'),_0x1c74('0x2'),_0x1c74('0x3')];function createListener(_0x405405,_0x29ebc0){return function(_0x3054bb){_0x29ebc0[_0x1c74('0x4')](_0x405405,_0x3054bb);};}function removeListener(_0x1785e3,_0x15193c){return function(){FaxQueueEvents[_0x1c74('0x5')](_0x1785e3,_0x15193c);};}exports['register']=function(_0x169fbc){for(var _0x1fb5f0=0x0,_0x3abc3d=events['length'];_0x1fb5f0<_0x3abc3d;_0x1fb5f0++){var _0x508c9d=events[_0x1fb5f0];var _0x56ef07=createListener(_0x1c74('0x6')+_0x508c9d,_0x169fbc);FaxQueueEvents['on'](_0x508c9d,_0x56ef07);}};
\ No newline at end of file
+var _0x3f2b=['remove','update','length','faxQueue:','./faxQueue.events','save'];(function(_0x1be614,_0x4ab816){var _0x4f2118=function(_0x34e59d){while(--_0x34e59d){_0x1be614['push'](_0x1be614['shift']());}};_0x4f2118(++_0x4ab816);}(_0x3f2b,0x13c));var _0xb3f2=function(_0x4e0a2c,_0x166575){_0x4e0a2c=_0x4e0a2c-0x0;var _0xe42c78=_0x3f2b[_0x4e0a2c];return _0xe42c78;};'use strict';var FaxQueueEvents=require(_0xb3f2('0x0'));var events=[_0xb3f2('0x1'),_0xb3f2('0x2'),_0xb3f2('0x3')];function createListener(_0x319af5,_0x1f9de6){return function(_0x40920a){_0x1f9de6['emit'](_0x319af5,_0x40920a);};}function removeListener(_0x39dd35,_0x45a7e7){return function(){FaxQueueEvents['removeListener'](_0x39dd35,_0x45a7e7);};}exports['register']=function(_0x1ce440){for(var _0x286d6b=0x0,_0x65a50d=events[_0xb3f2('0x4')];_0x286d6b<_0x65a50d;_0x286d6b++){var _0x256699=events[_0x286d6b];var _0x2422e1=createListener(_0xb3f2('0x5')+_0x256699,_0x1ce440);FaxQueueEvents['on'](_0x256699,_0x2422e1);}};
\ No newline at end of file
index 3af65e2..1ba0165 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9fb=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams','post','create','addTeams','/:id/users','put','update','delete','removeTeams','removeAgents'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xd9fb,0x189));var _0xbd9f=function(_0x39d544,_0x35c14f){_0x39d544=_0x39d544-0x0;var _0x5a5ff2=_0xd9fb[_0x39d544];return _0x5a5ff2;};'use strict';var multer=require(_0xbd9f('0x0'));var util=require(_0xbd9f('0x1'));var path=require(_0xbd9f('0x2'));var timeout=require(_0xbd9f('0x3'));var express=require(_0xbd9f('0x4'));var router=express[_0xbd9f('0x5')]();var fs_extra=require(_0xbd9f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xbd9f('0x7'));var config=require(_0xbd9f('0x8'));var controller=require('./faxQueue.controller');router[_0xbd9f('0x9')]('/',auth['isAuthenticated'](),controller[_0xbd9f('0xa')]);router[_0xbd9f('0x9')]('/describe',auth[_0xbd9f('0xb')](),controller[_0xbd9f('0xc')]);router[_0xbd9f('0x9')](_0xbd9f('0xd'),auth['isAuthenticated'](),controller[_0xbd9f('0xe')]);router[_0xbd9f('0x9')](_0xbd9f('0xf'),auth[_0xbd9f('0xb')](),controller[_0xbd9f('0x10')]);router[_0xbd9f('0x9')](_0xbd9f('0x11'),auth['isAuthenticated'](),controller['getTeams']);router['get']('/:id/users',auth[_0xbd9f('0xb')](),controller['getAgents']);router[_0xbd9f('0x12')]('/',auth[_0xbd9f('0xb')](),controller[_0xbd9f('0x13')]);router['post'](_0xbd9f('0x11'),auth['isAuthenticated'](),controller[_0xbd9f('0x14')]);router[_0xbd9f('0x12')](_0xbd9f('0x15'),auth[_0xbd9f('0xb')](),controller['addAgents']);router[_0xbd9f('0x16')](_0xbd9f('0xd'),auth[_0xbd9f('0xb')](),controller[_0xbd9f('0x17')]);router[_0xbd9f('0x18')](_0xbd9f('0xd'),auth[_0xbd9f('0xb')](),controller['destroy']);router['delete'](_0xbd9f('0x11'),auth['isAuthenticated'](),controller[_0xbd9f('0x19')]);router[_0xbd9f('0x18')](_0xbd9f('0x15'),auth[_0xbd9f('0xb')](),controller[_0xbd9f('0x1a')]);module[_0xbd9f('0x1b')]=router;
\ No newline at end of file
+var _0x49c1=['put','/:id','update','delete','destroy','removeTeams','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./faxQueue.controller','isAuthenticated','get','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','/:id/teams','addTeams','addAgents'];(function(_0x4ccd27,_0x10f179){var _0x5c3c69=function(_0x52715f){while(--_0x52715f){_0x4ccd27['push'](_0x4ccd27['shift']());}};_0x5c3c69(++_0x10f179);}(_0x49c1,0xef));var _0x149c=function(_0x37c8ec,_0x275ec1){_0x37c8ec=_0x37c8ec-0x0;var _0x402ca1=_0x49c1[_0x37c8ec];return _0x402ca1;};'use strict';var multer=require(_0x149c('0x0'));var util=require('util');var path=require(_0x149c('0x1'));var timeout=require(_0x149c('0x2'));var express=require(_0x149c('0x3'));var router=express['Router']();var fs_extra=require(_0x149c('0x4'));var auth=require(_0x149c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x149c('0x6'));var controller=require(_0x149c('0x7'));router['get']('/',auth[_0x149c('0x8')](),controller['index']);router[_0x149c('0x9')](_0x149c('0xa'),auth['isAuthenticated'](),controller[_0x149c('0xb')]);router[_0x149c('0x9')]('/:id',auth[_0x149c('0x8')](),controller[_0x149c('0xc')]);router['get'](_0x149c('0xd'),auth[_0x149c('0x8')](),controller[_0x149c('0xe')]);router[_0x149c('0x9')]('/:id/teams',auth[_0x149c('0x8')](),controller[_0x149c('0xf')]);router[_0x149c('0x9')](_0x149c('0x10'),auth[_0x149c('0x8')](),controller[_0x149c('0x11')]);router[_0x149c('0x12')]('/',auth[_0x149c('0x8')](),controller['create']);router[_0x149c('0x12')](_0x149c('0x13'),auth['isAuthenticated'](),controller[_0x149c('0x14')]);router['post'](_0x149c('0x10'),auth[_0x149c('0x8')](),controller[_0x149c('0x15')]);router[_0x149c('0x16')](_0x149c('0x17'),auth[_0x149c('0x8')](),controller[_0x149c('0x18')]);router[_0x149c('0x19')](_0x149c('0x17'),auth['isAuthenticated'](),controller[_0x149c('0x1a')]);router[_0x149c('0x19')](_0x149c('0x13'),auth[_0x149c('0x8')](),controller[_0x149c('0x1b')]);router[_0x149c('0x19')](_0x149c('0x10'),auth[_0x149c('0x8')](),controller['removeAgents']);module[_0x149c('0x1c')]=router;
\ No newline at end of file
index 1d7a438..51d815a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ea2=['moment','STRING','DATE'];(function(_0xb7a459,_0xc13228){var _0x104ab5=function(_0x186a0e){while(--_0x186a0e){_0xb7a459['push'](_0xb7a459['shift']());}};_0x104ab5(++_0xc13228);}(_0x9ea2,0x147));var _0x29ea=function(_0x5938e6,_0x2c6dd0){_0x5938e6=_0x5938e6-0x0;var _0x4aae35=_0x9ea2[_0x5938e6];return _0x4aae35;};'use strict';var moment=require(_0x29ea('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x29ea('0x1')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x29ea('0x2')]},'leaveAt':{'type':Sequelize[_0x29ea('0x2')]},'acceptAt':{'type':Sequelize[_0x29ea('0x2')]},'exitAt':{'type':Sequelize[_0x29ea('0x2')]},'reason':{'type':Sequelize[_0x29ea('0x1')]}};
\ No newline at end of file
+var _0xb9d5=['STRING','DATE','sequelize','exports'];(function(_0x22f5ca,_0x90defc){var _0x26ebfa=function(_0x24ec80){while(--_0x24ec80){_0x22f5ca['push'](_0x22f5ca['shift']());}};_0x26ebfa(++_0x90defc);}(_0xb9d5,0xb6));var _0x5b9d=function(_0x5b1c30,_0x480f23){_0x5b1c30=_0x5b1c30-0x0;var _0x4bb344=_0xb9d5[_0x5b1c30];return _0x4bb344;};'use strict';var moment=require('moment');var Sequelize=require(_0x5b9d('0x0'));module[_0x5b9d('0x1')]={'uniqueid':{'type':Sequelize[_0x5b9d('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x5b9d('0x3')]},'acceptAt':{'type':Sequelize[_0x5b9d('0x3')]},'exitAt':{'type':Sequelize[_0x5b9d('0x3')]},'reason':{'type':Sequelize[_0x5b9d('0x2')]}};
\ No newline at end of file
index 2adb68e..e459478 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89c4=['../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','reject','save','update','then','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','options','FaxQueueReport','includeAll','include','findAll','catch','show','params','length','body','find','destroy','describe','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x2946d7,_0x4717e0){var _0x2ade89=function(_0x10f50e){while(--_0x10f50e){_0x2946d7['push'](_0x2946d7['shift']());}};_0x2ade89(++_0x4717e0);}(_0x89c4,0x82));var _0x489c=function(_0x49ca1a,_0x4934fa){_0x49ca1a=_0x49ca1a-0x0;var _0xea885=_0x89c4[_0x49ca1a];return _0xea885;};'use strict';var emlformat=require(_0x489c('0x0'));var rimraf=require(_0x489c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x489c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x489c('0x3'));var Mustache=require(_0x489c('0x4'));var util=require(_0x489c('0x5'));var path=require(_0x489c('0x6'));var sox=require(_0x489c('0x7'));var csv=require(_0x489c('0x8'));var ejs=require(_0x489c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x489c('0xa'));var squel=require(_0x489c('0xb'));var crypto=require(_0x489c('0xc'));var jsforce=require(_0x489c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x489c('0xe'));var Papa=require('papaparse');var Redis=require(_0x489c('0xf'));var authService=require(_0x489c('0x10'));var qs=require(_0x489c('0x11'));var as=require(_0x489c('0x12'));var hardwareService=require(_0x489c('0x13'));var logger=require(_0x489c('0x14'))(_0x489c('0x15'));var utils=require(_0x489c('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x489c('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xfdfbcb,_0x4a9f45){_0x4a9f45=_0x4a9f45||0xcc;return function(_0x5340ce){if(_0x5340ce){return _0xfdfbcb[_0x489c('0x18')](_0x4a9f45);}return _0xfdfbcb['status'](_0x4a9f45)[_0x489c('0x19')]();};}function respondWithResult(_0x5d1b10,_0x305e40){_0x305e40=_0x305e40||0xc8;return function(_0x45983e){if(_0x45983e){return _0x5d1b10['status'](_0x305e40)[_0x489c('0x1a')](_0x45983e);}};}function respondWithFilteredResult(_0x39725a,_0x4861e2){return function(_0x4f37c3){if(_0x4f37c3){var _0x1bb98a=typeof _0x4861e2['offset']===_0x489c('0x1b')&&typeof _0x4861e2[_0x489c('0x1c')]===_0x489c('0x1b');var _0x39f9a9=_0x4f37c3[_0x489c('0x1d')];var _0x4519ce=_0x1bb98a?0x0:_0x4861e2[_0x489c('0x1e')];var _0x431782=_0x1bb98a?_0x4f37c3[_0x489c('0x1d')]:_0x4861e2[_0x489c('0x1e')]+_0x4861e2[_0x489c('0x1c')];var _0x19fb45;if(_0x431782>=_0x39f9a9){_0x431782=_0x39f9a9;_0x19fb45=0xc8;}else{_0x19fb45=0xce;}_0x39725a[_0x489c('0x1f')](_0x19fb45);return _0x39725a[_0x489c('0x20')](_0x489c('0x21'),_0x4519ce+'-'+_0x431782+'/'+_0x39f9a9)[_0x489c('0x1a')](_0x4f37c3);}return null;};}function patchUpdates(_0x14677b){return function(_0x381b56){try{jsonpatch['apply'](_0x381b56,_0x14677b,!![]);}catch(_0x4d0e03){return BPromise[_0x489c('0x22')](_0x4d0e03);}return _0x381b56[_0x489c('0x23')]();};}function saveUpdates(_0x1a1b68,_0x18cf8b){return function(_0x5b6ea3){if(_0x5b6ea3){return _0x5b6ea3[_0x489c('0x24')](_0x1a1b68)[_0x489c('0x25')](function(_0x37a59b){return _0x37a59b;});}return null;};}function removeEntity(_0x552384,_0x2a6d5c){return function(_0x1de4bf){if(_0x1de4bf){return _0x1de4bf['destroy']()[_0x489c('0x25')](function(){_0x552384[_0x489c('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x35db69,_0x4cb1ae){return function(_0x3aab5b){if(!_0x3aab5b){_0x35db69[_0x489c('0x18')](0x194);}return _0x3aab5b;};}function handleError(_0x57e82f,_0x20cf09){_0x20cf09=_0x20cf09||0x1f4;return function(_0x1119bd){logger[_0x489c('0x26')](_0x1119bd[_0x489c('0x27')]);if(_0x1119bd['name']){delete _0x1119bd[_0x489c('0x28')];}_0x57e82f['status'](_0x20cf09)[_0x489c('0x29')](_0x1119bd);};}exports[_0x489c('0x2a')]=function(_0x3b8f79,_0x2fdb69){var _0x36d812={},_0x31986e={},_0x521e31={'count':0x0,'rows':[]};var _0x79b260=_[_0x489c('0x2b')](db['FaxQueueReport'][_0x489c('0x2c')],function(_0x299fcf){return{'name':_0x299fcf['fieldName'],'type':_0x299fcf[_0x489c('0x2d')][_0x489c('0x2e')]};});_0x31986e[_0x489c('0x2f')]=_[_0x489c('0x2b')](_0x79b260,'name');_0x31986e[_0x489c('0x30')]=_[_0x489c('0x31')](_0x3b8f79['query']);_0x31986e[_0x489c('0x32')]=_[_0x489c('0x33')](_0x31986e[_0x489c('0x2f')],_0x31986e['query']);_0x36d812[_0x489c('0x34')]=_[_0x489c('0x33')](_0x31986e[_0x489c('0x2f')],qs[_0x489c('0x35')](_0x3b8f79[_0x489c('0x30')][_0x489c('0x35')]));_0x36d812[_0x489c('0x34')]=_0x36d812[_0x489c('0x34')]['length']?_0x36d812[_0x489c('0x34')]:_0x31986e[_0x489c('0x2f')];if(!_0x3b8f79[_0x489c('0x30')][_0x489c('0x36')](_0x489c('0x37'))){_0x36d812[_0x489c('0x1c')]=qs[_0x489c('0x1c')](_0x3b8f79[_0x489c('0x30')][_0x489c('0x1c')]);_0x36d812[_0x489c('0x1e')]=qs['offset'](_0x3b8f79[_0x489c('0x30')]['offset']);}_0x36d812[_0x489c('0x38')]=qs[_0x489c('0x39')](_0x3b8f79[_0x489c('0x30')][_0x489c('0x39')]);_0x36d812['where']=qs[_0x489c('0x32')](_[_0x489c('0x3a')](_0x3b8f79[_0x489c('0x30')],_0x31986e[_0x489c('0x32')]),_0x79b260);if(_0x3b8f79[_0x489c('0x30')][_0x489c('0x3b')]){_0x36d812[_0x489c('0x3c')]=_['merge'](_0x36d812[_0x489c('0x3c')],{'$or':_[_0x489c('0x2b')](_0x79b260,function(_0x290043){if(_0x290043[_0x489c('0x2d')]!==_0x489c('0x3d')){var _0x5b508c={};_0x5b508c[_0x290043[_0x489c('0x28')]]={'$like':'%'+_0x3b8f79['query'][_0x489c('0x3b')]+'%'};return _0x5b508c;}})});}_0x36d812=_['merge']({},_0x36d812,_0x3b8f79[_0x489c('0x3e')]);var _0x22699d={'where':_0x36d812[_0x489c('0x3c')]};return db[_0x489c('0x3f')][_0x489c('0x1d')](_0x22699d)[_0x489c('0x25')](function(_0x4677b8){_0x521e31[_0x489c('0x1d')]=_0x4677b8;if(_0x3b8f79[_0x489c('0x30')][_0x489c('0x40')]){_0x36d812[_0x489c('0x41')]=[{'all':!![]}];}return db[_0x489c('0x3f')][_0x489c('0x42')](_0x36d812);})[_0x489c('0x25')](function(_0x3cccca){_0x521e31['rows']=_0x3cccca;return _0x521e31;})['then'](respondWithFilteredResult(_0x2fdb69,_0x36d812))[_0x489c('0x43')](handleError(_0x2fdb69,null));};exports[_0x489c('0x44')]=function(_0x31b58a,_0x2f879a){var _0x583c85={'raw':!![],'where':{'id':_0x31b58a[_0x489c('0x45')]['id']}},_0xea1236={};_0xea1236['model']=_[_0x489c('0x31')](db['FaxQueueReport'][_0x489c('0x2c')]);_0xea1236['query']=_[_0x489c('0x31')](_0x31b58a[_0x489c('0x30')]);_0xea1236[_0x489c('0x32')]=_[_0x489c('0x33')](_0xea1236[_0x489c('0x2f')],_0xea1236[_0x489c('0x30')]);_0x583c85[_0x489c('0x34')]=_[_0x489c('0x33')](_0xea1236[_0x489c('0x2f')],qs[_0x489c('0x35')](_0x31b58a[_0x489c('0x30')][_0x489c('0x35')]));_0x583c85[_0x489c('0x34')]=_0x583c85[_0x489c('0x34')][_0x489c('0x46')]?_0x583c85[_0x489c('0x34')]:_0xea1236[_0x489c('0x2f')];if(_0x31b58a[_0x489c('0x30')]['includeAll']){_0x583c85[_0x489c('0x41')]=[{'all':!![]}];}_0x583c85=_['merge']({},_0x583c85,_0x31b58a[_0x489c('0x3e')]);return db[_0x489c('0x3f')]['find'](_0x583c85)[_0x489c('0x25')](handleEntityNotFound(_0x2f879a,null))[_0x489c('0x25')](respondWithResult(_0x2f879a,null))[_0x489c('0x43')](handleError(_0x2f879a,null));};exports['create']=function(_0x58b3c1,_0x9adabe){return db[_0x489c('0x3f')]['create'](_0x58b3c1[_0x489c('0x47')],{})[_0x489c('0x25')](respondWithResult(_0x9adabe,0xc9))[_0x489c('0x43')](handleError(_0x9adabe,null));};exports[_0x489c('0x24')]=function(_0x1d4466,_0x81bc95){if(_0x1d4466[_0x489c('0x47')]['id']){delete _0x1d4466[_0x489c('0x47')]['id'];}return db[_0x489c('0x3f')][_0x489c('0x48')]({'where':{'id':_0x1d4466[_0x489c('0x45')]['id']}})[_0x489c('0x25')](handleEntityNotFound(_0x81bc95,null))[_0x489c('0x25')](saveUpdates(_0x1d4466[_0x489c('0x47')],null))[_0x489c('0x25')](respondWithResult(_0x81bc95,null))[_0x489c('0x43')](handleError(_0x81bc95,null));};exports[_0x489c('0x49')]=function(_0x547926,_0x252bf7){return db[_0x489c('0x3f')][_0x489c('0x48')]({'where':{'id':_0x547926['params']['id']}})[_0x489c('0x25')](handleEntityNotFound(_0x252bf7,null))[_0x489c('0x25')](removeEntity(_0x252bf7,null))[_0x489c('0x43')](handleError(_0x252bf7,null));};exports['describe']=function(_0x4d2351,_0x2327fb){return db[_0x489c('0x3f')][_0x489c('0x4a')]()[_0x489c('0x25')](respondWithResult(_0x2327fb,null))['catch'](handleError(_0x2327fb,null));};
\ No newline at end of file
+var _0x682e=['intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','name','options','includeAll','include','show','params','keys','find','create','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','offset','apply','reject','save','update','then','error','stack','send','map','FaxQueueReport','rawAttributes','type','key','model','query','filters'];(function(_0x2ddfd9,_0x5877d0){var _0x2668f0=function(_0x70ad6f){while(--_0x70ad6f){_0x2ddfd9['push'](_0x2ddfd9['shift']());}};_0x2668f0(++_0x5877d0);}(_0x682e,0x1ce));var _0xe682=function(_0x29eb91,_0x1fa497){_0x29eb91=_0x29eb91-0x0;var _0x181f0f=_0x682e[_0x29eb91];return _0x181f0f;};'use strict';var emlformat=require(_0xe682('0x0'));var rimraf=require(_0xe682('0x1'));var zipdir=require(_0xe682('0x2'));var jsonpatch=require(_0xe682('0x3'));var rp=require(_0xe682('0x4'));var moment=require(_0xe682('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe682('0x6'));var util=require(_0xe682('0x7'));var path=require(_0xe682('0x8'));var sox=require(_0xe682('0x9'));var csv=require(_0xe682('0xa'));var ejs=require(_0xe682('0xb'));var fs=require('fs');var fs_extra=require(_0xe682('0xc'));var _=require(_0xe682('0xd'));var squel=require(_0xe682('0xe'));var crypto=require(_0xe682('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xe682('0x10'));var toCsv=require(_0xe682('0xa'));var querystring=require(_0xe682('0x11'));var Papa=require(_0xe682('0x12'));var Redis=require(_0xe682('0x13'));var authService=require(_0xe682('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xe682('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe682('0x16'))('api');var utils=require('../../config/utils');var config=require(_0xe682('0x17'));var licenseUtil=require(_0xe682('0x18'));var db=require(_0xe682('0x19'))['db'];function respondWithStatusCode(_0x178861,_0x9d0c78){_0x9d0c78=_0x9d0c78||0xcc;return function(_0x27ead7){if(_0x27ead7){return _0x178861['sendStatus'](_0x9d0c78);}return _0x178861[_0xe682('0x1a')](_0x9d0c78)[_0xe682('0x1b')]();};}function respondWithResult(_0x1e4755,_0x32b45a){_0x32b45a=_0x32b45a||0xc8;return function(_0x29ec5a){if(_0x29ec5a){return _0x1e4755[_0xe682('0x1a')](_0x32b45a)[_0xe682('0x1c')](_0x29ec5a);}};}function respondWithFilteredResult(_0x30da5d,_0x5940b8){return function(_0x2de4e8){if(_0x2de4e8){var _0x5e29bd=typeof _0x5940b8['offset']==='undefined'&&typeof _0x5940b8[_0xe682('0x1d')]===_0xe682('0x1e');var _0xeae968=_0x2de4e8[_0xe682('0x1f')];var _0x51166c=_0x5e29bd?0x0:_0x5940b8[_0xe682('0x20')];var _0x596ca3=_0x5e29bd?_0x2de4e8[_0xe682('0x1f')]:_0x5940b8['offset']+_0x5940b8[_0xe682('0x1d')];var _0x5a2b51;if(_0x596ca3>=_0xeae968){_0x596ca3=_0xeae968;_0x5a2b51=0xc8;}else{_0x5a2b51=0xce;}_0x30da5d[_0xe682('0x1a')](_0x5a2b51);return _0x30da5d['set']('Content-Range',_0x51166c+'-'+_0x596ca3+'/'+_0xeae968)[_0xe682('0x1c')](_0x2de4e8);}return null;};}function patchUpdates(_0x5ebf37){return function(_0x36c7e0){try{jsonpatch[_0xe682('0x21')](_0x36c7e0,_0x5ebf37,!![]);}catch(_0x3c8f12){return BPromise[_0xe682('0x22')](_0x3c8f12);}return _0x36c7e0[_0xe682('0x23')]();};}function saveUpdates(_0x16fbfe,_0x227139){return function(_0x220eb3){if(_0x220eb3){return _0x220eb3[_0xe682('0x24')](_0x16fbfe)[_0xe682('0x25')](function(_0x1f8757){return _0x1f8757;});}return null;};}function removeEntity(_0x3e9018,_0x46402f){return function(_0x5bfb75){if(_0x5bfb75){return _0x5bfb75['destroy']()[_0xe682('0x25')](function(){_0x3e9018[_0xe682('0x1a')](0xcc)[_0xe682('0x1b')]();});}};}function handleEntityNotFound(_0x4d1502,_0xd0e3c0){return function(_0x4a3835){if(!_0x4a3835){_0x4d1502['sendStatus'](0x194);}return _0x4a3835;};}function handleError(_0x2164dc,_0x108a09){_0x108a09=_0x108a09||0x1f4;return function(_0x422539){logger[_0xe682('0x26')](_0x422539[_0xe682('0x27')]);if(_0x422539['name']){delete _0x422539['name'];}_0x2164dc['status'](_0x108a09)[_0xe682('0x28')](_0x422539);};}exports['index']=function(_0x57f872,_0x3bfd56){var _0x5a2a13={},_0x263154={},_0x5d6802={'count':0x0,'rows':[]};var _0x480a3d=_[_0xe682('0x29')](db[_0xe682('0x2a')][_0xe682('0x2b')],function(_0x3d5b9b){return{'name':_0x3d5b9b['fieldName'],'type':_0x3d5b9b[_0xe682('0x2c')][_0xe682('0x2d')]};});_0x263154[_0xe682('0x2e')]=_[_0xe682('0x29')](_0x480a3d,'name');_0x263154[_0xe682('0x2f')]=_['keys'](_0x57f872[_0xe682('0x2f')]);_0x263154[_0xe682('0x30')]=_['intersection'](_0x263154[_0xe682('0x2e')],_0x263154[_0xe682('0x2f')]);_0x5a2a13['attributes']=_[_0xe682('0x31')](_0x263154[_0xe682('0x2e')],qs[_0xe682('0x32')](_0x57f872[_0xe682('0x2f')][_0xe682('0x32')]));_0x5a2a13['attributes']=_0x5a2a13[_0xe682('0x33')][_0xe682('0x34')]?_0x5a2a13[_0xe682('0x33')]:_0x263154['model'];if(!_0x57f872[_0xe682('0x2f')][_0xe682('0x35')]('nolimit')){_0x5a2a13[_0xe682('0x1d')]=qs[_0xe682('0x1d')](_0x57f872['query'][_0xe682('0x1d')]);_0x5a2a13[_0xe682('0x20')]=qs[_0xe682('0x20')](_0x57f872[_0xe682('0x2f')]['offset']);}_0x5a2a13[_0xe682('0x36')]=qs[_0xe682('0x37')](_0x57f872[_0xe682('0x2f')][_0xe682('0x37')]);_0x5a2a13[_0xe682('0x38')]=qs[_0xe682('0x30')](_[_0xe682('0x39')](_0x57f872[_0xe682('0x2f')],_0x263154[_0xe682('0x30')]),_0x480a3d);if(_0x57f872[_0xe682('0x2f')][_0xe682('0x3a')]){_0x5a2a13[_0xe682('0x38')]=_[_0xe682('0x3b')](_0x5a2a13[_0xe682('0x38')],{'$or':_[_0xe682('0x29')](_0x480a3d,function(_0x553999){if(_0x553999['type']!==_0xe682('0x3c')){var _0x36e66f={};_0x36e66f[_0x553999[_0xe682('0x3d')]]={'$like':'%'+_0x57f872[_0xe682('0x2f')][_0xe682('0x3a')]+'%'};return _0x36e66f;}})});}_0x5a2a13=_[_0xe682('0x3b')]({},_0x5a2a13,_0x57f872[_0xe682('0x3e')]);var _0x2d6ae6={'where':_0x5a2a13[_0xe682('0x38')]};return db[_0xe682('0x2a')][_0xe682('0x1f')](_0x2d6ae6)[_0xe682('0x25')](function(_0x541292){_0x5d6802['count']=_0x541292;if(_0x57f872[_0xe682('0x2f')][_0xe682('0x3f')]){_0x5a2a13[_0xe682('0x40')]=[{'all':!![]}];}return db['FaxQueueReport']['findAll'](_0x5a2a13);})[_0xe682('0x25')](function(_0x5aaa0f){_0x5d6802['rows']=_0x5aaa0f;return _0x5d6802;})['then'](respondWithFilteredResult(_0x3bfd56,_0x5a2a13))['catch'](handleError(_0x3bfd56,null));};exports[_0xe682('0x41')]=function(_0x8b03c7,_0x35c4c1){var _0x1cd700={'raw':!![],'where':{'id':_0x8b03c7[_0xe682('0x42')]['id']}},_0xc220b4={};_0xc220b4[_0xe682('0x2e')]=_[_0xe682('0x43')](db[_0xe682('0x2a')][_0xe682('0x2b')]);_0xc220b4['query']=_[_0xe682('0x43')](_0x8b03c7['query']);_0xc220b4[_0xe682('0x30')]=_[_0xe682('0x31')](_0xc220b4[_0xe682('0x2e')],_0xc220b4[_0xe682('0x2f')]);_0x1cd700[_0xe682('0x33')]=_[_0xe682('0x31')](_0xc220b4[_0xe682('0x2e')],qs['fields'](_0x8b03c7['query'][_0xe682('0x32')]));_0x1cd700[_0xe682('0x33')]=_0x1cd700[_0xe682('0x33')]['length']?_0x1cd700[_0xe682('0x33')]:_0xc220b4[_0xe682('0x2e')];if(_0x8b03c7[_0xe682('0x2f')][_0xe682('0x3f')]){_0x1cd700[_0xe682('0x40')]=[{'all':!![]}];}_0x1cd700=_[_0xe682('0x3b')]({},_0x1cd700,_0x8b03c7[_0xe682('0x3e')]);return db[_0xe682('0x2a')][_0xe682('0x44')](_0x1cd700)[_0xe682('0x25')](handleEntityNotFound(_0x35c4c1,null))[_0xe682('0x25')](respondWithResult(_0x35c4c1,null))['catch'](handleError(_0x35c4c1,null));};exports[_0xe682('0x45')]=function(_0x51d6d9,_0x5a2753){return db[_0xe682('0x2a')][_0xe682('0x45')](_0x51d6d9[_0xe682('0x46')],{})[_0xe682('0x25')](respondWithResult(_0x5a2753,0xc9))[_0xe682('0x47')](handleError(_0x5a2753,null));};exports['update']=function(_0x52faa4,_0x254b3d){if(_0x52faa4[_0xe682('0x46')]['id']){delete _0x52faa4[_0xe682('0x46')]['id'];}return db[_0xe682('0x2a')][_0xe682('0x44')]({'where':{'id':_0x52faa4[_0xe682('0x42')]['id']}})[_0xe682('0x25')](handleEntityNotFound(_0x254b3d,null))[_0xe682('0x25')](saveUpdates(_0x52faa4[_0xe682('0x46')],null))['then'](respondWithResult(_0x254b3d,null))['catch'](handleError(_0x254b3d,null));};exports['destroy']=function(_0x50656d,_0x18a55e){return db[_0xe682('0x2a')][_0xe682('0x44')]({'where':{'id':_0x50656d[_0xe682('0x42')]['id']}})[_0xe682('0x25')](handleEntityNotFound(_0x18a55e,null))[_0xe682('0x25')](removeEntity(_0x18a55e,null))[_0xe682('0x47')](handleError(_0x18a55e,null));};exports[_0xe682('0x48')]=function(_0xda6157,_0x6a0848){return db[_0xe682('0x2a')][_0xe682('0x48')]()['then'](respondWithResult(_0x6a0848,null))['catch'](handleError(_0x6a0848,null));};
\ No newline at end of file
index 472a52a..77a0949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','moment'];(function(_0x25a822,_0x5d2e4d){var _0x2b994f=function(_0x3338d8){while(--_0x3338d8){_0x25a822['push'](_0x25a822['shift']());}};_0x2b994f(++_0x5d2e4d);}(_0xe14b,0x93));var _0xbe14=function(_0x499655,_0x1511e2){_0x499655=_0x499655-0x0;var _0x45b7b1=_0xe14b[_0x499655];return _0x45b7b1;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cb9=['api','moment','bluebird','path','rimraf','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','lodash','../../config/logger'];(function(_0x4bfac3,_0x58324d){var _0x15f0f2=function(_0xf0c511){while(--_0xf0c511){_0x4bfac3['push'](_0x4bfac3['shift']());}};_0x15f0f2(++_0x58324d);}(_0x1cb9,0x14e));var _0x91cb=function(_0x235f60,_0x144f87){_0x235f60=_0x235f60-0x0;var _0x1e7f75=_0x1cb9[_0x235f60];return _0x1e7f75;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var logger=require(_0x91cb('0x1'))(_0x91cb('0x2'));var moment=require(_0x91cb('0x3'));var BPromise=require(_0x91cb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91cb('0x5'));var rimraf=require(_0x91cb('0x6'));var config=require('../../config/environment');var attributes=require(_0x91cb('0x7'));module[_0x91cb('0x8')]=function(_0x186dc3,_0x28543e){return _0x186dc3[_0x91cb('0x9')](_0x91cb('0xa'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0x91cb('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 64be878..6b0af30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ad8=['then','info','FaxQueueReport,\x20%s,\x20%s','FaxQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','FaxQueueReport','create','debug','CreateFaxQueueReport','catch','UpdateFaxQueueReport','body','options','attributes','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x37c455,_0xbe5637){var _0x3ff4a0=function(_0xb3191b){while(--_0xb3191b){_0x37c455['push'](_0x37c455['shift']());}};_0x3ff4a0(++_0xbe5637);}(_0x7ad8,0x70));var _0x87ad=function(_0x56f7e2,_0x145392){_0x56f7e2=_0x56f7e2-0x0;var _0x36240b=_0x7ad8[_0x56f7e2];return _0x36240b;};'use strict';var _=require(_0x87ad('0x0'));var util=require(_0x87ad('0x1'));var moment=require(_0x87ad('0x2'));var BPromise=require(_0x87ad('0x3'));var rs=require(_0x87ad('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x87ad('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x87ad('0x6'))(_0x87ad('0x7'));var config=require(_0x87ad('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x87ad('0x9')][_0x87ad('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x473ea7,_0x5afd92,_0x457fe3){return new BPromise(function(_0x38983d,_0x299e6d){return client[_0x87ad('0xb')](_0x473ea7,_0x457fe3)[_0x87ad('0xc')](function(_0x5d6c63){logger[_0x87ad('0xd')](_0x87ad('0xe'),_0x5afd92,'request\x20sent');logger['debug'](_0x87ad('0xf'),_0x5afd92,_0x87ad('0x10'),JSON['stringify'](_0x5d6c63));if(_0x5d6c63[_0x87ad('0x11')]){if(_0x5d6c63['error'][_0x87ad('0x12')]===0x1f4){logger[_0x87ad('0x11')](_0x87ad('0xe'),_0x5afd92,_0x5d6c63[_0x87ad('0x11')][_0x87ad('0x13')]);return _0x299e6d(_0x5d6c63[_0x87ad('0x11')][_0x87ad('0x13')]);}logger[_0x87ad('0x11')](_0x87ad('0xe'),_0x5afd92,_0x5d6c63['error']['message']);return _0x38983d(_0x5d6c63[_0x87ad('0x11')][_0x87ad('0x13')]);}else{logger['info'](_0x87ad('0xe'),_0x5afd92,'request\x20sent');_0x38983d(_0x5d6c63[_0x87ad('0x14')]['message']);}})['catch'](function(_0x2a7fbf){logger['error'](_0x87ad('0xe'),_0x5afd92,_0x2a7fbf);_0x299e6d(_0x2a7fbf);});});}exports['CreateFaxQueueReport']=function(_0xa1cd92){var _0x9eee37=this;return new Promise(function(_0x3174fe,_0x478cbd){return db[_0x87ad('0x15')][_0x87ad('0x16')](_0xa1cd92['body'],{'raw':_0xa1cd92['options']?_0xa1cd92['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x311d44){logger[_0x87ad('0xd')]('CreateFaxQueueReport',_0xa1cd92);logger[_0x87ad('0x17')](_0x87ad('0x18'),_0xa1cd92,JSON['stringify'](_0x311d44));_0x3174fe(_0x311d44);})[_0x87ad('0x19')](function(_0x47de99){logger[_0x87ad('0x11')]('CreateFaxQueueReport',_0x47de99['message'],_0xa1cd92);_0x478cbd(_0x9eee37[_0x87ad('0x11')](0x1f4,_0x47de99[_0x87ad('0x13')]));});});};exports[_0x87ad('0x1a')]=function(_0xcbec87){var _0xa4a934=this;return new Promise(function(_0x1f83fa,_0x474153){return db[_0x87ad('0x15')]['update'](_0xcbec87[_0x87ad('0x1b')],{'raw':_0xcbec87[_0x87ad('0x1c')]?_0xcbec87['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xcbec87[_0x87ad('0x1c')]?_0xcbec87[_0x87ad('0x1c')]['where']||null:null,'attributes':_0xcbec87[_0x87ad('0x1c')]?_0xcbec87[_0x87ad('0x1c')][_0x87ad('0x1d')]||null:null,'limit':_0xcbec87[_0x87ad('0x1c')]?_0xcbec87['options']['limit']||null:null})[_0x87ad('0xc')](function(_0x234745){logger['info'](_0x87ad('0x1a'),_0xcbec87);logger[_0x87ad('0x17')](_0x87ad('0x1a'),_0xcbec87,JSON[_0x87ad('0x1e')](_0x234745));_0x1f83fa(_0x234745);})[_0x87ad('0x19')](function(_0x16c619){logger[_0x87ad('0x11')]('UpdateFaxQueueReport',_0x16c619[_0x87ad('0x13')],_0xcbec87);_0x474153(_0xa4a934[_0x87ad('0x11')](0x1f4,_0x16c619[_0x87ad('0x13')]));});});};
\ No newline at end of file
+var _0xa5b4=['../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','update','limit','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3594e3,_0x4abf7c){var _0x162922=function(_0x16f7ea){while(--_0x16f7ea){_0x3594e3['push'](_0x3594e3['shift']());}};_0x162922(++_0x4abf7c);}(_0xa5b4,0x144));var _0x4a5b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa5b4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4a5b('0x0'));var util=require(_0x4a5b('0x1'));var moment=require(_0x4a5b('0x2'));var BPromise=require(_0x4a5b('0x3'));var rs=require(_0x4a5b('0x4'));var fs=require('fs');var Redis=require(_0x4a5b('0x5'));var db=require(_0x4a5b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4a5b('0x7'))('rpc');var config=require(_0x4a5b('0x8'));var jayson=require(_0x4a5b('0x9'));var client=jayson[_0x4a5b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2cbe58,_0x15ddcc,_0x1c72b3){return new BPromise(function(_0x3350e9,_0x5c6974){return client[_0x4a5b('0xb')](_0x2cbe58,_0x1c72b3)[_0x4a5b('0xc')](function(_0x55d320){logger[_0x4a5b('0xd')](_0x4a5b('0xe'),_0x15ddcc,_0x4a5b('0xf'));logger[_0x4a5b('0x10')](_0x4a5b('0x11'),_0x15ddcc,_0x4a5b('0xf'),JSON[_0x4a5b('0x12')](_0x55d320));if(_0x55d320[_0x4a5b('0x13')]){if(_0x55d320[_0x4a5b('0x13')][_0x4a5b('0x14')]===0x1f4){logger[_0x4a5b('0x13')](_0x4a5b('0xe'),_0x15ddcc,_0x55d320[_0x4a5b('0x13')]['message']);return _0x5c6974(_0x55d320[_0x4a5b('0x13')]['message']);}logger[_0x4a5b('0x13')](_0x4a5b('0xe'),_0x15ddcc,_0x55d320[_0x4a5b('0x13')][_0x4a5b('0x15')]);return _0x3350e9(_0x55d320['error'][_0x4a5b('0x15')]);}else{logger['info'](_0x4a5b('0xe'),_0x15ddcc,_0x4a5b('0xf'));_0x3350e9(_0x55d320[_0x4a5b('0x16')][_0x4a5b('0x15')]);}})[_0x4a5b('0x17')](function(_0x46c7ec){logger[_0x4a5b('0x13')](_0x4a5b('0xe'),_0x15ddcc,_0x46c7ec);_0x5c6974(_0x46c7ec);});});}exports[_0x4a5b('0x18')]=function(_0x1cd062){var _0x1affd3=this;return new Promise(function(_0x4ce29f,_0x55e00a){return db[_0x4a5b('0x19')][_0x4a5b('0x1a')](_0x1cd062[_0x4a5b('0x1b')],{'raw':_0x1cd062[_0x4a5b('0x1c')]?_0x1cd062[_0x4a5b('0x1c')][_0x4a5b('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0xe20e6f){logger[_0x4a5b('0xd')](_0x4a5b('0x18'),_0x1cd062);logger[_0x4a5b('0x10')]('CreateFaxQueueReport',_0x1cd062,JSON[_0x4a5b('0x12')](_0xe20e6f));_0x4ce29f(_0xe20e6f);})[_0x4a5b('0x17')](function(_0x291b79){logger[_0x4a5b('0x13')](_0x4a5b('0x18'),_0x291b79[_0x4a5b('0x15')],_0x1cd062);_0x55e00a(_0x1affd3[_0x4a5b('0x13')](0x1f4,_0x291b79[_0x4a5b('0x15')]));});});};exports[_0x4a5b('0x1e')]=function(_0x300e4a){var _0x1a02f1=this;return new Promise(function(_0x21eb41,_0x3d4998){return db[_0x4a5b('0x19')][_0x4a5b('0x1f')](_0x300e4a['body'],{'raw':_0x300e4a['options']?_0x300e4a[_0x4a5b('0x1c')][_0x4a5b('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x300e4a[_0x4a5b('0x1c')]?_0x300e4a[_0x4a5b('0x1c')]['where']||null:null,'attributes':_0x300e4a[_0x4a5b('0x1c')]?_0x300e4a[_0x4a5b('0x1c')]['attributes']||null:null,'limit':_0x300e4a[_0x4a5b('0x1c')]?_0x300e4a[_0x4a5b('0x1c')][_0x4a5b('0x20')]||null:null})[_0x4a5b('0xc')](function(_0x566a78){logger['info']('UpdateFaxQueueReport',_0x300e4a);logger[_0x4a5b('0x10')](_0x4a5b('0x1e'),_0x300e4a,JSON[_0x4a5b('0x12')](_0x566a78));_0x21eb41(_0x566a78);})[_0x4a5b('0x17')](function(_0x423591){logger[_0x4a5b('0x13')]('UpdateFaxQueueReport',_0x423591[_0x4a5b('0x15')],_0x300e4a);_0x3d4998(_0x1a02f1['error'](0x1f4,_0x423591['message']));});});};
\ No newline at end of file
index cf04b59..86201a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0f3=['put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create'];(function(_0x596a1b,_0x53ce62){var _0x43b5fc=function(_0x77c8bd){while(--_0x77c8bd){_0x596a1b['push'](_0x596a1b['shift']());}};_0x43b5fc(++_0x53ce62);}(_0xc0f3,0x1d3));var _0x3c0f=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xc0f3[_0x501510];return _0x1e6ee5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3c0f('0x0'));var timeout=require(_0x3c0f('0x1'));var express=require(_0x3c0f('0x2'));var router=express[_0x3c0f('0x3')]();var fs_extra=require(_0x3c0f('0x4'));var auth=require(_0x3c0f('0x5'));var interaction=require(_0x3c0f('0x6'));var config=require('../../config/environment');var controller=require(_0x3c0f('0x7'));router[_0x3c0f('0x8')]('/',auth[_0x3c0f('0x9')](),controller['index']);router[_0x3c0f('0x8')](_0x3c0f('0xa'),auth[_0x3c0f('0x9')](),controller[_0x3c0f('0xb')]);router[_0x3c0f('0x8')](_0x3c0f('0xc'),auth[_0x3c0f('0x9')](),controller[_0x3c0f('0xd')]);router[_0x3c0f('0xe')]('/',auth[_0x3c0f('0x9')](),controller[_0x3c0f('0xf')]);router[_0x3c0f('0x10')](_0x3c0f('0xc'),auth[_0x3c0f('0x9')](),controller[_0x3c0f('0x11')]);router[_0x3c0f('0x12')](_0x3c0f('0xc'),auth[_0x3c0f('0x9')](),controller[_0x3c0f('0x13')]);module[_0x3c0f('0x14')]=router;
\ No newline at end of file
+var _0x4d3a=['/describe','isAuthenticated','describe','/:id','show','post','put','delete','destroy','util','path','Router','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller','get','index'];(function(_0x60631,_0x469634){var _0x44fc81=function(_0x5b69de){while(--_0x5b69de){_0x60631['push'](_0x60631['shift']());}};_0x44fc81(++_0x469634);}(_0x4d3a,0x16e));var _0xa4d3=function(_0x36a073,_0x2ce3ce){_0x36a073=_0x36a073-0x0;var _0xc9762b=_0x4d3a[_0x36a073];return _0xc9762b;};'use strict';var multer=require('multer');var util=require(_0xa4d3('0x0'));var path=require(_0xa4d3('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa4d3('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xa4d3('0x3'));var interaction=require(_0xa4d3('0x4'));var config=require('../../config/environment');var controller=require(_0xa4d3('0x5'));router[_0xa4d3('0x6')]('/',auth['isAuthenticated'](),controller[_0xa4d3('0x7')]);router[_0xa4d3('0x6')](_0xa4d3('0x8'),auth[_0xa4d3('0x9')](),controller[_0xa4d3('0xa')]);router[_0xa4d3('0x6')](_0xa4d3('0xb'),auth[_0xa4d3('0x9')](),controller[_0xa4d3('0xc')]);router[_0xa4d3('0xd')]('/',auth[_0xa4d3('0x9')](),controller['create']);router[_0xa4d3('0xe')](_0xa4d3('0xb'),auth[_0xa4d3('0x9')](),controller['update']);router[_0xa4d3('0xf')](_0xa4d3('0xb'),auth[_0xa4d3('0x9')](),controller[_0xa4d3('0x10')]);module['exports']=router;
\ No newline at end of file
index c44ff64..18e536d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x1ed314,_0x3b621d){var _0x33777c=function(_0x72690e){while(--_0x72690e){_0x1ed314['push'](_0x1ed314['shift']());}};_0x33777c(++_0x3b621d);}(_0xf4eb,0xec));var _0xbf4e=function(_0x39c454,_0x4281c9){_0x39c454=_0x39c454-0x0;var _0x31ca89=_0xf4eb[_0x39c454];return _0x31ca89;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x1a5ac9,_0x3cbe68){var _0x4e4608=function(_0x21a048){while(--_0x21a048){_0x1a5ac9['push'](_0x1a5ac9['shift']());}};_0x4e4608(++_0x3cbe68);}(_0xedd9,0xfc));var _0x9edd=function(_0x447ad8,_0x410b9d){_0x447ad8=_0x447ad8-0x0;var _0x545ef2=_0xedd9[_0x447ad8];return _0x545ef2;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index 0ad0b1b..5bccaf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e9d=['merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x2e9d,0xab));var _0xd2e9=function(_0x23b655,_0x4feb2b){_0x23b655=_0x23b655-0x0;var _0x364b32=_0x2e9d[_0x23b655];return _0x364b32;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd2e9('0x0'));var zipdir=require(_0xd2e9('0x1'));var jsonpatch=require(_0xd2e9('0x2'));var rp=require(_0xd2e9('0x3'));var moment=require(_0xd2e9('0x4'));var BPromise=require(_0xd2e9('0x5'));var Mustache=require('mustache');var util=require(_0xd2e9('0x6'));var path=require('path');var sox=require(_0xd2e9('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd2e9('0x8'));var _=require(_0xd2e9('0x9'));var squel=require(_0xd2e9('0xa'));var crypto=require(_0xd2e9('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd2e9('0xc'));var toCsv=require(_0xd2e9('0xd'));var querystring=require('querystring');var Papa=require(_0xd2e9('0xe'));var Redis=require(_0xd2e9('0xf'));var authService=require(_0xd2e9('0x10'));var qs=require(_0xd2e9('0x11'));var as=require(_0xd2e9('0x12'));var hardwareService=require(_0xd2e9('0x13'));var logger=require(_0xd2e9('0x14'))(_0xd2e9('0x15'));var utils=require('../../config/utils');var config=require(_0xd2e9('0x16'));var licenseUtil=require(_0xd2e9('0x17'));var db=require(_0xd2e9('0x18'))['db'];function respondWithStatusCode(_0x1fdd41,_0x1be623){_0x1be623=_0x1be623||0xcc;return function(_0x9df118){if(_0x9df118){return _0x1fdd41[_0xd2e9('0x19')](_0x1be623);}return _0x1fdd41[_0xd2e9('0x1a')](_0x1be623)['end']();};}function respondWithResult(_0x549798,_0x10c40b){_0x10c40b=_0x10c40b||0xc8;return function(_0x2cc628){if(_0x2cc628){return _0x549798[_0xd2e9('0x1a')](_0x10c40b)[_0xd2e9('0x1b')](_0x2cc628);}};}function respondWithFilteredResult(_0xd22e63,_0x34b99c){return function(_0xa77cee){if(_0xa77cee){var _0x461068=typeof _0x34b99c[_0xd2e9('0x1c')]===_0xd2e9('0x1d')&&typeof _0x34b99c[_0xd2e9('0x1e')]===_0xd2e9('0x1d');var _0x4a46f4=_0xa77cee[_0xd2e9('0x1f')];var _0x27e36b=_0x461068?0x0:_0x34b99c[_0xd2e9('0x1c')];var _0x41191f=_0x461068?_0xa77cee[_0xd2e9('0x1f')]:_0x34b99c[_0xd2e9('0x1c')]+_0x34b99c[_0xd2e9('0x1e')];var _0x252da7;if(_0x41191f>=_0x4a46f4){_0x41191f=_0x4a46f4;_0x252da7=0xc8;}else{_0x252da7=0xce;}_0xd22e63[_0xd2e9('0x1a')](_0x252da7);return _0xd22e63[_0xd2e9('0x20')](_0xd2e9('0x21'),_0x27e36b+'-'+_0x41191f+'/'+_0x4a46f4)[_0xd2e9('0x1b')](_0xa77cee);}return null;};}function patchUpdates(_0x2aaa48){return function(_0x13ab44){try{jsonpatch['apply'](_0x13ab44,_0x2aaa48,!![]);}catch(_0x3b5be7){return BPromise[_0xd2e9('0x22')](_0x3b5be7);}return _0x13ab44[_0xd2e9('0x23')]();};}function saveUpdates(_0x3cfcc4,_0x12f219){return function(_0x3ef133){if(_0x3ef133){return _0x3ef133[_0xd2e9('0x24')](_0x3cfcc4)[_0xd2e9('0x25')](function(_0x242028){return _0x242028;});}return null;};}function removeEntity(_0x57fa22,_0x2073df){return function(_0x5ed761){if(_0x5ed761){return _0x5ed761[_0xd2e9('0x26')]()[_0xd2e9('0x25')](function(){_0x57fa22[_0xd2e9('0x1a')](0xcc)[_0xd2e9('0x27')]();});}};}function handleEntityNotFound(_0x480d31,_0x5f59b8){return function(_0x78d5d0){if(!_0x78d5d0){_0x480d31['sendStatus'](0x194);}return _0x78d5d0;};}function handleError(_0x35ef18,_0x40f2b2){_0x40f2b2=_0x40f2b2||0x1f4;return function(_0x15ad3d){logger[_0xd2e9('0x28')](_0x15ad3d[_0xd2e9('0x29')]);if(_0x15ad3d[_0xd2e9('0x2a')]){delete _0x15ad3d[_0xd2e9('0x2a')];}_0x35ef18['status'](_0x40f2b2)[_0xd2e9('0x2b')](_0x15ad3d);};}exports[_0xd2e9('0x2c')]=function(_0x284e69,_0x1ce933){var _0x2c91a4={},_0x289605={},_0x354562={'count':0x0,'rows':[]};var _0x5c985e=_[_0xd2e9('0x2d')](db[_0xd2e9('0x2e')][_0xd2e9('0x2f')],function(_0x352de0){return{'name':_0x352de0[_0xd2e9('0x30')],'type':_0x352de0[_0xd2e9('0x31')]['key']};});_0x289605[_0xd2e9('0x32')]=_[_0xd2e9('0x2d')](_0x5c985e,_0xd2e9('0x2a'));_0x289605[_0xd2e9('0x33')]=_['keys'](_0x284e69[_0xd2e9('0x33')]);_0x289605[_0xd2e9('0x34')]=_[_0xd2e9('0x35')](_0x289605[_0xd2e9('0x32')],_0x289605[_0xd2e9('0x33')]);_0x2c91a4[_0xd2e9('0x36')]=_[_0xd2e9('0x35')](_0x289605[_0xd2e9('0x32')],qs[_0xd2e9('0x37')](_0x284e69[_0xd2e9('0x33')][_0xd2e9('0x37')]));_0x2c91a4[_0xd2e9('0x36')]=_0x2c91a4[_0xd2e9('0x36')][_0xd2e9('0x38')]?_0x2c91a4[_0xd2e9('0x36')]:_0x289605[_0xd2e9('0x32')];if(!_0x284e69[_0xd2e9('0x33')]['hasOwnProperty'](_0xd2e9('0x39'))){_0x2c91a4[_0xd2e9('0x1e')]=qs[_0xd2e9('0x1e')](_0x284e69[_0xd2e9('0x33')][_0xd2e9('0x1e')]);_0x2c91a4[_0xd2e9('0x1c')]=qs[_0xd2e9('0x1c')](_0x284e69['query']['offset']);}_0x2c91a4[_0xd2e9('0x3a')]=qs[_0xd2e9('0x3b')](_0x284e69[_0xd2e9('0x33')]['sort']);_0x2c91a4[_0xd2e9('0x3c')]=qs[_0xd2e9('0x34')](_[_0xd2e9('0x3d')](_0x284e69[_0xd2e9('0x33')],_0x289605['filters']),_0x5c985e);if(_0x284e69['query'][_0xd2e9('0x3e')]){_0x2c91a4[_0xd2e9('0x3c')]=_[_0xd2e9('0x3f')](_0x2c91a4[_0xd2e9('0x3c')],{'$or':_[_0xd2e9('0x2d')](_0x5c985e,function(_0x4722b6){if(_0x4722b6[_0xd2e9('0x31')]!==_0xd2e9('0x40')){var _0x1151e1={};_0x1151e1[_0x4722b6[_0xd2e9('0x2a')]]={'$like':'%'+_0x284e69[_0xd2e9('0x33')][_0xd2e9('0x3e')]+'%'};return _0x1151e1;}})});}_0x2c91a4=_[_0xd2e9('0x3f')]({},_0x2c91a4,_0x284e69[_0xd2e9('0x41')]);var _0x3aacd3={'where':_0x2c91a4['where']};return db[_0xd2e9('0x2e')][_0xd2e9('0x1f')](_0x3aacd3)[_0xd2e9('0x25')](function(_0x31d940){_0x354562[_0xd2e9('0x1f')]=_0x31d940;if(_0x284e69[_0xd2e9('0x33')][_0xd2e9('0x42')]){_0x2c91a4[_0xd2e9('0x43')]=[{'all':!![]}];}return db['FaxTransferReport'][_0xd2e9('0x44')](_0x2c91a4);})[_0xd2e9('0x25')](function(_0x4c4758){_0x354562[_0xd2e9('0x45')]=_0x4c4758;return _0x354562;})[_0xd2e9('0x25')](respondWithFilteredResult(_0x1ce933,_0x2c91a4))['catch'](handleError(_0x1ce933,null));};exports[_0xd2e9('0x46')]=function(_0x50aff9,_0x3c53a0){var _0x218175={'raw':!![],'where':{'id':_0x50aff9[_0xd2e9('0x47')]['id']}},_0x4eef51={};_0x4eef51[_0xd2e9('0x32')]=_[_0xd2e9('0x48')](db[_0xd2e9('0x2e')]['rawAttributes']);_0x4eef51[_0xd2e9('0x33')]=_['keys'](_0x50aff9['query']);_0x4eef51['filters']=_[_0xd2e9('0x35')](_0x4eef51[_0xd2e9('0x32')],_0x4eef51['query']);_0x218175['attributes']=_[_0xd2e9('0x35')](_0x4eef51['model'],qs[_0xd2e9('0x37')](_0x50aff9[_0xd2e9('0x33')][_0xd2e9('0x37')]));_0x218175['attributes']=_0x218175[_0xd2e9('0x36')][_0xd2e9('0x38')]?_0x218175[_0xd2e9('0x36')]:_0x4eef51[_0xd2e9('0x32')];if(_0x50aff9[_0xd2e9('0x33')][_0xd2e9('0x42')]){_0x218175['include']=[{'all':!![]}];}_0x218175=_[_0xd2e9('0x3f')]({},_0x218175,_0x50aff9[_0xd2e9('0x41')]);return db[_0xd2e9('0x2e')][_0xd2e9('0x49')](_0x218175)[_0xd2e9('0x25')](handleEntityNotFound(_0x3c53a0,null))[_0xd2e9('0x25')](respondWithResult(_0x3c53a0,null))[_0xd2e9('0x4a')](handleError(_0x3c53a0,null));};exports[_0xd2e9('0x4b')]=function(_0x30b1de,_0x38d35d){return db[_0xd2e9('0x2e')][_0xd2e9('0x4b')](_0x30b1de[_0xd2e9('0x4c')],{})[_0xd2e9('0x25')](respondWithResult(_0x38d35d,0xc9))[_0xd2e9('0x4a')](handleError(_0x38d35d,null));};exports[_0xd2e9('0x24')]=function(_0x406682,_0x558f2b){if(_0x406682[_0xd2e9('0x4c')]['id']){delete _0x406682[_0xd2e9('0x4c')]['id'];}return db[_0xd2e9('0x2e')]['find']({'where':{'id':_0x406682[_0xd2e9('0x47')]['id']}})[_0xd2e9('0x25')](handleEntityNotFound(_0x558f2b,null))[_0xd2e9('0x25')](saveUpdates(_0x406682[_0xd2e9('0x4c')],null))[_0xd2e9('0x25')](respondWithResult(_0x558f2b,null))[_0xd2e9('0x4a')](handleError(_0x558f2b,null));};exports[_0xd2e9('0x26')]=function(_0x5bbeb7,_0x374028){return db[_0xd2e9('0x2e')]['find']({'where':{'id':_0x5bbeb7['params']['id']}})[_0xd2e9('0x25')](handleEntityNotFound(_0x374028,null))['then'](removeEntity(_0x374028,null))[_0xd2e9('0x4a')](handleError(_0x374028,null));};exports[_0xd2e9('0x4d')]=function(_0x20037c,_0x5222e1){return db[_0xd2e9('0x2e')][_0xd2e9('0x4d')]()['then'](respondWithResult(_0x5222e1,null))[_0xd2e9('0x4a')](handleError(_0x5222e1,null));};
\ No newline at end of file
+var _0x1584=['FaxTransferReport','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','merge','create','update','body','find','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','sendStatus','error','stack','name','index','map'];(function(_0x3559b1,_0x536658){var _0x4de8fc=function(_0x593da8){while(--_0x593da8){_0x3559b1['push'](_0x3559b1['shift']());}};_0x4de8fc(++_0x536658);}(_0x1584,0x15a));var _0x4158=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x1584[_0x413feb];return _0x40ee88;};'use strict';var emlformat=require(_0x4158('0x0'));var rimraf=require(_0x4158('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4158('0x2'));var rp=require('request-promise');var moment=require(_0x4158('0x3'));var BPromise=require(_0x4158('0x4'));var Mustache=require(_0x4158('0x5'));var util=require('util');var path=require(_0x4158('0x6'));var sox=require(_0x4158('0x7'));var csv=require(_0x4158('0x8'));var ejs=require(_0x4158('0x9'));var fs=require('fs');var fs_extra=require(_0x4158('0xa'));var _=require(_0x4158('0xb'));var squel=require(_0x4158('0xc'));var crypto=require(_0x4158('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4158('0xe'));var toCsv=require(_0x4158('0x8'));var querystring=require('querystring');var Papa=require(_0x4158('0xf'));var Redis=require(_0x4158('0x10'));var authService=require(_0x4158('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4158('0x12'));var logger=require(_0x4158('0x13'))(_0x4158('0x14'));var utils=require(_0x4158('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x4158('0x16'));var db=require(_0x4158('0x17'))['db'];function respondWithStatusCode(_0x7f8234,_0x3f6a13){_0x3f6a13=_0x3f6a13||0xcc;return function(_0x50692c){if(_0x50692c){return _0x7f8234['sendStatus'](_0x3f6a13);}return _0x7f8234[_0x4158('0x18')](_0x3f6a13)[_0x4158('0x19')]();};}function respondWithResult(_0x28231c,_0x5605ff){_0x5605ff=_0x5605ff||0xc8;return function(_0x34d97f){if(_0x34d97f){return _0x28231c[_0x4158('0x18')](_0x5605ff)['json'](_0x34d97f);}};}function respondWithFilteredResult(_0x404e80,_0x4c6217){return function(_0x577f4e){if(_0x577f4e){var _0xd01190=typeof _0x4c6217[_0x4158('0x1a')]===_0x4158('0x1b')&&typeof _0x4c6217[_0x4158('0x1c')]===_0x4158('0x1b');var _0x4dd92d=_0x577f4e[_0x4158('0x1d')];var _0x7dcba8=_0xd01190?0x0:_0x4c6217[_0x4158('0x1a')];var _0x23cf24=_0xd01190?_0x577f4e['count']:_0x4c6217[_0x4158('0x1a')]+_0x4c6217[_0x4158('0x1c')];var _0x2eba08;if(_0x23cf24>=_0x4dd92d){_0x23cf24=_0x4dd92d;_0x2eba08=0xc8;}else{_0x2eba08=0xce;}_0x404e80['status'](_0x2eba08);return _0x404e80[_0x4158('0x1e')](_0x4158('0x1f'),_0x7dcba8+'-'+_0x23cf24+'/'+_0x4dd92d)[_0x4158('0x20')](_0x577f4e);}return null;};}function patchUpdates(_0x57785e){return function(_0x2a95eb){try{jsonpatch[_0x4158('0x21')](_0x2a95eb,_0x57785e,!![]);}catch(_0x58723f){return BPromise[_0x4158('0x22')](_0x58723f);}return _0x2a95eb[_0x4158('0x23')]();};}function saveUpdates(_0x1f6fbd,_0xbcd41a){return function(_0x5c80e0){if(_0x5c80e0){return _0x5c80e0['update'](_0x1f6fbd)[_0x4158('0x24')](function(_0x32ba1e){return _0x32ba1e;});}return null;};}function removeEntity(_0x2b3e48,_0x2378f0){return function(_0xa99d6d){if(_0xa99d6d){return _0xa99d6d[_0x4158('0x25')]()[_0x4158('0x24')](function(){_0x2b3e48[_0x4158('0x18')](0xcc)[_0x4158('0x19')]();});}};}function handleEntityNotFound(_0x4e1c96,_0x4044ef){return function(_0x30d51c){if(!_0x30d51c){_0x4e1c96[_0x4158('0x26')](0x194);}return _0x30d51c;};}function handleError(_0x5926a8,_0x1fa0bf){_0x1fa0bf=_0x1fa0bf||0x1f4;return function(_0x4128d8){logger[_0x4158('0x27')](_0x4128d8[_0x4158('0x28')]);if(_0x4128d8[_0x4158('0x29')]){delete _0x4128d8[_0x4158('0x29')];}_0x5926a8[_0x4158('0x18')](_0x1fa0bf)['send'](_0x4128d8);};}exports[_0x4158('0x2a')]=function(_0x3b5fc9,_0x173070){var _0x390138={},_0x4ee019={},_0x130003={'count':0x0,'rows':[]};var _0x3ed2f2=_[_0x4158('0x2b')](db[_0x4158('0x2c')][_0x4158('0x2d')],function(_0x307d32){return{'name':_0x307d32[_0x4158('0x2e')],'type':_0x307d32[_0x4158('0x2f')][_0x4158('0x30')]};});_0x4ee019[_0x4158('0x31')]=_[_0x4158('0x2b')](_0x3ed2f2,_0x4158('0x29'));_0x4ee019['query']=_[_0x4158('0x32')](_0x3b5fc9[_0x4158('0x33')]);_0x4ee019['filters']=_['intersection'](_0x4ee019[_0x4158('0x31')],_0x4ee019[_0x4158('0x33')]);_0x390138[_0x4158('0x34')]=_[_0x4158('0x35')](_0x4ee019[_0x4158('0x31')],qs['fields'](_0x3b5fc9[_0x4158('0x33')][_0x4158('0x36')]));_0x390138[_0x4158('0x34')]=_0x390138[_0x4158('0x34')][_0x4158('0x37')]?_0x390138['attributes']:_0x4ee019[_0x4158('0x31')];if(!_0x3b5fc9[_0x4158('0x33')][_0x4158('0x38')](_0x4158('0x39'))){_0x390138[_0x4158('0x1c')]=qs[_0x4158('0x1c')](_0x3b5fc9['query']['limit']);_0x390138[_0x4158('0x1a')]=qs[_0x4158('0x1a')](_0x3b5fc9[_0x4158('0x33')][_0x4158('0x1a')]);}_0x390138[_0x4158('0x3a')]=qs[_0x4158('0x3b')](_0x3b5fc9['query'][_0x4158('0x3b')]);_0x390138[_0x4158('0x3c')]=qs[_0x4158('0x3d')](_['pick'](_0x3b5fc9[_0x4158('0x33')],_0x4ee019['filters']),_0x3ed2f2);if(_0x3b5fc9[_0x4158('0x33')][_0x4158('0x3e')]){_0x390138[_0x4158('0x3c')]=_['merge'](_0x390138['where'],{'$or':_[_0x4158('0x2b')](_0x3ed2f2,function(_0x475d97){if(_0x475d97['type']!==_0x4158('0x3f')){var _0x535097={};_0x535097[_0x475d97[_0x4158('0x29')]]={'$like':'%'+_0x3b5fc9[_0x4158('0x33')]['filter']+'%'};return _0x535097;}})});}_0x390138=_['merge']({},_0x390138,_0x3b5fc9[_0x4158('0x40')]);var _0x1b9bc3={'where':_0x390138[_0x4158('0x3c')]};return db['FaxTransferReport'][_0x4158('0x1d')](_0x1b9bc3)['then'](function(_0x2bc18b){_0x130003['count']=_0x2bc18b;if(_0x3b5fc9[_0x4158('0x33')]['includeAll']){_0x390138['include']=[{'all':!![]}];}return db[_0x4158('0x2c')][_0x4158('0x41')](_0x390138);})[_0x4158('0x24')](function(_0x66a9db){_0x130003[_0x4158('0x42')]=_0x66a9db;return _0x130003;})[_0x4158('0x24')](respondWithFilteredResult(_0x173070,_0x390138))[_0x4158('0x43')](handleError(_0x173070,null));};exports[_0x4158('0x44')]=function(_0x50de37,_0x4f7fab){var _0x2fc663={'raw':!![],'where':{'id':_0x50de37[_0x4158('0x45')]['id']}},_0x519391={};_0x519391['model']=_[_0x4158('0x32')](db[_0x4158('0x2c')][_0x4158('0x2d')]);_0x519391[_0x4158('0x33')]=_[_0x4158('0x32')](_0x50de37[_0x4158('0x33')]);_0x519391[_0x4158('0x3d')]=_[_0x4158('0x35')](_0x519391[_0x4158('0x31')],_0x519391[_0x4158('0x33')]);_0x2fc663[_0x4158('0x34')]=_[_0x4158('0x35')](_0x519391['model'],qs[_0x4158('0x36')](_0x50de37['query'][_0x4158('0x36')]));_0x2fc663[_0x4158('0x34')]=_0x2fc663[_0x4158('0x34')][_0x4158('0x37')]?_0x2fc663['attributes']:_0x519391[_0x4158('0x31')];if(_0x50de37['query'][_0x4158('0x46')]){_0x2fc663[_0x4158('0x47')]=[{'all':!![]}];}_0x2fc663=_[_0x4158('0x48')]({},_0x2fc663,_0x50de37[_0x4158('0x40')]);return db[_0x4158('0x2c')]['find'](_0x2fc663)[_0x4158('0x24')](handleEntityNotFound(_0x4f7fab,null))[_0x4158('0x24')](respondWithResult(_0x4f7fab,null))[_0x4158('0x43')](handleError(_0x4f7fab,null));};exports[_0x4158('0x49')]=function(_0x697af3,_0x48d138){return db[_0x4158('0x2c')][_0x4158('0x49')](_0x697af3['body'],{})[_0x4158('0x24')](respondWithResult(_0x48d138,0xc9))[_0x4158('0x43')](handleError(_0x48d138,null));};exports[_0x4158('0x4a')]=function(_0x29311d,_0x5009aa){if(_0x29311d[_0x4158('0x4b')]['id']){delete _0x29311d[_0x4158('0x4b')]['id'];}return db[_0x4158('0x2c')]['find']({'where':{'id':_0x29311d[_0x4158('0x45')]['id']}})['then'](handleEntityNotFound(_0x5009aa,null))[_0x4158('0x24')](saveUpdates(_0x29311d[_0x4158('0x4b')],null))[_0x4158('0x24')](respondWithResult(_0x5009aa,null))[_0x4158('0x43')](handleError(_0x5009aa,null));};exports[_0x4158('0x25')]=function(_0x527a14,_0x407144){return db[_0x4158('0x2c')][_0x4158('0x4c')]({'where':{'id':_0x527a14[_0x4158('0x45')]['id']}})[_0x4158('0x24')](handleEntityNotFound(_0x407144,null))[_0x4158('0x24')](removeEntity(_0x407144,null))['catch'](handleError(_0x407144,null));};exports['describe']=function(_0x4821fb,_0x421073){return db[_0x4158('0x2c')][_0x4158('0x4d')]()['then'](respondWithResult(_0x421073,null))[_0x4158('0x43')](handleError(_0x421073,null));};
\ No newline at end of file
index 60e4f77..027040c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1707=['moment','bluebird','path','rimraf','../../config/environment','./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1707,0x1df));var _0x7170=function(_0x15ed32,_0x5ae1eb){_0x15ed32=_0x15ed32-0x0;var _0x483a05=_0x1707[_0x15ed32];return _0x483a05;};'use strict';var _=require(_0x7170('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x7170('0x1'));var BPromise=require(_0x7170('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7170('0x3'));var rimraf=require(_0x7170('0x4'));var config=require(_0x7170('0x5'));var attributes=require(_0x7170('0x6'));module[_0x7170('0x7')]=function(_0x19d043,_0x215acb){return _0x19d043[_0x7170('0x8')](_0x7170('0x9'),attributes,{'tableName':_0x7170('0xa'),'paranoid':![],'indexes':[{'name':_0x7170('0xb'),'fields':[_0x7170('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa3c0=['request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid','api'];(function(_0x1b57d1,_0x262371){var _0x34b6e0=function(_0x1d2030){while(--_0x1d2030){_0x1b57d1['push'](_0x1b57d1['shift']());}};_0x34b6e0(++_0x262371);}(_0xa3c0,0x11f));var _0x0a3c=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa3c0[_0x2160a9];return _0xa88cf7;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x0a3c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0a3c('0x1'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0a3c('0x2'));var config=require(_0x0a3c('0x3'));var attributes=require(_0x0a3c('0x4'));module['exports']=function(_0x42d8af,_0x2af764){return _0x42d8af[_0x0a3c('0x5')](_0x0a3c('0x6'),attributes,{'tableName':_0x0a3c('0x7'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a3c('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 6127599..8994124 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbab0=['randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','info','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','FaxTransferReport,\x20%s,\x20%s','lodash','util','moment','bluebird'];(function(_0x449e37,_0xc0a199){var _0x1fbe57=function(_0x2e9a1d){while(--_0x2e9a1d){_0x449e37['push'](_0x449e37['shift']());}};_0x1fbe57(++_0xc0a199);}(_0xbab0,0xb0));var _0x0bab=function(_0x109b8e,_0xde6fbc){_0x109b8e=_0x109b8e-0x0;var _0x46b673=_0xbab0[_0x109b8e];return _0x46b673;};'use strict';var _=require(_0x0bab('0x0'));var util=require(_0x0bab('0x1'));var moment=require(_0x0bab('0x2'));var BPromise=require(_0x0bab('0x3'));var rs=require(_0x0bab('0x4'));var fs=require('fs');var Redis=require(_0x0bab('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x0bab('0x6'));var logger=require(_0x0bab('0x7'))('rpc');var config=require(_0x0bab('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0bab('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x44a06b,_0x4665b9,_0x172a47){return new BPromise(function(_0x39bf33,_0x1069df){return client['request'](_0x44a06b,_0x172a47)['then'](function(_0x18d7aa){logger[_0x0bab('0xa')]('FaxTransferReport,\x20%s,\x20%s',_0x4665b9,_0x0bab('0xb'));logger[_0x0bab('0xc')](_0x0bab('0xd'),_0x4665b9,_0x0bab('0xb'),JSON[_0x0bab('0xe')](_0x18d7aa));if(_0x18d7aa[_0x0bab('0xf')]){if(_0x18d7aa[_0x0bab('0xf')]['code']===0x1f4){logger[_0x0bab('0xf')]('FaxTransferReport,\x20%s,\x20%s',_0x4665b9,_0x18d7aa[_0x0bab('0xf')][_0x0bab('0x10')]);return _0x1069df(_0x18d7aa[_0x0bab('0xf')][_0x0bab('0x10')]);}logger['error'](_0x0bab('0x11'),_0x4665b9,_0x18d7aa[_0x0bab('0xf')][_0x0bab('0x10')]);return _0x39bf33(_0x18d7aa[_0x0bab('0xf')][_0x0bab('0x10')]);}else{logger[_0x0bab('0xa')](_0x0bab('0x11'),_0x4665b9,'request\x20sent');_0x39bf33(_0x18d7aa['result'][_0x0bab('0x10')]);}})['catch'](function(_0x7e41c0){logger[_0x0bab('0xf')](_0x0bab('0x11'),_0x4665b9,_0x7e41c0);_0x1069df(_0x7e41c0);});});}
\ No newline at end of file
+var _0xe061=['FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info'];(function(_0x29e83d,_0x24d678){var _0x4aeeb6=function(_0x4b3edc){while(--_0x4b3edc){_0x29e83d['push'](_0x29e83d['shift']());}};_0x4aeeb6(++_0x24d678);}(_0xe061,0x190));var _0x1e06=function(_0x56a499,_0x3cc9a9){_0x56a499=_0x56a499-0x0;var _0x2c6db5=_0xe061[_0x56a499];return _0x2c6db5;};'use strict';var _=require(_0x1e06('0x0'));var util=require(_0x1e06('0x1'));var moment=require(_0x1e06('0x2'));var BPromise=require(_0x1e06('0x3'));var rs=require(_0x1e06('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1e06('0x5'))['db'];var utils=require(_0x1e06('0x6'));var logger=require(_0x1e06('0x7'))(_0x1e06('0x8'));var config=require(_0x1e06('0x9'));var jayson=require(_0x1e06('0xa'));var client=jayson['client'][_0x1e06('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3500f5,_0x3a042c,_0xbfb483){return new BPromise(function(_0x36a740,_0x27523b){return client[_0x1e06('0xc')](_0x3500f5,_0xbfb483)['then'](function(_0x4f75bb){logger[_0x1e06('0xd')](_0x1e06('0xe'),_0x3a042c,_0x1e06('0xf'));logger[_0x1e06('0x10')](_0x1e06('0x11'),_0x3a042c,_0x1e06('0xf'),JSON['stringify'](_0x4f75bb));if(_0x4f75bb[_0x1e06('0x12')]){if(_0x4f75bb[_0x1e06('0x12')][_0x1e06('0x13')]===0x1f4){logger[_0x1e06('0x12')](_0x1e06('0xe'),_0x3a042c,_0x4f75bb[_0x1e06('0x12')][_0x1e06('0x14')]);return _0x27523b(_0x4f75bb[_0x1e06('0x12')]['message']);}logger['error'](_0x1e06('0xe'),_0x3a042c,_0x4f75bb[_0x1e06('0x12')][_0x1e06('0x14')]);return _0x36a740(_0x4f75bb[_0x1e06('0x12')]['message']);}else{logger[_0x1e06('0xd')](_0x1e06('0xe'),_0x3a042c,_0x1e06('0xf'));_0x36a740(_0x4f75bb[_0x1e06('0x15')]['message']);}})[_0x1e06('0x16')](function(_0x192f22){logger['error'](_0x1e06('0xe'),_0x3a042c,_0x192f22);_0x27523b(_0x192f22);});});}
\ No newline at end of file
index fab97a6..27593f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0a1=['describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','/describe'];(function(_0x322bef,_0x4890d4){var _0x229e60=function(_0x45f89b){while(--_0x45f89b){_0x322bef['push'](_0x322bef['shift']());}};_0x229e60(++_0x4890d4);}(_0xf0a1,0x7d));var _0x1f0a=function(_0x1a14a0,_0x149757){_0x1a14a0=_0x1a14a0-0x0;var _0x4fe17c=_0xf0a1[_0x1a14a0];return _0x4fe17c;};'use strict';var multer=require(_0x1f0a('0x0'));var util=require(_0x1f0a('0x1'));var path=require('path');var timeout=require(_0x1f0a('0x2'));var express=require(_0x1f0a('0x3'));var router=express[_0x1f0a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1f0a('0x5'));var interaction=require(_0x1f0a('0x6'));var config=require(_0x1f0a('0x7'));var controller=require(_0x1f0a('0x8'));router[_0x1f0a('0x9')]('/',auth[_0x1f0a('0xa')](),controller[_0x1f0a('0xb')]);router[_0x1f0a('0x9')](_0x1f0a('0xc'),auth[_0x1f0a('0xa')](),controller[_0x1f0a('0xd')]);router[_0x1f0a('0x9')](_0x1f0a('0xe'),auth[_0x1f0a('0xa')](),controller[_0x1f0a('0xf')]);router[_0x1f0a('0x10')]('/',auth['isAuthenticated'](),controller[_0x1f0a('0x11')]);router[_0x1f0a('0x12')]('/:id',auth[_0x1f0a('0xa')](),controller[_0x1f0a('0x13')]);router[_0x1f0a('0x14')](_0x1f0a('0xe'),auth['isAuthenticated'](),controller[_0x1f0a('0x15')]);module[_0x1f0a('0x16')]=router;
\ No newline at end of file
+var _0x76f4=['get','describe','show','post','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','index'];(function(_0x581182,_0x4d140b){var _0x27eed2=function(_0x221e8f){while(--_0x221e8f){_0x581182['push'](_0x581182['shift']());}};_0x27eed2(++_0x4d140b);}(_0x76f4,0xd9));var _0x476f=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x76f4[_0x24061a];return _0x82054e;};'use strict';var multer=require(_0x476f('0x0'));var util=require(_0x476f('0x1'));var path=require(_0x476f('0x2'));var timeout=require(_0x476f('0x3'));var express=require(_0x476f('0x4'));var router=express[_0x476f('0x5')]();var fs_extra=require(_0x476f('0x6'));var auth=require(_0x476f('0x7'));var interaction=require(_0x476f('0x8'));var config=require(_0x476f('0x9'));var controller=require(_0x476f('0xa'));router['get']('/',auth[_0x476f('0xb')](),controller[_0x476f('0xc')]);router[_0x476f('0xd')]('/describe',auth['isAuthenticated'](),controller[_0x476f('0xe')]);router['get']('/:id',auth[_0x476f('0xb')](),controller[_0x476f('0xf')]);router[_0x476f('0x10')]('/',auth[_0x476f('0xb')](),controller[_0x476f('0x11')]);router[_0x476f('0x12')](_0x476f('0x13'),auth[_0x476f('0xb')](),controller[_0x476f('0x14')]);router[_0x476f('0x15')](_0x476f('0x13'),auth[_0x476f('0xb')](),controller['destroy']);module[_0x476f('0x16')]=router;
\ No newline at end of file
index 5465632..3dfd1aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6242=['multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','isAuthenticated','index','get','/:id','show','getConfigurations','/:id/fields','getFields','/:id/configurations','addConfiguration','put','update','delete'];(function(_0x1ca66c,_0x3e3868){var _0x5a78ce=function(_0x5432ac){while(--_0x5432ac){_0x1ca66c['push'](_0x1ca66c['shift']());}};_0x5a78ce(++_0x3e3868);}(_0x6242,0x6e));var _0x2624=function(_0x356142,_0x6235dd){_0x356142=_0x356142-0x0;var _0x208234=_0x6242[_0x356142];return _0x208234;};'use strict';var multer=require(_0x2624('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2624('0x1'));var express=require(_0x2624('0x2'));var router=express[_0x2624('0x3')]();var fs_extra=require(_0x2624('0x4'));var auth=require(_0x2624('0x5'));var interaction=require(_0x2624('0x6'));var config=require(_0x2624('0x7'));var controller=require(_0x2624('0x8'));router['get']('/',auth[_0x2624('0x9')](),controller[_0x2624('0xa')]);router[_0x2624('0xb')](_0x2624('0xc'),auth[_0x2624('0x9')](),controller[_0x2624('0xd')]);router[_0x2624('0xb')]('/:id/configurations',auth[_0x2624('0x9')](),controller[_0x2624('0xe')]);router[_0x2624('0xb')](_0x2624('0xf'),auth[_0x2624('0x9')](),controller[_0x2624('0x10')]);router['post']('/',auth[_0x2624('0x9')](),controller['create']);router['post'](_0x2624('0x11'),auth[_0x2624('0x9')](),controller[_0x2624('0x12')]);router[_0x2624('0x13')](_0x2624('0xc'),auth[_0x2624('0x9')](),controller[_0x2624('0x14')]);router[_0x2624('0x15')]('/:id',auth[_0x2624('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x77ec=['/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x77ec,0x7c));var _0xc77e=function(_0x28d0ca,_0x8f0cef){_0x28d0ca=_0x28d0ca-0x0;var _0x27ae0c=_0x77ec[_0x28d0ca];return _0x27ae0c;};'use strict';var multer=require(_0xc77e('0x0'));var util=require(_0xc77e('0x1'));var path=require(_0xc77e('0x2'));var timeout=require('connect-timeout');var express=require(_0xc77e('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc77e('0x4'));var interaction=require(_0xc77e('0x5'));var config=require(_0xc77e('0x6'));var controller=require('./intDeskAccount.controller');router['get']('/',auth[_0xc77e('0x7')](),controller[_0xc77e('0x8')]);router[_0xc77e('0x9')](_0xc77e('0xa'),auth[_0xc77e('0x7')](),controller[_0xc77e('0xb')]);router[_0xc77e('0x9')](_0xc77e('0xc'),auth[_0xc77e('0x7')](),controller[_0xc77e('0xd')]);router[_0xc77e('0x9')](_0xc77e('0xe'),auth[_0xc77e('0x7')](),controller[_0xc77e('0xf')]);router[_0xc77e('0x10')]('/',auth['isAuthenticated'](),controller[_0xc77e('0x11')]);router[_0xc77e('0x10')](_0xc77e('0xc'),auth[_0xc77e('0x7')](),controller[_0xc77e('0x12')]);router[_0xc77e('0x13')](_0xc77e('0xa'),auth[_0xc77e('0x7')](),controller[_0xc77e('0x14')]);router[_0xc77e('0x15')](_0xc77e('0xa'),auth[_0xc77e('0x7')](),controller[_0xc77e('0x16')]);module['exports']=router;
\ No newline at end of file
index 053de08..44b89dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11ba=['basic','integrationTab','newTab','sequelize','exports','STRING','ENUM'];(function(_0x3af2f4,_0xc2a094){var _0x5dd492=function(_0x478873){while(--_0x478873){_0x3af2f4['push'](_0x3af2f4['shift']());}};_0x5dd492(++_0xc2a094);}(_0x11ba,0x1d1));var _0xa11b=function(_0x1e9c9d,_0x32bdc3){_0x1e9c9d=_0x1e9c9d-0x0;var _0xd7635e=_0x11ba[_0x1e9c9d];return _0xd7635e;};'use strict';var Sequelize=require(_0xa11b('0x0'));module[_0xa11b('0x1')]={'name':{'type':Sequelize[_0xa11b('0x2')]},'description':{'type':Sequelize[_0xa11b('0x2')]},'username':{'type':Sequelize[_0xa11b('0x2')]},'remoteUri':{'type':Sequelize[_0xa11b('0x2')]},'authType':{'type':Sequelize[_0xa11b('0x3')](_0xa11b('0x4')),'defaultValue':_0xa11b('0x4')},'password':{'type':Sequelize[_0xa11b('0x2')]},'consumerKey':{'type':Sequelize[_0xa11b('0x2')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0xa11b('0x2')]},'serverUrl':{'type':Sequelize[_0xa11b('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xa11b('0x5'),_0xa11b('0x6')),'defaultValue':_0xa11b('0x5')}};
\ No newline at end of file
+var _0x6061=['integrationTab','newTab','STRING','basic','ENUM'];(function(_0x51b362,_0x19a740){var _0x49116c=function(_0x3e818b){while(--_0x3e818b){_0x51b362['push'](_0x51b362['shift']());}};_0x49116c(++_0x19a740);}(_0x6061,0x1bf));var _0x1606=function(_0x499a36,_0x4af5a2){_0x499a36=_0x499a36-0x0;var _0x56c4c5=_0x6061[_0x499a36];return _0x56c4c5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x1606('0x0')]},'description':{'type':Sequelize[_0x1606('0x0')]},'username':{'type':Sequelize[_0x1606('0x0')]},'remoteUri':{'type':Sequelize[_0x1606('0x0')]},'authType':{'type':Sequelize['ENUM'](_0x1606('0x1')),'defaultValue':'basic'},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x1606('0x0')]},'consumerSecret':{'type':Sequelize[_0x1606('0x0')]},'token':{'type':Sequelize[_0x1606('0x0')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x1606('0x2')](_0x1606('0x3'),_0x1606('0x4')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index e593300..70717d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ee9=['type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','show','keys','length','create','body','find','params','getConfigurations','findOne','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskConfiguration','DeskField','getFields','priority','remoteUri','username','password','consumerKey','consumerSecret','token','substring','lastIndexOf','GET','%s/custom_fields','application/json','authType','basic','headers','Authorization','Basic\x20%s','format','base64','concat','_embedded','entries','active','label','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','DeskAccount','rawAttributes','fieldName'];(function(_0x12f9a5,_0x3b0c6d){var _0x240702=function(_0x15d813){while(--_0x15d813){_0x12f9a5['push'](_0x12f9a5['shift']());}};_0x240702(++_0x3b0c6d);}(_0x5ee9,0xb9));var _0x95ee=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x5ee9[_0x40220a];return _0x3903cc;};'use strict';var emlformat=require(_0x95ee('0x0'));var rimraf=require(_0x95ee('0x1'));var zipdir=require(_0x95ee('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x95ee('0x3'));var BPromise=require(_0x95ee('0x4'));var Mustache=require(_0x95ee('0x5'));var util=require(_0x95ee('0x6'));var path=require(_0x95ee('0x7'));var sox=require(_0x95ee('0x8'));var csv=require(_0x95ee('0x9'));var ejs=require(_0x95ee('0xa'));var fs=require('fs');var fs_extra=require(_0x95ee('0xb'));var _=require('lodash');var squel=require(_0x95ee('0xc'));var crypto=require(_0x95ee('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x95ee('0xe'));var Papa=require(_0x95ee('0xf'));var Redis=require(_0x95ee('0x10'));var authService=require(_0x95ee('0x11'));var qs=require(_0x95ee('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x95ee('0x13'))(_0x95ee('0x14'));var utils=require(_0x95ee('0x15'));var config=require(_0x95ee('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x95ee('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x44d8e4,_0x16d1b6){_0x16d1b6=_0x16d1b6||0xcc;return function(_0x2d3db0){if(_0x2d3db0){return _0x44d8e4[_0x95ee('0x18')](_0x16d1b6);}return _0x44d8e4[_0x95ee('0x19')](_0x16d1b6)['end']();};}function respondWithResult(_0x2cbe19,_0x6af3dd){_0x6af3dd=_0x6af3dd||0xc8;return function(_0x7d3939){if(_0x7d3939){return _0x2cbe19[_0x95ee('0x19')](_0x6af3dd)[_0x95ee('0x1a')](_0x7d3939);}};}function respondWithFilteredResult(_0x53a9c1,_0x537051){return function(_0x310266){if(_0x310266){var _0x16a1d6=typeof _0x537051['offset']===_0x95ee('0x1b')&&typeof _0x537051[_0x95ee('0x1c')]===_0x95ee('0x1b');var _0x2eb124=_0x310266['count'];var _0x39265e=_0x16a1d6?0x0:_0x537051[_0x95ee('0x1d')];var _0x38eb29=_0x16a1d6?_0x310266[_0x95ee('0x1e')]:_0x537051[_0x95ee('0x1d')]+_0x537051[_0x95ee('0x1c')];var _0x283235;if(_0x38eb29>=_0x2eb124){_0x38eb29=_0x2eb124;_0x283235=0xc8;}else{_0x283235=0xce;}_0x53a9c1[_0x95ee('0x19')](_0x283235);return _0x53a9c1['set'](_0x95ee('0x1f'),_0x39265e+'-'+_0x38eb29+'/'+_0x2eb124)[_0x95ee('0x1a')](_0x310266);}return null;};}function patchUpdates(_0x53fe3b){return function(_0x2f312e){try{jsonpatch[_0x95ee('0x20')](_0x2f312e,_0x53fe3b,!![]);}catch(_0x5e2719){return BPromise[_0x95ee('0x21')](_0x5e2719);}return _0x2f312e[_0x95ee('0x22')]();};}function saveUpdates(_0x2eecaf,_0x31f71d){return function(_0x6e0aed){if(_0x6e0aed){return _0x6e0aed[_0x95ee('0x23')](_0x2eecaf)[_0x95ee('0x24')](function(_0x46daee){return _0x46daee;});}return null;};}function removeEntity(_0x49822a,_0x3a2298){return function(_0x437d01){if(_0x437d01){return _0x437d01[_0x95ee('0x25')]()[_0x95ee('0x24')](function(){_0x49822a[_0x95ee('0x19')](0xcc)[_0x95ee('0x26')]();});}};}function handleEntityNotFound(_0x3f7d24,_0x4c4b65){return function(_0x300e2e){if(!_0x300e2e){_0x3f7d24[_0x95ee('0x18')](0x194);}return _0x300e2e;};}function handleError(_0x4c3cf3,_0x5002f7){_0x5002f7=_0x5002f7||0x1f4;return function(_0x4dfa84){logger[_0x95ee('0x27')](_0x4dfa84[_0x95ee('0x28')]);if(_0x4dfa84[_0x95ee('0x29')]){delete _0x4dfa84['name'];}_0x4c3cf3[_0x95ee('0x19')](_0x5002f7)['send'](_0x4dfa84);};}exports[_0x95ee('0x2a')]=function(_0x3cc8e7,_0x5b8bf4){var _0xd15dd6={},_0x255fdf={},_0x2ae79a={'count':0x0,'rows':[]};var _0x12168=_[_0x95ee('0x2b')](db[_0x95ee('0x2c')][_0x95ee('0x2d')],function(_0x3b8b16){return{'name':_0x3b8b16[_0x95ee('0x2e')],'type':_0x3b8b16[_0x95ee('0x2f')][_0x95ee('0x30')]};});_0x255fdf[_0x95ee('0x31')]=_[_0x95ee('0x2b')](_0x12168,_0x95ee('0x29'));_0x255fdf[_0x95ee('0x32')]=_['keys'](_0x3cc8e7[_0x95ee('0x32')]);_0x255fdf[_0x95ee('0x33')]=_[_0x95ee('0x34')](_0x255fdf['model'],_0x255fdf[_0x95ee('0x32')]);_0xd15dd6['attributes']=_['intersection'](_0x255fdf[_0x95ee('0x31')],qs['fields'](_0x3cc8e7[_0x95ee('0x32')][_0x95ee('0x35')]));_0xd15dd6[_0x95ee('0x36')]=_0xd15dd6[_0x95ee('0x36')]['length']?_0xd15dd6['attributes']:_0x255fdf[_0x95ee('0x31')];if(!_0x3cc8e7['query'][_0x95ee('0x37')]('nolimit')){_0xd15dd6['limit']=qs[_0x95ee('0x1c')](_0x3cc8e7[_0x95ee('0x32')][_0x95ee('0x1c')]);_0xd15dd6[_0x95ee('0x1d')]=qs[_0x95ee('0x1d')](_0x3cc8e7[_0x95ee('0x32')]['offset']);}_0xd15dd6[_0x95ee('0x38')]=qs['sort'](_0x3cc8e7[_0x95ee('0x32')][_0x95ee('0x39')]);_0xd15dd6[_0x95ee('0x3a')]=qs['filters'](_[_0x95ee('0x3b')](_0x3cc8e7[_0x95ee('0x32')],_0x255fdf['filters']),_0x12168);if(_0x3cc8e7[_0x95ee('0x32')][_0x95ee('0x3c')]){_0xd15dd6['where']=_['merge'](_0xd15dd6['where'],{'$or':_[_0x95ee('0x2b')](_0x12168,function(_0x45e442){if(_0x45e442[_0x95ee('0x2f')]!=='VIRTUAL'){var _0x7a575a={};_0x7a575a[_0x45e442[_0x95ee('0x29')]]={'$like':'%'+_0x3cc8e7['query']['filter']+'%'};return _0x7a575a;}})});}_0xd15dd6=_[_0x95ee('0x3d')]({},_0xd15dd6,_0x3cc8e7[_0x95ee('0x3e')]);var _0xe9ba44={'where':_0xd15dd6[_0x95ee('0x3a')]};return db['DeskAccount'][_0x95ee('0x1e')](_0xe9ba44)['then'](function(_0xf2f072){_0x2ae79a[_0x95ee('0x1e')]=_0xf2f072;if(_0x3cc8e7[_0x95ee('0x32')][_0x95ee('0x3f')]){_0xd15dd6[_0x95ee('0x40')]=[{'all':!![]}];}return db[_0x95ee('0x2c')]['findAll'](_0xd15dd6);})[_0x95ee('0x24')](function(_0x8de61c){_0x2ae79a[_0x95ee('0x41')]=_0x8de61c;return _0x2ae79a;})[_0x95ee('0x24')](respondWithFilteredResult(_0x5b8bf4,_0xd15dd6))[_0x95ee('0x42')](handleError(_0x5b8bf4,null));};exports[_0x95ee('0x43')]=function(_0x12f018,_0x4de204){var _0x32d0b6={'raw':![],'where':{'id':_0x12f018['params']['id']}},_0x39de6c={};_0x39de6c[_0x95ee('0x31')]=_[_0x95ee('0x44')](db[_0x95ee('0x2c')][_0x95ee('0x2d')]);_0x39de6c['query']=_[_0x95ee('0x44')](_0x12f018[_0x95ee('0x32')]);_0x39de6c[_0x95ee('0x33')]=_[_0x95ee('0x34')](_0x39de6c['model'],_0x39de6c['query']);_0x32d0b6[_0x95ee('0x36')]=_[_0x95ee('0x34')](_0x39de6c[_0x95ee('0x31')],qs['fields'](_0x12f018['query'][_0x95ee('0x35')]));_0x32d0b6[_0x95ee('0x36')]=_0x32d0b6[_0x95ee('0x36')][_0x95ee('0x45')]?_0x32d0b6['attributes']:_0x39de6c[_0x95ee('0x31')];if(_0x12f018['query'][_0x95ee('0x3f')]){_0x32d0b6[_0x95ee('0x40')]=[{'all':!![]}];}_0x32d0b6=_[_0x95ee('0x3d')]({},_0x32d0b6,_0x12f018[_0x95ee('0x3e')]);return db[_0x95ee('0x2c')]['find'](_0x32d0b6)[_0x95ee('0x24')](handleEntityNotFound(_0x4de204,null))['then'](respondWithResult(_0x4de204,null))[_0x95ee('0x42')](handleError(_0x4de204,null));};exports[_0x95ee('0x46')]=function(_0x54603,_0x1a9583){return db['DeskAccount'][_0x95ee('0x46')](_0x54603['body'],{})[_0x95ee('0x24')](respondWithResult(_0x1a9583,0xc9))[_0x95ee('0x42')](handleError(_0x1a9583,null));};exports['update']=function(_0x2419a6,_0xdf3b0b){if(_0x2419a6[_0x95ee('0x47')]['id']){delete _0x2419a6[_0x95ee('0x47')]['id'];}return db[_0x95ee('0x2c')][_0x95ee('0x48')]({'where':{'id':_0x2419a6[_0x95ee('0x49')]['id']}})[_0x95ee('0x24')](handleEntityNotFound(_0xdf3b0b,null))[_0x95ee('0x24')](saveUpdates(_0x2419a6[_0x95ee('0x47')],null))['then'](respondWithResult(_0xdf3b0b,null))[_0x95ee('0x42')](handleError(_0xdf3b0b,null));};exports['destroy']=function(_0x3197e8,_0x278005){return db[_0x95ee('0x2c')][_0x95ee('0x48')]({'where':{'id':_0x3197e8['params']['id']}})[_0x95ee('0x24')](handleEntityNotFound(_0x278005,null))[_0x95ee('0x24')](removeEntity(_0x278005,null))['catch'](handleError(_0x278005,null));};exports[_0x95ee('0x4a')]=function(_0x9b2388,_0x45d112,_0x35e699){var _0x15a491={};var _0x420d5f={};var _0x547936;var _0x16da2b;return db['DeskAccount'][_0x95ee('0x4b')]({'where':{'id':_0x9b2388['params']['id']}})[_0x95ee('0x24')](handleEntityNotFound(_0x45d112,null))[_0x95ee('0x24')](function(_0x478a28){if(_0x478a28){_0x547936=_0x478a28;_0x420d5f[_0x95ee('0x31')]=_[_0x95ee('0x44')](db['DeskConfiguration'][_0x95ee('0x2d')]);_0x420d5f[_0x95ee('0x32')]=_[_0x95ee('0x44')](_0x9b2388[_0x95ee('0x32')]);_0x420d5f[_0x95ee('0x33')]=_[_0x95ee('0x34')](_0x420d5f[_0x95ee('0x31')],_0x420d5f[_0x95ee('0x32')]);_0x15a491['attributes']=_[_0x95ee('0x34')](_0x420d5f[_0x95ee('0x31')],qs[_0x95ee('0x35')](_0x9b2388[_0x95ee('0x32')][_0x95ee('0x35')]));_0x15a491[_0x95ee('0x36')]=_0x15a491[_0x95ee('0x36')][_0x95ee('0x45')]?_0x15a491['attributes']:_0x420d5f[_0x95ee('0x31')];_0x15a491['order']=qs[_0x95ee('0x39')](_0x9b2388[_0x95ee('0x32')][_0x95ee('0x39')]);_0x15a491[_0x95ee('0x3a')]=qs[_0x95ee('0x33')](_[_0x95ee('0x3b')](_0x9b2388['query'],_0x420d5f[_0x95ee('0x33')]));if(_0x9b2388['query'][_0x95ee('0x3c')]){_0x15a491[_0x95ee('0x3a')]=_['merge'](_0x15a491[_0x95ee('0x3a')],{'$or':_['map'](_0x15a491['attributes'],function(_0x4af3ad){var _0x3581fc={};_0x3581fc[_0x4af3ad]={'$like':'%'+_0x9b2388['query'][_0x95ee('0x3c')]+'%'};return _0x3581fc;})});}_0x15a491=_['merge']({},_0x15a491,_0x9b2388[_0x95ee('0x3e')]);return _0x547936[_0x95ee('0x4a')](_0x15a491);}})['then'](function(_0x3c7406){if(_0x3c7406){_0x16da2b=_0x3c7406[_0x95ee('0x45')];if(!_0x9b2388[_0x95ee('0x32')][_0x95ee('0x37')](_0x95ee('0x4c'))){_0x15a491[_0x95ee('0x1c')]=qs[_0x95ee('0x1c')](_0x9b2388[_0x95ee('0x32')]['limit']);_0x15a491[_0x95ee('0x1d')]=qs[_0x95ee('0x1d')](_0x9b2388[_0x95ee('0x32')]['offset']);}return _0x547936[_0x95ee('0x4a')](_0x15a491);}})[_0x95ee('0x24')](function(_0x14e0b0){if(_0x14e0b0){return _0x14e0b0?{'count':_0x16da2b,'rows':_0x14e0b0}:null;}})[_0x95ee('0x24')](respondWithResult(_0x45d112,null))[_0x95ee('0x42')](handleError(_0x45d112,null));};exports[_0x95ee('0x4d')]=function(_0x703085,_0x8ba79d,_0x4ef4f6){if(_0x703085['body']['id']){delete _0x703085[_0x95ee('0x47')]['id'];}return db[_0x95ee('0x2c')][_0x95ee('0x4b')]({'where':{'id':_0x703085[_0x95ee('0x49')]['id']}})[_0x95ee('0x24')](handleEntityNotFound(_0x8ba79d,null))[_0x95ee('0x24')](function(_0x32174c){if(_0x32174c){_0x703085[_0x95ee('0x47')][_0x95ee('0x4e')]=_0x32174c['id'];_0x703085[_0x95ee('0x47')][_0x95ee('0x4f')]=integrations[_0x95ee('0x50')](_0x703085[_0x95ee('0x47')][_0x95ee('0x51')],_0x703085[_0x95ee('0x47')][_0x95ee('0x2f')]);_0x703085[_0x95ee('0x47')][_0x95ee('0x52')]=integrations[_0x95ee('0x53')](_0x703085[_0x95ee('0x47')][_0x95ee('0x51')],_0x703085[_0x95ee('0x47')][_0x95ee('0x2f')]);return db[_0x95ee('0x54')][_0x95ee('0x46')](_0x703085[_0x95ee('0x47')],{'include':[{'model':db[_0x95ee('0x55')],'as':_0x95ee('0x4f')},{'model':db[_0x95ee('0x55')],'as':'Descriptions'}]});}return null;})[_0x95ee('0x24')](respondWithResult(_0x8ba79d,null))[_0x95ee('0x42')](handleError(_0x8ba79d,null));};exports[_0x95ee('0x56')]=function(_0x57fc7a,_0x2bb6ef,_0x4f1088){var _0x4ed590=[{'name':_0x95ee('0x57'),'label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0xa27946='';return db['DeskAccount'][_0x95ee('0x4b')]({'where':{'id':_0x57fc7a[_0x95ee('0x49')]['id']},'attributes':['id',_0x95ee('0x58'),'authType',_0x95ee('0x59'),_0x95ee('0x5a'),_0x95ee('0x5b'),_0x95ee('0x5c'),_0x95ee('0x5d'),'tokenSecret']})[_0x95ee('0x24')](handleEntityNotFound(_0x2bb6ef,null))[_0x95ee('0x24')](function(_0x4cbe12){if(_0x4cbe12){_0xa27946=_0x4cbe12[_0x95ee('0x58')];var _0xb28c9=_0xa27946['slice'](-0x1);if(_0xb28c9==='/'){_0xa27946=_0xa27946[_0x95ee('0x5e')](0x0,_0xa27946[_0x95ee('0x5f')](_0xb28c9));}var _0x3b5974={'method':_0x95ee('0x60'),'uri':util['format'](_0x95ee('0x61'),_0xa27946),'headers':{'Content-Type':_0x95ee('0x62'),'Accept':_0x95ee('0x62')},'json':!![]};if(_0x4cbe12[_0x95ee('0x63')]===_0x95ee('0x64')){_0x3b5974[_0x95ee('0x65')][_0x95ee('0x66')]=util['format'](_0x95ee('0x67'),new Buffer(util[_0x95ee('0x68')]('%s:%s',_0x4cbe12[_0x95ee('0x59')],_0x4cbe12['password']))['toString'](_0x95ee('0x69')));}return rp(_0x3b5974)['then'](function(_0x12a972){return _0x4ed590[_0x95ee('0x6a')](_[_0x95ee('0x2b')](_0x12a972[_0x95ee('0x6b')][_0x95ee('0x6c')],function(_0x1d72ce){return{'id':_0x1d72ce[_0x95ee('0x29')],'name':_0x1d72ce[_0x95ee('0x29')],'type':_0x1d72ce[_0x95ee('0x2f')],'active':_0x1d72ce[_0x95ee('0x6d')],'label':_0x1d72ce[_0x95ee('0x6e')],'custom':!![]};}));});}})[_0x95ee('0x24')](function(_0x59a767){return{'count':_0x59a767[_0x95ee('0x45')],'rows':_0x59a767};})[_0x95ee('0x24')](respondWithResult(_0x2bb6ef,null))[_0x95ee('0x42')](function(_0xbad5af){var _0x21344c=_0x57fc7a[_0x95ee('0x32')]['test']?0x1f4:_0xbad5af[_0x95ee('0x6f')]||0x1f4;logger['error'](_0x95ee('0x70'),_0x95ee('0x56'),_0x21344c,JSON['stringify'](_0xbad5af));delete _0xbad5af[_0x95ee('0x29')];if(_0x21344c===0x191){_0x21344c=0x190;}_0x2bb6ef[_0x95ee('0x19')](_0x21344c)[_0x95ee('0x71')](_0x57fc7a[_0x95ee('0x32')][_0x95ee('0x72')]?{'message':_0x95ee('0x73'),'statusCode':_0xbad5af[_0x95ee('0x6f')]}:_0xbad5af);});};
\ No newline at end of file
+var _0x94c1=['sox','ejs','fs-extra','squel','jsforce','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','options','includeAll','include','findAll','show','params','length','catch','create','body','find','getConfigurations','findOne','DeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','DeskField','Descriptions','getFields','priority','remoteUri','authType','username','consumerKey','tokenSecret','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','concat','_embedded','entries','active','label','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util'];(function(_0x21a0cb,_0x5a4cc5){var _0x2e9bb4=function(_0x3b47cf){while(--_0x3b47cf){_0x21a0cb['push'](_0x21a0cb['shift']());}};_0x2e9bb4(++_0x5a4cc5);}(_0x94c1,0x68));var _0x194c=function(_0xdfd6a7,_0x43e58f){_0xdfd6a7=_0xdfd6a7-0x0;var _0x190173=_0x94c1[_0xdfd6a7];return _0x190173;};'use strict';var emlformat=require(_0x194c('0x0'));var rimraf=require(_0x194c('0x1'));var zipdir=require(_0x194c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x194c('0x3'));var moment=require(_0x194c('0x4'));var BPromise=require(_0x194c('0x5'));var Mustache=require(_0x194c('0x6'));var util=require(_0x194c('0x7'));var path=require('path');var sox=require(_0x194c('0x8'));var csv=require('to-csv');var ejs=require(_0x194c('0x9'));var fs=require('fs');var fs_extra=require(_0x194c('0xa'));var _=require('lodash');var squel=require(_0x194c('0xb'));var crypto=require('crypto');var jsforce=require(_0x194c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x194c('0xd'));var querystring=require(_0x194c('0xe'));var Papa=require(_0x194c('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x194c('0x10'));var as=require(_0x194c('0x11'));var hardwareService=require(_0x194c('0x12'));var logger=require('../../config/logger')(_0x194c('0x13'));var utils=require(_0x194c('0x14'));var config=require(_0x194c('0x15'));var licenseUtil=require(_0x194c('0x16'));var db=require(_0x194c('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x30207f,_0x271164){_0x271164=_0x271164||0xcc;return function(_0x456625){if(_0x456625){return _0x30207f[_0x194c('0x18')](_0x271164);}return _0x30207f[_0x194c('0x19')](_0x271164)['end']();};}function respondWithResult(_0x3b01c7,_0x482779){_0x482779=_0x482779||0xc8;return function(_0x315000){if(_0x315000){return _0x3b01c7['status'](_0x482779)[_0x194c('0x1a')](_0x315000);}};}function respondWithFilteredResult(_0x1f1ed3,_0x2977c1){return function(_0x242d85){if(_0x242d85){var _0x5c13d5=typeof _0x2977c1[_0x194c('0x1b')]==='undefined'&&typeof _0x2977c1[_0x194c('0x1c')]===_0x194c('0x1d');var _0x322689=_0x242d85[_0x194c('0x1e')];var _0x17cfb3=_0x5c13d5?0x0:_0x2977c1[_0x194c('0x1b')];var _0x33e13f=_0x5c13d5?_0x242d85['count']:_0x2977c1[_0x194c('0x1b')]+_0x2977c1[_0x194c('0x1c')];var _0x2e3c4;if(_0x33e13f>=_0x322689){_0x33e13f=_0x322689;_0x2e3c4=0xc8;}else{_0x2e3c4=0xce;}_0x1f1ed3['status'](_0x2e3c4);return _0x1f1ed3[_0x194c('0x1f')](_0x194c('0x20'),_0x17cfb3+'-'+_0x33e13f+'/'+_0x322689)[_0x194c('0x1a')](_0x242d85);}return null;};}function patchUpdates(_0x566948){return function(_0x572965){try{jsonpatch[_0x194c('0x21')](_0x572965,_0x566948,!![]);}catch(_0x301695){return BPromise['reject'](_0x301695);}return _0x572965[_0x194c('0x22')]();};}function saveUpdates(_0x331c4b,_0x3d56d8){return function(_0x426c6a){if(_0x426c6a){return _0x426c6a[_0x194c('0x23')](_0x331c4b)[_0x194c('0x24')](function(_0x1784e3){return _0x1784e3;});}return null;};}function removeEntity(_0x3ef909,_0x257271){return function(_0x53701f){if(_0x53701f){return _0x53701f[_0x194c('0x25')]()[_0x194c('0x24')](function(){_0x3ef909[_0x194c('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x21d7d3,_0xa1e953){return function(_0x5a84db){if(!_0x5a84db){_0x21d7d3[_0x194c('0x18')](0x194);}return _0x5a84db;};}function handleError(_0x2e4701,_0x477a77){_0x477a77=_0x477a77||0x1f4;return function(_0x8910ff){logger[_0x194c('0x26')](_0x8910ff[_0x194c('0x27')]);if(_0x8910ff[_0x194c('0x28')]){delete _0x8910ff[_0x194c('0x28')];}_0x2e4701[_0x194c('0x19')](_0x477a77)[_0x194c('0x29')](_0x8910ff);};}exports[_0x194c('0x2a')]=function(_0x65495,_0x4102c6){var _0x498e19={},_0x29c00b={},_0x5c354c={'count':0x0,'rows':[]};var _0x20aadb=_[_0x194c('0x2b')](db[_0x194c('0x2c')][_0x194c('0x2d')],function(_0x585c96){return{'name':_0x585c96[_0x194c('0x2e')],'type':_0x585c96[_0x194c('0x2f')]['key']};});_0x29c00b[_0x194c('0x30')]=_[_0x194c('0x2b')](_0x20aadb,'name');_0x29c00b[_0x194c('0x31')]=_[_0x194c('0x32')](_0x65495['query']);_0x29c00b[_0x194c('0x33')]=_[_0x194c('0x34')](_0x29c00b['model'],_0x29c00b[_0x194c('0x31')]);_0x498e19[_0x194c('0x35')]=_[_0x194c('0x34')](_0x29c00b[_0x194c('0x30')],qs[_0x194c('0x36')](_0x65495[_0x194c('0x31')]['fields']));_0x498e19[_0x194c('0x35')]=_0x498e19[_0x194c('0x35')]['length']?_0x498e19['attributes']:_0x29c00b[_0x194c('0x30')];if(!_0x65495[_0x194c('0x31')][_0x194c('0x37')](_0x194c('0x38'))){_0x498e19[_0x194c('0x1c')]=qs[_0x194c('0x1c')](_0x65495[_0x194c('0x31')]['limit']);_0x498e19[_0x194c('0x1b')]=qs[_0x194c('0x1b')](_0x65495[_0x194c('0x31')][_0x194c('0x1b')]);}_0x498e19[_0x194c('0x39')]=qs['sort'](_0x65495[_0x194c('0x31')][_0x194c('0x3a')]);_0x498e19['where']=qs['filters'](_[_0x194c('0x3b')](_0x65495[_0x194c('0x31')],_0x29c00b[_0x194c('0x33')]),_0x20aadb);if(_0x65495[_0x194c('0x31')]['filter']){_0x498e19[_0x194c('0x3c')]=_[_0x194c('0x3d')](_0x498e19[_0x194c('0x3c')],{'$or':_['map'](_0x20aadb,function(_0x1b8017){if(_0x1b8017[_0x194c('0x2f')]!=='VIRTUAL'){var _0x1ceddf={};_0x1ceddf[_0x1b8017[_0x194c('0x28')]]={'$like':'%'+_0x65495['query'][_0x194c('0x3e')]+'%'};return _0x1ceddf;}})});}_0x498e19=_['merge']({},_0x498e19,_0x65495[_0x194c('0x3f')]);var _0x45bdcd={'where':_0x498e19[_0x194c('0x3c')]};return db['DeskAccount'][_0x194c('0x1e')](_0x45bdcd)['then'](function(_0x9c2cb2){_0x5c354c['count']=_0x9c2cb2;if(_0x65495[_0x194c('0x31')][_0x194c('0x40')]){_0x498e19[_0x194c('0x41')]=[{'all':!![]}];}return db[_0x194c('0x2c')][_0x194c('0x42')](_0x498e19);})['then'](function(_0x5f1fa1){_0x5c354c['rows']=_0x5f1fa1;return _0x5c354c;})[_0x194c('0x24')](respondWithFilteredResult(_0x4102c6,_0x498e19))['catch'](handleError(_0x4102c6,null));};exports[_0x194c('0x43')]=function(_0x41f35d,_0x39c77f){var _0x2367e4={'raw':![],'where':{'id':_0x41f35d[_0x194c('0x44')]['id']}},_0x31786f={};_0x31786f[_0x194c('0x30')]=_[_0x194c('0x32')](db['DeskAccount'][_0x194c('0x2d')]);_0x31786f[_0x194c('0x31')]=_[_0x194c('0x32')](_0x41f35d[_0x194c('0x31')]);_0x31786f[_0x194c('0x33')]=_[_0x194c('0x34')](_0x31786f[_0x194c('0x30')],_0x31786f['query']);_0x2367e4[_0x194c('0x35')]=_[_0x194c('0x34')](_0x31786f[_0x194c('0x30')],qs[_0x194c('0x36')](_0x41f35d[_0x194c('0x31')][_0x194c('0x36')]));_0x2367e4[_0x194c('0x35')]=_0x2367e4[_0x194c('0x35')][_0x194c('0x45')]?_0x2367e4[_0x194c('0x35')]:_0x31786f['model'];if(_0x41f35d[_0x194c('0x31')][_0x194c('0x40')]){_0x2367e4[_0x194c('0x41')]=[{'all':!![]}];}_0x2367e4=_[_0x194c('0x3d')]({},_0x2367e4,_0x41f35d[_0x194c('0x3f')]);return db[_0x194c('0x2c')]['find'](_0x2367e4)[_0x194c('0x24')](handleEntityNotFound(_0x39c77f,null))['then'](respondWithResult(_0x39c77f,null))[_0x194c('0x46')](handleError(_0x39c77f,null));};exports[_0x194c('0x47')]=function(_0x2751e7,_0x39e5d4){return db[_0x194c('0x2c')][_0x194c('0x47')](_0x2751e7[_0x194c('0x48')],{})[_0x194c('0x24')](respondWithResult(_0x39e5d4,0xc9))['catch'](handleError(_0x39e5d4,null));};exports[_0x194c('0x23')]=function(_0x995c10,_0x3892b4){if(_0x995c10['body']['id']){delete _0x995c10['body']['id'];}return db['DeskAccount'][_0x194c('0x49')]({'where':{'id':_0x995c10[_0x194c('0x44')]['id']}})[_0x194c('0x24')](handleEntityNotFound(_0x3892b4,null))[_0x194c('0x24')](saveUpdates(_0x995c10[_0x194c('0x48')],null))['then'](respondWithResult(_0x3892b4,null))['catch'](handleError(_0x3892b4,null));};exports[_0x194c('0x25')]=function(_0x1b4ad0,_0x109136){return db[_0x194c('0x2c')][_0x194c('0x49')]({'where':{'id':_0x1b4ad0['params']['id']}})[_0x194c('0x24')](handleEntityNotFound(_0x109136,null))[_0x194c('0x24')](removeEntity(_0x109136,null))[_0x194c('0x46')](handleError(_0x109136,null));};exports[_0x194c('0x4a')]=function(_0x38f334,_0x142f9e,_0x4a0eef){var _0x40f739={};var _0x4b82b6={};var _0x1a6db1;var _0x25f352;return db['DeskAccount'][_0x194c('0x4b')]({'where':{'id':_0x38f334[_0x194c('0x44')]['id']}})[_0x194c('0x24')](handleEntityNotFound(_0x142f9e,null))['then'](function(_0x1e66dd){if(_0x1e66dd){_0x1a6db1=_0x1e66dd;_0x4b82b6['model']=_['keys'](db[_0x194c('0x4c')][_0x194c('0x2d')]);_0x4b82b6['query']=_[_0x194c('0x32')](_0x38f334[_0x194c('0x31')]);_0x4b82b6['filters']=_['intersection'](_0x4b82b6[_0x194c('0x30')],_0x4b82b6['query']);_0x40f739[_0x194c('0x35')]=_[_0x194c('0x34')](_0x4b82b6['model'],qs[_0x194c('0x36')](_0x38f334[_0x194c('0x31')]['fields']));_0x40f739['attributes']=_0x40f739[_0x194c('0x35')]['length']?_0x40f739['attributes']:_0x4b82b6[_0x194c('0x30')];_0x40f739['order']=qs[_0x194c('0x3a')](_0x38f334[_0x194c('0x31')][_0x194c('0x3a')]);_0x40f739[_0x194c('0x3c')]=qs[_0x194c('0x33')](_[_0x194c('0x3b')](_0x38f334[_0x194c('0x31')],_0x4b82b6['filters']));if(_0x38f334[_0x194c('0x31')][_0x194c('0x3e')]){_0x40f739[_0x194c('0x3c')]=_[_0x194c('0x3d')](_0x40f739[_0x194c('0x3c')],{'$or':_[_0x194c('0x2b')](_0x40f739[_0x194c('0x35')],function(_0x133d07){var _0x5ac482={};_0x5ac482[_0x133d07]={'$like':'%'+_0x38f334['query']['filter']+'%'};return _0x5ac482;})});}_0x40f739=_[_0x194c('0x3d')]({},_0x40f739,_0x38f334['options']);return _0x1a6db1[_0x194c('0x4a')](_0x40f739);}})[_0x194c('0x24')](function(_0x4ed910){if(_0x4ed910){_0x25f352=_0x4ed910['length'];if(!_0x38f334[_0x194c('0x31')][_0x194c('0x37')](_0x194c('0x38'))){_0x40f739[_0x194c('0x1c')]=qs[_0x194c('0x1c')](_0x38f334[_0x194c('0x31')][_0x194c('0x1c')]);_0x40f739[_0x194c('0x1b')]=qs[_0x194c('0x1b')](_0x38f334[_0x194c('0x31')][_0x194c('0x1b')]);}return _0x1a6db1[_0x194c('0x4a')](_0x40f739);}})['then'](function(_0x43ded5){if(_0x43ded5){return _0x43ded5?{'count':_0x25f352,'rows':_0x43ded5}:null;}})['then'](respondWithResult(_0x142f9e,null))['catch'](handleError(_0x142f9e,null));};exports[_0x194c('0x4d')]=function(_0x245d28,_0x36892a,_0x11acbb){if(_0x245d28['body']['id']){delete _0x245d28[_0x194c('0x48')]['id'];}return db[_0x194c('0x2c')][_0x194c('0x4b')]({'where':{'id':_0x245d28[_0x194c('0x44')]['id']}})[_0x194c('0x24')](handleEntityNotFound(_0x36892a,null))['then'](function(_0x59db83){if(_0x59db83){_0x245d28['body'][_0x194c('0x4e')]=_0x59db83['id'];_0x245d28['body'][_0x194c('0x4f')]=integrations[_0x194c('0x50')](_0x245d28[_0x194c('0x48')][_0x194c('0x51')],_0x245d28['body'][_0x194c('0x2f')]);_0x245d28['body']['Descriptions']=integrations['getDescriptions'](_0x245d28[_0x194c('0x48')][_0x194c('0x51')],_0x245d28[_0x194c('0x48')][_0x194c('0x2f')]);return db[_0x194c('0x4c')]['create'](_0x245d28['body'],{'include':[{'model':db[_0x194c('0x52')],'as':_0x194c('0x4f')},{'model':db[_0x194c('0x52')],'as':_0x194c('0x53')}]});}return null;})['then'](respondWithResult(_0x36892a,null))['catch'](handleError(_0x36892a,null));};exports[_0x194c('0x54')]=function(_0x170ef1,_0x473e6e,_0x15b6c7){var _0x36b119=[{'name':_0x194c('0x55'),'label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x2d9f25='';return db[_0x194c('0x2c')][_0x194c('0x4b')]({'where':{'id':_0x170ef1[_0x194c('0x44')]['id']},'attributes':['id',_0x194c('0x56'),_0x194c('0x57'),_0x194c('0x58'),'password',_0x194c('0x59'),'consumerSecret','token',_0x194c('0x5a')]})[_0x194c('0x24')](handleEntityNotFound(_0x473e6e,null))['then'](function(_0xdcc5ba){if(_0xdcc5ba){_0x2d9f25=_0xdcc5ba[_0x194c('0x56')];var _0x2b5f3a=_0x2d9f25['slice'](-0x1);if(_0x2b5f3a==='/'){_0x2d9f25=_0x2d9f25[_0x194c('0x5b')](0x0,_0x2d9f25[_0x194c('0x5c')](_0x2b5f3a));}var _0x5666ac={'method':_0x194c('0x5d'),'uri':util[_0x194c('0x5e')](_0x194c('0x5f'),_0x2d9f25),'headers':{'Content-Type':_0x194c('0x60'),'Accept':_0x194c('0x60')},'json':!![]};if(_0xdcc5ba[_0x194c('0x57')]===_0x194c('0x61')){_0x5666ac[_0x194c('0x62')][_0x194c('0x63')]=util[_0x194c('0x5e')](_0x194c('0x64'),new Buffer(util['format'](_0x194c('0x65'),_0xdcc5ba[_0x194c('0x58')],_0xdcc5ba['password']))[_0x194c('0x66')]('base64'));}return rp(_0x5666ac)[_0x194c('0x24')](function(_0x357661){return _0x36b119[_0x194c('0x67')](_[_0x194c('0x2b')](_0x357661[_0x194c('0x68')][_0x194c('0x69')],function(_0x4fae51){return{'id':_0x4fae51[_0x194c('0x28')],'name':_0x4fae51[_0x194c('0x28')],'type':_0x4fae51[_0x194c('0x2f')],'active':_0x4fae51[_0x194c('0x6a')],'label':_0x4fae51[_0x194c('0x6b')],'custom':!![]};}));});}})[_0x194c('0x24')](function(_0x2c9883){return{'count':_0x2c9883[_0x194c('0x45')],'rows':_0x2c9883};})[_0x194c('0x24')](respondWithResult(_0x473e6e,null))[_0x194c('0x46')](function(_0x37aa77){var _0x5e231f=_0x170ef1[_0x194c('0x31')][_0x194c('0x6c')]?0x1f4:_0x37aa77[_0x194c('0x6d')]||0x1f4;logger[_0x194c('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0x194c('0x54'),_0x5e231f,JSON[_0x194c('0x6e')](_0x37aa77));delete _0x37aa77['name'];if(_0x5e231f===0x191){_0x5e231f=0x190;}_0x473e6e[_0x194c('0x19')](_0x5e231f)[_0x194c('0x29')](_0x170ef1[_0x194c('0x31')][_0x194c('0x6c')]?{'message':_0x194c('0x6f'),'statusCode':_0x37aa77[_0x194c('0x6d')]}:_0x37aa77);});};
\ No newline at end of file
index 6a958b2..c4c6838 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3b0=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','DeskAccount','int_desk_accounts'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa3b0,0x82));var _0x0a3b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa3b0[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0a3b('0x0'))(_0x0a3b('0x1'));var moment=require('moment');var BPromise=require(_0x0a3b('0x2'));var rp=require(_0x0a3b('0x3'));var fs=require('fs');var path=require(_0x0a3b('0x4'));var rimraf=require(_0x0a3b('0x5'));var config=require(_0x0a3b('0x6'));var attributes=require('./intDeskAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x0a3b('0x7')]=function(_0x464bc1,_0x5d677e){return _0x464bc1['define'](_0x0a3b('0x8'),attributes,{'tableName':_0x0a3b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x779a=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','int_desk_accounts','lodash','util','../../config/logger','api'];(function(_0x150abc,_0x4cf93c){var _0x1dc4d4=function(_0x10dee2){while(--_0x10dee2){_0x150abc['push'](_0x150abc['shift']());}};_0x1dc4d4(++_0x4cf93c);}(_0x779a,0xf8));var _0xa779=function(_0x283abb,_0x43010c){_0x283abb=_0x283abb-0x0;var _0x4644b4=_0x779a[_0x283abb];return _0x4644b4;};'use strict';var _=require(_0xa779('0x0'));var util=require(_0xa779('0x1'));var logger=require(_0xa779('0x2'))(_0xa779('0x3'));var moment=require(_0xa779('0x4'));var BPromise=require(_0xa779('0x5'));var rp=require(_0xa779('0x6'));var fs=require('fs');var path=require(_0xa779('0x7'));var rimraf=require(_0xa779('0x8'));var config=require(_0xa779('0x9'));var attributes=require(_0xa779('0xa'));var integrations=require(_0xa779('0xb'));module[_0xa779('0xc')]=function(_0x39dbf5,_0x476322){return _0x39dbf5['define']('DeskAccount',attributes,{'tableName':_0xa779('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 187407d..8afba66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3efe=['find','where','ShowDeskAccount','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','request\x20sent','DeskAccount,\x20%s,\x20%s,\x20%s','error','code','DeskAccount,\x20%s,\x20%s','message','info','result','GetDeskAccount','options','raw','attributes','limit','include','map','model','debug','stringify','catch'];(function(_0x1ebd19,_0x2ec7e2){var _0x50e867=function(_0x4c83f){while(--_0x4c83f){_0x1ebd19['push'](_0x1ebd19['shift']());}};_0x50e867(++_0x2ec7e2);}(_0x3efe,0xc9));var _0xe3ef=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x3efe[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0xe3ef('0x0'));var util=require('util');var moment=require(_0xe3ef('0x1'));var BPromise=require(_0xe3ef('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe3ef('0x3'));var db=require(_0xe3ef('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe3ef('0x5'))(_0xe3ef('0x6'));var config=require(_0xe3ef('0x7'));var jayson=require(_0xe3ef('0x8'));var client=jayson['client'][_0xe3ef('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2e8b06,_0x1db930,_0x1ae8bf){return new BPromise(function(_0x5c710,_0x4bd61e){return client['request'](_0x2e8b06,_0x1ae8bf)[_0xe3ef('0xa')](function(_0x202028){logger['info']('DeskAccount,\x20%s,\x20%s',_0x1db930,_0xe3ef('0xb'));logger['debug'](_0xe3ef('0xc'),_0x1db930,_0xe3ef('0xb'),JSON['stringify'](_0x202028));if(_0x202028[_0xe3ef('0xd')]){if(_0x202028[_0xe3ef('0xd')][_0xe3ef('0xe')]===0x1f4){logger[_0xe3ef('0xd')](_0xe3ef('0xf'),_0x1db930,_0x202028[_0xe3ef('0xd')]['message']);return _0x4bd61e(_0x202028[_0xe3ef('0xd')][_0xe3ef('0x10')]);}logger[_0xe3ef('0xd')](_0xe3ef('0xf'),_0x1db930,_0x202028[_0xe3ef('0xd')][_0xe3ef('0x10')]);return _0x5c710(_0x202028[_0xe3ef('0xd')][_0xe3ef('0x10')]);}else{logger[_0xe3ef('0x11')](_0xe3ef('0xf'),_0x1db930,_0xe3ef('0xb'));_0x5c710(_0x202028[_0xe3ef('0x12')][_0xe3ef('0x10')]);}})['catch'](function(_0x2c301f){logger['error']('DeskAccount,\x20%s,\x20%s',_0x1db930,_0x2c301f);_0x4bd61e(_0x2c301f);});});}exports[_0xe3ef('0x13')]=function(_0x24eaed){var _0xd9686d=this;return new Promise(function(_0x5a6b6e,_0x4b23e3){return db['DeskAccount']['findAll']({'raw':_0x24eaed['options']?_0x24eaed[_0xe3ef('0x14')][_0xe3ef('0x15')]===undefined?!![]:![]:!![],'where':_0x24eaed[_0xe3ef('0x14')]?_0x24eaed[_0xe3ef('0x14')]['where']||null:null,'attributes':_0x24eaed[_0xe3ef('0x14')]?_0x24eaed['options'][_0xe3ef('0x16')]||null:null,'limit':_0x24eaed['options']?_0x24eaed[_0xe3ef('0x14')][_0xe3ef('0x17')]||null:null,'include':_0x24eaed[_0xe3ef('0x14')]?_0x24eaed[_0xe3ef('0x14')][_0xe3ef('0x18')]?_[_0xe3ef('0x19')](_0x24eaed['options'][_0xe3ef('0x18')],function(_0x1a4f62){return{'model':db[_0x1a4f62[_0xe3ef('0x1a')]],'as':_0x1a4f62['as'],'attributes':_0x1a4f62[_0xe3ef('0x16')],'include':_0x1a4f62['include']?_[_0xe3ef('0x19')](_0x1a4f62[_0xe3ef('0x18')],function(_0xbf6b){return{'model':db[_0xbf6b[_0xe3ef('0x1a')]],'as':_0xbf6b['as'],'attributes':_0xbf6b[_0xe3ef('0x16')],'include':_0xbf6b[_0xe3ef('0x18')]?_[_0xe3ef('0x19')](_0xbf6b[_0xe3ef('0x18')],function(_0x47279c){return{'model':db[_0x47279c[_0xe3ef('0x1a')]],'as':_0x47279c['as'],'attributes':_0x47279c[_0xe3ef('0x16')]};}):[]};}):[]};}):[]:[]})[_0xe3ef('0xa')](function(_0x19c613){logger[_0xe3ef('0x11')](_0xe3ef('0x13'),_0x24eaed);logger[_0xe3ef('0x1b')]('GetDeskAccount',_0x24eaed,JSON[_0xe3ef('0x1c')](_0x19c613));_0x5a6b6e(_0x19c613);})[_0xe3ef('0x1d')](function(_0x8a8b96){logger['error'](_0xe3ef('0x13'),_0x8a8b96[_0xe3ef('0x10')],_0x24eaed);_0x4b23e3(_0xd9686d[_0xe3ef('0xd')](0x1f4,_0x8a8b96[_0xe3ef('0x10')]));});});};exports['ShowDeskAccount']=function(_0x5d35a6){var _0x1c1a72=this;return new Promise(function(_0x7a297e,_0x5db06d){return db['DeskAccount'][_0xe3ef('0x1e')]({'raw':_0x5d35a6[_0xe3ef('0x14')]?_0x5d35a6[_0xe3ef('0x14')][_0xe3ef('0x15')]===undefined?!![]:![]:!![],'where':_0x5d35a6[_0xe3ef('0x14')]?_0x5d35a6[_0xe3ef('0x14')][_0xe3ef('0x1f')]||null:null,'attributes':_0x5d35a6[_0xe3ef('0x14')]?_0x5d35a6[_0xe3ef('0x14')][_0xe3ef('0x16')]||null:null,'include':_0x5d35a6['options']?_0x5d35a6[_0xe3ef('0x14')][_0xe3ef('0x18')]?_[_0xe3ef('0x19')](_0x5d35a6[_0xe3ef('0x14')]['include'],function(_0x7f90db){return{'model':db[_0x7f90db[_0xe3ef('0x1a')]],'as':_0x7f90db['as'],'attributes':_0x7f90db[_0xe3ef('0x16')],'include':_0x7f90db[_0xe3ef('0x18')]?_['map'](_0x7f90db['include'],function(_0x18e991){return{'model':db[_0x18e991[_0xe3ef('0x1a')]],'as':_0x18e991['as'],'attributes':_0x18e991['attributes'],'include':_0x18e991[_0xe3ef('0x18')]?_[_0xe3ef('0x19')](_0x18e991['include'],function(_0x5a2114){return{'model':db[_0x5a2114[_0xe3ef('0x1a')]],'as':_0x5a2114['as'],'attributes':_0x5a2114['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c35c7){logger['info']('ShowDeskAccount',_0x5d35a6);logger[_0xe3ef('0x1b')](_0xe3ef('0x20'),_0x5d35a6,JSON['stringify'](_0x1c35c7));_0x7a297e(_0x1c35c7);})[_0xe3ef('0x1d')](function(_0x39b2c7){logger[_0xe3ef('0xd')]('ShowDeskAccount',_0x39b2c7[_0xe3ef('0x10')],_0x5d35a6);_0x5db06d(_0x1c1a72['error'](0x1f4,_0x39b2c7[_0xe3ef('0x10')]));});});};
\ No newline at end of file
+var _0xf60c=['jayson/promise','client','http','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','DeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','GetDeskAccount','DeskAccount','options','raw','where','map','include','model','attributes','debug','catch','ShowDeskAccount','stringify','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x276468,_0x29685a){var _0x36dc3a=function(_0x291f0a){while(--_0x291f0a){_0x276468['push'](_0x276468['shift']());}};_0x36dc3a(++_0x29685a);}(_0xf60c,0x139));var _0xcf60=function(_0x2df8e3,_0x40ad2c){_0x2df8e3=_0x2df8e3-0x0;var _0x3e0c90=_0xf60c[_0x2df8e3];return _0x3e0c90;};'use strict';var _=require('lodash');var util=require(_0xcf60('0x0'));var moment=require('moment');var BPromise=require(_0xcf60('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcf60('0x2'));var db=require(_0xcf60('0x3'))['db'];var utils=require(_0xcf60('0x4'));var logger=require(_0xcf60('0x5'))('rpc');var config=require(_0xcf60('0x6'));var jayson=require(_0xcf60('0x7'));var client=jayson[_0xcf60('0x8')][_0xcf60('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4761f0,_0x250df2,_0x2ff2ce){return new BPromise(function(_0xd0f517,_0x92cfc4){return client['request'](_0x4761f0,_0x2ff2ce)[_0xcf60('0xa')](function(_0x30fedf){logger[_0xcf60('0xb')](_0xcf60('0xc'),_0x250df2,_0xcf60('0xd'));logger['debug'](_0xcf60('0xe'),_0x250df2,_0xcf60('0xd'),JSON['stringify'](_0x30fedf));if(_0x30fedf[_0xcf60('0xf')]){if(_0x30fedf['error'][_0xcf60('0x10')]===0x1f4){logger['error'](_0xcf60('0xc'),_0x250df2,_0x30fedf['error'][_0xcf60('0x11')]);return _0x92cfc4(_0x30fedf[_0xcf60('0xf')][_0xcf60('0x11')]);}logger['error'](_0xcf60('0xc'),_0x250df2,_0x30fedf['error'][_0xcf60('0x11')]);return _0xd0f517(_0x30fedf[_0xcf60('0xf')][_0xcf60('0x11')]);}else{logger[_0xcf60('0xb')]('DeskAccount,\x20%s,\x20%s',_0x250df2,_0xcf60('0xd'));_0xd0f517(_0x30fedf[_0xcf60('0x12')][_0xcf60('0x11')]);}})['catch'](function(_0x58a1bc){logger[_0xcf60('0xf')](_0xcf60('0xc'),_0x250df2,_0x58a1bc);_0x92cfc4(_0x58a1bc);});});}exports[_0xcf60('0x13')]=function(_0x248ce1){var _0x1326c7=this;return new Promise(function(_0x4cba76,_0x3c356a){return db[_0xcf60('0x14')]['findAll']({'raw':_0x248ce1['options']?_0x248ce1[_0xcf60('0x15')][_0xcf60('0x16')]===undefined?!![]:![]:!![],'where':_0x248ce1[_0xcf60('0x15')]?_0x248ce1[_0xcf60('0x15')][_0xcf60('0x17')]||null:null,'attributes':_0x248ce1[_0xcf60('0x15')]?_0x248ce1['options']['attributes']||null:null,'limit':_0x248ce1[_0xcf60('0x15')]?_0x248ce1[_0xcf60('0x15')]['limit']||null:null,'include':_0x248ce1['options']?_0x248ce1[_0xcf60('0x15')]['include']?_[_0xcf60('0x18')](_0x248ce1[_0xcf60('0x15')][_0xcf60('0x19')],function(_0x3bb402){return{'model':db[_0x3bb402[_0xcf60('0x1a')]],'as':_0x3bb402['as'],'attributes':_0x3bb402[_0xcf60('0x1b')],'include':_0x3bb402['include']?_[_0xcf60('0x18')](_0x3bb402[_0xcf60('0x19')],function(_0x4812e8){return{'model':db[_0x4812e8['model']],'as':_0x4812e8['as'],'attributes':_0x4812e8[_0xcf60('0x1b')],'include':_0x4812e8[_0xcf60('0x19')]?_[_0xcf60('0x18')](_0x4812e8[_0xcf60('0x19')],function(_0x343ec1){return{'model':db[_0x343ec1[_0xcf60('0x1a')]],'as':_0x343ec1['as'],'attributes':_0x343ec1[_0xcf60('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xcf60('0xa')](function(_0x42d518){logger['info'](_0xcf60('0x13'),_0x248ce1);logger[_0xcf60('0x1c')](_0xcf60('0x13'),_0x248ce1,JSON['stringify'](_0x42d518));_0x4cba76(_0x42d518);})[_0xcf60('0x1d')](function(_0x258200){logger[_0xcf60('0xf')](_0xcf60('0x13'),_0x258200[_0xcf60('0x11')],_0x248ce1);_0x3c356a(_0x1326c7[_0xcf60('0xf')](0x1f4,_0x258200['message']));});});};exports[_0xcf60('0x1e')]=function(_0x22c50d){var _0x12c2c6=this;return new Promise(function(_0x8e0c79,_0x4ce381){return db['DeskAccount']['find']({'raw':_0x22c50d['options']?_0x22c50d['options']['raw']===undefined?!![]:![]:!![],'where':_0x22c50d[_0xcf60('0x15')]?_0x22c50d[_0xcf60('0x15')][_0xcf60('0x17')]||null:null,'attributes':_0x22c50d[_0xcf60('0x15')]?_0x22c50d[_0xcf60('0x15')][_0xcf60('0x1b')]||null:null,'include':_0x22c50d[_0xcf60('0x15')]?_0x22c50d[_0xcf60('0x15')][_0xcf60('0x19')]?_[_0xcf60('0x18')](_0x22c50d[_0xcf60('0x15')][_0xcf60('0x19')],function(_0x51124a){return{'model':db[_0x51124a[_0xcf60('0x1a')]],'as':_0x51124a['as'],'attributes':_0x51124a['attributes'],'include':_0x51124a[_0xcf60('0x19')]?_[_0xcf60('0x18')](_0x51124a[_0xcf60('0x19')],function(_0x43d688){return{'model':db[_0x43d688['model']],'as':_0x43d688['as'],'attributes':_0x43d688[_0xcf60('0x1b')],'include':_0x43d688['include']?_[_0xcf60('0x18')](_0x43d688['include'],function(_0x34895d){return{'model':db[_0x34895d['model']],'as':_0x34895d['as'],'attributes':_0x34895d[_0xcf60('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xcf60('0xa')](function(_0x594adb){logger[_0xcf60('0xb')](_0xcf60('0x1e'),_0x22c50d);logger[_0xcf60('0x1c')](_0xcf60('0x1e'),_0x22c50d,JSON[_0xcf60('0x1f')](_0x594adb));_0x8e0c79(_0x594adb);})[_0xcf60('0x1d')](function(_0x3006b1){logger['error'](_0xcf60('0x1e'),_0x3006b1[_0xcf60('0x11')],_0x22c50d);_0x4ce381(_0x12c2c6[_0xcf60('0xf')](0x1f4,_0x3006b1[_0xcf60('0x11')]));});});};
\ No newline at end of file
index af8265d..68d49ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x4750fb,_0x50d374){var _0x2539df=function(_0x1d7976){while(--_0x1d7976){_0x4750fb['push'](_0x4750fb['shift']());}};_0x2539df(++_0x50d374);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/fields',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/descriptions',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/tags',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller['destroy']);module[_0x7995('0x1a')]=router;
\ No newline at end of file
+var _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(_0x2a276d,_0x482b0c){var _0x2914cd=function(_0x452b8b){while(--_0x452b8b){_0x2a276d['push'](_0x2a276d['shift']());}};_0x2914cd(++_0x482b0c);}(_0x55ca,0x126));var _0xa55c=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x55ca[_0x4a53d];return _0x27410e;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
index 26886a7..acb90b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaf4=['sequelize','exports','STRING'];(function(_0x2b5573,_0x5712a4){var _0x2bf761=function(_0xd9f120){while(--_0xd9f120){_0x2b5573['push'](_0x2b5573['shift']());}};_0x2bf761(++_0x5712a4);}(_0xcaf4,0x8d));var _0x4caf=function(_0x51145a,_0x3feda0){_0x51145a=_0x51145a-0x0;var _0x30eb81=_0xcaf4[_0x51145a];return _0x30eb81;};'use strict';var Sequelize=require(_0x4caf('0x0'));module[_0x4caf('0x1')]={'name':{'type':Sequelize[_0x4caf('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7403=['STRING','sequelize','exports'];(function(_0x46e161,_0x1b2cff){var _0x294c3d=function(_0x5214a4){while(--_0x5214a4){_0x46e161['push'](_0x46e161['shift']());}};_0x294c3d(++_0x1b2cff);}(_0x7403,0x88));var _0x3740=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7403[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3740('0x0'));module[_0x3740('0x1')]={'name':{'type':Sequelize[_0x3740('0x2')]},'description':{'type':Sequelize[_0x3740('0x2')]}};
\ No newline at end of file
index 0594412..9a14652 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3823=['intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','merge','type','filter','includeAll','include','rows','catch','params','rawAttributes','options','create','body','find','destroy','getFields','findOne','DeskField','map','getSubjects','getDescriptions','nolimit','Tag','getTags','setTags','rimraf','zip-dir','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','name','index','DeskConfiguration','fieldName','key','query','keys'];(function(_0x3d1d42,_0x28accd){var _0x3e9e29=function(_0x532ac6){while(--_0x532ac6){_0x3d1d42['push'](_0x3d1d42['shift']());}};_0x3e9e29(++_0x28accd);}(_0x3823,0x71));var _0x3382=function(_0x2de8ef,_0x4eb9d2){_0x2de8ef=_0x2de8ef-0x0;var _0x37b8e9=_0x3823[_0x2de8ef];return _0x37b8e9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3382('0x0'));var zipdir=require(_0x3382('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3382('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3382('0x3'));var util=require(_0x3382('0x4'));var path=require(_0x3382('0x5'));var sox=require('sox');var csv=require(_0x3382('0x6'));var ejs=require(_0x3382('0x7'));var fs=require('fs');var fs_extra=require(_0x3382('0x8'));var _=require(_0x3382('0x9'));var squel=require(_0x3382('0xa'));var crypto=require('crypto');var jsforce=require(_0x3382('0xb'));var deskjs=require(_0x3382('0xc'));var toCsv=require(_0x3382('0x6'));var querystring=require(_0x3382('0xd'));var Papa=require(_0x3382('0xe'));var Redis=require(_0x3382('0xf'));var authService=require(_0x3382('0x10'));var qs=require(_0x3382('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3382('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x3382('0x13'));var config=require(_0x3382('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x3382('0x15'))['db'];function respondWithStatusCode(_0x2ca4eb,_0x5731ec){_0x5731ec=_0x5731ec||0xcc;return function(_0x285acf){if(_0x285acf){return _0x2ca4eb[_0x3382('0x16')](_0x5731ec);}return _0x2ca4eb[_0x3382('0x17')](_0x5731ec)[_0x3382('0x18')]();};}function respondWithResult(_0x4ec628,_0x152adb){_0x152adb=_0x152adb||0xc8;return function(_0x1143c3){if(_0x1143c3){return _0x4ec628[_0x3382('0x17')](_0x152adb)[_0x3382('0x19')](_0x1143c3);}};}function respondWithFilteredResult(_0x15660c,_0x3c344c){return function(_0x3648b4){if(_0x3648b4){var _0x4deaac=typeof _0x3c344c[_0x3382('0x1a')]===_0x3382('0x1b')&&typeof _0x3c344c[_0x3382('0x1c')]===_0x3382('0x1b');var _0x518e38=_0x3648b4[_0x3382('0x1d')];var _0x31eb83=_0x4deaac?0x0:_0x3c344c['offset'];var _0x85b501=_0x4deaac?_0x3648b4[_0x3382('0x1d')]:_0x3c344c[_0x3382('0x1a')]+_0x3c344c[_0x3382('0x1c')];var _0xf29c59;if(_0x85b501>=_0x518e38){_0x85b501=_0x518e38;_0xf29c59=0xc8;}else{_0xf29c59=0xce;}_0x15660c['status'](_0xf29c59);return _0x15660c[_0x3382('0x1e')]('Content-Range',_0x31eb83+'-'+_0x85b501+'/'+_0x518e38)[_0x3382('0x19')](_0x3648b4);}return null;};}function patchUpdates(_0x26a7d4){return function(_0x4fdc94){try{jsonpatch[_0x3382('0x1f')](_0x4fdc94,_0x26a7d4,!![]);}catch(_0x61d8bb){return BPromise['reject'](_0x61d8bb);}return _0x4fdc94[_0x3382('0x20')]();};}function saveUpdates(_0x17ac77,_0x16f9f6){return function(_0x5a67ba){if(_0x5a67ba){return _0x5a67ba[_0x3382('0x21')](_0x17ac77)[_0x3382('0x22')](function(_0x38cd2b){return _0x38cd2b;});}return null;};}function removeEntity(_0x498714,_0x73abfd){return function(_0x509843){if(_0x509843){return _0x509843['destroy']()['then'](function(){_0x498714[_0x3382('0x17')](0xcc)[_0x3382('0x18')]();});}};}function handleEntityNotFound(_0x2b952f,_0x28bd92){return function(_0x58de03){if(!_0x58de03){_0x2b952f[_0x3382('0x16')](0x194);}return _0x58de03;};}function handleError(_0x47762f,_0x22dd9c){_0x22dd9c=_0x22dd9c||0x1f4;return function(_0x55d42e){logger[_0x3382('0x23')](_0x55d42e['stack']);if(_0x55d42e[_0x3382('0x24')]){delete _0x55d42e['name'];}_0x47762f[_0x3382('0x17')](_0x22dd9c)['send'](_0x55d42e);};}exports[_0x3382('0x25')]=function(_0x37033e,_0x4c5b64){var _0x311524={},_0x593087={},_0x40ae7a={'count':0x0,'rows':[]};var _0xc6fcde=_['map'](db[_0x3382('0x26')]['rawAttributes'],function(_0x4f32dc){return{'name':_0x4f32dc[_0x3382('0x27')],'type':_0x4f32dc['type'][_0x3382('0x28')]};});_0x593087['model']=_['map'](_0xc6fcde,_0x3382('0x24'));_0x593087[_0x3382('0x29')]=_[_0x3382('0x2a')](_0x37033e[_0x3382('0x29')]);_0x593087['filters']=_[_0x3382('0x2b')](_0x593087[_0x3382('0x2c')],_0x593087[_0x3382('0x29')]);_0x311524['attributes']=_[_0x3382('0x2b')](_0x593087['model'],qs['fields'](_0x37033e[_0x3382('0x29')][_0x3382('0x2d')]));_0x311524['attributes']=_0x311524[_0x3382('0x2e')][_0x3382('0x2f')]?_0x311524[_0x3382('0x2e')]:_0x593087['model'];if(!_0x37033e['query'][_0x3382('0x30')]('nolimit')){_0x311524[_0x3382('0x1c')]=qs[_0x3382('0x1c')](_0x37033e[_0x3382('0x29')][_0x3382('0x1c')]);_0x311524[_0x3382('0x1a')]=qs[_0x3382('0x1a')](_0x37033e[_0x3382('0x29')][_0x3382('0x1a')]);}_0x311524[_0x3382('0x31')]=qs[_0x3382('0x32')](_0x37033e[_0x3382('0x29')][_0x3382('0x32')]);_0x311524[_0x3382('0x33')]=qs[_0x3382('0x34')](_[_0x3382('0x35')](_0x37033e[_0x3382('0x29')],_0x593087[_0x3382('0x34')]),_0xc6fcde);if(_0x37033e[_0x3382('0x29')]['filter']){_0x311524[_0x3382('0x33')]=_[_0x3382('0x36')](_0x311524[_0x3382('0x33')],{'$or':_['map'](_0xc6fcde,function(_0x50e3c6){if(_0x50e3c6[_0x3382('0x37')]!=='VIRTUAL'){var _0x3971bf={};_0x3971bf[_0x50e3c6[_0x3382('0x24')]]={'$like':'%'+_0x37033e[_0x3382('0x29')][_0x3382('0x38')]+'%'};return _0x3971bf;}})});}_0x311524=_[_0x3382('0x36')]({},_0x311524,_0x37033e['options']);var _0xdc1c62={'where':_0x311524[_0x3382('0x33')]};return db[_0x3382('0x26')]['count'](_0xdc1c62)['then'](function(_0x14c374){_0x40ae7a[_0x3382('0x1d')]=_0x14c374;if(_0x37033e[_0x3382('0x29')][_0x3382('0x39')]){_0x311524[_0x3382('0x3a')]=[{'all':!![]}];}return db[_0x3382('0x26')]['findAll'](_0x311524);})[_0x3382('0x22')](function(_0x12440e){_0x40ae7a[_0x3382('0x3b')]=_0x12440e;return _0x40ae7a;})[_0x3382('0x22')](respondWithFilteredResult(_0x4c5b64,_0x311524))[_0x3382('0x3c')](handleError(_0x4c5b64,null));};exports['show']=function(_0x4f4890,_0x5c19ea){var _0x3c2fd9={'raw':![],'where':{'id':_0x4f4890[_0x3382('0x3d')]['id']}},_0x425e43={};_0x425e43[_0x3382('0x2c')]=_['keys'](db[_0x3382('0x26')][_0x3382('0x3e')]);_0x425e43['query']=_['keys'](_0x4f4890[_0x3382('0x29')]);_0x425e43[_0x3382('0x34')]=_['intersection'](_0x425e43[_0x3382('0x2c')],_0x425e43[_0x3382('0x29')]);_0x3c2fd9[_0x3382('0x2e')]=_[_0x3382('0x2b')](_0x425e43[_0x3382('0x2c')],qs['fields'](_0x4f4890[_0x3382('0x29')][_0x3382('0x2d')]));_0x3c2fd9['attributes']=_0x3c2fd9[_0x3382('0x2e')][_0x3382('0x2f')]?_0x3c2fd9[_0x3382('0x2e')]:_0x425e43[_0x3382('0x2c')];if(_0x4f4890[_0x3382('0x29')][_0x3382('0x39')]){_0x3c2fd9['include']=[{'all':!![]}];}_0x3c2fd9=_[_0x3382('0x36')]({},_0x3c2fd9,_0x4f4890[_0x3382('0x3f')]);return db[_0x3382('0x26')]['find'](_0x3c2fd9)['then'](handleEntityNotFound(_0x5c19ea,null))[_0x3382('0x22')](respondWithResult(_0x5c19ea,null))[_0x3382('0x3c')](handleError(_0x5c19ea,null));};exports[_0x3382('0x40')]=function(_0x4d1ba4,_0x4380b1){return db[_0x3382('0x26')][_0x3382('0x40')](_0x4d1ba4[_0x3382('0x41')],{})['then'](respondWithResult(_0x4380b1,0xc9))[_0x3382('0x3c')](handleError(_0x4380b1,null));};exports[_0x3382('0x21')]=function(_0x4f8b07,_0x2e2d85){if(_0x4f8b07[_0x3382('0x41')]['id']){delete _0x4f8b07['body']['id'];}return db[_0x3382('0x26')][_0x3382('0x42')]({'where':{'id':_0x4f8b07[_0x3382('0x3d')]['id']}})[_0x3382('0x22')](handleEntityNotFound(_0x2e2d85,null))['then'](saveUpdates(_0x4f8b07[_0x3382('0x41')],null))[_0x3382('0x22')](respondWithResult(_0x2e2d85,null))['catch'](handleError(_0x2e2d85,null));};exports[_0x3382('0x43')]=function(_0x1f8116,_0x3c4582){return db[_0x3382('0x26')][_0x3382('0x42')]({'where':{'id':_0x1f8116[_0x3382('0x3d')]['id']}})[_0x3382('0x22')](handleEntityNotFound(_0x3c4582,null))[_0x3382('0x22')](removeEntity(_0x3c4582,null))[_0x3382('0x3c')](handleError(_0x3c4582,null));};exports[_0x3382('0x44')]=function(_0x3ed697,_0x1e6414,_0x5db24b){var _0x4df639={};var _0x21ffde={};var _0x3d466d;var _0x215923;return db[_0x3382('0x26')][_0x3382('0x45')]({'where':{'id':_0x3ed697[_0x3382('0x3d')]['id']}})[_0x3382('0x22')](handleEntityNotFound(_0x1e6414,null))[_0x3382('0x22')](function(_0x2f3721){if(_0x2f3721){_0x3d466d=_0x2f3721;_0x21ffde[_0x3382('0x2c')]=_[_0x3382('0x2a')](db[_0x3382('0x46')]['rawAttributes']);_0x21ffde[_0x3382('0x29')]=_['keys'](_0x3ed697['query']);_0x21ffde['filters']=_[_0x3382('0x2b')](_0x21ffde[_0x3382('0x2c')],_0x21ffde[_0x3382('0x29')]);_0x4df639['attributes']=_['intersection'](_0x21ffde[_0x3382('0x2c')],qs[_0x3382('0x2d')](_0x3ed697['query']['fields']));_0x4df639[_0x3382('0x2e')]=_0x4df639[_0x3382('0x2e')][_0x3382('0x2f')]?_0x4df639[_0x3382('0x2e')]:_0x21ffde[_0x3382('0x2c')];_0x4df639[_0x3382('0x31')]=qs['sort'](_0x3ed697[_0x3382('0x29')][_0x3382('0x32')]);_0x4df639['where']=qs[_0x3382('0x34')](_['pick'](_0x3ed697[_0x3382('0x29')],_0x21ffde[_0x3382('0x34')]));if(_0x3ed697[_0x3382('0x29')][_0x3382('0x38')]){_0x4df639[_0x3382('0x33')]=_['merge'](_0x4df639[_0x3382('0x33')],{'$or':_[_0x3382('0x47')](_0x4df639['attributes'],function(_0x8737e1){var _0x399ff0={};_0x399ff0[_0x8737e1]={'$like':'%'+_0x3ed697['query'][_0x3382('0x38')]+'%'};return _0x399ff0;})});}_0x4df639=_[_0x3382('0x36')]({},_0x4df639,_0x3ed697[_0x3382('0x3f')]);return _0x3d466d[_0x3382('0x44')](_0x4df639);}})[_0x3382('0x22')](function(_0x29e2a6){if(_0x29e2a6){_0x215923=_0x29e2a6[_0x3382('0x2f')];if(!_0x3ed697[_0x3382('0x29')][_0x3382('0x30')]('nolimit')){_0x4df639[_0x3382('0x1c')]=qs[_0x3382('0x1c')](_0x3ed697[_0x3382('0x29')][_0x3382('0x1c')]);_0x4df639['offset']=qs[_0x3382('0x1a')](_0x3ed697[_0x3382('0x29')][_0x3382('0x1a')]);}return _0x3d466d['getFields'](_0x4df639);}})['then'](function(_0x174aef){if(_0x174aef){return _0x174aef?{'count':_0x215923,'rows':_0x174aef}:null;}})[_0x3382('0x22')](respondWithResult(_0x1e6414,null))[_0x3382('0x3c')](handleError(_0x1e6414,null));};exports[_0x3382('0x48')]=function(_0x5e3de7,_0x5a14e2,_0x63b0c9){var _0x5a2f9f={};var _0x2270ad={};var _0x3be27d;var _0x5f456b;return db[_0x3382('0x26')][_0x3382('0x45')]({'where':{'id':_0x5e3de7[_0x3382('0x3d')]['id']}})[_0x3382('0x22')](handleEntityNotFound(_0x5a14e2,null))[_0x3382('0x22')](function(_0x415562){if(_0x415562){_0x3be27d=_0x415562;_0x2270ad[_0x3382('0x2c')]=_[_0x3382('0x2a')](db[_0x3382('0x46')][_0x3382('0x3e')]);_0x2270ad['query']=_[_0x3382('0x2a')](_0x5e3de7[_0x3382('0x29')]);_0x2270ad[_0x3382('0x34')]=_[_0x3382('0x2b')](_0x2270ad[_0x3382('0x2c')],_0x2270ad[_0x3382('0x29')]);_0x5a2f9f[_0x3382('0x2e')]=_['intersection'](_0x2270ad[_0x3382('0x2c')],qs[_0x3382('0x2d')](_0x5e3de7[_0x3382('0x29')]['fields']));_0x5a2f9f[_0x3382('0x2e')]=_0x5a2f9f[_0x3382('0x2e')][_0x3382('0x2f')]?_0x5a2f9f[_0x3382('0x2e')]:_0x2270ad['model'];_0x5a2f9f[_0x3382('0x31')]=qs[_0x3382('0x32')](_0x5e3de7[_0x3382('0x29')][_0x3382('0x32')]);_0x5a2f9f[_0x3382('0x33')]=qs['filters'](_[_0x3382('0x35')](_0x5e3de7[_0x3382('0x29')],_0x2270ad[_0x3382('0x34')]));if(_0x5e3de7[_0x3382('0x29')][_0x3382('0x38')]){_0x5a2f9f['where']=_['merge'](_0x5a2f9f[_0x3382('0x33')],{'$or':_[_0x3382('0x47')](_0x5a2f9f[_0x3382('0x2e')],function(_0x82ae0f){var _0x4fba34={};_0x4fba34[_0x82ae0f]={'$like':'%'+_0x5e3de7[_0x3382('0x29')]['filter']+'%'};return _0x4fba34;})});}_0x5a2f9f=_[_0x3382('0x36')]({},_0x5a2f9f,_0x5e3de7['options']);return _0x3be27d['getSubjects'](_0x5a2f9f);}})['then'](function(_0x53516b){if(_0x53516b){_0x5f456b=_0x53516b['length'];if(!_0x5e3de7[_0x3382('0x29')][_0x3382('0x30')]('nolimit')){_0x5a2f9f[_0x3382('0x1c')]=qs[_0x3382('0x1c')](_0x5e3de7[_0x3382('0x29')][_0x3382('0x1c')]);_0x5a2f9f[_0x3382('0x1a')]=qs[_0x3382('0x1a')](_0x5e3de7['query'][_0x3382('0x1a')]);}return _0x3be27d[_0x3382('0x48')](_0x5a2f9f);}})[_0x3382('0x22')](function(_0x4b47ba){if(_0x4b47ba){return _0x4b47ba?{'count':_0x5f456b,'rows':_0x4b47ba}:null;}})['then'](respondWithResult(_0x5a14e2,null))[_0x3382('0x3c')](handleError(_0x5a14e2,null));};exports['getDescriptions']=function(_0x280a5d,_0xb3be09,_0x2e03ae){var _0x4fd790={};var _0x305e95={};var _0x8202b3;var _0x108daf;return db[_0x3382('0x26')][_0x3382('0x45')]({'where':{'id':_0x280a5d[_0x3382('0x3d')]['id']}})['then'](handleEntityNotFound(_0xb3be09,null))[_0x3382('0x22')](function(_0x3228fe){if(_0x3228fe){_0x8202b3=_0x3228fe;_0x305e95[_0x3382('0x2c')]=_[_0x3382('0x2a')](db[_0x3382('0x46')][_0x3382('0x3e')]);_0x305e95[_0x3382('0x29')]=_['keys'](_0x280a5d[_0x3382('0x29')]);_0x305e95['filters']=_[_0x3382('0x2b')](_0x305e95['model'],_0x305e95[_0x3382('0x29')]);_0x4fd790[_0x3382('0x2e')]=_['intersection'](_0x305e95['model'],qs['fields'](_0x280a5d[_0x3382('0x29')][_0x3382('0x2d')]));_0x4fd790['attributes']=_0x4fd790[_0x3382('0x2e')]['length']?_0x4fd790['attributes']:_0x305e95['model'];_0x4fd790['order']=qs['sort'](_0x280a5d[_0x3382('0x29')][_0x3382('0x32')]);_0x4fd790[_0x3382('0x33')]=qs['filters'](_[_0x3382('0x35')](_0x280a5d[_0x3382('0x29')],_0x305e95[_0x3382('0x34')]));if(_0x280a5d[_0x3382('0x29')]['filter']){_0x4fd790[_0x3382('0x33')]=_[_0x3382('0x36')](_0x4fd790['where'],{'$or':_[_0x3382('0x47')](_0x4fd790['attributes'],function(_0x2c2432){var _0x4340a9={};_0x4340a9[_0x2c2432]={'$like':'%'+_0x280a5d[_0x3382('0x29')][_0x3382('0x38')]+'%'};return _0x4340a9;})});}_0x4fd790=_[_0x3382('0x36')]({},_0x4fd790,_0x280a5d[_0x3382('0x3f')]);return _0x8202b3[_0x3382('0x49')](_0x4fd790);}})[_0x3382('0x22')](function(_0x4102d4){if(_0x4102d4){_0x108daf=_0x4102d4[_0x3382('0x2f')];if(!_0x280a5d[_0x3382('0x29')][_0x3382('0x30')](_0x3382('0x4a'))){_0x4fd790[_0x3382('0x1c')]=qs[_0x3382('0x1c')](_0x280a5d[_0x3382('0x29')][_0x3382('0x1c')]);_0x4fd790[_0x3382('0x1a')]=qs[_0x3382('0x1a')](_0x280a5d[_0x3382('0x29')]['offset']);}return _0x8202b3[_0x3382('0x49')](_0x4fd790);}})[_0x3382('0x22')](function(_0x47b7dd){if(_0x47b7dd){return _0x47b7dd?{'count':_0x108daf,'rows':_0x47b7dd}:null;}})[_0x3382('0x22')](respondWithResult(_0xb3be09,null))[_0x3382('0x3c')](handleError(_0xb3be09,null));};exports['getTags']=function(_0x5de1be,_0x4cd2dc,_0x58f0d3){var _0x38ce34={};var _0x1b8ed0={};var _0x3ccaeb;var _0x2e626e;return db[_0x3382('0x26')][_0x3382('0x45')]({'where':{'id':_0x5de1be[_0x3382('0x3d')]['id']}})['then'](handleEntityNotFound(_0x4cd2dc,null))[_0x3382('0x22')](function(_0x183a14){if(_0x183a14){_0x3ccaeb=_0x183a14;_0x1b8ed0['model']=_[_0x3382('0x2a')](db[_0x3382('0x4b')][_0x3382('0x3e')]);_0x1b8ed0[_0x3382('0x29')]=_[_0x3382('0x2a')](_0x5de1be[_0x3382('0x29')]);_0x1b8ed0[_0x3382('0x34')]=_[_0x3382('0x2b')](_0x1b8ed0['model'],_0x1b8ed0[_0x3382('0x29')]);_0x38ce34['attributes']=_[_0x3382('0x2b')](_0x1b8ed0[_0x3382('0x2c')],qs['fields'](_0x5de1be['query'][_0x3382('0x2d')]));_0x38ce34[_0x3382('0x2e')]=_0x38ce34[_0x3382('0x2e')]['length']?_0x38ce34[_0x3382('0x2e')]:_0x1b8ed0[_0x3382('0x2c')];_0x38ce34[_0x3382('0x31')]=qs[_0x3382('0x32')](_0x5de1be[_0x3382('0x29')][_0x3382('0x32')]);_0x38ce34[_0x3382('0x33')]=qs[_0x3382('0x34')](_[_0x3382('0x35')](_0x5de1be[_0x3382('0x29')],_0x1b8ed0[_0x3382('0x34')]));if(_0x5de1be[_0x3382('0x29')][_0x3382('0x38')]){_0x38ce34[_0x3382('0x33')]=_['merge'](_0x38ce34[_0x3382('0x33')],{'$or':_[_0x3382('0x47')](_0x38ce34[_0x3382('0x2e')],function(_0x5eb32d){var _0x4e9441={};_0x4e9441[_0x5eb32d]={'$like':'%'+_0x5de1be['query'][_0x3382('0x38')]+'%'};return _0x4e9441;})});}_0x38ce34=_['merge']({},_0x38ce34,_0x5de1be[_0x3382('0x3f')]);return _0x3ccaeb[_0x3382('0x4c')](_0x38ce34);}})[_0x3382('0x22')](function(_0x604559){if(_0x604559){_0x2e626e=_0x604559[_0x3382('0x2f')];if(!_0x5de1be[_0x3382('0x29')][_0x3382('0x30')](_0x3382('0x4a'))){_0x38ce34[_0x3382('0x1c')]=qs['limit'](_0x5de1be['query']['limit']);_0x38ce34['offset']=qs[_0x3382('0x1a')](_0x5de1be[_0x3382('0x29')]['offset']);}return _0x3ccaeb[_0x3382('0x4c')](_0x38ce34);}})[_0x3382('0x22')](function(_0x46381f){if(_0x46381f){return _0x46381f?{'count':_0x2e626e,'rows':_0x46381f}:null;}})[_0x3382('0x22')](respondWithResult(_0x4cd2dc,null))[_0x3382('0x3c')](handleError(_0x4cd2dc,null));};exports['setTags']=function(_0x2c7c58,_0x573864,_0x37d333){if(_0x2c7c58[_0x3382('0x41')]['id']){delete _0x2c7c58['body']['id'];}return db[_0x3382('0x26')][_0x3382('0x45')]({'where':{'id':_0x2c7c58['params']['id']}})[_0x3382('0x22')](handleEntityNotFound(_0x573864,null))[_0x3382('0x22')](function(_0x17ee82){if(_0x17ee82){return _0x17ee82[_0x3382('0x4d')](_0x2c7c58[_0x3382('0x41')]['ids']||[]);}return null;})['then'](respondWithResult(_0x573864,null))[_0x3382('0x3c')](handleError(_0x573864,null));};
\ No newline at end of file
+var _0x295c=['show','params','rawAttributes','length','find','create','body','getFields','nolimit','getSubjects','findOne','DeskField','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','DeskConfiguration','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','order','sort','filters','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch'];(function(_0x1b6f32,_0x1b4424){var _0x2b1bf6=function(_0x501f9f){while(--_0x501f9f){_0x1b6f32['push'](_0x1b6f32['shift']());}};_0x2b1bf6(++_0x1b4424);}(_0x295c,0x116));var _0xc295=function(_0x49d8f2,_0x49469e){_0x49d8f2=_0x49d8f2-0x0;var _0x24083b=_0x295c[_0x49d8f2];return _0x24083b;};'use strict';var emlformat=require(_0xc295('0x0'));var rimraf=require(_0xc295('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc295('0x2'));var rp=require(_0xc295('0x3'));var moment=require('moment');var BPromise=require(_0xc295('0x4'));var Mustache=require(_0xc295('0x5'));var util=require('util');var path=require(_0xc295('0x6'));var sox=require(_0xc295('0x7'));var csv=require(_0xc295('0x8'));var ejs=require(_0xc295('0x9'));var fs=require('fs');var fs_extra=require(_0xc295('0xa'));var _=require(_0xc295('0xb'));var squel=require(_0xc295('0xc'));var crypto=require('crypto');var jsforce=require(_0xc295('0xd'));var deskjs=require(_0xc295('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc295('0xf'));var Redis=require(_0xc295('0x10'));var authService=require(_0xc295('0x11'));var qs=require(_0xc295('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc295('0x13'));var logger=require(_0xc295('0x14'))('api');var utils=require(_0xc295('0x15'));var config=require(_0xc295('0x16'));var licenseUtil=require(_0xc295('0x17'));var db=require(_0xc295('0x18'))['db'];function respondWithStatusCode(_0x281206,_0x517cc4){_0x517cc4=_0x517cc4||0xcc;return function(_0x5f40df){if(_0x5f40df){return _0x281206['sendStatus'](_0x517cc4);}return _0x281206[_0xc295('0x19')](_0x517cc4)[_0xc295('0x1a')]();};}function respondWithResult(_0x390515,_0x52170b){_0x52170b=_0x52170b||0xc8;return function(_0x1de243){if(_0x1de243){return _0x390515[_0xc295('0x19')](_0x52170b)[_0xc295('0x1b')](_0x1de243);}};}function respondWithFilteredResult(_0x41eb4a,_0x1ce4a5){return function(_0x1a45e1){if(_0x1a45e1){var _0x2f7911=typeof _0x1ce4a5[_0xc295('0x1c')]===_0xc295('0x1d')&&typeof _0x1ce4a5[_0xc295('0x1e')]===_0xc295('0x1d');var _0x186d41=_0x1a45e1['count'];var _0x40f308=_0x2f7911?0x0:_0x1ce4a5[_0xc295('0x1c')];var _0x262bf7=_0x2f7911?_0x1a45e1[_0xc295('0x1f')]:_0x1ce4a5[_0xc295('0x1c')]+_0x1ce4a5[_0xc295('0x1e')];var _0x3a30bb;if(_0x262bf7>=_0x186d41){_0x262bf7=_0x186d41;_0x3a30bb=0xc8;}else{_0x3a30bb=0xce;}_0x41eb4a[_0xc295('0x19')](_0x3a30bb);return _0x41eb4a[_0xc295('0x20')](_0xc295('0x21'),_0x40f308+'-'+_0x262bf7+'/'+_0x186d41)[_0xc295('0x1b')](_0x1a45e1);}return null;};}function patchUpdates(_0x4f9386){return function(_0x2aea9e){try{jsonpatch[_0xc295('0x22')](_0x2aea9e,_0x4f9386,!![]);}catch(_0x1d9106){return BPromise[_0xc295('0x23')](_0x1d9106);}return _0x2aea9e[_0xc295('0x24')]();};}function saveUpdates(_0x19492b,_0x47abf6){return function(_0x5d5632){if(_0x5d5632){return _0x5d5632[_0xc295('0x25')](_0x19492b)[_0xc295('0x26')](function(_0x4712c1){return _0x4712c1;});}return null;};}function removeEntity(_0x563cab,_0x27598c){return function(_0x15322d){if(_0x15322d){return _0x15322d[_0xc295('0x27')]()[_0xc295('0x26')](function(){_0x563cab[_0xc295('0x19')](0xcc)[_0xc295('0x1a')]();});}};}function handleEntityNotFound(_0x322566,_0x1a9807){return function(_0x350af5){if(!_0x350af5){_0x322566['sendStatus'](0x194);}return _0x350af5;};}function handleError(_0x4fd8dc,_0x327972){_0x327972=_0x327972||0x1f4;return function(_0x57c220){logger[_0xc295('0x28')](_0x57c220[_0xc295('0x29')]);if(_0x57c220['name']){delete _0x57c220[_0xc295('0x2a')];}_0x4fd8dc[_0xc295('0x19')](_0x327972)[_0xc295('0x2b')](_0x57c220);};}exports[_0xc295('0x2c')]=function(_0x6666cd,_0x242cae){var _0x2d04ea={},_0x3a6ed2={},_0x5467a8={'count':0x0,'rows':[]};var _0x4574d1=_[_0xc295('0x2d')](db[_0xc295('0x2e')]['rawAttributes'],function(_0xa88a47){return{'name':_0xa88a47['fieldName'],'type':_0xa88a47[_0xc295('0x2f')][_0xc295('0x30')]};});_0x3a6ed2[_0xc295('0x31')]=_[_0xc295('0x2d')](_0x4574d1,_0xc295('0x2a'));_0x3a6ed2[_0xc295('0x32')]=_[_0xc295('0x33')](_0x6666cd[_0xc295('0x32')]);_0x3a6ed2['filters']=_[_0xc295('0x34')](_0x3a6ed2['model'],_0x3a6ed2['query']);_0x2d04ea['attributes']=_['intersection'](_0x3a6ed2[_0xc295('0x31')],qs[_0xc295('0x35')](_0x6666cd[_0xc295('0x32')][_0xc295('0x35')]));_0x2d04ea[_0xc295('0x36')]=_0x2d04ea[_0xc295('0x36')]['length']?_0x2d04ea[_0xc295('0x36')]:_0x3a6ed2['model'];if(!_0x6666cd[_0xc295('0x32')][_0xc295('0x37')]('nolimit')){_0x2d04ea[_0xc295('0x1e')]=qs['limit'](_0x6666cd[_0xc295('0x32')]['limit']);_0x2d04ea[_0xc295('0x1c')]=qs['offset'](_0x6666cd[_0xc295('0x32')]['offset']);}_0x2d04ea[_0xc295('0x38')]=qs[_0xc295('0x39')](_0x6666cd['query'][_0xc295('0x39')]);_0x2d04ea['where']=qs[_0xc295('0x3a')](_[_0xc295('0x3b')](_0x6666cd[_0xc295('0x32')],_0x3a6ed2[_0xc295('0x3a')]),_0x4574d1);if(_0x6666cd[_0xc295('0x32')][_0xc295('0x3c')]){_0x2d04ea['where']=_[_0xc295('0x3d')](_0x2d04ea[_0xc295('0x3e')],{'$or':_[_0xc295('0x2d')](_0x4574d1,function(_0x2944a5){if(_0x2944a5[_0xc295('0x2f')]!==_0xc295('0x3f')){var _0x1434a2={};_0x1434a2[_0x2944a5['name']]={'$like':'%'+_0x6666cd[_0xc295('0x32')][_0xc295('0x3c')]+'%'};return _0x1434a2;}})});}_0x2d04ea=_['merge']({},_0x2d04ea,_0x6666cd[_0xc295('0x40')]);var _0x5abd55={'where':_0x2d04ea[_0xc295('0x3e')]};return db['DeskConfiguration'][_0xc295('0x1f')](_0x5abd55)[_0xc295('0x26')](function(_0x5b2843){_0x5467a8[_0xc295('0x1f')]=_0x5b2843;if(_0x6666cd['query'][_0xc295('0x41')]){_0x2d04ea[_0xc295('0x42')]=[{'all':!![]}];}return db[_0xc295('0x2e')][_0xc295('0x43')](_0x2d04ea);})['then'](function(_0xf220ac){_0x5467a8[_0xc295('0x44')]=_0xf220ac;return _0x5467a8;})[_0xc295('0x26')](respondWithFilteredResult(_0x242cae,_0x2d04ea))[_0xc295('0x45')](handleError(_0x242cae,null));};exports[_0xc295('0x46')]=function(_0x40fe8f,_0x5efdad){var _0x19db62={'raw':![],'where':{'id':_0x40fe8f[_0xc295('0x47')]['id']}},_0x3c662d={};_0x3c662d['model']=_['keys'](db['DeskConfiguration'][_0xc295('0x48')]);_0x3c662d[_0xc295('0x32')]=_[_0xc295('0x33')](_0x40fe8f[_0xc295('0x32')]);_0x3c662d[_0xc295('0x3a')]=_[_0xc295('0x34')](_0x3c662d[_0xc295('0x31')],_0x3c662d['query']);_0x19db62[_0xc295('0x36')]=_['intersection'](_0x3c662d[_0xc295('0x31')],qs[_0xc295('0x35')](_0x40fe8f[_0xc295('0x32')]['fields']));_0x19db62[_0xc295('0x36')]=_0x19db62[_0xc295('0x36')][_0xc295('0x49')]?_0x19db62['attributes']:_0x3c662d[_0xc295('0x31')];if(_0x40fe8f[_0xc295('0x32')][_0xc295('0x41')]){_0x19db62[_0xc295('0x42')]=[{'all':!![]}];}_0x19db62=_['merge']({},_0x19db62,_0x40fe8f[_0xc295('0x40')]);return db['DeskConfiguration'][_0xc295('0x4a')](_0x19db62)['then'](handleEntityNotFound(_0x5efdad,null))['then'](respondWithResult(_0x5efdad,null))['catch'](handleError(_0x5efdad,null));};exports['create']=function(_0x27cc8d,_0x3a9e42){return db['DeskConfiguration'][_0xc295('0x4b')](_0x27cc8d['body'],{})[_0xc295('0x26')](respondWithResult(_0x3a9e42,0xc9))[_0xc295('0x45')](handleError(_0x3a9e42,null));};exports['update']=function(_0x46548c,_0x2c8092){if(_0x46548c[_0xc295('0x4c')]['id']){delete _0x46548c[_0xc295('0x4c')]['id'];}return db['DeskConfiguration'][_0xc295('0x4a')]({'where':{'id':_0x46548c[_0xc295('0x47')]['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x2c8092,null))['then'](saveUpdates(_0x46548c[_0xc295('0x4c')],null))[_0xc295('0x26')](respondWithResult(_0x2c8092,null))['catch'](handleError(_0x2c8092,null));};exports[_0xc295('0x27')]=function(_0x198daf,_0x350a62){return db['DeskConfiguration'][_0xc295('0x4a')]({'where':{'id':_0x198daf[_0xc295('0x47')]['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x350a62,null))['then'](removeEntity(_0x350a62,null))['catch'](handleError(_0x350a62,null));};exports[_0xc295('0x4d')]=function(_0x2f726e,_0x205a2e,_0xa331bb){var _0x437f9a={};var _0x2e24b0={};var _0x310b9b;var _0x5a0f51;return db[_0xc295('0x2e')]['findOne']({'where':{'id':_0x2f726e[_0xc295('0x47')]['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x205a2e,null))[_0xc295('0x26')](function(_0x5c8cf6){if(_0x5c8cf6){_0x310b9b=_0x5c8cf6;_0x2e24b0[_0xc295('0x31')]=_[_0xc295('0x33')](db['DeskField'][_0xc295('0x48')]);_0x2e24b0[_0xc295('0x32')]=_[_0xc295('0x33')](_0x2f726e['query']);_0x2e24b0['filters']=_[_0xc295('0x34')](_0x2e24b0[_0xc295('0x31')],_0x2e24b0[_0xc295('0x32')]);_0x437f9a[_0xc295('0x36')]=_[_0xc295('0x34')](_0x2e24b0[_0xc295('0x31')],qs[_0xc295('0x35')](_0x2f726e['query'][_0xc295('0x35')]));_0x437f9a[_0xc295('0x36')]=_0x437f9a['attributes'][_0xc295('0x49')]?_0x437f9a[_0xc295('0x36')]:_0x2e24b0['model'];_0x437f9a[_0xc295('0x38')]=qs[_0xc295('0x39')](_0x2f726e[_0xc295('0x32')]['sort']);_0x437f9a[_0xc295('0x3e')]=qs[_0xc295('0x3a')](_[_0xc295('0x3b')](_0x2f726e[_0xc295('0x32')],_0x2e24b0['filters']));if(_0x2f726e[_0xc295('0x32')][_0xc295('0x3c')]){_0x437f9a[_0xc295('0x3e')]=_[_0xc295('0x3d')](_0x437f9a['where'],{'$or':_['map'](_0x437f9a[_0xc295('0x36')],function(_0x23e041){var _0xbc2464={};_0xbc2464[_0x23e041]={'$like':'%'+_0x2f726e['query'][_0xc295('0x3c')]+'%'};return _0xbc2464;})});}_0x437f9a=_[_0xc295('0x3d')]({},_0x437f9a,_0x2f726e[_0xc295('0x40')]);return _0x310b9b[_0xc295('0x4d')](_0x437f9a);}})['then'](function(_0x37ea90){if(_0x37ea90){_0x5a0f51=_0x37ea90['length'];if(!_0x2f726e[_0xc295('0x32')][_0xc295('0x37')](_0xc295('0x4e'))){_0x437f9a[_0xc295('0x1e')]=qs[_0xc295('0x1e')](_0x2f726e['query'][_0xc295('0x1e')]);_0x437f9a['offset']=qs[_0xc295('0x1c')](_0x2f726e[_0xc295('0x32')][_0xc295('0x1c')]);}return _0x310b9b[_0xc295('0x4d')](_0x437f9a);}})[_0xc295('0x26')](function(_0x1d0fd8){if(_0x1d0fd8){return _0x1d0fd8?{'count':_0x5a0f51,'rows':_0x1d0fd8}:null;}})[_0xc295('0x26')](respondWithResult(_0x205a2e,null))[_0xc295('0x45')](handleError(_0x205a2e,null));};exports[_0xc295('0x4f')]=function(_0x241cf8,_0x207bf3,_0x33e7ab){var _0x509af6={};var _0x4f0198={};var _0x3030a6;var _0x493cff;return db[_0xc295('0x2e')][_0xc295('0x50')]({'where':{'id':_0x241cf8['params']['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x207bf3,null))[_0xc295('0x26')](function(_0x2c5806){if(_0x2c5806){_0x3030a6=_0x2c5806;_0x4f0198[_0xc295('0x31')]=_[_0xc295('0x33')](db[_0xc295('0x51')][_0xc295('0x48')]);_0x4f0198[_0xc295('0x32')]=_[_0xc295('0x33')](_0x241cf8[_0xc295('0x32')]);_0x4f0198[_0xc295('0x3a')]=_[_0xc295('0x34')](_0x4f0198[_0xc295('0x31')],_0x4f0198[_0xc295('0x32')]);_0x509af6['attributes']=_[_0xc295('0x34')](_0x4f0198[_0xc295('0x31')],qs['fields'](_0x241cf8[_0xc295('0x32')][_0xc295('0x35')]));_0x509af6['attributes']=_0x509af6[_0xc295('0x36')][_0xc295('0x49')]?_0x509af6[_0xc295('0x36')]:_0x4f0198[_0xc295('0x31')];_0x509af6[_0xc295('0x38')]=qs[_0xc295('0x39')](_0x241cf8[_0xc295('0x32')][_0xc295('0x39')]);_0x509af6[_0xc295('0x3e')]=qs['filters'](_[_0xc295('0x3b')](_0x241cf8[_0xc295('0x32')],_0x4f0198[_0xc295('0x3a')]));if(_0x241cf8['query'][_0xc295('0x3c')]){_0x509af6[_0xc295('0x3e')]=_[_0xc295('0x3d')](_0x509af6[_0xc295('0x3e')],{'$or':_['map'](_0x509af6[_0xc295('0x36')],function(_0x5d0f8e){var _0x5c7a75={};_0x5c7a75[_0x5d0f8e]={'$like':'%'+_0x241cf8[_0xc295('0x32')][_0xc295('0x3c')]+'%'};return _0x5c7a75;})});}_0x509af6=_[_0xc295('0x3d')]({},_0x509af6,_0x241cf8[_0xc295('0x40')]);return _0x3030a6[_0xc295('0x4f')](_0x509af6);}})[_0xc295('0x26')](function(_0x1f7415){if(_0x1f7415){_0x493cff=_0x1f7415[_0xc295('0x49')];if(!_0x241cf8[_0xc295('0x32')][_0xc295('0x37')](_0xc295('0x4e'))){_0x509af6[_0xc295('0x1e')]=qs[_0xc295('0x1e')](_0x241cf8['query'][_0xc295('0x1e')]);_0x509af6[_0xc295('0x1c')]=qs[_0xc295('0x1c')](_0x241cf8['query'][_0xc295('0x1c')]);}return _0x3030a6[_0xc295('0x4f')](_0x509af6);}})['then'](function(_0x5d74a1){if(_0x5d74a1){return _0x5d74a1?{'count':_0x493cff,'rows':_0x5d74a1}:null;}})[_0xc295('0x26')](respondWithResult(_0x207bf3,null))['catch'](handleError(_0x207bf3,null));};exports[_0xc295('0x52')]=function(_0x2ba7cf,_0x32607e,_0x5aeafd){var _0x3148ed={};var _0x1567e6={};var _0x511965;var _0x1d9e49;return db[_0xc295('0x2e')][_0xc295('0x50')]({'where':{'id':_0x2ba7cf[_0xc295('0x47')]['id']}})['then'](handleEntityNotFound(_0x32607e,null))[_0xc295('0x26')](function(_0x26b373){if(_0x26b373){_0x511965=_0x26b373;_0x1567e6[_0xc295('0x31')]=_[_0xc295('0x33')](db[_0xc295('0x51')][_0xc295('0x48')]);_0x1567e6[_0xc295('0x32')]=_[_0xc295('0x33')](_0x2ba7cf[_0xc295('0x32')]);_0x1567e6[_0xc295('0x3a')]=_[_0xc295('0x34')](_0x1567e6[_0xc295('0x31')],_0x1567e6[_0xc295('0x32')]);_0x3148ed[_0xc295('0x36')]=_[_0xc295('0x34')](_0x1567e6[_0xc295('0x31')],qs['fields'](_0x2ba7cf[_0xc295('0x32')][_0xc295('0x35')]));_0x3148ed[_0xc295('0x36')]=_0x3148ed[_0xc295('0x36')]['length']?_0x3148ed[_0xc295('0x36')]:_0x1567e6[_0xc295('0x31')];_0x3148ed[_0xc295('0x38')]=qs[_0xc295('0x39')](_0x2ba7cf[_0xc295('0x32')][_0xc295('0x39')]);_0x3148ed[_0xc295('0x3e')]=qs[_0xc295('0x3a')](_['pick'](_0x2ba7cf['query'],_0x1567e6[_0xc295('0x3a')]));if(_0x2ba7cf[_0xc295('0x32')][_0xc295('0x3c')]){_0x3148ed['where']=_['merge'](_0x3148ed[_0xc295('0x3e')],{'$or':_['map'](_0x3148ed['attributes'],function(_0x132d6d){var _0x1a53ef={};_0x1a53ef[_0x132d6d]={'$like':'%'+_0x2ba7cf['query'][_0xc295('0x3c')]+'%'};return _0x1a53ef;})});}_0x3148ed=_[_0xc295('0x3d')]({},_0x3148ed,_0x2ba7cf['options']);return _0x511965[_0xc295('0x52')](_0x3148ed);}})[_0xc295('0x26')](function(_0x32e6ee){if(_0x32e6ee){_0x1d9e49=_0x32e6ee[_0xc295('0x49')];if(!_0x2ba7cf['query']['hasOwnProperty'](_0xc295('0x4e'))){_0x3148ed[_0xc295('0x1e')]=qs[_0xc295('0x1e')](_0x2ba7cf[_0xc295('0x32')][_0xc295('0x1e')]);_0x3148ed['offset']=qs[_0xc295('0x1c')](_0x2ba7cf[_0xc295('0x32')][_0xc295('0x1c')]);}return _0x511965[_0xc295('0x52')](_0x3148ed);}})[_0xc295('0x26')](function(_0x21206f){if(_0x21206f){return _0x21206f?{'count':_0x1d9e49,'rows':_0x21206f}:null;}})[_0xc295('0x26')](respondWithResult(_0x32607e,null))[_0xc295('0x45')](handleError(_0x32607e,null));};exports[_0xc295('0x53')]=function(_0x519c99,_0x486ac8,_0x1a90f8){var _0x3acfd6={};var _0x257bdc={};var _0x4c5c13;var _0x5c9e5d;return db[_0xc295('0x2e')][_0xc295('0x50')]({'where':{'id':_0x519c99[_0xc295('0x47')]['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x486ac8,null))[_0xc295('0x26')](function(_0x49271c){if(_0x49271c){_0x4c5c13=_0x49271c;_0x257bdc[_0xc295('0x31')]=_[_0xc295('0x33')](db[_0xc295('0x54')][_0xc295('0x48')]);_0x257bdc[_0xc295('0x32')]=_['keys'](_0x519c99[_0xc295('0x32')]);_0x257bdc['filters']=_[_0xc295('0x34')](_0x257bdc[_0xc295('0x31')],_0x257bdc['query']);_0x3acfd6[_0xc295('0x36')]=_[_0xc295('0x34')](_0x257bdc[_0xc295('0x31')],qs[_0xc295('0x35')](_0x519c99[_0xc295('0x32')][_0xc295('0x35')]));_0x3acfd6[_0xc295('0x36')]=_0x3acfd6[_0xc295('0x36')][_0xc295('0x49')]?_0x3acfd6[_0xc295('0x36')]:_0x257bdc['model'];_0x3acfd6[_0xc295('0x38')]=qs[_0xc295('0x39')](_0x519c99[_0xc295('0x32')][_0xc295('0x39')]);_0x3acfd6[_0xc295('0x3e')]=qs[_0xc295('0x3a')](_[_0xc295('0x3b')](_0x519c99[_0xc295('0x32')],_0x257bdc['filters']));if(_0x519c99[_0xc295('0x32')]['filter']){_0x3acfd6[_0xc295('0x3e')]=_[_0xc295('0x3d')](_0x3acfd6[_0xc295('0x3e')],{'$or':_[_0xc295('0x2d')](_0x3acfd6['attributes'],function(_0x2ad589){var _0x4f8fa9={};_0x4f8fa9[_0x2ad589]={'$like':'%'+_0x519c99[_0xc295('0x32')][_0xc295('0x3c')]+'%'};return _0x4f8fa9;})});}_0x3acfd6=_[_0xc295('0x3d')]({},_0x3acfd6,_0x519c99['options']);return _0x4c5c13[_0xc295('0x53')](_0x3acfd6);}})['then'](function(_0x10013d){if(_0x10013d){_0x5c9e5d=_0x10013d[_0xc295('0x49')];if(!_0x519c99[_0xc295('0x32')][_0xc295('0x37')]('nolimit')){_0x3acfd6['limit']=qs['limit'](_0x519c99[_0xc295('0x32')][_0xc295('0x1e')]);_0x3acfd6['offset']=qs[_0xc295('0x1c')](_0x519c99[_0xc295('0x32')][_0xc295('0x1c')]);}return _0x4c5c13[_0xc295('0x53')](_0x3acfd6);}})[_0xc295('0x26')](function(_0x1184ab){if(_0x1184ab){return _0x1184ab?{'count':_0x5c9e5d,'rows':_0x1184ab}:null;}})['then'](respondWithResult(_0x486ac8,null))[_0xc295('0x45')](handleError(_0x486ac8,null));};exports['setTags']=function(_0x30a08c,_0x50545e,_0xbc5f18){if(_0x30a08c['body']['id']){delete _0x30a08c['body']['id'];}return db['DeskConfiguration'][_0xc295('0x50')]({'where':{'id':_0x30a08c[_0xc295('0x47')]['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x50545e,null))[_0xc295('0x26')](function(_0x1f8e61){if(_0x1f8e61){return _0x1f8e61[_0xc295('0x55')](_0x30a08c['body'][_0xc295('0x56')]||[]);}return null;})[_0xc295('0x26')](respondWithResult(_0x50545e,null))[_0xc295('0x45')](handleError(_0x50545e,null));};
\ No newline at end of file
index b8c4845..fb6d09a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45d3=['exports','define','DeskConfiguration','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes'];(function(_0x25f6d5,_0x2ae5ef){var _0x330bbd=function(_0x7c98b9){while(--_0x7c98b9){_0x25f6d5['push'](_0x25f6d5['shift']());}};_0x330bbd(++_0x2ae5ef);}(_0x45d3,0x148));var _0x345d=function(_0x3c607f,_0x2d4ff2){_0x3c607f=_0x3c607f-0x0;var _0x1b4e2a=_0x45d3[_0x3c607f];return _0x1b4e2a;};'use strict';var _=require('lodash');var util=require(_0x345d('0x0'));var logger=require(_0x345d('0x1'))(_0x345d('0x2'));var moment=require(_0x345d('0x3'));var BPromise=require(_0x345d('0x4'));var rp=require(_0x345d('0x5'));var fs=require('fs');var path=require(_0x345d('0x6'));var rimraf=require(_0x345d('0x7'));var config=require(_0x345d('0x8'));var attributes=require(_0x345d('0x9'));module[_0x345d('0xa')]=function(_0x40f2ab,_0x459be2){return _0x40f2ab[_0x345d('0xb')](_0x345d('0xc'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x87ee=['DeskConfiguration','int_desk_configurations','lodash','moment','bluebird','request-promise','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','define'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x87ee,0x120));var _0xe87e=function(_0x256b72,_0x340985){_0x256b72=_0x256b72-0x0;var _0x2183e3=_0x87ee[_0x256b72];return _0x2183e3;};'use strict';var _=require(_0xe87e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xe87e('0x1'));var BPromise=require(_0xe87e('0x2'));var rp=require(_0xe87e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe87e('0x4'));var config=require(_0xe87e('0x5'));var attributes=require(_0xe87e('0x6'));module[_0xe87e('0x7')]=function(_0x182f26,_0x434657){return _0x182f26[_0xe87e('0x8')](_0xe87e('0x9'),attributes,{'tableName':_0xe87e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2ad66df..377922a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf567=['error','code','message','result','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x31b1e8,_0x218128){var _0x2203ae=function(_0x142bd9){while(--_0x142bd9){_0x31b1e8['push'](_0x31b1e8['shift']());}};_0x2203ae(++_0x218128);}(_0xf567,0x118));var _0x7f56=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf567[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x7f56('0x0'));var util=require(_0x7f56('0x1'));var moment=require(_0x7f56('0x2'));var BPromise=require('bluebird');var rs=require(_0x7f56('0x3'));var fs=require('fs');var Redis=require(_0x7f56('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7f56('0x5'));var logger=require(_0x7f56('0x6'))(_0x7f56('0x7'));var config=require(_0x7f56('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7f56('0x9')][_0x7f56('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1215e3,_0x52959a,_0x3f7ad5){return new BPromise(function(_0x2eaed8,_0x22d94e){return client[_0x7f56('0xb')](_0x1215e3,_0x3f7ad5)[_0x7f56('0xc')](function(_0x3ad7d5){logger[_0x7f56('0xd')](_0x7f56('0xe'),_0x52959a,_0x7f56('0xf'));logger[_0x7f56('0x10')](_0x7f56('0x11'),_0x52959a,_0x7f56('0xf'),JSON[_0x7f56('0x12')](_0x3ad7d5));if(_0x3ad7d5[_0x7f56('0x13')]){if(_0x3ad7d5[_0x7f56('0x13')][_0x7f56('0x14')]===0x1f4){logger[_0x7f56('0x13')](_0x7f56('0xe'),_0x52959a,_0x3ad7d5[_0x7f56('0x13')][_0x7f56('0x15')]);return _0x22d94e(_0x3ad7d5[_0x7f56('0x13')][_0x7f56('0x15')]);}logger['error'](_0x7f56('0xe'),_0x52959a,_0x3ad7d5[_0x7f56('0x13')][_0x7f56('0x15')]);return _0x2eaed8(_0x3ad7d5['error'][_0x7f56('0x15')]);}else{logger[_0x7f56('0xd')]('DeskConfiguration,\x20%s,\x20%s',_0x52959a,_0x7f56('0xf'));_0x2eaed8(_0x3ad7d5[_0x7f56('0x16')]['message']);}})['catch'](function(_0x1dee75){logger['error'](_0x7f56('0xe'),_0x52959a,_0x1dee75);_0x22d94e(_0x1dee75);});});}
\ No newline at end of file
+var _0xbac6=['stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x263d9f,_0x3585d1){var _0x1247fc=function(_0x4d7b6d){while(--_0x4d7b6d){_0x263d9f['push'](_0x263d9f['shift']());}};_0x1247fc(++_0x3585d1);}(_0xbac6,0x1ec));var _0x6bac=function(_0x136d26,_0x21e897){_0x136d26=_0x136d26-0x0;var _0x513067=_0xbac6[_0x136d26];return _0x513067;};'use strict';var _=require(_0x6bac('0x0'));var util=require(_0x6bac('0x1'));var moment=require(_0x6bac('0x2'));var BPromise=require('bluebird');var rs=require(_0x6bac('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6bac('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6bac('0x5'))(_0x6bac('0x6'));var config=require('../../config/environment');var jayson=require(_0x6bac('0x7'));var client=jayson['client'][_0x6bac('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x51c942,_0x438bcb,_0x359216){return new BPromise(function(_0x4add39,_0x4ba90b){return client['request'](_0x51c942,_0x359216)['then'](function(_0x4e65ce){logger[_0x6bac('0x9')](_0x6bac('0xa'),_0x438bcb,'request\x20sent');logger['debug']('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x438bcb,_0x6bac('0xb'),JSON[_0x6bac('0xc')](_0x4e65ce));if(_0x4e65ce[_0x6bac('0xd')]){if(_0x4e65ce[_0x6bac('0xd')][_0x6bac('0xe')]===0x1f4){logger['error'](_0x6bac('0xa'),_0x438bcb,_0x4e65ce[_0x6bac('0xd')]['message']);return _0x4ba90b(_0x4e65ce[_0x6bac('0xd')]['message']);}logger['error'](_0x6bac('0xa'),_0x438bcb,_0x4e65ce[_0x6bac('0xd')][_0x6bac('0xf')]);return _0x4add39(_0x4e65ce['error'][_0x6bac('0xf')]);}else{logger[_0x6bac('0x9')]('DeskConfiguration,\x20%s,\x20%s',_0x438bcb,'request\x20sent');_0x4add39(_0x4e65ce[_0x6bac('0x10')][_0x6bac('0xf')]);}})[_0x6bac('0x11')](function(_0x5dc6e5){logger[_0x6bac('0xd')](_0x6bac('0xa'),_0x438bcb,_0x5dc6e5);_0x4ba90b(_0x5dc6e5);});});}
\ No newline at end of file
index 14a7130..0e724ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd19=['../../config/environment','./intDeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0xb6bd60,_0x48e4a3){var _0x36d0dd=function(_0xc1356a){while(--_0xc1356a){_0xb6bd60['push'](_0xb6bd60['shift']());}};_0x36d0dd(++_0x48e4a3);}(_0xbd19,0x111));var _0x9bd1=function(_0x82129b,_0x484ae9){_0x82129b=_0x82129b-0x0;var _0x2ae5dc=_0xbd19[_0x82129b];return _0x2ae5dc;};'use strict';var multer=require(_0x9bd1('0x0'));var util=require(_0x9bd1('0x1'));var path=require(_0x9bd1('0x2'));var timeout=require('connect-timeout');var express=require(_0x9bd1('0x3'));var router=express[_0x9bd1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9bd1('0x5'));var interaction=require(_0x9bd1('0x6'));var config=require(_0x9bd1('0x7'));var controller=require(_0x9bd1('0x8'));router[_0x9bd1('0x9')]('/',auth[_0x9bd1('0xa')](),controller[_0x9bd1('0xb')]);router[_0x9bd1('0x9')](_0x9bd1('0xc'),auth[_0x9bd1('0xa')](),controller[_0x9bd1('0xd')]);router[_0x9bd1('0xe')]('/',auth[_0x9bd1('0xa')](),controller[_0x9bd1('0xf')]);router[_0x9bd1('0x10')]('/:id',auth[_0x9bd1('0xa')](),controller[_0x9bd1('0x11')]);router[_0x9bd1('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x9bd1('0x13')]=router;
\ No newline at end of file
+var _0x5098=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','/:id','show','create','put','delete','exports','multer','path'];(function(_0x57f79e,_0x19db41){var _0x4ea17f=function(_0x487ee2){while(--_0x487ee2){_0x57f79e['push'](_0x57f79e['shift']());}};_0x4ea17f(++_0x19db41);}(_0x5098,0x6a));var _0x8509=function(_0x24af16,_0x25545e){_0x24af16=_0x24af16-0x0;var _0xc00e4e=_0x5098[_0x24af16];return _0xc00e4e;};'use strict';var multer=require(_0x8509('0x0'));var util=require('util');var path=require(_0x8509('0x1'));var timeout=require(_0x8509('0x2'));var express=require(_0x8509('0x3'));var router=express[_0x8509('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8509('0x5'));var interaction=require(_0x8509('0x6'));var config=require(_0x8509('0x7'));var controller=require(_0x8509('0x8'));router[_0x8509('0x9')]('/',auth[_0x8509('0xa')](),controller[_0x8509('0xb')]);router[_0x8509('0x9')](_0x8509('0xc'),auth['isAuthenticated'](),controller[_0x8509('0xd')]);router['post']('/',auth[_0x8509('0xa')](),controller[_0x8509('0xe')]);router[_0x8509('0xf')]('/:id',auth[_0x8509('0xa')](),controller['update']);router[_0x8509('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x8509('0x11')]=router;
\ No newline at end of file
index d5545df..f3ed1bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea8=['sequelize','exports','ENUM','customVariable','keyValue','picklist','string','STRING','variable','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4ea8,0xa0));var _0x84ea=function(_0x4e00f9,_0x5d0bbb){_0x4e00f9=_0x4e00f9-0x0;var _0x58c89e=_0x4ea8[_0x4e00f9];return _0x58c89e;};'use strict';var Sequelize=require(_0x84ea('0x0'));module[_0x84ea('0x1')]={'type':{'type':Sequelize[_0x84ea('0x2')]('string','variable',_0x84ea('0x3'),_0x84ea('0x4'),_0x84ea('0x5')),'defaultValue':_0x84ea('0x6')},'content':{'type':Sequelize[_0x84ea('0x7')]},'key':{'type':Sequelize[_0x84ea('0x7')]},'keyType':{'type':Sequelize[_0x84ea('0x2')]('string',_0x84ea('0x8'),_0x84ea('0x3'))},'keyContent':{'type':Sequelize[_0x84ea('0x7')]},'idField':{'type':Sequelize[_0x84ea('0x7')]},'nameField':{'type':Sequelize[_0x84ea('0x7')]},'customField':{'type':Sequelize[_0x84ea('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x84ea('0x7')]}};
\ No newline at end of file
+var _0x4bf5=['picklist','STRING','BOOLEAN','sequelize','ENUM','string','variable','customVariable'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4bf5,0x1db));var _0x54bf=function(_0x5c7773,_0x2ef8c2){_0x5c7773=_0x5c7773-0x0;var _0x536bf0=_0x4bf5[_0x5c7773];return _0x536bf0;};'use strict';var Sequelize=require(_0x54bf('0x0'));module['exports']={'type':{'type':Sequelize[_0x54bf('0x1')](_0x54bf('0x2'),_0x54bf('0x3'),_0x54bf('0x4'),'keyValue',_0x54bf('0x5')),'defaultValue':_0x54bf('0x2')},'content':{'type':Sequelize[_0x54bf('0x6')]},'key':{'type':Sequelize[_0x54bf('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0x54bf('0x3'),_0x54bf('0x4'))},'keyContent':{'type':Sequelize[_0x54bf('0x6')]},'idField':{'type':Sequelize[_0x54bf('0x6')]},'nameField':{'type':Sequelize[_0x54bf('0x6')]},'customField':{'type':Sequelize[_0x54bf('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ce6708b..464291f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8658=['sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','map','rawAttributes','type','key','keys','filters','query','intersection','model','fields','attributes','order','sort','pick','filter','where','merge','options','DeskField','includeAll','include','rows','catch','params','length','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x1a2057,_0x44c5ec){var _0xd72118=function(_0x5ce644){while(--_0x5ce644){_0x1a2057['push'](_0x1a2057['shift']());}};_0xd72118(++_0x44c5ec);}(_0x8658,0x1d3));var _0x8865=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8658[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x8865('0x0'));var rimraf=require(_0x8865('0x1'));var zipdir=require(_0x8865('0x2'));var jsonpatch=require(_0x8865('0x3'));var rp=require(_0x8865('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8865('0x5'));var util=require('util');var path=require('path');var sox=require(_0x8865('0x6'));var csv=require(_0x8865('0x7'));var ejs=require(_0x8865('0x8'));var fs=require('fs');var fs_extra=require(_0x8865('0x9'));var _=require(_0x8865('0xa'));var squel=require(_0x8865('0xb'));var crypto=require(_0x8865('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8865('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8865('0xe'));var Papa=require('papaparse');var Redis=require(_0x8865('0xf'));var authService=require(_0x8865('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8865('0x11'));var hardwareService=require(_0x8865('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x8865('0x13'));var config=require(_0x8865('0x14'));var licenseUtil=require(_0x8865('0x15'));var db=require(_0x8865('0x16'))['db'];function respondWithStatusCode(_0x5858ce,_0x363729){_0x363729=_0x363729||0xcc;return function(_0x132386){if(_0x132386){return _0x5858ce[_0x8865('0x17')](_0x363729);}return _0x5858ce[_0x8865('0x18')](_0x363729)[_0x8865('0x19')]();};}function respondWithResult(_0x5aacac,_0x2c3502){_0x2c3502=_0x2c3502||0xc8;return function(_0x50e5e8){if(_0x50e5e8){return _0x5aacac[_0x8865('0x18')](_0x2c3502)[_0x8865('0x1a')](_0x50e5e8);}};}function respondWithFilteredResult(_0x1a2dee,_0x5367a6){return function(_0x3eb5f9){if(_0x3eb5f9){var _0x55edca=typeof _0x5367a6[_0x8865('0x1b')]===_0x8865('0x1c')&&typeof _0x5367a6['limit']===_0x8865('0x1c');var _0x9f4f33=_0x3eb5f9[_0x8865('0x1d')];var _0x4f6310=_0x55edca?0x0:_0x5367a6[_0x8865('0x1b')];var _0x1409c0=_0x55edca?_0x3eb5f9[_0x8865('0x1d')]:_0x5367a6[_0x8865('0x1b')]+_0x5367a6[_0x8865('0x1e')];var _0x24b431;if(_0x1409c0>=_0x9f4f33){_0x1409c0=_0x9f4f33;_0x24b431=0xc8;}else{_0x24b431=0xce;}_0x1a2dee[_0x8865('0x18')](_0x24b431);return _0x1a2dee[_0x8865('0x1f')](_0x8865('0x20'),_0x4f6310+'-'+_0x1409c0+'/'+_0x9f4f33)[_0x8865('0x1a')](_0x3eb5f9);}return null;};}function patchUpdates(_0x199ca7){return function(_0x4f9773){try{jsonpatch[_0x8865('0x21')](_0x4f9773,_0x199ca7,!![]);}catch(_0x232e21){return BPromise['reject'](_0x232e21);}return _0x4f9773[_0x8865('0x22')]();};}function saveUpdates(_0x19594f,_0x5d2f14){return function(_0x31b1b1){if(_0x31b1b1){return _0x31b1b1['update'](_0x19594f)[_0x8865('0x23')](function(_0x1601e0){return _0x1601e0;});}return null;};}function removeEntity(_0x6927b,_0x304a23){return function(_0x3b39fa){if(_0x3b39fa){return _0x3b39fa[_0x8865('0x24')]()[_0x8865('0x23')](function(){_0x6927b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4153ca,_0x461392){return function(_0x1f4b4e){if(!_0x1f4b4e){_0x4153ca['sendStatus'](0x194);}return _0x1f4b4e;};}function handleError(_0x4ee787,_0x4df452){_0x4df452=_0x4df452||0x1f4;return function(_0x40d674){logger[_0x8865('0x25')](_0x40d674[_0x8865('0x26')]);if(_0x40d674['name']){delete _0x40d674[_0x8865('0x27')];}_0x4ee787[_0x8865('0x18')](_0x4df452)[_0x8865('0x28')](_0x40d674);};}exports[_0x8865('0x29')]=function(_0x131fe6,_0x258d98){var _0x112e3c={},_0x143bc3={},_0x3c5d62={'count':0x0,'rows':[]};var _0x5cac52=_[_0x8865('0x2a')](db['DeskField'][_0x8865('0x2b')],function(_0x1e4998){return{'name':_0x1e4998['fieldName'],'type':_0x1e4998[_0x8865('0x2c')][_0x8865('0x2d')]};});_0x143bc3['model']=_['map'](_0x5cac52,'name');_0x143bc3['query']=_[_0x8865('0x2e')](_0x131fe6['query']);_0x143bc3[_0x8865('0x2f')]=_['intersection'](_0x143bc3['model'],_0x143bc3[_0x8865('0x30')]);_0x112e3c['attributes']=_[_0x8865('0x31')](_0x143bc3[_0x8865('0x32')],qs[_0x8865('0x33')](_0x131fe6[_0x8865('0x30')][_0x8865('0x33')]));_0x112e3c['attributes']=_0x112e3c[_0x8865('0x34')]['length']?_0x112e3c[_0x8865('0x34')]:_0x143bc3[_0x8865('0x32')];if(!_0x131fe6[_0x8865('0x30')]['hasOwnProperty']('nolimit')){_0x112e3c[_0x8865('0x1e')]=qs[_0x8865('0x1e')](_0x131fe6['query'][_0x8865('0x1e')]);_0x112e3c[_0x8865('0x1b')]=qs[_0x8865('0x1b')](_0x131fe6['query'][_0x8865('0x1b')]);}_0x112e3c[_0x8865('0x35')]=qs[_0x8865('0x36')](_0x131fe6['query']['sort']);_0x112e3c['where']=qs[_0x8865('0x2f')](_[_0x8865('0x37')](_0x131fe6[_0x8865('0x30')],_0x143bc3[_0x8865('0x2f')]),_0x5cac52);if(_0x131fe6['query'][_0x8865('0x38')]){_0x112e3c[_0x8865('0x39')]=_[_0x8865('0x3a')](_0x112e3c[_0x8865('0x39')],{'$or':_['map'](_0x5cac52,function(_0x58fa4a){if(_0x58fa4a['type']!=='VIRTUAL'){var _0x3a8057={};_0x3a8057[_0x58fa4a['name']]={'$like':'%'+_0x131fe6[_0x8865('0x30')][_0x8865('0x38')]+'%'};return _0x3a8057;}})});}_0x112e3c=_[_0x8865('0x3a')]({},_0x112e3c,_0x131fe6[_0x8865('0x3b')]);var _0x12f465={'where':_0x112e3c[_0x8865('0x39')]};return db[_0x8865('0x3c')][_0x8865('0x1d')](_0x12f465)[_0x8865('0x23')](function(_0x1bbf8d){_0x3c5d62['count']=_0x1bbf8d;if(_0x131fe6[_0x8865('0x30')][_0x8865('0x3d')]){_0x112e3c[_0x8865('0x3e')]=[{'all':!![]}];}return db['DeskField']['findAll'](_0x112e3c);})[_0x8865('0x23')](function(_0x5d8c7b){_0x3c5d62[_0x8865('0x3f')]=_0x5d8c7b;return _0x3c5d62;})[_0x8865('0x23')](respondWithFilteredResult(_0x258d98,_0x112e3c))[_0x8865('0x40')](handleError(_0x258d98,null));};exports['show']=function(_0x86b557,_0x90749c){var _0x9fd95={'raw':!![],'where':{'id':_0x86b557[_0x8865('0x41')]['id']}},_0x186948={};_0x186948[_0x8865('0x32')]=_['keys'](db[_0x8865('0x3c')][_0x8865('0x2b')]);_0x186948[_0x8865('0x30')]=_['keys'](_0x86b557['query']);_0x186948[_0x8865('0x2f')]=_['intersection'](_0x186948['model'],_0x186948['query']);_0x9fd95[_0x8865('0x34')]=_[_0x8865('0x31')](_0x186948[_0x8865('0x32')],qs[_0x8865('0x33')](_0x86b557[_0x8865('0x30')][_0x8865('0x33')]));_0x9fd95[_0x8865('0x34')]=_0x9fd95['attributes'][_0x8865('0x42')]?_0x9fd95[_0x8865('0x34')]:_0x186948[_0x8865('0x32')];if(_0x86b557[_0x8865('0x30')][_0x8865('0x3d')]){_0x9fd95[_0x8865('0x3e')]=[{'all':!![]}];}_0x9fd95=_[_0x8865('0x3a')]({},_0x9fd95,_0x86b557[_0x8865('0x3b')]);return db[_0x8865('0x3c')]['find'](_0x9fd95)[_0x8865('0x23')](handleEntityNotFound(_0x90749c,null))[_0x8865('0x23')](respondWithResult(_0x90749c,null))['catch'](handleError(_0x90749c,null));};exports[_0x8865('0x43')]=function(_0x47540c,_0x18aa59){return db['DeskField']['create'](_0x47540c[_0x8865('0x44')],{})[_0x8865('0x23')](respondWithResult(_0x18aa59,0xc9))[_0x8865('0x40')](handleError(_0x18aa59,null));};exports['update']=function(_0x276c51,_0x1053a5){if(_0x276c51[_0x8865('0x44')]['id']){delete _0x276c51[_0x8865('0x44')]['id'];}return db['DeskField'][_0x8865('0x45')]({'where':{'id':_0x276c51[_0x8865('0x41')]['id']}})[_0x8865('0x23')](handleEntityNotFound(_0x1053a5,null))[_0x8865('0x23')](saveUpdates(_0x276c51[_0x8865('0x44')],null))['then'](respondWithResult(_0x1053a5,null))[_0x8865('0x40')](handleError(_0x1053a5,null));};exports['destroy']=function(_0x3cb558,_0x1b1800){return db[_0x8865('0x3c')][_0x8865('0x45')]({'where':{'id':_0x3cb558['params']['id']}})[_0x8865('0x23')](handleEntityNotFound(_0x1b1800,null))['then'](removeEntity(_0x1b1800,null))[_0x8865('0x40')](handleError(_0x1b1800,null));};
\ No newline at end of file
+var _0x01db=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','end','sendStatus','error','name','index','map','DeskField','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','count','includeAll','findAll','rows','catch','show','params','rawAttributes','include','options','create','body','find','destroy','eml-format','fast-json-patch','request-promise','moment','mustache','sox'];(function(_0x3ef509,_0x46d9ca){var _0x5e1aed=function(_0x115b29){while(--_0x115b29){_0x3ef509['push'](_0x3ef509['shift']());}};_0x5e1aed(++_0x46d9ca);}(_0x01db,0x171));var _0xb01d=function(_0x348449,_0x3c7c58){_0x348449=_0x348449-0x0;var _0x11f11f=_0x01db[_0x348449];return _0x11f11f;};'use strict';var emlformat=require(_0xb01d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb01d('0x1'));var rp=require(_0xb01d('0x2'));var moment=require(_0xb01d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb01d('0x4'));var util=require('util');var path=require('path');var sox=require(_0xb01d('0x5'));var csv=require(_0xb01d('0x6'));var ejs=require(_0xb01d('0x7'));var fs=require('fs');var fs_extra=require(_0xb01d('0x8'));var _=require(_0xb01d('0x9'));var squel=require(_0xb01d('0xa'));var crypto=require(_0xb01d('0xb'));var jsforce=require(_0xb01d('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb01d('0xd'));var Papa=require(_0xb01d('0xe'));var Redis=require(_0xb01d('0xf'));var authService=require(_0xb01d('0x10'));var qs=require(_0xb01d('0x11'));var as=require(_0xb01d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb01d('0x13'));var utils=require(_0xb01d('0x14'));var config=require(_0xb01d('0x15'));var licenseUtil=require(_0xb01d('0x16'));var db=require(_0xb01d('0x17'))['db'];function respondWithStatusCode(_0x447479,_0xbcc293){_0xbcc293=_0xbcc293||0xcc;return function(_0x48b905){if(_0x48b905){return _0x447479['sendStatus'](_0xbcc293);}return _0x447479[_0xb01d('0x18')](_0xbcc293)['end']();};}function respondWithResult(_0x246537,_0x2e1ec7){_0x2e1ec7=_0x2e1ec7||0xc8;return function(_0x4a7641){if(_0x4a7641){return _0x246537[_0xb01d('0x18')](_0x2e1ec7)[_0xb01d('0x19')](_0x4a7641);}};}function respondWithFilteredResult(_0x286c13,_0x219327){return function(_0x515789){if(_0x515789){var _0x135604=typeof _0x219327['offset']===_0xb01d('0x1a')&&typeof _0x219327[_0xb01d('0x1b')]===_0xb01d('0x1a');var _0x2009a2=_0x515789['count'];var _0xe47874=_0x135604?0x0:_0x219327[_0xb01d('0x1c')];var _0x39eaaf=_0x135604?_0x515789['count']:_0x219327[_0xb01d('0x1c')]+_0x219327['limit'];var _0x42961b;if(_0x39eaaf>=_0x2009a2){_0x39eaaf=_0x2009a2;_0x42961b=0xc8;}else{_0x42961b=0xce;}_0x286c13[_0xb01d('0x18')](_0x42961b);return _0x286c13[_0xb01d('0x1d')](_0xb01d('0x1e'),_0xe47874+'-'+_0x39eaaf+'/'+_0x2009a2)[_0xb01d('0x19')](_0x515789);}return null;};}function patchUpdates(_0x4d517e){return function(_0x2528ac){try{jsonpatch[_0xb01d('0x1f')](_0x2528ac,_0x4d517e,!![]);}catch(_0x149b50){return BPromise[_0xb01d('0x20')](_0x149b50);}return _0x2528ac[_0xb01d('0x21')]();};}function saveUpdates(_0x7de0a2,_0x28f643){return function(_0x42064d){if(_0x42064d){return _0x42064d[_0xb01d('0x22')](_0x7de0a2)[_0xb01d('0x23')](function(_0x1151ea){return _0x1151ea;});}return null;};}function removeEntity(_0x19ef37,_0x515d52){return function(_0x446824){if(_0x446824){return _0x446824['destroy']()[_0xb01d('0x23')](function(){_0x19ef37[_0xb01d('0x18')](0xcc)[_0xb01d('0x24')]();});}};}function handleEntityNotFound(_0x3ce3f8,_0xf92ae7){return function(_0x1d8f04){if(!_0x1d8f04){_0x3ce3f8[_0xb01d('0x25')](0x194);}return _0x1d8f04;};}function handleError(_0x1dcbcd,_0xe9e66e){_0xe9e66e=_0xe9e66e||0x1f4;return function(_0x1236c2){logger[_0xb01d('0x26')](_0x1236c2['stack']);if(_0x1236c2[_0xb01d('0x27')]){delete _0x1236c2[_0xb01d('0x27')];}_0x1dcbcd[_0xb01d('0x18')](_0xe9e66e)['send'](_0x1236c2);};}exports[_0xb01d('0x28')]=function(_0x1bd8d2,_0x1659fa){var _0x58b452={},_0x29b32c={},_0x5007d1={'count':0x0,'rows':[]};var _0x13345a=_[_0xb01d('0x29')](db[_0xb01d('0x2a')]['rawAttributes'],function(_0x2f3046){return{'name':_0x2f3046[_0xb01d('0x2b')],'type':_0x2f3046[_0xb01d('0x2c')][_0xb01d('0x2d')]};});_0x29b32c[_0xb01d('0x2e')]=_[_0xb01d('0x29')](_0x13345a,'name');_0x29b32c[_0xb01d('0x2f')]=_[_0xb01d('0x30')](_0x1bd8d2[_0xb01d('0x2f')]);_0x29b32c['filters']=_[_0xb01d('0x31')](_0x29b32c['model'],_0x29b32c['query']);_0x58b452[_0xb01d('0x32')]=_[_0xb01d('0x31')](_0x29b32c['model'],qs['fields'](_0x1bd8d2[_0xb01d('0x2f')][_0xb01d('0x33')]));_0x58b452[_0xb01d('0x32')]=_0x58b452[_0xb01d('0x32')][_0xb01d('0x34')]?_0x58b452[_0xb01d('0x32')]:_0x29b32c[_0xb01d('0x2e')];if(!_0x1bd8d2[_0xb01d('0x2f')][_0xb01d('0x35')]('nolimit')){_0x58b452[_0xb01d('0x1b')]=qs[_0xb01d('0x1b')](_0x1bd8d2[_0xb01d('0x2f')][_0xb01d('0x1b')]);_0x58b452['offset']=qs[_0xb01d('0x1c')](_0x1bd8d2['query'][_0xb01d('0x1c')]);}_0x58b452[_0xb01d('0x36')]=qs[_0xb01d('0x37')](_0x1bd8d2[_0xb01d('0x2f')]['sort']);_0x58b452[_0xb01d('0x38')]=qs[_0xb01d('0x39')](_[_0xb01d('0x3a')](_0x1bd8d2[_0xb01d('0x2f')],_0x29b32c[_0xb01d('0x39')]),_0x13345a);if(_0x1bd8d2['query'][_0xb01d('0x3b')]){_0x58b452[_0xb01d('0x38')]=_[_0xb01d('0x3c')](_0x58b452[_0xb01d('0x38')],{'$or':_[_0xb01d('0x29')](_0x13345a,function(_0x25c283){if(_0x25c283[_0xb01d('0x2c')]!=='VIRTUAL'){var _0x4b93f0={};_0x4b93f0[_0x25c283[_0xb01d('0x27')]]={'$like':'%'+_0x1bd8d2['query'][_0xb01d('0x3b')]+'%'};return _0x4b93f0;}})});}_0x58b452=_[_0xb01d('0x3c')]({},_0x58b452,_0x1bd8d2['options']);var _0x847853={'where':_0x58b452[_0xb01d('0x38')]};return db[_0xb01d('0x2a')][_0xb01d('0x3d')](_0x847853)['then'](function(_0x459f4a){_0x5007d1[_0xb01d('0x3d')]=_0x459f4a;if(_0x1bd8d2['query'][_0xb01d('0x3e')]){_0x58b452['include']=[{'all':!![]}];}return db[_0xb01d('0x2a')][_0xb01d('0x3f')](_0x58b452);})[_0xb01d('0x23')](function(_0x59023b){_0x5007d1[_0xb01d('0x40')]=_0x59023b;return _0x5007d1;})['then'](respondWithFilteredResult(_0x1659fa,_0x58b452))[_0xb01d('0x41')](handleError(_0x1659fa,null));};exports[_0xb01d('0x42')]=function(_0x2d29ad,_0x2f582f){var _0x5087cb={'raw':!![],'where':{'id':_0x2d29ad[_0xb01d('0x43')]['id']}},_0x502880={};_0x502880[_0xb01d('0x2e')]=_[_0xb01d('0x30')](db[_0xb01d('0x2a')][_0xb01d('0x44')]);_0x502880[_0xb01d('0x2f')]=_[_0xb01d('0x30')](_0x2d29ad[_0xb01d('0x2f')]);_0x502880[_0xb01d('0x39')]=_['intersection'](_0x502880['model'],_0x502880['query']);_0x5087cb[_0xb01d('0x32')]=_[_0xb01d('0x31')](_0x502880['model'],qs[_0xb01d('0x33')](_0x2d29ad['query']['fields']));_0x5087cb[_0xb01d('0x32')]=_0x5087cb[_0xb01d('0x32')]['length']?_0x5087cb[_0xb01d('0x32')]:_0x502880[_0xb01d('0x2e')];if(_0x2d29ad[_0xb01d('0x2f')][_0xb01d('0x3e')]){_0x5087cb[_0xb01d('0x45')]=[{'all':!![]}];}_0x5087cb=_[_0xb01d('0x3c')]({},_0x5087cb,_0x2d29ad[_0xb01d('0x46')]);return db['DeskField']['find'](_0x5087cb)[_0xb01d('0x23')](handleEntityNotFound(_0x2f582f,null))['then'](respondWithResult(_0x2f582f,null))['catch'](handleError(_0x2f582f,null));};exports[_0xb01d('0x47')]=function(_0x75b2e7,_0x361acb){return db['DeskField'][_0xb01d('0x47')](_0x75b2e7[_0xb01d('0x48')],{})[_0xb01d('0x23')](respondWithResult(_0x361acb,0xc9))['catch'](handleError(_0x361acb,null));};exports[_0xb01d('0x22')]=function(_0x500bff,_0x494b9c){if(_0x500bff[_0xb01d('0x48')]['id']){delete _0x500bff[_0xb01d('0x48')]['id'];}return db[_0xb01d('0x2a')][_0xb01d('0x49')]({'where':{'id':_0x500bff[_0xb01d('0x43')]['id']}})[_0xb01d('0x23')](handleEntityNotFound(_0x494b9c,null))[_0xb01d('0x23')](saveUpdates(_0x500bff[_0xb01d('0x48')],null))[_0xb01d('0x23')](respondWithResult(_0x494b9c,null))[_0xb01d('0x41')](handleError(_0x494b9c,null));};exports[_0xb01d('0x4a')]=function(_0x403786,_0xe9e895){return db[_0xb01d('0x2a')][_0xb01d('0x49')]({'where':{'id':_0x403786['params']['id']}})[_0xb01d('0x23')](handleEntityNotFound(_0xe9e895,null))[_0xb01d('0x23')](removeEntity(_0xe9e895,null))[_0xb01d('0x41')](handleError(_0xe9e895,null));};
\ No newline at end of file
index 4e0dc3c..bd982a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb591=['FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','int_desk_fields','desk_unique_index','idField'];(function(_0x539e78,_0x47d3a4){var _0x79f6ff=function(_0x9523b2){while(--_0x9523b2){_0x539e78['push'](_0x539e78['shift']());}};_0x79f6ff(++_0x47d3a4);}(_0xb591,0xef));var _0x1b59=function(_0x23183c,_0x46de69){_0x23183c=_0x23183c-0x0;var _0x231ba2=_0xb591[_0x23183c];return _0x231ba2;};'use strict';var _=require(_0x1b59('0x0'));var util=require(_0x1b59('0x1'));var logger=require(_0x1b59('0x2'))(_0x1b59('0x3'));var moment=require(_0x1b59('0x4'));var BPromise=require(_0x1b59('0x5'));var rp=require(_0x1b59('0x6'));var fs=require('fs');var path=require(_0x1b59('0x7'));var rimraf=require(_0x1b59('0x8'));var config=require(_0x1b59('0x9'));var attributes=require(_0x1b59('0xa'));module[_0x1b59('0xb')]=function(_0x3467bc,_0x2f25be){return _0x3467bc[_0x1b59('0xc')]('DeskField',attributes,{'tableName':_0x1b59('0xd'),'paranoid':![],'indexes':[{'name':_0x1b59('0xe'),'fields':[_0x1b59('0xf'),_0x1b59('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d18=['idField','FieldId','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','DeskField','int_desk_fields','desk_unique_index'];(function(_0x4b4e87,_0x4bf51a){var _0x145237=function(_0x1452af){while(--_0x1452af){_0x4b4e87['push'](_0x4b4e87['shift']());}};_0x145237(++_0x4bf51a);}(_0x5d18,0xc6));var _0x85d1=function(_0x3408bf,_0xa0617){_0x3408bf=_0x3408bf-0x0;var _0x3b5365=_0x5d18[_0x3408bf];return _0x3b5365;};'use strict';var _=require('lodash');var util=require(_0x85d1('0x0'));var logger=require(_0x85d1('0x1'))('api');var moment=require('moment');var BPromise=require(_0x85d1('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x85d1('0x3'));var rimraf=require(_0x85d1('0x4'));var config=require(_0x85d1('0x5'));var attributes=require(_0x85d1('0x6'));module[_0x85d1('0x7')]=function(_0x254f87,_0x44d28d){return _0x254f87[_0x85d1('0x8')](_0x85d1('0x9'),attributes,{'tableName':_0x85d1('0xa'),'paranoid':![],'indexes':[{'name':_0x85d1('0xb'),'fields':[_0x85d1('0xc'),_0x85d1('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 27c88a4..c8251c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7860=['message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x2ffb97,_0x5446e6){var _0x333148=function(_0x47478f){while(--_0x47478f){_0x2ffb97['push'](_0x2ffb97['shift']());}};_0x333148(++_0x5446e6);}(_0x7860,0xe9));var _0x0786=function(_0x4b7256,_0x26852f){_0x4b7256=_0x4b7256-0x0;var _0x16c392=_0x7860[_0x4b7256];return _0x16c392;};'use strict';var _=require(_0x0786('0x0'));var util=require(_0x0786('0x1'));var moment=require(_0x0786('0x2'));var BPromise=require('bluebird');var rs=require(_0x0786('0x3'));var fs=require('fs');var Redis=require(_0x0786('0x4'));var db=require(_0x0786('0x5'))['db'];var utils=require(_0x0786('0x6'));var logger=require(_0x0786('0x7'))(_0x0786('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x0786('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x385ffe,_0xc25e02,_0x226341){return new BPromise(function(_0x25c13a,_0x199d48){return client[_0x0786('0xa')](_0x385ffe,_0x226341)[_0x0786('0xb')](function(_0x2ff191){logger[_0x0786('0xc')](_0x0786('0xd'),_0xc25e02,_0x0786('0xe'));logger[_0x0786('0xf')](_0x0786('0x10'),_0xc25e02,'request\x20sent',JSON['stringify'](_0x2ff191));if(_0x2ff191[_0x0786('0x11')]){if(_0x2ff191['error'][_0x0786('0x12')]===0x1f4){logger[_0x0786('0x11')](_0x0786('0xd'),_0xc25e02,_0x2ff191[_0x0786('0x11')][_0x0786('0x13')]);return _0x199d48(_0x2ff191['error'][_0x0786('0x13')]);}logger[_0x0786('0x11')](_0x0786('0xd'),_0xc25e02,_0x2ff191['error'][_0x0786('0x13')]);return _0x25c13a(_0x2ff191[_0x0786('0x11')][_0x0786('0x13')]);}else{logger[_0x0786('0xc')](_0x0786('0xd'),_0xc25e02,'request\x20sent');_0x25c13a(_0x2ff191['result'][_0x0786('0x13')]);}})[_0x0786('0x14')](function(_0x230262){logger['error'](_0x0786('0xd'),_0xc25e02,_0x230262);_0x199d48(_0x230262);});});}
\ No newline at end of file
+var _0x59de=['client','http','request','then','info','DeskField,\x20%s,\x20%s','debug','DeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xbe200f,_0x4b50eb){var _0x192597=function(_0x106cfd){while(--_0x106cfd){_0xbe200f['push'](_0xbe200f['shift']());}};_0x192597(++_0x4b50eb);}(_0x59de,0x115));var _0xe59d=function(_0xe73dee,_0x3d8750){_0xe73dee=_0xe73dee-0x0;var _0x4483d7=_0x59de[_0xe73dee];return _0x4483d7;};'use strict';var _=require('lodash');var util=require(_0xe59d('0x0'));var moment=require(_0xe59d('0x1'));var BPromise=require('bluebird');var rs=require(_0xe59d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe59d('0x3'))['db'];var utils=require(_0xe59d('0x4'));var logger=require(_0xe59d('0x5'))(_0xe59d('0x6'));var config=require(_0xe59d('0x7'));var jayson=require(_0xe59d('0x8'));var client=jayson[_0xe59d('0x9')][_0xe59d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e8371,_0x89fcaf,_0x46ba8d){return new BPromise(function(_0x5d1331,_0x5b539b){return client[_0xe59d('0xb')](_0x2e8371,_0x46ba8d)[_0xe59d('0xc')](function(_0x2dddfa){logger[_0xe59d('0xd')](_0xe59d('0xe'),_0x89fcaf,'request\x20sent');logger[_0xe59d('0xf')](_0xe59d('0x10'),_0x89fcaf,_0xe59d('0x11'),JSON[_0xe59d('0x12')](_0x2dddfa));if(_0x2dddfa[_0xe59d('0x13')]){if(_0x2dddfa[_0xe59d('0x13')]['code']===0x1f4){logger['error'](_0xe59d('0xe'),_0x89fcaf,_0x2dddfa[_0xe59d('0x13')][_0xe59d('0x14')]);return _0x5b539b(_0x2dddfa[_0xe59d('0x13')][_0xe59d('0x14')]);}logger[_0xe59d('0x13')](_0xe59d('0xe'),_0x89fcaf,_0x2dddfa[_0xe59d('0x13')][_0xe59d('0x14')]);return _0x5d1331(_0x2dddfa[_0xe59d('0x13')][_0xe59d('0x14')]);}else{logger['info'](_0xe59d('0xe'),_0x89fcaf,'request\x20sent');_0x5d1331(_0x2dddfa[_0xe59d('0x15')]['message']);}})['catch'](function(_0x41c72f){logger[_0xe59d('0x13')](_0xe59d('0xe'),_0x89fcaf,_0x41c72f);_0x5b539b(_0x41c72f);});});}
\ No newline at end of file
index 19be204..b3c5274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5a8=['index','get','/:id/configurations','getConfigurations','create','post','addConfiguration','update','/:id','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','isAuthenticated'];(function(_0x30045f,_0x20d426){var _0x2ff4b2=function(_0x62e8c5){while(--_0x62e8c5){_0x30045f['push'](_0x30045f['shift']());}};_0x2ff4b2(++_0x20d426);}(_0xf5a8,0xb2));var _0x8f5a=function(_0x253b13,_0x247a2f){_0x253b13=_0x253b13-0x0;var _0x396bcc=_0xf5a8[_0x253b13];return _0x396bcc;};'use strict';var multer=require(_0x8f5a('0x0'));var util=require(_0x8f5a('0x1'));var path=require(_0x8f5a('0x2'));var timeout=require(_0x8f5a('0x3'));var express=require(_0x8f5a('0x4'));var router=express['Router']();var fs_extra=require(_0x8f5a('0x5'));var auth=require(_0x8f5a('0x6'));var interaction=require(_0x8f5a('0x7'));var config=require(_0x8f5a('0x8'));var controller=require(_0x8f5a('0x9'));router['get']('/',auth[_0x8f5a('0xa')](),controller[_0x8f5a('0xb')]);router[_0x8f5a('0xc')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x8f5a('0xc')](_0x8f5a('0xd'),auth[_0x8f5a('0xa')](),controller[_0x8f5a('0xe')]);router[_0x8f5a('0xc')]('/:id/fields',auth[_0x8f5a('0xa')](),controller['getFields']);router['post']('/',auth[_0x8f5a('0xa')](),controller[_0x8f5a('0xf')]);router[_0x8f5a('0x10')](_0x8f5a('0xd'),auth[_0x8f5a('0xa')](),controller[_0x8f5a('0x11')]);router['put']('/:id',auth[_0x8f5a('0xa')](),controller[_0x8f5a('0x12')]);router['delete'](_0x8f5a('0x13'),auth['isAuthenticated'](),controller[_0x8f5a('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xb6d0=['addConfiguration','put','/:id','update','exports','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id/configurations','getConfigurations','/:id/fields','post'];(function(_0x3cdfdd,_0x158cf4){var _0x265958=function(_0x40c06e){while(--_0x40c06e){_0x3cdfdd['push'](_0x3cdfdd['shift']());}};_0x265958(++_0x158cf4);}(_0xb6d0,0xc3));var _0x0b6d=function(_0xdfc87d,_0x28e1a5){_0xdfc87d=_0xdfc87d-0x0;var _0x4e2a5e=_0xb6d0[_0xdfc87d];return _0x4e2a5e;};'use strict';var multer=require('multer');var util=require(_0x0b6d('0x0'));var path=require('path');var timeout=require(_0x0b6d('0x1'));var express=require(_0x0b6d('0x2'));var router=express[_0x0b6d('0x3')]();var fs_extra=require(_0x0b6d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0b6d('0x5'));var config=require(_0x0b6d('0x6'));var controller=require('./intDynamics365Account.controller');router[_0x0b6d('0x7')]('/',auth[_0x0b6d('0x8')](),controller[_0x0b6d('0x9')]);router[_0x0b6d('0x7')]('/:id',auth[_0x0b6d('0x8')](),controller['show']);router['get'](_0x0b6d('0xa'),auth[_0x0b6d('0x8')](),controller[_0x0b6d('0xb')]);router[_0x0b6d('0x7')](_0x0b6d('0xc'),auth[_0x0b6d('0x8')](),controller['getFields']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x0b6d('0xd')]('/:id/configurations',auth[_0x0b6d('0x8')](),controller[_0x0b6d('0xe')]);router[_0x0b6d('0xf')](_0x0b6d('0x10'),auth['isAuthenticated'](),controller[_0x0b6d('0x11')]);router['delete'](_0x0b6d('0x10'),auth[_0x0b6d('0x8')](),controller['destroy']);module[_0x0b6d('0x12')]=router;
\ No newline at end of file
index eeb8e37..1639ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbd0=['sequelize','exports','STRING','BOOLEAN'];(function(_0x1a8bd1,_0xa5f879){var _0x5b757f=function(_0x1f3955){while(--_0x1f3955){_0x1a8bd1['push'](_0x1a8bd1['shift']());}};_0x5b757f(++_0xa5f879);}(_0xdbd0,0x88));var _0x0dbd=function(_0x58d16c,_0x5e08a9){_0x58d16c=_0x58d16c-0x0;var _0x549c8b=_0xdbd0[_0x58d16c];return _0x549c8b;};'use strict';var Sequelize=require(_0x0dbd('0x0'));module[_0x0dbd('0x1')]={'name':{'type':Sequelize[_0x0dbd('0x2')]},'username':{'type':Sequelize[_0x0dbd('0x2')]},'password':{'type':Sequelize[_0x0dbd('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0x0dbd('0x2')]},'clientId':{'type':Sequelize[_0x0dbd('0x2')]},'clientSecret':{'type':Sequelize[_0x0dbd('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x0dbd('0x2')]},'modernAuthentication':{'type':Sequelize[_0x0dbd('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3f1c=['sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3f1c,0xd4));var _0xc3f1=function(_0x1c32ca,_0x372bef){_0x1c32ca=_0x1c32ca-0x0;var _0x5c6a18=_0x3f1c[_0x1c32ca];return _0x5c6a18;};'use strict';var Sequelize=require(_0xc3f1('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xc3f1('0x1')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0xc3f1('0x1')]},'clientId':{'type':Sequelize[_0xc3f1('0x1')]},'clientSecret':{'type':Sequelize[_0xc3f1('0x1')]},'serverUrl':{'type':Sequelize[_0xc3f1('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xc3f1('0x1')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 1c64256..427f128 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x828b=['remove','includes','LogicalName','forEach','@odata.type','substring','PicklistAttributeMetadata','MetadataId','all','isNil','BooleanAttributeMetadata','push','IntegerAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','error','Wrong\x20credentials','EntityDefinitions(',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','UserLocalizedLabel','Label','Value','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','true','FalseOption','false','?$select=DisplayName,LogicalName','request-promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','json','offset','undefined','limit','count','status','update','then','end','name','send','index','Dynamics365Account','rawAttributes','fieldName','key','map','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','query','order','sort','where','filter','merge','type','VIRTUAL','options','rows','show','params','includeAll','include','find','create','body','destroy','catch','getConfigurations','findOne','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','Dynamics365Configuration','Dynamics365Field','slice','lastIndexOf','format','%s/api/data/v9.0/','getFields','ticketType','Incident','title','customerid','phonenumber','phonecall_activity_parties','accountidname','accountidyominame','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyyominame','createdbyname','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','followupby','importsequencenumber','kbarticleidname','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyyominame','msdyn_incidenttypename','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productserialnumber','resolveby','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','statecode','statuscode','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','versionnumber','concat','password','remoteUri','tenantId','clientSecret','modernAuthentication','CloudProvider','data5','data7','access_token','clientId','username','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value',')?$select=LogicalName&$expand=Attributes($select=LogicalName)'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x828b,0x182));var _0xb828=function(_0x4fbb86,_0x374ed0){_0x4fbb86=_0x4fbb86-0x0;var _0xb141fe=_0x828b[_0x4fbb86];return _0xb141fe;};'use strict';var rp=require(_0xb828('0x0'));var util=require('util');var _=require('lodash');var qs=require(_0xb828('0x1'));var logger=require(_0xb828('0x2'))(_0xb828('0x3'));var db=require(_0xb828('0x4'))['db'];var integrations=require(_0xb828('0x5'));function respondWithResult(_0x2db7a2,_0x42e085){_0x42e085=_0x42e085||0xc8;return function(_0x1db075){if(_0x1db075){return _0x2db7a2['status'](_0x42e085)[_0xb828('0x6')](_0x1db075);}};}function respondWithFilteredResult(_0x15cd75,_0x482e34){return function(_0x216d9b){if(_0x216d9b){var _0x508743=typeof _0x482e34[_0xb828('0x7')]===_0xb828('0x8')&&typeof _0x482e34[_0xb828('0x9')]==='undefined';var _0x12f481=_0x216d9b[_0xb828('0xa')];var _0x2f0df3=_0x508743?0x0:_0x482e34['offset'];var _0x33ff96=_0x508743?_0x216d9b[_0xb828('0xa')]:_0x482e34[_0xb828('0x7')]+_0x482e34[_0xb828('0x9')];var _0x50135e;if(_0x33ff96>=_0x12f481){_0x33ff96=_0x12f481;_0x50135e=0xc8;}else{_0x50135e=0xce;}_0x15cd75[_0xb828('0xb')](_0x50135e);return _0x15cd75['set']('Content-Range',_0x2f0df3+'-'+_0x33ff96+'/'+_0x12f481)[_0xb828('0x6')](_0x216d9b);}return null;};}function saveUpdates(_0x5892e7){return function(_0x2ba758){if(_0x2ba758){return _0x2ba758[_0xb828('0xc')](_0x5892e7)['then'](function(_0x46e217){return _0x46e217;});}return null;};}function removeEntity(_0x4ddddb){return function(_0x1db00b){if(_0x1db00b){return _0x1db00b['destroy']()[_0xb828('0xd')](function(){_0x4ddddb[_0xb828('0xb')](0xcc)[_0xb828('0xe')]();});}};}function handleEntityNotFound(_0x1d8233){return function(_0x43fd39){if(!_0x43fd39){_0x1d8233['sendStatus'](0x194);}return _0x43fd39;};}function handleError(_0x1c1ecc,_0x24137f){_0x24137f=_0x24137f||0x1f4;return function(_0x3eeed0){logger['error'](_0x3eeed0['stack']);if(_0x3eeed0[_0xb828('0xf')]){delete _0x3eeed0[_0xb828('0xf')];}_0x1c1ecc['status'](_0x24137f)[_0xb828('0x10')](_0x3eeed0);};}exports[_0xb828('0x11')]=function(_0x52909f,_0x103f3a){var _0x19019e={},_0x45bb24={},_0x4275cd={'count':0x0,'rows':[]};var _0x805ed8=_['map'](db[_0xb828('0x12')][_0xb828('0x13')],function(_0x55bf80){return{'name':_0x55bf80[_0xb828('0x14')],'type':_0x55bf80['type'][_0xb828('0x15')]};});_0x45bb24['model']=_[_0xb828('0x16')](_0x805ed8,'name');_0x45bb24['query']=_[_0xb828('0x17')](_0x52909f['query']);_0x45bb24[_0xb828('0x18')]=_[_0xb828('0x19')](_0x45bb24['model'],_0x45bb24['query']);_0x19019e[_0xb828('0x1a')]=_['intersection'](_0x45bb24[_0xb828('0x1b')],qs[_0xb828('0x1c')](_0x52909f['query'][_0xb828('0x1c')]));_0x19019e[_0xb828('0x1a')]=_0x19019e['attributes'][_0xb828('0x1d')]?_0x19019e[_0xb828('0x1a')]:_0x45bb24[_0xb828('0x1b')];if(!_0x52909f['query'][_0xb828('0x1e')](_0xb828('0x1f'))){_0x19019e['limit']=qs['limit'](_0x52909f[_0xb828('0x20')]['limit']);_0x19019e[_0xb828('0x7')]=qs['offset'](_0x52909f[_0xb828('0x20')][_0xb828('0x7')]);}_0x19019e[_0xb828('0x21')]=qs['sort'](_0x52909f[_0xb828('0x20')][_0xb828('0x22')]);_0x19019e[_0xb828('0x23')]=qs[_0xb828('0x18')](_['pick'](_0x52909f['query'],_0x45bb24[_0xb828('0x18')]),_0x805ed8);if(_0x52909f[_0xb828('0x20')][_0xb828('0x24')]){_0x19019e['where']=_[_0xb828('0x25')](_0x19019e[_0xb828('0x23')],{'$or':_[_0xb828('0x16')](_0x805ed8,function(_0x9957f0){if(_0x9957f0[_0xb828('0x26')]!==_0xb828('0x27')){var _0x4d2399={};_0x4d2399[_0x9957f0[_0xb828('0xf')]]={'$like':'%'+_0x52909f[_0xb828('0x20')][_0xb828('0x24')]+'%'};return _0x4d2399;}})});}_0x19019e=_[_0xb828('0x25')]({},_0x19019e,_0x52909f[_0xb828('0x28')]);var _0x316b4b={'where':_0x19019e[_0xb828('0x23')]};return db[_0xb828('0x12')][_0xb828('0xa')](_0x316b4b)[_0xb828('0xd')](function(_0x3333cf){_0x4275cd['count']=_0x3333cf;if(_0x52909f[_0xb828('0x20')]['includeAll']){_0x19019e['include']=[{'all':!![]}];}return db['Dynamics365Account']['findAll'](_0x19019e);})[_0xb828('0xd')](function(_0x3605d6){_0x4275cd[_0xb828('0x29')]=_0x3605d6;return _0x4275cd;})['then'](respondWithFilteredResult(_0x103f3a,_0x19019e))['catch'](handleError(_0x103f3a,null));};exports[_0xb828('0x2a')]=function(_0x1c21c8,_0x1b2e49){var _0x1b2777={'raw':![],'where':{'id':_0x1c21c8[_0xb828('0x2b')]['id']}},_0x4f626f={};_0x4f626f[_0xb828('0x1b')]=_['keys'](db['Dynamics365Account'][_0xb828('0x13')]);_0x4f626f[_0xb828('0x20')]=_['keys'](_0x1c21c8[_0xb828('0x20')]);_0x4f626f['filters']=_[_0xb828('0x19')](_0x4f626f['model'],_0x4f626f[_0xb828('0x20')]);_0x1b2777[_0xb828('0x1a')]=_[_0xb828('0x19')](_0x4f626f[_0xb828('0x1b')],qs[_0xb828('0x1c')](_0x1c21c8[_0xb828('0x20')][_0xb828('0x1c')]));_0x1b2777['attributes']=_0x1b2777[_0xb828('0x1a')][_0xb828('0x1d')]?_0x1b2777[_0xb828('0x1a')]:_0x4f626f[_0xb828('0x1b')];if(_0x1c21c8[_0xb828('0x20')][_0xb828('0x2c')]){_0x1b2777[_0xb828('0x2d')]=[{'all':!![]}];}_0x1b2777=_[_0xb828('0x25')]({},_0x1b2777,_0x1c21c8['options']);return db[_0xb828('0x12')][_0xb828('0x2e')](_0x1b2777)[_0xb828('0xd')](handleEntityNotFound(_0x1b2e49,null))[_0xb828('0xd')](respondWithResult(_0x1b2e49,null))['catch'](handleError(_0x1b2e49,null));};exports['create']=function(_0x19ef64,_0x25fc89){return db[_0xb828('0x12')][_0xb828('0x2f')](_0x19ef64[_0xb828('0x30')],{})[_0xb828('0xd')](respondWithResult(_0x25fc89,0xc9))['catch'](handleError(_0x25fc89,null));};exports['update']=function(_0x26f135,_0x1dda63){if(_0x26f135[_0xb828('0x30')]['id']){delete _0x26f135['body']['id'];}return db[_0xb828('0x12')][_0xb828('0x2e')]({'where':{'id':_0x26f135['params']['id']}})[_0xb828('0xd')](handleEntityNotFound(_0x1dda63,null))[_0xb828('0xd')](saveUpdates(_0x26f135[_0xb828('0x30')],null))[_0xb828('0xd')](respondWithResult(_0x1dda63,null))['catch'](handleError(_0x1dda63,null));};exports[_0xb828('0x31')]=function(_0x48766e,_0x247be5){return db[_0xb828('0x12')][_0xb828('0x2e')]({'where':{'id':_0x48766e[_0xb828('0x2b')]['id']}})[_0xb828('0xd')](handleEntityNotFound(_0x247be5,null))['then'](removeEntity(_0x247be5,null))[_0xb828('0x32')](handleError(_0x247be5,null));};exports[_0xb828('0x33')]=function(_0x1bdcf5,_0xc690fb){var _0x3e8e2c={};var _0x5b08e1={};var _0x15c9fc;var _0x3c5577;return db[_0xb828('0x12')][_0xb828('0x34')]({'where':{'id':_0x1bdcf5['params']['id']}})[_0xb828('0xd')](handleEntityNotFound(_0xc690fb,null))[_0xb828('0xd')](function(_0x5a82d9){if(_0x5a82d9){_0x15c9fc=_0x5a82d9;_0x5b08e1[_0xb828('0x1b')]=_[_0xb828('0x17')](db['Dynamics365Configuration'][_0xb828('0x13')]);_0x5b08e1[_0xb828('0x20')]=_[_0xb828('0x17')](_0x1bdcf5['query']);_0x5b08e1['filters']=_[_0xb828('0x19')](_0x5b08e1[_0xb828('0x1b')],_0x5b08e1['query']);_0x3e8e2c[_0xb828('0x1a')]=_[_0xb828('0x19')](_0x5b08e1[_0xb828('0x1b')],qs[_0xb828('0x1c')](_0x1bdcf5['query'][_0xb828('0x1c')]));_0x3e8e2c['attributes']=_0x3e8e2c[_0xb828('0x1a')][_0xb828('0x1d')]?_0x3e8e2c[_0xb828('0x1a')]:_0x5b08e1[_0xb828('0x1b')];_0x3e8e2c[_0xb828('0x21')]=qs[_0xb828('0x22')](_0x1bdcf5[_0xb828('0x20')]['sort']);_0x3e8e2c[_0xb828('0x23')]=qs[_0xb828('0x18')](_['pick'](_0x1bdcf5['query'],_0x5b08e1['filters']));if(_0x1bdcf5[_0xb828('0x20')][_0xb828('0x24')]){_0x3e8e2c['where']=_[_0xb828('0x25')](_0x3e8e2c[_0xb828('0x23')],{'$or':_[_0xb828('0x16')](_0x3e8e2c[_0xb828('0x1a')],function(_0xfe4189){var _0x270e25={};_0x270e25[_0xfe4189]={'$like':'%'+_0x1bdcf5[_0xb828('0x20')]['filter']+'%'};return _0x270e25;})});}_0x3e8e2c=_[_0xb828('0x25')]({},_0x3e8e2c,_0x1bdcf5[_0xb828('0x28')]);return _0x15c9fc[_0xb828('0x33')](_0x3e8e2c);}})['then'](function(_0x4382f3){if(_0x4382f3){_0x3c5577=_0x4382f3['length'];if(!_0x1bdcf5['query'][_0xb828('0x1e')]('nolimit')){_0x3e8e2c[_0xb828('0x9')]=qs[_0xb828('0x9')](_0x1bdcf5[_0xb828('0x20')][_0xb828('0x9')]);_0x3e8e2c[_0xb828('0x7')]=qs[_0xb828('0x7')](_0x1bdcf5[_0xb828('0x20')][_0xb828('0x7')]);}return _0x15c9fc[_0xb828('0x33')](_0x3e8e2c);}})['then'](function(_0x3c37e2){if(_0x3c37e2){return _0x3c37e2?{'count':_0x3c5577,'rows':_0x3c37e2}:null;}})['then'](respondWithResult(_0xc690fb,null))[_0xb828('0x32')](handleError(_0xc690fb,null));};exports[_0xb828('0x35')]=function(_0x50a6d8,_0x255777){if(_0x50a6d8['body']['id']){delete _0x50a6d8[_0xb828('0x30')]['id'];}return db[_0xb828('0x12')][_0xb828('0x34')]({'where':{'id':_0x50a6d8[_0xb828('0x2b')]['id']}})['then'](handleEntityNotFound(_0x255777,null))['then'](function(_0xd26ecf){if(_0xd26ecf){_0x50a6d8[_0xb828('0x30')][_0xb828('0x36')]=_0xd26ecf['id'];_0x50a6d8['body'][_0xb828('0x37')]=integrations['getSubjects'](_0x50a6d8['body'][_0xb828('0x38')],_0x50a6d8[_0xb828('0x30')][_0xb828('0x26')]);_0x50a6d8[_0xb828('0x30')][_0xb828('0x39')]=integrations[_0xb828('0x3a')](_0x50a6d8[_0xb828('0x30')][_0xb828('0x38')],_0x50a6d8[_0xb828('0x30')][_0xb828('0x26')]);return db[_0xb828('0x3b')][_0xb828('0x2f')](_0x50a6d8[_0xb828('0x30')],{'include':[{'model':db[_0xb828('0x3c')],'as':_0xb828('0x37')},{'model':db[_0xb828('0x3c')],'as':_0xb828('0x39')}]});}return null;})['then'](respondWithResult(_0x255777,null))['catch'](handleError(_0x255777,null));};function sanitizeRemoteUri(_0x1e5a2d){var _0x3128bb=_0x1e5a2d[_0xb828('0x3d')](-0x1);if(_0x3128bb==='/')return _0x1e5a2d['substring'](0x0,_0x1e5a2d[_0xb828('0x3e')](_0x3128bb));return _0x1e5a2d;}function getWebApiUrl(_0x259942){return util[_0xb828('0x3f')](_0xb828('0x40'),_0x259942);}exports[_0xb828('0x41')]=function(_0x2dbb3e,_0x3eadbf){var _0x4954b3=_0x2dbb3e[_0xb828('0x20')][_0xb828('0x42')];var _0x10cf1d=_0x4954b3==='incident'?_0xb828('0x43'):'PhoneCall';var _0x31d466='';var _0x202b29='';var _0x415dd9='';var _0x14d3e7='';var _0x493626='';var _0x47586f='';var _0x1a46dc='';var _0x2b4fbb='';var _0x3ab88f=[_0xb828('0x44'),'description',_0xb828('0x45'),'ownerid','caseorigincode','subject',_0xb828('0x46'),'regardingobjectid','directioncode',_0xb828('0x47')];var _0x177468=[_0xb828('0x48'),_0xb828('0x49'),'actualserviceunits',_0xb828('0x4a'),_0xb828('0x4b'),'contactidyominame',_0xb828('0x4c'),_0xb828('0x4d'),'createdbyexternalpartyname',_0xb828('0x4e'),_0xb828('0x4f'),'createdbyyominame',_0xb828('0x50'),_0xb828('0x51'),_0xb828('0x52'),_0xb828('0x53'),_0xb828('0x54'),'customeridyominame',_0xb828('0x55'),_0xb828('0x56'),_0xb828('0x57'),_0xb828('0x58'),_0xb828('0x59'),'exchangerate','firstresponsebykpiidname',_0xb828('0x5a'),_0xb828('0x5b'),'influencescore',_0xb828('0x5c'),_0xb828('0x5d'),'masteridname',_0xb828('0x5e'),_0xb828('0x5f'),'modifiedbyname',_0xb828('0x60'),'modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame',_0xb828('0x61'),'msdyn_iotalertname',_0xb828('0x62'),_0xb828('0x63'),_0xb828('0x64'),_0xb828('0x65'),'owneridtype','owneridyominame',_0xb828('0x66'),_0xb828('0x67'),_0xb828('0x68'),_0xb828('0x69'),'productidname',_0xb828('0x6a'),_0xb828('0x6b'),'resolvebykpiidname',_0xb828('0x6c'),_0xb828('0x6d'),_0xb828('0x6e'),_0xb828('0x6f'),'slainvokedidname',_0xb828('0x70'),_0xb828('0x71'),_0xb828('0x72'),_0xb828('0x73'),'subjectidname',_0xb828('0x74'),_0xb828('0x75'),_0xb828('0x76'),_0xb828('0x77'),'utcconversiontimezonecode',_0xb828('0x78')];var _0x5f433c=_0x3ab88f[_0xb828('0x79')](_0x177468);return db[_0xb828('0x12')][_0xb828('0x34')]({'where':{'id':_0x2dbb3e[_0xb828('0x2b')]['id']},'attributes':['id','username',_0xb828('0x7a'),_0xb828('0x7b'),_0xb828('0x7c'),'clientId',_0xb828('0x7d'),_0xb828('0x7e')],'include':[{'model':db[_0xb828('0x7f')],'as':_0xb828('0x7f'),'attributes':['id',_0xb828('0x80'),_0xb828('0x81')]}]})[_0xb828('0xd')](handleEntityNotFound(_0x3eadbf,null))[_0xb828('0xd')](function(_0x4f7da0){if(_0x4f7da0){if(_0x4f7da0[_0xb828('0x7e')]){_0x4f7da0[_0xb828('0x82')]=_0x4f7da0[_0xb828('0x7f')]['data5'];_0x2b4fbb=sanitizeRemoteUri(_0x4f7da0['CloudProvider'][_0xb828('0x81')]);_0x1a46dc=getWebApiUrl(_0x2b4fbb);return _0x4f7da0;}_0x2b4fbb=sanitizeRemoteUri(_0x4f7da0[_0xb828('0x7b')]);_0x1a46dc=getWebApiUrl(_0x2b4fbb);var _0x5a38be={'method':'POST','uri':'https://login.microsoftonline.com/'+_0x4f7da0[_0xb828('0x7c')]+'/oauth2/token','form':{'client_id':_0x4f7da0[_0xb828('0x83')],'resource':_0x2b4fbb,'username':_0x4f7da0[_0xb828('0x84')],'password':_0x4f7da0['password'],'grant_type':_0xb828('0x7a'),'client_secret':_0x4f7da0[_0xb828('0x7d')]},'json':!![]};return rp(_0x5a38be);}})[_0xb828('0xd')](function(_0x166746){_0x47586f=_0x166746[_0xb828('0x82')];var _0x2ec79c={'method':_0xb828('0x85'),'uri':encodeURI(_0x1a46dc+_0xb828('0x86')+_0x10cf1d+'\x27'),'headers':{'Authorization':_0xb828('0x87')+_0x47586f,'If-None-Match':null,'OData-Version':_0xb828('0x88')},'json':!![]};return rp(_0x2ec79c);})[_0xb828('0xd')](function(_0x5aaa27){var _0x532c75=_0x5aaa27[_0xb828('0x89')][0x0];var _0x283bff=_0x532c75['MetadataId'];var _0x277794={'method':_0xb828('0x85'),'uri':_0x1a46dc+'EntityDefinitions('+_0x283bff+_0xb828('0x8a'),'headers':{'Authorization':_0xb828('0x87')+_0x47586f,'If-None-Match':null,'OData-Version':_0xb828('0x88')},'json':!![]};return rp(_0x277794);})[_0xb828('0xd')](function(_0x5a0b53){_0x31d466=_0x5a0b53;_0x202b29=_0x31d466['Attributes'];_0x202b29=_[_0xb828('0x8b')](_0x202b29,function(_0x343302){return!_0x5f433c[_0xb828('0x8c')](_0x343302[_0xb828('0x8d')]);});var _0x5cd60d=[];var _0x3523a9=[];_0x202b29[_0xb828('0x8e')](function(_0x4951c6){if(_0x4951c6['@odata.type']){var _0x3a49be=_0x4951c6[_0xb828('0x8f')][_0xb828('0x90')](_0x4951c6['@odata.type'][_0xb828('0x3e')]('.')+0x1);if(_0x3a49be===_0xb828('0x91')){_0x5cd60d['push'](getSelectList(_0x1a46dc,_0x4954b3,_0x3523a9,_0x31d466['MetadataId'],_0x4951c6[_0xb828('0x92')],_0x47586f));}}});return Promise[_0xb828('0x93')](_0x5cd60d);})['then'](function(_0x45ef04){_0x415dd9=_0x45ef04[0x0];var _0x5acbbe=[];var _0x3f9ba6=[];_0x202b29['forEach'](function(_0x268607){if(!_[_0xb828('0x94')](_0x268607[_0xb828('0x8f')])){var _0x5ca5e6=_0x268607[_0xb828('0x8f')][_0xb828('0x90')](_0x268607['@odata.type']['lastIndexOf']('.')+0x1);if(_0x5ca5e6===_0xb828('0x95')){_0x5acbbe[_0xb828('0x96')](getBooleanList(_0x1a46dc,_0x4954b3,_0x3f9ba6,_0x31d466[_0xb828('0x92')],_0x268607[_0xb828('0x92')],_0x47586f));}}});return Promise[_0xb828('0x93')](_0x5acbbe);})[_0xb828('0xd')](function(_0x2da7e1){_0x14d3e7=_0x2da7e1[0x0];var _0x335a7c=[];var _0x30d988=[];_0x202b29[_0xb828('0x8e')](function(_0x190f0a){if(_0x190f0a[_0xb828('0x8f')]){var _0x95e5cd=_0x190f0a[_0xb828('0x8f')]['substring'](_0x190f0a['@odata.type'][_0xb828('0x3e')]('.')+0x1);if(_0x95e5cd==='StringAttributeMetadata'||_0x95e5cd==='DoubleAttributeMetadata'||_0x95e5cd==='BigIntAttributeMetadata'||_0x95e5cd===_0xb828('0x97')||_0x95e5cd==='MemoAttributeMetadata'||_0x95e5cd==='DateTimeAttributeMetadata'||_0x95e5cd==='StatusAttributeMetadata'||_0x95e5cd===_0xb828('0x98')||_0x95e5cd===_0xb828('0x99')||_0x95e5cd===_0xb828('0x9a')){_0x335a7c[_0xb828('0x96')](getInputList(_0x1a46dc,_0x4954b3,_0x95e5cd,_0x30d988,_0x31d466[_0xb828('0x92')],_0x190f0a[_0xb828('0x92')],_0x47586f));}}});return Promise[_0xb828('0x93')](_0x335a7c);})[_0xb828('0xd')](function(_0x3eea26){_0x493626=_0x3eea26[0x0];var _0x3ea444=_0x415dd9[_0xb828('0x79')](_0x14d3e7)[_0xb828('0x79')](_0x493626);var _0x39b171={'count':_0x3ea444[_0xb828('0x1d')],'rows':_0x3ea444};return _0x39b171;})['then'](respondWithResult(_0x3eadbf,null))[_0xb828('0x32')](function(_0x3adf16){var _0x42e505=_0x2dbb3e[_0xb828('0x20')][_0xb828('0x9b')]?0x1f4:_0x3adf16[_0xb828('0x9c')]||0x1f4;logger[_0xb828('0x9d')](_0x3adf16['stack']);delete _0x3adf16[_0xb828('0xf')];if(_0x42e505===0x191){_0x42e505=0x190;}_0x3eadbf[_0xb828('0xb')](_0x42e505)[_0xb828('0x10')](_0x2dbb3e['query'][_0xb828('0x9b')]?{'message':_0xb828('0x9e'),'statusCode':_0x3adf16['statusCode']}:_0x3adf16);});};function getSelectList(_0x25a9c4,_0x5e0c7e,_0x1873c5,_0x64bc31,_0xa0acbd,_0x386f13){var _0x59d598={'method':_0xb828('0x85'),'uri':_0x25a9c4+_0xb828('0x9f')+_0x64bc31+_0xb828('0xa0')+_0xa0acbd+_0xb828('0xa1')+_0xb828('0xa2'),'headers':{'Authorization':'Bearer\x20'+_0x386f13,'If-None-Match':null,'OData-Version':_0xb828('0x88')},'json':!![]};return rp(_0x59d598)[_0xb828('0xd')](function(_0x2bf731){var _0xf51ac2=[];var _0x5cd475=_0x2bf731['OptionSet'][_0xb828('0xa3')];_0x5cd475['forEach'](function(_0x57ecdf){_0xf51ac2[_0xb828('0x96')]({'name':_0x57ecdf['Label'][_0xb828('0xa4')][_0xb828('0xa5')],'value':String(_0x57ecdf[_0xb828('0xa6')])});});var _0x3d9764={'id':_0x5e0c7e+'_'+_0x2bf731[_0xb828('0x8d')],'name':_0x2bf731[_0xb828('0xa7')][_0xb828('0xa4')][_0xb828('0xa5')],'custom':![],'options':_0xf51ac2};_0x1873c5[_0xb828('0x96')](_0x3d9764);return _0x1873c5;});}function getBooleanList(_0x366828,_0x434617,_0x2d5f04,_0x223406,_0x45a61a,_0x31e758){var _0x83c775={'method':_0xb828('0x85'),'uri':_0x366828+_0xb828('0x9f')+_0x223406+_0xb828('0xa0')+_0x45a61a+_0xb828('0xa8'),'headers':{'Authorization':_0xb828('0x87')+_0x31e758,'If-None-Match':null,'OData-Version':_0xb828('0x88')},'json':!![]};return rp(_0x83c775)[_0xb828('0xd')](function(_0x3abd54){var _0x18b482=[];_0x18b482[_0xb828('0x96')]({'name':_0x3abd54[_0xb828('0xa9')][_0xb828('0xaa')][_0xb828('0xa5')][_0xb828('0xa4')][_0xb828('0xa5')],'value':_0xb828('0xab')},{'name':_0x3abd54[_0xb828('0xa9')][_0xb828('0xac')][_0xb828('0xa5')]['UserLocalizedLabel']['Label'],'value':_0xb828('0xad')});var _0x3be7b4={'id':_0x434617+'_'+_0x3abd54[_0xb828('0x8d')],'name':_0x3abd54[_0xb828('0xa7')][_0xb828('0xa4')][_0xb828('0xa5')],'custom':![],'options':_0x18b482};_0x2d5f04[_0xb828('0x96')](_0x3be7b4);return _0x2d5f04;});}function getInputList(_0x3c0543,_0x1484bc,_0x21268e,_0x2209db,_0x5763df,_0x208281,_0x52bef0){var _0x3a1616={'method':_0xb828('0x85'),'uri':_0x3c0543+_0xb828('0x9f')+_0x5763df+_0xb828('0xa0')+_0x208281+')/Microsoft.Dynamics.CRM.'+_0x21268e+_0xb828('0xae'),'headers':{'Authorization':_0xb828('0x87')+_0x52bef0,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x3a1616)[_0xb828('0xd')](function(_0x3a93c8){var _0x463e48={'id':_0x1484bc+'_'+_0x3a93c8[_0xb828('0x8d')],'name':_0x3a93c8[_0xb828('0xa7')]['UserLocalizedLabel']?_0x3a93c8[_0xb828('0xa7')][_0xb828('0xa4')]['Label']:_0x3a93c8['LogicalName'],'custom':![],'options':[]};_0x2209db[_0xb828('0x96')](_0x463e48);return _0x2209db;});}
\ No newline at end of file
+var _0x1d07=['slaname','socialprofileidname','statuscode','subjectidname','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','remoteUri','tenantId','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','access_token','username','password','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','4.0','remove','includes','forEach','@odata.type','PicklistAttributeMetadata','push','isNil','BooleanAttributeMetadata','all','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','Value','LogicalName','DisplayName','UserLocalizedLabel',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','true','FalseOption',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','util','lodash','../../components/parsers/qs','api','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','then','sendStatus','error','stack','name','send','index','map','Dynamics365Account','type','key','query','keys','intersection','model','attributes','fields','length','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','rawAttributes','options','create','body','find','destroy','params','findOne','Dynamics365Configuration','order','getConfigurations','hasOwnProperty','AccountId','Subjects','channel','Descriptions','Dynamics365Field','slice','substring','lastIndexOf','format','getFields','ticketType','incident','Incident','PhoneCall','title','customerid','ownerid','caseorigincode','subject','phonenumber','directioncode','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','customeridname','customeridtype','emailaddress','entitlementidname','entityimage_timestamp','escalatedon','exchangerate','firstresponsebykpiidname','followupby','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidname','prioritycodename','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname'];(function(_0xf02cfa,_0x37b69f){var _0x325506=function(_0x2859e3){while(--_0x2859e3){_0xf02cfa['push'](_0xf02cfa['shift']());}};_0x325506(++_0x37b69f);}(_0x1d07,0x100));var _0x71d0=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x1d07[_0x565ed7];return _0x183ad7;};'use strict';var rp=require('request-promise');var util=require(_0x71d0('0x0'));var _=require(_0x71d0('0x1'));var qs=require(_0x71d0('0x2'));var logger=require('../../config/logger')(_0x71d0('0x3'));var db=require(_0x71d0('0x4'))['db'];var integrations=require(_0x71d0('0x5'));function respondWithResult(_0x1756b9,_0x405c6e){_0x405c6e=_0x405c6e||0xc8;return function(_0x3fd895){if(_0x3fd895){return _0x1756b9[_0x71d0('0x6')](_0x405c6e)[_0x71d0('0x7')](_0x3fd895);}};}function respondWithFilteredResult(_0x15d0c8,_0x52a6db){return function(_0x2d7aa0){if(_0x2d7aa0){var _0x106f10=typeof _0x52a6db[_0x71d0('0x8')]===_0x71d0('0x9')&&typeof _0x52a6db[_0x71d0('0xa')]===_0x71d0('0x9');var _0x552aab=_0x2d7aa0[_0x71d0('0xb')];var _0x51082e=_0x106f10?0x0:_0x52a6db[_0x71d0('0x8')];var _0x337a49=_0x106f10?_0x2d7aa0[_0x71d0('0xb')]:_0x52a6db[_0x71d0('0x8')]+_0x52a6db['limit'];var _0xf154ae;if(_0x337a49>=_0x552aab){_0x337a49=_0x552aab;_0xf154ae=0xc8;}else{_0xf154ae=0xce;}_0x15d0c8[_0x71d0('0x6')](_0xf154ae);return _0x15d0c8[_0x71d0('0xc')](_0x71d0('0xd'),_0x51082e+'-'+_0x337a49+'/'+_0x552aab)['json'](_0x2d7aa0);}return null;};}function saveUpdates(_0xb104f6){return function(_0x1b52bd){if(_0x1b52bd){return _0x1b52bd['update'](_0xb104f6)[_0x71d0('0xe')](function(_0x18127b){return _0x18127b;});}return null;};}function removeEntity(_0x2397fc){return function(_0x7cee56){if(_0x7cee56){return _0x7cee56['destroy']()['then'](function(){_0x2397fc[_0x71d0('0x6')](0xcc)['end']();});}};}function handleEntityNotFound(_0x537ea7){return function(_0x14cc20){if(!_0x14cc20){_0x537ea7[_0x71d0('0xf')](0x194);}return _0x14cc20;};}function handleError(_0x458f46,_0x1fcd65){_0x1fcd65=_0x1fcd65||0x1f4;return function(_0x35879a){logger[_0x71d0('0x10')](_0x35879a[_0x71d0('0x11')]);if(_0x35879a[_0x71d0('0x12')]){delete _0x35879a['name'];}_0x458f46[_0x71d0('0x6')](_0x1fcd65)[_0x71d0('0x13')](_0x35879a);};}exports[_0x71d0('0x14')]=function(_0x33e63c,_0x369f70){var _0x3bf72d={},_0x127f2c={},_0x27f444={'count':0x0,'rows':[]};var _0x331449=_[_0x71d0('0x15')](db[_0x71d0('0x16')]['rawAttributes'],function(_0x34c414){return{'name':_0x34c414['fieldName'],'type':_0x34c414[_0x71d0('0x17')][_0x71d0('0x18')]};});_0x127f2c['model']=_[_0x71d0('0x15')](_0x331449,_0x71d0('0x12'));_0x127f2c[_0x71d0('0x19')]=_[_0x71d0('0x1a')](_0x33e63c[_0x71d0('0x19')]);_0x127f2c['filters']=_[_0x71d0('0x1b')](_0x127f2c[_0x71d0('0x1c')],_0x127f2c[_0x71d0('0x19')]);_0x3bf72d[_0x71d0('0x1d')]=_[_0x71d0('0x1b')](_0x127f2c[_0x71d0('0x1c')],qs[_0x71d0('0x1e')](_0x33e63c[_0x71d0('0x19')][_0x71d0('0x1e')]));_0x3bf72d['attributes']=_0x3bf72d[_0x71d0('0x1d')][_0x71d0('0x1f')]?_0x3bf72d[_0x71d0('0x1d')]:_0x127f2c[_0x71d0('0x1c')];if(!_0x33e63c[_0x71d0('0x19')]['hasOwnProperty'](_0x71d0('0x20'))){_0x3bf72d[_0x71d0('0xa')]=qs['limit'](_0x33e63c[_0x71d0('0x19')]['limit']);_0x3bf72d['offset']=qs['offset'](_0x33e63c[_0x71d0('0x19')][_0x71d0('0x8')]);}_0x3bf72d['order']=qs[_0x71d0('0x21')](_0x33e63c[_0x71d0('0x19')][_0x71d0('0x21')]);_0x3bf72d[_0x71d0('0x22')]=qs[_0x71d0('0x23')](_[_0x71d0('0x24')](_0x33e63c['query'],_0x127f2c[_0x71d0('0x23')]),_0x331449);if(_0x33e63c[_0x71d0('0x19')][_0x71d0('0x25')]){_0x3bf72d[_0x71d0('0x22')]=_[_0x71d0('0x26')](_0x3bf72d['where'],{'$or':_[_0x71d0('0x15')](_0x331449,function(_0x5ba31f){if(_0x5ba31f[_0x71d0('0x17')]!==_0x71d0('0x27')){var _0x1cff34={};_0x1cff34[_0x5ba31f[_0x71d0('0x12')]]={'$like':'%'+_0x33e63c[_0x71d0('0x19')][_0x71d0('0x25')]+'%'};return _0x1cff34;}})});}_0x3bf72d=_[_0x71d0('0x26')]({},_0x3bf72d,_0x33e63c['options']);var _0x1c5ee3={'where':_0x3bf72d['where']};return db[_0x71d0('0x16')]['count'](_0x1c5ee3)[_0x71d0('0xe')](function(_0x42ea88){_0x27f444[_0x71d0('0xb')]=_0x42ea88;if(_0x33e63c[_0x71d0('0x19')][_0x71d0('0x28')]){_0x3bf72d[_0x71d0('0x29')]=[{'all':!![]}];}return db[_0x71d0('0x16')][_0x71d0('0x2a')](_0x3bf72d);})[_0x71d0('0xe')](function(_0x4a8f54){_0x27f444[_0x71d0('0x2b')]=_0x4a8f54;return _0x27f444;})[_0x71d0('0xe')](respondWithFilteredResult(_0x369f70,_0x3bf72d))[_0x71d0('0x2c')](handleError(_0x369f70,null));};exports['show']=function(_0x48a02d,_0x1b6e11){var _0x1d52c2={'raw':![],'where':{'id':_0x48a02d['params']['id']}},_0x25e398={};_0x25e398[_0x71d0('0x1c')]=_[_0x71d0('0x1a')](db[_0x71d0('0x16')][_0x71d0('0x2d')]);_0x25e398[_0x71d0('0x19')]=_[_0x71d0('0x1a')](_0x48a02d[_0x71d0('0x19')]);_0x25e398[_0x71d0('0x23')]=_[_0x71d0('0x1b')](_0x25e398[_0x71d0('0x1c')],_0x25e398[_0x71d0('0x19')]);_0x1d52c2[_0x71d0('0x1d')]=_[_0x71d0('0x1b')](_0x25e398[_0x71d0('0x1c')],qs['fields'](_0x48a02d[_0x71d0('0x19')][_0x71d0('0x1e')]));_0x1d52c2['attributes']=_0x1d52c2[_0x71d0('0x1d')]['length']?_0x1d52c2['attributes']:_0x25e398[_0x71d0('0x1c')];if(_0x48a02d[_0x71d0('0x19')]['includeAll']){_0x1d52c2[_0x71d0('0x29')]=[{'all':!![]}];}_0x1d52c2=_[_0x71d0('0x26')]({},_0x1d52c2,_0x48a02d[_0x71d0('0x2e')]);return db['Dynamics365Account']['find'](_0x1d52c2)[_0x71d0('0xe')](handleEntityNotFound(_0x1b6e11,null))['then'](respondWithResult(_0x1b6e11,null))['catch'](handleError(_0x1b6e11,null));};exports[_0x71d0('0x2f')]=function(_0x3e9b1f,_0x595fc4){return db[_0x71d0('0x16')][_0x71d0('0x2f')](_0x3e9b1f[_0x71d0('0x30')],{})['then'](respondWithResult(_0x595fc4,0xc9))[_0x71d0('0x2c')](handleError(_0x595fc4,null));};exports['update']=function(_0x37b55b,_0x4c89d8){if(_0x37b55b['body']['id']){delete _0x37b55b[_0x71d0('0x30')]['id'];}return db[_0x71d0('0x16')][_0x71d0('0x31')]({'where':{'id':_0x37b55b['params']['id']}})[_0x71d0('0xe')](handleEntityNotFound(_0x4c89d8,null))[_0x71d0('0xe')](saveUpdates(_0x37b55b[_0x71d0('0x30')],null))[_0x71d0('0xe')](respondWithResult(_0x4c89d8,null))[_0x71d0('0x2c')](handleError(_0x4c89d8,null));};exports[_0x71d0('0x32')]=function(_0x2ba936,_0x59a822){return db[_0x71d0('0x16')][_0x71d0('0x31')]({'where':{'id':_0x2ba936[_0x71d0('0x33')]['id']}})[_0x71d0('0xe')](handleEntityNotFound(_0x59a822,null))[_0x71d0('0xe')](removeEntity(_0x59a822,null))[_0x71d0('0x2c')](handleError(_0x59a822,null));};exports['getConfigurations']=function(_0x16f46a,_0xc1e4ec){var _0x2e70f1={};var _0x595978={};var _0x26cebb;var _0x424e76;return db[_0x71d0('0x16')][_0x71d0('0x34')]({'where':{'id':_0x16f46a[_0x71d0('0x33')]['id']}})[_0x71d0('0xe')](handleEntityNotFound(_0xc1e4ec,null))[_0x71d0('0xe')](function(_0x457f93){if(_0x457f93){_0x26cebb=_0x457f93;_0x595978[_0x71d0('0x1c')]=_['keys'](db[_0x71d0('0x35')]['rawAttributes']);_0x595978[_0x71d0('0x19')]=_[_0x71d0('0x1a')](_0x16f46a['query']);_0x595978[_0x71d0('0x23')]=_[_0x71d0('0x1b')](_0x595978['model'],_0x595978[_0x71d0('0x19')]);_0x2e70f1['attributes']=_[_0x71d0('0x1b')](_0x595978[_0x71d0('0x1c')],qs[_0x71d0('0x1e')](_0x16f46a[_0x71d0('0x19')][_0x71d0('0x1e')]));_0x2e70f1[_0x71d0('0x1d')]=_0x2e70f1[_0x71d0('0x1d')][_0x71d0('0x1f')]?_0x2e70f1['attributes']:_0x595978['model'];_0x2e70f1[_0x71d0('0x36')]=qs['sort'](_0x16f46a[_0x71d0('0x19')][_0x71d0('0x21')]);_0x2e70f1[_0x71d0('0x22')]=qs[_0x71d0('0x23')](_[_0x71d0('0x24')](_0x16f46a[_0x71d0('0x19')],_0x595978[_0x71d0('0x23')]));if(_0x16f46a['query']['filter']){_0x2e70f1[_0x71d0('0x22')]=_[_0x71d0('0x26')](_0x2e70f1[_0x71d0('0x22')],{'$or':_['map'](_0x2e70f1[_0x71d0('0x1d')],function(_0x2aeaab){var _0x47d805={};_0x47d805[_0x2aeaab]={'$like':'%'+_0x16f46a[_0x71d0('0x19')][_0x71d0('0x25')]+'%'};return _0x47d805;})});}_0x2e70f1=_[_0x71d0('0x26')]({},_0x2e70f1,_0x16f46a[_0x71d0('0x2e')]);return _0x26cebb[_0x71d0('0x37')](_0x2e70f1);}})[_0x71d0('0xe')](function(_0x5aff62){if(_0x5aff62){_0x424e76=_0x5aff62[_0x71d0('0x1f')];if(!_0x16f46a[_0x71d0('0x19')][_0x71d0('0x38')](_0x71d0('0x20'))){_0x2e70f1['limit']=qs['limit'](_0x16f46a[_0x71d0('0x19')][_0x71d0('0xa')]);_0x2e70f1[_0x71d0('0x8')]=qs['offset'](_0x16f46a['query'][_0x71d0('0x8')]);}return _0x26cebb[_0x71d0('0x37')](_0x2e70f1);}})[_0x71d0('0xe')](function(_0x3da4e1){if(_0x3da4e1){return _0x3da4e1?{'count':_0x424e76,'rows':_0x3da4e1}:null;}})[_0x71d0('0xe')](respondWithResult(_0xc1e4ec,null))['catch'](handleError(_0xc1e4ec,null));};exports['addConfiguration']=function(_0x31eec5,_0x2fd9c4){if(_0x31eec5[_0x71d0('0x30')]['id']){delete _0x31eec5[_0x71d0('0x30')]['id'];}return db[_0x71d0('0x16')][_0x71d0('0x34')]({'where':{'id':_0x31eec5[_0x71d0('0x33')]['id']}})[_0x71d0('0xe')](handleEntityNotFound(_0x2fd9c4,null))[_0x71d0('0xe')](function(_0x3b7b11){if(_0x3b7b11){_0x31eec5[_0x71d0('0x30')][_0x71d0('0x39')]=_0x3b7b11['id'];_0x31eec5[_0x71d0('0x30')][_0x71d0('0x3a')]=integrations['getSubjects'](_0x31eec5[_0x71d0('0x30')][_0x71d0('0x3b')],_0x31eec5[_0x71d0('0x30')][_0x71d0('0x17')]);_0x31eec5[_0x71d0('0x30')][_0x71d0('0x3c')]=integrations['getDescriptions'](_0x31eec5[_0x71d0('0x30')][_0x71d0('0x3b')],_0x31eec5[_0x71d0('0x30')]['type']);return db['Dynamics365Configuration'][_0x71d0('0x2f')](_0x31eec5['body'],{'include':[{'model':db[_0x71d0('0x3d')],'as':_0x71d0('0x3a')},{'model':db[_0x71d0('0x3d')],'as':'Descriptions'}]});}return null;})[_0x71d0('0xe')](respondWithResult(_0x2fd9c4,null))[_0x71d0('0x2c')](handleError(_0x2fd9c4,null));};function sanitizeRemoteUri(_0x41af26){var _0x1eb6db=_0x41af26[_0x71d0('0x3e')](-0x1);if(_0x1eb6db==='/')return _0x41af26[_0x71d0('0x3f')](0x0,_0x41af26[_0x71d0('0x40')](_0x1eb6db));return _0x41af26;}function getWebApiUrl(_0x53527a){return util[_0x71d0('0x41')]('%s/api/data/v9.0/',_0x53527a);}exports[_0x71d0('0x42')]=function(_0x9a8631,_0x4a9404){var _0x4506b2=_0x9a8631[_0x71d0('0x19')][_0x71d0('0x43')];var _0x189a80=_0x4506b2===_0x71d0('0x44')?_0x71d0('0x45'):_0x71d0('0x46');var _0x32c4ab='';var _0x549d98='';var _0xfab4bc='';var _0x4a0f9e='';var _0x42c912='';var _0x3e7442='';var _0x158d29='';var _0x21b0ba='';var _0x2ee9f5=[_0x71d0('0x47'),'description',_0x71d0('0x48'),_0x71d0('0x49'),_0x71d0('0x4a'),_0x71d0('0x4b'),_0x71d0('0x4c'),'regardingobjectid',_0x71d0('0x4d'),'phonecall_activity_parties'];var _0x203e72=[_0x71d0('0x4e'),_0x71d0('0x4f'),_0x71d0('0x50'),_0x71d0('0x51'),'contactidname',_0x71d0('0x52'),_0x71d0('0x53'),_0x71d0('0x54'),_0x71d0('0x55'),'createdbyexternalpartyyominame',_0x71d0('0x56'),_0x71d0('0x57'),_0x71d0('0x58'),_0x71d0('0x59'),'createdonbehalfbyyominame',_0x71d0('0x5a'),_0x71d0('0x5b'),'customeridyominame',_0x71d0('0x5c'),_0x71d0('0x5d'),_0x71d0('0x5e'),'entityimage_url',_0x71d0('0x5f'),_0x71d0('0x60'),_0x71d0('0x61'),_0x71d0('0x62'),'importsequencenumber',_0x71d0('0x63'),_0x71d0('0x64'),_0x71d0('0x65'),_0x71d0('0x66'),'modifiedbyexternalpartyname',_0x71d0('0x67'),_0x71d0('0x68'),'modifiedbyyominame',_0x71d0('0x69'),'modifiedonbehalfbyname',_0x71d0('0x6a'),_0x71d0('0x6b'),_0x71d0('0x6c'),_0x71d0('0x6d'),_0x71d0('0x6e'),_0x71d0('0x6f'),_0x71d0('0x70'),'owneridtype',_0x71d0('0x71'),_0x71d0('0x72'),_0x71d0('0x73'),'primarycontactidyominame',_0x71d0('0x74'),'productidname','productserialnumber',_0x71d0('0x75'),_0x71d0('0x76'),_0x71d0('0x77'),_0x71d0('0x78'),_0x71d0('0x79'),_0x71d0('0x7a'),_0x71d0('0x7b'),_0x71d0('0x7c'),_0x71d0('0x7d'),'statecode',_0x71d0('0x7e'),_0x71d0('0x7f'),'ticketnumber',_0x71d0('0x80'),_0x71d0('0x81'),_0x71d0('0x82'),_0x71d0('0x83'),_0x71d0('0x84')];var _0x323728=_0x2ee9f5[_0x71d0('0x85')](_0x203e72);return db[_0x71d0('0x16')][_0x71d0('0x34')]({'where':{'id':_0x9a8631[_0x71d0('0x33')]['id']},'attributes':['id','username','password',_0x71d0('0x86'),_0x71d0('0x87'),_0x71d0('0x88'),_0x71d0('0x89'),_0x71d0('0x8a')],'include':[{'model':db[_0x71d0('0x8b')],'as':'CloudProvider','attributes':['id',_0x71d0('0x8c'),_0x71d0('0x8d')]}]})[_0x71d0('0xe')](handleEntityNotFound(_0x4a9404,null))['then'](function(_0x41829c){if(_0x41829c){if(_0x41829c[_0x71d0('0x8a')]){_0x41829c[_0x71d0('0x8e')]=_0x41829c[_0x71d0('0x8b')][_0x71d0('0x8c')];_0x21b0ba=sanitizeRemoteUri(_0x41829c[_0x71d0('0x8b')][_0x71d0('0x8d')]);_0x158d29=getWebApiUrl(_0x21b0ba);return _0x41829c;}_0x21b0ba=sanitizeRemoteUri(_0x41829c['remoteUri']);_0x158d29=getWebApiUrl(_0x21b0ba);var _0x6f3108={'method':'POST','uri':'https://login.microsoftonline.com/'+_0x41829c[_0x71d0('0x87')]+'/oauth2/token','form':{'client_id':_0x41829c[_0x71d0('0x88')],'resource':_0x21b0ba,'username':_0x41829c[_0x71d0('0x8f')],'password':_0x41829c['password'],'grant_type':_0x71d0('0x90'),'client_secret':_0x41829c[_0x71d0('0x89')]},'json':!![]};return rp(_0x6f3108);}})[_0x71d0('0xe')](function(_0x539443){_0x3e7442=_0x539443[_0x71d0('0x8e')];var _0x1ec216={'method':_0x71d0('0x91'),'uri':encodeURI(_0x158d29+_0x71d0('0x92')+_0x189a80+'\x27'),'headers':{'Authorization':_0x71d0('0x93')+_0x3e7442,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1ec216);})[_0x71d0('0xe')](function(_0x321b3f){var _0x4a8e0b=_0x321b3f[_0x71d0('0x94')][0x0];var _0x5c5e27=_0x4a8e0b[_0x71d0('0x95')];var _0x2775f6={'method':_0x71d0('0x91'),'uri':_0x158d29+_0x71d0('0x96')+_0x5c5e27+_0x71d0('0x97'),'headers':{'Authorization':_0x71d0('0x93')+_0x3e7442,'If-None-Match':null,'OData-Version':_0x71d0('0x98')},'json':!![]};return rp(_0x2775f6);})[_0x71d0('0xe')](function(_0x108e6d){_0x32c4ab=_0x108e6d;_0x549d98=_0x32c4ab['Attributes'];_0x549d98=_[_0x71d0('0x99')](_0x549d98,function(_0x5fde2f){return!_0x323728[_0x71d0('0x9a')](_0x5fde2f['LogicalName']);});var _0x3ff7c1=[];var _0x2a15c7=[];_0x549d98[_0x71d0('0x9b')](function(_0x538041){if(_0x538041[_0x71d0('0x9c')]){var _0x50c7fd=_0x538041['@odata.type'][_0x71d0('0x3f')](_0x538041[_0x71d0('0x9c')][_0x71d0('0x40')]('.')+0x1);if(_0x50c7fd===_0x71d0('0x9d')){_0x3ff7c1[_0x71d0('0x9e')](getSelectList(_0x158d29,_0x4506b2,_0x2a15c7,_0x32c4ab['MetadataId'],_0x538041[_0x71d0('0x95')],_0x3e7442));}}});return Promise['all'](_0x3ff7c1);})[_0x71d0('0xe')](function(_0xb3756e){_0xfab4bc=_0xb3756e[0x0];var _0x468c73=[];var _0x597878=[];_0x549d98[_0x71d0('0x9b')](function(_0x258972){if(!_[_0x71d0('0x9f')](_0x258972['@odata.type'])){var _0x9f6525=_0x258972['@odata.type']['substring'](_0x258972[_0x71d0('0x9c')][_0x71d0('0x40')]('.')+0x1);if(_0x9f6525===_0x71d0('0xa0')){_0x468c73[_0x71d0('0x9e')](getBooleanList(_0x158d29,_0x4506b2,_0x597878,_0x32c4ab[_0x71d0('0x95')],_0x258972[_0x71d0('0x95')],_0x3e7442));}}});return Promise[_0x71d0('0xa1')](_0x468c73);})[_0x71d0('0xe')](function(_0x5ca001){_0x4a0f9e=_0x5ca001[0x0];var _0x14faaa=[];var _0x3821c5=[];_0x549d98[_0x71d0('0x9b')](function(_0x236940){if(_0x236940[_0x71d0('0x9c')]){var _0xee194f=_0x236940['@odata.type'][_0x71d0('0x3f')](_0x236940[_0x71d0('0x9c')][_0x71d0('0x40')]('.')+0x1);if(_0xee194f===_0x71d0('0xa2')||_0xee194f===_0x71d0('0xa3')||_0xee194f===_0x71d0('0xa4')||_0xee194f===_0x71d0('0xa5')||_0xee194f===_0x71d0('0xa6')||_0xee194f===_0x71d0('0xa7')||_0xee194f===_0x71d0('0xa8')||_0xee194f===_0x71d0('0xa9')||_0xee194f===_0x71d0('0xaa')||_0xee194f===_0x71d0('0xab')){_0x14faaa[_0x71d0('0x9e')](getInputList(_0x158d29,_0x4506b2,_0xee194f,_0x3821c5,_0x32c4ab[_0x71d0('0x95')],_0x236940['MetadataId'],_0x3e7442));}}});return Promise[_0x71d0('0xa1')](_0x14faaa);})['then'](function(_0xad8ab3){_0x42c912=_0xad8ab3[0x0];var _0x23746c=_0xfab4bc['concat'](_0x4a0f9e)['concat'](_0x42c912);var _0x2ede43={'count':_0x23746c[_0x71d0('0x1f')],'rows':_0x23746c};return _0x2ede43;})[_0x71d0('0xe')](respondWithResult(_0x4a9404,null))['catch'](function(_0x41ef31){var _0x472d1d=_0x9a8631[_0x71d0('0x19')][_0x71d0('0xac')]?0x1f4:_0x41ef31[_0x71d0('0xad')]||0x1f4;logger[_0x71d0('0x10')](_0x41ef31[_0x71d0('0x11')]);delete _0x41ef31['name'];if(_0x472d1d===0x191){_0x472d1d=0x190;}_0x4a9404[_0x71d0('0x6')](_0x472d1d)[_0x71d0('0x13')](_0x9a8631[_0x71d0('0x19')][_0x71d0('0xac')]?{'message':_0x71d0('0xae'),'statusCode':_0x41ef31[_0x71d0('0xad')]}:_0x41ef31);});};function getSelectList(_0x4dd3ad,_0x448cea,_0x30274d,_0x4d6fe3,_0x203c0e,_0x5c4194){var _0x7d76d9={'method':_0x71d0('0x91'),'uri':_0x4dd3ad+_0x71d0('0x96')+_0x4d6fe3+')/Attributes('+_0x203c0e+_0x71d0('0xaf')+_0x71d0('0xb0'),'headers':{'Authorization':_0x71d0('0x93')+_0x5c4194,'If-None-Match':null,'OData-Version':_0x71d0('0x98')},'json':!![]};return rp(_0x7d76d9)[_0x71d0('0xe')](function(_0x2a0809){var _0x1f903d=[];var _0x3b6b63=_0x2a0809[_0x71d0('0xb1')][_0x71d0('0xb2')];_0x3b6b63[_0x71d0('0x9b')](function(_0xe7f4ed){_0x1f903d[_0x71d0('0x9e')]({'name':_0xe7f4ed[_0x71d0('0xb3')]['UserLocalizedLabel'][_0x71d0('0xb3')],'value':String(_0xe7f4ed[_0x71d0('0xb4')])});});var _0x4e6104={'id':_0x448cea+'_'+_0x2a0809[_0x71d0('0xb5')],'name':_0x2a0809[_0x71d0('0xb6')][_0x71d0('0xb7')][_0x71d0('0xb3')],'custom':![],'options':_0x1f903d};_0x30274d[_0x71d0('0x9e')](_0x4e6104);return _0x30274d;});}function getBooleanList(_0xc03633,_0x162a38,_0x431721,_0x3c14aa,_0x48445a,_0x3193d0){var _0x4ddace={'method':_0x71d0('0x91'),'uri':_0xc03633+'EntityDefinitions('+_0x3c14aa+_0x71d0('0xb8')+_0x48445a+_0x71d0('0xb9'),'headers':{'Authorization':_0x71d0('0x93')+_0x3193d0,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4ddace)[_0x71d0('0xe')](function(_0x459634){var _0x4fd444=[];_0x4fd444['push']({'name':_0x459634[_0x71d0('0xb1')]['TrueOption'][_0x71d0('0xb3')][_0x71d0('0xb7')][_0x71d0('0xb3')],'value':_0x71d0('0xba')},{'name':_0x459634[_0x71d0('0xb1')][_0x71d0('0xbb')][_0x71d0('0xb3')][_0x71d0('0xb7')][_0x71d0('0xb3')],'value':'false'});var _0x3bed03={'id':_0x162a38+'_'+_0x459634[_0x71d0('0xb5')],'name':_0x459634[_0x71d0('0xb6')][_0x71d0('0xb7')][_0x71d0('0xb3')],'custom':![],'options':_0x4fd444};_0x431721[_0x71d0('0x9e')](_0x3bed03);return _0x431721;});}function getInputList(_0x22b5f4,_0x3ab76f,_0x5ce6a2,_0x40b695,_0x20a5ce,_0x455b3a,_0xd20362){var _0x2f7bea={'method':_0x71d0('0x91'),'uri':_0x22b5f4+'EntityDefinitions('+_0x20a5ce+')/Attributes('+_0x455b3a+_0x71d0('0xbc')+_0x5ce6a2+_0x71d0('0xbd'),'headers':{'Authorization':'Bearer\x20'+_0xd20362,'If-None-Match':null,'OData-Version':_0x71d0('0x98')},'json':!![]};return rp(_0x2f7bea)['then'](function(_0x52d5b6){var _0xb0d0f1={'id':_0x3ab76f+'_'+_0x52d5b6['LogicalName'],'name':_0x52d5b6['DisplayName'][_0x71d0('0xb7')]?_0x52d5b6[_0x71d0('0xb6')]['UserLocalizedLabel'][_0x71d0('0xb3')]:_0x52d5b6[_0x71d0('0xb5')],'custom':![],'options':[]};_0x40b695[_0x71d0('0x9e')](_0xb0d0f1);return _0x40b695;});}
\ No newline at end of file
index 008575b..14ee5f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['Dynamics365Account','int_dynamics365_accounts','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x64c529,_0x537ef6){var _0x569b31=function(_0x5bfc7c){while(--_0x5bfc7c){_0x64c529['push'](_0x64c529['shift']());}};_0x569b31(++_0x537ef6);}(_0x757a,0xde));var _0xa757=function(_0x4dac66,_0x50dcdb){_0x4dac66=_0x4dac66-0x0;var _0x281eec=_0x757a[_0x4dac66];return _0x281eec;};'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'));var integrations=require(_0xa757('0x7'));module['exports']=function(_0xae0e7c,_0x4343b6){return _0xae0e7c['define'](_0xa757('0x8'),attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x85e0e2,_0x85f164){var _0x3a96d2=function(_0x308d32){while(--_0x308d32){_0x85e0e2['push'](_0x85e0e2['shift']());}};_0x3a96d2(++_0x85f164);}(_0xb7e7,0x121));var _0x7b7e=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0xb7e7[_0xaa0309];return _0x5de7ce;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x333fa4,_0x372bde){return _0x333fa4[_0x7b7e('0x7')]('Dynamics365Account',attributes,{'tableName':_0x7b7e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3881eaa..70c3b99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','map','model','ShowDynamics365Account','find','util','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x23e5f1,_0x37cff7){var _0x395f97=function(_0x512f96){while(--_0x512f96){_0x23e5f1['push'](_0x23e5f1['shift']());}};_0x395f97(++_0x37cff7);}(_0xdace,0xc1));var _0xedac=function(_0x3e32a8,_0x255953){_0x3e32a8=_0x3e32a8-0x0;var _0x2997b0=_0xdace[_0x3e32a8];return _0x2997b0;};'use strict';var _=require('lodash');var util=require(_0xedac('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xedac('0x1'))['db'];var utils=require(_0xedac('0x2'));var logger=require(_0xedac('0x3'))('rpc');var config=require(_0xedac('0x4'));var jayson=require(_0xedac('0x5'));var client=jayson[_0xedac('0x6')][_0xedac('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x205d95,_0x118484,_0x2ac06c){return new BPromise(function(_0x4fcba9,_0x46e299){return client[_0xedac('0x8')](_0x205d95,_0x2ac06c)[_0xedac('0x9')](function(_0x210166){logger[_0xedac('0xa')](_0xedac('0xb'),_0x118484,_0xedac('0xc'));logger[_0xedac('0xd')](_0xedac('0xe'),_0x118484,_0xedac('0xc'),JSON[_0xedac('0xf')](_0x210166));if(_0x210166[_0xedac('0x10')]){if(_0x210166[_0xedac('0x10')][_0xedac('0x11')]===0x1f4){logger[_0xedac('0x10')](_0xedac('0xb'),_0x118484,_0x210166[_0xedac('0x10')][_0xedac('0x12')]);return _0x46e299(_0x210166['error']['message']);}logger[_0xedac('0x10')](_0xedac('0xb'),_0x118484,_0x210166[_0xedac('0x10')]['message']);return _0x4fcba9(_0x210166[_0xedac('0x10')][_0xedac('0x12')]);}else{logger[_0xedac('0xa')](_0xedac('0xb'),_0x118484,_0xedac('0xc'));_0x4fcba9(_0x210166['result'][_0xedac('0x12')]);}})[_0xedac('0x13')](function(_0x55fa2f){logger[_0xedac('0x10')]('Dynamics365Account,\x20%s,\x20%s',_0x118484,_0x55fa2f);_0x46e299(_0x55fa2f);});});}exports[_0xedac('0x14')]=function(_0x14350e){var _0xe24512=this;return new Promise(function(_0x5a6d9b,_0x29d770){return db[_0xedac('0x15')][_0xedac('0x16')]({'raw':_0x14350e[_0xedac('0x17')]?_0x14350e[_0xedac('0x17')][_0xedac('0x18')]===undefined?!![]:![]:!![],'where':_0x14350e['options']?_0x14350e[_0xedac('0x17')][_0xedac('0x19')]||null:null,'attributes':_0x14350e['options']?_0x14350e[_0xedac('0x17')][_0xedac('0x1a')]||null:null,'limit':_0x14350e['options']?_0x14350e[_0xedac('0x17')][_0xedac('0x1b')]||null:null,'include':_0x14350e[_0xedac('0x17')]?_0x14350e[_0xedac('0x17')][_0xedac('0x1c')]?_[_0xedac('0x1d')](_0x14350e[_0xedac('0x17')]['include'],function(_0x1479a4){return{'model':db[_0x1479a4[_0xedac('0x1e')]],'as':_0x1479a4['as'],'attributes':_0x1479a4[_0xedac('0x1a')],'include':_0x1479a4[_0xedac('0x1c')]?_[_0xedac('0x1d')](_0x1479a4[_0xedac('0x1c')],function(_0x5eb3e0){return{'model':db[_0x5eb3e0[_0xedac('0x1e')]],'as':_0x5eb3e0['as'],'attributes':_0x5eb3e0[_0xedac('0x1a')],'include':_0x5eb3e0[_0xedac('0x1c')]?_[_0xedac('0x1d')](_0x5eb3e0['include'],function(_0x5148af){return{'model':db[_0x5148af['model']],'as':_0x5148af['as'],'attributes':_0x5148af[_0xedac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xedac('0x9')](function(_0x3c6f7b){logger[_0xedac('0xa')]('GetDynamics365Account',_0x14350e);logger['debug']('GetDynamics365Account',_0x14350e,JSON[_0xedac('0xf')](_0x3c6f7b));_0x5a6d9b(_0x3c6f7b);})['catch'](function(_0x49ca91){logger[_0xedac('0x10')](_0xedac('0x14'),_0x49ca91[_0xedac('0x12')],_0x14350e);_0x29d770(_0xe24512[_0xedac('0x10')](0x1f4,_0x49ca91[_0xedac('0x12')]));});});};exports[_0xedac('0x1f')]=function(_0x4f7985){var _0x181402=this;return new Promise(function(_0xb6854a,_0x13ee48){return db[_0xedac('0x15')][_0xedac('0x20')]({'raw':_0x4f7985['options']?_0x4f7985[_0xedac('0x17')][_0xedac('0x18')]===undefined?!![]:![]:!![],'where':_0x4f7985[_0xedac('0x17')]?_0x4f7985['options']['where']||null:null,'attributes':_0x4f7985[_0xedac('0x17')]?_0x4f7985[_0xedac('0x17')][_0xedac('0x1a')]||null:null,'include':_0x4f7985[_0xedac('0x17')]?_0x4f7985[_0xedac('0x17')][_0xedac('0x1c')]?_['map'](_0x4f7985['options']['include'],function(_0x1ee88b){return{'model':db[_0x1ee88b['model']],'as':_0x1ee88b['as'],'attributes':_0x1ee88b['attributes'],'include':_0x1ee88b[_0xedac('0x1c')]?_['map'](_0x1ee88b['include'],function(_0x84584c){return{'model':db[_0x84584c[_0xedac('0x1e')]],'as':_0x84584c['as'],'attributes':_0x84584c['attributes'],'include':_0x84584c[_0xedac('0x1c')]?_[_0xedac('0x1d')](_0x84584c[_0xedac('0x1c')],function(_0x181a5f){return{'model':db[_0x181a5f[_0xedac('0x1e')]],'as':_0x181a5f['as'],'attributes':_0x181a5f[_0xedac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xedac('0x9')](function(_0x44cfed){logger[_0xedac('0xa')](_0xedac('0x1f'),_0x4f7985);logger[_0xedac('0xd')](_0xedac('0x1f'),_0x4f7985,JSON[_0xedac('0xf')](_0x44cfed));_0xb6854a(_0x44cfed);})['catch'](function(_0x4d853c){logger[_0xedac('0x10')](_0xedac('0x1f'),_0x4d853c[_0xedac('0x12')],_0x4f7985);_0x13ee48(_0x181402['error'](0x1f4,_0x4d853c[_0xedac('0x12')]));});});};
\ No newline at end of file
+var _0x99d8=['http','then','Dynamics365Account,\x20%s,\x20%s','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','map','model','ShowDynamics365Account','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x333f8b,_0x4a5186){var _0x3f9d03=function(_0xf2055c){while(--_0xf2055c){_0x333f8b['push'](_0x333f8b['shift']());}};_0x3f9d03(++_0x4a5186);}(_0x99d8,0x178));var _0x899d=function(_0x5a2285,_0x3212d1){_0x5a2285=_0x5a2285-0x0;var _0x48f6ed=_0x99d8[_0x5a2285];return _0x48f6ed;};'use strict';var _=require(_0x899d('0x0'));var util=require(_0x899d('0x1'));var moment=require('moment');var BPromise=require(_0x899d('0x2'));var rs=require(_0x899d('0x3'));var fs=require('fs');var Redis=require(_0x899d('0x4'));var db=require(_0x899d('0x5'))['db'];var utils=require(_0x899d('0x6'));var logger=require(_0x899d('0x7'))(_0x899d('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x899d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x369ad4,_0x1473d6,_0x3e0fe0){return new BPromise(function(_0x283918,_0x3d0cac){return client['request'](_0x369ad4,_0x3e0fe0)[_0x899d('0xa')](function(_0x53e320){logger['info'](_0x899d('0xb'),_0x1473d6,'request\x20sent');logger[_0x899d('0xc')](_0x899d('0xd'),_0x1473d6,_0x899d('0xe'),JSON[_0x899d('0xf')](_0x53e320));if(_0x53e320['error']){if(_0x53e320[_0x899d('0x10')][_0x899d('0x11')]===0x1f4){logger[_0x899d('0x10')](_0x899d('0xb'),_0x1473d6,_0x53e320[_0x899d('0x10')][_0x899d('0x12')]);return _0x3d0cac(_0x53e320[_0x899d('0x10')][_0x899d('0x12')]);}logger['error'](_0x899d('0xb'),_0x1473d6,_0x53e320['error']['message']);return _0x283918(_0x53e320['error'][_0x899d('0x12')]);}else{logger[_0x899d('0x13')]('Dynamics365Account,\x20%s,\x20%s',_0x1473d6,_0x899d('0xe'));_0x283918(_0x53e320[_0x899d('0x14')]['message']);}})[_0x899d('0x15')](function(_0x195b5b){logger['error'](_0x899d('0xb'),_0x1473d6,_0x195b5b);_0x3d0cac(_0x195b5b);});});}exports[_0x899d('0x16')]=function(_0x26fb43){var _0xfe6dba=this;return new Promise(function(_0x50d0fc,_0x40120f){return db[_0x899d('0x17')][_0x899d('0x18')]({'raw':_0x26fb43[_0x899d('0x19')]?_0x26fb43[_0x899d('0x19')][_0x899d('0x1a')]===undefined?!![]:![]:!![],'where':_0x26fb43[_0x899d('0x19')]?_0x26fb43['options'][_0x899d('0x1b')]||null:null,'attributes':_0x26fb43[_0x899d('0x19')]?_0x26fb43[_0x899d('0x19')][_0x899d('0x1c')]||null:null,'limit':_0x26fb43[_0x899d('0x19')]?_0x26fb43[_0x899d('0x19')][_0x899d('0x1d')]||null:null,'include':_0x26fb43['options']?_0x26fb43[_0x899d('0x19')][_0x899d('0x1e')]?_[_0x899d('0x1f')](_0x26fb43[_0x899d('0x19')]['include'],function(_0x5e52c7){return{'model':db[_0x5e52c7[_0x899d('0x20')]],'as':_0x5e52c7['as'],'attributes':_0x5e52c7[_0x899d('0x1c')],'include':_0x5e52c7[_0x899d('0x1e')]?_[_0x899d('0x1f')](_0x5e52c7[_0x899d('0x1e')],function(_0x1d21e3){return{'model':db[_0x1d21e3[_0x899d('0x20')]],'as':_0x1d21e3['as'],'attributes':_0x1d21e3[_0x899d('0x1c')],'include':_0x1d21e3[_0x899d('0x1e')]?_[_0x899d('0x1f')](_0x1d21e3[_0x899d('0x1e')],function(_0x406219){return{'model':db[_0x406219[_0x899d('0x20')]],'as':_0x406219['as'],'attributes':_0x406219[_0x899d('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2469d3){logger['info'](_0x899d('0x16'),_0x26fb43);logger[_0x899d('0xc')](_0x899d('0x16'),_0x26fb43,JSON[_0x899d('0xf')](_0x2469d3));_0x50d0fc(_0x2469d3);})[_0x899d('0x15')](function(_0x477986){logger[_0x899d('0x10')]('GetDynamics365Account',_0x477986[_0x899d('0x12')],_0x26fb43);_0x40120f(_0xfe6dba[_0x899d('0x10')](0x1f4,_0x477986[_0x899d('0x12')]));});});};exports[_0x899d('0x21')]=function(_0x508ac7){var _0xb975d3=this;return new Promise(function(_0x158809,_0x1e9015){return db[_0x899d('0x17')][_0x899d('0x22')]({'raw':_0x508ac7[_0x899d('0x19')]?_0x508ac7[_0x899d('0x19')][_0x899d('0x1a')]===undefined?!![]:![]:!![],'where':_0x508ac7[_0x899d('0x19')]?_0x508ac7['options'][_0x899d('0x1b')]||null:null,'attributes':_0x508ac7['options']?_0x508ac7['options'][_0x899d('0x1c')]||null:null,'include':_0x508ac7[_0x899d('0x19')]?_0x508ac7[_0x899d('0x19')][_0x899d('0x1e')]?_[_0x899d('0x1f')](_0x508ac7[_0x899d('0x19')][_0x899d('0x1e')],function(_0x14460e){return{'model':db[_0x14460e[_0x899d('0x20')]],'as':_0x14460e['as'],'attributes':_0x14460e['attributes'],'include':_0x14460e['include']?_[_0x899d('0x1f')](_0x14460e[_0x899d('0x1e')],function(_0x561742){return{'model':db[_0x561742[_0x899d('0x20')]],'as':_0x561742['as'],'attributes':_0x561742['attributes'],'include':_0x561742['include']?_['map'](_0x561742[_0x899d('0x1e')],function(_0x33e560){return{'model':db[_0x33e560[_0x899d('0x20')]],'as':_0x33e560['as'],'attributes':_0x33e560[_0x899d('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x899d('0xa')](function(_0x2aff80){logger['info'](_0x899d('0x21'),_0x508ac7);logger[_0x899d('0xc')](_0x899d('0x21'),_0x508ac7,JSON[_0x899d('0xf')](_0x2aff80));_0x158809(_0x2aff80);})[_0x899d('0x15')](function(_0x495246){logger[_0x899d('0x10')](_0x899d('0x21'),_0x495246[_0x899d('0x12')],_0x508ac7);_0x1e9015(_0xb975d3['error'](0x1f4,_0x495246[_0x899d('0x12')]));});});};
\ No newline at end of file
index 1b40193..5260ed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6888=['../../components/auth/service','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x4cf5f7,_0x1d67c5){var _0x930797=function(_0x31dcf0){while(--_0x31dcf0){_0x4cf5f7['push'](_0x4cf5f7['shift']());}};_0x930797(++_0x1d67c5);}(_0x6888,0xd2));var _0x8688=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x6888[_0x50a0c2];return _0x5ebadd;};'use strict';var multer=require(_0x8688('0x0'));var util=require('util');var path=require(_0x8688('0x1'));var timeout=require(_0x8688('0x2'));var express=require(_0x8688('0x3'));var router=express[_0x8688('0x4')]();var fs_extra=require(_0x8688('0x5'));var auth=require(_0x8688('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8688('0x7'));router[_0x8688('0x8')]('/',auth[_0x8688('0x9')](),controller[_0x8688('0xa')]);router[_0x8688('0x8')](_0x8688('0xb'),auth['isAuthenticated'](),controller[_0x8688('0xc')]);router[_0x8688('0x8')](_0x8688('0xd'),auth[_0x8688('0x9')](),controller[_0x8688('0xe')]);router['get']('/:id/subjects',auth[_0x8688('0x9')](),controller[_0x8688('0xf')]);router[_0x8688('0x8')](_0x8688('0x10'),auth[_0x8688('0x9')](),controller[_0x8688('0x11')]);router[_0x8688('0x12')]('/',auth[_0x8688('0x9')](),controller[_0x8688('0x13')]);router['put'](_0x8688('0xb'),auth[_0x8688('0x9')](),controller[_0x8688('0x14')]);router[_0x8688('0x15')](_0x8688('0xb'),auth[_0x8688('0x9')](),controller[_0x8688('0x16')]);module[_0x8688('0x17')]=router;
\ No newline at end of file
+var _0x4e63=['/:id/descriptions','getDescriptions','post','create','put','/:id','delete','destroy','exports','util','express','../../components/auth/service','../../components/interaction/service','./intDynamics365Configuration.controller','get','isAuthenticated','index','show','getFields','/:id/subjects','getSubjects'];(function(_0x4e460c,_0x538c1d){var _0x30bf75=function(_0x17c0f3){while(--_0x17c0f3){_0x4e460c['push'](_0x4e460c['shift']());}};_0x30bf75(++_0x538c1d);}(_0x4e63,0x1ad));var _0x34e6=function(_0x42dbd1,_0x45450a){_0x42dbd1=_0x42dbd1-0x0;var _0x445ce3=_0x4e63[_0x42dbd1];return _0x445ce3;};'use strict';var multer=require('multer');var util=require(_0x34e6('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x34e6('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x34e6('0x2'));var interaction=require(_0x34e6('0x3'));var config=require('../../config/environment');var controller=require(_0x34e6('0x4'));router[_0x34e6('0x5')]('/',auth[_0x34e6('0x6')](),controller[_0x34e6('0x7')]);router[_0x34e6('0x5')]('/:id',auth[_0x34e6('0x6')](),controller[_0x34e6('0x8')]);router[_0x34e6('0x5')]('/:id/fields',auth[_0x34e6('0x6')](),controller[_0x34e6('0x9')]);router['get'](_0x34e6('0xa'),auth['isAuthenticated'](),controller[_0x34e6('0xb')]);router[_0x34e6('0x5')](_0x34e6('0xc'),auth[_0x34e6('0x6')](),controller[_0x34e6('0xd')]);router[_0x34e6('0xe')]('/',auth[_0x34e6('0x6')](),controller[_0x34e6('0xf')]);router[_0x34e6('0x10')](_0x34e6('0x11'),auth[_0x34e6('0x6')](),controller['update']);router[_0x34e6('0x12')](_0x34e6('0x11'),auth[_0x34e6('0x6')](),controller[_0x34e6('0x13')]);module[_0x34e6('0x14')]=router;
\ No newline at end of file
index b7f9ca6..317773a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fcf=['ENUM','incident','contact','nothing','BOOLEAN','sequelize','exports','STRING'];(function(_0x1b21be,_0x133419){var _0x299c07=function(_0x53daf6){while(--_0x53daf6){_0x1b21be['push'](_0x1b21be['shift']());}};_0x299c07(++_0x133419);}(_0x3fcf,0x115));var _0xf3fc=function(_0x3b9cb2,_0x4f7a3b){_0x3b9cb2=_0x3b9cb2-0x0;var _0x32ec0a=_0x3fcf[_0x3b9cb2];return _0x32ec0a;};'use strict';var Sequelize=require(_0xf3fc('0x0'));module[_0xf3fc('0x1')]={'name':{'type':Sequelize[_0xf3fc('0x2')]},'description':{'type':Sequelize[_0xf3fc('0x2')]},'ticketType':{'type':Sequelize[_0xf3fc('0x3')](_0xf3fc('0x4'),'phonecall'),'defaultValue':_0xf3fc('0x4')},'moduleCreate':{'type':Sequelize['ENUM'](_0xf3fc('0x5'),_0xf3fc('0x6')),'defaultValue':_0xf3fc('0x5'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize['STRING'],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xf3fc('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x5814=['BOOLEAN','STRING','ENUM','incident','contact'];(function(_0x5dc3da,_0x31d4cb){var _0x3c266f=function(_0x1f8e41){while(--_0x1f8e41){_0x5dc3da['push'](_0x5dc3da['shift']());}};_0x3c266f(++_0x31d4cb);}(_0x5814,0x83));var _0x4581=function(_0x7b3993,_0x52168b){_0x7b3993=_0x7b3993-0x0;var _0x566195=_0x5814[_0x7b3993];return _0x566195;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4581('0x0')]},'description':{'type':Sequelize[_0x4581('0x0')]},'ticketType':{'type':Sequelize[_0x4581('0x1')](_0x4581('0x2'),'phonecall'),'defaultValue':_0x4581('0x2')},'moduleCreate':{'type':Sequelize[_0x4581('0x1')](_0x4581('0x3'),'nothing'),'defaultValue':_0x4581('0x3'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x4581('0x0')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x4581('0x4')],'defaultValue':!![]}};
\ No newline at end of file
index 3d45fff..9cef329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x963b=['key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','params','keys','options','find','create','body','getFields','findOne','getSubjects','Dynamics365Field','order','getDescriptions','pick','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','send','map','Dynamics365Configuration','rawAttributes','fieldName','type'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x963b,0x105));var _0xb963=function(_0x16eb11,_0x1a2251){_0x16eb11=_0x16eb11-0x0;var _0x3ae7ef=_0x963b[_0x16eb11];return _0x3ae7ef;};'use strict';var emlformat=require(_0xb963('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb963('0x1'));var jsonpatch=require(_0xb963('0x2'));var rp=require('request-promise');var moment=require(_0xb963('0x3'));var BPromise=require(_0xb963('0x4'));var Mustache=require(_0xb963('0x5'));var util=require(_0xb963('0x6'));var path=require(_0xb963('0x7'));var sox=require(_0xb963('0x8'));var csv=require('to-csv');var ejs=require(_0xb963('0x9'));var fs=require('fs');var fs_extra=require(_0xb963('0xa'));var _=require(_0xb963('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb963('0xc'));var deskjs=require(_0xb963('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb963('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb963('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb963('0x10'));var utils=require(_0xb963('0x11'));var config=require(_0xb963('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xb963('0x13'))['db'];function respondWithStatusCode(_0x128117,_0x3b7266){_0x3b7266=_0x3b7266||0xcc;return function(_0x27cbb5){if(_0x27cbb5){return _0x128117['sendStatus'](_0x3b7266);}return _0x128117[_0xb963('0x14')](_0x3b7266)[_0xb963('0x15')]();};}function respondWithResult(_0x1472d8,_0x23704e){_0x23704e=_0x23704e||0xc8;return function(_0x4686e8){if(_0x4686e8){return _0x1472d8[_0xb963('0x14')](_0x23704e)[_0xb963('0x16')](_0x4686e8);}};}function respondWithFilteredResult(_0x2d91ea,_0x5cb426){return function(_0x357825){if(_0x357825){var _0x4376f9=typeof _0x5cb426['offset']===_0xb963('0x17')&&typeof _0x5cb426[_0xb963('0x18')]===_0xb963('0x17');var _0x4049cb=_0x357825[_0xb963('0x19')];var _0x212b8e=_0x4376f9?0x0:_0x5cb426['offset'];var _0x32bdb0=_0x4376f9?_0x357825[_0xb963('0x19')]:_0x5cb426[_0xb963('0x1a')]+_0x5cb426[_0xb963('0x18')];var _0x9658ad;if(_0x32bdb0>=_0x4049cb){_0x32bdb0=_0x4049cb;_0x9658ad=0xc8;}else{_0x9658ad=0xce;}_0x2d91ea[_0xb963('0x14')](_0x9658ad);return _0x2d91ea[_0xb963('0x1b')](_0xb963('0x1c'),_0x212b8e+'-'+_0x32bdb0+'/'+_0x4049cb)[_0xb963('0x16')](_0x357825);}return null;};}function patchUpdates(_0x41c0b4){return function(_0x4318ae){try{jsonpatch[_0xb963('0x1d')](_0x4318ae,_0x41c0b4,!![]);}catch(_0x268584){return BPromise['reject'](_0x268584);}return _0x4318ae['save']();};}function saveUpdates(_0xbe0d0b,_0x297a5c){return function(_0x1f0a12){if(_0x1f0a12){return _0x1f0a12[_0xb963('0x1e')](_0xbe0d0b)[_0xb963('0x1f')](function(_0x3aa4ef){return _0x3aa4ef;});}return null;};}function removeEntity(_0x44de8c,_0xa872b5){return function(_0x272e37){if(_0x272e37){return _0x272e37[_0xb963('0x20')]()[_0xb963('0x1f')](function(){_0x44de8c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ec4f6,_0x48e938){return function(_0x580030){if(!_0x580030){_0x5ec4f6[_0xb963('0x21')](0x194);}return _0x580030;};}function handleError(_0x44be76,_0x12beaf){_0x12beaf=_0x12beaf||0x1f4;return function(_0x3738a1){logger[_0xb963('0x22')](_0x3738a1[_0xb963('0x23')]);if(_0x3738a1[_0xb963('0x24')]){delete _0x3738a1[_0xb963('0x24')];}_0x44be76[_0xb963('0x14')](_0x12beaf)[_0xb963('0x25')](_0x3738a1);};}exports['index']=function(_0x5826c1,_0x202b57){var _0x18f9f6={},_0x4cbf85={},_0x47b17c={'count':0x0,'rows':[]};var _0x534ad4=_[_0xb963('0x26')](db[_0xb963('0x27')][_0xb963('0x28')],function(_0x13d52b){return{'name':_0x13d52b[_0xb963('0x29')],'type':_0x13d52b[_0xb963('0x2a')][_0xb963('0x2b')]};});_0x4cbf85[_0xb963('0x2c')]=_['map'](_0x534ad4,'name');_0x4cbf85[_0xb963('0x2d')]=_['keys'](_0x5826c1[_0xb963('0x2d')]);_0x4cbf85['filters']=_[_0xb963('0x2e')](_0x4cbf85['model'],_0x4cbf85['query']);_0x18f9f6['attributes']=_[_0xb963('0x2e')](_0x4cbf85[_0xb963('0x2c')],qs[_0xb963('0x2f')](_0x5826c1[_0xb963('0x2d')][_0xb963('0x2f')]));_0x18f9f6['attributes']=_0x18f9f6[_0xb963('0x30')][_0xb963('0x31')]?_0x18f9f6[_0xb963('0x30')]:_0x4cbf85[_0xb963('0x2c')];if(!_0x5826c1['query'][_0xb963('0x32')](_0xb963('0x33'))){_0x18f9f6[_0xb963('0x18')]=qs[_0xb963('0x18')](_0x5826c1['query'][_0xb963('0x18')]);_0x18f9f6[_0xb963('0x1a')]=qs[_0xb963('0x1a')](_0x5826c1['query'][_0xb963('0x1a')]);}_0x18f9f6['order']=qs[_0xb963('0x34')](_0x5826c1[_0xb963('0x2d')]['sort']);_0x18f9f6[_0xb963('0x35')]=qs[_0xb963('0x36')](_['pick'](_0x5826c1[_0xb963('0x2d')],_0x4cbf85['filters']),_0x534ad4);if(_0x5826c1[_0xb963('0x2d')]['filter']){_0x18f9f6['where']=_[_0xb963('0x37')](_0x18f9f6[_0xb963('0x35')],{'$or':_[_0xb963('0x26')](_0x534ad4,function(_0x38b8c7){if(_0x38b8c7['type']!==_0xb963('0x38')){var _0x576cbf={};_0x576cbf[_0x38b8c7[_0xb963('0x24')]]={'$like':'%'+_0x5826c1['query'][_0xb963('0x39')]+'%'};return _0x576cbf;}})});}_0x18f9f6=_[_0xb963('0x37')]({},_0x18f9f6,_0x5826c1['options']);var _0x3b2da4={'where':_0x18f9f6[_0xb963('0x35')]};return db[_0xb963('0x27')][_0xb963('0x19')](_0x3b2da4)[_0xb963('0x1f')](function(_0x271f6f){_0x47b17c[_0xb963('0x19')]=_0x271f6f;if(_0x5826c1[_0xb963('0x2d')][_0xb963('0x3a')]){_0x18f9f6[_0xb963('0x3b')]=[{'all':!![]}];}return db[_0xb963('0x27')][_0xb963('0x3c')](_0x18f9f6);})[_0xb963('0x1f')](function(_0x5bcefb){_0x47b17c[_0xb963('0x3d')]=_0x5bcefb;return _0x47b17c;})[_0xb963('0x1f')](respondWithFilteredResult(_0x202b57,_0x18f9f6))[_0xb963('0x3e')](handleError(_0x202b57,null));};exports['show']=function(_0x24b110,_0x3a2d6f){var _0x13b312={'raw':![],'where':{'id':_0x24b110[_0xb963('0x3f')]['id']}},_0x18e48a={};_0x18e48a[_0xb963('0x2c')]=_[_0xb963('0x40')](db[_0xb963('0x27')][_0xb963('0x28')]);_0x18e48a['query']=_[_0xb963('0x40')](_0x24b110[_0xb963('0x2d')]);_0x18e48a[_0xb963('0x36')]=_['intersection'](_0x18e48a['model'],_0x18e48a['query']);_0x13b312['attributes']=_[_0xb963('0x2e')](_0x18e48a['model'],qs[_0xb963('0x2f')](_0x24b110[_0xb963('0x2d')]['fields']));_0x13b312[_0xb963('0x30')]=_0x13b312[_0xb963('0x30')][_0xb963('0x31')]?_0x13b312[_0xb963('0x30')]:_0x18e48a[_0xb963('0x2c')];if(_0x24b110[_0xb963('0x2d')][_0xb963('0x3a')]){_0x13b312[_0xb963('0x3b')]=[{'all':!![]}];}_0x13b312=_[_0xb963('0x37')]({},_0x13b312,_0x24b110[_0xb963('0x41')]);return db[_0xb963('0x27')][_0xb963('0x42')](_0x13b312)[_0xb963('0x1f')](handleEntityNotFound(_0x3a2d6f,null))[_0xb963('0x1f')](respondWithResult(_0x3a2d6f,null))['catch'](handleError(_0x3a2d6f,null));};exports[_0xb963('0x43')]=function(_0x52b33a,_0x4c08a8){return db[_0xb963('0x27')][_0xb963('0x43')](_0x52b33a[_0xb963('0x44')],{})[_0xb963('0x1f')](respondWithResult(_0x4c08a8,0xc9))[_0xb963('0x3e')](handleError(_0x4c08a8,null));};exports[_0xb963('0x1e')]=function(_0xd6054a,_0x288314){if(_0xd6054a[_0xb963('0x44')]['id']){delete _0xd6054a['body']['id'];}return db[_0xb963('0x27')][_0xb963('0x42')]({'where':{'id':_0xd6054a[_0xb963('0x3f')]['id']}})[_0xb963('0x1f')](handleEntityNotFound(_0x288314,null))['then'](saveUpdates(_0xd6054a[_0xb963('0x44')],null))['then'](respondWithResult(_0x288314,null))[_0xb963('0x3e')](handleError(_0x288314,null));};exports[_0xb963('0x20')]=function(_0x3385ba,_0x3dfc01){return db[_0xb963('0x27')]['find']({'where':{'id':_0x3385ba[_0xb963('0x3f')]['id']}})[_0xb963('0x1f')](handleEntityNotFound(_0x3dfc01,null))['then'](removeEntity(_0x3dfc01,null))[_0xb963('0x3e')](handleError(_0x3dfc01,null));};exports[_0xb963('0x45')]=function(_0x1bf52e,_0x53b626,_0x4a8120){var _0x1280c9={};var _0x2142b3={};var _0x4b4954;var _0x466aa8;return db[_0xb963('0x27')][_0xb963('0x46')]({'where':{'id':_0x1bf52e[_0xb963('0x3f')]['id']}})[_0xb963('0x1f')](handleEntityNotFound(_0x53b626,null))[_0xb963('0x1f')](function(_0x1c24f7){if(_0x1c24f7){_0x4b4954=_0x1c24f7;_0x2142b3[_0xb963('0x2c')]=_[_0xb963('0x40')](db['Dynamics365Field']['rawAttributes']);_0x2142b3[_0xb963('0x2d')]=_[_0xb963('0x40')](_0x1bf52e[_0xb963('0x2d')]);_0x2142b3['filters']=_[_0xb963('0x2e')](_0x2142b3[_0xb963('0x2c')],_0x2142b3[_0xb963('0x2d')]);_0x1280c9[_0xb963('0x30')]=_[_0xb963('0x2e')](_0x2142b3['model'],qs[_0xb963('0x2f')](_0x1bf52e[_0xb963('0x2d')][_0xb963('0x2f')]));_0x1280c9[_0xb963('0x30')]=_0x1280c9['attributes']['length']?_0x1280c9[_0xb963('0x30')]:_0x2142b3[_0xb963('0x2c')];_0x1280c9['order']=qs[_0xb963('0x34')](_0x1bf52e[_0xb963('0x2d')][_0xb963('0x34')]);_0x1280c9['where']=qs[_0xb963('0x36')](_['pick'](_0x1bf52e['query'],_0x2142b3[_0xb963('0x36')]));if(_0x1bf52e['query'][_0xb963('0x39')]){_0x1280c9[_0xb963('0x35')]=_[_0xb963('0x37')](_0x1280c9[_0xb963('0x35')],{'$or':_[_0xb963('0x26')](_0x1280c9[_0xb963('0x30')],function(_0x6934eb){var _0x37125e={};_0x37125e[_0x6934eb]={'$like':'%'+_0x1bf52e[_0xb963('0x2d')][_0xb963('0x39')]+'%'};return _0x37125e;})});}_0x1280c9=_[_0xb963('0x37')]({},_0x1280c9,_0x1bf52e[_0xb963('0x41')]);return _0x4b4954['getFields'](_0x1280c9);}})[_0xb963('0x1f')](function(_0x23cc01){if(_0x23cc01){_0x466aa8=_0x23cc01['length'];if(!_0x1bf52e[_0xb963('0x2d')]['hasOwnProperty']('nolimit')){_0x1280c9[_0xb963('0x18')]=qs[_0xb963('0x18')](_0x1bf52e['query'][_0xb963('0x18')]);_0x1280c9['offset']=qs[_0xb963('0x1a')](_0x1bf52e['query']['offset']);}return _0x4b4954[_0xb963('0x45')](_0x1280c9);}})[_0xb963('0x1f')](function(_0x3523bb){if(_0x3523bb){return _0x3523bb?{'count':_0x466aa8,'rows':_0x3523bb}:null;}})[_0xb963('0x1f')](respondWithResult(_0x53b626,null))['catch'](handleError(_0x53b626,null));};exports[_0xb963('0x47')]=function(_0x14206d,_0x5525d0,_0x4f94bb){var _0xbe84d1={};var _0x3a28af={};var _0x392573;var _0x1e9658;return db['Dynamics365Configuration'][_0xb963('0x46')]({'where':{'id':_0x14206d[_0xb963('0x3f')]['id']}})['then'](handleEntityNotFound(_0x5525d0,null))[_0xb963('0x1f')](function(_0x4cb0ef){if(_0x4cb0ef){_0x392573=_0x4cb0ef;_0x3a28af[_0xb963('0x2c')]=_['keys'](db[_0xb963('0x48')][_0xb963('0x28')]);_0x3a28af['query']=_['keys'](_0x14206d['query']);_0x3a28af[_0xb963('0x36')]=_[_0xb963('0x2e')](_0x3a28af[_0xb963('0x2c')],_0x3a28af['query']);_0xbe84d1[_0xb963('0x30')]=_[_0xb963('0x2e')](_0x3a28af[_0xb963('0x2c')],qs[_0xb963('0x2f')](_0x14206d[_0xb963('0x2d')]['fields']));_0xbe84d1[_0xb963('0x30')]=_0xbe84d1[_0xb963('0x30')][_0xb963('0x31')]?_0xbe84d1[_0xb963('0x30')]:_0x3a28af['model'];_0xbe84d1[_0xb963('0x49')]=qs['sort'](_0x14206d['query'][_0xb963('0x34')]);_0xbe84d1['where']=qs[_0xb963('0x36')](_['pick'](_0x14206d['query'],_0x3a28af[_0xb963('0x36')]));if(_0x14206d[_0xb963('0x2d')]['filter']){_0xbe84d1[_0xb963('0x35')]=_[_0xb963('0x37')](_0xbe84d1[_0xb963('0x35')],{'$or':_[_0xb963('0x26')](_0xbe84d1['attributes'],function(_0x919287){var _0x42598d={};_0x42598d[_0x919287]={'$like':'%'+_0x14206d[_0xb963('0x2d')][_0xb963('0x39')]+'%'};return _0x42598d;})});}_0xbe84d1=_[_0xb963('0x37')]({},_0xbe84d1,_0x14206d['options']);return _0x392573[_0xb963('0x47')](_0xbe84d1);}})[_0xb963('0x1f')](function(_0x14902e){if(_0x14902e){_0x1e9658=_0x14902e[_0xb963('0x31')];if(!_0x14206d['query'][_0xb963('0x32')]('nolimit')){_0xbe84d1[_0xb963('0x18')]=qs[_0xb963('0x18')](_0x14206d[_0xb963('0x2d')][_0xb963('0x18')]);_0xbe84d1[_0xb963('0x1a')]=qs['offset'](_0x14206d[_0xb963('0x2d')]['offset']);}return _0x392573[_0xb963('0x47')](_0xbe84d1);}})[_0xb963('0x1f')](function(_0x52c36f){if(_0x52c36f){return _0x52c36f?{'count':_0x1e9658,'rows':_0x52c36f}:null;}})[_0xb963('0x1f')](respondWithResult(_0x5525d0,null))[_0xb963('0x3e')](handleError(_0x5525d0,null));};exports[_0xb963('0x4a')]=function(_0x126c01,_0x399fd9,_0x55c476){var _0x58999b={};var _0x2f2f26={};var _0x260287;var _0xbcd1f6;return db[_0xb963('0x27')][_0xb963('0x46')]({'where':{'id':_0x126c01[_0xb963('0x3f')]['id']}})[_0xb963('0x1f')](handleEntityNotFound(_0x399fd9,null))[_0xb963('0x1f')](function(_0x4d51a4){if(_0x4d51a4){_0x260287=_0x4d51a4;_0x2f2f26[_0xb963('0x2c')]=_[_0xb963('0x40')](db[_0xb963('0x48')][_0xb963('0x28')]);_0x2f2f26[_0xb963('0x2d')]=_[_0xb963('0x40')](_0x126c01[_0xb963('0x2d')]);_0x2f2f26[_0xb963('0x36')]=_[_0xb963('0x2e')](_0x2f2f26[_0xb963('0x2c')],_0x2f2f26[_0xb963('0x2d')]);_0x58999b[_0xb963('0x30')]=_[_0xb963('0x2e')](_0x2f2f26[_0xb963('0x2c')],qs[_0xb963('0x2f')](_0x126c01[_0xb963('0x2d')][_0xb963('0x2f')]));_0x58999b['attributes']=_0x58999b[_0xb963('0x30')]['length']?_0x58999b[_0xb963('0x30')]:_0x2f2f26[_0xb963('0x2c')];_0x58999b[_0xb963('0x49')]=qs[_0xb963('0x34')](_0x126c01[_0xb963('0x2d')][_0xb963('0x34')]);_0x58999b['where']=qs[_0xb963('0x36')](_[_0xb963('0x4b')](_0x126c01[_0xb963('0x2d')],_0x2f2f26['filters']));if(_0x126c01[_0xb963('0x2d')]['filter']){_0x58999b[_0xb963('0x35')]=_[_0xb963('0x37')](_0x58999b['where'],{'$or':_[_0xb963('0x26')](_0x58999b[_0xb963('0x30')],function(_0x5222d0){var _0x7d6aec={};_0x7d6aec[_0x5222d0]={'$like':'%'+_0x126c01[_0xb963('0x2d')][_0xb963('0x39')]+'%'};return _0x7d6aec;})});}_0x58999b=_[_0xb963('0x37')]({},_0x58999b,_0x126c01[_0xb963('0x41')]);return _0x260287[_0xb963('0x4a')](_0x58999b);}})[_0xb963('0x1f')](function(_0x4eb682){if(_0x4eb682){_0xbcd1f6=_0x4eb682['length'];if(!_0x126c01[_0xb963('0x2d')][_0xb963('0x32')](_0xb963('0x33'))){_0x58999b['limit']=qs[_0xb963('0x18')](_0x126c01[_0xb963('0x2d')]['limit']);_0x58999b[_0xb963('0x1a')]=qs['offset'](_0x126c01[_0xb963('0x2d')][_0xb963('0x1a')]);}return _0x260287[_0xb963('0x4a')](_0x58999b);}})[_0xb963('0x1f')](function(_0x106537){if(_0x106537){return _0x106537?{'count':_0xbcd1f6,'rows':_0x106537}:null;}})[_0xb963('0x1f')](respondWithResult(_0x399fd9,null))[_0xb963('0x3e')](handleError(_0x399fd9,null));};
\ No newline at end of file
+var _0x60be=['rows','catch','show','params','length','include','find','create','body','getFields','findOne','getSubjects','getDescriptions','eml-format','zip-dir','request-promise','moment','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','set','Content-Range','apply','reject','save','update','destroy','then','end','error','name','map','Dynamics365Configuration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','count','includeAll'];(function(_0x19c57a,_0x5c9c7c){var _0x576a08=function(_0x929c62){while(--_0x929c62){_0x19c57a['push'](_0x19c57a['shift']());}};_0x576a08(++_0x5c9c7c);}(_0x60be,0xa7));var _0xe60b=function(_0x5eb7c4,_0xa4a571){_0x5eb7c4=_0x5eb7c4-0x0;var _0x55df44=_0x60be[_0x5eb7c4];return _0x55df44;};'use strict';var emlformat=require(_0xe60b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe60b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe60b('0x2'));var moment=require(_0xe60b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe60b('0x4'));var util=require(_0xe60b('0x5'));var path=require('path');var sox=require(_0xe60b('0x6'));var csv=require('to-csv');var ejs=require(_0xe60b('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe60b('0x8'));var squel=require(_0xe60b('0x9'));var crypto=require(_0xe60b('0xa'));var jsforce=require(_0xe60b('0xb'));var deskjs=require(_0xe60b('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe60b('0xd'));var Papa=require(_0xe60b('0xe'));var Redis=require(_0xe60b('0xf'));var authService=require(_0xe60b('0x10'));var qs=require(_0xe60b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe60b('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xe60b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xe60b('0x14'));var db=require(_0xe60b('0x15'))['db'];function respondWithStatusCode(_0xc93b56,_0x4bbf01){_0x4bbf01=_0x4bbf01||0xcc;return function(_0x4a562f){if(_0x4a562f){return _0xc93b56[_0xe60b('0x16')](_0x4bbf01);}return _0xc93b56[_0xe60b('0x17')](_0x4bbf01)['end']();};}function respondWithResult(_0x1d6103,_0x2a4f76){_0x2a4f76=_0x2a4f76||0xc8;return function(_0x4d3efd){if(_0x4d3efd){return _0x1d6103[_0xe60b('0x17')](_0x2a4f76)[_0xe60b('0x18')](_0x4d3efd);}};}function respondWithFilteredResult(_0x2d4cd9,_0xb7685b){return function(_0x4ec9b9){if(_0x4ec9b9){var _0x15a363=typeof _0xb7685b[_0xe60b('0x19')]===_0xe60b('0x1a')&&typeof _0xb7685b['limit']===_0xe60b('0x1a');var _0x22fef5=_0x4ec9b9['count'];var _0xd45cb1=_0x15a363?0x0:_0xb7685b[_0xe60b('0x19')];var _0x15901c=_0x15a363?_0x4ec9b9['count']:_0xb7685b[_0xe60b('0x19')]+_0xb7685b['limit'];var _0x5882c7;if(_0x15901c>=_0x22fef5){_0x15901c=_0x22fef5;_0x5882c7=0xc8;}else{_0x5882c7=0xce;}_0x2d4cd9[_0xe60b('0x17')](_0x5882c7);return _0x2d4cd9[_0xe60b('0x1b')](_0xe60b('0x1c'),_0xd45cb1+'-'+_0x15901c+'/'+_0x22fef5)['json'](_0x4ec9b9);}return null;};}function patchUpdates(_0x1de382){return function(_0x42ae7c){try{jsonpatch[_0xe60b('0x1d')](_0x42ae7c,_0x1de382,!![]);}catch(_0x2b3c90){return BPromise[_0xe60b('0x1e')](_0x2b3c90);}return _0x42ae7c[_0xe60b('0x1f')]();};}function saveUpdates(_0x5eb99e,_0x4d4a74){return function(_0x5b6781){if(_0x5b6781){return _0x5b6781[_0xe60b('0x20')](_0x5eb99e)['then'](function(_0x5edb8f){return _0x5edb8f;});}return null;};}function removeEntity(_0x218a2d,_0x46b517){return function(_0x30f926){if(_0x30f926){return _0x30f926[_0xe60b('0x21')]()[_0xe60b('0x22')](function(){_0x218a2d[_0xe60b('0x17')](0xcc)[_0xe60b('0x23')]();});}};}function handleEntityNotFound(_0x640ac9,_0x67886f){return function(_0x8f8d92){if(!_0x8f8d92){_0x640ac9['sendStatus'](0x194);}return _0x8f8d92;};}function handleError(_0x225ec5,_0x2f9c88){_0x2f9c88=_0x2f9c88||0x1f4;return function(_0x1262a1){logger[_0xe60b('0x24')](_0x1262a1['stack']);if(_0x1262a1[_0xe60b('0x25')]){delete _0x1262a1[_0xe60b('0x25')];}_0x225ec5['status'](_0x2f9c88)['send'](_0x1262a1);};}exports['index']=function(_0x37efa7,_0x47fa42){var _0x380f34={},_0x27ca8f={},_0x2fb36c={'count':0x0,'rows':[]};var _0x311960=_[_0xe60b('0x26')](db[_0xe60b('0x27')][_0xe60b('0x28')],function(_0x3b5e8f){return{'name':_0x3b5e8f[_0xe60b('0x29')],'type':_0x3b5e8f['type'][_0xe60b('0x2a')]};});_0x27ca8f[_0xe60b('0x2b')]=_[_0xe60b('0x26')](_0x311960,'name');_0x27ca8f[_0xe60b('0x2c')]=_[_0xe60b('0x2d')](_0x37efa7[_0xe60b('0x2c')]);_0x27ca8f[_0xe60b('0x2e')]=_[_0xe60b('0x2f')](_0x27ca8f[_0xe60b('0x2b')],_0x27ca8f[_0xe60b('0x2c')]);_0x380f34[_0xe60b('0x30')]=_[_0xe60b('0x2f')](_0x27ca8f[_0xe60b('0x2b')],qs[_0xe60b('0x31')](_0x37efa7[_0xe60b('0x2c')][_0xe60b('0x31')]));_0x380f34[_0xe60b('0x30')]=_0x380f34[_0xe60b('0x30')]['length']?_0x380f34[_0xe60b('0x30')]:_0x27ca8f[_0xe60b('0x2b')];if(!_0x37efa7['query'][_0xe60b('0x32')](_0xe60b('0x33'))){_0x380f34[_0xe60b('0x34')]=qs[_0xe60b('0x34')](_0x37efa7[_0xe60b('0x2c')]['limit']);_0x380f34[_0xe60b('0x19')]=qs['offset'](_0x37efa7[_0xe60b('0x2c')]['offset']);}_0x380f34[_0xe60b('0x35')]=qs[_0xe60b('0x36')](_0x37efa7[_0xe60b('0x2c')][_0xe60b('0x36')]);_0x380f34[_0xe60b('0x37')]=qs[_0xe60b('0x2e')](_[_0xe60b('0x38')](_0x37efa7['query'],_0x27ca8f[_0xe60b('0x2e')]),_0x311960);if(_0x37efa7[_0xe60b('0x2c')]['filter']){_0x380f34[_0xe60b('0x37')]=_[_0xe60b('0x39')](_0x380f34[_0xe60b('0x37')],{'$or':_[_0xe60b('0x26')](_0x311960,function(_0x410b83){if(_0x410b83[_0xe60b('0x3a')]!==_0xe60b('0x3b')){var _0x4294ce={};_0x4294ce[_0x410b83[_0xe60b('0x25')]]={'$like':'%'+_0x37efa7[_0xe60b('0x2c')][_0xe60b('0x3c')]+'%'};return _0x4294ce;}})});}_0x380f34=_[_0xe60b('0x39')]({},_0x380f34,_0x37efa7[_0xe60b('0x3d')]);var _0x5d43f9={'where':_0x380f34['where']};return db['Dynamics365Configuration'][_0xe60b('0x3e')](_0x5d43f9)[_0xe60b('0x22')](function(_0x405d49){_0x2fb36c['count']=_0x405d49;if(_0x37efa7[_0xe60b('0x2c')][_0xe60b('0x3f')]){_0x380f34['include']=[{'all':!![]}];}return db[_0xe60b('0x27')]['findAll'](_0x380f34);})[_0xe60b('0x22')](function(_0x14d22d){_0x2fb36c[_0xe60b('0x40')]=_0x14d22d;return _0x2fb36c;})[_0xe60b('0x22')](respondWithFilteredResult(_0x47fa42,_0x380f34))[_0xe60b('0x41')](handleError(_0x47fa42,null));};exports[_0xe60b('0x42')]=function(_0x4c3b27,_0x537792){var _0x1693cf={'raw':![],'where':{'id':_0x4c3b27[_0xe60b('0x43')]['id']}},_0x520377={};_0x520377[_0xe60b('0x2b')]=_[_0xe60b('0x2d')](db[_0xe60b('0x27')][_0xe60b('0x28')]);_0x520377[_0xe60b('0x2c')]=_[_0xe60b('0x2d')](_0x4c3b27['query']);_0x520377[_0xe60b('0x2e')]=_[_0xe60b('0x2f')](_0x520377[_0xe60b('0x2b')],_0x520377[_0xe60b('0x2c')]);_0x1693cf['attributes']=_[_0xe60b('0x2f')](_0x520377[_0xe60b('0x2b')],qs['fields'](_0x4c3b27['query']['fields']));_0x1693cf[_0xe60b('0x30')]=_0x1693cf[_0xe60b('0x30')][_0xe60b('0x44')]?_0x1693cf[_0xe60b('0x30')]:_0x520377[_0xe60b('0x2b')];if(_0x4c3b27[_0xe60b('0x2c')][_0xe60b('0x3f')]){_0x1693cf[_0xe60b('0x45')]=[{'all':!![]}];}_0x1693cf=_[_0xe60b('0x39')]({},_0x1693cf,_0x4c3b27[_0xe60b('0x3d')]);return db[_0xe60b('0x27')][_0xe60b('0x46')](_0x1693cf)[_0xe60b('0x22')](handleEntityNotFound(_0x537792,null))['then'](respondWithResult(_0x537792,null))[_0xe60b('0x41')](handleError(_0x537792,null));};exports['create']=function(_0x530c4d,_0x32e8ad){return db[_0xe60b('0x27')][_0xe60b('0x47')](_0x530c4d['body'],{})[_0xe60b('0x22')](respondWithResult(_0x32e8ad,0xc9))[_0xe60b('0x41')](handleError(_0x32e8ad,null));};exports['update']=function(_0x1f2039,_0xb995a0){if(_0x1f2039[_0xe60b('0x48')]['id']){delete _0x1f2039[_0xe60b('0x48')]['id'];}return db['Dynamics365Configuration'][_0xe60b('0x46')]({'where':{'id':_0x1f2039[_0xe60b('0x43')]['id']}})[_0xe60b('0x22')](handleEntityNotFound(_0xb995a0,null))[_0xe60b('0x22')](saveUpdates(_0x1f2039[_0xe60b('0x48')],null))['then'](respondWithResult(_0xb995a0,null))[_0xe60b('0x41')](handleError(_0xb995a0,null));};exports[_0xe60b('0x21')]=function(_0x2d7b35,_0x23ca08){return db[_0xe60b('0x27')][_0xe60b('0x46')]({'where':{'id':_0x2d7b35[_0xe60b('0x43')]['id']}})[_0xe60b('0x22')](handleEntityNotFound(_0x23ca08,null))[_0xe60b('0x22')](removeEntity(_0x23ca08,null))[_0xe60b('0x41')](handleError(_0x23ca08,null));};exports[_0xe60b('0x49')]=function(_0x2647e1,_0x1688f9,_0x19bc52){var _0xe972cf={};var _0x5efa9f={};var _0x207b66;var _0x591f8f;return db[_0xe60b('0x27')][_0xe60b('0x4a')]({'where':{'id':_0x2647e1['params']['id']}})[_0xe60b('0x22')](handleEntityNotFound(_0x1688f9,null))[_0xe60b('0x22')](function(_0x5168ad){if(_0x5168ad){_0x207b66=_0x5168ad;_0x5efa9f[_0xe60b('0x2b')]=_['keys'](db['Dynamics365Field'][_0xe60b('0x28')]);_0x5efa9f[_0xe60b('0x2c')]=_[_0xe60b('0x2d')](_0x2647e1[_0xe60b('0x2c')]);_0x5efa9f[_0xe60b('0x2e')]=_[_0xe60b('0x2f')](_0x5efa9f[_0xe60b('0x2b')],_0x5efa9f['query']);_0xe972cf[_0xe60b('0x30')]=_['intersection'](_0x5efa9f[_0xe60b('0x2b')],qs[_0xe60b('0x31')](_0x2647e1[_0xe60b('0x2c')]['fields']));_0xe972cf[_0xe60b('0x30')]=_0xe972cf[_0xe60b('0x30')]['length']?_0xe972cf[_0xe60b('0x30')]:_0x5efa9f[_0xe60b('0x2b')];_0xe972cf[_0xe60b('0x35')]=qs['sort'](_0x2647e1[_0xe60b('0x2c')][_0xe60b('0x36')]);_0xe972cf[_0xe60b('0x37')]=qs[_0xe60b('0x2e')](_[_0xe60b('0x38')](_0x2647e1[_0xe60b('0x2c')],_0x5efa9f[_0xe60b('0x2e')]));if(_0x2647e1['query'][_0xe60b('0x3c')]){_0xe972cf[_0xe60b('0x37')]=_[_0xe60b('0x39')](_0xe972cf[_0xe60b('0x37')],{'$or':_['map'](_0xe972cf[_0xe60b('0x30')],function(_0x20ef51){var _0x5f3bf8={};_0x5f3bf8[_0x20ef51]={'$like':'%'+_0x2647e1[_0xe60b('0x2c')]['filter']+'%'};return _0x5f3bf8;})});}_0xe972cf=_[_0xe60b('0x39')]({},_0xe972cf,_0x2647e1[_0xe60b('0x3d')]);return _0x207b66[_0xe60b('0x49')](_0xe972cf);}})['then'](function(_0x7286d1){if(_0x7286d1){_0x591f8f=_0x7286d1['length'];if(!_0x2647e1[_0xe60b('0x2c')][_0xe60b('0x32')](_0xe60b('0x33'))){_0xe972cf['limit']=qs['limit'](_0x2647e1['query'][_0xe60b('0x34')]);_0xe972cf['offset']=qs[_0xe60b('0x19')](_0x2647e1[_0xe60b('0x2c')]['offset']);}return _0x207b66[_0xe60b('0x49')](_0xe972cf);}})[_0xe60b('0x22')](function(_0x1cdc40){if(_0x1cdc40){return _0x1cdc40?{'count':_0x591f8f,'rows':_0x1cdc40}:null;}})[_0xe60b('0x22')](respondWithResult(_0x1688f9,null))[_0xe60b('0x41')](handleError(_0x1688f9,null));};exports[_0xe60b('0x4b')]=function(_0x25952d,_0x4722b2,_0x5492c4){var _0x29fe75={};var _0x4ff37d={};var _0x565aba;var _0x24a492;return db[_0xe60b('0x27')][_0xe60b('0x4a')]({'where':{'id':_0x25952d[_0xe60b('0x43')]['id']}})[_0xe60b('0x22')](handleEntityNotFound(_0x4722b2,null))[_0xe60b('0x22')](function(_0x263576){if(_0x263576){_0x565aba=_0x263576;_0x4ff37d[_0xe60b('0x2b')]=_[_0xe60b('0x2d')](db['Dynamics365Field'][_0xe60b('0x28')]);_0x4ff37d['query']=_[_0xe60b('0x2d')](_0x25952d[_0xe60b('0x2c')]);_0x4ff37d[_0xe60b('0x2e')]=_['intersection'](_0x4ff37d[_0xe60b('0x2b')],_0x4ff37d[_0xe60b('0x2c')]);_0x29fe75[_0xe60b('0x30')]=_[_0xe60b('0x2f')](_0x4ff37d[_0xe60b('0x2b')],qs[_0xe60b('0x31')](_0x25952d[_0xe60b('0x2c')][_0xe60b('0x31')]));_0x29fe75[_0xe60b('0x30')]=_0x29fe75[_0xe60b('0x30')]['length']?_0x29fe75[_0xe60b('0x30')]:_0x4ff37d[_0xe60b('0x2b')];_0x29fe75['order']=qs[_0xe60b('0x36')](_0x25952d[_0xe60b('0x2c')][_0xe60b('0x36')]);_0x29fe75[_0xe60b('0x37')]=qs[_0xe60b('0x2e')](_[_0xe60b('0x38')](_0x25952d[_0xe60b('0x2c')],_0x4ff37d['filters']));if(_0x25952d[_0xe60b('0x2c')][_0xe60b('0x3c')]){_0x29fe75['where']=_[_0xe60b('0x39')](_0x29fe75[_0xe60b('0x37')],{'$or':_['map'](_0x29fe75[_0xe60b('0x30')],function(_0x4314f4){var _0x46a523={};_0x46a523[_0x4314f4]={'$like':'%'+_0x25952d[_0xe60b('0x2c')]['filter']+'%'};return _0x46a523;})});}_0x29fe75=_[_0xe60b('0x39')]({},_0x29fe75,_0x25952d['options']);return _0x565aba[_0xe60b('0x4b')](_0x29fe75);}})[_0xe60b('0x22')](function(_0x3fd067){if(_0x3fd067){_0x24a492=_0x3fd067[_0xe60b('0x44')];if(!_0x25952d['query'][_0xe60b('0x32')](_0xe60b('0x33'))){_0x29fe75['limit']=qs['limit'](_0x25952d[_0xe60b('0x2c')][_0xe60b('0x34')]);_0x29fe75[_0xe60b('0x19')]=qs[_0xe60b('0x19')](_0x25952d['query']['offset']);}return _0x565aba[_0xe60b('0x4b')](_0x29fe75);}})['then'](function(_0x10ed37){if(_0x10ed37){return _0x10ed37?{'count':_0x24a492,'rows':_0x10ed37}:null;}})[_0xe60b('0x22')](respondWithResult(_0x4722b2,null))[_0xe60b('0x41')](handleError(_0x4722b2,null));};exports[_0xe60b('0x4c')]=function(_0x3c7928,_0x5da7b1,_0x1ee819){var _0x4377a4={};var _0x2a8cd0={};var _0x3d0a65;var _0x4bdc63;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x3c7928[_0xe60b('0x43')]['id']}})['then'](handleEntityNotFound(_0x5da7b1,null))[_0xe60b('0x22')](function(_0x1a6cd1){if(_0x1a6cd1){_0x3d0a65=_0x1a6cd1;_0x2a8cd0[_0xe60b('0x2b')]=_[_0xe60b('0x2d')](db['Dynamics365Field'][_0xe60b('0x28')]);_0x2a8cd0[_0xe60b('0x2c')]=_[_0xe60b('0x2d')](_0x3c7928[_0xe60b('0x2c')]);_0x2a8cd0[_0xe60b('0x2e')]=_[_0xe60b('0x2f')](_0x2a8cd0[_0xe60b('0x2b')],_0x2a8cd0[_0xe60b('0x2c')]);_0x4377a4['attributes']=_['intersection'](_0x2a8cd0[_0xe60b('0x2b')],qs[_0xe60b('0x31')](_0x3c7928['query'][_0xe60b('0x31')]));_0x4377a4[_0xe60b('0x30')]=_0x4377a4[_0xe60b('0x30')][_0xe60b('0x44')]?_0x4377a4[_0xe60b('0x30')]:_0x2a8cd0[_0xe60b('0x2b')];_0x4377a4[_0xe60b('0x35')]=qs['sort'](_0x3c7928[_0xe60b('0x2c')][_0xe60b('0x36')]);_0x4377a4[_0xe60b('0x37')]=qs[_0xe60b('0x2e')](_['pick'](_0x3c7928[_0xe60b('0x2c')],_0x2a8cd0[_0xe60b('0x2e')]));if(_0x3c7928[_0xe60b('0x2c')]['filter']){_0x4377a4[_0xe60b('0x37')]=_['merge'](_0x4377a4[_0xe60b('0x37')],{'$or':_[_0xe60b('0x26')](_0x4377a4[_0xe60b('0x30')],function(_0x285b86){var _0x42e679={};_0x42e679[_0x285b86]={'$like':'%'+_0x3c7928[_0xe60b('0x2c')][_0xe60b('0x3c')]+'%'};return _0x42e679;})});}_0x4377a4=_[_0xe60b('0x39')]({},_0x4377a4,_0x3c7928[_0xe60b('0x3d')]);return _0x3d0a65['getDescriptions'](_0x4377a4);}})[_0xe60b('0x22')](function(_0x3585e6){if(_0x3585e6){_0x4bdc63=_0x3585e6[_0xe60b('0x44')];if(!_0x3c7928[_0xe60b('0x2c')][_0xe60b('0x32')](_0xe60b('0x33'))){_0x4377a4['limit']=qs[_0xe60b('0x34')](_0x3c7928[_0xe60b('0x2c')][_0xe60b('0x34')]);_0x4377a4[_0xe60b('0x19')]=qs['offset'](_0x3c7928[_0xe60b('0x2c')][_0xe60b('0x19')]);}return _0x3d0a65[_0xe60b('0x4c')](_0x4377a4);}})[_0xe60b('0x22')](function(_0x219570){if(_0x219570){return _0x219570?{'count':_0x4bdc63,'rows':_0x219570}:null;}})[_0xe60b('0x22')](respondWithResult(_0x5da7b1,null))['catch'](handleError(_0x5da7b1,null));};
\ No newline at end of file
index a1839be..83cbc65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['path','rimraf','../../config/environment','exports','define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4e1831,_0x1c8184){var _0x32734a=function(_0x5686dd){while(--_0x5686dd){_0x4e1831['push'](_0x4e1831['shift']());}};_0x32734a(++_0x1c8184);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x216428,_0x5d20ea){_0x216428=_0x216428-0x0;var _0x313dd4=_0xf3cd[_0x216428];return _0x313dd4;};'use strict';var _=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var logger=require(_0xdf3c('0x2'))(_0xdf3c('0x3'));var moment=require(_0xdf3c('0x4'));var BPromise=require(_0xdf3c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdf3c('0x6'));var rimraf=require(_0xdf3c('0x7'));var config=require(_0xdf3c('0x8'));var attributes=require('./intDynamics365Configuration.attributes');module[_0xdf3c('0x9')]=function(_0x17d42a,_0x1313d5){return _0x17d42a[_0xdf3c('0xa')](_0xdf3c('0xb'),attributes,{'tableName':_0xdf3c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6d6=['path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0xfc7f6c,_0x231989){var _0x5367b4=function(_0x153e44){while(--_0x153e44){_0xfc7f6c['push'](_0xfc7f6c['shift']());}};_0x5367b4(++_0x231989);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x409052,_0x3f63a4){_0x409052=_0x409052-0x0;var _0x41c4d5=_0xd6d6[_0x409052];return _0x41c4d5;};'use strict';var _=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var logger=require(_0x6d6d('0x2'))(_0x6d6d('0x3'));var moment=require('moment');var BPromise=require(_0x6d6d('0x4'));var rp=require(_0x6d6d('0x5'));var fs=require('fs');var path=require(_0x6d6d('0x6'));var rimraf=require(_0x6d6d('0x7'));var config=require(_0x6d6d('0x8'));var attributes=require(_0x6d6d('0x9'));module[_0x6d6d('0xa')]=function(_0x5702dc,_0x210ff7){return _0x5702dc[_0x6d6d('0xb')](_0x6d6d('0xc'),attributes,{'tableName':_0x6d6d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 26163bc..6a11d59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04a8=['../../config/logger','rpc','jayson/promise','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4d1d2c,_0x44f4d8){var _0x2c4cb9=function(_0x4b0c5f){while(--_0x4b0c5f){_0x4d1d2c['push'](_0x4d1d2c['shift']());}};_0x2c4cb9(++_0x44f4d8);}(_0x04a8,0x7f));var _0x804a=function(_0x3e4712,_0x4b6097){_0x3e4712=_0x3e4712-0x0;var _0x34fc16=_0x04a8[_0x3e4712];return _0x34fc16;};'use strict';var _=require('lodash');var util=require(_0x804a('0x0'));var moment=require(_0x804a('0x1'));var BPromise=require('bluebird');var rs=require(_0x804a('0x2'));var fs=require('fs');var Redis=require(_0x804a('0x3'));var db=require(_0x804a('0x4'))['db'];var utils=require(_0x804a('0x5'));var logger=require(_0x804a('0x6'))(_0x804a('0x7'));var config=require('../../config/environment');var jayson=require(_0x804a('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xd9ae25,_0x27e93a,_0x1f1dfb){return new BPromise(function(_0x5cc38c,_0x336d21){return client['request'](_0xd9ae25,_0x1f1dfb)['then'](function(_0x33ef17){logger[_0x804a('0x9')](_0x804a('0xa'),_0x27e93a,_0x804a('0xb'));logger[_0x804a('0xc')](_0x804a('0xd'),_0x27e93a,_0x804a('0xb'),JSON[_0x804a('0xe')](_0x33ef17));if(_0x33ef17[_0x804a('0xf')]){if(_0x33ef17['error'][_0x804a('0x10')]===0x1f4){logger['error'](_0x804a('0xa'),_0x27e93a,_0x33ef17[_0x804a('0xf')][_0x804a('0x11')]);return _0x336d21(_0x33ef17[_0x804a('0xf')]['message']);}logger[_0x804a('0xf')](_0x804a('0xa'),_0x27e93a,_0x33ef17[_0x804a('0xf')][_0x804a('0x11')]);return _0x5cc38c(_0x33ef17[_0x804a('0xf')][_0x804a('0x11')]);}else{logger[_0x804a('0x9')](_0x804a('0xa'),_0x27e93a,_0x804a('0xb'));_0x5cc38c(_0x33ef17[_0x804a('0x12')][_0x804a('0x11')]);}})['catch'](function(_0x34f026){logger['error'](_0x804a('0xa'),_0x27e93a,_0x34f026);_0x336d21(_0x34f026);});});}
\ No newline at end of file
+var _0xfe3c=['Dynamics365Configuration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x10e366,_0x40af9b){var _0x18d440=function(_0x4a446b){while(--_0x4a446b){_0x10e366['push'](_0x10e366['shift']());}};_0x18d440(++_0x40af9b);}(_0xfe3c,0x1d3));var _0xcfe3=function(_0x3baa76,_0x218473){_0x3baa76=_0x3baa76-0x0;var _0x45c339=_0xfe3c[_0x3baa76];return _0x45c339;};'use strict';var _=require(_0xcfe3('0x0'));var util=require('util');var moment=require(_0xcfe3('0x1'));var BPromise=require(_0xcfe3('0x2'));var rs=require(_0xcfe3('0x3'));var fs=require('fs');var Redis=require(_0xcfe3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xcfe3('0x5'));var logger=require(_0xcfe3('0x6'))(_0xcfe3('0x7'));var config=require(_0xcfe3('0x8'));var jayson=require(_0xcfe3('0x9'));var client=jayson[_0xcfe3('0xa')][_0xcfe3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x512664,_0x3ad459,_0x4c7f68){return new BPromise(function(_0x25c71b,_0x444971){return client['request'](_0x512664,_0x4c7f68)[_0xcfe3('0xc')](function(_0x4eae6a){logger[_0xcfe3('0xd')](_0xcfe3('0xe'),_0x3ad459,_0xcfe3('0xf'));logger[_0xcfe3('0x10')](_0xcfe3('0x11'),_0x3ad459,'request\x20sent',JSON['stringify'](_0x4eae6a));if(_0x4eae6a[_0xcfe3('0x12')]){if(_0x4eae6a['error']['code']===0x1f4){logger['error'](_0xcfe3('0xe'),_0x3ad459,_0x4eae6a[_0xcfe3('0x12')][_0xcfe3('0x13')]);return _0x444971(_0x4eae6a[_0xcfe3('0x12')][_0xcfe3('0x13')]);}logger[_0xcfe3('0x12')](_0xcfe3('0xe'),_0x3ad459,_0x4eae6a[_0xcfe3('0x12')][_0xcfe3('0x13')]);return _0x25c71b(_0x4eae6a[_0xcfe3('0x12')]['message']);}else{logger[_0xcfe3('0xd')](_0xcfe3('0xe'),_0x3ad459,'request\x20sent');_0x25c71b(_0x4eae6a[_0xcfe3('0x14')]['message']);}})[_0xcfe3('0x15')](function(_0x4a025b){logger[_0xcfe3('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3ad459,_0x4a025b);_0x444971(_0x4a025b);});});}
\ No newline at end of file
index 92a45be..036eb5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1811=['../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','/:id','show','create','put','update','delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x32dcf9,_0x87c30b){var _0x216bb5=function(_0x1e60b3){while(--_0x1e60b3){_0x32dcf9['push'](_0x32dcf9['shift']());}};_0x216bb5(++_0x87c30b);}(_0x1811,0x77));var _0x1181=function(_0xc8a598,_0x8ffd7c){_0xc8a598=_0xc8a598-0x0;var _0x2a6225=_0x1811[_0xc8a598];return _0x2a6225;};'use strict';var multer=require(_0x1181('0x0'));var util=require(_0x1181('0x1'));var path=require(_0x1181('0x2'));var timeout=require('connect-timeout');var express=require(_0x1181('0x3'));var router=express['Router']();var fs_extra=require(_0x1181('0x4'));var auth=require(_0x1181('0x5'));var interaction=require(_0x1181('0x6'));var config=require(_0x1181('0x7'));var controller=require(_0x1181('0x8'));router[_0x1181('0x9')]('/',auth[_0x1181('0xa')](),controller['index']);router[_0x1181('0x9')](_0x1181('0xb'),auth[_0x1181('0xa')](),controller[_0x1181('0xc')]);router['post']('/',auth[_0x1181('0xa')](),controller[_0x1181('0xd')]);router[_0x1181('0xe')](_0x1181('0xb'),auth['isAuthenticated'](),controller[_0x1181('0xf')]);router[_0x1181('0x10')](_0x1181('0xb'),auth[_0x1181('0xa')](),controller[_0x1181('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xa8fe=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','isAuthenticated','index','get','/:id','show','post','put','delete','destroy','multer','util','connect-timeout','fs-extra'];(function(_0x1603dd,_0x30fd63){var _0x25089a=function(_0x42040c){while(--_0x42040c){_0x1603dd['push'](_0x1603dd['shift']());}};_0x25089a(++_0x30fd63);}(_0xa8fe,0x194));var _0xea8f=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xa8fe[_0x19950b];return _0x3c6b41;};'use strict';var multer=require(_0xea8f('0x0'));var util=require(_0xea8f('0x1'));var path=require('path');var timeout=require(_0xea8f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xea8f('0x3'));var auth=require(_0xea8f('0x4'));var interaction=require(_0xea8f('0x5'));var config=require(_0xea8f('0x6'));var controller=require(_0xea8f('0x7'));router['get']('/',auth[_0xea8f('0x8')](),controller[_0xea8f('0x9')]);router[_0xea8f('0xa')](_0xea8f('0xb'),auth['isAuthenticated'](),controller[_0xea8f('0xc')]);router[_0xea8f('0xd')]('/',auth[_0xea8f('0x8')](),controller['create']);router[_0xea8f('0xe')](_0xea8f('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xea8f('0xf')](_0xea8f('0xb'),auth[_0xea8f('0x8')](),controller[_0xea8f('0x10')]);module['exports']=router;
\ No newline at end of file
index bb30229..236321a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9edc=['exports','ENUM','string','variable','picklist','STRING','customVariable','BOOLEAN'];(function(_0x5284b8,_0x166d3f){var _0x143ab6=function(_0x40f296){while(--_0x40f296){_0x5284b8['push'](_0x5284b8['shift']());}};_0x143ab6(++_0x166d3f);}(_0x9edc,0x70));var _0xc9ed=function(_0x22663b,_0xc8c6e3){_0x22663b=_0x22663b-0x0;var _0x310d0a=_0x9edc[_0x22663b];return _0x310d0a;};'use strict';var Sequelize=require('sequelize');module[_0xc9ed('0x0')]={'type':{'type':Sequelize[_0xc9ed('0x1')](_0xc9ed('0x2'),_0xc9ed('0x3'),'customVariable','keyValue',_0xc9ed('0x4')),'defaultValue':_0xc9ed('0x2')},'content':{'type':Sequelize[_0xc9ed('0x5')]},'key':{'type':Sequelize[_0xc9ed('0x5')]},'keyType':{'type':Sequelize[_0xc9ed('0x1')](_0xc9ed('0x2'),'variable',_0xc9ed('0x6'))},'keyContent':{'type':Sequelize[_0xc9ed('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xc9ed('0x5')]},'customField':{'type':Sequelize[_0xc9ed('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc9ed('0x5')]}};
\ No newline at end of file
+var _0xd298=['keyValue','picklist','STRING','customVariable','BOOLEAN','exports','ENUM','string'];(function(_0x506cfa,_0x2e301){var _0x23c230=function(_0x271e21){while(--_0x271e21){_0x506cfa['push'](_0x506cfa['shift']());}};_0x23c230(++_0x2e301);}(_0xd298,0x10d));var _0x8d29=function(_0x265ff5,_0x1aafd5){_0x265ff5=_0x265ff5-0x0;var _0x4715f1=_0xd298[_0x265ff5];return _0x4715f1;};'use strict';var Sequelize=require('sequelize');module[_0x8d29('0x0')]={'type':{'type':Sequelize[_0x8d29('0x1')](_0x8d29('0x2'),'variable','customVariable',_0x8d29('0x3'),_0x8d29('0x4')),'defaultValue':_0x8d29('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x8d29('0x5')]},'keyType':{'type':Sequelize['ENUM']('string','variable',_0x8d29('0x6'))},'keyContent':{'type':Sequelize[_0x8d29('0x5')]},'idField':{'type':Sequelize[_0x8d29('0x5')]},'nameField':{'type':Sequelize[_0x8d29('0x5')]},'customField':{'type':Sequelize[_0x8d29('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8d29('0x5')]}};
\ No newline at end of file
index 9fd5e35..359f25e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0fb=['limit','status','Content-Range','reject','save','then','destroy','error','stack','name','index','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','map','type','VIRTUAL','options','Dynamics365Field','includeAll','findAll','rows','catch','show','params','keys','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count'];(function(_0x5a57a2,_0x1a801b){var _0x1986c7=function(_0x1d7720){while(--_0x1d7720){_0x5a57a2['push'](_0x5a57a2['shift']());}};_0x1986c7(++_0x1a801b);}(_0xa0fb,0xbe));var _0xba0f=function(_0x5e16ae,_0x1e8fcd){_0x5e16ae=_0x5e16ae-0x0;var _0x9e651c=_0xa0fb[_0x5e16ae];return _0x9e651c;};'use strict';var emlformat=require(_0xba0f('0x0'));var rimraf=require(_0xba0f('0x1'));var zipdir=require(_0xba0f('0x2'));var jsonpatch=require(_0xba0f('0x3'));var rp=require(_0xba0f('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xba0f('0x5'));var path=require(_0xba0f('0x6'));var sox=require('sox');var csv=require(_0xba0f('0x7'));var ejs=require(_0xba0f('0x8'));var fs=require('fs');var fs_extra=require(_0xba0f('0x9'));var _=require(_0xba0f('0xa'));var squel=require(_0xba0f('0xb'));var crypto=require(_0xba0f('0xc'));var jsforce=require(_0xba0f('0xd'));var deskjs=require(_0xba0f('0xe'));var toCsv=require(_0xba0f('0x7'));var querystring=require(_0xba0f('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xba0f('0x10'));var hardwareService=require(_0xba0f('0x11'));var logger=require(_0xba0f('0x12'))('api');var utils=require(_0xba0f('0x13'));var config=require(_0xba0f('0x14'));var licenseUtil=require(_0xba0f('0x15'));var db=require(_0xba0f('0x16'))['db'];function respondWithStatusCode(_0x15eecf,_0x2efec6){_0x2efec6=_0x2efec6||0xcc;return function(_0x587f12){if(_0x587f12){return _0x15eecf[_0xba0f('0x17')](_0x2efec6);}return _0x15eecf['status'](_0x2efec6)[_0xba0f('0x18')]();};}function respondWithResult(_0x31eeda,_0x566502){_0x566502=_0x566502||0xc8;return function(_0x59a32c){if(_0x59a32c){return _0x31eeda['status'](_0x566502)[_0xba0f('0x19')](_0x59a32c);}};}function respondWithFilteredResult(_0x4352c4,_0x28331a){return function(_0x3cfc24){if(_0x3cfc24){var _0x547e6f=typeof _0x28331a[_0xba0f('0x1a')]==='undefined'&&typeof _0x28331a['limit']===_0xba0f('0x1b');var _0x312db6=_0x3cfc24[_0xba0f('0x1c')];var _0x59d122=_0x547e6f?0x0:_0x28331a[_0xba0f('0x1a')];var _0xa79781=_0x547e6f?_0x3cfc24['count']:_0x28331a[_0xba0f('0x1a')]+_0x28331a[_0xba0f('0x1d')];var _0x30bf49;if(_0xa79781>=_0x312db6){_0xa79781=_0x312db6;_0x30bf49=0xc8;}else{_0x30bf49=0xce;}_0x4352c4[_0xba0f('0x1e')](_0x30bf49);return _0x4352c4['set'](_0xba0f('0x1f'),_0x59d122+'-'+_0xa79781+'/'+_0x312db6)[_0xba0f('0x19')](_0x3cfc24);}return null;};}function patchUpdates(_0x24a6cc){return function(_0x1de958){try{jsonpatch['apply'](_0x1de958,_0x24a6cc,!![]);}catch(_0x2030b1){return BPromise[_0xba0f('0x20')](_0x2030b1);}return _0x1de958[_0xba0f('0x21')]();};}function saveUpdates(_0x1e5364,_0x2618c6){return function(_0x2ec51e){if(_0x2ec51e){return _0x2ec51e['update'](_0x1e5364)[_0xba0f('0x22')](function(_0x150800){return _0x150800;});}return null;};}function removeEntity(_0x4d6f09,_0x10db55){return function(_0x4b3a22){if(_0x4b3a22){return _0x4b3a22[_0xba0f('0x23')]()[_0xba0f('0x22')](function(){_0x4d6f09[_0xba0f('0x1e')](0xcc)[_0xba0f('0x18')]();});}};}function handleEntityNotFound(_0x4f1371,_0x4bf65a){return function(_0x358249){if(!_0x358249){_0x4f1371[_0xba0f('0x17')](0x194);}return _0x358249;};}function handleError(_0x171b8a,_0x5af648){_0x5af648=_0x5af648||0x1f4;return function(_0x54d498){logger[_0xba0f('0x24')](_0x54d498[_0xba0f('0x25')]);if(_0x54d498['name']){delete _0x54d498[_0xba0f('0x26')];}_0x171b8a[_0xba0f('0x1e')](_0x5af648)['send'](_0x54d498);};}exports[_0xba0f('0x27')]=function(_0x5ee2e5,_0x2ac2d7){var _0x441f93={},_0x53cd4f={},_0x3a0df1={'count':0x0,'rows':[]};var _0x2d7186=_['map'](db['Dynamics365Field'][_0xba0f('0x28')],function(_0x1f3a38){return{'name':_0x1f3a38[_0xba0f('0x29')],'type':_0x1f3a38['type'][_0xba0f('0x2a')]};});_0x53cd4f['model']=_['map'](_0x2d7186,_0xba0f('0x26'));_0x53cd4f[_0xba0f('0x2b')]=_['keys'](_0x5ee2e5[_0xba0f('0x2b')]);_0x53cd4f[_0xba0f('0x2c')]=_[_0xba0f('0x2d')](_0x53cd4f[_0xba0f('0x2e')],_0x53cd4f[_0xba0f('0x2b')]);_0x441f93[_0xba0f('0x2f')]=_[_0xba0f('0x2d')](_0x53cd4f['model'],qs[_0xba0f('0x30')](_0x5ee2e5[_0xba0f('0x2b')][_0xba0f('0x30')]));_0x441f93['attributes']=_0x441f93[_0xba0f('0x2f')][_0xba0f('0x31')]?_0x441f93['attributes']:_0x53cd4f[_0xba0f('0x2e')];if(!_0x5ee2e5[_0xba0f('0x2b')][_0xba0f('0x32')]('nolimit')){_0x441f93[_0xba0f('0x1d')]=qs['limit'](_0x5ee2e5[_0xba0f('0x2b')][_0xba0f('0x1d')]);_0x441f93[_0xba0f('0x1a')]=qs[_0xba0f('0x1a')](_0x5ee2e5[_0xba0f('0x2b')][_0xba0f('0x1a')]);}_0x441f93[_0xba0f('0x33')]=qs[_0xba0f('0x34')](_0x5ee2e5[_0xba0f('0x2b')][_0xba0f('0x34')]);_0x441f93[_0xba0f('0x35')]=qs[_0xba0f('0x2c')](_[_0xba0f('0x36')](_0x5ee2e5['query'],_0x53cd4f[_0xba0f('0x2c')]),_0x2d7186);if(_0x5ee2e5[_0xba0f('0x2b')][_0xba0f('0x37')]){_0x441f93['where']=_[_0xba0f('0x38')](_0x441f93[_0xba0f('0x35')],{'$or':_[_0xba0f('0x39')](_0x2d7186,function(_0x246a2c){if(_0x246a2c[_0xba0f('0x3a')]!==_0xba0f('0x3b')){var _0xf9c9a9={};_0xf9c9a9[_0x246a2c[_0xba0f('0x26')]]={'$like':'%'+_0x5ee2e5[_0xba0f('0x2b')][_0xba0f('0x37')]+'%'};return _0xf9c9a9;}})});}_0x441f93=_['merge']({},_0x441f93,_0x5ee2e5[_0xba0f('0x3c')]);var _0x53424f={'where':_0x441f93['where']};return db[_0xba0f('0x3d')][_0xba0f('0x1c')](_0x53424f)[_0xba0f('0x22')](function(_0x596a5b){_0x3a0df1['count']=_0x596a5b;if(_0x5ee2e5['query'][_0xba0f('0x3e')]){_0x441f93['include']=[{'all':!![]}];}return db['Dynamics365Field'][_0xba0f('0x3f')](_0x441f93);})[_0xba0f('0x22')](function(_0x170f1f){_0x3a0df1[_0xba0f('0x40')]=_0x170f1f;return _0x3a0df1;})[_0xba0f('0x22')](respondWithFilteredResult(_0x2ac2d7,_0x441f93))[_0xba0f('0x41')](handleError(_0x2ac2d7,null));};exports[_0xba0f('0x42')]=function(_0x4bfdcf,_0xd17383){var _0x32f0c9={'raw':!![],'where':{'id':_0x4bfdcf[_0xba0f('0x43')]['id']}},_0x45884e={};_0x45884e['model']=_[_0xba0f('0x44')](db['Dynamics365Field']['rawAttributes']);_0x45884e[_0xba0f('0x2b')]=_[_0xba0f('0x44')](_0x4bfdcf[_0xba0f('0x2b')]);_0x45884e[_0xba0f('0x2c')]=_[_0xba0f('0x2d')](_0x45884e['model'],_0x45884e[_0xba0f('0x2b')]);_0x32f0c9[_0xba0f('0x2f')]=_[_0xba0f('0x2d')](_0x45884e[_0xba0f('0x2e')],qs['fields'](_0x4bfdcf[_0xba0f('0x2b')]['fields']));_0x32f0c9[_0xba0f('0x2f')]=_0x32f0c9[_0xba0f('0x2f')][_0xba0f('0x31')]?_0x32f0c9['attributes']:_0x45884e[_0xba0f('0x2e')];if(_0x4bfdcf[_0xba0f('0x2b')][_0xba0f('0x3e')]){_0x32f0c9['include']=[{'all':!![]}];}_0x32f0c9=_[_0xba0f('0x38')]({},_0x32f0c9,_0x4bfdcf['options']);return db[_0xba0f('0x3d')][_0xba0f('0x45')](_0x32f0c9)[_0xba0f('0x22')](handleEntityNotFound(_0xd17383,null))[_0xba0f('0x22')](respondWithResult(_0xd17383,null))[_0xba0f('0x41')](handleError(_0xd17383,null));};exports[_0xba0f('0x46')]=function(_0xa3756f,_0x2a8672){return db[_0xba0f('0x3d')]['create'](_0xa3756f[_0xba0f('0x47')],{})[_0xba0f('0x22')](respondWithResult(_0x2a8672,0xc9))[_0xba0f('0x41')](handleError(_0x2a8672,null));};exports[_0xba0f('0x48')]=function(_0x6f14c9,_0x457f26){if(_0x6f14c9[_0xba0f('0x47')]['id']){delete _0x6f14c9[_0xba0f('0x47')]['id'];}return db[_0xba0f('0x3d')][_0xba0f('0x45')]({'where':{'id':_0x6f14c9['params']['id']}})[_0xba0f('0x22')](handleEntityNotFound(_0x457f26,null))[_0xba0f('0x22')](saveUpdates(_0x6f14c9[_0xba0f('0x47')],null))['then'](respondWithResult(_0x457f26,null))['catch'](handleError(_0x457f26,null));};exports[_0xba0f('0x23')]=function(_0x549e64,_0x22eee9){return db[_0xba0f('0x3d')][_0xba0f('0x45')]({'where':{'id':_0x549e64[_0xba0f('0x43')]['id']}})[_0xba0f('0x22')](handleEntityNotFound(_0x22eee9,null))['then'](removeEntity(_0x22eee9,null))[_0xba0f('0x41')](handleError(_0x22eee9,null));};
\ No newline at end of file
+var _0x0017=['send','index','Dynamics365Field','rawAttributes','type','key','model','map','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','count','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','set','Content-Range','apply','update','then','destroy','end','error','stack','name'];(function(_0x512bd6,_0x3bd340){var _0x2bb5dd=function(_0x1b0196){while(--_0x1b0196){_0x512bd6['push'](_0x512bd6['shift']());}};_0x2bb5dd(++_0x3bd340);}(_0x0017,0x1a9));var _0x7001=function(_0x20cb20,_0x256051){_0x20cb20=_0x20cb20-0x0;var _0x2fcf4b=_0x0017[_0x20cb20];return _0x2fcf4b;};'use strict';var emlformat=require(_0x7001('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7001('0x1'));var jsonpatch=require(_0x7001('0x2'));var rp=require('request-promise');var moment=require(_0x7001('0x3'));var BPromise=require(_0x7001('0x4'));var Mustache=require(_0x7001('0x5'));var util=require(_0x7001('0x6'));var path=require('path');var sox=require(_0x7001('0x7'));var csv=require(_0x7001('0x8'));var ejs=require(_0x7001('0x9'));var fs=require('fs');var fs_extra=require(_0x7001('0xa'));var _=require(_0x7001('0xb'));var squel=require(_0x7001('0xc'));var crypto=require(_0x7001('0xd'));var jsforce=require(_0x7001('0xe'));var deskjs=require(_0x7001('0xf'));var toCsv=require(_0x7001('0x8'));var querystring=require(_0x7001('0x10'));var Papa=require(_0x7001('0x11'));var Redis=require('ioredis');var authService=require(_0x7001('0x12'));var qs=require(_0x7001('0x13'));var as=require(_0x7001('0x14'));var hardwareService=require(_0x7001('0x15'));var logger=require('../../config/logger')(_0x7001('0x16'));var utils=require(_0x7001('0x17'));var config=require(_0x7001('0x18'));var licenseUtil=require(_0x7001('0x19'));var db=require(_0x7001('0x1a'))['db'];function respondWithStatusCode(_0x11725a,_0x25cbcb){_0x25cbcb=_0x25cbcb||0xcc;return function(_0x33cf3a){if(_0x33cf3a){return _0x11725a[_0x7001('0x1b')](_0x25cbcb);}return _0x11725a['status'](_0x25cbcb)['end']();};}function respondWithResult(_0x356a26,_0x108150){_0x108150=_0x108150||0xc8;return function(_0x394e05){if(_0x394e05){return _0x356a26[_0x7001('0x1c')](_0x108150)[_0x7001('0x1d')](_0x394e05);}};}function respondWithFilteredResult(_0xbb9584,_0xc365fc){return function(_0x3433a2){if(_0x3433a2){var _0x433bea=typeof _0xc365fc['offset']===_0x7001('0x1e')&&typeof _0xc365fc[_0x7001('0x1f')]===_0x7001('0x1e');var _0x1cd958=_0x3433a2['count'];var _0x4d6fd3=_0x433bea?0x0:_0xc365fc['offset'];var _0x198d6b=_0x433bea?_0x3433a2['count']:_0xc365fc[_0x7001('0x20')]+_0xc365fc['limit'];var _0x730153;if(_0x198d6b>=_0x1cd958){_0x198d6b=_0x1cd958;_0x730153=0xc8;}else{_0x730153=0xce;}_0xbb9584[_0x7001('0x1c')](_0x730153);return _0xbb9584[_0x7001('0x21')](_0x7001('0x22'),_0x4d6fd3+'-'+_0x198d6b+'/'+_0x1cd958)[_0x7001('0x1d')](_0x3433a2);}return null;};}function patchUpdates(_0x3f8c7a){return function(_0x5914ef){try{jsonpatch[_0x7001('0x23')](_0x5914ef,_0x3f8c7a,!![]);}catch(_0x4162f6){return BPromise['reject'](_0x4162f6);}return _0x5914ef['save']();};}function saveUpdates(_0x376bf9,_0x231506){return function(_0x12388f){if(_0x12388f){return _0x12388f[_0x7001('0x24')](_0x376bf9)[_0x7001('0x25')](function(_0x6bae2d){return _0x6bae2d;});}return null;};}function removeEntity(_0x5c8505,_0x2dcf7c){return function(_0x10c8c9){if(_0x10c8c9){return _0x10c8c9[_0x7001('0x26')]()['then'](function(){_0x5c8505[_0x7001('0x1c')](0xcc)[_0x7001('0x27')]();});}};}function handleEntityNotFound(_0x850a39,_0x533801){return function(_0x1aa860){if(!_0x1aa860){_0x850a39[_0x7001('0x1b')](0x194);}return _0x1aa860;};}function handleError(_0x1a4840,_0x301a3d){_0x301a3d=_0x301a3d||0x1f4;return function(_0x2222ac){logger[_0x7001('0x28')](_0x2222ac[_0x7001('0x29')]);if(_0x2222ac[_0x7001('0x2a')]){delete _0x2222ac[_0x7001('0x2a')];}_0x1a4840[_0x7001('0x1c')](_0x301a3d)[_0x7001('0x2b')](_0x2222ac);};}exports[_0x7001('0x2c')]=function(_0x4f3d0a,_0x30b36b){var _0x49e6a8={},_0x27de1c={},_0x59f661={'count':0x0,'rows':[]};var _0x14a034=_['map'](db[_0x7001('0x2d')][_0x7001('0x2e')],function(_0xac4bc8){return{'name':_0xac4bc8['fieldName'],'type':_0xac4bc8[_0x7001('0x2f')][_0x7001('0x30')]};});_0x27de1c[_0x7001('0x31')]=_[_0x7001('0x32')](_0x14a034,_0x7001('0x2a'));_0x27de1c[_0x7001('0x33')]=_[_0x7001('0x34')](_0x4f3d0a['query']);_0x27de1c['filters']=_['intersection'](_0x27de1c[_0x7001('0x31')],_0x27de1c[_0x7001('0x33')]);_0x49e6a8[_0x7001('0x35')]=_[_0x7001('0x36')](_0x27de1c[_0x7001('0x31')],qs[_0x7001('0x37')](_0x4f3d0a[_0x7001('0x33')][_0x7001('0x37')]));_0x49e6a8[_0x7001('0x35')]=_0x49e6a8[_0x7001('0x35')]['length']?_0x49e6a8[_0x7001('0x35')]:_0x27de1c[_0x7001('0x31')];if(!_0x4f3d0a[_0x7001('0x33')][_0x7001('0x38')](_0x7001('0x39'))){_0x49e6a8[_0x7001('0x1f')]=qs[_0x7001('0x1f')](_0x4f3d0a[_0x7001('0x33')][_0x7001('0x1f')]);_0x49e6a8[_0x7001('0x20')]=qs['offset'](_0x4f3d0a['query'][_0x7001('0x20')]);}_0x49e6a8[_0x7001('0x3a')]=qs[_0x7001('0x3b')](_0x4f3d0a[_0x7001('0x33')][_0x7001('0x3b')]);_0x49e6a8['where']=qs[_0x7001('0x3c')](_['pick'](_0x4f3d0a['query'],_0x27de1c[_0x7001('0x3c')]),_0x14a034);if(_0x4f3d0a[_0x7001('0x33')][_0x7001('0x3d')]){_0x49e6a8[_0x7001('0x3e')]=_['merge'](_0x49e6a8['where'],{'$or':_['map'](_0x14a034,function(_0x175dfb){if(_0x175dfb[_0x7001('0x2f')]!==_0x7001('0x3f')){var _0x507f7d={};_0x507f7d[_0x175dfb[_0x7001('0x2a')]]={'$like':'%'+_0x4f3d0a[_0x7001('0x33')]['filter']+'%'};return _0x507f7d;}})});}_0x49e6a8=_[_0x7001('0x40')]({},_0x49e6a8,_0x4f3d0a[_0x7001('0x41')]);var _0x5125={'where':_0x49e6a8[_0x7001('0x3e')]};return db[_0x7001('0x2d')]['count'](_0x5125)[_0x7001('0x25')](function(_0xcb4017){_0x59f661[_0x7001('0x42')]=_0xcb4017;if(_0x4f3d0a['query'][_0x7001('0x43')]){_0x49e6a8['include']=[{'all':!![]}];}return db[_0x7001('0x2d')][_0x7001('0x44')](_0x49e6a8);})['then'](function(_0x129e74){_0x59f661[_0x7001('0x45')]=_0x129e74;return _0x59f661;})[_0x7001('0x25')](respondWithFilteredResult(_0x30b36b,_0x49e6a8))[_0x7001('0x46')](handleError(_0x30b36b,null));};exports[_0x7001('0x47')]=function(_0x36f04b,_0x5798de){var _0x37e2de={'raw':!![],'where':{'id':_0x36f04b[_0x7001('0x48')]['id']}},_0x5d4a39={};_0x5d4a39[_0x7001('0x31')]=_[_0x7001('0x34')](db[_0x7001('0x2d')][_0x7001('0x2e')]);_0x5d4a39[_0x7001('0x33')]=_[_0x7001('0x34')](_0x36f04b['query']);_0x5d4a39[_0x7001('0x3c')]=_[_0x7001('0x36')](_0x5d4a39[_0x7001('0x31')],_0x5d4a39['query']);_0x37e2de['attributes']=_['intersection'](_0x5d4a39[_0x7001('0x31')],qs['fields'](_0x36f04b['query'][_0x7001('0x37')]));_0x37e2de[_0x7001('0x35')]=_0x37e2de[_0x7001('0x35')][_0x7001('0x49')]?_0x37e2de['attributes']:_0x5d4a39[_0x7001('0x31')];if(_0x36f04b[_0x7001('0x33')][_0x7001('0x43')]){_0x37e2de[_0x7001('0x4a')]=[{'all':!![]}];}_0x37e2de=_[_0x7001('0x40')]({},_0x37e2de,_0x36f04b[_0x7001('0x41')]);return db[_0x7001('0x2d')][_0x7001('0x4b')](_0x37e2de)[_0x7001('0x25')](handleEntityNotFound(_0x5798de,null))[_0x7001('0x25')](respondWithResult(_0x5798de,null))[_0x7001('0x46')](handleError(_0x5798de,null));};exports[_0x7001('0x4c')]=function(_0x206a43,_0x3b4583){return db[_0x7001('0x2d')][_0x7001('0x4c')](_0x206a43[_0x7001('0x4d')],{})['then'](respondWithResult(_0x3b4583,0xc9))[_0x7001('0x46')](handleError(_0x3b4583,null));};exports[_0x7001('0x24')]=function(_0x41cead,_0x4128bc){if(_0x41cead[_0x7001('0x4d')]['id']){delete _0x41cead[_0x7001('0x4d')]['id'];}return db[_0x7001('0x2d')][_0x7001('0x4b')]({'where':{'id':_0x41cead[_0x7001('0x48')]['id']}})[_0x7001('0x25')](handleEntityNotFound(_0x4128bc,null))['then'](saveUpdates(_0x41cead[_0x7001('0x4d')],null))[_0x7001('0x25')](respondWithResult(_0x4128bc,null))[_0x7001('0x46')](handleError(_0x4128bc,null));};exports[_0x7001('0x26')]=function(_0x2ae618,_0x2a7b29){return db[_0x7001('0x2d')]['find']({'where':{'id':_0x2ae618[_0x7001('0x48')]['id']}})[_0x7001('0x25')](handleEntityNotFound(_0x2a7b29,null))[_0x7001('0x25')](removeEntity(_0x2a7b29,null))[_0x7001('0x46')](handleError(_0x2a7b29,null));};
\ No newline at end of file
index a740f32..7a3f3a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8477=['./intDynamics365Field.attributes','Dynamics365Field','dynamics365_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x94b09c,_0x56dfe3){var _0x4fa56e=function(_0x1c325f){while(--_0x1c325f){_0x94b09c['push'](_0x94b09c['shift']());}};_0x4fa56e(++_0x56dfe3);}(_0x8477,0x101));var _0x7847=function(_0x44afa4,_0x5be27b){_0x44afa4=_0x44afa4-0x0;var _0xcad289=_0x8477[_0x44afa4];return _0xcad289;};'use strict';var _=require(_0x7847('0x0'));var util=require(_0x7847('0x1'));var logger=require(_0x7847('0x2'))(_0x7847('0x3'));var moment=require(_0x7847('0x4'));var BPromise=require(_0x7847('0x5'));var rp=require(_0x7847('0x6'));var fs=require('fs');var path=require(_0x7847('0x7'));var rimraf=require('rimraf');var config=require(_0x7847('0x8'));var attributes=require(_0x7847('0x9'));module['exports']=function(_0x4de12f,_0x4e27bc){return _0x4de12f['define'](_0x7847('0xa'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0x7847('0xb'),'fields':[_0x7847('0xc'),_0x7847('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x312d=['moment','bluebird','path','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','util','../../config/logger','api'];(function(_0x47f1b9,_0x4553d3){var _0x5c67ac=function(_0x44b5b0){while(--_0x44b5b0){_0x47f1b9['push'](_0x47f1b9['shift']());}};_0x5c67ac(++_0x4553d3);}(_0x312d,0x174));var _0xd312=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x312d[_0xdea41a];return _0x15d0d8;};'use strict';var _=require('lodash');var util=require(_0xd312('0x0'));var logger=require(_0xd312('0x1'))(_0xd312('0x2'));var moment=require(_0xd312('0x3'));var BPromise=require(_0xd312('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd312('0x5'));var rimraf=require('rimraf');var config=require(_0xd312('0x6'));var attributes=require(_0xd312('0x7'));module[_0xd312('0x8')]=function(_0x4e6b26,_0x35f6c2){return _0x4e6b26[_0xd312('0x9')](_0xd312('0xa'),attributes,{'tableName':_0xd312('0xb'),'paranoid':![],'indexes':[{'name':_0xd312('0xc'),'fields':[_0xd312('0xd'),_0xd312('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 04b0197..8949036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x150c=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x1a654e,_0x28fbaf){var _0x31f4df=function(_0x494e3f){while(--_0x494e3f){_0x1a654e['push'](_0x1a654e['shift']());}};_0x31f4df(++_0x28fbaf);}(_0x150c,0x187));var _0xc150=function(_0x455953,_0x2ee57d){_0x455953=_0x455953-0x0;var _0x2d7d6b=_0x150c[_0x455953];return _0x2d7d6b;};'use strict';var _=require(_0xc150('0x0'));var util=require(_0xc150('0x1'));var moment=require(_0xc150('0x2'));var BPromise=require(_0xc150('0x3'));var rs=require(_0xc150('0x4'));var fs=require('fs');var Redis=require(_0xc150('0x5'));var db=require(_0xc150('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc150('0x7'))(_0xc150('0x8'));var config=require(_0xc150('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc150('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x295098,_0x4c0858,_0x1a4842){return new BPromise(function(_0x5e6e8e,_0x130c29){return client[_0xc150('0xb')](_0x295098,_0x1a4842)[_0xc150('0xc')](function(_0x58414e){logger[_0xc150('0xd')](_0xc150('0xe'),_0x4c0858,_0xc150('0xf'));logger[_0xc150('0x10')](_0xc150('0x11'),_0x4c0858,'request\x20sent',JSON[_0xc150('0x12')](_0x58414e));if(_0x58414e[_0xc150('0x13')]){if(_0x58414e[_0xc150('0x13')]['code']===0x1f4){logger[_0xc150('0x13')](_0xc150('0xe'),_0x4c0858,_0x58414e[_0xc150('0x13')]['message']);return _0x130c29(_0x58414e[_0xc150('0x13')][_0xc150('0x14')]);}logger['error'](_0xc150('0xe'),_0x4c0858,_0x58414e[_0xc150('0x13')][_0xc150('0x14')]);return _0x5e6e8e(_0x58414e['error'][_0xc150('0x14')]);}else{logger[_0xc150('0xd')](_0xc150('0xe'),_0x4c0858,'request\x20sent');_0x5e6e8e(_0x58414e[_0xc150('0x15')][_0xc150('0x14')]);}})[_0xc150('0x16')](function(_0x53b1a2){logger[_0xc150('0x13')](_0xc150('0xe'),_0x4c0858,_0x53b1a2);_0x130c29(_0x53b1a2);});});}
\ No newline at end of file
+var _0x4a2a=['request','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x140273,_0x104cde){var _0x1daf44=function(_0x46e64e){while(--_0x46e64e){_0x140273['push'](_0x140273['shift']());}};_0x1daf44(++_0x104cde);}(_0x4a2a,0x181));var _0xa4a2=function(_0x58a10c,_0x3f0cb8){_0x58a10c=_0x58a10c-0x0;var _0x3c7e7b=_0x4a2a[_0x58a10c];return _0x3c7e7b;};'use strict';var _=require(_0xa4a2('0x0'));var util=require(_0xa4a2('0x1'));var moment=require(_0xa4a2('0x2'));var BPromise=require(_0xa4a2('0x3'));var rs=require(_0xa4a2('0x4'));var fs=require('fs');var Redis=require(_0xa4a2('0x5'));var db=require(_0xa4a2('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xa4a2('0x7'))(_0xa4a2('0x8'));var config=require(_0xa4a2('0x9'));var jayson=require(_0xa4a2('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3d4c15,_0x1ac88d,_0x3a3d85){return new BPromise(function(_0xe4d455,_0x13bbf1){return client[_0xa4a2('0xb')](_0x3d4c15,_0x3a3d85)['then'](function(_0x38abd1){logger[_0xa4a2('0xc')](_0xa4a2('0xd'),_0x1ac88d,_0xa4a2('0xe'));logger[_0xa4a2('0xf')](_0xa4a2('0x10'),_0x1ac88d,'request\x20sent',JSON[_0xa4a2('0x11')](_0x38abd1));if(_0x38abd1[_0xa4a2('0x12')]){if(_0x38abd1[_0xa4a2('0x12')][_0xa4a2('0x13')]===0x1f4){logger['error'](_0xa4a2('0xd'),_0x1ac88d,_0x38abd1[_0xa4a2('0x12')][_0xa4a2('0x14')]);return _0x13bbf1(_0x38abd1[_0xa4a2('0x12')][_0xa4a2('0x14')]);}logger[_0xa4a2('0x12')](_0xa4a2('0xd'),_0x1ac88d,_0x38abd1[_0xa4a2('0x12')][_0xa4a2('0x14')]);return _0xe4d455(_0x38abd1['error']['message']);}else{logger[_0xa4a2('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x1ac88d,_0xa4a2('0xe'));_0xe4d455(_0x38abd1[_0xa4a2('0x15')][_0xa4a2('0x14')]);}})['catch'](function(_0x140f83){logger[_0xa4a2('0x12')](_0xa4a2('0xd'),_0x1ac88d,_0x140f83);_0x13bbf1(_0x140f83);});});}
\ No newline at end of file
index e2da351..83b86b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9ba=['index','/:id','show','get','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','exports','path','connect-timeout','express','./intFreshdeskAccount.controller','isAuthenticated'];(function(_0x19691f,_0x159737){var _0x5677b6=function(_0x41a9b2){while(--_0x41a9b2){_0x19691f['push'](_0x19691f['shift']());}};_0x5677b6(++_0x159737);}(_0xd9ba,0x1b3));var _0xad9b=function(_0x52b304,_0x494fd8){_0x52b304=_0x52b304-0x0;var _0x546aba=_0xd9ba[_0x52b304];return _0x546aba;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xad9b('0x0'));var timeout=require(_0xad9b('0x1'));var express=require(_0xad9b('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xad9b('0x3'));router['get']('/',auth[_0xad9b('0x4')](),controller[_0xad9b('0x5')]);router['get'](_0xad9b('0x6'),auth[_0xad9b('0x4')](),controller[_0xad9b('0x7')]);router[_0xad9b('0x8')](_0xad9b('0x9'),auth[_0xad9b('0x4')](),controller[_0xad9b('0xa')]);router['get'](_0xad9b('0xb'),auth[_0xad9b('0x4')](),controller[_0xad9b('0xc')]);router[_0xad9b('0xd')]('/',auth[_0xad9b('0x4')](),controller[_0xad9b('0xe')]);router[_0xad9b('0xd')](_0xad9b('0x9'),auth[_0xad9b('0x4')](),controller[_0xad9b('0xf')]);router[_0xad9b('0x10')](_0xad9b('0x6'),auth[_0xad9b('0x4')](),controller[_0xad9b('0x11')]);router[_0xad9b('0x12')](_0xad9b('0x6'),auth[_0xad9b('0x4')](),controller['destroy']);module[_0xad9b('0x13')]=router;
\ No newline at end of file
+var _0xe8d7=['show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','update','destroy','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id'];(function(_0x42c41a,_0x1c6537){var _0x400fa2=function(_0x4f89e9){while(--_0x4f89e9){_0x42c41a['push'](_0x42c41a['shift']());}};_0x400fa2(++_0x1c6537);}(_0xe8d7,0xfc));var _0x7e8d=function(_0x24a956,_0x1a7a4f){_0x24a956=_0x24a956-0x0;var _0x38aac9=_0xe8d7[_0x24a956];return _0x38aac9;};'use strict';var multer=require(_0x7e8d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7e8d('0x1'));var router=express[_0x7e8d('0x2')]();var fs_extra=require(_0x7e8d('0x3'));var auth=require(_0x7e8d('0x4'));var interaction=require(_0x7e8d('0x5'));var config=require(_0x7e8d('0x6'));var controller=require(_0x7e8d('0x7'));router[_0x7e8d('0x8')]('/',auth[_0x7e8d('0x9')](),controller[_0x7e8d('0xa')]);router['get'](_0x7e8d('0xb'),auth['isAuthenticated'](),controller[_0x7e8d('0xc')]);router[_0x7e8d('0x8')](_0x7e8d('0xd'),auth['isAuthenticated'](),controller[_0x7e8d('0xe')]);router[_0x7e8d('0x8')](_0x7e8d('0xf'),auth[_0x7e8d('0x9')](),controller[_0x7e8d('0x10')]);router[_0x7e8d('0x11')]('/',auth[_0x7e8d('0x9')](),controller[_0x7e8d('0x12')]);router[_0x7e8d('0x11')](_0x7e8d('0xd'),auth['isAuthenticated'](),controller[_0x7e8d('0x13')]);router['put'](_0x7e8d('0xb'),auth['isAuthenticated'](),controller[_0x7e8d('0x14')]);router['delete'](_0x7e8d('0xb'),auth[_0x7e8d('0x9')](),controller[_0x7e8d('0x15')]);module['exports']=router;
\ No newline at end of file
index 1881410..4637e68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['username','remoteUri','sequelize','exports','STRING'];(function(_0x5a4c20,_0x5e1714){var _0x17bce2=function(_0x2a79fb){while(--_0x2a79fb){_0x5a4c20['push'](_0x5a4c20['shift']());}};_0x17bce2(++_0x5e1714);}(_0xdb28,0x106));var _0x8db2=function(_0x15eed1,_0x498339){_0x15eed1=_0x15eed1-0x0;var _0x4f2798=_0xdb28[_0x15eed1];return _0x4f2798;};'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')},'apiKey':{'type':Sequelize[_0x8db2('0x2')]},'remoteUri':{'type':Sequelize[_0x8db2('0x2')],'unique':_0x8db2('0x4')},'serverUrl':{'type':Sequelize[_0x8db2('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xdd4f=['username','remoteUri','sequelize','STRING'];(function(_0x25de09,_0x96ed5a){var _0x3eda1e=function(_0x5e879c){while(--_0x5e879c){_0x25de09['push'](_0x25de09['shift']());}};_0x3eda1e(++_0x96ed5a);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x21b7ab,_0x597223){_0x21b7ab=_0x21b7ab-0x0;var _0x280f5e=_0xdd4f[_0x21b7ab];return _0x280f5e;};'use strict';var Sequelize=require(_0xfdd4('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfdd4('0x1')],'unique':_0xfdd4('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xfdd4('0x1')],'unique':_0xfdd4('0x3')},'serverUrl':{'type':Sequelize[_0xfdd4('0x1')],'allowNull':![]}};
\ No newline at end of file
index 52f8f6b..f810a56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6fe=['map','FreshdeskAccount','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','create','body','find','params','findOne','FreshdeskConfiguration','getConfigurations','addConfiguration','AccountId','Subjects','channel','getDescriptions','FreshdeskField','getFields','apiKey','remoteUri','slice','lastIndexOf','GET','format','%s/%s','Basic\x20%s','%s:X','toString','base64','requester','subject','agent','group','source','ticket_type','includes','default','custom_text','custom_dropdown','label','choices','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','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/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','end','status','json','offset','undefined','count','limit','set','Content-Range','save','then','destroy','sendStatus','stack','name','send','index'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc6fe,0xbc));var _0xec6f=function(_0x1d3dd0,_0x3a757b){_0x1d3dd0=_0x1d3dd0-0x0;var _0x2c5c56=_0xc6fe[_0x1d3dd0];return _0x2c5c56;};'use strict';var emlformat=require(_0xec6f('0x0'));var rimraf=require(_0xec6f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xec6f('0x2'));var rp=require(_0xec6f('0x3'));var moment=require(_0xec6f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xec6f('0x5'));var util=require('util');var path=require(_0xec6f('0x6'));var sox=require(_0xec6f('0x7'));var csv=require(_0xec6f('0x8'));var ejs=require(_0xec6f('0x9'));var fs=require('fs');var fs_extra=require(_0xec6f('0xa'));var _=require(_0xec6f('0xb'));var squel=require(_0xec6f('0xc'));var crypto=require(_0xec6f('0xd'));var jsforce=require(_0xec6f('0xe'));var deskjs=require(_0xec6f('0xf'));var toCsv=require('to-csv');var querystring=require(_0xec6f('0x10'));var Papa=require(_0xec6f('0x11'));var Redis=require(_0xec6f('0x12'));var authService=require(_0xec6f('0x13'));var qs=require(_0xec6f('0x14'));var as=require(_0xec6f('0x15'));var hardwareService=require(_0xec6f('0x16'));var logger=require(_0xec6f('0x17'))(_0xec6f('0x18'));var utils=require(_0xec6f('0x19'));var config=require(_0xec6f('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xec6f('0x1b'))['db'];var integrations=require(_0xec6f('0x1c'));function respondWithStatusCode(_0x398960,_0x39243d){_0x39243d=_0x39243d||0xcc;return function(_0x2af5a7){if(_0x2af5a7){return _0x398960['sendStatus'](_0x39243d);}return _0x398960['status'](_0x39243d)[_0xec6f('0x1d')]();};}function respondWithResult(_0x3a1fd4,_0x5b8f52){_0x5b8f52=_0x5b8f52||0xc8;return function(_0x4e166c){if(_0x4e166c){return _0x3a1fd4[_0xec6f('0x1e')](_0x5b8f52)[_0xec6f('0x1f')](_0x4e166c);}};}function respondWithFilteredResult(_0x4f5247,_0x5b6769){return function(_0x2424c6){if(_0x2424c6){var _0xf75616=typeof _0x5b6769[_0xec6f('0x20')]===_0xec6f('0x21')&&typeof _0x5b6769['limit']==='undefined';var _0x1630df=_0x2424c6[_0xec6f('0x22')];var _0x3f73c7=_0xf75616?0x0:_0x5b6769[_0xec6f('0x20')];var _0x2ae881=_0xf75616?_0x2424c6[_0xec6f('0x22')]:_0x5b6769[_0xec6f('0x20')]+_0x5b6769[_0xec6f('0x23')];var _0x5debba;if(_0x2ae881>=_0x1630df){_0x2ae881=_0x1630df;_0x5debba=0xc8;}else{_0x5debba=0xce;}_0x4f5247[_0xec6f('0x1e')](_0x5debba);return _0x4f5247[_0xec6f('0x24')](_0xec6f('0x25'),_0x3f73c7+'-'+_0x2ae881+'/'+_0x1630df)[_0xec6f('0x1f')](_0x2424c6);}return null;};}function patchUpdates(_0xb0f815){return function(_0x30214d){try{jsonpatch['apply'](_0x30214d,_0xb0f815,!![]);}catch(_0x3b403b){return BPromise['reject'](_0x3b403b);}return _0x30214d[_0xec6f('0x26')]();};}function saveUpdates(_0x32336b,_0xc9ee08){return function(_0x24b3f9){if(_0x24b3f9){return _0x24b3f9['update'](_0x32336b)[_0xec6f('0x27')](function(_0x57523c){return _0x57523c;});}return null;};}function removeEntity(_0x309d33,_0x412981){return function(_0xcf978){if(_0xcf978){return _0xcf978[_0xec6f('0x28')]()[_0xec6f('0x27')](function(){_0x309d33[_0xec6f('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd1eb4b,_0x2251fe){return function(_0xae0323){if(!_0xae0323){_0xd1eb4b[_0xec6f('0x29')](0x194);}return _0xae0323;};}function handleError(_0x1953cb,_0x30ae02){_0x30ae02=_0x30ae02||0x1f4;return function(_0x19e542){logger['error'](_0x19e542[_0xec6f('0x2a')]);if(_0x19e542[_0xec6f('0x2b')]){delete _0x19e542[_0xec6f('0x2b')];}_0x1953cb[_0xec6f('0x1e')](_0x30ae02)[_0xec6f('0x2c')](_0x19e542);};}exports[_0xec6f('0x2d')]=function(_0x5d539f,_0x5aff82){var _0xe2bb69={},_0x47eccb={},_0x156498={'count':0x0,'rows':[]};var _0x5f075f=_[_0xec6f('0x2e')](db[_0xec6f('0x2f')][_0xec6f('0x30')],function(_0x51a70b){return{'name':_0x51a70b[_0xec6f('0x31')],'type':_0x51a70b['type'][_0xec6f('0x32')]};});_0x47eccb[_0xec6f('0x33')]=_[_0xec6f('0x2e')](_0x5f075f,_0xec6f('0x2b'));_0x47eccb['query']=_[_0xec6f('0x34')](_0x5d539f[_0xec6f('0x35')]);_0x47eccb[_0xec6f('0x36')]=_[_0xec6f('0x37')](_0x47eccb[_0xec6f('0x33')],_0x47eccb[_0xec6f('0x35')]);_0xe2bb69[_0xec6f('0x38')]=_[_0xec6f('0x37')](_0x47eccb['model'],qs[_0xec6f('0x39')](_0x5d539f[_0xec6f('0x35')][_0xec6f('0x39')]));_0xe2bb69[_0xec6f('0x38')]=_0xe2bb69['attributes']['length']?_0xe2bb69[_0xec6f('0x38')]:_0x47eccb[_0xec6f('0x33')];if(!_0x5d539f[_0xec6f('0x35')]['hasOwnProperty'](_0xec6f('0x3a'))){_0xe2bb69[_0xec6f('0x23')]=qs['limit'](_0x5d539f[_0xec6f('0x35')]['limit']);_0xe2bb69['offset']=qs[_0xec6f('0x20')](_0x5d539f[_0xec6f('0x35')]['offset']);}_0xe2bb69[_0xec6f('0x3b')]=qs[_0xec6f('0x3c')](_0x5d539f[_0xec6f('0x35')][_0xec6f('0x3c')]);_0xe2bb69['where']=qs[_0xec6f('0x36')](_[_0xec6f('0x3d')](_0x5d539f['query'],_0x47eccb['filters']),_0x5f075f);if(_0x5d539f[_0xec6f('0x35')][_0xec6f('0x3e')]){_0xe2bb69[_0xec6f('0x3f')]=_[_0xec6f('0x40')](_0xe2bb69[_0xec6f('0x3f')],{'$or':_[_0xec6f('0x2e')](_0x5f075f,function(_0x19d166){if(_0x19d166[_0xec6f('0x41')]!==_0xec6f('0x42')){var _0x381dd8={};_0x381dd8[_0x19d166[_0xec6f('0x2b')]]={'$like':'%'+_0x5d539f[_0xec6f('0x35')]['filter']+'%'};return _0x381dd8;}})});}_0xe2bb69=_[_0xec6f('0x40')]({},_0xe2bb69,_0x5d539f[_0xec6f('0x43')]);var _0x18551b={'where':_0xe2bb69['where']};return db[_0xec6f('0x2f')][_0xec6f('0x22')](_0x18551b)['then'](function(_0x31c7be){_0x156498['count']=_0x31c7be;if(_0x5d539f[_0xec6f('0x35')][_0xec6f('0x44')]){_0xe2bb69[_0xec6f('0x45')]=[{'all':!![]}];}return db[_0xec6f('0x2f')][_0xec6f('0x46')](_0xe2bb69);})['then'](function(_0x5ad55f){_0x156498[_0xec6f('0x47')]=_0x5ad55f;return _0x156498;})[_0xec6f('0x27')](respondWithFilteredResult(_0x5aff82,_0xe2bb69))[_0xec6f('0x48')](handleError(_0x5aff82,null));};exports[_0xec6f('0x49')]=function(_0x50e94b,_0x538818){var _0x586a66={'raw':![],'where':{'id':_0x50e94b['params']['id']}},_0x539507={};_0x539507[_0xec6f('0x33')]=_[_0xec6f('0x34')](db['FreshdeskAccount'][_0xec6f('0x30')]);_0x539507[_0xec6f('0x35')]=_[_0xec6f('0x34')](_0x50e94b['query']);_0x539507[_0xec6f('0x36')]=_[_0xec6f('0x37')](_0x539507[_0xec6f('0x33')],_0x539507[_0xec6f('0x35')]);_0x586a66[_0xec6f('0x38')]=_[_0xec6f('0x37')](_0x539507['model'],qs[_0xec6f('0x39')](_0x50e94b[_0xec6f('0x35')][_0xec6f('0x39')]));_0x586a66[_0xec6f('0x38')]=_0x586a66[_0xec6f('0x38')][_0xec6f('0x4a')]?_0x586a66[_0xec6f('0x38')]:_0x539507[_0xec6f('0x33')];if(_0x50e94b[_0xec6f('0x35')][_0xec6f('0x44')]){_0x586a66[_0xec6f('0x45')]=[{'all':!![]}];}_0x586a66=_[_0xec6f('0x40')]({},_0x586a66,_0x50e94b[_0xec6f('0x43')]);return db[_0xec6f('0x2f')]['find'](_0x586a66)[_0xec6f('0x27')](handleEntityNotFound(_0x538818,null))[_0xec6f('0x27')](respondWithResult(_0x538818,null))['catch'](handleError(_0x538818,null));};exports[_0xec6f('0x4b')]=function(_0x2472bf,_0x3dd808){return db[_0xec6f('0x2f')][_0xec6f('0x4b')](_0x2472bf['body'],{})['then'](respondWithResult(_0x3dd808,0xc9))[_0xec6f('0x48')](handleError(_0x3dd808,null));};exports['update']=function(_0x3f738f,_0x45e8ca){if(_0x3f738f[_0xec6f('0x4c')]['id']){delete _0x3f738f[_0xec6f('0x4c')]['id'];}return db[_0xec6f('0x2f')][_0xec6f('0x4d')]({'where':{'id':_0x3f738f[_0xec6f('0x4e')]['id']}})['then'](handleEntityNotFound(_0x45e8ca,null))[_0xec6f('0x27')](saveUpdates(_0x3f738f['body'],null))[_0xec6f('0x27')](respondWithResult(_0x45e8ca,null))['catch'](handleError(_0x45e8ca,null));};exports[_0xec6f('0x28')]=function(_0x4acaa3,_0x5592da){return db[_0xec6f('0x2f')][_0xec6f('0x4d')]({'where':{'id':_0x4acaa3[_0xec6f('0x4e')]['id']}})[_0xec6f('0x27')](handleEntityNotFound(_0x5592da,null))[_0xec6f('0x27')](removeEntity(_0x5592da,null))[_0xec6f('0x48')](handleError(_0x5592da,null));};exports['getConfigurations']=function(_0xe8a040,_0x198197,_0x2f1738){var _0x4ca47b={};var _0xa2310c={};var _0x297ea4;var _0x326788;return db[_0xec6f('0x2f')][_0xec6f('0x4f')]({'where':{'id':_0xe8a040['params']['id']}})['then'](handleEntityNotFound(_0x198197,null))['then'](function(_0x5d061a){if(_0x5d061a){_0x297ea4=_0x5d061a;_0xa2310c[_0xec6f('0x33')]=_[_0xec6f('0x34')](db[_0xec6f('0x50')][_0xec6f('0x30')]);_0xa2310c[_0xec6f('0x35')]=_[_0xec6f('0x34')](_0xe8a040[_0xec6f('0x35')]);_0xa2310c[_0xec6f('0x36')]=_[_0xec6f('0x37')](_0xa2310c['model'],_0xa2310c[_0xec6f('0x35')]);_0x4ca47b[_0xec6f('0x38')]=_[_0xec6f('0x37')](_0xa2310c[_0xec6f('0x33')],qs[_0xec6f('0x39')](_0xe8a040[_0xec6f('0x35')][_0xec6f('0x39')]));_0x4ca47b[_0xec6f('0x38')]=_0x4ca47b[_0xec6f('0x38')][_0xec6f('0x4a')]?_0x4ca47b[_0xec6f('0x38')]:_0xa2310c[_0xec6f('0x33')];_0x4ca47b[_0xec6f('0x3b')]=qs[_0xec6f('0x3c')](_0xe8a040['query']['sort']);_0x4ca47b[_0xec6f('0x3f')]=qs['filters'](_['pick'](_0xe8a040['query'],_0xa2310c[_0xec6f('0x36')]));if(_0xe8a040['query'][_0xec6f('0x3e')]){_0x4ca47b[_0xec6f('0x3f')]=_[_0xec6f('0x40')](_0x4ca47b[_0xec6f('0x3f')],{'$or':_[_0xec6f('0x2e')](_0x4ca47b[_0xec6f('0x38')],function(_0x3f6500){var _0x42b269={};_0x42b269[_0x3f6500]={'$like':'%'+_0xe8a040[_0xec6f('0x35')]['filter']+'%'};return _0x42b269;})});}_0x4ca47b=_[_0xec6f('0x40')]({},_0x4ca47b,_0xe8a040['options']);return _0x297ea4[_0xec6f('0x51')](_0x4ca47b);}})['then'](function(_0x43abfe){if(_0x43abfe){_0x326788=_0x43abfe[_0xec6f('0x4a')];if(!_0xe8a040[_0xec6f('0x35')]['hasOwnProperty']('nolimit')){_0x4ca47b['limit']=qs['limit'](_0xe8a040[_0xec6f('0x35')][_0xec6f('0x23')]);_0x4ca47b[_0xec6f('0x20')]=qs[_0xec6f('0x20')](_0xe8a040[_0xec6f('0x35')]['offset']);}return _0x297ea4[_0xec6f('0x51')](_0x4ca47b);}})[_0xec6f('0x27')](function(_0x13ed22){if(_0x13ed22){return _0x13ed22?{'count':_0x326788,'rows':_0x13ed22}:null;}})['then'](respondWithResult(_0x198197,null))[_0xec6f('0x48')](handleError(_0x198197,null));};exports[_0xec6f('0x52')]=function(_0x1c58b5,_0x5cffc1,_0x2e5e0f){if(_0x1c58b5[_0xec6f('0x4c')]['id']){delete _0x1c58b5[_0xec6f('0x4c')]['id'];}return db[_0xec6f('0x2f')][_0xec6f('0x4f')]({'where':{'id':_0x1c58b5[_0xec6f('0x4e')]['id']}})[_0xec6f('0x27')](handleEntityNotFound(_0x5cffc1,null))[_0xec6f('0x27')](function(_0x7f0c30){if(_0x7f0c30){_0x1c58b5[_0xec6f('0x4c')][_0xec6f('0x53')]=_0x7f0c30['id'];_0x1c58b5[_0xec6f('0x4c')][_0xec6f('0x54')]=integrations['getSubjects'](_0x1c58b5[_0xec6f('0x4c')][_0xec6f('0x55')],_0x1c58b5[_0xec6f('0x4c')][_0xec6f('0x41')]);_0x1c58b5[_0xec6f('0x4c')]['Descriptions']=integrations[_0xec6f('0x56')](_0x1c58b5[_0xec6f('0x4c')][_0xec6f('0x55')],_0x1c58b5[_0xec6f('0x4c')][_0xec6f('0x41')]);return db[_0xec6f('0x50')]['create'](_0x1c58b5['body'],{'include':[{'model':db[_0xec6f('0x57')],'as':_0xec6f('0x54')},{'model':db[_0xec6f('0x57')],'as':'Descriptions'}]});}return null;})[_0xec6f('0x27')](respondWithResult(_0x5cffc1,null))[_0xec6f('0x48')](handleError(_0x5cffc1,null));};exports[_0xec6f('0x58')]=function(_0x396ca2,_0x124ca1,_0x36987b){var _0x128d6f='';return db['FreshdeskAccount'][_0xec6f('0x4f')]({'where':{'id':_0x396ca2[_0xec6f('0x4e')]['id']},'attributes':['id','remoteUri',_0xec6f('0x59')]})[_0xec6f('0x27')](handleEntityNotFound(_0x124ca1,null))[_0xec6f('0x27')](function(_0x4dc816){if(_0x4dc816){_0x128d6f=_0x4dc816[_0xec6f('0x5a')];var _0x3bcc3f=_0x128d6f[_0xec6f('0x5b')](-0x1);if(_0x3bcc3f==='/'){_0x128d6f=_0x128d6f['substring'](0x0,_0x128d6f[_0xec6f('0x5c')](_0x3bcc3f));}return rp({'method':_0xec6f('0x5d'),'uri':util[_0xec6f('0x5e')](_0xec6f('0x5f'),_0x128d6f,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xec6f('0x5e')](_0xec6f('0x60'),new Buffer(util['format'](_0xec6f('0x61'),_0x4dc816[_0xec6f('0x59')]))[_0xec6f('0x62')](_0xec6f('0x63')))},'json':!![]});}})['then'](function(_0x3e7ecc){if(_0x3e7ecc){var _0x3245c6=[_0xec6f('0x64'),_0xec6f('0x65'),_0xec6f('0x66'),'description',_0xec6f('0x1e'),'priority',_0xec6f('0x67'),_0xec6f('0x68'),_0xec6f('0x69'),_0xec6f('0x67'),'company'];_['remove'](_0x3e7ecc,function(_0x19c16b){return _0x3245c6[_0xec6f('0x6a')](_0x19c16b[_0xec6f('0x2b')])||!_0x19c16b[_0xec6f('0x6b')]&&_0x19c16b[_0xec6f('0x41')]!==_0xec6f('0x6c')&&_0x19c16b['type']!==_0xec6f('0x6d');});return{'count':_0x3e7ecc[_0xec6f('0x4a')],'rows':_[_0xec6f('0x2e')](_0x3e7ecc,function(_0x5bd8ab){return{'id':_0x5bd8ab[_0xec6f('0x2b')],'name':_0x5bd8ab[_0xec6f('0x6e')],'custom':!_0x5bd8ab[_0xec6f('0x6b')],'options':_0x5bd8ab[_0xec6f('0x6f')]?_['map'](_0x5bd8ab[_0xec6f('0x6f')],function(_0x519435){return{'name':_['capitalize'](_0x519435),'value':_0x519435};}):[]};})};}})[_0xec6f('0x27')](respondWithResult(_0x124ca1,null))['catch'](function(_0x3f9f69){var _0x902516=_0x396ca2[_0xec6f('0x35')]['test']?0x1f4:_0x3f9f69[_0xec6f('0x70')]||0x1f4;logger['error'](_0xec6f('0x71'),'getFields',_0x902516,JSON[_0xec6f('0x72')](_0x3f9f69));delete _0x3f9f69[_0xec6f('0x2b')];if(_0x902516===0x191){_0x902516=0x190;}_0x124ca1[_0xec6f('0x1e')](_0x902516)[_0xec6f('0x2c')](_0x396ca2['query'][_0xec6f('0x73')]?{'message':_0xec6f('0x74'),'statusCode':_0x3f9f69[_0xec6f('0x70')]}:_0x3f9f69);});};
\ No newline at end of file
+var _0x77f1=['find','getConfigurations','findOne','FreshdeskConfiguration','length','sort','pick','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','agent','description','priority','group','company','remove','includes','default','choices','capitalize','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','FreshdeskAccount','fieldName','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','where','filter','type','VIRTUAL','merge','options','includeAll','catch','params','rawAttributes','body'];(function(_0x71773d,_0xc8e022){var _0x56684b=function(_0x5f3f17){while(--_0x5f3f17){_0x71773d['push'](_0x71773d['shift']());}};_0x56684b(++_0xc8e022);}(_0x77f1,0x1dd));var _0x177f=function(_0x5341df,_0x1a5a5e){_0x5341df=_0x5341df-0x0;var _0x5462e6=_0x77f1[_0x5341df];return _0x5462e6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x177f('0x0'));var zipdir=require(_0x177f('0x1'));var jsonpatch=require(_0x177f('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x177f('0x3'));var util=require(_0x177f('0x4'));var path=require('path');var sox=require(_0x177f('0x5'));var csv=require(_0x177f('0x6'));var ejs=require(_0x177f('0x7'));var fs=require('fs');var fs_extra=require(_0x177f('0x8'));var _=require(_0x177f('0x9'));var squel=require('squel');var crypto=require(_0x177f('0xa'));var jsforce=require(_0x177f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x177f('0x6'));var querystring=require('querystring');var Papa=require(_0x177f('0xc'));var Redis=require('ioredis');var authService=require(_0x177f('0xd'));var qs=require(_0x177f('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x177f('0xf'));var logger=require(_0x177f('0x10'))(_0x177f('0x11'));var utils=require(_0x177f('0x12'));var config=require(_0x177f('0x13'));var licenseUtil=require(_0x177f('0x14'));var db=require(_0x177f('0x15'))['db'];var integrations=require(_0x177f('0x16'));function respondWithStatusCode(_0x564f48,_0x2d1299){_0x2d1299=_0x2d1299||0xcc;return function(_0xb74829){if(_0xb74829){return _0x564f48[_0x177f('0x17')](_0x2d1299);}return _0x564f48[_0x177f('0x18')](_0x2d1299)['end']();};}function respondWithResult(_0x34ba83,_0x578d19){_0x578d19=_0x578d19||0xc8;return function(_0x1c947f){if(_0x1c947f){return _0x34ba83['status'](_0x578d19)['json'](_0x1c947f);}};}function respondWithFilteredResult(_0x2366ba,_0x2f9446){return function(_0x457d8b){if(_0x457d8b){var _0x3eefd9=typeof _0x2f9446[_0x177f('0x19')]===_0x177f('0x1a')&&typeof _0x2f9446[_0x177f('0x1b')]===_0x177f('0x1a');var _0x2389d5=_0x457d8b[_0x177f('0x1c')];var _0x4d8aa3=_0x3eefd9?0x0:_0x2f9446[_0x177f('0x19')];var _0xac6972=_0x3eefd9?_0x457d8b['count']:_0x2f9446[_0x177f('0x19')]+_0x2f9446[_0x177f('0x1b')];var _0xbb58a2;if(_0xac6972>=_0x2389d5){_0xac6972=_0x2389d5;_0xbb58a2=0xc8;}else{_0xbb58a2=0xce;}_0x2366ba[_0x177f('0x18')](_0xbb58a2);return _0x2366ba[_0x177f('0x1d')](_0x177f('0x1e'),_0x4d8aa3+'-'+_0xac6972+'/'+_0x2389d5)[_0x177f('0x1f')](_0x457d8b);}return null;};}function patchUpdates(_0x3d3daf){return function(_0x3d48eb){try{jsonpatch[_0x177f('0x20')](_0x3d48eb,_0x3d3daf,!![]);}catch(_0x573548){return BPromise[_0x177f('0x21')](_0x573548);}return _0x3d48eb[_0x177f('0x22')]();};}function saveUpdates(_0x15d38a,_0x34eeb9){return function(_0x2880e6){if(_0x2880e6){return _0x2880e6[_0x177f('0x23')](_0x15d38a)[_0x177f('0x24')](function(_0x5eeffa){return _0x5eeffa;});}return null;};}function removeEntity(_0x59f00f,_0x298d75){return function(_0x148c17){if(_0x148c17){return _0x148c17[_0x177f('0x25')]()[_0x177f('0x24')](function(){_0x59f00f[_0x177f('0x18')](0xcc)[_0x177f('0x26')]();});}};}function handleEntityNotFound(_0x56f885,_0x248e4c){return function(_0x13aed6){if(!_0x13aed6){_0x56f885[_0x177f('0x17')](0x194);}return _0x13aed6;};}function handleError(_0x1e9851,_0xd0463){_0xd0463=_0xd0463||0x1f4;return function(_0x13735f){logger[_0x177f('0x27')](_0x13735f[_0x177f('0x28')]);if(_0x13735f[_0x177f('0x29')]){delete _0x13735f[_0x177f('0x29')];}_0x1e9851[_0x177f('0x18')](_0xd0463)[_0x177f('0x2a')](_0x13735f);};}exports[_0x177f('0x2b')]=function(_0x30655b,_0xdf7bd){var _0x4a1b02={},_0xfa8ad0={},_0x1df4e4={'count':0x0,'rows':[]};var _0x4b9c40=_[_0x177f('0x2c')](db[_0x177f('0x2d')]['rawAttributes'],function(_0x3a83c9){return{'name':_0x3a83c9[_0x177f('0x2e')],'type':_0x3a83c9['type']['key']};});_0xfa8ad0['model']=_['map'](_0x4b9c40,_0x177f('0x29'));_0xfa8ad0[_0x177f('0x2f')]=_[_0x177f('0x30')](_0x30655b[_0x177f('0x2f')]);_0xfa8ad0[_0x177f('0x31')]=_[_0x177f('0x32')](_0xfa8ad0[_0x177f('0x33')],_0xfa8ad0[_0x177f('0x2f')]);_0x4a1b02[_0x177f('0x34')]=_[_0x177f('0x32')](_0xfa8ad0['model'],qs[_0x177f('0x35')](_0x30655b[_0x177f('0x2f')]['fields']));_0x4a1b02[_0x177f('0x34')]=_0x4a1b02[_0x177f('0x34')]['length']?_0x4a1b02['attributes']:_0xfa8ad0[_0x177f('0x33')];if(!_0x30655b[_0x177f('0x2f')][_0x177f('0x36')](_0x177f('0x37'))){_0x4a1b02['limit']=qs['limit'](_0x30655b[_0x177f('0x2f')][_0x177f('0x1b')]);_0x4a1b02[_0x177f('0x19')]=qs[_0x177f('0x19')](_0x30655b[_0x177f('0x2f')][_0x177f('0x19')]);}_0x4a1b02[_0x177f('0x38')]=qs['sort'](_0x30655b[_0x177f('0x2f')]['sort']);_0x4a1b02[_0x177f('0x39')]=qs[_0x177f('0x31')](_['pick'](_0x30655b[_0x177f('0x2f')],_0xfa8ad0[_0x177f('0x31')]),_0x4b9c40);if(_0x30655b[_0x177f('0x2f')][_0x177f('0x3a')]){_0x4a1b02['where']=_['merge'](_0x4a1b02['where'],{'$or':_[_0x177f('0x2c')](_0x4b9c40,function(_0x1244b2){if(_0x1244b2[_0x177f('0x3b')]!==_0x177f('0x3c')){var _0x3cdd8f={};_0x3cdd8f[_0x1244b2[_0x177f('0x29')]]={'$like':'%'+_0x30655b[_0x177f('0x2f')][_0x177f('0x3a')]+'%'};return _0x3cdd8f;}})});}_0x4a1b02=_[_0x177f('0x3d')]({},_0x4a1b02,_0x30655b[_0x177f('0x3e')]);var _0x21aa43={'where':_0x4a1b02['where']};return db[_0x177f('0x2d')][_0x177f('0x1c')](_0x21aa43)[_0x177f('0x24')](function(_0xd8263f){_0x1df4e4[_0x177f('0x1c')]=_0xd8263f;if(_0x30655b[_0x177f('0x2f')][_0x177f('0x3f')]){_0x4a1b02['include']=[{'all':!![]}];}return db[_0x177f('0x2d')]['findAll'](_0x4a1b02);})[_0x177f('0x24')](function(_0x38dd5f){_0x1df4e4['rows']=_0x38dd5f;return _0x1df4e4;})[_0x177f('0x24')](respondWithFilteredResult(_0xdf7bd,_0x4a1b02))[_0x177f('0x40')](handleError(_0xdf7bd,null));};exports['show']=function(_0xa98e63,_0x52b522){var _0x4bdff5={'raw':![],'where':{'id':_0xa98e63[_0x177f('0x41')]['id']}},_0x224a44={};_0x224a44[_0x177f('0x33')]=_['keys'](db[_0x177f('0x2d')][_0x177f('0x42')]);_0x224a44[_0x177f('0x2f')]=_[_0x177f('0x30')](_0xa98e63['query']);_0x224a44[_0x177f('0x31')]=_[_0x177f('0x32')](_0x224a44['model'],_0x224a44[_0x177f('0x2f')]);_0x4bdff5['attributes']=_[_0x177f('0x32')](_0x224a44['model'],qs[_0x177f('0x35')](_0xa98e63[_0x177f('0x2f')][_0x177f('0x35')]));_0x4bdff5[_0x177f('0x34')]=_0x4bdff5[_0x177f('0x34')]['length']?_0x4bdff5[_0x177f('0x34')]:_0x224a44[_0x177f('0x33')];if(_0xa98e63[_0x177f('0x2f')][_0x177f('0x3f')]){_0x4bdff5['include']=[{'all':!![]}];}_0x4bdff5=_[_0x177f('0x3d')]({},_0x4bdff5,_0xa98e63[_0x177f('0x3e')]);return db['FreshdeskAccount']['find'](_0x4bdff5)[_0x177f('0x24')](handleEntityNotFound(_0x52b522,null))[_0x177f('0x24')](respondWithResult(_0x52b522,null))[_0x177f('0x40')](handleError(_0x52b522,null));};exports['create']=function(_0xfdb9da,_0x389a60){return db[_0x177f('0x2d')]['create'](_0xfdb9da[_0x177f('0x43')],{})[_0x177f('0x24')](respondWithResult(_0x389a60,0xc9))[_0x177f('0x40')](handleError(_0x389a60,null));};exports[_0x177f('0x23')]=function(_0x3db125,_0x1b0951){if(_0x3db125[_0x177f('0x43')]['id']){delete _0x3db125[_0x177f('0x43')]['id'];}return db[_0x177f('0x2d')][_0x177f('0x44')]({'where':{'id':_0x3db125[_0x177f('0x41')]['id']}})[_0x177f('0x24')](handleEntityNotFound(_0x1b0951,null))[_0x177f('0x24')](saveUpdates(_0x3db125[_0x177f('0x43')],null))[_0x177f('0x24')](respondWithResult(_0x1b0951,null))[_0x177f('0x40')](handleError(_0x1b0951,null));};exports[_0x177f('0x25')]=function(_0x5b9f31,_0x47eff6){return db[_0x177f('0x2d')][_0x177f('0x44')]({'where':{'id':_0x5b9f31[_0x177f('0x41')]['id']}})[_0x177f('0x24')](handleEntityNotFound(_0x47eff6,null))['then'](removeEntity(_0x47eff6,null))[_0x177f('0x40')](handleError(_0x47eff6,null));};exports[_0x177f('0x45')]=function(_0x8a0594,_0x2199d7,_0x2f9481){var _0x1bc536={};var _0x153163={};var _0x28f106;var _0x24bca6;return db[_0x177f('0x2d')][_0x177f('0x46')]({'where':{'id':_0x8a0594[_0x177f('0x41')]['id']}})[_0x177f('0x24')](handleEntityNotFound(_0x2199d7,null))[_0x177f('0x24')](function(_0x154f6c){if(_0x154f6c){_0x28f106=_0x154f6c;_0x153163[_0x177f('0x33')]=_['keys'](db[_0x177f('0x47')]['rawAttributes']);_0x153163[_0x177f('0x2f')]=_[_0x177f('0x30')](_0x8a0594['query']);_0x153163['filters']=_['intersection'](_0x153163[_0x177f('0x33')],_0x153163['query']);_0x1bc536[_0x177f('0x34')]=_['intersection'](_0x153163['model'],qs[_0x177f('0x35')](_0x8a0594[_0x177f('0x2f')]['fields']));_0x1bc536[_0x177f('0x34')]=_0x1bc536[_0x177f('0x34')][_0x177f('0x48')]?_0x1bc536['attributes']:_0x153163[_0x177f('0x33')];_0x1bc536[_0x177f('0x38')]=qs[_0x177f('0x49')](_0x8a0594[_0x177f('0x2f')][_0x177f('0x49')]);_0x1bc536[_0x177f('0x39')]=qs[_0x177f('0x31')](_[_0x177f('0x4a')](_0x8a0594[_0x177f('0x2f')],_0x153163[_0x177f('0x31')]));if(_0x8a0594[_0x177f('0x2f')][_0x177f('0x3a')]){_0x1bc536['where']=_[_0x177f('0x3d')](_0x1bc536[_0x177f('0x39')],{'$or':_[_0x177f('0x2c')](_0x1bc536[_0x177f('0x34')],function(_0x367f72){var _0x4a8dd8={};_0x4a8dd8[_0x367f72]={'$like':'%'+_0x8a0594[_0x177f('0x2f')][_0x177f('0x3a')]+'%'};return _0x4a8dd8;})});}_0x1bc536=_['merge']({},_0x1bc536,_0x8a0594[_0x177f('0x3e')]);return _0x28f106[_0x177f('0x45')](_0x1bc536);}})[_0x177f('0x24')](function(_0x599399){if(_0x599399){_0x24bca6=_0x599399['length'];if(!_0x8a0594[_0x177f('0x2f')][_0x177f('0x36')]('nolimit')){_0x1bc536[_0x177f('0x1b')]=qs[_0x177f('0x1b')](_0x8a0594['query'][_0x177f('0x1b')]);_0x1bc536[_0x177f('0x19')]=qs[_0x177f('0x19')](_0x8a0594[_0x177f('0x2f')]['offset']);}return _0x28f106[_0x177f('0x45')](_0x1bc536);}})[_0x177f('0x24')](function(_0x5f6df6){if(_0x5f6df6){return _0x5f6df6?{'count':_0x24bca6,'rows':_0x5f6df6}:null;}})[_0x177f('0x24')](respondWithResult(_0x2199d7,null))[_0x177f('0x40')](handleError(_0x2199d7,null));};exports[_0x177f('0x4b')]=function(_0x36a2b6,_0xc2bee,_0x549c7a){if(_0x36a2b6['body']['id']){delete _0x36a2b6[_0x177f('0x43')]['id'];}return db[_0x177f('0x2d')][_0x177f('0x46')]({'where':{'id':_0x36a2b6['params']['id']}})[_0x177f('0x24')](handleEntityNotFound(_0xc2bee,null))[_0x177f('0x24')](function(_0xda1af6){if(_0xda1af6){_0x36a2b6['body'][_0x177f('0x4c')]=_0xda1af6['id'];_0x36a2b6[_0x177f('0x43')][_0x177f('0x4d')]=integrations[_0x177f('0x4e')](_0x36a2b6['body']['channel'],_0x36a2b6['body'][_0x177f('0x3b')]);_0x36a2b6[_0x177f('0x43')][_0x177f('0x4f')]=integrations[_0x177f('0x50')](_0x36a2b6[_0x177f('0x43')]['channel'],_0x36a2b6[_0x177f('0x43')]['type']);return db[_0x177f('0x47')]['create'](_0x36a2b6['body'],{'include':[{'model':db[_0x177f('0x51')],'as':_0x177f('0x4d')},{'model':db[_0x177f('0x51')],'as':_0x177f('0x4f')}]});}return null;})['then'](respondWithResult(_0xc2bee,null))[_0x177f('0x40')](handleError(_0xc2bee,null));};exports[_0x177f('0x52')]=function(_0x2d6f21,_0x171f01,_0x2aae5a){var _0x2ddb26='';return db[_0x177f('0x2d')][_0x177f('0x46')]({'where':{'id':_0x2d6f21[_0x177f('0x41')]['id']},'attributes':['id',_0x177f('0x53'),_0x177f('0x54')]})[_0x177f('0x24')](handleEntityNotFound(_0x171f01,null))[_0x177f('0x24')](function(_0x14c10a){if(_0x14c10a){_0x2ddb26=_0x14c10a['remoteUri'];var _0x3289ee=_0x2ddb26[_0x177f('0x55')](-0x1);if(_0x3289ee==='/'){_0x2ddb26=_0x2ddb26['substring'](0x0,_0x2ddb26[_0x177f('0x56')](_0x3289ee));}return rp({'method':'GET','uri':util[_0x177f('0x57')](_0x177f('0x58'),_0x2ddb26,_0x177f('0x59')),'headers':{'Authorization':util['format'](_0x177f('0x5a'),new Buffer(util[_0x177f('0x57')](_0x177f('0x5b'),_0x14c10a[_0x177f('0x54')]))[_0x177f('0x5c')](_0x177f('0x5d')))},'json':!![]});}})[_0x177f('0x24')](function(_0x481c23){if(_0x481c23){var _0x1a124f=['requester','subject',_0x177f('0x5e'),_0x177f('0x5f'),_0x177f('0x18'),_0x177f('0x60'),_0x177f('0x61'),'source','ticket_type',_0x177f('0x61'),_0x177f('0x62')];_[_0x177f('0x63')](_0x481c23,function(_0x51fadf){return _0x1a124f[_0x177f('0x64')](_0x51fadf[_0x177f('0x29')])||!_0x51fadf[_0x177f('0x65')]&&_0x51fadf[_0x177f('0x3b')]!=='custom_text'&&_0x51fadf['type']!=='custom_dropdown';});return{'count':_0x481c23[_0x177f('0x48')],'rows':_[_0x177f('0x2c')](_0x481c23,function(_0x261784){return{'id':_0x261784[_0x177f('0x29')],'name':_0x261784['label'],'custom':!_0x261784['default'],'options':_0x261784[_0x177f('0x66')]?_[_0x177f('0x2c')](_0x261784['choices'],function(_0x4f3c1c){return{'name':_[_0x177f('0x67')](_0x4f3c1c),'value':_0x4f3c1c};}):[]};})};}})[_0x177f('0x24')](respondWithResult(_0x171f01,null))[_0x177f('0x40')](function(_0x273f09){var _0x115279=_0x2d6f21[_0x177f('0x2f')]['test']?0x1f4:_0x273f09[_0x177f('0x68')]||0x1f4;logger[_0x177f('0x27')](_0x177f('0x69'),_0x177f('0x52'),_0x115279,JSON[_0x177f('0x6a')](_0x273f09));delete _0x273f09[_0x177f('0x29')];if(_0x115279===0x191){_0x115279=0x190;}_0x171f01[_0x177f('0x18')](_0x115279)[_0x177f('0x2a')](_0x2d6f21[_0x177f('0x2f')][_0x177f('0x6b')]?{'message':_0x177f('0x6c'),'statusCode':_0x273f09['statusCode']}:_0x273f09);});};
\ No newline at end of file
index f822157..40536a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2154=['exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','../../config/logger','bluebird','path','rimraf'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x2154,0x151));var _0x4215=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x2154[_0xc4001c];return _0x49f7bc;};'use strict';var _=require(_0x4215('0x0'));var util=require('util');var logger=require(_0x4215('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4215('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4215('0x3'));var rimraf=require(_0x4215('0x4'));var config=require('../../config/environment');var attributes=require('./intFreshdeskAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x4215('0x5')]=function(_0x40c8f4,_0x2375e6){return _0x40c8f4[_0x4215('0x6')](_0x4215('0x7'),attributes,{'tableName':_0x4215('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ca2=['../../components/integrations/configuration','exports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intFreshdeskAccount.attributes'];(function(_0x394f68,_0x198543){var _0x487357=function(_0x204f28){while(--_0x204f28){_0x394f68['push'](_0x394f68['shift']());}};_0x487357(++_0x198543);}(_0x6ca2,0x18e));var _0x26ca=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6ca2[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x26ca('0x0'));var util=require(_0x26ca('0x1'));var logger=require(_0x26ca('0x2'))(_0x26ca('0x3'));var moment=require(_0x26ca('0x4'));var BPromise=require(_0x26ca('0x5'));var rp=require(_0x26ca('0x6'));var fs=require('fs');var path=require(_0x26ca('0x7'));var rimraf=require(_0x26ca('0x8'));var config=require('../../config/environment');var attributes=require(_0x26ca('0x9'));var integrations=require(_0x26ca('0xa'));module[_0x26ca('0xb')]=function(_0xd5b4b,_0x38409b){return _0xd5b4b['define']('FreshdeskAccount',attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ffff379..d215532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf5d=['FreshdeskAccount,\x20%s,\x20%s','message','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','find','ShowFreshdeskAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','request','then','info','request\x20sent','stringify','error','code'];(function(_0x31c6a2,_0x88b9b7){var _0x156017=function(_0x424ccb){while(--_0x424ccb){_0x31c6a2['push'](_0x31c6a2['shift']());}};_0x156017(++_0x88b9b7);}(_0xaf5d,0xf8));var _0xdaf5=function(_0x50c760,_0x249107){_0x50c760=_0x50c760-0x0;var _0x5cafff=_0xaf5d[_0x50c760];return _0x5cafff;};'use strict';var _=require(_0xdaf5('0x0'));var util=require(_0xdaf5('0x1'));var moment=require(_0xdaf5('0x2'));var BPromise=require(_0xdaf5('0x3'));var rs=require(_0xdaf5('0x4'));var fs=require('fs');var Redis=require(_0xdaf5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdaf5('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xdaf5('0x7'));var jayson=require(_0xdaf5('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x336c61,_0x325b4a,_0x3f6fc4){return new BPromise(function(_0x1661da,_0xc0672a){return client[_0xdaf5('0x9')](_0x336c61,_0x3f6fc4)[_0xdaf5('0xa')](function(_0x73be7e){logger[_0xdaf5('0xb')]('FreshdeskAccount,\x20%s,\x20%s',_0x325b4a,_0xdaf5('0xc'));logger['debug']('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x325b4a,_0xdaf5('0xc'),JSON[_0xdaf5('0xd')](_0x73be7e));if(_0x73be7e[_0xdaf5('0xe')]){if(_0x73be7e['error'][_0xdaf5('0xf')]===0x1f4){logger[_0xdaf5('0xe')](_0xdaf5('0x10'),_0x325b4a,_0x73be7e['error'][_0xdaf5('0x11')]);return _0xc0672a(_0x73be7e[_0xdaf5('0xe')][_0xdaf5('0x11')]);}logger[_0xdaf5('0xe')]('FreshdeskAccount,\x20%s,\x20%s',_0x325b4a,_0x73be7e[_0xdaf5('0xe')][_0xdaf5('0x11')]);return _0x1661da(_0x73be7e['error'][_0xdaf5('0x11')]);}else{logger[_0xdaf5('0xb')](_0xdaf5('0x10'),_0x325b4a,'request\x20sent');_0x1661da(_0x73be7e['result'][_0xdaf5('0x11')]);}})[_0xdaf5('0x12')](function(_0x365892){logger[_0xdaf5('0xe')]('FreshdeskAccount,\x20%s,\x20%s',_0x325b4a,_0x365892);_0xc0672a(_0x365892);});});}exports[_0xdaf5('0x13')]=function(_0x278fef){var _0x5a45c2=this;return new Promise(function(_0x41a5dd,_0x25f952){return db[_0xdaf5('0x14')][_0xdaf5('0x15')]({'raw':_0x278fef[_0xdaf5('0x16')]?_0x278fef[_0xdaf5('0x16')][_0xdaf5('0x17')]===undefined?!![]:![]:!![],'where':_0x278fef['options']?_0x278fef[_0xdaf5('0x16')][_0xdaf5('0x18')]||null:null,'attributes':_0x278fef[_0xdaf5('0x16')]?_0x278fef[_0xdaf5('0x16')][_0xdaf5('0x19')]||null:null,'limit':_0x278fef['options']?_0x278fef['options'][_0xdaf5('0x1a')]||null:null,'include':_0x278fef[_0xdaf5('0x16')]?_0x278fef[_0xdaf5('0x16')][_0xdaf5('0x1b')]?_[_0xdaf5('0x1c')](_0x278fef[_0xdaf5('0x16')][_0xdaf5('0x1b')],function(_0x17dfd4){return{'model':db[_0x17dfd4['model']],'as':_0x17dfd4['as'],'attributes':_0x17dfd4[_0xdaf5('0x19')],'include':_0x17dfd4[_0xdaf5('0x1b')]?_['map'](_0x17dfd4[_0xdaf5('0x1b')],function(_0x89c6e2){return{'model':db[_0x89c6e2[_0xdaf5('0x1d')]],'as':_0x89c6e2['as'],'attributes':_0x89c6e2[_0xdaf5('0x19')],'include':_0x89c6e2[_0xdaf5('0x1b')]?_[_0xdaf5('0x1c')](_0x89c6e2['include'],function(_0x268df0){return{'model':db[_0x268df0[_0xdaf5('0x1d')]],'as':_0x268df0['as'],'attributes':_0x268df0[_0xdaf5('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e3e35){logger[_0xdaf5('0xb')](_0xdaf5('0x13'),_0x278fef);logger[_0xdaf5('0x1e')]('GetFreshdeskAccount',_0x278fef,JSON[_0xdaf5('0xd')](_0x1e3e35));_0x41a5dd(_0x1e3e35);})['catch'](function(_0x2d4e3b){logger[_0xdaf5('0xe')]('GetFreshdeskAccount',_0x2d4e3b['message'],_0x278fef);_0x25f952(_0x5a45c2['error'](0x1f4,_0x2d4e3b['message']));});});};exports['ShowFreshdeskAccount']=function(_0x45f809){var _0x77321=this;return new Promise(function(_0x15f7ab,_0xb3be51){return db[_0xdaf5('0x14')][_0xdaf5('0x1f')]({'raw':_0x45f809[_0xdaf5('0x16')]?_0x45f809[_0xdaf5('0x16')][_0xdaf5('0x17')]===undefined?!![]:![]:!![],'where':_0x45f809[_0xdaf5('0x16')]?_0x45f809[_0xdaf5('0x16')][_0xdaf5('0x18')]||null:null,'attributes':_0x45f809[_0xdaf5('0x16')]?_0x45f809[_0xdaf5('0x16')]['attributes']||null:null,'include':_0x45f809[_0xdaf5('0x16')]?_0x45f809[_0xdaf5('0x16')]['include']?_['map'](_0x45f809[_0xdaf5('0x16')]['include'],function(_0x27495e){return{'model':db[_0x27495e[_0xdaf5('0x1d')]],'as':_0x27495e['as'],'attributes':_0x27495e[_0xdaf5('0x19')],'include':_0x27495e[_0xdaf5('0x1b')]?_[_0xdaf5('0x1c')](_0x27495e[_0xdaf5('0x1b')],function(_0x4890da){return{'model':db[_0x4890da[_0xdaf5('0x1d')]],'as':_0x4890da['as'],'attributes':_0x4890da['attributes'],'include':_0x4890da[_0xdaf5('0x1b')]?_[_0xdaf5('0x1c')](_0x4890da['include'],function(_0x583b03){return{'model':db[_0x583b03[_0xdaf5('0x1d')]],'as':_0x583b03['as'],'attributes':_0x583b03[_0xdaf5('0x19')]};}):[]};}):[]};}):[]:[]})[_0xdaf5('0xa')](function(_0x35c746){logger['info'](_0xdaf5('0x20'),_0x45f809);logger[_0xdaf5('0x1e')](_0xdaf5('0x20'),_0x45f809,JSON[_0xdaf5('0xd')](_0x35c746));_0x15f7ab(_0x35c746);})[_0xdaf5('0x12')](function(_0xe19230){logger[_0xdaf5('0xe')](_0xdaf5('0x20'),_0xe19230[_0xdaf5('0x11')],_0x45f809);_0xb3be51(_0x77321['error'](0x1f4,_0xe19230['message']));});});};
\ No newline at end of file
+var _0x26ed=['include','map','model','ShowFreshdeskAccount','find','debug','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit'];(function(_0x5eb4c1,_0x13834f){var _0x206e6e=function(_0x1b0806){while(--_0x1b0806){_0x5eb4c1['push'](_0x5eb4c1['shift']());}};_0x206e6e(++_0x13834f);}(_0x26ed,0x1f0));var _0xd26e=function(_0x47adb8,_0x591ccc){_0x47adb8=_0x47adb8-0x0;var _0x4689a8=_0x26ed[_0x47adb8];return _0x4689a8;};'use strict';var _=require(_0xd26e('0x0'));var util=require('util');var moment=require(_0xd26e('0x1'));var BPromise=require(_0xd26e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd26e('0x3'));var db=require(_0xd26e('0x4'))['db'];var utils=require(_0xd26e('0x5'));var logger=require(_0xd26e('0x6'))(_0xd26e('0x7'));var config=require(_0xd26e('0x8'));var jayson=require(_0xd26e('0x9'));var client=jayson[_0xd26e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x8a8e71,_0x366e1f,_0x2b12ae){return new BPromise(function(_0x2bca8d,_0x291a74){return client['request'](_0x8a8e71,_0x2b12ae)[_0xd26e('0xb')](function(_0x3383b3){logger[_0xd26e('0xc')](_0xd26e('0xd'),_0x366e1f,_0xd26e('0xe'));logger['debug'](_0xd26e('0xf'),_0x366e1f,'request\x20sent',JSON[_0xd26e('0x10')](_0x3383b3));if(_0x3383b3[_0xd26e('0x11')]){if(_0x3383b3[_0xd26e('0x11')]['code']===0x1f4){logger[_0xd26e('0x11')](_0xd26e('0xd'),_0x366e1f,_0x3383b3[_0xd26e('0x11')][_0xd26e('0x12')]);return _0x291a74(_0x3383b3[_0xd26e('0x11')][_0xd26e('0x12')]);}logger[_0xd26e('0x11')](_0xd26e('0xd'),_0x366e1f,_0x3383b3[_0xd26e('0x11')][_0xd26e('0x12')]);return _0x2bca8d(_0x3383b3[_0xd26e('0x11')][_0xd26e('0x12')]);}else{logger[_0xd26e('0xc')](_0xd26e('0xd'),_0x366e1f,'request\x20sent');_0x2bca8d(_0x3383b3[_0xd26e('0x13')][_0xd26e('0x12')]);}})[_0xd26e('0x14')](function(_0x29737c){logger[_0xd26e('0x11')](_0xd26e('0xd'),_0x366e1f,_0x29737c);_0x291a74(_0x29737c);});});}exports[_0xd26e('0x15')]=function(_0x38609e){var _0x332442=this;return new Promise(function(_0x148b3f,_0x382979){return db[_0xd26e('0x16')][_0xd26e('0x17')]({'raw':_0x38609e[_0xd26e('0x18')]?_0x38609e[_0xd26e('0x18')][_0xd26e('0x19')]===undefined?!![]:![]:!![],'where':_0x38609e[_0xd26e('0x18')]?_0x38609e[_0xd26e('0x18')][_0xd26e('0x1a')]||null:null,'attributes':_0x38609e[_0xd26e('0x18')]?_0x38609e[_0xd26e('0x18')][_0xd26e('0x1b')]||null:null,'limit':_0x38609e[_0xd26e('0x18')]?_0x38609e[_0xd26e('0x18')][_0xd26e('0x1c')]||null:null,'include':_0x38609e[_0xd26e('0x18')]?_0x38609e[_0xd26e('0x18')][_0xd26e('0x1d')]?_[_0xd26e('0x1e')](_0x38609e['options'][_0xd26e('0x1d')],function(_0x17e197){return{'model':db[_0x17e197['model']],'as':_0x17e197['as'],'attributes':_0x17e197['attributes'],'include':_0x17e197[_0xd26e('0x1d')]?_['map'](_0x17e197[_0xd26e('0x1d')],function(_0x53e751){return{'model':db[_0x53e751[_0xd26e('0x1f')]],'as':_0x53e751['as'],'attributes':_0x53e751[_0xd26e('0x1b')],'include':_0x53e751[_0xd26e('0x1d')]?_[_0xd26e('0x1e')](_0x53e751[_0xd26e('0x1d')],function(_0x38f208){return{'model':db[_0x38f208[_0xd26e('0x1f')]],'as':_0x38f208['as'],'attributes':_0x38f208[_0xd26e('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xd26e('0xb')](function(_0x59f34f){logger[_0xd26e('0xc')](_0xd26e('0x15'),_0x38609e);logger['debug'](_0xd26e('0x15'),_0x38609e,JSON[_0xd26e('0x10')](_0x59f34f));_0x148b3f(_0x59f34f);})['catch'](function(_0x304356){logger['error'](_0xd26e('0x15'),_0x304356[_0xd26e('0x12')],_0x38609e);_0x382979(_0x332442[_0xd26e('0x11')](0x1f4,_0x304356[_0xd26e('0x12')]));});});};exports[_0xd26e('0x20')]=function(_0x5386e8){var _0x13d8db=this;return new Promise(function(_0x387a2d,_0x171c6d){return db['FreshdeskAccount'][_0xd26e('0x21')]({'raw':_0x5386e8[_0xd26e('0x18')]?_0x5386e8['options'][_0xd26e('0x19')]===undefined?!![]:![]:!![],'where':_0x5386e8['options']?_0x5386e8[_0xd26e('0x18')][_0xd26e('0x1a')]||null:null,'attributes':_0x5386e8[_0xd26e('0x18')]?_0x5386e8[_0xd26e('0x18')][_0xd26e('0x1b')]||null:null,'include':_0x5386e8[_0xd26e('0x18')]?_0x5386e8[_0xd26e('0x18')][_0xd26e('0x1d')]?_['map'](_0x5386e8[_0xd26e('0x18')][_0xd26e('0x1d')],function(_0x31c687){return{'model':db[_0x31c687[_0xd26e('0x1f')]],'as':_0x31c687['as'],'attributes':_0x31c687[_0xd26e('0x1b')],'include':_0x31c687[_0xd26e('0x1d')]?_['map'](_0x31c687['include'],function(_0x4a730b){return{'model':db[_0x4a730b[_0xd26e('0x1f')]],'as':_0x4a730b['as'],'attributes':_0x4a730b[_0xd26e('0x1b')],'include':_0x4a730b[_0xd26e('0x1d')]?_[_0xd26e('0x1e')](_0x4a730b['include'],function(_0x11c777){return{'model':db[_0x11c777[_0xd26e('0x1f')]],'as':_0x11c777['as'],'attributes':_0x11c777['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x152748){logger[_0xd26e('0xc')](_0xd26e('0x20'),_0x5386e8);logger[_0xd26e('0x22')](_0xd26e('0x20'),_0x5386e8,JSON['stringify'](_0x152748));_0x387a2d(_0x152748);})[_0xd26e('0x14')](function(_0xff832c){logger['error']('ShowFreshdeskAccount',_0xff832c['message'],_0x5386e8);_0x171c6d(_0x13d8db[_0xd26e('0x11')](0x1f4,_0xff832c['message']));});});};
\ No newline at end of file
index 7fbb2ba..f5eacef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08a1=['../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','/:id/tags','getTags','post','create','setTags','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5c14f6,_0x2979d8){var _0x4949b3=function(_0xcc4206){while(--_0xcc4206){_0x5c14f6['push'](_0x5c14f6['shift']());}};_0x4949b3(++_0x2979d8);}(_0x08a1,0x17d));var _0x108a=function(_0x4f62c9,_0x5e5b63){_0x4f62c9=_0x4f62c9-0x0;var _0x4dca96=_0x08a1[_0x4f62c9];return _0x4dca96;};'use strict';var multer=require(_0x108a('0x0'));var util=require(_0x108a('0x1'));var path=require(_0x108a('0x2'));var timeout=require(_0x108a('0x3'));var express=require(_0x108a('0x4'));var router=express[_0x108a('0x5')]();var fs_extra=require(_0x108a('0x6'));var auth=require(_0x108a('0x7'));var interaction=require(_0x108a('0x8'));var config=require(_0x108a('0x9'));var controller=require(_0x108a('0xa'));router[_0x108a('0xb')]('/',auth[_0x108a('0xc')](),controller['index']);router['get'](_0x108a('0xd'),auth[_0x108a('0xc')](),controller[_0x108a('0xe')]);router[_0x108a('0xb')](_0x108a('0xf'),auth[_0x108a('0xc')](),controller['getFields']);router[_0x108a('0xb')](_0x108a('0x10'),auth[_0x108a('0xc')](),controller['getSubjects']);router[_0x108a('0xb')]('/:id/descriptions',auth[_0x108a('0xc')](),controller['getDescriptions']);router[_0x108a('0xb')](_0x108a('0x11'),auth['isAuthenticated'](),controller[_0x108a('0x12')]);router[_0x108a('0x13')]('/',auth[_0x108a('0xc')](),controller[_0x108a('0x14')]);router['post']('/:id/tags',auth[_0x108a('0xc')](),controller[_0x108a('0x15')]);router['put'](_0x108a('0xd'),auth[_0x108a('0xc')](),controller[_0x108a('0x16')]);router[_0x108a('0x17')](_0x108a('0xd'),auth['isAuthenticated'](),controller[_0x108a('0x18')]);module[_0x108a('0x19')]=router;
\ No newline at end of file
+var _0x7a9e=['/:id/tags','post','put','/:id','update','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','index','isAuthenticated','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a9e,0x1a8));var _0xe7a9=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x7a9e[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0xe7a9('0x0'));var util=require('util');var path=require(_0xe7a9('0x1'));var timeout=require(_0xe7a9('0x2'));var express=require(_0xe7a9('0x3'));var router=express[_0xe7a9('0x4')]();var fs_extra=require(_0xe7a9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe7a9('0x6'));var config=require(_0xe7a9('0x7'));var controller=require(_0xe7a9('0x8'));router[_0xe7a9('0x9')]('/',auth['isAuthenticated'](),controller[_0xe7a9('0xa')]);router[_0xe7a9('0x9')]('/:id',auth[_0xe7a9('0xb')](),controller['show']);router[_0xe7a9('0x9')]('/:id/fields',auth[_0xe7a9('0xb')](),controller['getFields']);router[_0xe7a9('0x9')](_0xe7a9('0xc'),auth[_0xe7a9('0xb')](),controller[_0xe7a9('0xd')]);router[_0xe7a9('0x9')](_0xe7a9('0xe'),auth[_0xe7a9('0xb')](),controller[_0xe7a9('0xf')]);router[_0xe7a9('0x9')](_0xe7a9('0x10'),auth[_0xe7a9('0xb')](),controller['getTags']);router[_0xe7a9('0x11')]('/',auth[_0xe7a9('0xb')](),controller['create']);router[_0xe7a9('0x11')](_0xe7a9('0x10'),auth[_0xe7a9('0xb')](),controller['setTags']);router[_0xe7a9('0x12')](_0xe7a9('0x13'),auth['isAuthenticated'](),controller[_0xe7a9('0x14')]);router['delete'](_0xe7a9('0x13'),auth['isAuthenticated'](),controller['destroy']);module[_0xe7a9('0x15')]=router;
\ No newline at end of file
index 3f07aba..b31fff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d79=['exports'];(function(_0x1ab0e6,_0x17ba8d){var _0x248815=function(_0x5d2b40){while(--_0x5d2b40){_0x1ab0e6['push'](_0x1ab0e6['shift']());}};_0x248815(++_0x17ba8d);}(_0x2d79,0x69));var _0x92d7=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x2d79[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require('sequelize');module[_0x92d7('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7d84=['sequelize','STRING'];(function(_0x1d326a,_0x89b53){var _0x5804d5=function(_0x19376c){while(--_0x19376c){_0x1d326a['push'](_0x1d326a['shift']());}};_0x5804d5(++_0x89b53);}(_0x7d84,0x1f4));var _0x47d8=function(_0x350aeb,_0x3d265a){_0x350aeb=_0x350aeb-0x0;var _0x3c5273=_0x7d84[_0x350aeb];return _0x3c5273;};'use strict';var Sequelize=require(_0x47d8('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x47d8('0x1')]}};
\ No newline at end of file
index 7c12a73..3c31655 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4bf=['options','FreshdeskConfiguration','include','findAll','rows','show','keys','rawAttributes','find','create','body','catch','params','getFields','findOne','FreshdeskField','getSubjects','getDescriptions','getTags','setTags','ids','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','fieldName','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type'];(function(_0x2fff82,_0x19e73d){var _0x10259d=function(_0x27e61b){while(--_0x27e61b){_0x2fff82['push'](_0x2fff82['shift']());}};_0x10259d(++_0x19e73d);}(_0xd4bf,0x161));var _0xfd4b=function(_0x5a036c,_0x561b3f){_0x5a036c=_0x5a036c-0x0;var _0x24195f=_0xd4bf[_0x5a036c];return _0x24195f;};'use strict';var emlformat=require(_0xfd4b('0x0'));var rimraf=require(_0xfd4b('0x1'));var zipdir=require(_0xfd4b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfd4b('0x3'));var moment=require('moment');var BPromise=require(_0xfd4b('0x4'));var Mustache=require('mustache');var util=require(_0xfd4b('0x5'));var path=require(_0xfd4b('0x6'));var sox=require(_0xfd4b('0x7'));var csv=require(_0xfd4b('0x8'));var ejs=require(_0xfd4b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfd4b('0xa'));var squel=require(_0xfd4b('0xb'));var crypto=require(_0xfd4b('0xc'));var jsforce=require(_0xfd4b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfd4b('0x8'));var querystring=require(_0xfd4b('0xe'));var Papa=require(_0xfd4b('0xf'));var Redis=require(_0xfd4b('0x10'));var authService=require(_0xfd4b('0x11'));var qs=require(_0xfd4b('0x12'));var as=require(_0xfd4b('0x13'));var hardwareService=require(_0xfd4b('0x14'));var logger=require(_0xfd4b('0x15'))('api');var utils=require(_0xfd4b('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xfd4b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33b830,_0x4c916b){_0x4c916b=_0x4c916b||0xcc;return function(_0x4c2e14){if(_0x4c2e14){return _0x33b830[_0xfd4b('0x18')](_0x4c916b);}return _0x33b830[_0xfd4b('0x19')](_0x4c916b)[_0xfd4b('0x1a')]();};}function respondWithResult(_0x46cc67,_0x4723df){_0x4723df=_0x4723df||0xc8;return function(_0x30ebfe){if(_0x30ebfe){return _0x46cc67[_0xfd4b('0x19')](_0x4723df)[_0xfd4b('0x1b')](_0x30ebfe);}};}function respondWithFilteredResult(_0xfb450c,_0x219208){return function(_0x4de078){if(_0x4de078){var _0x458dfc=typeof _0x219208[_0xfd4b('0x1c')]===_0xfd4b('0x1d')&&typeof _0x219208['limit']==='undefined';var _0x399ebd=_0x4de078['count'];var _0x135f86=_0x458dfc?0x0:_0x219208[_0xfd4b('0x1c')];var _0x451112=_0x458dfc?_0x4de078[_0xfd4b('0x1e')]:_0x219208[_0xfd4b('0x1c')]+_0x219208[_0xfd4b('0x1f')];var _0x45b452;if(_0x451112>=_0x399ebd){_0x451112=_0x399ebd;_0x45b452=0xc8;}else{_0x45b452=0xce;}_0xfb450c[_0xfd4b('0x19')](_0x45b452);return _0xfb450c['set'](_0xfd4b('0x20'),_0x135f86+'-'+_0x451112+'/'+_0x399ebd)['json'](_0x4de078);}return null;};}function patchUpdates(_0x52cebc){return function(_0x2accd6){try{jsonpatch[_0xfd4b('0x21')](_0x2accd6,_0x52cebc,!![]);}catch(_0x79e8dc){return BPromise[_0xfd4b('0x22')](_0x79e8dc);}return _0x2accd6[_0xfd4b('0x23')]();};}function saveUpdates(_0xa5f352,_0x40d12f){return function(_0x12269e){if(_0x12269e){return _0x12269e[_0xfd4b('0x24')](_0xa5f352)[_0xfd4b('0x25')](function(_0x311bd7){return _0x311bd7;});}return null;};}function removeEntity(_0x45e499,_0x3b3ddc){return function(_0x41b7e8){if(_0x41b7e8){return _0x41b7e8[_0xfd4b('0x26')]()[_0xfd4b('0x25')](function(){_0x45e499[_0xfd4b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2adbcb,_0x185a67){return function(_0x37063e){if(!_0x37063e){_0x2adbcb[_0xfd4b('0x18')](0x194);}return _0x37063e;};}function handleError(_0x377f5b,_0x1f6d05){_0x1f6d05=_0x1f6d05||0x1f4;return function(_0x2c95cd){logger[_0xfd4b('0x27')](_0x2c95cd[_0xfd4b('0x28')]);if(_0x2c95cd['name']){delete _0x2c95cd[_0xfd4b('0x29')];}_0x377f5b[_0xfd4b('0x19')](_0x1f6d05)[_0xfd4b('0x2a')](_0x2c95cd);};}exports['index']=function(_0x4891ab,_0x4e8221){var _0x239317={},_0x2190a3={},_0x1854b2={'count':0x0,'rows':[]};var _0x200f0b=_[_0xfd4b('0x2b')](db['FreshdeskConfiguration']['rawAttributes'],function(_0xf5f0c){return{'name':_0xf5f0c[_0xfd4b('0x2c')],'type':_0xf5f0c['type'][_0xfd4b('0x2d')]};});_0x2190a3['model']=_[_0xfd4b('0x2b')](_0x200f0b,_0xfd4b('0x29'));_0x2190a3[_0xfd4b('0x2e')]=_['keys'](_0x4891ab[_0xfd4b('0x2e')]);_0x2190a3[_0xfd4b('0x2f')]=_[_0xfd4b('0x30')](_0x2190a3['model'],_0x2190a3[_0xfd4b('0x2e')]);_0x239317['attributes']=_['intersection'](_0x2190a3[_0xfd4b('0x31')],qs[_0xfd4b('0x32')](_0x4891ab[_0xfd4b('0x2e')][_0xfd4b('0x32')]));_0x239317[_0xfd4b('0x33')]=_0x239317[_0xfd4b('0x33')][_0xfd4b('0x34')]?_0x239317['attributes']:_0x2190a3[_0xfd4b('0x31')];if(!_0x4891ab[_0xfd4b('0x2e')][_0xfd4b('0x35')](_0xfd4b('0x36'))){_0x239317['limit']=qs[_0xfd4b('0x1f')](_0x4891ab[_0xfd4b('0x2e')]['limit']);_0x239317[_0xfd4b('0x1c')]=qs[_0xfd4b('0x1c')](_0x4891ab['query'][_0xfd4b('0x1c')]);}_0x239317[_0xfd4b('0x37')]=qs['sort'](_0x4891ab[_0xfd4b('0x2e')][_0xfd4b('0x38')]);_0x239317['where']=qs[_0xfd4b('0x2f')](_[_0xfd4b('0x39')](_0x4891ab[_0xfd4b('0x2e')],_0x2190a3[_0xfd4b('0x2f')]),_0x200f0b);if(_0x4891ab['query'][_0xfd4b('0x3a')]){_0x239317[_0xfd4b('0x3b')]=_[_0xfd4b('0x3c')](_0x239317['where'],{'$or':_[_0xfd4b('0x2b')](_0x200f0b,function(_0x13678c){if(_0x13678c[_0xfd4b('0x3d')]!=='VIRTUAL'){var _0x430900={};_0x430900[_0x13678c[_0xfd4b('0x29')]]={'$like':'%'+_0x4891ab['query'][_0xfd4b('0x3a')]+'%'};return _0x430900;}})});}_0x239317=_[_0xfd4b('0x3c')]({},_0x239317,_0x4891ab[_0xfd4b('0x3e')]);var _0x2a28a0={'where':_0x239317[_0xfd4b('0x3b')]};return db[_0xfd4b('0x3f')]['count'](_0x2a28a0)[_0xfd4b('0x25')](function(_0x384158){_0x1854b2[_0xfd4b('0x1e')]=_0x384158;if(_0x4891ab[_0xfd4b('0x2e')]['includeAll']){_0x239317[_0xfd4b('0x40')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0xfd4b('0x41')](_0x239317);})[_0xfd4b('0x25')](function(_0x56f834){_0x1854b2[_0xfd4b('0x42')]=_0x56f834;return _0x1854b2;})[_0xfd4b('0x25')](respondWithFilteredResult(_0x4e8221,_0x239317))['catch'](handleError(_0x4e8221,null));};exports[_0xfd4b('0x43')]=function(_0x5f1512,_0x1d706f){var _0x1c4c8c={'raw':![],'where':{'id':_0x5f1512['params']['id']}},_0x38bd54={};_0x38bd54[_0xfd4b('0x31')]=_[_0xfd4b('0x44')](db['FreshdeskConfiguration'][_0xfd4b('0x45')]);_0x38bd54[_0xfd4b('0x2e')]=_[_0xfd4b('0x44')](_0x5f1512[_0xfd4b('0x2e')]);_0x38bd54[_0xfd4b('0x2f')]=_[_0xfd4b('0x30')](_0x38bd54[_0xfd4b('0x31')],_0x38bd54[_0xfd4b('0x2e')]);_0x1c4c8c['attributes']=_[_0xfd4b('0x30')](_0x38bd54[_0xfd4b('0x31')],qs[_0xfd4b('0x32')](_0x5f1512['query'][_0xfd4b('0x32')]));_0x1c4c8c[_0xfd4b('0x33')]=_0x1c4c8c[_0xfd4b('0x33')][_0xfd4b('0x34')]?_0x1c4c8c[_0xfd4b('0x33')]:_0x38bd54['model'];if(_0x5f1512[_0xfd4b('0x2e')]['includeAll']){_0x1c4c8c['include']=[{'all':!![]}];}_0x1c4c8c=_[_0xfd4b('0x3c')]({},_0x1c4c8c,_0x5f1512[_0xfd4b('0x3e')]);return db[_0xfd4b('0x3f')][_0xfd4b('0x46')](_0x1c4c8c)[_0xfd4b('0x25')](handleEntityNotFound(_0x1d706f,null))[_0xfd4b('0x25')](respondWithResult(_0x1d706f,null))['catch'](handleError(_0x1d706f,null));};exports[_0xfd4b('0x47')]=function(_0x110460,_0x4ec53d){return db[_0xfd4b('0x3f')]['create'](_0x110460[_0xfd4b('0x48')],{})[_0xfd4b('0x25')](respondWithResult(_0x4ec53d,0xc9))[_0xfd4b('0x49')](handleError(_0x4ec53d,null));};exports[_0xfd4b('0x24')]=function(_0x1b11a6,_0x4e00c5){if(_0x1b11a6[_0xfd4b('0x48')]['id']){delete _0x1b11a6[_0xfd4b('0x48')]['id'];}return db[_0xfd4b('0x3f')][_0xfd4b('0x46')]({'where':{'id':_0x1b11a6[_0xfd4b('0x4a')]['id']}})[_0xfd4b('0x25')](handleEntityNotFound(_0x4e00c5,null))[_0xfd4b('0x25')](saveUpdates(_0x1b11a6[_0xfd4b('0x48')],null))[_0xfd4b('0x25')](respondWithResult(_0x4e00c5,null))[_0xfd4b('0x49')](handleError(_0x4e00c5,null));};exports[_0xfd4b('0x26')]=function(_0x5a71bf,_0x326bac){return db[_0xfd4b('0x3f')]['find']({'where':{'id':_0x5a71bf[_0xfd4b('0x4a')]['id']}})[_0xfd4b('0x25')](handleEntityNotFound(_0x326bac,null))['then'](removeEntity(_0x326bac,null))[_0xfd4b('0x49')](handleError(_0x326bac,null));};exports[_0xfd4b('0x4b')]=function(_0x3d9668,_0x2c598f,_0x39650f){var _0x16c737={};var _0x1b78eb={};var _0x2d3774;var _0x37fa3b;return db[_0xfd4b('0x3f')][_0xfd4b('0x4c')]({'where':{'id':_0x3d9668[_0xfd4b('0x4a')]['id']}})[_0xfd4b('0x25')](handleEntityNotFound(_0x2c598f,null))[_0xfd4b('0x25')](function(_0x3db799){if(_0x3db799){_0x2d3774=_0x3db799;_0x1b78eb[_0xfd4b('0x31')]=_[_0xfd4b('0x44')](db[_0xfd4b('0x4d')][_0xfd4b('0x45')]);_0x1b78eb[_0xfd4b('0x2e')]=_['keys'](_0x3d9668[_0xfd4b('0x2e')]);_0x1b78eb[_0xfd4b('0x2f')]=_[_0xfd4b('0x30')](_0x1b78eb[_0xfd4b('0x31')],_0x1b78eb[_0xfd4b('0x2e')]);_0x16c737[_0xfd4b('0x33')]=_[_0xfd4b('0x30')](_0x1b78eb['model'],qs[_0xfd4b('0x32')](_0x3d9668[_0xfd4b('0x2e')][_0xfd4b('0x32')]));_0x16c737['attributes']=_0x16c737[_0xfd4b('0x33')]['length']?_0x16c737[_0xfd4b('0x33')]:_0x1b78eb['model'];_0x16c737[_0xfd4b('0x37')]=qs[_0xfd4b('0x38')](_0x3d9668['query']['sort']);_0x16c737[_0xfd4b('0x3b')]=qs[_0xfd4b('0x2f')](_[_0xfd4b('0x39')](_0x3d9668[_0xfd4b('0x2e')],_0x1b78eb[_0xfd4b('0x2f')]));if(_0x3d9668[_0xfd4b('0x2e')][_0xfd4b('0x3a')]){_0x16c737[_0xfd4b('0x3b')]=_[_0xfd4b('0x3c')](_0x16c737[_0xfd4b('0x3b')],{'$or':_[_0xfd4b('0x2b')](_0x16c737[_0xfd4b('0x33')],function(_0x5a44c6){var _0x1c9e3f={};_0x1c9e3f[_0x5a44c6]={'$like':'%'+_0x3d9668[_0xfd4b('0x2e')][_0xfd4b('0x3a')]+'%'};return _0x1c9e3f;})});}_0x16c737=_[_0xfd4b('0x3c')]({},_0x16c737,_0x3d9668[_0xfd4b('0x3e')]);return _0x2d3774[_0xfd4b('0x4b')](_0x16c737);}})[_0xfd4b('0x25')](function(_0x18afd2){if(_0x18afd2){_0x37fa3b=_0x18afd2[_0xfd4b('0x34')];if(!_0x3d9668['query'][_0xfd4b('0x35')]('nolimit')){_0x16c737['limit']=qs[_0xfd4b('0x1f')](_0x3d9668[_0xfd4b('0x2e')][_0xfd4b('0x1f')]);_0x16c737[_0xfd4b('0x1c')]=qs['offset'](_0x3d9668[_0xfd4b('0x2e')]['offset']);}return _0x2d3774[_0xfd4b('0x4b')](_0x16c737);}})[_0xfd4b('0x25')](function(_0x5bbe11){if(_0x5bbe11){return _0x5bbe11?{'count':_0x37fa3b,'rows':_0x5bbe11}:null;}})[_0xfd4b('0x25')](respondWithResult(_0x2c598f,null))[_0xfd4b('0x49')](handleError(_0x2c598f,null));};exports['getSubjects']=function(_0x30b55b,_0x4d8177,_0x1cc2bd){var _0x2e0a5a={};var _0x1c3054={};var _0x10092d;var _0x5e50c4;return db[_0xfd4b('0x3f')]['findOne']({'where':{'id':_0x30b55b[_0xfd4b('0x4a')]['id']}})[_0xfd4b('0x25')](handleEntityNotFound(_0x4d8177,null))['then'](function(_0x18c0a2){if(_0x18c0a2){_0x10092d=_0x18c0a2;_0x1c3054[_0xfd4b('0x31')]=_['keys'](db[_0xfd4b('0x4d')][_0xfd4b('0x45')]);_0x1c3054[_0xfd4b('0x2e')]=_[_0xfd4b('0x44')](_0x30b55b['query']);_0x1c3054['filters']=_[_0xfd4b('0x30')](_0x1c3054['model'],_0x1c3054[_0xfd4b('0x2e')]);_0x2e0a5a[_0xfd4b('0x33')]=_[_0xfd4b('0x30')](_0x1c3054['model'],qs[_0xfd4b('0x32')](_0x30b55b[_0xfd4b('0x2e')][_0xfd4b('0x32')]));_0x2e0a5a[_0xfd4b('0x33')]=_0x2e0a5a['attributes'][_0xfd4b('0x34')]?_0x2e0a5a[_0xfd4b('0x33')]:_0x1c3054['model'];_0x2e0a5a[_0xfd4b('0x37')]=qs[_0xfd4b('0x38')](_0x30b55b[_0xfd4b('0x2e')][_0xfd4b('0x38')]);_0x2e0a5a[_0xfd4b('0x3b')]=qs[_0xfd4b('0x2f')](_[_0xfd4b('0x39')](_0x30b55b[_0xfd4b('0x2e')],_0x1c3054[_0xfd4b('0x2f')]));if(_0x30b55b['query'][_0xfd4b('0x3a')]){_0x2e0a5a[_0xfd4b('0x3b')]=_['merge'](_0x2e0a5a[_0xfd4b('0x3b')],{'$or':_[_0xfd4b('0x2b')](_0x2e0a5a[_0xfd4b('0x33')],function(_0x1a582b){var _0x181f72={};_0x181f72[_0x1a582b]={'$like':'%'+_0x30b55b[_0xfd4b('0x2e')][_0xfd4b('0x3a')]+'%'};return _0x181f72;})});}_0x2e0a5a=_[_0xfd4b('0x3c')]({},_0x2e0a5a,_0x30b55b[_0xfd4b('0x3e')]);return _0x10092d[_0xfd4b('0x4e')](_0x2e0a5a);}})[_0xfd4b('0x25')](function(_0x3a38f5){if(_0x3a38f5){_0x5e50c4=_0x3a38f5['length'];if(!_0x30b55b[_0xfd4b('0x2e')][_0xfd4b('0x35')](_0xfd4b('0x36'))){_0x2e0a5a[_0xfd4b('0x1f')]=qs[_0xfd4b('0x1f')](_0x30b55b['query']['limit']);_0x2e0a5a[_0xfd4b('0x1c')]=qs['offset'](_0x30b55b[_0xfd4b('0x2e')]['offset']);}return _0x10092d['getSubjects'](_0x2e0a5a);}})[_0xfd4b('0x25')](function(_0x21017a){if(_0x21017a){return _0x21017a?{'count':_0x5e50c4,'rows':_0x21017a}:null;}})[_0xfd4b('0x25')](respondWithResult(_0x4d8177,null))[_0xfd4b('0x49')](handleError(_0x4d8177,null));};exports['getDescriptions']=function(_0x5f1d0c,_0xddabec,_0x13d688){var _0x5f23d6={};var _0x1000b2={};var _0x34f2cf;var _0x150df7;return db['FreshdeskConfiguration'][_0xfd4b('0x4c')]({'where':{'id':_0x5f1d0c[_0xfd4b('0x4a')]['id']}})[_0xfd4b('0x25')](handleEntityNotFound(_0xddabec,null))[_0xfd4b('0x25')](function(_0x48e079){if(_0x48e079){_0x34f2cf=_0x48e079;_0x1000b2[_0xfd4b('0x31')]=_[_0xfd4b('0x44')](db['FreshdeskField']['rawAttributes']);_0x1000b2[_0xfd4b('0x2e')]=_[_0xfd4b('0x44')](_0x5f1d0c[_0xfd4b('0x2e')]);_0x1000b2['filters']=_[_0xfd4b('0x30')](_0x1000b2['model'],_0x1000b2[_0xfd4b('0x2e')]);_0x5f23d6[_0xfd4b('0x33')]=_[_0xfd4b('0x30')](_0x1000b2[_0xfd4b('0x31')],qs[_0xfd4b('0x32')](_0x5f1d0c['query']['fields']));_0x5f23d6[_0xfd4b('0x33')]=_0x5f23d6[_0xfd4b('0x33')][_0xfd4b('0x34')]?_0x5f23d6['attributes']:_0x1000b2['model'];_0x5f23d6[_0xfd4b('0x37')]=qs[_0xfd4b('0x38')](_0x5f1d0c[_0xfd4b('0x2e')]['sort']);_0x5f23d6[_0xfd4b('0x3b')]=qs[_0xfd4b('0x2f')](_[_0xfd4b('0x39')](_0x5f1d0c['query'],_0x1000b2['filters']));if(_0x5f1d0c[_0xfd4b('0x2e')][_0xfd4b('0x3a')]){_0x5f23d6[_0xfd4b('0x3b')]=_[_0xfd4b('0x3c')](_0x5f23d6[_0xfd4b('0x3b')],{'$or':_['map'](_0x5f23d6['attributes'],function(_0x5a70b3){var _0x5bd453={};_0x5bd453[_0x5a70b3]={'$like':'%'+_0x5f1d0c['query']['filter']+'%'};return _0x5bd453;})});}_0x5f23d6=_[_0xfd4b('0x3c')]({},_0x5f23d6,_0x5f1d0c['options']);return _0x34f2cf[_0xfd4b('0x4f')](_0x5f23d6);}})[_0xfd4b('0x25')](function(_0x2b2403){if(_0x2b2403){_0x150df7=_0x2b2403[_0xfd4b('0x34')];if(!_0x5f1d0c['query'][_0xfd4b('0x35')](_0xfd4b('0x36'))){_0x5f23d6[_0xfd4b('0x1f')]=qs[_0xfd4b('0x1f')](_0x5f1d0c['query'][_0xfd4b('0x1f')]);_0x5f23d6[_0xfd4b('0x1c')]=qs[_0xfd4b('0x1c')](_0x5f1d0c['query'][_0xfd4b('0x1c')]);}return _0x34f2cf[_0xfd4b('0x4f')](_0x5f23d6);}})[_0xfd4b('0x25')](function(_0x98e120){if(_0x98e120){return _0x98e120?{'count':_0x150df7,'rows':_0x98e120}:null;}})[_0xfd4b('0x25')](respondWithResult(_0xddabec,null))['catch'](handleError(_0xddabec,null));};exports[_0xfd4b('0x50')]=function(_0x3b6429,_0x5b30fe,_0x465221){var _0x541a11={};var _0x23a49e={};var _0x4b270b;var _0x3fe002;return db[_0xfd4b('0x3f')]['findOne']({'where':{'id':_0x3b6429['params']['id']}})[_0xfd4b('0x25')](handleEntityNotFound(_0x5b30fe,null))['then'](function(_0x46b09c){if(_0x46b09c){_0x4b270b=_0x46b09c;_0x23a49e['model']=_[_0xfd4b('0x44')](db['Tag'][_0xfd4b('0x45')]);_0x23a49e[_0xfd4b('0x2e')]=_[_0xfd4b('0x44')](_0x3b6429[_0xfd4b('0x2e')]);_0x23a49e[_0xfd4b('0x2f')]=_['intersection'](_0x23a49e[_0xfd4b('0x31')],_0x23a49e[_0xfd4b('0x2e')]);_0x541a11[_0xfd4b('0x33')]=_[_0xfd4b('0x30')](_0x23a49e[_0xfd4b('0x31')],qs[_0xfd4b('0x32')](_0x3b6429[_0xfd4b('0x2e')][_0xfd4b('0x32')]));_0x541a11[_0xfd4b('0x33')]=_0x541a11['attributes'][_0xfd4b('0x34')]?_0x541a11[_0xfd4b('0x33')]:_0x23a49e[_0xfd4b('0x31')];_0x541a11['order']=qs[_0xfd4b('0x38')](_0x3b6429[_0xfd4b('0x2e')][_0xfd4b('0x38')]);_0x541a11['where']=qs[_0xfd4b('0x2f')](_[_0xfd4b('0x39')](_0x3b6429[_0xfd4b('0x2e')],_0x23a49e[_0xfd4b('0x2f')]));if(_0x3b6429[_0xfd4b('0x2e')]['filter']){_0x541a11[_0xfd4b('0x3b')]=_['merge'](_0x541a11[_0xfd4b('0x3b')],{'$or':_['map'](_0x541a11[_0xfd4b('0x33')],function(_0x1effdf){var _0x2204b9={};_0x2204b9[_0x1effdf]={'$like':'%'+_0x3b6429[_0xfd4b('0x2e')][_0xfd4b('0x3a')]+'%'};return _0x2204b9;})});}_0x541a11=_[_0xfd4b('0x3c')]({},_0x541a11,_0x3b6429[_0xfd4b('0x3e')]);return _0x4b270b[_0xfd4b('0x50')](_0x541a11);}})[_0xfd4b('0x25')](function(_0x2e8fb1){if(_0x2e8fb1){_0x3fe002=_0x2e8fb1[_0xfd4b('0x34')];if(!_0x3b6429[_0xfd4b('0x2e')][_0xfd4b('0x35')](_0xfd4b('0x36'))){_0x541a11[_0xfd4b('0x1f')]=qs[_0xfd4b('0x1f')](_0x3b6429[_0xfd4b('0x2e')][_0xfd4b('0x1f')]);_0x541a11['offset']=qs[_0xfd4b('0x1c')](_0x3b6429[_0xfd4b('0x2e')][_0xfd4b('0x1c')]);}return _0x4b270b[_0xfd4b('0x50')](_0x541a11);}})[_0xfd4b('0x25')](function(_0x3ddadb){if(_0x3ddadb){return _0x3ddadb?{'count':_0x3fe002,'rows':_0x3ddadb}:null;}})[_0xfd4b('0x25')](respondWithResult(_0x5b30fe,null))['catch'](handleError(_0x5b30fe,null));};exports[_0xfd4b('0x51')]=function(_0x4694c7,_0x14e90b,_0x54d1c0){if(_0x4694c7[_0xfd4b('0x48')]['id']){delete _0x4694c7[_0xfd4b('0x48')]['id'];}return db[_0xfd4b('0x3f')][_0xfd4b('0x4c')]({'where':{'id':_0x4694c7[_0xfd4b('0x4a')]['id']}})[_0xfd4b('0x25')](handleEntityNotFound(_0x14e90b,null))[_0xfd4b('0x25')](function(_0x3ee4ce){if(_0x3ee4ce){return _0x3ee4ce[_0xfd4b('0x51')](_0x4694c7[_0xfd4b('0x48')][_0xfd4b('0x52')]||[]);}return null;})['then'](respondWithResult(_0x14e90b,null))[_0xfd4b('0x49')](handleError(_0x14e90b,null));};
\ No newline at end of file
+var _0x2ceb=['create','body','update','getFields','findOne','getSubjects','getDescriptions','FreshdeskField','Tag','getTags','setTags','ids','eml-format','zip-dir','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','FreshdeskConfiguration','includeAll','include','findAll','rows','params','rawAttributes','filters','find','catch'];(function(_0x207e20,_0x1852f0){var _0x12ad0e=function(_0x5c3a12){while(--_0x5c3a12){_0x207e20['push'](_0x207e20['shift']());}};_0x12ad0e(++_0x1852f0);}(_0x2ceb,0x150));var _0xb2ce=function(_0x25fa25,_0x26b171){_0x25fa25=_0x25fa25-0x0;var _0x1a9bbd=_0x2ceb[_0x25fa25];return _0x1a9bbd;};'use strict';var emlformat=require(_0xb2ce('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb2ce('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb2ce('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xb2ce('0x3'));var util=require(_0xb2ce('0x4'));var path=require('path');var sox=require(_0xb2ce('0x5'));var csv=require(_0xb2ce('0x6'));var ejs=require(_0xb2ce('0x7'));var fs=require('fs');var fs_extra=require(_0xb2ce('0x8'));var _=require(_0xb2ce('0x9'));var squel=require(_0xb2ce('0xa'));var crypto=require(_0xb2ce('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb2ce('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb2ce('0xd'));var qs=require(_0xb2ce('0xe'));var as=require(_0xb2ce('0xf'));var hardwareService=require(_0xb2ce('0x10'));var logger=require(_0xb2ce('0x11'))(_0xb2ce('0x12'));var utils=require('../../config/utils');var config=require(_0xb2ce('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x57b11c,_0x1629f9){_0x1629f9=_0x1629f9||0xcc;return function(_0x49124c){if(_0x49124c){return _0x57b11c[_0xb2ce('0x14')](_0x1629f9);}return _0x57b11c[_0xb2ce('0x15')](_0x1629f9)[_0xb2ce('0x16')]();};}function respondWithResult(_0x3626c8,_0x25827b){_0x25827b=_0x25827b||0xc8;return function(_0x2bcccb){if(_0x2bcccb){return _0x3626c8[_0xb2ce('0x15')](_0x25827b)[_0xb2ce('0x17')](_0x2bcccb);}};}function respondWithFilteredResult(_0x28325f,_0xff214e){return function(_0x803a85){if(_0x803a85){var _0x332039=typeof _0xff214e['offset']===_0xb2ce('0x18')&&typeof _0xff214e[_0xb2ce('0x19')]===_0xb2ce('0x18');var _0x182303=_0x803a85[_0xb2ce('0x1a')];var _0x167e85=_0x332039?0x0:_0xff214e['offset'];var _0x3b6b14=_0x332039?_0x803a85[_0xb2ce('0x1a')]:_0xff214e[_0xb2ce('0x1b')]+_0xff214e[_0xb2ce('0x19')];var _0x2e7532;if(_0x3b6b14>=_0x182303){_0x3b6b14=_0x182303;_0x2e7532=0xc8;}else{_0x2e7532=0xce;}_0x28325f['status'](_0x2e7532);return _0x28325f[_0xb2ce('0x1c')](_0xb2ce('0x1d'),_0x167e85+'-'+_0x3b6b14+'/'+_0x182303)['json'](_0x803a85);}return null;};}function patchUpdates(_0x36cea1){return function(_0x145226){try{jsonpatch[_0xb2ce('0x1e')](_0x145226,_0x36cea1,!![]);}catch(_0x53f707){return BPromise['reject'](_0x53f707);}return _0x145226[_0xb2ce('0x1f')]();};}function saveUpdates(_0xad930f,_0x4e930b){return function(_0x4eaa75){if(_0x4eaa75){return _0x4eaa75['update'](_0xad930f)[_0xb2ce('0x20')](function(_0x1d6156){return _0x1d6156;});}return null;};}function removeEntity(_0x4f7763,_0x41ffc6){return function(_0x1b6a87){if(_0x1b6a87){return _0x1b6a87[_0xb2ce('0x21')]()['then'](function(){_0x4f7763[_0xb2ce('0x15')](0xcc)[_0xb2ce('0x16')]();});}};}function handleEntityNotFound(_0x418ff4,_0xa381f3){return function(_0x8e0dc8){if(!_0x8e0dc8){_0x418ff4['sendStatus'](0x194);}return _0x8e0dc8;};}function handleError(_0x2d8d12,_0x3c1264){_0x3c1264=_0x3c1264||0x1f4;return function(_0x4d9d88){logger[_0xb2ce('0x22')](_0x4d9d88[_0xb2ce('0x23')]);if(_0x4d9d88[_0xb2ce('0x24')]){delete _0x4d9d88[_0xb2ce('0x24')];}_0x2d8d12[_0xb2ce('0x15')](_0x3c1264)[_0xb2ce('0x25')](_0x4d9d88);};}exports[_0xb2ce('0x26')]=function(_0x123648,_0x70e774){var _0x4bfbcd={},_0x461a92={},_0xb0c3ae={'count':0x0,'rows':[]};var _0x317b78=_[_0xb2ce('0x27')](db['FreshdeskConfiguration']['rawAttributes'],function(_0x2551f2){return{'name':_0x2551f2[_0xb2ce('0x28')],'type':_0x2551f2[_0xb2ce('0x29')][_0xb2ce('0x2a')]};});_0x461a92[_0xb2ce('0x2b')]=_[_0xb2ce('0x27')](_0x317b78,'name');_0x461a92[_0xb2ce('0x2c')]=_[_0xb2ce('0x2d')](_0x123648['query']);_0x461a92['filters']=_[_0xb2ce('0x2e')](_0x461a92[_0xb2ce('0x2b')],_0x461a92[_0xb2ce('0x2c')]);_0x4bfbcd['attributes']=_['intersection'](_0x461a92[_0xb2ce('0x2b')],qs[_0xb2ce('0x2f')](_0x123648[_0xb2ce('0x2c')]['fields']));_0x4bfbcd[_0xb2ce('0x30')]=_0x4bfbcd[_0xb2ce('0x30')][_0xb2ce('0x31')]?_0x4bfbcd[_0xb2ce('0x30')]:_0x461a92[_0xb2ce('0x2b')];if(!_0x123648[_0xb2ce('0x2c')][_0xb2ce('0x32')](_0xb2ce('0x33'))){_0x4bfbcd[_0xb2ce('0x19')]=qs[_0xb2ce('0x19')](_0x123648['query'][_0xb2ce('0x19')]);_0x4bfbcd[_0xb2ce('0x1b')]=qs[_0xb2ce('0x1b')](_0x123648[_0xb2ce('0x2c')][_0xb2ce('0x1b')]);}_0x4bfbcd[_0xb2ce('0x34')]=qs[_0xb2ce('0x35')](_0x123648[_0xb2ce('0x2c')][_0xb2ce('0x35')]);_0x4bfbcd[_0xb2ce('0x36')]=qs['filters'](_[_0xb2ce('0x37')](_0x123648[_0xb2ce('0x2c')],_0x461a92['filters']),_0x317b78);if(_0x123648['query'][_0xb2ce('0x38')]){_0x4bfbcd['where']=_[_0xb2ce('0x39')](_0x4bfbcd[_0xb2ce('0x36')],{'$or':_[_0xb2ce('0x27')](_0x317b78,function(_0x5b355d){if(_0x5b355d[_0xb2ce('0x29')]!=='VIRTUAL'){var _0x4ed3fb={};_0x4ed3fb[_0x5b355d[_0xb2ce('0x24')]]={'$like':'%'+_0x123648[_0xb2ce('0x2c')]['filter']+'%'};return _0x4ed3fb;}})});}_0x4bfbcd=_[_0xb2ce('0x39')]({},_0x4bfbcd,_0x123648[_0xb2ce('0x3a')]);var _0x12ff04={'where':_0x4bfbcd['where']};return db[_0xb2ce('0x3b')][_0xb2ce('0x1a')](_0x12ff04)[_0xb2ce('0x20')](function(_0x1bac9b){_0xb0c3ae['count']=_0x1bac9b;if(_0x123648['query'][_0xb2ce('0x3c')]){_0x4bfbcd[_0xb2ce('0x3d')]=[{'all':!![]}];}return db[_0xb2ce('0x3b')][_0xb2ce('0x3e')](_0x4bfbcd);})[_0xb2ce('0x20')](function(_0x4b3e99){_0xb0c3ae[_0xb2ce('0x3f')]=_0x4b3e99;return _0xb0c3ae;})[_0xb2ce('0x20')](respondWithFilteredResult(_0x70e774,_0x4bfbcd))['catch'](handleError(_0x70e774,null));};exports['show']=function(_0x362705,_0x19a7dd){var _0x288a8d={'raw':![],'where':{'id':_0x362705[_0xb2ce('0x40')]['id']}},_0xf966cb={};_0xf966cb[_0xb2ce('0x2b')]=_[_0xb2ce('0x2d')](db['FreshdeskConfiguration'][_0xb2ce('0x41')]);_0xf966cb['query']=_[_0xb2ce('0x2d')](_0x362705[_0xb2ce('0x2c')]);_0xf966cb[_0xb2ce('0x42')]=_[_0xb2ce('0x2e')](_0xf966cb[_0xb2ce('0x2b')],_0xf966cb['query']);_0x288a8d[_0xb2ce('0x30')]=_['intersection'](_0xf966cb['model'],qs[_0xb2ce('0x2f')](_0x362705[_0xb2ce('0x2c')][_0xb2ce('0x2f')]));_0x288a8d['attributes']=_0x288a8d[_0xb2ce('0x30')][_0xb2ce('0x31')]?_0x288a8d['attributes']:_0xf966cb[_0xb2ce('0x2b')];if(_0x362705[_0xb2ce('0x2c')][_0xb2ce('0x3c')]){_0x288a8d[_0xb2ce('0x3d')]=[{'all':!![]}];}_0x288a8d=_['merge']({},_0x288a8d,_0x362705[_0xb2ce('0x3a')]);return db[_0xb2ce('0x3b')][_0xb2ce('0x43')](_0x288a8d)['then'](handleEntityNotFound(_0x19a7dd,null))[_0xb2ce('0x20')](respondWithResult(_0x19a7dd,null))[_0xb2ce('0x44')](handleError(_0x19a7dd,null));};exports[_0xb2ce('0x45')]=function(_0x6d6803,_0x4db717){return db[_0xb2ce('0x3b')][_0xb2ce('0x45')](_0x6d6803[_0xb2ce('0x46')],{})[_0xb2ce('0x20')](respondWithResult(_0x4db717,0xc9))['catch'](handleError(_0x4db717,null));};exports[_0xb2ce('0x47')]=function(_0x1b6cd4,_0x26eb0b){if(_0x1b6cd4[_0xb2ce('0x46')]['id']){delete _0x1b6cd4[_0xb2ce('0x46')]['id'];}return db[_0xb2ce('0x3b')][_0xb2ce('0x43')]({'where':{'id':_0x1b6cd4[_0xb2ce('0x40')]['id']}})['then'](handleEntityNotFound(_0x26eb0b,null))[_0xb2ce('0x20')](saveUpdates(_0x1b6cd4[_0xb2ce('0x46')],null))[_0xb2ce('0x20')](respondWithResult(_0x26eb0b,null))[_0xb2ce('0x44')](handleError(_0x26eb0b,null));};exports[_0xb2ce('0x21')]=function(_0x25bcac,_0x3f43a9){return db[_0xb2ce('0x3b')]['find']({'where':{'id':_0x25bcac[_0xb2ce('0x40')]['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x3f43a9,null))[_0xb2ce('0x20')](removeEntity(_0x3f43a9,null))[_0xb2ce('0x44')](handleError(_0x3f43a9,null));};exports[_0xb2ce('0x48')]=function(_0x1e635e,_0x41d0a7,_0x55490a){var _0x104f30={};var _0x37f30e={};var _0xf877f4;var _0x26ac7d;return db[_0xb2ce('0x3b')][_0xb2ce('0x49')]({'where':{'id':_0x1e635e[_0xb2ce('0x40')]['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x41d0a7,null))[_0xb2ce('0x20')](function(_0x865715){if(_0x865715){_0xf877f4=_0x865715;_0x37f30e[_0xb2ce('0x2b')]=_[_0xb2ce('0x2d')](db['FreshdeskField'][_0xb2ce('0x41')]);_0x37f30e['query']=_[_0xb2ce('0x2d')](_0x1e635e[_0xb2ce('0x2c')]);_0x37f30e[_0xb2ce('0x42')]=_['intersection'](_0x37f30e[_0xb2ce('0x2b')],_0x37f30e['query']);_0x104f30['attributes']=_[_0xb2ce('0x2e')](_0x37f30e[_0xb2ce('0x2b')],qs[_0xb2ce('0x2f')](_0x1e635e[_0xb2ce('0x2c')][_0xb2ce('0x2f')]));_0x104f30[_0xb2ce('0x30')]=_0x104f30[_0xb2ce('0x30')][_0xb2ce('0x31')]?_0x104f30['attributes']:_0x37f30e['model'];_0x104f30[_0xb2ce('0x34')]=qs['sort'](_0x1e635e[_0xb2ce('0x2c')]['sort']);_0x104f30['where']=qs['filters'](_[_0xb2ce('0x37')](_0x1e635e[_0xb2ce('0x2c')],_0x37f30e[_0xb2ce('0x42')]));if(_0x1e635e[_0xb2ce('0x2c')][_0xb2ce('0x38')]){_0x104f30[_0xb2ce('0x36')]=_[_0xb2ce('0x39')](_0x104f30[_0xb2ce('0x36')],{'$or':_['map'](_0x104f30[_0xb2ce('0x30')],function(_0x463035){var _0x20a446={};_0x20a446[_0x463035]={'$like':'%'+_0x1e635e[_0xb2ce('0x2c')]['filter']+'%'};return _0x20a446;})});}_0x104f30=_[_0xb2ce('0x39')]({},_0x104f30,_0x1e635e[_0xb2ce('0x3a')]);return _0xf877f4[_0xb2ce('0x48')](_0x104f30);}})[_0xb2ce('0x20')](function(_0x37f3c5){if(_0x37f3c5){_0x26ac7d=_0x37f3c5[_0xb2ce('0x31')];if(!_0x1e635e[_0xb2ce('0x2c')]['hasOwnProperty'](_0xb2ce('0x33'))){_0x104f30['limit']=qs[_0xb2ce('0x19')](_0x1e635e[_0xb2ce('0x2c')]['limit']);_0x104f30['offset']=qs[_0xb2ce('0x1b')](_0x1e635e[_0xb2ce('0x2c')][_0xb2ce('0x1b')]);}return _0xf877f4[_0xb2ce('0x48')](_0x104f30);}})[_0xb2ce('0x20')](function(_0x30c20f){if(_0x30c20f){return _0x30c20f?{'count':_0x26ac7d,'rows':_0x30c20f}:null;}})['then'](respondWithResult(_0x41d0a7,null))[_0xb2ce('0x44')](handleError(_0x41d0a7,null));};exports[_0xb2ce('0x4a')]=function(_0xe19f0a,_0x4937d5,_0x29c0f3){var _0x3b03a2={};var _0x160471={};var _0x378b11;var _0x548959;return db[_0xb2ce('0x3b')][_0xb2ce('0x49')]({'where':{'id':_0xe19f0a['params']['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x4937d5,null))['then'](function(_0x3af738){if(_0x3af738){_0x378b11=_0x3af738;_0x160471['model']=_[_0xb2ce('0x2d')](db['FreshdeskField']['rawAttributes']);_0x160471[_0xb2ce('0x2c')]=_[_0xb2ce('0x2d')](_0xe19f0a[_0xb2ce('0x2c')]);_0x160471['filters']=_['intersection'](_0x160471['model'],_0x160471[_0xb2ce('0x2c')]);_0x3b03a2[_0xb2ce('0x30')]=_['intersection'](_0x160471[_0xb2ce('0x2b')],qs['fields'](_0xe19f0a['query'][_0xb2ce('0x2f')]));_0x3b03a2['attributes']=_0x3b03a2[_0xb2ce('0x30')]['length']?_0x3b03a2[_0xb2ce('0x30')]:_0x160471[_0xb2ce('0x2b')];_0x3b03a2[_0xb2ce('0x34')]=qs['sort'](_0xe19f0a[_0xb2ce('0x2c')][_0xb2ce('0x35')]);_0x3b03a2['where']=qs[_0xb2ce('0x42')](_[_0xb2ce('0x37')](_0xe19f0a['query'],_0x160471[_0xb2ce('0x42')]));if(_0xe19f0a[_0xb2ce('0x2c')][_0xb2ce('0x38')]){_0x3b03a2[_0xb2ce('0x36')]=_[_0xb2ce('0x39')](_0x3b03a2[_0xb2ce('0x36')],{'$or':_[_0xb2ce('0x27')](_0x3b03a2[_0xb2ce('0x30')],function(_0x33a1b9){var _0x37fdd9={};_0x37fdd9[_0x33a1b9]={'$like':'%'+_0xe19f0a[_0xb2ce('0x2c')][_0xb2ce('0x38')]+'%'};return _0x37fdd9;})});}_0x3b03a2=_[_0xb2ce('0x39')]({},_0x3b03a2,_0xe19f0a['options']);return _0x378b11[_0xb2ce('0x4a')](_0x3b03a2);}})[_0xb2ce('0x20')](function(_0x515198){if(_0x515198){_0x548959=_0x515198['length'];if(!_0xe19f0a['query'][_0xb2ce('0x32')](_0xb2ce('0x33'))){_0x3b03a2[_0xb2ce('0x19')]=qs[_0xb2ce('0x19')](_0xe19f0a[_0xb2ce('0x2c')][_0xb2ce('0x19')]);_0x3b03a2['offset']=qs[_0xb2ce('0x1b')](_0xe19f0a[_0xb2ce('0x2c')][_0xb2ce('0x1b')]);}return _0x378b11[_0xb2ce('0x4a')](_0x3b03a2);}})[_0xb2ce('0x20')](function(_0xbc45ea){if(_0xbc45ea){return _0xbc45ea?{'count':_0x548959,'rows':_0xbc45ea}:null;}})[_0xb2ce('0x20')](respondWithResult(_0x4937d5,null))['catch'](handleError(_0x4937d5,null));};exports[_0xb2ce('0x4b')]=function(_0x492a48,_0x26d4c0,_0x501384){var _0x52dff3={};var _0x6cf8e9={};var _0x517d3b;var _0x3547d9;return db[_0xb2ce('0x3b')][_0xb2ce('0x49')]({'where':{'id':_0x492a48[_0xb2ce('0x40')]['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x26d4c0,null))[_0xb2ce('0x20')](function(_0x39e28e){if(_0x39e28e){_0x517d3b=_0x39e28e;_0x6cf8e9[_0xb2ce('0x2b')]=_['keys'](db[_0xb2ce('0x4c')][_0xb2ce('0x41')]);_0x6cf8e9[_0xb2ce('0x2c')]=_[_0xb2ce('0x2d')](_0x492a48[_0xb2ce('0x2c')]);_0x6cf8e9[_0xb2ce('0x42')]=_[_0xb2ce('0x2e')](_0x6cf8e9[_0xb2ce('0x2b')],_0x6cf8e9[_0xb2ce('0x2c')]);_0x52dff3[_0xb2ce('0x30')]=_[_0xb2ce('0x2e')](_0x6cf8e9[_0xb2ce('0x2b')],qs['fields'](_0x492a48[_0xb2ce('0x2c')][_0xb2ce('0x2f')]));_0x52dff3[_0xb2ce('0x30')]=_0x52dff3['attributes']['length']?_0x52dff3[_0xb2ce('0x30')]:_0x6cf8e9[_0xb2ce('0x2b')];_0x52dff3['order']=qs[_0xb2ce('0x35')](_0x492a48[_0xb2ce('0x2c')][_0xb2ce('0x35')]);_0x52dff3[_0xb2ce('0x36')]=qs[_0xb2ce('0x42')](_[_0xb2ce('0x37')](_0x492a48[_0xb2ce('0x2c')],_0x6cf8e9[_0xb2ce('0x42')]));if(_0x492a48[_0xb2ce('0x2c')]['filter']){_0x52dff3[_0xb2ce('0x36')]=_[_0xb2ce('0x39')](_0x52dff3[_0xb2ce('0x36')],{'$or':_[_0xb2ce('0x27')](_0x52dff3[_0xb2ce('0x30')],function(_0x2b6a2b){var _0x3e7ff9={};_0x3e7ff9[_0x2b6a2b]={'$like':'%'+_0x492a48['query']['filter']+'%'};return _0x3e7ff9;})});}_0x52dff3=_['merge']({},_0x52dff3,_0x492a48[_0xb2ce('0x3a')]);return _0x517d3b[_0xb2ce('0x4b')](_0x52dff3);}})[_0xb2ce('0x20')](function(_0x1097f3){if(_0x1097f3){_0x3547d9=_0x1097f3[_0xb2ce('0x31')];if(!_0x492a48['query'][_0xb2ce('0x32')](_0xb2ce('0x33'))){_0x52dff3['limit']=qs[_0xb2ce('0x19')](_0x492a48[_0xb2ce('0x2c')][_0xb2ce('0x19')]);_0x52dff3['offset']=qs['offset'](_0x492a48['query']['offset']);}return _0x517d3b['getDescriptions'](_0x52dff3);}})[_0xb2ce('0x20')](function(_0x524148){if(_0x524148){return _0x524148?{'count':_0x3547d9,'rows':_0x524148}:null;}})[_0xb2ce('0x20')](respondWithResult(_0x26d4c0,null))[_0xb2ce('0x44')](handleError(_0x26d4c0,null));};exports['getTags']=function(_0x3e6876,_0x2d6386,_0x2809c6){var _0x31ee50={};var _0xd2a0ed={};var _0x15052b;var _0x3a8e9b;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x3e6876[_0xb2ce('0x40')]['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x2d6386,null))[_0xb2ce('0x20')](function(_0x41a6e9){if(_0x41a6e9){_0x15052b=_0x41a6e9;_0xd2a0ed[_0xb2ce('0x2b')]=_[_0xb2ce('0x2d')](db[_0xb2ce('0x4d')][_0xb2ce('0x41')]);_0xd2a0ed[_0xb2ce('0x2c')]=_['keys'](_0x3e6876[_0xb2ce('0x2c')]);_0xd2a0ed[_0xb2ce('0x42')]=_[_0xb2ce('0x2e')](_0xd2a0ed[_0xb2ce('0x2b')],_0xd2a0ed[_0xb2ce('0x2c')]);_0x31ee50['attributes']=_['intersection'](_0xd2a0ed[_0xb2ce('0x2b')],qs[_0xb2ce('0x2f')](_0x3e6876[_0xb2ce('0x2c')][_0xb2ce('0x2f')]));_0x31ee50[_0xb2ce('0x30')]=_0x31ee50[_0xb2ce('0x30')][_0xb2ce('0x31')]?_0x31ee50[_0xb2ce('0x30')]:_0xd2a0ed[_0xb2ce('0x2b')];_0x31ee50['order']=qs[_0xb2ce('0x35')](_0x3e6876[_0xb2ce('0x2c')][_0xb2ce('0x35')]);_0x31ee50['where']=qs[_0xb2ce('0x42')](_[_0xb2ce('0x37')](_0x3e6876['query'],_0xd2a0ed['filters']));if(_0x3e6876[_0xb2ce('0x2c')][_0xb2ce('0x38')]){_0x31ee50[_0xb2ce('0x36')]=_[_0xb2ce('0x39')](_0x31ee50[_0xb2ce('0x36')],{'$or':_[_0xb2ce('0x27')](_0x31ee50[_0xb2ce('0x30')],function(_0x4e1413){var _0x3ac0ef={};_0x3ac0ef[_0x4e1413]={'$like':'%'+_0x3e6876[_0xb2ce('0x2c')]['filter']+'%'};return _0x3ac0ef;})});}_0x31ee50=_[_0xb2ce('0x39')]({},_0x31ee50,_0x3e6876[_0xb2ce('0x3a')]);return _0x15052b['getTags'](_0x31ee50);}})[_0xb2ce('0x20')](function(_0x4ca97d){if(_0x4ca97d){_0x3a8e9b=_0x4ca97d['length'];if(!_0x3e6876[_0xb2ce('0x2c')][_0xb2ce('0x32')]('nolimit')){_0x31ee50[_0xb2ce('0x19')]=qs[_0xb2ce('0x19')](_0x3e6876[_0xb2ce('0x2c')]['limit']);_0x31ee50[_0xb2ce('0x1b')]=qs[_0xb2ce('0x1b')](_0x3e6876[_0xb2ce('0x2c')][_0xb2ce('0x1b')]);}return _0x15052b[_0xb2ce('0x4e')](_0x31ee50);}})[_0xb2ce('0x20')](function(_0x13b143){if(_0x13b143){return _0x13b143?{'count':_0x3a8e9b,'rows':_0x13b143}:null;}})[_0xb2ce('0x20')](respondWithResult(_0x2d6386,null))[_0xb2ce('0x44')](handleError(_0x2d6386,null));};exports[_0xb2ce('0x4f')]=function(_0x3ce34f,_0x3f5ce7,_0x132c8f){if(_0x3ce34f[_0xb2ce('0x46')]['id']){delete _0x3ce34f['body']['id'];}return db[_0xb2ce('0x3b')][_0xb2ce('0x49')]({'where':{'id':_0x3ce34f[_0xb2ce('0x40')]['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x3f5ce7,null))['then'](function(_0x278ff9){if(_0x278ff9){return _0x278ff9[_0xb2ce('0x4f')](_0x3ce34f[_0xb2ce('0x46')][_0xb2ce('0x50')]||[]);}return null;})[_0xb2ce('0x20')](respondWithResult(_0x3f5ce7,null))[_0xb2ce('0x44')](handleError(_0x3f5ce7,null));};
\ No newline at end of file
index 8d72f3d..05c7d2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x897d=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','lodash','util','../../config/logger'];(function(_0x5b4cd5,_0x5c059c){var _0x194194=function(_0x42cbc0){while(--_0x42cbc0){_0x5b4cd5['push'](_0x5b4cd5['shift']());}};_0x194194(++_0x5c059c);}(_0x897d,0x6d));var _0xd897=function(_0x1c15f4,_0x8eb698){_0x1c15f4=_0x1c15f4-0x0;var _0x36ff87=_0x897d[_0x1c15f4];return _0x36ff87;};'use strict';var _=require(_0xd897('0x0'));var util=require(_0xd897('0x1'));var logger=require(_0xd897('0x2'))(_0xd897('0x3'));var moment=require(_0xd897('0x4'));var BPromise=require(_0xd897('0x5'));var rp=require(_0xd897('0x6'));var fs=require('fs');var path=require(_0xd897('0x7'));var rimraf=require(_0xd897('0x8'));var config=require(_0xd897('0x9'));var attributes=require(_0xd897('0xa'));module[_0xd897('0xb')]=function(_0x48d212,_0xf40739){return _0x48d212[_0xd897('0xc')](_0xd897('0xd'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5c3=['request-promise','rimraf','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','api','moment'];(function(_0x4c2c73,_0x208f85){var _0x53e82a=function(_0x3269a5){while(--_0x3269a5){_0x4c2c73['push'](_0x4c2c73['shift']());}};_0x53e82a(++_0x208f85);}(_0xa5c3,0x75));var _0x3a5c=function(_0x4addec,_0x4b90ae){_0x4addec=_0x4addec-0x0;var _0xc4f5ca=_0xa5c3[_0x4addec];return _0xc4f5ca;};'use strict';var _=require(_0x3a5c('0x0'));var util=require(_0x3a5c('0x1'));var logger=require('../../config/logger')(_0x3a5c('0x2'));var moment=require(_0x3a5c('0x3'));var BPromise=require('bluebird');var rp=require(_0x3a5c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3a5c('0x5'));var config=require('../../config/environment');var attributes=require(_0x3a5c('0x6'));module[_0x3a5c('0x7')]=function(_0x1ee09c,_0x243941){return _0x1ee09c[_0x3a5c('0x8')](_0x3a5c('0x9'),attributes,{'tableName':_0x3a5c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e92e2f0..88c80ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5711=['rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','code','error','message','info','FreshdeskConfiguration,\x20%s,\x20%s','result','catch','util','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x30e5de,_0x1b1380){var _0x4a612b=function(_0x25b02f){while(--_0x25b02f){_0x30e5de['push'](_0x30e5de['shift']());}};_0x4a612b(++_0x1b1380);}(_0x5711,0x19f));var _0x1571=function(_0x2d89ce,_0x24d58d){_0x2d89ce=_0x2d89ce-0x0;var _0x3fad10=_0x5711[_0x2d89ce];return _0x3fad10;};'use strict';var _=require('lodash');var util=require(_0x1571('0x0'));var moment=require('moment');var BPromise=require(_0x1571('0x1'));var rs=require(_0x1571('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1571('0x3'))['db'];var utils=require(_0x1571('0x4'));var logger=require('../../config/logger')(_0x1571('0x5'));var config=require(_0x1571('0x6'));var jayson=require(_0x1571('0x7'));var client=jayson[_0x1571('0x8')][_0x1571('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x21ce03,_0x5789e9,_0x59bb9d){return new BPromise(function(_0x27c3fc,_0x397f45){return client['request'](_0x21ce03,_0x59bb9d)[_0x1571('0xa')](function(_0x585c98){logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x5789e9,_0x1571('0xb'));logger[_0x1571('0xc')](_0x1571('0xd'),_0x5789e9,_0x1571('0xb'),JSON['stringify'](_0x585c98));if(_0x585c98['error']){if(_0x585c98['error'][_0x1571('0xe')]===0x1f4){logger[_0x1571('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x5789e9,_0x585c98['error'][_0x1571('0x10')]);return _0x397f45(_0x585c98[_0x1571('0xf')][_0x1571('0x10')]);}logger[_0x1571('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x5789e9,_0x585c98['error'][_0x1571('0x10')]);return _0x27c3fc(_0x585c98[_0x1571('0xf')]['message']);}else{logger[_0x1571('0x11')](_0x1571('0x12'),_0x5789e9,_0x1571('0xb'));_0x27c3fc(_0x585c98[_0x1571('0x13')]['message']);}})[_0x1571('0x14')](function(_0x54375d){logger['error'](_0x1571('0x12'),_0x5789e9,_0x54375d);_0x397f45(_0x54375d);});});}
\ No newline at end of file
+var _0x6f79=['http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x6f79,0x1d9));var _0x96f7=function(_0x39eb24,_0x18cf5e){_0x39eb24=_0x39eb24-0x0;var _0x6fbcb8=_0x6f79[_0x39eb24];return _0x6fbcb8;};'use strict';var _=require(_0x96f7('0x0'));var util=require(_0x96f7('0x1'));var moment=require(_0x96f7('0x2'));var BPromise=require(_0x96f7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x96f7('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x96f7('0x5'))(_0x96f7('0x6'));var config=require(_0x96f7('0x7'));var jayson=require(_0x96f7('0x8'));var client=jayson[_0x96f7('0x9')][_0x96f7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5c8b99,_0x51b2dd,_0x1cba30){return new BPromise(function(_0xa41ccd,_0x5f3d59){return client[_0x96f7('0xb')](_0x5c8b99,_0x1cba30)[_0x96f7('0xc')](function(_0xef48c1){logger[_0x96f7('0xd')](_0x96f7('0xe'),_0x51b2dd,_0x96f7('0xf'));logger['debug'](_0x96f7('0x10'),_0x51b2dd,_0x96f7('0xf'),JSON[_0x96f7('0x11')](_0xef48c1));if(_0xef48c1[_0x96f7('0x12')]){if(_0xef48c1[_0x96f7('0x12')]['code']===0x1f4){logger[_0x96f7('0x12')](_0x96f7('0xe'),_0x51b2dd,_0xef48c1[_0x96f7('0x12')][_0x96f7('0x13')]);return _0x5f3d59(_0xef48c1[_0x96f7('0x12')][_0x96f7('0x13')]);}logger[_0x96f7('0x12')](_0x96f7('0xe'),_0x51b2dd,_0xef48c1[_0x96f7('0x12')][_0x96f7('0x13')]);return _0xa41ccd(_0xef48c1[_0x96f7('0x12')][_0x96f7('0x13')]);}else{logger[_0x96f7('0xd')](_0x96f7('0xe'),_0x51b2dd,'request\x20sent');_0xa41ccd(_0xef48c1[_0x96f7('0x14')][_0x96f7('0x13')]);}})['catch'](function(_0x24e237){logger[_0x96f7('0x12')](_0x96f7('0xe'),_0x51b2dd,_0x24e237);_0x5f3d59(_0x24e237);});});}
\ No newline at end of file
index b933e4b..373c380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe730=['update','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','show','post','put'];(function(_0xd060d,_0x418fed){var _0x310992=function(_0xf68979){while(--_0xf68979){_0xd060d['push'](_0xd060d['shift']());}};_0x310992(++_0x418fed);}(_0xe730,0x1bc));var _0x0e73=function(_0x960d34,_0x3e8eed){_0x960d34=_0x960d34-0x0;var _0x344ab9=_0xe730[_0x960d34];return _0x344ab9;};'use strict';var multer=require(_0x0e73('0x0'));var util=require('util');var path=require(_0x0e73('0x1'));var timeout=require(_0x0e73('0x2'));var express=require('express');var router=express[_0x0e73('0x3')]();var fs_extra=require(_0x0e73('0x4'));var auth=require(_0x0e73('0x5'));var interaction=require(_0x0e73('0x6'));var config=require('../../config/environment');var controller=require(_0x0e73('0x7'));router[_0x0e73('0x8')]('/',auth[_0x0e73('0x9')](),controller[_0x0e73('0xa')]);router[_0x0e73('0x8')](_0x0e73('0xb'),auth[_0x0e73('0x9')](),controller[_0x0e73('0xc')]);router[_0x0e73('0xd')]('/',auth[_0x0e73('0x9')](),controller['create']);router[_0x0e73('0xe')]('/:id',auth[_0x0e73('0x9')](),controller[_0x0e73('0xf')]);router['delete']('/:id',auth[_0x0e73('0x9')](),controller[_0x0e73('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xcb04=['put','delete','destroy','exports','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','isAuthenticated','index','get','/:id','post'];(function(_0x3e590f,_0x2e6c17){var _0x9d1468=function(_0xad754a){while(--_0xad754a){_0x3e590f['push'](_0x3e590f['shift']());}};_0x9d1468(++_0x2e6c17);}(_0xcb04,0x1b4));var _0x4cb0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xcb04[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x4cb0('0x0'));var router=express[_0x4cb0('0x1')]();var fs_extra=require(_0x4cb0('0x2'));var auth=require(_0x4cb0('0x3'));var interaction=require(_0x4cb0('0x4'));var config=require(_0x4cb0('0x5'));var controller=require(_0x4cb0('0x6'));router['get']('/',auth[_0x4cb0('0x7')](),controller[_0x4cb0('0x8')]);router[_0x4cb0('0x9')](_0x4cb0('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x4cb0('0xb')]('/',auth[_0x4cb0('0x7')](),controller['create']);router[_0x4cb0('0xc')](_0x4cb0('0xa'),auth[_0x4cb0('0x7')](),controller['update']);router[_0x4cb0('0xd')]('/:id',auth[_0x4cb0('0x7')](),controller[_0x4cb0('0xe')]);module[_0x4cb0('0xf')]=router;
\ No newline at end of file
index 1afff23..16639cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bb5=['sequelize','exports','ENUM','picklist','string','STRING','variable','customVariable','BOOLEAN'];(function(_0x25ffd3,_0x2fc3d1){var _0x44d504=function(_0x41417d){while(--_0x41417d){_0x25ffd3['push'](_0x25ffd3['shift']());}};_0x44d504(++_0x2fc3d1);}(_0x6bb5,0x87));var _0x56bb=function(_0x4dc7b9,_0x319d5a){_0x4dc7b9=_0x4dc7b9-0x0;var _0x3ab114=_0x6bb5[_0x4dc7b9];return _0x3ab114;};'use strict';var Sequelize=require(_0x56bb('0x0'));module[_0x56bb('0x1')]={'type':{'type':Sequelize[_0x56bb('0x2')]('string','variable','customVariable','keyValue',_0x56bb('0x3')),'defaultValue':_0x56bb('0x4')},'content':{'type':Sequelize[_0x56bb('0x5')]},'key':{'type':Sequelize[_0x56bb('0x5')]},'keyType':{'type':Sequelize['ENUM']('string',_0x56bb('0x6'),_0x56bb('0x7'))},'keyContent':{'type':Sequelize[_0x56bb('0x5')]},'idField':{'type':Sequelize[_0x56bb('0x5')]},'nameField':{'type':Sequelize[_0x56bb('0x5')]},'customField':{'type':Sequelize[_0x56bb('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x56bb('0x5')]}};
\ No newline at end of file
+var _0x48db=['picklist','STRING','ENUM','customVariable','sequelize','exports','string','variable','keyValue'];(function(_0x3387a0,_0x10ad95){var _0x2dddb2=function(_0x8289e5){while(--_0x8289e5){_0x3387a0['push'](_0x3387a0['shift']());}};_0x2dddb2(++_0x10ad95);}(_0x48db,0xee));var _0xb48d=function(_0x200b72,_0x51d00b){_0x200b72=_0x200b72-0x0;var _0x3bf594=_0x48db[_0x200b72];return _0x3bf594;};'use strict';var Sequelize=require(_0xb48d('0x0'));module[_0xb48d('0x1')]={'type':{'type':Sequelize['ENUM'](_0xb48d('0x2'),_0xb48d('0x3'),'customVariable',_0xb48d('0x4'),_0xb48d('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xb48d('0x6')]},'key':{'type':Sequelize[_0xb48d('0x6')]},'keyType':{'type':Sequelize[_0xb48d('0x7')](_0xb48d('0x2'),'variable',_0xb48d('0x8'))},'keyContent':{'type':Sequelize[_0xb48d('0x6')]},'idField':{'type':Sequelize[_0xb48d('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb48d('0x6')]}};
\ No newline at end of file
index d6807e6..9b6c07a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7794=['status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','FreshdeskField','includeAll','findAll','rows','show','rawAttributes','include','find','catch','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x241441,_0x59a1d1){var _0x2b4b20=function(_0x219cf9){while(--_0x219cf9){_0x241441['push'](_0x241441['shift']());}};_0x2b4b20(++_0x59a1d1);}(_0x7794,0x7b));var _0x4779=function(_0x53b7c0,_0xe3c39e){_0x53b7c0=_0x53b7c0-0x0;var _0x110565=_0x7794[_0x53b7c0];return _0x110565;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4779('0x0'));var zipdir=require(_0x4779('0x1'));var jsonpatch=require(_0x4779('0x2'));var rp=require(_0x4779('0x3'));var moment=require('moment');var BPromise=require(_0x4779('0x4'));var Mustache=require(_0x4779('0x5'));var util=require('util');var path=require(_0x4779('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4779('0x7'));var _=require(_0x4779('0x8'));var squel=require('squel');var crypto=require(_0x4779('0x9'));var jsforce=require(_0x4779('0xa'));var deskjs=require(_0x4779('0xb'));var toCsv=require(_0x4779('0xc'));var querystring=require(_0x4779('0xd'));var Papa=require(_0x4779('0xe'));var Redis=require(_0x4779('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4779('0x10'));var as=require(_0x4779('0x11'));var hardwareService=require(_0x4779('0x12'));var logger=require(_0x4779('0x13'))(_0x4779('0x14'));var utils=require(_0x4779('0x15'));var config=require(_0x4779('0x16'));var licenseUtil=require(_0x4779('0x17'));var db=require(_0x4779('0x18'))['db'];function respondWithStatusCode(_0x13c989,_0x50e17e){_0x50e17e=_0x50e17e||0xcc;return function(_0x5b1219){if(_0x5b1219){return _0x13c989['sendStatus'](_0x50e17e);}return _0x13c989[_0x4779('0x19')](_0x50e17e)[_0x4779('0x1a')]();};}function respondWithResult(_0xb9a06f,_0xddf5cd){_0xddf5cd=_0xddf5cd||0xc8;return function(_0x4fe370){if(_0x4fe370){return _0xb9a06f[_0x4779('0x19')](_0xddf5cd)[_0x4779('0x1b')](_0x4fe370);}};}function respondWithFilteredResult(_0x4d71a0,_0x599deb){return function(_0x1dbbe1){if(_0x1dbbe1){var _0x2de2be=typeof _0x599deb[_0x4779('0x1c')]===_0x4779('0x1d')&&typeof _0x599deb['limit']==='undefined';var _0x445e0b=_0x1dbbe1[_0x4779('0x1e')];var _0x19fbb6=_0x2de2be?0x0:_0x599deb['offset'];var _0x3dbe70=_0x2de2be?_0x1dbbe1['count']:_0x599deb[_0x4779('0x1c')]+_0x599deb[_0x4779('0x1f')];var _0x478fa5;if(_0x3dbe70>=_0x445e0b){_0x3dbe70=_0x445e0b;_0x478fa5=0xc8;}else{_0x478fa5=0xce;}_0x4d71a0[_0x4779('0x19')](_0x478fa5);return _0x4d71a0['set'](_0x4779('0x20'),_0x19fbb6+'-'+_0x3dbe70+'/'+_0x445e0b)[_0x4779('0x1b')](_0x1dbbe1);}return null;};}function patchUpdates(_0x143ef6){return function(_0x298e25){try{jsonpatch[_0x4779('0x21')](_0x298e25,_0x143ef6,!![]);}catch(_0x1ce270){return BPromise['reject'](_0x1ce270);}return _0x298e25[_0x4779('0x22')]();};}function saveUpdates(_0x4f2158,_0x4ad246){return function(_0xd983f0){if(_0xd983f0){return _0xd983f0[_0x4779('0x23')](_0x4f2158)[_0x4779('0x24')](function(_0x2b7ab6){return _0x2b7ab6;});}return null;};}function removeEntity(_0x555cd6,_0x152887){return function(_0x29a39a){if(_0x29a39a){return _0x29a39a[_0x4779('0x25')]()['then'](function(){_0x555cd6[_0x4779('0x19')](0xcc)[_0x4779('0x1a')]();});}};}function handleEntityNotFound(_0x577b13,_0x1ce2d2){return function(_0x38af24){if(!_0x38af24){_0x577b13['sendStatus'](0x194);}return _0x38af24;};}function handleError(_0x20db7e,_0x277f55){_0x277f55=_0x277f55||0x1f4;return function(_0x211af1){logger[_0x4779('0x26')](_0x211af1[_0x4779('0x27')]);if(_0x211af1[_0x4779('0x28')]){delete _0x211af1[_0x4779('0x28')];}_0x20db7e[_0x4779('0x19')](_0x277f55)['send'](_0x211af1);};}exports[_0x4779('0x29')]=function(_0x1607a5,_0xb028f){var _0x28a261={},_0x8b4c42={},_0x40fb18={'count':0x0,'rows':[]};var _0x13ec28=_[_0x4779('0x2a')](db['FreshdeskField']['rawAttributes'],function(_0x179717){return{'name':_0x179717[_0x4779('0x2b')],'type':_0x179717[_0x4779('0x2c')][_0x4779('0x2d')]};});_0x8b4c42[_0x4779('0x2e')]=_['map'](_0x13ec28,_0x4779('0x28'));_0x8b4c42[_0x4779('0x2f')]=_[_0x4779('0x30')](_0x1607a5[_0x4779('0x2f')]);_0x8b4c42['filters']=_['intersection'](_0x8b4c42[_0x4779('0x2e')],_0x8b4c42['query']);_0x28a261[_0x4779('0x31')]=_[_0x4779('0x32')](_0x8b4c42[_0x4779('0x2e')],qs[_0x4779('0x33')](_0x1607a5[_0x4779('0x2f')][_0x4779('0x33')]));_0x28a261[_0x4779('0x31')]=_0x28a261[_0x4779('0x31')][_0x4779('0x34')]?_0x28a261[_0x4779('0x31')]:_0x8b4c42[_0x4779('0x2e')];if(!_0x1607a5[_0x4779('0x2f')]['hasOwnProperty']('nolimit')){_0x28a261[_0x4779('0x1f')]=qs['limit'](_0x1607a5[_0x4779('0x2f')]['limit']);_0x28a261[_0x4779('0x1c')]=qs[_0x4779('0x1c')](_0x1607a5[_0x4779('0x2f')][_0x4779('0x1c')]);}_0x28a261[_0x4779('0x35')]=qs['sort'](_0x1607a5['query'][_0x4779('0x36')]);_0x28a261[_0x4779('0x37')]=qs[_0x4779('0x38')](_[_0x4779('0x39')](_0x1607a5[_0x4779('0x2f')],_0x8b4c42[_0x4779('0x38')]),_0x13ec28);if(_0x1607a5[_0x4779('0x2f')][_0x4779('0x3a')]){_0x28a261[_0x4779('0x37')]=_[_0x4779('0x3b')](_0x28a261[_0x4779('0x37')],{'$or':_[_0x4779('0x2a')](_0x13ec28,function(_0x88603f){if(_0x88603f[_0x4779('0x2c')]!==_0x4779('0x3c')){var _0x1a2c16={};_0x1a2c16[_0x88603f[_0x4779('0x28')]]={'$like':'%'+_0x1607a5[_0x4779('0x2f')][_0x4779('0x3a')]+'%'};return _0x1a2c16;}})});}_0x28a261=_['merge']({},_0x28a261,_0x1607a5[_0x4779('0x3d')]);var _0x58ca36={'where':_0x28a261[_0x4779('0x37')]};return db[_0x4779('0x3e')][_0x4779('0x1e')](_0x58ca36)[_0x4779('0x24')](function(_0xc9873e){_0x40fb18[_0x4779('0x1e')]=_0xc9873e;if(_0x1607a5['query'][_0x4779('0x3f')]){_0x28a261['include']=[{'all':!![]}];}return db[_0x4779('0x3e')][_0x4779('0x40')](_0x28a261);})[_0x4779('0x24')](function(_0x3a3589){_0x40fb18[_0x4779('0x41')]=_0x3a3589;return _0x40fb18;})[_0x4779('0x24')](respondWithFilteredResult(_0xb028f,_0x28a261))['catch'](handleError(_0xb028f,null));};exports[_0x4779('0x42')]=function(_0x5cdc2b,_0x20abf7){var _0x3f1889={'raw':!![],'where':{'id':_0x5cdc2b['params']['id']}},_0x2e60ab={};_0x2e60ab[_0x4779('0x2e')]=_[_0x4779('0x30')](db[_0x4779('0x3e')][_0x4779('0x43')]);_0x2e60ab[_0x4779('0x2f')]=_[_0x4779('0x30')](_0x5cdc2b[_0x4779('0x2f')]);_0x2e60ab[_0x4779('0x38')]=_[_0x4779('0x32')](_0x2e60ab[_0x4779('0x2e')],_0x2e60ab[_0x4779('0x2f')]);_0x3f1889[_0x4779('0x31')]=_[_0x4779('0x32')](_0x2e60ab[_0x4779('0x2e')],qs[_0x4779('0x33')](_0x5cdc2b['query']['fields']));_0x3f1889[_0x4779('0x31')]=_0x3f1889[_0x4779('0x31')][_0x4779('0x34')]?_0x3f1889[_0x4779('0x31')]:_0x2e60ab[_0x4779('0x2e')];if(_0x5cdc2b[_0x4779('0x2f')][_0x4779('0x3f')]){_0x3f1889[_0x4779('0x44')]=[{'all':!![]}];}_0x3f1889=_['merge']({},_0x3f1889,_0x5cdc2b[_0x4779('0x3d')]);return db[_0x4779('0x3e')][_0x4779('0x45')](_0x3f1889)[_0x4779('0x24')](handleEntityNotFound(_0x20abf7,null))[_0x4779('0x24')](respondWithResult(_0x20abf7,null))[_0x4779('0x46')](handleError(_0x20abf7,null));};exports['create']=function(_0x7f419c,_0x39ecb5){return db[_0x4779('0x3e')][_0x4779('0x47')](_0x7f419c[_0x4779('0x48')],{})['then'](respondWithResult(_0x39ecb5,0xc9))[_0x4779('0x46')](handleError(_0x39ecb5,null));};exports[_0x4779('0x23')]=function(_0x3873d4,_0x4a1040){if(_0x3873d4[_0x4779('0x48')]['id']){delete _0x3873d4['body']['id'];}return db[_0x4779('0x3e')][_0x4779('0x45')]({'where':{'id':_0x3873d4[_0x4779('0x49')]['id']}})['then'](handleEntityNotFound(_0x4a1040,null))[_0x4779('0x24')](saveUpdates(_0x3873d4['body'],null))[_0x4779('0x24')](respondWithResult(_0x4a1040,null))[_0x4779('0x46')](handleError(_0x4a1040,null));};exports[_0x4779('0x25')]=function(_0x58e14e,_0x5dfdb7){return db['FreshdeskField'][_0x4779('0x45')]({'where':{'id':_0x58e14e[_0x4779('0x49')]['id']}})['then'](handleEntityNotFound(_0x5dfdb7,null))[_0x4779('0x24')](removeEntity(_0x5dfdb7,null))[_0x4779('0x46')](handleError(_0x5dfdb7,null));};
\ No newline at end of file
+var _0xb9a7=['merge','VIRTUAL','name','options','includeAll','include','rows','catch','show','params','rawAttributes','intersection','create','body','rimraf','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','save','update','then','destroy','stack','map','FreshdeskField','fieldName','type','key','model','keys','query','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0xb9a7,0x112));var _0x7b9a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xb9a7[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7b9a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7b9a('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x7b9a('0x2'));var util=require(_0x7b9a('0x3'));var path=require(_0x7b9a('0x4'));var sox=require(_0x7b9a('0x5'));var csv=require(_0x7b9a('0x6'));var ejs=require(_0x7b9a('0x7'));var fs=require('fs');var fs_extra=require(_0x7b9a('0x8'));var _=require(_0x7b9a('0x9'));var squel=require(_0x7b9a('0xa'));var crypto=require(_0x7b9a('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7b9a('0xc'));var toCsv=require(_0x7b9a('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7b9a('0xd'));var qs=require(_0x7b9a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7b9a('0xf'));var logger=require('../../config/logger')(_0x7b9a('0x10'));var utils=require('../../config/utils');var config=require(_0x7b9a('0x11'));var licenseUtil=require(_0x7b9a('0x12'));var db=require(_0x7b9a('0x13'))['db'];function respondWithStatusCode(_0x5948ca,_0x32f616){_0x32f616=_0x32f616||0xcc;return function(_0xec5949){if(_0xec5949){return _0x5948ca['sendStatus'](_0x32f616);}return _0x5948ca[_0x7b9a('0x14')](_0x32f616)[_0x7b9a('0x15')]();};}function respondWithResult(_0x4b7ec0,_0xb157e5){_0xb157e5=_0xb157e5||0xc8;return function(_0xde180d){if(_0xde180d){return _0x4b7ec0[_0x7b9a('0x14')](_0xb157e5)[_0x7b9a('0x16')](_0xde180d);}};}function respondWithFilteredResult(_0x344fa7,_0x346daa){return function(_0x22a7e4){if(_0x22a7e4){var _0x35e602=typeof _0x346daa[_0x7b9a('0x17')]==='undefined'&&typeof _0x346daa[_0x7b9a('0x18')]==='undefined';var _0x123921=_0x22a7e4[_0x7b9a('0x19')];var _0x271263=_0x35e602?0x0:_0x346daa[_0x7b9a('0x17')];var _0x44a232=_0x35e602?_0x22a7e4[_0x7b9a('0x19')]:_0x346daa[_0x7b9a('0x17')]+_0x346daa[_0x7b9a('0x18')];var _0x2064a0;if(_0x44a232>=_0x123921){_0x44a232=_0x123921;_0x2064a0=0xc8;}else{_0x2064a0=0xce;}_0x344fa7[_0x7b9a('0x14')](_0x2064a0);return _0x344fa7[_0x7b9a('0x1a')](_0x7b9a('0x1b'),_0x271263+'-'+_0x44a232+'/'+_0x123921)[_0x7b9a('0x16')](_0x22a7e4);}return null;};}function patchUpdates(_0x58aed7){return function(_0x993048){try{jsonpatch['apply'](_0x993048,_0x58aed7,!![]);}catch(_0x1eacbc){return BPromise['reject'](_0x1eacbc);}return _0x993048[_0x7b9a('0x1c')]();};}function saveUpdates(_0x331ae6,_0x23d812){return function(_0x54fda7){if(_0x54fda7){return _0x54fda7[_0x7b9a('0x1d')](_0x331ae6)[_0x7b9a('0x1e')](function(_0x5705b2){return _0x5705b2;});}return null;};}function removeEntity(_0x35aca7,_0x374dca){return function(_0x269c07){if(_0x269c07){return _0x269c07[_0x7b9a('0x1f')]()[_0x7b9a('0x1e')](function(){_0x35aca7['status'](0xcc)[_0x7b9a('0x15')]();});}};}function handleEntityNotFound(_0x23219e,_0x5809f5){return function(_0x39b7ec){if(!_0x39b7ec){_0x23219e['sendStatus'](0x194);}return _0x39b7ec;};}function handleError(_0x31eb67,_0x3091ab){_0x3091ab=_0x3091ab||0x1f4;return function(_0x4c2271){logger['error'](_0x4c2271[_0x7b9a('0x20')]);if(_0x4c2271['name']){delete _0x4c2271['name'];}_0x31eb67[_0x7b9a('0x14')](_0x3091ab)['send'](_0x4c2271);};}exports['index']=function(_0x3847b4,_0x4d5880){var _0x5c89b6={},_0x314b6d={},_0x4fee38={'count':0x0,'rows':[]};var _0x1553ae=_[_0x7b9a('0x21')](db[_0x7b9a('0x22')]['rawAttributes'],function(_0x45ccf5){return{'name':_0x45ccf5[_0x7b9a('0x23')],'type':_0x45ccf5[_0x7b9a('0x24')][_0x7b9a('0x25')]};});_0x314b6d[_0x7b9a('0x26')]=_[_0x7b9a('0x21')](_0x1553ae,'name');_0x314b6d['query']=_[_0x7b9a('0x27')](_0x3847b4[_0x7b9a('0x28')]);_0x314b6d[_0x7b9a('0x29')]=_['intersection'](_0x314b6d[_0x7b9a('0x26')],_0x314b6d[_0x7b9a('0x28')]);_0x5c89b6['attributes']=_['intersection'](_0x314b6d[_0x7b9a('0x26')],qs[_0x7b9a('0x2a')](_0x3847b4['query'][_0x7b9a('0x2a')]));_0x5c89b6[_0x7b9a('0x2b')]=_0x5c89b6[_0x7b9a('0x2b')][_0x7b9a('0x2c')]?_0x5c89b6[_0x7b9a('0x2b')]:_0x314b6d['model'];if(!_0x3847b4[_0x7b9a('0x28')][_0x7b9a('0x2d')](_0x7b9a('0x2e'))){_0x5c89b6[_0x7b9a('0x18')]=qs[_0x7b9a('0x18')](_0x3847b4[_0x7b9a('0x28')]['limit']);_0x5c89b6['offset']=qs[_0x7b9a('0x17')](_0x3847b4[_0x7b9a('0x28')]['offset']);}_0x5c89b6[_0x7b9a('0x2f')]=qs[_0x7b9a('0x30')](_0x3847b4[_0x7b9a('0x28')]['sort']);_0x5c89b6[_0x7b9a('0x31')]=qs[_0x7b9a('0x29')](_['pick'](_0x3847b4['query'],_0x314b6d[_0x7b9a('0x29')]),_0x1553ae);if(_0x3847b4[_0x7b9a('0x28')][_0x7b9a('0x32')]){_0x5c89b6[_0x7b9a('0x31')]=_[_0x7b9a('0x33')](_0x5c89b6[_0x7b9a('0x31')],{'$or':_[_0x7b9a('0x21')](_0x1553ae,function(_0x380f4b){if(_0x380f4b['type']!==_0x7b9a('0x34')){var _0x5ac175={};_0x5ac175[_0x380f4b[_0x7b9a('0x35')]]={'$like':'%'+_0x3847b4[_0x7b9a('0x28')][_0x7b9a('0x32')]+'%'};return _0x5ac175;}})});}_0x5c89b6=_[_0x7b9a('0x33')]({},_0x5c89b6,_0x3847b4[_0x7b9a('0x36')]);var _0x89951b={'where':_0x5c89b6['where']};return db[_0x7b9a('0x22')][_0x7b9a('0x19')](_0x89951b)[_0x7b9a('0x1e')](function(_0x1bc1f0){_0x4fee38['count']=_0x1bc1f0;if(_0x3847b4[_0x7b9a('0x28')][_0x7b9a('0x37')]){_0x5c89b6[_0x7b9a('0x38')]=[{'all':!![]}];}return db[_0x7b9a('0x22')]['findAll'](_0x5c89b6);})[_0x7b9a('0x1e')](function(_0x53d89a){_0x4fee38[_0x7b9a('0x39')]=_0x53d89a;return _0x4fee38;})[_0x7b9a('0x1e')](respondWithFilteredResult(_0x4d5880,_0x5c89b6))[_0x7b9a('0x3a')](handleError(_0x4d5880,null));};exports[_0x7b9a('0x3b')]=function(_0x43fad0,_0x41f541){var _0x56e274={'raw':!![],'where':{'id':_0x43fad0[_0x7b9a('0x3c')]['id']}},_0x33edc6={};_0x33edc6[_0x7b9a('0x26')]=_['keys'](db['FreshdeskField'][_0x7b9a('0x3d')]);_0x33edc6[_0x7b9a('0x28')]=_[_0x7b9a('0x27')](_0x43fad0[_0x7b9a('0x28')]);_0x33edc6[_0x7b9a('0x29')]=_[_0x7b9a('0x3e')](_0x33edc6['model'],_0x33edc6['query']);_0x56e274['attributes']=_[_0x7b9a('0x3e')](_0x33edc6[_0x7b9a('0x26')],qs['fields'](_0x43fad0[_0x7b9a('0x28')][_0x7b9a('0x2a')]));_0x56e274[_0x7b9a('0x2b')]=_0x56e274['attributes'][_0x7b9a('0x2c')]?_0x56e274['attributes']:_0x33edc6[_0x7b9a('0x26')];if(_0x43fad0[_0x7b9a('0x28')][_0x7b9a('0x37')]){_0x56e274[_0x7b9a('0x38')]=[{'all':!![]}];}_0x56e274=_[_0x7b9a('0x33')]({},_0x56e274,_0x43fad0['options']);return db[_0x7b9a('0x22')]['find'](_0x56e274)[_0x7b9a('0x1e')](handleEntityNotFound(_0x41f541,null))['then'](respondWithResult(_0x41f541,null))['catch'](handleError(_0x41f541,null));};exports[_0x7b9a('0x3f')]=function(_0x3727ef,_0x717d08){return db[_0x7b9a('0x22')][_0x7b9a('0x3f')](_0x3727ef[_0x7b9a('0x40')],{})[_0x7b9a('0x1e')](respondWithResult(_0x717d08,0xc9))[_0x7b9a('0x3a')](handleError(_0x717d08,null));};exports[_0x7b9a('0x1d')]=function(_0x5088c7,_0x1d7957){if(_0x5088c7[_0x7b9a('0x40')]['id']){delete _0x5088c7['body']['id'];}return db['FreshdeskField']['find']({'where':{'id':_0x5088c7[_0x7b9a('0x3c')]['id']}})[_0x7b9a('0x1e')](handleEntityNotFound(_0x1d7957,null))[_0x7b9a('0x1e')](saveUpdates(_0x5088c7[_0x7b9a('0x40')],null))['then'](respondWithResult(_0x1d7957,null))[_0x7b9a('0x3a')](handleError(_0x1d7957,null));};exports[_0x7b9a('0x1f')]=function(_0x287dea,_0x33b200){return db[_0x7b9a('0x22')]['find']({'where':{'id':_0x287dea[_0x7b9a('0x3c')]['id']}})['then'](handleEntityNotFound(_0x33b200,null))[_0x7b9a('0x1e')](removeEntity(_0x33b200,null))[_0x7b9a('0x3a')](handleError(_0x33b200,null));};
\ No newline at end of file
index d75a463..7c14481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb16=['define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskField.attributes','exports'];(function(_0x46a2a6,_0x21cc9e){var _0x44531a=function(_0x1619b6){while(--_0x1619b6){_0x46a2a6['push'](_0x46a2a6['shift']());}};_0x44531a(++_0x21cc9e);}(_0xfb16,0xd6));var _0x6fb1=function(_0x5f2c95,_0x43351b){_0x5f2c95=_0x5f2c95-0x0;var _0x498a2e=_0xfb16[_0x5f2c95];return _0x498a2e;};'use strict';var _=require(_0x6fb1('0x0'));var util=require(_0x6fb1('0x1'));var logger=require(_0x6fb1('0x2'))('api');var moment=require(_0x6fb1('0x3'));var BPromise=require(_0x6fb1('0x4'));var rp=require(_0x6fb1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6fb1('0x6'));var config=require(_0x6fb1('0x7'));var attributes=require(_0x6fb1('0x8'));module[_0x6fb1('0x9')]=function(_0x5b6222,_0x3eec1e){return _0x5b6222[_0x6fb1('0xa')](_0x6fb1('0xb'),attributes,{'tableName':_0x6fb1('0xc'),'paranoid':![],'indexes':[{'name':_0x6fb1('0xd'),'fields':[_0x6fb1('0xe'),_0x6fb1('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xffa2=['moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','idField','FieldId','lodash','util'];(function(_0x106b21,_0x22cefc){var _0x5b079f=function(_0x5b99aa){while(--_0x5b99aa){_0x106b21['push'](_0x106b21['shift']());}};_0x5b079f(++_0x22cefc);}(_0xffa2,0x150));var _0x2ffa=function(_0x464ba3,_0x118494){_0x464ba3=_0x464ba3-0x0;var _0xc0cbf2=_0xffa2[_0x464ba3];return _0xc0cbf2;};'use strict';var _=require(_0x2ffa('0x0'));var util=require(_0x2ffa('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2ffa('0x2'));var BPromise=require(_0x2ffa('0x3'));var rp=require(_0x2ffa('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2ffa('0x5'));var config=require(_0x2ffa('0x6'));var attributes=require(_0x2ffa('0x7'));module[_0x2ffa('0x8')]=function(_0x3c092b,_0x595e10){return _0x3c092b[_0x2ffa('0x9')](_0x2ffa('0xa'),attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x2ffa('0xb'),_0x2ffa('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 45116a7..4d854b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb288=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x34c7cb,_0x48bbe1){var _0x1fffaa=function(_0x1295d7){while(--_0x1295d7){_0x34c7cb['push'](_0x34c7cb['shift']());}};_0x1fffaa(++_0x48bbe1);}(_0xb288,0x154));var _0x8b28=function(_0x4dcacf,_0x4ee47f){_0x4dcacf=_0x4dcacf-0x0;var _0x1504da=_0xb288[_0x4dcacf];return _0x1504da;};'use strict';var _=require(_0x8b28('0x0'));var util=require(_0x8b28('0x1'));var moment=require(_0x8b28('0x2'));var BPromise=require(_0x8b28('0x3'));var rs=require(_0x8b28('0x4'));var fs=require('fs');var Redis=require(_0x8b28('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8b28('0x6'));var logger=require(_0x8b28('0x7'))(_0x8b28('0x8'));var config=require(_0x8b28('0x9'));var jayson=require(_0x8b28('0xa'));var client=jayson[_0x8b28('0xb')][_0x8b28('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2f5713,_0x1d4338,_0x235c76){return new BPromise(function(_0x392088,_0x5ba386){return client[_0x8b28('0xd')](_0x2f5713,_0x235c76)[_0x8b28('0xe')](function(_0x5da91f){logger[_0x8b28('0xf')](_0x8b28('0x10'),_0x1d4338,_0x8b28('0x11'));logger[_0x8b28('0x12')](_0x8b28('0x13'),_0x1d4338,'request\x20sent',JSON[_0x8b28('0x14')](_0x5da91f));if(_0x5da91f['error']){if(_0x5da91f[_0x8b28('0x15')][_0x8b28('0x16')]===0x1f4){logger[_0x8b28('0x15')](_0x8b28('0x10'),_0x1d4338,_0x5da91f[_0x8b28('0x15')][_0x8b28('0x17')]);return _0x5ba386(_0x5da91f[_0x8b28('0x15')][_0x8b28('0x17')]);}logger['error'](_0x8b28('0x10'),_0x1d4338,_0x5da91f[_0x8b28('0x15')][_0x8b28('0x17')]);return _0x392088(_0x5da91f[_0x8b28('0x15')][_0x8b28('0x17')]);}else{logger['info'](_0x8b28('0x10'),_0x1d4338,_0x8b28('0x11'));_0x392088(_0x5da91f[_0x8b28('0x18')][_0x8b28('0x17')]);}})[_0x8b28('0x19')](function(_0x351a5b){logger[_0x8b28('0x15')]('FreshdeskField,\x20%s,\x20%s',_0x1d4338,_0x351a5b);_0x5ba386(_0x351a5b);});});}
\ No newline at end of file
+var _0x31fe=['info','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshdeskField,\x20%s,\x20%s','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x1a9bdf,_0x43130a){var _0x61a042=function(_0x13fdf5){while(--_0x13fdf5){_0x1a9bdf['push'](_0x1a9bdf['shift']());}};_0x61a042(++_0x43130a);}(_0x31fe,0xc1));var _0xe31f=function(_0x587625,_0x52912b){_0x587625=_0x587625-0x0;var _0x2b8bdd=_0x31fe[_0x587625];return _0x2b8bdd;};'use strict';var _=require(_0xe31f('0x0'));var util=require(_0xe31f('0x1'));var moment=require('moment');var BPromise=require(_0xe31f('0x2'));var rs=require(_0xe31f('0x3'));var fs=require('fs');var Redis=require(_0xe31f('0x4'));var db=require(_0xe31f('0x5'))['db'];var utils=require(_0xe31f('0x6'));var logger=require(_0xe31f('0x7'))('rpc');var config=require(_0xe31f('0x8'));var jayson=require(_0xe31f('0x9'));var client=jayson[_0xe31f('0xa')][_0xe31f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x387930,_0x4baec4,_0x523df2){return new BPromise(function(_0x1acd93,_0x237d67){return client[_0xe31f('0xc')](_0x387930,_0x523df2)[_0xe31f('0xd')](function(_0x14afb2){logger[_0xe31f('0xe')]('FreshdeskField,\x20%s,\x20%s',_0x4baec4,'request\x20sent');logger['debug'](_0xe31f('0xf'),_0x4baec4,_0xe31f('0x10'),JSON[_0xe31f('0x11')](_0x14afb2));if(_0x14afb2[_0xe31f('0x12')]){if(_0x14afb2[_0xe31f('0x12')][_0xe31f('0x13')]===0x1f4){logger[_0xe31f('0x12')](_0xe31f('0x14'),_0x4baec4,_0x14afb2['error'][_0xe31f('0x15')]);return _0x237d67(_0x14afb2[_0xe31f('0x12')][_0xe31f('0x15')]);}logger['error'](_0xe31f('0x14'),_0x4baec4,_0x14afb2[_0xe31f('0x12')][_0xe31f('0x15')]);return _0x1acd93(_0x14afb2[_0xe31f('0x12')][_0xe31f('0x15')]);}else{logger[_0xe31f('0xe')](_0xe31f('0x14'),_0x4baec4,'request\x20sent');_0x1acd93(_0x14afb2[_0xe31f('0x16')]['message']);}})['catch'](function(_0xd5b257){logger[_0xe31f('0x12')](_0xe31f('0x14'),_0x4baec4,_0xd5b257);_0x237d67(_0xd5b257);});});}
\ No newline at end of file
index 24ab4ca..89e1b26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2547=['addConfiguration','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post','create'];(function(_0x4898a0,_0x2c2a89){var _0x1017b4=function(_0x3a6601){while(--_0x3a6601){_0x4898a0['push'](_0x4898a0['shift']());}};_0x1017b4(++_0x2c2a89);}(_0x2547,0x1cd));var _0x7254=function(_0x4b2dd1,_0x4031a5){_0x4b2dd1=_0x4b2dd1-0x0;var _0x4d16d5=_0x2547[_0x4b2dd1];return _0x4d16d5;};'use strict';var multer=require('multer');var util=require(_0x7254('0x0'));var path=require(_0x7254('0x1'));var timeout=require(_0x7254('0x2'));var express=require(_0x7254('0x3'));var router=express[_0x7254('0x4')]();var fs_extra=require(_0x7254('0x5'));var auth=require(_0x7254('0x6'));var interaction=require(_0x7254('0x7'));var config=require('../../config/environment');var controller=require(_0x7254('0x8'));router[_0x7254('0x9')]('/',auth[_0x7254('0xa')](),controller[_0x7254('0xb')]);router['get'](_0x7254('0xc'),auth[_0x7254('0xa')](),controller[_0x7254('0xd')]);router['get'](_0x7254('0xe'),auth['isAuthenticated'](),controller['getConfigurations']);router['get'](_0x7254('0xf'),auth[_0x7254('0xa')](),controller[_0x7254('0x10')]);router[_0x7254('0x11')]('/',auth[_0x7254('0xa')](),controller[_0x7254('0x12')]);router['post'](_0x7254('0xe'),auth['isAuthenticated'](),controller[_0x7254('0x13')]);router['put'](_0x7254('0xc'),auth[_0x7254('0xa')](),controller[_0x7254('0x14')]);router[_0x7254('0x15')](_0x7254('0xc'),auth[_0x7254('0xa')](),controller[_0x7254('0x16')]);module[_0x7254('0x17')]=router;
\ No newline at end of file
+var _0x7af2=['getConfigurations','/:id/configurations','addConfiguration','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','show'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x7af2,0x119));var _0x27af=function(_0x457765,_0x209aa8){_0x457765=_0x457765-0x0;var _0x1b8561=_0x7af2[_0x457765];return _0x1b8561;};'use strict';var multer=require('multer');var util=require(_0x27af('0x0'));var path=require(_0x27af('0x1'));var timeout=require(_0x27af('0x2'));var express=require(_0x27af('0x3'));var router=express['Router']();var fs_extra=require(_0x27af('0x4'));var auth=require(_0x27af('0x5'));var interaction=require(_0x27af('0x6'));var config=require(_0x27af('0x7'));var controller=require(_0x27af('0x8'));router[_0x27af('0x9')]('/',auth[_0x27af('0xa')](),controller[_0x27af('0xb')]);router[_0x27af('0x9')]('/:id',auth[_0x27af('0xa')](),controller[_0x27af('0xc')]);router[_0x27af('0x9')]('/:id/configurations',auth[_0x27af('0xa')](),controller[_0x27af('0xd')]);router[_0x27af('0x9')]('/:id/fields',auth[_0x27af('0xa')](),controller['getFields']);router['post']('/',auth[_0x27af('0xa')](),controller['create']);router['post'](_0x27af('0xe'),auth['isAuthenticated'](),controller[_0x27af('0xf')]);router['put'](_0x27af('0x10'),auth[_0x27af('0xa')](),controller[_0x27af('0x11')]);router[_0x27af('0x12')](_0x27af('0x10'),auth[_0x27af('0xa')](),controller[_0x27af('0x13')]);module[_0x27af('0x14')]=router;
\ No newline at end of file
index b328d7f..e0bb4a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['username','remoteUri','sequelize','exports','STRING'];(function(_0x47cfa0,_0x176b87){var _0x386b1d=function(_0x5785e5){while(--_0x5785e5){_0x47cfa0['push'](_0x47cfa0['shift']());}};_0x386b1d(++_0x176b87);}(_0x47c5,0x165));var _0x547c=function(_0x4abe25,_0x3d2379){_0x4abe25=_0x4abe25-0x0;var _0x472ebf=_0x47c5[_0x4abe25];return _0x472ebf;};'use strict';var Sequelize=require(_0x547c('0x0'));module[_0x547c('0x1')]={'name':{'type':Sequelize[_0x547c('0x2')]},'description':{'type':Sequelize[_0x547c('0x2')]},'username':{'type':Sequelize[_0x547c('0x2')],'unique':_0x547c('0x3')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x547c('0x2')],'unique':_0x547c('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xd4a2=['STRING','username','sequelize'];(function(_0x2288e0,_0x12fb10){var _0x53a916=function(_0x3f62cf){while(--_0x3f62cf){_0x2288e0['push'](_0x2288e0['shift']());}};_0x53a916(++_0x12fb10);}(_0xd4a2,0x173));var _0x2d4a=function(_0x84a25d,_0x116152){_0x84a25d=_0x84a25d-0x0;var _0x8f7482=_0xd4a2[_0x84a25d];return _0x8f7482;};'use strict';var Sequelize=require(_0x2d4a('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2d4a('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x2d4a('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x2d4a('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x2d4a('0x1')],'allowNull':![]}};
\ No newline at end of file
index 33e387c..803ff70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x401b=['destroy','name','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','catch','show','params','fields','includeAll','find','create','body','getConfigurations','findOne','FreshsalesConfiguration','hasOwnProperty','addConfiguration','Subjects','getSubjects','Descriptions','getDescriptions','channel','FreshsalesField','getFields','username','remoteUri','apiKey','slice','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','error','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','reject','save','update','then'];(function(_0x342e03,_0x33f8c9){var _0x590e92=function(_0x5eda0b){while(--_0x5eda0b){_0x342e03['push'](_0x342e03['shift']());}};_0x590e92(++_0x33f8c9);}(_0x401b,0x17e));var _0xb401=function(_0x50d281,_0x122917){_0x50d281=_0x50d281-0x0;var _0x1b4d88=_0x401b[_0x50d281];return _0x1b4d88;};'use strict';var emlformat=require(_0xb401('0x0'));var rimraf=require(_0xb401('0x1'));var zipdir=require(_0xb401('0x2'));var jsonpatch=require(_0xb401('0x3'));var rp=require(_0xb401('0x4'));var moment=require(_0xb401('0x5'));var BPromise=require(_0xb401('0x6'));var Mustache=require(_0xb401('0x7'));var util=require(_0xb401('0x8'));var path=require(_0xb401('0x9'));var sox=require(_0xb401('0xa'));var csv=require('to-csv');var ejs=require(_0xb401('0xb'));var fs=require('fs');var fs_extra=require(_0xb401('0xc'));var _=require('lodash');var squel=require(_0xb401('0xd'));var crypto=require(_0xb401('0xe'));var jsforce=require(_0xb401('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xb401('0x10'));var querystring=require(_0xb401('0x11'));var Papa=require(_0xb401('0x12'));var Redis=require('ioredis');var authService=require(_0xb401('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xb401('0x14'));var hardwareService=require(_0xb401('0x15'));var logger=require(_0xb401('0x16'))(_0xb401('0x17'));var utils=require(_0xb401('0x18'));var config=require(_0xb401('0x19'));var licenseUtil=require(_0xb401('0x1a'));var db=require(_0xb401('0x1b'))['db'];var integrations=require(_0xb401('0x1c'));function respondWithStatusCode(_0x294233,_0x3e98e0){_0x3e98e0=_0x3e98e0||0xcc;return function(_0x1614d7){if(_0x1614d7){return _0x294233[_0xb401('0x1d')](_0x3e98e0);}return _0x294233[_0xb401('0x1e')](_0x3e98e0)[_0xb401('0x1f')]();};}function respondWithResult(_0x479a6c,_0xa876de){_0xa876de=_0xa876de||0xc8;return function(_0x4e0265){if(_0x4e0265){return _0x479a6c[_0xb401('0x1e')](_0xa876de)['json'](_0x4e0265);}};}function respondWithFilteredResult(_0x3ae455,_0x324a03){return function(_0x5c0081){if(_0x5c0081){var _0x1cbce3=typeof _0x324a03[_0xb401('0x20')]===_0xb401('0x21')&&typeof _0x324a03['limit']===_0xb401('0x21');var _0x4dd069=_0x5c0081['count'];var _0x15a4d0=_0x1cbce3?0x0:_0x324a03[_0xb401('0x20')];var _0x105e4e=_0x1cbce3?_0x5c0081[_0xb401('0x22')]:_0x324a03[_0xb401('0x20')]+_0x324a03[_0xb401('0x23')];var _0x3de466;if(_0x105e4e>=_0x4dd069){_0x105e4e=_0x4dd069;_0x3de466=0xc8;}else{_0x3de466=0xce;}_0x3ae455['status'](_0x3de466);return _0x3ae455['set'](_0xb401('0x24'),_0x15a4d0+'-'+_0x105e4e+'/'+_0x4dd069)[_0xb401('0x25')](_0x5c0081);}return null;};}function patchUpdates(_0x30267b){return function(_0xad9301){try{jsonpatch['apply'](_0xad9301,_0x30267b,!![]);}catch(_0x5d538e){return BPromise[_0xb401('0x26')](_0x5d538e);}return _0xad9301[_0xb401('0x27')]();};}function saveUpdates(_0xc50790,_0x39f3e1){return function(_0x13dfa6){if(_0x13dfa6){return _0x13dfa6[_0xb401('0x28')](_0xc50790)[_0xb401('0x29')](function(_0x5502d4){return _0x5502d4;});}return null;};}function removeEntity(_0x1f38be,_0x3bcd89){return function(_0x4dfa64){if(_0x4dfa64){return _0x4dfa64[_0xb401('0x2a')]()['then'](function(){_0x1f38be[_0xb401('0x1e')](0xcc)[_0xb401('0x1f')]();});}};}function handleEntityNotFound(_0x307619,_0x380000){return function(_0x470d05){if(!_0x470d05){_0x307619['sendStatus'](0x194);}return _0x470d05;};}function handleError(_0x3d5d44,_0xe120d3){_0xe120d3=_0xe120d3||0x1f4;return function(_0x214498){logger['error'](_0x214498['stack']);if(_0x214498[_0xb401('0x2b')]){delete _0x214498[_0xb401('0x2b')];}_0x3d5d44[_0xb401('0x1e')](_0xe120d3)['send'](_0x214498);};}exports[_0xb401('0x2c')]=function(_0x20d048,_0x89ce57){var _0x38fe2b={},_0x2f0c4b={},_0x3c0921={'count':0x0,'rows':[]};var _0x5599f2=_[_0xb401('0x2d')](db[_0xb401('0x2e')][_0xb401('0x2f')],function(_0x7c0257){return{'name':_0x7c0257[_0xb401('0x30')],'type':_0x7c0257[_0xb401('0x31')][_0xb401('0x32')]};});_0x2f0c4b[_0xb401('0x33')]=_['map'](_0x5599f2,_0xb401('0x2b'));_0x2f0c4b[_0xb401('0x34')]=_[_0xb401('0x35')](_0x20d048['query']);_0x2f0c4b[_0xb401('0x36')]=_[_0xb401('0x37')](_0x2f0c4b[_0xb401('0x33')],_0x2f0c4b[_0xb401('0x34')]);_0x38fe2b[_0xb401('0x38')]=_[_0xb401('0x37')](_0x2f0c4b[_0xb401('0x33')],qs['fields'](_0x20d048[_0xb401('0x34')]['fields']));_0x38fe2b[_0xb401('0x38')]=_0x38fe2b[_0xb401('0x38')][_0xb401('0x39')]?_0x38fe2b[_0xb401('0x38')]:_0x2f0c4b[_0xb401('0x33')];if(!_0x20d048[_0xb401('0x34')]['hasOwnProperty'](_0xb401('0x3a'))){_0x38fe2b[_0xb401('0x23')]=qs[_0xb401('0x23')](_0x20d048['query'][_0xb401('0x23')]);_0x38fe2b['offset']=qs[_0xb401('0x20')](_0x20d048[_0xb401('0x34')]['offset']);}_0x38fe2b[_0xb401('0x3b')]=qs['sort'](_0x20d048[_0xb401('0x34')][_0xb401('0x3c')]);_0x38fe2b[_0xb401('0x3d')]=qs['filters'](_[_0xb401('0x3e')](_0x20d048[_0xb401('0x34')],_0x2f0c4b[_0xb401('0x36')]),_0x5599f2);if(_0x20d048[_0xb401('0x34')][_0xb401('0x3f')]){_0x38fe2b[_0xb401('0x3d')]=_[_0xb401('0x40')](_0x38fe2b['where'],{'$or':_['map'](_0x5599f2,function(_0x318b4c){if(_0x318b4c[_0xb401('0x31')]!==_0xb401('0x41')){var _0x5ecd40={};_0x5ecd40[_0x318b4c[_0xb401('0x2b')]]={'$like':'%'+_0x20d048[_0xb401('0x34')][_0xb401('0x3f')]+'%'};return _0x5ecd40;}})});}_0x38fe2b=_[_0xb401('0x40')]({},_0x38fe2b,_0x20d048[_0xb401('0x42')]);var _0x53447e={'where':_0x38fe2b[_0xb401('0x3d')]};return db[_0xb401('0x2e')][_0xb401('0x22')](_0x53447e)['then'](function(_0x587bb6){_0x3c0921[_0xb401('0x22')]=_0x587bb6;if(_0x20d048['query']['includeAll']){_0x38fe2b[_0xb401('0x43')]=[{'all':!![]}];}return db[_0xb401('0x2e')]['findAll'](_0x38fe2b);})[_0xb401('0x29')](function(_0x317e8c){_0x3c0921['rows']=_0x317e8c;return _0x3c0921;})[_0xb401('0x29')](respondWithFilteredResult(_0x89ce57,_0x38fe2b))[_0xb401('0x44')](handleError(_0x89ce57,null));};exports[_0xb401('0x45')]=function(_0x2e71f2,_0x41b828){var _0x59dd25={'raw':![],'where':{'id':_0x2e71f2[_0xb401('0x46')]['id']}},_0x2d72c6={};_0x2d72c6[_0xb401('0x33')]=_[_0xb401('0x35')](db[_0xb401('0x2e')][_0xb401('0x2f')]);_0x2d72c6['query']=_[_0xb401('0x35')](_0x2e71f2[_0xb401('0x34')]);_0x2d72c6[_0xb401('0x36')]=_[_0xb401('0x37')](_0x2d72c6[_0xb401('0x33')],_0x2d72c6[_0xb401('0x34')]);_0x59dd25[_0xb401('0x38')]=_[_0xb401('0x37')](_0x2d72c6[_0xb401('0x33')],qs[_0xb401('0x47')](_0x2e71f2[_0xb401('0x34')]['fields']));_0x59dd25['attributes']=_0x59dd25[_0xb401('0x38')][_0xb401('0x39')]?_0x59dd25[_0xb401('0x38')]:_0x2d72c6[_0xb401('0x33')];if(_0x2e71f2['query'][_0xb401('0x48')]){_0x59dd25[_0xb401('0x43')]=[{'all':!![]}];}_0x59dd25=_['merge']({},_0x59dd25,_0x2e71f2[_0xb401('0x42')]);return db[_0xb401('0x2e')][_0xb401('0x49')](_0x59dd25)[_0xb401('0x29')](handleEntityNotFound(_0x41b828,null))[_0xb401('0x29')](respondWithResult(_0x41b828,null))['catch'](handleError(_0x41b828,null));};exports[_0xb401('0x4a')]=function(_0x1c3fb0,_0x2e23f6){return db['FreshsalesAccount'][_0xb401('0x4a')](_0x1c3fb0[_0xb401('0x4b')],{})['then'](respondWithResult(_0x2e23f6,0xc9))[_0xb401('0x44')](handleError(_0x2e23f6,null));};exports[_0xb401('0x28')]=function(_0x452adb,_0x2a8b57){if(_0x452adb[_0xb401('0x4b')]['id']){delete _0x452adb[_0xb401('0x4b')]['id'];}return db[_0xb401('0x2e')][_0xb401('0x49')]({'where':{'id':_0x452adb['params']['id']}})[_0xb401('0x29')](handleEntityNotFound(_0x2a8b57,null))[_0xb401('0x29')](saveUpdates(_0x452adb['body'],null))['then'](respondWithResult(_0x2a8b57,null))[_0xb401('0x44')](handleError(_0x2a8b57,null));};exports[_0xb401('0x2a')]=function(_0x485f5c,_0x29d845){return db[_0xb401('0x2e')][_0xb401('0x49')]({'where':{'id':_0x485f5c[_0xb401('0x46')]['id']}})['then'](handleEntityNotFound(_0x29d845,null))[_0xb401('0x29')](removeEntity(_0x29d845,null))[_0xb401('0x44')](handleError(_0x29d845,null));};exports[_0xb401('0x4c')]=function(_0x271647,_0x18d8e9,_0x4109a6){var _0x7f0a0e={};var _0x22d2dd={};var _0x4c656e;var _0x10a095;return db['FreshsalesAccount'][_0xb401('0x4d')]({'where':{'id':_0x271647[_0xb401('0x46')]['id']}})[_0xb401('0x29')](handleEntityNotFound(_0x18d8e9,null))[_0xb401('0x29')](function(_0x5a3cf4){if(_0x5a3cf4){_0x4c656e=_0x5a3cf4;_0x22d2dd[_0xb401('0x33')]=_[_0xb401('0x35')](db[_0xb401('0x4e')][_0xb401('0x2f')]);_0x22d2dd[_0xb401('0x34')]=_['keys'](_0x271647[_0xb401('0x34')]);_0x22d2dd[_0xb401('0x36')]=_['intersection'](_0x22d2dd[_0xb401('0x33')],_0x22d2dd[_0xb401('0x34')]);_0x7f0a0e[_0xb401('0x38')]=_['intersection'](_0x22d2dd[_0xb401('0x33')],qs[_0xb401('0x47')](_0x271647[_0xb401('0x34')][_0xb401('0x47')]));_0x7f0a0e[_0xb401('0x38')]=_0x7f0a0e[_0xb401('0x38')]['length']?_0x7f0a0e[_0xb401('0x38')]:_0x22d2dd[_0xb401('0x33')];_0x7f0a0e[_0xb401('0x3b')]=qs[_0xb401('0x3c')](_0x271647[_0xb401('0x34')][_0xb401('0x3c')]);_0x7f0a0e[_0xb401('0x3d')]=qs[_0xb401('0x36')](_[_0xb401('0x3e')](_0x271647[_0xb401('0x34')],_0x22d2dd[_0xb401('0x36')]));if(_0x271647[_0xb401('0x34')]['filter']){_0x7f0a0e[_0xb401('0x3d')]=_['merge'](_0x7f0a0e['where'],{'$or':_[_0xb401('0x2d')](_0x7f0a0e[_0xb401('0x38')],function(_0x58d211){var _0x2c152d={};_0x2c152d[_0x58d211]={'$like':'%'+_0x271647[_0xb401('0x34')][_0xb401('0x3f')]+'%'};return _0x2c152d;})});}_0x7f0a0e=_[_0xb401('0x40')]({},_0x7f0a0e,_0x271647[_0xb401('0x42')]);return _0x4c656e[_0xb401('0x4c')](_0x7f0a0e);}})[_0xb401('0x29')](function(_0x16e72){if(_0x16e72){_0x10a095=_0x16e72['length'];if(!_0x271647['query'][_0xb401('0x4f')](_0xb401('0x3a'))){_0x7f0a0e[_0xb401('0x23')]=qs[_0xb401('0x23')](_0x271647[_0xb401('0x34')][_0xb401('0x23')]);_0x7f0a0e[_0xb401('0x20')]=qs[_0xb401('0x20')](_0x271647[_0xb401('0x34')][_0xb401('0x20')]);}return _0x4c656e[_0xb401('0x4c')](_0x7f0a0e);}})[_0xb401('0x29')](function(_0x1b07b9){if(_0x1b07b9){return _0x1b07b9?{'count':_0x10a095,'rows':_0x1b07b9}:null;}})[_0xb401('0x29')](respondWithResult(_0x18d8e9,null))[_0xb401('0x44')](handleError(_0x18d8e9,null));};exports[_0xb401('0x50')]=function(_0x430d2b,_0x3e031c,_0x4f3549){if(_0x430d2b[_0xb401('0x4b')]['id']){delete _0x430d2b['body']['id'];}return db[_0xb401('0x2e')][_0xb401('0x4d')]({'where':{'id':_0x430d2b[_0xb401('0x46')]['id']}})[_0xb401('0x29')](handleEntityNotFound(_0x3e031c,null))[_0xb401('0x29')](function(_0x1a1d8e){if(_0x1a1d8e){_0x430d2b[_0xb401('0x4b')]['AccountId']=_0x1a1d8e['id'];_0x430d2b[_0xb401('0x4b')][_0xb401('0x51')]=integrations[_0xb401('0x52')](_0x430d2b[_0xb401('0x4b')]['channel'],_0x430d2b[_0xb401('0x4b')]['type']);_0x430d2b[_0xb401('0x4b')][_0xb401('0x53')]=integrations[_0xb401('0x54')](_0x430d2b[_0xb401('0x4b')][_0xb401('0x55')],_0x430d2b[_0xb401('0x4b')][_0xb401('0x31')]);return db[_0xb401('0x4e')]['create'](_0x430d2b[_0xb401('0x4b')],{'include':[{'model':db[_0xb401('0x56')],'as':'Subjects'},{'model':db[_0xb401('0x56')],'as':_0xb401('0x53')}]});}return null;})[_0xb401('0x29')](respondWithResult(_0x3e031c,null))[_0xb401('0x44')](handleError(_0x3e031c,null));};exports[_0xb401('0x57')]=function(_0x177cf9,_0x483206,_0x11911a){var _0x48e08='';var _0x31748e='';return db[_0xb401('0x2e')]['findOne']({'where':{'id':_0x177cf9['params']['id']},'attributes':['id',_0xb401('0x58'),_0xb401('0x59'),_0xb401('0x5a')]})['then'](handleEntityNotFound(_0x483206,null))[_0xb401('0x29')](function(_0xbdef0c){if(_0xbdef0c){_0x31748e=_0xbdef0c[_0xb401('0x58')];_0x48e08=_0xbdef0c['remoteUri'];var _0x4835c1=_0xbdef0c[_0xb401('0x59')][_0xb401('0x5b')](-0x1);if(_0x4835c1==='/'){_0x48e08=_0x48e08['substring'](0x0,_0x48e08['lastIndexOf'](_0x4835c1));}return rp({'method':_0xb401('0x5c'),'uri':util[_0xb401('0x5d')](_0xb401('0x5e'),_0x48e08,_0xb401('0x5f')),'headers':{'Authorization':_0xb401('0x60')+_0xbdef0c[_0xb401('0x5a')]},'json':!![]});}})['then'](function(_0xc97643){if(_0xc97643){var _0x41cfaa=_0xc97643[_0xb401('0x61')];var _0x1c247d=![];var _0x470a92=null;for(_0x470a92=0x0;_0x470a92<_0x41cfaa['length'];_0x470a92++){if(_0x41cfaa[_0x470a92][_0xb401('0x62')]===_0x31748e){_0x1c247d=!![];}}if(_0x1c247d){return!![];}else{throw new Error({'statusCode':0x194,'message':_0xb401('0x63')});}}})[_0xb401('0x29')](respondWithResult(_0x483206,null))['catch'](function(_0x1b67ac){var _0x52e992=_0x177cf9[_0xb401('0x34')][_0xb401('0x64')]?0x1f4:_0x1b67ac['statusCode']||0x1f4;logger[_0xb401('0x65')](_0xb401('0x66'),_0xb401('0x57'),_0x52e992,JSON[_0xb401('0x67')](_0x1b67ac));delete _0x1b67ac[_0xb401('0x2b')];if(_0x52e992===0x191){_0x52e992=0x190;}_0x483206['status'](_0x52e992)[_0xb401('0x68')](_0x177cf9[_0xb401('0x34')][_0xb401('0x64')]?{'message':_0xb401('0x69'),'statusCode':_0x1b67ac['statusCode']}:_0x1b67ac);});};
\ No newline at end of file
+var _0xbba9=['status','json','limit','undefined','count','offset','set','apply','save','update','then','error','stack','name','index','map','FreshsalesAccount','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','destroy','FreshsalesConfiguration','addConfiguration','Subjects','getSubjects','Descriptions','channel','FreshsalesField','findOne','username','remoteUri','apiKey','substring','lastIndexOf','GET','format','/api/selector/owners','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbba9,0xa6));var _0x9bba=function(_0x4c319c,_0x1b9e47){_0x4c319c=_0x4c319c-0x0;var _0x2d76a2=_0xbba9[_0x4c319c];return _0x2d76a2;};'use strict';var emlformat=require(_0x9bba('0x0'));var rimraf=require(_0x9bba('0x1'));var zipdir=require(_0x9bba('0x2'));var jsonpatch=require(_0x9bba('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9bba('0x4'));var util=require(_0x9bba('0x5'));var path=require(_0x9bba('0x6'));var sox=require('sox');var csv=require(_0x9bba('0x7'));var ejs=require(_0x9bba('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9bba('0x9'));var squel=require(_0x9bba('0xa'));var crypto=require('crypto');var jsforce=require(_0x9bba('0xb'));var deskjs=require(_0x9bba('0xc'));var toCsv=require(_0x9bba('0x7'));var querystring=require(_0x9bba('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9bba('0xe'));var as=require(_0x9bba('0xf'));var hardwareService=require(_0x9bba('0x10'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x9bba('0x11'));var db=require(_0x9bba('0x12'))['db'];var integrations=require(_0x9bba('0x13'));function respondWithStatusCode(_0x92cbcc,_0x124338){_0x124338=_0x124338||0xcc;return function(_0xc228e7){if(_0xc228e7){return _0x92cbcc[_0x9bba('0x14')](_0x124338);}return _0x92cbcc['status'](_0x124338)[_0x9bba('0x15')]();};}function respondWithResult(_0x56ed42,_0x4aee0e){_0x4aee0e=_0x4aee0e||0xc8;return function(_0x56a5a7){if(_0x56a5a7){return _0x56ed42[_0x9bba('0x16')](_0x4aee0e)[_0x9bba('0x17')](_0x56a5a7);}};}function respondWithFilteredResult(_0x4b1deb,_0x3dbecd){return function(_0x38c794){if(_0x38c794){var _0x58f559=typeof _0x3dbecd['offset']==='undefined'&&typeof _0x3dbecd[_0x9bba('0x18')]===_0x9bba('0x19');var _0x58297f=_0x38c794[_0x9bba('0x1a')];var _0x1185cc=_0x58f559?0x0:_0x3dbecd[_0x9bba('0x1b')];var _0x2ef062=_0x58f559?_0x38c794[_0x9bba('0x1a')]:_0x3dbecd[_0x9bba('0x1b')]+_0x3dbecd[_0x9bba('0x18')];var _0x163aa4;if(_0x2ef062>=_0x58297f){_0x2ef062=_0x58297f;_0x163aa4=0xc8;}else{_0x163aa4=0xce;}_0x4b1deb[_0x9bba('0x16')](_0x163aa4);return _0x4b1deb[_0x9bba('0x1c')]('Content-Range',_0x1185cc+'-'+_0x2ef062+'/'+_0x58297f)['json'](_0x38c794);}return null;};}function patchUpdates(_0x3cc723){return function(_0x537584){try{jsonpatch[_0x9bba('0x1d')](_0x537584,_0x3cc723,!![]);}catch(_0x47a291){return BPromise['reject'](_0x47a291);}return _0x537584[_0x9bba('0x1e')]();};}function saveUpdates(_0x54ff00,_0x2ee6ba){return function(_0x4da775){if(_0x4da775){return _0x4da775[_0x9bba('0x1f')](_0x54ff00)[_0x9bba('0x20')](function(_0x29a1de){return _0x29a1de;});}return null;};}function removeEntity(_0x10790f,_0x234eae){return function(_0x1b40cf){if(_0x1b40cf){return _0x1b40cf['destroy']()['then'](function(){_0x10790f[_0x9bba('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3495dd,_0x2a563f){return function(_0x5b8c79){if(!_0x5b8c79){_0x3495dd[_0x9bba('0x14')](0x194);}return _0x5b8c79;};}function handleError(_0x4ef1f7,_0x4b1bbd){_0x4b1bbd=_0x4b1bbd||0x1f4;return function(_0x4857b5){logger[_0x9bba('0x21')](_0x4857b5[_0x9bba('0x22')]);if(_0x4857b5['name']){delete _0x4857b5[_0x9bba('0x23')];}_0x4ef1f7[_0x9bba('0x16')](_0x4b1bbd)['send'](_0x4857b5);};}exports[_0x9bba('0x24')]=function(_0x6c5dc4,_0x1efd9c){var _0x5ddae2={},_0x21de55={},_0x533ae4={'count':0x0,'rows':[]};var _0x50dc28=_[_0x9bba('0x25')](db[_0x9bba('0x26')][_0x9bba('0x27')],function(_0x1d2012){return{'name':_0x1d2012[_0x9bba('0x28')],'type':_0x1d2012['type'][_0x9bba('0x29')]};});_0x21de55[_0x9bba('0x2a')]=_['map'](_0x50dc28,_0x9bba('0x23'));_0x21de55[_0x9bba('0x2b')]=_['keys'](_0x6c5dc4[_0x9bba('0x2b')]);_0x21de55[_0x9bba('0x2c')]=_[_0x9bba('0x2d')](_0x21de55[_0x9bba('0x2a')],_0x21de55[_0x9bba('0x2b')]);_0x5ddae2['attributes']=_[_0x9bba('0x2d')](_0x21de55[_0x9bba('0x2a')],qs[_0x9bba('0x2e')](_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x2e')]));_0x5ddae2[_0x9bba('0x2f')]=_0x5ddae2[_0x9bba('0x2f')][_0x9bba('0x30')]?_0x5ddae2[_0x9bba('0x2f')]:_0x21de55['model'];if(!_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x31')](_0x9bba('0x32'))){_0x5ddae2[_0x9bba('0x18')]=qs[_0x9bba('0x18')](_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x18')]);_0x5ddae2[_0x9bba('0x1b')]=qs[_0x9bba('0x1b')](_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x1b')]);}_0x5ddae2[_0x9bba('0x33')]=qs[_0x9bba('0x34')](_0x6c5dc4['query'][_0x9bba('0x34')]);_0x5ddae2[_0x9bba('0x35')]=qs[_0x9bba('0x2c')](_[_0x9bba('0x36')](_0x6c5dc4[_0x9bba('0x2b')],_0x21de55[_0x9bba('0x2c')]),_0x50dc28);if(_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x37')]){_0x5ddae2[_0x9bba('0x35')]=_[_0x9bba('0x38')](_0x5ddae2[_0x9bba('0x35')],{'$or':_['map'](_0x50dc28,function(_0x51a023){if(_0x51a023[_0x9bba('0x39')]!==_0x9bba('0x3a')){var _0x18b88f={};_0x18b88f[_0x51a023['name']]={'$like':'%'+_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x37')]+'%'};return _0x18b88f;}})});}_0x5ddae2=_['merge']({},_0x5ddae2,_0x6c5dc4[_0x9bba('0x3b')]);var _0x201fd3={'where':_0x5ddae2[_0x9bba('0x35')]};return db['FreshsalesAccount'][_0x9bba('0x1a')](_0x201fd3)[_0x9bba('0x20')](function(_0x4240d0){_0x533ae4[_0x9bba('0x1a')]=_0x4240d0;if(_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x3c')]){_0x5ddae2[_0x9bba('0x3d')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0x9bba('0x3e')](_0x5ddae2);})['then'](function(_0x2f1146){_0x533ae4[_0x9bba('0x3f')]=_0x2f1146;return _0x533ae4;})['then'](respondWithFilteredResult(_0x1efd9c,_0x5ddae2))[_0x9bba('0x40')](handleError(_0x1efd9c,null));};exports[_0x9bba('0x41')]=function(_0x444c96,_0x283bba){var _0x43b163={'raw':![],'where':{'id':_0x444c96[_0x9bba('0x42')]['id']}},_0x34ae6d={};_0x34ae6d['model']=_[_0x9bba('0x43')](db[_0x9bba('0x26')][_0x9bba('0x27')]);_0x34ae6d['query']=_[_0x9bba('0x43')](_0x444c96[_0x9bba('0x2b')]);_0x34ae6d['filters']=_[_0x9bba('0x2d')](_0x34ae6d[_0x9bba('0x2a')],_0x34ae6d[_0x9bba('0x2b')]);_0x43b163[_0x9bba('0x2f')]=_['intersection'](_0x34ae6d[_0x9bba('0x2a')],qs[_0x9bba('0x2e')](_0x444c96[_0x9bba('0x2b')][_0x9bba('0x2e')]));_0x43b163[_0x9bba('0x2f')]=_0x43b163[_0x9bba('0x2f')][_0x9bba('0x30')]?_0x43b163['attributes']:_0x34ae6d[_0x9bba('0x2a')];if(_0x444c96[_0x9bba('0x2b')][_0x9bba('0x3c')]){_0x43b163[_0x9bba('0x3d')]=[{'all':!![]}];}_0x43b163=_[_0x9bba('0x38')]({},_0x43b163,_0x444c96[_0x9bba('0x3b')]);return db['FreshsalesAccount'][_0x9bba('0x44')](_0x43b163)['then'](handleEntityNotFound(_0x283bba,null))[_0x9bba('0x20')](respondWithResult(_0x283bba,null))[_0x9bba('0x40')](handleError(_0x283bba,null));};exports[_0x9bba('0x45')]=function(_0x305a38,_0x1a3d14){return db[_0x9bba('0x26')][_0x9bba('0x45')](_0x305a38[_0x9bba('0x46')],{})[_0x9bba('0x20')](respondWithResult(_0x1a3d14,0xc9))[_0x9bba('0x40')](handleError(_0x1a3d14,null));};exports[_0x9bba('0x1f')]=function(_0x350c93,_0x29d694){if(_0x350c93[_0x9bba('0x46')]['id']){delete _0x350c93[_0x9bba('0x46')]['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0x350c93[_0x9bba('0x42')]['id']}})[_0x9bba('0x20')](handleEntityNotFound(_0x29d694,null))['then'](saveUpdates(_0x350c93[_0x9bba('0x46')],null))[_0x9bba('0x20')](respondWithResult(_0x29d694,null))[_0x9bba('0x40')](handleError(_0x29d694,null));};exports[_0x9bba('0x47')]=function(_0x4d98fd,_0x108f6a){return db[_0x9bba('0x26')][_0x9bba('0x44')]({'where':{'id':_0x4d98fd[_0x9bba('0x42')]['id']}})[_0x9bba('0x20')](handleEntityNotFound(_0x108f6a,null))['then'](removeEntity(_0x108f6a,null))[_0x9bba('0x40')](handleError(_0x108f6a,null));};exports['getConfigurations']=function(_0x4d2ccd,_0x30a94a,_0x461c90){var _0x242945={};var _0x355b0f={};var _0x414d94;var _0x5b3415;return db[_0x9bba('0x26')]['findOne']({'where':{'id':_0x4d2ccd[_0x9bba('0x42')]['id']}})['then'](handleEntityNotFound(_0x30a94a,null))[_0x9bba('0x20')](function(_0x4f50b2){if(_0x4f50b2){_0x414d94=_0x4f50b2;_0x355b0f[_0x9bba('0x2a')]=_[_0x9bba('0x43')](db[_0x9bba('0x48')][_0x9bba('0x27')]);_0x355b0f[_0x9bba('0x2b')]=_[_0x9bba('0x43')](_0x4d2ccd['query']);_0x355b0f[_0x9bba('0x2c')]=_[_0x9bba('0x2d')](_0x355b0f[_0x9bba('0x2a')],_0x355b0f[_0x9bba('0x2b')]);_0x242945[_0x9bba('0x2f')]=_[_0x9bba('0x2d')](_0x355b0f[_0x9bba('0x2a')],qs[_0x9bba('0x2e')](_0x4d2ccd[_0x9bba('0x2b')]['fields']));_0x242945[_0x9bba('0x2f')]=_0x242945['attributes'][_0x9bba('0x30')]?_0x242945[_0x9bba('0x2f')]:_0x355b0f[_0x9bba('0x2a')];_0x242945[_0x9bba('0x33')]=qs[_0x9bba('0x34')](_0x4d2ccd[_0x9bba('0x2b')][_0x9bba('0x34')]);_0x242945['where']=qs['filters'](_[_0x9bba('0x36')](_0x4d2ccd[_0x9bba('0x2b')],_0x355b0f[_0x9bba('0x2c')]));if(_0x4d2ccd['query']['filter']){_0x242945[_0x9bba('0x35')]=_[_0x9bba('0x38')](_0x242945['where'],{'$or':_['map'](_0x242945[_0x9bba('0x2f')],function(_0x91029d){var _0x1a24ad={};_0x1a24ad[_0x91029d]={'$like':'%'+_0x4d2ccd[_0x9bba('0x2b')][_0x9bba('0x37')]+'%'};return _0x1a24ad;})});}_0x242945=_[_0x9bba('0x38')]({},_0x242945,_0x4d2ccd[_0x9bba('0x3b')]);return _0x414d94['getConfigurations'](_0x242945);}})[_0x9bba('0x20')](function(_0x47bfbf){if(_0x47bfbf){_0x5b3415=_0x47bfbf[_0x9bba('0x30')];if(!_0x4d2ccd[_0x9bba('0x2b')][_0x9bba('0x31')](_0x9bba('0x32'))){_0x242945[_0x9bba('0x18')]=qs[_0x9bba('0x18')](_0x4d2ccd[_0x9bba('0x2b')]['limit']);_0x242945[_0x9bba('0x1b')]=qs['offset'](_0x4d2ccd['query'][_0x9bba('0x1b')]);}return _0x414d94['getConfigurations'](_0x242945);}})[_0x9bba('0x20')](function(_0x36ad23){if(_0x36ad23){return _0x36ad23?{'count':_0x5b3415,'rows':_0x36ad23}:null;}})[_0x9bba('0x20')](respondWithResult(_0x30a94a,null))[_0x9bba('0x40')](handleError(_0x30a94a,null));};exports[_0x9bba('0x49')]=function(_0x56c1f5,_0x2c3adf,_0x1550d5){if(_0x56c1f5[_0x9bba('0x46')]['id']){delete _0x56c1f5[_0x9bba('0x46')]['id'];}return db['FreshsalesAccount']['findOne']({'where':{'id':_0x56c1f5['params']['id']}})[_0x9bba('0x20')](handleEntityNotFound(_0x2c3adf,null))[_0x9bba('0x20')](function(_0xd1e6eb){if(_0xd1e6eb){_0x56c1f5[_0x9bba('0x46')]['AccountId']=_0xd1e6eb['id'];_0x56c1f5[_0x9bba('0x46')][_0x9bba('0x4a')]=integrations[_0x9bba('0x4b')](_0x56c1f5['body']['channel'],_0x56c1f5[_0x9bba('0x46')][_0x9bba('0x39')]);_0x56c1f5['body'][_0x9bba('0x4c')]=integrations['getDescriptions'](_0x56c1f5[_0x9bba('0x46')][_0x9bba('0x4d')],_0x56c1f5['body']['type']);return db[_0x9bba('0x48')]['create'](_0x56c1f5[_0x9bba('0x46')],{'include':[{'model':db[_0x9bba('0x4e')],'as':_0x9bba('0x4a')},{'model':db[_0x9bba('0x4e')],'as':_0x9bba('0x4c')}]});}return null;})['then'](respondWithResult(_0x2c3adf,null))[_0x9bba('0x40')](handleError(_0x2c3adf,null));};exports['getFields']=function(_0x489d8e,_0x320dce,_0x39b5e2){var _0x1440f2='';var _0x188d9b='';return db['FreshsalesAccount'][_0x9bba('0x4f')]({'where':{'id':_0x489d8e[_0x9bba('0x42')]['id']},'attributes':['id',_0x9bba('0x50'),_0x9bba('0x51'),_0x9bba('0x52')]})['then'](handleEntityNotFound(_0x320dce,null))[_0x9bba('0x20')](function(_0x22f559){if(_0x22f559){_0x188d9b=_0x22f559[_0x9bba('0x50')];_0x1440f2=_0x22f559[_0x9bba('0x51')];var _0x58a12c=_0x22f559['remoteUri']['slice'](-0x1);if(_0x58a12c==='/'){_0x1440f2=_0x1440f2[_0x9bba('0x53')](0x0,_0x1440f2[_0x9bba('0x54')](_0x58a12c));}return rp({'method':_0x9bba('0x55'),'uri':util[_0x9bba('0x56')]('%s%s',_0x1440f2,_0x9bba('0x57')),'headers':{'Authorization':'Token\x20token='+_0x22f559[_0x9bba('0x52')]},'json':!![]});}})[_0x9bba('0x20')](function(_0x13f488){if(_0x13f488){var _0x1e243b=_0x13f488['users'];var _0x1fb766=![];var _0x283ef6=null;for(_0x283ef6=0x0;_0x283ef6<_0x1e243b[_0x9bba('0x30')];_0x283ef6++){if(_0x1e243b[_0x283ef6]['email']===_0x188d9b){_0x1fb766=!![];}}if(_0x1fb766){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x9bba('0x58')});}}})['then'](respondWithResult(_0x320dce,null))[_0x9bba('0x40')](function(_0x592ef0){var _0x2e7f4d=_0x489d8e[_0x9bba('0x2b')][_0x9bba('0x59')]?0x1f4:_0x592ef0[_0x9bba('0x5a')]||0x1f4;logger[_0x9bba('0x21')]('getFields,\x20%s,\x20%s,\x20%s',_0x9bba('0x5b'),_0x2e7f4d,JSON[_0x9bba('0x5c')](_0x592ef0));delete _0x592ef0[_0x9bba('0x23')];if(_0x2e7f4d===0x191){_0x2e7f4d=0x190;}_0x320dce['status'](_0x2e7f4d)['send'](_0x489d8e['query'][_0x9bba('0x59')]?{'message':_0x9bba('0x5d'),'statusCode':_0x592ef0['statusCode']}:_0x592ef0);});};
\ No newline at end of file
index ccb61ee..2c34213 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323f=['exports','define','FreshsalesAccount','int_freshsales_accounts','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration'];(function(_0x16994d,_0x211f64){var _0x219195=function(_0x1df596){while(--_0x1df596){_0x16994d['push'](_0x16994d['shift']());}};_0x219195(++_0x211f64);}(_0x323f,0x1ee));var _0xf323=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x323f[_0x2d7f0e];return _0x110b07;};'use strict';var _=require('lodash');var util=require(_0xf323('0x0'));var logger=require('../../config/logger')(_0xf323('0x1'));var moment=require(_0xf323('0x2'));var BPromise=require(_0xf323('0x3'));var rp=require(_0xf323('0x4'));var fs=require('fs');var path=require(_0xf323('0x5'));var rimraf=require(_0xf323('0x6'));var config=require(_0xf323('0x7'));var attributes=require(_0xf323('0x8'));var integrations=require(_0xf323('0x9'));module[_0xf323('0xa')]=function(_0x5d7d60,_0xb9a667){return _0x5d7d60[_0xf323('0xb')](_0xf323('0xc'),attributes,{'tableName':_0xf323('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeda8=['path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','FreshsalesAccount','int_freshsales_accounts','lodash','util','api','moment','bluebird','request-promise'];(function(_0x1aa75c,_0x5f2182){var _0x68fbf2=function(_0x433a4e){while(--_0x433a4e){_0x1aa75c['push'](_0x1aa75c['shift']());}};_0x68fbf2(++_0x5f2182);}(_0xeda8,0x104));var _0x8eda=function(_0x1ed5aa,_0x44c06a){_0x1ed5aa=_0x1ed5aa-0x0;var _0x172968=_0xeda8[_0x1ed5aa];return _0x172968;};'use strict';var _=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var logger=require('../../config/logger')(_0x8eda('0x2'));var moment=require(_0x8eda('0x3'));var BPromise=require(_0x8eda('0x4'));var rp=require(_0x8eda('0x5'));var fs=require('fs');var path=require(_0x8eda('0x6'));var rimraf=require(_0x8eda('0x7'));var config=require(_0x8eda('0x8'));var attributes=require(_0x8eda('0x9'));var integrations=require(_0x8eda('0xa'));module[_0x8eda('0xb')]=function(_0x349361,_0x32abe8){return _0x349361['define'](_0x8eda('0xc'),attributes,{'tableName':_0x8eda('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 453b3bc..c615c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5464=['FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','limit','include','map','model','find','ShowFreshsalesAccount','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','FreshsalesAccount,\x20%s,\x20%s','debug'];(function(_0x6b5c4c,_0xaa642){var _0x548990=function(_0x285a42){while(--_0x285a42){_0x6b5c4c['push'](_0x6b5c4c['shift']());}};_0x548990(++_0xaa642);}(_0x5464,0x15d));var _0x4546=function(_0xee28aa,_0x11f43e){_0xee28aa=_0xee28aa-0x0;var _0x3dc535=_0x5464[_0xee28aa];return _0x3dc535;};'use strict';var _=require(_0x4546('0x0'));var util=require(_0x4546('0x1'));var moment=require(_0x4546('0x2'));var BPromise=require('bluebird');var rs=require(_0x4546('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4546('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4546('0x5'))(_0x4546('0x6'));var config=require(_0x4546('0x7'));var jayson=require(_0x4546('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5c5e09,_0x224c7c,_0x36c875){return new BPromise(function(_0x1a76c1,_0x2e860a){return client[_0x4546('0x9')](_0x5c5e09,_0x36c875)[_0x4546('0xa')](function(_0x11d63e){logger[_0x4546('0xb')](_0x4546('0xc'),_0x224c7c,'request\x20sent');logger[_0x4546('0xd')](_0x4546('0xe'),_0x224c7c,_0x4546('0xf'),JSON['stringify'](_0x11d63e));if(_0x11d63e[_0x4546('0x10')]){if(_0x11d63e[_0x4546('0x10')][_0x4546('0x11')]===0x1f4){logger[_0x4546('0x10')]('FreshsalesAccount,\x20%s,\x20%s',_0x224c7c,_0x11d63e['error'][_0x4546('0x12')]);return _0x2e860a(_0x11d63e['error']['message']);}logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x224c7c,_0x11d63e['error']['message']);return _0x1a76c1(_0x11d63e[_0x4546('0x10')]['message']);}else{logger[_0x4546('0xb')]('FreshsalesAccount,\x20%s,\x20%s',_0x224c7c,_0x4546('0xf'));_0x1a76c1(_0x11d63e['result'][_0x4546('0x12')]);}})[_0x4546('0x13')](function(_0x24b32a){logger[_0x4546('0x10')](_0x4546('0xc'),_0x224c7c,_0x24b32a);_0x2e860a(_0x24b32a);});});}exports[_0x4546('0x14')]=function(_0x57d8de){var _0x4ffd6b=this;return new Promise(function(_0x5780a7,_0x330235){return db[_0x4546('0x15')][_0x4546('0x16')]({'raw':_0x57d8de[_0x4546('0x17')]?_0x57d8de[_0x4546('0x17')][_0x4546('0x18')]===undefined?!![]:![]:!![],'where':_0x57d8de[_0x4546('0x17')]?_0x57d8de[_0x4546('0x17')][_0x4546('0x19')]||null:null,'attributes':_0x57d8de[_0x4546('0x17')]?_0x57d8de['options'][_0x4546('0x1a')]||null:null,'limit':_0x57d8de[_0x4546('0x17')]?_0x57d8de['options'][_0x4546('0x1b')]||null:null,'include':_0x57d8de[_0x4546('0x17')]?_0x57d8de[_0x4546('0x17')][_0x4546('0x1c')]?_[_0x4546('0x1d')](_0x57d8de[_0x4546('0x17')]['include'],function(_0x3dab5c){return{'model':db[_0x3dab5c[_0x4546('0x1e')]],'as':_0x3dab5c['as'],'attributes':_0x3dab5c['attributes'],'include':_0x3dab5c[_0x4546('0x1c')]?_[_0x4546('0x1d')](_0x3dab5c[_0x4546('0x1c')],function(_0x4467ee){return{'model':db[_0x4467ee[_0x4546('0x1e')]],'as':_0x4467ee['as'],'attributes':_0x4467ee['attributes'],'include':_0x4467ee[_0x4546('0x1c')]?_[_0x4546('0x1d')](_0x4467ee[_0x4546('0x1c')],function(_0x48fc36){return{'model':db[_0x48fc36['model']],'as':_0x48fc36['as'],'attributes':_0x48fc36[_0x4546('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x4546('0xa')](function(_0x15611c){logger[_0x4546('0xb')](_0x4546('0x14'),_0x57d8de);logger[_0x4546('0xd')](_0x4546('0x14'),_0x57d8de,JSON['stringify'](_0x15611c));_0x5780a7(_0x15611c);})[_0x4546('0x13')](function(_0x52c546){logger[_0x4546('0x10')](_0x4546('0x14'),_0x52c546['message'],_0x57d8de);_0x330235(_0x4ffd6b['error'](0x1f4,_0x52c546[_0x4546('0x12')]));});});};exports['ShowFreshsalesAccount']=function(_0x3c7c7d){var _0x58b69=this;return new Promise(function(_0x480d8e,_0x5f0226){return db[_0x4546('0x15')][_0x4546('0x1f')]({'raw':_0x3c7c7d[_0x4546('0x17')]?_0x3c7c7d['options'][_0x4546('0x18')]===undefined?!![]:![]:!![],'where':_0x3c7c7d[_0x4546('0x17')]?_0x3c7c7d['options'][_0x4546('0x19')]||null:null,'attributes':_0x3c7c7d['options']?_0x3c7c7d[_0x4546('0x17')][_0x4546('0x1a')]||null:null,'include':_0x3c7c7d[_0x4546('0x17')]?_0x3c7c7d[_0x4546('0x17')]['include']?_[_0x4546('0x1d')](_0x3c7c7d[_0x4546('0x17')][_0x4546('0x1c')],function(_0x298bef){return{'model':db[_0x298bef[_0x4546('0x1e')]],'as':_0x298bef['as'],'attributes':_0x298bef[_0x4546('0x1a')],'include':_0x298bef['include']?_[_0x4546('0x1d')](_0x298bef[_0x4546('0x1c')],function(_0x549f48){return{'model':db[_0x549f48['model']],'as':_0x549f48['as'],'attributes':_0x549f48[_0x4546('0x1a')],'include':_0x549f48[_0x4546('0x1c')]?_['map'](_0x549f48[_0x4546('0x1c')],function(_0x25066c){return{'model':db[_0x25066c['model']],'as':_0x25066c['as'],'attributes':_0x25066c['attributes']};}):[]};}):[]};}):[]:[]})[_0x4546('0xa')](function(_0x141fe8){logger[_0x4546('0xb')](_0x4546('0x20'),_0x3c7c7d);logger[_0x4546('0xd')](_0x4546('0x20'),_0x3c7c7d,JSON['stringify'](_0x141fe8));_0x480d8e(_0x141fe8);})[_0x4546('0x13')](function(_0x33307f){logger['error'](_0x4546('0x20'),_0x33307f['message'],_0x3c7c7d);_0x5f0226(_0x58b69[_0x4546('0x10')](0x1f4,_0x33307f[_0x4546('0x12')]));});});};
\ No newline at end of file
+var _0x5fdc=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FreshsalesAccount,\x20%s,\x20%s','info','GetFreshsalesAccount','FreshsalesAccount','options','raw','attributes','include','map','model','ShowFreshsalesAccount','find','where','catch','lodash'];(function(_0x845fcc,_0x518cfb){var _0x3a0e79=function(_0x240732){while(--_0x240732){_0x845fcc['push'](_0x845fcc['shift']());}};_0x3a0e79(++_0x518cfb);}(_0x5fdc,0x127));var _0xc5fd=function(_0x3dbe2c,_0x1d7db8){_0x3dbe2c=_0x3dbe2c-0x0;var _0x483981=_0x5fdc[_0x3dbe2c];return _0x483981;};'use strict';var _=require(_0xc5fd('0x0'));var util=require(_0xc5fd('0x1'));var moment=require(_0xc5fd('0x2'));var BPromise=require(_0xc5fd('0x3'));var rs=require(_0xc5fd('0x4'));var fs=require('fs');var Redis=require(_0xc5fd('0x5'));var db=require(_0xc5fd('0x6'))['db'];var utils=require(_0xc5fd('0x7'));var logger=require(_0xc5fd('0x8'))(_0xc5fd('0x9'));var config=require(_0xc5fd('0xa'));var jayson=require(_0xc5fd('0xb'));var client=jayson[_0xc5fd('0xc')][_0xc5fd('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x15ffe7,_0x5a2eb4,_0x5d86e5){return new BPromise(function(_0x493389,_0x224801){return client[_0xc5fd('0xe')](_0x15ffe7,_0x5d86e5)[_0xc5fd('0xf')](function(_0x45c91f){logger['info']('FreshsalesAccount,\x20%s,\x20%s',_0x5a2eb4,_0xc5fd('0x10'));logger[_0xc5fd('0x11')](_0xc5fd('0x12'),_0x5a2eb4,_0xc5fd('0x10'),JSON[_0xc5fd('0x13')](_0x45c91f));if(_0x45c91f[_0xc5fd('0x14')]){if(_0x45c91f['error'][_0xc5fd('0x15')]===0x1f4){logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x5a2eb4,_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);return _0x224801(_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);}logger[_0xc5fd('0x14')](_0xc5fd('0x17'),_0x5a2eb4,_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);return _0x493389(_0x45c91f['error'][_0xc5fd('0x16')]);}else{logger[_0xc5fd('0x18')](_0xc5fd('0x17'),_0x5a2eb4,_0xc5fd('0x10'));_0x493389(_0x45c91f['result']['message']);}})['catch'](function(_0x5529b3){logger['error'](_0xc5fd('0x17'),_0x5a2eb4,_0x5529b3);_0x224801(_0x5529b3);});});}exports[_0xc5fd('0x19')]=function(_0x27f611){var _0xd0a9f1=this;return new Promise(function(_0x2ee392,_0x3f981f){return db[_0xc5fd('0x1a')]['findAll']({'raw':_0x27f611[_0xc5fd('0x1b')]?_0x27f611[_0xc5fd('0x1b')][_0xc5fd('0x1c')]===undefined?!![]:![]:!![],'where':_0x27f611[_0xc5fd('0x1b')]?_0x27f611[_0xc5fd('0x1b')]['where']||null:null,'attributes':_0x27f611[_0xc5fd('0x1b')]?_0x27f611[_0xc5fd('0x1b')][_0xc5fd('0x1d')]||null:null,'limit':_0x27f611[_0xc5fd('0x1b')]?_0x27f611['options']['limit']||null:null,'include':_0x27f611[_0xc5fd('0x1b')]?_0x27f611[_0xc5fd('0x1b')][_0xc5fd('0x1e')]?_[_0xc5fd('0x1f')](_0x27f611[_0xc5fd('0x1b')][_0xc5fd('0x1e')],function(_0x56d473){return{'model':db[_0x56d473[_0xc5fd('0x20')]],'as':_0x56d473['as'],'attributes':_0x56d473[_0xc5fd('0x1d')],'include':_0x56d473[_0xc5fd('0x1e')]?_[_0xc5fd('0x1f')](_0x56d473[_0xc5fd('0x1e')],function(_0x4020af){return{'model':db[_0x4020af[_0xc5fd('0x20')]],'as':_0x4020af['as'],'attributes':_0x4020af['attributes'],'include':_0x4020af[_0xc5fd('0x1e')]?_['map'](_0x4020af[_0xc5fd('0x1e')],function(_0x231368){return{'model':db[_0x231368[_0xc5fd('0x20')]],'as':_0x231368['as'],'attributes':_0x231368[_0xc5fd('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x176313){logger[_0xc5fd('0x18')](_0xc5fd('0x19'),_0x27f611);logger[_0xc5fd('0x11')](_0xc5fd('0x19'),_0x27f611,JSON[_0xc5fd('0x13')](_0x176313));_0x2ee392(_0x176313);})['catch'](function(_0x412ef7){logger['error']('GetFreshsalesAccount',_0x412ef7[_0xc5fd('0x16')],_0x27f611);_0x3f981f(_0xd0a9f1[_0xc5fd('0x14')](0x1f4,_0x412ef7[_0xc5fd('0x16')]));});});};exports[_0xc5fd('0x21')]=function(_0x7693c4){var _0x85fa81=this;return new Promise(function(_0x2a891d,_0x321eea){return db['FreshsalesAccount'][_0xc5fd('0x22')]({'raw':_0x7693c4[_0xc5fd('0x1b')]?_0x7693c4[_0xc5fd('0x1b')][_0xc5fd('0x1c')]===undefined?!![]:![]:!![],'where':_0x7693c4[_0xc5fd('0x1b')]?_0x7693c4[_0xc5fd('0x1b')][_0xc5fd('0x23')]||null:null,'attributes':_0x7693c4[_0xc5fd('0x1b')]?_0x7693c4[_0xc5fd('0x1b')][_0xc5fd('0x1d')]||null:null,'include':_0x7693c4[_0xc5fd('0x1b')]?_0x7693c4[_0xc5fd('0x1b')]['include']?_[_0xc5fd('0x1f')](_0x7693c4[_0xc5fd('0x1b')][_0xc5fd('0x1e')],function(_0x1fa329){return{'model':db[_0x1fa329[_0xc5fd('0x20')]],'as':_0x1fa329['as'],'attributes':_0x1fa329[_0xc5fd('0x1d')],'include':_0x1fa329[_0xc5fd('0x1e')]?_[_0xc5fd('0x1f')](_0x1fa329[_0xc5fd('0x1e')],function(_0x545bfc){return{'model':db[_0x545bfc[_0xc5fd('0x20')]],'as':_0x545bfc['as'],'attributes':_0x545bfc[_0xc5fd('0x1d')],'include':_0x545bfc[_0xc5fd('0x1e')]?_[_0xc5fd('0x1f')](_0x545bfc[_0xc5fd('0x1e')],function(_0x52267e){return{'model':db[_0x52267e[_0xc5fd('0x20')]],'as':_0x52267e['as'],'attributes':_0x52267e['attributes']};}):[]};}):[]};}):[]:[]})[_0xc5fd('0xf')](function(_0xac7c40){logger['info'](_0xc5fd('0x21'),_0x7693c4);logger['debug'](_0xc5fd('0x21'),_0x7693c4,JSON[_0xc5fd('0x13')](_0xac7c40));_0x2a891d(_0xac7c40);})[_0xc5fd('0x24')](function(_0x4cafb1){logger[_0xc5fd('0x14')](_0xc5fd('0x21'),_0x4cafb1['message'],_0x7693c4);_0x321eea(_0x85fa81[_0xc5fd('0x14')](0x1f4,_0x4cafb1[_0xc5fd('0x16')]));});});};
\ No newline at end of file
index d8117bc..1224572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x227d=['get','/:id','isAuthenticated','/:id/subjects','/:id/descriptions','getDescriptions','/:id/fields','post','create','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller'];(function(_0x15a634,_0x4feb86){var _0xf4f7a0=function(_0x31d9fe){while(--_0x31d9fe){_0x15a634['push'](_0x15a634['shift']());}};_0xf4f7a0(++_0x4feb86);}(_0x227d,0xbc));var _0xd227=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x227d[_0x16b9ed];return _0x66b1f8;};'use strict';var multer=require(_0xd227('0x0'));var util=require(_0xd227('0x1'));var path=require('path');var timeout=require(_0xd227('0x2'));var express=require(_0xd227('0x3'));var router=express[_0xd227('0x4')]();var fs_extra=require(_0xd227('0x5'));var auth=require(_0xd227('0x6'));var interaction=require(_0xd227('0x7'));var config=require(_0xd227('0x8'));var controller=require(_0xd227('0x9'));router[_0xd227('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xd227('0xa')](_0xd227('0xb'),auth[_0xd227('0xc')](),controller['show']);router['get'](_0xd227('0xd'),auth['isAuthenticated'](),controller['getSubjects']);router[_0xd227('0xa')](_0xd227('0xe'),auth[_0xd227('0xc')](),controller[_0xd227('0xf')]);router[_0xd227('0xa')](_0xd227('0x10'),auth[_0xd227('0xc')](),controller['getFields']);router[_0xd227('0x11')]('/',auth['isAuthenticated'](),controller[_0xd227('0x12')]);router['put'](_0xd227('0xb'),auth[_0xd227('0xc')](),controller['update']);router[_0xd227('0x13')](_0xd227('0xb'),auth[_0xd227('0xc')](),controller[_0xd227('0x14')]);module[_0xd227('0x15')]=router;
\ No newline at end of file
+var _0x836c=['destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','isAuthenticated','get','/:id','show','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','update','delete'];(function(_0x3bae3c,_0x4bf839){var _0x24ea62=function(_0x56b813){while(--_0x56b813){_0x3bae3c['push'](_0x3bae3c['shift']());}};_0x24ea62(++_0x4bf839);}(_0x836c,0x1ce));var _0xc836=function(_0x439143,_0x45cdb2){_0x439143=_0x439143-0x0;var _0x4aac6d=_0x836c[_0x439143];return _0x4aac6d;};'use strict';var multer=require(_0xc836('0x0'));var util=require(_0xc836('0x1'));var path=require('path');var timeout=require(_0xc836('0x2'));var express=require(_0xc836('0x3'));var router=express['Router']();var fs_extra=require(_0xc836('0x4'));var auth=require(_0xc836('0x5'));var interaction=require(_0xc836('0x6'));var config=require(_0xc836('0x7'));var controller=require(_0xc836('0x8'));router['get']('/',auth[_0xc836('0x9')](),controller['index']);router[_0xc836('0xa')](_0xc836('0xb'),auth[_0xc836('0x9')](),controller[_0xc836('0xc')]);router[_0xc836('0xa')](_0xc836('0xd'),auth['isAuthenticated'](),controller['getSubjects']);router[_0xc836('0xa')](_0xc836('0xe'),auth[_0xc836('0x9')](),controller[_0xc836('0xf')]);router[_0xc836('0xa')]('/:id/fields',auth[_0xc836('0x9')](),controller['getFields']);router[_0xc836('0x10')]('/',auth[_0xc836('0x9')](),controller[_0xc836('0x11')]);router[_0xc836('0x12')](_0xc836('0xb'),auth[_0xc836('0x9')](),controller[_0xc836('0x13')]);router[_0xc836('0x14')](_0xc836('0xb'),auth[_0xc836('0x9')](),controller[_0xc836('0x15')]);module[_0xc836('0x16')]=router;
\ No newline at end of file
index b8a4f92..a1a7ca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x618f=['exports','STRING','sequelize'];(function(_0x32e649,_0x228649){var _0x14d386=function(_0x3fb3ed){while(--_0x3fb3ed){_0x32e649['push'](_0x32e649['shift']());}};_0x14d386(++_0x228649);}(_0x618f,0x188));var _0xf618=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x618f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf618('0x0'));module[_0xf618('0x1')]={'name':{'type':Sequelize[_0xf618('0x2')]},'description':{'type':Sequelize[_0xf618('0x2')]}};
\ No newline at end of file
+var _0xe38f=['STRING','sequelize','exports'];(function(_0x3b4719,_0x18ce78){var _0x23fe5b=function(_0x4ea206){while(--_0x4ea206){_0x3b4719['push'](_0x3b4719['shift']());}};_0x23fe5b(++_0x18ce78);}(_0xe38f,0x1d5));var _0xfe38=function(_0x4982ac,_0x495cd8){_0x4982ac=_0x4982ac-0x0;var _0x39e2d1=_0xe38f[_0x4982ac];return _0x39e2d1;};'use strict';var Sequelize=require(_0xfe38('0x0'));module[_0xfe38('0x1')]={'name':{'type':Sequelize[_0xfe38('0x2')]},'description':{'type':Sequelize[_0xfe38('0x2')]}};
\ No newline at end of file
index 560c9c7..0588d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5612=['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/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','FreshsalesConfiguration','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','rows','catch','params','keys','length','includeAll','find','create','body','getSubjects','findOne','FreshsalesField','order','getDescriptions','getFields','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs'];(function(_0x24696b,_0x12de19){var _0x3f86b0=function(_0x11f2eb){while(--_0x11f2eb){_0x24696b['push'](_0x24696b['shift']());}};_0x3f86b0(++_0x12de19);}(_0x5612,0x19a));var _0x2561=function(_0x5efd8f,_0xf1f28){_0x5efd8f=_0x5efd8f-0x0;var _0x3a669f=_0x5612[_0x5efd8f];return _0x3a669f;};'use strict';var emlformat=require(_0x2561('0x0'));var rimraf=require(_0x2561('0x1'));var zipdir=require(_0x2561('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2561('0x3'));var moment=require(_0x2561('0x4'));var BPromise=require(_0x2561('0x5'));var Mustache=require('mustache');var util=require(_0x2561('0x6'));var path=require('path');var sox=require(_0x2561('0x7'));var csv=require(_0x2561('0x8'));var ejs=require(_0x2561('0x9'));var fs=require('fs');var fs_extra=require(_0x2561('0xa'));var _=require(_0x2561('0xb'));var squel=require(_0x2561('0xc'));var crypto=require(_0x2561('0xd'));var jsforce=require(_0x2561('0xe'));var deskjs=require(_0x2561('0xf'));var toCsv=require('to-csv');var querystring=require(_0x2561('0x10'));var Papa=require(_0x2561('0x11'));var Redis=require(_0x2561('0x12'));var authService=require(_0x2561('0x13'));var qs=require(_0x2561('0x14'));var as=require(_0x2561('0x15'));var hardwareService=require(_0x2561('0x16'));var logger=require(_0x2561('0x17'))('api');var utils=require(_0x2561('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x2561('0x19'));var db=require(_0x2561('0x1a'))['db'];function respondWithStatusCode(_0xb95054,_0x81fa5c){_0x81fa5c=_0x81fa5c||0xcc;return function(_0x967ba9){if(_0x967ba9){return _0xb95054[_0x2561('0x1b')](_0x81fa5c);}return _0xb95054[_0x2561('0x1c')](_0x81fa5c)[_0x2561('0x1d')]();};}function respondWithResult(_0x554dd3,_0x3ad253){_0x3ad253=_0x3ad253||0xc8;return function(_0x566c61){if(_0x566c61){return _0x554dd3[_0x2561('0x1c')](_0x3ad253)[_0x2561('0x1e')](_0x566c61);}};}function respondWithFilteredResult(_0x488e9a,_0x420346){return function(_0x19cbb1){if(_0x19cbb1){var _0x31b2a4=typeof _0x420346[_0x2561('0x1f')]==='undefined'&&typeof _0x420346[_0x2561('0x20')]===_0x2561('0x21');var _0x5daa7d=_0x19cbb1[_0x2561('0x22')];var _0x54d389=_0x31b2a4?0x0:_0x420346[_0x2561('0x1f')];var _0x59a81b=_0x31b2a4?_0x19cbb1[_0x2561('0x22')]:_0x420346['offset']+_0x420346[_0x2561('0x20')];var _0x32a253;if(_0x59a81b>=_0x5daa7d){_0x59a81b=_0x5daa7d;_0x32a253=0xc8;}else{_0x32a253=0xce;}_0x488e9a[_0x2561('0x1c')](_0x32a253);return _0x488e9a[_0x2561('0x23')]('Content-Range',_0x54d389+'-'+_0x59a81b+'/'+_0x5daa7d)[_0x2561('0x1e')](_0x19cbb1);}return null;};}function patchUpdates(_0x3c959a){return function(_0x3ecb92){try{jsonpatch[_0x2561('0x24')](_0x3ecb92,_0x3c959a,!![]);}catch(_0x31f202){return BPromise[_0x2561('0x25')](_0x31f202);}return _0x3ecb92[_0x2561('0x26')]();};}function saveUpdates(_0x1fac55,_0x5d6111){return function(_0x361620){if(_0x361620){return _0x361620[_0x2561('0x27')](_0x1fac55)[_0x2561('0x28')](function(_0x19492b){return _0x19492b;});}return null;};}function removeEntity(_0x540c4b,_0x47a653){return function(_0x2582cd){if(_0x2582cd){return _0x2582cd[_0x2561('0x29')]()[_0x2561('0x28')](function(){_0x540c4b[_0x2561('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x590449,_0x2cb80a){return function(_0x21d0cf){if(!_0x21d0cf){_0x590449[_0x2561('0x1b')](0x194);}return _0x21d0cf;};}function handleError(_0x4915a9,_0x12ba46){_0x12ba46=_0x12ba46||0x1f4;return function(_0x2e7a41){logger[_0x2561('0x2a')](_0x2e7a41[_0x2561('0x2b')]);if(_0x2e7a41[_0x2561('0x2c')]){delete _0x2e7a41[_0x2561('0x2c')];}_0x4915a9[_0x2561('0x1c')](_0x12ba46)[_0x2561('0x2d')](_0x2e7a41);};}exports['index']=function(_0x3ac584,_0x2709b5){var _0x31304a={},_0x77d66f={},_0x47c3cb={'count':0x0,'rows':[]};var _0x5e0b75=_[_0x2561('0x2e')](db[_0x2561('0x2f')][_0x2561('0x30')],function(_0x401b3a){return{'name':_0x401b3a[_0x2561('0x31')],'type':_0x401b3a['type'][_0x2561('0x32')]};});_0x77d66f[_0x2561('0x33')]=_[_0x2561('0x2e')](_0x5e0b75,_0x2561('0x2c'));_0x77d66f[_0x2561('0x34')]=_['keys'](_0x3ac584[_0x2561('0x34')]);_0x77d66f[_0x2561('0x35')]=_['intersection'](_0x77d66f[_0x2561('0x33')],_0x77d66f[_0x2561('0x34')]);_0x31304a[_0x2561('0x36')]=_[_0x2561('0x37')](_0x77d66f[_0x2561('0x33')],qs[_0x2561('0x38')](_0x3ac584[_0x2561('0x34')]['fields']));_0x31304a[_0x2561('0x36')]=_0x31304a[_0x2561('0x36')]['length']?_0x31304a[_0x2561('0x36')]:_0x77d66f[_0x2561('0x33')];if(!_0x3ac584[_0x2561('0x34')][_0x2561('0x39')](_0x2561('0x3a'))){_0x31304a[_0x2561('0x20')]=qs['limit'](_0x3ac584[_0x2561('0x34')]['limit']);_0x31304a[_0x2561('0x1f')]=qs[_0x2561('0x1f')](_0x3ac584[_0x2561('0x34')][_0x2561('0x1f')]);}_0x31304a['order']=qs['sort'](_0x3ac584[_0x2561('0x34')][_0x2561('0x3b')]);_0x31304a[_0x2561('0x3c')]=qs[_0x2561('0x35')](_[_0x2561('0x3d')](_0x3ac584['query'],_0x77d66f[_0x2561('0x35')]),_0x5e0b75);if(_0x3ac584[_0x2561('0x34')][_0x2561('0x3e')]){_0x31304a[_0x2561('0x3c')]=_['merge'](_0x31304a['where'],{'$or':_[_0x2561('0x2e')](_0x5e0b75,function(_0x10e586){if(_0x10e586[_0x2561('0x3f')]!==_0x2561('0x40')){var _0x2773cb={};_0x2773cb[_0x10e586['name']]={'$like':'%'+_0x3ac584['query'][_0x2561('0x3e')]+'%'};return _0x2773cb;}})});}_0x31304a=_[_0x2561('0x41')]({},_0x31304a,_0x3ac584[_0x2561('0x42')]);var _0x6c581f={'where':_0x31304a[_0x2561('0x3c')]};return db['FreshsalesConfiguration'][_0x2561('0x22')](_0x6c581f)[_0x2561('0x28')](function(_0x331437){_0x47c3cb[_0x2561('0x22')]=_0x331437;if(_0x3ac584['query']['includeAll']){_0x31304a[_0x2561('0x43')]=[{'all':!![]}];}return db[_0x2561('0x2f')][_0x2561('0x44')](_0x31304a);})[_0x2561('0x28')](function(_0x36ba7d){_0x47c3cb[_0x2561('0x45')]=_0x36ba7d;return _0x47c3cb;})[_0x2561('0x28')](respondWithFilteredResult(_0x2709b5,_0x31304a))[_0x2561('0x46')](handleError(_0x2709b5,null));};exports['show']=function(_0x4a98ed,_0x55a252){var _0xe5ae1c={'raw':![],'where':{'id':_0x4a98ed[_0x2561('0x47')]['id']}},_0x143d67={};_0x143d67[_0x2561('0x33')]=_[_0x2561('0x48')](db['FreshsalesConfiguration']['rawAttributes']);_0x143d67[_0x2561('0x34')]=_[_0x2561('0x48')](_0x4a98ed[_0x2561('0x34')]);_0x143d67[_0x2561('0x35')]=_[_0x2561('0x37')](_0x143d67[_0x2561('0x33')],_0x143d67['query']);_0xe5ae1c[_0x2561('0x36')]=_[_0x2561('0x37')](_0x143d67[_0x2561('0x33')],qs[_0x2561('0x38')](_0x4a98ed[_0x2561('0x34')][_0x2561('0x38')]));_0xe5ae1c[_0x2561('0x36')]=_0xe5ae1c[_0x2561('0x36')][_0x2561('0x49')]?_0xe5ae1c[_0x2561('0x36')]:_0x143d67[_0x2561('0x33')];if(_0x4a98ed[_0x2561('0x34')][_0x2561('0x4a')]){_0xe5ae1c[_0x2561('0x43')]=[{'all':!![]}];}_0xe5ae1c=_['merge']({},_0xe5ae1c,_0x4a98ed[_0x2561('0x42')]);return db[_0x2561('0x2f')][_0x2561('0x4b')](_0xe5ae1c)[_0x2561('0x28')](handleEntityNotFound(_0x55a252,null))[_0x2561('0x28')](respondWithResult(_0x55a252,null))[_0x2561('0x46')](handleError(_0x55a252,null));};exports[_0x2561('0x4c')]=function(_0x3338c7,_0x43efaf){return db[_0x2561('0x2f')]['create'](_0x3338c7[_0x2561('0x4d')],{})[_0x2561('0x28')](respondWithResult(_0x43efaf,0xc9))[_0x2561('0x46')](handleError(_0x43efaf,null));};exports[_0x2561('0x27')]=function(_0x2f4dd4,_0x27cf7b){if(_0x2f4dd4[_0x2561('0x4d')]['id']){delete _0x2f4dd4[_0x2561('0x4d')]['id'];}return db[_0x2561('0x2f')]['find']({'where':{'id':_0x2f4dd4['params']['id']}})['then'](handleEntityNotFound(_0x27cf7b,null))[_0x2561('0x28')](saveUpdates(_0x2f4dd4[_0x2561('0x4d')],null))[_0x2561('0x28')](respondWithResult(_0x27cf7b,null))[_0x2561('0x46')](handleError(_0x27cf7b,null));};exports['destroy']=function(_0xea70bf,_0x106923){return db[_0x2561('0x2f')][_0x2561('0x4b')]({'where':{'id':_0xea70bf[_0x2561('0x47')]['id']}})[_0x2561('0x28')](handleEntityNotFound(_0x106923,null))[_0x2561('0x28')](removeEntity(_0x106923,null))[_0x2561('0x46')](handleError(_0x106923,null));};exports[_0x2561('0x4e')]=function(_0xf76094,_0x6465b5,_0x4b1605){var _0x3a259c={};var _0x4dd907={};var _0x3ad1f2;var _0x39e5c8;return db[_0x2561('0x2f')][_0x2561('0x4f')]({'where':{'id':_0xf76094[_0x2561('0x47')]['id']}})[_0x2561('0x28')](handleEntityNotFound(_0x6465b5,null))[_0x2561('0x28')](function(_0x1cb562){if(_0x1cb562){_0x3ad1f2=_0x1cb562;_0x4dd907[_0x2561('0x33')]=_[_0x2561('0x48')](db[_0x2561('0x50')][_0x2561('0x30')]);_0x4dd907[_0x2561('0x34')]=_[_0x2561('0x48')](_0xf76094[_0x2561('0x34')]);_0x4dd907['filters']=_[_0x2561('0x37')](_0x4dd907[_0x2561('0x33')],_0x4dd907[_0x2561('0x34')]);_0x3a259c[_0x2561('0x36')]=_[_0x2561('0x37')](_0x4dd907[_0x2561('0x33')],qs[_0x2561('0x38')](_0xf76094[_0x2561('0x34')][_0x2561('0x38')]));_0x3a259c[_0x2561('0x36')]=_0x3a259c[_0x2561('0x36')][_0x2561('0x49')]?_0x3a259c[_0x2561('0x36')]:_0x4dd907['model'];_0x3a259c[_0x2561('0x51')]=qs[_0x2561('0x3b')](_0xf76094[_0x2561('0x34')][_0x2561('0x3b')]);_0x3a259c[_0x2561('0x3c')]=qs['filters'](_[_0x2561('0x3d')](_0xf76094[_0x2561('0x34')],_0x4dd907['filters']));if(_0xf76094[_0x2561('0x34')]['filter']){_0x3a259c[_0x2561('0x3c')]=_[_0x2561('0x41')](_0x3a259c[_0x2561('0x3c')],{'$or':_['map'](_0x3a259c[_0x2561('0x36')],function(_0x1f2bfb){var _0x47b965={};_0x47b965[_0x1f2bfb]={'$like':'%'+_0xf76094[_0x2561('0x34')][_0x2561('0x3e')]+'%'};return _0x47b965;})});}_0x3a259c=_[_0x2561('0x41')]({},_0x3a259c,_0xf76094[_0x2561('0x42')]);return _0x3ad1f2[_0x2561('0x4e')](_0x3a259c);}})[_0x2561('0x28')](function(_0x4e427e){if(_0x4e427e){_0x39e5c8=_0x4e427e[_0x2561('0x49')];if(!_0xf76094[_0x2561('0x34')][_0x2561('0x39')](_0x2561('0x3a'))){_0x3a259c[_0x2561('0x20')]=qs[_0x2561('0x20')](_0xf76094[_0x2561('0x34')][_0x2561('0x20')]);_0x3a259c[_0x2561('0x1f')]=qs[_0x2561('0x1f')](_0xf76094['query'][_0x2561('0x1f')]);}return _0x3ad1f2[_0x2561('0x4e')](_0x3a259c);}})['then'](function(_0x3756da){if(_0x3756da){return _0x3756da?{'count':_0x39e5c8,'rows':_0x3756da}:null;}})[_0x2561('0x28')](respondWithResult(_0x6465b5,null))[_0x2561('0x46')](handleError(_0x6465b5,null));};exports['getDescriptions']=function(_0x53c8ec,_0x1f5fc3,_0x4ac570){var _0x5f23f7={};var _0x32d087={};var _0xed7de4;var _0x12c5be;return db[_0x2561('0x2f')][_0x2561('0x4f')]({'where':{'id':_0x53c8ec[_0x2561('0x47')]['id']}})[_0x2561('0x28')](handleEntityNotFound(_0x1f5fc3,null))[_0x2561('0x28')](function(_0x4a59ad){if(_0x4a59ad){_0xed7de4=_0x4a59ad;_0x32d087[_0x2561('0x33')]=_[_0x2561('0x48')](db[_0x2561('0x50')]['rawAttributes']);_0x32d087['query']=_['keys'](_0x53c8ec[_0x2561('0x34')]);_0x32d087[_0x2561('0x35')]=_[_0x2561('0x37')](_0x32d087[_0x2561('0x33')],_0x32d087[_0x2561('0x34')]);_0x5f23f7['attributes']=_['intersection'](_0x32d087[_0x2561('0x33')],qs[_0x2561('0x38')](_0x53c8ec[_0x2561('0x34')][_0x2561('0x38')]));_0x5f23f7['attributes']=_0x5f23f7[_0x2561('0x36')][_0x2561('0x49')]?_0x5f23f7['attributes']:_0x32d087[_0x2561('0x33')];_0x5f23f7[_0x2561('0x51')]=qs['sort'](_0x53c8ec[_0x2561('0x34')][_0x2561('0x3b')]);_0x5f23f7[_0x2561('0x3c')]=qs['filters'](_['pick'](_0x53c8ec['query'],_0x32d087[_0x2561('0x35')]));if(_0x53c8ec[_0x2561('0x34')][_0x2561('0x3e')]){_0x5f23f7[_0x2561('0x3c')]=_['merge'](_0x5f23f7[_0x2561('0x3c')],{'$or':_[_0x2561('0x2e')](_0x5f23f7[_0x2561('0x36')],function(_0x559a38){var _0x8f9095={};_0x8f9095[_0x559a38]={'$like':'%'+_0x53c8ec[_0x2561('0x34')]['filter']+'%'};return _0x8f9095;})});}_0x5f23f7=_[_0x2561('0x41')]({},_0x5f23f7,_0x53c8ec[_0x2561('0x42')]);return _0xed7de4[_0x2561('0x52')](_0x5f23f7);}})['then'](function(_0x3e48e8){if(_0x3e48e8){_0x12c5be=_0x3e48e8[_0x2561('0x49')];if(!_0x53c8ec[_0x2561('0x34')]['hasOwnProperty'](_0x2561('0x3a'))){_0x5f23f7[_0x2561('0x20')]=qs[_0x2561('0x20')](_0x53c8ec[_0x2561('0x34')][_0x2561('0x20')]);_0x5f23f7[_0x2561('0x1f')]=qs[_0x2561('0x1f')](_0x53c8ec[_0x2561('0x34')][_0x2561('0x1f')]);}return _0xed7de4['getDescriptions'](_0x5f23f7);}})[_0x2561('0x28')](function(_0x973042){if(_0x973042){return _0x973042?{'count':_0x12c5be,'rows':_0x973042}:null;}})[_0x2561('0x28')](respondWithResult(_0x1f5fc3,null))['catch'](handleError(_0x1f5fc3,null));};exports[_0x2561('0x53')]=function(_0x54aeef,_0x2dad2f,_0x3b27bb){var _0x323afd={};var _0x1ff049={};var _0xd9242e;var _0x4f2f85;return db['FreshsalesConfiguration'][_0x2561('0x4f')]({'where':{'id':_0x54aeef['params']['id']}})['then'](handleEntityNotFound(_0x2dad2f,null))[_0x2561('0x28')](function(_0x4c9b1b){if(_0x4c9b1b){_0xd9242e=_0x4c9b1b;_0x1ff049[_0x2561('0x33')]=_[_0x2561('0x48')](db['FreshsalesField'][_0x2561('0x30')]);_0x1ff049['query']=_[_0x2561('0x48')](_0x54aeef[_0x2561('0x34')]);_0x1ff049[_0x2561('0x35')]=_[_0x2561('0x37')](_0x1ff049[_0x2561('0x33')],_0x1ff049[_0x2561('0x34')]);_0x323afd[_0x2561('0x36')]=_[_0x2561('0x37')](_0x1ff049[_0x2561('0x33')],qs[_0x2561('0x38')](_0x54aeef[_0x2561('0x34')][_0x2561('0x38')]));_0x323afd[_0x2561('0x36')]=_0x323afd[_0x2561('0x36')][_0x2561('0x49')]?_0x323afd[_0x2561('0x36')]:_0x1ff049[_0x2561('0x33')];_0x323afd[_0x2561('0x51')]=qs[_0x2561('0x3b')](_0x54aeef[_0x2561('0x34')][_0x2561('0x3b')]);_0x323afd['where']=qs['filters'](_['pick'](_0x54aeef[_0x2561('0x34')],_0x1ff049['filters']));if(_0x54aeef[_0x2561('0x34')]['filter']){_0x323afd[_0x2561('0x3c')]=_[_0x2561('0x41')](_0x323afd[_0x2561('0x3c')],{'$or':_[_0x2561('0x2e')](_0x323afd[_0x2561('0x36')],function(_0x2fd8b5){var _0x1fce11={};_0x1fce11[_0x2fd8b5]={'$like':'%'+_0x54aeef[_0x2561('0x34')]['filter']+'%'};return _0x1fce11;})});}_0x323afd=_[_0x2561('0x41')]({},_0x323afd,_0x54aeef[_0x2561('0x42')]);return _0xd9242e[_0x2561('0x53')](_0x323afd);}})['then'](function(_0x4ab981){if(_0x4ab981){_0x4f2f85=_0x4ab981[_0x2561('0x49')];if(!_0x54aeef[_0x2561('0x34')][_0x2561('0x39')](_0x2561('0x3a'))){_0x323afd['limit']=qs[_0x2561('0x20')](_0x54aeef[_0x2561('0x34')][_0x2561('0x20')]);_0x323afd[_0x2561('0x1f')]=qs['offset'](_0x54aeef[_0x2561('0x34')][_0x2561('0x1f')]);}return _0xd9242e[_0x2561('0x53')](_0x323afd);}})[_0x2561('0x28')](function(_0xd67959){if(_0xd67959){return _0xd67959?{'count':_0x4f2f85,'rows':_0xd67959}:null;}})[_0x2561('0x28')](respondWithResult(_0x2dad2f,null))[_0x2561('0x46')](handleError(_0x2dad2f,null));};
\ No newline at end of file
+var _0xe515=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','update','getSubjects','findOne','FreshsalesField','order','hasOwnProperty','nolimit','getDescriptions','getFields','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x4ded76,_0x28f948){var _0x1b101f=function(_0x39b9c5){while(--_0x39b9c5){_0x4ded76['push'](_0x4ded76['shift']());}};_0x1b101f(++_0x28f948);}(_0xe515,0x194));var _0x5e51=function(_0x1e2d7b,_0x33ee06){_0x1e2d7b=_0x1e2d7b-0x0;var _0x3a7aeb=_0xe515[_0x1e2d7b];return _0x3a7aeb;};'use strict';var emlformat=require(_0x5e51('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5e51('0x1'));var jsonpatch=require(_0x5e51('0x2'));var rp=require(_0x5e51('0x3'));var moment=require(_0x5e51('0x4'));var BPromise=require(_0x5e51('0x5'));var Mustache=require(_0x5e51('0x6'));var util=require(_0x5e51('0x7'));var path=require('path');var sox=require(_0x5e51('0x8'));var csv=require(_0x5e51('0x9'));var ejs=require(_0x5e51('0xa'));var fs=require('fs');var fs_extra=require(_0x5e51('0xb'));var _=require(_0x5e51('0xc'));var squel=require(_0x5e51('0xd'));var crypto=require('crypto');var jsforce=require(_0x5e51('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5e51('0x9'));var querystring=require(_0x5e51('0xf'));var Papa=require(_0x5e51('0x10'));var Redis=require(_0x5e51('0x11'));var authService=require(_0x5e51('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5e51('0x13'));var hardwareService=require(_0x5e51('0x14'));var logger=require(_0x5e51('0x15'))(_0x5e51('0x16'));var utils=require(_0x5e51('0x17'));var config=require(_0x5e51('0x18'));var licenseUtil=require(_0x5e51('0x19'));var db=require(_0x5e51('0x1a'))['db'];function respondWithStatusCode(_0x472d00,_0x10780a){_0x10780a=_0x10780a||0xcc;return function(_0x5778ee){if(_0x5778ee){return _0x472d00[_0x5e51('0x1b')](_0x10780a);}return _0x472d00[_0x5e51('0x1c')](_0x10780a)[_0x5e51('0x1d')]();};}function respondWithResult(_0x51faa5,_0x56e840){_0x56e840=_0x56e840||0xc8;return function(_0x36589b){if(_0x36589b){return _0x51faa5[_0x5e51('0x1c')](_0x56e840)[_0x5e51('0x1e')](_0x36589b);}};}function respondWithFilteredResult(_0x87730f,_0x33b028){return function(_0x195d32){if(_0x195d32){var _0x1ac083=typeof _0x33b028['offset']===_0x5e51('0x1f')&&typeof _0x33b028['limit']===_0x5e51('0x1f');var _0x216e3c=_0x195d32[_0x5e51('0x20')];var _0x3e889a=_0x1ac083?0x0:_0x33b028['offset'];var _0x5eb951=_0x1ac083?_0x195d32[_0x5e51('0x20')]:_0x33b028[_0x5e51('0x21')]+_0x33b028[_0x5e51('0x22')];var _0xbc390b;if(_0x5eb951>=_0x216e3c){_0x5eb951=_0x216e3c;_0xbc390b=0xc8;}else{_0xbc390b=0xce;}_0x87730f[_0x5e51('0x1c')](_0xbc390b);return _0x87730f[_0x5e51('0x23')](_0x5e51('0x24'),_0x3e889a+'-'+_0x5eb951+'/'+_0x216e3c)['json'](_0x195d32);}return null;};}function patchUpdates(_0x4629a8){return function(_0x273666){try{jsonpatch[_0x5e51('0x25')](_0x273666,_0x4629a8,!![]);}catch(_0x56628d){return BPromise[_0x5e51('0x26')](_0x56628d);}return _0x273666[_0x5e51('0x27')]();};}function saveUpdates(_0x19da23,_0x295a46){return function(_0x3ab6c7){if(_0x3ab6c7){return _0x3ab6c7['update'](_0x19da23)[_0x5e51('0x28')](function(_0x594c79){return _0x594c79;});}return null;};}function removeEntity(_0x32c9d7,_0x536318){return function(_0x3f2929){if(_0x3f2929){return _0x3f2929[_0x5e51('0x29')]()[_0x5e51('0x28')](function(){_0x32c9d7[_0x5e51('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e9983,_0x56541d){return function(_0x13ada6){if(!_0x13ada6){_0x4e9983[_0x5e51('0x1b')](0x194);}return _0x13ada6;};}function handleError(_0x3fc1ca,_0x505833){_0x505833=_0x505833||0x1f4;return function(_0x254488){logger[_0x5e51('0x2a')](_0x254488[_0x5e51('0x2b')]);if(_0x254488[_0x5e51('0x2c')]){delete _0x254488[_0x5e51('0x2c')];}_0x3fc1ca[_0x5e51('0x1c')](_0x505833)[_0x5e51('0x2d')](_0x254488);};}exports[_0x5e51('0x2e')]=function(_0x11df8c,_0x5714cd){var _0x30275c={},_0x419815={},_0x3d00f6={'count':0x0,'rows':[]};var _0x405c93=_[_0x5e51('0x2f')](db[_0x5e51('0x30')][_0x5e51('0x31')],function(_0x5e4273){return{'name':_0x5e4273['fieldName'],'type':_0x5e4273[_0x5e51('0x32')][_0x5e51('0x33')]};});_0x419815['model']=_['map'](_0x405c93,_0x5e51('0x2c'));_0x419815[_0x5e51('0x34')]=_['keys'](_0x11df8c[_0x5e51('0x34')]);_0x419815[_0x5e51('0x35')]=_[_0x5e51('0x36')](_0x419815[_0x5e51('0x37')],_0x419815['query']);_0x30275c[_0x5e51('0x38')]=_['intersection'](_0x419815['model'],qs[_0x5e51('0x39')](_0x11df8c['query'][_0x5e51('0x39')]));_0x30275c[_0x5e51('0x38')]=_0x30275c['attributes'][_0x5e51('0x3a')]?_0x30275c[_0x5e51('0x38')]:_0x419815[_0x5e51('0x37')];if(!_0x11df8c[_0x5e51('0x34')]['hasOwnProperty']('nolimit')){_0x30275c[_0x5e51('0x22')]=qs[_0x5e51('0x22')](_0x11df8c['query']['limit']);_0x30275c[_0x5e51('0x21')]=qs[_0x5e51('0x21')](_0x11df8c[_0x5e51('0x34')][_0x5e51('0x21')]);}_0x30275c['order']=qs[_0x5e51('0x3b')](_0x11df8c['query']['sort']);_0x30275c[_0x5e51('0x3c')]=qs[_0x5e51('0x35')](_[_0x5e51('0x3d')](_0x11df8c[_0x5e51('0x34')],_0x419815['filters']),_0x405c93);if(_0x11df8c[_0x5e51('0x34')][_0x5e51('0x3e')]){_0x30275c[_0x5e51('0x3c')]=_['merge'](_0x30275c[_0x5e51('0x3c')],{'$or':_[_0x5e51('0x2f')](_0x405c93,function(_0x4c6c87){if(_0x4c6c87['type']!==_0x5e51('0x3f')){var _0xd30719={};_0xd30719[_0x4c6c87[_0x5e51('0x2c')]]={'$like':'%'+_0x11df8c[_0x5e51('0x34')]['filter']+'%'};return _0xd30719;}})});}_0x30275c=_[_0x5e51('0x40')]({},_0x30275c,_0x11df8c[_0x5e51('0x41')]);var _0x1c8084={'where':_0x30275c[_0x5e51('0x3c')]};return db[_0x5e51('0x30')]['count'](_0x1c8084)[_0x5e51('0x28')](function(_0x32017b){_0x3d00f6[_0x5e51('0x20')]=_0x32017b;if(_0x11df8c[_0x5e51('0x34')][_0x5e51('0x42')]){_0x30275c[_0x5e51('0x43')]=[{'all':!![]}];}return db[_0x5e51('0x30')][_0x5e51('0x44')](_0x30275c);})['then'](function(_0xa17b11){_0x3d00f6['rows']=_0xa17b11;return _0x3d00f6;})[_0x5e51('0x28')](respondWithFilteredResult(_0x5714cd,_0x30275c))[_0x5e51('0x45')](handleError(_0x5714cd,null));};exports[_0x5e51('0x46')]=function(_0xa36f84,_0x29874d){var _0x413910={'raw':![],'where':{'id':_0xa36f84[_0x5e51('0x47')]['id']}},_0x2ea197={};_0x2ea197[_0x5e51('0x37')]=_[_0x5e51('0x48')](db[_0x5e51('0x30')][_0x5e51('0x31')]);_0x2ea197[_0x5e51('0x34')]=_[_0x5e51('0x48')](_0xa36f84[_0x5e51('0x34')]);_0x2ea197[_0x5e51('0x35')]=_[_0x5e51('0x36')](_0x2ea197[_0x5e51('0x37')],_0x2ea197['query']);_0x413910[_0x5e51('0x38')]=_[_0x5e51('0x36')](_0x2ea197[_0x5e51('0x37')],qs['fields'](_0xa36f84[_0x5e51('0x34')][_0x5e51('0x39')]));_0x413910[_0x5e51('0x38')]=_0x413910[_0x5e51('0x38')]['length']?_0x413910['attributes']:_0x2ea197[_0x5e51('0x37')];if(_0xa36f84[_0x5e51('0x34')][_0x5e51('0x42')]){_0x413910[_0x5e51('0x43')]=[{'all':!![]}];}_0x413910=_['merge']({},_0x413910,_0xa36f84['options']);return db[_0x5e51('0x30')][_0x5e51('0x49')](_0x413910)[_0x5e51('0x28')](handleEntityNotFound(_0x29874d,null))['then'](respondWithResult(_0x29874d,null))['catch'](handleError(_0x29874d,null));};exports[_0x5e51('0x4a')]=function(_0x389751,_0x5ef4bd){return db[_0x5e51('0x30')][_0x5e51('0x4a')](_0x389751[_0x5e51('0x4b')],{})[_0x5e51('0x28')](respondWithResult(_0x5ef4bd,0xc9))[_0x5e51('0x45')](handleError(_0x5ef4bd,null));};exports[_0x5e51('0x4c')]=function(_0x4bcc5c,_0x395db1){if(_0x4bcc5c[_0x5e51('0x4b')]['id']){delete _0x4bcc5c[_0x5e51('0x4b')]['id'];}return db[_0x5e51('0x30')]['find']({'where':{'id':_0x4bcc5c[_0x5e51('0x47')]['id']}})[_0x5e51('0x28')](handleEntityNotFound(_0x395db1,null))[_0x5e51('0x28')](saveUpdates(_0x4bcc5c[_0x5e51('0x4b')],null))[_0x5e51('0x28')](respondWithResult(_0x395db1,null))[_0x5e51('0x45')](handleError(_0x395db1,null));};exports[_0x5e51('0x29')]=function(_0x3dfa7a,_0x442a22){return db[_0x5e51('0x30')][_0x5e51('0x49')]({'where':{'id':_0x3dfa7a[_0x5e51('0x47')]['id']}})['then'](handleEntityNotFound(_0x442a22,null))[_0x5e51('0x28')](removeEntity(_0x442a22,null))['catch'](handleError(_0x442a22,null));};exports[_0x5e51('0x4d')]=function(_0x5bb9b6,_0x43183e,_0x57e5ff){var _0x4d9b13={};var _0x34a6b3={};var _0x423410;var _0x2fe8ac;return db[_0x5e51('0x30')][_0x5e51('0x4e')]({'where':{'id':_0x5bb9b6[_0x5e51('0x47')]['id']}})[_0x5e51('0x28')](handleEntityNotFound(_0x43183e,null))[_0x5e51('0x28')](function(_0x4809f8){if(_0x4809f8){_0x423410=_0x4809f8;_0x34a6b3[_0x5e51('0x37')]=_[_0x5e51('0x48')](db[_0x5e51('0x4f')][_0x5e51('0x31')]);_0x34a6b3[_0x5e51('0x34')]=_[_0x5e51('0x48')](_0x5bb9b6[_0x5e51('0x34')]);_0x34a6b3[_0x5e51('0x35')]=_[_0x5e51('0x36')](_0x34a6b3['model'],_0x34a6b3[_0x5e51('0x34')]);_0x4d9b13[_0x5e51('0x38')]=_[_0x5e51('0x36')](_0x34a6b3['model'],qs[_0x5e51('0x39')](_0x5bb9b6[_0x5e51('0x34')]['fields']));_0x4d9b13[_0x5e51('0x38')]=_0x4d9b13['attributes'][_0x5e51('0x3a')]?_0x4d9b13[_0x5e51('0x38')]:_0x34a6b3[_0x5e51('0x37')];_0x4d9b13[_0x5e51('0x50')]=qs[_0x5e51('0x3b')](_0x5bb9b6['query']['sort']);_0x4d9b13['where']=qs[_0x5e51('0x35')](_[_0x5e51('0x3d')](_0x5bb9b6[_0x5e51('0x34')],_0x34a6b3['filters']));if(_0x5bb9b6[_0x5e51('0x34')]['filter']){_0x4d9b13[_0x5e51('0x3c')]=_[_0x5e51('0x40')](_0x4d9b13[_0x5e51('0x3c')],{'$or':_[_0x5e51('0x2f')](_0x4d9b13[_0x5e51('0x38')],function(_0x244391){var _0x232a6e={};_0x232a6e[_0x244391]={'$like':'%'+_0x5bb9b6[_0x5e51('0x34')]['filter']+'%'};return _0x232a6e;})});}_0x4d9b13=_[_0x5e51('0x40')]({},_0x4d9b13,_0x5bb9b6[_0x5e51('0x41')]);return _0x423410[_0x5e51('0x4d')](_0x4d9b13);}})[_0x5e51('0x28')](function(_0x27cb21){if(_0x27cb21){_0x2fe8ac=_0x27cb21[_0x5e51('0x3a')];if(!_0x5bb9b6[_0x5e51('0x34')][_0x5e51('0x51')](_0x5e51('0x52'))){_0x4d9b13[_0x5e51('0x22')]=qs['limit'](_0x5bb9b6[_0x5e51('0x34')]['limit']);_0x4d9b13[_0x5e51('0x21')]=qs['offset'](_0x5bb9b6[_0x5e51('0x34')]['offset']);}return _0x423410['getSubjects'](_0x4d9b13);}})[_0x5e51('0x28')](function(_0x3868d4){if(_0x3868d4){return _0x3868d4?{'count':_0x2fe8ac,'rows':_0x3868d4}:null;}})[_0x5e51('0x28')](respondWithResult(_0x43183e,null))['catch'](handleError(_0x43183e,null));};exports[_0x5e51('0x53')]=function(_0x3544a3,_0x3ffb2a,_0x2913df){var _0x2e9861={};var _0x2fe583={};var _0x3d3778;var _0x16eb85;return db[_0x5e51('0x30')]['findOne']({'where':{'id':_0x3544a3[_0x5e51('0x47')]['id']}})['then'](handleEntityNotFound(_0x3ffb2a,null))[_0x5e51('0x28')](function(_0x5ac8f5){if(_0x5ac8f5){_0x3d3778=_0x5ac8f5;_0x2fe583[_0x5e51('0x37')]=_[_0x5e51('0x48')](db['FreshsalesField'][_0x5e51('0x31')]);_0x2fe583[_0x5e51('0x34')]=_[_0x5e51('0x48')](_0x3544a3[_0x5e51('0x34')]);_0x2fe583['filters']=_['intersection'](_0x2fe583[_0x5e51('0x37')],_0x2fe583[_0x5e51('0x34')]);_0x2e9861[_0x5e51('0x38')]=_[_0x5e51('0x36')](_0x2fe583['model'],qs[_0x5e51('0x39')](_0x3544a3['query']['fields']));_0x2e9861[_0x5e51('0x38')]=_0x2e9861[_0x5e51('0x38')][_0x5e51('0x3a')]?_0x2e9861[_0x5e51('0x38')]:_0x2fe583[_0x5e51('0x37')];_0x2e9861[_0x5e51('0x50')]=qs['sort'](_0x3544a3['query'][_0x5e51('0x3b')]);_0x2e9861[_0x5e51('0x3c')]=qs['filters'](_['pick'](_0x3544a3[_0x5e51('0x34')],_0x2fe583[_0x5e51('0x35')]));if(_0x3544a3[_0x5e51('0x34')]['filter']){_0x2e9861[_0x5e51('0x3c')]=_[_0x5e51('0x40')](_0x2e9861[_0x5e51('0x3c')],{'$or':_[_0x5e51('0x2f')](_0x2e9861[_0x5e51('0x38')],function(_0x290100){var _0x3d5d9e={};_0x3d5d9e[_0x290100]={'$like':'%'+_0x3544a3[_0x5e51('0x34')][_0x5e51('0x3e')]+'%'};return _0x3d5d9e;})});}_0x2e9861=_[_0x5e51('0x40')]({},_0x2e9861,_0x3544a3[_0x5e51('0x41')]);return _0x3d3778[_0x5e51('0x53')](_0x2e9861);}})[_0x5e51('0x28')](function(_0x33a2d0){if(_0x33a2d0){_0x16eb85=_0x33a2d0[_0x5e51('0x3a')];if(!_0x3544a3['query'][_0x5e51('0x51')](_0x5e51('0x52'))){_0x2e9861[_0x5e51('0x22')]=qs[_0x5e51('0x22')](_0x3544a3['query']['limit']);_0x2e9861['offset']=qs[_0x5e51('0x21')](_0x3544a3[_0x5e51('0x34')][_0x5e51('0x21')]);}return _0x3d3778[_0x5e51('0x53')](_0x2e9861);}})[_0x5e51('0x28')](function(_0x4d7933){if(_0x4d7933){return _0x4d7933?{'count':_0x16eb85,'rows':_0x4d7933}:null;}})['then'](respondWithResult(_0x3ffb2a,null))[_0x5e51('0x45')](handleError(_0x3ffb2a,null));};exports[_0x5e51('0x54')]=function(_0x49a6fa,_0x3e953c,_0x2f920d){var _0xca53e={};var _0x11ef25={};var _0x37b153;var _0x273a3f;return db['FreshsalesConfiguration'][_0x5e51('0x4e')]({'where':{'id':_0x49a6fa[_0x5e51('0x47')]['id']}})[_0x5e51('0x28')](handleEntityNotFound(_0x3e953c,null))[_0x5e51('0x28')](function(_0x2acdc2){if(_0x2acdc2){_0x37b153=_0x2acdc2;_0x11ef25[_0x5e51('0x37')]=_['keys'](db[_0x5e51('0x4f')][_0x5e51('0x31')]);_0x11ef25[_0x5e51('0x34')]=_[_0x5e51('0x48')](_0x49a6fa[_0x5e51('0x34')]);_0x11ef25[_0x5e51('0x35')]=_[_0x5e51('0x36')](_0x11ef25['model'],_0x11ef25[_0x5e51('0x34')]);_0xca53e[_0x5e51('0x38')]=_[_0x5e51('0x36')](_0x11ef25['model'],qs[_0x5e51('0x39')](_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x39')]));_0xca53e[_0x5e51('0x38')]=_0xca53e['attributes']['length']?_0xca53e[_0x5e51('0x38')]:_0x11ef25[_0x5e51('0x37')];_0xca53e[_0x5e51('0x50')]=qs[_0x5e51('0x3b')](_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x3b')]);_0xca53e['where']=qs['filters'](_[_0x5e51('0x3d')](_0x49a6fa[_0x5e51('0x34')],_0x11ef25[_0x5e51('0x35')]));if(_0x49a6fa['query']['filter']){_0xca53e[_0x5e51('0x3c')]=_[_0x5e51('0x40')](_0xca53e[_0x5e51('0x3c')],{'$or':_[_0x5e51('0x2f')](_0xca53e[_0x5e51('0x38')],function(_0x5ea1ff){var _0x1bda55={};_0x1bda55[_0x5ea1ff]={'$like':'%'+_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x3e')]+'%'};return _0x1bda55;})});}_0xca53e=_[_0x5e51('0x40')]({},_0xca53e,_0x49a6fa[_0x5e51('0x41')]);return _0x37b153['getFields'](_0xca53e);}})['then'](function(_0x473029){if(_0x473029){_0x273a3f=_0x473029['length'];if(!_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x51')](_0x5e51('0x52'))){_0xca53e['limit']=qs[_0x5e51('0x22')](_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x22')]);_0xca53e[_0x5e51('0x21')]=qs[_0x5e51('0x21')](_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x21')]);}return _0x37b153[_0x5e51('0x54')](_0xca53e);}})[_0x5e51('0x28')](function(_0x573f49){if(_0x573f49){return _0x573f49?{'count':_0x273a3f,'rows':_0x573f49}:null;}})['then'](respondWithResult(_0x3e953c,null))['catch'](handleError(_0x3e953c,null));};
\ No newline at end of file
index 545e69f..7a809dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5d8=['moment','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','lodash','util'];(function(_0xb856a4,_0x1e3dc7){var _0x2ce5e2=function(_0x240f8f){while(--_0x240f8f){_0xb856a4['push'](_0xb856a4['shift']());}};_0x2ce5e2(++_0x1e3dc7);}(_0xd5d8,0xda));var _0x8d5d=function(_0x1e77ba,_0x19f4cc){_0x1e77ba=_0x1e77ba-0x0;var _0xb7d6f7=_0xd5d8[_0x1e77ba];return _0xb7d6f7;};'use strict';var _=require(_0x8d5d('0x0'));var util=require(_0x8d5d('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8d5d('0x2'));var BPromise=require('bluebird');var rp=require(_0x8d5d('0x3'));var fs=require('fs');var path=require(_0x8d5d('0x4'));var rimraf=require(_0x8d5d('0x5'));var config=require(_0x8d5d('0x6'));var attributes=require(_0x8d5d('0x7'));module[_0x8d5d('0x8')]=function(_0x1368c3,_0x2e0ad8){return _0x1368c3[_0x8d5d('0x9')](_0x8d5d('0xa'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2756=['path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x82d00a,_0x3477e3){var _0x3c093e=function(_0x4c5328){while(--_0x4c5328){_0x82d00a['push'](_0x82d00a['shift']());}};_0x3c093e(++_0x3477e3);}(_0x2756,0xa3));var _0x6275=function(_0x289e64,_0x5adb3c){_0x289e64=_0x289e64-0x0;var _0x30246c=_0x2756[_0x289e64];return _0x30246c;};'use strict';var _=require(_0x6275('0x0'));var util=require(_0x6275('0x1'));var logger=require(_0x6275('0x2'))(_0x6275('0x3'));var moment=require(_0x6275('0x4'));var BPromise=require(_0x6275('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6275('0x6'));var rimraf=require(_0x6275('0x7'));var config=require(_0x6275('0x8'));var attributes=require(_0x6275('0x9'));module[_0x6275('0xa')]=function(_0x1c06a2,_0x2207c1){return _0x1c06a2['define'](_0x6275('0xb'),attributes,{'tableName':_0x6275('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4e6a802..743b0db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a7b=['message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','FreshsalesConfiguration,\x20%s,\x20%s'];(function(_0x4889b6,_0x3e2c35){var _0x461518=function(_0x2aa734){while(--_0x2aa734){_0x4889b6['push'](_0x4889b6['shift']());}};_0x461518(++_0x3e2c35);}(_0x9a7b,0x118));var _0xb9a7=function(_0x64dbe7,_0x4e7c8f){_0x64dbe7=_0x64dbe7-0x0;var _0xed3ec9=_0x9a7b[_0x64dbe7];return _0xed3ec9;};'use strict';var _=require(_0xb9a7('0x0'));var util=require(_0xb9a7('0x1'));var moment=require(_0xb9a7('0x2'));var BPromise=require(_0xb9a7('0x3'));var rs=require(_0xb9a7('0x4'));var fs=require('fs');var Redis=require(_0xb9a7('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb9a7('0x6'))(_0xb9a7('0x7'));var config=require(_0xb9a7('0x8'));var jayson=require(_0xb9a7('0x9'));var client=jayson[_0xb9a7('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a85ca,_0x8f3ecd,_0x59aa3c){return new BPromise(function(_0x12f515,_0x5d1e2b){return client['request'](_0x2a85ca,_0x59aa3c)[_0xb9a7('0xb')](function(_0x56a16a){logger[_0xb9a7('0xc')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x8f3ecd,'request\x20sent');logger[_0xb9a7('0xd')](_0xb9a7('0xe'),_0x8f3ecd,'request\x20sent',JSON[_0xb9a7('0xf')](_0x56a16a));if(_0x56a16a['error']){if(_0x56a16a['error'][_0xb9a7('0x10')]===0x1f4){logger[_0xb9a7('0x11')](_0xb9a7('0x12'),_0x8f3ecd,_0x56a16a[_0xb9a7('0x11')][_0xb9a7('0x13')]);return _0x5d1e2b(_0x56a16a[_0xb9a7('0x11')][_0xb9a7('0x13')]);}logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x8f3ecd,_0x56a16a[_0xb9a7('0x11')][_0xb9a7('0x13')]);return _0x12f515(_0x56a16a[_0xb9a7('0x11')][_0xb9a7('0x13')]);}else{logger[_0xb9a7('0xc')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x8f3ecd,_0xb9a7('0x14'));_0x12f515(_0x56a16a[_0xb9a7('0x15')][_0xb9a7('0x13')]);}})[_0xb9a7('0x16')](function(_0xd070e6){logger[_0xb9a7('0x11')](_0xb9a7('0x12'),_0x8f3ecd,_0xd070e6);_0x5d1e2b(_0xd070e6);});});}
\ No newline at end of file
+var _0x4ce2=['result','message','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x361aa1,_0x35e472){var _0x3c436b=function(_0x55834c){while(--_0x55834c){_0x361aa1['push'](_0x361aa1['shift']());}};_0x3c436b(++_0x35e472);}(_0x4ce2,0x13d));var _0x24ce=function(_0xefaad,_0x338701){_0xefaad=_0xefaad-0x0;var _0x5b431e=_0x4ce2[_0xefaad];return _0x5b431e;};'use strict';var _=require(_0x24ce('0x0'));var util=require('util');var moment=require(_0x24ce('0x1'));var BPromise=require('bluebird');var rs=require(_0x24ce('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x24ce('0x3'))['db'];var utils=require(_0x24ce('0x4'));var logger=require(_0x24ce('0x5'))(_0x24ce('0x6'));var config=require(_0x24ce('0x7'));var jayson=require(_0x24ce('0x8'));var client=jayson[_0x24ce('0x9')][_0x24ce('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x334d20,_0x3419a8,_0x26e2bc){return new BPromise(function(_0x14bde1,_0x5ddf0a){return client['request'](_0x334d20,_0x26e2bc)['then'](function(_0x5d0734){logger[_0x24ce('0xb')](_0x24ce('0xc'),_0x3419a8,_0x24ce('0xd'));logger[_0x24ce('0xe')](_0x24ce('0xf'),_0x3419a8,_0x24ce('0xd'),JSON[_0x24ce('0x10')](_0x5d0734));if(_0x5d0734[_0x24ce('0x11')]){if(_0x5d0734[_0x24ce('0x11')][_0x24ce('0x12')]===0x1f4){logger[_0x24ce('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x3419a8,_0x5d0734[_0x24ce('0x11')]['message']);return _0x5ddf0a(_0x5d0734[_0x24ce('0x11')]['message']);}logger['error'](_0x24ce('0xc'),_0x3419a8,_0x5d0734['error']['message']);return _0x14bde1(_0x5d0734[_0x24ce('0x11')]['message']);}else{logger[_0x24ce('0xb')](_0x24ce('0xc'),_0x3419a8,_0x24ce('0xd'));_0x14bde1(_0x5d0734[_0x24ce('0x13')][_0x24ce('0x14')]);}})['catch'](function(_0x337c9a){logger['error'](_0x24ce('0xc'),_0x3419a8,_0x337c9a);_0x5ddf0a(_0x337c9a);});});}
\ No newline at end of file
index 9dcaa0d..51083b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x581a=['fs-extra','../../components/auth/service','./intFreshsalesField.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0x1930c6,_0x49ed64){var _0x536d7c=function(_0xfaae8d){while(--_0xfaae8d){_0x1930c6['push'](_0x1930c6['shift']());}};_0x536d7c(++_0x49ed64);}(_0x581a,0x127));var _0xa581=function(_0x17df31,_0x368f8d){_0x17df31=_0x17df31-0x0;var _0x5dcbb1=_0x581a[_0x17df31];return _0x5dcbb1;};'use strict';var multer=require(_0xa581('0x0'));var util=require(_0xa581('0x1'));var path=require('path');var timeout=require(_0xa581('0x2'));var express=require(_0xa581('0x3'));var router=express[_0xa581('0x4')]();var fs_extra=require(_0xa581('0x5'));var auth=require(_0xa581('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa581('0x7'));router['get']('/',auth[_0xa581('0x8')](),controller[_0xa581('0x9')]);router[_0xa581('0xa')](_0xa581('0xb'),auth[_0xa581('0x8')](),controller[_0xa581('0xc')]);router[_0xa581('0xd')]('/',auth[_0xa581('0x8')](),controller[_0xa581('0xe')]);router[_0xa581('0xf')](_0xa581('0xb'),auth['isAuthenticated'](),controller[_0xa581('0x10')]);router[_0xa581('0x11')](_0xa581('0xb'),auth[_0xa581('0x8')](),controller[_0xa581('0x12')]);module[_0xa581('0x13')]=router;
\ No newline at end of file
+var _0x4522=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','path','connect-timeout'];(function(_0x21a0cb,_0x5a4cc5){var _0x2e9bb4=function(_0x3b47cf){while(--_0x3b47cf){_0x21a0cb['push'](_0x21a0cb['shift']());}};_0x2e9bb4(++_0x5a4cc5);}(_0x4522,0x1a0));var _0x2452=function(_0x44608c,_0x55fcff){_0x44608c=_0x44608c-0x0;var _0x4ffaf2=_0x4522[_0x44608c];return _0x4ffaf2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2452('0x0'));var timeout=require(_0x2452('0x1'));var express=require(_0x2452('0x2'));var router=express['Router']();var fs_extra=require(_0x2452('0x3'));var auth=require(_0x2452('0x4'));var interaction=require(_0x2452('0x5'));var config=require(_0x2452('0x6'));var controller=require(_0x2452('0x7'));router[_0x2452('0x8')]('/',auth[_0x2452('0x9')](),controller[_0x2452('0xa')]);router[_0x2452('0x8')](_0x2452('0xb'),auth[_0x2452('0x9')](),controller[_0x2452('0xc')]);router[_0x2452('0xd')]('/',auth[_0x2452('0x9')](),controller[_0x2452('0xe')]);router[_0x2452('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x2452('0x10')]);router['delete']('/:id',auth[_0x2452('0x9')](),controller[_0x2452('0x11')]);module[_0x2452('0x12')]=router;
\ No newline at end of file
index 073b3b3..7cb5b42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x100c=['ENUM','string','variable','keyValue','picklist','STRING','customVariable','BOOLEAN','exports'];(function(_0x1fc84d,_0x3f469d){var _0x2658fa=function(_0x189ad0){while(--_0x189ad0){_0x1fc84d['push'](_0x1fc84d['shift']());}};_0x2658fa(++_0x3f469d);}(_0x100c,0x104));var _0xc100=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x100c[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require('sequelize');module[_0xc100('0x0')]={'type':{'type':Sequelize[_0xc100('0x1')](_0xc100('0x2'),_0xc100('0x3'),'customVariable',_0xc100('0x4'),_0xc100('0x5')),'defaultValue':_0xc100('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xc100('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0xc100('0x3'),_0xc100('0x7'))},'keyContent':{'type':Sequelize[_0xc100('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xc100('0x6')]},'customField':{'type':Sequelize[_0xc100('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc100('0x6')]}};
\ No newline at end of file
+var _0x4516=['STRING','ENUM','sequelize','exports','string','variable','customVariable','keyValue'];(function(_0x845264,_0x5bc246){var _0x57f583=function(_0x5c0079){while(--_0x5c0079){_0x845264['push'](_0x845264['shift']());}};_0x57f583(++_0x5bc246);}(_0x4516,0xa2));var _0x6451=function(_0x381eec,_0x165e28){_0x381eec=_0x381eec-0x0;var _0xdba11e=_0x4516[_0x381eec];return _0xdba11e;};'use strict';var Sequelize=require(_0x6451('0x0'));module[_0x6451('0x1')]={'type':{'type':Sequelize['ENUM'](_0x6451('0x2'),_0x6451('0x3'),_0x6451('0x4'),_0x6451('0x5'),'picklist'),'defaultValue':_0x6451('0x2')},'content':{'type':Sequelize[_0x6451('0x6')]},'key':{'type':Sequelize[_0x6451('0x6')]},'keyType':{'type':Sequelize[_0x6451('0x7')](_0x6451('0x2'),_0x6451('0x3'),_0x6451('0x4'))},'keyContent':{'type':Sequelize[_0x6451('0x6')]},'idField':{'type':Sequelize[_0x6451('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6451('0x6')]}};
\ No newline at end of file
index 442e6c9..eb65929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ed2=['save','update','destroy','then','error','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','FreshsalesField','includeAll','include','rows','catch','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x10f97c,_0x2a98a5){var _0x14279e=function(_0x18b01f){while(--_0x18b01f){_0x10f97c['push'](_0x10f97c['shift']());}};_0x14279e(++_0x2a98a5);}(_0x8ed2,0xbb));var _0x28ed=function(_0x46b489,_0x16e6e9){_0x46b489=_0x46b489-0x0;var _0x462e81=_0x8ed2[_0x46b489];return _0x462e81;};'use strict';var emlformat=require(_0x28ed('0x0'));var rimraf=require(_0x28ed('0x1'));var zipdir=require(_0x28ed('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x28ed('0x3'));var moment=require(_0x28ed('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x28ed('0x5'));var util=require('util');var path=require(_0x28ed('0x6'));var sox=require(_0x28ed('0x7'));var csv=require(_0x28ed('0x8'));var ejs=require(_0x28ed('0x9'));var fs=require('fs');var fs_extra=require(_0x28ed('0xa'));var _=require(_0x28ed('0xb'));var squel=require(_0x28ed('0xc'));var crypto=require(_0x28ed('0xd'));var jsforce=require(_0x28ed('0xe'));var deskjs=require(_0x28ed('0xf'));var toCsv=require('to-csv');var querystring=require(_0x28ed('0x10'));var Papa=require(_0x28ed('0x11'));var Redis=require(_0x28ed('0x12'));var authService=require(_0x28ed('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x28ed('0x14'));var logger=require(_0x28ed('0x15'))(_0x28ed('0x16'));var utils=require(_0x28ed('0x17'));var config=require(_0x28ed('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x28ed('0x19'))['db'];function respondWithStatusCode(_0x1f6c37,_0x37d012){_0x37d012=_0x37d012||0xcc;return function(_0x553704){if(_0x553704){return _0x1f6c37[_0x28ed('0x1a')](_0x37d012);}return _0x1f6c37[_0x28ed('0x1b')](_0x37d012)[_0x28ed('0x1c')]();};}function respondWithResult(_0x42081d,_0x268275){_0x268275=_0x268275||0xc8;return function(_0xa2ef0e){if(_0xa2ef0e){return _0x42081d[_0x28ed('0x1b')](_0x268275)[_0x28ed('0x1d')](_0xa2ef0e);}};}function respondWithFilteredResult(_0x3dd4ba,_0xaed98a){return function(_0x4d71c2){if(_0x4d71c2){var _0x3db87a=typeof _0xaed98a[_0x28ed('0x1e')]===_0x28ed('0x1f')&&typeof _0xaed98a[_0x28ed('0x20')]===_0x28ed('0x1f');var _0x1f9d6d=_0x4d71c2['count'];var _0x313841=_0x3db87a?0x0:_0xaed98a['offset'];var _0x4c4e38=_0x3db87a?_0x4d71c2[_0x28ed('0x21')]:_0xaed98a[_0x28ed('0x1e')]+_0xaed98a[_0x28ed('0x20')];var _0x402738;if(_0x4c4e38>=_0x1f9d6d){_0x4c4e38=_0x1f9d6d;_0x402738=0xc8;}else{_0x402738=0xce;}_0x3dd4ba[_0x28ed('0x1b')](_0x402738);return _0x3dd4ba[_0x28ed('0x22')](_0x28ed('0x23'),_0x313841+'-'+_0x4c4e38+'/'+_0x1f9d6d)[_0x28ed('0x1d')](_0x4d71c2);}return null;};}function patchUpdates(_0x33ff75){return function(_0x390b1f){try{jsonpatch[_0x28ed('0x24')](_0x390b1f,_0x33ff75,!![]);}catch(_0x93aa46){return BPromise[_0x28ed('0x25')](_0x93aa46);}return _0x390b1f[_0x28ed('0x26')]();};}function saveUpdates(_0x3285de,_0x1e3d1e){return function(_0xbd62d5){if(_0xbd62d5){return _0xbd62d5[_0x28ed('0x27')](_0x3285de)['then'](function(_0x4fd343){return _0x4fd343;});}return null;};}function removeEntity(_0x1201c5,_0x29ae98){return function(_0x32f256){if(_0x32f256){return _0x32f256[_0x28ed('0x28')]()[_0x28ed('0x29')](function(){_0x1201c5[_0x28ed('0x1b')](0xcc)[_0x28ed('0x1c')]();});}};}function handleEntityNotFound(_0x19e80c,_0x521e3e){return function(_0x1c8fae){if(!_0x1c8fae){_0x19e80c['sendStatus'](0x194);}return _0x1c8fae;};}function handleError(_0xe456af,_0x16da59){_0x16da59=_0x16da59||0x1f4;return function(_0x8dd066){logger[_0x28ed('0x2a')](_0x8dd066['stack']);if(_0x8dd066[_0x28ed('0x2b')]){delete _0x8dd066[_0x28ed('0x2b')];}_0xe456af[_0x28ed('0x1b')](_0x16da59)['send'](_0x8dd066);};}exports[_0x28ed('0x2c')]=function(_0x668a08,_0x29f2c8){var _0x755980={},_0x2376e1={},_0x541eb9={'count':0x0,'rows':[]};var _0x47fbd0=_[_0x28ed('0x2d')](db['FreshsalesField'][_0x28ed('0x2e')],function(_0x5ded5b){return{'name':_0x5ded5b[_0x28ed('0x2f')],'type':_0x5ded5b[_0x28ed('0x30')][_0x28ed('0x31')]};});_0x2376e1[_0x28ed('0x32')]=_[_0x28ed('0x2d')](_0x47fbd0,_0x28ed('0x2b'));_0x2376e1[_0x28ed('0x33')]=_[_0x28ed('0x34')](_0x668a08[_0x28ed('0x33')]);_0x2376e1['filters']=_[_0x28ed('0x35')](_0x2376e1[_0x28ed('0x32')],_0x2376e1[_0x28ed('0x33')]);_0x755980[_0x28ed('0x36')]=_[_0x28ed('0x35')](_0x2376e1[_0x28ed('0x32')],qs[_0x28ed('0x37')](_0x668a08[_0x28ed('0x33')][_0x28ed('0x37')]));_0x755980[_0x28ed('0x36')]=_0x755980[_0x28ed('0x36')][_0x28ed('0x38')]?_0x755980[_0x28ed('0x36')]:_0x2376e1[_0x28ed('0x32')];if(!_0x668a08[_0x28ed('0x33')]['hasOwnProperty']('nolimit')){_0x755980[_0x28ed('0x20')]=qs[_0x28ed('0x20')](_0x668a08[_0x28ed('0x33')]['limit']);_0x755980[_0x28ed('0x1e')]=qs[_0x28ed('0x1e')](_0x668a08[_0x28ed('0x33')]['offset']);}_0x755980[_0x28ed('0x39')]=qs['sort'](_0x668a08['query'][_0x28ed('0x3a')]);_0x755980[_0x28ed('0x3b')]=qs['filters'](_[_0x28ed('0x3c')](_0x668a08[_0x28ed('0x33')],_0x2376e1[_0x28ed('0x3d')]),_0x47fbd0);if(_0x668a08[_0x28ed('0x33')][_0x28ed('0x3e')]){_0x755980[_0x28ed('0x3b')]=_[_0x28ed('0x3f')](_0x755980[_0x28ed('0x3b')],{'$or':_[_0x28ed('0x2d')](_0x47fbd0,function(_0x3277ed){if(_0x3277ed[_0x28ed('0x30')]!==_0x28ed('0x40')){var _0x43a77d={};_0x43a77d[_0x3277ed[_0x28ed('0x2b')]]={'$like':'%'+_0x668a08[_0x28ed('0x33')][_0x28ed('0x3e')]+'%'};return _0x43a77d;}})});}_0x755980=_[_0x28ed('0x3f')]({},_0x755980,_0x668a08[_0x28ed('0x41')]);var _0x19f3af={'where':_0x755980[_0x28ed('0x3b')]};return db[_0x28ed('0x42')][_0x28ed('0x21')](_0x19f3af)[_0x28ed('0x29')](function(_0x499cfb){_0x541eb9[_0x28ed('0x21')]=_0x499cfb;if(_0x668a08[_0x28ed('0x33')][_0x28ed('0x43')]){_0x755980[_0x28ed('0x44')]=[{'all':!![]}];}return db[_0x28ed('0x42')]['findAll'](_0x755980);})[_0x28ed('0x29')](function(_0x41d734){_0x541eb9[_0x28ed('0x45')]=_0x41d734;return _0x541eb9;})['then'](respondWithFilteredResult(_0x29f2c8,_0x755980))[_0x28ed('0x46')](handleError(_0x29f2c8,null));};exports['show']=function(_0x2d84c5,_0x16bfbc){var _0x45855a={'raw':!![],'where':{'id':_0x2d84c5[_0x28ed('0x47')]['id']}},_0x3bbe07={};_0x3bbe07[_0x28ed('0x32')]=_[_0x28ed('0x34')](db['FreshsalesField'][_0x28ed('0x2e')]);_0x3bbe07['query']=_[_0x28ed('0x34')](_0x2d84c5[_0x28ed('0x33')]);_0x3bbe07[_0x28ed('0x3d')]=_['intersection'](_0x3bbe07[_0x28ed('0x32')],_0x3bbe07[_0x28ed('0x33')]);_0x45855a['attributes']=_[_0x28ed('0x35')](_0x3bbe07[_0x28ed('0x32')],qs['fields'](_0x2d84c5[_0x28ed('0x33')][_0x28ed('0x37')]));_0x45855a[_0x28ed('0x36')]=_0x45855a[_0x28ed('0x36')][_0x28ed('0x38')]?_0x45855a['attributes']:_0x3bbe07[_0x28ed('0x32')];if(_0x2d84c5[_0x28ed('0x33')][_0x28ed('0x43')]){_0x45855a[_0x28ed('0x44')]=[{'all':!![]}];}_0x45855a=_['merge']({},_0x45855a,_0x2d84c5['options']);return db[_0x28ed('0x42')][_0x28ed('0x48')](_0x45855a)[_0x28ed('0x29')](handleEntityNotFound(_0x16bfbc,null))[_0x28ed('0x29')](respondWithResult(_0x16bfbc,null))[_0x28ed('0x46')](handleError(_0x16bfbc,null));};exports[_0x28ed('0x49')]=function(_0x2f975c,_0x10e82e){return db[_0x28ed('0x42')][_0x28ed('0x49')](_0x2f975c[_0x28ed('0x4a')],{})['then'](respondWithResult(_0x10e82e,0xc9))[_0x28ed('0x46')](handleError(_0x10e82e,null));};exports[_0x28ed('0x27')]=function(_0x5753db,_0xc9abe2){if(_0x5753db[_0x28ed('0x4a')]['id']){delete _0x5753db[_0x28ed('0x4a')]['id'];}return db[_0x28ed('0x42')][_0x28ed('0x48')]({'where':{'id':_0x5753db[_0x28ed('0x47')]['id']}})['then'](handleEntityNotFound(_0xc9abe2,null))[_0x28ed('0x29')](saveUpdates(_0x5753db[_0x28ed('0x4a')],null))[_0x28ed('0x29')](respondWithResult(_0xc9abe2,null))[_0x28ed('0x46')](handleError(_0xc9abe2,null));};exports[_0x28ed('0x28')]=function(_0x4414f0,_0x56fdfe){return db[_0x28ed('0x42')]['find']({'where':{'id':_0x4414f0[_0x28ed('0x47')]['id']}})[_0x28ed('0x29')](handleEntityNotFound(_0x56fdfe,null))[_0x28ed('0x29')](removeEntity(_0x56fdfe,null))[_0x28ed('0x46')](handleError(_0x56fdfe,null));};
\ No newline at end of file
+var _0x9b89=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','name','send','index','map','FreshsalesField','type','key','query','keys','filters','intersection','model','fields','attributes','nolimit','sort','where','filter','merge','options','includeAll','include','findAll','show','rawAttributes','find','catch','create','body','update','params','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x9b89,0x136));var _0x99b8=function(_0xe78b7f,_0x54e807){_0xe78b7f=_0xe78b7f-0x0;var _0x144429=_0x9b89[_0xe78b7f];return _0x144429;};'use strict';var emlformat=require(_0x99b8('0x0'));var rimraf=require(_0x99b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x99b8('0x2'));var rp=require(_0x99b8('0x3'));var moment=require('moment');var BPromise=require(_0x99b8('0x4'));var Mustache=require(_0x99b8('0x5'));var util=require('util');var path=require(_0x99b8('0x6'));var sox=require(_0x99b8('0x7'));var csv=require(_0x99b8('0x8'));var ejs=require(_0x99b8('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x99b8('0xa'));var squel=require('squel');var crypto=require(_0x99b8('0xb'));var jsforce=require(_0x99b8('0xc'));var deskjs=require(_0x99b8('0xd'));var toCsv=require(_0x99b8('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x99b8('0xe'));var logger=require(_0x99b8('0xf'))(_0x99b8('0x10'));var utils=require(_0x99b8('0x11'));var config=require(_0x99b8('0x12'));var licenseUtil=require(_0x99b8('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5c7247,_0x467c95){_0x467c95=_0x467c95||0xcc;return function(_0x5f0639){if(_0x5f0639){return _0x5c7247[_0x99b8('0x14')](_0x467c95);}return _0x5c7247[_0x99b8('0x15')](_0x467c95)[_0x99b8('0x16')]();};}function respondWithResult(_0x344c46,_0x466c9e){_0x466c9e=_0x466c9e||0xc8;return function(_0x4f3042){if(_0x4f3042){return _0x344c46['status'](_0x466c9e)[_0x99b8('0x17')](_0x4f3042);}};}function respondWithFilteredResult(_0x11e24f,_0x1f7198){return function(_0x771f32){if(_0x771f32){var _0x3b551a=typeof _0x1f7198[_0x99b8('0x18')]===_0x99b8('0x19')&&typeof _0x1f7198[_0x99b8('0x1a')]===_0x99b8('0x19');var _0x58aaf7=_0x771f32[_0x99b8('0x1b')];var _0x2b4882=_0x3b551a?0x0:_0x1f7198[_0x99b8('0x18')];var _0xa5858b=_0x3b551a?_0x771f32[_0x99b8('0x1b')]:_0x1f7198[_0x99b8('0x18')]+_0x1f7198[_0x99b8('0x1a')];var _0x312325;if(_0xa5858b>=_0x58aaf7){_0xa5858b=_0x58aaf7;_0x312325=0xc8;}else{_0x312325=0xce;}_0x11e24f['status'](_0x312325);return _0x11e24f[_0x99b8('0x1c')](_0x99b8('0x1d'),_0x2b4882+'-'+_0xa5858b+'/'+_0x58aaf7)[_0x99b8('0x17')](_0x771f32);}return null;};}function patchUpdates(_0x4e2bfd){return function(_0x2bee0a){try{jsonpatch['apply'](_0x2bee0a,_0x4e2bfd,!![]);}catch(_0x898fa4){return BPromise[_0x99b8('0x1e')](_0x898fa4);}return _0x2bee0a[_0x99b8('0x1f')]();};}function saveUpdates(_0x146146,_0x14dd31){return function(_0x3c4b6f){if(_0x3c4b6f){return _0x3c4b6f['update'](_0x146146)[_0x99b8('0x20')](function(_0x162d5c){return _0x162d5c;});}return null;};}function removeEntity(_0x47fb1b,_0xe2d12c){return function(_0x31a3dd){if(_0x31a3dd){return _0x31a3dd[_0x99b8('0x21')]()[_0x99b8('0x20')](function(){_0x47fb1b[_0x99b8('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9855f8,_0x4adf4d){return function(_0xb2533){if(!_0xb2533){_0x9855f8[_0x99b8('0x14')](0x194);}return _0xb2533;};}function handleError(_0x1fb504,_0x17937f){_0x17937f=_0x17937f||0x1f4;return function(_0x1e557f){logger[_0x99b8('0x22')](_0x1e557f['stack']);if(_0x1e557f['name']){delete _0x1e557f[_0x99b8('0x23')];}_0x1fb504[_0x99b8('0x15')](_0x17937f)[_0x99b8('0x24')](_0x1e557f);};}exports[_0x99b8('0x25')]=function(_0x67fc00,_0x4a608d){var _0x374e51={},_0x2b846f={},_0x1b174e={'count':0x0,'rows':[]};var _0x29c62b=_[_0x99b8('0x26')](db[_0x99b8('0x27')]['rawAttributes'],function(_0x227d20){return{'name':_0x227d20['fieldName'],'type':_0x227d20[_0x99b8('0x28')][_0x99b8('0x29')]};});_0x2b846f['model']=_[_0x99b8('0x26')](_0x29c62b,_0x99b8('0x23'));_0x2b846f[_0x99b8('0x2a')]=_[_0x99b8('0x2b')](_0x67fc00['query']);_0x2b846f[_0x99b8('0x2c')]=_[_0x99b8('0x2d')](_0x2b846f[_0x99b8('0x2e')],_0x2b846f[_0x99b8('0x2a')]);_0x374e51['attributes']=_[_0x99b8('0x2d')](_0x2b846f[_0x99b8('0x2e')],qs[_0x99b8('0x2f')](_0x67fc00['query'][_0x99b8('0x2f')]));_0x374e51[_0x99b8('0x30')]=_0x374e51['attributes']['length']?_0x374e51[_0x99b8('0x30')]:_0x2b846f[_0x99b8('0x2e')];if(!_0x67fc00[_0x99b8('0x2a')]['hasOwnProperty'](_0x99b8('0x31'))){_0x374e51[_0x99b8('0x1a')]=qs[_0x99b8('0x1a')](_0x67fc00['query']['limit']);_0x374e51[_0x99b8('0x18')]=qs['offset'](_0x67fc00['query'][_0x99b8('0x18')]);}_0x374e51['order']=qs[_0x99b8('0x32')](_0x67fc00[_0x99b8('0x2a')][_0x99b8('0x32')]);_0x374e51[_0x99b8('0x33')]=qs['filters'](_['pick'](_0x67fc00[_0x99b8('0x2a')],_0x2b846f[_0x99b8('0x2c')]),_0x29c62b);if(_0x67fc00['query'][_0x99b8('0x34')]){_0x374e51[_0x99b8('0x33')]=_['merge'](_0x374e51[_0x99b8('0x33')],{'$or':_[_0x99b8('0x26')](_0x29c62b,function(_0x30f15f){if(_0x30f15f[_0x99b8('0x28')]!=='VIRTUAL'){var _0x716a15={};_0x716a15[_0x30f15f[_0x99b8('0x23')]]={'$like':'%'+_0x67fc00[_0x99b8('0x2a')]['filter']+'%'};return _0x716a15;}})});}_0x374e51=_[_0x99b8('0x35')]({},_0x374e51,_0x67fc00[_0x99b8('0x36')]);var _0x4cff1a={'where':_0x374e51['where']};return db[_0x99b8('0x27')][_0x99b8('0x1b')](_0x4cff1a)[_0x99b8('0x20')](function(_0x49657d){_0x1b174e[_0x99b8('0x1b')]=_0x49657d;if(_0x67fc00[_0x99b8('0x2a')][_0x99b8('0x37')]){_0x374e51[_0x99b8('0x38')]=[{'all':!![]}];}return db[_0x99b8('0x27')][_0x99b8('0x39')](_0x374e51);})[_0x99b8('0x20')](function(_0x1f2f46){_0x1b174e['rows']=_0x1f2f46;return _0x1b174e;})[_0x99b8('0x20')](respondWithFilteredResult(_0x4a608d,_0x374e51))['catch'](handleError(_0x4a608d,null));};exports[_0x99b8('0x3a')]=function(_0x565c33,_0x1bd280){var _0x11a06c={'raw':!![],'where':{'id':_0x565c33['params']['id']}},_0x57e69a={};_0x57e69a[_0x99b8('0x2e')]=_['keys'](db['FreshsalesField'][_0x99b8('0x3b')]);_0x57e69a[_0x99b8('0x2a')]=_['keys'](_0x565c33[_0x99b8('0x2a')]);_0x57e69a[_0x99b8('0x2c')]=_[_0x99b8('0x2d')](_0x57e69a[_0x99b8('0x2e')],_0x57e69a[_0x99b8('0x2a')]);_0x11a06c['attributes']=_['intersection'](_0x57e69a[_0x99b8('0x2e')],qs[_0x99b8('0x2f')](_0x565c33[_0x99b8('0x2a')]['fields']));_0x11a06c[_0x99b8('0x30')]=_0x11a06c['attributes']['length']?_0x11a06c[_0x99b8('0x30')]:_0x57e69a[_0x99b8('0x2e')];if(_0x565c33[_0x99b8('0x2a')]['includeAll']){_0x11a06c['include']=[{'all':!![]}];}_0x11a06c=_[_0x99b8('0x35')]({},_0x11a06c,_0x565c33[_0x99b8('0x36')]);return db[_0x99b8('0x27')][_0x99b8('0x3c')](_0x11a06c)['then'](handleEntityNotFound(_0x1bd280,null))['then'](respondWithResult(_0x1bd280,null))[_0x99b8('0x3d')](handleError(_0x1bd280,null));};exports[_0x99b8('0x3e')]=function(_0x394889,_0x282ec0){return db[_0x99b8('0x27')][_0x99b8('0x3e')](_0x394889[_0x99b8('0x3f')],{})['then'](respondWithResult(_0x282ec0,0xc9))['catch'](handleError(_0x282ec0,null));};exports[_0x99b8('0x40')]=function(_0x13c01e,_0x38ff39){if(_0x13c01e[_0x99b8('0x3f')]['id']){delete _0x13c01e['body']['id'];}return db[_0x99b8('0x27')][_0x99b8('0x3c')]({'where':{'id':_0x13c01e[_0x99b8('0x41')]['id']}})[_0x99b8('0x20')](handleEntityNotFound(_0x38ff39,null))[_0x99b8('0x20')](saveUpdates(_0x13c01e[_0x99b8('0x3f')],null))[_0x99b8('0x20')](respondWithResult(_0x38ff39,null))[_0x99b8('0x3d')](handleError(_0x38ff39,null));};exports[_0x99b8('0x21')]=function(_0x24a6a9,_0x5d0be4){return db['FreshsalesField'][_0x99b8('0x3c')]({'where':{'id':_0x24a6a9[_0x99b8('0x41')]['id']}})[_0x99b8('0x20')](handleEntityNotFound(_0x5d0be4,null))[_0x99b8('0x20')](removeEntity(_0x5d0be4,null))[_0x99b8('0x3d')](handleError(_0x5d0be4,null));};
\ No newline at end of file
index e8ef161..f0f167c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd943=['api','bluebird','request-promise','path','rimraf','../../config/environment','int_freshsales_fields','freshsales_unique_index','lodash','util','../../config/logger'];(function(_0x516fa8,_0x1ac2ba){var _0xe1dac5=function(_0x3fb2e6){while(--_0x3fb2e6){_0x516fa8['push'](_0x516fa8['shift']());}};_0xe1dac5(++_0x1ac2ba);}(_0xd943,0x15d));var _0x3d94=function(_0xceca68,_0x3ae11f){_0xceca68=_0xceca68-0x0;var _0x33ab4c=_0xd943[_0xceca68];return _0x33ab4c;};'use strict';var _=require(_0x3d94('0x0'));var util=require(_0x3d94('0x1'));var logger=require(_0x3d94('0x2'))(_0x3d94('0x3'));var moment=require('moment');var BPromise=require(_0x3d94('0x4'));var rp=require(_0x3d94('0x5'));var fs=require('fs');var path=require(_0x3d94('0x6'));var rimraf=require(_0x3d94('0x7'));var config=require(_0x3d94('0x8'));var attributes=require('./intFreshsalesField.attributes');module['exports']=function(_0x34c9c3,_0x51cf1f){return _0x34c9c3['define']('FreshsalesField',attributes,{'tableName':_0x3d94('0x9'),'paranoid':![],'indexes':[{'name':_0x3d94('0xa'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e6b=['../../config/environment','exports','FreshsalesField','FieldId','lodash','util','api','request-promise','path','rimraf'];(function(_0x45d5c3,_0x316484){var _0x3b7eb5=function(_0x2c88a8){while(--_0x2c88a8){_0x45d5c3['push'](_0x45d5c3['shift']());}};_0x3b7eb5(++_0x316484);}(_0x9e6b,0x11c));var _0xb9e6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9e6b[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xb9e6('0x0'));var util=require(_0xb9e6('0x1'));var logger=require('../../config/logger')(_0xb9e6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb9e6('0x3'));var fs=require('fs');var path=require(_0xb9e6('0x4'));var rimraf=require(_0xb9e6('0x5'));var config=require(_0xb9e6('0x6'));var attributes=require('./intFreshsalesField.attributes');module[_0xb9e6('0x7')]=function(_0x1a6a4f,_0x1b9eed){return _0x1a6a4f['define'](_0xb9e6('0x8'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':['idField',_0xb9e6('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c85c5b4..6fb62ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshsalesField,\x20%s,\x20%s','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','info'];(function(_0x20807c,_0x6751c4){var _0x514de5=function(_0x3a3a31){while(--_0x3a3a31){_0x20807c['push'](_0x20807c['shift']());}};_0x514de5(++_0x6751c4);}(_0x2a07,0x74));var _0x72a0=function(_0x94030f,_0x476ed2){_0x94030f=_0x94030f-0x0;var _0x9f7747=_0x2a07[_0x94030f];return _0x9f7747;};'use strict';var _=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var moment=require(_0x72a0('0x2'));var BPromise=require(_0x72a0('0x3'));var rs=require(_0x72a0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x72a0('0x5'))['db'];var utils=require(_0x72a0('0x6'));var logger=require(_0x72a0('0x7'))(_0x72a0('0x8'));var config=require(_0x72a0('0x9'));var jayson=require(_0x72a0('0xa'));var client=jayson[_0x72a0('0xb')][_0x72a0('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x193e3b,_0x287b06,_0x21c819){return new BPromise(function(_0x2c04eb,_0x22270e){return client[_0x72a0('0xd')](_0x193e3b,_0x21c819)[_0x72a0('0xe')](function(_0x2bc45b){logger['info'](_0x72a0('0xf'),_0x287b06,_0x72a0('0x10'));logger['debug'](_0x72a0('0x11'),_0x287b06,_0x72a0('0x10'),JSON[_0x72a0('0x12')](_0x2bc45b));if(_0x2bc45b[_0x72a0('0x13')]){if(_0x2bc45b[_0x72a0('0x13')]['code']===0x1f4){logger[_0x72a0('0x13')](_0x72a0('0xf'),_0x287b06,_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);return _0x22270e(_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);}logger[_0x72a0('0x13')]('FreshsalesField,\x20%s,\x20%s',_0x287b06,_0x2bc45b['error'][_0x72a0('0x14')]);return _0x2c04eb(_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);}else{logger[_0x72a0('0x15')](_0x72a0('0xf'),_0x287b06,_0x72a0('0x10'));_0x2c04eb(_0x2bc45b['result'][_0x72a0('0x14')]);}})[_0x72a0('0x16')](function(_0x16ac70){logger[_0x72a0('0x13')](_0x72a0('0xf'),_0x287b06,_0x16ac70);_0x22270e(_0x16ac70);});});}
\ No newline at end of file
+var _0x7c09=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','then','info','FreshsalesField,\x20%s,\x20%s','FreshsalesField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment'];(function(_0x44edb0,_0x7a1d21){var _0x38dbd0=function(_0xcc1e93){while(--_0xcc1e93){_0x44edb0['push'](_0x44edb0['shift']());}};_0x38dbd0(++_0x7a1d21);}(_0x7c09,0x102));var _0x97c0=function(_0x10ed23,_0x235c5d){_0x10ed23=_0x10ed23-0x0;var _0x3bddce=_0x7c09[_0x10ed23];return _0x3bddce;};'use strict';var _=require('lodash');var util=require(_0x97c0('0x0'));var moment=require(_0x97c0('0x1'));var BPromise=require('bluebird');var rs=require(_0x97c0('0x2'));var fs=require('fs');var Redis=require(_0x97c0('0x3'));var db=require(_0x97c0('0x4'))['db'];var utils=require(_0x97c0('0x5'));var logger=require(_0x97c0('0x6'))(_0x97c0('0x7'));var config=require(_0x97c0('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x46fdd9,_0x42c6c7,_0x2c19fa){return new BPromise(function(_0x109bc8,_0x293785){return client['request'](_0x46fdd9,_0x2c19fa)[_0x97c0('0x9')](function(_0x4ac5f1){logger[_0x97c0('0xa')](_0x97c0('0xb'),_0x42c6c7,'request\x20sent');logger['debug'](_0x97c0('0xc'),_0x42c6c7,_0x97c0('0xd'),JSON[_0x97c0('0xe')](_0x4ac5f1));if(_0x4ac5f1[_0x97c0('0xf')]){if(_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x10')]===0x1f4){logger[_0x97c0('0xf')](_0x97c0('0xb'),_0x42c6c7,_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x11')]);return _0x293785(_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x11')]);}logger[_0x97c0('0xf')]('FreshsalesField,\x20%s,\x20%s',_0x42c6c7,_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x11')]);return _0x109bc8(_0x4ac5f1[_0x97c0('0xf')]['message']);}else{logger[_0x97c0('0xa')](_0x97c0('0xb'),_0x42c6c7,_0x97c0('0xd'));_0x109bc8(_0x4ac5f1[_0x97c0('0x12')][_0x97c0('0x11')]);}})[_0x97c0('0x13')](function(_0x49c0d9){logger[_0x97c0('0xf')](_0x97c0('0xb'),_0x42c6c7,_0x49c0d9);_0x293785(_0x49c0d9);});});}
\ No newline at end of file
index 45077e1..92516f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x356259,_0x772558){var _0x37d369=function(_0x11803f){while(--_0x11803f){_0x356259['push'](_0x356259['shift']());}};_0x37d369(++_0x772558);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x3604c8,_0x43919c){var _0x43fb3e=function(_0x3b836c){while(--_0x3b836c){_0x3604c8['push'](_0x3604c8['shift']());}};_0x43fb3e(++_0x43919c);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 713a730..3e64685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4f8=['STRING','username','ENUM','integrationTab','newTab','exports'];(function(_0x177f21,_0x2ee985){var _0x17bc6c=function(_0x2899a0){while(--_0x2899a0){_0x177f21['push'](_0x177f21['shift']());}};_0x17bc6c(++_0x2ee985);}(_0xb4f8,0x83));var _0x8b4f=function(_0x557fd2,_0x2c0a7a){_0x557fd2=_0x557fd2-0x0;var _0x1b54a2=_0xb4f8[_0x557fd2];return _0x1b54a2;};'use strict';var Sequelize=require('sequelize');module[_0x8b4f('0x0')]={'name':{'type':Sequelize[_0x8b4f('0x1')]},'description':{'type':Sequelize[_0x8b4f('0x1')]},'username':{'type':Sequelize[_0x8b4f('0x1')],'unique':_0x8b4f('0x2')},'remoteUri':{'type':Sequelize[_0x8b4f('0x1')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x8b4f('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0x8b4f('0x1')]},'serverUrl':{'type':Sequelize[_0x8b4f('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x8b4f('0x3')](_0x8b4f('0x4'),_0x8b4f('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x0d62=['STRING','username','ENUM','sequelize'];(function(_0x2d8df3,_0x448f7e){var _0xb343bc=function(_0xec21c6){while(--_0xec21c6){_0x2d8df3['push'](_0x2d8df3['shift']());}};_0xb343bc(++_0x448f7e);}(_0x0d62,0x1df));var _0x20d6=function(_0x3ee1fe,_0x59f2a1){_0x3ee1fe=_0x3ee1fe-0x0;var _0x1ae57a=_0x0d62[_0x3ee1fe];return _0x1ae57a;};'use strict';var Sequelize=require(_0x20d6('0x0'));module['exports']={'name':{'type':Sequelize[_0x20d6('0x1')]},'description':{'type':Sequelize[_0x20d6('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x20d6('0x2')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x20d6('0x1')]},'clientId':{'type':Sequelize[_0x20d6('0x1')]},'clientSecret':{'type':Sequelize[_0x20d6('0x1')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x20d6('0x3')]('integrationTab','newTab'),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 4ac004c..afb6a73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f1=['rawAttributes','fieldName','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','type','VIRTUAL','filter','options','include','findAll','rows','show','params','includeAll','catch','create','body','find','getConfigurations','SalesforceConfiguration','addConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','Subjects','Task','remoteUri','clientSecret','securityToken','slice','substring','lastIndexOf','Connection','clientId','username','password','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','phone','remove','includes','label','custom','value','boolean','true','False','false','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','send','test','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','map','SalesforceAccount'];(function(_0x3948ec,_0x3dfb10){var _0x2ad8f4=function(_0x4282fb){while(--_0x4282fb){_0x3948ec['push'](_0x3948ec['shift']());}};_0x2ad8f4(++_0x3dfb10);}(_0xd4f1,0xcb));var _0x1d4f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd4f1[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1d4f('0x0'));var jsonpatch=require(_0x1d4f('0x1'));var rp=require(_0x1d4f('0x2'));var moment=require(_0x1d4f('0x3'));var BPromise=require(_0x1d4f('0x4'));var Mustache=require('mustache');var util=require(_0x1d4f('0x5'));var path=require('path');var sox=require(_0x1d4f('0x6'));var csv=require(_0x1d4f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1d4f('0x8'));var _=require(_0x1d4f('0x9'));var squel=require(_0x1d4f('0xa'));var crypto=require(_0x1d4f('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1d4f('0x7'));var querystring=require(_0x1d4f('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1d4f('0xd'));var logger=require(_0x1d4f('0xe'))(_0x1d4f('0xf'));var utils=require(_0x1d4f('0x10'));var config=require(_0x1d4f('0x11'));var licenseUtil=require(_0x1d4f('0x12'));var db=require(_0x1d4f('0x13'))['db'];var integrations=require(_0x1d4f('0x14'));function respondWithStatusCode(_0x2ec57b,_0x473228){_0x473228=_0x473228||0xcc;return function(_0x42e1f9){if(_0x42e1f9){return _0x2ec57b[_0x1d4f('0x15')](_0x473228);}return _0x2ec57b['status'](_0x473228)[_0x1d4f('0x16')]();};}function respondWithResult(_0x18674b,_0x25d713){_0x25d713=_0x25d713||0xc8;return function(_0x5ce670){if(_0x5ce670){return _0x18674b[_0x1d4f('0x17')](_0x25d713)[_0x1d4f('0x18')](_0x5ce670);}};}function respondWithFilteredResult(_0x2cc656,_0x272bf5){return function(_0x3684e3){if(_0x3684e3){var _0x20533d=typeof _0x272bf5[_0x1d4f('0x19')]===_0x1d4f('0x1a')&&typeof _0x272bf5[_0x1d4f('0x1b')]==='undefined';var _0x59773b=_0x3684e3['count'];var _0x16eb11=_0x20533d?0x0:_0x272bf5[_0x1d4f('0x19')];var _0x191077=_0x20533d?_0x3684e3[_0x1d4f('0x1c')]:_0x272bf5['offset']+_0x272bf5[_0x1d4f('0x1b')];var _0x1caa42;if(_0x191077>=_0x59773b){_0x191077=_0x59773b;_0x1caa42=0xc8;}else{_0x1caa42=0xce;}_0x2cc656[_0x1d4f('0x17')](_0x1caa42);return _0x2cc656[_0x1d4f('0x1d')](_0x1d4f('0x1e'),_0x16eb11+'-'+_0x191077+'/'+_0x59773b)[_0x1d4f('0x18')](_0x3684e3);}return null;};}function patchUpdates(_0x171d4e){return function(_0x3c0900){try{jsonpatch['apply'](_0x3c0900,_0x171d4e,!![]);}catch(_0x2ba709){return BPromise[_0x1d4f('0x1f')](_0x2ba709);}return _0x3c0900[_0x1d4f('0x20')]();};}function saveUpdates(_0x513a06,_0x7387d7){return function(_0x1ca0d4){if(_0x1ca0d4){return _0x1ca0d4[_0x1d4f('0x21')](_0x513a06)[_0x1d4f('0x22')](function(_0x3aa0ca){return _0x3aa0ca;});}return null;};}function removeEntity(_0x1093ae,_0x25ac7e){return function(_0x5066c5){if(_0x5066c5){return _0x5066c5[_0x1d4f('0x23')]()['then'](function(){_0x1093ae[_0x1d4f('0x17')](0xcc)[_0x1d4f('0x16')]();});}};}function handleEntityNotFound(_0x45d9e6,_0x3ccd23){return function(_0x41459b){if(!_0x41459b){_0x45d9e6['sendStatus'](0x194);}return _0x41459b;};}function handleError(_0x7a9c51,_0x324366){_0x324366=_0x324366||0x1f4;return function(_0x2ffc29){logger[_0x1d4f('0x24')](_0x2ffc29[_0x1d4f('0x25')]);if(_0x2ffc29['name']){delete _0x2ffc29[_0x1d4f('0x26')];}_0x7a9c51[_0x1d4f('0x17')](_0x324366)['send'](_0x2ffc29);};}exports['index']=function(_0xe55534,_0x391ac5){var _0x562e64={},_0x1ddbc4={},_0x5808c7={'count':0x0,'rows':[]};var _0x37d460=_[_0x1d4f('0x27')](db[_0x1d4f('0x28')][_0x1d4f('0x29')],function(_0x3b96e0){return{'name':_0x3b96e0[_0x1d4f('0x2a')],'type':_0x3b96e0['type'][_0x1d4f('0x2b')]};});_0x1ddbc4[_0x1d4f('0x2c')]=_[_0x1d4f('0x27')](_0x37d460,_0x1d4f('0x26'));_0x1ddbc4['query']=_[_0x1d4f('0x2d')](_0xe55534[_0x1d4f('0x2e')]);_0x1ddbc4[_0x1d4f('0x2f')]=_['intersection'](_0x1ddbc4[_0x1d4f('0x2c')],_0x1ddbc4[_0x1d4f('0x2e')]);_0x562e64[_0x1d4f('0x30')]=_[_0x1d4f('0x31')](_0x1ddbc4['model'],qs[_0x1d4f('0x32')](_0xe55534[_0x1d4f('0x2e')]['fields']));_0x562e64[_0x1d4f('0x30')]=_0x562e64[_0x1d4f('0x30')][_0x1d4f('0x33')]?_0x562e64['attributes']:_0x1ddbc4[_0x1d4f('0x2c')];if(!_0xe55534['query'][_0x1d4f('0x34')](_0x1d4f('0x35'))){_0x562e64['limit']=qs[_0x1d4f('0x1b')](_0xe55534[_0x1d4f('0x2e')]['limit']);_0x562e64[_0x1d4f('0x19')]=qs[_0x1d4f('0x19')](_0xe55534['query']['offset']);}_0x562e64[_0x1d4f('0x36')]=qs[_0x1d4f('0x37')](_0xe55534[_0x1d4f('0x2e')]['sort']);_0x562e64['where']=qs[_0x1d4f('0x2f')](_[_0x1d4f('0x38')](_0xe55534['query'],_0x1ddbc4[_0x1d4f('0x2f')]),_0x37d460);if(_0xe55534[_0x1d4f('0x2e')]['filter']){_0x562e64[_0x1d4f('0x39')]=_[_0x1d4f('0x3a')](_0x562e64[_0x1d4f('0x39')],{'$or':_[_0x1d4f('0x27')](_0x37d460,function(_0x3741c4){if(_0x3741c4[_0x1d4f('0x3b')]!==_0x1d4f('0x3c')){var _0x251ba4={};_0x251ba4[_0x3741c4['name']]={'$like':'%'+_0xe55534[_0x1d4f('0x2e')][_0x1d4f('0x3d')]+'%'};return _0x251ba4;}})});}_0x562e64=_[_0x1d4f('0x3a')]({},_0x562e64,_0xe55534[_0x1d4f('0x3e')]);var _0x163c8a={'where':_0x562e64[_0x1d4f('0x39')]};return db['SalesforceAccount'][_0x1d4f('0x1c')](_0x163c8a)['then'](function(_0x57e3ca){_0x5808c7['count']=_0x57e3ca;if(_0xe55534[_0x1d4f('0x2e')]['includeAll']){_0x562e64[_0x1d4f('0x3f')]=[{'all':!![]}];}return db[_0x1d4f('0x28')][_0x1d4f('0x40')](_0x562e64);})['then'](function(_0x166c5b){_0x5808c7[_0x1d4f('0x41')]=_0x166c5b;return _0x5808c7;})[_0x1d4f('0x22')](respondWithFilteredResult(_0x391ac5,_0x562e64))['catch'](handleError(_0x391ac5,null));};exports[_0x1d4f('0x42')]=function(_0x29ce3a,_0x31cd82){var _0x8c9c11={'raw':![],'where':{'id':_0x29ce3a[_0x1d4f('0x43')]['id']}},_0x11f1a6={};_0x11f1a6[_0x1d4f('0x2c')]=_['keys'](db['SalesforceAccount']['rawAttributes']);_0x11f1a6[_0x1d4f('0x2e')]=_[_0x1d4f('0x2d')](_0x29ce3a[_0x1d4f('0x2e')]);_0x11f1a6['filters']=_[_0x1d4f('0x31')](_0x11f1a6[_0x1d4f('0x2c')],_0x11f1a6[_0x1d4f('0x2e')]);_0x8c9c11[_0x1d4f('0x30')]=_[_0x1d4f('0x31')](_0x11f1a6[_0x1d4f('0x2c')],qs['fields'](_0x29ce3a[_0x1d4f('0x2e')][_0x1d4f('0x32')]));_0x8c9c11[_0x1d4f('0x30')]=_0x8c9c11['attributes'][_0x1d4f('0x33')]?_0x8c9c11[_0x1d4f('0x30')]:_0x11f1a6[_0x1d4f('0x2c')];if(_0x29ce3a[_0x1d4f('0x2e')][_0x1d4f('0x44')]){_0x8c9c11[_0x1d4f('0x3f')]=[{'all':!![]}];}_0x8c9c11=_['merge']({},_0x8c9c11,_0x29ce3a[_0x1d4f('0x3e')]);return db[_0x1d4f('0x28')]['find'](_0x8c9c11)[_0x1d4f('0x22')](handleEntityNotFound(_0x31cd82,null))['then'](respondWithResult(_0x31cd82,null))[_0x1d4f('0x45')](handleError(_0x31cd82,null));};exports[_0x1d4f('0x46')]=function(_0x5b5b65,_0x4f9781){return db['SalesforceAccount'][_0x1d4f('0x46')](_0x5b5b65['body'],{})[_0x1d4f('0x22')](respondWithResult(_0x4f9781,0xc9))[_0x1d4f('0x45')](handleError(_0x4f9781,null));};exports['update']=function(_0x387d9c,_0x3426e8){if(_0x387d9c[_0x1d4f('0x47')]['id']){delete _0x387d9c[_0x1d4f('0x47')]['id'];}return db[_0x1d4f('0x28')][_0x1d4f('0x48')]({'where':{'id':_0x387d9c[_0x1d4f('0x43')]['id']}})[_0x1d4f('0x22')](handleEntityNotFound(_0x3426e8,null))[_0x1d4f('0x22')](saveUpdates(_0x387d9c['body'],null))[_0x1d4f('0x22')](respondWithResult(_0x3426e8,null))[_0x1d4f('0x45')](handleError(_0x3426e8,null));};exports[_0x1d4f('0x23')]=function(_0xc659bf,_0x22a0f1){return db[_0x1d4f('0x28')]['find']({'where':{'id':_0xc659bf[_0x1d4f('0x43')]['id']}})[_0x1d4f('0x22')](handleEntityNotFound(_0x22a0f1,null))[_0x1d4f('0x22')](removeEntity(_0x22a0f1,null))[_0x1d4f('0x45')](handleError(_0x22a0f1,null));};exports[_0x1d4f('0x49')]=function(_0x279e4c,_0x2d98f7,_0xf17ff4){var _0x44c2a3={};var _0x50861b={};var _0x54f42a;var _0x1cdf1d;return db['SalesforceAccount']['findOne']({'where':{'id':_0x279e4c[_0x1d4f('0x43')]['id']}})['then'](handleEntityNotFound(_0x2d98f7,null))[_0x1d4f('0x22')](function(_0xa53fdd){if(_0xa53fdd){_0x54f42a=_0xa53fdd;_0x50861b[_0x1d4f('0x2c')]=_['keys'](db[_0x1d4f('0x4a')][_0x1d4f('0x29')]);_0x50861b['query']=_[_0x1d4f('0x2d')](_0x279e4c[_0x1d4f('0x2e')]);_0x50861b[_0x1d4f('0x2f')]=_['intersection'](_0x50861b[_0x1d4f('0x2c')],_0x50861b[_0x1d4f('0x2e')]);_0x44c2a3[_0x1d4f('0x30')]=_[_0x1d4f('0x31')](_0x50861b[_0x1d4f('0x2c')],qs['fields'](_0x279e4c['query'][_0x1d4f('0x32')]));_0x44c2a3[_0x1d4f('0x30')]=_0x44c2a3[_0x1d4f('0x30')][_0x1d4f('0x33')]?_0x44c2a3[_0x1d4f('0x30')]:_0x50861b['model'];_0x44c2a3['order']=qs[_0x1d4f('0x37')](_0x279e4c[_0x1d4f('0x2e')][_0x1d4f('0x37')]);_0x44c2a3[_0x1d4f('0x39')]=qs['filters'](_[_0x1d4f('0x38')](_0x279e4c['query'],_0x50861b[_0x1d4f('0x2f')]));if(_0x279e4c[_0x1d4f('0x2e')]['filter']){_0x44c2a3['where']=_[_0x1d4f('0x3a')](_0x44c2a3[_0x1d4f('0x39')],{'$or':_['map'](_0x44c2a3[_0x1d4f('0x30')],function(_0x54d03a){var _0x3c4be6={};_0x3c4be6[_0x54d03a]={'$like':'%'+_0x279e4c[_0x1d4f('0x2e')]['filter']+'%'};return _0x3c4be6;})});}_0x44c2a3=_[_0x1d4f('0x3a')]({},_0x44c2a3,_0x279e4c[_0x1d4f('0x3e')]);return _0x54f42a['getConfigurations'](_0x44c2a3);}})[_0x1d4f('0x22')](function(_0x597a6a){if(_0x597a6a){_0x1cdf1d=_0x597a6a['length'];if(!_0x279e4c[_0x1d4f('0x2e')]['hasOwnProperty'](_0x1d4f('0x35'))){_0x44c2a3[_0x1d4f('0x1b')]=qs['limit'](_0x279e4c[_0x1d4f('0x2e')][_0x1d4f('0x1b')]);_0x44c2a3[_0x1d4f('0x19')]=qs[_0x1d4f('0x19')](_0x279e4c[_0x1d4f('0x2e')][_0x1d4f('0x19')]);}return _0x54f42a[_0x1d4f('0x49')](_0x44c2a3);}})[_0x1d4f('0x22')](function(_0x57df68){if(_0x57df68){return _0x57df68?{'count':_0x1cdf1d,'rows':_0x57df68}:null;}})['then'](respondWithResult(_0x2d98f7,null))[_0x1d4f('0x45')](handleError(_0x2d98f7,null));};exports[_0x1d4f('0x4b')]=function(_0x484142,_0x5c0688,_0x3438e3){if(_0x484142[_0x1d4f('0x47')]['id']){delete _0x484142[_0x1d4f('0x47')]['id'];}return db[_0x1d4f('0x28')][_0x1d4f('0x4c')]({'where':{'id':_0x484142[_0x1d4f('0x43')]['id']}})[_0x1d4f('0x22')](handleEntityNotFound(_0x5c0688,null))[_0x1d4f('0x22')](function(_0x3fa376){if(_0x3fa376){_0x484142[_0x1d4f('0x47')][_0x1d4f('0x4d')]=_0x3fa376['id'];_0x484142[_0x1d4f('0x47')]['Subjects']=integrations[_0x1d4f('0x4e')](_0x484142[_0x1d4f('0x47')][_0x1d4f('0x4f')],_0x484142[_0x1d4f('0x47')][_0x1d4f('0x3b')]);_0x484142[_0x1d4f('0x47')][_0x1d4f('0x50')]=integrations[_0x1d4f('0x51')](_0x484142[_0x1d4f('0x47')]['channel'],_0x484142[_0x1d4f('0x47')]['type']);return db[_0x1d4f('0x4a')][_0x1d4f('0x46')](_0x484142[_0x1d4f('0x47')],{'include':[{'model':db[_0x1d4f('0x52')],'as':_0x1d4f('0x53')},{'model':db[_0x1d4f('0x52')],'as':_0x1d4f('0x50')}]});}return null;})[_0x1d4f('0x22')](respondWithResult(_0x5c0688,null))['catch'](handleError(_0x5c0688,null));};exports['getFields']=function(_0x38e8fd,_0x59da95,_0x433b9f){var _0xe1dc1c;var _0x551cfa='';var _0x476b03=_0x1d4f('0x54');return db['SalesforceAccount']['findOne']({'where':{'id':_0x38e8fd[_0x1d4f('0x43')]['id']},'attributes':['id',_0x1d4f('0x55'),'clientId',_0x1d4f('0x56'),'username','password',_0x1d4f('0x57')]})['then'](handleEntityNotFound(_0x59da95,null))[_0x1d4f('0x22')](function(_0x5a8bbb){if(_0x5a8bbb){_0x551cfa=_0x5a8bbb[_0x1d4f('0x55')];var _0x1b1e7f=_0x551cfa[_0x1d4f('0x58')](-0x1);if(_0x1b1e7f==='/'){_0x551cfa=_0x551cfa[_0x1d4f('0x59')](0x0,_0x551cfa[_0x1d4f('0x5a')](_0x1b1e7f));}_0xe1dc1c=new jsforce[(_0x1d4f('0x5b'))]({'oauth2':{'loginUrl':_0x551cfa,'clientId':_0x5a8bbb[_0x1d4f('0x5c')],'clientSecret':_0x5a8bbb['clientSecret']}});return _0xe1dc1c['login'](_0x5a8bbb[_0x1d4f('0x5d')],_0x5a8bbb[_0x1d4f('0x5e')]['concat'](_0x5a8bbb[_0x1d4f('0x57')]));}})[_0x1d4f('0x22')](function(_0x468f78){if(_0x468f78){if(!_['isNil'](_0x38e8fd[_0x1d4f('0x2e')][_0x1d4f('0x5f')])){_0x476b03=_0x38e8fd[_0x1d4f('0x2e')][_0x1d4f('0x5f')];}return _0xe1dc1c[_0x1d4f('0x60')](_0x476b03)[_0x1d4f('0x61')]();}})['then'](function(_0x32ace0){var _0x1642d7=[_0x1d4f('0x62'),_0x1d4f('0x63'),_0x1d4f('0x64'),_0x1d4f('0x65'),_0x1d4f('0x66'),_0x1d4f('0x67')];var _0x107add=[_0x1d4f('0x68'),_0x1d4f('0x69'),_0x1d4f('0x6a'),'boolean','email','textarea',_0x1d4f('0x6b')];if(_0x32ace0){_[_0x1d4f('0x6c')](_0x32ace0[_0x1d4f('0x32')],function(_0x285d9a){return _0x1642d7[_0x1d4f('0x6d')](_0x285d9a[_0x1d4f('0x26')])||!_0x107add['includes'](_0x285d9a[_0x1d4f('0x3b')]);});return{'count':_0x32ace0['fields'][_0x1d4f('0x33')],'rows':_[_0x1d4f('0x27')](_0x32ace0[_0x1d4f('0x32')],function(_0x59ed8e){return{'id':_0x59ed8e[_0x1d4f('0x26')],'name':_0x59ed8e[_0x1d4f('0x6e')],'custom':_0x59ed8e[_0x1d4f('0x6f')],'options':_0x59ed8e['picklistValues'][_0x1d4f('0x33')]>0x0?_['map'](_0x59ed8e['picklistValues'],function(_0x27cd14){return{'name':_0x27cd14[_0x1d4f('0x6e')],'value':_0x27cd14[_0x1d4f('0x70')]};}):_0x59ed8e[_0x1d4f('0x3b')]==_0x1d4f('0x71')?[{'name':'True','value':_0x1d4f('0x72')},{'name':_0x1d4f('0x73'),'value':_0x1d4f('0x74')}]:[]};})};}})[_0x1d4f('0x22')](respondWithResult(_0x59da95,null))['catch'](function(_0x1364dc){var _0x4cee71=_0x38e8fd[_0x1d4f('0x2e')]['test']?0x1f4:_0x1364dc[_0x1d4f('0x75')]||0x1f4;logger[_0x1d4f('0x24')](_0x1d4f('0x76'),_0x1d4f('0x77'),_0x4cee71,JSON['stringify'](_0x1364dc));delete _0x1364dc[_0x1d4f('0x26')];if(_0x4cee71===0x191){_0x4cee71=0x190;}_0x59da95[_0x1d4f('0x17')](_0x4cee71)[_0x1d4f('0x78')](_0x38e8fd[_0x1d4f('0x2e')][_0x1d4f('0x79')]?{'message':'Wrong\x20credentials','statusCode':_0x1364dc[_0x1d4f('0x75')]}:_0x1364dc);});};
\ No newline at end of file
+var _0x9b60=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','../../components/integrations/configuration','status','json','offset','count','limit','Content-Range','reject','save','then','destroy','end','sendStatus','error','stack','name','send','index','SalesforceAccount','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','order','sort','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','update','getConfigurations','pick','hasOwnProperty','nolimit','addConfiguration','findOne','channel','Descriptions','getDescriptions','SalesforceField','Task','clientId','clientSecret','username','remoteUri','slice','substring','lastIndexOf','password','concat','securityToken','isNil','describe','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','boolean','email','textarea','phone','remove','includes','custom','picklistValues','label','True','true','false','getFields','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js'];(function(_0x52826c,_0x3c3896){var _0x1b8c9b=function(_0x1aa6f5){while(--_0x1aa6f5){_0x52826c['push'](_0x52826c['shift']());}};_0x1b8c9b(++_0x3c3896);}(_0x9b60,0x6a));var _0x09b6=function(_0x41aec,_0x5c7f88){_0x41aec=_0x41aec-0x0;var _0x5e3e69=_0x9b60[_0x41aec];return _0x5e3e69;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x09b6('0x0'));var zipdir=require(_0x09b6('0x1'));var jsonpatch=require(_0x09b6('0x2'));var rp=require(_0x09b6('0x3'));var moment=require('moment');var BPromise=require(_0x09b6('0x4'));var Mustache=require('mustache');var util=require(_0x09b6('0x5'));var path=require(_0x09b6('0x6'));var sox=require(_0x09b6('0x7'));var csv=require(_0x09b6('0x8'));var ejs=require(_0x09b6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x09b6('0xa'));var squel=require(_0x09b6('0xb'));var crypto=require(_0x09b6('0xc'));var jsforce=require(_0x09b6('0xd'));var deskjs=require(_0x09b6('0xe'));var toCsv=require(_0x09b6('0x8'));var querystring=require(_0x09b6('0xf'));var Papa=require(_0x09b6('0x10'));var Redis=require(_0x09b6('0x11'));var authService=require(_0x09b6('0x12'));var qs=require(_0x09b6('0x13'));var as=require(_0x09b6('0x14'));var hardwareService=require(_0x09b6('0x15'));var logger=require(_0x09b6('0x16'))('api');var utils=require(_0x09b6('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x09b6('0x18'))['db'];var integrations=require(_0x09b6('0x19'));function respondWithStatusCode(_0x830fb5,_0x225493){_0x225493=_0x225493||0xcc;return function(_0x3a6636){if(_0x3a6636){return _0x830fb5['sendStatus'](_0x225493);}return _0x830fb5[_0x09b6('0x1a')](_0x225493)['end']();};}function respondWithResult(_0x5a4de9,_0x383d62){_0x383d62=_0x383d62||0xc8;return function(_0x4f6c87){if(_0x4f6c87){return _0x5a4de9[_0x09b6('0x1a')](_0x383d62)[_0x09b6('0x1b')](_0x4f6c87);}};}function respondWithFilteredResult(_0x40b0ed,_0x67e179){return function(_0x15bed3){if(_0x15bed3){var _0x2461e3=typeof _0x67e179[_0x09b6('0x1c')]==='undefined'&&typeof _0x67e179['limit']==='undefined';var _0x4d9578=_0x15bed3['count'];var _0x399547=_0x2461e3?0x0:_0x67e179[_0x09b6('0x1c')];var _0x5263fe=_0x2461e3?_0x15bed3[_0x09b6('0x1d')]:_0x67e179['offset']+_0x67e179[_0x09b6('0x1e')];var _0x145446;if(_0x5263fe>=_0x4d9578){_0x5263fe=_0x4d9578;_0x145446=0xc8;}else{_0x145446=0xce;}_0x40b0ed['status'](_0x145446);return _0x40b0ed['set'](_0x09b6('0x1f'),_0x399547+'-'+_0x5263fe+'/'+_0x4d9578)[_0x09b6('0x1b')](_0x15bed3);}return null;};}function patchUpdates(_0x4fe193){return function(_0x5db4ac){try{jsonpatch['apply'](_0x5db4ac,_0x4fe193,!![]);}catch(_0x3c0e60){return BPromise[_0x09b6('0x20')](_0x3c0e60);}return _0x5db4ac[_0x09b6('0x21')]();};}function saveUpdates(_0xdf4f23,_0x2b7df6){return function(_0x2885e1){if(_0x2885e1){return _0x2885e1['update'](_0xdf4f23)[_0x09b6('0x22')](function(_0x5a64bb){return _0x5a64bb;});}return null;};}function removeEntity(_0x44a5aa,_0x5ed280){return function(_0x48b82e){if(_0x48b82e){return _0x48b82e[_0x09b6('0x23')]()[_0x09b6('0x22')](function(){_0x44a5aa['status'](0xcc)[_0x09b6('0x24')]();});}};}function handleEntityNotFound(_0x309808,_0x1ea422){return function(_0x576e3a){if(!_0x576e3a){_0x309808[_0x09b6('0x25')](0x194);}return _0x576e3a;};}function handleError(_0x2a62c9,_0x3905b4){_0x3905b4=_0x3905b4||0x1f4;return function(_0x1cfc0d){logger[_0x09b6('0x26')](_0x1cfc0d[_0x09b6('0x27')]);if(_0x1cfc0d[_0x09b6('0x28')]){delete _0x1cfc0d['name'];}_0x2a62c9[_0x09b6('0x1a')](_0x3905b4)[_0x09b6('0x29')](_0x1cfc0d);};}exports[_0x09b6('0x2a')]=function(_0x3180d3,_0xc7cc86){var _0x4b18ae={},_0x1e9438={},_0x1bccdd={'count':0x0,'rows':[]};var _0x5c0458=_['map'](db[_0x09b6('0x2b')]['rawAttributes'],function(_0x297e57){return{'name':_0x297e57[_0x09b6('0x2c')],'type':_0x297e57[_0x09b6('0x2d')][_0x09b6('0x2e')]};});_0x1e9438[_0x09b6('0x2f')]=_[_0x09b6('0x30')](_0x5c0458,'name');_0x1e9438['query']=_[_0x09b6('0x31')](_0x3180d3[_0x09b6('0x32')]);_0x1e9438[_0x09b6('0x33')]=_[_0x09b6('0x34')](_0x1e9438[_0x09b6('0x2f')],_0x1e9438[_0x09b6('0x32')]);_0x4b18ae[_0x09b6('0x35')]=_['intersection'](_0x1e9438[_0x09b6('0x2f')],qs[_0x09b6('0x36')](_0x3180d3['query']['fields']));_0x4b18ae[_0x09b6('0x35')]=_0x4b18ae[_0x09b6('0x35')][_0x09b6('0x37')]?_0x4b18ae['attributes']:_0x1e9438[_0x09b6('0x2f')];if(!_0x3180d3[_0x09b6('0x32')]['hasOwnProperty']('nolimit')){_0x4b18ae[_0x09b6('0x1e')]=qs[_0x09b6('0x1e')](_0x3180d3[_0x09b6('0x32')][_0x09b6('0x1e')]);_0x4b18ae[_0x09b6('0x1c')]=qs[_0x09b6('0x1c')](_0x3180d3['query']['offset']);}_0x4b18ae[_0x09b6('0x38')]=qs[_0x09b6('0x39')](_0x3180d3[_0x09b6('0x32')][_0x09b6('0x39')]);_0x4b18ae['where']=qs[_0x09b6('0x33')](_['pick'](_0x3180d3[_0x09b6('0x32')],_0x1e9438[_0x09b6('0x33')]),_0x5c0458);if(_0x3180d3[_0x09b6('0x32')][_0x09b6('0x3a')]){_0x4b18ae[_0x09b6('0x3b')]=_[_0x09b6('0x3c')](_0x4b18ae[_0x09b6('0x3b')],{'$or':_[_0x09b6('0x30')](_0x5c0458,function(_0x3d8ba1){if(_0x3d8ba1[_0x09b6('0x2d')]!==_0x09b6('0x3d')){var _0x56c3eb={};_0x56c3eb[_0x3d8ba1[_0x09b6('0x28')]]={'$like':'%'+_0x3180d3[_0x09b6('0x32')][_0x09b6('0x3a')]+'%'};return _0x56c3eb;}})});}_0x4b18ae=_[_0x09b6('0x3c')]({},_0x4b18ae,_0x3180d3['options']);var _0x2328a5={'where':_0x4b18ae[_0x09b6('0x3b')]};return db[_0x09b6('0x2b')]['count'](_0x2328a5)[_0x09b6('0x22')](function(_0x1fc5d4){_0x1bccdd['count']=_0x1fc5d4;if(_0x3180d3[_0x09b6('0x32')][_0x09b6('0x3e')]){_0x4b18ae[_0x09b6('0x3f')]=[{'all':!![]}];}return db[_0x09b6('0x2b')][_0x09b6('0x40')](_0x4b18ae);})[_0x09b6('0x22')](function(_0x3edce4){_0x1bccdd[_0x09b6('0x41')]=_0x3edce4;return _0x1bccdd;})['then'](respondWithFilteredResult(_0xc7cc86,_0x4b18ae))[_0x09b6('0x42')](handleError(_0xc7cc86,null));};exports[_0x09b6('0x43')]=function(_0x4f67d4,_0xb08e45){var _0x324dcc={'raw':![],'where':{'id':_0x4f67d4[_0x09b6('0x44')]['id']}},_0x43c833={};_0x43c833[_0x09b6('0x2f')]=_[_0x09b6('0x31')](db[_0x09b6('0x2b')][_0x09b6('0x45')]);_0x43c833[_0x09b6('0x32')]=_[_0x09b6('0x31')](_0x4f67d4['query']);_0x43c833[_0x09b6('0x33')]=_[_0x09b6('0x34')](_0x43c833[_0x09b6('0x2f')],_0x43c833[_0x09b6('0x32')]);_0x324dcc[_0x09b6('0x35')]=_[_0x09b6('0x34')](_0x43c833[_0x09b6('0x2f')],qs[_0x09b6('0x36')](_0x4f67d4[_0x09b6('0x32')][_0x09b6('0x36')]));_0x324dcc['attributes']=_0x324dcc[_0x09b6('0x35')]['length']?_0x324dcc[_0x09b6('0x35')]:_0x43c833['model'];if(_0x4f67d4[_0x09b6('0x32')][_0x09b6('0x3e')]){_0x324dcc[_0x09b6('0x3f')]=[{'all':!![]}];}_0x324dcc=_['merge']({},_0x324dcc,_0x4f67d4[_0x09b6('0x46')]);return db[_0x09b6('0x2b')][_0x09b6('0x47')](_0x324dcc)[_0x09b6('0x22')](handleEntityNotFound(_0xb08e45,null))['then'](respondWithResult(_0xb08e45,null))['catch'](handleError(_0xb08e45,null));};exports[_0x09b6('0x48')]=function(_0x39f7e6,_0x30ba35){return db[_0x09b6('0x2b')][_0x09b6('0x48')](_0x39f7e6[_0x09b6('0x49')],{})['then'](respondWithResult(_0x30ba35,0xc9))['catch'](handleError(_0x30ba35,null));};exports[_0x09b6('0x4a')]=function(_0x3efc5a,_0x2d6bcd){if(_0x3efc5a[_0x09b6('0x49')]['id']){delete _0x3efc5a['body']['id'];}return db['SalesforceAccount']['find']({'where':{'id':_0x3efc5a[_0x09b6('0x44')]['id']}})['then'](handleEntityNotFound(_0x2d6bcd,null))[_0x09b6('0x22')](saveUpdates(_0x3efc5a[_0x09b6('0x49')],null))[_0x09b6('0x22')](respondWithResult(_0x2d6bcd,null))[_0x09b6('0x42')](handleError(_0x2d6bcd,null));};exports[_0x09b6('0x23')]=function(_0x57edbb,_0x435d55){return db['SalesforceAccount'][_0x09b6('0x47')]({'where':{'id':_0x57edbb[_0x09b6('0x44')]['id']}})['then'](handleEntityNotFound(_0x435d55,null))[_0x09b6('0x22')](removeEntity(_0x435d55,null))[_0x09b6('0x42')](handleError(_0x435d55,null));};exports[_0x09b6('0x4b')]=function(_0x59716c,_0x22cc7e,_0x43c881){var _0x508848={};var _0x3c5cc1={};var _0x5bbb5d;var _0x1a346b;return db[_0x09b6('0x2b')]['findOne']({'where':{'id':_0x59716c['params']['id']}})[_0x09b6('0x22')](handleEntityNotFound(_0x22cc7e,null))['then'](function(_0x12b020){if(_0x12b020){_0x5bbb5d=_0x12b020;_0x3c5cc1[_0x09b6('0x2f')]=_[_0x09b6('0x31')](db['SalesforceConfiguration'][_0x09b6('0x45')]);_0x3c5cc1[_0x09b6('0x32')]=_[_0x09b6('0x31')](_0x59716c[_0x09b6('0x32')]);_0x3c5cc1[_0x09b6('0x33')]=_[_0x09b6('0x34')](_0x3c5cc1[_0x09b6('0x2f')],_0x3c5cc1[_0x09b6('0x32')]);_0x508848[_0x09b6('0x35')]=_['intersection'](_0x3c5cc1[_0x09b6('0x2f')],qs[_0x09b6('0x36')](_0x59716c[_0x09b6('0x32')]['fields']));_0x508848[_0x09b6('0x35')]=_0x508848['attributes'][_0x09b6('0x37')]?_0x508848[_0x09b6('0x35')]:_0x3c5cc1[_0x09b6('0x2f')];_0x508848[_0x09b6('0x38')]=qs[_0x09b6('0x39')](_0x59716c['query'][_0x09b6('0x39')]);_0x508848[_0x09b6('0x3b')]=qs[_0x09b6('0x33')](_[_0x09b6('0x4c')](_0x59716c['query'],_0x3c5cc1[_0x09b6('0x33')]));if(_0x59716c[_0x09b6('0x32')][_0x09b6('0x3a')]){_0x508848[_0x09b6('0x3b')]=_['merge'](_0x508848[_0x09b6('0x3b')],{'$or':_['map'](_0x508848['attributes'],function(_0x22ee62){var _0xe661ef={};_0xe661ef[_0x22ee62]={'$like':'%'+_0x59716c['query'][_0x09b6('0x3a')]+'%'};return _0xe661ef;})});}_0x508848=_[_0x09b6('0x3c')]({},_0x508848,_0x59716c[_0x09b6('0x46')]);return _0x5bbb5d[_0x09b6('0x4b')](_0x508848);}})[_0x09b6('0x22')](function(_0x50652b){if(_0x50652b){_0x1a346b=_0x50652b[_0x09b6('0x37')];if(!_0x59716c[_0x09b6('0x32')][_0x09b6('0x4d')](_0x09b6('0x4e'))){_0x508848[_0x09b6('0x1e')]=qs[_0x09b6('0x1e')](_0x59716c['query'][_0x09b6('0x1e')]);_0x508848['offset']=qs['offset'](_0x59716c[_0x09b6('0x32')][_0x09b6('0x1c')]);}return _0x5bbb5d['getConfigurations'](_0x508848);}})[_0x09b6('0x22')](function(_0x5d2420){if(_0x5d2420){return _0x5d2420?{'count':_0x1a346b,'rows':_0x5d2420}:null;}})[_0x09b6('0x22')](respondWithResult(_0x22cc7e,null))[_0x09b6('0x42')](handleError(_0x22cc7e,null));};exports[_0x09b6('0x4f')]=function(_0x35e2eb,_0x805240,_0x501e32){if(_0x35e2eb[_0x09b6('0x49')]['id']){delete _0x35e2eb['body']['id'];}return db[_0x09b6('0x2b')][_0x09b6('0x50')]({'where':{'id':_0x35e2eb[_0x09b6('0x44')]['id']}})[_0x09b6('0x22')](handleEntityNotFound(_0x805240,null))[_0x09b6('0x22')](function(_0x3d7431){if(_0x3d7431){_0x35e2eb[_0x09b6('0x49')]['AccountId']=_0x3d7431['id'];_0x35e2eb['body']['Subjects']=integrations['getSubjects'](_0x35e2eb['body'][_0x09b6('0x51')],_0x35e2eb['body'][_0x09b6('0x2d')]);_0x35e2eb[_0x09b6('0x49')][_0x09b6('0x52')]=integrations[_0x09b6('0x53')](_0x35e2eb[_0x09b6('0x49')][_0x09b6('0x51')],_0x35e2eb['body'][_0x09b6('0x2d')]);return db['SalesforceConfiguration'][_0x09b6('0x48')](_0x35e2eb['body'],{'include':[{'model':db['SalesforceField'],'as':'Subjects'},{'model':db[_0x09b6('0x54')],'as':'Descriptions'}]});}return null;})[_0x09b6('0x22')](respondWithResult(_0x805240,null))[_0x09b6('0x42')](handleError(_0x805240,null));};exports['getFields']=function(_0x365076,_0x3d7e07,_0x5e801f){var _0x4261e5;var _0x3f642d='';var _0x35dd97=_0x09b6('0x55');return db[_0x09b6('0x2b')]['findOne']({'where':{'id':_0x365076[_0x09b6('0x44')]['id']},'attributes':['id','remoteUri',_0x09b6('0x56'),_0x09b6('0x57'),_0x09b6('0x58'),'password','securityToken']})[_0x09b6('0x22')](handleEntityNotFound(_0x3d7e07,null))['then'](function(_0x2721c8){if(_0x2721c8){_0x3f642d=_0x2721c8[_0x09b6('0x59')];var _0xbb8a37=_0x3f642d[_0x09b6('0x5a')](-0x1);if(_0xbb8a37==='/'){_0x3f642d=_0x3f642d[_0x09b6('0x5b')](0x0,_0x3f642d[_0x09b6('0x5c')](_0xbb8a37));}_0x4261e5=new jsforce['Connection']({'oauth2':{'loginUrl':_0x3f642d,'clientId':_0x2721c8['clientId'],'clientSecret':_0x2721c8[_0x09b6('0x57')]}});return _0x4261e5['login'](_0x2721c8[_0x09b6('0x58')],_0x2721c8[_0x09b6('0x5d')][_0x09b6('0x5e')](_0x2721c8[_0x09b6('0x5f')]));}})[_0x09b6('0x22')](function(_0x38682b){if(_0x38682b){if(!_[_0x09b6('0x60')](_0x365076['query']['ticketType'])){_0x35dd97=_0x365076[_0x09b6('0x32')]['ticketType'];}return _0x4261e5['sobject'](_0x35dd97)[_0x09b6('0x61')]();}})[_0x09b6('0x22')](function(_0x139852){var _0x266289=['OwnerId',_0x09b6('0x62'),_0x09b6('0x63'),_0x09b6('0x64'),_0x09b6('0x65'),_0x09b6('0x66')];var _0x5e3241=[_0x09b6('0x67'),_0x09b6('0x68'),_0x09b6('0x69'),_0x09b6('0x6a'),_0x09b6('0x6b'),_0x09b6('0x6c'),_0x09b6('0x6d')];if(_0x139852){_[_0x09b6('0x6e')](_0x139852['fields'],function(_0x22adeb){return _0x266289[_0x09b6('0x6f')](_0x22adeb[_0x09b6('0x28')])||!_0x5e3241[_0x09b6('0x6f')](_0x22adeb['type']);});return{'count':_0x139852[_0x09b6('0x36')][_0x09b6('0x37')],'rows':_[_0x09b6('0x30')](_0x139852[_0x09b6('0x36')],function(_0x35ce91){return{'id':_0x35ce91[_0x09b6('0x28')],'name':_0x35ce91['label'],'custom':_0x35ce91[_0x09b6('0x70')],'options':_0x35ce91[_0x09b6('0x71')][_0x09b6('0x37')]>0x0?_[_0x09b6('0x30')](_0x35ce91[_0x09b6('0x71')],function(_0xb6249){return{'name':_0xb6249[_0x09b6('0x72')],'value':_0xb6249['value']};}):_0x35ce91[_0x09b6('0x2d')]=='boolean'?[{'name':_0x09b6('0x73'),'value':_0x09b6('0x74')},{'name':'False','value':_0x09b6('0x75')}]:[]};})};}})[_0x09b6('0x22')](respondWithResult(_0x3d7e07,null))[_0x09b6('0x42')](function(_0x48e280){var _0x113cf3=_0x365076[_0x09b6('0x32')]['test']?0x1f4:_0x48e280['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x09b6('0x76'),_0x113cf3,JSON['stringify'](_0x48e280));delete _0x48e280[_0x09b6('0x28')];if(_0x113cf3===0x191){_0x113cf3=0x190;}_0x3d7e07[_0x09b6('0x1a')](_0x113cf3)[_0x09b6('0x29')](_0x365076[_0x09b6('0x32')]['test']?{'message':_0x09b6('0x77'),'statusCode':_0x48e280[_0x09b6('0x78')]}:_0x48e280);});};
\ No newline at end of file
index 6c4da7a..ce20406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d88=['rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x2d88,0x110));var _0x82d8=function(_0x59a68b,_0x316362){_0x59a68b=_0x59a68b-0x0;var _0x165097=_0x2d88[_0x59a68b];return _0x165097;};'use strict';var _=require(_0x82d8('0x0'));var util=require(_0x82d8('0x1'));var logger=require(_0x82d8('0x2'))(_0x82d8('0x3'));var moment=require(_0x82d8('0x4'));var BPromise=require(_0x82d8('0x5'));var rp=require(_0x82d8('0x6'));var fs=require('fs');var path=require(_0x82d8('0x7'));var rimraf=require(_0x82d8('0x8'));var config=require('../../config/environment');var attributes=require(_0x82d8('0x9'));var integrations=require(_0x82d8('0xa'));module['exports']=function(_0x2c89a2,_0x25a091){return _0x2c89a2[_0x82d8('0xb')](_0x82d8('0xc'),attributes,{'tableName':_0x82d8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x264f=['request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x20e0fe,_0x820e8){var _0x237d20=function(_0x3df04f){while(--_0x3df04f){_0x20e0fe['push'](_0x20e0fe['shift']());}};_0x237d20(++_0x820e8);}(_0x264f,0x19e));var _0xf264=function(_0x142d34,_0x2864c6){_0x142d34=_0x142d34-0x0;var _0x93006=_0x264f[_0x142d34];return _0x93006;};'use strict';var _=require(_0xf264('0x0'));var util=require(_0xf264('0x1'));var logger=require(_0xf264('0x2'))(_0xf264('0x3'));var moment=require(_0xf264('0x4'));var BPromise=require(_0xf264('0x5'));var rp=require(_0xf264('0x6'));var fs=require('fs');var path=require(_0xf264('0x7'));var rimraf=require(_0xf264('0x8'));var config=require(_0xf264('0x9'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0xf264('0xa'));module[_0xf264('0xb')]=function(_0x30375d,_0x5e1aba){return _0x30375d[_0xf264('0xc')](_0xf264('0xd'),attributes,{'tableName':_0xf264('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 663bfc3..dff0f24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccc1=['result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','attributes','limit','include','model','map','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x248fd7,_0x2a33e5){var _0x42d417=function(_0x182287){while(--_0x182287){_0x248fd7['push'](_0x248fd7['shift']());}};_0x42d417(++_0x2a33e5);}(_0xccc1,0x73));var _0x1ccc=function(_0x449158,_0x44e1b0){_0x449158=_0x449158-0x0;var _0x1f3c3a=_0xccc1[_0x449158];return _0x1f3c3a;};'use strict';var _=require(_0x1ccc('0x0'));var util=require(_0x1ccc('0x1'));var moment=require(_0x1ccc('0x2'));var BPromise=require(_0x1ccc('0x3'));var rs=require(_0x1ccc('0x4'));var fs=require('fs');var Redis=require(_0x1ccc('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x1ccc('0x6'));var logger=require(_0x1ccc('0x7'))(_0x1ccc('0x8'));var config=require('../../config/environment');var jayson=require(_0x1ccc('0x9'));var client=jayson[_0x1ccc('0xa')][_0x1ccc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31ce2f,_0x30af5d,_0x1312a2){return new BPromise(function(_0x3fe328,_0x23ba3f){return client[_0x1ccc('0xc')](_0x31ce2f,_0x1312a2)[_0x1ccc('0xd')](function(_0x5f58ce){logger[_0x1ccc('0xe')](_0x1ccc('0xf'),_0x30af5d,_0x1ccc('0x10'));logger['debug']('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x30af5d,'request\x20sent',JSON[_0x1ccc('0x11')](_0x5f58ce));if(_0x5f58ce[_0x1ccc('0x12')]){if(_0x5f58ce[_0x1ccc('0x12')][_0x1ccc('0x13')]===0x1f4){logger[_0x1ccc('0x12')](_0x1ccc('0xf'),_0x30af5d,_0x5f58ce[_0x1ccc('0x12')]['message']);return _0x23ba3f(_0x5f58ce[_0x1ccc('0x12')][_0x1ccc('0x14')]);}logger[_0x1ccc('0x12')](_0x1ccc('0xf'),_0x30af5d,_0x5f58ce[_0x1ccc('0x12')]['message']);return _0x3fe328(_0x5f58ce['error'][_0x1ccc('0x14')]);}else{logger[_0x1ccc('0xe')](_0x1ccc('0xf'),_0x30af5d,'request\x20sent');_0x3fe328(_0x5f58ce[_0x1ccc('0x15')][_0x1ccc('0x14')]);}})[_0x1ccc('0x16')](function(_0x5d0d9c){logger[_0x1ccc('0x12')](_0x1ccc('0xf'),_0x30af5d,_0x5d0d9c);_0x23ba3f(_0x5d0d9c);});});}exports[_0x1ccc('0x17')]=function(_0x3d14c8){var _0x16833e=this;return new Promise(function(_0x7f4201,_0x5ac66a){return db[_0x1ccc('0x18')][_0x1ccc('0x19')]({'raw':_0x3d14c8[_0x1ccc('0x1a')]?_0x3d14c8['options'][_0x1ccc('0x1b')]===undefined?!![]:![]:!![],'where':_0x3d14c8[_0x1ccc('0x1a')]?_0x3d14c8[_0x1ccc('0x1a')]['where']||null:null,'attributes':_0x3d14c8[_0x1ccc('0x1a')]?_0x3d14c8[_0x1ccc('0x1a')][_0x1ccc('0x1c')]||null:null,'limit':_0x3d14c8[_0x1ccc('0x1a')]?_0x3d14c8[_0x1ccc('0x1a')][_0x1ccc('0x1d')]||null:null,'include':_0x3d14c8[_0x1ccc('0x1a')]?_0x3d14c8[_0x1ccc('0x1a')][_0x1ccc('0x1e')]?_['map'](_0x3d14c8['options'][_0x1ccc('0x1e')],function(_0x2a5b34){return{'model':db[_0x2a5b34[_0x1ccc('0x1f')]],'as':_0x2a5b34['as'],'attributes':_0x2a5b34[_0x1ccc('0x1c')],'include':_0x2a5b34[_0x1ccc('0x1e')]?_[_0x1ccc('0x20')](_0x2a5b34[_0x1ccc('0x1e')],function(_0x51103d){return{'model':db[_0x51103d['model']],'as':_0x51103d['as'],'attributes':_0x51103d[_0x1ccc('0x1c')],'include':_0x51103d[_0x1ccc('0x1e')]?_[_0x1ccc('0x20')](_0x51103d[_0x1ccc('0x1e')],function(_0x27659a){return{'model':db[_0x27659a[_0x1ccc('0x1f')]],'as':_0x27659a['as'],'attributes':_0x27659a[_0x1ccc('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x38369d){logger[_0x1ccc('0xe')](_0x1ccc('0x17'),_0x3d14c8);logger[_0x1ccc('0x21')](_0x1ccc('0x17'),_0x3d14c8,JSON['stringify'](_0x38369d));_0x7f4201(_0x38369d);})['catch'](function(_0x40eb07){logger['error'](_0x1ccc('0x17'),_0x40eb07['message'],_0x3d14c8);_0x5ac66a(_0x16833e[_0x1ccc('0x12')](0x1f4,_0x40eb07['message']));});});};exports['ShowSalesforceAccount']=function(_0x11469f){var _0x8a31bb=this;return new Promise(function(_0x4b4ddd,_0x3f22f2){return db[_0x1ccc('0x18')]['find']({'raw':_0x11469f['options']?_0x11469f[_0x1ccc('0x1a')][_0x1ccc('0x1b')]===undefined?!![]:![]:!![],'where':_0x11469f['options']?_0x11469f[_0x1ccc('0x1a')]['where']||null:null,'attributes':_0x11469f[_0x1ccc('0x1a')]?_0x11469f[_0x1ccc('0x1a')]['attributes']||null:null,'include':_0x11469f[_0x1ccc('0x1a')]?_0x11469f[_0x1ccc('0x1a')]['include']?_[_0x1ccc('0x20')](_0x11469f[_0x1ccc('0x1a')][_0x1ccc('0x1e')],function(_0x54750f){return{'model':db[_0x54750f[_0x1ccc('0x1f')]],'as':_0x54750f['as'],'attributes':_0x54750f[_0x1ccc('0x1c')],'include':_0x54750f[_0x1ccc('0x1e')]?_[_0x1ccc('0x20')](_0x54750f[_0x1ccc('0x1e')],function(_0x22e7d8){return{'model':db[_0x22e7d8[_0x1ccc('0x1f')]],'as':_0x22e7d8['as'],'attributes':_0x22e7d8[_0x1ccc('0x1c')],'include':_0x22e7d8['include']?_['map'](_0x22e7d8[_0x1ccc('0x1e')],function(_0x538f96){return{'model':db[_0x538f96[_0x1ccc('0x1f')]],'as':_0x538f96['as'],'attributes':_0x538f96[_0x1ccc('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f0b55){logger[_0x1ccc('0xe')]('ShowSalesforceAccount',_0x11469f);logger[_0x1ccc('0x21')]('ShowSalesforceAccount',_0x11469f,JSON[_0x1ccc('0x11')](_0x1f0b55));_0x4b4ddd(_0x1f0b55);})[_0x1ccc('0x16')](function(_0x20c7b5){logger[_0x1ccc('0x12')]('ShowSalesforceAccount',_0x20c7b5[_0x1ccc('0x14')],_0x11469f);_0x3f22f2(_0x8a31bb[_0x1ccc('0x12')](0x1f4,_0x20c7b5[_0x1ccc('0x14')]));});});};
\ No newline at end of file
+var _0x7b9b=['where','attributes','limit','include','map','model','stringify','catch','ShowSalesforceAccount','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','error','code','SalesforceAccount,\x20%s,\x20%s','message','result','GetSalesforceAccount','SalesforceAccount','findAll','options','raw'];(function(_0x5c46e6,_0x7cd7ed){var _0x29df26=function(_0x4485cf){while(--_0x4485cf){_0x5c46e6['push'](_0x5c46e6['shift']());}};_0x29df26(++_0x7cd7ed);}(_0x7b9b,0x72));var _0xb7b9=function(_0x14f43b,_0x482b01){_0x14f43b=_0x14f43b-0x0;var _0x36700c=_0x7b9b[_0x14f43b];return _0x36700c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb7b9('0x0'));var BPromise=require(_0xb7b9('0x1'));var rs=require(_0xb7b9('0x2'));var fs=require('fs');var Redis=require(_0xb7b9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb7b9('0x4'));var logger=require(_0xb7b9('0x5'))('rpc');var config=require(_0xb7b9('0x6'));var jayson=require(_0xb7b9('0x7'));var client=jayson[_0xb7b9('0x8')][_0xb7b9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x28854f,_0x4ed5a7,_0x24d4e5){return new BPromise(function(_0x5f2ece,_0x36f316){return client[_0xb7b9('0xa')](_0x28854f,_0x24d4e5)[_0xb7b9('0xb')](function(_0x19c384){logger[_0xb7b9('0xc')]('SalesforceAccount,\x20%s,\x20%s',_0x4ed5a7,_0xb7b9('0xd'));logger[_0xb7b9('0xe')](_0xb7b9('0xf'),_0x4ed5a7,_0xb7b9('0xd'),JSON['stringify'](_0x19c384));if(_0x19c384[_0xb7b9('0x10')]){if(_0x19c384['error'][_0xb7b9('0x11')]===0x1f4){logger[_0xb7b9('0x10')](_0xb7b9('0x12'),_0x4ed5a7,_0x19c384[_0xb7b9('0x10')]['message']);return _0x36f316(_0x19c384['error'][_0xb7b9('0x13')]);}logger[_0xb7b9('0x10')](_0xb7b9('0x12'),_0x4ed5a7,_0x19c384['error'][_0xb7b9('0x13')]);return _0x5f2ece(_0x19c384[_0xb7b9('0x10')][_0xb7b9('0x13')]);}else{logger['info'](_0xb7b9('0x12'),_0x4ed5a7,_0xb7b9('0xd'));_0x5f2ece(_0x19c384[_0xb7b9('0x14')][_0xb7b9('0x13')]);}})['catch'](function(_0x3b569b){logger[_0xb7b9('0x10')](_0xb7b9('0x12'),_0x4ed5a7,_0x3b569b);_0x36f316(_0x3b569b);});});}exports[_0xb7b9('0x15')]=function(_0x52781e){var _0x2667c6=this;return new Promise(function(_0x5db7ad,_0x64ad28){return db[_0xb7b9('0x16')][_0xb7b9('0x17')]({'raw':_0x52781e[_0xb7b9('0x18')]?_0x52781e[_0xb7b9('0x18')][_0xb7b9('0x19')]===undefined?!![]:![]:!![],'where':_0x52781e[_0xb7b9('0x18')]?_0x52781e[_0xb7b9('0x18')][_0xb7b9('0x1a')]||null:null,'attributes':_0x52781e['options']?_0x52781e[_0xb7b9('0x18')][_0xb7b9('0x1b')]||null:null,'limit':_0x52781e['options']?_0x52781e[_0xb7b9('0x18')][_0xb7b9('0x1c')]||null:null,'include':_0x52781e[_0xb7b9('0x18')]?_0x52781e['options'][_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x52781e[_0xb7b9('0x18')][_0xb7b9('0x1d')],function(_0x2b79e5){return{'model':db[_0x2b79e5[_0xb7b9('0x1f')]],'as':_0x2b79e5['as'],'attributes':_0x2b79e5[_0xb7b9('0x1b')],'include':_0x2b79e5[_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x2b79e5['include'],function(_0x27b484){return{'model':db[_0x27b484[_0xb7b9('0x1f')]],'as':_0x27b484['as'],'attributes':_0x27b484[_0xb7b9('0x1b')],'include':_0x27b484[_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x27b484[_0xb7b9('0x1d')],function(_0x5a96ae){return{'model':db[_0x5a96ae[_0xb7b9('0x1f')]],'as':_0x5a96ae['as'],'attributes':_0x5a96ae['attributes']};}):[]};}):[]};}):[]:[]})[_0xb7b9('0xb')](function(_0x5c57c4){logger[_0xb7b9('0xc')](_0xb7b9('0x15'),_0x52781e);logger[_0xb7b9('0xe')]('GetSalesforceAccount',_0x52781e,JSON[_0xb7b9('0x20')](_0x5c57c4));_0x5db7ad(_0x5c57c4);})[_0xb7b9('0x21')](function(_0x4d5c7f){logger[_0xb7b9('0x10')](_0xb7b9('0x15'),_0x4d5c7f[_0xb7b9('0x13')],_0x52781e);_0x64ad28(_0x2667c6[_0xb7b9('0x10')](0x1f4,_0x4d5c7f[_0xb7b9('0x13')]));});});};exports[_0xb7b9('0x22')]=function(_0x580287){var _0x5e8b9a=this;return new Promise(function(_0x3603a6,_0x2ab528){return db[_0xb7b9('0x16')]['find']({'raw':_0x580287['options']?_0x580287[_0xb7b9('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x580287[_0xb7b9('0x18')]?_0x580287['options'][_0xb7b9('0x1a')]||null:null,'attributes':_0x580287['options']?_0x580287[_0xb7b9('0x18')][_0xb7b9('0x1b')]||null:null,'include':_0x580287[_0xb7b9('0x18')]?_0x580287['options'][_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x580287['options'][_0xb7b9('0x1d')],function(_0x446af5){return{'model':db[_0x446af5[_0xb7b9('0x1f')]],'as':_0x446af5['as'],'attributes':_0x446af5[_0xb7b9('0x1b')],'include':_0x446af5[_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x446af5[_0xb7b9('0x1d')],function(_0x37e9c3){return{'model':db[_0x37e9c3[_0xb7b9('0x1f')]],'as':_0x37e9c3['as'],'attributes':_0x37e9c3[_0xb7b9('0x1b')],'include':_0x37e9c3[_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x37e9c3[_0xb7b9('0x1d')],function(_0x471584){return{'model':db[_0x471584[_0xb7b9('0x1f')]],'as':_0x471584['as'],'attributes':_0x471584[_0xb7b9('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb7b9('0xb')](function(_0x5c8f64){logger[_0xb7b9('0xc')](_0xb7b9('0x22'),_0x580287);logger[_0xb7b9('0xe')](_0xb7b9('0x22'),_0x580287,JSON[_0xb7b9('0x20')](_0x5c8f64));_0x3603a6(_0x5c8f64);})[_0xb7b9('0x21')](function(_0x2b2aee){logger[_0xb7b9('0x10')](_0xb7b9('0x22'),_0x2b2aee[_0xb7b9('0x13')],_0x580287);_0x2ab528(_0x5e8b9a[_0xb7b9('0x10')](0x1f4,_0x2b2aee[_0xb7b9('0x13')]));});});};
\ No newline at end of file
index 4908ab5..af6570b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','getSubjects','put','update','delete','destroy','exports','util','connect-timeout'];(function(_0x1ecac6,_0x1d0b9f){var _0x5918d1=function(_0x5a9594){while(--_0x5a9594){_0x1ecac6['push'](_0x1ecac6['shift']());}};_0x5918d1(++_0x1d0b9f);}(_0x5f66,0x1a0));var _0x65f6=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x5f66[_0x21a9d9];return _0x46adce;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['getFields']);router['get'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0x7')]('/:id/descriptions',auth[_0x65f6('0x8')](),controller['getDescriptions']);router['post']('/',auth[_0x65f6('0x8')](),controller['create']);router[_0x65f6('0xe')]('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xf')]);router[_0x65f6('0x10')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x11')]);module[_0x65f6('0x12')]=router;
\ No newline at end of file
+var _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_0x5a8c9e,_0x587ee4){var _0x2149fc=function(_0x4cff43){while(--_0x4cff43){_0x5a8c9e['push'](_0x5a8c9e['shift']());}};_0x2149fc(++_0x587ee4);}(_0x7a54,0x106));var _0x47a5=function(_0x3ab294,_0x57f951){_0x3ab294=_0x3ab294-0x0;var _0x362dfb=_0x7a54[_0x3ab294];return _0x362dfb;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=router;
\ No newline at end of file
index 269cc32..fd860d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76fe=['Task','contact','account_contact_lead','account','contact_lead','nothing','lead','sequelize','STRING','ENUM'];(function(_0x30217f,_0x551950){var _0x5736c0=function(_0x48775e){while(--_0x48775e){_0x30217f['push'](_0x30217f['shift']());}};_0x5736c0(++_0x551950);}(_0x76fe,0x179));var _0xe76f=function(_0x5c6403,_0xb08818){_0x5c6403=_0x5c6403-0x0;var _0x523367=_0x76fe[_0x5c6403];return _0x523367;};'use strict';var Sequelize=require(_0xe76f('0x0'));module['exports']={'name':{'type':Sequelize[_0xe76f('0x1')]},'description':{'type':Sequelize[_0xe76f('0x1')]},'ticketType':{'type':Sequelize[_0xe76f('0x2')](_0xe76f('0x3'),'Case'),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize['ENUM']('contact_lead',_0xe76f('0x4'),'lead',_0xe76f('0x5'),_0xe76f('0x6')),'defaultValue':_0xe76f('0x7')},'moduleCreate':{'type':Sequelize[_0xe76f('0x2')](_0xe76f('0x8'),_0xe76f('0x4'),_0xe76f('0x9'),'account'),'defaultValue':_0xe76f('0x9')},'leadId':{'type':Sequelize[_0xe76f('0x1')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0xe76f('0x1')]},'additionalSearchLead':{'type':Sequelize[_0xe76f('0x1')]}};
\ No newline at end of file
+var _0xaac7=['account','nothing','sequelize','exports','STRING','Task','Case','ENUM','contact_lead','contact','lead','account_contact_lead'];(function(_0x4a806e,_0x5d47a8){var _0x29aa5b=function(_0x3b7627){while(--_0x3b7627){_0x4a806e['push'](_0x4a806e['shift']());}};_0x29aa5b(++_0x5d47a8);}(_0xaac7,0x122));var _0x7aac=function(_0x383356,_0x33d2f5){_0x383356=_0x383356-0x0;var _0x32ee5a=_0xaac7[_0x383356];return _0x32ee5a;};'use strict';var Sequelize=require(_0x7aac('0x0'));module[_0x7aac('0x1')]={'name':{'type':Sequelize[_0x7aac('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize['ENUM'](_0x7aac('0x3'),_0x7aac('0x4')),'defaultValue':_0x7aac('0x3')},'moduleSearch':{'type':Sequelize[_0x7aac('0x5')](_0x7aac('0x6'),_0x7aac('0x7'),_0x7aac('0x8'),_0x7aac('0x9'),_0x7aac('0xa')),'defaultValue':_0x7aac('0x6')},'moduleCreate':{'type':Sequelize[_0x7aac('0x5')](_0x7aac('0xb'),_0x7aac('0x7'),'lead',_0x7aac('0xa')),'defaultValue':_0x7aac('0x8')},'leadId':{'type':Sequelize[_0x7aac('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x7aac('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x7aac('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x7aac('0x2')]}};
\ No newline at end of file
index 80f4c65..bca9484 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda49=['then','destroy','error','stack','name','send','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','filter','merge','where','VIRTUAL','options','include','findAll','rows','catch','show','params','find','create','body','findOne','SalesforceField','pick','getFields','getSubjects','nolimit','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','lodash','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','update'];(function(_0x436620,_0x45928e){var _0x6fd3ac=function(_0x4b1847){while(--_0x4b1847){_0x436620['push'](_0x436620['shift']());}};_0x6fd3ac(++_0x45928e);}(_0xda49,0x1b3));var _0x9da4=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xda49[_0x2d2c16];return _0x53f2fb;};'use strict';var emlformat=require(_0x9da4('0x0'));var rimraf=require(_0x9da4('0x1'));var zipdir=require(_0x9da4('0x2'));var jsonpatch=require(_0x9da4('0x3'));var rp=require(_0x9da4('0x4'));var moment=require('moment');var BPromise=require(_0x9da4('0x5'));var Mustache=require('mustache');var util=require(_0x9da4('0x6'));var path=require(_0x9da4('0x7'));var sox=require(_0x9da4('0x8'));var csv=require('to-csv');var ejs=require(_0x9da4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9da4('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9da4('0xb'));var querystring=require(_0x9da4('0xc'));var Papa=require(_0x9da4('0xd'));var Redis=require(_0x9da4('0xe'));var authService=require(_0x9da4('0xf'));var qs=require(_0x9da4('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9da4('0x11'));var logger=require(_0x9da4('0x12'))(_0x9da4('0x13'));var utils=require(_0x9da4('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9da4('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf7faae,_0xb2c76a){_0xb2c76a=_0xb2c76a||0xcc;return function(_0x2ad892){if(_0x2ad892){return _0xf7faae[_0x9da4('0x16')](_0xb2c76a);}return _0xf7faae[_0x9da4('0x17')](_0xb2c76a)[_0x9da4('0x18')]();};}function respondWithResult(_0x5bbcd8,_0x253af1){_0x253af1=_0x253af1||0xc8;return function(_0x2cd74b){if(_0x2cd74b){return _0x5bbcd8[_0x9da4('0x17')](_0x253af1)[_0x9da4('0x19')](_0x2cd74b);}};}function respondWithFilteredResult(_0x473927,_0x2675d1){return function(_0x1685c4){if(_0x1685c4){var _0x72909c=typeof _0x2675d1[_0x9da4('0x1a')]===_0x9da4('0x1b')&&typeof _0x2675d1[_0x9da4('0x1c')]===_0x9da4('0x1b');var _0x11a5ec=_0x1685c4[_0x9da4('0x1d')];var _0x28189d=_0x72909c?0x0:_0x2675d1[_0x9da4('0x1a')];var _0x1d86e7=_0x72909c?_0x1685c4[_0x9da4('0x1d')]:_0x2675d1[_0x9da4('0x1a')]+_0x2675d1[_0x9da4('0x1c')];var _0x3b5cb0;if(_0x1d86e7>=_0x11a5ec){_0x1d86e7=_0x11a5ec;_0x3b5cb0=0xc8;}else{_0x3b5cb0=0xce;}_0x473927[_0x9da4('0x17')](_0x3b5cb0);return _0x473927['set'](_0x9da4('0x1e'),_0x28189d+'-'+_0x1d86e7+'/'+_0x11a5ec)[_0x9da4('0x19')](_0x1685c4);}return null;};}function patchUpdates(_0x4a1753){return function(_0x5a4f92){try{jsonpatch['apply'](_0x5a4f92,_0x4a1753,!![]);}catch(_0x31edd0){return BPromise[_0x9da4('0x1f')](_0x31edd0);}return _0x5a4f92['save']();};}function saveUpdates(_0x2b561c,_0x1658e0){return function(_0x2335c4){if(_0x2335c4){return _0x2335c4[_0x9da4('0x20')](_0x2b561c)[_0x9da4('0x21')](function(_0x51af87){return _0x51af87;});}return null;};}function removeEntity(_0xee6081,_0x401ec2){return function(_0x33fed8){if(_0x33fed8){return _0x33fed8[_0x9da4('0x22')]()[_0x9da4('0x21')](function(){_0xee6081['status'](0xcc)[_0x9da4('0x18')]();});}};}function handleEntityNotFound(_0x2a538d,_0x3df186){return function(_0x32314f){if(!_0x32314f){_0x2a538d[_0x9da4('0x16')](0x194);}return _0x32314f;};}function handleError(_0xb5069b,_0x32952f){_0x32952f=_0x32952f||0x1f4;return function(_0x2a466f){logger[_0x9da4('0x23')](_0x2a466f[_0x9da4('0x24')]);if(_0x2a466f[_0x9da4('0x25')]){delete _0x2a466f['name'];}_0xb5069b['status'](_0x32952f)[_0x9da4('0x26')](_0x2a466f);};}exports[_0x9da4('0x27')]=function(_0x13e4ab,_0x23db90){var _0x498fe8={},_0x4dc189={},_0x26a643={'count':0x0,'rows':[]};var _0x599a55=_[_0x9da4('0x28')](db[_0x9da4('0x29')][_0x9da4('0x2a')],function(_0x57b476){return{'name':_0x57b476[_0x9da4('0x2b')],'type':_0x57b476[_0x9da4('0x2c')][_0x9da4('0x2d')]};});_0x4dc189[_0x9da4('0x2e')]=_[_0x9da4('0x28')](_0x599a55,_0x9da4('0x25'));_0x4dc189[_0x9da4('0x2f')]=_[_0x9da4('0x30')](_0x13e4ab[_0x9da4('0x2f')]);_0x4dc189[_0x9da4('0x31')]=_[_0x9da4('0x32')](_0x4dc189[_0x9da4('0x2e')],_0x4dc189[_0x9da4('0x2f')]);_0x498fe8[_0x9da4('0x33')]=_[_0x9da4('0x32')](_0x4dc189[_0x9da4('0x2e')],qs[_0x9da4('0x34')](_0x13e4ab[_0x9da4('0x2f')][_0x9da4('0x34')]));_0x498fe8['attributes']=_0x498fe8[_0x9da4('0x33')][_0x9da4('0x35')]?_0x498fe8[_0x9da4('0x33')]:_0x4dc189[_0x9da4('0x2e')];if(!_0x13e4ab[_0x9da4('0x2f')][_0x9da4('0x36')]('nolimit')){_0x498fe8[_0x9da4('0x1c')]=qs[_0x9da4('0x1c')](_0x13e4ab[_0x9da4('0x2f')][_0x9da4('0x1c')]);_0x498fe8['offset']=qs[_0x9da4('0x1a')](_0x13e4ab[_0x9da4('0x2f')][_0x9da4('0x1a')]);}_0x498fe8[_0x9da4('0x37')]=qs['sort'](_0x13e4ab[_0x9da4('0x2f')][_0x9da4('0x38')]);_0x498fe8['where']=qs[_0x9da4('0x31')](_['pick'](_0x13e4ab[_0x9da4('0x2f')],_0x4dc189[_0x9da4('0x31')]),_0x599a55);if(_0x13e4ab['query'][_0x9da4('0x39')]){_0x498fe8['where']=_[_0x9da4('0x3a')](_0x498fe8[_0x9da4('0x3b')],{'$or':_[_0x9da4('0x28')](_0x599a55,function(_0x1d4c75){if(_0x1d4c75['type']!==_0x9da4('0x3c')){var _0x319dac={};_0x319dac[_0x1d4c75['name']]={'$like':'%'+_0x13e4ab[_0x9da4('0x2f')][_0x9da4('0x39')]+'%'};return _0x319dac;}})});}_0x498fe8=_[_0x9da4('0x3a')]({},_0x498fe8,_0x13e4ab[_0x9da4('0x3d')]);var _0x43d0d3={'where':_0x498fe8[_0x9da4('0x3b')]};return db[_0x9da4('0x29')][_0x9da4('0x1d')](_0x43d0d3)[_0x9da4('0x21')](function(_0x9b958b){_0x26a643[_0x9da4('0x1d')]=_0x9b958b;if(_0x13e4ab[_0x9da4('0x2f')]['includeAll']){_0x498fe8[_0x9da4('0x3e')]=[{'all':!![]}];}return db[_0x9da4('0x29')][_0x9da4('0x3f')](_0x498fe8);})[_0x9da4('0x21')](function(_0x595fc4){_0x26a643[_0x9da4('0x40')]=_0x595fc4;return _0x26a643;})[_0x9da4('0x21')](respondWithFilteredResult(_0x23db90,_0x498fe8))[_0x9da4('0x41')](handleError(_0x23db90,null));};exports[_0x9da4('0x42')]=function(_0x557f39,_0x114daa){var _0x4a0c8d={'raw':![],'where':{'id':_0x557f39[_0x9da4('0x43')]['id']}},_0x455211={};_0x455211[_0x9da4('0x2e')]=_[_0x9da4('0x30')](db[_0x9da4('0x29')][_0x9da4('0x2a')]);_0x455211[_0x9da4('0x2f')]=_[_0x9da4('0x30')](_0x557f39[_0x9da4('0x2f')]);_0x455211[_0x9da4('0x31')]=_['intersection'](_0x455211[_0x9da4('0x2e')],_0x455211[_0x9da4('0x2f')]);_0x4a0c8d['attributes']=_[_0x9da4('0x32')](_0x455211[_0x9da4('0x2e')],qs[_0x9da4('0x34')](_0x557f39[_0x9da4('0x2f')][_0x9da4('0x34')]));_0x4a0c8d[_0x9da4('0x33')]=_0x4a0c8d[_0x9da4('0x33')][_0x9da4('0x35')]?_0x4a0c8d['attributes']:_0x455211[_0x9da4('0x2e')];if(_0x557f39[_0x9da4('0x2f')]['includeAll']){_0x4a0c8d[_0x9da4('0x3e')]=[{'all':!![]}];}_0x4a0c8d=_['merge']({},_0x4a0c8d,_0x557f39['options']);return db[_0x9da4('0x29')][_0x9da4('0x44')](_0x4a0c8d)['then'](handleEntityNotFound(_0x114daa,null))['then'](respondWithResult(_0x114daa,null))[_0x9da4('0x41')](handleError(_0x114daa,null));};exports[_0x9da4('0x45')]=function(_0x862716,_0x2b2b14){return db[_0x9da4('0x29')][_0x9da4('0x45')](_0x862716['body'],{})['then'](respondWithResult(_0x2b2b14,0xc9))[_0x9da4('0x41')](handleError(_0x2b2b14,null));};exports[_0x9da4('0x20')]=function(_0x15ea69,_0x4fe4f9){if(_0x15ea69[_0x9da4('0x46')]['id']){delete _0x15ea69[_0x9da4('0x46')]['id'];}return db['SalesforceConfiguration'][_0x9da4('0x44')]({'where':{'id':_0x15ea69[_0x9da4('0x43')]['id']}})[_0x9da4('0x21')](handleEntityNotFound(_0x4fe4f9,null))[_0x9da4('0x21')](saveUpdates(_0x15ea69[_0x9da4('0x46')],null))[_0x9da4('0x21')](respondWithResult(_0x4fe4f9,null))['catch'](handleError(_0x4fe4f9,null));};exports[_0x9da4('0x22')]=function(_0x599233,_0x3fb4b0){return db[_0x9da4('0x29')]['find']({'where':{'id':_0x599233[_0x9da4('0x43')]['id']}})['then'](handleEntityNotFound(_0x3fb4b0,null))[_0x9da4('0x21')](removeEntity(_0x3fb4b0,null))[_0x9da4('0x41')](handleError(_0x3fb4b0,null));};exports['getFields']=function(_0x47eec0,_0x28217f,_0x5eb498){var _0x301eac={};var _0x40eba7={};var _0x9b9327;var _0x517cda;return db[_0x9da4('0x29')][_0x9da4('0x47')]({'where':{'id':_0x47eec0[_0x9da4('0x43')]['id']}})[_0x9da4('0x21')](handleEntityNotFound(_0x28217f,null))['then'](function(_0x394eae){if(_0x394eae){_0x9b9327=_0x394eae;_0x40eba7['model']=_[_0x9da4('0x30')](db[_0x9da4('0x48')][_0x9da4('0x2a')]);_0x40eba7[_0x9da4('0x2f')]=_[_0x9da4('0x30')](_0x47eec0[_0x9da4('0x2f')]);_0x40eba7[_0x9da4('0x31')]=_[_0x9da4('0x32')](_0x40eba7['model'],_0x40eba7[_0x9da4('0x2f')]);_0x301eac[_0x9da4('0x33')]=_[_0x9da4('0x32')](_0x40eba7['model'],qs[_0x9da4('0x34')](_0x47eec0[_0x9da4('0x2f')][_0x9da4('0x34')]));_0x301eac[_0x9da4('0x33')]=_0x301eac[_0x9da4('0x33')]['length']?_0x301eac['attributes']:_0x40eba7['model'];_0x301eac[_0x9da4('0x37')]=qs['sort'](_0x47eec0[_0x9da4('0x2f')][_0x9da4('0x38')]);_0x301eac[_0x9da4('0x3b')]=qs[_0x9da4('0x31')](_[_0x9da4('0x49')](_0x47eec0[_0x9da4('0x2f')],_0x40eba7[_0x9da4('0x31')]));if(_0x47eec0[_0x9da4('0x2f')][_0x9da4('0x39')]){_0x301eac[_0x9da4('0x3b')]=_[_0x9da4('0x3a')](_0x301eac[_0x9da4('0x3b')],{'$or':_[_0x9da4('0x28')](_0x301eac[_0x9da4('0x33')],function(_0x3fd379){var _0x163014={};_0x163014[_0x3fd379]={'$like':'%'+_0x47eec0['query'][_0x9da4('0x39')]+'%'};return _0x163014;})});}_0x301eac=_[_0x9da4('0x3a')]({},_0x301eac,_0x47eec0[_0x9da4('0x3d')]);return _0x9b9327['getFields'](_0x301eac);}})['then'](function(_0x4477bb){if(_0x4477bb){_0x517cda=_0x4477bb[_0x9da4('0x35')];if(!_0x47eec0[_0x9da4('0x2f')][_0x9da4('0x36')]('nolimit')){_0x301eac['limit']=qs[_0x9da4('0x1c')](_0x47eec0[_0x9da4('0x2f')][_0x9da4('0x1c')]);_0x301eac[_0x9da4('0x1a')]=qs[_0x9da4('0x1a')](_0x47eec0['query'][_0x9da4('0x1a')]);}return _0x9b9327[_0x9da4('0x4a')](_0x301eac);}})[_0x9da4('0x21')](function(_0x1c4350){if(_0x1c4350){return _0x1c4350?{'count':_0x517cda,'rows':_0x1c4350}:null;}})['then'](respondWithResult(_0x28217f,null))['catch'](handleError(_0x28217f,null));};exports[_0x9da4('0x4b')]=function(_0x478a26,_0xd67d91,_0x254da3){var _0x33c723={};var _0x4d8d76={};var _0x5bf0ff;var _0xf4bb00;return db[_0x9da4('0x29')][_0x9da4('0x47')]({'where':{'id':_0x478a26[_0x9da4('0x43')]['id']}})[_0x9da4('0x21')](handleEntityNotFound(_0xd67d91,null))[_0x9da4('0x21')](function(_0x323e71){if(_0x323e71){_0x5bf0ff=_0x323e71;_0x4d8d76['model']=_[_0x9da4('0x30')](db[_0x9da4('0x48')]['rawAttributes']);_0x4d8d76[_0x9da4('0x2f')]=_[_0x9da4('0x30')](_0x478a26['query']);_0x4d8d76['filters']=_[_0x9da4('0x32')](_0x4d8d76[_0x9da4('0x2e')],_0x4d8d76['query']);_0x33c723[_0x9da4('0x33')]=_[_0x9da4('0x32')](_0x4d8d76[_0x9da4('0x2e')],qs['fields'](_0x478a26[_0x9da4('0x2f')]['fields']));_0x33c723['attributes']=_0x33c723[_0x9da4('0x33')][_0x9da4('0x35')]?_0x33c723[_0x9da4('0x33')]:_0x4d8d76[_0x9da4('0x2e')];_0x33c723['order']=qs[_0x9da4('0x38')](_0x478a26[_0x9da4('0x2f')]['sort']);_0x33c723['where']=qs[_0x9da4('0x31')](_[_0x9da4('0x49')](_0x478a26['query'],_0x4d8d76[_0x9da4('0x31')]));if(_0x478a26[_0x9da4('0x2f')][_0x9da4('0x39')]){_0x33c723[_0x9da4('0x3b')]=_['merge'](_0x33c723[_0x9da4('0x3b')],{'$or':_[_0x9da4('0x28')](_0x33c723['attributes'],function(_0x581985){var _0x3017de={};_0x3017de[_0x581985]={'$like':'%'+_0x478a26[_0x9da4('0x2f')][_0x9da4('0x39')]+'%'};return _0x3017de;})});}_0x33c723=_[_0x9da4('0x3a')]({},_0x33c723,_0x478a26[_0x9da4('0x3d')]);return _0x5bf0ff[_0x9da4('0x4b')](_0x33c723);}})['then'](function(_0x2f672c){if(_0x2f672c){_0xf4bb00=_0x2f672c['length'];if(!_0x478a26[_0x9da4('0x2f')][_0x9da4('0x36')](_0x9da4('0x4c'))){_0x33c723[_0x9da4('0x1c')]=qs[_0x9da4('0x1c')](_0x478a26[_0x9da4('0x2f')][_0x9da4('0x1c')]);_0x33c723[_0x9da4('0x1a')]=qs['offset'](_0x478a26[_0x9da4('0x2f')][_0x9da4('0x1a')]);}return _0x5bf0ff[_0x9da4('0x4b')](_0x33c723);}})['then'](function(_0x45480e){if(_0x45480e){return _0x45480e?{'count':_0xf4bb00,'rows':_0x45480e}:null;}})['then'](respondWithResult(_0xd67d91,null))[_0x9da4('0x41')](handleError(_0xd67d91,null));};exports[_0x9da4('0x4d')]=function(_0x1fde9d,_0x1d1e62,_0x88c3a0){var _0x58fa51={};var _0x29602a={};var _0x17a209;var _0x6cf8cd;return db[_0x9da4('0x29')]['findOne']({'where':{'id':_0x1fde9d['params']['id']}})[_0x9da4('0x21')](handleEntityNotFound(_0x1d1e62,null))[_0x9da4('0x21')](function(_0x209fad){if(_0x209fad){_0x17a209=_0x209fad;_0x29602a['model']=_[_0x9da4('0x30')](db[_0x9da4('0x48')][_0x9da4('0x2a')]);_0x29602a[_0x9da4('0x2f')]=_['keys'](_0x1fde9d[_0x9da4('0x2f')]);_0x29602a['filters']=_[_0x9da4('0x32')](_0x29602a[_0x9da4('0x2e')],_0x29602a['query']);_0x58fa51[_0x9da4('0x33')]=_['intersection'](_0x29602a[_0x9da4('0x2e')],qs[_0x9da4('0x34')](_0x1fde9d[_0x9da4('0x2f')][_0x9da4('0x34')]));_0x58fa51[_0x9da4('0x33')]=_0x58fa51[_0x9da4('0x33')][_0x9da4('0x35')]?_0x58fa51['attributes']:_0x29602a[_0x9da4('0x2e')];_0x58fa51[_0x9da4('0x37')]=qs['sort'](_0x1fde9d['query'][_0x9da4('0x38')]);_0x58fa51['where']=qs[_0x9da4('0x31')](_[_0x9da4('0x49')](_0x1fde9d[_0x9da4('0x2f')],_0x29602a['filters']));if(_0x1fde9d[_0x9da4('0x2f')][_0x9da4('0x39')]){_0x58fa51[_0x9da4('0x3b')]=_['merge'](_0x58fa51[_0x9da4('0x3b')],{'$or':_[_0x9da4('0x28')](_0x58fa51[_0x9da4('0x33')],function(_0x52d432){var _0xbcb23a={};_0xbcb23a[_0x52d432]={'$like':'%'+_0x1fde9d['query']['filter']+'%'};return _0xbcb23a;})});}_0x58fa51=_[_0x9da4('0x3a')]({},_0x58fa51,_0x1fde9d[_0x9da4('0x3d')]);return _0x17a209[_0x9da4('0x4d')](_0x58fa51);}})[_0x9da4('0x21')](function(_0x505924){if(_0x505924){_0x6cf8cd=_0x505924[_0x9da4('0x35')];if(!_0x1fde9d[_0x9da4('0x2f')][_0x9da4('0x36')]('nolimit')){_0x58fa51[_0x9da4('0x1c')]=qs[_0x9da4('0x1c')](_0x1fde9d[_0x9da4('0x2f')][_0x9da4('0x1c')]);_0x58fa51[_0x9da4('0x1a')]=qs[_0x9da4('0x1a')](_0x1fde9d[_0x9da4('0x2f')][_0x9da4('0x1a')]);}return _0x17a209[_0x9da4('0x4d')](_0x58fa51);}})['then'](function(_0x3163fc){if(_0x3163fc){return _0x3163fc?{'count':_0x6cf8cd,'rows':_0x3163fc}:null;}})[_0x9da4('0x21')](respondWithResult(_0x1d1e62,null))[_0x9da4('0x41')](handleError(_0x1d1e62,null));};
\ No newline at end of file
+var _0xe927=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','status','end','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','sendStatus','error','stack','name','index','fieldName','type','map','query','keys','filters','attributes','model','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','SalesforceConfiguration','includeAll','include','catch','show','params','intersection','fields','find','create','body','destroy','getFields','findOne','SalesforceField','rawAttributes','pick','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xe927,0x88));var _0x7e92=function(_0x5de214,_0x107e9d){_0x5de214=_0x5de214-0x0;var _0x4df627=_0xe927[_0x5de214];return _0x4df627;};'use strict';var emlformat=require(_0x7e92('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7e92('0x1'));var jsonpatch=require(_0x7e92('0x2'));var rp=require(_0x7e92('0x3'));var moment=require(_0x7e92('0x4'));var BPromise=require(_0x7e92('0x5'));var Mustache=require('mustache');var util=require(_0x7e92('0x6'));var path=require(_0x7e92('0x7'));var sox=require(_0x7e92('0x8'));var csv=require(_0x7e92('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e92('0xa'));var squel=require(_0x7e92('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7e92('0xc'));var toCsv=require(_0x7e92('0x9'));var querystring=require('querystring');var Papa=require(_0x7e92('0xd'));var Redis=require(_0x7e92('0xe'));var authService=require(_0x7e92('0xf'));var qs=require(_0x7e92('0x10'));var as=require(_0x7e92('0x11'));var hardwareService=require(_0x7e92('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x7e92('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x7e92('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xc6adc,_0x2f883a){_0x2f883a=_0x2f883a||0xcc;return function(_0x3b5677){if(_0x3b5677){return _0xc6adc['sendStatus'](_0x2f883a);}return _0xc6adc[_0x7e92('0x15')](_0x2f883a)[_0x7e92('0x16')]();};}function respondWithResult(_0xaecd6,_0x1262e9){_0x1262e9=_0x1262e9||0xc8;return function(_0x2e07ad){if(_0x2e07ad){return _0xaecd6[_0x7e92('0x15')](_0x1262e9)['json'](_0x2e07ad);}};}function respondWithFilteredResult(_0x2eaeaf,_0x1239f8){return function(_0x5bb9f9){if(_0x5bb9f9){var _0xa2a1b7=typeof _0x1239f8['offset']===_0x7e92('0x17')&&typeof _0x1239f8[_0x7e92('0x18')]===_0x7e92('0x17');var _0xccd7dc=_0x5bb9f9[_0x7e92('0x19')];var _0x54b7b8=_0xa2a1b7?0x0:_0x1239f8[_0x7e92('0x1a')];var _0xff6612=_0xa2a1b7?_0x5bb9f9[_0x7e92('0x19')]:_0x1239f8['offset']+_0x1239f8['limit'];var _0x30593b;if(_0xff6612>=_0xccd7dc){_0xff6612=_0xccd7dc;_0x30593b=0xc8;}else{_0x30593b=0xce;}_0x2eaeaf[_0x7e92('0x15')](_0x30593b);return _0x2eaeaf['set'](_0x7e92('0x1b'),_0x54b7b8+'-'+_0xff6612+'/'+_0xccd7dc)[_0x7e92('0x1c')](_0x5bb9f9);}return null;};}function patchUpdates(_0x5b649b){return function(_0xf93a22){try{jsonpatch[_0x7e92('0x1d')](_0xf93a22,_0x5b649b,!![]);}catch(_0x5c648b){return BPromise[_0x7e92('0x1e')](_0x5c648b);}return _0xf93a22[_0x7e92('0x1f')]();};}function saveUpdates(_0xcd1974,_0x1d928b){return function(_0x2cf5f1){if(_0x2cf5f1){return _0x2cf5f1[_0x7e92('0x20')](_0xcd1974)[_0x7e92('0x21')](function(_0x5d8817){return _0x5d8817;});}return null;};}function removeEntity(_0x2dfa35,_0xf8914){return function(_0x1f1045){if(_0x1f1045){return _0x1f1045['destroy']()[_0x7e92('0x21')](function(){_0x2dfa35[_0x7e92('0x15')](0xcc)[_0x7e92('0x16')]();});}};}function handleEntityNotFound(_0x377bcd,_0x4e8ed0){return function(_0x1e9636){if(!_0x1e9636){_0x377bcd[_0x7e92('0x22')](0x194);}return _0x1e9636;};}function handleError(_0x50dadd,_0x3cf9b1){_0x3cf9b1=_0x3cf9b1||0x1f4;return function(_0x144979){logger[_0x7e92('0x23')](_0x144979[_0x7e92('0x24')]);if(_0x144979[_0x7e92('0x25')]){delete _0x144979[_0x7e92('0x25')];}_0x50dadd['status'](_0x3cf9b1)['send'](_0x144979);};}exports[_0x7e92('0x26')]=function(_0x5f21bd,_0x40ee73){var _0x297361={},_0x2a8e78={},_0x4d5e22={'count':0x0,'rows':[]};var _0x5bc9b4=_['map'](db['SalesforceConfiguration']['rawAttributes'],function(_0x29f594){return{'name':_0x29f594[_0x7e92('0x27')],'type':_0x29f594[_0x7e92('0x28')]['key']};});_0x2a8e78['model']=_[_0x7e92('0x29')](_0x5bc9b4,_0x7e92('0x25'));_0x2a8e78[_0x7e92('0x2a')]=_[_0x7e92('0x2b')](_0x5f21bd[_0x7e92('0x2a')]);_0x2a8e78[_0x7e92('0x2c')]=_['intersection'](_0x2a8e78['model'],_0x2a8e78[_0x7e92('0x2a')]);_0x297361[_0x7e92('0x2d')]=_['intersection'](_0x2a8e78[_0x7e92('0x2e')],qs['fields'](_0x5f21bd[_0x7e92('0x2a')]['fields']));_0x297361[_0x7e92('0x2d')]=_0x297361[_0x7e92('0x2d')][_0x7e92('0x2f')]?_0x297361[_0x7e92('0x2d')]:_0x2a8e78[_0x7e92('0x2e')];if(!_0x5f21bd['query'][_0x7e92('0x30')](_0x7e92('0x31'))){_0x297361[_0x7e92('0x18')]=qs['limit'](_0x5f21bd[_0x7e92('0x2a')][_0x7e92('0x18')]);_0x297361[_0x7e92('0x1a')]=qs[_0x7e92('0x1a')](_0x5f21bd[_0x7e92('0x2a')]['offset']);}_0x297361[_0x7e92('0x32')]=qs['sort'](_0x5f21bd[_0x7e92('0x2a')][_0x7e92('0x33')]);_0x297361[_0x7e92('0x34')]=qs[_0x7e92('0x2c')](_['pick'](_0x5f21bd[_0x7e92('0x2a')],_0x2a8e78[_0x7e92('0x2c')]),_0x5bc9b4);if(_0x5f21bd[_0x7e92('0x2a')][_0x7e92('0x35')]){_0x297361['where']=_[_0x7e92('0x36')](_0x297361[_0x7e92('0x34')],{'$or':_['map'](_0x5bc9b4,function(_0x142729){if(_0x142729['type']!==_0x7e92('0x37')){var _0x391bf5={};_0x391bf5[_0x142729[_0x7e92('0x25')]]={'$like':'%'+_0x5f21bd[_0x7e92('0x2a')]['filter']+'%'};return _0x391bf5;}})});}_0x297361=_[_0x7e92('0x36')]({},_0x297361,_0x5f21bd[_0x7e92('0x38')]);var _0x463793={'where':_0x297361[_0x7e92('0x34')]};return db[_0x7e92('0x39')]['count'](_0x463793)[_0x7e92('0x21')](function(_0x1a3e58){_0x4d5e22[_0x7e92('0x19')]=_0x1a3e58;if(_0x5f21bd[_0x7e92('0x2a')][_0x7e92('0x3a')]){_0x297361[_0x7e92('0x3b')]=[{'all':!![]}];}return db[_0x7e92('0x39')]['findAll'](_0x297361);})['then'](function(_0x6ceafa){_0x4d5e22['rows']=_0x6ceafa;return _0x4d5e22;})[_0x7e92('0x21')](respondWithFilteredResult(_0x40ee73,_0x297361))[_0x7e92('0x3c')](handleError(_0x40ee73,null));};exports[_0x7e92('0x3d')]=function(_0x3d269d,_0x391bf7){var _0x216f6b={'raw':![],'where':{'id':_0x3d269d[_0x7e92('0x3e')]['id']}},_0x3dab65={};_0x3dab65[_0x7e92('0x2e')]=_[_0x7e92('0x2b')](db[_0x7e92('0x39')]['rawAttributes']);_0x3dab65['query']=_['keys'](_0x3d269d[_0x7e92('0x2a')]);_0x3dab65[_0x7e92('0x2c')]=_[_0x7e92('0x3f')](_0x3dab65['model'],_0x3dab65['query']);_0x216f6b['attributes']=_[_0x7e92('0x3f')](_0x3dab65['model'],qs[_0x7e92('0x40')](_0x3d269d[_0x7e92('0x2a')][_0x7e92('0x40')]));_0x216f6b[_0x7e92('0x2d')]=_0x216f6b[_0x7e92('0x2d')][_0x7e92('0x2f')]?_0x216f6b['attributes']:_0x3dab65[_0x7e92('0x2e')];if(_0x3d269d['query'][_0x7e92('0x3a')]){_0x216f6b[_0x7e92('0x3b')]=[{'all':!![]}];}_0x216f6b=_['merge']({},_0x216f6b,_0x3d269d[_0x7e92('0x38')]);return db[_0x7e92('0x39')][_0x7e92('0x41')](_0x216f6b)['then'](handleEntityNotFound(_0x391bf7,null))[_0x7e92('0x21')](respondWithResult(_0x391bf7,null))[_0x7e92('0x3c')](handleError(_0x391bf7,null));};exports[_0x7e92('0x42')]=function(_0x31d531,_0x2fee72){return db[_0x7e92('0x39')][_0x7e92('0x42')](_0x31d531[_0x7e92('0x43')],{})[_0x7e92('0x21')](respondWithResult(_0x2fee72,0xc9))['catch'](handleError(_0x2fee72,null));};exports[_0x7e92('0x20')]=function(_0x220077,_0x3f7a90){if(_0x220077['body']['id']){delete _0x220077[_0x7e92('0x43')]['id'];}return db[_0x7e92('0x39')][_0x7e92('0x41')]({'where':{'id':_0x220077[_0x7e92('0x3e')]['id']}})[_0x7e92('0x21')](handleEntityNotFound(_0x3f7a90,null))[_0x7e92('0x21')](saveUpdates(_0x220077[_0x7e92('0x43')],null))['then'](respondWithResult(_0x3f7a90,null))[_0x7e92('0x3c')](handleError(_0x3f7a90,null));};exports[_0x7e92('0x44')]=function(_0x290c73,_0xa92cc3){return db[_0x7e92('0x39')][_0x7e92('0x41')]({'where':{'id':_0x290c73[_0x7e92('0x3e')]['id']}})[_0x7e92('0x21')](handleEntityNotFound(_0xa92cc3,null))[_0x7e92('0x21')](removeEntity(_0xa92cc3,null))[_0x7e92('0x3c')](handleError(_0xa92cc3,null));};exports[_0x7e92('0x45')]=function(_0x10ac1e,_0x3f3ab8,_0x2dd857){var _0x53a0ee={};var _0x516685={};var _0x4069b0;var _0x5ebe74;return db[_0x7e92('0x39')][_0x7e92('0x46')]({'where':{'id':_0x10ac1e[_0x7e92('0x3e')]['id']}})[_0x7e92('0x21')](handleEntityNotFound(_0x3f3ab8,null))['then'](function(_0x5899bc){if(_0x5899bc){_0x4069b0=_0x5899bc;_0x516685[_0x7e92('0x2e')]=_[_0x7e92('0x2b')](db['SalesforceField']['rawAttributes']);_0x516685['query']=_[_0x7e92('0x2b')](_0x10ac1e['query']);_0x516685['filters']=_[_0x7e92('0x3f')](_0x516685[_0x7e92('0x2e')],_0x516685['query']);_0x53a0ee['attributes']=_[_0x7e92('0x3f')](_0x516685['model'],qs['fields'](_0x10ac1e[_0x7e92('0x2a')][_0x7e92('0x40')]));_0x53a0ee[_0x7e92('0x2d')]=_0x53a0ee['attributes'][_0x7e92('0x2f')]?_0x53a0ee['attributes']:_0x516685[_0x7e92('0x2e')];_0x53a0ee[_0x7e92('0x32')]=qs[_0x7e92('0x33')](_0x10ac1e[_0x7e92('0x2a')][_0x7e92('0x33')]);_0x53a0ee[_0x7e92('0x34')]=qs[_0x7e92('0x2c')](_['pick'](_0x10ac1e[_0x7e92('0x2a')],_0x516685[_0x7e92('0x2c')]));if(_0x10ac1e['query']['filter']){_0x53a0ee['where']=_[_0x7e92('0x36')](_0x53a0ee[_0x7e92('0x34')],{'$or':_[_0x7e92('0x29')](_0x53a0ee[_0x7e92('0x2d')],function(_0x371382){var _0x1f16bc={};_0x1f16bc[_0x371382]={'$like':'%'+_0x10ac1e['query'][_0x7e92('0x35')]+'%'};return _0x1f16bc;})});}_0x53a0ee=_[_0x7e92('0x36')]({},_0x53a0ee,_0x10ac1e[_0x7e92('0x38')]);return _0x4069b0[_0x7e92('0x45')](_0x53a0ee);}})['then'](function(_0x168b81){if(_0x168b81){_0x5ebe74=_0x168b81[_0x7e92('0x2f')];if(!_0x10ac1e[_0x7e92('0x2a')][_0x7e92('0x30')](_0x7e92('0x31'))){_0x53a0ee[_0x7e92('0x18')]=qs[_0x7e92('0x18')](_0x10ac1e[_0x7e92('0x2a')][_0x7e92('0x18')]);_0x53a0ee[_0x7e92('0x1a')]=qs['offset'](_0x10ac1e['query'][_0x7e92('0x1a')]);}return _0x4069b0[_0x7e92('0x45')](_0x53a0ee);}})['then'](function(_0x283784){if(_0x283784){return _0x283784?{'count':_0x5ebe74,'rows':_0x283784}:null;}})[_0x7e92('0x21')](respondWithResult(_0x3f3ab8,null))[_0x7e92('0x3c')](handleError(_0x3f3ab8,null));};exports['getSubjects']=function(_0x29eb93,_0x4a9b7c,_0x1ec5b9){var _0x470375={};var _0x15eb35={};var _0x1f74d3;var _0xf50e38;return db[_0x7e92('0x39')][_0x7e92('0x46')]({'where':{'id':_0x29eb93[_0x7e92('0x3e')]['id']}})[_0x7e92('0x21')](handleEntityNotFound(_0x4a9b7c,null))[_0x7e92('0x21')](function(_0x47a834){if(_0x47a834){_0x1f74d3=_0x47a834;_0x15eb35[_0x7e92('0x2e')]=_['keys'](db[_0x7e92('0x47')][_0x7e92('0x48')]);_0x15eb35[_0x7e92('0x2a')]=_[_0x7e92('0x2b')](_0x29eb93['query']);_0x15eb35[_0x7e92('0x2c')]=_['intersection'](_0x15eb35['model'],_0x15eb35[_0x7e92('0x2a')]);_0x470375[_0x7e92('0x2d')]=_[_0x7e92('0x3f')](_0x15eb35['model'],qs[_0x7e92('0x40')](_0x29eb93[_0x7e92('0x2a')]['fields']));_0x470375['attributes']=_0x470375[_0x7e92('0x2d')][_0x7e92('0x2f')]?_0x470375[_0x7e92('0x2d')]:_0x15eb35[_0x7e92('0x2e')];_0x470375[_0x7e92('0x32')]=qs[_0x7e92('0x33')](_0x29eb93[_0x7e92('0x2a')][_0x7e92('0x33')]);_0x470375['where']=qs[_0x7e92('0x2c')](_[_0x7e92('0x49')](_0x29eb93['query'],_0x15eb35['filters']));if(_0x29eb93['query'][_0x7e92('0x35')]){_0x470375['where']=_[_0x7e92('0x36')](_0x470375[_0x7e92('0x34')],{'$or':_[_0x7e92('0x29')](_0x470375[_0x7e92('0x2d')],function(_0x4ede03){var _0x203353={};_0x203353[_0x4ede03]={'$like':'%'+_0x29eb93[_0x7e92('0x2a')][_0x7e92('0x35')]+'%'};return _0x203353;})});}_0x470375=_[_0x7e92('0x36')]({},_0x470375,_0x29eb93['options']);return _0x1f74d3[_0x7e92('0x4a')](_0x470375);}})['then'](function(_0x14a28c){if(_0x14a28c){_0xf50e38=_0x14a28c[_0x7e92('0x2f')];if(!_0x29eb93['query'][_0x7e92('0x30')](_0x7e92('0x31'))){_0x470375[_0x7e92('0x18')]=qs[_0x7e92('0x18')](_0x29eb93[_0x7e92('0x2a')][_0x7e92('0x18')]);_0x470375[_0x7e92('0x1a')]=qs[_0x7e92('0x1a')](_0x29eb93[_0x7e92('0x2a')][_0x7e92('0x1a')]);}return _0x1f74d3[_0x7e92('0x4a')](_0x470375);}})['then'](function(_0x1fd2b1){if(_0x1fd2b1){return _0x1fd2b1?{'count':_0xf50e38,'rows':_0x1fd2b1}:null;}})[_0x7e92('0x21')](respondWithResult(_0x4a9b7c,null))['catch'](handleError(_0x4a9b7c,null));};exports['getDescriptions']=function(_0x372c1b,_0xab6e40,_0x55c930){var _0xc7ff59={};var _0x483c1d={};var _0x2625dc;var _0x308932;return db[_0x7e92('0x39')][_0x7e92('0x46')]({'where':{'id':_0x372c1b[_0x7e92('0x3e')]['id']}})[_0x7e92('0x21')](handleEntityNotFound(_0xab6e40,null))[_0x7e92('0x21')](function(_0x47cbf2){if(_0x47cbf2){_0x2625dc=_0x47cbf2;_0x483c1d[_0x7e92('0x2e')]=_[_0x7e92('0x2b')](db[_0x7e92('0x47')][_0x7e92('0x48')]);_0x483c1d['query']=_[_0x7e92('0x2b')](_0x372c1b['query']);_0x483c1d['filters']=_['intersection'](_0x483c1d[_0x7e92('0x2e')],_0x483c1d[_0x7e92('0x2a')]);_0xc7ff59[_0x7e92('0x2d')]=_['intersection'](_0x483c1d[_0x7e92('0x2e')],qs[_0x7e92('0x40')](_0x372c1b[_0x7e92('0x2a')]['fields']));_0xc7ff59[_0x7e92('0x2d')]=_0xc7ff59[_0x7e92('0x2d')][_0x7e92('0x2f')]?_0xc7ff59[_0x7e92('0x2d')]:_0x483c1d[_0x7e92('0x2e')];_0xc7ff59[_0x7e92('0x32')]=qs[_0x7e92('0x33')](_0x372c1b[_0x7e92('0x2a')][_0x7e92('0x33')]);_0xc7ff59['where']=qs[_0x7e92('0x2c')](_[_0x7e92('0x49')](_0x372c1b[_0x7e92('0x2a')],_0x483c1d[_0x7e92('0x2c')]));if(_0x372c1b[_0x7e92('0x2a')][_0x7e92('0x35')]){_0xc7ff59[_0x7e92('0x34')]=_[_0x7e92('0x36')](_0xc7ff59['where'],{'$or':_[_0x7e92('0x29')](_0xc7ff59[_0x7e92('0x2d')],function(_0x5003f6){var _0x3d86fb={};_0x3d86fb[_0x5003f6]={'$like':'%'+_0x372c1b[_0x7e92('0x2a')][_0x7e92('0x35')]+'%'};return _0x3d86fb;})});}_0xc7ff59=_[_0x7e92('0x36')]({},_0xc7ff59,_0x372c1b[_0x7e92('0x38')]);return _0x2625dc[_0x7e92('0x4b')](_0xc7ff59);}})[_0x7e92('0x21')](function(_0x144f08){if(_0x144f08){_0x308932=_0x144f08[_0x7e92('0x2f')];if(!_0x372c1b['query'][_0x7e92('0x30')](_0x7e92('0x31'))){_0xc7ff59[_0x7e92('0x18')]=qs[_0x7e92('0x18')](_0x372c1b[_0x7e92('0x2a')][_0x7e92('0x18')]);_0xc7ff59['offset']=qs[_0x7e92('0x1a')](_0x372c1b[_0x7e92('0x2a')][_0x7e92('0x1a')]);}return _0x2625dc['getDescriptions'](_0xc7ff59);}})[_0x7e92('0x21')](function(_0x4f45d0){if(_0x4f45d0){return _0x4f45d0?{'count':_0x308932,'rows':_0x4f45d0}:null;}})[_0x7e92('0x21')](respondWithResult(_0xab6e40,null))['catch'](handleError(_0xab6e40,null));};
\ No newline at end of file
index 4da3e8a..0bf43e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0928=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','SalesforceConfiguration','int_salesforce_configurations','lodash','util','../../config/logger'];(function(_0x2c5718,_0x47c690){var _0x4f984b=function(_0x2c18b2){while(--_0x2c18b2){_0x2c5718['push'](_0x2c5718['shift']());}};_0x4f984b(++_0x47c690);}(_0x0928,0x1b9));var _0x8092=function(_0x4982e8,_0x4b8c22){_0x4982e8=_0x4982e8-0x0;var _0x15913b=_0x0928[_0x4982e8];return _0x15913b;};'use strict';var _=require(_0x8092('0x0'));var util=require(_0x8092('0x1'));var logger=require(_0x8092('0x2'))(_0x8092('0x3'));var moment=require(_0x8092('0x4'));var BPromise=require(_0x8092('0x5'));var rp=require(_0x8092('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8092('0x7'));var config=require(_0x8092('0x8'));var attributes=require(_0x8092('0x9'));module['exports']=function(_0x59c773,_0x19bb4d){return _0x59c773['define'](_0x8092('0xa'),attributes,{'tableName':_0x8092('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x43f0=['exports','SalesforceConfiguration','int_salesforce_configurations','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment','./intSalesforceConfiguration.attributes'];(function(_0x3638f7,_0xe7afda){var _0x1f37b6=function(_0x3e8420){while(--_0x3e8420){_0x3638f7['push'](_0x3638f7['shift']());}};_0x1f37b6(++_0xe7afda);}(_0x43f0,0x1f2));var _0x043f=function(_0xe6b54c,_0x526e78){_0xe6b54c=_0xe6b54c-0x0;var _0xaa6c80=_0x43f0[_0xe6b54c];return _0xaa6c80;};'use strict';var _=require(_0x043f('0x0'));var util=require(_0x043f('0x1'));var logger=require('../../config/logger')(_0x043f('0x2'));var moment=require('moment');var BPromise=require(_0x043f('0x3'));var rp=require(_0x043f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x043f('0x5'));var config=require(_0x043f('0x6'));var attributes=require(_0x043f('0x7'));module[_0x043f('0x8')]=function(_0x167afd,_0x4e432f){return _0x167afd['define'](_0x043f('0x9'),attributes,{'tableName':_0x043f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 75672e7..cacd0ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d72=['message','info','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','SalesforceConfiguration,\x20%s,\x20%s','error'];(function(_0x501e0d,_0x1e0007){var _0x3b4977=function(_0x4183bd){while(--_0x4183bd){_0x501e0d['push'](_0x501e0d['shift']());}};_0x3b4977(++_0x1e0007);}(_0x9d72,0xe0));var _0x29d7=function(_0x3539c0,_0x228e11){_0x3539c0=_0x3539c0-0x0;var _0x344ba8=_0x9d72[_0x3539c0];return _0x344ba8;};'use strict';var _=require('lodash');var util=require(_0x29d7('0x0'));var moment=require(_0x29d7('0x1'));var BPromise=require(_0x29d7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x29d7('0x3'));var db=require(_0x29d7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x29d7('0x5'))(_0x29d7('0x6'));var config=require(_0x29d7('0x7'));var jayson=require(_0x29d7('0x8'));var client=jayson['client'][_0x29d7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xe4506f,_0x55aceb,_0x416122){return new BPromise(function(_0x211ce0,_0xc53c60){return client['request'](_0xe4506f,_0x416122)[_0x29d7('0xa')](function(_0x4e2c66){logger['info']('SalesforceConfiguration,\x20%s,\x20%s',_0x55aceb,_0x29d7('0xb'));logger[_0x29d7('0xc')](_0x29d7('0xd'),_0x55aceb,'request\x20sent',JSON[_0x29d7('0xe')](_0x4e2c66));if(_0x4e2c66['error']){if(_0x4e2c66['error'][_0x29d7('0xf')]===0x1f4){logger['error'](_0x29d7('0x10'),_0x55aceb,_0x4e2c66[_0x29d7('0x11')]['message']);return _0xc53c60(_0x4e2c66[_0x29d7('0x11')][_0x29d7('0x12')]);}logger[_0x29d7('0x11')](_0x29d7('0x10'),_0x55aceb,_0x4e2c66[_0x29d7('0x11')][_0x29d7('0x12')]);return _0x211ce0(_0x4e2c66['error'][_0x29d7('0x12')]);}else{logger[_0x29d7('0x13')](_0x29d7('0x10'),_0x55aceb,_0x29d7('0xb'));_0x211ce0(_0x4e2c66[_0x29d7('0x14')][_0x29d7('0x12')]);}})[_0x29d7('0x15')](function(_0x1f8d26){logger['error']('SalesforceConfiguration,\x20%s,\x20%s',_0x55aceb,_0x1f8d26);_0xc53c60(_0x1f8d26);});});}
\ No newline at end of file
+var _0xefda=['SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','client','request','then','info'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xefda,0x15a));var _0xaefd=function(_0x45fb8b,_0x37c90b){_0x45fb8b=_0x45fb8b-0x0;var _0x57552e=_0xefda[_0x45fb8b];return _0x57552e;};'use strict';var _=require(_0xaefd('0x0'));var util=require(_0xaefd('0x1'));var moment=require(_0xaefd('0x2'));var BPromise=require('bluebird');var rs=require(_0xaefd('0x3'));var fs=require('fs');var Redis=require(_0xaefd('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaefd('0x5'))(_0xaefd('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xaefd('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x140259,_0x56cb59,_0x2284e0){return new BPromise(function(_0x3392c8,_0x2246d8){return client[_0xaefd('0x8')](_0x140259,_0x2284e0)[_0xaefd('0x9')](function(_0x138563){logger[_0xaefd('0xa')](_0xaefd('0xb'),_0x56cb59,_0xaefd('0xc'));logger[_0xaefd('0xd')](_0xaefd('0xe'),_0x56cb59,_0xaefd('0xc'),JSON[_0xaefd('0xf')](_0x138563));if(_0x138563[_0xaefd('0x10')]){if(_0x138563[_0xaefd('0x10')][_0xaefd('0x11')]===0x1f4){logger[_0xaefd('0x10')]('SalesforceConfiguration,\x20%s,\x20%s',_0x56cb59,_0x138563[_0xaefd('0x10')]['message']);return _0x2246d8(_0x138563[_0xaefd('0x10')][_0xaefd('0x12')]);}logger['error'](_0xaefd('0xb'),_0x56cb59,_0x138563['error'][_0xaefd('0x12')]);return _0x3392c8(_0x138563['error'][_0xaefd('0x12')]);}else{logger['info'](_0xaefd('0xb'),_0x56cb59,_0xaefd('0xc'));_0x3392c8(_0x138563[_0xaefd('0x13')]['message']);}})[_0xaefd('0x14')](function(_0x370586){logger['error'](_0xaefd('0xb'),_0x56cb59,_0x370586);_0x2246d8(_0x370586);});});}
\ No newline at end of file
index 6efcfe5..6262955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fc2=['/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceField.controller','get','index'];(function(_0x18face,_0x20ac2e){var _0x427892=function(_0x29ba1a){while(--_0x29ba1a){_0x18face['push'](_0x18face['shift']());}};_0x427892(++_0x20ac2e);}(_0x7fc2,0x11b));var _0x27fc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7fc2[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x27fc('0x0'));var util=require(_0x27fc('0x1'));var path=require(_0x27fc('0x2'));var timeout=require('connect-timeout');var express=require(_0x27fc('0x3'));var router=express[_0x27fc('0x4')]();var fs_extra=require(_0x27fc('0x5'));var auth=require(_0x27fc('0x6'));var interaction=require(_0x27fc('0x7'));var config=require('../../config/environment');var controller=require(_0x27fc('0x8'));router[_0x27fc('0x9')]('/',auth['isAuthenticated'](),controller[_0x27fc('0xa')]);router[_0x27fc('0x9')](_0x27fc('0xb'),auth[_0x27fc('0xc')](),controller[_0x27fc('0xd')]);router[_0x27fc('0xe')]('/',auth['isAuthenticated'](),controller[_0x27fc('0xf')]);router[_0x27fc('0x10')](_0x27fc('0xb'),auth['isAuthenticated'](),controller[_0x27fc('0x11')]);router[_0x27fc('0x12')](_0x27fc('0xb'),auth['isAuthenticated'](),controller[_0x27fc('0x13')]);module[_0x27fc('0x14')]=router;
\ No newline at end of file
+var _0x1a7e=['put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x1a7e,0x16c));var _0xe1a7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1a7e[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xe1a7('0x0'));var util=require(_0xe1a7('0x1'));var path=require(_0xe1a7('0x2'));var timeout=require(_0xe1a7('0x3'));var express=require(_0xe1a7('0x4'));var router=express[_0xe1a7('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xe1a7('0x6'));var interaction=require(_0xe1a7('0x7'));var config=require(_0xe1a7('0x8'));var controller=require(_0xe1a7('0x9'));router[_0xe1a7('0xa')]('/',auth['isAuthenticated'](),controller[_0xe1a7('0xb')]);router[_0xe1a7('0xa')](_0xe1a7('0xc'),auth[_0xe1a7('0xd')](),controller[_0xe1a7('0xe')]);router[_0xe1a7('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe1a7('0x10')](_0xe1a7('0xc'),auth[_0xe1a7('0xd')](),controller[_0xe1a7('0x11')]);router['delete']('/:id',auth[_0xe1a7('0xd')](),controller[_0xe1a7('0x12')]);module[_0xe1a7('0x13')]=router;
\ No newline at end of file
index 670332d..b6a7cd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dce=['customVariable','picklist','STRING','ENUM','variable','sequelize','exports','string'];(function(_0x3dea7d,_0x2cd4ea){var _0x53919a=function(_0x1554e2){while(--_0x1554e2){_0x3dea7d['push'](_0x3dea7d['shift']());}};_0x53919a(++_0x2cd4ea);}(_0x9dce,0x15d));var _0xe9dc=function(_0x149207,_0x5b17b2){_0x149207=_0x149207-0x0;var _0xd9d694=_0x9dce[_0x149207];return _0xd9d694;};'use strict';var Sequelize=require(_0xe9dc('0x0'));module[_0xe9dc('0x1')]={'type':{'type':Sequelize['ENUM'](_0xe9dc('0x2'),'variable',_0xe9dc('0x3'),'keyValue',_0xe9dc('0x4')),'defaultValue':_0xe9dc('0x2')},'content':{'type':Sequelize[_0xe9dc('0x5')]},'key':{'type':Sequelize[_0xe9dc('0x5')]},'keyType':{'type':Sequelize[_0xe9dc('0x6')](_0xe9dc('0x2'),_0xe9dc('0x7'),_0xe9dc('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xe9dc('0x5')]},'variableName':{'type':Sequelize[_0xe9dc('0x5')]}};
\ No newline at end of file
+var _0xef00=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xef00,0xdf));var _0x0ef0=function(_0x5a14dd,_0x55e143){_0x5a14dd=_0x5a14dd-0x0;var _0x43d8f6=_0xef00[_0x5a14dd];return _0x43d8f6;};'use strict';var Sequelize=require(_0x0ef0('0x0'));module[_0x0ef0('0x1')]={'type':{'type':Sequelize[_0x0ef0('0x2')](_0x0ef0('0x3'),_0x0ef0('0x4'),_0x0ef0('0x5'),_0x0ef0('0x6'),_0x0ef0('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0x0ef0('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x0ef0('0x2')](_0x0ef0('0x3'),_0x0ef0('0x4'),_0x0ef0('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0x0ef0('0x8')]}};
\ No newline at end of file
index 8374006..def2026 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4ee=['undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','SalesforceField','rawAttributes','fieldName','type','map','filters','intersection','model','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','keys','find','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset'];(function(_0x375ac9,_0x262210){var _0x421ea2=function(_0x10e6ba){while(--_0x10e6ba){_0x375ac9['push'](_0x375ac9['shift']());}};_0x421ea2(++_0x262210);}(_0xc4ee,0x160));var _0xec4e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc4ee[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xec4e('0x0'));var zipdir=require(_0xec4e('0x1'));var jsonpatch=require(_0xec4e('0x2'));var rp=require('request-promise');var moment=require(_0xec4e('0x3'));var BPromise=require(_0xec4e('0x4'));var Mustache=require(_0xec4e('0x5'));var util=require(_0xec4e('0x6'));var path=require('path');var sox=require(_0xec4e('0x7'));var csv=require(_0xec4e('0x8'));var ejs=require(_0xec4e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xec4e('0xa'));var squel=require(_0xec4e('0xb'));var crypto=require(_0xec4e('0xc'));var jsforce=require(_0xec4e('0xd'));var deskjs=require(_0xec4e('0xe'));var toCsv=require('to-csv');var querystring=require(_0xec4e('0xf'));var Papa=require('papaparse');var Redis=require(_0xec4e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xec4e('0x11'));var as=require(_0xec4e('0x12'));var hardwareService=require(_0xec4e('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xec4e('0x14'));var config=require(_0xec4e('0x15'));var licenseUtil=require(_0xec4e('0x16'));var db=require(_0xec4e('0x17'))['db'];function respondWithStatusCode(_0x51d200,_0x15b1f0){_0x15b1f0=_0x15b1f0||0xcc;return function(_0x23fb6b){if(_0x23fb6b){return _0x51d200[_0xec4e('0x18')](_0x15b1f0);}return _0x51d200[_0xec4e('0x19')](_0x15b1f0)['end']();};}function respondWithResult(_0x3b9280,_0x20b386){_0x20b386=_0x20b386||0xc8;return function(_0x362fe8){if(_0x362fe8){return _0x3b9280[_0xec4e('0x19')](_0x20b386)[_0xec4e('0x1a')](_0x362fe8);}};}function respondWithFilteredResult(_0x128e87,_0x973c8b){return function(_0x3945ef){if(_0x3945ef){var _0xbdd2ef=typeof _0x973c8b[_0xec4e('0x1b')]===_0xec4e('0x1c')&&typeof _0x973c8b['limit']===_0xec4e('0x1c');var _0x8fb46f=_0x3945ef[_0xec4e('0x1d')];var _0xafefa3=_0xbdd2ef?0x0:_0x973c8b[_0xec4e('0x1b')];var _0x3971db=_0xbdd2ef?_0x3945ef['count']:_0x973c8b[_0xec4e('0x1b')]+_0x973c8b[_0xec4e('0x1e')];var _0x2a331b;if(_0x3971db>=_0x8fb46f){_0x3971db=_0x8fb46f;_0x2a331b=0xc8;}else{_0x2a331b=0xce;}_0x128e87['status'](_0x2a331b);return _0x128e87[_0xec4e('0x1f')](_0xec4e('0x20'),_0xafefa3+'-'+_0x3971db+'/'+_0x8fb46f)['json'](_0x3945ef);}return null;};}function patchUpdates(_0x58d5fd){return function(_0x3ea846){try{jsonpatch[_0xec4e('0x21')](_0x3ea846,_0x58d5fd,!![]);}catch(_0xe26476){return BPromise[_0xec4e('0x22')](_0xe26476);}return _0x3ea846[_0xec4e('0x23')]();};}function saveUpdates(_0x48ef7c,_0x243d1f){return function(_0x5a3b12){if(_0x5a3b12){return _0x5a3b12[_0xec4e('0x24')](_0x48ef7c)[_0xec4e('0x25')](function(_0x397c75){return _0x397c75;});}return null;};}function removeEntity(_0x2a1c78,_0x5ce30c){return function(_0x2fcf9c){if(_0x2fcf9c){return _0x2fcf9c[_0xec4e('0x26')]()[_0xec4e('0x25')](function(){_0x2a1c78[_0xec4e('0x19')](0xcc)[_0xec4e('0x27')]();});}};}function handleEntityNotFound(_0x5540a4,_0x19cde9){return function(_0x3d7838){if(!_0x3d7838){_0x5540a4[_0xec4e('0x18')](0x194);}return _0x3d7838;};}function handleError(_0x3993f8,_0x2a406e){_0x2a406e=_0x2a406e||0x1f4;return function(_0x4fbd88){logger[_0xec4e('0x28')](_0x4fbd88[_0xec4e('0x29')]);if(_0x4fbd88[_0xec4e('0x2a')]){delete _0x4fbd88['name'];}_0x3993f8[_0xec4e('0x19')](_0x2a406e)[_0xec4e('0x2b')](_0x4fbd88);};}exports[_0xec4e('0x2c')]=function(_0x428ccd,_0x2c0b5a){var _0x31a43e={},_0x135f9e={},_0x3f7a47={'count':0x0,'rows':[]};var _0x2439c6=_['map'](db[_0xec4e('0x2d')][_0xec4e('0x2e')],function(_0x1db02a){return{'name':_0x1db02a[_0xec4e('0x2f')],'type':_0x1db02a[_0xec4e('0x30')]['key']};});_0x135f9e['model']=_[_0xec4e('0x31')](_0x2439c6,_0xec4e('0x2a'));_0x135f9e['query']=_['keys'](_0x428ccd['query']);_0x135f9e[_0xec4e('0x32')]=_[_0xec4e('0x33')](_0x135f9e[_0xec4e('0x34')],_0x135f9e[_0xec4e('0x35')]);_0x31a43e['attributes']=_[_0xec4e('0x33')](_0x135f9e[_0xec4e('0x34')],qs[_0xec4e('0x36')](_0x428ccd[_0xec4e('0x35')][_0xec4e('0x36')]));_0x31a43e[_0xec4e('0x37')]=_0x31a43e[_0xec4e('0x37')][_0xec4e('0x38')]?_0x31a43e[_0xec4e('0x37')]:_0x135f9e[_0xec4e('0x34')];if(!_0x428ccd['query'][_0xec4e('0x39')](_0xec4e('0x3a'))){_0x31a43e[_0xec4e('0x1e')]=qs[_0xec4e('0x1e')](_0x428ccd[_0xec4e('0x35')][_0xec4e('0x1e')]);_0x31a43e[_0xec4e('0x1b')]=qs['offset'](_0x428ccd[_0xec4e('0x35')][_0xec4e('0x1b')]);}_0x31a43e[_0xec4e('0x3b')]=qs[_0xec4e('0x3c')](_0x428ccd[_0xec4e('0x35')][_0xec4e('0x3c')]);_0x31a43e[_0xec4e('0x3d')]=qs['filters'](_[_0xec4e('0x3e')](_0x428ccd[_0xec4e('0x35')],_0x135f9e[_0xec4e('0x32')]),_0x2439c6);if(_0x428ccd[_0xec4e('0x35')][_0xec4e('0x3f')]){_0x31a43e[_0xec4e('0x3d')]=_[_0xec4e('0x40')](_0x31a43e[_0xec4e('0x3d')],{'$or':_['map'](_0x2439c6,function(_0xe2a3db){if(_0xe2a3db[_0xec4e('0x30')]!=='VIRTUAL'){var _0x385067={};_0x385067[_0xe2a3db[_0xec4e('0x2a')]]={'$like':'%'+_0x428ccd[_0xec4e('0x35')][_0xec4e('0x3f')]+'%'};return _0x385067;}})});}_0x31a43e=_['merge']({},_0x31a43e,_0x428ccd[_0xec4e('0x41')]);var _0x36bfd6={'where':_0x31a43e['where']};return db[_0xec4e('0x2d')][_0xec4e('0x1d')](_0x36bfd6)[_0xec4e('0x25')](function(_0x55eda5){_0x3f7a47['count']=_0x55eda5;if(_0x428ccd['query'][_0xec4e('0x42')]){_0x31a43e[_0xec4e('0x43')]=[{'all':!![]}];}return db[_0xec4e('0x2d')][_0xec4e('0x44')](_0x31a43e);})[_0xec4e('0x25')](function(_0x5bdd28){_0x3f7a47[_0xec4e('0x45')]=_0x5bdd28;return _0x3f7a47;})[_0xec4e('0x25')](respondWithFilteredResult(_0x2c0b5a,_0x31a43e))[_0xec4e('0x46')](handleError(_0x2c0b5a,null));};exports[_0xec4e('0x47')]=function(_0x15c78d,_0x3683af){var _0x5788fc={'raw':!![],'where':{'id':_0x15c78d['params']['id']}},_0x132398={};_0x132398[_0xec4e('0x34')]=_[_0xec4e('0x48')](db[_0xec4e('0x2d')][_0xec4e('0x2e')]);_0x132398['query']=_[_0xec4e('0x48')](_0x15c78d['query']);_0x132398[_0xec4e('0x32')]=_[_0xec4e('0x33')](_0x132398['model'],_0x132398[_0xec4e('0x35')]);_0x5788fc[_0xec4e('0x37')]=_[_0xec4e('0x33')](_0x132398[_0xec4e('0x34')],qs[_0xec4e('0x36')](_0x15c78d[_0xec4e('0x35')][_0xec4e('0x36')]));_0x5788fc[_0xec4e('0x37')]=_0x5788fc[_0xec4e('0x37')][_0xec4e('0x38')]?_0x5788fc[_0xec4e('0x37')]:_0x132398[_0xec4e('0x34')];if(_0x15c78d[_0xec4e('0x35')][_0xec4e('0x42')]){_0x5788fc[_0xec4e('0x43')]=[{'all':!![]}];}_0x5788fc=_[_0xec4e('0x40')]({},_0x5788fc,_0x15c78d[_0xec4e('0x41')]);return db[_0xec4e('0x2d')][_0xec4e('0x49')](_0x5788fc)['then'](handleEntityNotFound(_0x3683af,null))['then'](respondWithResult(_0x3683af,null))[_0xec4e('0x46')](handleError(_0x3683af,null));};exports[_0xec4e('0x4a')]=function(_0x54916a,_0x19124e){return db[_0xec4e('0x2d')]['create'](_0x54916a[_0xec4e('0x4b')],{})[_0xec4e('0x25')](respondWithResult(_0x19124e,0xc9))[_0xec4e('0x46')](handleError(_0x19124e,null));};exports[_0xec4e('0x24')]=function(_0x34ebbb,_0x4d85a6){if(_0x34ebbb[_0xec4e('0x4b')]['id']){delete _0x34ebbb['body']['id'];}return db['SalesforceField'][_0xec4e('0x49')]({'where':{'id':_0x34ebbb['params']['id']}})['then'](handleEntityNotFound(_0x4d85a6,null))[_0xec4e('0x25')](saveUpdates(_0x34ebbb[_0xec4e('0x4b')],null))[_0xec4e('0x25')](respondWithResult(_0x4d85a6,null))[_0xec4e('0x46')](handleError(_0x4d85a6,null));};exports[_0xec4e('0x26')]=function(_0x372873,_0x59111d){return db[_0xec4e('0x2d')][_0xec4e('0x49')]({'where':{'id':_0x372873['params']['id']}})['then'](handleEntityNotFound(_0x59111d,null))[_0xec4e('0x25')](removeEntity(_0x59111d,null))[_0xec4e('0x46')](handleError(_0x59111d,null));};
\ No newline at end of file
+var _0x5ebd=['fieldName','key','map','keys','query','filters','intersection','model','fields','attributes','length','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','create','body','update','find','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','then','destroy','error','name','send','index','SalesforceField','rawAttributes'];(function(_0x15acaf,_0x4b720e){var _0x400770=function(_0x576aa3){while(--_0x576aa3){_0x15acaf['push'](_0x15acaf['shift']());}};_0x400770(++_0x4b720e);}(_0x5ebd,0x149));var _0xd5eb=function(_0x45d70b,_0x1c74b7){_0x45d70b=_0x45d70b-0x0;var _0x20e2d6=_0x5ebd[_0x45d70b];return _0x20e2d6;};'use strict';var emlformat=require(_0xd5eb('0x0'));var rimraf=require(_0xd5eb('0x1'));var zipdir=require(_0xd5eb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd5eb('0x3'));var moment=require(_0xd5eb('0x4'));var BPromise=require(_0xd5eb('0x5'));var Mustache=require('mustache');var util=require(_0xd5eb('0x6'));var path=require(_0xd5eb('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd5eb('0x8'));var fs=require('fs');var fs_extra=require(_0xd5eb('0x9'));var _=require(_0xd5eb('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd5eb('0xb'));var deskjs=require(_0xd5eb('0xc'));var toCsv=require(_0xd5eb('0xd'));var querystring=require(_0xd5eb('0xe'));var Papa=require(_0xd5eb('0xf'));var Redis=require(_0xd5eb('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd5eb('0x11'));var logger=require('../../config/logger')(_0xd5eb('0x12'));var utils=require(_0xd5eb('0x13'));var config=require(_0xd5eb('0x14'));var licenseUtil=require(_0xd5eb('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x267d36,_0x550a6c){_0x550a6c=_0x550a6c||0xcc;return function(_0xfc5499){if(_0xfc5499){return _0x267d36[_0xd5eb('0x16')](_0x550a6c);}return _0x267d36[_0xd5eb('0x17')](_0x550a6c)[_0xd5eb('0x18')]();};}function respondWithResult(_0x22198b,_0x4fe979){_0x4fe979=_0x4fe979||0xc8;return function(_0xccf94a){if(_0xccf94a){return _0x22198b[_0xd5eb('0x17')](_0x4fe979)[_0xd5eb('0x19')](_0xccf94a);}};}function respondWithFilteredResult(_0x45b1df,_0x16eaad){return function(_0x2eab99){if(_0x2eab99){var _0x8bf1e5=typeof _0x16eaad[_0xd5eb('0x1a')]===_0xd5eb('0x1b')&&typeof _0x16eaad['limit']===_0xd5eb('0x1b');var _0x536579=_0x2eab99[_0xd5eb('0x1c')];var _0x2a1795=_0x8bf1e5?0x0:_0x16eaad[_0xd5eb('0x1a')];var _0x35b740=_0x8bf1e5?_0x2eab99['count']:_0x16eaad[_0xd5eb('0x1a')]+_0x16eaad['limit'];var _0x1096eb;if(_0x35b740>=_0x536579){_0x35b740=_0x536579;_0x1096eb=0xc8;}else{_0x1096eb=0xce;}_0x45b1df[_0xd5eb('0x17')](_0x1096eb);return _0x45b1df[_0xd5eb('0x1d')](_0xd5eb('0x1e'),_0x2a1795+'-'+_0x35b740+'/'+_0x536579)[_0xd5eb('0x19')](_0x2eab99);}return null;};}function patchUpdates(_0x4db315){return function(_0xc4dcf8){try{jsonpatch['apply'](_0xc4dcf8,_0x4db315,!![]);}catch(_0x5c7654){return BPromise[_0xd5eb('0x1f')](_0x5c7654);}return _0xc4dcf8[_0xd5eb('0x20')]();};}function saveUpdates(_0x15804b,_0x55a8e0){return function(_0x267a60){if(_0x267a60){return _0x267a60['update'](_0x15804b)[_0xd5eb('0x21')](function(_0x2dbeab){return _0x2dbeab;});}return null;};}function removeEntity(_0x4bc0bc,_0x546d45){return function(_0x51bcc4){if(_0x51bcc4){return _0x51bcc4[_0xd5eb('0x22')]()[_0xd5eb('0x21')](function(){_0x4bc0bc['status'](0xcc)[_0xd5eb('0x18')]();});}};}function handleEntityNotFound(_0x59b81a,_0x4a9d30){return function(_0x10ce91){if(!_0x10ce91){_0x59b81a[_0xd5eb('0x16')](0x194);}return _0x10ce91;};}function handleError(_0x2c33e1,_0x267e60){_0x267e60=_0x267e60||0x1f4;return function(_0x5ed717){logger[_0xd5eb('0x23')](_0x5ed717['stack']);if(_0x5ed717['name']){delete _0x5ed717[_0xd5eb('0x24')];}_0x2c33e1[_0xd5eb('0x17')](_0x267e60)[_0xd5eb('0x25')](_0x5ed717);};}exports[_0xd5eb('0x26')]=function(_0x1e3992,_0x366acc){var _0x1fc16e={},_0x47fbdf={},_0x351bb0={'count':0x0,'rows':[]};var _0x5a938f=_['map'](db[_0xd5eb('0x27')][_0xd5eb('0x28')],function(_0x131c14){return{'name':_0x131c14[_0xd5eb('0x29')],'type':_0x131c14['type'][_0xd5eb('0x2a')]};});_0x47fbdf['model']=_[_0xd5eb('0x2b')](_0x5a938f,'name');_0x47fbdf['query']=_[_0xd5eb('0x2c')](_0x1e3992[_0xd5eb('0x2d')]);_0x47fbdf[_0xd5eb('0x2e')]=_[_0xd5eb('0x2f')](_0x47fbdf[_0xd5eb('0x30')],_0x47fbdf[_0xd5eb('0x2d')]);_0x1fc16e['attributes']=_['intersection'](_0x47fbdf[_0xd5eb('0x30')],qs[_0xd5eb('0x31')](_0x1e3992[_0xd5eb('0x2d')][_0xd5eb('0x31')]));_0x1fc16e[_0xd5eb('0x32')]=_0x1fc16e['attributes'][_0xd5eb('0x33')]?_0x1fc16e[_0xd5eb('0x32')]:_0x47fbdf[_0xd5eb('0x30')];if(!_0x1e3992[_0xd5eb('0x2d')]['hasOwnProperty'](_0xd5eb('0x34'))){_0x1fc16e[_0xd5eb('0x35')]=qs['limit'](_0x1e3992[_0xd5eb('0x2d')][_0xd5eb('0x35')]);_0x1fc16e[_0xd5eb('0x1a')]=qs['offset'](_0x1e3992[_0xd5eb('0x2d')]['offset']);}_0x1fc16e[_0xd5eb('0x36')]=qs[_0xd5eb('0x37')](_0x1e3992[_0xd5eb('0x2d')][_0xd5eb('0x37')]);_0x1fc16e[_0xd5eb('0x38')]=qs[_0xd5eb('0x2e')](_[_0xd5eb('0x39')](_0x1e3992[_0xd5eb('0x2d')],_0x47fbdf[_0xd5eb('0x2e')]),_0x5a938f);if(_0x1e3992[_0xd5eb('0x2d')][_0xd5eb('0x3a')]){_0x1fc16e['where']=_[_0xd5eb('0x3b')](_0x1fc16e[_0xd5eb('0x38')],{'$or':_['map'](_0x5a938f,function(_0xe0f31d){if(_0xe0f31d[_0xd5eb('0x3c')]!==_0xd5eb('0x3d')){var _0x42570f={};_0x42570f[_0xe0f31d[_0xd5eb('0x24')]]={'$like':'%'+_0x1e3992[_0xd5eb('0x2d')]['filter']+'%'};return _0x42570f;}})});}_0x1fc16e=_['merge']({},_0x1fc16e,_0x1e3992[_0xd5eb('0x3e')]);var _0x5b1e0d={'where':_0x1fc16e[_0xd5eb('0x38')]};return db[_0xd5eb('0x27')][_0xd5eb('0x1c')](_0x5b1e0d)[_0xd5eb('0x21')](function(_0x122d7f){_0x351bb0['count']=_0x122d7f;if(_0x1e3992[_0xd5eb('0x2d')][_0xd5eb('0x3f')]){_0x1fc16e['include']=[{'all':!![]}];}return db[_0xd5eb('0x27')][_0xd5eb('0x40')](_0x1fc16e);})[_0xd5eb('0x21')](function(_0x2eedc1){_0x351bb0[_0xd5eb('0x41')]=_0x2eedc1;return _0x351bb0;})[_0xd5eb('0x21')](respondWithFilteredResult(_0x366acc,_0x1fc16e))[_0xd5eb('0x42')](handleError(_0x366acc,null));};exports[_0xd5eb('0x43')]=function(_0x360162,_0x1b8f6f){var _0xf8b827={'raw':!![],'where':{'id':_0x360162[_0xd5eb('0x44')]['id']}},_0x1ddb2f={};_0x1ddb2f[_0xd5eb('0x30')]=_[_0xd5eb('0x2c')](db[_0xd5eb('0x27')][_0xd5eb('0x28')]);_0x1ddb2f['query']=_[_0xd5eb('0x2c')](_0x360162[_0xd5eb('0x2d')]);_0x1ddb2f[_0xd5eb('0x2e')]=_[_0xd5eb('0x2f')](_0x1ddb2f[_0xd5eb('0x30')],_0x1ddb2f[_0xd5eb('0x2d')]);_0xf8b827[_0xd5eb('0x32')]=_[_0xd5eb('0x2f')](_0x1ddb2f['model'],qs[_0xd5eb('0x31')](_0x360162[_0xd5eb('0x2d')][_0xd5eb('0x31')]));_0xf8b827[_0xd5eb('0x32')]=_0xf8b827[_0xd5eb('0x32')]['length']?_0xf8b827['attributes']:_0x1ddb2f['model'];if(_0x360162[_0xd5eb('0x2d')]['includeAll']){_0xf8b827[_0xd5eb('0x45')]=[{'all':!![]}];}_0xf8b827=_[_0xd5eb('0x3b')]({},_0xf8b827,_0x360162['options']);return db[_0xd5eb('0x27')]['find'](_0xf8b827)[_0xd5eb('0x21')](handleEntityNotFound(_0x1b8f6f,null))[_0xd5eb('0x21')](respondWithResult(_0x1b8f6f,null))[_0xd5eb('0x42')](handleError(_0x1b8f6f,null));};exports[_0xd5eb('0x46')]=function(_0x705621,_0x428448){return db[_0xd5eb('0x27')][_0xd5eb('0x46')](_0x705621[_0xd5eb('0x47')],{})['then'](respondWithResult(_0x428448,0xc9))['catch'](handleError(_0x428448,null));};exports[_0xd5eb('0x48')]=function(_0x2f6235,_0x49f746){if(_0x2f6235[_0xd5eb('0x47')]['id']){delete _0x2f6235['body']['id'];}return db[_0xd5eb('0x27')]['find']({'where':{'id':_0x2f6235[_0xd5eb('0x44')]['id']}})[_0xd5eb('0x21')](handleEntityNotFound(_0x49f746,null))[_0xd5eb('0x21')](saveUpdates(_0x2f6235[_0xd5eb('0x47')],null))[_0xd5eb('0x21')](respondWithResult(_0x49f746,null))[_0xd5eb('0x42')](handleError(_0x49f746,null));};exports[_0xd5eb('0x22')]=function(_0x1a9455,_0x31e4bb){return db[_0xd5eb('0x27')][_0xd5eb('0x49')]({'where':{'id':_0x1a9455['params']['id']}})[_0xd5eb('0x21')](handleEntityNotFound(_0x31e4bb,null))['then'](removeEntity(_0x31e4bb,null))[_0xd5eb('0x42')](handleError(_0x31e4bb,null));};
\ No newline at end of file
index fb20c1e..bedfe36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e06=['path','./intSalesforceField.attributes','exports','SalesforceField','int_salesforce_fields','salesforce_unique_index','idField','FieldId','util','moment','bluebird','request-promise'];(function(_0x1d606d,_0x376e51){var _0x3c38bd=function(_0x2ea4e2){while(--_0x2ea4e2){_0x1d606d['push'](_0x1d606d['shift']());}};_0x3c38bd(++_0x376e51);}(_0x8e06,0x164));var _0x68e0=function(_0x4661dc,_0xa5d4d8){_0x4661dc=_0x4661dc-0x0;var _0x153e92=_0x8e06[_0x4661dc];return _0x153e92;};'use strict';var _=require('lodash');var util=require(_0x68e0('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x68e0('0x1'));var BPromise=require(_0x68e0('0x2'));var rp=require(_0x68e0('0x3'));var fs=require('fs');var path=require(_0x68e0('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x68e0('0x5'));module[_0x68e0('0x6')]=function(_0x3e5e41,_0x6011da){return _0x3e5e41['define'](_0x68e0('0x7'),attributes,{'tableName':_0x68e0('0x8'),'paranoid':![],'indexes':[{'name':_0x68e0('0x9'),'fields':[_0x68e0('0xa'),_0x68e0('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4683=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','salesforce_unique_index','FieldId'];(function(_0x352108,_0xb5cdc3){var _0x2c901c=function(_0x4e0a61){while(--_0x4e0a61){_0x352108['push'](_0x352108['shift']());}};_0x2c901c(++_0xb5cdc3);}(_0x4683,0x1ce));var _0x3468=function(_0x3d3947,_0xd4de34){_0x3d3947=_0x3d3947-0x0;var _0x48d859=_0x4683[_0x3d3947];return _0x48d859;};'use strict';var _=require('lodash');var util=require(_0x3468('0x0'));var logger=require(_0x3468('0x1'))(_0x3468('0x2'));var moment=require(_0x3468('0x3'));var BPromise=require(_0x3468('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3468('0x5'));var rimraf=require(_0x3468('0x6'));var config=require(_0x3468('0x7'));var attributes=require(_0x3468('0x8'));module[_0x3468('0x9')]=function(_0x304fea,_0x28884d){return _0x304fea[_0x3468('0xa')](_0x3468('0xb'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x3468('0xc'),'fields':['idField',_0x3468('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 517622c..4491d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf25=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','then','info','SalesforceField,\x20%s,\x20%s','debug','stringify','error','message','request\x20sent','result','catch','util','moment'];(function(_0x134dbc,_0x40a60f){var _0x103f4a=function(_0x1d7b7a){while(--_0x1d7b7a){_0x134dbc['push'](_0x134dbc['shift']());}};_0x103f4a(++_0x40a60f);}(_0xbf25,0xb2));var _0x5bf2=function(_0x30f196,_0xba388){_0x30f196=_0x30f196-0x0;var _0x23052f=_0xbf25[_0x30f196];return _0x23052f;};'use strict';var _=require('lodash');var util=require(_0x5bf2('0x0'));var moment=require(_0x5bf2('0x1'));var BPromise=require(_0x5bf2('0x2'));var rs=require(_0x5bf2('0x3'));var fs=require('fs');var Redis=require(_0x5bf2('0x4'));var db=require(_0x5bf2('0x5'))['db'];var utils=require(_0x5bf2('0x6'));var logger=require(_0x5bf2('0x7'))(_0x5bf2('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x5bf2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x16c002,_0x507a1b,_0x40249b){return new BPromise(function(_0x5d5783,_0x5d4ba0){return client['request'](_0x16c002,_0x40249b)[_0x5bf2('0xa')](function(_0x3944a6){logger[_0x5bf2('0xb')](_0x5bf2('0xc'),_0x507a1b,'request\x20sent');logger[_0x5bf2('0xd')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x507a1b,'request\x20sent',JSON[_0x5bf2('0xe')](_0x3944a6));if(_0x3944a6[_0x5bf2('0xf')]){if(_0x3944a6[_0x5bf2('0xf')]['code']===0x1f4){logger[_0x5bf2('0xf')]('SalesforceField,\x20%s,\x20%s',_0x507a1b,_0x3944a6['error'][_0x5bf2('0x10')]);return _0x5d4ba0(_0x3944a6['error'][_0x5bf2('0x10')]);}logger[_0x5bf2('0xf')](_0x5bf2('0xc'),_0x507a1b,_0x3944a6[_0x5bf2('0xf')][_0x5bf2('0x10')]);return _0x5d5783(_0x3944a6[_0x5bf2('0xf')]['message']);}else{logger['info'](_0x5bf2('0xc'),_0x507a1b,_0x5bf2('0x11'));_0x5d5783(_0x3944a6[_0x5bf2('0x12')][_0x5bf2('0x10')]);}})[_0x5bf2('0x13')](function(_0x41efad){logger[_0x5bf2('0xf')](_0x5bf2('0xc'),_0x507a1b,_0x41efad);_0x5d4ba0(_0x41efad);});});}
\ No newline at end of file
+var _0x1933=['request','then','info','SalesforceField,\x20%s,\x20%s','debug','SalesforceField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x2875e6,_0x36c81e){var _0x24c4b7=function(_0x53c480){while(--_0x53c480){_0x2875e6['push'](_0x2875e6['shift']());}};_0x24c4b7(++_0x36c81e);}(_0x1933,0x1ec));var _0x3193=function(_0x2cfbce,_0x1357d7){_0x2cfbce=_0x2cfbce-0x0;var _0x2d8301=_0x1933[_0x2cfbce];return _0x2d8301;};'use strict';var _=require(_0x3193('0x0'));var util=require(_0x3193('0x1'));var moment=require(_0x3193('0x2'));var BPromise=require('bluebird');var rs=require(_0x3193('0x3'));var fs=require('fs');var Redis=require(_0x3193('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3193('0x5'));var logger=require(_0x3193('0x6'))(_0x3193('0x7'));var config=require(_0x3193('0x8'));var jayson=require(_0x3193('0x9'));var client=jayson[_0x3193('0xa')][_0x3193('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbc639c,_0x63e36f,_0x16d1fa){return new BPromise(function(_0x391ab6,_0x172fa0){return client[_0x3193('0xc')](_0xbc639c,_0x16d1fa)[_0x3193('0xd')](function(_0x14af22){logger[_0x3193('0xe')](_0x3193('0xf'),_0x63e36f,'request\x20sent');logger[_0x3193('0x10')](_0x3193('0x11'),_0x63e36f,_0x3193('0x12'),JSON[_0x3193('0x13')](_0x14af22));if(_0x14af22[_0x3193('0x14')]){if(_0x14af22[_0x3193('0x14')]['code']===0x1f4){logger[_0x3193('0x14')]('SalesforceField,\x20%s,\x20%s',_0x63e36f,_0x14af22['error'][_0x3193('0x15')]);return _0x172fa0(_0x14af22[_0x3193('0x14')]['message']);}logger[_0x3193('0x14')](_0x3193('0xf'),_0x63e36f,_0x14af22[_0x3193('0x14')][_0x3193('0x15')]);return _0x391ab6(_0x14af22['error']['message']);}else{logger[_0x3193('0xe')](_0x3193('0xf'),_0x63e36f,'request\x20sent');_0x391ab6(_0x14af22[_0x3193('0x16')]['message']);}})[_0x3193('0x17')](function(_0x42a1ce){logger[_0x3193('0x14')](_0x3193('0xf'),_0x63e36f,_0x42a1ce);_0x172fa0(_0x42a1ce);});});}
\ No newline at end of file
index e02a4e6..dbcd4ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb9=['index','/:id','show','/:id/fields','getFields','create','post','/:id/configurations','addConfiguration','put','update','delete','exports','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x2ccc71,_0x1c458a){var _0x20fa15=function(_0x320e61){while(--_0x320e61){_0x2ccc71['push'](_0x2ccc71['shift']());}};_0x20fa15(++_0x1c458a);}(_0x3cb9,0x187));var _0x93cb=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0x3cb9[_0x1a36a5];return _0x746243;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x93cb('0x0'));var timeout=require(_0x93cb('0x1'));var express=require(_0x93cb('0x2'));var router=express[_0x93cb('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x93cb('0x4'));var config=require(_0x93cb('0x5'));var controller=require('./intServicenowAccount.controller');router[_0x93cb('0x6')]('/',auth[_0x93cb('0x7')](),controller[_0x93cb('0x8')]);router[_0x93cb('0x6')](_0x93cb('0x9'),auth[_0x93cb('0x7')](),controller[_0x93cb('0xa')]);router[_0x93cb('0x6')]('/:id/configurations',auth['isAuthenticated'](),controller['getConfigurations']);router[_0x93cb('0x6')](_0x93cb('0xb'),auth[_0x93cb('0x7')](),controller[_0x93cb('0xc')]);router['post']('/',auth[_0x93cb('0x7')](),controller[_0x93cb('0xd')]);router[_0x93cb('0xe')](_0x93cb('0xf'),auth[_0x93cb('0x7')](),controller[_0x93cb('0x10')]);router[_0x93cb('0x11')](_0x93cb('0x9'),auth[_0x93cb('0x7')](),controller[_0x93cb('0x12')]);router[_0x93cb('0x13')](_0x93cb('0x9'),auth[_0x93cb('0x7')](),controller['destroy']);module[_0x93cb('0x14')]=router;
\ No newline at end of file
+var _0x3f49=['exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','create','post','addConfiguration','put','update','destroy'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x3f49,0x11f));var _0x93f4=function(_0x286dab,_0x34f0ff){_0x286dab=_0x286dab-0x0;var _0x2c91a5=_0x3f49[_0x286dab];return _0x2c91a5;};'use strict';var multer=require(_0x93f4('0x0'));var util=require(_0x93f4('0x1'));var path=require('path');var timeout=require(_0x93f4('0x2'));var express=require(_0x93f4('0x3'));var router=express[_0x93f4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x93f4('0x5'));var interaction=require(_0x93f4('0x6'));var config=require('../../config/environment');var controller=require('./intServicenowAccount.controller');router[_0x93f4('0x7')]('/',auth[_0x93f4('0x8')](),controller[_0x93f4('0x9')]);router['get'](_0x93f4('0xa'),auth['isAuthenticated'](),controller[_0x93f4('0xb')]);router[_0x93f4('0x7')](_0x93f4('0xc'),auth[_0x93f4('0x8')](),controller[_0x93f4('0xd')]);router[_0x93f4('0x7')](_0x93f4('0xe'),auth[_0x93f4('0x8')](),controller['getFields']);router['post']('/',auth[_0x93f4('0x8')](),controller[_0x93f4('0xf')]);router[_0x93f4('0x10')](_0x93f4('0xc'),auth[_0x93f4('0x8')](),controller[_0x93f4('0x11')]);router[_0x93f4('0x12')](_0x93f4('0xa'),auth['isAuthenticated'](),controller[_0x93f4('0x13')]);router['delete']('/:id',auth[_0x93f4('0x8')](),controller[_0x93f4('0x14')]);module[_0x93f4('0x15')]=router;
\ No newline at end of file
index bdcba83..c080057 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdedc=['username','sequelize','exports','STRING'];(function(_0x4dbc5d,_0x2d0a51){var _0x45b461=function(_0x3e73ab){while(--_0x3e73ab){_0x4dbc5d['push'](_0x4dbc5d['shift']());}};_0x45b461(++_0x2d0a51);}(_0xdedc,0xdd));var _0xcded=function(_0x2a9f4,_0x25c14a){_0x2a9f4=_0x2a9f4-0x0;var _0x3c39e0=_0xdedc[_0x2a9f4];return _0x3c39e0;};'use strict';var Sequelize=require(_0xcded('0x0'));module[_0xcded('0x1')]={'name':{'type':Sequelize[_0xcded('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0xcded('0x3')},'password':{'type':Sequelize[_0xcded('0x2')]},'email':{'type':Sequelize[_0xcded('0x2')]},'remoteUri':{'type':Sequelize[_0xcded('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xcded('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xe6a7=['sequelize','STRING','remoteUri'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0xe6a7,0xe1));var _0x7e6a=function(_0x126193,_0x47bf8c){_0x126193=_0x126193-0x0;var _0x19bf08=_0xe6a7[_0x126193];return _0x19bf08;};'use strict';var Sequelize=require(_0x7e6a('0x0'));module['exports']={'name':{'type':Sequelize[_0x7e6a('0x1')]},'description':{'type':Sequelize[_0x7e6a('0x1')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x7e6a('0x1')],'unique':_0x7e6a('0x2')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 48cd74a..66f4302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa224=['sys_choice?sysparm_query=name=incident^element=','result','inactive','value','eml-format','zip-dir','fast-json-patch','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','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','stack','name','map','ServicenowAccount','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','then','include','findAll','show','includeAll','find','catch','create','body','params','getConfigurations','ServicenowConfiguration','length','addConfiguration','AccountId','channel','getDescriptions','ServicenowField','Descriptions','getFields','made_sla','knowledge','subcategory','notify','severity','category','parent','watch_list','upon_reject','child_incidents','approval_history','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','state','calendar_stc','closed_at','cmdb_ci','work_notes_list','business_service','priority','sys_domain_path','time_worked','expected_start','business_duration','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','close_code','correlation_display','delivery_task','work_start','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','follow_up','sys_id','reopened_by','incident_state','urgency','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','approval','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','remoteUri','slice','substring','lastIndexOf','format','%s/api/now/table/','password','GET','log','incident\x20table\x20objects','remove','includes','forEach','label','TCL:\x20_object','internalType','push','all','concat','ServiceNow\x20error:\x20','test','error','Wrong\x20credentials','true','False','false'];(function(_0x12f9a7,_0x1b2f68){var _0xa89a94=function(_0xbca23b){while(--_0xbca23b){_0x12f9a7['push'](_0x12f9a7['shift']());}};_0xa89a94(++_0x1b2f68);}(_0xa224,0xb0));var _0x4a22=function(_0x38e275,_0x418a59){_0x38e275=_0x38e275-0x0;var _0x14ee01=_0xa224[_0x38e275];return _0x14ee01;};'use strict';var emlformat=require(_0x4a22('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4a22('0x1'));var jsonpatch=require(_0x4a22('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4a22('0x3'));var Mustache=require(_0x4a22('0x4'));var util=require(_0x4a22('0x5'));var path=require('path');var sox=require(_0x4a22('0x6'));var csv=require(_0x4a22('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4a22('0x8'));var _=require(_0x4a22('0x9'));var squel=require(_0x4a22('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4a22('0xb'));var toCsv=require(_0x4a22('0x7'));var querystring=require(_0x4a22('0xc'));var Papa=require(_0x4a22('0xd'));var Redis=require(_0x4a22('0xe'));var authService=require(_0x4a22('0xf'));var qs=require(_0x4a22('0x10'));var as=require(_0x4a22('0x11'));var hardwareService=require(_0x4a22('0x12'));var logger=require(_0x4a22('0x13'))('api');var utils=require(_0x4a22('0x14'));var config=require(_0x4a22('0x15'));var licenseUtil=require(_0x4a22('0x16'));var db=require(_0x4a22('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2427ed,_0x3961d7){_0x3961d7=_0x3961d7||0xcc;return function(_0x25d162){if(_0x25d162){return _0x2427ed['sendStatus'](_0x3961d7);}return _0x2427ed[_0x4a22('0x18')](_0x3961d7)[_0x4a22('0x19')]();};}function respondWithResult(_0x47a70a,_0x12e634){_0x12e634=_0x12e634||0xc8;return function(_0x53d6bb){if(_0x53d6bb){return _0x47a70a[_0x4a22('0x18')](_0x12e634)[_0x4a22('0x1a')](_0x53d6bb);}};}function respondWithFilteredResult(_0x3be4d5,_0x3f07ae){return function(_0x51ce90){if(_0x51ce90){var _0x5752ad=typeof _0x3f07ae[_0x4a22('0x1b')]===_0x4a22('0x1c')&&typeof _0x3f07ae[_0x4a22('0x1d')]===_0x4a22('0x1c');var _0x19edc7=_0x51ce90['count'];var _0x2e13ef=_0x5752ad?0x0:_0x3f07ae[_0x4a22('0x1b')];var _0x415dcf=_0x5752ad?_0x51ce90[_0x4a22('0x1e')]:_0x3f07ae[_0x4a22('0x1b')]+_0x3f07ae['limit'];var _0x4015bb;if(_0x415dcf>=_0x19edc7){_0x415dcf=_0x19edc7;_0x4015bb=0xc8;}else{_0x4015bb=0xce;}_0x3be4d5[_0x4a22('0x18')](_0x4015bb);return _0x3be4d5[_0x4a22('0x1f')](_0x4a22('0x20'),_0x2e13ef+'-'+_0x415dcf+'/'+_0x19edc7)[_0x4a22('0x1a')](_0x51ce90);}return null;};}function patchUpdates(_0x1c27b1){return function(_0x26a4fa){try{jsonpatch[_0x4a22('0x21')](_0x26a4fa,_0x1c27b1,!![]);}catch(_0x5b0e0b){return BPromise['reject'](_0x5b0e0b);}return _0x26a4fa[_0x4a22('0x22')]();};}function saveUpdates(_0x4979f3,_0x4acbca){return function(_0x4eee9a){if(_0x4eee9a){return _0x4eee9a[_0x4a22('0x23')](_0x4979f3)['then'](function(_0x16bffc){return _0x16bffc;});}return null;};}function removeEntity(_0x35fbc0,_0x5a7492){return function(_0x963f40){if(_0x963f40){return _0x963f40[_0x4a22('0x24')]()['then'](function(){_0x35fbc0[_0x4a22('0x18')](0xcc)[_0x4a22('0x19')]();});}};}function handleEntityNotFound(_0x1062c2,_0x578320){return function(_0x379751){if(!_0x379751){_0x1062c2['sendStatus'](0x194);}return _0x379751;};}function handleError(_0x54d6b4,_0x4ce047){_0x4ce047=_0x4ce047||0x1f4;return function(_0x2f9fc){logger['error'](_0x2f9fc[_0x4a22('0x25')]);if(_0x2f9fc[_0x4a22('0x26')]){delete _0x2f9fc[_0x4a22('0x26')];}_0x54d6b4[_0x4a22('0x18')](_0x4ce047)['send'](_0x2f9fc);};}exports['index']=function(_0x1dee59,_0x53d206){var _0x2432c9={},_0x4e3c04={},_0x3dc839={'count':0x0,'rows':[]};var _0x48975c=_[_0x4a22('0x27')](db[_0x4a22('0x28')][_0x4a22('0x29')],function(_0x3d3315){return{'name':_0x3d3315['fieldName'],'type':_0x3d3315[_0x4a22('0x2a')]['key']};});_0x4e3c04[_0x4a22('0x2b')]=_[_0x4a22('0x27')](_0x48975c,'name');_0x4e3c04[_0x4a22('0x2c')]=_[_0x4a22('0x2d')](_0x1dee59['query']);_0x4e3c04[_0x4a22('0x2e')]=_[_0x4a22('0x2f')](_0x4e3c04[_0x4a22('0x2b')],_0x4e3c04[_0x4a22('0x2c')]);_0x2432c9[_0x4a22('0x30')]=_[_0x4a22('0x2f')](_0x4e3c04[_0x4a22('0x2b')],qs[_0x4a22('0x31')](_0x1dee59['query'][_0x4a22('0x31')]));_0x2432c9[_0x4a22('0x30')]=_0x2432c9[_0x4a22('0x30')]['length']?_0x2432c9[_0x4a22('0x30')]:_0x4e3c04[_0x4a22('0x2b')];if(!_0x1dee59[_0x4a22('0x2c')][_0x4a22('0x32')](_0x4a22('0x33'))){_0x2432c9['limit']=qs[_0x4a22('0x1d')](_0x1dee59[_0x4a22('0x2c')]['limit']);_0x2432c9[_0x4a22('0x1b')]=qs[_0x4a22('0x1b')](_0x1dee59['query'][_0x4a22('0x1b')]);}_0x2432c9[_0x4a22('0x34')]=qs['sort'](_0x1dee59['query'][_0x4a22('0x35')]);_0x2432c9[_0x4a22('0x36')]=qs['filters'](_[_0x4a22('0x37')](_0x1dee59['query'],_0x4e3c04[_0x4a22('0x2e')]),_0x48975c);if(_0x1dee59[_0x4a22('0x2c')][_0x4a22('0x38')]){_0x2432c9[_0x4a22('0x36')]=_[_0x4a22('0x39')](_0x2432c9[_0x4a22('0x36')],{'$or':_[_0x4a22('0x27')](_0x48975c,function(_0x59d3f5){if(_0x59d3f5[_0x4a22('0x2a')]!=='VIRTUAL'){var _0x19a0de={};_0x19a0de[_0x59d3f5[_0x4a22('0x26')]]={'$like':'%'+_0x1dee59['query'][_0x4a22('0x38')]+'%'};return _0x19a0de;}})});}_0x2432c9=_[_0x4a22('0x39')]({},_0x2432c9,_0x1dee59[_0x4a22('0x3a')]);var _0x149699={'where':_0x2432c9[_0x4a22('0x36')]};return db[_0x4a22('0x28')]['count'](_0x149699)[_0x4a22('0x3b')](function(_0x35928b){_0x3dc839[_0x4a22('0x1e')]=_0x35928b;if(_0x1dee59[_0x4a22('0x2c')]['includeAll']){_0x2432c9[_0x4a22('0x3c')]=[{'all':!![]}];}return db[_0x4a22('0x28')][_0x4a22('0x3d')](_0x2432c9);})[_0x4a22('0x3b')](function(_0xf3ebf1){_0x3dc839['rows']=_0xf3ebf1;return _0x3dc839;})[_0x4a22('0x3b')](respondWithFilteredResult(_0x53d206,_0x2432c9))['catch'](handleError(_0x53d206,null));};exports[_0x4a22('0x3e')]=function(_0x24dcad,_0x292762){var _0x4acf3a={'raw':![],'where':{'id':_0x24dcad['params']['id']}},_0x33d602={};_0x33d602[_0x4a22('0x2b')]=_['keys'](db[_0x4a22('0x28')][_0x4a22('0x29')]);_0x33d602[_0x4a22('0x2c')]=_[_0x4a22('0x2d')](_0x24dcad['query']);_0x33d602[_0x4a22('0x2e')]=_['intersection'](_0x33d602[_0x4a22('0x2b')],_0x33d602[_0x4a22('0x2c')]);_0x4acf3a['attributes']=_[_0x4a22('0x2f')](_0x33d602['model'],qs['fields'](_0x24dcad[_0x4a22('0x2c')][_0x4a22('0x31')]));_0x4acf3a['attributes']=_0x4acf3a[_0x4a22('0x30')]['length']?_0x4acf3a['attributes']:_0x33d602[_0x4a22('0x2b')];if(_0x24dcad[_0x4a22('0x2c')][_0x4a22('0x3f')]){_0x4acf3a[_0x4a22('0x3c')]=[{'all':!![]}];}_0x4acf3a=_[_0x4a22('0x39')]({},_0x4acf3a,_0x24dcad[_0x4a22('0x3a')]);return db[_0x4a22('0x28')][_0x4a22('0x40')](_0x4acf3a)[_0x4a22('0x3b')](handleEntityNotFound(_0x292762,null))[_0x4a22('0x3b')](respondWithResult(_0x292762,null))[_0x4a22('0x41')](handleError(_0x292762,null));};exports[_0x4a22('0x42')]=function(_0x4b831f,_0x47d4a9){return db[_0x4a22('0x28')]['create'](_0x4b831f[_0x4a22('0x43')],{})[_0x4a22('0x3b')](respondWithResult(_0x47d4a9,0xc9))[_0x4a22('0x41')](handleError(_0x47d4a9,null));};exports[_0x4a22('0x23')]=function(_0x46fef4,_0x5d91e0){if(_0x46fef4[_0x4a22('0x43')]['id']){delete _0x46fef4[_0x4a22('0x43')]['id'];}return db[_0x4a22('0x28')]['find']({'where':{'id':_0x46fef4[_0x4a22('0x44')]['id']}})[_0x4a22('0x3b')](handleEntityNotFound(_0x5d91e0,null))[_0x4a22('0x3b')](saveUpdates(_0x46fef4['body'],null))[_0x4a22('0x3b')](respondWithResult(_0x5d91e0,null))['catch'](handleError(_0x5d91e0,null));};exports[_0x4a22('0x24')]=function(_0x49d476,_0xc1b44c){return db[_0x4a22('0x28')][_0x4a22('0x40')]({'where':{'id':_0x49d476['params']['id']}})[_0x4a22('0x3b')](handleEntityNotFound(_0xc1b44c,null))['then'](removeEntity(_0xc1b44c,null))['catch'](handleError(_0xc1b44c,null));};exports[_0x4a22('0x45')]=function(_0x41bd8c,_0x449afe,_0x2517c0){var _0x45b1bf={};var _0x44f35e={};var _0x4008e7;var _0x31bea5;return db['ServicenowAccount']['findOne']({'where':{'id':_0x41bd8c['params']['id']}})['then'](handleEntityNotFound(_0x449afe,null))[_0x4a22('0x3b')](function(_0x4ee144){if(_0x4ee144){_0x4008e7=_0x4ee144;_0x44f35e[_0x4a22('0x2b')]=_['keys'](db[_0x4a22('0x46')]['rawAttributes']);_0x44f35e['query']=_['keys'](_0x41bd8c[_0x4a22('0x2c')]);_0x44f35e[_0x4a22('0x2e')]=_[_0x4a22('0x2f')](_0x44f35e[_0x4a22('0x2b')],_0x44f35e[_0x4a22('0x2c')]);_0x45b1bf[_0x4a22('0x30')]=_[_0x4a22('0x2f')](_0x44f35e[_0x4a22('0x2b')],qs[_0x4a22('0x31')](_0x41bd8c[_0x4a22('0x2c')]['fields']));_0x45b1bf[_0x4a22('0x30')]=_0x45b1bf[_0x4a22('0x30')][_0x4a22('0x47')]?_0x45b1bf['attributes']:_0x44f35e['model'];_0x45b1bf[_0x4a22('0x34')]=qs[_0x4a22('0x35')](_0x41bd8c['query'][_0x4a22('0x35')]);_0x45b1bf[_0x4a22('0x36')]=qs[_0x4a22('0x2e')](_[_0x4a22('0x37')](_0x41bd8c[_0x4a22('0x2c')],_0x44f35e['filters']));if(_0x41bd8c[_0x4a22('0x2c')][_0x4a22('0x38')]){_0x45b1bf[_0x4a22('0x36')]=_[_0x4a22('0x39')](_0x45b1bf[_0x4a22('0x36')],{'$or':_[_0x4a22('0x27')](_0x45b1bf[_0x4a22('0x30')],function(_0x57c922){var _0x391f4a={};_0x391f4a[_0x57c922]={'$like':'%'+_0x41bd8c['query'][_0x4a22('0x38')]+'%'};return _0x391f4a;})});}_0x45b1bf=_[_0x4a22('0x39')]({},_0x45b1bf,_0x41bd8c[_0x4a22('0x3a')]);return _0x4008e7[_0x4a22('0x45')](_0x45b1bf);}})[_0x4a22('0x3b')](function(_0xf4899a){if(_0xf4899a){_0x31bea5=_0xf4899a[_0x4a22('0x47')];if(!_0x41bd8c[_0x4a22('0x2c')]['hasOwnProperty'](_0x4a22('0x33'))){_0x45b1bf[_0x4a22('0x1d')]=qs[_0x4a22('0x1d')](_0x41bd8c[_0x4a22('0x2c')][_0x4a22('0x1d')]);_0x45b1bf[_0x4a22('0x1b')]=qs['offset'](_0x41bd8c[_0x4a22('0x2c')][_0x4a22('0x1b')]);}return _0x4008e7[_0x4a22('0x45')](_0x45b1bf);}})[_0x4a22('0x3b')](function(_0x3c37dd){if(_0x3c37dd){return _0x3c37dd?{'count':_0x31bea5,'rows':_0x3c37dd}:null;}})['then'](respondWithResult(_0x449afe,null))[_0x4a22('0x41')](handleError(_0x449afe,null));};exports[_0x4a22('0x48')]=function(_0x32871e,_0x233aa2,_0x1054f0){if(_0x32871e[_0x4a22('0x43')]['id']){delete _0x32871e[_0x4a22('0x43')]['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x32871e['params']['id']}})[_0x4a22('0x3b')](handleEntityNotFound(_0x233aa2,null))[_0x4a22('0x3b')](function(_0x51e551){if(_0x51e551){_0x32871e[_0x4a22('0x43')][_0x4a22('0x49')]=_0x51e551['id'];_0x32871e[_0x4a22('0x43')]['Subjects']=integrations['getSubjects'](_0x32871e[_0x4a22('0x43')][_0x4a22('0x4a')],_0x32871e['body'][_0x4a22('0x2a')]);_0x32871e[_0x4a22('0x43')]['Descriptions']=integrations[_0x4a22('0x4b')](_0x32871e[_0x4a22('0x43')][_0x4a22('0x4a')],_0x32871e[_0x4a22('0x43')][_0x4a22('0x2a')]);return db[_0x4a22('0x46')][_0x4a22('0x42')](_0x32871e['body'],{'include':[{'model':db[_0x4a22('0x4c')],'as':'Subjects'},{'model':db[_0x4a22('0x4c')],'as':_0x4a22('0x4d')}]});}return null;})['then'](respondWithResult(_0x233aa2,null))[_0x4a22('0x41')](handleError(_0x233aa2,null));};exports[_0x4a22('0x4e')]=function(_0x16445a,_0x693142,_0x1e486a){var _0x499950=[_0x4a22('0x4f'),'hold_reason',_0x4a22('0x50'),_0x4a22('0x51'),'close_code',_0x4a22('0x52'),'incident_state',_0x4a22('0x53'),_0x4a22('0x54')];var _0x1a1264=[_0x4a22('0x55'),_0x4a22('0x4f'),'caused_by',_0x4a22('0x56'),_0x4a22('0x57'),'sys_updated_on',_0x4a22('0x58'),'hold_reason',_0x4a22('0x59'),'number',_0x4a22('0x5a'),_0x4a22('0x5b'),_0x4a22('0x5c'),_0x4a22('0x5d'),_0x4a22('0x5e'),'sys_domain',_0x4a22('0x5f'),'sys_created_by',_0x4a22('0x50'),_0x4a22('0x34'),_0x4a22('0x60'),_0x4a22('0x61'),_0x4a22('0x62'),'delivery_plan','impact','active',_0x4a22('0x63'),_0x4a22('0x64'),_0x4a22('0x65'),_0x4a22('0x66'),'rfc',_0x4a22('0x67'),_0x4a22('0x68'),'opened_at',_0x4a22('0x69'),'group_list','work_end',_0x4a22('0x6a'),_0x4a22('0x6b'),_0x4a22('0x6c'),_0x4a22('0x6d'),_0x4a22('0x51'),_0x4a22('0x6e'),_0x4a22('0x6f'),_0x4a22('0x70'),_0x4a22('0x71'),_0x4a22('0x72'),_0x4a22('0x73'),'assignment_group','business_stc',_0x4a22('0x74'),_0x4a22('0x75'),_0x4a22('0x76'),_0x4a22('0x52'),_0x4a22('0x77'),_0x4a22('0x78'),'closed_by',_0x4a22('0x79'),'parent_incident',_0x4a22('0x7a'),'contact_type',_0x4a22('0x7b'),_0x4a22('0x7c'),_0x4a22('0x7d'),_0x4a22('0x7e'),_0x4a22('0x7f'),_0x4a22('0x80'),_0x4a22('0x81'),_0x4a22('0x82'),_0x4a22('0x53'),_0x4a22('0x83'),_0x4a22('0x84'),_0x4a22('0x85'),'comments_and_work_notes',_0x4a22('0x86'),_0x4a22('0x87'),_0x4a22('0x88'),_0x4a22('0x89'),_0x4a22('0x8a'),_0x4a22('0x8b'),_0x4a22('0x8c'),_0x4a22('0x8d'),'category'];var _0x3cfbab='';var _0x4aa2e9='';var _0x49eae8=[];var _0x28c7c7='';var _0x2e8342='';var _0x497e8e=[];var _0x2bba45='';var _0x5bea2a='';var _0x4aba5c={};var _0x25d573='';return db[_0x4a22('0x28')]['findOne']({'where':{'id':_0x16445a[_0x4a22('0x44')]['id']},'attributes':['id','username','password','email',_0x4a22('0x8e'),'serverUrl']})[_0x4a22('0x3b')](handleEntityNotFound(_0x693142,null))['then'](function(_0x555293){if(_0x555293){_0x25d573=_0x555293[_0x4a22('0x8e')];var _0x4c0d89=_0x25d573[_0x4a22('0x8f')](-0x1);if(_0x4c0d89==='/'){_0x25d573=_0x25d573[_0x4a22('0x90')](0x0,_0x25d573[_0x4a22('0x91')](_0x4c0d89));}_0x5bea2a=util['format']('%s/api/now/doc/table/schema/',_0x25d573);_0x2bba45=util[_0x4a22('0x92')](_0x4a22('0x93'),_0x25d573);_0x4aba5c={'user':_0x555293['username'],'pass':_0x555293[_0x4a22('0x94')]};var _0x14783c={'method':_0x4a22('0x95'),'uri':_0x5bea2a+'incident?sysparm_display_value=all','auth':_0x4aba5c,'json':!![]};return rp(_0x14783c);}})['then'](function(_0x3f327d){if(_0x3f327d['result']['length']>0x0){_0x3cfbab=_0x3f327d['result'];}console[_0x4a22('0x96')](_0x4a22('0x97'),_0x3cfbab);_0x497e8e=[];_0x4aa2e9=Object['assign']([],_0x3cfbab);_[_0x4a22('0x98')](_0x4aa2e9,function(_0x4447fc){return!_0x499950[_0x4a22('0x99')](_0x4447fc[_0x4a22('0x26')]);});_0x4aa2e9[_0x4a22('0x9a')](function(_0x3d4253){var _0x593252=createFieldObject(_0x2bba45,_0x4aba5c,_0x3d4253['internalType'],_0x3d4253[_0x4a22('0x26')],_0x3d4253[_0x4a22('0x9b')],![]);_0x497e8e['push'](_0x593252);});return Promise['all'](_0x497e8e);})[_0x4a22('0x3b')](function(_0x55a460){_0x49eae8=_0x55a460;_0x28c7c7=Object['assign']([],_0x3cfbab);console[_0x4a22('0x96')](_0x4a22('0x9c'),_0x3cfbab);_['remove'](_0x28c7c7,function(_0x1ea4e8){return _0x1a1264[_0x4a22('0x99')](_0x1ea4e8[_0x4a22('0x26')]);});console[_0x4a22('0x96')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x28c7c7);_0x497e8e=[];_0x28c7c7[_0x4a22('0x9a')](function(_0xbd4bda){var _0x105ad9=createFieldObject(_0x2bba45,_0x4aba5c,_0xbd4bda[_0x4a22('0x9d')],_0xbd4bda[_0x4a22('0x26')],_0xbd4bda[_0x4a22('0x9b')],!![]);_0x497e8e[_0x4a22('0x9e')](_0x105ad9);});return Promise[_0x4a22('0x9f')](_0x497e8e);})[_0x4a22('0x3b')](function(_0x335bd8){_0x2e8342=_0x335bd8;var _0x230a6c=_0x49eae8[_0x4a22('0xa0')](_0x2e8342);return{'count':_0x230a6c['length'],'rows':_0x230a6c};})[_0x4a22('0x3b')](respondWithResult(_0x693142,null))[_0x4a22('0x41')](function(_0x10f3bc){console['log'](_0x4a22('0xa1')+_0x10f3bc);var _0x1ee79b=_0x16445a['query'][_0x4a22('0xa2')]?0x1f4:_0x10f3bc['statusCode']||0x1f4;logger[_0x4a22('0xa3')](_0x10f3bc[_0x4a22('0x25')]);delete _0x10f3bc[_0x4a22('0x26')];if(_0x1ee79b===0x191){_0x1ee79b=0x190;}_0x693142['status'](_0x1ee79b)['send'](_0x16445a[_0x4a22('0x2c')]['test']?{'message':_0x4a22('0xa4'),'statusCode':_0x10f3bc['statusCode']}:_0x10f3bc);});};function createFieldObject(_0x1cd8f4,_0x473b2c,_0x53863b,_0x47de45,_0x3f099,_0x524adc){return new Promise(function(_0xce4dc7,_0x577a9f){var _0x311363={'id':_0x47de45,'name':_0x3f099,'custom':_0x524adc};if(_0x53863b==='boolean'){_0x311363[_0x4a22('0x3a')]=[{'name':'True','value':_0x4a22('0xa5')},{'name':_0x4a22('0xa6'),'value':_0x4a22('0xa7')}];_0xce4dc7(_0x311363);}else{var _0x1ba5b4={'method':'GET','uri':_0x1cd8f4+_0x4a22('0xa8')+_0x47de45,'auth':_0x473b2c,'json':!![]};return rp(_0x1ba5b4)[_0x4a22('0x3b')](function(_0x5ce47d){var _0x43ac55=[];if(_0x5ce47d[_0x4a22('0xa9')][_0x4a22('0x47')]>0x0){_0x5ce47d['result'][_0x4a22('0x9a')](function(_0x140b03){if(_0x140b03[_0x4a22('0xaa')]===_0x4a22('0xa7')){var _0x569cc4={'name':_0x140b03[_0x4a22('0x9b')],'value':_0x140b03[_0x4a22('0xab')]};_0x43ac55[_0x4a22('0x9e')](_0x569cc4);}});}_0x311363[_0x4a22('0x3a')]=_0x43ac55;if(_0x311363[_0x4a22('0x3a')][_0x4a22('0x47')]>0x0){_0xce4dc7(_0x311363);}else{if(_0x524adc==![]){_0xce4dc7();}else{_0xce4dc7(_0x311363);}}});}});}
\ No newline at end of file
+var _0x5b6b=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','rows','catch','params','rawAttributes','include','find','create','body','update','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','getSubjects','channel','getDescriptions','Subjects','ServicenowField','Descriptions','made_sla','knowledge','subcategory','incident_state','severity','category','parent','watch_list','upon_reject','child_incidents','approval_history','number','sys_updated_by','opened_by','sys_created_on','sys_domain','sys_created_by','closed_at','cmdb_ci','delivery_plan','business_service','sys_domain_path','time_worked','opened_at','business_duration','group_list','resolved_at','work_notes','close_code','correlation_display','delivery_task','work_start','assignment_group','additional_assignee_list','description','calendar_duration','notify','sys_class_name','close_notes','closed_by','follow_up','sys_id','reopened_by','urgency','problem_id','activity_due','assigned_to','comments','sla_due','approval','due_date','sys_tags','escalation','upon_approval','location','username','password','email','remoteUri','slice','substring','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','forEach','label','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','push','concat','statusCode','Wrong\x20credentials','options','True','False','false','value','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','destroy','then','error','stack','name','index','map','ServicenowAccount','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields'];(function(_0x3a2630,_0x205e7c){var _0x4b3b09=function(_0x55841e){while(--_0x55841e){_0x3a2630['push'](_0x3a2630['shift']());}};_0x4b3b09(++_0x205e7c);}(_0x5b6b,0x1bb));var _0xb5b6=function(_0x45e957,_0x3dd9dc){_0x45e957=_0x45e957-0x0;var _0x212ba4=_0x5b6b[_0x45e957];return _0x212ba4;};'use strict';var emlformat=require(_0xb5b6('0x0'));var rimraf=require(_0xb5b6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb5b6('0x2'));var rp=require(_0xb5b6('0x3'));var moment=require(_0xb5b6('0x4'));var BPromise=require(_0xb5b6('0x5'));var Mustache=require(_0xb5b6('0x6'));var util=require(_0xb5b6('0x7'));var path=require(_0xb5b6('0x8'));var sox=require('sox');var csv=require(_0xb5b6('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb5b6('0xa'));var _=require(_0xb5b6('0xb'));var squel=require(_0xb5b6('0xc'));var crypto=require(_0xb5b6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb5b6('0xe'));var toCsv=require(_0xb5b6('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb5b6('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xb5b6('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb5b6('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xb5b6('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xb5b6('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x62a33d,_0x320c21){_0x320c21=_0x320c21||0xcc;return function(_0x5acd61){if(_0x5acd61){return _0x62a33d[_0xb5b6('0x14')](_0x320c21);}return _0x62a33d[_0xb5b6('0x15')](_0x320c21)[_0xb5b6('0x16')]();};}function respondWithResult(_0x5ede00,_0x31d144){_0x31d144=_0x31d144||0xc8;return function(_0x1fd4e7){if(_0x1fd4e7){return _0x5ede00[_0xb5b6('0x15')](_0x31d144)[_0xb5b6('0x17')](_0x1fd4e7);}};}function respondWithFilteredResult(_0x1d4578,_0x257580){return function(_0x5cc2f5){if(_0x5cc2f5){var _0x49c54b=typeof _0x257580[_0xb5b6('0x18')]==='undefined'&&typeof _0x257580[_0xb5b6('0x19')]===_0xb5b6('0x1a');var _0x171f34=_0x5cc2f5[_0xb5b6('0x1b')];var _0x29366e=_0x49c54b?0x0:_0x257580[_0xb5b6('0x18')];var _0x7dd3e5=_0x49c54b?_0x5cc2f5[_0xb5b6('0x1b')]:_0x257580['offset']+_0x257580[_0xb5b6('0x19')];var _0x46397c;if(_0x7dd3e5>=_0x171f34){_0x7dd3e5=_0x171f34;_0x46397c=0xc8;}else{_0x46397c=0xce;}_0x1d4578[_0xb5b6('0x15')](_0x46397c);return _0x1d4578[_0xb5b6('0x1c')](_0xb5b6('0x1d'),_0x29366e+'-'+_0x7dd3e5+'/'+_0x171f34)[_0xb5b6('0x17')](_0x5cc2f5);}return null;};}function patchUpdates(_0x13abdd){return function(_0x8338ab){try{jsonpatch['apply'](_0x8338ab,_0x13abdd,!![]);}catch(_0x524f57){return BPromise[_0xb5b6('0x1e')](_0x524f57);}return _0x8338ab['save']();};}function saveUpdates(_0x5c340e,_0xd23674){return function(_0x53bd3f){if(_0x53bd3f){return _0x53bd3f['update'](_0x5c340e)['then'](function(_0x1ba840){return _0x1ba840;});}return null;};}function removeEntity(_0x4f1f8b,_0x103d2e){return function(_0x35328d){if(_0x35328d){return _0x35328d[_0xb5b6('0x1f')]()[_0xb5b6('0x20')](function(){_0x4f1f8b[_0xb5b6('0x15')](0xcc)[_0xb5b6('0x16')]();});}};}function handleEntityNotFound(_0x484aa9,_0x9d37d6){return function(_0x1babf4){if(!_0x1babf4){_0x484aa9[_0xb5b6('0x14')](0x194);}return _0x1babf4;};}function handleError(_0x175ddc,_0x3026a3){_0x3026a3=_0x3026a3||0x1f4;return function(_0x2de315){logger[_0xb5b6('0x21')](_0x2de315[_0xb5b6('0x22')]);if(_0x2de315[_0xb5b6('0x23')]){delete _0x2de315[_0xb5b6('0x23')];}_0x175ddc[_0xb5b6('0x15')](_0x3026a3)['send'](_0x2de315);};}exports[_0xb5b6('0x24')]=function(_0x4d7401,_0x53de77){var _0x8dad27={},_0x557c56={},_0x5a9ff9={'count':0x0,'rows':[]};var _0xa8f336=_[_0xb5b6('0x25')](db[_0xb5b6('0x26')]['rawAttributes'],function(_0x22617c){return{'name':_0x22617c[_0xb5b6('0x27')],'type':_0x22617c[_0xb5b6('0x28')][_0xb5b6('0x29')]};});_0x557c56[_0xb5b6('0x2a')]=_[_0xb5b6('0x25')](_0xa8f336,_0xb5b6('0x23'));_0x557c56[_0xb5b6('0x2b')]=_[_0xb5b6('0x2c')](_0x4d7401['query']);_0x557c56[_0xb5b6('0x2d')]=_['intersection'](_0x557c56[_0xb5b6('0x2a')],_0x557c56['query']);_0x8dad27[_0xb5b6('0x2e')]=_[_0xb5b6('0x2f')](_0x557c56[_0xb5b6('0x2a')],qs[_0xb5b6('0x30')](_0x4d7401[_0xb5b6('0x2b')]['fields']));_0x8dad27[_0xb5b6('0x2e')]=_0x8dad27[_0xb5b6('0x2e')][_0xb5b6('0x31')]?_0x8dad27[_0xb5b6('0x2e')]:_0x557c56[_0xb5b6('0x2a')];if(!_0x4d7401[_0xb5b6('0x2b')][_0xb5b6('0x32')](_0xb5b6('0x33'))){_0x8dad27[_0xb5b6('0x19')]=qs[_0xb5b6('0x19')](_0x4d7401[_0xb5b6('0x2b')]['limit']);_0x8dad27['offset']=qs[_0xb5b6('0x18')](_0x4d7401[_0xb5b6('0x2b')][_0xb5b6('0x18')]);}_0x8dad27[_0xb5b6('0x34')]=qs['sort'](_0x4d7401[_0xb5b6('0x2b')][_0xb5b6('0x35')]);_0x8dad27[_0xb5b6('0x36')]=qs['filters'](_[_0xb5b6('0x37')](_0x4d7401[_0xb5b6('0x2b')],_0x557c56[_0xb5b6('0x2d')]),_0xa8f336);if(_0x4d7401['query'][_0xb5b6('0x38')]){_0x8dad27[_0xb5b6('0x36')]=_[_0xb5b6('0x39')](_0x8dad27[_0xb5b6('0x36')],{'$or':_[_0xb5b6('0x25')](_0xa8f336,function(_0x29bce1){if(_0x29bce1['type']!=='VIRTUAL'){var _0xc9bc1={};_0xc9bc1[_0x29bce1[_0xb5b6('0x23')]]={'$like':'%'+_0x4d7401[_0xb5b6('0x2b')][_0xb5b6('0x38')]+'%'};return _0xc9bc1;}})});}_0x8dad27=_['merge']({},_0x8dad27,_0x4d7401['options']);var _0x306fa3={'where':_0x8dad27[_0xb5b6('0x36')]};return db[_0xb5b6('0x26')][_0xb5b6('0x1b')](_0x306fa3)[_0xb5b6('0x20')](function(_0x669492){_0x5a9ff9['count']=_0x669492;if(_0x4d7401['query'][_0xb5b6('0x3a')]){_0x8dad27['include']=[{'all':!![]}];}return db[_0xb5b6('0x26')]['findAll'](_0x8dad27);})['then'](function(_0x3fbf84){_0x5a9ff9[_0xb5b6('0x3b')]=_0x3fbf84;return _0x5a9ff9;})[_0xb5b6('0x20')](respondWithFilteredResult(_0x53de77,_0x8dad27))[_0xb5b6('0x3c')](handleError(_0x53de77,null));};exports['show']=function(_0x1ab5fa,_0x1005ec){var _0x30b007={'raw':![],'where':{'id':_0x1ab5fa[_0xb5b6('0x3d')]['id']}},_0x558dd8={};_0x558dd8[_0xb5b6('0x2a')]=_['keys'](db[_0xb5b6('0x26')][_0xb5b6('0x3e')]);_0x558dd8[_0xb5b6('0x2b')]=_[_0xb5b6('0x2c')](_0x1ab5fa[_0xb5b6('0x2b')]);_0x558dd8[_0xb5b6('0x2d')]=_[_0xb5b6('0x2f')](_0x558dd8[_0xb5b6('0x2a')],_0x558dd8[_0xb5b6('0x2b')]);_0x30b007[_0xb5b6('0x2e')]=_[_0xb5b6('0x2f')](_0x558dd8[_0xb5b6('0x2a')],qs['fields'](_0x1ab5fa[_0xb5b6('0x2b')][_0xb5b6('0x30')]));_0x30b007['attributes']=_0x30b007[_0xb5b6('0x2e')][_0xb5b6('0x31')]?_0x30b007[_0xb5b6('0x2e')]:_0x558dd8[_0xb5b6('0x2a')];if(_0x1ab5fa[_0xb5b6('0x2b')][_0xb5b6('0x3a')]){_0x30b007[_0xb5b6('0x3f')]=[{'all':!![]}];}_0x30b007=_[_0xb5b6('0x39')]({},_0x30b007,_0x1ab5fa['options']);return db[_0xb5b6('0x26')][_0xb5b6('0x40')](_0x30b007)[_0xb5b6('0x20')](handleEntityNotFound(_0x1005ec,null))[_0xb5b6('0x20')](respondWithResult(_0x1005ec,null))[_0xb5b6('0x3c')](handleError(_0x1005ec,null));};exports['create']=function(_0x4f0ac5,_0x13aa95){return db[_0xb5b6('0x26')][_0xb5b6('0x41')](_0x4f0ac5[_0xb5b6('0x42')],{})[_0xb5b6('0x20')](respondWithResult(_0x13aa95,0xc9))[_0xb5b6('0x3c')](handleError(_0x13aa95,null));};exports[_0xb5b6('0x43')]=function(_0x4014e7,_0x18bd93){if(_0x4014e7[_0xb5b6('0x42')]['id']){delete _0x4014e7[_0xb5b6('0x42')]['id'];}return db[_0xb5b6('0x26')]['find']({'where':{'id':_0x4014e7[_0xb5b6('0x3d')]['id']}})[_0xb5b6('0x20')](handleEntityNotFound(_0x18bd93,null))[_0xb5b6('0x20')](saveUpdates(_0x4014e7[_0xb5b6('0x42')],null))['then'](respondWithResult(_0x18bd93,null))['catch'](handleError(_0x18bd93,null));};exports[_0xb5b6('0x1f')]=function(_0x449542,_0x3079e1){return db['ServicenowAccount'][_0xb5b6('0x40')]({'where':{'id':_0x449542['params']['id']}})[_0xb5b6('0x20')](handleEntityNotFound(_0x3079e1,null))[_0xb5b6('0x20')](removeEntity(_0x3079e1,null))[_0xb5b6('0x3c')](handleError(_0x3079e1,null));};exports[_0xb5b6('0x44')]=function(_0x282969,_0x3ea983,_0x13b0a3){var _0x321f00={};var _0x42c928={};var _0x3bea99;var _0x40ea98;return db['ServicenowAccount'][_0xb5b6('0x45')]({'where':{'id':_0x282969[_0xb5b6('0x3d')]['id']}})[_0xb5b6('0x20')](handleEntityNotFound(_0x3ea983,null))[_0xb5b6('0x20')](function(_0x1206ac){if(_0x1206ac){_0x3bea99=_0x1206ac;_0x42c928[_0xb5b6('0x2a')]=_[_0xb5b6('0x2c')](db[_0xb5b6('0x46')][_0xb5b6('0x3e')]);_0x42c928['query']=_[_0xb5b6('0x2c')](_0x282969[_0xb5b6('0x2b')]);_0x42c928[_0xb5b6('0x2d')]=_['intersection'](_0x42c928[_0xb5b6('0x2a')],_0x42c928[_0xb5b6('0x2b')]);_0x321f00[_0xb5b6('0x2e')]=_[_0xb5b6('0x2f')](_0x42c928[_0xb5b6('0x2a')],qs[_0xb5b6('0x30')](_0x282969[_0xb5b6('0x2b')][_0xb5b6('0x30')]));_0x321f00[_0xb5b6('0x2e')]=_0x321f00[_0xb5b6('0x2e')][_0xb5b6('0x31')]?_0x321f00['attributes']:_0x42c928['model'];_0x321f00[_0xb5b6('0x34')]=qs['sort'](_0x282969[_0xb5b6('0x2b')]['sort']);_0x321f00[_0xb5b6('0x36')]=qs['filters'](_['pick'](_0x282969[_0xb5b6('0x2b')],_0x42c928[_0xb5b6('0x2d')]));if(_0x282969[_0xb5b6('0x2b')]['filter']){_0x321f00[_0xb5b6('0x36')]=_['merge'](_0x321f00[_0xb5b6('0x36')],{'$or':_[_0xb5b6('0x25')](_0x321f00['attributes'],function(_0x86ceba){var _0x4e2442={};_0x4e2442[_0x86ceba]={'$like':'%'+_0x282969[_0xb5b6('0x2b')]['filter']+'%'};return _0x4e2442;})});}_0x321f00=_[_0xb5b6('0x39')]({},_0x321f00,_0x282969['options']);return _0x3bea99['getConfigurations'](_0x321f00);}})['then'](function(_0x30ff5e){if(_0x30ff5e){_0x40ea98=_0x30ff5e[_0xb5b6('0x31')];if(!_0x282969[_0xb5b6('0x2b')][_0xb5b6('0x32')]('nolimit')){_0x321f00[_0xb5b6('0x19')]=qs['limit'](_0x282969[_0xb5b6('0x2b')][_0xb5b6('0x19')]);_0x321f00[_0xb5b6('0x18')]=qs[_0xb5b6('0x18')](_0x282969['query'][_0xb5b6('0x18')]);}return _0x3bea99['getConfigurations'](_0x321f00);}})[_0xb5b6('0x20')](function(_0x24deff){if(_0x24deff){return _0x24deff?{'count':_0x40ea98,'rows':_0x24deff}:null;}})[_0xb5b6('0x20')](respondWithResult(_0x3ea983,null))['catch'](handleError(_0x3ea983,null));};exports[_0xb5b6('0x47')]=function(_0x268f78,_0xaf05be,_0x46fa80){if(_0x268f78['body']['id']){delete _0x268f78['body']['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x268f78['params']['id']}})[_0xb5b6('0x20')](handleEntityNotFound(_0xaf05be,null))[_0xb5b6('0x20')](function(_0x3f3bfb){if(_0x3f3bfb){_0x268f78[_0xb5b6('0x42')][_0xb5b6('0x48')]=_0x3f3bfb['id'];_0x268f78[_0xb5b6('0x42')]['Subjects']=integrations[_0xb5b6('0x49')](_0x268f78[_0xb5b6('0x42')][_0xb5b6('0x4a')],_0x268f78[_0xb5b6('0x42')][_0xb5b6('0x28')]);_0x268f78[_0xb5b6('0x42')]['Descriptions']=integrations[_0xb5b6('0x4b')](_0x268f78[_0xb5b6('0x42')]['channel'],_0x268f78['body'][_0xb5b6('0x28')]);return db[_0xb5b6('0x46')][_0xb5b6('0x41')](_0x268f78[_0xb5b6('0x42')],{'include':[{'model':db['ServicenowField'],'as':_0xb5b6('0x4c')},{'model':db[_0xb5b6('0x4d')],'as':_0xb5b6('0x4e')}]});}return null;})[_0xb5b6('0x20')](respondWithResult(_0xaf05be,null))[_0xb5b6('0x3c')](handleError(_0xaf05be,null));};exports['getFields']=function(_0x4a08c8,_0x559b86,_0x422621){var _0x101639=[_0xb5b6('0x4f'),'hold_reason',_0xb5b6('0x50'),_0xb5b6('0x51'),'close_code','notify',_0xb5b6('0x52'),_0xb5b6('0x53'),_0xb5b6('0x54')];var _0x19fe1b=[_0xb5b6('0x55'),_0xb5b6('0x4f'),'caused_by',_0xb5b6('0x56'),_0xb5b6('0x57'),'sys_updated_on',_0xb5b6('0x58'),'hold_reason',_0xb5b6('0x59'),_0xb5b6('0x5a'),'resolved_by',_0xb5b6('0x5b'),_0xb5b6('0x5c'),'user_input',_0xb5b6('0x5d'),_0xb5b6('0x5e'),'state',_0xb5b6('0x5f'),_0xb5b6('0x50'),_0xb5b6('0x34'),'calendar_stc',_0xb5b6('0x60'),_0xb5b6('0x61'),_0xb5b6('0x62'),'impact','active','work_notes_list',_0xb5b6('0x63'),'priority',_0xb5b6('0x64'),'rfc',_0xb5b6('0x65'),'expected_start',_0xb5b6('0x66'),_0xb5b6('0x67'),_0xb5b6('0x68'),'work_end','reopened_time',_0xb5b6('0x69'),'caller_id','approval_set',_0xb5b6('0x51'),_0xb5b6('0x6a'),'short_description',_0xb5b6('0x6b'),_0xb5b6('0x6c'),_0xb5b6('0x6d'),_0xb5b6('0x6e'),_0xb5b6('0x6f'),'business_stc',_0xb5b6('0x70'),_0xb5b6('0x71'),_0xb5b6('0x72'),_0xb5b6('0x73'),_0xb5b6('0x74'),_0xb5b6('0x75'),_0xb5b6('0x76'),_0xb5b6('0x77'),'parent_incident',_0xb5b6('0x78'),'contact_type',_0xb5b6('0x79'),_0xb5b6('0x52'),_0xb5b6('0x7a'),_0xb5b6('0x7b'),'company','reassignment_count',_0xb5b6('0x7c'),_0xb5b6('0x7d'),_0xb5b6('0x53'),_0xb5b6('0x7e'),_0xb5b6('0x7f'),_0xb5b6('0x80'),'comments_and_work_notes',_0xb5b6('0x81'),'sys_mod_count','reopen_count',_0xb5b6('0x82'),_0xb5b6('0x83'),_0xb5b6('0x84'),'correlation_id',_0xb5b6('0x85'),_0xb5b6('0x54')];var _0x4673ca='';var _0x58efef='';var _0x1be1c4=[];var _0x2ab347='';var _0x1398a4='';var _0x4cc061=[];var _0x24677f='';var _0x43c817='';var _0x571c40={};var _0x1f44c8='';return db[_0xb5b6('0x26')][_0xb5b6('0x45')]({'where':{'id':_0x4a08c8['params']['id']},'attributes':['id',_0xb5b6('0x86'),_0xb5b6('0x87'),_0xb5b6('0x88'),_0xb5b6('0x89'),'serverUrl']})[_0xb5b6('0x20')](handleEntityNotFound(_0x559b86,null))[_0xb5b6('0x20')](function(_0x71741f){if(_0x71741f){_0x1f44c8=_0x71741f[_0xb5b6('0x89')];var _0x254439=_0x1f44c8[_0xb5b6('0x8a')](-0x1);if(_0x254439==='/'){_0x1f44c8=_0x1f44c8[_0xb5b6('0x8b')](0x0,_0x1f44c8[_0xb5b6('0x8c')](_0x254439));}_0x43c817=util[_0xb5b6('0x8d')](_0xb5b6('0x8e'),_0x1f44c8);_0x24677f=util['format'](_0xb5b6('0x8f'),_0x1f44c8);_0x571c40={'user':_0x71741f[_0xb5b6('0x86')],'pass':_0x71741f[_0xb5b6('0x87')]};var _0x33a06e={'method':'GET','uri':_0x43c817+_0xb5b6('0x90'),'auth':_0x571c40,'json':!![]};return rp(_0x33a06e);}})[_0xb5b6('0x20')](function(_0x411473){if(_0x411473[_0xb5b6('0x91')][_0xb5b6('0x31')]>0x0){_0x4673ca=_0x411473['result'];}console[_0xb5b6('0x92')](_0xb5b6('0x93'),_0x4673ca);_0x4cc061=[];_0x58efef=Object[_0xb5b6('0x94')]([],_0x4673ca);_[_0xb5b6('0x95')](_0x58efef,function(_0x5d5620){return!_0x101639[_0xb5b6('0x96')](_0x5d5620[_0xb5b6('0x23')]);});_0x58efef[_0xb5b6('0x97')](function(_0xf16524){var _0x35b499=createFieldObject(_0x24677f,_0x571c40,_0xf16524['internalType'],_0xf16524[_0xb5b6('0x23')],_0xf16524[_0xb5b6('0x98')],![]);_0x4cc061['push'](_0x35b499);});return Promise[_0xb5b6('0x99')](_0x4cc061);})[_0xb5b6('0x20')](function(_0x8ad3ee){_0x1be1c4=_0x8ad3ee;_0x2ab347=Object[_0xb5b6('0x94')]([],_0x4673ca);console['log']('TCL:\x20_object',_0x4673ca);_[_0xb5b6('0x95')](_0x2ab347,function(_0x4e14f6){return _0x19fe1b[_0xb5b6('0x96')](_0x4e14f6['name']);});console['log'](_0xb5b6('0x9a'),_0x2ab347);_0x4cc061=[];_0x2ab347[_0xb5b6('0x97')](function(_0x33fdab){var _0x3f563b=createFieldObject(_0x24677f,_0x571c40,_0x33fdab['internalType'],_0x33fdab['name'],_0x33fdab[_0xb5b6('0x98')],!![]);_0x4cc061[_0xb5b6('0x9b')](_0x3f563b);});return Promise[_0xb5b6('0x99')](_0x4cc061);})[_0xb5b6('0x20')](function(_0x39c980){_0x1398a4=_0x39c980;var _0x15f8ad=_0x1be1c4[_0xb5b6('0x9c')](_0x1398a4);return{'count':_0x15f8ad[_0xb5b6('0x31')],'rows':_0x15f8ad};})[_0xb5b6('0x20')](respondWithResult(_0x559b86,null))[_0xb5b6('0x3c')](function(_0x1f0430){console[_0xb5b6('0x92')]('ServiceNow\x20error:\x20'+_0x1f0430);var _0x20f239=_0x4a08c8[_0xb5b6('0x2b')]['test']?0x1f4:_0x1f0430[_0xb5b6('0x9d')]||0x1f4;logger[_0xb5b6('0x21')](_0x1f0430[_0xb5b6('0x22')]);delete _0x1f0430[_0xb5b6('0x23')];if(_0x20f239===0x191){_0x20f239=0x190;}_0x559b86[_0xb5b6('0x15')](_0x20f239)['send'](_0x4a08c8[_0xb5b6('0x2b')]['test']?{'message':_0xb5b6('0x9e'),'statusCode':_0x1f0430[_0xb5b6('0x9d')]}:_0x1f0430);});};function createFieldObject(_0x4a40cb,_0x2fe3f6,_0xeb7e4d,_0x45f309,_0x336fc0,_0x7d0e44){return new Promise(function(_0x1a35fc,_0x122a5e){var _0x3efd33={'id':_0x45f309,'name':_0x336fc0,'custom':_0x7d0e44};if(_0xeb7e4d==='boolean'){_0x3efd33[_0xb5b6('0x9f')]=[{'name':_0xb5b6('0xa0'),'value':'true'},{'name':_0xb5b6('0xa1'),'value':_0xb5b6('0xa2')}];_0x1a35fc(_0x3efd33);}else{var _0x45946b={'method':'GET','uri':_0x4a40cb+'sys_choice?sysparm_query=name=incident^element='+_0x45f309,'auth':_0x2fe3f6,'json':!![]};return rp(_0x45946b)['then'](function(_0x21b3d5){var _0x52bfd8=[];if(_0x21b3d5['result'][_0xb5b6('0x31')]>0x0){_0x21b3d5[_0xb5b6('0x91')][_0xb5b6('0x97')](function(_0x2ad828){if(_0x2ad828['inactive']==='false'){var _0x1f8a85={'name':_0x2ad828['label'],'value':_0x2ad828[_0xb5b6('0xa3')]};_0x52bfd8[_0xb5b6('0x9b')](_0x1f8a85);}});}_0x3efd33[_0xb5b6('0x9f')]=_0x52bfd8;if(_0x3efd33[_0xb5b6('0x9f')][_0xb5b6('0x31')]>0x0){_0x1a35fc(_0x3efd33);}else{if(_0x7d0e44==![]){_0x1a35fc();}else{_0x1a35fc(_0x3efd33);}}});}});}
\ No newline at end of file
index 0ea1889..3569e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','util','../../config/logger','moment'];(function(_0x362fdf,_0x1d7d2e){var _0x449827=function(_0x4914e2){while(--_0x4914e2){_0x362fdf['push'](_0x362fdf['shift']());}};_0x449827(++_0x1d7d2e);}(_0xda19,0xd5));var _0x9da1=function(_0x306d3c,_0x47cee1){_0x306d3c=_0x306d3c-0x0;var _0x3ed04b=_0xda19[_0x306d3c];return _0x3ed04b;};'use strict';var _=require('lodash');var util=require(_0x9da1('0x0'));var logger=require(_0x9da1('0x1'))('api');var moment=require(_0x9da1('0x2'));var BPromise=require('bluebird');var rp=require(_0x9da1('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9da1('0x4'));var config=require(_0x9da1('0x5'));var attributes=require(_0x9da1('0x6'));var integrations=require(_0x9da1('0x7'));module[_0x9da1('0x8')]=function(_0x2dcbc6,_0x23e4f7){return _0x2dcbc6[_0x9da1('0x9')](_0x9da1('0xa'),attributes,{'tableName':_0x9da1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','lodash'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x326f,0xd1));var _0xf326=function(_0x815f87,_0x4ca49d){_0x815f87=_0x815f87-0x0;var _0x401562=_0x326f[_0x815f87];return _0x401562;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));var integrations=require(_0xf326('0x9'));module[_0xf326('0xa')]=function(_0x4c2249,_0x3c254d){return _0x4c2249[_0xf326('0xb')](_0xf326('0xc'),attributes,{'tableName':_0xf326('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c83b9c8..cea05a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c8d=['request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','ServicenowAccount','options','raw','where','attributes','limit','include','model','map','GetServicenowAccount','ShowServicenowAccount','then','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','info','ServicenowAccount,\x20%s,\x20%s'];(function(_0x1b3317,_0x59e3d6){var _0xc890a9=function(_0x5bbd8b){while(--_0x5bbd8b){_0x1b3317['push'](_0x1b3317['shift']());}};_0xc890a9(++_0x59e3d6);}(_0x3c8d,0x1c1));var _0xd3c8=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x3c8d[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xd3c8('0x0'));var util=require(_0xd3c8('0x1'));var moment=require(_0xd3c8('0x2'));var BPromise=require('bluebird');var rs=require(_0xd3c8('0x3'));var fs=require('fs');var Redis=require(_0xd3c8('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd3c8('0x5'));var logger=require('../../config/logger')(_0xd3c8('0x6'));var config=require(_0xd3c8('0x7'));var jayson=require(_0xd3c8('0x8'));var client=jayson['client'][_0xd3c8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xa4b33d,_0x7edf5e,_0x4503ca){return new BPromise(function(_0x229372,_0x517276){return client[_0xd3c8('0xa')](_0xa4b33d,_0x4503ca)['then'](function(_0x455e23){logger[_0xd3c8('0xb')](_0xd3c8('0xc'),_0x7edf5e,_0xd3c8('0xd'));logger[_0xd3c8('0xe')](_0xd3c8('0xf'),_0x7edf5e,_0xd3c8('0xd'),JSON[_0xd3c8('0x10')](_0x455e23));if(_0x455e23[_0xd3c8('0x11')]){if(_0x455e23[_0xd3c8('0x11')][_0xd3c8('0x12')]===0x1f4){logger[_0xd3c8('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x7edf5e,_0x455e23['error'][_0xd3c8('0x13')]);return _0x517276(_0x455e23[_0xd3c8('0x11')]['message']);}logger[_0xd3c8('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x7edf5e,_0x455e23[_0xd3c8('0x11')]['message']);return _0x229372(_0x455e23['error'][_0xd3c8('0x13')]);}else{logger[_0xd3c8('0xb')](_0xd3c8('0xc'),_0x7edf5e,_0xd3c8('0xd'));_0x229372(_0x455e23['result'][_0xd3c8('0x13')]);}})[_0xd3c8('0x14')](function(_0x28ac86){logger['error'](_0xd3c8('0xc'),_0x7edf5e,_0x28ac86);_0x517276(_0x28ac86);});});}exports['GetServicenowAccount']=function(_0x597a47){var _0x318404=this;return new Promise(function(_0x5e9df9,_0x309866){return db[_0xd3c8('0x15')]['findAll']({'raw':_0x597a47[_0xd3c8('0x16')]?_0x597a47[_0xd3c8('0x16')][_0xd3c8('0x17')]===undefined?!![]:![]:!![],'where':_0x597a47[_0xd3c8('0x16')]?_0x597a47[_0xd3c8('0x16')][_0xd3c8('0x18')]||null:null,'attributes':_0x597a47[_0xd3c8('0x16')]?_0x597a47[_0xd3c8('0x16')][_0xd3c8('0x19')]||null:null,'limit':_0x597a47[_0xd3c8('0x16')]?_0x597a47[_0xd3c8('0x16')][_0xd3c8('0x1a')]||null:null,'include':_0x597a47[_0xd3c8('0x16')]?_0x597a47['options'][_0xd3c8('0x1b')]?_['map'](_0x597a47[_0xd3c8('0x16')][_0xd3c8('0x1b')],function(_0x5d150c){return{'model':db[_0x5d150c[_0xd3c8('0x1c')]],'as':_0x5d150c['as'],'attributes':_0x5d150c[_0xd3c8('0x19')],'include':_0x5d150c[_0xd3c8('0x1b')]?_[_0xd3c8('0x1d')](_0x5d150c['include'],function(_0x40d51e){return{'model':db[_0x40d51e[_0xd3c8('0x1c')]],'as':_0x40d51e['as'],'attributes':_0x40d51e[_0xd3c8('0x19')],'include':_0x40d51e[_0xd3c8('0x1b')]?_['map'](_0x40d51e[_0xd3c8('0x1b')],function(_0x97a33c){return{'model':db[_0x97a33c[_0xd3c8('0x1c')]],'as':_0x97a33c['as'],'attributes':_0x97a33c[_0xd3c8('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x21b9fb){logger[_0xd3c8('0xb')](_0xd3c8('0x1e'),_0x597a47);logger[_0xd3c8('0xe')](_0xd3c8('0x1e'),_0x597a47,JSON[_0xd3c8('0x10')](_0x21b9fb));_0x5e9df9(_0x21b9fb);})[_0xd3c8('0x14')](function(_0x35ad57){logger['error'](_0xd3c8('0x1e'),_0x35ad57[_0xd3c8('0x13')],_0x597a47);_0x309866(_0x318404['error'](0x1f4,_0x35ad57[_0xd3c8('0x13')]));});});};exports[_0xd3c8('0x1f')]=function(_0x5d761b){var _0x593d70=this;return new Promise(function(_0x396587,_0x5b8a9e){return db[_0xd3c8('0x15')]['find']({'raw':_0x5d761b['options']?_0x5d761b[_0xd3c8('0x16')][_0xd3c8('0x17')]===undefined?!![]:![]:!![],'where':_0x5d761b[_0xd3c8('0x16')]?_0x5d761b['options'][_0xd3c8('0x18')]||null:null,'attributes':_0x5d761b[_0xd3c8('0x16')]?_0x5d761b[_0xd3c8('0x16')][_0xd3c8('0x19')]||null:null,'include':_0x5d761b[_0xd3c8('0x16')]?_0x5d761b[_0xd3c8('0x16')][_0xd3c8('0x1b')]?_[_0xd3c8('0x1d')](_0x5d761b['options'][_0xd3c8('0x1b')],function(_0x81b71){return{'model':db[_0x81b71['model']],'as':_0x81b71['as'],'attributes':_0x81b71['attributes'],'include':_0x81b71['include']?_[_0xd3c8('0x1d')](_0x81b71['include'],function(_0x3a3654){return{'model':db[_0x3a3654[_0xd3c8('0x1c')]],'as':_0x3a3654['as'],'attributes':_0x3a3654[_0xd3c8('0x19')],'include':_0x3a3654[_0xd3c8('0x1b')]?_[_0xd3c8('0x1d')](_0x3a3654['include'],function(_0x248561){return{'model':db[_0x248561['model']],'as':_0x248561['as'],'attributes':_0x248561[_0xd3c8('0x19')]};}):[]};}):[]};}):[]:[]})[_0xd3c8('0x20')](function(_0x486f67){logger[_0xd3c8('0xb')]('ShowServicenowAccount',_0x5d761b);logger[_0xd3c8('0xe')](_0xd3c8('0x1f'),_0x5d761b,JSON[_0xd3c8('0x10')](_0x486f67));_0x396587(_0x486f67);})[_0xd3c8('0x14')](function(_0xfbb88e){logger['error']('ShowServicenowAccount',_0xfbb88e['message'],_0x5d761b);_0x5b8a9e(_0x593d70[_0xd3c8('0x11')](0x1f4,_0xfbb88e[_0xd3c8('0x13')]));});});};
\ No newline at end of file
+var _0xa811=['map','model','ShowServicenowAccount','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetServicenowAccount','options','raw','where','attributes','limit','include'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa811,0xb8));var _0x1a81=function(_0x48d7c5,_0xda1470){_0x48d7c5=_0x48d7c5-0x0;var _0x4a5df1=_0xa811[_0x48d7c5];return _0x4a5df1;};'use strict';var _=require(_0x1a81('0x0'));var util=require(_0x1a81('0x1'));var moment=require(_0x1a81('0x2'));var BPromise=require(_0x1a81('0x3'));var rs=require(_0x1a81('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a81('0x5'))['db'];var utils=require(_0x1a81('0x6'));var logger=require(_0x1a81('0x7'))(_0x1a81('0x8'));var config=require(_0x1a81('0x9'));var jayson=require(_0x1a81('0xa'));var client=jayson[_0x1a81('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x359969,_0x32ce34,_0x3ba4d3){return new BPromise(function(_0x302fb3,_0xe628f){return client[_0x1a81('0xc')](_0x359969,_0x3ba4d3)[_0x1a81('0xd')](function(_0x18d623){logger[_0x1a81('0xe')](_0x1a81('0xf'),_0x32ce34,'request\x20sent');logger[_0x1a81('0x10')](_0x1a81('0x11'),_0x32ce34,'request\x20sent',JSON[_0x1a81('0x12')](_0x18d623));if(_0x18d623[_0x1a81('0x13')]){if(_0x18d623[_0x1a81('0x13')][_0x1a81('0x14')]===0x1f4){logger[_0x1a81('0x13')](_0x1a81('0xf'),_0x32ce34,_0x18d623[_0x1a81('0x13')][_0x1a81('0x15')]);return _0xe628f(_0x18d623[_0x1a81('0x13')][_0x1a81('0x15')]);}logger[_0x1a81('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x32ce34,_0x18d623[_0x1a81('0x13')][_0x1a81('0x15')]);return _0x302fb3(_0x18d623[_0x1a81('0x13')][_0x1a81('0x15')]);}else{logger[_0x1a81('0xe')]('ServicenowAccount,\x20%s,\x20%s',_0x32ce34,_0x1a81('0x16'));_0x302fb3(_0x18d623[_0x1a81('0x17')]['message']);}})[_0x1a81('0x18')](function(_0x3b2d5c){logger[_0x1a81('0x13')](_0x1a81('0xf'),_0x32ce34,_0x3b2d5c);_0xe628f(_0x3b2d5c);});});}exports[_0x1a81('0x19')]=function(_0x2969c3){var _0x56536d=this;return new Promise(function(_0x3cf884,_0x360dad){return db['ServicenowAccount']['findAll']({'raw':_0x2969c3[_0x1a81('0x1a')]?_0x2969c3['options'][_0x1a81('0x1b')]===undefined?!![]:![]:!![],'where':_0x2969c3[_0x1a81('0x1a')]?_0x2969c3['options'][_0x1a81('0x1c')]||null:null,'attributes':_0x2969c3[_0x1a81('0x1a')]?_0x2969c3[_0x1a81('0x1a')][_0x1a81('0x1d')]||null:null,'limit':_0x2969c3[_0x1a81('0x1a')]?_0x2969c3[_0x1a81('0x1a')][_0x1a81('0x1e')]||null:null,'include':_0x2969c3[_0x1a81('0x1a')]?_0x2969c3[_0x1a81('0x1a')][_0x1a81('0x1f')]?_[_0x1a81('0x20')](_0x2969c3[_0x1a81('0x1a')]['include'],function(_0x5e32f7){return{'model':db[_0x5e32f7['model']],'as':_0x5e32f7['as'],'attributes':_0x5e32f7[_0x1a81('0x1d')],'include':_0x5e32f7[_0x1a81('0x1f')]?_[_0x1a81('0x20')](_0x5e32f7[_0x1a81('0x1f')],function(_0xa20b87){return{'model':db[_0xa20b87[_0x1a81('0x21')]],'as':_0xa20b87['as'],'attributes':_0xa20b87[_0x1a81('0x1d')],'include':_0xa20b87[_0x1a81('0x1f')]?_[_0x1a81('0x20')](_0xa20b87[_0x1a81('0x1f')],function(_0x583ab2){return{'model':db[_0x583ab2[_0x1a81('0x21')]],'as':_0x583ab2['as'],'attributes':_0x583ab2[_0x1a81('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d50ce){logger[_0x1a81('0xe')](_0x1a81('0x19'),_0x2969c3);logger['debug'](_0x1a81('0x19'),_0x2969c3,JSON[_0x1a81('0x12')](_0x4d50ce));_0x3cf884(_0x4d50ce);})['catch'](function(_0x2dd6c8){logger[_0x1a81('0x13')](_0x1a81('0x19'),_0x2dd6c8[_0x1a81('0x15')],_0x2969c3);_0x360dad(_0x56536d[_0x1a81('0x13')](0x1f4,_0x2dd6c8['message']));});});};exports[_0x1a81('0x22')]=function(_0x92251f){var _0x31c389=this;return new Promise(function(_0x3d5e74,_0x4636c5){return db['ServicenowAccount'][_0x1a81('0x23')]({'raw':_0x92251f['options']?_0x92251f[_0x1a81('0x1a')][_0x1a81('0x1b')]===undefined?!![]:![]:!![],'where':_0x92251f[_0x1a81('0x1a')]?_0x92251f['options']['where']||null:null,'attributes':_0x92251f[_0x1a81('0x1a')]?_0x92251f['options'][_0x1a81('0x1d')]||null:null,'include':_0x92251f[_0x1a81('0x1a')]?_0x92251f[_0x1a81('0x1a')][_0x1a81('0x1f')]?_[_0x1a81('0x20')](_0x92251f[_0x1a81('0x1a')][_0x1a81('0x1f')],function(_0x114b9f){return{'model':db[_0x114b9f[_0x1a81('0x21')]],'as':_0x114b9f['as'],'attributes':_0x114b9f[_0x1a81('0x1d')],'include':_0x114b9f[_0x1a81('0x1f')]?_['map'](_0x114b9f[_0x1a81('0x1f')],function(_0x30c10b){return{'model':db[_0x30c10b['model']],'as':_0x30c10b['as'],'attributes':_0x30c10b['attributes'],'include':_0x30c10b[_0x1a81('0x1f')]?_['map'](_0x30c10b[_0x1a81('0x1f')],function(_0x42b993){return{'model':db[_0x42b993['model']],'as':_0x42b993['as'],'attributes':_0x42b993['attributes']};}):[]};}):[]};}):[]:[]})[_0x1a81('0xd')](function(_0x403885){logger[_0x1a81('0xe')](_0x1a81('0x22'),_0x92251f);logger['debug'](_0x1a81('0x22'),_0x92251f,JSON[_0x1a81('0x12')](_0x403885));_0x3d5e74(_0x403885);})[_0x1a81('0x18')](function(_0x33ce9e){logger[_0x1a81('0x13')](_0x1a81('0x22'),_0x33ce9e['message'],_0x92251f);_0x4636c5(_0x31c389[_0x1a81('0x13')](0x1f4,_0x33ce9e[_0x1a81('0x15')]));});});};
\ No newline at end of file
index d3ae8db..5cbabf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f84=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','index','/:id','isAuthenticated','/:id/fields','getSubjects','getDescriptions','create','put','update','delete','destroy','exports','multer','util'];(function(_0x48a96f,_0x530059){var _0x3ff3ef=function(_0x286059){while(--_0x286059){_0x48a96f['push'](_0x48a96f['shift']());}};_0x3ff3ef(++_0x530059);}(_0x4f84,0x140));var _0x44f8=function(_0x4cc95a,_0x15c4c7){_0x4cc95a=_0x4cc95a-0x0;var _0x4abee3=_0x4f84[_0x4cc95a];return _0x4abee3;};'use strict';var multer=require(_0x44f8('0x0'));var util=require(_0x44f8('0x1'));var path=require(_0x44f8('0x2'));var timeout=require(_0x44f8('0x3'));var express=require(_0x44f8('0x4'));var router=express[_0x44f8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x44f8('0x6'));var interaction=require(_0x44f8('0x7'));var config=require(_0x44f8('0x8'));var controller=require(_0x44f8('0x9'));router[_0x44f8('0xa')]('/',auth['isAuthenticated'](),controller[_0x44f8('0xb')]);router[_0x44f8('0xa')](_0x44f8('0xc'),auth[_0x44f8('0xd')](),controller['show']);router[_0x44f8('0xa')](_0x44f8('0xe'),auth[_0x44f8('0xd')](),controller['getFields']);router[_0x44f8('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x44f8('0xf')]);router['get']('/:id/descriptions',auth[_0x44f8('0xd')](),controller[_0x44f8('0x10')]);router['post']('/',auth[_0x44f8('0xd')](),controller[_0x44f8('0x11')]);router[_0x44f8('0x12')](_0x44f8('0xc'),auth[_0x44f8('0xd')](),controller[_0x44f8('0x13')]);router[_0x44f8('0x14')]('/:id',auth[_0x44f8('0xd')](),controller[_0x44f8('0x15')]);module[_0x44f8('0x16')]=router;
\ No newline at end of file
+var _0xfd79=['../../components/auth/service','../../components/interaction/service','./intServicenowConfiguration.controller','get','isAuthenticated','index','getFields','getDescriptions','post','update','delete','/:id','destroy','exports','connect-timeout','Router'];(function(_0x4fd020,_0x3b5df3){var _0x50e5d3=function(_0x1da3e4){while(--_0x1da3e4){_0x4fd020['push'](_0x4fd020['shift']());}};_0x50e5d3(++_0x3b5df3);}(_0xfd79,0x17e));var _0x9fd7=function(_0x953124,_0x318370){_0x953124=_0x953124-0x0;var _0x5a0757=_0xfd79[_0x953124];return _0x5a0757;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x9fd7('0x0'));var express=require('express');var router=express[_0x9fd7('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x9fd7('0x2'));var interaction=require(_0x9fd7('0x3'));var config=require('../../config/environment');var controller=require(_0x9fd7('0x4'));router[_0x9fd7('0x5')]('/',auth[_0x9fd7('0x6')](),controller[_0x9fd7('0x7')]);router[_0x9fd7('0x5')]('/:id',auth[_0x9fd7('0x6')](),controller['show']);router['get']('/:id/fields',auth[_0x9fd7('0x6')](),controller[_0x9fd7('0x8')]);router[_0x9fd7('0x5')]('/:id/subjects',auth[_0x9fd7('0x6')](),controller['getSubjects']);router[_0x9fd7('0x5')]('/:id/descriptions',auth[_0x9fd7('0x6')](),controller[_0x9fd7('0x9')]);router[_0x9fd7('0xa')]('/',auth[_0x9fd7('0x6')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x9fd7('0xb')]);router[_0x9fd7('0xc')](_0x9fd7('0xd'),auth['isAuthenticated'](),controller[_0x9fd7('0xe')]);module[_0x9fd7('0xf')]=router;
\ No newline at end of file
index f0623e1..037797b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa8=['STRING','exports'];(function(_0x5eab61,_0x241619){var _0x5cde9b=function(_0x47acc4){while(--_0x47acc4){_0x5eab61['push'](_0x5eab61['shift']());}};_0x5cde9b(++_0x241619);}(_0x9fa8,0x81));var _0x89fa=function(_0x170adf,_0x5a611c){_0x170adf=_0x170adf-0x0;var _0x3145bc=_0x9fa8[_0x170adf];return _0x3145bc;};'use strict';var Sequelize=require('sequelize');module[_0x89fa('0x0')]={'name':{'type':Sequelize[_0x89fa('0x1')]},'description':{'type':Sequelize[_0x89fa('0x1')]}};
\ No newline at end of file
+var _0xad29=['STRING','sequelize'];(function(_0x5db940,_0x953359){var _0x3ac3fa=function(_0x2270f1){while(--_0x2270f1){_0x5db940['push'](_0x5db940['shift']());}};_0x3ac3fa(++_0x953359);}(_0xad29,0x9b));var _0x9ad2=function(_0x21d0c3,_0x16c71c){_0x21d0c3=_0x21d0c3-0x0;var _0x4df18e=_0xad29[_0x21d0c3];return _0x4df18e;};'use strict';var Sequelize=require(_0x9ad2('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9ad2('0x1')]}};
\ No newline at end of file
index 7f51543..092978f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x856b=['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','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','then','name','send','index','map','ServicenowConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','find','create','update','body','destroy','findOne','ServicenowField','order','getFields','hasOwnProperty','getSubjects','getDescriptions','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','squel'];(function(_0x680b65,_0x5b2e9c){var _0x1c2053=function(_0x1128e0){while(--_0x1128e0){_0x680b65['push'](_0x680b65['shift']());}};_0x1c2053(++_0x5b2e9c);}(_0x856b,0x194));var _0xb856=function(_0x4eb269,_0x3cd1b6){_0x4eb269=_0x4eb269-0x0;var _0x1597b8=_0x856b[_0x4eb269];return _0x1597b8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb856('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb856('0x1'));var rp=require(_0xb856('0x2'));var moment=require('moment');var BPromise=require(_0xb856('0x3'));var Mustache=require(_0xb856('0x4'));var util=require(_0xb856('0x5'));var path=require(_0xb856('0x6'));var sox=require(_0xb856('0x7'));var csv=require('to-csv');var ejs=require(_0xb856('0x8'));var fs=require('fs');var fs_extra=require(_0xb856('0x9'));var _=require('lodash');var squel=require(_0xb856('0xa'));var crypto=require(_0xb856('0xb'));var jsforce=require(_0xb856('0xc'));var deskjs=require(_0xb856('0xd'));var toCsv=require(_0xb856('0xe'));var querystring=require(_0xb856('0xf'));var Papa=require(_0xb856('0x10'));var Redis=require(_0xb856('0x11'));var authService=require(_0xb856('0x12'));var qs=require(_0xb856('0x13'));var as=require(_0xb856('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb856('0x15'))(_0xb856('0x16'));var utils=require(_0xb856('0x17'));var config=require(_0xb856('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xb856('0x19'))['db'];function respondWithStatusCode(_0x411e9d,_0x4e7476){_0x4e7476=_0x4e7476||0xcc;return function(_0x45bc0f){if(_0x45bc0f){return _0x411e9d[_0xb856('0x1a')](_0x4e7476);}return _0x411e9d[_0xb856('0x1b')](_0x4e7476)[_0xb856('0x1c')]();};}function respondWithResult(_0x540af2,_0x29c675){_0x29c675=_0x29c675||0xc8;return function(_0x5db228){if(_0x5db228){return _0x540af2[_0xb856('0x1b')](_0x29c675)[_0xb856('0x1d')](_0x5db228);}};}function respondWithFilteredResult(_0x376c0e,_0x565bb1){return function(_0x5c204b){if(_0x5c204b){var _0xa1fd81=typeof _0x565bb1['offset']==='undefined'&&typeof _0x565bb1[_0xb856('0x1e')]===_0xb856('0x1f');var _0x43dbb0=_0x5c204b[_0xb856('0x20')];var _0x183e39=_0xa1fd81?0x0:_0x565bb1[_0xb856('0x21')];var _0x5493f4=_0xa1fd81?_0x5c204b['count']:_0x565bb1['offset']+_0x565bb1[_0xb856('0x1e')];var _0x2e99d2;if(_0x5493f4>=_0x43dbb0){_0x5493f4=_0x43dbb0;_0x2e99d2=0xc8;}else{_0x2e99d2=0xce;}_0x376c0e['status'](_0x2e99d2);return _0x376c0e[_0xb856('0x22')](_0xb856('0x23'),_0x183e39+'-'+_0x5493f4+'/'+_0x43dbb0)[_0xb856('0x1d')](_0x5c204b);}return null;};}function patchUpdates(_0x8f48b4){return function(_0x3329e1){try{jsonpatch[_0xb856('0x24')](_0x3329e1,_0x8f48b4,!![]);}catch(_0x22b9c0){return BPromise[_0xb856('0x25')](_0x22b9c0);}return _0x3329e1[_0xb856('0x26')]();};}function saveUpdates(_0x21120e,_0x35e24f){return function(_0x21eeee){if(_0x21eeee){return _0x21eeee['update'](_0x21120e)[_0xb856('0x27')](function(_0x29ad21){return _0x29ad21;});}return null;};}function removeEntity(_0x16a40f,_0x43b787){return function(_0x2135ad){if(_0x2135ad){return _0x2135ad['destroy']()[_0xb856('0x27')](function(){_0x16a40f[_0xb856('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfeef97,_0x2ff00b){return function(_0x169c20){if(!_0x169c20){_0xfeef97[_0xb856('0x1a')](0x194);}return _0x169c20;};}function handleError(_0x942076,_0x28f9e0){_0x28f9e0=_0x28f9e0||0x1f4;return function(_0x5de8ca){logger['error'](_0x5de8ca['stack']);if(_0x5de8ca[_0xb856('0x28')]){delete _0x5de8ca[_0xb856('0x28')];}_0x942076[_0xb856('0x1b')](_0x28f9e0)[_0xb856('0x29')](_0x5de8ca);};}exports[_0xb856('0x2a')]=function(_0x5085ea,_0x3b0cab){var _0x3b7a34={},_0x3b5628={},_0x5ba4fa={'count':0x0,'rows':[]};var _0x294c2b=_[_0xb856('0x2b')](db[_0xb856('0x2c')][_0xb856('0x2d')],function(_0x375ee7){return{'name':_0x375ee7[_0xb856('0x2e')],'type':_0x375ee7[_0xb856('0x2f')][_0xb856('0x30')]};});_0x3b5628[_0xb856('0x31')]=_[_0xb856('0x2b')](_0x294c2b,_0xb856('0x28'));_0x3b5628[_0xb856('0x32')]=_[_0xb856('0x33')](_0x5085ea[_0xb856('0x32')]);_0x3b5628[_0xb856('0x34')]=_[_0xb856('0x35')](_0x3b5628[_0xb856('0x31')],_0x3b5628[_0xb856('0x32')]);_0x3b7a34['attributes']=_[_0xb856('0x35')](_0x3b5628['model'],qs['fields'](_0x5085ea['query'][_0xb856('0x36')]));_0x3b7a34[_0xb856('0x37')]=_0x3b7a34['attributes'][_0xb856('0x38')]?_0x3b7a34['attributes']:_0x3b5628[_0xb856('0x31')];if(!_0x5085ea[_0xb856('0x32')]['hasOwnProperty'](_0xb856('0x39'))){_0x3b7a34[_0xb856('0x1e')]=qs[_0xb856('0x1e')](_0x5085ea[_0xb856('0x32')][_0xb856('0x1e')]);_0x3b7a34[_0xb856('0x21')]=qs['offset'](_0x5085ea[_0xb856('0x32')][_0xb856('0x21')]);}_0x3b7a34['order']=qs[_0xb856('0x3a')](_0x5085ea['query'][_0xb856('0x3a')]);_0x3b7a34[_0xb856('0x3b')]=qs[_0xb856('0x34')](_[_0xb856('0x3c')](_0x5085ea[_0xb856('0x32')],_0x3b5628[_0xb856('0x34')]),_0x294c2b);if(_0x5085ea[_0xb856('0x32')][_0xb856('0x3d')]){_0x3b7a34[_0xb856('0x3b')]=_[_0xb856('0x3e')](_0x3b7a34[_0xb856('0x3b')],{'$or':_[_0xb856('0x2b')](_0x294c2b,function(_0x19fe82){if(_0x19fe82[_0xb856('0x2f')]!==_0xb856('0x3f')){var _0x47e5ad={};_0x47e5ad[_0x19fe82[_0xb856('0x28')]]={'$like':'%'+_0x5085ea[_0xb856('0x32')]['filter']+'%'};return _0x47e5ad;}})});}_0x3b7a34=_[_0xb856('0x3e')]({},_0x3b7a34,_0x5085ea[_0xb856('0x40')]);var _0xc0b49e={'where':_0x3b7a34['where']};return db[_0xb856('0x2c')][_0xb856('0x20')](_0xc0b49e)[_0xb856('0x27')](function(_0x4becc1){_0x5ba4fa[_0xb856('0x20')]=_0x4becc1;if(_0x5085ea['query']['includeAll']){_0x3b7a34['include']=[{'all':!![]}];}return db[_0xb856('0x2c')][_0xb856('0x41')](_0x3b7a34);})[_0xb856('0x27')](function(_0x3f7852){_0x5ba4fa[_0xb856('0x42')]=_0x3f7852;return _0x5ba4fa;})['then'](respondWithFilteredResult(_0x3b0cab,_0x3b7a34))[_0xb856('0x43')](handleError(_0x3b0cab,null));};exports[_0xb856('0x44')]=function(_0x4756e8,_0x2de822){var _0x357ac0={'raw':![],'where':{'id':_0x4756e8[_0xb856('0x45')]['id']}},_0x23251e={};_0x23251e['model']=_[_0xb856('0x33')](db['ServicenowConfiguration'][_0xb856('0x2d')]);_0x23251e['query']=_[_0xb856('0x33')](_0x4756e8['query']);_0x23251e[_0xb856('0x34')]=_[_0xb856('0x35')](_0x23251e[_0xb856('0x31')],_0x23251e[_0xb856('0x32')]);_0x357ac0[_0xb856('0x37')]=_[_0xb856('0x35')](_0x23251e[_0xb856('0x31')],qs[_0xb856('0x36')](_0x4756e8[_0xb856('0x32')][_0xb856('0x36')]));_0x357ac0['attributes']=_0x357ac0['attributes'][_0xb856('0x38')]?_0x357ac0[_0xb856('0x37')]:_0x23251e[_0xb856('0x31')];if(_0x4756e8[_0xb856('0x32')][_0xb856('0x46')]){_0x357ac0['include']=[{'all':!![]}];}_0x357ac0=_['merge']({},_0x357ac0,_0x4756e8[_0xb856('0x40')]);return db[_0xb856('0x2c')][_0xb856('0x47')](_0x357ac0)[_0xb856('0x27')](handleEntityNotFound(_0x2de822,null))[_0xb856('0x27')](respondWithResult(_0x2de822,null))[_0xb856('0x43')](handleError(_0x2de822,null));};exports[_0xb856('0x48')]=function(_0x5b1933,_0x4998d0){return db[_0xb856('0x2c')][_0xb856('0x48')](_0x5b1933['body'],{})[_0xb856('0x27')](respondWithResult(_0x4998d0,0xc9))[_0xb856('0x43')](handleError(_0x4998d0,null));};exports[_0xb856('0x49')]=function(_0x160c3c,_0x23b663){if(_0x160c3c[_0xb856('0x4a')]['id']){delete _0x160c3c[_0xb856('0x4a')]['id'];}return db['ServicenowConfiguration'][_0xb856('0x47')]({'where':{'id':_0x160c3c['params']['id']}})[_0xb856('0x27')](handleEntityNotFound(_0x23b663,null))['then'](saveUpdates(_0x160c3c[_0xb856('0x4a')],null))[_0xb856('0x27')](respondWithResult(_0x23b663,null))[_0xb856('0x43')](handleError(_0x23b663,null));};exports[_0xb856('0x4b')]=function(_0xb41226,_0x4fd4d2){return db['ServicenowConfiguration'][_0xb856('0x47')]({'where':{'id':_0xb41226[_0xb856('0x45')]['id']}})[_0xb856('0x27')](handleEntityNotFound(_0x4fd4d2,null))[_0xb856('0x27')](removeEntity(_0x4fd4d2,null))[_0xb856('0x43')](handleError(_0x4fd4d2,null));};exports['getFields']=function(_0x41ff12,_0x4cae9d,_0x254790){var _0x37b4bf={};var _0x37449f={};var _0x58dd99;var _0x1c3eba;return db[_0xb856('0x2c')][_0xb856('0x4c')]({'where':{'id':_0x41ff12[_0xb856('0x45')]['id']}})['then'](handleEntityNotFound(_0x4cae9d,null))[_0xb856('0x27')](function(_0x316bc8){if(_0x316bc8){_0x58dd99=_0x316bc8;_0x37449f[_0xb856('0x31')]=_[_0xb856('0x33')](db[_0xb856('0x4d')][_0xb856('0x2d')]);_0x37449f[_0xb856('0x32')]=_[_0xb856('0x33')](_0x41ff12[_0xb856('0x32')]);_0x37449f[_0xb856('0x34')]=_['intersection'](_0x37449f[_0xb856('0x31')],_0x37449f[_0xb856('0x32')]);_0x37b4bf[_0xb856('0x37')]=_['intersection'](_0x37449f[_0xb856('0x31')],qs['fields'](_0x41ff12[_0xb856('0x32')]['fields']));_0x37b4bf[_0xb856('0x37')]=_0x37b4bf[_0xb856('0x37')]['length']?_0x37b4bf[_0xb856('0x37')]:_0x37449f[_0xb856('0x31')];_0x37b4bf[_0xb856('0x4e')]=qs[_0xb856('0x3a')](_0x41ff12[_0xb856('0x32')]['sort']);_0x37b4bf[_0xb856('0x3b')]=qs[_0xb856('0x34')](_[_0xb856('0x3c')](_0x41ff12[_0xb856('0x32')],_0x37449f[_0xb856('0x34')]));if(_0x41ff12[_0xb856('0x32')][_0xb856('0x3d')]){_0x37b4bf[_0xb856('0x3b')]=_[_0xb856('0x3e')](_0x37b4bf[_0xb856('0x3b')],{'$or':_[_0xb856('0x2b')](_0x37b4bf['attributes'],function(_0x37831b){var _0x799239={};_0x799239[_0x37831b]={'$like':'%'+_0x41ff12[_0xb856('0x32')]['filter']+'%'};return _0x799239;})});}_0x37b4bf=_[_0xb856('0x3e')]({},_0x37b4bf,_0x41ff12[_0xb856('0x40')]);return _0x58dd99[_0xb856('0x4f')](_0x37b4bf);}})[_0xb856('0x27')](function(_0x324892){if(_0x324892){_0x1c3eba=_0x324892[_0xb856('0x38')];if(!_0x41ff12[_0xb856('0x32')][_0xb856('0x50')](_0xb856('0x39'))){_0x37b4bf[_0xb856('0x1e')]=qs['limit'](_0x41ff12[_0xb856('0x32')][_0xb856('0x1e')]);_0x37b4bf[_0xb856('0x21')]=qs[_0xb856('0x21')](_0x41ff12[_0xb856('0x32')]['offset']);}return _0x58dd99[_0xb856('0x4f')](_0x37b4bf);}})['then'](function(_0x48920e){if(_0x48920e){return _0x48920e?{'count':_0x1c3eba,'rows':_0x48920e}:null;}})[_0xb856('0x27')](respondWithResult(_0x4cae9d,null))[_0xb856('0x43')](handleError(_0x4cae9d,null));};exports['getSubjects']=function(_0xdf0467,_0x475258,_0x3e8884){var _0x504a4e={};var _0x27dd20={};var _0x61f322;var _0x51adf3;return db[_0xb856('0x2c')][_0xb856('0x4c')]({'where':{'id':_0xdf0467[_0xb856('0x45')]['id']}})[_0xb856('0x27')](handleEntityNotFound(_0x475258,null))[_0xb856('0x27')](function(_0x4b4d07){if(_0x4b4d07){_0x61f322=_0x4b4d07;_0x27dd20['model']=_[_0xb856('0x33')](db[_0xb856('0x4d')]['rawAttributes']);_0x27dd20['query']=_['keys'](_0xdf0467[_0xb856('0x32')]);_0x27dd20['filters']=_[_0xb856('0x35')](_0x27dd20[_0xb856('0x31')],_0x27dd20[_0xb856('0x32')]);_0x504a4e[_0xb856('0x37')]=_[_0xb856('0x35')](_0x27dd20[_0xb856('0x31')],qs[_0xb856('0x36')](_0xdf0467[_0xb856('0x32')][_0xb856('0x36')]));_0x504a4e[_0xb856('0x37')]=_0x504a4e['attributes']['length']?_0x504a4e[_0xb856('0x37')]:_0x27dd20['model'];_0x504a4e[_0xb856('0x4e')]=qs['sort'](_0xdf0467[_0xb856('0x32')][_0xb856('0x3a')]);_0x504a4e['where']=qs[_0xb856('0x34')](_[_0xb856('0x3c')](_0xdf0467[_0xb856('0x32')],_0x27dd20[_0xb856('0x34')]));if(_0xdf0467['query'][_0xb856('0x3d')]){_0x504a4e[_0xb856('0x3b')]=_[_0xb856('0x3e')](_0x504a4e['where'],{'$or':_['map'](_0x504a4e['attributes'],function(_0x4eab03){var _0x59cbab={};_0x59cbab[_0x4eab03]={'$like':'%'+_0xdf0467['query'][_0xb856('0x3d')]+'%'};return _0x59cbab;})});}_0x504a4e=_[_0xb856('0x3e')]({},_0x504a4e,_0xdf0467[_0xb856('0x40')]);return _0x61f322[_0xb856('0x51')](_0x504a4e);}})[_0xb856('0x27')](function(_0x5e1574){if(_0x5e1574){_0x51adf3=_0x5e1574['length'];if(!_0xdf0467['query'][_0xb856('0x50')](_0xb856('0x39'))){_0x504a4e[_0xb856('0x1e')]=qs[_0xb856('0x1e')](_0xdf0467['query'][_0xb856('0x1e')]);_0x504a4e[_0xb856('0x21')]=qs['offset'](_0xdf0467['query'][_0xb856('0x21')]);}return _0x61f322[_0xb856('0x51')](_0x504a4e);}})[_0xb856('0x27')](function(_0x1ae66c){if(_0x1ae66c){return _0x1ae66c?{'count':_0x51adf3,'rows':_0x1ae66c}:null;}})[_0xb856('0x27')](respondWithResult(_0x475258,null))[_0xb856('0x43')](handleError(_0x475258,null));};exports[_0xb856('0x52')]=function(_0x497ad4,_0x56bcf2,_0x356473){var _0x90a847={};var _0xded50e={};var _0x54c265;var _0x39ec3b;return db[_0xb856('0x2c')][_0xb856('0x4c')]({'where':{'id':_0x497ad4[_0xb856('0x45')]['id']}})[_0xb856('0x27')](handleEntityNotFound(_0x56bcf2,null))['then'](function(_0x3d3ed6){if(_0x3d3ed6){_0x54c265=_0x3d3ed6;_0xded50e[_0xb856('0x31')]=_[_0xb856('0x33')](db['ServicenowField']['rawAttributes']);_0xded50e[_0xb856('0x32')]=_[_0xb856('0x33')](_0x497ad4[_0xb856('0x32')]);_0xded50e['filters']=_[_0xb856('0x35')](_0xded50e[_0xb856('0x31')],_0xded50e[_0xb856('0x32')]);_0x90a847[_0xb856('0x37')]=_[_0xb856('0x35')](_0xded50e[_0xb856('0x31')],qs[_0xb856('0x36')](_0x497ad4[_0xb856('0x32')][_0xb856('0x36')]));_0x90a847[_0xb856('0x37')]=_0x90a847['attributes'][_0xb856('0x38')]?_0x90a847['attributes']:_0xded50e['model'];_0x90a847[_0xb856('0x4e')]=qs[_0xb856('0x3a')](_0x497ad4['query']['sort']);_0x90a847['where']=qs['filters'](_[_0xb856('0x3c')](_0x497ad4[_0xb856('0x32')],_0xded50e['filters']));if(_0x497ad4[_0xb856('0x32')][_0xb856('0x3d')]){_0x90a847[_0xb856('0x3b')]=_[_0xb856('0x3e')](_0x90a847['where'],{'$or':_[_0xb856('0x2b')](_0x90a847[_0xb856('0x37')],function(_0x37373f){var _0x32da3a={};_0x32da3a[_0x37373f]={'$like':'%'+_0x497ad4[_0xb856('0x32')][_0xb856('0x3d')]+'%'};return _0x32da3a;})});}_0x90a847=_[_0xb856('0x3e')]({},_0x90a847,_0x497ad4[_0xb856('0x40')]);return _0x54c265[_0xb856('0x52')](_0x90a847);}})[_0xb856('0x27')](function(_0x5de8b9){if(_0x5de8b9){_0x39ec3b=_0x5de8b9['length'];if(!_0x497ad4[_0xb856('0x32')][_0xb856('0x50')](_0xb856('0x39'))){_0x90a847[_0xb856('0x1e')]=qs['limit'](_0x497ad4[_0xb856('0x32')][_0xb856('0x1e')]);_0x90a847[_0xb856('0x21')]=qs[_0xb856('0x21')](_0x497ad4[_0xb856('0x32')][_0xb856('0x21')]);}return _0x54c265['getDescriptions'](_0x90a847);}})['then'](function(_0x1e6d48){if(_0x1e6d48){return _0x1e6d48?{'count':_0x39ec3b,'rows':_0x1e6d48}:null;}})[_0xb856('0x27')](respondWithResult(_0x56bcf2,null))[_0xb856('0x43')](handleError(_0x56bcf2,null));};
\ No newline at end of file
+var _0x722a=['params','keys','rawAttributes','includeAll','include','find','catch','create','body','getFields','ServicenowField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','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','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy','error','stack','name','send','ServicenowConfiguration','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','findAll','then','rows'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x722a,0x161));var _0xa722=function(_0x24ea27,_0x2968b8){_0x24ea27=_0x24ea27-0x0;var _0x28d872=_0x722a[_0x24ea27];return _0x28d872;};'use strict';var emlformat=require(_0xa722('0x0'));var rimraf=require(_0xa722('0x1'));var zipdir=require(_0xa722('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa722('0x3'));var moment=require(_0xa722('0x4'));var BPromise=require(_0xa722('0x5'));var Mustache=require(_0xa722('0x6'));var util=require('util');var path=require(_0xa722('0x7'));var sox=require(_0xa722('0x8'));var csv=require(_0xa722('0x9'));var ejs=require(_0xa722('0xa'));var fs=require('fs');var fs_extra=require(_0xa722('0xb'));var _=require(_0xa722('0xc'));var squel=require(_0xa722('0xd'));var crypto=require(_0xa722('0xe'));var jsforce=require(_0xa722('0xf'));var deskjs=require(_0xa722('0x10'));var toCsv=require(_0xa722('0x9'));var querystring=require(_0xa722('0x11'));var Papa=require('papaparse');var Redis=require(_0xa722('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa722('0x13'));var as=require(_0xa722('0x14'));var hardwareService=require(_0xa722('0x15'));var logger=require(_0xa722('0x16'))(_0xa722('0x17'));var utils=require(_0xa722('0x18'));var config=require(_0xa722('0x19'));var licenseUtil=require(_0xa722('0x1a'));var db=require(_0xa722('0x1b'))['db'];function respondWithStatusCode(_0x46d699,_0x303570){_0x303570=_0x303570||0xcc;return function(_0x256f41){if(_0x256f41){return _0x46d699[_0xa722('0x1c')](_0x303570);}return _0x46d699[_0xa722('0x1d')](_0x303570)[_0xa722('0x1e')]();};}function respondWithResult(_0x1a410e,_0x3ade47){_0x3ade47=_0x3ade47||0xc8;return function(_0x1cd08c){if(_0x1cd08c){return _0x1a410e[_0xa722('0x1d')](_0x3ade47)[_0xa722('0x1f')](_0x1cd08c);}};}function respondWithFilteredResult(_0x25cc5a,_0x15ade5){return function(_0x5873f7){if(_0x5873f7){var _0x12ade9=typeof _0x15ade5['offset']===_0xa722('0x20')&&typeof _0x15ade5[_0xa722('0x21')]===_0xa722('0x20');var _0x16869e=_0x5873f7['count'];var _0x5cf0e=_0x12ade9?0x0:_0x15ade5[_0xa722('0x22')];var _0x1d02bd=_0x12ade9?_0x5873f7[_0xa722('0x23')]:_0x15ade5[_0xa722('0x22')]+_0x15ade5[_0xa722('0x21')];var _0x4a1b95;if(_0x1d02bd>=_0x16869e){_0x1d02bd=_0x16869e;_0x4a1b95=0xc8;}else{_0x4a1b95=0xce;}_0x25cc5a['status'](_0x4a1b95);return _0x25cc5a[_0xa722('0x24')](_0xa722('0x25'),_0x5cf0e+'-'+_0x1d02bd+'/'+_0x16869e)[_0xa722('0x1f')](_0x5873f7);}return null;};}function patchUpdates(_0x5108e4){return function(_0x33070b){try{jsonpatch[_0xa722('0x26')](_0x33070b,_0x5108e4,!![]);}catch(_0x464251){return BPromise[_0xa722('0x27')](_0x464251);}return _0x33070b[_0xa722('0x28')]();};}function saveUpdates(_0x25ff5f,_0x51ff01){return function(_0x2400e6){if(_0x2400e6){return _0x2400e6[_0xa722('0x29')](_0x25ff5f)['then'](function(_0x28635e){return _0x28635e;});}return null;};}function removeEntity(_0x111a87,_0xba8151){return function(_0x46a97b){if(_0x46a97b){return _0x46a97b[_0xa722('0x2a')]()['then'](function(){_0x111a87['status'](0xcc)[_0xa722('0x1e')]();});}};}function handleEntityNotFound(_0x1bf2c6,_0x43f489){return function(_0x49803c){if(!_0x49803c){_0x1bf2c6['sendStatus'](0x194);}return _0x49803c;};}function handleError(_0x5cab96,_0x14d464){_0x14d464=_0x14d464||0x1f4;return function(_0x53f611){logger[_0xa722('0x2b')](_0x53f611[_0xa722('0x2c')]);if(_0x53f611[_0xa722('0x2d')]){delete _0x53f611[_0xa722('0x2d')];}_0x5cab96['status'](_0x14d464)[_0xa722('0x2e')](_0x53f611);};}exports['index']=function(_0x2dadf8,_0x87e036){var _0x527abc={},_0x7945d0={},_0x4a68ed={'count':0x0,'rows':[]};var _0x2727db=_['map'](db[_0xa722('0x2f')]['rawAttributes'],function(_0x5e0e2b){return{'name':_0x5e0e2b[_0xa722('0x30')],'type':_0x5e0e2b[_0xa722('0x31')][_0xa722('0x32')]};});_0x7945d0[_0xa722('0x33')]=_[_0xa722('0x34')](_0x2727db,_0xa722('0x2d'));_0x7945d0[_0xa722('0x35')]=_['keys'](_0x2dadf8[_0xa722('0x35')]);_0x7945d0[_0xa722('0x36')]=_[_0xa722('0x37')](_0x7945d0['model'],_0x7945d0[_0xa722('0x35')]);_0x527abc[_0xa722('0x38')]=_[_0xa722('0x37')](_0x7945d0[_0xa722('0x33')],qs[_0xa722('0x39')](_0x2dadf8['query'][_0xa722('0x39')]));_0x527abc[_0xa722('0x38')]=_0x527abc[_0xa722('0x38')][_0xa722('0x3a')]?_0x527abc[_0xa722('0x38')]:_0x7945d0['model'];if(!_0x2dadf8[_0xa722('0x35')][_0xa722('0x3b')](_0xa722('0x3c'))){_0x527abc['limit']=qs[_0xa722('0x21')](_0x2dadf8['query'][_0xa722('0x21')]);_0x527abc[_0xa722('0x22')]=qs[_0xa722('0x22')](_0x2dadf8[_0xa722('0x35')]['offset']);}_0x527abc[_0xa722('0x3d')]=qs[_0xa722('0x3e')](_0x2dadf8[_0xa722('0x35')]['sort']);_0x527abc[_0xa722('0x3f')]=qs['filters'](_[_0xa722('0x40')](_0x2dadf8[_0xa722('0x35')],_0x7945d0['filters']),_0x2727db);if(_0x2dadf8[_0xa722('0x35')][_0xa722('0x41')]){_0x527abc[_0xa722('0x3f')]=_['merge'](_0x527abc['where'],{'$or':_['map'](_0x2727db,function(_0x59bf68){if(_0x59bf68[_0xa722('0x31')]!==_0xa722('0x42')){var _0x4b31f7={};_0x4b31f7[_0x59bf68[_0xa722('0x2d')]]={'$like':'%'+_0x2dadf8[_0xa722('0x35')]['filter']+'%'};return _0x4b31f7;}})});}_0x527abc=_[_0xa722('0x43')]({},_0x527abc,_0x2dadf8[_0xa722('0x44')]);var _0x1caeed={'where':_0x527abc['where']};return db[_0xa722('0x2f')]['count'](_0x1caeed)['then'](function(_0x1ca646){_0x4a68ed[_0xa722('0x23')]=_0x1ca646;if(_0x2dadf8[_0xa722('0x35')]['includeAll']){_0x527abc['include']=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xa722('0x45')](_0x527abc);})[_0xa722('0x46')](function(_0xf19cd2){_0x4a68ed[_0xa722('0x47')]=_0xf19cd2;return _0x4a68ed;})['then'](respondWithFilteredResult(_0x87e036,_0x527abc))['catch'](handleError(_0x87e036,null));};exports['show']=function(_0x2921d5,_0x194931){var _0x2050f1={'raw':![],'where':{'id':_0x2921d5[_0xa722('0x48')]['id']}},_0x33a89c={};_0x33a89c[_0xa722('0x33')]=_[_0xa722('0x49')](db['ServicenowConfiguration'][_0xa722('0x4a')]);_0x33a89c[_0xa722('0x35')]=_[_0xa722('0x49')](_0x2921d5[_0xa722('0x35')]);_0x33a89c[_0xa722('0x36')]=_[_0xa722('0x37')](_0x33a89c[_0xa722('0x33')],_0x33a89c[_0xa722('0x35')]);_0x2050f1[_0xa722('0x38')]=_[_0xa722('0x37')](_0x33a89c[_0xa722('0x33')],qs[_0xa722('0x39')](_0x2921d5[_0xa722('0x35')][_0xa722('0x39')]));_0x2050f1[_0xa722('0x38')]=_0x2050f1[_0xa722('0x38')]['length']?_0x2050f1[_0xa722('0x38')]:_0x33a89c[_0xa722('0x33')];if(_0x2921d5[_0xa722('0x35')][_0xa722('0x4b')]){_0x2050f1[_0xa722('0x4c')]=[{'all':!![]}];}_0x2050f1=_[_0xa722('0x43')]({},_0x2050f1,_0x2921d5[_0xa722('0x44')]);return db[_0xa722('0x2f')][_0xa722('0x4d')](_0x2050f1)[_0xa722('0x46')](handleEntityNotFound(_0x194931,null))[_0xa722('0x46')](respondWithResult(_0x194931,null))[_0xa722('0x4e')](handleError(_0x194931,null));};exports[_0xa722('0x4f')]=function(_0x14e4d2,_0x9bb4e2){return db[_0xa722('0x2f')][_0xa722('0x4f')](_0x14e4d2['body'],{})[_0xa722('0x46')](respondWithResult(_0x9bb4e2,0xc9))[_0xa722('0x4e')](handleError(_0x9bb4e2,null));};exports['update']=function(_0x5005f4,_0x55e779){if(_0x5005f4[_0xa722('0x50')]['id']){delete _0x5005f4['body']['id'];}return db[_0xa722('0x2f')][_0xa722('0x4d')]({'where':{'id':_0x5005f4['params']['id']}})[_0xa722('0x46')](handleEntityNotFound(_0x55e779,null))[_0xa722('0x46')](saveUpdates(_0x5005f4[_0xa722('0x50')],null))[_0xa722('0x46')](respondWithResult(_0x55e779,null))['catch'](handleError(_0x55e779,null));};exports[_0xa722('0x2a')]=function(_0x47af76,_0x5aed0a){return db[_0xa722('0x2f')][_0xa722('0x4d')]({'where':{'id':_0x47af76[_0xa722('0x48')]['id']}})[_0xa722('0x46')](handleEntityNotFound(_0x5aed0a,null))[_0xa722('0x46')](removeEntity(_0x5aed0a,null))[_0xa722('0x4e')](handleError(_0x5aed0a,null));};exports[_0xa722('0x51')]=function(_0x15900,_0x15e6e6,_0x321d53){var _0x5bb741={};var _0x4bbcb1={};var _0x5c7a0c;var _0x1295ea;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x15900['params']['id']}})['then'](handleEntityNotFound(_0x15e6e6,null))['then'](function(_0x479b8e){if(_0x479b8e){_0x5c7a0c=_0x479b8e;_0x4bbcb1['model']=_['keys'](db[_0xa722('0x52')][_0xa722('0x4a')]);_0x4bbcb1['query']=_[_0xa722('0x49')](_0x15900[_0xa722('0x35')]);_0x4bbcb1['filters']=_['intersection'](_0x4bbcb1['model'],_0x4bbcb1[_0xa722('0x35')]);_0x5bb741['attributes']=_[_0xa722('0x37')](_0x4bbcb1[_0xa722('0x33')],qs[_0xa722('0x39')](_0x15900[_0xa722('0x35')][_0xa722('0x39')]));_0x5bb741[_0xa722('0x38')]=_0x5bb741['attributes'][_0xa722('0x3a')]?_0x5bb741[_0xa722('0x38')]:_0x4bbcb1['model'];_0x5bb741[_0xa722('0x3d')]=qs[_0xa722('0x3e')](_0x15900[_0xa722('0x35')][_0xa722('0x3e')]);_0x5bb741['where']=qs[_0xa722('0x36')](_[_0xa722('0x40')](_0x15900['query'],_0x4bbcb1['filters']));if(_0x15900['query']['filter']){_0x5bb741[_0xa722('0x3f')]=_[_0xa722('0x43')](_0x5bb741[_0xa722('0x3f')],{'$or':_[_0xa722('0x34')](_0x5bb741[_0xa722('0x38')],function(_0x22e065){var _0x362fc4={};_0x362fc4[_0x22e065]={'$like':'%'+_0x15900[_0xa722('0x35')][_0xa722('0x41')]+'%'};return _0x362fc4;})});}_0x5bb741=_['merge']({},_0x5bb741,_0x15900['options']);return _0x5c7a0c['getFields'](_0x5bb741);}})[_0xa722('0x46')](function(_0x645553){if(_0x645553){_0x1295ea=_0x645553['length'];if(!_0x15900[_0xa722('0x35')][_0xa722('0x3b')](_0xa722('0x3c'))){_0x5bb741[_0xa722('0x21')]=qs[_0xa722('0x21')](_0x15900[_0xa722('0x35')]['limit']);_0x5bb741[_0xa722('0x22')]=qs['offset'](_0x15900[_0xa722('0x35')][_0xa722('0x22')]);}return _0x5c7a0c[_0xa722('0x51')](_0x5bb741);}})[_0xa722('0x46')](function(_0x510cde){if(_0x510cde){return _0x510cde?{'count':_0x1295ea,'rows':_0x510cde}:null;}})[_0xa722('0x46')](respondWithResult(_0x15e6e6,null))[_0xa722('0x4e')](handleError(_0x15e6e6,null));};exports[_0xa722('0x53')]=function(_0x25f09b,_0x3dbd82,_0x2cd0bd){var _0x425d91={};var _0x3ffdc9={};var _0x4a5be7;var _0x220025;return db[_0xa722('0x2f')]['findOne']({'where':{'id':_0x25f09b[_0xa722('0x48')]['id']}})[_0xa722('0x46')](handleEntityNotFound(_0x3dbd82,null))[_0xa722('0x46')](function(_0x4f1e54){if(_0x4f1e54){_0x4a5be7=_0x4f1e54;_0x3ffdc9[_0xa722('0x33')]=_['keys'](db[_0xa722('0x52')][_0xa722('0x4a')]);_0x3ffdc9[_0xa722('0x35')]=_['keys'](_0x25f09b[_0xa722('0x35')]);_0x3ffdc9[_0xa722('0x36')]=_[_0xa722('0x37')](_0x3ffdc9[_0xa722('0x33')],_0x3ffdc9[_0xa722('0x35')]);_0x425d91['attributes']=_['intersection'](_0x3ffdc9['model'],qs[_0xa722('0x39')](_0x25f09b[_0xa722('0x35')][_0xa722('0x39')]));_0x425d91[_0xa722('0x38')]=_0x425d91['attributes'][_0xa722('0x3a')]?_0x425d91[_0xa722('0x38')]:_0x3ffdc9[_0xa722('0x33')];_0x425d91[_0xa722('0x3d')]=qs[_0xa722('0x3e')](_0x25f09b[_0xa722('0x35')]['sort']);_0x425d91[_0xa722('0x3f')]=qs[_0xa722('0x36')](_[_0xa722('0x40')](_0x25f09b['query'],_0x3ffdc9[_0xa722('0x36')]));if(_0x25f09b['query']['filter']){_0x425d91['where']=_['merge'](_0x425d91[_0xa722('0x3f')],{'$or':_[_0xa722('0x34')](_0x425d91[_0xa722('0x38')],function(_0x5b91ee){var _0x94ce2a={};_0x94ce2a[_0x5b91ee]={'$like':'%'+_0x25f09b['query']['filter']+'%'};return _0x94ce2a;})});}_0x425d91=_[_0xa722('0x43')]({},_0x425d91,_0x25f09b[_0xa722('0x44')]);return _0x4a5be7[_0xa722('0x53')](_0x425d91);}})[_0xa722('0x46')](function(_0x2580c3){if(_0x2580c3){_0x220025=_0x2580c3[_0xa722('0x3a')];if(!_0x25f09b['query'][_0xa722('0x3b')]('nolimit')){_0x425d91[_0xa722('0x21')]=qs[_0xa722('0x21')](_0x25f09b[_0xa722('0x35')][_0xa722('0x21')]);_0x425d91['offset']=qs['offset'](_0x25f09b[_0xa722('0x35')]['offset']);}return _0x4a5be7[_0xa722('0x53')](_0x425d91);}})[_0xa722('0x46')](function(_0x38d4f0){if(_0x38d4f0){return _0x38d4f0?{'count':_0x220025,'rows':_0x38d4f0}:null;}})['then'](respondWithResult(_0x3dbd82,null))[_0xa722('0x4e')](handleError(_0x3dbd82,null));};exports[_0xa722('0x54')]=function(_0x4275d4,_0x178518,_0x164258){var _0x3ec8cd={};var _0x5c3f77={};var _0x3a6a57;var _0x524f18;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x4275d4[_0xa722('0x48')]['id']}})[_0xa722('0x46')](handleEntityNotFound(_0x178518,null))[_0xa722('0x46')](function(_0x2c4a22){if(_0x2c4a22){_0x3a6a57=_0x2c4a22;_0x5c3f77[_0xa722('0x33')]=_[_0xa722('0x49')](db[_0xa722('0x52')][_0xa722('0x4a')]);_0x5c3f77['query']=_[_0xa722('0x49')](_0x4275d4[_0xa722('0x35')]);_0x5c3f77['filters']=_[_0xa722('0x37')](_0x5c3f77['model'],_0x5c3f77[_0xa722('0x35')]);_0x3ec8cd[_0xa722('0x38')]=_[_0xa722('0x37')](_0x5c3f77[_0xa722('0x33')],qs[_0xa722('0x39')](_0x4275d4[_0xa722('0x35')]['fields']));_0x3ec8cd[_0xa722('0x38')]=_0x3ec8cd[_0xa722('0x38')][_0xa722('0x3a')]?_0x3ec8cd[_0xa722('0x38')]:_0x5c3f77[_0xa722('0x33')];_0x3ec8cd[_0xa722('0x3d')]=qs['sort'](_0x4275d4[_0xa722('0x35')]['sort']);_0x3ec8cd[_0xa722('0x3f')]=qs[_0xa722('0x36')](_[_0xa722('0x40')](_0x4275d4['query'],_0x5c3f77[_0xa722('0x36')]));if(_0x4275d4['query']['filter']){_0x3ec8cd[_0xa722('0x3f')]=_[_0xa722('0x43')](_0x3ec8cd[_0xa722('0x3f')],{'$or':_[_0xa722('0x34')](_0x3ec8cd[_0xa722('0x38')],function(_0x20ae99){var _0x4eea5a={};_0x4eea5a[_0x20ae99]={'$like':'%'+_0x4275d4['query'][_0xa722('0x41')]+'%'};return _0x4eea5a;})});}_0x3ec8cd=_[_0xa722('0x43')]({},_0x3ec8cd,_0x4275d4['options']);return _0x3a6a57[_0xa722('0x54')](_0x3ec8cd);}})[_0xa722('0x46')](function(_0x2bbf83){if(_0x2bbf83){_0x524f18=_0x2bbf83['length'];if(!_0x4275d4[_0xa722('0x35')][_0xa722('0x3b')]('nolimit')){_0x3ec8cd[_0xa722('0x21')]=qs[_0xa722('0x21')](_0x4275d4['query'][_0xa722('0x21')]);_0x3ec8cd['offset']=qs['offset'](_0x4275d4['query'][_0xa722('0x22')]);}return _0x3a6a57[_0xa722('0x54')](_0x3ec8cd);}})['then'](function(_0xd94f4f){if(_0xd94f4f){return _0xd94f4f?{'count':_0x524f18,'rows':_0xd94f4f}:null;}})[_0xa722('0x46')](respondWithResult(_0x178518,null))[_0xa722('0x4e')](handleError(_0x178518,null));};
\ No newline at end of file
index 59c746f..04e39e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1123=['../../config/logger','moment','bluebird','request-promise','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations'];(function(_0x162a28,_0x48cc31){var _0x50e0db=function(_0x111a28){while(--_0x111a28){_0x162a28['push'](_0x162a28['shift']());}};_0x50e0db(++_0x48cc31);}(_0x1123,0x118));var _0x3112=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x1123[_0x2be8c2];return _0x97f531;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3112('0x0'))('api');var moment=require(_0x3112('0x1'));var BPromise=require(_0x3112('0x2'));var rp=require(_0x3112('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3112('0x4'));var attributes=require(_0x3112('0x5'));module[_0x3112('0x6')]=function(_0x34ad01,_0xc4b189){return _0x34ad01[_0x3112('0x7')](_0x3112('0x8'),attributes,{'tableName':_0x3112('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x84a0=['define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','./intServicenowConfiguration.attributes'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x84a0,0x66));var _0x084a=function(_0x137bdd,_0x43a31f){_0x137bdd=_0x137bdd-0x0;var _0x2656a5=_0x84a0[_0x137bdd];return _0x2656a5;};'use strict';var _=require(_0x084a('0x0'));var util=require(_0x084a('0x1'));var logger=require(_0x084a('0x2'))(_0x084a('0x3'));var moment=require('moment');var BPromise=require(_0x084a('0x4'));var rp=require(_0x084a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x084a('0x6'));var attributes=require(_0x084a('0x7'));module['exports']=function(_0x16f8a7,_0x4325ce){return _0x16f8a7[_0x084a('0x8')](_0x084a('0x9'),attributes,{'tableName':_0x084a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 86cd4cc..7c6a25f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e51=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x4b5c68,_0x73a64d){var _0xb1a8ce=function(_0x35706c){while(--_0x35706c){_0x4b5c68['push'](_0x4b5c68['shift']());}};_0xb1a8ce(++_0x73a64d);}(_0x3e51,0x74));var _0x13e5=function(_0x421592,_0x615ee8){_0x421592=_0x421592-0x0;var _0x31efaf=_0x3e51[_0x421592];return _0x31efaf;};'use strict';var _=require(_0x13e5('0x0'));var util=require(_0x13e5('0x1'));var moment=require(_0x13e5('0x2'));var BPromise=require(_0x13e5('0x3'));var rs=require(_0x13e5('0x4'));var fs=require('fs');var Redis=require(_0x13e5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x13e5('0x6'));var logger=require(_0x13e5('0x7'))(_0x13e5('0x8'));var config=require(_0x13e5('0x9'));var jayson=require(_0x13e5('0xa'));var client=jayson[_0x13e5('0xb')][_0x13e5('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xe63da4,_0x4c459b,_0x39e201){return new BPromise(function(_0x2abea3,_0xcf8d6b){return client[_0x13e5('0xd')](_0xe63da4,_0x39e201)[_0x13e5('0xe')](function(_0x59ed31){logger[_0x13e5('0xf')](_0x13e5('0x10'),_0x4c459b,_0x13e5('0x11'));logger['debug']('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x4c459b,_0x13e5('0x11'),JSON[_0x13e5('0x12')](_0x59ed31));if(_0x59ed31['error']){if(_0x59ed31[_0x13e5('0x13')][_0x13e5('0x14')]===0x1f4){logger[_0x13e5('0x13')](_0x13e5('0x10'),_0x4c459b,_0x59ed31[_0x13e5('0x13')]['message']);return _0xcf8d6b(_0x59ed31['error'][_0x13e5('0x15')]);}logger[_0x13e5('0x13')](_0x13e5('0x10'),_0x4c459b,_0x59ed31[_0x13e5('0x13')][_0x13e5('0x15')]);return _0x2abea3(_0x59ed31[_0x13e5('0x13')][_0x13e5('0x15')]);}else{logger[_0x13e5('0xf')](_0x13e5('0x10'),_0x4c459b,'request\x20sent');_0x2abea3(_0x59ed31[_0x13e5('0x16')][_0x13e5('0x15')]);}})[_0x13e5('0x17')](function(_0x42d4d1){logger[_0x13e5('0x13')](_0x13e5('0x10'),_0x4c459b,_0x42d4d1);_0xcf8d6b(_0x42d4d1);});});}
\ No newline at end of file
+var _0x89ab=['../../config/logger','jayson/promise','client','http','request','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x421cf8,_0x23152c){var _0x145c48=function(_0x565862){while(--_0x565862){_0x421cf8['push'](_0x421cf8['shift']());}};_0x145c48(++_0x23152c);}(_0x89ab,0x16f));var _0xb89a=function(_0x1d0a48,_0x377cff){_0x1d0a48=_0x1d0a48-0x0;var _0x463677=_0x89ab[_0x1d0a48];return _0x463677;};'use strict';var _=require(_0xb89a('0x0'));var util=require(_0xb89a('0x1'));var moment=require(_0xb89a('0x2'));var BPromise=require(_0xb89a('0x3'));var rs=require(_0xb89a('0x4'));var fs=require('fs');var Redis=require(_0xb89a('0x5'));var db=require(_0xb89a('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb89a('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xb89a('0x8'));var client=jayson[_0xb89a('0x9')][_0xb89a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x19fd43,_0x57a1bd,_0x5dea27){return new BPromise(function(_0x8fa297,_0x21ac83){return client[_0xb89a('0xb')](_0x19fd43,_0x5dea27)['then'](function(_0x5cde1f){logger[_0xb89a('0xc')](_0xb89a('0xd'),_0x57a1bd,_0xb89a('0xe'));logger[_0xb89a('0xf')](_0xb89a('0x10'),_0x57a1bd,_0xb89a('0xe'),JSON[_0xb89a('0x11')](_0x5cde1f));if(_0x5cde1f[_0xb89a('0x12')]){if(_0x5cde1f['error']['code']===0x1f4){logger[_0xb89a('0x12')]('ServicenowConfiguration,\x20%s,\x20%s',_0x57a1bd,_0x5cde1f[_0xb89a('0x12')]['message']);return _0x21ac83(_0x5cde1f['error'][_0xb89a('0x13')]);}logger[_0xb89a('0x12')](_0xb89a('0xd'),_0x57a1bd,_0x5cde1f[_0xb89a('0x12')]['message']);return _0x8fa297(_0x5cde1f['error'][_0xb89a('0x13')]);}else{logger[_0xb89a('0xc')](_0xb89a('0xd'),_0x57a1bd,_0xb89a('0xe'));_0x8fa297(_0x5cde1f[_0xb89a('0x14')]['message']);}})[_0xb89a('0x15')](function(_0x298d59){logger[_0xb89a('0x12')](_0xb89a('0xd'),_0x57a1bd,_0x298d59);_0x21ac83(_0x298d59);});});}
\ No newline at end of file
index 5316b62..d079a2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x507a=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','post','create','put','delete','multer','connect-timeout'];(function(_0xf78b28,_0x1bb637){var _0x5c8e0b=function(_0xdf4c86){while(--_0xdf4c86){_0xf78b28['push'](_0xf78b28['shift']());}};_0x5c8e0b(++_0x1bb637);}(_0x507a,0x18e));var _0xa507=function(_0x18bffc,_0x84da7f){_0x18bffc=_0x18bffc-0x0;var _0x1ef27a=_0x507a[_0x18bffc];return _0x1ef27a;};'use strict';var multer=require(_0xa507('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa507('0x1'));var express=require(_0xa507('0x2'));var router=express[_0xa507('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa507('0x4'));var interaction=require(_0xa507('0x5'));var config=require(_0xa507('0x6'));var controller=require(_0xa507('0x7'));router[_0xa507('0x8')]('/',auth[_0xa507('0x9')](),controller[_0xa507('0xa')]);router[_0xa507('0x8')](_0xa507('0xb'),auth[_0xa507('0x9')](),controller['show']);router[_0xa507('0xc')]('/',auth[_0xa507('0x9')](),controller[_0xa507('0xd')]);router[_0xa507('0xe')](_0xa507('0xb'),auth[_0xa507('0x9')](),controller['update']);router[_0xa507('0xf')](_0xa507('0xb'),auth[_0xa507('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x46fe=['index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get'];(function(_0x4b2aba,_0x34ddfc){var _0x24e29b=function(_0x175849){while(--_0x175849){_0x4b2aba['push'](_0x4b2aba['shift']());}};_0x24e29b(++_0x34ddfc);}(_0x46fe,0x1d9));var _0xe46f=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x46fe[_0x209941];return _0x1e8729;};'use strict';var multer=require(_0xe46f('0x0'));var util=require('util');var path=require(_0xe46f('0x1'));var timeout=require(_0xe46f('0x2'));var express=require(_0xe46f('0x3'));var router=express[_0xe46f('0x4')]();var fs_extra=require(_0xe46f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe46f('0x6'));var config=require(_0xe46f('0x7'));var controller=require(_0xe46f('0x8'));router[_0xe46f('0x9')]('/',auth['isAuthenticated'](),controller[_0xe46f('0xa')]);router['get'](_0xe46f('0xb'),auth[_0xe46f('0xc')](),controller[_0xe46f('0xd')]);router[_0xe46f('0xe')]('/',auth['isAuthenticated'](),controller[_0xe46f('0xf')]);router[_0xe46f('0x10')](_0xe46f('0xb'),auth['isAuthenticated'](),controller[_0xe46f('0x11')]);router[_0xe46f('0x12')](_0xe46f('0xb'),auth[_0xe46f('0xc')](),controller[_0xe46f('0x13')]);module[_0xe46f('0x14')]=router;
\ No newline at end of file
index 30399d8..a75b344 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde02=['variable','keyValue','picklist','STRING','customVariable','BOOLEAN','sequelize','ENUM','string'];(function(_0x1f2a18,_0x3cdef4){var _0x29f95e=function(_0x4b653b){while(--_0x4b653b){_0x1f2a18['push'](_0x1f2a18['shift']());}};_0x29f95e(++_0x3cdef4);}(_0xde02,0x69));var _0x2de0=function(_0x5868d0,_0x575917){_0x5868d0=_0x5868d0-0x0;var _0x3f2567=_0xde02[_0x5868d0];return _0x3f2567;};'use strict';var Sequelize=require(_0x2de0('0x0'));module['exports']={'type':{'type':Sequelize[_0x2de0('0x1')](_0x2de0('0x2'),_0x2de0('0x3'),'customVariable',_0x2de0('0x4'),_0x2de0('0x5')),'defaultValue':_0x2de0('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x2de0('0x6')]},'keyType':{'type':Sequelize[_0x2de0('0x1')](_0x2de0('0x2'),_0x2de0('0x3'),_0x2de0('0x7'))},'keyContent':{'type':Sequelize[_0x2de0('0x6')]},'idField':{'type':Sequelize[_0x2de0('0x6')]},'nameField':{'type':Sequelize[_0x2de0('0x6')]},'customField':{'type':Sequelize[_0x2de0('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2de0('0x6')]}};
\ No newline at end of file
+var _0xb62e=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','ENUM'];(function(_0x65ae41,_0x3e1ecb){var _0x19bf4f=function(_0x3dc40c){while(--_0x3dc40c){_0x65ae41['push'](_0x65ae41['shift']());}};_0x19bf4f(++_0x3e1ecb);}(_0xb62e,0x130));var _0xeb62=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xb62e[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require(_0xeb62('0x0'));module['exports']={'type':{'type':Sequelize[_0xeb62('0x1')](_0xeb62('0x2'),_0xeb62('0x3'),_0xeb62('0x4'),_0xeb62('0x5'),_0xeb62('0x6')),'defaultValue':_0xeb62('0x2')},'content':{'type':Sequelize[_0xeb62('0x7')]},'key':{'type':Sequelize[_0xeb62('0x7')]},'keyType':{'type':Sequelize[_0xeb62('0x1')](_0xeb62('0x2'),_0xeb62('0x3'),_0xeb62('0x4'))},'keyContent':{'type':Sequelize[_0xeb62('0x7')]},'idField':{'type':Sequelize[_0xeb62('0x7')]},'nameField':{'type':Sequelize[_0xeb62('0x7')]},'customField':{'type':Sequelize[_0xeb62('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xeb62('0x7')]}};
\ No newline at end of file
index a2d50be..dfef0cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4d2=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','update','then','destroy','stack','name','send','map','ServicenowField','type','key','model','query','keys'];(function(_0x20a1db,_0xef0484){var _0x3652ea=function(_0x1768eb){while(--_0x1768eb){_0x20a1db['push'](_0x20a1db['shift']());}};_0x3652ea(++_0xef0484);}(_0xc4d2,0xf4));var _0x2c4d=function(_0x4377f9,_0xbadcd8){_0x4377f9=_0x4377f9-0x0;var _0x571e62=_0xc4d2[_0x4377f9];return _0x571e62;};'use strict';var emlformat=require(_0x2c4d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2c4d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2c4d('0x2'));var moment=require(_0x2c4d('0x3'));var BPromise=require(_0x2c4d('0x4'));var Mustache=require(_0x2c4d('0x5'));var util=require(_0x2c4d('0x6'));var path=require('path');var sox=require(_0x2c4d('0x7'));var csv=require(_0x2c4d('0x8'));var ejs=require(_0x2c4d('0x9'));var fs=require('fs');var fs_extra=require(_0x2c4d('0xa'));var _=require(_0x2c4d('0xb'));var squel=require('squel');var crypto=require(_0x2c4d('0xc'));var jsforce=require(_0x2c4d('0xd'));var deskjs=require(_0x2c4d('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2c4d('0xf'));var Papa=require('papaparse');var Redis=require(_0x2c4d('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2c4d('0x11'));var as=require(_0x2c4d('0x12'));var hardwareService=require(_0x2c4d('0x13'));var logger=require(_0x2c4d('0x14'))(_0x2c4d('0x15'));var utils=require(_0x2c4d('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2c4d('0x17'));var db=require(_0x2c4d('0x18'))['db'];function respondWithStatusCode(_0x39a645,_0x37b715){_0x37b715=_0x37b715||0xcc;return function(_0x2695e4){if(_0x2695e4){return _0x39a645[_0x2c4d('0x19')](_0x37b715);}return _0x39a645[_0x2c4d('0x1a')](_0x37b715)[_0x2c4d('0x1b')]();};}function respondWithResult(_0x40232a,_0x5df2e1){_0x5df2e1=_0x5df2e1||0xc8;return function(_0x3afa1c){if(_0x3afa1c){return _0x40232a[_0x2c4d('0x1a')](_0x5df2e1)[_0x2c4d('0x1c')](_0x3afa1c);}};}function respondWithFilteredResult(_0x4aeb5c,_0x9c287f){return function(_0x454e47){if(_0x454e47){var _0x34c060=typeof _0x9c287f[_0x2c4d('0x1d')]===_0x2c4d('0x1e')&&typeof _0x9c287f['limit']===_0x2c4d('0x1e');var _0x21bb6c=_0x454e47[_0x2c4d('0x1f')];var _0xc14607=_0x34c060?0x0:_0x9c287f[_0x2c4d('0x1d')];var _0x3108ec=_0x34c060?_0x454e47[_0x2c4d('0x1f')]:_0x9c287f[_0x2c4d('0x1d')]+_0x9c287f[_0x2c4d('0x20')];var _0x340649;if(_0x3108ec>=_0x21bb6c){_0x3108ec=_0x21bb6c;_0x340649=0xc8;}else{_0x340649=0xce;}_0x4aeb5c[_0x2c4d('0x1a')](_0x340649);return _0x4aeb5c[_0x2c4d('0x21')]('Content-Range',_0xc14607+'-'+_0x3108ec+'/'+_0x21bb6c)[_0x2c4d('0x1c')](_0x454e47);}return null;};}function patchUpdates(_0x11d72c){return function(_0x4f798d){try{jsonpatch['apply'](_0x4f798d,_0x11d72c,!![]);}catch(_0x3fa219){return BPromise[_0x2c4d('0x22')](_0x3fa219);}return _0x4f798d['save']();};}function saveUpdates(_0x4d40cb,_0x598d29){return function(_0x20725b){if(_0x20725b){return _0x20725b[_0x2c4d('0x23')](_0x4d40cb)[_0x2c4d('0x24')](function(_0x59b764){return _0x59b764;});}return null;};}function removeEntity(_0x13dd8c,_0x33cf79){return function(_0x49e74a){if(_0x49e74a){return _0x49e74a[_0x2c4d('0x25')]()[_0x2c4d('0x24')](function(){_0x13dd8c[_0x2c4d('0x1a')](0xcc)[_0x2c4d('0x1b')]();});}};}function handleEntityNotFound(_0x51c422,_0x291323){return function(_0x548b00){if(!_0x548b00){_0x51c422['sendStatus'](0x194);}return _0x548b00;};}function handleError(_0x8f64b1,_0x34e9bd){_0x34e9bd=_0x34e9bd||0x1f4;return function(_0x177edd){logger['error'](_0x177edd[_0x2c4d('0x26')]);if(_0x177edd[_0x2c4d('0x27')]){delete _0x177edd[_0x2c4d('0x27')];}_0x8f64b1[_0x2c4d('0x1a')](_0x34e9bd)[_0x2c4d('0x28')](_0x177edd);};}exports['index']=function(_0x39d3b9,_0x5c047a){var _0x2c898c={},_0x16cc6a={},_0x3ee950={'count':0x0,'rows':[]};var _0x4078a4=_[_0x2c4d('0x29')](db[_0x2c4d('0x2a')]['rawAttributes'],function(_0x338264){return{'name':_0x338264['fieldName'],'type':_0x338264[_0x2c4d('0x2b')][_0x2c4d('0x2c')]};});_0x16cc6a[_0x2c4d('0x2d')]=_[_0x2c4d('0x29')](_0x4078a4,_0x2c4d('0x27'));_0x16cc6a[_0x2c4d('0x2e')]=_[_0x2c4d('0x2f')](_0x39d3b9[_0x2c4d('0x2e')]);_0x16cc6a[_0x2c4d('0x30')]=_[_0x2c4d('0x31')](_0x16cc6a['model'],_0x16cc6a[_0x2c4d('0x2e')]);_0x2c898c[_0x2c4d('0x32')]=_[_0x2c4d('0x31')](_0x16cc6a['model'],qs[_0x2c4d('0x33')](_0x39d3b9['query'][_0x2c4d('0x33')]));_0x2c898c[_0x2c4d('0x32')]=_0x2c898c[_0x2c4d('0x32')][_0x2c4d('0x34')]?_0x2c898c[_0x2c4d('0x32')]:_0x16cc6a['model'];if(!_0x39d3b9['query'][_0x2c4d('0x35')](_0x2c4d('0x36'))){_0x2c898c['limit']=qs[_0x2c4d('0x20')](_0x39d3b9[_0x2c4d('0x2e')]['limit']);_0x2c898c[_0x2c4d('0x1d')]=qs[_0x2c4d('0x1d')](_0x39d3b9[_0x2c4d('0x2e')][_0x2c4d('0x1d')]);}_0x2c898c[_0x2c4d('0x37')]=qs[_0x2c4d('0x38')](_0x39d3b9['query'][_0x2c4d('0x38')]);_0x2c898c[_0x2c4d('0x39')]=qs[_0x2c4d('0x30')](_[_0x2c4d('0x3a')](_0x39d3b9[_0x2c4d('0x2e')],_0x16cc6a['filters']),_0x4078a4);if(_0x39d3b9[_0x2c4d('0x2e')][_0x2c4d('0x3b')]){_0x2c898c[_0x2c4d('0x39')]=_['merge'](_0x2c898c['where'],{'$or':_['map'](_0x4078a4,function(_0x379071){if(_0x379071[_0x2c4d('0x2b')]!==_0x2c4d('0x3c')){var _0x4164be={};_0x4164be[_0x379071['name']]={'$like':'%'+_0x39d3b9[_0x2c4d('0x2e')][_0x2c4d('0x3b')]+'%'};return _0x4164be;}})});}_0x2c898c=_['merge']({},_0x2c898c,_0x39d3b9[_0x2c4d('0x3d')]);var _0x412895={'where':_0x2c898c['where']};return db['ServicenowField'][_0x2c4d('0x1f')](_0x412895)[_0x2c4d('0x24')](function(_0x183819){_0x3ee950[_0x2c4d('0x1f')]=_0x183819;if(_0x39d3b9[_0x2c4d('0x2e')][_0x2c4d('0x3e')]){_0x2c898c['include']=[{'all':!![]}];}return db['ServicenowField'][_0x2c4d('0x3f')](_0x2c898c);})[_0x2c4d('0x24')](function(_0x47ced2){_0x3ee950[_0x2c4d('0x40')]=_0x47ced2;return _0x3ee950;})[_0x2c4d('0x24')](respondWithFilteredResult(_0x5c047a,_0x2c898c))[_0x2c4d('0x41')](handleError(_0x5c047a,null));};exports[_0x2c4d('0x42')]=function(_0x434ea4,_0xce5f56){var _0x4d545a={'raw':!![],'where':{'id':_0x434ea4[_0x2c4d('0x43')]['id']}},_0x5d6d63={};_0x5d6d63[_0x2c4d('0x2d')]=_[_0x2c4d('0x2f')](db[_0x2c4d('0x2a')][_0x2c4d('0x44')]);_0x5d6d63[_0x2c4d('0x2e')]=_[_0x2c4d('0x2f')](_0x434ea4[_0x2c4d('0x2e')]);_0x5d6d63[_0x2c4d('0x30')]=_['intersection'](_0x5d6d63['model'],_0x5d6d63['query']);_0x4d545a[_0x2c4d('0x32')]=_['intersection'](_0x5d6d63[_0x2c4d('0x2d')],qs[_0x2c4d('0x33')](_0x434ea4[_0x2c4d('0x2e')][_0x2c4d('0x33')]));_0x4d545a[_0x2c4d('0x32')]=_0x4d545a[_0x2c4d('0x32')][_0x2c4d('0x34')]?_0x4d545a[_0x2c4d('0x32')]:_0x5d6d63[_0x2c4d('0x2d')];if(_0x434ea4[_0x2c4d('0x2e')][_0x2c4d('0x3e')]){_0x4d545a[_0x2c4d('0x45')]=[{'all':!![]}];}_0x4d545a=_['merge']({},_0x4d545a,_0x434ea4[_0x2c4d('0x3d')]);return db[_0x2c4d('0x2a')][_0x2c4d('0x46')](_0x4d545a)[_0x2c4d('0x24')](handleEntityNotFound(_0xce5f56,null))[_0x2c4d('0x24')](respondWithResult(_0xce5f56,null))[_0x2c4d('0x41')](handleError(_0xce5f56,null));};exports['create']=function(_0x4d2c12,_0x3d4323){return db[_0x2c4d('0x2a')][_0x2c4d('0x47')](_0x4d2c12[_0x2c4d('0x48')],{})[_0x2c4d('0x24')](respondWithResult(_0x3d4323,0xc9))[_0x2c4d('0x41')](handleError(_0x3d4323,null));};exports[_0x2c4d('0x23')]=function(_0x2c9546,_0x348a63){if(_0x2c9546['body']['id']){delete _0x2c9546['body']['id'];}return db['ServicenowField']['find']({'where':{'id':_0x2c9546[_0x2c4d('0x43')]['id']}})[_0x2c4d('0x24')](handleEntityNotFound(_0x348a63,null))[_0x2c4d('0x24')](saveUpdates(_0x2c9546[_0x2c4d('0x48')],null))['then'](respondWithResult(_0x348a63,null))['catch'](handleError(_0x348a63,null));};exports[_0x2c4d('0x25')]=function(_0x434d68,_0xd14145){return db[_0x2c4d('0x2a')][_0x2c4d('0x46')]({'where':{'id':_0x434d68[_0x2c4d('0x43')]['id']}})[_0x2c4d('0x24')](handleEntityNotFound(_0xd14145,null))[_0x2c4d('0x24')](removeEntity(_0xd14145,null))[_0x2c4d('0x41')](handleError(_0xd14145,null));};
\ No newline at end of file
+var _0x40c3=['options','then','include','findAll','show','params','keys','includeAll','catch','create','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','end','sendStatus','error','stack','name','send','index','ServicenowField','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','filters','filter','merge','where','VIRTUAL'];(function(_0x46de0b,_0x6b9313){var _0x5e8fa9=function(_0x28e0b5){while(--_0x28e0b5){_0x46de0b['push'](_0x46de0b['shift']());}};_0x5e8fa9(++_0x6b9313);}(_0x40c3,0x188));var _0x340c=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0x40c3[_0x1ccdf7];return _0x52a0ae;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x340c('0x0'));var zipdir=require(_0x340c('0x1'));var jsonpatch=require(_0x340c('0x2'));var rp=require(_0x340c('0x3'));var moment=require(_0x340c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x340c('0x5'));var util=require(_0x340c('0x6'));var path=require(_0x340c('0x7'));var sox=require(_0x340c('0x8'));var csv=require(_0x340c('0x9'));var ejs=require(_0x340c('0xa'));var fs=require('fs');var fs_extra=require(_0x340c('0xb'));var _=require(_0x340c('0xc'));var squel=require(_0x340c('0xd'));var crypto=require(_0x340c('0xe'));var jsforce=require(_0x340c('0xf'));var deskjs=require(_0x340c('0x10'));var toCsv=require('to-csv');var querystring=require(_0x340c('0x11'));var Papa=require(_0x340c('0x12'));var Redis=require(_0x340c('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x340c('0x14'));var as=require(_0x340c('0x15'));var hardwareService=require(_0x340c('0x16'));var logger=require(_0x340c('0x17'))(_0x340c('0x18'));var utils=require(_0x340c('0x19'));var config=require(_0x340c('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b8f45,_0x3b4622){_0x3b4622=_0x3b4622||0xcc;return function(_0x2911f4){if(_0x2911f4){return _0x2b8f45['sendStatus'](_0x3b4622);}return _0x2b8f45[_0x340c('0x1b')](_0x3b4622)['end']();};}function respondWithResult(_0x138038,_0x6e44e5){_0x6e44e5=_0x6e44e5||0xc8;return function(_0x1a79c1){if(_0x1a79c1){return _0x138038['status'](_0x6e44e5)[_0x340c('0x1c')](_0x1a79c1);}};}function respondWithFilteredResult(_0x1176cd,_0x18b8f9){return function(_0x55950d){if(_0x55950d){var _0x4535fa=typeof _0x18b8f9[_0x340c('0x1d')]==='undefined'&&typeof _0x18b8f9[_0x340c('0x1e')]==='undefined';var _0x59de45=_0x55950d[_0x340c('0x1f')];var _0x45761e=_0x4535fa?0x0:_0x18b8f9['offset'];var _0x194425=_0x4535fa?_0x55950d['count']:_0x18b8f9[_0x340c('0x1d')]+_0x18b8f9[_0x340c('0x1e')];var _0x47dcde;if(_0x194425>=_0x59de45){_0x194425=_0x59de45;_0x47dcde=0xc8;}else{_0x47dcde=0xce;}_0x1176cd['status'](_0x47dcde);return _0x1176cd[_0x340c('0x20')](_0x340c('0x21'),_0x45761e+'-'+_0x194425+'/'+_0x59de45)[_0x340c('0x1c')](_0x55950d);}return null;};}function patchUpdates(_0x3d9613){return function(_0x2bb2a4){try{jsonpatch[_0x340c('0x22')](_0x2bb2a4,_0x3d9613,!![]);}catch(_0x63bc20){return BPromise[_0x340c('0x23')](_0x63bc20);}return _0x2bb2a4[_0x340c('0x24')]();};}function saveUpdates(_0x145b89,_0x32b2e5){return function(_0x27d581){if(_0x27d581){return _0x27d581[_0x340c('0x25')](_0x145b89)['then'](function(_0x1693c9){return _0x1693c9;});}return null;};}function removeEntity(_0x39b498,_0x25cefd){return function(_0x691bbc){if(_0x691bbc){return _0x691bbc['destroy']()['then'](function(){_0x39b498[_0x340c('0x1b')](0xcc)[_0x340c('0x26')]();});}};}function handleEntityNotFound(_0xdb53fe,_0x49e05c){return function(_0x458a8b){if(!_0x458a8b){_0xdb53fe[_0x340c('0x27')](0x194);}return _0x458a8b;};}function handleError(_0x24b501,_0x24a32d){_0x24a32d=_0x24a32d||0x1f4;return function(_0x2e1275){logger[_0x340c('0x28')](_0x2e1275[_0x340c('0x29')]);if(_0x2e1275[_0x340c('0x2a')]){delete _0x2e1275[_0x340c('0x2a')];}_0x24b501[_0x340c('0x1b')](_0x24a32d)[_0x340c('0x2b')](_0x2e1275);};}exports[_0x340c('0x2c')]=function(_0x3134ba,_0x12fa32){var _0x40184a={},_0x37e161={},_0x556c75={'count':0x0,'rows':[]};var _0x4a1cfb=_['map'](db[_0x340c('0x2d')][_0x340c('0x2e')],function(_0x1e1625){return{'name':_0x1e1625[_0x340c('0x2f')],'type':_0x1e1625[_0x340c('0x30')][_0x340c('0x31')]};});_0x37e161[_0x340c('0x32')]=_['map'](_0x4a1cfb,_0x340c('0x2a'));_0x37e161[_0x340c('0x33')]=_['keys'](_0x3134ba[_0x340c('0x33')]);_0x37e161['filters']=_[_0x340c('0x34')](_0x37e161[_0x340c('0x32')],_0x37e161[_0x340c('0x33')]);_0x40184a[_0x340c('0x35')]=_[_0x340c('0x34')](_0x37e161['model'],qs['fields'](_0x3134ba[_0x340c('0x33')][_0x340c('0x36')]));_0x40184a[_0x340c('0x35')]=_0x40184a[_0x340c('0x35')][_0x340c('0x37')]?_0x40184a[_0x340c('0x35')]:_0x37e161[_0x340c('0x32')];if(!_0x3134ba['query'][_0x340c('0x38')](_0x340c('0x39'))){_0x40184a[_0x340c('0x1e')]=qs[_0x340c('0x1e')](_0x3134ba[_0x340c('0x33')]['limit']);_0x40184a[_0x340c('0x1d')]=qs[_0x340c('0x1d')](_0x3134ba[_0x340c('0x33')]['offset']);}_0x40184a[_0x340c('0x3a')]=qs['sort'](_0x3134ba[_0x340c('0x33')]['sort']);_0x40184a['where']=qs[_0x340c('0x3b')](_['pick'](_0x3134ba[_0x340c('0x33')],_0x37e161[_0x340c('0x3b')]),_0x4a1cfb);if(_0x3134ba['query'][_0x340c('0x3c')]){_0x40184a['where']=_[_0x340c('0x3d')](_0x40184a[_0x340c('0x3e')],{'$or':_['map'](_0x4a1cfb,function(_0xf84443){if(_0xf84443[_0x340c('0x30')]!==_0x340c('0x3f')){var _0x2b4a85={};_0x2b4a85[_0xf84443['name']]={'$like':'%'+_0x3134ba[_0x340c('0x33')]['filter']+'%'};return _0x2b4a85;}})});}_0x40184a=_[_0x340c('0x3d')]({},_0x40184a,_0x3134ba[_0x340c('0x40')]);var _0x250e76={'where':_0x40184a[_0x340c('0x3e')]};return db[_0x340c('0x2d')][_0x340c('0x1f')](_0x250e76)[_0x340c('0x41')](function(_0x30b921){_0x556c75['count']=_0x30b921;if(_0x3134ba[_0x340c('0x33')]['includeAll']){_0x40184a[_0x340c('0x42')]=[{'all':!![]}];}return db[_0x340c('0x2d')][_0x340c('0x43')](_0x40184a);})[_0x340c('0x41')](function(_0x29f22d){_0x556c75['rows']=_0x29f22d;return _0x556c75;})['then'](respondWithFilteredResult(_0x12fa32,_0x40184a))['catch'](handleError(_0x12fa32,null));};exports[_0x340c('0x44')]=function(_0x363308,_0x19875a){var _0x5b4eed={'raw':!![],'where':{'id':_0x363308[_0x340c('0x45')]['id']}},_0x45f15d={};_0x45f15d[_0x340c('0x32')]=_[_0x340c('0x46')](db['ServicenowField'][_0x340c('0x2e')]);_0x45f15d['query']=_['keys'](_0x363308[_0x340c('0x33')]);_0x45f15d[_0x340c('0x3b')]=_[_0x340c('0x34')](_0x45f15d[_0x340c('0x32')],_0x45f15d[_0x340c('0x33')]);_0x5b4eed['attributes']=_['intersection'](_0x45f15d[_0x340c('0x32')],qs[_0x340c('0x36')](_0x363308[_0x340c('0x33')][_0x340c('0x36')]));_0x5b4eed[_0x340c('0x35')]=_0x5b4eed[_0x340c('0x35')][_0x340c('0x37')]?_0x5b4eed[_0x340c('0x35')]:_0x45f15d[_0x340c('0x32')];if(_0x363308[_0x340c('0x33')][_0x340c('0x47')]){_0x5b4eed['include']=[{'all':!![]}];}_0x5b4eed=_[_0x340c('0x3d')]({},_0x5b4eed,_0x363308[_0x340c('0x40')]);return db[_0x340c('0x2d')]['find'](_0x5b4eed)[_0x340c('0x41')](handleEntityNotFound(_0x19875a,null))[_0x340c('0x41')](respondWithResult(_0x19875a,null))[_0x340c('0x48')](handleError(_0x19875a,null));};exports['create']=function(_0x2a3bfa,_0x5d56fb){return db['ServicenowField'][_0x340c('0x49')](_0x2a3bfa[_0x340c('0x4a')],{})['then'](respondWithResult(_0x5d56fb,0xc9))['catch'](handleError(_0x5d56fb,null));};exports[_0x340c('0x25')]=function(_0x4d827c,_0x50de54){if(_0x4d827c[_0x340c('0x4a')]['id']){delete _0x4d827c[_0x340c('0x4a')]['id'];}return db[_0x340c('0x2d')]['find']({'where':{'id':_0x4d827c[_0x340c('0x45')]['id']}})[_0x340c('0x41')](handleEntityNotFound(_0x50de54,null))['then'](saveUpdates(_0x4d827c[_0x340c('0x4a')],null))[_0x340c('0x41')](respondWithResult(_0x50de54,null))[_0x340c('0x48')](handleError(_0x50de54,null));};exports['destroy']=function(_0x18c538,_0x13b920){return db['ServicenowField'][_0x340c('0x4b')]({'where':{'id':_0x18c538['params']['id']}})['then'](handleEntityNotFound(_0x13b920,null))['then'](removeEntity(_0x13b920,null))[_0x340c('0x48')](handleError(_0x13b920,null));};
\ No newline at end of file
index 2557d26..a911671 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0644=['../../config/environment','./intServicenowField.attributes','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x3c8e9a,_0x384306){var _0x2d4c57=function(_0x43d408){while(--_0x43d408){_0x3c8e9a['push'](_0x3c8e9a['shift']());}};_0x2d4c57(++_0x384306);}(_0x0644,0x1c6));var _0x4064=function(_0xc745ce,_0x2eb9a8){_0xc745ce=_0xc745ce-0x0;var _0x36fa8c=_0x0644[_0xc745ce];return _0x36fa8c;};'use strict';var _=require(_0x4064('0x0'));var util=require(_0x4064('0x1'));var logger=require(_0x4064('0x2'))(_0x4064('0x3'));var moment=require('moment');var BPromise=require(_0x4064('0x4'));var rp=require(_0x4064('0x5'));var fs=require('fs');var path=require(_0x4064('0x6'));var rimraf=require(_0x4064('0x7'));var config=require(_0x4064('0x8'));var attributes=require(_0x4064('0x9'));module['exports']=function(_0x55c1b3,_0x4ac019){return _0x55c1b3[_0x4064('0xa')](_0x4064('0xb'),attributes,{'tableName':_0x4064('0xc'),'paranoid':![],'indexes':[{'name':_0x4064('0xd'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x85d8=['exports','ServicenowField','int_servicenow_fields','servicenow_unique_index','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowField.attributes'];(function(_0x31bd65,_0x77e2bc){var _0x164271=function(_0x54acfb){while(--_0x54acfb){_0x31bd65['push'](_0x31bd65['shift']());}};_0x164271(++_0x77e2bc);}(_0x85d8,0x13c));var _0x885d=function(_0x17387b,_0x4ae492){_0x17387b=_0x17387b-0x0;var _0x519ebf=_0x85d8[_0x17387b];return _0x519ebf;};'use strict';var _=require(_0x885d('0x0'));var util=require(_0x885d('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x885d('0x2'));var BPromise=require(_0x885d('0x3'));var rp=require(_0x885d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x885d('0x5'));var config=require(_0x885d('0x6'));var attributes=require(_0x885d('0x7'));module[_0x885d('0x8')]=function(_0x2d5cda,_0x13bbd2){return _0x2d5cda['define'](_0x885d('0x9'),attributes,{'tableName':_0x885d('0xa'),'paranoid':![],'indexes':[{'name':_0x885d('0xb'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2314601..629d242 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['rpc','jayson/promise','client','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger'];(function(_0x2baca1,_0x2f3557){var _0x9aa62a=function(_0x5c47d5){while(--_0x5c47d5){_0x2baca1['push'](_0x2baca1['shift']());}};_0x9aa62a(++_0x2f3557);}(_0xda3f,0xec));var _0xfda3=function(_0x3a66fe,_0x485c1e){_0x3a66fe=_0x3a66fe-0x0;var _0x3c813b=_0xda3f[_0x3a66fe];return _0x3c813b;};'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')]('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('ServicenowField,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}
\ No newline at end of file
+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(_0x3d2a31,_0x1b576f){var _0x1bcb1a=function(_0x3601fb){while(--_0x3601fb){_0x3d2a31['push'](_0x3d2a31['shift']());}};_0x1bcb1a(++_0x1b576f);}(_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 e54327f..dd2815c 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(_0x4c8836,_0x18a813){var _0x2b6689=function(_0x3831e3){while(--_0x3831e3){_0x4c8836['push'](_0x4c8836['shift']());}};_0x2b6689(++_0x18a813);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+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(_0x11e8d7,_0x92a74e){var _0x344c3a=function(_0x3c6964){while(--_0x3c6964){_0x11e8d7['push'](_0x11e8d7['shift']());}};_0x344c3a(++_0x92a74e);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 2571f4f..f15d598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x33b3ff,_0x2f9cd8){var _0x40e451=function(_0x2ddbc9){while(--_0x2ddbc9){_0x33b3ff['push'](_0x33b3ff['shift']());}};_0x40e451(++_0x2f9cd8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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(_0x11c638,_0xca59a6){var _0x301cd3=function(_0x369e22){while(--_0x369e22){_0x11c638['push'](_0x11c638['shift']());}};_0x301cd3(++_0xca59a6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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 3e3c5ed..a5ee03e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07af=['lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','destroy','then','error','stack','name','index','map','SugarcrmAccount','rawAttributes','type','key','model','query','filters','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','intersection','find','create','body','SugarcrmConfiguration','getConfigurations','hasOwnProperty','findOne','AccountId','Subjects','getSubjects','Descriptions','channel','SugarcrmField','assigned_user_id','created_by','date_start','duration_hours','duration_minutes','parent_id','parent_type','username','password','remoteUri','slice','substring','lastIndexOf','format','%s%s','login','stringify','PLAIN','Invalid\x20Login','Password\x20Expired','POST','/service/v4_1/rest.php','get_module_fields','JSON','Calls','values','remove','includes','label','endsWith','test','statusCode','send','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs'];(function(_0xe5acd3,_0xa15c46){var _0x47a60d=function(_0x73c5ee){while(--_0x73c5ee){_0xe5acd3['push'](_0xe5acd3['shift']());}};_0x47a60d(++_0xa15c46);}(_0x07af,0x1ba));var _0xf07a=function(_0x476533,_0x111950){_0x476533=_0x476533-0x0;var _0x35f782=_0x07af[_0x476533];return _0x35f782;};'use strict';var emlformat=require(_0xf07a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf07a('0x1'));var jsonpatch=require(_0xf07a('0x2'));var rp=require(_0xf07a('0x3'));var moment=require(_0xf07a('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf07a('0x5'));var path=require(_0xf07a('0x6'));var sox=require(_0xf07a('0x7'));var csv=require(_0xf07a('0x8'));var ejs=require(_0xf07a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf07a('0xa'));var squel=require('squel');var crypto=require(_0xf07a('0xb'));var jsforce=require(_0xf07a('0xc'));var deskjs=require(_0xf07a('0xd'));var toCsv=require(_0xf07a('0x8'));var querystring=require(_0xf07a('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xf07a('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf07a('0x10'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xf07a('0x11'));var licenseUtil=require(_0xf07a('0x12'));var db=require(_0xf07a('0x13'))['db'];var integrations=require(_0xf07a('0x14'));function respondWithStatusCode(_0x2e5c1f,_0x3ca3e6){_0x3ca3e6=_0x3ca3e6||0xcc;return function(_0x4b57a8){if(_0x4b57a8){return _0x2e5c1f[_0xf07a('0x15')](_0x3ca3e6);}return _0x2e5c1f[_0xf07a('0x16')](_0x3ca3e6)[_0xf07a('0x17')]();};}function respondWithResult(_0x213f81,_0x5e7686){_0x5e7686=_0x5e7686||0xc8;return function(_0x337c71){if(_0x337c71){return _0x213f81[_0xf07a('0x16')](_0x5e7686)[_0xf07a('0x18')](_0x337c71);}};}function respondWithFilteredResult(_0x5910e2,_0x4c7342){return function(_0xd89ace){if(_0xd89ace){var _0x4ad26d=typeof _0x4c7342[_0xf07a('0x19')]===_0xf07a('0x1a')&&typeof _0x4c7342[_0xf07a('0x1b')]===_0xf07a('0x1a');var _0x5bb03c=_0xd89ace['count'];var _0x42f08=_0x4ad26d?0x0:_0x4c7342[_0xf07a('0x19')];var _0x9e1e6b=_0x4ad26d?_0xd89ace[_0xf07a('0x1c')]:_0x4c7342[_0xf07a('0x19')]+_0x4c7342[_0xf07a('0x1b')];var _0x7a791;if(_0x9e1e6b>=_0x5bb03c){_0x9e1e6b=_0x5bb03c;_0x7a791=0xc8;}else{_0x7a791=0xce;}_0x5910e2[_0xf07a('0x16')](_0x7a791);return _0x5910e2[_0xf07a('0x1d')](_0xf07a('0x1e'),_0x42f08+'-'+_0x9e1e6b+'/'+_0x5bb03c)[_0xf07a('0x18')](_0xd89ace);}return null;};}function patchUpdates(_0x8aa408){return function(_0x48d1ce){try{jsonpatch['apply'](_0x48d1ce,_0x8aa408,!![]);}catch(_0x4f1284){return BPromise[_0xf07a('0x1f')](_0x4f1284);}return _0x48d1ce['save']();};}function saveUpdates(_0x41ecce,_0x2029c0){return function(_0x34f7da){if(_0x34f7da){return _0x34f7da['update'](_0x41ecce)['then'](function(_0x122f45){return _0x122f45;});}return null;};}function removeEntity(_0x5729dd,_0x598567){return function(_0x107db0){if(_0x107db0){return _0x107db0[_0xf07a('0x20')]()[_0xf07a('0x21')](function(){_0x5729dd[_0xf07a('0x16')](0xcc)[_0xf07a('0x17')]();});}};}function handleEntityNotFound(_0x4332d6,_0x345cb7){return function(_0x2ad6dc){if(!_0x2ad6dc){_0x4332d6['sendStatus'](0x194);}return _0x2ad6dc;};}function handleError(_0x547dba,_0x1af516){_0x1af516=_0x1af516||0x1f4;return function(_0x13d4f0){logger[_0xf07a('0x22')](_0x13d4f0[_0xf07a('0x23')]);if(_0x13d4f0[_0xf07a('0x24')]){delete _0x13d4f0[_0xf07a('0x24')];}_0x547dba[_0xf07a('0x16')](_0x1af516)['send'](_0x13d4f0);};}exports[_0xf07a('0x25')]=function(_0x5af4d3,_0x2c2609){var _0x18e3fc={},_0x41ba2a={},_0x121049={'count':0x0,'rows':[]};var _0x1ec43f=_[_0xf07a('0x26')](db[_0xf07a('0x27')][_0xf07a('0x28')],function(_0x18d081){return{'name':_0x18d081['fieldName'],'type':_0x18d081[_0xf07a('0x29')][_0xf07a('0x2a')]};});_0x41ba2a[_0xf07a('0x2b')]=_[_0xf07a('0x26')](_0x1ec43f,'name');_0x41ba2a[_0xf07a('0x2c')]=_['keys'](_0x5af4d3[_0xf07a('0x2c')]);_0x41ba2a[_0xf07a('0x2d')]=_['intersection'](_0x41ba2a['model'],_0x41ba2a[_0xf07a('0x2c')]);_0x18e3fc[_0xf07a('0x2e')]=_['intersection'](_0x41ba2a['model'],qs[_0xf07a('0x2f')](_0x5af4d3['query']['fields']));_0x18e3fc[_0xf07a('0x2e')]=_0x18e3fc[_0xf07a('0x2e')][_0xf07a('0x30')]?_0x18e3fc[_0xf07a('0x2e')]:_0x41ba2a[_0xf07a('0x2b')];if(!_0x5af4d3[_0xf07a('0x2c')]['hasOwnProperty'](_0xf07a('0x31'))){_0x18e3fc[_0xf07a('0x1b')]=qs[_0xf07a('0x1b')](_0x5af4d3[_0xf07a('0x2c')][_0xf07a('0x1b')]);_0x18e3fc[_0xf07a('0x19')]=qs[_0xf07a('0x19')](_0x5af4d3[_0xf07a('0x2c')]['offset']);}_0x18e3fc[_0xf07a('0x32')]=qs[_0xf07a('0x33')](_0x5af4d3[_0xf07a('0x2c')][_0xf07a('0x33')]);_0x18e3fc[_0xf07a('0x34')]=qs[_0xf07a('0x2d')](_[_0xf07a('0x35')](_0x5af4d3[_0xf07a('0x2c')],_0x41ba2a['filters']),_0x1ec43f);if(_0x5af4d3[_0xf07a('0x2c')][_0xf07a('0x36')]){_0x18e3fc[_0xf07a('0x34')]=_[_0xf07a('0x37')](_0x18e3fc[_0xf07a('0x34')],{'$or':_['map'](_0x1ec43f,function(_0x2702a7){if(_0x2702a7[_0xf07a('0x29')]!==_0xf07a('0x38')){var _0x54bd0f={};_0x54bd0f[_0x2702a7['name']]={'$like':'%'+_0x5af4d3[_0xf07a('0x2c')]['filter']+'%'};return _0x54bd0f;}})});}_0x18e3fc=_[_0xf07a('0x37')]({},_0x18e3fc,_0x5af4d3[_0xf07a('0x39')]);var _0x12d7fb={'where':_0x18e3fc[_0xf07a('0x34')]};return db[_0xf07a('0x27')][_0xf07a('0x1c')](_0x12d7fb)[_0xf07a('0x21')](function(_0x4ca85b){_0x121049['count']=_0x4ca85b;if(_0x5af4d3[_0xf07a('0x2c')][_0xf07a('0x3a')]){_0x18e3fc[_0xf07a('0x3b')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0xf07a('0x3c')](_0x18e3fc);})[_0xf07a('0x21')](function(_0x3420d1){_0x121049['rows']=_0x3420d1;return _0x121049;})[_0xf07a('0x21')](respondWithFilteredResult(_0x2c2609,_0x18e3fc))[_0xf07a('0x3d')](handleError(_0x2c2609,null));};exports[_0xf07a('0x3e')]=function(_0x47afbe,_0x225123){var _0x379176={'raw':![],'where':{'id':_0x47afbe[_0xf07a('0x3f')]['id']}},_0x5f5637={};_0x5f5637[_0xf07a('0x2b')]=_[_0xf07a('0x40')](db[_0xf07a('0x27')][_0xf07a('0x28')]);_0x5f5637['query']=_[_0xf07a('0x40')](_0x47afbe[_0xf07a('0x2c')]);_0x5f5637[_0xf07a('0x2d')]=_[_0xf07a('0x41')](_0x5f5637['model'],_0x5f5637[_0xf07a('0x2c')]);_0x379176[_0xf07a('0x2e')]=_[_0xf07a('0x41')](_0x5f5637[_0xf07a('0x2b')],qs[_0xf07a('0x2f')](_0x47afbe['query'][_0xf07a('0x2f')]));_0x379176[_0xf07a('0x2e')]=_0x379176[_0xf07a('0x2e')][_0xf07a('0x30')]?_0x379176[_0xf07a('0x2e')]:_0x5f5637[_0xf07a('0x2b')];if(_0x47afbe[_0xf07a('0x2c')]['includeAll']){_0x379176[_0xf07a('0x3b')]=[{'all':!![]}];}_0x379176=_['merge']({},_0x379176,_0x47afbe['options']);return db['SugarcrmAccount'][_0xf07a('0x42')](_0x379176)[_0xf07a('0x21')](handleEntityNotFound(_0x225123,null))['then'](respondWithResult(_0x225123,null))[_0xf07a('0x3d')](handleError(_0x225123,null));};exports['create']=function(_0x5e17fb,_0x2bc328){return db[_0xf07a('0x27')][_0xf07a('0x43')](_0x5e17fb[_0xf07a('0x44')],{})[_0xf07a('0x21')](respondWithResult(_0x2bc328,0xc9))['catch'](handleError(_0x2bc328,null));};exports['update']=function(_0x537dd1,_0x5bb36b){if(_0x537dd1[_0xf07a('0x44')]['id']){delete _0x537dd1[_0xf07a('0x44')]['id'];}return db[_0xf07a('0x27')][_0xf07a('0x42')]({'where':{'id':_0x537dd1[_0xf07a('0x3f')]['id']}})[_0xf07a('0x21')](handleEntityNotFound(_0x5bb36b,null))[_0xf07a('0x21')](saveUpdates(_0x537dd1[_0xf07a('0x44')],null))[_0xf07a('0x21')](respondWithResult(_0x5bb36b,null))[_0xf07a('0x3d')](handleError(_0x5bb36b,null));};exports['destroy']=function(_0x3ab1bb,_0xed0659){return db[_0xf07a('0x27')]['find']({'where':{'id':_0x3ab1bb[_0xf07a('0x3f')]['id']}})[_0xf07a('0x21')](handleEntityNotFound(_0xed0659,null))[_0xf07a('0x21')](removeEntity(_0xed0659,null))[_0xf07a('0x3d')](handleError(_0xed0659,null));};exports['getConfigurations']=function(_0x43fa43,_0x534cc6,_0x3e556a){var _0x3b4cba={};var _0x392b79={};var _0x20b385;var _0x919798;return db[_0xf07a('0x27')]['findOne']({'where':{'id':_0x43fa43['params']['id']}})[_0xf07a('0x21')](handleEntityNotFound(_0x534cc6,null))[_0xf07a('0x21')](function(_0x2350a5){if(_0x2350a5){_0x20b385=_0x2350a5;_0x392b79[_0xf07a('0x2b')]=_[_0xf07a('0x40')](db[_0xf07a('0x45')][_0xf07a('0x28')]);_0x392b79[_0xf07a('0x2c')]=_[_0xf07a('0x40')](_0x43fa43[_0xf07a('0x2c')]);_0x392b79[_0xf07a('0x2d')]=_['intersection'](_0x392b79['model'],_0x392b79[_0xf07a('0x2c')]);_0x3b4cba[_0xf07a('0x2e')]=_[_0xf07a('0x41')](_0x392b79[_0xf07a('0x2b')],qs[_0xf07a('0x2f')](_0x43fa43[_0xf07a('0x2c')][_0xf07a('0x2f')]));_0x3b4cba[_0xf07a('0x2e')]=_0x3b4cba[_0xf07a('0x2e')][_0xf07a('0x30')]?_0x3b4cba[_0xf07a('0x2e')]:_0x392b79[_0xf07a('0x2b')];_0x3b4cba['order']=qs['sort'](_0x43fa43[_0xf07a('0x2c')][_0xf07a('0x33')]);_0x3b4cba[_0xf07a('0x34')]=qs[_0xf07a('0x2d')](_['pick'](_0x43fa43[_0xf07a('0x2c')],_0x392b79[_0xf07a('0x2d')]));if(_0x43fa43[_0xf07a('0x2c')][_0xf07a('0x36')]){_0x3b4cba[_0xf07a('0x34')]=_['merge'](_0x3b4cba[_0xf07a('0x34')],{'$or':_['map'](_0x3b4cba['attributes'],function(_0x12c2db){var _0x40edb0={};_0x40edb0[_0x12c2db]={'$like':'%'+_0x43fa43[_0xf07a('0x2c')][_0xf07a('0x36')]+'%'};return _0x40edb0;})});}_0x3b4cba=_[_0xf07a('0x37')]({},_0x3b4cba,_0x43fa43[_0xf07a('0x39')]);return _0x20b385[_0xf07a('0x46')](_0x3b4cba);}})[_0xf07a('0x21')](function(_0x17c6e7){if(_0x17c6e7){_0x919798=_0x17c6e7['length'];if(!_0x43fa43[_0xf07a('0x2c')][_0xf07a('0x47')]('nolimit')){_0x3b4cba[_0xf07a('0x1b')]=qs[_0xf07a('0x1b')](_0x43fa43[_0xf07a('0x2c')][_0xf07a('0x1b')]);_0x3b4cba[_0xf07a('0x19')]=qs[_0xf07a('0x19')](_0x43fa43[_0xf07a('0x2c')][_0xf07a('0x19')]);}return _0x20b385[_0xf07a('0x46')](_0x3b4cba);}})[_0xf07a('0x21')](function(_0x44e42e){if(_0x44e42e){return _0x44e42e?{'count':_0x919798,'rows':_0x44e42e}:null;}})[_0xf07a('0x21')](respondWithResult(_0x534cc6,null))[_0xf07a('0x3d')](handleError(_0x534cc6,null));};exports['addConfiguration']=function(_0x58bd59,_0x4a2eff,_0x3ca20f){if(_0x58bd59[_0xf07a('0x44')]['id']){delete _0x58bd59['body']['id'];}return db[_0xf07a('0x27')][_0xf07a('0x48')]({'where':{'id':_0x58bd59[_0xf07a('0x3f')]['id']}})['then'](handleEntityNotFound(_0x4a2eff,null))['then'](function(_0x2b2078){if(_0x2b2078){_0x58bd59[_0xf07a('0x44')][_0xf07a('0x49')]=_0x2b2078['id'];_0x58bd59[_0xf07a('0x44')][_0xf07a('0x4a')]=integrations[_0xf07a('0x4b')](_0x58bd59[_0xf07a('0x44')]['channel'],_0x58bd59['body'][_0xf07a('0x29')]);_0x58bd59['body'][_0xf07a('0x4c')]=integrations['getDescriptions'](_0x58bd59[_0xf07a('0x44')][_0xf07a('0x4d')],_0x58bd59[_0xf07a('0x44')][_0xf07a('0x29')]);return db[_0xf07a('0x45')]['create'](_0x58bd59[_0xf07a('0x44')],{'include':[{'model':db['SugarcrmField'],'as':_0xf07a('0x4a')},{'model':db[_0xf07a('0x4e')],'as':_0xf07a('0x4c')}]});}return null;})[_0xf07a('0x21')](respondWithResult(_0x4a2eff,null))['catch'](handleError(_0x4a2eff,null));};exports['getFields']=function(_0x34f39d,_0x4886fc,_0x3b472){var _0x310a13='';var _0xaf4677=['id','name',_0xf07a('0x4f'),_0xf07a('0x50'),'description',_0xf07a('0x51'),_0xf07a('0x52'),_0xf07a('0x53'),_0xf07a('0x54'),_0xf07a('0x55'),'parent_name','direction'];return db[_0xf07a('0x27')][_0xf07a('0x48')]({'where':{'id':_0x34f39d[_0xf07a('0x3f')]['id']},'attributes':['id',_0xf07a('0x56'),_0xf07a('0x57'),_0xf07a('0x58')]})[_0xf07a('0x21')](handleEntityNotFound(_0x4886fc,null))[_0xf07a('0x21')](function(_0x5c107d){if(_0x5c107d){_0x310a13=_0x5c107d[_0xf07a('0x58')];var _0x52d4a2=_0x310a13[_0xf07a('0x59')](-0x1);if(_0x52d4a2==='/'){_0x310a13=_0x310a13[_0xf07a('0x5a')](0x0,_0x310a13[_0xf07a('0x5b')](_0x52d4a2));}return rp({'method':'POST','uri':util[_0xf07a('0x5c')](_0xf07a('0x5d'),_0x310a13,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xf07a('0x5e'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xf07a('0x5f')]({'user_auth':{'user_name':_0x5c107d[_0xf07a('0x56')],'password':_0x5c107d[_0xf07a('0x57')],'encryption':_0xf07a('0x60')},'application':'xCALLY\x20Motion\x20Integration'})}});}})['then'](function(_0x238fa5){if(_0x238fa5&&_0x238fa5[_0xf07a('0x24')]!==_0xf07a('0x61')&&_0x238fa5['name']!==_0xf07a('0x62')){return rp({'method':_0xf07a('0x63'),'uri':util[_0xf07a('0x5c')](_0xf07a('0x5d'),_0x310a13,_0xf07a('0x64')),'json':!![],'form':{'method':_0xf07a('0x65'),'input_type':_0xf07a('0x66'),'response_type':_0xf07a('0x66'),'rest_data':JSON[_0xf07a('0x5f')]({'session':_0x238fa5['id'],'module_name':_0xf07a('0x67')})}})['then'](function(_0x2a5942){if(_0x2a5942){var _0x195cb5=_[_0xf07a('0x68')](_0x2a5942['module_fields']);_[_0xf07a('0x69')](_0x195cb5,function(_0x3129c7){return _0xaf4677[_0xf07a('0x6a')](_0x3129c7[_0xf07a('0x24')]);});return{'count':_0x195cb5['length'],'rows':_[_0xf07a('0x26')](_0x195cb5,function(_0x2cac2e){return{'id':_0x2cac2e[_0xf07a('0x24')],'name':_0x2cac2e[_0xf07a('0x6b')],'custom':_[_0xf07a('0x6c')](_0x2cac2e[_0xf07a('0x24')],'_c')?!![]:![],'options':_0x2cac2e[_0xf07a('0x39')]?_[_0xf07a('0x26')](_[_0xf07a('0x68')](_0x2cac2e[_0xf07a('0x39')]),function(_0x102c0e){return{'name':_0x102c0e['value'],'value':_0x102c0e[_0xf07a('0x24')]};}):[]};})};}})[_0xf07a('0x21')](respondWithResult(_0x4886fc,null))['catch'](function(_0x39ea9e){var _0x4189de=_0x34f39d[_0xf07a('0x2c')][_0xf07a('0x6d')]?0x1f4:_0x39ea9e[_0xf07a('0x6e')]||0x1f4;logger[_0xf07a('0x22')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x4189de,JSON[_0xf07a('0x5f')](_0x39ea9e));delete _0x39ea9e[_0xf07a('0x24')];if(_0x4189de===0x191){_0x4189de=0x190;}_0x4886fc[_0xf07a('0x16')](_0x4189de)[_0xf07a('0x6f')](_0x34f39d['query'][_0xf07a('0x6d')]?{'message':'Wrong\x20credentials','statusCode':_0x39ea9e['statusCode']}:_0x39ea9e);});}else{var _0x1e92eb=0x1f4;_0x4886fc[_0xf07a('0x16')](_0x1e92eb)[_0xf07a('0x6f')]({'message':_0xf07a('0x70'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xb35a=['crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','end','error','stack','name','send','map','SugarcrmAccount','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','update','getConfigurations','findOne','SugarcrmConfiguration','AccountId','Subjects','getSubjects','Descriptions','channel','SugarcrmField','getFields','assigned_user_id','created_by','date_start','duration_minutes','parent_id','parent_type','parent_name','direction','username','password','remoteUri','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','JSON','stringify','xCALLY\x20Motion\x20Integration','Password\x20Expired','Calls','values','module_fields','remove','includes','endsWith','value','test','statusCode','Wrong\x20credentials','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0xb35a,0x1d7));var _0xab35=function(_0x19ac6d,_0x3fe806){_0x19ac6d=_0x19ac6d-0x0;var _0x11a628=_0xb35a[_0x19ac6d];return _0x11a628;};'use strict';var emlformat=require(_0xab35('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xab35('0x1'));var rp=require('request-promise');var moment=require(_0xab35('0x2'));var BPromise=require(_0xab35('0x3'));var Mustache=require(_0xab35('0x4'));var util=require(_0xab35('0x5'));var path=require(_0xab35('0x6'));var sox=require(_0xab35('0x7'));var csv=require(_0xab35('0x8'));var ejs=require(_0xab35('0x9'));var fs=require('fs');var fs_extra=require(_0xab35('0xa'));var _=require(_0xab35('0xb'));var squel=require(_0xab35('0xc'));var crypto=require(_0xab35('0xd'));var jsforce=require(_0xab35('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xab35('0xf'));var Papa=require(_0xab35('0x10'));var Redis=require(_0xab35('0x11'));var authService=require(_0xab35('0x12'));var qs=require(_0xab35('0x13'));var as=require(_0xab35('0x14'));var hardwareService=require(_0xab35('0x15'));var logger=require(_0xab35('0x16'))(_0xab35('0x17'));var utils=require(_0xab35('0x18'));var config=require(_0xab35('0x19'));var licenseUtil=require(_0xab35('0x1a'));var db=require(_0xab35('0x1b'))['db'];var integrations=require(_0xab35('0x1c'));function respondWithStatusCode(_0x1d994f,_0x1f74d2){_0x1f74d2=_0x1f74d2||0xcc;return function(_0x354ef5){if(_0x354ef5){return _0x1d994f['sendStatus'](_0x1f74d2);}return _0x1d994f['status'](_0x1f74d2)['end']();};}function respondWithResult(_0x389621,_0x2990eb){_0x2990eb=_0x2990eb||0xc8;return function(_0x51b143){if(_0x51b143){return _0x389621[_0xab35('0x1d')](_0x2990eb)[_0xab35('0x1e')](_0x51b143);}};}function respondWithFilteredResult(_0x580e3b,_0x23a40f){return function(_0x54de24){if(_0x54de24){var _0x6705=typeof _0x23a40f[_0xab35('0x1f')]===_0xab35('0x20')&&typeof _0x23a40f[_0xab35('0x21')]===_0xab35('0x20');var _0x2e69c9=_0x54de24[_0xab35('0x22')];var _0x3ae42c=_0x6705?0x0:_0x23a40f[_0xab35('0x1f')];var _0x55ea92=_0x6705?_0x54de24[_0xab35('0x22')]:_0x23a40f[_0xab35('0x1f')]+_0x23a40f[_0xab35('0x21')];var _0x14c98f;if(_0x55ea92>=_0x2e69c9){_0x55ea92=_0x2e69c9;_0x14c98f=0xc8;}else{_0x14c98f=0xce;}_0x580e3b[_0xab35('0x1d')](_0x14c98f);return _0x580e3b[_0xab35('0x23')]('Content-Range',_0x3ae42c+'-'+_0x55ea92+'/'+_0x2e69c9)[_0xab35('0x1e')](_0x54de24);}return null;};}function patchUpdates(_0x86a012){return function(_0x2159d7){try{jsonpatch[_0xab35('0x24')](_0x2159d7,_0x86a012,!![]);}catch(_0x24ffa4){return BPromise[_0xab35('0x25')](_0x24ffa4);}return _0x2159d7[_0xab35('0x26')]();};}function saveUpdates(_0x56b9b1,_0x15d9cf){return function(_0x575e68){if(_0x575e68){return _0x575e68['update'](_0x56b9b1)['then'](function(_0x4b74d2){return _0x4b74d2;});}return null;};}function removeEntity(_0x46b47f,_0x3663de){return function(_0x52ace4){if(_0x52ace4){return _0x52ace4[_0xab35('0x27')]()[_0xab35('0x28')](function(){_0x46b47f[_0xab35('0x1d')](0xcc)[_0xab35('0x29')]();});}};}function handleEntityNotFound(_0x19ccc6,_0x272ebf){return function(_0x322192){if(!_0x322192){_0x19ccc6['sendStatus'](0x194);}return _0x322192;};}function handleError(_0x28ddc5,_0x5305a4){_0x5305a4=_0x5305a4||0x1f4;return function(_0x51dbd5){logger[_0xab35('0x2a')](_0x51dbd5[_0xab35('0x2b')]);if(_0x51dbd5['name']){delete _0x51dbd5[_0xab35('0x2c')];}_0x28ddc5[_0xab35('0x1d')](_0x5305a4)[_0xab35('0x2d')](_0x51dbd5);};}exports['index']=function(_0x42dff7,_0x48d0d1){var _0x1254f5={},_0x229b77={},_0xe3c060={'count':0x0,'rows':[]};var _0x363357=_[_0xab35('0x2e')](db[_0xab35('0x2f')]['rawAttributes'],function(_0x483e67){return{'name':_0x483e67[_0xab35('0x30')],'type':_0x483e67[_0xab35('0x31')][_0xab35('0x32')]};});_0x229b77[_0xab35('0x33')]=_[_0xab35('0x2e')](_0x363357,_0xab35('0x2c'));_0x229b77[_0xab35('0x34')]=_[_0xab35('0x35')](_0x42dff7[_0xab35('0x34')]);_0x229b77['filters']=_[_0xab35('0x36')](_0x229b77[_0xab35('0x33')],_0x229b77['query']);_0x1254f5[_0xab35('0x37')]=_[_0xab35('0x36')](_0x229b77[_0xab35('0x33')],qs[_0xab35('0x38')](_0x42dff7['query'][_0xab35('0x38')]));_0x1254f5[_0xab35('0x37')]=_0x1254f5[_0xab35('0x37')][_0xab35('0x39')]?_0x1254f5['attributes']:_0x229b77[_0xab35('0x33')];if(!_0x42dff7['query'][_0xab35('0x3a')](_0xab35('0x3b'))){_0x1254f5[_0xab35('0x21')]=qs[_0xab35('0x21')](_0x42dff7[_0xab35('0x34')][_0xab35('0x21')]);_0x1254f5['offset']=qs[_0xab35('0x1f')](_0x42dff7[_0xab35('0x34')]['offset']);}_0x1254f5[_0xab35('0x3c')]=qs['sort'](_0x42dff7[_0xab35('0x34')][_0xab35('0x3d')]);_0x1254f5['where']=qs[_0xab35('0x3e')](_[_0xab35('0x3f')](_0x42dff7[_0xab35('0x34')],_0x229b77[_0xab35('0x3e')]),_0x363357);if(_0x42dff7[_0xab35('0x34')][_0xab35('0x40')]){_0x1254f5[_0xab35('0x41')]=_[_0xab35('0x42')](_0x1254f5[_0xab35('0x41')],{'$or':_[_0xab35('0x2e')](_0x363357,function(_0x46b5f2){if(_0x46b5f2['type']!=='VIRTUAL'){var _0x132372={};_0x132372[_0x46b5f2['name']]={'$like':'%'+_0x42dff7[_0xab35('0x34')][_0xab35('0x40')]+'%'};return _0x132372;}})});}_0x1254f5=_[_0xab35('0x42')]({},_0x1254f5,_0x42dff7[_0xab35('0x43')]);var _0x369152={'where':_0x1254f5['where']};return db[_0xab35('0x2f')][_0xab35('0x22')](_0x369152)['then'](function(_0x9bd658){_0xe3c060['count']=_0x9bd658;if(_0x42dff7[_0xab35('0x34')][_0xab35('0x44')]){_0x1254f5[_0xab35('0x45')]=[{'all':!![]}];}return db[_0xab35('0x2f')][_0xab35('0x46')](_0x1254f5);})['then'](function(_0x3d7bad){_0xe3c060[_0xab35('0x47')]=_0x3d7bad;return _0xe3c060;})[_0xab35('0x28')](respondWithFilteredResult(_0x48d0d1,_0x1254f5))[_0xab35('0x48')](handleError(_0x48d0d1,null));};exports[_0xab35('0x49')]=function(_0x3e6628,_0x3afab3){var _0x322a22={'raw':![],'where':{'id':_0x3e6628[_0xab35('0x4a')]['id']}},_0x3052fc={};_0x3052fc['model']=_[_0xab35('0x35')](db[_0xab35('0x2f')][_0xab35('0x4b')]);_0x3052fc[_0xab35('0x34')]=_[_0xab35('0x35')](_0x3e6628['query']);_0x3052fc[_0xab35('0x3e')]=_[_0xab35('0x36')](_0x3052fc[_0xab35('0x33')],_0x3052fc['query']);_0x322a22[_0xab35('0x37')]=_['intersection'](_0x3052fc[_0xab35('0x33')],qs[_0xab35('0x38')](_0x3e6628[_0xab35('0x34')]['fields']));_0x322a22[_0xab35('0x37')]=_0x322a22[_0xab35('0x37')][_0xab35('0x39')]?_0x322a22[_0xab35('0x37')]:_0x3052fc[_0xab35('0x33')];if(_0x3e6628[_0xab35('0x34')][_0xab35('0x44')]){_0x322a22[_0xab35('0x45')]=[{'all':!![]}];}_0x322a22=_[_0xab35('0x42')]({},_0x322a22,_0x3e6628[_0xab35('0x43')]);return db[_0xab35('0x2f')][_0xab35('0x4c')](_0x322a22)['then'](handleEntityNotFound(_0x3afab3,null))[_0xab35('0x28')](respondWithResult(_0x3afab3,null))['catch'](handleError(_0x3afab3,null));};exports[_0xab35('0x4d')]=function(_0x11cafe,_0x21a95f){return db[_0xab35('0x2f')][_0xab35('0x4d')](_0x11cafe[_0xab35('0x4e')],{})[_0xab35('0x28')](respondWithResult(_0x21a95f,0xc9))[_0xab35('0x48')](handleError(_0x21a95f,null));};exports[_0xab35('0x4f')]=function(_0x496dd7,_0x36a268){if(_0x496dd7[_0xab35('0x4e')]['id']){delete _0x496dd7[_0xab35('0x4e')]['id'];}return db[_0xab35('0x2f')][_0xab35('0x4c')]({'where':{'id':_0x496dd7[_0xab35('0x4a')]['id']}})[_0xab35('0x28')](handleEntityNotFound(_0x36a268,null))[_0xab35('0x28')](saveUpdates(_0x496dd7[_0xab35('0x4e')],null))[_0xab35('0x28')](respondWithResult(_0x36a268,null))[_0xab35('0x48')](handleError(_0x36a268,null));};exports[_0xab35('0x27')]=function(_0x44dbe7,_0x3fbb39){return db[_0xab35('0x2f')][_0xab35('0x4c')]({'where':{'id':_0x44dbe7[_0xab35('0x4a')]['id']}})[_0xab35('0x28')](handleEntityNotFound(_0x3fbb39,null))[_0xab35('0x28')](removeEntity(_0x3fbb39,null))['catch'](handleError(_0x3fbb39,null));};exports[_0xab35('0x50')]=function(_0x5cfc59,_0x504717,_0x574c0d){var _0x4b76f4={};var _0x56f2cb={};var _0x13a826;var _0x45faae;return db[_0xab35('0x2f')][_0xab35('0x51')]({'where':{'id':_0x5cfc59[_0xab35('0x4a')]['id']}})[_0xab35('0x28')](handleEntityNotFound(_0x504717,null))['then'](function(_0x3e944a){if(_0x3e944a){_0x13a826=_0x3e944a;_0x56f2cb[_0xab35('0x33')]=_[_0xab35('0x35')](db[_0xab35('0x52')][_0xab35('0x4b')]);_0x56f2cb[_0xab35('0x34')]=_[_0xab35('0x35')](_0x5cfc59[_0xab35('0x34')]);_0x56f2cb['filters']=_[_0xab35('0x36')](_0x56f2cb[_0xab35('0x33')],_0x56f2cb[_0xab35('0x34')]);_0x4b76f4['attributes']=_[_0xab35('0x36')](_0x56f2cb[_0xab35('0x33')],qs[_0xab35('0x38')](_0x5cfc59['query']['fields']));_0x4b76f4[_0xab35('0x37')]=_0x4b76f4[_0xab35('0x37')][_0xab35('0x39')]?_0x4b76f4[_0xab35('0x37')]:_0x56f2cb['model'];_0x4b76f4[_0xab35('0x3c')]=qs[_0xab35('0x3d')](_0x5cfc59['query']['sort']);_0x4b76f4[_0xab35('0x41')]=qs[_0xab35('0x3e')](_[_0xab35('0x3f')](_0x5cfc59[_0xab35('0x34')],_0x56f2cb[_0xab35('0x3e')]));if(_0x5cfc59[_0xab35('0x34')][_0xab35('0x40')]){_0x4b76f4[_0xab35('0x41')]=_[_0xab35('0x42')](_0x4b76f4['where'],{'$or':_[_0xab35('0x2e')](_0x4b76f4[_0xab35('0x37')],function(_0xd8dd31){var _0x3e0773={};_0x3e0773[_0xd8dd31]={'$like':'%'+_0x5cfc59[_0xab35('0x34')][_0xab35('0x40')]+'%'};return _0x3e0773;})});}_0x4b76f4=_[_0xab35('0x42')]({},_0x4b76f4,_0x5cfc59['options']);return _0x13a826[_0xab35('0x50')](_0x4b76f4);}})['then'](function(_0x76ad63){if(_0x76ad63){_0x45faae=_0x76ad63[_0xab35('0x39')];if(!_0x5cfc59[_0xab35('0x34')][_0xab35('0x3a')]('nolimit')){_0x4b76f4[_0xab35('0x21')]=qs[_0xab35('0x21')](_0x5cfc59[_0xab35('0x34')]['limit']);_0x4b76f4[_0xab35('0x1f')]=qs[_0xab35('0x1f')](_0x5cfc59[_0xab35('0x34')]['offset']);}return _0x13a826[_0xab35('0x50')](_0x4b76f4);}})[_0xab35('0x28')](function(_0x1a37e2){if(_0x1a37e2){return _0x1a37e2?{'count':_0x45faae,'rows':_0x1a37e2}:null;}})['then'](respondWithResult(_0x504717,null))['catch'](handleError(_0x504717,null));};exports['addConfiguration']=function(_0x2ebb8e,_0xcb10a9,_0x3b19ac){if(_0x2ebb8e[_0xab35('0x4e')]['id']){delete _0x2ebb8e[_0xab35('0x4e')]['id'];}return db[_0xab35('0x2f')][_0xab35('0x51')]({'where':{'id':_0x2ebb8e[_0xab35('0x4a')]['id']}})['then'](handleEntityNotFound(_0xcb10a9,null))[_0xab35('0x28')](function(_0x53da29){if(_0x53da29){_0x2ebb8e[_0xab35('0x4e')][_0xab35('0x53')]=_0x53da29['id'];_0x2ebb8e[_0xab35('0x4e')][_0xab35('0x54')]=integrations[_0xab35('0x55')](_0x2ebb8e[_0xab35('0x4e')]['channel'],_0x2ebb8e[_0xab35('0x4e')][_0xab35('0x31')]);_0x2ebb8e[_0xab35('0x4e')][_0xab35('0x56')]=integrations['getDescriptions'](_0x2ebb8e[_0xab35('0x4e')][_0xab35('0x57')],_0x2ebb8e['body'][_0xab35('0x31')]);return db[_0xab35('0x52')]['create'](_0x2ebb8e[_0xab35('0x4e')],{'include':[{'model':db[_0xab35('0x58')],'as':_0xab35('0x54')},{'model':db['SugarcrmField'],'as':_0xab35('0x56')}]});}return null;})['then'](respondWithResult(_0xcb10a9,null))[_0xab35('0x48')](handleError(_0xcb10a9,null));};exports[_0xab35('0x59')]=function(_0x572218,_0x347831,_0xcb03c4){var _0x329245='';var _0x2fb581=['id',_0xab35('0x2c'),_0xab35('0x5a'),_0xab35('0x5b'),'description',_0xab35('0x5c'),'duration_hours',_0xab35('0x5d'),_0xab35('0x5e'),_0xab35('0x5f'),_0xab35('0x60'),_0xab35('0x61')];return db[_0xab35('0x2f')]['findOne']({'where':{'id':_0x572218[_0xab35('0x4a')]['id']},'attributes':['id',_0xab35('0x62'),_0xab35('0x63'),_0xab35('0x64')]})[_0xab35('0x28')](handleEntityNotFound(_0x347831,null))[_0xab35('0x28')](function(_0x12cbeb){if(_0x12cbeb){_0x329245=_0x12cbeb['remoteUri'];var _0x540728=_0x329245['slice'](-0x1);if(_0x540728==='/'){_0x329245=_0x329245[_0xab35('0x65')](0x0,_0x329245[_0xab35('0x66')](_0x540728));}return rp({'method':_0xab35('0x67'),'uri':util[_0xab35('0x68')](_0xab35('0x69'),_0x329245,_0xab35('0x6a')),'json':!![],'form':{'method':'login','input_type':_0xab35('0x6b'),'response_type':_0xab35('0x6b'),'rest_data':JSON[_0xab35('0x6c')]({'user_auth':{'user_name':_0x12cbeb[_0xab35('0x62')],'password':_0x12cbeb[_0xab35('0x63')],'encryption':'PLAIN'},'application':_0xab35('0x6d')})}});}})['then'](function(_0x56167d){if(_0x56167d&&_0x56167d[_0xab35('0x2c')]!=='Invalid\x20Login'&&_0x56167d[_0xab35('0x2c')]!==_0xab35('0x6e')){return rp({'method':_0xab35('0x67'),'uri':util['format'](_0xab35('0x69'),_0x329245,_0xab35('0x6a')),'json':!![],'form':{'method':'get_module_fields','input_type':_0xab35('0x6b'),'response_type':_0xab35('0x6b'),'rest_data':JSON[_0xab35('0x6c')]({'session':_0x56167d['id'],'module_name':_0xab35('0x6f')})}})[_0xab35('0x28')](function(_0x196a3e){if(_0x196a3e){var _0xcc185c=_[_0xab35('0x70')](_0x196a3e[_0xab35('0x71')]);_[_0xab35('0x72')](_0xcc185c,function(_0x5048de){return _0x2fb581[_0xab35('0x73')](_0x5048de[_0xab35('0x2c')]);});return{'count':_0xcc185c[_0xab35('0x39')],'rows':_['map'](_0xcc185c,function(_0x2c1746){return{'id':_0x2c1746[_0xab35('0x2c')],'name':_0x2c1746['label'],'custom':_[_0xab35('0x74')](_0x2c1746[_0xab35('0x2c')],'_c')?!![]:![],'options':_0x2c1746[_0xab35('0x43')]?_[_0xab35('0x2e')](_['values'](_0x2c1746[_0xab35('0x43')]),function(_0x21c225){return{'name':_0x21c225[_0xab35('0x75')],'value':_0x21c225['name']};}):[]};})};}})['then'](respondWithResult(_0x347831,null))[_0xab35('0x48')](function(_0x31988a){var _0x5dc533=_0x572218[_0xab35('0x34')][_0xab35('0x76')]?0x1f4:_0x31988a[_0xab35('0x77')]||0x1f4;logger[_0xab35('0x2a')]('getFields,\x20%s,\x20%s,\x20%s',_0xab35('0x59'),_0x5dc533,JSON[_0xab35('0x6c')](_0x31988a));delete _0x31988a[_0xab35('0x2c')];if(_0x5dc533===0x191){_0x5dc533=0x190;}_0x347831[_0xab35('0x1d')](_0x5dc533)['send'](_0x572218['query'][_0xab35('0x76')]?{'message':_0xab35('0x78'),'statusCode':_0x31988a[_0xab35('0x77')]}:_0x31988a);});}else{var _0xcb27b3=0x1f4;_0x347831[_0xab35('0x1d')](_0xcb27b3)[_0xab35('0x2d')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index ff74689..23d5e1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde4d=['int_sugarcrm_accounts','lodash','util','../../config/logger','api','moment','bluebird','../../components/integrations/configuration','define','SugarcrmAccount'];(function(_0x3b8f84,_0x1d4dfc){var _0xe79b5d=function(_0x10b389){while(--_0x10b389){_0x3b8f84['push'](_0x3b8f84['shift']());}};_0xe79b5d(++_0x1d4dfc);}(_0xde4d,0xf1));var _0xdde4=function(_0x3cb555,_0x19e0aa){_0x3cb555=_0x3cb555-0x0;var _0x26083f=_0xde4d[_0x3cb555];return _0x26083f;};'use strict';var _=require(_0xdde4('0x0'));var util=require(_0xdde4('0x1'));var logger=require(_0xdde4('0x2'))(_0xdde4('0x3'));var moment=require(_0xdde4('0x4'));var BPromise=require(_0xdde4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0xdde4('0x6'));module['exports']=function(_0x3d7216,_0x4aaec3){return _0x3d7216[_0xdde4('0x7')](_0xdde4('0x8'),attributes,{'tableName':_0xdde4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa8ce=['./intSugarcrmAccount.attributes','exports','define','SugarcrmAccount','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x1962e8,_0x4d5163){var _0x1fa5e9=function(_0x512d4a){while(--_0x512d4a){_0x1962e8['push'](_0x1962e8['shift']());}};_0x1fa5e9(++_0x4d5163);}(_0xa8ce,0x1d8));var _0xea8c=function(_0x112a03,_0x55667e){_0x112a03=_0x112a03-0x0;var _0x373ee3=_0xa8ce[_0x112a03];return _0x373ee3;};'use strict';var _=require('lodash');var util=require(_0xea8c('0x0'));var logger=require(_0xea8c('0x1'))(_0xea8c('0x2'));var moment=require(_0xea8c('0x3'));var BPromise=require(_0xea8c('0x4'));var rp=require(_0xea8c('0x5'));var fs=require('fs');var path=require(_0xea8c('0x6'));var rimraf=require(_0xea8c('0x7'));var config=require('../../config/environment');var attributes=require(_0xea8c('0x8'));var integrations=require('../../components/integrations/configuration');module[_0xea8c('0x9')]=function(_0x1333da,_0x4b0d04){return _0x1333da[_0xea8c('0xa')](_0xea8c('0xb'),attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2558acd..2b90253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c1f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','info','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','SugarcrmAccount,\x20%s,\x20%s','result','GetSugarcrmAccount','SugarcrmAccount','findAll','options','where','attributes','limit','include','map','model','then','catch','ShowSugarcrmAccount','find','raw'];(function(_0xd6a5d0,_0xce67f2){var _0x27789f=function(_0x38fe7b){while(--_0x38fe7b){_0xd6a5d0['push'](_0xd6a5d0['shift']());}};_0x27789f(++_0xce67f2);}(_0x2c1f,0x1b0));var _0xf2c1=function(_0x177467,_0x3c160d){_0x177467=_0x177467-0x0;var _0x4a3a8f=_0x2c1f[_0x177467];return _0x4a3a8f;};'use strict';var _=require(_0xf2c1('0x0'));var util=require(_0xf2c1('0x1'));var moment=require(_0xf2c1('0x2'));var BPromise=require(_0xf2c1('0x3'));var rs=require(_0xf2c1('0x4'));var fs=require('fs');var Redis=require(_0xf2c1('0x5'));var db=require(_0xf2c1('0x6'))['db'];var utils=require(_0xf2c1('0x7'));var logger=require(_0xf2c1('0x8'))(_0xf2c1('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf2c1('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x55ef28,_0x1e70d6,_0x22487e){return new BPromise(function(_0x4213f5,_0x4f6c22){return client[_0xf2c1('0xb')](_0x55ef28,_0x22487e)['then'](function(_0x558b20){logger[_0xf2c1('0xc')]('SugarcrmAccount,\x20%s,\x20%s',_0x1e70d6,_0xf2c1('0xd'));logger[_0xf2c1('0xe')](_0xf2c1('0xf'),_0x1e70d6,_0xf2c1('0xd'),JSON[_0xf2c1('0x10')](_0x558b20));if(_0x558b20[_0xf2c1('0x11')]){if(_0x558b20[_0xf2c1('0x11')]['code']===0x1f4){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x1e70d6,_0x558b20[_0xf2c1('0x11')][_0xf2c1('0x12')]);return _0x4f6c22(_0x558b20['error'][_0xf2c1('0x12')]);}logger[_0xf2c1('0x11')](_0xf2c1('0x13'),_0x1e70d6,_0x558b20['error'][_0xf2c1('0x12')]);return _0x4213f5(_0x558b20[_0xf2c1('0x11')][_0xf2c1('0x12')]);}else{logger[_0xf2c1('0xc')](_0xf2c1('0x13'),_0x1e70d6,_0xf2c1('0xd'));_0x4213f5(_0x558b20[_0xf2c1('0x14')][_0xf2c1('0x12')]);}})['catch'](function(_0xd34c9c){logger['error'](_0xf2c1('0x13'),_0x1e70d6,_0xd34c9c);_0x4f6c22(_0xd34c9c);});});}exports[_0xf2c1('0x15')]=function(_0x9d4db7){var _0x5c4c6c=this;return new Promise(function(_0x236908,_0x10f610){return db[_0xf2c1('0x16')][_0xf2c1('0x17')]({'raw':_0x9d4db7[_0xf2c1('0x18')]?_0x9d4db7['options']['raw']===undefined?!![]:![]:!![],'where':_0x9d4db7[_0xf2c1('0x18')]?_0x9d4db7[_0xf2c1('0x18')][_0xf2c1('0x19')]||null:null,'attributes':_0x9d4db7['options']?_0x9d4db7['options'][_0xf2c1('0x1a')]||null:null,'limit':_0x9d4db7[_0xf2c1('0x18')]?_0x9d4db7[_0xf2c1('0x18')][_0xf2c1('0x1b')]||null:null,'include':_0x9d4db7['options']?_0x9d4db7['options'][_0xf2c1('0x1c')]?_[_0xf2c1('0x1d')](_0x9d4db7[_0xf2c1('0x18')][_0xf2c1('0x1c')],function(_0x225e44){return{'model':db[_0x225e44[_0xf2c1('0x1e')]],'as':_0x225e44['as'],'attributes':_0x225e44[_0xf2c1('0x1a')],'include':_0x225e44[_0xf2c1('0x1c')]?_[_0xf2c1('0x1d')](_0x225e44[_0xf2c1('0x1c')],function(_0x1ec316){return{'model':db[_0x1ec316[_0xf2c1('0x1e')]],'as':_0x1ec316['as'],'attributes':_0x1ec316[_0xf2c1('0x1a')],'include':_0x1ec316[_0xf2c1('0x1c')]?_[_0xf2c1('0x1d')](_0x1ec316[_0xf2c1('0x1c')],function(_0x8ddd97){return{'model':db[_0x8ddd97[_0xf2c1('0x1e')]],'as':_0x8ddd97['as'],'attributes':_0x8ddd97[_0xf2c1('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf2c1('0x1f')](function(_0x11c4f4){logger[_0xf2c1('0xc')](_0xf2c1('0x15'),_0x9d4db7);logger['debug'](_0xf2c1('0x15'),_0x9d4db7,JSON['stringify'](_0x11c4f4));_0x236908(_0x11c4f4);})[_0xf2c1('0x20')](function(_0x6e9170){logger[_0xf2c1('0x11')](_0xf2c1('0x15'),_0x6e9170[_0xf2c1('0x12')],_0x9d4db7);_0x10f610(_0x5c4c6c[_0xf2c1('0x11')](0x1f4,_0x6e9170['message']));});});};exports[_0xf2c1('0x21')]=function(_0x101972){var _0x2d7bb7=this;return new Promise(function(_0x5d2931,_0x53912f){return db[_0xf2c1('0x16')][_0xf2c1('0x22')]({'raw':_0x101972[_0xf2c1('0x18')]?_0x101972[_0xf2c1('0x18')][_0xf2c1('0x23')]===undefined?!![]:![]:!![],'where':_0x101972['options']?_0x101972[_0xf2c1('0x18')]['where']||null:null,'attributes':_0x101972['options']?_0x101972[_0xf2c1('0x18')][_0xf2c1('0x1a')]||null:null,'include':_0x101972[_0xf2c1('0x18')]?_0x101972[_0xf2c1('0x18')][_0xf2c1('0x1c')]?_[_0xf2c1('0x1d')](_0x101972[_0xf2c1('0x18')][_0xf2c1('0x1c')],function(_0x569bcd){return{'model':db[_0x569bcd['model']],'as':_0x569bcd['as'],'attributes':_0x569bcd[_0xf2c1('0x1a')],'include':_0x569bcd[_0xf2c1('0x1c')]?_[_0xf2c1('0x1d')](_0x569bcd['include'],function(_0x347164){return{'model':db[_0x347164[_0xf2c1('0x1e')]],'as':_0x347164['as'],'attributes':_0x347164[_0xf2c1('0x1a')],'include':_0x347164[_0xf2c1('0x1c')]?_[_0xf2c1('0x1d')](_0x347164[_0xf2c1('0x1c')],function(_0x1f3f5d){return{'model':db[_0x1f3f5d[_0xf2c1('0x1e')]],'as':_0x1f3f5d['as'],'attributes':_0x1f3f5d[_0xf2c1('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf2c1('0x1f')](function(_0x3c27c7){logger['info']('ShowSugarcrmAccount',_0x101972);logger[_0xf2c1('0xe')]('ShowSugarcrmAccount',_0x101972,JSON[_0xf2c1('0x10')](_0x3c27c7));_0x5d2931(_0x3c27c7);})['catch'](function(_0x3e3525){logger[_0xf2c1('0x11')](_0xf2c1('0x21'),_0x3e3525[_0xf2c1('0x12')],_0x101972);_0x53912f(_0x2d7bb7[_0xf2c1('0x11')](0x1f4,_0x3e3525[_0xf2c1('0x12')]));});});};
\ No newline at end of file
+var _0x7a2d=['catch','ShowSugarcrmAccount','find','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SugarcrmAccount,\x20%s,\x20%s','message','SugarcrmAccount','findAll','options','raw','attributes','limit','include','map','model','GetSugarcrmAccount','debug'];(function(_0x499bc4,_0x48c949){var _0x3377a2=function(_0x161b6b){while(--_0x161b6b){_0x499bc4['push'](_0x499bc4['shift']());}};_0x3377a2(++_0x48c949);}(_0x7a2d,0xd5));var _0xd7a2=function(_0x16d30e,_0x308c0b){_0x16d30e=_0x16d30e-0x0;var _0x307bcc=_0x7a2d[_0x16d30e];return _0x307bcc;};'use strict';var _=require(_0xd7a2('0x0'));var util=require(_0xd7a2('0x1'));var moment=require(_0xd7a2('0x2'));var BPromise=require(_0xd7a2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd7a2('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd7a2('0x5'));var logger=require(_0xd7a2('0x6'))(_0xd7a2('0x7'));var config=require(_0xd7a2('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd7a2('0x9')][_0xd7a2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3c7ee6,_0x5492e3,_0x364d0e){return new BPromise(function(_0x1cee48,_0x5860bd){return client[_0xd7a2('0xb')](_0x3c7ee6,_0x364d0e)[_0xd7a2('0xc')](function(_0x4ea1e1){logger[_0xd7a2('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x5492e3,_0xd7a2('0xe'));logger['debug'](_0xd7a2('0xf'),_0x5492e3,'request\x20sent',JSON[_0xd7a2('0x10')](_0x4ea1e1));if(_0x4ea1e1[_0xd7a2('0x11')]){if(_0x4ea1e1[_0xd7a2('0x11')][_0xd7a2('0x12')]===0x1f4){logger[_0xd7a2('0x11')]('SugarcrmAccount,\x20%s,\x20%s',_0x5492e3,_0x4ea1e1[_0xd7a2('0x11')]['message']);return _0x5860bd(_0x4ea1e1[_0xd7a2('0x11')]['message']);}logger[_0xd7a2('0x11')](_0xd7a2('0x13'),_0x5492e3,_0x4ea1e1['error'][_0xd7a2('0x14')]);return _0x1cee48(_0x4ea1e1['error']['message']);}else{logger[_0xd7a2('0xd')](_0xd7a2('0x13'),_0x5492e3,_0xd7a2('0xe'));_0x1cee48(_0x4ea1e1['result'][_0xd7a2('0x14')]);}})['catch'](function(_0x5937f5){logger[_0xd7a2('0x11')](_0xd7a2('0x13'),_0x5492e3,_0x5937f5);_0x5860bd(_0x5937f5);});});}exports['GetSugarcrmAccount']=function(_0x500a08){var _0x394c7c=this;return new Promise(function(_0x19b02f,_0x332b26){return db[_0xd7a2('0x15')][_0xd7a2('0x16')]({'raw':_0x500a08[_0xd7a2('0x17')]?_0x500a08[_0xd7a2('0x17')][_0xd7a2('0x18')]===undefined?!![]:![]:!![],'where':_0x500a08[_0xd7a2('0x17')]?_0x500a08['options']['where']||null:null,'attributes':_0x500a08[_0xd7a2('0x17')]?_0x500a08[_0xd7a2('0x17')][_0xd7a2('0x19')]||null:null,'limit':_0x500a08[_0xd7a2('0x17')]?_0x500a08[_0xd7a2('0x17')][_0xd7a2('0x1a')]||null:null,'include':_0x500a08[_0xd7a2('0x17')]?_0x500a08['options'][_0xd7a2('0x1b')]?_[_0xd7a2('0x1c')](_0x500a08['options'][_0xd7a2('0x1b')],function(_0x14d40b){return{'model':db[_0x14d40b[_0xd7a2('0x1d')]],'as':_0x14d40b['as'],'attributes':_0x14d40b['attributes'],'include':_0x14d40b[_0xd7a2('0x1b')]?_[_0xd7a2('0x1c')](_0x14d40b['include'],function(_0x4fddaa){return{'model':db[_0x4fddaa['model']],'as':_0x4fddaa['as'],'attributes':_0x4fddaa[_0xd7a2('0x19')],'include':_0x4fddaa['include']?_['map'](_0x4fddaa['include'],function(_0x212097){return{'model':db[_0x212097[_0xd7a2('0x1d')]],'as':_0x212097['as'],'attributes':_0x212097[_0xd7a2('0x19')]};}):[]};}):[]};}):[]:[]})[_0xd7a2('0xc')](function(_0x4cb44e){logger['info'](_0xd7a2('0x1e'),_0x500a08);logger[_0xd7a2('0x1f')](_0xd7a2('0x1e'),_0x500a08,JSON['stringify'](_0x4cb44e));_0x19b02f(_0x4cb44e);})[_0xd7a2('0x20')](function(_0x1a5e68){logger['error']('GetSugarcrmAccount',_0x1a5e68[_0xd7a2('0x14')],_0x500a08);_0x332b26(_0x394c7c[_0xd7a2('0x11')](0x1f4,_0x1a5e68[_0xd7a2('0x14')]));});});};exports[_0xd7a2('0x21')]=function(_0x50aebe){var _0x40a189=this;return new Promise(function(_0x3cf88d,_0x46d590){return db['SugarcrmAccount'][_0xd7a2('0x22')]({'raw':_0x50aebe[_0xd7a2('0x17')]?_0x50aebe['options'][_0xd7a2('0x18')]===undefined?!![]:![]:!![],'where':_0x50aebe[_0xd7a2('0x17')]?_0x50aebe[_0xd7a2('0x17')]['where']||null:null,'attributes':_0x50aebe['options']?_0x50aebe[_0xd7a2('0x17')]['attributes']||null:null,'include':_0x50aebe[_0xd7a2('0x17')]?_0x50aebe['options']['include']?_[_0xd7a2('0x1c')](_0x50aebe[_0xd7a2('0x17')]['include'],function(_0x26931d){return{'model':db[_0x26931d[_0xd7a2('0x1d')]],'as':_0x26931d['as'],'attributes':_0x26931d[_0xd7a2('0x19')],'include':_0x26931d[_0xd7a2('0x1b')]?_[_0xd7a2('0x1c')](_0x26931d[_0xd7a2('0x1b')],function(_0x37cef4){return{'model':db[_0x37cef4[_0xd7a2('0x1d')]],'as':_0x37cef4['as'],'attributes':_0x37cef4[_0xd7a2('0x19')],'include':_0x37cef4[_0xd7a2('0x1b')]?_['map'](_0x37cef4[_0xd7a2('0x1b')],function(_0x454d9d){return{'model':db[_0x454d9d['model']],'as':_0x454d9d['as'],'attributes':_0x454d9d[_0xd7a2('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5de384){logger[_0xd7a2('0xd')]('ShowSugarcrmAccount',_0x50aebe);logger[_0xd7a2('0x1f')](_0xd7a2('0x21'),_0x50aebe,JSON[_0xd7a2('0x10')](_0x5de384));_0x3cf88d(_0x5de384);})[_0xd7a2('0x20')](function(_0x7f09f5){logger['error'](_0xd7a2('0x21'),_0x7f09f5[_0xd7a2('0x14')],_0x50aebe);_0x46d590(_0x40a189['error'](0x1f4,_0x7f09f5[_0xd7a2('0x14')]));});});};
\ No newline at end of file
index 6b0e4c8..92e1666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05c2=['getSubjects','/:id/descriptions','getDescriptions','post','put','update','delete','destroy','exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','/:id/subjects'];(function(_0x4e9a52,_0x25b20d){var _0x2d425f=function(_0x4f2157){while(--_0x4f2157){_0x4e9a52['push'](_0x4e9a52['shift']());}};_0x2d425f(++_0x25b20d);}(_0x05c2,0x171));var _0x205c=function(_0x4558c2,_0x5598c9){_0x4558c2=_0x4558c2-0x0;var _0x2f0866=_0x05c2[_0x4558c2];return _0x2f0866;};'use strict';var multer=require('multer');var util=require(_0x205c('0x0'));var path=require(_0x205c('0x1'));var timeout=require(_0x205c('0x2'));var express=require(_0x205c('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x205c('0x4'));var interaction=require(_0x205c('0x5'));var config=require(_0x205c('0x6'));var controller=require(_0x205c('0x7'));router['get']('/',auth[_0x205c('0x8')](),controller[_0x205c('0x9')]);router[_0x205c('0xa')](_0x205c('0xb'),auth[_0x205c('0x8')](),controller[_0x205c('0xc')]);router['get'](_0x205c('0xd'),auth[_0x205c('0x8')](),controller['getFields']);router[_0x205c('0xa')](_0x205c('0xe'),auth[_0x205c('0x8')](),controller[_0x205c('0xf')]);router['get'](_0x205c('0x10'),auth[_0x205c('0x8')](),controller[_0x205c('0x11')]);router[_0x205c('0x12')]('/',auth[_0x205c('0x8')](),controller['create']);router[_0x205c('0x13')](_0x205c('0xb'),auth[_0x205c('0x8')](),controller[_0x205c('0x14')]);router[_0x205c('0x15')](_0x205c('0xb'),auth[_0x205c('0x8')](),controller[_0x205c('0x16')]);module[_0x205c('0x17')]=router;
\ No newline at end of file
+var _0xb324=['/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x48258d,_0x42537b){var _0x220f0b=function(_0x5e1d64){while(--_0x5e1d64){_0x48258d['push'](_0x48258d['shift']());}};_0x220f0b(++_0x42537b);}(_0xb324,0x11f));var _0x4b32=function(_0x9c802a,_0x1eb813){_0x9c802a=_0x9c802a-0x0;var _0x1bac75=_0xb324[_0x9c802a];return _0x1bac75;};'use strict';var multer=require(_0x4b32('0x0'));var util=require(_0x4b32('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x4b32('0x2'));var router=express[_0x4b32('0x3')]();var fs_extra=require(_0x4b32('0x4'));var auth=require(_0x4b32('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4b32('0x6'));var controller=require(_0x4b32('0x7'));router[_0x4b32('0x8')]('/',auth[_0x4b32('0x9')](),controller[_0x4b32('0xa')]);router['get'](_0x4b32('0xb'),auth[_0x4b32('0x9')](),controller['show']);router[_0x4b32('0x8')](_0x4b32('0xc'),auth[_0x4b32('0x9')](),controller[_0x4b32('0xd')]);router[_0x4b32('0x8')](_0x4b32('0xe'),auth[_0x4b32('0x9')](),controller[_0x4b32('0xf')]);router[_0x4b32('0x8')](_0x4b32('0x10'),auth[_0x4b32('0x9')](),controller[_0x4b32('0x11')]);router[_0x4b32('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4b32('0x13')](_0x4b32('0xb'),auth[_0x4b32('0x9')](),controller['update']);router[_0x4b32('0x14')](_0x4b32('0xb'),auth[_0x4b32('0x9')](),controller[_0x4b32('0x15')]);module[_0x4b32('0x16')]=router;
\ No newline at end of file
index e64dbe0..3864190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xced6=['sequelize','exports','STRING'];(function(_0x3bf6da,_0x59679f){var _0xd5372f=function(_0x296b72){while(--_0x296b72){_0x3bf6da['push'](_0x3bf6da['shift']());}};_0xd5372f(++_0x59679f);}(_0xced6,0xae));var _0x6ced=function(_0x5af384,_0x1341d4){_0x5af384=_0x5af384-0x0;var _0x4fc569=_0xced6[_0x5af384];return _0x4fc569;};'use strict';var Sequelize=require(_0x6ced('0x0'));module[_0x6ced('0x1')]={'name':{'type':Sequelize[_0x6ced('0x2')]},'description':{'type':Sequelize[_0x6ced('0x2')]}};
\ No newline at end of file
+var _0xc604=['STRING','sequelize','exports'];(function(_0x1f5f2f,_0x5aaf8c){var _0x392a67=function(_0x3148a6){while(--_0x3148a6){_0x1f5f2f['push'](_0x1f5f2f['shift']());}};_0x392a67(++_0x5aaf8c);}(_0xc604,0x88));var _0x4c60=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc604[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x4c60('0x0'));module[_0x4c60('0x1')]={'name':{'type':Sequelize[_0x4c60('0x2')]},'description':{'type':Sequelize[_0x4c60('0x2')]}};
\ No newline at end of file
index cdb281c..ea54ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc57a=['to-csv','lodash','crypto','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','index','map','SugarcrmConfiguration','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','keys','find','catch','create','body','getFields','findOne','length','getSubjects','SugarcrmField','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox'];(function(_0x3cd218,_0x12bed8){var _0x26a894=function(_0x28eaf9){while(--_0x28eaf9){_0x3cd218['push'](_0x3cd218['shift']());}};_0x26a894(++_0x12bed8);}(_0xc57a,0x8d));var _0xac57=function(_0x239dba,_0x309e95){_0x239dba=_0x239dba-0x0;var _0x1ceb11=_0xc57a[_0x239dba];return _0x1ceb11;};'use strict';var emlformat=require(_0xac57('0x0'));var rimraf=require(_0xac57('0x1'));var zipdir=require(_0xac57('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xac57('0x3'));var moment=require(_0xac57('0x4'));var BPromise=require(_0xac57('0x5'));var Mustache=require('mustache');var util=require(_0xac57('0x6'));var path=require(_0xac57('0x7'));var sox=require(_0xac57('0x8'));var csv=require(_0xac57('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xac57('0xa'));var squel=require('squel');var crypto=require(_0xac57('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xac57('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xac57('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xac57('0xe'));var hardwareService=require(_0xac57('0xf'));var logger=require(_0xac57('0x10'))(_0xac57('0x11'));var utils=require('../../config/utils');var config=require(_0xac57('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xac57('0x13'))['db'];function respondWithStatusCode(_0x288515,_0x59eb68){_0x59eb68=_0x59eb68||0xcc;return function(_0x45c438){if(_0x45c438){return _0x288515[_0xac57('0x14')](_0x59eb68);}return _0x288515[_0xac57('0x15')](_0x59eb68)[_0xac57('0x16')]();};}function respondWithResult(_0x9224e5,_0x42f21c){_0x42f21c=_0x42f21c||0xc8;return function(_0x3bb1b3){if(_0x3bb1b3){return _0x9224e5[_0xac57('0x15')](_0x42f21c)['json'](_0x3bb1b3);}};}function respondWithFilteredResult(_0x540b05,_0x2c3480){return function(_0x35b94e){if(_0x35b94e){var _0x31ac7b=typeof _0x2c3480[_0xac57('0x17')]===_0xac57('0x18')&&typeof _0x2c3480[_0xac57('0x19')]===_0xac57('0x18');var _0x154482=_0x35b94e[_0xac57('0x1a')];var _0x3bfa8f=_0x31ac7b?0x0:_0x2c3480[_0xac57('0x17')];var _0x45ecd5=_0x31ac7b?_0x35b94e[_0xac57('0x1a')]:_0x2c3480[_0xac57('0x17')]+_0x2c3480[_0xac57('0x19')];var _0x487cd7;if(_0x45ecd5>=_0x154482){_0x45ecd5=_0x154482;_0x487cd7=0xc8;}else{_0x487cd7=0xce;}_0x540b05[_0xac57('0x15')](_0x487cd7);return _0x540b05[_0xac57('0x1b')](_0xac57('0x1c'),_0x3bfa8f+'-'+_0x45ecd5+'/'+_0x154482)['json'](_0x35b94e);}return null;};}function patchUpdates(_0xfa27e3){return function(_0x24a334){try{jsonpatch['apply'](_0x24a334,_0xfa27e3,!![]);}catch(_0x19f879){return BPromise[_0xac57('0x1d')](_0x19f879);}return _0x24a334[_0xac57('0x1e')]();};}function saveUpdates(_0x2bc879,_0xb05dff){return function(_0x4d363a){if(_0x4d363a){return _0x4d363a[_0xac57('0x1f')](_0x2bc879)[_0xac57('0x20')](function(_0xd82ee7){return _0xd82ee7;});}return null;};}function removeEntity(_0x43be8b,_0x22e597){return function(_0x1234ae){if(_0x1234ae){return _0x1234ae[_0xac57('0x21')]()[_0xac57('0x20')](function(){_0x43be8b[_0xac57('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x738218,_0x4a8330){return function(_0x1d1082){if(!_0x1d1082){_0x738218['sendStatus'](0x194);}return _0x1d1082;};}function handleError(_0x42ac21,_0x1c7245){_0x1c7245=_0x1c7245||0x1f4;return function(_0x207643){logger[_0xac57('0x22')](_0x207643[_0xac57('0x23')]);if(_0x207643[_0xac57('0x24')]){delete _0x207643[_0xac57('0x24')];}_0x42ac21['status'](_0x1c7245)['send'](_0x207643);};}exports[_0xac57('0x25')]=function(_0x4b47a5,_0x3b8240){var _0x206373={},_0x5e1c13={},_0xe7a559={'count':0x0,'rows':[]};var _0x1f4beb=_[_0xac57('0x26')](db[_0xac57('0x27')][_0xac57('0x28')],function(_0x5d80b8){return{'name':_0x5d80b8[_0xac57('0x29')],'type':_0x5d80b8[_0xac57('0x2a')]['key']};});_0x5e1c13[_0xac57('0x2b')]=_['map'](_0x1f4beb,'name');_0x5e1c13[_0xac57('0x2c')]=_['keys'](_0x4b47a5[_0xac57('0x2c')]);_0x5e1c13[_0xac57('0x2d')]=_[_0xac57('0x2e')](_0x5e1c13[_0xac57('0x2b')],_0x5e1c13[_0xac57('0x2c')]);_0x206373['attributes']=_[_0xac57('0x2e')](_0x5e1c13['model'],qs[_0xac57('0x2f')](_0x4b47a5[_0xac57('0x2c')][_0xac57('0x2f')]));_0x206373[_0xac57('0x30')]=_0x206373['attributes']['length']?_0x206373[_0xac57('0x30')]:_0x5e1c13[_0xac57('0x2b')];if(!_0x4b47a5[_0xac57('0x2c')][_0xac57('0x31')](_0xac57('0x32'))){_0x206373[_0xac57('0x19')]=qs[_0xac57('0x19')](_0x4b47a5[_0xac57('0x2c')][_0xac57('0x19')]);_0x206373[_0xac57('0x17')]=qs[_0xac57('0x17')](_0x4b47a5[_0xac57('0x2c')][_0xac57('0x17')]);}_0x206373[_0xac57('0x33')]=qs[_0xac57('0x34')](_0x4b47a5[_0xac57('0x2c')][_0xac57('0x34')]);_0x206373[_0xac57('0x35')]=qs[_0xac57('0x2d')](_[_0xac57('0x36')](_0x4b47a5[_0xac57('0x2c')],_0x5e1c13[_0xac57('0x2d')]),_0x1f4beb);if(_0x4b47a5[_0xac57('0x2c')][_0xac57('0x37')]){_0x206373[_0xac57('0x35')]=_[_0xac57('0x38')](_0x206373[_0xac57('0x35')],{'$or':_[_0xac57('0x26')](_0x1f4beb,function(_0x29d42b){if(_0x29d42b['type']!==_0xac57('0x39')){var _0x5016b3={};_0x5016b3[_0x29d42b['name']]={'$like':'%'+_0x4b47a5[_0xac57('0x2c')]['filter']+'%'};return _0x5016b3;}})});}_0x206373=_['merge']({},_0x206373,_0x4b47a5[_0xac57('0x3a')]);var _0x2a14b4={'where':_0x206373[_0xac57('0x35')]};return db['SugarcrmConfiguration'][_0xac57('0x1a')](_0x2a14b4)['then'](function(_0x1245c0){_0xe7a559[_0xac57('0x1a')]=_0x1245c0;if(_0x4b47a5[_0xac57('0x2c')]['includeAll']){_0x206373[_0xac57('0x3b')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0xac57('0x3c')](_0x206373);})[_0xac57('0x20')](function(_0x6357bf){_0xe7a559[_0xac57('0x3d')]=_0x6357bf;return _0xe7a559;})[_0xac57('0x20')](respondWithFilteredResult(_0x3b8240,_0x206373))['catch'](handleError(_0x3b8240,null));};exports[_0xac57('0x3e')]=function(_0x38e89d,_0x44db4e){var _0x82b97b={'raw':![],'where':{'id':_0x38e89d[_0xac57('0x3f')]['id']}},_0x2768a3={};_0x2768a3['model']=_['keys'](db['SugarcrmConfiguration'][_0xac57('0x28')]);_0x2768a3[_0xac57('0x2c')]=_[_0xac57('0x40')](_0x38e89d[_0xac57('0x2c')]);_0x2768a3['filters']=_['intersection'](_0x2768a3[_0xac57('0x2b')],_0x2768a3[_0xac57('0x2c')]);_0x82b97b[_0xac57('0x30')]=_[_0xac57('0x2e')](_0x2768a3[_0xac57('0x2b')],qs['fields'](_0x38e89d['query'][_0xac57('0x2f')]));_0x82b97b[_0xac57('0x30')]=_0x82b97b[_0xac57('0x30')]['length']?_0x82b97b[_0xac57('0x30')]:_0x2768a3[_0xac57('0x2b')];if(_0x38e89d[_0xac57('0x2c')]['includeAll']){_0x82b97b['include']=[{'all':!![]}];}_0x82b97b=_['merge']({},_0x82b97b,_0x38e89d[_0xac57('0x3a')]);return db[_0xac57('0x27')][_0xac57('0x41')](_0x82b97b)[_0xac57('0x20')](handleEntityNotFound(_0x44db4e,null))['then'](respondWithResult(_0x44db4e,null))[_0xac57('0x42')](handleError(_0x44db4e,null));};exports[_0xac57('0x43')]=function(_0x526671,_0x4cafca){return db['SugarcrmConfiguration'][_0xac57('0x43')](_0x526671[_0xac57('0x44')],{})['then'](respondWithResult(_0x4cafca,0xc9))['catch'](handleError(_0x4cafca,null));};exports[_0xac57('0x1f')]=function(_0x33302d,_0x4043e1){if(_0x33302d['body']['id']){delete _0x33302d[_0xac57('0x44')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0x33302d[_0xac57('0x3f')]['id']}})[_0xac57('0x20')](handleEntityNotFound(_0x4043e1,null))[_0xac57('0x20')](saveUpdates(_0x33302d[_0xac57('0x44')],null))[_0xac57('0x20')](respondWithResult(_0x4043e1,null))['catch'](handleError(_0x4043e1,null));};exports[_0xac57('0x21')]=function(_0x5bc7a1,_0x345b81){return db[_0xac57('0x27')][_0xac57('0x41')]({'where':{'id':_0x5bc7a1[_0xac57('0x3f')]['id']}})[_0xac57('0x20')](handleEntityNotFound(_0x345b81,null))['then'](removeEntity(_0x345b81,null))['catch'](handleError(_0x345b81,null));};exports[_0xac57('0x45')]=function(_0x1ab067,_0x28bd57,_0x5c2183){var _0x15ab5c={};var _0x37f172={};var _0x3671ed;var _0x51e3de;return db['SugarcrmConfiguration'][_0xac57('0x46')]({'where':{'id':_0x1ab067['params']['id']}})[_0xac57('0x20')](handleEntityNotFound(_0x28bd57,null))[_0xac57('0x20')](function(_0x52058b){if(_0x52058b){_0x3671ed=_0x52058b;_0x37f172[_0xac57('0x2b')]=_[_0xac57('0x40')](db['SugarcrmField'][_0xac57('0x28')]);_0x37f172[_0xac57('0x2c')]=_[_0xac57('0x40')](_0x1ab067[_0xac57('0x2c')]);_0x37f172['filters']=_[_0xac57('0x2e')](_0x37f172[_0xac57('0x2b')],_0x37f172[_0xac57('0x2c')]);_0x15ab5c[_0xac57('0x30')]=_[_0xac57('0x2e')](_0x37f172['model'],qs['fields'](_0x1ab067[_0xac57('0x2c')][_0xac57('0x2f')]));_0x15ab5c[_0xac57('0x30')]=_0x15ab5c['attributes'][_0xac57('0x47')]?_0x15ab5c[_0xac57('0x30')]:_0x37f172[_0xac57('0x2b')];_0x15ab5c[_0xac57('0x33')]=qs[_0xac57('0x34')](_0x1ab067[_0xac57('0x2c')]['sort']);_0x15ab5c[_0xac57('0x35')]=qs[_0xac57('0x2d')](_[_0xac57('0x36')](_0x1ab067[_0xac57('0x2c')],_0x37f172[_0xac57('0x2d')]));if(_0x1ab067['query'][_0xac57('0x37')]){_0x15ab5c[_0xac57('0x35')]=_[_0xac57('0x38')](_0x15ab5c[_0xac57('0x35')],{'$or':_[_0xac57('0x26')](_0x15ab5c[_0xac57('0x30')],function(_0x214185){var _0x427d9d={};_0x427d9d[_0x214185]={'$like':'%'+_0x1ab067[_0xac57('0x2c')]['filter']+'%'};return _0x427d9d;})});}_0x15ab5c=_['merge']({},_0x15ab5c,_0x1ab067[_0xac57('0x3a')]);return _0x3671ed['getFields'](_0x15ab5c);}})[_0xac57('0x20')](function(_0x12f805){if(_0x12f805){_0x51e3de=_0x12f805[_0xac57('0x47')];if(!_0x1ab067[_0xac57('0x2c')][_0xac57('0x31')]('nolimit')){_0x15ab5c[_0xac57('0x19')]=qs[_0xac57('0x19')](_0x1ab067[_0xac57('0x2c')][_0xac57('0x19')]);_0x15ab5c[_0xac57('0x17')]=qs[_0xac57('0x17')](_0x1ab067[_0xac57('0x2c')]['offset']);}return _0x3671ed['getFields'](_0x15ab5c);}})[_0xac57('0x20')](function(_0x4f9d38){if(_0x4f9d38){return _0x4f9d38?{'count':_0x51e3de,'rows':_0x4f9d38}:null;}})[_0xac57('0x20')](respondWithResult(_0x28bd57,null))[_0xac57('0x42')](handleError(_0x28bd57,null));};exports[_0xac57('0x48')]=function(_0x5cdb3c,_0xb3afd4,_0x1d839e){var _0x3fc34a={};var _0x4afb65={};var _0x2c48df;var _0x211f0a;return db[_0xac57('0x27')][_0xac57('0x46')]({'where':{'id':_0x5cdb3c['params']['id']}})['then'](handleEntityNotFound(_0xb3afd4,null))[_0xac57('0x20')](function(_0x6535d5){if(_0x6535d5){_0x2c48df=_0x6535d5;_0x4afb65[_0xac57('0x2b')]=_[_0xac57('0x40')](db[_0xac57('0x49')]['rawAttributes']);_0x4afb65['query']=_[_0xac57('0x40')](_0x5cdb3c[_0xac57('0x2c')]);_0x4afb65['filters']=_[_0xac57('0x2e')](_0x4afb65[_0xac57('0x2b')],_0x4afb65['query']);_0x3fc34a[_0xac57('0x30')]=_[_0xac57('0x2e')](_0x4afb65[_0xac57('0x2b')],qs[_0xac57('0x2f')](_0x5cdb3c[_0xac57('0x2c')]['fields']));_0x3fc34a[_0xac57('0x30')]=_0x3fc34a[_0xac57('0x30')][_0xac57('0x47')]?_0x3fc34a[_0xac57('0x30')]:_0x4afb65[_0xac57('0x2b')];_0x3fc34a[_0xac57('0x33')]=qs[_0xac57('0x34')](_0x5cdb3c[_0xac57('0x2c')][_0xac57('0x34')]);_0x3fc34a['where']=qs[_0xac57('0x2d')](_['pick'](_0x5cdb3c['query'],_0x4afb65['filters']));if(_0x5cdb3c[_0xac57('0x2c')][_0xac57('0x37')]){_0x3fc34a['where']=_[_0xac57('0x38')](_0x3fc34a[_0xac57('0x35')],{'$or':_[_0xac57('0x26')](_0x3fc34a[_0xac57('0x30')],function(_0x1623a3){var _0x2b0051={};_0x2b0051[_0x1623a3]={'$like':'%'+_0x5cdb3c[_0xac57('0x2c')][_0xac57('0x37')]+'%'};return _0x2b0051;})});}_0x3fc34a=_[_0xac57('0x38')]({},_0x3fc34a,_0x5cdb3c[_0xac57('0x3a')]);return _0x2c48df[_0xac57('0x48')](_0x3fc34a);}})[_0xac57('0x20')](function(_0x583ffe){if(_0x583ffe){_0x211f0a=_0x583ffe[_0xac57('0x47')];if(!_0x5cdb3c[_0xac57('0x2c')][_0xac57('0x31')](_0xac57('0x32'))){_0x3fc34a[_0xac57('0x19')]=qs[_0xac57('0x19')](_0x5cdb3c[_0xac57('0x2c')][_0xac57('0x19')]);_0x3fc34a[_0xac57('0x17')]=qs[_0xac57('0x17')](_0x5cdb3c[_0xac57('0x2c')][_0xac57('0x17')]);}return _0x2c48df['getSubjects'](_0x3fc34a);}})['then'](function(_0x2c829a){if(_0x2c829a){return _0x2c829a?{'count':_0x211f0a,'rows':_0x2c829a}:null;}})[_0xac57('0x20')](respondWithResult(_0xb3afd4,null))[_0xac57('0x42')](handleError(_0xb3afd4,null));};exports['getDescriptions']=function(_0x93d3c2,_0x4433fc,_0x193385){var _0xb12af5={};var _0x2ec2c6={};var _0x1a0e8a;var _0xcc1bbd;return db[_0xac57('0x27')]['findOne']({'where':{'id':_0x93d3c2[_0xac57('0x3f')]['id']}})[_0xac57('0x20')](handleEntityNotFound(_0x4433fc,null))['then'](function(_0xd97536){if(_0xd97536){_0x1a0e8a=_0xd97536;_0x2ec2c6[_0xac57('0x2b')]=_[_0xac57('0x40')](db['SugarcrmField'][_0xac57('0x28')]);_0x2ec2c6[_0xac57('0x2c')]=_[_0xac57('0x40')](_0x93d3c2[_0xac57('0x2c')]);_0x2ec2c6[_0xac57('0x2d')]=_[_0xac57('0x2e')](_0x2ec2c6['model'],_0x2ec2c6[_0xac57('0x2c')]);_0xb12af5[_0xac57('0x30')]=_[_0xac57('0x2e')](_0x2ec2c6[_0xac57('0x2b')],qs[_0xac57('0x2f')](_0x93d3c2['query'][_0xac57('0x2f')]));_0xb12af5[_0xac57('0x30')]=_0xb12af5[_0xac57('0x30')][_0xac57('0x47')]?_0xb12af5[_0xac57('0x30')]:_0x2ec2c6[_0xac57('0x2b')];_0xb12af5[_0xac57('0x33')]=qs[_0xac57('0x34')](_0x93d3c2[_0xac57('0x2c')][_0xac57('0x34')]);_0xb12af5[_0xac57('0x35')]=qs[_0xac57('0x2d')](_[_0xac57('0x36')](_0x93d3c2[_0xac57('0x2c')],_0x2ec2c6[_0xac57('0x2d')]));if(_0x93d3c2[_0xac57('0x2c')][_0xac57('0x37')]){_0xb12af5['where']=_[_0xac57('0x38')](_0xb12af5[_0xac57('0x35')],{'$or':_[_0xac57('0x26')](_0xb12af5['attributes'],function(_0x16edb2){var _0x332ddc={};_0x332ddc[_0x16edb2]={'$like':'%'+_0x93d3c2['query']['filter']+'%'};return _0x332ddc;})});}_0xb12af5=_[_0xac57('0x38')]({},_0xb12af5,_0x93d3c2['options']);return _0x1a0e8a[_0xac57('0x4a')](_0xb12af5);}})[_0xac57('0x20')](function(_0x5ebf14){if(_0x5ebf14){_0xcc1bbd=_0x5ebf14[_0xac57('0x47')];if(!_0x93d3c2['query'][_0xac57('0x31')](_0xac57('0x32'))){_0xb12af5[_0xac57('0x19')]=qs[_0xac57('0x19')](_0x93d3c2[_0xac57('0x2c')][_0xac57('0x19')]);_0xb12af5[_0xac57('0x17')]=qs[_0xac57('0x17')](_0x93d3c2[_0xac57('0x2c')][_0xac57('0x17')]);}return _0x1a0e8a[_0xac57('0x4a')](_0xb12af5);}})['then'](function(_0x1cd08b){if(_0x1cd08b){return _0x1cd08b?{'count':_0xcc1bbd,'rows':_0x1cd08b}:null;}})[_0xac57('0x20')](respondWithResult(_0x4433fc,null))[_0xac57('0x42')](handleError(_0x4433fc,null));};
\ No newline at end of file
+var _0xe8ec=['intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','include','rows','catch','show','params','find','body','update','destroy','SugarcrmField','filters','options','getFields','getSubjects','findOne','getDescriptions','zip-dir','fast-json-patch','request-promise','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','Content-Range','apply','reject','then','end','error','stack','name','send','index','map','SugarcrmConfiguration','rawAttributes','fieldName','model','query','keys','attributes'];(function(_0x488dd7,_0x4d7797){var _0x2bf4ca=function(_0x39cad6){while(--_0x39cad6){_0x488dd7['push'](_0x488dd7['shift']());}};_0x2bf4ca(++_0x4d7797);}(_0xe8ec,0xb5));var _0xce8e=function(_0x3f65ff,_0x6660fa){_0x3f65ff=_0x3f65ff-0x0;var _0x1fcf9a=_0xe8ec[_0x3f65ff];return _0x1fcf9a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xce8e('0x0'));var jsonpatch=require(_0xce8e('0x1'));var rp=require(_0xce8e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xce8e('0x3'));var util=require('util');var path=require(_0xce8e('0x4'));var sox=require(_0xce8e('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xce8e('0x6'));var _=require(_0xce8e('0x7'));var squel=require(_0xce8e('0x8'));var crypto=require(_0xce8e('0x9'));var jsforce=require(_0xce8e('0xa'));var deskjs=require(_0xce8e('0xb'));var toCsv=require(_0xce8e('0xc'));var querystring=require(_0xce8e('0xd'));var Papa=require(_0xce8e('0xe'));var Redis=require(_0xce8e('0xf'));var authService=require(_0xce8e('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xce8e('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xce8e('0x12'))(_0xce8e('0x13'));var utils=require('../../config/utils');var config=require(_0xce8e('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xce8e('0x15'))['db'];function respondWithStatusCode(_0x5853d5,_0x541fa9){_0x541fa9=_0x541fa9||0xcc;return function(_0x2052a9){if(_0x2052a9){return _0x5853d5[_0xce8e('0x16')](_0x541fa9);}return _0x5853d5[_0xce8e('0x17')](_0x541fa9)['end']();};}function respondWithResult(_0x211efd,_0x9bff2f){_0x9bff2f=_0x9bff2f||0xc8;return function(_0x1acaf0){if(_0x1acaf0){return _0x211efd[_0xce8e('0x17')](_0x9bff2f)[_0xce8e('0x18')](_0x1acaf0);}};}function respondWithFilteredResult(_0x32fb7d,_0x15986d){return function(_0x5b2e68){if(_0x5b2e68){var _0x354a29=typeof _0x15986d['offset']===_0xce8e('0x19')&&typeof _0x15986d[_0xce8e('0x1a')]===_0xce8e('0x19');var _0x1a21dc=_0x5b2e68['count'];var _0x2c1abd=_0x354a29?0x0:_0x15986d[_0xce8e('0x1b')];var _0x55a20c=_0x354a29?_0x5b2e68[_0xce8e('0x1c')]:_0x15986d[_0xce8e('0x1b')]+_0x15986d[_0xce8e('0x1a')];var _0x334077;if(_0x55a20c>=_0x1a21dc){_0x55a20c=_0x1a21dc;_0x334077=0xc8;}else{_0x334077=0xce;}_0x32fb7d[_0xce8e('0x17')](_0x334077);return _0x32fb7d['set'](_0xce8e('0x1d'),_0x2c1abd+'-'+_0x55a20c+'/'+_0x1a21dc)[_0xce8e('0x18')](_0x5b2e68);}return null;};}function patchUpdates(_0x8783ab){return function(_0x3dd590){try{jsonpatch[_0xce8e('0x1e')](_0x3dd590,_0x8783ab,!![]);}catch(_0x594d0a){return BPromise[_0xce8e('0x1f')](_0x594d0a);}return _0x3dd590['save']();};}function saveUpdates(_0x349368,_0x59ff49){return function(_0xc5c02c){if(_0xc5c02c){return _0xc5c02c['update'](_0x349368)[_0xce8e('0x20')](function(_0x5117e5){return _0x5117e5;});}return null;};}function removeEntity(_0x241e3d,_0x18ab11){return function(_0x5a99b3){if(_0x5a99b3){return _0x5a99b3['destroy']()[_0xce8e('0x20')](function(){_0x241e3d[_0xce8e('0x17')](0xcc)[_0xce8e('0x21')]();});}};}function handleEntityNotFound(_0x5d96ed,_0x71f09d){return function(_0x4974ce){if(!_0x4974ce){_0x5d96ed['sendStatus'](0x194);}return _0x4974ce;};}function handleError(_0xdc5bd4,_0x5a2a2d){_0x5a2a2d=_0x5a2a2d||0x1f4;return function(_0x5094e5){logger[_0xce8e('0x22')](_0x5094e5[_0xce8e('0x23')]);if(_0x5094e5['name']){delete _0x5094e5[_0xce8e('0x24')];}_0xdc5bd4[_0xce8e('0x17')](_0x5a2a2d)[_0xce8e('0x25')](_0x5094e5);};}exports[_0xce8e('0x26')]=function(_0x5bca32,_0x96bd7a){var _0xfca4={},_0x45272f={},_0x21df5d={'count':0x0,'rows':[]};var _0x3cc99c=_[_0xce8e('0x27')](db[_0xce8e('0x28')][_0xce8e('0x29')],function(_0x4864dd){return{'name':_0x4864dd[_0xce8e('0x2a')],'type':_0x4864dd['type']['key']};});_0x45272f[_0xce8e('0x2b')]=_[_0xce8e('0x27')](_0x3cc99c,'name');_0x45272f[_0xce8e('0x2c')]=_[_0xce8e('0x2d')](_0x5bca32[_0xce8e('0x2c')]);_0x45272f['filters']=_['intersection'](_0x45272f[_0xce8e('0x2b')],_0x45272f['query']);_0xfca4[_0xce8e('0x2e')]=_[_0xce8e('0x2f')](_0x45272f[_0xce8e('0x2b')],qs[_0xce8e('0x30')](_0x5bca32['query'][_0xce8e('0x30')]));_0xfca4['attributes']=_0xfca4[_0xce8e('0x2e')][_0xce8e('0x31')]?_0xfca4[_0xce8e('0x2e')]:_0x45272f['model'];if(!_0x5bca32[_0xce8e('0x2c')][_0xce8e('0x32')](_0xce8e('0x33'))){_0xfca4['limit']=qs[_0xce8e('0x1a')](_0x5bca32[_0xce8e('0x2c')][_0xce8e('0x1a')]);_0xfca4['offset']=qs[_0xce8e('0x1b')](_0x5bca32[_0xce8e('0x2c')]['offset']);}_0xfca4[_0xce8e('0x34')]=qs[_0xce8e('0x35')](_0x5bca32['query'][_0xce8e('0x35')]);_0xfca4[_0xce8e('0x36')]=qs['filters'](_[_0xce8e('0x37')](_0x5bca32['query'],_0x45272f['filters']),_0x3cc99c);if(_0x5bca32[_0xce8e('0x2c')][_0xce8e('0x38')]){_0xfca4[_0xce8e('0x36')]=_[_0xce8e('0x39')](_0xfca4[_0xce8e('0x36')],{'$or':_['map'](_0x3cc99c,function(_0x525329){if(_0x525329[_0xce8e('0x3a')]!==_0xce8e('0x3b')){var _0x4e07b9={};_0x4e07b9[_0x525329[_0xce8e('0x24')]]={'$like':'%'+_0x5bca32['query'][_0xce8e('0x38')]+'%'};return _0x4e07b9;}})});}_0xfca4=_[_0xce8e('0x39')]({},_0xfca4,_0x5bca32['options']);var _0xc42f56={'where':_0xfca4[_0xce8e('0x36')]};return db[_0xce8e('0x28')][_0xce8e('0x1c')](_0xc42f56)[_0xce8e('0x20')](function(_0x3046ca){_0x21df5d['count']=_0x3046ca;if(_0x5bca32['query']['includeAll']){_0xfca4[_0xce8e('0x3c')]=[{'all':!![]}];}return db['SugarcrmConfiguration']['findAll'](_0xfca4);})[_0xce8e('0x20')](function(_0x691bda){_0x21df5d[_0xce8e('0x3d')]=_0x691bda;return _0x21df5d;})[_0xce8e('0x20')](respondWithFilteredResult(_0x96bd7a,_0xfca4))[_0xce8e('0x3e')](handleError(_0x96bd7a,null));};exports[_0xce8e('0x3f')]=function(_0x5c7848,_0x27486b){var _0x3e3db5={'raw':![],'where':{'id':_0x5c7848[_0xce8e('0x40')]['id']}},_0x4f8dd0={};_0x4f8dd0[_0xce8e('0x2b')]=_[_0xce8e('0x2d')](db['SugarcrmConfiguration'][_0xce8e('0x29')]);_0x4f8dd0[_0xce8e('0x2c')]=_[_0xce8e('0x2d')](_0x5c7848[_0xce8e('0x2c')]);_0x4f8dd0['filters']=_[_0xce8e('0x2f')](_0x4f8dd0[_0xce8e('0x2b')],_0x4f8dd0[_0xce8e('0x2c')]);_0x3e3db5['attributes']=_[_0xce8e('0x2f')](_0x4f8dd0[_0xce8e('0x2b')],qs['fields'](_0x5c7848[_0xce8e('0x2c')][_0xce8e('0x30')]));_0x3e3db5[_0xce8e('0x2e')]=_0x3e3db5[_0xce8e('0x2e')][_0xce8e('0x31')]?_0x3e3db5[_0xce8e('0x2e')]:_0x4f8dd0[_0xce8e('0x2b')];if(_0x5c7848[_0xce8e('0x2c')]['includeAll']){_0x3e3db5[_0xce8e('0x3c')]=[{'all':!![]}];}_0x3e3db5=_[_0xce8e('0x39')]({},_0x3e3db5,_0x5c7848['options']);return db[_0xce8e('0x28')][_0xce8e('0x41')](_0x3e3db5)[_0xce8e('0x20')](handleEntityNotFound(_0x27486b,null))['then'](respondWithResult(_0x27486b,null))[_0xce8e('0x3e')](handleError(_0x27486b,null));};exports['create']=function(_0x7c2303,_0x269f29){return db[_0xce8e('0x28')]['create'](_0x7c2303[_0xce8e('0x42')],{})['then'](respondWithResult(_0x269f29,0xc9))[_0xce8e('0x3e')](handleError(_0x269f29,null));};exports[_0xce8e('0x43')]=function(_0x3c64c6,_0x7ac0dd){if(_0x3c64c6[_0xce8e('0x42')]['id']){delete _0x3c64c6['body']['id'];}return db[_0xce8e('0x28')]['find']({'where':{'id':_0x3c64c6[_0xce8e('0x40')]['id']}})[_0xce8e('0x20')](handleEntityNotFound(_0x7ac0dd,null))['then'](saveUpdates(_0x3c64c6[_0xce8e('0x42')],null))[_0xce8e('0x20')](respondWithResult(_0x7ac0dd,null))[_0xce8e('0x3e')](handleError(_0x7ac0dd,null));};exports[_0xce8e('0x44')]=function(_0x50fb69,_0x327465){return db[_0xce8e('0x28')]['find']({'where':{'id':_0x50fb69[_0xce8e('0x40')]['id']}})[_0xce8e('0x20')](handleEntityNotFound(_0x327465,null))['then'](removeEntity(_0x327465,null))['catch'](handleError(_0x327465,null));};exports['getFields']=function(_0x416ee8,_0x286b3e,_0x37ef3a){var _0xee918e={};var _0x5e2db6={};var _0x4f432c;var _0x389ee2;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x416ee8[_0xce8e('0x40')]['id']}})[_0xce8e('0x20')](handleEntityNotFound(_0x286b3e,null))[_0xce8e('0x20')](function(_0x2b8616){if(_0x2b8616){_0x4f432c=_0x2b8616;_0x5e2db6[_0xce8e('0x2b')]=_[_0xce8e('0x2d')](db[_0xce8e('0x45')][_0xce8e('0x29')]);_0x5e2db6[_0xce8e('0x2c')]=_['keys'](_0x416ee8[_0xce8e('0x2c')]);_0x5e2db6[_0xce8e('0x46')]=_[_0xce8e('0x2f')](_0x5e2db6['model'],_0x5e2db6[_0xce8e('0x2c')]);_0xee918e[_0xce8e('0x2e')]=_[_0xce8e('0x2f')](_0x5e2db6[_0xce8e('0x2b')],qs[_0xce8e('0x30')](_0x416ee8[_0xce8e('0x2c')][_0xce8e('0x30')]));_0xee918e[_0xce8e('0x2e')]=_0xee918e[_0xce8e('0x2e')][_0xce8e('0x31')]?_0xee918e[_0xce8e('0x2e')]:_0x5e2db6[_0xce8e('0x2b')];_0xee918e['order']=qs[_0xce8e('0x35')](_0x416ee8['query']['sort']);_0xee918e['where']=qs[_0xce8e('0x46')](_['pick'](_0x416ee8[_0xce8e('0x2c')],_0x5e2db6[_0xce8e('0x46')]));if(_0x416ee8[_0xce8e('0x2c')]['filter']){_0xee918e[_0xce8e('0x36')]=_[_0xce8e('0x39')](_0xee918e[_0xce8e('0x36')],{'$or':_['map'](_0xee918e[_0xce8e('0x2e')],function(_0x4f6dff){var _0x50db5f={};_0x50db5f[_0x4f6dff]={'$like':'%'+_0x416ee8[_0xce8e('0x2c')]['filter']+'%'};return _0x50db5f;})});}_0xee918e=_[_0xce8e('0x39')]({},_0xee918e,_0x416ee8[_0xce8e('0x47')]);return _0x4f432c[_0xce8e('0x48')](_0xee918e);}})[_0xce8e('0x20')](function(_0x43d423){if(_0x43d423){_0x389ee2=_0x43d423['length'];if(!_0x416ee8[_0xce8e('0x2c')][_0xce8e('0x32')](_0xce8e('0x33'))){_0xee918e['limit']=qs[_0xce8e('0x1a')](_0x416ee8['query'][_0xce8e('0x1a')]);_0xee918e[_0xce8e('0x1b')]=qs[_0xce8e('0x1b')](_0x416ee8[_0xce8e('0x2c')][_0xce8e('0x1b')]);}return _0x4f432c[_0xce8e('0x48')](_0xee918e);}})[_0xce8e('0x20')](function(_0x19b9b6){if(_0x19b9b6){return _0x19b9b6?{'count':_0x389ee2,'rows':_0x19b9b6}:null;}})[_0xce8e('0x20')](respondWithResult(_0x286b3e,null))[_0xce8e('0x3e')](handleError(_0x286b3e,null));};exports[_0xce8e('0x49')]=function(_0x959a98,_0x6e0a5c,_0x532b29){var _0x56ba8d={};var _0x229a52={};var _0x57d6a2;var _0x4b4190;return db[_0xce8e('0x28')][_0xce8e('0x4a')]({'where':{'id':_0x959a98[_0xce8e('0x40')]['id']}})[_0xce8e('0x20')](handleEntityNotFound(_0x6e0a5c,null))[_0xce8e('0x20')](function(_0x374cad){if(_0x374cad){_0x57d6a2=_0x374cad;_0x229a52[_0xce8e('0x2b')]=_[_0xce8e('0x2d')](db[_0xce8e('0x45')][_0xce8e('0x29')]);_0x229a52[_0xce8e('0x2c')]=_['keys'](_0x959a98[_0xce8e('0x2c')]);_0x229a52[_0xce8e('0x46')]=_['intersection'](_0x229a52['model'],_0x229a52['query']);_0x56ba8d['attributes']=_['intersection'](_0x229a52[_0xce8e('0x2b')],qs[_0xce8e('0x30')](_0x959a98[_0xce8e('0x2c')][_0xce8e('0x30')]));_0x56ba8d[_0xce8e('0x2e')]=_0x56ba8d[_0xce8e('0x2e')][_0xce8e('0x31')]?_0x56ba8d[_0xce8e('0x2e')]:_0x229a52[_0xce8e('0x2b')];_0x56ba8d[_0xce8e('0x34')]=qs[_0xce8e('0x35')](_0x959a98[_0xce8e('0x2c')][_0xce8e('0x35')]);_0x56ba8d[_0xce8e('0x36')]=qs[_0xce8e('0x46')](_[_0xce8e('0x37')](_0x959a98[_0xce8e('0x2c')],_0x229a52[_0xce8e('0x46')]));if(_0x959a98['query']['filter']){_0x56ba8d[_0xce8e('0x36')]=_[_0xce8e('0x39')](_0x56ba8d[_0xce8e('0x36')],{'$or':_[_0xce8e('0x27')](_0x56ba8d[_0xce8e('0x2e')],function(_0x3188f5){var _0x39f9a0={};_0x39f9a0[_0x3188f5]={'$like':'%'+_0x959a98['query'][_0xce8e('0x38')]+'%'};return _0x39f9a0;})});}_0x56ba8d=_[_0xce8e('0x39')]({},_0x56ba8d,_0x959a98['options']);return _0x57d6a2['getSubjects'](_0x56ba8d);}})['then'](function(_0x23ebf8){if(_0x23ebf8){_0x4b4190=_0x23ebf8[_0xce8e('0x31')];if(!_0x959a98[_0xce8e('0x2c')][_0xce8e('0x32')](_0xce8e('0x33'))){_0x56ba8d[_0xce8e('0x1a')]=qs['limit'](_0x959a98[_0xce8e('0x2c')][_0xce8e('0x1a')]);_0x56ba8d[_0xce8e('0x1b')]=qs[_0xce8e('0x1b')](_0x959a98['query'][_0xce8e('0x1b')]);}return _0x57d6a2[_0xce8e('0x49')](_0x56ba8d);}})['then'](function(_0x370c2b){if(_0x370c2b){return _0x370c2b?{'count':_0x4b4190,'rows':_0x370c2b}:null;}})[_0xce8e('0x20')](respondWithResult(_0x6e0a5c,null))[_0xce8e('0x3e')](handleError(_0x6e0a5c,null));};exports[_0xce8e('0x4b')]=function(_0x4e70af,_0x534793,_0x1a73d6){var _0xcaf2b3={};var _0x35abef={};var _0x23b295;var _0x4d6f5b;return db['SugarcrmConfiguration'][_0xce8e('0x4a')]({'where':{'id':_0x4e70af[_0xce8e('0x40')]['id']}})[_0xce8e('0x20')](handleEntityNotFound(_0x534793,null))['then'](function(_0x11d53f){if(_0x11d53f){_0x23b295=_0x11d53f;_0x35abef['model']=_['keys'](db[_0xce8e('0x45')]['rawAttributes']);_0x35abef[_0xce8e('0x2c')]=_[_0xce8e('0x2d')](_0x4e70af[_0xce8e('0x2c')]);_0x35abef['filters']=_['intersection'](_0x35abef['model'],_0x35abef[_0xce8e('0x2c')]);_0xcaf2b3[_0xce8e('0x2e')]=_[_0xce8e('0x2f')](_0x35abef[_0xce8e('0x2b')],qs['fields'](_0x4e70af[_0xce8e('0x2c')]['fields']));_0xcaf2b3[_0xce8e('0x2e')]=_0xcaf2b3[_0xce8e('0x2e')][_0xce8e('0x31')]?_0xcaf2b3[_0xce8e('0x2e')]:_0x35abef[_0xce8e('0x2b')];_0xcaf2b3[_0xce8e('0x34')]=qs[_0xce8e('0x35')](_0x4e70af[_0xce8e('0x2c')]['sort']);_0xcaf2b3[_0xce8e('0x36')]=qs[_0xce8e('0x46')](_[_0xce8e('0x37')](_0x4e70af[_0xce8e('0x2c')],_0x35abef['filters']));if(_0x4e70af['query'][_0xce8e('0x38')]){_0xcaf2b3[_0xce8e('0x36')]=_[_0xce8e('0x39')](_0xcaf2b3[_0xce8e('0x36')],{'$or':_[_0xce8e('0x27')](_0xcaf2b3[_0xce8e('0x2e')],function(_0x5a0a97){var _0x26619b={};_0x26619b[_0x5a0a97]={'$like':'%'+_0x4e70af[_0xce8e('0x2c')]['filter']+'%'};return _0x26619b;})});}_0xcaf2b3=_[_0xce8e('0x39')]({},_0xcaf2b3,_0x4e70af[_0xce8e('0x47')]);return _0x23b295['getDescriptions'](_0xcaf2b3);}})[_0xce8e('0x20')](function(_0x2bbba4){if(_0x2bbba4){_0x4d6f5b=_0x2bbba4[_0xce8e('0x31')];if(!_0x4e70af[_0xce8e('0x2c')][_0xce8e('0x32')](_0xce8e('0x33'))){_0xcaf2b3['limit']=qs[_0xce8e('0x1a')](_0x4e70af[_0xce8e('0x2c')][_0xce8e('0x1a')]);_0xcaf2b3[_0xce8e('0x1b')]=qs[_0xce8e('0x1b')](_0x4e70af[_0xce8e('0x2c')]['offset']);}return _0x23b295[_0xce8e('0x4b')](_0xcaf2b3);}})[_0xce8e('0x20')](function(_0x37cd2){if(_0x37cd2){return _0x37cd2?{'count':_0x4d6f5b,'rows':_0x37cd2}:null;}})[_0xce8e('0x20')](respondWithResult(_0x534793,null))['catch'](handleError(_0x534793,null));};
\ No newline at end of file
index 82c7efe..8aa8a54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3244=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','define','SugarcrmConfiguration','int_sugarcrm_configurations'];(function(_0x296809,_0x1c9665){var _0x18c0d3=function(_0x249156){while(--_0x249156){_0x296809['push'](_0x296809['shift']());}};_0x18c0d3(++_0x1c9665);}(_0x3244,0x9c));var _0x4324=function(_0x1ef0e8,_0x2bc4b9){_0x1ef0e8=_0x1ef0e8-0x0;var _0x4e4333=_0x3244[_0x1ef0e8];return _0x4e4333;};'use strict';var _=require(_0x4324('0x0'));var util=require(_0x4324('0x1'));var logger=require(_0x4324('0x2'))(_0x4324('0x3'));var moment=require(_0x4324('0x4'));var BPromise=require(_0x4324('0x5'));var rp=require(_0x4324('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4324('0x7'));var config=require(_0x4324('0x8'));var attributes=require('./intSugarcrmConfiguration.attributes');module['exports']=function(_0x5db900,_0x226c1e){return _0x5db900[_0x4324('0x9')](_0x4324('0xa'),attributes,{'tableName':_0x4324('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4b09=['exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x37af2e,_0x41b6d7){var _0x54c46f=function(_0x1de05f){while(--_0x1de05f){_0x37af2e['push'](_0x37af2e['shift']());}};_0x54c46f(++_0x41b6d7);}(_0x4b09,0x1cc));var _0x94b0=function(_0x1c8c28,_0x3ee093){_0x1c8c28=_0x1c8c28-0x0;var _0x1f59b4=_0x4b09[_0x1c8c28];return _0x1f59b4;};'use strict';var _=require(_0x94b0('0x0'));var util=require(_0x94b0('0x1'));var logger=require(_0x94b0('0x2'))(_0x94b0('0x3'));var moment=require(_0x94b0('0x4'));var BPromise=require('bluebird');var rp=require(_0x94b0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x94b0('0x6'));var config=require(_0x94b0('0x7'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x94b0('0x8')]=function(_0x35155b,_0x1f34ed){return _0x35155b[_0x94b0('0x9')](_0x94b0('0xa'),attributes,{'tableName':_0x94b0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60314bf..e14dfa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2894=['jayson/promise','http','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x457e16,_0x47dc45){var _0x534ddb=function(_0x3e06ce){while(--_0x3e06ce){_0x457e16['push'](_0x457e16['shift']());}};_0x534ddb(++_0x47dc45);}(_0x2894,0x19a));var _0x4289=function(_0x463183,_0x56bd4e){_0x463183=_0x463183-0x0;var _0xd5fe56=_0x2894[_0x463183];return _0xd5fe56;};'use strict';var _=require(_0x4289('0x0'));var util=require(_0x4289('0x1'));var moment=require(_0x4289('0x2'));var BPromise=require('bluebird');var rs=require(_0x4289('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4289('0x4'))['db'];var utils=require(_0x4289('0x5'));var logger=require('../../config/logger')(_0x4289('0x6'));var config=require(_0x4289('0x7'));var jayson=require(_0x4289('0x8'));var client=jayson['client'][_0x4289('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ed228,_0x5f3848,_0x420aab){return new BPromise(function(_0xb402a4,_0x1c7ef2){return client[_0x4289('0xa')](_0x4ed228,_0x420aab)[_0x4289('0xb')](function(_0x6ddbce){logger[_0x4289('0xc')](_0x4289('0xd'),_0x5f3848,_0x4289('0xe'));logger[_0x4289('0xf')](_0x4289('0x10'),_0x5f3848,_0x4289('0xe'),JSON[_0x4289('0x11')](_0x6ddbce));if(_0x6ddbce[_0x4289('0x12')]){if(_0x6ddbce['error']['code']===0x1f4){logger[_0x4289('0x12')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5f3848,_0x6ddbce[_0x4289('0x12')][_0x4289('0x13')]);return _0x1c7ef2(_0x6ddbce[_0x4289('0x12')][_0x4289('0x13')]);}logger[_0x4289('0x12')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5f3848,_0x6ddbce['error']['message']);return _0xb402a4(_0x6ddbce[_0x4289('0x12')][_0x4289('0x13')]);}else{logger[_0x4289('0xc')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5f3848,'request\x20sent');_0xb402a4(_0x6ddbce[_0x4289('0x14')]['message']);}})[_0x4289('0x15')](function(_0x3ea0ff){logger[_0x4289('0x12')](_0x4289('0xd'),_0x5f3848,_0x3ea0ff);_0x1c7ef2(_0x3ea0ff);});});}
\ No newline at end of file
+var _0xbf07=['../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xbf07,0xe0));var _0x7bf0=function(_0x19dd7a,_0x51de21){_0x19dd7a=_0x19dd7a-0x0;var _0x3feb6a=_0xbf07[_0x19dd7a];return _0x3feb6a;};'use strict';var _=require('lodash');var util=require(_0x7bf0('0x0'));var moment=require(_0x7bf0('0x1'));var BPromise=require(_0x7bf0('0x2'));var rs=require(_0x7bf0('0x3'));var fs=require('fs');var Redis=require(_0x7bf0('0x4'));var db=require(_0x7bf0('0x5'))['db'];var utils=require(_0x7bf0('0x6'));var logger=require(_0x7bf0('0x7'))(_0x7bf0('0x8'));var config=require(_0x7bf0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7bf0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x171015,_0x5b9f28,_0x3f788a){return new BPromise(function(_0x9a2aad,_0x214210){return client[_0x7bf0('0xb')](_0x171015,_0x3f788a)[_0x7bf0('0xc')](function(_0x1e9042){logger[_0x7bf0('0xd')](_0x7bf0('0xe'),_0x5b9f28,_0x7bf0('0xf'));logger[_0x7bf0('0x10')](_0x7bf0('0x11'),_0x5b9f28,_0x7bf0('0xf'),JSON['stringify'](_0x1e9042));if(_0x1e9042[_0x7bf0('0x12')]){if(_0x1e9042[_0x7bf0('0x12')][_0x7bf0('0x13')]===0x1f4){logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x5b9f28,_0x1e9042[_0x7bf0('0x12')][_0x7bf0('0x14')]);return _0x214210(_0x1e9042['error']['message']);}logger[_0x7bf0('0x12')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5b9f28,_0x1e9042['error'][_0x7bf0('0x14')]);return _0x9a2aad(_0x1e9042[_0x7bf0('0x12')][_0x7bf0('0x14')]);}else{logger[_0x7bf0('0xd')](_0x7bf0('0xe'),_0x5b9f28,'request\x20sent');_0x9a2aad(_0x1e9042[_0x7bf0('0x15')]['message']);}})[_0x7bf0('0x16')](function(_0xdde2f8){logger[_0x7bf0('0x12')](_0x7bf0('0xe'),_0x5b9f28,_0xdde2f8);_0x214210(_0xdde2f8);});});}
\ No newline at end of file
index a437a39..3125c7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bd5=['delete','/:id','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','isAuthenticated','index','get','show','post','create','put'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x8bd5,0x107));var _0x58bd=function(_0x5854b8,_0x54265c){_0x5854b8=_0x5854b8-0x0;var _0x48ca8c=_0x8bd5[_0x5854b8];return _0x48ca8c;};'use strict';var multer=require('multer');var util=require(_0x58bd('0x0'));var path=require(_0x58bd('0x1'));var timeout=require(_0x58bd('0x2'));var express=require(_0x58bd('0x3'));var router=express[_0x58bd('0x4')]();var fs_extra=require(_0x58bd('0x5'));var auth=require(_0x58bd('0x6'));var interaction=require(_0x58bd('0x7'));var config=require(_0x58bd('0x8'));var controller=require(_0x58bd('0x9'));router['get']('/',auth[_0x58bd('0xa')](),controller[_0x58bd('0xb')]);router[_0x58bd('0xc')]('/:id',auth[_0x58bd('0xa')](),controller[_0x58bd('0xd')]);router[_0x58bd('0xe')]('/',auth['isAuthenticated'](),controller[_0x58bd('0xf')]);router[_0x58bd('0x10')]('/:id',auth[_0x58bd('0xa')](),controller['update']);router[_0x58bd('0x11')](_0x58bd('0x12'),auth['isAuthenticated'](),controller['destroy']);module[_0x58bd('0x13')]=router;
\ No newline at end of file
+var _0xacaa=['path','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','put','/:id','update','delete','destroy','exports','multer'];(function(_0x542cba,_0x2ac46e){var _0x26406b=function(_0x5d2ac8){while(--_0x5d2ac8){_0x542cba['push'](_0x542cba['shift']());}};_0x26406b(++_0x2ac46e);}(_0xacaa,0xbf));var _0xaaca=function(_0x409557,_0x1caae1){_0x409557=_0x409557-0x0;var _0x275469=_0xacaa[_0x409557];return _0x275469;};'use strict';var multer=require(_0xaaca('0x0'));var util=require('util');var path=require(_0xaaca('0x1'));var timeout=require('connect-timeout');var express=require(_0xaaca('0x2'));var router=express[_0xaaca('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaaca('0x4'));var config=require(_0xaaca('0x5'));var controller=require('./intSugarcrmField.controller');router[_0xaaca('0x6')]('/',auth[_0xaaca('0x7')](),controller[_0xaaca('0x8')]);router['get']('/:id',auth[_0xaaca('0x7')](),controller[_0xaaca('0x9')]);router['post']('/',auth[_0xaaca('0x7')](),controller['create']);router[_0xaaca('0xa')](_0xaaca('0xb'),auth[_0xaaca('0x7')](),controller[_0xaaca('0xc')]);router[_0xaaca('0xd')](_0xaaca('0xb'),auth['isAuthenticated'](),controller[_0xaaca('0xe')]);module[_0xaaca('0xf')]=router;
\ No newline at end of file
index a899e5f..ed89591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1e9=['BOOLEAN','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xa1e9,0x6d));var _0x9a1e=function(_0x2c1fc6,_0x292eab){_0x2c1fc6=_0x2c1fc6-0x0;var _0x59335b=_0xa1e9[_0x2c1fc6];return _0x59335b;};'use strict';var Sequelize=require('sequelize');module[_0x9a1e('0x0')]={'type':{'type':Sequelize[_0x9a1e('0x1')](_0x9a1e('0x2'),_0x9a1e('0x3'),_0x9a1e('0x4'),_0x9a1e('0x5'),_0x9a1e('0x6')),'defaultValue':_0x9a1e('0x2')},'content':{'type':Sequelize[_0x9a1e('0x7')]},'key':{'type':Sequelize[_0x9a1e('0x7')]},'keyType':{'type':Sequelize[_0x9a1e('0x1')](_0x9a1e('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x9a1e('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x9a1e('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9a1e('0x7')]}};
\ No newline at end of file
+var _0x669b=['string','variable','keyValue','picklist','STRING','customVariable','BOOLEAN','sequelize','exports','ENUM'];(function(_0x27ea8e,_0x254f53){var _0x4459f9=function(_0x1e2bef){while(--_0x1e2bef){_0x27ea8e['push'](_0x27ea8e['shift']());}};_0x4459f9(++_0x254f53);}(_0x669b,0xed));var _0xb669=function(_0x25e509,_0x246456){_0x25e509=_0x25e509-0x0;var _0x342ab7=_0x669b[_0x25e509];return _0x342ab7;};'use strict';var Sequelize=require(_0xb669('0x0'));module[_0xb669('0x1')]={'type':{'type':Sequelize[_0xb669('0x2')](_0xb669('0x3'),_0xb669('0x4'),'customVariable',_0xb669('0x5'),_0xb669('0x6')),'defaultValue':_0xb669('0x3')},'content':{'type':Sequelize[_0xb669('0x7')]},'key':{'type':Sequelize[_0xb669('0x7')]},'keyType':{'type':Sequelize[_0xb669('0x2')](_0xb669('0x3'),'variable',_0xb669('0x8'))},'keyContent':{'type':Sequelize[_0xb669('0x7')]},'idField':{'type':Sequelize[_0xb669('0x7')]},'nameField':{'type':Sequelize[_0xb669('0x7')]},'customField':{'type':Sequelize[_0xb669('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb669('0x7')]}};
\ No newline at end of file
index ffd64b3..7995e2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x879b=['Content-Range','apply','reject','save','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','SugarcrmField','includeAll','include','findAll','rows','show','keys','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','fs-extra','lodash','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','end','undefined','limit','count','offset'];(function(_0x591f27,_0x36a050){var _0x464a4a=function(_0x5026a3){while(--_0x5026a3){_0x591f27['push'](_0x591f27['shift']());}};_0x464a4a(++_0x36a050);}(_0x879b,0xf4));var _0xb879=function(_0x22665a,_0x1668e5){_0x22665a=_0x22665a-0x0;var _0xa1acb3=_0x879b[_0x22665a];return _0xa1acb3;};'use strict';var emlformat=require(_0xb879('0x0'));var rimraf=require(_0xb879('0x1'));var zipdir=require(_0xb879('0x2'));var jsonpatch=require(_0xb879('0x3'));var rp=require('request-promise');var moment=require(_0xb879('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb879('0x5'));var util=require(_0xb879('0x6'));var path=require('path');var sox=require(_0xb879('0x7'));var csv=require(_0xb879('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb879('0x9'));var _=require(_0xb879('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb879('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb879('0xc'));var Redis=require(_0xb879('0xd'));var authService=require(_0xb879('0xe'));var qs=require(_0xb879('0xf'));var as=require(_0xb879('0x10'));var hardwareService=require(_0xb879('0x11'));var logger=require('../../config/logger')(_0xb879('0x12'));var utils=require(_0xb879('0x13'));var config=require(_0xb879('0x14'));var licenseUtil=require(_0xb879('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x144f39,_0x5a8485){_0x5a8485=_0x5a8485||0xcc;return function(_0x49e7e5){if(_0x49e7e5){return _0x144f39['sendStatus'](_0x5a8485);}return _0x144f39[_0xb879('0x16')](_0x5a8485)[_0xb879('0x17')]();};}function respondWithResult(_0x3bdfba,_0x503831){_0x503831=_0x503831||0xc8;return function(_0x500111){if(_0x500111){return _0x3bdfba[_0xb879('0x16')](_0x503831)['json'](_0x500111);}};}function respondWithFilteredResult(_0x147144,_0x13fd42){return function(_0x508aa7){if(_0x508aa7){var _0x13b129=typeof _0x13fd42['offset']===_0xb879('0x18')&&typeof _0x13fd42[_0xb879('0x19')]==='undefined';var _0x526e5b=_0x508aa7[_0xb879('0x1a')];var _0x588260=_0x13b129?0x0:_0x13fd42[_0xb879('0x1b')];var _0x277d82=_0x13b129?_0x508aa7[_0xb879('0x1a')]:_0x13fd42['offset']+_0x13fd42[_0xb879('0x19')];var _0x20f475;if(_0x277d82>=_0x526e5b){_0x277d82=_0x526e5b;_0x20f475=0xc8;}else{_0x20f475=0xce;}_0x147144[_0xb879('0x16')](_0x20f475);return _0x147144['set'](_0xb879('0x1c'),_0x588260+'-'+_0x277d82+'/'+_0x526e5b)['json'](_0x508aa7);}return null;};}function patchUpdates(_0x19bccd){return function(_0x54e17c){try{jsonpatch[_0xb879('0x1d')](_0x54e17c,_0x19bccd,!![]);}catch(_0x4b896d){return BPromise[_0xb879('0x1e')](_0x4b896d);}return _0x54e17c[_0xb879('0x1f')]();};}function saveUpdates(_0x1169f0,_0x29ffc9){return function(_0x38af0e){if(_0x38af0e){return _0x38af0e['update'](_0x1169f0)['then'](function(_0xf12221){return _0xf12221;});}return null;};}function removeEntity(_0x177ce6,_0x177679){return function(_0x4c409a){if(_0x4c409a){return _0x4c409a[_0xb879('0x20')]()[_0xb879('0x21')](function(){_0x177ce6[_0xb879('0x16')](0xcc)[_0xb879('0x17')]();});}};}function handleEntityNotFound(_0x5b62c5,_0x37d9b9){return function(_0xfd1bf9){if(!_0xfd1bf9){_0x5b62c5['sendStatus'](0x194);}return _0xfd1bf9;};}function handleError(_0xabc9d0,_0x200d19){_0x200d19=_0x200d19||0x1f4;return function(_0x33366f){logger[_0xb879('0x22')](_0x33366f[_0xb879('0x23')]);if(_0x33366f[_0xb879('0x24')]){delete _0x33366f[_0xb879('0x24')];}_0xabc9d0[_0xb879('0x16')](_0x200d19)[_0xb879('0x25')](_0x33366f);};}exports[_0xb879('0x26')]=function(_0x360fb2,_0x32306f){var _0x5ce102={},_0x52da81={},_0x208058={'count':0x0,'rows':[]};var _0x19c5e9=_[_0xb879('0x27')](db['SugarcrmField'][_0xb879('0x28')],function(_0x167e4c){return{'name':_0x167e4c[_0xb879('0x29')],'type':_0x167e4c[_0xb879('0x2a')][_0xb879('0x2b')]};});_0x52da81[_0xb879('0x2c')]=_[_0xb879('0x27')](_0x19c5e9,_0xb879('0x24'));_0x52da81[_0xb879('0x2d')]=_['keys'](_0x360fb2[_0xb879('0x2d')]);_0x52da81[_0xb879('0x2e')]=_[_0xb879('0x2f')](_0x52da81[_0xb879('0x2c')],_0x52da81[_0xb879('0x2d')]);_0x5ce102[_0xb879('0x30')]=_[_0xb879('0x2f')](_0x52da81['model'],qs['fields'](_0x360fb2[_0xb879('0x2d')][_0xb879('0x31')]));_0x5ce102[_0xb879('0x30')]=_0x5ce102[_0xb879('0x30')][_0xb879('0x32')]?_0x5ce102[_0xb879('0x30')]:_0x52da81['model'];if(!_0x360fb2[_0xb879('0x2d')][_0xb879('0x33')]('nolimit')){_0x5ce102[_0xb879('0x19')]=qs[_0xb879('0x19')](_0x360fb2[_0xb879('0x2d')][_0xb879('0x19')]);_0x5ce102[_0xb879('0x1b')]=qs['offset'](_0x360fb2[_0xb879('0x2d')][_0xb879('0x1b')]);}_0x5ce102[_0xb879('0x34')]=qs[_0xb879('0x35')](_0x360fb2[_0xb879('0x2d')]['sort']);_0x5ce102[_0xb879('0x36')]=qs[_0xb879('0x2e')](_['pick'](_0x360fb2[_0xb879('0x2d')],_0x52da81[_0xb879('0x2e')]),_0x19c5e9);if(_0x360fb2[_0xb879('0x2d')][_0xb879('0x37')]){_0x5ce102['where']=_[_0xb879('0x38')](_0x5ce102[_0xb879('0x36')],{'$or':_[_0xb879('0x27')](_0x19c5e9,function(_0x1cee37){if(_0x1cee37[_0xb879('0x2a')]!=='VIRTUAL'){var _0x238522={};_0x238522[_0x1cee37[_0xb879('0x24')]]={'$like':'%'+_0x360fb2['query']['filter']+'%'};return _0x238522;}})});}_0x5ce102=_['merge']({},_0x5ce102,_0x360fb2['options']);var _0x91deec={'where':_0x5ce102[_0xb879('0x36')]};return db[_0xb879('0x39')][_0xb879('0x1a')](_0x91deec)[_0xb879('0x21')](function(_0x4c97d5){_0x208058[_0xb879('0x1a')]=_0x4c97d5;if(_0x360fb2[_0xb879('0x2d')][_0xb879('0x3a')]){_0x5ce102[_0xb879('0x3b')]=[{'all':!![]}];}return db[_0xb879('0x39')][_0xb879('0x3c')](_0x5ce102);})[_0xb879('0x21')](function(_0x1b391f){_0x208058[_0xb879('0x3d')]=_0x1b391f;return _0x208058;})[_0xb879('0x21')](respondWithFilteredResult(_0x32306f,_0x5ce102))['catch'](handleError(_0x32306f,null));};exports[_0xb879('0x3e')]=function(_0x21c153,_0x33bc83){var _0x20f0e2={'raw':!![],'where':{'id':_0x21c153['params']['id']}},_0x2567e7={};_0x2567e7[_0xb879('0x2c')]=_[_0xb879('0x3f')](db[_0xb879('0x39')][_0xb879('0x28')]);_0x2567e7[_0xb879('0x2d')]=_[_0xb879('0x3f')](_0x21c153[_0xb879('0x2d')]);_0x2567e7[_0xb879('0x2e')]=_['intersection'](_0x2567e7['model'],_0x2567e7['query']);_0x20f0e2[_0xb879('0x30')]=_[_0xb879('0x2f')](_0x2567e7['model'],qs['fields'](_0x21c153[_0xb879('0x2d')][_0xb879('0x31')]));_0x20f0e2[_0xb879('0x30')]=_0x20f0e2[_0xb879('0x30')][_0xb879('0x32')]?_0x20f0e2[_0xb879('0x30')]:_0x2567e7[_0xb879('0x2c')];if(_0x21c153[_0xb879('0x2d')][_0xb879('0x3a')]){_0x20f0e2['include']=[{'all':!![]}];}_0x20f0e2=_[_0xb879('0x38')]({},_0x20f0e2,_0x21c153['options']);return db[_0xb879('0x39')][_0xb879('0x40')](_0x20f0e2)[_0xb879('0x21')](handleEntityNotFound(_0x33bc83,null))[_0xb879('0x21')](respondWithResult(_0x33bc83,null))[_0xb879('0x41')](handleError(_0x33bc83,null));};exports['create']=function(_0x47621b,_0x1e72e0){return db['SugarcrmField'][_0xb879('0x42')](_0x47621b['body'],{})['then'](respondWithResult(_0x1e72e0,0xc9))['catch'](handleError(_0x1e72e0,null));};exports['update']=function(_0x3c648e,_0x2dfb8a){if(_0x3c648e['body']['id']){delete _0x3c648e[_0xb879('0x43')]['id'];}return db['SugarcrmField'][_0xb879('0x40')]({'where':{'id':_0x3c648e['params']['id']}})[_0xb879('0x21')](handleEntityNotFound(_0x2dfb8a,null))['then'](saveUpdates(_0x3c648e[_0xb879('0x43')],null))[_0xb879('0x21')](respondWithResult(_0x2dfb8a,null))[_0xb879('0x41')](handleError(_0x2dfb8a,null));};exports[_0xb879('0x20')]=function(_0x29323f,_0x3a2f16){return db[_0xb879('0x39')][_0xb879('0x40')]({'where':{'id':_0x29323f['params']['id']}})[_0xb879('0x21')](handleEntityNotFound(_0x3a2f16,null))[_0xb879('0x21')](removeEntity(_0x3a2f16,null))[_0xb879('0x41')](handleError(_0x3a2f16,null));};
\ No newline at end of file
+var _0xbf04=['lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','SugarcrmField','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','includeAll','include','rows','catch','show','params','options','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra'];(function(_0x161c0b,_0x22a73f){var _0x29bcab=function(_0x167778){while(--_0x167778){_0x161c0b['push'](_0x161c0b['shift']());}};_0x29bcab(++_0x22a73f);}(_0xbf04,0xd5));var _0x4bf0=function(_0x57850b,_0x40c735){_0x57850b=_0x57850b-0x0;var _0x399b17=_0xbf04[_0x57850b];return _0x399b17;};'use strict';var emlformat=require(_0x4bf0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4bf0('0x1'));var jsonpatch=require(_0x4bf0('0x2'));var rp=require(_0x4bf0('0x3'));var moment=require(_0x4bf0('0x4'));var BPromise=require(_0x4bf0('0x5'));var Mustache=require(_0x4bf0('0x6'));var util=require('util');var path=require(_0x4bf0('0x7'));var sox=require(_0x4bf0('0x8'));var csv=require(_0x4bf0('0x9'));var ejs=require(_0x4bf0('0xa'));var fs=require('fs');var fs_extra=require(_0x4bf0('0xb'));var _=require(_0x4bf0('0xc'));var squel=require(_0x4bf0('0xd'));var crypto=require(_0x4bf0('0xe'));var jsforce=require(_0x4bf0('0xf'));var deskjs=require(_0x4bf0('0x10'));var toCsv=require(_0x4bf0('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4bf0('0x11'));var qs=require(_0x4bf0('0x12'));var as=require(_0x4bf0('0x13'));var hardwareService=require(_0x4bf0('0x14'));var logger=require(_0x4bf0('0x15'))(_0x4bf0('0x16'));var utils=require(_0x4bf0('0x17'));var config=require(_0x4bf0('0x18'));var licenseUtil=require(_0x4bf0('0x19'));var db=require(_0x4bf0('0x1a'))['db'];function respondWithStatusCode(_0x455d0b,_0x5a7eb4){_0x5a7eb4=_0x5a7eb4||0xcc;return function(_0x523db7){if(_0x523db7){return _0x455d0b['sendStatus'](_0x5a7eb4);}return _0x455d0b[_0x4bf0('0x1b')](_0x5a7eb4)[_0x4bf0('0x1c')]();};}function respondWithResult(_0x13c636,_0x4a8762){_0x4a8762=_0x4a8762||0xc8;return function(_0x351a5c){if(_0x351a5c){return _0x13c636[_0x4bf0('0x1b')](_0x4a8762)[_0x4bf0('0x1d')](_0x351a5c);}};}function respondWithFilteredResult(_0x3e0559,_0x4d6272){return function(_0x535aa0){if(_0x535aa0){var _0x13b5f9=typeof _0x4d6272[_0x4bf0('0x1e')]===_0x4bf0('0x1f')&&typeof _0x4d6272[_0x4bf0('0x20')]===_0x4bf0('0x1f');var _0x3205fe=_0x535aa0[_0x4bf0('0x21')];var _0x58edbf=_0x13b5f9?0x0:_0x4d6272[_0x4bf0('0x1e')];var _0x468f04=_0x13b5f9?_0x535aa0[_0x4bf0('0x21')]:_0x4d6272[_0x4bf0('0x1e')]+_0x4d6272[_0x4bf0('0x20')];var _0x56d27e;if(_0x468f04>=_0x3205fe){_0x468f04=_0x3205fe;_0x56d27e=0xc8;}else{_0x56d27e=0xce;}_0x3e0559[_0x4bf0('0x1b')](_0x56d27e);return _0x3e0559['set']('Content-Range',_0x58edbf+'-'+_0x468f04+'/'+_0x3205fe)[_0x4bf0('0x1d')](_0x535aa0);}return null;};}function patchUpdates(_0x31d1c1){return function(_0xe24a72){try{jsonpatch['apply'](_0xe24a72,_0x31d1c1,!![]);}catch(_0x488e50){return BPromise[_0x4bf0('0x22')](_0x488e50);}return _0xe24a72[_0x4bf0('0x23')]();};}function saveUpdates(_0x4643fc,_0x28db8c){return function(_0x5b5e9f){if(_0x5b5e9f){return _0x5b5e9f[_0x4bf0('0x24')](_0x4643fc)[_0x4bf0('0x25')](function(_0x43f347){return _0x43f347;});}return null;};}function removeEntity(_0x1ff53b,_0x5a82f9){return function(_0x314468){if(_0x314468){return _0x314468[_0x4bf0('0x26')]()[_0x4bf0('0x25')](function(){_0x1ff53b[_0x4bf0('0x1b')](0xcc)[_0x4bf0('0x1c')]();});}};}function handleEntityNotFound(_0x30fc42,_0x2c0157){return function(_0x2544c8){if(!_0x2544c8){_0x30fc42[_0x4bf0('0x27')](0x194);}return _0x2544c8;};}function handleError(_0x1c4e0b,_0x407c75){_0x407c75=_0x407c75||0x1f4;return function(_0x251493){logger[_0x4bf0('0x28')](_0x251493[_0x4bf0('0x29')]);if(_0x251493[_0x4bf0('0x2a')]){delete _0x251493[_0x4bf0('0x2a')];}_0x1c4e0b[_0x4bf0('0x1b')](_0x407c75)['send'](_0x251493);};}exports[_0x4bf0('0x2b')]=function(_0x2ce9b0,_0x24ad3a){var _0x570d5b={},_0x4a4df2={},_0x3356d8={'count':0x0,'rows':[]};var _0x7cd777=_[_0x4bf0('0x2c')](db[_0x4bf0('0x2d')][_0x4bf0('0x2e')],function(_0x33646a){return{'name':_0x33646a[_0x4bf0('0x2f')],'type':_0x33646a[_0x4bf0('0x30')][_0x4bf0('0x31')]};});_0x4a4df2[_0x4bf0('0x32')]=_[_0x4bf0('0x2c')](_0x7cd777,_0x4bf0('0x2a'));_0x4a4df2[_0x4bf0('0x33')]=_[_0x4bf0('0x34')](_0x2ce9b0[_0x4bf0('0x33')]);_0x4a4df2['filters']=_[_0x4bf0('0x35')](_0x4a4df2[_0x4bf0('0x32')],_0x4a4df2['query']);_0x570d5b['attributes']=_[_0x4bf0('0x35')](_0x4a4df2[_0x4bf0('0x32')],qs[_0x4bf0('0x36')](_0x2ce9b0[_0x4bf0('0x33')]['fields']));_0x570d5b[_0x4bf0('0x37')]=_0x570d5b[_0x4bf0('0x37')][_0x4bf0('0x38')]?_0x570d5b['attributes']:_0x4a4df2[_0x4bf0('0x32')];if(!_0x2ce9b0[_0x4bf0('0x33')][_0x4bf0('0x39')](_0x4bf0('0x3a'))){_0x570d5b[_0x4bf0('0x20')]=qs[_0x4bf0('0x20')](_0x2ce9b0[_0x4bf0('0x33')][_0x4bf0('0x20')]);_0x570d5b[_0x4bf0('0x1e')]=qs[_0x4bf0('0x1e')](_0x2ce9b0[_0x4bf0('0x33')][_0x4bf0('0x1e')]);}_0x570d5b['order']=qs['sort'](_0x2ce9b0['query'][_0x4bf0('0x3b')]);_0x570d5b['where']=qs[_0x4bf0('0x3c')](_[_0x4bf0('0x3d')](_0x2ce9b0[_0x4bf0('0x33')],_0x4a4df2['filters']),_0x7cd777);if(_0x2ce9b0[_0x4bf0('0x33')][_0x4bf0('0x3e')]){_0x570d5b[_0x4bf0('0x3f')]=_[_0x4bf0('0x40')](_0x570d5b[_0x4bf0('0x3f')],{'$or':_[_0x4bf0('0x2c')](_0x7cd777,function(_0x57b513){if(_0x57b513[_0x4bf0('0x30')]!=='VIRTUAL'){var _0x4e5cac={};_0x4e5cac[_0x57b513[_0x4bf0('0x2a')]]={'$like':'%'+_0x2ce9b0[_0x4bf0('0x33')][_0x4bf0('0x3e')]+'%'};return _0x4e5cac;}})});}_0x570d5b=_[_0x4bf0('0x40')]({},_0x570d5b,_0x2ce9b0['options']);var _0x38cc49={'where':_0x570d5b['where']};return db[_0x4bf0('0x2d')][_0x4bf0('0x21')](_0x38cc49)['then'](function(_0x3191db){_0x3356d8[_0x4bf0('0x21')]=_0x3191db;if(_0x2ce9b0['query'][_0x4bf0('0x41')]){_0x570d5b[_0x4bf0('0x42')]=[{'all':!![]}];}return db[_0x4bf0('0x2d')]['findAll'](_0x570d5b);})[_0x4bf0('0x25')](function(_0x38cefb){_0x3356d8[_0x4bf0('0x43')]=_0x38cefb;return _0x3356d8;})[_0x4bf0('0x25')](respondWithFilteredResult(_0x24ad3a,_0x570d5b))[_0x4bf0('0x44')](handleError(_0x24ad3a,null));};exports[_0x4bf0('0x45')]=function(_0x15fd6d,_0x3ac691){var _0x26e28e={'raw':!![],'where':{'id':_0x15fd6d[_0x4bf0('0x46')]['id']}},_0x59972f={};_0x59972f[_0x4bf0('0x32')]=_[_0x4bf0('0x34')](db[_0x4bf0('0x2d')]['rawAttributes']);_0x59972f[_0x4bf0('0x33')]=_[_0x4bf0('0x34')](_0x15fd6d[_0x4bf0('0x33')]);_0x59972f[_0x4bf0('0x3c')]=_[_0x4bf0('0x35')](_0x59972f[_0x4bf0('0x32')],_0x59972f[_0x4bf0('0x33')]);_0x26e28e[_0x4bf0('0x37')]=_[_0x4bf0('0x35')](_0x59972f['model'],qs['fields'](_0x15fd6d[_0x4bf0('0x33')][_0x4bf0('0x36')]));_0x26e28e[_0x4bf0('0x37')]=_0x26e28e[_0x4bf0('0x37')][_0x4bf0('0x38')]?_0x26e28e[_0x4bf0('0x37')]:_0x59972f['model'];if(_0x15fd6d[_0x4bf0('0x33')][_0x4bf0('0x41')]){_0x26e28e['include']=[{'all':!![]}];}_0x26e28e=_['merge']({},_0x26e28e,_0x15fd6d[_0x4bf0('0x47')]);return db[_0x4bf0('0x2d')]['find'](_0x26e28e)[_0x4bf0('0x25')](handleEntityNotFound(_0x3ac691,null))[_0x4bf0('0x25')](respondWithResult(_0x3ac691,null))[_0x4bf0('0x44')](handleError(_0x3ac691,null));};exports[_0x4bf0('0x48')]=function(_0x2dd823,_0x4927c2){return db['SugarcrmField'][_0x4bf0('0x48')](_0x2dd823[_0x4bf0('0x49')],{})['then'](respondWithResult(_0x4927c2,0xc9))[_0x4bf0('0x44')](handleError(_0x4927c2,null));};exports[_0x4bf0('0x24')]=function(_0x144cfd,_0x68c6d1){if(_0x144cfd[_0x4bf0('0x49')]['id']){delete _0x144cfd[_0x4bf0('0x49')]['id'];}return db[_0x4bf0('0x2d')][_0x4bf0('0x4a')]({'where':{'id':_0x144cfd['params']['id']}})['then'](handleEntityNotFound(_0x68c6d1,null))[_0x4bf0('0x25')](saveUpdates(_0x144cfd['body'],null))[_0x4bf0('0x25')](respondWithResult(_0x68c6d1,null))[_0x4bf0('0x44')](handleError(_0x68c6d1,null));};exports[_0x4bf0('0x26')]=function(_0x56042e,_0x3f51ce){return db[_0x4bf0('0x2d')][_0x4bf0('0x4a')]({'where':{'id':_0x56042e[_0x4bf0('0x46')]['id']}})[_0x4bf0('0x25')](handleEntityNotFound(_0x3f51ce,null))[_0x4bf0('0x25')](removeEntity(_0x3f51ce,null))[_0x4bf0('0x44')](handleError(_0x3f51ce,null));};
\ No newline at end of file
index 19b799b..42097d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3c7=['moment','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','util','api'];(function(_0x3b9b2e,_0x1d3afe){var _0x3e1a74=function(_0x1d5439){while(--_0x1d5439){_0x3b9b2e['push'](_0x3b9b2e['shift']());}};_0x3e1a74(++_0x1d3afe);}(_0xe3c7,0x129));var _0x7e3c=function(_0x14d992,_0xa6ea84){_0x14d992=_0x14d992-0x0;var _0x10a29f=_0xe3c7[_0x14d992];return _0x10a29f;};'use strict';var _=require(_0x7e3c('0x0'));var util=require(_0x7e3c('0x1'));var logger=require('../../config/logger')(_0x7e3c('0x2'));var moment=require(_0x7e3c('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7e3c('0x4'));var rimraf=require(_0x7e3c('0x5'));var config=require(_0x7e3c('0x6'));var attributes=require(_0x7e3c('0x7'));module[_0x7e3c('0x8')]=function(_0x20b5cf,_0x2e0c28){return _0x20b5cf[_0x7e3c('0x9')](_0x7e3c('0xa'),attributes,{'tableName':_0x7e3c('0xb'),'paranoid':![],'indexes':[{'name':_0x7e3c('0xc'),'fields':[_0x7e3c('0xd'),_0x7e3c('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3024=['api','bluebird','request-promise','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x196f02,_0x5265c0){var _0x153425=function(_0x8851a8){while(--_0x8851a8){_0x196f02['push'](_0x196f02['shift']());}};_0x153425(++_0x5265c0);}(_0x3024,0x17d));var _0x4302=function(_0x598598,_0x55c524){_0x598598=_0x598598-0x0;var _0x4d8a3b=_0x3024[_0x598598];return _0x4d8a3b;};'use strict';var _=require(_0x4302('0x0'));var util=require(_0x4302('0x1'));var logger=require(_0x4302('0x2'))(_0x4302('0x3'));var moment=require('moment');var BPromise=require(_0x4302('0x4'));var rp=require(_0x4302('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4302('0x6'));var config=require(_0x4302('0x7'));var attributes=require(_0x4302('0x8'));module[_0x4302('0x9')]=function(_0x354f64,_0x28a737){return _0x354f64[_0x4302('0xa')](_0x4302('0xb'),attributes,{'tableName':_0x4302('0xc'),'paranoid':![],'indexes':[{'name':_0x4302('0xd'),'fields':[_0x4302('0xe'),_0x4302('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a234c1d..d9fe715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9ba=['request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/environment','client'];(function(_0x112b9a,_0x16137e){var _0x499107=function(_0x32e9cc){while(--_0x32e9cc){_0x112b9a['push'](_0x112b9a['shift']());}};_0x499107(++_0x16137e);}(_0xa9ba,0x1d3));var _0xaa9b=function(_0x1f93a3,_0x29e848){_0x1f93a3=_0x1f93a3-0x0;var _0x489264=_0xa9ba[_0x1f93a3];return _0x489264;};'use strict';var _=require(_0xaa9b('0x0'));var util=require(_0xaa9b('0x1'));var moment=require(_0xaa9b('0x2'));var BPromise=require('bluebird');var rs=require(_0xaa9b('0x3'));var fs=require('fs');var Redis=require(_0xaa9b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xaa9b('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xaa9b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xaa9b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3cd1f3,_0x5a0ea9,_0x53d4c2){return new BPromise(function(_0x171735,_0x2fb9d5){return client[_0xaa9b('0x8')](_0x3cd1f3,_0x53d4c2)[_0xaa9b('0x9')](function(_0x225454){logger[_0xaa9b('0xa')](_0xaa9b('0xb'),_0x5a0ea9,_0xaa9b('0xc'));logger[_0xaa9b('0xd')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x5a0ea9,_0xaa9b('0xc'),JSON[_0xaa9b('0xe')](_0x225454));if(_0x225454[_0xaa9b('0xf')]){if(_0x225454[_0xaa9b('0xf')]['code']===0x1f4){logger[_0xaa9b('0xf')]('SugarcrmField,\x20%s,\x20%s',_0x5a0ea9,_0x225454['error'][_0xaa9b('0x10')]);return _0x2fb9d5(_0x225454['error'][_0xaa9b('0x10')]);}logger['error'](_0xaa9b('0xb'),_0x5a0ea9,_0x225454[_0xaa9b('0xf')][_0xaa9b('0x10')]);return _0x171735(_0x225454[_0xaa9b('0xf')][_0xaa9b('0x10')]);}else{logger[_0xaa9b('0xa')](_0xaa9b('0xb'),_0x5a0ea9,_0xaa9b('0xc'));_0x171735(_0x225454[_0xaa9b('0x11')][_0xaa9b('0x10')]);}})[_0xaa9b('0x12')](function(_0x7f63c8){logger[_0xaa9b('0xf')](_0xaa9b('0xb'),_0x5a0ea9,_0x7f63c8);_0x2fb9d5(_0x7f63c8);});});}
\ No newline at end of file
+var _0xd0a6=['client','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xd0a6,0x1c4));var _0x6d0a=function(_0x346df0,_0x475c3e){_0x346df0=_0x346df0-0x0;var _0x2b0187=_0xd0a6[_0x346df0];return _0x2b0187;};'use strict';var _=require(_0x6d0a('0x0'));var util=require(_0x6d0a('0x1'));var moment=require(_0x6d0a('0x2'));var BPromise=require(_0x6d0a('0x3'));var rs=require(_0x6d0a('0x4'));var fs=require('fs');var Redis=require(_0x6d0a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6d0a('0x6'));var logger=require(_0x6d0a('0x7'))(_0x6d0a('0x8'));var config=require('../../config/environment');var jayson=require(_0x6d0a('0x9'));var client=jayson[_0x6d0a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3daeab,_0x557d83,_0x7a2e7a){return new BPromise(function(_0x566411,_0x16d0c3){return client[_0x6d0a('0xb')](_0x3daeab,_0x7a2e7a)[_0x6d0a('0xc')](function(_0x5b619f){logger[_0x6d0a('0xd')](_0x6d0a('0xe'),_0x557d83,_0x6d0a('0xf'));logger['debug'](_0x6d0a('0x10'),_0x557d83,_0x6d0a('0xf'),JSON[_0x6d0a('0x11')](_0x5b619f));if(_0x5b619f['error']){if(_0x5b619f[_0x6d0a('0x12')][_0x6d0a('0x13')]===0x1f4){logger[_0x6d0a('0x12')](_0x6d0a('0xe'),_0x557d83,_0x5b619f[_0x6d0a('0x12')][_0x6d0a('0x14')]);return _0x16d0c3(_0x5b619f[_0x6d0a('0x12')][_0x6d0a('0x14')]);}logger[_0x6d0a('0x12')](_0x6d0a('0xe'),_0x557d83,_0x5b619f['error'][_0x6d0a('0x14')]);return _0x566411(_0x5b619f['error'][_0x6d0a('0x14')]);}else{logger['info'](_0x6d0a('0xe'),_0x557d83,_0x6d0a('0xf'));_0x566411(_0x5b619f['result'][_0x6d0a('0x14')]);}})['catch'](function(_0x131831){logger['error'](_0x6d0a('0xe'),_0x557d83,_0x131831);_0x16d0c3(_0x131831);});});}
\ No newline at end of file
index 0af8451..26b1cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3098=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','/:id','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x5d80de,_0x2cf15d){var _0x1c7556=function(_0x5bd806){while(--_0x5bd806){_0x5d80de['push'](_0x5d80de['shift']());}};_0x1c7556(++_0x2cf15d);}(_0x3098,0x86));var _0x8309=function(_0x175e89,_0x20835f){_0x175e89=_0x175e89-0x0;var _0x2ed996=_0x3098[_0x175e89];return _0x2ed996;};'use strict';var multer=require(_0x8309('0x0'));var util=require(_0x8309('0x1'));var path=require(_0x8309('0x2'));var timeout=require(_0x8309('0x3'));var express=require('express');var router=express[_0x8309('0x4')]();var fs_extra=require(_0x8309('0x5'));var auth=require(_0x8309('0x6'));var interaction=require(_0x8309('0x7'));var config=require(_0x8309('0x8'));var controller=require(_0x8309('0x9'));router[_0x8309('0xa')]('/',auth[_0x8309('0xb')](),controller[_0x8309('0xc')]);router[_0x8309('0xa')]('/:id',auth[_0x8309('0xb')](),controller['show']);router[_0x8309('0xa')](_0x8309('0xd'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x8309('0xa')](_0x8309('0xe'),auth[_0x8309('0xb')](),controller[_0x8309('0xf')]);router[_0x8309('0x10')]('/',auth['isAuthenticated'](),controller[_0x8309('0x11')]);router[_0x8309('0x10')](_0x8309('0xd'),auth[_0x8309('0xb')](),controller[_0x8309('0x12')]);router['put'](_0x8309('0x13'),auth['isAuthenticated'](),controller[_0x8309('0x14')]);router['delete'](_0x8309('0x13'),auth[_0x8309('0xb')](),controller[_0x8309('0x15')]);module[_0x8309('0x16')]=router;
\ No newline at end of file
+var _0x3eca=['getFields','post','addConfiguration','put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields'];(function(_0x43ee6c,_0x2d5f79){var _0x3c4386=function(_0x3d371f){while(--_0x3d371f){_0x43ee6c['push'](_0x43ee6c['shift']());}};_0x3c4386(++_0x2d5f79);}(_0x3eca,0x17e));var _0xa3ec=function(_0x7ad123,_0xeeeef3){_0x7ad123=_0x7ad123-0x0;var _0x37d073=_0x3eca[_0x7ad123];return _0x37d073;};'use strict';var multer=require(_0xa3ec('0x0'));var util=require(_0xa3ec('0x1'));var path=require('path');var timeout=require(_0xa3ec('0x2'));var express=require(_0xa3ec('0x3'));var router=express[_0xa3ec('0x4')]();var fs_extra=require(_0xa3ec('0x5'));var auth=require(_0xa3ec('0x6'));var interaction=require(_0xa3ec('0x7'));var config=require(_0xa3ec('0x8'));var controller=require(_0xa3ec('0x9'));router[_0xa3ec('0xa')]('/',auth[_0xa3ec('0xb')](),controller[_0xa3ec('0xc')]);router[_0xa3ec('0xa')](_0xa3ec('0xd'),auth[_0xa3ec('0xb')](),controller[_0xa3ec('0xe')]);router[_0xa3ec('0xa')](_0xa3ec('0xf'),auth[_0xa3ec('0xb')](),controller[_0xa3ec('0x10')]);router[_0xa3ec('0xa')](_0xa3ec('0x11'),auth[_0xa3ec('0xb')](),controller[_0xa3ec('0x12')]);router['post']('/',auth[_0xa3ec('0xb')](),controller['create']);router[_0xa3ec('0x13')](_0xa3ec('0xf'),auth[_0xa3ec('0xb')](),controller[_0xa3ec('0x14')]);router[_0xa3ec('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xa3ec('0x16')]);router[_0xa3ec('0x17')](_0xa3ec('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xa3ec('0x18')]=router;
\ No newline at end of file
index 4f8ebe2..53ace1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x951b=['STRING','sequelize'];(function(_0x552c27,_0x478dc2){var _0x2a0922=function(_0x22617c){while(--_0x22617c){_0x552c27['push'](_0x552c27['shift']());}};_0x2a0922(++_0x478dc2);}(_0x951b,0x187));var _0xb951=function(_0x5c035e,_0x3f08ff){_0x5c035e=_0x5c035e-0x0;var _0x34fedc=_0x951b[_0x5c035e];return _0x34fedc;};'use strict';var Sequelize=require(_0xb951('0x0'));module['exports']={'name':{'type':Sequelize[_0xb951('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xb951('0x1')]},'username':{'type':Sequelize[_0xb951('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xb951('0x1')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0xb951('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0xb951('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x6210=['STRING','HelpDesk','exports'];(function(_0x58c390,_0x1bb83c){var _0x12bad8=function(_0xe915f9){while(--_0xe915f9){_0x58c390['push'](_0x58c390['shift']());}};_0x12bad8(++_0x1bb83c);}(_0x6210,0xd1));var _0x0621=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0x6210[_0x5cb1af];return _0x8d7940;};'use strict';var Sequelize=require('sequelize');module[_0x0621('0x0')]={'name':{'type':Sequelize[_0x0621('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x0621('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0621('0x2')},'remoteUri':{'type':Sequelize[_0x0621('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x0621('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x0621('0x1')],'allowNull':![]}};
\ No newline at end of file
index 46589ee..ce64412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a03=['VtigerConfiguration','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','Subjects','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','lastIndexOf','format','%s/webservice.php','getchallenge','success','result','token','describe','sessionName','autogenerated','reference','owner','remove','includes','false','label','startsWith','cf_','picklist','log','vTiger\x20error:\x20','statusCode','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','end','sendStatus','error','stack','name','send','index','map','VtigerAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','options','include','rows','params','length','includeAll','catch','create','body','find','getConfigurations','findOne'];(function(_0x3764a8,_0x118f65){var _0xfd5cd7=function(_0x556579){while(--_0x556579){_0x3764a8['push'](_0x3764a8['shift']());}};_0xfd5cd7(++_0x118f65);}(_0x9a03,0x10e));var _0x39a0=function(_0xd0a847,_0x72562b){_0xd0a847=_0xd0a847-0x0;var _0x2536ec=_0x9a03[_0xd0a847];return _0x2536ec;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x39a0('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x39a0('0x1'));var rp=require(_0x39a0('0x2'));var moment=require('moment');var BPromise=require(_0x39a0('0x3'));var Mustache=require(_0x39a0('0x4'));var util=require('util');var path=require(_0x39a0('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x39a0('0x6'));var fs=require('fs');var fs_extra=require(_0x39a0('0x7'));var _=require('lodash');var squel=require(_0x39a0('0x8'));var crypto=require(_0x39a0('0x9'));var jsforce=require(_0x39a0('0xa'));var deskjs=require(_0x39a0('0xb'));var toCsv=require('to-csv');var querystring=require(_0x39a0('0xc'));var Papa=require(_0x39a0('0xd'));var Redis=require(_0x39a0('0xe'));var authService=require(_0x39a0('0xf'));var qs=require(_0x39a0('0x10'));var as=require(_0x39a0('0x11'));var hardwareService=require(_0x39a0('0x12'));var logger=require(_0x39a0('0x13'))(_0x39a0('0x14'));var utils=require(_0x39a0('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x39a0('0x16'));var db=require(_0x39a0('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3de52b,_0x112d77){_0x112d77=_0x112d77||0xcc;return function(_0xaef97){if(_0xaef97){return _0x3de52b['sendStatus'](_0x112d77);}return _0x3de52b[_0x39a0('0x18')](_0x112d77)['end']();};}function respondWithResult(_0x2c35c3,_0x304b37){_0x304b37=_0x304b37||0xc8;return function(_0x383507){if(_0x383507){return _0x2c35c3[_0x39a0('0x18')](_0x304b37)['json'](_0x383507);}};}function respondWithFilteredResult(_0x35e766,_0x403814){return function(_0x49bdd3){if(_0x49bdd3){var _0x590ec2=typeof _0x403814[_0x39a0('0x19')]===_0x39a0('0x1a')&&typeof _0x403814[_0x39a0('0x1b')]==='undefined';var _0x137d60=_0x49bdd3['count'];var _0x3f9cf0=_0x590ec2?0x0:_0x403814[_0x39a0('0x19')];var _0x3ae079=_0x590ec2?_0x49bdd3[_0x39a0('0x1c')]:_0x403814[_0x39a0('0x19')]+_0x403814[_0x39a0('0x1b')];var _0x5cca01;if(_0x3ae079>=_0x137d60){_0x3ae079=_0x137d60;_0x5cca01=0xc8;}else{_0x5cca01=0xce;}_0x35e766[_0x39a0('0x18')](_0x5cca01);return _0x35e766[_0x39a0('0x1d')](_0x39a0('0x1e'),_0x3f9cf0+'-'+_0x3ae079+'/'+_0x137d60)[_0x39a0('0x1f')](_0x49bdd3);}return null;};}function patchUpdates(_0xaccd4f){return function(_0x27fb3b){try{jsonpatch[_0x39a0('0x20')](_0x27fb3b,_0xaccd4f,!![]);}catch(_0x3eddd2){return BPromise[_0x39a0('0x21')](_0x3eddd2);}return _0x27fb3b[_0x39a0('0x22')]();};}function saveUpdates(_0x2cec6f,_0xf60369){return function(_0xfa5809){if(_0xfa5809){return _0xfa5809[_0x39a0('0x23')](_0x2cec6f)['then'](function(_0x5dc9f6){return _0x5dc9f6;});}return null;};}function removeEntity(_0x5141e4,_0x27a239){return function(_0x2f6b51){if(_0x2f6b51){return _0x2f6b51[_0x39a0('0x24')]()[_0x39a0('0x25')](function(){_0x5141e4[_0x39a0('0x18')](0xcc)[_0x39a0('0x26')]();});}};}function handleEntityNotFound(_0x4d449a,_0x4f1344){return function(_0x5e0466){if(!_0x5e0466){_0x4d449a[_0x39a0('0x27')](0x194);}return _0x5e0466;};}function handleError(_0x44de2c,_0x169d32){_0x169d32=_0x169d32||0x1f4;return function(_0x5c5a4f){logger[_0x39a0('0x28')](_0x5c5a4f[_0x39a0('0x29')]);if(_0x5c5a4f['name']){delete _0x5c5a4f[_0x39a0('0x2a')];}_0x44de2c['status'](_0x169d32)[_0x39a0('0x2b')](_0x5c5a4f);};}exports[_0x39a0('0x2c')]=function(_0x1d80ea,_0x23028c){var _0x3211f7={},_0x30718e={},_0x4a613c={'count':0x0,'rows':[]};var _0xcdfd5d=_[_0x39a0('0x2d')](db[_0x39a0('0x2e')][_0x39a0('0x2f')],function(_0x4cb0d1){return{'name':_0x4cb0d1[_0x39a0('0x30')],'type':_0x4cb0d1[_0x39a0('0x31')][_0x39a0('0x32')]};});_0x30718e[_0x39a0('0x33')]=_[_0x39a0('0x2d')](_0xcdfd5d,_0x39a0('0x2a'));_0x30718e[_0x39a0('0x34')]=_[_0x39a0('0x35')](_0x1d80ea['query']);_0x30718e['filters']=_[_0x39a0('0x36')](_0x30718e[_0x39a0('0x33')],_0x30718e[_0x39a0('0x34')]);_0x3211f7['attributes']=_['intersection'](_0x30718e['model'],qs[_0x39a0('0x37')](_0x1d80ea['query'][_0x39a0('0x37')]));_0x3211f7[_0x39a0('0x38')]=_0x3211f7[_0x39a0('0x38')]['length']?_0x3211f7['attributes']:_0x30718e[_0x39a0('0x33')];if(!_0x1d80ea[_0x39a0('0x34')][_0x39a0('0x39')](_0x39a0('0x3a'))){_0x3211f7['limit']=qs[_0x39a0('0x1b')](_0x1d80ea[_0x39a0('0x34')][_0x39a0('0x1b')]);_0x3211f7[_0x39a0('0x19')]=qs[_0x39a0('0x19')](_0x1d80ea[_0x39a0('0x34')][_0x39a0('0x19')]);}_0x3211f7[_0x39a0('0x3b')]=qs[_0x39a0('0x3c')](_0x1d80ea[_0x39a0('0x34')][_0x39a0('0x3c')]);_0x3211f7['where']=qs[_0x39a0('0x3d')](_[_0x39a0('0x3e')](_0x1d80ea[_0x39a0('0x34')],_0x30718e[_0x39a0('0x3d')]),_0xcdfd5d);if(_0x1d80ea[_0x39a0('0x34')][_0x39a0('0x3f')]){_0x3211f7[_0x39a0('0x40')]=_[_0x39a0('0x41')](_0x3211f7[_0x39a0('0x40')],{'$or':_[_0x39a0('0x2d')](_0xcdfd5d,function(_0x5894bf){if(_0x5894bf[_0x39a0('0x31')]!=='VIRTUAL'){var _0x5d350f={};_0x5d350f[_0x5894bf[_0x39a0('0x2a')]]={'$like':'%'+_0x1d80ea[_0x39a0('0x34')][_0x39a0('0x3f')]+'%'};return _0x5d350f;}})});}_0x3211f7=_[_0x39a0('0x41')]({},_0x3211f7,_0x1d80ea[_0x39a0('0x42')]);var _0x4ac4ed={'where':_0x3211f7['where']};return db[_0x39a0('0x2e')][_0x39a0('0x1c')](_0x4ac4ed)['then'](function(_0x53c813){_0x4a613c[_0x39a0('0x1c')]=_0x53c813;if(_0x1d80ea[_0x39a0('0x34')]['includeAll']){_0x3211f7[_0x39a0('0x43')]=[{'all':!![]}];}return db[_0x39a0('0x2e')]['findAll'](_0x3211f7);})['then'](function(_0xaac3d9){_0x4a613c[_0x39a0('0x44')]=_0xaac3d9;return _0x4a613c;})['then'](respondWithFilteredResult(_0x23028c,_0x3211f7))['catch'](handleError(_0x23028c,null));};exports['show']=function(_0x174fd0,_0x47930c){var _0x7814fb={'raw':![],'where':{'id':_0x174fd0[_0x39a0('0x45')]['id']}},_0x583e88={};_0x583e88['model']=_[_0x39a0('0x35')](db['VtigerAccount']['rawAttributes']);_0x583e88[_0x39a0('0x34')]=_['keys'](_0x174fd0['query']);_0x583e88['filters']=_[_0x39a0('0x36')](_0x583e88[_0x39a0('0x33')],_0x583e88[_0x39a0('0x34')]);_0x7814fb[_0x39a0('0x38')]=_[_0x39a0('0x36')](_0x583e88[_0x39a0('0x33')],qs[_0x39a0('0x37')](_0x174fd0[_0x39a0('0x34')][_0x39a0('0x37')]));_0x7814fb['attributes']=_0x7814fb[_0x39a0('0x38')][_0x39a0('0x46')]?_0x7814fb[_0x39a0('0x38')]:_0x583e88[_0x39a0('0x33')];if(_0x174fd0[_0x39a0('0x34')][_0x39a0('0x47')]){_0x7814fb[_0x39a0('0x43')]=[{'all':!![]}];}_0x7814fb=_[_0x39a0('0x41')]({},_0x7814fb,_0x174fd0[_0x39a0('0x42')]);return db['VtigerAccount']['find'](_0x7814fb)[_0x39a0('0x25')](handleEntityNotFound(_0x47930c,null))[_0x39a0('0x25')](respondWithResult(_0x47930c,null))[_0x39a0('0x48')](handleError(_0x47930c,null));};exports[_0x39a0('0x49')]=function(_0x3fb933,_0x34ddc5){return db[_0x39a0('0x2e')][_0x39a0('0x49')](_0x3fb933[_0x39a0('0x4a')],{})['then'](respondWithResult(_0x34ddc5,0xc9))[_0x39a0('0x48')](handleError(_0x34ddc5,null));};exports[_0x39a0('0x23')]=function(_0x2e26bf,_0x146142){if(_0x2e26bf[_0x39a0('0x4a')]['id']){delete _0x2e26bf[_0x39a0('0x4a')]['id'];}return db[_0x39a0('0x2e')][_0x39a0('0x4b')]({'where':{'id':_0x2e26bf['params']['id']}})[_0x39a0('0x25')](handleEntityNotFound(_0x146142,null))['then'](saveUpdates(_0x2e26bf['body'],null))[_0x39a0('0x25')](respondWithResult(_0x146142,null))[_0x39a0('0x48')](handleError(_0x146142,null));};exports['destroy']=function(_0x52ce04,_0x5cb581){return db[_0x39a0('0x2e')][_0x39a0('0x4b')]({'where':{'id':_0x52ce04[_0x39a0('0x45')]['id']}})[_0x39a0('0x25')](handleEntityNotFound(_0x5cb581,null))[_0x39a0('0x25')](removeEntity(_0x5cb581,null))[_0x39a0('0x48')](handleError(_0x5cb581,null));};exports[_0x39a0('0x4c')]=function(_0x4cb218,_0x55d5e2,_0x5e4c34){var _0x1e55d8={};var _0x70db59={};var _0x360a06;var _0x138f31;return db[_0x39a0('0x2e')][_0x39a0('0x4d')]({'where':{'id':_0x4cb218['params']['id']}})[_0x39a0('0x25')](handleEntityNotFound(_0x55d5e2,null))['then'](function(_0x562f41){if(_0x562f41){_0x360a06=_0x562f41;_0x70db59[_0x39a0('0x33')]=_[_0x39a0('0x35')](db[_0x39a0('0x4e')][_0x39a0('0x2f')]);_0x70db59['query']=_[_0x39a0('0x35')](_0x4cb218[_0x39a0('0x34')]);_0x70db59[_0x39a0('0x3d')]=_[_0x39a0('0x36')](_0x70db59[_0x39a0('0x33')],_0x70db59['query']);_0x1e55d8[_0x39a0('0x38')]=_['intersection'](_0x70db59[_0x39a0('0x33')],qs[_0x39a0('0x37')](_0x4cb218[_0x39a0('0x34')][_0x39a0('0x37')]));_0x1e55d8[_0x39a0('0x38')]=_0x1e55d8[_0x39a0('0x38')][_0x39a0('0x46')]?_0x1e55d8[_0x39a0('0x38')]:_0x70db59[_0x39a0('0x33')];_0x1e55d8['order']=qs['sort'](_0x4cb218[_0x39a0('0x34')][_0x39a0('0x3c')]);_0x1e55d8[_0x39a0('0x40')]=qs['filters'](_[_0x39a0('0x3e')](_0x4cb218[_0x39a0('0x34')],_0x70db59[_0x39a0('0x3d')]));if(_0x4cb218[_0x39a0('0x34')]['filter']){_0x1e55d8[_0x39a0('0x40')]=_[_0x39a0('0x41')](_0x1e55d8[_0x39a0('0x40')],{'$or':_['map'](_0x1e55d8[_0x39a0('0x38')],function(_0x48809d){var _0x49fe8c={};_0x49fe8c[_0x48809d]={'$like':'%'+_0x4cb218[_0x39a0('0x34')][_0x39a0('0x3f')]+'%'};return _0x49fe8c;})});}_0x1e55d8=_['merge']({},_0x1e55d8,_0x4cb218[_0x39a0('0x42')]);return _0x360a06[_0x39a0('0x4c')](_0x1e55d8);}})[_0x39a0('0x25')](function(_0x456389){if(_0x456389){_0x138f31=_0x456389[_0x39a0('0x46')];if(!_0x4cb218[_0x39a0('0x34')][_0x39a0('0x39')](_0x39a0('0x3a'))){_0x1e55d8[_0x39a0('0x1b')]=qs[_0x39a0('0x1b')](_0x4cb218[_0x39a0('0x34')][_0x39a0('0x1b')]);_0x1e55d8[_0x39a0('0x19')]=qs[_0x39a0('0x19')](_0x4cb218[_0x39a0('0x34')][_0x39a0('0x19')]);}return _0x360a06[_0x39a0('0x4c')](_0x1e55d8);}})[_0x39a0('0x25')](function(_0x4120ec){if(_0x4120ec){return _0x4120ec?{'count':_0x138f31,'rows':_0x4120ec}:null;}})[_0x39a0('0x25')](respondWithResult(_0x55d5e2,null))[_0x39a0('0x48')](handleError(_0x55d5e2,null));};exports[_0x39a0('0x4f')]=function(_0x22babc,_0x1ae64e,_0x2337be){if(_0x22babc['body']['id']){delete _0x22babc[_0x39a0('0x4a')]['id'];}return db[_0x39a0('0x2e')][_0x39a0('0x4d')]({'where':{'id':_0x22babc[_0x39a0('0x45')]['id']}})[_0x39a0('0x25')](handleEntityNotFound(_0x1ae64e,null))[_0x39a0('0x25')](function(_0x68a95c){if(_0x68a95c){_0x22babc['body'][_0x39a0('0x50')]=_0x68a95c['id'];_0x22babc['body']['Subjects']=integrations[_0x39a0('0x51')](_0x22babc['body'][_0x39a0('0x52')],_0x22babc[_0x39a0('0x4a')][_0x39a0('0x31')]);_0x22babc[_0x39a0('0x4a')][_0x39a0('0x53')]=integrations[_0x39a0('0x54')](_0x22babc[_0x39a0('0x4a')][_0x39a0('0x52')],_0x22babc['body'][_0x39a0('0x31')]);return db[_0x39a0('0x4e')][_0x39a0('0x49')](_0x22babc[_0x39a0('0x4a')],{'include':[{'model':db['VtigerField'],'as':_0x39a0('0x55')},{'model':db['VtigerField'],'as':'Descriptions'}]});}return null;})[_0x39a0('0x25')](respondWithResult(_0x1ae64e,null))[_0x39a0('0x48')](handleError(_0x1ae64e,null));};var md5=require('md5');exports[_0x39a0('0x56')]=function(_0x5c12ab,_0x4e8212,_0x4dc1d9){var _0x3611dd=null;var _0x54b390=null;var _0x53f4c9=null;var _0x1a670d=null;var _0xff0361='';return db['VtigerAccount']['findOne']({'where':{'id':_0x5c12ab[_0x39a0('0x45')]['id']},'attributes':['id',_0x39a0('0x2a'),_0x39a0('0x57'),_0x39a0('0x58'),_0x39a0('0x59'),_0x39a0('0x5a'),_0x39a0('0x5b'),_0x39a0('0x5c')]})[_0x39a0('0x25')](handleEntityNotFound(_0x4e8212,null))[_0x39a0('0x25')](function(_0x1126c1){if(_0x1126c1){_0x3611dd=_0x1126c1[_0x39a0('0x57')];_0x54b390=_0x1126c1[_0x39a0('0x5c')];_0x53f4c9=_0x1126c1[_0x39a0('0x59')];_0xff0361=_0x1126c1['remoteUri'];var _0x473cd3=_0xff0361[_0x39a0('0x5d')](-0x1);if(_0x473cd3==='/'){_0xff0361=_0xff0361['substring'](0x0,_0xff0361[_0x39a0('0x5e')](_0x473cd3));}_0x1a670d=util[_0x39a0('0x5f')](_0x39a0('0x60'),_0xff0361);var _0x4f1d20={'method':'GET','uri':_0x1a670d,'qs':{'operation':_0x39a0('0x61'),'username':_0x1126c1[_0x39a0('0x57')]},'json':!![]};return rp(_0x4f1d20);}})[_0x39a0('0x25')](function(_0x1f2060){if(_0x1f2060[_0x39a0('0x62')]){var _0x3c9664={'method':'POST','uri':_0x1a670d,'form':{'operation':'login','username':_0x3611dd,'accessKey':md5(_0x1f2060[_0x39a0('0x63')][_0x39a0('0x64')]+_0x54b390)},'json':!![]};return rp(_0x3c9664);}})['then'](function(_0x5f3646){if(_0x5f3646[_0x39a0('0x62')]){var _0x555f0c={'method':'GET','uri':_0x1a670d,'qs':{'operation':_0x39a0('0x65'),'username':_0x3611dd,'sessionName':_0x5f3646[_0x39a0('0x63')][_0x39a0('0x66')],'elementType':_0x53f4c9},'json':!![]};return rp(_0x555f0c);}})[_0x39a0('0x25')](function(_0x517f09){if(_0x517f09[_0x39a0('0x62')]){var _0x17af19=[_0x39a0('0x67'),_0x39a0('0x68'),_0x39a0('0x69')];_[_0x39a0('0x6a')](_0x517f09[_0x39a0('0x63')][_0x39a0('0x37')],function(_0x3252d0){return _0x17af19[_0x39a0('0x6b')](_0x3252d0[_0x39a0('0x31')][_0x39a0('0x2a')]);});_[_0x39a0('0x6a')](_0x517f09[_0x39a0('0x63')][_0x39a0('0x37')],function(_0x3a3803){return _0x3a3803['editable']===_0x39a0('0x6c');});return{'count':_0x517f09[_0x39a0('0x63')]['fields'][_0x39a0('0x46')],'rows':_['map'](_0x517f09[_0x39a0('0x63')][_0x39a0('0x37')],function(_0x43cdfe){return{'id':_0x43cdfe['name'],'name':_0x43cdfe[_0x39a0('0x6d')],'custom':_[_0x39a0('0x6e')](_0x43cdfe['name'],_0x39a0('0x6f'))?!![]:![],'options':_0x43cdfe[_0x39a0('0x31')][_0x39a0('0x2a')]===_0x39a0('0x70')&&_0x43cdfe['type']['picklistValues'][_0x39a0('0x46')]>0x0?_[_0x39a0('0x2d')](_0x43cdfe[_0x39a0('0x31')]['picklistValues'],function(_0x469c1c){return{'name':_0x469c1c[_0x39a0('0x6d')],'value':_0x469c1c['value']};}):[]};})};}})[_0x39a0('0x25')](respondWithResult(_0x4e8212,null))[_0x39a0('0x48')](function(_0x2dae05){console[_0x39a0('0x71')](_0x39a0('0x72')+_0x2dae05);var _0x3efe0f=_0x5c12ab['query']['test']?0x1f4:_0x2dae05[_0x39a0('0x73')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x39a0('0x56'),_0x3efe0f,JSON['stringify'](_0x2dae05));delete _0x2dae05[_0x39a0('0x2a')];if(_0x3efe0f===0x191){_0x3efe0f=0x190;}_0x4e8212['status'](_0x3efe0f)[_0x39a0('0x2b')](_0x5c12ab[_0x39a0('0x34')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x2dae05['statusCode']}:_0x2dae05);});};
\ No newline at end of file
+var _0xaffa=['keys','rawAttributes','include','create','body','update','getConfigurations','findOne','VtigerConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','format','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','autogenerated','reference','owner','remove','includes','editable','false','label','startsWith','cf_','picklist','picklistValues','log','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','then','destroy','error','stack','name','send','index','VtigerAccount','fieldName','type','model','map','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params'];(function(_0x542963,_0x2495fe){var _0x5c0f6b=function(_0x513714){while(--_0x513714){_0x542963['push'](_0x542963['shift']());}};_0x5c0f6b(++_0x2495fe);}(_0xaffa,0x1a0));var _0xaaff=function(_0x26f0c8,_0x1fd298){_0x26f0c8=_0x26f0c8-0x0;var _0x401dce=_0xaffa[_0x26f0c8];return _0x401dce;};'use strict';var emlformat=require(_0xaaff('0x0'));var rimraf=require(_0xaaff('0x1'));var zipdir=require(_0xaaff('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaaff('0x3'));var moment=require(_0xaaff('0x4'));var BPromise=require(_0xaaff('0x5'));var Mustache=require(_0xaaff('0x6'));var util=require(_0xaaff('0x7'));var path=require(_0xaaff('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xaaff('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaaff('0xa'));var squel=require(_0xaaff('0xb'));var crypto=require(_0xaaff('0xc'));var jsforce=require(_0xaaff('0xd'));var deskjs=require(_0xaaff('0xe'));var toCsv=require(_0xaaff('0xf'));var querystring=require(_0xaaff('0x10'));var Papa=require(_0xaaff('0x11'));var Redis=require(_0xaaff('0x12'));var authService=require(_0xaaff('0x13'));var qs=require(_0xaaff('0x14'));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('../../config/environment');var licenseUtil=require(_0xaaff('0x15'));var db=require(_0xaaff('0x16'))['db'];var integrations=require(_0xaaff('0x17'));function respondWithStatusCode(_0x4f7c89,_0x2d8604){_0x2d8604=_0x2d8604||0xcc;return function(_0x56a3f6){if(_0x56a3f6){return _0x4f7c89[_0xaaff('0x18')](_0x2d8604);}return _0x4f7c89[_0xaaff('0x19')](_0x2d8604)[_0xaaff('0x1a')]();};}function respondWithResult(_0x375bd1,_0x5040c5){_0x5040c5=_0x5040c5||0xc8;return function(_0x4d0ab4){if(_0x4d0ab4){return _0x375bd1[_0xaaff('0x19')](_0x5040c5)[_0xaaff('0x1b')](_0x4d0ab4);}};}function respondWithFilteredResult(_0x2eeebc,_0x4a486b){return function(_0x1383e5){if(_0x1383e5){var _0xb9e9c1=typeof _0x4a486b[_0xaaff('0x1c')]===_0xaaff('0x1d')&&typeof _0x4a486b[_0xaaff('0x1e')]===_0xaaff('0x1d');var _0x594fdd=_0x1383e5[_0xaaff('0x1f')];var _0x3a5fa4=_0xb9e9c1?0x0:_0x4a486b[_0xaaff('0x1c')];var _0xd5d936=_0xb9e9c1?_0x1383e5[_0xaaff('0x1f')]:_0x4a486b[_0xaaff('0x1c')]+_0x4a486b[_0xaaff('0x1e')];var _0x3e1a3c;if(_0xd5d936>=_0x594fdd){_0xd5d936=_0x594fdd;_0x3e1a3c=0xc8;}else{_0x3e1a3c=0xce;}_0x2eeebc[_0xaaff('0x19')](_0x3e1a3c);return _0x2eeebc['set']('Content-Range',_0x3a5fa4+'-'+_0xd5d936+'/'+_0x594fdd)[_0xaaff('0x1b')](_0x1383e5);}return null;};}function patchUpdates(_0x4a0615){return function(_0x446bb3){try{jsonpatch[_0xaaff('0x20')](_0x446bb3,_0x4a0615,!![]);}catch(_0x5db890){return BPromise[_0xaaff('0x21')](_0x5db890);}return _0x446bb3[_0xaaff('0x22')]();};}function saveUpdates(_0xf5d522,_0x3bc92f){return function(_0x2d38f0){if(_0x2d38f0){return _0x2d38f0['update'](_0xf5d522)[_0xaaff('0x23')](function(_0x424e77){return _0x424e77;});}return null;};}function removeEntity(_0x62acbf,_0x404619){return function(_0x796ebf){if(_0x796ebf){return _0x796ebf[_0xaaff('0x24')]()['then'](function(){_0x62acbf[_0xaaff('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x86e812,_0x448145){return function(_0x4eeeeb){if(!_0x4eeeeb){_0x86e812[_0xaaff('0x18')](0x194);}return _0x4eeeeb;};}function handleError(_0x2d74f6,_0x2e928c){_0x2e928c=_0x2e928c||0x1f4;return function(_0x16c193){logger[_0xaaff('0x25')](_0x16c193[_0xaaff('0x26')]);if(_0x16c193['name']){delete _0x16c193[_0xaaff('0x27')];}_0x2d74f6[_0xaaff('0x19')](_0x2e928c)[_0xaaff('0x28')](_0x16c193);};}exports[_0xaaff('0x29')]=function(_0x3ab5a3,_0x4c8c01){var _0x21117d={},_0x56aba8={},_0x39747a={'count':0x0,'rows':[]};var _0x31ca95=_['map'](db[_0xaaff('0x2a')]['rawAttributes'],function(_0x5d99b1){return{'name':_0x5d99b1[_0xaaff('0x2b')],'type':_0x5d99b1[_0xaaff('0x2c')]['key']};});_0x56aba8[_0xaaff('0x2d')]=_[_0xaaff('0x2e')](_0x31ca95,_0xaaff('0x27'));_0x56aba8['query']=_['keys'](_0x3ab5a3[_0xaaff('0x2f')]);_0x56aba8['filters']=_[_0xaaff('0x30')](_0x56aba8[_0xaaff('0x2d')],_0x56aba8[_0xaaff('0x2f')]);_0x21117d[_0xaaff('0x31')]=_[_0xaaff('0x30')](_0x56aba8[_0xaaff('0x2d')],qs[_0xaaff('0x32')](_0x3ab5a3[_0xaaff('0x2f')]['fields']));_0x21117d[_0xaaff('0x31')]=_0x21117d['attributes'][_0xaaff('0x33')]?_0x21117d[_0xaaff('0x31')]:_0x56aba8[_0xaaff('0x2d')];if(!_0x3ab5a3['query'][_0xaaff('0x34')]('nolimit')){_0x21117d['limit']=qs[_0xaaff('0x1e')](_0x3ab5a3['query']['limit']);_0x21117d[_0xaaff('0x1c')]=qs['offset'](_0x3ab5a3[_0xaaff('0x2f')]['offset']);}_0x21117d[_0xaaff('0x35')]=qs[_0xaaff('0x36')](_0x3ab5a3['query'][_0xaaff('0x36')]);_0x21117d[_0xaaff('0x37')]=qs[_0xaaff('0x38')](_[_0xaaff('0x39')](_0x3ab5a3[_0xaaff('0x2f')],_0x56aba8[_0xaaff('0x38')]),_0x31ca95);if(_0x3ab5a3['query'][_0xaaff('0x3a')]){_0x21117d[_0xaaff('0x37')]=_[_0xaaff('0x3b')](_0x21117d['where'],{'$or':_['map'](_0x31ca95,function(_0x46200f){if(_0x46200f['type']!==_0xaaff('0x3c')){var _0x40ee46={};_0x40ee46[_0x46200f[_0xaaff('0x27')]]={'$like':'%'+_0x3ab5a3['query'][_0xaaff('0x3a')]+'%'};return _0x40ee46;}})});}_0x21117d=_[_0xaaff('0x3b')]({},_0x21117d,_0x3ab5a3[_0xaaff('0x3d')]);var _0x3413fa={'where':_0x21117d[_0xaaff('0x37')]};return db[_0xaaff('0x2a')]['count'](_0x3413fa)['then'](function(_0x4c4531){_0x39747a[_0xaaff('0x1f')]=_0x4c4531;if(_0x3ab5a3[_0xaaff('0x2f')][_0xaaff('0x3e')]){_0x21117d['include']=[{'all':!![]}];}return db[_0xaaff('0x2a')][_0xaaff('0x3f')](_0x21117d);})[_0xaaff('0x23')](function(_0x22537a){_0x39747a[_0xaaff('0x40')]=_0x22537a;return _0x39747a;})[_0xaaff('0x23')](respondWithFilteredResult(_0x4c8c01,_0x21117d))[_0xaaff('0x41')](handleError(_0x4c8c01,null));};exports[_0xaaff('0x42')]=function(_0x3f78c6,_0x1538c9){var _0x348a25={'raw':![],'where':{'id':_0x3f78c6[_0xaaff('0x43')]['id']}},_0x33ac8f={};_0x33ac8f[_0xaaff('0x2d')]=_[_0xaaff('0x44')](db[_0xaaff('0x2a')][_0xaaff('0x45')]);_0x33ac8f[_0xaaff('0x2f')]=_[_0xaaff('0x44')](_0x3f78c6['query']);_0x33ac8f['filters']=_[_0xaaff('0x30')](_0x33ac8f[_0xaaff('0x2d')],_0x33ac8f['query']);_0x348a25[_0xaaff('0x31')]=_[_0xaaff('0x30')](_0x33ac8f[_0xaaff('0x2d')],qs[_0xaaff('0x32')](_0x3f78c6[_0xaaff('0x2f')][_0xaaff('0x32')]));_0x348a25['attributes']=_0x348a25[_0xaaff('0x31')]['length']?_0x348a25[_0xaaff('0x31')]:_0x33ac8f[_0xaaff('0x2d')];if(_0x3f78c6[_0xaaff('0x2f')][_0xaaff('0x3e')]){_0x348a25[_0xaaff('0x46')]=[{'all':!![]}];}_0x348a25=_[_0xaaff('0x3b')]({},_0x348a25,_0x3f78c6['options']);return db[_0xaaff('0x2a')]['find'](_0x348a25)[_0xaaff('0x23')](handleEntityNotFound(_0x1538c9,null))[_0xaaff('0x23')](respondWithResult(_0x1538c9,null))[_0xaaff('0x41')](handleError(_0x1538c9,null));};exports['create']=function(_0x578cc0,_0x3621f3){return db['VtigerAccount'][_0xaaff('0x47')](_0x578cc0[_0xaaff('0x48')],{})[_0xaaff('0x23')](respondWithResult(_0x3621f3,0xc9))[_0xaaff('0x41')](handleError(_0x3621f3,null));};exports[_0xaaff('0x49')]=function(_0x3f4cb4,_0x3d3e20){if(_0x3f4cb4['body']['id']){delete _0x3f4cb4[_0xaaff('0x48')]['id'];}return db[_0xaaff('0x2a')]['find']({'where':{'id':_0x3f4cb4[_0xaaff('0x43')]['id']}})[_0xaaff('0x23')](handleEntityNotFound(_0x3d3e20,null))[_0xaaff('0x23')](saveUpdates(_0x3f4cb4[_0xaaff('0x48')],null))[_0xaaff('0x23')](respondWithResult(_0x3d3e20,null))[_0xaaff('0x41')](handleError(_0x3d3e20,null));};exports[_0xaaff('0x24')]=function(_0xdc4cc9,_0x4a17f4){return db[_0xaaff('0x2a')]['find']({'where':{'id':_0xdc4cc9['params']['id']}})[_0xaaff('0x23')](handleEntityNotFound(_0x4a17f4,null))[_0xaaff('0x23')](removeEntity(_0x4a17f4,null))[_0xaaff('0x41')](handleError(_0x4a17f4,null));};exports[_0xaaff('0x4a')]=function(_0xae79ee,_0x42401c,_0x52e9c2){var _0x197db6={};var _0xe108d4={};var _0x19e163;var _0x120f74;return db[_0xaaff('0x2a')][_0xaaff('0x4b')]({'where':{'id':_0xae79ee[_0xaaff('0x43')]['id']}})['then'](handleEntityNotFound(_0x42401c,null))[_0xaaff('0x23')](function(_0xa83282){if(_0xa83282){_0x19e163=_0xa83282;_0xe108d4['model']=_['keys'](db[_0xaaff('0x4c')][_0xaaff('0x45')]);_0xe108d4[_0xaaff('0x2f')]=_['keys'](_0xae79ee['query']);_0xe108d4[_0xaaff('0x38')]=_['intersection'](_0xe108d4[_0xaaff('0x2d')],_0xe108d4[_0xaaff('0x2f')]);_0x197db6[_0xaaff('0x31')]=_['intersection'](_0xe108d4[_0xaaff('0x2d')],qs['fields'](_0xae79ee[_0xaaff('0x2f')][_0xaaff('0x32')]));_0x197db6[_0xaaff('0x31')]=_0x197db6[_0xaaff('0x31')]['length']?_0x197db6[_0xaaff('0x31')]:_0xe108d4['model'];_0x197db6[_0xaaff('0x35')]=qs['sort'](_0xae79ee[_0xaaff('0x2f')]['sort']);_0x197db6[_0xaaff('0x37')]=qs[_0xaaff('0x38')](_[_0xaaff('0x39')](_0xae79ee[_0xaaff('0x2f')],_0xe108d4[_0xaaff('0x38')]));if(_0xae79ee[_0xaaff('0x2f')][_0xaaff('0x3a')]){_0x197db6[_0xaaff('0x37')]=_[_0xaaff('0x3b')](_0x197db6[_0xaaff('0x37')],{'$or':_[_0xaaff('0x2e')](_0x197db6[_0xaaff('0x31')],function(_0x4ceb49){var _0x54409f={};_0x54409f[_0x4ceb49]={'$like':'%'+_0xae79ee[_0xaaff('0x2f')]['filter']+'%'};return _0x54409f;})});}_0x197db6=_[_0xaaff('0x3b')]({},_0x197db6,_0xae79ee[_0xaaff('0x3d')]);return _0x19e163[_0xaaff('0x4a')](_0x197db6);}})['then'](function(_0x3aab5f){if(_0x3aab5f){_0x120f74=_0x3aab5f[_0xaaff('0x33')];if(!_0xae79ee[_0xaaff('0x2f')][_0xaaff('0x34')]('nolimit')){_0x197db6[_0xaaff('0x1e')]=qs['limit'](_0xae79ee[_0xaaff('0x2f')]['limit']);_0x197db6[_0xaaff('0x1c')]=qs[_0xaaff('0x1c')](_0xae79ee[_0xaaff('0x2f')][_0xaaff('0x1c')]);}return _0x19e163[_0xaaff('0x4a')](_0x197db6);}})[_0xaaff('0x23')](function(_0x4443d0){if(_0x4443d0){return _0x4443d0?{'count':_0x120f74,'rows':_0x4443d0}:null;}})['then'](respondWithResult(_0x42401c,null))[_0xaaff('0x41')](handleError(_0x42401c,null));};exports[_0xaaff('0x4d')]=function(_0x1fd807,_0x7a2275,_0x16322d){if(_0x1fd807[_0xaaff('0x48')]['id']){delete _0x1fd807[_0xaaff('0x48')]['id'];}return db[_0xaaff('0x2a')][_0xaaff('0x4b')]({'where':{'id':_0x1fd807[_0xaaff('0x43')]['id']}})['then'](handleEntityNotFound(_0x7a2275,null))[_0xaaff('0x23')](function(_0x47f860){if(_0x47f860){_0x1fd807[_0xaaff('0x48')][_0xaaff('0x4e')]=_0x47f860['id'];_0x1fd807[_0xaaff('0x48')][_0xaaff('0x4f')]=integrations[_0xaaff('0x50')](_0x1fd807['body'][_0xaaff('0x51')],_0x1fd807[_0xaaff('0x48')]['type']);_0x1fd807[_0xaaff('0x48')][_0xaaff('0x52')]=integrations[_0xaaff('0x53')](_0x1fd807['body']['channel'],_0x1fd807[_0xaaff('0x48')][_0xaaff('0x2c')]);return db['VtigerConfiguration']['create'](_0x1fd807[_0xaaff('0x48')],{'include':[{'model':db[_0xaaff('0x54')],'as':'Subjects'},{'model':db['VtigerField'],'as':'Descriptions'}]});}return null;})[_0xaaff('0x23')](respondWithResult(_0x7a2275,null))['catch'](handleError(_0x7a2275,null));};var md5=require('md5');exports[_0xaaff('0x55')]=function(_0x12ccb,_0x5ca9f2,_0x430b70){var _0x1a4bc1=null;var _0x5b9984=null;var _0x287304=null;var _0x193ff6=null;var _0x50f85b='';return db[_0xaaff('0x2a')][_0xaaff('0x4b')]({'where':{'id':_0x12ccb[_0xaaff('0x43')]['id']},'attributes':['id',_0xaaff('0x27'),_0xaaff('0x56'),_0xaaff('0x57'),_0xaaff('0x58'),_0xaaff('0x59'),_0xaaff('0x5a'),_0xaaff('0x5b')]})[_0xaaff('0x23')](handleEntityNotFound(_0x5ca9f2,null))[_0xaaff('0x23')](function(_0x1ffc2f){if(_0x1ffc2f){_0x1a4bc1=_0x1ffc2f['username'];_0x5b9984=_0x1ffc2f[_0xaaff('0x5b')];_0x287304=_0x1ffc2f['moduleName'];_0x50f85b=_0x1ffc2f[_0xaaff('0x59')];var _0x3cdbfd=_0x50f85b[_0xaaff('0x5c')](-0x1);if(_0x3cdbfd==='/'){_0x50f85b=_0x50f85b[_0xaaff('0x5d')](0x0,_0x50f85b[_0xaaff('0x5e')](_0x3cdbfd));}_0x193ff6=util[_0xaaff('0x5f')](_0xaaff('0x60'),_0x50f85b);var _0x18e262={'method':_0xaaff('0x61'),'uri':_0x193ff6,'qs':{'operation':_0xaaff('0x62'),'username':_0x1ffc2f[_0xaaff('0x56')]},'json':!![]};return rp(_0x18e262);}})[_0xaaff('0x23')](function(_0x56960f){if(_0x56960f[_0xaaff('0x63')]){var _0x58da2e={'method':_0xaaff('0x64'),'uri':_0x193ff6,'form':{'operation':_0xaaff('0x65'),'username':_0x1a4bc1,'accessKey':md5(_0x56960f[_0xaaff('0x66')][_0xaaff('0x67')]+_0x5b9984)},'json':!![]};return rp(_0x58da2e);}})[_0xaaff('0x23')](function(_0x2e2b1e){if(_0x2e2b1e[_0xaaff('0x63')]){var _0x5bbb84={'method':'GET','uri':_0x193ff6,'qs':{'operation':'describe','username':_0x1a4bc1,'sessionName':_0x2e2b1e['result']['sessionName'],'elementType':_0x287304},'json':!![]};return rp(_0x5bbb84);}})['then'](function(_0x1d7fde){if(_0x1d7fde[_0xaaff('0x63')]){var _0x10c718=[_0xaaff('0x68'),_0xaaff('0x69'),_0xaaff('0x6a')];_[_0xaaff('0x6b')](_0x1d7fde[_0xaaff('0x66')][_0xaaff('0x32')],function(_0x5c0053){return _0x10c718[_0xaaff('0x6c')](_0x5c0053[_0xaaff('0x2c')][_0xaaff('0x27')]);});_[_0xaaff('0x6b')](_0x1d7fde[_0xaaff('0x66')][_0xaaff('0x32')],function(_0xe69792){return _0xe69792[_0xaaff('0x6d')]===_0xaaff('0x6e');});return{'count':_0x1d7fde['result'][_0xaaff('0x32')][_0xaaff('0x33')],'rows':_[_0xaaff('0x2e')](_0x1d7fde['result']['fields'],function(_0xe70cbc){return{'id':_0xe70cbc[_0xaaff('0x27')],'name':_0xe70cbc[_0xaaff('0x6f')],'custom':_[_0xaaff('0x70')](_0xe70cbc[_0xaaff('0x27')],_0xaaff('0x71'))?!![]:![],'options':_0xe70cbc[_0xaaff('0x2c')][_0xaaff('0x27')]===_0xaaff('0x72')&&_0xe70cbc['type'][_0xaaff('0x73')][_0xaaff('0x33')]>0x0?_['map'](_0xe70cbc[_0xaaff('0x2c')][_0xaaff('0x73')],function(_0x2f5b64){return{'name':_0x2f5b64[_0xaaff('0x6f')],'value':_0x2f5b64['value']};}):[]};})};}})['then'](respondWithResult(_0x5ca9f2,null))[_0xaaff('0x41')](function(_0x5784fb){console[_0xaaff('0x74')]('vTiger\x20error:\x20'+_0x5784fb);var _0x336abc=_0x12ccb[_0xaaff('0x2f')]['test']?0x1f4:_0x5784fb[_0xaaff('0x75')]||0x1f4;logger[_0xaaff('0x25')](_0xaaff('0x76'),_0xaaff('0x55'),_0x336abc,JSON[_0xaaff('0x77')](_0x5784fb));delete _0x5784fb[_0xaaff('0x27')];if(_0x336abc===0x191){_0x336abc=0x190;}_0x5ca9f2[_0xaaff('0x19')](_0x336abc)[_0xaaff('0x28')](_0x12ccb[_0xaaff('0x2f')]['test']?{'message':_0xaaff('0x78'),'statusCode':_0x5784fb[_0xaaff('0x75')]}:_0x5784fb);});};
\ No newline at end of file
index fa2e182..2922e20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d9=['exports','int_vtiger_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../components/integrations/configuration'];(function(_0x46cfec,_0x4dcfb5){var _0xe67f0f=function(_0x39be6b){while(--_0x39be6b){_0x46cfec['push'](_0x46cfec['shift']());}};_0xe67f0f(++_0x4dcfb5);}(_0x69d9,0x120));var _0x969d=function(_0xe8129c,_0x2fb03c){_0xe8129c=_0xe8129c-0x0;var _0x709fc5=_0x69d9[_0xe8129c];return _0x709fc5;};'use strict';var _=require(_0x969d('0x0'));var util=require(_0x969d('0x1'));var logger=require(_0x969d('0x2'))(_0x969d('0x3'));var moment=require(_0x969d('0x4'));var BPromise=require('bluebird');var rp=require(_0x969d('0x5'));var fs=require('fs');var path=require(_0x969d('0x6'));var rimraf=require(_0x969d('0x7'));var config=require('../../config/environment');var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0x969d('0x8'));module[_0x969d('0x9')]=function(_0x292648,_0xf87886){return _0x292648['define']('VtigerAccount',attributes,{'tableName':_0x969d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x41b2=['VtigerAccount','int_vtiger_accounts','api','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerAccount.attributes','exports','define'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x41b2,0xa7));var _0x241b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41b2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x241b('0x0'));var moment=require('moment');var BPromise=require(_0x241b('0x1'));var rp=require(_0x241b('0x2'));var fs=require('fs');var path=require(_0x241b('0x3'));var rimraf=require(_0x241b('0x4'));var config=require(_0x241b('0x5'));var attributes=require(_0x241b('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x241b('0x7')]=function(_0x6106b,_0x57acd0){return _0x6106b[_0x241b('0x8')](_0x241b('0x9'),attributes,{'tableName':_0x241b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4539a2d..15b0d61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['stringify','error','code','VtigerAccount,\x20%s,\x20%s','message','result','catch','GetVtigerAccount','VtigerAccount','options','raw','where','attributes','limit','map','include','model','ShowVtigerAccount','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x3aace5,_0x280454){var _0x3d10d3=function(_0x3ab26d){while(--_0x3ab26d){_0x3aace5['push'](_0x3aace5['shift']());}};_0x3d10d3(++_0x280454);}(_0x1775,0x1db));var _0x5177=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x1775[_0x432682];return _0x463d05;};'use strict';var _=require('lodash');var util=require(_0x5177('0x0'));var moment=require(_0x5177('0x1'));var BPromise=require(_0x5177('0x2'));var rs=require(_0x5177('0x3'));var fs=require('fs');var Redis=require(_0x5177('0x4'));var db=require(_0x5177('0x5'))['db'];var utils=require(_0x5177('0x6'));var logger=require(_0x5177('0x7'))(_0x5177('0x8'));var config=require(_0x5177('0x9'));var jayson=require(_0x5177('0xa'));var client=jayson[_0x5177('0xb')][_0x5177('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2ac1c6,_0x300b43,_0x245c12){return new BPromise(function(_0x363611,_0x3ce288){return client[_0x5177('0xd')](_0x2ac1c6,_0x245c12)[_0x5177('0xe')](function(_0x2c23d8){logger[_0x5177('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x300b43,'request\x20sent');logger[_0x5177('0x10')](_0x5177('0x11'),_0x300b43,_0x5177('0x12'),JSON[_0x5177('0x13')](_0x2c23d8));if(_0x2c23d8[_0x5177('0x14')]){if(_0x2c23d8['error'][_0x5177('0x15')]===0x1f4){logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);return _0x3ce288(_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);}logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);return _0x363611(_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);}else{logger[_0x5177('0xf')](_0x5177('0x16'),_0x300b43,_0x5177('0x12'));_0x363611(_0x2c23d8[_0x5177('0x18')][_0x5177('0x17')]);}})[_0x5177('0x19')](function(_0x50ce2c){logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x50ce2c);_0x3ce288(_0x50ce2c);});});}exports[_0x5177('0x1a')]=function(_0x1b4102){var _0x5f5bd4=this;return new Promise(function(_0x3e6944,_0x2ebf91){return db[_0x5177('0x1b')]['findAll']({'raw':_0x1b4102[_0x5177('0x1c')]?_0x1b4102['options'][_0x5177('0x1d')]===undefined?!![]:![]:!![],'where':_0x1b4102[_0x5177('0x1c')]?_0x1b4102[_0x5177('0x1c')][_0x5177('0x1e')]||null:null,'attributes':_0x1b4102[_0x5177('0x1c')]?_0x1b4102[_0x5177('0x1c')][_0x5177('0x1f')]||null:null,'limit':_0x1b4102[_0x5177('0x1c')]?_0x1b4102[_0x5177('0x1c')][_0x5177('0x20')]||null:null,'include':_0x1b4102[_0x5177('0x1c')]?_0x1b4102[_0x5177('0x1c')]['include']?_[_0x5177('0x21')](_0x1b4102['options'][_0x5177('0x22')],function(_0x2c68d8){return{'model':db[_0x2c68d8[_0x5177('0x23')]],'as':_0x2c68d8['as'],'attributes':_0x2c68d8[_0x5177('0x1f')],'include':_0x2c68d8['include']?_[_0x5177('0x21')](_0x2c68d8['include'],function(_0x564139){return{'model':db[_0x564139[_0x5177('0x23')]],'as':_0x564139['as'],'attributes':_0x564139[_0x5177('0x1f')],'include':_0x564139['include']?_[_0x5177('0x21')](_0x564139['include'],function(_0x231d35){return{'model':db[_0x231d35[_0x5177('0x23')]],'as':_0x231d35['as'],'attributes':_0x231d35['attributes']};}):[]};}):[]};}):[]:[]})[_0x5177('0xe')](function(_0x2554ec){logger[_0x5177('0xf')](_0x5177('0x1a'),_0x1b4102);logger[_0x5177('0x10')](_0x5177('0x1a'),_0x1b4102,JSON['stringify'](_0x2554ec));_0x3e6944(_0x2554ec);})['catch'](function(_0x45cf20){logger[_0x5177('0x14')](_0x5177('0x1a'),_0x45cf20[_0x5177('0x17')],_0x1b4102);_0x2ebf91(_0x5f5bd4[_0x5177('0x14')](0x1f4,_0x45cf20[_0x5177('0x17')]));});});};exports[_0x5177('0x24')]=function(_0x72dced){var _0x49f6f1=this;return new Promise(function(_0x42e1db,_0x2233a2){return db['VtigerAccount'][_0x5177('0x25')]({'raw':_0x72dced['options']?_0x72dced[_0x5177('0x1c')][_0x5177('0x1d')]===undefined?!![]:![]:!![],'where':_0x72dced[_0x5177('0x1c')]?_0x72dced['options']['where']||null:null,'attributes':_0x72dced[_0x5177('0x1c')]?_0x72dced[_0x5177('0x1c')][_0x5177('0x1f')]||null:null,'include':_0x72dced[_0x5177('0x1c')]?_0x72dced[_0x5177('0x1c')][_0x5177('0x22')]?_[_0x5177('0x21')](_0x72dced[_0x5177('0x1c')]['include'],function(_0x459ac6){return{'model':db[_0x459ac6[_0x5177('0x23')]],'as':_0x459ac6['as'],'attributes':_0x459ac6['attributes'],'include':_0x459ac6[_0x5177('0x22')]?_[_0x5177('0x21')](_0x459ac6[_0x5177('0x22')],function(_0x8727c6){return{'model':db[_0x8727c6[_0x5177('0x23')]],'as':_0x8727c6['as'],'attributes':_0x8727c6[_0x5177('0x1f')],'include':_0x8727c6['include']?_[_0x5177('0x21')](_0x8727c6[_0x5177('0x22')],function(_0x28b1d5){return{'model':db[_0x28b1d5[_0x5177('0x23')]],'as':_0x28b1d5['as'],'attributes':_0x28b1d5[_0x5177('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x5177('0xe')](function(_0x1bb1e3){logger['info'](_0x5177('0x24'),_0x72dced);logger[_0x5177('0x10')]('ShowVtigerAccount',_0x72dced,JSON['stringify'](_0x1bb1e3));_0x42e1db(_0x1bb1e3);})[_0x5177('0x19')](function(_0x188cec){logger[_0x5177('0x14')](_0x5177('0x24'),_0x188cec[_0x5177('0x17')],_0x72dced);_0x2233a2(_0x49f6f1[_0x5177('0x14')](0x1f4,_0x188cec[_0x5177('0x17')]));});});};
\ No newline at end of file
+var _0x44a3=['code','message','VtigerAccount,\x20%s,\x20%s','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowVtigerAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','error'];(function(_0x3b8281,_0x5ced3f){var _0xe298ca=function(_0x29289b){while(--_0x29289b){_0x3b8281['push'](_0x3b8281['shift']());}};_0xe298ca(++_0x5ced3f);}(_0x44a3,0x1a9));var _0x344a=function(_0x2a5099,_0x329e92){_0x2a5099=_0x2a5099-0x0;var _0x2802f1=_0x44a3[_0x2a5099];return _0x2802f1;};'use strict';var _=require(_0x344a('0x0'));var util=require(_0x344a('0x1'));var moment=require(_0x344a('0x2'));var BPromise=require(_0x344a('0x3'));var rs=require(_0x344a('0x4'));var fs=require('fs');var Redis=require(_0x344a('0x5'));var db=require(_0x344a('0x6'))['db'];var utils=require(_0x344a('0x7'));var logger=require('../../config/logger')(_0x344a('0x8'));var config=require(_0x344a('0x9'));var jayson=require(_0x344a('0xa'));var client=jayson[_0x344a('0xb')][_0x344a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x504bd1,_0x553d97,_0x55ddca){return new BPromise(function(_0x484661,_0x475dab){return client[_0x344a('0xd')](_0x504bd1,_0x55ddca)[_0x344a('0xe')](function(_0x233ca1){logger[_0x344a('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x553d97,_0x344a('0x10'));logger[_0x344a('0x11')]('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x553d97,_0x344a('0x10'),JSON['stringify'](_0x233ca1));if(_0x233ca1[_0x344a('0x12')]){if(_0x233ca1['error'][_0x344a('0x13')]===0x1f4){logger[_0x344a('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x553d97,_0x233ca1['error'][_0x344a('0x14')]);return _0x475dab(_0x233ca1[_0x344a('0x12')][_0x344a('0x14')]);}logger[_0x344a('0x12')](_0x344a('0x15'),_0x553d97,_0x233ca1[_0x344a('0x12')]['message']);return _0x484661(_0x233ca1[_0x344a('0x12')][_0x344a('0x14')]);}else{logger[_0x344a('0xf')](_0x344a('0x15'),_0x553d97,'request\x20sent');_0x484661(_0x233ca1['result'][_0x344a('0x14')]);}})[_0x344a('0x16')](function(_0x36227e){logger[_0x344a('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x553d97,_0x36227e);_0x475dab(_0x36227e);});});}exports[_0x344a('0x17')]=function(_0x277c06){var _0x49b55f=this;return new Promise(function(_0x9fe854,_0x274016){return db[_0x344a('0x18')][_0x344a('0x19')]({'raw':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1b')]===undefined?!![]:![]:!![],'where':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1c')]||null:null,'attributes':_0x277c06['options']?_0x277c06[_0x344a('0x1a')][_0x344a('0x1d')]||null:null,'limit':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1e')]||null:null,'include':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1f')]?_[_0x344a('0x20')](_0x277c06[_0x344a('0x1a')][_0x344a('0x1f')],function(_0x3b2ab9){return{'model':db[_0x3b2ab9[_0x344a('0x21')]],'as':_0x3b2ab9['as'],'attributes':_0x3b2ab9[_0x344a('0x1d')],'include':_0x3b2ab9['include']?_[_0x344a('0x20')](_0x3b2ab9['include'],function(_0x2a5e49){return{'model':db[_0x2a5e49['model']],'as':_0x2a5e49['as'],'attributes':_0x2a5e49[_0x344a('0x1d')],'include':_0x2a5e49[_0x344a('0x1f')]?_[_0x344a('0x20')](_0x2a5e49[_0x344a('0x1f')],function(_0x26f059){return{'model':db[_0x26f059[_0x344a('0x21')]],'as':_0x26f059['as'],'attributes':_0x26f059[_0x344a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x344a('0xe')](function(_0x4f2499){logger[_0x344a('0xf')](_0x344a('0x17'),_0x277c06);logger[_0x344a('0x11')](_0x344a('0x17'),_0x277c06,JSON[_0x344a('0x22')](_0x4f2499));_0x9fe854(_0x4f2499);})[_0x344a('0x16')](function(_0x5b877d){logger[_0x344a('0x12')]('GetVtigerAccount',_0x5b877d['message'],_0x277c06);_0x274016(_0x49b55f[_0x344a('0x12')](0x1f4,_0x5b877d[_0x344a('0x14')]));});});};exports[_0x344a('0x23')]=function(_0x4803db){var _0x5cd9c6=this;return new Promise(function(_0x5cafd2,_0x16f490){return db[_0x344a('0x18')][_0x344a('0x24')]({'raw':_0x4803db['options']?_0x4803db[_0x344a('0x1a')][_0x344a('0x1b')]===undefined?!![]:![]:!![],'where':_0x4803db[_0x344a('0x1a')]?_0x4803db[_0x344a('0x1a')][_0x344a('0x1c')]||null:null,'attributes':_0x4803db[_0x344a('0x1a')]?_0x4803db[_0x344a('0x1a')]['attributes']||null:null,'include':_0x4803db[_0x344a('0x1a')]?_0x4803db['options']['include']?_['map'](_0x4803db[_0x344a('0x1a')][_0x344a('0x1f')],function(_0x2b8e71){return{'model':db[_0x2b8e71[_0x344a('0x21')]],'as':_0x2b8e71['as'],'attributes':_0x2b8e71[_0x344a('0x1d')],'include':_0x2b8e71[_0x344a('0x1f')]?_['map'](_0x2b8e71[_0x344a('0x1f')],function(_0x1fbf64){return{'model':db[_0x1fbf64[_0x344a('0x21')]],'as':_0x1fbf64['as'],'attributes':_0x1fbf64['attributes'],'include':_0x1fbf64[_0x344a('0x1f')]?_[_0x344a('0x20')](_0x1fbf64[_0x344a('0x1f')],function(_0x487a9b){return{'model':db[_0x487a9b[_0x344a('0x21')]],'as':_0x487a9b['as'],'attributes':_0x487a9b['attributes']};}):[]};}):[]};}):[]:[]})[_0x344a('0xe')](function(_0xeabc7c){logger[_0x344a('0xf')](_0x344a('0x23'),_0x4803db);logger[_0x344a('0x11')]('ShowVtigerAccount',_0x4803db,JSON[_0x344a('0x22')](_0xeabc7c));_0x5cafd2(_0xeabc7c);})[_0x344a('0x16')](function(_0x11e81f){logger[_0x344a('0x12')](_0x344a('0x23'),_0x11e81f['message'],_0x4803db);_0x16f490(_0x5cd9c6[_0x344a('0x12')](0x1f4,_0x11e81f[_0x344a('0x14')]));});});};
\ No newline at end of file
index 109178e..fe5f68a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75f5=['destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions','post','create','put','update','delete'];(function(_0x5cbf36,_0x4cd0ab){var _0x31392a=function(_0x3c5774){while(--_0x3c5774){_0x5cbf36['push'](_0x5cbf36['shift']());}};_0x31392a(++_0x4cd0ab);}(_0x75f5,0x98));var _0x575f=function(_0x47761d,_0x3f8494){_0x47761d=_0x47761d-0x0;var _0x3d1c05=_0x75f5[_0x47761d];return _0x3d1c05;};'use strict';var multer=require(_0x575f('0x0'));var util=require(_0x575f('0x1'));var path=require('path');var timeout=require(_0x575f('0x2'));var express=require(_0x575f('0x3'));var router=express[_0x575f('0x4')]();var fs_extra=require(_0x575f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x575f('0x6'));var config=require(_0x575f('0x7'));var controller=require(_0x575f('0x8'));router[_0x575f('0x9')]('/',auth[_0x575f('0xa')](),controller[_0x575f('0xb')]);router['get'](_0x575f('0xc'),auth[_0x575f('0xa')](),controller[_0x575f('0xd')]);router[_0x575f('0x9')](_0x575f('0xe'),auth[_0x575f('0xa')](),controller['getFields']);router['get'](_0x575f('0xf'),auth[_0x575f('0xa')](),controller[_0x575f('0x10')]);router[_0x575f('0x9')]('/:id/descriptions',auth[_0x575f('0xa')](),controller[_0x575f('0x11')]);router[_0x575f('0x12')]('/',auth['isAuthenticated'](),controller[_0x575f('0x13')]);router[_0x575f('0x14')]('/:id',auth[_0x575f('0xa')](),controller[_0x575f('0x15')]);router[_0x575f('0x16')](_0x575f('0xc'),auth[_0x575f('0xa')](),controller[_0x575f('0x17')]);module[_0x575f('0x18')]=router;
\ No newline at end of file
+var _0x3521=['destroy','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','getDescriptions','create','delete'];(function(_0x3319df,_0xbe4465){var _0xaaebb0=function(_0x48ae41){while(--_0x48ae41){_0x3319df['push'](_0x3319df['shift']());}};_0xaaebb0(++_0xbe4465);}(_0x3521,0x79));var _0x1352=function(_0x3f9ec3,_0x3dfd37){_0x3f9ec3=_0x3f9ec3-0x0;var _0xe85b13=_0x3521[_0x3f9ec3];return _0xe85b13;};'use strict';var multer=require(_0x1352('0x0'));var util=require(_0x1352('0x1'));var path=require(_0x1352('0x2'));var timeout=require('connect-timeout');var express=require(_0x1352('0x3'));var router=express[_0x1352('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1352('0x5'));var interaction=require(_0x1352('0x6'));var config=require(_0x1352('0x7'));var controller=require(_0x1352('0x8'));router[_0x1352('0x9')]('/',auth[_0x1352('0xa')](),controller[_0x1352('0xb')]);router[_0x1352('0x9')](_0x1352('0xc'),auth[_0x1352('0xa')](),controller[_0x1352('0xd')]);router[_0x1352('0x9')](_0x1352('0xe'),auth[_0x1352('0xa')](),controller[_0x1352('0xf')]);router[_0x1352('0x9')]('/:id/subjects',auth[_0x1352('0xa')](),controller['getSubjects']);router[_0x1352('0x9')]('/:id/descriptions',auth[_0x1352('0xa')](),controller[_0x1352('0x10')]);router['post']('/',auth[_0x1352('0xa')](),controller[_0x1352('0x11')]);router['put'](_0x1352('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x1352('0x12')](_0x1352('0xc'),auth[_0x1352('0xa')](),controller[_0x1352('0x13')]);module['exports']=router;
\ No newline at end of file
index 82fb586..8016d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63dc=['sequelize','exports','STRING'];(function(_0x365212,_0x1f1a36){var _0x55dcb6=function(_0x1d3d78){while(--_0x1d3d78){_0x365212['push'](_0x365212['shift']());}};_0x55dcb6(++_0x1f1a36);}(_0x63dc,0x126));var _0xc63d=function(_0x17ea5d,_0x51d3d6){_0x17ea5d=_0x17ea5d-0x0;var _0x39f0c4=_0x63dc[_0x17ea5d];return _0x39f0c4;};'use strict';var Sequelize=require(_0xc63d('0x0'));module[_0xc63d('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc63d('0x2')]}};
\ No newline at end of file
+var _0x57ee=['sequelize','exports','STRING'];(function(_0x25b459,_0x347064){var _0x4da043=function(_0x408140){while(--_0x408140){_0x25b459['push'](_0x25b459['shift']());}};_0x4da043(++_0x347064);}(_0x57ee,0x7e));var _0xe57e=function(_0x21fc91,_0x20d43a){_0x21fc91=_0x21fc91-0x0;var _0x70cd89=_0x57ee[_0x21fc91];return _0x70cd89;};'use strict';var Sequelize=require(_0xe57e('0x0'));module[_0xe57e('0x1')]={'name':{'type':Sequelize[_0xe57e('0x2')]},'description':{'type':Sequelize[_0xe57e('0x2')]}};
\ No newline at end of file
index 27e1ea1..26ab475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['create','update','body','getFields','findOne','VtigerField','order','sort','pick','hasOwnProperty','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','then','sendStatus','error','stack','name','index','map','VtigerConfiguration','rawAttributes','fieldName','type','key','query','model','fields','attributes','length','nolimit','where','VIRTUAL','filter','merge','includeAll','include','rows','show','params','keys','filters','intersection','options','catch'];(function(_0x39cc8f,_0xb60cd8){var _0x15e616=function(_0x513d9e){while(--_0x513d9e){_0x39cc8f['push'](_0x39cc8f['shift']());}};_0x15e616(++_0xb60cd8);}(_0x99e9,0xb4));var _0x999e=function(_0x33dcf7,_0x3d5390){_0x33dcf7=_0x33dcf7-0x0;var _0x542d4e=_0x99e9[_0x33dcf7];return _0x542d4e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x999e('0x0'));var zipdir=require(_0x999e('0x1'));var jsonpatch=require(_0x999e('0x2'));var rp=require(_0x999e('0x3'));var moment=require('moment');var BPromise=require(_0x999e('0x4'));var Mustache=require(_0x999e('0x5'));var util=require(_0x999e('0x6'));var path=require('path');var sox=require(_0x999e('0x7'));var csv=require('to-csv');var ejs=require(_0x999e('0x8'));var fs=require('fs');var fs_extra=require(_0x999e('0x9'));var _=require(_0x999e('0xa'));var squel=require(_0x999e('0xb'));var crypto=require('crypto');var jsforce=require(_0x999e('0xc'));var deskjs=require(_0x999e('0xd'));var toCsv=require(_0x999e('0xe'));var querystring=require(_0x999e('0xf'));var Papa=require(_0x999e('0x10'));var Redis=require(_0x999e('0x11'));var authService=require(_0x999e('0x12'));var qs=require(_0x999e('0x13'));var as=require(_0x999e('0x14'));var hardwareService=require(_0x999e('0x15'));var logger=require(_0x999e('0x16'))(_0x999e('0x17'));var utils=require(_0x999e('0x18'));var config=require(_0x999e('0x19'));var licenseUtil=require(_0x999e('0x1a'));var db=require(_0x999e('0x1b'))['db'];function respondWithStatusCode(_0x26b55a,_0x47a3c1){_0x47a3c1=_0x47a3c1||0xcc;return function(_0x15f771){if(_0x15f771){return _0x26b55a['sendStatus'](_0x47a3c1);}return _0x26b55a[_0x999e('0x1c')](_0x47a3c1)[_0x999e('0x1d')]();};}function respondWithResult(_0x2fbc3e,_0x538a92){_0x538a92=_0x538a92||0xc8;return function(_0x28bdd1){if(_0x28bdd1){return _0x2fbc3e['status'](_0x538a92)[_0x999e('0x1e')](_0x28bdd1);}};}function respondWithFilteredResult(_0x539598,_0x549ad4){return function(_0x1eee64){if(_0x1eee64){var _0x22feac=typeof _0x549ad4[_0x999e('0x1f')]===_0x999e('0x20')&&typeof _0x549ad4[_0x999e('0x21')]===_0x999e('0x20');var _0x4aac66=_0x1eee64['count'];var _0x4fcdfb=_0x22feac?0x0:_0x549ad4[_0x999e('0x1f')];var _0x43b09e=_0x22feac?_0x1eee64[_0x999e('0x22')]:_0x549ad4[_0x999e('0x1f')]+_0x549ad4[_0x999e('0x21')];var _0x3ece5e;if(_0x43b09e>=_0x4aac66){_0x43b09e=_0x4aac66;_0x3ece5e=0xc8;}else{_0x3ece5e=0xce;}_0x539598['status'](_0x3ece5e);return _0x539598['set'](_0x999e('0x23'),_0x4fcdfb+'-'+_0x43b09e+'/'+_0x4aac66)[_0x999e('0x1e')](_0x1eee64);}return null;};}function patchUpdates(_0x3b3642){return function(_0x510fa2){try{jsonpatch[_0x999e('0x24')](_0x510fa2,_0x3b3642,!![]);}catch(_0x42e167){return BPromise[_0x999e('0x25')](_0x42e167);}return _0x510fa2[_0x999e('0x26')]();};}function saveUpdates(_0x373b80,_0x3750a0){return function(_0x427bcf){if(_0x427bcf){return _0x427bcf['update'](_0x373b80)['then'](function(_0x11a6bf){return _0x11a6bf;});}return null;};}function removeEntity(_0x4f0091,_0x4c5491){return function(_0x452acd){if(_0x452acd){return _0x452acd[_0x999e('0x27')]()[_0x999e('0x28')](function(){_0x4f0091[_0x999e('0x1c')](0xcc)[_0x999e('0x1d')]();});}};}function handleEntityNotFound(_0x320634,_0x4f8406){return function(_0x2e1cc5){if(!_0x2e1cc5){_0x320634[_0x999e('0x29')](0x194);}return _0x2e1cc5;};}function handleError(_0x11068e,_0x12b9ad){_0x12b9ad=_0x12b9ad||0x1f4;return function(_0x1b7adb){logger[_0x999e('0x2a')](_0x1b7adb[_0x999e('0x2b')]);if(_0x1b7adb['name']){delete _0x1b7adb[_0x999e('0x2c')];}_0x11068e['status'](_0x12b9ad)['send'](_0x1b7adb);};}exports[_0x999e('0x2d')]=function(_0x1059bd,_0x1f89f2){var _0x555ca0={},_0x1ea0e4={},_0x28f7ba={'count':0x0,'rows':[]};var _0x22cd81=_[_0x999e('0x2e')](db[_0x999e('0x2f')][_0x999e('0x30')],function(_0x82e067){return{'name':_0x82e067[_0x999e('0x31')],'type':_0x82e067[_0x999e('0x32')][_0x999e('0x33')]};});_0x1ea0e4['model']=_[_0x999e('0x2e')](_0x22cd81,_0x999e('0x2c'));_0x1ea0e4[_0x999e('0x34')]=_['keys'](_0x1059bd[_0x999e('0x34')]);_0x1ea0e4['filters']=_['intersection'](_0x1ea0e4[_0x999e('0x35')],_0x1ea0e4[_0x999e('0x34')]);_0x555ca0['attributes']=_['intersection'](_0x1ea0e4[_0x999e('0x35')],qs[_0x999e('0x36')](_0x1059bd[_0x999e('0x34')][_0x999e('0x36')]));_0x555ca0['attributes']=_0x555ca0[_0x999e('0x37')][_0x999e('0x38')]?_0x555ca0[_0x999e('0x37')]:_0x1ea0e4[_0x999e('0x35')];if(!_0x1059bd['query']['hasOwnProperty'](_0x999e('0x39'))){_0x555ca0['limit']=qs[_0x999e('0x21')](_0x1059bd[_0x999e('0x34')][_0x999e('0x21')]);_0x555ca0[_0x999e('0x1f')]=qs['offset'](_0x1059bd[_0x999e('0x34')][_0x999e('0x1f')]);}_0x555ca0['order']=qs['sort'](_0x1059bd[_0x999e('0x34')]['sort']);_0x555ca0[_0x999e('0x3a')]=qs['filters'](_['pick'](_0x1059bd['query'],_0x1ea0e4['filters']),_0x22cd81);if(_0x1059bd[_0x999e('0x34')]['filter']){_0x555ca0[_0x999e('0x3a')]=_['merge'](_0x555ca0['where'],{'$or':_['map'](_0x22cd81,function(_0x2f7d79){if(_0x2f7d79[_0x999e('0x32')]!==_0x999e('0x3b')){var _0xe3c089={};_0xe3c089[_0x2f7d79[_0x999e('0x2c')]]={'$like':'%'+_0x1059bd[_0x999e('0x34')][_0x999e('0x3c')]+'%'};return _0xe3c089;}})});}_0x555ca0=_[_0x999e('0x3d')]({},_0x555ca0,_0x1059bd['options']);var _0x3ff20a={'where':_0x555ca0[_0x999e('0x3a')]};return db[_0x999e('0x2f')][_0x999e('0x22')](_0x3ff20a)['then'](function(_0x141358){_0x28f7ba['count']=_0x141358;if(_0x1059bd[_0x999e('0x34')][_0x999e('0x3e')]){_0x555ca0[_0x999e('0x3f')]=[{'all':!![]}];}return db[_0x999e('0x2f')]['findAll'](_0x555ca0);})[_0x999e('0x28')](function(_0x108c96){_0x28f7ba[_0x999e('0x40')]=_0x108c96;return _0x28f7ba;})['then'](respondWithFilteredResult(_0x1f89f2,_0x555ca0))['catch'](handleError(_0x1f89f2,null));};exports[_0x999e('0x41')]=function(_0x30d943,_0x4098ad){var _0x42a3a0={'raw':![],'where':{'id':_0x30d943[_0x999e('0x42')]['id']}},_0x1009a0={};_0x1009a0[_0x999e('0x35')]=_[_0x999e('0x43')](db[_0x999e('0x2f')][_0x999e('0x30')]);_0x1009a0['query']=_['keys'](_0x30d943[_0x999e('0x34')]);_0x1009a0[_0x999e('0x44')]=_[_0x999e('0x45')](_0x1009a0[_0x999e('0x35')],_0x1009a0[_0x999e('0x34')]);_0x42a3a0[_0x999e('0x37')]=_['intersection'](_0x1009a0[_0x999e('0x35')],qs['fields'](_0x30d943['query'][_0x999e('0x36')]));_0x42a3a0['attributes']=_0x42a3a0['attributes']['length']?_0x42a3a0['attributes']:_0x1009a0[_0x999e('0x35')];if(_0x30d943[_0x999e('0x34')]['includeAll']){_0x42a3a0[_0x999e('0x3f')]=[{'all':!![]}];}_0x42a3a0=_[_0x999e('0x3d')]({},_0x42a3a0,_0x30d943[_0x999e('0x46')]);return db['VtigerConfiguration']['find'](_0x42a3a0)[_0x999e('0x28')](handleEntityNotFound(_0x4098ad,null))[_0x999e('0x28')](respondWithResult(_0x4098ad,null))[_0x999e('0x47')](handleError(_0x4098ad,null));};exports['create']=function(_0x4b43dd,_0x4d0358){return db['VtigerConfiguration'][_0x999e('0x48')](_0x4b43dd['body'],{})['then'](respondWithResult(_0x4d0358,0xc9))[_0x999e('0x47')](handleError(_0x4d0358,null));};exports[_0x999e('0x49')]=function(_0x5843f1,_0xa50dc6){if(_0x5843f1[_0x999e('0x4a')]['id']){delete _0x5843f1['body']['id'];}return db[_0x999e('0x2f')]['find']({'where':{'id':_0x5843f1[_0x999e('0x42')]['id']}})[_0x999e('0x28')](handleEntityNotFound(_0xa50dc6,null))['then'](saveUpdates(_0x5843f1[_0x999e('0x4a')],null))[_0x999e('0x28')](respondWithResult(_0xa50dc6,null))['catch'](handleError(_0xa50dc6,null));};exports['destroy']=function(_0x254292,_0x561fb4){return db['VtigerConfiguration']['find']({'where':{'id':_0x254292[_0x999e('0x42')]['id']}})[_0x999e('0x28')](handleEntityNotFound(_0x561fb4,null))[_0x999e('0x28')](removeEntity(_0x561fb4,null))[_0x999e('0x47')](handleError(_0x561fb4,null));};exports[_0x999e('0x4b')]=function(_0x14c01c,_0x5b2645,_0x14f8de){var _0x2317c5={};var _0x4f1347={};var _0x1e506f;var _0x384893;return db[_0x999e('0x2f')][_0x999e('0x4c')]({'where':{'id':_0x14c01c[_0x999e('0x42')]['id']}})[_0x999e('0x28')](handleEntityNotFound(_0x5b2645,null))[_0x999e('0x28')](function(_0x4636fa){if(_0x4636fa){_0x1e506f=_0x4636fa;_0x4f1347[_0x999e('0x35')]=_['keys'](db[_0x999e('0x4d')][_0x999e('0x30')]);_0x4f1347[_0x999e('0x34')]=_[_0x999e('0x43')](_0x14c01c['query']);_0x4f1347[_0x999e('0x44')]=_[_0x999e('0x45')](_0x4f1347[_0x999e('0x35')],_0x4f1347[_0x999e('0x34')]);_0x2317c5[_0x999e('0x37')]=_[_0x999e('0x45')](_0x4f1347[_0x999e('0x35')],qs[_0x999e('0x36')](_0x14c01c['query']['fields']));_0x2317c5[_0x999e('0x37')]=_0x2317c5[_0x999e('0x37')][_0x999e('0x38')]?_0x2317c5[_0x999e('0x37')]:_0x4f1347[_0x999e('0x35')];_0x2317c5[_0x999e('0x4e')]=qs[_0x999e('0x4f')](_0x14c01c['query']['sort']);_0x2317c5[_0x999e('0x3a')]=qs[_0x999e('0x44')](_[_0x999e('0x50')](_0x14c01c[_0x999e('0x34')],_0x4f1347[_0x999e('0x44')]));if(_0x14c01c['query'][_0x999e('0x3c')]){_0x2317c5[_0x999e('0x3a')]=_[_0x999e('0x3d')](_0x2317c5[_0x999e('0x3a')],{'$or':_[_0x999e('0x2e')](_0x2317c5[_0x999e('0x37')],function(_0x2b4bbe){var _0x53734c={};_0x53734c[_0x2b4bbe]={'$like':'%'+_0x14c01c[_0x999e('0x34')]['filter']+'%'};return _0x53734c;})});}_0x2317c5=_[_0x999e('0x3d')]({},_0x2317c5,_0x14c01c[_0x999e('0x46')]);return _0x1e506f[_0x999e('0x4b')](_0x2317c5);}})[_0x999e('0x28')](function(_0x440a3c){if(_0x440a3c){_0x384893=_0x440a3c[_0x999e('0x38')];if(!_0x14c01c['query'][_0x999e('0x51')](_0x999e('0x39'))){_0x2317c5[_0x999e('0x21')]=qs[_0x999e('0x21')](_0x14c01c[_0x999e('0x34')][_0x999e('0x21')]);_0x2317c5[_0x999e('0x1f')]=qs[_0x999e('0x1f')](_0x14c01c[_0x999e('0x34')][_0x999e('0x1f')]);}return _0x1e506f[_0x999e('0x4b')](_0x2317c5);}})[_0x999e('0x28')](function(_0x77a387){if(_0x77a387){return _0x77a387?{'count':_0x384893,'rows':_0x77a387}:null;}})[_0x999e('0x28')](respondWithResult(_0x5b2645,null))[_0x999e('0x47')](handleError(_0x5b2645,null));};exports['getSubjects']=function(_0x425639,_0x157c1f,_0x296d59){var _0x3f18fb={};var _0x4e5e6e={};var _0x4871c9;var _0x21c8be;return db[_0x999e('0x2f')][_0x999e('0x4c')]({'where':{'id':_0x425639[_0x999e('0x42')]['id']}})[_0x999e('0x28')](handleEntityNotFound(_0x157c1f,null))[_0x999e('0x28')](function(_0x1596bb){if(_0x1596bb){_0x4871c9=_0x1596bb;_0x4e5e6e[_0x999e('0x35')]=_[_0x999e('0x43')](db['VtigerField'][_0x999e('0x30')]);_0x4e5e6e['query']=_[_0x999e('0x43')](_0x425639[_0x999e('0x34')]);_0x4e5e6e['filters']=_[_0x999e('0x45')](_0x4e5e6e[_0x999e('0x35')],_0x4e5e6e[_0x999e('0x34')]);_0x3f18fb[_0x999e('0x37')]=_[_0x999e('0x45')](_0x4e5e6e['model'],qs[_0x999e('0x36')](_0x425639[_0x999e('0x34')]['fields']));_0x3f18fb['attributes']=_0x3f18fb['attributes'][_0x999e('0x38')]?_0x3f18fb[_0x999e('0x37')]:_0x4e5e6e[_0x999e('0x35')];_0x3f18fb[_0x999e('0x4e')]=qs[_0x999e('0x4f')](_0x425639['query']['sort']);_0x3f18fb['where']=qs[_0x999e('0x44')](_['pick'](_0x425639['query'],_0x4e5e6e[_0x999e('0x44')]));if(_0x425639['query'][_0x999e('0x3c')]){_0x3f18fb[_0x999e('0x3a')]=_[_0x999e('0x3d')](_0x3f18fb['where'],{'$or':_[_0x999e('0x2e')](_0x3f18fb[_0x999e('0x37')],function(_0x2ddf00){var _0x61f168={};_0x61f168[_0x2ddf00]={'$like':'%'+_0x425639[_0x999e('0x34')][_0x999e('0x3c')]+'%'};return _0x61f168;})});}_0x3f18fb=_[_0x999e('0x3d')]({},_0x3f18fb,_0x425639['options']);return _0x4871c9[_0x999e('0x52')](_0x3f18fb);}})[_0x999e('0x28')](function(_0x193c80){if(_0x193c80){_0x21c8be=_0x193c80['length'];if(!_0x425639[_0x999e('0x34')][_0x999e('0x51')]('nolimit')){_0x3f18fb[_0x999e('0x21')]=qs[_0x999e('0x21')](_0x425639[_0x999e('0x34')][_0x999e('0x21')]);_0x3f18fb[_0x999e('0x1f')]=qs[_0x999e('0x1f')](_0x425639[_0x999e('0x34')][_0x999e('0x1f')]);}return _0x4871c9[_0x999e('0x52')](_0x3f18fb);}})['then'](function(_0xe27738){if(_0xe27738){return _0xe27738?{'count':_0x21c8be,'rows':_0xe27738}:null;}})[_0x999e('0x28')](respondWithResult(_0x157c1f,null))[_0x999e('0x47')](handleError(_0x157c1f,null));};exports['getDescriptions']=function(_0x46365a,_0x48e0ca,_0x14f13a){var _0x115be6={};var _0x3a7596={};var _0x4e6c30;var _0x43377d;return db[_0x999e('0x2f')][_0x999e('0x4c')]({'where':{'id':_0x46365a[_0x999e('0x42')]['id']}})[_0x999e('0x28')](handleEntityNotFound(_0x48e0ca,null))[_0x999e('0x28')](function(_0x5c4a50){if(_0x5c4a50){_0x4e6c30=_0x5c4a50;_0x3a7596[_0x999e('0x35')]=_['keys'](db[_0x999e('0x4d')]['rawAttributes']);_0x3a7596['query']=_[_0x999e('0x43')](_0x46365a['query']);_0x3a7596[_0x999e('0x44')]=_[_0x999e('0x45')](_0x3a7596['model'],_0x3a7596[_0x999e('0x34')]);_0x115be6[_0x999e('0x37')]=_['intersection'](_0x3a7596[_0x999e('0x35')],qs[_0x999e('0x36')](_0x46365a[_0x999e('0x34')][_0x999e('0x36')]));_0x115be6[_0x999e('0x37')]=_0x115be6[_0x999e('0x37')][_0x999e('0x38')]?_0x115be6[_0x999e('0x37')]:_0x3a7596['model'];_0x115be6['order']=qs[_0x999e('0x4f')](_0x46365a[_0x999e('0x34')][_0x999e('0x4f')]);_0x115be6[_0x999e('0x3a')]=qs[_0x999e('0x44')](_[_0x999e('0x50')](_0x46365a['query'],_0x3a7596[_0x999e('0x44')]));if(_0x46365a[_0x999e('0x34')]['filter']){_0x115be6[_0x999e('0x3a')]=_[_0x999e('0x3d')](_0x115be6[_0x999e('0x3a')],{'$or':_['map'](_0x115be6[_0x999e('0x37')],function(_0x1a53c9){var _0x328c2d={};_0x328c2d[_0x1a53c9]={'$like':'%'+_0x46365a['query'][_0x999e('0x3c')]+'%'};return _0x328c2d;})});}_0x115be6=_[_0x999e('0x3d')]({},_0x115be6,_0x46365a[_0x999e('0x46')]);return _0x4e6c30['getDescriptions'](_0x115be6);}})['then'](function(_0x10a6f1){if(_0x10a6f1){_0x43377d=_0x10a6f1['length'];if(!_0x46365a[_0x999e('0x34')][_0x999e('0x51')](_0x999e('0x39'))){_0x115be6[_0x999e('0x21')]=qs[_0x999e('0x21')](_0x46365a[_0x999e('0x34')][_0x999e('0x21')]);_0x115be6['offset']=qs[_0x999e('0x1f')](_0x46365a['query']['offset']);}return _0x4e6c30[_0x999e('0x53')](_0x115be6);}})[_0x999e('0x28')](function(_0xa0a5de){if(_0xa0a5de){return _0xa0a5de?{'count':_0x43377d,'rows':_0xa0a5de}:null;}})[_0x999e('0x28')](respondWithResult(_0x48e0ca,null))[_0x999e('0x47')](handleError(_0x48e0ca,null));};
\ No newline at end of file
+var _0xb098=['catch','VtigerField','getSubjects','findOne','getDescriptions','eml-format','rimraf','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','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','VtigerConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','merge','includeAll','rows','show','params','options','find','create','body','update'];(function(_0x52ab89,_0x58a774){var _0x5e689d=function(_0x348888){while(--_0x348888){_0x52ab89['push'](_0x52ab89['shift']());}};_0x5e689d(++_0x58a774);}(_0xb098,0x195));var _0x8b09=function(_0x18b3f5,_0x30bf71){_0x18b3f5=_0x18b3f5-0x0;var _0x857cc7=_0xb098[_0x18b3f5];return _0x857cc7;};'use strict';var emlformat=require(_0x8b09('0x0'));var rimraf=require(_0x8b09('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8b09('0x2'));var moment=require(_0x8b09('0x3'));var BPromise=require(_0x8b09('0x4'));var Mustache=require(_0x8b09('0x5'));var util=require(_0x8b09('0x6'));var path=require(_0x8b09('0x7'));var sox=require(_0x8b09('0x8'));var csv=require(_0x8b09('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b09('0xa'));var _=require(_0x8b09('0xb'));var squel=require(_0x8b09('0xc'));var crypto=require(_0x8b09('0xd'));var jsforce=require(_0x8b09('0xe'));var deskjs=require(_0x8b09('0xf'));var toCsv=require(_0x8b09('0x9'));var querystring=require(_0x8b09('0x10'));var Papa=require('papaparse');var Redis=require(_0x8b09('0x11'));var authService=require(_0x8b09('0x12'));var qs=require(_0x8b09('0x13'));var as=require(_0x8b09('0x14'));var hardwareService=require(_0x8b09('0x15'));var logger=require(_0x8b09('0x16'))('api');var utils=require(_0x8b09('0x17'));var config=require(_0x8b09('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x8b09('0x19'))['db'];function respondWithStatusCode(_0x3eea8e,_0x200d72){_0x200d72=_0x200d72||0xcc;return function(_0x239383){if(_0x239383){return _0x3eea8e['sendStatus'](_0x200d72);}return _0x3eea8e[_0x8b09('0x1a')](_0x200d72)['end']();};}function respondWithResult(_0x540344,_0x2b329a){_0x2b329a=_0x2b329a||0xc8;return function(_0x332e74){if(_0x332e74){return _0x540344[_0x8b09('0x1a')](_0x2b329a)[_0x8b09('0x1b')](_0x332e74);}};}function respondWithFilteredResult(_0x22d885,_0x13b626){return function(_0x5b24bb){if(_0x5b24bb){var _0x39c6a5=typeof _0x13b626[_0x8b09('0x1c')]==='undefined'&&typeof _0x13b626[_0x8b09('0x1d')]===_0x8b09('0x1e');var _0x1b0408=_0x5b24bb[_0x8b09('0x1f')];var _0x2280d9=_0x39c6a5?0x0:_0x13b626[_0x8b09('0x1c')];var _0x58e44b=_0x39c6a5?_0x5b24bb[_0x8b09('0x1f')]:_0x13b626['offset']+_0x13b626['limit'];var _0x14edaf;if(_0x58e44b>=_0x1b0408){_0x58e44b=_0x1b0408;_0x14edaf=0xc8;}else{_0x14edaf=0xce;}_0x22d885[_0x8b09('0x1a')](_0x14edaf);return _0x22d885[_0x8b09('0x20')](_0x8b09('0x21'),_0x2280d9+'-'+_0x58e44b+'/'+_0x1b0408)['json'](_0x5b24bb);}return null;};}function patchUpdates(_0x3bdddf){return function(_0x132125){try{jsonpatch[_0x8b09('0x22')](_0x132125,_0x3bdddf,!![]);}catch(_0x2edb4d){return BPromise[_0x8b09('0x23')](_0x2edb4d);}return _0x132125[_0x8b09('0x24')]();};}function saveUpdates(_0x2f9cc2,_0x1bc502){return function(_0x55150f){if(_0x55150f){return _0x55150f['update'](_0x2f9cc2)[_0x8b09('0x25')](function(_0x23d0f6){return _0x23d0f6;});}return null;};}function removeEntity(_0x33626a,_0x11beb1){return function(_0x3de886){if(_0x3de886){return _0x3de886[_0x8b09('0x26')]()[_0x8b09('0x25')](function(){_0x33626a[_0x8b09('0x1a')](0xcc)[_0x8b09('0x27')]();});}};}function handleEntityNotFound(_0x191ab2,_0x5b72fe){return function(_0xcba0dd){if(!_0xcba0dd){_0x191ab2['sendStatus'](0x194);}return _0xcba0dd;};}function handleError(_0x5c248c,_0x13c8a5){_0x13c8a5=_0x13c8a5||0x1f4;return function(_0x577417){logger[_0x8b09('0x28')](_0x577417[_0x8b09('0x29')]);if(_0x577417[_0x8b09('0x2a')]){delete _0x577417[_0x8b09('0x2a')];}_0x5c248c['status'](_0x13c8a5)['send'](_0x577417);};}exports['index']=function(_0x28b0f6,_0x4da224){var _0x4bcf25={},_0x34b6be={},_0x359bd0={'count':0x0,'rows':[]};var _0x57fd9f=_['map'](db[_0x8b09('0x2b')][_0x8b09('0x2c')],function(_0x10a68d){return{'name':_0x10a68d[_0x8b09('0x2d')],'type':_0x10a68d[_0x8b09('0x2e')][_0x8b09('0x2f')]};});_0x34b6be[_0x8b09('0x30')]=_[_0x8b09('0x31')](_0x57fd9f,_0x8b09('0x2a'));_0x34b6be[_0x8b09('0x32')]=_[_0x8b09('0x33')](_0x28b0f6[_0x8b09('0x32')]);_0x34b6be['filters']=_[_0x8b09('0x34')](_0x34b6be['model'],_0x34b6be[_0x8b09('0x32')]);_0x4bcf25[_0x8b09('0x35')]=_[_0x8b09('0x34')](_0x34b6be['model'],qs[_0x8b09('0x36')](_0x28b0f6[_0x8b09('0x32')]['fields']));_0x4bcf25[_0x8b09('0x35')]=_0x4bcf25[_0x8b09('0x35')][_0x8b09('0x37')]?_0x4bcf25[_0x8b09('0x35')]:_0x34b6be[_0x8b09('0x30')];if(!_0x28b0f6['query'][_0x8b09('0x38')](_0x8b09('0x39'))){_0x4bcf25[_0x8b09('0x1d')]=qs[_0x8b09('0x1d')](_0x28b0f6['query'][_0x8b09('0x1d')]);_0x4bcf25[_0x8b09('0x1c')]=qs[_0x8b09('0x1c')](_0x28b0f6[_0x8b09('0x32')][_0x8b09('0x1c')]);}_0x4bcf25[_0x8b09('0x3a')]=qs[_0x8b09('0x3b')](_0x28b0f6['query']['sort']);_0x4bcf25['where']=qs[_0x8b09('0x3c')](_[_0x8b09('0x3d')](_0x28b0f6[_0x8b09('0x32')],_0x34b6be[_0x8b09('0x3c')]),_0x57fd9f);if(_0x28b0f6[_0x8b09('0x32')][_0x8b09('0x3e')]){_0x4bcf25[_0x8b09('0x3f')]=_['merge'](_0x4bcf25[_0x8b09('0x3f')],{'$or':_[_0x8b09('0x31')](_0x57fd9f,function(_0x4ce861){if(_0x4ce861[_0x8b09('0x2e')]!==_0x8b09('0x40')){var _0x2674a7={};_0x2674a7[_0x4ce861[_0x8b09('0x2a')]]={'$like':'%'+_0x28b0f6[_0x8b09('0x32')][_0x8b09('0x3e')]+'%'};return _0x2674a7;}})});}_0x4bcf25=_[_0x8b09('0x41')]({},_0x4bcf25,_0x28b0f6['options']);var _0x59c21e={'where':_0x4bcf25[_0x8b09('0x3f')]};return db[_0x8b09('0x2b')][_0x8b09('0x1f')](_0x59c21e)[_0x8b09('0x25')](function(_0x3db65d){_0x359bd0[_0x8b09('0x1f')]=_0x3db65d;if(_0x28b0f6['query'][_0x8b09('0x42')]){_0x4bcf25['include']=[{'all':!![]}];}return db[_0x8b09('0x2b')]['findAll'](_0x4bcf25);})[_0x8b09('0x25')](function(_0x58aeda){_0x359bd0[_0x8b09('0x43')]=_0x58aeda;return _0x359bd0;})[_0x8b09('0x25')](respondWithFilteredResult(_0x4da224,_0x4bcf25))['catch'](handleError(_0x4da224,null));};exports[_0x8b09('0x44')]=function(_0x58b7c2,_0x30775d){var _0xe9f317={'raw':![],'where':{'id':_0x58b7c2[_0x8b09('0x45')]['id']}},_0x994ad0={};_0x994ad0[_0x8b09('0x30')]=_['keys'](db[_0x8b09('0x2b')]['rawAttributes']);_0x994ad0[_0x8b09('0x32')]=_['keys'](_0x58b7c2[_0x8b09('0x32')]);_0x994ad0[_0x8b09('0x3c')]=_[_0x8b09('0x34')](_0x994ad0[_0x8b09('0x30')],_0x994ad0['query']);_0xe9f317[_0x8b09('0x35')]=_[_0x8b09('0x34')](_0x994ad0['model'],qs[_0x8b09('0x36')](_0x58b7c2[_0x8b09('0x32')]['fields']));_0xe9f317[_0x8b09('0x35')]=_0xe9f317[_0x8b09('0x35')][_0x8b09('0x37')]?_0xe9f317[_0x8b09('0x35')]:_0x994ad0['model'];if(_0x58b7c2[_0x8b09('0x32')][_0x8b09('0x42')]){_0xe9f317['include']=[{'all':!![]}];}_0xe9f317=_[_0x8b09('0x41')]({},_0xe9f317,_0x58b7c2[_0x8b09('0x46')]);return db['VtigerConfiguration'][_0x8b09('0x47')](_0xe9f317)[_0x8b09('0x25')](handleEntityNotFound(_0x30775d,null))['then'](respondWithResult(_0x30775d,null))['catch'](handleError(_0x30775d,null));};exports[_0x8b09('0x48')]=function(_0x11b470,_0x4b45ab){return db[_0x8b09('0x2b')][_0x8b09('0x48')](_0x11b470[_0x8b09('0x49')],{})['then'](respondWithResult(_0x4b45ab,0xc9))['catch'](handleError(_0x4b45ab,null));};exports[_0x8b09('0x4a')]=function(_0x29b957,_0x10259c){if(_0x29b957[_0x8b09('0x49')]['id']){delete _0x29b957[_0x8b09('0x49')]['id'];}return db[_0x8b09('0x2b')]['find']({'where':{'id':_0x29b957[_0x8b09('0x45')]['id']}})[_0x8b09('0x25')](handleEntityNotFound(_0x10259c,null))['then'](saveUpdates(_0x29b957[_0x8b09('0x49')],null))[_0x8b09('0x25')](respondWithResult(_0x10259c,null))[_0x8b09('0x4b')](handleError(_0x10259c,null));};exports[_0x8b09('0x26')]=function(_0x406a86,_0x6f509){return db[_0x8b09('0x2b')]['find']({'where':{'id':_0x406a86['params']['id']}})[_0x8b09('0x25')](handleEntityNotFound(_0x6f509,null))[_0x8b09('0x25')](removeEntity(_0x6f509,null))[_0x8b09('0x4b')](handleError(_0x6f509,null));};exports['getFields']=function(_0x22e291,_0x6b3299,_0x2ef3da){var _0x236c51={};var _0x1861c1={};var _0x43a20e;var _0x45498d;return db[_0x8b09('0x2b')]['findOne']({'where':{'id':_0x22e291[_0x8b09('0x45')]['id']}})['then'](handleEntityNotFound(_0x6b3299,null))[_0x8b09('0x25')](function(_0x14ac39){if(_0x14ac39){_0x43a20e=_0x14ac39;_0x1861c1['model']=_[_0x8b09('0x33')](db[_0x8b09('0x4c')][_0x8b09('0x2c')]);_0x1861c1[_0x8b09('0x32')]=_[_0x8b09('0x33')](_0x22e291['query']);_0x1861c1[_0x8b09('0x3c')]=_[_0x8b09('0x34')](_0x1861c1['model'],_0x1861c1[_0x8b09('0x32')]);_0x236c51[_0x8b09('0x35')]=_['intersection'](_0x1861c1[_0x8b09('0x30')],qs[_0x8b09('0x36')](_0x22e291[_0x8b09('0x32')]['fields']));_0x236c51[_0x8b09('0x35')]=_0x236c51[_0x8b09('0x35')][_0x8b09('0x37')]?_0x236c51[_0x8b09('0x35')]:_0x1861c1['model'];_0x236c51[_0x8b09('0x3a')]=qs[_0x8b09('0x3b')](_0x22e291[_0x8b09('0x32')]['sort']);_0x236c51['where']=qs[_0x8b09('0x3c')](_[_0x8b09('0x3d')](_0x22e291[_0x8b09('0x32')],_0x1861c1[_0x8b09('0x3c')]));if(_0x22e291[_0x8b09('0x32')][_0x8b09('0x3e')]){_0x236c51[_0x8b09('0x3f')]=_[_0x8b09('0x41')](_0x236c51['where'],{'$or':_['map'](_0x236c51[_0x8b09('0x35')],function(_0x8a1ac9){var _0x498c08={};_0x498c08[_0x8a1ac9]={'$like':'%'+_0x22e291[_0x8b09('0x32')][_0x8b09('0x3e')]+'%'};return _0x498c08;})});}_0x236c51=_[_0x8b09('0x41')]({},_0x236c51,_0x22e291[_0x8b09('0x46')]);return _0x43a20e['getFields'](_0x236c51);}})['then'](function(_0x28f176){if(_0x28f176){_0x45498d=_0x28f176[_0x8b09('0x37')];if(!_0x22e291['query'][_0x8b09('0x38')](_0x8b09('0x39'))){_0x236c51[_0x8b09('0x1d')]=qs[_0x8b09('0x1d')](_0x22e291['query'][_0x8b09('0x1d')]);_0x236c51[_0x8b09('0x1c')]=qs[_0x8b09('0x1c')](_0x22e291[_0x8b09('0x32')][_0x8b09('0x1c')]);}return _0x43a20e['getFields'](_0x236c51);}})['then'](function(_0x10b182){if(_0x10b182){return _0x10b182?{'count':_0x45498d,'rows':_0x10b182}:null;}})[_0x8b09('0x25')](respondWithResult(_0x6b3299,null))['catch'](handleError(_0x6b3299,null));};exports[_0x8b09('0x4d')]=function(_0x3c7288,_0x1f031a,_0x3dfaae){var _0x248da5={};var _0x4085e9={};var _0x925f52;var _0x2c8acc;return db[_0x8b09('0x2b')][_0x8b09('0x4e')]({'where':{'id':_0x3c7288[_0x8b09('0x45')]['id']}})[_0x8b09('0x25')](handleEntityNotFound(_0x1f031a,null))[_0x8b09('0x25')](function(_0x32674c){if(_0x32674c){_0x925f52=_0x32674c;_0x4085e9['model']=_[_0x8b09('0x33')](db[_0x8b09('0x4c')]['rawAttributes']);_0x4085e9[_0x8b09('0x32')]=_['keys'](_0x3c7288['query']);_0x4085e9[_0x8b09('0x3c')]=_['intersection'](_0x4085e9[_0x8b09('0x30')],_0x4085e9['query']);_0x248da5[_0x8b09('0x35')]=_[_0x8b09('0x34')](_0x4085e9[_0x8b09('0x30')],qs[_0x8b09('0x36')](_0x3c7288[_0x8b09('0x32')][_0x8b09('0x36')]));_0x248da5[_0x8b09('0x35')]=_0x248da5[_0x8b09('0x35')]['length']?_0x248da5[_0x8b09('0x35')]:_0x4085e9[_0x8b09('0x30')];_0x248da5[_0x8b09('0x3a')]=qs[_0x8b09('0x3b')](_0x3c7288[_0x8b09('0x32')][_0x8b09('0x3b')]);_0x248da5[_0x8b09('0x3f')]=qs['filters'](_['pick'](_0x3c7288[_0x8b09('0x32')],_0x4085e9[_0x8b09('0x3c')]));if(_0x3c7288['query'][_0x8b09('0x3e')]){_0x248da5[_0x8b09('0x3f')]=_[_0x8b09('0x41')](_0x248da5[_0x8b09('0x3f')],{'$or':_[_0x8b09('0x31')](_0x248da5[_0x8b09('0x35')],function(_0x5bb979){var _0x52ecd6={};_0x52ecd6[_0x5bb979]={'$like':'%'+_0x3c7288[_0x8b09('0x32')][_0x8b09('0x3e')]+'%'};return _0x52ecd6;})});}_0x248da5=_['merge']({},_0x248da5,_0x3c7288[_0x8b09('0x46')]);return _0x925f52[_0x8b09('0x4d')](_0x248da5);}})[_0x8b09('0x25')](function(_0x258686){if(_0x258686){_0x2c8acc=_0x258686[_0x8b09('0x37')];if(!_0x3c7288[_0x8b09('0x32')][_0x8b09('0x38')](_0x8b09('0x39'))){_0x248da5['limit']=qs[_0x8b09('0x1d')](_0x3c7288[_0x8b09('0x32')]['limit']);_0x248da5[_0x8b09('0x1c')]=qs[_0x8b09('0x1c')](_0x3c7288[_0x8b09('0x32')][_0x8b09('0x1c')]);}return _0x925f52[_0x8b09('0x4d')](_0x248da5);}})[_0x8b09('0x25')](function(_0x12172b){if(_0x12172b){return _0x12172b?{'count':_0x2c8acc,'rows':_0x12172b}:null;}})['then'](respondWithResult(_0x1f031a,null))[_0x8b09('0x4b')](handleError(_0x1f031a,null));};exports[_0x8b09('0x4f')]=function(_0x335b75,_0xbe6121,_0x2e53c3){var _0x3be426={};var _0x4aa358={};var _0x5b3049;var _0x57bdec;return db[_0x8b09('0x2b')][_0x8b09('0x4e')]({'where':{'id':_0x335b75[_0x8b09('0x45')]['id']}})[_0x8b09('0x25')](handleEntityNotFound(_0xbe6121,null))[_0x8b09('0x25')](function(_0xd039a4){if(_0xd039a4){_0x5b3049=_0xd039a4;_0x4aa358['model']=_['keys'](db['VtigerField'][_0x8b09('0x2c')]);_0x4aa358[_0x8b09('0x32')]=_[_0x8b09('0x33')](_0x335b75[_0x8b09('0x32')]);_0x4aa358[_0x8b09('0x3c')]=_[_0x8b09('0x34')](_0x4aa358['model'],_0x4aa358['query']);_0x3be426[_0x8b09('0x35')]=_['intersection'](_0x4aa358[_0x8b09('0x30')],qs['fields'](_0x335b75[_0x8b09('0x32')][_0x8b09('0x36')]));_0x3be426['attributes']=_0x3be426[_0x8b09('0x35')][_0x8b09('0x37')]?_0x3be426[_0x8b09('0x35')]:_0x4aa358[_0x8b09('0x30')];_0x3be426[_0x8b09('0x3a')]=qs[_0x8b09('0x3b')](_0x335b75[_0x8b09('0x32')][_0x8b09('0x3b')]);_0x3be426[_0x8b09('0x3f')]=qs[_0x8b09('0x3c')](_[_0x8b09('0x3d')](_0x335b75[_0x8b09('0x32')],_0x4aa358[_0x8b09('0x3c')]));if(_0x335b75[_0x8b09('0x32')][_0x8b09('0x3e')]){_0x3be426['where']=_['merge'](_0x3be426['where'],{'$or':_[_0x8b09('0x31')](_0x3be426[_0x8b09('0x35')],function(_0x34b869){var _0x5c2248={};_0x5c2248[_0x34b869]={'$like':'%'+_0x335b75[_0x8b09('0x32')][_0x8b09('0x3e')]+'%'};return _0x5c2248;})});}_0x3be426=_[_0x8b09('0x41')]({},_0x3be426,_0x335b75[_0x8b09('0x46')]);return _0x5b3049['getDescriptions'](_0x3be426);}})[_0x8b09('0x25')](function(_0x11be6e){if(_0x11be6e){_0x57bdec=_0x11be6e[_0x8b09('0x37')];if(!_0x335b75[_0x8b09('0x32')][_0x8b09('0x38')](_0x8b09('0x39'))){_0x3be426[_0x8b09('0x1d')]=qs[_0x8b09('0x1d')](_0x335b75[_0x8b09('0x32')][_0x8b09('0x1d')]);_0x3be426[_0x8b09('0x1c')]=qs['offset'](_0x335b75[_0x8b09('0x32')]['offset']);}return _0x5b3049[_0x8b09('0x4f')](_0x3be426);}})[_0x8b09('0x25')](function(_0x127581){if(_0x127581){return _0x127581?{'count':_0x57bdec,'rows':_0x127581}:null;}})['then'](respondWithResult(_0xbe6121,null))[_0x8b09('0x4b')](handleError(_0xbe6121,null));};
\ No newline at end of file
index c6c9986..8d0710d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddd9=['moment','request-promise','path','rimraf','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','int_vtiger_configurations','lodash','../../config/logger','api'];(function(_0xf71120,_0x25b7f9){var _0xbe2fd3=function(_0x1acbdd){while(--_0x1acbdd){_0xf71120['push'](_0xf71120['shift']());}};_0xbe2fd3(++_0x25b7f9);}(_0xddd9,0xb1));var _0x9ddd=function(_0x4b4f8e,_0x49ec38){_0x4b4f8e=_0x4b4f8e-0x0;var _0x471341=_0xddd9[_0x4b4f8e];return _0x471341;};'use strict';var _=require(_0x9ddd('0x0'));var util=require('util');var logger=require(_0x9ddd('0x1'))(_0x9ddd('0x2'));var moment=require(_0x9ddd('0x3'));var BPromise=require('bluebird');var rp=require(_0x9ddd('0x4'));var fs=require('fs');var path=require(_0x9ddd('0x5'));var rimraf=require(_0x9ddd('0x6'));var config=require('../../config/environment');var attributes=require(_0x9ddd('0x7'));module[_0x9ddd('0x8')]=function(_0x23ffb5,_0x3e45e9){return _0x23ffb5[_0x9ddd('0x9')](_0x9ddd('0xa'),attributes,{'tableName':_0x9ddd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x61ea=['bluebird','request-promise','rimraf','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','lodash','util','../../config/logger','api','moment'];(function(_0x23055f,_0x22a833){var _0x31bd9d=function(_0x4dc9df){while(--_0x4dc9df){_0x23055f['push'](_0x23055f['shift']());}};_0x31bd9d(++_0x22a833);}(_0x61ea,0x157));var _0xa61e=function(_0xf1af67,_0x2342e2){_0xf1af67=_0xf1af67-0x0;var _0x566de9=_0x61ea[_0xf1af67];return _0x566de9;};'use strict';var _=require(_0xa61e('0x0'));var util=require(_0xa61e('0x1'));var logger=require(_0xa61e('0x2'))(_0xa61e('0x3'));var moment=require(_0xa61e('0x4'));var BPromise=require(_0xa61e('0x5'));var rp=require(_0xa61e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa61e('0x7'));var config=require('../../config/environment');var attributes=require(_0xa61e('0x8'));module[_0xa61e('0x9')]=function(_0x3435c0,_0x6e2b98){return _0x3435c0[_0xa61e('0xa')](_0xa61e('0xb'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 65c7c83..cb77fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cd3=['ioredis','../../config/logger','rpc','jayson/promise','client','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x265aa2,_0x220072){var _0x447a3a=function(_0x1512cc){while(--_0x1512cc){_0x265aa2['push'](_0x265aa2['shift']());}};_0x447a3a(++_0x220072);}(_0x7cd3,0x119));var _0x37cd=function(_0x1ad5db,_0x4d9f97){_0x1ad5db=_0x1ad5db-0x0;var _0x4bd112=_0x7cd3[_0x1ad5db];return _0x4bd112;};'use strict';var _=require(_0x37cd('0x0'));var util=require(_0x37cd('0x1'));var moment=require(_0x37cd('0x2'));var BPromise=require(_0x37cd('0x3'));var rs=require(_0x37cd('0x4'));var fs=require('fs');var Redis=require(_0x37cd('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x37cd('0x6'))(_0x37cd('0x7'));var config=require('../../config/environment');var jayson=require(_0x37cd('0x8'));var client=jayson[_0x37cd('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x106ad9,_0x28234b,_0x51abde){return new BPromise(function(_0x46a254,_0x1fe8ae){return client[_0x37cd('0xa')](_0x106ad9,_0x51abde)[_0x37cd('0xb')](function(_0xcb8f66){logger[_0x37cd('0xc')](_0x37cd('0xd'),_0x28234b,_0x37cd('0xe'));logger['debug'](_0x37cd('0xf'),_0x28234b,'request\x20sent',JSON[_0x37cd('0x10')](_0xcb8f66));if(_0xcb8f66[_0x37cd('0x11')]){if(_0xcb8f66[_0x37cd('0x11')][_0x37cd('0x12')]===0x1f4){logger['error'](_0x37cd('0xd'),_0x28234b,_0xcb8f66['error']['message']);return _0x1fe8ae(_0xcb8f66[_0x37cd('0x11')]['message']);}logger[_0x37cd('0x11')]('VtigerConfiguration,\x20%s,\x20%s',_0x28234b,_0xcb8f66['error'][_0x37cd('0x13')]);return _0x46a254(_0xcb8f66[_0x37cd('0x11')][_0x37cd('0x13')]);}else{logger[_0x37cd('0xc')](_0x37cd('0xd'),_0x28234b,_0x37cd('0xe'));_0x46a254(_0xcb8f66[_0x37cd('0x14')][_0x37cd('0x13')]);}})[_0x37cd('0x15')](function(_0x46bca7){logger[_0x37cd('0x11')](_0x37cd('0xd'),_0x28234b,_0x46bca7);_0x1fe8ae(_0x46bca7);});});}
\ No newline at end of file
+var _0x2f78=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','randomstring'];(function(_0x507982,_0x145928){var _0x4a8cd8=function(_0x4c83f8){while(--_0x4c83f8){_0x507982['push'](_0x507982['shift']());}};_0x4a8cd8(++_0x145928);}(_0x2f78,0x83));var _0x82f7=function(_0x4b3586,_0xb8a43){_0x4b3586=_0x4b3586-0x0;var _0x6662f7=_0x2f78[_0x4b3586];return _0x6662f7;};'use strict';var _=require(_0x82f7('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x82f7('0x1'));var fs=require('fs');var Redis=require(_0x82f7('0x2'));var db=require(_0x82f7('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x82f7('0x4'))(_0x82f7('0x5'));var config=require(_0x82f7('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x82f7('0x7')][_0x82f7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x32a5a4,_0x596d8b,_0x4a485a){return new BPromise(function(_0x5e112c,_0x2102e5){return client[_0x82f7('0x9')](_0x32a5a4,_0x4a485a)[_0x82f7('0xa')](function(_0x170638){logger[_0x82f7('0xb')](_0x82f7('0xc'),_0x596d8b,_0x82f7('0xd'));logger['debug']('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x596d8b,_0x82f7('0xd'),JSON[_0x82f7('0xe')](_0x170638));if(_0x170638[_0x82f7('0xf')]){if(_0x170638[_0x82f7('0xf')][_0x82f7('0x10')]===0x1f4){logger[_0x82f7('0xf')]('VtigerConfiguration,\x20%s,\x20%s',_0x596d8b,_0x170638[_0x82f7('0xf')]['message']);return _0x2102e5(_0x170638[_0x82f7('0xf')][_0x82f7('0x11')]);}logger['error'](_0x82f7('0xc'),_0x596d8b,_0x170638[_0x82f7('0xf')][_0x82f7('0x11')]);return _0x5e112c(_0x170638['error']['message']);}else{logger[_0x82f7('0xb')]('VtigerConfiguration,\x20%s,\x20%s',_0x596d8b,_0x82f7('0xd'));_0x5e112c(_0x170638['result'][_0x82f7('0x11')]);}})[_0x82f7('0x12')](function(_0xcbd208){logger[_0x82f7('0xf')]('VtigerConfiguration,\x20%s,\x20%s',_0x596d8b,_0xcbd208);_0x2102e5(_0xcbd208);});});}
\ No newline at end of file
index 5369af8..9329222 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d5f=['exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','/:id','show','post','create','put','destroy'];(function(_0x1f1511,_0x4ea911){var _0x1d9ab8=function(_0x53276a){while(--_0x53276a){_0x1f1511['push'](_0x1f1511['shift']());}};_0x1d9ab8(++_0x4ea911);}(_0x7d5f,0x1dc));var _0xf7d5=function(_0x206daa,_0x24748d){_0x206daa=_0x206daa-0x0;var _0x393686=_0x7d5f[_0x206daa];return _0x393686;};'use strict';var multer=require(_0xf7d5('0x0'));var util=require('util');var path=require(_0xf7d5('0x1'));var timeout=require(_0xf7d5('0x2'));var express=require('express');var router=express[_0xf7d5('0x3')]();var fs_extra=require(_0xf7d5('0x4'));var auth=require(_0xf7d5('0x5'));var interaction=require(_0xf7d5('0x6'));var config=require(_0xf7d5('0x7'));var controller=require(_0xf7d5('0x8'));router[_0xf7d5('0x9')]('/',auth[_0xf7d5('0xa')](),controller[_0xf7d5('0xb')]);router[_0xf7d5('0x9')](_0xf7d5('0xc'),auth[_0xf7d5('0xa')](),controller[_0xf7d5('0xd')]);router[_0xf7d5('0xe')]('/',auth[_0xf7d5('0xa')](),controller[_0xf7d5('0xf')]);router[_0xf7d5('0x10')](_0xf7d5('0xc'),auth[_0xf7d5('0xa')](),controller['update']);router['delete'](_0xf7d5('0xc'),auth['isAuthenticated'](),controller[_0xf7d5('0x11')]);module[_0xf7d5('0x12')]=router;
\ No newline at end of file
+var _0xa982=['connect-timeout','express','Router','../../components/auth/service','get','isAuthenticated','/:id','show','post','create','update','destroy','exports','multer','util','path'];(function(_0x2a8c7f,_0xeda626){var _0x42ac11=function(_0x57b8ce){while(--_0x57b8ce){_0x2a8c7f['push'](_0x2a8c7f['shift']());}};_0x42ac11(++_0xeda626);}(_0xa982,0x1cd));var _0x2a98=function(_0x4e8286,_0x4eaeb4){_0x4e8286=_0x4e8286-0x0;var _0x44a440=_0xa982[_0x4e8286];return _0x44a440;};'use strict';var multer=require(_0x2a98('0x0'));var util=require(_0x2a98('0x1'));var path=require(_0x2a98('0x2'));var timeout=require(_0x2a98('0x3'));var express=require(_0x2a98('0x4'));var router=express[_0x2a98('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x2a98('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intVtigerField.controller');router[_0x2a98('0x7')]('/',auth[_0x2a98('0x8')](),controller['index']);router['get'](_0x2a98('0x9'),auth[_0x2a98('0x8')](),controller[_0x2a98('0xa')]);router[_0x2a98('0xb')]('/',auth['isAuthenticated'](),controller[_0x2a98('0xc')]);router['put'](_0x2a98('0x9'),auth['isAuthenticated'](),controller[_0x2a98('0xd')]);router['delete'](_0x2a98('0x9'),auth[_0x2a98('0x8')](),controller[_0x2a98('0xe')]);module[_0x2a98('0xf')]=router;
\ No newline at end of file
index 00a8cab..0deced7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc7=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','ENUM','string'];(function(_0x1d4929,_0x6f0475){var _0x161ace=function(_0x157c42){while(--_0x157c42){_0x1d4929['push'](_0x1d4929['shift']());}};_0x161ace(++_0x6f0475);}(_0x4fc7,0x1bf));var _0x74fc=function(_0x236886,_0x1084b9){_0x236886=_0x236886-0x0;var _0x5ad312=_0x4fc7[_0x236886];return _0x5ad312;};'use strict';var Sequelize=require(_0x74fc('0x0'));module['exports']={'type':{'type':Sequelize[_0x74fc('0x1')](_0x74fc('0x2'),_0x74fc('0x3'),_0x74fc('0x4'),_0x74fc('0x5'),_0x74fc('0x6')),'defaultValue':_0x74fc('0x2')},'content':{'type':Sequelize[_0x74fc('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x74fc('0x1')]('string','variable',_0x74fc('0x4'))},'keyContent':{'type':Sequelize[_0x74fc('0x7')]},'idField':{'type':Sequelize[_0x74fc('0x7')]},'nameField':{'type':Sequelize[_0x74fc('0x7')]},'customField':{'type':Sequelize[_0x74fc('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x74fc('0x7')]}};
\ No newline at end of file
+var _0xfa67=['picklist','STRING','ENUM','variable','BOOLEAN','sequelize','exports','string','customVariable'];(function(_0x49aa9d,_0x6b17f9){var _0xf12658=function(_0x248e4d){while(--_0x248e4d){_0x49aa9d['push'](_0x49aa9d['shift']());}};_0xf12658(++_0x6b17f9);}(_0xfa67,0x188));var _0x7fa6=function(_0x14f43,_0x5f3a9a){_0x14f43=_0x14f43-0x0;var _0x41c33c=_0xfa67[_0x14f43];return _0x41c33c;};'use strict';var Sequelize=require(_0x7fa6('0x0'));module[_0x7fa6('0x1')]={'type':{'type':Sequelize['ENUM'](_0x7fa6('0x2'),'variable',_0x7fa6('0x3'),'keyValue',_0x7fa6('0x4')),'defaultValue':_0x7fa6('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x7fa6('0x5')]},'keyType':{'type':Sequelize[_0x7fa6('0x6')]('string',_0x7fa6('0x7'),_0x7fa6('0x3'))},'keyContent':{'type':Sequelize[_0x7fa6('0x5')]},'idField':{'type':Sequelize[_0x7fa6('0x5')]},'nameField':{'type':Sequelize[_0x7fa6('0x5')]},'customField':{'type':Sequelize[_0x7fa6('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7fa6('0x5')]}};
\ No newline at end of file
index 82a23ae..ffb7007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06ab=['json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','VtigerField','rows','catch','show','params','find','create','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','api','../../mysqldb','status','end'];(function(_0x35658a,_0x2cc9d8){var _0x1c23df=function(_0x10f363){while(--_0x10f363){_0x35658a['push'](_0x35658a['shift']());}};_0x1c23df(++_0x2cc9d8);}(_0x06ab,0x148));var _0xb06a=function(_0x385477,_0x47f754){_0x385477=_0x385477-0x0;var _0x1dc9cf=_0x06ab[_0x385477];return _0x1dc9cf;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb06a('0x0'));var jsonpatch=require(_0xb06a('0x1'));var rp=require(_0xb06a('0x2'));var moment=require(_0xb06a('0x3'));var BPromise=require(_0xb06a('0x4'));var Mustache=require('mustache');var util=require(_0xb06a('0x5'));var path=require(_0xb06a('0x6'));var sox=require(_0xb06a('0x7'));var csv=require(_0xb06a('0x8'));var ejs=require(_0xb06a('0x9'));var fs=require('fs');var fs_extra=require(_0xb06a('0xa'));var _=require(_0xb06a('0xb'));var squel=require(_0xb06a('0xc'));var crypto=require('crypto');var jsforce=require(_0xb06a('0xd'));var deskjs=require(_0xb06a('0xe'));var toCsv=require(_0xb06a('0x8'));var querystring=require(_0xb06a('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb06a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb06a('0x11'));var logger=require('../../config/logger')(_0xb06a('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb06a('0x13'))['db'];function respondWithStatusCode(_0x29c98c,_0x8f7ff4){_0x8f7ff4=_0x8f7ff4||0xcc;return function(_0x43ff4f){if(_0x43ff4f){return _0x29c98c['sendStatus'](_0x8f7ff4);}return _0x29c98c[_0xb06a('0x14')](_0x8f7ff4)[_0xb06a('0x15')]();};}function respondWithResult(_0x1937e2,_0x418266){_0x418266=_0x418266||0xc8;return function(_0x3a5b08){if(_0x3a5b08){return _0x1937e2[_0xb06a('0x14')](_0x418266)[_0xb06a('0x16')](_0x3a5b08);}};}function respondWithFilteredResult(_0x1a8d72,_0x1b162d){return function(_0x20f6b2){if(_0x20f6b2){var _0x519c22=typeof _0x1b162d[_0xb06a('0x17')]===_0xb06a('0x18')&&typeof _0x1b162d[_0xb06a('0x19')]===_0xb06a('0x18');var _0x4e3a70=_0x20f6b2[_0xb06a('0x1a')];var _0x200e7a=_0x519c22?0x0:_0x1b162d['offset'];var _0x128f30=_0x519c22?_0x20f6b2[_0xb06a('0x1a')]:_0x1b162d[_0xb06a('0x17')]+_0x1b162d[_0xb06a('0x19')];var _0x3a0623;if(_0x128f30>=_0x4e3a70){_0x128f30=_0x4e3a70;_0x3a0623=0xc8;}else{_0x3a0623=0xce;}_0x1a8d72[_0xb06a('0x14')](_0x3a0623);return _0x1a8d72['set'](_0xb06a('0x1b'),_0x200e7a+'-'+_0x128f30+'/'+_0x4e3a70)[_0xb06a('0x16')](_0x20f6b2);}return null;};}function patchUpdates(_0x4dff95){return function(_0x11468e){try{jsonpatch[_0xb06a('0x1c')](_0x11468e,_0x4dff95,!![]);}catch(_0x5ab3c7){return BPromise[_0xb06a('0x1d')](_0x5ab3c7);}return _0x11468e[_0xb06a('0x1e')]();};}function saveUpdates(_0x1643f1,_0x358873){return function(_0x4574ea){if(_0x4574ea){return _0x4574ea[_0xb06a('0x1f')](_0x1643f1)[_0xb06a('0x20')](function(_0x20575f){return _0x20575f;});}return null;};}function removeEntity(_0xdb64b2,_0x41abbd){return function(_0x52760a){if(_0x52760a){return _0x52760a[_0xb06a('0x21')]()[_0xb06a('0x20')](function(){_0xdb64b2[_0xb06a('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x342a32,_0xecf57f){return function(_0x23c948){if(!_0x23c948){_0x342a32[_0xb06a('0x22')](0x194);}return _0x23c948;};}function handleError(_0x4c566c,_0x2d04a4){_0x2d04a4=_0x2d04a4||0x1f4;return function(_0x99bd){logger[_0xb06a('0x23')](_0x99bd[_0xb06a('0x24')]);if(_0x99bd[_0xb06a('0x25')]){delete _0x99bd['name'];}_0x4c566c[_0xb06a('0x14')](_0x2d04a4)['send'](_0x99bd);};}exports[_0xb06a('0x26')]=function(_0x1f7a77,_0x576ae8){var _0x465263={},_0x415cdf={},_0x2fa5ba={'count':0x0,'rows':[]};var _0x23a4a1=_[_0xb06a('0x27')](db['VtigerField'][_0xb06a('0x28')],function(_0x4d0dfb){return{'name':_0x4d0dfb[_0xb06a('0x29')],'type':_0x4d0dfb[_0xb06a('0x2a')][_0xb06a('0x2b')]};});_0x415cdf[_0xb06a('0x2c')]=_['map'](_0x23a4a1,_0xb06a('0x25'));_0x415cdf['query']=_[_0xb06a('0x2d')](_0x1f7a77[_0xb06a('0x2e')]);_0x415cdf[_0xb06a('0x2f')]=_[_0xb06a('0x30')](_0x415cdf[_0xb06a('0x2c')],_0x415cdf[_0xb06a('0x2e')]);_0x465263[_0xb06a('0x31')]=_['intersection'](_0x415cdf['model'],qs[_0xb06a('0x32')](_0x1f7a77[_0xb06a('0x2e')][_0xb06a('0x32')]));_0x465263[_0xb06a('0x31')]=_0x465263[_0xb06a('0x31')][_0xb06a('0x33')]?_0x465263[_0xb06a('0x31')]:_0x415cdf[_0xb06a('0x2c')];if(!_0x1f7a77['query'][_0xb06a('0x34')](_0xb06a('0x35'))){_0x465263[_0xb06a('0x19')]=qs[_0xb06a('0x19')](_0x1f7a77['query'][_0xb06a('0x19')]);_0x465263['offset']=qs[_0xb06a('0x17')](_0x1f7a77[_0xb06a('0x2e')][_0xb06a('0x17')]);}_0x465263['order']=qs[_0xb06a('0x36')](_0x1f7a77['query'][_0xb06a('0x36')]);_0x465263[_0xb06a('0x37')]=qs[_0xb06a('0x2f')](_[_0xb06a('0x38')](_0x1f7a77[_0xb06a('0x2e')],_0x415cdf['filters']),_0x23a4a1);if(_0x1f7a77['query'][_0xb06a('0x39')]){_0x465263[_0xb06a('0x37')]=_[_0xb06a('0x3a')](_0x465263['where'],{'$or':_[_0xb06a('0x27')](_0x23a4a1,function(_0xafd21b){if(_0xafd21b[_0xb06a('0x2a')]!==_0xb06a('0x3b')){var _0x44413e={};_0x44413e[_0xafd21b[_0xb06a('0x25')]]={'$like':'%'+_0x1f7a77[_0xb06a('0x2e')][_0xb06a('0x39')]+'%'};return _0x44413e;}})});}_0x465263=_[_0xb06a('0x3a')]({},_0x465263,_0x1f7a77['options']);var _0x486482={'where':_0x465263['where']};return db['VtigerField']['count'](_0x486482)[_0xb06a('0x20')](function(_0x294abc){_0x2fa5ba[_0xb06a('0x1a')]=_0x294abc;if(_0x1f7a77[_0xb06a('0x2e')][_0xb06a('0x3c')]){_0x465263[_0xb06a('0x3d')]=[{'all':!![]}];}return db[_0xb06a('0x3e')]['findAll'](_0x465263);})['then'](function(_0x3c43cb){_0x2fa5ba[_0xb06a('0x3f')]=_0x3c43cb;return _0x2fa5ba;})[_0xb06a('0x20')](respondWithFilteredResult(_0x576ae8,_0x465263))[_0xb06a('0x40')](handleError(_0x576ae8,null));};exports[_0xb06a('0x41')]=function(_0x6fda0b,_0x25711f){var _0x30a17e={'raw':!![],'where':{'id':_0x6fda0b[_0xb06a('0x42')]['id']}},_0x4c3ed0={};_0x4c3ed0['model']=_[_0xb06a('0x2d')](db[_0xb06a('0x3e')][_0xb06a('0x28')]);_0x4c3ed0[_0xb06a('0x2e')]=_[_0xb06a('0x2d')](_0x6fda0b[_0xb06a('0x2e')]);_0x4c3ed0[_0xb06a('0x2f')]=_[_0xb06a('0x30')](_0x4c3ed0[_0xb06a('0x2c')],_0x4c3ed0[_0xb06a('0x2e')]);_0x30a17e[_0xb06a('0x31')]=_[_0xb06a('0x30')](_0x4c3ed0[_0xb06a('0x2c')],qs['fields'](_0x6fda0b[_0xb06a('0x2e')]['fields']));_0x30a17e['attributes']=_0x30a17e[_0xb06a('0x31')]['length']?_0x30a17e[_0xb06a('0x31')]:_0x4c3ed0[_0xb06a('0x2c')];if(_0x6fda0b[_0xb06a('0x2e')][_0xb06a('0x3c')]){_0x30a17e[_0xb06a('0x3d')]=[{'all':!![]}];}_0x30a17e=_[_0xb06a('0x3a')]({},_0x30a17e,_0x6fda0b['options']);return db[_0xb06a('0x3e')][_0xb06a('0x43')](_0x30a17e)['then'](handleEntityNotFound(_0x25711f,null))[_0xb06a('0x20')](respondWithResult(_0x25711f,null))[_0xb06a('0x40')](handleError(_0x25711f,null));};exports[_0xb06a('0x44')]=function(_0x42d220,_0x2d596c){return db[_0xb06a('0x3e')][_0xb06a('0x44')](_0x42d220[_0xb06a('0x45')],{})[_0xb06a('0x20')](respondWithResult(_0x2d596c,0xc9))[_0xb06a('0x40')](handleError(_0x2d596c,null));};exports[_0xb06a('0x1f')]=function(_0x601933,_0xe4e0f1){if(_0x601933['body']['id']){delete _0x601933['body']['id'];}return db['VtigerField'][_0xb06a('0x43')]({'where':{'id':_0x601933[_0xb06a('0x42')]['id']}})[_0xb06a('0x20')](handleEntityNotFound(_0xe4e0f1,null))[_0xb06a('0x20')](saveUpdates(_0x601933['body'],null))[_0xb06a('0x20')](respondWithResult(_0xe4e0f1,null))['catch'](handleError(_0xe4e0f1,null));};exports[_0xb06a('0x21')]=function(_0x4610ec,_0x3f8570){return db[_0xb06a('0x3e')][_0xb06a('0x43')]({'where':{'id':_0x4610ec[_0xb06a('0x42')]['id']}})['then'](handleEntityNotFound(_0x3f8570,null))[_0xb06a('0x20')](removeEntity(_0x3f8570,null))[_0xb06a('0x40')](handleError(_0x3f8570,null));};
\ No newline at end of file
+var _0xb3f9=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','save','destroy','end','error','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','options','includeAll','findAll','then','rows','catch','show','params','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x2b3a32,_0x22640a){var _0x20f6b9=function(_0x1898f1){while(--_0x1898f1){_0x2b3a32['push'](_0x2b3a32['shift']());}};_0x20f6b9(++_0x22640a);}(_0xb3f9,0x83));var _0x9b3f=function(_0x3d3ab3,_0x36e954){_0x3d3ab3=_0x3d3ab3-0x0;var _0x2264a4=_0xb3f9[_0x3d3ab3];return _0x2264a4;};'use strict';var emlformat=require(_0x9b3f('0x0'));var rimraf=require(_0x9b3f('0x1'));var zipdir=require(_0x9b3f('0x2'));var jsonpatch=require(_0x9b3f('0x3'));var rp=require(_0x9b3f('0x4'));var moment=require('moment');var BPromise=require(_0x9b3f('0x5'));var Mustache=require(_0x9b3f('0x6'));var util=require(_0x9b3f('0x7'));var path=require(_0x9b3f('0x8'));var sox=require(_0x9b3f('0x9'));var csv=require(_0x9b3f('0xa'));var ejs=require(_0x9b3f('0xb'));var fs=require('fs');var fs_extra=require(_0x9b3f('0xc'));var _=require('lodash');var squel=require(_0x9b3f('0xd'));var crypto=require(_0x9b3f('0xe'));var jsforce=require(_0x9b3f('0xf'));var deskjs=require(_0x9b3f('0x10'));var toCsv=require(_0x9b3f('0xa'));var querystring=require('querystring');var Papa=require(_0x9b3f('0x11'));var Redis=require(_0x9b3f('0x12'));var authService=require(_0x9b3f('0x13'));var qs=require(_0x9b3f('0x14'));var as=require(_0x9b3f('0x15'));var hardwareService=require(_0x9b3f('0x16'));var logger=require(_0x9b3f('0x17'))(_0x9b3f('0x18'));var utils=require('../../config/utils');var config=require(_0x9b3f('0x19'));var licenseUtil=require(_0x9b3f('0x1a'));var db=require(_0x9b3f('0x1b'))['db'];function respondWithStatusCode(_0x2aacd8,_0x16fb2d){_0x16fb2d=_0x16fb2d||0xcc;return function(_0xd57748){if(_0xd57748){return _0x2aacd8[_0x9b3f('0x1c')](_0x16fb2d);}return _0x2aacd8[_0x9b3f('0x1d')](_0x16fb2d)['end']();};}function respondWithResult(_0x90f473,_0x509c63){_0x509c63=_0x509c63||0xc8;return function(_0xb18f1b){if(_0xb18f1b){return _0x90f473[_0x9b3f('0x1d')](_0x509c63)['json'](_0xb18f1b);}};}function respondWithFilteredResult(_0x42368f,_0x115ed7){return function(_0x58dc7b){if(_0x58dc7b){var _0xc6890c=typeof _0x115ed7[_0x9b3f('0x1e')]===_0x9b3f('0x1f')&&typeof _0x115ed7['limit']===_0x9b3f('0x1f');var _0x53fadf=_0x58dc7b['count'];var _0x85737b=_0xc6890c?0x0:_0x115ed7[_0x9b3f('0x1e')];var _0x6885d5=_0xc6890c?_0x58dc7b[_0x9b3f('0x20')]:_0x115ed7[_0x9b3f('0x1e')]+_0x115ed7[_0x9b3f('0x21')];var _0x2c2181;if(_0x6885d5>=_0x53fadf){_0x6885d5=_0x53fadf;_0x2c2181=0xc8;}else{_0x2c2181=0xce;}_0x42368f['status'](_0x2c2181);return _0x42368f[_0x9b3f('0x22')](_0x9b3f('0x23'),_0x85737b+'-'+_0x6885d5+'/'+_0x53fadf)[_0x9b3f('0x24')](_0x58dc7b);}return null;};}function patchUpdates(_0x54c1e2){return function(_0x4ed1a2){try{jsonpatch[_0x9b3f('0x25')](_0x4ed1a2,_0x54c1e2,!![]);}catch(_0x1d5d30){return BPromise['reject'](_0x1d5d30);}return _0x4ed1a2[_0x9b3f('0x26')]();};}function saveUpdates(_0x1f886c,_0x9b7520){return function(_0x59707d){if(_0x59707d){return _0x59707d['update'](_0x1f886c)['then'](function(_0x15bcae){return _0x15bcae;});}return null;};}function removeEntity(_0x229ddb,_0xb4597f){return function(_0x289605){if(_0x289605){return _0x289605[_0x9b3f('0x27')]()['then'](function(){_0x229ddb['status'](0xcc)[_0x9b3f('0x28')]();});}};}function handleEntityNotFound(_0xacd713,_0x5d3e29){return function(_0x48bec3){if(!_0x48bec3){_0xacd713[_0x9b3f('0x1c')](0x194);}return _0x48bec3;};}function handleError(_0x22bf11,_0x3dab41){_0x3dab41=_0x3dab41||0x1f4;return function(_0x572c37){logger[_0x9b3f('0x29')](_0x572c37['stack']);if(_0x572c37[_0x9b3f('0x2a')]){delete _0x572c37['name'];}_0x22bf11[_0x9b3f('0x1d')](_0x3dab41)[_0x9b3f('0x2b')](_0x572c37);};}exports[_0x9b3f('0x2c')]=function(_0x5c651b,_0x3fb7a9){var _0x214bc3={},_0x30c368={},_0x105308={'count':0x0,'rows':[]};var _0x5d65e1=_[_0x9b3f('0x2d')](db[_0x9b3f('0x2e')][_0x9b3f('0x2f')],function(_0x54b12a){return{'name':_0x54b12a[_0x9b3f('0x30')],'type':_0x54b12a[_0x9b3f('0x31')][_0x9b3f('0x32')]};});_0x30c368['model']=_[_0x9b3f('0x2d')](_0x5d65e1,_0x9b3f('0x2a'));_0x30c368[_0x9b3f('0x33')]=_[_0x9b3f('0x34')](_0x5c651b[_0x9b3f('0x33')]);_0x30c368['filters']=_[_0x9b3f('0x35')](_0x30c368['model'],_0x30c368[_0x9b3f('0x33')]);_0x214bc3[_0x9b3f('0x36')]=_['intersection'](_0x30c368[_0x9b3f('0x37')],qs[_0x9b3f('0x38')](_0x5c651b[_0x9b3f('0x33')][_0x9b3f('0x38')]));_0x214bc3['attributes']=_0x214bc3['attributes'][_0x9b3f('0x39')]?_0x214bc3[_0x9b3f('0x36')]:_0x30c368[_0x9b3f('0x37')];if(!_0x5c651b[_0x9b3f('0x33')][_0x9b3f('0x3a')]('nolimit')){_0x214bc3[_0x9b3f('0x21')]=qs[_0x9b3f('0x21')](_0x5c651b['query'][_0x9b3f('0x21')]);_0x214bc3['offset']=qs['offset'](_0x5c651b['query'][_0x9b3f('0x1e')]);}_0x214bc3[_0x9b3f('0x3b')]=qs[_0x9b3f('0x3c')](_0x5c651b[_0x9b3f('0x33')]['sort']);_0x214bc3[_0x9b3f('0x3d')]=qs['filters'](_[_0x9b3f('0x3e')](_0x5c651b[_0x9b3f('0x33')],_0x30c368[_0x9b3f('0x3f')]),_0x5d65e1);if(_0x5c651b['query'][_0x9b3f('0x40')]){_0x214bc3[_0x9b3f('0x3d')]=_['merge'](_0x214bc3[_0x9b3f('0x3d')],{'$or':_[_0x9b3f('0x2d')](_0x5d65e1,function(_0x1c13fe){if(_0x1c13fe['type']!=='VIRTUAL'){var _0x3c3ab6={};_0x3c3ab6[_0x1c13fe['name']]={'$like':'%'+_0x5c651b['query'][_0x9b3f('0x40')]+'%'};return _0x3c3ab6;}})});}_0x214bc3=_[_0x9b3f('0x41')]({},_0x214bc3,_0x5c651b[_0x9b3f('0x42')]);var _0x2db697={'where':_0x214bc3[_0x9b3f('0x3d')]};return db[_0x9b3f('0x2e')]['count'](_0x2db697)['then'](function(_0x266907){_0x105308[_0x9b3f('0x20')]=_0x266907;if(_0x5c651b['query'][_0x9b3f('0x43')]){_0x214bc3['include']=[{'all':!![]}];}return db['VtigerField'][_0x9b3f('0x44')](_0x214bc3);})[_0x9b3f('0x45')](function(_0x47900f){_0x105308[_0x9b3f('0x46')]=_0x47900f;return _0x105308;})[_0x9b3f('0x45')](respondWithFilteredResult(_0x3fb7a9,_0x214bc3))[_0x9b3f('0x47')](handleError(_0x3fb7a9,null));};exports[_0x9b3f('0x48')]=function(_0x4ada24,_0x24bc03){var _0x2972d6={'raw':!![],'where':{'id':_0x4ada24[_0x9b3f('0x49')]['id']}},_0x3c2821={};_0x3c2821[_0x9b3f('0x37')]=_[_0x9b3f('0x34')](db[_0x9b3f('0x2e')][_0x9b3f('0x2f')]);_0x3c2821['query']=_[_0x9b3f('0x34')](_0x4ada24[_0x9b3f('0x33')]);_0x3c2821[_0x9b3f('0x3f')]=_[_0x9b3f('0x35')](_0x3c2821[_0x9b3f('0x37')],_0x3c2821[_0x9b3f('0x33')]);_0x2972d6[_0x9b3f('0x36')]=_[_0x9b3f('0x35')](_0x3c2821['model'],qs[_0x9b3f('0x38')](_0x4ada24[_0x9b3f('0x33')][_0x9b3f('0x38')]));_0x2972d6[_0x9b3f('0x36')]=_0x2972d6['attributes']['length']?_0x2972d6[_0x9b3f('0x36')]:_0x3c2821[_0x9b3f('0x37')];if(_0x4ada24[_0x9b3f('0x33')][_0x9b3f('0x43')]){_0x2972d6['include']=[{'all':!![]}];}_0x2972d6=_[_0x9b3f('0x41')]({},_0x2972d6,_0x4ada24['options']);return db[_0x9b3f('0x2e')][_0x9b3f('0x4a')](_0x2972d6)['then'](handleEntityNotFound(_0x24bc03,null))[_0x9b3f('0x45')](respondWithResult(_0x24bc03,null))[_0x9b3f('0x47')](handleError(_0x24bc03,null));};exports['create']=function(_0x268b42,_0x222290){return db['VtigerField'][_0x9b3f('0x4b')](_0x268b42[_0x9b3f('0x4c')],{})['then'](respondWithResult(_0x222290,0xc9))['catch'](handleError(_0x222290,null));};exports[_0x9b3f('0x4d')]=function(_0x52e3ab,_0x44d9dc){if(_0x52e3ab[_0x9b3f('0x4c')]['id']){delete _0x52e3ab[_0x9b3f('0x4c')]['id'];}return db[_0x9b3f('0x2e')][_0x9b3f('0x4a')]({'where':{'id':_0x52e3ab['params']['id']}})[_0x9b3f('0x45')](handleEntityNotFound(_0x44d9dc,null))[_0x9b3f('0x45')](saveUpdates(_0x52e3ab[_0x9b3f('0x4c')],null))['then'](respondWithResult(_0x44d9dc,null))[_0x9b3f('0x47')](handleError(_0x44d9dc,null));};exports[_0x9b3f('0x27')]=function(_0x45af8c,_0x2f0424){return db['VtigerField'][_0x9b3f('0x4a')]({'where':{'id':_0x45af8c[_0x9b3f('0x49')]['id']}})[_0x9b3f('0x45')](handleEntityNotFound(_0x2f0424,null))['then'](removeEntity(_0x2f0424,null))[_0x9b3f('0x47')](handleError(_0x2f0424,null));};
\ No newline at end of file
index fb69e95..b34dcfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0259=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','./intVtigerField.attributes','exports','define','idField','FieldId','lodash'];(function(_0x1deecb,_0x535405){var _0x1a6903=function(_0x1a2e6f){while(--_0x1a2e6f){_0x1deecb['push'](_0x1deecb['shift']());}};_0x1a6903(++_0x535405);}(_0x0259,0xe9));var _0x9025=function(_0x538c83,_0x5b2b93){_0x538c83=_0x538c83-0x0;var _0xc7734e=_0x0259[_0x538c83];return _0xc7734e;};'use strict';var _=require(_0x9025('0x0'));var util=require(_0x9025('0x1'));var logger=require(_0x9025('0x2'))(_0x9025('0x3'));var moment=require('moment');var BPromise=require(_0x9025('0x4'));var rp=require(_0x9025('0x5'));var fs=require('fs');var path=require(_0x9025('0x6'));var rimraf=require(_0x9025('0x7'));var config=require('../../config/environment');var attributes=require(_0x9025('0x8'));module[_0x9025('0x9')]=function(_0x2ce830,_0x5aabd9){return _0x2ce830[_0x9025('0xa')]('VtigerField',attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0x9025('0xb'),_0x9025('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6c4=['rimraf','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','moment','bluebird','request-promise'];(function(_0x315aea,_0x318a80){var _0x4a4bdb=function(_0x7c049c){while(--_0x7c049c){_0x315aea['push'](_0x315aea['shift']());}};_0x4a4bdb(++_0x318a80);}(_0xc6c4,0xf9));var _0x4c6c=function(_0x3ba22c,_0x46c230){_0x3ba22c=_0x3ba22c-0x0;var _0x4491e9=_0xc6c4[_0x3ba22c];return _0x4491e9;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x4c6c('0x0'));var BPromise=require(_0x4c6c('0x1'));var rp=require(_0x4c6c('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4c6c('0x3'));var config=require('../../config/environment');var attributes=require(_0x4c6c('0x4'));module[_0x4c6c('0x5')]=function(_0x2dbe65,_0x135248){return _0x2dbe65[_0x4c6c('0x6')](_0x4c6c('0x7'),attributes,{'tableName':_0x4c6c('0x8'),'paranoid':![],'indexes':[{'name':_0x4c6c('0x9'),'fields':[_0x4c6c('0xa'),_0x4c6c('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1ac61b9..fc3a76f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09b1=['info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then'];(function(_0x1c6eb1,_0x5d90b4){var _0x6cae93=function(_0x26f2da){while(--_0x26f2da){_0x1c6eb1['push'](_0x1c6eb1['shift']());}};_0x6cae93(++_0x5d90b4);}(_0x09b1,0x9b));var _0x109b=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x09b1[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x109b('0x0'));var util=require('util');var moment=require(_0x109b('0x1'));var BPromise=require(_0x109b('0x2'));var rs=require(_0x109b('0x3'));var fs=require('fs');var Redis=require(_0x109b('0x4'));var db=require(_0x109b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x109b('0x6'))(_0x109b('0x7'));var config=require(_0x109b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x109b('0x9')][_0x109b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41c3a7,_0x33a535,_0x226522){return new BPromise(function(_0x1a2f46,_0x40d452){return client[_0x109b('0xb')](_0x41c3a7,_0x226522)[_0x109b('0xc')](function(_0x3dc8e6){logger[_0x109b('0xd')](_0x109b('0xe'),_0x33a535,_0x109b('0xf'));logger[_0x109b('0x10')](_0x109b('0x11'),_0x33a535,_0x109b('0xf'),JSON[_0x109b('0x12')](_0x3dc8e6));if(_0x3dc8e6[_0x109b('0x13')]){if(_0x3dc8e6[_0x109b('0x13')][_0x109b('0x14')]===0x1f4){logger[_0x109b('0x13')](_0x109b('0xe'),_0x33a535,_0x3dc8e6[_0x109b('0x13')][_0x109b('0x15')]);return _0x40d452(_0x3dc8e6[_0x109b('0x13')][_0x109b('0x15')]);}logger[_0x109b('0x13')](_0x109b('0xe'),_0x33a535,_0x3dc8e6[_0x109b('0x13')][_0x109b('0x15')]);return _0x1a2f46(_0x3dc8e6['error']['message']);}else{logger['info'](_0x109b('0xe'),_0x33a535,_0x109b('0xf'));_0x1a2f46(_0x3dc8e6[_0x109b('0x16')][_0x109b('0x15')]);}})[_0x109b('0x17')](function(_0x3d6136){logger[_0x109b('0x13')]('VtigerField,\x20%s,\x20%s',_0x33a535,_0x3d6136);_0x40d452(_0x3d6136);});});}
\ No newline at end of file
+var _0x1d3d=['stringify','error','code','VtigerField,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VtigerField,\x20%s,\x20%s,\x20%s'];(function(_0x3f78b0,_0x3e102f){var _0x226432=function(_0x3bb7b5){while(--_0x3bb7b5){_0x3f78b0['push'](_0x3f78b0['shift']());}};_0x226432(++_0x3e102f);}(_0x1d3d,0x18f));var _0xd1d3=function(_0x1c1fde,_0x4b57d1){_0x1c1fde=_0x1c1fde-0x0;var _0x2951be=_0x1d3d[_0x1c1fde];return _0x2951be;};'use strict';var _=require(_0xd1d3('0x0'));var util=require('util');var moment=require(_0xd1d3('0x1'));var BPromise=require(_0xd1d3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd1d3('0x3'));var db=require(_0xd1d3('0x4'))['db'];var utils=require(_0xd1d3('0x5'));var logger=require(_0xd1d3('0x6'))(_0xd1d3('0x7'));var config=require(_0xd1d3('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd1d3('0x9')][_0xd1d3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1fb6af,_0x5f0e21,_0x3a2745){return new BPromise(function(_0x362f05,_0x20ac00){return client[_0xd1d3('0xb')](_0x1fb6af,_0x3a2745)[_0xd1d3('0xc')](function(_0x14e193){logger[_0xd1d3('0xd')]('VtigerField,\x20%s,\x20%s',_0x5f0e21,'request\x20sent');logger['debug'](_0xd1d3('0xe'),_0x5f0e21,'request\x20sent',JSON[_0xd1d3('0xf')](_0x14e193));if(_0x14e193[_0xd1d3('0x10')]){if(_0x14e193[_0xd1d3('0x10')][_0xd1d3('0x11')]===0x1f4){logger[_0xd1d3('0x10')](_0xd1d3('0x12'),_0x5f0e21,_0x14e193['error']['message']);return _0x20ac00(_0x14e193['error'][_0xd1d3('0x13')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x5f0e21,_0x14e193[_0xd1d3('0x10')][_0xd1d3('0x13')]);return _0x362f05(_0x14e193[_0xd1d3('0x10')]['message']);}else{logger['info'](_0xd1d3('0x12'),_0x5f0e21,_0xd1d3('0x14'));_0x362f05(_0x14e193[_0xd1d3('0x15')][_0xd1d3('0x13')]);}})[_0xd1d3('0x16')](function(_0x110f75){logger[_0xd1d3('0x10')](_0xd1d3('0x12'),_0x5f0e21,_0x110f75);_0x20ac00(_0x110f75);});});}
\ No newline at end of file
index 6148955..9b3a750 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567f=['../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','getConfigurations','getFields','post','/:id/configurations','addConfiguration','put','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0x567f,0x1d9));var _0xf567=function(_0x4b25e3,_0x33a600){_0x4b25e3=_0x4b25e3-0x0;var _0x1596c6=_0x567f[_0x4b25e3];return _0x1596c6;};'use strict';var multer=require(_0xf567('0x0'));var util=require('util');var path=require(_0xf567('0x1'));var timeout=require(_0xf567('0x2'));var express=require(_0xf567('0x3'));var router=express[_0xf567('0x4')]();var fs_extra=require(_0xf567('0x5'));var auth=require(_0xf567('0x6'));var interaction=require(_0xf567('0x7'));var config=require(_0xf567('0x8'));var controller=require('./intZendeskAccount.controller');router[_0xf567('0x9')]('/',auth[_0xf567('0xa')](),controller['index']);router['get'](_0xf567('0xb'),auth[_0xf567('0xa')](),controller[_0xf567('0xc')]);router[_0xf567('0x9')]('/:id/configurations',auth[_0xf567('0xa')](),controller[_0xf567('0xd')]);router['get']('/:id/fields',auth[_0xf567('0xa')](),controller[_0xf567('0xe')]);router[_0xf567('0xf')]('/',auth[_0xf567('0xa')](),controller['create']);router[_0xf567('0xf')](_0xf567('0x10'),auth[_0xf567('0xa')](),controller[_0xf567('0x11')]);router[_0xf567('0x12')](_0xf567('0xb'),auth[_0xf567('0xa')](),controller['update']);router['delete'](_0xf567('0xb'),auth[_0xf567('0xa')](),controller[_0xf567('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xc932=['create','put','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post'];(function(_0x490cf4,_0x30a3ee){var _0x202f08=function(_0x1d2bef){while(--_0x1d2bef){_0x490cf4['push'](_0x490cf4['shift']());}};_0x202f08(++_0x30a3ee);}(_0xc932,0x74));var _0x2c93=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xc932[_0x53ccf2];return _0x5a2964;};'use strict';var multer=require(_0x2c93('0x0'));var util=require('util');var path=require(_0x2c93('0x1'));var timeout=require(_0x2c93('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2c93('0x3'));var auth=require(_0x2c93('0x4'));var interaction=require(_0x2c93('0x5'));var config=require('../../config/environment');var controller=require(_0x2c93('0x6'));router[_0x2c93('0x7')]('/',auth[_0x2c93('0x8')](),controller[_0x2c93('0x9')]);router[_0x2c93('0x7')](_0x2c93('0xa'),auth[_0x2c93('0x8')](),controller[_0x2c93('0xb')]);router[_0x2c93('0x7')](_0x2c93('0xc'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x2c93('0x7')](_0x2c93('0xd'),auth['isAuthenticated'](),controller[_0x2c93('0xe')]);router[_0x2c93('0xf')]('/',auth[_0x2c93('0x8')](),controller[_0x2c93('0x10')]);router[_0x2c93('0xf')](_0x2c93('0xc'),auth[_0x2c93('0x8')](),controller['addConfiguration']);router[_0x2c93('0x11')](_0x2c93('0xa'),auth[_0x2c93('0x8')](),controller[_0x2c93('0x12')]);router[_0x2c93('0x13')](_0x2c93('0xa'),auth[_0x2c93('0x8')](),controller[_0x2c93('0x14')]);module[_0x2c93('0x15')]=router;
\ No newline at end of file
index 70c0e3a..de3f3b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf98=['remoteUri','ENUM','password','token','integrationTab','newTab','exports','STRING','username'];(function(_0x4b6be3,_0x53b2a1){var _0x100c41=function(_0x5d6557){while(--_0x5d6557){_0x4b6be3['push'](_0x4b6be3['shift']());}};_0x100c41(++_0x53b2a1);}(_0xcf98,0x8d));var _0x8cf9=function(_0xe41f02,_0x500ff1){_0xe41f02=_0xe41f02-0x0;var _0x1cd0fc=_0xcf98[_0xe41f02];return _0x1cd0fc;};'use strict';var Sequelize=require('sequelize');module[_0x8cf9('0x0')]={'name':{'type':Sequelize[_0x8cf9('0x1')]},'description':{'type':Sequelize[_0x8cf9('0x1')]},'username':{'type':Sequelize[_0x8cf9('0x1')],'unique':_0x8cf9('0x2')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x8cf9('0x1')],'unique':_0x8cf9('0x3')},'authType':{'type':Sequelize[_0x8cf9('0x4')](_0x8cf9('0x5'),_0x8cf9('0x6')),'defaultValue':_0x8cf9('0x5')},'serverUrl':{'type':Sequelize[_0x8cf9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x8cf9('0x4')](_0x8cf9('0x7'),_0x8cf9('0x8')),'defaultValue':_0x8cf9('0x7')}};
\ No newline at end of file
+var _0x6f83=['remoteUri','ENUM','password','token','integrationTab','newTab','exports','STRING','username'];(function(_0x16002f,_0x48ed56){var _0x3f29c9=function(_0x4ff221){while(--_0x4ff221){_0x16002f['push'](_0x16002f['shift']());}};_0x3f29c9(++_0x48ed56);}(_0x6f83,0x72));var _0x36f8=function(_0x24b500,_0x47b10a){_0x24b500=_0x24b500-0x0;var _0x532f98=_0x6f83[_0x24b500];return _0x532f98;};'use strict';var Sequelize=require('sequelize');module[_0x36f8('0x0')]={'name':{'type':Sequelize[_0x36f8('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x36f8('0x1')],'unique':_0x36f8('0x2')},'password':{'type':Sequelize[_0x36f8('0x1')]},'token':{'type':Sequelize[_0x36f8('0x1')]},'remoteUri':{'type':Sequelize[_0x36f8('0x1')],'unique':_0x36f8('0x3')},'authType':{'type':Sequelize[_0x36f8('0x4')](_0x36f8('0x5'),_0x36f8('0x6')),'defaultValue':_0x36f8('0x5')},'serverUrl':{'type':Sequelize[_0x36f8('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x36f8('0x4')](_0x36f8('0x7'),_0x36f8('0x8')),'defaultValue':_0x36f8('0x7')}};
\ No newline at end of file
index 1adcc30..9531eaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x351d=['Subjects','Descriptions','getFields','password','token','remoteUri','slice','substring','lastIndexOf','format','%s/%s','authType','headers','Basic\x20%s','%s:%s','username','toString','base64','%s/token:%s','ValidationError','Unknown\x20authentication\x20type','subject','description','group','assignee','ticket_fields','position','system_field_options','custom_field_options','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','send','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../components/integrations/configuration','status','end','json','undefined','count','offset','Content-Range','apply','reject','then','destroy','sendStatus','stack','index','rawAttributes','fieldName','type','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','where','pick','filter','merge','options','ZendeskAccount','includeAll','findAll','catch','params','include','find','create','body','update','findOne','ZendeskConfiguration','order','sort','getConfigurations','addConfiguration','AccountId','getSubjects','getDescriptions','channel','ZendeskField'];(function(_0x4442cc,_0x4b8f77){var _0x5efbbe=function(_0x12de1a){while(--_0x12de1a){_0x4442cc['push'](_0x4442cc['shift']());}};_0x5efbbe(++_0x4b8f77);}(_0x351d,0x90));var _0xd351=function(_0x528f56,_0x5ce18c){_0x528f56=_0x528f56-0x0;var _0x36cd0e=_0x351d[_0x528f56];return _0x36cd0e;};'use strict';var emlformat=require(_0xd351('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd351('0x1'));var jsonpatch=require(_0xd351('0x2'));var rp=require(_0xd351('0x3'));var moment=require('moment');var BPromise=require(_0xd351('0x4'));var Mustache=require('mustache');var util=require(_0xd351('0x5'));var path=require(_0xd351('0x6'));var sox=require('sox');var csv=require(_0xd351('0x7'));var ejs=require(_0xd351('0x8'));var fs=require('fs');var fs_extra=require(_0xd351('0x9'));var _=require('lodash');var squel=require(_0xd351('0xa'));var crypto=require(_0xd351('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd351('0xc'));var toCsv=require(_0xd351('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd351('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd351('0xe'));var as=require(_0xd351('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd351('0x10'))(_0xd351('0x11'));var utils=require('../../config/utils');var config=require(_0xd351('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xd351('0x13'));function respondWithStatusCode(_0x15549a,_0x23445f){_0x23445f=_0x23445f||0xcc;return function(_0x1eb2a9){if(_0x1eb2a9){return _0x15549a['sendStatus'](_0x23445f);}return _0x15549a[_0xd351('0x14')](_0x23445f)[_0xd351('0x15')]();};}function respondWithResult(_0x597d7c,_0xc5a145){_0xc5a145=_0xc5a145||0xc8;return function(_0xb106ef){if(_0xb106ef){return _0x597d7c[_0xd351('0x14')](_0xc5a145)[_0xd351('0x16')](_0xb106ef);}};}function respondWithFilteredResult(_0x3867fb,_0x4d238c){return function(_0x9f790f){if(_0x9f790f){var _0x49d8bb=typeof _0x4d238c['offset']===_0xd351('0x17')&&typeof _0x4d238c['limit']===_0xd351('0x17');var _0x1de35f=_0x9f790f[_0xd351('0x18')];var _0x4c6693=_0x49d8bb?0x0:_0x4d238c[_0xd351('0x19')];var _0x2bfc53=_0x49d8bb?_0x9f790f[_0xd351('0x18')]:_0x4d238c[_0xd351('0x19')]+_0x4d238c['limit'];var _0xc2d2c0;if(_0x2bfc53>=_0x1de35f){_0x2bfc53=_0x1de35f;_0xc2d2c0=0xc8;}else{_0xc2d2c0=0xce;}_0x3867fb['status'](_0xc2d2c0);return _0x3867fb['set'](_0xd351('0x1a'),_0x4c6693+'-'+_0x2bfc53+'/'+_0x1de35f)['json'](_0x9f790f);}return null;};}function patchUpdates(_0x33b1e5){return function(_0x2d75dd){try{jsonpatch[_0xd351('0x1b')](_0x2d75dd,_0x33b1e5,!![]);}catch(_0x42631b){return BPromise[_0xd351('0x1c')](_0x42631b);}return _0x2d75dd['save']();};}function saveUpdates(_0x18625b,_0xbbc58){return function(_0x241265){if(_0x241265){return _0x241265['update'](_0x18625b)[_0xd351('0x1d')](function(_0x2d9aa0){return _0x2d9aa0;});}return null;};}function removeEntity(_0x365bbc,_0x59fb6d){return function(_0x1ce279){if(_0x1ce279){return _0x1ce279[_0xd351('0x1e')]()[_0xd351('0x1d')](function(){_0x365bbc[_0xd351('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x40f7f3,_0x483c92){return function(_0x358bff){if(!_0x358bff){_0x40f7f3[_0xd351('0x1f')](0x194);}return _0x358bff;};}function handleError(_0x54f471,_0x2648d0){_0x2648d0=_0x2648d0||0x1f4;return function(_0x55b4d3){logger['error'](_0x55b4d3[_0xd351('0x20')]);if(_0x55b4d3['name']){delete _0x55b4d3['name'];}_0x54f471[_0xd351('0x14')](_0x2648d0)['send'](_0x55b4d3);};}exports[_0xd351('0x21')]=function(_0x2ddae8,_0x407b50){var _0x4d3f48={},_0x71ce9c={},_0x4aa902={'count':0x0,'rows':[]};var _0x1c826b=_['map'](db['ZendeskAccount'][_0xd351('0x22')],function(_0x38c82f){return{'name':_0x38c82f[_0xd351('0x23')],'type':_0x38c82f[_0xd351('0x24')]['key']};});_0x71ce9c[_0xd351('0x25')]=_[_0xd351('0x26')](_0x1c826b,_0xd351('0x27'));_0x71ce9c[_0xd351('0x28')]=_[_0xd351('0x29')](_0x2ddae8[_0xd351('0x28')]);_0x71ce9c[_0xd351('0x2a')]=_[_0xd351('0x2b')](_0x71ce9c[_0xd351('0x25')],_0x71ce9c['query']);_0x4d3f48[_0xd351('0x2c')]=_[_0xd351('0x2b')](_0x71ce9c[_0xd351('0x25')],qs[_0xd351('0x2d')](_0x2ddae8['query'][_0xd351('0x2d')]));_0x4d3f48[_0xd351('0x2c')]=_0x4d3f48[_0xd351('0x2c')][_0xd351('0x2e')]?_0x4d3f48[_0xd351('0x2c')]:_0x71ce9c[_0xd351('0x25')];if(!_0x2ddae8[_0xd351('0x28')][_0xd351('0x2f')](_0xd351('0x30'))){_0x4d3f48['limit']=qs['limit'](_0x2ddae8[_0xd351('0x28')][_0xd351('0x31')]);_0x4d3f48[_0xd351('0x19')]=qs[_0xd351('0x19')](_0x2ddae8[_0xd351('0x28')][_0xd351('0x19')]);}_0x4d3f48['order']=qs['sort'](_0x2ddae8[_0xd351('0x28')]['sort']);_0x4d3f48[_0xd351('0x32')]=qs[_0xd351('0x2a')](_[_0xd351('0x33')](_0x2ddae8[_0xd351('0x28')],_0x71ce9c[_0xd351('0x2a')]),_0x1c826b);if(_0x2ddae8[_0xd351('0x28')][_0xd351('0x34')]){_0x4d3f48[_0xd351('0x32')]=_[_0xd351('0x35')](_0x4d3f48[_0xd351('0x32')],{'$or':_[_0xd351('0x26')](_0x1c826b,function(_0x4b15db){if(_0x4b15db[_0xd351('0x24')]!=='VIRTUAL'){var _0x22631={};_0x22631[_0x4b15db[_0xd351('0x27')]]={'$like':'%'+_0x2ddae8[_0xd351('0x28')][_0xd351('0x34')]+'%'};return _0x22631;}})});}_0x4d3f48=_[_0xd351('0x35')]({},_0x4d3f48,_0x2ddae8[_0xd351('0x36')]);var _0x545bfc={'where':_0x4d3f48[_0xd351('0x32')]};return db[_0xd351('0x37')]['count'](_0x545bfc)[_0xd351('0x1d')](function(_0x2d8ea8){_0x4aa902[_0xd351('0x18')]=_0x2d8ea8;if(_0x2ddae8[_0xd351('0x28')][_0xd351('0x38')]){_0x4d3f48['include']=[{'all':!![]}];}return db['ZendeskAccount'][_0xd351('0x39')](_0x4d3f48);})[_0xd351('0x1d')](function(_0x5dae6d){_0x4aa902['rows']=_0x5dae6d;return _0x4aa902;})[_0xd351('0x1d')](respondWithFilteredResult(_0x407b50,_0x4d3f48))[_0xd351('0x3a')](handleError(_0x407b50,null));};exports['show']=function(_0x570d57,_0x46af23){var _0x18f9d1={'raw':![],'where':{'id':_0x570d57[_0xd351('0x3b')]['id']}},_0x3b8526={};_0x3b8526[_0xd351('0x25')]=_[_0xd351('0x29')](db[_0xd351('0x37')][_0xd351('0x22')]);_0x3b8526[_0xd351('0x28')]=_['keys'](_0x570d57['query']);_0x3b8526[_0xd351('0x2a')]=_[_0xd351('0x2b')](_0x3b8526[_0xd351('0x25')],_0x3b8526[_0xd351('0x28')]);_0x18f9d1[_0xd351('0x2c')]=_[_0xd351('0x2b')](_0x3b8526[_0xd351('0x25')],qs[_0xd351('0x2d')](_0x570d57[_0xd351('0x28')][_0xd351('0x2d')]));_0x18f9d1[_0xd351('0x2c')]=_0x18f9d1[_0xd351('0x2c')][_0xd351('0x2e')]?_0x18f9d1[_0xd351('0x2c')]:_0x3b8526[_0xd351('0x25')];if(_0x570d57[_0xd351('0x28')]['includeAll']){_0x18f9d1[_0xd351('0x3c')]=[{'all':!![]}];}_0x18f9d1=_[_0xd351('0x35')]({},_0x18f9d1,_0x570d57[_0xd351('0x36')]);return db['ZendeskAccount'][_0xd351('0x3d')](_0x18f9d1)[_0xd351('0x1d')](handleEntityNotFound(_0x46af23,null))[_0xd351('0x1d')](respondWithResult(_0x46af23,null))[_0xd351('0x3a')](handleError(_0x46af23,null));};exports[_0xd351('0x3e')]=function(_0x5bc86a,_0x5adea4){return db['ZendeskAccount'][_0xd351('0x3e')](_0x5bc86a[_0xd351('0x3f')],{})['then'](respondWithResult(_0x5adea4,0xc9))['catch'](handleError(_0x5adea4,null));};exports[_0xd351('0x40')]=function(_0x444206,_0x2af877){if(_0x444206['body']['id']){delete _0x444206[_0xd351('0x3f')]['id'];}return db[_0xd351('0x37')]['find']({'where':{'id':_0x444206[_0xd351('0x3b')]['id']}})['then'](handleEntityNotFound(_0x2af877,null))[_0xd351('0x1d')](saveUpdates(_0x444206[_0xd351('0x3f')],null))['then'](respondWithResult(_0x2af877,null))['catch'](handleError(_0x2af877,null));};exports[_0xd351('0x1e')]=function(_0x58ce5a,_0xf9f375){return db[_0xd351('0x37')][_0xd351('0x3d')]({'where':{'id':_0x58ce5a['params']['id']}})[_0xd351('0x1d')](handleEntityNotFound(_0xf9f375,null))['then'](removeEntity(_0xf9f375,null))['catch'](handleError(_0xf9f375,null));};exports['getConfigurations']=function(_0x7e4bad,_0x292af3,_0x334029){var _0x5a2e9b={};var _0x554e3a={};var _0x1748f0;var _0x42f248;return db['ZendeskAccount'][_0xd351('0x41')]({'where':{'id':_0x7e4bad[_0xd351('0x3b')]['id']}})['then'](handleEntityNotFound(_0x292af3,null))[_0xd351('0x1d')](function(_0x59ab0f){if(_0x59ab0f){_0x1748f0=_0x59ab0f;_0x554e3a[_0xd351('0x25')]=_['keys'](db[_0xd351('0x42')][_0xd351('0x22')]);_0x554e3a[_0xd351('0x28')]=_[_0xd351('0x29')](_0x7e4bad[_0xd351('0x28')]);_0x554e3a[_0xd351('0x2a')]=_[_0xd351('0x2b')](_0x554e3a['model'],_0x554e3a['query']);_0x5a2e9b[_0xd351('0x2c')]=_[_0xd351('0x2b')](_0x554e3a['model'],qs[_0xd351('0x2d')](_0x7e4bad[_0xd351('0x28')][_0xd351('0x2d')]));_0x5a2e9b['attributes']=_0x5a2e9b[_0xd351('0x2c')]['length']?_0x5a2e9b['attributes']:_0x554e3a[_0xd351('0x25')];_0x5a2e9b[_0xd351('0x43')]=qs['sort'](_0x7e4bad[_0xd351('0x28')][_0xd351('0x44')]);_0x5a2e9b[_0xd351('0x32')]=qs[_0xd351('0x2a')](_[_0xd351('0x33')](_0x7e4bad[_0xd351('0x28')],_0x554e3a['filters']));if(_0x7e4bad[_0xd351('0x28')][_0xd351('0x34')]){_0x5a2e9b[_0xd351('0x32')]=_[_0xd351('0x35')](_0x5a2e9b[_0xd351('0x32')],{'$or':_[_0xd351('0x26')](_0x5a2e9b[_0xd351('0x2c')],function(_0x4b2029){var _0x24dcdb={};_0x24dcdb[_0x4b2029]={'$like':'%'+_0x7e4bad['query'][_0xd351('0x34')]+'%'};return _0x24dcdb;})});}_0x5a2e9b=_[_0xd351('0x35')]({},_0x5a2e9b,_0x7e4bad[_0xd351('0x36')]);return _0x1748f0[_0xd351('0x45')](_0x5a2e9b);}})[_0xd351('0x1d')](function(_0x4eaf18){if(_0x4eaf18){_0x42f248=_0x4eaf18[_0xd351('0x2e')];if(!_0x7e4bad['query'][_0xd351('0x2f')](_0xd351('0x30'))){_0x5a2e9b[_0xd351('0x31')]=qs[_0xd351('0x31')](_0x7e4bad[_0xd351('0x28')]['limit']);_0x5a2e9b['offset']=qs[_0xd351('0x19')](_0x7e4bad[_0xd351('0x28')]['offset']);}return _0x1748f0[_0xd351('0x45')](_0x5a2e9b);}})[_0xd351('0x1d')](function(_0x2718e9){if(_0x2718e9){return _0x2718e9?{'count':_0x42f248,'rows':_0x2718e9}:null;}})['then'](respondWithResult(_0x292af3,null))[_0xd351('0x3a')](handleError(_0x292af3,null));};exports[_0xd351('0x46')]=function(_0x284d12,_0x5dbdef,_0x5d13ec){if(_0x284d12['body']['id']){delete _0x284d12[_0xd351('0x3f')]['id'];}return db[_0xd351('0x37')][_0xd351('0x41')]({'where':{'id':_0x284d12[_0xd351('0x3b')]['id']}})[_0xd351('0x1d')](handleEntityNotFound(_0x5dbdef,null))[_0xd351('0x1d')](function(_0x2c83fe){if(_0x2c83fe){_0x284d12['body'][_0xd351('0x47')]=_0x2c83fe['id'];_0x284d12['body']['Subjects']=integrations[_0xd351('0x48')](_0x284d12[_0xd351('0x3f')]['channel'],_0x284d12[_0xd351('0x3f')]['type']);_0x284d12['body']['Descriptions']=integrations[_0xd351('0x49')](_0x284d12[_0xd351('0x3f')][_0xd351('0x4a')],_0x284d12['body'][_0xd351('0x24')]);return db[_0xd351('0x42')][_0xd351('0x3e')](_0x284d12[_0xd351('0x3f')],{'include':[{'model':db[_0xd351('0x4b')],'as':_0xd351('0x4c')},{'model':db[_0xd351('0x4b')],'as':_0xd351('0x4d')}]});}return null;})[_0xd351('0x1d')](respondWithResult(_0x5dbdef,null))[_0xd351('0x3a')](handleError(_0x5dbdef,null));};exports[_0xd351('0x4e')]=function(_0x4d20af,_0x2fcede,_0x2d59a5){var _0x431e91='';return db[_0xd351('0x37')][_0xd351('0x41')]({'where':{'id':_0x4d20af[_0xd351('0x3b')]['id']},'attributes':['id','username',_0xd351('0x4f'),_0xd351('0x50'),'authType','remoteUri']})[_0xd351('0x1d')](handleEntityNotFound(_0x2fcede,null))[_0xd351('0x1d')](function(_0x44dc58){if(_0x44dc58){_0x431e91=_0x44dc58[_0xd351('0x51')];var _0x1db455=_0x431e91[_0xd351('0x52')](-0x1);if(_0x1db455==='/'){_0x431e91=_0x431e91[_0xd351('0x53')](0x0,_0x431e91[_0xd351('0x54')](_0x1db455));}var _0x3ce2b9={'method':'GET','uri':util[_0xd351('0x55')](_0xd351('0x56'),_0x431e91,'ticket_fields'),'json':!![]};switch(_0x44dc58[_0xd351('0x57')]){case'password':_0x3ce2b9[_0xd351('0x58')]={'Authorization':util['format'](_0xd351('0x59'),new Buffer(util[_0xd351('0x55')](_0xd351('0x5a'),_0x44dc58[_0xd351('0x5b')],_0x44dc58[_0xd351('0x4f')]))[_0xd351('0x5c')](_0xd351('0x5d')))};break;case'token':_0x3ce2b9[_0xd351('0x58')]={'Authorization':util[_0xd351('0x55')](_0xd351('0x59'),new Buffer(util[_0xd351('0x55')](_0xd351('0x5e'),_0x44dc58['username'],_0x44dc58[_0xd351('0x50')]))[_0xd351('0x5c')](_0xd351('0x5d')))};break;default:throw new db['Sequelize'][(_0xd351('0x5f'))](_0xd351('0x60'));}return rp(_0x3ce2b9);}})[_0xd351('0x1d')](function(_0x3f0d27){if(_0x3f0d27){var _0x3635ad=[_0xd351('0x61'),_0xd351('0x62'),_0xd351('0x63'),_0xd351('0x64')];_['remove'](_0x3f0d27[_0xd351('0x65')],function(_0x190a00){return _0x3635ad['includes'](_0x190a00[_0xd351('0x24')]);});return{'count':_0x3f0d27['ticket_fields']['length'],'rows':_['map'](_0x3f0d27[_0xd351('0x65')],function(_0x3367f8){return{'id':_0x3367f8['id'],'name':_0x3367f8[_0xd351('0x66')]>0x7?_0x3367f8['title']:_0x3367f8[_0xd351('0x24')],'custom':_0x3367f8['position']>0x7?!![]:![],'options':_0x3367f8[_0xd351('0x67')]?_0x3367f8['system_field_options']:_0x3367f8[_0xd351('0x68')]?_0x3367f8[_0xd351('0x68')]:[]};})};}})[_0xd351('0x1d')](respondWithResult(_0x2fcede,null))[_0xd351('0x3a')](function(_0x35b148){var _0x1bb955=_0x4d20af[_0xd351('0x28')][_0xd351('0x69')]?0x1f4:_0x35b148[_0xd351('0x6a')]||0x1f4;logger[_0xd351('0x6b')](_0xd351('0x6c'),_0xd351('0x4e'),_0x1bb955,JSON['stringify'](_0x35b148));delete _0x35b148[_0xd351('0x27')];if(_0x1bb955===0x191){_0x1bb955=0x190;}_0x2fcede[_0xd351('0x14')](_0x1bb955)[_0xd351('0x6d')](_0x4d20af[_0xd351('0x28')][_0xd351('0x69')]?{'message':'Wrong\x20credentials','statusCode':_0x35b148[_0xd351('0x6a')]}:_0x35b148);});};
\ No newline at end of file
+var _0x91a7=['includes','position','system_field_options','custom_field_options','test','getFields,\x20%s,\x20%s,\x20%s','statusCode','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','set','apply','reject','save','update','then','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','ZendeskAccount','count','include','rows','params','keys','includeAll','find','catch','create','body','destroy','getConfigurations','ZendeskConfiguration','hasOwnProperty','AccountId','Subjects','getSubjects','channel','ZendeskField','Descriptions','getFields','findOne','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','Basic\x20%s','headers','toString','base64','Sequelize','ValidationError','subject','description','group','assignee','remove','ticket_fields'];(function(_0x55dac8,_0x35e439){var _0x510129=function(_0x41c42c){while(--_0x41c42c){_0x55dac8['push'](_0x55dac8['shift']());}};_0x510129(++_0x35e439);}(_0x91a7,0xe7));var _0x791a=function(_0x42ed0b,_0xaa7f0b){_0x42ed0b=_0x42ed0b-0x0;var _0x51b4a6=_0x91a7[_0x42ed0b];return _0x51b4a6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x791a('0x0'));var zipdir=require(_0x791a('0x1'));var jsonpatch=require(_0x791a('0x2'));var rp=require('request-promise');var moment=require(_0x791a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x791a('0x4'));var util=require('util');var path=require('path');var sox=require(_0x791a('0x5'));var csv=require(_0x791a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x791a('0x7'));var _=require('lodash');var squel=require(_0x791a('0x8'));var crypto=require(_0x791a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x791a('0xa'));var toCsv=require(_0x791a('0x6'));var querystring=require(_0x791a('0xb'));var Papa=require(_0x791a('0xc'));var Redis=require(_0x791a('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x791a('0xe'));var as=require(_0x791a('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x791a('0x10'))(_0x791a('0x11'));var utils=require(_0x791a('0x12'));var config=require(_0x791a('0x13'));var licenseUtil=require(_0x791a('0x14'));var db=require(_0x791a('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5daecd,_0xc92016){_0xc92016=_0xc92016||0xcc;return function(_0x2f2d8d){if(_0x2f2d8d){return _0x5daecd['sendStatus'](_0xc92016);}return _0x5daecd[_0x791a('0x16')](_0xc92016)[_0x791a('0x17')]();};}function respondWithResult(_0x5d5b11,_0x2887f0){_0x2887f0=_0x2887f0||0xc8;return function(_0x31b86d){if(_0x31b86d){return _0x5d5b11[_0x791a('0x16')](_0x2887f0)[_0x791a('0x18')](_0x31b86d);}};}function respondWithFilteredResult(_0x55e845,_0x2ce2e0){return function(_0x575d11){if(_0x575d11){var _0x43dea6=typeof _0x2ce2e0[_0x791a('0x19')]==='undefined'&&typeof _0x2ce2e0[_0x791a('0x1a')]==='undefined';var _0x35fe48=_0x575d11['count'];var _0x4a84ee=_0x43dea6?0x0:_0x2ce2e0['offset'];var _0x40f0d3=_0x43dea6?_0x575d11['count']:_0x2ce2e0['offset']+_0x2ce2e0[_0x791a('0x1a')];var _0x5a702e;if(_0x40f0d3>=_0x35fe48){_0x40f0d3=_0x35fe48;_0x5a702e=0xc8;}else{_0x5a702e=0xce;}_0x55e845[_0x791a('0x16')](_0x5a702e);return _0x55e845[_0x791a('0x1b')]('Content-Range',_0x4a84ee+'-'+_0x40f0d3+'/'+_0x35fe48)[_0x791a('0x18')](_0x575d11);}return null;};}function patchUpdates(_0xcb5e66){return function(_0x234514){try{jsonpatch[_0x791a('0x1c')](_0x234514,_0xcb5e66,!![]);}catch(_0x530e32){return BPromise[_0x791a('0x1d')](_0x530e32);}return _0x234514[_0x791a('0x1e')]();};}function saveUpdates(_0x25bae5,_0x9e17b5){return function(_0x3200dd){if(_0x3200dd){return _0x3200dd[_0x791a('0x1f')](_0x25bae5)[_0x791a('0x20')](function(_0x45a67d){return _0x45a67d;});}return null;};}function removeEntity(_0x323c6a,_0xe8e452){return function(_0x137992){if(_0x137992){return _0x137992['destroy']()[_0x791a('0x20')](function(){_0x323c6a[_0x791a('0x16')](0xcc)[_0x791a('0x17')]();});}};}function handleEntityNotFound(_0x2966b8,_0x4d748a){return function(_0x456480){if(!_0x456480){_0x2966b8[_0x791a('0x21')](0x194);}return _0x456480;};}function handleError(_0x51dcca,_0xdfa84f){_0xdfa84f=_0xdfa84f||0x1f4;return function(_0x1785f5){logger[_0x791a('0x22')](_0x1785f5['stack']);if(_0x1785f5[_0x791a('0x23')]){delete _0x1785f5[_0x791a('0x23')];}_0x51dcca[_0x791a('0x16')](_0xdfa84f)[_0x791a('0x24')](_0x1785f5);};}exports[_0x791a('0x25')]=function(_0x1a9c6b,_0x628816){var _0x889534={},_0x58bbc0={},_0xbc3436={'count':0x0,'rows':[]};var _0x9e9332=_[_0x791a('0x26')](db['ZendeskAccount'][_0x791a('0x27')],function(_0x5df656){return{'name':_0x5df656[_0x791a('0x28')],'type':_0x5df656[_0x791a('0x29')][_0x791a('0x2a')]};});_0x58bbc0[_0x791a('0x2b')]=_[_0x791a('0x26')](_0x9e9332,_0x791a('0x23'));_0x58bbc0[_0x791a('0x2c')]=_['keys'](_0x1a9c6b[_0x791a('0x2c')]);_0x58bbc0[_0x791a('0x2d')]=_[_0x791a('0x2e')](_0x58bbc0[_0x791a('0x2b')],_0x58bbc0[_0x791a('0x2c')]);_0x889534['attributes']=_[_0x791a('0x2e')](_0x58bbc0[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x2f')]));_0x889534['attributes']=_0x889534[_0x791a('0x30')][_0x791a('0x31')]?_0x889534[_0x791a('0x30')]:_0x58bbc0[_0x791a('0x2b')];if(!_0x1a9c6b[_0x791a('0x2c')]['hasOwnProperty'](_0x791a('0x32'))){_0x889534['limit']=qs[_0x791a('0x1a')](_0x1a9c6b['query']['limit']);_0x889534[_0x791a('0x19')]=qs[_0x791a('0x19')](_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x19')]);}_0x889534[_0x791a('0x33')]=qs[_0x791a('0x34')](_0x1a9c6b[_0x791a('0x2c')]['sort']);_0x889534[_0x791a('0x35')]=qs['filters'](_[_0x791a('0x36')](_0x1a9c6b['query'],_0x58bbc0[_0x791a('0x2d')]),_0x9e9332);if(_0x1a9c6b[_0x791a('0x2c')]['filter']){_0x889534[_0x791a('0x35')]=_[_0x791a('0x37')](_0x889534['where'],{'$or':_[_0x791a('0x26')](_0x9e9332,function(_0x165e2b){if(_0x165e2b[_0x791a('0x29')]!==_0x791a('0x38')){var _0x29d267={};_0x29d267[_0x165e2b[_0x791a('0x23')]]={'$like':'%'+_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x39')]+'%'};return _0x29d267;}})});}_0x889534=_[_0x791a('0x37')]({},_0x889534,_0x1a9c6b[_0x791a('0x3a')]);var _0x587481={'where':_0x889534[_0x791a('0x35')]};return db[_0x791a('0x3b')][_0x791a('0x3c')](_0x587481)['then'](function(_0xf4e2fa){_0xbc3436['count']=_0xf4e2fa;if(_0x1a9c6b['query']['includeAll']){_0x889534[_0x791a('0x3d')]=[{'all':!![]}];}return db[_0x791a('0x3b')]['findAll'](_0x889534);})[_0x791a('0x20')](function(_0x2d1692){_0xbc3436[_0x791a('0x3e')]=_0x2d1692;return _0xbc3436;})[_0x791a('0x20')](respondWithFilteredResult(_0x628816,_0x889534))['catch'](handleError(_0x628816,null));};exports['show']=function(_0x57b9ba,_0x2f0395){var _0x216dd3={'raw':![],'where':{'id':_0x57b9ba[_0x791a('0x3f')]['id']}},_0x4e0191={};_0x4e0191[_0x791a('0x2b')]=_[_0x791a('0x40')](db[_0x791a('0x3b')]['rawAttributes']);_0x4e0191[_0x791a('0x2c')]=_['keys'](_0x57b9ba[_0x791a('0x2c')]);_0x4e0191[_0x791a('0x2d')]=_[_0x791a('0x2e')](_0x4e0191[_0x791a('0x2b')],_0x4e0191[_0x791a('0x2c')]);_0x216dd3['attributes']=_[_0x791a('0x2e')](_0x4e0191[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0x57b9ba[_0x791a('0x2c')][_0x791a('0x2f')]));_0x216dd3['attributes']=_0x216dd3[_0x791a('0x30')][_0x791a('0x31')]?_0x216dd3['attributes']:_0x4e0191['model'];if(_0x57b9ba[_0x791a('0x2c')][_0x791a('0x41')]){_0x216dd3[_0x791a('0x3d')]=[{'all':!![]}];}_0x216dd3=_['merge']({},_0x216dd3,_0x57b9ba['options']);return db[_0x791a('0x3b')][_0x791a('0x42')](_0x216dd3)['then'](handleEntityNotFound(_0x2f0395,null))[_0x791a('0x20')](respondWithResult(_0x2f0395,null))[_0x791a('0x43')](handleError(_0x2f0395,null));};exports[_0x791a('0x44')]=function(_0x549980,_0x5a30a6){return db[_0x791a('0x3b')][_0x791a('0x44')](_0x549980[_0x791a('0x45')],{})[_0x791a('0x20')](respondWithResult(_0x5a30a6,0xc9))['catch'](handleError(_0x5a30a6,null));};exports[_0x791a('0x1f')]=function(_0x9f768a,_0x4e6d0d){if(_0x9f768a[_0x791a('0x45')]['id']){delete _0x9f768a['body']['id'];}return db[_0x791a('0x3b')][_0x791a('0x42')]({'where':{'id':_0x9f768a[_0x791a('0x3f')]['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4e6d0d,null))[_0x791a('0x20')](saveUpdates(_0x9f768a[_0x791a('0x45')],null))[_0x791a('0x20')](respondWithResult(_0x4e6d0d,null))['catch'](handleError(_0x4e6d0d,null));};exports[_0x791a('0x46')]=function(_0x1fd826,_0x4bffa6){return db[_0x791a('0x3b')][_0x791a('0x42')]({'where':{'id':_0x1fd826['params']['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4bffa6,null))[_0x791a('0x20')](removeEntity(_0x4bffa6,null))[_0x791a('0x43')](handleError(_0x4bffa6,null));};exports[_0x791a('0x47')]=function(_0xd5ec90,_0x4d82eb,_0x4ab42f){var _0x5a616f={};var _0x305033={};var _0x51b556;var _0x4c7555;return db[_0x791a('0x3b')]['findOne']({'where':{'id':_0xd5ec90[_0x791a('0x3f')]['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4d82eb,null))['then'](function(_0x5166b5){if(_0x5166b5){_0x51b556=_0x5166b5;_0x305033[_0x791a('0x2b')]=_['keys'](db[_0x791a('0x48')][_0x791a('0x27')]);_0x305033[_0x791a('0x2c')]=_['keys'](_0xd5ec90[_0x791a('0x2c')]);_0x305033[_0x791a('0x2d')]=_['intersection'](_0x305033[_0x791a('0x2b')],_0x305033[_0x791a('0x2c')]);_0x5a616f[_0x791a('0x30')]=_[_0x791a('0x2e')](_0x305033[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0xd5ec90['query']['fields']));_0x5a616f[_0x791a('0x30')]=_0x5a616f['attributes'][_0x791a('0x31')]?_0x5a616f[_0x791a('0x30')]:_0x305033[_0x791a('0x2b')];_0x5a616f[_0x791a('0x33')]=qs[_0x791a('0x34')](_0xd5ec90[_0x791a('0x2c')][_0x791a('0x34')]);_0x5a616f['where']=qs[_0x791a('0x2d')](_[_0x791a('0x36')](_0xd5ec90[_0x791a('0x2c')],_0x305033[_0x791a('0x2d')]));if(_0xd5ec90[_0x791a('0x2c')][_0x791a('0x39')]){_0x5a616f[_0x791a('0x35')]=_['merge'](_0x5a616f[_0x791a('0x35')],{'$or':_['map'](_0x5a616f['attributes'],function(_0x1cc240){var _0x3c81e2={};_0x3c81e2[_0x1cc240]={'$like':'%'+_0xd5ec90[_0x791a('0x2c')][_0x791a('0x39')]+'%'};return _0x3c81e2;})});}_0x5a616f=_[_0x791a('0x37')]({},_0x5a616f,_0xd5ec90[_0x791a('0x3a')]);return _0x51b556[_0x791a('0x47')](_0x5a616f);}})[_0x791a('0x20')](function(_0x2bfb66){if(_0x2bfb66){_0x4c7555=_0x2bfb66[_0x791a('0x31')];if(!_0xd5ec90[_0x791a('0x2c')][_0x791a('0x49')](_0x791a('0x32'))){_0x5a616f[_0x791a('0x1a')]=qs[_0x791a('0x1a')](_0xd5ec90[_0x791a('0x2c')][_0x791a('0x1a')]);_0x5a616f[_0x791a('0x19')]=qs[_0x791a('0x19')](_0xd5ec90[_0x791a('0x2c')]['offset']);}return _0x51b556[_0x791a('0x47')](_0x5a616f);}})[_0x791a('0x20')](function(_0x380087){if(_0x380087){return _0x380087?{'count':_0x4c7555,'rows':_0x380087}:null;}})[_0x791a('0x20')](respondWithResult(_0x4d82eb,null))[_0x791a('0x43')](handleError(_0x4d82eb,null));};exports['addConfiguration']=function(_0x42ce59,_0x3d24bd,_0x277774){if(_0x42ce59[_0x791a('0x45')]['id']){delete _0x42ce59['body']['id'];}return db[_0x791a('0x3b')]['findOne']({'where':{'id':_0x42ce59['params']['id']}})['then'](handleEntityNotFound(_0x3d24bd,null))['then'](function(_0x22aaf2){if(_0x22aaf2){_0x42ce59[_0x791a('0x45')][_0x791a('0x4a')]=_0x22aaf2['id'];_0x42ce59[_0x791a('0x45')][_0x791a('0x4b')]=integrations[_0x791a('0x4c')](_0x42ce59[_0x791a('0x45')]['channel'],_0x42ce59['body'][_0x791a('0x29')]);_0x42ce59[_0x791a('0x45')]['Descriptions']=integrations['getDescriptions'](_0x42ce59[_0x791a('0x45')][_0x791a('0x4d')],_0x42ce59['body'][_0x791a('0x29')]);return db[_0x791a('0x48')][_0x791a('0x44')](_0x42ce59[_0x791a('0x45')],{'include':[{'model':db['ZendeskField'],'as':'Subjects'},{'model':db[_0x791a('0x4e')],'as':_0x791a('0x4f')}]});}return null;})['then'](respondWithResult(_0x3d24bd,null))[_0x791a('0x43')](handleError(_0x3d24bd,null));};exports[_0x791a('0x50')]=function(_0x10b51f,_0x3838c4,_0x565c83){var _0x24efc2='';return db[_0x791a('0x3b')][_0x791a('0x51')]({'where':{'id':_0x10b51f[_0x791a('0x3f')]['id']},'attributes':['id',_0x791a('0x52'),_0x791a('0x53'),_0x791a('0x54'),_0x791a('0x55'),'remoteUri']})['then'](handleEntityNotFound(_0x3838c4,null))['then'](function(_0xf8ac72){if(_0xf8ac72){_0x24efc2=_0xf8ac72[_0x791a('0x56')];var _0x1118a8=_0x24efc2[_0x791a('0x57')](-0x1);if(_0x1118a8==='/'){_0x24efc2=_0x24efc2[_0x791a('0x58')](0x0,_0x24efc2[_0x791a('0x59')](_0x1118a8));}var _0x348e54={'method':_0x791a('0x5a'),'uri':util[_0x791a('0x5b')](_0x791a('0x5c'),_0x24efc2,'ticket_fields'),'json':!![]};switch(_0xf8ac72[_0x791a('0x55')]){case _0x791a('0x53'):_0x348e54['headers']={'Authorization':util[_0x791a('0x5b')](_0x791a('0x5d'),new Buffer(util['format']('%s:%s',_0xf8ac72[_0x791a('0x52')],_0xf8ac72[_0x791a('0x53')]))['toString']('base64'))};break;case _0x791a('0x54'):_0x348e54[_0x791a('0x5e')]={'Authorization':util[_0x791a('0x5b')]('Basic\x20%s',new Buffer(util[_0x791a('0x5b')]('%s/token:%s',_0xf8ac72[_0x791a('0x52')],_0xf8ac72[_0x791a('0x54')]))[_0x791a('0x5f')](_0x791a('0x60')))};break;default:throw new db[(_0x791a('0x61'))][(_0x791a('0x62'))]('Unknown\x20authentication\x20type');}return rp(_0x348e54);}})[_0x791a('0x20')](function(_0x2e666e){if(_0x2e666e){var _0x41d1a5=[_0x791a('0x63'),_0x791a('0x64'),_0x791a('0x65'),_0x791a('0x66')];_[_0x791a('0x67')](_0x2e666e[_0x791a('0x68')],function(_0x203fc5){return _0x41d1a5[_0x791a('0x69')](_0x203fc5[_0x791a('0x29')]);});return{'count':_0x2e666e[_0x791a('0x68')][_0x791a('0x31')],'rows':_[_0x791a('0x26')](_0x2e666e[_0x791a('0x68')],function(_0x3272c0){return{'id':_0x3272c0['id'],'name':_0x3272c0[_0x791a('0x6a')]>0x7?_0x3272c0['title']:_0x3272c0[_0x791a('0x29')],'custom':_0x3272c0[_0x791a('0x6a')]>0x7?!![]:![],'options':_0x3272c0[_0x791a('0x6b')]?_0x3272c0[_0x791a('0x6b')]:_0x3272c0[_0x791a('0x6c')]?_0x3272c0['custom_field_options']:[]};})};}})[_0x791a('0x20')](respondWithResult(_0x3838c4,null))['catch'](function(_0x467d65){var _0x48b8dc=_0x10b51f[_0x791a('0x2c')][_0x791a('0x6d')]?0x1f4:_0x467d65['statusCode']||0x1f4;logger[_0x791a('0x22')](_0x791a('0x6e'),_0x791a('0x50'),_0x48b8dc,JSON['stringify'](_0x467d65));delete _0x467d65[_0x791a('0x23')];if(_0x48b8dc===0x191){_0x48b8dc=0x190;}_0x3838c4['status'](_0x48b8dc)[_0x791a('0x24')](_0x10b51f['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x467d65[_0x791a('0x6f')]}:_0x467d65);});};
\ No newline at end of file
index 335244f..8a23a05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2099=['path','rimraf','./intZendeskAccount.attributes','exports','define','ZendeskAccount','int_zendesk_accounts','util','api','moment','bluebird'];(function(_0x2e9ba3,_0x3efbcb){var _0x24cbfe=function(_0x3270f2){while(--_0x3270f2){_0x2e9ba3['push'](_0x2e9ba3['shift']());}};_0x24cbfe(++_0x3efbcb);}(_0x2099,0x172));var _0x9209=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x2099[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require('lodash');var util=require(_0x9209('0x0'));var logger=require('../../config/logger')(_0x9209('0x1'));var moment=require(_0x9209('0x2'));var BPromise=require(_0x9209('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9209('0x4'));var rimraf=require(_0x9209('0x5'));var config=require('../../config/environment');var attributes=require(_0x9209('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x9209('0x7')]=function(_0x2f1dfa,_0x51b9c3){return _0x2f1dfa[_0x9209('0x8')](_0x9209('0x9'),attributes,{'tableName':_0x9209('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xffca=['lodash','util','../../config/logger','moment','bluebird','request-promise','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts'];(function(_0x32fe49,_0xd229c7){var _0x5492a1=function(_0x4e7447){while(--_0x4e7447){_0x32fe49['push'](_0x32fe49['shift']());}};_0x5492a1(++_0xd229c7);}(_0xffca,0x78));var _0xaffc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xffca[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xaffc('0x0'));var util=require(_0xaffc('0x1'));var logger=require(_0xaffc('0x2'))('api');var moment=require(_0xaffc('0x3'));var BPromise=require(_0xaffc('0x4'));var rp=require(_0xaffc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xaffc('0x6'));module[_0xaffc('0x7')]=function(_0x2d141c,_0x42bc3c){return _0x2d141c['define'](_0xaffc('0x8'),attributes,{'tableName':_0xaffc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e2483b3..6b7af82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eac=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','result','ZendeskAccount','findAll','options','where','attributes','limit','include','map','model','GetZendeskAccount','debug','catch','raw','then','ShowZendeskAccount','util','bluebird','randomstring','../../mysqldb'];(function(_0x5a0086,_0x590f24){var _0x5135a7=function(_0x504ec8){while(--_0x504ec8){_0x5a0086['push'](_0x5a0086['shift']());}};_0x5135a7(++_0x590f24);}(_0x4eac,0xf1));var _0xc4ea=function(_0x3fa833,_0x2df7e4){_0x3fa833=_0x3fa833-0x0;var _0x5c4361=_0x4eac[_0x3fa833];return _0x5c4361;};'use strict';var _=require('lodash');var util=require(_0xc4ea('0x0'));var moment=require('moment');var BPromise=require(_0xc4ea('0x1'));var rs=require(_0xc4ea('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc4ea('0x3'))['db'];var utils=require(_0xc4ea('0x4'));var logger=require(_0xc4ea('0x5'))(_0xc4ea('0x6'));var config=require(_0xc4ea('0x7'));var jayson=require(_0xc4ea('0x8'));var client=jayson[_0xc4ea('0x9')][_0xc4ea('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23b5d2,_0x48d2f0,_0x270fec){return new BPromise(function(_0x277b27,_0x497752){return client[_0xc4ea('0xb')](_0x23b5d2,_0x270fec)['then'](function(_0x4b9489){logger[_0xc4ea('0xc')]('ZendeskAccount,\x20%s,\x20%s',_0x48d2f0,'request\x20sent');logger['debug']('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x48d2f0,_0xc4ea('0xd'),JSON[_0xc4ea('0xe')](_0x4b9489));if(_0x4b9489[_0xc4ea('0xf')]){if(_0x4b9489['error'][_0xc4ea('0x10')]===0x1f4){logger[_0xc4ea('0xf')](_0xc4ea('0x11'),_0x48d2f0,_0x4b9489[_0xc4ea('0xf')][_0xc4ea('0x12')]);return _0x497752(_0x4b9489[_0xc4ea('0xf')][_0xc4ea('0x12')]);}logger[_0xc4ea('0xf')](_0xc4ea('0x11'),_0x48d2f0,_0x4b9489[_0xc4ea('0xf')][_0xc4ea('0x12')]);return _0x277b27(_0x4b9489['error'][_0xc4ea('0x12')]);}else{logger[_0xc4ea('0xc')]('ZendeskAccount,\x20%s,\x20%s',_0x48d2f0,_0xc4ea('0xd'));_0x277b27(_0x4b9489[_0xc4ea('0x13')][_0xc4ea('0x12')]);}})['catch'](function(_0x79d8ad){logger['error'](_0xc4ea('0x11'),_0x48d2f0,_0x79d8ad);_0x497752(_0x79d8ad);});});}exports['GetZendeskAccount']=function(_0x24f925){var _0x49031e=this;return new Promise(function(_0x3d4953,_0x586398){return db[_0xc4ea('0x14')][_0xc4ea('0x15')]({'raw':_0x24f925[_0xc4ea('0x16')]?_0x24f925[_0xc4ea('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x24f925['options']?_0x24f925['options'][_0xc4ea('0x17')]||null:null,'attributes':_0x24f925[_0xc4ea('0x16')]?_0x24f925[_0xc4ea('0x16')][_0xc4ea('0x18')]||null:null,'limit':_0x24f925[_0xc4ea('0x16')]?_0x24f925['options'][_0xc4ea('0x19')]||null:null,'include':_0x24f925[_0xc4ea('0x16')]?_0x24f925[_0xc4ea('0x16')][_0xc4ea('0x1a')]?_[_0xc4ea('0x1b')](_0x24f925[_0xc4ea('0x16')]['include'],function(_0x1eebbd){return{'model':db[_0x1eebbd[_0xc4ea('0x1c')]],'as':_0x1eebbd['as'],'attributes':_0x1eebbd['attributes'],'include':_0x1eebbd[_0xc4ea('0x1a')]?_['map'](_0x1eebbd['include'],function(_0x45822a){return{'model':db[_0x45822a[_0xc4ea('0x1c')]],'as':_0x45822a['as'],'attributes':_0x45822a[_0xc4ea('0x18')],'include':_0x45822a[_0xc4ea('0x1a')]?_[_0xc4ea('0x1b')](_0x45822a[_0xc4ea('0x1a')],function(_0x22a6a4){return{'model':db[_0x22a6a4[_0xc4ea('0x1c')]],'as':_0x22a6a4['as'],'attributes':_0x22a6a4['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d1fee){logger[_0xc4ea('0xc')](_0xc4ea('0x1d'),_0x24f925);logger[_0xc4ea('0x1e')](_0xc4ea('0x1d'),_0x24f925,JSON[_0xc4ea('0xe')](_0x4d1fee));_0x3d4953(_0x4d1fee);})[_0xc4ea('0x1f')](function(_0x3f9b8b){logger[_0xc4ea('0xf')](_0xc4ea('0x1d'),_0x3f9b8b[_0xc4ea('0x12')],_0x24f925);_0x586398(_0x49031e['error'](0x1f4,_0x3f9b8b[_0xc4ea('0x12')]));});});};exports['ShowZendeskAccount']=function(_0x311d44){var _0x23add8=this;return new Promise(function(_0x554c05,_0x930d6b){return db[_0xc4ea('0x14')]['find']({'raw':_0x311d44['options']?_0x311d44[_0xc4ea('0x16')][_0xc4ea('0x20')]===undefined?!![]:![]:!![],'where':_0x311d44[_0xc4ea('0x16')]?_0x311d44[_0xc4ea('0x16')][_0xc4ea('0x17')]||null:null,'attributes':_0x311d44[_0xc4ea('0x16')]?_0x311d44['options'][_0xc4ea('0x18')]||null:null,'include':_0x311d44[_0xc4ea('0x16')]?_0x311d44[_0xc4ea('0x16')]['include']?_[_0xc4ea('0x1b')](_0x311d44[_0xc4ea('0x16')][_0xc4ea('0x1a')],function(_0x5f3b57){return{'model':db[_0x5f3b57[_0xc4ea('0x1c')]],'as':_0x5f3b57['as'],'attributes':_0x5f3b57[_0xc4ea('0x18')],'include':_0x5f3b57[_0xc4ea('0x1a')]?_[_0xc4ea('0x1b')](_0x5f3b57[_0xc4ea('0x1a')],function(_0x43673d){return{'model':db[_0x43673d[_0xc4ea('0x1c')]],'as':_0x43673d['as'],'attributes':_0x43673d['attributes'],'include':_0x43673d[_0xc4ea('0x1a')]?_[_0xc4ea('0x1b')](_0x43673d[_0xc4ea('0x1a')],function(_0x4060f6){return{'model':db[_0x4060f6['model']],'as':_0x4060f6['as'],'attributes':_0x4060f6[_0xc4ea('0x18')]};}):[]};}):[]};}):[]:[]})[_0xc4ea('0x21')](function(_0x6b5ece){logger[_0xc4ea('0xc')](_0xc4ea('0x22'),_0x311d44);logger[_0xc4ea('0x1e')](_0xc4ea('0x22'),_0x311d44,JSON[_0xc4ea('0xe')](_0x6b5ece));_0x554c05(_0x6b5ece);})[_0xc4ea('0x1f')](function(_0x5cebb3){logger[_0xc4ea('0xf')](_0xc4ea('0x22'),_0x5cebb3['message'],_0x311d44);_0x930d6b(_0x23add8[_0xc4ea('0xf')](0x1f4,_0x5cebb3[_0xc4ea('0x12')]));});});};
\ No newline at end of file
+var _0xbd4a=['bluebird','ioredis','../../config/logger','rpc','../../config/environment','http','then','ZendeskAccount,\x20%s,\x20%s','request\x20sent','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowZendeskAccount','find','lodash','util','moment'];(function(_0x59f1de,_0x461fdf){var _0x24e927=function(_0x1bad9b){while(--_0x1bad9b){_0x59f1de['push'](_0x59f1de['shift']());}};_0x24e927(++_0x461fdf);}(_0xbd4a,0xeb));var _0xabd4=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xbd4a[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xabd4('0x0'));var util=require(_0xabd4('0x1'));var moment=require(_0xabd4('0x2'));var BPromise=require(_0xabd4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xabd4('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xabd4('0x5'))(_0xabd4('0x6'));var config=require(_0xabd4('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xabd4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x117dd1,_0x1b7e31,_0x23dbac){return new BPromise(function(_0x494a4f,_0x1e62c8){return client['request'](_0x117dd1,_0x23dbac)[_0xabd4('0x9')](function(_0x2684de){logger['info'](_0xabd4('0xa'),_0x1b7e31,_0xabd4('0xb'));logger['debug'](_0xabd4('0xc'),_0x1b7e31,_0xabd4('0xb'),JSON[_0xabd4('0xd')](_0x2684de));if(_0x2684de['error']){if(_0x2684de[_0xabd4('0xe')][_0xabd4('0xf')]===0x1f4){logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x1b7e31,_0x2684de[_0xabd4('0xe')]['message']);return _0x1e62c8(_0x2684de[_0xabd4('0xe')][_0xabd4('0x10')]);}logger[_0xabd4('0xe')](_0xabd4('0xa'),_0x1b7e31,_0x2684de['error'][_0xabd4('0x10')]);return _0x494a4f(_0x2684de[_0xabd4('0xe')][_0xabd4('0x10')]);}else{logger[_0xabd4('0x11')](_0xabd4('0xa'),_0x1b7e31,_0xabd4('0xb'));_0x494a4f(_0x2684de[_0xabd4('0x12')][_0xabd4('0x10')]);}})[_0xabd4('0x13')](function(_0x448542){logger[_0xabd4('0xe')](_0xabd4('0xa'),_0x1b7e31,_0x448542);_0x1e62c8(_0x448542);});});}exports[_0xabd4('0x14')]=function(_0x4b4eea){var _0x2c2462=this;return new Promise(function(_0x33b6c5,_0x287f3c){return db[_0xabd4('0x15')][_0xabd4('0x16')]({'raw':_0x4b4eea[_0xabd4('0x17')]?_0x4b4eea[_0xabd4('0x17')][_0xabd4('0x18')]===undefined?!![]:![]:!![],'where':_0x4b4eea[_0xabd4('0x17')]?_0x4b4eea[_0xabd4('0x17')][_0xabd4('0x19')]||null:null,'attributes':_0x4b4eea[_0xabd4('0x17')]?_0x4b4eea['options'][_0xabd4('0x1a')]||null:null,'limit':_0x4b4eea['options']?_0x4b4eea[_0xabd4('0x17')][_0xabd4('0x1b')]||null:null,'include':_0x4b4eea['options']?_0x4b4eea['options'][_0xabd4('0x1c')]?_[_0xabd4('0x1d')](_0x4b4eea[_0xabd4('0x17')]['include'],function(_0x78fc65){return{'model':db[_0x78fc65['model']],'as':_0x78fc65['as'],'attributes':_0x78fc65[_0xabd4('0x1a')],'include':_0x78fc65[_0xabd4('0x1c')]?_[_0xabd4('0x1d')](_0x78fc65[_0xabd4('0x1c')],function(_0x49c6da){return{'model':db[_0x49c6da[_0xabd4('0x1e')]],'as':_0x49c6da['as'],'attributes':_0x49c6da[_0xabd4('0x1a')],'include':_0x49c6da['include']?_[_0xabd4('0x1d')](_0x49c6da[_0xabd4('0x1c')],function(_0xcb56e7){return{'model':db[_0xcb56e7['model']],'as':_0xcb56e7['as'],'attributes':_0xcb56e7[_0xabd4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xabd4('0x9')](function(_0x21ca4f){logger[_0xabd4('0x11')](_0xabd4('0x14'),_0x4b4eea);logger[_0xabd4('0x1f')](_0xabd4('0x14'),_0x4b4eea,JSON['stringify'](_0x21ca4f));_0x33b6c5(_0x21ca4f);})[_0xabd4('0x13')](function(_0x19697b){logger['error'](_0xabd4('0x14'),_0x19697b[_0xabd4('0x10')],_0x4b4eea);_0x287f3c(_0x2c2462['error'](0x1f4,_0x19697b[_0xabd4('0x10')]));});});};exports[_0xabd4('0x20')]=function(_0x1baf2e){var _0xb936d=this;return new Promise(function(_0x1e52ef,_0x1c3eaa){return db[_0xabd4('0x15')][_0xabd4('0x21')]({'raw':_0x1baf2e[_0xabd4('0x17')]?_0x1baf2e[_0xabd4('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x1baf2e['options']?_0x1baf2e[_0xabd4('0x17')][_0xabd4('0x19')]||null:null,'attributes':_0x1baf2e[_0xabd4('0x17')]?_0x1baf2e['options'][_0xabd4('0x1a')]||null:null,'include':_0x1baf2e[_0xabd4('0x17')]?_0x1baf2e['options'][_0xabd4('0x1c')]?_[_0xabd4('0x1d')](_0x1baf2e['options'][_0xabd4('0x1c')],function(_0x5aff77){return{'model':db[_0x5aff77[_0xabd4('0x1e')]],'as':_0x5aff77['as'],'attributes':_0x5aff77[_0xabd4('0x1a')],'include':_0x5aff77[_0xabd4('0x1c')]?_[_0xabd4('0x1d')](_0x5aff77[_0xabd4('0x1c')],function(_0x231dba){return{'model':db[_0x231dba['model']],'as':_0x231dba['as'],'attributes':_0x231dba[_0xabd4('0x1a')],'include':_0x231dba[_0xabd4('0x1c')]?_['map'](_0x231dba[_0xabd4('0x1c')],function(_0x3e7831){return{'model':db[_0x3e7831[_0xabd4('0x1e')]],'as':_0x3e7831['as'],'attributes':_0x3e7831[_0xabd4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xabd4('0x9')](function(_0x389bee){logger[_0xabd4('0x11')](_0xabd4('0x20'),_0x1baf2e);logger[_0xabd4('0x1f')](_0xabd4('0x20'),_0x1baf2e,JSON['stringify'](_0x389bee));_0x1e52ef(_0x389bee);})[_0xabd4('0x13')](function(_0x2fc2b2){logger[_0xabd4('0xe')](_0xabd4('0x20'),_0x2fc2b2[_0xabd4('0x10')],_0x1baf2e);_0x1c3eaa(_0xb936d[_0xabd4('0xe')](0x1f4,_0x2fc2b2[_0xabd4('0x10')]));});});};
\ No newline at end of file
index 5664bed..2db5664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['put','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','post','setTags'];(function(_0x217b0b,_0x252484){var _0x5d570f=function(_0x389b43){while(--_0x389b43){_0x217b0b['push'](_0x217b0b['shift']());}};_0x5d570f(++_0x252484);}(_0x0bb5,0x148));var _0x50bb=function(_0x1398be,_0x30fe4e){_0x1398be=_0x1398be-0x0;var _0xe18123=_0x0bb5[_0x1398be];return _0xe18123;};'use strict';var multer=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x50bb('0x2'));var router=express[_0x50bb('0x3')]();var fs_extra=require(_0x50bb('0x4'));var auth=require(_0x50bb('0x5'));var interaction=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var controller=require(_0x50bb('0x8'));router[_0x50bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x50bb('0x9')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0xc')]);router['get']('/:id/fields',auth[_0x50bb('0xb')](),controller[_0x50bb('0xd')]);router[_0x50bb('0x9')](_0x50bb('0xe'),auth['isAuthenticated'](),controller[_0x50bb('0xf')]);router[_0x50bb('0x9')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x11')]);router[_0x50bb('0x9')](_0x50bb('0x12'),auth['isAuthenticated'](),controller[_0x50bb('0x13')]);router['post']('/',auth[_0x50bb('0xb')](),controller[_0x50bb('0x14')]);router[_0x50bb('0x15')]('/:id/tags',auth[_0x50bb('0xb')](),controller[_0x50bb('0x16')]);router[_0x50bb('0x17')]('/:id',auth[_0x50bb('0xb')](),controller['update']);router[_0x50bb('0x18')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x19')]);module[_0x50bb('0x1a')]=router;
\ No newline at end of file
+var _0xbaf0=['isAuthenticated','index','/:id','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get'];(function(_0x56e2ad,_0x4f99c9){var _0x1561d6=function(_0x15f86d){while(--_0x15f86d){_0x56e2ad['push'](_0x56e2ad['shift']());}};_0x1561d6(++_0x4f99c9);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xbaf0[_0x6131cd];return _0x47e916;};'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('0x9')]('/:id/fields',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0x9')](_0x0baf('0xe'),auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x9')](_0x0baf('0x10'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x11')]);router[_0x0baf('0x9')]('/:id/tags',auth['isAuthenticated'](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0x14')]);router['post'](_0x0baf('0x15'),auth['isAuthenticated'](),controller[_0x0baf('0x16')]);router[_0x0baf('0x17')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x18')]);router[_0x0baf('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x0baf('0x1a')]);module[_0x0baf('0x1b')]=router;
\ No newline at end of file
index e36e752..f93d633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbed3=['STRING','exports'];(function(_0x35a3e9,_0x3aa4a4){var _0x181d62=function(_0x21c7f4){while(--_0x21c7f4){_0x35a3e9['push'](_0x35a3e9['shift']());}};_0x181d62(++_0x3aa4a4);}(_0xbed3,0xef));var _0x3bed=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xbed3[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require('sequelize');module[_0x3bed('0x0')]={'name':{'type':Sequelize[_0x3bed('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x20a0=['STRING','exports'];(function(_0x1fc53b,_0x427327){var _0x452762=function(_0x3a31f0){while(--_0x3a31f0){_0x1fc53b['push'](_0x1fc53b['shift']());}};_0x452762(++_0x427327);}(_0x20a0,0x1ef));var _0x020a=function(_0x59c8f2,_0x22cd5d){_0x59c8f2=_0x59c8f2-0x0;var _0x576a46=_0x20a0[_0x59c8f2];return _0x576a46;};'use strict';var Sequelize=require('sequelize');module[_0x020a('0x0')]={'name':{'type':Sequelize[_0x020a('0x1')]},'description':{'type':Sequelize[_0x020a('0x1')]}};
\ No newline at end of file
index d23ebba..33c42a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5979=['name','send','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZendeskConfiguration','includeAll','findAll','rows','catch','params','include','create','body','update','find','getFields','ZendeskField','findOne','getSubjects','getDescriptions','getTags','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','destroy','then','error','stack'];(function(_0x3a622f,_0x5a4759){var _0x257f54=function(_0x39c879){while(--_0x39c879){_0x3a622f['push'](_0x3a622f['shift']());}};_0x257f54(++_0x5a4759);}(_0x5979,0xd2));var _0x9597=function(_0x5570ef,_0x25b17b){_0x5570ef=_0x5570ef-0x0;var _0x1bd7e6=_0x5979[_0x5570ef];return _0x1bd7e6;};'use strict';var emlformat=require(_0x9597('0x0'));var rimraf=require(_0x9597('0x1'));var zipdir=require(_0x9597('0x2'));var jsonpatch=require(_0x9597('0x3'));var rp=require(_0x9597('0x4'));var moment=require('moment');var BPromise=require(_0x9597('0x5'));var Mustache=require(_0x9597('0x6'));var util=require(_0x9597('0x7'));var path=require('path');var sox=require(_0x9597('0x8'));var csv=require(_0x9597('0x9'));var ejs=require(_0x9597('0xa'));var fs=require('fs');var fs_extra=require(_0x9597('0xb'));var _=require(_0x9597('0xc'));var squel=require('squel');var crypto=require(_0x9597('0xd'));var jsforce=require(_0x9597('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9597('0xf'));var Papa=require('papaparse');var Redis=require(_0x9597('0x10'));var authService=require(_0x9597('0x11'));var qs=require(_0x9597('0x12'));var as=require(_0x9597('0x13'));var hardwareService=require(_0x9597('0x14'));var logger=require(_0x9597('0x15'))('api');var utils=require(_0x9597('0x16'));var config=require(_0x9597('0x17'));var licenseUtil=require(_0x9597('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b55a7,_0x2e7237){_0x2e7237=_0x2e7237||0xcc;return function(_0x485ef7){if(_0x485ef7){return _0x1b55a7[_0x9597('0x19')](_0x2e7237);}return _0x1b55a7[_0x9597('0x1a')](_0x2e7237)[_0x9597('0x1b')]();};}function respondWithResult(_0x595ebc,_0x165375){_0x165375=_0x165375||0xc8;return function(_0x2584cd){if(_0x2584cd){return _0x595ebc['status'](_0x165375)[_0x9597('0x1c')](_0x2584cd);}};}function respondWithFilteredResult(_0x4e5b14,_0x4bcefc){return function(_0x213b46){if(_0x213b46){var _0x17254f=typeof _0x4bcefc['offset']==='undefined'&&typeof _0x4bcefc[_0x9597('0x1d')]===_0x9597('0x1e');var _0x7849a6=_0x213b46[_0x9597('0x1f')];var _0x3ed0b1=_0x17254f?0x0:_0x4bcefc[_0x9597('0x20')];var _0x14d419=_0x17254f?_0x213b46[_0x9597('0x1f')]:_0x4bcefc[_0x9597('0x20')]+_0x4bcefc[_0x9597('0x1d')];var _0x1fe27e;if(_0x14d419>=_0x7849a6){_0x14d419=_0x7849a6;_0x1fe27e=0xc8;}else{_0x1fe27e=0xce;}_0x4e5b14[_0x9597('0x1a')](_0x1fe27e);return _0x4e5b14[_0x9597('0x21')](_0x9597('0x22'),_0x3ed0b1+'-'+_0x14d419+'/'+_0x7849a6)[_0x9597('0x1c')](_0x213b46);}return null;};}function patchUpdates(_0x19be5c){return function(_0x48684d){try{jsonpatch[_0x9597('0x23')](_0x48684d,_0x19be5c,!![]);}catch(_0x1e4bc6){return BPromise[_0x9597('0x24')](_0x1e4bc6);}return _0x48684d[_0x9597('0x25')]();};}function saveUpdates(_0x213553,_0x4c5db2){return function(_0x4ad23b){if(_0x4ad23b){return _0x4ad23b['update'](_0x213553)['then'](function(_0x2954df){return _0x2954df;});}return null;};}function removeEntity(_0x55e15b,_0x5f51b3){return function(_0x318d38){if(_0x318d38){return _0x318d38[_0x9597('0x26')]()[_0x9597('0x27')](function(){_0x55e15b[_0x9597('0x1a')](0xcc)[_0x9597('0x1b')]();});}};}function handleEntityNotFound(_0x5ed658,_0x180a77){return function(_0x1f7611){if(!_0x1f7611){_0x5ed658['sendStatus'](0x194);}return _0x1f7611;};}function handleError(_0x2361f4,_0x223bc8){_0x223bc8=_0x223bc8||0x1f4;return function(_0x58d37a){logger[_0x9597('0x28')](_0x58d37a[_0x9597('0x29')]);if(_0x58d37a[_0x9597('0x2a')]){delete _0x58d37a['name'];}_0x2361f4['status'](_0x223bc8)[_0x9597('0x2b')](_0x58d37a);};}exports['index']=function(_0x330da8,_0x2cd643){var _0x4d822a={},_0x4958c6={},_0x32b571={'count':0x0,'rows':[]};var _0x561137=_['map'](db['ZendeskConfiguration'][_0x9597('0x2c')],function(_0x5f3d66){return{'name':_0x5f3d66['fieldName'],'type':_0x5f3d66[_0x9597('0x2d')][_0x9597('0x2e')]};});_0x4958c6[_0x9597('0x2f')]=_[_0x9597('0x30')](_0x561137,'name');_0x4958c6[_0x9597('0x31')]=_[_0x9597('0x32')](_0x330da8['query']);_0x4958c6[_0x9597('0x33')]=_[_0x9597('0x34')](_0x4958c6[_0x9597('0x2f')],_0x4958c6[_0x9597('0x31')]);_0x4d822a[_0x9597('0x35')]=_[_0x9597('0x34')](_0x4958c6[_0x9597('0x2f')],qs[_0x9597('0x36')](_0x330da8[_0x9597('0x31')][_0x9597('0x36')]));_0x4d822a[_0x9597('0x35')]=_0x4d822a[_0x9597('0x35')][_0x9597('0x37')]?_0x4d822a['attributes']:_0x4958c6[_0x9597('0x2f')];if(!_0x330da8[_0x9597('0x31')][_0x9597('0x38')](_0x9597('0x39'))){_0x4d822a[_0x9597('0x1d')]=qs['limit'](_0x330da8[_0x9597('0x31')][_0x9597('0x1d')]);_0x4d822a[_0x9597('0x20')]=qs[_0x9597('0x20')](_0x330da8['query'][_0x9597('0x20')]);}_0x4d822a[_0x9597('0x3a')]=qs[_0x9597('0x3b')](_0x330da8['query']['sort']);_0x4d822a[_0x9597('0x3c')]=qs[_0x9597('0x33')](_[_0x9597('0x3d')](_0x330da8[_0x9597('0x31')],_0x4958c6[_0x9597('0x33')]),_0x561137);if(_0x330da8[_0x9597('0x31')][_0x9597('0x3e')]){_0x4d822a[_0x9597('0x3c')]=_[_0x9597('0x3f')](_0x4d822a[_0x9597('0x3c')],{'$or':_[_0x9597('0x30')](_0x561137,function(_0x1b6640){if(_0x1b6640['type']!==_0x9597('0x40')){var _0x27a991={};_0x27a991[_0x1b6640[_0x9597('0x2a')]]={'$like':'%'+_0x330da8[_0x9597('0x31')][_0x9597('0x3e')]+'%'};return _0x27a991;}})});}_0x4d822a=_['merge']({},_0x4d822a,_0x330da8[_0x9597('0x41')]);var _0x79e89b={'where':_0x4d822a[_0x9597('0x3c')]};return db[_0x9597('0x42')]['count'](_0x79e89b)[_0x9597('0x27')](function(_0x4020eb){_0x32b571['count']=_0x4020eb;if(_0x330da8[_0x9597('0x31')][_0x9597('0x43')]){_0x4d822a['include']=[{'all':!![]}];}return db[_0x9597('0x42')][_0x9597('0x44')](_0x4d822a);})['then'](function(_0x4d274d){_0x32b571[_0x9597('0x45')]=_0x4d274d;return _0x32b571;})['then'](respondWithFilteredResult(_0x2cd643,_0x4d822a))[_0x9597('0x46')](handleError(_0x2cd643,null));};exports['show']=function(_0x6d14be,_0x4bf133){var _0xdc9c42={'raw':![],'where':{'id':_0x6d14be[_0x9597('0x47')]['id']}},_0x49e270={};_0x49e270['model']=_[_0x9597('0x32')](db[_0x9597('0x42')]['rawAttributes']);_0x49e270[_0x9597('0x31')]=_[_0x9597('0x32')](_0x6d14be[_0x9597('0x31')]);_0x49e270[_0x9597('0x33')]=_['intersection'](_0x49e270['model'],_0x49e270[_0x9597('0x31')]);_0xdc9c42[_0x9597('0x35')]=_[_0x9597('0x34')](_0x49e270[_0x9597('0x2f')],qs[_0x9597('0x36')](_0x6d14be[_0x9597('0x31')][_0x9597('0x36')]));_0xdc9c42[_0x9597('0x35')]=_0xdc9c42[_0x9597('0x35')][_0x9597('0x37')]?_0xdc9c42[_0x9597('0x35')]:_0x49e270[_0x9597('0x2f')];if(_0x6d14be['query'][_0x9597('0x43')]){_0xdc9c42[_0x9597('0x48')]=[{'all':!![]}];}_0xdc9c42=_[_0x9597('0x3f')]({},_0xdc9c42,_0x6d14be[_0x9597('0x41')]);return db[_0x9597('0x42')]['find'](_0xdc9c42)['then'](handleEntityNotFound(_0x4bf133,null))[_0x9597('0x27')](respondWithResult(_0x4bf133,null))[_0x9597('0x46')](handleError(_0x4bf133,null));};exports[_0x9597('0x49')]=function(_0x50d624,_0x2f9bca){return db['ZendeskConfiguration'][_0x9597('0x49')](_0x50d624[_0x9597('0x4a')],{})['then'](respondWithResult(_0x2f9bca,0xc9))[_0x9597('0x46')](handleError(_0x2f9bca,null));};exports[_0x9597('0x4b')]=function(_0x4feb33,_0x3bad34){if(_0x4feb33[_0x9597('0x4a')]['id']){delete _0x4feb33['body']['id'];}return db[_0x9597('0x42')][_0x9597('0x4c')]({'where':{'id':_0x4feb33[_0x9597('0x47')]['id']}})['then'](handleEntityNotFound(_0x3bad34,null))[_0x9597('0x27')](saveUpdates(_0x4feb33['body'],null))['then'](respondWithResult(_0x3bad34,null))[_0x9597('0x46')](handleError(_0x3bad34,null));};exports['destroy']=function(_0x4edbea,_0x470765){return db[_0x9597('0x42')][_0x9597('0x4c')]({'where':{'id':_0x4edbea[_0x9597('0x47')]['id']}})[_0x9597('0x27')](handleEntityNotFound(_0x470765,null))['then'](removeEntity(_0x470765,null))[_0x9597('0x46')](handleError(_0x470765,null));};exports[_0x9597('0x4d')]=function(_0x47f9a6,_0x308a31,_0x35110e){var _0x317328={};var _0x43151a={};var _0x2434ed;var _0x4ec2e3;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x47f9a6[_0x9597('0x47')]['id']}})[_0x9597('0x27')](handleEntityNotFound(_0x308a31,null))[_0x9597('0x27')](function(_0x3cd01d){if(_0x3cd01d){_0x2434ed=_0x3cd01d;_0x43151a['model']=_[_0x9597('0x32')](db[_0x9597('0x4e')][_0x9597('0x2c')]);_0x43151a[_0x9597('0x31')]=_['keys'](_0x47f9a6[_0x9597('0x31')]);_0x43151a['filters']=_['intersection'](_0x43151a[_0x9597('0x2f')],_0x43151a['query']);_0x317328[_0x9597('0x35')]=_[_0x9597('0x34')](_0x43151a[_0x9597('0x2f')],qs['fields'](_0x47f9a6[_0x9597('0x31')][_0x9597('0x36')]));_0x317328[_0x9597('0x35')]=_0x317328[_0x9597('0x35')][_0x9597('0x37')]?_0x317328[_0x9597('0x35')]:_0x43151a[_0x9597('0x2f')];_0x317328['order']=qs[_0x9597('0x3b')](_0x47f9a6[_0x9597('0x31')]['sort']);_0x317328['where']=qs[_0x9597('0x33')](_[_0x9597('0x3d')](_0x47f9a6[_0x9597('0x31')],_0x43151a[_0x9597('0x33')]));if(_0x47f9a6[_0x9597('0x31')][_0x9597('0x3e')]){_0x317328['where']=_['merge'](_0x317328[_0x9597('0x3c')],{'$or':_[_0x9597('0x30')](_0x317328[_0x9597('0x35')],function(_0x39c012){var _0xa46f31={};_0xa46f31[_0x39c012]={'$like':'%'+_0x47f9a6[_0x9597('0x31')]['filter']+'%'};return _0xa46f31;})});}_0x317328=_['merge']({},_0x317328,_0x47f9a6[_0x9597('0x41')]);return _0x2434ed[_0x9597('0x4d')](_0x317328);}})['then'](function(_0x392c61){if(_0x392c61){_0x4ec2e3=_0x392c61['length'];if(!_0x47f9a6[_0x9597('0x31')]['hasOwnProperty'](_0x9597('0x39'))){_0x317328[_0x9597('0x1d')]=qs[_0x9597('0x1d')](_0x47f9a6['query'][_0x9597('0x1d')]);_0x317328[_0x9597('0x20')]=qs[_0x9597('0x20')](_0x47f9a6['query']['offset']);}return _0x2434ed[_0x9597('0x4d')](_0x317328);}})[_0x9597('0x27')](function(_0x2f77f6){if(_0x2f77f6){return _0x2f77f6?{'count':_0x4ec2e3,'rows':_0x2f77f6}:null;}})[_0x9597('0x27')](respondWithResult(_0x308a31,null))['catch'](handleError(_0x308a31,null));};exports['getSubjects']=function(_0x48f27b,_0x2140f5,_0x31d980){var _0x28face={};var _0x5bb9be={};var _0x4b07ed;var _0x16d4ad;return db[_0x9597('0x42')][_0x9597('0x4f')]({'where':{'id':_0x48f27b[_0x9597('0x47')]['id']}})[_0x9597('0x27')](handleEntityNotFound(_0x2140f5,null))[_0x9597('0x27')](function(_0x1dd3ce){if(_0x1dd3ce){_0x4b07ed=_0x1dd3ce;_0x5bb9be[_0x9597('0x2f')]=_[_0x9597('0x32')](db[_0x9597('0x4e')]['rawAttributes']);_0x5bb9be['query']=_[_0x9597('0x32')](_0x48f27b['query']);_0x5bb9be['filters']=_[_0x9597('0x34')](_0x5bb9be[_0x9597('0x2f')],_0x5bb9be[_0x9597('0x31')]);_0x28face[_0x9597('0x35')]=_[_0x9597('0x34')](_0x5bb9be['model'],qs['fields'](_0x48f27b['query']['fields']));_0x28face['attributes']=_0x28face[_0x9597('0x35')]['length']?_0x28face[_0x9597('0x35')]:_0x5bb9be[_0x9597('0x2f')];_0x28face[_0x9597('0x3a')]=qs['sort'](_0x48f27b[_0x9597('0x31')][_0x9597('0x3b')]);_0x28face['where']=qs['filters'](_['pick'](_0x48f27b[_0x9597('0x31')],_0x5bb9be[_0x9597('0x33')]));if(_0x48f27b[_0x9597('0x31')][_0x9597('0x3e')]){_0x28face[_0x9597('0x3c')]=_[_0x9597('0x3f')](_0x28face['where'],{'$or':_[_0x9597('0x30')](_0x28face[_0x9597('0x35')],function(_0x2caf14){var _0x2fa591={};_0x2fa591[_0x2caf14]={'$like':'%'+_0x48f27b[_0x9597('0x31')]['filter']+'%'};return _0x2fa591;})});}_0x28face=_['merge']({},_0x28face,_0x48f27b[_0x9597('0x41')]);return _0x4b07ed[_0x9597('0x50')](_0x28face);}})[_0x9597('0x27')](function(_0x426afa){if(_0x426afa){_0x16d4ad=_0x426afa[_0x9597('0x37')];if(!_0x48f27b['query'][_0x9597('0x38')]('nolimit')){_0x28face['limit']=qs['limit'](_0x48f27b[_0x9597('0x31')][_0x9597('0x1d')]);_0x28face['offset']=qs[_0x9597('0x20')](_0x48f27b['query'][_0x9597('0x20')]);}return _0x4b07ed[_0x9597('0x50')](_0x28face);}})[_0x9597('0x27')](function(_0x518617){if(_0x518617){return _0x518617?{'count':_0x16d4ad,'rows':_0x518617}:null;}})['then'](respondWithResult(_0x2140f5,null))['catch'](handleError(_0x2140f5,null));};exports[_0x9597('0x51')]=function(_0x2b5df7,_0x3cd755,_0x309f2c){var _0x1d2ad5={};var _0x16385b={};var _0x540d17;var _0x2f6443;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x2b5df7[_0x9597('0x47')]['id']}})[_0x9597('0x27')](handleEntityNotFound(_0x3cd755,null))[_0x9597('0x27')](function(_0xa4089a){if(_0xa4089a){_0x540d17=_0xa4089a;_0x16385b['model']=_[_0x9597('0x32')](db[_0x9597('0x4e')][_0x9597('0x2c')]);_0x16385b[_0x9597('0x31')]=_[_0x9597('0x32')](_0x2b5df7[_0x9597('0x31')]);_0x16385b[_0x9597('0x33')]=_['intersection'](_0x16385b[_0x9597('0x2f')],_0x16385b[_0x9597('0x31')]);_0x1d2ad5[_0x9597('0x35')]=_[_0x9597('0x34')](_0x16385b[_0x9597('0x2f')],qs[_0x9597('0x36')](_0x2b5df7[_0x9597('0x31')]['fields']));_0x1d2ad5[_0x9597('0x35')]=_0x1d2ad5[_0x9597('0x35')][_0x9597('0x37')]?_0x1d2ad5[_0x9597('0x35')]:_0x16385b[_0x9597('0x2f')];_0x1d2ad5['order']=qs['sort'](_0x2b5df7[_0x9597('0x31')][_0x9597('0x3b')]);_0x1d2ad5[_0x9597('0x3c')]=qs[_0x9597('0x33')](_[_0x9597('0x3d')](_0x2b5df7['query'],_0x16385b[_0x9597('0x33')]));if(_0x2b5df7[_0x9597('0x31')][_0x9597('0x3e')]){_0x1d2ad5[_0x9597('0x3c')]=_[_0x9597('0x3f')](_0x1d2ad5[_0x9597('0x3c')],{'$or':_[_0x9597('0x30')](_0x1d2ad5[_0x9597('0x35')],function(_0x26081a){var _0x3f5208={};_0x3f5208[_0x26081a]={'$like':'%'+_0x2b5df7[_0x9597('0x31')][_0x9597('0x3e')]+'%'};return _0x3f5208;})});}_0x1d2ad5=_[_0x9597('0x3f')]({},_0x1d2ad5,_0x2b5df7['options']);return _0x540d17[_0x9597('0x51')](_0x1d2ad5);}})[_0x9597('0x27')](function(_0xd925ac){if(_0xd925ac){_0x2f6443=_0xd925ac[_0x9597('0x37')];if(!_0x2b5df7[_0x9597('0x31')][_0x9597('0x38')](_0x9597('0x39'))){_0x1d2ad5['limit']=qs['limit'](_0x2b5df7[_0x9597('0x31')]['limit']);_0x1d2ad5[_0x9597('0x20')]=qs['offset'](_0x2b5df7[_0x9597('0x31')][_0x9597('0x20')]);}return _0x540d17['getDescriptions'](_0x1d2ad5);}})[_0x9597('0x27')](function(_0x105e91){if(_0x105e91){return _0x105e91?{'count':_0x2f6443,'rows':_0x105e91}:null;}})['then'](respondWithResult(_0x3cd755,null))[_0x9597('0x46')](handleError(_0x3cd755,null));};exports['getTags']=function(_0x624fba,_0x1592da,_0x5c061e){var _0x1be122={};var _0x392a17={};var _0x88e2b3;var _0x384668;return db[_0x9597('0x42')][_0x9597('0x4f')]({'where':{'id':_0x624fba[_0x9597('0x47')]['id']}})[_0x9597('0x27')](handleEntityNotFound(_0x1592da,null))[_0x9597('0x27')](function(_0x19e930){if(_0x19e930){_0x88e2b3=_0x19e930;_0x392a17[_0x9597('0x2f')]=_[_0x9597('0x32')](db['Tag'][_0x9597('0x2c')]);_0x392a17['query']=_[_0x9597('0x32')](_0x624fba[_0x9597('0x31')]);_0x392a17[_0x9597('0x33')]=_[_0x9597('0x34')](_0x392a17[_0x9597('0x2f')],_0x392a17['query']);_0x1be122[_0x9597('0x35')]=_['intersection'](_0x392a17[_0x9597('0x2f')],qs[_0x9597('0x36')](_0x624fba[_0x9597('0x31')][_0x9597('0x36')]));_0x1be122[_0x9597('0x35')]=_0x1be122[_0x9597('0x35')][_0x9597('0x37')]?_0x1be122['attributes']:_0x392a17[_0x9597('0x2f')];_0x1be122[_0x9597('0x3a')]=qs[_0x9597('0x3b')](_0x624fba[_0x9597('0x31')][_0x9597('0x3b')]);_0x1be122['where']=qs[_0x9597('0x33')](_[_0x9597('0x3d')](_0x624fba[_0x9597('0x31')],_0x392a17[_0x9597('0x33')]));if(_0x624fba[_0x9597('0x31')][_0x9597('0x3e')]){_0x1be122[_0x9597('0x3c')]=_['merge'](_0x1be122[_0x9597('0x3c')],{'$or':_[_0x9597('0x30')](_0x1be122[_0x9597('0x35')],function(_0x32df31){var _0x284ae1={};_0x284ae1[_0x32df31]={'$like':'%'+_0x624fba[_0x9597('0x31')][_0x9597('0x3e')]+'%'};return _0x284ae1;})});}_0x1be122=_[_0x9597('0x3f')]({},_0x1be122,_0x624fba[_0x9597('0x41')]);return _0x88e2b3['getTags'](_0x1be122);}})[_0x9597('0x27')](function(_0x1cb155){if(_0x1cb155){_0x384668=_0x1cb155['length'];if(!_0x624fba[_0x9597('0x31')][_0x9597('0x38')](_0x9597('0x39'))){_0x1be122[_0x9597('0x1d')]=qs[_0x9597('0x1d')](_0x624fba['query'][_0x9597('0x1d')]);_0x1be122[_0x9597('0x20')]=qs[_0x9597('0x20')](_0x624fba['query'][_0x9597('0x20')]);}return _0x88e2b3[_0x9597('0x52')](_0x1be122);}})[_0x9597('0x27')](function(_0x5e53fa){if(_0x5e53fa){return _0x5e53fa?{'count':_0x384668,'rows':_0x5e53fa}:null;}})[_0x9597('0x27')](respondWithResult(_0x1592da,null))[_0x9597('0x46')](handleError(_0x1592da,null));};exports[_0x9597('0x53')]=function(_0x472eff,_0x4c4dff,_0x15e2fd){if(_0x472eff['body']['id']){delete _0x472eff[_0x9597('0x4a')]['id'];}return db['ZendeskConfiguration'][_0x9597('0x4f')]({'where':{'id':_0x472eff[_0x9597('0x47')]['id']}})[_0x9597('0x27')](handleEntityNotFound(_0x4c4dff,null))['then'](function(_0x971da4){if(_0x971da4){return _0x971da4[_0x9597('0x53')](_0x472eff[_0x9597('0x4a')]['ids']||[]);}return null;})['then'](respondWithResult(_0x4c4dff,null))[_0x9597('0x46')](handleError(_0x4c4dff,null));};
\ No newline at end of file
+var _0x6225=['ZendeskConfiguration','intersection','find','create','body','update','getFields','ZendeskField','nolimit','findOne','getSubjects','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','end','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params'];(function(_0x246119,_0x30a4f3){var _0x59c74f=function(_0x313fb5){while(--_0x313fb5){_0x246119['push'](_0x246119['shift']());}};_0x59c74f(++_0x30a4f3);}(_0x6225,0x109));var _0x5622=function(_0x5f5c59,_0x169b7c){_0x5f5c59=_0x5f5c59-0x0;var _0x5a5f48=_0x6225[_0x5f5c59];return _0x5a5f48;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5622('0x0'));var zipdir=require(_0x5622('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5622('0x2'));var moment=require(_0x5622('0x3'));var BPromise=require(_0x5622('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5622('0x5'));var sox=require(_0x5622('0x6'));var csv=require(_0x5622('0x7'));var ejs=require(_0x5622('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5622('0x9'));var squel=require(_0x5622('0xa'));var crypto=require(_0x5622('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x5622('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5622('0xd'));var Redis=require('ioredis');var authService=require(_0x5622('0xe'));var qs=require(_0x5622('0xf'));var as=require(_0x5622('0x10'));var hardwareService=require(_0x5622('0x11'));var logger=require('../../config/logger')(_0x5622('0x12'));var utils=require(_0x5622('0x13'));var config=require(_0x5622('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x5622('0x15'))['db'];function respondWithStatusCode(_0xec9a57,_0x2fa488){_0x2fa488=_0x2fa488||0xcc;return function(_0x3e4f3e){if(_0x3e4f3e){return _0xec9a57[_0x5622('0x16')](_0x2fa488);}return _0xec9a57[_0x5622('0x17')](_0x2fa488)['end']();};}function respondWithResult(_0x263f60,_0x46dac7){_0x46dac7=_0x46dac7||0xc8;return function(_0x16619f){if(_0x16619f){return _0x263f60['status'](_0x46dac7)[_0x5622('0x18')](_0x16619f);}};}function respondWithFilteredResult(_0x27a32,_0xb17a5d){return function(_0x1ec413){if(_0x1ec413){var _0x2d5ce7=typeof _0xb17a5d[_0x5622('0x19')]===_0x5622('0x1a')&&typeof _0xb17a5d[_0x5622('0x1b')]===_0x5622('0x1a');var _0x235451=_0x1ec413[_0x5622('0x1c')];var _0x27b383=_0x2d5ce7?0x0:_0xb17a5d[_0x5622('0x19')];var _0x1162ac=_0x2d5ce7?_0x1ec413['count']:_0xb17a5d['offset']+_0xb17a5d[_0x5622('0x1b')];var _0x3793c5;if(_0x1162ac>=_0x235451){_0x1162ac=_0x235451;_0x3793c5=0xc8;}else{_0x3793c5=0xce;}_0x27a32['status'](_0x3793c5);return _0x27a32[_0x5622('0x1d')](_0x5622('0x1e'),_0x27b383+'-'+_0x1162ac+'/'+_0x235451)[_0x5622('0x18')](_0x1ec413);}return null;};}function patchUpdates(_0xe4b22c){return function(_0x4f9ea6){try{jsonpatch[_0x5622('0x1f')](_0x4f9ea6,_0xe4b22c,!![]);}catch(_0x2fb193){return BPromise[_0x5622('0x20')](_0x2fb193);}return _0x4f9ea6['save']();};}function saveUpdates(_0x4eeb36,_0x15341f){return function(_0x550794){if(_0x550794){return _0x550794['update'](_0x4eeb36)[_0x5622('0x21')](function(_0x51dbb6){return _0x51dbb6;});}return null;};}function removeEntity(_0x4f865d,_0x43dd41){return function(_0x1a61d7){if(_0x1a61d7){return _0x1a61d7[_0x5622('0x22')]()['then'](function(){_0x4f865d[_0x5622('0x17')](0xcc)[_0x5622('0x23')]();});}};}function handleEntityNotFound(_0x5c95c6,_0x592bc7){return function(_0x1d1f23){if(!_0x1d1f23){_0x5c95c6[_0x5622('0x16')](0x194);}return _0x1d1f23;};}function handleError(_0x4ae0a7,_0x3ac4b0){_0x3ac4b0=_0x3ac4b0||0x1f4;return function(_0x4c0e32){logger[_0x5622('0x24')](_0x4c0e32['stack']);if(_0x4c0e32[_0x5622('0x25')]){delete _0x4c0e32[_0x5622('0x25')];}_0x4ae0a7['status'](_0x3ac4b0)[_0x5622('0x26')](_0x4c0e32);};}exports[_0x5622('0x27')]=function(_0x2d7f3d,_0x1ec06c){var _0x4aa055={},_0x405868={},_0x3872c9={'count':0x0,'rows':[]};var _0x118071=_[_0x5622('0x28')](db['ZendeskConfiguration'][_0x5622('0x29')],function(_0x2c4917){return{'name':_0x2c4917[_0x5622('0x2a')],'type':_0x2c4917[_0x5622('0x2b')][_0x5622('0x2c')]};});_0x405868[_0x5622('0x2d')]=_[_0x5622('0x28')](_0x118071,_0x5622('0x25'));_0x405868[_0x5622('0x2e')]=_[_0x5622('0x2f')](_0x2d7f3d['query']);_0x405868[_0x5622('0x30')]=_['intersection'](_0x405868[_0x5622('0x2d')],_0x405868[_0x5622('0x2e')]);_0x4aa055[_0x5622('0x31')]=_['intersection'](_0x405868['model'],qs[_0x5622('0x32')](_0x2d7f3d['query']['fields']));_0x4aa055['attributes']=_0x4aa055[_0x5622('0x31')][_0x5622('0x33')]?_0x4aa055[_0x5622('0x31')]:_0x405868['model'];if(!_0x2d7f3d['query'][_0x5622('0x34')]('nolimit')){_0x4aa055[_0x5622('0x1b')]=qs[_0x5622('0x1b')](_0x2d7f3d[_0x5622('0x2e')]['limit']);_0x4aa055[_0x5622('0x19')]=qs[_0x5622('0x19')](_0x2d7f3d['query'][_0x5622('0x19')]);}_0x4aa055[_0x5622('0x35')]=qs[_0x5622('0x36')](_0x2d7f3d['query'][_0x5622('0x36')]);_0x4aa055[_0x5622('0x37')]=qs['filters'](_[_0x5622('0x38')](_0x2d7f3d['query'],_0x405868[_0x5622('0x30')]),_0x118071);if(_0x2d7f3d[_0x5622('0x2e')]['filter']){_0x4aa055[_0x5622('0x37')]=_[_0x5622('0x39')](_0x4aa055[_0x5622('0x37')],{'$or':_[_0x5622('0x28')](_0x118071,function(_0x128476){if(_0x128476['type']!==_0x5622('0x3a')){var _0x28dc8e={};_0x28dc8e[_0x128476[_0x5622('0x25')]]={'$like':'%'+_0x2d7f3d[_0x5622('0x2e')][_0x5622('0x3b')]+'%'};return _0x28dc8e;}})});}_0x4aa055=_[_0x5622('0x39')]({},_0x4aa055,_0x2d7f3d[_0x5622('0x3c')]);var _0x133be7={'where':_0x4aa055[_0x5622('0x37')]};return db['ZendeskConfiguration'][_0x5622('0x1c')](_0x133be7)['then'](function(_0x29d99a){_0x3872c9['count']=_0x29d99a;if(_0x2d7f3d[_0x5622('0x2e')][_0x5622('0x3d')]){_0x4aa055[_0x5622('0x3e')]=[{'all':!![]}];}return db['ZendeskConfiguration']['findAll'](_0x4aa055);})[_0x5622('0x21')](function(_0x5342c9){_0x3872c9[_0x5622('0x3f')]=_0x5342c9;return _0x3872c9;})['then'](respondWithFilteredResult(_0x1ec06c,_0x4aa055))[_0x5622('0x40')](handleError(_0x1ec06c,null));};exports[_0x5622('0x41')]=function(_0x577e06,_0x12f525){var _0x276ff7={'raw':![],'where':{'id':_0x577e06[_0x5622('0x42')]['id']}},_0x4e2555={};_0x4e2555['model']=_['keys'](db[_0x5622('0x43')][_0x5622('0x29')]);_0x4e2555['query']=_['keys'](_0x577e06[_0x5622('0x2e')]);_0x4e2555[_0x5622('0x30')]=_[_0x5622('0x44')](_0x4e2555[_0x5622('0x2d')],_0x4e2555[_0x5622('0x2e')]);_0x276ff7[_0x5622('0x31')]=_['intersection'](_0x4e2555['model'],qs[_0x5622('0x32')](_0x577e06[_0x5622('0x2e')][_0x5622('0x32')]));_0x276ff7[_0x5622('0x31')]=_0x276ff7[_0x5622('0x31')][_0x5622('0x33')]?_0x276ff7['attributes']:_0x4e2555[_0x5622('0x2d')];if(_0x577e06[_0x5622('0x2e')][_0x5622('0x3d')]){_0x276ff7[_0x5622('0x3e')]=[{'all':!![]}];}_0x276ff7=_[_0x5622('0x39')]({},_0x276ff7,_0x577e06[_0x5622('0x3c')]);return db[_0x5622('0x43')][_0x5622('0x45')](_0x276ff7)['then'](handleEntityNotFound(_0x12f525,null))[_0x5622('0x21')](respondWithResult(_0x12f525,null))[_0x5622('0x40')](handleError(_0x12f525,null));};exports[_0x5622('0x46')]=function(_0x390cd1,_0x12c8a7){return db[_0x5622('0x43')][_0x5622('0x46')](_0x390cd1[_0x5622('0x47')],{})[_0x5622('0x21')](respondWithResult(_0x12c8a7,0xc9))[_0x5622('0x40')](handleError(_0x12c8a7,null));};exports[_0x5622('0x48')]=function(_0x17e9d9,_0x88956f){if(_0x17e9d9[_0x5622('0x47')]['id']){delete _0x17e9d9['body']['id'];}return db[_0x5622('0x43')][_0x5622('0x45')]({'where':{'id':_0x17e9d9['params']['id']}})['then'](handleEntityNotFound(_0x88956f,null))[_0x5622('0x21')](saveUpdates(_0x17e9d9[_0x5622('0x47')],null))[_0x5622('0x21')](respondWithResult(_0x88956f,null))[_0x5622('0x40')](handleError(_0x88956f,null));};exports[_0x5622('0x22')]=function(_0x63c55a,_0x5ec748){return db[_0x5622('0x43')]['find']({'where':{'id':_0x63c55a[_0x5622('0x42')]['id']}})['then'](handleEntityNotFound(_0x5ec748,null))[_0x5622('0x21')](removeEntity(_0x5ec748,null))['catch'](handleError(_0x5ec748,null));};exports[_0x5622('0x49')]=function(_0xa383c3,_0x5427a0,_0x5332fe){var _0x234ef1={};var _0x520d92={};var _0x470d03;var _0x207bbc;return db[_0x5622('0x43')]['findOne']({'where':{'id':_0xa383c3[_0x5622('0x42')]['id']}})[_0x5622('0x21')](handleEntityNotFound(_0x5427a0,null))['then'](function(_0x1bf62b){if(_0x1bf62b){_0x470d03=_0x1bf62b;_0x520d92[_0x5622('0x2d')]=_[_0x5622('0x2f')](db[_0x5622('0x4a')]['rawAttributes']);_0x520d92[_0x5622('0x2e')]=_[_0x5622('0x2f')](_0xa383c3[_0x5622('0x2e')]);_0x520d92[_0x5622('0x30')]=_[_0x5622('0x44')](_0x520d92[_0x5622('0x2d')],_0x520d92[_0x5622('0x2e')]);_0x234ef1['attributes']=_['intersection'](_0x520d92[_0x5622('0x2d')],qs['fields'](_0xa383c3[_0x5622('0x2e')]['fields']));_0x234ef1[_0x5622('0x31')]=_0x234ef1[_0x5622('0x31')]['length']?_0x234ef1[_0x5622('0x31')]:_0x520d92['model'];_0x234ef1[_0x5622('0x35')]=qs[_0x5622('0x36')](_0xa383c3[_0x5622('0x2e')][_0x5622('0x36')]);_0x234ef1[_0x5622('0x37')]=qs[_0x5622('0x30')](_['pick'](_0xa383c3[_0x5622('0x2e')],_0x520d92[_0x5622('0x30')]));if(_0xa383c3[_0x5622('0x2e')][_0x5622('0x3b')]){_0x234ef1[_0x5622('0x37')]=_[_0x5622('0x39')](_0x234ef1[_0x5622('0x37')],{'$or':_[_0x5622('0x28')](_0x234ef1[_0x5622('0x31')],function(_0x3e8122){var _0x445c0e={};_0x445c0e[_0x3e8122]={'$like':'%'+_0xa383c3[_0x5622('0x2e')][_0x5622('0x3b')]+'%'};return _0x445c0e;})});}_0x234ef1=_[_0x5622('0x39')]({},_0x234ef1,_0xa383c3['options']);return _0x470d03['getFields'](_0x234ef1);}})[_0x5622('0x21')](function(_0x465d41){if(_0x465d41){_0x207bbc=_0x465d41[_0x5622('0x33')];if(!_0xa383c3[_0x5622('0x2e')][_0x5622('0x34')](_0x5622('0x4b'))){_0x234ef1[_0x5622('0x1b')]=qs[_0x5622('0x1b')](_0xa383c3[_0x5622('0x2e')][_0x5622('0x1b')]);_0x234ef1[_0x5622('0x19')]=qs['offset'](_0xa383c3[_0x5622('0x2e')][_0x5622('0x19')]);}return _0x470d03['getFields'](_0x234ef1);}})[_0x5622('0x21')](function(_0x4111fe){if(_0x4111fe){return _0x4111fe?{'count':_0x207bbc,'rows':_0x4111fe}:null;}})['then'](respondWithResult(_0x5427a0,null))[_0x5622('0x40')](handleError(_0x5427a0,null));};exports['getSubjects']=function(_0x25d2cc,_0x2ed1a8,_0x593e5b){var _0x3c6021={};var _0xdfdee0={};var _0x4fa016;var _0x28d180;return db['ZendeskConfiguration'][_0x5622('0x4c')]({'where':{'id':_0x25d2cc[_0x5622('0x42')]['id']}})[_0x5622('0x21')](handleEntityNotFound(_0x2ed1a8,null))[_0x5622('0x21')](function(_0x52805d){if(_0x52805d){_0x4fa016=_0x52805d;_0xdfdee0[_0x5622('0x2d')]=_['keys'](db[_0x5622('0x4a')]['rawAttributes']);_0xdfdee0[_0x5622('0x2e')]=_[_0x5622('0x2f')](_0x25d2cc[_0x5622('0x2e')]);_0xdfdee0[_0x5622('0x30')]=_[_0x5622('0x44')](_0xdfdee0['model'],_0xdfdee0['query']);_0x3c6021[_0x5622('0x31')]=_[_0x5622('0x44')](_0xdfdee0[_0x5622('0x2d')],qs[_0x5622('0x32')](_0x25d2cc[_0x5622('0x2e')][_0x5622('0x32')]));_0x3c6021[_0x5622('0x31')]=_0x3c6021[_0x5622('0x31')][_0x5622('0x33')]?_0x3c6021[_0x5622('0x31')]:_0xdfdee0[_0x5622('0x2d')];_0x3c6021[_0x5622('0x35')]=qs[_0x5622('0x36')](_0x25d2cc[_0x5622('0x2e')][_0x5622('0x36')]);_0x3c6021['where']=qs['filters'](_[_0x5622('0x38')](_0x25d2cc[_0x5622('0x2e')],_0xdfdee0[_0x5622('0x30')]));if(_0x25d2cc['query'][_0x5622('0x3b')]){_0x3c6021[_0x5622('0x37')]=_[_0x5622('0x39')](_0x3c6021[_0x5622('0x37')],{'$or':_[_0x5622('0x28')](_0x3c6021['attributes'],function(_0x237387){var _0x2baad8={};_0x2baad8[_0x237387]={'$like':'%'+_0x25d2cc['query'][_0x5622('0x3b')]+'%'};return _0x2baad8;})});}_0x3c6021=_[_0x5622('0x39')]({},_0x3c6021,_0x25d2cc['options']);return _0x4fa016[_0x5622('0x4d')](_0x3c6021);}})[_0x5622('0x21')](function(_0xacfd51){if(_0xacfd51){_0x28d180=_0xacfd51[_0x5622('0x33')];if(!_0x25d2cc['query'][_0x5622('0x34')](_0x5622('0x4b'))){_0x3c6021['limit']=qs['limit'](_0x25d2cc[_0x5622('0x2e')][_0x5622('0x1b')]);_0x3c6021[_0x5622('0x19')]=qs[_0x5622('0x19')](_0x25d2cc[_0x5622('0x2e')][_0x5622('0x19')]);}return _0x4fa016['getSubjects'](_0x3c6021);}})[_0x5622('0x21')](function(_0x2c7d11){if(_0x2c7d11){return _0x2c7d11?{'count':_0x28d180,'rows':_0x2c7d11}:null;}})[_0x5622('0x21')](respondWithResult(_0x2ed1a8,null))[_0x5622('0x40')](handleError(_0x2ed1a8,null));};exports[_0x5622('0x4e')]=function(_0x2b3ac3,_0x5a882a,_0x514366){var _0x34529e={};var _0x44bce3={};var _0x364c39;var _0x2f66f9;return db[_0x5622('0x43')][_0x5622('0x4c')]({'where':{'id':_0x2b3ac3[_0x5622('0x42')]['id']}})[_0x5622('0x21')](handleEntityNotFound(_0x5a882a,null))[_0x5622('0x21')](function(_0x1415e9){if(_0x1415e9){_0x364c39=_0x1415e9;_0x44bce3['model']=_[_0x5622('0x2f')](db[_0x5622('0x4a')]['rawAttributes']);_0x44bce3[_0x5622('0x2e')]=_[_0x5622('0x2f')](_0x2b3ac3[_0x5622('0x2e')]);_0x44bce3[_0x5622('0x30')]=_[_0x5622('0x44')](_0x44bce3['model'],_0x44bce3['query']);_0x34529e[_0x5622('0x31')]=_[_0x5622('0x44')](_0x44bce3[_0x5622('0x2d')],qs['fields'](_0x2b3ac3[_0x5622('0x2e')][_0x5622('0x32')]));_0x34529e[_0x5622('0x31')]=_0x34529e[_0x5622('0x31')][_0x5622('0x33')]?_0x34529e['attributes']:_0x44bce3[_0x5622('0x2d')];_0x34529e[_0x5622('0x35')]=qs[_0x5622('0x36')](_0x2b3ac3[_0x5622('0x2e')]['sort']);_0x34529e[_0x5622('0x37')]=qs[_0x5622('0x30')](_[_0x5622('0x38')](_0x2b3ac3['query'],_0x44bce3[_0x5622('0x30')]));if(_0x2b3ac3[_0x5622('0x2e')]['filter']){_0x34529e[_0x5622('0x37')]=_[_0x5622('0x39')](_0x34529e['where'],{'$or':_[_0x5622('0x28')](_0x34529e[_0x5622('0x31')],function(_0x15c7b6){var _0x105fe0={};_0x105fe0[_0x15c7b6]={'$like':'%'+_0x2b3ac3[_0x5622('0x2e')][_0x5622('0x3b')]+'%'};return _0x105fe0;})});}_0x34529e=_[_0x5622('0x39')]({},_0x34529e,_0x2b3ac3[_0x5622('0x3c')]);return _0x364c39[_0x5622('0x4e')](_0x34529e);}})['then'](function(_0x56908b){if(_0x56908b){_0x2f66f9=_0x56908b['length'];if(!_0x2b3ac3['query']['hasOwnProperty']('nolimit')){_0x34529e[_0x5622('0x1b')]=qs[_0x5622('0x1b')](_0x2b3ac3[_0x5622('0x2e')][_0x5622('0x1b')]);_0x34529e[_0x5622('0x19')]=qs[_0x5622('0x19')](_0x2b3ac3[_0x5622('0x2e')]['offset']);}return _0x364c39[_0x5622('0x4e')](_0x34529e);}})[_0x5622('0x21')](function(_0x175e0){if(_0x175e0){return _0x175e0?{'count':_0x2f66f9,'rows':_0x175e0}:null;}})[_0x5622('0x21')](respondWithResult(_0x5a882a,null))[_0x5622('0x40')](handleError(_0x5a882a,null));};exports[_0x5622('0x4f')]=function(_0x570895,_0x4ea85e,_0x3d4f76){var _0x1eb849={};var _0x4c8c33={};var _0x5b5574;var _0x8982fb;return db[_0x5622('0x43')][_0x5622('0x4c')]({'where':{'id':_0x570895['params']['id']}})['then'](handleEntityNotFound(_0x4ea85e,null))['then'](function(_0x14d385){if(_0x14d385){_0x5b5574=_0x14d385;_0x4c8c33[_0x5622('0x2d')]=_[_0x5622('0x2f')](db[_0x5622('0x50')]['rawAttributes']);_0x4c8c33[_0x5622('0x2e')]=_[_0x5622('0x2f')](_0x570895[_0x5622('0x2e')]);_0x4c8c33[_0x5622('0x30')]=_[_0x5622('0x44')](_0x4c8c33[_0x5622('0x2d')],_0x4c8c33[_0x5622('0x2e')]);_0x1eb849[_0x5622('0x31')]=_[_0x5622('0x44')](_0x4c8c33[_0x5622('0x2d')],qs[_0x5622('0x32')](_0x570895[_0x5622('0x2e')][_0x5622('0x32')]));_0x1eb849[_0x5622('0x31')]=_0x1eb849[_0x5622('0x31')][_0x5622('0x33')]?_0x1eb849['attributes']:_0x4c8c33[_0x5622('0x2d')];_0x1eb849[_0x5622('0x35')]=qs[_0x5622('0x36')](_0x570895[_0x5622('0x2e')][_0x5622('0x36')]);_0x1eb849['where']=qs[_0x5622('0x30')](_[_0x5622('0x38')](_0x570895[_0x5622('0x2e')],_0x4c8c33['filters']));if(_0x570895[_0x5622('0x2e')][_0x5622('0x3b')]){_0x1eb849['where']=_['merge'](_0x1eb849['where'],{'$or':_[_0x5622('0x28')](_0x1eb849[_0x5622('0x31')],function(_0x3f9d95){var _0x39d86e={};_0x39d86e[_0x3f9d95]={'$like':'%'+_0x570895[_0x5622('0x2e')][_0x5622('0x3b')]+'%'};return _0x39d86e;})});}_0x1eb849=_[_0x5622('0x39')]({},_0x1eb849,_0x570895[_0x5622('0x3c')]);return _0x5b5574[_0x5622('0x4f')](_0x1eb849);}})['then'](function(_0x50e80e){if(_0x50e80e){_0x8982fb=_0x50e80e['length'];if(!_0x570895[_0x5622('0x2e')][_0x5622('0x34')](_0x5622('0x4b'))){_0x1eb849[_0x5622('0x1b')]=qs[_0x5622('0x1b')](_0x570895[_0x5622('0x2e')][_0x5622('0x1b')]);_0x1eb849[_0x5622('0x19')]=qs[_0x5622('0x19')](_0x570895['query'][_0x5622('0x19')]);}return _0x5b5574[_0x5622('0x4f')](_0x1eb849);}})[_0x5622('0x21')](function(_0x323702){if(_0x323702){return _0x323702?{'count':_0x8982fb,'rows':_0x323702}:null;}})[_0x5622('0x21')](respondWithResult(_0x4ea85e,null))[_0x5622('0x40')](handleError(_0x4ea85e,null));};exports[_0x5622('0x51')]=function(_0x540fed,_0x3df76c,_0x2077bf){if(_0x540fed[_0x5622('0x47')]['id']){delete _0x540fed[_0x5622('0x47')]['id'];}return db[_0x5622('0x43')]['findOne']({'where':{'id':_0x540fed[_0x5622('0x42')]['id']}})['then'](handleEntityNotFound(_0x3df76c,null))[_0x5622('0x21')](function(_0x1c1779){if(_0x1c1779){return _0x1c1779[_0x5622('0x51')](_0x540fed[_0x5622('0x47')][_0x5622('0x52')]||[]);}return null;})[_0x5622('0x21')](respondWithResult(_0x3df76c,null))[_0x5622('0x40')](handleError(_0x3df76c,null));};
\ No newline at end of file
index 2d38235..3aa469b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['../../config/logger','api','moment','bluebird','request-promise','path','./intZendeskConfiguration.attributes','exports','ZendeskConfiguration','int_zendesk_configurations','util'];(function(_0x2db78f,_0x7f0cab){var _0x334d6e=function(_0x5c1a00){while(--_0x5c1a00){_0x2db78f['push'](_0x2db78f['shift']());}};_0x334d6e(++_0x7f0cab);}(_0x14a0,0x8e));var _0x014a=function(_0x2e65ed,_0x58d9f5){_0x2e65ed=_0x2e65ed-0x0;var _0x2d07e7=_0x14a0[_0x2e65ed];return _0x2d07e7;};'use strict';var _=require('lodash');var util=require(_0x014a('0x0'));var logger=require(_0x014a('0x1'))(_0x014a('0x2'));var moment=require(_0x014a('0x3'));var BPromise=require(_0x014a('0x4'));var rp=require(_0x014a('0x5'));var fs=require('fs');var path=require(_0x014a('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x014a('0x7'));module[_0x014a('0x8')]=function(_0x38a22c,_0x5ec84d){return _0x38a22c['define'](_0x014a('0x9'),attributes,{'tableName':_0x014a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd4f4=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','define','ZendeskConfiguration','int_zendesk_configurations','lodash'];(function(_0x53c256,_0x382a24){var _0x25feb6=function(_0x2652fd){while(--_0x2652fd){_0x53c256['push'](_0x53c256['shift']());}};_0x25feb6(++_0x382a24);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x1460ae,_0x2ad9d6){_0x1460ae=_0x1460ae-0x0;var _0x243535=_0xd4f4[_0x1460ae];return _0x243535;};'use strict';var _=require(_0x4d4f('0x0'));var util=require(_0x4d4f('0x1'));var logger=require(_0x4d4f('0x2'))(_0x4d4f('0x3'));var moment=require(_0x4d4f('0x4'));var BPromise=require(_0x4d4f('0x5'));var rp=require(_0x4d4f('0x6'));var fs=require('fs');var path=require(_0x4d4f('0x7'));var rimraf=require(_0x4d4f('0x8'));var config=require(_0x4d4f('0x9'));var attributes=require(_0x4d4f('0xa'));module['exports']=function(_0x5f451b,_0x5e38d2){return _0x5f451b[_0x4d4f('0xb')](_0x4d4f('0xc'),attributes,{'tableName':_0x4d4f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 59d1be5..ef01bee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0077=['ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','ZendeskConfiguration,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x5a936c,_0x2baf2c){var _0xa25306=function(_0x3c4676){while(--_0x3c4676){_0x5a936c['push'](_0x5a936c['shift']());}};_0xa25306(++_0x2baf2c);}(_0x0077,0x75));var _0x7007=function(_0x1ea9d9,_0x133ab2){_0x1ea9d9=_0x1ea9d9-0x0;var _0x3766bd=_0x0077[_0x1ea9d9];return _0x3766bd;};'use strict';var _=require('lodash');var util=require(_0x7007('0x0'));var moment=require(_0x7007('0x1'));var BPromise=require('bluebird');var rs=require(_0x7007('0x2'));var fs=require('fs');var Redis=require(_0x7007('0x3'));var db=require(_0x7007('0x4'))['db'];var utils=require(_0x7007('0x5'));var logger=require(_0x7007('0x6'))('rpc');var config=require(_0x7007('0x7'));var jayson=require(_0x7007('0x8'));var client=jayson[_0x7007('0x9')][_0x7007('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x551a43,_0x212a91,_0x21a23f){return new BPromise(function(_0x449204,_0x2c9111){return client[_0x7007('0xb')](_0x551a43,_0x21a23f)[_0x7007('0xc')](function(_0x18e5e4){logger[_0x7007('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x212a91,_0x7007('0xe'));logger['debug'](_0x7007('0xf'),_0x212a91,_0x7007('0xe'),JSON['stringify'](_0x18e5e4));if(_0x18e5e4[_0x7007('0x10')]){if(_0x18e5e4[_0x7007('0x10')][_0x7007('0x11')]===0x1f4){logger[_0x7007('0x10')](_0x7007('0x12'),_0x212a91,_0x18e5e4[_0x7007('0x10')][_0x7007('0x13')]);return _0x2c9111(_0x18e5e4[_0x7007('0x10')][_0x7007('0x13')]);}logger[_0x7007('0x10')]('ZendeskConfiguration,\x20%s,\x20%s',_0x212a91,_0x18e5e4['error'][_0x7007('0x13')]);return _0x449204(_0x18e5e4[_0x7007('0x10')][_0x7007('0x13')]);}else{logger[_0x7007('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x212a91,_0x7007('0xe'));_0x449204(_0x18e5e4[_0x7007('0x14')][_0x7007('0x13')]);}})[_0x7007('0x15')](function(_0x37f388){logger[_0x7007('0x10')](_0x7007('0x12'),_0x212a91,_0x37f388);_0x2c9111(_0x37f388);});});}
\ No newline at end of file
+var _0xfe3b=['then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x40bdbe,_0x1940f2){var _0x307043=function(_0xdea328){while(--_0xdea328){_0x40bdbe['push'](_0x40bdbe['shift']());}};_0x307043(++_0x1940f2);}(_0xfe3b,0x1eb));var _0xbfe3=function(_0x40c62b,_0x2c2efe){_0x40c62b=_0x40c62b-0x0;var _0x568cf0=_0xfe3b[_0x40c62b];return _0x568cf0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbfe3('0x0'));var BPromise=require(_0xbfe3('0x1'));var rs=require(_0xbfe3('0x2'));var fs=require('fs');var Redis=require(_0xbfe3('0x3'));var db=require(_0xbfe3('0x4'))['db'];var utils=require(_0xbfe3('0x5'));var logger=require(_0xbfe3('0x6'))(_0xbfe3('0x7'));var config=require(_0xbfe3('0x8'));var jayson=require(_0xbfe3('0x9'));var client=jayson[_0xbfe3('0xa')][_0xbfe3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xb9467,_0x2dd23a,_0x2b786e){return new BPromise(function(_0x3673a6,_0x38075f){return client[_0xbfe3('0xc')](_0xb9467,_0x2b786e)[_0xbfe3('0xd')](function(_0x1b1743){logger['info'](_0xbfe3('0xe'),_0x2dd23a,_0xbfe3('0xf'));logger['debug'](_0xbfe3('0x10'),_0x2dd23a,_0xbfe3('0xf'),JSON[_0xbfe3('0x11')](_0x1b1743));if(_0x1b1743[_0xbfe3('0x12')]){if(_0x1b1743[_0xbfe3('0x12')][_0xbfe3('0x13')]===0x1f4){logger[_0xbfe3('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x2dd23a,_0x1b1743[_0xbfe3('0x12')]['message']);return _0x38075f(_0x1b1743['error'][_0xbfe3('0x14')]);}logger['error'](_0xbfe3('0xe'),_0x2dd23a,_0x1b1743[_0xbfe3('0x12')]['message']);return _0x3673a6(_0x1b1743['error'][_0xbfe3('0x14')]);}else{logger[_0xbfe3('0x15')](_0xbfe3('0xe'),_0x2dd23a,_0xbfe3('0xf'));_0x3673a6(_0x1b1743[_0xbfe3('0x16')]['message']);}})[_0xbfe3('0x17')](function(_0x22ccca){logger[_0xbfe3('0x12')](_0xbfe3('0xe'),_0x2dd23a,_0x22ccca);_0x38075f(_0x22ccca);});});}
\ No newline at end of file
index 9a2d95b..1eccfc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x015c=['/:id','show','create','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index'];(function(_0x470f4b,_0x563ba2){var _0x359ae6=function(_0x4bb442){while(--_0x4bb442){_0x470f4b['push'](_0x470f4b['shift']());}};_0x359ae6(++_0x563ba2);}(_0x015c,0x149));var _0xc015=function(_0x12c3c6,_0x800a8b){_0x12c3c6=_0x12c3c6-0x0;var _0x2383ac=_0x015c[_0x12c3c6];return _0x2383ac;};'use strict';var multer=require(_0xc015('0x0'));var util=require(_0xc015('0x1'));var path=require(_0xc015('0x2'));var timeout=require(_0xc015('0x3'));var express=require(_0xc015('0x4'));var router=express[_0xc015('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc015('0x6'));var interaction=require(_0xc015('0x7'));var config=require(_0xc015('0x8'));var controller=require(_0xc015('0x9'));router[_0xc015('0xa')]('/',auth[_0xc015('0xb')](),controller[_0xc015('0xc')]);router['get'](_0xc015('0xd'),auth[_0xc015('0xb')](),controller[_0xc015('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc015('0xf')]);router['put'](_0xc015('0xd'),auth[_0xc015('0xb')](),controller[_0xc015('0x10')]);router['delete'](_0xc015('0xd'),auth[_0xc015('0xb')](),controller['destroy']);module[_0xc015('0x11')]=router;
\ No newline at end of file
+var _0x3147=['/:id','post','create','put','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x2b90e2,_0x3c0729){var _0x1431e6=function(_0x1766de){while(--_0x1766de){_0x2b90e2['push'](_0x2b90e2['shift']());}};_0x1431e6(++_0x3c0729);}(_0x3147,0xd9));var _0x7314=function(_0x1a57d1,_0x28ae42){_0x1a57d1=_0x1a57d1-0x0;var _0x900b6f=_0x3147[_0x1a57d1];return _0x900b6f;};'use strict';var multer=require(_0x7314('0x0'));var util=require(_0x7314('0x1'));var path=require(_0x7314('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7314('0x3')]();var fs_extra=require(_0x7314('0x4'));var auth=require(_0x7314('0x5'));var interaction=require(_0x7314('0x6'));var config=require(_0x7314('0x7'));var controller=require('./intZendeskField.controller');router['get']('/',auth[_0x7314('0x8')](),controller[_0x7314('0x9')]);router[_0x7314('0xa')](_0x7314('0xb'),auth[_0x7314('0x8')](),controller['show']);router[_0x7314('0xc')]('/',auth[_0x7314('0x8')](),controller[_0x7314('0xd')]);router[_0x7314('0xe')](_0x7314('0xb'),auth['isAuthenticated'](),controller[_0x7314('0xf')]);router[_0x7314('0x10')](_0x7314('0xb'),auth[_0x7314('0x8')](),controller[_0x7314('0x11')]);module[_0x7314('0x12')]=router;
\ No newline at end of file
index c3a1797..40ecb8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x263f=['variable','customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN','sequelize','exports','string'];(function(_0x12ca91,_0x46f60a){var _0x39902e=function(_0x5ccc92){while(--_0x5ccc92){_0x12ca91['push'](_0x12ca91['shift']());}};_0x39902e(++_0x46f60a);}(_0x263f,0x147));var _0xf263=function(_0x5c1a2a,_0x416c3c){_0x5c1a2a=_0x5c1a2a-0x0;var _0x14cc1d=_0x263f[_0x5c1a2a];return _0x14cc1d;};'use strict';var Sequelize=require(_0xf263('0x0'));module[_0xf263('0x1')]={'type':{'type':Sequelize['ENUM'](_0xf263('0x2'),_0xf263('0x3'),_0xf263('0x4'),_0xf263('0x5'),_0xf263('0x6')),'defaultValue':_0xf263('0x2')},'content':{'type':Sequelize[_0xf263('0x7')]},'key':{'type':Sequelize[_0xf263('0x7')]},'keyType':{'type':Sequelize[_0xf263('0x8')](_0xf263('0x2'),_0xf263('0x3'),_0xf263('0x4'))},'keyContent':{'type':Sequelize[_0xf263('0x7')]},'idField':{'type':Sequelize[_0xf263('0x7')]},'nameField':{'type':Sequelize[_0xf263('0x7')]},'customField':{'type':Sequelize[_0xf263('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf263('0x7')]}};
\ No newline at end of file
+var _0xc4c4=['ENUM','BOOLEAN','string','variable','customVariable','keyValue','STRING'];(function(_0xa1d623,_0x3e1f5d){var _0x4426c7=function(_0x51cfb2){while(--_0x51cfb2){_0xa1d623['push'](_0xa1d623['shift']());}};_0x4426c7(++_0x3e1f5d);}(_0xc4c4,0x11a));var _0x4c4c=function(_0x50ffbb,_0x21a925){_0x50ffbb=_0x50ffbb-0x0;var _0x576a1c=_0xc4c4[_0x50ffbb];return _0x576a1c;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM'](_0x4c4c('0x0'),_0x4c4c('0x1'),_0x4c4c('0x2'),_0x4c4c('0x3'),'picklist'),'defaultValue':_0x4c4c('0x0')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x4c4c('0x4')]},'keyType':{'type':Sequelize[_0x4c4c('0x5')](_0x4c4c('0x0'),'variable',_0x4c4c('0x2'))},'keyContent':{'type':Sequelize[_0x4c4c('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x4c4c('0x4')]},'customField':{'type':Sequelize[_0x4c4c('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 556c9b7..0d4a187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a3=['sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','ZendeskField','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','body','catch','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util'];(function(_0x2bcb1e,_0x42d916){var _0x33d6fb=function(_0x3e6645){while(--_0x3e6645){_0x2bcb1e['push'](_0x2bcb1e['shift']());}};_0x33d6fb(++_0x42d916);}(_0x25a3,0x121));var _0x325a=function(_0x45e5f0,_0x50420c){_0x45e5f0=_0x45e5f0-0x0;var _0x596a58=_0x25a3[_0x45e5f0];return _0x596a58;};'use strict';var emlformat=require(_0x325a('0x0'));var rimraf=require(_0x325a('0x1'));var zipdir=require(_0x325a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x325a('0x3'));var moment=require('moment');var BPromise=require(_0x325a('0x4'));var Mustache=require(_0x325a('0x5'));var util=require(_0x325a('0x6'));var path=require('path');var sox=require(_0x325a('0x7'));var csv=require(_0x325a('0x8'));var ejs=require(_0x325a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x325a('0xa'));var crypto=require(_0x325a('0xb'));var jsforce=require(_0x325a('0xc'));var deskjs=require(_0x325a('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x325a('0xe'));var Redis=require(_0x325a('0xf'));var authService=require(_0x325a('0x10'));var qs=require(_0x325a('0x11'));var as=require(_0x325a('0x12'));var hardwareService=require(_0x325a('0x13'));var logger=require('../../config/logger')(_0x325a('0x14'));var utils=require(_0x325a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x325a('0x16'));var db=require(_0x325a('0x17'))['db'];function respondWithStatusCode(_0x2a8750,_0x3e90fe){_0x3e90fe=_0x3e90fe||0xcc;return function(_0x4e3b88){if(_0x4e3b88){return _0x2a8750['sendStatus'](_0x3e90fe);}return _0x2a8750[_0x325a('0x18')](_0x3e90fe)['end']();};}function respondWithResult(_0x3d12d5,_0xa8dc3a){_0xa8dc3a=_0xa8dc3a||0xc8;return function(_0x3db556){if(_0x3db556){return _0x3d12d5[_0x325a('0x18')](_0xa8dc3a)[_0x325a('0x19')](_0x3db556);}};}function respondWithFilteredResult(_0x3d198c,_0x1d7efc){return function(_0x4412ba){if(_0x4412ba){var _0x1fd4ec=typeof _0x1d7efc[_0x325a('0x1a')]===_0x325a('0x1b')&&typeof _0x1d7efc[_0x325a('0x1c')]===_0x325a('0x1b');var _0x1dcafe=_0x4412ba['count'];var _0x4cba7=_0x1fd4ec?0x0:_0x1d7efc[_0x325a('0x1a')];var _0x4a1f9f=_0x1fd4ec?_0x4412ba[_0x325a('0x1d')]:_0x1d7efc[_0x325a('0x1a')]+_0x1d7efc[_0x325a('0x1c')];var _0x297599;if(_0x4a1f9f>=_0x1dcafe){_0x4a1f9f=_0x1dcafe;_0x297599=0xc8;}else{_0x297599=0xce;}_0x3d198c[_0x325a('0x18')](_0x297599);return _0x3d198c[_0x325a('0x1e')](_0x325a('0x1f'),_0x4cba7+'-'+_0x4a1f9f+'/'+_0x1dcafe)[_0x325a('0x19')](_0x4412ba);}return null;};}function patchUpdates(_0x347f2d){return function(_0x1d76b7){try{jsonpatch[_0x325a('0x20')](_0x1d76b7,_0x347f2d,!![]);}catch(_0x11f0cb){return BPromise['reject'](_0x11f0cb);}return _0x1d76b7[_0x325a('0x21')]();};}function saveUpdates(_0x32a2f5,_0x18e29f){return function(_0x192e83){if(_0x192e83){return _0x192e83[_0x325a('0x22')](_0x32a2f5)[_0x325a('0x23')](function(_0x4c21bf){return _0x4c21bf;});}return null;};}function removeEntity(_0x36b2ac,_0x4c403d){return function(_0x15b5a6){if(_0x15b5a6){return _0x15b5a6[_0x325a('0x24')]()[_0x325a('0x23')](function(){_0x36b2ac[_0x325a('0x18')](0xcc)[_0x325a('0x25')]();});}};}function handleEntityNotFound(_0x4b3d65,_0x29543e){return function(_0x4b4155){if(!_0x4b4155){_0x4b3d65[_0x325a('0x26')](0x194);}return _0x4b4155;};}function handleError(_0x26c001,_0x41d0d2){_0x41d0d2=_0x41d0d2||0x1f4;return function(_0x5ad31d){logger[_0x325a('0x27')](_0x5ad31d[_0x325a('0x28')]);if(_0x5ad31d[_0x325a('0x29')]){delete _0x5ad31d[_0x325a('0x29')];}_0x26c001[_0x325a('0x18')](_0x41d0d2)[_0x325a('0x2a')](_0x5ad31d);};}exports[_0x325a('0x2b')]=function(_0x49d93b,_0x44468d){var _0x5cdfd1={},_0x201e01={},_0x3fa4f6={'count':0x0,'rows':[]};var _0xb10b39=_[_0x325a('0x2c')](db[_0x325a('0x2d')]['rawAttributes'],function(_0x27b3f7){return{'name':_0x27b3f7['fieldName'],'type':_0x27b3f7[_0x325a('0x2e')][_0x325a('0x2f')]};});_0x201e01['model']=_[_0x325a('0x2c')](_0xb10b39,_0x325a('0x29'));_0x201e01[_0x325a('0x30')]=_[_0x325a('0x31')](_0x49d93b['query']);_0x201e01[_0x325a('0x32')]=_[_0x325a('0x33')](_0x201e01[_0x325a('0x34')],_0x201e01[_0x325a('0x30')]);_0x5cdfd1['attributes']=_[_0x325a('0x33')](_0x201e01[_0x325a('0x34')],qs[_0x325a('0x35')](_0x49d93b[_0x325a('0x30')][_0x325a('0x35')]));_0x5cdfd1[_0x325a('0x36')]=_0x5cdfd1['attributes'][_0x325a('0x37')]?_0x5cdfd1[_0x325a('0x36')]:_0x201e01['model'];if(!_0x49d93b[_0x325a('0x30')][_0x325a('0x38')]('nolimit')){_0x5cdfd1[_0x325a('0x1c')]=qs['limit'](_0x49d93b[_0x325a('0x30')][_0x325a('0x1c')]);_0x5cdfd1[_0x325a('0x1a')]=qs[_0x325a('0x1a')](_0x49d93b['query'][_0x325a('0x1a')]);}_0x5cdfd1['order']=qs[_0x325a('0x39')](_0x49d93b['query']['sort']);_0x5cdfd1[_0x325a('0x3a')]=qs[_0x325a('0x32')](_[_0x325a('0x3b')](_0x49d93b['query'],_0x201e01[_0x325a('0x32')]),_0xb10b39);if(_0x49d93b['query'][_0x325a('0x3c')]){_0x5cdfd1[_0x325a('0x3a')]=_[_0x325a('0x3d')](_0x5cdfd1[_0x325a('0x3a')],{'$or':_[_0x325a('0x2c')](_0xb10b39,function(_0x1caa7f){if(_0x1caa7f[_0x325a('0x2e')]!==_0x325a('0x3e')){var _0x4db749={};_0x4db749[_0x1caa7f[_0x325a('0x29')]]={'$like':'%'+_0x49d93b[_0x325a('0x30')][_0x325a('0x3c')]+'%'};return _0x4db749;}})});}_0x5cdfd1=_[_0x325a('0x3d')]({},_0x5cdfd1,_0x49d93b[_0x325a('0x3f')]);var _0x206fa2={'where':_0x5cdfd1[_0x325a('0x3a')]};return db[_0x325a('0x2d')][_0x325a('0x1d')](_0x206fa2)['then'](function(_0x2997a0){_0x3fa4f6[_0x325a('0x1d')]=_0x2997a0;if(_0x49d93b[_0x325a('0x30')][_0x325a('0x40')]){_0x5cdfd1[_0x325a('0x41')]=[{'all':!![]}];}return db[_0x325a('0x2d')][_0x325a('0x42')](_0x5cdfd1);})[_0x325a('0x23')](function(_0x384e62){_0x3fa4f6[_0x325a('0x43')]=_0x384e62;return _0x3fa4f6;})[_0x325a('0x23')](respondWithFilteredResult(_0x44468d,_0x5cdfd1))['catch'](handleError(_0x44468d,null));};exports[_0x325a('0x44')]=function(_0x301f6c,_0x415825){var _0x128d53={'raw':!![],'where':{'id':_0x301f6c[_0x325a('0x45')]['id']}},_0x2750dd={};_0x2750dd['model']=_[_0x325a('0x31')](db[_0x325a('0x2d')][_0x325a('0x46')]);_0x2750dd[_0x325a('0x30')]=_[_0x325a('0x31')](_0x301f6c['query']);_0x2750dd[_0x325a('0x32')]=_[_0x325a('0x33')](_0x2750dd[_0x325a('0x34')],_0x2750dd['query']);_0x128d53[_0x325a('0x36')]=_[_0x325a('0x33')](_0x2750dd[_0x325a('0x34')],qs['fields'](_0x301f6c['query'][_0x325a('0x35')]));_0x128d53[_0x325a('0x36')]=_0x128d53[_0x325a('0x36')][_0x325a('0x37')]?_0x128d53['attributes']:_0x2750dd[_0x325a('0x34')];if(_0x301f6c[_0x325a('0x30')]['includeAll']){_0x128d53[_0x325a('0x41')]=[{'all':!![]}];}_0x128d53=_[_0x325a('0x3d')]({},_0x128d53,_0x301f6c['options']);return db[_0x325a('0x2d')][_0x325a('0x47')](_0x128d53)['then'](handleEntityNotFound(_0x415825,null))[_0x325a('0x23')](respondWithResult(_0x415825,null))['catch'](handleError(_0x415825,null));};exports['create']=function(_0x2fadf4,_0x26721a){return db[_0x325a('0x2d')]['create'](_0x2fadf4[_0x325a('0x48')],{})[_0x325a('0x23')](respondWithResult(_0x26721a,0xc9))['catch'](handleError(_0x26721a,null));};exports['update']=function(_0x1009dc,_0x2002c4){if(_0x1009dc['body']['id']){delete _0x1009dc[_0x325a('0x48')]['id'];}return db['ZendeskField']['find']({'where':{'id':_0x1009dc['params']['id']}})[_0x325a('0x23')](handleEntityNotFound(_0x2002c4,null))[_0x325a('0x23')](saveUpdates(_0x1009dc['body'],null))[_0x325a('0x23')](respondWithResult(_0x2002c4,null))[_0x325a('0x49')](handleError(_0x2002c4,null));};exports['destroy']=function(_0x37b66f,_0x2d00c4){return db[_0x325a('0x2d')][_0x325a('0x47')]({'where':{'id':_0x37b66f[_0x325a('0x45')]['id']}})[_0x325a('0x23')](handleEntityNotFound(_0x2d00c4,null))['then'](removeEntity(_0x2d00c4,null))[_0x325a('0x49')](handleError(_0x2d00c4,null));};
\ No newline at end of file
+var _0x2444=['attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','then','includeAll','include','findAll','rows','show','params','merge','find','catch','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','apply','reject','save','update','destroy','end','sendStatus','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields'];(function(_0x34ef08,_0x3490fc){var _0x161a4f=function(_0x47f7a1){while(--_0x47f7a1){_0x34ef08['push'](_0x34ef08['shift']());}};_0x161a4f(++_0x3490fc);}(_0x2444,0x153));var _0x4244=function(_0x3b705c,_0x3b10ac){_0x3b705c=_0x3b705c-0x0;var _0x55fdb1=_0x2444[_0x3b705c];return _0x55fdb1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4244('0x0'));var zipdir=require(_0x4244('0x1'));var jsonpatch=require(_0x4244('0x2'));var rp=require(_0x4244('0x3'));var moment=require(_0x4244('0x4'));var BPromise=require(_0x4244('0x5'));var Mustache=require(_0x4244('0x6'));var util=require('util');var path=require(_0x4244('0x7'));var sox=require(_0x4244('0x8'));var csv=require(_0x4244('0x9'));var ejs=require(_0x4244('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4244('0xb'));var squel=require(_0x4244('0xc'));var crypto=require(_0x4244('0xd'));var jsforce=require(_0x4244('0xe'));var deskjs=require(_0x4244('0xf'));var toCsv=require(_0x4244('0x9'));var querystring=require(_0x4244('0x10'));var Papa=require(_0x4244('0x11'));var Redis=require(_0x4244('0x12'));var authService=require(_0x4244('0x13'));var qs=require(_0x4244('0x14'));var as=require(_0x4244('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4244('0x16'))(_0x4244('0x17'));var utils=require(_0x4244('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x4244('0x19'));var db=require(_0x4244('0x1a'))['db'];function respondWithStatusCode(_0x401b79,_0x1af793){_0x1af793=_0x1af793||0xcc;return function(_0x2a5e3b){if(_0x2a5e3b){return _0x401b79['sendStatus'](_0x1af793);}return _0x401b79[_0x4244('0x1b')](_0x1af793)['end']();};}function respondWithResult(_0xb34aad,_0x5d86ae){_0x5d86ae=_0x5d86ae||0xc8;return function(_0x3b6f09){if(_0x3b6f09){return _0xb34aad['status'](_0x5d86ae)[_0x4244('0x1c')](_0x3b6f09);}};}function respondWithFilteredResult(_0x3749c3,_0x16b1f0){return function(_0x2de618){if(_0x2de618){var _0x4379f2=typeof _0x16b1f0[_0x4244('0x1d')]===_0x4244('0x1e')&&typeof _0x16b1f0['limit']===_0x4244('0x1e');var _0x127744=_0x2de618[_0x4244('0x1f')];var _0x5625ed=_0x4379f2?0x0:_0x16b1f0['offset'];var _0x2f0b10=_0x4379f2?_0x2de618[_0x4244('0x1f')]:_0x16b1f0[_0x4244('0x1d')]+_0x16b1f0[_0x4244('0x20')];var _0x49fdf1;if(_0x2f0b10>=_0x127744){_0x2f0b10=_0x127744;_0x49fdf1=0xc8;}else{_0x49fdf1=0xce;}_0x3749c3[_0x4244('0x1b')](_0x49fdf1);return _0x3749c3[_0x4244('0x21')]('Content-Range',_0x5625ed+'-'+_0x2f0b10+'/'+_0x127744)['json'](_0x2de618);}return null;};}function patchUpdates(_0xfc2587){return function(_0x5edfd2){try{jsonpatch[_0x4244('0x22')](_0x5edfd2,_0xfc2587,!![]);}catch(_0x1a2685){return BPromise[_0x4244('0x23')](_0x1a2685);}return _0x5edfd2[_0x4244('0x24')]();};}function saveUpdates(_0x5ec463,_0x6539cf){return function(_0x201f06){if(_0x201f06){return _0x201f06[_0x4244('0x25')](_0x5ec463)['then'](function(_0x386e83){return _0x386e83;});}return null;};}function removeEntity(_0x390f46,_0x12801f){return function(_0x45271a){if(_0x45271a){return _0x45271a[_0x4244('0x26')]()['then'](function(){_0x390f46[_0x4244('0x1b')](0xcc)[_0x4244('0x27')]();});}};}function handleEntityNotFound(_0x136c6c,_0x1a0b34){return function(_0x4f79d1){if(!_0x4f79d1){_0x136c6c[_0x4244('0x28')](0x194);}return _0x4f79d1;};}function handleError(_0x29db24,_0x2e14d1){_0x2e14d1=_0x2e14d1||0x1f4;return function(_0x4b358f){logger['error'](_0x4b358f[_0x4244('0x29')]);if(_0x4b358f['name']){delete _0x4b358f[_0x4244('0x2a')];}_0x29db24[_0x4244('0x1b')](_0x2e14d1)[_0x4244('0x2b')](_0x4b358f);};}exports[_0x4244('0x2c')]=function(_0x35f139,_0x2c66c7){var _0x1b9b6f={},_0x22d2b1={},_0x559545={'count':0x0,'rows':[]};var _0x4f06e7=_[_0x4244('0x2d')](db[_0x4244('0x2e')][_0x4244('0x2f')],function(_0x318d21){return{'name':_0x318d21[_0x4244('0x30')],'type':_0x318d21[_0x4244('0x31')]['key']};});_0x22d2b1['model']=_['map'](_0x4f06e7,_0x4244('0x2a'));_0x22d2b1[_0x4244('0x32')]=_[_0x4244('0x33')](_0x35f139['query']);_0x22d2b1[_0x4244('0x34')]=_[_0x4244('0x35')](_0x22d2b1[_0x4244('0x36')],_0x22d2b1[_0x4244('0x32')]);_0x1b9b6f['attributes']=_[_0x4244('0x35')](_0x22d2b1[_0x4244('0x36')],qs[_0x4244('0x37')](_0x35f139[_0x4244('0x32')][_0x4244('0x37')]));_0x1b9b6f[_0x4244('0x38')]=_0x1b9b6f[_0x4244('0x38')][_0x4244('0x39')]?_0x1b9b6f[_0x4244('0x38')]:_0x22d2b1['model'];if(!_0x35f139[_0x4244('0x32')][_0x4244('0x3a')](_0x4244('0x3b'))){_0x1b9b6f[_0x4244('0x20')]=qs[_0x4244('0x20')](_0x35f139[_0x4244('0x32')][_0x4244('0x20')]);_0x1b9b6f[_0x4244('0x1d')]=qs[_0x4244('0x1d')](_0x35f139[_0x4244('0x32')][_0x4244('0x1d')]);}_0x1b9b6f[_0x4244('0x3c')]=qs[_0x4244('0x3d')](_0x35f139['query'][_0x4244('0x3d')]);_0x1b9b6f[_0x4244('0x3e')]=qs[_0x4244('0x34')](_[_0x4244('0x3f')](_0x35f139[_0x4244('0x32')],_0x22d2b1['filters']),_0x4f06e7);if(_0x35f139[_0x4244('0x32')][_0x4244('0x40')]){_0x1b9b6f[_0x4244('0x3e')]=_['merge'](_0x1b9b6f[_0x4244('0x3e')],{'$or':_[_0x4244('0x2d')](_0x4f06e7,function(_0x439b00){if(_0x439b00['type']!==_0x4244('0x41')){var _0x1dad55={};_0x1dad55[_0x439b00['name']]={'$like':'%'+_0x35f139[_0x4244('0x32')][_0x4244('0x40')]+'%'};return _0x1dad55;}})});}_0x1b9b6f=_['merge']({},_0x1b9b6f,_0x35f139[_0x4244('0x42')]);var _0x23d9c9={'where':_0x1b9b6f[_0x4244('0x3e')]};return db['ZendeskField'][_0x4244('0x1f')](_0x23d9c9)[_0x4244('0x43')](function(_0x2bd32c){_0x559545[_0x4244('0x1f')]=_0x2bd32c;if(_0x35f139['query'][_0x4244('0x44')]){_0x1b9b6f[_0x4244('0x45')]=[{'all':!![]}];}return db['ZendeskField'][_0x4244('0x46')](_0x1b9b6f);})[_0x4244('0x43')](function(_0x3ef801){_0x559545[_0x4244('0x47')]=_0x3ef801;return _0x559545;})[_0x4244('0x43')](respondWithFilteredResult(_0x2c66c7,_0x1b9b6f))['catch'](handleError(_0x2c66c7,null));};exports[_0x4244('0x48')]=function(_0x3bc38f,_0x1b6bbb){var _0x17f962={'raw':!![],'where':{'id':_0x3bc38f[_0x4244('0x49')]['id']}},_0x44c3ed={};_0x44c3ed[_0x4244('0x36')]=_[_0x4244('0x33')](db[_0x4244('0x2e')][_0x4244('0x2f')]);_0x44c3ed['query']=_[_0x4244('0x33')](_0x3bc38f['query']);_0x44c3ed[_0x4244('0x34')]=_[_0x4244('0x35')](_0x44c3ed[_0x4244('0x36')],_0x44c3ed['query']);_0x17f962[_0x4244('0x38')]=_['intersection'](_0x44c3ed[_0x4244('0x36')],qs['fields'](_0x3bc38f[_0x4244('0x32')][_0x4244('0x37')]));_0x17f962[_0x4244('0x38')]=_0x17f962[_0x4244('0x38')][_0x4244('0x39')]?_0x17f962[_0x4244('0x38')]:_0x44c3ed[_0x4244('0x36')];if(_0x3bc38f['query'][_0x4244('0x44')]){_0x17f962[_0x4244('0x45')]=[{'all':!![]}];}_0x17f962=_[_0x4244('0x4a')]({},_0x17f962,_0x3bc38f[_0x4244('0x42')]);return db[_0x4244('0x2e')][_0x4244('0x4b')](_0x17f962)[_0x4244('0x43')](handleEntityNotFound(_0x1b6bbb,null))[_0x4244('0x43')](respondWithResult(_0x1b6bbb,null))[_0x4244('0x4c')](handleError(_0x1b6bbb,null));};exports[_0x4244('0x4d')]=function(_0x300f02,_0x2caa21){return db[_0x4244('0x2e')][_0x4244('0x4d')](_0x300f02[_0x4244('0x4e')],{})[_0x4244('0x43')](respondWithResult(_0x2caa21,0xc9))['catch'](handleError(_0x2caa21,null));};exports[_0x4244('0x25')]=function(_0x2b4251,_0x38462c){if(_0x2b4251['body']['id']){delete _0x2b4251[_0x4244('0x4e')]['id'];}return db[_0x4244('0x2e')][_0x4244('0x4b')]({'where':{'id':_0x2b4251['params']['id']}})[_0x4244('0x43')](handleEntityNotFound(_0x38462c,null))[_0x4244('0x43')](saveUpdates(_0x2b4251[_0x4244('0x4e')],null))[_0x4244('0x43')](respondWithResult(_0x38462c,null))['catch'](handleError(_0x38462c,null));};exports['destroy']=function(_0x18150e,_0x43863e){return db['ZendeskField'][_0x4244('0x4b')]({'where':{'id':_0x18150e[_0x4244('0x49')]['id']}})[_0x4244('0x43')](handleEntityNotFound(_0x43863e,null))[_0x4244('0x43')](removeEntity(_0x43863e,null))[_0x4244('0x4c')](handleError(_0x43863e,null));};
\ No newline at end of file
index 0ab1087..525c72e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5642=['bluebird','request-promise','path','./intZendeskField.attributes','define','ZendeskField','idField','lodash','api','moment'];(function(_0x2feffc,_0x411517){var _0x3aab9a=function(_0x46603a){while(--_0x46603a){_0x2feffc['push'](_0x2feffc['shift']());}};_0x3aab9a(++_0x411517);}(_0x5642,0x7f));var _0x2564=function(_0x341829,_0x544c30){_0x341829=_0x341829-0x0;var _0x44bb2a=_0x5642[_0x341829];return _0x44bb2a;};'use strict';var _=require(_0x2564('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2564('0x1'));var moment=require(_0x2564('0x2'));var BPromise=require(_0x2564('0x3'));var rp=require(_0x2564('0x4'));var fs=require('fs');var path=require(_0x2564('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2564('0x6'));module['exports']=function(_0x21f037,_0x3a7352){return _0x21f037[_0x2564('0x7')](_0x2564('0x8'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0x2564('0x9'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd786=['./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x2a75cd,_0x247962){var _0x2319bc=function(_0x47d0c5){while(--_0x47d0c5){_0x2a75cd['push'](_0x2a75cd['shift']());}};_0x2319bc(++_0x247962);}(_0xd786,0x104));var _0x6d78=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xd786[_0x4154a6];return _0x3b2786;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6d78('0x0'))(_0x6d78('0x1'));var moment=require(_0x6d78('0x2'));var BPromise=require(_0x6d78('0x3'));var rp=require(_0x6d78('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6d78('0x5'));var attributes=require(_0x6d78('0x6'));module[_0x6d78('0x7')]=function(_0xe6eed,_0x15c8c7){return _0xe6eed[_0x6d78('0x8')](_0x6d78('0x9'),attributes,{'tableName':_0x6d78('0xa'),'paranoid':![],'indexes':[{'name':_0x6d78('0xb'),'fields':[_0x6d78('0xc'),_0x6d78('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d544796..53d3509 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3d=['result','catch','lodash','util','moment','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ZendeskField,\x20%s,\x20%s','request\x20sent','error','message','info'];(function(_0x5ec334,_0x20923c){var _0x311347=function(_0x327185){while(--_0x327185){_0x5ec334['push'](_0x5ec334['shift']());}};_0x311347(++_0x20923c);}(_0x8e3d,0x9a));var _0xd8e3=function(_0x50245d,_0x520a37){_0x50245d=_0x50245d-0x0;var _0x9db1ea=_0x8e3d[_0x50245d];return _0x9db1ea;};'use strict';var _=require(_0xd8e3('0x0'));var util=require(_0xd8e3('0x1'));var moment=require(_0xd8e3('0x2'));var BPromise=require('bluebird');var rs=require(_0xd8e3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd8e3('0x4'));var logger=require('../../config/logger')(_0xd8e3('0x5'));var config=require(_0xd8e3('0x6'));var jayson=require(_0xd8e3('0x7'));var client=jayson[_0xd8e3('0x8')][_0xd8e3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1dbdc0,_0xe037a4,_0x25c578){return new BPromise(function(_0x59cb40,_0x55e559){return client[_0xd8e3('0xa')](_0x1dbdc0,_0x25c578)[_0xd8e3('0xb')](function(_0x4efd3c){logger['info'](_0xd8e3('0xc'),_0xe037a4,_0xd8e3('0xd'));logger['debug']('ZendeskField,\x20%s,\x20%s,\x20%s',_0xe037a4,_0xd8e3('0xd'),JSON['stringify'](_0x4efd3c));if(_0x4efd3c[_0xd8e3('0xe')]){if(_0x4efd3c['error']['code']===0x1f4){logger[_0xd8e3('0xe')](_0xd8e3('0xc'),_0xe037a4,_0x4efd3c[_0xd8e3('0xe')][_0xd8e3('0xf')]);return _0x55e559(_0x4efd3c['error'][_0xd8e3('0xf')]);}logger[_0xd8e3('0xe')](_0xd8e3('0xc'),_0xe037a4,_0x4efd3c[_0xd8e3('0xe')][_0xd8e3('0xf')]);return _0x59cb40(_0x4efd3c[_0xd8e3('0xe')][_0xd8e3('0xf')]);}else{logger[_0xd8e3('0x10')](_0xd8e3('0xc'),_0xe037a4,_0xd8e3('0xd'));_0x59cb40(_0x4efd3c[_0xd8e3('0x11')][_0xd8e3('0xf')]);}})[_0xd8e3('0x12')](function(_0x5dae15){logger[_0xd8e3('0xe')]('ZendeskField,\x20%s,\x20%s',_0xe037a4,_0x5dae15);_0x55e559(_0x5dae15);});});}
\ No newline at end of file
+var _0x391d=['../../config/environment','jayson/promise','http','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x4305db,_0x2812a2){var _0x432b2d=function(_0x2dd41b){while(--_0x2dd41b){_0x4305db['push'](_0x4305db['shift']());}};_0x432b2d(++_0x2812a2);}(_0x391d,0x148));var _0xd391=function(_0x9fce47,_0x38c3e6){_0x9fce47=_0x9fce47-0x0;var _0x29e671=_0x391d[_0x9fce47];return _0x29e671;};'use strict';var _=require(_0xd391('0x0'));var util=require('util');var moment=require(_0xd391('0x1'));var BPromise=require(_0xd391('0x2'));var rs=require(_0xd391('0x3'));var fs=require('fs');var Redis=require(_0xd391('0x4'));var db=require(_0xd391('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd391('0x6'))(_0xd391('0x7'));var config=require(_0xd391('0x8'));var jayson=require(_0xd391('0x9'));var client=jayson['client'][_0xd391('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x376a20,_0x20d0ce,_0x376fae){return new BPromise(function(_0x215718,_0x215ecf){return client['request'](_0x376a20,_0x376fae)[_0xd391('0xb')](function(_0x3723e4){logger[_0xd391('0xc')](_0xd391('0xd'),_0x20d0ce,_0xd391('0xe'));logger['debug'](_0xd391('0xf'),_0x20d0ce,_0xd391('0xe'),JSON[_0xd391('0x10')](_0x3723e4));if(_0x3723e4[_0xd391('0x11')]){if(_0x3723e4[_0xd391('0x11')][_0xd391('0x12')]===0x1f4){logger[_0xd391('0x11')](_0xd391('0xd'),_0x20d0ce,_0x3723e4[_0xd391('0x11')]['message']);return _0x215ecf(_0x3723e4[_0xd391('0x11')][_0xd391('0x13')]);}logger['error'](_0xd391('0xd'),_0x20d0ce,_0x3723e4[_0xd391('0x11')][_0xd391('0x13')]);return _0x215718(_0x3723e4[_0xd391('0x11')][_0xd391('0x13')]);}else{logger[_0xd391('0xc')](_0xd391('0xd'),_0x20d0ce,_0xd391('0xe'));_0x215718(_0x3723e4[_0xd391('0x14')][_0xd391('0x13')]);}})['catch'](function(_0x6b4a13){logger[_0xd391('0x11')](_0xd391('0xd'),_0x20d0ce,_0x6b4a13);_0x215ecf(_0x6b4a13);});});}
\ No newline at end of file
index 09d3b0d..13e5c07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bdb=['./intZohoAccount.controller','get','index','/:id','isAuthenticated','/:id/configurations','getConfigurations','post','addConfiguration','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x5682e3,_0x4f4b1e){var _0x2328b2=function(_0x5961ca){while(--_0x5961ca){_0x5682e3['push'](_0x5682e3['shift']());}};_0x2328b2(++_0x4f4b1e);}(_0x6bdb,0xa5));var _0xb6bd=function(_0x5dcb65,_0x60a863){_0x5dcb65=_0x5dcb65-0x0;var _0x3ae627=_0x6bdb[_0x5dcb65];return _0x3ae627;};'use strict';var multer=require(_0xb6bd('0x0'));var util=require('util');var path=require(_0xb6bd('0x1'));var timeout=require(_0xb6bd('0x2'));var express=require('express');var router=express[_0xb6bd('0x3')]();var fs_extra=require(_0xb6bd('0x4'));var auth=require(_0xb6bd('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb6bd('0x6'));router[_0xb6bd('0x7')]('/',auth['isAuthenticated'](),controller[_0xb6bd('0x8')]);router['get'](_0xb6bd('0x9'),auth[_0xb6bd('0xa')](),controller['show']);router[_0xb6bd('0x7')](_0xb6bd('0xb'),auth[_0xb6bd('0xa')](),controller[_0xb6bd('0xc')]);router[_0xb6bd('0x7')]('/:id/fields',auth[_0xb6bd('0xa')](),controller['getFields']);router[_0xb6bd('0xd')]('/',auth[_0xb6bd('0xa')](),controller['create']);router[_0xb6bd('0xd')]('/:id/configurations',auth[_0xb6bd('0xa')](),controller[_0xb6bd('0xe')]);router['put']('/:id',auth[_0xb6bd('0xa')](),controller[_0xb6bd('0xf')]);router[_0xb6bd('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xb6bd('0x11')]);module[_0xb6bd('0x12')]=router;
\ No newline at end of file
+var _0xce79=['/:id/configurations','addConfiguration','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','/:id','getConfigurations','/:id/fields','getFields','post','create'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0xce79,0xc2));var _0x9ce7=function(_0x188d31,_0x576e87){_0x188d31=_0x188d31-0x0;var _0x30ed33=_0xce79[_0x188d31];return _0x30ed33;};'use strict';var multer=require(_0x9ce7('0x0'));var util=require(_0x9ce7('0x1'));var path=require('path');var timeout=require(_0x9ce7('0x2'));var express=require(_0x9ce7('0x3'));var router=express[_0x9ce7('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9ce7('0x5'));var controller=require(_0x9ce7('0x6'));router[_0x9ce7('0x7')]('/',auth[_0x9ce7('0x8')](),controller[_0x9ce7('0x9')]);router['get'](_0x9ce7('0xa'),auth[_0x9ce7('0x8')](),controller['show']);router['get']('/:id/configurations',auth[_0x9ce7('0x8')](),controller[_0x9ce7('0xb')]);router[_0x9ce7('0x7')](_0x9ce7('0xc'),auth['isAuthenticated'](),controller[_0x9ce7('0xd')]);router[_0x9ce7('0xe')]('/',auth['isAuthenticated'](),controller[_0x9ce7('0xf')]);router[_0x9ce7('0xe')](_0x9ce7('0x10'),auth[_0x9ce7('0x8')](),controller[_0x9ce7('0x11')]);router['put'](_0x9ce7('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x9ce7('0x12')](_0x9ce7('0xa'),auth[_0x9ce7('0x8')](),controller[_0x9ce7('0x13')]);module[_0x9ce7('0x14')]=router;
\ No newline at end of file
index 9a4d8ea..280fe00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['STRING','sequelize','exports'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0xda55,0x6d));var _0x5da5=function(_0x2479f7,_0x126ecc){_0x2479f7=_0x2479f7-0x0;var _0x420f4b=_0xda55[_0x2479f7];return _0x420f4b;};'use strict';var Sequelize=require(_0x5da5('0x0'));module[_0x5da5('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x5da5('0x2')]},'zone':{'type':Sequelize[_0x5da5('0x2')]},'clientId':{'type':Sequelize[_0x5da5('0x2')]},'clientSecret':{'type':Sequelize[_0x5da5('0x2')]},'serverUrl':{'type':Sequelize[_0x5da5('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x5da5('0x2')]}};
\ No newline at end of file
+var _0x41bb=['exports','STRING','sequelize'];(function(_0x96ad7d,_0x1017ba){var _0x32d63a=function(_0xb47ad9){while(--_0xb47ad9){_0x96ad7d['push'](_0x96ad7d['shift']());}};_0x32d63a(++_0x1017ba);}(_0x41bb,0xc5));var _0xb41b=function(_0x5b9398,_0x4e5e78){_0x5b9398=_0x5b9398-0x0;var _0x54ccab=_0x41bb[_0x5b9398];return _0x54ccab;};'use strict';var Sequelize=require(_0xb41b('0x0'));module[_0xb41b('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb41b('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0xb41b('0x2')]},'clientId':{'type':Sequelize[_0xb41b('0x2')]},'clientSecret':{'type':Sequelize[_0xb41b('0x2')]},'serverUrl':{'type':Sequelize[_0xb41b('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0xb41b('0x2')]}};
\ No newline at end of file
index a4f092c..80f54d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c41=['sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','find','create','body','findOne','ZohoConfiguration','getConfigurations','addConfiguration','getSubjects','channel','getDescriptions','ZohoField','Subjects','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','zone','serverUrl','code','zoho.eu','com','slice','substring','lastIndexOf','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','error','message','Description','WhoId','Call_Duration','Call_Start_Time','includes','api_name','system_mandatory','custom_field','data_type','picklist','pick_list_values','test','getFields,\x20%s,\x20%s,\x20%s','stringify','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','count','set','apply','reject','save','update','then','destroy','stack','name','send','index','ZohoAccount','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order'];(function(_0xd9a7b1,_0x3b9a21){var _0x12c70a=function(_0x484c6e){while(--_0x484c6e){_0xd9a7b1['push'](_0xd9a7b1['shift']());}};_0x12c70a(++_0x3b9a21);}(_0x7c41,0xc8));var _0x17c4=function(_0x4aeede,_0x1415b5){_0x4aeede=_0x4aeede-0x0;var _0x395439=_0x7c41[_0x4aeede];return _0x395439;};'use strict';var emlformat=require(_0x17c4('0x0'));var rimraf=require(_0x17c4('0x1'));var zipdir=require(_0x17c4('0x2'));var jsonpatch=require(_0x17c4('0x3'));var rp=require(_0x17c4('0x4'));var moment=require(_0x17c4('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x17c4('0x6'));var util=require('util');var path=require(_0x17c4('0x7'));var sox=require(_0x17c4('0x8'));var csv=require(_0x17c4('0x9'));var ejs=require(_0x17c4('0xa'));var fs=require('fs');var fs_extra=require(_0x17c4('0xb'));var _=require(_0x17c4('0xc'));var squel=require(_0x17c4('0xd'));var crypto=require(_0x17c4('0xe'));var jsforce=require(_0x17c4('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x17c4('0x9'));var querystring=require(_0x17c4('0x10'));var Papa=require(_0x17c4('0x11'));var Redis=require(_0x17c4('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x17c4('0x13'));var as=require(_0x17c4('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x17c4('0x15'))(_0x17c4('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x17c4('0x17'))['db'];var integrations=require(_0x17c4('0x18'));function respondWithStatusCode(_0x1de1fa,_0x3bd08e){_0x3bd08e=_0x3bd08e||0xcc;return function(_0x48c2ff){if(_0x48c2ff){return _0x1de1fa[_0x17c4('0x19')](_0x3bd08e);}return _0x1de1fa[_0x17c4('0x1a')](_0x3bd08e)[_0x17c4('0x1b')]();};}function respondWithResult(_0x58efc9,_0x534917){_0x534917=_0x534917||0xc8;return function(_0x7f6d2d){if(_0x7f6d2d){return _0x58efc9[_0x17c4('0x1a')](_0x534917)[_0x17c4('0x1c')](_0x7f6d2d);}};}function respondWithFilteredResult(_0x3209bc,_0x2023fd){return function(_0xf66c0a){if(_0xf66c0a){var _0x462cc7=typeof _0x2023fd[_0x17c4('0x1d')]==='undefined'&&typeof _0x2023fd[_0x17c4('0x1e')]==='undefined';var _0x2e832b=_0xf66c0a['count'];var _0x42f354=_0x462cc7?0x0:_0x2023fd[_0x17c4('0x1d')];var _0x12e57e=_0x462cc7?_0xf66c0a[_0x17c4('0x1f')]:_0x2023fd[_0x17c4('0x1d')]+_0x2023fd[_0x17c4('0x1e')];var _0x120b46;if(_0x12e57e>=_0x2e832b){_0x12e57e=_0x2e832b;_0x120b46=0xc8;}else{_0x120b46=0xce;}_0x3209bc['status'](_0x120b46);return _0x3209bc[_0x17c4('0x20')]('Content-Range',_0x42f354+'-'+_0x12e57e+'/'+_0x2e832b)[_0x17c4('0x1c')](_0xf66c0a);}return null;};}function patchUpdates(_0x45c709){return function(_0x4e55a1){try{jsonpatch[_0x17c4('0x21')](_0x4e55a1,_0x45c709,!![]);}catch(_0x254c44){return BPromise[_0x17c4('0x22')](_0x254c44);}return _0x4e55a1[_0x17c4('0x23')]();};}function saveUpdates(_0x41af65,_0x5f2c0e){return function(_0x2da7b6){if(_0x2da7b6){return _0x2da7b6[_0x17c4('0x24')](_0x41af65)[_0x17c4('0x25')](function(_0x42f2d8){return _0x42f2d8;});}return null;};}function removeEntity(_0x32020a,_0x496bc6){return function(_0x578837){if(_0x578837){return _0x578837[_0x17c4('0x26')]()[_0x17c4('0x25')](function(){_0x32020a[_0x17c4('0x1a')](0xcc)[_0x17c4('0x1b')]();});}};}function handleEntityNotFound(_0x3fd896,_0x5032d5){return function(_0x441c0e){if(!_0x441c0e){_0x3fd896[_0x17c4('0x19')](0x194);}return _0x441c0e;};}function handleError(_0xfa9dde,_0x303968){_0x303968=_0x303968||0x1f4;return function(_0x2d39e1){logger['error'](_0x2d39e1[_0x17c4('0x27')]);if(_0x2d39e1[_0x17c4('0x28')]){delete _0x2d39e1[_0x17c4('0x28')];}_0xfa9dde[_0x17c4('0x1a')](_0x303968)[_0x17c4('0x29')](_0x2d39e1);};}exports[_0x17c4('0x2a')]=function(_0x19920e,_0x2166f4){var _0x16d6c2={},_0x3510b1={},_0x57608e={'count':0x0,'rows':[]};var _0x3eb9ac=_['map'](db[_0x17c4('0x2b')][_0x17c4('0x2c')],function(_0x46afdb){return{'name':_0x46afdb[_0x17c4('0x2d')],'type':_0x46afdb[_0x17c4('0x2e')][_0x17c4('0x2f')]};});_0x3510b1['model']=_[_0x17c4('0x30')](_0x3eb9ac,'name');_0x3510b1[_0x17c4('0x31')]=_[_0x17c4('0x32')](_0x19920e[_0x17c4('0x31')]);_0x3510b1[_0x17c4('0x33')]=_[_0x17c4('0x34')](_0x3510b1['model'],_0x3510b1[_0x17c4('0x31')]);_0x16d6c2[_0x17c4('0x35')]=_[_0x17c4('0x34')](_0x3510b1[_0x17c4('0x36')],qs['fields'](_0x19920e[_0x17c4('0x31')][_0x17c4('0x37')]));_0x16d6c2['attributes']=_0x16d6c2[_0x17c4('0x35')][_0x17c4('0x38')]?_0x16d6c2[_0x17c4('0x35')]:_0x3510b1[_0x17c4('0x36')];if(!_0x19920e[_0x17c4('0x31')][_0x17c4('0x39')](_0x17c4('0x3a'))){_0x16d6c2[_0x17c4('0x1e')]=qs[_0x17c4('0x1e')](_0x19920e[_0x17c4('0x31')][_0x17c4('0x1e')]);_0x16d6c2[_0x17c4('0x1d')]=qs[_0x17c4('0x1d')](_0x19920e['query']['offset']);}_0x16d6c2[_0x17c4('0x3b')]=qs[_0x17c4('0x3c')](_0x19920e[_0x17c4('0x31')][_0x17c4('0x3c')]);_0x16d6c2[_0x17c4('0x3d')]=qs[_0x17c4('0x33')](_[_0x17c4('0x3e')](_0x19920e[_0x17c4('0x31')],_0x3510b1[_0x17c4('0x33')]),_0x3eb9ac);if(_0x19920e[_0x17c4('0x31')][_0x17c4('0x3f')]){_0x16d6c2[_0x17c4('0x3d')]=_[_0x17c4('0x40')](_0x16d6c2['where'],{'$or':_[_0x17c4('0x30')](_0x3eb9ac,function(_0x3d1d12){if(_0x3d1d12[_0x17c4('0x2e')]!==_0x17c4('0x41')){var _0x46d005={};_0x46d005[_0x3d1d12[_0x17c4('0x28')]]={'$like':'%'+_0x19920e[_0x17c4('0x31')]['filter']+'%'};return _0x46d005;}})});}_0x16d6c2=_[_0x17c4('0x40')]({},_0x16d6c2,_0x19920e[_0x17c4('0x42')]);var _0x18b945={'where':_0x16d6c2[_0x17c4('0x3d')]};return db['ZohoAccount'][_0x17c4('0x1f')](_0x18b945)[_0x17c4('0x25')](function(_0x2b014d){_0x57608e[_0x17c4('0x1f')]=_0x2b014d;if(_0x19920e[_0x17c4('0x31')][_0x17c4('0x43')]){_0x16d6c2['include']=[{'all':!![]}];}return db[_0x17c4('0x2b')][_0x17c4('0x44')](_0x16d6c2);})[_0x17c4('0x25')](function(_0x3b7c4c){_0x57608e[_0x17c4('0x45')]=_0x3b7c4c;return _0x57608e;})[_0x17c4('0x25')](respondWithFilteredResult(_0x2166f4,_0x16d6c2))[_0x17c4('0x46')](handleError(_0x2166f4,null));};exports[_0x17c4('0x47')]=function(_0x2e2766,_0x174014){var _0xbda00f={'raw':![],'where':{'id':_0x2e2766[_0x17c4('0x48')]['id']}},_0x41c519={};_0x41c519['model']=_[_0x17c4('0x32')](db[_0x17c4('0x2b')][_0x17c4('0x2c')]);_0x41c519['query']=_[_0x17c4('0x32')](_0x2e2766[_0x17c4('0x31')]);_0x41c519[_0x17c4('0x33')]=_[_0x17c4('0x34')](_0x41c519[_0x17c4('0x36')],_0x41c519[_0x17c4('0x31')]);_0xbda00f[_0x17c4('0x35')]=_[_0x17c4('0x34')](_0x41c519[_0x17c4('0x36')],qs[_0x17c4('0x37')](_0x2e2766['query']['fields']));_0xbda00f[_0x17c4('0x35')]=_0xbda00f[_0x17c4('0x35')][_0x17c4('0x38')]?_0xbda00f[_0x17c4('0x35')]:_0x41c519[_0x17c4('0x36')];if(_0x2e2766[_0x17c4('0x31')][_0x17c4('0x43')]){_0xbda00f['include']=[{'all':!![]}];}_0xbda00f=_[_0x17c4('0x40')]({},_0xbda00f,_0x2e2766[_0x17c4('0x42')]);return db[_0x17c4('0x2b')][_0x17c4('0x49')](_0xbda00f)[_0x17c4('0x25')](handleEntityNotFound(_0x174014,null))[_0x17c4('0x25')](respondWithResult(_0x174014,null))[_0x17c4('0x46')](handleError(_0x174014,null));};exports[_0x17c4('0x4a')]=function(_0x27a0b0,_0x109db3){return db[_0x17c4('0x2b')][_0x17c4('0x4a')](_0x27a0b0[_0x17c4('0x4b')],{})[_0x17c4('0x25')](respondWithResult(_0x109db3,0xc9))[_0x17c4('0x46')](handleError(_0x109db3,null));};exports[_0x17c4('0x24')]=function(_0x57ad92,_0x46c166){if(_0x57ad92['body']['id']){delete _0x57ad92['body']['id'];}return db[_0x17c4('0x2b')][_0x17c4('0x49')]({'where':{'id':_0x57ad92[_0x17c4('0x48')]['id']}})['then'](handleEntityNotFound(_0x46c166,null))[_0x17c4('0x25')](saveUpdates(_0x57ad92[_0x17c4('0x4b')],null))[_0x17c4('0x25')](respondWithResult(_0x46c166,null))[_0x17c4('0x46')](handleError(_0x46c166,null));};exports[_0x17c4('0x26')]=function(_0x21f89e,_0x453bd3){return db[_0x17c4('0x2b')][_0x17c4('0x49')]({'where':{'id':_0x21f89e[_0x17c4('0x48')]['id']}})[_0x17c4('0x25')](handleEntityNotFound(_0x453bd3,null))[_0x17c4('0x25')](removeEntity(_0x453bd3,null))['catch'](handleError(_0x453bd3,null));};exports['getConfigurations']=function(_0x1a319c,_0x55e0c5,_0x4bd41a){var _0x408139={};var _0x4e3e12={};var _0x5c6ec6;var _0x2ea285;return db['ZohoAccount'][_0x17c4('0x4c')]({'where':{'id':_0x1a319c['params']['id']}})[_0x17c4('0x25')](handleEntityNotFound(_0x55e0c5,null))['then'](function(_0x53377e){if(_0x53377e){_0x5c6ec6=_0x53377e;_0x4e3e12['model']=_[_0x17c4('0x32')](db[_0x17c4('0x4d')][_0x17c4('0x2c')]);_0x4e3e12['query']=_[_0x17c4('0x32')](_0x1a319c[_0x17c4('0x31')]);_0x4e3e12[_0x17c4('0x33')]=_[_0x17c4('0x34')](_0x4e3e12['model'],_0x4e3e12[_0x17c4('0x31')]);_0x408139[_0x17c4('0x35')]=_[_0x17c4('0x34')](_0x4e3e12[_0x17c4('0x36')],qs[_0x17c4('0x37')](_0x1a319c['query']['fields']));_0x408139[_0x17c4('0x35')]=_0x408139[_0x17c4('0x35')][_0x17c4('0x38')]?_0x408139['attributes']:_0x4e3e12[_0x17c4('0x36')];_0x408139['order']=qs['sort'](_0x1a319c[_0x17c4('0x31')][_0x17c4('0x3c')]);_0x408139['where']=qs['filters'](_[_0x17c4('0x3e')](_0x1a319c[_0x17c4('0x31')],_0x4e3e12[_0x17c4('0x33')]));if(_0x1a319c[_0x17c4('0x31')][_0x17c4('0x3f')]){_0x408139[_0x17c4('0x3d')]=_['merge'](_0x408139[_0x17c4('0x3d')],{'$or':_[_0x17c4('0x30')](_0x408139['attributes'],function(_0x2b222b){var _0x18cc01={};_0x18cc01[_0x2b222b]={'$like':'%'+_0x1a319c[_0x17c4('0x31')]['filter']+'%'};return _0x18cc01;})});}_0x408139=_[_0x17c4('0x40')]({},_0x408139,_0x1a319c[_0x17c4('0x42')]);return _0x5c6ec6[_0x17c4('0x4e')](_0x408139);}})[_0x17c4('0x25')](function(_0x194a13){if(_0x194a13){_0x2ea285=_0x194a13['length'];if(!_0x1a319c[_0x17c4('0x31')][_0x17c4('0x39')](_0x17c4('0x3a'))){_0x408139['limit']=qs['limit'](_0x1a319c[_0x17c4('0x31')][_0x17c4('0x1e')]);_0x408139[_0x17c4('0x1d')]=qs[_0x17c4('0x1d')](_0x1a319c[_0x17c4('0x31')][_0x17c4('0x1d')]);}return _0x5c6ec6['getConfigurations'](_0x408139);}})[_0x17c4('0x25')](function(_0x456953){if(_0x456953){return _0x456953?{'count':_0x2ea285,'rows':_0x456953}:null;}})[_0x17c4('0x25')](respondWithResult(_0x55e0c5,null))['catch'](handleError(_0x55e0c5,null));};exports[_0x17c4('0x4f')]=function(_0xc28405,_0x20fb20,_0x262c77){if(_0xc28405[_0x17c4('0x4b')]['id']){delete _0xc28405['body']['id'];}return db[_0x17c4('0x2b')]['findOne']({'where':{'id':_0xc28405[_0x17c4('0x48')]['id']}})[_0x17c4('0x25')](handleEntityNotFound(_0x20fb20,null))[_0x17c4('0x25')](function(_0x3c0e2b){if(_0x3c0e2b){_0xc28405['body']['AccountId']=_0x3c0e2b['id'];_0xc28405[_0x17c4('0x4b')]['Subjects']=integrations[_0x17c4('0x50')](_0xc28405[_0x17c4('0x4b')][_0x17c4('0x51')],_0xc28405['body'][_0x17c4('0x2e')]);_0xc28405['body']['Descriptions']=integrations[_0x17c4('0x52')](_0xc28405['body']['channel'],_0xc28405['body'][_0x17c4('0x2e')]);return db[_0x17c4('0x4d')][_0x17c4('0x4a')](_0xc28405[_0x17c4('0x4b')],{'include':[{'model':db[_0x17c4('0x53')],'as':_0x17c4('0x54')},{'model':db['ZohoField'],'as':'Descriptions'}]});}return null;})[_0x17c4('0x25')](respondWithResult(_0x20fb20,null))[_0x17c4('0x46')](handleError(_0x20fb20,null));};function getAccessToken(_0x4891fe){return new Promise(function(_0x5f07bb,_0x31148a){var _0x626734;switch(_0x4891fe['zone']){case'US':_0x626734=_0x17c4('0x55');break;case'AU':_0x626734=_0x17c4('0x56');break;case'EU':_0x626734=_0x17c4('0x57');break;case'IN':_0x626734='https://accounts.zoho.in';break;case'CN':_0x626734=_0x17c4('0x58');break;default:_0x626734='https://accounts.zoho.eu';break;}var _0x196182={'method':_0x17c4('0x59'),'uri':_0x626734+_0x17c4('0x5a'),'qs':{'refresh_token':_0x4891fe[_0x17c4('0x5b')],'client_id':_0x4891fe[_0x17c4('0x5c')],'client_secret':_0x4891fe[_0x17c4('0x5d')],'grant_type':_0x17c4('0x5e')},'json':!![]};return rp(_0x196182)[_0x17c4('0x25')](function(_0x3afd66){if(_0x3afd66[_0x17c4('0x5f')]){_0x5f07bb(_0x3afd66['access_token']);}else{_0x31148a(_0x17c4('0x60'));}})[_0x17c4('0x46')](function(_0x822d1b){_0x31148a(_0x822d1b);});});}exports[_0x17c4('0x61')]=function(_0x1395a0,_0xbee1e5,_0x27f21c){var _0x3bcc18,_0x143ca1,_0x231f0a,_0x253cb0,_0x1bbfda;return db[_0x17c4('0x2b')][_0x17c4('0x4c')]({'where':{'id':_0x1395a0[_0x17c4('0x48')]['id']},'attributes':['id',_0x17c4('0x62'),_0x17c4('0x63'),'clientId',_0x17c4('0x5d'),_0x17c4('0x64'),_0x17c4('0x65'),'refreshToken']})[_0x17c4('0x25')](handleEntityNotFound(_0xbee1e5,null))[_0x17c4('0x25')](function(_0x590ac7){_0x1bbfda=_0x590ac7;_0x3bcc18=_0x1bbfda[_0x17c4('0x62')];_0x143ca1=_0x3bcc18===_0x17c4('0x66')?'eu':_0x17c4('0x67');_0x231f0a=_0x1bbfda[_0x17c4('0x64')];var _0xcd5485=_0x231f0a[_0x17c4('0x68')](-0x1);if(_0xcd5485==='/'||_0xcd5485==='\x5c'||_0xcd5485===':'){_0x231f0a=_0x231f0a[_0x17c4('0x69')](0x0,_0x231f0a[_0x17c4('0x6a')](_0xcd5485));}if(!_0x1bbfda['refreshToken']){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x1bbfda);})[_0x17c4('0x25')](function(_0x3a4ae4){if(_0x3a4ae4){return rp({'method':_0x17c4('0x6b'),'uri':util[_0x17c4('0x6c')](_0x17c4('0x6d'),_0x143ca1),'qs':{'module':_0x17c4('0x6e')},'headers':{'Authorization':_0x17c4('0x6f')+_0x3a4ae4},'json':!![]});}})[_0x17c4('0x25')](function(_0x1ea905){if(_0x1ea905){if(_0x1ea905[_0x17c4('0x70')]&&_0x1ea905[_0x17c4('0x70')][_0x17c4('0x71')]){throw new Error(_0x1ea905['response'][_0x17c4('0x71')][_0x17c4('0x72')]);}var _0x19ecc1=[];var _0xd0de=[];var _0x551700=['Owner','Subject',_0x17c4('0x73'),_0x17c4('0x74'),_0x17c4('0x75'),'Call_Result',_0x17c4('0x76'),'Call_Type'];_0xd0de=_['remove'](_0x1ea905[_0x17c4('0x37')],function(_0x2be156){return _0x551700[_0x17c4('0x77')](_0x2be156[_0x17c4('0x78')]);});for(var _0x4e524c=0x0;_0x4e524c<_0xd0de['length'];_0x4e524c++){if(_0xd0de[_0x4e524c][_0x17c4('0x79')]===![]){_0x19ecc1['push']({'id':_0xd0de[_0x4e524c]['id'],'name':_0xd0de[_0x4e524c]['display_label'],'custom':_0xd0de[_0x4e524c][_0x17c4('0x7a')],'options':_0xd0de[_0x4e524c][_0x17c4('0x7b')]===_0x17c4('0x7c')&&_0xd0de[_0x4e524c][_0x17c4('0x7d')][_0x17c4('0x38')]>-0x1?_[_0x17c4('0x30')](_0xd0de[_0x4e524c]['pick_list_values'],function(_0x1ba4e4){return{'name':_0x1ba4e4,'value':_0x1ba4e4};}):[]});}}return{'count':_0x19ecc1[_0x17c4('0x38')],'rows':_0x19ecc1};}else{return{'count':0x0,'rows':[]};}})[_0x17c4('0x25')](respondWithResult(_0xbee1e5,null))[_0x17c4('0x46')](function(_0x563498){var _0x4960d4=_0x1395a0[_0x17c4('0x31')][_0x17c4('0x7e')]?0x1f4:_0x563498['statusCode']||0x1f4;logger[_0x17c4('0x71')](_0x17c4('0x7f'),_0x17c4('0x61'),_0x4960d4,JSON[_0x17c4('0x80')](_0x563498));delete _0x563498[_0x17c4('0x28')];if(_0x4960d4===0x191){_0x4960d4=0x190;}_0xbee1e5[_0x17c4('0x1a')](_0x4960d4)[_0x17c4('0x29')](_0x1395a0[_0x17c4('0x31')][_0x17c4('0x7e')]?{'message':'Wrong\x20credentials','statusCode':_0x563498[_0x17c4('0x81')]}:_0x563498);});};
\ No newline at end of file
+var _0x7bcb=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','pick','filter','where','merge','ZohoAccount','findAll','rows','catch','params','includeAll','include','find','body','findOne','ZohoConfiguration','order','options','getConfigurations','addConfiguration','Subjects','getSubjects','Descriptions','getDescriptions','channel','create','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','clientId','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','zone','clientSecret','serverUrl','code','zoho.eu','com','substring','lastIndexOf','refreshToken','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','custom_field','data_type','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x7bcb,0x179));var _0xb7bc=function(_0x329cde,_0x1d23b7){_0x329cde=_0x329cde-0x0;var _0x29cb1c=_0x7bcb[_0x329cde];return _0x29cb1c;};'use strict';var emlformat=require(_0xb7bc('0x0'));var rimraf=require(_0xb7bc('0x1'));var zipdir=require(_0xb7bc('0x2'));var jsonpatch=require(_0xb7bc('0x3'));var rp=require('request-promise');var moment=require(_0xb7bc('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xb7bc('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb7bc('0x6'));var _=require(_0xb7bc('0x7'));var squel=require(_0xb7bc('0x8'));var crypto=require(_0xb7bc('0x9'));var jsforce=require(_0xb7bc('0xa'));var deskjs=require(_0xb7bc('0xb'));var toCsv=require(_0xb7bc('0x5'));var querystring=require(_0xb7bc('0xc'));var Papa=require(_0xb7bc('0xd'));var Redis=require(_0xb7bc('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xb7bc('0xf'));var as=require(_0xb7bc('0x10'));var hardwareService=require(_0xb7bc('0x11'));var logger=require(_0xb7bc('0x12'))(_0xb7bc('0x13'));var utils=require(_0xb7bc('0x14'));var config=require(_0xb7bc('0x15'));var licenseUtil=require(_0xb7bc('0x16'));var db=require(_0xb7bc('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5a96f6,_0x1e08e2){_0x1e08e2=_0x1e08e2||0xcc;return function(_0x1651d4){if(_0x1651d4){return _0x5a96f6[_0xb7bc('0x18')](_0x1e08e2);}return _0x5a96f6[_0xb7bc('0x19')](_0x1e08e2)[_0xb7bc('0x1a')]();};}function respondWithResult(_0x319038,_0x979d5a){_0x979d5a=_0x979d5a||0xc8;return function(_0x3e82ab){if(_0x3e82ab){return _0x319038[_0xb7bc('0x19')](_0x979d5a)[_0xb7bc('0x1b')](_0x3e82ab);}};}function respondWithFilteredResult(_0x3caa34,_0x9a2665){return function(_0x5d7831){if(_0x5d7831){var _0x3c209c=typeof _0x9a2665['offset']==='undefined'&&typeof _0x9a2665[_0xb7bc('0x1c')]===_0xb7bc('0x1d');var _0x53fed5=_0x5d7831[_0xb7bc('0x1e')];var _0x4a9f7b=_0x3c209c?0x0:_0x9a2665['offset'];var _0x56169b=_0x3c209c?_0x5d7831[_0xb7bc('0x1e')]:_0x9a2665[_0xb7bc('0x1f')]+_0x9a2665['limit'];var _0x41051e;if(_0x56169b>=_0x53fed5){_0x56169b=_0x53fed5;_0x41051e=0xc8;}else{_0x41051e=0xce;}_0x3caa34[_0xb7bc('0x19')](_0x41051e);return _0x3caa34[_0xb7bc('0x20')](_0xb7bc('0x21'),_0x4a9f7b+'-'+_0x56169b+'/'+_0x53fed5)[_0xb7bc('0x1b')](_0x5d7831);}return null;};}function patchUpdates(_0x55bb8e){return function(_0x562890){try{jsonpatch['apply'](_0x562890,_0x55bb8e,!![]);}catch(_0x355fb1){return BPromise[_0xb7bc('0x22')](_0x355fb1);}return _0x562890[_0xb7bc('0x23')]();};}function saveUpdates(_0x1ca689,_0x592494){return function(_0x5a121c){if(_0x5a121c){return _0x5a121c[_0xb7bc('0x24')](_0x1ca689)[_0xb7bc('0x25')](function(_0x25293e){return _0x25293e;});}return null;};}function removeEntity(_0x8c62da,_0x22cb15){return function(_0x1cc036){if(_0x1cc036){return _0x1cc036[_0xb7bc('0x26')]()[_0xb7bc('0x25')](function(){_0x8c62da[_0xb7bc('0x19')](0xcc)[_0xb7bc('0x1a')]();});}};}function handleEntityNotFound(_0x589974,_0x4b75e2){return function(_0x45a488){if(!_0x45a488){_0x589974[_0xb7bc('0x18')](0x194);}return _0x45a488;};}function handleError(_0x276e7d,_0x55088f){_0x55088f=_0x55088f||0x1f4;return function(_0x5c0325){logger[_0xb7bc('0x27')](_0x5c0325[_0xb7bc('0x28')]);if(_0x5c0325[_0xb7bc('0x29')]){delete _0x5c0325[_0xb7bc('0x29')];}_0x276e7d[_0xb7bc('0x19')](_0x55088f)[_0xb7bc('0x2a')](_0x5c0325);};}exports[_0xb7bc('0x2b')]=function(_0xf99f6b,_0x341897){var _0x3c2c59={},_0x405385={},_0x214a8b={'count':0x0,'rows':[]};var _0xa91274=_[_0xb7bc('0x2c')](db['ZohoAccount'][_0xb7bc('0x2d')],function(_0x598fe9){return{'name':_0x598fe9[_0xb7bc('0x2e')],'type':_0x598fe9[_0xb7bc('0x2f')][_0xb7bc('0x30')]};});_0x405385[_0xb7bc('0x31')]=_['map'](_0xa91274,'name');_0x405385[_0xb7bc('0x32')]=_[_0xb7bc('0x33')](_0xf99f6b[_0xb7bc('0x32')]);_0x405385[_0xb7bc('0x34')]=_[_0xb7bc('0x35')](_0x405385[_0xb7bc('0x31')],_0x405385['query']);_0x3c2c59[_0xb7bc('0x36')]=_['intersection'](_0x405385['model'],qs[_0xb7bc('0x37')](_0xf99f6b[_0xb7bc('0x32')][_0xb7bc('0x37')]));_0x3c2c59[_0xb7bc('0x36')]=_0x3c2c59[_0xb7bc('0x36')][_0xb7bc('0x38')]?_0x3c2c59[_0xb7bc('0x36')]:_0x405385['model'];if(!_0xf99f6b['query'][_0xb7bc('0x39')]('nolimit')){_0x3c2c59['limit']=qs['limit'](_0xf99f6b[_0xb7bc('0x32')][_0xb7bc('0x1c')]);_0x3c2c59[_0xb7bc('0x1f')]=qs[_0xb7bc('0x1f')](_0xf99f6b[_0xb7bc('0x32')][_0xb7bc('0x1f')]);}_0x3c2c59['order']=qs['sort'](_0xf99f6b['query'][_0xb7bc('0x3a')]);_0x3c2c59['where']=qs[_0xb7bc('0x34')](_[_0xb7bc('0x3b')](_0xf99f6b[_0xb7bc('0x32')],_0x405385[_0xb7bc('0x34')]),_0xa91274);if(_0xf99f6b[_0xb7bc('0x32')][_0xb7bc('0x3c')]){_0x3c2c59[_0xb7bc('0x3d')]=_['merge'](_0x3c2c59[_0xb7bc('0x3d')],{'$or':_[_0xb7bc('0x2c')](_0xa91274,function(_0x1b377b){if(_0x1b377b[_0xb7bc('0x2f')]!=='VIRTUAL'){var _0x2a0c18={};_0x2a0c18[_0x1b377b[_0xb7bc('0x29')]]={'$like':'%'+_0xf99f6b[_0xb7bc('0x32')][_0xb7bc('0x3c')]+'%'};return _0x2a0c18;}})});}_0x3c2c59=_[_0xb7bc('0x3e')]({},_0x3c2c59,_0xf99f6b['options']);var _0x2ed39c={'where':_0x3c2c59['where']};return db[_0xb7bc('0x3f')]['count'](_0x2ed39c)[_0xb7bc('0x25')](function(_0x2eb2d0){_0x214a8b[_0xb7bc('0x1e')]=_0x2eb2d0;if(_0xf99f6b[_0xb7bc('0x32')]['includeAll']){_0x3c2c59['include']=[{'all':!![]}];}return db[_0xb7bc('0x3f')][_0xb7bc('0x40')](_0x3c2c59);})[_0xb7bc('0x25')](function(_0x5c9c73){_0x214a8b[_0xb7bc('0x41')]=_0x5c9c73;return _0x214a8b;})[_0xb7bc('0x25')](respondWithFilteredResult(_0x341897,_0x3c2c59))[_0xb7bc('0x42')](handleError(_0x341897,null));};exports['show']=function(_0x39493a,_0x2d394b){var _0x9c2bd7={'raw':![],'where':{'id':_0x39493a[_0xb7bc('0x43')]['id']}},_0x12a85d={};_0x12a85d[_0xb7bc('0x31')]=_[_0xb7bc('0x33')](db[_0xb7bc('0x3f')][_0xb7bc('0x2d')]);_0x12a85d[_0xb7bc('0x32')]=_['keys'](_0x39493a['query']);_0x12a85d[_0xb7bc('0x34')]=_[_0xb7bc('0x35')](_0x12a85d[_0xb7bc('0x31')],_0x12a85d['query']);_0x9c2bd7[_0xb7bc('0x36')]=_['intersection'](_0x12a85d[_0xb7bc('0x31')],qs[_0xb7bc('0x37')](_0x39493a[_0xb7bc('0x32')][_0xb7bc('0x37')]));_0x9c2bd7['attributes']=_0x9c2bd7[_0xb7bc('0x36')][_0xb7bc('0x38')]?_0x9c2bd7[_0xb7bc('0x36')]:_0x12a85d[_0xb7bc('0x31')];if(_0x39493a[_0xb7bc('0x32')][_0xb7bc('0x44')]){_0x9c2bd7[_0xb7bc('0x45')]=[{'all':!![]}];}_0x9c2bd7=_['merge']({},_0x9c2bd7,_0x39493a['options']);return db[_0xb7bc('0x3f')][_0xb7bc('0x46')](_0x9c2bd7)['then'](handleEntityNotFound(_0x2d394b,null))[_0xb7bc('0x25')](respondWithResult(_0x2d394b,null))[_0xb7bc('0x42')](handleError(_0x2d394b,null));};exports['create']=function(_0x50f113,_0x424e75){return db[_0xb7bc('0x3f')]['create'](_0x50f113[_0xb7bc('0x47')],{})[_0xb7bc('0x25')](respondWithResult(_0x424e75,0xc9))[_0xb7bc('0x42')](handleError(_0x424e75,null));};exports[_0xb7bc('0x24')]=function(_0x55bb5f,_0x854e00){if(_0x55bb5f[_0xb7bc('0x47')]['id']){delete _0x55bb5f[_0xb7bc('0x47')]['id'];}return db['ZohoAccount']['find']({'where':{'id':_0x55bb5f[_0xb7bc('0x43')]['id']}})[_0xb7bc('0x25')](handleEntityNotFound(_0x854e00,null))[_0xb7bc('0x25')](saveUpdates(_0x55bb5f[_0xb7bc('0x47')],null))['then'](respondWithResult(_0x854e00,null))[_0xb7bc('0x42')](handleError(_0x854e00,null));};exports[_0xb7bc('0x26')]=function(_0x3d6818,_0x1a9ef5){return db[_0xb7bc('0x3f')]['find']({'where':{'id':_0x3d6818[_0xb7bc('0x43')]['id']}})[_0xb7bc('0x25')](handleEntityNotFound(_0x1a9ef5,null))[_0xb7bc('0x25')](removeEntity(_0x1a9ef5,null))[_0xb7bc('0x42')](handleError(_0x1a9ef5,null));};exports['getConfigurations']=function(_0x565710,_0x28aad8,_0x2c4b0e){var _0x1b054b={};var _0x25a0be={};var _0x5726e9;var _0x35f479;return db[_0xb7bc('0x3f')][_0xb7bc('0x48')]({'where':{'id':_0x565710[_0xb7bc('0x43')]['id']}})[_0xb7bc('0x25')](handleEntityNotFound(_0x28aad8,null))[_0xb7bc('0x25')](function(_0x2398b2){if(_0x2398b2){_0x5726e9=_0x2398b2;_0x25a0be[_0xb7bc('0x31')]=_[_0xb7bc('0x33')](db[_0xb7bc('0x49')]['rawAttributes']);_0x25a0be[_0xb7bc('0x32')]=_['keys'](_0x565710[_0xb7bc('0x32')]);_0x25a0be[_0xb7bc('0x34')]=_[_0xb7bc('0x35')](_0x25a0be['model'],_0x25a0be['query']);_0x1b054b[_0xb7bc('0x36')]=_[_0xb7bc('0x35')](_0x25a0be[_0xb7bc('0x31')],qs[_0xb7bc('0x37')](_0x565710[_0xb7bc('0x32')]['fields']));_0x1b054b['attributes']=_0x1b054b['attributes'][_0xb7bc('0x38')]?_0x1b054b['attributes']:_0x25a0be[_0xb7bc('0x31')];_0x1b054b[_0xb7bc('0x4a')]=qs[_0xb7bc('0x3a')](_0x565710[_0xb7bc('0x32')][_0xb7bc('0x3a')]);_0x1b054b[_0xb7bc('0x3d')]=qs['filters'](_[_0xb7bc('0x3b')](_0x565710['query'],_0x25a0be['filters']));if(_0x565710['query'][_0xb7bc('0x3c')]){_0x1b054b[_0xb7bc('0x3d')]=_['merge'](_0x1b054b[_0xb7bc('0x3d')],{'$or':_[_0xb7bc('0x2c')](_0x1b054b['attributes'],function(_0x4a074d){var _0x4106a7={};_0x4106a7[_0x4a074d]={'$like':'%'+_0x565710['query'][_0xb7bc('0x3c')]+'%'};return _0x4106a7;})});}_0x1b054b=_[_0xb7bc('0x3e')]({},_0x1b054b,_0x565710[_0xb7bc('0x4b')]);return _0x5726e9[_0xb7bc('0x4c')](_0x1b054b);}})['then'](function(_0x100d71){if(_0x100d71){_0x35f479=_0x100d71[_0xb7bc('0x38')];if(!_0x565710[_0xb7bc('0x32')]['hasOwnProperty']('nolimit')){_0x1b054b[_0xb7bc('0x1c')]=qs[_0xb7bc('0x1c')](_0x565710[_0xb7bc('0x32')]['limit']);_0x1b054b[_0xb7bc('0x1f')]=qs['offset'](_0x565710[_0xb7bc('0x32')]['offset']);}return _0x5726e9[_0xb7bc('0x4c')](_0x1b054b);}})[_0xb7bc('0x25')](function(_0x48756e){if(_0x48756e){return _0x48756e?{'count':_0x35f479,'rows':_0x48756e}:null;}})[_0xb7bc('0x25')](respondWithResult(_0x28aad8,null))[_0xb7bc('0x42')](handleError(_0x28aad8,null));};exports[_0xb7bc('0x4d')]=function(_0x1bb891,_0x17679e,_0x969609){if(_0x1bb891[_0xb7bc('0x47')]['id']){delete _0x1bb891['body']['id'];}return db[_0xb7bc('0x3f')][_0xb7bc('0x48')]({'where':{'id':_0x1bb891['params']['id']}})[_0xb7bc('0x25')](handleEntityNotFound(_0x17679e,null))[_0xb7bc('0x25')](function(_0x531934){if(_0x531934){_0x1bb891[_0xb7bc('0x47')]['AccountId']=_0x531934['id'];_0x1bb891[_0xb7bc('0x47')][_0xb7bc('0x4e')]=integrations[_0xb7bc('0x4f')](_0x1bb891[_0xb7bc('0x47')]['channel'],_0x1bb891['body'][_0xb7bc('0x2f')]);_0x1bb891[_0xb7bc('0x47')][_0xb7bc('0x50')]=integrations[_0xb7bc('0x51')](_0x1bb891[_0xb7bc('0x47')][_0xb7bc('0x52')],_0x1bb891['body'][_0xb7bc('0x2f')]);return db[_0xb7bc('0x49')][_0xb7bc('0x53')](_0x1bb891['body'],{'include':[{'model':db[_0xb7bc('0x54')],'as':_0xb7bc('0x4e')},{'model':db[_0xb7bc('0x54')],'as':_0xb7bc('0x50')}]});}return null;})[_0xb7bc('0x25')](respondWithResult(_0x17679e,null))['catch'](handleError(_0x17679e,null));};function getAccessToken(_0x5953e7){return new Promise(function(_0x417666,_0x12f064){var _0x3c732d;switch(_0x5953e7['zone']){case'US':_0x3c732d=_0xb7bc('0x55');break;case'AU':_0x3c732d=_0xb7bc('0x56');break;case'EU':_0x3c732d=_0xb7bc('0x57');break;case'IN':_0x3c732d=_0xb7bc('0x58');break;case'CN':_0x3c732d=_0xb7bc('0x59');break;default:_0x3c732d=_0xb7bc('0x57');break;}var _0x3fd69d={'method':'POST','uri':_0x3c732d+_0xb7bc('0x5a'),'qs':{'refresh_token':_0x5953e7['refreshToken'],'client_id':_0x5953e7[_0xb7bc('0x5b')],'client_secret':_0x5953e7['clientSecret'],'grant_type':'refresh_token'},'json':!![]};return rp(_0x3fd69d)[_0xb7bc('0x25')](function(_0x55e15d){if(_0x55e15d[_0xb7bc('0x5c')]){_0x417666(_0x55e15d[_0xb7bc('0x5c')]);}else{_0x12f064(_0xb7bc('0x5d'));}})['catch'](function(_0x8f7bcf){_0x12f064(_0x8f7bcf);});});}exports[_0xb7bc('0x5e')]=function(_0x3fa963,_0x49f462,_0x5ce313){var _0x2d6fdc,_0x2ce483,_0x1ba446,_0x5def30,_0x432f1b;return db['ZohoAccount'][_0xb7bc('0x48')]({'where':{'id':_0x3fa963[_0xb7bc('0x43')]['id']},'attributes':['id',_0xb7bc('0x5f'),_0xb7bc('0x60'),'clientId',_0xb7bc('0x61'),_0xb7bc('0x62'),_0xb7bc('0x63'),'refreshToken']})[_0xb7bc('0x25')](handleEntityNotFound(_0x49f462,null))[_0xb7bc('0x25')](function(_0xbe6603){_0x432f1b=_0xbe6603;_0x2d6fdc=_0x432f1b[_0xb7bc('0x5f')];_0x2ce483=_0x2d6fdc===_0xb7bc('0x64')?'eu':_0xb7bc('0x65');_0x1ba446=_0x432f1b[_0xb7bc('0x62')];var _0x2527ee=_0x1ba446['slice'](-0x1);if(_0x2527ee==='/'||_0x2527ee==='\x5c'||_0x2527ee===':'){_0x1ba446=_0x1ba446[_0xb7bc('0x66')](0x0,_0x1ba446[_0xb7bc('0x67')](_0x2527ee));}if(!_0x432f1b[_0xb7bc('0x68')]){throw new Error(_0xb7bc('0x69'));}return getAccessToken(_0x432f1b);})[_0xb7bc('0x25')](function(_0x25a831){if(_0x25a831){return rp({'method':_0xb7bc('0x6a'),'uri':util[_0xb7bc('0x6b')](_0xb7bc('0x6c'),_0x2ce483),'qs':{'module':_0xb7bc('0x6d')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x25a831},'json':!![]});}})['then'](function(_0x564218){if(_0x564218){if(_0x564218[_0xb7bc('0x6e')]&&_0x564218[_0xb7bc('0x6e')][_0xb7bc('0x27')]){throw new Error(_0x564218[_0xb7bc('0x6e')][_0xb7bc('0x27')]['message']);}var _0x11aa01=[];var _0x4e3b31=[];var _0xeb7b70=[_0xb7bc('0x6f'),_0xb7bc('0x70'),_0xb7bc('0x71'),_0xb7bc('0x72'),_0xb7bc('0x73'),_0xb7bc('0x74'),_0xb7bc('0x75'),_0xb7bc('0x76')];_0x4e3b31=_[_0xb7bc('0x77')](_0x564218[_0xb7bc('0x37')],function(_0x4f8862){return _0xeb7b70[_0xb7bc('0x78')](_0x4f8862[_0xb7bc('0x79')]);});for(var _0x5e5b41=0x0;_0x5e5b41<_0x4e3b31[_0xb7bc('0x38')];_0x5e5b41++){if(_0x4e3b31[_0x5e5b41][_0xb7bc('0x7a')]===![]){_0x11aa01[_0xb7bc('0x7b')]({'id':_0x4e3b31[_0x5e5b41]['id'],'name':_0x4e3b31[_0x5e5b41][_0xb7bc('0x7c')],'custom':_0x4e3b31[_0x5e5b41][_0xb7bc('0x7d')],'options':_0x4e3b31[_0x5e5b41][_0xb7bc('0x7e')]==='picklist'&&_0x4e3b31[_0x5e5b41][_0xb7bc('0x7f')][_0xb7bc('0x38')]>-0x1?_[_0xb7bc('0x2c')](_0x4e3b31[_0x5e5b41]['pick_list_values'],function(_0x428bc6){return{'name':_0x428bc6,'value':_0x428bc6};}):[]});}}return{'count':_0x11aa01[_0xb7bc('0x38')],'rows':_0x11aa01};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x49f462,null))['catch'](function(_0x9a48f6){var _0x3d0e85=_0x3fa963[_0xb7bc('0x32')]['test']?0x1f4:_0x9a48f6[_0xb7bc('0x80')]||0x1f4;logger[_0xb7bc('0x27')](_0xb7bc('0x81'),_0xb7bc('0x5e'),_0x3d0e85,JSON[_0xb7bc('0x82')](_0x9a48f6));delete _0x9a48f6[_0xb7bc('0x29')];if(_0x3d0e85===0x191){_0x3d0e85=0x190;}_0x49f462[_0xb7bc('0x19')](_0x3d0e85)[_0xb7bc('0x2a')](_0x3fa963['query']['test']?{'message':_0xb7bc('0x83'),'statusCode':_0x9a48f6['statusCode']}:_0x9a48f6);});};
\ No newline at end of file
index 72f153c..24fbeba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6f3=['clientSecret','host','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','authorization_code','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','inspect','catch','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','slice','https://accounts.zoho.com.au','https://accounts.zoho.eu','POST','info','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId'];(function(_0xc10392,_0x293b31){var _0x3142b8=function(_0x135d17){while(--_0x135d17){_0xc10392['push'](_0xc10392['shift']());}};_0x3142b8(++_0x293b31);}(_0xd6f3,0x72));var _0x3d6f=function(_0x5cae16,_0x42f5e7){_0x5cae16=_0x5cae16-0x0;var _0x56e96e=_0xd6f3[_0x5cae16];return _0x56e96e;};'use strict';var _=require(_0x3d6f('0x0'));var util=require(_0x3d6f('0x1'));var logger=require(_0x3d6f('0x2'))(_0x3d6f('0x3'));var moment=require(_0x3d6f('0x4'));var BPromise=require(_0x3d6f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3d6f('0x6'));var rimraf=require(_0x3d6f('0x7'));var config=require(_0x3d6f('0x8'));var attributes=require(_0x3d6f('0x9'));var integrations=require(_0x3d6f('0xa'));module[_0x3d6f('0xb')]=function(_0x16d50c,_0x118add){return _0x16d50c['define'](_0x3d6f('0xc'),attributes,{'tableName':_0x3d6f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x11f9ea,_0x5c8705,_0x3bbc41){if(_0x11f9ea[_0x3d6f('0xe')](_0x3d6f('0xf'))||_0x11f9ea[_0x3d6f('0xe')](_0x3d6f('0x10'))||_0x11f9ea[_0x3d6f('0xe')](_0x3d6f('0x11'))||_0x11f9ea[_0x3d6f('0xe')](_0x3d6f('0x12'))||_0x11f9ea[_0x3d6f('0xe')]('code')||_0x11f9ea[_0x3d6f('0xe')](_0x3d6f('0x13'))){var _0xde6a37,_0x16ad2b;_0xde6a37=_0x11f9ea[_0x3d6f('0x10')];var _0x354544=_0xde6a37['slice'](-0x1);if(_0x354544==='/'||_0x354544==='\x5c'||_0x354544===':'){_0xde6a37=_0xde6a37[_0x3d6f('0x14')](0x0,_0xde6a37[_0x3d6f('0x15')](_0x354544));}switch(_0x11f9ea[_0x3d6f('0xf')]){case'US':_0x16ad2b=_0x3d6f('0x16');break;case'AU':_0x16ad2b='https://accounts.zoho.com.au';break;case'IN':_0x16ad2b=_0x3d6f('0x17');break;case'CN':_0x16ad2b=_0x3d6f('0x18');break;default:_0x16ad2b='https://accounts.zoho.eu';break;}var _0x1aa3cf={'method':'POST','uri':_0x16ad2b+_0x3d6f('0x19'),'form':{'grant_type':_0x3d6f('0x1a'),'client_id':_0x11f9ea[_0x3d6f('0x11')],'client_secret':_0x11f9ea[_0x3d6f('0x12')],'redirect_uri':_0x11f9ea[_0x3d6f('0x10')],'code':_0x11f9ea['code']},'headers':{'Content-Type':_0x3d6f('0x1b')}};return rp(_0x1aa3cf)[_0x3d6f('0x1c')](function(_0x55065c){var _0x152483=JSON[_0x3d6f('0x1d')](_0x55065c);if(_0x152483[_0x3d6f('0x1e')]){_0x11f9ea[_0x3d6f('0x1f')]=_0x152483[_0x3d6f('0x1e')];logger['info'](util[_0x3d6f('0x20')](_0x3d6f('0x21'),_0x11f9ea[_0x3d6f('0x22')],_0x11f9ea['id']));}else{logger[_0x3d6f('0x23')](util[_0x3d6f('0x20')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x11f9ea[_0x3d6f('0x22')],_0x11f9ea['id']),util[_0x3d6f('0x24')](_0x152483,{'showHidden':![],'depth':null}));}return _0x3bbc41(null,_0x5c8705);})[_0x3d6f('0x25')](function(_0x5b48eb){logger['error'](util[_0x3d6f('0x20')](_0x3d6f('0x26'),_0x11f9ea[_0x3d6f('0x22')],_0x11f9ea['id']),util[_0x3d6f('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x3bbc41(_0x5b48eb);});}else{return _0x3bbc41(null,_0x5c8705);}},'beforeUpdate':function(_0x3721f8,_0x5ee0bd,_0x42e267){if(_0x3721f8[_0x3d6f('0xe')](_0x3d6f('0xf'))||_0x3721f8[_0x3d6f('0xe')](_0x3d6f('0x10'))||_0x3721f8[_0x3d6f('0xe')](_0x3d6f('0x11'))||_0x3721f8['changed']('clientSecret')||_0x3721f8[_0x3d6f('0xe')]('code')||_0x3721f8[_0x3d6f('0xe')](_0x3d6f('0x13'))){var _0x31adec,_0x17827e;_0x31adec=_0x3721f8[_0x3d6f('0x10')];var _0x5752e8=_0x31adec[_0x3d6f('0x27')](-0x1);if(_0x5752e8==='/'||_0x5752e8==='\x5c'||_0x5752e8===':'){_0x31adec=_0x31adec[_0x3d6f('0x14')](0x0,_0x31adec['lastIndexOf'](_0x5752e8));}switch(_0x3721f8[_0x3d6f('0xf')]){case'US':_0x17827e='https://accounts.zoho.com';break;case'AU':_0x17827e=_0x3d6f('0x28');break;case'IN':_0x17827e=_0x3d6f('0x17');break;case'CN':_0x17827e=_0x3d6f('0x18');break;default:_0x17827e=_0x3d6f('0x29');break;}var _0x818001={'method':_0x3d6f('0x2a'),'uri':_0x17827e+_0x3d6f('0x19'),'form':{'grant_type':'authorization_code','client_id':_0x3721f8['clientId'],'client_secret':_0x3721f8[_0x3d6f('0x12')],'redirect_uri':_0x3721f8[_0x3d6f('0x10')],'code':_0x3721f8['code']},'headers':{'Content-Type':_0x3d6f('0x1b')}};return rp(_0x818001)[_0x3d6f('0x1c')](function(_0x505139){var _0x480a03=JSON[_0x3d6f('0x1d')](_0x505139);if(_0x480a03[_0x3d6f('0x1e')]){_0x3721f8[_0x3d6f('0x1f')]=_0x480a03[_0x3d6f('0x1e')];logger[_0x3d6f('0x2b')](util['format'](_0x3d6f('0x21'),_0x3721f8[_0x3d6f('0x22')],_0x3721f8['id']));}else{logger[_0x3d6f('0x23')](util[_0x3d6f('0x20')](_0x3d6f('0x26'),_0x3721f8[_0x3d6f('0x22')],_0x3721f8['id']),util[_0x3d6f('0x24')](_0x480a03,{'showHidden':![],'depth':null}));}return _0x42e267(null,_0x5ee0bd);})[_0x3d6f('0x25')](function(_0x4dc838){logger[_0x3d6f('0x23')](util[_0x3d6f('0x20')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3721f8[_0x3d6f('0x22')],_0x3721f8['id']),util[_0x3d6f('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x42e267(_0x4dc838);});}else{return _0x42e267(null,_0x5ee0bd);}}}});};
\ No newline at end of file
+var _0xae4b=['changed','serverUrl','clientId','clientSecret','host','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','/oauth/v2/token','authorization_code','code','application/x-www-form-urlencoded','then','refreshToken','refresh_token','info','name','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','error','https://accounts.zoho.com.cn','POST','parse','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','zone'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0xae4b,0x17e));var _0xbae4=function(_0x305be6,_0x16bafd){_0x305be6=_0x305be6-0x0;var _0x572a4b=_0xae4b[_0x305be6];return _0x572a4b;};'use strict';var _=require(_0xbae4('0x0'));var util=require('util');var logger=require(_0xbae4('0x1'))(_0xbae4('0x2'));var moment=require(_0xbae4('0x3'));var BPromise=require(_0xbae4('0x4'));var rp=require(_0xbae4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xbae4('0x6'));var attributes=require(_0xbae4('0x7'));var integrations=require(_0xbae4('0x8'));module[_0xbae4('0x9')]=function(_0x472346,_0x5d644b){return _0x472346[_0xbae4('0xa')](_0xbae4('0xb'),attributes,{'tableName':_0xbae4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3c3f1e,_0x194079,_0x159d13){if(_0x3c3f1e['changed'](_0xbae4('0xd'))||_0x3c3f1e[_0xbae4('0xe')](_0xbae4('0xf'))||_0x3c3f1e[_0xbae4('0xe')](_0xbae4('0x10'))||_0x3c3f1e['changed'](_0xbae4('0x11'))||_0x3c3f1e[_0xbae4('0xe')]('code')||_0x3c3f1e[_0xbae4('0xe')](_0xbae4('0x12'))){var _0x17086a,_0x43b3c4;_0x17086a=_0x3c3f1e[_0xbae4('0xf')];var _0x2b0b5f=_0x17086a[_0xbae4('0x13')](-0x1);if(_0x2b0b5f==='/'||_0x2b0b5f==='\x5c'||_0x2b0b5f===':'){_0x17086a=_0x17086a[_0xbae4('0x14')](0x0,_0x17086a[_0xbae4('0x15')](_0x2b0b5f));}switch(_0x3c3f1e[_0xbae4('0xd')]){case'US':_0x43b3c4=_0xbae4('0x16');break;case'AU':_0x43b3c4=_0xbae4('0x17');break;case'IN':_0x43b3c4=_0xbae4('0x18');break;case'CN':_0x43b3c4='https://accounts.zoho.com.cn';break;default:_0x43b3c4=_0xbae4('0x19');break;}var _0x4d47a2={'method':'POST','uri':_0x43b3c4+_0xbae4('0x1a'),'form':{'grant_type':_0xbae4('0x1b'),'client_id':_0x3c3f1e['clientId'],'client_secret':_0x3c3f1e['clientSecret'],'redirect_uri':_0x3c3f1e['serverUrl'],'code':_0x3c3f1e[_0xbae4('0x1c')]},'headers':{'Content-Type':_0xbae4('0x1d')}};return rp(_0x4d47a2)[_0xbae4('0x1e')](function(_0x28df41){var _0x419777=JSON['parse'](_0x28df41);if(_0x419777['refresh_token']){_0x3c3f1e[_0xbae4('0x1f')]=_0x419777[_0xbae4('0x20')];logger[_0xbae4('0x21')](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3c3f1e[_0xbae4('0x22')],_0x3c3f1e['id']));}else{logger['error'](util[_0xbae4('0x23')](_0xbae4('0x24'),_0x3c3f1e['name'],_0x3c3f1e['id']),util[_0xbae4('0x25')](_0x419777,{'showHidden':![],'depth':null}));}return _0x159d13(null,_0x194079);})[_0xbae4('0x26')](function(_0x4a9d36){logger[_0xbae4('0x27')](util[_0xbae4('0x23')](_0xbae4('0x24'),_0x3c3f1e['name'],_0x3c3f1e['id']),util[_0xbae4('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x159d13(_0x4a9d36);});}else{return _0x159d13(null,_0x194079);}},'beforeUpdate':function(_0x1a6661,_0x59b270,_0x439b67){if(_0x1a6661['changed'](_0xbae4('0xd'))||_0x1a6661[_0xbae4('0xe')](_0xbae4('0xf'))||_0x1a6661['changed'](_0xbae4('0x10'))||_0x1a6661['changed'](_0xbae4('0x11'))||_0x1a6661[_0xbae4('0xe')](_0xbae4('0x1c'))||_0x1a6661[_0xbae4('0xe')](_0xbae4('0x12'))){var _0x2e8631,_0x2ccbd7;_0x2e8631=_0x1a6661['serverUrl'];var _0x499489=_0x2e8631[_0xbae4('0x13')](-0x1);if(_0x499489==='/'||_0x499489==='\x5c'||_0x499489===':'){_0x2e8631=_0x2e8631[_0xbae4('0x14')](0x0,_0x2e8631[_0xbae4('0x15')](_0x499489));}switch(_0x1a6661[_0xbae4('0xd')]){case'US':_0x2ccbd7=_0xbae4('0x16');break;case'AU':_0x2ccbd7=_0xbae4('0x17');break;case'IN':_0x2ccbd7=_0xbae4('0x18');break;case'CN':_0x2ccbd7=_0xbae4('0x28');break;default:_0x2ccbd7=_0xbae4('0x19');break;}var _0x3152a8={'method':_0xbae4('0x29'),'uri':_0x2ccbd7+'/oauth/v2/token','form':{'grant_type':'authorization_code','client_id':_0x1a6661[_0xbae4('0x10')],'client_secret':_0x1a6661[_0xbae4('0x11')],'redirect_uri':_0x1a6661[_0xbae4('0xf')],'code':_0x1a6661[_0xbae4('0x1c')]},'headers':{'Content-Type':_0xbae4('0x1d')}};return rp(_0x3152a8)['then'](function(_0x3f69b5){var _0x24e946=JSON[_0xbae4('0x2a')](_0x3f69b5);if(_0x24e946['refresh_token']){_0x1a6661[_0xbae4('0x1f')]=_0x24e946[_0xbae4('0x20')];logger[_0xbae4('0x21')](util[_0xbae4('0x23')](_0xbae4('0x2b'),_0x1a6661[_0xbae4('0x22')],_0x1a6661['id']));}else{logger[_0xbae4('0x27')](util[_0xbae4('0x23')](_0xbae4('0x24'),_0x1a6661[_0xbae4('0x22')],_0x1a6661['id']),util['inspect'](_0x24e946,{'showHidden':![],'depth':null}));}return _0x439b67(null,_0x59b270);})[_0xbae4('0x26')](function(_0x3dab61){logger[_0xbae4('0x27')](util[_0xbae4('0x23')](_0xbae4('0x24'),_0x1a6661['name'],_0x1a6661['id']),util[_0xbae4('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x439b67(_0x3dab61);});}else{return _0x439b67(null,_0x59b270);}}}});};
\ No newline at end of file
index b8878c4..6babf7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e82=['include','model','then','debug','ShowZohoAccount','find','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','error','message','result','catch','GetZohoAccount','ZohoAccount','findAll','options','where','attributes','map'];(function(_0x398462,_0x3ba88b){var _0x5f2aa2=function(_0x19b386){while(--_0x19b386){_0x398462['push'](_0x398462['shift']());}};_0x5f2aa2(++_0x3ba88b);}(_0x1e82,0x8b));var _0x21e8=function(_0xeb5abf,_0x453c53){_0xeb5abf=_0xeb5abf-0x0;var _0x4e65db=_0x1e82[_0xeb5abf];return _0x4e65db;};'use strict';var _=require(_0x21e8('0x0'));var util=require(_0x21e8('0x1'));var moment=require(_0x21e8('0x2'));var BPromise=require(_0x21e8('0x3'));var rs=require(_0x21e8('0x4'));var fs=require('fs');var Redis=require(_0x21e8('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x21e8('0x6'));var logger=require(_0x21e8('0x7'))('rpc');var config=require(_0x21e8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x21e8('0x9')][_0x21e8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x38c3d0,_0x22cbd4,_0x47b3b3){return new BPromise(function(_0x45e5c1,_0x3754c9){return client[_0x21e8('0xb')](_0x38c3d0,_0x47b3b3)['then'](function(_0x31b6c2){logger[_0x21e8('0xc')](_0x21e8('0xd'),_0x22cbd4,_0x21e8('0xe'));logger['debug']('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x22cbd4,_0x21e8('0xe'),JSON['stringify'](_0x31b6c2));if(_0x31b6c2[_0x21e8('0xf')]){if(_0x31b6c2[_0x21e8('0xf')]['code']===0x1f4){logger[_0x21e8('0xf')]('ZohoAccount,\x20%s,\x20%s',_0x22cbd4,_0x31b6c2[_0x21e8('0xf')][_0x21e8('0x10')]);return _0x3754c9(_0x31b6c2[_0x21e8('0xf')]['message']);}logger[_0x21e8('0xf')]('ZohoAccount,\x20%s,\x20%s',_0x22cbd4,_0x31b6c2[_0x21e8('0xf')][_0x21e8('0x10')]);return _0x45e5c1(_0x31b6c2[_0x21e8('0xf')]['message']);}else{logger['info'](_0x21e8('0xd'),_0x22cbd4,_0x21e8('0xe'));_0x45e5c1(_0x31b6c2[_0x21e8('0x11')][_0x21e8('0x10')]);}})[_0x21e8('0x12')](function(_0x13da4f){logger[_0x21e8('0xf')](_0x21e8('0xd'),_0x22cbd4,_0x13da4f);_0x3754c9(_0x13da4f);});});}exports[_0x21e8('0x13')]=function(_0x552c6f){var _0x1c70cc=this;return new Promise(function(_0x4f76b8,_0x504522){return db[_0x21e8('0x14')][_0x21e8('0x15')]({'raw':_0x552c6f[_0x21e8('0x16')]?_0x552c6f[_0x21e8('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x552c6f[_0x21e8('0x16')]?_0x552c6f[_0x21e8('0x16')][_0x21e8('0x17')]||null:null,'attributes':_0x552c6f[_0x21e8('0x16')]?_0x552c6f[_0x21e8('0x16')][_0x21e8('0x18')]||null:null,'limit':_0x552c6f[_0x21e8('0x16')]?_0x552c6f[_0x21e8('0x16')]['limit']||null:null,'include':_0x552c6f[_0x21e8('0x16')]?_0x552c6f[_0x21e8('0x16')]['include']?_[_0x21e8('0x19')](_0x552c6f[_0x21e8('0x16')][_0x21e8('0x1a')],function(_0x168f1){return{'model':db[_0x168f1[_0x21e8('0x1b')]],'as':_0x168f1['as'],'attributes':_0x168f1[_0x21e8('0x18')],'include':_0x168f1[_0x21e8('0x1a')]?_[_0x21e8('0x19')](_0x168f1['include'],function(_0x155d04){return{'model':db[_0x155d04['model']],'as':_0x155d04['as'],'attributes':_0x155d04[_0x21e8('0x18')],'include':_0x155d04[_0x21e8('0x1a')]?_[_0x21e8('0x19')](_0x155d04['include'],function(_0x1bdd15){return{'model':db[_0x1bdd15['model']],'as':_0x1bdd15['as'],'attributes':_0x1bdd15[_0x21e8('0x18')]};}):[]};}):[]};}):[]:[]})[_0x21e8('0x1c')](function(_0x6de0b2){logger['info'](_0x21e8('0x13'),_0x552c6f);logger[_0x21e8('0x1d')](_0x21e8('0x13'),_0x552c6f,JSON['stringify'](_0x6de0b2));_0x4f76b8(_0x6de0b2);})[_0x21e8('0x12')](function(_0x3a5ff1){logger[_0x21e8('0xf')](_0x21e8('0x13'),_0x3a5ff1[_0x21e8('0x10')],_0x552c6f);_0x504522(_0x1c70cc[_0x21e8('0xf')](0x1f4,_0x3a5ff1[_0x21e8('0x10')]));});});};exports[_0x21e8('0x1e')]=function(_0x20d095){var _0xd4f119=this;return new Promise(function(_0x4711a4,_0x37d56c){return db['ZohoAccount'][_0x21e8('0x1f')]({'raw':_0x20d095[_0x21e8('0x16')]?_0x20d095['options']['raw']===undefined?!![]:![]:!![],'where':_0x20d095['options']?_0x20d095[_0x21e8('0x16')]['where']||null:null,'attributes':_0x20d095[_0x21e8('0x16')]?_0x20d095[_0x21e8('0x16')][_0x21e8('0x18')]||null:null,'include':_0x20d095[_0x21e8('0x16')]?_0x20d095['options']['include']?_[_0x21e8('0x19')](_0x20d095['options'][_0x21e8('0x1a')],function(_0x1cf161){return{'model':db[_0x1cf161[_0x21e8('0x1b')]],'as':_0x1cf161['as'],'attributes':_0x1cf161[_0x21e8('0x18')],'include':_0x1cf161['include']?_[_0x21e8('0x19')](_0x1cf161[_0x21e8('0x1a')],function(_0x27c8bd){return{'model':db[_0x27c8bd[_0x21e8('0x1b')]],'as':_0x27c8bd['as'],'attributes':_0x27c8bd[_0x21e8('0x18')],'include':_0x27c8bd['include']?_[_0x21e8('0x19')](_0x27c8bd[_0x21e8('0x1a')],function(_0x28ab9d){return{'model':db[_0x28ab9d[_0x21e8('0x1b')]],'as':_0x28ab9d['as'],'attributes':_0x28ab9d[_0x21e8('0x18')]};}):[]};}):[]};}):[]:[]})[_0x21e8('0x1c')](function(_0x1abde0){logger[_0x21e8('0xc')](_0x21e8('0x1e'),_0x20d095);logger[_0x21e8('0x1d')](_0x21e8('0x1e'),_0x20d095,JSON[_0x21e8('0x20')](_0x1abde0));_0x4711a4(_0x1abde0);})[_0x21e8('0x12')](function(_0x3c83bb){logger[_0x21e8('0xf')]('ShowZohoAccount',_0x3c83bb[_0x21e8('0x10')],_0x20d095);_0x37d56c(_0xd4f119[_0x21e8('0xf')](0x1f4,_0x3c83bb[_0x21e8('0x10')]));});});};
\ No newline at end of file
+var _0x9541=['message','catch','GetZohoAccount','ZohoAccount','findAll','options','raw','attributes','include','map','model','stringify','ShowZohoAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','error','result'];(function(_0x478557,_0x470e58){var _0x43b61f=function(_0x5814a1){while(--_0x5814a1){_0x478557['push'](_0x478557['shift']());}};_0x43b61f(++_0x470e58);}(_0x9541,0xb3));var _0x1954=function(_0x91fdfa,_0x5a5b90){_0x91fdfa=_0x91fdfa-0x0;var _0x3110ef=_0x9541[_0x91fdfa];return _0x3110ef;};'use strict';var _=require(_0x1954('0x0'));var util=require(_0x1954('0x1'));var moment=require(_0x1954('0x2'));var BPromise=require(_0x1954('0x3'));var rs=require(_0x1954('0x4'));var fs=require('fs');var Redis=require(_0x1954('0x5'));var db=require(_0x1954('0x6'))['db'];var utils=require(_0x1954('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x1954('0x8'));var jayson=require(_0x1954('0x9'));var client=jayson['client'][_0x1954('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x21ceca,_0x30beea,_0x2ccff8){return new BPromise(function(_0xda7a2f,_0xa7a784){return client['request'](_0x21ceca,_0x2ccff8)[_0x1954('0xb')](function(_0x2f2c4b){logger[_0x1954('0xc')](_0x1954('0xd'),_0x30beea,_0x1954('0xe'));logger[_0x1954('0xf')](_0x1954('0x10'),_0x30beea,_0x1954('0xe'),JSON['stringify'](_0x2f2c4b));if(_0x2f2c4b[_0x1954('0x11')]){if(_0x2f2c4b[_0x1954('0x11')]['code']===0x1f4){logger[_0x1954('0x11')]('ZohoAccount,\x20%s,\x20%s',_0x30beea,_0x2f2c4b[_0x1954('0x11')]['message']);return _0xa7a784(_0x2f2c4b['error']['message']);}logger[_0x1954('0x11')](_0x1954('0xd'),_0x30beea,_0x2f2c4b[_0x1954('0x11')]['message']);return _0xda7a2f(_0x2f2c4b[_0x1954('0x11')]['message']);}else{logger['info'](_0x1954('0xd'),_0x30beea,_0x1954('0xe'));_0xda7a2f(_0x2f2c4b[_0x1954('0x12')][_0x1954('0x13')]);}})[_0x1954('0x14')](function(_0x37f4fc){logger[_0x1954('0x11')](_0x1954('0xd'),_0x30beea,_0x37f4fc);_0xa7a784(_0x37f4fc);});});}exports[_0x1954('0x15')]=function(_0xb9c2cd){var _0xc8cb0b=this;return new Promise(function(_0x3da757,_0x16b8b1){return db[_0x1954('0x16')][_0x1954('0x17')]({'raw':_0xb9c2cd[_0x1954('0x18')]?_0xb9c2cd[_0x1954('0x18')][_0x1954('0x19')]===undefined?!![]:![]:!![],'where':_0xb9c2cd[_0x1954('0x18')]?_0xb9c2cd[_0x1954('0x18')]['where']||null:null,'attributes':_0xb9c2cd[_0x1954('0x18')]?_0xb9c2cd[_0x1954('0x18')][_0x1954('0x1a')]||null:null,'limit':_0xb9c2cd[_0x1954('0x18')]?_0xb9c2cd[_0x1954('0x18')]['limit']||null:null,'include':_0xb9c2cd[_0x1954('0x18')]?_0xb9c2cd[_0x1954('0x18')][_0x1954('0x1b')]?_[_0x1954('0x1c')](_0xb9c2cd[_0x1954('0x18')]['include'],function(_0x4d1b25){return{'model':db[_0x4d1b25[_0x1954('0x1d')]],'as':_0x4d1b25['as'],'attributes':_0x4d1b25[_0x1954('0x1a')],'include':_0x4d1b25[_0x1954('0x1b')]?_[_0x1954('0x1c')](_0x4d1b25['include'],function(_0x21f395){return{'model':db[_0x21f395[_0x1954('0x1d')]],'as':_0x21f395['as'],'attributes':_0x21f395[_0x1954('0x1a')],'include':_0x21f395[_0x1954('0x1b')]?_[_0x1954('0x1c')](_0x21f395[_0x1954('0x1b')],function(_0x46fdc1){return{'model':db[_0x46fdc1['model']],'as':_0x46fdc1['as'],'attributes':_0x46fdc1[_0x1954('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x1954('0xb')](function(_0x513917){logger[_0x1954('0xc')](_0x1954('0x15'),_0xb9c2cd);logger[_0x1954('0xf')](_0x1954('0x15'),_0xb9c2cd,JSON[_0x1954('0x1e')](_0x513917));_0x3da757(_0x513917);})[_0x1954('0x14')](function(_0x41b143){logger[_0x1954('0x11')](_0x1954('0x15'),_0x41b143[_0x1954('0x13')],_0xb9c2cd);_0x16b8b1(_0xc8cb0b[_0x1954('0x11')](0x1f4,_0x41b143[_0x1954('0x13')]));});});};exports[_0x1954('0x1f')]=function(_0x22509c){var _0x228a57=this;return new Promise(function(_0x26b1db,_0x24cc47){return db[_0x1954('0x16')][_0x1954('0x20')]({'raw':_0x22509c[_0x1954('0x18')]?_0x22509c[_0x1954('0x18')][_0x1954('0x19')]===undefined?!![]:![]:!![],'where':_0x22509c[_0x1954('0x18')]?_0x22509c[_0x1954('0x18')]['where']||null:null,'attributes':_0x22509c['options']?_0x22509c[_0x1954('0x18')]['attributes']||null:null,'include':_0x22509c[_0x1954('0x18')]?_0x22509c[_0x1954('0x18')]['include']?_[_0x1954('0x1c')](_0x22509c[_0x1954('0x18')]['include'],function(_0x55ec43){return{'model':db[_0x55ec43[_0x1954('0x1d')]],'as':_0x55ec43['as'],'attributes':_0x55ec43[_0x1954('0x1a')],'include':_0x55ec43[_0x1954('0x1b')]?_[_0x1954('0x1c')](_0x55ec43[_0x1954('0x1b')],function(_0x316dc8){return{'model':db[_0x316dc8[_0x1954('0x1d')]],'as':_0x316dc8['as'],'attributes':_0x316dc8['attributes'],'include':_0x316dc8['include']?_[_0x1954('0x1c')](_0x316dc8[_0x1954('0x1b')],function(_0x1bbe28){return{'model':db[_0x1bbe28[_0x1954('0x1d')]],'as':_0x1bbe28['as'],'attributes':_0x1bbe28[_0x1954('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x1954('0xb')](function(_0x5d235f){logger[_0x1954('0xc')](_0x1954('0x1f'),_0x22509c);logger['debug'](_0x1954('0x1f'),_0x22509c,JSON[_0x1954('0x1e')](_0x5d235f));_0x26b1db(_0x5d235f);})['catch'](function(_0x580990){logger[_0x1954('0x11')](_0x1954('0x1f'),_0x580990['message'],_0x22509c);_0x24cc47(_0x228a57[_0x1954('0x11')](0x1f4,_0x580990[_0x1954('0x13')]));});});};
\ No newline at end of file
index af5c5ee..d2d4ba5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f13=['Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update','destroy','exports','multer','connect-timeout','express'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0x4f13,0x11d));var _0x34f1=function(_0x499001,_0x3f27ae){_0x499001=_0x499001-0x0;var _0x320c65=_0x4f13[_0x499001];return _0x320c65;};'use strict';var multer=require(_0x34f1('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x34f1('0x1'));var express=require(_0x34f1('0x2'));var router=express[_0x34f1('0x3')]();var fs_extra=require(_0x34f1('0x4'));var auth=require(_0x34f1('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x34f1('0x6'));var controller=require(_0x34f1('0x7'));router[_0x34f1('0x8')]('/',auth[_0x34f1('0x9')](),controller[_0x34f1('0xa')]);router['get']('/:id',auth[_0x34f1('0x9')](),controller['show']);router[_0x34f1('0x8')](_0x34f1('0xb'),auth[_0x34f1('0x9')](),controller[_0x34f1('0xc')]);router[_0x34f1('0x8')](_0x34f1('0xd'),auth['isAuthenticated'](),controller[_0x34f1('0xe')]);router['get'](_0x34f1('0xf'),auth[_0x34f1('0x9')](),controller[_0x34f1('0x10')]);router[_0x34f1('0x11')]('/',auth['isAuthenticated'](),controller[_0x34f1('0x12')]);router[_0x34f1('0x13')](_0x34f1('0x14'),auth[_0x34f1('0x9')](),controller[_0x34f1('0x15')]);router['delete'](_0x34f1('0x14'),auth[_0x34f1('0x9')](),controller[_0x34f1('0x16')]);module[_0x34f1('0x17')]=router;
\ No newline at end of file
+var _0x9e31=['/:id/fields','getFields','getSubjects','getDescriptions','post','create','put','delete','multer','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x392799,_0x2fb776){var _0x528345=function(_0x563157){while(--_0x563157){_0x392799['push'](_0x392799['shift']());}};_0x528345(++_0x2fb776);}(_0x9e31,0x170));var _0x19e3=function(_0x13e36c,_0x5029c){_0x13e36c=_0x13e36c-0x0;var _0x12f4b6=_0x9e31[_0x13e36c];return _0x12f4b6;};'use strict';var multer=require(_0x19e3('0x0'));var util=require('util');var path=require(_0x19e3('0x1'));var timeout=require('connect-timeout');var express=require(_0x19e3('0x2'));var router=express[_0x19e3('0x3')]();var fs_extra=require(_0x19e3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x19e3('0x5'));var config=require(_0x19e3('0x6'));var controller=require(_0x19e3('0x7'));router[_0x19e3('0x8')]('/',auth[_0x19e3('0x9')](),controller[_0x19e3('0xa')]);router[_0x19e3('0x8')](_0x19e3('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x19e3('0x8')](_0x19e3('0xc'),auth['isAuthenticated'](),controller[_0x19e3('0xd')]);router['get']('/:id/subjects',auth[_0x19e3('0x9')](),controller[_0x19e3('0xe')]);router[_0x19e3('0x8')]('/:id/descriptions',auth[_0x19e3('0x9')](),controller[_0x19e3('0xf')]);router[_0x19e3('0x10')]('/',auth[_0x19e3('0x9')](),controller[_0x19e3('0x11')]);router[_0x19e3('0x12')](_0x19e3('0xb'),auth[_0x19e3('0x9')](),controller['update']);router[_0x19e3('0x13')]('/:id',auth[_0x19e3('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 2655667..78e8b39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a06=['lead','contact_lead','sequelize','exports','ENUM','contact'];(function(_0x4d986f,_0x18a777){var _0x31f005=function(_0x692827){while(--_0x692827){_0x4d986f['push'](_0x4d986f['shift']());}};_0x31f005(++_0x18a777);}(_0x3a06,0x1d0));var _0x63a0=function(_0x4612dd,_0x2dd79d){_0x4612dd=_0x4612dd-0x0;var _0x4b2ab9=_0x3a06[_0x4612dd];return _0x4b2ab9;};'use strict';var Sequelize=require(_0x63a0('0x0'));module[_0x63a0('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0x63a0('0x2')]('lead','contact','nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x63a0('0x2')]('contact_lead',_0x63a0('0x3'),_0x63a0('0x4')),'defaultValue':_0x63a0('0x5')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x118c=['lead','contact','nothing','contact_lead','sequelize','exports','STRING','ENUM'];(function(_0x1be4ff,_0x258969){var _0x9cbf=function(_0x25bda8){while(--_0x25bda8){_0x1be4ff['push'](_0x1be4ff['shift']());}};_0x9cbf(++_0x258969);}(_0x118c,0x1ec));var _0xc118=function(_0x1ce6a7,_0xeaa892){_0x1ce6a7=_0x1ce6a7-0x0;var _0x3095a7=_0x118c[_0x1ce6a7];return _0x3095a7;};'use strict';var Sequelize=require(_0xc118('0x0'));module[_0xc118('0x1')]={'name':{'type':Sequelize[_0xc118('0x2')]},'moduleCreate':{'type':Sequelize[_0xc118('0x3')](_0xc118('0x4'),_0xc118('0x5'),_0xc118('0x6')),'defaultValue':_0xc118('0x4')},'moduleSearch':{'type':Sequelize[_0xc118('0x3')](_0xc118('0x7'),_0xc118('0x5'),_0xc118('0x4')),'defaultValue':_0xc118('0x7')},'description':{'type':Sequelize[_0xc118('0x2')]}};
\ No newline at end of file
index 141c5e4..87532e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a02=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','set','apply','reject','save','then','error','stack','name','send','map','ZohoConfiguration','type','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','show','params','keys','rawAttributes','find','catch','create','body','destroy','findOne','ZohoField','getFields','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','jsforce','querystring'];(function(_0x44cb92,_0x59afa3){var _0x56b9e6=function(_0x2841e0){while(--_0x2841e0){_0x44cb92['push'](_0x44cb92['shift']());}};_0x56b9e6(++_0x59afa3);}(_0x6a02,0x169));var _0x26a0=function(_0x3a52ce,_0x428445){_0x3a52ce=_0x3a52ce-0x0;var _0x16754c=_0x6a02[_0x3a52ce];return _0x16754c;};'use strict';var emlformat=require(_0x26a0('0x0'));var rimraf=require(_0x26a0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x26a0('0x2'));var rp=require(_0x26a0('0x3'));var moment=require(_0x26a0('0x4'));var BPromise=require(_0x26a0('0x5'));var Mustache=require('mustache');var util=require(_0x26a0('0x6'));var path=require(_0x26a0('0x7'));var sox=require('sox');var csv=require(_0x26a0('0x8'));var ejs=require(_0x26a0('0x9'));var fs=require('fs');var fs_extra=require(_0x26a0('0xa'));var _=require(_0x26a0('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x26a0('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x26a0('0x8'));var querystring=require(_0x26a0('0xd'));var Papa=require(_0x26a0('0xe'));var Redis=require(_0x26a0('0xf'));var authService=require(_0x26a0('0x10'));var qs=require(_0x26a0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x26a0('0x12'));var logger=require('../../config/logger')(_0x26a0('0x13'));var utils=require('../../config/utils');var config=require(_0x26a0('0x14'));var licenseUtil=require(_0x26a0('0x15'));var db=require(_0x26a0('0x16'))['db'];function respondWithStatusCode(_0x300db3,_0x46112a){_0x46112a=_0x46112a||0xcc;return function(_0x449c02){if(_0x449c02){return _0x300db3[_0x26a0('0x17')](_0x46112a);}return _0x300db3[_0x26a0('0x18')](_0x46112a)['end']();};}function respondWithResult(_0x2dc7e0,_0x62424c){_0x62424c=_0x62424c||0xc8;return function(_0x29475d){if(_0x29475d){return _0x2dc7e0['status'](_0x62424c)[_0x26a0('0x19')](_0x29475d);}};}function respondWithFilteredResult(_0x5b459e,_0x3c47b6){return function(_0x38b2ea){if(_0x38b2ea){var _0x2d2b2e=typeof _0x3c47b6[_0x26a0('0x1a')]==='undefined'&&typeof _0x3c47b6[_0x26a0('0x1b')]==='undefined';var _0x6548f8=_0x38b2ea['count'];var _0x8c7d8d=_0x2d2b2e?0x0:_0x3c47b6[_0x26a0('0x1a')];var _0x4b58b7=_0x2d2b2e?_0x38b2ea[_0x26a0('0x1c')]:_0x3c47b6[_0x26a0('0x1a')]+_0x3c47b6[_0x26a0('0x1b')];var _0x2f5f2c;if(_0x4b58b7>=_0x6548f8){_0x4b58b7=_0x6548f8;_0x2f5f2c=0xc8;}else{_0x2f5f2c=0xce;}_0x5b459e[_0x26a0('0x18')](_0x2f5f2c);return _0x5b459e[_0x26a0('0x1d')]('Content-Range',_0x8c7d8d+'-'+_0x4b58b7+'/'+_0x6548f8)[_0x26a0('0x19')](_0x38b2ea);}return null;};}function patchUpdates(_0x287aef){return function(_0x39883a){try{jsonpatch[_0x26a0('0x1e')](_0x39883a,_0x287aef,!![]);}catch(_0x1756e9){return BPromise[_0x26a0('0x1f')](_0x1756e9);}return _0x39883a[_0x26a0('0x20')]();};}function saveUpdates(_0x4db0c7,_0x2ea6a1){return function(_0x4cbbcc){if(_0x4cbbcc){return _0x4cbbcc['update'](_0x4db0c7)['then'](function(_0x1bfff6){return _0x1bfff6;});}return null;};}function removeEntity(_0x30106f,_0x604ab7){return function(_0x1747f1){if(_0x1747f1){return _0x1747f1['destroy']()[_0x26a0('0x21')](function(){_0x30106f[_0x26a0('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe6c07e,_0x4bffcc){return function(_0x2e171a){if(!_0x2e171a){_0xe6c07e['sendStatus'](0x194);}return _0x2e171a;};}function handleError(_0x2e28b3,_0x3beefa){_0x3beefa=_0x3beefa||0x1f4;return function(_0xfab0ad){logger[_0x26a0('0x22')](_0xfab0ad[_0x26a0('0x23')]);if(_0xfab0ad[_0x26a0('0x24')]){delete _0xfab0ad[_0x26a0('0x24')];}_0x2e28b3['status'](_0x3beefa)[_0x26a0('0x25')](_0xfab0ad);};}exports['index']=function(_0x552d09,_0x249634){var _0x5ac4cf={},_0x10d508={},_0x3baa0d={'count':0x0,'rows':[]};var _0x590ebf=_[_0x26a0('0x26')](db[_0x26a0('0x27')]['rawAttributes'],function(_0x372fe3){return{'name':_0x372fe3['fieldName'],'type':_0x372fe3[_0x26a0('0x28')][_0x26a0('0x29')]};});_0x10d508[_0x26a0('0x2a')]=_[_0x26a0('0x26')](_0x590ebf,_0x26a0('0x24'));_0x10d508['query']=_['keys'](_0x552d09['query']);_0x10d508[_0x26a0('0x2b')]=_[_0x26a0('0x2c')](_0x10d508[_0x26a0('0x2a')],_0x10d508[_0x26a0('0x2d')]);_0x5ac4cf[_0x26a0('0x2e')]=_[_0x26a0('0x2c')](_0x10d508['model'],qs['fields'](_0x552d09[_0x26a0('0x2d')][_0x26a0('0x2f')]));_0x5ac4cf[_0x26a0('0x2e')]=_0x5ac4cf[_0x26a0('0x2e')][_0x26a0('0x30')]?_0x5ac4cf[_0x26a0('0x2e')]:_0x10d508[_0x26a0('0x2a')];if(!_0x552d09['query'][_0x26a0('0x31')](_0x26a0('0x32'))){_0x5ac4cf[_0x26a0('0x1b')]=qs[_0x26a0('0x1b')](_0x552d09[_0x26a0('0x2d')]['limit']);_0x5ac4cf[_0x26a0('0x1a')]=qs[_0x26a0('0x1a')](_0x552d09['query'][_0x26a0('0x1a')]);}_0x5ac4cf[_0x26a0('0x33')]=qs['sort'](_0x552d09[_0x26a0('0x2d')][_0x26a0('0x34')]);_0x5ac4cf[_0x26a0('0x35')]=qs[_0x26a0('0x2b')](_[_0x26a0('0x36')](_0x552d09[_0x26a0('0x2d')],_0x10d508[_0x26a0('0x2b')]),_0x590ebf);if(_0x552d09[_0x26a0('0x2d')][_0x26a0('0x37')]){_0x5ac4cf['where']=_[_0x26a0('0x38')](_0x5ac4cf[_0x26a0('0x35')],{'$or':_[_0x26a0('0x26')](_0x590ebf,function(_0x2803cd){if(_0x2803cd[_0x26a0('0x28')]!==_0x26a0('0x39')){var _0x32f8ed={};_0x32f8ed[_0x2803cd[_0x26a0('0x24')]]={'$like':'%'+_0x552d09['query']['filter']+'%'};return _0x32f8ed;}})});}_0x5ac4cf=_[_0x26a0('0x38')]({},_0x5ac4cf,_0x552d09[_0x26a0('0x3a')]);var _0x4ade29={'where':_0x5ac4cf[_0x26a0('0x35')]};return db[_0x26a0('0x27')][_0x26a0('0x1c')](_0x4ade29)['then'](function(_0x20e943){_0x3baa0d[_0x26a0('0x1c')]=_0x20e943;if(_0x552d09[_0x26a0('0x2d')]['includeAll']){_0x5ac4cf[_0x26a0('0x3b')]=[{'all':!![]}];}return db['ZohoConfiguration']['findAll'](_0x5ac4cf);})[_0x26a0('0x21')](function(_0x50d8d0){_0x3baa0d[_0x26a0('0x3c')]=_0x50d8d0;return _0x3baa0d;})[_0x26a0('0x21')](respondWithFilteredResult(_0x249634,_0x5ac4cf))['catch'](handleError(_0x249634,null));};exports[_0x26a0('0x3d')]=function(_0xfe40a0,_0xf3741f){var _0x1f8787={'raw':![],'where':{'id':_0xfe40a0[_0x26a0('0x3e')]['id']}},_0x3305d3={};_0x3305d3['model']=_[_0x26a0('0x3f')](db[_0x26a0('0x27')][_0x26a0('0x40')]);_0x3305d3[_0x26a0('0x2d')]=_['keys'](_0xfe40a0[_0x26a0('0x2d')]);_0x3305d3[_0x26a0('0x2b')]=_[_0x26a0('0x2c')](_0x3305d3[_0x26a0('0x2a')],_0x3305d3[_0x26a0('0x2d')]);_0x1f8787[_0x26a0('0x2e')]=_['intersection'](_0x3305d3[_0x26a0('0x2a')],qs[_0x26a0('0x2f')](_0xfe40a0[_0x26a0('0x2d')]['fields']));_0x1f8787['attributes']=_0x1f8787['attributes'][_0x26a0('0x30')]?_0x1f8787[_0x26a0('0x2e')]:_0x3305d3['model'];if(_0xfe40a0[_0x26a0('0x2d')]['includeAll']){_0x1f8787[_0x26a0('0x3b')]=[{'all':!![]}];}_0x1f8787=_['merge']({},_0x1f8787,_0xfe40a0[_0x26a0('0x3a')]);return db[_0x26a0('0x27')][_0x26a0('0x41')](_0x1f8787)[_0x26a0('0x21')](handleEntityNotFound(_0xf3741f,null))[_0x26a0('0x21')](respondWithResult(_0xf3741f,null))[_0x26a0('0x42')](handleError(_0xf3741f,null));};exports[_0x26a0('0x43')]=function(_0x1de643,_0x1fec7f){return db[_0x26a0('0x27')][_0x26a0('0x43')](_0x1de643['body'],{})['then'](respondWithResult(_0x1fec7f,0xc9))[_0x26a0('0x42')](handleError(_0x1fec7f,null));};exports['update']=function(_0x2ab6a1,_0x2e754b){if(_0x2ab6a1[_0x26a0('0x44')]['id']){delete _0x2ab6a1[_0x26a0('0x44')]['id'];}return db[_0x26a0('0x27')]['find']({'where':{'id':_0x2ab6a1[_0x26a0('0x3e')]['id']}})[_0x26a0('0x21')](handleEntityNotFound(_0x2e754b,null))[_0x26a0('0x21')](saveUpdates(_0x2ab6a1[_0x26a0('0x44')],null))['then'](respondWithResult(_0x2e754b,null))[_0x26a0('0x42')](handleError(_0x2e754b,null));};exports[_0x26a0('0x45')]=function(_0x338c79,_0x38f405){return db['ZohoConfiguration'][_0x26a0('0x41')]({'where':{'id':_0x338c79[_0x26a0('0x3e')]['id']}})[_0x26a0('0x21')](handleEntityNotFound(_0x38f405,null))[_0x26a0('0x21')](removeEntity(_0x38f405,null))[_0x26a0('0x42')](handleError(_0x38f405,null));};exports['getFields']=function(_0x10e166,_0x50daac,_0x59f4af){var _0x1cb275={};var _0x1bfc64={};var _0x4dbccc;var _0x166085;return db['ZohoConfiguration'][_0x26a0('0x46')]({'where':{'id':_0x10e166[_0x26a0('0x3e')]['id']}})[_0x26a0('0x21')](handleEntityNotFound(_0x50daac,null))[_0x26a0('0x21')](function(_0x6ada8e){if(_0x6ada8e){_0x4dbccc=_0x6ada8e;_0x1bfc64[_0x26a0('0x2a')]=_[_0x26a0('0x3f')](db[_0x26a0('0x47')][_0x26a0('0x40')]);_0x1bfc64['query']=_[_0x26a0('0x3f')](_0x10e166['query']);_0x1bfc64[_0x26a0('0x2b')]=_['intersection'](_0x1bfc64['model'],_0x1bfc64[_0x26a0('0x2d')]);_0x1cb275['attributes']=_['intersection'](_0x1bfc64['model'],qs['fields'](_0x10e166['query']['fields']));_0x1cb275[_0x26a0('0x2e')]=_0x1cb275[_0x26a0('0x2e')][_0x26a0('0x30')]?_0x1cb275['attributes']:_0x1bfc64[_0x26a0('0x2a')];_0x1cb275[_0x26a0('0x33')]=qs[_0x26a0('0x34')](_0x10e166[_0x26a0('0x2d')]['sort']);_0x1cb275[_0x26a0('0x35')]=qs['filters'](_[_0x26a0('0x36')](_0x10e166['query'],_0x1bfc64['filters']));if(_0x10e166[_0x26a0('0x2d')][_0x26a0('0x37')]){_0x1cb275[_0x26a0('0x35')]=_[_0x26a0('0x38')](_0x1cb275[_0x26a0('0x35')],{'$or':_[_0x26a0('0x26')](_0x1cb275['attributes'],function(_0x24bedc){var _0x5ef32f={};_0x5ef32f[_0x24bedc]={'$like':'%'+_0x10e166[_0x26a0('0x2d')]['filter']+'%'};return _0x5ef32f;})});}_0x1cb275=_[_0x26a0('0x38')]({},_0x1cb275,_0x10e166['options']);return _0x4dbccc[_0x26a0('0x48')](_0x1cb275);}})[_0x26a0('0x21')](function(_0x20e793){if(_0x20e793){_0x166085=_0x20e793[_0x26a0('0x30')];if(!_0x10e166['query'][_0x26a0('0x31')](_0x26a0('0x32'))){_0x1cb275[_0x26a0('0x1b')]=qs['limit'](_0x10e166[_0x26a0('0x2d')]['limit']);_0x1cb275[_0x26a0('0x1a')]=qs[_0x26a0('0x1a')](_0x10e166[_0x26a0('0x2d')][_0x26a0('0x1a')]);}return _0x4dbccc[_0x26a0('0x48')](_0x1cb275);}})[_0x26a0('0x21')](function(_0x3f0364){if(_0x3f0364){return _0x3f0364?{'count':_0x166085,'rows':_0x3f0364}:null;}})[_0x26a0('0x21')](respondWithResult(_0x50daac,null))['catch'](handleError(_0x50daac,null));};exports[_0x26a0('0x49')]=function(_0x2eaf2c,_0x30fdab,_0x940cc3){var _0x1c55ee={};var _0x3318ad={};var _0x1355e8;var _0x1eefa7;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x2eaf2c[_0x26a0('0x3e')]['id']}})[_0x26a0('0x21')](handleEntityNotFound(_0x30fdab,null))[_0x26a0('0x21')](function(_0x509e89){if(_0x509e89){_0x1355e8=_0x509e89;_0x3318ad[_0x26a0('0x2a')]=_['keys'](db[_0x26a0('0x47')][_0x26a0('0x40')]);_0x3318ad[_0x26a0('0x2d')]=_[_0x26a0('0x3f')](_0x2eaf2c[_0x26a0('0x2d')]);_0x3318ad[_0x26a0('0x2b')]=_[_0x26a0('0x2c')](_0x3318ad['model'],_0x3318ad[_0x26a0('0x2d')]);_0x1c55ee[_0x26a0('0x2e')]=_[_0x26a0('0x2c')](_0x3318ad[_0x26a0('0x2a')],qs[_0x26a0('0x2f')](_0x2eaf2c[_0x26a0('0x2d')][_0x26a0('0x2f')]));_0x1c55ee[_0x26a0('0x2e')]=_0x1c55ee[_0x26a0('0x2e')][_0x26a0('0x30')]?_0x1c55ee[_0x26a0('0x2e')]:_0x3318ad[_0x26a0('0x2a')];_0x1c55ee[_0x26a0('0x33')]=qs[_0x26a0('0x34')](_0x2eaf2c[_0x26a0('0x2d')][_0x26a0('0x34')]);_0x1c55ee['where']=qs['filters'](_[_0x26a0('0x36')](_0x2eaf2c[_0x26a0('0x2d')],_0x3318ad['filters']));if(_0x2eaf2c[_0x26a0('0x2d')][_0x26a0('0x37')]){_0x1c55ee[_0x26a0('0x35')]=_[_0x26a0('0x38')](_0x1c55ee['where'],{'$or':_['map'](_0x1c55ee['attributes'],function(_0x21bf11){var _0x1a19ae={};_0x1a19ae[_0x21bf11]={'$like':'%'+_0x2eaf2c[_0x26a0('0x2d')][_0x26a0('0x37')]+'%'};return _0x1a19ae;})});}_0x1c55ee=_['merge']({},_0x1c55ee,_0x2eaf2c[_0x26a0('0x3a')]);return _0x1355e8['getSubjects'](_0x1c55ee);}})[_0x26a0('0x21')](function(_0x17c9db){if(_0x17c9db){_0x1eefa7=_0x17c9db['length'];if(!_0x2eaf2c[_0x26a0('0x2d')][_0x26a0('0x31')](_0x26a0('0x32'))){_0x1c55ee[_0x26a0('0x1b')]=qs[_0x26a0('0x1b')](_0x2eaf2c['query'][_0x26a0('0x1b')]);_0x1c55ee[_0x26a0('0x1a')]=qs['offset'](_0x2eaf2c[_0x26a0('0x2d')][_0x26a0('0x1a')]);}return _0x1355e8[_0x26a0('0x49')](_0x1c55ee);}})[_0x26a0('0x21')](function(_0xce72d3){if(_0xce72d3){return _0xce72d3?{'count':_0x1eefa7,'rows':_0xce72d3}:null;}})['then'](respondWithResult(_0x30fdab,null))['catch'](handleError(_0x30fdab,null));};exports[_0x26a0('0x4a')]=function(_0x5b682b,_0x202e1b,_0x4768d4){var _0x1c2651={};var _0xe8a6a7={};var _0x2a7744;var _0x48f83f;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x5b682b[_0x26a0('0x3e')]['id']}})['then'](handleEntityNotFound(_0x202e1b,null))[_0x26a0('0x21')](function(_0x5ded98){if(_0x5ded98){_0x2a7744=_0x5ded98;_0xe8a6a7[_0x26a0('0x2a')]=_[_0x26a0('0x3f')](db[_0x26a0('0x47')][_0x26a0('0x40')]);_0xe8a6a7[_0x26a0('0x2d')]=_[_0x26a0('0x3f')](_0x5b682b['query']);_0xe8a6a7[_0x26a0('0x2b')]=_['intersection'](_0xe8a6a7[_0x26a0('0x2a')],_0xe8a6a7[_0x26a0('0x2d')]);_0x1c2651[_0x26a0('0x2e')]=_[_0x26a0('0x2c')](_0xe8a6a7[_0x26a0('0x2a')],qs[_0x26a0('0x2f')](_0x5b682b[_0x26a0('0x2d')]['fields']));_0x1c2651[_0x26a0('0x2e')]=_0x1c2651[_0x26a0('0x2e')][_0x26a0('0x30')]?_0x1c2651['attributes']:_0xe8a6a7[_0x26a0('0x2a')];_0x1c2651[_0x26a0('0x33')]=qs[_0x26a0('0x34')](_0x5b682b[_0x26a0('0x2d')][_0x26a0('0x34')]);_0x1c2651[_0x26a0('0x35')]=qs[_0x26a0('0x2b')](_[_0x26a0('0x36')](_0x5b682b[_0x26a0('0x2d')],_0xe8a6a7['filters']));if(_0x5b682b['query'][_0x26a0('0x37')]){_0x1c2651[_0x26a0('0x35')]=_[_0x26a0('0x38')](_0x1c2651[_0x26a0('0x35')],{'$or':_['map'](_0x1c2651[_0x26a0('0x2e')],function(_0xdd5808){var _0x37e238={};_0x37e238[_0xdd5808]={'$like':'%'+_0x5b682b['query'][_0x26a0('0x37')]+'%'};return _0x37e238;})});}_0x1c2651=_[_0x26a0('0x38')]({},_0x1c2651,_0x5b682b[_0x26a0('0x3a')]);return _0x2a7744[_0x26a0('0x4a')](_0x1c2651);}})[_0x26a0('0x21')](function(_0x26f854){if(_0x26f854){_0x48f83f=_0x26f854[_0x26a0('0x30')];if(!_0x5b682b[_0x26a0('0x2d')][_0x26a0('0x31')]('nolimit')){_0x1c2651[_0x26a0('0x1b')]=qs[_0x26a0('0x1b')](_0x5b682b[_0x26a0('0x2d')][_0x26a0('0x1b')]);_0x1c2651[_0x26a0('0x1a')]=qs[_0x26a0('0x1a')](_0x5b682b['query'][_0x26a0('0x1a')]);}return _0x2a7744[_0x26a0('0x4a')](_0x1c2651);}})[_0x26a0('0x21')](function(_0x4bd790){if(_0x4bd790){return _0x4bd790?{'count':_0x48f83f,'rows':_0x4bd790}:null;}})[_0x26a0('0x21')](respondWithResult(_0x202e1b,null))[_0x26a0('0x42')](handleError(_0x202e1b,null));};
\ No newline at end of file
+var _0xc59e=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','findAll','then','catch','show','includeAll','include','create','body','find','params','getFields','findOne','length','ZohoField','getSubjects','getDescriptions','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','end','error','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','key','query','keys','filters','intersection','model','fields','attributes'];(function(_0x2890c3,_0x4807ac){var _0x316fa7=function(_0x1fada6){while(--_0x1fada6){_0x2890c3['push'](_0x2890c3['shift']());}};_0x316fa7(++_0x4807ac);}(_0xc59e,0x6e));var _0xec59=function(_0x38ccb4,_0x1897b8){_0x38ccb4=_0x38ccb4-0x0;var _0x4bc3db=_0xc59e[_0x38ccb4];return _0x4bc3db;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xec59('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xec59('0x1'));var moment=require(_0xec59('0x2'));var BPromise=require(_0xec59('0x3'));var Mustache=require(_0xec59('0x4'));var util=require(_0xec59('0x5'));var path=require(_0xec59('0x6'));var sox=require(_0xec59('0x7'));var csv=require(_0xec59('0x8'));var ejs=require(_0xec59('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xec59('0xa'));var squel=require(_0xec59('0xb'));var crypto=require(_0xec59('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xec59('0xd'));var toCsv=require('to-csv');var querystring=require(_0xec59('0xe'));var Papa=require(_0xec59('0xf'));var Redis=require(_0xec59('0x10'));var authService=require(_0xec59('0x11'));var qs=require(_0xec59('0x12'));var as=require(_0xec59('0x13'));var hardwareService=require(_0xec59('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xec59('0x15'));var config=require(_0xec59('0x16'));var licenseUtil=require(_0xec59('0x17'));var db=require(_0xec59('0x18'))['db'];function respondWithStatusCode(_0x1c4941,_0x38be1e){_0x38be1e=_0x38be1e||0xcc;return function(_0x1200b7){if(_0x1200b7){return _0x1c4941[_0xec59('0x19')](_0x38be1e);}return _0x1c4941[_0xec59('0x1a')](_0x38be1e)['end']();};}function respondWithResult(_0x4c7b8d,_0x34cf49){_0x34cf49=_0x34cf49||0xc8;return function(_0x56f21b){if(_0x56f21b){return _0x4c7b8d[_0xec59('0x1a')](_0x34cf49)[_0xec59('0x1b')](_0x56f21b);}};}function respondWithFilteredResult(_0x2d3072,_0x469491){return function(_0x13e2aa){if(_0x13e2aa){var _0x35a154=typeof _0x469491[_0xec59('0x1c')]===_0xec59('0x1d')&&typeof _0x469491[_0xec59('0x1e')]==='undefined';var _0x47d16e=_0x13e2aa[_0xec59('0x1f')];var _0x5f4f57=_0x35a154?0x0:_0x469491[_0xec59('0x1c')];var _0x30f842=_0x35a154?_0x13e2aa[_0xec59('0x1f')]:_0x469491[_0xec59('0x1c')]+_0x469491[_0xec59('0x1e')];var _0x3f3e26;if(_0x30f842>=_0x47d16e){_0x30f842=_0x47d16e;_0x3f3e26=0xc8;}else{_0x3f3e26=0xce;}_0x2d3072[_0xec59('0x1a')](_0x3f3e26);return _0x2d3072[_0xec59('0x20')](_0xec59('0x21'),_0x5f4f57+'-'+_0x30f842+'/'+_0x47d16e)[_0xec59('0x1b')](_0x13e2aa);}return null;};}function patchUpdates(_0x26ac8b){return function(_0x36a286){try{jsonpatch[_0xec59('0x22')](_0x36a286,_0x26ac8b,!![]);}catch(_0x429381){return BPromise[_0xec59('0x23')](_0x429381);}return _0x36a286[_0xec59('0x24')]();};}function saveUpdates(_0x284df9,_0x89e07f){return function(_0x425f24){if(_0x425f24){return _0x425f24[_0xec59('0x25')](_0x284df9)['then'](function(_0x221571){return _0x221571;});}return null;};}function removeEntity(_0x35b80a,_0x45a95d){return function(_0x21fa13){if(_0x21fa13){return _0x21fa13[_0xec59('0x26')]()['then'](function(){_0x35b80a[_0xec59('0x1a')](0xcc)[_0xec59('0x27')]();});}};}function handleEntityNotFound(_0x4a6eb8,_0x368d61){return function(_0xc0615a){if(!_0xc0615a){_0x4a6eb8[_0xec59('0x19')](0x194);}return _0xc0615a;};}function handleError(_0x26db2b,_0x57a9d2){_0x57a9d2=_0x57a9d2||0x1f4;return function(_0x44c32a){logger[_0xec59('0x28')](_0x44c32a['stack']);if(_0x44c32a['name']){delete _0x44c32a[_0xec59('0x29')];}_0x26db2b[_0xec59('0x1a')](_0x57a9d2)[_0xec59('0x2a')](_0x44c32a);};}exports[_0xec59('0x2b')]=function(_0x4952e1,_0x4856be){var _0xa388e0={},_0xa7363c={},_0x1f8828={'count':0x0,'rows':[]};var _0x42bf23=_[_0xec59('0x2c')](db[_0xec59('0x2d')][_0xec59('0x2e')],function(_0x37dd1e){return{'name':_0x37dd1e[_0xec59('0x2f')],'type':_0x37dd1e['type'][_0xec59('0x30')]};});_0xa7363c['model']=_[_0xec59('0x2c')](_0x42bf23,_0xec59('0x29'));_0xa7363c[_0xec59('0x31')]=_[_0xec59('0x32')](_0x4952e1[_0xec59('0x31')]);_0xa7363c[_0xec59('0x33')]=_[_0xec59('0x34')](_0xa7363c[_0xec59('0x35')],_0xa7363c[_0xec59('0x31')]);_0xa388e0['attributes']=_[_0xec59('0x34')](_0xa7363c[_0xec59('0x35')],qs[_0xec59('0x36')](_0x4952e1[_0xec59('0x31')][_0xec59('0x36')]));_0xa388e0['attributes']=_0xa388e0[_0xec59('0x37')]['length']?_0xa388e0[_0xec59('0x37')]:_0xa7363c['model'];if(!_0x4952e1[_0xec59('0x31')][_0xec59('0x38')](_0xec59('0x39'))){_0xa388e0[_0xec59('0x1e')]=qs['limit'](_0x4952e1[_0xec59('0x31')][_0xec59('0x1e')]);_0xa388e0[_0xec59('0x1c')]=qs[_0xec59('0x1c')](_0x4952e1[_0xec59('0x31')]['offset']);}_0xa388e0[_0xec59('0x3a')]=qs[_0xec59('0x3b')](_0x4952e1[_0xec59('0x31')][_0xec59('0x3b')]);_0xa388e0[_0xec59('0x3c')]=qs[_0xec59('0x33')](_[_0xec59('0x3d')](_0x4952e1['query'],_0xa7363c[_0xec59('0x33')]),_0x42bf23);if(_0x4952e1[_0xec59('0x31')][_0xec59('0x3e')]){_0xa388e0['where']=_[_0xec59('0x3f')](_0xa388e0[_0xec59('0x3c')],{'$or':_[_0xec59('0x2c')](_0x42bf23,function(_0x59d335){if(_0x59d335[_0xec59('0x40')]!==_0xec59('0x41')){var _0x2be3b0={};_0x2be3b0[_0x59d335[_0xec59('0x29')]]={'$like':'%'+_0x4952e1[_0xec59('0x31')][_0xec59('0x3e')]+'%'};return _0x2be3b0;}})});}_0xa388e0=_[_0xec59('0x3f')]({},_0xa388e0,_0x4952e1[_0xec59('0x42')]);var _0x20938e={'where':_0xa388e0[_0xec59('0x3c')]};return db[_0xec59('0x2d')][_0xec59('0x1f')](_0x20938e)['then'](function(_0x3b3007){_0x1f8828[_0xec59('0x1f')]=_0x3b3007;if(_0x4952e1[_0xec59('0x31')]['includeAll']){_0xa388e0['include']=[{'all':!![]}];}return db[_0xec59('0x2d')][_0xec59('0x43')](_0xa388e0);})[_0xec59('0x44')](function(_0x35435e){_0x1f8828['rows']=_0x35435e;return _0x1f8828;})[_0xec59('0x44')](respondWithFilteredResult(_0x4856be,_0xa388e0))[_0xec59('0x45')](handleError(_0x4856be,null));};exports[_0xec59('0x46')]=function(_0x2af403,_0x3eea64){var _0x4069d0={'raw':![],'where':{'id':_0x2af403['params']['id']}},_0x162394={};_0x162394[_0xec59('0x35')]=_['keys'](db['ZohoConfiguration'][_0xec59('0x2e')]);_0x162394['query']=_[_0xec59('0x32')](_0x2af403[_0xec59('0x31')]);_0x162394[_0xec59('0x33')]=_[_0xec59('0x34')](_0x162394['model'],_0x162394['query']);_0x4069d0['attributes']=_[_0xec59('0x34')](_0x162394[_0xec59('0x35')],qs[_0xec59('0x36')](_0x2af403[_0xec59('0x31')][_0xec59('0x36')]));_0x4069d0['attributes']=_0x4069d0[_0xec59('0x37')]['length']?_0x4069d0[_0xec59('0x37')]:_0x162394[_0xec59('0x35')];if(_0x2af403[_0xec59('0x31')][_0xec59('0x47')]){_0x4069d0[_0xec59('0x48')]=[{'all':!![]}];}_0x4069d0=_[_0xec59('0x3f')]({},_0x4069d0,_0x2af403[_0xec59('0x42')]);return db['ZohoConfiguration']['find'](_0x4069d0)['then'](handleEntityNotFound(_0x3eea64,null))[_0xec59('0x44')](respondWithResult(_0x3eea64,null))[_0xec59('0x45')](handleError(_0x3eea64,null));};exports[_0xec59('0x49')]=function(_0x3de678,_0x27f6eb){return db[_0xec59('0x2d')][_0xec59('0x49')](_0x3de678[_0xec59('0x4a')],{})[_0xec59('0x44')](respondWithResult(_0x27f6eb,0xc9))['catch'](handleError(_0x27f6eb,null));};exports[_0xec59('0x25')]=function(_0x34bcb2,_0x4bcdb9){if(_0x34bcb2['body']['id']){delete _0x34bcb2['body']['id'];}return db['ZohoConfiguration'][_0xec59('0x4b')]({'where':{'id':_0x34bcb2[_0xec59('0x4c')]['id']}})[_0xec59('0x44')](handleEntityNotFound(_0x4bcdb9,null))[_0xec59('0x44')](saveUpdates(_0x34bcb2['body'],null))[_0xec59('0x44')](respondWithResult(_0x4bcdb9,null))[_0xec59('0x45')](handleError(_0x4bcdb9,null));};exports['destroy']=function(_0x17ce03,_0x520541){return db[_0xec59('0x2d')][_0xec59('0x4b')]({'where':{'id':_0x17ce03['params']['id']}})['then'](handleEntityNotFound(_0x520541,null))[_0xec59('0x44')](removeEntity(_0x520541,null))[_0xec59('0x45')](handleError(_0x520541,null));};exports[_0xec59('0x4d')]=function(_0x2c7508,_0x560263,_0x23f48a){var _0x5a3dc7={};var _0x15a075={};var _0x7e9881;var _0x3d88a7;return db[_0xec59('0x2d')][_0xec59('0x4e')]({'where':{'id':_0x2c7508[_0xec59('0x4c')]['id']}})[_0xec59('0x44')](handleEntityNotFound(_0x560263,null))[_0xec59('0x44')](function(_0x55022d){if(_0x55022d){_0x7e9881=_0x55022d;_0x15a075[_0xec59('0x35')]=_[_0xec59('0x32')](db['ZohoField'][_0xec59('0x2e')]);_0x15a075[_0xec59('0x31')]=_[_0xec59('0x32')](_0x2c7508[_0xec59('0x31')]);_0x15a075[_0xec59('0x33')]=_[_0xec59('0x34')](_0x15a075[_0xec59('0x35')],_0x15a075[_0xec59('0x31')]);_0x5a3dc7[_0xec59('0x37')]=_[_0xec59('0x34')](_0x15a075[_0xec59('0x35')],qs[_0xec59('0x36')](_0x2c7508[_0xec59('0x31')]['fields']));_0x5a3dc7['attributes']=_0x5a3dc7[_0xec59('0x37')][_0xec59('0x4f')]?_0x5a3dc7[_0xec59('0x37')]:_0x15a075[_0xec59('0x35')];_0x5a3dc7[_0xec59('0x3a')]=qs[_0xec59('0x3b')](_0x2c7508['query'][_0xec59('0x3b')]);_0x5a3dc7[_0xec59('0x3c')]=qs[_0xec59('0x33')](_[_0xec59('0x3d')](_0x2c7508[_0xec59('0x31')],_0x15a075['filters']));if(_0x2c7508[_0xec59('0x31')]['filter']){_0x5a3dc7['where']=_[_0xec59('0x3f')](_0x5a3dc7['where'],{'$or':_[_0xec59('0x2c')](_0x5a3dc7['attributes'],function(_0x439b67){var _0x4b7b7f={};_0x4b7b7f[_0x439b67]={'$like':'%'+_0x2c7508[_0xec59('0x31')]['filter']+'%'};return _0x4b7b7f;})});}_0x5a3dc7=_['merge']({},_0x5a3dc7,_0x2c7508[_0xec59('0x42')]);return _0x7e9881[_0xec59('0x4d')](_0x5a3dc7);}})[_0xec59('0x44')](function(_0x78b8d5){if(_0x78b8d5){_0x3d88a7=_0x78b8d5[_0xec59('0x4f')];if(!_0x2c7508[_0xec59('0x31')]['hasOwnProperty'](_0xec59('0x39'))){_0x5a3dc7[_0xec59('0x1e')]=qs[_0xec59('0x1e')](_0x2c7508[_0xec59('0x31')][_0xec59('0x1e')]);_0x5a3dc7[_0xec59('0x1c')]=qs[_0xec59('0x1c')](_0x2c7508[_0xec59('0x31')][_0xec59('0x1c')]);}return _0x7e9881[_0xec59('0x4d')](_0x5a3dc7);}})[_0xec59('0x44')](function(_0x46dbae){if(_0x46dbae){return _0x46dbae?{'count':_0x3d88a7,'rows':_0x46dbae}:null;}})[_0xec59('0x44')](respondWithResult(_0x560263,null))[_0xec59('0x45')](handleError(_0x560263,null));};exports['getSubjects']=function(_0x1678e0,_0x5c6308,_0x4d5dc9){var _0x4bd0b9={};var _0x29c23f={};var _0x14388e;var _0x47426b;return db[_0xec59('0x2d')][_0xec59('0x4e')]({'where':{'id':_0x1678e0[_0xec59('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5c6308,null))[_0xec59('0x44')](function(_0x4a0281){if(_0x4a0281){_0x14388e=_0x4a0281;_0x29c23f['model']=_[_0xec59('0x32')](db[_0xec59('0x50')]['rawAttributes']);_0x29c23f[_0xec59('0x31')]=_[_0xec59('0x32')](_0x1678e0['query']);_0x29c23f[_0xec59('0x33')]=_[_0xec59('0x34')](_0x29c23f['model'],_0x29c23f['query']);_0x4bd0b9[_0xec59('0x37')]=_['intersection'](_0x29c23f[_0xec59('0x35')],qs[_0xec59('0x36')](_0x1678e0[_0xec59('0x31')][_0xec59('0x36')]));_0x4bd0b9[_0xec59('0x37')]=_0x4bd0b9[_0xec59('0x37')]['length']?_0x4bd0b9[_0xec59('0x37')]:_0x29c23f[_0xec59('0x35')];_0x4bd0b9['order']=qs['sort'](_0x1678e0[_0xec59('0x31')][_0xec59('0x3b')]);_0x4bd0b9[_0xec59('0x3c')]=qs[_0xec59('0x33')](_[_0xec59('0x3d')](_0x1678e0[_0xec59('0x31')],_0x29c23f[_0xec59('0x33')]));if(_0x1678e0[_0xec59('0x31')]['filter']){_0x4bd0b9['where']=_[_0xec59('0x3f')](_0x4bd0b9['where'],{'$or':_[_0xec59('0x2c')](_0x4bd0b9[_0xec59('0x37')],function(_0x3bd145){var _0x734c97={};_0x734c97[_0x3bd145]={'$like':'%'+_0x1678e0['query'][_0xec59('0x3e')]+'%'};return _0x734c97;})});}_0x4bd0b9=_[_0xec59('0x3f')]({},_0x4bd0b9,_0x1678e0[_0xec59('0x42')]);return _0x14388e[_0xec59('0x51')](_0x4bd0b9);}})[_0xec59('0x44')](function(_0x2d2876){if(_0x2d2876){_0x47426b=_0x2d2876['length'];if(!_0x1678e0['query'][_0xec59('0x38')](_0xec59('0x39'))){_0x4bd0b9[_0xec59('0x1e')]=qs[_0xec59('0x1e')](_0x1678e0[_0xec59('0x31')]['limit']);_0x4bd0b9[_0xec59('0x1c')]=qs[_0xec59('0x1c')](_0x1678e0[_0xec59('0x31')]['offset']);}return _0x14388e[_0xec59('0x51')](_0x4bd0b9);}})[_0xec59('0x44')](function(_0x376f02){if(_0x376f02){return _0x376f02?{'count':_0x47426b,'rows':_0x376f02}:null;}})['then'](respondWithResult(_0x5c6308,null))['catch'](handleError(_0x5c6308,null));};exports[_0xec59('0x52')]=function(_0x2716ed,_0x4e6af7,_0x508efc){var _0x313075={};var _0x339fca={};var _0x45bac8;var _0xc38d58;return db[_0xec59('0x2d')][_0xec59('0x4e')]({'where':{'id':_0x2716ed[_0xec59('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4e6af7,null))['then'](function(_0x408c4a){if(_0x408c4a){_0x45bac8=_0x408c4a;_0x339fca[_0xec59('0x35')]=_[_0xec59('0x32')](db[_0xec59('0x50')]['rawAttributes']);_0x339fca[_0xec59('0x31')]=_[_0xec59('0x32')](_0x2716ed[_0xec59('0x31')]);_0x339fca[_0xec59('0x33')]=_[_0xec59('0x34')](_0x339fca['model'],_0x339fca['query']);_0x313075[_0xec59('0x37')]=_[_0xec59('0x34')](_0x339fca[_0xec59('0x35')],qs[_0xec59('0x36')](_0x2716ed[_0xec59('0x31')][_0xec59('0x36')]));_0x313075[_0xec59('0x37')]=_0x313075[_0xec59('0x37')]['length']?_0x313075[_0xec59('0x37')]:_0x339fca[_0xec59('0x35')];_0x313075[_0xec59('0x3a')]=qs[_0xec59('0x3b')](_0x2716ed[_0xec59('0x31')][_0xec59('0x3b')]);_0x313075[_0xec59('0x3c')]=qs['filters'](_[_0xec59('0x3d')](_0x2716ed[_0xec59('0x31')],_0x339fca['filters']));if(_0x2716ed[_0xec59('0x31')][_0xec59('0x3e')]){_0x313075[_0xec59('0x3c')]=_[_0xec59('0x3f')](_0x313075[_0xec59('0x3c')],{'$or':_[_0xec59('0x2c')](_0x313075[_0xec59('0x37')],function(_0x390c32){var _0x28bb5c={};_0x28bb5c[_0x390c32]={'$like':'%'+_0x2716ed[_0xec59('0x31')]['filter']+'%'};return _0x28bb5c;})});}_0x313075=_[_0xec59('0x3f')]({},_0x313075,_0x2716ed[_0xec59('0x42')]);return _0x45bac8[_0xec59('0x52')](_0x313075);}})['then'](function(_0x4dcd78){if(_0x4dcd78){_0xc38d58=_0x4dcd78[_0xec59('0x4f')];if(!_0x2716ed[_0xec59('0x31')][_0xec59('0x38')](_0xec59('0x39'))){_0x313075[_0xec59('0x1e')]=qs[_0xec59('0x1e')](_0x2716ed[_0xec59('0x31')][_0xec59('0x1e')]);_0x313075['offset']=qs[_0xec59('0x1c')](_0x2716ed[_0xec59('0x31')]['offset']);}return _0x45bac8[_0xec59('0x52')](_0x313075);}})[_0xec59('0x44')](function(_0xa48c9){if(_0xa48c9){return _0xa48c9?{'count':_0xc38d58,'rows':_0xa48c9}:null;}})[_0xec59('0x44')](respondWithResult(_0x4e6af7,null))['catch'](handleError(_0x4e6af7,null));};
\ No newline at end of file
index 8ef3c96..a170241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc674=['exports','int_zoho_configurations','../../config/logger','moment','bluebird','path','rimraf','./intZohoConfiguration.attributes'];(function(_0x2df507,_0x553862){var _0x1f7167=function(_0x11319e){while(--_0x11319e){_0x2df507['push'](_0x2df507['shift']());}};_0x1f7167(++_0x553862);}(_0xc674,0xb2));var _0x4c67=function(_0x594e11,_0x28f652){_0x594e11=_0x594e11-0x0;var _0x5418ad=_0xc674[_0x594e11];return _0x5418ad;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4c67('0x0'))('api');var moment=require(_0x4c67('0x1'));var BPromise=require(_0x4c67('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4c67('0x3'));var rimraf=require(_0x4c67('0x4'));var config=require('../../config/environment');var attributes=require(_0x4c67('0x5'));module[_0x4c67('0x6')]=function(_0x497b65,_0x266ff6){return _0x497b65['define']('ZohoConfiguration',attributes,{'tableName':_0x4c67('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd7cf=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','lodash','util'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xd7cf,0xc2));var _0xfd7c=function(_0x21bb2f,_0x4199b9){_0x21bb2f=_0x21bb2f-0x0;var _0x279b0e=_0xd7cf[_0x21bb2f];return _0x279b0e;};'use strict';var _=require(_0xfd7c('0x0'));var util=require(_0xfd7c('0x1'));var logger=require(_0xfd7c('0x2'))(_0xfd7c('0x3'));var moment=require(_0xfd7c('0x4'));var BPromise=require(_0xfd7c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfd7c('0x6'));var rimraf=require(_0xfd7c('0x7'));var config=require(_0xfd7c('0x8'));var attributes=require(_0xfd7c('0x9'));module[_0xfd7c('0xa')]=function(_0x2a8090,_0x1b8dc1){return _0x2a8090[_0xfd7c('0xb')](_0xfd7c('0xc'),attributes,{'tableName':_0xfd7c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d709116..26fac52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d7e=['jayson/promise','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x27e4ed,_0x3bd74f){var _0x444152=function(_0x50faf6){while(--_0x50faf6){_0x27e4ed['push'](_0x27e4ed['shift']());}};_0x444152(++_0x3bd74f);}(_0x3d7e,0x199));var _0xe3d7=function(_0x386c3e,_0x44a375){_0x386c3e=_0x386c3e-0x0;var _0x4b8e13=_0x3d7e[_0x386c3e];return _0x4b8e13;};'use strict';var _=require(_0xe3d7('0x0'));var util=require('util');var moment=require(_0xe3d7('0x1'));var BPromise=require(_0xe3d7('0x2'));var rs=require(_0xe3d7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe3d7('0x4'))['db'];var utils=require(_0xe3d7('0x5'));var logger=require(_0xe3d7('0x6'))(_0xe3d7('0x7'));var config=require(_0xe3d7('0x8'));var jayson=require(_0xe3d7('0x9'));var client=jayson['client'][_0xe3d7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x51ee3b,_0xdb62a,_0x44ca45){return new BPromise(function(_0x2bd6e5,_0x3cb1c8){return client[_0xe3d7('0xb')](_0x51ee3b,_0x44ca45)[_0xe3d7('0xc')](function(_0x4bec60){logger[_0xe3d7('0xd')](_0xe3d7('0xe'),_0xdb62a,_0xe3d7('0xf'));logger[_0xe3d7('0x10')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0xdb62a,_0xe3d7('0xf'),JSON[_0xe3d7('0x11')](_0x4bec60));if(_0x4bec60[_0xe3d7('0x12')]){if(_0x4bec60['error']['code']===0x1f4){logger[_0xe3d7('0x12')]('ZohoConfiguration,\x20%s,\x20%s',_0xdb62a,_0x4bec60[_0xe3d7('0x12')][_0xe3d7('0x13')]);return _0x3cb1c8(_0x4bec60[_0xe3d7('0x12')][_0xe3d7('0x13')]);}logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0xdb62a,_0x4bec60[_0xe3d7('0x12')][_0xe3d7('0x13')]);return _0x2bd6e5(_0x4bec60[_0xe3d7('0x12')][_0xe3d7('0x13')]);}else{logger[_0xe3d7('0xd')](_0xe3d7('0xe'),_0xdb62a,_0xe3d7('0xf'));_0x2bd6e5(_0x4bec60[_0xe3d7('0x14')][_0xe3d7('0x13')]);}})[_0xe3d7('0x15')](function(_0x1c7386){logger[_0xe3d7('0x12')](_0xe3d7('0xe'),_0xdb62a,_0x1c7386);_0x3cb1c8(_0x1c7386);});});}
\ No newline at end of file
+var _0x28d4=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoConfiguration,\x20%s,\x20%s','result'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x28d4,0x126));var _0x428d=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x28d4[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x428d('0x0'));var util=require(_0x428d('0x1'));var moment=require(_0x428d('0x2'));var BPromise=require(_0x428d('0x3'));var rs=require(_0x428d('0x4'));var fs=require('fs');var Redis=require(_0x428d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x428d('0x6'));var logger=require(_0x428d('0x7'))(_0x428d('0x8'));var config=require(_0x428d('0x9'));var jayson=require(_0x428d('0xa'));var client=jayson['client'][_0x428d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x57986a,_0xb2bb4,_0x25531f){return new BPromise(function(_0x1a3d21,_0x1a24e6){return client[_0x428d('0xc')](_0x57986a,_0x25531f)['then'](function(_0x427eb6){logger[_0x428d('0xd')]('ZohoConfiguration,\x20%s,\x20%s',_0xb2bb4,'request\x20sent');logger['debug'](_0x428d('0xe'),_0xb2bb4,'request\x20sent',JSON[_0x428d('0xf')](_0x427eb6));if(_0x427eb6['error']){if(_0x427eb6[_0x428d('0x10')][_0x428d('0x11')]===0x1f4){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0xb2bb4,_0x427eb6[_0x428d('0x10')][_0x428d('0x12')]);return _0x1a24e6(_0x427eb6[_0x428d('0x10')]['message']);}logger[_0x428d('0x10')](_0x428d('0x13'),_0xb2bb4,_0x427eb6['error'][_0x428d('0x12')]);return _0x1a3d21(_0x427eb6[_0x428d('0x10')]['message']);}else{logger['info'](_0x428d('0x13'),_0xb2bb4,'request\x20sent');_0x1a3d21(_0x427eb6[_0x428d('0x14')]['message']);}})['catch'](function(_0x4e37d9){logger[_0x428d('0x10')](_0x428d('0x13'),_0xb2bb4,_0x4e37d9);_0x1a24e6(_0x4e37d9);});});}
\ No newline at end of file
index 894ca0b..d8cfb61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddec=['multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoField.controller','get','isAuthenticated','/:id','post','create','put','update','destroy','exports'];(function(_0x2f76ae,_0x36b482){var _0xf0923f=function(_0x53fcea){while(--_0x53fcea){_0x2f76ae['push'](_0x2f76ae['shift']());}};_0xf0923f(++_0x36b482);}(_0xddec,0xbb));var _0xcdde=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xddec[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0xcdde('0x0'));var util=require('util');var path=require(_0xcdde('0x1'));var timeout=require(_0xcdde('0x2'));var express=require('express');var router=express[_0xcdde('0x3')]();var fs_extra=require(_0xcdde('0x4'));var auth=require(_0xcdde('0x5'));var interaction=require(_0xcdde('0x6'));var config=require('../../config/environment');var controller=require(_0xcdde('0x7'));router[_0xcdde('0x8')]('/',auth[_0xcdde('0x9')](),controller['index']);router['get'](_0xcdde('0xa'),auth[_0xcdde('0x9')](),controller['show']);router[_0xcdde('0xb')]('/',auth[_0xcdde('0x9')](),controller[_0xcdde('0xc')]);router[_0xcdde('0xd')](_0xcdde('0xa'),auth['isAuthenticated'](),controller[_0xcdde('0xe')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xcdde('0xf')]);module[_0xcdde('0x10')]=router;
\ No newline at end of file
+var _0x168d=['index','post','create','/:id','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated'];(function(_0x57ed38,_0x2a9812){var _0x3b1dc2=function(_0x10f2a0){while(--_0x10f2a0){_0x57ed38['push'](_0x57ed38['shift']());}};_0x3b1dc2(++_0x2a9812);}(_0x168d,0x124));var _0xd168=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x168d[_0x32f7d7];return _0x133d09;};'use strict';var multer=require(_0xd168('0x0'));var util=require(_0xd168('0x1'));var path=require('path');var timeout=require(_0xd168('0x2'));var express=require(_0xd168('0x3'));var router=express[_0xd168('0x4')]();var fs_extra=require(_0xd168('0x5'));var auth=require(_0xd168('0x6'));var interaction=require(_0xd168('0x7'));var config=require(_0xd168('0x8'));var controller=require(_0xd168('0x9'));router[_0xd168('0xa')]('/',auth[_0xd168('0xb')](),controller[_0xd168('0xc')]);router[_0xd168('0xa')]('/:id',auth[_0xd168('0xb')](),controller['show']);router[_0xd168('0xd')]('/',auth[_0xd168('0xb')](),controller[_0xd168('0xe')]);router['put'](_0xd168('0xf'),auth['isAuthenticated'](),controller[_0xd168('0x10')]);router[_0xd168('0x11')](_0xd168('0xf'),auth[_0xd168('0xb')](),controller['destroy']);module[_0xd168('0x12')]=router;
\ No newline at end of file
index 268076a..429dce5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4118=['picklist','STRING','ENUM','variable','sequelize','exports','string','customVariable','keyValue'];(function(_0x270c16,_0x4b0727){var _0x56ae39=function(_0x57cda8){while(--_0x57cda8){_0x270c16['push'](_0x270c16['shift']());}};_0x56ae39(++_0x4b0727);}(_0x4118,0x187));var _0x8411=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x4118[_0x5f09c5];return _0x426ad9;};'use strict';var Sequelize=require(_0x8411('0x0'));module[_0x8411('0x1')]={'type':{'type':Sequelize['ENUM'](_0x8411('0x2'),'variable',_0x8411('0x3'),_0x8411('0x4'),_0x8411('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x8411('0x6')]},'key':{'type':Sequelize[_0x8411('0x6')]},'keyType':{'type':Sequelize[_0x8411('0x7')](_0x8411('0x2'),_0x8411('0x8'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8411('0x6')]},'nameField':{'type':Sequelize[_0x8411('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8411('0x6')]}};
\ No newline at end of file
+var _0xde84=['BOOLEAN','sequelize','exports','string','variable','customVariable','picklist','STRING','ENUM'];(function(_0x4b7b62,_0x4920a9){var _0x2280df=function(_0x21e1f8){while(--_0x21e1f8){_0x4b7b62['push'](_0x4b7b62['shift']());}};_0x2280df(++_0x4920a9);}(_0xde84,0xac));var _0x4de8=function(_0x56be8c,_0x550373){_0x56be8c=_0x56be8c-0x0;var _0x485355=_0xde84[_0x56be8c];return _0x485355;};'use strict';var Sequelize=require(_0x4de8('0x0'));module[_0x4de8('0x1')]={'type':{'type':Sequelize['ENUM'](_0x4de8('0x2'),_0x4de8('0x3'),_0x4de8('0x4'),'keyValue',_0x4de8('0x5')),'defaultValue':_0x4de8('0x2')},'content':{'type':Sequelize[_0x4de8('0x6')]},'key':{'type':Sequelize[_0x4de8('0x6')]},'keyType':{'type':Sequelize[_0x4de8('0x7')](_0x4de8('0x2'),_0x4de8('0x3'),_0x4de8('0x4'))},'keyContent':{'type':Sequelize[_0x4de8('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x4de8('0x6')]},'customField':{'type':Sequelize[_0x4de8('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4de8('0x6')]}};
\ No newline at end of file
index 4df80d0..6f82348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dab=['rawAttributes','include','options','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ZohoField','query','keys','intersection','model','fields','attributes','length','nolimit','order','sort','filters','filter','merge','where','type','VIRTUAL','count','includeAll','findAll','rows','params'];(function(_0x200827,_0x4af951){var _0x120047=function(_0x4431de){while(--_0x4431de){_0x200827['push'](_0x200827['shift']());}};_0x120047(++_0x4af951);}(_0x9dab,0x17e));var _0xb9da=function(_0x277b58,_0x4bdf34){_0x277b58=_0x277b58-0x0;var _0x499973=_0x9dab[_0x277b58];return _0x499973;};'use strict';var emlformat=require(_0xb9da('0x0'));var rimraf=require(_0xb9da('0x1'));var zipdir=require(_0xb9da('0x2'));var jsonpatch=require(_0xb9da('0x3'));var rp=require(_0xb9da('0x4'));var moment=require('moment');var BPromise=require(_0xb9da('0x5'));var Mustache=require(_0xb9da('0x6'));var util=require(_0xb9da('0x7'));var path=require('path');var sox=require(_0xb9da('0x8'));var csv=require(_0xb9da('0x9'));var ejs=require(_0xb9da('0xa'));var fs=require('fs');var fs_extra=require(_0xb9da('0xb'));var _=require('lodash');var squel=require(_0xb9da('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb9da('0xd'));var toCsv=require('to-csv');var querystring=require(_0xb9da('0xe'));var Papa=require(_0xb9da('0xf'));var Redis=require('ioredis');var authService=require(_0xb9da('0x10'));var qs=require(_0xb9da('0x11'));var as=require(_0xb9da('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb9da('0x13'))(_0xb9da('0x14'));var utils=require(_0xb9da('0x15'));var config=require(_0xb9da('0x16'));var licenseUtil=require(_0xb9da('0x17'));var db=require(_0xb9da('0x18'))['db'];function respondWithStatusCode(_0x2a31b5,_0x2e00b8){_0x2e00b8=_0x2e00b8||0xcc;return function(_0x4c6588){if(_0x4c6588){return _0x2a31b5[_0xb9da('0x19')](_0x2e00b8);}return _0x2a31b5[_0xb9da('0x1a')](_0x2e00b8)[_0xb9da('0x1b')]();};}function respondWithResult(_0x369731,_0x375357){_0x375357=_0x375357||0xc8;return function(_0x3f520d){if(_0x3f520d){return _0x369731[_0xb9da('0x1a')](_0x375357)[_0xb9da('0x1c')](_0x3f520d);}};}function respondWithFilteredResult(_0x43db73,_0x4ec181){return function(_0x11718b){if(_0x11718b){var _0x3e51f1=typeof _0x4ec181[_0xb9da('0x1d')]===_0xb9da('0x1e')&&typeof _0x4ec181[_0xb9da('0x1f')]==='undefined';var _0x2fc2a0=_0x11718b['count'];var _0x3b2053=_0x3e51f1?0x0:_0x4ec181['offset'];var _0x41957d=_0x3e51f1?_0x11718b['count']:_0x4ec181['offset']+_0x4ec181[_0xb9da('0x1f')];var _0x3ff39a;if(_0x41957d>=_0x2fc2a0){_0x41957d=_0x2fc2a0;_0x3ff39a=0xc8;}else{_0x3ff39a=0xce;}_0x43db73[_0xb9da('0x1a')](_0x3ff39a);return _0x43db73[_0xb9da('0x20')](_0xb9da('0x21'),_0x3b2053+'-'+_0x41957d+'/'+_0x2fc2a0)[_0xb9da('0x1c')](_0x11718b);}return null;};}function patchUpdates(_0x1296c3){return function(_0xd519ab){try{jsonpatch[_0xb9da('0x22')](_0xd519ab,_0x1296c3,!![]);}catch(_0x3be8e8){return BPromise[_0xb9da('0x23')](_0x3be8e8);}return _0xd519ab[_0xb9da('0x24')]();};}function saveUpdates(_0x44799a,_0x5321db){return function(_0x375712){if(_0x375712){return _0x375712[_0xb9da('0x25')](_0x44799a)[_0xb9da('0x26')](function(_0x4b7669){return _0x4b7669;});}return null;};}function removeEntity(_0x5a7429,_0x2131d3){return function(_0x1121da){if(_0x1121da){return _0x1121da[_0xb9da('0x27')]()[_0xb9da('0x26')](function(){_0x5a7429[_0xb9da('0x1a')](0xcc)[_0xb9da('0x1b')]();});}};}function handleEntityNotFound(_0x3c2046,_0x452e3f){return function(_0x5bdfc5){if(!_0x5bdfc5){_0x3c2046['sendStatus'](0x194);}return _0x5bdfc5;};}function handleError(_0x5725c2,_0x48d961){_0x48d961=_0x48d961||0x1f4;return function(_0x9978e1){logger[_0xb9da('0x28')](_0x9978e1[_0xb9da('0x29')]);if(_0x9978e1[_0xb9da('0x2a')]){delete _0x9978e1['name'];}_0x5725c2[_0xb9da('0x1a')](_0x48d961)[_0xb9da('0x2b')](_0x9978e1);};}exports[_0xb9da('0x2c')]=function(_0x1e0f6a,_0x89cef0){var _0x4ef469={},_0x485b1d={},_0x49fcde={'count':0x0,'rows':[]};var _0xc163dc=_[_0xb9da('0x2d')](db[_0xb9da('0x2e')]['rawAttributes'],function(_0x414d20){return{'name':_0x414d20['fieldName'],'type':_0x414d20['type']['key']};});_0x485b1d['model']=_[_0xb9da('0x2d')](_0xc163dc,'name');_0x485b1d[_0xb9da('0x2f')]=_[_0xb9da('0x30')](_0x1e0f6a[_0xb9da('0x2f')]);_0x485b1d['filters']=_[_0xb9da('0x31')](_0x485b1d[_0xb9da('0x32')],_0x485b1d[_0xb9da('0x2f')]);_0x4ef469['attributes']=_[_0xb9da('0x31')](_0x485b1d[_0xb9da('0x32')],qs['fields'](_0x1e0f6a[_0xb9da('0x2f')][_0xb9da('0x33')]));_0x4ef469[_0xb9da('0x34')]=_0x4ef469['attributes'][_0xb9da('0x35')]?_0x4ef469['attributes']:_0x485b1d[_0xb9da('0x32')];if(!_0x1e0f6a['query']['hasOwnProperty'](_0xb9da('0x36'))){_0x4ef469[_0xb9da('0x1f')]=qs['limit'](_0x1e0f6a[_0xb9da('0x2f')][_0xb9da('0x1f')]);_0x4ef469[_0xb9da('0x1d')]=qs['offset'](_0x1e0f6a[_0xb9da('0x2f')][_0xb9da('0x1d')]);}_0x4ef469[_0xb9da('0x37')]=qs[_0xb9da('0x38')](_0x1e0f6a[_0xb9da('0x2f')][_0xb9da('0x38')]);_0x4ef469['where']=qs[_0xb9da('0x39')](_['pick'](_0x1e0f6a[_0xb9da('0x2f')],_0x485b1d[_0xb9da('0x39')]),_0xc163dc);if(_0x1e0f6a[_0xb9da('0x2f')][_0xb9da('0x3a')]){_0x4ef469['where']=_[_0xb9da('0x3b')](_0x4ef469[_0xb9da('0x3c')],{'$or':_['map'](_0xc163dc,function(_0x5f2a81){if(_0x5f2a81[_0xb9da('0x3d')]!==_0xb9da('0x3e')){var _0x4e2751={};_0x4e2751[_0x5f2a81[_0xb9da('0x2a')]]={'$like':'%'+_0x1e0f6a[_0xb9da('0x2f')][_0xb9da('0x3a')]+'%'};return _0x4e2751;}})});}_0x4ef469=_[_0xb9da('0x3b')]({},_0x4ef469,_0x1e0f6a['options']);var _0xf05dd2={'where':_0x4ef469[_0xb9da('0x3c')]};return db['ZohoField'][_0xb9da('0x3f')](_0xf05dd2)['then'](function(_0x35e93d){_0x49fcde['count']=_0x35e93d;if(_0x1e0f6a['query'][_0xb9da('0x40')]){_0x4ef469['include']=[{'all':!![]}];}return db['ZohoField'][_0xb9da('0x41')](_0x4ef469);})['then'](function(_0x434fe6){_0x49fcde[_0xb9da('0x42')]=_0x434fe6;return _0x49fcde;})[_0xb9da('0x26')](respondWithFilteredResult(_0x89cef0,_0x4ef469))['catch'](handleError(_0x89cef0,null));};exports['show']=function(_0x378c50,_0x597562){var _0x16f317={'raw':!![],'where':{'id':_0x378c50[_0xb9da('0x43')]['id']}},_0x36a324={};_0x36a324[_0xb9da('0x32')]=_[_0xb9da('0x30')](db[_0xb9da('0x2e')][_0xb9da('0x44')]);_0x36a324[_0xb9da('0x2f')]=_[_0xb9da('0x30')](_0x378c50[_0xb9da('0x2f')]);_0x36a324[_0xb9da('0x39')]=_['intersection'](_0x36a324['model'],_0x36a324[_0xb9da('0x2f')]);_0x16f317[_0xb9da('0x34')]=_[_0xb9da('0x31')](_0x36a324[_0xb9da('0x32')],qs[_0xb9da('0x33')](_0x378c50['query']['fields']));_0x16f317[_0xb9da('0x34')]=_0x16f317[_0xb9da('0x34')][_0xb9da('0x35')]?_0x16f317[_0xb9da('0x34')]:_0x36a324[_0xb9da('0x32')];if(_0x378c50[_0xb9da('0x2f')][_0xb9da('0x40')]){_0x16f317[_0xb9da('0x45')]=[{'all':!![]}];}_0x16f317=_[_0xb9da('0x3b')]({},_0x16f317,_0x378c50[_0xb9da('0x46')]);return db[_0xb9da('0x2e')][_0xb9da('0x47')](_0x16f317)[_0xb9da('0x26')](handleEntityNotFound(_0x597562,null))[_0xb9da('0x26')](respondWithResult(_0x597562,null))[_0xb9da('0x48')](handleError(_0x597562,null));};exports[_0xb9da('0x49')]=function(_0x467e34,_0x381c4f){return db[_0xb9da('0x2e')][_0xb9da('0x49')](_0x467e34['body'],{})[_0xb9da('0x26')](respondWithResult(_0x381c4f,0xc9))['catch'](handleError(_0x381c4f,null));};exports['update']=function(_0x4d6b1e,_0x34e469){if(_0x4d6b1e[_0xb9da('0x4a')]['id']){delete _0x4d6b1e['body']['id'];}return db[_0xb9da('0x2e')][_0xb9da('0x47')]({'where':{'id':_0x4d6b1e[_0xb9da('0x43')]['id']}})[_0xb9da('0x26')](handleEntityNotFound(_0x34e469,null))[_0xb9da('0x26')](saveUpdates(_0x4d6b1e['body'],null))[_0xb9da('0x26')](respondWithResult(_0x34e469,null))[_0xb9da('0x48')](handleError(_0x34e469,null));};exports['destroy']=function(_0x2146aa,_0x5a055b){return db[_0xb9da('0x2e')][_0xb9da('0x47')]({'where':{'id':_0x2146aa[_0xb9da('0x43')]['id']}})[_0xb9da('0x26')](handleEntityNotFound(_0x5a055b,null))[_0xb9da('0x26')](removeEntity(_0x5a055b,null))[_0xb9da('0x48')](handleError(_0x5a055b,null));};
\ No newline at end of file
+var _0xa683=['pick','merge','type','filter','then','includeAll','findAll','rows','catch','show','params','include','options','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','destroy','sendStatus','error','name','send','index','map','ZohoField','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where'];(function(_0x5bdf15,_0x39f070){var _0x1c7939=function(_0x2895e9){while(--_0x2895e9){_0x5bdf15['push'](_0x5bdf15['shift']());}};_0x1c7939(++_0x39f070);}(_0xa683,0x1de));var _0x3a68=function(_0x137325,_0x14354d){_0x137325=_0x137325-0x0;var _0xdaa0c9=_0xa683[_0x137325];return _0xdaa0c9;};'use strict';var emlformat=require(_0x3a68('0x0'));var rimraf=require(_0x3a68('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3a68('0x2'));var rp=require(_0x3a68('0x3'));var moment=require(_0x3a68('0x4'));var BPromise=require(_0x3a68('0x5'));var Mustache=require(_0x3a68('0x6'));var util=require(_0x3a68('0x7'));var path=require(_0x3a68('0x8'));var sox=require('sox');var csv=require(_0x3a68('0x9'));var ejs=require(_0x3a68('0xa'));var fs=require('fs');var fs_extra=require(_0x3a68('0xb'));var _=require(_0x3a68('0xc'));var squel=require(_0x3a68('0xd'));var crypto=require(_0x3a68('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3a68('0x9'));var querystring=require(_0x3a68('0xf'));var Papa=require(_0x3a68('0x10'));var Redis=require(_0x3a68('0x11'));var authService=require(_0x3a68('0x12'));var qs=require(_0x3a68('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3a68('0x14'));var logger=require('../../config/logger')(_0x3a68('0x15'));var utils=require(_0x3a68('0x16'));var config=require(_0x3a68('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3a68('0x18'))['db'];function respondWithStatusCode(_0x48b1ba,_0x379105){_0x379105=_0x379105||0xcc;return function(_0x279bf0){if(_0x279bf0){return _0x48b1ba['sendStatus'](_0x379105);}return _0x48b1ba[_0x3a68('0x19')](_0x379105)[_0x3a68('0x1a')]();};}function respondWithResult(_0x3d8916,_0x7e2604){_0x7e2604=_0x7e2604||0xc8;return function(_0x10e864){if(_0x10e864){return _0x3d8916[_0x3a68('0x19')](_0x7e2604)['json'](_0x10e864);}};}function respondWithFilteredResult(_0x4aa37f,_0x2b8043){return function(_0x394f8d){if(_0x394f8d){var _0x5e9760=typeof _0x2b8043[_0x3a68('0x1b')]===_0x3a68('0x1c')&&typeof _0x2b8043['limit']==='undefined';var _0x45fdaf=_0x394f8d[_0x3a68('0x1d')];var _0x5afbf6=_0x5e9760?0x0:_0x2b8043['offset'];var _0x13bd17=_0x5e9760?_0x394f8d['count']:_0x2b8043[_0x3a68('0x1b')]+_0x2b8043[_0x3a68('0x1e')];var _0x399c79;if(_0x13bd17>=_0x45fdaf){_0x13bd17=_0x45fdaf;_0x399c79=0xc8;}else{_0x399c79=0xce;}_0x4aa37f['status'](_0x399c79);return _0x4aa37f[_0x3a68('0x1f')](_0x3a68('0x20'),_0x5afbf6+'-'+_0x13bd17+'/'+_0x45fdaf)[_0x3a68('0x21')](_0x394f8d);}return null;};}function patchUpdates(_0xdd9aba){return function(_0xa846f8){try{jsonpatch[_0x3a68('0x22')](_0xa846f8,_0xdd9aba,!![]);}catch(_0x3013fc){return BPromise[_0x3a68('0x23')](_0x3013fc);}return _0xa846f8[_0x3a68('0x24')]();};}function saveUpdates(_0x346b4d,_0x2c6bca){return function(_0x1b5162){if(_0x1b5162){return _0x1b5162[_0x3a68('0x25')](_0x346b4d)['then'](function(_0x1f8355){return _0x1f8355;});}return null;};}function removeEntity(_0x4c3cbe,_0x8234e8){return function(_0x34efa5){if(_0x34efa5){return _0x34efa5[_0x3a68('0x26')]()['then'](function(){_0x4c3cbe[_0x3a68('0x19')](0xcc)[_0x3a68('0x1a')]();});}};}function handleEntityNotFound(_0x55d81d,_0x3dc250){return function(_0x166ecd){if(!_0x166ecd){_0x55d81d[_0x3a68('0x27')](0x194);}return _0x166ecd;};}function handleError(_0x283c0d,_0x5a08ae){_0x5a08ae=_0x5a08ae||0x1f4;return function(_0x1f41ec){logger[_0x3a68('0x28')](_0x1f41ec['stack']);if(_0x1f41ec[_0x3a68('0x29')]){delete _0x1f41ec[_0x3a68('0x29')];}_0x283c0d[_0x3a68('0x19')](_0x5a08ae)[_0x3a68('0x2a')](_0x1f41ec);};}exports[_0x3a68('0x2b')]=function(_0x399f53,_0x74b306){var _0x265c24={},_0x56f0ab={},_0x578089={'count':0x0,'rows':[]};var _0xe10bca=_[_0x3a68('0x2c')](db[_0x3a68('0x2d')][_0x3a68('0x2e')],function(_0x2fc696){return{'name':_0x2fc696[_0x3a68('0x2f')],'type':_0x2fc696['type']['key']};});_0x56f0ab[_0x3a68('0x30')]=_[_0x3a68('0x2c')](_0xe10bca,_0x3a68('0x29'));_0x56f0ab[_0x3a68('0x31')]=_[_0x3a68('0x32')](_0x399f53[_0x3a68('0x31')]);_0x56f0ab[_0x3a68('0x33')]=_[_0x3a68('0x34')](_0x56f0ab[_0x3a68('0x30')],_0x56f0ab[_0x3a68('0x31')]);_0x265c24['attributes']=_[_0x3a68('0x34')](_0x56f0ab[_0x3a68('0x30')],qs[_0x3a68('0x35')](_0x399f53['query'][_0x3a68('0x35')]));_0x265c24['attributes']=_0x265c24['attributes'][_0x3a68('0x36')]?_0x265c24[_0x3a68('0x37')]:_0x56f0ab[_0x3a68('0x30')];if(!_0x399f53['query'][_0x3a68('0x38')](_0x3a68('0x39'))){_0x265c24[_0x3a68('0x1e')]=qs[_0x3a68('0x1e')](_0x399f53[_0x3a68('0x31')][_0x3a68('0x1e')]);_0x265c24['offset']=qs[_0x3a68('0x1b')](_0x399f53[_0x3a68('0x31')]['offset']);}_0x265c24[_0x3a68('0x3a')]=qs[_0x3a68('0x3b')](_0x399f53['query'][_0x3a68('0x3b')]);_0x265c24[_0x3a68('0x3c')]=qs[_0x3a68('0x33')](_[_0x3a68('0x3d')](_0x399f53[_0x3a68('0x31')],_0x56f0ab[_0x3a68('0x33')]),_0xe10bca);if(_0x399f53[_0x3a68('0x31')]['filter']){_0x265c24[_0x3a68('0x3c')]=_[_0x3a68('0x3e')](_0x265c24[_0x3a68('0x3c')],{'$or':_[_0x3a68('0x2c')](_0xe10bca,function(_0x3cb61c){if(_0x3cb61c[_0x3a68('0x3f')]!=='VIRTUAL'){var _0x54fbb2={};_0x54fbb2[_0x3cb61c['name']]={'$like':'%'+_0x399f53[_0x3a68('0x31')][_0x3a68('0x40')]+'%'};return _0x54fbb2;}})});}_0x265c24=_[_0x3a68('0x3e')]({},_0x265c24,_0x399f53['options']);var _0xf9f6f6={'where':_0x265c24['where']};return db[_0x3a68('0x2d')][_0x3a68('0x1d')](_0xf9f6f6)[_0x3a68('0x41')](function(_0x4e4a11){_0x578089['count']=_0x4e4a11;if(_0x399f53[_0x3a68('0x31')][_0x3a68('0x42')]){_0x265c24['include']=[{'all':!![]}];}return db[_0x3a68('0x2d')][_0x3a68('0x43')](_0x265c24);})[_0x3a68('0x41')](function(_0xbc668e){_0x578089[_0x3a68('0x44')]=_0xbc668e;return _0x578089;})[_0x3a68('0x41')](respondWithFilteredResult(_0x74b306,_0x265c24))[_0x3a68('0x45')](handleError(_0x74b306,null));};exports[_0x3a68('0x46')]=function(_0x498be6,_0x2c02be){var _0x2e3170={'raw':!![],'where':{'id':_0x498be6[_0x3a68('0x47')]['id']}},_0x4548b6={};_0x4548b6['model']=_[_0x3a68('0x32')](db[_0x3a68('0x2d')][_0x3a68('0x2e')]);_0x4548b6[_0x3a68('0x31')]=_[_0x3a68('0x32')](_0x498be6['query']);_0x4548b6['filters']=_[_0x3a68('0x34')](_0x4548b6[_0x3a68('0x30')],_0x4548b6[_0x3a68('0x31')]);_0x2e3170[_0x3a68('0x37')]=_['intersection'](_0x4548b6[_0x3a68('0x30')],qs[_0x3a68('0x35')](_0x498be6['query'][_0x3a68('0x35')]));_0x2e3170[_0x3a68('0x37')]=_0x2e3170[_0x3a68('0x37')][_0x3a68('0x36')]?_0x2e3170['attributes']:_0x4548b6[_0x3a68('0x30')];if(_0x498be6['query'][_0x3a68('0x42')]){_0x2e3170[_0x3a68('0x48')]=[{'all':!![]}];}_0x2e3170=_[_0x3a68('0x3e')]({},_0x2e3170,_0x498be6[_0x3a68('0x49')]);return db[_0x3a68('0x2d')]['find'](_0x2e3170)['then'](handleEntityNotFound(_0x2c02be,null))[_0x3a68('0x41')](respondWithResult(_0x2c02be,null))[_0x3a68('0x45')](handleError(_0x2c02be,null));};exports[_0x3a68('0x4a')]=function(_0x385219,_0x5d072f){return db['ZohoField'][_0x3a68('0x4a')](_0x385219[_0x3a68('0x4b')],{})[_0x3a68('0x41')](respondWithResult(_0x5d072f,0xc9))[_0x3a68('0x45')](handleError(_0x5d072f,null));};exports['update']=function(_0xe779c3,_0x29261b){if(_0xe779c3['body']['id']){delete _0xe779c3['body']['id'];}return db[_0x3a68('0x2d')][_0x3a68('0x4c')]({'where':{'id':_0xe779c3['params']['id']}})[_0x3a68('0x41')](handleEntityNotFound(_0x29261b,null))['then'](saveUpdates(_0xe779c3[_0x3a68('0x4b')],null))[_0x3a68('0x41')](respondWithResult(_0x29261b,null))[_0x3a68('0x45')](handleError(_0x29261b,null));};exports[_0x3a68('0x26')]=function(_0x3af2c4,_0x32c762){return db['ZohoField'][_0x3a68('0x4c')]({'where':{'id':_0x3af2c4[_0x3a68('0x47')]['id']}})[_0x3a68('0x41')](handleEntityNotFound(_0x32c762,null))[_0x3a68('0x41')](removeEntity(_0x32c762,null))[_0x3a68('0x45')](handleError(_0x32c762,null));};
\ No newline at end of file
index 585f479..d0507d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x12f42c,_0x415b84){var _0xbcf616=function(_0x242128){while(--_0x242128){_0x12f42c['push'](_0x12f42c['shift']());}};_0xbcf616(++_0x415b84);}(_0x2a07,0x74));var _0x72a0=function(_0x3b3dcb,_0x5c873f){_0x3b3dcb=_0x3b3dcb-0x0;var _0x4054b4=_0x2a07[_0x3b3dcb];return _0x4054b4;};'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
+var _0x7046=['lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./intZohoField.attributes','exports','ZohoField','idField'];(function(_0x1ec818,_0x1ad248){var _0x3ea42a=function(_0x15d0e5){while(--_0x15d0e5){_0x1ec818['push'](_0x1ec818['shift']());}};_0x3ea42a(++_0x1ad248);}(_0x7046,0x144));var _0x6704=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x7046[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x6704('0x0'));var util=require(_0x6704('0x1'));var logger=require(_0x6704('0x2'))(_0x6704('0x3'));var moment=require('moment');var BPromise=require(_0x6704('0x4'));var rp=require(_0x6704('0x5'));var fs=require('fs');var path=require(_0x6704('0x6'));var rimraf=require('rimraf');var config=require(_0x6704('0x7'));var attributes=require(_0x6704('0x8'));module[_0x6704('0x9')]=function(_0x626a14,_0x2917be){return _0x626a14['define'](_0x6704('0xa'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x6704('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3f35560..c430c34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x870f=['jayson/promise','client','http','request','then','info','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoField,\x20%s,\x20%s','message','catch','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x294f30,_0x4cdb4c){var _0x39cd8b=function(_0xd61d6){while(--_0xd61d6){_0x294f30['push'](_0x294f30['shift']());}};_0x39cd8b(++_0x4cdb4c);}(_0x870f,0x1dd));var _0xf870=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x870f[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xf870('0x0'));var fs=require('fs');var Redis=require(_0xf870('0x1'));var db=require(_0xf870('0x2'))['db'];var utils=require(_0xf870('0x3'));var logger=require(_0xf870('0x4'))(_0xf870('0x5'));var config=require(_0xf870('0x6'));var jayson=require(_0xf870('0x7'));var client=jayson[_0xf870('0x8')][_0xf870('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x105e8d,_0x366a7f,_0x2abb06){return new BPromise(function(_0x2c78e2,_0x3631c1){return client[_0xf870('0xa')](_0x105e8d,_0x2abb06)[_0xf870('0xb')](function(_0xa6b7f9){logger[_0xf870('0xc')]('ZohoField,\x20%s,\x20%s',_0x366a7f,_0xf870('0xd'));logger[_0xf870('0xe')](_0xf870('0xf'),_0x366a7f,'request\x20sent',JSON[_0xf870('0x10')](_0xa6b7f9));if(_0xa6b7f9[_0xf870('0x11')]){if(_0xa6b7f9[_0xf870('0x11')][_0xf870('0x12')]===0x1f4){logger['error'](_0xf870('0x13'),_0x366a7f,_0xa6b7f9[_0xf870('0x11')]['message']);return _0x3631c1(_0xa6b7f9['error'][_0xf870('0x14')]);}logger[_0xf870('0x11')](_0xf870('0x13'),_0x366a7f,_0xa6b7f9[_0xf870('0x11')][_0xf870('0x14')]);return _0x2c78e2(_0xa6b7f9['error']['message']);}else{logger[_0xf870('0xc')]('ZohoField,\x20%s,\x20%s',_0x366a7f,_0xf870('0xd'));_0x2c78e2(_0xa6b7f9['result'][_0xf870('0x14')]);}})[_0xf870('0x15')](function(_0x3f26ce){logger[_0xf870('0x11')]('ZohoField,\x20%s,\x20%s',_0x366a7f,_0x3f26ce);_0x3631c1(_0x3f26ce);});});}
\ No newline at end of file
+var _0x651e=['stringify','code','error','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s'];(function(_0x3a5248,_0x34e201){var _0x4175a1=function(_0x5ad898){while(--_0x5ad898){_0x3a5248['push'](_0x3a5248['shift']());}};_0x4175a1(++_0x34e201);}(_0x651e,0x1e8));var _0xe651=function(_0x2296f3,_0x59ef46){_0x2296f3=_0x2296f3-0x0;var _0x29d615=_0x651e[_0x2296f3];return _0x29d615;};'use strict';var _=require(_0xe651('0x0'));var util=require('util');var moment=require(_0xe651('0x1'));var BPromise=require(_0xe651('0x2'));var rs=require(_0xe651('0x3'));var fs=require('fs');var Redis=require(_0xe651('0x4'));var db=require(_0xe651('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe651('0x6'))(_0xe651('0x7'));var config=require(_0xe651('0x8'));var jayson=require(_0xe651('0x9'));var client=jayson[_0xe651('0xa')][_0xe651('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5b2d9d,_0xc64c96,_0x5e99e0){return new BPromise(function(_0x5ac6f4,_0x2929d9){return client['request'](_0x5b2d9d,_0x5e99e0)[_0xe651('0xc')](function(_0x17ad90){logger[_0xe651('0xd')](_0xe651('0xe'),_0xc64c96,_0xe651('0xf'));logger[_0xe651('0x10')](_0xe651('0x11'),_0xc64c96,_0xe651('0xf'),JSON[_0xe651('0x12')](_0x17ad90));if(_0x17ad90['error']){if(_0x17ad90['error'][_0xe651('0x13')]===0x1f4){logger[_0xe651('0x14')]('ZohoField,\x20%s,\x20%s',_0xc64c96,_0x17ad90[_0xe651('0x14')][_0xe651('0x15')]);return _0x2929d9(_0x17ad90[_0xe651('0x14')][_0xe651('0x15')]);}logger[_0xe651('0x14')](_0xe651('0xe'),_0xc64c96,_0x17ad90[_0xe651('0x14')][_0xe651('0x15')]);return _0x5ac6f4(_0x17ad90['error'][_0xe651('0x15')]);}else{logger[_0xe651('0xd')](_0xe651('0xe'),_0xc64c96,_0xe651('0xf'));_0x5ac6f4(_0x17ad90['result'][_0xe651('0x15')]);}})[_0xe651('0x16')](function(_0x561e6e){logger[_0xe651('0x14')](_0xe651('0xe'),_0xc64c96,_0x561e6e);_0x2929d9(_0x561e6e);});});}
\ No newline at end of file
index d666b7e..4d81ff4 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(_0x10ec5c,_0x43aaf3){var _0x2055d1=function(_0x2469b7){while(--_0x2469b7){_0x10ec5c['push'](_0x10ec5c['shift']());}};_0x2055d1(++_0x43aaf3);}(_0xe706,0xa3));var _0x6e70=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xe706[_0x1ddedd];return _0xa3e1ac;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x232837,_0x5dadf4){var _0xdafc22=function(_0x3b95a3){while(--_0x3b95a3){_0x232837['push'](_0x232837['shift']());}};_0xdafc22(++_0x5dadf4);}(_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 3ddf00b..2cefad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b96=['unique_name_and_version','INTEGER','BOOLEAN','state','sequelize','exports','STRING'];(function(_0x4ae898,_0x124bdc){var _0x5bcf48=function(_0x333d81){while(--_0x333d81){_0x4ae898['push'](_0x4ae898['shift']());}};_0x5bcf48(++_0x124bdc);}(_0x0b96,0xa5));var _0x60b9=function(_0x91ae2,_0x43bbf5){_0x91ae2=_0x91ae2-0x0;var _0x9c07da=_0x0b96[_0x91ae2];return _0x9c07da;};'use strict';var Sequelize=require(_0x60b9('0x0'));module[_0x60b9('0x1')]={'name':{'type':Sequelize[_0x60b9('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x60b9('0x2')],'allowNull':![],'unique':_0x60b9('0x3')},'main':{'type':Sequelize[_0x60b9('0x2')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0x60b9('0x2')]},'path':{'type':Sequelize[_0x60b9('0x2')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0x60b9('0x4')]},'active':{'type':Sequelize[_0x60b9('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x60b9('0x2')]},'logo':{'type':Sequelize[_0x60b9('0x2')]},'state':{'type':Sequelize[_0x60b9('0x2')],'unique':_0x60b9('0x6')},'description':{'type':Sequelize[_0x60b9('0x2')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x60b9('0x2')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0xba31=['exports','unique_name_and_version','STRING','app.js','BOOLEAN','state'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0xba31,0x19e));var _0x1ba3=function(_0x3e0763,_0x3d12be){_0x3e0763=_0x3e0763-0x0;var _0x351ca2=_0xba31[_0x3e0763];return _0x351ca2;};'use strict';var Sequelize=require('sequelize');module[_0x1ba3('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x1ba3('0x1')},'main':{'type':Sequelize[_0x1ba3('0x2')],'defaultValue':_0x1ba3('0x3')},'filename':{'type':Sequelize[_0x1ba3('0x2')]},'path':{'type':Sequelize[_0x1ba3('0x2')]},'type':{'type':Sequelize[_0x1ba3('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x1ba3('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0x1ba3('0x2')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x1ba3('0x2')],'unique':_0x1ba3('0x5')},'description':{'type':Sequelize[_0x1ba3('0x2')]},'title':{'type':Sequelize[_0x1ba3('0x2')]},'remoteUri':{'type':Sequelize[_0x1ba3('0x2')]},'link':{'type':Sequelize[_0x1ba3('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index 27b01db..5429884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['reject','save','update','destroy','then','stack','name','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','VIRTUAL','options','Integration','includeAll','catch','show','params','create','body','find','eml-format','zip-dir','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x3f804e,_0x2889d2){var _0x3c5a1d=function(_0x2159d9){while(--_0x2159d9){_0x3f804e['push'](_0x3f804e['shift']());}};_0x3c5a1d(++_0x2889d2);}(_0xafc4,0x69));var _0x4afc=function(_0x3f29b4,_0x2b5b02){_0x3f29b4=_0x3f29b4-0x0;var _0x4d8893=_0xafc4[_0x3f29b4];return _0x4d8893;};'use strict';var emlformat=require(_0x4afc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4afc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4afc('0x2'));var moment=require(_0x4afc('0x3'));var BPromise=require(_0x4afc('0x4'));var Mustache=require(_0x4afc('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4afc('0x6'));var ejs=require(_0x4afc('0x7'));var fs=require('fs');var fs_extra=require(_0x4afc('0x8'));var _=require(_0x4afc('0x9'));var squel=require(_0x4afc('0xa'));var crypto=require(_0x4afc('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4afc('0xc'));var toCsv=require(_0x4afc('0x6'));var querystring=require(_0x4afc('0xd'));var Papa=require(_0x4afc('0xe'));var Redis=require(_0x4afc('0xf'));var authService=require(_0x4afc('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4afc('0x11'));var logger=require('../../config/logger')(_0x4afc('0x12'));var utils=require(_0x4afc('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x4afc('0x14'));var db=require(_0x4afc('0x15'))['db'];function respondWithStatusCode(_0x2b191c,_0x2768bf){_0x2768bf=_0x2768bf||0xcc;return function(_0x1d8f98){if(_0x1d8f98){return _0x2b191c[_0x4afc('0x16')](_0x2768bf);}return _0x2b191c[_0x4afc('0x17')](_0x2768bf)[_0x4afc('0x18')]();};}function respondWithResult(_0x5effb4,_0x26f3f1){_0x26f3f1=_0x26f3f1||0xc8;return function(_0x429fd8){if(_0x429fd8){return _0x5effb4[_0x4afc('0x17')](_0x26f3f1)[_0x4afc('0x19')](_0x429fd8);}};}function respondWithFilteredResult(_0x5f2dc9,_0x4e32e8){return function(_0x2452ae){if(_0x2452ae){var _0x4f3127=typeof _0x4e32e8[_0x4afc('0x1a')]===_0x4afc('0x1b')&&typeof _0x4e32e8[_0x4afc('0x1c')]===_0x4afc('0x1b');var _0x3a306f=_0x2452ae[_0x4afc('0x1d')];var _0x22f809=_0x4f3127?0x0:_0x4e32e8[_0x4afc('0x1a')];var _0x16365f=_0x4f3127?_0x2452ae[_0x4afc('0x1d')]:_0x4e32e8[_0x4afc('0x1a')]+_0x4e32e8['limit'];var _0x1a8f49;if(_0x16365f>=_0x3a306f){_0x16365f=_0x3a306f;_0x1a8f49=0xc8;}else{_0x1a8f49=0xce;}_0x5f2dc9[_0x4afc('0x17')](_0x1a8f49);return _0x5f2dc9[_0x4afc('0x1e')](_0x4afc('0x1f'),_0x22f809+'-'+_0x16365f+'/'+_0x3a306f)['json'](_0x2452ae);}return null;};}function patchUpdates(_0x3bddc0){return function(_0x30eda3){try{jsonpatch[_0x4afc('0x20')](_0x30eda3,_0x3bddc0,!![]);}catch(_0x280587){return BPromise[_0x4afc('0x21')](_0x280587);}return _0x30eda3[_0x4afc('0x22')]();};}function saveUpdates(_0x3ad7a5,_0x573a75){return function(_0x5403e4){if(_0x5403e4){return _0x5403e4[_0x4afc('0x23')](_0x3ad7a5)['then'](function(_0x37debf){return _0x37debf;});}return null;};}function removeEntity(_0x4e9a48,_0x1aa676){return function(_0x2a0314){if(_0x2a0314){return _0x2a0314[_0x4afc('0x24')]()[_0x4afc('0x25')](function(){_0x4e9a48[_0x4afc('0x17')](0xcc)[_0x4afc('0x18')]();});}};}function handleEntityNotFound(_0x40a0db,_0x383a71){return function(_0x2bb837){if(!_0x2bb837){_0x40a0db[_0x4afc('0x16')](0x194);}return _0x2bb837;};}function handleError(_0x4e8273,_0x359c07){_0x359c07=_0x359c07||0x1f4;return function(_0x35f5b3){logger['error'](_0x35f5b3[_0x4afc('0x26')]);if(_0x35f5b3[_0x4afc('0x27')]){delete _0x35f5b3[_0x4afc('0x27')];}_0x4e8273['status'](_0x359c07)['send'](_0x35f5b3);};}exports['index']=function(_0x426e9d,_0x5db47e){var _0x5e4747={},_0xd26d2f={},_0x628e42={'count':0x0,'rows':[]};var _0x494fe7=_['map'](db['Integration'][_0x4afc('0x28')],function(_0x34434a){return{'name':_0x34434a[_0x4afc('0x29')],'type':_0x34434a[_0x4afc('0x2a')][_0x4afc('0x2b')]};});_0xd26d2f[_0x4afc('0x2c')]=_['map'](_0x494fe7,_0x4afc('0x27'));_0xd26d2f[_0x4afc('0x2d')]=_[_0x4afc('0x2e')](_0x426e9d[_0x4afc('0x2d')]);_0xd26d2f[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0xd26d2f[_0x4afc('0x2c')],_0xd26d2f[_0x4afc('0x2d')]);_0x5e4747['attributes']=_[_0x4afc('0x30')](_0xd26d2f['model'],qs['fields'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x5e4747[_0x4afc('0x32')]=_0x5e4747[_0x4afc('0x32')][_0x4afc('0x33')]?_0x5e4747[_0x4afc('0x32')]:_0xd26d2f['model'];if(!_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x34')](_0x4afc('0x35'))){_0x5e4747[_0x4afc('0x1c')]=qs[_0x4afc('0x1c')](_0x426e9d[_0x4afc('0x2d')]['limit']);_0x5e4747[_0x4afc('0x1a')]=qs[_0x4afc('0x1a')](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x1a')]);}_0x5e4747['order']=qs['sort'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x36')]);_0x5e4747[_0x4afc('0x37')]=qs['filters'](_['pick'](_0x426e9d[_0x4afc('0x2d')],_0xd26d2f['filters']),_0x494fe7);if(_0x426e9d['query'][_0x4afc('0x38')]){_0x5e4747[_0x4afc('0x37')]=_[_0x4afc('0x39')](_0x5e4747[_0x4afc('0x37')],{'$or':_[_0x4afc('0x3a')](_0x494fe7,function(_0x4420fb){if(_0x4420fb[_0x4afc('0x2a')]!==_0x4afc('0x3b')){var _0x3ccc5a={};_0x3ccc5a[_0x4420fb[_0x4afc('0x27')]]={'$like':'%'+_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x38')]+'%'};return _0x3ccc5a;}})});}_0x5e4747=_[_0x4afc('0x39')]({},_0x5e4747,_0x426e9d[_0x4afc('0x3c')]);var _0x46dd2a={'where':_0x5e4747['where']};return db[_0x4afc('0x3d')][_0x4afc('0x1d')](_0x46dd2a)[_0x4afc('0x25')](function(_0xe6db12){_0x628e42[_0x4afc('0x1d')]=_0xe6db12;if(_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x3e')]){_0x5e4747['include']=[{'all':!![]}];}return db['Integration']['findAll'](_0x5e4747);})[_0x4afc('0x25')](function(_0x105c03){_0x628e42['rows']=_0x105c03;return _0x628e42;})[_0x4afc('0x25')](respondWithFilteredResult(_0x5db47e,_0x5e4747))[_0x4afc('0x3f')](handleError(_0x5db47e,null));};exports[_0x4afc('0x40')]=function(_0x397996,_0x545109){var _0x12b5db={'raw':![],'where':{'id':_0x397996[_0x4afc('0x41')]['id']}},_0x45c9c3={};_0x45c9c3[_0x4afc('0x2c')]=_[_0x4afc('0x2e')](db[_0x4afc('0x3d')]['rawAttributes']);_0x45c9c3[_0x4afc('0x2d')]=_['keys'](_0x397996[_0x4afc('0x2d')]);_0x45c9c3[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0x45c9c3['model'],_0x45c9c3['query']);_0x12b5db[_0x4afc('0x32')]=_[_0x4afc('0x30')](_0x45c9c3[_0x4afc('0x2c')],qs[_0x4afc('0x31')](_0x397996[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x12b5db[_0x4afc('0x32')]=_0x12b5db[_0x4afc('0x32')]['length']?_0x12b5db[_0x4afc('0x32')]:_0x45c9c3[_0x4afc('0x2c')];if(_0x397996['query'][_0x4afc('0x3e')]){_0x12b5db['include']=[{'all':!![]}];}_0x12b5db=_[_0x4afc('0x39')]({},_0x12b5db,_0x397996[_0x4afc('0x3c')]);return db[_0x4afc('0x3d')]['find'](_0x12b5db)[_0x4afc('0x25')](handleEntityNotFound(_0x545109,null))[_0x4afc('0x25')](respondWithResult(_0x545109,null))[_0x4afc('0x3f')](handleError(_0x545109,null));};exports[_0x4afc('0x42')]=function(_0x4772db,_0x19a0ac){return db['Integration']['create'](_0x4772db['body'],{})[_0x4afc('0x25')](respondWithResult(_0x19a0ac,0xc9))[_0x4afc('0x3f')](handleError(_0x19a0ac,null));};exports[_0x4afc('0x23')]=function(_0x269c24,_0xb5cca9){if(_0x269c24[_0x4afc('0x43')]['id']){delete _0x269c24[_0x4afc('0x43')]['id'];}return db[_0x4afc('0x3d')][_0x4afc('0x44')]({'where':{'id':_0x269c24[_0x4afc('0x41')]['id']}})['then'](handleEntityNotFound(_0xb5cca9,null))[_0x4afc('0x25')](saveUpdates(_0x269c24['body'],null))['then'](respondWithResult(_0xb5cca9,null))[_0x4afc('0x3f')](handleError(_0xb5cca9,null));};exports['destroy']=function(_0x428d78,_0x355198){return db[_0x4afc('0x3d')][_0x4afc('0x44')]({'where':{'id':_0x428d78['params']['id']}})[_0x4afc('0x25')](handleEntityNotFound(_0x355198,null))['then'](removeEntity(_0x355198,null))[_0x4afc('0x3f')](handleError(_0x355198,null));};
\ No newline at end of file
+var _0x47c5=['rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','map','VIRTUAL','filter','merge','count','includeAll','include','findAll','show','params','options','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','Integration'];(function(_0x191af2,_0x37141a){var _0x1e5604=function(_0x3fe794){while(--_0x3fe794){_0x191af2['push'](_0x191af2['shift']());}};_0x1e5604(++_0x37141a);}(_0x47c5,0x165));var _0x547c=function(_0x4fdc3e,_0x47de79){_0x4fdc3e=_0x4fdc3e-0x0;var _0x3abc09=_0x47c5[_0x4fdc3e];return _0x3abc09;};'use strict';var emlformat=require(_0x547c('0x0'));var rimraf=require(_0x547c('0x1'));var zipdir=require(_0x547c('0x2'));var jsonpatch=require(_0x547c('0x3'));var rp=require(_0x547c('0x4'));var moment=require(_0x547c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x547c('0x6'));var util=require(_0x547c('0x7'));var path=require('path');var sox=require(_0x547c('0x8'));var csv=require(_0x547c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x547c('0xa'));var _=require(_0x547c('0xb'));var squel=require(_0x547c('0xc'));var crypto=require(_0x547c('0xd'));var jsforce=require(_0x547c('0xe'));var deskjs=require(_0x547c('0xf'));var toCsv=require(_0x547c('0x9'));var querystring=require(_0x547c('0x10'));var Papa=require(_0x547c('0x11'));var Redis=require(_0x547c('0x12'));var authService=require(_0x547c('0x13'));var qs=require(_0x547c('0x14'));var as=require(_0x547c('0x15'));var hardwareService=require(_0x547c('0x16'));var logger=require(_0x547c('0x17'))(_0x547c('0x18'));var utils=require(_0x547c('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x547c('0x1a'));var db=require(_0x547c('0x1b'))['db'];function respondWithStatusCode(_0x5eea67,_0x436c19){_0x436c19=_0x436c19||0xcc;return function(_0x201d95){if(_0x201d95){return _0x5eea67[_0x547c('0x1c')](_0x436c19);}return _0x5eea67[_0x547c('0x1d')](_0x436c19)[_0x547c('0x1e')]();};}function respondWithResult(_0x150317,_0x2bc289){_0x2bc289=_0x2bc289||0xc8;return function(_0xa3c7b0){if(_0xa3c7b0){return _0x150317[_0x547c('0x1d')](_0x2bc289)[_0x547c('0x1f')](_0xa3c7b0);}};}function respondWithFilteredResult(_0x240243,_0x103455){return function(_0x39f316){if(_0x39f316){var _0x23644b=typeof _0x103455[_0x547c('0x20')]===_0x547c('0x21')&&typeof _0x103455[_0x547c('0x22')]===_0x547c('0x21');var _0x49acca=_0x39f316['count'];var _0x23fa9e=_0x23644b?0x0:_0x103455[_0x547c('0x20')];var _0xeb059e=_0x23644b?_0x39f316['count']:_0x103455[_0x547c('0x20')]+_0x103455[_0x547c('0x22')];var _0x1ddbd3;if(_0xeb059e>=_0x49acca){_0xeb059e=_0x49acca;_0x1ddbd3=0xc8;}else{_0x1ddbd3=0xce;}_0x240243['status'](_0x1ddbd3);return _0x240243[_0x547c('0x23')](_0x547c('0x24'),_0x23fa9e+'-'+_0xeb059e+'/'+_0x49acca)['json'](_0x39f316);}return null;};}function patchUpdates(_0x5453f9){return function(_0x35040a){try{jsonpatch[_0x547c('0x25')](_0x35040a,_0x5453f9,!![]);}catch(_0x4f20c1){return BPromise[_0x547c('0x26')](_0x4f20c1);}return _0x35040a[_0x547c('0x27')]();};}function saveUpdates(_0x592e46,_0x2e317a){return function(_0x17fd97){if(_0x17fd97){return _0x17fd97[_0x547c('0x28')](_0x592e46)['then'](function(_0x3a55a0){return _0x3a55a0;});}return null;};}function removeEntity(_0x361c5c,_0x470694){return function(_0x26823c){if(_0x26823c){return _0x26823c[_0x547c('0x29')]()[_0x547c('0x2a')](function(){_0x361c5c[_0x547c('0x1d')](0xcc)[_0x547c('0x1e')]();});}};}function handleEntityNotFound(_0x507895,_0x39c5f9){return function(_0x4c66b9){if(!_0x4c66b9){_0x507895['sendStatus'](0x194);}return _0x4c66b9;};}function handleError(_0x4855fd,_0x478f04){_0x478f04=_0x478f04||0x1f4;return function(_0x2c725d){logger['error'](_0x2c725d[_0x547c('0x2b')]);if(_0x2c725d['name']){delete _0x2c725d[_0x547c('0x2c')];}_0x4855fd['status'](_0x478f04)[_0x547c('0x2d')](_0x2c725d);};}exports[_0x547c('0x2e')]=function(_0x2389de,_0x30a96c){var _0x198afb={},_0x569924={},_0x575c74={'count':0x0,'rows':[]};var _0x28c282=_['map'](db[_0x547c('0x2f')][_0x547c('0x30')],function(_0x3e7652){return{'name':_0x3e7652[_0x547c('0x31')],'type':_0x3e7652[_0x547c('0x32')][_0x547c('0x33')]};});_0x569924[_0x547c('0x34')]=_['map'](_0x28c282,'name');_0x569924[_0x547c('0x35')]=_[_0x547c('0x36')](_0x2389de[_0x547c('0x35')]);_0x569924[_0x547c('0x37')]=_[_0x547c('0x38')](_0x569924[_0x547c('0x34')],_0x569924[_0x547c('0x35')]);_0x198afb[_0x547c('0x39')]=_[_0x547c('0x38')](_0x569924[_0x547c('0x34')],qs[_0x547c('0x3a')](_0x2389de[_0x547c('0x35')][_0x547c('0x3a')]));_0x198afb[_0x547c('0x39')]=_0x198afb['attributes'][_0x547c('0x3b')]?_0x198afb['attributes']:_0x569924['model'];if(!_0x2389de['query'][_0x547c('0x3c')](_0x547c('0x3d'))){_0x198afb[_0x547c('0x22')]=qs[_0x547c('0x22')](_0x2389de[_0x547c('0x35')][_0x547c('0x22')]);_0x198afb['offset']=qs['offset'](_0x2389de['query'][_0x547c('0x20')]);}_0x198afb[_0x547c('0x3e')]=qs[_0x547c('0x3f')](_0x2389de[_0x547c('0x35')][_0x547c('0x3f')]);_0x198afb[_0x547c('0x40')]=qs['filters'](_[_0x547c('0x41')](_0x2389de['query'],_0x569924[_0x547c('0x37')]),_0x28c282);if(_0x2389de[_0x547c('0x35')]['filter']){_0x198afb[_0x547c('0x40')]=_['merge'](_0x198afb['where'],{'$or':_[_0x547c('0x42')](_0x28c282,function(_0x281d52){if(_0x281d52[_0x547c('0x32')]!==_0x547c('0x43')){var _0x4c36b9={};_0x4c36b9[_0x281d52['name']]={'$like':'%'+_0x2389de[_0x547c('0x35')][_0x547c('0x44')]+'%'};return _0x4c36b9;}})});}_0x198afb=_[_0x547c('0x45')]({},_0x198afb,_0x2389de['options']);var _0x3886ae={'where':_0x198afb[_0x547c('0x40')]};return db[_0x547c('0x2f')]['count'](_0x3886ae)[_0x547c('0x2a')](function(_0x3a6a0a){_0x575c74[_0x547c('0x46')]=_0x3a6a0a;if(_0x2389de['query'][_0x547c('0x47')]){_0x198afb[_0x547c('0x48')]=[{'all':!![]}];}return db['Integration'][_0x547c('0x49')](_0x198afb);})[_0x547c('0x2a')](function(_0x9c3cb2){_0x575c74['rows']=_0x9c3cb2;return _0x575c74;})[_0x547c('0x2a')](respondWithFilteredResult(_0x30a96c,_0x198afb))['catch'](handleError(_0x30a96c,null));};exports[_0x547c('0x4a')]=function(_0x5393a2,_0xb86f5f){var _0x414b9d={'raw':![],'where':{'id':_0x5393a2[_0x547c('0x4b')]['id']}},_0x3d37d7={};_0x3d37d7[_0x547c('0x34')]=_[_0x547c('0x36')](db['Integration']['rawAttributes']);_0x3d37d7[_0x547c('0x35')]=_[_0x547c('0x36')](_0x5393a2[_0x547c('0x35')]);_0x3d37d7['filters']=_[_0x547c('0x38')](_0x3d37d7[_0x547c('0x34')],_0x3d37d7[_0x547c('0x35')]);_0x414b9d[_0x547c('0x39')]=_[_0x547c('0x38')](_0x3d37d7[_0x547c('0x34')],qs['fields'](_0x5393a2[_0x547c('0x35')][_0x547c('0x3a')]));_0x414b9d[_0x547c('0x39')]=_0x414b9d['attributes'][_0x547c('0x3b')]?_0x414b9d[_0x547c('0x39')]:_0x3d37d7[_0x547c('0x34')];if(_0x5393a2[_0x547c('0x35')]['includeAll']){_0x414b9d[_0x547c('0x48')]=[{'all':!![]}];}_0x414b9d=_['merge']({},_0x414b9d,_0x5393a2[_0x547c('0x4c')]);return db['Integration'][_0x547c('0x4d')](_0x414b9d)[_0x547c('0x2a')](handleEntityNotFound(_0xb86f5f,null))['then'](respondWithResult(_0xb86f5f,null))[_0x547c('0x4e')](handleError(_0xb86f5f,null));};exports[_0x547c('0x4f')]=function(_0xa005cc,_0x1ddf30){return db['Integration'][_0x547c('0x4f')](_0xa005cc['body'],{})['then'](respondWithResult(_0x1ddf30,0xc9))[_0x547c('0x4e')](handleError(_0x1ddf30,null));};exports[_0x547c('0x28')]=function(_0x3e3f52,_0x11a878){if(_0x3e3f52[_0x547c('0x50')]['id']){delete _0x3e3f52[_0x547c('0x50')]['id'];}return db[_0x547c('0x2f')][_0x547c('0x4d')]({'where':{'id':_0x3e3f52[_0x547c('0x4b')]['id']}})[_0x547c('0x2a')](handleEntityNotFound(_0x11a878,null))[_0x547c('0x2a')](saveUpdates(_0x3e3f52[_0x547c('0x50')],null))['then'](respondWithResult(_0x11a878,null))['catch'](handleError(_0x11a878,null));};exports[_0x547c('0x29')]=function(_0x21ea26,_0x48de6e){return db[_0x547c('0x2f')][_0x547c('0x4d')]({'where':{'id':_0x21ea26[_0x547c('0x4b')]['id']}})[_0x547c('0x2a')](handleEntityNotFound(_0x48de6e,null))[_0x547c('0x2a')](removeEntity(_0x48de6e,null))[_0x547c('0x4e')](handleError(_0x48de6e,null));};
\ No newline at end of file
index d12d69e..7b6d605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ea=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./integration.attributes','Integration'];(function(_0x29e871,_0x330b98){var _0x3380e3=function(_0x26eeae){while(--_0x26eeae){_0x29e871['push'](_0x29e871['shift']());}};_0x3380e3(++_0x330b98);}(_0x04ea,0x64));var _0xa04e=function(_0x2a50f7,_0x4c5ed1){_0x2a50f7=_0x2a50f7-0x0;var _0x5123ec=_0x04ea[_0x2a50f7];return _0x5123ec;};'use strict';var _=require(_0xa04e('0x0'));var util=require(_0xa04e('0x1'));var logger=require('../../config/logger')(_0xa04e('0x2'));var moment=require(_0xa04e('0x3'));var BPromise=require(_0xa04e('0x4'));var rp=require(_0xa04e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa04e('0x6'));var config=require(_0xa04e('0x7'));var attributes=require(_0xa04e('0x8'));module['exports']=function(_0xa1d8f0,_0xd3e761){return _0xa1d8f0['define'](_0xa04e('0x9'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfe81=['api','moment','request-promise','path','rimraf','./integration.attributes','define','Integration','lodash','util','../../config/logger'];(function(_0x91eff4,_0x39ad8a){var _0x41ea08=function(_0x474b54){while(--_0x474b54){_0x91eff4['push'](_0x91eff4['shift']());}};_0x41ea08(++_0x39ad8a);}(_0xfe81,0x11b));var _0x1fe8=function(_0x56fe98,_0x43dc16){_0x56fe98=_0x56fe98-0x0;var _0x212f4f=_0xfe81[_0x56fe98];return _0x212f4f;};'use strict';var _=require(_0x1fe8('0x0'));var util=require(_0x1fe8('0x1'));var logger=require(_0x1fe8('0x2'))(_0x1fe8('0x3'));var moment=require(_0x1fe8('0x4'));var BPromise=require('bluebird');var rp=require(_0x1fe8('0x5'));var fs=require('fs');var path=require(_0x1fe8('0x6'));var rimraf=require(_0x1fe8('0x7'));var config=require('../../config/environment');var attributes=require(_0x1fe8('0x8'));module['exports']=function(_0x47eb5b,_0x36ae36){return _0x47eb5b[_0x1fe8('0x9')](_0x1fe8('0xa'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7306304..de15d78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x217b54,_0x1f574c){var _0xe2b0b=function(_0xa3b17e){while(--_0xa3b17e){_0x217b54['push'](_0x217b54['shift']());}};_0xe2b0b(++_0x1f574c);}(_0x5f66,0x1a0));var _0x65f6=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x5f66[_0x465028];return _0xb783d4;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('Integration,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
+var _0x57ca=['client','http','request','info','request\x20sent','Integration,\x20%s,\x20%s,\x20%s','error','code','Integration,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x21a533,_0x3045ba){var _0x3bfb75=function(_0xf42278){while(--_0xf42278){_0x21a533['push'](_0x21a533['shift']());}};_0x3bfb75(++_0x3045ba);}(_0x57ca,0x108));var _0xa57c=function(_0x5eff1b,_0x4eaf26){_0x5eff1b=_0x5eff1b-0x0;var _0x2dc878=_0x57ca[_0x5eff1b];return _0x2dc878;};'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')]('Integration,\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')]('Integration,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}
\ No newline at end of file
index 45c6d7e..d19f0f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','create','put','update','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5f66,0x1a0));var _0x65f6=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x5f66[_0x278e3c];return _0x3e2d9b;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./integrationReport.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['show']);router['post']('/',auth[_0x65f6('0x8')](),controller[_0x65f6('0xc')]);router[_0x65f6('0xd')](_0x65f6('0xb'),auth['isAuthenticated'](),controller[_0x65f6('0xe')]);router['delete']('/:id',auth[_0x65f6('0x8')](),controller['destroy']);module[_0x65f6('0xf')]=router;
\ No newline at end of file
+var _0xadb5=['delete','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update'];(function(_0x309991,_0x457e73){var _0x4ca94d=function(_0x294acc){while(--_0x294acc){_0x309991['push'](_0x309991['shift']());}};_0x4ca94d(++_0x457e73);}(_0xadb5,0xad));var _0x5adb=function(_0x28bf12,_0x3a8e9f){_0x28bf12=_0x28bf12-0x0;var _0x381c1f=_0xadb5[_0x28bf12];return _0x381c1f;};'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('./integrationReport.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0xe')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0xf')]);router['put']('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller['destroy']);module[_0x5adb('0x12')]=router;
\ No newline at end of file
index af2ce2c..95afed7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ddf=['RECEIVED','sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','SENT','SENDING'];(function(_0x1793de,_0x4d7233){var _0x4f0309=function(_0x229ee7){while(--_0x229ee7){_0x1793de['push'](_0x1793de['shift']());}};_0x4f0309(++_0x4d7233);}(_0x3ddf,0xf1));var _0xf3dd=function(_0xb26ef,_0x27db02){_0xb26ef=_0xb26ef-0x0;var _0x5856b7=_0x3ddf[_0xb26ef];return _0x5856b7;};'use strict';var Sequelize=require(_0xf3dd('0x0'));module[_0xf3dd('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0xf3dd('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0xf3dd('0x3')]},'contacts':{'type':Sequelize[_0xf3dd('0x2')]},'uniqueid':{'type':Sequelize[_0xf3dd('0x2')]},'calleridnum':{'type':Sequelize[_0xf3dd('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xf3dd('0x2')]},'interface':{'type':Sequelize[_0xf3dd('0x2')]},'membername':{'type':Sequelize[_0xf3dd('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xf3dd('0x4')]},'holdtime':{'type':Sequelize[_0xf3dd('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xf3dd('0x4')]},'talktime':{'type':Sequelize[_0xf3dd('0x3')]},'agentacw':{'type':Sequelize[_0xf3dd('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xf3dd('0x3')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0xf3dd('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0xf3dd('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xf3dd('0x4')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xf3dd('0x3')]},'channelstatedesc':{'type':Sequelize[_0xf3dd('0x2')]},'connectedlinenum':{'type':Sequelize[_0xf3dd('0x2')]},'connectedlinename':{'type':Sequelize[_0xf3dd('0x2')]},'language':{'type':Sequelize[_0xf3dd('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xf3dd('0x2')]},'priority':{'type':Sequelize[_0xf3dd('0x2')]},'destchannel':{'type':Sequelize[_0xf3dd('0x2')]},'destchannelstate':{'type':Sequelize[_0xf3dd('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xf3dd('0x2')]},'destcalleridnum':{'type':Sequelize[_0xf3dd('0x2')]},'destcalleridname':{'type':Sequelize[_0xf3dd('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xf3dd('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xf3dd('0x2')]},'destlanguage':{'type':Sequelize[_0xf3dd('0x2')]},'destaccountcode':{'type':Sequelize[_0xf3dd('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xf3dd('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0xf3dd('0x2')]},'inReplyTo':{'type':Sequelize[_0xf3dd('0x2')]},'subject':{'type':Sequelize[_0xf3dd('0x2')]},'from':{'type':Sequelize[_0xf3dd('0x2')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xf3dd('0x2')]},'attachment':{'type':Sequelize[_0xf3dd('0x6')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0xf3dd('0x6')]},'status':{'type':Sequelize['ENUM'](_0xf3dd('0x7'),_0xf3dd('0x8'),_0xf3dd('0x9'),'FAILED')},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize[_0xf3dd('0x2')]},'appdata':{'type':Sequelize[_0xf3dd('0x2')]},'projectId':{'type':Sequelize[_0xf3dd('0x3')]}};
\ No newline at end of file
+var _0x35be=['exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING'];(function(_0x487d39,_0x470175){var _0x2b2be3=function(_0x2eeadd){while(--_0x2eeadd){_0x487d39['push'](_0x487d39['shift']());}};_0x2b2be3(++_0x470175);}(_0x35be,0x120));var _0xe35b=function(_0x1fec86,_0x422ed7){_0x1fec86=_0x1fec86-0x0;var _0x55e897=_0x35be[_0x1fec86];return _0x55e897;};'use strict';var Sequelize=require('sequelize');module[_0xe35b('0x0')]={'integration':{'type':Sequelize[_0xe35b('0x1')]},'eventChannel':{'type':Sequelize[_0xe35b('0x1')]},'exitStatus':{'type':Sequelize[_0xe35b('0x1')]},'ticketId':{'type':Sequelize[_0xe35b('0x1')]},'integrationId':{'type':Sequelize[_0xe35b('0x2')]},'contacts':{'type':Sequelize[_0xe35b('0x1')]},'uniqueid':{'type':Sequelize[_0xe35b('0x1')]},'calleridnum':{'type':Sequelize[_0xe35b('0x1')]},'calleridname':{'type':Sequelize[_0xe35b('0x1')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xe35b('0x1')]},'membername':{'type':Sequelize[_0xe35b('0x1')]},'agentcalledAt':{'type':Sequelize[_0xe35b('0x3')]},'agentconnectAt':{'type':Sequelize[_0xe35b('0x3')]},'holdtime':{'type':Sequelize[_0xe35b('0x2')]},'agentcomplete':{'type':Sequelize[_0xe35b('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xe35b('0x3')]},'talktime':{'type':Sequelize[_0xe35b('0x2')]},'agentacw':{'type':Sequelize[_0xe35b('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xe35b('0x2')]},'reason':{'type':Sequelize[_0xe35b('0x1')]},'agentringnoanswer':{'type':Sequelize[_0xe35b('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xe35b('0x3')]},'lastevent':{'type':Sequelize[_0xe35b('0x1')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xe35b('0x2')]},'channelstatedesc':{'type':Sequelize[_0xe35b('0x1')]},'connectedlinenum':{'type':Sequelize[_0xe35b('0x1')]},'connectedlinename':{'type':Sequelize[_0xe35b('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xe35b('0x1')]},'destchannel':{'type':Sequelize[_0xe35b('0x1')]},'destchannelstate':{'type':Sequelize[_0xe35b('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0xe35b('0x1')]},'destcalleridnum':{'type':Sequelize[_0xe35b('0x1')]},'destcalleridname':{'type':Sequelize[_0xe35b('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xe35b('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xe35b('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xe35b('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0xe35b('0x1')]},'inReplyTo':{'type':Sequelize[_0xe35b('0x1')]},'subject':{'type':Sequelize[_0xe35b('0x1')]},'from':{'type':Sequelize[_0xe35b('0x1')]},'to':{'type':Sequelize[_0xe35b('0x1')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0xe35b('0x5')]},'html':{'type':Sequelize[_0xe35b('0x5')]},'text':{'type':Sequelize[_0xe35b('0x5')]},'status':{'type':Sequelize[_0xe35b('0x6')](_0xe35b('0x7'),_0xe35b('0x8'),'RECEIVED','FAILED')},'url':{'type':Sequelize[_0xe35b('0x1')]},'app':{'type':Sequelize[_0xe35b('0x1')]},'appdata':{'type':Sequelize[_0xe35b('0x1')]},'projectId':{'type':Sequelize[_0xe35b('0x2')]}};
\ No newline at end of file
index 536d58f..022d733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdbc=['set','Content-Range','apply','reject','save','then','sendStatus','name','index','IntegrationReport','type','key','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','rawAttributes','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','ejs','fs-extra','lodash','squel','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','undefined','limit','count'];(function(_0x26bb71,_0xd1f573){var _0x10b80a=function(_0x2f85f6){while(--_0x2f85f6){_0x26bb71['push'](_0x26bb71['shift']());}};_0x10b80a(++_0xd1f573);}(_0xcdbc,0x1ce));var _0xccdb=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xcdbc[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0xccdb('0x0'));var rimraf=require(_0xccdb('0x1'));var zipdir=require(_0xccdb('0x2'));var jsonpatch=require(_0xccdb('0x3'));var rp=require(_0xccdb('0x4'));var moment=require(_0xccdb('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xccdb('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xccdb('0x7'));var fs=require('fs');var fs_extra=require(_0xccdb('0x8'));var _=require(_0xccdb('0x9'));var squel=require(_0xccdb('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xccdb('0xb'));var toCsv=require(_0xccdb('0xc'));var querystring=require('querystring');var Papa=require(_0xccdb('0xd'));var Redis=require('ioredis');var authService=require(_0xccdb('0xe'));var qs=require(_0xccdb('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xccdb('0x10'));var logger=require('../../config/logger')(_0xccdb('0x11'));var utils=require(_0xccdb('0x12'));var config=require(_0xccdb('0x13'));var licenseUtil=require(_0xccdb('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x170ce9,_0x2f37c7){_0x2f37c7=_0x2f37c7||0xcc;return function(_0x4f2e49){if(_0x4f2e49){return _0x170ce9['sendStatus'](_0x2f37c7);}return _0x170ce9['status'](_0x2f37c7)[_0xccdb('0x15')]();};}function respondWithResult(_0x52530a,_0x1b4fda){_0x1b4fda=_0x1b4fda||0xc8;return function(_0x48c657){if(_0x48c657){return _0x52530a[_0xccdb('0x16')](_0x1b4fda)[_0xccdb('0x17')](_0x48c657);}};}function respondWithFilteredResult(_0x34e72c,_0x20c006){return function(_0xe1eff3){if(_0xe1eff3){var _0x3f025d=typeof _0x20c006[_0xccdb('0x18')]===_0xccdb('0x19')&&typeof _0x20c006[_0xccdb('0x1a')]===_0xccdb('0x19');var _0x5bd69e=_0xe1eff3[_0xccdb('0x1b')];var _0x252a72=_0x3f025d?0x0:_0x20c006[_0xccdb('0x18')];var _0x4f00e1=_0x3f025d?_0xe1eff3['count']:_0x20c006['offset']+_0x20c006[_0xccdb('0x1a')];var _0x211d58;if(_0x4f00e1>=_0x5bd69e){_0x4f00e1=_0x5bd69e;_0x211d58=0xc8;}else{_0x211d58=0xce;}_0x34e72c[_0xccdb('0x16')](_0x211d58);return _0x34e72c[_0xccdb('0x1c')](_0xccdb('0x1d'),_0x252a72+'-'+_0x4f00e1+'/'+_0x5bd69e)[_0xccdb('0x17')](_0xe1eff3);}return null;};}function patchUpdates(_0x362dc9){return function(_0x2837f5){try{jsonpatch[_0xccdb('0x1e')](_0x2837f5,_0x362dc9,!![]);}catch(_0x471d8b){return BPromise[_0xccdb('0x1f')](_0x471d8b);}return _0x2837f5[_0xccdb('0x20')]();};}function saveUpdates(_0x687180,_0x133955){return function(_0xb8a092){if(_0xb8a092){return _0xb8a092['update'](_0x687180)[_0xccdb('0x21')](function(_0x36422b){return _0x36422b;});}return null;};}function removeEntity(_0xff3b7,_0x2e482b){return function(_0x3c0a44){if(_0x3c0a44){return _0x3c0a44['destroy']()[_0xccdb('0x21')](function(){_0xff3b7[_0xccdb('0x16')](0xcc)[_0xccdb('0x15')]();});}};}function handleEntityNotFound(_0x1de9f8,_0x1337da){return function(_0xb575ce){if(!_0xb575ce){_0x1de9f8[_0xccdb('0x22')](0x194);}return _0xb575ce;};}function handleError(_0x20772d,_0x3a10a2){_0x3a10a2=_0x3a10a2||0x1f4;return function(_0x104e0f){logger['error'](_0x104e0f['stack']);if(_0x104e0f[_0xccdb('0x23')]){delete _0x104e0f[_0xccdb('0x23')];}_0x20772d[_0xccdb('0x16')](_0x3a10a2)['send'](_0x104e0f);};}exports[_0xccdb('0x24')]=function(_0x131002,_0x59c6b3){var _0x4c40ab={},_0x45fa21={},_0x56f467={'count':0x0,'rows':[]};var _0x3e36f8=_['map'](db[_0xccdb('0x25')]['rawAttributes'],function(_0x3bea5a){return{'name':_0x3bea5a['fieldName'],'type':_0x3bea5a[_0xccdb('0x26')][_0xccdb('0x27')]};});_0x45fa21['model']=_['map'](_0x3e36f8,'name');_0x45fa21['query']=_[_0xccdb('0x28')](_0x131002[_0xccdb('0x29')]);_0x45fa21['filters']=_[_0xccdb('0x2a')](_0x45fa21[_0xccdb('0x2b')],_0x45fa21[_0xccdb('0x29')]);_0x4c40ab[_0xccdb('0x2c')]=_[_0xccdb('0x2a')](_0x45fa21[_0xccdb('0x2b')],qs[_0xccdb('0x2d')](_0x131002[_0xccdb('0x29')]['fields']));_0x4c40ab[_0xccdb('0x2c')]=_0x4c40ab['attributes'][_0xccdb('0x2e')]?_0x4c40ab['attributes']:_0x45fa21[_0xccdb('0x2b')];if(!_0x131002[_0xccdb('0x29')][_0xccdb('0x2f')](_0xccdb('0x30'))){_0x4c40ab[_0xccdb('0x1a')]=qs[_0xccdb('0x1a')](_0x131002['query'][_0xccdb('0x1a')]);_0x4c40ab[_0xccdb('0x18')]=qs[_0xccdb('0x18')](_0x131002[_0xccdb('0x29')][_0xccdb('0x18')]);}_0x4c40ab[_0xccdb('0x31')]=qs[_0xccdb('0x32')](_0x131002[_0xccdb('0x29')][_0xccdb('0x32')]);_0x4c40ab[_0xccdb('0x33')]=qs[_0xccdb('0x34')](_[_0xccdb('0x35')](_0x131002['query'],_0x45fa21['filters']),_0x3e36f8);if(_0x131002[_0xccdb('0x29')][_0xccdb('0x36')]){_0x4c40ab[_0xccdb('0x33')]=_[_0xccdb('0x37')](_0x4c40ab[_0xccdb('0x33')],{'$or':_['map'](_0x3e36f8,function(_0x5e47b4){if(_0x5e47b4['type']!==_0xccdb('0x38')){var _0x48f40c={};_0x48f40c[_0x5e47b4[_0xccdb('0x23')]]={'$like':'%'+_0x131002['query'][_0xccdb('0x36')]+'%'};return _0x48f40c;}})});}_0x4c40ab=_[_0xccdb('0x37')]({},_0x4c40ab,_0x131002[_0xccdb('0x39')]);var _0x4ca835={'where':_0x4c40ab[_0xccdb('0x33')]};return db[_0xccdb('0x25')][_0xccdb('0x1b')](_0x4ca835)[_0xccdb('0x21')](function(_0x5eff90){_0x56f467[_0xccdb('0x1b')]=_0x5eff90;if(_0x131002[_0xccdb('0x29')][_0xccdb('0x3a')]){_0x4c40ab[_0xccdb('0x3b')]=[{'all':!![]}];}return db[_0xccdb('0x25')]['findAll'](_0x4c40ab);})[_0xccdb('0x21')](function(_0x33a97b){_0x56f467[_0xccdb('0x3c')]=_0x33a97b;return _0x56f467;})[_0xccdb('0x21')](respondWithFilteredResult(_0x59c6b3,_0x4c40ab))[_0xccdb('0x3d')](handleError(_0x59c6b3,null));};exports['show']=function(_0x5bb6dc,_0x17b410){var _0x4cb5ce={'raw':![],'where':{'id':_0x5bb6dc[_0xccdb('0x3e')]['id']}},_0xdafe30={};_0xdafe30['model']=_['keys'](db[_0xccdb('0x25')][_0xccdb('0x3f')]);_0xdafe30[_0xccdb('0x29')]=_[_0xccdb('0x28')](_0x5bb6dc[_0xccdb('0x29')]);_0xdafe30[_0xccdb('0x34')]=_[_0xccdb('0x2a')](_0xdafe30[_0xccdb('0x2b')],_0xdafe30[_0xccdb('0x29')]);_0x4cb5ce['attributes']=_[_0xccdb('0x2a')](_0xdafe30[_0xccdb('0x2b')],qs[_0xccdb('0x2d')](_0x5bb6dc[_0xccdb('0x29')][_0xccdb('0x2d')]));_0x4cb5ce[_0xccdb('0x2c')]=_0x4cb5ce['attributes'][_0xccdb('0x2e')]?_0x4cb5ce[_0xccdb('0x2c')]:_0xdafe30['model'];if(_0x5bb6dc['query']['includeAll']){_0x4cb5ce['include']=[{'all':!![]}];}_0x4cb5ce=_[_0xccdb('0x37')]({},_0x4cb5ce,_0x5bb6dc[_0xccdb('0x39')]);return db['IntegrationReport'][_0xccdb('0x40')](_0x4cb5ce)[_0xccdb('0x21')](handleEntityNotFound(_0x17b410,null))['then'](respondWithResult(_0x17b410,null))[_0xccdb('0x3d')](handleError(_0x17b410,null));};exports[_0xccdb('0x41')]=function(_0x41fc5a,_0x3df1d4){return db[_0xccdb('0x25')][_0xccdb('0x41')](_0x41fc5a[_0xccdb('0x42')],{})['then'](respondWithResult(_0x3df1d4,0xc9))[_0xccdb('0x3d')](handleError(_0x3df1d4,null));};exports[_0xccdb('0x43')]=function(_0x1db093,_0xea89fc){if(_0x1db093[_0xccdb('0x42')]['id']){delete _0x1db093['body']['id'];}return db['IntegrationReport'][_0xccdb('0x40')]({'where':{'id':_0x1db093[_0xccdb('0x3e')]['id']}})[_0xccdb('0x21')](handleEntityNotFound(_0xea89fc,null))['then'](saveUpdates(_0x1db093[_0xccdb('0x42')],null))[_0xccdb('0x21')](respondWithResult(_0xea89fc,null))[_0xccdb('0x3d')](handleError(_0xea89fc,null));};exports[_0xccdb('0x44')]=function(_0xc57e97,_0x55ae41){return db[_0xccdb('0x25')][_0xccdb('0x40')]({'where':{'id':_0xc57e97['params']['id']}})[_0xccdb('0x21')](handleEntityNotFound(_0x55ae41,null))[_0xccdb('0x21')](removeEntity(_0x55ae41,null))['catch'](handleError(_0x55ae41,null));};exports['describe']=function(_0x231abb,_0x3a8352){return db[_0xccdb('0x25')][_0xccdb('0x45')]()[_0xccdb('0x21')](respondWithResult(_0x3a8352,null))[_0xccdb('0x3d')](handleError(_0x3a8352,null));};
\ No newline at end of file
+var _0xdfd3=['type','key','query','keys','filters','model','attributes','intersection','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','IntegrationReport','includeAll','rows','catch','show','fields','include','find','create','body','params','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','name','send','index','map','rawAttributes','fieldName'];(function(_0x323393,_0x4e3541){var _0x40dc0b=function(_0x319573){while(--_0x319573){_0x323393['push'](_0x323393['shift']());}};_0x40dc0b(++_0x4e3541);}(_0xdfd3,0x69));var _0x3dfd=function(_0xc54c54,_0x59053b){_0xc54c54=_0xc54c54-0x0;var _0x476786=_0xdfd3[_0xc54c54];return _0x476786;};'use strict';var emlformat=require(_0x3dfd('0x0'));var rimraf=require(_0x3dfd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3dfd('0x2'));var moment=require(_0x3dfd('0x3'));var BPromise=require(_0x3dfd('0x4'));var Mustache=require(_0x3dfd('0x5'));var util=require('util');var path=require(_0x3dfd('0x6'));var sox=require(_0x3dfd('0x7'));var csv=require(_0x3dfd('0x8'));var ejs=require(_0x3dfd('0x9'));var fs=require('fs');var fs_extra=require(_0x3dfd('0xa'));var _=require(_0x3dfd('0xb'));var squel=require('squel');var crypto=require(_0x3dfd('0xc'));var jsforce=require(_0x3dfd('0xd'));var deskjs=require(_0x3dfd('0xe'));var toCsv=require(_0x3dfd('0x8'));var querystring=require('querystring');var Papa=require(_0x3dfd('0xf'));var Redis=require(_0x3dfd('0x10'));var authService=require(_0x3dfd('0x11'));var qs=require(_0x3dfd('0x12'));var as=require(_0x3dfd('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3dfd('0x14'))(_0x3dfd('0x15'));var utils=require(_0x3dfd('0x16'));var config=require(_0x3dfd('0x17'));var licenseUtil=require(_0x3dfd('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x20e21a,_0x3e210d){_0x3e210d=_0x3e210d||0xcc;return function(_0x4a9725){if(_0x4a9725){return _0x20e21a[_0x3dfd('0x19')](_0x3e210d);}return _0x20e21a[_0x3dfd('0x1a')](_0x3e210d)[_0x3dfd('0x1b')]();};}function respondWithResult(_0x2432b6,_0x2e8e19){_0x2e8e19=_0x2e8e19||0xc8;return function(_0x11fb98){if(_0x11fb98){return _0x2432b6[_0x3dfd('0x1a')](_0x2e8e19)[_0x3dfd('0x1c')](_0x11fb98);}};}function respondWithFilteredResult(_0x4086b0,_0x5a8789){return function(_0x2d265d){if(_0x2d265d){var _0x3f8080=typeof _0x5a8789[_0x3dfd('0x1d')]===_0x3dfd('0x1e')&&typeof _0x5a8789[_0x3dfd('0x1f')]==='undefined';var _0xb3c7f3=_0x2d265d[_0x3dfd('0x20')];var _0x574b6a=_0x3f8080?0x0:_0x5a8789[_0x3dfd('0x1d')];var _0x45d426=_0x3f8080?_0x2d265d['count']:_0x5a8789[_0x3dfd('0x1d')]+_0x5a8789[_0x3dfd('0x1f')];var _0x32af49;if(_0x45d426>=_0xb3c7f3){_0x45d426=_0xb3c7f3;_0x32af49=0xc8;}else{_0x32af49=0xce;}_0x4086b0[_0x3dfd('0x1a')](_0x32af49);return _0x4086b0[_0x3dfd('0x21')](_0x3dfd('0x22'),_0x574b6a+'-'+_0x45d426+'/'+_0xb3c7f3)[_0x3dfd('0x1c')](_0x2d265d);}return null;};}function patchUpdates(_0x4a1ab2){return function(_0x529172){try{jsonpatch[_0x3dfd('0x23')](_0x529172,_0x4a1ab2,!![]);}catch(_0x19aaea){return BPromise[_0x3dfd('0x24')](_0x19aaea);}return _0x529172[_0x3dfd('0x25')]();};}function saveUpdates(_0x22d968,_0x26ae61){return function(_0x306113){if(_0x306113){return _0x306113[_0x3dfd('0x26')](_0x22d968)['then'](function(_0x1183a8){return _0x1183a8;});}return null;};}function removeEntity(_0x11e004,_0x3862b6){return function(_0x14f1cd){if(_0x14f1cd){return _0x14f1cd[_0x3dfd('0x27')]()[_0x3dfd('0x28')](function(){_0x11e004[_0x3dfd('0x1a')](0xcc)[_0x3dfd('0x1b')]();});}};}function handleEntityNotFound(_0x5ed543,_0x5d4c03){return function(_0x454676){if(!_0x454676){_0x5ed543[_0x3dfd('0x19')](0x194);}return _0x454676;};}function handleError(_0x5f0bc8,_0x310c49){_0x310c49=_0x310c49||0x1f4;return function(_0x1b3596){logger['error'](_0x1b3596['stack']);if(_0x1b3596['name']){delete _0x1b3596[_0x3dfd('0x29')];}_0x5f0bc8[_0x3dfd('0x1a')](_0x310c49)[_0x3dfd('0x2a')](_0x1b3596);};}exports[_0x3dfd('0x2b')]=function(_0x139178,_0x45815f){var _0x490a61={},_0x1e12b5={},_0x1e482f={'count':0x0,'rows':[]};var _0x5043=_[_0x3dfd('0x2c')](db['IntegrationReport'][_0x3dfd('0x2d')],function(_0x25cc50){return{'name':_0x25cc50[_0x3dfd('0x2e')],'type':_0x25cc50[_0x3dfd('0x2f')][_0x3dfd('0x30')]};});_0x1e12b5['model']=_[_0x3dfd('0x2c')](_0x5043,_0x3dfd('0x29'));_0x1e12b5[_0x3dfd('0x31')]=_[_0x3dfd('0x32')](_0x139178['query']);_0x1e12b5[_0x3dfd('0x33')]=_['intersection'](_0x1e12b5[_0x3dfd('0x34')],_0x1e12b5[_0x3dfd('0x31')]);_0x490a61[_0x3dfd('0x35')]=_[_0x3dfd('0x36')](_0x1e12b5[_0x3dfd('0x34')],qs['fields'](_0x139178[_0x3dfd('0x31')]['fields']));_0x490a61[_0x3dfd('0x35')]=_0x490a61['attributes'][_0x3dfd('0x37')]?_0x490a61[_0x3dfd('0x35')]:_0x1e12b5[_0x3dfd('0x34')];if(!_0x139178[_0x3dfd('0x31')][_0x3dfd('0x38')](_0x3dfd('0x39'))){_0x490a61[_0x3dfd('0x1f')]=qs[_0x3dfd('0x1f')](_0x139178[_0x3dfd('0x31')][_0x3dfd('0x1f')]);_0x490a61[_0x3dfd('0x1d')]=qs[_0x3dfd('0x1d')](_0x139178[_0x3dfd('0x31')][_0x3dfd('0x1d')]);}_0x490a61['order']=qs['sort'](_0x139178[_0x3dfd('0x31')][_0x3dfd('0x3a')]);_0x490a61[_0x3dfd('0x3b')]=qs['filters'](_['pick'](_0x139178[_0x3dfd('0x31')],_0x1e12b5[_0x3dfd('0x33')]),_0x5043);if(_0x139178[_0x3dfd('0x31')][_0x3dfd('0x3c')]){_0x490a61[_0x3dfd('0x3b')]=_['merge'](_0x490a61[_0x3dfd('0x3b')],{'$or':_[_0x3dfd('0x2c')](_0x5043,function(_0x5626bb){if(_0x5626bb[_0x3dfd('0x2f')]!==_0x3dfd('0x3d')){var _0x180488={};_0x180488[_0x5626bb[_0x3dfd('0x29')]]={'$like':'%'+_0x139178['query'][_0x3dfd('0x3c')]+'%'};return _0x180488;}})});}_0x490a61=_[_0x3dfd('0x3e')]({},_0x490a61,_0x139178[_0x3dfd('0x3f')]);var _0x29436b={'where':_0x490a61['where']};return db[_0x3dfd('0x40')][_0x3dfd('0x20')](_0x29436b)[_0x3dfd('0x28')](function(_0x2c612d){_0x1e482f[_0x3dfd('0x20')]=_0x2c612d;if(_0x139178[_0x3dfd('0x31')][_0x3dfd('0x41')]){_0x490a61['include']=[{'all':!![]}];}return db[_0x3dfd('0x40')]['findAll'](_0x490a61);})['then'](function(_0x2b65df){_0x1e482f[_0x3dfd('0x42')]=_0x2b65df;return _0x1e482f;})[_0x3dfd('0x28')](respondWithFilteredResult(_0x45815f,_0x490a61))[_0x3dfd('0x43')](handleError(_0x45815f,null));};exports[_0x3dfd('0x44')]=function(_0x8b2bd0,_0x551f6a){var _0x4e552f={'raw':![],'where':{'id':_0x8b2bd0['params']['id']}},_0x1d0660={};_0x1d0660['model']=_[_0x3dfd('0x32')](db[_0x3dfd('0x40')][_0x3dfd('0x2d')]);_0x1d0660['query']=_[_0x3dfd('0x32')](_0x8b2bd0[_0x3dfd('0x31')]);_0x1d0660[_0x3dfd('0x33')]=_['intersection'](_0x1d0660[_0x3dfd('0x34')],_0x1d0660[_0x3dfd('0x31')]);_0x4e552f[_0x3dfd('0x35')]=_[_0x3dfd('0x36')](_0x1d0660[_0x3dfd('0x34')],qs[_0x3dfd('0x45')](_0x8b2bd0[_0x3dfd('0x31')]['fields']));_0x4e552f['attributes']=_0x4e552f[_0x3dfd('0x35')]['length']?_0x4e552f[_0x3dfd('0x35')]:_0x1d0660[_0x3dfd('0x34')];if(_0x8b2bd0[_0x3dfd('0x31')]['includeAll']){_0x4e552f[_0x3dfd('0x46')]=[{'all':!![]}];}_0x4e552f=_['merge']({},_0x4e552f,_0x8b2bd0[_0x3dfd('0x3f')]);return db[_0x3dfd('0x40')][_0x3dfd('0x47')](_0x4e552f)[_0x3dfd('0x28')](handleEntityNotFound(_0x551f6a,null))[_0x3dfd('0x28')](respondWithResult(_0x551f6a,null))[_0x3dfd('0x43')](handleError(_0x551f6a,null));};exports[_0x3dfd('0x48')]=function(_0x11a83b,_0x26f7d2){return db[_0x3dfd('0x40')][_0x3dfd('0x48')](_0x11a83b['body'],{})[_0x3dfd('0x28')](respondWithResult(_0x26f7d2,0xc9))[_0x3dfd('0x43')](handleError(_0x26f7d2,null));};exports[_0x3dfd('0x26')]=function(_0x5d54d8,_0x1a9977){if(_0x5d54d8['body']['id']){delete _0x5d54d8[_0x3dfd('0x49')]['id'];}return db[_0x3dfd('0x40')]['find']({'where':{'id':_0x5d54d8['params']['id']}})[_0x3dfd('0x28')](handleEntityNotFound(_0x1a9977,null))['then'](saveUpdates(_0x5d54d8[_0x3dfd('0x49')],null))['then'](respondWithResult(_0x1a9977,null))[_0x3dfd('0x43')](handleError(_0x1a9977,null));};exports['destroy']=function(_0x24408e,_0x11c61c){return db['IntegrationReport'][_0x3dfd('0x47')]({'where':{'id':_0x24408e[_0x3dfd('0x4a')]['id']}})[_0x3dfd('0x28')](handleEntityNotFound(_0x11c61c,null))[_0x3dfd('0x28')](removeEntity(_0x11c61c,null))[_0x3dfd('0x43')](handleError(_0x11c61c,null));};exports[_0x3dfd('0x4b')]=function(_0x5d267,_0x35e134){return db[_0x3dfd('0x40')][_0x3dfd('0x4b')]()[_0x3dfd('0x28')](respondWithResult(_0x35e134,null))[_0x3dfd('0x43')](handleError(_0x35e134,null));};
\ No newline at end of file
index e120a20..7a99de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89d9=['../../config/environment','./integrationReport.attributes','define','IntegrationReport','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x2922cd,_0x4a14af){var _0x8f2b2d=function(_0x34aee6){while(--_0x34aee6){_0x2922cd['push'](_0x2922cd['shift']());}};_0x8f2b2d(++_0x4a14af);}(_0x89d9,0x93));var _0x989d=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x89d9[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x989d('0x0'));var util=require('util');var logger=require(_0x989d('0x1'))(_0x989d('0x2'));var moment=require(_0x989d('0x3'));var BPromise=require(_0x989d('0x4'));var rp=require(_0x989d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x989d('0x6'));var config=require(_0x989d('0x7'));var attributes=require(_0x989d('0x8'));module['exports']=function(_0xa00612,_0x5b23d7){return _0xa00612[_0x989d('0x9')](_0x989d('0xa'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfca3=['lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./integrationReport.attributes','exports','define','IntegrationReport','report_integration'];(function(_0x5be21f,_0x12c658){var _0x4c7cba=function(_0x1cdfba){while(--_0x1cdfba){_0x5be21f['push'](_0x5be21f['shift']());}};_0x4c7cba(++_0x12c658);}(_0xfca3,0xd8));var _0x3fca=function(_0x5296a7,_0x2b590b){_0x5296a7=_0x5296a7-0x0;var _0x5b608c=_0xfca3[_0x5296a7];return _0x5b608c;};'use strict';var _=require(_0x3fca('0x0'));var util=require('util');var logger=require(_0x3fca('0x1'))(_0x3fca('0x2'));var moment=require(_0x3fca('0x3'));var BPromise=require(_0x3fca('0x4'));var rp=require(_0x3fca('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3fca('0x6'));var attributes=require(_0x3fca('0x7'));module[_0x3fca('0x8')]=function(_0x1e98b0,_0x3c1d63){return _0x1e98b0[_0x3fca('0x9')](_0x3fca('0xa'),attributes,{'tableName':_0x3fca('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 04e48e4..69fad07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x22fc1d,_0x5b8ee1){var _0x29e032=function(_0x69e18a){while(--_0x69e18a){_0x22fc1d['push'](_0x22fc1d['shift']());}};_0x29e032(++_0x5b8ee1);}(_0xadb5,0xad));var _0x5adb=function(_0x3a559b,_0x29dde8){_0x3a559b=_0x3a559b-0x0;var _0x412392=_0xadb5[_0x3a559b];return _0x412392;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('IntegrationReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
+var _0xc2c7=['../../config/logger','jayson/promise','client','http','request','then','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc2c7,0x134));var _0x7c2c=function(_0x521bfa,_0x404aa1){_0x521bfa=_0x521bfa-0x0;var _0x2ef5b5=_0xc2c7[_0x521bfa];return _0x2ef5b5;};'use strict';var _=require('lodash');var util=require(_0x7c2c('0x0'));var moment=require(_0x7c2c('0x1'));var BPromise=require(_0x7c2c('0x2'));var rs=require(_0x7c2c('0x3'));var fs=require('fs');var Redis=require(_0x7c2c('0x4'));var db=require(_0x7c2c('0x5'))['db'];var utils=require(_0x7c2c('0x6'));var logger=require(_0x7c2c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7c2c('0x8'));var client=jayson[_0x7c2c('0x9')][_0x7c2c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54f027,_0x4abe93,_0x5a1027){return new BPromise(function(_0x2274cd,_0x29638d){return client[_0x7c2c('0xb')](_0x54f027,_0x5a1027)[_0x7c2c('0xc')](function(_0x279cff){logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));logger[_0x7c2c('0xf')](_0x7c2c('0x10'),_0x4abe93,_0x7c2c('0xe'),JSON[_0x7c2c('0x11')](_0x279cff));if(_0x279cff[_0x7c2c('0x12')]){if(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x13')]===0x1f4){logger[_0x7c2c('0x12')](_0x7c2c('0xd'),_0x4abe93,_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);return _0x29638d(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}logger[_0x7c2c('0x12')]('IntegrationReport,\x20%s,\x20%s',_0x4abe93,_0x279cff['error'][_0x7c2c('0x14')]);return _0x2274cd(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}else{logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));_0x2274cd(_0x279cff['result'][_0x7c2c('0x14')]);}})['catch'](function(_0x1aa355){logger['error'](_0x7c2c('0xd'),_0x4abe93,_0x1aa355);_0x29638d(_0x1aa355);});});}
\ No newline at end of file
index 870c93d..d11ecf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d2c=['/:id/sub_intervals','getIntervals','post','create','/:id/sub_intervals/create_many','put','/:id','update','delete','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./interval.controller','get','isAuthenticated','index','show'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x2d2c,0x1d7));var _0xc2d2=function(_0x4ce1b9,_0x397a4b){_0x4ce1b9=_0x4ce1b9-0x0;var _0x2bb15d=_0x2d2c[_0x4ce1b9];return _0x2bb15d;};'use strict';var multer=require(_0xc2d2('0x0'));var util=require(_0xc2d2('0x1'));var path=require(_0xc2d2('0x2'));var timeout=require(_0xc2d2('0x3'));var express=require(_0xc2d2('0x4'));var router=express[_0xc2d2('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc2d2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc2d2('0x7'));var controller=require(_0xc2d2('0x8'));router[_0xc2d2('0x9')]('/',auth[_0xc2d2('0xa')](),controller[_0xc2d2('0xb')]);router['get']('/:id',auth[_0xc2d2('0xa')](),controller[_0xc2d2('0xc')]);router[_0xc2d2('0x9')](_0xc2d2('0xd'),auth[_0xc2d2('0xa')](),controller[_0xc2d2('0xe')]);router[_0xc2d2('0xf')]('/',auth[_0xc2d2('0xa')](),controller[_0xc2d2('0x10')]);router[_0xc2d2('0xf')](_0xc2d2('0xd'),auth[_0xc2d2('0xa')](),controller['addInterval']);router[_0xc2d2('0xf')](_0xc2d2('0x11'),auth[_0xc2d2('0xa')](),controller['addIntervals']);router[_0xc2d2('0x12')](_0xc2d2('0x13'),auth['isAuthenticated'](),controller[_0xc2d2('0x14')]);router[_0xc2d2('0x15')]('/:id',auth[_0xc2d2('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x18af=['path','express','../../components/interaction/service','../../config/environment','./interval.controller','get','index','/:id','show','/:id/sub_intervals','isAuthenticated','getIntervals','post','create','addInterval','addIntervals','put','delete','destroy','multer'];(function(_0x1f9ba9,_0x1d735f){var _0xd30e42=function(_0x4fd529){while(--_0x4fd529){_0x1f9ba9['push'](_0x1f9ba9['shift']());}};_0xd30e42(++_0x1d735f);}(_0x18af,0x8b));var _0xf18a=function(_0x3e7107,_0x106b97){_0x3e7107=_0x3e7107-0x0;var _0x177d08=_0x18af[_0x3e7107];return _0x177d08;};'use strict';var multer=require(_0xf18a('0x0'));var util=require('util');var path=require(_0xf18a('0x1'));var timeout=require('connect-timeout');var express=require(_0xf18a('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf18a('0x3'));var config=require(_0xf18a('0x4'));var controller=require(_0xf18a('0x5'));router[_0xf18a('0x6')]('/',auth['isAuthenticated'](),controller[_0xf18a('0x7')]);router[_0xf18a('0x6')](_0xf18a('0x8'),auth['isAuthenticated'](),controller[_0xf18a('0x9')]);router[_0xf18a('0x6')](_0xf18a('0xa'),auth[_0xf18a('0xb')](),controller[_0xf18a('0xc')]);router[_0xf18a('0xd')]('/',auth[_0xf18a('0xb')](),controller[_0xf18a('0xe')]);router[_0xf18a('0xd')](_0xf18a('0xa'),auth[_0xf18a('0xb')](),controller[_0xf18a('0xf')]);router[_0xf18a('0xd')]('/:id/sub_intervals/create_many',auth[_0xf18a('0xb')](),controller[_0xf18a('0x10')]);router[_0xf18a('0x11')](_0xf18a('0x8'),auth[_0xf18a('0xb')](),controller['update']);router[_0xf18a('0x12')](_0xf18a('0x8'),auth['isAuthenticated'](),controller[_0xf18a('0x13')]);module['exports']=router;
\ No newline at end of file
index ae03f16..ce99651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa88a=['STRING','sequelize','exports'];(function(_0x4d7a70,_0x2d3bfa){var _0x3aafbb=function(_0x43fbf2){while(--_0x43fbf2){_0x4d7a70['push'](_0x4d7a70['shift']());}};_0x3aafbb(++_0x2d3bfa);}(_0xa88a,0xb5));var _0xaa88=function(_0x2d7336,_0x8365d1){_0x2d7336=_0x2d7336-0x0;var _0x440df0=_0xa88a[_0x2d7336];return _0x440df0;};'use strict';var Sequelize=require(_0xaa88('0x0'));module[_0xaa88('0x1')]={'name':{'type':Sequelize[_0xaa88('0x2')]},'description':{'type':Sequelize[_0xaa88('0x2')]},'interval':{'type':Sequelize[_0xaa88('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x39c0=['exports','STRING','sequelize'];(function(_0x3e1f29,_0x2acd21){var _0x4f62ac=function(_0x1a1907){while(--_0x1a1907){_0x3e1f29['push'](_0x3e1f29['shift']());}};_0x4f62ac(++_0x2acd21);}(_0x39c0,0x197));var _0x039c=function(_0x6f619c,_0x478da5){_0x6f619c=_0x6f619c-0x0;var _0x3f7097=_0x39c0[_0x6f619c];return _0x3f7097;};'use strict';var Sequelize=require(_0x039c('0x0'));module[_0x039c('0x1')]={'name':{'type':Sequelize[_0x039c('0x2')]},'description':{'type':Sequelize[_0x039c('0x2')]},'interval':{'type':Sequelize[_0x039c('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 5265e42..4f6fd17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14c8=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','addInterval','IntervalId','findOne','getIntervals','addIntervals','sequelize','transaction','bulkCreate','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../components/extensions/rewrite','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','get','Intervals','error','stack','name','send','index','map','Interval','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x14c8,0x18d));var _0x814c=function(_0x43f614,_0x512207){_0x43f614=_0x43f614-0x0;var _0x172a12=_0x14c8[_0x43f614];return _0x172a12;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x814c('0x0'));var zipdir=require(_0x814c('0x1'));var jsonpatch=require(_0x814c('0x2'));var rp=require(_0x814c('0x3'));var moment=require(_0x814c('0x4'));var BPromise=require(_0x814c('0x5'));var Mustache=require(_0x814c('0x6'));var util=require(_0x814c('0x7'));var path=require(_0x814c('0x8'));var sox=require(_0x814c('0x9'));var csv=require(_0x814c('0xa'));var ejs=require(_0x814c('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x814c('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x814c('0xd'));var Papa=require(_0x814c('0xe'));var Redis=require('ioredis');var authService=require(_0x814c('0xf'));var qs=require(_0x814c('0x10'));var as=require(_0x814c('0x11'));var hardwareService=require(_0x814c('0x12'));var logger=require('../../config/logger')(_0x814c('0x13'));var utils=require('../../config/utils');var config=require(_0x814c('0x14'));var licenseUtil=require(_0x814c('0x15'));var db=require('../../mysqldb')['db'];var extensions=require(_0x814c('0x16'));function respondWithStatusCode(_0x49d3c9,_0x5c1ddf){_0x5c1ddf=_0x5c1ddf||0xcc;return function(_0x3dbfb1){if(_0x3dbfb1){return _0x49d3c9['sendStatus'](_0x5c1ddf);}return _0x49d3c9[_0x814c('0x17')](_0x5c1ddf)[_0x814c('0x18')]();};}function respondWithResult(_0x460e2d,_0x31ef1c){_0x31ef1c=_0x31ef1c||0xc8;return function(_0x105429){if(_0x105429){return _0x460e2d[_0x814c('0x17')](_0x31ef1c)[_0x814c('0x19')](_0x105429);}};}function respondWithFilteredResult(_0x43bd4f,_0x19b57c){return function(_0x9a151c){if(_0x9a151c){var _0x4c2b9c=typeof _0x19b57c[_0x814c('0x1a')]===_0x814c('0x1b')&&typeof _0x19b57c[_0x814c('0x1c')]===_0x814c('0x1b');var _0x340dd2=_0x9a151c[_0x814c('0x1d')];var _0x53e143=_0x4c2b9c?0x0:_0x19b57c[_0x814c('0x1a')];var _0x2b312d=_0x4c2b9c?_0x9a151c[_0x814c('0x1d')]:_0x19b57c[_0x814c('0x1a')]+_0x19b57c[_0x814c('0x1c')];var _0x518bb5;if(_0x2b312d>=_0x340dd2){_0x2b312d=_0x340dd2;_0x518bb5=0xc8;}else{_0x518bb5=0xce;}_0x43bd4f[_0x814c('0x17')](_0x518bb5);return _0x43bd4f[_0x814c('0x1e')](_0x814c('0x1f'),_0x53e143+'-'+_0x2b312d+'/'+_0x340dd2)[_0x814c('0x19')](_0x9a151c);}return null;};}function patchUpdates(_0x26f94d){return function(_0x38b559){try{jsonpatch['apply'](_0x38b559,_0x26f94d,!![]);}catch(_0x5bad9a){return BPromise[_0x814c('0x20')](_0x5bad9a);}return _0x38b559[_0x814c('0x21')]();};}function saveUpdates(_0x235e16,_0x28f782){return function(_0x431908){if(_0x431908){return _0x431908[_0x814c('0x22')](_0x235e16)['then'](function(_0x47132d){return _0x47132d;});}return null;};}function removeEntity(_0x587219,_0x402bf8){return function(_0x24ce71){if(_0x24ce71){return _0x24ce71[_0x814c('0x23')]()[_0x814c('0x24')](function(){var _0x32a01c=_0x24ce71[_0x814c('0x25')]({'plain':!![]});var _0x2ba715=_0x814c('0x26');return db['UserProfileResource'][_0x814c('0x23')]({'where':{'type':_0x2ba715,'resourceId':_0x32a01c['id']}})[_0x814c('0x24')](function(){return _0x24ce71;});})[_0x814c('0x24')](function(){_0x587219[_0x814c('0x17')](0xcc)[_0x814c('0x18')]();});}};}function handleEntityNotFound(_0x5ca5b4,_0x13c8a9){return function(_0x1a4c76){if(!_0x1a4c76){_0x5ca5b4['sendStatus'](0x194);}return _0x1a4c76;};}function handleError(_0x5912cc,_0x37bc70){_0x37bc70=_0x37bc70||0x1f4;return function(_0x117384){logger[_0x814c('0x27')](_0x117384[_0x814c('0x28')]);if(_0x117384[_0x814c('0x29')]){delete _0x117384['name'];}_0x5912cc[_0x814c('0x17')](_0x37bc70)[_0x814c('0x2a')](_0x117384);};}exports[_0x814c('0x2b')]=function(_0x44fcf4,_0x1b333d){var _0x5c5d9d={},_0x1a7af0={},_0x2a3b66={'count':0x0,'rows':[]};var _0xdedcec=_[_0x814c('0x2c')](db[_0x814c('0x2d')][_0x814c('0x2e')],function(_0x2f1acb){return{'name':_0x2f1acb[_0x814c('0x2f')],'type':_0x2f1acb[_0x814c('0x30')][_0x814c('0x31')]};});_0x1a7af0[_0x814c('0x32')]=_[_0x814c('0x2c')](_0xdedcec,'name');_0x1a7af0['query']=_[_0x814c('0x33')](_0x44fcf4[_0x814c('0x34')]);_0x1a7af0[_0x814c('0x35')]=_[_0x814c('0x36')](_0x1a7af0[_0x814c('0x32')],_0x1a7af0['query']);_0x5c5d9d['attributes']=_[_0x814c('0x36')](_0x1a7af0['model'],qs[_0x814c('0x37')](_0x44fcf4['query'][_0x814c('0x37')]));_0x5c5d9d[_0x814c('0x38')]=_0x5c5d9d[_0x814c('0x38')][_0x814c('0x39')]?_0x5c5d9d[_0x814c('0x38')]:_0x1a7af0['model'];if(!_0x44fcf4[_0x814c('0x34')][_0x814c('0x3a')](_0x814c('0x3b'))){_0x5c5d9d[_0x814c('0x1c')]=qs[_0x814c('0x1c')](_0x44fcf4[_0x814c('0x34')]['limit']);_0x5c5d9d[_0x814c('0x1a')]=qs['offset'](_0x44fcf4['query'][_0x814c('0x1a')]);}_0x5c5d9d[_0x814c('0x3c')]=qs[_0x814c('0x3d')](_0x44fcf4[_0x814c('0x34')][_0x814c('0x3d')]);_0x5c5d9d[_0x814c('0x3e')]=qs['filters'](_[_0x814c('0x3f')](_0x44fcf4[_0x814c('0x34')],_0x1a7af0['filters']),_0xdedcec);if(_0x44fcf4['query'][_0x814c('0x40')]){_0x5c5d9d[_0x814c('0x3e')]=_[_0x814c('0x41')](_0x5c5d9d['where'],{'$or':_[_0x814c('0x2c')](_0xdedcec,function(_0x4aabca){if(_0x4aabca['type']!==_0x814c('0x42')){var _0x1b501b={};_0x1b501b[_0x4aabca[_0x814c('0x29')]]={'$like':'%'+_0x44fcf4[_0x814c('0x34')][_0x814c('0x40')]+'%'};return _0x1b501b;}})});}_0x5c5d9d=_['merge']({},_0x5c5d9d,_0x44fcf4[_0x814c('0x43')]);var _0x78b4ea={'where':_0x5c5d9d['where']};return db['Interval'][_0x814c('0x1d')](_0x78b4ea)[_0x814c('0x24')](function(_0x348404){_0x2a3b66[_0x814c('0x1d')]=_0x348404;if(_0x44fcf4['query'][_0x814c('0x44')]){_0x5c5d9d[_0x814c('0x45')]=[{'all':!![]}];}return db[_0x814c('0x2d')][_0x814c('0x46')](_0x5c5d9d);})['then'](function(_0x5e5236){_0x2a3b66[_0x814c('0x47')]=_0x5e5236;return _0x2a3b66;})[_0x814c('0x24')](respondWithFilteredResult(_0x1b333d,_0x5c5d9d))[_0x814c('0x48')](handleError(_0x1b333d,null));};exports[_0x814c('0x49')]=function(_0x532923,_0x334d74){var _0x543b3f={'raw':!![],'where':{'id':_0x532923[_0x814c('0x4a')]['id']}},_0x4e74bd={};_0x4e74bd[_0x814c('0x32')]=_[_0x814c('0x33')](db[_0x814c('0x2d')][_0x814c('0x2e')]);_0x4e74bd['query']=_[_0x814c('0x33')](_0x532923['query']);_0x4e74bd[_0x814c('0x35')]=_['intersection'](_0x4e74bd['model'],_0x4e74bd[_0x814c('0x34')]);_0x543b3f[_0x814c('0x38')]=_['intersection'](_0x4e74bd['model'],qs['fields'](_0x532923['query'][_0x814c('0x37')]));_0x543b3f['attributes']=_0x543b3f['attributes'][_0x814c('0x39')]?_0x543b3f[_0x814c('0x38')]:_0x4e74bd['model'];if(_0x532923['query'][_0x814c('0x44')]){_0x543b3f[_0x814c('0x45')]=[{'all':!![]}];}_0x543b3f=_['merge']({},_0x543b3f,_0x532923['options']);return db[_0x814c('0x2d')][_0x814c('0x4b')](_0x543b3f)['then'](handleEntityNotFound(_0x334d74,null))[_0x814c('0x24')](respondWithResult(_0x334d74,null))[_0x814c('0x48')](handleError(_0x334d74,null));};exports['create']=function(_0x39b0a0,_0x23922e){return db[_0x814c('0x2d')][_0x814c('0x4c')](_0x39b0a0[_0x814c('0x4d')],{})[_0x814c('0x24')](function(_0x4ac184){var _0x31b31b=_0x39b0a0[_0x814c('0x4e')][_0x814c('0x25')]({'plain':!![]});if(!_0x31b31b)throw new Error(_0x814c('0x4f'));if(_0x31b31b['role']==='user'){var _0x28e906=_0x4ac184[_0x814c('0x25')]({'plain':!![]});var _0x3ae313='Intervals';return db[_0x814c('0x50')][_0x814c('0x4b')]({'where':{'name':_0x3ae313,'userProfileId':_0x31b31b[_0x814c('0x51')]},'raw':!![]})[_0x814c('0x24')](function(_0x439f40){if(_0x439f40&&_0x439f40[_0x814c('0x52')]===0x0){return db['UserProfileResource'][_0x814c('0x4c')]({'name':_0x28e906[_0x814c('0x29')],'resourceId':_0x28e906['id'],'type':_0x439f40[_0x814c('0x29')],'sectionId':_0x439f40['id']},{})['then'](function(){return _0x4ac184;});}else{return _0x4ac184;}})[_0x814c('0x48')](function(_0x4240ac){logger[_0x814c('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4240ac);throw _0x4240ac;});}return _0x4ac184;})[_0x814c('0x24')](respondWithResult(_0x23922e,0xc9))['catch'](handleError(_0x23922e,null));};exports['update']=function(_0x1e0383,_0x5313ac){if(_0x1e0383[_0x814c('0x4d')]['id']){delete _0x1e0383[_0x814c('0x4d')]['id'];}return db['Interval'][_0x814c('0x4b')]({'where':{'id':_0x1e0383['params']['id']}})['then'](handleEntityNotFound(_0x5313ac,null))[_0x814c('0x24')](saveUpdates(_0x1e0383[_0x814c('0x4d')],null))['then'](respondWithResult(_0x5313ac,null))['catch'](handleError(_0x5313ac,null));};exports[_0x814c('0x23')]=function(_0x132fc6,_0x2b7a54){return db[_0x814c('0x2d')][_0x814c('0x4b')]({'where':{'id':_0x132fc6[_0x814c('0x4a')]['id']}})[_0x814c('0x24')](handleEntityNotFound(_0x2b7a54,null))[_0x814c('0x24')](removeEntity(_0x2b7a54,null))['catch'](handleError(_0x2b7a54,null));};exports[_0x814c('0x53')]=function(_0xf9942e,_0x4fac85,_0x4d3259){if(_0xf9942e['body']['id']){delete _0xf9942e[_0x814c('0x4d')]['id'];}return db[_0x814c('0x2d')][_0x814c('0x4b')]({'where':{'id':_0xf9942e[_0x814c('0x4a')]['id']}})[_0x814c('0x24')](handleEntityNotFound(_0x4fac85,null))[_0x814c('0x24')](function(_0x144c95){if(_0x144c95){_0xf9942e[_0x814c('0x4d')][_0x814c('0x54')]=_0x144c95['id'];return db['Interval'][_0x814c('0x4c')](_0xf9942e['body']);}})['then'](respondWithResult(_0x4fac85,null))[_0x814c('0x48')](handleError(_0x4fac85,null));};exports['getIntervals']=function(_0xadb18e,_0x30f5bc,_0x53ded7){var _0x51da86={};var _0x5b2ba6={};var _0x1f4102;var _0x8d633a;return db[_0x814c('0x2d')][_0x814c('0x55')]({'where':{'id':_0xadb18e[_0x814c('0x4a')]['id']}})[_0x814c('0x24')](handleEntityNotFound(_0x30f5bc,null))[_0x814c('0x24')](function(_0x1967b2){if(_0x1967b2){_0x1f4102=_0x1967b2;_0x5b2ba6['model']=_['keys'](db['Interval'][_0x814c('0x2e')]);_0x5b2ba6[_0x814c('0x34')]=_[_0x814c('0x33')](_0xadb18e[_0x814c('0x34')]);_0x5b2ba6['filters']=_[_0x814c('0x36')](_0x5b2ba6[_0x814c('0x32')],_0x5b2ba6[_0x814c('0x34')]);_0x51da86['attributes']=_[_0x814c('0x36')](_0x5b2ba6[_0x814c('0x32')],qs[_0x814c('0x37')](_0xadb18e['query'][_0x814c('0x37')]));_0x51da86[_0x814c('0x38')]=_0x51da86[_0x814c('0x38')][_0x814c('0x39')]?_0x51da86[_0x814c('0x38')]:_0x5b2ba6[_0x814c('0x32')];_0x51da86['order']=qs[_0x814c('0x3d')](_0xadb18e[_0x814c('0x34')][_0x814c('0x3d')]);_0x51da86[_0x814c('0x3e')]=qs[_0x814c('0x35')](_[_0x814c('0x3f')](_0xadb18e[_0x814c('0x34')],_0x5b2ba6[_0x814c('0x35')]));if(_0xadb18e[_0x814c('0x34')][_0x814c('0x40')]){_0x51da86[_0x814c('0x3e')]=_[_0x814c('0x41')](_0x51da86[_0x814c('0x3e')],{'$or':_[_0x814c('0x2c')](_0x51da86[_0x814c('0x38')],function(_0x27679d){var _0x5348bc={};_0x5348bc[_0x27679d]={'$like':'%'+_0xadb18e['query'][_0x814c('0x40')]+'%'};return _0x5348bc;})});}_0x51da86=_[_0x814c('0x41')]({},_0x51da86,_0xadb18e[_0x814c('0x43')]);return _0x1f4102[_0x814c('0x56')](_0x51da86);}})[_0x814c('0x24')](function(_0x2edb1c){if(_0x2edb1c){_0x8d633a=_0x2edb1c[_0x814c('0x39')];if(!_0xadb18e[_0x814c('0x34')][_0x814c('0x3a')]('nolimit')){_0x51da86[_0x814c('0x1c')]=qs[_0x814c('0x1c')](_0xadb18e['query'][_0x814c('0x1c')]);_0x51da86[_0x814c('0x1a')]=qs[_0x814c('0x1a')](_0xadb18e[_0x814c('0x34')][_0x814c('0x1a')]);}return _0x1f4102[_0x814c('0x56')](_0x51da86);}})[_0x814c('0x24')](function(_0x55104f){if(_0x55104f){return _0x55104f?{'count':_0x8d633a,'rows':_0x55104f}:null;}})[_0x814c('0x24')](respondWithResult(_0x30f5bc,null))[_0x814c('0x48')](handleError(_0x30f5bc,null));};exports[_0x814c('0x57')]=function(_0x44c720,_0x57e551,_0x5ef560){return db[_0x814c('0x2d')][_0x814c('0x55')]({'where':{'id':_0x44c720[_0x814c('0x4a')]['id']}})['then'](handleEntityNotFound(_0x57e551,null))['then'](function(_0xe47e53){if(_0xe47e53){return db[_0x814c('0x58')][_0x814c('0x59')](function(_0x156e35){return db[_0x814c('0x2d')][_0x814c('0x23')]({'where':{'IntervalId':_0x44c720[_0x814c('0x4a')]['id']},'transaction':_0x156e35})[_0x814c('0x24')](function(_0x1e1550){var _0xc654b0=_['map'](_0x44c720['body'],function(_0x292c80){delete _0x292c80['id'];_0x292c80[_0x814c('0x54')]=_0x44c720[_0x814c('0x4a')]['id'];return _0x292c80;});return db[_0x814c('0x2d')][_0x814c('0x5a')](_0xc654b0,{'transaction':_0x156e35});});})['then'](function(){return db[_0x814c('0x2d')][_0x814c('0x46')]({'where':{'IntervalId':_0x44c720[_0x814c('0x4a')]['id']}});});}})['then'](respondWithResult(_0x57e551,null))['catch'](handleError(_0x57e551,null));};
\ No newline at end of file
+var _0x558b=['includeAll','include','findAll','catch','show','params','find','create','body','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','IntervalId','getIntervals','findOne','addIntervals','sequelize','transaction','bulkCreate','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','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','../../components/extensions/rewrite','sendStatus','end','status','json','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Intervals','UserProfileResource','error','stack','send','map','Interval','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','name','options'];(function(_0x3e36b6,_0x43de3b){var _0x4a3a36=function(_0x13f6a0){while(--_0x13f6a0){_0x3e36b6['push'](_0x3e36b6['shift']());}};_0x4a3a36(++_0x43de3b);}(_0x558b,0x1dc));var _0xb558=function(_0x2705da,_0x2a916c){_0x2705da=_0x2705da-0x0;var _0x1c50db=_0x558b[_0x2705da];return _0x1c50db;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb558('0x0'));var zipdir=require(_0xb558('0x1'));var jsonpatch=require(_0xb558('0x2'));var rp=require(_0xb558('0x3'));var moment=require(_0xb558('0x4'));var BPromise=require(_0xb558('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xb558('0x6'));var csv=require(_0xb558('0x7'));var ejs=require(_0xb558('0x8'));var fs=require('fs');var fs_extra=require(_0xb558('0x9'));var _=require(_0xb558('0xa'));var squel=require('squel');var crypto=require(_0xb558('0xb'));var jsforce=require(_0xb558('0xc'));var deskjs=require(_0xb558('0xd'));var toCsv=require(_0xb558('0x7'));var querystring=require('querystring');var Papa=require(_0xb558('0xe'));var Redis=require(_0xb558('0xf'));var authService=require(_0xb558('0x10'));var qs=require(_0xb558('0x11'));var as=require(_0xb558('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb558('0x13'))(_0xb558('0x14'));var utils=require(_0xb558('0x15'));var config=require(_0xb558('0x16'));var licenseUtil=require(_0xb558('0x17'));var db=require(_0xb558('0x18'))['db'];var extensions=require(_0xb558('0x19'));function respondWithStatusCode(_0x87a257,_0x1c6c53){_0x1c6c53=_0x1c6c53||0xcc;return function(_0x4375a2){if(_0x4375a2){return _0x87a257[_0xb558('0x1a')](_0x1c6c53);}return _0x87a257['status'](_0x1c6c53)[_0xb558('0x1b')]();};}function respondWithResult(_0x4b7d7f,_0x5514f3){_0x5514f3=_0x5514f3||0xc8;return function(_0x4ba9ca){if(_0x4ba9ca){return _0x4b7d7f[_0xb558('0x1c')](_0x5514f3)[_0xb558('0x1d')](_0x4ba9ca);}};}function respondWithFilteredResult(_0x330ebc,_0x2cd068){return function(_0x5b1ac8){if(_0x5b1ac8){var _0x20b0a6=typeof _0x2cd068[_0xb558('0x1e')]==='undefined'&&typeof _0x2cd068['limit']==='undefined';var _0x363219=_0x5b1ac8['count'];var _0x4dfaa7=_0x20b0a6?0x0:_0x2cd068[_0xb558('0x1e')];var _0x1a0546=_0x20b0a6?_0x5b1ac8[_0xb558('0x1f')]:_0x2cd068[_0xb558('0x1e')]+_0x2cd068[_0xb558('0x20')];var _0x3e2383;if(_0x1a0546>=_0x363219){_0x1a0546=_0x363219;_0x3e2383=0xc8;}else{_0x3e2383=0xce;}_0x330ebc[_0xb558('0x1c')](_0x3e2383);return _0x330ebc[_0xb558('0x21')](_0xb558('0x22'),_0x4dfaa7+'-'+_0x1a0546+'/'+_0x363219)[_0xb558('0x1d')](_0x5b1ac8);}return null;};}function patchUpdates(_0x52b401){return function(_0x29fca7){try{jsonpatch[_0xb558('0x23')](_0x29fca7,_0x52b401,!![]);}catch(_0x54ae58){return BPromise[_0xb558('0x24')](_0x54ae58);}return _0x29fca7[_0xb558('0x25')]();};}function saveUpdates(_0x10110f,_0x23db2e){return function(_0x216c45){if(_0x216c45){return _0x216c45[_0xb558('0x26')](_0x10110f)[_0xb558('0x27')](function(_0x3a46f6){return _0x3a46f6;});}return null;};}function removeEntity(_0x3b1f7d,_0x262fd5){return function(_0x480de1){if(_0x480de1){return _0x480de1[_0xb558('0x28')]()[_0xb558('0x27')](function(){var _0x536fc4=_0x480de1[_0xb558('0x29')]({'plain':!![]});var _0x1f29ad=_0xb558('0x2a');return db[_0xb558('0x2b')][_0xb558('0x28')]({'where':{'type':_0x1f29ad,'resourceId':_0x536fc4['id']}})[_0xb558('0x27')](function(){return _0x480de1;});})[_0xb558('0x27')](function(){_0x3b1f7d[_0xb558('0x1c')](0xcc)[_0xb558('0x1b')]();});}};}function handleEntityNotFound(_0x44ab06,_0x275172){return function(_0x200f6b){if(!_0x200f6b){_0x44ab06[_0xb558('0x1a')](0x194);}return _0x200f6b;};}function handleError(_0x2da51f,_0x2458dd){_0x2458dd=_0x2458dd||0x1f4;return function(_0x59d615){logger[_0xb558('0x2c')](_0x59d615[_0xb558('0x2d')]);if(_0x59d615['name']){delete _0x59d615['name'];}_0x2da51f['status'](_0x2458dd)[_0xb558('0x2e')](_0x59d615);};}exports['index']=function(_0x4cd84c,_0x8eecff){var _0x1046fd={},_0x522a84={},_0x56776b={'count':0x0,'rows':[]};var _0x3387f2=_[_0xb558('0x2f')](db[_0xb558('0x30')][_0xb558('0x31')],function(_0x249776){return{'name':_0x249776['fieldName'],'type':_0x249776[_0xb558('0x32')][_0xb558('0x33')]};});_0x522a84[_0xb558('0x34')]=_[_0xb558('0x2f')](_0x3387f2,'name');_0x522a84[_0xb558('0x35')]=_[_0xb558('0x36')](_0x4cd84c[_0xb558('0x35')]);_0x522a84[_0xb558('0x37')]=_[_0xb558('0x38')](_0x522a84[_0xb558('0x34')],_0x522a84[_0xb558('0x35')]);_0x1046fd[_0xb558('0x39')]=_['intersection'](_0x522a84[_0xb558('0x34')],qs[_0xb558('0x3a')](_0x4cd84c['query'][_0xb558('0x3a')]));_0x1046fd[_0xb558('0x39')]=_0x1046fd[_0xb558('0x39')][_0xb558('0x3b')]?_0x1046fd[_0xb558('0x39')]:_0x522a84[_0xb558('0x34')];if(!_0x4cd84c[_0xb558('0x35')]['hasOwnProperty'](_0xb558('0x3c'))){_0x1046fd[_0xb558('0x20')]=qs[_0xb558('0x20')](_0x4cd84c['query'][_0xb558('0x20')]);_0x1046fd[_0xb558('0x1e')]=qs[_0xb558('0x1e')](_0x4cd84c[_0xb558('0x35')]['offset']);}_0x1046fd[_0xb558('0x3d')]=qs[_0xb558('0x3e')](_0x4cd84c[_0xb558('0x35')][_0xb558('0x3e')]);_0x1046fd[_0xb558('0x3f')]=qs['filters'](_[_0xb558('0x40')](_0x4cd84c[_0xb558('0x35')],_0x522a84[_0xb558('0x37')]),_0x3387f2);if(_0x4cd84c[_0xb558('0x35')][_0xb558('0x41')]){_0x1046fd[_0xb558('0x3f')]=_[_0xb558('0x42')](_0x1046fd[_0xb558('0x3f')],{'$or':_[_0xb558('0x2f')](_0x3387f2,function(_0x36050a){if(_0x36050a[_0xb558('0x32')]!==_0xb558('0x43')){var _0x48c7a3={};_0x48c7a3[_0x36050a[_0xb558('0x44')]]={'$like':'%'+_0x4cd84c[_0xb558('0x35')][_0xb558('0x41')]+'%'};return _0x48c7a3;}})});}_0x1046fd=_['merge']({},_0x1046fd,_0x4cd84c[_0xb558('0x45')]);var _0x319be4={'where':_0x1046fd[_0xb558('0x3f')]};return db[_0xb558('0x30')][_0xb558('0x1f')](_0x319be4)[_0xb558('0x27')](function(_0x1e39d6){_0x56776b[_0xb558('0x1f')]=_0x1e39d6;if(_0x4cd84c[_0xb558('0x35')][_0xb558('0x46')]){_0x1046fd[_0xb558('0x47')]=[{'all':!![]}];}return db['Interval'][_0xb558('0x48')](_0x1046fd);})[_0xb558('0x27')](function(_0x50c767){_0x56776b['rows']=_0x50c767;return _0x56776b;})[_0xb558('0x27')](respondWithFilteredResult(_0x8eecff,_0x1046fd))[_0xb558('0x49')](handleError(_0x8eecff,null));};exports[_0xb558('0x4a')]=function(_0x4f13cc,_0x13bfba){var _0x5864a9={'raw':!![],'where':{'id':_0x4f13cc[_0xb558('0x4b')]['id']}},_0x2fd863={};_0x2fd863[_0xb558('0x34')]=_['keys'](db['Interval'][_0xb558('0x31')]);_0x2fd863[_0xb558('0x35')]=_[_0xb558('0x36')](_0x4f13cc[_0xb558('0x35')]);_0x2fd863['filters']=_['intersection'](_0x2fd863['model'],_0x2fd863['query']);_0x5864a9[_0xb558('0x39')]=_[_0xb558('0x38')](_0x2fd863[_0xb558('0x34')],qs['fields'](_0x4f13cc[_0xb558('0x35')][_0xb558('0x3a')]));_0x5864a9[_0xb558('0x39')]=_0x5864a9[_0xb558('0x39')][_0xb558('0x3b')]?_0x5864a9[_0xb558('0x39')]:_0x2fd863[_0xb558('0x34')];if(_0x4f13cc[_0xb558('0x35')][_0xb558('0x46')]){_0x5864a9[_0xb558('0x47')]=[{'all':!![]}];}_0x5864a9=_['merge']({},_0x5864a9,_0x4f13cc[_0xb558('0x45')]);return db[_0xb558('0x30')][_0xb558('0x4c')](_0x5864a9)[_0xb558('0x27')](handleEntityNotFound(_0x13bfba,null))[_0xb558('0x27')](respondWithResult(_0x13bfba,null))[_0xb558('0x49')](handleError(_0x13bfba,null));};exports[_0xb558('0x4d')]=function(_0x42dc89,_0x18d230){return db['Interval'][_0xb558('0x4d')](_0x42dc89[_0xb558('0x4e')],{})[_0xb558('0x27')](function(_0x10aa11){var _0x570aca=_0x42dc89[_0xb558('0x4f')][_0xb558('0x29')]({'plain':!![]});if(!_0x570aca)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x570aca['role']===_0xb558('0x4f')){var _0x3aa737=_0x10aa11[_0xb558('0x29')]({'plain':!![]});var _0x22f81a=_0xb558('0x2a');return db[_0xb558('0x50')][_0xb558('0x4c')]({'where':{'name':_0x22f81a,'userProfileId':_0x570aca[_0xb558('0x51')]},'raw':!![]})[_0xb558('0x27')](function(_0x420941){if(_0x420941&&_0x420941['autoAssociation']===0x0){return db[_0xb558('0x2b')]['create']({'name':_0x3aa737[_0xb558('0x44')],'resourceId':_0x3aa737['id'],'type':_0x420941[_0xb558('0x44')],'sectionId':_0x420941['id']},{})[_0xb558('0x27')](function(){return _0x10aa11;});}else{return _0x10aa11;}})[_0xb558('0x49')](function(_0x11d4cb){logger[_0xb558('0x2c')](_0xb558('0x52'),_0x11d4cb);throw _0x11d4cb;});}return _0x10aa11;})['then'](respondWithResult(_0x18d230,0xc9))['catch'](handleError(_0x18d230,null));};exports[_0xb558('0x26')]=function(_0x1a2fb9,_0x4684c9){if(_0x1a2fb9[_0xb558('0x4e')]['id']){delete _0x1a2fb9[_0xb558('0x4e')]['id'];}return db['Interval']['find']({'where':{'id':_0x1a2fb9[_0xb558('0x4b')]['id']}})[_0xb558('0x27')](handleEntityNotFound(_0x4684c9,null))[_0xb558('0x27')](saveUpdates(_0x1a2fb9['body'],null))['then'](respondWithResult(_0x4684c9,null))[_0xb558('0x49')](handleError(_0x4684c9,null));};exports[_0xb558('0x28')]=function(_0x1fef5a,_0x59ff60){return db[_0xb558('0x30')][_0xb558('0x4c')]({'where':{'id':_0x1fef5a['params']['id']}})['then'](handleEntityNotFound(_0x59ff60,null))[_0xb558('0x27')](removeEntity(_0x59ff60,null))[_0xb558('0x49')](handleError(_0x59ff60,null));};exports[_0xb558('0x53')]=function(_0x48064a,_0x54df1d,_0x42dbbc){if(_0x48064a[_0xb558('0x4e')]['id']){delete _0x48064a[_0xb558('0x4e')]['id'];}return db[_0xb558('0x30')][_0xb558('0x4c')]({'where':{'id':_0x48064a[_0xb558('0x4b')]['id']}})[_0xb558('0x27')](handleEntityNotFound(_0x54df1d,null))[_0xb558('0x27')](function(_0x25120a){if(_0x25120a){_0x48064a[_0xb558('0x4e')][_0xb558('0x54')]=_0x25120a['id'];return db[_0xb558('0x30')]['create'](_0x48064a[_0xb558('0x4e')]);}})[_0xb558('0x27')](respondWithResult(_0x54df1d,null))[_0xb558('0x49')](handleError(_0x54df1d,null));};exports[_0xb558('0x55')]=function(_0x27ff98,_0x5ef0a6,_0x15978c){var _0x461427={};var _0x52c4c1={};var _0x467b74;var _0xf1a4f1;return db[_0xb558('0x30')][_0xb558('0x56')]({'where':{'id':_0x27ff98['params']['id']}})[_0xb558('0x27')](handleEntityNotFound(_0x5ef0a6,null))['then'](function(_0x3b51d8){if(_0x3b51d8){_0x467b74=_0x3b51d8;_0x52c4c1[_0xb558('0x34')]=_[_0xb558('0x36')](db[_0xb558('0x30')]['rawAttributes']);_0x52c4c1['query']=_[_0xb558('0x36')](_0x27ff98[_0xb558('0x35')]);_0x52c4c1[_0xb558('0x37')]=_['intersection'](_0x52c4c1[_0xb558('0x34')],_0x52c4c1[_0xb558('0x35')]);_0x461427[_0xb558('0x39')]=_[_0xb558('0x38')](_0x52c4c1['model'],qs[_0xb558('0x3a')](_0x27ff98['query']['fields']));_0x461427[_0xb558('0x39')]=_0x461427[_0xb558('0x39')][_0xb558('0x3b')]?_0x461427[_0xb558('0x39')]:_0x52c4c1[_0xb558('0x34')];_0x461427[_0xb558('0x3d')]=qs['sort'](_0x27ff98[_0xb558('0x35')]['sort']);_0x461427[_0xb558('0x3f')]=qs[_0xb558('0x37')](_[_0xb558('0x40')](_0x27ff98['query'],_0x52c4c1['filters']));if(_0x27ff98['query'][_0xb558('0x41')]){_0x461427[_0xb558('0x3f')]=_[_0xb558('0x42')](_0x461427[_0xb558('0x3f')],{'$or':_['map'](_0x461427[_0xb558('0x39')],function(_0x6d406d){var _0x1d27ef={};_0x1d27ef[_0x6d406d]={'$like':'%'+_0x27ff98[_0xb558('0x35')][_0xb558('0x41')]+'%'};return _0x1d27ef;})});}_0x461427=_[_0xb558('0x42')]({},_0x461427,_0x27ff98[_0xb558('0x45')]);return _0x467b74[_0xb558('0x55')](_0x461427);}})[_0xb558('0x27')](function(_0x276598){if(_0x276598){_0xf1a4f1=_0x276598['length'];if(!_0x27ff98[_0xb558('0x35')]['hasOwnProperty'](_0xb558('0x3c'))){_0x461427[_0xb558('0x20')]=qs['limit'](_0x27ff98[_0xb558('0x35')][_0xb558('0x20')]);_0x461427[_0xb558('0x1e')]=qs[_0xb558('0x1e')](_0x27ff98[_0xb558('0x35')][_0xb558('0x1e')]);}return _0x467b74['getIntervals'](_0x461427);}})['then'](function(_0x377360){if(_0x377360){return _0x377360?{'count':_0xf1a4f1,'rows':_0x377360}:null;}})[_0xb558('0x27')](respondWithResult(_0x5ef0a6,null))['catch'](handleError(_0x5ef0a6,null));};exports[_0xb558('0x57')]=function(_0x1c6396,_0x30ec6b,_0x569ae2){return db[_0xb558('0x30')][_0xb558('0x56')]({'where':{'id':_0x1c6396['params']['id']}})[_0xb558('0x27')](handleEntityNotFound(_0x30ec6b,null))['then'](function(_0x4e2570){if(_0x4e2570){return db[_0xb558('0x58')][_0xb558('0x59')](function(_0x41dcdb){return db[_0xb558('0x30')]['destroy']({'where':{'IntervalId':_0x1c6396[_0xb558('0x4b')]['id']},'transaction':_0x41dcdb})[_0xb558('0x27')](function(_0x3b009f){var _0x380079=_[_0xb558('0x2f')](_0x1c6396[_0xb558('0x4e')],function(_0x11d3a5){delete _0x11d3a5['id'];_0x11d3a5[_0xb558('0x54')]=_0x1c6396[_0xb558('0x4b')]['id'];return _0x11d3a5;});return db['Interval'][_0xb558('0x5a')](_0x380079,{'transaction':_0x41dcdb});});})[_0xb558('0x27')](function(){return db['Interval']['findAll']({'where':{'IntervalId':_0x1c6396[_0xb558('0x4b')]['id']}});});}})['then'](respondWithResult(_0x30ec6b,null))[_0xb558('0x49')](handleError(_0x30ec6b,null));};
\ No newline at end of file
index 34318f6..b83eee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7169=['reduce','./interval.attributes','../../components/extensions/rewrite','../../utils/iftime','iftime','exports','Interval','tools_intervals','rewrite','interval','then','map','ifTime'];(function(_0x58e08c,_0x4bf046){var _0x23be06=function(_0x5dccfb){while(--_0x5dccfb){_0x58e08c['push'](_0x58e08c['shift']());}};_0x23be06(++_0x4bf046);}(_0x7169,0x187));var _0x9716=function(_0x20c9b2,_0x55d7b1){_0x20c9b2=_0x20c9b2-0x0;var _0x2c6030=_0x7169[_0x20c9b2];return _0x2c6030;};'use strict';var attributes=require(_0x9716('0x0'));var extensions=require(_0x9716('0x1'));var iftime=require(_0x9716('0x2'))[_0x9716('0x3')];module[_0x9716('0x4')]=function(_0x5d12dd){return _0x5d12dd['define'](_0x9716('0x5'),attributes,{'tableName':_0x9716('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x43c671){extensions['rewrite'](_0x5d12dd,_0x43c671);},'afterBulkCreate':function(_0x391447,_0x5ed9cc,_0x5d5119){_0x5d5119();extensions[_0x9716('0x7')](_0x5d12dd,_0x391447[0x0]);},'afterUpdate':function(_0xaebee9){extensions[_0x9716('0x7')](_0x5d12dd,_0xaebee9);},'afterDestroy':function(_0x229e8e){extensions[_0x9716('0x7')](_0x5d12dd,_0x229e8e);}},'instanceMethods':{'ifTime':function(_0x3a9678=undefined,_0x5f3faa=new Date()){if(typeof this[_0x9716('0x8')]==='string'){return iftime(this[_0x9716('0x8')],_0x3a9678,_0x5f3faa);}else{return this['getIntervals']()[_0x9716('0x9')](function(_0x515024){return Promise['all'](_0x515024[_0x9716('0xa')](function(_0x405e42){return _0x405e42[_0x9716('0xb')](_0x3a9678,_0x5f3faa);}));})['then'](function(_0xefe639){return _0xefe639[_0x9716('0xc')](function(_0x2bb697,_0x19d0ad){return _0x2bb697||_0x19d0ad;},![]);});}}}});};
\ No newline at end of file
+var _0x72cf=['./interval.attributes','../../components/extensions/rewrite','../../utils/iftime','iftime','exports','define','Interval','rewrite','interval','string','getIntervals','then','all','map','reduce'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x72cf,0xa5));var _0xf72c=function(_0x38757a,_0x42155c){_0x38757a=_0x38757a-0x0;var _0x40edd0=_0x72cf[_0x38757a];return _0x40edd0;};'use strict';var attributes=require(_0xf72c('0x0'));var extensions=require(_0xf72c('0x1'));var iftime=require(_0xf72c('0x2'))[_0xf72c('0x3')];module[_0xf72c('0x4')]=function(_0xbabc15){return _0xbabc15[_0xf72c('0x5')](_0xf72c('0x6'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xe9fc0c){extensions[_0xf72c('0x7')](_0xbabc15,_0xe9fc0c);},'afterBulkCreate':function(_0xcb392a,_0x5522d4,_0x1cc6ba){_0x1cc6ba();extensions[_0xf72c('0x7')](_0xbabc15,_0xcb392a[0x0]);},'afterUpdate':function(_0x26790c){extensions['rewrite'](_0xbabc15,_0x26790c);},'afterDestroy':function(_0x11d902){extensions[_0xf72c('0x7')](_0xbabc15,_0x11d902);}},'instanceMethods':{'ifTime':function(_0x3ce542=undefined,_0x4be257=new Date()){if(typeof this[_0xf72c('0x8')]===_0xf72c('0x9')){return iftime(this[_0xf72c('0x8')],_0x3ce542,_0x4be257);}else{return this[_0xf72c('0xa')]()[_0xf72c('0xb')](function(_0x35e73c){return Promise[_0xf72c('0xc')](_0x35e73c[_0xf72c('0xd')](function(_0x564070){return _0x564070['ifTime'](_0x3ce542,_0x4be257);}));})[_0xf72c('0xb')](function(_0x31f3a8){return _0x31f3a8[_0xf72c('0xe')](function(_0x18cfc0,_0x3d8a3f){return _0x18cfc0||_0x3d8a3f;},![]);});}}}});};
\ No newline at end of file
index c8e033d..fb84b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb432=['GetInterval','Interval','options','where','attributes','limit','include','map','model','then','info','stringify','catch','error','message','ShowInterval','find','raw','findAll','ifTime','reduce','format','join','findById','IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)','name','intervalIds','isArray','intervals','string','timezone','IntervalIftime:\x20interval\x20strings\x20=\x20%s','IntervalIftime:\x20timezone\x20=\x20%s','debug','Iftime','silly','IntervalIftime','resolve','util','../../mysqldb','../../utils/iftime','iftime','../../config/logger'];(function(_0x10b441,_0x26e3ca){var _0x35f811=function(_0x3200a9){while(--_0x3200a9){_0x10b441['push'](_0x10b441['shift']());}};_0x35f811(++_0x26e3ca);}(_0xb432,0x128));var _0x2b43=function(_0x268afe,_0x50bb60){_0x268afe=_0x268afe-0x0;var _0x288d0b=_0xb432[_0x268afe];return _0x288d0b;};'use strict';var _=require('lodash');var util=require(_0x2b43('0x0'));var db=require(_0x2b43('0x1'))['db'];var iftime=require(_0x2b43('0x2'))[_0x2b43('0x3')];var logger=require(_0x2b43('0x4'))('rpc');exports[_0x2b43('0x5')]=function(_0x3b7540){var _0x352176=this;return new Promise(function(_0x23e716,_0x594bb4){return db[_0x2b43('0x6')]['findAll']({'raw':_0x3b7540[_0x2b43('0x7')]?_0x3b7540[_0x2b43('0x7')]['raw']===undefined?!![]:![]:!![],'where':_0x3b7540[_0x2b43('0x7')]?_0x3b7540['options'][_0x2b43('0x8')]||null:null,'attributes':_0x3b7540[_0x2b43('0x7')]?_0x3b7540['options'][_0x2b43('0x9')]||null:null,'limit':_0x3b7540[_0x2b43('0x7')]?_0x3b7540[_0x2b43('0x7')][_0x2b43('0xa')]||null:null,'include':_0x3b7540[_0x2b43('0x7')]?_0x3b7540[_0x2b43('0x7')][_0x2b43('0xb')]?_[_0x2b43('0xc')](_0x3b7540[_0x2b43('0x7')][_0x2b43('0xb')],function(_0x3db98f){return{'model':db[_0x3db98f[_0x2b43('0xd')]],'as':_0x3db98f['as'],'attributes':_0x3db98f[_0x2b43('0x9')],'include':_0x3db98f[_0x2b43('0xb')]?_['map'](_0x3db98f['include'],function(_0x2afae0){return{'model':db[_0x2afae0[_0x2b43('0xd')]],'as':_0x2afae0['as'],'attributes':_0x2afae0[_0x2b43('0x9')],'include':_0x2afae0[_0x2b43('0xb')]?_[_0x2b43('0xc')](_0x2afae0[_0x2b43('0xb')],function(_0x439ee4){return{'model':db[_0x439ee4[_0x2b43('0xd')]],'as':_0x439ee4['as'],'attributes':_0x439ee4[_0x2b43('0x9')]};}):[]};}):[]};}):[]:[]})[_0x2b43('0xe')](function(_0x3cc6a5){logger[_0x2b43('0xf')](_0x2b43('0x5'),_0x3b7540);logger['debug']('GetInterval',_0x3b7540,JSON[_0x2b43('0x10')](_0x3cc6a5));_0x23e716(_0x3cc6a5);})[_0x2b43('0x11')](function(_0x10e244){logger[_0x2b43('0x12')](_0x2b43('0x5'),_0x10e244['message'],_0x3b7540);_0x594bb4(_0x352176[_0x2b43('0x12')](0x1f4,_0x10e244[_0x2b43('0x13')]));});});};exports[_0x2b43('0x14')]=function(_0x47c815){var _0x203067=this;return new Promise(function(_0x127397,_0x5af17a){return db[_0x2b43('0x6')][_0x2b43('0x15')]({'raw':_0x47c815[_0x2b43('0x7')]?_0x47c815[_0x2b43('0x7')][_0x2b43('0x16')]===undefined?!![]:![]:!![],'where':_0x47c815[_0x2b43('0x7')]?_0x47c815[_0x2b43('0x7')][_0x2b43('0x8')]||null:null,'attributes':_0x47c815[_0x2b43('0x7')]?_0x47c815['options'][_0x2b43('0x9')]||null:null,'include':_0x47c815[_0x2b43('0x7')]?_0x47c815[_0x2b43('0x7')][_0x2b43('0xb')]?_[_0x2b43('0xc')](_0x47c815[_0x2b43('0x7')]['include'],function(_0x3c4d7b){return{'model':db[_0x3c4d7b['model']],'as':_0x3c4d7b['as'],'attributes':_0x3c4d7b[_0x2b43('0x9')],'include':_0x3c4d7b[_0x2b43('0xb')]?_[_0x2b43('0xc')](_0x3c4d7b[_0x2b43('0xb')],function(_0x5219de){return{'model':db[_0x5219de[_0x2b43('0xd')]],'as':_0x5219de['as'],'attributes':_0x5219de[_0x2b43('0x9')],'include':_0x5219de['include']?_[_0x2b43('0xc')](_0x5219de['include'],function(_0x548b7f){return{'model':db[_0x548b7f[_0x2b43('0xd')]],'as':_0x548b7f['as'],'attributes':_0x548b7f[_0x2b43('0x9')]};}):[]};}):[]};}):[]:[]})[_0x2b43('0xe')](function(_0x364ae5){logger[_0x2b43('0xf')](_0x2b43('0x14'),_0x47c815);logger['debug'](_0x2b43('0x14'),_0x47c815,JSON['stringify'](_0x364ae5));_0x127397(_0x364ae5);})[_0x2b43('0x11')](function(_0x1e12f5){logger[_0x2b43('0x12')](_0x2b43('0x14'),_0x1e12f5[_0x2b43('0x13')],_0x47c815);_0x5af17a(_0x203067[_0x2b43('0x12')](0x1f4,_0x1e12f5[_0x2b43('0x13')]));});});};function checkArrayOfIntervals(_0xc3d146,_0x4a867e){var _0x587729=[];return db['Interval'][_0x2b43('0x17')]({'where':{'id':_0xc3d146}})[_0x2b43('0xe')](function(_0x499be3){_0x587729=_0x499be3;return Promise['all'](_0x587729['map'](function(_0x507531){return _0x507531[_0x2b43('0x18')](_0x4a867e);}));})[_0x2b43('0xe')](function(_0x15b612){var _0x327357=_0x15b612[_0x2b43('0x19')](function(_0x3fad25,_0x53571e){return _0x3fad25||_0x53571e;},![]);logger[_0x2b43('0xf')](util[_0x2b43('0x1a')]('IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)',_0x587729[_0x2b43('0xc')](function(_0x2b60b7){return _0x2b60b7['name'];})['join'](',\x20'),_0x587729['map'](function(_0x2e807a){return _0x2e807a['id'];})[_0x2b43('0x1b')](',\x20')));return _0x327357;});}function checkSingleInterval(_0xb527de,_0x27841b){return db['Interval'][_0x2b43('0x1c')](_0xb527de)[_0x2b43('0xe')](function(_0x3d9444){if(_0x3d9444){logger[_0x2b43('0xf')](util[_0x2b43('0x1a')](_0x2b43('0x1d'),_0x3d9444[_0x2b43('0x1e')],_0x3d9444['id']));return _0x3d9444[_0x2b43('0x18')](_0x27841b);}});}exports['IntervalIftime']=function(_0x4acea7){var _0x2ffd04=_0x4acea7[_0x2b43('0x1f')];var _0x111f5c=Array[_0x2b43('0x20')](_0x4acea7[_0x2b43('0x21')])?_0x4acea7[_0x2b43('0x21')]:typeof _0x4acea7['intervals']===_0x2b43('0x22')?[_0x4acea7[_0x2b43('0x21')]]:[];var _0x20ffae=_0x4acea7[_0x2b43('0x23')]||undefined;var _0x2da67a=![];if(_0x111f5c['length']){logger[_0x2b43('0xf')](util[_0x2b43('0x1a')](_0x2b43('0x24'),_0x111f5c[_0x2b43('0x1b')](';\x20')));}if(_0x20ffae){logger['info'](util['format'](_0x2b43('0x25'),_0x20ffae));}logger[_0x2b43('0x26')](_0x2b43('0x27'),_0x2da67a);logger[_0x2b43('0x28')](_0x2b43('0x29'),_0x4acea7);return Promise[_0x2b43('0x2a')]()[_0x2b43('0xe')](function(){if(Array[_0x2b43('0x20')](_0x2ffd04)){return checkArrayOfIntervals(_0x2ffd04,_0x20ffae);}else if(_0x2ffd04){return checkSingleInterval(_0x2ffd04,_0x20ffae);}})['then'](function(_0x3d5c3d){var _0x1ab019=_0x111f5c[_0x2b43('0x19')](function(_0x1c6fc9,_0x63f3af){return _0x1c6fc9||iftime(_0x63f3af,_0x20ffae);},![]);_0x2da67a=_0x3d5c3d||_0x1ab019;return _0x2da67a;})[_0x2b43('0x11')](function(_0x10a65b){logger['error'](_0x2b43('0x29'),_0x4acea7,_0x10a65b);throw this[_0x2b43('0x12')](0x1f4,_0x10a65b[_0x2b43('0x13')]);});};
\ No newline at end of file
+var _0xcda6=['iftime','rpc','Interval','findAll','options','raw','where','attributes','limit','include','map','model','then','info','GetInterval','debug','stringify','catch','error','message','ShowInterval','find','ifTime','reduce','format','IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)','name','join','findById','IntervalIftime','isArray','intervals','string','timezone','IntervalIftime:\x20interval\x20strings\x20=\x20%s','Iftime','resolve','lodash','util','../../mysqldb'];(function(_0x338184,_0x3674df){var _0x4c7947=function(_0x4b9846){while(--_0x4b9846){_0x338184['push'](_0x338184['shift']());}};_0x4c7947(++_0x3674df);}(_0xcda6,0x165));var _0x6cda=function(_0x2626fa,_0x59b39c){_0x2626fa=_0x2626fa-0x0;var _0x1f49f1=_0xcda6[_0x2626fa];return _0x1f49f1;};'use strict';var _=require(_0x6cda('0x0'));var util=require(_0x6cda('0x1'));var db=require(_0x6cda('0x2'))['db'];var iftime=require('../../utils/iftime')[_0x6cda('0x3')];var logger=require('../../config/logger')(_0x6cda('0x4'));exports['GetInterval']=function(_0x229fd9){var _0x44968f=this;return new Promise(function(_0xcf1de8,_0xcecb8a){return db[_0x6cda('0x5')][_0x6cda('0x6')]({'raw':_0x229fd9['options']?_0x229fd9[_0x6cda('0x7')][_0x6cda('0x8')]===undefined?!![]:![]:!![],'where':_0x229fd9['options']?_0x229fd9[_0x6cda('0x7')][_0x6cda('0x9')]||null:null,'attributes':_0x229fd9[_0x6cda('0x7')]?_0x229fd9[_0x6cda('0x7')][_0x6cda('0xa')]||null:null,'limit':_0x229fd9[_0x6cda('0x7')]?_0x229fd9['options'][_0x6cda('0xb')]||null:null,'include':_0x229fd9[_0x6cda('0x7')]?_0x229fd9['options'][_0x6cda('0xc')]?_[_0x6cda('0xd')](_0x229fd9[_0x6cda('0x7')][_0x6cda('0xc')],function(_0x51bf05){return{'model':db[_0x51bf05['model']],'as':_0x51bf05['as'],'attributes':_0x51bf05[_0x6cda('0xa')],'include':_0x51bf05[_0x6cda('0xc')]?_['map'](_0x51bf05[_0x6cda('0xc')],function(_0x3f32eb){return{'model':db[_0x3f32eb['model']],'as':_0x3f32eb['as'],'attributes':_0x3f32eb[_0x6cda('0xa')],'include':_0x3f32eb[_0x6cda('0xc')]?_[_0x6cda('0xd')](_0x3f32eb[_0x6cda('0xc')],function(_0xa8c999){return{'model':db[_0xa8c999[_0x6cda('0xe')]],'as':_0xa8c999['as'],'attributes':_0xa8c999[_0x6cda('0xa')]};}):[]};}):[]};}):[]:[]})[_0x6cda('0xf')](function(_0x42d7d8){logger[_0x6cda('0x10')](_0x6cda('0x11'),_0x229fd9);logger[_0x6cda('0x12')](_0x6cda('0x11'),_0x229fd9,JSON[_0x6cda('0x13')](_0x42d7d8));_0xcf1de8(_0x42d7d8);})[_0x6cda('0x14')](function(_0x52f679){logger[_0x6cda('0x15')](_0x6cda('0x11'),_0x52f679[_0x6cda('0x16')],_0x229fd9);_0xcecb8a(_0x44968f[_0x6cda('0x15')](0x1f4,_0x52f679['message']));});});};exports[_0x6cda('0x17')]=function(_0x375788){var _0x3a50c4=this;return new Promise(function(_0x4c89b6,_0x51012b){return db['Interval'][_0x6cda('0x18')]({'raw':_0x375788[_0x6cda('0x7')]?_0x375788[_0x6cda('0x7')][_0x6cda('0x8')]===undefined?!![]:![]:!![],'where':_0x375788['options']?_0x375788['options'][_0x6cda('0x9')]||null:null,'attributes':_0x375788[_0x6cda('0x7')]?_0x375788['options'][_0x6cda('0xa')]||null:null,'include':_0x375788[_0x6cda('0x7')]?_0x375788[_0x6cda('0x7')][_0x6cda('0xc')]?_[_0x6cda('0xd')](_0x375788[_0x6cda('0x7')][_0x6cda('0xc')],function(_0x4624c0){return{'model':db[_0x4624c0[_0x6cda('0xe')]],'as':_0x4624c0['as'],'attributes':_0x4624c0[_0x6cda('0xa')],'include':_0x4624c0[_0x6cda('0xc')]?_[_0x6cda('0xd')](_0x4624c0[_0x6cda('0xc')],function(_0x2115cd){return{'model':db[_0x2115cd[_0x6cda('0xe')]],'as':_0x2115cd['as'],'attributes':_0x2115cd[_0x6cda('0xa')],'include':_0x2115cd[_0x6cda('0xc')]?_[_0x6cda('0xd')](_0x2115cd[_0x6cda('0xc')],function(_0x3b039b){return{'model':db[_0x3b039b['model']],'as':_0x3b039b['as'],'attributes':_0x3b039b[_0x6cda('0xa')]};}):[]};}):[]};}):[]:[]})[_0x6cda('0xf')](function(_0x50b855){logger[_0x6cda('0x10')](_0x6cda('0x17'),_0x375788);logger[_0x6cda('0x12')]('ShowInterval',_0x375788,JSON['stringify'](_0x50b855));_0x4c89b6(_0x50b855);})[_0x6cda('0x14')](function(_0x35bfe9){logger[_0x6cda('0x15')](_0x6cda('0x17'),_0x35bfe9[_0x6cda('0x16')],_0x375788);_0x51012b(_0x3a50c4[_0x6cda('0x15')](0x1f4,_0x35bfe9[_0x6cda('0x16')]));});});};function checkArrayOfIntervals(_0x1b5154,_0x2686d6){var _0x25a10=[];return db[_0x6cda('0x5')][_0x6cda('0x6')]({'where':{'id':_0x1b5154}})[_0x6cda('0xf')](function(_0x2a78a1){_0x25a10=_0x2a78a1;return Promise['all'](_0x25a10['map'](function(_0x1608d3){return _0x1608d3[_0x6cda('0x19')](_0x2686d6);}));})[_0x6cda('0xf')](function(_0x2c8ad7){var _0x1aeb8c=_0x2c8ad7[_0x6cda('0x1a')](function(_0x1b80ca,_0x4e2fde){return _0x1b80ca||_0x4e2fde;},![]);logger[_0x6cda('0x10')](util[_0x6cda('0x1b')](_0x6cda('0x1c'),_0x25a10[_0x6cda('0xd')](function(_0x363c7a){return _0x363c7a[_0x6cda('0x1d')];})['join'](',\x20'),_0x25a10[_0x6cda('0xd')](function(_0x47ef53){return _0x47ef53['id'];})[_0x6cda('0x1e')](',\x20')));return _0x1aeb8c;});}function checkSingleInterval(_0x5c79e7,_0x17480d){return db[_0x6cda('0x5')][_0x6cda('0x1f')](_0x5c79e7)['then'](function(_0x5edc35){if(_0x5edc35){logger[_0x6cda('0x10')](util['format']('IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)',_0x5edc35[_0x6cda('0x1d')],_0x5edc35['id']));return _0x5edc35[_0x6cda('0x19')](_0x17480d);}});}exports[_0x6cda('0x20')]=function(_0xb5ada7){var _0x321e80=_0xb5ada7['intervalIds'];var _0x481121=Array[_0x6cda('0x21')](_0xb5ada7[_0x6cda('0x22')])?_0xb5ada7[_0x6cda('0x22')]:typeof _0xb5ada7[_0x6cda('0x22')]===_0x6cda('0x23')?[_0xb5ada7[_0x6cda('0x22')]]:[];var _0x491123=_0xb5ada7[_0x6cda('0x24')]||undefined;var _0x1fad1c=![];if(_0x481121['length']){logger[_0x6cda('0x10')](util[_0x6cda('0x1b')](_0x6cda('0x25'),_0x481121[_0x6cda('0x1e')](';\x20')));}if(_0x491123){logger[_0x6cda('0x10')](util[_0x6cda('0x1b')]('IntervalIftime:\x20timezone\x20=\x20%s',_0x491123));}logger[_0x6cda('0x12')](_0x6cda('0x26'),_0x1fad1c);logger['silly'](_0x6cda('0x20'),_0xb5ada7);return Promise[_0x6cda('0x27')]()['then'](function(){if(Array['isArray'](_0x321e80)){return checkArrayOfIntervals(_0x321e80,_0x491123);}else if(_0x321e80){return checkSingleInterval(_0x321e80,_0x491123);}})['then'](function(_0x540e82){var _0x296303=_0x481121[_0x6cda('0x1a')](function(_0x2e4a1b,_0xd837a4){return _0x2e4a1b||iftime(_0xd837a4,_0x491123);},![]);_0x1fad1c=_0x540e82||_0x296303;return _0x1fad1c;})[_0x6cda('0x14')](function(_0x2fa73b){logger[_0x6cda('0x15')](_0x6cda('0x20'),_0xb5ada7,_0x2fa73b);throw this[_0x6cda('0x15')](0x1f4,_0x2fa73b[_0x6cda('0x16')]);});};
\ No newline at end of file
index 45abeaa..36ccd5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x56ea53,_0x391cfc){var _0x5b5f5a=function(_0x37b9f0){while(--_0x37b9f0){_0x56ea53['push'](_0x56ea53['shift']());}};_0x5b5f5a(++_0x391cfc);}(_0x2ef3,0xba));var _0x32ef=function(_0x1d7e73,_0x2e6a99){_0x1d7e73=_0x1d7e73-0x0;var _0x181eaa=_0x2ef3[_0x1d7e73];return _0x181eaa;};'use strict';var express=require(_0x32ef('0x0'));var router=express[_0x32ef('0x1')]();var auth=require(_0x32ef('0x2'));var controller=require(_0x32ef('0x3'));router[_0x32ef('0x4')]('/',auth[_0x32ef('0x5')](),controller['send']);module[_0x32ef('0x6')]=router;
\ No newline at end of file
+var _0x2032=['isAuthenticated','send','Router','../../components/auth/service','./jira.controller'];(function(_0x145208,_0x2f9490){var _0x2533f5=function(_0x2d2cd0){while(--_0x2d2cd0){_0x145208['push'](_0x145208['shift']());}};_0x2533f5(++_0x2f9490);}(_0x2032,0xd9));var _0x2203=function(_0x2238af,_0x304b1b){_0x2238af=_0x2238af-0x0;var _0x20fb2e=_0x2032[_0x2238af];return _0x20fb2e;};'use strict';var express=require('express');var router=express[_0x2203('0x0')]();var auth=require(_0x2203('0x1'));var controller=require(_0x2203('0x2'));router['post']('/',auth[_0x2203('0x3')](),controller[_0x2203('0x4')]);module['exports']=router;
\ No newline at end of file
index cd9fb26..470dab8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5036=['Basic\x20','request','setEncoding','data','end','status','statusCode','json','api.jira','write','send','headers','connection','remoteAddress','socket','body','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','oldToken','newToken','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json'];(function(_0x36e776,_0x2b0bfc){var _0x2928cd=function(_0x45c30d){while(--_0x45c30d){_0x36e776['push'](_0x36e776['shift']());}};_0x2928cd(++_0x2b0bfc);}(_0x5036,0x1c8));var _0x6503=function(_0xae1a83,_0x1980d4){_0xae1a83=_0xae1a83-0x0;var _0xdb9da8=_0x5036[_0xae1a83];return _0xdb9da8;};'use strict';var BPromise=require(_0x6503('0x0'));var https=require(_0x6503('0x1'));var logger=require(_0x6503('0x2'))(_0x6503('0x3'));var USERNAME=_0x6503('0x4');var PASSWORD=_0x6503('0x5');function openIssue(_0x5a55d4,_0x38ea9c){var _0x2f0e2c={'fields':{'project':{'key':_0x5a55d4[_0x6503('0x6')]||_0x6503('0x7')},'summary':(_0x5a55d4[_0x6503('0x8')]||_0x6503('0x9'))+_0x6503('0xa')+_0x5a55d4['ip'],'description':_0x5a55d4[_0x6503('0xb')]||JSON[_0x6503('0xc')](_0x5a55d4),'issuetype':{'name':_0x5a55d4[_0x6503('0xd')]||_0x6503('0xe')}}};_0x2f0e2c[_0x6503('0xf')][_0x6503('0x10')]=_0x5a55d4[_0x6503('0x11')];_0x2f0e2c[_0x6503('0xf')]['customfield_11501']=_0x5a55d4[_0x6503('0x12')];_0x2f0e2c['fields']['customfield_11502']=_0x5a55d4[_0x6503('0x13')];_0x2f0e2c[_0x6503('0xf')]['customfield_11503']=_0x5a55d4[_0x6503('0x14')];_0x2f0e2c['fields'][_0x6503('0x15')]=_0x5a55d4[_0x6503('0x16')];_0x2f0e2c[_0x6503('0xf')][_0x6503('0x17')]=_0x5a55d4['ip'];var _0x35205d={'host':_0x6503('0x18'),'port':0x1bb,'path':_0x6503('0x19'),'method':_0x6503('0x1a'),'timeout':0x4e20,'headers':{'Content-Type':_0x6503('0x1b'),'Authorization':_0x6503('0x1c')+new Buffer(USERNAME+':'+PASSWORD)['toString']('base64')}};var _0x505f26=JSON[_0x6503('0xc')](_0x2f0e2c);var _0x5e299c=https[_0x6503('0x1d')](_0x35205d,function(_0x2ab9ac){_0x2ab9ac[_0x6503('0x1e')]('utf8');var _0x2b4102='';_0x2ab9ac['on'](_0x6503('0x1f'),function(_0x4703df){_0x2b4102+=_0x4703df;});_0x2ab9ac['on'](_0x6503('0x20'),function(){if(_0x38ea9c){return _0x38ea9c[_0x6503('0x21')](_0x2ab9ac[_0x6503('0x22')])[_0x6503('0x23')](JSON['parse'](_0x2b4102));}});});_0x5e299c['on']('error',function(_0x21ee3c){if(_0x38ea9c){return _0x38ea9c[_0x6503('0x21')](0x1f4)[_0x6503('0x23')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0x6503('0x24')}]});}});_0x5e299c[_0x6503('0x25')](_0x505f26);_0x5e299c[_0x6503('0x20')]();}exports['openIssue']=openIssue;exports[_0x6503('0x26')]=function(_0x26da79,_0x3af97e){_0x26da79['body']['ip']=_0x26da79[_0x6503('0x27')]['x-forwarded-for']||_0x26da79[_0x6503('0x28')][_0x6503('0x29')]||_0x26da79['socket'][_0x6503('0x29')]||_0x26da79[_0x6503('0x28')][_0x6503('0x2a')][_0x6503('0x29')];return openIssue(_0x26da79[_0x6503('0x2b')],_0x3af97e);};
\ No newline at end of file
+var _0x0691=['description','stringify','issuetype','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','customfield_11503','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','end','status','statusCode','error','json','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','send','body','connection','remoteAddress','socket','https','../../config/logger','3eAmWpBVP0','key','MOTGUI','Report','\x20from\x20'];(function(_0xc4c1e8,_0x2522e3){var _0xc1bc3e=function(_0x4b99f4){while(--_0x4b99f4){_0xc4c1e8['push'](_0xc4c1e8['shift']());}};_0xc1bc3e(++_0x2522e3);}(_0x0691,0x77));var _0x1069=function(_0x47e8d1,_0x3852f4){_0x47e8d1=_0x47e8d1-0x0;var _0x589536=_0x0691[_0x47e8d1];return _0x589536;};'use strict';var BPromise=require('bluebird');var https=require(_0x1069('0x0'));var logger=require(_0x1069('0x1'))('api');var USERNAME='support';var PASSWORD=_0x1069('0x2');function openIssue(_0x4c0bc4,_0x406c9e){var _0x1f32fc={'fields':{'project':{'key':_0x4c0bc4[_0x1069('0x3')]||_0x1069('0x4')},'summary':(_0x4c0bc4['summary']||_0x1069('0x5'))+_0x1069('0x6')+_0x4c0bc4['ip'],'description':_0x4c0bc4[_0x1069('0x7')]||JSON[_0x1069('0x8')](_0x4c0bc4),'issuetype':{'name':_0x4c0bc4[_0x1069('0x9')]||'Bug'}}};_0x1f32fc[_0x1069('0xa')][_0x1069('0xb')]=_0x4c0bc4[_0x1069('0xc')];_0x1f32fc['fields'][_0x1069('0xd')]=_0x4c0bc4[_0x1069('0xe')];_0x1f32fc[_0x1069('0xa')][_0x1069('0xf')]=_0x4c0bc4['newToken'];_0x1f32fc['fields'][_0x1069('0x10')]=_0x4c0bc4['name'];_0x1f32fc['fields'][_0x1069('0x11')]=_0x4c0bc4[_0x1069('0x12')];_0x1f32fc[_0x1069('0xa')][_0x1069('0x13')]=_0x4c0bc4['ip'];var _0x1f1260={'host':_0x1069('0x14'),'port':0x1bb,'path':_0x1069('0x15'),'method':_0x1069('0x16'),'timeout':0x4e20,'headers':{'Content-Type':_0x1069('0x17'),'Authorization':_0x1069('0x18')+new Buffer(USERNAME+':'+PASSWORD)[_0x1069('0x19')](_0x1069('0x1a'))}};var _0x40e728=JSON[_0x1069('0x8')](_0x1f32fc);var _0x1ff476=https[_0x1069('0x1b')](_0x1f1260,function(_0x579d5c){_0x579d5c[_0x1069('0x1c')](_0x1069('0x1d'));var _0x4782b0='';_0x579d5c['on']('data',function(_0x38e708){_0x4782b0+=_0x38e708;});_0x579d5c['on'](_0x1069('0x1e'),function(){if(_0x406c9e){return _0x406c9e[_0x1069('0x1f')](_0x579d5c[_0x1069('0x20')])['json'](JSON['parse'](_0x4782b0));}});});_0x1ff476['on'](_0x1069('0x21'),function(_0x560141){if(_0x406c9e){return _0x406c9e['status'](0x1f4)[_0x1069('0x22')]({'errors':[{'message':_0x1069('0x23'),'type':'api.jira'}]});}});_0x1ff476[_0x1069('0x24')](_0x40e728);_0x1ff476[_0x1069('0x1e')]();}exports['openIssue']=openIssue;exports[_0x1069('0x25')]=function(_0x522749,_0x44fe4e){_0x522749[_0x1069('0x26')]['ip']=_0x522749['headers']['x-forwarded-for']||_0x522749[_0x1069('0x27')]['remoteAddress']||_0x522749['socket'][_0x1069('0x28')]||_0x522749[_0x1069('0x27')][_0x1069('0x29')][_0x1069('0x28')];return openIssue(_0x522749[_0x1069('0x26')],_0x44fe4e);};
\ No newline at end of file
index c39539d..986c25b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2750=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated','/:id','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0x5d3903,_0x3d6c3e){var _0x4b8bc9=function(_0x92b297){while(--_0x92b297){_0x5d3903['push'](_0x5d3903['shift']());}};_0x4b8bc9(++_0x3d6c3e);}(_0x2750,0x13b));var _0x0275=function(_0x141251,_0x1a2611){_0x141251=_0x141251-0x0;var _0x3cfff8=_0x2750[_0x141251];return _0x3cfff8;};'use strict';var multer=require(_0x0275('0x0'));var util=require('util');var path=require(_0x0275('0x1'));var timeout=require(_0x0275('0x2'));var express=require(_0x0275('0x3'));var router=express[_0x0275('0x4')]();var fs_extra=require(_0x0275('0x5'));var auth=require(_0x0275('0x6'));var interaction=require(_0x0275('0x7'));var config=require(_0x0275('0x8'));var controller=require(_0x0275('0x9'));router[_0x0275('0xa')]('/',auth['isAuthenticated'](),controller[_0x0275('0xb')]);router[_0x0275('0xa')](_0x0275('0xc'),auth[_0x0275('0xd')](),controller['describe']);router[_0x0275('0xa')](_0x0275('0xe'),auth[_0x0275('0xd')](),controller['show']);router['post']('/',auth[_0x0275('0xd')](),controller['create']);router[_0x0275('0xf')](_0x0275('0xe'),auth[_0x0275('0xd')](),controller[_0x0275('0x10')]);router[_0x0275('0x11')]('/:id',auth[_0x0275('0xd')](),controller[_0x0275('0x12')]);module[_0x0275('0x13')]=router;
\ No newline at end of file
+var _0x4ea3=['multer','util','path','connect-timeout','Router','../../components/auth/service','./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','/:id','post','update','destroy','exports'];(function(_0x4e4a09,_0xe4eac8){var _0x17a756=function(_0x23b5ef){while(--_0x23b5ef){_0x4e4a09['push'](_0x4e4a09['shift']());}};_0x17a756(++_0xe4eac8);}(_0x4ea3,0x70));var _0x34ea=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x4ea3[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0x34ea('0x0'));var util=require(_0x34ea('0x1'));var path=require(_0x34ea('0x2'));var timeout=require(_0x34ea('0x3'));var express=require('express');var router=express[_0x34ea('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x34ea('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x34ea('0x6'));router[_0x34ea('0x7')]('/',auth[_0x34ea('0x8')](),controller[_0x34ea('0x9')]);router[_0x34ea('0x7')](_0x34ea('0xa'),auth[_0x34ea('0x8')](),controller['describe']);router[_0x34ea('0x7')](_0x34ea('0xb'),auth[_0x34ea('0x8')](),controller['show']);router[_0x34ea('0xc')]('/',auth[_0x34ea('0x8')](),controller['create']);router['put'](_0x34ea('0xb'),auth[_0x34ea('0x8')](),controller[_0x34ea('0xd')]);router['delete'](_0x34ea('0xb'),auth[_0x34ea('0x8')](),controller[_0x34ea('0xe')]);module[_0x34ea('0xf')]=router;
\ No newline at end of file
index 10bee90..a7d0b83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x7a54,0x106));var _0x47a5=function(_0x192b15,_0x6723ca){_0x192b15=_0x192b15-0x0;var _0x54963c=_0x7a54[_0x192b15];return _0x54963c;};'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(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x7a54,0x106));var _0x47a5=function(_0x3848c1,_0x2d1acf){_0x3848c1=_0x3848c1-0x0;var _0xb83383=_0x7a54[_0x3848c1];return _0xb83383;};'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 587540d..a44beac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e02=['destroy','end','error','stack','name','map','JscriptyAnswerReport','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','show','options','find','create','update','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','set','apply','then'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x7e02,0x71));var _0x27e0=function(_0x44bb01,_0x5757f4){_0x44bb01=_0x44bb01-0x0;var _0x30a1ad=_0x7e02[_0x44bb01];return _0x30a1ad;};'use strict';var emlformat=require(_0x27e0('0x0'));var rimraf=require(_0x27e0('0x1'));var zipdir=require(_0x27e0('0x2'));var jsonpatch=require(_0x27e0('0x3'));var rp=require(_0x27e0('0x4'));var moment=require(_0x27e0('0x5'));var BPromise=require(_0x27e0('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x27e0('0x7'));var sox=require('sox');var csv=require(_0x27e0('0x8'));var ejs=require(_0x27e0('0x9'));var fs=require('fs');var fs_extra=require(_0x27e0('0xa'));var _=require(_0x27e0('0xb'));var squel=require(_0x27e0('0xc'));var crypto=require(_0x27e0('0xd'));var jsforce=require(_0x27e0('0xe'));var deskjs=require(_0x27e0('0xf'));var toCsv=require('to-csv');var querystring=require(_0x27e0('0x10'));var Papa=require('papaparse');var Redis=require(_0x27e0('0x11'));var authService=require(_0x27e0('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x27e0('0x13'));var hardwareService=require(_0x27e0('0x14'));var logger=require(_0x27e0('0x15'))(_0x27e0('0x16'));var utils=require(_0x27e0('0x17'));var config=require(_0x27e0('0x18'));var licenseUtil=require(_0x27e0('0x19'));var db=require(_0x27e0('0x1a'))['db'];function respondWithStatusCode(_0x31ef33,_0x492c65){_0x492c65=_0x492c65||0xcc;return function(_0x156bea){if(_0x156bea){return _0x31ef33[_0x27e0('0x1b')](_0x492c65);}return _0x31ef33[_0x27e0('0x1c')](_0x492c65)['end']();};}function respondWithResult(_0x39fb61,_0x3a67ab){_0x3a67ab=_0x3a67ab||0xc8;return function(_0x473128){if(_0x473128){return _0x39fb61['status'](_0x3a67ab)[_0x27e0('0x1d')](_0x473128);}};}function respondWithFilteredResult(_0x220128,_0x1f7532){return function(_0xf326e2){if(_0xf326e2){var _0x5b1b6e=typeof _0x1f7532['offset']===_0x27e0('0x1e')&&typeof _0x1f7532[_0x27e0('0x1f')]===_0x27e0('0x1e');var _0x2111e=_0xf326e2['count'];var _0x32597b=_0x5b1b6e?0x0:_0x1f7532[_0x27e0('0x20')];var _0x12a91f=_0x5b1b6e?_0xf326e2[_0x27e0('0x21')]:_0x1f7532[_0x27e0('0x20')]+_0x1f7532[_0x27e0('0x1f')];var _0x4d9edc;if(_0x12a91f>=_0x2111e){_0x12a91f=_0x2111e;_0x4d9edc=0xc8;}else{_0x4d9edc=0xce;}_0x220128[_0x27e0('0x1c')](_0x4d9edc);return _0x220128[_0x27e0('0x22')]('Content-Range',_0x32597b+'-'+_0x12a91f+'/'+_0x2111e)[_0x27e0('0x1d')](_0xf326e2);}return null;};}function patchUpdates(_0x23df66){return function(_0x32c2ff){try{jsonpatch[_0x27e0('0x23')](_0x32c2ff,_0x23df66,!![]);}catch(_0x408d95){return BPromise['reject'](_0x408d95);}return _0x32c2ff['save']();};}function saveUpdates(_0x57897e,_0x1ef3aa){return function(_0x11f4ca){if(_0x11f4ca){return _0x11f4ca['update'](_0x57897e)[_0x27e0('0x24')](function(_0xee6318){return _0xee6318;});}return null;};}function removeEntity(_0x32503e,_0x6f83ee){return function(_0xd857c2){if(_0xd857c2){return _0xd857c2[_0x27e0('0x25')]()[_0x27e0('0x24')](function(){_0x32503e[_0x27e0('0x1c')](0xcc)[_0x27e0('0x26')]();});}};}function handleEntityNotFound(_0x3068c4,_0x1e5060){return function(_0x27dc43){if(!_0x27dc43){_0x3068c4[_0x27e0('0x1b')](0x194);}return _0x27dc43;};}function handleError(_0x3d4691,_0xab503d){_0xab503d=_0xab503d||0x1f4;return function(_0x581ec9){logger[_0x27e0('0x27')](_0x581ec9[_0x27e0('0x28')]);if(_0x581ec9[_0x27e0('0x29')]){delete _0x581ec9[_0x27e0('0x29')];}_0x3d4691[_0x27e0('0x1c')](_0xab503d)['send'](_0x581ec9);};}exports['index']=function(_0x29114d,_0x3e2c4b){var _0x141c40={},_0x304fe6={},_0x57bcc1={'count':0x0,'rows':[]};var _0x4f5ea2=_[_0x27e0('0x2a')](db[_0x27e0('0x2b')]['rawAttributes'],function(_0x55d752){return{'name':_0x55d752['fieldName'],'type':_0x55d752[_0x27e0('0x2c')][_0x27e0('0x2d')]};});_0x304fe6[_0x27e0('0x2e')]=_[_0x27e0('0x2a')](_0x4f5ea2,'name');_0x304fe6[_0x27e0('0x2f')]=_[_0x27e0('0x30')](_0x29114d[_0x27e0('0x2f')]);_0x304fe6[_0x27e0('0x31')]=_[_0x27e0('0x32')](_0x304fe6[_0x27e0('0x2e')],_0x304fe6[_0x27e0('0x2f')]);_0x141c40[_0x27e0('0x33')]=_[_0x27e0('0x32')](_0x304fe6[_0x27e0('0x2e')],qs['fields'](_0x29114d[_0x27e0('0x2f')][_0x27e0('0x34')]));_0x141c40['attributes']=_0x141c40['attributes'][_0x27e0('0x35')]?_0x141c40[_0x27e0('0x33')]:_0x304fe6[_0x27e0('0x2e')];if(!_0x29114d['query'][_0x27e0('0x36')](_0x27e0('0x37'))){_0x141c40['limit']=qs[_0x27e0('0x1f')](_0x29114d[_0x27e0('0x2f')]['limit']);_0x141c40[_0x27e0('0x20')]=qs[_0x27e0('0x20')](_0x29114d['query'][_0x27e0('0x20')]);}_0x141c40[_0x27e0('0x38')]=qs['sort'](_0x29114d['query'][_0x27e0('0x39')]);_0x141c40[_0x27e0('0x3a')]=qs[_0x27e0('0x31')](_[_0x27e0('0x3b')](_0x29114d['query'],_0x304fe6[_0x27e0('0x31')]),_0x4f5ea2);if(_0x29114d['query'][_0x27e0('0x3c')]){_0x141c40[_0x27e0('0x3a')]=_[_0x27e0('0x3d')](_0x141c40['where'],{'$or':_[_0x27e0('0x2a')](_0x4f5ea2,function(_0x213540){if(_0x213540['type']!=='VIRTUAL'){var _0x2763ec={};_0x2763ec[_0x213540[_0x27e0('0x29')]]={'$like':'%'+_0x29114d[_0x27e0('0x2f')][_0x27e0('0x3c')]+'%'};return _0x2763ec;}})});}_0x141c40=_['merge']({},_0x141c40,_0x29114d['options']);var _0x5f5b65={'where':_0x141c40[_0x27e0('0x3a')]};return db[_0x27e0('0x2b')]['count'](_0x5f5b65)['then'](function(_0x4a6856){_0x57bcc1[_0x27e0('0x21')]=_0x4a6856;if(_0x29114d[_0x27e0('0x2f')][_0x27e0('0x3e')]){_0x141c40[_0x27e0('0x3f')]=[{'all':!![]}];}return db[_0x27e0('0x2b')][_0x27e0('0x40')](_0x141c40);})[_0x27e0('0x24')](function(_0x3f81ba){_0x57bcc1[_0x27e0('0x41')]=_0x3f81ba;return _0x57bcc1;})[_0x27e0('0x24')](respondWithFilteredResult(_0x3e2c4b,_0x141c40))[_0x27e0('0x42')](handleError(_0x3e2c4b,null));};exports[_0x27e0('0x43')]=function(_0x4227c0,_0x6c37db){var _0x2f6005={'raw':!![],'where':{'id':_0x4227c0['params']['id']}},_0x535260={};_0x535260[_0x27e0('0x2e')]=_[_0x27e0('0x30')](db['JscriptyAnswerReport']['rawAttributes']);_0x535260['query']=_[_0x27e0('0x30')](_0x4227c0[_0x27e0('0x2f')]);_0x535260['filters']=_['intersection'](_0x535260[_0x27e0('0x2e')],_0x535260[_0x27e0('0x2f')]);_0x2f6005[_0x27e0('0x33')]=_[_0x27e0('0x32')](_0x535260[_0x27e0('0x2e')],qs[_0x27e0('0x34')](_0x4227c0[_0x27e0('0x2f')][_0x27e0('0x34')]));_0x2f6005[_0x27e0('0x33')]=_0x2f6005[_0x27e0('0x33')][_0x27e0('0x35')]?_0x2f6005[_0x27e0('0x33')]:_0x535260[_0x27e0('0x2e')];if(_0x4227c0[_0x27e0('0x2f')][_0x27e0('0x3e')]){_0x2f6005[_0x27e0('0x3f')]=[{'all':!![]}];}_0x2f6005=_[_0x27e0('0x3d')]({},_0x2f6005,_0x4227c0[_0x27e0('0x44')]);return db[_0x27e0('0x2b')][_0x27e0('0x45')](_0x2f6005)[_0x27e0('0x24')](handleEntityNotFound(_0x6c37db,null))[_0x27e0('0x24')](respondWithResult(_0x6c37db,null))[_0x27e0('0x42')](handleError(_0x6c37db,null));};exports[_0x27e0('0x46')]=function(_0x24058f,_0x22cd05){return db[_0x27e0('0x2b')][_0x27e0('0x46')](_0x24058f['body'],{})['then'](respondWithResult(_0x22cd05,0xc9))[_0x27e0('0x42')](handleError(_0x22cd05,null));};exports[_0x27e0('0x47')]=function(_0x5322c9,_0x58aef9){if(_0x5322c9[_0x27e0('0x48')]['id']){delete _0x5322c9[_0x27e0('0x48')]['id'];}return db[_0x27e0('0x2b')][_0x27e0('0x45')]({'where':{'id':_0x5322c9[_0x27e0('0x49')]['id']}})[_0x27e0('0x24')](handleEntityNotFound(_0x58aef9,null))[_0x27e0('0x24')](saveUpdates(_0x5322c9['body'],null))['then'](respondWithResult(_0x58aef9,null))[_0x27e0('0x42')](handleError(_0x58aef9,null));};exports[_0x27e0('0x25')]=function(_0xca08c,_0x29241d){return db[_0x27e0('0x2b')][_0x27e0('0x45')]({'where':{'id':_0xca08c['params']['id']}})['then'](handleEntityNotFound(_0x29241d,null))[_0x27e0('0x24')](removeEntity(_0x29241d,null))[_0x27e0('0x42')](handleError(_0x29241d,null));};exports[_0x27e0('0x4a')]=function(_0x315f2f,_0x4d7f5a){return db['JscriptyAnswerReport'][_0x27e0('0x4a')]()[_0x27e0('0x24')](respondWithResult(_0x4d7f5a,null))['catch'](handleError(_0x4d7f5a,null));};
\ No newline at end of file
+var _0xb934=['mustache','util','to-csv','ejs','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','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','filters','filter','where','merge','options','includeAll','include','JscriptyAnswerReport','rows','catch','show','rawAttributes','length','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird'];(function(_0x2ad36d,_0x3991ea){var _0x1c9aec=function(_0x33490f){while(--_0x33490f){_0x2ad36d['push'](_0x2ad36d['shift']());}};_0x1c9aec(++_0x3991ea);}(_0xb934,0x92));var _0x4b93=function(_0x3c0b2e,_0x440489){_0x3c0b2e=_0x3c0b2e-0x0;var _0xf26e0=_0xb934[_0x3c0b2e];return _0xf26e0;};'use strict';var emlformat=require(_0x4b93('0x0'));var rimraf=require(_0x4b93('0x1'));var zipdir=require(_0x4b93('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4b93('0x3'));var moment=require(_0x4b93('0x4'));var BPromise=require(_0x4b93('0x5'));var Mustache=require(_0x4b93('0x6'));var util=require(_0x4b93('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x4b93('0x8'));var ejs=require(_0x4b93('0x9'));var fs=require('fs');var fs_extra=require(_0x4b93('0xa'));var _=require(_0x4b93('0xb'));var squel=require('squel');var crypto=require(_0x4b93('0xc'));var jsforce=require(_0x4b93('0xd'));var deskjs=require(_0x4b93('0xe'));var toCsv=require(_0x4b93('0x8'));var querystring=require(_0x4b93('0xf'));var Papa=require(_0x4b93('0x10'));var Redis=require(_0x4b93('0x11'));var authService=require(_0x4b93('0x12'));var qs=require(_0x4b93('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4b93('0x14'));var logger=require(_0x4b93('0x15'))(_0x4b93('0x16'));var utils=require(_0x4b93('0x17'));var config=require(_0x4b93('0x18'));var licenseUtil=require(_0x4b93('0x19'));var db=require(_0x4b93('0x1a'))['db'];function respondWithStatusCode(_0x68be2e,_0xae64c){_0xae64c=_0xae64c||0xcc;return function(_0x28bebf){if(_0x28bebf){return _0x68be2e[_0x4b93('0x1b')](_0xae64c);}return _0x68be2e[_0x4b93('0x1c')](_0xae64c)[_0x4b93('0x1d')]();};}function respondWithResult(_0x3f4db7,_0x11dd47){_0x11dd47=_0x11dd47||0xc8;return function(_0x4f7c7a){if(_0x4f7c7a){return _0x3f4db7[_0x4b93('0x1c')](_0x11dd47)[_0x4b93('0x1e')](_0x4f7c7a);}};}function respondWithFilteredResult(_0xbc5eb1,_0x53eb43){return function(_0x19a9d5){if(_0x19a9d5){var _0x387a16=typeof _0x53eb43[_0x4b93('0x1f')]===_0x4b93('0x20')&&typeof _0x53eb43[_0x4b93('0x21')]==='undefined';var _0x67669d=_0x19a9d5[_0x4b93('0x22')];var _0x554c16=_0x387a16?0x0:_0x53eb43['offset'];var _0x11a1f3=_0x387a16?_0x19a9d5[_0x4b93('0x22')]:_0x53eb43[_0x4b93('0x1f')]+_0x53eb43[_0x4b93('0x21')];var _0x2899cb;if(_0x11a1f3>=_0x67669d){_0x11a1f3=_0x67669d;_0x2899cb=0xc8;}else{_0x2899cb=0xce;}_0xbc5eb1[_0x4b93('0x1c')](_0x2899cb);return _0xbc5eb1[_0x4b93('0x23')](_0x4b93('0x24'),_0x554c16+'-'+_0x11a1f3+'/'+_0x67669d)[_0x4b93('0x1e')](_0x19a9d5);}return null;};}function patchUpdates(_0x36bf8a){return function(_0x2c750e){try{jsonpatch['apply'](_0x2c750e,_0x36bf8a,!![]);}catch(_0x5798d3){return BPromise['reject'](_0x5798d3);}return _0x2c750e['save']();};}function saveUpdates(_0x5b8cd6,_0x15f204){return function(_0x4b7858){if(_0x4b7858){return _0x4b7858[_0x4b93('0x25')](_0x5b8cd6)[_0x4b93('0x26')](function(_0x40e9a3){return _0x40e9a3;});}return null;};}function removeEntity(_0x3c443b,_0x36c610){return function(_0x135c6a){if(_0x135c6a){return _0x135c6a[_0x4b93('0x27')]()[_0x4b93('0x26')](function(){_0x3c443b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a74eb,_0x4fff6a){return function(_0x118afb){if(!_0x118afb){_0x1a74eb['sendStatus'](0x194);}return _0x118afb;};}function handleError(_0x352f08,_0x5a0a76){_0x5a0a76=_0x5a0a76||0x1f4;return function(_0x5ec0af){logger[_0x4b93('0x28')](_0x5ec0af[_0x4b93('0x29')]);if(_0x5ec0af[_0x4b93('0x2a')]){delete _0x5ec0af[_0x4b93('0x2a')];}_0x352f08[_0x4b93('0x1c')](_0x5a0a76)[_0x4b93('0x2b')](_0x5ec0af);};}exports[_0x4b93('0x2c')]=function(_0x43b5b7,_0x4c457b){var _0x2bff36={},_0x2a86e0={},_0x3411d5={'count':0x0,'rows':[]};var _0x567cf0=_[_0x4b93('0x2d')](db['JscriptyAnswerReport']['rawAttributes'],function(_0x339c18){return{'name':_0x339c18[_0x4b93('0x2e')],'type':_0x339c18[_0x4b93('0x2f')][_0x4b93('0x30')]};});_0x2a86e0[_0x4b93('0x31')]=_[_0x4b93('0x2d')](_0x567cf0,_0x4b93('0x2a'));_0x2a86e0[_0x4b93('0x32')]=_[_0x4b93('0x33')](_0x43b5b7[_0x4b93('0x32')]);_0x2a86e0['filters']=_[_0x4b93('0x34')](_0x2a86e0['model'],_0x2a86e0['query']);_0x2bff36[_0x4b93('0x35')]=_[_0x4b93('0x34')](_0x2a86e0[_0x4b93('0x31')],qs[_0x4b93('0x36')](_0x43b5b7[_0x4b93('0x32')][_0x4b93('0x36')]));_0x2bff36[_0x4b93('0x35')]=_0x2bff36[_0x4b93('0x35')]['length']?_0x2bff36[_0x4b93('0x35')]:_0x2a86e0[_0x4b93('0x31')];if(!_0x43b5b7['query']['hasOwnProperty'](_0x4b93('0x37'))){_0x2bff36[_0x4b93('0x21')]=qs[_0x4b93('0x21')](_0x43b5b7[_0x4b93('0x32')][_0x4b93('0x21')]);_0x2bff36['offset']=qs[_0x4b93('0x1f')](_0x43b5b7[_0x4b93('0x32')][_0x4b93('0x1f')]);}_0x2bff36[_0x4b93('0x38')]=qs[_0x4b93('0x39')](_0x43b5b7[_0x4b93('0x32')]['sort']);_0x2bff36['where']=qs['filters'](_['pick'](_0x43b5b7[_0x4b93('0x32')],_0x2a86e0[_0x4b93('0x3a')]),_0x567cf0);if(_0x43b5b7['query'][_0x4b93('0x3b')]){_0x2bff36[_0x4b93('0x3c')]=_[_0x4b93('0x3d')](_0x2bff36[_0x4b93('0x3c')],{'$or':_['map'](_0x567cf0,function(_0x444623){if(_0x444623[_0x4b93('0x2f')]!=='VIRTUAL'){var _0x393cf9={};_0x393cf9[_0x444623['name']]={'$like':'%'+_0x43b5b7[_0x4b93('0x32')]['filter']+'%'};return _0x393cf9;}})});}_0x2bff36=_['merge']({},_0x2bff36,_0x43b5b7[_0x4b93('0x3e')]);var _0x36d50a={'where':_0x2bff36['where']};return db['JscriptyAnswerReport'][_0x4b93('0x22')](_0x36d50a)[_0x4b93('0x26')](function(_0x3ecf96){_0x3411d5[_0x4b93('0x22')]=_0x3ecf96;if(_0x43b5b7[_0x4b93('0x32')][_0x4b93('0x3f')]){_0x2bff36[_0x4b93('0x40')]=[{'all':!![]}];}return db[_0x4b93('0x41')]['findAll'](_0x2bff36);})[_0x4b93('0x26')](function(_0x4ff1ea){_0x3411d5[_0x4b93('0x42')]=_0x4ff1ea;return _0x3411d5;})['then'](respondWithFilteredResult(_0x4c457b,_0x2bff36))[_0x4b93('0x43')](handleError(_0x4c457b,null));};exports[_0x4b93('0x44')]=function(_0x1b9fad,_0x5a8c00){var _0x343f5a={'raw':!![],'where':{'id':_0x1b9fad['params']['id']}},_0xe1e51b={};_0xe1e51b['model']=_['keys'](db['JscriptyAnswerReport'][_0x4b93('0x45')]);_0xe1e51b[_0x4b93('0x32')]=_[_0x4b93('0x33')](_0x1b9fad[_0x4b93('0x32')]);_0xe1e51b['filters']=_['intersection'](_0xe1e51b[_0x4b93('0x31')],_0xe1e51b[_0x4b93('0x32')]);_0x343f5a['attributes']=_[_0x4b93('0x34')](_0xe1e51b[_0x4b93('0x31')],qs['fields'](_0x1b9fad['query'][_0x4b93('0x36')]));_0x343f5a[_0x4b93('0x35')]=_0x343f5a[_0x4b93('0x35')][_0x4b93('0x46')]?_0x343f5a[_0x4b93('0x35')]:_0xe1e51b[_0x4b93('0x31')];if(_0x1b9fad[_0x4b93('0x32')][_0x4b93('0x3f')]){_0x343f5a['include']=[{'all':!![]}];}_0x343f5a=_[_0x4b93('0x3d')]({},_0x343f5a,_0x1b9fad[_0x4b93('0x3e')]);return db[_0x4b93('0x41')][_0x4b93('0x47')](_0x343f5a)[_0x4b93('0x26')](handleEntityNotFound(_0x5a8c00,null))[_0x4b93('0x26')](respondWithResult(_0x5a8c00,null))[_0x4b93('0x43')](handleError(_0x5a8c00,null));};exports['create']=function(_0x58679c,_0x30a0f9){return db[_0x4b93('0x41')][_0x4b93('0x48')](_0x58679c['body'],{})[_0x4b93('0x26')](respondWithResult(_0x30a0f9,0xc9))['catch'](handleError(_0x30a0f9,null));};exports['update']=function(_0x43b777,_0x5aece5){if(_0x43b777[_0x4b93('0x49')]['id']){delete _0x43b777[_0x4b93('0x49')]['id'];}return db[_0x4b93('0x41')][_0x4b93('0x47')]({'where':{'id':_0x43b777[_0x4b93('0x4a')]['id']}})[_0x4b93('0x26')](handleEntityNotFound(_0x5aece5,null))[_0x4b93('0x26')](saveUpdates(_0x43b777[_0x4b93('0x49')],null))['then'](respondWithResult(_0x5aece5,null))[_0x4b93('0x43')](handleError(_0x5aece5,null));};exports[_0x4b93('0x27')]=function(_0x11eacc,_0x46c070){return db['JscriptyAnswerReport'][_0x4b93('0x47')]({'where':{'id':_0x11eacc[_0x4b93('0x4a')]['id']}})[_0x4b93('0x26')](handleEntityNotFound(_0x46c070,null))[_0x4b93('0x26')](removeEntity(_0x46c070,null))['catch'](handleError(_0x46c070,null));};exports['describe']=function(_0x31069a,_0x4b7806){return db[_0x4b93('0x41')][_0x4b93('0x4b')]()[_0x4b93('0x26')](respondWithResult(_0x4b7806,null))[_0x4b93('0x43')](handleError(_0x4b7806,null));};
\ No newline at end of file
index 84748b6..d690aca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e89=['rimraf','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x8e89,0x10e));var _0x98e8=function(_0x58ee19,_0xdf0765){_0x58ee19=_0x58ee19-0x0;var _0x49af25=_0x8e89[_0x58ee19];return _0x49af25;};'use strict';var _=require(_0x98e8('0x0'));var util=require('util');var logger=require(_0x98e8('0x1'))(_0x98e8('0x2'));var moment=require(_0x98e8('0x3'));var BPromise=require(_0x98e8('0x4'));var rp=require(_0x98e8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x98e8('0x6'));var config=require('../../config/environment');var attributes=require(_0x98e8('0x7'));module[_0x98e8('0x8')]=function(_0xe62424,_0x2aa8c9){return _0xe62424[_0x98e8('0x9')](_0x98e8('0xa'),attributes,{'tableName':_0x98e8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x85ba=['rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','util','api','moment','request-promise','path'];(function(_0x1c3422,_0x1c5028){var _0xb8d51e=function(_0x1789df){while(--_0x1789df){_0x1c3422['push'](_0x1c3422['shift']());}};_0xb8d51e(++_0x1c5028);}(_0x85ba,0x199));var _0xa85b=function(_0x2d9c7d,_0xada73){_0x2d9c7d=_0x2d9c7d-0x0;var _0x23078f=_0x85ba[_0x2d9c7d];return _0x23078f;};'use strict';var _=require('lodash');var util=require(_0xa85b('0x0'));var logger=require('../../config/logger')(_0xa85b('0x1'));var moment=require(_0xa85b('0x2'));var BPromise=require('bluebird');var rp=require(_0xa85b('0x3'));var fs=require('fs');var path=require(_0xa85b('0x4'));var rimraf=require(_0xa85b('0x5'));var config=require(_0xa85b('0x6'));var attributes=require(_0xa85b('0x7'));module[_0xa85b('0x8')]=function(_0x22d515,_0x121b6d){return _0x22d515['define']('JscriptyAnswerReport',attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78f7ded..91e1263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b20=['request','then','info','request\x20sent','debug','stringify','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x68ee8b,_0x3cc6c5){var _0x5148f7=function(_0x5dcbd5){while(--_0x5dcbd5){_0x68ee8b['push'](_0x68ee8b['shift']());}};_0x5148f7(++_0x3cc6c5);}(_0x3b20,0x17b));var _0x03b2=function(_0x4cd68e,_0x526991){_0x4cd68e=_0x4cd68e-0x0;var _0x300170=_0x3b20[_0x4cd68e];return _0x300170;};'use strict';var _=require(_0x03b2('0x0'));var util=require(_0x03b2('0x1'));var moment=require('moment');var BPromise=require(_0x03b2('0x2'));var rs=require(_0x03b2('0x3'));var fs=require('fs');var Redis=require(_0x03b2('0x4'));var db=require(_0x03b2('0x5'))['db'];var utils=require(_0x03b2('0x6'));var logger=require(_0x03b2('0x7'))('rpc');var config=require(_0x03b2('0x8'));var jayson=require(_0x03b2('0x9'));var client=jayson[_0x03b2('0xa')][_0x03b2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2b6c7f,_0x3958e9,_0x575beb){return new BPromise(function(_0x538081,_0x4dadfc){return client[_0x03b2('0xc')](_0x2b6c7f,_0x575beb)[_0x03b2('0xd')](function(_0x4ff4f2){logger[_0x03b2('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x3958e9,_0x03b2('0xf'));logger[_0x03b2('0x10')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x3958e9,'request\x20sent',JSON[_0x03b2('0x11')](_0x4ff4f2));if(_0x4ff4f2[_0x03b2('0x12')]){if(_0x4ff4f2[_0x03b2('0x12')][_0x03b2('0x13')]===0x1f4){logger['error'](_0x03b2('0x14'),_0x3958e9,_0x4ff4f2[_0x03b2('0x12')][_0x03b2('0x15')]);return _0x4dadfc(_0x4ff4f2[_0x03b2('0x12')][_0x03b2('0x15')]);}logger['error']('JscriptyAnswerReport,\x20%s,\x20%s',_0x3958e9,_0x4ff4f2['error'][_0x03b2('0x15')]);return _0x538081(_0x4ff4f2['error'][_0x03b2('0x15')]);}else{logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x3958e9,_0x03b2('0xf'));_0x538081(_0x4ff4f2['result'][_0x03b2('0x15')]);}})[_0x03b2('0x16')](function(_0x434990){logger[_0x03b2('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x3958e9,_0x434990);_0x4dadfc(_0x434990);});});}
\ No newline at end of file
+var _0x099d=['http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4d329f,_0x27fb44){var _0x17fd11=function(_0xcfc978){while(--_0xcfc978){_0x4d329f['push'](_0x4d329f['shift']());}};_0x17fd11(++_0x27fb44);}(_0x099d,0x157));var _0xd099=function(_0x2c6c39,_0x2a16df){_0x2c6c39=_0x2c6c39-0x0;var _0x30b48d=_0x099d[_0x2c6c39];return _0x30b48d;};'use strict';var _=require(_0xd099('0x0'));var util=require(_0xd099('0x1'));var moment=require(_0xd099('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd099('0x3'))['db'];var utils=require(_0xd099('0x4'));var logger=require(_0xd099('0x5'))(_0xd099('0x6'));var config=require(_0xd099('0x7'));var jayson=require(_0xd099('0x8'));var client=jayson['client'][_0xd099('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x48e0cd,_0x2f4104,_0x2c4ebc){return new BPromise(function(_0x4b497c,_0x422e98){return client[_0xd099('0xa')](_0x48e0cd,_0x2c4ebc)[_0xd099('0xb')](function(_0x4cdc94){logger[_0xd099('0xc')](_0xd099('0xd'),_0x2f4104,_0xd099('0xe'));logger[_0xd099('0xf')](_0xd099('0x10'),_0x2f4104,_0xd099('0xe'),JSON['stringify'](_0x4cdc94));if(_0x4cdc94[_0xd099('0x11')]){if(_0x4cdc94[_0xd099('0x11')][_0xd099('0x12')]===0x1f4){logger[_0xd099('0x11')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x2f4104,_0x4cdc94[_0xd099('0x11')][_0xd099('0x13')]);return _0x422e98(_0x4cdc94['error']['message']);}logger[_0xd099('0x11')](_0xd099('0xd'),_0x2f4104,_0x4cdc94[_0xd099('0x11')][_0xd099('0x13')]);return _0x4b497c(_0x4cdc94[_0xd099('0x11')][_0xd099('0x13')]);}else{logger[_0xd099('0xc')](_0xd099('0xd'),_0x2f4104,'request\x20sent');_0x4b497c(_0x4cdc94[_0xd099('0x14')][_0xd099('0x13')]);}})[_0xd099('0x15')](function(_0x4e1574){logger['error']('JscriptyAnswerReport,\x20%s,\x20%s',_0x2f4104,_0x4e1574);_0x422e98(_0x4e1574);});});}
\ No newline at end of file
index 109a8ab..bb33674 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x090b=['index','/:id/sessions','getAnswers','/:id/summary','getSummary','create','post','/:id/clone','clone','put','/:id','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./jscriptyProject.controller','get','isAuthenticated'];(function(_0x1378af,_0x548358){var _0x1d6dc7=function(_0x564d2a){while(--_0x564d2a){_0x1378af['push'](_0x1378af['shift']());}};_0x1d6dc7(++_0x548358);}(_0x090b,0x115));var _0xb090=function(_0x49a419,_0x4fb0cc){_0x49a419=_0x49a419-0x0;var _0x27a808=_0x090b[_0x49a419];return _0x27a808;};'use strict';var multer=require(_0xb090('0x0'));var util=require(_0xb090('0x1'));var path=require(_0xb090('0x2'));var timeout=require(_0xb090('0x3'));var express=require(_0xb090('0x4'));var router=express[_0xb090('0x5')]();var fs_extra=require(_0xb090('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xb090('0x7'));var config=require('../../config/environment');var controller=require(_0xb090('0x8'));router[_0xb090('0x9')]('/',auth[_0xb090('0xa')](),controller[_0xb090('0xb')]);router[_0xb090('0x9')]('/:id',auth[_0xb090('0xa')](),controller['show']);router[_0xb090('0x9')](_0xb090('0xc'),auth['isAuthenticated'](),controller['getSessions']);router[_0xb090('0x9')]('/:id/answers',auth[_0xb090('0xa')](),controller[_0xb090('0xd')]);router['get'](_0xb090('0xe'),auth[_0xb090('0xa')](),timeout('30s'),controller[_0xb090('0xf')]);router['post']('/',auth[_0xb090('0xa')](),controller[_0xb090('0x10')]);router[_0xb090('0x11')](_0xb090('0x12'),auth[_0xb090('0xa')](),controller[_0xb090('0x13')]);router[_0xb090('0x14')](_0xb090('0x15'),auth[_0xb090('0xa')](),controller[_0xb090('0x16')]);router['delete'](_0xb090('0x15'),auth[_0xb090('0xa')](),controller[_0xb090('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x87b6=['/:id','/:id/sessions','/:id/summary','30s','getSummary','post','/:id/clone','clone','put','update','delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index'];(function(_0x3adf53,_0x22f84d){var _0x3cd7c8=function(_0x5d1833){while(--_0x5d1833){_0x3adf53['push'](_0x3adf53['shift']());}};_0x3cd7c8(++_0x22f84d);}(_0x87b6,0x9f));var _0x687b=function(_0x7148b6,_0xa61534){_0x7148b6=_0x7148b6-0x0;var _0x111019=_0x87b6[_0x7148b6];return _0x111019;};'use strict';var multer=require(_0x687b('0x0'));var util=require(_0x687b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x687b('0x2'));var router=express[_0x687b('0x3')]();var fs_extra=require(_0x687b('0x4'));var auth=require(_0x687b('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./jscriptyProject.controller');router[_0x687b('0x6')]('/',auth[_0x687b('0x7')](),controller[_0x687b('0x8')]);router[_0x687b('0x6')](_0x687b('0x9'),auth[_0x687b('0x7')](),controller['show']);router[_0x687b('0x6')](_0x687b('0xa'),auth[_0x687b('0x7')](),controller['getSessions']);router['get']('/:id/answers',auth['isAuthenticated'](),controller['getAnswers']);router[_0x687b('0x6')](_0x687b('0xb'),auth[_0x687b('0x7')](),timeout(_0x687b('0xc')),controller[_0x687b('0xd')]);router[_0x687b('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x687b('0xe')](_0x687b('0xf'),auth[_0x687b('0x7')](),controller[_0x687b('0x10')]);router[_0x687b('0x11')](_0x687b('0x9'),auth[_0x687b('0x7')](),controller[_0x687b('0x12')]);router[_0x687b('0x13')]('/:id',auth[_0x687b('0x7')](),controller[_0x687b('0x14')]);module['exports']=router;
\ No newline at end of file
index c7294d4..7fe436f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e27=['setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','description','BOOLEAN','sequelize','lodash','util','exports','STRING','TEXT','long','formData','stringify','isString'];(function(_0x1e5725,_0x3f4e13){var _0x4b5cf8=function(_0x2e9a53){while(--_0x2e9a53){_0x1e5725['push'](_0x1e5725['shift']());}};_0x4b5cf8(++_0x3f4e13);}(_0x6e27,0x6d));var _0x76e2=function(_0x174ecd,_0x30cde6){_0x174ecd=_0x174ecd-0x0;var _0x316657=_0x6e27[_0x174ecd];return _0x316657;};'use strict';var Sequelize=require(_0x76e2('0x0'));var _=require(_0x76e2('0x1'));var util=require(_0x76e2('0x2'));module[_0x76e2('0x3')]={'name':{'type':Sequelize[_0x76e2('0x4')],'unique':'name'},'description':{'type':Sequelize[_0x76e2('0x4')]},'formData':{'type':Sequelize[_0x76e2('0x5')](_0x76e2('0x6')),'set':function(_0xce7c24){if(_['isObjectLike'](_0xce7c24)){this['setDataValue'](_0x76e2('0x7'),JSON[_0x76e2('0x8')](_0xce7c24));}else if(_[_0x76e2('0x9')](_0xce7c24)){this[_0x76e2('0xa')]('formData',_0xce7c24);}else{this[_0x76e2('0xa')](_0x76e2('0x7'),util[_0x76e2('0xb')](_0x76e2('0xc'),this[_0x76e2('0xd')](_0x76e2('0xe'))||'',this['getDataValue'](_0x76e2('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x76e2('0x10')],'defaultValue':![]}};
\ No newline at end of file
+var _0x10c5=['lodash','util','exports','STRING','TEXT','long','isObjectLike','setDataValue','stringify','isString','formData','format','name','getDataValue','description','sequelize'];(function(_0x7150b,_0x21f408){var _0x1619ff=function(_0x28e9d8){while(--_0x28e9d8){_0x7150b['push'](_0x7150b['shift']());}};_0x1619ff(++_0x21f408);}(_0x10c5,0xdf));var _0x510c=function(_0x1523da,_0x8dd640){_0x1523da=_0x1523da-0x0;var _0x3a1d88=_0x10c5[_0x1523da];return _0x3a1d88;};'use strict';var Sequelize=require(_0x510c('0x0'));var _=require(_0x510c('0x1'));var util=require(_0x510c('0x2'));module[_0x510c('0x3')]={'name':{'type':Sequelize['STRING'],'unique':'name'},'description':{'type':Sequelize[_0x510c('0x4')]},'formData':{'type':Sequelize[_0x510c('0x5')](_0x510c('0x6')),'set':function(_0x4cd184){if(_[_0x510c('0x7')](_0x4cd184)){this[_0x510c('0x8')]('formData',JSON[_0x510c('0x9')](_0x4cd184));}else if(_[_0x510c('0xa')](_0x4cd184)){this[_0x510c('0x8')](_0x510c('0xb'),_0x4cd184);}else{this[_0x510c('0x8')](_0x510c('0xb'),util[_0x510c('0xc')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this['getDataValue'](_0x510c('0xd'))||'',this[_0x510c('0xe')](_0x510c('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index f7c510d..da4732d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dfc=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','then','destroy','Projects','UserProfileResource','stack','name','send','JscriptyProject','fieldName','type','key','keys','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','includeAll','findAll','catch','show','params','rawAttributes','options','create','user','role','get','UserProfileSection','find','userProfileId','autoAssociation','error','clone','include','body','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getSessions','order','filter','JscriptySessionReport','getAnswers','findOne','JscriptyAnswerReport','ProjectId','map','rows','toString','indexOf','replace','getSummary','startTime','starttime','parse','JscriptyQuestionReport','questionId','question','format','SessionId','answer','push','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','text/csv','download','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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/utils','../../config/environment'];(function(_0x4cd832,_0x4d3ada){var _0x863d68=function(_0x3890e0){while(--_0x3890e0){_0x4cd832['push'](_0x4cd832['shift']());}};_0x863d68(++_0x4d3ada);}(_0x4dfc,0xda));var _0xc4df=function(_0x67f95e,_0x3ca797){_0x67f95e=_0x67f95e-0x0;var _0x538f5a=_0x4dfc[_0x67f95e];return _0x538f5a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc4df('0x0'));var rp=require(_0xc4df('0x1'));var moment=require(_0xc4df('0x2'));var BPromise=require(_0xc4df('0x3'));var Mustache=require(_0xc4df('0x4'));var util=require(_0xc4df('0x5'));var path=require(_0xc4df('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc4df('0x7'));var _=require(_0xc4df('0x8'));var squel=require('squel');var crypto=require(_0xc4df('0x9'));var jsforce=require(_0xc4df('0xa'));var deskjs=require(_0xc4df('0xb'));var toCsv=require('to-csv');var querystring=require(_0xc4df('0xc'));var Papa=require(_0xc4df('0xd'));var Redis=require(_0xc4df('0xe'));var authService=require(_0xc4df('0xf'));var qs=require(_0xc4df('0x10'));var as=require(_0xc4df('0x11'));var hardwareService=require(_0xc4df('0x12'));var logger=require(_0xc4df('0x13'))('api');var utils=require(_0xc4df('0x14'));var config=require(_0xc4df('0x15'));var licenseUtil=require(_0xc4df('0x16'));var db=require(_0xc4df('0x17'))['db'];function respondWithStatusCode(_0x863600,_0x665258){_0x665258=_0x665258||0xcc;return function(_0x3599c1){if(_0x3599c1){return _0x863600[_0xc4df('0x18')](_0x665258);}return _0x863600[_0xc4df('0x19')](_0x665258)[_0xc4df('0x1a')]();};}function respondWithResult(_0x70fae7,_0x157ea0){_0x157ea0=_0x157ea0||0xc8;return function(_0x2d1005){if(_0x2d1005){return _0x70fae7[_0xc4df('0x19')](_0x157ea0)[_0xc4df('0x1b')](_0x2d1005);}};}function respondWithFilteredResult(_0x8ac080,_0x5eeb1e){return function(_0xd72cc7){if(_0xd72cc7){var _0xc62bfa=typeof _0x5eeb1e['offset']==='undefined'&&typeof _0x5eeb1e[_0xc4df('0x1c')]===_0xc4df('0x1d');var _0x18d63=_0xd72cc7[_0xc4df('0x1e')];var _0x5e3e48=_0xc62bfa?0x0:_0x5eeb1e[_0xc4df('0x1f')];var _0x37e394=_0xc62bfa?_0xd72cc7[_0xc4df('0x1e')]:_0x5eeb1e[_0xc4df('0x1f')]+_0x5eeb1e['limit'];var _0x3c655c;if(_0x37e394>=_0x18d63){_0x37e394=_0x18d63;_0x3c655c=0xc8;}else{_0x3c655c=0xce;}_0x8ac080[_0xc4df('0x19')](_0x3c655c);return _0x8ac080[_0xc4df('0x20')](_0xc4df('0x21'),_0x5e3e48+'-'+_0x37e394+'/'+_0x18d63)[_0xc4df('0x1b')](_0xd72cc7);}return null;};}function patchUpdates(_0x4699ef){return function(_0x175d94){try{jsonpatch[_0xc4df('0x22')](_0x175d94,_0x4699ef,!![]);}catch(_0x179764){return BPromise[_0xc4df('0x23')](_0x179764);}return _0x175d94[_0xc4df('0x24')]();};}function saveUpdates(_0x156b52,_0x56bfa7){return function(_0x4fa99a){if(_0x4fa99a){return _0x4fa99a['update'](_0x156b52)[_0xc4df('0x25')](function(_0x5839fb){return _0x5839fb;});}return null;};}function removeEntity(_0x4bd822,_0x58bf45){return function(_0x547c5b){if(_0x547c5b){return _0x547c5b[_0xc4df('0x26')]()[_0xc4df('0x25')](function(){var _0x553345=_0x547c5b['get']({'plain':!![]});var _0x3ee721=_0xc4df('0x27');return db[_0xc4df('0x28')][_0xc4df('0x26')]({'where':{'type':_0x3ee721,'resourceId':_0x553345['id']}})['then'](function(){return _0x547c5b;});})[_0xc4df('0x25')](function(){_0x4bd822[_0xc4df('0x19')](0xcc)[_0xc4df('0x1a')]();});}};}function handleEntityNotFound(_0x1efdcf,_0x4c9f87){return function(_0x21eef3){if(!_0x21eef3){_0x1efdcf[_0xc4df('0x18')](0x194);}return _0x21eef3;};}function handleError(_0x308749,_0x43e84f){_0x43e84f=_0x43e84f||0x1f4;return function(_0x2ce795){logger['error'](_0x2ce795[_0xc4df('0x29')]);if(_0x2ce795[_0xc4df('0x2a')]){delete _0x2ce795[_0xc4df('0x2a')];}_0x308749['status'](_0x43e84f)[_0xc4df('0x2b')](_0x2ce795);};}exports['index']=function(_0x2d7dc0,_0x5ecfec){var _0x1cfbfb={},_0x309181={},_0x3e76b1={'count':0x0,'rows':[]};var _0x1f6b30=_['map'](db[_0xc4df('0x2c')]['rawAttributes'],function(_0x22e231){return{'name':_0x22e231[_0xc4df('0x2d')],'type':_0x22e231[_0xc4df('0x2e')][_0xc4df('0x2f')]};});_0x309181['model']=_['map'](_0x1f6b30,'name');_0x309181['query']=_[_0xc4df('0x30')](_0x2d7dc0[_0xc4df('0x31')]);_0x309181[_0xc4df('0x32')]=_['intersection'](_0x309181['model'],_0x309181[_0xc4df('0x31')]);_0x1cfbfb[_0xc4df('0x33')]=_[_0xc4df('0x34')](_0x309181[_0xc4df('0x35')],qs[_0xc4df('0x36')](_0x2d7dc0['query'][_0xc4df('0x36')]));_0x1cfbfb[_0xc4df('0x33')]=_0x1cfbfb[_0xc4df('0x33')][_0xc4df('0x37')]?_0x1cfbfb[_0xc4df('0x33')]:_0x309181[_0xc4df('0x35')];if(!_0x2d7dc0[_0xc4df('0x31')][_0xc4df('0x38')](_0xc4df('0x39'))){_0x1cfbfb[_0xc4df('0x1c')]=qs['limit'](_0x2d7dc0['query'][_0xc4df('0x1c')]);_0x1cfbfb[_0xc4df('0x1f')]=qs['offset'](_0x2d7dc0[_0xc4df('0x31')][_0xc4df('0x1f')]);}_0x1cfbfb['order']=qs['sort'](_0x2d7dc0[_0xc4df('0x31')][_0xc4df('0x3a')]);_0x1cfbfb[_0xc4df('0x3b')]=qs[_0xc4df('0x32')](_[_0xc4df('0x3c')](_0x2d7dc0['query'],_0x309181[_0xc4df('0x32')]),_0x1f6b30);if(_0x2d7dc0['query']['filter']){_0x1cfbfb[_0xc4df('0x3b')]=_[_0xc4df('0x3d')](_0x1cfbfb[_0xc4df('0x3b')],{'$or':_['map'](_0x1f6b30,function(_0x56c8f1){if(_0x56c8f1[_0xc4df('0x2e')]!==_0xc4df('0x3e')){var _0x44b707={};_0x44b707[_0x56c8f1[_0xc4df('0x2a')]]={'$like':'%'+_0x2d7dc0[_0xc4df('0x31')]['filter']+'%'};return _0x44b707;}})});}_0x1cfbfb=_[_0xc4df('0x3d')]({},_0x1cfbfb,_0x2d7dc0['options']);var _0xdd1fde={'where':_0x1cfbfb[_0xc4df('0x3b')]};return db['JscriptyProject'][_0xc4df('0x1e')](_0xdd1fde)['then'](function(_0xee7849){_0x3e76b1[_0xc4df('0x1e')]=_0xee7849;if(_0x2d7dc0[_0xc4df('0x31')][_0xc4df('0x3f')]){_0x1cfbfb['include']=[{'all':!![]}];}return db['JscriptyProject'][_0xc4df('0x40')](_0x1cfbfb);})[_0xc4df('0x25')](function(_0x53345f){_0x3e76b1['rows']=_0x53345f;return _0x3e76b1;})[_0xc4df('0x25')](respondWithFilteredResult(_0x5ecfec,_0x1cfbfb))[_0xc4df('0x41')](handleError(_0x5ecfec,null));};exports[_0xc4df('0x42')]=function(_0x2f1d00,_0x536069){var _0x1118b4={'raw':![],'where':{'id':_0x2f1d00[_0xc4df('0x43')]['id']}},_0x52794c={};_0x52794c['model']=_['keys'](db['JscriptyProject'][_0xc4df('0x44')]);_0x52794c['query']=_[_0xc4df('0x30')](_0x2f1d00['query']);_0x52794c[_0xc4df('0x32')]=_[_0xc4df('0x34')](_0x52794c[_0xc4df('0x35')],_0x52794c['query']);_0x1118b4[_0xc4df('0x33')]=_[_0xc4df('0x34')](_0x52794c['model'],qs[_0xc4df('0x36')](_0x2f1d00[_0xc4df('0x31')]['fields']));_0x1118b4[_0xc4df('0x33')]=_0x1118b4['attributes']['length']?_0x1118b4[_0xc4df('0x33')]:_0x52794c[_0xc4df('0x35')];if(_0x2f1d00[_0xc4df('0x31')]['includeAll']){_0x1118b4['include']=[{'all':!![]}];}_0x1118b4=_['merge']({},_0x1118b4,_0x2f1d00[_0xc4df('0x45')]);return db[_0xc4df('0x2c')]['find'](_0x1118b4)['then'](handleEntityNotFound(_0x536069,null))[_0xc4df('0x25')](respondWithResult(_0x536069,null))[_0xc4df('0x41')](handleError(_0x536069,null));};exports[_0xc4df('0x46')]=function(_0x3bce96,_0x27b0d2){return db['JscriptyProject'][_0xc4df('0x46')](_0x3bce96['body'],{})[_0xc4df('0x25')](function(_0x6ae675){var _0x2dcabe=_0x3bce96[_0xc4df('0x47')]['get']({'plain':!![]});if(!_0x2dcabe)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2dcabe[_0xc4df('0x48')]===_0xc4df('0x47')){var _0x16ed42=_0x6ae675[_0xc4df('0x49')]({'plain':!![]});var _0x2dc0fc=_0xc4df('0x27');return db[_0xc4df('0x4a')][_0xc4df('0x4b')]({'where':{'name':_0x2dc0fc,'userProfileId':_0x2dcabe[_0xc4df('0x4c')]},'raw':!![]})['then'](function(_0x1509f3){if(_0x1509f3&&_0x1509f3[_0xc4df('0x4d')]===0x0){return db[_0xc4df('0x28')][_0xc4df('0x46')]({'name':_0x16ed42[_0xc4df('0x2a')],'resourceId':_0x16ed42['id'],'type':_0x1509f3[_0xc4df('0x2a')],'sectionId':_0x1509f3['id']},{})[_0xc4df('0x25')](function(){return _0x6ae675;});}else{return _0x6ae675;}})[_0xc4df('0x41')](function(_0x2c5d04){logger[_0xc4df('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2c5d04);throw _0x2c5d04;});}return _0x6ae675;})[_0xc4df('0x25')](respondWithResult(_0x27b0d2,0xc9))[_0xc4df('0x41')](handleError(_0x27b0d2,null));};exports[_0xc4df('0x4f')]=function(_0x50ed27,_0x9f615){var _0xc42652={'where':{'id':_0x50ed27[_0xc4df('0x43')]['id']}},_0x42b2eb={};_0x42b2eb['model']=_['keys'](db[_0xc4df('0x2c')][_0xc4df('0x44')]);_0xc42652[_0xc4df('0x33')]=_['intersection'](_0x42b2eb[_0xc4df('0x35')],qs[_0xc4df('0x36')](_0x50ed27[_0xc4df('0x31')][_0xc4df('0x36')]));_0xc42652['attributes']=_0xc42652[_0xc4df('0x33')]['length']?_0xc42652[_0xc4df('0x33')]:_0x42b2eb[_0xc4df('0x35')];if(_0x50ed27[_0xc4df('0x31')][_0xc4df('0x3f')]){_0xc42652[_0xc4df('0x50')]=[{'all':!![]}];}_0xc42652=_[_0xc4df('0x3d')]({},_0xc42652,_0x50ed27[_0xc4df('0x45')]);return db['JscriptyProject']['find'](_0xc42652)[_0xc4df('0x25')](handleEntityNotFound(_0x9f615,null))[_0xc4df('0x25')](function(_0x546fd0){if(_0x546fd0){var _0x230b18=_0x546fd0['get']({'plain':!![]});_0x230b18=qs['omit'](_0x230b18,['id','createdAt','updatedAt']);_0x50ed27[_0xc4df('0x51')]=_[_0xc4df('0x52')](_0x50ed27[_0xc4df('0x51')],['id',_0xc4df('0x53'),_0xc4df('0x54')]);return db[_0xc4df('0x2c')][_0xc4df('0x46')](_[_0xc4df('0x3d')](_0x230b18,_0x50ed27[_0xc4df('0x51')]),{'include':_0x50ed27[_0xc4df('0x31')][_0xc4df('0x3f')]?[{'all':!![]}]:undefined})[_0xc4df('0x25')](function(_0x34283d){var _0x2e3553=_0x50ed27[_0xc4df('0x47')]['get']({'plain':!![]});if(!_0x2e3553)throw new Error(_0xc4df('0x55'));if(_0x2e3553[_0xc4df('0x48')]===_0xc4df('0x47')){var _0x1c06ea=_0x34283d[_0xc4df('0x49')]({'plain':!![]});var _0x430457=_0xc4df('0x27');return db['UserProfileSection'][_0xc4df('0x4b')]({'where':{'name':_0x430457,'userProfileId':_0x2e3553[_0xc4df('0x4c')]},'raw':!![]})[_0xc4df('0x25')](function(_0x1f97d9){if(_0x1f97d9&&_0x1f97d9[_0xc4df('0x4d')]===0x0){return db[_0xc4df('0x28')]['create']({'name':_0x1c06ea[_0xc4df('0x2a')],'resourceId':_0x1c06ea['id'],'type':_0x1f97d9[_0xc4df('0x2a')],'sectionId':_0x1f97d9['id']},{})[_0xc4df('0x25')](function(){return _0x34283d;});}else{return _0x34283d;}})[_0xc4df('0x41')](function(_0x37306d){logger[_0xc4df('0x4e')](_0xc4df('0x56'),_0x37306d);throw _0x37306d;});}return _0x34283d;});}})[_0xc4df('0x25')](respondWithResult(_0x9f615,0xc9))[_0xc4df('0x41')](handleError(_0x9f615,null));};exports['update']=function(_0x1cbbad,_0x10e847){if(_0x1cbbad[_0xc4df('0x51')]['id']){delete _0x1cbbad[_0xc4df('0x51')]['id'];}return db[_0xc4df('0x2c')]['find']({'where':{'id':_0x1cbbad[_0xc4df('0x43')]['id']}})[_0xc4df('0x25')](handleEntityNotFound(_0x10e847,null))[_0xc4df('0x25')](saveUpdates(_0x1cbbad[_0xc4df('0x51')],null))[_0xc4df('0x25')](respondWithResult(_0x10e847,null))[_0xc4df('0x41')](handleError(_0x10e847,null));};exports[_0xc4df('0x26')]=function(_0x47b5ae,_0x367813){return db[_0xc4df('0x2c')][_0xc4df('0x4b')]({'where':{'id':_0x47b5ae[_0xc4df('0x43')]['id']}})[_0xc4df('0x25')](handleEntityNotFound(_0x367813,null))['then'](removeEntity(_0x367813,null))[_0xc4df('0x41')](handleError(_0x367813,null));};exports[_0xc4df('0x57')]=function(_0x2ab565,_0x5d0350,_0x504f9a){var _0x1435d0={'raw':!![],'where':{}};var _0x5c755d={};var _0x3b22ff={'count':0x0,'rows':[]};return db[_0xc4df('0x2c')]['findOne']({'where':{'id':_0x2ab565[_0xc4df('0x43')]['id']}})[_0xc4df('0x25')](handleEntityNotFound(_0x5d0350,null))[_0xc4df('0x25')](function(_0x359ca9){if(_0x359ca9){_0x5c755d[_0xc4df('0x35')]=_[_0xc4df('0x30')](db['JscriptySessionReport'][_0xc4df('0x44')]);_0x5c755d[_0xc4df('0x31')]=_['keys'](_0x2ab565[_0xc4df('0x31')]);_0x5c755d[_0xc4df('0x32')]=_[_0xc4df('0x34')](_0x5c755d[_0xc4df('0x35')],_0x5c755d[_0xc4df('0x31')]);_0x1435d0[_0xc4df('0x33')]=_['intersection'](_0x5c755d[_0xc4df('0x35')],qs[_0xc4df('0x36')](_0x2ab565['query'][_0xc4df('0x36')]));_0x1435d0[_0xc4df('0x33')]=_0x1435d0['attributes'][_0xc4df('0x37')]?_0x1435d0[_0xc4df('0x33')]:_0x5c755d[_0xc4df('0x35')];if(!_0x2ab565[_0xc4df('0x31')]['hasOwnProperty'](_0xc4df('0x39'))){_0x1435d0['limit']=qs[_0xc4df('0x1c')](_0x2ab565[_0xc4df('0x31')]['limit']);_0x1435d0[_0xc4df('0x1f')]=qs[_0xc4df('0x1f')](_0x2ab565[_0xc4df('0x31')][_0xc4df('0x1f')]);}_0x1435d0[_0xc4df('0x58')]=qs['sort'](_0x2ab565['query'][_0xc4df('0x3a')]);_0x1435d0[_0xc4df('0x3b')]=qs[_0xc4df('0x32')](_[_0xc4df('0x3c')](_0x2ab565[_0xc4df('0x31')],_0x5c755d[_0xc4df('0x32')]));_0x1435d0[_0xc4df('0x3b')]['ProjectId']=_0x359ca9['id'];if(_0x2ab565[_0xc4df('0x31')][_0xc4df('0x59')]){_0x1435d0[_0xc4df('0x3b')]=_[_0xc4df('0x3d')](_0x1435d0['where'],{'$or':_['map'](_0x1435d0[_0xc4df('0x33')],function(_0x33bc56){var _0x86ae06={};_0x86ae06[_0x33bc56]={'$like':'%'+_0x2ab565['query'][_0xc4df('0x59')]+'%'};return _0x86ae06;})});}_0x1435d0=_[_0xc4df('0x3d')]({},_0x1435d0,_0x2ab565['options']);return db[_0xc4df('0x5a')][_0xc4df('0x1e')]({'where':_0x1435d0[_0xc4df('0x3b')]})['then'](function(_0x188889){_0x3b22ff[_0xc4df('0x1e')]=_0x188889;if(_0x2ab565['query'][_0xc4df('0x3f')]){_0x1435d0[_0xc4df('0x50')]=[{'all':!![]}];}return db[_0xc4df('0x5a')][_0xc4df('0x40')](_0x1435d0);})['then'](function(_0x1fb762){_0x3b22ff['rows']=_0x1fb762;return _0x3b22ff;});}})[_0xc4df('0x25')](respondWithFilteredResult(_0x5d0350,_0x1435d0))[_0xc4df('0x41')](handleError(_0x5d0350,null));};exports[_0xc4df('0x5b')]=function(_0x7e4fe2,_0x3eaf5f,_0x40cc92){var _0x4dcb4c={'raw':!![],'where':{}};var _0x263d85={};var _0x2bcbb2={'count':0x0,'rows':[]};return db[_0xc4df('0x2c')][_0xc4df('0x5c')]({'where':{'id':_0x7e4fe2[_0xc4df('0x43')]['id']}})[_0xc4df('0x25')](handleEntityNotFound(_0x3eaf5f,null))[_0xc4df('0x25')](function(_0x55e179){if(_0x55e179){_0x263d85[_0xc4df('0x35')]=_[_0xc4df('0x30')](db[_0xc4df('0x5d')][_0xc4df('0x44')]);_0x263d85[_0xc4df('0x31')]=_['keys'](_0x7e4fe2[_0xc4df('0x31')]);_0x263d85[_0xc4df('0x32')]=_[_0xc4df('0x34')](_0x263d85[_0xc4df('0x35')],_0x263d85['query']);_0x4dcb4c[_0xc4df('0x33')]=_[_0xc4df('0x34')](_0x263d85[_0xc4df('0x35')],qs['fields'](_0x7e4fe2[_0xc4df('0x31')][_0xc4df('0x36')]));_0x4dcb4c['attributes']=_0x4dcb4c[_0xc4df('0x33')][_0xc4df('0x37')]?_0x4dcb4c[_0xc4df('0x33')]:_0x263d85['model'];if(!_0x7e4fe2['query'][_0xc4df('0x38')](_0xc4df('0x39'))){_0x4dcb4c[_0xc4df('0x1c')]=qs['limit'](_0x7e4fe2['query'][_0xc4df('0x1c')]);_0x4dcb4c['offset']=qs['offset'](_0x7e4fe2[_0xc4df('0x31')][_0xc4df('0x1f')]);}_0x4dcb4c[_0xc4df('0x58')]=qs[_0xc4df('0x3a')](_0x7e4fe2[_0xc4df('0x31')][_0xc4df('0x3a')]);_0x4dcb4c['where']=qs[_0xc4df('0x32')](_['pick'](_0x7e4fe2[_0xc4df('0x31')],_0x263d85[_0xc4df('0x32')]));_0x4dcb4c[_0xc4df('0x3b')][_0xc4df('0x5e')]=_0x55e179['id'];if(_0x7e4fe2[_0xc4df('0x31')][_0xc4df('0x59')]){_0x4dcb4c[_0xc4df('0x3b')]=_[_0xc4df('0x3d')](_0x4dcb4c[_0xc4df('0x3b')],{'$or':_[_0xc4df('0x5f')](_0x4dcb4c[_0xc4df('0x33')],function(_0x5ae06d){var _0x2a0509={};_0x2a0509[_0x5ae06d]={'$like':'%'+_0x7e4fe2['query'][_0xc4df('0x59')]+'%'};return _0x2a0509;})});}_0x4dcb4c=_[_0xc4df('0x3d')]({},_0x4dcb4c,_0x7e4fe2['options']);return db['JscriptyAnswerReport'][_0xc4df('0x1e')]({'where':_0x4dcb4c['where']})['then'](function(_0x437c21){_0x2bcbb2[_0xc4df('0x1e')]=_0x437c21;if(_0x7e4fe2['query']['includeAll']){_0x4dcb4c['include']=[{'all':!![]}];}return db[_0xc4df('0x5d')]['findAll'](_0x4dcb4c);})[_0xc4df('0x25')](function(_0x408b0f){_0x2bcbb2[_0xc4df('0x60')]=_0x408b0f;return _0x2bcbb2;});}})[_0xc4df('0x25')](respondWithFilteredResult(_0x3eaf5f,_0x4dcb4c))[_0xc4df('0x41')](handleError(_0x3eaf5f,null));};function char(_0x1bda8b){return'number'===typeof _0x1bda8b?String['fromCharCode']['apply'](null,arguments):_0x1bda8b;}function needsEncapsulation(_0x335243){return!!_0x335243&&(_0x335243[_0xc4df('0x61')]()[_0xc4df('0x62')](char(0xd))>=0x0||_0x335243[_0xc4df('0x61')]()[_0xc4df('0x62')](char(0xa))>=0x0||_0x335243[_0xc4df('0x61')]()[_0xc4df('0x62')](char(0x2c))>=0x0||_0x335243[_0xc4df('0x61')]()[_0xc4df('0x62')](char(0x22))>=0x0);}function encapsulate(_0x45c703){var _0x5f0144=char(0x22),_0x5d4637='\x5c'+char(0x22),_0x50bddd=_0x45c703[_0xc4df('0x61')]()[_0xc4df('0x63')](new RegExp(_0x5f0144,'g'),_0x5d4637);return _0x5f0144+_0x50bddd+_0x5f0144;}exports[_0xc4df('0x64')]=function(_0x1bc29c,_0xcdcf79,_0x268bbb){var _0x18d3e2,_0x1f7cd4;var _0xc8bf43={'where':{'ProjectId':_0x1bc29c['params']['id']}};if(_0x1bc29c[_0xc4df('0x31')][_0xc4df('0x65')]){_0xc8bf43[_0xc4df('0x3b')][_0xc4df('0x66')]=JSON[_0xc4df('0x67')](_0x1bc29c['query'][_0xc4df('0x65')]);}return db[_0xc4df('0x5a')]['findAll'](_0xc8bf43)[_0xc4df('0x25')](handleEntityNotFound(_0xcdcf79,null))[_0xc4df('0x25')](function(_0x7998c1){if(_0x7998c1){_0x18d3e2=_0x7998c1;return db[_0xc4df('0x68')][_0xc4df('0x40')]({'where':{'SessionId':{'$in':_[_0xc4df('0x5f')](_0x18d3e2,'id')},'ProjectId':_0x1bc29c[_0xc4df('0x43')]['id']},'order':'-createdAt'});}})[_0xc4df('0x25')](handleEntityNotFound(_0xcdcf79,null))[_0xc4df('0x25')](function(_0x1e6dc8){if(_0x1e6dc8){_0x1f7cd4=_0x1e6dc8;var _0x58c0a9={};for(var _0x52bda4=0x0,_0x2af758=_0x1f7cd4[_0xc4df('0x37')];_0x52bda4<_0x2af758;_0x52bda4++){if(!_0x58c0a9['hasOwnProperty'](_0x1f7cd4[_0x52bda4][_0xc4df('0x69')])){_0x58c0a9[_0x1f7cd4[_0x52bda4]['questionId']]=needsEncapsulation(_0x1f7cd4[_0x52bda4][_0xc4df('0x6a')])?encapsulate(_0x1f7cd4[_0x52bda4]['question']):_0x1f7cd4[_0x52bda4][_0xc4df('0x6a')];}}var _0x121afa=[],_0x40e6cf={};for(var _0x307008=0x0,_0x204219=_0x18d3e2[_0xc4df('0x37')];_0x307008<_0x204219;_0x307008++){_0x40e6cf={'ProjectId':_0x1bc29c[_0xc4df('0x43')]['id'],'SessionId':_0x18d3e2[_0x307008]['id'],'StartTime':moment(_0x18d3e2[_0x307008]['starttime'])[_0xc4df('0x6b')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x448ef4=0x0,_0x2d87ef=_0x1f7cd4[_0xc4df('0x37')];_0x448ef4<_0x2d87ef;_0x448ef4++){if(_0x1f7cd4[_0x448ef4][_0xc4df('0x6c')]==_0x18d3e2[_0x307008]['id']&&_0x58c0a9['hasOwnProperty'](_0x1f7cd4[_0x448ef4][_0xc4df('0x69')])){_0x40e6cf[_0x58c0a9[_0x1f7cd4[_0x448ef4][_0xc4df('0x69')]]]=_0x1f7cd4[_0x448ef4][_0xc4df('0x6d')];}}for(var _0x572a25 in _0x58c0a9){if(!_0x40e6cf[_0xc4df('0x38')](_0x58c0a9[_0x572a25])){_0x40e6cf[_0x58c0a9[_0x572a25]]=null;}}_0x121afa[_0xc4df('0x6e')](_0x40e6cf);}return _0x121afa;}})[_0xc4df('0x25')](function(_0x3b9345){if(!_[_0xc4df('0x6f')](_0x3b9345)){var _0x4e60cc=toCsv(_0x3b9345);var _0x48abdd=Date[_0xc4df('0x70')]();fs['writeFileSync'](util['format'](_0xc4df('0x71'),_0x1bc29c[_0xc4df('0x43')]['id'],_0x48abdd),_0x4e60cc);_0xcdcf79[_0xc4df('0x72')](_0xc4df('0x73'),_0xc4df('0x74')+util['format'](_0xc4df('0x75'),_0x1bc29c['params']['id'],_0x48abdd));_0xcdcf79['setHeader']('Content-type',_0xc4df('0x76'));return _0xcdcf79[_0xc4df('0x77')](util[_0xc4df('0x6b')](_0xc4df('0x71'),_0x1bc29c[_0xc4df('0x43')]['id'],_0x48abdd));}else{return _0xcdcf79[_0xc4df('0x18')](0xcc);}})[_0xc4df('0x41')](handleError(_0xcdcf79,null));};
\ No newline at end of file
+var _0x4eb8=['name','send','index','map','JscriptyProject','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','options','include','findAll','rows','show','params','includeAll','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Projects','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rawAttributes','omit','createdAt','updatedAt','getSessions','JscriptySessionReport','nolimit','ProjectId','getAnswers','findOne','JscriptyAnswerReport','fromCharCode','toString','indexOf','getSummary','startTime','parse','JscriptyQuestionReport','-createdAt','questionId','question','starttime','format','SessionId','push','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','setHeader','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error'];(function(_0x2c46c3,_0x106b37){var _0x10d619=function(_0x42072e){while(--_0x42072e){_0x2c46c3['push'](_0x2c46c3['shift']());}};_0x10d619(++_0x106b37);}(_0x4eb8,0x1b5));var _0x84eb=function(_0x32f91b,_0x460016){_0x32f91b=_0x32f91b-0x0;var _0x3ee8f3=_0x4eb8[_0x32f91b];return _0x3ee8f3;};'use strict';var emlformat=require(_0x84eb('0x0'));var rimraf=require(_0x84eb('0x1'));var zipdir=require(_0x84eb('0x2'));var jsonpatch=require(_0x84eb('0x3'));var rp=require('request-promise');var moment=require(_0x84eb('0x4'));var BPromise=require(_0x84eb('0x5'));var Mustache=require(_0x84eb('0x6'));var util=require(_0x84eb('0x7'));var path=require(_0x84eb('0x8'));var sox=require(_0x84eb('0x9'));var csv=require(_0x84eb('0xa'));var ejs=require(_0x84eb('0xb'));var fs=require('fs');var fs_extra=require(_0x84eb('0xc'));var _=require('lodash');var squel=require(_0x84eb('0xd'));var crypto=require(_0x84eb('0xe'));var jsforce=require(_0x84eb('0xf'));var deskjs=require(_0x84eb('0x10'));var toCsv=require(_0x84eb('0xa'));var querystring=require(_0x84eb('0x11'));var Papa=require(_0x84eb('0x12'));var Redis=require(_0x84eb('0x13'));var authService=require(_0x84eb('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x84eb('0x15'));var hardwareService=require(_0x84eb('0x16'));var logger=require(_0x84eb('0x17'))(_0x84eb('0x18'));var utils=require('../../config/utils');var config=require(_0x84eb('0x19'));var licenseUtil=require(_0x84eb('0x1a'));var db=require(_0x84eb('0x1b'))['db'];function respondWithStatusCode(_0xf15f82,_0x24b04a){_0x24b04a=_0x24b04a||0xcc;return function(_0x57c8f7){if(_0x57c8f7){return _0xf15f82[_0x84eb('0x1c')](_0x24b04a);}return _0xf15f82[_0x84eb('0x1d')](_0x24b04a)[_0x84eb('0x1e')]();};}function respondWithResult(_0x10f4e1,_0x216068){_0x216068=_0x216068||0xc8;return function(_0x44783b){if(_0x44783b){return _0x10f4e1[_0x84eb('0x1d')](_0x216068)[_0x84eb('0x1f')](_0x44783b);}};}function respondWithFilteredResult(_0x2670ae,_0xb19d09){return function(_0x264565){if(_0x264565){var _0x2f2785=typeof _0xb19d09['offset']===_0x84eb('0x20')&&typeof _0xb19d09[_0x84eb('0x21')]===_0x84eb('0x20');var _0x522e7e=_0x264565['count'];var _0x5718a4=_0x2f2785?0x0:_0xb19d09['offset'];var _0x529357=_0x2f2785?_0x264565[_0x84eb('0x22')]:_0xb19d09[_0x84eb('0x23')]+_0xb19d09[_0x84eb('0x21')];var _0x5bac61;if(_0x529357>=_0x522e7e){_0x529357=_0x522e7e;_0x5bac61=0xc8;}else{_0x5bac61=0xce;}_0x2670ae[_0x84eb('0x1d')](_0x5bac61);return _0x2670ae[_0x84eb('0x24')](_0x84eb('0x25'),_0x5718a4+'-'+_0x529357+'/'+_0x522e7e)[_0x84eb('0x1f')](_0x264565);}return null;};}function patchUpdates(_0x26dcfd){return function(_0x37994b){try{jsonpatch[_0x84eb('0x26')](_0x37994b,_0x26dcfd,!![]);}catch(_0x5730fd){return BPromise[_0x84eb('0x27')](_0x5730fd);}return _0x37994b[_0x84eb('0x28')]();};}function saveUpdates(_0x4c62d7,_0x1e2e76){return function(_0x5d64cb){if(_0x5d64cb){return _0x5d64cb[_0x84eb('0x29')](_0x4c62d7)[_0x84eb('0x2a')](function(_0x5a8e60){return _0x5a8e60;});}return null;};}function removeEntity(_0x352989,_0x1fb507){return function(_0x466746){if(_0x466746){return _0x466746[_0x84eb('0x2b')]()[_0x84eb('0x2a')](function(){var _0x1653bc=_0x466746[_0x84eb('0x2c')]({'plain':!![]});var _0x3ecf72='Projects';return db[_0x84eb('0x2d')][_0x84eb('0x2b')]({'where':{'type':_0x3ecf72,'resourceId':_0x1653bc['id']}})[_0x84eb('0x2a')](function(){return _0x466746;});})[_0x84eb('0x2a')](function(){_0x352989[_0x84eb('0x1d')](0xcc)[_0x84eb('0x1e')]();});}};}function handleEntityNotFound(_0xd51ee6,_0x2736d5){return function(_0x43bd1b){if(!_0x43bd1b){_0xd51ee6[_0x84eb('0x1c')](0x194);}return _0x43bd1b;};}function handleError(_0x29e60d,_0x1bfdec){_0x1bfdec=_0x1bfdec||0x1f4;return function(_0x22e11c){logger[_0x84eb('0x2e')](_0x22e11c['stack']);if(_0x22e11c[_0x84eb('0x2f')]){delete _0x22e11c[_0x84eb('0x2f')];}_0x29e60d[_0x84eb('0x1d')](_0x1bfdec)[_0x84eb('0x30')](_0x22e11c);};}exports[_0x84eb('0x31')]=function(_0x543d89,_0x430920){var _0x163517={},_0x2cc885={},_0x57ef39={'count':0x0,'rows':[]};var _0x23cb8f=_[_0x84eb('0x32')](db[_0x84eb('0x33')]['rawAttributes'],function(_0x31fbc6){return{'name':_0x31fbc6['fieldName'],'type':_0x31fbc6[_0x84eb('0x34')][_0x84eb('0x35')]};});_0x2cc885[_0x84eb('0x36')]=_[_0x84eb('0x32')](_0x23cb8f,_0x84eb('0x2f'));_0x2cc885[_0x84eb('0x37')]=_[_0x84eb('0x38')](_0x543d89[_0x84eb('0x37')]);_0x2cc885['filters']=_[_0x84eb('0x39')](_0x2cc885[_0x84eb('0x36')],_0x2cc885['query']);_0x163517[_0x84eb('0x3a')]=_[_0x84eb('0x39')](_0x2cc885[_0x84eb('0x36')],qs[_0x84eb('0x3b')](_0x543d89[_0x84eb('0x37')]['fields']));_0x163517[_0x84eb('0x3a')]=_0x163517[_0x84eb('0x3a')][_0x84eb('0x3c')]?_0x163517[_0x84eb('0x3a')]:_0x2cc885[_0x84eb('0x36')];if(!_0x543d89[_0x84eb('0x37')][_0x84eb('0x3d')]('nolimit')){_0x163517['limit']=qs[_0x84eb('0x21')](_0x543d89['query'][_0x84eb('0x21')]);_0x163517[_0x84eb('0x23')]=qs[_0x84eb('0x23')](_0x543d89['query'][_0x84eb('0x23')]);}_0x163517[_0x84eb('0x3e')]=qs['sort'](_0x543d89[_0x84eb('0x37')][_0x84eb('0x3f')]);_0x163517['where']=qs[_0x84eb('0x40')](_[_0x84eb('0x41')](_0x543d89[_0x84eb('0x37')],_0x2cc885[_0x84eb('0x40')]),_0x23cb8f);if(_0x543d89[_0x84eb('0x37')][_0x84eb('0x42')]){_0x163517[_0x84eb('0x43')]=_[_0x84eb('0x44')](_0x163517['where'],{'$or':_[_0x84eb('0x32')](_0x23cb8f,function(_0x35e6e9){if(_0x35e6e9['type']!=='VIRTUAL'){var _0x5879b6={};_0x5879b6[_0x35e6e9[_0x84eb('0x2f')]]={'$like':'%'+_0x543d89[_0x84eb('0x37')][_0x84eb('0x42')]+'%'};return _0x5879b6;}})});}_0x163517=_['merge']({},_0x163517,_0x543d89[_0x84eb('0x45')]);var _0x446500={'where':_0x163517[_0x84eb('0x43')]};return db[_0x84eb('0x33')]['count'](_0x446500)[_0x84eb('0x2a')](function(_0x200454){_0x57ef39['count']=_0x200454;if(_0x543d89[_0x84eb('0x37')]['includeAll']){_0x163517[_0x84eb('0x46')]=[{'all':!![]}];}return db[_0x84eb('0x33')][_0x84eb('0x47')](_0x163517);})['then'](function(_0x57427e){_0x57ef39[_0x84eb('0x48')]=_0x57427e;return _0x57ef39;})[_0x84eb('0x2a')](respondWithFilteredResult(_0x430920,_0x163517))['catch'](handleError(_0x430920,null));};exports[_0x84eb('0x49')]=function(_0x1a3f5d,_0x22074f){var _0x522764={'raw':![],'where':{'id':_0x1a3f5d[_0x84eb('0x4a')]['id']}},_0x3a92ca={};_0x3a92ca[_0x84eb('0x36')]=_['keys'](db[_0x84eb('0x33')]['rawAttributes']);_0x3a92ca[_0x84eb('0x37')]=_['keys'](_0x1a3f5d[_0x84eb('0x37')]);_0x3a92ca[_0x84eb('0x40')]=_[_0x84eb('0x39')](_0x3a92ca[_0x84eb('0x36')],_0x3a92ca['query']);_0x522764[_0x84eb('0x3a')]=_['intersection'](_0x3a92ca[_0x84eb('0x36')],qs[_0x84eb('0x3b')](_0x1a3f5d[_0x84eb('0x37')][_0x84eb('0x3b')]));_0x522764[_0x84eb('0x3a')]=_0x522764[_0x84eb('0x3a')][_0x84eb('0x3c')]?_0x522764[_0x84eb('0x3a')]:_0x3a92ca['model'];if(_0x1a3f5d['query'][_0x84eb('0x4b')]){_0x522764[_0x84eb('0x46')]=[{'all':!![]}];}_0x522764=_[_0x84eb('0x44')]({},_0x522764,_0x1a3f5d['options']);return db['JscriptyProject']['find'](_0x522764)[_0x84eb('0x2a')](handleEntityNotFound(_0x22074f,null))[_0x84eb('0x2a')](respondWithResult(_0x22074f,null))[_0x84eb('0x4c')](handleError(_0x22074f,null));};exports[_0x84eb('0x4d')]=function(_0x2600f2,_0x55763a){return db['JscriptyProject']['create'](_0x2600f2[_0x84eb('0x4e')],{})[_0x84eb('0x2a')](function(_0x2397f5){var _0x30e33a=_0x2600f2[_0x84eb('0x4f')][_0x84eb('0x2c')]({'plain':!![]});if(!_0x30e33a)throw new Error(_0x84eb('0x50'));if(_0x30e33a[_0x84eb('0x51')]===_0x84eb('0x4f')){var _0x1f0417=_0x2397f5[_0x84eb('0x2c')]({'plain':!![]});var _0x155003=_0x84eb('0x52');return db[_0x84eb('0x53')][_0x84eb('0x54')]({'where':{'name':_0x155003,'userProfileId':_0x30e33a[_0x84eb('0x55')]},'raw':!![]})[_0x84eb('0x2a')](function(_0x87f03d){if(_0x87f03d&&_0x87f03d[_0x84eb('0x56')]===0x0){return db[_0x84eb('0x2d')][_0x84eb('0x4d')]({'name':_0x1f0417['name'],'resourceId':_0x1f0417['id'],'type':_0x87f03d['name'],'sectionId':_0x87f03d['id']},{})[_0x84eb('0x2a')](function(){return _0x2397f5;});}else{return _0x2397f5;}})[_0x84eb('0x4c')](function(_0x2857a1){logger[_0x84eb('0x2e')](_0x84eb('0x57'),_0x2857a1);throw _0x2857a1;});}return _0x2397f5;})['then'](respondWithResult(_0x55763a,0xc9))[_0x84eb('0x4c')](handleError(_0x55763a,null));};exports['clone']=function(_0x36e5ae,_0x2cbab2){var _0x4b93a2={'where':{'id':_0x36e5ae[_0x84eb('0x4a')]['id']}},_0x2e2106={};_0x2e2106[_0x84eb('0x36')]=_[_0x84eb('0x38')](db[_0x84eb('0x33')][_0x84eb('0x58')]);_0x4b93a2[_0x84eb('0x3a')]=_[_0x84eb('0x39')](_0x2e2106[_0x84eb('0x36')],qs[_0x84eb('0x3b')](_0x36e5ae[_0x84eb('0x37')]['fields']));_0x4b93a2[_0x84eb('0x3a')]=_0x4b93a2['attributes'][_0x84eb('0x3c')]?_0x4b93a2[_0x84eb('0x3a')]:_0x2e2106[_0x84eb('0x36')];if(_0x36e5ae[_0x84eb('0x37')][_0x84eb('0x4b')]){_0x4b93a2[_0x84eb('0x46')]=[{'all':!![]}];}_0x4b93a2=_[_0x84eb('0x44')]({},_0x4b93a2,_0x36e5ae[_0x84eb('0x45')]);return db[_0x84eb('0x33')]['find'](_0x4b93a2)[_0x84eb('0x2a')](handleEntityNotFound(_0x2cbab2,null))[_0x84eb('0x2a')](function(_0x408818){if(_0x408818){var _0x394abc=_0x408818[_0x84eb('0x2c')]({'plain':!![]});_0x394abc=qs[_0x84eb('0x59')](_0x394abc,['id','createdAt','updatedAt']);_0x36e5ae['body']=_[_0x84eb('0x59')](_0x36e5ae[_0x84eb('0x4e')],['id',_0x84eb('0x5a'),_0x84eb('0x5b')]);return db[_0x84eb('0x33')][_0x84eb('0x4d')](_[_0x84eb('0x44')](_0x394abc,_0x36e5ae['body']),{'include':_0x36e5ae[_0x84eb('0x37')][_0x84eb('0x4b')]?[{'all':!![]}]:undefined})[_0x84eb('0x2a')](function(_0xf90029){var _0x53da2c=_0x36e5ae['user'][_0x84eb('0x2c')]({'plain':!![]});if(!_0x53da2c)throw new Error(_0x84eb('0x50'));if(_0x53da2c[_0x84eb('0x51')]===_0x84eb('0x4f')){var _0x56a75c=_0xf90029['get']({'plain':!![]});var _0x26f899=_0x84eb('0x52');return db[_0x84eb('0x53')][_0x84eb('0x54')]({'where':{'name':_0x26f899,'userProfileId':_0x53da2c[_0x84eb('0x55')]},'raw':!![]})[_0x84eb('0x2a')](function(_0x2bcda1){if(_0x2bcda1&&_0x2bcda1[_0x84eb('0x56')]===0x0){return db[_0x84eb('0x2d')][_0x84eb('0x4d')]({'name':_0x56a75c[_0x84eb('0x2f')],'resourceId':_0x56a75c['id'],'type':_0x2bcda1[_0x84eb('0x2f')],'sectionId':_0x2bcda1['id']},{})[_0x84eb('0x2a')](function(){return _0xf90029;});}else{return _0xf90029;}})['catch'](function(_0x2e5d0a){logger[_0x84eb('0x2e')](_0x84eb('0x57'),_0x2e5d0a);throw _0x2e5d0a;});}return _0xf90029;});}})[_0x84eb('0x2a')](respondWithResult(_0x2cbab2,0xc9))[_0x84eb('0x4c')](handleError(_0x2cbab2,null));};exports[_0x84eb('0x29')]=function(_0x2c69cc,_0x3199df){if(_0x2c69cc[_0x84eb('0x4e')]['id']){delete _0x2c69cc[_0x84eb('0x4e')]['id'];}return db[_0x84eb('0x33')]['find']({'where':{'id':_0x2c69cc['params']['id']}})[_0x84eb('0x2a')](handleEntityNotFound(_0x3199df,null))[_0x84eb('0x2a')](saveUpdates(_0x2c69cc[_0x84eb('0x4e')],null))[_0x84eb('0x2a')](respondWithResult(_0x3199df,null))[_0x84eb('0x4c')](handleError(_0x3199df,null));};exports[_0x84eb('0x2b')]=function(_0x47289a,_0x8dfc66){return db[_0x84eb('0x33')][_0x84eb('0x54')]({'where':{'id':_0x47289a[_0x84eb('0x4a')]['id']}})[_0x84eb('0x2a')](handleEntityNotFound(_0x8dfc66,null))[_0x84eb('0x2a')](removeEntity(_0x8dfc66,null))[_0x84eb('0x4c')](handleError(_0x8dfc66,null));};exports[_0x84eb('0x5c')]=function(_0x54559c,_0x3b87be,_0xbe902a){var _0x1a37dd={'raw':!![],'where':{}};var _0x4bc570={};var _0x21523d={'count':0x0,'rows':[]};return db[_0x84eb('0x33')]['findOne']({'where':{'id':_0x54559c['params']['id']}})[_0x84eb('0x2a')](handleEntityNotFound(_0x3b87be,null))[_0x84eb('0x2a')](function(_0x2a2be8){if(_0x2a2be8){_0x4bc570[_0x84eb('0x36')]=_['keys'](db[_0x84eb('0x5d')]['rawAttributes']);_0x4bc570['query']=_[_0x84eb('0x38')](_0x54559c[_0x84eb('0x37')]);_0x4bc570['filters']=_['intersection'](_0x4bc570[_0x84eb('0x36')],_0x4bc570[_0x84eb('0x37')]);_0x1a37dd['attributes']=_['intersection'](_0x4bc570[_0x84eb('0x36')],qs[_0x84eb('0x3b')](_0x54559c[_0x84eb('0x37')][_0x84eb('0x3b')]));_0x1a37dd['attributes']=_0x1a37dd[_0x84eb('0x3a')][_0x84eb('0x3c')]?_0x1a37dd[_0x84eb('0x3a')]:_0x4bc570['model'];if(!_0x54559c[_0x84eb('0x37')]['hasOwnProperty'](_0x84eb('0x5e'))){_0x1a37dd[_0x84eb('0x21')]=qs[_0x84eb('0x21')](_0x54559c[_0x84eb('0x37')][_0x84eb('0x21')]);_0x1a37dd[_0x84eb('0x23')]=qs[_0x84eb('0x23')](_0x54559c[_0x84eb('0x37')][_0x84eb('0x23')]);}_0x1a37dd[_0x84eb('0x3e')]=qs[_0x84eb('0x3f')](_0x54559c['query'][_0x84eb('0x3f')]);_0x1a37dd[_0x84eb('0x43')]=qs[_0x84eb('0x40')](_[_0x84eb('0x41')](_0x54559c['query'],_0x4bc570[_0x84eb('0x40')]));_0x1a37dd[_0x84eb('0x43')][_0x84eb('0x5f')]=_0x2a2be8['id'];if(_0x54559c[_0x84eb('0x37')]['filter']){_0x1a37dd[_0x84eb('0x43')]=_[_0x84eb('0x44')](_0x1a37dd[_0x84eb('0x43')],{'$or':_[_0x84eb('0x32')](_0x1a37dd[_0x84eb('0x3a')],function(_0x231017){var _0x13bcb2={};_0x13bcb2[_0x231017]={'$like':'%'+_0x54559c[_0x84eb('0x37')][_0x84eb('0x42')]+'%'};return _0x13bcb2;})});}_0x1a37dd=_[_0x84eb('0x44')]({},_0x1a37dd,_0x54559c[_0x84eb('0x45')]);return db[_0x84eb('0x5d')][_0x84eb('0x22')]({'where':_0x1a37dd[_0x84eb('0x43')]})[_0x84eb('0x2a')](function(_0x228ce1){_0x21523d[_0x84eb('0x22')]=_0x228ce1;if(_0x54559c[_0x84eb('0x37')][_0x84eb('0x4b')]){_0x1a37dd[_0x84eb('0x46')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x1a37dd);})[_0x84eb('0x2a')](function(_0x34863d){_0x21523d[_0x84eb('0x48')]=_0x34863d;return _0x21523d;});}})[_0x84eb('0x2a')](respondWithFilteredResult(_0x3b87be,_0x1a37dd))[_0x84eb('0x4c')](handleError(_0x3b87be,null));};exports[_0x84eb('0x60')]=function(_0x1ef33b,_0x145b68,_0x4f8a83){var _0x190345={'raw':!![],'where':{}};var _0x313262={};var _0x1e006c={'count':0x0,'rows':[]};return db[_0x84eb('0x33')][_0x84eb('0x61')]({'where':{'id':_0x1ef33b[_0x84eb('0x4a')]['id']}})[_0x84eb('0x2a')](handleEntityNotFound(_0x145b68,null))[_0x84eb('0x2a')](function(_0x4b1217){if(_0x4b1217){_0x313262[_0x84eb('0x36')]=_[_0x84eb('0x38')](db[_0x84eb('0x62')][_0x84eb('0x58')]);_0x313262[_0x84eb('0x37')]=_[_0x84eb('0x38')](_0x1ef33b['query']);_0x313262[_0x84eb('0x40')]=_['intersection'](_0x313262['model'],_0x313262[_0x84eb('0x37')]);_0x190345[_0x84eb('0x3a')]=_['intersection'](_0x313262['model'],qs['fields'](_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x3b')]));_0x190345[_0x84eb('0x3a')]=_0x190345[_0x84eb('0x3a')]['length']?_0x190345[_0x84eb('0x3a')]:_0x313262[_0x84eb('0x36')];if(!_0x1ef33b[_0x84eb('0x37')]['hasOwnProperty'](_0x84eb('0x5e'))){_0x190345[_0x84eb('0x21')]=qs[_0x84eb('0x21')](_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x21')]);_0x190345[_0x84eb('0x23')]=qs[_0x84eb('0x23')](_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x23')]);}_0x190345[_0x84eb('0x3e')]=qs[_0x84eb('0x3f')](_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x3f')]);_0x190345[_0x84eb('0x43')]=qs[_0x84eb('0x40')](_[_0x84eb('0x41')](_0x1ef33b[_0x84eb('0x37')],_0x313262[_0x84eb('0x40')]));_0x190345[_0x84eb('0x43')]['ProjectId']=_0x4b1217['id'];if(_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x42')]){_0x190345[_0x84eb('0x43')]=_[_0x84eb('0x44')](_0x190345[_0x84eb('0x43')],{'$or':_[_0x84eb('0x32')](_0x190345['attributes'],function(_0x10756e){var _0x27f99a={};_0x27f99a[_0x10756e]={'$like':'%'+_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x42')]+'%'};return _0x27f99a;})});}_0x190345=_[_0x84eb('0x44')]({},_0x190345,_0x1ef33b[_0x84eb('0x45')]);return db[_0x84eb('0x62')][_0x84eb('0x22')]({'where':_0x190345[_0x84eb('0x43')]})[_0x84eb('0x2a')](function(_0x3584f1){_0x1e006c[_0x84eb('0x22')]=_0x3584f1;if(_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x4b')]){_0x190345[_0x84eb('0x46')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x84eb('0x47')](_0x190345);})[_0x84eb('0x2a')](function(_0x1eeb46){_0x1e006c[_0x84eb('0x48')]=_0x1eeb46;return _0x1e006c;});}})[_0x84eb('0x2a')](respondWithFilteredResult(_0x145b68,_0x190345))[_0x84eb('0x4c')](handleError(_0x145b68,null));};function char(_0x29a70f){return'number'===typeof _0x29a70f?String[_0x84eb('0x63')][_0x84eb('0x26')](null,arguments):_0x29a70f;}function needsEncapsulation(_0x19d227){return!!_0x19d227&&(_0x19d227[_0x84eb('0x64')]()[_0x84eb('0x65')](char(0xd))>=0x0||_0x19d227['toString']()[_0x84eb('0x65')](char(0xa))>=0x0||_0x19d227[_0x84eb('0x64')]()[_0x84eb('0x65')](char(0x2c))>=0x0||_0x19d227[_0x84eb('0x64')]()[_0x84eb('0x65')](char(0x22))>=0x0);}function encapsulate(_0x4cd4c3){var _0xe937f7=char(0x22),_0x47851a='\x5c'+char(0x22),_0x222df2=_0x4cd4c3['toString']()['replace'](new RegExp(_0xe937f7,'g'),_0x47851a);return _0xe937f7+_0x222df2+_0xe937f7;}exports[_0x84eb('0x66')]=function(_0x271548,_0x1f98bf,_0x3c63dc){var _0x528a03,_0x34230f;var _0x56b87d={'where':{'ProjectId':_0x271548[_0x84eb('0x4a')]['id']}};if(_0x271548[_0x84eb('0x37')][_0x84eb('0x67')]){_0x56b87d[_0x84eb('0x43')]['starttime']=JSON[_0x84eb('0x68')](_0x271548['query'][_0x84eb('0x67')]);}return db[_0x84eb('0x5d')]['findAll'](_0x56b87d)[_0x84eb('0x2a')](handleEntityNotFound(_0x1f98bf,null))['then'](function(_0x2dec0b){if(_0x2dec0b){_0x528a03=_0x2dec0b;return db[_0x84eb('0x69')][_0x84eb('0x47')]({'where':{'SessionId':{'$in':_[_0x84eb('0x32')](_0x528a03,'id')},'ProjectId':_0x271548[_0x84eb('0x4a')]['id']},'order':_0x84eb('0x6a')});}})[_0x84eb('0x2a')](handleEntityNotFound(_0x1f98bf,null))[_0x84eb('0x2a')](function(_0x5dff29){if(_0x5dff29){_0x34230f=_0x5dff29;var _0x669a2d={};for(var _0x299aa5=0x0,_0x442a30=_0x34230f['length'];_0x299aa5<_0x442a30;_0x299aa5++){if(!_0x669a2d[_0x84eb('0x3d')](_0x34230f[_0x299aa5][_0x84eb('0x6b')])){_0x669a2d[_0x34230f[_0x299aa5][_0x84eb('0x6b')]]=needsEncapsulation(_0x34230f[_0x299aa5]['question'])?encapsulate(_0x34230f[_0x299aa5][_0x84eb('0x6c')]):_0x34230f[_0x299aa5]['question'];}}var _0x4c2525=[],_0x3c2e54={};for(var _0x311e2e=0x0,_0x32e9e7=_0x528a03['length'];_0x311e2e<_0x32e9e7;_0x311e2e++){_0x3c2e54={'ProjectId':_0x271548[_0x84eb('0x4a')]['id'],'SessionId':_0x528a03[_0x311e2e]['id'],'StartTime':moment(_0x528a03[_0x311e2e][_0x84eb('0x6d')])[_0x84eb('0x6e')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x31e486=0x0,_0x4754d6=_0x34230f[_0x84eb('0x3c')];_0x31e486<_0x4754d6;_0x31e486++){if(_0x34230f[_0x31e486][_0x84eb('0x6f')]==_0x528a03[_0x311e2e]['id']&&_0x669a2d[_0x84eb('0x3d')](_0x34230f[_0x31e486]['questionId'])){_0x3c2e54[_0x669a2d[_0x34230f[_0x31e486]['questionId']]]=_0x34230f[_0x31e486]['answer'];}}for(var _0x3e06b2 in _0x669a2d){if(!_0x3c2e54[_0x84eb('0x3d')](_0x669a2d[_0x3e06b2])){_0x3c2e54[_0x669a2d[_0x3e06b2]]=null;}}_0x4c2525[_0x84eb('0x70')](_0x3c2e54);}return _0x4c2525;}})[_0x84eb('0x2a')](function(_0x13c3fb){if(!_[_0x84eb('0x71')](_0x13c3fb)){var _0x309e33=toCsv(_0x13c3fb);var _0x2251a4=Date[_0x84eb('0x72')]();fs['writeFileSync'](util[_0x84eb('0x6e')](_0x84eb('0x73'),_0x271548['params']['id'],_0x2251a4),_0x309e33);_0x1f98bf['setHeader'](_0x84eb('0x74'),'attachment;\x20filename='+util[_0x84eb('0x6e')]('Jscripty_Project_%d_Summary_%s.csv',_0x271548['params']['id'],_0x2251a4));_0x1f98bf[_0x84eb('0x75')](_0x84eb('0x76'),_0x84eb('0x77'));return _0x1f98bf[_0x84eb('0x78')](util[_0x84eb('0x6e')](_0x84eb('0x73'),_0x271548[_0x84eb('0x4a')]['id'],_0x2251a4));}else{return _0x1f98bf['sendStatus'](0xcc);}})[_0x84eb('0x4c')](handleError(_0x1f98bf,null));};
\ No newline at end of file
index 25794b9..97b15c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4986=['lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./jscriptyProject.attributes','exports','define'];(function(_0x16495f,_0x5c1d14){var _0x1d62b5=function(_0x4b33ad){while(--_0x4b33ad){_0x16495f['push'](_0x16495f['shift']());}};_0x1d62b5(++_0x5c1d14);}(_0x4986,0x6e));var _0x6498=function(_0x59a34b,_0x523d77){_0x59a34b=_0x59a34b-0x0;var _0x16d8bd=_0x4986[_0x59a34b];return _0x16d8bd;};'use strict';var _=require(_0x6498('0x0'));var util=require(_0x6498('0x1'));var logger=require(_0x6498('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6498('0x3'));var rp=require(_0x6498('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6498('0x5'));var config=require(_0x6498('0x6'));var attributes=require(_0x6498('0x7'));module[_0x6498('0x8')]=function(_0x117a31,_0x8d1853){return _0x117a31[_0x6498('0x9')]('JscriptyProject',attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf767=['api','moment','bluebird','path','rimraf','../../config/environment','./jscriptyProject.attributes','define','JscriptyProject','jscripty_projects','util','../../config/logger'];(function(_0x4172a0,_0x5bfada){var _0x4500f2=function(_0x517948){while(--_0x517948){_0x4172a0['push'](_0x4172a0['shift']());}};_0x4500f2(++_0x5bfada);}(_0xf767,0x76));var _0x7f76=function(_0x3c6ae2,_0x5c52d8){_0x3c6ae2=_0x3c6ae2-0x0;var _0x4edda=_0xf767[_0x3c6ae2];return _0x4edda;};'use strict';var _=require('lodash');var util=require(_0x7f76('0x0'));var logger=require(_0x7f76('0x1'))(_0x7f76('0x2'));var moment=require(_0x7f76('0x3'));var BPromise=require(_0x7f76('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7f76('0x5'));var rimraf=require(_0x7f76('0x6'));var config=require(_0x7f76('0x7'));var attributes=require(_0x7f76('0x8'));module['exports']=function(_0x23c243,_0x2f2588){return _0x23c243[_0x7f76('0x9')](_0x7f76('0xa'),attributes,{'tableName':_0x7f76('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c766ed3..9d3a322 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s'];(function(_0xa935d9,_0x20596a){var _0x5af53f=function(_0x76b444){while(--_0x76b444){_0xa935d9['push'](_0xa935d9['shift']());}};_0x5af53f(++_0x20596a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2338fa,_0x80579a){_0x2338fa=_0x2338fa-0x0;var _0x42df9b=_0xcb91[_0x2338fa];return _0x42df9b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0x0713=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\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(_0x3f4532,_0x125c9b){var _0x5498c8=function(_0x6b8183){while(--_0x6b8183){_0x3f4532['push'](_0x3f4532['shift']());}};_0x5498c8(++_0x125c9b);}(_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')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('JscriptyProject,\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')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index ba036a5..4e101b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e99=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','delete','destroy','exports','util'];(function(_0x54fe5d,_0xb659f0){var _0x54900d=function(_0x36232d){while(--_0x36232d){_0x54fe5d['push'](_0x54fe5d['shift']());}};_0x54900d(++_0xb659f0);}(_0x1e99,0x18e));var _0x91e9=function(_0x11fbc0,_0x55d9a6){_0x11fbc0=_0x11fbc0-0x0;var _0x5b265f=_0x1e99[_0x11fbc0];return _0x5b265f;};'use strict';var multer=require('multer');var util=require(_0x91e9('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x91e9('0x1'));var router=express[_0x91e9('0x2')]();var fs_extra=require(_0x91e9('0x3'));var auth=require(_0x91e9('0x4'));var interaction=require(_0x91e9('0x5'));var config=require(_0x91e9('0x6'));var controller=require(_0x91e9('0x7'));router[_0x91e9('0x8')]('/',auth[_0x91e9('0x9')](),controller[_0x91e9('0xa')]);router[_0x91e9('0x8')](_0x91e9('0xb'),auth[_0x91e9('0x9')](),controller[_0x91e9('0xc')]);router['get']('/:id',auth[_0x91e9('0x9')](),controller[_0x91e9('0xd')]);router[_0x91e9('0xe')]('/',auth[_0x91e9('0x9')](),controller[_0x91e9('0xf')]);router[_0x91e9('0x10')](_0x91e9('0x11'),auth[_0x91e9('0x9')](),controller['update']);router[_0x91e9('0x12')](_0x91e9('0x11'),auth['isAuthenticated'](),controller[_0x91e9('0x13')]);module[_0x91e9('0x14')]=router;
\ No newline at end of file
+var _0xfada=['isAuthenticated','get','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller'];(function(_0x2ecc65,_0xd75c48){var _0x103cc3=function(_0x3f856b){while(--_0x3f856b){_0x2ecc65['push'](_0x2ecc65['shift']());}};_0x103cc3(++_0xd75c48);}(_0xfada,0x85));var _0xafad=function(_0x88614d,_0x15e75a){_0x88614d=_0x88614d-0x0;var _0x5f2886=_0xfada[_0x88614d];return _0x5f2886;};'use strict';var multer=require(_0xafad('0x0'));var util=require(_0xafad('0x1'));var path=require(_0xafad('0x2'));var timeout=require(_0xafad('0x3'));var express=require(_0xafad('0x4'));var router=express[_0xafad('0x5')]();var fs_extra=require(_0xafad('0x6'));var auth=require(_0xafad('0x7'));var interaction=require(_0xafad('0x8'));var config=require(_0xafad('0x9'));var controller=require(_0xafad('0xa'));router['get']('/',auth[_0xafad('0xb')](),controller['index']);router[_0xafad('0xc')](_0xafad('0xd'),auth[_0xafad('0xb')](),controller[_0xafad('0xe')]);router['get'](_0xafad('0xf'),auth[_0xafad('0xb')](),controller[_0xafad('0x10')]);router[_0xafad('0x11')]('/',auth[_0xafad('0xb')](),controller[_0xafad('0x12')]);router[_0xafad('0x13')](_0xafad('0xf'),auth['isAuthenticated'](),controller[_0xafad('0x14')]);router[_0xafad('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xafad('0x16')]);module[_0xafad('0x17')]=router;
\ No newline at end of file
index 235aa55..698fac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0x7a54,0x106));var _0x47a5=function(_0x1a7048,_0x1867a7){_0x1a7048=_0x1a7048-0x0;var _0x5ccb6f=_0x7a54[_0x1a7048];return _0x5ccb6f;};'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(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x7a54,0x106));var _0x47a5=function(_0x4c661d,_0x37f3c0){_0x4c661d=_0x4c661d-0x0;var _0x394f03=_0x7a54[_0x4c661d];return _0x394f03;};'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 85d7268..ae488f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f60=['params','intersection','body','catch','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','update','then','destroy','name','send','JscriptyQuestionReport','rawAttributes','type','map','query','keys','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','options','includeAll','rows'];(function(_0x25958f,_0x2b8099){var _0x38f75c=function(_0x5d5b47){while(--_0x5d5b47){_0x25958f['push'](_0x25958f['shift']());}};_0x38f75c(++_0x2b8099);}(_0x5f60,0x169));var _0x05f6=function(_0x27c3f0,_0x198aa2){_0x27c3f0=_0x27c3f0-0x0;var _0x11e51c=_0x5f60[_0x27c3f0];return _0x11e51c;};'use strict';var emlformat=require(_0x05f6('0x0'));var rimraf=require(_0x05f6('0x1'));var zipdir=require(_0x05f6('0x2'));var jsonpatch=require(_0x05f6('0x3'));var rp=require(_0x05f6('0x4'));var moment=require(_0x05f6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x05f6('0x6'));var util=require(_0x05f6('0x7'));var path=require(_0x05f6('0x8'));var sox=require(_0x05f6('0x9'));var csv=require(_0x05f6('0xa'));var ejs=require(_0x05f6('0xb'));var fs=require('fs');var fs_extra=require(_0x05f6('0xc'));var _=require(_0x05f6('0xd'));var squel=require(_0x05f6('0xe'));var crypto=require(_0x05f6('0xf'));var jsforce=require(_0x05f6('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x05f6('0xa'));var querystring=require(_0x05f6('0x11'));var Papa=require('papaparse');var Redis=require(_0x05f6('0x12'));var authService=require(_0x05f6('0x13'));var qs=require(_0x05f6('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x05f6('0x15'));var logger=require(_0x05f6('0x16'))(_0x05f6('0x17'));var utils=require(_0x05f6('0x18'));var config=require(_0x05f6('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x05f6('0x1a'))['db'];function respondWithStatusCode(_0x8f11b7,_0x4ab29d){_0x4ab29d=_0x4ab29d||0xcc;return function(_0x40609e){if(_0x40609e){return _0x8f11b7[_0x05f6('0x1b')](_0x4ab29d);}return _0x8f11b7['status'](_0x4ab29d)[_0x05f6('0x1c')]();};}function respondWithResult(_0x5786b5,_0x4dfbe4){_0x4dfbe4=_0x4dfbe4||0xc8;return function(_0x4ed790){if(_0x4ed790){return _0x5786b5[_0x05f6('0x1d')](_0x4dfbe4)['json'](_0x4ed790);}};}function respondWithFilteredResult(_0x2e467b,_0x3009f7){return function(_0x4c713d){if(_0x4c713d){var _0x3d65eb=typeof _0x3009f7[_0x05f6('0x1e')]==='undefined'&&typeof _0x3009f7['limit']===_0x05f6('0x1f');var _0x582fc4=_0x4c713d['count'];var _0x4e51b1=_0x3d65eb?0x0:_0x3009f7['offset'];var _0xf43f96=_0x3d65eb?_0x4c713d[_0x05f6('0x20')]:_0x3009f7[_0x05f6('0x1e')]+_0x3009f7[_0x05f6('0x21')];var _0x1b5682;if(_0xf43f96>=_0x582fc4){_0xf43f96=_0x582fc4;_0x1b5682=0xc8;}else{_0x1b5682=0xce;}_0x2e467b[_0x05f6('0x1d')](_0x1b5682);return _0x2e467b[_0x05f6('0x22')](_0x05f6('0x23'),_0x4e51b1+'-'+_0xf43f96+'/'+_0x582fc4)[_0x05f6('0x24')](_0x4c713d);}return null;};}function patchUpdates(_0x1d7c81){return function(_0x54572b){try{jsonpatch[_0x05f6('0x25')](_0x54572b,_0x1d7c81,!![]);}catch(_0x5d17fd){return BPromise[_0x05f6('0x26')](_0x5d17fd);}return _0x54572b['save']();};}function saveUpdates(_0x2c6e4f,_0x4803a8){return function(_0x77d6fd){if(_0x77d6fd){return _0x77d6fd[_0x05f6('0x27')](_0x2c6e4f)[_0x05f6('0x28')](function(_0x550a98){return _0x550a98;});}return null;};}function removeEntity(_0x1b415c,_0x284230){return function(_0x260fba){if(_0x260fba){return _0x260fba[_0x05f6('0x29')]()[_0x05f6('0x28')](function(){_0x1b415c[_0x05f6('0x1d')](0xcc)[_0x05f6('0x1c')]();});}};}function handleEntityNotFound(_0x548447,_0x2cb15d){return function(_0xa6c048){if(!_0xa6c048){_0x548447['sendStatus'](0x194);}return _0xa6c048;};}function handleError(_0x2f212d,_0x235379){_0x235379=_0x235379||0x1f4;return function(_0x1ce5d9){logger['error'](_0x1ce5d9['stack']);if(_0x1ce5d9[_0x05f6('0x2a')]){delete _0x1ce5d9['name'];}_0x2f212d[_0x05f6('0x1d')](_0x235379)[_0x05f6('0x2b')](_0x1ce5d9);};}exports['index']=function(_0x32930e,_0x2f2522){var _0x4b5cd4={},_0x58b628={},_0x3636a4={'count':0x0,'rows':[]};var _0x29e2f4=_['map'](db[_0x05f6('0x2c')][_0x05f6('0x2d')],function(_0x56ff8a){return{'name':_0x56ff8a['fieldName'],'type':_0x56ff8a[_0x05f6('0x2e')]['key']};});_0x58b628['model']=_[_0x05f6('0x2f')](_0x29e2f4,_0x05f6('0x2a'));_0x58b628[_0x05f6('0x30')]=_[_0x05f6('0x31')](_0x32930e[_0x05f6('0x30')]);_0x58b628['filters']=_['intersection'](_0x58b628[_0x05f6('0x32')],_0x58b628['query']);_0x4b5cd4[_0x05f6('0x33')]=_['intersection'](_0x58b628[_0x05f6('0x32')],qs[_0x05f6('0x34')](_0x32930e[_0x05f6('0x30')][_0x05f6('0x34')]));_0x4b5cd4['attributes']=_0x4b5cd4[_0x05f6('0x33')][_0x05f6('0x35')]?_0x4b5cd4[_0x05f6('0x33')]:_0x58b628[_0x05f6('0x32')];if(!_0x32930e[_0x05f6('0x30')][_0x05f6('0x36')](_0x05f6('0x37'))){_0x4b5cd4[_0x05f6('0x21')]=qs['limit'](_0x32930e['query'][_0x05f6('0x21')]);_0x4b5cd4[_0x05f6('0x1e')]=qs[_0x05f6('0x1e')](_0x32930e[_0x05f6('0x30')][_0x05f6('0x1e')]);}_0x4b5cd4[_0x05f6('0x38')]=qs[_0x05f6('0x39')](_0x32930e[_0x05f6('0x30')][_0x05f6('0x39')]);_0x4b5cd4['where']=qs[_0x05f6('0x3a')](_[_0x05f6('0x3b')](_0x32930e['query'],_0x58b628['filters']),_0x29e2f4);if(_0x32930e[_0x05f6('0x30')]['filter']){_0x4b5cd4[_0x05f6('0x3c')]=_[_0x05f6('0x3d')](_0x4b5cd4[_0x05f6('0x3c')],{'$or':_[_0x05f6('0x2f')](_0x29e2f4,function(_0x58162c){if(_0x58162c[_0x05f6('0x2e')]!=='VIRTUAL'){var _0x51a21b={};_0x51a21b[_0x58162c[_0x05f6('0x2a')]]={'$like':'%'+_0x32930e[_0x05f6('0x30')]['filter']+'%'};return _0x51a21b;}})});}_0x4b5cd4=_[_0x05f6('0x3d')]({},_0x4b5cd4,_0x32930e[_0x05f6('0x3e')]);var _0x5775b0={'where':_0x4b5cd4[_0x05f6('0x3c')]};return db[_0x05f6('0x2c')][_0x05f6('0x20')](_0x5775b0)[_0x05f6('0x28')](function(_0x2efca9){_0x3636a4[_0x05f6('0x20')]=_0x2efca9;if(_0x32930e[_0x05f6('0x30')][_0x05f6('0x3f')]){_0x4b5cd4['include']=[{'all':!![]}];}return db[_0x05f6('0x2c')]['findAll'](_0x4b5cd4);})[_0x05f6('0x28')](function(_0x14ddfe){_0x3636a4[_0x05f6('0x40')]=_0x14ddfe;return _0x3636a4;})[_0x05f6('0x28')](respondWithFilteredResult(_0x2f2522,_0x4b5cd4))['catch'](handleError(_0x2f2522,null));};exports['show']=function(_0x3e65c6,_0x1f0040){var _0x1b5620={'raw':!![],'where':{'id':_0x3e65c6[_0x05f6('0x41')]['id']}},_0x14120c={};_0x14120c[_0x05f6('0x32')]=_[_0x05f6('0x31')](db[_0x05f6('0x2c')]['rawAttributes']);_0x14120c[_0x05f6('0x30')]=_[_0x05f6('0x31')](_0x3e65c6[_0x05f6('0x30')]);_0x14120c[_0x05f6('0x3a')]=_[_0x05f6('0x42')](_0x14120c[_0x05f6('0x32')],_0x14120c[_0x05f6('0x30')]);_0x1b5620[_0x05f6('0x33')]=_[_0x05f6('0x42')](_0x14120c['model'],qs[_0x05f6('0x34')](_0x3e65c6['query'][_0x05f6('0x34')]));_0x1b5620['attributes']=_0x1b5620[_0x05f6('0x33')]['length']?_0x1b5620[_0x05f6('0x33')]:_0x14120c['model'];if(_0x3e65c6[_0x05f6('0x30')][_0x05f6('0x3f')]){_0x1b5620['include']=[{'all':!![]}];}_0x1b5620=_[_0x05f6('0x3d')]({},_0x1b5620,_0x3e65c6[_0x05f6('0x3e')]);return db[_0x05f6('0x2c')]['find'](_0x1b5620)[_0x05f6('0x28')](handleEntityNotFound(_0x1f0040,null))['then'](respondWithResult(_0x1f0040,null))['catch'](handleError(_0x1f0040,null));};exports['create']=function(_0x37a305,_0xcfc611){return db[_0x05f6('0x2c')]['create'](_0x37a305[_0x05f6('0x43')],{})['then'](respondWithResult(_0xcfc611,0xc9))[_0x05f6('0x44')](handleError(_0xcfc611,null));};exports[_0x05f6('0x27')]=function(_0x50c6c5,_0x2ee1ab){if(_0x50c6c5['body']['id']){delete _0x50c6c5[_0x05f6('0x43')]['id'];}return db[_0x05f6('0x2c')]['find']({'where':{'id':_0x50c6c5[_0x05f6('0x41')]['id']}})['then'](handleEntityNotFound(_0x2ee1ab,null))['then'](saveUpdates(_0x50c6c5['body'],null))[_0x05f6('0x28')](respondWithResult(_0x2ee1ab,null))[_0x05f6('0x44')](handleError(_0x2ee1ab,null));};exports[_0x05f6('0x29')]=function(_0x2b41e6,_0x29cf8e){return db['JscriptyQuestionReport'][_0x05f6('0x45')]({'where':{'id':_0x2b41e6[_0x05f6('0x41')]['id']}})[_0x05f6('0x28')](handleEntityNotFound(_0x29cf8e,null))['then'](removeEntity(_0x29cf8e,null))[_0x05f6('0x44')](handleError(_0x29cf8e,null));};exports['describe']=function(_0x116dc1,_0x22b29c){return db[_0x05f6('0x2c')][_0x05f6('0x46')]()[_0x05f6('0x28')](respondWithResult(_0x22b29c,null))[_0x05f6('0x44')](handleError(_0x22b29c,null));};
\ No newline at end of file
+var _0x4411=['save','update','destroy','then','end','error','stack','name','send','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','includeAll','include','findAll','rows','show','params','find','create','body','catch','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x4411,0x110));var _0x1441=function(_0x1789b2,_0x2d09f0){_0x1789b2=_0x1789b2-0x0;var _0x136ff6=_0x4411[_0x1789b2];return _0x136ff6;};'use strict';var emlformat=require(_0x1441('0x0'));var rimraf=require(_0x1441('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1441('0x2'));var rp=require(_0x1441('0x3'));var moment=require(_0x1441('0x4'));var BPromise=require(_0x1441('0x5'));var Mustache=require('mustache');var util=require(_0x1441('0x6'));var path=require(_0x1441('0x7'));var sox=require(_0x1441('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1441('0x9'));var squel=require(_0x1441('0xa'));var crypto=require(_0x1441('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x1441('0xc'));var toCsv=require('to-csv');var querystring=require(_0x1441('0xd'));var Papa=require(_0x1441('0xe'));var Redis=require('ioredis');var authService=require(_0x1441('0xf'));var qs=require(_0x1441('0x10'));var as=require(_0x1441('0x11'));var hardwareService=require(_0x1441('0x12'));var logger=require(_0x1441('0x13'))(_0x1441('0x14'));var utils=require(_0x1441('0x15'));var config=require(_0x1441('0x16'));var licenseUtil=require(_0x1441('0x17'));var db=require(_0x1441('0x18'))['db'];function respondWithStatusCode(_0x106312,_0x117fd9){_0x117fd9=_0x117fd9||0xcc;return function(_0x2e493e){if(_0x2e493e){return _0x106312[_0x1441('0x19')](_0x117fd9);}return _0x106312[_0x1441('0x1a')](_0x117fd9)['end']();};}function respondWithResult(_0x3c7e9a,_0x20ba3b){_0x20ba3b=_0x20ba3b||0xc8;return function(_0x4f8add){if(_0x4f8add){return _0x3c7e9a[_0x1441('0x1a')](_0x20ba3b)['json'](_0x4f8add);}};}function respondWithFilteredResult(_0x1d0153,_0x331032){return function(_0x568347){if(_0x568347){var _0x2c7ddb=typeof _0x331032[_0x1441('0x1b')]===_0x1441('0x1c')&&typeof _0x331032[_0x1441('0x1d')]===_0x1441('0x1c');var _0x2d10e9=_0x568347[_0x1441('0x1e')];var _0x2e9e85=_0x2c7ddb?0x0:_0x331032['offset'];var _0x15400b=_0x2c7ddb?_0x568347[_0x1441('0x1e')]:_0x331032[_0x1441('0x1b')]+_0x331032[_0x1441('0x1d')];var _0x193e5d;if(_0x15400b>=_0x2d10e9){_0x15400b=_0x2d10e9;_0x193e5d=0xc8;}else{_0x193e5d=0xce;}_0x1d0153['status'](_0x193e5d);return _0x1d0153[_0x1441('0x1f')](_0x1441('0x20'),_0x2e9e85+'-'+_0x15400b+'/'+_0x2d10e9)[_0x1441('0x21')](_0x568347);}return null;};}function patchUpdates(_0x387cb3){return function(_0x19fcf6){try{jsonpatch[_0x1441('0x22')](_0x19fcf6,_0x387cb3,!![]);}catch(_0x16655a){return BPromise[_0x1441('0x23')](_0x16655a);}return _0x19fcf6[_0x1441('0x24')]();};}function saveUpdates(_0x45eea7,_0x40557a){return function(_0x3d0e78){if(_0x3d0e78){return _0x3d0e78[_0x1441('0x25')](_0x45eea7)['then'](function(_0x2e41a0){return _0x2e41a0;});}return null;};}function removeEntity(_0x1fe11c,_0xbe11ed){return function(_0x3045b5){if(_0x3045b5){return _0x3045b5[_0x1441('0x26')]()[_0x1441('0x27')](function(){_0x1fe11c['status'](0xcc)[_0x1441('0x28')]();});}};}function handleEntityNotFound(_0xc106d2,_0x4bac46){return function(_0x3de0e0){if(!_0x3de0e0){_0xc106d2[_0x1441('0x19')](0x194);}return _0x3de0e0;};}function handleError(_0x1eb4e9,_0x7af333){_0x7af333=_0x7af333||0x1f4;return function(_0x4df082){logger[_0x1441('0x29')](_0x4df082[_0x1441('0x2a')]);if(_0x4df082[_0x1441('0x2b')]){delete _0x4df082[_0x1441('0x2b')];}_0x1eb4e9[_0x1441('0x1a')](_0x7af333)[_0x1441('0x2c')](_0x4df082);};}exports['index']=function(_0x28aa65,_0xbd87e5){var _0x27fd31={},_0x43f710={},_0x4525f8={'count':0x0,'rows':[]};var _0x45b70a=_[_0x1441('0x2d')](db[_0x1441('0x2e')][_0x1441('0x2f')],function(_0x561406){return{'name':_0x561406[_0x1441('0x30')],'type':_0x561406[_0x1441('0x31')][_0x1441('0x32')]};});_0x43f710[_0x1441('0x33')]=_[_0x1441('0x2d')](_0x45b70a,'name');_0x43f710[_0x1441('0x34')]=_[_0x1441('0x35')](_0x28aa65[_0x1441('0x34')]);_0x43f710['filters']=_[_0x1441('0x36')](_0x43f710[_0x1441('0x33')],_0x43f710[_0x1441('0x34')]);_0x27fd31[_0x1441('0x37')]=_['intersection'](_0x43f710['model'],qs[_0x1441('0x38')](_0x28aa65[_0x1441('0x34')][_0x1441('0x38')]));_0x27fd31[_0x1441('0x37')]=_0x27fd31['attributes'][_0x1441('0x39')]?_0x27fd31[_0x1441('0x37')]:_0x43f710[_0x1441('0x33')];if(!_0x28aa65[_0x1441('0x34')][_0x1441('0x3a')]('nolimit')){_0x27fd31[_0x1441('0x1d')]=qs[_0x1441('0x1d')](_0x28aa65['query'][_0x1441('0x1d')]);_0x27fd31[_0x1441('0x1b')]=qs[_0x1441('0x1b')](_0x28aa65[_0x1441('0x34')]['offset']);}_0x27fd31[_0x1441('0x3b')]=qs[_0x1441('0x3c')](_0x28aa65['query'][_0x1441('0x3c')]);_0x27fd31['where']=qs[_0x1441('0x3d')](_[_0x1441('0x3e')](_0x28aa65[_0x1441('0x34')],_0x43f710['filters']),_0x45b70a);if(_0x28aa65[_0x1441('0x34')][_0x1441('0x3f')]){_0x27fd31[_0x1441('0x40')]=_[_0x1441('0x41')](_0x27fd31[_0x1441('0x40')],{'$or':_['map'](_0x45b70a,function(_0x3be129){if(_0x3be129[_0x1441('0x31')]!=='VIRTUAL'){var _0x39f51e={};_0x39f51e[_0x3be129[_0x1441('0x2b')]]={'$like':'%'+_0x28aa65[_0x1441('0x34')]['filter']+'%'};return _0x39f51e;}})});}_0x27fd31=_[_0x1441('0x41')]({},_0x27fd31,_0x28aa65['options']);var _0x50f948={'where':_0x27fd31[_0x1441('0x40')]};return db[_0x1441('0x2e')][_0x1441('0x1e')](_0x50f948)[_0x1441('0x27')](function(_0x2a04ea){_0x4525f8[_0x1441('0x1e')]=_0x2a04ea;if(_0x28aa65[_0x1441('0x34')][_0x1441('0x42')]){_0x27fd31[_0x1441('0x43')]=[{'all':!![]}];}return db[_0x1441('0x2e')][_0x1441('0x44')](_0x27fd31);})['then'](function(_0x4156aa){_0x4525f8[_0x1441('0x45')]=_0x4156aa;return _0x4525f8;})[_0x1441('0x27')](respondWithFilteredResult(_0xbd87e5,_0x27fd31))['catch'](handleError(_0xbd87e5,null));};exports[_0x1441('0x46')]=function(_0x4faf39,_0x5e14c9){var _0x59c26b={'raw':!![],'where':{'id':_0x4faf39[_0x1441('0x47')]['id']}},_0x1f5c89={};_0x1f5c89[_0x1441('0x33')]=_[_0x1441('0x35')](db[_0x1441('0x2e')][_0x1441('0x2f')]);_0x1f5c89[_0x1441('0x34')]=_['keys'](_0x4faf39['query']);_0x1f5c89['filters']=_['intersection'](_0x1f5c89[_0x1441('0x33')],_0x1f5c89[_0x1441('0x34')]);_0x59c26b[_0x1441('0x37')]=_[_0x1441('0x36')](_0x1f5c89[_0x1441('0x33')],qs[_0x1441('0x38')](_0x4faf39[_0x1441('0x34')][_0x1441('0x38')]));_0x59c26b[_0x1441('0x37')]=_0x59c26b[_0x1441('0x37')]['length']?_0x59c26b[_0x1441('0x37')]:_0x1f5c89[_0x1441('0x33')];if(_0x4faf39['query'][_0x1441('0x42')]){_0x59c26b[_0x1441('0x43')]=[{'all':!![]}];}_0x59c26b=_[_0x1441('0x41')]({},_0x59c26b,_0x4faf39['options']);return db['JscriptyQuestionReport'][_0x1441('0x48')](_0x59c26b)[_0x1441('0x27')](handleEntityNotFound(_0x5e14c9,null))[_0x1441('0x27')](respondWithResult(_0x5e14c9,null))['catch'](handleError(_0x5e14c9,null));};exports[_0x1441('0x49')]=function(_0xfe8874,_0x18b641){return db[_0x1441('0x2e')][_0x1441('0x49')](_0xfe8874[_0x1441('0x4a')],{})['then'](respondWithResult(_0x18b641,0xc9))[_0x1441('0x4b')](handleError(_0x18b641,null));};exports['update']=function(_0x2c99f2,_0x5daea8){if(_0x2c99f2[_0x1441('0x4a')]['id']){delete _0x2c99f2[_0x1441('0x4a')]['id'];}return db['JscriptyQuestionReport']['find']({'where':{'id':_0x2c99f2['params']['id']}})['then'](handleEntityNotFound(_0x5daea8,null))[_0x1441('0x27')](saveUpdates(_0x2c99f2['body'],null))[_0x1441('0x27')](respondWithResult(_0x5daea8,null))[_0x1441('0x4b')](handleError(_0x5daea8,null));};exports[_0x1441('0x26')]=function(_0x41a5de,_0x53f53e){return db['JscriptyQuestionReport'][_0x1441('0x48')]({'where':{'id':_0x41a5de['params']['id']}})[_0x1441('0x27')](handleEntityNotFound(_0x53f53e,null))[_0x1441('0x27')](removeEntity(_0x53f53e,null))[_0x1441('0x4b')](handleError(_0x53f53e,null));};exports[_0x1441('0x4c')]=function(_0x329b09,_0x183524){return db['JscriptyQuestionReport'][_0x1441('0x4c')]()[_0x1441('0x27')](respondWithResult(_0x183524,null))[_0x1441('0x4b')](handleError(_0x183524,null));};
\ No newline at end of file
index f8a0f74..348c112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfff7=['lodash','api','moment','bluebird','path','../../config/environment','./jscriptyQuestionReport.attributes','define','JscriptyQuestionReport','report_jscripty_questions'];(function(_0x87506e,_0x5680ec){var _0x5496a4=function(_0x1e29ab){while(--_0x1e29ab){_0x87506e['push'](_0x87506e['shift']());}};_0x5496a4(++_0x5680ec);}(_0xfff7,0x172));var _0x7fff=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xfff7[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x7fff('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7fff('0x1'));var moment=require(_0x7fff('0x2'));var BPromise=require(_0x7fff('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7fff('0x4'));var rimraf=require('rimraf');var config=require(_0x7fff('0x5'));var attributes=require(_0x7fff('0x6'));module['exports']=function(_0x5c4878,_0x599fdb){return _0x5c4878[_0x7fff('0x7')](_0x7fff('0x8'),attributes,{'tableName':_0x7fff('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ac3=['JscriptyQuestionReport','report_jscripty_questions','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./jscriptyQuestionReport.attributes','exports'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x2ac3,0x19a));var _0x32ac=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x2ac3[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x32ac('0x0'));var util=require(_0x32ac('0x1'));var logger=require('../../config/logger')(_0x32ac('0x2'));var moment=require(_0x32ac('0x3'));var BPromise=require(_0x32ac('0x4'));var rp=require(_0x32ac('0x5'));var fs=require('fs');var path=require(_0x32ac('0x6'));var rimraf=require(_0x32ac('0x7'));var config=require('../../config/environment');var attributes=require(_0x32ac('0x8'));module[_0x32ac('0x9')]=function(_0x8936fb,_0x3e7292){return _0x8936fb['define'](_0x32ac('0xa'),attributes,{'tableName':_0x32ac('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 22ab725..15b1a54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf923=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','result','catch','util','moment'];(function(_0x34812a,_0xdc7fb4){var _0x100ff4=function(_0x1f09c1){while(--_0x1f09c1){_0x34812a['push'](_0x34812a['shift']());}};_0x100ff4(++_0xdc7fb4);}(_0xf923,0x18a));var _0x3f92=function(_0x470f63,_0x48d80b){_0x470f63=_0x470f63-0x0;var _0x4f09e2=_0xf923[_0x470f63];return _0x4f09e2;};'use strict';var _=require('lodash');var util=require(_0x3f92('0x0'));var moment=require(_0x3f92('0x1'));var BPromise=require(_0x3f92('0x2'));var rs=require(_0x3f92('0x3'));var fs=require('fs');var Redis=require(_0x3f92('0x4'));var db=require(_0x3f92('0x5'))['db'];var utils=require(_0x3f92('0x6'));var logger=require(_0x3f92('0x7'))(_0x3f92('0x8'));var config=require(_0x3f92('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3f92('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc0398,_0x2c5c38,_0x339623){return new BPromise(function(_0x49a264,_0x2aca38){return client[_0x3f92('0xb')](_0xc0398,_0x339623)[_0x3f92('0xc')](function(_0x55a1e0){logger[_0x3f92('0xd')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x2c5c38,_0x3f92('0xe'));logger[_0x3f92('0xf')]('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x2c5c38,_0x3f92('0xe'),JSON['stringify'](_0x55a1e0));if(_0x55a1e0[_0x3f92('0x10')]){if(_0x55a1e0[_0x3f92('0x10')][_0x3f92('0x11')]===0x1f4){logger[_0x3f92('0x10')](_0x3f92('0x12'),_0x2c5c38,_0x55a1e0[_0x3f92('0x10')][_0x3f92('0x13')]);return _0x2aca38(_0x55a1e0[_0x3f92('0x10')][_0x3f92('0x13')]);}logger[_0x3f92('0x10')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x2c5c38,_0x55a1e0['error']['message']);return _0x49a264(_0x55a1e0[_0x3f92('0x10')][_0x3f92('0x13')]);}else{logger[_0x3f92('0xd')](_0x3f92('0x12'),_0x2c5c38,_0x3f92('0xe'));_0x49a264(_0x55a1e0[_0x3f92('0x14')][_0x3f92('0x13')]);}})[_0x3f92('0x15')](function(_0x2416cd){logger[_0x3f92('0x10')](_0x3f92('0x12'),_0x2c5c38,_0x2416cd);_0x2aca38(_0x2416cd);});});}
\ No newline at end of file
+var _0x4be3=['message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code','JscriptyQuestionReport,\x20%s,\x20%s'];(function(_0x6929c8,_0x2b1595){var _0x22de85=function(_0x4e759f){while(--_0x4e759f){_0x6929c8['push'](_0x6929c8['shift']());}};_0x22de85(++_0x2b1595);}(_0x4be3,0x17d));var _0x34be=function(_0x5b1e7b,_0x1581ad){_0x5b1e7b=_0x5b1e7b-0x0;var _0x4e6d2a=_0x4be3[_0x5b1e7b];return _0x4e6d2a;};'use strict';var _=require(_0x34be('0x0'));var util=require(_0x34be('0x1'));var moment=require('moment');var BPromise=require(_0x34be('0x2'));var rs=require(_0x34be('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x34be('0x4'));var logger=require(_0x34be('0x5'))(_0x34be('0x6'));var config=require(_0x34be('0x7'));var jayson=require(_0x34be('0x8'));var client=jayson['client'][_0x34be('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1490f6,_0x31a49f,_0x37a00b){return new BPromise(function(_0x390624,_0x5cd388){return client[_0x34be('0xa')](_0x1490f6,_0x37a00b)[_0x34be('0xb')](function(_0x18495e){logger[_0x34be('0xc')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x31a49f,_0x34be('0xd'));logger['debug'](_0x34be('0xe'),_0x31a49f,'request\x20sent',JSON['stringify'](_0x18495e));if(_0x18495e[_0x34be('0xf')]){if(_0x18495e[_0x34be('0xf')][_0x34be('0x10')]===0x1f4){logger[_0x34be('0xf')](_0x34be('0x11'),_0x31a49f,_0x18495e['error']['message']);return _0x5cd388(_0x18495e[_0x34be('0xf')][_0x34be('0x12')]);}logger[_0x34be('0xf')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x31a49f,_0x18495e['error'][_0x34be('0x12')]);return _0x390624(_0x18495e['error'][_0x34be('0x12')]);}else{logger[_0x34be('0xc')](_0x34be('0x11'),_0x31a49f,_0x34be('0xd'));_0x390624(_0x18495e[_0x34be('0x13')][_0x34be('0x12')]);}})[_0x34be('0x14')](function(_0x439ba0){logger['error'](_0x34be('0x11'),_0x31a49f,_0x439ba0);_0x5cd388(_0x439ba0);});});}
\ No newline at end of file
index 14d78bd..96d08db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8ec=['./jscriptySessionReport.controller','get','index','/describe','isAuthenticated','/:id','show','/:id/questions','getQuestions','create','update','path','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x160cd2,_0x1aa35b){var _0x109508=function(_0x3415da){while(--_0x3415da){_0x160cd2['push'](_0x160cd2['shift']());}};_0x109508(++_0x1aa35b);}(_0xd8ec,0x1e7));var _0xcd8e=function(_0x1043ea,_0x22d2bb){_0x1043ea=_0x1043ea-0x0;var _0x3b9cf6=_0xd8ec[_0x1043ea];return _0x3b9cf6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcd8e('0x0'));var timeout=require('connect-timeout');var express=require(_0xcd8e('0x1'));var router=express[_0xcd8e('0x2')]();var fs_extra=require(_0xcd8e('0x3'));var auth=require(_0xcd8e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xcd8e('0x5'));var controller=require(_0xcd8e('0x6'));router[_0xcd8e('0x7')]('/',auth['isAuthenticated'](),controller[_0xcd8e('0x8')]);router['get'](_0xcd8e('0x9'),auth[_0xcd8e('0xa')](),controller['describe']);router[_0xcd8e('0x7')](_0xcd8e('0xb'),auth[_0xcd8e('0xa')](),controller[_0xcd8e('0xc')]);router[_0xcd8e('0x7')](_0xcd8e('0xd'),auth['isAuthenticated'](),controller[_0xcd8e('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xcd8e('0xf')]);router['put'](_0xcd8e('0xb'),auth[_0xcd8e('0xa')](),controller[_0xcd8e('0x10')]);router['delete'](_0xcd8e('0xb'),auth[_0xcd8e('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x06f5=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/questions','getQuestions','post','create','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x20fe4c,_0x33c3f3){var _0x215a03=function(_0x6cbd9){while(--_0x6cbd9){_0x20fe4c['push'](_0x20fe4c['shift']());}};_0x215a03(++_0x33c3f3);}(_0x06f5,0x149));var _0x506f=function(_0x5ce358,_0x43133e){_0x5ce358=_0x5ce358-0x0;var _0x11f49a=_0x06f5[_0x5ce358];return _0x11f49a;};'use strict';var multer=require('multer');var util=require(_0x506f('0x0'));var path=require(_0x506f('0x1'));var timeout=require(_0x506f('0x2'));var express=require(_0x506f('0x3'));var router=express[_0x506f('0x4')]();var fs_extra=require(_0x506f('0x5'));var auth=require(_0x506f('0x6'));var interaction=require(_0x506f('0x7'));var config=require(_0x506f('0x8'));var controller=require('./jscriptySessionReport.controller');router[_0x506f('0x9')]('/',auth[_0x506f('0xa')](),controller[_0x506f('0xb')]);router[_0x506f('0x9')](_0x506f('0xc'),auth[_0x506f('0xa')](),controller[_0x506f('0xd')]);router['get'](_0x506f('0xe'),auth[_0x506f('0xa')](),controller[_0x506f('0xf')]);router[_0x506f('0x9')](_0x506f('0x10'),auth[_0x506f('0xa')](),controller[_0x506f('0x11')]);router[_0x506f('0x12')]('/',auth[_0x506f('0xa')](),controller[_0x506f('0x13')]);router[_0x506f('0x14')](_0x506f('0xe'),auth[_0x506f('0xa')](),controller[_0x506f('0x15')]);router[_0x506f('0x16')](_0x506f('0xe'),auth[_0x506f('0xa')](),controller[_0x506f('0x17')]);module['exports']=router;
\ No newline at end of file
index 9d5051d..5415f66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2000=['endtime','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','exports','DATE','starttime','setDataValue'];(function(_0x18d50f,_0x124aff){var _0x8ce385=function(_0x321962){while(--_0x321962){_0x18d50f['push'](_0x18d50f['shift']());}};_0x8ce385(++_0x124aff);}(_0x2000,0x68));var _0x0200=function(_0x41dc2e,_0x44477a){_0x41dc2e=_0x41dc2e-0x0;var _0x5b6582=_0x2000[_0x41dc2e];return _0x5b6582;};'use strict';var moment=require(_0x0200('0x0'));var Sequelize=require(_0x0200('0x1'));module[_0x0200('0x2')]={'starttime':{'type':Sequelize[_0x0200('0x3')],'set':function(_0x3224b4){this['setDataValue'](_0x0200('0x4'),_0x3224b4);this[_0x0200('0x5')](_0x0200('0x6'),moment()['format'](_0x0200('0x7')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0x0200('0x8')]},'queue':{'type':Sequelize[_0x0200('0x8')]},'uniqueid':{'type':Sequelize[_0x0200('0x8')]},'calleridname':{'type':Sequelize[_0x0200('0x8')]},'calleridnum':{'type':Sequelize[_0x0200('0x8')]},'completed':{'type':Sequelize[_0x0200('0x9')],'defaultValue':![]}};
\ No newline at end of file
+var _0x91ab=['endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','moment','exports','setDataValue','starttime'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x91ab,0x194));var _0xb91a=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0x91ab[_0x424a9a];return _0xa7831c;};'use strict';var moment=require(_0xb91a('0x0'));var Sequelize=require('sequelize');module[_0xb91a('0x1')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x4e2b27){this[_0xb91a('0x2')](_0xb91a('0x3'),_0x4e2b27);this[_0xb91a('0x2')](_0xb91a('0x4'),moment()[_0xb91a('0x5')](_0xb91a('0x6')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0xb91a('0x7')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xb91a('0x7')]},'uniqueid':{'type':Sequelize[_0xb91a('0x7')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb91a('0x7')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 09daf0e..6eb3e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e6=['destroy','then','error','stack','name','send','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','map','VIRTUAL','options','includeAll','JscriptySessionReport','findAll','rows','show','params','include','create','body','catch','find','describe','getQuestions','findOne','JscriptyQuestionReport','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','set','apply','reject','update'];(function(_0x349863,_0x101fb7){var _0x1d93f6=function(_0xb2a316){while(--_0xb2a316){_0x349863['push'](_0x349863['shift']());}};_0x1d93f6(++_0x101fb7);}(_0x55e6,0x163));var _0x655e=function(_0x34f3fe,_0x5312ab){_0x34f3fe=_0x34f3fe-0x0;var _0x25e034=_0x55e6[_0x34f3fe];return _0x25e034;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x655e('0x0'));var zipdir=require(_0x655e('0x1'));var jsonpatch=require(_0x655e('0x2'));var rp=require(_0x655e('0x3'));var moment=require(_0x655e('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x655e('0x5'));var path=require(_0x655e('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x655e('0x7'));var _=require('lodash');var squel=require(_0x655e('0x8'));var crypto=require(_0x655e('0x9'));var jsforce=require(_0x655e('0xa'));var deskjs=require(_0x655e('0xb'));var toCsv=require(_0x655e('0xc'));var querystring=require(_0x655e('0xd'));var Papa=require(_0x655e('0xe'));var Redis=require(_0x655e('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x655e('0x10'));var as=require(_0x655e('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x655e('0x12'));var utils=require(_0x655e('0x13'));var config=require(_0x655e('0x14'));var licenseUtil=require(_0x655e('0x15'));var db=require(_0x655e('0x16'))['db'];function respondWithStatusCode(_0x3f0f85,_0x4875ce){_0x4875ce=_0x4875ce||0xcc;return function(_0x5773be){if(_0x5773be){return _0x3f0f85[_0x655e('0x17')](_0x4875ce);}return _0x3f0f85['status'](_0x4875ce)[_0x655e('0x18')]();};}function respondWithResult(_0x4ea9c6,_0x3fdee3){_0x3fdee3=_0x3fdee3||0xc8;return function(_0x5ccc32){if(_0x5ccc32){return _0x4ea9c6[_0x655e('0x19')](_0x3fdee3)[_0x655e('0x1a')](_0x5ccc32);}};}function respondWithFilteredResult(_0x47260a,_0x28e29f){return function(_0x203100){if(_0x203100){var _0x1c3cec=typeof _0x28e29f['offset']===_0x655e('0x1b')&&typeof _0x28e29f['limit']===_0x655e('0x1b');var _0x1f3167=_0x203100[_0x655e('0x1c')];var _0x483526=_0x1c3cec?0x0:_0x28e29f[_0x655e('0x1d')];var _0x41a9b2=_0x1c3cec?_0x203100[_0x655e('0x1c')]:_0x28e29f[_0x655e('0x1d')]+_0x28e29f[_0x655e('0x1e')];var _0x12f0ca;if(_0x41a9b2>=_0x1f3167){_0x41a9b2=_0x1f3167;_0x12f0ca=0xc8;}else{_0x12f0ca=0xce;}_0x47260a[_0x655e('0x19')](_0x12f0ca);return _0x47260a[_0x655e('0x1f')]('Content-Range',_0x483526+'-'+_0x41a9b2+'/'+_0x1f3167)['json'](_0x203100);}return null;};}function patchUpdates(_0x551c47){return function(_0x4c4353){try{jsonpatch[_0x655e('0x20')](_0x4c4353,_0x551c47,!![]);}catch(_0x250e62){return BPromise[_0x655e('0x21')](_0x250e62);}return _0x4c4353['save']();};}function saveUpdates(_0x3f93f3,_0x1ddffd){return function(_0x389c2f){if(_0x389c2f){return _0x389c2f[_0x655e('0x22')](_0x3f93f3)['then'](function(_0x46e040){return _0x46e040;});}return null;};}function removeEntity(_0x207f0c,_0x166c45){return function(_0x54dd9c){if(_0x54dd9c){return _0x54dd9c[_0x655e('0x23')]()[_0x655e('0x24')](function(){_0x207f0c[_0x655e('0x19')](0xcc)[_0x655e('0x18')]();});}};}function handleEntityNotFound(_0xf528bc,_0x31e7e9){return function(_0x482bd6){if(!_0x482bd6){_0xf528bc[_0x655e('0x17')](0x194);}return _0x482bd6;};}function handleError(_0x2f4c7a,_0x25e48c){_0x25e48c=_0x25e48c||0x1f4;return function(_0x4501b7){logger[_0x655e('0x25')](_0x4501b7[_0x655e('0x26')]);if(_0x4501b7[_0x655e('0x27')]){delete _0x4501b7[_0x655e('0x27')];}_0x2f4c7a[_0x655e('0x19')](_0x25e48c)[_0x655e('0x28')](_0x4501b7);};}exports['index']=function(_0x3f6b68,_0x1204ab){var _0x2074a8={},_0x418e2b={},_0x4b3438={'count':0x0,'rows':[]};var _0x37d6ef=_['map'](db['JscriptySessionReport'][_0x655e('0x29')],function(_0x5b68a5){return{'name':_0x5b68a5[_0x655e('0x2a')],'type':_0x5b68a5[_0x655e('0x2b')]['key']};});_0x418e2b[_0x655e('0x2c')]=_['map'](_0x37d6ef,'name');_0x418e2b[_0x655e('0x2d')]=_[_0x655e('0x2e')](_0x3f6b68['query']);_0x418e2b['filters']=_[_0x655e('0x2f')](_0x418e2b[_0x655e('0x2c')],_0x418e2b[_0x655e('0x2d')]);_0x2074a8[_0x655e('0x30')]=_['intersection'](_0x418e2b['model'],qs[_0x655e('0x31')](_0x3f6b68[_0x655e('0x2d')][_0x655e('0x31')]));_0x2074a8['attributes']=_0x2074a8[_0x655e('0x30')][_0x655e('0x32')]?_0x2074a8['attributes']:_0x418e2b['model'];if(!_0x3f6b68[_0x655e('0x2d')]['hasOwnProperty'](_0x655e('0x33'))){_0x2074a8[_0x655e('0x1e')]=qs[_0x655e('0x1e')](_0x3f6b68['query'][_0x655e('0x1e')]);_0x2074a8['offset']=qs['offset'](_0x3f6b68[_0x655e('0x2d')][_0x655e('0x1d')]);}_0x2074a8[_0x655e('0x34')]=qs[_0x655e('0x35')](_0x3f6b68[_0x655e('0x2d')]['sort']);_0x2074a8[_0x655e('0x36')]=qs[_0x655e('0x37')](_[_0x655e('0x38')](_0x3f6b68[_0x655e('0x2d')],_0x418e2b[_0x655e('0x37')]),_0x37d6ef);if(_0x3f6b68['query'][_0x655e('0x39')]){_0x2074a8[_0x655e('0x36')]=_[_0x655e('0x3a')](_0x2074a8[_0x655e('0x36')],{'$or':_[_0x655e('0x3b')](_0x37d6ef,function(_0x962f2){if(_0x962f2[_0x655e('0x2b')]!==_0x655e('0x3c')){var _0x32a6be={};_0x32a6be[_0x962f2[_0x655e('0x27')]]={'$like':'%'+_0x3f6b68[_0x655e('0x2d')][_0x655e('0x39')]+'%'};return _0x32a6be;}})});}_0x2074a8=_[_0x655e('0x3a')]({},_0x2074a8,_0x3f6b68[_0x655e('0x3d')]);var _0x1f27de={'where':_0x2074a8[_0x655e('0x36')]};return db['JscriptySessionReport'][_0x655e('0x1c')](_0x1f27de)['then'](function(_0x19ceed){_0x4b3438[_0x655e('0x1c')]=_0x19ceed;if(_0x3f6b68[_0x655e('0x2d')][_0x655e('0x3e')]){_0x2074a8['include']=[{'all':!![]}];}return db[_0x655e('0x3f')][_0x655e('0x40')](_0x2074a8);})[_0x655e('0x24')](function(_0x12999a){_0x4b3438[_0x655e('0x41')]=_0x12999a;return _0x4b3438;})[_0x655e('0x24')](respondWithFilteredResult(_0x1204ab,_0x2074a8))['catch'](handleError(_0x1204ab,null));};exports[_0x655e('0x42')]=function(_0x299e75,_0x16fa0a){var _0x463220={'raw':!![],'where':{'id':_0x299e75[_0x655e('0x43')]['id']}},_0x2bcca0={};_0x2bcca0['model']=_['keys'](db['JscriptySessionReport'][_0x655e('0x29')]);_0x2bcca0['query']=_[_0x655e('0x2e')](_0x299e75['query']);_0x2bcca0['filters']=_['intersection'](_0x2bcca0['model'],_0x2bcca0[_0x655e('0x2d')]);_0x463220[_0x655e('0x30')]=_[_0x655e('0x2f')](_0x2bcca0[_0x655e('0x2c')],qs[_0x655e('0x31')](_0x299e75[_0x655e('0x2d')][_0x655e('0x31')]));_0x463220['attributes']=_0x463220[_0x655e('0x30')][_0x655e('0x32')]?_0x463220[_0x655e('0x30')]:_0x2bcca0[_0x655e('0x2c')];if(_0x299e75[_0x655e('0x2d')][_0x655e('0x3e')]){_0x463220[_0x655e('0x44')]=[{'all':!![]}];}_0x463220=_['merge']({},_0x463220,_0x299e75[_0x655e('0x3d')]);return db[_0x655e('0x3f')]['find'](_0x463220)[_0x655e('0x24')](handleEntityNotFound(_0x16fa0a,null))[_0x655e('0x24')](respondWithResult(_0x16fa0a,null))['catch'](handleError(_0x16fa0a,null));};exports['create']=function(_0x2ec5e8,_0x268534){return db[_0x655e('0x3f')][_0x655e('0x45')](_0x2ec5e8[_0x655e('0x46')],{})['then'](respondWithResult(_0x268534,0xc9))[_0x655e('0x47')](handleError(_0x268534,null));};exports['update']=function(_0x506eac,_0x50f2fd){if(_0x506eac[_0x655e('0x46')]['id']){delete _0x506eac[_0x655e('0x46')]['id'];}return db[_0x655e('0x3f')]['find']({'where':{'id':_0x506eac['params']['id']}})[_0x655e('0x24')](handleEntityNotFound(_0x50f2fd,null))[_0x655e('0x24')](saveUpdates(_0x506eac['body'],null))['then'](respondWithResult(_0x50f2fd,null))[_0x655e('0x47')](handleError(_0x50f2fd,null));};exports[_0x655e('0x23')]=function(_0x46f034,_0x3d3e06){return db['JscriptySessionReport'][_0x655e('0x48')]({'where':{'id':_0x46f034[_0x655e('0x43')]['id']}})[_0x655e('0x24')](handleEntityNotFound(_0x3d3e06,null))[_0x655e('0x24')](removeEntity(_0x3d3e06,null))[_0x655e('0x47')](handleError(_0x3d3e06,null));};exports[_0x655e('0x49')]=function(_0x28bb3a,_0x5662f1){return db[_0x655e('0x3f')][_0x655e('0x49')]()['then'](respondWithResult(_0x5662f1,null))[_0x655e('0x47')](handleError(_0x5662f1,null));};exports[_0x655e('0x4a')]=function(_0x2cb039,_0x562ba2,_0x4f8ed8){var _0xb8fb48={'raw':!![],'where':{}};var _0x55ceb6={};var _0x50023b={'count':0x0,'rows':[]};return db[_0x655e('0x3f')][_0x655e('0x4b')]({'where':{'id':_0x2cb039[_0x655e('0x43')]['id']}})[_0x655e('0x24')](handleEntityNotFound(_0x562ba2,null))['then'](function(_0x55a6de){if(_0x55a6de){_0x55ceb6['model']=_[_0x655e('0x2e')](db[_0x655e('0x4c')]['rawAttributes']);_0x55ceb6[_0x655e('0x2d')]=_[_0x655e('0x2e')](_0x2cb039[_0x655e('0x2d')]);_0x55ceb6[_0x655e('0x37')]=_[_0x655e('0x2f')](_0x55ceb6[_0x655e('0x2c')],_0x55ceb6[_0x655e('0x2d')]);_0xb8fb48['attributes']=_['intersection'](_0x55ceb6[_0x655e('0x2c')],qs[_0x655e('0x31')](_0x2cb039[_0x655e('0x2d')]['fields']));_0xb8fb48[_0x655e('0x30')]=_0xb8fb48[_0x655e('0x30')][_0x655e('0x32')]?_0xb8fb48['attributes']:_0x55ceb6['model'];if(!_0x2cb039['query'][_0x655e('0x4d')](_0x655e('0x33'))){_0xb8fb48[_0x655e('0x1e')]=qs[_0x655e('0x1e')](_0x2cb039[_0x655e('0x2d')][_0x655e('0x1e')]);_0xb8fb48[_0x655e('0x1d')]=qs[_0x655e('0x1d')](_0x2cb039[_0x655e('0x2d')][_0x655e('0x1d')]);}_0xb8fb48[_0x655e('0x34')]=qs['sort'](_0x2cb039[_0x655e('0x2d')][_0x655e('0x35')]);_0xb8fb48[_0x655e('0x36')]=qs['filters'](_[_0x655e('0x38')](_0x2cb039[_0x655e('0x2d')],_0x55ceb6[_0x655e('0x37')]));_0xb8fb48['where']['SessionId']=_0x55a6de['id'];if(_0x2cb039[_0x655e('0x2d')][_0x655e('0x39')]){_0xb8fb48['where']=_[_0x655e('0x3a')](_0xb8fb48[_0x655e('0x36')],{'$or':_['map'](_0xb8fb48[_0x655e('0x30')],function(_0x19d131){var _0x3872dc={};_0x3872dc[_0x19d131]={'$like':'%'+_0x2cb039[_0x655e('0x2d')]['filter']+'%'};return _0x3872dc;})});}_0xb8fb48=_[_0x655e('0x3a')]({},_0xb8fb48,_0x2cb039['options']);return db[_0x655e('0x4c')]['count']({'where':_0xb8fb48[_0x655e('0x36')]})[_0x655e('0x24')](function(_0x48aa9f){_0x50023b[_0x655e('0x1c')]=_0x48aa9f;if(_0x2cb039[_0x655e('0x2d')]['includeAll']){_0xb8fb48['include']=[{'all':!![]}];}return db[_0x655e('0x4c')][_0x655e('0x40')](_0xb8fb48);})[_0x655e('0x24')](function(_0x1feca3){_0x50023b[_0x655e('0x41')]=_0x1feca3;return _0x50023b;});}})[_0x655e('0x24')](respondWithFilteredResult(_0x562ba2,_0xb8fb48))[_0x655e('0x47')](handleError(_0x562ba2,null));};
\ No newline at end of file
+var _0x3b43=['save','update','then','destroy','send','map','JscriptySessionReport','rawAttributes','key','model','name','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','JscriptyQuestionReport','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply'];(function(_0x1c9c24,_0x2a517b){var _0x349c69=function(_0x259ff7){while(--_0x259ff7){_0x1c9c24['push'](_0x1c9c24['shift']());}};_0x349c69(++_0x2a517b);}(_0x3b43,0x1aa));var _0x33b4=function(_0x695822,_0x17a3e5){_0x695822=_0x695822-0x0;var _0x570433=_0x3b43[_0x695822];return _0x570433;};'use strict';var emlformat=require(_0x33b4('0x0'));var rimraf=require(_0x33b4('0x1'));var zipdir=require(_0x33b4('0x2'));var jsonpatch=require(_0x33b4('0x3'));var rp=require(_0x33b4('0x4'));var moment=require(_0x33b4('0x5'));var BPromise=require(_0x33b4('0x6'));var Mustache=require(_0x33b4('0x7'));var util=require('util');var path=require('path');var sox=require(_0x33b4('0x8'));var csv=require(_0x33b4('0x9'));var ejs=require(_0x33b4('0xa'));var fs=require('fs');var fs_extra=require(_0x33b4('0xb'));var _=require(_0x33b4('0xc'));var squel=require(_0x33b4('0xd'));var crypto=require(_0x33b4('0xe'));var jsforce=require(_0x33b4('0xf'));var deskjs=require(_0x33b4('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x33b4('0x11'));var authService=require(_0x33b4('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x33b4('0x13'));var logger=require(_0x33b4('0x14'))(_0x33b4('0x15'));var utils=require(_0x33b4('0x16'));var config=require(_0x33b4('0x17'));var licenseUtil=require(_0x33b4('0x18'));var db=require(_0x33b4('0x19'))['db'];function respondWithStatusCode(_0x5cfa63,_0x417771){_0x417771=_0x417771||0xcc;return function(_0x23c6c7){if(_0x23c6c7){return _0x5cfa63[_0x33b4('0x1a')](_0x417771);}return _0x5cfa63[_0x33b4('0x1b')](_0x417771)[_0x33b4('0x1c')]();};}function respondWithResult(_0x3c2e1b,_0x22a233){_0x22a233=_0x22a233||0xc8;return function(_0x12e54a){if(_0x12e54a){return _0x3c2e1b[_0x33b4('0x1b')](_0x22a233)[_0x33b4('0x1d')](_0x12e54a);}};}function respondWithFilteredResult(_0x50d59a,_0x39524a){return function(_0x21a7b5){if(_0x21a7b5){var _0x5eb5f0=typeof _0x39524a[_0x33b4('0x1e')]==='undefined'&&typeof _0x39524a[_0x33b4('0x1f')]==='undefined';var _0x27ffd3=_0x21a7b5[_0x33b4('0x20')];var _0x3dbd39=_0x5eb5f0?0x0:_0x39524a[_0x33b4('0x1e')];var _0x4c4983=_0x5eb5f0?_0x21a7b5[_0x33b4('0x20')]:_0x39524a[_0x33b4('0x1e')]+_0x39524a[_0x33b4('0x1f')];var _0x45e5b3;if(_0x4c4983>=_0x27ffd3){_0x4c4983=_0x27ffd3;_0x45e5b3=0xc8;}else{_0x45e5b3=0xce;}_0x50d59a[_0x33b4('0x1b')](_0x45e5b3);return _0x50d59a[_0x33b4('0x21')](_0x33b4('0x22'),_0x3dbd39+'-'+_0x4c4983+'/'+_0x27ffd3)[_0x33b4('0x1d')](_0x21a7b5);}return null;};}function patchUpdates(_0x1a6416){return function(_0x69c109){try{jsonpatch[_0x33b4('0x23')](_0x69c109,_0x1a6416,!![]);}catch(_0x4a01a7){return BPromise['reject'](_0x4a01a7);}return _0x69c109[_0x33b4('0x24')]();};}function saveUpdates(_0x479165,_0x54a010){return function(_0x5da4db){if(_0x5da4db){return _0x5da4db[_0x33b4('0x25')](_0x479165)[_0x33b4('0x26')](function(_0x3bcd9f){return _0x3bcd9f;});}return null;};}function removeEntity(_0x54dddb,_0x53f5b1){return function(_0xa9839){if(_0xa9839){return _0xa9839[_0x33b4('0x27')]()[_0x33b4('0x26')](function(){_0x54dddb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3186ed,_0x5153b2){return function(_0x58b881){if(!_0x58b881){_0x3186ed['sendStatus'](0x194);}return _0x58b881;};}function handleError(_0x27d5e0,_0x5d2686){_0x5d2686=_0x5d2686||0x1f4;return function(_0x50b11e){logger['error'](_0x50b11e['stack']);if(_0x50b11e['name']){delete _0x50b11e['name'];}_0x27d5e0['status'](_0x5d2686)[_0x33b4('0x28')](_0x50b11e);};}exports['index']=function(_0x5d5589,_0x2e19c7){var _0x508c53={},_0x45c6bc={},_0x1a51f5={'count':0x0,'rows':[]};var _0x487a1d=_[_0x33b4('0x29')](db[_0x33b4('0x2a')][_0x33b4('0x2b')],function(_0x14b8e2){return{'name':_0x14b8e2['fieldName'],'type':_0x14b8e2['type'][_0x33b4('0x2c')]};});_0x45c6bc[_0x33b4('0x2d')]=_[_0x33b4('0x29')](_0x487a1d,_0x33b4('0x2e'));_0x45c6bc[_0x33b4('0x2f')]=_[_0x33b4('0x30')](_0x5d5589[_0x33b4('0x2f')]);_0x45c6bc[_0x33b4('0x31')]=_[_0x33b4('0x32')](_0x45c6bc[_0x33b4('0x2d')],_0x45c6bc['query']);_0x508c53[_0x33b4('0x33')]=_[_0x33b4('0x32')](_0x45c6bc[_0x33b4('0x2d')],qs[_0x33b4('0x34')](_0x5d5589[_0x33b4('0x2f')]['fields']));_0x508c53[_0x33b4('0x33')]=_0x508c53['attributes'][_0x33b4('0x35')]?_0x508c53['attributes']:_0x45c6bc[_0x33b4('0x2d')];if(!_0x5d5589[_0x33b4('0x2f')]['hasOwnProperty'](_0x33b4('0x36'))){_0x508c53['limit']=qs[_0x33b4('0x1f')](_0x5d5589[_0x33b4('0x2f')][_0x33b4('0x1f')]);_0x508c53['offset']=qs['offset'](_0x5d5589[_0x33b4('0x2f')][_0x33b4('0x1e')]);}_0x508c53[_0x33b4('0x37')]=qs[_0x33b4('0x38')](_0x5d5589['query'][_0x33b4('0x38')]);_0x508c53[_0x33b4('0x39')]=qs[_0x33b4('0x31')](_[_0x33b4('0x3a')](_0x5d5589[_0x33b4('0x2f')],_0x45c6bc[_0x33b4('0x31')]),_0x487a1d);if(_0x5d5589[_0x33b4('0x2f')][_0x33b4('0x3b')]){_0x508c53[_0x33b4('0x39')]=_['merge'](_0x508c53[_0x33b4('0x39')],{'$or':_[_0x33b4('0x29')](_0x487a1d,function(_0x5306ab){if(_0x5306ab[_0x33b4('0x3c')]!==_0x33b4('0x3d')){var _0x39fce8={};_0x39fce8[_0x5306ab[_0x33b4('0x2e')]]={'$like':'%'+_0x5d5589[_0x33b4('0x2f')][_0x33b4('0x3b')]+'%'};return _0x39fce8;}})});}_0x508c53=_[_0x33b4('0x3e')]({},_0x508c53,_0x5d5589[_0x33b4('0x3f')]);var _0x129a95={'where':_0x508c53['where']};return db[_0x33b4('0x2a')][_0x33b4('0x20')](_0x129a95)[_0x33b4('0x26')](function(_0x5f37da){_0x1a51f5[_0x33b4('0x20')]=_0x5f37da;if(_0x5d5589[_0x33b4('0x2f')][_0x33b4('0x40')]){_0x508c53[_0x33b4('0x41')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x33b4('0x42')](_0x508c53);})[_0x33b4('0x26')](function(_0x332b62){_0x1a51f5[_0x33b4('0x43')]=_0x332b62;return _0x1a51f5;})['then'](respondWithFilteredResult(_0x2e19c7,_0x508c53))[_0x33b4('0x44')](handleError(_0x2e19c7,null));};exports[_0x33b4('0x45')]=function(_0x40f31e,_0x58e751){var _0x109e3b={'raw':!![],'where':{'id':_0x40f31e[_0x33b4('0x46')]['id']}},_0x1a1c4b={};_0x1a1c4b['model']=_[_0x33b4('0x30')](db['JscriptySessionReport'][_0x33b4('0x2b')]);_0x1a1c4b[_0x33b4('0x2f')]=_[_0x33b4('0x30')](_0x40f31e['query']);_0x1a1c4b[_0x33b4('0x31')]=_['intersection'](_0x1a1c4b[_0x33b4('0x2d')],_0x1a1c4b[_0x33b4('0x2f')]);_0x109e3b['attributes']=_[_0x33b4('0x32')](_0x1a1c4b['model'],qs[_0x33b4('0x34')](_0x40f31e['query'][_0x33b4('0x34')]));_0x109e3b[_0x33b4('0x33')]=_0x109e3b[_0x33b4('0x33')][_0x33b4('0x35')]?_0x109e3b[_0x33b4('0x33')]:_0x1a1c4b['model'];if(_0x40f31e[_0x33b4('0x2f')][_0x33b4('0x40')]){_0x109e3b['include']=[{'all':!![]}];}_0x109e3b=_[_0x33b4('0x3e')]({},_0x109e3b,_0x40f31e['options']);return db['JscriptySessionReport'][_0x33b4('0x47')](_0x109e3b)[_0x33b4('0x26')](handleEntityNotFound(_0x58e751,null))[_0x33b4('0x26')](respondWithResult(_0x58e751,null))[_0x33b4('0x44')](handleError(_0x58e751,null));};exports[_0x33b4('0x48')]=function(_0x6eeafa,_0x5803f5){return db['JscriptySessionReport']['create'](_0x6eeafa['body'],{})['then'](respondWithResult(_0x5803f5,0xc9))['catch'](handleError(_0x5803f5,null));};exports[_0x33b4('0x25')]=function(_0x4a7060,_0x55ae3f){if(_0x4a7060['body']['id']){delete _0x4a7060[_0x33b4('0x49')]['id'];}return db[_0x33b4('0x2a')][_0x33b4('0x47')]({'where':{'id':_0x4a7060[_0x33b4('0x46')]['id']}})['then'](handleEntityNotFound(_0x55ae3f,null))[_0x33b4('0x26')](saveUpdates(_0x4a7060[_0x33b4('0x49')],null))[_0x33b4('0x26')](respondWithResult(_0x55ae3f,null))[_0x33b4('0x44')](handleError(_0x55ae3f,null));};exports['destroy']=function(_0x4652ab,_0x319575){return db[_0x33b4('0x2a')][_0x33b4('0x47')]({'where':{'id':_0x4652ab[_0x33b4('0x46')]['id']}})[_0x33b4('0x26')](handleEntityNotFound(_0x319575,null))[_0x33b4('0x26')](removeEntity(_0x319575,null))[_0x33b4('0x44')](handleError(_0x319575,null));};exports[_0x33b4('0x4a')]=function(_0x5e90f9,_0x3d8c6e){return db[_0x33b4('0x2a')]['describe']()[_0x33b4('0x26')](respondWithResult(_0x3d8c6e,null))[_0x33b4('0x44')](handleError(_0x3d8c6e,null));};exports['getQuestions']=function(_0xf5ee26,_0x2a4e62,_0x44a5f3){var _0x599b8f={'raw':!![],'where':{}};var _0x479a27={};var _0x13dce6={'count':0x0,'rows':[]};return db['JscriptySessionReport']['findOne']({'where':{'id':_0xf5ee26[_0x33b4('0x46')]['id']}})[_0x33b4('0x26')](handleEntityNotFound(_0x2a4e62,null))['then'](function(_0x273152){if(_0x273152){_0x479a27[_0x33b4('0x2d')]=_['keys'](db[_0x33b4('0x4b')][_0x33b4('0x2b')]);_0x479a27[_0x33b4('0x2f')]=_[_0x33b4('0x30')](_0xf5ee26[_0x33b4('0x2f')]);_0x479a27[_0x33b4('0x31')]=_[_0x33b4('0x32')](_0x479a27[_0x33b4('0x2d')],_0x479a27[_0x33b4('0x2f')]);_0x599b8f[_0x33b4('0x33')]=_['intersection'](_0x479a27[_0x33b4('0x2d')],qs['fields'](_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x34')]));_0x599b8f[_0x33b4('0x33')]=_0x599b8f[_0x33b4('0x33')][_0x33b4('0x35')]?_0x599b8f['attributes']:_0x479a27[_0x33b4('0x2d')];if(!_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x4c')]('nolimit')){_0x599b8f['limit']=qs[_0x33b4('0x1f')](_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x1f')]);_0x599b8f['offset']=qs[_0x33b4('0x1e')](_0xf5ee26['query'][_0x33b4('0x1e')]);}_0x599b8f[_0x33b4('0x37')]=qs[_0x33b4('0x38')](_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x38')]);_0x599b8f[_0x33b4('0x39')]=qs[_0x33b4('0x31')](_['pick'](_0xf5ee26[_0x33b4('0x2f')],_0x479a27['filters']));_0x599b8f[_0x33b4('0x39')]['SessionId']=_0x273152['id'];if(_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x3b')]){_0x599b8f['where']=_[_0x33b4('0x3e')](_0x599b8f[_0x33b4('0x39')],{'$or':_[_0x33b4('0x29')](_0x599b8f[_0x33b4('0x33')],function(_0x227de1){var _0x113476={};_0x113476[_0x227de1]={'$like':'%'+_0xf5ee26[_0x33b4('0x2f')]['filter']+'%'};return _0x113476;})});}_0x599b8f=_[_0x33b4('0x3e')]({},_0x599b8f,_0xf5ee26['options']);return db[_0x33b4('0x4b')]['count']({'where':_0x599b8f[_0x33b4('0x39')]})[_0x33b4('0x26')](function(_0x444b4f){_0x13dce6[_0x33b4('0x20')]=_0x444b4f;if(_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x40')]){_0x599b8f[_0x33b4('0x41')]=[{'all':!![]}];}return db[_0x33b4('0x4b')][_0x33b4('0x42')](_0x599b8f);})[_0x33b4('0x26')](function(_0x1efa13){_0x13dce6['rows']=_0x1efa13;return _0x13dce6;});}})[_0x33b4('0x26')](respondWithFilteredResult(_0x2a4e62,_0x599b8f))[_0x33b4('0x44')](handleError(_0x2a4e62,null));};
\ No newline at end of file
index 2662baa..d077244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5496=['util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./jscriptySessionReport.attributes','define','report_jscripty_sessions','lodash'];(function(_0x527c5f,_0x593d0d){var _0x38ae95=function(_0x32585b){while(--_0x32585b){_0x527c5f['push'](_0x527c5f['shift']());}};_0x38ae95(++_0x593d0d);}(_0x5496,0x175));var _0x6549=function(_0x4c2f0a,_0x2c3bf6){_0x4c2f0a=_0x4c2f0a-0x0;var _0x1deb1e=_0x5496[_0x4c2f0a];return _0x1deb1e;};'use strict';var _=require(_0x6549('0x0'));var util=require(_0x6549('0x1'));var logger=require(_0x6549('0x2'))(_0x6549('0x3'));var moment=require(_0x6549('0x4'));var BPromise=require('bluebird');var rp=require(_0x6549('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6549('0x6'));var config=require(_0x6549('0x7'));var attributes=require(_0x6549('0x8'));module['exports']=function(_0x5a4658,_0x43cb17){return _0x5a4658[_0x6549('0x9')]('JscriptySessionReport',attributes,{'tableName':_0x6549('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f9d=['define','JscriptySessionReport','report_jscripty_sessions','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes'];(function(_0x3f4875,_0x1eee06){var _0x1727cf=function(_0x92fc15){while(--_0x92fc15){_0x3f4875['push'](_0x3f4875['shift']());}};_0x1727cf(++_0x1eee06);}(_0x8f9d,0x93));var _0xd8f9=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x8f9d[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xd8f9('0x0'));var util=require('util');var logger=require(_0xd8f9('0x1'))('api');var moment=require(_0xd8f9('0x2'));var BPromise=require(_0xd8f9('0x3'));var rp=require(_0xd8f9('0x4'));var fs=require('fs');var path=require(_0xd8f9('0x5'));var rimraf=require(_0xd8f9('0x6'));var config=require(_0xd8f9('0x7'));var attributes=require(_0xd8f9('0x8'));module['exports']=function(_0x1c37be,_0x24dd1e){return _0x1c37be[_0xd8f9('0x9')](_0xd8f9('0xa'),attributes,{'tableName':_0xd8f9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3c9ddbe..e9ae23d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x37cede,_0x4cb133){var _0x5a3bb4=function(_0x365517){while(--_0x365517){_0x37cede['push'](_0x37cede['shift']());}};_0x5a3bb4(++_0x4cb133);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xf2e3[_0x25e7cb];return _0x375d92;};'use strict';var _=require(_0x3f2e('0x0'));var util=require('util');var moment=require(_0x3f2e('0x1'));var BPromise=require(_0x3f2e('0x2'));var rs=require(_0x3f2e('0x3'));var fs=require('fs');var Redis=require(_0x3f2e('0x4'));var db=require(_0x3f2e('0x5'))['db'];var utils=require(_0x3f2e('0x6'));var logger=require(_0x3f2e('0x7'))(_0x3f2e('0x8'));var config=require(_0x3f2e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3f2e('0xa')][_0x3f2e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c0864,_0xdf499f,_0x12c6e7){return new BPromise(function(_0x11067d,_0x3636f6){return client[_0x3f2e('0xc')](_0x3c0864,_0x12c6e7)[_0x3f2e('0xd')](function(_0x29a6cc){logger[_0x3f2e('0xe')](_0x3f2e('0xf'),_0xdf499f,_0x3f2e('0x10'));logger[_0x3f2e('0x11')](_0x3f2e('0x12'),_0xdf499f,_0x3f2e('0x10'),JSON[_0x3f2e('0x13')](_0x29a6cc));if(_0x29a6cc[_0x3f2e('0x14')]){if(_0x29a6cc[_0x3f2e('0x14')]['code']===0x1f4){logger[_0x3f2e('0x14')](_0x3f2e('0xf'),_0xdf499f,_0x29a6cc['error'][_0x3f2e('0x15')]);return _0x3636f6(_0x29a6cc[_0x3f2e('0x14')][_0x3f2e('0x15')]);}logger[_0x3f2e('0x14')](_0x3f2e('0xf'),_0xdf499f,_0x29a6cc['error'][_0x3f2e('0x15')]);return _0x11067d(_0x29a6cc[_0x3f2e('0x14')][_0x3f2e('0x15')]);}else{logger['info'](_0x3f2e('0xf'),_0xdf499f,_0x3f2e('0x10'));_0x11067d(_0x29a6cc[_0x3f2e('0x16')][_0x3f2e('0x15')]);}})[_0x3f2e('0x17')](function(_0x2fef73){logger[_0x3f2e('0x14')](_0x3f2e('0xf'),_0xdf499f,_0x2fef73);_0x3636f6(_0x2fef73);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x1c1ee9,_0x12f2a4){var _0x3b2a63=function(_0x356031){while(--_0x356031){_0x1c1ee9['push'](_0x1c1ee9['shift']());}};_0x3b2a63(++_0x12f2a4);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0xc4aa[_0x273c39];return _0x46d6b5;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 1e41e34..f017824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6b5=['downloadLogFile','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','index','put','isAuthenticated','update'];(function(_0x19616a,_0x545c46){var _0x57bfb4=function(_0x9ab37b){while(--_0x9ab37b){_0x19616a['push'](_0x19616a['shift']());}};_0x57bfb4(++_0x545c46);}(_0xd6b5,0xfd));var _0x5d6b=function(_0x139f7a,_0x248510){_0x139f7a=_0x139f7a-0x0;var _0x1c76f4=_0xd6b5[_0x139f7a];return _0x1c76f4;};'use strict';var multer=require(_0x5d6b('0x0'));var util=require('util');var path=require(_0x5d6b('0x1'));var timeout=require(_0x5d6b('0x2'));var express=require(_0x5d6b('0x3'));var router=express['Router']();var fs_extra=require(_0x5d6b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5d6b('0x5'));var config=require(_0x5d6b('0x6'));var controller=require('./license.controller');router['get']('/',controller[_0x5d6b('0x7')]);router[_0x5d6b('0x8')]('/:id',auth[_0x5d6b('0x9')](),controller[_0x5d6b('0xa')]);router['get']('/download_log_file',auth[_0x5d6b('0x9')](),controller[_0x5d6b('0xb')]);module['exports']=router;
\ No newline at end of file
+var _0x29e1=['put','isAuthenticated','update','downloadLogFile','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','get'];(function(_0x1312f9,_0x38b964){var _0x3e0d7a=function(_0x5d57a1){while(--_0x5d57a1){_0x1312f9['push'](_0x1312f9['shift']());}};_0x3e0d7a(++_0x38b964);}(_0x29e1,0x1bd));var _0x129e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29e1[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x129e('0x0'));var util=require(_0x129e('0x1'));var path=require('path');var timeout=require(_0x129e('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x129e('0x3'));var auth=require(_0x129e('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./license.controller');router[_0x129e('0x5')]('/',controller['index']);router[_0x129e('0x6')]('/:id',auth[_0x129e('0x7')](),controller[_0x129e('0x8')]);router[_0x129e('0x5')]('/download_log_file',auth[_0x129e('0x7')](),controller[_0x129e('0x9')]);module[_0x129e('0xa')]=router;
\ No newline at end of file
index aa3a224..9d19680 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca9e=['INTEGER','sequelize','exports','STRING'];(function(_0x70c97a,_0xd4d263){var _0x5cb362=function(_0x163f30){while(--_0x163f30){_0x70c97a['push'](_0x70c97a['shift']());}};_0x5cb362(++_0xd4d263);}(_0xca9e,0x19d));var _0xeca9=function(_0x1950e1,_0x25e7b3){_0x1950e1=_0x1950e1-0x0;var _0x4b443d=_0xca9e[_0x1950e1];return _0x4b443d;};'use strict';var Sequelize=require(_0xeca9('0x0'));module[_0xeca9('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0xeca9('0x2')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0xeca9('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x261c=['TEXT','STRING','exports'];(function(_0x36e362,_0x16dafa){var _0x327b78=function(_0x19a526){while(--_0x19a526){_0x36e362['push'](_0x36e362['shift']());}};_0x327b78(++_0x16dafa);}(_0x261c,0x1ac));var _0xc261=function(_0x33bb07,_0x5b1849){_0x33bb07=_0x33bb07-0x0;var _0x481c81=_0x261c[_0x33bb07];return _0x481c81;};'use strict';var Sequelize=require('sequelize');module[_0xc261('0x0')]={'license':{'type':Sequelize[_0xc261('0x1')]},'data1':{'type':Sequelize[_0xc261('0x2')]},'data2':{'type':Sequelize[_0xc261('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 065da69..baffde2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c22=['demo','downloadLogFile','join','log','xcally','Content-disposition','attachment;\x20filename=','text/plain','download','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','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','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','../../config/license/util','model','keys','License','rawAttributes','query','intersection','attributes','fields','length','merge','options','getLicense','catch','body','params','get','checkLicense','key'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x5c22,0x97));var _0x25c2=function(_0x6a58bb,_0x3e6845){_0x6a58bb=_0x6a58bb-0x0;var _0x407f34=_0x5c22[_0x6a58bb];return _0x407f34;};'use strict';var emlformat=require(_0x25c2('0x0'));var rimraf=require(_0x25c2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x25c2('0x2'));var rp=require('request-promise');var moment=require(_0x25c2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x25c2('0x4'));var util=require(_0x25c2('0x5'));var path=require(_0x25c2('0x6'));var sox=require(_0x25c2('0x7'));var csv=require(_0x25c2('0x8'));var ejs=require(_0x25c2('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x25c2('0xa'));var crypto=require(_0x25c2('0xb'));var jsforce=require(_0x25c2('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x25c2('0x8'));var querystring=require(_0x25c2('0xd'));var Papa=require(_0x25c2('0xe'));var Redis=require('ioredis');var authService=require(_0x25c2('0xf'));var qs=require(_0x25c2('0x10'));var as=require(_0x25c2('0x11'));var hardwareService=require(_0x25c2('0x12'));var logger=require(_0x25c2('0x13'))(_0x25c2('0x14'));var utils=require(_0x25c2('0x15'));var config=require(_0x25c2('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x25c2('0x17'))['db'];function respondWithStatusCode(_0x39d999,_0x1d3b66){_0x1d3b66=_0x1d3b66||0xcc;return function(_0x58afbd){if(_0x58afbd){return _0x39d999['sendStatus'](_0x1d3b66);}return _0x39d999['status'](_0x1d3b66)[_0x25c2('0x18')]();};}function respondWithResult(_0x57a9bb,_0x93fcac){_0x93fcac=_0x93fcac||0xc8;return function(_0x4f75f0){if(_0x4f75f0){return _0x57a9bb[_0x25c2('0x19')](_0x93fcac)['json'](_0x4f75f0);}};}function respondWithFilteredResult(_0x425934,_0x571a15){return function(_0x21e3ba){if(_0x21e3ba){var _0x41e3eb=typeof _0x571a15[_0x25c2('0x1a')]===_0x25c2('0x1b')&&typeof _0x571a15[_0x25c2('0x1c')]===_0x25c2('0x1b');var _0x12dac6=_0x21e3ba['count'];var _0x4215d5=_0x41e3eb?0x0:_0x571a15[_0x25c2('0x1a')];var _0x1bb699=_0x41e3eb?_0x21e3ba[_0x25c2('0x1d')]:_0x571a15[_0x25c2('0x1a')]+_0x571a15['limit'];var _0x234ac2;if(_0x1bb699>=_0x12dac6){_0x1bb699=_0x12dac6;_0x234ac2=0xc8;}else{_0x234ac2=0xce;}_0x425934[_0x25c2('0x19')](_0x234ac2);return _0x425934[_0x25c2('0x1e')](_0x25c2('0x1f'),_0x4215d5+'-'+_0x1bb699+'/'+_0x12dac6)[_0x25c2('0x20')](_0x21e3ba);}return null;};}function patchUpdates(_0x3f501f){return function(_0xcb6ed8){try{jsonpatch[_0x25c2('0x21')](_0xcb6ed8,_0x3f501f,!![]);}catch(_0x568a50){return BPromise[_0x25c2('0x22')](_0x568a50);}return _0xcb6ed8['save']();};}function saveUpdates(_0x57fcc6,_0x1d6504){return function(_0x1f0712){if(_0x1f0712){return _0x1f0712[_0x25c2('0x23')](_0x57fcc6)[_0x25c2('0x24')](function(_0x35e16a){return _0x35e16a;});}return null;};}function removeEntity(_0x3a1288,_0x169e14){return function(_0x42c7ac){if(_0x42c7ac){return _0x42c7ac[_0x25c2('0x25')]()[_0x25c2('0x24')](function(){_0x3a1288[_0x25c2('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x258998,_0x32c7e5){return function(_0x53cec0){if(!_0x53cec0){_0x258998[_0x25c2('0x26')](0x194);}return _0x53cec0;};}function handleError(_0x4da365,_0x3762e9){_0x3762e9=_0x3762e9||0x1f4;return function(_0x140642){logger[_0x25c2('0x27')](_0x140642[_0x25c2('0x28')]);if(_0x140642[_0x25c2('0x29')]){delete _0x140642['name'];}_0x4da365[_0x25c2('0x19')](_0x3762e9)[_0x25c2('0x2a')](_0x140642);};}var utilLicense=require(_0x25c2('0x2b'));exports['index']=function(_0x5f2ad9,_0x337ddb){var _0x2f1f90={'raw':!![],'where':{'id':0x1}},_0x15d15b={};_0x15d15b[_0x25c2('0x2c')]=_[_0x25c2('0x2d')](db[_0x25c2('0x2e')][_0x25c2('0x2f')]);_0x15d15b[_0x25c2('0x30')]=_['keys'](_0x5f2ad9['query']);_0x15d15b['filters']=_[_0x25c2('0x31')](_0x15d15b[_0x25c2('0x2c')],_0x15d15b[_0x25c2('0x30')]);_0x2f1f90[_0x25c2('0x32')]=_['intersection'](_0x15d15b[_0x25c2('0x2c')],qs[_0x25c2('0x33')](_0x5f2ad9[_0x25c2('0x30')][_0x25c2('0x33')]));_0x2f1f90[_0x25c2('0x32')]=_0x2f1f90[_0x25c2('0x32')][_0x25c2('0x34')]?_0x2f1f90[_0x25c2('0x32')]:_0x15d15b[_0x25c2('0x2c')];_0x2f1f90=_[_0x25c2('0x35')]({},_0x2f1f90,_0x5f2ad9[_0x25c2('0x36')]);return utilLicense[_0x25c2('0x37')](_0x2f1f90)[_0x25c2('0x24')](respondWithResult(_0x337ddb,null))[_0x25c2('0x38')](handleError(_0x337ddb,null));};exports[_0x25c2('0x23')]=function(_0x204252,_0x1e6f2c){if(_0x204252[_0x25c2('0x39')]['id']){delete _0x204252['body']['id'];}return db[_0x25c2('0x2e')]['find']({'where':{'id':_0x204252[_0x25c2('0x3a')]['id']}})[_0x25c2('0x24')](handleEntityNotFound(_0x1e6f2c,null))[_0x25c2('0x24')](function(_0x91faf){var _0x21b92b=_0x91faf[_0x25c2('0x3b')]({'plain':!![]});return utilLicense[_0x25c2('0x3c')](_0x21b92b,_0x204252['body'][_0x25c2('0x3d')]);})[_0x25c2('0x24')](function(_0x1589bd){if(!_0x1589bd[_0x25c2('0x3e')]){return saveUpdates(_0x204252[_0x25c2('0x39')],null);}return _0x1589bd;})[_0x25c2('0x24')](respondWithResult(_0x1e6f2c,null))[_0x25c2('0x38')](handleError(_0x1e6f2c,null));};exports[_0x25c2('0x3f')]=function(_0x46da2e,_0x595b6d){var _0x4a38ac='license-info.log';var _0x1635e2=path[_0x25c2('0x40')]('/var',_0x25c2('0x41'),_0x25c2('0x42'),_0x4a38ac);_0x595b6d['setHeader'](_0x25c2('0x43'),_0x25c2('0x44')+_0x4a38ac);_0x595b6d[_0x25c2('0x1e')]('Content-Type',_0x25c2('0x45'));_0x595b6d[_0x25c2('0x46')](_0x1635e2);};
\ No newline at end of file
+var _0x018d=['find','params','get','checkLicense','key','demo','catch','downloadLogFile','license-info.log','join','/var','log','xcally','setHeader','Content-disposition','attachment;\x20filename=','Content-Type','download','eml-format','rimraf','request-promise','moment','mustache','path','sox','fs-extra','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','index','model','keys','License','rawAttributes','query','filters','intersection','attributes','fields','length','merge','options','getLicense','body'];(function(_0x587693,_0x27fe90){var _0x510a1a=function(_0x290f71){while(--_0x290f71){_0x587693['push'](_0x587693['shift']());}};_0x510a1a(++_0x27fe90);}(_0x018d,0x9e));var _0xd018=function(_0x2a5fa1,_0x1752c5){_0x2a5fa1=_0x2a5fa1-0x0;var _0x134572=_0x018d[_0x2a5fa1];return _0x134572;};'use strict';var emlformat=require(_0xd018('0x0'));var rimraf=require(_0xd018('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd018('0x2'));var moment=require(_0xd018('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd018('0x4'));var util=require('util');var path=require(_0xd018('0x5'));var sox=require(_0xd018('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd018('0x7'));var _=require('lodash');var squel=require(_0xd018('0x8'));var crypto=require('crypto');var jsforce=require(_0xd018('0x9'));var deskjs=require(_0xd018('0xa'));var toCsv=require(_0xd018('0xb'));var querystring=require('querystring');var Papa=require(_0xd018('0xc'));var Redis=require(_0xd018('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd018('0xe'));var as=require(_0xd018('0xf'));var hardwareService=require(_0xd018('0x10'));var logger=require('../../config/logger')(_0xd018('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd018('0x12'));var db=require(_0xd018('0x13'))['db'];function respondWithStatusCode(_0x228a1a,_0x386e80){_0x386e80=_0x386e80||0xcc;return function(_0x38fe1f){if(_0x38fe1f){return _0x228a1a[_0xd018('0x14')](_0x386e80);}return _0x228a1a[_0xd018('0x15')](_0x386e80)['end']();};}function respondWithResult(_0x8770c9,_0x7944a0){_0x7944a0=_0x7944a0||0xc8;return function(_0x35b54b){if(_0x35b54b){return _0x8770c9[_0xd018('0x15')](_0x7944a0)[_0xd018('0x16')](_0x35b54b);}};}function respondWithFilteredResult(_0x1ae3c8,_0x59f8ec){return function(_0x32012f){if(_0x32012f){var _0x2ef2e4=typeof _0x59f8ec[_0xd018('0x17')]===_0xd018('0x18')&&typeof _0x59f8ec[_0xd018('0x19')]===_0xd018('0x18');var _0x385eeb=_0x32012f['count'];var _0x308add=_0x2ef2e4?0x0:_0x59f8ec[_0xd018('0x17')];var _0x2bceed=_0x2ef2e4?_0x32012f['count']:_0x59f8ec[_0xd018('0x17')]+_0x59f8ec[_0xd018('0x19')];var _0x4866e1;if(_0x2bceed>=_0x385eeb){_0x2bceed=_0x385eeb;_0x4866e1=0xc8;}else{_0x4866e1=0xce;}_0x1ae3c8['status'](_0x4866e1);return _0x1ae3c8[_0xd018('0x1a')](_0xd018('0x1b'),_0x308add+'-'+_0x2bceed+'/'+_0x385eeb)[_0xd018('0x16')](_0x32012f);}return null;};}function patchUpdates(_0x5901c6){return function(_0x1a3a52){try{jsonpatch[_0xd018('0x1c')](_0x1a3a52,_0x5901c6,!![]);}catch(_0x2306ba){return BPromise[_0xd018('0x1d')](_0x2306ba);}return _0x1a3a52['save']();};}function saveUpdates(_0x190fb6,_0x2ace2f){return function(_0xc53efb){if(_0xc53efb){return _0xc53efb[_0xd018('0x1e')](_0x190fb6)[_0xd018('0x1f')](function(_0x5d7413){return _0x5d7413;});}return null;};}function removeEntity(_0x264da0,_0x230864){return function(_0x2b51ff){if(_0x2b51ff){return _0x2b51ff[_0xd018('0x20')]()[_0xd018('0x1f')](function(){_0x264da0['status'](0xcc)[_0xd018('0x21')]();});}};}function handleEntityNotFound(_0x2f3090,_0x333649){return function(_0x16d6e9){if(!_0x16d6e9){_0x2f3090[_0xd018('0x14')](0x194);}return _0x16d6e9;};}function handleError(_0x2405be,_0x5d125f){_0x5d125f=_0x5d125f||0x1f4;return function(_0xdbb7d0){logger[_0xd018('0x22')](_0xdbb7d0[_0xd018('0x23')]);if(_0xdbb7d0[_0xd018('0x24')]){delete _0xdbb7d0['name'];}_0x2405be[_0xd018('0x15')](_0x5d125f)['send'](_0xdbb7d0);};}var utilLicense=require(_0xd018('0x12'));exports[_0xd018('0x25')]=function(_0x3a68f3,_0x549b3b){var _0x4d68d1={'raw':!![],'where':{'id':0x1}},_0x374094={};_0x374094[_0xd018('0x26')]=_[_0xd018('0x27')](db[_0xd018('0x28')][_0xd018('0x29')]);_0x374094['query']=_[_0xd018('0x27')](_0x3a68f3[_0xd018('0x2a')]);_0x374094[_0xd018('0x2b')]=_[_0xd018('0x2c')](_0x374094[_0xd018('0x26')],_0x374094[_0xd018('0x2a')]);_0x4d68d1[_0xd018('0x2d')]=_['intersection'](_0x374094[_0xd018('0x26')],qs[_0xd018('0x2e')](_0x3a68f3[_0xd018('0x2a')][_0xd018('0x2e')]));_0x4d68d1['attributes']=_0x4d68d1[_0xd018('0x2d')][_0xd018('0x2f')]?_0x4d68d1[_0xd018('0x2d')]:_0x374094[_0xd018('0x26')];_0x4d68d1=_[_0xd018('0x30')]({},_0x4d68d1,_0x3a68f3[_0xd018('0x31')]);return utilLicense[_0xd018('0x32')](_0x4d68d1)[_0xd018('0x1f')](respondWithResult(_0x549b3b,null))['catch'](handleError(_0x549b3b,null));};exports[_0xd018('0x1e')]=function(_0x1461bf,_0x26fd99){if(_0x1461bf[_0xd018('0x33')]['id']){delete _0x1461bf[_0xd018('0x33')]['id'];}return db[_0xd018('0x28')][_0xd018('0x34')]({'where':{'id':_0x1461bf[_0xd018('0x35')]['id']}})[_0xd018('0x1f')](handleEntityNotFound(_0x26fd99,null))[_0xd018('0x1f')](function(_0x57dfe8){var _0x4f1c27=_0x57dfe8[_0xd018('0x36')]({'plain':!![]});return utilLicense[_0xd018('0x37')](_0x4f1c27,_0x1461bf[_0xd018('0x33')][_0xd018('0x38')]);})[_0xd018('0x1f')](function(_0x36cfa8){if(!_0x36cfa8[_0xd018('0x39')]){return saveUpdates(_0x1461bf['body'],null);}return _0x36cfa8;})['then'](respondWithResult(_0x26fd99,null))[_0xd018('0x3a')](handleError(_0x26fd99,null));};exports[_0xd018('0x3b')]=function(_0x59b504,_0x513e8d){var _0x5a5f6f=_0xd018('0x3c');var _0x4ac9fc=path[_0xd018('0x3d')](_0xd018('0x3e'),_0xd018('0x3f'),_0xd018('0x40'),_0x5a5f6f);_0x513e8d[_0xd018('0x41')](_0xd018('0x42'),_0xd018('0x43')+_0x5a5f6f);_0x513e8d[_0xd018('0x1a')](_0xd018('0x44'),'text/plain');_0x513e8d[_0xd018('0x45')](_0x4ac9fc);};
\ No newline at end of file
index 6298a0a..340c02a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eac=['path','rimraf','../../config/environment','./license.attributes','exports','License','license','util','api','moment','bluebird','request-promise'];(function(_0x56d20e,_0x217c31){var _0x18b27a=function(_0x5d68bb){while(--_0x5d68bb){_0x56d20e['push'](_0x56d20e['shift']());}};_0x18b27a(++_0x217c31);}(_0x8eac,0x13f));var _0xc8ea=function(_0x3e469e,_0x334923){_0x3e469e=_0x3e469e-0x0;var _0x33d855=_0x8eac[_0x3e469e];return _0x33d855;};'use strict';var _=require('lodash');var util=require(_0xc8ea('0x0'));var logger=require('../../config/logger')(_0xc8ea('0x1'));var moment=require(_0xc8ea('0x2'));var BPromise=require(_0xc8ea('0x3'));var rp=require(_0xc8ea('0x4'));var fs=require('fs');var path=require(_0xc8ea('0x5'));var rimraf=require(_0xc8ea('0x6'));var config=require(_0xc8ea('0x7'));var attributes=require(_0xc8ea('0x8'));module[_0xc8ea('0x9')]=function(_0x5be89a,_0x23c6e9){return _0x5be89a['define'](_0xc8ea('0xa'),attributes,{'tableName':_0xc8ea('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1327=['request-promise','../../config/environment','./license.attributes','exports','License','license','lodash','util','../../config/logger','api','moment'];(function(_0xe770ee,_0x537d4b){var _0x14979b=function(_0x2ae936){while(--_0x2ae936){_0xe770ee['push'](_0xe770ee['shift']());}};_0x14979b(++_0x537d4b);}(_0x1327,0x17c));var _0x7132=function(_0x38e0f0,_0xad367f){_0x38e0f0=_0x38e0f0-0x0;var _0xf64172=_0x1327[_0x38e0f0];return _0xf64172;};'use strict';var _=require(_0x7132('0x0'));var util=require(_0x7132('0x1'));var logger=require(_0x7132('0x2'))(_0x7132('0x3'));var moment=require(_0x7132('0x4'));var BPromise=require('bluebird');var rp=require(_0x7132('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7132('0x6'));var attributes=require(_0x7132('0x7'));module[_0x7132('0x8')]=function(_0xdc5c28,_0x55b789){return _0xdc5c28['define'](_0x7132('0x9'),attributes,{'tableName':_0x7132('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b632e97..f397a3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x292c=['License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','info'];(function(_0x378cb1,_0x32a374){var _0x31e5d3=function(_0x43b256){while(--_0x43b256){_0x378cb1['push'](_0x378cb1['shift']());}};_0x31e5d3(++_0x32a374);}(_0x292c,0x18e));var _0xc292=function(_0x1f44e4,_0x22d9fd){_0x1f44e4=_0x1f44e4-0x0;var _0x591989=_0x292c[_0x1f44e4];return _0x591989;};'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('../../mysqldb')['db'];var utils=require(_0xc292('0x5'));var logger=require(_0xc292('0x6'))('rpc');var config=require(_0xc292('0x7'));var jayson=require(_0xc292('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x104a82,_0x5ba3ee,_0x5f12d7){return new BPromise(function(_0x2aaa11,_0x327331){return client['request'](_0x104a82,_0x5f12d7)['then'](function(_0x51f8f0){logger[_0xc292('0x9')](_0xc292('0xa'),_0x5ba3ee,_0xc292('0xb'));logger[_0xc292('0xc')](_0xc292('0xd'),_0x5ba3ee,_0xc292('0xb'),JSON['stringify'](_0x51f8f0));if(_0x51f8f0[_0xc292('0xe')]){if(_0x51f8f0['error']['code']===0x1f4){logger[_0xc292('0xe')]('License,\x20%s,\x20%s',_0x5ba3ee,_0x51f8f0[_0xc292('0xe')][_0xc292('0xf')]);return _0x327331(_0x51f8f0[_0xc292('0xe')][_0xc292('0xf')]);}logger[_0xc292('0xe')](_0xc292('0xa'),_0x5ba3ee,_0x51f8f0['error'][_0xc292('0xf')]);return _0x2aaa11(_0x51f8f0[_0xc292('0xe')]['message']);}else{logger[_0xc292('0x9')](_0xc292('0xa'),_0x5ba3ee,_0xc292('0xb'));_0x2aaa11(_0x51f8f0['result'][_0xc292('0xf')]);}})[_0xc292('0x10')](function(_0x2ab66f){logger[_0xc292('0xe')](_0xc292('0xa'),_0x5ba3ee,_0x2ab66f);_0x327331(_0x2ab66f);});});}
\ No newline at end of file
+var _0x5ca4=['catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','License,\x20%s,\x20%s','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x3fc970,_0x713e9a){var _0x4a21ec=function(_0x51009d){while(--_0x51009d){_0x3fc970['push'](_0x3fc970['shift']());}};_0x4a21ec(++_0x713e9a);}(_0x5ca4,0x1e5));var _0x45ca=function(_0x2afc92,_0x3e61d0){_0x2afc92=_0x2afc92-0x0;var _0x7c8fba=_0x5ca4[_0x2afc92];return _0x7c8fba;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x45ca('0x0'));var BPromise=require(_0x45ca('0x1'));var rs=require(_0x45ca('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x45ca('0x3'))['db'];var utils=require(_0x45ca('0x4'));var logger=require(_0x45ca('0x5'))('rpc');var config=require(_0x45ca('0x6'));var jayson=require(_0x45ca('0x7'));var client=jayson[_0x45ca('0x8')][_0x45ca('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x24ad6f,_0x3b05eb,_0x1a40a2){return new BPromise(function(_0x495f9a,_0x358232){return client[_0x45ca('0xa')](_0x24ad6f,_0x1a40a2)[_0x45ca('0xb')](function(_0x1f5433){logger['info'](_0x45ca('0xc'),_0x3b05eb,'request\x20sent');logger[_0x45ca('0xd')](_0x45ca('0xe'),_0x3b05eb,_0x45ca('0xf'),JSON[_0x45ca('0x10')](_0x1f5433));if(_0x1f5433[_0x45ca('0x11')]){if(_0x1f5433['error'][_0x45ca('0x12')]===0x1f4){logger[_0x45ca('0x11')]('License,\x20%s,\x20%s',_0x3b05eb,_0x1f5433['error'][_0x45ca('0x13')]);return _0x358232(_0x1f5433[_0x45ca('0x11')][_0x45ca('0x13')]);}logger[_0x45ca('0x11')](_0x45ca('0xc'),_0x3b05eb,_0x1f5433[_0x45ca('0x11')][_0x45ca('0x13')]);return _0x495f9a(_0x1f5433['error'][_0x45ca('0x13')]);}else{logger['info']('License,\x20%s,\x20%s',_0x3b05eb,'request\x20sent');_0x495f9a(_0x1f5433[_0x45ca('0x14')]['message']);}})[_0x45ca('0x15')](function(_0x271ad7){logger['error'](_0x45ca('0xc'),_0x3b05eb,_0x271ad7);_0x358232(_0x271ad7);});});}
\ No newline at end of file
index 679c228..48c100b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x332e=['getAgents','post','addAnswer','create','addImap','addSmtp','addInteraction','/:id/applications','addApplications','/:id/send','addAgents','put','update','delete','removeDispositions','removeAnswers','removeImap','destroy','removeAgents','util','connect-timeout','Router','../../components/auth/service','./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0x332e,0x121));var _0xe332=function(_0x5a36dd,_0x5b2d2c){_0x5a36dd=_0x5a36dd-0x0;var _0x15503d=_0x332e[_0x5a36dd];return _0x15503d;};'use strict';var multer=require('multer');var util=require(_0xe332('0x0'));var path=require('path');var timeout=require(_0xe332('0x1'));var express=require('express');var router=express[_0xe332('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xe332('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe332('0x4'));router[_0xe332('0x5')]('/',auth[_0xe332('0x6')](),controller[_0xe332('0x7')]);router[_0xe332('0x5')](_0xe332('0x8'),auth[_0xe332('0x6')](),controller[_0xe332('0x9')]);router['get'](_0xe332('0xa'),auth[_0xe332('0x6')](),controller[_0xe332('0xb')]);router[_0xe332('0x5')](_0xe332('0xc'),auth[_0xe332('0x6')](),controller['getDispositions']);router['get'](_0xe332('0xd'),auth[_0xe332('0x6')](),controller['getAnswers']);router[_0xe332('0x5')](_0xe332('0xe'),auth[_0xe332('0x6')](),controller[_0xe332('0xf')]);router[_0xe332('0x5')](_0xe332('0x10'),auth['isAuthenticated'](),controller[_0xe332('0x11')]);router['get'](_0xe332('0x12'),auth['isAuthenticated'](),controller[_0xe332('0x13')]);router[_0xe332('0x5')]('/:id/applications',auth[_0xe332('0x6')](),controller[_0xe332('0x14')]);router[_0xe332('0x5')](_0xe332('0x15'),auth[_0xe332('0x6')](),controller[_0xe332('0x16')]);router[_0xe332('0x5')](_0xe332('0x17'),auth[_0xe332('0x6')](),controller[_0xe332('0x18')]);router[_0xe332('0x5')](_0xe332('0x19'),auth['isAuthenticated'](),controller[_0xe332('0x1a')]);router[_0xe332('0x1b')](_0xe332('0xc'),auth[_0xe332('0x6')](),controller['addDisposition']);router[_0xe332('0x1b')]('/:id/canned_answers',auth[_0xe332('0x6')](),controller[_0xe332('0x1c')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe332('0x1d')]);router[_0xe332('0x1b')](_0xe332('0xe'),auth[_0xe332('0x6')](),controller[_0xe332('0x1e')]);router[_0xe332('0x1b')](_0xe332('0x10'),auth[_0xe332('0x6')](),controller[_0xe332('0x1f')]);router[_0xe332('0x1b')](_0xe332('0x12'),auth[_0xe332('0x6')](),controller[_0xe332('0x20')]);router[_0xe332('0x1b')](_0xe332('0x21'),auth[_0xe332('0x6')](),controller[_0xe332('0x22')]);router[_0xe332('0x1b')](_0xe332('0x23'),auth['isAuthenticated'](),controller['send']);router[_0xe332('0x1b')](_0xe332('0x19'),auth['isAuthenticated'](),controller[_0xe332('0x24')]);router[_0xe332('0x25')](_0xe332('0xa'),auth['isAuthenticated'](),controller[_0xe332('0x26')]);router[_0xe332('0x27')](_0xe332('0xc'),auth['isAuthenticated'](),controller[_0xe332('0x28')]);router[_0xe332('0x27')](_0xe332('0xd'),auth['isAuthenticated'](),controller[_0xe332('0x29')]);router['delete'](_0xe332('0xe'),auth[_0xe332('0x6')](),controller[_0xe332('0x2a')]);router[_0xe332('0x27')](_0xe332('0x10'),auth[_0xe332('0x6')](),controller['removeSmtp']);router[_0xe332('0x27')]('/:id',auth['isAuthenticated'](),controller[_0xe332('0x2b')]);router[_0xe332('0x27')](_0xe332('0x19'),auth[_0xe332('0x6')](),controller[_0xe332('0x2c')]);module['exports']=router;
\ No newline at end of file
+var _0x7a13=['/:id/messages','/:id/verify','verifySmtp','/:id/users','getAgents','post','create','/:id/in_servers','addImap','/:id/interactions','addInteraction','/:id/applications','/:id/send','send','addAgents','put','update','delete','removeDispositions','removeAnswers','removeSmtp','destroy','removeAgents','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getImap','/:id/out_servers','getSmtp','getApplications'];(function(_0xa10261,_0x17b7c6){var _0x5802c0=function(_0x11fea2){while(--_0x11fea2){_0xa10261['push'](_0xa10261['shift']());}};_0x5802c0(++_0x17b7c6);}(_0x7a13,0x1da));var _0x37a1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7a13[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x37a1('0x0'));var util=require('util');var path=require(_0x37a1('0x1'));var timeout=require(_0x37a1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x37a1('0x3'));var auth=require(_0x37a1('0x4'));var interaction=require(_0x37a1('0x5'));var config=require(_0x37a1('0x6'));var controller=require('./mailAccount.controller');router[_0x37a1('0x7')]('/',auth[_0x37a1('0x8')](),controller['index']);router['get'](_0x37a1('0x9'),auth[_0x37a1('0x8')](),controller[_0x37a1('0xa')]);router[_0x37a1('0x7')](_0x37a1('0xb'),auth[_0x37a1('0x8')](),controller[_0x37a1('0xc')]);router['get'](_0x37a1('0xd'),auth[_0x37a1('0x8')](),controller[_0x37a1('0xe')]);router[_0x37a1('0x7')](_0x37a1('0xf'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x10')]);router[_0x37a1('0x7')]('/:id/in_servers',auth[_0x37a1('0x8')](),controller[_0x37a1('0x11')]);router[_0x37a1('0x7')](_0x37a1('0x12'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x13')]);router['get']('/:id/interactions',auth[_0x37a1('0x8')](),controller['getInteractions']);router[_0x37a1('0x7')]('/:id/applications',auth[_0x37a1('0x8')](),controller[_0x37a1('0x14')]);router[_0x37a1('0x7')](_0x37a1('0x15'),auth[_0x37a1('0x8')](),controller['getMessages']);router[_0x37a1('0x7')](_0x37a1('0x16'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x17')]);router['get'](_0x37a1('0x18'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x19')]);router[_0x37a1('0x1a')]('/:id/dispositions',auth[_0x37a1('0x8')](),controller['addDisposition']);router[_0x37a1('0x1a')](_0x37a1('0xf'),auth[_0x37a1('0x8')](),controller['addAnswer']);router[_0x37a1('0x1a')]('/',auth[_0x37a1('0x8')](),controller[_0x37a1('0x1b')]);router[_0x37a1('0x1a')](_0x37a1('0x1c'),auth['isAuthenticated'](),controller[_0x37a1('0x1d')]);router[_0x37a1('0x1a')](_0x37a1('0x12'),auth[_0x37a1('0x8')](),controller['addSmtp']);router[_0x37a1('0x1a')](_0x37a1('0x1e'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x1f')]);router[_0x37a1('0x1a')](_0x37a1('0x20'),auth[_0x37a1('0x8')](),controller['addApplications']);router[_0x37a1('0x1a')](_0x37a1('0x21'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x22')]);router['post']('/:id/users',auth[_0x37a1('0x8')](),controller[_0x37a1('0x23')]);router[_0x37a1('0x24')](_0x37a1('0xb'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x25')]);router[_0x37a1('0x26')](_0x37a1('0xd'),auth['isAuthenticated'](),controller[_0x37a1('0x27')]);router[_0x37a1('0x26')](_0x37a1('0xf'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x28')]);router[_0x37a1('0x26')]('/:id/in_servers',auth[_0x37a1('0x8')](),controller['removeImap']);router[_0x37a1('0x26')]('/:id/out_servers',auth[_0x37a1('0x8')](),controller[_0x37a1('0x29')]);router[_0x37a1('0x26')](_0x37a1('0xb'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x2a')]);router[_0x37a1('0x26')](_0x37a1('0x18'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x2b')]);module[_0x37a1('0x2c')]=router;
\ No newline at end of file
index aeb46c8..5a017f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fbf=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','gmail','hotmail','yahoo','outlook365','provider','custom','getDataValue','sequelize','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x2fbf,0xa6));var _0xf2fb=function(_0x2f48e2,_0x29c40b){_0x2f48e2=_0x2f48e2-0x0;var _0x47fde5=_0x2fbf[_0x2f48e2];return _0x47fde5;};'use strict';var Sequelize=require(_0xf2fb('0x0'));module[_0xf2fb('0x1')]={'description':{'type':Sequelize[_0xf2fb('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0xf2fb('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xf2fb('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xf2fb('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0xf2fb('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0xf2fb('0x4')]},'markAsUnread':{'type':Sequelize[_0xf2fb('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xf2fb('0x2')],'allowNull':![],'defaultValue':_0xf2fb('0x5')},'fontSize':{'type':Sequelize[_0xf2fb('0x6')](0x2)[_0xf2fb('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xf2fb('0x8');}},'notificationSound':{'type':Sequelize[_0xf2fb('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf2fb('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0xf2fb('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf2fb('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf2fb('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf2fb('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf2fb('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0xf2fb('0x9')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xf2fb('0xa'),'set':function(_0x1a6d1e){if(!_0x1a6d1e)this[_0xf2fb('0xb')](_0xf2fb('0xc'),null);this['setDataValue'](_0xf2fb('0xd'),_0x1a6d1e);}},'provider':{'type':Sequelize[_0xf2fb('0xe')](_0xf2fb('0xf'),_0xf2fb('0x10'),_0xf2fb('0x11'),_0xf2fb('0x12')),'defaultValue':null,'get':function(){if(!this['getDataValue'](_0xf2fb('0x13')))return _0xf2fb('0x14');return this[_0xf2fb('0x15')](_0xf2fb('0x13'));},'set':function(_0x31f658){if(_0x31f658===_0xf2fb('0x14'))_0x31f658=null;return this[_0xf2fb('0xb')](_0xf2fb('0x13'),_0x31f658);}}};
\ No newline at end of file
+var _0xfff5=['STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','hotmail','yahoo','outlook365','getDataValue','provider','custom','exports'];(function(_0xe45118,_0x5dffbc){var _0x15e15d=function(_0x17eaec){while(--_0x17eaec){_0xe45118['push'](_0xe45118['shift']());}};_0x15e15d(++_0x5dffbc);}(_0xfff5,0x1a3));var _0x5fff=function(_0x3062e9,_0x329344){_0x3062e9=_0x3062e9-0x0;var _0x43cba4=_0xfff5[_0x3062e9];return _0x43cba4;};'use strict';var Sequelize=require('sequelize');module[_0x5fff('0x0')]={'description':{'type':Sequelize[_0x5fff('0x1')]},'name':{'type':Sequelize[_0x5fff('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x5fff('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x5fff('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x5fff('0x3')]},'markAsUnread':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x5fff('0x1')],'allowNull':![],'defaultValue':_0x5fff('0x4')},'fontSize':{'type':Sequelize[_0x5fff('0x5')](0x2)[_0x5fff('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x5fff('0x3')],'defaultValue':function(){return _0x5fff('0x7');}},'notificationSound':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5fff('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x5fff('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5fff('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5fff('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5fff('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x5fff('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![],'comment':_0x5fff('0x9'),'set':function(_0x2f94b8){if(!_0x2f94b8)this[_0x5fff('0xa')](_0x5fff('0xb'),null);this[_0x5fff('0xa')](_0x5fff('0xc'),_0x2f94b8);}},'provider':{'type':Sequelize[_0x5fff('0xd')]('gmail',_0x5fff('0xe'),_0x5fff('0xf'),_0x5fff('0x10')),'defaultValue':null,'get':function(){if(!this[_0x5fff('0x11')](_0x5fff('0x12')))return _0x5fff('0x13');return this[_0x5fff('0x11')](_0x5fff('0x12'));},'set':function(_0x56b564){if(_0x56b564===_0x5fff('0x13'))_0x56b564=null;return this[_0x5fff('0xa')](_0x5fff('0x12'),_0x56b564);}}};
\ No newline at end of file
index 937e50c..2dd3505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d96=['Unknown\x20email\x20service\x20provider','smtp.mail.yahoo.com','smtp.office365.com','user','password','pass','modernAuthentication','CloudProviderId','port','host','secure','service','authentication','username','Imap','Smtp','MailServerIn','MailServerOut','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','length','merge','find','update','body','provider','custom','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','order','pick','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','key','email','ListId','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','tag','sequelize','transaction','Transaction','MailApplication','bulkCreate','findAndCountAll','finally','getApplications','MailMessage','$gte','split','YYYY-MM-DD\x20HH:mm:ss','true','List','Contacts','updatedAt','DESC','isNil','from','format','%s\x20<%s>','attachments','join','root','server/files/attachments','getSmtpOptions','SendMail','List\x20not\x20found','defaults','messageId','subject','attach','Interaction','Messages','verifySmtp','CloudProvider','Sequelize','ValidationError','addAgents','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','getAgents','bluebird','util','lodash','juice','ioredis','../../config/logger','api','../../config/environment','redis','jayson/promise','client','http','request','then','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','destroy','get','MailAccounts','UserProfileResource','stack','name','gmail','imap.gmail.com','yahoo','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com'];(function(_0x311909,_0x414bf7){var _0x8d3163=function(_0x226f55){while(--_0x226f55){_0x311909['push'](_0x311909['shift']());}};_0x8d3163(++_0x414bf7);}(_0x1d96,0x89));var _0x61d9=function(_0xdfd149,_0x5306d0){_0xdfd149=_0xdfd149-0x0;var _0x56cce3=_0x1d96[_0xdfd149];return _0x56cce3;};'use strict';var moment=require('moment');var BPromise=require(_0x61d9('0x0'));var util=require(_0x61d9('0x1'));var path=require('path');var _=require(_0x61d9('0x2'));var juice=require(_0x61d9('0x3'));var Redis=require(_0x61d9('0x4'));var qs=require('../../components/parsers/qs');var logger=require(_0x61d9('0x5'))(_0x61d9('0x6'));var config=require(_0x61d9('0x7'));var db=require('../../mysqldb')['db'];config[_0x61d9('0x8')]=_['defaults'](config[_0x61d9('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x61d9('0x8')]));require('./mailAccount.socket')['register'](socket);var jayson=require(_0x61d9('0x9'));var client=jayson[_0x61d9('0xa')][_0x61d9('0xb')]({'port':0x232b});function respondWithRpcPromise(_0x18fa10,_0x3b1886,_0xee5d79,_0x25236c){return new BPromise(function(_0x18a113,_0x1518f2){var _0x46d9c5=_0x25236c||client;return _0x46d9c5[_0x61d9('0xc')](_0x18fa10,_0xee5d79)[_0x61d9('0xd')](function(_0x5196f0){logger['info'](_0x61d9('0xe'),_0x3b1886,'request\x20sent');logger[_0x61d9('0xf')](_0x61d9('0x10'),_0x3b1886,_0x61d9('0x11'),JSON[_0x61d9('0x12')](_0x5196f0));if(_0x5196f0['error']){if(_0x5196f0[_0x61d9('0x13')][_0x61d9('0x14')]===0x1f4){logger[_0x61d9('0x13')](_0x61d9('0xe'),_0x3b1886,_0x5196f0['error'][_0x61d9('0x15')]);return _0x1518f2(_0x5196f0[_0x61d9('0x13')]['message']);}logger['error'](_0x61d9('0xe'),_0x3b1886,_0x5196f0[_0x61d9('0x13')][_0x61d9('0x15')]);return _0x18a113(_0x5196f0[_0x61d9('0x13')]['message']);}else{logger[_0x61d9('0x16')]('MailAccount,\x20%s,\x20%s',_0x3b1886,_0x61d9('0x11'));_0x18a113(_0x5196f0['result'][_0x61d9('0x15')]);}})[_0x61d9('0x17')](function(_0x4a4da4){logger[_0x61d9('0x13')](_0x61d9('0xe'),_0x3b1886,_0x4a4da4);_0x1518f2(_0x4a4da4);});});}function respondWithStatusCode(_0x5a19fe,_0x2d1943){_0x2d1943=_0x2d1943||0xcc;return function(_0x1dd6c2){if(_0x1dd6c2){return _0x5a19fe[_0x61d9('0x18')](_0x2d1943);}return _0x5a19fe[_0x61d9('0x19')](_0x2d1943)[_0x61d9('0x1a')]();};}function respondWithResult(_0x2482a8,_0x4cc043){_0x4cc043=_0x4cc043||0xc8;return function(_0x190249){if(_0x190249){return _0x2482a8[_0x61d9('0x19')](_0x4cc043)['json'](_0x190249);}};}function respondWithFilteredResult(_0x1bf10c,_0x10317d){return function(_0x142550){if(_0x142550){var _0x17659f=typeof _0x10317d[_0x61d9('0x1b')]===_0x61d9('0x1c')&&typeof _0x10317d[_0x61d9('0x1d')]===_0x61d9('0x1c');var _0x5ce9c2=_0x142550[_0x61d9('0x1e')];var _0x39fdfa=_0x17659f?0x0:_0x10317d['offset'];var _0x54dcea=_0x17659f?_0x142550[_0x61d9('0x1e')]:_0x10317d[_0x61d9('0x1b')]+_0x10317d[_0x61d9('0x1d')];var _0x518212;if(_0x54dcea>=_0x5ce9c2){_0x54dcea=_0x5ce9c2;_0x518212=0xc8;}else{_0x518212=0xce;}_0x1bf10c[_0x61d9('0x19')](_0x518212);return _0x1bf10c[_0x61d9('0x1f')](_0x61d9('0x20'),_0x39fdfa+'-'+_0x54dcea+'/'+_0x5ce9c2)[_0x61d9('0x21')](_0x142550);}return null;};}function saveUpdates(_0xc1875e){return function(_0x22ccdb){if(_0x22ccdb){return _0x22ccdb['update'](_0xc1875e)[_0x61d9('0xd')](function(_0x2f00de){return _0x2f00de;});}return null;};}function removeEntity(_0x48ee5a){return function(_0x1b8105){if(_0x1b8105){return _0x1b8105[_0x61d9('0x22')]()[_0x61d9('0xd')](function(){var _0x39090b=_0x1b8105[_0x61d9('0x23')]({'plain':!![]});var _0x559ab5=_0x61d9('0x24');return db[_0x61d9('0x25')][_0x61d9('0x22')]({'where':{'type':_0x559ab5,'resourceId':_0x39090b['id']}})[_0x61d9('0xd')](function(){return _0x1b8105;});})[_0x61d9('0xd')](function(){_0x48ee5a[_0x61d9('0x19')](0xcc)[_0x61d9('0x1a')]();});}};}function handleEntityNotFound(_0x41f7d5){return function(_0x7a89d0){if(!_0x7a89d0){_0x41f7d5[_0x61d9('0x18')](0x194);}return _0x7a89d0;};}function handleError(_0x1c910e,_0x6f2903){_0x6f2903=_0x6f2903||0x1f4;return function(_0x17cfd7){logger['error'](_0x17cfd7[_0x61d9('0x26')]);if(_0x17cfd7[_0x61d9('0x27')]){delete _0x17cfd7[_0x61d9('0x27')];}_0x1c910e[_0x61d9('0x19')](_0x6f2903)['send'](_0x17cfd7);};}function getImapHost(_0xee104){switch(_0xee104){case _0x61d9('0x28'):return _0x61d9('0x29');case _0x61d9('0x2a'):return'imap.mail.yahoo.com';case _0x61d9('0x2b'):return _0x61d9('0x2c');case _0x61d9('0x2d'):return _0x61d9('0x2e');}throw new Error(_0x61d9('0x2f'),_0xee104);}function getSmtpHost(_0x41d153){switch(_0x41d153){case _0x61d9('0x28'):return'smtp.gmail.com';case'yahoo':return _0x61d9('0x30');case _0x61d9('0x2b'):return'smtp-mail.outlook.com';case'outlook365':return _0x61d9('0x31');}throw new Error('Unknown\x20email\x20service\x20provider',_0x41d153);}function getAuthenticationOptions(_0x133b41,_0x335261){var _0x5e6415={};var _0x18508b={};if(_0x133b41){_0x5e6415[_0x61d9('0x32')]=_0x18508b['user']=_0x335261['username'];_0x5e6415[_0x61d9('0x33')]=_0x18508b[_0x61d9('0x34')]=_0x335261[_0x61d9('0x33')];if(_0x335261[_0x61d9('0x35')]){_0x5e6415[_0x61d9('0x35')]=_0x18508b[_0x61d9('0x35')]=!![];_0x5e6415[_0x61d9('0x36')]=_0x18508b[_0x61d9('0x36')]=_0x335261[_0x61d9('0x36')];_0x5e6415[_0x61d9('0x33')]=_0x18508b[_0x61d9('0x34')]=null;}else{_0x5e6415[_0x61d9('0x36')]=_0x18508b[_0x61d9('0x36')]=null;}_0x5e6415['host']=getImapHost(_0x133b41);_0x5e6415[_0x61d9('0x37')]=0x3e1;_0x18508b[_0x61d9('0x38')]=getSmtpHost(_0x133b41);_0x18508b['port']=0x24b;_0x18508b[_0x61d9('0x39')]=![];_0x5e6415['service']=_0x18508b[_0x61d9('0x3a')]=null;}else{if(_0x335261[_0x61d9('0x3b')]){_0x5e6415[_0x61d9('0x32')]=_0x18508b[_0x61d9('0x32')]=_0x335261[_0x61d9('0x3c')];_0x5e6415[_0x61d9('0x33')]=_0x18508b['pass']=_0x335261['password'];}else{_0x5e6415[_0x61d9('0x3b')]=_0x18508b[_0x61d9('0x3b')]=![];_0x5e6415['user']=_0x18508b['user']=null;_0x5e6415[_0x61d9('0x33')]=_0x18508b[_0x61d9('0x34')]=null;}_0x5e6415[_0x61d9('0x38')]=_0x335261['Imap'][_0x61d9('0x38')];_0x5e6415[_0x61d9('0x37')]=_0x335261[_0x61d9('0x3d')]['port'];_0x18508b[_0x61d9('0x38')]=_0x335261['Smtp']['host'];_0x18508b[_0x61d9('0x37')]=_0x335261[_0x61d9('0x3e')][_0x61d9('0x37')];}return{'Imap':_0x5e6415,'Smtp':_0x18508b};}exports['index']=function(_0x537b97,_0x46bcbe){var _0xbd9fa6={'include':[{'model':db[_0x61d9('0x3f')],'as':_0x61d9('0x3d')},{'model':db[_0x61d9('0x40')],'as':'Smtp'},{'model':db[_0x61d9('0x41')],'as':_0x61d9('0x42')}]},_0x30d466={},_0x2f64a8={'count':0x0,'rows':[]};var _0x35d724=_[_0x61d9('0x43')](db[_0x61d9('0x44')][_0x61d9('0x45')],function(_0x440348){return{'name':_0x440348[_0x61d9('0x46')],'type':_0x440348[_0x61d9('0x47')]['key']};});_0x30d466[_0x61d9('0x48')]=_['map'](_0x35d724,_0x61d9('0x27'));_0x30d466['query']=_[_0x61d9('0x49')](_0x537b97[_0x61d9('0x4a')]);_0x30d466[_0x61d9('0x4b')]=_[_0x61d9('0x4c')](_0x30d466[_0x61d9('0x48')],_0x30d466['query']);_0xbd9fa6['attributes']=_[_0x61d9('0x4c')](_0x30d466[_0x61d9('0x48')],qs['fields'](_0x537b97['query'][_0x61d9('0x4d')]));_0xbd9fa6[_0x61d9('0x4e')]=_0xbd9fa6['attributes']['length']?_0xbd9fa6['attributes']:_0x30d466[_0x61d9('0x48')];if(!_0x537b97['query'][_0x61d9('0x4f')](_0x61d9('0x50'))){_0xbd9fa6[_0x61d9('0x1d')]=qs[_0x61d9('0x1d')](_0x537b97[_0x61d9('0x4a')][_0x61d9('0x1d')]);_0xbd9fa6[_0x61d9('0x1b')]=qs[_0x61d9('0x1b')](_0x537b97[_0x61d9('0x4a')][_0x61d9('0x1b')]);}_0xbd9fa6['order']=qs[_0x61d9('0x51')](_0x537b97[_0x61d9('0x4a')][_0x61d9('0x51')]);_0xbd9fa6[_0x61d9('0x52')]=qs[_0x61d9('0x4b')](_['pick'](_0x537b97[_0x61d9('0x4a')],_0x30d466['filters']),_0x35d724);if(_0x537b97[_0x61d9('0x4a')]['filter']){_0xbd9fa6['where']=_['merge'](_0xbd9fa6[_0x61d9('0x52')],{'$or':_['map'](_0x35d724,function(_0x2ae14b){if(_0x2ae14b[_0x61d9('0x47')]!==_0x61d9('0x53')){var _0x6b0434={};_0x6b0434[_0x2ae14b[_0x61d9('0x27')]]={'$like':'%'+_0x537b97['query'][_0x61d9('0x54')]+'%'};return _0x6b0434;}})});}_0xbd9fa6=_['merge']({},_0xbd9fa6,_0x537b97[_0x61d9('0x55')]);var _0x5e8be4={'where':_0xbd9fa6[_0x61d9('0x52')]};return db[_0x61d9('0x44')]['count'](_0x5e8be4)[_0x61d9('0xd')](function(_0x3f8b15){_0x2f64a8[_0x61d9('0x1e')]=_0x3f8b15;if(_0x537b97[_0x61d9('0x4a')][_0x61d9('0x56')]){_0xbd9fa6[_0x61d9('0x57')]=[{'all':!![]}];}return db['MailAccount'][_0x61d9('0x58')](_0xbd9fa6);})[_0x61d9('0xd')](function(_0x46710a){_0x2f64a8[_0x61d9('0x59')]=_0x46710a;return _0x2f64a8;})['then'](respondWithFilteredResult(_0x46bcbe,_0xbd9fa6))[_0x61d9('0x17')](handleError(_0x46bcbe,null));};exports[_0x61d9('0x5a')]=function(_0x477add,_0x2791e9){var _0x569239={'raw':![],'where':{'id':_0x477add[_0x61d9('0x5b')]['id']},'include':[{'model':db[_0x61d9('0x3f')],'as':_0x61d9('0x3d')},{'model':db[_0x61d9('0x40')],'as':_0x61d9('0x3e')},{'model':db[_0x61d9('0x41')],'as':_0x61d9('0x42')}]},_0x458058={};_0x458058[_0x61d9('0x48')]=_[_0x61d9('0x49')](db[_0x61d9('0x44')][_0x61d9('0x45')]);_0x458058[_0x61d9('0x4a')]=_[_0x61d9('0x49')](_0x477add[_0x61d9('0x4a')]);_0x458058['filters']=_[_0x61d9('0x4c')](_0x458058['model'],_0x458058['query']);_0x569239[_0x61d9('0x4e')]=_[_0x61d9('0x4c')](_0x458058[_0x61d9('0x48')],qs[_0x61d9('0x4d')](_0x477add[_0x61d9('0x4a')][_0x61d9('0x4d')]));_0x569239[_0x61d9('0x4e')]=_0x569239[_0x61d9('0x4e')][_0x61d9('0x5c')]?_0x569239[_0x61d9('0x4e')]:_0x458058[_0x61d9('0x48')];if(_0x477add[_0x61d9('0x4a')][_0x61d9('0x56')]){_0x569239[_0x61d9('0x57')]=[{'all':!![]}];}_0x569239=_[_0x61d9('0x5d')]({},_0x569239,_0x477add['options']);return db[_0x61d9('0x44')][_0x61d9('0x5e')](_0x569239)[_0x61d9('0xd')](handleEntityNotFound(_0x2791e9,null))[_0x61d9('0xd')](respondWithResult(_0x2791e9,null))[_0x61d9('0x17')](handleError(_0x2791e9,null));};exports[_0x61d9('0x5f')]=function(_0x55a370,_0x8718f1){if(_0x55a370[_0x61d9('0x60')]['id']){delete _0x55a370[_0x61d9('0x60')]['id'];}var _0x7fd103=_0x55a370[_0x61d9('0x60')][_0x61d9('0x61')]===_0x61d9('0x62')?null:_0x55a370[_0x61d9('0x60')][_0x61d9('0x61')];var _0x5689a8=_0x55a370[_0x61d9('0x60')][_0x61d9('0x3d')]||{};var _0x368649=_0x55a370[_0x61d9('0x60')][_0x61d9('0x3e')]||{};if(_0x7fd103){_0x5689a8['host']=getImapHost(_0x7fd103);_0x5689a8['port']=0x3e1;_0x368649[_0x61d9('0x38')]=getSmtpHost(_0x7fd103);_0x368649['port']=0x24b;_0x368649[_0x61d9('0x39')]=![];}if(_0x368649[_0x61d9('0x35')]){_0x368649[_0x61d9('0x39')]=![];}else{_0x368649['CloudProviderId']=null;}if(!_0x5689a8[_0x61d9('0x35')])_0x5689a8['CloudProviderId']=null;_0x55a370[_0x61d9('0x60')][_0x61d9('0x3d')]=_0x5689a8;_0x55a370[_0x61d9('0x60')][_0x61d9('0x3e')]=_0x368649;return db[_0x61d9('0x44')]['find']({'where':{'id':_0x55a370[_0x61d9('0x5b')]['id']},'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0x61d9('0x41')],'as':_0x61d9('0x42')}]})[_0x61d9('0xd')](handleEntityNotFound(_0x8718f1,null))[_0x61d9('0xd')](function(_0x233a1c){if(!_0x233a1c)throw new Error('Mail\x20Account\x20not\x20found');if(_0x233a1c[_0x61d9('0x3a')])delete _0x55a370['body'][_0x61d9('0x3d')];return _0x233a1c;})[_0x61d9('0xd')](saveUpdates(_0x55a370[_0x61d9('0x60')],null))['then'](function(_0x386e95){if(!_0x55a370[_0x61d9('0x60')][_0x61d9('0x3d')])return _0x386e95;return db['MailServerIn'][_0x61d9('0x5f')](_0x55a370[_0x61d9('0x60')][_0x61d9('0x3d')],{'where':{'MailAccountId':_0x386e95['id']}})['then'](function(){return _0x386e95;});})[_0x61d9('0xd')](function(_0x40edef){if(!_0x55a370[_0x61d9('0x60')][_0x61d9('0x3e')])return _0x40edef;return db[_0x61d9('0x40')][_0x61d9('0x5f')](_0x55a370[_0x61d9('0x60')][_0x61d9('0x3e')],{'where':{'MailAccountId':_0x40edef['id']}})[_0x61d9('0xd')](function(){return _0x40edef;});})[_0x61d9('0xd')](respondWithResult(_0x8718f1,null))[_0x61d9('0x17')](handleError(_0x8718f1,null));};exports[_0x61d9('0x63')]=function(_0x3ddf91,_0xa8f500){return db[_0x61d9('0x44')][_0x61d9('0x63')]()[_0x61d9('0xd')](respondWithResult(_0xa8f500,null))[_0x61d9('0x17')](handleError(_0xa8f500,null));};exports[_0x61d9('0x64')]=function(_0x3d2155,_0x5ad8c1){if(_0x3d2155[_0x61d9('0x60')]['id']){delete _0x3d2155[_0x61d9('0x60')]['id'];}return db[_0x61d9('0x44')][_0x61d9('0x5e')]({'where':{'id':_0x3d2155[_0x61d9('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5ad8c1,null))[_0x61d9('0xd')](function(_0x400f12){if(_0x400f12){_0x3d2155[_0x61d9('0x60')][_0x61d9('0x65')]=_0x400f12['id'];return db[_0x61d9('0x66')][_0x61d9('0x67')](_0x3d2155[_0x61d9('0x60')]);}})['then'](respondWithResult(_0x5ad8c1,null))[_0x61d9('0x17')](handleError(_0x5ad8c1,null));};exports[_0x61d9('0x68')]=function(_0x1aa829,_0x9be883){var _0xcd7b4a={'raw':![],'where':{}};var _0x27d935={};var _0x4763c4={'count':0x0,'rows':[]};return db[_0x61d9('0x44')][_0x61d9('0x69')]({'where':{'id':_0x1aa829['params']['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x9be883,null))[_0x61d9('0xd')](function(_0x50d03d){if(_0x50d03d){_0x27d935['model']=_[_0x61d9('0x49')](db[_0x61d9('0x66')]['rawAttributes']);_0x27d935[_0x61d9('0x4a')]=_[_0x61d9('0x49')](_0x1aa829[_0x61d9('0x4a')]);_0x27d935[_0x61d9('0x4b')]=_['intersection'](_0x27d935['model'],_0x27d935[_0x61d9('0x4a')]);_0xcd7b4a[_0x61d9('0x4e')]=_[_0x61d9('0x4c')](_0x27d935[_0x61d9('0x48')],qs[_0x61d9('0x4d')](_0x1aa829[_0x61d9('0x4a')][_0x61d9('0x4d')]));_0xcd7b4a[_0x61d9('0x4e')]=_0xcd7b4a[_0x61d9('0x4e')]['length']?_0xcd7b4a[_0x61d9('0x4e')]:_0x27d935[_0x61d9('0x48')];if(!_0x1aa829[_0x61d9('0x4a')][_0x61d9('0x4f')]('nolimit')){_0xcd7b4a[_0x61d9('0x1d')]=qs[_0x61d9('0x1d')](_0x1aa829['query']['limit']);_0xcd7b4a[_0x61d9('0x1b')]=qs['offset'](_0x1aa829[_0x61d9('0x4a')]['offset']);}_0xcd7b4a[_0x61d9('0x6a')]=qs['sort'](_0x1aa829['query'][_0x61d9('0x51')]);_0xcd7b4a[_0x61d9('0x52')]=qs[_0x61d9('0x4b')](_[_0x61d9('0x6b')](_0x1aa829[_0x61d9('0x4a')],_0x27d935['filters']));_0xcd7b4a[_0x61d9('0x52')][_0x61d9('0x65')]=_0x50d03d['id'];if(_0x1aa829[_0x61d9('0x4a')][_0x61d9('0x54')]){_0xcd7b4a['where']=_['merge'](_0xcd7b4a[_0x61d9('0x52')],{'$or':_[_0x61d9('0x43')](_0xcd7b4a['attributes'],function(_0x563a0b){var _0x46b67b={};_0x46b67b[_0x563a0b]={'$like':'%'+_0x1aa829['query'][_0x61d9('0x54')]+'%'};return _0x46b67b;})});}_0xcd7b4a=_[_0x61d9('0x5d')]({},_0xcd7b4a,_0x1aa829[_0x61d9('0x55')]);return db[_0x61d9('0x66')][_0x61d9('0x1e')]({'where':_0xcd7b4a[_0x61d9('0x52')]})['then'](function(_0x30af51){_0x4763c4[_0x61d9('0x1e')]=_0x30af51;if(_0x1aa829['query'][_0x61d9('0x56')]){_0xcd7b4a[_0x61d9('0x57')]=[{'all':!![]}];}return db[_0x61d9('0x66')]['findAll'](_0xcd7b4a);})[_0x61d9('0xd')](function(_0x16080a){_0x4763c4['rows']=_0x16080a;return _0x4763c4;});}})[_0x61d9('0xd')](respondWithFilteredResult(_0x9be883,_0xcd7b4a))[_0x61d9('0x17')](handleError(_0x9be883,null));};exports[_0x61d9('0x6c')]=function(_0x3d51b8,_0x4e1217){return db[_0x61d9('0x44')][_0x61d9('0x5e')]({'where':{'id':_0x3d51b8[_0x61d9('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4e1217,null))[_0x61d9('0xd')](function(_0x13b512){if(_0x13b512){return _0x13b512['removeDispositions'](_0x3d51b8['query'][_0x61d9('0x6d')]);}})[_0x61d9('0xd')](respondWithStatusCode(_0x4e1217,null))['catch'](handleError(_0x4e1217,null));};exports[_0x61d9('0x6e')]=function(_0x45e46a,_0x1609d9){if(_0x45e46a[_0x61d9('0x60')]['id']){delete _0x45e46a[_0x61d9('0x60')]['id'];}return db['MailAccount'][_0x61d9('0x5e')]({'where':{'id':_0x45e46a[_0x61d9('0x5b')]['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x1609d9,null))[_0x61d9('0xd')](function(_0x19e10e){if(_0x19e10e){_0x45e46a[_0x61d9('0x60')][_0x61d9('0x65')]=_0x19e10e['id'];return db[_0x61d9('0x6f')][_0x61d9('0x67')](_0x45e46a[_0x61d9('0x60')]);}})[_0x61d9('0xd')](respondWithResult(_0x1609d9,null))['catch'](handleError(_0x1609d9,null));};exports['getAnswers']=function(_0xe48452,_0x532b53){var _0x432258={'raw':![],'where':{}};var _0x39ddff={};var _0x29fe66={'count':0x0,'rows':[]};return db[_0x61d9('0x44')]['findOne']({'where':{'id':_0xe48452[_0x61d9('0x5b')]['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x532b53,null))['then'](function(_0x2eb82b){if(_0x2eb82b){_0x39ddff['model']=_[_0x61d9('0x49')](db[_0x61d9('0x6f')][_0x61d9('0x45')]);_0x39ddff[_0x61d9('0x4a')]=_[_0x61d9('0x49')](_0xe48452['query']);_0x39ddff[_0x61d9('0x4b')]=_['intersection'](_0x39ddff['model'],_0x39ddff[_0x61d9('0x4a')]);_0x432258[_0x61d9('0x4e')]=_[_0x61d9('0x4c')](_0x39ddff[_0x61d9('0x48')],qs['fields'](_0xe48452[_0x61d9('0x4a')]['fields']));_0x432258[_0x61d9('0x4e')]=_0x432258[_0x61d9('0x4e')]['length']?_0x432258[_0x61d9('0x4e')]:_0x39ddff[_0x61d9('0x48')];if(!_0xe48452[_0x61d9('0x4a')]['hasOwnProperty'](_0x61d9('0x50'))){_0x432258[_0x61d9('0x1d')]=qs[_0x61d9('0x1d')](_0xe48452[_0x61d9('0x4a')][_0x61d9('0x1d')]);_0x432258['offset']=qs[_0x61d9('0x1b')](_0xe48452[_0x61d9('0x4a')][_0x61d9('0x1b')]);}_0x432258[_0x61d9('0x6a')]=qs[_0x61d9('0x51')](_0xe48452[_0x61d9('0x4a')]['sort']);_0x432258[_0x61d9('0x52')]=qs['filters'](_[_0x61d9('0x6b')](_0xe48452[_0x61d9('0x4a')],_0x39ddff[_0x61d9('0x4b')]));_0x432258['where'][_0x61d9('0x65')]=_0x2eb82b['id'];if(_0xe48452[_0x61d9('0x4a')]['filter']){_0x432258[_0x61d9('0x52')]=_[_0x61d9('0x5d')](_0x432258[_0x61d9('0x52')],{'$or':_['map'](_0x432258['attributes'],function(_0x49eee1){var _0x24600e={};_0x24600e[_0x49eee1]={'$like':'%'+_0xe48452[_0x61d9('0x4a')]['filter']+'%'};return _0x24600e;})});}_0x432258=_[_0x61d9('0x5d')]({},_0x432258,_0xe48452[_0x61d9('0x55')]);return db['CannedAnswer']['count']({'where':_0x432258[_0x61d9('0x52')]})[_0x61d9('0xd')](function(_0x5f2fd0){_0x29fe66[_0x61d9('0x1e')]=_0x5f2fd0;if(_0xe48452[_0x61d9('0x4a')][_0x61d9('0x56')]){_0x432258[_0x61d9('0x57')]=[{'all':!![]}];}return db[_0x61d9('0x6f')][_0x61d9('0x58')](_0x432258);})[_0x61d9('0xd')](function(_0x2ce5c4){_0x29fe66[_0x61d9('0x59')]=_0x2ce5c4;return _0x29fe66;});}})['then'](respondWithFilteredResult(_0x532b53,_0x432258))[_0x61d9('0x17')](handleError(_0x532b53,null));};exports['removeAnswers']=function(_0x2bcb77,_0x1f718d){return db[_0x61d9('0x44')][_0x61d9('0x5e')]({'where':{'id':_0x2bcb77[_0x61d9('0x5b')]['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x1f718d,null))[_0x61d9('0xd')](function(_0x9dc17b){if(_0x9dc17b){return _0x9dc17b[_0x61d9('0x70')](_0x2bcb77[_0x61d9('0x4a')][_0x61d9('0x6d')]);}})['then'](respondWithStatusCode(_0x1f718d,null))['catch'](handleError(_0x1f718d,null));};exports[_0x61d9('0x67')]=function(_0x41950f,_0x2dadcc){var _0x3ee7f8={'name':_0x41950f['body'][_0x61d9('0x27')],'key':_0x41950f['body'][_0x61d9('0x71')],'provider':_0x41950f[_0x61d9('0x60')]['provider']==='custom'?null:_0x41950f[_0x61d9('0x60')][_0x61d9('0x61')],'email':_0x41950f[_0x61d9('0x60')][_0x61d9('0x72')],'ListId':_0x41950f[_0x61d9('0x60')][_0x61d9('0x73')],'active':!_['isNil'](_0x41950f[_0x61d9('0x60')][_0x61d9('0x74')])?_0x41950f[_0x61d9('0x60')][_0x61d9('0x74')]:!![],'description':_0x41950f[_0x61d9('0x60')][_0x61d9('0x75')]||null};var _0x41834f=getAuthenticationOptions(_0x3ee7f8['provider'],_0x41950f[_0x61d9('0x60')]);_0x3ee7f8[_0x61d9('0x3d')]=_0x41834f[_0x61d9('0x3d')];_0x3ee7f8[_0x61d9('0x3e')]=_0x41834f[_0x61d9('0x3e')];return db[_0x61d9('0x44')][_0x61d9('0x67')](_0x3ee7f8,{'include':[{'model':db[_0x61d9('0x40')],'as':_0x61d9('0x3e')},{'model':db[_0x61d9('0x3f')],'as':_0x61d9('0x3d')}]})[_0x61d9('0xd')](function(_0x36b1eb){var _0x23359a=_0x41950f[_0x61d9('0x32')][_0x61d9('0x23')]({'plain':!![]});if(!_0x23359a)throw new Error(_0x61d9('0x76'));if(_0x23359a[_0x61d9('0x77')]===_0x61d9('0x32')){var _0x37c555=_0x36b1eb['get']({'plain':!![]});return db[_0x61d9('0x78')][_0x61d9('0x5e')]({'where':{'name':_0x61d9('0x24'),'userProfileId':_0x23359a['userProfileId']},'raw':!![]})[_0x61d9('0xd')](function(_0x3e4b3a){if(_0x3e4b3a&&_0x3e4b3a[_0x61d9('0x79')]===0x0){return db[_0x61d9('0x25')][_0x61d9('0x67')]({'name':_0x37c555[_0x61d9('0x27')],'resourceId':_0x37c555['id'],'type':_0x3e4b3a['name'],'sectionId':_0x3e4b3a['id']},{})['then'](function(){return _0x36b1eb;});}else{return _0x36b1eb;}})[_0x61d9('0x17')](function(_0x2f8d20){logger[_0x61d9('0x13')](_0x61d9('0x7a'),_0x2f8d20);throw _0x2f8d20;});}return _0x36b1eb;})[_0x61d9('0xd')](respondWithResult(_0x2dadcc,0xc9))[_0x61d9('0x17')](handleError(_0x2dadcc,null));};exports['getImap']=function(_0x567eda,_0x3c641d){return db[_0x61d9('0x44')][_0x61d9('0x69')]({'where':{'id':_0x567eda[_0x61d9('0x5b')]['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x3c641d,null))[_0x61d9('0xd')](function(_0x233c37){if(_0x233c37){return _0x233c37['getImap']();}return null;})[_0x61d9('0xd')](respondWithResult(_0x3c641d,null))[_0x61d9('0x17')](handleError(_0x3c641d,null));};exports[_0x61d9('0x7b')]=function(_0x1175d2,_0x5bb0af){if(_0x1175d2[_0x61d9('0x60')]['id']){delete _0x1175d2[_0x61d9('0x60')]['id'];}return db[_0x61d9('0x44')]['find']({'where':{'id':_0x1175d2[_0x61d9('0x5b')]['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x5bb0af,null))[_0x61d9('0xd')](function(_0x3329e2){if(_0x3329e2){_0x1175d2['body']['MailAccountId']=_0x3329e2['id'];return db['MailServerIn'][_0x61d9('0x67')](_0x1175d2[_0x61d9('0x60')]);}})[_0x61d9('0xd')](respondWithResult(_0x5bb0af,null))['catch'](handleError(_0x5bb0af,null));};exports['removeImap']=function(_0x319dbe,_0x3f1c08){return db[_0x61d9('0x44')][_0x61d9('0x69')]({'where':{'id':_0x319dbe[_0x61d9('0x5b')]['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x3f1c08,null))[_0x61d9('0xd')](function(_0x48b631){if(_0x48b631){return _0x48b631[_0x61d9('0x7c')](null);}return null;})[_0x61d9('0xd')](respondWithStatusCode(_0x3f1c08,null))[_0x61d9('0x17')](handleError(_0x3f1c08,null));};exports[_0x61d9('0x7d')]=function(_0x3ee034,_0x208166){return db[_0x61d9('0x44')][_0x61d9('0x69')]({'where':{'id':_0x3ee034['params']['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x208166,null))[_0x61d9('0xd')](function(_0x3fc156){if(_0x3fc156){return _0x3fc156[_0x61d9('0x7d')]();}return null;})[_0x61d9('0xd')](respondWithResult(_0x208166,null))[_0x61d9('0x17')](handleError(_0x208166,null));};exports['addSmtp']=function(_0x5b09b5,_0x374034){if(_0x5b09b5[_0x61d9('0x60')]['id']){delete _0x5b09b5['body']['id'];}return db[_0x61d9('0x44')][_0x61d9('0x5e')]({'where':{'id':_0x5b09b5[_0x61d9('0x5b')]['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x374034,null))['then'](function(_0x13f414){if(_0x13f414){_0x5b09b5[_0x61d9('0x60')][_0x61d9('0x65')]=_0x13f414['id'];return db['MailServerOut'][_0x61d9('0x67')](_0x5b09b5[_0x61d9('0x60')]);}})['then'](respondWithResult(_0x374034,null))[_0x61d9('0x17')](handleError(_0x374034,null));};exports[_0x61d9('0x7e')]=function(_0x148917,_0x26ecfb){return db[_0x61d9('0x44')][_0x61d9('0x69')]({'where':{'id':_0x148917[_0x61d9('0x5b')]['id']}})['then'](handleEntityNotFound(_0x26ecfb,null))[_0x61d9('0xd')](function(_0x781c42){if(_0x781c42){return _0x781c42[_0x61d9('0x7f')](null);}return null;})['then'](respondWithStatusCode(_0x26ecfb,null))[_0x61d9('0x17')](handleError(_0x26ecfb,null));};exports[_0x61d9('0x80')]=function(_0xe6b6e0,_0x1e2a47){return db[_0x61d9('0x81')][_0x61d9('0x5e')]({'where':{'id':_0xe6b6e0[_0x61d9('0x5b')]['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x1e2a47,null))[_0x61d9('0xd')](function(_0x104984){if(_0x104984){return _0x104984['addInteraction'](_0xe6b6e0[_0x61d9('0x60')][_0x61d9('0x6d')],_[_0x61d9('0x82')](_0xe6b6e0['body'],[_0x61d9('0x6d'),'id'])||{});}})[_0x61d9('0xd')](respondWithResult(_0x1e2a47,null))[_0x61d9('0x17')](handleError(_0x1e2a47,null));};exports[_0x61d9('0x83')]=function(_0xf3a3ed,_0x22559c){var _0x30d5da={'raw':![],'where':{}};var _0x307d7b={};var _0x20b7d8={'count':0x0,'rows':[]};return db[_0x61d9('0x44')][_0x61d9('0x69')]({'where':{'id':_0xf3a3ed[_0x61d9('0x5b')]['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x22559c,null))[_0x61d9('0xd')](function(_0x58bafa){if(_0x58bafa){_0x307d7b[_0x61d9('0x48')]=_['keys'](db[_0x61d9('0x81')][_0x61d9('0x45')]);_0x307d7b[_0x61d9('0x4a')]=_[_0x61d9('0x49')](_0xf3a3ed['query']);_0x307d7b[_0x61d9('0x4b')]=_[_0x61d9('0x4c')](_0x307d7b['model'],_0x307d7b['query']);_0x30d5da['attributes']=_[_0x61d9('0x4c')](_0x307d7b[_0x61d9('0x48')],qs[_0x61d9('0x4d')](_0xf3a3ed[_0x61d9('0x4a')][_0x61d9('0x4d')]));_0x30d5da[_0x61d9('0x4e')]=_0x30d5da['attributes'][_0x61d9('0x5c')]?_0x30d5da[_0x61d9('0x4e')]:_0x307d7b[_0x61d9('0x48')];if(!_0xf3a3ed[_0x61d9('0x4a')][_0x61d9('0x4f')](_0x61d9('0x50'))){_0x30d5da['limit']=qs[_0x61d9('0x1d')](_0xf3a3ed[_0x61d9('0x4a')][_0x61d9('0x1d')]);_0x30d5da['offset']=qs[_0x61d9('0x1b')](_0xf3a3ed[_0x61d9('0x4a')][_0x61d9('0x1b')]);}_0x30d5da[_0x61d9('0x6a')]=qs[_0x61d9('0x51')](_0xf3a3ed[_0x61d9('0x4a')][_0x61d9('0x51')]);_0x30d5da[_0x61d9('0x52')]=qs[_0x61d9('0x4b')](_['pick'](_0xf3a3ed['query'],_0x307d7b[_0x61d9('0x4b')]));_0x30d5da[_0x61d9('0x52')][_0x61d9('0x65')]=_0x58bafa['id'];if(_0xf3a3ed[_0x61d9('0x4a')][_0x61d9('0x54')]){_0x30d5da[_0x61d9('0x52')]=_['merge'](_0x30d5da[_0x61d9('0x52')],{'$or':_['map'](_0x30d5da[_0x61d9('0x4e')],function(_0x25e625){var _0x42a946={};_0x42a946[_0x25e625]={'$like':'%'+_0xf3a3ed[_0x61d9('0x4a')][_0x61d9('0x54')]+'%'};return _0x42a946;})});}_0x30d5da=_[_0x61d9('0x5d')]({},_0x30d5da,_0xf3a3ed['options']);return db[_0x61d9('0x81')][_0x61d9('0x1e')]({'where':_0x30d5da['where']})[_0x61d9('0xd')](function(_0x1a1501){_0x20b7d8[_0x61d9('0x1e')]=_0x1a1501;if(_0xf3a3ed[_0x61d9('0x4a')]['includeAll']){_0x30d5da['include']=[{'model':db[_0x61d9('0x84')],'as':_0x61d9('0x85'),'required':![]},{'model':db[_0x61d9('0x86')],'as':_0x61d9('0x87'),'attributes':['name',_0x61d9('0x88'),_0x61d9('0x89')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x61d9('0x27'),'color'],'where':_0xf3a3ed[_0x61d9('0x4a')][_0x61d9('0x8a')]?{'id':_0xf3a3ed[_0x61d9('0x4a')][_0x61d9('0x8a')]}:undefined,'required':_0xf3a3ed['query'][_0x61d9('0x8a')]?!![]:![]}];}return db[_0x61d9('0x81')]['findAll'](_0x30d5da);})[_0x61d9('0xd')](function(_0x5de8bd){_0x20b7d8[_0x61d9('0x59')]=_0x5de8bd;return _0x20b7d8;});}})['then'](respondWithFilteredResult(_0x22559c,_0x30d5da))[_0x61d9('0x17')](handleError(_0x22559c,null));};exports['addApplications']=function addApplications(_0x42e873,_0x57fc70){var _0x5a603a=_0x42e873[_0x61d9('0x5b')]['id'];var _0x23a823=_0x42e873[_0x61d9('0x60')];var _0x44ead7=0xc8;var _0xbb50ed=null;return db[_0x61d9('0x8b')][_0x61d9('0x8c')]({'isolationLevel':db[_0x61d9('0x8b')][_0x61d9('0x8d')]['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0x4fa402){return db['MailAccount']['findOne']({'where':{'id':_0x5a603a},'transaction':_0x4fa402})['then'](function(_0x46a2e9){if(_0x46a2e9){return db[_0x61d9('0x8e')][_0x61d9('0x22')]({'where':{'MailAccountId':_0x5a603a},'transaction':_0x4fa402})[_0x61d9('0xd')](function(){var _0x2ce1b1=_[_0x61d9('0x43')](_0x23a823,function(_0x38e099){_0x38e099[_0x61d9('0x65')]=_0x5a603a;return _0x38e099;});return db[_0x61d9('0x8e')][_0x61d9('0x8f')](_0x2ce1b1,{'transaction':_0x4fa402});});}else{_0x44ead7=0x194;_0xbb50ed=[];}});})[_0x61d9('0xd')](function(){if(_0x44ead7!==0x194){return db[_0x61d9('0x8e')][_0x61d9('0x90')]({'where':{'MailAccountId':_0x5a603a},'order':'priority'})[_0x61d9('0xd')](function(_0x36e242){_0xbb50ed=_0x36e242;});}})[_0x61d9('0x17')](function(_0x326303){_0x44ead7=0x1f4;logger[_0x61d9('0x13')](_0x326303[_0x61d9('0x26')]);if(_0x326303[_0x61d9('0x27')]){delete _0x326303[_0x61d9('0x27')];}_0xbb50ed=_0x326303;})[_0x61d9('0x91')](function(){if(_0xbb50ed===null){_0x57fc70['sendStatus'](_0x44ead7);}else{if(_0x44ead7===0x1f4){_0x57fc70[_0x61d9('0x19')](_0x44ead7)['send'](_0xbb50ed);}else{_0x57fc70[_0x61d9('0x19')](_0x44ead7)[_0x61d9('0x21')](_0xbb50ed);}}});};exports[_0x61d9('0x92')]=function(_0x241473,_0x39cee2){var _0x9f9d94={};var _0x5c891c={};var _0x364d8a;var _0x57ebd0;return db['MailAccount'][_0x61d9('0x69')]({'where':{'id':_0x241473['params']['id']}})['then'](handleEntityNotFound(_0x39cee2,null))[_0x61d9('0xd')](function(_0x2937e0){if(_0x2937e0){_0x364d8a=_0x2937e0;_0x5c891c[_0x61d9('0x48')]=_[_0x61d9('0x49')](db[_0x61d9('0x8e')][_0x61d9('0x45')]);_0x5c891c['query']=_[_0x61d9('0x49')](_0x241473[_0x61d9('0x4a')]);_0x5c891c[_0x61d9('0x4b')]=_[_0x61d9('0x4c')](_0x5c891c['model'],_0x5c891c[_0x61d9('0x4a')]);_0x9f9d94[_0x61d9('0x4e')]=_[_0x61d9('0x4c')](_0x5c891c[_0x61d9('0x48')],qs[_0x61d9('0x4d')](_0x241473[_0x61d9('0x4a')][_0x61d9('0x4d')]));_0x9f9d94[_0x61d9('0x4e')]=_0x9f9d94[_0x61d9('0x4e')]['length']?_0x9f9d94[_0x61d9('0x4e')]:_0x5c891c[_0x61d9('0x48')];_0x9f9d94[_0x61d9('0x6a')]=qs[_0x61d9('0x51')](_0x241473[_0x61d9('0x4a')][_0x61d9('0x51')]);_0x9f9d94['where']=qs[_0x61d9('0x4b')](_[_0x61d9('0x6b')](_0x241473['query'],_0x5c891c[_0x61d9('0x4b')]));if(_0x241473[_0x61d9('0x4a')]['filter']){_0x9f9d94[_0x61d9('0x52')]=_[_0x61d9('0x5d')](_0x9f9d94[_0x61d9('0x52')],{'$or':_[_0x61d9('0x43')](_0x9f9d94[_0x61d9('0x4e')],function(_0xc5cfe3){var _0x42a284={};_0x42a284[_0xc5cfe3]={'$like':'%'+_0x241473[_0x61d9('0x4a')][_0x61d9('0x54')]+'%'};return _0x42a284;})});}_0x9f9d94=_[_0x61d9('0x5d')]({},_0x9f9d94,_0x241473['options']);return _0x364d8a[_0x61d9('0x92')](_0x9f9d94);}})[_0x61d9('0xd')](function(_0x24651d){if(_0x24651d){_0x57ebd0=_0x24651d[_0x61d9('0x5c')];if(!_0x241473[_0x61d9('0x4a')][_0x61d9('0x4f')]('nolimit')){_0x9f9d94[_0x61d9('0x1d')]=qs['limit'](_0x241473[_0x61d9('0x4a')][_0x61d9('0x1d')]);_0x9f9d94[_0x61d9('0x1b')]=qs['offset'](_0x241473[_0x61d9('0x4a')]['offset']);}return _0x364d8a[_0x61d9('0x92')](_0x9f9d94);}})['then'](function(_0x3cfebc){if(_0x3cfebc){return _0x3cfebc?{'count':_0x57ebd0,'rows':_0x3cfebc}:null;}})[_0x61d9('0xd')](respondWithResult(_0x39cee2,null))[_0x61d9('0x17')](handleError(_0x39cee2,null));};exports['getMessages']=function(_0x5b8764,_0x44ba47){var _0x11138b={'raw':!![],'where':{}};var _0x22e0ee={};var _0x1920ea={'count':0x0,'rows':[]};return db['MailAccount'][_0x61d9('0x69')]({'where':{'id':_0x5b8764[_0x61d9('0x5b')]['id']}})['then'](handleEntityNotFound(_0x44ba47,null))[_0x61d9('0xd')](function(_0x14ebe6){if(_0x14ebe6){_0x22e0ee['model']=_['keys'](db[_0x61d9('0x93')]['rawAttributes']);_0x22e0ee[_0x61d9('0x4a')]=_['keys'](_0x5b8764[_0x61d9('0x4a')]);_0x22e0ee[_0x61d9('0x4b')]=_[_0x61d9('0x4c')](_0x22e0ee[_0x61d9('0x48')],_0x22e0ee['query']);_0x11138b[_0x61d9('0x4e')]=_[_0x61d9('0x4c')](_0x22e0ee[_0x61d9('0x48')],qs['fields'](_0x5b8764[_0x61d9('0x4a')]['fields']));_0x11138b[_0x61d9('0x4e')]=_0x11138b[_0x61d9('0x4e')][_0x61d9('0x5c')]?_0x11138b['attributes']:_0x22e0ee[_0x61d9('0x48')];if(!_0x5b8764['query'][_0x61d9('0x4f')](_0x61d9('0x50'))){_0x11138b[_0x61d9('0x1d')]=qs['limit'](_0x5b8764[_0x61d9('0x4a')]['limit']);_0x11138b[_0x61d9('0x1b')]=qs[_0x61d9('0x1b')](_0x5b8764[_0x61d9('0x4a')][_0x61d9('0x1b')]);}_0x11138b[_0x61d9('0x6a')]=qs[_0x61d9('0x51')](_0x5b8764[_0x61d9('0x4a')][_0x61d9('0x51')]);_0x11138b[_0x61d9('0x52')]=qs['filters'](_['pick'](_0x5b8764[_0x61d9('0x4a')],_0x22e0ee['filters']));_0x11138b[_0x61d9('0x52')]['MailAccountId']=_0x14ebe6['id'];if(_0x5b8764[_0x61d9('0x4a')][_0x61d9('0x54')]){_0x11138b['where']=_[_0x61d9('0x5d')](_0x11138b['where'],{'$or':_[_0x61d9('0x43')](_0x11138b[_0x61d9('0x4e')],function(_0x275b03){var _0x5b4011={};_0x5b4011[_0x275b03]={'$like':'%'+_0x5b8764['query'][_0x61d9('0x54')]+'%'};return _0x5b4011;})});}if(_0x5b8764['query'][_0x61d9('0x94')]){var _0x3576ee=_0x5b8764[_0x61d9('0x4a')]['$gte'][_0x61d9('0x95')](',');var _0x4e0e8f={};_0x4e0e8f[_0x3576ee[0x0]]={'$gte':moment(_0x3576ee[0x1])['format'](_0x61d9('0x96'))};_0x11138b[_0x61d9('0x52')]=_['merge'](_0x11138b[_0x61d9('0x52')],_0x4e0e8f);}_0x11138b=_[_0x61d9('0x5d')]({},_0x11138b,_0x5b8764[_0x61d9('0x55')]);return db[_0x61d9('0x93')][_0x61d9('0x1e')]({'where':_0x11138b['where']})[_0x61d9('0xd')](function(_0x306653){_0x1920ea[_0x61d9('0x1e')]=_0x306653;if(_0x5b8764[_0x61d9('0x4a')]['includeAll']){_0x11138b[_0x61d9('0x57')]=[{'all':!![]}];}return db[_0x61d9('0x93')][_0x61d9('0x58')](_0x11138b);})[_0x61d9('0xd')](function(_0x4dbec2){if(_0x5b8764[_0x61d9('0x4a')]['inlineCss']===_0x61d9('0x97')){for(var _0x2c32cc=0x0;_0x2c32cc<_0x4dbec2[_0x61d9('0x5c')];_0x2c32cc++){_0x4dbec2[_0x2c32cc][_0x61d9('0x60')]=juice(_0x4dbec2[_0x2c32cc][_0x61d9('0x60')]);}}_0x1920ea[_0x61d9('0x59')]=_0x4dbec2;return _0x1920ea;});}})[_0x61d9('0xd')](respondWithFilteredResult(_0x44ba47,_0x11138b))['catch'](handleError(_0x44ba47,null));};exports['send']=function(_0xfe47,_0x233169){var _0x37ce12,_0x49fb79={},_0x55ca95;if(_0xfe47['body']['to']){_0x55ca95=_0xfe47['body']['to'][_0x61d9('0x95')](',')[0x0];}return db[_0x61d9('0x44')]['find']({'where':{'id':_0xfe47['params']['id']},'include':[{'model':db['CmList'],'as':_0x61d9('0x98'),'include':[{'model':db[_0x61d9('0x84')],'as':_0x61d9('0x99'),'where':{'email':_0x55ca95},'limit':0x1,'order':[[_0x61d9('0x9a'),_0x61d9('0x9b')]]}]},{'model':db[_0x61d9('0x40')],'as':_0x61d9('0x3e'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':'CloudProvider','raw':!![]}]}]})[_0x61d9('0xd')](handleEntityNotFound(_0x233169,null))['then'](function(_0xda189f){if(!_0xda189f)return;_0x37ce12=_0xda189f;if(!_0xda189f[_0x61d9('0x3e')])throw new Error('Smtp\x20configuration\x20not\x20found');if(_[_0x61d9('0x9c')](_0xfe47['body'][_0x61d9('0x9d')])){_0xfe47[_0x61d9('0x60')][_0x61d9('0x9d')]=util[_0x61d9('0x9e')](_0x61d9('0x9f'),_0xda189f['name'],_0xda189f['email']||_0xda189f['Smtp'][_0x61d9('0x32')]);}if(_0xfe47[_0x61d9('0x60')]['attachments']&&_0xfe47[_0x61d9('0x60')]['attachments'][_0x61d9('0x5c')]){for(var _0x2d0bf5=0x0;_0x2d0bf5<_0xfe47['body'][_0x61d9('0xa0')][_0x61d9('0x5c')];_0x2d0bf5+=0x1){_0xfe47[_0x61d9('0x60')]['attachments'][_0x2d0bf5]={'filename':_0xfe47[_0x61d9('0x60')][_0x61d9('0xa0')][_0x2d0bf5][_0x61d9('0x27')],'path':path[_0x61d9('0xa1')](config[_0x61d9('0xa2')],_0x61d9('0xa3'),_0xfe47[_0x61d9('0x60')][_0x61d9('0xa0')][_0x2d0bf5]['basename'])};}}var _0x3dad3f=_0xda189f[_0x61d9('0xa4')]();return respondWithRpcPromise(_0x61d9('0xa5'),'sendMail',{'account':_0x3dad3f,'message':_0xfe47[_0x61d9('0x60')]});})[_0x61d9('0xd')](function(_0x574acb){if(!_0x574acb)return;_0x49fb79=_0x574acb;if(!_0x37ce12[_0x61d9('0x98')])throw new Error(_0x61d9('0xa6'));if(_0x37ce12['List'][_0x61d9('0x99')][_0x61d9('0x5c')])return _0x37ce12[_0x61d9('0x98')][_0x61d9('0x99')][0x0];return db[_0x61d9('0x84')][_0x61d9('0x67')](_[_0x61d9('0xa7')](_0xfe47['body'],{'firstName':_0xfe47[_0x61d9('0x60')]['to'],'email':_0xfe47['body']['to'],'phone':_0xfe47[_0x61d9('0x60')]['to'],'ListId':_0x37ce12[_0x61d9('0x73')]}));})[_0x61d9('0xd')](function(_0x4a7263){if(!_0x4a7263)return;var _0x12ac34={'UserId':_0xfe47[_0x61d9('0x32')]['id'],'ContactId':_0x4a7263['id'],'MailAccountId':_0x37ce12['id'],'inReplyTo':_0x49fb79[_0x61d9('0xa8')],'to':_0xfe47['body'][_0x61d9('0x9d')],'cc':_0xfe47[_0x61d9('0x60')]['cc'],'subject':_0xfe47[_0x61d9('0x60')][_0x61d9('0xa9')],'attach':_0xfe47[_0x61d9('0x60')][_0x61d9('0xaa')],'firstMsgDirection':'out','lastMsgAt':moment()[_0x61d9('0x9e')](_0x61d9('0x96')),'lastMsgDirection':'out','Messages':[_[_0x61d9('0x5d')](_0xfe47['body'],{'messageId':_0x49fb79[_0x61d9('0xa8')],'sentAt':moment()[_0x61d9('0x9e')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x37ce12['id'],'UserId':_0xfe47['user']['id'],'ContactId':_0x4a7263['id']})]};if(_0xfe47[_0x61d9('0x60')][_0x61d9('0xab')]){_0x12ac34=_[_0x61d9('0x5d')](_0x12ac34,_0xfe47[_0x61d9('0x60')]['Interaction']);}return db[_0x61d9('0x81')]['create'](_0x12ac34,{'include':[{'model':db[_0x61d9('0x93')],'as':_0x61d9('0xac')}]});})['then'](respondWithResult(_0x233169,null))['catch'](handleError(_0x233169,null));};exports[_0x61d9('0xad')]=function(_0x7d4f16,_0xcba18a){return db['MailAccount']['find']({'where':{'id':_0x7d4f16['params']['id']},'include':[{'model':db[_0x61d9('0x40')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x61d9('0xae')],'as':'CloudProvider','raw':!![]}]}]})[_0x61d9('0xd')](handleEntityNotFound(_0xcba18a,null))[_0x61d9('0xd')](function(_0x23139b){if(!_0x23139b[_0x61d9('0x3e')])return;var _0x52d17f=_0x23139b['getSmtpOptions']();return respondWithRpcPromise('VerifySmtp',_0x61d9('0xad'),{'account':_0x52d17f});})['then'](respondWithResult(_0xcba18a,null))[_0x61d9('0x17')](handleError(_0xcba18a,null));};exports['destroy']=function(_0x3ac9cc,_0x3b6950){return db[_0x61d9('0x44')][_0x61d9('0x5e')]({'where':{'id':_0x3ac9cc['params']['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x3b6950,null))[_0x61d9('0xd')](function(_0x1a9b59){if(_0x1a9b59&&_0x1a9b59[_0x61d9('0x3a')]){throw new db[(_0x61d9('0xaf'))][(_0x61d9('0xb0'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x1a9b59;})['then'](removeEntity(_0x3b6950,null))[_0x61d9('0x17')](handleError(_0x3b6950,null));};exports[_0x61d9('0xb1')]=function(_0x1e8e5c,_0x2def42){return db[_0x61d9('0x44')]['find']({'where':{'id':_0x1e8e5c[_0x61d9('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2def42,null))['then'](function(_0x23b950){if(_0x23b950){return _0x23b950['addAgents'](_0x1e8e5c[_0x61d9('0x60')][_0x61d9('0x6d')],_['omit'](_0x1e8e5c[_0x61d9('0x60')],[_0x61d9('0x6d'),'id'])||{})[_0x61d9('0xb2')](function(_0x5a2810){for(var _0x212237=0x0;_0x212237<_0x1e8e5c['body'][_0x61d9('0x6d')][_0x61d9('0x5c')];_0x212237+=0x1){socket[_0x61d9('0xb3')](_0x61d9('0xb4'),{'UserId':Number(_0x1e8e5c['body'][_0x61d9('0x6d')][_0x212237]),'MailAccountId':Number(_0x1e8e5c[_0x61d9('0x5b')]['id'])});}return _0x5a2810;});}})[_0x61d9('0xd')](respondWithResult(_0x2def42,null))['catch'](handleError(_0x2def42,null));};exports[_0x61d9('0xb5')]=function(_0x9c9354,_0x5961f3){return db[_0x61d9('0x44')][_0x61d9('0x5e')]({'where':{'id':_0x9c9354[_0x61d9('0x5b')]['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x5961f3,null))[_0x61d9('0xd')](function(_0x3197f5){if(_0x3197f5){return _0x3197f5[_0x61d9('0xb5')](_0x9c9354[_0x61d9('0x4a')][_0x61d9('0x6d')])[_0x61d9('0xd')](function(){if(_['isArray'](_0x9c9354[_0x61d9('0x4a')][_0x61d9('0x6d')])){for(var _0x3a7b08=0x0;_0x3a7b08<_0x9c9354[_0x61d9('0x4a')][_0x61d9('0x6d')][_0x61d9('0x5c')];_0x3a7b08+=0x1){socket['emit'](_0x61d9('0xb6'),{'UserId':Number(_0x9c9354[_0x61d9('0x4a')][_0x61d9('0x6d')][_0x3a7b08]),'MailAccountId':Number(_0x9c9354[_0x61d9('0x5b')]['id'])});}}else{socket[_0x61d9('0xb3')](_0x61d9('0xb6'),{'UserId':Number(_0x9c9354[_0x61d9('0x4a')][_0x61d9('0x6d')]),'MailAccountId':Number(_0x9c9354[_0x61d9('0x5b')]['id'])});}});}})[_0x61d9('0xd')](respondWithStatusCode(_0x5961f3,null))[_0x61d9('0x17')](handleError(_0x5961f3,null));};exports[_0x61d9('0xb7')]=function(_0x351ef8,_0x1f7664){var _0x37bf0f={};var _0x3ec27f={};var _0x1bc5c1;var _0x35d9d8;return db[_0x61d9('0x44')]['findOne']({'where':{'id':_0x351ef8['params']['id']}})[_0x61d9('0xd')](handleEntityNotFound(_0x1f7664,null))['then'](function(_0x46006d){if(_0x46006d){_0x1bc5c1=_0x46006d;_0x3ec27f[_0x61d9('0x48')]=_[_0x61d9('0x49')](db[_0x61d9('0x86')][_0x61d9('0x45')]);_0x3ec27f[_0x61d9('0x4a')]=_[_0x61d9('0x49')](_0x351ef8[_0x61d9('0x4a')]);_0x3ec27f[_0x61d9('0x4b')]=_[_0x61d9('0x4c')](_0x3ec27f[_0x61d9('0x48')],_0x3ec27f[_0x61d9('0x4a')]);_0x37bf0f[_0x61d9('0x4e')]=_['intersection'](_0x3ec27f[_0x61d9('0x48')],qs['fields'](_0x351ef8[_0x61d9('0x4a')][_0x61d9('0x4d')]));_0x37bf0f[_0x61d9('0x4e')]=_0x37bf0f['attributes'][_0x61d9('0x5c')]?_0x37bf0f['attributes']:_0x3ec27f[_0x61d9('0x48')];_0x37bf0f[_0x61d9('0x6a')]=qs[_0x61d9('0x51')](_0x351ef8[_0x61d9('0x4a')]['sort']);_0x37bf0f['where']=qs[_0x61d9('0x4b')](_['pick'](_0x351ef8[_0x61d9('0x4a')],_0x3ec27f[_0x61d9('0x4b')]));if(_0x351ef8[_0x61d9('0x4a')][_0x61d9('0x54')]){_0x37bf0f[_0x61d9('0x52')]=_['merge'](_0x37bf0f['where'],{'$or':_[_0x61d9('0x43')](_0x37bf0f[_0x61d9('0x4e')],function(_0x2b912f){var _0x31583c={};_0x31583c[_0x2b912f]={'$like':'%'+_0x351ef8[_0x61d9('0x4a')]['filter']+'%'};return _0x31583c;})});}_0x37bf0f=_[_0x61d9('0x5d')]({},_0x37bf0f,_0x351ef8[_0x61d9('0x55')]);return _0x1bc5c1[_0x61d9('0xb7')](_0x37bf0f);}})[_0x61d9('0xd')](function(_0x4e19a9){if(_0x4e19a9){_0x35d9d8=_0x4e19a9[_0x61d9('0x5c')];if(!_0x351ef8[_0x61d9('0x4a')]['hasOwnProperty']('nolimit')){_0x37bf0f['limit']=qs['limit'](_0x351ef8['query'][_0x61d9('0x1d')]);_0x37bf0f[_0x61d9('0x1b')]=qs[_0x61d9('0x1b')](_0x351ef8['query'][_0x61d9('0x1b')]);}return _0x1bc5c1[_0x61d9('0xb7')](_0x37bf0f);}})[_0x61d9('0xd')](function(_0xc7e5dd){if(_0xc7e5dd){return _0xc7e5dd?{'count':_0x35d9d8,'rows':_0xc7e5dd}:null;}})['then'](respondWithResult(_0x1f7664,null))[_0x61d9('0x17')](handleError(_0x1f7664,null));};
\ No newline at end of file
+var _0xd37f=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','getInteractions','MailInteraction','CmContact','Contact','User','Owner','internal','Tag','Tags','color','tag','addApplications','transaction','sequelize','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','MailMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','split','List','Contacts','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','%s\x20<%s>','attachments','join','server/files/attachments','basename','getSmtpOptions','SendMail','subject','out','messageId','Interaction','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','path','lodash','ioredis','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','client','http','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','status','end','json','offset','undefined','count','limit','Content-Range','update','then','destroy','get','MailAccounts','UserProfileResource','sendStatus','stack','name','send','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp.office365.com','user','username','password','pass','modernAuthentication','CloudProviderId','port','host','secure','service','authentication','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','mandatoryDispositionPause','MailAccount','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','options','include','findAll','rows','catch','show','rawAttributes','includeAll','find','body','provider','params','Mail\x20Account\x20not\x20found','describe','MailAccountId','Disposition','findOne','pick','filter','removeDispositions','ids','addAnswer','CannedAnswer','create','getAnswers','removeAnswers','custom','email','ListId','isNil','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId'];(function(_0x4581e2,_0xa4ccd7){var _0x4e568d=function(_0x2e81ad){while(--_0x2e81ad){_0x4581e2['push'](_0x4581e2['shift']());}};_0x4e568d(++_0xa4ccd7);}(_0xd37f,0x1b9));var _0xfd37=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xd37f[_0x110c3d];return _0x226d67;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require('util');var path=require(_0xfd37('0x0'));var _=require(_0xfd37('0x1'));var juice=require('juice');var Redis=require(_0xfd37('0x2'));var qs=require('../../components/parsers/qs');var logger=require(_0xfd37('0x3'))('api');var config=require(_0xfd37('0x4'));var db=require(_0xfd37('0x5'))['db'];config[_0xfd37('0x6')]=_[_0xfd37('0x7')](config[_0xfd37('0x6')],{'host':_0xfd37('0x8'),'port':0x18eb});var socket=require(_0xfd37('0x9'))(new Redis(config[_0xfd37('0x6')]));require(_0xfd37('0xa'))[_0xfd37('0xb')](socket);var jayson=require('jayson/promise');var client=jayson[_0xfd37('0xc')][_0xfd37('0xd')]({'port':0x232b});function respondWithRpcPromise(_0x2ac41f,_0x432ede,_0x200778,_0x57a5be){return new BPromise(function(_0x5efb2e,_0x1c2698){var _0x3268de=_0x57a5be||client;return _0x3268de[_0xfd37('0xe')](_0x2ac41f,_0x200778)['then'](function(_0x4e9a94){logger[_0xfd37('0xf')](_0xfd37('0x10'),_0x432ede,_0xfd37('0x11'));logger[_0xfd37('0x12')](_0xfd37('0x13'),_0x432ede,_0xfd37('0x11'),JSON[_0xfd37('0x14')](_0x4e9a94));if(_0x4e9a94[_0xfd37('0x15')]){if(_0x4e9a94['error']['code']===0x1f4){logger[_0xfd37('0x15')]('MailAccount,\x20%s,\x20%s',_0x432ede,_0x4e9a94[_0xfd37('0x15')][_0xfd37('0x16')]);return _0x1c2698(_0x4e9a94['error']['message']);}logger['error'](_0xfd37('0x10'),_0x432ede,_0x4e9a94[_0xfd37('0x15')][_0xfd37('0x16')]);return _0x5efb2e(_0x4e9a94[_0xfd37('0x15')][_0xfd37('0x16')]);}else{logger['info'](_0xfd37('0x10'),_0x432ede,_0xfd37('0x11'));_0x5efb2e(_0x4e9a94[_0xfd37('0x17')][_0xfd37('0x16')]);}})['catch'](function(_0x59b875){logger[_0xfd37('0x15')]('MailAccount,\x20%s,\x20%s',_0x432ede,_0x59b875);_0x1c2698(_0x59b875);});});}function respondWithStatusCode(_0x35e7a3,_0x5c2c69){_0x5c2c69=_0x5c2c69||0xcc;return function(_0x1f3d58){if(_0x1f3d58){return _0x35e7a3['sendStatus'](_0x5c2c69);}return _0x35e7a3[_0xfd37('0x18')](_0x5c2c69)[_0xfd37('0x19')]();};}function respondWithResult(_0x448e71,_0x5a9a51){_0x5a9a51=_0x5a9a51||0xc8;return function(_0x3b56e8){if(_0x3b56e8){return _0x448e71[_0xfd37('0x18')](_0x5a9a51)[_0xfd37('0x1a')](_0x3b56e8);}};}function respondWithFilteredResult(_0x14324e,_0x48a2ec){return function(_0x9b96ab){if(_0x9b96ab){var _0x2129d2=typeof _0x48a2ec[_0xfd37('0x1b')]===_0xfd37('0x1c')&&typeof _0x48a2ec['limit']===_0xfd37('0x1c');var _0x392857=_0x9b96ab[_0xfd37('0x1d')];var _0x5390a4=_0x2129d2?0x0:_0x48a2ec[_0xfd37('0x1b')];var _0x866420=_0x2129d2?_0x9b96ab[_0xfd37('0x1d')]:_0x48a2ec[_0xfd37('0x1b')]+_0x48a2ec[_0xfd37('0x1e')];var _0xa4b1fa;if(_0x866420>=_0x392857){_0x866420=_0x392857;_0xa4b1fa=0xc8;}else{_0xa4b1fa=0xce;}_0x14324e[_0xfd37('0x18')](_0xa4b1fa);return _0x14324e['set'](_0xfd37('0x1f'),_0x5390a4+'-'+_0x866420+'/'+_0x392857)[_0xfd37('0x1a')](_0x9b96ab);}return null;};}function saveUpdates(_0x366171){return function(_0x1dc20c){if(_0x1dc20c){return _0x1dc20c[_0xfd37('0x20')](_0x366171)[_0xfd37('0x21')](function(_0x36ae41){return _0x36ae41;});}return null;};}function removeEntity(_0x135535){return function(_0x226971){if(_0x226971){return _0x226971[_0xfd37('0x22')]()[_0xfd37('0x21')](function(){var _0x486918=_0x226971[_0xfd37('0x23')]({'plain':!![]});var _0x459908=_0xfd37('0x24');return db[_0xfd37('0x25')][_0xfd37('0x22')]({'where':{'type':_0x459908,'resourceId':_0x486918['id']}})['then'](function(){return _0x226971;});})[_0xfd37('0x21')](function(){_0x135535[_0xfd37('0x18')](0xcc)[_0xfd37('0x19')]();});}};}function handleEntityNotFound(_0xa4fa2e){return function(_0x1c7b88){if(!_0x1c7b88){_0xa4fa2e[_0xfd37('0x26')](0x194);}return _0x1c7b88;};}function handleError(_0x3010bd,_0x176451){_0x176451=_0x176451||0x1f4;return function(_0x10eea7){logger['error'](_0x10eea7[_0xfd37('0x27')]);if(_0x10eea7[_0xfd37('0x28')]){delete _0x10eea7['name'];}_0x3010bd[_0xfd37('0x18')](_0x176451)[_0xfd37('0x29')](_0x10eea7);};}function getImapHost(_0x474af7){switch(_0x474af7){case'gmail':return'imap.gmail.com';case _0xfd37('0x2a'):return _0xfd37('0x2b');case _0xfd37('0x2c'):return _0xfd37('0x2d');case _0xfd37('0x2e'):return _0xfd37('0x2f');}throw new Error(_0xfd37('0x30'),_0x474af7);}function getSmtpHost(_0x573c5f){switch(_0x573c5f){case'gmail':return _0xfd37('0x31');case'yahoo':return'smtp.mail.yahoo.com';case _0xfd37('0x2c'):return'smtp-mail.outlook.com';case _0xfd37('0x2e'):return _0xfd37('0x32');}throw new Error(_0xfd37('0x30'),_0x573c5f);}function getAuthenticationOptions(_0x368861,_0x7ec15c){var _0x4dae70={};var _0x41b8a7={};if(_0x368861){_0x4dae70[_0xfd37('0x33')]=_0x41b8a7[_0xfd37('0x33')]=_0x7ec15c[_0xfd37('0x34')];_0x4dae70[_0xfd37('0x35')]=_0x41b8a7[_0xfd37('0x36')]=_0x7ec15c[_0xfd37('0x35')];if(_0x7ec15c['modernAuthentication']){_0x4dae70[_0xfd37('0x37')]=_0x41b8a7['modernAuthentication']=!![];_0x4dae70['CloudProviderId']=_0x41b8a7[_0xfd37('0x38')]=_0x7ec15c['CloudProviderId'];_0x4dae70['password']=_0x41b8a7['pass']=null;}else{_0x4dae70['CloudProviderId']=_0x41b8a7['CloudProviderId']=null;}_0x4dae70['host']=getImapHost(_0x368861);_0x4dae70[_0xfd37('0x39')]=0x3e1;_0x41b8a7[_0xfd37('0x3a')]=getSmtpHost(_0x368861);_0x41b8a7[_0xfd37('0x39')]=0x24b;_0x41b8a7[_0xfd37('0x3b')]=![];_0x4dae70[_0xfd37('0x3c')]=_0x41b8a7['service']=null;}else{if(_0x7ec15c[_0xfd37('0x3d')]){_0x4dae70[_0xfd37('0x33')]=_0x41b8a7['user']=_0x7ec15c[_0xfd37('0x34')];_0x4dae70[_0xfd37('0x35')]=_0x41b8a7[_0xfd37('0x36')]=_0x7ec15c[_0xfd37('0x35')];}else{_0x4dae70['authentication']=_0x41b8a7[_0xfd37('0x3d')]=![];_0x4dae70['user']=_0x41b8a7['user']=null;_0x4dae70[_0xfd37('0x35')]=_0x41b8a7[_0xfd37('0x36')]=null;}_0x4dae70['host']=_0x7ec15c[_0xfd37('0x3e')][_0xfd37('0x3a')];_0x4dae70[_0xfd37('0x39')]=_0x7ec15c[_0xfd37('0x3e')][_0xfd37('0x39')];_0x41b8a7[_0xfd37('0x3a')]=_0x7ec15c[_0xfd37('0x3f')][_0xfd37('0x3a')];_0x41b8a7['port']=_0x7ec15c['Smtp'][_0xfd37('0x39')];}return{'Imap':_0x4dae70,'Smtp':_0x41b8a7};}exports[_0xfd37('0x40')]=function(_0x2f1b36,_0x42436e){var _0x266042={'include':[{'model':db[_0xfd37('0x41')],'as':_0xfd37('0x3e')},{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f')},{'model':db[_0xfd37('0x43')],'as':_0xfd37('0x44')}]},_0x3c4df3={},_0x352d54={'count':0x0,'rows':[]};var _0x392924=_['map'](db[_0xfd37('0x45')]['rawAttributes'],function(_0x4138fe){return{'name':_0x4138fe[_0xfd37('0x46')],'type':_0x4138fe['type'][_0xfd37('0x47')]};});_0x3c4df3[_0xfd37('0x48')]=_[_0xfd37('0x49')](_0x392924,'name');_0x3c4df3[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x2f1b36[_0xfd37('0x4a')]);_0x3c4df3[_0xfd37('0x4c')]=_[_0xfd37('0x4d')](_0x3c4df3[_0xfd37('0x48')],_0x3c4df3['query']);_0x266042[_0xfd37('0x4e')]=_['intersection'](_0x3c4df3[_0xfd37('0x48')],qs[_0xfd37('0x4f')](_0x2f1b36['query'][_0xfd37('0x4f')]));_0x266042[_0xfd37('0x4e')]=_0x266042['attributes'][_0xfd37('0x50')]?_0x266042[_0xfd37('0x4e')]:_0x3c4df3[_0xfd37('0x48')];if(!_0x2f1b36[_0xfd37('0x4a')][_0xfd37('0x51')](_0xfd37('0x52'))){_0x266042[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x2f1b36[_0xfd37('0x4a')][_0xfd37('0x1e')]);_0x266042[_0xfd37('0x1b')]=qs[_0xfd37('0x1b')](_0x2f1b36[_0xfd37('0x4a')][_0xfd37('0x1b')]);}_0x266042[_0xfd37('0x53')]=qs[_0xfd37('0x54')](_0x2f1b36[_0xfd37('0x4a')][_0xfd37('0x54')]);_0x266042[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_['pick'](_0x2f1b36['query'],_0x3c4df3[_0xfd37('0x4c')]),_0x392924);if(_0x2f1b36['query']['filter']){_0x266042[_0xfd37('0x55')]=_[_0xfd37('0x56')](_0x266042[_0xfd37('0x55')],{'$or':_[_0xfd37('0x49')](_0x392924,function(_0x4aa2a6){if(_0x4aa2a6[_0xfd37('0x57')]!=='VIRTUAL'){var _0x1f09bc={};_0x1f09bc[_0x4aa2a6[_0xfd37('0x28')]]={'$like':'%'+_0x2f1b36['query']['filter']+'%'};return _0x1f09bc;}})});}_0x266042=_[_0xfd37('0x56')]({},_0x266042,_0x2f1b36[_0xfd37('0x58')]);var _0x4408dd={'where':_0x266042[_0xfd37('0x55')]};return db['MailAccount'][_0xfd37('0x1d')](_0x4408dd)[_0xfd37('0x21')](function(_0x2f1d4b){_0x352d54[_0xfd37('0x1d')]=_0x2f1d4b;if(_0x2f1b36[_0xfd37('0x4a')]['includeAll']){_0x266042[_0xfd37('0x59')]=[{'all':!![]}];}return db[_0xfd37('0x45')][_0xfd37('0x5a')](_0x266042);})[_0xfd37('0x21')](function(_0x16cf7e){_0x352d54[_0xfd37('0x5b')]=_0x16cf7e;return _0x352d54;})[_0xfd37('0x21')](respondWithFilteredResult(_0x42436e,_0x266042))[_0xfd37('0x5c')](handleError(_0x42436e,null));};exports[_0xfd37('0x5d')]=function(_0x1411da,_0x90ecf7){var _0xcbe336={'raw':![],'where':{'id':_0x1411da['params']['id']},'include':[{'model':db[_0xfd37('0x41')],'as':_0xfd37('0x3e')},{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f')},{'model':db[_0xfd37('0x43')],'as':_0xfd37('0x44')}]},_0x241fc4={};_0x241fc4[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db[_0xfd37('0x45')][_0xfd37('0x5e')]);_0x241fc4[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x1411da['query']);_0x241fc4[_0xfd37('0x4c')]=_[_0xfd37('0x4d')](_0x241fc4[_0xfd37('0x48')],_0x241fc4['query']);_0xcbe336['attributes']=_[_0xfd37('0x4d')](_0x241fc4['model'],qs['fields'](_0x1411da['query'][_0xfd37('0x4f')]));_0xcbe336[_0xfd37('0x4e')]=_0xcbe336[_0xfd37('0x4e')]['length']?_0xcbe336[_0xfd37('0x4e')]:_0x241fc4['model'];if(_0x1411da[_0xfd37('0x4a')][_0xfd37('0x5f')]){_0xcbe336[_0xfd37('0x59')]=[{'all':!![]}];}_0xcbe336=_[_0xfd37('0x56')]({},_0xcbe336,_0x1411da[_0xfd37('0x58')]);return db[_0xfd37('0x45')][_0xfd37('0x60')](_0xcbe336)[_0xfd37('0x21')](handleEntityNotFound(_0x90ecf7,null))[_0xfd37('0x21')](respondWithResult(_0x90ecf7,null))[_0xfd37('0x5c')](handleError(_0x90ecf7,null));};exports[_0xfd37('0x20')]=function(_0x3ca1ae,_0x4c2860){if(_0x3ca1ae[_0xfd37('0x61')]['id']){delete _0x3ca1ae[_0xfd37('0x61')]['id'];}var _0x1776d8=_0x3ca1ae['body'][_0xfd37('0x62')]==='custom'?null:_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x62')];var _0x55c421=_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x3e')]||{};var _0x550f69=_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x3f')]||{};if(_0x1776d8){_0x55c421['host']=getImapHost(_0x1776d8);_0x55c421['port']=0x3e1;_0x550f69[_0xfd37('0x3a')]=getSmtpHost(_0x1776d8);_0x550f69['port']=0x24b;_0x550f69['secure']=![];}if(_0x550f69['modernAuthentication']){_0x550f69[_0xfd37('0x3b')]=![];}else{_0x550f69[_0xfd37('0x38')]=null;}if(!_0x55c421[_0xfd37('0x37')])_0x55c421[_0xfd37('0x38')]=null;_0x3ca1ae['body'][_0xfd37('0x3e')]=_0x55c421;_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x3f')]=_0x550f69;return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x3ca1ae[_0xfd37('0x63')]['id']},'include':[{'model':db[_0xfd37('0x41')],'as':'Imap'},{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f')},{'model':db[_0xfd37('0x43')],'as':_0xfd37('0x44')}]})[_0xfd37('0x21')](handleEntityNotFound(_0x4c2860,null))[_0xfd37('0x21')](function(_0x4650fd){if(!_0x4650fd)throw new Error(_0xfd37('0x64'));if(_0x4650fd[_0xfd37('0x3c')])delete _0x3ca1ae[_0xfd37('0x61')]['Imap'];return _0x4650fd;})[_0xfd37('0x21')](saveUpdates(_0x3ca1ae[_0xfd37('0x61')],null))['then'](function(_0x8d4c6f){if(!_0x3ca1ae[_0xfd37('0x61')]['Imap'])return _0x8d4c6f;return db['MailServerIn'][_0xfd37('0x20')](_0x3ca1ae[_0xfd37('0x61')]['Imap'],{'where':{'MailAccountId':_0x8d4c6f['id']}})['then'](function(){return _0x8d4c6f;});})['then'](function(_0x42ea80){if(!_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x3f')])return _0x42ea80;return db[_0xfd37('0x42')][_0xfd37('0x20')](_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x3f')],{'where':{'MailAccountId':_0x42ea80['id']}})[_0xfd37('0x21')](function(){return _0x42ea80;});})[_0xfd37('0x21')](respondWithResult(_0x4c2860,null))[_0xfd37('0x5c')](handleError(_0x4c2860,null));};exports[_0xfd37('0x65')]=function(_0x2baa50,_0x3aed3a){return db[_0xfd37('0x45')][_0xfd37('0x65')]()['then'](respondWithResult(_0x3aed3a,null))[_0xfd37('0x5c')](handleError(_0x3aed3a,null));};exports['addDisposition']=function(_0x87172d,_0x498062){if(_0x87172d['body']['id']){delete _0x87172d[_0xfd37('0x61')]['id'];}return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x87172d[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x498062,null))[_0xfd37('0x21')](function(_0x164495){if(_0x164495){_0x87172d['body'][_0xfd37('0x66')]=_0x164495['id'];return db[_0xfd37('0x67')]['create'](_0x87172d[_0xfd37('0x61')]);}})[_0xfd37('0x21')](respondWithResult(_0x498062,null))[_0xfd37('0x5c')](handleError(_0x498062,null));};exports['getDispositions']=function(_0x1f4e15,_0x19795c){var _0x40effd={'raw':![],'where':{}};var _0x332feb={};var _0x427838={'count':0x0,'rows':[]};return db['MailAccount'][_0xfd37('0x68')]({'where':{'id':_0x1f4e15[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x19795c,null))[_0xfd37('0x21')](function(_0xb37d5){if(_0xb37d5){_0x332feb[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db[_0xfd37('0x67')][_0xfd37('0x5e')]);_0x332feb[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x1f4e15[_0xfd37('0x4a')]);_0x332feb[_0xfd37('0x4c')]=_['intersection'](_0x332feb[_0xfd37('0x48')],_0x332feb['query']);_0x40effd[_0xfd37('0x4e')]=_[_0xfd37('0x4d')](_0x332feb[_0xfd37('0x48')],qs[_0xfd37('0x4f')](_0x1f4e15['query']['fields']));_0x40effd[_0xfd37('0x4e')]=_0x40effd[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x40effd[_0xfd37('0x4e')]:_0x332feb[_0xfd37('0x48')];if(!_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x51')](_0xfd37('0x52'))){_0x40effd[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x1e')]);_0x40effd[_0xfd37('0x1b')]=qs[_0xfd37('0x1b')](_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x1b')]);}_0x40effd[_0xfd37('0x53')]=qs[_0xfd37('0x54')](_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x54')]);_0x40effd[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_[_0xfd37('0x69')](_0x1f4e15[_0xfd37('0x4a')],_0x332feb[_0xfd37('0x4c')]));_0x40effd[_0xfd37('0x55')][_0xfd37('0x66')]=_0xb37d5['id'];if(_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x6a')]){_0x40effd[_0xfd37('0x55')]=_[_0xfd37('0x56')](_0x40effd['where'],{'$or':_['map'](_0x40effd[_0xfd37('0x4e')],function(_0x12fb10){var _0x3b3f11={};_0x3b3f11[_0x12fb10]={'$like':'%'+_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x6a')]+'%'};return _0x3b3f11;})});}_0x40effd=_[_0xfd37('0x56')]({},_0x40effd,_0x1f4e15[_0xfd37('0x58')]);return db[_0xfd37('0x67')][_0xfd37('0x1d')]({'where':_0x40effd[_0xfd37('0x55')]})[_0xfd37('0x21')](function(_0x453dab){_0x427838['count']=_0x453dab;if(_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x5f')]){_0x40effd[_0xfd37('0x59')]=[{'all':!![]}];}return db[_0xfd37('0x67')][_0xfd37('0x5a')](_0x40effd);})[_0xfd37('0x21')](function(_0x407137){_0x427838['rows']=_0x407137;return _0x427838;});}})[_0xfd37('0x21')](respondWithFilteredResult(_0x19795c,_0x40effd))[_0xfd37('0x5c')](handleError(_0x19795c,null));};exports[_0xfd37('0x6b')]=function(_0x504078,_0x570b37){return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x504078[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x570b37,null))[_0xfd37('0x21')](function(_0x4cb45b){if(_0x4cb45b){return _0x4cb45b[_0xfd37('0x6b')](_0x504078[_0xfd37('0x4a')][_0xfd37('0x6c')]);}})[_0xfd37('0x21')](respondWithStatusCode(_0x570b37,null))[_0xfd37('0x5c')](handleError(_0x570b37,null));};exports[_0xfd37('0x6d')]=function(_0x4172f0,_0x3b0f66){if(_0x4172f0[_0xfd37('0x61')]['id']){delete _0x4172f0[_0xfd37('0x61')]['id'];}return db['MailAccount'][_0xfd37('0x60')]({'where':{'id':_0x4172f0[_0xfd37('0x63')]['id']}})['then'](handleEntityNotFound(_0x3b0f66,null))['then'](function(_0x6d51c5){if(_0x6d51c5){_0x4172f0[_0xfd37('0x61')][_0xfd37('0x66')]=_0x6d51c5['id'];return db[_0xfd37('0x6e')][_0xfd37('0x6f')](_0x4172f0[_0xfd37('0x61')]);}})[_0xfd37('0x21')](respondWithResult(_0x3b0f66,null))['catch'](handleError(_0x3b0f66,null));};exports[_0xfd37('0x70')]=function(_0x14df77,_0x3a58fa){var _0x3f419d={'raw':![],'where':{}};var _0x3a27cf={};var _0x42fcca={'count':0x0,'rows':[]};return db[_0xfd37('0x45')][_0xfd37('0x68')]({'where':{'id':_0x14df77[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x3a58fa,null))['then'](function(_0x52a7e7){if(_0x52a7e7){_0x3a27cf[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db[_0xfd37('0x6e')][_0xfd37('0x5e')]);_0x3a27cf[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x14df77[_0xfd37('0x4a')]);_0x3a27cf['filters']=_[_0xfd37('0x4d')](_0x3a27cf['model'],_0x3a27cf[_0xfd37('0x4a')]);_0x3f419d['attributes']=_[_0xfd37('0x4d')](_0x3a27cf[_0xfd37('0x48')],qs['fields'](_0x14df77['query'][_0xfd37('0x4f')]));_0x3f419d[_0xfd37('0x4e')]=_0x3f419d[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x3f419d['attributes']:_0x3a27cf[_0xfd37('0x48')];if(!_0x14df77[_0xfd37('0x4a')]['hasOwnProperty']('nolimit')){_0x3f419d[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x14df77[_0xfd37('0x4a')]['limit']);_0x3f419d[_0xfd37('0x1b')]=qs[_0xfd37('0x1b')](_0x14df77[_0xfd37('0x4a')]['offset']);}_0x3f419d['order']=qs[_0xfd37('0x54')](_0x14df77['query'][_0xfd37('0x54')]);_0x3f419d[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_[_0xfd37('0x69')](_0x14df77[_0xfd37('0x4a')],_0x3a27cf[_0xfd37('0x4c')]));_0x3f419d[_0xfd37('0x55')][_0xfd37('0x66')]=_0x52a7e7['id'];if(_0x14df77[_0xfd37('0x4a')]['filter']){_0x3f419d[_0xfd37('0x55')]=_[_0xfd37('0x56')](_0x3f419d[_0xfd37('0x55')],{'$or':_[_0xfd37('0x49')](_0x3f419d[_0xfd37('0x4e')],function(_0x45c75d){var _0x3f2720={};_0x3f2720[_0x45c75d]={'$like':'%'+_0x14df77['query'][_0xfd37('0x6a')]+'%'};return _0x3f2720;})});}_0x3f419d=_[_0xfd37('0x56')]({},_0x3f419d,_0x14df77[_0xfd37('0x58')]);return db[_0xfd37('0x6e')][_0xfd37('0x1d')]({'where':_0x3f419d[_0xfd37('0x55')]})[_0xfd37('0x21')](function(_0x2f16a8){_0x42fcca[_0xfd37('0x1d')]=_0x2f16a8;if(_0x14df77[_0xfd37('0x4a')]['includeAll']){_0x3f419d[_0xfd37('0x59')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x3f419d);})[_0xfd37('0x21')](function(_0x402a76){_0x42fcca[_0xfd37('0x5b')]=_0x402a76;return _0x42fcca;});}})[_0xfd37('0x21')](respondWithFilteredResult(_0x3a58fa,_0x3f419d))[_0xfd37('0x5c')](handleError(_0x3a58fa,null));};exports[_0xfd37('0x71')]=function(_0x1beee1,_0x10cd71){return db['MailAccount']['find']({'where':{'id':_0x1beee1[_0xfd37('0x63')]['id']}})['then'](handleEntityNotFound(_0x10cd71,null))[_0xfd37('0x21')](function(_0x558ac5){if(_0x558ac5){return _0x558ac5[_0xfd37('0x71')](_0x1beee1[_0xfd37('0x4a')][_0xfd37('0x6c')]);}})[_0xfd37('0x21')](respondWithStatusCode(_0x10cd71,null))[_0xfd37('0x5c')](handleError(_0x10cd71,null));};exports[_0xfd37('0x6f')]=function(_0x4ec01d,_0x2cb540){var _0x401289={'name':_0x4ec01d[_0xfd37('0x61')][_0xfd37('0x28')],'key':_0x4ec01d[_0xfd37('0x61')]['key'],'provider':_0x4ec01d['body']['provider']===_0xfd37('0x72')?null:_0x4ec01d[_0xfd37('0x61')][_0xfd37('0x62')],'email':_0x4ec01d[_0xfd37('0x61')][_0xfd37('0x73')],'ListId':_0x4ec01d[_0xfd37('0x61')][_0xfd37('0x74')],'active':!_[_0xfd37('0x75')](_0x4ec01d[_0xfd37('0x61')]['active'])?_0x4ec01d['body'][_0xfd37('0x76')]:!![],'description':_0x4ec01d[_0xfd37('0x61')][_0xfd37('0x77')]||null};var _0x5d1540=getAuthenticationOptions(_0x401289[_0xfd37('0x62')],_0x4ec01d['body']);_0x401289[_0xfd37('0x3e')]=_0x5d1540[_0xfd37('0x3e')];_0x401289[_0xfd37('0x3f')]=_0x5d1540[_0xfd37('0x3f')];return db['MailAccount'][_0xfd37('0x6f')](_0x401289,{'include':[{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f')},{'model':db[_0xfd37('0x41')],'as':_0xfd37('0x3e')}]})[_0xfd37('0x21')](function(_0x3c7d0f){var _0x283b32=_0x4ec01d['user'][_0xfd37('0x23')]({'plain':!![]});if(!_0x283b32)throw new Error(_0xfd37('0x78'));if(_0x283b32[_0xfd37('0x79')]===_0xfd37('0x33')){var _0x5503f0=_0x3c7d0f[_0xfd37('0x23')]({'plain':!![]});return db['UserProfileSection'][_0xfd37('0x60')]({'where':{'name':'MailAccounts','userProfileId':_0x283b32[_0xfd37('0x7a')]},'raw':!![]})[_0xfd37('0x21')](function(_0x59b030){if(_0x59b030&&_0x59b030['autoAssociation']===0x0){return db[_0xfd37('0x25')][_0xfd37('0x6f')]({'name':_0x5503f0[_0xfd37('0x28')],'resourceId':_0x5503f0['id'],'type':_0x59b030[_0xfd37('0x28')],'sectionId':_0x59b030['id']},{})[_0xfd37('0x21')](function(){return _0x3c7d0f;});}else{return _0x3c7d0f;}})['catch'](function(_0x3ae2a6){logger[_0xfd37('0x15')](_0xfd37('0x7b'),_0x3ae2a6);throw _0x3ae2a6;});}return _0x3c7d0f;})[_0xfd37('0x21')](respondWithResult(_0x2cb540,0xc9))['catch'](handleError(_0x2cb540,null));};exports[_0xfd37('0x7c')]=function(_0xe1a02b,_0x461cbe){return db[_0xfd37('0x45')][_0xfd37('0x68')]({'where':{'id':_0xe1a02b['params']['id']}})['then'](handleEntityNotFound(_0x461cbe,null))[_0xfd37('0x21')](function(_0x50cc35){if(_0x50cc35){return _0x50cc35['getImap']();}return null;})[_0xfd37('0x21')](respondWithResult(_0x461cbe,null))[_0xfd37('0x5c')](handleError(_0x461cbe,null));};exports[_0xfd37('0x7d')]=function(_0x58d8b4,_0x2d6b7e){if(_0x58d8b4[_0xfd37('0x61')]['id']){delete _0x58d8b4[_0xfd37('0x61')]['id'];}return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x58d8b4[_0xfd37('0x63')]['id']}})['then'](handleEntityNotFound(_0x2d6b7e,null))[_0xfd37('0x21')](function(_0x50be0d){if(_0x50be0d){_0x58d8b4[_0xfd37('0x61')][_0xfd37('0x66')]=_0x50be0d['id'];return db[_0xfd37('0x41')][_0xfd37('0x6f')](_0x58d8b4['body']);}})[_0xfd37('0x21')](respondWithResult(_0x2d6b7e,null))[_0xfd37('0x5c')](handleError(_0x2d6b7e,null));};exports[_0xfd37('0x7e')]=function(_0x3bbcf4,_0x3b0bc5){return db['MailAccount'][_0xfd37('0x68')]({'where':{'id':_0x3bbcf4[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x3b0bc5,null))[_0xfd37('0x21')](function(_0x4cee8d){if(_0x4cee8d){return _0x4cee8d['setImap'](null);}return null;})[_0xfd37('0x21')](respondWithStatusCode(_0x3b0bc5,null))[_0xfd37('0x5c')](handleError(_0x3b0bc5,null));};exports[_0xfd37('0x7f')]=function(_0x59593e,_0x2d8fd2){return db[_0xfd37('0x45')][_0xfd37('0x68')]({'where':{'id':_0x59593e['params']['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x2d8fd2,null))['then'](function(_0x13b1b2){if(_0x13b1b2){return _0x13b1b2[_0xfd37('0x7f')]();}return null;})[_0xfd37('0x21')](respondWithResult(_0x2d8fd2,null))[_0xfd37('0x5c')](handleError(_0x2d8fd2,null));};exports[_0xfd37('0x80')]=function(_0x586fb9,_0x2c3ed4){if(_0x586fb9[_0xfd37('0x61')]['id']){delete _0x586fb9[_0xfd37('0x61')]['id'];}return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x586fb9[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x2c3ed4,null))[_0xfd37('0x21')](function(_0x20e211){if(_0x20e211){_0x586fb9['body'][_0xfd37('0x66')]=_0x20e211['id'];return db[_0xfd37('0x42')][_0xfd37('0x6f')](_0x586fb9[_0xfd37('0x61')]);}})[_0xfd37('0x21')](respondWithResult(_0x2c3ed4,null))[_0xfd37('0x5c')](handleError(_0x2c3ed4,null));};exports[_0xfd37('0x81')]=function(_0x814989,_0xd07821){return db[_0xfd37('0x45')]['findOne']({'where':{'id':_0x814989['params']['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0xd07821,null))[_0xfd37('0x21')](function(_0x3b1b2b){if(_0x3b1b2b){return _0x3b1b2b[_0xfd37('0x82')](null);}return null;})[_0xfd37('0x21')](respondWithStatusCode(_0xd07821,null))[_0xfd37('0x5c')](handleError(_0xd07821,null));};exports[_0xfd37('0x83')]=function(_0x3104da,_0x300a1d){return db['MailInteraction'][_0xfd37('0x60')]({'where':{'id':_0x3104da[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x300a1d,null))[_0xfd37('0x21')](function(_0x25f4aa){if(_0x25f4aa){return _0x25f4aa[_0xfd37('0x83')](_0x3104da[_0xfd37('0x61')]['ids'],_['omit'](_0x3104da['body'],[_0xfd37('0x6c'),'id'])||{});}})[_0xfd37('0x21')](respondWithResult(_0x300a1d,null))[_0xfd37('0x5c')](handleError(_0x300a1d,null));};exports[_0xfd37('0x84')]=function(_0x309a32,_0x4b70dd){var _0x5b35fe={'raw':![],'where':{}};var _0x36e821={};var _0x5c29bf={'count':0x0,'rows':[]};return db[_0xfd37('0x45')][_0xfd37('0x68')]({'where':{'id':_0x309a32[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x4b70dd,null))[_0xfd37('0x21')](function(_0x42119c){if(_0x42119c){_0x36e821[_0xfd37('0x48')]=_['keys'](db[_0xfd37('0x85')][_0xfd37('0x5e')]);_0x36e821[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x309a32[_0xfd37('0x4a')]);_0x36e821[_0xfd37('0x4c')]=_['intersection'](_0x36e821[_0xfd37('0x48')],_0x36e821[_0xfd37('0x4a')]);_0x5b35fe[_0xfd37('0x4e')]=_[_0xfd37('0x4d')](_0x36e821[_0xfd37('0x48')],qs['fields'](_0x309a32[_0xfd37('0x4a')][_0xfd37('0x4f')]));_0x5b35fe['attributes']=_0x5b35fe[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x5b35fe[_0xfd37('0x4e')]:_0x36e821['model'];if(!_0x309a32['query']['hasOwnProperty'](_0xfd37('0x52'))){_0x5b35fe['limit']=qs[_0xfd37('0x1e')](_0x309a32[_0xfd37('0x4a')][_0xfd37('0x1e')]);_0x5b35fe[_0xfd37('0x1b')]=qs[_0xfd37('0x1b')](_0x309a32[_0xfd37('0x4a')][_0xfd37('0x1b')]);}_0x5b35fe[_0xfd37('0x53')]=qs[_0xfd37('0x54')](_0x309a32[_0xfd37('0x4a')][_0xfd37('0x54')]);_0x5b35fe[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_['pick'](_0x309a32[_0xfd37('0x4a')],_0x36e821[_0xfd37('0x4c')]));_0x5b35fe[_0xfd37('0x55')][_0xfd37('0x66')]=_0x42119c['id'];if(_0x309a32[_0xfd37('0x4a')][_0xfd37('0x6a')]){_0x5b35fe[_0xfd37('0x55')]=_[_0xfd37('0x56')](_0x5b35fe['where'],{'$or':_[_0xfd37('0x49')](_0x5b35fe['attributes'],function(_0x437299){var _0x450eb9={};_0x450eb9[_0x437299]={'$like':'%'+_0x309a32[_0xfd37('0x4a')][_0xfd37('0x6a')]+'%'};return _0x450eb9;})});}_0x5b35fe=_[_0xfd37('0x56')]({},_0x5b35fe,_0x309a32[_0xfd37('0x58')]);return db[_0xfd37('0x85')][_0xfd37('0x1d')]({'where':_0x5b35fe[_0xfd37('0x55')]})[_0xfd37('0x21')](function(_0x41a46a){_0x5c29bf[_0xfd37('0x1d')]=_0x41a46a;if(_0x309a32['query'][_0xfd37('0x5f')]){_0x5b35fe[_0xfd37('0x59')]=[{'model':db[_0xfd37('0x86')],'as':_0xfd37('0x87'),'required':![]},{'model':db[_0xfd37('0x88')],'as':_0xfd37('0x89'),'attributes':[_0xfd37('0x28'),'fullname',_0xfd37('0x8a')],'required':![]},{'model':db[_0xfd37('0x8b')],'as':_0xfd37('0x8c'),'attributes':['id',_0xfd37('0x28'),_0xfd37('0x8d')],'where':_0x309a32[_0xfd37('0x4a')][_0xfd37('0x8e')]?{'id':_0x309a32['query'][_0xfd37('0x8e')]}:undefined,'required':_0x309a32[_0xfd37('0x4a')][_0xfd37('0x8e')]?!![]:![]}];}return db[_0xfd37('0x85')][_0xfd37('0x5a')](_0x5b35fe);})[_0xfd37('0x21')](function(_0x51c6a2){_0x5c29bf[_0xfd37('0x5b')]=_0x51c6a2;return _0x5c29bf;});}})[_0xfd37('0x21')](respondWithFilteredResult(_0x4b70dd,_0x5b35fe))[_0xfd37('0x5c')](handleError(_0x4b70dd,null));};exports[_0xfd37('0x8f')]=function addApplications(_0x4dd670,_0x4e3d97){var _0x3db67b=_0x4dd670[_0xfd37('0x63')]['id'];var _0x1b91cc=_0x4dd670[_0xfd37('0x61')];var _0x4007fd=0xc8;var _0x2b1784=null;return db['sequelize'][_0xfd37('0x90')]({'isolationLevel':db[_0xfd37('0x91')]['Transaction']['ISOLATION_LEVELS'][_0xfd37('0x92')]},function(_0x2762a8){return db[_0xfd37('0x45')][_0xfd37('0x68')]({'where':{'id':_0x3db67b},'transaction':_0x2762a8})['then'](function(_0x1d8a77){if(_0x1d8a77){return db['MailApplication']['destroy']({'where':{'MailAccountId':_0x3db67b},'transaction':_0x2762a8})[_0xfd37('0x21')](function(){var _0x4815a8=_['map'](_0x1b91cc,function(_0x203867){_0x203867['MailAccountId']=_0x3db67b;return _0x203867;});return db[_0xfd37('0x93')][_0xfd37('0x94')](_0x4815a8,{'transaction':_0x2762a8});});}else{_0x4007fd=0x194;_0x2b1784=[];}});})[_0xfd37('0x21')](function(){if(_0x4007fd!==0x194){return db[_0xfd37('0x93')][_0xfd37('0x95')]({'where':{'MailAccountId':_0x3db67b},'order':_0xfd37('0x96')})[_0xfd37('0x21')](function(_0x4a0126){_0x2b1784=_0x4a0126;});}})[_0xfd37('0x5c')](function(_0x3c398c){_0x4007fd=0x1f4;logger[_0xfd37('0x15')](_0x3c398c[_0xfd37('0x27')]);if(_0x3c398c['name']){delete _0x3c398c[_0xfd37('0x28')];}_0x2b1784=_0x3c398c;})[_0xfd37('0x97')](function(){if(_0x2b1784===null){_0x4e3d97['sendStatus'](_0x4007fd);}else{if(_0x4007fd===0x1f4){_0x4e3d97[_0xfd37('0x18')](_0x4007fd)[_0xfd37('0x29')](_0x2b1784);}else{_0x4e3d97[_0xfd37('0x18')](_0x4007fd)['json'](_0x2b1784);}}});};exports[_0xfd37('0x98')]=function(_0x1ce186,_0xe0a486){var _0x25b5df={};var _0x2d10b5={};var _0x379692;var _0x58333b;return db['MailAccount']['findOne']({'where':{'id':_0x1ce186[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0xe0a486,null))[_0xfd37('0x21')](function(_0x3c389a){if(_0x3c389a){_0x379692=_0x3c389a;_0x2d10b5[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db['MailApplication'][_0xfd37('0x5e')]);_0x2d10b5['query']=_[_0xfd37('0x4b')](_0x1ce186[_0xfd37('0x4a')]);_0x2d10b5[_0xfd37('0x4c')]=_[_0xfd37('0x4d')](_0x2d10b5[_0xfd37('0x48')],_0x2d10b5[_0xfd37('0x4a')]);_0x25b5df[_0xfd37('0x4e')]=_[_0xfd37('0x4d')](_0x2d10b5['model'],qs['fields'](_0x1ce186[_0xfd37('0x4a')][_0xfd37('0x4f')]));_0x25b5df['attributes']=_0x25b5df[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x25b5df['attributes']:_0x2d10b5['model'];_0x25b5df['order']=qs[_0xfd37('0x54')](_0x1ce186[_0xfd37('0x4a')][_0xfd37('0x54')]);_0x25b5df[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_[_0xfd37('0x69')](_0x1ce186[_0xfd37('0x4a')],_0x2d10b5[_0xfd37('0x4c')]));if(_0x1ce186[_0xfd37('0x4a')][_0xfd37('0x6a')]){_0x25b5df['where']=_['merge'](_0x25b5df[_0xfd37('0x55')],{'$or':_[_0xfd37('0x49')](_0x25b5df[_0xfd37('0x4e')],function(_0x36f764){var _0x395fed={};_0x395fed[_0x36f764]={'$like':'%'+_0x1ce186[_0xfd37('0x4a')]['filter']+'%'};return _0x395fed;})});}_0x25b5df=_[_0xfd37('0x56')]({},_0x25b5df,_0x1ce186[_0xfd37('0x58')]);return _0x379692['getApplications'](_0x25b5df);}})[_0xfd37('0x21')](function(_0x576876){if(_0x576876){_0x58333b=_0x576876[_0xfd37('0x50')];if(!_0x1ce186[_0xfd37('0x4a')]['hasOwnProperty'](_0xfd37('0x52'))){_0x25b5df[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x1ce186[_0xfd37('0x4a')]['limit']);_0x25b5df['offset']=qs[_0xfd37('0x1b')](_0x1ce186['query'][_0xfd37('0x1b')]);}return _0x379692[_0xfd37('0x98')](_0x25b5df);}})[_0xfd37('0x21')](function(_0x577214){if(_0x577214){return _0x577214?{'count':_0x58333b,'rows':_0x577214}:null;}})['then'](respondWithResult(_0xe0a486,null))[_0xfd37('0x5c')](handleError(_0xe0a486,null));};exports['getMessages']=function(_0x3929f4,_0xec02a8){var _0x3874c9={'raw':!![],'where':{}};var _0x15d520={};var _0x76a4a6={'count':0x0,'rows':[]};return db['MailAccount'][_0xfd37('0x68')]({'where':{'id':_0x3929f4[_0xfd37('0x63')]['id']}})['then'](handleEntityNotFound(_0xec02a8,null))[_0xfd37('0x21')](function(_0x21ed2d){if(_0x21ed2d){_0x15d520[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db[_0xfd37('0x99')][_0xfd37('0x5e')]);_0x15d520[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x3929f4[_0xfd37('0x4a')]);_0x15d520[_0xfd37('0x4c')]=_[_0xfd37('0x4d')](_0x15d520['model'],_0x15d520[_0xfd37('0x4a')]);_0x3874c9[_0xfd37('0x4e')]=_['intersection'](_0x15d520['model'],qs[_0xfd37('0x4f')](_0x3929f4[_0xfd37('0x4a')][_0xfd37('0x4f')]));_0x3874c9[_0xfd37('0x4e')]=_0x3874c9[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x3874c9[_0xfd37('0x4e')]:_0x15d520[_0xfd37('0x48')];if(!_0x3929f4[_0xfd37('0x4a')]['hasOwnProperty'](_0xfd37('0x52'))){_0x3874c9[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x3929f4[_0xfd37('0x4a')]['limit']);_0x3874c9[_0xfd37('0x1b')]=qs[_0xfd37('0x1b')](_0x3929f4['query'][_0xfd37('0x1b')]);}_0x3874c9['order']=qs['sort'](_0x3929f4['query'][_0xfd37('0x54')]);_0x3874c9[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_['pick'](_0x3929f4[_0xfd37('0x4a')],_0x15d520['filters']));_0x3874c9[_0xfd37('0x55')][_0xfd37('0x66')]=_0x21ed2d['id'];if(_0x3929f4[_0xfd37('0x4a')][_0xfd37('0x6a')]){_0x3874c9[_0xfd37('0x55')]=_['merge'](_0x3874c9[_0xfd37('0x55')],{'$or':_[_0xfd37('0x49')](_0x3874c9['attributes'],function(_0x4dbbe5){var _0x45fe0d={};_0x45fe0d[_0x4dbbe5]={'$like':'%'+_0x3929f4['query'][_0xfd37('0x6a')]+'%'};return _0x45fe0d;})});}if(_0x3929f4[_0xfd37('0x4a')][_0xfd37('0x9a')]){var _0x3d0935=_0x3929f4[_0xfd37('0x4a')]['$gte']['split'](',');var _0x56781e={};_0x56781e[_0x3d0935[0x0]]={'$gte':moment(_0x3d0935[0x1])[_0xfd37('0x9b')](_0xfd37('0x9c'))};_0x3874c9[_0xfd37('0x55')]=_[_0xfd37('0x56')](_0x3874c9[_0xfd37('0x55')],_0x56781e);}_0x3874c9=_[_0xfd37('0x56')]({},_0x3874c9,_0x3929f4['options']);return db['MailMessage'][_0xfd37('0x1d')]({'where':_0x3874c9[_0xfd37('0x55')]})['then'](function(_0x83bb22){_0x76a4a6[_0xfd37('0x1d')]=_0x83bb22;if(_0x3929f4[_0xfd37('0x4a')]['includeAll']){_0x3874c9[_0xfd37('0x59')]=[{'all':!![]}];}return db[_0xfd37('0x99')][_0xfd37('0x5a')](_0x3874c9);})[_0xfd37('0x21')](function(_0x1fd8d8){if(_0x3929f4[_0xfd37('0x4a')][_0xfd37('0x9d')]==='true'){for(var _0x7ab9e=0x0;_0x7ab9e<_0x1fd8d8[_0xfd37('0x50')];_0x7ab9e++){_0x1fd8d8[_0x7ab9e][_0xfd37('0x61')]=juice(_0x1fd8d8[_0x7ab9e][_0xfd37('0x61')]);}}_0x76a4a6[_0xfd37('0x5b')]=_0x1fd8d8;return _0x76a4a6;});}})[_0xfd37('0x21')](respondWithFilteredResult(_0xec02a8,_0x3874c9))[_0xfd37('0x5c')](handleError(_0xec02a8,null));};exports[_0xfd37('0x29')]=function(_0x11a338,_0x70ff11){var _0x5d2637,_0xc4249a={},_0x18f23f;if(_0x11a338[_0xfd37('0x61')]['to']){_0x18f23f=_0x11a338[_0xfd37('0x61')]['to'][_0xfd37('0x9e')](',')[0x0];}return db[_0xfd37('0x45')]['find']({'where':{'id':_0x11a338[_0xfd37('0x63')]['id']},'include':[{'model':db['CmList'],'as':_0xfd37('0x9f'),'include':[{'model':db[_0xfd37('0x86')],'as':_0xfd37('0xa0'),'where':{'email':_0x18f23f},'limit':0x1,'order':[['updatedAt',_0xfd37('0xa1')]]}]},{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f'),'raw':!![],'include':[{'model':db[_0xfd37('0xa2')],'as':_0xfd37('0xa2'),'raw':!![]}]}]})[_0xfd37('0x21')](handleEntityNotFound(_0x70ff11,null))['then'](function(_0x459b42){if(!_0x459b42)return;_0x5d2637=_0x459b42;if(!_0x459b42['Smtp'])throw new Error(_0xfd37('0xa3'));if(_[_0xfd37('0x75')](_0x11a338['body'][_0xfd37('0xa4')])){_0x11a338[_0xfd37('0x61')][_0xfd37('0xa4')]=util['format'](_0xfd37('0xa5'),_0x459b42['name'],_0x459b42[_0xfd37('0x73')]||_0x459b42[_0xfd37('0x3f')][_0xfd37('0x33')]);}if(_0x11a338[_0xfd37('0x61')]['attachments']&&_0x11a338['body'][_0xfd37('0xa6')]['length']){for(var _0x3acc35=0x0;_0x3acc35<_0x11a338[_0xfd37('0x61')][_0xfd37('0xa6')][_0xfd37('0x50')];_0x3acc35+=0x1){_0x11a338['body'][_0xfd37('0xa6')][_0x3acc35]={'filename':_0x11a338[_0xfd37('0x61')]['attachments'][_0x3acc35][_0xfd37('0x28')],'path':path[_0xfd37('0xa7')](config['root'],_0xfd37('0xa8'),_0x11a338['body'][_0xfd37('0xa6')][_0x3acc35][_0xfd37('0xa9')])};}}var _0x4b6ac0=_0x459b42[_0xfd37('0xaa')]();return respondWithRpcPromise(_0xfd37('0xab'),'sendMail',{'account':_0x4b6ac0,'message':_0x11a338[_0xfd37('0x61')]});})[_0xfd37('0x21')](function(_0x3fc316){if(!_0x3fc316)return;_0xc4249a=_0x3fc316;if(!_0x5d2637[_0xfd37('0x9f')])throw new Error('List\x20not\x20found');if(_0x5d2637['List'][_0xfd37('0xa0')][_0xfd37('0x50')])return _0x5d2637[_0xfd37('0x9f')][_0xfd37('0xa0')][0x0];return db['CmContact'][_0xfd37('0x6f')](_['defaults'](_0x11a338[_0xfd37('0x61')],{'firstName':_0x11a338['body']['to'],'email':_0x11a338[_0xfd37('0x61')]['to'],'phone':_0x11a338[_0xfd37('0x61')]['to'],'ListId':_0x5d2637[_0xfd37('0x74')]}));})['then'](function(_0x3b53fa){if(!_0x3b53fa)return;var _0x424381={'UserId':_0x11a338['user']['id'],'ContactId':_0x3b53fa['id'],'MailAccountId':_0x5d2637['id'],'inReplyTo':_0xc4249a['messageId'],'to':_0x11a338[_0xfd37('0x61')][_0xfd37('0xa4')],'cc':_0x11a338['body']['cc'],'subject':_0x11a338[_0xfd37('0x61')][_0xfd37('0xac')],'attach':_0x11a338[_0xfd37('0x61')]['attach'],'firstMsgDirection':'out','lastMsgAt':moment()[_0xfd37('0x9b')](_0xfd37('0x9c')),'lastMsgDirection':_0xfd37('0xad'),'Messages':[_[_0xfd37('0x56')](_0x11a338[_0xfd37('0x61')],{'messageId':_0xc4249a[_0xfd37('0xae')],'sentAt':moment()[_0xfd37('0x9b')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x5d2637['id'],'UserId':_0x11a338[_0xfd37('0x33')]['id'],'ContactId':_0x3b53fa['id']})]};if(_0x11a338['body'][_0xfd37('0xaf')]){_0x424381=_['merge'](_0x424381,_0x11a338[_0xfd37('0x61')][_0xfd37('0xaf')]);}return db[_0xfd37('0x85')]['create'](_0x424381,{'include':[{'model':db[_0xfd37('0x99')],'as':'Messages'}]});})['then'](respondWithResult(_0x70ff11,null))['catch'](handleError(_0x70ff11,null));};exports[_0xfd37('0xb0')]=function(_0x1bd96e,_0x44a88c){return db['MailAccount'][_0xfd37('0x60')]({'where':{'id':_0x1bd96e['params']['id']},'include':[{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xfd37('0xa2'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x44a88c,null))[_0xfd37('0x21')](function(_0x48170d){if(!_0x48170d[_0xfd37('0x3f')])return;var _0x58b13d=_0x48170d[_0xfd37('0xaa')]();return respondWithRpcPromise(_0xfd37('0xb1'),_0xfd37('0xb0'),{'account':_0x58b13d});})[_0xfd37('0x21')](respondWithResult(_0x44a88c,null))[_0xfd37('0x5c')](handleError(_0x44a88c,null));};exports['destroy']=function(_0x28540f,_0x2ce4bf){return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x28540f['params']['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x2ce4bf,null))[_0xfd37('0x21')](function(_0x2f0cec){if(_0x2f0cec&&_0x2f0cec[_0xfd37('0x3c')]){throw new db[(_0xfd37('0xb2'))][(_0xfd37('0xb3'))](_0xfd37('0xb4'));}return _0x2f0cec;})[_0xfd37('0x21')](removeEntity(_0x2ce4bf,null))[_0xfd37('0x5c')](handleError(_0x2ce4bf,null));};exports[_0xfd37('0xb5')]=function(_0x23776c,_0x44c997){return db[_0xfd37('0x45')]['find']({'where':{'id':_0x23776c[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x44c997,null))[_0xfd37('0x21')](function(_0x33c531){if(_0x33c531){return _0x33c531[_0xfd37('0xb5')](_0x23776c[_0xfd37('0x61')][_0xfd37('0x6c')],_['omit'](_0x23776c[_0xfd37('0x61')],[_0xfd37('0x6c'),'id'])||{})['spread'](function(_0x102b1b){for(var _0x53aa0b=0x0;_0x53aa0b<_0x23776c[_0xfd37('0x61')][_0xfd37('0x6c')][_0xfd37('0x50')];_0x53aa0b+=0x1){socket[_0xfd37('0xb6')](_0xfd37('0xb7'),{'UserId':Number(_0x23776c[_0xfd37('0x61')]['ids'][_0x53aa0b]),'MailAccountId':Number(_0x23776c[_0xfd37('0x63')]['id'])});}return _0x102b1b;});}})[_0xfd37('0x21')](respondWithResult(_0x44c997,null))[_0xfd37('0x5c')](handleError(_0x44c997,null));};exports[_0xfd37('0xb8')]=function(_0x57d4bf,_0x22ec4e){return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x57d4bf[_0xfd37('0x63')]['id']}})['then'](handleEntityNotFound(_0x22ec4e,null))[_0xfd37('0x21')](function(_0x5430be){if(_0x5430be){return _0x5430be['removeAgents'](_0x57d4bf[_0xfd37('0x4a')]['ids'])['then'](function(){if(_[_0xfd37('0xb9')](_0x57d4bf['query'][_0xfd37('0x6c')])){for(var _0x32055b=0x0;_0x32055b<_0x57d4bf[_0xfd37('0x4a')][_0xfd37('0x6c')][_0xfd37('0x50')];_0x32055b+=0x1){socket[_0xfd37('0xb6')](_0xfd37('0xba'),{'UserId':Number(_0x57d4bf[_0xfd37('0x4a')][_0xfd37('0x6c')][_0x32055b]),'MailAccountId':Number(_0x57d4bf[_0xfd37('0x63')]['id'])});}}else{socket[_0xfd37('0xb6')](_0xfd37('0xba'),{'UserId':Number(_0x57d4bf['query']['ids']),'MailAccountId':Number(_0x57d4bf[_0xfd37('0x63')]['id'])});}});}})[_0xfd37('0x21')](respondWithStatusCode(_0x22ec4e,null))['catch'](handleError(_0x22ec4e,null));};exports[_0xfd37('0xbb')]=function(_0x24e5b4,_0x45899c){var _0x8add1={};var _0x7da744={};var _0x4cc629;var _0x51281;return db['MailAccount']['findOne']({'where':{'id':_0x24e5b4[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x45899c,null))['then'](function(_0x5a12ef){if(_0x5a12ef){_0x4cc629=_0x5a12ef;_0x7da744[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db[_0xfd37('0x88')][_0xfd37('0x5e')]);_0x7da744['query']=_['keys'](_0x24e5b4['query']);_0x7da744[_0xfd37('0x4c')]=_[_0xfd37('0x4d')](_0x7da744[_0xfd37('0x48')],_0x7da744[_0xfd37('0x4a')]);_0x8add1[_0xfd37('0x4e')]=_[_0xfd37('0x4d')](_0x7da744[_0xfd37('0x48')],qs['fields'](_0x24e5b4[_0xfd37('0x4a')][_0xfd37('0x4f')]));_0x8add1[_0xfd37('0x4e')]=_0x8add1[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x8add1[_0xfd37('0x4e')]:_0x7da744[_0xfd37('0x48')];_0x8add1[_0xfd37('0x53')]=qs['sort'](_0x24e5b4[_0xfd37('0x4a')][_0xfd37('0x54')]);_0x8add1[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_[_0xfd37('0x69')](_0x24e5b4[_0xfd37('0x4a')],_0x7da744[_0xfd37('0x4c')]));if(_0x24e5b4['query'][_0xfd37('0x6a')]){_0x8add1[_0xfd37('0x55')]=_['merge'](_0x8add1[_0xfd37('0x55')],{'$or':_['map'](_0x8add1['attributes'],function(_0x3f41d5){var _0x14e416={};_0x14e416[_0x3f41d5]={'$like':'%'+_0x24e5b4[_0xfd37('0x4a')][_0xfd37('0x6a')]+'%'};return _0x14e416;})});}_0x8add1=_[_0xfd37('0x56')]({},_0x8add1,_0x24e5b4[_0xfd37('0x58')]);return _0x4cc629['getAgents'](_0x8add1);}})[_0xfd37('0x21')](function(_0x480bdc){if(_0x480bdc){_0x51281=_0x480bdc[_0xfd37('0x50')];if(!_0x24e5b4[_0xfd37('0x4a')][_0xfd37('0x51')](_0xfd37('0x52'))){_0x8add1[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x24e5b4[_0xfd37('0x4a')][_0xfd37('0x1e')]);_0x8add1['offset']=qs[_0xfd37('0x1b')](_0x24e5b4['query'][_0xfd37('0x1b')]);}return _0x4cc629[_0xfd37('0xbb')](_0x8add1);}})[_0xfd37('0x21')](function(_0x3c403e){if(_0x3c403e){return _0x3c403e?{'count':_0x51281,'rows':_0x3c403e}:null;}})[_0xfd37('0x21')](respondWithResult(_0x45899c,null))['catch'](handleError(_0x45899c,null));};
\ No newline at end of file
index f430862..00b67e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6299=['update','remove','emit','hasOwnProperty','MailAccount','setMaxListeners','save'];(function(_0x17a32f,_0x5a51a){var _0x15a293=function(_0x55fbd3){while(--_0x55fbd3){_0x17a32f['push'](_0x17a32f['shift']());}};_0x15a293(++_0x5a51a);}(_0x6299,0x169));var _0x9629=function(_0x321b2c,_0x19f2fa){_0x321b2c=_0x321b2c-0x0;var _0x11945d=_0x6299[_0x321b2c];return _0x11945d;};'use strict';var EventEmitter=require('events');var MailAccount=require('../../mysqldb')['db'][_0x9629('0x0')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x9629('0x1')](0x0);var events={'afterCreate':_0x9629('0x2'),'afterUpdate':_0x9629('0x3'),'afterDestroy':_0x9629('0x4')};function emitEvent(_0x3eb5e5){return function(_0x55d4ce,_0x327ee9,_0x42064f){MailAccountEvents[_0x9629('0x5')](_0x3eb5e5+':'+_0x55d4ce['id'],_0x55d4ce);MailAccountEvents[_0x9629('0x5')](_0x3eb5e5,_0x55d4ce);_0x42064f(null);};}for(var e in events){if(events[_0x9629('0x6')](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0x7ea9=['update','emit','hasOwnProperty','hook','../../mysqldb','MailAccount','setMaxListeners','save'];(function(_0x18c977,_0x5aaec9){var _0x38a276=function(_0x3228e1){while(--_0x3228e1){_0x18c977['push'](_0x18c977['shift']());}};_0x38a276(++_0x5aaec9);}(_0x7ea9,0xec));var _0x97ea=function(_0x2a3d21,_0x2b8f31){_0x2a3d21=_0x2a3d21-0x0;var _0x4ef3b1=_0x7ea9[_0x2a3d21];return _0x4ef3b1;};'use strict';var EventEmitter=require('events');var MailAccount=require(_0x97ea('0x0'))['db'][_0x97ea('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x97ea('0x2')](0x0);var events={'afterCreate':_0x97ea('0x3'),'afterUpdate':_0x97ea('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3be4e3){return function(_0xd02076,_0x2c80e6,_0x54a19f){MailAccountEvents[_0x97ea('0x5')](_0x3be4e3+':'+_0xd02076['id'],_0xd02076);MailAccountEvents[_0x97ea('0x5')](_0x3be4e3,_0xd02076);_0x54a19f(null);};}for(var e in events){if(events[_0x97ea('0x6')](e)){var event=events[e];MailAccount[_0x97ea('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index 0bcf50f..5bcf975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd50e=['auth','data5','user','exports','MailAccount','provider','custom','service','host','Smtp','port','secure','authentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found'];(function(_0x21655b,_0x188e9f){var _0xd740ec=function(_0x1fca9b){while(--_0x1fca9b){_0x21655b['push'](_0x21655b['shift']());}};_0xd740ec(++_0x188e9f);}(_0xd50e,0x99));var _0xed50=function(_0x1702d7,_0x2d0e0f){_0x1702d7=_0x1702d7-0x0;var _0x4e1bef=_0xd50e[_0x1702d7];return _0x4e1bef;};'use strict';var attributes=require('./mailAccount.attributes');module[_0xed50('0x0')]=function(_0x5dfde1){return _0x5dfde1['define'](_0xed50('0x1'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x3d1814=this;var _0x63c1c0={'id':_0x3d1814['id'],'tls':{'rejectUnauthorized':![]}};if(_0x3d1814[_0xed50('0x2')]!==_0xed50('0x3')){_0x63c1c0[_0xed50('0x4')]=_0x3d1814[_0xed50('0x2')];}else{_0x63c1c0[_0xed50('0x5')]=_0x3d1814[_0xed50('0x6')][_0xed50('0x5')];_0x63c1c0[_0xed50('0x7')]=_0x3d1814[_0xed50('0x6')]['port'];_0x63c1c0[_0xed50('0x8')]=_0x3d1814[_0xed50('0x6')][_0xed50('0x8')];}if(_0x3d1814[_0xed50('0x6')][_0xed50('0x9')]){if(_0x3d1814[_0xed50('0x6')]['modernAuthentication']){if(!_0x3d1814[_0xed50('0x6')][_0xed50('0xa')])throw new Error(_0xed50('0xb'));_0x63c1c0[_0xed50('0xc')]={'type':'OAuth2','user':_0x3d1814['Smtp']['user'],'accessToken':_0x3d1814['Smtp'][_0xed50('0xa')][_0xed50('0xd')]};}else{_0x63c1c0['auth']={'user':_0x3d1814[_0xed50('0x6')][_0xed50('0xe')],'pass':_0x3d1814[_0xed50('0x6')]['pass']};}}return _0x63c1c0;}}});};
\ No newline at end of file
+var _0x5593=['CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','OAuth2','user','data5','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','provider','custom','service','host','Smtp','secure','authentication','modernAuthentication'];(function(_0x38d23c,_0x536447){var _0x2b6d7d=function(_0x2a6543){while(--_0x2a6543){_0x38d23c['push'](_0x38d23c['shift']());}};_0x2b6d7d(++_0x536447);}(_0x5593,0x149));var _0x3559=function(_0xb9c2da,_0x5e481a){_0xb9c2da=_0xb9c2da-0x0;var _0x195d1d=_0x5593[_0xb9c2da];return _0x195d1d;};'use strict';var attributes=require(_0x3559('0x0'));module[_0x3559('0x1')]=function(_0x37f26e){return _0x37f26e[_0x3559('0x2')](_0x3559('0x3'),attributes,{'tableName':_0x3559('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x168f4a=this;var _0x7d2535={'id':_0x168f4a['id'],'tls':{'rejectUnauthorized':![]}};if(_0x168f4a[_0x3559('0x5')]!==_0x3559('0x6')){_0x7d2535[_0x3559('0x7')]=_0x168f4a[_0x3559('0x5')];}else{_0x7d2535[_0x3559('0x8')]=_0x168f4a['Smtp'][_0x3559('0x8')];_0x7d2535['port']=_0x168f4a[_0x3559('0x9')]['port'];_0x7d2535[_0x3559('0xa')]=_0x168f4a[_0x3559('0x9')][_0x3559('0xa')];}if(_0x168f4a[_0x3559('0x9')][_0x3559('0xb')]){if(_0x168f4a[_0x3559('0x9')][_0x3559('0xc')]){if(!_0x168f4a[_0x3559('0x9')][_0x3559('0xd')])throw new Error(_0x3559('0xe'));_0x7d2535['auth']={'type':_0x3559('0xf'),'user':_0x168f4a[_0x3559('0x9')][_0x3559('0x10')],'accessToken':_0x168f4a['Smtp'][_0x3559('0xd')][_0x3559('0x11')]};}else{_0x7d2535['auth']={'user':_0x168f4a[_0x3559('0x9')][_0x3559('0x10')],'pass':_0x168f4a[_0x3559('0x9')]['pass']};}}return _0x7d2535;}}});};
\ No newline at end of file
index 0865eb6..717dbb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe626=['omit','Applications','list','applications','orderBy','asc','autoclose','push','close','*,*,*,*','length','CmContact','create','messageId','subject','attach','format','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','YYYY-MM-DD\x20HH:mm:ss','interaction','created','contact','attachments','originTo','bcc','ChatWebsiteId','Email','ChatOfflineMessageId','Attachments','UserId','User','name','agent','waitForTheAssignedAgent','queueId','MailQueue','unshift','waitForTheAssignedQueue','Start','startRouting','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','redis','socket.io-emitter','./mailAccount.socket','register','then','info','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','MailAccount,\x20%s,\x20%s','message','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','limit','include','map','model','attributes','ShowMailAccount','smtp','setDataValue','smtpOptions','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','rawAttributes','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','Contacts','updatedAt','MailApplication','MailServerOut','Smtp','CloudProvider','get'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xe626,0x9d));var _0x6e62=function(_0x5ca259,_0x145448){_0x5ca259=_0x5ca259-0x0;var _0x30d5d8=_0xe626[_0x5ca259];return _0x30d5d8;};'use strict';var _=require(_0x6e62('0x0'));var moment=require(_0x6e62('0x1'));var BPromise=require(_0x6e62('0x2'));var rs=require(_0x6e62('0x3'));var Redis=require('ioredis');var db=require(_0x6e62('0x4'))['db'];var logger=require(_0x6e62('0x5'))(_0x6e62('0x6'));var config=require(_0x6e62('0x7'));var jayson=require(_0x6e62('0x8'));var client=jayson['client']['http']({'port':0x232c});config['redis']=_[_0x6e62('0x9')](config[_0x6e62('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x6e62('0xb'))(new Redis(config[_0x6e62('0xa')]));require(_0x6e62('0xc'))[_0x6e62('0xd')](socket);function respondWithRpcPromise(_0x5af723,_0xa6e8be,_0x3d677f){return new BPromise(function(_0x4e25d3,_0x2fbfd0){return client['request'](_0x5af723,_0x3d677f)[_0x6e62('0xe')](function(_0x543d09){logger[_0x6e62('0xf')]('MailAccount,\x20%s,\x20%s',_0xa6e8be,_0x6e62('0x10'));logger[_0x6e62('0x11')](_0x6e62('0x12'),_0xa6e8be,_0x6e62('0x10'),JSON[_0x6e62('0x13')](_0x543d09));if(_0x543d09[_0x6e62('0x14')]){if(_0x543d09[_0x6e62('0x14')]['code']===0x1f4){logger['error'](_0x6e62('0x15'),_0xa6e8be,_0x543d09[_0x6e62('0x14')]['message']);return _0x2fbfd0(_0x543d09[_0x6e62('0x14')][_0x6e62('0x16')]);}logger[_0x6e62('0x14')](_0x6e62('0x15'),_0xa6e8be,_0x543d09['error'][_0x6e62('0x16')]);return _0x4e25d3(_0x543d09[_0x6e62('0x14')][_0x6e62('0x16')]);}else{logger[_0x6e62('0xf')](_0x6e62('0x15'),_0xa6e8be,_0x6e62('0x10'));_0x4e25d3(_0x543d09[_0x6e62('0x17')][_0x6e62('0x16')]);}})[_0x6e62('0x18')](function(_0x15bce5){logger['error'](_0x6e62('0x15'),_0xa6e8be,_0x15bce5);_0x2fbfd0(_0x15bce5);});});}exports[_0x6e62('0x19')]=function(_0x55ce3b){var _0xefbfb6=this;return new Promise(function(_0x4ecdff,_0xf7d17f){return db[_0x6e62('0x1a')][_0x6e62('0x1b')]({'raw':_0x55ce3b[_0x6e62('0x1c')]?_0x55ce3b[_0x6e62('0x1c')][_0x6e62('0x1d')]===undefined?!![]:![]:!![],'where':_0x55ce3b[_0x6e62('0x1c')]?_0x55ce3b[_0x6e62('0x1c')][_0x6e62('0x1e')]||null:null,'attributes':_0x55ce3b[_0x6e62('0x1c')]?_0x55ce3b[_0x6e62('0x1c')]['attributes']||null:null,'limit':_0x55ce3b[_0x6e62('0x1c')]?_0x55ce3b['options'][_0x6e62('0x1f')]||null:null,'include':_0x55ce3b[_0x6e62('0x1c')]?_0x55ce3b[_0x6e62('0x1c')][_0x6e62('0x20')]?_[_0x6e62('0x21')](_0x55ce3b[_0x6e62('0x1c')][_0x6e62('0x20')],function(_0x3a1683){return{'model':db[_0x3a1683[_0x6e62('0x22')]],'as':_0x3a1683['as'],'attributes':_0x3a1683[_0x6e62('0x23')],'include':_0x3a1683['include']?_[_0x6e62('0x21')](_0x3a1683['include'],function(_0x2f9c68){return{'model':db[_0x2f9c68[_0x6e62('0x22')]],'as':_0x2f9c68['as'],'attributes':_0x2f9c68[_0x6e62('0x23')],'include':_0x2f9c68[_0x6e62('0x20')]?_[_0x6e62('0x21')](_0x2f9c68[_0x6e62('0x20')],function(_0x4ecc45){return{'model':db[_0x4ecc45[_0x6e62('0x22')]],'as':_0x4ecc45['as'],'attributes':_0x4ecc45[_0x6e62('0x23')]};}):[]};}):[]};}):[]:[]})[_0x6e62('0xe')](function(_0x50ba00){logger['info'](_0x6e62('0x19'),_0x55ce3b);logger['debug']('GetMailAccount',_0x55ce3b,JSON['stringify'](_0x50ba00));_0x4ecdff(_0x50ba00);})['catch'](function(_0x17f634){logger['error'](_0x6e62('0x19'),_0x17f634['message'],_0x55ce3b);_0xf7d17f(_0xefbfb6[_0x6e62('0x14')](0x1f4,_0x17f634[_0x6e62('0x16')]));});});};exports[_0x6e62('0x24')]=function(_0x4f73b5){var _0x574d73=this;return new Promise(function(_0x2d12f6,_0xb8d42e){return db['MailAccount']['find']({'raw':_0x4f73b5['options']?_0x4f73b5[_0x6e62('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x4f73b5[_0x6e62('0x1c')]?_0x4f73b5[_0x6e62('0x1c')][_0x6e62('0x1e')]||null:null,'attributes':_0x4f73b5[_0x6e62('0x1c')]?_0x4f73b5[_0x6e62('0x1c')]['attributes']||null:null,'include':_0x4f73b5['options']?_0x4f73b5[_0x6e62('0x1c')][_0x6e62('0x20')]?_[_0x6e62('0x21')](_0x4f73b5[_0x6e62('0x1c')][_0x6e62('0x20')],function(_0xfe729c){return{'model':db[_0xfe729c[_0x6e62('0x22')]],'as':_0xfe729c['as'],'attributes':_0xfe729c[_0x6e62('0x23')],'include':_0xfe729c[_0x6e62('0x20')]?_['map'](_0xfe729c[_0x6e62('0x20')],function(_0x3ddf6e){return{'model':db[_0x3ddf6e[_0x6e62('0x22')]],'as':_0x3ddf6e['as'],'attributes':_0x3ddf6e['attributes'],'include':_0x3ddf6e[_0x6e62('0x20')]?_[_0x6e62('0x21')](_0x3ddf6e['include'],function(_0x19c758){return{'model':db[_0x19c758[_0x6e62('0x22')]],'as':_0x19c758['as'],'attributes':_0x19c758[_0x6e62('0x23')]};}):[]};}):[]};}):[]:[]})[_0x6e62('0xe')](function(_0x304ac1){if(_0x4f73b5['options'][_0x6e62('0x25')]===!![])_0x304ac1[_0x6e62('0x26')](_0x6e62('0x27'),_0x304ac1[_0x6e62('0x28')]());logger[_0x6e62('0xf')]('ShowMailAccount',_0x4f73b5);logger[_0x6e62('0x11')](_0x6e62('0x24'),_0x4f73b5,JSON[_0x6e62('0x13')](_0x304ac1));_0x2d12f6(_0x304ac1);})['catch'](function(_0x28af80){logger[_0x6e62('0x14')]('ShowMailAccount',_0x28af80['message'],_0x4f73b5);_0xb8d42e(_0x574d73[_0x6e62('0x14')](0x1f4,_0x28af80[_0x6e62('0x16')]));});});};exports[_0x6e62('0x29')]=function(_0x5257be){var _0x5133a2=this;return new Promise(function(_0x1ef318,_0x4ac790){var _0x504e16={'body':_0x5257be[_0x6e62('0x2a')],'channel':_0x6e62('0x2b')};var _0xd07973=_[_0x6e62('0x2c')](_[_0x6e62('0x2d')](db['CmContact'][_0x6e62('0x2e')]),['createdAt','updatedAt',_0x6e62('0x2f'),_0x6e62('0x30')]);var _0x940288=![];if(_0x5257be['body']['id']){delete _0x5257be[_0x6e62('0x2a')]['id'];}if(_['isNil'](_0x5257be[_0x6e62('0x2a')][_0x6e62('0x31')])){return _0x4ac790(_0x5133a2[_0x6e62('0x14')](0x1f4,_0x6e62('0x32')));}if(_[_0x6e62('0x33')](_0x5257be[_0x6e62('0x2a')][_0x6e62('0x2a')])||_0x5257be[_0x6e62('0x2a')][_0x6e62('0x2a')]===''){return _0x4ac790(_0x5133a2[_0x6e62('0x14')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x5257be['body'][_0x6e62('0x34')])){return _0x4ac790(_0x5133a2['error'](0x1f4,_0x6e62('0x35')+_0xd07973));}if(!_[_0x6e62('0x36')](_0xd07973,_0x5257be['body'][_0x6e62('0x34')])){return _0x4ac790(_0x5133a2[_0x6e62('0x14')](0x1f4,_0x6e62('0x37')+_0xd07973));}var _0x2efc75={};_0x2efc75[_0x5257be[_0x6e62('0x2a')][_0x6e62('0x34')]]=_0x5257be[_0x6e62('0x2a')][_0x6e62('0x31')];return db[_0x6e62('0x1a')][_0x6e62('0x38')]({'where':{'id':_0x5257be[_0x6e62('0x39')]['id']},'include':[{'model':db[_0x6e62('0x3a')],'as':_0x6e62('0x3b'),'include':[{'model':db['CmContact'],'as':_0x6e62('0x3c'),'where':_0x2efc75,'limit':0x1,'order':[[_0x6e62('0x3d'),'DESC']]}]},{'model':db[_0x6e62('0x3e')],'as':'Applications'},{'model':db[_0x6e62('0x3f')],'as':_0x6e62('0x40'),'include':[{'model':db[_0x6e62('0x41')],'as':'CloudProvider'}]}]})[_0x6e62('0xe')](function(_0x4745a3){if(_0x4745a3&&_0x4745a3[_0x6e62('0x3b')]){var _0x212290=_0x4745a3[_0x6e62('0x42')]({'plain':!![]});_0x504e16[_0x6e62('0x39')]=_[_0x6e62('0x43')](_0x212290,[_0x6e62('0x44'),_0x6e62('0x3b')]);_0x504e16[_0x6e62('0x39')][_0x6e62('0x27')]=_0x4745a3['getSmtpOptions']();_0x504e16['applications']=_0x212290[_0x6e62('0x44')];_0x504e16[_0x6e62('0x45')]=_0x212290[_0x6e62('0x3b')];_0x504e16[_0x6e62('0x46')]=_[_0x6e62('0x47')](_0x504e16[_0x6e62('0x46')],['priority'],[_0x6e62('0x48')]);if(_0x504e16['account']&&_0x504e16[_0x6e62('0x39')][_0x6e62('0x49')]){_0x504e16[_0x6e62('0x46')][_0x6e62('0x4a')]({'id':0x0,'priority':_0x504e16[_0x6e62('0x46')]['length']+0x1,'app':_0x6e62('0x4b'),'appdata':_0x6e62('0x49'),'interval':_0x6e62('0x4c')});}if(_0x504e16[_0x6e62('0x39')]['Applications']){delete _0x504e16[_0x6e62('0x39')]['Applications'];}if(_0x504e16[_0x6e62('0x39')][_0x6e62('0x3b')]){delete _0x504e16[_0x6e62('0x39')][_0x6e62('0x3b')];}if(_0x212290[_0x6e62('0x3b')][_0x6e62('0x3c')][_0x6e62('0x4d')]){return _0x212290['List'][_0x6e62('0x3c')][0x0];}var _0x51dfca=_[_0x6e62('0x9')](_0x5257be[_0x6e62('0x2a')],{'firstName':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x31')],'ListId':_0x212290[_0x6e62('0x30')]});_0x51dfca[_0x5257be['body'][_0x6e62('0x34')]]=_0x5257be['body'][_0x6e62('0x31')];return db[_0x6e62('0x4e')][_0x6e62('0x4f')](_0x51dfca);}else{throw new Error('List\x20not\x20found');}})[_0x6e62('0xe')](function(_0x264c50){_0x504e16['contact']=_0x264c50;if(_0x264c50){if(!_0x5257be[_0x6e62('0x2a')]['message'][_0x6e62('0x50')]){_0x5257be['body'][_0x6e62('0x16')][_0x6e62('0x50')]=rs['generate']()+'\x20'+_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')]['from'];}var _0x5735b4={'ContactId':_0x264c50['id'],'MailAccountId':_0x5257be[_0x6e62('0x39')]['id'],'inReplyTo':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x50')],'to':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x31')],'cc':_0x5257be['body'][_0x6e62('0x16')]['cc'],'subject':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x51')],'attach':_0x5257be[_0x6e62('0x2a')]['message'][_0x6e62('0x52')],'lastMsgAt':moment()[_0x6e62('0x53')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x6e62('0x54')][_0x6e62('0x38')]({'where':{'closed':![],'MailAccountId':_0x5257be[_0x6e62('0x39')]['id']},'include':[{'model':db[_0x6e62('0x55')],'as':_0x6e62('0x56'),'attributes':['messageId'],'where':{'messageId':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x57')]}}]})['then'](function(_0x2254ea){if(_0x2254ea){return[_0x2254ea,![]];}return db[_0x6e62('0x54')]['create'](_0x5735b4)[_0x6e62('0xe')](function(_0x5b5b66){return[_0x5b5b66,!![]];});});}else{throw new Error(_0x6e62('0x58'));}})[_0x6e62('0x59')](function(_0xb465,_0x5db78e){if(_0xb465){_0x940288=_0x5db78e;if(!_0x5db78e){return _0xb465['update']({'inReplyTo':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x50')],'to':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x31')],'cc':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')]['cc'],'subject':_0x5257be['body'][_0x6e62('0x16')][_0x6e62('0x51')],'attach':_0xb465['attach']?_0xb465[_0x6e62('0x52')]:_0x5257be['body'][_0x6e62('0x16')][_0x6e62('0x52')],'substatus':null,'substatusAt':moment()[_0x6e62('0x53')](_0x6e62('0x5a')),'lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0xb465;}}})[_0x6e62('0xe')](function(_0xa15705){_0x504e16[_0x6e62('0x5b')]=_0xa15705[_0x6e62('0x42')]({'plain':!![]});_0x504e16[_0x6e62('0x5b')][_0x6e62('0x5c')]=_0x940288;return db[_0x6e62('0x55')][_0x6e62('0x4f')]({'body':_0x5257be['body'][_0x6e62('0x2a')],'MailAccountId':_0x5257be[_0x6e62('0x39')]['id'],'MailInteractionId':_0xa15705['id'],'direction':'in','ContactId':_0x504e16[_0x6e62('0x5d')]['id'],'messageId':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x50')],'from':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x31')],'to':_0x5257be['body'][_0x6e62('0x16')]['to'],'cc':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')]['cc'],'subject':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x51')],'attach':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x52')],'Attachments':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x5e')],'originTo':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x5f')],'originCc':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')]['originCc'],'bcc':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x60')],'ChatWebsiteId':_0x5257be[_0x6e62('0x2a')]['message'][_0x6e62('0x61')]||null,'originChannel':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')]['originChannel']||_0x6e62('0x62'),'ChatOfflineMessageId':_0x5257be[_0x6e62('0x2a')][_0x6e62('0x16')][_0x6e62('0x63')]||null},{'include':[{'model':db['Attachment'],'as':_0x6e62('0x64')}]});})[_0x6e62('0xe')](function(_0x334f07){_0x504e16[_0x6e62('0x16')]=_0x334f07;if(!_0x504e16[_0x6e62('0x5b')][_0x6e62('0x65')]){return;}return db[_0x6e62('0x66')][_0x6e62('0x38')]({'attributes':['id',_0x6e62('0x67')],'where':{'id':_0x504e16[_0x6e62('0x5b')][_0x6e62('0x65')]}});})[_0x6e62('0xe')](function(_0x1cd07e){if(_0x1cd07e){_0x504e16[_0x6e62('0x46')]['unshift']({'id':0x0,'priority':0x0,'app':_0x6e62('0x68'),'appdata':_0x1cd07e[_0x6e62('0x67')]+','+(_0x504e16[_0x6e62('0x39')][_0x6e62('0x69')]||0xa),'interval':_0x6e62('0x4c')});}if(!_0x504e16[_0x6e62('0x5b')][_0x6e62('0x6a')]){return;}return db[_0x6e62('0x6b')]['find']({'attributes':['id',_0x6e62('0x67')],'where':{'id':_0x504e16[_0x6e62('0x5b')][_0x6e62('0x6a')]}});})[_0x6e62('0xe')](function(_0x1f91fe){if(_0x1f91fe){_0x504e16[_0x6e62('0x46')][_0x6e62('0x6c')]({'id':0x0,'priority':0x1,'app':'queue','appdata':_0x1f91fe[_0x6e62('0x67')]+','+(_0x504e16[_0x6e62('0x39')][_0x6e62('0x6d')]||0x12c),'interval':_0x6e62('0x4c')});}return respondWithRpcPromise(_0x6e62('0x6e'),_0x6e62('0x6f'),_0x504e16);})[_0x6e62('0xe')](function(_0x266ed9){_0x1ef318(_0x266ed9);})[_0x6e62('0x18')](function(_0x2bff13){_0x4ac790(_0x5133a2[_0x6e62('0x14')](0x1f4,_0x2bff13[_0x6e62('0x16')]));});});};
\ No newline at end of file
+var _0x1115=['UserId','unshift','agent','name','waitForTheAssignedAgent','queueId','MailQueue','queue','waitForTheAssignedQueue','Start','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','limit','include','map','model','ShowMailAccount','find','smtp','setDataValue','smtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','account','List','Contacts','Applications','CloudProvider','get','omit','getSmtpOptions','applications','list','orderBy','priority','asc','autoclose','push','length','close','*,*,*,*','from','List\x20not\x20found','contact','messageId','generate','subject','attach','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','inReplyTo','Contact\x20not\x20found','spread','update','format','interaction','originTo','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachments'];(function(_0x23a92b,_0x423306){var _0x2bbdc8=function(_0x4e2403){while(--_0x4e2403){_0x23a92b['push'](_0x23a92b['shift']());}};_0x2bbdc8(++_0x423306);}(_0x1115,0x1b6));var _0x5111=function(_0x2b0ecd,_0x48178c){_0x2b0ecd=_0x2b0ecd-0x0;var _0x3e805f=_0x1115[_0x2b0ecd];return _0x3e805f;};'use strict';var _=require('lodash');var moment=require(_0x5111('0x0'));var BPromise=require(_0x5111('0x1'));var rs=require(_0x5111('0x2'));var Redis=require(_0x5111('0x3'));var db=require(_0x5111('0x4'))['db'];var logger=require(_0x5111('0x5'))(_0x5111('0x6'));var config=require(_0x5111('0x7'));var jayson=require(_0x5111('0x8'));var client=jayson['client']['http']({'port':0x232c});config[_0x5111('0x9')]=_[_0x5111('0xa')](config['redis'],{'host':_0x5111('0xb'),'port':0x18eb});var socket=require(_0x5111('0xc'))(new Redis(config['redis']));require(_0x5111('0xd'))['register'](socket);function respondWithRpcPromise(_0x2d8e0a,_0x3bbc8c,_0x4ecb50){return new BPromise(function(_0x5e12a7,_0x347d87){return client['request'](_0x2d8e0a,_0x4ecb50)[_0x5111('0xe')](function(_0x4f0b34){logger[_0x5111('0xf')](_0x5111('0x10'),_0x3bbc8c,_0x5111('0x11'));logger[_0x5111('0x12')](_0x5111('0x13'),_0x3bbc8c,_0x5111('0x11'),JSON[_0x5111('0x14')](_0x4f0b34));if(_0x4f0b34[_0x5111('0x15')]){if(_0x4f0b34[_0x5111('0x15')][_0x5111('0x16')]===0x1f4){logger[_0x5111('0x15')](_0x5111('0x10'),_0x3bbc8c,_0x4f0b34[_0x5111('0x15')][_0x5111('0x17')]);return _0x347d87(_0x4f0b34[_0x5111('0x15')][_0x5111('0x17')]);}logger[_0x5111('0x15')](_0x5111('0x10'),_0x3bbc8c,_0x4f0b34['error'][_0x5111('0x17')]);return _0x5e12a7(_0x4f0b34['error']['message']);}else{logger[_0x5111('0xf')](_0x5111('0x10'),_0x3bbc8c,_0x5111('0x11'));_0x5e12a7(_0x4f0b34['result'][_0x5111('0x17')]);}})[_0x5111('0x18')](function(_0x52c614){logger[_0x5111('0x15')](_0x5111('0x10'),_0x3bbc8c,_0x52c614);_0x347d87(_0x52c614);});});}exports[_0x5111('0x19')]=function(_0x1b3b45){var _0x5e8f1d=this;return new Promise(function(_0x52d236,_0x2a1840){return db[_0x5111('0x1a')][_0x5111('0x1b')]({'raw':_0x1b3b45[_0x5111('0x1c')]?_0x1b3b45[_0x5111('0x1c')][_0x5111('0x1d')]===undefined?!![]:![]:!![],'where':_0x1b3b45[_0x5111('0x1c')]?_0x1b3b45[_0x5111('0x1c')][_0x5111('0x1e')]||null:null,'attributes':_0x1b3b45['options']?_0x1b3b45[_0x5111('0x1c')][_0x5111('0x1f')]||null:null,'limit':_0x1b3b45[_0x5111('0x1c')]?_0x1b3b45['options'][_0x5111('0x20')]||null:null,'include':_0x1b3b45[_0x5111('0x1c')]?_0x1b3b45[_0x5111('0x1c')][_0x5111('0x21')]?_[_0x5111('0x22')](_0x1b3b45[_0x5111('0x1c')][_0x5111('0x21')],function(_0x316b39){return{'model':db[_0x316b39[_0x5111('0x23')]],'as':_0x316b39['as'],'attributes':_0x316b39[_0x5111('0x1f')],'include':_0x316b39['include']?_[_0x5111('0x22')](_0x316b39[_0x5111('0x21')],function(_0x151b67){return{'model':db[_0x151b67[_0x5111('0x23')]],'as':_0x151b67['as'],'attributes':_0x151b67[_0x5111('0x1f')],'include':_0x151b67[_0x5111('0x21')]?_[_0x5111('0x22')](_0x151b67['include'],function(_0x1ce17f){return{'model':db[_0x1ce17f[_0x5111('0x23')]],'as':_0x1ce17f['as'],'attributes':_0x1ce17f[_0x5111('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xdf9031){logger[_0x5111('0xf')](_0x5111('0x19'),_0x1b3b45);logger['debug']('GetMailAccount',_0x1b3b45,JSON[_0x5111('0x14')](_0xdf9031));_0x52d236(_0xdf9031);})['catch'](function(_0xbacf9e){logger['error'](_0x5111('0x19'),_0xbacf9e['message'],_0x1b3b45);_0x2a1840(_0x5e8f1d['error'](0x1f4,_0xbacf9e['message']));});});};exports[_0x5111('0x24')]=function(_0x3fb9a5){var _0xe0839e=this;return new Promise(function(_0x3763f4,_0x13fafe){return db[_0x5111('0x1a')][_0x5111('0x25')]({'raw':_0x3fb9a5['options']?_0x3fb9a5[_0x5111('0x1c')][_0x5111('0x1d')]===undefined?!![]:![]:!![],'where':_0x3fb9a5[_0x5111('0x1c')]?_0x3fb9a5[_0x5111('0x1c')]['where']||null:null,'attributes':_0x3fb9a5['options']?_0x3fb9a5[_0x5111('0x1c')][_0x5111('0x1f')]||null:null,'include':_0x3fb9a5[_0x5111('0x1c')]?_0x3fb9a5[_0x5111('0x1c')][_0x5111('0x21')]?_[_0x5111('0x22')](_0x3fb9a5[_0x5111('0x1c')][_0x5111('0x21')],function(_0x4d4bf5){return{'model':db[_0x4d4bf5[_0x5111('0x23')]],'as':_0x4d4bf5['as'],'attributes':_0x4d4bf5[_0x5111('0x1f')],'include':_0x4d4bf5[_0x5111('0x21')]?_['map'](_0x4d4bf5[_0x5111('0x21')],function(_0xdc5c58){return{'model':db[_0xdc5c58[_0x5111('0x23')]],'as':_0xdc5c58['as'],'attributes':_0xdc5c58['attributes'],'include':_0xdc5c58['include']?_['map'](_0xdc5c58[_0x5111('0x21')],function(_0x187cab){return{'model':db[_0x187cab[_0x5111('0x23')]],'as':_0x187cab['as'],'attributes':_0x187cab[_0x5111('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x5111('0xe')](function(_0x570126){if(_0x3fb9a5[_0x5111('0x1c')][_0x5111('0x26')]===!![])_0x570126[_0x5111('0x27')](_0x5111('0x28'),_0x570126['getSmtpOptions']());logger[_0x5111('0xf')](_0x5111('0x24'),_0x3fb9a5);logger[_0x5111('0x12')](_0x5111('0x24'),_0x3fb9a5,JSON[_0x5111('0x14')](_0x570126));_0x3763f4(_0x570126);})[_0x5111('0x18')](function(_0x295d5e){logger[_0x5111('0x15')](_0x5111('0x24'),_0x295d5e[_0x5111('0x17')],_0x3fb9a5);_0x13fafe(_0xe0839e[_0x5111('0x15')](0x1f4,_0x295d5e[_0x5111('0x17')]));});});};exports[_0x5111('0x29')]=function(_0x4e0bc4){var _0x352de9=this;return new Promise(function(_0xf00f9,_0x54d2f1){var _0x2818ec={'body':_0x4e0bc4[_0x5111('0x2a')],'channel':_0x5111('0x2b')};var _0x41005f=_[_0x5111('0x2c')](_[_0x5111('0x2d')](db[_0x5111('0x2e')]['rawAttributes']),[_0x5111('0x2f'),_0x5111('0x30'),_0x5111('0x31'),_0x5111('0x32')]);var _0x96893c=![];if(_0x4e0bc4['body']['id']){delete _0x4e0bc4['body']['id'];}if(_[_0x5111('0x33')](_0x4e0bc4[_0x5111('0x2a')]['from'])){return _0x54d2f1(_0x352de9[_0x5111('0x15')](0x1f4,_0x5111('0x34')));}if(_[_0x5111('0x33')](_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x2a')])||_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x2a')]===''){return _0x54d2f1(_0x352de9[_0x5111('0x15')](0x1f4,_0x5111('0x35')));}if(_[_0x5111('0x33')](_0x4e0bc4['body']['mapKey'])){return _0x54d2f1(_0x352de9[_0x5111('0x15')](0x1f4,_0x5111('0x36')+_0x41005f));}if(!_[_0x5111('0x37')](_0x41005f,_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x38')])){return _0x54d2f1(_0x352de9[_0x5111('0x15')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x41005f));}var _0x1b9a74={};_0x1b9a74[_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x38')]]=_0x4e0bc4[_0x5111('0x2a')]['from'];return db[_0x5111('0x1a')][_0x5111('0x25')]({'where':{'id':_0x4e0bc4[_0x5111('0x39')]['id']},'include':[{'model':db['CmList'],'as':_0x5111('0x3a'),'include':[{'model':db[_0x5111('0x2e')],'as':_0x5111('0x3b'),'where':_0x1b9a74,'limit':0x1,'order':[[_0x5111('0x30'),'DESC']]}]},{'model':db['MailApplication'],'as':_0x5111('0x3c')},{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db[_0x5111('0x3d')],'as':_0x5111('0x3d')}]}]})['then'](function(_0x296f87){if(_0x296f87&&_0x296f87[_0x5111('0x3a')]){var _0x1676f9=_0x296f87[_0x5111('0x3e')]({'plain':!![]});_0x2818ec[_0x5111('0x39')]=_[_0x5111('0x3f')](_0x1676f9,[_0x5111('0x3c'),_0x5111('0x3a')]);_0x2818ec[_0x5111('0x39')][_0x5111('0x28')]=_0x296f87[_0x5111('0x40')]();_0x2818ec[_0x5111('0x41')]=_0x1676f9['Applications'];_0x2818ec[_0x5111('0x42')]=_0x1676f9[_0x5111('0x3a')];_0x2818ec[_0x5111('0x41')]=_[_0x5111('0x43')](_0x2818ec[_0x5111('0x41')],[_0x5111('0x44')],[_0x5111('0x45')]);if(_0x2818ec['account']&&_0x2818ec['account'][_0x5111('0x46')]){_0x2818ec['applications'][_0x5111('0x47')]({'id':0x0,'priority':_0x2818ec[_0x5111('0x41')][_0x5111('0x48')]+0x1,'app':_0x5111('0x49'),'appdata':_0x5111('0x46'),'interval':_0x5111('0x4a')});}if(_0x2818ec[_0x5111('0x39')]['Applications']){delete _0x2818ec[_0x5111('0x39')][_0x5111('0x3c')];}if(_0x2818ec['account'][_0x5111('0x3a')]){delete _0x2818ec[_0x5111('0x39')]['List'];}if(_0x1676f9[_0x5111('0x3a')]['Contacts']['length']){return _0x1676f9['List'][_0x5111('0x3b')][0x0];}var _0x30fb6d=_[_0x5111('0xa')](_0x4e0bc4[_0x5111('0x2a')],{'firstName':_0x4e0bc4['body'][_0x5111('0x4b')],'ListId':_0x1676f9[_0x5111('0x32')]});_0x30fb6d[_0x4e0bc4[_0x5111('0x2a')]['mapKey']]=_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x4b')];return db[_0x5111('0x2e')]['create'](_0x30fb6d);}else{throw new Error(_0x5111('0x4c'));}})['then'](function(_0x3bf42d){_0x2818ec[_0x5111('0x4d')]=_0x3bf42d;if(_0x3bf42d){if(!_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')]['messageId']){_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x4e')]=rs[_0x5111('0x4f')]()+'\x20'+_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x4b')];}var _0x54c415={'ContactId':_0x3bf42d['id'],'MailAccountId':_0x4e0bc4[_0x5111('0x39')]['id'],'inReplyTo':_0x4e0bc4['body'][_0x5111('0x17')][_0x5111('0x4e')],'to':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x4b')],'cc':_0x4e0bc4[_0x5111('0x2a')]['message']['cc'],'subject':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x50')],'attach':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x51')],'lastMsgAt':moment()['format'](_0x5111('0x52')),'lastMsgDirection':'in'};return db[_0x5111('0x53')][_0x5111('0x25')]({'where':{'closed':![],'MailAccountId':_0x4e0bc4[_0x5111('0x39')]['id']},'include':[{'model':db[_0x5111('0x54')],'as':'Messages','attributes':[_0x5111('0x4e')],'where':{'messageId':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x55')]}}]})[_0x5111('0xe')](function(_0x39de80){if(_0x39de80){return[_0x39de80,![]];}return db[_0x5111('0x53')]['create'](_0x54c415)['then'](function(_0x4eaed9){return[_0x4eaed9,!![]];});});}else{throw new Error(_0x5111('0x56'));}})[_0x5111('0x57')](function(_0x1674d6,_0x3fb713){if(_0x1674d6){_0x96893c=_0x3fb713;if(!_0x3fb713){return _0x1674d6[_0x5111('0x58')]({'inReplyTo':_0x4e0bc4['body'][_0x5111('0x17')][_0x5111('0x4e')],'to':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x4b')],'cc':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')]['cc'],'subject':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x50')],'attach':_0x1674d6['attach']?_0x1674d6[_0x5111('0x51')]:_0x4e0bc4[_0x5111('0x2a')]['message'][_0x5111('0x51')],'substatus':null,'substatusAt':moment()[_0x5111('0x59')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x5111('0x59')](_0x5111('0x52')),'lastMsgDirection':'in'});}else{return _0x1674d6;}}})[_0x5111('0xe')](function(_0x3a7cc9){_0x2818ec[_0x5111('0x5a')]=_0x3a7cc9[_0x5111('0x3e')]({'plain':!![]});_0x2818ec[_0x5111('0x5a')]['created']=_0x96893c;return db[_0x5111('0x54')]['create']({'body':_0x4e0bc4['body'][_0x5111('0x2a')],'MailAccountId':_0x4e0bc4['account']['id'],'MailInteractionId':_0x3a7cc9['id'],'direction':'in','ContactId':_0x2818ec[_0x5111('0x4d')]['id'],'messageId':_0x4e0bc4['body'][_0x5111('0x17')][_0x5111('0x4e')],'from':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x4b')],'to':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')]['to'],'cc':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')]['cc'],'subject':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x50')],'attach':_0x4e0bc4[_0x5111('0x2a')]['message'][_0x5111('0x51')],'Attachments':_0x4e0bc4['body'][_0x5111('0x17')]['attachments'],'originTo':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x5b')],'originCc':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')]['originCc'],'bcc':_0x4e0bc4['body'][_0x5111('0x17')]['bcc'],'ChatWebsiteId':_0x4e0bc4['body'][_0x5111('0x17')][_0x5111('0x5c')]||null,'originChannel':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x5d')]||_0x5111('0x5e'),'ChatOfflineMessageId':_0x4e0bc4['body'][_0x5111('0x17')][_0x5111('0x5f')]||null},{'include':[{'model':db['Attachment'],'as':_0x5111('0x60')}]});})['then'](function(_0x1ffb56){_0x2818ec[_0x5111('0x17')]=_0x1ffb56;if(!_0x2818ec[_0x5111('0x5a')][_0x5111('0x61')]){return;}return db['User'][_0x5111('0x25')]({'attributes':['id','name'],'where':{'id':_0x2818ec[_0x5111('0x5a')]['UserId']}});})[_0x5111('0xe')](function(_0x335919){if(_0x335919){_0x2818ec[_0x5111('0x41')][_0x5111('0x62')]({'id':0x0,'priority':0x0,'app':_0x5111('0x63'),'appdata':_0x335919[_0x5111('0x64')]+','+(_0x2818ec[_0x5111('0x39')][_0x5111('0x65')]||0xa),'interval':'*,*,*,*'});}if(!_0x2818ec[_0x5111('0x5a')][_0x5111('0x66')]){return;}return db[_0x5111('0x67')][_0x5111('0x25')]({'attributes':['id',_0x5111('0x64')],'where':{'id':_0x2818ec['interaction'][_0x5111('0x66')]}});})[_0x5111('0xe')](function(_0x5d2772){if(_0x5d2772){_0x2818ec[_0x5111('0x41')][_0x5111('0x62')]({'id':0x0,'priority':0x1,'app':_0x5111('0x68'),'appdata':_0x5d2772['name']+','+(_0x2818ec[_0x5111('0x39')][_0x5111('0x69')]||0x12c),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x5111('0x6a'),'startRouting',_0x2818ec);})[_0x5111('0xe')](function(_0x5dcc50){_0xf00f9(_0x5dcc50);})[_0x5111('0x18')](function(_0x44b7ff){_0x54d2f1(_0x352de9[_0x5111('0x15')](0x1f4,_0x44b7ff[_0x5111('0x17')]));});});};
\ No newline at end of file
index d1943db..fa6d4eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09ef=['save','remove','update','emit','removeListener','register','length','mailAccount:','./mailAccount.events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x09ef,0x15e));var _0xf09e=function(_0xd66d9f,_0x610165){_0xd66d9f=_0xd66d9f-0x0;var _0x483580=_0x09ef[_0xd66d9f];return _0x483580;};'use strict';var MailAccountEvents=require(_0xf09e('0x0'));var events=[_0xf09e('0x1'),_0xf09e('0x2'),_0xf09e('0x3')];function createListener(_0x476c52,_0x17004f){return function(_0x504169){_0x17004f[_0xf09e('0x4')](_0x476c52,_0x504169);};}function removeListener(_0x56eab9,_0xbefffe){return function(){MailAccountEvents[_0xf09e('0x5')](_0x56eab9,_0xbefffe);};}exports[_0xf09e('0x6')]=function(_0xf4ba1b){for(var _0x311400=0x0,_0x294258=events[_0xf09e('0x7')];_0x311400<_0x294258;_0x311400++){var _0x877574=events[_0x311400];var _0x2e5a79=createListener(_0xf09e('0x8')+_0x877574,_0xf4ba1b);MailAccountEvents['on'](_0x877574,_0x2e5a79);}};
\ No newline at end of file
+var _0xedc8=['remove','update','length','./mailAccount.events','save'];(function(_0x3b7a06,_0x41f79e){var _0x363e31=function(_0x51e3f5){while(--_0x51e3f5){_0x3b7a06['push'](_0x3b7a06['shift']());}};_0x363e31(++_0x41f79e);}(_0xedc8,0x99));var _0x8edc=function(_0x19b3f9,_0xade753){_0x19b3f9=_0x19b3f9-0x0;var _0x18c3f6=_0xedc8[_0x19b3f9];return _0x18c3f6;};'use strict';var MailAccountEvents=require(_0x8edc('0x0'));var events=[_0x8edc('0x1'),_0x8edc('0x2'),_0x8edc('0x3')];function createListener(_0x8e653a,_0x1b3d10){return function(_0x3e3c0f){_0x1b3d10['emit'](_0x8e653a,_0x3e3c0f);};}function removeListener(_0x5adbca,_0x262b49){return function(){MailAccountEvents['removeListener'](_0x5adbca,_0x262b49);};}exports['register']=function(_0x3fe051){for(var _0x1d479b=0x0,_0x40408c=events[_0x8edc('0x4')];_0x1d479b<_0x40408c;_0x1d479b++){var _0x164965=events[_0x1d479b];var _0x59537d=createListener('mailAccount:'+_0x164965,_0x3fe051);MailAccountEvents['on'](_0x164965,_0x59537d);}};
\ No newline at end of file
index bc29f5c..6decd40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f88=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','isAuthenticated','put','/:id','update','delete'];(function(_0x512a57,_0x2c4458){var _0x48502b=function(_0xaff2a0){while(--_0xaff2a0){_0x512a57['push'](_0x512a57['shift']());}};_0x48502b(++_0x2c4458);}(_0x3f88,0x1d6));var _0x83f8=function(_0x19a770,_0x4ebdbf){_0x19a770=_0x19a770-0x0;var _0xe85dbc=_0x3f88[_0x19a770];return _0xe85dbc;};'use strict';var multer=require(_0x83f8('0x0'));var util=require(_0x83f8('0x1'));var path=require(_0x83f8('0x2'));var timeout=require(_0x83f8('0x3'));var express=require(_0x83f8('0x4'));var router=express[_0x83f8('0x5')]();var fs_extra=require(_0x83f8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x83f8('0x7'));var config=require(_0x83f8('0x8'));var controller=require(_0x83f8('0x9'));router[_0x83f8('0xa')]('/:id',auth[_0x83f8('0xb')](),controller['show']);router[_0x83f8('0xc')](_0x83f8('0xd'),auth[_0x83f8('0xb')](),controller[_0x83f8('0xe')]);router[_0x83f8('0xf')](_0x83f8('0xd'),auth[_0x83f8('0xb')](),controller[_0x83f8('0x10')]);module[_0x83f8('0x11')]=router;
\ No newline at end of file
+var _0xdb10=['path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','show','isAuthenticated','destroy','exports','multer','util'];(function(_0x3553c9,_0x1f1d5a){var _0x495894=function(_0x143b66){while(--_0x143b66){_0x3553c9['push'](_0x3553c9['shift']());}};_0x495894(++_0x1f1d5a);}(_0xdb10,0x1b0));var _0x0db1=function(_0x2c69a1,_0x201903){_0x2c69a1=_0x2c69a1-0x0;var _0x24bb91=_0xdb10[_0x2c69a1];return _0x24bb91;};'use strict';var multer=require(_0x0db1('0x0'));var util=require(_0x0db1('0x1'));var path=require(_0x0db1('0x2'));var timeout=require(_0x0db1('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0db1('0x4'));var interaction=require(_0x0db1('0x5'));var config=require(_0x0db1('0x6'));var controller=require(_0x0db1('0x7'));router[_0x0db1('0x8')](_0x0db1('0x9'),auth['isAuthenticated'](),controller[_0x0db1('0xa')]);router['put'](_0x0db1('0x9'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x0db1('0x9'),auth[_0x0db1('0xb')](),controller[_0x0db1('0xc')]);module[_0x0db1('0xd')]=router;
\ No newline at end of file
index 0e4d4c9..e4705d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b4f=['*,*,*,*','exports','INTEGER','STRING','noop','TEXT'];(function(_0x6fc5ba,_0x4a75c6){var _0x26e04c=function(_0x5e7173){while(--_0x5e7173){_0x6fc5ba['push'](_0x6fc5ba['shift']());}};_0x26e04c(++_0x4a75c6);}(_0x4b4f,0x1e7));var _0xf4b4=function(_0x99c4a1,_0x40e7a8){_0x99c4a1=_0x99c4a1-0x0;var _0x371738=_0x4b4f[_0x99c4a1];return _0x371738;};'use strict';var Sequelize=require('sequelize');module[_0xf4b4('0x0')]={'priority':{'type':Sequelize[_0xf4b4('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xf4b4('0x2')],'allowNull':![],'defaultValue':_0xf4b4('0x3')},'appdata':{'type':Sequelize[_0xf4b4('0x4')]()},'description':{'type':Sequelize[_0xf4b4('0x2')]},'interval':{'type':Sequelize[_0xf4b4('0x2')],'defaultValue':_0xf4b4('0x5')}};
\ No newline at end of file
+var _0xc18a=['STRING','noop','TEXT','*,*,*,*'];(function(_0x8c1005,_0x1f3f16){var _0x175354=function(_0xd0e9c4){while(--_0xd0e9c4){_0x8c1005['push'](_0x8c1005['shift']());}};_0x175354(++_0x1f3f16);}(_0xc18a,0x188));var _0xac18=function(_0x1c6e7e,_0xbb0440){_0x1c6e7e=_0x1c6e7e-0x0;var _0x168de4=_0xc18a[_0x1c6e7e];return _0x168de4;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xac18('0x0')],'allowNull':![],'defaultValue':_0xac18('0x1')},'appdata':{'type':Sequelize[_0xac18('0x2')]()},'description':{'type':Sequelize[_0xac18('0x0')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xac18('0x3')}};
\ No newline at end of file
index 51c44a2..4565135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['limit','count','offset','set','Content-Range','json','apply','save','update','then','end','name','send','show','params','model','keys','MailApplication','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','body','catch','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined'];(function(_0x8e3507,_0x7c734c){var _0x48c52b=function(_0x51225f){while(--_0x51225f){_0x8e3507['push'](_0x8e3507['shift']());}};_0x48c52b(++_0x7c734c);}(_0xe706,0xa3));var _0x6e70=function(_0x7b173,_0x539d7f){_0x7b173=_0x7b173-0x0;var _0x1c598c=_0xe706[_0x7b173];return _0x1c598c;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];function respondWithStatusCode(_0x27dd9b,_0x3b38f3){_0x3b38f3=_0x3b38f3||0xcc;return function(_0x310eb7){if(_0x310eb7){return _0x27dd9b[_0x6e70('0x1d')](_0x3b38f3);}return _0x27dd9b[_0x6e70('0x1e')](_0x3b38f3)['end']();};}function respondWithResult(_0x52737e,_0x48bc72){_0x48bc72=_0x48bc72||0xc8;return function(_0x257e81){if(_0x257e81){return _0x52737e['status'](_0x48bc72)['json'](_0x257e81);}};}function respondWithFilteredResult(_0x304716,_0x22c50c){return function(_0x5d9263){if(_0x5d9263){var _0x24f3ac=typeof _0x22c50c['offset']===_0x6e70('0x1f')&&typeof _0x22c50c[_0x6e70('0x20')]==='undefined';var _0x49029f=_0x5d9263[_0x6e70('0x21')];var _0x5ea7a5=_0x24f3ac?0x0:_0x22c50c[_0x6e70('0x22')];var _0x173afe=_0x24f3ac?_0x5d9263['count']:_0x22c50c['offset']+_0x22c50c[_0x6e70('0x20')];var _0x208e21;if(_0x173afe>=_0x49029f){_0x173afe=_0x49029f;_0x208e21=0xc8;}else{_0x208e21=0xce;}_0x304716[_0x6e70('0x1e')](_0x208e21);return _0x304716[_0x6e70('0x23')](_0x6e70('0x24'),_0x5ea7a5+'-'+_0x173afe+'/'+_0x49029f)[_0x6e70('0x25')](_0x5d9263);}return null;};}function patchUpdates(_0x1b2453){return function(_0x44a49f){try{jsonpatch[_0x6e70('0x26')](_0x44a49f,_0x1b2453,!![]);}catch(_0xb29a2a){return BPromise['reject'](_0xb29a2a);}return _0x44a49f[_0x6e70('0x27')]();};}function saveUpdates(_0x344b65,_0x27b294){return function(_0x502b2d){if(_0x502b2d){return _0x502b2d[_0x6e70('0x28')](_0x344b65)[_0x6e70('0x29')](function(_0x3337a6){return _0x3337a6;});}return null;};}function removeEntity(_0x50da2c,_0x10fc91){return function(_0x538b9c){if(_0x538b9c){return _0x538b9c['destroy']()['then'](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)[_0x6e70('0x2a')]();});}};}function handleEntityNotFound(_0x51d292,_0x3ecdf1){return function(_0x1196ed){if(!_0x1196ed){_0x51d292['sendStatus'](0x194);}return _0x1196ed;};}function handleError(_0x338ad6,_0x67fb43){_0x67fb43=_0x67fb43||0x1f4;return function(_0x2bb231){logger['error'](_0x2bb231['stack']);if(_0x2bb231[_0x6e70('0x2b')]){delete _0x2bb231[_0x6e70('0x2b')];}_0x338ad6[_0x6e70('0x1e')](_0x67fb43)[_0x6e70('0x2c')](_0x2bb231);};}exports[_0x6e70('0x2d')]=function(_0x5d772a,_0x1952ea){var _0x406f29={'raw':!![],'where':{'id':_0x5d772a[_0x6e70('0x2e')]['id']}},_0xecf336={};_0xecf336[_0x6e70('0x2f')]=_[_0x6e70('0x30')](db[_0x6e70('0x31')][_0x6e70('0x32')]);_0xecf336[_0x6e70('0x33')]=_[_0x6e70('0x30')](_0x5d772a['query']);_0xecf336[_0x6e70('0x34')]=_['intersection'](_0xecf336[_0x6e70('0x2f')],_0xecf336['query']);_0x406f29[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0xecf336[_0x6e70('0x2f')],qs['fields'](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x37')]));_0x406f29['attributes']=_0x406f29[_0x6e70('0x35')][_0x6e70('0x38')]?_0x406f29['attributes']:_0xecf336[_0x6e70('0x2f')];if(_0x5d772a[_0x6e70('0x33')][_0x6e70('0x39')]){_0x406f29[_0x6e70('0x3a')]=[{'all':!![]}];}_0x406f29=_[_0x6e70('0x3b')]({},_0x406f29,_0x5d772a[_0x6e70('0x3c')]);return db[_0x6e70('0x31')][_0x6e70('0x3d')](_0x406f29)[_0x6e70('0x29')](handleEntityNotFound(_0x1952ea,null))[_0x6e70('0x29')](respondWithResult(_0x1952ea,null))['catch'](handleError(_0x1952ea,null));};exports[_0x6e70('0x28')]=function(_0x4795a0,_0x23cd1a){if(_0x4795a0[_0x6e70('0x3e')]['id']){delete _0x4795a0[_0x6e70('0x3e')]['id'];}return db[_0x6e70('0x31')][_0x6e70('0x3d')]({'where':{'id':_0x4795a0[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x23cd1a,null))[_0x6e70('0x29')](saveUpdates(_0x4795a0[_0x6e70('0x3e')],null))[_0x6e70('0x29')](respondWithResult(_0x23cd1a,null))[_0x6e70('0x3f')](handleError(_0x23cd1a,null));};exports[_0x6e70('0x40')]=function(_0x5594d3,_0x501b53){return db['MailApplication']['find']({'where':{'id':_0x5594d3[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x501b53,null))[_0x6e70('0x29')](removeEntity(_0x501b53,null))[_0x6e70('0x3f')](handleError(_0x501b53,null));};
\ No newline at end of file
+var _0xb43b=['name','status','send','show','params','keys','MailApplication','rawAttributes','query','intersection','model','fields','attributes','length','includeAll','merge','options','find','then','catch','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','sendStatus'];(function(_0x579ee2,_0x3c6baf){var _0x473cbd=function(_0x4f0e36){while(--_0x4f0e36){_0x579ee2['push'](_0x579ee2['shift']());}};_0x473cbd(++_0x3c6baf);}(_0xb43b,0x1b2));var _0xbb43=function(_0x3ac5bb,_0x433abd){_0x3ac5bb=_0x3ac5bb-0x0;var _0x44419f=_0xb43b[_0x3ac5bb];return _0x44419f;};'use strict';var emlformat=require(_0xbb43('0x0'));var rimraf=require(_0xbb43('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb43('0x2'));var rp=require(_0xbb43('0x3'));var moment=require(_0xbb43('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbb43('0x5'));var util=require(_0xbb43('0x6'));var path=require(_0xbb43('0x7'));var sox=require(_0xbb43('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb43('0x9'));var _=require('lodash');var squel=require(_0xbb43('0xa'));var crypto=require(_0xbb43('0xb'));var jsforce=require(_0xbb43('0xc'));var deskjs=require(_0xbb43('0xd'));var toCsv=require(_0xbb43('0xe'));var querystring=require('querystring');var Papa=require(_0xbb43('0xf'));var Redis=require(_0xbb43('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbb43('0x11'));var as=require(_0xbb43('0x12'));var hardwareService=require(_0xbb43('0x13'));var logger=require(_0xbb43('0x14'))(_0xbb43('0x15'));var utils=require(_0xbb43('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbb43('0x17'));var db=require(_0xbb43('0x18'))['db'];function respondWithStatusCode(_0x50e2c0,_0x578392){_0x578392=_0x578392||0xcc;return function(_0x41e7e5){if(_0x41e7e5){return _0x50e2c0['sendStatus'](_0x578392);}return _0x50e2c0['status'](_0x578392)[_0xbb43('0x19')]();};}function respondWithResult(_0x5a509f,_0x68d45d){_0x68d45d=_0x68d45d||0xc8;return function(_0x43021d){if(_0x43021d){return _0x5a509f['status'](_0x68d45d)['json'](_0x43021d);}};}function respondWithFilteredResult(_0x4d5bcf,_0x338120){return function(_0x2abce0){if(_0x2abce0){var _0x57bd1d=typeof _0x338120['offset']===_0xbb43('0x1a')&&typeof _0x338120['limit']==='undefined';var _0x2b0797=_0x2abce0[_0xbb43('0x1b')];var _0x2e3b43=_0x57bd1d?0x0:_0x338120['offset'];var _0x1c16d7=_0x57bd1d?_0x2abce0['count']:_0x338120[_0xbb43('0x1c')]+_0x338120[_0xbb43('0x1d')];var _0x4dfc54;if(_0x1c16d7>=_0x2b0797){_0x1c16d7=_0x2b0797;_0x4dfc54=0xc8;}else{_0x4dfc54=0xce;}_0x4d5bcf['status'](_0x4dfc54);return _0x4d5bcf[_0xbb43('0x1e')](_0xbb43('0x1f'),_0x2e3b43+'-'+_0x1c16d7+'/'+_0x2b0797)[_0xbb43('0x20')](_0x2abce0);}return null;};}function patchUpdates(_0x2bf2d4){return function(_0x5bcce7){try{jsonpatch[_0xbb43('0x21')](_0x5bcce7,_0x2bf2d4,!![]);}catch(_0x5f4416){return BPromise[_0xbb43('0x22')](_0x5f4416);}return _0x5bcce7['save']();};}function saveUpdates(_0x2f5e31,_0x565256){return function(_0x3f323e){if(_0x3f323e){return _0x3f323e[_0xbb43('0x23')](_0x2f5e31)['then'](function(_0x1d0768){return _0x1d0768;});}return null;};}function removeEntity(_0x4dfb7f,_0xf24e60){return function(_0x298ce2){if(_0x298ce2){return _0x298ce2[_0xbb43('0x24')]()['then'](function(){_0x4dfb7f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x269ca5,_0x32d7f0){return function(_0x5d8310){if(!_0x5d8310){_0x269ca5[_0xbb43('0x25')](0x194);}return _0x5d8310;};}function handleError(_0x2da653,_0x226827){_0x226827=_0x226827||0x1f4;return function(_0x3874fb){logger['error'](_0x3874fb['stack']);if(_0x3874fb[_0xbb43('0x26')]){delete _0x3874fb[_0xbb43('0x26')];}_0x2da653[_0xbb43('0x27')](_0x226827)[_0xbb43('0x28')](_0x3874fb);};}exports[_0xbb43('0x29')]=function(_0x40b04b,_0x21d386){var _0x473828={'raw':!![],'where':{'id':_0x40b04b[_0xbb43('0x2a')]['id']}},_0x539730={};_0x539730['model']=_[_0xbb43('0x2b')](db[_0xbb43('0x2c')][_0xbb43('0x2d')]);_0x539730[_0xbb43('0x2e')]=_['keys'](_0x40b04b[_0xbb43('0x2e')]);_0x539730['filters']=_['intersection'](_0x539730['model'],_0x539730[_0xbb43('0x2e')]);_0x473828['attributes']=_[_0xbb43('0x2f')](_0x539730[_0xbb43('0x30')],qs[_0xbb43('0x31')](_0x40b04b['query'][_0xbb43('0x31')]));_0x473828[_0xbb43('0x32')]=_0x473828[_0xbb43('0x32')][_0xbb43('0x33')]?_0x473828[_0xbb43('0x32')]:_0x539730[_0xbb43('0x30')];if(_0x40b04b[_0xbb43('0x2e')][_0xbb43('0x34')]){_0x473828['include']=[{'all':!![]}];}_0x473828=_[_0xbb43('0x35')]({},_0x473828,_0x40b04b[_0xbb43('0x36')]);return db[_0xbb43('0x2c')][_0xbb43('0x37')](_0x473828)[_0xbb43('0x38')](handleEntityNotFound(_0x21d386,null))[_0xbb43('0x38')](respondWithResult(_0x21d386,null))[_0xbb43('0x39')](handleError(_0x21d386,null));};exports[_0xbb43('0x23')]=function(_0x349a83,_0x57105c){if(_0x349a83[_0xbb43('0x3a')]['id']){delete _0x349a83[_0xbb43('0x3a')]['id'];}return db[_0xbb43('0x2c')][_0xbb43('0x37')]({'where':{'id':_0x349a83[_0xbb43('0x2a')]['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x57105c,null))['then'](saveUpdates(_0x349a83[_0xbb43('0x3a')],null))[_0xbb43('0x38')](respondWithResult(_0x57105c,null))['catch'](handleError(_0x57105c,null));};exports[_0xbb43('0x24')]=function(_0x2c9a7c,_0x11d384){return db['MailApplication']['find']({'where':{'id':_0x2c9a7c['params']['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x11d384,null))[_0xbb43('0x38')](removeEntity(_0x11d384,null))['catch'](handleError(_0x11d384,null));};
\ No newline at end of file
index c615ad4..d0c074a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf68c=['utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise','path','rimraf','exports','define','mail_applications','utf8mb4'];(function(_0x38ce4c,_0xfdbe8c){var _0x5d4544=function(_0x503537){while(--_0x503537){_0x38ce4c['push'](_0x38ce4c['shift']());}};_0x5d4544(++_0xfdbe8c);}(_0xf68c,0x9d));var _0xcf68=function(_0x4eb17c,_0x4e942e){_0x4eb17c=_0x4eb17c-0x0;var _0x5cf0f0=_0xf68c[_0x4eb17c];return _0x5cf0f0;};'use strict';var _=require(_0xcf68('0x0'));var util=require(_0xcf68('0x1'));var logger=require(_0xcf68('0x2'))('api');var moment=require(_0xcf68('0x3'));var BPromise=require('bluebird');var rp=require(_0xcf68('0x4'));var fs=require('fs');var path=require(_0xcf68('0x5'));var rimraf=require(_0xcf68('0x6'));var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module[_0xcf68('0x7')]=function(_0x389543,_0x19c7c3){return _0x389543[_0xcf68('0x8')]('MailApplication',attributes,{'tableName':_0xcf68('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcf68('0xa'),'collate':_0xcf68('0xb')});};
\ No newline at end of file
+var _0x568a=['define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','util','api','moment','request-promise','path','../../config/environment','./mailApplication.attributes','exports'];(function(_0x3fff0c,_0x3e0613){var _0x546615=function(_0x39e0ed){while(--_0x39e0ed){_0x3fff0c['push'](_0x3fff0c['shift']());}};_0x546615(++_0x3e0613);}(_0x568a,0xd5));var _0xa568=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x568a[_0x164eca];return _0x2ce562;};'use strict';var _=require('lodash');var util=require(_0xa568('0x0'));var logger=require('../../config/logger')(_0xa568('0x1'));var moment=require(_0xa568('0x2'));var BPromise=require('bluebird');var rp=require(_0xa568('0x3'));var fs=require('fs');var path=require(_0xa568('0x4'));var rimraf=require('rimraf');var config=require(_0xa568('0x5'));var attributes=require(_0xa568('0x6'));module[_0xa568('0x7')]=function(_0x168496,_0x6c1dec){return _0x168496[_0xa568('0x8')](_0xa568('0x9'),attributes,{'tableName':_0xa568('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa568('0xb'),'collate':_0xa568('0xc')});};
\ No newline at end of file
index 87ca68c..dbe3fe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa63e=['jayson/promise','request','then','info','MailApplication,\x20%s,\x20%s','debug','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateMailApplication','update','body','options','raw','where','attributes','limit','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x3da7ab,_0x2e00dc){var _0x4819ed=function(_0x484ce3){while(--_0x484ce3){_0x3da7ab['push'](_0x3da7ab['shift']());}};_0x4819ed(++_0x2e00dc);}(_0xa63e,0xa2));var _0xea63=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xa63e[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xea63('0x0'));var util=require(_0xea63('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xea63('0x2'));var fs=require('fs');var Redis=require(_0xea63('0x3'));var db=require(_0xea63('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xea63('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xea63('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4c7136,_0x1e82ad,_0x1676f3){return new BPromise(function(_0xd2ce80,_0x5b79da){return client[_0xea63('0x7')](_0x4c7136,_0x1676f3)[_0xea63('0x8')](function(_0x2a2e70){logger[_0xea63('0x9')](_0xea63('0xa'),_0x1e82ad,'request\x20sent');logger[_0xea63('0xb')](_0xea63('0xc'),_0x1e82ad,_0xea63('0xd'),JSON[_0xea63('0xe')](_0x2a2e70));if(_0x2a2e70['error']){if(_0x2a2e70[_0xea63('0xf')][_0xea63('0x10')]===0x1f4){logger[_0xea63('0xf')](_0xea63('0xa'),_0x1e82ad,_0x2a2e70[_0xea63('0xf')]['message']);return _0x5b79da(_0x2a2e70[_0xea63('0xf')]['message']);}logger[_0xea63('0xf')](_0xea63('0xa'),_0x1e82ad,_0x2a2e70[_0xea63('0xf')][_0xea63('0x11')]);return _0xd2ce80(_0x2a2e70[_0xea63('0xf')][_0xea63('0x11')]);}else{logger[_0xea63('0x9')](_0xea63('0xa'),_0x1e82ad,_0xea63('0xd'));_0xd2ce80(_0x2a2e70[_0xea63('0x12')][_0xea63('0x11')]);}})[_0xea63('0x13')](function(_0x1e40a4){logger['error'](_0xea63('0xa'),_0x1e82ad,_0x1e40a4);_0x5b79da(_0x1e40a4);});});}exports[_0xea63('0x14')]=function(_0x54c637){var _0x523397=this;return new Promise(function(_0x4b83d0,_0x28ac09){return db['MailApplication'][_0xea63('0x15')](_0x54c637[_0xea63('0x16')],{'raw':_0x54c637[_0xea63('0x17')]?_0x54c637[_0xea63('0x17')][_0xea63('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54c637[_0xea63('0x17')]?_0x54c637['options'][_0xea63('0x19')]||null:null,'attributes':_0x54c637[_0xea63('0x17')]?_0x54c637[_0xea63('0x17')][_0xea63('0x1a')]||null:null,'limit':_0x54c637['options']?_0x54c637[_0xea63('0x17')][_0xea63('0x1b')]||null:null})[_0xea63('0x8')](function(_0x2ad813){logger[_0xea63('0x9')](_0xea63('0x14'),_0x54c637);logger[_0xea63('0xb')](_0xea63('0x14'),_0x54c637,JSON['stringify'](_0x2ad813));_0x4b83d0(_0x2ad813);})['catch'](function(_0x5cfe20){logger[_0xea63('0xf')](_0xea63('0x14'),_0x5cfe20[_0xea63('0x11')],_0x54c637);_0x28ac09(_0x523397['error'](0x1f4,_0x5cfe20[_0xea63('0x11')]));});});};
\ No newline at end of file
+var _0x011c=['result','UpdateMailApplication','MailApplication','update','options','attributes','limit','catch','util','moment','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','MailApplication,\x20%s,\x20%s','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message'];(function(_0x34b052,_0x5e6a86){var _0xa1cf5c=function(_0x1b4b2c){while(--_0x1b4b2c){_0x34b052['push'](_0x34b052['shift']());}};_0xa1cf5c(++_0x5e6a86);}(_0x011c,0xf2));var _0xc011=function(_0xb4804f,_0x16748b){_0xb4804f=_0xb4804f-0x0;var _0x3d1108=_0x011c[_0xb4804f];return _0x3d1108;};'use strict';var _=require('lodash');var util=require(_0xc011('0x0'));var moment=require(_0xc011('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc011('0x2'))['db'];var utils=require(_0xc011('0x3'));var logger=require(_0xc011('0x4'))('rpc');var config=require(_0xc011('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xc011('0x6')][_0xc011('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2ef178,_0x481f39,_0xbe4fe6){return new BPromise(function(_0x111c34,_0x557438){return client[_0xc011('0x8')](_0x2ef178,_0xbe4fe6)[_0xc011('0x9')](function(_0x18504c){logger[_0xc011('0xa')](_0xc011('0xb'),_0x481f39,'request\x20sent');logger['debug'](_0xc011('0xc'),_0x481f39,_0xc011('0xd'),JSON[_0xc011('0xe')](_0x18504c));if(_0x18504c['error']){if(_0x18504c['error'][_0xc011('0xf')]===0x1f4){logger[_0xc011('0x10')](_0xc011('0xb'),_0x481f39,_0x18504c[_0xc011('0x10')][_0xc011('0x11')]);return _0x557438(_0x18504c[_0xc011('0x10')][_0xc011('0x11')]);}logger[_0xc011('0x10')](_0xc011('0xb'),_0x481f39,_0x18504c[_0xc011('0x10')][_0xc011('0x11')]);return _0x111c34(_0x18504c[_0xc011('0x10')][_0xc011('0x11')]);}else{logger[_0xc011('0xa')]('MailApplication,\x20%s,\x20%s',_0x481f39,_0xc011('0xd'));_0x111c34(_0x18504c[_0xc011('0x12')][_0xc011('0x11')]);}})['catch'](function(_0x754378){logger[_0xc011('0x10')](_0xc011('0xb'),_0x481f39,_0x754378);_0x557438(_0x754378);});});}exports[_0xc011('0x13')]=function(_0x451ac7){var _0x55d496=this;return new Promise(function(_0x247e19,_0x42802a){return db[_0xc011('0x14')][_0xc011('0x15')](_0x451ac7['body'],{'raw':_0x451ac7['options']?_0x451ac7[_0xc011('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x451ac7['options']?_0x451ac7[_0xc011('0x16')]['where']||null:null,'attributes':_0x451ac7[_0xc011('0x16')]?_0x451ac7[_0xc011('0x16')][_0xc011('0x17')]||null:null,'limit':_0x451ac7['options']?_0x451ac7['options'][_0xc011('0x18')]||null:null})[_0xc011('0x9')](function(_0x2a8a69){logger[_0xc011('0xa')](_0xc011('0x13'),_0x451ac7);logger['debug'](_0xc011('0x13'),_0x451ac7,JSON['stringify'](_0x2a8a69));_0x247e19(_0x2a8a69);})[_0xc011('0x19')](function(_0x1b433b){logger['error']('UpdateMailApplication',_0x1b433b[_0xc011('0x11')],_0x451ac7);_0x42802a(_0x55d496[_0xc011('0x10')](0x1f4,_0x1b433b[_0xc011('0x11')]));});});};
\ No newline at end of file
index 1af07d6..5398cbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fa0=['removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','mailinteraction:update','update','mailinteraction:destroy','delete'];(function(_0x4836bc,_0x1a0976){var _0x43d34a=function(_0x2a99a4){while(--_0x2a99a4){_0x4836bc['push'](_0x4836bc['shift']());}};_0x43d34a(++_0x1a0976);}(_0x3fa0,0x1cd));var _0x03fa=function(_0x4e3c65,_0x35aefe){_0x4e3c65=_0x4e3c65-0x0;var _0x2b5fe3=_0x3fa0[_0x4e3c65];return _0x2b5fe3;};'use strict';var express=require(_0x03fa('0x0'));var router=express[_0x03fa('0x1')]();var auth=require(_0x03fa('0x2'));var interaction=require(_0x03fa('0x3'));var controller=require('./mailInteraction.controller');router[_0x03fa('0x4')]('/',auth[_0x03fa('0x5')](),controller[_0x03fa('0x6')]);router['get'](_0x03fa('0x7'),auth['isAuthenticated'](),controller[_0x03fa('0x8')]);router[_0x03fa('0x4')](_0x03fa('0x9'),auth[_0x03fa('0x5')](),controller['show']);router[_0x03fa('0x4')](_0x03fa('0xa'),auth[_0x03fa('0x5')](),controller[_0x03fa('0xb')]);router['get'](_0x03fa('0xc'),auth[_0x03fa('0x5')](),controller['download']);router[_0x03fa('0xd')]('/',auth[_0x03fa('0x5')](),controller[_0x03fa('0xe')]);router[_0x03fa('0xd')](_0x03fa('0xa'),auth['isAuthenticated'](),controller[_0x03fa('0xf')]);router[_0x03fa('0xd')](_0x03fa('0x10'),auth[_0x03fa('0x5')](),interaction[_0x03fa('0x11')](_0x03fa('0x12'),_0x03fa('0x13')),controller[_0x03fa('0x14')]);router['put']('/:id',auth[_0x03fa('0x5')](),interaction[_0x03fa('0x11')](_0x03fa('0x12'),_0x03fa('0x15')),controller[_0x03fa('0x16')]);router['delete'](_0x03fa('0x9'),auth['isAuthenticated'](),interaction[_0x03fa('0x11')]('mail',_0x03fa('0x17')),controller['destroy']);router[_0x03fa('0x18')](_0x03fa('0x10'),auth[_0x03fa('0x5')](),controller[_0x03fa('0x19')]);module[_0x03fa('0x1a')]=router;
\ No newline at end of file
+var _0xc509=['index','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','mail','addTags','put','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','exports','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get'];(function(_0x35e15c,_0x454ecb){var _0x2b0c6d=function(_0x44c16b){while(--_0x44c16b){_0x35e15c['push'](_0x35e15c['shift']());}};_0x2b0c6d(++_0x454ecb);}(_0xc509,0x8b));var _0x9c50=function(_0x4d3029,_0x1a4062){_0x4d3029=_0x4d3029-0x0;var _0x3f555e=_0xc509[_0x4d3029];return _0x3f555e;};'use strict';var express=require(_0x9c50('0x0'));var router=express[_0x9c50('0x1')]();var auth=require(_0x9c50('0x2'));var interaction=require(_0x9c50('0x3'));var controller=require(_0x9c50('0x4'));router[_0x9c50('0x5')]('/',auth['isAuthenticated'](),controller[_0x9c50('0x6')]);router[_0x9c50('0x5')]('/describe',auth[_0x9c50('0x7')](),controller[_0x9c50('0x8')]);router[_0x9c50('0x5')](_0x9c50('0x9'),auth['isAuthenticated'](),controller[_0x9c50('0xa')]);router[_0x9c50('0x5')](_0x9c50('0xb'),auth[_0x9c50('0x7')](),controller[_0x9c50('0xc')]);router[_0x9c50('0x5')](_0x9c50('0xd'),auth[_0x9c50('0x7')](),controller[_0x9c50('0xe')]);router[_0x9c50('0xf')]('/',auth[_0x9c50('0x7')](),controller[_0x9c50('0x10')]);router['post']('/:id/messages',auth[_0x9c50('0x7')](),controller[_0x9c50('0x11')]);router[_0x9c50('0xf')](_0x9c50('0x12'),auth[_0x9c50('0x7')](),interaction[_0x9c50('0x13')](_0x9c50('0x14'),'mailinteraction:addtags'),controller[_0x9c50('0x15')]);router[_0x9c50('0x16')](_0x9c50('0x9'),auth[_0x9c50('0x7')](),interaction[_0x9c50('0x13')](_0x9c50('0x14'),_0x9c50('0x17')),controller[_0x9c50('0x18')]);router[_0x9c50('0x19')](_0x9c50('0x9'),auth['isAuthenticated'](),interaction[_0x9c50('0x13')](_0x9c50('0x14'),_0x9c50('0x1a')),controller[_0x9c50('0x1b')]);router[_0x9c50('0x19')](_0x9c50('0x12'),auth[_0x9c50('0x7')](),controller['removeTags']);module[_0x9c50('0x1c')]=router;
\ No newline at end of file
index 3b8cef9..572d458 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8876=['long','DATE','out','ENUM','INTEGER','sequelize','iconv','exports','BOOLEAN','STRING','TEXT'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x8876,0xec));var _0x6887=function(_0x321679,_0x1549d5){_0x321679=_0x321679-0x0;var _0x54ccca=_0x8876[_0x321679];return _0x54ccca;};'use strict';var Sequelize=require(_0x6887('0x0'));var iconv=require(_0x6887('0x1'));module[_0x6887('0x2')]={'closed':{'type':Sequelize[_0x6887('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x6887('0x4')]},'secondDisposition':{'type':Sequelize[_0x6887('0x4')]},'thirdDisposition':{'type':Sequelize[_0x6887('0x4')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x6887('0x4')](0x1fe)},'to':{'type':Sequelize[_0x6887('0x4')]},'cc':{'type':Sequelize[_0x6887('0x5')](_0x6887('0x6'))},'subject':{'type':Sequelize[_0x6887('0x5')]()},'attach':{'type':Sequelize[_0x6887('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x6887('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x6887('0x7')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x6887('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x6887('0x9')]('in',_0x6887('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueId':{'type':Sequelize[_0x6887('0xa')]}};
\ No newline at end of file
+var _0x326e=['exports','BOOLEAN','STRING','TEXT','long','DATE','ENUM','out','INTEGER','sequelize'];(function(_0xe54124,_0xb3a578){var _0x3b8480=function(_0x3cb02b){while(--_0x3cb02b){_0xe54124['push'](_0xe54124['shift']());}};_0x3b8480(++_0xb3a578);}(_0x326e,0x1c1));var _0xe326=function(_0x3cdcfa,_0x4f9d79){_0x3cdcfa=_0x3cdcfa-0x0;var _0x5ea3cd=_0x326e[_0x3cdcfa];return _0x5ea3cd;};'use strict';var Sequelize=require(_0xe326('0x0'));var iconv=require('iconv');module[_0xe326('0x1')]={'closed':{'type':Sequelize[_0xe326('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xe326('0x3')]},'secondDisposition':{'type':Sequelize[_0xe326('0x3')]},'thirdDisposition':{'type':Sequelize[_0xe326('0x3')]},'note':{'type':Sequelize[_0xe326('0x3')]},'inReplyTo':{'type':Sequelize[_0xe326('0x3')](0x1fe)},'to':{'type':Sequelize[_0xe326('0x3')]},'cc':{'type':Sequelize[_0xe326('0x4')](_0xe326('0x5'))},'subject':{'type':Sequelize[_0xe326('0x4')]()},'attach':{'type':Sequelize[_0xe326('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xe326('0x6')]},'substatus':{'type':Sequelize[_0xe326('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0xe326('0x6')]},'firstMsgDirection':{'type':Sequelize[_0xe326('0x7')]('in',_0xe326('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xe326('0x6')]},'lastMsgDirection':{'type':Sequelize[_0xe326('0x7')]('in',_0xe326('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xe326('0x2')],'defaultValue':![]},'queueId':{'type':Sequelize[_0xe326('0x9')]}};
\ No newline at end of file
index 982ee67..e34866b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d8=['format','push','Messages','from','bcc','subject','get','each','missing.recipient@your.company.com','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','existsSync','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','util','path','lodash','juice','../../config/logger','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','json','undefined','limit','count','offset','set','Content-Range','update','then','destroy','status','end','sendStatus','error','stack','name','send','index','map','MailInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','mail','query','user','catch','params','keys','filters','intersection','attributes','model','length','includeAll','include','options','create','body','find','describe','addMessage','ids','omit','getMessages','findOne','fields','hasOwnProperty','nolimit','sort','where','filter','merge','$gte','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inlineCss','true','rows','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','root','server','tmp','join','files','attachments'];(function(_0x148086,_0xc3acf6){var _0x5a1173=function(_0x1d21b6){while(--_0x1d21b6){_0x148086['push'](_0x148086['shift']());}};_0x5a1173(++_0xc3acf6);}(_0x78d8,0x16a));var _0x878d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x78d8[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x878d('0x0'));var rimraf=require(_0x878d('0x1'));var zipdir=require(_0x878d('0x2'));var moment=require(_0x878d('0x3'));var BPromise=require('bluebird');var util=require(_0x878d('0x4'));var path=require(_0x878d('0x5'));var fs=require('fs');var _=require(_0x878d('0x6'));var juice=require(_0x878d('0x7'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var logger=require(_0x878d('0x8'))('api');var config=require(_0x878d('0x9'));var db=require(_0x878d('0xa'))['db'];var htmlEntities=require(_0x878d('0xb'));config[_0x878d('0xc')]=_[_0x878d('0xd')](config['redis'],{'host':_0x878d('0xe'),'port':0x18eb});var socket=require(_0x878d('0xf'))(new Redis(config['redis']));require(_0x878d('0x10'))[_0x878d('0x11')](socket);function respondWithStatusCode(_0x5ae1d5,_0x1dcb6a){_0x1dcb6a=_0x1dcb6a||0xcc;return function(_0xd8623){if(_0xd8623){return _0x5ae1d5['sendStatus'](_0x1dcb6a);}return _0x5ae1d5['status'](_0x1dcb6a)['end']();};}function respondWithResult(_0x5e760c,_0x41c559){_0x41c559=_0x41c559||0xc8;return function(_0x2a0027){if(_0x2a0027){return _0x5e760c['status'](_0x41c559)[_0x878d('0x12')](_0x2a0027);}};}function respondWithFilteredResult(_0x2bc91f,_0x2d6417){return function(_0x154ae3){if(_0x154ae3){var _0x34048c=typeof _0x2d6417['offset']===_0x878d('0x13')&&typeof _0x2d6417[_0x878d('0x14')]==='undefined';var _0x5d8fcc=_0x154ae3[_0x878d('0x15')];var _0x4211d0=_0x34048c?0x0:_0x2d6417[_0x878d('0x16')];var _0x784a5e=_0x34048c?_0x154ae3[_0x878d('0x15')]:_0x2d6417[_0x878d('0x16')]+_0x2d6417['limit'];var _0x59b719;if(_0x784a5e>=_0x5d8fcc){_0x784a5e=_0x5d8fcc;_0x59b719=0xc8;}else{_0x59b719=0xce;}_0x2bc91f['status'](_0x59b719);return _0x2bc91f[_0x878d('0x17')](_0x878d('0x18'),_0x4211d0+'-'+_0x784a5e+'/'+_0x5d8fcc)[_0x878d('0x12')](_0x154ae3);}return null;};}function saveUpdates(_0x350aa7){return function(_0x3c3551){if(_0x3c3551){return _0x3c3551[_0x878d('0x19')](_0x350aa7)[_0x878d('0x1a')](function(_0x2b5d6e){return _0x2b5d6e;});}return null;};}function removeEntity(_0x29e862){return function(_0x5b6070){if(_0x5b6070){return _0x5b6070[_0x878d('0x1b')]()[_0x878d('0x1a')](function(){_0x29e862[_0x878d('0x1c')](0xcc)[_0x878d('0x1d')]();});}};}function handleEntityNotFound(_0x42d4c6){return function(_0x41d663){if(!_0x41d663){_0x42d4c6[_0x878d('0x1e')](0x194);}return _0x41d663;};}function handleError(_0x57f88a,_0x50c9c3){_0x50c9c3=_0x50c9c3||0x1f4;return function(_0x1d21e0){logger[_0x878d('0x1f')](_0x1d21e0[_0x878d('0x20')]);if(_0x1d21e0[_0x878d('0x21')]){delete _0x1d21e0[_0x878d('0x21')];}_0x57f88a[_0x878d('0x1c')](_0x50c9c3)[_0x878d('0x22')](_0x1d21e0);};}exports[_0x878d('0x23')]=function(_0x3bcfe6,_0xe70533){var _0x233252={};var _0xb5a26b=_[_0x878d('0x24')](db[_0x878d('0x25')][_0x878d('0x26')],function(_0x181f67){return{'name':_0x181f67[_0x878d('0x27')],'type':_0x181f67[_0x878d('0x28')][_0x878d('0x29')]};});_0x233252=qs[_0x878d('0x2a')](_0xb5a26b,_0x3bcfe6);return interaction[_0x878d('0x2b')](_0x878d('0x2c'),_0x3bcfe6[_0x878d('0x2d')],_0x3bcfe6[_0x878d('0x2e')],_0x233252,_0xb5a26b)[_0x878d('0x1a')](respondWithFilteredResult(_0xe70533,_0x233252))[_0x878d('0x2f')](handleError(_0xe70533,null));};exports['show']=function(_0x41ea3d,_0x4faa21){var _0x3ec798={'raw':![],'where':{'id':_0x41ea3d[_0x878d('0x30')]['id']}},_0x1ec0c1={};_0x1ec0c1['model']=_[_0x878d('0x31')](db[_0x878d('0x25')]['rawAttributes']);_0x1ec0c1[_0x878d('0x2d')]=_['keys'](_0x41ea3d['query']);_0x1ec0c1[_0x878d('0x32')]=_[_0x878d('0x33')](_0x1ec0c1['model'],_0x1ec0c1[_0x878d('0x2d')]);_0x3ec798[_0x878d('0x34')]=_['intersection'](_0x1ec0c1[_0x878d('0x35')],qs['fields'](_0x41ea3d[_0x878d('0x2d')]['fields']));_0x3ec798['attributes']=_0x3ec798[_0x878d('0x34')][_0x878d('0x36')]?_0x3ec798['attributes']:_0x1ec0c1[_0x878d('0x35')];if(_0x41ea3d[_0x878d('0x2d')][_0x878d('0x37')]){_0x3ec798[_0x878d('0x38')]=[{'all':!![]}];}_0x3ec798=_['merge']({},_0x3ec798,_0x41ea3d[_0x878d('0x39')]);return db[_0x878d('0x25')]['find'](_0x3ec798)[_0x878d('0x1a')](handleEntityNotFound(_0x4faa21,null))[_0x878d('0x1a')](respondWithResult(_0x4faa21,null))[_0x878d('0x2f')](handleError(_0x4faa21,null));};exports[_0x878d('0x3a')]=function(_0x51f3ca,_0x2f77bc){return db[_0x878d('0x25')][_0x878d('0x3a')](_0x51f3ca[_0x878d('0x3b')],{})[_0x878d('0x1a')](respondWithResult(_0x2f77bc,0xc9))[_0x878d('0x2f')](handleError(_0x2f77bc,null));};exports[_0x878d('0x19')]=function(_0x1c6af9,_0x25c66c){if(_0x1c6af9[_0x878d('0x3b')]['id']){delete _0x1c6af9[_0x878d('0x3b')]['id'];}return db[_0x878d('0x25')][_0x878d('0x3c')]({'where':{'id':_0x1c6af9[_0x878d('0x30')]['id']}})['then'](handleEntityNotFound(_0x25c66c,null))[_0x878d('0x1a')](saveUpdates(_0x1c6af9[_0x878d('0x3b')],null))['then'](respondWithResult(_0x25c66c,null))['catch'](handleError(_0x25c66c,null));};exports[_0x878d('0x1b')]=function(_0x1609d9,_0x508813){return db[_0x878d('0x25')][_0x878d('0x3c')]({'where':{'id':_0x1609d9[_0x878d('0x30')]['id']}})[_0x878d('0x1a')](handleEntityNotFound(_0x508813,null))[_0x878d('0x1a')](removeEntity(_0x508813,null))['catch'](handleError(_0x508813,null));};exports['describe']=function(_0x51187f,_0x5ba95b){return db[_0x878d('0x25')][_0x878d('0x3d')]()[_0x878d('0x1a')](respondWithResult(_0x5ba95b,null))[_0x878d('0x2f')](handleError(_0x5ba95b,null));};exports[_0x878d('0x3e')]=function(_0x366a52,_0x48c3b7){return db['MailMessage']['find']({'where':{'id':_0x366a52['params']['id']}})[_0x878d('0x1a')](handleEntityNotFound(_0x48c3b7,null))[_0x878d('0x1a')](function(_0x2ce47e){if(_0x2ce47e){return _0x2ce47e[_0x878d('0x3e')](_0x366a52[_0x878d('0x3b')][_0x878d('0x3f')],_[_0x878d('0x40')](_0x366a52['body'],[_0x878d('0x3f'),'id'])||{});}})[_0x878d('0x1a')](respondWithResult(_0x48c3b7,null))['catch'](handleError(_0x48c3b7,null));};exports[_0x878d('0x41')]=function(_0x59d76c,_0x441f6e){var _0x5a9569={'raw':![],'where':{}};var _0x29201a={};var _0x545c84={'count':0x0,'rows':[]};return db[_0x878d('0x25')][_0x878d('0x42')]({'where':{'id':_0x59d76c[_0x878d('0x30')]['id']}})[_0x878d('0x1a')](handleEntityNotFound(_0x441f6e,null))[_0x878d('0x1a')](function(_0x2603f5){if(_0x2603f5){_0x29201a[_0x878d('0x35')]=_[_0x878d('0x31')](db['MailMessage']['rawAttributes']);_0x29201a[_0x878d('0x2d')]=_['keys'](_0x59d76c[_0x878d('0x2d')]);_0x29201a[_0x878d('0x32')]=_[_0x878d('0x33')](_0x29201a[_0x878d('0x35')],_0x29201a[_0x878d('0x2d')]);_0x5a9569[_0x878d('0x34')]=_[_0x878d('0x33')](_0x29201a['model'],qs[_0x878d('0x43')](_0x59d76c[_0x878d('0x2d')][_0x878d('0x43')]));_0x5a9569[_0x878d('0x34')]=_0x5a9569[_0x878d('0x34')][_0x878d('0x36')]?_0x5a9569[_0x878d('0x34')]:_0x29201a[_0x878d('0x35')];if(!_0x59d76c['query'][_0x878d('0x44')](_0x878d('0x45'))){_0x5a9569[_0x878d('0x14')]=qs[_0x878d('0x14')](_0x59d76c[_0x878d('0x2d')][_0x878d('0x14')]);_0x5a9569[_0x878d('0x16')]=qs[_0x878d('0x16')](_0x59d76c[_0x878d('0x2d')][_0x878d('0x16')]);}_0x5a9569['order']=qs[_0x878d('0x46')](_0x59d76c['query']['sort']);_0x5a9569[_0x878d('0x47')]=qs[_0x878d('0x32')](_['pick'](_0x59d76c[_0x878d('0x2d')],_0x29201a[_0x878d('0x32')]));_0x5a9569[_0x878d('0x47')]['MailInteractionId']=_0x2603f5['id'];if(_0x59d76c['query'][_0x878d('0x48')]){_0x5a9569[_0x878d('0x47')]=_[_0x878d('0x49')](_0x5a9569[_0x878d('0x47')],{'$or':_[_0x878d('0x24')](_0x5a9569[_0x878d('0x34')],function(_0x1cdedb){var _0x47c8fc={};_0x47c8fc[_0x1cdedb]={'$like':'%'+_0x59d76c[_0x878d('0x2d')][_0x878d('0x48')]+'%'};return _0x47c8fc;})});}if(_0x59d76c[_0x878d('0x2d')][_0x878d('0x4a')]){var _0x1b4516=_0x59d76c['query']['$gte']['split'](',');var _0x4e727a={};_0x4e727a[_0x1b4516[0x0]]={'$gte':moment(_0x1b4516[0x1])['format'](_0x878d('0x4b'))};_0x5a9569[_0x878d('0x47')]=_[_0x878d('0x49')](_0x5a9569[_0x878d('0x47')],_0x4e727a);}_0x5a9569=_[_0x878d('0x49')]({},_0x5a9569,_0x59d76c[_0x878d('0x39')]);return db[_0x878d('0x4c')][_0x878d('0x15')]({'where':_0x5a9569[_0x878d('0x47')]})[_0x878d('0x1a')](function(_0x5c0b41){_0x545c84[_0x878d('0x15')]=_0x5c0b41;if(_0x59d76c[_0x878d('0x2d')][_0x878d('0x37')]){_0x5a9569[_0x878d('0x38')]=[{'all':!![]}];}return db[_0x878d('0x4c')][_0x878d('0x2b')](_0x5a9569);})[_0x878d('0x1a')](function(_0x341415){if(_0x59d76c[_0x878d('0x2d')][_0x878d('0x4d')]===_0x878d('0x4e')){for(var _0x47c3ab=0x0;_0x47c3ab<_0x341415[_0x878d('0x36')];_0x47c3ab++){_0x341415[_0x47c3ab][_0x878d('0x3b')]=juice(_0x341415[_0x47c3ab][_0x878d('0x3b')]);}}_0x545c84[_0x878d('0x4f')]=_0x341415;return _0x545c84;});}})[_0x878d('0x1a')](respondWithFilteredResult(_0x441f6e,_0x5a9569))[_0x878d('0x2f')](handleError(_0x441f6e,null));};exports['addTags']=function(_0x1df06c,_0x79bf1d){return db[_0x878d('0x25')]['find']({'where':{'id':_0x1df06c['params']['id']}})[_0x878d('0x1a')](handleEntityNotFound(_0x79bf1d,null))['then'](function(_0x585fce){if(_0x585fce){return _0x585fce['setTags'](_0x1df06c[_0x878d('0x3b')][_0x878d('0x3f')],_[_0x878d('0x40')](_0x1df06c[_0x878d('0x3b')],[_0x878d('0x3f'),'id'])||{})['spread'](function(){return db[_0x878d('0x50')][_0x878d('0x2b')]({'attributes':['id',_0x878d('0x21'),_0x878d('0x51')],'where':{'id':_0x1df06c[_0x878d('0x3b')][_0x878d('0x3f')]}});})[_0x878d('0x1a')](function(_0x44bb53){socket[_0x878d('0x52')](_0x878d('0x53'),{'id':Number(_0x1df06c[_0x878d('0x30')]['id']),'tags':_0x44bb53||[]});return{'id':Number(_0x1df06c[_0x878d('0x30')]['id']),'tags':_0x44bb53||[]};});}})[_0x878d('0x1a')](respondWithResult(_0x79bf1d,null))['catch'](handleError(_0x79bf1d,null));};exports[_0x878d('0x54')]=function(_0x3b9561,_0x2e5863){return db[_0x878d('0x25')][_0x878d('0x3c')]({'where':{'id':_0x3b9561['params']['id']}})['then'](handleEntityNotFound(_0x2e5863,null))['then'](function(_0x52f351){if(_0x52f351){return _0x52f351[_0x878d('0x54')](_0x3b9561[_0x878d('0x2d')][_0x878d('0x3f')]);}})[_0x878d('0x1a')](respondWithStatusCode(_0x2e5863,null))[_0x878d('0x2f')](handleError(_0x2e5863,null));};exports[_0x878d('0x55')]=function(_0xa163e7,_0x515537){var _0x34fe8a=moment()[_0x878d('0x56')]()[_0x878d('0x57')]();var _0x59a020=path['join'](config[_0x878d('0x58')],_0x878d('0x59'),'files',_0x878d('0x5a'));var _0x450f3e=path[_0x878d('0x5b')](config[_0x878d('0x58')],_0x878d('0x59'),_0x878d('0x5c'),_0x878d('0x5d'));var _0x109a12=path[_0x878d('0x5b')](_0x59a020,_0x34fe8a);var _0x291a95=util[_0x878d('0x5e')]('transcript-%d-%s.zip',_0xa163e7[_0x878d('0x30')]['id'],_0x34fe8a);var _0x170695=path[_0x878d('0x5b')](_0x59a020,_0x291a95);var _0x1734cc=[];if(_0xa163e7[_0x878d('0x2d')][_0x878d('0x5d')]){_0x1734cc[_0x878d('0x5f')]({'model':db['Attachment'],'as':'Attachments','raw':!![]});}var _0xbb0b8c=[{'model':db[_0x878d('0x4c')],'as':_0x878d('0x60'),'attributes':['id','body',_0x878d('0x61'),'to','cc',_0x878d('0x62'),_0x878d('0x63'),'createdAt'],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x1734cc}];return db[_0x878d('0x25')][_0x878d('0x3c')]({'where':{'id':_0xa163e7[_0x878d('0x30')]['id']},'include':_0xbb0b8c})[_0x878d('0x1a')](handleEntityNotFound(_0x515537,null))[_0x878d('0x1a')](function(_0x508043){if(_0x508043&&_0x508043[_0x878d('0x60')]){var _0x1da41e=_0x508043[_0x878d('0x64')]({'plain':!![]});fs['mkdirSync'](_0x109a12);return BPromise[_0x878d('0x65')](_0x1da41e[_0x878d('0x60')],function(_0x36a3be,_0x342436){var _0x3e431c={'from':_0x36a3be['from'],'to':_0x36a3be['to']||_0x878d('0x66'),'subject':_0x36a3be[_0x878d('0x63')],'html':htmlEntities[_0x878d('0x67')](_0x36a3be['body']),'headers':{'Date':moment(_0x36a3be['createdAt'])[_0x878d('0x5e')](_0x878d('0x68'))},'attachments':[]};if(_0x36a3be['cc']){_0x3e431c[_0x878d('0x69')]['Cc']=_0x36a3be['cc'];}if(_0x36a3be[_0x878d('0x62')]){_0x3e431c[_0x878d('0x69')][_0x878d('0x6a')]=_0x36a3be[_0x878d('0x62')];}return new BPromise(function(_0x5b9ef7,_0x34cf99){if(_0x36a3be[_0x878d('0x6b')]){for(var _0x53090b=0x0;_0x53090b<_0x36a3be['Attachments'][_0x878d('0x36')];_0x53090b++){var _0x367003=_0x36a3be[_0x878d('0x6b')][_0x53090b];var _0x3ef8b1=path[_0x878d('0x5b')](_0x450f3e,_0x367003['basename']);if(fs[_0x878d('0x6c')](_0x3ef8b1)){_0x3e431c[_0x878d('0x5d')][_0x878d('0x5f')]({'name':_0x367003['name'],'contentType':_0x367003[_0x878d('0x28')],'data':fs[_0x878d('0x6d')](_0x3ef8b1)});}}}emlformat[_0x878d('0x6e')](_0x3e431c,function(_0x509f47,_0x225419){if(_0x509f47)return _0x34cf99(_0x509f47);fs[_0x878d('0x6f')](path[_0x878d('0x5b')](_0x109a12,util[_0x878d('0x5e')](_0x878d('0x70'),_0x342436)),_0x225419);return _0x5b9ef7(_0x225419);});});})[_0x878d('0x1a')](function(){return new BPromise(function(_0x127ab1,_0x341c0b){zipdir(_0x109a12,{'saveTo':_0x170695},function(_0x41969a,_0x50ad21){if(_0x41969a)return _0x341c0b(_0x41969a);return _0x127ab1(_0x50ad21);});})[_0x878d('0x1a')](function(){return new BPromise(function(_0x56d042,_0x17cd64){rimraf(_0x109a12,function(_0x579cd4){if(_0x579cd4)_0x17cd64(_0x579cd4);return _0x56d042();});});})[_0x878d('0x1a')](function(){return _0x515537[_0x878d('0x55')](_0x170695,_0x291a95,function(_0x3c2f93){if(!_0x3c2f93)fs[_0x878d('0x71')](_0x170695);});});});}else{return _0x515537[_0x878d('0x1e')](0xc8);}})['catch'](handleError(_0x515537,null));};
\ No newline at end of file
+var _0x8e47=['getOptions','mail','query','params','keys','intersection','model','fields','length','includeAll','include','MailInteraction','catch','create','body','destroy','find','addMessage','MailMessage','ids','omit','getMessages','findOne','rawAttributes','filters','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','inlineCss','rows','addTags','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','push','Attachments','Messages','from','get','each','missing.recipient@your.company.com','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','bcc','basename','existsSync','readFileSync','build','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','path','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','html-entities','redis','defaults','localhost','./mailInteraction.socket','sendStatus','json','offset','undefined','limit','count','set','Content-Range','update','then','status','end','error','stack','name','send','index','fieldName','type','key'];(function(_0x22ad50,_0x456b90){var _0x3e8eb3=function(_0x1343ca){while(--_0x1343ca){_0x22ad50['push'](_0x22ad50['shift']());}};_0x3e8eb3(++_0x456b90);}(_0x8e47,0xc2));var _0x78e4=function(_0x3c442e,_0x4c88ab){_0x3c442e=_0x3c442e-0x0;var _0x42e623=_0x8e47[_0x3c442e];return _0x42e623;};'use strict';var emlformat=require(_0x78e4('0x0'));var rimraf=require(_0x78e4('0x1'));var zipdir=require(_0x78e4('0x2'));var moment=require(_0x78e4('0x3'));var BPromise=require('bluebird');var util=require('util');var path=require(_0x78e4('0x4'));var fs=require('fs');var _=require('lodash');var juice=require('juice');var Redis=require(_0x78e4('0x5'));var interaction=require(_0x78e4('0x6'));var qs=require(_0x78e4('0x7'));var logger=require(_0x78e4('0x8'))(_0x78e4('0x9'));var config=require('../../config/environment');var db=require(_0x78e4('0xa'))['db'];var htmlEntities=require(_0x78e4('0xb'));config[_0x78e4('0xc')]=_[_0x78e4('0xd')](config['redis'],{'host':_0x78e4('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x78e4('0xc')]));require(_0x78e4('0xf'))['register'](socket);function respondWithStatusCode(_0x58e12f,_0x16c2ef){_0x16c2ef=_0x16c2ef||0xcc;return function(_0x271c25){if(_0x271c25){return _0x58e12f[_0x78e4('0x10')](_0x16c2ef);}return _0x58e12f['status'](_0x16c2ef)['end']();};}function respondWithResult(_0x42466d,_0x36e682){_0x36e682=_0x36e682||0xc8;return function(_0x1fea0d){if(_0x1fea0d){return _0x42466d['status'](_0x36e682)[_0x78e4('0x11')](_0x1fea0d);}};}function respondWithFilteredResult(_0x3d148b,_0x2a599a){return function(_0x56b538){if(_0x56b538){var _0xe508ec=typeof _0x2a599a[_0x78e4('0x12')]===_0x78e4('0x13')&&typeof _0x2a599a[_0x78e4('0x14')]==='undefined';var _0x3313a8=_0x56b538[_0x78e4('0x15')];var _0x4a7ba6=_0xe508ec?0x0:_0x2a599a[_0x78e4('0x12')];var _0x2f8aec=_0xe508ec?_0x56b538[_0x78e4('0x15')]:_0x2a599a[_0x78e4('0x12')]+_0x2a599a[_0x78e4('0x14')];var _0x1c58ba;if(_0x2f8aec>=_0x3313a8){_0x2f8aec=_0x3313a8;_0x1c58ba=0xc8;}else{_0x1c58ba=0xce;}_0x3d148b['status'](_0x1c58ba);return _0x3d148b[_0x78e4('0x16')](_0x78e4('0x17'),_0x4a7ba6+'-'+_0x2f8aec+'/'+_0x3313a8)[_0x78e4('0x11')](_0x56b538);}return null;};}function saveUpdates(_0x40ec9b){return function(_0xff0865){if(_0xff0865){return _0xff0865[_0x78e4('0x18')](_0x40ec9b)[_0x78e4('0x19')](function(_0x42e539){return _0x42e539;});}return null;};}function removeEntity(_0x381168){return function(_0x4a23d6){if(_0x4a23d6){return _0x4a23d6['destroy']()['then'](function(){_0x381168[_0x78e4('0x1a')](0xcc)[_0x78e4('0x1b')]();});}};}function handleEntityNotFound(_0x4fc9d3){return function(_0x1eb93b){if(!_0x1eb93b){_0x4fc9d3['sendStatus'](0x194);}return _0x1eb93b;};}function handleError(_0x304802,_0x445726){_0x445726=_0x445726||0x1f4;return function(_0x47423d){logger[_0x78e4('0x1c')](_0x47423d[_0x78e4('0x1d')]);if(_0x47423d[_0x78e4('0x1e')]){delete _0x47423d['name'];}_0x304802['status'](_0x445726)[_0x78e4('0x1f')](_0x47423d);};}exports[_0x78e4('0x20')]=function(_0x4e5185,_0x20c3a1){var _0x1822b4={};var _0x3f4cad=_['map'](db['MailInteraction']['rawAttributes'],function(_0x492e6f){return{'name':_0x492e6f[_0x78e4('0x21')],'type':_0x492e6f[_0x78e4('0x22')][_0x78e4('0x23')]};});_0x1822b4=qs[_0x78e4('0x24')](_0x3f4cad,_0x4e5185);return interaction['findAll'](_0x78e4('0x25'),_0x4e5185[_0x78e4('0x26')],_0x4e5185['user'],_0x1822b4,_0x3f4cad)[_0x78e4('0x19')](respondWithFilteredResult(_0x20c3a1,_0x1822b4))['catch'](handleError(_0x20c3a1,null));};exports['show']=function(_0x2026c0,_0x32d9a5){var _0x47d0ff={'raw':![],'where':{'id':_0x2026c0[_0x78e4('0x27')]['id']}},_0x4b06b6={};_0x4b06b6['model']=_[_0x78e4('0x28')](db['MailInteraction']['rawAttributes']);_0x4b06b6['query']=_[_0x78e4('0x28')](_0x2026c0[_0x78e4('0x26')]);_0x4b06b6['filters']=_[_0x78e4('0x29')](_0x4b06b6[_0x78e4('0x2a')],_0x4b06b6['query']);_0x47d0ff['attributes']=_['intersection'](_0x4b06b6[_0x78e4('0x2a')],qs[_0x78e4('0x2b')](_0x2026c0[_0x78e4('0x26')][_0x78e4('0x2b')]));_0x47d0ff['attributes']=_0x47d0ff['attributes'][_0x78e4('0x2c')]?_0x47d0ff['attributes']:_0x4b06b6[_0x78e4('0x2a')];if(_0x2026c0[_0x78e4('0x26')][_0x78e4('0x2d')]){_0x47d0ff[_0x78e4('0x2e')]=[{'all':!![]}];}_0x47d0ff=_['merge']({},_0x47d0ff,_0x2026c0['options']);return db[_0x78e4('0x2f')]['find'](_0x47d0ff)[_0x78e4('0x19')](handleEntityNotFound(_0x32d9a5,null))[_0x78e4('0x19')](respondWithResult(_0x32d9a5,null))[_0x78e4('0x30')](handleError(_0x32d9a5,null));};exports[_0x78e4('0x31')]=function(_0x4cab8a,_0x21d4fc){return db[_0x78e4('0x2f')]['create'](_0x4cab8a[_0x78e4('0x32')],{})[_0x78e4('0x19')](respondWithResult(_0x21d4fc,0xc9))[_0x78e4('0x30')](handleError(_0x21d4fc,null));};exports[_0x78e4('0x18')]=function(_0x1e3f71,_0x1977d8){if(_0x1e3f71[_0x78e4('0x32')]['id']){delete _0x1e3f71['body']['id'];}return db[_0x78e4('0x2f')]['find']({'where':{'id':_0x1e3f71[_0x78e4('0x27')]['id']}})[_0x78e4('0x19')](handleEntityNotFound(_0x1977d8,null))[_0x78e4('0x19')](saveUpdates(_0x1e3f71[_0x78e4('0x32')],null))[_0x78e4('0x19')](respondWithResult(_0x1977d8,null))[_0x78e4('0x30')](handleError(_0x1977d8,null));};exports[_0x78e4('0x33')]=function(_0x26eaa4,_0x4a6051){return db['MailInteraction'][_0x78e4('0x34')]({'where':{'id':_0x26eaa4[_0x78e4('0x27')]['id']}})['then'](handleEntityNotFound(_0x4a6051,null))[_0x78e4('0x19')](removeEntity(_0x4a6051,null))[_0x78e4('0x30')](handleError(_0x4a6051,null));};exports['describe']=function(_0xe06ce0,_0x44f32f){return db[_0x78e4('0x2f')]['describe']()['then'](respondWithResult(_0x44f32f,null))[_0x78e4('0x30')](handleError(_0x44f32f,null));};exports[_0x78e4('0x35')]=function(_0x5ec3dd,_0x3af045){return db[_0x78e4('0x36')][_0x78e4('0x34')]({'where':{'id':_0x5ec3dd['params']['id']}})[_0x78e4('0x19')](handleEntityNotFound(_0x3af045,null))[_0x78e4('0x19')](function(_0x590297){if(_0x590297){return _0x590297[_0x78e4('0x35')](_0x5ec3dd[_0x78e4('0x32')][_0x78e4('0x37')],_[_0x78e4('0x38')](_0x5ec3dd['body'],[_0x78e4('0x37'),'id'])||{});}})[_0x78e4('0x19')](respondWithResult(_0x3af045,null))[_0x78e4('0x30')](handleError(_0x3af045,null));};exports[_0x78e4('0x39')]=function(_0x4e0b36,_0x5e4568){var _0x3bf7ba={'raw':![],'where':{}};var _0x1162aa={};var _0x599c1f={'count':0x0,'rows':[]};return db[_0x78e4('0x2f')][_0x78e4('0x3a')]({'where':{'id':_0x4e0b36[_0x78e4('0x27')]['id']}})[_0x78e4('0x19')](handleEntityNotFound(_0x5e4568,null))[_0x78e4('0x19')](function(_0x4cfb56){if(_0x4cfb56){_0x1162aa[_0x78e4('0x2a')]=_[_0x78e4('0x28')](db[_0x78e4('0x36')][_0x78e4('0x3b')]);_0x1162aa[_0x78e4('0x26')]=_['keys'](_0x4e0b36[_0x78e4('0x26')]);_0x1162aa[_0x78e4('0x3c')]=_['intersection'](_0x1162aa['model'],_0x1162aa[_0x78e4('0x26')]);_0x3bf7ba['attributes']=_[_0x78e4('0x29')](_0x1162aa[_0x78e4('0x2a')],qs[_0x78e4('0x2b')](_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x2b')]));_0x3bf7ba[_0x78e4('0x3d')]=_0x3bf7ba['attributes']['length']?_0x3bf7ba['attributes']:_0x1162aa[_0x78e4('0x2a')];if(!_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x3e')](_0x78e4('0x3f'))){_0x3bf7ba['limit']=qs[_0x78e4('0x14')](_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x14')]);_0x3bf7ba[_0x78e4('0x12')]=qs['offset'](_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x12')]);}_0x3bf7ba[_0x78e4('0x40')]=qs[_0x78e4('0x41')](_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x41')]);_0x3bf7ba[_0x78e4('0x42')]=qs[_0x78e4('0x3c')](_[_0x78e4('0x43')](_0x4e0b36[_0x78e4('0x26')],_0x1162aa[_0x78e4('0x3c')]));_0x3bf7ba['where']['MailInteractionId']=_0x4cfb56['id'];if(_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x44')]){_0x3bf7ba[_0x78e4('0x42')]=_[_0x78e4('0x45')](_0x3bf7ba[_0x78e4('0x42')],{'$or':_[_0x78e4('0x46')](_0x3bf7ba[_0x78e4('0x3d')],function(_0x162a06){var _0x1518cc={};_0x1518cc[_0x162a06]={'$like':'%'+_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x44')]+'%'};return _0x1518cc;})});}if(_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x47')]){var _0x14f776=_0x4e0b36[_0x78e4('0x26')]['$gte'][_0x78e4('0x48')](',');var _0x32ea0c={};_0x32ea0c[_0x14f776[0x0]]={'$gte':moment(_0x14f776[0x1])[_0x78e4('0x49')](_0x78e4('0x4a'))};_0x3bf7ba[_0x78e4('0x42')]=_[_0x78e4('0x45')](_0x3bf7ba[_0x78e4('0x42')],_0x32ea0c);}_0x3bf7ba=_[_0x78e4('0x45')]({},_0x3bf7ba,_0x4e0b36[_0x78e4('0x4b')]);return db[_0x78e4('0x36')]['count']({'where':_0x3bf7ba[_0x78e4('0x42')]})['then'](function(_0x411105){_0x599c1f[_0x78e4('0x15')]=_0x411105;if(_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x2d')]){_0x3bf7ba[_0x78e4('0x2e')]=[{'all':!![]}];}return db[_0x78e4('0x36')][_0x78e4('0x4c')](_0x3bf7ba);})['then'](function(_0x431a72){if(_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x4d')]==='true'){for(var _0x3146d1=0x0;_0x3146d1<_0x431a72[_0x78e4('0x2c')];_0x3146d1++){_0x431a72[_0x3146d1][_0x78e4('0x32')]=juice(_0x431a72[_0x3146d1][_0x78e4('0x32')]);}}_0x599c1f[_0x78e4('0x4e')]=_0x431a72;return _0x599c1f;});}})[_0x78e4('0x19')](respondWithFilteredResult(_0x5e4568,_0x3bf7ba))[_0x78e4('0x30')](handleError(_0x5e4568,null));};exports[_0x78e4('0x4f')]=function(_0xe37933,_0x1e62e6){return db[_0x78e4('0x2f')][_0x78e4('0x34')]({'where':{'id':_0xe37933['params']['id']}})[_0x78e4('0x19')](handleEntityNotFound(_0x1e62e6,null))[_0x78e4('0x19')](function(_0x1cbf75){if(_0x1cbf75){return _0x1cbf75['setTags'](_0xe37933['body'][_0x78e4('0x37')],_[_0x78e4('0x38')](_0xe37933[_0x78e4('0x32')],[_0x78e4('0x37'),'id'])||{})[_0x78e4('0x50')](function(){return db[_0x78e4('0x51')][_0x78e4('0x4c')]({'attributes':['id','name',_0x78e4('0x52')],'where':{'id':_0xe37933[_0x78e4('0x32')]['ids']}});})['then'](function(_0x54f86b){socket[_0x78e4('0x53')](_0x78e4('0x54'),{'id':Number(_0xe37933['params']['id']),'tags':_0x54f86b||[]});return{'id':Number(_0xe37933[_0x78e4('0x27')]['id']),'tags':_0x54f86b||[]};});}})[_0x78e4('0x19')](respondWithResult(_0x1e62e6,null))[_0x78e4('0x30')](handleError(_0x1e62e6,null));};exports[_0x78e4('0x55')]=function(_0x1b776f,_0x5b79cd){return db['MailInteraction']['find']({'where':{'id':_0x1b776f[_0x78e4('0x27')]['id']}})['then'](handleEntityNotFound(_0x5b79cd,null))[_0x78e4('0x19')](function(_0x5a2413){if(_0x5a2413){return _0x5a2413[_0x78e4('0x55')](_0x1b776f[_0x78e4('0x26')]['ids']);}})['then'](respondWithStatusCode(_0x5b79cd,null))[_0x78e4('0x30')](handleError(_0x5b79cd,null));};exports[_0x78e4('0x56')]=function(_0x21501a,_0x4e0cf9){var _0x50c699=moment()[_0x78e4('0x57')]()[_0x78e4('0x58')]();var _0xa42f0f=path[_0x78e4('0x59')](config['root'],_0x78e4('0x5a'),_0x78e4('0x5b'),_0x78e4('0x5c'));var _0x1520e5=path[_0x78e4('0x59')](config[_0x78e4('0x5d')],'server',_0x78e4('0x5b'),_0x78e4('0x5e'));var _0x12e53b=path['join'](_0xa42f0f,_0x50c699);var _0x157380=util[_0x78e4('0x49')](_0x78e4('0x5f'),_0x21501a['params']['id'],_0x50c699);var _0x4c70ff=path[_0x78e4('0x59')](_0xa42f0f,_0x157380);var _0x288552=[];if(_0x21501a[_0x78e4('0x26')][_0x78e4('0x5e')]){_0x288552[_0x78e4('0x60')]({'model':db['Attachment'],'as':_0x78e4('0x61'),'raw':!![]});}var _0x17a0f5=[{'model':db[_0x78e4('0x36')],'as':_0x78e4('0x62'),'attributes':['id','body',_0x78e4('0x63'),'to','cc','bcc','subject','createdAt'],'where':{'secret':![]},'order':qs[_0x78e4('0x41')]('id'),'include':_0x288552}];return db['MailInteraction'][_0x78e4('0x34')]({'where':{'id':_0x21501a[_0x78e4('0x27')]['id']},'include':_0x17a0f5})[_0x78e4('0x19')](handleEntityNotFound(_0x4e0cf9,null))[_0x78e4('0x19')](function(_0x420dbb){if(_0x420dbb&&_0x420dbb['Messages']){var _0x397ece=_0x420dbb[_0x78e4('0x64')]({'plain':!![]});fs['mkdirSync'](_0x12e53b);return BPromise[_0x78e4('0x65')](_0x397ece[_0x78e4('0x62')],function(_0x5c76ae,_0x5bd1cb){var _0x598bf6={'from':_0x5c76ae[_0x78e4('0x63')],'to':_0x5c76ae['to']||_0x78e4('0x66'),'subject':_0x5c76ae[_0x78e4('0x67')],'html':htmlEntities[_0x78e4('0x68')](_0x5c76ae[_0x78e4('0x32')]),'headers':{'Date':moment(_0x5c76ae['createdAt'])['format'](_0x78e4('0x69'))},'attachments':[]};if(_0x5c76ae['cc']){_0x598bf6[_0x78e4('0x6a')]['Cc']=_0x5c76ae['cc'];}if(_0x5c76ae['bcc']){_0x598bf6['headers'][_0x78e4('0x6b')]=_0x5c76ae[_0x78e4('0x6c')];}return new BPromise(function(_0x5893ef,_0x52867c){if(_0x5c76ae['Attachments']){for(var _0x2aa033=0x0;_0x2aa033<_0x5c76ae[_0x78e4('0x61')]['length'];_0x2aa033++){var _0x51a01a=_0x5c76ae[_0x78e4('0x61')][_0x2aa033];var _0x490470=path[_0x78e4('0x59')](_0x1520e5,_0x51a01a[_0x78e4('0x6d')]);if(fs[_0x78e4('0x6e')](_0x490470)){_0x598bf6[_0x78e4('0x5e')][_0x78e4('0x60')]({'name':_0x51a01a[_0x78e4('0x1e')],'contentType':_0x51a01a['type'],'data':fs[_0x78e4('0x6f')](_0x490470)});}}}emlformat[_0x78e4('0x70')](_0x598bf6,function(_0x226042,_0x102763){if(_0x226042)return _0x52867c(_0x226042);fs['writeFileSync'](path[_0x78e4('0x59')](_0x12e53b,util[_0x78e4('0x49')](_0x78e4('0x71'),_0x5bd1cb)),_0x102763);return _0x5893ef(_0x102763);});});})[_0x78e4('0x19')](function(){return new BPromise(function(_0x147115,_0x2242df){zipdir(_0x12e53b,{'saveTo':_0x4c70ff},function(_0x4835eb,_0x2ec722){if(_0x4835eb)return _0x2242df(_0x4835eb);return _0x147115(_0x2ec722);});})['then'](function(){return new BPromise(function(_0x5835b8,_0x4d6ba5){rimraf(_0x12e53b,function(_0x38c6ca){if(_0x38c6ca)_0x4d6ba5(_0x38c6ca);return _0x5835b8();});});})[_0x78e4('0x19')](function(){return _0x4e0cf9[_0x78e4('0x56')](_0x4c70ff,_0x157380,function(_0x28de4a){if(!_0x28de4a)fs[_0x78e4('0x72')](_0x4c70ff);});});});}else{return _0x4e0cf9[_0x78e4('0x10')](0xc8);}})[_0x78e4('0x30')](handleError(_0x4e0cf9,null));};
\ No newline at end of file
index 89ee338..c7133d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11d8=['length','emit','hasOwnProperty','hook','exports','events','MailInteraction','../../mysqldb','MailMessage','update','remove','getUsers','then','Users','map','setDataValue'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0x11d8,0x145));var _0x811d=function(_0x28e4ec,_0x22f691){_0x28e4ec=_0x28e4ec-0x0;var _0x161a64=_0x11d8[_0x28e4ec];return _0x161a64;};'use strict';var EventEmitter=require(_0x811d('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x811d('0x1')];var MailMessage=require(_0x811d('0x2'))['db'][_0x811d('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x811d('0x4'),'afterDestroy':_0x811d('0x5')};function emitEvent(_0x3d696a){return function(_0x1d265f,_0x41e100,_0x1e7850){_0x1d265f[_0x811d('0x6')]({'attributes':['id'],'raw':!![]})[_0x811d('0x7')](function(_0x1d0aa9){_0x1d265f['setDataValue'](_0x811d('0x8'),_0x1d0aa9[_0x811d('0x9')](function(_0x14a39a){return{'id':_0x14a39a['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x1d265f['id'],'direction':'in','read':![]},'raw':!![]});})[_0x811d('0x7')](function(_0x52dc9d){_0x1d265f[_0x811d('0xa')]('unreadMessages',_0x52dc9d[_0x811d('0xb')]);MailInteractionEvents[_0x811d('0xc')](_0x3d696a+':'+_0x1d265f['id'],_0x1d265f);MailInteractionEvents[_0x811d('0xc')](_0x3d696a,_0x1d265f);_0x1e7850(null);})['catch'](_0x1e7850(null));};}for(var e in events){if(events[_0x811d('0xd')](e)){var event=events[e];MailInteraction[_0x811d('0xe')](e,emitEvent(event));}}module[_0x811d('0xf')]=MailInteractionEvents;
\ No newline at end of file
+var _0xbf6f=['getUsers','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage','save','remove'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbf6f,0x193));var _0xfbf6=function(_0x4fa063,_0x555bd4){_0x4fa063=_0x4fa063-0x0;var _0x2f574d=_0xbf6f[_0x4fa063];return _0x2f574d;};'use strict';var EventEmitter=require(_0xfbf6('0x0'));var MailInteraction=require(_0xfbf6('0x1'))['db']['MailInteraction'];var MailMessage=require(_0xfbf6('0x1'))['db'][_0xfbf6('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfbf6('0x3'),'afterUpdate':'update','afterDestroy':_0xfbf6('0x4')};function emitEvent(_0x11e61d){return function(_0x5cfc03,_0x406482,_0x343eed){_0x5cfc03[_0xfbf6('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5a7212){_0x5cfc03[_0xfbf6('0x6')](_0xfbf6('0x7'),_0x5a7212[_0xfbf6('0x8')](function(_0x1b63ee){return{'id':_0x1b63ee['id']};}));return MailMessage[_0xfbf6('0x9')]({'where':{'MailInteractionId':_0x5cfc03['id'],'direction':'in','read':![]},'raw':!![]});})[_0xfbf6('0xa')](function(_0x3e8091){_0x5cfc03[_0xfbf6('0x6')](_0xfbf6('0xb'),_0x3e8091[_0xfbf6('0xc')]);MailInteractionEvents[_0xfbf6('0xd')](_0x11e61d+':'+_0x5cfc03['id'],_0x5cfc03);MailInteractionEvents[_0xfbf6('0xd')](_0x11e61d,_0x5cfc03);_0x343eed(null);})['catch'](_0x343eed(null));};}for(var e in events){if(events[_0xfbf6('0xe')](e)){var event=events[e];MailInteraction[_0xfbf6('0xf')](e,emitEvent(event));}}module[_0xfbf6('0x10')]=MailInteractionEvents;
\ No newline at end of file
index 2f4c39d..2c58931 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd147=['get','update','then','catch','utf8mb4','lodash','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','MailInteraction','mail_interactions','subject','FULLTEXT','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','substatus','changed','closedAt','models'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0xd147,0x123));var _0x7d14=function(_0x169f84,_0x2af343){_0x169f84=_0x169f84-0x0;var _0x215e89=_0xd147[_0x169f84];return _0x215e89;};'use strict';var _=require(_0x7d14('0x0'));var util=require('util');var logger=require(_0x7d14('0x1'))('api');var moment=require('moment');var BPromise=require(_0x7d14('0x2'));var rp=require(_0x7d14('0x3'));var fs=require('fs');var path=require(_0x7d14('0x4'));var rimraf=require(_0x7d14('0x5'));var config=require(_0x7d14('0x6'));var attributes=require('./mailInteraction.attributes');module[_0x7d14('0x7')]=function(_0x775142,_0x27310a){return _0x775142[_0x7d14('0x8')](_0x7d14('0x9'),attributes,{'tableName':_0x7d14('0xa'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0x7d14('0xb'),'to'],'type':_0x7d14('0xc')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x266f5f,_0x2ec326,_0x5761ba){if(_0x266f5f['substatus']){_0x266f5f[_0x7d14('0xd')]=moment()[_0x7d14('0xe')](_0x7d14('0xf'));}if(_0x266f5f[_0x7d14('0x10')]){_0x266f5f['closedAt']=moment()[_0x7d14('0xe')](_0x7d14('0xf'));}_0x5761ba(null,_0x2ec326);},'beforeUpdate':function(_0x39061a,_0x107462,_0xfd41f0){if(_0x39061a['changed'](_0x7d14('0x11'))){_0x39061a[_0x7d14('0xd')]=_0x39061a['substatus']?moment()[_0x7d14('0xe')](_0x7d14('0xf')):null;}if(_0x39061a[_0x7d14('0x12')]('closed')){_0x39061a[_0x7d14('0x13')]=moment()[_0x7d14('0xe')](_0x7d14('0xf'));_0x39061a[_0x7d14('0x11')]=null;_0x39061a[_0x7d14('0xd')]=null;}_0xfd41f0(null,_0x39061a);},'afterUpdate':function(_0x19e83a,_0x4a4fd7,_0x582854){var _0x214477=_0x775142[_0x7d14('0x14')];var _0x4cb619=_0x19e83a[_0x7d14('0x15')]({'plain':!![]});if(_0x4cb619[_0x7d14('0x10')]){return _0x214477['MailMessage'][_0x7d14('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x4cb619['id']}})[_0x7d14('0x17')](function(){_0x582854();})[_0x7d14('0x18')](function(_0x109eac){_0x582854(_0x109eac);});}else{_0x582854();}}},'charset':_0x7d14('0x19'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x57dd=['then','catch','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','get','MailMessage'];(function(_0x42620c,_0xb31427){var _0x406a52=function(_0x10742e){while(--_0x10742e){_0x42620c['push'](_0x42620c['shift']());}};_0x406a52(++_0xb31427);}(_0x57dd,0x107));var _0xd57d=function(_0x507ec4,_0x4c246c){_0x507ec4=_0x507ec4-0x0;var _0x3ac5f7=_0x57dd[_0x507ec4];return _0x3ac5f7;};'use strict';var _=require(_0xd57d('0x0'));var util=require(_0xd57d('0x1'));var logger=require(_0xd57d('0x2'))(_0xd57d('0x3'));var moment=require(_0xd57d('0x4'));var BPromise=require(_0xd57d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd57d('0x6'));var rimraf=require(_0xd57d('0x7'));var config=require('../../config/environment');var attributes=require(_0xd57d('0x8'));module[_0xd57d('0x9')]=function(_0x560339,_0x58c5fc){return _0x560339[_0xd57d('0xa')](_0xd57d('0xb'),attributes,{'tableName':_0xd57d('0xc'),'paranoid':![],'indexes':[{'name':_0xd57d('0xd'),'fields':['subject','to'],'type':_0xd57d('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5d4602,_0x2ac3aa,_0x366606){if(_0x5d4602[_0xd57d('0xf')]){_0x5d4602[_0xd57d('0x10')]=moment()[_0xd57d('0x11')](_0xd57d('0x12'));}if(_0x5d4602[_0xd57d('0x13')]){_0x5d4602[_0xd57d('0x14')]=moment()[_0xd57d('0x11')](_0xd57d('0x12'));}_0x366606(null,_0x2ac3aa);},'beforeUpdate':function(_0x23b1e6,_0x187461,_0x203779){if(_0x23b1e6['changed'](_0xd57d('0xf'))){_0x23b1e6[_0xd57d('0x10')]=_0x23b1e6[_0xd57d('0xf')]?moment()[_0xd57d('0x11')](_0xd57d('0x12')):null;}if(_0x23b1e6['changed'](_0xd57d('0x13'))){_0x23b1e6[_0xd57d('0x14')]=moment()[_0xd57d('0x11')](_0xd57d('0x12'));_0x23b1e6[_0xd57d('0xf')]=null;_0x23b1e6[_0xd57d('0x10')]=null;}_0x203779(null,_0x23b1e6);},'afterUpdate':function(_0x95d54e,_0x277b8e,_0x43c5a6){var _0x398d5b=_0x560339['models'];var _0x154d65=_0x95d54e[_0xd57d('0x15')]({'plain':!![]});if(_0x154d65['closed']){return _0x398d5b[_0xd57d('0x16')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x154d65['id']}})[_0xd57d('0x17')](function(){_0x43c5a6();})[_0xd57d('0x18')](function(_0xef6634){_0x43c5a6(_0xef6634);});}else{_0x43c5a6();}}},'charset':'utf8mb4','collate':_0xd57d('0x19')});};
\ No newline at end of file
index 1a3f7bb..bd0ef88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36bb=['ids','omit','body','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateMailInteraction','MailInteraction','update','options','raw','where','attributes','limit','find','addTags'];(function(_0x28f1de,_0x355054){var _0x5b5dad=function(_0x399b72){while(--_0x399b72){_0x28f1de['push'](_0x28f1de['shift']());}};_0x5b5dad(++_0x355054);}(_0x36bb,0xe6));var _0xb36b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36bb[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb36b('0x0'));var util=require(_0xb36b('0x1'));var moment=require(_0xb36b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb36b('0x3'));var fs=require('fs');var Redis=require(_0xb36b('0x4'));var db=require(_0xb36b('0x5'))['db'];var utils=require(_0xb36b('0x6'));var logger=require(_0xb36b('0x7'))(_0xb36b('0x8'));var config=require(_0xb36b('0x9'));var jayson=require(_0xb36b('0xa'));var client=jayson[_0xb36b('0xb')][_0xb36b('0xc')]({'port':0x232a});config[_0xb36b('0xd')]=_[_0xb36b('0xe')](config[_0xb36b('0xd')],{'host':_0xb36b('0xf'),'port':0x18eb});var socket=require(_0xb36b('0x10'))(new Redis(config[_0xb36b('0xd')]));require(_0xb36b('0x11'))[_0xb36b('0x12')](socket);function respondWithRpcPromise(_0x18dea6,_0x5b70e7,_0x2323b0){return new BPromise(function(_0x2b26c4,_0x2bd78b){return client['request'](_0x18dea6,_0x2323b0)[_0xb36b('0x13')](function(_0x449056){logger[_0xb36b('0x14')](_0xb36b('0x15'),_0x5b70e7,_0xb36b('0x16'));logger[_0xb36b('0x17')](_0xb36b('0x18'),_0x5b70e7,_0xb36b('0x16'),JSON[_0xb36b('0x19')](_0x449056));if(_0x449056[_0xb36b('0x1a')]){if(_0x449056[_0xb36b('0x1a')]['code']===0x1f4){logger[_0xb36b('0x1a')]('MailInteraction,\x20%s,\x20%s',_0x5b70e7,_0x449056['error'][_0xb36b('0x1b')]);return _0x2bd78b(_0x449056[_0xb36b('0x1a')][_0xb36b('0x1b')]);}logger[_0xb36b('0x1a')](_0xb36b('0x15'),_0x5b70e7,_0x449056[_0xb36b('0x1a')]['message']);return _0x2b26c4(_0x449056[_0xb36b('0x1a')][_0xb36b('0x1b')]);}else{logger[_0xb36b('0x14')](_0xb36b('0x15'),_0x5b70e7,'request\x20sent');_0x2b26c4(_0x449056[_0xb36b('0x1c')][_0xb36b('0x1b')]);}})[_0xb36b('0x1d')](function(_0x57a7b2){logger[_0xb36b('0x1a')]('MailInteraction,\x20%s,\x20%s',_0x5b70e7,_0x57a7b2);_0x2bd78b(_0x57a7b2);});});}exports[_0xb36b('0x1e')]=function(_0xac85bd){var _0x27979d=this;return new Promise(function(_0x3eba4b,_0x4049fa){return db[_0xb36b('0x1f')][_0xb36b('0x20')](_0xac85bd['body'],{'raw':_0xac85bd[_0xb36b('0x21')]?_0xac85bd['options'][_0xb36b('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xac85bd['options']?_0xac85bd[_0xb36b('0x21')][_0xb36b('0x23')]||null:null,'attributes':_0xac85bd[_0xb36b('0x21')]?_0xac85bd[_0xb36b('0x21')][_0xb36b('0x24')]||null:null,'limit':_0xac85bd['options']?_0xac85bd[_0xb36b('0x21')][_0xb36b('0x25')]||null:null})[_0xb36b('0x13')](function(_0x553915){logger[_0xb36b('0x14')]('UpdateMailInteraction',_0xac85bd);logger['debug']('UpdateMailInteraction',_0xac85bd,JSON[_0xb36b('0x19')](_0x553915));_0x3eba4b(_0x553915);})[_0xb36b('0x1d')](function(_0x2e8402){logger[_0xb36b('0x1a')](_0xb36b('0x1e'),_0x2e8402[_0xb36b('0x1b')],_0xac85bd);_0x4049fa(_0x27979d[_0xb36b('0x1a')](0x1f4,_0x2e8402[_0xb36b('0x1b')]));});});};exports['AddTagsToMailInteraction']=function(_0x5f5d1d){return new Promise(function(_0x90718e,_0x2724bf){return db[_0xb36b('0x1f')][_0xb36b('0x26')]({'where':_0x5f5d1d['options']?_0x5f5d1d['options'][_0xb36b('0x23')]||null:null})['then'](function(_0x3e376f){if(_0x3e376f){return _0x3e376f[_0xb36b('0x27')](_0x5f5d1d['body'][_0xb36b('0x28')],_[_0xb36b('0x29')](_0x5f5d1d[_0xb36b('0x2a')],[_0xb36b('0x28'),'id'])||{});}})[_0xb36b('0x2b')](function(_0x415e0e){logger[_0xb36b('0x14')](_0xb36b('0x2c'),_0x5f5d1d);logger[_0xb36b('0x17')](_0xb36b('0x2c'),_0x5f5d1d,JSON[_0xb36b('0x19')](_0x415e0e));_0x90718e(_0x415e0e);})[_0xb36b('0x1d')](function(_0x558766){logger['error'](_0xb36b('0x2c'),_0x558766[_0xb36b('0x1b')],_0x5f5d1d);_0x2724bf(_this['error'](0x1f4,_0x558766[_0xb36b('0x1b')]));});});};
\ No newline at end of file
+var _0x43a2=['omit','spread','AddTags','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','socket.io-emitter','redis','./mailInteraction.socket','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','attributes','limit','AddTagsToMailInteraction','find','where','addTags','ids'];(function(_0x27192e,_0x427a60){var _0x168f20=function(_0x2695e4){while(--_0x2695e4){_0x27192e['push'](_0x27192e['shift']());}};_0x168f20(++_0x427a60);}(_0x43a2,0xd0));var _0x243a=function(_0x27f357,_0x33ed3d){_0x27f357=_0x27f357-0x0;var _0x477ef5=_0x43a2[_0x27f357];return _0x477ef5;};'use strict';var _=require('lodash');var util=require(_0x243a('0x0'));var moment=require(_0x243a('0x1'));var BPromise=require(_0x243a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x243a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x243a('0x4'));var logger=require(_0x243a('0x5'))(_0x243a('0x6'));var config=require(_0x243a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x243a('0x8')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x243a('0x9'))(new Redis(config[_0x243a('0xa')]));require(_0x243a('0xb'))[_0x243a('0xc')](socket);function respondWithRpcPromise(_0x39b0fc,_0x41a114,_0x5a1f51){return new BPromise(function(_0x497be7,_0x195162){return client[_0x243a('0xd')](_0x39b0fc,_0x5a1f51)[_0x243a('0xe')](function(_0x372eb8){logger[_0x243a('0xf')](_0x243a('0x10'),_0x41a114,_0x243a('0x11'));logger[_0x243a('0x12')](_0x243a('0x13'),_0x41a114,_0x243a('0x11'),JSON[_0x243a('0x14')](_0x372eb8));if(_0x372eb8[_0x243a('0x15')]){if(_0x372eb8[_0x243a('0x15')][_0x243a('0x16')]===0x1f4){logger[_0x243a('0x15')]('MailInteraction,\x20%s,\x20%s',_0x41a114,_0x372eb8[_0x243a('0x15')][_0x243a('0x17')]);return _0x195162(_0x372eb8[_0x243a('0x15')]['message']);}logger[_0x243a('0x15')](_0x243a('0x10'),_0x41a114,_0x372eb8[_0x243a('0x15')][_0x243a('0x17')]);return _0x497be7(_0x372eb8['error']['message']);}else{logger[_0x243a('0xf')](_0x243a('0x10'),_0x41a114,_0x243a('0x11'));_0x497be7(_0x372eb8['result'][_0x243a('0x17')]);}})[_0x243a('0x18')](function(_0xf4cdb8){logger[_0x243a('0x15')](_0x243a('0x10'),_0x41a114,_0xf4cdb8);_0x195162(_0xf4cdb8);});});}exports[_0x243a('0x19')]=function(_0x14b67a){var _0x3b4d17=this;return new Promise(function(_0x2dbefd,_0x36ba2c){return db[_0x243a('0x1a')][_0x243a('0x1b')](_0x14b67a[_0x243a('0x1c')],{'raw':_0x14b67a[_0x243a('0x1d')]?_0x14b67a[_0x243a('0x1d')][_0x243a('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x14b67a[_0x243a('0x1d')]?_0x14b67a[_0x243a('0x1d')]['where']||null:null,'attributes':_0x14b67a[_0x243a('0x1d')]?_0x14b67a[_0x243a('0x1d')][_0x243a('0x1f')]||null:null,'limit':_0x14b67a[_0x243a('0x1d')]?_0x14b67a[_0x243a('0x1d')][_0x243a('0x20')]||null:null})['then'](function(_0x25028e){logger[_0x243a('0xf')](_0x243a('0x19'),_0x14b67a);logger[_0x243a('0x12')](_0x243a('0x19'),_0x14b67a,JSON['stringify'](_0x25028e));_0x2dbefd(_0x25028e);})[_0x243a('0x18')](function(_0x18b2dd){logger[_0x243a('0x15')](_0x243a('0x19'),_0x18b2dd[_0x243a('0x17')],_0x14b67a);_0x36ba2c(_0x3b4d17[_0x243a('0x15')](0x1f4,_0x18b2dd['message']));});});};exports[_0x243a('0x21')]=function(_0x22de0c){return new Promise(function(_0x133e18,_0x5f47cb){return db['MailInteraction'][_0x243a('0x22')]({'where':_0x22de0c['options']?_0x22de0c[_0x243a('0x1d')][_0x243a('0x23')]||null:null})[_0x243a('0xe')](function(_0x8cd764){if(_0x8cd764){return _0x8cd764[_0x243a('0x24')](_0x22de0c[_0x243a('0x1c')][_0x243a('0x25')],_[_0x243a('0x26')](_0x22de0c[_0x243a('0x1c')],['ids','id'])||{});}})[_0x243a('0x27')](function(_0x46943d){logger[_0x243a('0xf')](_0x243a('0x28'),_0x22de0c);logger['debug'](_0x243a('0x28'),_0x22de0c,JSON[_0x243a('0x14')](_0x46943d));_0x133e18(_0x46943d);})[_0x243a('0x18')](function(_0x172655){logger['error'](_0x243a('0x28'),_0x172655[_0x243a('0x17')],_0x22de0c);_0x5f47cb(_this[_0x243a('0x15')](0x1f4,_0x172655[_0x243a('0x17')]));});});};
\ No newline at end of file
index daa8789..a9b4e93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4cf=['update','emit','register','length','mailInteraction:','save','remove'];(function(_0x236023,_0x20dea0){var _0x5f0ceb=function(_0x234c57){while(--_0x234c57){_0x236023['push'](_0x236023['shift']());}};_0x5f0ceb(++_0x20dea0);}(_0xd4cf,0x1be));var _0xfd4c=function(_0x47adb8,_0x591ccc){_0x47adb8=_0x47adb8-0x0;var _0x4689a8=_0xd4cf[_0x47adb8];return _0x4689a8;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xfd4c('0x0'),_0xfd4c('0x1'),_0xfd4c('0x2')];function createListener(_0x5624d9,_0x32e2e7){return function(_0x1ed3f8){_0x32e2e7[_0xfd4c('0x3')](_0x5624d9,_0x1ed3f8);};}function removeListener(_0x160cdc,_0x328224){return function(){MailInteractionEvents['removeListener'](_0x160cdc,_0x328224);};}exports[_0xfd4c('0x4')]=function(_0x67d204){for(var _0x165be9=0x0,_0x2e4da8=events[_0xfd4c('0x5')];_0x165be9<_0x2e4da8;_0x165be9++){var _0x2182c1=events[_0x165be9];var _0x1b0a03=createListener(_0xfd4c('0x6')+_0x2182c1,_0x67d204);MailInteractionEvents['on'](_0x2182c1,_0x1b0a03);}};
\ No newline at end of file
+var _0x3e5c=['length','save','remove','emit','removeListener','register'];(function(_0x5aba81,_0x5b867f){var _0x258902=function(_0x234368){while(--_0x234368){_0x5aba81['push'](_0x5aba81['shift']());}};_0x258902(++_0x5b867f);}(_0x3e5c,0x1bd));var _0xc3e5=function(_0x4ec41a,_0x32e17a){_0x4ec41a=_0x4ec41a-0x0;var _0x228495=_0x3e5c[_0x4ec41a];return _0x228495;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xc3e5('0x0'),_0xc3e5('0x1'),'update'];function createListener(_0x320e9d,_0x508ce2){return function(_0x1e4596){_0x508ce2[_0xc3e5('0x2')](_0x320e9d,_0x1e4596);};}function removeListener(_0x10c460,_0x4c3ec6){return function(){MailInteractionEvents[_0xc3e5('0x3')](_0x10c460,_0x4c3ec6);};}exports[_0xc3e5('0x4')]=function(_0x20db83){for(var _0x1820cc=0x0,_0x45f024=events[_0xc3e5('0x5')];_0x1820cc<_0x45f024;_0x1820cc++){var _0x4a8630=events[_0x1820cc];var _0x33f3e6=createListener('mailInteraction:'+_0x4a8630,_0x20db83);MailInteractionEvents['on'](_0x4a8630,_0x33f3e6);}};
\ No newline at end of file
index 19c0cb6..675934a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6305=['/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailMessage.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/download','download','tracked','mail','mailmessage:create','create','put'];(function(_0x2166e1,_0x4a9a63){var _0x42ada1=function(_0x1d487a){while(--_0x1d487a){_0x2166e1['push'](_0x2166e1['shift']());}};_0x42ada1(++_0x4a9a63);}(_0x6305,0x1ab));var _0x5630=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x6305[_0x2b4411];return _0x8e41ef;};'use strict';var multer=require('multer');var util=require(_0x5630('0x0'));var path=require('path');var timeout=require(_0x5630('0x1'));var express=require(_0x5630('0x2'));var router=express[_0x5630('0x3')]();var fs_extra=require(_0x5630('0x4'));var auth=require(_0x5630('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5630('0x6'));var controller=require(_0x5630('0x7'));router[_0x5630('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5630('0x8')](_0x5630('0x9'),auth[_0x5630('0xa')](),controller[_0x5630('0xb')]);router[_0x5630('0x8')](_0x5630('0xc'),auth[_0x5630('0xa')](),controller[_0x5630('0xd')]);router[_0x5630('0x8')](_0x5630('0xe'),auth[_0x5630('0xa')](),controller[_0x5630('0xf')]);router['post']('/',auth[_0x5630('0xa')](),interaction[_0x5630('0x10')](_0x5630('0x11'),_0x5630('0x12')),controller[_0x5630('0x13')]);router['put'](_0x5630('0xc'),auth[_0x5630('0xa')](),controller['update']);router[_0x5630('0x14')](_0x5630('0x15'),auth[_0x5630('0xa')](),controller[_0x5630('0x16')]);router[_0x5630('0x14')](_0x5630('0x17'),auth['isAuthenticated'](),controller[_0x5630('0x18')]);router[_0x5630('0x19')](_0x5630('0xc'),auth[_0x5630('0xa')](),controller[_0x5630('0x1a')]);module[_0x5630('0x1b')]=router;
\ No newline at end of file
+var _0xe0dc=['put','/:id/accept','accept','/:id/reject','reject','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','/describe','describe','show','/:id/download','download','post','mail','mailmessage:create','create','/:id','update'];(function(_0x1c85a7,_0x464b8c){var _0x669c0d=function(_0x4f23e5){while(--_0x4f23e5){_0x1c85a7['push'](_0x1c85a7['shift']());}};_0x669c0d(++_0x464b8c);}(_0xe0dc,0x77));var _0xce0d=function(_0x1f6835,_0xff3520){_0x1f6835=_0x1f6835-0x0;var _0x10aee2=_0xe0dc[_0x1f6835];return _0x10aee2;};'use strict';var multer=require('multer');var util=require(_0xce0d('0x0'));var path=require(_0xce0d('0x1'));var timeout=require(_0xce0d('0x2'));var express=require('express');var router=express[_0xce0d('0x3')]();var fs_extra=require(_0xce0d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xce0d('0x5'));var config=require(_0xce0d('0x6'));var controller=require(_0xce0d('0x7'));router[_0xce0d('0x8')]('/',auth[_0xce0d('0x9')](),controller['index']);router[_0xce0d('0x8')](_0xce0d('0xa'),auth[_0xce0d('0x9')](),controller[_0xce0d('0xb')]);router[_0xce0d('0x8')]('/:id',auth[_0xce0d('0x9')](),controller[_0xce0d('0xc')]);router[_0xce0d('0x8')](_0xce0d('0xd'),auth[_0xce0d('0x9')](),controller[_0xce0d('0xe')]);router[_0xce0d('0xf')]('/',auth['isAuthenticated'](),interaction['tracked'](_0xce0d('0x10'),_0xce0d('0x11')),controller[_0xce0d('0x12')]);router['put'](_0xce0d('0x13'),auth[_0xce0d('0x9')](),controller[_0xce0d('0x14')]);router[_0xce0d('0x15')](_0xce0d('0x16'),auth[_0xce0d('0x9')](),controller[_0xce0d('0x17')]);router[_0xce0d('0x15')](_0xce0d('0x18'),auth[_0xce0d('0x9')](),controller[_0xce0d('0x19')]);router[_0xce0d('0x1a')](_0xce0d('0x13'),auth[_0xce0d('0x9')](),controller['destroy']);module[_0xce0d('0x1b')]=router;
\ No newline at end of file
index d442aa7..9d9d8ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2fd=['Email','Chat','sequelize','lodash','exports','TEXT','long','ENUM','out','STRING','DATE','BOOLEAN'];(function(_0x425128,_0x594343){var _0x5bb8dc=function(_0x31a4d4){while(--_0x31a4d4){_0x425128['push'](_0x425128['shift']());}};_0x5bb8dc(++_0x594343);}(_0xc2fd,0x12e));var _0xdc2f=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xc2fd[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0xdc2f('0x0'));var _=require(_0xdc2f('0x1'));module[_0xdc2f('0x2')]={'body':{'type':Sequelize[_0xdc2f('0x3')](_0xdc2f('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT']('medium')},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xdc2f('0x5')]('in',_0xdc2f('0x6')),'defaultValue':_0xdc2f('0x6'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0xdc2f('0x7')]},'to':{'type':Sequelize[_0xdc2f('0x3')](_0xdc2f('0x4'))},'cc':{'type':Sequelize[_0xdc2f('0x3')](_0xdc2f('0x4'))},'bcc':{'type':Sequelize[_0xdc2f('0x3')](_0xdc2f('0x4'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0xdc2f('0x8')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0xdc2f('0x9')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xdc2f('0x8')]},'originTo':{'type':Sequelize[_0xdc2f('0x3')](_0xdc2f('0x4'))},'originCc':{'type':Sequelize[_0xdc2f('0x3')]('long')},'originChannel':{'type':Sequelize[_0xdc2f('0x5')](_0xdc2f('0xa'),_0xdc2f('0xb')),'defaultValue':_0xdc2f('0xa'),'allowNull':![]}};
\ No newline at end of file
+var _0x0a91=['long','BOOLEAN','ENUM','out','STRING','DATE','Email','Chat','sequelize','lodash','exports','TEXT'];(function(_0x3e3012,_0x46fe06){var _0x5dfc61=function(_0x4737b8){while(--_0x4737b8){_0x3e3012['push'](_0x3e3012['shift']());}};_0x5dfc61(++_0x46fe06);}(_0x0a91,0x74));var _0x10a9=function(_0x1d3e3f,_0x495ec1){_0x1d3e3f=_0x1d3e3f-0x0;var _0x3879fa=_0x0a91[_0x1d3e3f];return _0x3879fa;};'use strict';var Sequelize=require(_0x10a9('0x0'));var _=require(_0x10a9('0x1'));module[_0x10a9('0x2')]={'body':{'type':Sequelize[_0x10a9('0x3')](_0x10a9('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x10a9('0x3')]('medium')},'read':{'type':Sequelize[_0x10a9('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x10a9('0x6')]('in',_0x10a9('0x7')),'defaultValue':_0x10a9('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x10a9('0x8')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x10a9('0x3')](_0x10a9('0x4'))},'cc':{'type':Sequelize[_0x10a9('0x3')](_0x10a9('0x4'))},'bcc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize[_0x10a9('0x3')]},'sentAt':{'type':Sequelize[_0x10a9('0x9')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0x10a9('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x10a9('0x9')]},'originTo':{'type':Sequelize[_0x10a9('0x3')](_0x10a9('0x4'))},'originCc':{'type':Sequelize[_0x10a9('0x3')](_0x10a9('0x4'))},'originChannel':{'type':Sequelize[_0x10a9('0x6')](_0x10a9('0xa'),_0x10a9('0xb')),'defaultValue':_0x10a9('0xa'),'allowNull':![]}};
\ No newline at end of file
index a93eb7b..08d46f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71c5=['../../config/environment','../../mysqldb','redis','localhost','html-entities','jayson/promise','client','http','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','status','json','offset','limit','count','set','Content-Range','destroy','end','sendStatus','name','index','map','MailMessage','rawAttributes','fieldName','type','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','include','findAll','model','find','update','body','params','describe','create','direction','out','secret','split','MailAccount','findOne','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','getSmtpOptions','attachments','join','server/files/attachments','basename','defaults','ListId','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','mail','read','readAt','UserId','user','agent','get','MailInteraction','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','fullname','email','internal','manual','interface','channel','fromString','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','User','SIP/%s','event','rejectmessage','download','unix','toString','root','server','files','tmp','message-%s.eml','from','subject','createdAt','Attachment','decode','headers','bcc','Bcc','Attachments','existsSync','push','writeFileSync','eml-format','moment','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger'];(function(_0x581100,_0x5649f5){var _0x1b5d17=function(_0x2d1fd6){while(--_0x2d1fd6){_0x581100['push'](_0x581100['shift']());}};_0x1b5d17(++_0x5649f5);}(_0x71c5,0x92));var _0x571c=function(_0x438287,_0x261d2e){_0x438287=_0x438287-0x0;var _0x1e5146=_0x71c5[_0x438287];return _0x1e5146;};'use strict';var emlformat=require(_0x571c('0x0'));var moment=require(_0x571c('0x1'));var BPromise=require('bluebird');var util=require(_0x571c('0x2'));var path=require(_0x571c('0x3'));var fs=require('fs');var _=require(_0x571c('0x4'));var Redis=require(_0x571c('0x5'));var htmlToText=require(_0x571c('0x6'));var qs=require(_0x571c('0x7'));var logger=require('../../config/logger')('api');var interaction_log=require(_0x571c('0x8'))('mail-interactions');var config=require(_0x571c('0x9'));var db=require(_0x571c('0xa'))['db'];config[_0x571c('0xb')]=_['defaults'](config[_0x571c('0xb')],{'host':_0x571c('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x571c('0xb')]));var htmlEntities=require(_0x571c('0xd'));require('./mailMessage.socket')['register'](socket);var jayson=require(_0x571c('0xe'));var client=jayson[_0x571c('0xf')][_0x571c('0x10')]({'port':0x232c});var client9003=jayson[_0x571c('0xf')]['http']({'port':0x232b});var client9002=jayson[_0x571c('0xf')][_0x571c('0x10')]({'port':0x232a});function respondWithRpcPromise(_0x5afbc4,_0x57467d,_0x2227bf,_0xdb601d){return new BPromise(function(_0x122c07,_0xe33286){var _0x3b81b6=_0xdb601d||client;return _0x3b81b6[_0x571c('0x11')](_0x5afbc4,_0x2227bf)[_0x571c('0x12')](function(_0x2ab936){logger['info'](_0x571c('0x13'),_0x57467d,_0x571c('0x14'));logger[_0x571c('0x15')](_0x571c('0x16'),_0x57467d,_0x571c('0x14'),JSON[_0x571c('0x17')](_0x2ab936));if(_0x2ab936[_0x571c('0x18')]){if(_0x2ab936['error'][_0x571c('0x19')]===0x1f4){logger[_0x571c('0x18')](_0x571c('0x13'),_0x57467d,_0x2ab936[_0x571c('0x18')]['message']);return _0xe33286(_0x2ab936[_0x571c('0x18')]['message']);}logger[_0x571c('0x18')](_0x571c('0x13'),_0x57467d,_0x2ab936[_0x571c('0x18')][_0x571c('0x1a')]);return _0x122c07(_0x2ab936[_0x571c('0x18')][_0x571c('0x1a')]);}else{logger[_0x571c('0x1b')](_0x571c('0x13'),_0x57467d,_0x571c('0x14'));_0x122c07(_0x2ab936['result']['message']);}})[_0x571c('0x1c')](function(_0x1a0d21){logger[_0x571c('0x18')](_0x571c('0x13'),_0x57467d,_0x1a0d21);_0xe33286(_0x1a0d21);});});}function respondWithResult(_0x22c0e5,_0x1612d2){_0x1612d2=_0x1612d2||0xc8;return function(_0x2f353c){if(_0x2f353c){return _0x22c0e5[_0x571c('0x1d')](_0x1612d2)[_0x571c('0x1e')](_0x2f353c);}};}function respondWithFilteredResult(_0x16ccf0,_0x671bf1){return function(_0x54f67d){if(_0x54f67d){var _0x3c01c5=typeof _0x671bf1[_0x571c('0x1f')]==='undefined'&&typeof _0x671bf1[_0x571c('0x20')]==='undefined';var _0xa5671b=_0x54f67d[_0x571c('0x21')];var _0x31390e=_0x3c01c5?0x0:_0x671bf1[_0x571c('0x1f')];var _0x8e42f3=_0x3c01c5?_0x54f67d[_0x571c('0x21')]:_0x671bf1[_0x571c('0x1f')]+_0x671bf1[_0x571c('0x20')];var _0x475351;if(_0x8e42f3>=_0xa5671b){_0x8e42f3=_0xa5671b;_0x475351=0xc8;}else{_0x475351=0xce;}_0x16ccf0[_0x571c('0x1d')](_0x475351);return _0x16ccf0[_0x571c('0x22')](_0x571c('0x23'),_0x31390e+'-'+_0x8e42f3+'/'+_0xa5671b)['json'](_0x54f67d);}return null;};}function saveUpdates(_0x1c689f){return function(_0x1f2939){if(_0x1f2939){return _0x1f2939['update'](_0x1c689f)[_0x571c('0x12')](function(_0x28cc8c){return _0x28cc8c;});}return null;};}function removeEntity(_0x5eb796){return function(_0xaf8f6d){if(_0xaf8f6d){return _0xaf8f6d[_0x571c('0x24')]()['then'](function(){_0x5eb796[_0x571c('0x1d')](0xcc)[_0x571c('0x25')]();});}};}function handleEntityNotFound(_0xf05355){return function(_0x385f38){if(!_0x385f38){_0xf05355[_0x571c('0x26')](0x194);}return _0x385f38;};}function handleError(_0x52d337,_0x875910){_0x875910=_0x875910||0x1f4;return function(_0x4c50c0){logger[_0x571c('0x18')](_0x4c50c0['stack']);if(_0x4c50c0[_0x571c('0x27')]){delete _0x4c50c0['name'];}_0x52d337[_0x571c('0x1d')](_0x875910)['send'](_0x4c50c0);};}exports[_0x571c('0x28')]=function(_0x1deea7,_0xabd51a){var _0x13ebfc={},_0x5e8209={},_0x3b89fa={'count':0x0,'rows':[]};var _0x543b1e=_[_0x571c('0x29')](db[_0x571c('0x2a')][_0x571c('0x2b')],function(_0xd7d32){return{'name':_0xd7d32[_0x571c('0x2c')],'type':_0xd7d32[_0x571c('0x2d')]['key']};});_0x5e8209['model']=_[_0x571c('0x29')](_0x543b1e,'name');_0x5e8209[_0x571c('0x2e')]=_[_0x571c('0x2f')](_0x1deea7[_0x571c('0x2e')]);_0x5e8209[_0x571c('0x30')]=_[_0x571c('0x31')](_0x5e8209['model'],_0x5e8209['query']);_0x13ebfc[_0x571c('0x32')]=_['intersection'](_0x5e8209['model'],qs[_0x571c('0x33')](_0x1deea7[_0x571c('0x2e')][_0x571c('0x33')]));_0x13ebfc['attributes']=_0x13ebfc['attributes'][_0x571c('0x34')]?_0x13ebfc[_0x571c('0x32')]:_0x5e8209['model'];if(!_0x1deea7[_0x571c('0x2e')][_0x571c('0x35')](_0x571c('0x36'))){_0x13ebfc['limit']=qs[_0x571c('0x20')](_0x1deea7[_0x571c('0x2e')][_0x571c('0x20')]);_0x13ebfc[_0x571c('0x1f')]=qs[_0x571c('0x1f')](_0x1deea7[_0x571c('0x2e')][_0x571c('0x1f')]);}_0x13ebfc[_0x571c('0x37')]=qs['sort'](_0x1deea7[_0x571c('0x2e')]['sort']);_0x13ebfc[_0x571c('0x38')]=qs[_0x571c('0x30')](_[_0x571c('0x39')](_0x1deea7[_0x571c('0x2e')],_0x5e8209['filters']),_0x543b1e);if(_0x1deea7[_0x571c('0x2e')][_0x571c('0x3a')]){_0x13ebfc[_0x571c('0x38')]=_[_0x571c('0x3b')](_0x13ebfc[_0x571c('0x38')],{'$or':_['map'](_0x543b1e,function(_0xb47507){if(_0xb47507[_0x571c('0x2d')]!==_0x571c('0x3c')){var _0x27ab8e={};_0x27ab8e[_0xb47507[_0x571c('0x27')]]={'$like':'%'+_0x1deea7[_0x571c('0x2e')][_0x571c('0x3a')]+'%'};return _0x27ab8e;}})});}_0x13ebfc=_[_0x571c('0x3b')]({},_0x13ebfc,_0x1deea7[_0x571c('0x3d')]);var _0x4d3091={'where':_0x13ebfc[_0x571c('0x38')]};return db[_0x571c('0x2a')]['count'](_0x4d3091)[_0x571c('0x12')](function(_0x4d107b){_0x3b89fa[_0x571c('0x21')]=_0x4d107b;if(_0x1deea7[_0x571c('0x2e')]['includeAll']){_0x13ebfc[_0x571c('0x3e')]=[{'all':!![]}];}return db[_0x571c('0x2a')][_0x571c('0x3f')](_0x13ebfc);})[_0x571c('0x12')](function(_0x530778){_0x3b89fa['rows']=_0x530778;return _0x3b89fa;})[_0x571c('0x12')](respondWithFilteredResult(_0xabd51a,_0x13ebfc))[_0x571c('0x1c')](handleError(_0xabd51a,null));};exports['show']=function(_0x346fe3,_0x1d6ce3){var _0x19f2f4={'raw':!![],'where':{'id':_0x346fe3['params']['id']}},_0x462e67={};_0x462e67[_0x571c('0x40')]=_[_0x571c('0x2f')](db[_0x571c('0x2a')][_0x571c('0x2b')]);_0x462e67['query']=_[_0x571c('0x2f')](_0x346fe3['query']);_0x462e67[_0x571c('0x30')]=_[_0x571c('0x31')](_0x462e67['model'],_0x462e67[_0x571c('0x2e')]);_0x19f2f4[_0x571c('0x32')]=_[_0x571c('0x31')](_0x462e67[_0x571c('0x40')],qs[_0x571c('0x33')](_0x346fe3[_0x571c('0x2e')]['fields']));_0x19f2f4[_0x571c('0x32')]=_0x19f2f4[_0x571c('0x32')]['length']?_0x19f2f4[_0x571c('0x32')]:_0x462e67['model'];if(_0x346fe3[_0x571c('0x2e')]['includeAll']){_0x19f2f4[_0x571c('0x3e')]=[{'all':!![]}];}_0x19f2f4=_[_0x571c('0x3b')]({},_0x19f2f4,_0x346fe3[_0x571c('0x3d')]);return db[_0x571c('0x2a')][_0x571c('0x41')](_0x19f2f4)['then'](handleEntityNotFound(_0x1d6ce3,null))[_0x571c('0x12')](respondWithResult(_0x1d6ce3,null))['catch'](handleError(_0x1d6ce3,null));};exports[_0x571c('0x42')]=function(_0x5bad98,_0x100dde){if(_0x5bad98[_0x571c('0x43')]['id']){delete _0x5bad98[_0x571c('0x43')]['id'];}return db[_0x571c('0x2a')][_0x571c('0x41')]({'where':{'id':_0x5bad98[_0x571c('0x44')]['id']}})[_0x571c('0x12')](handleEntityNotFound(_0x100dde,null))[_0x571c('0x12')](saveUpdates(_0x5bad98[_0x571c('0x43')],null))[_0x571c('0x12')](respondWithResult(_0x100dde,null))[_0x571c('0x1c')](handleError(_0x100dde,null));};exports[_0x571c('0x24')]=function(_0x2f84d6,_0x4612af){return db[_0x571c('0x2a')][_0x571c('0x41')]({'where':{'id':_0x2f84d6[_0x571c('0x44')]['id']}})[_0x571c('0x12')](handleEntityNotFound(_0x4612af,null))[_0x571c('0x12')](removeEntity(_0x4612af,null))['catch'](handleError(_0x4612af,null));};exports[_0x571c('0x45')]=function(_0x3124e3,_0x4654af){return db['MailMessage'][_0x571c('0x45')]()[_0x571c('0x12')](respondWithResult(_0x4654af,null))['catch'](handleError(_0x4654af,null));};exports[_0x571c('0x46')]=function(_0xb020dc,_0x320147){return db[_0x571c('0x2a')][_0x571c('0x46')](_0xb020dc[_0x571c('0x43')])[_0x571c('0x12')](function(_0x3fa3e4){if(_0x3fa3e4){if(_0x3fa3e4[_0x571c('0x47')]===_0x571c('0x48')&&!_0x3fa3e4[_0x571c('0x49')]){var _0x18d6e6,_0x3bea63,_0xeae9bf;if(_0xb020dc[_0x571c('0x43')]['to']){_0x3bea63=_0xb020dc[_0x571c('0x43')]['to'][_0x571c('0x4a')](',')[0x0];}return db[_0x571c('0x4b')][_0x571c('0x4c')]({'where':{'id':_0x3fa3e4[_0x571c('0x4d')]},'include':[{'model':db[_0x571c('0x4e')],'as':_0x571c('0x4f'),'include':[{'model':db[_0x571c('0x50')],'as':_0x571c('0x51'),'where':{'email':_0x3bea63},'limit':0x1,'order':[[_0x571c('0x52'),_0x571c('0x53')]]}]},{'model':db[_0x571c('0x54')],'as':_0x571c('0x55'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':'CloudProvider','raw':!![]}]}]})[_0x571c('0x12')](function(_0x4f5d9a){_0x18d6e6=_0x4f5d9a;if(!_0x18d6e6||!_0x18d6e6[_0x571c('0x55')])return;var _0x49719a=_0x18d6e6[_0x571c('0x56')]();if(_0xb020dc[_0x571c('0x43')][_0x571c('0x57')]&&_0xb020dc['body'][_0x571c('0x57')]['length']){for(var _0x9d0f44=0x0;_0x9d0f44<_0xb020dc[_0x571c('0x43')][_0x571c('0x57')][_0x571c('0x34')];_0x9d0f44+=0x1){_0xb020dc[_0x571c('0x43')][_0x571c('0x57')][_0x9d0f44]={'filename':_0xb020dc['body']['attachments'][_0x9d0f44][_0x571c('0x27')],'path':path[_0x571c('0x58')](config['root'],_0x571c('0x59'),_0xb020dc[_0x571c('0x43')][_0x571c('0x57')][_0x9d0f44][_0x571c('0x5a')])};}}_0xeae9bf={'account':_0x49719a,'message':_0xb020dc[_0x571c('0x43')]};return;})['then'](function(){if(_0x18d6e6['List']){if(_0x18d6e6[_0x571c('0x4f')][_0x571c('0x51')]['length']){return _0x18d6e6['List'][_0x571c('0x51')][0x0];}else{return db[_0x571c('0x50')][_0x571c('0x46')](_[_0x571c('0x5b')](_0xb020dc[_0x571c('0x43')],{'firstName':_0xb020dc['body']['to'],'email':_0xb020dc[_0x571c('0x43')]['to'],'phone':_0xb020dc[_0x571c('0x43')]['to'],'ListId':_0x18d6e6[_0x571c('0x5c')]}));}}else{throw new Error('List\x20not\x20found');}})[_0x571c('0x12')](function(){if(_0xeae9bf){return respondWithRpcPromise(_0x571c('0x5d'),_0x571c('0x5e'),_0xeae9bf,client9003)[_0x571c('0x12')](function(_0xd7efcc){return _0x3fa3e4[_0x571c('0x42')]({'read':!![],'messageId':_0xd7efcc[_0x571c('0x5f')],'sentAt':moment()[_0x571c('0x60')](_0x571c('0x61'))});})[_0x571c('0x1c')](function(_0x2392d4){logger[_0x571c('0x18')]('%s',JSON[_0x571c('0x17')](_0x2392d4));return _0x3fa3e4;});}return _0x3fa3e4;});}return _0x3fa3e4;}})[_0x571c('0x12')](respondWithResult(_0x320147,0xc9))[_0x571c('0x1c')](handleError(_0x320147,null));};exports['accept']=function(_0x5ae96a,_0x5a4a3e){var _0x2a2b66={'agent':{},'channel':_0x571c('0x62')};if(_0x5ae96a[_0x571c('0x43')]['id']){delete _0x5ae96a[_0x571c('0x43')]['id'];}_0x5ae96a[_0x571c('0x43')][_0x571c('0x63')]=!![];_0x5ae96a[_0x571c('0x43')][_0x571c('0x64')]=moment()[_0x571c('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0x5ae96a[_0x571c('0x43')][_0x571c('0x65')]=_0x5ae96a[_0x571c('0x43')][_0x571c('0x65')]||_0x5ae96a[_0x571c('0x66')]['id'];_0x2a2b66[_0x571c('0x67')]['id']=_0x5ae96a[_0x571c('0x43')][_0x571c('0x65')];return db[_0x571c('0x2a')][_0x571c('0x41')]({'where':{'id':_0x5ae96a[_0x571c('0x44')]['id'],'UserId':null}})[_0x571c('0x12')](handleEntityNotFound(_0x5a4a3e,null))[_0x571c('0x12')](saveUpdates(_0x5ae96a[_0x571c('0x43')],null))[_0x571c('0x12')](function(_0x31898f){if(_0x31898f){_0x2a2b66[_0x571c('0x1a')]=_0x31898f[_0x571c('0x68')]({'plain':!![]});return db[_0x571c('0x69')]['find']({'where':{'id':_0x31898f[_0x571c('0x6a')]}});}return null;})[_0x571c('0x12')](handleEntityNotFound(_0x5a4a3e,null))[_0x571c('0x12')](function(_0x56abf2){if(_0x56abf2){return _0x56abf2['update']({'UserId':_0x5ae96a[_0x571c('0x43')][_0x571c('0x65')],'read1stAt':_['isNil'](_0x56abf2[_0x571c('0x6b')])?moment()[_0x571c('0x60')](_0x571c('0x61')):undefined});}return null;})[_0x571c('0x12')](function(_0x4aa9fc){if(_0x4aa9fc){_0x2a2b66[_0x571c('0x6c')]=_0x4aa9fc[_0x571c('0x68')]({'plain':!![]});interaction_log[_0x571c('0x1b')](_0x571c('0x6d'),_0x5ae96a[_0x571c('0x66')]['id'],_0x5ae96a['user'][_0x571c('0x27')],_0x5ae96a[_0x571c('0x66')]['role'],_0x2a2b66[_0x571c('0x6c')]['id'],_0x5ae96a[_0x571c('0x43')]?JSON[_0x571c('0x17')](_0x5ae96a['body']):_0x571c('0x6e'));return respondWithRpcPromise('AcceptMessage',_0x571c('0x6f'),_0x2a2b66);}return null;})['then'](function(_0x2db4bf){var _0x2e2023=_0x571c('0x70')+_0x2db4bf[_0x571c('0x1a')][_0x571c('0x71')];return db['sequelize'][_0x571c('0x2e')](_0x2e2023,{'type':db[_0x571c('0x72')][_0x571c('0x73')][_0x571c('0x74')],'raw':!![]})[_0x571c('0x12')](function(_0x43effe){return _0x43effe;});})['then'](function(_0x1ec09c){if(_0x1ec09c){_0x2a2b66[_0x571c('0x1a')][_0x571c('0x75')]=_0x1ec09c[0x0];if(!_0x5ae96a[_0x571c('0x43')][_0x571c('0x65')])return;return db['User'][_0x571c('0x41')]({'where':{'id':_0x5ae96a[_0x571c('0x43')][_0x571c('0x65')],'role':_0x571c('0x67')},'attributes':['id',_0x571c('0x27'),_0x571c('0x76'),_0x571c('0x77'),_0x571c('0x78')],'raw':!![]});}return null;})[_0x571c('0x12')](function(_0xf274cd){if(!_0xf274cd)return null;_0x2a2b66[_0x571c('0x1a')][_0x571c('0x67')]=_0xf274cd;return _0x2a2b66;})[_0x571c('0x12')](function(_0x5c0cdc){if(_0x5c0cdc){if(_0x5ae96a[_0x571c('0x43')][_0x571c('0x79')]){_0x2a2b66[_0x571c('0x1a')][_0x571c('0x7a')]=util[_0x571c('0x60')]('SIP/%s',_0x5ae96a['user'][_0x571c('0x27')]);_0x2a2b66['message']['channel']=_0x2a2b66['channel'];_0x2a2b66[_0x571c('0x1a')]['motionChannel']=_0x2a2b66[_0x571c('0x7b')];_0x2a2b66[_0x571c('0x1a')]['event']='accept';_0x2a2b66[_0x571c('0x1a')][_0x571c('0x43')]=htmlToText[_0x571c('0x7c')](_0x2a2b66[_0x571c('0x1a')][_0x571c('0x43')]);return respondWithRpcPromise(_0x571c('0x7d'),_0x571c('0x7d'),{'event':_0x571c('0x7e'),'message':_0x2a2b66[_0x571c('0x1a')]},client9002)[_0x571c('0x12')](function(){return _0x2a2b66;});}return _0x2a2b66;}return null;})['then'](respondWithResult(_0x5a4a3e,null))[_0x571c('0x1c')](handleError(_0x5a4a3e,null));};exports[_0x571c('0x7f')]=function(_0x3b76cc,_0xc66664){var _0x592c03={'agent':{},'channel':_0x571c('0x62')};if(_0x3b76cc[_0x571c('0x43')]['id']){delete _0x3b76cc[_0x571c('0x43')]['id'];}_0x3b76cc['body'][_0x571c('0x65')]=_0x3b76cc[_0x571c('0x43')][_0x571c('0x65')]||_0x3b76cc[_0x571c('0x66')]['id'];_0x592c03[_0x571c('0x67')]['id']=_0x3b76cc[_0x571c('0x43')]['UserId'];return db[_0x571c('0x2a')][_0x571c('0x41')]({'where':{'id':_0x3b76cc[_0x571c('0x44')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xc66664,null))['then'](function(_0xb971ec){if(_0xb971ec){_0x592c03[_0x571c('0x1a')]=_0xb971ec[_0x571c('0x68')]({'plain':!![]});return db['MailInteraction']['find']({'where':{'id':_0xb971ec[_0x571c('0x6a')]}});}return null;})['then'](handleEntityNotFound(_0xc66664,null))['then'](function(_0x59c956){if(_0x59c956){_0x592c03[_0x571c('0x6c')]=_0x59c956[_0x571c('0x68')]({'plain':!![]});interaction_log['info'](_0x571c('0x80'),_0x3b76cc[_0x571c('0x66')]['id'],_0x3b76cc[_0x571c('0x66')][_0x571c('0x27')],_0x3b76cc[_0x571c('0x66')][_0x571c('0x81')],_0x592c03[_0x571c('0x6c')]['id'],_0x3b76cc['body']?JSON['stringify'](_0x3b76cc[_0x571c('0x43')]):'null');return respondWithRpcPromise('RejectMessage',_0x571c('0x82'),_0x592c03);}return null;})['then'](function(_0x4dff4e){var _0x96c1f='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4dff4e[_0x571c('0x1a')][_0x571c('0x71')];return db['sequelize'][_0x571c('0x2e')](_0x96c1f,{'type':db[_0x571c('0x72')][_0x571c('0x73')][_0x571c('0x74')],'raw':!![]})['then'](function(_0x297e2b){return _0x297e2b;});})['then'](function(_0x53d652){if(_0x53d652){_0x592c03[_0x571c('0x1a')][_0x571c('0x75')]=_0x53d652[0x0];if(!_0x3b76cc['body'][_0x571c('0x65')])return;return db[_0x571c('0x83')]['find']({'where':{'id':_0x3b76cc[_0x571c('0x43')]['UserId'],'role':'agent'},'attributes':['id','name',_0x571c('0x76'),_0x571c('0x77'),'internal'],'raw':!![]});}return null;})[_0x571c('0x12')](function(_0x51fc0b){if(!_0x51fc0b)return null;_0x592c03['message'][_0x571c('0x67')]=_0x51fc0b;return _0x592c03;})[_0x571c('0x12')](function(_0x4d6e7d){if(_0x4d6e7d){_0x4d6e7d['message'][_0x571c('0x7a')]=util[_0x571c('0x60')](_0x571c('0x84'),_0x3b76cc[_0x571c('0x66')][_0x571c('0x27')]);_0x4d6e7d[_0x571c('0x1a')][_0x571c('0x7b')]=_0x592c03[_0x571c('0x7b')];_0x4d6e7d[_0x571c('0x1a')]['motionChannel']=_0x592c03['channel'];_0x4d6e7d['message'][_0x571c('0x85')]=_0x571c('0x7f');_0x4d6e7d[_0x571c('0x1a')][_0x571c('0x43')]=htmlToText[_0x571c('0x7c')](_0x592c03[_0x571c('0x1a')]['body']);respondWithRpcPromise(_0x571c('0x7d'),'EventManager',{'event':_0x571c('0x86'),'message':_0x4d6e7d['message']},client9002);return _0x592c03;}return null;})[_0x571c('0x12')](respondWithResult(_0xc66664,null))[_0x571c('0x1c')](handleError(_0xc66664,null));};exports[_0x571c('0x87')]=function(_0x3372fb,_0x169979){var _0x38c0e7=moment()[_0x571c('0x88')]()[_0x571c('0x89')]();var _0x4e6e33=path[_0x571c('0x58')](config[_0x571c('0x8a')],_0x571c('0x8b'),_0x571c('0x8c'),_0x571c('0x8d'));var _0x35d643=path[_0x571c('0x58')](config[_0x571c('0x8a')],'server',_0x571c('0x8c'),_0x571c('0x57'));var _0xfdd4a1=util[_0x571c('0x60')](_0x571c('0x8e'),_0x38c0e7);return db['MailMessage'][_0x571c('0x41')]({'where':{'id':_0x3372fb[_0x571c('0x44')]['id']},'attributes':['id',_0x571c('0x43'),_0x571c('0x8f'),'to','cc','bcc',_0x571c('0x90'),_0x571c('0x91')],'include':_0x3372fb[_0x571c('0x2e')][_0x571c('0x57')]?[{'model':db[_0x571c('0x92')],'as':'Attachments'}]:undefined})['then'](handleEntityNotFound(_0x169979,null))[_0x571c('0x12')](function(_0x41ada7){if(_0x41ada7){var _0x49248a=_0x41ada7;var _0x43b5dc={'from':_0x49248a[_0x571c('0x8f')],'to':_0x49248a['to'],'subject':_0x49248a[_0x571c('0x90')],'html':htmlEntities[_0x571c('0x93')](_0x49248a[_0x571c('0x43')]),'headers':{'Date':moment(_0x49248a[_0x571c('0x91')])[_0x571c('0x60')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x41ada7['cc']){_0x43b5dc[_0x571c('0x94')]['Cc']=_0x41ada7['cc'];}if(_0x41ada7[_0x571c('0x95')]){_0x43b5dc[_0x571c('0x94')][_0x571c('0x96')]=_0x41ada7[_0x571c('0x95')];}return new BPromise(function(_0x1ab6b5,_0x32fe54){if(_0x41ada7[_0x571c('0x97')]){for(var _0x2e6626=0x0;_0x2e6626<_0x41ada7[_0x571c('0x97')][_0x571c('0x34')];_0x2e6626++){var _0x1eb5f4=_0x41ada7[_0x571c('0x97')][_0x2e6626];var _0x396e85=path['join'](_0x35d643,_0x1eb5f4[_0x571c('0x5a')]);if(fs[_0x571c('0x98')](_0x396e85)){_0x43b5dc[_0x571c('0x57')][_0x571c('0x99')]({'name':_0x1eb5f4[_0x571c('0x27')],'contentType':_0x1eb5f4[_0x571c('0x2d')],'data':fs['readFileSync'](_0x396e85)});}}}emlformat['build'](_0x43b5dc,function(_0x52fe79,_0x163ccb){if(_0x52fe79)return _0x32fe54(_0x52fe79);fs[_0x571c('0x9a')](path[_0x571c('0x58')](_0x4e6e33,_0xfdd4a1),_0x163ccb);return _0x1ab6b5(_0x163ccb);});});}})[_0x571c('0x12')](function(_0x37b6d0){if(_0x37b6d0){return _0x169979[_0x571c('0x87')](path['join'](_0x4e6e33,_0xfdd4a1),_0xfdd4a1,function(_0xd8ef00){if(!_0xd8ef00)fs['unlinkSync'](path[_0x571c('0x58')](_0x4e6e33,_0xfdd4a1));});}})[_0x571c('0x1c')](handleError(_0x169979,null));};
\ No newline at end of file
+var _0xda52=['MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','status','json','undefined','limit','count','offset','set','Content-Range','update','end','sendStatus','name','send','index','map','MailMessage','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','fields','find','body','params','destroy','create','secret','MailAccount','findOne','MailAccountId','CmList','CmContact','Contacts','updatedAt','MailServerOut','CloudProvider','Smtp','getSmtpOptions','attachments','root','server/files/attachments','List','ListId','List\x20not\x20found','sendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','mail','readAt','format','UserId','user','agent','get','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','MailInteraction','stringify','RejectMessage','rejectMessage','Sequelize','SIP/%s','reject','fromString','rejectmessage','download','unix','toString','join','files','tmp','from','bcc','subject','Attachment','decode','createdAt','headers','Bcc','Attachments','basename','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','bluebird','util','path','ioredis','html-to-text','../../components/parsers/qs','api','../../config/logger','../../config/environment','defaults','redis','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','http','client','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2ea98d,_0x2db302){var _0x3d4c08=function(_0x3f60bc){while(--_0x3f60bc){_0x2ea98d['push'](_0x2ea98d['shift']());}};_0x3d4c08(++_0x2db302);}(_0xda52,0x120));var _0x2da5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xda52[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x2da5('0x0'));var moment=require('moment');var BPromise=require(_0x2da5('0x1'));var util=require(_0x2da5('0x2'));var path=require(_0x2da5('0x3'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x2da5('0x4'));var htmlToText=require(_0x2da5('0x5'));var qs=require(_0x2da5('0x6'));var logger=require('../../config/logger')(_0x2da5('0x7'));var interaction_log=require(_0x2da5('0x8'))('mail-interactions');var config=require(_0x2da5('0x9'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x2da5('0xa')](config[_0x2da5('0xb')],{'host':_0x2da5('0xc'),'port':0x18eb});var socket=require(_0x2da5('0xd'))(new Redis(config[_0x2da5('0xb')]));var htmlEntities=require(_0x2da5('0xe'));require(_0x2da5('0xf'))[_0x2da5('0x10')](socket);var jayson=require(_0x2da5('0x11'));var client=jayson['client'][_0x2da5('0x12')]({'port':0x232c});var client9003=jayson[_0x2da5('0x13')][_0x2da5('0x12')]({'port':0x232b});var client9002=jayson['client'][_0x2da5('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x585f83,_0x208a43,_0x2bd3f1,_0x35205d){return new BPromise(function(_0x1da798,_0xcfefdf){var _0x2adfcf=_0x35205d||client;return _0x2adfcf[_0x2da5('0x14')](_0x585f83,_0x2bd3f1)[_0x2da5('0x15')](function(_0x565f5e){logger[_0x2da5('0x16')](_0x2da5('0x17'),_0x208a43,_0x2da5('0x18'));logger[_0x2da5('0x19')](_0x2da5('0x1a'),_0x208a43,'request\x20sent',JSON['stringify'](_0x565f5e));if(_0x565f5e[_0x2da5('0x1b')]){if(_0x565f5e[_0x2da5('0x1b')][_0x2da5('0x1c')]===0x1f4){logger[_0x2da5('0x1b')]('MailMessage,\x20%s,\x20%s',_0x208a43,_0x565f5e['error']['message']);return _0xcfefdf(_0x565f5e[_0x2da5('0x1b')]['message']);}logger['error'](_0x2da5('0x17'),_0x208a43,_0x565f5e[_0x2da5('0x1b')][_0x2da5('0x1d')]);return _0x1da798(_0x565f5e['error'][_0x2da5('0x1d')]);}else{logger['info'](_0x2da5('0x17'),_0x208a43,'request\x20sent');_0x1da798(_0x565f5e['result'][_0x2da5('0x1d')]);}})[_0x2da5('0x1e')](function(_0x52e178){logger[_0x2da5('0x1b')](_0x2da5('0x17'),_0x208a43,_0x52e178);_0xcfefdf(_0x52e178);});});}function respondWithResult(_0x1690a0,_0x557982){_0x557982=_0x557982||0xc8;return function(_0x3fcdc3){if(_0x3fcdc3){return _0x1690a0[_0x2da5('0x1f')](_0x557982)[_0x2da5('0x20')](_0x3fcdc3);}};}function respondWithFilteredResult(_0x2e6d8f,_0x4a8e19){return function(_0x55aa90){if(_0x55aa90){var _0x4e829f=typeof _0x4a8e19['offset']===_0x2da5('0x21')&&typeof _0x4a8e19[_0x2da5('0x22')]==='undefined';var _0x262565=_0x55aa90[_0x2da5('0x23')];var _0x4921c3=_0x4e829f?0x0:_0x4a8e19[_0x2da5('0x24')];var _0x245ee6=_0x4e829f?_0x55aa90['count']:_0x4a8e19['offset']+_0x4a8e19[_0x2da5('0x22')];var _0x2c1af9;if(_0x245ee6>=_0x262565){_0x245ee6=_0x262565;_0x2c1af9=0xc8;}else{_0x2c1af9=0xce;}_0x2e6d8f[_0x2da5('0x1f')](_0x2c1af9);return _0x2e6d8f[_0x2da5('0x25')](_0x2da5('0x26'),_0x4921c3+'-'+_0x245ee6+'/'+_0x262565)[_0x2da5('0x20')](_0x55aa90);}return null;};}function saveUpdates(_0x414f54){return function(_0x3434f8){if(_0x3434f8){return _0x3434f8[_0x2da5('0x27')](_0x414f54)['then'](function(_0xb39cc7){return _0xb39cc7;});}return null;};}function removeEntity(_0x17df80){return function(_0x1dd0a4){if(_0x1dd0a4){return _0x1dd0a4['destroy']()['then'](function(){_0x17df80[_0x2da5('0x1f')](0xcc)[_0x2da5('0x28')]();});}};}function handleEntityNotFound(_0x12ee92){return function(_0x3b50a1){if(!_0x3b50a1){_0x12ee92[_0x2da5('0x29')](0x194);}return _0x3b50a1;};}function handleError(_0x44b83d,_0x2fd576){_0x2fd576=_0x2fd576||0x1f4;return function(_0xce5589){logger[_0x2da5('0x1b')](_0xce5589['stack']);if(_0xce5589[_0x2da5('0x2a')]){delete _0xce5589[_0x2da5('0x2a')];}_0x44b83d['status'](_0x2fd576)[_0x2da5('0x2b')](_0xce5589);};}exports[_0x2da5('0x2c')]=function(_0x20e900,_0xbf7fcf){var _0x361478={},_0x2192b6={},_0x31d77a={'count':0x0,'rows':[]};var _0x161e6b=_[_0x2da5('0x2d')](db[_0x2da5('0x2e')][_0x2da5('0x2f')],function(_0x2e086e){return{'name':_0x2e086e[_0x2da5('0x30')],'type':_0x2e086e[_0x2da5('0x31')]['key']};});_0x2192b6[_0x2da5('0x32')]=_[_0x2da5('0x2d')](_0x161e6b,'name');_0x2192b6[_0x2da5('0x33')]=_[_0x2da5('0x34')](_0x20e900[_0x2da5('0x33')]);_0x2192b6[_0x2da5('0x35')]=_[_0x2da5('0x36')](_0x2192b6[_0x2da5('0x32')],_0x2192b6[_0x2da5('0x33')]);_0x361478['attributes']=_[_0x2da5('0x36')](_0x2192b6[_0x2da5('0x32')],qs['fields'](_0x20e900[_0x2da5('0x33')]['fields']));_0x361478[_0x2da5('0x37')]=_0x361478[_0x2da5('0x37')][_0x2da5('0x38')]?_0x361478[_0x2da5('0x37')]:_0x2192b6['model'];if(!_0x20e900['query'][_0x2da5('0x39')](_0x2da5('0x3a'))){_0x361478[_0x2da5('0x22')]=qs[_0x2da5('0x22')](_0x20e900['query'][_0x2da5('0x22')]);_0x361478[_0x2da5('0x24')]=qs[_0x2da5('0x24')](_0x20e900[_0x2da5('0x33')][_0x2da5('0x24')]);}_0x361478['order']=qs[_0x2da5('0x3b')](_0x20e900[_0x2da5('0x33')][_0x2da5('0x3b')]);_0x361478['where']=qs[_0x2da5('0x35')](_[_0x2da5('0x3c')](_0x20e900[_0x2da5('0x33')],_0x2192b6['filters']),_0x161e6b);if(_0x20e900['query'][_0x2da5('0x3d')]){_0x361478[_0x2da5('0x3e')]=_[_0x2da5('0x3f')](_0x361478[_0x2da5('0x3e')],{'$or':_[_0x2da5('0x2d')](_0x161e6b,function(_0x21c69b){if(_0x21c69b[_0x2da5('0x31')]!==_0x2da5('0x40')){var _0x26b85={};_0x26b85[_0x21c69b['name']]={'$like':'%'+_0x20e900[_0x2da5('0x33')]['filter']+'%'};return _0x26b85;}})});}_0x361478=_['merge']({},_0x361478,_0x20e900[_0x2da5('0x41')]);var _0x5ccf09={'where':_0x361478[_0x2da5('0x3e')]};return db['MailMessage'][_0x2da5('0x23')](_0x5ccf09)[_0x2da5('0x15')](function(_0x5d8059){_0x31d77a[_0x2da5('0x23')]=_0x5d8059;if(_0x20e900[_0x2da5('0x33')][_0x2da5('0x42')]){_0x361478[_0x2da5('0x43')]=[{'all':!![]}];}return db[_0x2da5('0x2e')]['findAll'](_0x361478);})[_0x2da5('0x15')](function(_0x54e9e9){_0x31d77a['rows']=_0x54e9e9;return _0x31d77a;})[_0x2da5('0x15')](respondWithFilteredResult(_0xbf7fcf,_0x361478))['catch'](handleError(_0xbf7fcf,null));};exports['show']=function(_0x34c686,_0x3d9a0c){var _0x3d5597={'raw':!![],'where':{'id':_0x34c686['params']['id']}},_0x330873={};_0x330873[_0x2da5('0x32')]=_['keys'](db[_0x2da5('0x2e')]['rawAttributes']);_0x330873['query']=_[_0x2da5('0x34')](_0x34c686[_0x2da5('0x33')]);_0x330873[_0x2da5('0x35')]=_[_0x2da5('0x36')](_0x330873[_0x2da5('0x32')],_0x330873['query']);_0x3d5597[_0x2da5('0x37')]=_[_0x2da5('0x36')](_0x330873[_0x2da5('0x32')],qs[_0x2da5('0x44')](_0x34c686[_0x2da5('0x33')]['fields']));_0x3d5597[_0x2da5('0x37')]=_0x3d5597[_0x2da5('0x37')][_0x2da5('0x38')]?_0x3d5597['attributes']:_0x330873[_0x2da5('0x32')];if(_0x34c686[_0x2da5('0x33')][_0x2da5('0x42')]){_0x3d5597[_0x2da5('0x43')]=[{'all':!![]}];}_0x3d5597=_[_0x2da5('0x3f')]({},_0x3d5597,_0x34c686[_0x2da5('0x41')]);return db[_0x2da5('0x2e')][_0x2da5('0x45')](_0x3d5597)['then'](handleEntityNotFound(_0x3d9a0c,null))[_0x2da5('0x15')](respondWithResult(_0x3d9a0c,null))[_0x2da5('0x1e')](handleError(_0x3d9a0c,null));};exports[_0x2da5('0x27')]=function(_0xfde343,_0x5c81a7){if(_0xfde343['body']['id']){delete _0xfde343[_0x2da5('0x46')]['id'];}return db[_0x2da5('0x2e')]['find']({'where':{'id':_0xfde343[_0x2da5('0x47')]['id']}})[_0x2da5('0x15')](handleEntityNotFound(_0x5c81a7,null))['then'](saveUpdates(_0xfde343['body'],null))[_0x2da5('0x15')](respondWithResult(_0x5c81a7,null))[_0x2da5('0x1e')](handleError(_0x5c81a7,null));};exports[_0x2da5('0x48')]=function(_0x13bffa,_0x3fb105){return db['MailMessage'][_0x2da5('0x45')]({'where':{'id':_0x13bffa[_0x2da5('0x47')]['id']}})[_0x2da5('0x15')](handleEntityNotFound(_0x3fb105,null))['then'](removeEntity(_0x3fb105,null))[_0x2da5('0x1e')](handleError(_0x3fb105,null));};exports['describe']=function(_0x467d57,_0x1fb8fd){return db[_0x2da5('0x2e')]['describe']()[_0x2da5('0x15')](respondWithResult(_0x1fb8fd,null))[_0x2da5('0x1e')](handleError(_0x1fb8fd,null));};exports['create']=function(_0xcd89e0,_0x1bc5c4){return db['MailMessage'][_0x2da5('0x49')](_0xcd89e0[_0x2da5('0x46')])['then'](function(_0x16911c){if(_0x16911c){if(_0x16911c['direction']==='out'&&!_0x16911c[_0x2da5('0x4a')]){var _0x6874c9,_0x2893c2,_0x48b402;if(_0xcd89e0[_0x2da5('0x46')]['to']){_0x2893c2=_0xcd89e0['body']['to']['split'](',')[0x0];}return db[_0x2da5('0x4b')][_0x2da5('0x4c')]({'where':{'id':_0x16911c[_0x2da5('0x4d')]},'include':[{'model':db[_0x2da5('0x4e')],'as':'List','include':[{'model':db[_0x2da5('0x4f')],'as':_0x2da5('0x50'),'where':{'email':_0x2893c2},'limit':0x1,'order':[[_0x2da5('0x51'),'DESC']]}]},{'model':db[_0x2da5('0x52')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x2da5('0x53')],'as':_0x2da5('0x53'),'raw':!![]}]}]})['then'](function(_0x5e191d){_0x6874c9=_0x5e191d;if(!_0x6874c9||!_0x6874c9[_0x2da5('0x54')])return;var _0x343fc6=_0x6874c9[_0x2da5('0x55')]();if(_0xcd89e0[_0x2da5('0x46')][_0x2da5('0x56')]&&_0xcd89e0['body'][_0x2da5('0x56')][_0x2da5('0x38')]){for(var _0x33b610=0x0;_0x33b610<_0xcd89e0['body']['attachments'][_0x2da5('0x38')];_0x33b610+=0x1){_0xcd89e0[_0x2da5('0x46')]['attachments'][_0x33b610]={'filename':_0xcd89e0[_0x2da5('0x46')][_0x2da5('0x56')][_0x33b610][_0x2da5('0x2a')],'path':path['join'](config[_0x2da5('0x57')],_0x2da5('0x58'),_0xcd89e0[_0x2da5('0x46')][_0x2da5('0x56')][_0x33b610]['basename'])};}}_0x48b402={'account':_0x343fc6,'message':_0xcd89e0['body']};return;})['then'](function(){if(_0x6874c9[_0x2da5('0x59')]){if(_0x6874c9[_0x2da5('0x59')]['Contacts'][_0x2da5('0x38')]){return _0x6874c9['List']['Contacts'][0x0];}else{return db[_0x2da5('0x4f')][_0x2da5('0x49')](_[_0x2da5('0xa')](_0xcd89e0[_0x2da5('0x46')],{'firstName':_0xcd89e0[_0x2da5('0x46')]['to'],'email':_0xcd89e0['body']['to'],'phone':_0xcd89e0[_0x2da5('0x46')]['to'],'ListId':_0x6874c9[_0x2da5('0x5a')]}));}}else{throw new Error(_0x2da5('0x5b'));}})[_0x2da5('0x15')](function(){if(_0x48b402){return respondWithRpcPromise('SendMail',_0x2da5('0x5c'),_0x48b402,client9003)[_0x2da5('0x15')](function(_0x4b04fa){return _0x16911c['update']({'read':!![],'messageId':_0x4b04fa[_0x2da5('0x5d')],'sentAt':moment()['format'](_0x2da5('0x5e'))});})[_0x2da5('0x1e')](function(_0x57afda){logger[_0x2da5('0x1b')]('%s',JSON['stringify'](_0x57afda));return _0x16911c;});}return _0x16911c;});}return _0x16911c;}})[_0x2da5('0x15')](respondWithResult(_0x1bc5c4,0xc9))[_0x2da5('0x1e')](handleError(_0x1bc5c4,null));};exports[_0x2da5('0x5f')]=function(_0x90ccc2,_0x280c02){var _0x569788={'agent':{},'channel':_0x2da5('0x60')};if(_0x90ccc2[_0x2da5('0x46')]['id']){delete _0x90ccc2[_0x2da5('0x46')]['id'];}_0x90ccc2[_0x2da5('0x46')]['read']=!![];_0x90ccc2[_0x2da5('0x46')][_0x2da5('0x61')]=moment()[_0x2da5('0x62')]('YYYY-MM-DD\x20HH:mm:ss');_0x90ccc2['body'][_0x2da5('0x63')]=_0x90ccc2[_0x2da5('0x46')][_0x2da5('0x63')]||_0x90ccc2[_0x2da5('0x64')]['id'];_0x569788[_0x2da5('0x65')]['id']=_0x90ccc2[_0x2da5('0x46')][_0x2da5('0x63')];return db['MailMessage']['find']({'where':{'id':_0x90ccc2[_0x2da5('0x47')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x280c02,null))[_0x2da5('0x15')](saveUpdates(_0x90ccc2[_0x2da5('0x46')],null))[_0x2da5('0x15')](function(_0x78cd82){if(_0x78cd82){_0x569788[_0x2da5('0x1d')]=_0x78cd82[_0x2da5('0x66')]({'plain':!![]});return db['MailInteraction'][_0x2da5('0x45')]({'where':{'id':_0x78cd82[_0x2da5('0x67')]}});}return null;})[_0x2da5('0x15')](handleEntityNotFound(_0x280c02,null))[_0x2da5('0x15')](function(_0x4c1790){if(_0x4c1790){return _0x4c1790[_0x2da5('0x27')]({'UserId':_0x90ccc2[_0x2da5('0x46')][_0x2da5('0x63')],'read1stAt':_['isNil'](_0x4c1790[_0x2da5('0x68')])?moment()['format'](_0x2da5('0x5e')):undefined});}return null;})[_0x2da5('0x15')](function(_0x1e7055){if(_0x1e7055){_0x569788[_0x2da5('0x69')]=_0x1e7055[_0x2da5('0x66')]({'plain':!![]});interaction_log[_0x2da5('0x16')](_0x2da5('0x6a'),_0x90ccc2[_0x2da5('0x64')]['id'],_0x90ccc2[_0x2da5('0x64')]['name'],_0x90ccc2[_0x2da5('0x64')][_0x2da5('0x6b')],_0x569788[_0x2da5('0x69')]['id'],_0x90ccc2[_0x2da5('0x46')]?JSON['stringify'](_0x90ccc2[_0x2da5('0x46')]):'null');return respondWithRpcPromise('AcceptMessage',_0x2da5('0x6c'),_0x569788);}return null;})[_0x2da5('0x15')](function(_0x569340){var _0x91d6f8=_0x2da5('0x6d')+_0x569340[_0x2da5('0x1d')][_0x2da5('0x6e')];return db[_0x2da5('0x6f')]['query'](_0x91d6f8,{'type':db['Sequelize'][_0x2da5('0x70')][_0x2da5('0x71')],'raw':!![]})[_0x2da5('0x15')](function(_0x498e3c){return _0x498e3c;});})['then'](function(_0x22eb44){if(_0x22eb44){_0x569788[_0x2da5('0x1d')][_0x2da5('0x72')]=_0x22eb44[0x0];if(!_0x90ccc2[_0x2da5('0x46')][_0x2da5('0x63')])return;return db[_0x2da5('0x73')][_0x2da5('0x45')]({'where':{'id':_0x90ccc2['body'][_0x2da5('0x63')],'role':_0x2da5('0x65')},'attributes':['id',_0x2da5('0x2a'),_0x2da5('0x74'),_0x2da5('0x75'),_0x2da5('0x76')],'raw':!![]});}return null;})['then'](function(_0x447a8e){if(!_0x447a8e)return null;_0x569788[_0x2da5('0x1d')][_0x2da5('0x65')]=_0x447a8e;return _0x569788;})[_0x2da5('0x15')](function(_0x52f634){if(_0x52f634){if(_0x90ccc2['body'][_0x2da5('0x77')]){_0x569788[_0x2da5('0x1d')][_0x2da5('0x78')]=util[_0x2da5('0x62')]('SIP/%s',_0x90ccc2[_0x2da5('0x64')]['name']);_0x569788[_0x2da5('0x1d')][_0x2da5('0x79')]=_0x569788['channel'];_0x569788[_0x2da5('0x1d')][_0x2da5('0x7a')]=_0x569788[_0x2da5('0x79')];_0x569788[_0x2da5('0x1d')][_0x2da5('0x7b')]=_0x2da5('0x5f');_0x569788['message'][_0x2da5('0x46')]=htmlToText['fromString'](_0x569788[_0x2da5('0x1d')][_0x2da5('0x46')]);return respondWithRpcPromise(_0x2da5('0x7c'),_0x2da5('0x7c'),{'event':_0x2da5('0x7d'),'message':_0x569788[_0x2da5('0x1d')]},client9002)[_0x2da5('0x15')](function(){return _0x569788;});}return _0x569788;}return null;})[_0x2da5('0x15')](respondWithResult(_0x280c02,null))[_0x2da5('0x1e')](handleError(_0x280c02,null));};exports['reject']=function(_0x247cbb,_0x4bf149){var _0x3c4108={'agent':{},'channel':_0x2da5('0x60')};if(_0x247cbb[_0x2da5('0x46')]['id']){delete _0x247cbb['body']['id'];}_0x247cbb[_0x2da5('0x46')][_0x2da5('0x63')]=_0x247cbb[_0x2da5('0x46')]['UserId']||_0x247cbb[_0x2da5('0x64')]['id'];_0x3c4108[_0x2da5('0x65')]['id']=_0x247cbb['body'][_0x2da5('0x63')];return db[_0x2da5('0x2e')][_0x2da5('0x45')]({'where':{'id':_0x247cbb[_0x2da5('0x47')]['id'],'UserId':null}})[_0x2da5('0x15')](handleEntityNotFound(_0x4bf149,null))[_0x2da5('0x15')](function(_0x7aea77){if(_0x7aea77){_0x3c4108[_0x2da5('0x1d')]=_0x7aea77['get']({'plain':!![]});return db[_0x2da5('0x7e')][_0x2da5('0x45')]({'where':{'id':_0x7aea77[_0x2da5('0x67')]}});}return null;})['then'](handleEntityNotFound(_0x4bf149,null))['then'](function(_0x402082){if(_0x402082){_0x3c4108[_0x2da5('0x69')]=_0x402082[_0x2da5('0x66')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x247cbb['user']['id'],_0x247cbb[_0x2da5('0x64')]['name'],_0x247cbb[_0x2da5('0x64')]['role'],_0x3c4108['interaction']['id'],_0x247cbb[_0x2da5('0x46')]?JSON[_0x2da5('0x7f')](_0x247cbb[_0x2da5('0x46')]):'null');return respondWithRpcPromise(_0x2da5('0x80'),_0x2da5('0x81'),_0x3c4108);}return null;})['then'](function(_0x3a9c54){var _0x1c7712=_0x2da5('0x6d')+_0x3a9c54[_0x2da5('0x1d')]['ContactId'];return db['sequelize'][_0x2da5('0x33')](_0x1c7712,{'type':db[_0x2da5('0x82')][_0x2da5('0x70')][_0x2da5('0x71')],'raw':!![]})[_0x2da5('0x15')](function(_0x393183){return _0x393183;});})['then'](function(_0x23941e){if(_0x23941e){_0x3c4108[_0x2da5('0x1d')][_0x2da5('0x72')]=_0x23941e[0x0];if(!_0x247cbb[_0x2da5('0x46')][_0x2da5('0x63')])return;return db[_0x2da5('0x73')]['find']({'where':{'id':_0x247cbb[_0x2da5('0x46')][_0x2da5('0x63')],'role':'agent'},'attributes':['id',_0x2da5('0x2a'),_0x2da5('0x74'),_0x2da5('0x75'),'internal'],'raw':!![]});}return null;})[_0x2da5('0x15')](function(_0x31582b){if(!_0x31582b)return null;_0x3c4108['message'][_0x2da5('0x65')]=_0x31582b;return _0x3c4108;})[_0x2da5('0x15')](function(_0x197ad6){if(_0x197ad6){_0x197ad6[_0x2da5('0x1d')][_0x2da5('0x78')]=util['format'](_0x2da5('0x83'),_0x247cbb[_0x2da5('0x64')][_0x2da5('0x2a')]);_0x197ad6[_0x2da5('0x1d')][_0x2da5('0x79')]=_0x3c4108['channel'];_0x197ad6['message'][_0x2da5('0x7a')]=_0x3c4108[_0x2da5('0x79')];_0x197ad6[_0x2da5('0x1d')]['event']=_0x2da5('0x84');_0x197ad6['message'][_0x2da5('0x46')]=htmlToText[_0x2da5('0x85')](_0x3c4108[_0x2da5('0x1d')][_0x2da5('0x46')]);respondWithRpcPromise(_0x2da5('0x7c'),_0x2da5('0x7c'),{'event':_0x2da5('0x86'),'message':_0x197ad6[_0x2da5('0x1d')]},client9002);return _0x3c4108;}return null;})[_0x2da5('0x15')](respondWithResult(_0x4bf149,null))[_0x2da5('0x1e')](handleError(_0x4bf149,null));};exports[_0x2da5('0x87')]=function(_0x346f91,_0x397fd6){var _0x48bbdc=moment()[_0x2da5('0x88')]()[_0x2da5('0x89')]();var _0x53e0c1=path[_0x2da5('0x8a')](config[_0x2da5('0x57')],'server',_0x2da5('0x8b'),_0x2da5('0x8c'));var _0x944dda=path['join'](config['root'],'server',_0x2da5('0x8b'),'attachments');var _0x244efe=util['format']('message-%s.eml',_0x48bbdc);return db[_0x2da5('0x2e')]['find']({'where':{'id':_0x346f91[_0x2da5('0x47')]['id']},'attributes':['id',_0x2da5('0x46'),_0x2da5('0x8d'),'to','cc',_0x2da5('0x8e'),_0x2da5('0x8f'),'createdAt'],'include':_0x346f91[_0x2da5('0x33')][_0x2da5('0x56')]?[{'model':db[_0x2da5('0x90')],'as':'Attachments'}]:undefined})[_0x2da5('0x15')](handleEntityNotFound(_0x397fd6,null))[_0x2da5('0x15')](function(_0x32b90d){if(_0x32b90d){var _0x1df6ce=_0x32b90d;var _0x10b1cb={'from':_0x1df6ce[_0x2da5('0x8d')],'to':_0x1df6ce['to'],'subject':_0x1df6ce['subject'],'html':htmlEntities[_0x2da5('0x91')](_0x1df6ce[_0x2da5('0x46')]),'headers':{'Date':moment(_0x1df6ce[_0x2da5('0x92')])[_0x2da5('0x62')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x32b90d['cc']){_0x10b1cb[_0x2da5('0x93')]['Cc']=_0x32b90d['cc'];}if(_0x32b90d[_0x2da5('0x8e')]){_0x10b1cb[_0x2da5('0x93')][_0x2da5('0x94')]=_0x32b90d['bcc'];}return new BPromise(function(_0x1e68a8,_0x177e09){if(_0x32b90d[_0x2da5('0x95')]){for(var _0x1cd727=0x0;_0x1cd727<_0x32b90d[_0x2da5('0x95')][_0x2da5('0x38')];_0x1cd727++){var _0x169a2a=_0x32b90d[_0x2da5('0x95')][_0x1cd727];var _0x5beebe=path[_0x2da5('0x8a')](_0x944dda,_0x169a2a[_0x2da5('0x96')]);if(fs[_0x2da5('0x97')](_0x5beebe)){_0x10b1cb[_0x2da5('0x56')][_0x2da5('0x98')]({'name':_0x169a2a[_0x2da5('0x2a')],'contentType':_0x169a2a['type'],'data':fs[_0x2da5('0x99')](_0x5beebe)});}}}emlformat[_0x2da5('0x9a')](_0x10b1cb,function(_0x420e5c,_0xd9098e){if(_0x420e5c)return _0x177e09(_0x420e5c);fs[_0x2da5('0x9b')](path[_0x2da5('0x8a')](_0x53e0c1,_0x244efe),_0xd9098e);return _0x1e68a8(_0xd9098e);});});}})[_0x2da5('0x15')](function(_0x2c3949){if(_0x2c3949){return _0x397fd6[_0x2da5('0x87')](path[_0x2da5('0x8a')](_0x53e0c1,_0x244efe),_0x244efe,function(_0x5bf6bc){if(!_0x5bf6bc)fs[_0x2da5('0x9c')](path[_0x2da5('0x8a')](_0x53e0c1,_0x244efe));});}})[_0x2da5('0x1e')](handleError(_0x397fd6,null));};
\ No newline at end of file
index d7d1d39..8722187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed91=['setMaxListeners','save','update','emit','hook','exports','../../mysqldb','MailMessage'];(function(_0x488b85,_0x10ec23){var _0x59d07d=function(_0x16838b){while(--_0x16838b){_0x488b85['push'](_0x488b85['shift']());}};_0x59d07d(++_0x10ec23);}(_0xed91,0x19e));var _0x1ed9=function(_0x3be19,_0x2c6bd8){_0x3be19=_0x3be19-0x0;var _0x4d8c32=_0xed91[_0x3be19];return _0x4d8c32;};'use strict';var EventEmitter=require('events');var MailMessage=require(_0x1ed9('0x0'))['db'][_0x1ed9('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x1ed9('0x2')](0x0);var events={'afterCreate':_0x1ed9('0x3'),'afterUpdate':_0x1ed9('0x4'),'afterDestroy':'remove'};function emitEvent(_0x55d53f){return function(_0x56ba91,_0x1e86ac,_0xfe113d){MailMessageEvents[_0x1ed9('0x5')](_0x55d53f+':'+_0x56ba91['id'],_0x56ba91);MailMessageEvents[_0x1ed9('0x5')](_0x55d53f,_0x56ba91);_0xfe113d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage[_0x1ed9('0x6')](e,emitEvent(event));}}module[_0x1ed9('0x7')]=MailMessageEvents;
\ No newline at end of file
+var _0xf4d6=['../../mysqldb','MailMessage','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x4a0432,_0x483194){var _0x2297ec=function(_0x320df6){while(--_0x320df6){_0x4a0432['push'](_0x4a0432['shift']());}};_0x2297ec(++_0x483194);}(_0xf4d6,0x117));var _0x6f4d=function(_0x19526a,_0xddfd18){_0x19526a=_0x19526a-0x0;var _0x3c2f1f=_0xf4d6[_0x19526a];return _0x3c2f1f;};'use strict';var EventEmitter=require(_0x6f4d('0x0'));var MailMessage=require(_0x6f4d('0x1'))['db'][_0x6f4d('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x6f4d('0x3')](0x0);var events={'afterCreate':_0x6f4d('0x4'),'afterUpdate':_0x6f4d('0x5'),'afterDestroy':'remove'};function emitEvent(_0x12c320){return function(_0x2bd9f0,_0x342778,_0x4818e8){MailMessageEvents[_0x6f4d('0x6')](_0x12c320+':'+_0x2bd9f0['id'],_0x2bd9f0);MailMessageEvents['emit'](_0x12c320,_0x2bd9f0);_0x4818e8(null);};}for(var e in events){if(events[_0x6f4d('0x7')](e)){var event=events[e];MailMessage[_0x6f4d('0x8')](e,emitEvent(event));}}module[_0x6f4d('0x9')]=MailMessageEvents;
\ No newline at end of file
index add8a1b..7708224 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed4b=['catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','html-to-text','path','rimraf','./mailMessage.attributes','MailMessage','mail_messages','messageId','fti_mail_messages','subject','FULLTEXT','body','models','toLowerCase','direction','out','secret','isNil','MailInteraction','MailInteractionId','then','update','createdAt'];(function(_0x20d5b2,_0x256831){var _0xa268a1=function(_0x49b212){while(--_0x49b212){_0x20d5b2['push'](_0x20d5b2['shift']());}};_0xa268a1(++_0x256831);}(_0xed4b,0x1c5));var _0xbed4=function(_0x328bae,_0x4289c7){_0x328bae=_0x328bae-0x0;var _0x58a8d7=_0xed4b[_0x328bae];return _0x58a8d7;};'use strict';var _=require(_0xbed4('0x0'));var util=require(_0xbed4('0x1'));var logger=require(_0xbed4('0x2'))('api');var moment=require(_0xbed4('0x3'));var BPromise=require(_0xbed4('0x4'));var rp=require('request-promise');var htmlToText=require(_0xbed4('0x5'));var fs=require('fs');var path=require(_0xbed4('0x6'));var rimraf=require(_0xbed4('0x7'));var config=require('../../config/environment');var attributes=require(_0xbed4('0x8'));module['exports']=function(_0x3a313b,_0x504b7b){return _0x3a313b['define'](_0xbed4('0x9'),attributes,{'tableName':_0xbed4('0xa'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xbed4('0xb')]},{'name':_0xbed4('0xc'),'fields':['plainBody',_0xbed4('0xd')],'type':_0xbed4('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x27bdc0,_0x2393fc,_0x3c86e1){if(_0x27bdc0['body']){_0x27bdc0['plainBody']=htmlToText['fromString'](_0x27bdc0[_0xbed4('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3c86e1(null,_0x2393fc);},'afterCreate':function(_0x32c045,_0xac2deb,_0x23fdbe){var _0x296ba9=_0x3a313b[_0xbed4('0x10')];var _0x47aeee=_0x32c045['get']({'plain':!![]});if(_0x47aeee['direction'][_0xbed4('0x11')]()==='in'||_0x47aeee[_0xbed4('0x12')][_0xbed4('0x11')]()===_0xbed4('0x13')&&!_0x47aeee[_0xbed4('0x14')]&&!_[_0xbed4('0x15')](_0x47aeee['UserId'])){_0x296ba9[_0xbed4('0x16')]['findOne']({'where':{'id':_0x47aeee[_0xbed4('0x17')]}})[_0xbed4('0x18')](function(_0x67a4fb){if(_0x67a4fb){_0x67a4fb[_0xbed4('0x19')]({'lastMsgAt':_0x47aeee[_0xbed4('0x1a')],'lastMsgDirection':_0x47aeee['direction'][_0xbed4('0x11')]()});}})[_0xbed4('0x1b')](function(_0x1b2e35){console[_0xbed4('0x1c')](_0x1b2e35);});}_0x23fdbe();}},'charset':'utf8mb4','collate':_0xbed4('0x1d')});};
\ No newline at end of file
+var _0xa4da=['html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','MailMessage','mail_messages','messageId','fti_mail_messages','subject','FULLTEXT','body','models','direction','toLowerCase','out','isNil','UserId','MailInteraction','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','request-promise'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0xa4da,0x16f));var _0xaa4d=function(_0x37b3e5,_0x33b516){_0x37b3e5=_0x37b3e5-0x0;var _0x207f20=_0xa4da[_0x37b3e5];return _0x207f20;};'use strict';var _=require('lodash');var util=require(_0xaa4d('0x0'));var logger=require(_0xaa4d('0x1'))(_0xaa4d('0x2'));var moment=require(_0xaa4d('0x3'));var BPromise=require('bluebird');var rp=require(_0xaa4d('0x4'));var htmlToText=require(_0xaa4d('0x5'));var fs=require('fs');var path=require(_0xaa4d('0x6'));var rimraf=require(_0xaa4d('0x7'));var config=require(_0xaa4d('0x8'));var attributes=require(_0xaa4d('0x9'));module['exports']=function(_0x5357d1,_0xe83f2b){return _0x5357d1['define'](_0xaa4d('0xa'),attributes,{'tableName':_0xaa4d('0xb'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xaa4d('0xc')]},{'name':_0xaa4d('0xd'),'fields':['plainBody',_0xaa4d('0xe')],'type':_0xaa4d('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x336493,_0x2bd1e5,_0x21ecec){if(_0x336493['body']){_0x336493['plainBody']=htmlToText['fromString'](_0x336493[_0xaa4d('0x10')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x21ecec(null,_0x2bd1e5);},'afterCreate':function(_0x46da77,_0x46f11a,_0x27475a){var _0x3fe5e8=_0x5357d1[_0xaa4d('0x11')];var _0x3a8dbb=_0x46da77['get']({'plain':!![]});if(_0x3a8dbb['direction']['toLowerCase']()==='in'||_0x3a8dbb[_0xaa4d('0x12')][_0xaa4d('0x13')]()===_0xaa4d('0x14')&&!_0x3a8dbb['secret']&&!_[_0xaa4d('0x15')](_0x3a8dbb[_0xaa4d('0x16')])){_0x3fe5e8[_0xaa4d('0x17')]['findOne']({'where':{'id':_0x3a8dbb['MailInteractionId']}})[_0xaa4d('0x18')](function(_0x3a9877){if(_0x3a9877){_0x3a9877[_0xaa4d('0x19')]({'lastMsgAt':_0x3a8dbb[_0xaa4d('0x1a')],'lastMsgDirection':_0x3a8dbb[_0xaa4d('0x12')]['toLowerCase']()});}})[_0xaa4d('0x1b')](function(_0x30f1aa){console[_0xaa4d('0x1c')](_0x30f1aa);});}_0x27475a();}},'charset':_0xaa4d('0x1d'),'collate':_0xaa4d('0x1e')});};
\ No newline at end of file
index 4da9cff..7113b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7708=['info','MailMessage,\x20%s,\x20%s','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateMailMessage','MailMessage','create','options','raw','catch','lodash','util','bluebird','../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','register','request','then'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x7708,0x188));var _0x8770=function(_0x359bbe,_0x5b7fcc){_0x359bbe=_0x359bbe-0x0;var _0x1b3353=_0x7708[_0x359bbe];return _0x1b3353;};'use strict';var _=require(_0x8770('0x0'));var util=require(_0x8770('0x1'));var moment=require('moment');var BPromise=require(_0x8770('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8770('0x3'))(_0x8770('0x4'));var config=require('../../config/environment');var jayson=require(_0x8770('0x5'));var client=jayson['client'][_0x8770('0x6')]({'port':0x232a});config[_0x8770('0x7')]=_[_0x8770('0x8')](config[_0x8770('0x7')],{'host':_0x8770('0x9'),'port':0x18eb});var socket=require(_0x8770('0xa'))(new Redis(config[_0x8770('0x7')]));require('./mailMessage.socket')[_0x8770('0xb')](socket);function respondWithRpcPromise(_0x2ca830,_0x3f357a,_0x4e4551){return new BPromise(function(_0x390af0,_0x10e4a3){return client[_0x8770('0xc')](_0x2ca830,_0x4e4551)[_0x8770('0xd')](function(_0x4a0ca1){logger[_0x8770('0xe')](_0x8770('0xf'),_0x3f357a,_0x8770('0x10'));logger['debug'](_0x8770('0x11'),_0x3f357a,_0x8770('0x10'),JSON[_0x8770('0x12')](_0x4a0ca1));if(_0x4a0ca1[_0x8770('0x13')]){if(_0x4a0ca1[_0x8770('0x13')][_0x8770('0x14')]===0x1f4){logger[_0x8770('0x13')](_0x8770('0xf'),_0x3f357a,_0x4a0ca1['error'][_0x8770('0x15')]);return _0x10e4a3(_0x4a0ca1[_0x8770('0x13')]['message']);}logger[_0x8770('0x13')]('MailMessage,\x20%s,\x20%s',_0x3f357a,_0x4a0ca1[_0x8770('0x13')]['message']);return _0x390af0(_0x4a0ca1['error']['message']);}else{logger[_0x8770('0xe')](_0x8770('0xf'),_0x3f357a,_0x8770('0x10'));_0x390af0(_0x4a0ca1[_0x8770('0x16')]['message']);}})['catch'](function(_0x349bd4){logger[_0x8770('0x13')](_0x8770('0xf'),_0x3f357a,_0x349bd4);_0x10e4a3(_0x349bd4);});});}exports[_0x8770('0x17')]=function(_0x4d2c7e){var _0x4e1fa6=this;return new Promise(function(_0x3e1fe7,_0x1234dd){return db[_0x8770('0x18')][_0x8770('0x19')](_0x4d2c7e['body'],{'raw':_0x4d2c7e['options']?_0x4d2c7e[_0x8770('0x1a')][_0x8770('0x1b')]===undefined?!![]:![]:!![]})[_0x8770('0xd')](function(_0x2918a7){logger[_0x8770('0xe')](_0x8770('0x17'),_0x4d2c7e);logger['debug'](_0x8770('0x17'),_0x4d2c7e,JSON[_0x8770('0x12')](_0x2918a7));_0x3e1fe7(_0x2918a7);})[_0x8770('0x1c')](function(_0x2515c5){logger['error'](_0x8770('0x17'),_0x2515c5['message'],_0x4d2c7e);_0x1234dd(_0x4e1fa6[_0x8770('0x13')](0x1f4,_0x2515c5[_0x8770('0x15')]));});});};
\ No newline at end of file
+var _0x7916=['request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateMailMessage','MailMessage','body','options','raw','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','defaults','localhost','./mailMessage.socket','register'];(function(_0x214cc3,_0x81abb8){var _0x512d48=function(_0x4065af){while(--_0x4065af){_0x214cc3['push'](_0x214cc3['shift']());}};_0x512d48(++_0x81abb8);}(_0x7916,0x128));var _0x6791=function(_0x23c4a9,_0x15eaf1){_0x23c4a9=_0x23c4a9-0x0;var _0xf708c5=_0x7916[_0x23c4a9];return _0xf708c5;};'use strict';var _=require(_0x6791('0x0'));var util=require('util');var moment=require(_0x6791('0x1'));var BPromise=require(_0x6791('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6791('0x3'));var db=require(_0x6791('0x4'))['db'];var utils=require(_0x6791('0x5'));var logger=require(_0x6791('0x6'))('rpc');var config=require(_0x6791('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6791('0x8')][_0x6791('0x9')]({'port':0x232a});config['redis']=_[_0x6791('0xa')](config['redis'],{'host':_0x6791('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6791('0xc'))[_0x6791('0xd')](socket);function respondWithRpcPromise(_0x579950,_0xbc3bc6,_0x2769a4){return new BPromise(function(_0x2aeae9,_0x495d9c){return client[_0x6791('0xe')](_0x579950,_0x2769a4)[_0x6791('0xf')](function(_0x2025dd){logger[_0x6791('0x10')](_0x6791('0x11'),_0xbc3bc6,_0x6791('0x12'));logger[_0x6791('0x13')](_0x6791('0x14'),_0xbc3bc6,_0x6791('0x12'),JSON[_0x6791('0x15')](_0x2025dd));if(_0x2025dd[_0x6791('0x16')]){if(_0x2025dd['error']['code']===0x1f4){logger[_0x6791('0x16')]('MailMessage,\x20%s,\x20%s',_0xbc3bc6,_0x2025dd[_0x6791('0x16')]['message']);return _0x495d9c(_0x2025dd[_0x6791('0x16')][_0x6791('0x17')]);}logger['error'](_0x6791('0x11'),_0xbc3bc6,_0x2025dd['error'][_0x6791('0x17')]);return _0x2aeae9(_0x2025dd[_0x6791('0x16')]['message']);}else{logger[_0x6791('0x10')](_0x6791('0x11'),_0xbc3bc6,'request\x20sent');_0x2aeae9(_0x2025dd[_0x6791('0x18')]['message']);}})[_0x6791('0x19')](function(_0x126451){logger[_0x6791('0x16')](_0x6791('0x11'),_0xbc3bc6,_0x126451);_0x495d9c(_0x126451);});});}exports[_0x6791('0x1a')]=function(_0x2bc0ab){var _0x2ba11a=this;return new Promise(function(_0x581d51,_0x4a2922){return db[_0x6791('0x1b')]['create'](_0x2bc0ab[_0x6791('0x1c')],{'raw':_0x2bc0ab[_0x6791('0x1d')]?_0x2bc0ab['options'][_0x6791('0x1e')]===undefined?!![]:![]:!![]})[_0x6791('0xf')](function(_0x15b9ab){logger[_0x6791('0x10')]('CreateMailMessage',_0x2bc0ab);logger[_0x6791('0x13')](_0x6791('0x1a'),_0x2bc0ab,JSON['stringify'](_0x15b9ab));_0x581d51(_0x15b9ab);})['catch'](function(_0x4b23bc){logger[_0x6791('0x16')]('CreateMailMessage',_0x4b23bc[_0x6791('0x17')],_0x2bc0ab);_0x4a2922(_0x2ba11a['error'](0x1f4,_0x4b23bc['message']));});});};
\ No newline at end of file
index 617a966..ec7504d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaea=['removeListener','length','mailMessage:','save','update','emit'];(function(_0x31e4f5,_0xd1ba1){var _0x341a7e=function(_0x59ba5b){while(--_0x59ba5b){_0x31e4f5['push'](_0x31e4f5['shift']());}};_0x341a7e(++_0xd1ba1);}(_0xaaea,0x183));var _0xaaae=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xaaea[_0x17d9e3];return _0x14192d;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xaaae('0x0'),'remove',_0xaaae('0x1')];function createListener(_0x1961bd,_0x507490){return function(_0x4b6def){_0x507490[_0xaaae('0x2')](_0x1961bd,_0x4b6def);};}function removeListener(_0x11c365,_0x29e647){return function(){MailMessageEvents[_0xaaae('0x3')](_0x11c365,_0x29e647);};}exports['register']=function(_0x140d1f){for(var _0x170245=0x0,_0x2c2b87=events[_0xaaae('0x4')];_0x170245<_0x2c2b87;_0x170245++){var _0x5298d9=events[_0x170245];var _0x341e14=createListener(_0xaaae('0x5')+_0x5298d9,_0x140d1f);MailMessageEvents['on'](_0x5298d9,_0x341e14);}};
\ No newline at end of file
+var _0x4bc2=['emit','removeListener','register','mailMessage:','./mailMessage.events','save','update'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x4bc2,0xe4));var _0x24bc=function(_0x49ddb0,_0x2981c5){_0x49ddb0=_0x49ddb0-0x0;var _0x250b42=_0x4bc2[_0x49ddb0];return _0x250b42;};'use strict';var MailMessageEvents=require(_0x24bc('0x0'));var events=[_0x24bc('0x1'),'remove',_0x24bc('0x2')];function createListener(_0xeeeda8,_0x21c882){return function(_0x695a80){_0x21c882[_0x24bc('0x3')](_0xeeeda8,_0x695a80);};}function removeListener(_0x4d67ed,_0x5e453c){return function(){MailMessageEvents[_0x24bc('0x4')](_0x4d67ed,_0x5e453c);};}exports[_0x24bc('0x5')]=function(_0x2d12ff){for(var _0x15f38a=0x0,_0x1bca1c=events['length'];_0x15f38a<_0x1bca1c;_0x15f38a++){var _0x74176=events[_0x15f38a];var _0x383dd8=createListener(_0x24bc('0x6')+_0x74176,_0x2d12ff);MailMessageEvents['on'](_0x74176,_0x383dd8);}};
\ No newline at end of file
index 29adc23..751227c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3687=['exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','describe','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','/:id','update','delete','destroy','removeTeams'];(function(_0x1fe380,_0xc0c451){var _0x837ad9=function(_0x1d4c73){while(--_0x1d4c73){_0x1fe380['push'](_0x1fe380['shift']());}};_0x837ad9(++_0xc0c451);}(_0x3687,0x97));var _0x7368=function(_0x2e22f7,_0x4bcfdc){_0x2e22f7=_0x2e22f7-0x0;var _0x4a49c0=_0x3687[_0x2e22f7];return _0x4a49c0;};'use strict';var multer=require(_0x7368('0x0'));var util=require(_0x7368('0x1'));var path=require(_0x7368('0x2'));var timeout=require(_0x7368('0x3'));var express=require(_0x7368('0x4'));var router=express[_0x7368('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7368('0x6'));var interaction=require(_0x7368('0x7'));var config=require(_0x7368('0x8'));var controller=require(_0x7368('0x9'));router[_0x7368('0xa')]('/',auth[_0x7368('0xb')](),controller[_0x7368('0xc')]);router[_0x7368('0xa')]('/describe',auth[_0x7368('0xb')](),controller[_0x7368('0xd')]);router[_0x7368('0xa')]('/:id',auth[_0x7368('0xb')](),controller['show']);router[_0x7368('0xa')](_0x7368('0xe'),auth['isAuthenticated'](),controller[_0x7368('0xf')]);router[_0x7368('0xa')](_0x7368('0x10'),auth['isAuthenticated'](),controller[_0x7368('0x11')]);router[_0x7368('0xa')](_0x7368('0x12'),auth['isAuthenticated'](),controller[_0x7368('0x13')]);router[_0x7368('0x14')]('/',auth[_0x7368('0xb')](),controller['create']);router[_0x7368('0x14')]('/:id/teams',auth[_0x7368('0xb')](),controller[_0x7368('0x15')]);router[_0x7368('0x14')](_0x7368('0x12'),auth[_0x7368('0xb')](),controller[_0x7368('0x16')]);router[_0x7368('0x17')](_0x7368('0x18'),auth[_0x7368('0xb')](),controller[_0x7368('0x19')]);router[_0x7368('0x1a')](_0x7368('0x18'),auth[_0x7368('0xb')](),controller[_0x7368('0x1b')]);router['delete']('/:id/teams',auth[_0x7368('0xb')](),controller[_0x7368('0x1c')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x7368('0x1d')]=router;
\ No newline at end of file
+var _0x2e2d=['../../config/environment','./mailQueue.controller','get','/describe','isAuthenticated','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','/:id','update','delete','removeTeams','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xa3fadc,_0xd1e16){var _0x23ecb8=function(_0x2c71f7){while(--_0x2c71f7){_0xa3fadc['push'](_0xa3fadc['shift']());}};_0x23ecb8(++_0xd1e16);}(_0x2e2d,0x107));var _0xd2e2=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x2e2d[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0xd2e2('0x0'));var util=require(_0xd2e2('0x1'));var path=require(_0xd2e2('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd2e2('0x3')]();var fs_extra=require(_0xd2e2('0x4'));var auth=require(_0xd2e2('0x5'));var interaction=require(_0xd2e2('0x6'));var config=require(_0xd2e2('0x7'));var controller=require(_0xd2e2('0x8'));router[_0xd2e2('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xd2e2('0xa'),auth[_0xd2e2('0xb')](),controller['describe']);router[_0xd2e2('0x9')]('/:id',auth[_0xd2e2('0xb')](),controller[_0xd2e2('0xc')]);router['get'](_0xd2e2('0xd'),auth['isAuthenticated'](),controller[_0xd2e2('0xe')]);router[_0xd2e2('0x9')](_0xd2e2('0xf'),auth[_0xd2e2('0xb')](),controller[_0xd2e2('0x10')]);router[_0xd2e2('0x9')](_0xd2e2('0x11'),auth[_0xd2e2('0xb')](),controller[_0xd2e2('0x12')]);router[_0xd2e2('0x13')]('/',auth['isAuthenticated'](),controller[_0xd2e2('0x14')]);router['post'](_0xd2e2('0xf'),auth[_0xd2e2('0xb')](),controller[_0xd2e2('0x15')]);router[_0xd2e2('0x13')]('/:id/users',auth[_0xd2e2('0xb')](),controller['addAgents']);router['put'](_0xd2e2('0x16'),auth[_0xd2e2('0xb')](),controller[_0xd2e2('0x17')]);router[_0xd2e2('0x18')]('/:id',auth[_0xd2e2('0xb')](),controller['destroy']);router['delete'](_0xd2e2('0xf'),auth[_0xd2e2('0xb')](),controller[_0xd2e2('0x19')]);router[_0xd2e2('0x18')](_0xd2e2('0x11'),auth[_0xd2e2('0xb')](),controller['removeAgents']);module[_0xd2e2('0x1a')]=router;
\ No newline at end of file
index 3b79519..1f7def4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ba5=['exports','INTEGER','ENUM','beepall','roundrobin','sequelize'];(function(_0x39257c,_0xc54331){var _0x4fed0b=function(_0x51b453){while(--_0x51b453){_0x39257c['push'](_0x39257c['shift']());}};_0x4fed0b(++_0xc54331);}(_0x3ba5,0x107));var _0x53ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ba5[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x53ba('0x0'));module[_0x53ba('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x53ba('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x53ba('0x3')]('rrmemory',_0x53ba('0x4'),_0x53ba('0x5'))}};
\ No newline at end of file
+var _0x44b8=['exports','STRING','name','INTEGER','rrmemory','beepall','roundrobin','sequelize'];(function(_0x365fc3,_0x120079){var _0x21451f=function(_0x2861f3){while(--_0x2861f3){_0x365fc3['push'](_0x365fc3['shift']());}};_0x21451f(++_0x120079);}(_0x44b8,0xaf));var _0x844b=function(_0x46479c,_0x5e5faa){_0x46479c=_0x46479c-0x0;var _0x379642=_0x44b8[_0x46479c];return _0x379642;};'use strict';var Sequelize=require(_0x844b('0x0'));module[_0x844b('0x1')]={'name':{'type':Sequelize[_0x844b('0x2')],'unique':_0x844b('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x844b('0x2')]},'timeout':{'type':Sequelize[_0x844b('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x844b('0x5'),_0x844b('0x6'),_0x844b('0x7'))}};
\ No newline at end of file
index 563f897..c05e2ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1cd=['keys','filters','intersection','attributes','fields','length','includeAll','merge','options','find','catch','create','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','rawAttributes','hasOwnProperty','order','sort','where','filter','UserMailQueue','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','rows','format','%s/%s','SIP','pick','getTeams','nolimit','addTeams','ids','Team','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','Agents','select','field','tq.TeamId','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','every','TeamId','includes','all','compact','value','removeTeams','addAgents','omit','spread','removeAgents','getAgents','bluebird','util','lodash','squel','ioredis','api','../../config/environment','redis','localhost','register','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','update','then','get','destroy','error','stack','name','send','index','map','MailQueue','fieldName','type','key','getOptions','include','query','findAll','show','params','model'];(function(_0x143ccf,_0x2aa561){var _0x23331a=function(_0x567093){while(--_0x567093){_0x143ccf['push'](_0x143ccf['shift']());}};_0x23331a(++_0x2aa561);}(_0xd1cd,0x143));var _0xdd1c=function(_0x51f32d,_0x374f42){_0x51f32d=_0x51f32d-0x0;var _0x3ddc33=_0xd1cd[_0x51f32d];return _0x3ddc33;};'use strict';var BPromise=require(_0xdd1c('0x0'));var util=require(_0xdd1c('0x1'));var _=require(_0xdd1c('0x2'));var squel=require(_0xdd1c('0x3'));var Redis=require(_0xdd1c('0x4'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xdd1c('0x5'));var config=require(_0xdd1c('0x6'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xdd1c('0x7')],{'host':_0xdd1c('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdd1c('0x7')]));require('./mailQueue.socket')[_0xdd1c('0x9')](socket);function respondWithStatusCode(_0x4db47e,_0x8e89ea){_0x8e89ea=_0x8e89ea||0xcc;return function(_0x5c7239){if(_0x5c7239){return _0x4db47e[_0xdd1c('0xa')](_0x8e89ea);}return _0x4db47e[_0xdd1c('0xb')](_0x8e89ea)[_0xdd1c('0xc')]();};}function respondWithResult(_0xaa8b22,_0x593c45){_0x593c45=_0x593c45||0xc8;return function(_0xb6b350){if(_0xb6b350){return _0xaa8b22[_0xdd1c('0xb')](_0x593c45)[_0xdd1c('0xd')](_0xb6b350);}};}function respondWithFilteredResult(_0x10b30f,_0x358b35){return function(_0x2f7eaa){if(_0x2f7eaa){var _0x41b134=typeof _0x358b35['offset']===_0xdd1c('0xe')&&typeof _0x358b35['limit']==='undefined';var _0x4fe875=_0x2f7eaa[_0xdd1c('0xf')];var _0x64231b=_0x41b134?0x0:_0x358b35[_0xdd1c('0x10')];var _0x6ef450=_0x41b134?_0x2f7eaa[_0xdd1c('0xf')]:_0x358b35[_0xdd1c('0x10')]+_0x358b35[_0xdd1c('0x11')];var _0xe4fc24;if(_0x6ef450>=_0x4fe875){_0x6ef450=_0x4fe875;_0xe4fc24=0xc8;}else{_0xe4fc24=0xce;}_0x10b30f[_0xdd1c('0xb')](_0xe4fc24);return _0x10b30f['set'](_0xdd1c('0x12'),_0x64231b+'-'+_0x6ef450+'/'+_0x4fe875)['json'](_0x2f7eaa);}return null;};}function saveUpdates(_0x2c86cd){return function(_0x5e5e9b){if(_0x5e5e9b){return _0x5e5e9b[_0xdd1c('0x13')](_0x2c86cd)[_0xdd1c('0x14')](function(_0x3c5e25){return _0x3c5e25;});}return null;};}function removeEntity(_0x3f8cb7){return function(_0x1007dd){if(_0x1007dd){return _0x1007dd['destroy']()[_0xdd1c('0x14')](function(){var _0x154a13=_0x1007dd[_0xdd1c('0x15')]({'plain':!![]});var _0x4b5e0f='MailQueues';return db['UserProfileResource'][_0xdd1c('0x16')]({'where':{'type':_0x4b5e0f,'resourceId':_0x154a13['id']}})[_0xdd1c('0x14')](function(){return _0x1007dd;});})[_0xdd1c('0x14')](function(){_0x3f8cb7['status'](0xcc)[_0xdd1c('0xc')]();});}};}function handleEntityNotFound(_0x5b98c0){return function(_0x2d2b8d){if(!_0x2d2b8d){_0x5b98c0['sendStatus'](0x194);}return _0x2d2b8d;};}function handleError(_0x408f26,_0x2da5e9){_0x2da5e9=_0x2da5e9||0x1f4;return function(_0xbe2b7){logger[_0xdd1c('0x17')](_0xbe2b7[_0xdd1c('0x18')]);if(_0xbe2b7[_0xdd1c('0x19')]){delete _0xbe2b7[_0xdd1c('0x19')];}_0x408f26[_0xdd1c('0xb')](_0x2da5e9)[_0xdd1c('0x1a')](_0xbe2b7);};}exports[_0xdd1c('0x1b')]=function(_0x4ee1ae,_0x3feea8){var _0x4122ec={};var _0x30c4d1={'count':0x0,'rows':[]};var _0x438b30=_[_0xdd1c('0x1c')](db[_0xdd1c('0x1d')]['rawAttributes'],function(_0x4b5ff7){return{'name':_0x4b5ff7[_0xdd1c('0x1e')],'type':_0x4b5ff7[_0xdd1c('0x1f')][_0xdd1c('0x20')]};});_0x4122ec=qs[_0xdd1c('0x21')](_0x438b30,_0x4ee1ae);var _0x1a60c5={'where':_0x4122ec['where']};return db[_0xdd1c('0x1d')]['count'](_0x1a60c5)[_0xdd1c('0x14')](function(_0x8f032e){_0x30c4d1[_0xdd1c('0xf')]=_0x8f032e;_0x4122ec[_0xdd1c('0x22')]=qs[_0xdd1c('0x22')](_0x4ee1ae[_0xdd1c('0x23')]);return db[_0xdd1c('0x1d')][_0xdd1c('0x24')](_0x4122ec);})[_0xdd1c('0x14')](function(_0x5ed9bd){_0x30c4d1['rows']=_0x5ed9bd;return _0x30c4d1;})[_0xdd1c('0x14')](respondWithFilteredResult(_0x3feea8,_0x4122ec))['catch'](handleError(_0x3feea8,null));};exports[_0xdd1c('0x25')]=function(_0x24ccec,_0x57d242){var _0x59439b={'raw':!![],'where':{'id':_0x24ccec[_0xdd1c('0x26')]['id']}},_0x5ed6a9={};_0x5ed6a9[_0xdd1c('0x27')]=_[_0xdd1c('0x28')](db[_0xdd1c('0x1d')]['rawAttributes']);_0x5ed6a9[_0xdd1c('0x23')]=_[_0xdd1c('0x28')](_0x24ccec[_0xdd1c('0x23')]);_0x5ed6a9[_0xdd1c('0x29')]=_[_0xdd1c('0x2a')](_0x5ed6a9[_0xdd1c('0x27')],_0x5ed6a9['query']);_0x59439b[_0xdd1c('0x2b')]=_[_0xdd1c('0x2a')](_0x5ed6a9[_0xdd1c('0x27')],qs[_0xdd1c('0x2c')](_0x24ccec[_0xdd1c('0x23')][_0xdd1c('0x2c')]));_0x59439b[_0xdd1c('0x2b')]=_0x59439b['attributes'][_0xdd1c('0x2d')]?_0x59439b['attributes']:_0x5ed6a9[_0xdd1c('0x27')];if(_0x24ccec[_0xdd1c('0x23')][_0xdd1c('0x2e')]){_0x59439b[_0xdd1c('0x22')]=[{'all':!![]}];}_0x59439b=_[_0xdd1c('0x2f')]({},_0x59439b,_0x24ccec[_0xdd1c('0x30')]);return db['MailQueue'][_0xdd1c('0x31')](_0x59439b)[_0xdd1c('0x14')](handleEntityNotFound(_0x57d242,null))[_0xdd1c('0x14')](respondWithResult(_0x57d242,null))[_0xdd1c('0x32')](handleError(_0x57d242,null));};exports[_0xdd1c('0x33')]=function(_0x215a12,_0x4938a6){return db[_0xdd1c('0x1d')][_0xdd1c('0x33')](_0x215a12['body'],{})[_0xdd1c('0x14')](function(_0x238b35){var _0x41b615=_0x215a12[_0xdd1c('0x34')][_0xdd1c('0x15')]({'plain':!![]});if(!_0x41b615)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x41b615[_0xdd1c('0x35')]==='user'){var _0x3a7323=_0x238b35[_0xdd1c('0x15')]({'plain':!![]});var _0x16aab3='MailQueues';return db[_0xdd1c('0x36')][_0xdd1c('0x31')]({'where':{'name':_0x16aab3,'userProfileId':_0x41b615[_0xdd1c('0x37')]},'raw':!![]})[_0xdd1c('0x14')](function(_0x4ea3b9){if(_0x4ea3b9&&_0x4ea3b9[_0xdd1c('0x38')]===0x0){return db[_0xdd1c('0x39')][_0xdd1c('0x33')]({'name':_0x3a7323[_0xdd1c('0x19')],'resourceId':_0x3a7323['id'],'type':_0x4ea3b9[_0xdd1c('0x19')],'sectionId':_0x4ea3b9['id']},{})[_0xdd1c('0x14')](function(){return _0x238b35;});}else{return _0x238b35;}})[_0xdd1c('0x32')](function(_0xf037ef){logger[_0xdd1c('0x17')](_0xdd1c('0x3a'),_0xf037ef);throw _0xf037ef;});}return _0x238b35;})['then'](respondWithResult(_0x4938a6,0xc9))[_0xdd1c('0x32')](handleError(_0x4938a6,null));};exports[_0xdd1c('0x13')]=function(_0x45e5c2,_0x5ac0f2){if(_0x45e5c2['body']['id']){delete _0x45e5c2[_0xdd1c('0x3b')]['id'];}return db['MailQueue'][_0xdd1c('0x31')]({'where':{'id':_0x45e5c2[_0xdd1c('0x26')]['id']}})[_0xdd1c('0x14')](handleEntityNotFound(_0x5ac0f2,null))[_0xdd1c('0x14')](saveUpdates(_0x45e5c2[_0xdd1c('0x3b')],null))['then'](respondWithResult(_0x5ac0f2,null))[_0xdd1c('0x32')](handleError(_0x5ac0f2,null));};exports[_0xdd1c('0x16')]=function(_0x392841,_0x4b721b){return db[_0xdd1c('0x1d')][_0xdd1c('0x31')]({'where':{'id':_0x392841['params']['id']}})['then'](handleEntityNotFound(_0x4b721b,null))[_0xdd1c('0x14')](removeEntity(_0x4b721b,null))[_0xdd1c('0x32')](handleError(_0x4b721b,null));};exports[_0xdd1c('0x3c')]=function(_0x4791e,_0x4f9a24){return db[_0xdd1c('0x1d')][_0xdd1c('0x3c')]()[_0xdd1c('0x14')](respondWithResult(_0x4f9a24,null))[_0xdd1c('0x32')](handleError(_0x4f9a24,null));};exports[_0xdd1c('0x3d')]=function(_0x1f6fb6,_0x5d0704){var _0x5b2502={'raw':!![],'where':{}},_0x292f13={},_0x8b5cf7;return db[_0xdd1c('0x1d')][_0xdd1c('0x3e')]({'where':{'id':_0x1f6fb6[_0xdd1c('0x26')]['id']}})[_0xdd1c('0x14')](handleEntityNotFound(_0x5d0704,null))['then'](function(_0x4e151f){if(_0x4e151f){_0x8b5cf7=_0x4e151f[_0xdd1c('0x15')]({'plain':!![]});_0x292f13['model']=_['keys'](db['UserMailQueue'][_0xdd1c('0x3f')]);_0x292f13['query']=_[_0xdd1c('0x28')](_0x1f6fb6[_0xdd1c('0x23')]);_0x292f13[_0xdd1c('0x29')]=_[_0xdd1c('0x2a')](_0x292f13[_0xdd1c('0x27')],_0x292f13[_0xdd1c('0x23')]);_0x5b2502[_0xdd1c('0x2b')]=_[_0xdd1c('0x2a')](_0x292f13[_0xdd1c('0x27')],qs[_0xdd1c('0x2c')](_0x1f6fb6[_0xdd1c('0x23')][_0xdd1c('0x2c')]));_0x5b2502[_0xdd1c('0x2b')]=_0x5b2502[_0xdd1c('0x2b')]['length']?_0x5b2502[_0xdd1c('0x2b')]:_0x292f13[_0xdd1c('0x27')];if(!_0x1f6fb6[_0xdd1c('0x23')][_0xdd1c('0x40')]('nolimit')){_0x5b2502[_0xdd1c('0x11')]=qs[_0xdd1c('0x11')](_0x1f6fb6['query'][_0xdd1c('0x11')]);_0x5b2502[_0xdd1c('0x10')]=qs[_0xdd1c('0x10')](_0x1f6fb6[_0xdd1c('0x23')][_0xdd1c('0x10')]);}_0x5b2502[_0xdd1c('0x41')]=qs[_0xdd1c('0x42')](_0x1f6fb6[_0xdd1c('0x23')]['sort']);_0x5b2502['where']=qs[_0xdd1c('0x29')](_['pick'](_0x1f6fb6[_0xdd1c('0x23')],_0x292f13[_0xdd1c('0x29')]));_0x5b2502[_0xdd1c('0x43')]['MailQueueId']=_0x4e151f['id'];if(_0x1f6fb6['query']['filter']){_0x5b2502[_0xdd1c('0x43')]=_[_0xdd1c('0x2f')](_0x5b2502[_0xdd1c('0x43')],{'$or':_[_0xdd1c('0x1c')](_0x5b2502[_0xdd1c('0x2b')],function(_0x90ce46){var _0x406f2b={};_0x406f2b[_0x90ce46]={'$like':'%'+_0x1f6fb6[_0xdd1c('0x23')][_0xdd1c('0x44')]+'%'};return _0x406f2b;})});}_0x5b2502=_[_0xdd1c('0x2f')]({},_0x5b2502,_0x1f6fb6[_0xdd1c('0x30')]);return db[_0xdd1c('0x45')][_0xdd1c('0x24')](_0x5b2502);}})[_0xdd1c('0x14')](function(_0x1d7ffe){if(_0x1d7ffe){return db[_0xdd1c('0x46')][_0xdd1c('0x47')]({'where':{'id':_[_0xdd1c('0x1c')](_0x1d7ffe,_0xdd1c('0x48')),'role':_0xdd1c('0x49')},'attributes':['id',_0xdd1c('0x19'),_0xdd1c('0x4a'),_0xdd1c('0x4b'),_0xdd1c('0x4c')]});}})[_0xdd1c('0x14')](function(_0x621dbb){if(_0x621dbb){return{'count':_0x621dbb[_0xdd1c('0xf')],'rows':_['map'](_0x621dbb[_0xdd1c('0x4d')],function(_0x1cb49b){return{'membername':_0x1cb49b[_0xdd1c('0x19')],'UserId':_0x1cb49b['id'],'queue_name':_0x8b5cf7[_0xdd1c('0x19')],'MailQueueId':_0x8b5cf7['id'],'interface':util[_0xdd1c('0x4e')](_0xdd1c('0x4f'),_0xdd1c('0x50'),_0x1cb49b[_0xdd1c('0x19')]),'penalty':0x0,'paused':_0x1cb49b[_0xdd1c('0x4a')],'createdAt':_0x1cb49b[_0xdd1c('0x4c')],'updatedAt':_0x1cb49b[_0xdd1c('0x4b')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x5d0704,_0x5b2502))[_0xdd1c('0x32')](handleError(_0x5d0704,null));};exports['getTeams']=function(_0x3b08d4,_0x2969f9){var _0x1d43ff={};var _0x168214={};var _0x2d69d8;var _0x2b9671;return db[_0xdd1c('0x1d')]['findOne']({'where':{'id':_0x3b08d4['params']['id']}})['then'](handleEntityNotFound(_0x2969f9,null))['then'](function(_0x4b3454){if(_0x4b3454){_0x2d69d8=_0x4b3454;_0x168214[_0xdd1c('0x27')]=_[_0xdd1c('0x28')](db['Team'][_0xdd1c('0x3f')]);_0x168214[_0xdd1c('0x23')]=_[_0xdd1c('0x28')](_0x3b08d4[_0xdd1c('0x23')]);_0x168214['filters']=_[_0xdd1c('0x2a')](_0x168214['model'],_0x168214[_0xdd1c('0x23')]);_0x1d43ff[_0xdd1c('0x2b')]=_[_0xdd1c('0x2a')](_0x168214[_0xdd1c('0x27')],qs[_0xdd1c('0x2c')](_0x3b08d4['query'][_0xdd1c('0x2c')]));_0x1d43ff[_0xdd1c('0x2b')]=_0x1d43ff[_0xdd1c('0x2b')][_0xdd1c('0x2d')]?_0x1d43ff[_0xdd1c('0x2b')]:_0x168214[_0xdd1c('0x27')];_0x1d43ff[_0xdd1c('0x41')]=qs[_0xdd1c('0x42')](_0x3b08d4[_0xdd1c('0x23')][_0xdd1c('0x42')]);_0x1d43ff[_0xdd1c('0x43')]=qs[_0xdd1c('0x29')](_[_0xdd1c('0x51')](_0x3b08d4[_0xdd1c('0x23')],_0x168214[_0xdd1c('0x29')]));if(_0x3b08d4['query'][_0xdd1c('0x44')]){_0x1d43ff['where']=_[_0xdd1c('0x2f')](_0x1d43ff[_0xdd1c('0x43')],{'$or':_[_0xdd1c('0x1c')](_0x1d43ff[_0xdd1c('0x2b')],function(_0x23e6fb){var _0x171c88={};_0x171c88[_0x23e6fb]={'$like':'%'+_0x3b08d4['query']['filter']+'%'};return _0x171c88;})});}_0x1d43ff=_[_0xdd1c('0x2f')]({},_0x1d43ff,_0x3b08d4['options']);return _0x2d69d8[_0xdd1c('0x52')](_0x1d43ff);}})[_0xdd1c('0x14')](function(_0x13b8b1){if(_0x13b8b1){_0x2b9671=_0x13b8b1[_0xdd1c('0x2d')];if(!_0x3b08d4[_0xdd1c('0x23')]['hasOwnProperty'](_0xdd1c('0x53'))){_0x1d43ff['limit']=qs['limit'](_0x3b08d4[_0xdd1c('0x23')]['limit']);_0x1d43ff[_0xdd1c('0x10')]=qs['offset'](_0x3b08d4[_0xdd1c('0x23')][_0xdd1c('0x10')]);}return _0x2d69d8[_0xdd1c('0x52')](_0x1d43ff);}})[_0xdd1c('0x14')](function(_0x3ef9ea){if(_0x3ef9ea){return _0x3ef9ea?{'count':_0x2b9671,'rows':_0x3ef9ea}:null;}})['then'](respondWithResult(_0x2969f9,null))[_0xdd1c('0x32')](handleError(_0x2969f9,null));};exports[_0xdd1c('0x54')]=function(_0x183db4,_0x4ba0c6){var _0x50103d=_0x183db4[_0xdd1c('0x3b')][_0xdd1c('0x55')];return db[_0xdd1c('0x56')][_0xdd1c('0x24')]({'where':{'id':_0x50103d},'attributes':['id'],'include':[{'model':db[_0xdd1c('0x46')],'as':'Agents','attributes':['id',_0xdd1c('0x19'),'online','voicePause',_0xdd1c('0x57')],'raw':!![]}]})[_0xdd1c('0x14')](function(_0x38c87b){if(_0x38c87b){var _0x4ecfa1=_[_0xdd1c('0x58')](_0x38c87b,function(_0x7077de){var _0xaa1dc6=_0x7077de[_0xdd1c('0x15')]({'plain':!![]});return _0xaa1dc6['Agents'];});return db['MailQueue'][_0xdd1c('0x31')]({'where':{'id':_0x183db4['params']['id']}})[_0xdd1c('0x14')](function(_0x576c90){return db[_0xdd1c('0x59')][_0xdd1c('0x5a')](function(_0x27236d){return _0x576c90[_0xdd1c('0x54')](_0x50103d,{'transaction':_0x27236d})['then'](function(){return BPromise[_0xdd1c('0x5b')](_0x4ecfa1,function(_0x2de350){return db['UserMailQueue'][_0xdd1c('0x5c')]({'where':{'UserId':_0x2de350['id'],'MailQueueId':_0x183db4['params']['id']},'transaction':_0x27236d});});})[_0xdd1c('0x14')](function(){_0x4ecfa1[_0xdd1c('0x5d')](function(_0x2c6a87){socket[_0xdd1c('0x5e')](_0xdd1c('0x5f'),{'UserId':_0x2c6a87['id'],'MailQueueId':_0x576c90['id']});});});});});}})['then'](respondWithStatusCode(_0x4ba0c6,null))[_0xdd1c('0x32')](handleError(_0x4ba0c6,null));};exports['removeTeams']=function(_0x5f011d,_0x503e98){return db['Team'][_0xdd1c('0x24')]({'where':{'id':_0x5f011d[_0xdd1c('0x23')][_0xdd1c('0x55')]},'attributes':['id'],'include':[{'model':db[_0xdd1c('0x46')],'as':_0xdd1c('0x60'),'attributes':['id'],'raw':!![]}]})[_0xdd1c('0x14')](handleEntityNotFound(_0x503e98,null))['then'](function(_0x1e8102){var _0x3383cc=_['map'](_0x1e8102,'id');var _0x3bd853=[];var _0x562698=[];var _0x293faf=squel[_0xdd1c('0x61')]();_0x293faf[_0xdd1c('0x62')](_0xdd1c('0x63'))['from'](_0xdd1c('0x64'),'tq')[_0xdd1c('0x65')](_0xdd1c('0x66'),'ut',_0xdd1c('0x67'))[_0xdd1c('0x43')](_0xdd1c('0x68'),_0x5f011d[_0xdd1c('0x26')]['id']);for(var _0x193cfc=0x0;_0x193cfc<_0x1e8102[_0xdd1c('0x2d')];_0x193cfc+=0x1){let _0x37fc20=_0x1e8102[_0x193cfc];for(var _0x4f129d=0x0;_0x4f129d<_0x37fc20[_0xdd1c('0x60')]['length'];_0x4f129d+=0x1){let _0x2e3a22=_0x37fc20['Agents'][_0x4f129d];var _0x2d0df3=_0x293faf[_0xdd1c('0x69')]();_0x2d0df3[_0xdd1c('0x43')](_0xdd1c('0x6a'),_0x2e3a22['id']);_0x562698[_0xdd1c('0x6b')](db[_0xdd1c('0x59')][_0xdd1c('0x23')](_0x2d0df3['toString'](),{'type':db[_0xdd1c('0x59')][_0xdd1c('0x6c')]['SELECT']})['then'](function(_0x5d02ac){if(_0x5d02ac[_0xdd1c('0x2d')]===0x1){return _0x2e3a22['id'];}else{var _0x88f177=_[_0xdd1c('0x6d')](_[_0xdd1c('0x1c')](_0x5d02ac,_0xdd1c('0x6e')),function(_0x5ac401){return _[_0xdd1c('0x6f')](_0x3383cc,_0x5ac401);});if(_0x88f177){return _0x2e3a22['id'];}}}));}}return BPromise[_0xdd1c('0x70')](_0x562698)[_0xdd1c('0x14')](function(_0x9e5ef7){_0x3bd853=_(_0x3bd853)['union'](_0x9e5ef7)[_0xdd1c('0x71')]()[_0xdd1c('0x72')]();return db[_0xdd1c('0x1d')]['find']({'where':{'id':_0x5f011d[_0xdd1c('0x26')]['id']}})[_0xdd1c('0x14')](function(_0x374507){return db[_0xdd1c('0x59')][_0xdd1c('0x5a')](function(_0x59d8f5){return _0x374507[_0xdd1c('0x73')](_0x5f011d[_0xdd1c('0x23')][_0xdd1c('0x55')],{'transaction':_0x59d8f5})[_0xdd1c('0x14')](function(){if(!_['isEmpty'](_0x3bd853)){return _0x374507['removeAgents'](_0x3bd853,{'transaction':_0x59d8f5});}})[_0xdd1c('0x14')](function(){_0x3bd853[_0xdd1c('0x5d')](function(_0x22d86a){socket[_0xdd1c('0x5e')]('userMailQueue:remove',{'UserId':_0x22d86a,'MailQueueId':_0x374507['id']});});});});});});})[_0xdd1c('0x14')](respondWithStatusCode(_0x503e98,null))[_0xdd1c('0x32')](handleError(_0x503e98,null));};exports[_0xdd1c('0x74')]=function(_0x5b8ad9,_0x39d3ff){return db['MailQueue']['find']({'where':{'id':_0x5b8ad9['params']['id']}})[_0xdd1c('0x14')](handleEntityNotFound(_0x39d3ff,null))[_0xdd1c('0x14')](function(_0x373f44){if(_0x373f44){return _0x373f44['addAgents'](_0x5b8ad9['body'][_0xdd1c('0x55')],_[_0xdd1c('0x75')](_0x5b8ad9[_0xdd1c('0x3b')],[_0xdd1c('0x55'),'id'])||{})[_0xdd1c('0x76')](function(_0x5ab1b9){for(var _0x4a1dcf=0x0;_0x4a1dcf<_0x5b8ad9[_0xdd1c('0x3b')][_0xdd1c('0x55')]['length'];_0x4a1dcf+=0x1){socket['emit']('userMailQueue:save',{'UserId':Number(_0x5b8ad9['body'][_0xdd1c('0x55')][_0x4a1dcf]),'MailQueueId':Number(_0x5b8ad9[_0xdd1c('0x26')]['id'])});}return _0x5ab1b9;});}})[_0xdd1c('0x14')](respondWithResult(_0x39d3ff,null))[_0xdd1c('0x32')](handleError(_0x39d3ff,null));};exports['removeAgents']=function(_0x4bd3f5,_0x1d2836){return db[_0xdd1c('0x1d')][_0xdd1c('0x31')]({'where':{'id':_0x4bd3f5['params']['id']}})[_0xdd1c('0x14')](handleEntityNotFound(_0x1d2836,null))[_0xdd1c('0x14')](function(_0x1b2761){if(_0x1b2761){return _0x1b2761[_0xdd1c('0x77')](_0x4bd3f5[_0xdd1c('0x23')][_0xdd1c('0x55')])[_0xdd1c('0x14')](function(){if(_['isArray'](_0x4bd3f5[_0xdd1c('0x23')][_0xdd1c('0x55')])){for(var _0x59c50f=0x0;_0x59c50f<_0x4bd3f5[_0xdd1c('0x23')][_0xdd1c('0x55')][_0xdd1c('0x2d')];_0x59c50f+=0x1){socket[_0xdd1c('0x5e')]('userMailQueue:remove',{'UserId':Number(_0x4bd3f5['query']['ids'][_0x59c50f]),'MailQueueId':Number(_0x4bd3f5[_0xdd1c('0x26')]['id'])});}}else{socket[_0xdd1c('0x5e')]('userMailQueue:remove',{'UserId':Number(_0x4bd3f5[_0xdd1c('0x23')][_0xdd1c('0x55')]),'MailQueueId':Number(_0x4bd3f5[_0xdd1c('0x26')]['id'])});}});}})[_0xdd1c('0x14')](respondWithStatusCode(_0x1d2836,null))[_0xdd1c('0x32')](handleError(_0x1d2836,null));};exports[_0xdd1c('0x78')]=function(_0xae6ce5,_0x64d06f){var _0x121b8c={};var _0x4d68a4={};var _0x4d86b3;var _0x3bfb66;return db[_0xdd1c('0x1d')]['findOne']({'where':{'id':_0xae6ce5[_0xdd1c('0x26')]['id']}})[_0xdd1c('0x14')](handleEntityNotFound(_0x64d06f,null))['then'](function(_0xd5967a){if(_0xd5967a){_0x4d86b3=_0xd5967a;_0x4d68a4[_0xdd1c('0x27')]=_[_0xdd1c('0x28')](db['User']['rawAttributes']);_0x4d68a4[_0xdd1c('0x23')]=_[_0xdd1c('0x28')](_0xae6ce5[_0xdd1c('0x23')]);_0x4d68a4['filters']=_[_0xdd1c('0x2a')](_0x4d68a4[_0xdd1c('0x27')],_0x4d68a4[_0xdd1c('0x23')]);_0x121b8c[_0xdd1c('0x2b')]=_[_0xdd1c('0x2a')](_0x4d68a4[_0xdd1c('0x27')],qs['fields'](_0xae6ce5[_0xdd1c('0x23')][_0xdd1c('0x2c')]));_0x121b8c[_0xdd1c('0x2b')]=_0x121b8c[_0xdd1c('0x2b')][_0xdd1c('0x2d')]?_0x121b8c[_0xdd1c('0x2b')]:_0x4d68a4['model'];_0x121b8c[_0xdd1c('0x41')]=qs[_0xdd1c('0x42')](_0xae6ce5['query'][_0xdd1c('0x42')]);_0x121b8c[_0xdd1c('0x43')]=qs['filters'](_[_0xdd1c('0x51')](_0xae6ce5['query'],_0x4d68a4['filters']));if(_0xae6ce5[_0xdd1c('0x23')]['filter']){_0x121b8c[_0xdd1c('0x43')]=_[_0xdd1c('0x2f')](_0x121b8c[_0xdd1c('0x43')],{'$or':_['map'](_0x121b8c[_0xdd1c('0x2b')],function(_0x59d5be){var _0x1f1983={};_0x1f1983[_0x59d5be]={'$like':'%'+_0xae6ce5[_0xdd1c('0x23')]['filter']+'%'};return _0x1f1983;})});}_0x121b8c=_[_0xdd1c('0x2f')]({},_0x121b8c,_0xae6ce5[_0xdd1c('0x30')]);return _0x4d86b3[_0xdd1c('0x78')](_0x121b8c);}})[_0xdd1c('0x14')](function(_0x72d530){if(_0x72d530){_0x3bfb66=_0x72d530[_0xdd1c('0x2d')];if(!_0xae6ce5[_0xdd1c('0x23')][_0xdd1c('0x40')](_0xdd1c('0x53'))){_0x121b8c['limit']=qs['limit'](_0xae6ce5[_0xdd1c('0x23')]['limit']);_0x121b8c[_0xdd1c('0x10')]=qs[_0xdd1c('0x10')](_0xae6ce5[_0xdd1c('0x23')][_0xdd1c('0x10')]);}return _0x4d86b3[_0xdd1c('0x78')](_0x121b8c);}})['then'](function(_0x32f147){if(_0x32f147){return _0x32f147?{'count':_0x3bfb66,'rows':_0x32f147}:null;}})[_0xdd1c('0x14')](respondWithResult(_0x64d06f,null))[_0xdd1c('0x32')](handleError(_0x64d06f,null));};
\ No newline at end of file
+var _0xadb7=['where','MailQueue','include','query','findAll','catch','show','params','model','keys','filters','attributes','fields','length','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserMailQueue','nolimit','order','sort','pick','MailQueueId','filter','options','User','UserId','agent','mailPause','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','Team','intersection','hasOwnProperty','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','ids','select','field','tq.TeamId','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','union','compact','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','getAgents','bluebird','util','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','get','MailQueues','UserProfileResource','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','getOptions'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xadb7,0x1d1));var _0x7adb=function(_0x4e2e1f,_0x55bb64){_0x4e2e1f=_0x4e2e1f-0x0;var _0x4439c1=_0xadb7[_0x4e2e1f];return _0x4439c1;};'use strict';var BPromise=require(_0x7adb('0x0'));var util=require(_0x7adb('0x1'));var _=require('lodash');var squel=require(_0x7adb('0x2'));var Redis=require(_0x7adb('0x3'));var qs=require(_0x7adb('0x4'));var logger=require(_0x7adb('0x5'))(_0x7adb('0x6'));var config=require(_0x7adb('0x7'));var db=require('../../mysqldb')['db'];config[_0x7adb('0x8')]=_[_0x7adb('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x7adb('0xa'))(new Redis(config['redis']));require(_0x7adb('0xb'))[_0x7adb('0xc')](socket);function respondWithStatusCode(_0x237cbc,_0xd502a9){_0xd502a9=_0xd502a9||0xcc;return function(_0x1527b2){if(_0x1527b2){return _0x237cbc[_0x7adb('0xd')](_0xd502a9);}return _0x237cbc[_0x7adb('0xe')](_0xd502a9)['end']();};}function respondWithResult(_0x12d43f,_0x29d85c){_0x29d85c=_0x29d85c||0xc8;return function(_0x3db5ea){if(_0x3db5ea){return _0x12d43f[_0x7adb('0xe')](_0x29d85c)[_0x7adb('0xf')](_0x3db5ea);}};}function respondWithFilteredResult(_0x26e3f0,_0x15255d){return function(_0x5320a9){if(_0x5320a9){var _0x33bd14=typeof _0x15255d[_0x7adb('0x10')]==='undefined'&&typeof _0x15255d[_0x7adb('0x11')]===_0x7adb('0x12');var _0xc0554f=_0x5320a9[_0x7adb('0x13')];var _0x43d861=_0x33bd14?0x0:_0x15255d['offset'];var _0x5a131c=_0x33bd14?_0x5320a9[_0x7adb('0x13')]:_0x15255d[_0x7adb('0x10')]+_0x15255d[_0x7adb('0x11')];var _0x37c795;if(_0x5a131c>=_0xc0554f){_0x5a131c=_0xc0554f;_0x37c795=0xc8;}else{_0x37c795=0xce;}_0x26e3f0['status'](_0x37c795);return _0x26e3f0[_0x7adb('0x14')](_0x7adb('0x15'),_0x43d861+'-'+_0x5a131c+'/'+_0xc0554f)[_0x7adb('0xf')](_0x5320a9);}return null;};}function saveUpdates(_0x136592){return function(_0x4417fe){if(_0x4417fe){return _0x4417fe[_0x7adb('0x16')](_0x136592)[_0x7adb('0x17')](function(_0x5260f6){return _0x5260f6;});}return null;};}function removeEntity(_0x2886ff){return function(_0x440534){if(_0x440534){return _0x440534[_0x7adb('0x18')]()[_0x7adb('0x17')](function(){var _0x4784c1=_0x440534[_0x7adb('0x19')]({'plain':!![]});var _0x15ebcc=_0x7adb('0x1a');return db[_0x7adb('0x1b')][_0x7adb('0x18')]({'where':{'type':_0x15ebcc,'resourceId':_0x4784c1['id']}})[_0x7adb('0x17')](function(){return _0x440534;});})['then'](function(){_0x2886ff['status'](0xcc)[_0x7adb('0x1c')]();});}};}function handleEntityNotFound(_0x2fb7f4){return function(_0x218f2a){if(!_0x218f2a){_0x2fb7f4[_0x7adb('0xd')](0x194);}return _0x218f2a;};}function handleError(_0x764cbb,_0x436cd6){_0x436cd6=_0x436cd6||0x1f4;return function(_0x182e54){logger[_0x7adb('0x1d')](_0x182e54[_0x7adb('0x1e')]);if(_0x182e54[_0x7adb('0x1f')]){delete _0x182e54[_0x7adb('0x1f')];}_0x764cbb['status'](_0x436cd6)[_0x7adb('0x20')](_0x182e54);};}exports[_0x7adb('0x21')]=function(_0x46ac4d,_0x15f800){var _0x44d766={};var _0x25e952={'count':0x0,'rows':[]};var _0x115569=_[_0x7adb('0x22')](db['MailQueue'][_0x7adb('0x23')],function(_0x1e61c){return{'name':_0x1e61c[_0x7adb('0x24')],'type':_0x1e61c[_0x7adb('0x25')]['key']};});_0x44d766=qs[_0x7adb('0x26')](_0x115569,_0x46ac4d);var _0x379bd1={'where':_0x44d766[_0x7adb('0x27')]};return db[_0x7adb('0x28')][_0x7adb('0x13')](_0x379bd1)[_0x7adb('0x17')](function(_0x2598d5){_0x25e952['count']=_0x2598d5;_0x44d766['include']=qs[_0x7adb('0x29')](_0x46ac4d[_0x7adb('0x2a')]);return db[_0x7adb('0x28')][_0x7adb('0x2b')](_0x44d766);})['then'](function(_0x45c253){_0x25e952['rows']=_0x45c253;return _0x25e952;})[_0x7adb('0x17')](respondWithFilteredResult(_0x15f800,_0x44d766))[_0x7adb('0x2c')](handleError(_0x15f800,null));};exports[_0x7adb('0x2d')]=function(_0x248116,_0x35060b){var _0x48ba81={'raw':!![],'where':{'id':_0x248116[_0x7adb('0x2e')]['id']}},_0x32c102={};_0x32c102[_0x7adb('0x2f')]=_[_0x7adb('0x30')](db[_0x7adb('0x28')][_0x7adb('0x23')]);_0x32c102[_0x7adb('0x2a')]=_[_0x7adb('0x30')](_0x248116[_0x7adb('0x2a')]);_0x32c102[_0x7adb('0x31')]=_['intersection'](_0x32c102[_0x7adb('0x2f')],_0x32c102[_0x7adb('0x2a')]);_0x48ba81[_0x7adb('0x32')]=_['intersection'](_0x32c102[_0x7adb('0x2f')],qs['fields'](_0x248116['query'][_0x7adb('0x33')]));_0x48ba81['attributes']=_0x48ba81['attributes'][_0x7adb('0x34')]?_0x48ba81[_0x7adb('0x32')]:_0x32c102['model'];if(_0x248116[_0x7adb('0x2a')]['includeAll']){_0x48ba81['include']=[{'all':!![]}];}_0x48ba81=_[_0x7adb('0x35')]({},_0x48ba81,_0x248116['options']);return db[_0x7adb('0x28')][_0x7adb('0x36')](_0x48ba81)['then'](handleEntityNotFound(_0x35060b,null))['then'](respondWithResult(_0x35060b,null))[_0x7adb('0x2c')](handleError(_0x35060b,null));};exports[_0x7adb('0x37')]=function(_0x1ecaa9,_0x4aede8){return db[_0x7adb('0x28')][_0x7adb('0x37')](_0x1ecaa9[_0x7adb('0x38')],{})[_0x7adb('0x17')](function(_0x118fbb){var _0x17a449=_0x1ecaa9['user'][_0x7adb('0x19')]({'plain':!![]});if(!_0x17a449)throw new Error(_0x7adb('0x39'));if(_0x17a449['role']===_0x7adb('0x3a')){var _0x1f47c8=_0x118fbb[_0x7adb('0x19')]({'plain':!![]});var _0x48efe4=_0x7adb('0x1a');return db['UserProfileSection'][_0x7adb('0x36')]({'where':{'name':_0x48efe4,'userProfileId':_0x17a449[_0x7adb('0x3b')]},'raw':!![]})[_0x7adb('0x17')](function(_0x32d4c1){if(_0x32d4c1&&_0x32d4c1[_0x7adb('0x3c')]===0x0){return db['UserProfileResource'][_0x7adb('0x37')]({'name':_0x1f47c8[_0x7adb('0x1f')],'resourceId':_0x1f47c8['id'],'type':_0x32d4c1[_0x7adb('0x1f')],'sectionId':_0x32d4c1['id']},{})[_0x7adb('0x17')](function(){return _0x118fbb;});}else{return _0x118fbb;}})['catch'](function(_0x566803){logger['error'](_0x7adb('0x3d'),_0x566803);throw _0x566803;});}return _0x118fbb;})[_0x7adb('0x17')](respondWithResult(_0x4aede8,0xc9))['catch'](handleError(_0x4aede8,null));};exports[_0x7adb('0x16')]=function(_0x5d7417,_0x2eb2f2){if(_0x5d7417[_0x7adb('0x38')]['id']){delete _0x5d7417[_0x7adb('0x38')]['id'];}return db[_0x7adb('0x28')]['find']({'where':{'id':_0x5d7417['params']['id']}})['then'](handleEntityNotFound(_0x2eb2f2,null))['then'](saveUpdates(_0x5d7417[_0x7adb('0x38')],null))['then'](respondWithResult(_0x2eb2f2,null))[_0x7adb('0x2c')](handleError(_0x2eb2f2,null));};exports[_0x7adb('0x18')]=function(_0x35cdba,_0x4c6291){return db[_0x7adb('0x28')]['find']({'where':{'id':_0x35cdba[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](handleEntityNotFound(_0x4c6291,null))[_0x7adb('0x17')](removeEntity(_0x4c6291,null))['catch'](handleError(_0x4c6291,null));};exports[_0x7adb('0x3e')]=function(_0x13395b,_0x5b252c){return db['MailQueue'][_0x7adb('0x3e')]()[_0x7adb('0x17')](respondWithResult(_0x5b252c,null))[_0x7adb('0x2c')](handleError(_0x5b252c,null));};exports['getMembers']=function(_0x45ca92,_0x209c47){var _0x2132eb={'raw':!![],'where':{}},_0x682c1a={},_0x1d8dc0;return db[_0x7adb('0x28')][_0x7adb('0x3f')]({'where':{'id':_0x45ca92[_0x7adb('0x2e')]['id']}})['then'](handleEntityNotFound(_0x209c47,null))[_0x7adb('0x17')](function(_0x18b9c9){if(_0x18b9c9){_0x1d8dc0=_0x18b9c9['get']({'plain':!![]});_0x682c1a[_0x7adb('0x2f')]=_[_0x7adb('0x30')](db[_0x7adb('0x40')]['rawAttributes']);_0x682c1a[_0x7adb('0x2a')]=_[_0x7adb('0x30')](_0x45ca92[_0x7adb('0x2a')]);_0x682c1a[_0x7adb('0x31')]=_['intersection'](_0x682c1a['model'],_0x682c1a[_0x7adb('0x2a')]);_0x2132eb[_0x7adb('0x32')]=_['intersection'](_0x682c1a[_0x7adb('0x2f')],qs[_0x7adb('0x33')](_0x45ca92[_0x7adb('0x2a')][_0x7adb('0x33')]));_0x2132eb[_0x7adb('0x32')]=_0x2132eb[_0x7adb('0x32')][_0x7adb('0x34')]?_0x2132eb[_0x7adb('0x32')]:_0x682c1a['model'];if(!_0x45ca92[_0x7adb('0x2a')]['hasOwnProperty'](_0x7adb('0x41'))){_0x2132eb['limit']=qs[_0x7adb('0x11')](_0x45ca92[_0x7adb('0x2a')][_0x7adb('0x11')]);_0x2132eb[_0x7adb('0x10')]=qs[_0x7adb('0x10')](_0x45ca92[_0x7adb('0x2a')][_0x7adb('0x10')]);}_0x2132eb[_0x7adb('0x42')]=qs['sort'](_0x45ca92['query'][_0x7adb('0x43')]);_0x2132eb[_0x7adb('0x27')]=qs[_0x7adb('0x31')](_[_0x7adb('0x44')](_0x45ca92[_0x7adb('0x2a')],_0x682c1a[_0x7adb('0x31')]));_0x2132eb[_0x7adb('0x27')][_0x7adb('0x45')]=_0x18b9c9['id'];if(_0x45ca92[_0x7adb('0x2a')][_0x7adb('0x46')]){_0x2132eb['where']=_[_0x7adb('0x35')](_0x2132eb[_0x7adb('0x27')],{'$or':_[_0x7adb('0x22')](_0x2132eb[_0x7adb('0x32')],function(_0x5caf52){var _0x4d29b1={};_0x4d29b1[_0x5caf52]={'$like':'%'+_0x45ca92['query'][_0x7adb('0x46')]+'%'};return _0x4d29b1;})});}_0x2132eb=_[_0x7adb('0x35')]({},_0x2132eb,_0x45ca92[_0x7adb('0x47')]);return db[_0x7adb('0x40')][_0x7adb('0x2b')](_0x2132eb);}})['then'](function(_0x1b7e5e){if(_0x1b7e5e){return db[_0x7adb('0x48')]['findAndCountAll']({'where':{'id':_['map'](_0x1b7e5e,_0x7adb('0x49')),'role':_0x7adb('0x4a')},'attributes':['id',_0x7adb('0x1f'),_0x7adb('0x4b'),_0x7adb('0x4c'),_0x7adb('0x4d')]});}})[_0x7adb('0x17')](function(_0x482fb7){if(_0x482fb7){return{'count':_0x482fb7[_0x7adb('0x13')],'rows':_[_0x7adb('0x22')](_0x482fb7[_0x7adb('0x4e')],function(_0x597480){return{'membername':_0x597480[_0x7adb('0x1f')],'UserId':_0x597480['id'],'queue_name':_0x1d8dc0[_0x7adb('0x1f')],'MailQueueId':_0x1d8dc0['id'],'interface':util[_0x7adb('0x4f')](_0x7adb('0x50'),_0x7adb('0x51'),_0x597480[_0x7adb('0x1f')]),'penalty':0x0,'paused':_0x597480[_0x7adb('0x4b')],'createdAt':_0x597480['createdAt'],'updatedAt':_0x597480[_0x7adb('0x4c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x209c47,_0x2132eb))['catch'](handleError(_0x209c47,null));};exports[_0x7adb('0x52')]=function(_0x88dbac,_0x27a285){var _0x4932ab={};var _0x552ec5={};var _0x57ad7e;var _0x5c6dda;return db[_0x7adb('0x28')][_0x7adb('0x3f')]({'where':{'id':_0x88dbac[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](handleEntityNotFound(_0x27a285,null))[_0x7adb('0x17')](function(_0x31b9df){if(_0x31b9df){_0x57ad7e=_0x31b9df;_0x552ec5['model']=_[_0x7adb('0x30')](db[_0x7adb('0x53')][_0x7adb('0x23')]);_0x552ec5[_0x7adb('0x2a')]=_[_0x7adb('0x30')](_0x88dbac[_0x7adb('0x2a')]);_0x552ec5['filters']=_[_0x7adb('0x54')](_0x552ec5['model'],_0x552ec5[_0x7adb('0x2a')]);_0x4932ab[_0x7adb('0x32')]=_[_0x7adb('0x54')](_0x552ec5[_0x7adb('0x2f')],qs[_0x7adb('0x33')](_0x88dbac['query'][_0x7adb('0x33')]));_0x4932ab[_0x7adb('0x32')]=_0x4932ab[_0x7adb('0x32')][_0x7adb('0x34')]?_0x4932ab['attributes']:_0x552ec5[_0x7adb('0x2f')];_0x4932ab[_0x7adb('0x42')]=qs[_0x7adb('0x43')](_0x88dbac[_0x7adb('0x2a')]['sort']);_0x4932ab[_0x7adb('0x27')]=qs['filters'](_[_0x7adb('0x44')](_0x88dbac['query'],_0x552ec5[_0x7adb('0x31')]));if(_0x88dbac[_0x7adb('0x2a')][_0x7adb('0x46')]){_0x4932ab[_0x7adb('0x27')]=_[_0x7adb('0x35')](_0x4932ab[_0x7adb('0x27')],{'$or':_[_0x7adb('0x22')](_0x4932ab[_0x7adb('0x32')],function(_0x1c11b1){var _0x25c87b={};_0x25c87b[_0x1c11b1]={'$like':'%'+_0x88dbac[_0x7adb('0x2a')][_0x7adb('0x46')]+'%'};return _0x25c87b;})});}_0x4932ab=_[_0x7adb('0x35')]({},_0x4932ab,_0x88dbac[_0x7adb('0x47')]);return _0x57ad7e[_0x7adb('0x52')](_0x4932ab);}})[_0x7adb('0x17')](function(_0x59d3a9){if(_0x59d3a9){_0x5c6dda=_0x59d3a9[_0x7adb('0x34')];if(!_0x88dbac[_0x7adb('0x2a')][_0x7adb('0x55')]('nolimit')){_0x4932ab['limit']=qs[_0x7adb('0x11')](_0x88dbac['query']['limit']);_0x4932ab[_0x7adb('0x10')]=qs[_0x7adb('0x10')](_0x88dbac['query']['offset']);}return _0x57ad7e[_0x7adb('0x52')](_0x4932ab);}})['then'](function(_0x4b6834){if(_0x4b6834){return _0x4b6834?{'count':_0x5c6dda,'rows':_0x4b6834}:null;}})[_0x7adb('0x17')](respondWithResult(_0x27a285,null))[_0x7adb('0x2c')](handleError(_0x27a285,null));};exports[_0x7adb('0x56')]=function(_0x1a8712,_0x47af9e){var _0x4f1ec5=_0x1a8712[_0x7adb('0x38')]['ids'];return db['Team'][_0x7adb('0x2b')]({'where':{'id':_0x4f1ec5},'attributes':['id'],'include':[{'model':db[_0x7adb('0x48')],'as':_0x7adb('0x57'),'attributes':['id',_0x7adb('0x1f'),_0x7adb('0x58'),_0x7adb('0x59'),_0x7adb('0x5a')],'raw':!![]}]})[_0x7adb('0x17')](function(_0x42e573){if(_0x42e573){var _0x4a1947=_[_0x7adb('0x5b')](_0x42e573,function(_0x12d856){var _0x374f6c=_0x12d856[_0x7adb('0x19')]({'plain':!![]});return _0x374f6c['Agents'];});return db['MailQueue'][_0x7adb('0x36')]({'where':{'id':_0x1a8712[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](function(_0x53bb92){return db[_0x7adb('0x5c')][_0x7adb('0x5d')](function(_0x3e2f08){return _0x53bb92[_0x7adb('0x56')](_0x4f1ec5,{'transaction':_0x3e2f08})[_0x7adb('0x17')](function(){return BPromise[_0x7adb('0x5e')](_0x4a1947,function(_0x4f732e){return db[_0x7adb('0x40')][_0x7adb('0x5f')]({'where':{'UserId':_0x4f732e['id'],'MailQueueId':_0x1a8712[_0x7adb('0x2e')]['id']},'transaction':_0x3e2f08});});})[_0x7adb('0x17')](function(){_0x4a1947[_0x7adb('0x60')](function(_0x789d51){socket[_0x7adb('0x61')](_0x7adb('0x62'),{'UserId':_0x789d51['id'],'MailQueueId':_0x53bb92['id']});});});});});}})['then'](respondWithStatusCode(_0x47af9e,null))[_0x7adb('0x2c')](handleError(_0x47af9e,null));};exports[_0x7adb('0x63')]=function(_0x2019e1,_0x5db7aa){return db['Team'][_0x7adb('0x2b')]({'where':{'id':_0x2019e1[_0x7adb('0x2a')][_0x7adb('0x64')]},'attributes':['id'],'include':[{'model':db[_0x7adb('0x48')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x7adb('0x17')](handleEntityNotFound(_0x5db7aa,null))[_0x7adb('0x17')](function(_0x440aba){var _0x3d03d0=_[_0x7adb('0x22')](_0x440aba,'id');var _0x79bc75=[];var _0x1908ae=[];var _0x1e105d=squel[_0x7adb('0x65')]();_0x1e105d[_0x7adb('0x66')](_0x7adb('0x67'))['from'](_0x7adb('0x68'),'tq')[_0x7adb('0x69')](_0x7adb('0x6a'),'ut',_0x7adb('0x6b'))[_0x7adb('0x27')](_0x7adb('0x6c'),_0x2019e1[_0x7adb('0x2e')]['id']);for(var _0x468fc8=0x0;_0x468fc8<_0x440aba[_0x7adb('0x34')];_0x468fc8+=0x1){let _0x54250a=_0x440aba[_0x468fc8];for(var _0x1e134e=0x0;_0x1e134e<_0x54250a[_0x7adb('0x57')][_0x7adb('0x34')];_0x1e134e+=0x1){let _0x2afa82=_0x54250a[_0x7adb('0x57')][_0x1e134e];var _0x29773e=_0x1e105d[_0x7adb('0x6d')]();_0x29773e[_0x7adb('0x27')](_0x7adb('0x6e'),_0x2afa82['id']);_0x1908ae[_0x7adb('0x6f')](db[_0x7adb('0x5c')][_0x7adb('0x2a')](_0x29773e['toString'](),{'type':db[_0x7adb('0x5c')][_0x7adb('0x70')][_0x7adb('0x71')]})[_0x7adb('0x17')](function(_0x4142ab){if(_0x4142ab['length']===0x1){return _0x2afa82['id'];}else{var _0x67acc7=_[_0x7adb('0x72')](_[_0x7adb('0x22')](_0x4142ab,_0x7adb('0x73')),function(_0xa4ab25){return _[_0x7adb('0x74')](_0x3d03d0,_0xa4ab25);});if(_0x67acc7){return _0x2afa82['id'];}}}));}}return BPromise['all'](_0x1908ae)[_0x7adb('0x17')](function(_0x5256b1){_0x79bc75=_(_0x79bc75)[_0x7adb('0x75')](_0x5256b1)[_0x7adb('0x76')]()['value']();return db[_0x7adb('0x28')][_0x7adb('0x36')]({'where':{'id':_0x2019e1[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](function(_0x1e3d0b){return db[_0x7adb('0x5c')]['transaction'](function(_0x2f6049){return _0x1e3d0b[_0x7adb('0x63')](_0x2019e1[_0x7adb('0x2a')][_0x7adb('0x64')],{'transaction':_0x2f6049})[_0x7adb('0x17')](function(){if(!_[_0x7adb('0x77')](_0x79bc75)){return _0x1e3d0b[_0x7adb('0x78')](_0x79bc75,{'transaction':_0x2f6049});}})[_0x7adb('0x17')](function(){_0x79bc75[_0x7adb('0x60')](function(_0x1a690d){socket[_0x7adb('0x61')](_0x7adb('0x79'),{'UserId':_0x1a690d,'MailQueueId':_0x1e3d0b['id']});});});});});});})[_0x7adb('0x17')](respondWithStatusCode(_0x5db7aa,null))[_0x7adb('0x2c')](handleError(_0x5db7aa,null));};exports[_0x7adb('0x7a')]=function(_0x2b7dc5,_0x52c220){return db[_0x7adb('0x28')][_0x7adb('0x36')]({'where':{'id':_0x2b7dc5[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](handleEntityNotFound(_0x52c220,null))[_0x7adb('0x17')](function(_0xc0dc97){if(_0xc0dc97){return _0xc0dc97[_0x7adb('0x7a')](_0x2b7dc5[_0x7adb('0x38')]['ids'],_[_0x7adb('0x7b')](_0x2b7dc5[_0x7adb('0x38')],[_0x7adb('0x64'),'id'])||{})[_0x7adb('0x7c')](function(_0x5d9e08){for(var _0x35c69a=0x0;_0x35c69a<_0x2b7dc5['body'][_0x7adb('0x64')][_0x7adb('0x34')];_0x35c69a+=0x1){socket[_0x7adb('0x61')](_0x7adb('0x62'),{'UserId':Number(_0x2b7dc5[_0x7adb('0x38')][_0x7adb('0x64')][_0x35c69a]),'MailQueueId':Number(_0x2b7dc5[_0x7adb('0x2e')]['id'])});}return _0x5d9e08;});}})[_0x7adb('0x17')](respondWithResult(_0x52c220,null))[_0x7adb('0x2c')](handleError(_0x52c220,null));};exports[_0x7adb('0x78')]=function(_0x302b66,_0x265718){return db[_0x7adb('0x28')][_0x7adb('0x36')]({'where':{'id':_0x302b66[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](handleEntityNotFound(_0x265718,null))[_0x7adb('0x17')](function(_0x5d03a5){if(_0x5d03a5){return _0x5d03a5[_0x7adb('0x78')](_0x302b66['query'][_0x7adb('0x64')])['then'](function(){if(_['isArray'](_0x302b66[_0x7adb('0x2a')][_0x7adb('0x64')])){for(var _0x16727c=0x0;_0x16727c<_0x302b66['query'][_0x7adb('0x64')]['length'];_0x16727c+=0x1){socket[_0x7adb('0x61')](_0x7adb('0x79'),{'UserId':Number(_0x302b66['query'][_0x7adb('0x64')][_0x16727c]),'MailQueueId':Number(_0x302b66['params']['id'])});}}else{socket[_0x7adb('0x61')](_0x7adb('0x79'),{'UserId':Number(_0x302b66['query'][_0x7adb('0x64')]),'MailQueueId':Number(_0x302b66[_0x7adb('0x2e')]['id'])});}});}})[_0x7adb('0x17')](respondWithStatusCode(_0x265718,null))[_0x7adb('0x2c')](handleError(_0x265718,null));};exports[_0x7adb('0x7d')]=function(_0x34d4ca,_0x34787d){var _0xa47fc4={};var _0x47964d={};var _0x5b4127;var _0x2c8eb0;return db[_0x7adb('0x28')][_0x7adb('0x3f')]({'where':{'id':_0x34d4ca[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](handleEntityNotFound(_0x34787d,null))['then'](function(_0x17d1ea){if(_0x17d1ea){_0x5b4127=_0x17d1ea;_0x47964d['model']=_[_0x7adb('0x30')](db[_0x7adb('0x48')]['rawAttributes']);_0x47964d[_0x7adb('0x2a')]=_['keys'](_0x34d4ca[_0x7adb('0x2a')]);_0x47964d[_0x7adb('0x31')]=_[_0x7adb('0x54')](_0x47964d[_0x7adb('0x2f')],_0x47964d[_0x7adb('0x2a')]);_0xa47fc4[_0x7adb('0x32')]=_[_0x7adb('0x54')](_0x47964d[_0x7adb('0x2f')],qs[_0x7adb('0x33')](_0x34d4ca['query'][_0x7adb('0x33')]));_0xa47fc4['attributes']=_0xa47fc4[_0x7adb('0x32')][_0x7adb('0x34')]?_0xa47fc4[_0x7adb('0x32')]:_0x47964d[_0x7adb('0x2f')];_0xa47fc4[_0x7adb('0x42')]=qs[_0x7adb('0x43')](_0x34d4ca[_0x7adb('0x2a')][_0x7adb('0x43')]);_0xa47fc4[_0x7adb('0x27')]=qs['filters'](_[_0x7adb('0x44')](_0x34d4ca['query'],_0x47964d[_0x7adb('0x31')]));if(_0x34d4ca[_0x7adb('0x2a')]['filter']){_0xa47fc4[_0x7adb('0x27')]=_[_0x7adb('0x35')](_0xa47fc4[_0x7adb('0x27')],{'$or':_['map'](_0xa47fc4['attributes'],function(_0x4c08b6){var _0x4fc1ec={};_0x4fc1ec[_0x4c08b6]={'$like':'%'+_0x34d4ca['query'][_0x7adb('0x46')]+'%'};return _0x4fc1ec;})});}_0xa47fc4=_[_0x7adb('0x35')]({},_0xa47fc4,_0x34d4ca['options']);return _0x5b4127[_0x7adb('0x7d')](_0xa47fc4);}})[_0x7adb('0x17')](function(_0x4d9688){if(_0x4d9688){_0x2c8eb0=_0x4d9688[_0x7adb('0x34')];if(!_0x34d4ca[_0x7adb('0x2a')][_0x7adb('0x55')](_0x7adb('0x41'))){_0xa47fc4[_0x7adb('0x11')]=qs[_0x7adb('0x11')](_0x34d4ca['query'][_0x7adb('0x11')]);_0xa47fc4[_0x7adb('0x10')]=qs[_0x7adb('0x10')](_0x34d4ca['query']['offset']);}return _0x5b4127[_0x7adb('0x7d')](_0xa47fc4);}})['then'](function(_0x36f2b6){if(_0x36f2b6){return _0x36f2b6?{'count':_0x2c8eb0,'rows':_0x36f2b6}:null;}})['then'](respondWithResult(_0x34787d,null))[_0x7adb('0x2c')](handleError(_0x34787d,null));};
\ No newline at end of file
index bb26136..efae237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c76=['remove','emit','hasOwnProperty','hook','exports','events','MailQueue','setMaxListeners','save'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0x1c76,0x71));var _0x61c7=function(_0x3fbdc3,_0x28809f){_0x3fbdc3=_0x3fbdc3-0x0;var _0x463e87=_0x1c76[_0x3fbdc3];return _0x463e87;};'use strict';var EventEmitter=require(_0x61c7('0x0'));var MailQueue=require('../../mysqldb')['db'][_0x61c7('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x61c7('0x2')](0x0);var events={'afterCreate':_0x61c7('0x3'),'afterUpdate':'update','afterDestroy':_0x61c7('0x4')};function emitEvent(_0x45f7e1){return function(_0x1759a5,_0x61b0db,_0x3cdf3d){MailQueueEvents[_0x61c7('0x5')](_0x45f7e1+':'+_0x1759a5['id'],_0x1759a5);MailQueueEvents[_0x61c7('0x5')](_0x45f7e1,_0x1759a5);_0x3cdf3d(null);};}for(var e in events){if(events[_0x61c7('0x6')](e)){var event=events[e];MailQueue[_0x61c7('0x7')](e,emitEvent(event));}}module[_0x61c7('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0x417f=['hasOwnProperty','hook','exports','events','MailQueue','setMaxListeners','save','update','remove','emit'];(function(_0x56d1db,_0xe0e50f){var _0x4dad26=function(_0x8ec9db){while(--_0x8ec9db){_0x56d1db['push'](_0x56d1db['shift']());}};_0x4dad26(++_0xe0e50f);}(_0x417f,0x8f));var _0xf417=function(_0x360f6c,_0x4a44d2){_0x360f6c=_0x360f6c-0x0;var _0x530ea0=_0x417f[_0x360f6c];return _0x530ea0;};'use strict';var EventEmitter=require(_0xf417('0x0'));var MailQueue=require('../../mysqldb')['db'][_0xf417('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xf417('0x2')](0x0);var events={'afterCreate':_0xf417('0x3'),'afterUpdate':_0xf417('0x4'),'afterDestroy':_0xf417('0x5')};function emitEvent(_0x351fd7){return function(_0x18db1f,_0x347ab6,_0x313823){MailQueueEvents[_0xf417('0x6')](_0x351fd7+':'+_0x18db1f['id'],_0x18db1f);MailQueueEvents[_0xf417('0x6')](_0x351fd7,_0x18db1f);_0x313823(null);};}for(var e in events){if(events[_0xf417('0x7')](e)){var event=events[e];MailQueue[_0xf417('0x8')](e,emitEvent(event));}}module[_0xf417('0x9')]=MailQueueEvents;
\ No newline at end of file
index 6c0d704..6b3d306 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65e9=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueue.attributes','exports','MailQueue','mail_queues','lodash','util','../../config/logger','api'];(function(_0x140e67,_0x43d9b2){var _0x254383=function(_0x4b7ffb){while(--_0x4b7ffb){_0x140e67['push'](_0x140e67['shift']());}};_0x254383(++_0x43d9b2);}(_0x65e9,0x1a0));var _0x965e=function(_0x134f3f,_0x877e10){_0x134f3f=_0x134f3f-0x0;var _0x1147d4=_0x65e9[_0x134f3f];return _0x1147d4;};'use strict';var _=require(_0x965e('0x0'));var util=require(_0x965e('0x1'));var logger=require(_0x965e('0x2'))(_0x965e('0x3'));var moment=require(_0x965e('0x4'));var BPromise=require(_0x965e('0x5'));var rp=require(_0x965e('0x6'));var fs=require('fs');var path=require(_0x965e('0x7'));var rimraf=require(_0x965e('0x8'));var config=require(_0x965e('0x9'));var attributes=require(_0x965e('0xa'));module[_0x965e('0xb')]=function(_0x5d48d8,_0x7022d6){return _0x5d48d8['define'](_0x965e('0xc'),attributes,{'tableName':_0x965e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1493=['util','api','moment','bluebird','request-promise','path','rimraf','./mailQueue.attributes','exports','define','MailQueue','lodash'];(function(_0xfae87,_0x3e5033){var _0x51618f=function(_0xd5e9d7){while(--_0xd5e9d7){_0xfae87['push'](_0xfae87['shift']());}};_0x51618f(++_0x3e5033);}(_0x1493,0x137));var _0x3149=function(_0x4e378c,_0x2ab0e6){_0x4e378c=_0x4e378c-0x0;var _0x53587b=_0x1493[_0x4e378c];return _0x53587b;};'use strict';var _=require(_0x3149('0x0'));var util=require(_0x3149('0x1'));var logger=require('../../config/logger')(_0x3149('0x2'));var moment=require(_0x3149('0x3'));var BPromise=require(_0x3149('0x4'));var rp=require(_0x3149('0x5'));var fs=require('fs');var path=require(_0x3149('0x6'));var rimraf=require(_0x3149('0x7'));var config=require('../../config/environment');var attributes=require(_0x3149('0x8'));module[_0x3149('0x9')]=function(_0x5cf5bd,_0x2d1be4){return _0x5cf5bd[_0x3149('0xa')](_0x3149('0xb'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 52a6404..46d67fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x827a=['redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','then','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetMailQueue','MailQueue','findAll','options','raw','where','attributes','limit','map','model','include','debug','ShowMailQueue','find','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http'];(function(_0x3dec7f,_0x40acc9){var _0x4a93d7=function(_0x5622e5){while(--_0x5622e5){_0x3dec7f['push'](_0x3dec7f['shift']());}};_0x4a93d7(++_0x40acc9);}(_0x827a,0x167));var _0xa827=function(_0x107010,_0x31e73e){_0x107010=_0x107010-0x0;var _0x380e82=_0x827a[_0x107010];return _0x380e82;};'use strict';var _=require(_0xa827('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa827('0x1'));var rs=require(_0xa827('0x2'));var fs=require('fs');var Redis=require(_0xa827('0x3'));var db=require(_0xa827('0x4'))['db'];var utils=require(_0xa827('0x5'));var logger=require('../../config/logger')(_0xa827('0x6'));var config=require(_0xa827('0x7'));var jayson=require(_0xa827('0x8'));var client=jayson['client'][_0xa827('0x9')]({'port':0x232a});config[_0xa827('0xa')]=_[_0xa827('0xb')](config[_0xa827('0xa')],{'host':_0xa827('0xc'),'port':0x18eb});var socket=require(_0xa827('0xd'))(new Redis(config['redis']));require(_0xa827('0xe'))[_0xa827('0xf')](socket);function respondWithRpcPromise(_0x240299,_0x207b29,_0x1d225b){return new BPromise(function(_0x160a4f,_0x468403){return client['request'](_0x240299,_0x1d225b)[_0xa827('0x10')](function(_0x5b85df){logger['info'](_0xa827('0x11'),_0x207b29,_0xa827('0x12'));logger['debug'](_0xa827('0x13'),_0x207b29,_0xa827('0x12'),JSON[_0xa827('0x14')](_0x5b85df));if(_0x5b85df[_0xa827('0x15')]){if(_0x5b85df[_0xa827('0x15')][_0xa827('0x16')]===0x1f4){logger['error'](_0xa827('0x11'),_0x207b29,_0x5b85df[_0xa827('0x15')]['message']);return _0x468403(_0x5b85df[_0xa827('0x15')][_0xa827('0x17')]);}logger['error'](_0xa827('0x11'),_0x207b29,_0x5b85df[_0xa827('0x15')][_0xa827('0x17')]);return _0x160a4f(_0x5b85df[_0xa827('0x15')][_0xa827('0x17')]);}else{logger[_0xa827('0x18')]('MailQueue,\x20%s,\x20%s',_0x207b29,'request\x20sent');_0x160a4f(_0x5b85df[_0xa827('0x19')][_0xa827('0x17')]);}})[_0xa827('0x1a')](function(_0x3a4bb3){logger[_0xa827('0x15')](_0xa827('0x11'),_0x207b29,_0x3a4bb3);_0x468403(_0x3a4bb3);});});}exports[_0xa827('0x1b')]=function(_0x53ce64){var _0x4bc21c=this;return new Promise(function(_0x763966,_0x25ccdb){return db[_0xa827('0x1c')][_0xa827('0x1d')]({'raw':_0x53ce64['options']?_0x53ce64[_0xa827('0x1e')][_0xa827('0x1f')]===undefined?!![]:![]:!![],'where':_0x53ce64[_0xa827('0x1e')]?_0x53ce64[_0xa827('0x1e')][_0xa827('0x20')]||null:null,'attributes':_0x53ce64[_0xa827('0x1e')]?_0x53ce64[_0xa827('0x1e')][_0xa827('0x21')]||null:null,'limit':_0x53ce64[_0xa827('0x1e')]?_0x53ce64['options'][_0xa827('0x22')]||null:null,'include':_0x53ce64[_0xa827('0x1e')]?_0x53ce64[_0xa827('0x1e')]['include']?_[_0xa827('0x23')](_0x53ce64[_0xa827('0x1e')]['include'],function(_0x17c8ee){return{'model':db[_0x17c8ee[_0xa827('0x24')]],'as':_0x17c8ee['as'],'attributes':_0x17c8ee['attributes'],'include':_0x17c8ee[_0xa827('0x25')]?_[_0xa827('0x23')](_0x17c8ee[_0xa827('0x25')],function(_0x385cb9){return{'model':db[_0x385cb9[_0xa827('0x24')]],'as':_0x385cb9['as'],'attributes':_0x385cb9[_0xa827('0x21')],'include':_0x385cb9[_0xa827('0x25')]?_[_0xa827('0x23')](_0x385cb9[_0xa827('0x25')],function(_0x1fcb54){return{'model':db[_0x1fcb54[_0xa827('0x24')]],'as':_0x1fcb54['as'],'attributes':_0x1fcb54[_0xa827('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x19fa2f){logger[_0xa827('0x18')](_0xa827('0x1b'),_0x53ce64);logger[_0xa827('0x26')](_0xa827('0x1b'),_0x53ce64,JSON['stringify'](_0x19fa2f));_0x763966(_0x19fa2f);})[_0xa827('0x1a')](function(_0x2f3668){logger[_0xa827('0x15')](_0xa827('0x1b'),_0x2f3668[_0xa827('0x17')],_0x53ce64);_0x25ccdb(_0x4bc21c['error'](0x1f4,_0x2f3668[_0xa827('0x17')]));});});};exports[_0xa827('0x27')]=function(_0x127b5a){var _0x50d308=this;return new Promise(function(_0x3d0aec,_0x2063bf){return db['MailQueue'][_0xa827('0x28')]({'raw':_0x127b5a[_0xa827('0x1e')]?_0x127b5a['options'][_0xa827('0x1f')]===undefined?!![]:![]:!![],'where':_0x127b5a[_0xa827('0x1e')]?_0x127b5a[_0xa827('0x1e')][_0xa827('0x20')]||null:null,'attributes':_0x127b5a[_0xa827('0x1e')]?_0x127b5a['options']['attributes']||null:null,'include':_0x127b5a[_0xa827('0x1e')]?_0x127b5a[_0xa827('0x1e')][_0xa827('0x25')]?_[_0xa827('0x23')](_0x127b5a[_0xa827('0x1e')][_0xa827('0x25')],function(_0x2e4727){return{'model':db[_0x2e4727[_0xa827('0x24')]],'as':_0x2e4727['as'],'attributes':_0x2e4727[_0xa827('0x21')],'include':_0x2e4727['include']?_[_0xa827('0x23')](_0x2e4727[_0xa827('0x25')],function(_0x396908){return{'model':db[_0x396908[_0xa827('0x24')]],'as':_0x396908['as'],'attributes':_0x396908[_0xa827('0x21')],'include':_0x396908['include']?_[_0xa827('0x23')](_0x396908[_0xa827('0x25')],function(_0x3f9ecb){return{'model':db[_0x3f9ecb[_0xa827('0x24')]],'as':_0x3f9ecb['as'],'attributes':_0x3f9ecb[_0xa827('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa827('0x10')](function(_0x36a21a){logger['info'](_0xa827('0x27'),_0x127b5a);logger[_0xa827('0x26')]('ShowMailQueue',_0x127b5a,JSON[_0xa827('0x14')](_0x36a21a));_0x3d0aec(_0x36a21a);})[_0xa827('0x1a')](function(_0x4eeae9){logger[_0xa827('0x15')](_0xa827('0x27'),_0x4eeae9['message'],_0x127b5a);_0x2063bf(_0x50d308[_0xa827('0x15')](0x1f4,_0x4eeae9[_0xa827('0x17')]));});});};
\ No newline at end of file
+var _0x50a0=['model','stringify','ShowMailQueue','find','map','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./mailQueue.socket','register','then','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','error','code','message','MailQueue,\x20%s,\x20%s','info','result','catch','GetMailQueue','MailQueue','options','raw','where','attributes','include'];(function(_0x4b4670,_0x25ec3b){var _0x340a16=function(_0x1d5b68){while(--_0x1d5b68){_0x4b4670['push'](_0x4b4670['shift']());}};_0x340a16(++_0x25ec3b);}(_0x50a0,0x80));var _0x050a=function(_0x5ca467,_0x27129e){_0x5ca467=_0x5ca467-0x0;var _0xf7d692=_0x50a0[_0x5ca467];return _0xf7d692;};'use strict';var _=require(_0x050a('0x0'));var util=require(_0x050a('0x1'));var moment=require(_0x050a('0x2'));var BPromise=require('bluebird');var rs=require(_0x050a('0x3'));var fs=require('fs');var Redis=require(_0x050a('0x4'));var db=require(_0x050a('0x5'))['db'];var utils=require(_0x050a('0x6'));var logger=require(_0x050a('0x7'))(_0x050a('0x8'));var config=require(_0x050a('0x9'));var jayson=require(_0x050a('0xa'));var client=jayson[_0x050a('0xb')][_0x050a('0xc')]({'port':0x232a});config[_0x050a('0xd')]=_[_0x050a('0xe')](config[_0x050a('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x050a('0xf'))(new Redis(config[_0x050a('0xd')]));require(_0x050a('0x10'))[_0x050a('0x11')](socket);function respondWithRpcPromise(_0x43d993,_0x241bd7,_0x555474){return new BPromise(function(_0x354853,_0x5099f9){return client['request'](_0x43d993,_0x555474)[_0x050a('0x12')](function(_0x1f7309){logger['info']('MailQueue,\x20%s,\x20%s',_0x241bd7,_0x050a('0x13'));logger[_0x050a('0x14')](_0x050a('0x15'),_0x241bd7,_0x050a('0x13'),JSON['stringify'](_0x1f7309));if(_0x1f7309[_0x050a('0x16')]){if(_0x1f7309[_0x050a('0x16')][_0x050a('0x17')]===0x1f4){logger[_0x050a('0x16')]('MailQueue,\x20%s,\x20%s',_0x241bd7,_0x1f7309['error'][_0x050a('0x18')]);return _0x5099f9(_0x1f7309['error'][_0x050a('0x18')]);}logger[_0x050a('0x16')](_0x050a('0x19'),_0x241bd7,_0x1f7309[_0x050a('0x16')][_0x050a('0x18')]);return _0x354853(_0x1f7309[_0x050a('0x16')][_0x050a('0x18')]);}else{logger[_0x050a('0x1a')](_0x050a('0x19'),_0x241bd7,_0x050a('0x13'));_0x354853(_0x1f7309[_0x050a('0x1b')][_0x050a('0x18')]);}})[_0x050a('0x1c')](function(_0x29ea85){logger[_0x050a('0x16')](_0x050a('0x19'),_0x241bd7,_0x29ea85);_0x5099f9(_0x29ea85);});});}exports[_0x050a('0x1d')]=function(_0x1d9bbb){var _0x58b350=this;return new Promise(function(_0x2df939,_0xbf8163){return db[_0x050a('0x1e')]['findAll']({'raw':_0x1d9bbb[_0x050a('0x1f')]?_0x1d9bbb[_0x050a('0x1f')][_0x050a('0x20')]===undefined?!![]:![]:!![],'where':_0x1d9bbb[_0x050a('0x1f')]?_0x1d9bbb[_0x050a('0x1f')][_0x050a('0x21')]||null:null,'attributes':_0x1d9bbb[_0x050a('0x1f')]?_0x1d9bbb['options'][_0x050a('0x22')]||null:null,'limit':_0x1d9bbb[_0x050a('0x1f')]?_0x1d9bbb[_0x050a('0x1f')]['limit']||null:null,'include':_0x1d9bbb[_0x050a('0x1f')]?_0x1d9bbb[_0x050a('0x1f')][_0x050a('0x23')]?_['map'](_0x1d9bbb[_0x050a('0x1f')][_0x050a('0x23')],function(_0x236cfb){return{'model':db[_0x236cfb[_0x050a('0x24')]],'as':_0x236cfb['as'],'attributes':_0x236cfb[_0x050a('0x22')],'include':_0x236cfb['include']?_['map'](_0x236cfb[_0x050a('0x23')],function(_0x14ce2e){return{'model':db[_0x14ce2e[_0x050a('0x24')]],'as':_0x14ce2e['as'],'attributes':_0x14ce2e[_0x050a('0x22')],'include':_0x14ce2e[_0x050a('0x23')]?_['map'](_0x14ce2e['include'],function(_0x2ec273){return{'model':db[_0x2ec273['model']],'as':_0x2ec273['as'],'attributes':_0x2ec273[_0x050a('0x22')]};}):[]};}):[]};}):[]:[]})[_0x050a('0x12')](function(_0x5c0568){logger['info'](_0x050a('0x1d'),_0x1d9bbb);logger[_0x050a('0x14')]('GetMailQueue',_0x1d9bbb,JSON[_0x050a('0x25')](_0x5c0568));_0x2df939(_0x5c0568);})[_0x050a('0x1c')](function(_0x269250){logger[_0x050a('0x16')]('GetMailQueue',_0x269250['message'],_0x1d9bbb);_0xbf8163(_0x58b350['error'](0x1f4,_0x269250[_0x050a('0x18')]));});});};exports[_0x050a('0x26')]=function(_0x279bf2){var _0x46b558=this;return new Promise(function(_0x379c93,_0x1d3425){return db['MailQueue'][_0x050a('0x27')]({'raw':_0x279bf2[_0x050a('0x1f')]?_0x279bf2[_0x050a('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x279bf2['options']?_0x279bf2[_0x050a('0x1f')][_0x050a('0x21')]||null:null,'attributes':_0x279bf2['options']?_0x279bf2['options'][_0x050a('0x22')]||null:null,'include':_0x279bf2[_0x050a('0x1f')]?_0x279bf2[_0x050a('0x1f')][_0x050a('0x23')]?_['map'](_0x279bf2['options']['include'],function(_0x238c1e){return{'model':db[_0x238c1e[_0x050a('0x24')]],'as':_0x238c1e['as'],'attributes':_0x238c1e[_0x050a('0x22')],'include':_0x238c1e[_0x050a('0x23')]?_[_0x050a('0x28')](_0x238c1e[_0x050a('0x23')],function(_0x284051){return{'model':db[_0x284051[_0x050a('0x24')]],'as':_0x284051['as'],'attributes':_0x284051[_0x050a('0x22')],'include':_0x284051['include']?_[_0x050a('0x28')](_0x284051['include'],function(_0x463f94){return{'model':db[_0x463f94['model']],'as':_0x463f94['as'],'attributes':_0x463f94[_0x050a('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ec40d){logger[_0x050a('0x1a')](_0x050a('0x26'),_0x279bf2);logger[_0x050a('0x14')](_0x050a('0x26'),_0x279bf2,JSON[_0x050a('0x25')](_0x1ec40d));_0x379c93(_0x1ec40d);})[_0x050a('0x1c')](function(_0x4eaedc){logger[_0x050a('0x16')](_0x050a('0x26'),_0x4eaedc[_0x050a('0x18')],_0x279bf2);_0x1d3425(_0x46b558['error'](0x1f4,_0x4eaedc[_0x050a('0x18')]));});});};
\ No newline at end of file
index eb15818..133f410 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee0=['emit','length','mailQueue:','save','remove','update'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbee0,0x147));var _0x0bee=function(_0x34b6f6,_0x440274){_0x34b6f6=_0x34b6f6-0x0;var _0x104376=_0xbee0[_0x34b6f6];return _0x104376;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0x0bee('0x0'),_0x0bee('0x1'),_0x0bee('0x2')];function createListener(_0x37fcf4,_0x1e68ef){return function(_0x1a5077){_0x1e68ef[_0x0bee('0x3')](_0x37fcf4,_0x1a5077);};}function removeListener(_0xaed51f,_0x4ac5c8){return function(){MailQueueEvents['removeListener'](_0xaed51f,_0x4ac5c8);};}exports['register']=function(_0xd0c8f){for(var _0xa3a091=0x0,_0x3e499b=events[_0x0bee('0x4')];_0xa3a091<_0x3e499b;_0xa3a091++){var _0x498d63=events[_0xa3a091];var _0x163a08=createListener(_0x0bee('0x5')+_0x498d63,_0xd0c8f);MailQueueEvents['on'](_0x498d63,_0x163a08);}};
\ No newline at end of file
+var _0xf891=['removeListener','register','mailQueue:','./mailQueue.events','save','emit'];(function(_0xf1cbea,_0x40c62d){var _0x55630c=function(_0x1c8074){while(--_0x1c8074){_0xf1cbea['push'](_0xf1cbea['shift']());}};_0x55630c(++_0x40c62d);}(_0xf891,0x93));var _0x1f89=function(_0x444fa8,_0x1215d7){_0x444fa8=_0x444fa8-0x0;var _0x1c6634=_0xf891[_0x444fa8];return _0x1c6634;};'use strict';var MailQueueEvents=require(_0x1f89('0x0'));var events=[_0x1f89('0x1'),'remove','update'];function createListener(_0x4fa87c,_0x586eb0){return function(_0x4c15de){_0x586eb0[_0x1f89('0x2')](_0x4fa87c,_0x4c15de);};}function removeListener(_0x532281,_0x20df27){return function(){MailQueueEvents[_0x1f89('0x3')](_0x532281,_0x20df27);};}exports[_0x1f89('0x4')]=function(_0x52c493){for(var _0x1acdc4=0x0,_0x3857bb=events['length'];_0x1acdc4<_0x3857bb;_0x1acdc4++){var _0x14ba98=events[_0x1acdc4];var _0x42d055=createListener(_0x1f89('0x5')+_0x14ba98,_0x52c493);MailQueueEvents['on'](_0x14ba98,_0x42d055);}};
\ No newline at end of file
index 6484b63..b2410fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5322=['describe','/:id','show','post','create','put','update','delete','destroy','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index'];(function(_0x4a96d2,_0x689504){var _0x38af04=function(_0x3a67cd){while(--_0x3a67cd){_0x4a96d2['push'](_0x4a96d2['shift']());}};_0x38af04(++_0x689504);}(_0x5322,0xe5));var _0x2532=function(_0x553150,_0x589ff3){_0x553150=_0x553150-0x0;var _0x18193d=_0x5322[_0x553150];return _0x18193d;};'use strict';var multer=require(_0x2532('0x0'));var util=require(_0x2532('0x1'));var path=require(_0x2532('0x2'));var timeout=require('connect-timeout');var express=require(_0x2532('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2532('0x4'));var interaction=require(_0x2532('0x5'));var config=require(_0x2532('0x6'));var controller=require(_0x2532('0x7'));router[_0x2532('0x8')]('/',auth[_0x2532('0x9')](),controller[_0x2532('0xa')]);router[_0x2532('0x8')]('/describe',auth[_0x2532('0x9')](),controller[_0x2532('0xb')]);router[_0x2532('0x8')](_0x2532('0xc'),auth[_0x2532('0x9')](),controller[_0x2532('0xd')]);router[_0x2532('0xe')]('/',auth['isAuthenticated'](),controller[_0x2532('0xf')]);router[_0x2532('0x10')](_0x2532('0xc'),auth[_0x2532('0x9')](),controller[_0x2532('0x11')]);router[_0x2532('0x12')](_0x2532('0xc'),auth[_0x2532('0x9')](),controller[_0x2532('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x94ad=['exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe','describe','post','create','put','update','delete'];(function(_0x540ef7,_0x45b827){var _0x3655da=function(_0x2f6166){while(--_0x2f6166){_0x540ef7['push'](_0x540ef7['shift']());}};_0x3655da(++_0x45b827);}(_0x94ad,0x1b9));var _0xd94a=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x94ad[_0x46698a];return _0x356db0;};'use strict';var multer=require(_0xd94a('0x0'));var util=require(_0xd94a('0x1'));var path=require(_0xd94a('0x2'));var timeout=require(_0xd94a('0x3'));var express=require(_0xd94a('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd94a('0x5'));var interaction=require(_0xd94a('0x6'));var config=require(_0xd94a('0x7'));var controller=require(_0xd94a('0x8'));router[_0xd94a('0x9')]('/',auth[_0xd94a('0xa')](),controller[_0xd94a('0xb')]);router[_0xd94a('0x9')](_0xd94a('0xc'),auth[_0xd94a('0xa')](),controller[_0xd94a('0xd')]);router['get']('/:id',auth[_0xd94a('0xa')](),controller['show']);router[_0xd94a('0xe')]('/',auth[_0xd94a('0xa')](),controller[_0xd94a('0xf')]);router[_0xd94a('0x10')]('/:id',auth[_0xd94a('0xa')](),controller[_0xd94a('0x11')]);router[_0xd94a('0x12')]('/:id',auth[_0xd94a('0xa')](),controller['destroy']);module[_0xd94a('0x13')]=router;
\ No newline at end of file
index 93ae947..c76d44e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa9c=['moment','sequelize','exports','STRING','DATE'];(function(_0x24c086,_0x1cc5e8){var _0x41c437=function(_0x5e4299){while(--_0x5e4299){_0x24c086['push'](_0x24c086['shift']());}};_0x41c437(++_0x1cc5e8);}(_0xaa9c,0x1f4));var _0xcaa9=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0xaa9c[_0x5f3f88];return _0xd08119;};'use strict';var moment=require(_0xcaa9('0x0'));var Sequelize=require(_0xcaa9('0x1'));module[_0xcaa9('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xcaa9('0x3')]},'joinAt':{'type':Sequelize[_0xcaa9('0x4')]},'leaveAt':{'type':Sequelize[_0xcaa9('0x4')]},'acceptAt':{'type':Sequelize[_0xcaa9('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xcaa9('0x3')]}};
\ No newline at end of file
+var _0xd056=['STRING','DATE','sequelize','exports'];(function(_0x3e60ae,_0x4217f7){var _0xf7877e=function(_0xd22e0b){while(--_0xd22e0b){_0x3e60ae['push'](_0x3e60ae['shift']());}};_0xf7877e(++_0x4217f7);}(_0xd056,0x142));var _0x6d05=function(_0xdd18e,_0x1f2333){_0xdd18e=_0xdd18e-0x0;var _0x7e287=_0xd056[_0xdd18e];return _0x7e287;};'use strict';var moment=require('moment');var Sequelize=require(_0x6d05('0x0'));module[_0x6d05('0x1')]={'uniqueid':{'type':Sequelize[_0x6d05('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x6d05('0x2')]},'joinAt':{'type':Sequelize[_0x6d05('0x3')]},'leaveAt':{'type':Sequelize[_0x6d05('0x3')]},'acceptAt':{'type':Sequelize[_0x6d05('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x6d05('0x2')]}};
\ No newline at end of file
index a6518ed..8f28ad6 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(_0x4fc0a9,_0x3b4ff5){var _0x226a32=function(_0x5b359a){while(--_0x5b359a){_0x4fc0a9['push'](_0x4fc0a9['shift']());}};_0x226a32(++_0x3b4ff5);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xf2e3[_0x599f41];return _0x2e4d58;};'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 _0xb44a=['options','rows','catch','show','params','includeAll','merge','create','body','find','destroy','describe','zip-dir','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','error','stack','name','send','MailQueueReport','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','type','VIRTUAL'];(function(_0x498573,_0x1b5c26){var _0x32a269=function(_0x4ebcde){while(--_0x4ebcde){_0x498573['push'](_0x498573['shift']());}};_0x32a269(++_0x1b5c26);}(_0xb44a,0x1c2));var _0xab44=function(_0x595bd1,_0xb1e7a){_0x595bd1=_0x595bd1-0x0;var _0xd0344f=_0xb44a[_0x595bd1];return _0xd0344f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xab44('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xab44('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xab44('0x2'));var util=require('util');var path=require(_0xab44('0x3'));var sox=require(_0xab44('0x4'));var csv=require(_0xab44('0x5'));var ejs=require(_0xab44('0x6'));var fs=require('fs');var fs_extra=require(_0xab44('0x7'));var _=require(_0xab44('0x8'));var squel=require(_0xab44('0x9'));var crypto=require(_0xab44('0xa'));var jsforce=require(_0xab44('0xb'));var deskjs=require(_0xab44('0xc'));var toCsv=require(_0xab44('0x5'));var querystring=require(_0xab44('0xd'));var Papa=require(_0xab44('0xe'));var Redis=require('ioredis');var authService=require(_0xab44('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xab44('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xab44('0x11'));var utils=require(_0xab44('0x12'));var config=require(_0xab44('0x13'));var licenseUtil=require(_0xab44('0x14'));var db=require(_0xab44('0x15'))['db'];function respondWithStatusCode(_0x237c26,_0x52d282){_0x52d282=_0x52d282||0xcc;return function(_0x57fcff){if(_0x57fcff){return _0x237c26[_0xab44('0x16')](_0x52d282);}return _0x237c26['status'](_0x52d282)[_0xab44('0x17')]();};}function respondWithResult(_0x5ae369,_0x25f611){_0x25f611=_0x25f611||0xc8;return function(_0x15b98a){if(_0x15b98a){return _0x5ae369[_0xab44('0x18')](_0x25f611)[_0xab44('0x19')](_0x15b98a);}};}function respondWithFilteredResult(_0x31404d,_0x41701b){return function(_0x4875df){if(_0x4875df){var _0x51251b=typeof _0x41701b[_0xab44('0x1a')]===_0xab44('0x1b')&&typeof _0x41701b[_0xab44('0x1c')]===_0xab44('0x1b');var _0xffdfbc=_0x4875df[_0xab44('0x1d')];var _0x354b09=_0x51251b?0x0:_0x41701b[_0xab44('0x1a')];var _0x310b15=_0x51251b?_0x4875df[_0xab44('0x1d')]:_0x41701b[_0xab44('0x1a')]+_0x41701b['limit'];var _0xb779bb;if(_0x310b15>=_0xffdfbc){_0x310b15=_0xffdfbc;_0xb779bb=0xc8;}else{_0xb779bb=0xce;}_0x31404d[_0xab44('0x18')](_0xb779bb);return _0x31404d[_0xab44('0x1e')](_0xab44('0x1f'),_0x354b09+'-'+_0x310b15+'/'+_0xffdfbc)[_0xab44('0x19')](_0x4875df);}return null;};}function patchUpdates(_0x5123b1){return function(_0xcd426){try{jsonpatch['apply'](_0xcd426,_0x5123b1,!![]);}catch(_0x1f7311){return BPromise[_0xab44('0x20')](_0x1f7311);}return _0xcd426[_0xab44('0x21')]();};}function saveUpdates(_0x355083,_0x486317){return function(_0x3a2b1d){if(_0x3a2b1d){return _0x3a2b1d[_0xab44('0x22')](_0x355083)[_0xab44('0x23')](function(_0x3b17d5){return _0x3b17d5;});}return null;};}function removeEntity(_0x11f0b,_0x402950){return function(_0x43f1c6){if(_0x43f1c6){return _0x43f1c6['destroy']()['then'](function(){_0x11f0b[_0xab44('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2439f3,_0x5a7269){return function(_0x2a1bbc){if(!_0x2a1bbc){_0x2439f3['sendStatus'](0x194);}return _0x2a1bbc;};}function handleError(_0x531583,_0x8e60fa){_0x8e60fa=_0x8e60fa||0x1f4;return function(_0x25287b){logger[_0xab44('0x24')](_0x25287b[_0xab44('0x25')]);if(_0x25287b[_0xab44('0x26')]){delete _0x25287b['name'];}_0x531583[_0xab44('0x18')](_0x8e60fa)[_0xab44('0x27')](_0x25287b);};}exports['index']=function(_0x887b0d,_0xebb7d1){var _0x21131e={},_0x1cd486={},_0x4550c8={'count':0x0,'rows':[]};var _0xdc50a1=_['map'](db[_0xab44('0x28')][_0xab44('0x29')],function(_0x36f9b6){return{'name':_0x36f9b6['fieldName'],'type':_0x36f9b6['type'][_0xab44('0x2a')]};});_0x1cd486['model']=_['map'](_0xdc50a1,_0xab44('0x26'));_0x1cd486[_0xab44('0x2b')]=_[_0xab44('0x2c')](_0x887b0d[_0xab44('0x2b')]);_0x1cd486[_0xab44('0x2d')]=_[_0xab44('0x2e')](_0x1cd486[_0xab44('0x2f')],_0x1cd486[_0xab44('0x2b')]);_0x21131e[_0xab44('0x30')]=_[_0xab44('0x2e')](_0x1cd486[_0xab44('0x2f')],qs[_0xab44('0x31')](_0x887b0d[_0xab44('0x2b')][_0xab44('0x31')]));_0x21131e['attributes']=_0x21131e['attributes'][_0xab44('0x32')]?_0x21131e[_0xab44('0x30')]:_0x1cd486['model'];if(!_0x887b0d[_0xab44('0x2b')][_0xab44('0x33')](_0xab44('0x34'))){_0x21131e[_0xab44('0x1c')]=qs[_0xab44('0x1c')](_0x887b0d[_0xab44('0x2b')][_0xab44('0x1c')]);_0x21131e[_0xab44('0x1a')]=qs[_0xab44('0x1a')](_0x887b0d[_0xab44('0x2b')][_0xab44('0x1a')]);}_0x21131e[_0xab44('0x35')]=qs[_0xab44('0x36')](_0x887b0d[_0xab44('0x2b')][_0xab44('0x36')]);_0x21131e[_0xab44('0x37')]=qs[_0xab44('0x2d')](_[_0xab44('0x38')](_0x887b0d['query'],_0x1cd486[_0xab44('0x2d')]),_0xdc50a1);if(_0x887b0d[_0xab44('0x2b')][_0xab44('0x39')]){_0x21131e[_0xab44('0x37')]=_['merge'](_0x21131e[_0xab44('0x37')],{'$or':_[_0xab44('0x3a')](_0xdc50a1,function(_0xcd077a){if(_0xcd077a[_0xab44('0x3b')]!==_0xab44('0x3c')){var _0x4f5cf3={};_0x4f5cf3[_0xcd077a[_0xab44('0x26')]]={'$like':'%'+_0x887b0d[_0xab44('0x2b')][_0xab44('0x39')]+'%'};return _0x4f5cf3;}})});}_0x21131e=_['merge']({},_0x21131e,_0x887b0d[_0xab44('0x3d')]);var _0x1e26de={'where':_0x21131e[_0xab44('0x37')]};return db[_0xab44('0x28')][_0xab44('0x1d')](_0x1e26de)['then'](function(_0x1de52d){_0x4550c8['count']=_0x1de52d;if(_0x887b0d[_0xab44('0x2b')]['includeAll']){_0x21131e['include']=[{'all':!![]}];}return db['MailQueueReport']['findAll'](_0x21131e);})['then'](function(_0x120585){_0x4550c8[_0xab44('0x3e')]=_0x120585;return _0x4550c8;})[_0xab44('0x23')](respondWithFilteredResult(_0xebb7d1,_0x21131e))[_0xab44('0x3f')](handleError(_0xebb7d1,null));};exports[_0xab44('0x40')]=function(_0xf3f37a,_0x19d20d){var _0x33641e={'raw':!![],'where':{'id':_0xf3f37a[_0xab44('0x41')]['id']}},_0x4429e6={};_0x4429e6['model']=_[_0xab44('0x2c')](db[_0xab44('0x28')][_0xab44('0x29')]);_0x4429e6[_0xab44('0x2b')]=_['keys'](_0xf3f37a[_0xab44('0x2b')]);_0x4429e6[_0xab44('0x2d')]=_[_0xab44('0x2e')](_0x4429e6[_0xab44('0x2f')],_0x4429e6[_0xab44('0x2b')]);_0x33641e[_0xab44('0x30')]=_['intersection'](_0x4429e6['model'],qs[_0xab44('0x31')](_0xf3f37a[_0xab44('0x2b')][_0xab44('0x31')]));_0x33641e[_0xab44('0x30')]=_0x33641e[_0xab44('0x30')]['length']?_0x33641e[_0xab44('0x30')]:_0x4429e6[_0xab44('0x2f')];if(_0xf3f37a[_0xab44('0x2b')][_0xab44('0x42')]){_0x33641e['include']=[{'all':!![]}];}_0x33641e=_[_0xab44('0x43')]({},_0x33641e,_0xf3f37a[_0xab44('0x3d')]);return db[_0xab44('0x28')]['find'](_0x33641e)[_0xab44('0x23')](handleEntityNotFound(_0x19d20d,null))[_0xab44('0x23')](respondWithResult(_0x19d20d,null))[_0xab44('0x3f')](handleError(_0x19d20d,null));};exports[_0xab44('0x44')]=function(_0x4eeb65,_0x13892d){return db['MailQueueReport'][_0xab44('0x44')](_0x4eeb65[_0xab44('0x45')],{})[_0xab44('0x23')](respondWithResult(_0x13892d,0xc9))[_0xab44('0x3f')](handleError(_0x13892d,null));};exports['update']=function(_0x328891,_0x5497a3){if(_0x328891[_0xab44('0x45')]['id']){delete _0x328891[_0xab44('0x45')]['id'];}return db[_0xab44('0x28')][_0xab44('0x46')]({'where':{'id':_0x328891[_0xab44('0x41')]['id']}})['then'](handleEntityNotFound(_0x5497a3,null))[_0xab44('0x23')](saveUpdates(_0x328891['body'],null))[_0xab44('0x23')](respondWithResult(_0x5497a3,null))[_0xab44('0x3f')](handleError(_0x5497a3,null));};exports[_0xab44('0x47')]=function(_0x50b705,_0x4463f1){return db[_0xab44('0x28')][_0xab44('0x46')]({'where':{'id':_0x50b705[_0xab44('0x41')]['id']}})[_0xab44('0x23')](handleEntityNotFound(_0x4463f1,null))['then'](removeEntity(_0x4463f1,null))['catch'](handleError(_0x4463f1,null));};exports[_0xab44('0x48')]=function(_0x1b18fb,_0xaa00a1){return db['MailQueueReport'][_0xab44('0x48')]()[_0xab44('0x23')](respondWithResult(_0xaa00a1,null))[_0xab44('0x3f')](handleError(_0xaa00a1,null));};
\ No newline at end of file
index 4fa8365..02ca91a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88f2=['lodash','util','../../config/logger','moment','bluebird','path','rimraf','./mailQueueReport.attributes','exports','define','MailQueueReport','report_mail_queue'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x88f2,0xc0));var _0x288f=function(_0x434c85,_0x3fd354){_0x434c85=_0x434c85-0x0;var _0x241458=_0x88f2[_0x434c85];return _0x241458;};'use strict';var _=require(_0x288f('0x0'));var util=require(_0x288f('0x1'));var logger=require(_0x288f('0x2'))('api');var moment=require(_0x288f('0x3'));var BPromise=require(_0x288f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x288f('0x5'));var rimraf=require(_0x288f('0x6'));var config=require('../../config/environment');var attributes=require(_0x288f('0x7'));module[_0x288f('0x8')]=function(_0x19004d,_0x108a5c){return _0x19004d[_0x288f('0x9')](_0x288f('0xa'),attributes,{'tableName':_0x288f('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc319=['MailQueueReport','report_mail_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./mailQueueReport.attributes','define'];(function(_0x53081b,_0x283ae4){var _0x9c019a=function(_0x1b30bd){while(--_0x1b30bd){_0x53081b['push'](_0x53081b['shift']());}};_0x9c019a(++_0x283ae4);}(_0xc319,0x12e));var _0x9c31=function(_0x1bfe7e,_0x142595){_0x1bfe7e=_0x1bfe7e-0x0;var _0x2ad450=_0xc319[_0x1bfe7e];return _0x2ad450;};'use strict';var _=require(_0x9c31('0x0'));var util=require(_0x9c31('0x1'));var logger=require(_0x9c31('0x2'))('api');var moment=require(_0x9c31('0x3'));var BPromise=require(_0x9c31('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9c31('0x5'));var rimraf=require(_0x9c31('0x6'));var config=require(_0x9c31('0x7'));var attributes=require(_0x9c31('0x8'));module['exports']=function(_0x401c82,_0x109244){return _0x401c82[_0x9c31('0x9')](_0x9c31('0xa'),attributes,{'tableName':_0x9c31('0xb'),'paranoid':![],'indexes':[{'name':_0x9c31('0xc'),'fields':[_0x9c31('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 065efd0..00b8663 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(_0xd25008,_0x2bfabf){var _0x282447=function(_0xb8fe0b){while(--_0xb8fe0b){_0xd25008['push'](_0xd25008['shift']());}};_0x282447(++_0x2bfabf);}(_0x326f,0xd1));var _0xf326=function(_0x28fee2,_0x2d33d7){_0x28fee2=_0x28fee2-0x0;var _0x5d013f=_0x326f[_0x28fee2];return _0x5d013f;};'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 _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(_0x5df8fa,_0x4ca583){var _0x498172=function(_0x23655a){while(--_0x23655a){_0x5df8fa['push'](_0x5df8fa['shift']());}};_0x498172(++_0x4ca583);}(_0x326f,0xd1));var _0xf326=function(_0xb897c6,_0x49a734){_0xb897c6=_0xb897c6-0x0;var _0x3b5cc7=_0x326f[_0xb897c6];return _0x3b5cc7;};'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
index d8e6f06..2fe241f 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(_0x5cf877,_0x45bc82){var _0x2dc09c=function(_0x2843de){while(--_0x2843de){_0x5cf877['push'](_0x5cf877['shift']());}};_0x2dc09c(++_0x45bc82);}(_0x70e0,0x17b));var _0x070e=function(_0x2a2d71,_0x1c87a2){_0x2a2d71=_0x2a2d71-0x0;var _0x4fa0b3=_0x70e0[_0x2a2d71];return _0x4fa0b3;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x6862f1,_0x4a75f0){var _0x313c6b=function(_0x395872){while(--_0x395872){_0x6862f1['push'](_0x6862f1['shift']());}};_0x313c6b(++_0x4a75f0);}(_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 9ce48d9..7317611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb563=['INBOX','exports','STRING','BOOLEAN','INTEGER'];(function(_0xb8cd85,_0x12d745){var _0x1ddb38=function(_0x420478){while(--_0x420478){_0xb8cd85['push'](_0xb8cd85['shift']());}};_0x1ddb38(++_0x12d745);}(_0xb563,0x16e));var _0x3b56=function(_0x3f2f33,_0x481350){_0x3f2f33=_0x3f2f33-0x0;var _0x35bc47=_0xb563[_0x3f2f33];return _0x35bc47;};'use strict';var Sequelize=require('sequelize');module[_0x3b56('0x0')]={'description':{'type':Sequelize[_0x3b56('0x1')]},'host':{'type':Sequelize[_0x3b56('0x1')]},'authentication':{'type':Sequelize[_0x3b56('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0x3b56('0x1')]},'password':{'type':Sequelize[_0x3b56('0x1')]},'port':{'type':Sequelize[_0x3b56('0x3')]},'tls':{'type':Sequelize[_0x3b56('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0x3b56('0x4')},'connTimeout':{'type':Sequelize[_0x3b56('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x3b56('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x3b56('0x1')]},'modernAuthentication':{'type':Sequelize[_0x3b56('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0645=['INBOX','exports','STRING','BOOLEAN','INTEGER'];(function(_0x57ae08,_0x41c0c5){var _0x49479f=function(_0x4e5b85){while(--_0x4e5b85){_0x57ae08['push'](_0x57ae08['shift']());}};_0x49479f(++_0x41c0c5);}(_0x0645,0xa6));var _0x5064=function(_0x52fb9d,_0x845bdd){_0x52fb9d=_0x52fb9d-0x0;var _0x418e8e=_0x0645[_0x52fb9d];return _0x418e8e;};'use strict';var Sequelize=require('sequelize');module[_0x5064('0x0')]={'description':{'type':Sequelize[_0x5064('0x1')]},'host':{'type':Sequelize[_0x5064('0x1')]},'authentication':{'type':Sequelize[_0x5064('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0x5064('0x1')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x5064('0x3')]},'tls':{'type':Sequelize[_0x5064('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x5064('0x1')],'defaultValue':_0x5064('0x4')},'connTimeout':{'type':Sequelize[_0x5064('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0x5064('0x1')]},'modernAuthentication':{'type':Sequelize[_0x5064('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 7e75f24..c4a5f3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c6e=['bluebird','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','../../config/logger','api','moment'];(function(_0x428966,_0x539b91){var _0x20dc3d=function(_0x3c89de){while(--_0x3c89de){_0x428966['push'](_0x428966['shift']());}};_0x20dc3d(++_0x539b91);}(_0x3c6e,0x168));var _0xe3c6=function(_0x5a3af1,_0x397a79){_0x5a3af1=_0x5a3af1-0x0;var _0xbaa54c=_0x3c6e[_0x5a3af1];return _0xbaa54c;};'use strict';var _=require(_0xe3c6('0x0'));var util=require('util');var logger=require(_0xe3c6('0x1'))(_0xe3c6('0x2'));var moment=require(_0xe3c6('0x3'));var BPromise=require(_0xe3c6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe3c6('0x5'));var rimraf=require(_0xe3c6('0x6'));var config=require(_0xe3c6('0x7'));var attributes=require(_0xe3c6('0x8'));module[_0xe3c6('0x9')]=function(_0x2edab1,_0x409a83){return _0x2edab1[_0xe3c6('0xa')](_0xe3c6('0xb'),attributes,{'tableName':_0xe3c6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xac17=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','../../config/logger','api'];(function(_0x216318,_0x13b1e5){var _0x1e9a28=function(_0x594bad){while(--_0x594bad){_0x216318['push'](_0x216318['shift']());}};_0x1e9a28(++_0x13b1e5);}(_0xac17,0x6d));var _0x7ac1=function(_0x3bb63a,_0x15af8f){_0x3bb63a=_0x3bb63a-0x0;var _0x3b822a=_0xac17[_0x3bb63a];return _0x3b822a;};'use strict';var _=require(_0x7ac1('0x0'));var util=require('util');var logger=require(_0x7ac1('0x1'))(_0x7ac1('0x2'));var moment=require(_0x7ac1('0x3'));var BPromise=require(_0x7ac1('0x4'));var rp=require(_0x7ac1('0x5'));var fs=require('fs');var path=require(_0x7ac1('0x6'));var rimraf=require(_0x7ac1('0x7'));var config=require(_0x7ac1('0x8'));var attributes=require(_0x7ac1('0x9'));module[_0x7ac1('0xa')]=function(_0x2490d4,_0x3c7674){return _0x2490d4[_0x7ac1('0xb')](_0x7ac1('0xc'),attributes,{'tableName':_0x7ac1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7522832..435c4ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaa8=['debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailServerIn','MailServerIn','options','raw','where','include','map','model','attributes'];(function(_0x568782,_0x11abe6){var _0x5ea78c=function(_0x272c96){while(--_0x272c96){_0x568782['push'](_0x568782['shift']());}};_0x5ea78c(++_0x11abe6);}(_0xbaa8,0x1d2));var _0x8baa=function(_0x27b1ca,_0xd8979e){_0x27b1ca=_0x27b1ca-0x0;var _0x1c32ee=_0xbaa8[_0x27b1ca];return _0x1c32ee;};'use strict';var _=require(_0x8baa('0x0'));var util=require(_0x8baa('0x1'));var moment=require(_0x8baa('0x2'));var BPromise=require(_0x8baa('0x3'));var rs=require(_0x8baa('0x4'));var fs=require('fs');var Redis=require(_0x8baa('0x5'));var db=require(_0x8baa('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8baa('0x7'));var config=require('../../config/environment');var jayson=require(_0x8baa('0x8'));var client=jayson['client'][_0x8baa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ba019,_0x54097a,_0xf2f101){return new BPromise(function(_0x30f2cb,_0x306eac){return client[_0x8baa('0xa')](_0x4ba019,_0xf2f101)[_0x8baa('0xb')](function(_0x59b980){logger[_0x8baa('0xc')](_0x8baa('0xd'),_0x54097a,_0x8baa('0xe'));logger['debug']('MailServerIn,\x20%s,\x20%s,\x20%s',_0x54097a,'request\x20sent',JSON[_0x8baa('0xf')](_0x59b980));if(_0x59b980['error']){if(_0x59b980[_0x8baa('0x10')][_0x8baa('0x11')]===0x1f4){logger[_0x8baa('0x10')]('MailServerIn,\x20%s,\x20%s',_0x54097a,_0x59b980[_0x8baa('0x10')][_0x8baa('0x12')]);return _0x306eac(_0x59b980[_0x8baa('0x10')][_0x8baa('0x12')]);}logger[_0x8baa('0x10')](_0x8baa('0xd'),_0x54097a,_0x59b980['error'][_0x8baa('0x12')]);return _0x30f2cb(_0x59b980[_0x8baa('0x10')][_0x8baa('0x12')]);}else{logger[_0x8baa('0xc')](_0x8baa('0xd'),_0x54097a,_0x8baa('0xe'));_0x30f2cb(_0x59b980[_0x8baa('0x13')][_0x8baa('0x12')]);}})[_0x8baa('0x14')](function(_0x41a961){logger[_0x8baa('0x10')](_0x8baa('0xd'),_0x54097a,_0x41a961);_0x306eac(_0x41a961);});});}exports[_0x8baa('0x15')]=function(_0x17aefd){var _0x2a166c=this;return new Promise(function(_0x5a653c,_0x569889){return db[_0x8baa('0x16')]['findAll']({'raw':_0x17aefd['options']?_0x17aefd[_0x8baa('0x17')][_0x8baa('0x18')]===undefined?!![]:![]:!![],'where':_0x17aefd[_0x8baa('0x17')]?_0x17aefd[_0x8baa('0x17')][_0x8baa('0x19')]||null:null,'attributes':_0x17aefd[_0x8baa('0x17')]?_0x17aefd[_0x8baa('0x17')]['attributes']||null:null,'limit':_0x17aefd[_0x8baa('0x17')]?_0x17aefd[_0x8baa('0x17')]['limit']||null:null,'include':_0x17aefd[_0x8baa('0x17')]?_0x17aefd['options'][_0x8baa('0x1a')]?_[_0x8baa('0x1b')](_0x17aefd[_0x8baa('0x17')][_0x8baa('0x1a')],function(_0x1b7dd3){return{'model':db[_0x1b7dd3[_0x8baa('0x1c')]],'as':_0x1b7dd3['as'],'attributes':_0x1b7dd3[_0x8baa('0x1d')],'include':_0x1b7dd3[_0x8baa('0x1a')]?_[_0x8baa('0x1b')](_0x1b7dd3[_0x8baa('0x1a')],function(_0x478bba){return{'model':db[_0x478bba[_0x8baa('0x1c')]],'as':_0x478bba['as'],'attributes':_0x478bba[_0x8baa('0x1d')],'include':_0x478bba[_0x8baa('0x1a')]?_['map'](_0x478bba[_0x8baa('0x1a')],function(_0x49ea6f){return{'model':db[_0x49ea6f[_0x8baa('0x1c')]],'as':_0x49ea6f['as'],'attributes':_0x49ea6f[_0x8baa('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x8baa('0xb')](function(_0x1e54c5){logger['info'](_0x8baa('0x15'),_0x17aefd);logger[_0x8baa('0x1e')](_0x8baa('0x15'),_0x17aefd,JSON['stringify'](_0x1e54c5));_0x5a653c(_0x1e54c5);})[_0x8baa('0x14')](function(_0x5e1a55){logger[_0x8baa('0x10')](_0x8baa('0x15'),_0x5e1a55[_0x8baa('0x12')],_0x17aefd);_0x569889(_0x2a166c['error'](0x1f4,_0x5e1a55[_0x8baa('0x12')]));});});};
\ No newline at end of file
+var _0xacfe=['where','attributes','limit','map','include','model','then','GetMailServerIn','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','findAll','options','raw'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xacfe,0xfd));var _0xeacf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xacfe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xeacf('0x0'));var BPromise=require(_0xeacf('0x1'));var rs=require(_0xeacf('0x2'));var fs=require('fs');var Redis=require(_0xeacf('0x3'));var db=require(_0xeacf('0x4'))['db'];var utils=require(_0xeacf('0x5'));var logger=require(_0xeacf('0x6'))(_0xeacf('0x7'));var config=require(_0xeacf('0x8'));var jayson=require(_0xeacf('0x9'));var client=jayson[_0xeacf('0xa')][_0xeacf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x13cba2,_0x5eb516,_0x411634){return new BPromise(function(_0xce0437,_0x17b21c){return client[_0xeacf('0xc')](_0x13cba2,_0x411634)['then'](function(_0xfe344){logger['info'](_0xeacf('0xd'),_0x5eb516,_0xeacf('0xe'));logger[_0xeacf('0xf')](_0xeacf('0x10'),_0x5eb516,_0xeacf('0xe'),JSON[_0xeacf('0x11')](_0xfe344));if(_0xfe344[_0xeacf('0x12')]){if(_0xfe344[_0xeacf('0x12')][_0xeacf('0x13')]===0x1f4){logger[_0xeacf('0x12')]('MailServerIn,\x20%s,\x20%s',_0x5eb516,_0xfe344[_0xeacf('0x12')][_0xeacf('0x14')]);return _0x17b21c(_0xfe344[_0xeacf('0x12')][_0xeacf('0x14')]);}logger['error'](_0xeacf('0xd'),_0x5eb516,_0xfe344[_0xeacf('0x12')][_0xeacf('0x14')]);return _0xce0437(_0xfe344['error']['message']);}else{logger[_0xeacf('0x15')](_0xeacf('0xd'),_0x5eb516,'request\x20sent');_0xce0437(_0xfe344[_0xeacf('0x16')]['message']);}})[_0xeacf('0x17')](function(_0x1df080){logger['error'](_0xeacf('0xd'),_0x5eb516,_0x1df080);_0x17b21c(_0x1df080);});});}exports['GetMailServerIn']=function(_0x650730){var _0xe87314=this;return new Promise(function(_0x18de20,_0x118932){return db['MailServerIn'][_0xeacf('0x18')]({'raw':_0x650730['options']?_0x650730[_0xeacf('0x19')][_0xeacf('0x1a')]===undefined?!![]:![]:!![],'where':_0x650730[_0xeacf('0x19')]?_0x650730['options'][_0xeacf('0x1b')]||null:null,'attributes':_0x650730[_0xeacf('0x19')]?_0x650730[_0xeacf('0x19')][_0xeacf('0x1c')]||null:null,'limit':_0x650730[_0xeacf('0x19')]?_0x650730[_0xeacf('0x19')][_0xeacf('0x1d')]||null:null,'include':_0x650730[_0xeacf('0x19')]?_0x650730[_0xeacf('0x19')]['include']?_[_0xeacf('0x1e')](_0x650730[_0xeacf('0x19')][_0xeacf('0x1f')],function(_0x35338b){return{'model':db[_0x35338b[_0xeacf('0x20')]],'as':_0x35338b['as'],'attributes':_0x35338b[_0xeacf('0x1c')],'include':_0x35338b[_0xeacf('0x1f')]?_['map'](_0x35338b['include'],function(_0x4332b7){return{'model':db[_0x4332b7[_0xeacf('0x20')]],'as':_0x4332b7['as'],'attributes':_0x4332b7['attributes'],'include':_0x4332b7[_0xeacf('0x1f')]?_[_0xeacf('0x1e')](_0x4332b7[_0xeacf('0x1f')],function(_0x1e368a){return{'model':db[_0x1e368a['model']],'as':_0x1e368a['as'],'attributes':_0x1e368a[_0xeacf('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xeacf('0x21')](function(_0x4c161e){logger[_0xeacf('0x15')](_0xeacf('0x22'),_0x650730);logger[_0xeacf('0xf')](_0xeacf('0x22'),_0x650730,JSON['stringify'](_0x4c161e));_0x18de20(_0x4c161e);})[_0xeacf('0x17')](function(_0x1d375a){logger['error']('GetMailServerIn',_0x1d375a['message'],_0x650730);_0x118932(_0xe87314['error'](0x1f4,_0x1d375a[_0xeacf('0x14')]));});});};
\ No newline at end of file
index 3e9ac68..cf11555 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_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('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('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 39603af..5d22d24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['INTEGER','BOOLEAN','exports','STRING'];(function(_0x1540bc,_0xde65cc){var _0x502d93=function(_0x483368){while(--_0x483368){_0x1540bc['push'](_0x1540bc['shift']());}};_0x502d93(++_0xde65cc);}(_0x9354,0x96));var _0x4935=function(_0x2962d5,_0x38deda){_0x2962d5=_0x2962d5-0x0;var _0x273406=_0x9354[_0x2962d5];return _0x273406;};'use strict';var Sequelize=require('sequelize');module[_0x4935('0x0')]={'description':{'type':Sequelize[_0x4935('0x1')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0x4935('0x1')]},'pass':{'type':Sequelize[_0x4935('0x1')]},'port':{'type':Sequelize[_0x4935('0x2')]},'secure':{'type':Sequelize[_0x4935('0x3')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x4935('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x4935('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x282b=['sequelize','exports','STRING','BOOLEAN'];(function(_0x2d5497,_0x4deab3){var _0x34d69e=function(_0x91e4){while(--_0x91e4){_0x2d5497['push'](_0x2d5497['shift']());}};_0x34d69e(++_0x4deab3);}(_0x282b,0xec));var _0xb282=function(_0x4de05a,_0xd561db){_0x4de05a=_0x4de05a-0x0;var _0x5264d8=_0x282b[_0x4de05a];return _0x5264d8;};'use strict';var Sequelize=require(_0xb282('0x0'));module[_0xb282('0x1')]={'description':{'type':Sequelize[_0xb282('0x2')]},'host':{'type':Sequelize[_0xb282('0x2')]},'user':{'type':Sequelize[_0xb282('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0xb282('0x3')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0xb282('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0xb282('0x3')],'defaultValue':![]}};
\ No newline at end of file
index af97fac..6375231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x444f=['filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','status','json','undefined','limit','offset','count','set','Content-Range','save','update','destroy','sendStatus','error','stack','name','index','map','MailServerOut','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','pick'];(function(_0x10c7c4,_0x5bbcd5){var _0x559a09=function(_0x27f426){while(--_0x27f426){_0x10c7c4['push'](_0x10c7c4['shift']());}};_0x559a09(++_0x5bbcd5);}(_0x444f,0x1c6));var _0xf444=function(_0x5ec3e2,_0x5294df){_0x5ec3e2=_0x5ec3e2-0x0;var _0x152654=_0x444f[_0x5ec3e2];return _0x152654;};'use strict';var emlformat=require(_0xf444('0x0'));var rimraf=require(_0xf444('0x1'));var zipdir=require(_0xf444('0x2'));var jsonpatch=require(_0xf444('0x3'));var rp=require(_0xf444('0x4'));var moment=require(_0xf444('0x5'));var BPromise=require(_0xf444('0x6'));var Mustache=require(_0xf444('0x7'));var util=require(_0xf444('0x8'));var path=require(_0xf444('0x9'));var sox=require(_0xf444('0xa'));var csv=require(_0xf444('0xb'));var ejs=require(_0xf444('0xc'));var fs=require('fs');var fs_extra=require(_0xf444('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xf444('0xe'));var jsforce=require(_0xf444('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xf444('0xb'));var querystring=require(_0xf444('0x10'));var Papa=require(_0xf444('0x11'));var Redis=require(_0xf444('0x12'));var authService=require(_0xf444('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xf444('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf444('0x15'))(_0xf444('0x16'));var utils=require('../../config/utils');var config=require(_0xf444('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49de5c,_0x4fdefa){_0x4fdefa=_0x4fdefa||0xcc;return function(_0x286f96){if(_0x286f96){return _0x49de5c['sendStatus'](_0x4fdefa);}return _0x49de5c[_0xf444('0x18')](_0x4fdefa)['end']();};}function respondWithResult(_0x4a2a86,_0x5a11ae){_0x5a11ae=_0x5a11ae||0xc8;return function(_0x749f09){if(_0x749f09){return _0x4a2a86[_0xf444('0x18')](_0x5a11ae)[_0xf444('0x19')](_0x749f09);}};}function respondWithFilteredResult(_0x5071c7,_0x592e23){return function(_0x215edf){if(_0x215edf){var _0x23709c=typeof _0x592e23['offset']===_0xf444('0x1a')&&typeof _0x592e23[_0xf444('0x1b')]===_0xf444('0x1a');var _0x1dcbf8=_0x215edf['count'];var _0x43bd4f=_0x23709c?0x0:_0x592e23[_0xf444('0x1c')];var _0x1c9909=_0x23709c?_0x215edf[_0xf444('0x1d')]:_0x592e23['offset']+_0x592e23[_0xf444('0x1b')];var _0x2a8a08;if(_0x1c9909>=_0x1dcbf8){_0x1c9909=_0x1dcbf8;_0x2a8a08=0xc8;}else{_0x2a8a08=0xce;}_0x5071c7[_0xf444('0x18')](_0x2a8a08);return _0x5071c7[_0xf444('0x1e')](_0xf444('0x1f'),_0x43bd4f+'-'+_0x1c9909+'/'+_0x1dcbf8)['json'](_0x215edf);}return null;};}function patchUpdates(_0x314f53){return function(_0x5c14d5){try{jsonpatch['apply'](_0x5c14d5,_0x314f53,!![]);}catch(_0x17872f){return BPromise['reject'](_0x17872f);}return _0x5c14d5[_0xf444('0x20')]();};}function saveUpdates(_0x5f54f0,_0x4df09a){return function(_0x22f02a){if(_0x22f02a){return _0x22f02a[_0xf444('0x21')](_0x5f54f0)['then'](function(_0x993d03){return _0x993d03;});}return null;};}function removeEntity(_0x5e667f,_0x523d2a){return function(_0x27bd4c){if(_0x27bd4c){return _0x27bd4c[_0xf444('0x22')]()['then'](function(){_0x5e667f[_0xf444('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x524a08,_0x13188d){return function(_0x2caf89){if(!_0x2caf89){_0x524a08[_0xf444('0x23')](0x194);}return _0x2caf89;};}function handleError(_0x186b92,_0x1b9eff){_0x1b9eff=_0x1b9eff||0x1f4;return function(_0xe761cc){logger[_0xf444('0x24')](_0xe761cc[_0xf444('0x25')]);if(_0xe761cc[_0xf444('0x26')]){delete _0xe761cc['name'];}_0x186b92[_0xf444('0x18')](_0x1b9eff)['send'](_0xe761cc);};}exports[_0xf444('0x27')]=function(_0x169de3,_0x1073d8){var _0xf06b18={},_0xa670a={},_0x22b173={'count':0x0,'rows':[]};var _0x40f5c7=_[_0xf444('0x28')](db[_0xf444('0x29')][_0xf444('0x2a')],function(_0x391c21){return{'name':_0x391c21[_0xf444('0x2b')],'type':_0x391c21[_0xf444('0x2c')][_0xf444('0x2d')]};});_0xa670a[_0xf444('0x2e')]=_[_0xf444('0x28')](_0x40f5c7,_0xf444('0x26'));_0xa670a[_0xf444('0x2f')]=_[_0xf444('0x30')](_0x169de3['query']);_0xa670a[_0xf444('0x31')]=_[_0xf444('0x32')](_0xa670a[_0xf444('0x2e')],_0xa670a['query']);_0xf06b18[_0xf444('0x33')]=_['intersection'](_0xa670a[_0xf444('0x2e')],qs[_0xf444('0x34')](_0x169de3['query'][_0xf444('0x34')]));_0xf06b18[_0xf444('0x33')]=_0xf06b18['attributes'][_0xf444('0x35')]?_0xf06b18[_0xf444('0x33')]:_0xa670a[_0xf444('0x2e')];if(!_0x169de3['query'][_0xf444('0x36')]('nolimit')){_0xf06b18[_0xf444('0x1b')]=qs[_0xf444('0x1b')](_0x169de3['query']['limit']);_0xf06b18[_0xf444('0x1c')]=qs['offset'](_0x169de3[_0xf444('0x2f')][_0xf444('0x1c')]);}_0xf06b18['order']=qs[_0xf444('0x37')](_0x169de3[_0xf444('0x2f')][_0xf444('0x37')]);_0xf06b18['where']=qs[_0xf444('0x31')](_[_0xf444('0x38')](_0x169de3[_0xf444('0x2f')],_0xa670a[_0xf444('0x31')]),_0x40f5c7);if(_0x169de3['query'][_0xf444('0x39')]){_0xf06b18[_0xf444('0x3a')]=_[_0xf444('0x3b')](_0xf06b18[_0xf444('0x3a')],{'$or':_['map'](_0x40f5c7,function(_0x8f8dd8){if(_0x8f8dd8[_0xf444('0x2c')]!==_0xf444('0x3c')){var _0x292185={};_0x292185[_0x8f8dd8[_0xf444('0x26')]]={'$like':'%'+_0x169de3[_0xf444('0x2f')][_0xf444('0x39')]+'%'};return _0x292185;}})});}_0xf06b18=_[_0xf444('0x3b')]({},_0xf06b18,_0x169de3[_0xf444('0x3d')]);var _0x46cf33={'where':_0xf06b18[_0xf444('0x3a')]};return db[_0xf444('0x29')][_0xf444('0x1d')](_0x46cf33)[_0xf444('0x3e')](function(_0x39974c){_0x22b173[_0xf444('0x1d')]=_0x39974c;if(_0x169de3[_0xf444('0x2f')][_0xf444('0x3f')]){_0xf06b18[_0xf444('0x40')]=[{'all':!![]}];}return db['MailServerOut'][_0xf444('0x41')](_0xf06b18);})[_0xf444('0x3e')](function(_0x348250){_0x22b173[_0xf444('0x42')]=_0x348250;return _0x22b173;})['then'](respondWithFilteredResult(_0x1073d8,_0xf06b18))[_0xf444('0x43')](handleError(_0x1073d8,null));};exports[_0xf444('0x44')]=function(_0x5c46ff,_0x4ff6e0){var _0x547b9a={'raw':!![],'where':{'id':_0x5c46ff['params']['id']}},_0x1cd206={};_0x1cd206[_0xf444('0x2e')]=_[_0xf444('0x30')](db[_0xf444('0x29')][_0xf444('0x2a')]);_0x1cd206[_0xf444('0x2f')]=_[_0xf444('0x30')](_0x5c46ff['query']);_0x1cd206[_0xf444('0x31')]=_[_0xf444('0x32')](_0x1cd206['model'],_0x1cd206[_0xf444('0x2f')]);_0x547b9a['attributes']=_[_0xf444('0x32')](_0x1cd206[_0xf444('0x2e')],qs['fields'](_0x5c46ff[_0xf444('0x2f')][_0xf444('0x34')]));_0x547b9a['attributes']=_0x547b9a[_0xf444('0x33')]['length']?_0x547b9a[_0xf444('0x33')]:_0x1cd206[_0xf444('0x2e')];if(_0x5c46ff[_0xf444('0x2f')]['includeAll']){_0x547b9a['include']=[{'all':!![]}];}_0x547b9a=_[_0xf444('0x3b')]({},_0x547b9a,_0x5c46ff[_0xf444('0x3d')]);return db[_0xf444('0x29')][_0xf444('0x45')](_0x547b9a)[_0xf444('0x3e')](handleEntityNotFound(_0x4ff6e0,null))['then'](respondWithResult(_0x4ff6e0,null))['catch'](handleError(_0x4ff6e0,null));};exports[_0xf444('0x46')]=function(_0x35371a,_0x563ce3){return db[_0xf444('0x29')][_0xf444('0x46')](_0x35371a[_0xf444('0x47')],{})[_0xf444('0x3e')](respondWithResult(_0x563ce3,0xc9))[_0xf444('0x43')](handleError(_0x563ce3,null));};exports[_0xf444('0x21')]=function(_0x405726,_0x1444b1){if(_0x405726[_0xf444('0x47')]['id']){delete _0x405726[_0xf444('0x47')]['id'];}return db[_0xf444('0x29')][_0xf444('0x45')]({'where':{'id':_0x405726[_0xf444('0x48')]['id']}})['then'](handleEntityNotFound(_0x1444b1,null))[_0xf444('0x3e')](saveUpdates(_0x405726[_0xf444('0x47')],null))[_0xf444('0x3e')](respondWithResult(_0x1444b1,null))[_0xf444('0x43')](handleError(_0x1444b1,null));};exports[_0xf444('0x22')]=function(_0x2a48a6,_0x47cea5){return db[_0xf444('0x29')][_0xf444('0x45')]({'where':{'id':_0x2a48a6[_0xf444('0x48')]['id']}})['then'](handleEntityNotFound(_0x47cea5,null))[_0xf444('0x3e')](removeEntity(_0x47cea5,null))[_0xf444('0x43')](handleError(_0x47cea5,null));};
\ No newline at end of file
+var _0xf52b=['rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','show','params','length','include','catch','create','body','find','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','apply','reject','save','update','then','error','name','send','index','map','MailServerOut'];(function(_0x557fd2,_0x2c0a7a){var _0x1b54a2=function(_0x2e439b){while(--_0x2e439b){_0x557fd2['push'](_0x557fd2['shift']());}};_0x1b54a2(++_0x2c0a7a);}(_0xf52b,0x195));var _0xbf52=function(_0x3b90ab,_0x174a22){_0x3b90ab=_0x3b90ab-0x0;var _0x206e92=_0xf52b[_0x3b90ab];return _0x206e92;};'use strict';var emlformat=require(_0xbf52('0x0'));var rimraf=require(_0xbf52('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbf52('0x2'));var rp=require(_0xbf52('0x3'));var moment=require(_0xbf52('0x4'));var BPromise=require(_0xbf52('0x5'));var Mustache=require(_0xbf52('0x6'));var util=require(_0xbf52('0x7'));var path=require(_0xbf52('0x8'));var sox=require('sox');var csv=require(_0xbf52('0x9'));var ejs=require(_0xbf52('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf52('0xb'));var squel=require(_0xbf52('0xc'));var crypto=require(_0xbf52('0xd'));var jsforce=require(_0xbf52('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xbf52('0x9'));var querystring=require(_0xbf52('0xf'));var Papa=require('papaparse');var Redis=require(_0xbf52('0x10'));var authService=require(_0xbf52('0x11'));var qs=require(_0xbf52('0x12'));var as=require(_0xbf52('0x13'));var hardwareService=require(_0xbf52('0x14'));var logger=require(_0xbf52('0x15'))('api');var utils=require(_0xbf52('0x16'));var config=require(_0xbf52('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xbf52('0x18'))['db'];function respondWithStatusCode(_0x50b759,_0x1eccbc){_0x1eccbc=_0x1eccbc||0xcc;return function(_0x4fc45a){if(_0x4fc45a){return _0x50b759[_0xbf52('0x19')](_0x1eccbc);}return _0x50b759[_0xbf52('0x1a')](_0x1eccbc)[_0xbf52('0x1b')]();};}function respondWithResult(_0x3c122e,_0x42875c){_0x42875c=_0x42875c||0xc8;return function(_0x24cbd7){if(_0x24cbd7){return _0x3c122e['status'](_0x42875c)[_0xbf52('0x1c')](_0x24cbd7);}};}function respondWithFilteredResult(_0x114a5d,_0x59977e){return function(_0x239c10){if(_0x239c10){var _0x254aa3=typeof _0x59977e['offset']===_0xbf52('0x1d')&&typeof _0x59977e[_0xbf52('0x1e')]===_0xbf52('0x1d');var _0x1a0b06=_0x239c10['count'];var _0x1f8177=_0x254aa3?0x0:_0x59977e[_0xbf52('0x1f')];var _0x11e9e4=_0x254aa3?_0x239c10[_0xbf52('0x20')]:_0x59977e[_0xbf52('0x1f')]+_0x59977e[_0xbf52('0x1e')];var _0x4f13ed;if(_0x11e9e4>=_0x1a0b06){_0x11e9e4=_0x1a0b06;_0x4f13ed=0xc8;}else{_0x4f13ed=0xce;}_0x114a5d['status'](_0x4f13ed);return _0x114a5d['set'](_0xbf52('0x21'),_0x1f8177+'-'+_0x11e9e4+'/'+_0x1a0b06)[_0xbf52('0x1c')](_0x239c10);}return null;};}function patchUpdates(_0x5eddf4){return function(_0x2dfe09){try{jsonpatch[_0xbf52('0x22')](_0x2dfe09,_0x5eddf4,!![]);}catch(_0x1bd1a4){return BPromise[_0xbf52('0x23')](_0x1bd1a4);}return _0x2dfe09[_0xbf52('0x24')]();};}function saveUpdates(_0x263de7,_0x299a7b){return function(_0x2d4ce1){if(_0x2d4ce1){return _0x2d4ce1[_0xbf52('0x25')](_0x263de7)['then'](function(_0x35271a){return _0x35271a;});}return null;};}function removeEntity(_0x51a08c,_0x476ea0){return function(_0x3011d8){if(_0x3011d8){return _0x3011d8['destroy']()[_0xbf52('0x26')](function(){_0x51a08c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a8cff,_0xd62cef){return function(_0xbaf3c8){if(!_0xbaf3c8){_0x1a8cff[_0xbf52('0x19')](0x194);}return _0xbaf3c8;};}function handleError(_0x11ff0c,_0x592b9f){_0x592b9f=_0x592b9f||0x1f4;return function(_0x16996d){logger[_0xbf52('0x27')](_0x16996d['stack']);if(_0x16996d['name']){delete _0x16996d[_0xbf52('0x28')];}_0x11ff0c['status'](_0x592b9f)[_0xbf52('0x29')](_0x16996d);};}exports[_0xbf52('0x2a')]=function(_0x3d3ff5,_0x3dabf6){var _0x489977={},_0x2d1e8d={},_0x478d26={'count':0x0,'rows':[]};var _0x461de0=_[_0xbf52('0x2b')](db[_0xbf52('0x2c')][_0xbf52('0x2d')],function(_0xab543d){return{'name':_0xab543d[_0xbf52('0x2e')],'type':_0xab543d[_0xbf52('0x2f')][_0xbf52('0x30')]};});_0x2d1e8d['model']=_[_0xbf52('0x2b')](_0x461de0,'name');_0x2d1e8d['query']=_[_0xbf52('0x31')](_0x3d3ff5[_0xbf52('0x32')]);_0x2d1e8d[_0xbf52('0x33')]=_[_0xbf52('0x34')](_0x2d1e8d[_0xbf52('0x35')],_0x2d1e8d[_0xbf52('0x32')]);_0x489977[_0xbf52('0x36')]=_['intersection'](_0x2d1e8d[_0xbf52('0x35')],qs['fields'](_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x37')]));_0x489977[_0xbf52('0x36')]=_0x489977[_0xbf52('0x36')]['length']?_0x489977[_0xbf52('0x36')]:_0x2d1e8d[_0xbf52('0x35')];if(!_0x3d3ff5[_0xbf52('0x32')]['hasOwnProperty'](_0xbf52('0x38'))){_0x489977[_0xbf52('0x1e')]=qs[_0xbf52('0x1e')](_0x3d3ff5['query']['limit']);_0x489977['offset']=qs[_0xbf52('0x1f')](_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x1f')]);}_0x489977[_0xbf52('0x39')]=qs[_0xbf52('0x3a')](_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x3a')]);_0x489977[_0xbf52('0x3b')]=qs[_0xbf52('0x33')](_['pick'](_0x3d3ff5[_0xbf52('0x32')],_0x2d1e8d[_0xbf52('0x33')]),_0x461de0);if(_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x3c')]){_0x489977[_0xbf52('0x3b')]=_['merge'](_0x489977[_0xbf52('0x3b')],{'$or':_[_0xbf52('0x2b')](_0x461de0,function(_0x31fb26){if(_0x31fb26[_0xbf52('0x2f')]!==_0xbf52('0x3d')){var _0x15fc98={};_0x15fc98[_0x31fb26[_0xbf52('0x28')]]={'$like':'%'+_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x3c')]+'%'};return _0x15fc98;}})});}_0x489977=_[_0xbf52('0x3e')]({},_0x489977,_0x3d3ff5[_0xbf52('0x3f')]);var _0x2bfef8={'where':_0x489977[_0xbf52('0x3b')]};return db[_0xbf52('0x2c')][_0xbf52('0x20')](_0x2bfef8)[_0xbf52('0x26')](function(_0xa87e25){_0x478d26[_0xbf52('0x20')]=_0xa87e25;if(_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x40')]){_0x489977['include']=[{'all':!![]}];}return db[_0xbf52('0x2c')][_0xbf52('0x41')](_0x489977);})['then'](function(_0xbef0c6){_0x478d26['rows']=_0xbef0c6;return _0x478d26;})[_0xbf52('0x26')](respondWithFilteredResult(_0x3dabf6,_0x489977))['catch'](handleError(_0x3dabf6,null));};exports[_0xbf52('0x42')]=function(_0x104741,_0x27229d){var _0x21d455={'raw':!![],'where':{'id':_0x104741[_0xbf52('0x43')]['id']}},_0x2b6fdc={};_0x2b6fdc['model']=_[_0xbf52('0x31')](db['MailServerOut'][_0xbf52('0x2d')]);_0x2b6fdc[_0xbf52('0x32')]=_[_0xbf52('0x31')](_0x104741[_0xbf52('0x32')]);_0x2b6fdc[_0xbf52('0x33')]=_['intersection'](_0x2b6fdc['model'],_0x2b6fdc[_0xbf52('0x32')]);_0x21d455['attributes']=_[_0xbf52('0x34')](_0x2b6fdc[_0xbf52('0x35')],qs[_0xbf52('0x37')](_0x104741[_0xbf52('0x32')][_0xbf52('0x37')]));_0x21d455[_0xbf52('0x36')]=_0x21d455[_0xbf52('0x36')][_0xbf52('0x44')]?_0x21d455[_0xbf52('0x36')]:_0x2b6fdc[_0xbf52('0x35')];if(_0x104741[_0xbf52('0x32')][_0xbf52('0x40')]){_0x21d455[_0xbf52('0x45')]=[{'all':!![]}];}_0x21d455=_[_0xbf52('0x3e')]({},_0x21d455,_0x104741[_0xbf52('0x3f')]);return db[_0xbf52('0x2c')]['find'](_0x21d455)[_0xbf52('0x26')](handleEntityNotFound(_0x27229d,null))[_0xbf52('0x26')](respondWithResult(_0x27229d,null))[_0xbf52('0x46')](handleError(_0x27229d,null));};exports[_0xbf52('0x47')]=function(_0x4d1cdf,_0x414528){return db['MailServerOut'][_0xbf52('0x47')](_0x4d1cdf[_0xbf52('0x48')],{})[_0xbf52('0x26')](respondWithResult(_0x414528,0xc9))[_0xbf52('0x46')](handleError(_0x414528,null));};exports[_0xbf52('0x25')]=function(_0x1d4a12,_0x264864){if(_0x1d4a12[_0xbf52('0x48')]['id']){delete _0x1d4a12['body']['id'];}return db[_0xbf52('0x2c')][_0xbf52('0x49')]({'where':{'id':_0x1d4a12['params']['id']}})[_0xbf52('0x26')](handleEntityNotFound(_0x264864,null))[_0xbf52('0x26')](saveUpdates(_0x1d4a12[_0xbf52('0x48')],null))['then'](respondWithResult(_0x264864,null))[_0xbf52('0x46')](handleError(_0x264864,null));};exports[_0xbf52('0x4a')]=function(_0x592d19,_0x59918d){return db[_0xbf52('0x2c')][_0xbf52('0x49')]({'where':{'id':_0x592d19['params']['id']}})[_0xbf52('0x26')](handleEntityNotFound(_0x59918d,null))['then'](removeEntity(_0x59918d,null))['catch'](handleError(_0x59918d,null));};
\ No newline at end of file
index 64acb01..0ad0a2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1655=['request-promise','path','rimraf','define','mail_servers_out','util','api','moment','bluebird'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1655,0x95));var _0x5165=function(_0x2b406c,_0x1daeac){_0x2b406c=_0x2b406c-0x0;var _0x2d74d9=_0x1655[_0x2b406c];return _0x2d74d9;};'use strict';var _=require('lodash');var util=require(_0x5165('0x0'));var logger=require('../../config/logger')(_0x5165('0x1'));var moment=require(_0x5165('0x2'));var BPromise=require(_0x5165('0x3'));var rp=require(_0x5165('0x4'));var fs=require('fs');var path=require(_0x5165('0x5'));var rimraf=require(_0x5165('0x6'));var config=require('../../config/environment');var attributes=require('./mailServerOut.attributes');module['exports']=function(_0x5cb38c,_0x167143){return _0x5cb38c[_0x5165('0x7')]('MailServerOut',attributes,{'tableName':_0x5165('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa37c=['exports','mail_servers_out','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x55ffee,_0x1862c1){var _0x27992d=function(_0x3cd3d9){while(--_0x3cd3d9){_0x55ffee['push'](_0x55ffee['shift']());}};_0x27992d(++_0x1862c1);}(_0xa37c,0x10a));var _0xca37=function(_0x187279,_0x26d152){_0x187279=_0x187279-0x0;var _0x3da59d=_0xa37c[_0x187279];return _0x3da59d;};'use strict';var _=require(_0xca37('0x0'));var util=require(_0xca37('0x1'));var logger=require(_0xca37('0x2'))(_0xca37('0x3'));var moment=require(_0xca37('0x4'));var BPromise=require(_0xca37('0x5'));var rp=require(_0xca37('0x6'));var fs=require('fs');var path=require(_0xca37('0x7'));var rimraf=require(_0xca37('0x8'));var config=require('../../config/environment');var attributes=require('./mailServerOut.attributes');module[_0xca37('0x9')]=function(_0x4ecaaf,_0x4a403b){return _0x4ecaaf['define']('MailServerOut',attributes,{'tableName':_0xca37('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e082fe..f081249 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x3affea,_0x45726b){var _0x434ead=function(_0x288515){while(--_0x288515){_0x3affea['push'](_0x3affea['shift']());}};_0x434ead(++_0x45726b);}(_0xdb28,0x106));var _0x8db2=function(_0x2fbb24,_0xa91302){_0x2fbb24=_0x2fbb24-0x0;var _0x46aa99=_0xdb28[_0x2fbb24];return _0x46aa99;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x341219,_0x5d8330){var _0x203b5f=function(_0x47ef78){while(--_0x47ef78){_0x341219['push'](_0x341219['shift']());}};_0x203b5f(++_0x5d8330);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xc4aa[_0x68c979];return _0x4f0001;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 4b61cfe..7479217 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e70=['isAuthenticated','describe','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailSubstatus.controller','get','index','/describe'];(function(_0x43941d,_0x45fd0d){var _0x27b82a=function(_0x21851e){while(--_0x21851e){_0x43941d['push'](_0x43941d['shift']());}};_0x27b82a(++_0x45fd0d);}(_0x2e70,0x1bf));var _0x02e7=function(_0xae9ef4,_0x31188d){_0xae9ef4=_0xae9ef4-0x0;var _0x2259cc=_0x2e70[_0xae9ef4];return _0x2259cc;};'use strict';var multer=require(_0x02e7('0x0'));var util=require(_0x02e7('0x1'));var path=require(_0x02e7('0x2'));var timeout=require(_0x02e7('0x3'));var express=require(_0x02e7('0x4'));var router=express[_0x02e7('0x5')]();var fs_extra=require(_0x02e7('0x6'));var auth=require(_0x02e7('0x7'));var interaction=require(_0x02e7('0x8'));var config=require('../../config/environment');var controller=require(_0x02e7('0x9'));router[_0x02e7('0xa')]('/',auth['isAuthenticated'](),controller[_0x02e7('0xb')]);router[_0x02e7('0xa')](_0x02e7('0xc'),auth[_0x02e7('0xd')](),controller[_0x02e7('0xe')]);router[_0x02e7('0xa')](_0x02e7('0xf'),auth[_0x02e7('0xd')](),controller[_0x02e7('0x10')]);router[_0x02e7('0x11')]('/',auth[_0x02e7('0xd')](),controller[_0x02e7('0x12')]);router[_0x02e7('0x13')](_0x02e7('0xf'),auth['isAuthenticated'](),controller[_0x02e7('0x14')]);router['delete'](_0x02e7('0xf'),auth[_0x02e7('0xd')](),controller[_0x02e7('0x15')]);module[_0x02e7('0x16')]=router;
\ No newline at end of file
+var _0x09a5=['destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','/:id','show','update'];(function(_0x549629,_0x20da71){var _0x138ae9=function(_0x16c5fe){while(--_0x16c5fe){_0x549629['push'](_0x549629['shift']());}};_0x138ae9(++_0x20da71);}(_0x09a5,0xc2));var _0x509a=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x09a5[_0x2bf141];return _0x48277b;};'use strict';var multer=require(_0x509a('0x0'));var util=require(_0x509a('0x1'));var path=require('path');var timeout=require(_0x509a('0x2'));var express=require(_0x509a('0x3'));var router=express['Router']();var fs_extra=require(_0x509a('0x4'));var auth=require(_0x509a('0x5'));var interaction=require(_0x509a('0x6'));var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0x509a('0x7')]('/',auth[_0x509a('0x8')](),controller[_0x509a('0x9')]);router[_0x509a('0x7')]('/describe',auth[_0x509a('0x8')](),controller[_0x509a('0xa')]);router[_0x509a('0x7')](_0x509a('0xb'),auth[_0x509a('0x8')](),controller[_0x509a('0xc')]);router['post']('/',auth[_0x509a('0x8')](),controller['create']);router['put'](_0x509a('0xb'),auth['isAuthenticated'](),controller[_0x509a('0xd')]);router['delete'](_0x509a('0xb'),auth['isAuthenticated'](),controller[_0x509a('0xe')]);module[_0x509a('0xf')]=router;
\ No newline at end of file
index 19e068c..416c29d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['sequelize','exports','name','STRING'];(function(_0x2fa69c,_0x336b16){var _0x2202a3=function(_0x541559){while(--_0x541559){_0x2fa69c['push'](_0x2fa69c['shift']());}};_0x2202a3(++_0x336b16);}(_0x46ed,0x168));var _0xd46e=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x46ed[_0xa148b7];return _0x51efd3;};'use strict';var Sequelize=require(_0xd46e('0x0'));module[_0xd46e('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xd46e('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd46e('0x3')]}};
\ No newline at end of file
+var _0xf494=['STRING','sequelize','exports'];(function(_0x1b92f9,_0x58a112){var _0x222157=function(_0x14a21c){while(--_0x14a21c){_0x1b92f9['push'](_0x1b92f9['shift']());}};_0x222157(++_0x58a112);}(_0xf494,0x1c6));var _0x4f49=function(_0x99259f,_0x4512e0){_0x99259f=_0x99259f-0x0;var _0x561c66=_0xf494[_0x99259f];return _0x561c66;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'name':{'type':Sequelize[_0x4f49('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4f49('0x2')]}};
\ No newline at end of file
index 1b84867..2269939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c16=['zip-dir','fast-json-patch','moment','mustache','path','sox','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','save','destroy','error','name','index','map','MailSubstatus','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','then','includeAll','include','findAll','rows','catch','show','fields','find','create','body','update','params','describe','eml-format'];(function(_0x531daf,_0x24a221){var _0x486c56=function(_0x167b26){while(--_0x167b26){_0x531daf['push'](_0x531daf['shift']());}};_0x486c56(++_0x24a221);}(_0x4c16,0x1cd));var _0x64c1=function(_0x506d83,_0x1899e9){_0x506d83=_0x506d83-0x0;var _0x335e8b=_0x4c16[_0x506d83];return _0x335e8b;};'use strict';var emlformat=require(_0x64c1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x64c1('0x1'));var jsonpatch=require(_0x64c1('0x2'));var rp=require('request-promise');var moment=require(_0x64c1('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x64c1('0x4'));var util=require('util');var path=require(_0x64c1('0x5'));var sox=require(_0x64c1('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x64c1('0x7'));var _=require(_0x64c1('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x64c1('0x9'));var deskjs=require(_0x64c1('0xa'));var toCsv=require(_0x64c1('0xb'));var querystring=require(_0x64c1('0xc'));var Papa=require(_0x64c1('0xd'));var Redis=require(_0x64c1('0xe'));var authService=require(_0x64c1('0xf'));var qs=require(_0x64c1('0x10'));var as=require(_0x64c1('0x11'));var hardwareService=require(_0x64c1('0x12'));var logger=require('../../config/logger')(_0x64c1('0x13'));var utils=require(_0x64c1('0x14'));var config=require(_0x64c1('0x15'));var licenseUtil=require(_0x64c1('0x16'));var db=require(_0x64c1('0x17'))['db'];function respondWithStatusCode(_0x2f0af0,_0x14c1b6){_0x14c1b6=_0x14c1b6||0xcc;return function(_0x11a93e){if(_0x11a93e){return _0x2f0af0[_0x64c1('0x18')](_0x14c1b6);}return _0x2f0af0['status'](_0x14c1b6)[_0x64c1('0x19')]();};}function respondWithResult(_0x54806e,_0x4e1871){_0x4e1871=_0x4e1871||0xc8;return function(_0x4e1ea2){if(_0x4e1ea2){return _0x54806e[_0x64c1('0x1a')](_0x4e1871)['json'](_0x4e1ea2);}};}function respondWithFilteredResult(_0x4374a6,_0x3171ef){return function(_0x2b8e43){if(_0x2b8e43){var _0x1fe733=typeof _0x3171ef[_0x64c1('0x1b')]==='undefined'&&typeof _0x3171ef[_0x64c1('0x1c')]===_0x64c1('0x1d');var _0x2ebc3f=_0x2b8e43[_0x64c1('0x1e')];var _0x314930=_0x1fe733?0x0:_0x3171ef['offset'];var _0x5d2153=_0x1fe733?_0x2b8e43['count']:_0x3171ef[_0x64c1('0x1b')]+_0x3171ef[_0x64c1('0x1c')];var _0x4b458a;if(_0x5d2153>=_0x2ebc3f){_0x5d2153=_0x2ebc3f;_0x4b458a=0xc8;}else{_0x4b458a=0xce;}_0x4374a6[_0x64c1('0x1a')](_0x4b458a);return _0x4374a6[_0x64c1('0x1f')](_0x64c1('0x20'),_0x314930+'-'+_0x5d2153+'/'+_0x2ebc3f)[_0x64c1('0x21')](_0x2b8e43);}return null;};}function patchUpdates(_0x58253e){return function(_0x1de70b){try{jsonpatch[_0x64c1('0x22')](_0x1de70b,_0x58253e,!![]);}catch(_0x2f5a04){return BPromise['reject'](_0x2f5a04);}return _0x1de70b[_0x64c1('0x23')]();};}function saveUpdates(_0x40bb98,_0x589fbb){return function(_0x32bfd5){if(_0x32bfd5){return _0x32bfd5['update'](_0x40bb98)['then'](function(_0xe7db9b){return _0xe7db9b;});}return null;};}function removeEntity(_0xc7c4aa,_0x38b8d5){return function(_0x301fe7){if(_0x301fe7){return _0x301fe7[_0x64c1('0x24')]()['then'](function(){_0xc7c4aa[_0x64c1('0x1a')](0xcc)[_0x64c1('0x19')]();});}};}function handleEntityNotFound(_0x55ce13,_0x4e4ff8){return function(_0x3d6aaa){if(!_0x3d6aaa){_0x55ce13['sendStatus'](0x194);}return _0x3d6aaa;};}function handleError(_0x4e0849,_0x49408b){_0x49408b=_0x49408b||0x1f4;return function(_0x22361f){logger[_0x64c1('0x25')](_0x22361f['stack']);if(_0x22361f[_0x64c1('0x26')]){delete _0x22361f['name'];}_0x4e0849[_0x64c1('0x1a')](_0x49408b)['send'](_0x22361f);};}exports[_0x64c1('0x27')]=function(_0x1b0c45,_0x4a7cc0){var _0x4f8804={},_0x51620e={},_0x5f417e={'count':0x0,'rows':[]};var _0x292d05=_[_0x64c1('0x28')](db[_0x64c1('0x29')][_0x64c1('0x2a')],function(_0x46fbf2){return{'name':_0x46fbf2[_0x64c1('0x2b')],'type':_0x46fbf2[_0x64c1('0x2c')][_0x64c1('0x2d')]};});_0x51620e['model']=_[_0x64c1('0x28')](_0x292d05,_0x64c1('0x26'));_0x51620e[_0x64c1('0x2e')]=_[_0x64c1('0x2f')](_0x1b0c45[_0x64c1('0x2e')]);_0x51620e['filters']=_[_0x64c1('0x30')](_0x51620e[_0x64c1('0x31')],_0x51620e[_0x64c1('0x2e')]);_0x4f8804[_0x64c1('0x32')]=_[_0x64c1('0x30')](_0x51620e[_0x64c1('0x31')],qs['fields'](_0x1b0c45['query']['fields']));_0x4f8804[_0x64c1('0x32')]=_0x4f8804[_0x64c1('0x32')][_0x64c1('0x33')]?_0x4f8804[_0x64c1('0x32')]:_0x51620e[_0x64c1('0x31')];if(!_0x1b0c45[_0x64c1('0x2e')][_0x64c1('0x34')](_0x64c1('0x35'))){_0x4f8804[_0x64c1('0x1c')]=qs[_0x64c1('0x1c')](_0x1b0c45[_0x64c1('0x2e')][_0x64c1('0x1c')]);_0x4f8804[_0x64c1('0x1b')]=qs[_0x64c1('0x1b')](_0x1b0c45['query']['offset']);}_0x4f8804[_0x64c1('0x36')]=qs[_0x64c1('0x37')](_0x1b0c45[_0x64c1('0x2e')]['sort']);_0x4f8804[_0x64c1('0x38')]=qs[_0x64c1('0x39')](_[_0x64c1('0x3a')](_0x1b0c45['query'],_0x51620e['filters']),_0x292d05);if(_0x1b0c45[_0x64c1('0x2e')][_0x64c1('0x3b')]){_0x4f8804[_0x64c1('0x38')]=_['merge'](_0x4f8804['where'],{'$or':_['map'](_0x292d05,function(_0x3a5e72){if(_0x3a5e72[_0x64c1('0x2c')]!==_0x64c1('0x3c')){var _0x209d3e={};_0x209d3e[_0x3a5e72['name']]={'$like':'%'+_0x1b0c45[_0x64c1('0x2e')][_0x64c1('0x3b')]+'%'};return _0x209d3e;}})});}_0x4f8804=_[_0x64c1('0x3d')]({},_0x4f8804,_0x1b0c45[_0x64c1('0x3e')]);var _0x1d7897={'where':_0x4f8804['where']};return db[_0x64c1('0x29')]['count'](_0x1d7897)[_0x64c1('0x3f')](function(_0x25d770){_0x5f417e[_0x64c1('0x1e')]=_0x25d770;if(_0x1b0c45[_0x64c1('0x2e')][_0x64c1('0x40')]){_0x4f8804[_0x64c1('0x41')]=[{'all':!![]}];}return db[_0x64c1('0x29')][_0x64c1('0x42')](_0x4f8804);})[_0x64c1('0x3f')](function(_0x56771a){_0x5f417e[_0x64c1('0x43')]=_0x56771a;return _0x5f417e;})[_0x64c1('0x3f')](respondWithFilteredResult(_0x4a7cc0,_0x4f8804))[_0x64c1('0x44')](handleError(_0x4a7cc0,null));};exports[_0x64c1('0x45')]=function(_0x12e9b9,_0x1adf73){var _0x4d50e7={'raw':!![],'where':{'id':_0x12e9b9['params']['id']}},_0x3729d0={};_0x3729d0[_0x64c1('0x31')]=_[_0x64c1('0x2f')](db['MailSubstatus']['rawAttributes']);_0x3729d0['query']=_['keys'](_0x12e9b9['query']);_0x3729d0['filters']=_['intersection'](_0x3729d0[_0x64c1('0x31')],_0x3729d0[_0x64c1('0x2e')]);_0x4d50e7[_0x64c1('0x32')]=_[_0x64c1('0x30')](_0x3729d0[_0x64c1('0x31')],qs[_0x64c1('0x46')](_0x12e9b9[_0x64c1('0x2e')][_0x64c1('0x46')]));_0x4d50e7['attributes']=_0x4d50e7[_0x64c1('0x32')][_0x64c1('0x33')]?_0x4d50e7[_0x64c1('0x32')]:_0x3729d0[_0x64c1('0x31')];if(_0x12e9b9[_0x64c1('0x2e')][_0x64c1('0x40')]){_0x4d50e7['include']=[{'all':!![]}];}_0x4d50e7=_[_0x64c1('0x3d')]({},_0x4d50e7,_0x12e9b9[_0x64c1('0x3e')]);return db[_0x64c1('0x29')][_0x64c1('0x47')](_0x4d50e7)[_0x64c1('0x3f')](handleEntityNotFound(_0x1adf73,null))[_0x64c1('0x3f')](respondWithResult(_0x1adf73,null))[_0x64c1('0x44')](handleError(_0x1adf73,null));};exports['create']=function(_0x307a41,_0xf776b9){return db[_0x64c1('0x29')][_0x64c1('0x48')](_0x307a41[_0x64c1('0x49')],{})[_0x64c1('0x3f')](respondWithResult(_0xf776b9,0xc9))[_0x64c1('0x44')](handleError(_0xf776b9,null));};exports[_0x64c1('0x4a')]=function(_0x2e7918,_0x5be09c){if(_0x2e7918[_0x64c1('0x49')]['id']){delete _0x2e7918[_0x64c1('0x49')]['id'];}return db[_0x64c1('0x29')][_0x64c1('0x47')]({'where':{'id':_0x2e7918[_0x64c1('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5be09c,null))[_0x64c1('0x3f')](saveUpdates(_0x2e7918[_0x64c1('0x49')],null))[_0x64c1('0x3f')](respondWithResult(_0x5be09c,null))[_0x64c1('0x44')](handleError(_0x5be09c,null));};exports[_0x64c1('0x24')]=function(_0x4b6381,_0x2d3e3a){return db[_0x64c1('0x29')][_0x64c1('0x47')]({'where':{'id':_0x4b6381['params']['id']}})[_0x64c1('0x3f')](handleEntityNotFound(_0x2d3e3a,null))[_0x64c1('0x3f')](removeEntity(_0x2d3e3a,null))[_0x64c1('0x44')](handleError(_0x2d3e3a,null));};exports[_0x64c1('0x4c')]=function(_0xd183ba,_0x3b1f14){return db[_0x64c1('0x29')][_0x64c1('0x4c')]()[_0x64c1('0x3f')](respondWithResult(_0x3b1f14,null))[_0x64c1('0x44')](handleError(_0x3b1f14,null));};
\ No newline at end of file
+var _0xab5e=['update','destroy','then','error','name','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','MailSubstatus','include','findAll','rows','catch','show','length','body','find','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject'];(function(_0x2a312e,_0x1b29a3){var _0x22c784=function(_0x1c9853){while(--_0x1c9853){_0x2a312e['push'](_0x2a312e['shift']());}};_0x22c784(++_0x1b29a3);}(_0xab5e,0x183));var _0xeab5=function(_0x2a1c6b,_0x7821bc){_0x2a1c6b=_0x2a1c6b-0x0;var _0xccc3a1=_0xab5e[_0x2a1c6b];return _0xccc3a1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeab5('0x0'));var zipdir=require(_0xeab5('0x1'));var jsonpatch=require(_0xeab5('0x2'));var rp=require(_0xeab5('0x3'));var moment=require(_0xeab5('0x4'));var BPromise=require(_0xeab5('0x5'));var Mustache=require('mustache');var util=require(_0xeab5('0x6'));var path=require(_0xeab5('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeab5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeab5('0x9'));var squel=require('squel');var crypto=require(_0xeab5('0xa'));var jsforce=require(_0xeab5('0xb'));var deskjs=require(_0xeab5('0xc'));var toCsv=require(_0xeab5('0xd'));var querystring=require(_0xeab5('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xeab5('0xf'));var qs=require(_0xeab5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeab5('0x11'));var logger=require(_0xeab5('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xeab5('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xeab5('0x14'))['db'];function respondWithStatusCode(_0x59d79e,_0x22f210){_0x22f210=_0x22f210||0xcc;return function(_0x26ca91){if(_0x26ca91){return _0x59d79e[_0xeab5('0x15')](_0x22f210);}return _0x59d79e[_0xeab5('0x16')](_0x22f210)[_0xeab5('0x17')]();};}function respondWithResult(_0x30cc12,_0x502c13){_0x502c13=_0x502c13||0xc8;return function(_0x2c5345){if(_0x2c5345){return _0x30cc12[_0xeab5('0x16')](_0x502c13)[_0xeab5('0x18')](_0x2c5345);}};}function respondWithFilteredResult(_0x57a702,_0x51d79d){return function(_0x5742b7){if(_0x5742b7){var _0x54c033=typeof _0x51d79d[_0xeab5('0x19')]===_0xeab5('0x1a')&&typeof _0x51d79d['limit']===_0xeab5('0x1a');var _0x22ba5c=_0x5742b7[_0xeab5('0x1b')];var _0x3c8918=_0x54c033?0x0:_0x51d79d[_0xeab5('0x19')];var _0x253a68=_0x54c033?_0x5742b7['count']:_0x51d79d[_0xeab5('0x19')]+_0x51d79d[_0xeab5('0x1c')];var _0x36edc1;if(_0x253a68>=_0x22ba5c){_0x253a68=_0x22ba5c;_0x36edc1=0xc8;}else{_0x36edc1=0xce;}_0x57a702[_0xeab5('0x16')](_0x36edc1);return _0x57a702[_0xeab5('0x1d')](_0xeab5('0x1e'),_0x3c8918+'-'+_0x253a68+'/'+_0x22ba5c)['json'](_0x5742b7);}return null;};}function patchUpdates(_0x530e60){return function(_0x5a08ae){try{jsonpatch[_0xeab5('0x1f')](_0x5a08ae,_0x530e60,!![]);}catch(_0x5ac191){return BPromise[_0xeab5('0x20')](_0x5ac191);}return _0x5a08ae['save']();};}function saveUpdates(_0x571af2,_0x4b6e6d){return function(_0x3225f9){if(_0x3225f9){return _0x3225f9[_0xeab5('0x21')](_0x571af2)['then'](function(_0x3b7f71){return _0x3b7f71;});}return null;};}function removeEntity(_0xaee7f2,_0x25cb8e){return function(_0x2120d1){if(_0x2120d1){return _0x2120d1[_0xeab5('0x22')]()[_0xeab5('0x23')](function(){_0xaee7f2[_0xeab5('0x16')](0xcc)[_0xeab5('0x17')]();});}};}function handleEntityNotFound(_0x961d95,_0x2f8378){return function(_0x235ce4){if(!_0x235ce4){_0x961d95[_0xeab5('0x15')](0x194);}return _0x235ce4;};}function handleError(_0x5ab7eb,_0xe8bd54){_0xe8bd54=_0xe8bd54||0x1f4;return function(_0x2e1f6e){logger[_0xeab5('0x24')](_0x2e1f6e['stack']);if(_0x2e1f6e[_0xeab5('0x25')]){delete _0x2e1f6e['name'];}_0x5ab7eb[_0xeab5('0x16')](_0xe8bd54)['send'](_0x2e1f6e);};}exports['index']=function(_0x53b43d,_0x2ebc95){var _0x51f594={},_0x47e7db={},_0x44ca06={'count':0x0,'rows':[]};var _0x26889c=_['map'](db['MailSubstatus'][_0xeab5('0x26')],function(_0x1fa97f){return{'name':_0x1fa97f[_0xeab5('0x27')],'type':_0x1fa97f[_0xeab5('0x28')][_0xeab5('0x29')]};});_0x47e7db[_0xeab5('0x2a')]=_[_0xeab5('0x2b')](_0x26889c,'name');_0x47e7db[_0xeab5('0x2c')]=_[_0xeab5('0x2d')](_0x53b43d[_0xeab5('0x2c')]);_0x47e7db[_0xeab5('0x2e')]=_[_0xeab5('0x2f')](_0x47e7db['model'],_0x47e7db[_0xeab5('0x2c')]);_0x51f594[_0xeab5('0x30')]=_[_0xeab5('0x2f')](_0x47e7db['model'],qs[_0xeab5('0x31')](_0x53b43d[_0xeab5('0x2c')][_0xeab5('0x31')]));_0x51f594['attributes']=_0x51f594['attributes']['length']?_0x51f594['attributes']:_0x47e7db['model'];if(!_0x53b43d[_0xeab5('0x2c')]['hasOwnProperty'](_0xeab5('0x32'))){_0x51f594['limit']=qs[_0xeab5('0x1c')](_0x53b43d[_0xeab5('0x2c')][_0xeab5('0x1c')]);_0x51f594['offset']=qs['offset'](_0x53b43d[_0xeab5('0x2c')]['offset']);}_0x51f594[_0xeab5('0x33')]=qs['sort'](_0x53b43d[_0xeab5('0x2c')][_0xeab5('0x34')]);_0x51f594['where']=qs[_0xeab5('0x2e')](_[_0xeab5('0x35')](_0x53b43d[_0xeab5('0x2c')],_0x47e7db['filters']),_0x26889c);if(_0x53b43d[_0xeab5('0x2c')][_0xeab5('0x36')]){_0x51f594[_0xeab5('0x37')]=_[_0xeab5('0x38')](_0x51f594[_0xeab5('0x37')],{'$or':_['map'](_0x26889c,function(_0x2cbb7f){if(_0x2cbb7f[_0xeab5('0x28')]!==_0xeab5('0x39')){var _0x22f8ef={};_0x22f8ef[_0x2cbb7f[_0xeab5('0x25')]]={'$like':'%'+_0x53b43d[_0xeab5('0x2c')][_0xeab5('0x36')]+'%'};return _0x22f8ef;}})});}_0x51f594=_['merge']({},_0x51f594,_0x53b43d[_0xeab5('0x3a')]);var _0x3654a7={'where':_0x51f594[_0xeab5('0x37')]};return db[_0xeab5('0x3b')][_0xeab5('0x1b')](_0x3654a7)[_0xeab5('0x23')](function(_0x1d5707){_0x44ca06[_0xeab5('0x1b')]=_0x1d5707;if(_0x53b43d[_0xeab5('0x2c')]['includeAll']){_0x51f594[_0xeab5('0x3c')]=[{'all':!![]}];}return db[_0xeab5('0x3b')][_0xeab5('0x3d')](_0x51f594);})[_0xeab5('0x23')](function(_0x1cd6b8){_0x44ca06[_0xeab5('0x3e')]=_0x1cd6b8;return _0x44ca06;})[_0xeab5('0x23')](respondWithFilteredResult(_0x2ebc95,_0x51f594))[_0xeab5('0x3f')](handleError(_0x2ebc95,null));};exports[_0xeab5('0x40')]=function(_0x392869,_0x15c994){var _0x39757d={'raw':!![],'where':{'id':_0x392869['params']['id']}},_0x58ed5b={};_0x58ed5b[_0xeab5('0x2a')]=_[_0xeab5('0x2d')](db[_0xeab5('0x3b')]['rawAttributes']);_0x58ed5b['query']=_[_0xeab5('0x2d')](_0x392869[_0xeab5('0x2c')]);_0x58ed5b[_0xeab5('0x2e')]=_[_0xeab5('0x2f')](_0x58ed5b[_0xeab5('0x2a')],_0x58ed5b[_0xeab5('0x2c')]);_0x39757d['attributes']=_['intersection'](_0x58ed5b['model'],qs[_0xeab5('0x31')](_0x392869[_0xeab5('0x2c')][_0xeab5('0x31')]));_0x39757d[_0xeab5('0x30')]=_0x39757d['attributes'][_0xeab5('0x41')]?_0x39757d[_0xeab5('0x30')]:_0x58ed5b[_0xeab5('0x2a')];if(_0x392869[_0xeab5('0x2c')]['includeAll']){_0x39757d[_0xeab5('0x3c')]=[{'all':!![]}];}_0x39757d=_[_0xeab5('0x38')]({},_0x39757d,_0x392869['options']);return db[_0xeab5('0x3b')]['find'](_0x39757d)[_0xeab5('0x23')](handleEntityNotFound(_0x15c994,null))[_0xeab5('0x23')](respondWithResult(_0x15c994,null))[_0xeab5('0x3f')](handleError(_0x15c994,null));};exports['create']=function(_0x2064ac,_0x28c584){return db[_0xeab5('0x3b')]['create'](_0x2064ac[_0xeab5('0x42')],{})[_0xeab5('0x23')](respondWithResult(_0x28c584,0xc9))[_0xeab5('0x3f')](handleError(_0x28c584,null));};exports[_0xeab5('0x21')]=function(_0x165063,_0x33a7c6){if(_0x165063[_0xeab5('0x42')]['id']){delete _0x165063['body']['id'];}return db[_0xeab5('0x3b')][_0xeab5('0x43')]({'where':{'id':_0x165063[_0xeab5('0x44')]['id']}})[_0xeab5('0x23')](handleEntityNotFound(_0x33a7c6,null))['then'](saveUpdates(_0x165063[_0xeab5('0x42')],null))[_0xeab5('0x23')](respondWithResult(_0x33a7c6,null))[_0xeab5('0x3f')](handleError(_0x33a7c6,null));};exports[_0xeab5('0x22')]=function(_0x430e99,_0x6482){return db['MailSubstatus'][_0xeab5('0x43')]({'where':{'id':_0x430e99['params']['id']}})['then'](handleEntityNotFound(_0x6482,null))[_0xeab5('0x23')](removeEntity(_0x6482,null))[_0xeab5('0x3f')](handleError(_0x6482,null));};exports[_0xeab5('0x45')]=function(_0x41a6da,_0x10cef0){return db[_0xeab5('0x3b')][_0xeab5('0x45')]()[_0xeab5('0x23')](respondWithResult(_0x10cef0,null))[_0xeab5('0x3f')](handleError(_0x10cef0,null));};
\ No newline at end of file
index d2f70a9..1c282cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x360d=['events','../../mysqldb','MailSubstatus','update','emit','hasOwnProperty','hook','exports'];(function(_0x26861b,_0x1aa482){var _0x70027c=function(_0x449341){while(--_0x449341){_0x26861b['push'](_0x26861b['shift']());}};_0x70027c(++_0x1aa482);}(_0x360d,0xc0));var _0xd360=function(_0x65959d,_0x4dd888){_0x65959d=_0x65959d-0x0;var _0x2d71aa=_0x360d[_0x65959d];return _0x2d71aa;};'use strict';var EventEmitter=require(_0xd360('0x0'));var MailSubstatus=require(_0xd360('0x1'))['db'][_0xd360('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents['setMaxListeners'](0x0);var events={'afterUpdate':_0xd360('0x3')};function emitEvent(_0x44d4c2){return function(_0x3f8692,_0x31dbc8,_0x10c28b){MailSubstatusEvents[_0xd360('0x4')](_0x44d4c2+':'+_0x3f8692['id'],_0x3f8692);MailSubstatusEvents[_0xd360('0x4')](_0x44d4c2,_0x3f8692);_0x10c28b(null);};}for(var e in events){if(events[_0xd360('0x5')](e)){var event=events[e];MailSubstatus[_0xd360('0x6')](e,emitEvent(event));}}module[_0xd360('0x7')]=MailSubstatusEvents;
\ No newline at end of file
+var _0xe293=['exports','events','../../mysqldb','MailSubstatus','setMaxListeners','emit','hasOwnProperty','hook'];(function(_0xb25ef0,_0x30fd2f){var _0x33f12e=function(_0x177187){while(--_0x177187){_0xb25ef0['push'](_0xb25ef0['shift']());}};_0x33f12e(++_0x30fd2f);}(_0xe293,0x1a1));var _0x3e29=function(_0x53b53e,_0x498437){_0x53b53e=_0x53b53e-0x0;var _0xbb6179=_0xe293[_0x53b53e];return _0xbb6179;};'use strict';var EventEmitter=require(_0x3e29('0x0'));var MailSubstatus=require(_0x3e29('0x1'))['db'][_0x3e29('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x3e29('0x3')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x2503fb){return function(_0x12ece3,_0xfa6cf6,_0xf69df6){MailSubstatusEvents[_0x3e29('0x4')](_0x2503fb+':'+_0x12ece3['id'],_0x12ece3);MailSubstatusEvents[_0x3e29('0x4')](_0x2503fb,_0x12ece3);_0xf69df6(null);};}for(var e in events){if(events[_0x3e29('0x5')](e)){var event=events[e];MailSubstatus[_0x3e29('0x6')](e,emitEvent(event));}}module[_0x3e29('0x7')]=MailSubstatusEvents;
\ No newline at end of file
index de98478..71c1dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a50=['MailSubstatus','mail_substatuses','Condition','update','name','_previousDataValues','catch','./mailSubstatus.attributes','models'];(function(_0x93cd94,_0x21a1d9){var _0x5096f6=function(_0x45e81c){while(--_0x45e81c){_0x93cd94['push'](_0x93cd94['shift']());}};_0x5096f6(++_0x21a1d9);}(_0x3a50,0xcd));var _0x03a5=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x3a50[_0x4a9fb1];return _0x348672;};'use strict';var attributes=require(_0x03a5('0x0'));module['exports']=function(_0x5514af){var _0x12ab07=_0x5514af[_0x03a5('0x1')];return _0x5514af['define'](_0x03a5('0x2'),attributes,{'tableName':_0x03a5('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x30a5fc,_0x3983bd,_0x190c1a){return _0x12ab07[_0x03a5('0x4')][_0x03a5('0x5')]({'value':_0x30a5fc[_0x03a5('0x6')]},{'where':{'field':'mailSubstatus','value':_0x30a5fc[_0x03a5('0x7')][_0x03a5('0x6')]}})['then'](function(){_0x190c1a();})[_0x03a5('0x8')](function(_0x3bd324){_0x190c1a(_0x3bd324);});}}});};
\ No newline at end of file
+var _0x1799=['mailSubstatus','_previousDataValues','name','then','catch','./mailSubstatus.attributes','models','define','MailSubstatus','mail_substatuses','Condition','update'];(function(_0x29c1a7,_0x380c96){var _0x1119cf=function(_0x21063a){while(--_0x21063a){_0x29c1a7['push'](_0x29c1a7['shift']());}};_0x1119cf(++_0x380c96);}(_0x1799,0x161));var _0x9179=function(_0x4fda81,_0x2a1f4c){_0x4fda81=_0x4fda81-0x0;var _0x567e41=_0x1799[_0x4fda81];return _0x567e41;};'use strict';var attributes=require(_0x9179('0x0'));module['exports']=function(_0x2e7d8b){var _0x2df632=_0x2e7d8b[_0x9179('0x1')];return _0x2e7d8b[_0x9179('0x2')](_0x9179('0x3'),attributes,{'tableName':_0x9179('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x201a14,_0x519a31,_0x5117bd){return _0x2df632[_0x9179('0x5')][_0x9179('0x6')]({'value':_0x201a14['name']},{'where':{'field':_0x9179('0x7'),'value':_0x201a14[_0x9179('0x8')][_0x9179('0x9')]}})[_0x9179('0xa')](function(){_0x5117bd();})[_0x9179('0xb')](function(_0x1167d0){_0x5117bd(_0x1167d0);});}}});};
\ No newline at end of file
index 2adf8f6..8f561d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcef4=['http','then','MailSubstatus,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcef4,0x7d));var _0x4cef=function(_0x4eafed,_0x26e2bc){_0x4eafed=_0x4eafed-0x0;var _0x159c85=_0xcef4[_0x4eafed];return _0x159c85;};'use strict';var _=require(_0x4cef('0x0'));var util=require('util');var moment=require(_0x4cef('0x1'));var BPromise=require('bluebird');var rs=require(_0x4cef('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4cef('0x3'));var logger=require(_0x4cef('0x4'))('rpc');var config=require(_0x4cef('0x5'));var jayson=require(_0x4cef('0x6'));var client=jayson[_0x4cef('0x7')][_0x4cef('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3fe89d,_0x5e05e2,_0x383047){return new BPromise(function(_0x184186,_0x5e76f3){return client['request'](_0x3fe89d,_0x383047)[_0x4cef('0x9')](function(_0x23ffca){logger['info'](_0x4cef('0xa'),_0x5e05e2,'request\x20sent');logger[_0x4cef('0xb')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x5e05e2,_0x4cef('0xc'),JSON[_0x4cef('0xd')](_0x23ffca));if(_0x23ffca[_0x4cef('0xe')]){if(_0x23ffca['error'][_0x4cef('0xf')]===0x1f4){logger[_0x4cef('0xe')](_0x4cef('0xa'),_0x5e05e2,_0x23ffca[_0x4cef('0xe')][_0x4cef('0x10')]);return _0x5e76f3(_0x23ffca[_0x4cef('0xe')][_0x4cef('0x10')]);}logger[_0x4cef('0xe')](_0x4cef('0xa'),_0x5e05e2,_0x23ffca[_0x4cef('0xe')]['message']);return _0x184186(_0x23ffca['error'][_0x4cef('0x10')]);}else{logger['info']('MailSubstatus,\x20%s,\x20%s',_0x5e05e2,_0x4cef('0xc'));_0x184186(_0x23ffca[_0x4cef('0x11')][_0x4cef('0x10')]);}})[_0x4cef('0x12')](function(_0x59852e){logger['error'](_0x4cef('0xa'),_0x5e05e2,_0x59852e);_0x5e76f3(_0x59852e);});});}
\ No newline at end of file
+var _0x76d2=['MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x587460,_0x55a69a){var _0x15b0ed=function(_0x37ee25){while(--_0x37ee25){_0x587460['push'](_0x587460['shift']());}};_0x15b0ed(++_0x55a69a);}(_0x76d2,0x162));var _0x276d=function(_0x2c82e0,_0xd1680){_0x2c82e0=_0x2c82e0-0x0;var _0x2976c7=_0x76d2[_0x2c82e0];return _0x2976c7;};'use strict';var _=require(_0x276d('0x0'));var util=require(_0x276d('0x1'));var moment=require(_0x276d('0x2'));var BPromise=require(_0x276d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x276d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x276d('0x5'));var logger=require(_0x276d('0x6'))(_0x276d('0x7'));var config=require(_0x276d('0x8'));var jayson=require(_0x276d('0x9'));var client=jayson['client'][_0x276d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x647b3b,_0x352394,_0x3b6718){return new BPromise(function(_0x2a88ce,_0x487742){return client[_0x276d('0xb')](_0x647b3b,_0x3b6718)[_0x276d('0xc')](function(_0x5b757d){logger[_0x276d('0xd')](_0x276d('0xe'),_0x352394,_0x276d('0xf'));logger[_0x276d('0x10')](_0x276d('0x11'),_0x352394,_0x276d('0xf'),JSON[_0x276d('0x12')](_0x5b757d));if(_0x5b757d[_0x276d('0x13')]){if(_0x5b757d['error']['code']===0x1f4){logger[_0x276d('0x13')](_0x276d('0xe'),_0x352394,_0x5b757d[_0x276d('0x13')]['message']);return _0x487742(_0x5b757d[_0x276d('0x13')][_0x276d('0x14')]);}logger[_0x276d('0x13')](_0x276d('0xe'),_0x352394,_0x5b757d['error'][_0x276d('0x14')]);return _0x2a88ce(_0x5b757d['error']['message']);}else{logger[_0x276d('0xd')](_0x276d('0xe'),_0x352394,_0x276d('0xf'));_0x2a88ce(_0x5b757d[_0x276d('0x15')][_0x276d('0x14')]);}})[_0x276d('0x16')](function(_0x243e8c){logger[_0x276d('0x13')](_0x276d('0xe'),_0x352394,_0x243e8c);_0x487742(_0x243e8c);});});}
\ No newline at end of file
index 5f1dabf..816ad38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6fc=['delete','destroy','exports','connect-timeout','express','fs-extra','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create'];(function(_0x3220bb,_0x342a03){var _0x23415c=function(_0x56cc05){while(--_0x56cc05){_0x3220bb['push'](_0x3220bb['shift']());}};_0x23415c(++_0x342a03);}(_0xb6fc,0x1c3));var _0xcb6f=function(_0xd61ec0,_0x15e726){_0xd61ec0=_0xd61ec0-0x0;var _0x8d9e1e=_0xb6fc[_0xd61ec0];return _0x8d9e1e;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xcb6f('0x0'));var express=require(_0xcb6f('0x1'));var router=express['Router']();var fs_extra=require(_0xcb6f('0x2'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xcb6f('0x3'));var controller=require(_0xcb6f('0x4'));router[_0xcb6f('0x5')]('/',auth[_0xcb6f('0x6')](),controller['index']);router[_0xcb6f('0x5')](_0xcb6f('0x7'),auth[_0xcb6f('0x6')](),controller[_0xcb6f('0x8')]);router['get'](_0xcb6f('0x9'),auth[_0xcb6f('0x6')](),controller[_0xcb6f('0xa')]);router[_0xcb6f('0xb')]('/',auth[_0xcb6f('0x6')](),controller[_0xcb6f('0xc')]);router['put'](_0xcb6f('0x9'),auth[_0xcb6f('0x6')](),controller['update']);router[_0xcb6f('0xd')]('/:id',auth[_0xcb6f('0x6')](),controller[_0xcb6f('0xe')]);module[_0xcb6f('0xf')]=router;
\ No newline at end of file
+var _0x3dc9=['../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','delete','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x523bd2,_0x4c3ecc){var _0x4a1012=function(_0x353d0b){while(--_0x353d0b){_0x523bd2['push'](_0x523bd2['shift']());}};_0x4a1012(++_0x4c3ecc);}(_0x3dc9,0xae));var _0x93dc=function(_0x5be247,_0x5b4636){_0x5be247=_0x5be247-0x0;var _0x534eac=_0x3dc9[_0x5be247];return _0x534eac;};'use strict';var multer=require('multer');var util=require(_0x93dc('0x0'));var path=require(_0x93dc('0x1'));var timeout=require(_0x93dc('0x2'));var express=require(_0x93dc('0x3'));var router=express[_0x93dc('0x4')]();var fs_extra=require(_0x93dc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x93dc('0x6'));var config=require(_0x93dc('0x7'));var controller=require(_0x93dc('0x8'));router[_0x93dc('0x9')]('/',auth[_0x93dc('0xa')](),controller[_0x93dc('0xb')]);router[_0x93dc('0x9')]('/describe',auth[_0x93dc('0xa')](),controller[_0x93dc('0xc')]);router[_0x93dc('0x9')](_0x93dc('0xd'),auth['isAuthenticated'](),controller[_0x93dc('0xe')]);router[_0x93dc('0xf')]('/',auth[_0x93dc('0xa')](),controller[_0x93dc('0x10')]);router[_0x93dc('0x11')](_0x93dc('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x93dc('0x12')](_0x93dc('0xd'),auth[_0x93dc('0xa')](),controller['destroy']);module[_0x93dc('0x13')]=router;
\ No newline at end of file
index 331b985..b0fba6f 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(_0x16a637,_0x5eb627){var _0x25126d=function(_0x54e016){while(--_0x54e016){_0x16a637['push'](_0x16a637['shift']());}};_0x25126d(++_0x5eb627);}(_0xb43b,0x1b2));var _0xbb43=function(_0x5e2b7b,_0x420e59){_0x5e2b7b=_0x5e2b7b-0x0;var _0x39af67=_0xb43b[_0x5e2b7b];return _0x39af67;};'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 _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x1f9f5f,_0x509fb7){var _0x51d649=function(_0x4a5285){while(--_0x4a5285){_0x1f9f5f['push'](_0x1f9f5f['shift']());}};_0x51d649(++_0x509fb7);}(_0xb43b,0x1b2));var _0xbb43=function(_0x6149c1,_0xb5092){_0x6149c1=_0x6149c1-0x0;var _0xccaf66=_0xb43b[_0x6149c1];return _0xccaf66;};'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 1a3da7a..a50e77b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e73=['sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','count','limit','Content-Range','json','apply','save','update','then','name','send','map','MailTransferReport','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','length','find','create','body','params','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x188907,_0x1afb5d){var _0x39c928=function(_0x3d211c){while(--_0x3d211c){_0x188907['push'](_0x188907['shift']());}};_0x39c928(++_0x1afb5d);}(_0x8e73,0x120));var _0x38e7=function(_0xd231ea,_0x26d119){_0xd231ea=_0xd231ea-0x0;var _0x507a1d=_0x8e73[_0xd231ea];return _0x507a1d;};'use strict';var emlformat=require(_0x38e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x38e7('0x1'));var jsonpatch=require(_0x38e7('0x2'));var rp=require(_0x38e7('0x3'));var moment=require(_0x38e7('0x4'));var BPromise=require(_0x38e7('0x5'));var Mustache=require(_0x38e7('0x6'));var util=require(_0x38e7('0x7'));var path=require('path');var sox=require(_0x38e7('0x8'));var csv=require(_0x38e7('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x38e7('0xa'));var squel=require('squel');var crypto=require(_0x38e7('0xb'));var jsforce=require(_0x38e7('0xc'));var deskjs=require(_0x38e7('0xd'));var toCsv=require(_0x38e7('0x9'));var querystring=require(_0x38e7('0xe'));var Papa=require('papaparse');var Redis=require(_0x38e7('0xf'));var authService=require(_0x38e7('0x10'));var qs=require(_0x38e7('0x11'));var as=require(_0x38e7('0x12'));var hardwareService=require(_0x38e7('0x13'));var logger=require(_0x38e7('0x14'))(_0x38e7('0x15'));var utils=require(_0x38e7('0x16'));var config=require(_0x38e7('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x38e7('0x18'))['db'];function respondWithStatusCode(_0x37db7d,_0x1ee1e5){_0x1ee1e5=_0x1ee1e5||0xcc;return function(_0x541976){if(_0x541976){return _0x37db7d['sendStatus'](_0x1ee1e5);}return _0x37db7d[_0x38e7('0x19')](_0x1ee1e5)[_0x38e7('0x1a')]();};}function respondWithResult(_0x48c2f0,_0x8a986d){_0x8a986d=_0x8a986d||0xc8;return function(_0x5dabf7){if(_0x5dabf7){return _0x48c2f0['status'](_0x8a986d)['json'](_0x5dabf7);}};}function respondWithFilteredResult(_0x9983b4,_0x39077e){return function(_0x34fd75){if(_0x34fd75){var _0x5153f7=typeof _0x39077e[_0x38e7('0x1b')]===_0x38e7('0x1c')&&typeof _0x39077e['limit']===_0x38e7('0x1c');var _0x45e60a=_0x34fd75[_0x38e7('0x1d')];var _0x3f7ca0=_0x5153f7?0x0:_0x39077e[_0x38e7('0x1b')];var _0x1dd9df=_0x5153f7?_0x34fd75[_0x38e7('0x1d')]:_0x39077e[_0x38e7('0x1b')]+_0x39077e[_0x38e7('0x1e')];var _0x4e53fa;if(_0x1dd9df>=_0x45e60a){_0x1dd9df=_0x45e60a;_0x4e53fa=0xc8;}else{_0x4e53fa=0xce;}_0x9983b4[_0x38e7('0x19')](_0x4e53fa);return _0x9983b4['set'](_0x38e7('0x1f'),_0x3f7ca0+'-'+_0x1dd9df+'/'+_0x45e60a)[_0x38e7('0x20')](_0x34fd75);}return null;};}function patchUpdates(_0x4a1e3c){return function(_0x24b20c){try{jsonpatch[_0x38e7('0x21')](_0x24b20c,_0x4a1e3c,!![]);}catch(_0x14815c){return BPromise['reject'](_0x14815c);}return _0x24b20c[_0x38e7('0x22')]();};}function saveUpdates(_0x1ab4f5,_0x4e3394){return function(_0x337562){if(_0x337562){return _0x337562[_0x38e7('0x23')](_0x1ab4f5)['then'](function(_0x51b63a){return _0x51b63a;});}return null;};}function removeEntity(_0x17c600,_0x236e0a){return function(_0x4ba855){if(_0x4ba855){return _0x4ba855['destroy']()[_0x38e7('0x24')](function(){_0x17c600['status'](0xcc)[_0x38e7('0x1a')]();});}};}function handleEntityNotFound(_0x163923,_0x35ad43){return function(_0x8ee384){if(!_0x8ee384){_0x163923['sendStatus'](0x194);}return _0x8ee384;};}function handleError(_0x480f6c,_0xb38cd6){_0xb38cd6=_0xb38cd6||0x1f4;return function(_0x5d77c9){logger['error'](_0x5d77c9['stack']);if(_0x5d77c9[_0x38e7('0x25')]){delete _0x5d77c9[_0x38e7('0x25')];}_0x480f6c[_0x38e7('0x19')](_0xb38cd6)[_0x38e7('0x26')](_0x5d77c9);};}exports['index']=function(_0x1ad467,_0x37bae3){var _0x58cbb3={},_0x50e2c3={},_0x3d215e={'count':0x0,'rows':[]};var _0x34f0d1=_[_0x38e7('0x27')](db[_0x38e7('0x28')]['rawAttributes'],function(_0x328076){return{'name':_0x328076['fieldName'],'type':_0x328076[_0x38e7('0x29')][_0x38e7('0x2a')]};});_0x50e2c3[_0x38e7('0x2b')]=_[_0x38e7('0x27')](_0x34f0d1,'name');_0x50e2c3[_0x38e7('0x2c')]=_['keys'](_0x1ad467['query']);_0x50e2c3[_0x38e7('0x2d')]=_['intersection'](_0x50e2c3[_0x38e7('0x2b')],_0x50e2c3['query']);_0x58cbb3['attributes']=_[_0x38e7('0x2e')](_0x50e2c3['model'],qs[_0x38e7('0x2f')](_0x1ad467[_0x38e7('0x2c')][_0x38e7('0x2f')]));_0x58cbb3[_0x38e7('0x30')]=_0x58cbb3['attributes']['length']?_0x58cbb3['attributes']:_0x50e2c3['model'];if(!_0x1ad467['query'][_0x38e7('0x31')](_0x38e7('0x32'))){_0x58cbb3[_0x38e7('0x1e')]=qs[_0x38e7('0x1e')](_0x1ad467[_0x38e7('0x2c')][_0x38e7('0x1e')]);_0x58cbb3[_0x38e7('0x1b')]=qs['offset'](_0x1ad467[_0x38e7('0x2c')][_0x38e7('0x1b')]);}_0x58cbb3[_0x38e7('0x33')]=qs[_0x38e7('0x34')](_0x1ad467[_0x38e7('0x2c')][_0x38e7('0x34')]);_0x58cbb3['where']=qs[_0x38e7('0x2d')](_[_0x38e7('0x35')](_0x1ad467[_0x38e7('0x2c')],_0x50e2c3[_0x38e7('0x2d')]),_0x34f0d1);if(_0x1ad467[_0x38e7('0x2c')][_0x38e7('0x36')]){_0x58cbb3[_0x38e7('0x37')]=_[_0x38e7('0x38')](_0x58cbb3[_0x38e7('0x37')],{'$or':_[_0x38e7('0x27')](_0x34f0d1,function(_0x32c2a9){if(_0x32c2a9['type']!==_0x38e7('0x39')){var _0x5840d0={};_0x5840d0[_0x32c2a9['name']]={'$like':'%'+_0x1ad467[_0x38e7('0x2c')][_0x38e7('0x36')]+'%'};return _0x5840d0;}})});}_0x58cbb3=_[_0x38e7('0x38')]({},_0x58cbb3,_0x1ad467[_0x38e7('0x3a')]);var _0x42e377={'where':_0x58cbb3[_0x38e7('0x37')]};return db['MailTransferReport']['count'](_0x42e377)[_0x38e7('0x24')](function(_0x219955){_0x3d215e[_0x38e7('0x1d')]=_0x219955;if(_0x1ad467[_0x38e7('0x2c')][_0x38e7('0x3b')]){_0x58cbb3[_0x38e7('0x3c')]=[{'all':!![]}];}return db[_0x38e7('0x28')][_0x38e7('0x3d')](_0x58cbb3);})['then'](function(_0x219aec){_0x3d215e[_0x38e7('0x3e')]=_0x219aec;return _0x3d215e;})[_0x38e7('0x24')](respondWithFilteredResult(_0x37bae3,_0x58cbb3))[_0x38e7('0x3f')](handleError(_0x37bae3,null));};exports[_0x38e7('0x40')]=function(_0x44c712,_0x5535f4){var _0x519bd2={'raw':!![],'where':{'id':_0x44c712['params']['id']}},_0x364c1b={};_0x364c1b['model']=_[_0x38e7('0x41')](db[_0x38e7('0x28')][_0x38e7('0x42')]);_0x364c1b[_0x38e7('0x2c')]=_[_0x38e7('0x41')](_0x44c712['query']);_0x364c1b[_0x38e7('0x2d')]=_[_0x38e7('0x2e')](_0x364c1b[_0x38e7('0x2b')],_0x364c1b[_0x38e7('0x2c')]);_0x519bd2[_0x38e7('0x30')]=_[_0x38e7('0x2e')](_0x364c1b[_0x38e7('0x2b')],qs[_0x38e7('0x2f')](_0x44c712[_0x38e7('0x2c')][_0x38e7('0x2f')]));_0x519bd2[_0x38e7('0x30')]=_0x519bd2[_0x38e7('0x30')][_0x38e7('0x43')]?_0x519bd2[_0x38e7('0x30')]:_0x364c1b[_0x38e7('0x2b')];if(_0x44c712[_0x38e7('0x2c')][_0x38e7('0x3b')]){_0x519bd2[_0x38e7('0x3c')]=[{'all':!![]}];}_0x519bd2=_[_0x38e7('0x38')]({},_0x519bd2,_0x44c712['options']);return db[_0x38e7('0x28')][_0x38e7('0x44')](_0x519bd2)[_0x38e7('0x24')](handleEntityNotFound(_0x5535f4,null))[_0x38e7('0x24')](respondWithResult(_0x5535f4,null))['catch'](handleError(_0x5535f4,null));};exports[_0x38e7('0x45')]=function(_0x4f388d,_0x500ccc){return db['MailTransferReport'][_0x38e7('0x45')](_0x4f388d['body'],{})['then'](respondWithResult(_0x500ccc,0xc9))[_0x38e7('0x3f')](handleError(_0x500ccc,null));};exports[_0x38e7('0x23')]=function(_0x3f66da,_0x2a7239){if(_0x3f66da[_0x38e7('0x46')]['id']){delete _0x3f66da[_0x38e7('0x46')]['id'];}return db['MailTransferReport'][_0x38e7('0x44')]({'where':{'id':_0x3f66da[_0x38e7('0x47')]['id']}})['then'](handleEntityNotFound(_0x2a7239,null))[_0x38e7('0x24')](saveUpdates(_0x3f66da[_0x38e7('0x46')],null))[_0x38e7('0x24')](respondWithResult(_0x2a7239,null))['catch'](handleError(_0x2a7239,null));};exports[_0x38e7('0x48')]=function(_0x39b024,_0x545f82){return db[_0x38e7('0x28')]['find']({'where':{'id':_0x39b024['params']['id']}})[_0x38e7('0x24')](handleEntityNotFound(_0x545f82,null))['then'](removeEntity(_0x545f82,null))[_0x38e7('0x3f')](handleError(_0x545f82,null));};exports[_0x38e7('0x49')]=function(_0x25cb98,_0x538cad){return db[_0x38e7('0x28')][_0x38e7('0x49')]()[_0x38e7('0x24')](respondWithResult(_0x538cad,null))[_0x38e7('0x3f')](handleError(_0x538cad,null));};
\ No newline at end of file
+var _0x06cb=['options','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','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','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','name','send','map','MailTransferReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params','length'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x06cb,0x9f));var _0xb06c=function(_0x486844,_0x155ee0){_0x486844=_0x486844-0x0;var _0x25feac=_0x06cb[_0x486844];return _0x25feac;};'use strict';var emlformat=require(_0xb06c('0x0'));var rimraf=require(_0xb06c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb06c('0x2'));var rp=require(_0xb06c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb06c('0x4'));var util=require(_0xb06c('0x5'));var path=require(_0xb06c('0x6'));var sox=require(_0xb06c('0x7'));var csv=require('to-csv');var ejs=require(_0xb06c('0x8'));var fs=require('fs');var fs_extra=require(_0xb06c('0x9'));var _=require('lodash');var squel=require(_0xb06c('0xa'));var crypto=require(_0xb06c('0xb'));var jsforce=require(_0xb06c('0xc'));var deskjs=require(_0xb06c('0xd'));var toCsv=require(_0xb06c('0xe'));var querystring=require(_0xb06c('0xf'));var Papa=require(_0xb06c('0x10'));var Redis=require(_0xb06c('0x11'));var authService=require(_0xb06c('0x12'));var qs=require(_0xb06c('0x13'));var as=require(_0xb06c('0x14'));var hardwareService=require(_0xb06c('0x15'));var logger=require(_0xb06c('0x16'))(_0xb06c('0x17'));var utils=require(_0xb06c('0x18'));var config=require(_0xb06c('0x19'));var licenseUtil=require(_0xb06c('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3800cd,_0x1ffea1){_0x1ffea1=_0x1ffea1||0xcc;return function(_0x2515a1){if(_0x2515a1){return _0x3800cd[_0xb06c('0x1b')](_0x1ffea1);}return _0x3800cd['status'](_0x1ffea1)[_0xb06c('0x1c')]();};}function respondWithResult(_0x3eafce,_0x625cd8){_0x625cd8=_0x625cd8||0xc8;return function(_0x2b6a8c){if(_0x2b6a8c){return _0x3eafce[_0xb06c('0x1d')](_0x625cd8)[_0xb06c('0x1e')](_0x2b6a8c);}};}function respondWithFilteredResult(_0xe74e68,_0x2869f8){return function(_0x33a069){if(_0x33a069){var _0x13d985=typeof _0x2869f8[_0xb06c('0x1f')]===_0xb06c('0x20')&&typeof _0x2869f8['limit']===_0xb06c('0x20');var _0x3dac3b=_0x33a069['count'];var _0x408b54=_0x13d985?0x0:_0x2869f8['offset'];var _0x374734=_0x13d985?_0x33a069[_0xb06c('0x21')]:_0x2869f8['offset']+_0x2869f8[_0xb06c('0x22')];var _0x1bda03;if(_0x374734>=_0x3dac3b){_0x374734=_0x3dac3b;_0x1bda03=0xc8;}else{_0x1bda03=0xce;}_0xe74e68['status'](_0x1bda03);return _0xe74e68[_0xb06c('0x23')](_0xb06c('0x24'),_0x408b54+'-'+_0x374734+'/'+_0x3dac3b)[_0xb06c('0x1e')](_0x33a069);}return null;};}function patchUpdates(_0x1fa0f6){return function(_0xed138){try{jsonpatch[_0xb06c('0x25')](_0xed138,_0x1fa0f6,!![]);}catch(_0x57ce52){return BPromise[_0xb06c('0x26')](_0x57ce52);}return _0xed138[_0xb06c('0x27')]();};}function saveUpdates(_0x574fca,_0x5dbd8b){return function(_0x2e8bf3){if(_0x2e8bf3){return _0x2e8bf3['update'](_0x574fca)[_0xb06c('0x28')](function(_0x4de134){return _0x4de134;});}return null;};}function removeEntity(_0x5f24f2,_0x1a2bd7){return function(_0x44a17e){if(_0x44a17e){return _0x44a17e[_0xb06c('0x29')]()[_0xb06c('0x28')](function(){_0x5f24f2[_0xb06c('0x1d')](0xcc)[_0xb06c('0x1c')]();});}};}function handleEntityNotFound(_0x18079a,_0x59c8f3){return function(_0x595f48){if(!_0x595f48){_0x18079a['sendStatus'](0x194);}return _0x595f48;};}function handleError(_0x404129,_0x16b71d){_0x16b71d=_0x16b71d||0x1f4;return function(_0x5da0d7){logger[_0xb06c('0x2a')](_0x5da0d7['stack']);if(_0x5da0d7[_0xb06c('0x2b')]){delete _0x5da0d7[_0xb06c('0x2b')];}_0x404129[_0xb06c('0x1d')](_0x16b71d)[_0xb06c('0x2c')](_0x5da0d7);};}exports['index']=function(_0x3b4611,_0x3c9607){var _0x2eeed5={},_0x126e24={},_0x353ea8={'count':0x0,'rows':[]};var _0xad6595=_[_0xb06c('0x2d')](db[_0xb06c('0x2e')][_0xb06c('0x2f')],function(_0x89dbd9){return{'name':_0x89dbd9[_0xb06c('0x30')],'type':_0x89dbd9[_0xb06c('0x31')]['key']};});_0x126e24[_0xb06c('0x32')]=_[_0xb06c('0x2d')](_0xad6595,_0xb06c('0x2b'));_0x126e24[_0xb06c('0x33')]=_[_0xb06c('0x34')](_0x3b4611[_0xb06c('0x33')]);_0x126e24['filters']=_[_0xb06c('0x35')](_0x126e24[_0xb06c('0x32')],_0x126e24[_0xb06c('0x33')]);_0x2eeed5[_0xb06c('0x36')]=_[_0xb06c('0x35')](_0x126e24[_0xb06c('0x32')],qs[_0xb06c('0x37')](_0x3b4611[_0xb06c('0x33')][_0xb06c('0x37')]));_0x2eeed5[_0xb06c('0x36')]=_0x2eeed5['attributes']['length']?_0x2eeed5['attributes']:_0x126e24[_0xb06c('0x32')];if(!_0x3b4611[_0xb06c('0x33')][_0xb06c('0x38')]('nolimit')){_0x2eeed5[_0xb06c('0x22')]=qs[_0xb06c('0x22')](_0x3b4611['query'][_0xb06c('0x22')]);_0x2eeed5['offset']=qs[_0xb06c('0x1f')](_0x3b4611[_0xb06c('0x33')][_0xb06c('0x1f')]);}_0x2eeed5[_0xb06c('0x39')]=qs[_0xb06c('0x3a')](_0x3b4611[_0xb06c('0x33')][_0xb06c('0x3a')]);_0x2eeed5[_0xb06c('0x3b')]=qs[_0xb06c('0x3c')](_[_0xb06c('0x3d')](_0x3b4611['query'],_0x126e24[_0xb06c('0x3c')]),_0xad6595);if(_0x3b4611['query'][_0xb06c('0x3e')]){_0x2eeed5[_0xb06c('0x3b')]=_[_0xb06c('0x3f')](_0x2eeed5['where'],{'$or':_[_0xb06c('0x2d')](_0xad6595,function(_0x202c25){if(_0x202c25[_0xb06c('0x31')]!=='VIRTUAL'){var _0x5427a2={};_0x5427a2[_0x202c25[_0xb06c('0x2b')]]={'$like':'%'+_0x3b4611[_0xb06c('0x33')]['filter']+'%'};return _0x5427a2;}})});}_0x2eeed5=_[_0xb06c('0x3f')]({},_0x2eeed5,_0x3b4611['options']);var _0x4db9e4={'where':_0x2eeed5['where']};return db[_0xb06c('0x2e')][_0xb06c('0x21')](_0x4db9e4)[_0xb06c('0x28')](function(_0x164f47){_0x353ea8['count']=_0x164f47;if(_0x3b4611[_0xb06c('0x33')][_0xb06c('0x40')]){_0x2eeed5[_0xb06c('0x41')]=[{'all':!![]}];}return db[_0xb06c('0x2e')][_0xb06c('0x42')](_0x2eeed5);})[_0xb06c('0x28')](function(_0x4d9949){_0x353ea8[_0xb06c('0x43')]=_0x4d9949;return _0x353ea8;})[_0xb06c('0x28')](respondWithFilteredResult(_0x3c9607,_0x2eeed5))[_0xb06c('0x44')](handleError(_0x3c9607,null));};exports[_0xb06c('0x45')]=function(_0x4bea73,_0x126a5f){var _0x1feb87={'raw':!![],'where':{'id':_0x4bea73[_0xb06c('0x46')]['id']}},_0x156800={};_0x156800['model']=_['keys'](db[_0xb06c('0x2e')][_0xb06c('0x2f')]);_0x156800[_0xb06c('0x33')]=_[_0xb06c('0x34')](_0x4bea73[_0xb06c('0x33')]);_0x156800[_0xb06c('0x3c')]=_[_0xb06c('0x35')](_0x156800['model'],_0x156800['query']);_0x1feb87[_0xb06c('0x36')]=_['intersection'](_0x156800['model'],qs[_0xb06c('0x37')](_0x4bea73[_0xb06c('0x33')][_0xb06c('0x37')]));_0x1feb87[_0xb06c('0x36')]=_0x1feb87[_0xb06c('0x36')][_0xb06c('0x47')]?_0x1feb87['attributes']:_0x156800[_0xb06c('0x32')];if(_0x4bea73[_0xb06c('0x33')]['includeAll']){_0x1feb87[_0xb06c('0x41')]=[{'all':!![]}];}_0x1feb87=_[_0xb06c('0x3f')]({},_0x1feb87,_0x4bea73[_0xb06c('0x48')]);return db['MailTransferReport'][_0xb06c('0x49')](_0x1feb87)[_0xb06c('0x28')](handleEntityNotFound(_0x126a5f,null))[_0xb06c('0x28')](respondWithResult(_0x126a5f,null))['catch'](handleError(_0x126a5f,null));};exports[_0xb06c('0x4a')]=function(_0x307b6c,_0x50600a){return db[_0xb06c('0x2e')][_0xb06c('0x4a')](_0x307b6c[_0xb06c('0x4b')],{})[_0xb06c('0x28')](respondWithResult(_0x50600a,0xc9))['catch'](handleError(_0x50600a,null));};exports['update']=function(_0x51aef2,_0x5d744e){if(_0x51aef2[_0xb06c('0x4b')]['id']){delete _0x51aef2[_0xb06c('0x4b')]['id'];}return db[_0xb06c('0x2e')][_0xb06c('0x49')]({'where':{'id':_0x51aef2[_0xb06c('0x46')]['id']}})[_0xb06c('0x28')](handleEntityNotFound(_0x5d744e,null))[_0xb06c('0x28')](saveUpdates(_0x51aef2['body'],null))[_0xb06c('0x28')](respondWithResult(_0x5d744e,null))[_0xb06c('0x44')](handleError(_0x5d744e,null));};exports[_0xb06c('0x29')]=function(_0x572878,_0x3aff4e){return db[_0xb06c('0x2e')][_0xb06c('0x49')]({'where':{'id':_0x572878['params']['id']}})['then'](handleEntityNotFound(_0x3aff4e,null))['then'](removeEntity(_0x3aff4e,null))[_0xb06c('0x44')](handleError(_0x3aff4e,null));};exports[_0xb06c('0x4c')]=function(_0x5dd149,_0x587936){return db[_0xb06c('0x2e')][_0xb06c('0x4c')]()[_0xb06c('0x28')](respondWithResult(_0x587936,null))['catch'](handleError(_0x587936,null));};
\ No newline at end of file
index 56d139d..b32acdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3756=['path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x23b999,_0x434ecc){var _0x5ea2dc=function(_0x391e36){while(--_0x391e36){_0x23b999['push'](_0x23b999['shift']());}};_0x5ea2dc(++_0x434ecc);}(_0x3756,0x116));var _0x6375=function(_0xf8bb68,_0x369b1a){_0xf8bb68=_0xf8bb68-0x0;var _0x179af6=_0x3756[_0xf8bb68];return _0x179af6;};'use strict';var _=require(_0x6375('0x0'));var util=require(_0x6375('0x1'));var logger=require(_0x6375('0x2'))(_0x6375('0x3'));var moment=require(_0x6375('0x4'));var BPromise=require(_0x6375('0x5'));var rp=require(_0x6375('0x6'));var fs=require('fs');var path=require(_0x6375('0x7'));var rimraf=require(_0x6375('0x8'));var config=require(_0x6375('0x9'));var attributes=require(_0x6375('0xa'));module[_0x6375('0xb')]=function(_0x2cf0f9,_0x1dae97){return _0x2cf0f9[_0x6375('0xc')](_0x6375('0xd'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x6375('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x61a1=['uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer'];(function(_0x3c07d7,_0x5356a0){var _0x174f71=function(_0x4f4811){while(--_0x4f4811){_0x3c07d7['push'](_0x3c07d7['shift']());}};_0x174f71(++_0x5356a0);}(_0x61a1,0x127));var _0x161a=function(_0x1e1965,_0x55785c){_0x1e1965=_0x1e1965-0x0;var _0x1a2e96=_0x61a1[_0x1e1965];return _0x1a2e96;};'use strict';var _=require(_0x161a('0x0'));var util=require(_0x161a('0x1'));var logger=require(_0x161a('0x2'))(_0x161a('0x3'));var moment=require(_0x161a('0x4'));var BPromise=require('bluebird');var rp=require(_0x161a('0x5'));var fs=require('fs');var path=require(_0x161a('0x6'));var rimraf=require('rimraf');var config=require(_0x161a('0x7'));var attributes=require(_0x161a('0x8'));module[_0x161a('0x9')]=function(_0x1442cf,_0x1bb0ac){return _0x1442cf[_0x161a('0xa')](_0x161a('0xb'),attributes,{'tableName':_0x161a('0xc'),'paranoid':![],'indexes':[{'name':_0x161a('0xd'),'fields':[_0x161a('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 6253938..f85a70d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb27f=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x15bd3e,_0x172ef6){var _0x3d219f=function(_0xfe1e1){while(--_0xfe1e1){_0x15bd3e['push'](_0x15bd3e['shift']());}};_0x3d219f(++_0x172ef6);}(_0xb27f,0xdd));var _0xfb27=function(_0x364043,_0x1bc227){_0x364043=_0x364043-0x0;var _0x1c5b3c=_0xb27f[_0x364043];return _0x1c5b3c;};'use strict';var _=require(_0xfb27('0x0'));var util=require(_0xfb27('0x1'));var moment=require(_0xfb27('0x2'));var BPromise=require(_0xfb27('0x3'));var rs=require(_0xfb27('0x4'));var fs=require('fs');var Redis=require(_0xfb27('0x5'));var db=require(_0xfb27('0x6'))['db'];var utils=require(_0xfb27('0x7'));var logger=require(_0xfb27('0x8'))('rpc');var config=require(_0xfb27('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xfb27('0xa')][_0xfb27('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c41fc,_0x35ffe0,_0x26ed1e){return new BPromise(function(_0x44381a,_0x29b121){return client[_0xfb27('0xc')](_0x1c41fc,_0x26ed1e)['then'](function(_0x36b7a1){logger[_0xfb27('0xd')](_0xfb27('0xe'),_0x35ffe0,_0xfb27('0xf'));logger[_0xfb27('0x10')](_0xfb27('0x11'),_0x35ffe0,_0xfb27('0xf'),JSON[_0xfb27('0x12')](_0x36b7a1));if(_0x36b7a1[_0xfb27('0x13')]){if(_0x36b7a1[_0xfb27('0x13')][_0xfb27('0x14')]===0x1f4){logger['error'](_0xfb27('0xe'),_0x35ffe0,_0x36b7a1[_0xfb27('0x13')][_0xfb27('0x15')]);return _0x29b121(_0x36b7a1[_0xfb27('0x13')]['message']);}logger[_0xfb27('0x13')]('MailTransferReport,\x20%s,\x20%s',_0x35ffe0,_0x36b7a1[_0xfb27('0x13')]['message']);return _0x44381a(_0x36b7a1[_0xfb27('0x13')]['message']);}else{logger[_0xfb27('0xd')]('MailTransferReport,\x20%s,\x20%s',_0x35ffe0,_0xfb27('0xf'));_0x44381a(_0x36b7a1[_0xfb27('0x16')][_0xfb27('0x15')]);}})[_0xfb27('0x17')](function(_0xedce55){logger['error']('MailTransferReport,\x20%s,\x20%s',_0x35ffe0,_0xedce55);_0x29b121(_0xedce55);});});}
\ No newline at end of file
+var _0xf943=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','MailTransferReport,\x20%s,\x20%s','request\x20sent','result'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0xf943,0x115));var _0x3f94=function(_0x3cd069,_0x355f63){_0x3cd069=_0x3cd069-0x0;var _0x1d44e4=_0xf943[_0x3cd069];return _0x1d44e4;};'use strict';var _=require(_0x3f94('0x0'));var util=require(_0x3f94('0x1'));var moment=require('moment');var BPromise=require(_0x3f94('0x2'));var rs=require(_0x3f94('0x3'));var fs=require('fs');var Redis=require(_0x3f94('0x4'));var db=require(_0x3f94('0x5'))['db'];var utils=require(_0x3f94('0x6'));var logger=require(_0x3f94('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3f94('0x8'));var client=jayson[_0x3f94('0x9')][_0x3f94('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4cc496,_0xe763e4,_0x475b9a){return new BPromise(function(_0x537b1b,_0x5ee345){return client[_0x3f94('0xb')](_0x4cc496,_0x475b9a)[_0x3f94('0xc')](function(_0x4a1dc8){logger[_0x3f94('0xd')]('MailTransferReport,\x20%s,\x20%s',_0xe763e4,'request\x20sent');logger[_0x3f94('0xe')](_0x3f94('0xf'),_0xe763e4,'request\x20sent',JSON['stringify'](_0x4a1dc8));if(_0x4a1dc8[_0x3f94('0x10')]){if(_0x4a1dc8[_0x3f94('0x10')][_0x3f94('0x11')]===0x1f4){logger['error']('MailTransferReport,\x20%s,\x20%s',_0xe763e4,_0x4a1dc8[_0x3f94('0x10')][_0x3f94('0x12')]);return _0x5ee345(_0x4a1dc8[_0x3f94('0x10')][_0x3f94('0x12')]);}logger[_0x3f94('0x10')](_0x3f94('0x13'),_0xe763e4,_0x4a1dc8['error']['message']);return _0x537b1b(_0x4a1dc8['error'][_0x3f94('0x12')]);}else{logger[_0x3f94('0xd')](_0x3f94('0x13'),_0xe763e4,_0x3f94('0x14'));_0x537b1b(_0x4a1dc8[_0x3f94('0x15')][_0x3f94('0x12')]);}})[_0x3f94('0x16')](function(_0x25db6e){logger[_0x3f94('0x10')](_0x3f94('0x13'),_0xe763e4,_0x25db6e);_0x5ee345(_0x25db6e);});});}
\ No newline at end of file
index e69e372..259e059 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d15=['../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','index','/describe','describe','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x1d15,0x1dd));var _0x51d1=function(_0x426167,_0x265f09){_0x426167=_0x426167-0x0;var _0x735124=_0x1d15[_0x426167];return _0x735124;};'use strict';var multer=require(_0x51d1('0x0'));var util=require(_0x51d1('0x1'));var path=require(_0x51d1('0x2'));var timeout=require('connect-timeout');var express=require(_0x51d1('0x3'));var router=express[_0x51d1('0x4')]();var fs_extra=require(_0x51d1('0x5'));var auth=require(_0x51d1('0x6'));var interaction=require(_0x51d1('0x7'));var config=require(_0x51d1('0x8'));var controller=require(_0x51d1('0x9'));router[_0x51d1('0xa')]('/',auth['isAuthenticated'](),controller[_0x51d1('0xb')]);router[_0x51d1('0xa')](_0x51d1('0xc'),auth['isAuthenticated'](),controller[_0x51d1('0xd')]);router[_0x51d1('0xa')](_0x51d1('0xe'),auth[_0x51d1('0xf')](),controller[_0x51d1('0x10')]);router[_0x51d1('0x11')]('/',auth[_0x51d1('0xf')](),controller[_0x51d1('0x12')]);router[_0x51d1('0x13')](_0x51d1('0xe'),auth[_0x51d1('0xf')](),controller[_0x51d1('0x14')]);router[_0x51d1('0x15')](_0x51d1('0xe'),auth[_0x51d1('0xf')](),controller[_0x51d1('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x769a=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','show','post','/:id','exports','multer','util','path','express','Router'];(function(_0x4a7fc8,_0x554109){var _0x1dab17=function(_0x1bfffa){while(--_0x1bfffa){_0x4a7fc8['push'](_0x4a7fc8['shift']());}};_0x1dab17(++_0x554109);}(_0x769a,0x118));var _0xa769=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x769a[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0xa769('0x0'));var util=require(_0xa769('0x1'));var path=require(_0xa769('0x2'));var timeout=require('connect-timeout');var express=require(_0xa769('0x3'));var router=express[_0xa769('0x4')]();var fs_extra=require(_0xa769('0x5'));var auth=require(_0xa769('0x6'));var interaction=require(_0xa769('0x7'));var config=require(_0xa769('0x8'));var controller=require(_0xa769('0x9'));router[_0xa769('0xa')]('/',auth[_0xa769('0xb')](),controller[_0xa769('0xc')]);router[_0xa769('0xa')](_0xa769('0xd'),auth[_0xa769('0xb')](),controller[_0xa769('0xe')]);router[_0xa769('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xa769('0xf')]);router[_0xa769('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0xa769('0xb')](),controller['update']);router['delete'](_0xa769('0x11'),auth[_0xa769('0xb')](),controller['destroy']);module[_0xa769('0x12')]=router;
\ No newline at end of file
index acfe644..7174831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1322=['duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[dial\x20string]','talk:[queue]','sequelize','exports','STRING','DEFAULT\x20PAUSE','INTEGER','DATE','enterAt','diff','seconds','setDataValue','exitAt'];(function(_0x305cdc,_0x5c2820){var _0x321002=function(_0x6b098d){while(--_0x6b098d){_0x305cdc['push'](_0x305cdc['shift']());}};_0x321002(++_0x5c2820);}(_0x1322,0x65));var _0x2132=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x1322[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require(_0x2132('0x0'));var moment=require('moment');module[_0x2132('0x1')]={'channel':{'type':Sequelize[_0x2132('0x2')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x2132('0x2')]},'type':{'type':Sequelize[_0x2132('0x2')],'defaultValue':_0x2132('0x3'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0x2132('0x4')]},'enterAt':{'type':Sequelize[_0x2132('0x5')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x5ca79a){var _0x54564b=moment(_0x5ca79a);var _0x4772f1=moment(this['getDataValue'](_0x2132('0x6')));var _0xc1b422=_0x54564b[_0x2132('0x7')](_0x4772f1,_0x2132('0x8'));this[_0x2132('0x9')](_0x2132('0xa'),_0x5ca79a);this['setDataValue'](_0x2132('0xb'),_0xc1b422>=0x0?_0xc1b422:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x2132('0xc')},'data2':{'type':Sequelize[_0x2132('0x2')],'comment':_0x2132('0xd')},'data3':{'type':Sequelize['STRING'],'comment':'talk:[destination]'},'data4':{'type':Sequelize['STRING'],'comment':_0x2132('0xe')},'data5':{'type':Sequelize[_0x2132('0x2')],'comment':_0x2132('0xf')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0x2132('0x4')]},'uniqueid':{'type':Sequelize[_0x2132('0x2')]}};
\ No newline at end of file
+var _0xd41c=['exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[queue]','sequelize','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','seconds','setDataValue'];(function(_0x392696,_0x5b95ec){var _0x699b57=function(_0x20aaa4){while(--_0x20aaa4){_0x392696['push'](_0x392696['shift']());}};_0x699b57(++_0x5b95ec);}(_0xd41c,0x138));var _0xcd41=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd41c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xcd41('0x0'));var moment=require('moment');module[_0xcd41('0x1')]={'channel':{'type':Sequelize[_0xcd41('0x2')]},'membername':{'type':Sequelize[_0xcd41('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xcd41('0x2')],'defaultValue':_0xcd41('0x3'),'comment':_0xcd41('0x4')},'duration':{'type':Sequelize[_0xcd41('0x5')]},'enterAt':{'type':Sequelize[_0xcd41('0x6')]},'exitAt':{'type':Sequelize[_0xcd41('0x6')],'set':function(_0x2de874){var _0x2bff2=moment(_0x2de874);var _0x14033b=moment(this[_0xcd41('0x7')](_0xcd41('0x8')));var _0x137964=_0x2bff2['diff'](_0x14033b,_0xcd41('0x9'));this[_0xcd41('0xa')](_0xcd41('0xb'),_0x2de874);this[_0xcd41('0xa')](_0xcd41('0xc'),_0x137964>=0x0?_0x137964:null);}},'data1':{'type':Sequelize[_0xcd41('0x2')],'comment':_0xcd41('0xd')},'data2':{'type':Sequelize[_0xcd41('0x2')],'comment':_0xcd41('0xe')},'data3':{'type':Sequelize[_0xcd41('0x2')],'comment':_0xcd41('0xf')},'data4':{'type':Sequelize[_0xcd41('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':_0xcd41('0x10')},'role':{'type':Sequelize[_0xcd41('0x2')]},'internal':{'type':Sequelize[_0xcd41('0x5')]},'uniqueid':{'type':Sequelize[_0xcd41('0x2')]}};
\ No newline at end of file
index 478a39b..41cacc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['catch','params','find','create','body','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','map','MemberReport','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows'];(function(_0x21d599,_0x97e6cd){var _0x57301f=function(_0x3ca042){while(--_0x3ca042){_0x21d599['push'](_0x21d599['shift']());}};_0x57301f(++_0x97e6cd);}(_0x9c44,0x178));var _0x49c4=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x9c44[_0x16b9ed];return _0x66b1f8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={},_0x46e04d={},_0x4f28a2={'count':0x0,'rows':[]};var _0x6329b3=_[_0x49c4('0x29')](db[_0x49c4('0x2a')][_0x49c4('0x2b')],function(_0x17b50f){return{'name':_0x17b50f[_0x49c4('0x2c')],'type':_0x17b50f[_0x49c4('0x2d')]['key']};});_0x46e04d['model']=_['map'](_0x6329b3,_0x49c4('0x26'));_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d[_0x49c4('0x30')]=_['intersection'](_0x46e04d[_0x49c4('0x31')],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x46e04d['model'],qs['fields'](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x2b2793[_0x49c4('0x32')]=_0x2b2793[_0x49c4('0x32')][_0x49c4('0x35')]?_0x2b2793['attributes']:_0x46e04d[_0x49c4('0x31')];if(!_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x36')]('nolimit')){_0x2b2793['limit']=qs[_0x49c4('0x1b')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x1b')]);_0x2b2793[_0x49c4('0x19')]=qs[_0x49c4('0x19')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x19')]);}_0x2b2793[_0x49c4('0x37')]=qs[_0x49c4('0x38')](_0x5987ae['query'][_0x49c4('0x38')]);_0x2b2793['where']=qs[_0x49c4('0x30')](_[_0x49c4('0x39')](_0x5987ae[_0x49c4('0x2e')],_0x46e04d[_0x49c4('0x30')]),_0x6329b3);if(_0x5987ae['query'][_0x49c4('0x3a')]){_0x2b2793[_0x49c4('0x3b')]=_[_0x49c4('0x3c')](_0x2b2793['where'],{'$or':_[_0x49c4('0x29')](_0x6329b3,function(_0x21d8c7){if(_0x21d8c7[_0x49c4('0x2d')]!==_0x49c4('0x3d')){var _0x1ba7a0={};_0x1ba7a0[_0x21d8c7[_0x49c4('0x26')]]={'$like':'%'+_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x3a')]+'%'};return _0x1ba7a0;}})});}_0x2b2793=_[_0x49c4('0x3c')]({},_0x2b2793,_0x5987ae[_0x49c4('0x3e')]);var _0x1e506a={'where':_0x2b2793['where']};return db[_0x49c4('0x2a')][_0x49c4('0x1c')](_0x1e506a)[_0x49c4('0x3f')](function(_0x23aa32){_0x4f28a2[_0x49c4('0x1c')]=_0x23aa32;if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x2b2793[_0x49c4('0x41')]=[{'all':!![]}];}return db[_0x49c4('0x2a')][_0x49c4('0x42')](_0x2b2793);})[_0x49c4('0x3f')](function(_0xa3d59e){_0x4f28a2[_0x49c4('0x43')]=_0xa3d59e;return _0x4f28a2;})['then'](respondWithFilteredResult(_0x889909,_0x2b2793))[_0x49c4('0x44')](handleError(_0x889909,null));};exports['show']=function(_0x104efb,_0x4915bc){var _0x28d4fb={'raw':!![],'where':{'id':_0x104efb[_0x49c4('0x45')]['id']}},_0x1480da={};_0x1480da[_0x49c4('0x31')]=_['keys'](db['MemberReport'][_0x49c4('0x2b')]);_0x1480da[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x104efb[_0x49c4('0x2e')]);_0x1480da['filters']=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],_0x1480da[_0x49c4('0x2e')]);_0x28d4fb[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],qs[_0x49c4('0x34')](_0x104efb[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x28d4fb['attributes']=_0x28d4fb[_0x49c4('0x32')]['length']?_0x28d4fb[_0x49c4('0x32')]:_0x1480da[_0x49c4('0x31')];if(_0x104efb[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x28d4fb[_0x49c4('0x41')]=[{'all':!![]}];}_0x28d4fb=_['merge']({},_0x28d4fb,_0x104efb[_0x49c4('0x3e')]);return db[_0x49c4('0x2a')][_0x49c4('0x46')](_0x28d4fb)[_0x49c4('0x3f')](handleEntityNotFound(_0x4915bc,null))[_0x49c4('0x3f')](respondWithResult(_0x4915bc,null))[_0x49c4('0x44')](handleError(_0x4915bc,null));};exports[_0x49c4('0x47')]=function(_0x4d89e0,_0x3bac1b){return db['MemberReport'][_0x49c4('0x47')](_0x4d89e0[_0x49c4('0x48')],{})[_0x49c4('0x3f')](respondWithResult(_0x3bac1b,0xc9))[_0x49c4('0x44')](handleError(_0x3bac1b,null));};exports[_0x49c4('0x22')]=function(_0x30bea5,_0x2c6be1){if(_0x30bea5['body']['id']){delete _0x30bea5[_0x49c4('0x48')]['id'];}return db[_0x49c4('0x2a')]['find']({'where':{'id':_0x30bea5[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x2c6be1,null))[_0x49c4('0x3f')](saveUpdates(_0x30bea5[_0x49c4('0x48')],null))['then'](respondWithResult(_0x2c6be1,null))['catch'](handleError(_0x2c6be1,null));};exports[_0x49c4('0x23')]=function(_0x4e8221,_0x4597c3){return db[_0x49c4('0x2a')][_0x49c4('0x46')]({'where':{'id':_0x4e8221[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x4597c3,null))[_0x49c4('0x3f')](removeEntity(_0x4597c3,null))[_0x49c4('0x44')](handleError(_0x4597c3,null));};exports['describe']=function(_0x1f26c2,_0x1550ce){return db[_0x49c4('0x2a')][_0x49c4('0x49')]()[_0x49c4('0x3f')](respondWithResult(_0x1550ce,null))[_0x49c4('0x44')](handleError(_0x1550ce,null));};
\ No newline at end of file
+var _0x55ca=['merge','filter','includeAll','include','findAll','rawAttributes','options','create','body','find','params','catch','destroy','describe','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','status','json','offset','undefined','limit','count','reject','update','then','end','sendStatus','error','stack','name','send','index','map','MemberReport','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x55ca,0x126));var _0xa55c=function(_0x5c78d9,_0x2736c7){_0x5c78d9=_0x5c78d9-0x0;var _0x69ae1f=_0x55ca[_0x5c78d9];return _0x69ae1f;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){_0x1fc828['status'](0xcc)[_0xa55c('0x21')]();});}};}function handleEntityNotFound(_0x190757,_0x3f64de){return function(_0xf0e574){if(!_0xf0e574){_0x190757[_0xa55c('0x22')](0x194);}return _0xf0e574;};}function handleError(_0x170ba4,_0x1da633){_0x1da633=_0x1da633||0x1f4;return function(_0x11e7f7){logger[_0xa55c('0x23')](_0x11e7f7[_0xa55c('0x24')]);if(_0x11e7f7[_0xa55c('0x25')]){delete _0x11e7f7['name'];}_0x170ba4[_0xa55c('0x18')](_0x1da633)[_0xa55c('0x26')](_0x11e7f7);};}exports[_0xa55c('0x27')]=function(_0x906caa,_0x5d940d){var _0x1377b0={},_0x22f6b6={},_0x1b8388={'count':0x0,'rows':[]};var _0x201941=_[_0xa55c('0x28')](db[_0xa55c('0x29')]['rawAttributes'],function(_0x23e698){return{'name':_0x23e698['fieldName'],'type':_0x23e698[_0xa55c('0x2a')][_0xa55c('0x2b')]};});_0x22f6b6[_0xa55c('0x2c')]=_[_0xa55c('0x28')](_0x201941,'name');_0x22f6b6[_0xa55c('0x2d')]=_[_0xa55c('0x2e')](_0x906caa[_0xa55c('0x2d')]);_0x22f6b6[_0xa55c('0x2f')]=_[_0xa55c('0x30')](_0x22f6b6[_0xa55c('0x2c')],_0x22f6b6[_0xa55c('0x2d')]);_0x1377b0[_0xa55c('0x31')]=_[_0xa55c('0x30')](_0x22f6b6[_0xa55c('0x2c')],qs[_0xa55c('0x32')](_0x906caa['query']['fields']));_0x1377b0[_0xa55c('0x31')]=_0x1377b0[_0xa55c('0x31')]['length']?_0x1377b0[_0xa55c('0x31')]:_0x22f6b6[_0xa55c('0x2c')];if(!_0x906caa[_0xa55c('0x2d')][_0xa55c('0x33')](_0xa55c('0x34'))){_0x1377b0[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x906caa[_0xa55c('0x2d')][_0xa55c('0x1c')]);_0x1377b0['offset']=qs['offset'](_0x906caa['query'][_0xa55c('0x1a')]);}_0x1377b0[_0xa55c('0x35')]=qs[_0xa55c('0x36')](_0x906caa['query'][_0xa55c('0x36')]);_0x1377b0['where']=qs[_0xa55c('0x2f')](_['pick'](_0x906caa[_0xa55c('0x2d')],_0x22f6b6[_0xa55c('0x2f')]),_0x201941);if(_0x906caa[_0xa55c('0x2d')]['filter']){_0x1377b0[_0xa55c('0x37')]=_[_0xa55c('0x38')](_0x1377b0['where'],{'$or':_[_0xa55c('0x28')](_0x201941,function(_0x194e78){if(_0x194e78['type']!=='VIRTUAL'){var _0x235f6b={};_0x235f6b[_0x194e78['name']]={'$like':'%'+_0x906caa[_0xa55c('0x2d')][_0xa55c('0x39')]+'%'};return _0x235f6b;}})});}_0x1377b0=_['merge']({},_0x1377b0,_0x906caa['options']);var _0x5e50b6={'where':_0x1377b0['where']};return db[_0xa55c('0x29')][_0xa55c('0x1d')](_0x5e50b6)[_0xa55c('0x20')](function(_0x99c4f8){_0x1b8388[_0xa55c('0x1d')]=_0x99c4f8;if(_0x906caa['query'][_0xa55c('0x3a')]){_0x1377b0[_0xa55c('0x3b')]=[{'all':!![]}];}return db[_0xa55c('0x29')][_0xa55c('0x3c')](_0x1377b0);})[_0xa55c('0x20')](function(_0x23cef5){_0x1b8388['rows']=_0x23cef5;return _0x1b8388;})[_0xa55c('0x20')](respondWithFilteredResult(_0x5d940d,_0x1377b0))['catch'](handleError(_0x5d940d,null));};exports['show']=function(_0x404e7f,_0x1f63d8){var _0x496920={'raw':!![],'where':{'id':_0x404e7f['params']['id']}},_0x2bd98b={};_0x2bd98b['model']=_[_0xa55c('0x2e')](db[_0xa55c('0x29')][_0xa55c('0x3d')]);_0x2bd98b['query']=_[_0xa55c('0x2e')](_0x404e7f[_0xa55c('0x2d')]);_0x2bd98b['filters']=_[_0xa55c('0x30')](_0x2bd98b['model'],_0x2bd98b[_0xa55c('0x2d')]);_0x496920[_0xa55c('0x31')]=_['intersection'](_0x2bd98b[_0xa55c('0x2c')],qs[_0xa55c('0x32')](_0x404e7f['query'][_0xa55c('0x32')]));_0x496920[_0xa55c('0x31')]=_0x496920[_0xa55c('0x31')]['length']?_0x496920[_0xa55c('0x31')]:_0x2bd98b['model'];if(_0x404e7f[_0xa55c('0x2d')][_0xa55c('0x3a')]){_0x496920[_0xa55c('0x3b')]=[{'all':!![]}];}_0x496920=_['merge']({},_0x496920,_0x404e7f[_0xa55c('0x3e')]);return db[_0xa55c('0x29')]['find'](_0x496920)[_0xa55c('0x20')](handleEntityNotFound(_0x1f63d8,null))[_0xa55c('0x20')](respondWithResult(_0x1f63d8,null))['catch'](handleError(_0x1f63d8,null));};exports[_0xa55c('0x3f')]=function(_0xd3fe78,_0x52f9a7){return db[_0xa55c('0x29')][_0xa55c('0x3f')](_0xd3fe78[_0xa55c('0x40')],{})[_0xa55c('0x20')](respondWithResult(_0x52f9a7,0xc9))['catch'](handleError(_0x52f9a7,null));};exports[_0xa55c('0x1f')]=function(_0x58a7ea,_0x2157d6){if(_0x58a7ea[_0xa55c('0x40')]['id']){delete _0x58a7ea[_0xa55c('0x40')]['id'];}return db['MemberReport'][_0xa55c('0x41')]({'where':{'id':_0x58a7ea[_0xa55c('0x42')]['id']}})['then'](handleEntityNotFound(_0x2157d6,null))[_0xa55c('0x20')](saveUpdates(_0x58a7ea[_0xa55c('0x40')],null))[_0xa55c('0x20')](respondWithResult(_0x2157d6,null))[_0xa55c('0x43')](handleError(_0x2157d6,null));};exports[_0xa55c('0x44')]=function(_0x1c84d9,_0x1e1293){return db[_0xa55c('0x29')][_0xa55c('0x41')]({'where':{'id':_0x1c84d9[_0xa55c('0x42')]['id']}})['then'](handleEntityNotFound(_0x1e1293,null))[_0xa55c('0x20')](removeEntity(_0x1e1293,null))[_0xa55c('0x43')](handleError(_0x1e1293,null));};exports[_0xa55c('0x45')]=function(_0x4f73b6,_0x4c3095){return db[_0xa55c('0x29')]['describe']()[_0xa55c('0x20')](respondWithResult(_0x4c3095,null))['catch'](handleError(_0x4c3095,null));};
\ No newline at end of file
index d953c36..44c4f94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5ea=['path','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','report_member','membername','interface','util','moment','bluebird','request-promise'];(function(_0x561975,_0x1d64fc){var _0x15b7f5=function(_0x43bfc1){while(--_0x43bfc1){_0x561975['push'](_0x561975['shift']());}};_0x15b7f5(++_0x1d64fc);}(_0xf5ea,0xc0));var _0xaf5e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xf5ea[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var util=require(_0xaf5e('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xaf5e('0x1'));var BPromise=require(_0xaf5e('0x2'));var rp=require(_0xaf5e('0x3'));var fs=require('fs');var path=require(_0xaf5e('0x4'));var rimraf=require(_0xaf5e('0x5'));var config=require(_0xaf5e('0x6'));var attributes=require(_0xaf5e('0x7'));module[_0xaf5e('0x8')]=function(_0x60f9e2,_0x174735){return _0x60f9e2[_0xaf5e('0x9')](_0xaf5e('0xa'),attributes,{'tableName':_0xaf5e('0xb'),'paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0xaf5e('0xc'),_0xaf5e('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2800=['report_member','membername_interface','membername','interface','util','../../config/logger','moment','bluebird','request-promise','rimraf','exports','define','MemberReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2800,0xba));var _0x0280=function(_0x362519,_0x46fc26){_0x362519=_0x362519-0x0;var _0x41aa4e=_0x2800[_0x362519];return _0x41aa4e;};'use strict';var _=require('lodash');var util=require(_0x0280('0x0'));var logger=require(_0x0280('0x1'))('api');var moment=require(_0x0280('0x2'));var BPromise=require(_0x0280('0x3'));var rp=require(_0x0280('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0280('0x5'));var config=require('../../config/environment');var attributes=require('./memberReport.attributes');module[_0x0280('0x6')]=function(_0x75a1ec,_0x3c05b9){return _0x75a1ec[_0x0280('0x7')](_0x0280('0x8'),attributes,{'tableName':_0x0280('0x9'),'paranoid':![],'indexes':[{'name':_0x0280('0xa'),'fields':[_0x0280('0xb'),_0x0280('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index ab4c799..79c4a82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf31b=['model','attributes','MemberReport','create','body','raw','CreateMemberReport','UpdateMemberReport','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMemberReport','findAll','options','where','include','map'];(function(_0xea81ab,_0x23eb5e){var _0xb98237=function(_0x132024){while(--_0x132024){_0xea81ab['push'](_0xea81ab['shift']());}};_0xb98237(++_0x23eb5e);}(_0xf31b,0x1a0));var _0xbf31=function(_0x5a6e12,_0x100540){_0x5a6e12=_0x5a6e12-0x0;var _0x65f287=_0xf31b[_0x5a6e12];return _0x65f287;};'use strict';var _=require(_0xbf31('0x0'));var util=require(_0xbf31('0x1'));var moment=require(_0xbf31('0x2'));var BPromise=require(_0xbf31('0x3'));var rs=require(_0xbf31('0x4'));var fs=require('fs');var Redis=require(_0xbf31('0x5'));var db=require(_0xbf31('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xbf31('0x7'))(_0xbf31('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbf31('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xcf6c0f,_0xde14a4,_0x547919){return new BPromise(function(_0x4d02dd,_0x3da1a2){return client['request'](_0xcf6c0f,_0x547919)[_0xbf31('0xa')](function(_0x23d576){logger[_0xbf31('0xb')](_0xbf31('0xc'),_0xde14a4,_0xbf31('0xd'));logger[_0xbf31('0xe')](_0xbf31('0xf'),_0xde14a4,_0xbf31('0xd'),JSON[_0xbf31('0x10')](_0x23d576));if(_0x23d576[_0xbf31('0x11')]){if(_0x23d576[_0xbf31('0x11')][_0xbf31('0x12')]===0x1f4){logger[_0xbf31('0x11')]('MemberReport,\x20%s,\x20%s',_0xde14a4,_0x23d576['error']['message']);return _0x3da1a2(_0x23d576['error'][_0xbf31('0x13')]);}logger[_0xbf31('0x11')](_0xbf31('0xc'),_0xde14a4,_0x23d576[_0xbf31('0x11')]['message']);return _0x4d02dd(_0x23d576['error'][_0xbf31('0x13')]);}else{logger[_0xbf31('0xb')](_0xbf31('0xc'),_0xde14a4,_0xbf31('0xd'));_0x4d02dd(_0x23d576[_0xbf31('0x14')]['message']);}})[_0xbf31('0x15')](function(_0x5e9b58){logger['error'](_0xbf31('0xc'),_0xde14a4,_0x5e9b58);_0x3da1a2(_0x5e9b58);});});}exports[_0xbf31('0x16')]=function(_0x1cb0ce){var _0x1101e4=this;return new Promise(function(_0x19878b,_0x522532){return db['MemberReport'][_0xbf31('0x17')]({'raw':_0x1cb0ce[_0xbf31('0x18')]?_0x1cb0ce[_0xbf31('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1cb0ce[_0xbf31('0x18')]?_0x1cb0ce[_0xbf31('0x18')][_0xbf31('0x19')]||null:null,'attributes':_0x1cb0ce[_0xbf31('0x18')]?_0x1cb0ce[_0xbf31('0x18')]['attributes']||null:null,'limit':_0x1cb0ce[_0xbf31('0x18')]?_0x1cb0ce['options']['limit']||null:null,'include':_0x1cb0ce[_0xbf31('0x18')]?_0x1cb0ce[_0xbf31('0x18')][_0xbf31('0x1a')]?_[_0xbf31('0x1b')](_0x1cb0ce[_0xbf31('0x18')][_0xbf31('0x1a')],function(_0x59f899){return{'model':db[_0x59f899[_0xbf31('0x1c')]],'as':_0x59f899['as'],'attributes':_0x59f899[_0xbf31('0x1d')],'include':_0x59f899[_0xbf31('0x1a')]?_[_0xbf31('0x1b')](_0x59f899[_0xbf31('0x1a')],function(_0x15b9b3){return{'model':db[_0x15b9b3['model']],'as':_0x15b9b3['as'],'attributes':_0x15b9b3[_0xbf31('0x1d')],'include':_0x15b9b3[_0xbf31('0x1a')]?_[_0xbf31('0x1b')](_0x15b9b3[_0xbf31('0x1a')],function(_0x224d71){return{'model':db[_0x224d71['model']],'as':_0x224d71['as'],'attributes':_0x224d71['attributes']};}):[]};}):[]};}):[]:[]})[_0xbf31('0xa')](function(_0x1a17f4){logger[_0xbf31('0xb')](_0xbf31('0x16'),_0x1cb0ce);logger['debug']('GetMemberReport',_0x1cb0ce,JSON['stringify'](_0x1a17f4));_0x19878b(_0x1a17f4);})['catch'](function(_0x3a6b75){logger[_0xbf31('0x11')]('GetMemberReport',_0x3a6b75[_0xbf31('0x13')],_0x1cb0ce);_0x522532(_0x1101e4[_0xbf31('0x11')](0x1f4,_0x3a6b75[_0xbf31('0x13')]));});});};exports['CreateMemberReport']=function(_0x4f7551){var _0x5a7b09=this;return new Promise(function(_0x3a6da6,_0x11e289){return db[_0xbf31('0x1e')][_0xbf31('0x1f')](_0x4f7551[_0xbf31('0x20')],{'raw':_0x4f7551[_0xbf31('0x18')]?_0x4f7551['options'][_0xbf31('0x21')]===undefined?!![]:![]:!![]})[_0xbf31('0xa')](function(_0x18c166){logger[_0xbf31('0xb')](_0xbf31('0x22'),_0x4f7551);logger[_0xbf31('0xe')]('CreateMemberReport',_0x4f7551,JSON[_0xbf31('0x10')](_0x18c166));_0x3a6da6(_0x18c166);})['catch'](function(_0x55eb67){logger[_0xbf31('0x11')](_0xbf31('0x22'),_0x55eb67[_0xbf31('0x13')],_0x4f7551);_0x11e289(_0x5a7b09['error'](0x1f4,_0x55eb67[_0xbf31('0x13')]));});});};exports[_0xbf31('0x23')]=function(_0x41bfa9){var _0x2091a8=this;return new Promise(function(_0x421d2e,_0x27c7da){return db[_0xbf31('0x1e')]['update'](_0x41bfa9[_0xbf31('0x20')],{'raw':_0x41bfa9[_0xbf31('0x18')]?_0x41bfa9[_0xbf31('0x18')][_0xbf31('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41bfa9[_0xbf31('0x18')]?_0x41bfa9['options']['where']||null:null,'attributes':_0x41bfa9[_0xbf31('0x18')]?_0x41bfa9[_0xbf31('0x18')][_0xbf31('0x1d')]||null:null,'limit':_0x41bfa9[_0xbf31('0x18')]?_0x41bfa9[_0xbf31('0x18')][_0xbf31('0x24')]||null:null})['then'](function(_0x343f72){logger[_0xbf31('0xb')](_0xbf31('0x23'),_0x41bfa9);logger[_0xbf31('0xe')](_0xbf31('0x23'),_0x41bfa9,JSON['stringify'](_0x343f72));_0x421d2e(_0x343f72);})[_0xbf31('0x15')](function(_0x3f86c5){logger['error']('UpdateMemberReport',_0x3f86c5[_0xbf31('0x13')],_0x41bfa9);_0x27c7da(_0x2091a8[_0xbf31('0x11')](0x1f4,_0x3f86c5['message']));});});};
\ No newline at end of file
+var _0xe4d9=['MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','MemberReport','findAll','options','raw','where','attributes','limit','include','map','model','GetMemberReport','CreateMemberReport','UpdateMemberReport','update','body','lodash','util','moment','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x5e212e,_0x38f5c7){var _0x499c6f=function(_0x502db9){while(--_0x502db9){_0x5e212e['push'](_0x5e212e['shift']());}};_0x499c6f(++_0x38f5c7);}(_0xe4d9,0x141));var _0x9e4d=function(_0x44e4fd,_0x16d58d){_0x44e4fd=_0x44e4fd-0x0;var _0xddd625=_0xe4d9[_0x44e4fd];return _0xddd625;};'use strict';var _=require(_0x9e4d('0x0'));var util=require(_0x9e4d('0x1'));var moment=require(_0x9e4d('0x2'));var BPromise=require('bluebird');var rs=require(_0x9e4d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9e4d('0x4'));var logger=require(_0x9e4d('0x5'))('rpc');var config=require(_0x9e4d('0x6'));var jayson=require(_0x9e4d('0x7'));var client=jayson['client'][_0x9e4d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x74b14,_0x5bfad3,_0x5af2a0){return new BPromise(function(_0x36ec30,_0x48d257){return client[_0x9e4d('0x9')](_0x74b14,_0x5af2a0)[_0x9e4d('0xa')](function(_0x4ea141){logger[_0x9e4d('0xb')](_0x9e4d('0xc'),_0x5bfad3,_0x9e4d('0xd'));logger[_0x9e4d('0xe')](_0x9e4d('0xf'),_0x5bfad3,_0x9e4d('0xd'),JSON[_0x9e4d('0x10')](_0x4ea141));if(_0x4ea141[_0x9e4d('0x11')]){if(_0x4ea141[_0x9e4d('0x11')][_0x9e4d('0x12')]===0x1f4){logger[_0x9e4d('0x11')](_0x9e4d('0xc'),_0x5bfad3,_0x4ea141[_0x9e4d('0x11')][_0x9e4d('0x13')]);return _0x48d257(_0x4ea141[_0x9e4d('0x11')]['message']);}logger[_0x9e4d('0x11')](_0x9e4d('0xc'),_0x5bfad3,_0x4ea141[_0x9e4d('0x11')][_0x9e4d('0x13')]);return _0x36ec30(_0x4ea141[_0x9e4d('0x11')][_0x9e4d('0x13')]);}else{logger['info'](_0x9e4d('0xc'),_0x5bfad3,_0x9e4d('0xd'));_0x36ec30(_0x4ea141[_0x9e4d('0x14')][_0x9e4d('0x13')]);}})[_0x9e4d('0x15')](function(_0x42674a){logger['error'](_0x9e4d('0xc'),_0x5bfad3,_0x42674a);_0x48d257(_0x42674a);});});}exports['GetMemberReport']=function(_0x5c598f){var _0x2cdcfa=this;return new Promise(function(_0x445d08,_0xb40e2){return db[_0x9e4d('0x16')][_0x9e4d('0x17')]({'raw':_0x5c598f[_0x9e4d('0x18')]?_0x5c598f['options'][_0x9e4d('0x19')]===undefined?!![]:![]:!![],'where':_0x5c598f['options']?_0x5c598f[_0x9e4d('0x18')][_0x9e4d('0x1a')]||null:null,'attributes':_0x5c598f[_0x9e4d('0x18')]?_0x5c598f[_0x9e4d('0x18')][_0x9e4d('0x1b')]||null:null,'limit':_0x5c598f[_0x9e4d('0x18')]?_0x5c598f[_0x9e4d('0x18')][_0x9e4d('0x1c')]||null:null,'include':_0x5c598f[_0x9e4d('0x18')]?_0x5c598f['options'][_0x9e4d('0x1d')]?_[_0x9e4d('0x1e')](_0x5c598f['options'][_0x9e4d('0x1d')],function(_0x8d9f69){return{'model':db[_0x8d9f69['model']],'as':_0x8d9f69['as'],'attributes':_0x8d9f69[_0x9e4d('0x1b')],'include':_0x8d9f69[_0x9e4d('0x1d')]?_[_0x9e4d('0x1e')](_0x8d9f69['include'],function(_0x1205fb){return{'model':db[_0x1205fb[_0x9e4d('0x1f')]],'as':_0x1205fb['as'],'attributes':_0x1205fb[_0x9e4d('0x1b')],'include':_0x1205fb['include']?_[_0x9e4d('0x1e')](_0x1205fb['include'],function(_0x427d34){return{'model':db[_0x427d34['model']],'as':_0x427d34['as'],'attributes':_0x427d34[_0x9e4d('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x57ab61){logger[_0x9e4d('0xb')](_0x9e4d('0x20'),_0x5c598f);logger[_0x9e4d('0xe')](_0x9e4d('0x20'),_0x5c598f,JSON['stringify'](_0x57ab61));_0x445d08(_0x57ab61);})[_0x9e4d('0x15')](function(_0x317e27){logger['error']('GetMemberReport',_0x317e27[_0x9e4d('0x13')],_0x5c598f);_0xb40e2(_0x2cdcfa[_0x9e4d('0x11')](0x1f4,_0x317e27[_0x9e4d('0x13')]));});});};exports['CreateMemberReport']=function(_0x3002c0){var _0x38e9ff=this;return new Promise(function(_0x352ae0,_0x51ce3e){return db[_0x9e4d('0x16')]['create'](_0x3002c0['body'],{'raw':_0x3002c0[_0x9e4d('0x18')]?_0x3002c0[_0x9e4d('0x18')][_0x9e4d('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x42ac64){logger[_0x9e4d('0xb')](_0x9e4d('0x21'),_0x3002c0);logger[_0x9e4d('0xe')](_0x9e4d('0x21'),_0x3002c0,JSON[_0x9e4d('0x10')](_0x42ac64));_0x352ae0(_0x42ac64);})[_0x9e4d('0x15')](function(_0x209436){logger[_0x9e4d('0x11')](_0x9e4d('0x21'),_0x209436[_0x9e4d('0x13')],_0x3002c0);_0x51ce3e(_0x38e9ff[_0x9e4d('0x11')](0x1f4,_0x209436['message']));});});};exports[_0x9e4d('0x22')]=function(_0x4bd0f3){var _0x51a074=this;return new Promise(function(_0x14c87c,_0x3e849d){return db[_0x9e4d('0x16')][_0x9e4d('0x23')](_0x4bd0f3[_0x9e4d('0x24')],{'raw':_0x4bd0f3[_0x9e4d('0x18')]?_0x4bd0f3[_0x9e4d('0x18')][_0x9e4d('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4bd0f3[_0x9e4d('0x18')]?_0x4bd0f3[_0x9e4d('0x18')]['where']||null:null,'attributes':_0x4bd0f3[_0x9e4d('0x18')]?_0x4bd0f3[_0x9e4d('0x18')][_0x9e4d('0x1b')]||null:null,'limit':_0x4bd0f3[_0x9e4d('0x18')]?_0x4bd0f3[_0x9e4d('0x18')][_0x9e4d('0x1c')]||null:null})['then'](function(_0x4a2145){logger[_0x9e4d('0xb')](_0x9e4d('0x22'),_0x4bd0f3);logger['debug'](_0x9e4d('0x22'),_0x4bd0f3,JSON[_0x9e4d('0x10')](_0x4a2145));_0x14c87c(_0x4a2145);})[_0x9e4d('0x15')](function(_0xbabd7a){logger[_0x9e4d('0x11')](_0x9e4d('0x22'),_0xbabd7a[_0x9e4d('0x13')],_0x4bd0f3);_0x3e849d(_0x51a074[_0x9e4d('0x11')](0x1f4,_0xbabd7a[_0x9e4d('0x13')]));});});};
\ No newline at end of file
index a3b163a..9f71882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5482=['path','connect-timeout','express','fs-extra','../../components/auth/service','get','index','exports','multer','util'];(function(_0x51ec61,_0xf9d1e3){var _0x223200=function(_0x3bd510){while(--_0x3bd510){_0x51ec61['push'](_0x51ec61['shift']());}};_0x223200(++_0xf9d1e3);}(_0x5482,0xf8));var _0x2548=function(_0x51bda1,_0x44f80d){_0x51bda1=_0x51bda1-0x0;var _0x1ce08c=_0x5482[_0x51bda1];return _0x1ce08c;};'use strict';var multer=require(_0x2548('0x0'));var util=require(_0x2548('0x1'));var path=require(_0x2548('0x2'));var timeout=require(_0x2548('0x3'));var express=require(_0x2548('0x4'));var router=express['Router']();var fs_extra=require(_0x2548('0x5'));var auth=require(_0x2548('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./migration.controller');router[_0x2548('0x7')]('/',controller[_0x2548('0x8')]);module[_0x2548('0x9')]=router;
\ No newline at end of file
+var _0x3d3c=['index','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','get'];(function(_0x48b4f9,_0xbbe897){var _0x30dda9=function(_0xddc3b6){while(--_0xddc3b6){_0x48b4f9['push'](_0x48b4f9['shift']());}};_0x30dda9(++_0xbbe897);}(_0x3d3c,0x98));var _0xc3d3=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x3d3c[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0xc3d3('0x0'));var util=require(_0xc3d3('0x1'));var path=require(_0xc3d3('0x2'));var timeout=require(_0xc3d3('0x3'));var express=require(_0xc3d3('0x4'));var router=express[_0xc3d3('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc3d3('0x6'));var controller=require('./migration.controller');router[_0xc3d3('0x7')]('/',controller[_0xc3d3('0x8')]);module[_0xc3d3('0x9')]=router;
\ No newline at end of file
index d360174..b3f84e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dcc=['version','sequelize','STRING'];(function(_0x28578d,_0xcf5cf0){var _0x524826=function(_0x4a51b7){while(--_0x4a51b7){_0x28578d['push'](_0x28578d['shift']());}};_0x524826(++_0xcf5cf0);}(_0x1dcc,0x97));var _0xc1dc=function(_0x4e4e61,_0x436823){_0x4e4e61=_0x4e4e61-0x0;var _0x588850=_0x1dcc[_0x4e4e61];return _0x588850;};'use strict';var Sequelize=require(_0xc1dc('0x0'));module['exports']={'version':{'type':Sequelize[_0xc1dc('0x1')],'unique':_0xc1dc('0x2')}};
\ No newline at end of file
+var _0xcb3c=['sequelize','exports','STRING','version'];(function(_0x5b9523,_0xd55b34){var _0x1c44d7=function(_0x36d038){while(--_0x36d038){_0x5b9523['push'](_0x5b9523['shift']());}};_0x1c44d7(++_0xd55b34);}(_0xcb3c,0x1a8));var _0xccb3=function(_0x708c47,_0x6eaa1f){_0x708c47=_0x708c47-0x0;var _0x52a470=_0xcb3c[_0x708c47];return _0x52a470;};'use strict';var Sequelize=require(_0xccb3('0x0'));module[_0xccb3('0x1')]={'version':{'type':Sequelize[_0xccb3('0x2')],'unique':_0xccb3('0x3')}};
\ No newline at end of file
index 4e20f1a..ac35ca3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f1e=['../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','save','then','destroy','error','stack','name','send','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','attributes','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','Migration','includeAll','findAll','catch','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util'];(function(_0xc7232c,_0xfffc66){var _0x178f83=function(_0x983cbe){while(--_0x983cbe){_0xc7232c['push'](_0xc7232c['shift']());}};_0x178f83(++_0xfffc66);}(_0x2f1e,0xd9));var _0xe2f1=function(_0x250bbc,_0x3297f3){_0x250bbc=_0x250bbc-0x0;var _0x489e34=_0x2f1e[_0x250bbc];return _0x489e34;};'use strict';var emlformat=require(_0xe2f1('0x0'));var rimraf=require(_0xe2f1('0x1'));var zipdir=require(_0xe2f1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe2f1('0x3'));var BPromise=require(_0xe2f1('0x4'));var Mustache=require(_0xe2f1('0x5'));var util=require(_0xe2f1('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe2f1('0x7'));var _=require(_0xe2f1('0x8'));var squel=require(_0xe2f1('0x9'));var crypto=require(_0xe2f1('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe2f1('0xb'));var Papa=require('papaparse');var Redis=require(_0xe2f1('0xc'));var authService=require(_0xe2f1('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xe2f1('0xe'));var hardwareService=require(_0xe2f1('0xf'));var logger=require(_0xe2f1('0x10'))('api');var utils=require('../../config/utils');var config=require(_0xe2f1('0x11'));var licenseUtil=require(_0xe2f1('0x12'));var db=require(_0xe2f1('0x13'))['db'];function respondWithStatusCode(_0xfed82e,_0x49fd7b){_0x49fd7b=_0x49fd7b||0xcc;return function(_0x5794df){if(_0x5794df){return _0xfed82e[_0xe2f1('0x14')](_0x49fd7b);}return _0xfed82e[_0xe2f1('0x15')](_0x49fd7b)[_0xe2f1('0x16')]();};}function respondWithResult(_0x46fed5,_0x3c9df5){_0x3c9df5=_0x3c9df5||0xc8;return function(_0x4ad29c){if(_0x4ad29c){return _0x46fed5[_0xe2f1('0x15')](_0x3c9df5)[_0xe2f1('0x17')](_0x4ad29c);}};}function respondWithFilteredResult(_0x16ac98,_0x3b0ad8){return function(_0x7c6fb){if(_0x7c6fb){var _0x3a1e75=typeof _0x3b0ad8[_0xe2f1('0x18')]==='undefined'&&typeof _0x3b0ad8[_0xe2f1('0x19')]==='undefined';var _0x2e71fc=_0x7c6fb[_0xe2f1('0x1a')];var _0x5e1d8d=_0x3a1e75?0x0:_0x3b0ad8[_0xe2f1('0x18')];var _0x2a7bef=_0x3a1e75?_0x7c6fb[_0xe2f1('0x1a')]:_0x3b0ad8[_0xe2f1('0x18')]+_0x3b0ad8[_0xe2f1('0x19')];var _0x1e755a;if(_0x2a7bef>=_0x2e71fc){_0x2a7bef=_0x2e71fc;_0x1e755a=0xc8;}else{_0x1e755a=0xce;}_0x16ac98['status'](_0x1e755a);return _0x16ac98[_0xe2f1('0x1b')](_0xe2f1('0x1c'),_0x5e1d8d+'-'+_0x2a7bef+'/'+_0x2e71fc)[_0xe2f1('0x17')](_0x7c6fb);}return null;};}function patchUpdates(_0x5e1a01){return function(_0x4af296){try{jsonpatch['apply'](_0x4af296,_0x5e1a01,!![]);}catch(_0x33089e){return BPromise['reject'](_0x33089e);}return _0x4af296[_0xe2f1('0x1d')]();};}function saveUpdates(_0x5880a6,_0x3b02af){return function(_0x58512f){if(_0x58512f){return _0x58512f['update'](_0x5880a6)[_0xe2f1('0x1e')](function(_0x52464e){return _0x52464e;});}return null;};}function removeEntity(_0x85b28,_0x319491){return function(_0x43353c){if(_0x43353c){return _0x43353c[_0xe2f1('0x1f')]()[_0xe2f1('0x1e')](function(){_0x85b28[_0xe2f1('0x15')](0xcc)[_0xe2f1('0x16')]();});}};}function handleEntityNotFound(_0x5dc89e,_0x3d94be){return function(_0x45844e){if(!_0x45844e){_0x5dc89e[_0xe2f1('0x14')](0x194);}return _0x45844e;};}function handleError(_0x2aadf9,_0x234cbc){_0x234cbc=_0x234cbc||0x1f4;return function(_0x3f6456){logger[_0xe2f1('0x20')](_0x3f6456[_0xe2f1('0x21')]);if(_0x3f6456[_0xe2f1('0x22')]){delete _0x3f6456['name'];}_0x2aadf9[_0xe2f1('0x15')](_0x234cbc)[_0xe2f1('0x23')](_0x3f6456);};}exports['index']=function(_0x391a59,_0x273b6){var _0x5cda0a={},_0x3c02f7={},_0x22900a={'count':0x0,'rows':[]};var _0x5f348a=_['map'](db['Migration'][_0xe2f1('0x24')],function(_0x33b58d){return{'name':_0x33b58d[_0xe2f1('0x25')],'type':_0x33b58d[_0xe2f1('0x26')][_0xe2f1('0x27')]};});_0x3c02f7[_0xe2f1('0x28')]=_[_0xe2f1('0x29')](_0x5f348a,_0xe2f1('0x22'));_0x3c02f7['query']=_[_0xe2f1('0x2a')](_0x391a59[_0xe2f1('0x2b')]);_0x3c02f7['filters']=_[_0xe2f1('0x2c')](_0x3c02f7[_0xe2f1('0x28')],_0x3c02f7[_0xe2f1('0x2b')]);_0x5cda0a[_0xe2f1('0x2d')]=_['intersection'](_0x3c02f7[_0xe2f1('0x28')],qs['fields'](_0x391a59[_0xe2f1('0x2b')]['fields']));_0x5cda0a[_0xe2f1('0x2d')]=_0x5cda0a['attributes']['length']?_0x5cda0a[_0xe2f1('0x2d')]:_0x3c02f7['model'];if(!_0x391a59[_0xe2f1('0x2b')]['hasOwnProperty'](_0xe2f1('0x2e'))){_0x5cda0a['limit']=qs[_0xe2f1('0x19')](_0x391a59['query'][_0xe2f1('0x19')]);_0x5cda0a['offset']=qs[_0xe2f1('0x18')](_0x391a59[_0xe2f1('0x2b')][_0xe2f1('0x18')]);}_0x5cda0a[_0xe2f1('0x2f')]=qs[_0xe2f1('0x30')](_0x391a59['query'][_0xe2f1('0x30')]);_0x5cda0a[_0xe2f1('0x31')]=qs['filters'](_[_0xe2f1('0x32')](_0x391a59[_0xe2f1('0x2b')],_0x3c02f7['filters']),_0x5f348a);if(_0x391a59['query']['filter']){_0x5cda0a['where']=_[_0xe2f1('0x33')](_0x5cda0a['where'],{'$or':_[_0xe2f1('0x29')](_0x5f348a,function(_0x20d349){if(_0x20d349[_0xe2f1('0x26')]!==_0xe2f1('0x34')){var _0x1fbfc7={};_0x1fbfc7[_0x20d349['name']]={'$like':'%'+_0x391a59[_0xe2f1('0x2b')][_0xe2f1('0x35')]+'%'};return _0x1fbfc7;}})});}_0x5cda0a=_[_0xe2f1('0x33')]({},_0x5cda0a,_0x391a59[_0xe2f1('0x36')]);var _0x47e24f={'where':_0x5cda0a['where']};return db[_0xe2f1('0x37')][_0xe2f1('0x1a')](_0x47e24f)[_0xe2f1('0x1e')](function(_0x10e777){_0x22900a[_0xe2f1('0x1a')]=_0x10e777;if(_0x391a59[_0xe2f1('0x2b')][_0xe2f1('0x38')]){_0x5cda0a['include']=[{'all':!![]}];}return db[_0xe2f1('0x37')][_0xe2f1('0x39')](_0x5cda0a);})[_0xe2f1('0x1e')](function(_0x5dea56){_0x22900a['rows']=_0x5dea56;return _0x22900a;})[_0xe2f1('0x1e')](respondWithFilteredResult(_0x273b6,_0x5cda0a))[_0xe2f1('0x3a')](handleError(_0x273b6,null));};
\ No newline at end of file
+var _0x3f2f=['map','Migration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','options','includeAll','rows','catch','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index'];(function(_0x5d64c8,_0x5b7193){var _0x190d5c=function(_0x14ba57){while(--_0x14ba57){_0x5d64c8['push'](_0x5d64c8['shift']());}};_0x190d5c(++_0x5b7193);}(_0x3f2f,0x120));var _0xf3f2=function(_0x5e7a3e,_0x3a54af){_0x5e7a3e=_0x5e7a3e-0x0;var _0x264f8d=_0x3f2f[_0x5e7a3e];return _0x264f8d;};'use strict';var emlformat=require(_0xf3f2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf3f2('0x1'));var jsonpatch=require(_0xf3f2('0x2'));var rp=require(_0xf3f2('0x3'));var moment=require('moment');var BPromise=require(_0xf3f2('0x4'));var Mustache=require(_0xf3f2('0x5'));var util=require('util');var path=require(_0xf3f2('0x6'));var sox=require(_0xf3f2('0x7'));var csv=require('to-csv');var ejs=require(_0xf3f2('0x8'));var fs=require('fs');var fs_extra=require(_0xf3f2('0x9'));var _=require(_0xf3f2('0xa'));var squel=require(_0xf3f2('0xb'));var crypto=require(_0xf3f2('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf3f2('0xd'));var toCsv=require(_0xf3f2('0xe'));var querystring=require('querystring');var Papa=require(_0xf3f2('0xf'));var Redis=require(_0xf3f2('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf3f2('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf3f2('0x12'));var logger=require(_0xf3f2('0x13'))(_0xf3f2('0x14'));var utils=require('../../config/utils');var config=require(_0xf3f2('0x15'));var licenseUtil=require(_0xf3f2('0x16'));var db=require(_0xf3f2('0x17'))['db'];function respondWithStatusCode(_0x2a18ef,_0x1c40c6){_0x1c40c6=_0x1c40c6||0xcc;return function(_0x4fca67){if(_0x4fca67){return _0x2a18ef['sendStatus'](_0x1c40c6);}return _0x2a18ef[_0xf3f2('0x18')](_0x1c40c6)[_0xf3f2('0x19')]();};}function respondWithResult(_0x5e4de3,_0x3b7e27){_0x3b7e27=_0x3b7e27||0xc8;return function(_0x7bc03b){if(_0x7bc03b){return _0x5e4de3[_0xf3f2('0x18')](_0x3b7e27)[_0xf3f2('0x1a')](_0x7bc03b);}};}function respondWithFilteredResult(_0x331e87,_0x16c1c2){return function(_0x311861){if(_0x311861){var _0x11a306=typeof _0x16c1c2['offset']===_0xf3f2('0x1b')&&typeof _0x16c1c2[_0xf3f2('0x1c')]==='undefined';var _0x577e70=_0x311861[_0xf3f2('0x1d')];var _0x2b9e03=_0x11a306?0x0:_0x16c1c2['offset'];var _0x34e041=_0x11a306?_0x311861[_0xf3f2('0x1d')]:_0x16c1c2[_0xf3f2('0x1e')]+_0x16c1c2[_0xf3f2('0x1c')];var _0x3c29f4;if(_0x34e041>=_0x577e70){_0x34e041=_0x577e70;_0x3c29f4=0xc8;}else{_0x3c29f4=0xce;}_0x331e87[_0xf3f2('0x18')](_0x3c29f4);return _0x331e87['set'](_0xf3f2('0x1f'),_0x2b9e03+'-'+_0x34e041+'/'+_0x577e70)[_0xf3f2('0x1a')](_0x311861);}return null;};}function patchUpdates(_0x234542){return function(_0x8131ee){try{jsonpatch[_0xf3f2('0x20')](_0x8131ee,_0x234542,!![]);}catch(_0x2f455f){return BPromise['reject'](_0x2f455f);}return _0x8131ee[_0xf3f2('0x21')]();};}function saveUpdates(_0x58ecdc,_0x29ac05){return function(_0x3407e9){if(_0x3407e9){return _0x3407e9['update'](_0x58ecdc)[_0xf3f2('0x22')](function(_0x1dacd4){return _0x1dacd4;});}return null;};}function removeEntity(_0x4f8027,_0x4e8e36){return function(_0x3212b6){if(_0x3212b6){return _0x3212b6[_0xf3f2('0x23')]()[_0xf3f2('0x22')](function(){_0x4f8027[_0xf3f2('0x18')](0xcc)[_0xf3f2('0x19')]();});}};}function handleEntityNotFound(_0x557afa,_0xc1507){return function(_0x3e8bfb){if(!_0x3e8bfb){_0x557afa[_0xf3f2('0x24')](0x194);}return _0x3e8bfb;};}function handleError(_0x35b7f1,_0x335004){_0x335004=_0x335004||0x1f4;return function(_0x2cd703){logger[_0xf3f2('0x25')](_0x2cd703[_0xf3f2('0x26')]);if(_0x2cd703[_0xf3f2('0x27')]){delete _0x2cd703[_0xf3f2('0x27')];}_0x35b7f1[_0xf3f2('0x18')](_0x335004)[_0xf3f2('0x28')](_0x2cd703);};}exports[_0xf3f2('0x29')]=function(_0x492515,_0x16d0d7){var _0x3ba6d8={},_0x1eb210={},_0x11376e={'count':0x0,'rows':[]};var _0x2cdbf3=_[_0xf3f2('0x2a')](db[_0xf3f2('0x2b')][_0xf3f2('0x2c')],function(_0x58f331){return{'name':_0x58f331[_0xf3f2('0x2d')],'type':_0x58f331[_0xf3f2('0x2e')][_0xf3f2('0x2f')]};});_0x1eb210[_0xf3f2('0x30')]=_[_0xf3f2('0x2a')](_0x2cdbf3,'name');_0x1eb210[_0xf3f2('0x31')]=_[_0xf3f2('0x32')](_0x492515[_0xf3f2('0x31')]);_0x1eb210[_0xf3f2('0x33')]=_[_0xf3f2('0x34')](_0x1eb210[_0xf3f2('0x30')],_0x1eb210['query']);_0x3ba6d8[_0xf3f2('0x35')]=_[_0xf3f2('0x34')](_0x1eb210[_0xf3f2('0x30')],qs[_0xf3f2('0x36')](_0x492515[_0xf3f2('0x31')][_0xf3f2('0x36')]));_0x3ba6d8[_0xf3f2('0x35')]=_0x3ba6d8[_0xf3f2('0x35')][_0xf3f2('0x37')]?_0x3ba6d8[_0xf3f2('0x35')]:_0x1eb210[_0xf3f2('0x30')];if(!_0x492515[_0xf3f2('0x31')][_0xf3f2('0x38')](_0xf3f2('0x39'))){_0x3ba6d8['limit']=qs[_0xf3f2('0x1c')](_0x492515['query']['limit']);_0x3ba6d8[_0xf3f2('0x1e')]=qs[_0xf3f2('0x1e')](_0x492515[_0xf3f2('0x31')][_0xf3f2('0x1e')]);}_0x3ba6d8['order']=qs[_0xf3f2('0x3a')](_0x492515[_0xf3f2('0x31')][_0xf3f2('0x3a')]);_0x3ba6d8[_0xf3f2('0x3b')]=qs[_0xf3f2('0x33')](_['pick'](_0x492515['query'],_0x1eb210['filters']),_0x2cdbf3);if(_0x492515['query']['filter']){_0x3ba6d8[_0xf3f2('0x3b')]=_[_0xf3f2('0x3c')](_0x3ba6d8[_0xf3f2('0x3b')],{'$or':_[_0xf3f2('0x2a')](_0x2cdbf3,function(_0x2bb7ef){if(_0x2bb7ef['type']!==_0xf3f2('0x3d')){var _0x450752={};_0x450752[_0x2bb7ef[_0xf3f2('0x27')]]={'$like':'%'+_0x492515[_0xf3f2('0x31')]['filter']+'%'};return _0x450752;}})});}_0x3ba6d8=_['merge']({},_0x3ba6d8,_0x492515[_0xf3f2('0x3e')]);var _0x24b5ff={'where':_0x3ba6d8[_0xf3f2('0x3b')]};return db[_0xf3f2('0x2b')][_0xf3f2('0x1d')](_0x24b5ff)[_0xf3f2('0x22')](function(_0x29c585){_0x11376e[_0xf3f2('0x1d')]=_0x29c585;if(_0x492515[_0xf3f2('0x31')][_0xf3f2('0x3f')]){_0x3ba6d8['include']=[{'all':!![]}];}return db[_0xf3f2('0x2b')]['findAll'](_0x3ba6d8);})[_0xf3f2('0x22')](function(_0x5c058e){_0x11376e[_0xf3f2('0x40')]=_0x5c058e;return _0x11376e;})['then'](respondWithFilteredResult(_0x16d0d7,_0x3ba6d8))[_0xf3f2('0x41')](handleError(_0x16d0d7,null));};
\ No newline at end of file
index f834367..30e8999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf43=['rimraf','../../config/environment','./migration.attributes','define','Migration','migrations','lodash','../../config/logger','api','bluebird','request-promise','path'];(function(_0x1bd12a,_0x27965e){var _0x2f6ae7=function(_0x1082a6){while(--_0x1082a6){_0x1bd12a['push'](_0x1bd12a['shift']());}};_0x2f6ae7(++_0x27965e);}(_0xbf43,0x7e));var _0x3bf4=function(_0xd314a,_0x72ff74){_0xd314a=_0xd314a-0x0;var _0x32fb49=_0xbf43[_0xd314a];return _0x32fb49;};'use strict';var _=require(_0x3bf4('0x0'));var util=require('util');var logger=require(_0x3bf4('0x1'))(_0x3bf4('0x2'));var moment=require('moment');var BPromise=require(_0x3bf4('0x3'));var rp=require(_0x3bf4('0x4'));var fs=require('fs');var path=require(_0x3bf4('0x5'));var rimraf=require(_0x3bf4('0x6'));var config=require(_0x3bf4('0x7'));var attributes=require(_0x3bf4('0x8'));module['exports']=function(_0x39a91b,_0x26c281){return _0x39a91b[_0x3bf4('0x9')](_0x3bf4('0xa'),attributes,{'tableName':_0x3bf4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdf3d=['./migration.attributes','exports','define','Migration','lodash','api','moment','request-promise','../../config/environment'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xdf3d,0x17e));var _0xddf3=function(_0x55abd9,_0x1148af){_0x55abd9=_0x55abd9-0x0;var _0x3e5669=_0xdf3d[_0x55abd9];return _0x3e5669;};'use strict';var _=require(_0xddf3('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xddf3('0x1'));var moment=require(_0xddf3('0x2'));var BPromise=require('bluebird');var rp=require(_0xddf3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xddf3('0x4'));var attributes=require(_0xddf3('0x5'));module[_0xddf3('0x6')]=function(_0x14abf2,_0x2e6da3){return _0x14abf2[_0xddf3('0x7')](_0xddf3('0x8'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b4f1d0f..e911137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a9a=['message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','debug','request\x20sent','error','code'];(function(_0x5c0129,_0x541aab){var _0x40cd3f=function(_0x15942d){while(--_0x15942d){_0x5c0129['push'](_0x5c0129['shift']());}};_0x40cd3f(++_0x541aab);}(_0x8a9a,0x193));var _0xa8a9=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x8a9a[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa8a9('0x0'));var BPromise=require(_0xa8a9('0x1'));var rs=require(_0xa8a9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa8a9('0x3'))['db'];var utils=require(_0xa8a9('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xa8a9('0x5'));var jayson=require(_0xa8a9('0x6'));var client=jayson[_0xa8a9('0x7')][_0xa8a9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b3f08,_0x5c3c57,_0x47fda8){return new BPromise(function(_0x4414c6,_0x16dadc){return client[_0xa8a9('0x9')](_0x1b3f08,_0x47fda8)[_0xa8a9('0xa')](function(_0x242b63){logger[_0xa8a9('0xb')](_0xa8a9('0xc'),_0x5c3c57,'request\x20sent');logger[_0xa8a9('0xd')]('Migration,\x20%s,\x20%s,\x20%s',_0x5c3c57,_0xa8a9('0xe'),JSON['stringify'](_0x242b63));if(_0x242b63[_0xa8a9('0xf')]){if(_0x242b63[_0xa8a9('0xf')][_0xa8a9('0x10')]===0x1f4){logger[_0xa8a9('0xf')](_0xa8a9('0xc'),_0x5c3c57,_0x242b63[_0xa8a9('0xf')]['message']);return _0x16dadc(_0x242b63['error'][_0xa8a9('0x11')]);}logger['error'](_0xa8a9('0xc'),_0x5c3c57,_0x242b63[_0xa8a9('0xf')][_0xa8a9('0x11')]);return _0x4414c6(_0x242b63[_0xa8a9('0xf')][_0xa8a9('0x11')]);}else{logger['info'](_0xa8a9('0xc'),_0x5c3c57,'request\x20sent');_0x4414c6(_0x242b63[_0xa8a9('0x12')]['message']);}})[_0xa8a9('0x13')](function(_0x3215b0){logger['error'](_0xa8a9('0xc'),_0x5c3c57,_0x3215b0);_0x16dadc(_0x3215b0);});});}
\ No newline at end of file
+var _0x915a=['error','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','Migration,\x20%s,\x20%s','debug','request\x20sent','stringify'];(function(_0x3fbe5d,_0x353a7b){var _0x17ba55=function(_0x130588){while(--_0x130588){_0x3fbe5d['push'](_0x3fbe5d['shift']());}};_0x17ba55(++_0x353a7b);}(_0x915a,0x1d2));var _0xa915=function(_0x55c3,_0x254031){_0x55c3=_0x55c3-0x0;var _0x19cc52=_0x915a[_0x55c3];return _0x19cc52;};'use strict';var _=require(_0xa915('0x0'));var util=require(_0xa915('0x1'));var moment=require(_0xa915('0x2'));var BPromise=require(_0xa915('0x3'));var rs=require(_0xa915('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa915('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa915('0x6'));var config=require(_0xa915('0x7'));var jayson=require(_0xa915('0x8'));var client=jayson[_0xa915('0x9')][_0xa915('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f5e00,_0x4e4368,_0x483a83){return new BPromise(function(_0x3f5b1b,_0x43bfc9){return client[_0xa915('0xb')](_0x3f5e00,_0x483a83)[_0xa915('0xc')](function(_0x5cfcec){logger['info'](_0xa915('0xd'),_0x4e4368,'request\x20sent');logger[_0xa915('0xe')]('Migration,\x20%s,\x20%s,\x20%s',_0x4e4368,_0xa915('0xf'),JSON[_0xa915('0x10')](_0x5cfcec));if(_0x5cfcec[_0xa915('0x11')]){if(_0x5cfcec[_0xa915('0x11')]['code']===0x1f4){logger['error'](_0xa915('0xd'),_0x4e4368,_0x5cfcec['error'][_0xa915('0x12')]);return _0x43bfc9(_0x5cfcec['error'][_0xa915('0x12')]);}logger[_0xa915('0x11')](_0xa915('0xd'),_0x4e4368,_0x5cfcec[_0xa915('0x11')][_0xa915('0x12')]);return _0x3f5b1b(_0x5cfcec[_0xa915('0x11')]['message']);}else{logger[_0xa915('0x13')](_0xa915('0xd'),_0x4e4368,_0xa915('0xf'));_0x3f5b1b(_0x5cfcec['result'][_0xa915('0x12')]);}})[_0xa915('0x14')](function(_0x24609e){logger[_0xa915('0x11')](_0xa915('0xd'),_0x4e4368,_0x24609e);_0x43bfc9(_0x24609e);});});}
\ No newline at end of file
index 8b2baba..e21c45b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c24=['../../components/auth/service','../../components/interaction/service','./network.controller','get','index','/:id','isAuthenticated','show','post','update','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x5e4100,_0xc2be9c){var _0x22f675=function(_0x15eaec){while(--_0x15eaec){_0x5e4100['push'](_0x5e4100['shift']());}};_0x22f675(++_0xc2be9c);}(_0x2c24,0x1e6));var _0x42c2=function(_0x5ee438,_0x45d632){_0x5ee438=_0x5ee438-0x0;var _0x107efb=_0x2c24[_0x5ee438];return _0x107efb;};'use strict';var multer=require(_0x42c2('0x0'));var util=require(_0x42c2('0x1'));var path=require(_0x42c2('0x2'));var timeout=require(_0x42c2('0x3'));var express=require(_0x42c2('0x4'));var router=express[_0x42c2('0x5')]();var fs_extra=require(_0x42c2('0x6'));var auth=require(_0x42c2('0x7'));var interaction=require(_0x42c2('0x8'));var config=require('../../config/environment');var controller=require(_0x42c2('0x9'));router[_0x42c2('0xa')]('/',auth['isAuthenticated'](),controller[_0x42c2('0xb')]);router[_0x42c2('0xa')](_0x42c2('0xc'),auth[_0x42c2('0xd')](),controller[_0x42c2('0xe')]);router[_0x42c2('0xf')]('/',auth[_0x42c2('0xd')](),controller['create']);router['put'](_0x42c2('0xc'),auth[_0x42c2('0xd')](),controller[_0x42c2('0x10')]);router['delete'](_0x42c2('0xc'),auth[_0x42c2('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xaecc=['isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./network.controller','get'];(function(_0x38146b,_0x3f7382){var _0x4d992e=function(_0x4ae240){while(--_0x4ae240){_0x38146b['push'](_0x38146b['shift']());}};_0x4d992e(++_0x3f7382);}(_0xaecc,0x172));var _0xcaec=function(_0x567097,_0x345516){_0x567097=_0x567097-0x0;var _0x5e84f8=_0xaecc[_0x567097];return _0x5e84f8;};'use strict';var multer=require(_0xcaec('0x0'));var util=require('util');var path=require(_0xcaec('0x1'));var timeout=require(_0xcaec('0x2'));var express=require(_0xcaec('0x3'));var router=express[_0xcaec('0x4')]();var fs_extra=require(_0xcaec('0x5'));var auth=require(_0xcaec('0x6'));var interaction=require(_0xcaec('0x7'));var config=require('../../config/environment');var controller=require(_0xcaec('0x8'));router[_0xcaec('0x9')]('/',auth[_0xcaec('0xa')](),controller[_0xcaec('0xb')]);router[_0xcaec('0x9')](_0xcaec('0xc'),auth[_0xcaec('0xa')](),controller[_0xcaec('0xd')]);router[_0xcaec('0xe')]('/',auth['isAuthenticated'](),controller[_0xcaec('0xf')]);router[_0xcaec('0x10')](_0xcaec('0xc'),auth['isAuthenticated'](),controller[_0xcaec('0x11')]);router[_0xcaec('0x12')]('/:id',auth[_0xcaec('0xa')](),controller['destroy']);module[_0xcaec('0x13')]=router;
\ No newline at end of file
index 90320ce..c5e4646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca8d=['externip','stun','turn','STRING','sequelize','ENUM','localnet'];(function(_0x283cc1,_0x1f53be){var _0x27a2ec=function(_0x3fb88c){while(--_0x3fb88c){_0x283cc1['push'](_0x283cc1['shift']());}};_0x27a2ec(++_0x1f53be);}(_0xca8d,0xc1));var _0xdca8=function(_0x3168e1,_0xa046e0){_0x3168e1=_0x3168e1-0x0;var _0x13ad69=_0xca8d[_0x3168e1];return _0x13ad69;};'use strict';var Sequelize=require(_0xdca8('0x0'));module['exports']={'type':{'type':Sequelize[_0xdca8('0x1')](_0xdca8('0x2'),_0xdca8('0x3'),_0xdca8('0x4'),_0xdca8('0x5'))},'value':{'type':Sequelize[_0xdca8('0x6')]},'username':{'type':Sequelize[_0xdca8('0x6')]},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xaf1c=['stun','turn','STRING','exports'];(function(_0x20845e,_0x211e78){var _0x28cf2b=function(_0x31d613){while(--_0x31d613){_0x20845e['push'](_0x20845e['shift']());}};_0x28cf2b(++_0x211e78);}(_0xaf1c,0x1c7));var _0xcaf1=function(_0x509fb8,_0x21238e){_0x509fb8=_0x509fb8-0x0;var _0x2d9a00=_0xaf1c[_0x509fb8];return _0x2d9a00;};'use strict';var Sequelize=require('sequelize');module[_0xcaf1('0x0')]={'type':{'type':Sequelize['ENUM']('localnet','externip',_0xcaf1('0x1'),_0xcaf1('0x2'))},'value':{'type':Sequelize[_0xcaf1('0x3')]},'username':{'type':Sequelize[_0xcaf1('0x3')]},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ebbfb00..2504713 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5140=['status','offset','undefined','limit','set','Content-Range','json','destroy','end','sendStatus','stack','name','send','map','Network','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','merge','where','VIRTUAL','options','count','includeAll','include','findAll','show','params','create','body','toUpperCase','STUN','readFileSync','root','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','join','server/files/templates/turn_multiple.ejs','render','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','update','find','format','chan_sip.so','util','ejs','../../components/parsers/qs','api','jayson/promise','http','then','info','request\x20sent','debug','error','code','Network,\x20%s,\x20%s','message','result','catch'];(function(_0x51cd23,_0x273cbe){var _0x22f2c8=function(_0x515cd5){while(--_0x515cd5){_0x51cd23['push'](_0x51cd23['shift']());}};_0x22f2c8(++_0x273cbe);}(_0x5140,0xe6));var _0x0514=function(_0x5ceedf,_0x3bc004){_0x5ceedf=_0x5ceedf-0x0;var _0x1976dd=_0x5140[_0x5ceedf];return _0x1976dd;};'use strict';var util=require(_0x0514('0x0'));var path=require('path');var ejs=require(_0x0514('0x1'));var fs=require('fs');var _=require('lodash');var qs=require(_0x0514('0x2'));var logger=require('../../config/logger')(_0x0514('0x3'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var jayson=require(_0x0514('0x4'));var client=jayson['client'][_0x0514('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x3d3aae,_0x23ff4c,_0x102b7f,_0x281f38){return new Promise(function(_0x287ca2,_0x1cf829){var _0x507bde=_0x281f38||client;return _0x507bde['request'](_0x3d3aae,_0x102b7f)[_0x0514('0x6')](function(_0x3cfe0e){logger[_0x0514('0x7')]('Network,\x20%s,\x20%s',_0x23ff4c,_0x0514('0x8'));logger[_0x0514('0x9')]('Network,\x20%s,\x20%s,\x20%s',_0x23ff4c,_0x0514('0x8'),JSON['stringify'](_0x3cfe0e));if(_0x3cfe0e[_0x0514('0xa')]){if(_0x3cfe0e[_0x0514('0xa')][_0x0514('0xb')]===0x1f4){logger[_0x0514('0xa')](_0x0514('0xc'),_0x23ff4c,_0x3cfe0e[_0x0514('0xa')][_0x0514('0xd')]);return _0x1cf829(_0x3cfe0e[_0x0514('0xa')][_0x0514('0xd')]);}logger[_0x0514('0xa')](_0x0514('0xc'),_0x23ff4c,_0x3cfe0e['error'][_0x0514('0xd')]);return _0x287ca2(_0x3cfe0e['error'][_0x0514('0xd')]);}else{logger[_0x0514('0x7')](_0x0514('0xc'),_0x23ff4c,_0x0514('0x8'));_0x287ca2(_0x3cfe0e[_0x0514('0xe')][_0x0514('0xd')]);}})[_0x0514('0xf')](function(_0x2ac99b){logger[_0x0514('0xa')]('Network,\x20%s,\x20%s',_0x23ff4c,_0x2ac99b);_0x1cf829(_0x2ac99b);});});}function respondWithResult(_0xcd73d8,_0x272c6c){_0x272c6c=_0x272c6c||0xc8;return function(_0x4f6fb0){if(_0x4f6fb0){return _0xcd73d8[_0x0514('0x10')](_0x272c6c)['json'](_0x4f6fb0);}};}function respondWithFilteredResult(_0x23bb2e,_0x26c14f){return function(_0x1c7f1b){if(_0x1c7f1b){var _0x372b4a=typeof _0x26c14f[_0x0514('0x11')]===_0x0514('0x12')&&typeof _0x26c14f[_0x0514('0x13')]===_0x0514('0x12');var _0x48b5a7=_0x1c7f1b['count'];var _0x3447b4=_0x372b4a?0x0:_0x26c14f[_0x0514('0x11')];var _0x139e91=_0x372b4a?_0x1c7f1b['count']:_0x26c14f[_0x0514('0x11')]+_0x26c14f[_0x0514('0x13')];var _0x5a321e;if(_0x139e91>=_0x48b5a7){_0x139e91=_0x48b5a7;_0x5a321e=0xc8;}else{_0x5a321e=0xce;}_0x23bb2e['status'](_0x5a321e);return _0x23bb2e[_0x0514('0x14')](_0x0514('0x15'),_0x3447b4+'-'+_0x139e91+'/'+_0x48b5a7)[_0x0514('0x16')](_0x1c7f1b);}return null;};}function saveUpdates(_0x2127b7){return function(_0x32981b){if(_0x32981b){return _0x32981b['update'](_0x2127b7)[_0x0514('0x6')](function(_0x348570){return _0x348570;});}return null;};}function removeEntity(_0x12d3a9){return function(_0x4ae2b9){if(_0x4ae2b9){return _0x4ae2b9[_0x0514('0x17')]()[_0x0514('0x6')](function(){_0x12d3a9[_0x0514('0x10')](0xcc)[_0x0514('0x18')]();});}};}function handleEntityNotFound(_0x1329d2){return function(_0x37afa3){if(!_0x37afa3){_0x1329d2[_0x0514('0x19')](0x194);}return _0x37afa3;};}function handleError(_0x381d27,_0x582b07){_0x582b07=_0x582b07||0x1f4;return function(_0x48d3c4){logger[_0x0514('0xa')](_0x48d3c4[_0x0514('0x1a')]);if(_0x48d3c4['name']){delete _0x48d3c4[_0x0514('0x1b')];}_0x381d27[_0x0514('0x10')](_0x582b07)[_0x0514('0x1c')](_0x48d3c4);};}exports['index']=function(_0x373de1,_0x7b9190){var _0x51bf6a={},_0x21487a={},_0xf17c4e={'count':0x0,'rows':[]};var _0x35fde2=_[_0x0514('0x1d')](db[_0x0514('0x1e')][_0x0514('0x1f')],function(_0x3fd359){return{'name':_0x3fd359['fieldName'],'type':_0x3fd359[_0x0514('0x20')][_0x0514('0x21')]};});_0x21487a[_0x0514('0x22')]=_['map'](_0x35fde2,_0x0514('0x1b'));_0x21487a[_0x0514('0x23')]=_[_0x0514('0x24')](_0x373de1['query']);_0x21487a['filters']=_[_0x0514('0x25')](_0x21487a['model'],_0x21487a['query']);_0x51bf6a[_0x0514('0x26')]=_['intersection'](_0x21487a[_0x0514('0x22')],qs[_0x0514('0x27')](_0x373de1[_0x0514('0x23')][_0x0514('0x27')]));_0x51bf6a['attributes']=_0x51bf6a[_0x0514('0x26')][_0x0514('0x28')]?_0x51bf6a[_0x0514('0x26')]:_0x21487a[_0x0514('0x22')];if(!_0x373de1[_0x0514('0x23')][_0x0514('0x29')](_0x0514('0x2a'))){_0x51bf6a[_0x0514('0x13')]=qs['limit'](_0x373de1[_0x0514('0x23')][_0x0514('0x13')]);_0x51bf6a[_0x0514('0x11')]=qs[_0x0514('0x11')](_0x373de1['query'][_0x0514('0x11')]);}_0x51bf6a[_0x0514('0x2b')]=qs['sort'](_0x373de1[_0x0514('0x23')][_0x0514('0x2c')]);_0x51bf6a['where']=qs['filters'](_[_0x0514('0x2d')](_0x373de1[_0x0514('0x23')],_0x21487a[_0x0514('0x2e')]),_0x35fde2);if(_0x373de1[_0x0514('0x23')][_0x0514('0x2f')]){_0x51bf6a['where']=_[_0x0514('0x30')](_0x51bf6a[_0x0514('0x31')],{'$or':_[_0x0514('0x1d')](_0x35fde2,function(_0x57c916){if(_0x57c916[_0x0514('0x20')]!==_0x0514('0x32')){var _0x104a6e={};_0x104a6e[_0x57c916[_0x0514('0x1b')]]={'$like':'%'+_0x373de1[_0x0514('0x23')][_0x0514('0x2f')]+'%'};return _0x104a6e;}})});}_0x51bf6a=_[_0x0514('0x30')]({},_0x51bf6a,_0x373de1[_0x0514('0x33')]);var _0x38f5d3={'where':_0x51bf6a[_0x0514('0x31')]};return db[_0x0514('0x1e')][_0x0514('0x34')](_0x38f5d3)[_0x0514('0x6')](function(_0x4baf3e){_0xf17c4e['count']=_0x4baf3e;if(_0x373de1[_0x0514('0x23')][_0x0514('0x35')]){_0x51bf6a[_0x0514('0x36')]=[{'all':!![]}];}return db[_0x0514('0x1e')][_0x0514('0x37')](_0x51bf6a);})[_0x0514('0x6')](function(_0x539f8c){_0xf17c4e['rows']=_0x539f8c;return _0xf17c4e;})[_0x0514('0x6')](respondWithFilteredResult(_0x7b9190,_0x51bf6a))[_0x0514('0xf')](handleError(_0x7b9190,null));};exports[_0x0514('0x38')]=function(_0x58d43f,_0x4de16c){var _0xbb8c0e={'raw':!![],'where':{'id':_0x58d43f[_0x0514('0x39')]['id']}},_0x2470b5={};_0x2470b5[_0x0514('0x22')]=_['keys'](db[_0x0514('0x1e')]['rawAttributes']);_0x2470b5[_0x0514('0x23')]=_[_0x0514('0x24')](_0x58d43f[_0x0514('0x23')]);_0x2470b5[_0x0514('0x2e')]=_[_0x0514('0x25')](_0x2470b5[_0x0514('0x22')],_0x2470b5[_0x0514('0x23')]);_0xbb8c0e[_0x0514('0x26')]=_[_0x0514('0x25')](_0x2470b5[_0x0514('0x22')],qs[_0x0514('0x27')](_0x58d43f[_0x0514('0x23')][_0x0514('0x27')]));_0xbb8c0e[_0x0514('0x26')]=_0xbb8c0e[_0x0514('0x26')]['length']?_0xbb8c0e[_0x0514('0x26')]:_0x2470b5[_0x0514('0x22')];if(_0x58d43f[_0x0514('0x23')][_0x0514('0x35')]){_0xbb8c0e[_0x0514('0x36')]=[{'all':!![]}];}_0xbb8c0e=_['merge']({},_0xbb8c0e,_0x58d43f[_0x0514('0x33')]);return db[_0x0514('0x1e')]['find'](_0xbb8c0e)[_0x0514('0x6')](handleEntityNotFound(_0x4de16c,null))['then'](respondWithResult(_0x4de16c,null))['catch'](handleError(_0x4de16c,null));};exports[_0x0514('0x3a')]=function(_0x54b43f,_0x5bcae9){var _0x165ac2;return db[_0x0514('0x1e')][_0x0514('0x3a')](_0x54b43f['body'],{'raw':!![]})[_0x0514('0x6')](function(_0x298c4f){_0x165ac2=_0x298c4f;return db[_0x0514('0x1e')]['findAll']({'where':{'type':_0x54b43f[_0x0514('0x3b')]['type']},'raw':!![]});})[_0x0514('0x6')](function(_0xbd3b4e){if(_0x165ac2[_0x0514('0x20')][_0x0514('0x3c')]()==_0x0514('0x3d')){var _0x52e89b=fs[_0x0514('0x3e')](path['join'](config[_0x0514('0x3f')],_0x0514('0x40')),_0x0514('0x41'));var _0x30c746=ejs['render'](_0x52e89b,{'networks':_0xbd3b4e||[]});fs[_0x0514('0x42')](_0x0514('0x43'),_0x30c746);return respondWithRpcPromise(_0x0514('0x44'),'create',{'module':_0x0514('0x45')});}else if(_0x165ac2['type'][_0x0514('0x3c')]()==_0x0514('0x46')){var _0x55f745=fs[_0x0514('0x3e')](path[_0x0514('0x47')](config[_0x0514('0x3f')],_0x0514('0x48')),_0x0514('0x41'));var _0x324c20=ejs[_0x0514('0x49')](_0x55f745,{'networks':_0xbd3b4e||[]});fs[_0x0514('0x42')](_0x0514('0x4a'),_0x324c20);return respondWithRpcPromise(_0x0514('0x44'),'create',{'module':'res_stun_monitor.so'});}else{var _0x5bb679=fs[_0x0514('0x3e')](path[_0x0514('0x47')](config[_0x0514('0x3f')],_0x0514('0x4b')),_0x0514('0x41'));var _0x3ea216=ejs['render'](_0x5bb679,{'networks':_0xbd3b4e||[]});fs[_0x0514('0x42')](util['format'](_0x0514('0x4c'),_0x54b43f[_0x0514('0x3b')][_0x0514('0x20')][_0x0514('0x4d')]()),_0x3ea216);return respondWithRpcPromise(_0x0514('0x44'),_0x0514('0x3a'),{'module':'chan_sip.so'});}})[_0x0514('0x6')](function(){return _0x165ac2;})['then'](respondWithResult(_0x5bcae9,0xc9))['catch'](handleError(_0x5bcae9,null));};exports[_0x0514('0x4e')]=function(_0x64ab3,_0x1f4ae6){var _0x30d20f;return db[_0x0514('0x1e')][_0x0514('0x4f')]({'where':{'id':_0x64ab3[_0x0514('0x39')]['id']}})[_0x0514('0x6')](handleEntityNotFound(_0x1f4ae6,null))[_0x0514('0x6')](saveUpdates(_0x64ab3[_0x0514('0x3b')],null))[_0x0514('0x6')](function(_0x285992){if(_0x285992){_0x30d20f=_0x285992;return db['Network'][_0x0514('0x37')]({'where':{'type':_0x30d20f['type']},'raw':!![]});}return null;})[_0x0514('0x6')](function(_0x27f3cc){if(_0x30d20f[_0x0514('0x20')][_0x0514('0x3c')]()=='STUN'){var _0x72554d=fs[_0x0514('0x3e')](path[_0x0514('0x47')](config[_0x0514('0x3f')],_0x0514('0x40')),_0x0514('0x41'));var _0x27c987=ejs[_0x0514('0x49')](_0x72554d,{'networks':_0x27f3cc||[]});fs[_0x0514('0x42')](_0x0514('0x43'),_0x27c987);return respondWithRpcPromise('Reload',_0x0514('0x4e'),{'module':_0x0514('0x45')});}else if(_0x30d20f[_0x0514('0x20')][_0x0514('0x3c')]()==_0x0514('0x46')){var _0x281009=fs[_0x0514('0x3e')](path[_0x0514('0x47')](config[_0x0514('0x3f')],_0x0514('0x48')),_0x0514('0x41'));var _0x163220=ejs[_0x0514('0x49')](_0x281009,{'networks':_0x27f3cc||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x163220);return respondWithRpcPromise(_0x0514('0x44'),_0x0514('0x4e'),{'module':_0x0514('0x45')});}else{var _0x59798d=fs[_0x0514('0x3e')](path['join'](config[_0x0514('0x3f')],_0x0514('0x4b')),_0x0514('0x41'));var _0x12d211=ejs[_0x0514('0x49')](_0x59798d,{'networks':_0x27f3cc||[]});fs[_0x0514('0x42')](util[_0x0514('0x50')](_0x0514('0x4c'),_0x64ab3['body'][_0x0514('0x20')]['toLowerCase']()),_0x12d211);return respondWithRpcPromise(_0x0514('0x44'),_0x0514('0x4e'),{'module':_0x0514('0x51')});}})[_0x0514('0x6')](function(_0x42de52){if(_0x42de52){return _0x30d20f;}return null;})[_0x0514('0x6')](respondWithResult(_0x1f4ae6,null))[_0x0514('0xf')](handleError(_0x1f4ae6,null));};exports['destroy']=function(_0x13a680,_0x45b6c1){var _0x5ed4fc;return db[_0x0514('0x1e')][_0x0514('0x4f')]({'where':{'id':_0x13a680[_0x0514('0x39')]['id']}})[_0x0514('0x6')](function(_0x26f2a5){_0x5ed4fc=_0x26f2a5;return _0x26f2a5;})[_0x0514('0x6')](handleEntityNotFound(_0x45b6c1,null))[_0x0514('0x6')](removeEntity(_0x45b6c1,null))[_0x0514('0x6')](function(){if(_0x5ed4fc){return db[_0x0514('0x1e')][_0x0514('0x37')]({'where':{'type':_0x5ed4fc['type']},'raw':!![]});}})[_0x0514('0x6')](function(_0x6da402){if(_0x5ed4fc['type'][_0x0514('0x3c')]()==_0x0514('0x3d')){var _0x4c0a3f=fs[_0x0514('0x3e')](path[_0x0514('0x47')](config[_0x0514('0x3f')],_0x0514('0x40')),_0x0514('0x41'));var _0x56682a=ejs[_0x0514('0x49')](_0x4c0a3f,{'networks':_0x6da402||[]});fs[_0x0514('0x42')](_0x0514('0x43'),_0x56682a);return respondWithRpcPromise(_0x0514('0x44'),_0x0514('0x17'),{'module':_0x0514('0x45')});}else if(_0x5ed4fc['type'][_0x0514('0x3c')]()=='TURN'){var _0x5bea68=fs['readFileSync'](path[_0x0514('0x47')](config[_0x0514('0x3f')],_0x0514('0x48')),_0x0514('0x41'));var _0xd8431d=ejs[_0x0514('0x49')](_0x5bea68,{'networks':_0x6da402||[]});fs[_0x0514('0x42')](_0x0514('0x4a'),_0xd8431d);return respondWithRpcPromise(_0x0514('0x44'),_0x0514('0x17'),{'module':_0x0514('0x45')});}else{var _0x5040c8=fs[_0x0514('0x3e')](path[_0x0514('0x47')](config[_0x0514('0x3f')],'server/files/templates/network.ejs'),_0x0514('0x41'));var _0x227fa1=ejs[_0x0514('0x49')](_0x5040c8,{'networks':_0x6da402||[]});fs[_0x0514('0x42')](util[_0x0514('0x50')](_0x0514('0x4c'),_0x5ed4fc[_0x0514('0x20')][_0x0514('0x4d')]()),_0x227fa1);return respondWithRpcPromise(_0x0514('0x44'),_0x0514('0x17'),{'module':_0x0514('0x51')});}})['catch'](handleError(_0x45b6c1,null));};
\ No newline at end of file
+var _0x0b18=['lodash','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','error','code','Network,\x20%s,\x20%s','message','result','catch','status','json','limit','undefined','count','offset','set','Content-Range','end','stack','name','index','Network','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','include','findAll','rows','show','includeAll','create','body','toUpperCase','STUN','join','root','server/files/templates/stun_multiple.ejs','utf8','render','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','readFileSync','writeFileSync','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','update','find','params','server/files/templates/turn_multiple.ejs','toLowerCase','destroy','TURN','path','ejs'];(function(_0x5ac799,_0x22bc6d){var _0x4106c2=function(_0xacd55c){while(--_0xacd55c){_0x5ac799['push'](_0x5ac799['shift']());}};_0x4106c2(++_0x22bc6d);}(_0x0b18,0x15e));var _0x80b1=function(_0x4c29f9,_0x5bddd4){_0x4c29f9=_0x4c29f9-0x0;var _0x4e17b8=_0x0b18[_0x4c29f9];return _0x4e17b8;};'use strict';var util=require('util');var path=require(_0x80b1('0x0'));var ejs=require(_0x80b1('0x1'));var fs=require('fs');var _=require(_0x80b1('0x2'));var qs=require(_0x80b1('0x3'));var logger=require(_0x80b1('0x4'))('api');var config=require(_0x80b1('0x5'));var db=require(_0x80b1('0x6'))['db'];var jayson=require(_0x80b1('0x7'));var client=jayson[_0x80b1('0x8')][_0x80b1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2547f1,_0x191853,_0x2a6ff7,_0x1b97e4){return new Promise(function(_0x5ed14f,_0x4e9c2b){var _0x2fb1e0=_0x1b97e4||client;return _0x2fb1e0[_0x80b1('0xa')](_0x2547f1,_0x2a6ff7)[_0x80b1('0xb')](function(_0x1ac20a){logger[_0x80b1('0xc')]('Network,\x20%s,\x20%s',_0x191853,_0x80b1('0xd'));logger[_0x80b1('0xe')]('Network,\x20%s,\x20%s,\x20%s',_0x191853,_0x80b1('0xd'),JSON['stringify'](_0x1ac20a));if(_0x1ac20a[_0x80b1('0xf')]){if(_0x1ac20a[_0x80b1('0xf')][_0x80b1('0x10')]===0x1f4){logger['error'](_0x80b1('0x11'),_0x191853,_0x1ac20a['error']['message']);return _0x4e9c2b(_0x1ac20a[_0x80b1('0xf')][_0x80b1('0x12')]);}logger['error'](_0x80b1('0x11'),_0x191853,_0x1ac20a[_0x80b1('0xf')][_0x80b1('0x12')]);return _0x5ed14f(_0x1ac20a[_0x80b1('0xf')][_0x80b1('0x12')]);}else{logger[_0x80b1('0xc')](_0x80b1('0x11'),_0x191853,_0x80b1('0xd'));_0x5ed14f(_0x1ac20a[_0x80b1('0x13')][_0x80b1('0x12')]);}})[_0x80b1('0x14')](function(_0x2a2576){logger['error'](_0x80b1('0x11'),_0x191853,_0x2a2576);_0x4e9c2b(_0x2a2576);});});}function respondWithResult(_0xbb2561,_0x57f2cb){_0x57f2cb=_0x57f2cb||0xc8;return function(_0x2edf68){if(_0x2edf68){return _0xbb2561[_0x80b1('0x15')](_0x57f2cb)[_0x80b1('0x16')](_0x2edf68);}};}function respondWithFilteredResult(_0x130b45,_0x491677){return function(_0x528274){if(_0x528274){var _0xc0523b=typeof _0x491677['offset']==='undefined'&&typeof _0x491677[_0x80b1('0x17')]===_0x80b1('0x18');var _0x4eccb6=_0x528274[_0x80b1('0x19')];var _0x19e7ea=_0xc0523b?0x0:_0x491677[_0x80b1('0x1a')];var _0x164cf4=_0xc0523b?_0x528274[_0x80b1('0x19')]:_0x491677['offset']+_0x491677[_0x80b1('0x17')];var _0x582be7;if(_0x164cf4>=_0x4eccb6){_0x164cf4=_0x4eccb6;_0x582be7=0xc8;}else{_0x582be7=0xce;}_0x130b45[_0x80b1('0x15')](_0x582be7);return _0x130b45[_0x80b1('0x1b')](_0x80b1('0x1c'),_0x19e7ea+'-'+_0x164cf4+'/'+_0x4eccb6)['json'](_0x528274);}return null;};}function saveUpdates(_0x3dcdb1){return function(_0x1aab43){if(_0x1aab43){return _0x1aab43['update'](_0x3dcdb1)[_0x80b1('0xb')](function(_0x59fb5c){return _0x59fb5c;});}return null;};}function removeEntity(_0x337a0a){return function(_0x1cfd06){if(_0x1cfd06){return _0x1cfd06['destroy']()['then'](function(){_0x337a0a['status'](0xcc)[_0x80b1('0x1d')]();});}};}function handleEntityNotFound(_0x3bfe37){return function(_0x2c266f){if(!_0x2c266f){_0x3bfe37['sendStatus'](0x194);}return _0x2c266f;};}function handleError(_0x15447f,_0x2f7e17){_0x2f7e17=_0x2f7e17||0x1f4;return function(_0x2e87b0){logger['error'](_0x2e87b0[_0x80b1('0x1e')]);if(_0x2e87b0[_0x80b1('0x1f')]){delete _0x2e87b0[_0x80b1('0x1f')];}_0x15447f[_0x80b1('0x15')](_0x2f7e17)['send'](_0x2e87b0);};}exports[_0x80b1('0x20')]=function(_0x445170,_0x149b45){var _0x38761f={},_0x47c955={},_0x56f642={'count':0x0,'rows':[]};var _0x215a4a=_['map'](db[_0x80b1('0x21')][_0x80b1('0x22')],function(_0x256768){return{'name':_0x256768[_0x80b1('0x23')],'type':_0x256768['type'][_0x80b1('0x24')]};});_0x47c955[_0x80b1('0x25')]=_[_0x80b1('0x26')](_0x215a4a,_0x80b1('0x1f'));_0x47c955[_0x80b1('0x27')]=_[_0x80b1('0x28')](_0x445170[_0x80b1('0x27')]);_0x47c955['filters']=_[_0x80b1('0x29')](_0x47c955[_0x80b1('0x25')],_0x47c955[_0x80b1('0x27')]);_0x38761f[_0x80b1('0x2a')]=_[_0x80b1('0x29')](_0x47c955[_0x80b1('0x25')],qs[_0x80b1('0x2b')](_0x445170[_0x80b1('0x27')][_0x80b1('0x2b')]));_0x38761f[_0x80b1('0x2a')]=_0x38761f[_0x80b1('0x2a')][_0x80b1('0x2c')]?_0x38761f[_0x80b1('0x2a')]:_0x47c955[_0x80b1('0x25')];if(!_0x445170['query'][_0x80b1('0x2d')](_0x80b1('0x2e'))){_0x38761f[_0x80b1('0x17')]=qs['limit'](_0x445170[_0x80b1('0x27')]['limit']);_0x38761f[_0x80b1('0x1a')]=qs[_0x80b1('0x1a')](_0x445170[_0x80b1('0x27')][_0x80b1('0x1a')]);}_0x38761f[_0x80b1('0x2f')]=qs[_0x80b1('0x30')](_0x445170[_0x80b1('0x27')]['sort']);_0x38761f['where']=qs[_0x80b1('0x31')](_[_0x80b1('0x32')](_0x445170[_0x80b1('0x27')],_0x47c955['filters']),_0x215a4a);if(_0x445170['query'][_0x80b1('0x33')]){_0x38761f[_0x80b1('0x34')]=_[_0x80b1('0x35')](_0x38761f[_0x80b1('0x34')],{'$or':_[_0x80b1('0x26')](_0x215a4a,function(_0x144a08){if(_0x144a08[_0x80b1('0x36')]!==_0x80b1('0x37')){var _0x2ec821={};_0x2ec821[_0x144a08[_0x80b1('0x1f')]]={'$like':'%'+_0x445170[_0x80b1('0x27')][_0x80b1('0x33')]+'%'};return _0x2ec821;}})});}_0x38761f=_[_0x80b1('0x35')]({},_0x38761f,_0x445170[_0x80b1('0x38')]);var _0x1cb03d={'where':_0x38761f[_0x80b1('0x34')]};return db[_0x80b1('0x21')][_0x80b1('0x19')](_0x1cb03d)[_0x80b1('0xb')](function(_0x3e29de){_0x56f642[_0x80b1('0x19')]=_0x3e29de;if(_0x445170[_0x80b1('0x27')]['includeAll']){_0x38761f[_0x80b1('0x39')]=[{'all':!![]}];}return db[_0x80b1('0x21')][_0x80b1('0x3a')](_0x38761f);})[_0x80b1('0xb')](function(_0x5dc2f3){_0x56f642[_0x80b1('0x3b')]=_0x5dc2f3;return _0x56f642;})[_0x80b1('0xb')](respondWithFilteredResult(_0x149b45,_0x38761f))[_0x80b1('0x14')](handleError(_0x149b45,null));};exports[_0x80b1('0x3c')]=function(_0x150b15,_0x517e97){var _0x3e9846={'raw':!![],'where':{'id':_0x150b15['params']['id']}},_0x56b019={};_0x56b019['model']=_[_0x80b1('0x28')](db['Network']['rawAttributes']);_0x56b019[_0x80b1('0x27')]=_[_0x80b1('0x28')](_0x150b15[_0x80b1('0x27')]);_0x56b019['filters']=_[_0x80b1('0x29')](_0x56b019[_0x80b1('0x25')],_0x56b019[_0x80b1('0x27')]);_0x3e9846[_0x80b1('0x2a')]=_[_0x80b1('0x29')](_0x56b019['model'],qs[_0x80b1('0x2b')](_0x150b15[_0x80b1('0x27')]['fields']));_0x3e9846[_0x80b1('0x2a')]=_0x3e9846[_0x80b1('0x2a')][_0x80b1('0x2c')]?_0x3e9846[_0x80b1('0x2a')]:_0x56b019[_0x80b1('0x25')];if(_0x150b15[_0x80b1('0x27')][_0x80b1('0x3d')]){_0x3e9846['include']=[{'all':!![]}];}_0x3e9846=_[_0x80b1('0x35')]({},_0x3e9846,_0x150b15['options']);return db[_0x80b1('0x21')]['find'](_0x3e9846)[_0x80b1('0xb')](handleEntityNotFound(_0x517e97,null))[_0x80b1('0xb')](respondWithResult(_0x517e97,null))[_0x80b1('0x14')](handleError(_0x517e97,null));};exports['create']=function(_0x432a4b,_0x3c2b27){var _0x2e65cd;return db['Network'][_0x80b1('0x3e')](_0x432a4b[_0x80b1('0x3f')],{'raw':!![]})[_0x80b1('0xb')](function(_0x2b57af){_0x2e65cd=_0x2b57af;return db[_0x80b1('0x21')][_0x80b1('0x3a')]({'where':{'type':_0x432a4b[_0x80b1('0x3f')]['type']},'raw':!![]});})['then'](function(_0xdf33b3){if(_0x2e65cd[_0x80b1('0x36')][_0x80b1('0x40')]()==_0x80b1('0x41')){var _0x36dba4=fs['readFileSync'](path[_0x80b1('0x42')](config[_0x80b1('0x43')],_0x80b1('0x44')),_0x80b1('0x45'));var _0x5e8d7d=ejs[_0x80b1('0x46')](_0x36dba4,{'networks':_0xdf33b3||[]});fs['writeFileSync'](_0x80b1('0x47'),_0x5e8d7d);return respondWithRpcPromise(_0x80b1('0x48'),'create',{'module':_0x80b1('0x49')});}else if(_0x2e65cd[_0x80b1('0x36')][_0x80b1('0x40')]()=='TURN'){var _0x3c277b=fs[_0x80b1('0x4a')](path[_0x80b1('0x42')](config[_0x80b1('0x43')],'server/files/templates/turn_multiple.ejs'),_0x80b1('0x45'));var _0x46040a=ejs[_0x80b1('0x46')](_0x3c277b,{'networks':_0xdf33b3||[]});fs[_0x80b1('0x4b')](_0x80b1('0x4c'),_0x46040a);return respondWithRpcPromise('Reload',_0x80b1('0x3e'),{'module':_0x80b1('0x49')});}else{var _0x5a2916=fs[_0x80b1('0x4a')](path['join'](config[_0x80b1('0x43')],_0x80b1('0x4d')),'utf8');var _0x2127f7=ejs['render'](_0x5a2916,{'networks':_0xdf33b3||[]});fs[_0x80b1('0x4b')](util[_0x80b1('0x4e')](_0x80b1('0x4f'),_0x432a4b[_0x80b1('0x3f')][_0x80b1('0x36')]['toLowerCase']()),_0x2127f7);return respondWithRpcPromise('Reload','create',{'module':_0x80b1('0x50')});}})[_0x80b1('0xb')](function(){return _0x2e65cd;})[_0x80b1('0xb')](respondWithResult(_0x3c2b27,0xc9))[_0x80b1('0x14')](handleError(_0x3c2b27,null));};exports[_0x80b1('0x51')]=function(_0x4fd828,_0x2e99fd){var _0xce8f57;return db[_0x80b1('0x21')][_0x80b1('0x52')]({'where':{'id':_0x4fd828[_0x80b1('0x53')]['id']}})[_0x80b1('0xb')](handleEntityNotFound(_0x2e99fd,null))['then'](saveUpdates(_0x4fd828['body'],null))[_0x80b1('0xb')](function(_0x1017a5){if(_0x1017a5){_0xce8f57=_0x1017a5;return db['Network'][_0x80b1('0x3a')]({'where':{'type':_0xce8f57['type']},'raw':!![]});}return null;})[_0x80b1('0xb')](function(_0x4f7dce){if(_0xce8f57[_0x80b1('0x36')][_0x80b1('0x40')]()==_0x80b1('0x41')){var _0x269708=fs[_0x80b1('0x4a')](path[_0x80b1('0x42')](config[_0x80b1('0x43')],_0x80b1('0x44')),'utf8');var _0x8a07a6=ejs[_0x80b1('0x46')](_0x269708,{'networks':_0x4f7dce||[]});fs[_0x80b1('0x4b')](_0x80b1('0x47'),_0x8a07a6);return respondWithRpcPromise('Reload',_0x80b1('0x51'),{'module':_0x80b1('0x49')});}else if(_0xce8f57[_0x80b1('0x36')]['toUpperCase']()=='TURN'){var _0x9040c3=fs[_0x80b1('0x4a')](path[_0x80b1('0x42')](config[_0x80b1('0x43')],_0x80b1('0x54')),_0x80b1('0x45'));var _0x2809d6=ejs[_0x80b1('0x46')](_0x9040c3,{'networks':_0x4f7dce||[]});fs['writeFileSync'](_0x80b1('0x4c'),_0x2809d6);return respondWithRpcPromise(_0x80b1('0x48'),_0x80b1('0x51'),{'module':_0x80b1('0x49')});}else{var _0x2ec07e=fs[_0x80b1('0x4a')](path[_0x80b1('0x42')](config[_0x80b1('0x43')],_0x80b1('0x4d')),_0x80b1('0x45'));var _0x5a8aef=ejs[_0x80b1('0x46')](_0x2ec07e,{'networks':_0x4f7dce||[]});fs[_0x80b1('0x4b')](util['format'](_0x80b1('0x4f'),_0x4fd828[_0x80b1('0x3f')][_0x80b1('0x36')][_0x80b1('0x55')]()),_0x5a8aef);return respondWithRpcPromise('Reload','update',{'module':_0x80b1('0x50')});}})[_0x80b1('0xb')](function(_0x13c324){if(_0x13c324){return _0xce8f57;}return null;})[_0x80b1('0xb')](respondWithResult(_0x2e99fd,null))['catch'](handleError(_0x2e99fd,null));};exports[_0x80b1('0x56')]=function(_0x15ae0e,_0x438b18){var _0x4721e6;return db[_0x80b1('0x21')]['find']({'where':{'id':_0x15ae0e['params']['id']}})[_0x80b1('0xb')](function(_0x2ee9a2){_0x4721e6=_0x2ee9a2;return _0x2ee9a2;})['then'](handleEntityNotFound(_0x438b18,null))[_0x80b1('0xb')](removeEntity(_0x438b18,null))[_0x80b1('0xb')](function(){if(_0x4721e6){return db[_0x80b1('0x21')]['findAll']({'where':{'type':_0x4721e6[_0x80b1('0x36')]},'raw':!![]});}})[_0x80b1('0xb')](function(_0x4dc315){if(_0x4721e6[_0x80b1('0x36')]['toUpperCase']()=='STUN'){var _0x11a256=fs[_0x80b1('0x4a')](path['join'](config[_0x80b1('0x43')],'server/files/templates/stun_multiple.ejs'),_0x80b1('0x45'));var _0x53ee28=ejs['render'](_0x11a256,{'networks':_0x4dc315||[]});fs[_0x80b1('0x4b')]('/etc/asterisk/stun_xcally.conf',_0x53ee28);return respondWithRpcPromise(_0x80b1('0x48'),_0x80b1('0x56'),{'module':_0x80b1('0x49')});}else if(_0x4721e6['type']['toUpperCase']()==_0x80b1('0x57')){var _0x1b63b6=fs[_0x80b1('0x4a')](path[_0x80b1('0x42')](config[_0x80b1('0x43')],'server/files/templates/turn_multiple.ejs'),_0x80b1('0x45'));var _0x4ab61b=ejs[_0x80b1('0x46')](_0x1b63b6,{'networks':_0x4dc315||[]});fs[_0x80b1('0x4b')](_0x80b1('0x4c'),_0x4ab61b);return respondWithRpcPromise(_0x80b1('0x48'),_0x80b1('0x56'),{'module':_0x80b1('0x49')});}else{var _0x7ce200=fs[_0x80b1('0x4a')](path['join'](config[_0x80b1('0x43')],_0x80b1('0x4d')),_0x80b1('0x45'));var _0x2fb440=ejs[_0x80b1('0x46')](_0x7ce200,{'networks':_0x4dc315||[]});fs[_0x80b1('0x4b')](util[_0x80b1('0x4e')]('/etc/asterisk/sip_xcally_%s.conf',_0x4721e6[_0x80b1('0x36')][_0x80b1('0x55')]()),_0x2fb440);return respondWithRpcPromise(_0x80b1('0x48'),'destroy',{'module':_0x80b1('0x50')});}})[_0x80b1('0x14')](handleError(_0x438b18,null));};
\ No newline at end of file
index 86ebdb5..32d4e0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa902=['../../config/logger','api','moment','request-promise','../../config/environment','./network.attributes','exports','define','network','lodash','util'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xa902,0x8d));var _0x2a90=function(_0x55d50c,_0x2ac2b4){_0x55d50c=_0x55d50c-0x0;var _0xee1ce1=_0xa902[_0x55d50c];return _0xee1ce1;};'use strict';var _=require(_0x2a90('0x0'));var util=require(_0x2a90('0x1'));var logger=require(_0x2a90('0x2'))(_0x2a90('0x3'));var moment=require(_0x2a90('0x4'));var BPromise=require('bluebird');var rp=require(_0x2a90('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2a90('0x6'));var attributes=require(_0x2a90('0x7'));module[_0x2a90('0x8')]=function(_0x21e1d2,_0x4a32c7){return _0x21e1d2[_0x2a90('0x9')]('Network',attributes,{'tableName':_0x2a90('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b73=['../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','Network','network','util'];(function(_0x2b56da,_0x8b6972){var _0x5a1977=function(_0x2f309d){while(--_0x2f309d){_0x2b56da['push'](_0x2b56da['shift']());}};_0x5a1977(++_0x8b6972);}(_0x1b73,0x1d5));var _0x31b7=function(_0x143e96,_0x410479){_0x143e96=_0x143e96-0x0;var _0x3a4ab4=_0x1b73[_0x143e96];return _0x3a4ab4;};'use strict';var _=require('lodash');var util=require(_0x31b7('0x0'));var logger=require(_0x31b7('0x1'))(_0x31b7('0x2'));var moment=require(_0x31b7('0x3'));var BPromise=require('bluebird');var rp=require(_0x31b7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x31b7('0x5'));var config=require(_0x31b7('0x6'));var attributes=require('./network.attributes');module[_0x31b7('0x7')]=function(_0x3d058f,_0x15c31e){return _0x3d058f['define'](_0x31b7('0x8'),attributes,{'tableName':_0x31b7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index efb4127..6462251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7a54,0x106));var _0x47a5=function(_0x44ca11,_0x4f2109){_0x44ca11=_0x44ca11-0x0;var _0x190443=_0x7a54[_0x44ca11];return _0x190443;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x473e6d,_0xd89c5){var _0x4c6db5=function(_0x2ea83d){while(--_0x2ea83d){_0x473e6d['push'](_0x473e6d['shift']());}};_0x4c6db5(++_0xd89c5);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
index 5733b77..847fd2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa242=['index','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications','post','addDisposition','/:id/canned_answers','addAnswer','/:id/notify','notify','addApplications','addAgents','send','put','update','delete','destroy','removeDispositions','removeAnswers','/:id/users','removeAgents','exports','util','connect-timeout','express','Router','../../components/auth/service','./openchannelAccount.controller','get','isAuthenticated'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa242,0x19c));var _0x2a24=function(_0x2ec05f,_0x3b757b){_0x2ec05f=_0x2ec05f-0x0;var _0x1c4f67=_0xa242[_0x2ec05f];return _0x1c4f67;};'use strict';var multer=require('multer');var util=require(_0x2a24('0x0'));var path=require('path');var timeout=require(_0x2a24('0x1'));var express=require(_0x2a24('0x2'));var router=express[_0x2a24('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2a24('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2a24('0x5'));router[_0x2a24('0x6')]('/',auth[_0x2a24('0x7')](),controller[_0x2a24('0x8')]);router[_0x2a24('0x6')]('/describe',auth[_0x2a24('0x7')](),controller[_0x2a24('0x9')]);router[_0x2a24('0x6')](_0x2a24('0xa'),auth['isAuthenticated'](),controller[_0x2a24('0xb')]);router[_0x2a24('0x6')](_0x2a24('0xc'),auth[_0x2a24('0x7')](),controller[_0x2a24('0xd')]);router[_0x2a24('0x6')]('/:id/canned_answers',auth[_0x2a24('0x7')](),controller[_0x2a24('0xe')]);router[_0x2a24('0x6')](_0x2a24('0xf'),auth[_0x2a24('0x7')](),controller[_0x2a24('0x10')]);router['get']('/:id/interactions',auth[_0x2a24('0x7')](),controller['getInteractions']);router['get']('/:id/users',auth[_0x2a24('0x7')](),controller['getAgents']);router[_0x2a24('0x11')]('/',auth[_0x2a24('0x7')](),controller['create']);router[_0x2a24('0x11')](_0x2a24('0xc'),auth[_0x2a24('0x7')](),controller[_0x2a24('0x12')]);router['post'](_0x2a24('0x13'),auth['isAuthenticated'](),controller[_0x2a24('0x14')]);router['post'](_0x2a24('0x15'),controller[_0x2a24('0x16')]);router[_0x2a24('0x11')](_0x2a24('0xf'),auth['isAuthenticated'](),controller[_0x2a24('0x17')]);router['post']('/:id/users',auth[_0x2a24('0x7')](),controller[_0x2a24('0x18')]);router[_0x2a24('0x11')]('/:id/send',auth['isAuthenticated'](),controller[_0x2a24('0x19')]);router[_0x2a24('0x1a')]('/:id',auth[_0x2a24('0x7')](),controller[_0x2a24('0x1b')]);router[_0x2a24('0x1c')](_0x2a24('0xa'),auth[_0x2a24('0x7')](),controller[_0x2a24('0x1d')]);router[_0x2a24('0x1c')](_0x2a24('0xc'),auth[_0x2a24('0x7')](),controller[_0x2a24('0x1e')]);router[_0x2a24('0x1c')](_0x2a24('0x13'),auth[_0x2a24('0x7')](),controller[_0x2a24('0x1f')]);router['delete'](_0x2a24('0x20'),auth[_0x2a24('0x7')](),controller[_0x2a24('0x21')]);module[_0x2a24('0x22')]=router;
\ No newline at end of file
+var _0x065e=['isAuthenticated','index','get','/:id','show','getDispositions','/:id/canned_answers','getAnswers','getApplications','getInteractions','/:id/users','post','create','/:id/dispositions','addDisposition','/:id/notify','notify','/:id/applications','addApplications','addAgents','put','update','delete','destroy','removeDispositions','removeAgents','exports','multer','express','Router','fs-extra','../../config/environment','./openchannelAccount.controller'];(function(_0x2c4bf2,_0xe2c323){var _0x2000d=function(_0x30d1b7){while(--_0x30d1b7){_0x2c4bf2['push'](_0x2c4bf2['shift']());}};_0x2000d(++_0xe2c323);}(_0x065e,0x1a7));var _0xe065=function(_0x194a56,_0x4ff13c){_0x194a56=_0x194a56-0x0;var _0x574e25=_0x065e[_0x194a56];return _0x574e25;};'use strict';var multer=require(_0xe065('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe065('0x1'));var router=express[_0xe065('0x2')]();var fs_extra=require(_0xe065('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xe065('0x4'));var controller=require(_0xe065('0x5'));router['get']('/',auth[_0xe065('0x6')](),controller[_0xe065('0x7')]);router[_0xe065('0x8')]('/describe',auth[_0xe065('0x6')](),controller['describe']);router[_0xe065('0x8')](_0xe065('0x9'),auth[_0xe065('0x6')](),controller[_0xe065('0xa')]);router[_0xe065('0x8')]('/:id/dispositions',auth[_0xe065('0x6')](),controller[_0xe065('0xb')]);router[_0xe065('0x8')](_0xe065('0xc'),auth[_0xe065('0x6')](),controller[_0xe065('0xd')]);router['get']('/:id/applications',auth[_0xe065('0x6')](),controller[_0xe065('0xe')]);router[_0xe065('0x8')]('/:id/interactions',auth[_0xe065('0x6')](),controller[_0xe065('0xf')]);router[_0xe065('0x8')](_0xe065('0x10'),auth[_0xe065('0x6')](),controller['getAgents']);router[_0xe065('0x11')]('/',auth[_0xe065('0x6')](),controller[_0xe065('0x12')]);router[_0xe065('0x11')](_0xe065('0x13'),auth[_0xe065('0x6')](),controller[_0xe065('0x14')]);router['post'](_0xe065('0xc'),auth[_0xe065('0x6')](),controller['addAnswer']);router[_0xe065('0x11')](_0xe065('0x15'),controller[_0xe065('0x16')]);router[_0xe065('0x11')](_0xe065('0x17'),auth[_0xe065('0x6')](),controller[_0xe065('0x18')]);router['post'](_0xe065('0x10'),auth['isAuthenticated'](),controller[_0xe065('0x19')]);router[_0xe065('0x11')]('/:id/send',auth[_0xe065('0x6')](),controller['send']);router[_0xe065('0x1a')](_0xe065('0x9'),auth[_0xe065('0x6')](),controller[_0xe065('0x1b')]);router[_0xe065('0x1c')](_0xe065('0x9'),auth[_0xe065('0x6')](),controller[_0xe065('0x1d')]);router[_0xe065('0x1c')]('/:id/dispositions',auth[_0xe065('0x6')](),controller[_0xe065('0x1e')]);router[_0xe065('0x1c')](_0xe065('0xc'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0xe065('0x1c')]('/:id/users',auth[_0xe065('0x6')](),controller[_0xe065('0x1f')]);module[_0xe065('0x20')]=router;
\ No newline at end of file
index c329726..decc93b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37bc=['name','STRING','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','sequelize','randomstring','exports'];(function(_0xbd12ed,_0x27581b){var _0x1ccdec=function(_0x58bb6c){while(--_0x58bb6c){_0xbd12ed['push'](_0xbd12ed['shift']());}};_0x1ccdec(++_0x27581b);}(_0x37bc,0x185));var _0xc37b=function(_0x4b0d73,_0x459902){_0x4b0d73=_0x4b0d73-0x0;var _0xac39aa=_0x37bc[_0x4b0d73];return _0xac39aa;};'use strict';var Sequelize=require(_0xc37b('0x0'));var rs=require(_0xc37b('0x1'));module[_0xc37b('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0xc37b('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xc37b('0x4')]},'token':{'type':Sequelize[_0xc37b('0x4')],'defaultValue':function(){return rs[_0xc37b('0x5')]();}},'replyUri':{'type':Sequelize[_0xc37b('0x4')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xc37b('0x4')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xc37b('0x6')],'defaultValue':function(){return _0xc37b('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc37b('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc37b('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0xc37b('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xc37b('0x4')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc37b('0x9')],'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[_0xc37b('0x9')],'allowNull':!![],'defaultValue':null,'comment':_0xc37b('0xa')},'mandatoryDisposition':{'type':Sequelize[_0xc37b('0x8')],'defaultValue':![],'comment':_0xc37b('0xb'),'set':function(_0x4ebf66){if(!_0x4ebf66)this['setDataValue'](_0xc37b('0xc'),null);this[_0xc37b('0xd')]('mandatoryDisposition',_0x4ebf66);}}};
\ No newline at end of file
+var _0x2d5f=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','randomstring','exports','STRING','name','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x1eea1d,_0x47344c){var _0xe6aba1=function(_0x301004){while(--_0x301004){_0x1eea1d['push'](_0x1eea1d['shift']());}};_0xe6aba1(++_0x47344c);}(_0x2d5f,0x1bd));var _0xf2d5=function(_0x14b4b2,_0x42aed0){_0x14b4b2=_0x14b4b2-0x0;var _0x2710fd=_0x2d5f[_0x14b4b2];return _0x2710fd;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xf2d5('0x0'));module[_0xf2d5('0x1')]={'name':{'type':Sequelize[_0xf2d5('0x2')],'unique':_0xf2d5('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xf2d5('0x2')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0xf2d5('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xf2d5('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xf2d5('0x4')],'defaultValue':function(){return _0xf2d5('0x5');}},'notificationSound':{'type':Sequelize[_0xf2d5('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf2d5('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf2d5('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0xf2d5('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0xf2d5('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf2d5('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf2d5('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf2d5('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0xf2d5('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xf2d5('0x6')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x589856){if(!_0x589856)this[_0xf2d5('0x9')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0xf2d5('0xa'),_0x589856);}}};
\ No newline at end of file
index c80655d..55654b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf02c=['apply','reject','save','update','then','destroy','get','OpenchannelAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','OpenchannelAccount','includeAll','include','findAll','rows','show','params','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','hasOwnProperty','order','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','notify','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','Contacts','DESC','OpenchannelApplication','List','account','Applications','applications','orderBy','priority','asc','firstName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','contact','lastName','messageId','created','autoclose','push','close','unmanaged','OpenchannelMessage','AttachmentId','interaction','UserId','User','unshift','agent','waitForTheAssignedAgent','*,*,*,*','queueId','queue','waitForTheAssignedQueue','startRouting','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','Tag','color','tag','omit','userOpenchannelAccount:save','removeAgents','isArray','emit','userOpenchannelAccount:remove','getAgents','CmList','out','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','message','info','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range'];(function(_0x45347a,_0x546c3e){var _0x24726e=function(_0x3fbb67){while(--_0x3fbb67){_0x45347a['push'](_0x45347a['shift']());}};_0x24726e(++_0x546c3e);}(_0xf02c,0x92));var _0xcf02=function(_0x46ea22,_0x1f2cd2){_0x46ea22=_0x46ea22-0x0;var _0x278a09=_0xf02c[_0x46ea22];return _0x278a09;};'use strict';var emlformat=require(_0xcf02('0x0'));var rimraf=require(_0xcf02('0x1'));var zipdir=require(_0xcf02('0x2'));var jsonpatch=require(_0xcf02('0x3'));var rp=require(_0xcf02('0x4'));var moment=require(_0xcf02('0x5'));var BPromise=require(_0xcf02('0x6'));var Mustache=require(_0xcf02('0x7'));var util=require(_0xcf02('0x8'));var path=require(_0xcf02('0x9'));var sox=require(_0xcf02('0xa'));var csv=require(_0xcf02('0xb'));var ejs=require(_0xcf02('0xc'));var fs=require('fs');var fs_extra=require(_0xcf02('0xd'));var _=require(_0xcf02('0xe'));var squel=require('squel');var crypto=require(_0xcf02('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcf02('0x10'));var Papa=require(_0xcf02('0x11'));var Redis=require(_0xcf02('0x12'));var authService=require(_0xcf02('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xcf02('0x14'));var hardwareService=require(_0xcf02('0x15'));var logger=require(_0xcf02('0x16'))('api');var utils=require('../../config/utils');var config=require(_0xcf02('0x17'));var licenseUtil=require(_0xcf02('0x18'));var db=require(_0xcf02('0x19'))['db'];config[_0xcf02('0x1a')]=_[_0xcf02('0x1b')](config['redis'],{'host':_0xcf02('0x1c'),'port':0x18eb});var socket=require(_0xcf02('0x1d'))(new Redis(config[_0xcf02('0x1a')]));require(_0xcf02('0x1e'))[_0xcf02('0x1f')](socket);var jayson=require(_0xcf02('0x20'));var client=jayson[_0xcf02('0x21')]['http']({'port':0x232c});var client9002=jayson[_0xcf02('0x21')][_0xcf02('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x275870,_0x5b2512,_0x554499,_0x419418){return new BPromise(function(_0x59f337,_0x14b378){var _0x4a2d89=_0x419418||client;return _0x4a2d89['request'](_0x275870,_0x554499)['then'](function(_0x2860fd){logger['info'](_0xcf02('0x23'),_0x5b2512,_0xcf02('0x24'));logger[_0xcf02('0x25')](_0xcf02('0x26'),_0x5b2512,'request\x20sent',JSON['stringify'](_0x2860fd));if(_0x2860fd[_0xcf02('0x27')]){if(_0x2860fd[_0xcf02('0x27')]['code']===0x1f4){logger[_0xcf02('0x27')](_0xcf02('0x23'),_0x5b2512,_0x2860fd[_0xcf02('0x27')][_0xcf02('0x28')]);return _0x14b378(_0x2860fd['error'][_0xcf02('0x28')]);}logger[_0xcf02('0x27')](_0xcf02('0x23'),_0x5b2512,_0x2860fd[_0xcf02('0x27')][_0xcf02('0x28')]);return _0x59f337(_0x2860fd[_0xcf02('0x27')][_0xcf02('0x28')]);}else{logger[_0xcf02('0x29')]('OpenchannelAccount,\x20%s,\x20%s',_0x5b2512,'request\x20sent');_0x59f337(_0x2860fd['result'][_0xcf02('0x28')]);}})[_0xcf02('0x2a')](function(_0x2fd260){logger[_0xcf02('0x27')](_0xcf02('0x23'),_0x5b2512,_0x2fd260);_0x14b378(_0x2fd260);});});}function respondWithStatusCode(_0x21a6ca,_0x207cfe){_0x207cfe=_0x207cfe||0xcc;return function(_0x1cccb0){if(_0x1cccb0){return _0x21a6ca[_0xcf02('0x2b')](_0x207cfe);}return _0x21a6ca[_0xcf02('0x2c')](_0x207cfe)[_0xcf02('0x2d')]();};}function respondWithResult(_0x58c2a3,_0x54716d){_0x54716d=_0x54716d||0xc8;return function(_0x2f103e){if(_0x2f103e){return _0x58c2a3[_0xcf02('0x2c')](_0x54716d)[_0xcf02('0x2e')](_0x2f103e);}};}function respondWithFilteredResult(_0x210256,_0x3cc47e){return function(_0x5eb4c5){if(_0x5eb4c5){var _0x2b8bc6=typeof _0x3cc47e[_0xcf02('0x2f')]===_0xcf02('0x30')&&typeof _0x3cc47e['limit']===_0xcf02('0x30');var _0x174f90=_0x5eb4c5[_0xcf02('0x31')];var _0x5af4c3=_0x2b8bc6?0x0:_0x3cc47e[_0xcf02('0x2f')];var _0x320d89=_0x2b8bc6?_0x5eb4c5['count']:_0x3cc47e[_0xcf02('0x2f')]+_0x3cc47e[_0xcf02('0x32')];var _0x5bb15e;if(_0x320d89>=_0x174f90){_0x320d89=_0x174f90;_0x5bb15e=0xc8;}else{_0x5bb15e=0xce;}_0x210256[_0xcf02('0x2c')](_0x5bb15e);return _0x210256[_0xcf02('0x33')](_0xcf02('0x34'),_0x5af4c3+'-'+_0x320d89+'/'+_0x174f90)[_0xcf02('0x2e')](_0x5eb4c5);}return null;};}function patchUpdates(_0x474221){return function(_0x578a26){try{jsonpatch[_0xcf02('0x35')](_0x578a26,_0x474221,!![]);}catch(_0x285d45){return BPromise[_0xcf02('0x36')](_0x285d45);}return _0x578a26[_0xcf02('0x37')]();};}function saveUpdates(_0x18f1a9,_0x5007ae){return function(_0x5f23f0){if(_0x5f23f0){return _0x5f23f0[_0xcf02('0x38')](_0x18f1a9)[_0xcf02('0x39')](function(_0x135ec8){return _0x135ec8;});}return null;};}function removeEntity(_0x47c1d8,_0x5b912f){return function(_0x17e96f){if(_0x17e96f){return _0x17e96f[_0xcf02('0x3a')]()[_0xcf02('0x39')](function(){var _0x2775b8=_0x17e96f[_0xcf02('0x3b')]({'plain':!![]});var _0x5b0571=_0xcf02('0x3c');return db[_0xcf02('0x3d')][_0xcf02('0x3a')]({'where':{'type':_0x5b0571,'resourceId':_0x2775b8['id']}})['then'](function(){return _0x17e96f;});})[_0xcf02('0x39')](function(){_0x47c1d8[_0xcf02('0x2c')](0xcc)[_0xcf02('0x2d')]();});}};}function handleEntityNotFound(_0x2e418e,_0x1a0cca){return function(_0x4b2c19){if(!_0x4b2c19){_0x2e418e[_0xcf02('0x2b')](0x194);}return _0x4b2c19;};}function handleError(_0xec7844,_0x568953){_0x568953=_0x568953||0x1f4;return function(_0x3bb89a){logger[_0xcf02('0x27')](_0x3bb89a[_0xcf02('0x3e')]);if(_0x3bb89a[_0xcf02('0x3f')]){delete _0x3bb89a['name'];}_0xec7844[_0xcf02('0x2c')](_0x568953)[_0xcf02('0x40')](_0x3bb89a);};}exports[_0xcf02('0x41')]=function(_0x43af50,_0x3d6d1d){var _0x4e7da9={'include':[{'model':db[_0xcf02('0x42')],'as':_0xcf02('0x43')}]},_0x4b58cb={},_0xecca8f={'count':0x0,'rows':[]};var _0x301630=_[_0xcf02('0x44')](db['OpenchannelAccount'][_0xcf02('0x45')],function(_0x4ec645){return{'name':_0x4ec645[_0xcf02('0x46')],'type':_0x4ec645[_0xcf02('0x47')][_0xcf02('0x48')]};});_0x4b58cb[_0xcf02('0x49')]=_['map'](_0x301630,'name');_0x4b58cb[_0xcf02('0x4a')]=_[_0xcf02('0x4b')](_0x43af50[_0xcf02('0x4a')]);_0x4b58cb[_0xcf02('0x4c')]=_[_0xcf02('0x4d')](_0x4b58cb[_0xcf02('0x49')],_0x4b58cb['query']);_0x4e7da9[_0xcf02('0x4e')]=_[_0xcf02('0x4d')](_0x4b58cb[_0xcf02('0x49')],qs[_0xcf02('0x4f')](_0x43af50[_0xcf02('0x4a')][_0xcf02('0x4f')]));_0x4e7da9['attributes']=_0x4e7da9[_0xcf02('0x4e')]['length']?_0x4e7da9[_0xcf02('0x4e')]:_0x4b58cb[_0xcf02('0x49')];if(!_0x43af50[_0xcf02('0x4a')]['hasOwnProperty'](_0xcf02('0x50'))){_0x4e7da9['limit']=qs[_0xcf02('0x32')](_0x43af50['query'][_0xcf02('0x32')]);_0x4e7da9[_0xcf02('0x2f')]=qs[_0xcf02('0x2f')](_0x43af50[_0xcf02('0x4a')]['offset']);}_0x4e7da9['order']=qs[_0xcf02('0x51')](_0x43af50[_0xcf02('0x4a')][_0xcf02('0x51')]);_0x4e7da9[_0xcf02('0x52')]=qs[_0xcf02('0x4c')](_[_0xcf02('0x53')](_0x43af50['query'],_0x4b58cb[_0xcf02('0x4c')]),_0x301630);if(_0x43af50[_0xcf02('0x4a')][_0xcf02('0x54')]){_0x4e7da9[_0xcf02('0x52')]=_[_0xcf02('0x55')](_0x4e7da9[_0xcf02('0x52')],{'$or':_[_0xcf02('0x44')](_0x301630,function(_0x52b580){if(_0x52b580['type']!==_0xcf02('0x56')){var _0x58d9c7={};_0x58d9c7[_0x52b580[_0xcf02('0x3f')]]={'$like':'%'+_0x43af50['query'][_0xcf02('0x54')]+'%'};return _0x58d9c7;}})});}_0x4e7da9=_[_0xcf02('0x55')]({},_0x4e7da9,_0x43af50[_0xcf02('0x57')]);var _0x175765={'where':_0x4e7da9[_0xcf02('0x52')]};return db[_0xcf02('0x58')][_0xcf02('0x31')](_0x175765)[_0xcf02('0x39')](function(_0x333c56){_0xecca8f[_0xcf02('0x31')]=_0x333c56;if(_0x43af50['query'][_0xcf02('0x59')]){_0x4e7da9[_0xcf02('0x5a')]=[{'all':!![]}];}return db[_0xcf02('0x58')][_0xcf02('0x5b')](_0x4e7da9);})['then'](function(_0x13d8f0){_0xecca8f[_0xcf02('0x5c')]=_0x13d8f0;return _0xecca8f;})[_0xcf02('0x39')](respondWithFilteredResult(_0x3d6d1d,_0x4e7da9))[_0xcf02('0x2a')](handleError(_0x3d6d1d,null));};exports[_0xcf02('0x5d')]=function(_0x22529a,_0x256fa1){var _0x28d1e8={'raw':![],'where':{'id':_0x22529a[_0xcf02('0x5e')]['id']},'include':[{'model':db[_0xcf02('0x42')],'as':_0xcf02('0x43')}]},_0x305b8c={};_0x305b8c['model']=_[_0xcf02('0x4b')](db[_0xcf02('0x58')][_0xcf02('0x45')]);_0x305b8c[_0xcf02('0x4a')]=_[_0xcf02('0x4b')](_0x22529a['query']);_0x305b8c[_0xcf02('0x4c')]=_['intersection'](_0x305b8c[_0xcf02('0x49')],_0x305b8c[_0xcf02('0x4a')]);_0x28d1e8['attributes']=_[_0xcf02('0x4d')](_0x305b8c[_0xcf02('0x49')],qs[_0xcf02('0x4f')](_0x22529a[_0xcf02('0x4a')][_0xcf02('0x4f')]));_0x28d1e8[_0xcf02('0x4e')]=_0x28d1e8['attributes'][_0xcf02('0x5f')]?_0x28d1e8[_0xcf02('0x4e')]:_0x305b8c['model'];if(_0x22529a['query'][_0xcf02('0x59')]){_0x28d1e8['include']=[{'all':!![]}];}_0x28d1e8=_[_0xcf02('0x55')]({},_0x28d1e8,_0x22529a[_0xcf02('0x57')]);return db[_0xcf02('0x58')]['find'](_0x28d1e8)[_0xcf02('0x39')](handleEntityNotFound(_0x256fa1,null))[_0xcf02('0x39')](respondWithResult(_0x256fa1,null))['catch'](handleError(_0x256fa1,null));};exports['create']=function(_0x44be67,_0x361c89){return db[_0xcf02('0x58')][_0xcf02('0x60')](_0x44be67[_0xcf02('0x61')],{})[_0xcf02('0x39')](function(_0x4e34e0){var _0x171f18=_0x44be67[_0xcf02('0x62')][_0xcf02('0x3b')]({'plain':!![]});if(!_0x171f18)throw new Error(_0xcf02('0x63'));if(_0x171f18[_0xcf02('0x64')]===_0xcf02('0x62')){var _0x404d0e=_0x4e34e0[_0xcf02('0x3b')]({'plain':!![]});var _0x56bc68=_0xcf02('0x3c');return db['UserProfileSection'][_0xcf02('0x65')]({'where':{'name':_0x56bc68,'userProfileId':_0x171f18[_0xcf02('0x66')]},'raw':!![]})[_0xcf02('0x39')](function(_0x261637){if(_0x261637&&_0x261637[_0xcf02('0x67')]===0x0){return db['UserProfileResource'][_0xcf02('0x60')]({'name':_0x404d0e['name'],'resourceId':_0x404d0e['id'],'type':_0x261637[_0xcf02('0x3f')],'sectionId':_0x261637['id']},{})['then'](function(){return _0x4e34e0;});}else{return _0x4e34e0;}})[_0xcf02('0x2a')](function(_0x3dba76){logger[_0xcf02('0x27')](_0xcf02('0x68'),_0x3dba76);throw _0x3dba76;});}return _0x4e34e0;})[_0xcf02('0x39')](respondWithResult(_0x361c89,0xc9))['catch'](handleError(_0x361c89,null));};exports[_0xcf02('0x38')]=function(_0x546f96,_0x329cd5){if(_0x546f96[_0xcf02('0x61')]['id']){delete _0x546f96['body']['id'];}return db[_0xcf02('0x58')]['find']({'where':{'id':_0x546f96[_0xcf02('0x5e')]['id']},'include':[{'model':db[_0xcf02('0x42')],'as':_0xcf02('0x43')}]})[_0xcf02('0x39')](handleEntityNotFound(_0x329cd5,null))[_0xcf02('0x39')](saveUpdates(_0x546f96[_0xcf02('0x61')],null))[_0xcf02('0x39')](respondWithResult(_0x329cd5,null))[_0xcf02('0x2a')](handleError(_0x329cd5,null));};exports[_0xcf02('0x3a')]=function(_0x315157,_0x12147d){return db[_0xcf02('0x58')]['find']({'where':{'id':_0x315157[_0xcf02('0x5e')]['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x12147d,null))['then'](removeEntity(_0x12147d,null))[_0xcf02('0x2a')](handleError(_0x12147d,null));};exports[_0xcf02('0x69')]=function(_0x2367e8,_0x30d33c){return db[_0xcf02('0x58')][_0xcf02('0x69')]()[_0xcf02('0x39')](respondWithResult(_0x30d33c,null))[_0xcf02('0x2a')](handleError(_0x30d33c,null));};exports[_0xcf02('0x6a')]=function(_0x18b257,_0x2f869d,_0x2d7324){if(_0x18b257[_0xcf02('0x61')]['id']){delete _0x18b257[_0xcf02('0x61')]['id'];}return db['OpenchannelAccount'][_0xcf02('0x65')]({'where':{'id':_0x18b257[_0xcf02('0x5e')]['id']}})['then'](handleEntityNotFound(_0x2f869d,null))[_0xcf02('0x39')](function(_0x5ca523){if(_0x5ca523){_0x18b257[_0xcf02('0x61')][_0xcf02('0x6b')]=_0x5ca523['id'];return db[_0xcf02('0x6c')][_0xcf02('0x60')](_0x18b257[_0xcf02('0x61')]);}})[_0xcf02('0x39')](respondWithResult(_0x2f869d,null))[_0xcf02('0x2a')](handleError(_0x2f869d,null));};exports[_0xcf02('0x6d')]=function(_0x29dec5,_0x5203aa,_0x331840){var _0x5df783={'raw':![],'where':{}};var _0x173841={};var _0x454d30={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x29dec5[_0xcf02('0x5e')]['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x5203aa,null))[_0xcf02('0x39')](function(_0xd0589){if(_0xd0589){_0x173841[_0xcf02('0x49')]=_[_0xcf02('0x4b')](db[_0xcf02('0x6c')][_0xcf02('0x45')]);_0x173841[_0xcf02('0x4a')]=_['keys'](_0x29dec5[_0xcf02('0x4a')]);_0x173841[_0xcf02('0x4c')]=_['intersection'](_0x173841[_0xcf02('0x49')],_0x173841[_0xcf02('0x4a')]);_0x5df783[_0xcf02('0x4e')]=_[_0xcf02('0x4d')](_0x173841[_0xcf02('0x49')],qs[_0xcf02('0x4f')](_0x29dec5['query'][_0xcf02('0x4f')]));_0x5df783[_0xcf02('0x4e')]=_0x5df783[_0xcf02('0x4e')]['length']?_0x5df783[_0xcf02('0x4e')]:_0x173841[_0xcf02('0x49')];if(!_0x29dec5['query'][_0xcf02('0x6e')]('nolimit')){_0x5df783[_0xcf02('0x32')]=qs['limit'](_0x29dec5[_0xcf02('0x4a')][_0xcf02('0x32')]);_0x5df783[_0xcf02('0x2f')]=qs[_0xcf02('0x2f')](_0x29dec5[_0xcf02('0x4a')][_0xcf02('0x2f')]);}_0x5df783[_0xcf02('0x6f')]=qs[_0xcf02('0x51')](_0x29dec5[_0xcf02('0x4a')][_0xcf02('0x51')]);_0x5df783['where']=qs[_0xcf02('0x4c')](_[_0xcf02('0x53')](_0x29dec5[_0xcf02('0x4a')],_0x173841['filters']));_0x5df783[_0xcf02('0x52')][_0xcf02('0x6b')]=_0xd0589['id'];if(_0x29dec5[_0xcf02('0x4a')]['filter']){_0x5df783[_0xcf02('0x52')]=_[_0xcf02('0x55')](_0x5df783[_0xcf02('0x52')],{'$or':_[_0xcf02('0x44')](_0x5df783[_0xcf02('0x4e')],function(_0x430aa8){var _0x3e308d={};_0x3e308d[_0x430aa8]={'$like':'%'+_0x29dec5[_0xcf02('0x4a')][_0xcf02('0x54')]+'%'};return _0x3e308d;})});}_0x5df783=_[_0xcf02('0x55')]({},_0x5df783,_0x29dec5[_0xcf02('0x57')]);return db[_0xcf02('0x6c')]['count']({'where':_0x5df783['where']})[_0xcf02('0x39')](function(_0x2b6cd9){_0x454d30['count']=_0x2b6cd9;if(_0x29dec5[_0xcf02('0x4a')]['includeAll']){_0x5df783[_0xcf02('0x5a')]=[{'all':!![]}];}return db[_0xcf02('0x6c')]['findAll'](_0x5df783);})[_0xcf02('0x39')](function(_0x52a803){_0x454d30[_0xcf02('0x5c')]=_0x52a803;return _0x454d30;});}})[_0xcf02('0x39')](respondWithFilteredResult(_0x5203aa,_0x5df783))['catch'](handleError(_0x5203aa,null));};exports[_0xcf02('0x70')]=function(_0x5d9c09,_0xe3fc74,_0x1b9beb){return db['OpenchannelAccount'][_0xcf02('0x65')]({'where':{'id':_0x5d9c09[_0xcf02('0x5e')]['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0xe3fc74,null))[_0xcf02('0x39')](function(_0x45679a){if(_0x45679a){return _0x45679a[_0xcf02('0x70')](_0x5d9c09[_0xcf02('0x4a')][_0xcf02('0x71')]);}})[_0xcf02('0x39')](respondWithStatusCode(_0xe3fc74,null))[_0xcf02('0x2a')](handleError(_0xe3fc74,null));};exports[_0xcf02('0x72')]=function(_0x1e34cb,_0x6df9f7,_0x1a7ac7){if(_0x1e34cb[_0xcf02('0x61')]['id']){delete _0x1e34cb[_0xcf02('0x61')]['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x1e34cb[_0xcf02('0x5e')]['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x6df9f7,null))[_0xcf02('0x39')](function(_0x321ca8){if(_0x321ca8){_0x1e34cb[_0xcf02('0x61')][_0xcf02('0x6b')]=_0x321ca8['id'];return db['CannedAnswer']['create'](_0x1e34cb[_0xcf02('0x61')]);}})[_0xcf02('0x39')](respondWithResult(_0x6df9f7,null))['catch'](handleError(_0x6df9f7,null));};exports[_0xcf02('0x73')]=function(_0x130038,_0x3377a0,_0x502b79){var _0x256d9e={'raw':![],'where':{}};var _0x52671f={};var _0x3b5745={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x130038[_0xcf02('0x5e')]['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x3377a0,null))[_0xcf02('0x39')](function(_0x2558ca){if(_0x2558ca){_0x52671f[_0xcf02('0x49')]=_['keys'](db[_0xcf02('0x74')][_0xcf02('0x45')]);_0x52671f[_0xcf02('0x4a')]=_['keys'](_0x130038['query']);_0x52671f[_0xcf02('0x4c')]=_[_0xcf02('0x4d')](_0x52671f['model'],_0x52671f[_0xcf02('0x4a')]);_0x256d9e[_0xcf02('0x4e')]=_[_0xcf02('0x4d')](_0x52671f[_0xcf02('0x49')],qs[_0xcf02('0x4f')](_0x130038[_0xcf02('0x4a')][_0xcf02('0x4f')]));_0x256d9e[_0xcf02('0x4e')]=_0x256d9e[_0xcf02('0x4e')][_0xcf02('0x5f')]?_0x256d9e[_0xcf02('0x4e')]:_0x52671f[_0xcf02('0x49')];if(!_0x130038[_0xcf02('0x4a')][_0xcf02('0x6e')](_0xcf02('0x50'))){_0x256d9e[_0xcf02('0x32')]=qs[_0xcf02('0x32')](_0x130038[_0xcf02('0x4a')][_0xcf02('0x32')]);_0x256d9e[_0xcf02('0x2f')]=qs[_0xcf02('0x2f')](_0x130038[_0xcf02('0x4a')]['offset']);}_0x256d9e[_0xcf02('0x6f')]=qs[_0xcf02('0x51')](_0x130038['query'][_0xcf02('0x51')]);_0x256d9e[_0xcf02('0x52')]=qs['filters'](_[_0xcf02('0x53')](_0x130038[_0xcf02('0x4a')],_0x52671f[_0xcf02('0x4c')]));_0x256d9e[_0xcf02('0x52')][_0xcf02('0x6b')]=_0x2558ca['id'];if(_0x130038[_0xcf02('0x4a')]['filter']){_0x256d9e[_0xcf02('0x52')]=_['merge'](_0x256d9e[_0xcf02('0x52')],{'$or':_[_0xcf02('0x44')](_0x256d9e[_0xcf02('0x4e')],function(_0x16848a){var _0x51b677={};_0x51b677[_0x16848a]={'$like':'%'+_0x130038[_0xcf02('0x4a')]['filter']+'%'};return _0x51b677;})});}_0x256d9e=_[_0xcf02('0x55')]({},_0x256d9e,_0x130038[_0xcf02('0x57')]);return db['CannedAnswer'][_0xcf02('0x31')]({'where':_0x256d9e[_0xcf02('0x52')]})[_0xcf02('0x39')](function(_0x5dcf1f){_0x3b5745[_0xcf02('0x31')]=_0x5dcf1f;if(_0x130038[_0xcf02('0x4a')]['includeAll']){_0x256d9e[_0xcf02('0x5a')]=[{'all':!![]}];}return db[_0xcf02('0x74')]['findAll'](_0x256d9e);})[_0xcf02('0x39')](function(_0x7253d9){_0x3b5745[_0xcf02('0x5c')]=_0x7253d9;return _0x3b5745;});}})[_0xcf02('0x39')](respondWithFilteredResult(_0x3377a0,_0x256d9e))['catch'](handleError(_0x3377a0,null));};exports[_0xcf02('0x75')]=function(_0x305e39,_0x359508,_0xa85d30){return db[_0xcf02('0x58')][_0xcf02('0x65')]({'where':{'id':_0x305e39[_0xcf02('0x5e')]['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x359508,null))[_0xcf02('0x39')](function(_0x28d7d8){if(_0x28d7d8){return _0x28d7d8[_0xcf02('0x75')](_0x305e39[_0xcf02('0x4a')][_0xcf02('0x71')]);}})[_0xcf02('0x39')](respondWithStatusCode(_0x359508,null))['catch'](handleError(_0x359508,null));};exports[_0xcf02('0x76')]=function(_0x5e1b68,_0x2eedef,_0x47dd7b){var _0x44eba2={'body':_0x5e1b68[_0xcf02('0x61')],'channel':'openchannel'};var _0x4a612f=[];var _0x5bde2d=[];var _0x1130c1={};var _0x5b5211=![];return db[_0xcf02('0x77')]['describe']()[_0xcf02('0x39')](function(_0x46576f){if(!_0x46576f){throw new db[(_0xcf02('0x78'))][(_0xcf02('0x79'))]('no\x20available\x20attributes');}_0x4a612f=_[_0xcf02('0x7a')](_[_0xcf02('0x4b')](_0x46576f),[_0xcf02('0x7b'),_0xcf02('0x7c')]);_0x5bde2d=_[_0xcf02('0x7a')](_['keys'](_0x46576f),['createdAt',_0xcf02('0x7c'),_0xcf02('0x7d'),_0xcf02('0x7e')]);if(_0x5e1b68[_0xcf02('0x61')]['id']){delete _0x5e1b68[_0xcf02('0x61')]['id'];}if(_[_0xcf02('0x7f')](_0x5e1b68[_0xcf02('0x61')]['from'])){throw new db['Sequelize'][(_0xcf02('0x79'))]('from\x20is\x20mandatory');}if(_[_0xcf02('0x7f')](_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x61')])||_0x5e1b68[_0xcf02('0x61')]['body']===''){throw new db[(_0xcf02('0x78'))][(_0xcf02('0x79'))](_0xcf02('0x80'));}if(_[_0xcf02('0x7f')](_0x5e1b68[_0xcf02('0x61')]['mapKey'])){throw new db['Sequelize'][(_0xcf02('0x79'))](_0xcf02('0x81')+_0x5bde2d);}if(!_[_0xcf02('0x82')](_0x5bde2d,_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x83')])){throw new db['Sequelize'][(_0xcf02('0x79'))](_0xcf02('0x84')+_0x5bde2d);}_0x1130c1[_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x83')]]=_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x85')];})['then'](function(){return db[_0xcf02('0x58')]['find']({'where':{'id':_0x5e1b68[_0xcf02('0x5e')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':_0xcf02('0x86'),'where':_0x1130c1,'limit':0x1,'order':[[_0xcf02('0x7c'),_0xcf02('0x87')]]}]},{'model':db[_0xcf02('0x88')],'as':'Applications'}]});})[_0xcf02('0x39')](handleEntityNotFound(_0x2eedef,null))[_0xcf02('0x39')](function(_0x24c3dd){if(_0x24c3dd&&_0x24c3dd[_0xcf02('0x89')]){_0x44eba2[_0xcf02('0x8a')]=_0x24c3dd;_0x44eba2['applications']=_0x24c3dd[_0xcf02('0x8b')];_0x44eba2['list']=_0x24c3dd[_0xcf02('0x89')];_0x44eba2[_0xcf02('0x8c')]=_[_0xcf02('0x8d')](_0x44eba2[_0xcf02('0x8c')],[_0xcf02('0x8e')],[_0xcf02('0x8f')]);if(_0x44eba2[_0xcf02('0x8a')][_0xcf02('0x8b')]){delete _0x44eba2[_0xcf02('0x8a')][_0xcf02('0x8b')];}if(_0x44eba2[_0xcf02('0x8a')][_0xcf02('0x89')]&&_0x44eba2[_0xcf02('0x8a')][_0xcf02('0x89')][_0xcf02('0x86')][_0xcf02('0x5f')]){return _0x44eba2['account']['List'][_0xcf02('0x86')][0x0];}var _0x46dc9f=_[_0xcf02('0x1b')](_0x5e1b68['body'],{'firstName':_0x5e1b68[_0xcf02('0x61')]['from'],'ListId':_0x24c3dd['ListId']});_0x46dc9f[_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x83')]]=_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x85')];return db[_0xcf02('0x77')][_0xcf02('0x60')](_0x46dc9f,{'fields':_0x4a612f,'raw':!![]});}})['then'](handleEntityNotFound(_0x2eedef,null))[_0xcf02('0x39')](function(_0x399869){_0x44eba2['contact']=_0x399869;if(_0x399869){var _0xec0101={'ContactId':_0x399869['id'],'OpenchannelAccountId':_0x5e1b68[_0xcf02('0x5e')]['id'],'from':(_0x399869[_0xcf02('0x90')]||'')+'\x20'+(_0x399869['lastName']||'')};var _0xd6999b={'OpenchannelAccountId':_0x5e1b68[_0xcf02('0x5e')]['id'],'closed':![]};if(_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x91')]){_0xd6999b['threadId']=_0x5e1b68['body']['threadId'];return db[_0xcf02('0x92')][_0xcf02('0x65')]({'where':_0xd6999b})['then'](function(_0x132e2a){if(_0x132e2a){return[_0x132e2a,![]];}_0xec0101[_0xcf02('0x91')]=_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x91')];_0xec0101[_0xcf02('0x93')]=_0x5e1b68['body'][_0xcf02('0x93')];return db[_0xcf02('0x92')][_0xcf02('0x60')](_0xec0101)[_0xcf02('0x39')](function(_0x136a83){return[_0x136a83,!![]];});});}else{_0xd6999b['threadId']=null;}_0xd6999b[_0xcf02('0x94')]=_0x399869['id'];return db['OpenchannelInteraction']['find']({'where':_0xd6999b})[_0xcf02('0x39')](function(_0x6f6dbc){if(_0x6f6dbc){return[_0x6f6dbc,![]];}return db[_0xcf02('0x92')]['create'](_0xec0101)[_0xcf02('0x39')](function(_0x4b2e40){return[_0x4b2e40,!![]];});});}})[_0xcf02('0x95')](function(_0x590b0b,_0x4312b0){if(_0x590b0b){_0x5b5211=_0x4312b0;if(!_0x4312b0){var _0x3488b2={'from':(_0x44eba2[_0xcf02('0x96')]['firstName']||'')+'\x20'+(_0x44eba2[_0xcf02('0x96')][_0xcf02('0x97')]||'')};if(_0x5e1b68[_0xcf02('0x61')]['threadId']&&_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x98')]&&_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x91')]!=_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x98')]){_0x3488b2[_0xcf02('0x91')]=_0x5e1b68['body'][_0xcf02('0x98')];}return _0x590b0b['update'](_0x3488b2);}else{return _0x590b0b;}}})[_0xcf02('0x39')](function(_0x541f35){_0x44eba2['interaction']=_0x541f35['get']({'plain':!![]});_0x44eba2['interaction'][_0xcf02('0x99')]=_0x5b5211;if(_0x44eba2['interaction']['created']){if(_0x44eba2['account'][_0xcf02('0x9a')]){_0x44eba2[_0xcf02('0x8c')][_0xcf02('0x9b')]({'id':0x0,'priority':_0x44eba2[_0xcf02('0x8c')][_0xcf02('0x5f')]+0x1,'app':_0xcf02('0x9c'),'appdata':_0xcf02('0x9d'),'interval':'*,*,*,*'});}}return db[_0xcf02('0x9e')][_0xcf02('0x60')]({'body':_0x5e1b68['body']['body'],'OpenchannelAccountId':_0x5e1b68[_0xcf02('0x5e')]['id'],'OpenchannelInteractionId':_0x541f35['id'],'direction':'in','ContactId':_0x44eba2[_0xcf02('0x96')]['id'],'AttachmentId':_0x5e1b68[_0xcf02('0x61')][_0xcf02('0x9f')]});})[_0xcf02('0x39')](function(_0x1f80b2){_0x44eba2[_0xcf02('0x28')]=_0x1f80b2;if(!_0x44eba2[_0xcf02('0xa0')][_0xcf02('0xa1')])return;return db[_0xcf02('0xa2')]['find']({'attributes':['id',_0xcf02('0x3f')],'where':{'id':_0x44eba2[_0xcf02('0xa0')][_0xcf02('0xa1')]}});})['then'](function(_0x37b9a9){if(_0x37b9a9){_0x44eba2['applications'][_0xcf02('0xa3')]({'id':0x0,'priority':0x0,'app':_0xcf02('0xa4'),'appdata':_0x37b9a9['name']+','+(_0x44eba2[_0xcf02('0x8a')][_0xcf02('0xa5')]||0xa),'interval':_0xcf02('0xa6')});}if(!_0x44eba2['interaction']['queueId'])return;return db['OpenchannelQueue'][_0xcf02('0x65')]({'attributes':['id','name'],'where':{'id':_0x44eba2['interaction'][_0xcf02('0xa7')]}});})[_0xcf02('0x39')](function(_0x430801){if(_0x430801){_0x44eba2[_0xcf02('0x8c')][_0xcf02('0xa3')]({'id':0x0,'priority':0x1,'app':_0xcf02('0xa8'),'appdata':_0x430801[_0xcf02('0x3f')]+','+(_0x44eba2[_0xcf02('0x8a')][_0xcf02('0xa9')]||0x12c),'interval':_0xcf02('0xa6')});}return respondWithRpcPromise('Start',_0xcf02('0xaa'),_0x44eba2);})[_0xcf02('0x39')](function(_0x3c719d){respondWithRpcPromise('EventManager','EventManager',{'event':'notify','message':_0x3c719d},client9002);return _0x3c719d;})[_0xcf02('0x39')](respondWithResult(_0x2eedef,null))['catch'](handleError(_0x2eedef,null));};exports[_0xcf02('0xab')]=function(_0xc98359,_0x37ae87){var _0x1c6c70=_0xc98359[_0xcf02('0x5e')]['id'];var _0x5401b0=_0xc98359[_0xcf02('0x61')];var _0x2c3565=0xc8;var _0x456c16=null;return db['sequelize'][_0xcf02('0xac')]({'isolationLevel':db[_0xcf02('0xad')][_0xcf02('0xae')][_0xcf02('0xaf')][_0xcf02('0xb0')]},function(_0x911ae5){return db[_0xcf02('0x58')][_0xcf02('0xb1')]({'where':{'id':_0x1c6c70},'transaction':_0x911ae5})[_0xcf02('0x39')](function(_0x14c978){if(_0x14c978){return db[_0xcf02('0x88')][_0xcf02('0x3a')]({'where':{'OpenchannelAccountId':_0x1c6c70},'transaction':_0x911ae5})[_0xcf02('0x39')](function(){var _0x262d94=_['map'](_0x5401b0,function(_0x1fc833){_0x1fc833[_0xcf02('0x6b')]=_0x1c6c70;return _0x1fc833;});return db[_0xcf02('0x88')][_0xcf02('0xb2')](_0x262d94,{'transaction':_0x911ae5});});}else{_0x2c3565=0x194;_0x456c16=[];}});})['then'](function(){if(_0x2c3565!==0x194){return db[_0xcf02('0x88')][_0xcf02('0xb3')]({'where':{'OpenchannelAccountId':_0x1c6c70},'order':_0xcf02('0x8e')})[_0xcf02('0x39')](function(_0x261b7d){_0x456c16=_0x261b7d;});}})[_0xcf02('0x2a')](function(_0x53d613){_0x2c3565=0x1f4;logger[_0xcf02('0x27')](_0x53d613[_0xcf02('0x3e')]);if(_0x53d613['name']){delete _0x53d613['name'];}_0x456c16=_0x53d613;})['finally'](function(){if(_0x456c16===null){_0x37ae87[_0xcf02('0x2b')](_0x2c3565);}else{if(_0x2c3565===0x1f4){_0x37ae87['status'](_0x2c3565)[_0xcf02('0x40')](_0x456c16);}else{_0x37ae87['status'](_0x2c3565)['json'](_0x456c16);}}});};exports[_0xcf02('0xb4')]=function(_0x18f4e0,_0x30bd28,_0x4ba8ae){var _0x286183={};var _0x1f1a7d={};var _0x7aa344;var _0x3ab790;return db[_0xcf02('0x58')][_0xcf02('0xb1')]({'where':{'id':_0x18f4e0['params']['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x30bd28,null))[_0xcf02('0x39')](function(_0x59d96c){if(_0x59d96c){_0x7aa344=_0x59d96c;_0x1f1a7d[_0xcf02('0x49')]=_['keys'](db['OpenchannelApplication'][_0xcf02('0x45')]);_0x1f1a7d['query']=_[_0xcf02('0x4b')](_0x18f4e0[_0xcf02('0x4a')]);_0x1f1a7d[_0xcf02('0x4c')]=_[_0xcf02('0x4d')](_0x1f1a7d['model'],_0x1f1a7d['query']);_0x286183[_0xcf02('0x4e')]=_['intersection'](_0x1f1a7d[_0xcf02('0x49')],qs[_0xcf02('0x4f')](_0x18f4e0[_0xcf02('0x4a')]['fields']));_0x286183['attributes']=_0x286183[_0xcf02('0x4e')]['length']?_0x286183[_0xcf02('0x4e')]:_0x1f1a7d[_0xcf02('0x49')];_0x286183[_0xcf02('0x6f')]=qs[_0xcf02('0x51')](_0x18f4e0[_0xcf02('0x4a')]['sort']);_0x286183['where']=qs[_0xcf02('0x4c')](_['pick'](_0x18f4e0[_0xcf02('0x4a')],_0x1f1a7d['filters']));if(_0x18f4e0['query'][_0xcf02('0x54')]){_0x286183['where']=_[_0xcf02('0x55')](_0x286183['where'],{'$or':_['map'](_0x286183[_0xcf02('0x4e')],function(_0x44dba4){var _0x39511b={};_0x39511b[_0x44dba4]={'$like':'%'+_0x18f4e0['query'][_0xcf02('0x54')]+'%'};return _0x39511b;})});}_0x286183=_['merge']({},_0x286183,_0x18f4e0[_0xcf02('0x57')]);return _0x7aa344['getApplications'](_0x286183);}})[_0xcf02('0x39')](function(_0x36e2ab){if(_0x36e2ab){_0x3ab790=_0x36e2ab['length'];if(!_0x18f4e0[_0xcf02('0x4a')]['hasOwnProperty'](_0xcf02('0x50'))){_0x286183[_0xcf02('0x32')]=qs[_0xcf02('0x32')](_0x18f4e0[_0xcf02('0x4a')][_0xcf02('0x32')]);_0x286183[_0xcf02('0x2f')]=qs['offset'](_0x18f4e0[_0xcf02('0x4a')][_0xcf02('0x2f')]);}return _0x7aa344[_0xcf02('0xb4')](_0x286183);}})[_0xcf02('0x39')](function(_0x39814e){if(_0x39814e){return _0x39814e?{'count':_0x3ab790,'rows':_0x39814e}:null;}})[_0xcf02('0x39')](respondWithResult(_0x30bd28,null))[_0xcf02('0x2a')](handleError(_0x30bd28,null));};exports[_0xcf02('0xb5')]=function(_0x284969,_0x596a1a,_0x1eb882){var _0x2aa86b={'raw':![],'where':{}};var _0x12df3c={};var _0x3df54f={'count':0x0,'rows':[]};return db[_0xcf02('0x58')]['findOne']({'where':{'id':_0x284969[_0xcf02('0x5e')]['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x596a1a,null))[_0xcf02('0x39')](function(_0x311df2){if(_0x311df2){_0x12df3c['model']=_['keys'](db[_0xcf02('0x92')][_0xcf02('0x45')]);_0x12df3c[_0xcf02('0x4a')]=_[_0xcf02('0x4b')](_0x284969[_0xcf02('0x4a')]);_0x12df3c[_0xcf02('0x4c')]=_[_0xcf02('0x4d')](_0x12df3c[_0xcf02('0x49')],_0x12df3c[_0xcf02('0x4a')]);_0x2aa86b[_0xcf02('0x4e')]=_[_0xcf02('0x4d')](_0x12df3c[_0xcf02('0x49')],qs[_0xcf02('0x4f')](_0x284969[_0xcf02('0x4a')][_0xcf02('0x4f')]));_0x2aa86b[_0xcf02('0x4e')]=_0x2aa86b[_0xcf02('0x4e')]['length']?_0x2aa86b[_0xcf02('0x4e')]:_0x12df3c[_0xcf02('0x49')];if(!_0x284969[_0xcf02('0x4a')][_0xcf02('0x6e')](_0xcf02('0x50'))){_0x2aa86b[_0xcf02('0x32')]=qs[_0xcf02('0x32')](_0x284969['query']['limit']);_0x2aa86b[_0xcf02('0x2f')]=qs[_0xcf02('0x2f')](_0x284969[_0xcf02('0x4a')][_0xcf02('0x2f')]);}_0x2aa86b[_0xcf02('0x6f')]=qs[_0xcf02('0x51')](_0x284969[_0xcf02('0x4a')][_0xcf02('0x51')]);_0x2aa86b[_0xcf02('0x52')]=qs[_0xcf02('0x4c')](_[_0xcf02('0x53')](_0x284969[_0xcf02('0x4a')],_0x12df3c['filters']));_0x2aa86b[_0xcf02('0x52')][_0xcf02('0x6b')]=_0x311df2['id'];if(_0x284969[_0xcf02('0x4a')][_0xcf02('0x54')]){_0x2aa86b[_0xcf02('0x52')]=_['merge'](_0x2aa86b[_0xcf02('0x52')],{'$or':_[_0xcf02('0x44')](_0x2aa86b[_0xcf02('0x4e')],function(_0x5752e3){var _0x1e2bb5={};_0x1e2bb5[_0x5752e3]={'$like':'%'+_0x284969['query'][_0xcf02('0x54')]+'%'};return _0x1e2bb5;})});}_0x2aa86b=_['merge']({},_0x2aa86b,_0x284969['options']);return db[_0xcf02('0x92')]['count']({'where':_0x2aa86b[_0xcf02('0x52')]})[_0xcf02('0x39')](function(_0x32f850){_0x3df54f[_0xcf02('0x31')]=_0x32f850;if(_0x284969[_0xcf02('0x4a')][_0xcf02('0x59')]){_0x2aa86b[_0xcf02('0x5a')]=[{'model':db[_0xcf02('0x77')],'as':_0xcf02('0xb6'),'required':![]},{'model':db[_0xcf02('0xa2')],'as':_0xcf02('0xb7'),'attributes':[_0xcf02('0x3f'),_0xcf02('0xb8'),'internal'],'required':![]},{'model':db[_0xcf02('0xb9')],'as':'Tags','attributes':['id','name',_0xcf02('0xba')],'where':_0x284969[_0xcf02('0x4a')][_0xcf02('0xbb')]?{'id':_0x284969['query'][_0xcf02('0xbb')]}:undefined,'required':_0x284969['query']['tag']?!![]:![]}];}return db['OpenchannelInteraction'][_0xcf02('0x5b')](_0x2aa86b);})[_0xcf02('0x39')](function(_0x142f45){_0x3df54f['rows']=_0x142f45;return _0x3df54f;});}})[_0xcf02('0x39')](respondWithFilteredResult(_0x596a1a,_0x2aa86b))[_0xcf02('0x2a')](handleError(_0x596a1a,null));};exports['addAgents']=function(_0x172aa7,_0x475b64,_0x4097c1){return db['OpenchannelAccount'][_0xcf02('0x65')]({'where':{'id':_0x172aa7['params']['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x475b64,null))['then'](function(_0x47255c){if(_0x47255c){return _0x47255c['addAgents'](_0x172aa7['body'][_0xcf02('0x71')],_[_0xcf02('0xbc')](_0x172aa7[_0xcf02('0x61')],[_0xcf02('0x71'),'id'])||{})[_0xcf02('0x95')](function(_0x2de0ca){for(var _0x36ca7b=0x0;_0x36ca7b<_0x172aa7['body'][_0xcf02('0x71')][_0xcf02('0x5f')];_0x36ca7b+=0x1){socket['emit'](_0xcf02('0xbd'),{'UserId':Number(_0x172aa7[_0xcf02('0x61')][_0xcf02('0x71')][_0x36ca7b]),'OpenchannelAccountId':Number(_0x172aa7['params']['id'])});}return _0x2de0ca;});}})['then'](respondWithResult(_0x475b64,null))[_0xcf02('0x2a')](handleError(_0x475b64,null));};exports[_0xcf02('0xbe')]=function(_0xcb393d,_0x1f5f93,_0x20d050){return db[_0xcf02('0x58')][_0xcf02('0x65')]({'where':{'id':_0xcb393d['params']['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x1f5f93,null))[_0xcf02('0x39')](function(_0x55f72a){if(_0x55f72a){return _0x55f72a['removeAgents'](_0xcb393d[_0xcf02('0x4a')][_0xcf02('0x71')])[_0xcf02('0x39')](function(){if(_[_0xcf02('0xbf')](_0xcb393d['query'][_0xcf02('0x71')])){for(var _0x10db01=0x0;_0x10db01<_0xcb393d[_0xcf02('0x4a')][_0xcf02('0x71')][_0xcf02('0x5f')];_0x10db01+=0x1){socket[_0xcf02('0xc0')](_0xcf02('0xc1'),{'UserId':Number(_0xcb393d['query'][_0xcf02('0x71')][_0x10db01]),'OpenchannelAccountId':Number(_0xcb393d[_0xcf02('0x5e')]['id'])});}}else{socket[_0xcf02('0xc0')](_0xcf02('0xc1'),{'UserId':Number(_0xcb393d['query'][_0xcf02('0x71')]),'OpenchannelAccountId':Number(_0xcb393d['params']['id'])});}});}})[_0xcf02('0x39')](respondWithStatusCode(_0x1f5f93,null))[_0xcf02('0x2a')](handleError(_0x1f5f93,null));};exports[_0xcf02('0xc2')]=function(_0xd7ae9c,_0x5b8c38,_0x168f6a){var _0x3a5119={};var _0x338070={};var _0x471b08;var _0x10eff7;return db[_0xcf02('0x58')][_0xcf02('0xb1')]({'where':{'id':_0xd7ae9c[_0xcf02('0x5e')]['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x5b8c38,null))[_0xcf02('0x39')](function(_0x24ebc3){if(_0x24ebc3){_0x471b08=_0x24ebc3;_0x338070[_0xcf02('0x49')]=_[_0xcf02('0x4b')](db['User'][_0xcf02('0x45')]);_0x338070['query']=_[_0xcf02('0x4b')](_0xd7ae9c['query']);_0x338070[_0xcf02('0x4c')]=_['intersection'](_0x338070[_0xcf02('0x49')],_0x338070[_0xcf02('0x4a')]);_0x3a5119[_0xcf02('0x4e')]=_[_0xcf02('0x4d')](_0x338070['model'],qs[_0xcf02('0x4f')](_0xd7ae9c[_0xcf02('0x4a')]['fields']));_0x3a5119['attributes']=_0x3a5119[_0xcf02('0x4e')][_0xcf02('0x5f')]?_0x3a5119['attributes']:_0x338070[_0xcf02('0x49')];_0x3a5119[_0xcf02('0x6f')]=qs[_0xcf02('0x51')](_0xd7ae9c[_0xcf02('0x4a')][_0xcf02('0x51')]);_0x3a5119[_0xcf02('0x52')]=qs[_0xcf02('0x4c')](_[_0xcf02('0x53')](_0xd7ae9c[_0xcf02('0x4a')],_0x338070[_0xcf02('0x4c')]));if(_0xd7ae9c[_0xcf02('0x4a')][_0xcf02('0x54')]){_0x3a5119[_0xcf02('0x52')]=_['merge'](_0x3a5119[_0xcf02('0x52')],{'$or':_[_0xcf02('0x44')](_0x3a5119['attributes'],function(_0x4a8ef9){var _0x3fc3b7={};_0x3fc3b7[_0x4a8ef9]={'$like':'%'+_0xd7ae9c['query'][_0xcf02('0x54')]+'%'};return _0x3fc3b7;})});}_0x3a5119=_[_0xcf02('0x55')]({},_0x3a5119,_0xd7ae9c[_0xcf02('0x57')]);return _0x471b08[_0xcf02('0xc2')](_0x3a5119);}})[_0xcf02('0x39')](function(_0x42f6b8){if(_0x42f6b8){_0x10eff7=_0x42f6b8[_0xcf02('0x5f')];if(!_0xd7ae9c[_0xcf02('0x4a')][_0xcf02('0x6e')]('nolimit')){_0x3a5119[_0xcf02('0x32')]=qs[_0xcf02('0x32')](_0xd7ae9c[_0xcf02('0x4a')][_0xcf02('0x32')]);_0x3a5119[_0xcf02('0x2f')]=qs[_0xcf02('0x2f')](_0xd7ae9c['query'][_0xcf02('0x2f')]);}return _0x471b08['getAgents'](_0x3a5119);}})['then'](function(_0x30a44c){if(_0x30a44c){return _0x30a44c?{'count':_0x10eff7,'rows':_0x30a44c}:null;}})[_0xcf02('0x39')](respondWithResult(_0x5b8c38,null))[_0xcf02('0x2a')](handleError(_0x5b8c38,null));};exports[_0xcf02('0x40')]=function(_0x194a42,_0x57489e,_0x45e3ea){var _0x4f5a57,_0x5e717f,_0x1c3f08;if(_['isNil'](_0x194a42[_0xcf02('0x61')]['body'])||_0x194a42[_0xcf02('0x61')][_0xcf02('0x61')]===''){throw new db[(_0xcf02('0x78'))][(_0xcf02('0x79'))](_0xcf02('0x80'));}if(_[_0xcf02('0x7f')](_0x194a42[_0xcf02('0x61')]['to'])){}_0x4f5a57=_0x194a42[_0xcf02('0x61')]['to'];return db[_0xcf02('0x58')][_0xcf02('0xb1')]({'where':{'id':_0x194a42[_0xcf02('0x5e')]['id']}})[_0xcf02('0x39')](handleEntityNotFound(_0x57489e,null))[_0xcf02('0x39')](function(_0x49896e){if(_0x49896e){return db['OpenchannelAccount']['find']({'where':{'id':_0x49896e['id']},'include':[{'model':db[_0xcf02('0xc3')],'as':'List','include':[{'model':db[_0xcf02('0x77')],'as':_0xcf02('0x86'),'where':{[_0x49896e[_0xcf02('0x83')]]:_0x4f5a57},'limit':0x1,'order':[[_0xcf02('0x7c'),_0xcf02('0x87')]]}]}]})[_0xcf02('0x39')](handleEntityNotFound(_0x57489e,null))[_0xcf02('0x39')](function(_0x54976b){if(_0x54976b&&_0x54976b['List']){_0x5e717f=_0x54976b[_0xcf02('0x3b')]({'plain':!![]});if(_0x5e717f['List']&&_0x5e717f[_0xcf02('0x89')][_0xcf02('0x86')][_0xcf02('0x5f')]){return _0x5e717f[_0xcf02('0x89')][_0xcf02('0x86')][0x0];}return db['CmContact'][_0xcf02('0x60')](_['defaults'](_0x194a42['body'],{'firstName':_0x4f5a57,[_0x54976b[_0xcf02('0x83')]]:_0x4f5a57,'phone':_0x4f5a57,'ListId':_0x5e717f['ListId']}));}})[_0xcf02('0x39')](handleEntityNotFound(_0x57489e,null))[_0xcf02('0x39')](function(_0x40c1d7){if(_0x40c1d7){_0x1c3f08=_0x40c1d7;return db[_0xcf02('0x92')][_0xcf02('0x65')]({'where':{'ContactId':_0x1c3f08['id'],'closed':![],'OpenchannelAccountId':_0x5e717f['id']}})[_0xcf02('0x39')](function(_0x46a251){if(_0x46a251){return[_0x46a251,![]];}return db['OpenchannelInteraction'][_0xcf02('0x60')]({'UserId':_0x194a42[_0xcf02('0x62')]['id'],'ContactId':_0x1c3f08['id'],'OpenchannelAccountId':_0x5e717f['id'],'lastMsgDirection':_0xcf02('0xc4'),'firstMsgDirection':_0xcf02('0xc4'),'Messages':[_['merge'](_0x194a42['body'],{'read':![],'body':_0x194a42['body'][_0xcf02('0x61')],'OpenchannelAccountId':_0x5e717f['id'],'UserId':_0x194a42[_0xcf02('0x62')]['id'],'ContactId':_0x1c3f08['id']})]},{'include':[{'model':db[_0xcf02('0x9e')],'as':'Messages'}]})[_0xcf02('0x39')](function(_0x36267f){return[_0x36267f,!![]];});});}})[_0xcf02('0x95')](function(_0x2a6102,_0xbb63c4){if(_0xbb63c4){return _0x2a6102;}return db[_0xcf02('0x9e')][_0xcf02('0x60')](_[_0xcf02('0x55')](_0x194a42[_0xcf02('0x61')],{'read':![],'body':_0x194a42['body']['body'],'OpenchannelAccountId':_0x5e717f['id'],'OpenchannelInteractionId':_0x2a6102['id'],'UserId':_0x194a42['user']['id'],'ContactId':_0x1c3f08['id']}))[_0xcf02('0x39')](function(_0x5e9d78){_0x2a6102[_0xcf02('0xc5')][_0xcf02('0xc6')]=[];_0x2a6102[_0xcf02('0xc5')][_0xcf02('0xc6')][_0xcf02('0x9b')](_0x5e9d78['dataValues']);return _0x2a6102;});});}})[_0xcf02('0x39')](respondWithResult(_0x57489e,null))[_0xcf02('0x2a')](handleError(_0x57489e,null));};
\ No newline at end of file
+var _0x553f=['OpenchannelInteraction','externalUrl','ContactId','firstName','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','queueId','OpenchannelQueue','queue','Start','startRouting','EventManager','notify','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','finally','send','getApplications','getInteractions','Contact','Owner','internal','Tag','Tags','color','tag','addAgents','omit','ids','spread','userOpenchannelAccount:save','isArray','emit','userOpenchannelAccount:remove','getAgents','CmList','out','OpenchannelMessage','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','jayson/promise','client','http','request','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','result','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','get','OpenchannelAccounts','UserProfileResource','sendStatus','stack','name','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','pick','filter','merge','where','options','OpenchannelAccount','findAll','rows','catch','length','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','nolimit','include','removeDispositions','CannedAnswer','getAnswers','removeAnswers','openchannel','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','OpenchannelApplication','Applications','applications','List','orderBy','priority','asc','account','contact','lastName','threadId'];(function(_0x513f0c,_0x2518d2){var _0x4e21ba=function(_0x497a54){while(--_0x497a54){_0x513f0c['push'](_0x513f0c['shift']());}};_0x4e21ba(++_0x2518d2);}(_0x553f,0x1c0));var _0xf553=function(_0x475c1a,_0x36bef6){_0x475c1a=_0x475c1a-0x0;var _0x530956=_0x553f[_0x475c1a];return _0x530956;};'use strict';var emlformat=require(_0xf553('0x0'));var rimraf=require(_0xf553('0x1'));var zipdir=require(_0xf553('0x2'));var jsonpatch=require(_0xf553('0x3'));var rp=require(_0xf553('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf553('0x5'));var util=require('util');var path=require(_0xf553('0x6'));var sox=require(_0xf553('0x7'));var csv=require(_0xf553('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf553('0x9'));var _=require(_0xf553('0xa'));var squel=require(_0xf553('0xb'));var crypto=require('crypto');var jsforce=require(_0xf553('0xc'));var deskjs=require(_0xf553('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf553('0xe'));var authService=require(_0xf553('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xf553('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf553('0x11'))(_0xf553('0x12'));var utils=require('../../config/utils');var config=require(_0xf553('0x13'));var licenseUtil=require(_0xf553('0x14'));var db=require(_0xf553('0x15'))['db'];config[_0xf553('0x16')]=_[_0xf553('0x17')](config[_0xf553('0x16')],{'host':_0xf553('0x18'),'port':0x18eb});var socket=require(_0xf553('0x19'))(new Redis(config[_0xf553('0x16')]));require(_0xf553('0x1a'))['register'](socket);var jayson=require(_0xf553('0x1b'));var client=jayson[_0xf553('0x1c')]['http']({'port':0x232c});var client9002=jayson[_0xf553('0x1c')][_0xf553('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x2cef54,_0x3197ea,_0x46674e,_0x2a2eed){return new BPromise(function(_0x4b4292,_0x450bb3){var _0x264bc1=_0x2a2eed||client;return _0x264bc1[_0xf553('0x1e')](_0x2cef54,_0x46674e)[_0xf553('0x1f')](function(_0x15e19e){logger['info'](_0xf553('0x20'),_0x3197ea,_0xf553('0x21'));logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x3197ea,_0xf553('0x21'),JSON[_0xf553('0x22')](_0x15e19e));if(_0x15e19e['error']){if(_0x15e19e['error'][_0xf553('0x23')]===0x1f4){logger['error'](_0xf553('0x20'),_0x3197ea,_0x15e19e[_0xf553('0x24')][_0xf553('0x25')]);return _0x450bb3(_0x15e19e[_0xf553('0x24')][_0xf553('0x25')]);}logger[_0xf553('0x24')]('OpenchannelAccount,\x20%s,\x20%s',_0x3197ea,_0x15e19e['error'][_0xf553('0x25')]);return _0x4b4292(_0x15e19e[_0xf553('0x24')]['message']);}else{logger[_0xf553('0x26')]('OpenchannelAccount,\x20%s,\x20%s',_0x3197ea,_0xf553('0x21'));_0x4b4292(_0x15e19e[_0xf553('0x27')][_0xf553('0x25')]);}})['catch'](function(_0x1b9a57){logger['error'](_0xf553('0x20'),_0x3197ea,_0x1b9a57);_0x450bb3(_0x1b9a57);});});}function respondWithStatusCode(_0x3589b3,_0x5c4dd2){_0x5c4dd2=_0x5c4dd2||0xcc;return function(_0x466be4){if(_0x466be4){return _0x3589b3['sendStatus'](_0x5c4dd2);}return _0x3589b3[_0xf553('0x28')](_0x5c4dd2)[_0xf553('0x29')]();};}function respondWithResult(_0x4cd31a,_0x35b254){_0x35b254=_0x35b254||0xc8;return function(_0x10d0f2){if(_0x10d0f2){return _0x4cd31a[_0xf553('0x28')](_0x35b254)['json'](_0x10d0f2);}};}function respondWithFilteredResult(_0x4749d0,_0x3e06e0){return function(_0x13b084){if(_0x13b084){var _0x12075e=typeof _0x3e06e0['offset']===_0xf553('0x2a')&&typeof _0x3e06e0[_0xf553('0x2b')]===_0xf553('0x2a');var _0xac9992=_0x13b084[_0xf553('0x2c')];var _0x2e436c=_0x12075e?0x0:_0x3e06e0[_0xf553('0x2d')];var _0x1a2c21=_0x12075e?_0x13b084['count']:_0x3e06e0[_0xf553('0x2d')]+_0x3e06e0[_0xf553('0x2b')];var _0x52a652;if(_0x1a2c21>=_0xac9992){_0x1a2c21=_0xac9992;_0x52a652=0xc8;}else{_0x52a652=0xce;}_0x4749d0[_0xf553('0x28')](_0x52a652);return _0x4749d0[_0xf553('0x2e')](_0xf553('0x2f'),_0x2e436c+'-'+_0x1a2c21+'/'+_0xac9992)[_0xf553('0x30')](_0x13b084);}return null;};}function patchUpdates(_0x3c8b39){return function(_0x4f21e4){try{jsonpatch[_0xf553('0x31')](_0x4f21e4,_0x3c8b39,!![]);}catch(_0xfa0dec){return BPromise[_0xf553('0x32')](_0xfa0dec);}return _0x4f21e4[_0xf553('0x33')]();};}function saveUpdates(_0x3648a3,_0x22c78f){return function(_0x341fca){if(_0x341fca){return _0x341fca[_0xf553('0x34')](_0x3648a3)[_0xf553('0x1f')](function(_0x2d2904){return _0x2d2904;});}return null;};}function removeEntity(_0x2808cc,_0x545d45){return function(_0x2c13ed){if(_0x2c13ed){return _0x2c13ed[_0xf553('0x35')]()[_0xf553('0x1f')](function(){var _0xd45024=_0x2c13ed[_0xf553('0x36')]({'plain':!![]});var _0x24ab7b=_0xf553('0x37');return db[_0xf553('0x38')][_0xf553('0x35')]({'where':{'type':_0x24ab7b,'resourceId':_0xd45024['id']}})['then'](function(){return _0x2c13ed;});})[_0xf553('0x1f')](function(){_0x2808cc[_0xf553('0x28')](0xcc)[_0xf553('0x29')]();});}};}function handleEntityNotFound(_0x2eefbd,_0x56bb41){return function(_0x3c7d21){if(!_0x3c7d21){_0x2eefbd[_0xf553('0x39')](0x194);}return _0x3c7d21;};}function handleError(_0x3dfc85,_0x3c405b){_0x3c405b=_0x3c405b||0x1f4;return function(_0x33eed6){logger[_0xf553('0x24')](_0x33eed6[_0xf553('0x3a')]);if(_0x33eed6[_0xf553('0x3b')]){delete _0x33eed6[_0xf553('0x3b')];}_0x3dfc85[_0xf553('0x28')](_0x3c405b)['send'](_0x33eed6);};}exports[_0xf553('0x3c')]=function(_0x101518,_0x266b9d){var _0x5d7ef7={'include':[{'model':db[_0xf553('0x3d')],'as':_0xf553('0x3e')}]},_0x92992f={},_0x553d7f={'count':0x0,'rows':[]};var _0x582931=_[_0xf553('0x3f')](db['OpenchannelAccount'][_0xf553('0x40')],function(_0x1e334d){return{'name':_0x1e334d[_0xf553('0x41')],'type':_0x1e334d[_0xf553('0x42')][_0xf553('0x43')]};});_0x92992f[_0xf553('0x44')]=_['map'](_0x582931,_0xf553('0x3b'));_0x92992f[_0xf553('0x45')]=_[_0xf553('0x46')](_0x101518[_0xf553('0x45')]);_0x92992f[_0xf553('0x47')]=_[_0xf553('0x48')](_0x92992f[_0xf553('0x44')],_0x92992f[_0xf553('0x45')]);_0x5d7ef7['attributes']=_[_0xf553('0x48')](_0x92992f[_0xf553('0x44')],qs[_0xf553('0x49')](_0x101518[_0xf553('0x45')][_0xf553('0x49')]));_0x5d7ef7[_0xf553('0x4a')]=_0x5d7ef7[_0xf553('0x4a')]['length']?_0x5d7ef7[_0xf553('0x4a')]:_0x92992f[_0xf553('0x44')];if(!_0x101518['query'][_0xf553('0x4b')]('nolimit')){_0x5d7ef7[_0xf553('0x2b')]=qs[_0xf553('0x2b')](_0x101518[_0xf553('0x45')][_0xf553('0x2b')]);_0x5d7ef7[_0xf553('0x2d')]=qs[_0xf553('0x2d')](_0x101518[_0xf553('0x45')][_0xf553('0x2d')]);}_0x5d7ef7[_0xf553('0x4c')]=qs[_0xf553('0x4d')](_0x101518[_0xf553('0x45')][_0xf553('0x4d')]);_0x5d7ef7['where']=qs[_0xf553('0x47')](_[_0xf553('0x4e')](_0x101518[_0xf553('0x45')],_0x92992f[_0xf553('0x47')]),_0x582931);if(_0x101518['query'][_0xf553('0x4f')]){_0x5d7ef7['where']=_[_0xf553('0x50')](_0x5d7ef7[_0xf553('0x51')],{'$or':_['map'](_0x582931,function(_0x374c59){if(_0x374c59['type']!=='VIRTUAL'){var _0x441c12={};_0x441c12[_0x374c59[_0xf553('0x3b')]]={'$like':'%'+_0x101518[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x441c12;}})});}_0x5d7ef7=_['merge']({},_0x5d7ef7,_0x101518[_0xf553('0x52')]);var _0x2adae9={'where':_0x5d7ef7[_0xf553('0x51')]};return db[_0xf553('0x53')]['count'](_0x2adae9)[_0xf553('0x1f')](function(_0x541d7a){_0x553d7f[_0xf553('0x2c')]=_0x541d7a;if(_0x101518[_0xf553('0x45')]['includeAll']){_0x5d7ef7['include']=[{'all':!![]}];}return db['OpenchannelAccount'][_0xf553('0x54')](_0x5d7ef7);})[_0xf553('0x1f')](function(_0x1f04a5){_0x553d7f[_0xf553('0x55')]=_0x1f04a5;return _0x553d7f;})[_0xf553('0x1f')](respondWithFilteredResult(_0x266b9d,_0x5d7ef7))[_0xf553('0x56')](handleError(_0x266b9d,null));};exports['show']=function(_0x4bef32,_0x175fcf){var _0x489405={'raw':![],'where':{'id':_0x4bef32['params']['id']},'include':[{'model':db[_0xf553('0x3d')],'as':_0xf553('0x3e')}]},_0x35fdad={};_0x35fdad[_0xf553('0x44')]=_[_0xf553('0x46')](db['OpenchannelAccount'][_0xf553('0x40')]);_0x35fdad[_0xf553('0x45')]=_['keys'](_0x4bef32[_0xf553('0x45')]);_0x35fdad['filters']=_[_0xf553('0x48')](_0x35fdad[_0xf553('0x44')],_0x35fdad['query']);_0x489405['attributes']=_[_0xf553('0x48')](_0x35fdad[_0xf553('0x44')],qs[_0xf553('0x49')](_0x4bef32[_0xf553('0x45')][_0xf553('0x49')]));_0x489405[_0xf553('0x4a')]=_0x489405[_0xf553('0x4a')][_0xf553('0x57')]?_0x489405[_0xf553('0x4a')]:_0x35fdad[_0xf553('0x44')];if(_0x4bef32[_0xf553('0x45')][_0xf553('0x58')]){_0x489405['include']=[{'all':!![]}];}_0x489405=_[_0xf553('0x50')]({},_0x489405,_0x4bef32[_0xf553('0x52')]);return db['OpenchannelAccount'][_0xf553('0x59')](_0x489405)[_0xf553('0x1f')](handleEntityNotFound(_0x175fcf,null))[_0xf553('0x1f')](respondWithResult(_0x175fcf,null))[_0xf553('0x56')](handleError(_0x175fcf,null));};exports['create']=function(_0x4a94fb,_0x59bf67){return db['OpenchannelAccount'][_0xf553('0x5a')](_0x4a94fb['body'],{})['then'](function(_0x3cc396){var _0x174fdf=_0x4a94fb[_0xf553('0x5b')][_0xf553('0x36')]({'plain':!![]});if(!_0x174fdf)throw new Error(_0xf553('0x5c'));if(_0x174fdf['role']===_0xf553('0x5b')){var _0x1d1c10=_0x3cc396[_0xf553('0x36')]({'plain':!![]});var _0x2bfc4e=_0xf553('0x37');return db['UserProfileSection'][_0xf553('0x59')]({'where':{'name':_0x2bfc4e,'userProfileId':_0x174fdf['userProfileId']},'raw':!![]})[_0xf553('0x1f')](function(_0x10157a){if(_0x10157a&&_0x10157a['autoAssociation']===0x0){return db[_0xf553('0x38')]['create']({'name':_0x1d1c10[_0xf553('0x3b')],'resourceId':_0x1d1c10['id'],'type':_0x10157a['name'],'sectionId':_0x10157a['id']},{})[_0xf553('0x1f')](function(){return _0x3cc396;});}else{return _0x3cc396;}})[_0xf553('0x56')](function(_0x593eee){logger[_0xf553('0x24')](_0xf553('0x5d'),_0x593eee);throw _0x593eee;});}return _0x3cc396;})['then'](respondWithResult(_0x59bf67,0xc9))[_0xf553('0x56')](handleError(_0x59bf67,null));};exports[_0xf553('0x34')]=function(_0x16604f,_0x49b487){if(_0x16604f[_0xf553('0x5e')]['id']){delete _0x16604f[_0xf553('0x5e')]['id'];}return db[_0xf553('0x53')][_0xf553('0x59')]({'where':{'id':_0x16604f[_0xf553('0x5f')]['id']},'include':[{'model':db[_0xf553('0x3d')],'as':_0xf553('0x3e')}]})[_0xf553('0x1f')](handleEntityNotFound(_0x49b487,null))['then'](saveUpdates(_0x16604f[_0xf553('0x5e')],null))[_0xf553('0x1f')](respondWithResult(_0x49b487,null))['catch'](handleError(_0x49b487,null));};exports['destroy']=function(_0x46f6e5,_0xe8265a){return db[_0xf553('0x53')][_0xf553('0x59')]({'where':{'id':_0x46f6e5['params']['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0xe8265a,null))['then'](removeEntity(_0xe8265a,null))[_0xf553('0x56')](handleError(_0xe8265a,null));};exports[_0xf553('0x60')]=function(_0x3a77a4,_0x22fafa){return db[_0xf553('0x53')][_0xf553('0x60')]()[_0xf553('0x1f')](respondWithResult(_0x22fafa,null))['catch'](handleError(_0x22fafa,null));};exports[_0xf553('0x61')]=function(_0x454bd1,_0x41535c,_0x56bec2){if(_0x454bd1[_0xf553('0x5e')]['id']){delete _0x454bd1[_0xf553('0x5e')]['id'];}return db['OpenchannelAccount'][_0xf553('0x59')]({'where':{'id':_0x454bd1[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x41535c,null))[_0xf553('0x1f')](function(_0x10f889){if(_0x10f889){_0x454bd1[_0xf553('0x5e')][_0xf553('0x62')]=_0x10f889['id'];return db[_0xf553('0x63')][_0xf553('0x5a')](_0x454bd1[_0xf553('0x5e')]);}})['then'](respondWithResult(_0x41535c,null))['catch'](handleError(_0x41535c,null));};exports[_0xf553('0x64')]=function(_0x4fb231,_0x5b71b3,_0x5af48a){var _0x1cb1a6={'raw':![],'where':{}};var _0x5ca500={};var _0x2802be={'count':0x0,'rows':[]};return db[_0xf553('0x53')][_0xf553('0x65')]({'where':{'id':_0x4fb231[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x5b71b3,null))[_0xf553('0x1f')](function(_0x5c58db){if(_0x5c58db){_0x5ca500[_0xf553('0x44')]=_['keys'](db[_0xf553('0x63')][_0xf553('0x40')]);_0x5ca500[_0xf553('0x45')]=_[_0xf553('0x46')](_0x4fb231[_0xf553('0x45')]);_0x5ca500[_0xf553('0x47')]=_[_0xf553('0x48')](_0x5ca500[_0xf553('0x44')],_0x5ca500[_0xf553('0x45')]);_0x1cb1a6[_0xf553('0x4a')]=_[_0xf553('0x48')](_0x5ca500['model'],qs[_0xf553('0x49')](_0x4fb231[_0xf553('0x45')][_0xf553('0x49')]));_0x1cb1a6[_0xf553('0x4a')]=_0x1cb1a6[_0xf553('0x4a')][_0xf553('0x57')]?_0x1cb1a6['attributes']:_0x5ca500[_0xf553('0x44')];if(!_0x4fb231[_0xf553('0x45')]['hasOwnProperty'](_0xf553('0x66'))){_0x1cb1a6[_0xf553('0x2b')]=qs[_0xf553('0x2b')](_0x4fb231[_0xf553('0x45')][_0xf553('0x2b')]);_0x1cb1a6[_0xf553('0x2d')]=qs['offset'](_0x4fb231[_0xf553('0x45')][_0xf553('0x2d')]);}_0x1cb1a6[_0xf553('0x4c')]=qs[_0xf553('0x4d')](_0x4fb231[_0xf553('0x45')][_0xf553('0x4d')]);_0x1cb1a6[_0xf553('0x51')]=qs[_0xf553('0x47')](_[_0xf553('0x4e')](_0x4fb231[_0xf553('0x45')],_0x5ca500[_0xf553('0x47')]));_0x1cb1a6[_0xf553('0x51')][_0xf553('0x62')]=_0x5c58db['id'];if(_0x4fb231[_0xf553('0x45')][_0xf553('0x4f')]){_0x1cb1a6[_0xf553('0x51')]=_[_0xf553('0x50')](_0x1cb1a6[_0xf553('0x51')],{'$or':_[_0xf553('0x3f')](_0x1cb1a6[_0xf553('0x4a')],function(_0x16253f){var _0x1f13ba={};_0x1f13ba[_0x16253f]={'$like':'%'+_0x4fb231[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x1f13ba;})});}_0x1cb1a6=_[_0xf553('0x50')]({},_0x1cb1a6,_0x4fb231[_0xf553('0x52')]);return db[_0xf553('0x63')][_0xf553('0x2c')]({'where':_0x1cb1a6[_0xf553('0x51')]})['then'](function(_0x5c3c0d){_0x2802be[_0xf553('0x2c')]=_0x5c3c0d;if(_0x4fb231[_0xf553('0x45')][_0xf553('0x58')]){_0x1cb1a6[_0xf553('0x67')]=[{'all':!![]}];}return db['Disposition'][_0xf553('0x54')](_0x1cb1a6);})[_0xf553('0x1f')](function(_0xf3f54a){_0x2802be[_0xf553('0x55')]=_0xf3f54a;return _0x2802be;});}})[_0xf553('0x1f')](respondWithFilteredResult(_0x5b71b3,_0x1cb1a6))[_0xf553('0x56')](handleError(_0x5b71b3,null));};exports[_0xf553('0x68')]=function(_0x434b1a,_0xf02ca0,_0x365c89){return db['OpenchannelAccount'][_0xf553('0x59')]({'where':{'id':_0x434b1a[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0xf02ca0,null))['then'](function(_0x31b918){if(_0x31b918){return _0x31b918[_0xf553('0x68')](_0x434b1a[_0xf553('0x45')]['ids']);}})[_0xf553('0x1f')](respondWithStatusCode(_0xf02ca0,null))[_0xf553('0x56')](handleError(_0xf02ca0,null));};exports['addAnswer']=function(_0xe3a8cc,_0xb581f5,_0x277a2c){if(_0xe3a8cc[_0xf553('0x5e')]['id']){delete _0xe3a8cc[_0xf553('0x5e')]['id'];}return db[_0xf553('0x53')][_0xf553('0x59')]({'where':{'id':_0xe3a8cc['params']['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0xb581f5,null))[_0xf553('0x1f')](function(_0x183ca6){if(_0x183ca6){_0xe3a8cc[_0xf553('0x5e')][_0xf553('0x62')]=_0x183ca6['id'];return db[_0xf553('0x69')][_0xf553('0x5a')](_0xe3a8cc['body']);}})['then'](respondWithResult(_0xb581f5,null))[_0xf553('0x56')](handleError(_0xb581f5,null));};exports[_0xf553('0x6a')]=function(_0x24ec30,_0x1a1009,_0x7f59b){var _0x4088ea={'raw':![],'where':{}};var _0x2577a8={};var _0x3a9ff7={'count':0x0,'rows':[]};return db[_0xf553('0x53')][_0xf553('0x65')]({'where':{'id':_0x24ec30[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x1a1009,null))[_0xf553('0x1f')](function(_0x46a111){if(_0x46a111){_0x2577a8[_0xf553('0x44')]=_[_0xf553('0x46')](db[_0xf553('0x69')]['rawAttributes']);_0x2577a8[_0xf553('0x45')]=_[_0xf553('0x46')](_0x24ec30[_0xf553('0x45')]);_0x2577a8['filters']=_['intersection'](_0x2577a8[_0xf553('0x44')],_0x2577a8[_0xf553('0x45')]);_0x4088ea['attributes']=_[_0xf553('0x48')](_0x2577a8[_0xf553('0x44')],qs[_0xf553('0x49')](_0x24ec30['query'][_0xf553('0x49')]));_0x4088ea[_0xf553('0x4a')]=_0x4088ea[_0xf553('0x4a')][_0xf553('0x57')]?_0x4088ea[_0xf553('0x4a')]:_0x2577a8[_0xf553('0x44')];if(!_0x24ec30[_0xf553('0x45')][_0xf553('0x4b')](_0xf553('0x66'))){_0x4088ea[_0xf553('0x2b')]=qs[_0xf553('0x2b')](_0x24ec30[_0xf553('0x45')][_0xf553('0x2b')]);_0x4088ea['offset']=qs[_0xf553('0x2d')](_0x24ec30[_0xf553('0x45')][_0xf553('0x2d')]);}_0x4088ea[_0xf553('0x4c')]=qs['sort'](_0x24ec30[_0xf553('0x45')][_0xf553('0x4d')]);_0x4088ea[_0xf553('0x51')]=qs[_0xf553('0x47')](_[_0xf553('0x4e')](_0x24ec30[_0xf553('0x45')],_0x2577a8[_0xf553('0x47')]));_0x4088ea[_0xf553('0x51')]['OpenchannelAccountId']=_0x46a111['id'];if(_0x24ec30[_0xf553('0x45')][_0xf553('0x4f')]){_0x4088ea[_0xf553('0x51')]=_['merge'](_0x4088ea[_0xf553('0x51')],{'$or':_[_0xf553('0x3f')](_0x4088ea[_0xf553('0x4a')],function(_0x42cae3){var _0x30d344={};_0x30d344[_0x42cae3]={'$like':'%'+_0x24ec30[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x30d344;})});}_0x4088ea=_[_0xf553('0x50')]({},_0x4088ea,_0x24ec30[_0xf553('0x52')]);return db[_0xf553('0x69')][_0xf553('0x2c')]({'where':_0x4088ea['where']})['then'](function(_0x42851c){_0x3a9ff7['count']=_0x42851c;if(_0x24ec30[_0xf553('0x45')][_0xf553('0x58')]){_0x4088ea[_0xf553('0x67')]=[{'all':!![]}];}return db[_0xf553('0x69')][_0xf553('0x54')](_0x4088ea);})[_0xf553('0x1f')](function(_0x3e0977){_0x3a9ff7[_0xf553('0x55')]=_0x3e0977;return _0x3a9ff7;});}})[_0xf553('0x1f')](respondWithFilteredResult(_0x1a1009,_0x4088ea))[_0xf553('0x56')](handleError(_0x1a1009,null));};exports[_0xf553('0x6b')]=function(_0x7a58d6,_0x397cf2,_0x1a1255){return db[_0xf553('0x53')]['find']({'where':{'id':_0x7a58d6['params']['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x397cf2,null))['then'](function(_0x404bde){if(_0x404bde){return _0x404bde[_0xf553('0x6b')](_0x7a58d6[_0xf553('0x45')]['ids']);}})[_0xf553('0x1f')](respondWithStatusCode(_0x397cf2,null))[_0xf553('0x56')](handleError(_0x397cf2,null));};exports['notify']=function(_0x109ecb,_0x36fe8d,_0x467f81){var _0x11aa72={'body':_0x109ecb[_0xf553('0x5e')],'channel':_0xf553('0x6c')};var _0x4292a6=[];var _0x1d2c8a=[];var _0x314468={};var _0xc5e0eb=![];return db[_0xf553('0x6d')]['describe']()[_0xf553('0x1f')](function(_0x129e39){if(!_0x129e39){throw new db[(_0xf553('0x6e'))][(_0xf553('0x6f'))]('no\x20available\x20attributes');}_0x4292a6=_[_0xf553('0x70')](_['keys'](_0x129e39),[_0xf553('0x71'),'updatedAt']);_0x1d2c8a=_[_0xf553('0x70')](_[_0xf553('0x46')](_0x129e39),['createdAt',_0xf553('0x72'),_0xf553('0x73'),_0xf553('0x74')]);if(_0x109ecb['body']['id']){delete _0x109ecb[_0xf553('0x5e')]['id'];}if(_[_0xf553('0x75')](_0x109ecb[_0xf553('0x5e')][_0xf553('0x76')])){throw new db[(_0xf553('0x6e'))]['ValidationError']('from\x20is\x20mandatory');}if(_['isNil'](_0x109ecb['body'][_0xf553('0x5e')])||_0x109ecb[_0xf553('0x5e')][_0xf553('0x5e')]===''){throw new db[(_0xf553('0x6e'))][(_0xf553('0x6f'))](_0xf553('0x77'));}if(_[_0xf553('0x75')](_0x109ecb[_0xf553('0x5e')][_0xf553('0x78')])){throw new db[(_0xf553('0x6e'))]['ValidationError'](_0xf553('0x79')+_0x1d2c8a);}if(!_[_0xf553('0x7a')](_0x1d2c8a,_0x109ecb[_0xf553('0x5e')][_0xf553('0x78')])){throw new db[(_0xf553('0x6e'))][(_0xf553('0x6f'))](_0xf553('0x7b')+_0x1d2c8a);}_0x314468[_0x109ecb[_0xf553('0x5e')][_0xf553('0x78')]]=_0x109ecb[_0xf553('0x5e')][_0xf553('0x76')];})[_0xf553('0x1f')](function(){return db['OpenchannelAccount'][_0xf553('0x59')]({'where':{'id':_0x109ecb[_0xf553('0x5f')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xf553('0x6d')],'as':_0xf553('0x7c'),'where':_0x314468,'limit':0x1,'order':[[_0xf553('0x72'),_0xf553('0x7d')]]}]},{'model':db[_0xf553('0x7e')],'as':_0xf553('0x7f')}]});})[_0xf553('0x1f')](handleEntityNotFound(_0x36fe8d,null))[_0xf553('0x1f')](function(_0x3abf48){if(_0x3abf48&&_0x3abf48['List']){_0x11aa72['account']=_0x3abf48;_0x11aa72[_0xf553('0x80')]=_0x3abf48[_0xf553('0x7f')];_0x11aa72['list']=_0x3abf48[_0xf553('0x81')];_0x11aa72[_0xf553('0x80')]=_[_0xf553('0x82')](_0x11aa72[_0xf553('0x80')],[_0xf553('0x83')],[_0xf553('0x84')]);if(_0x11aa72[_0xf553('0x85')]['Applications']){delete _0x11aa72['account'][_0xf553('0x7f')];}if(_0x11aa72[_0xf553('0x85')][_0xf553('0x81')]&&_0x11aa72[_0xf553('0x85')][_0xf553('0x81')][_0xf553('0x7c')][_0xf553('0x57')]){return _0x11aa72[_0xf553('0x85')][_0xf553('0x81')][_0xf553('0x7c')][0x0];}var _0x5813f4=_[_0xf553('0x17')](_0x109ecb[_0xf553('0x5e')],{'firstName':_0x109ecb['body'][_0xf553('0x76')],'ListId':_0x3abf48['ListId']});_0x5813f4[_0x109ecb[_0xf553('0x5e')]['mapKey']]=_0x109ecb[_0xf553('0x5e')][_0xf553('0x76')];return db[_0xf553('0x6d')][_0xf553('0x5a')](_0x5813f4,{'fields':_0x4292a6,'raw':!![]});}})[_0xf553('0x1f')](handleEntityNotFound(_0x36fe8d,null))['then'](function(_0x4f0616){_0x11aa72[_0xf553('0x86')]=_0x4f0616;if(_0x4f0616){var _0x529005={'ContactId':_0x4f0616['id'],'OpenchannelAccountId':_0x109ecb[_0xf553('0x5f')]['id'],'from':(_0x4f0616['firstName']||'')+'\x20'+(_0x4f0616[_0xf553('0x87')]||'')};var _0x1dc93c={'OpenchannelAccountId':_0x109ecb['params']['id'],'closed':![]};if(_0x109ecb[_0xf553('0x5e')]['threadId']){_0x1dc93c[_0xf553('0x88')]=_0x109ecb[_0xf553('0x5e')][_0xf553('0x88')];return db[_0xf553('0x89')][_0xf553('0x59')]({'where':_0x1dc93c})[_0xf553('0x1f')](function(_0x155416){if(_0x155416){return[_0x155416,![]];}_0x529005[_0xf553('0x88')]=_0x109ecb[_0xf553('0x5e')][_0xf553('0x88')];_0x529005[_0xf553('0x8a')]=_0x109ecb[_0xf553('0x5e')][_0xf553('0x8a')];return db['OpenchannelInteraction'][_0xf553('0x5a')](_0x529005)[_0xf553('0x1f')](function(_0x1dc96a){return[_0x1dc96a,!![]];});});}else{_0x1dc93c[_0xf553('0x88')]=null;}_0x1dc93c[_0xf553('0x8b')]=_0x4f0616['id'];return db[_0xf553('0x89')]['find']({'where':_0x1dc93c})[_0xf553('0x1f')](function(_0x802aa6){if(_0x802aa6){return[_0x802aa6,![]];}return db[_0xf553('0x89')][_0xf553('0x5a')](_0x529005)[_0xf553('0x1f')](function(_0x1e0a25){return[_0x1e0a25,!![]];});});}})['spread'](function(_0x48f90e,_0x1fd199){if(_0x48f90e){_0xc5e0eb=_0x1fd199;if(!_0x1fd199){var _0x261102={'from':(_0x11aa72[_0xf553('0x86')][_0xf553('0x8c')]||'')+'\x20'+(_0x11aa72[_0xf553('0x86')]['lastName']||'')};if(_0x109ecb[_0xf553('0x5e')][_0xf553('0x88')]&&_0x109ecb['body'][_0xf553('0x8d')]&&_0x109ecb['body'][_0xf553('0x88')]!=_0x109ecb[_0xf553('0x5e')]['messageId']){_0x261102['threadId']=_0x109ecb['body'][_0xf553('0x8d')];}return _0x48f90e[_0xf553('0x34')](_0x261102);}else{return _0x48f90e;}}})['then'](function(_0x548267){_0x11aa72[_0xf553('0x8e')]=_0x548267[_0xf553('0x36')]({'plain':!![]});_0x11aa72['interaction'][_0xf553('0x8f')]=_0xc5e0eb;if(_0x11aa72[_0xf553('0x8e')][_0xf553('0x8f')]){if(_0x11aa72['account'][_0xf553('0x90')]){_0x11aa72[_0xf553('0x80')][_0xf553('0x91')]({'id':0x0,'priority':_0x11aa72[_0xf553('0x80')][_0xf553('0x57')]+0x1,'app':_0xf553('0x92'),'appdata':_0xf553('0x93'),'interval':_0xf553('0x94')});}}return db['OpenchannelMessage'][_0xf553('0x5a')]({'body':_0x109ecb['body']['body'],'OpenchannelAccountId':_0x109ecb[_0xf553('0x5f')]['id'],'OpenchannelInteractionId':_0x548267['id'],'direction':'in','ContactId':_0x11aa72[_0xf553('0x86')]['id'],'AttachmentId':_0x109ecb[_0xf553('0x5e')][_0xf553('0x95')]});})[_0xf553('0x1f')](function(_0x5e019c){_0x11aa72[_0xf553('0x25')]=_0x5e019c;if(!_0x11aa72[_0xf553('0x8e')][_0xf553('0x96')])return;return db[_0xf553('0x97')]['find']({'attributes':['id',_0xf553('0x3b')],'where':{'id':_0x11aa72[_0xf553('0x8e')][_0xf553('0x96')]}});})[_0xf553('0x1f')](function(_0x137acc){if(_0x137acc){_0x11aa72[_0xf553('0x80')][_0xf553('0x98')]({'id':0x0,'priority':0x0,'app':_0xf553('0x99'),'appdata':_0x137acc[_0xf553('0x3b')]+','+(_0x11aa72[_0xf553('0x85')][_0xf553('0x9a')]||0xa),'interval':'*,*,*,*'});}if(!_0x11aa72['interaction'][_0xf553('0x9b')])return;return db[_0xf553('0x9c')][_0xf553('0x59')]({'attributes':['id','name'],'where':{'id':_0x11aa72[_0xf553('0x8e')][_0xf553('0x9b')]}});})['then'](function(_0x5846b6){if(_0x5846b6){_0x11aa72[_0xf553('0x80')][_0xf553('0x98')]({'id':0x0,'priority':0x1,'app':_0xf553('0x9d'),'appdata':_0x5846b6[_0xf553('0x3b')]+','+(_0x11aa72['account']['waitForTheAssignedQueue']||0x12c),'interval':_0xf553('0x94')});}return respondWithRpcPromise(_0xf553('0x9e'),_0xf553('0x9f'),_0x11aa72);})[_0xf553('0x1f')](function(_0x4bde96){respondWithRpcPromise('EventManager',_0xf553('0xa0'),{'event':_0xf553('0xa1'),'message':_0x4bde96},client9002);return _0x4bde96;})[_0xf553('0x1f')](respondWithResult(_0x36fe8d,null))[_0xf553('0x56')](handleError(_0x36fe8d,null));};exports[_0xf553('0xa2')]=function(_0x3fcaa4,_0x1f3739){var _0x1805d5=_0x3fcaa4[_0xf553('0x5f')]['id'];var _0x3dfcc9=_0x3fcaa4['body'];var _0xccf2f6=0xc8;var _0x12deb1=null;return db['sequelize'][_0xf553('0xa3')]({'isolationLevel':db[_0xf553('0xa4')][_0xf553('0xa5')][_0xf553('0xa6')][_0xf553('0xa7')]},function(_0x287c2d){return db[_0xf553('0x53')][_0xf553('0x65')]({'where':{'id':_0x1805d5},'transaction':_0x287c2d})[_0xf553('0x1f')](function(_0x6a8b3b){if(_0x6a8b3b){return db['OpenchannelApplication'][_0xf553('0x35')]({'where':{'OpenchannelAccountId':_0x1805d5},'transaction':_0x287c2d})[_0xf553('0x1f')](function(){var _0xa0cfbe=_['map'](_0x3dfcc9,function(_0x2371bd){_0x2371bd[_0xf553('0x62')]=_0x1805d5;return _0x2371bd;});return db['OpenchannelApplication'][_0xf553('0xa8')](_0xa0cfbe,{'transaction':_0x287c2d});});}else{_0xccf2f6=0x194;_0x12deb1=[];}});})['then'](function(){if(_0xccf2f6!==0x194){return db[_0xf553('0x7e')][_0xf553('0xa9')]({'where':{'OpenchannelAccountId':_0x1805d5},'order':_0xf553('0x83')})[_0xf553('0x1f')](function(_0x2ded20){_0x12deb1=_0x2ded20;});}})[_0xf553('0x56')](function(_0x287076){_0xccf2f6=0x1f4;logger[_0xf553('0x24')](_0x287076[_0xf553('0x3a')]);if(_0x287076[_0xf553('0x3b')]){delete _0x287076[_0xf553('0x3b')];}_0x12deb1=_0x287076;})[_0xf553('0xaa')](function(){if(_0x12deb1===null){_0x1f3739[_0xf553('0x39')](_0xccf2f6);}else{if(_0xccf2f6===0x1f4){_0x1f3739[_0xf553('0x28')](_0xccf2f6)[_0xf553('0xab')](_0x12deb1);}else{_0x1f3739[_0xf553('0x28')](_0xccf2f6)[_0xf553('0x30')](_0x12deb1);}}});};exports[_0xf553('0xac')]=function(_0xae8760,_0x1a2a0a,_0x117b4c){var _0x9938aa={};var _0x1c685f={};var _0x55f8da;var _0x51e3eb;return db['OpenchannelAccount'][_0xf553('0x65')]({'where':{'id':_0xae8760['params']['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x1a2a0a,null))[_0xf553('0x1f')](function(_0x3b493c){if(_0x3b493c){_0x55f8da=_0x3b493c;_0x1c685f[_0xf553('0x44')]=_[_0xf553('0x46')](db[_0xf553('0x7e')][_0xf553('0x40')]);_0x1c685f['query']=_[_0xf553('0x46')](_0xae8760[_0xf553('0x45')]);_0x1c685f[_0xf553('0x47')]=_[_0xf553('0x48')](_0x1c685f[_0xf553('0x44')],_0x1c685f[_0xf553('0x45')]);_0x9938aa[_0xf553('0x4a')]=_[_0xf553('0x48')](_0x1c685f[_0xf553('0x44')],qs[_0xf553('0x49')](_0xae8760['query'][_0xf553('0x49')]));_0x9938aa[_0xf553('0x4a')]=_0x9938aa[_0xf553('0x4a')]['length']?_0x9938aa[_0xf553('0x4a')]:_0x1c685f[_0xf553('0x44')];_0x9938aa[_0xf553('0x4c')]=qs[_0xf553('0x4d')](_0xae8760[_0xf553('0x45')]['sort']);_0x9938aa[_0xf553('0x51')]=qs[_0xf553('0x47')](_[_0xf553('0x4e')](_0xae8760[_0xf553('0x45')],_0x1c685f[_0xf553('0x47')]));if(_0xae8760['query'][_0xf553('0x4f')]){_0x9938aa[_0xf553('0x51')]=_[_0xf553('0x50')](_0x9938aa[_0xf553('0x51')],{'$or':_[_0xf553('0x3f')](_0x9938aa[_0xf553('0x4a')],function(_0x1b15a5){var _0x193939={};_0x193939[_0x1b15a5]={'$like':'%'+_0xae8760[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x193939;})});}_0x9938aa=_[_0xf553('0x50')]({},_0x9938aa,_0xae8760[_0xf553('0x52')]);return _0x55f8da[_0xf553('0xac')](_0x9938aa);}})['then'](function(_0x38c833){if(_0x38c833){_0x51e3eb=_0x38c833[_0xf553('0x57')];if(!_0xae8760[_0xf553('0x45')]['hasOwnProperty']('nolimit')){_0x9938aa[_0xf553('0x2b')]=qs['limit'](_0xae8760[_0xf553('0x45')]['limit']);_0x9938aa[_0xf553('0x2d')]=qs['offset'](_0xae8760['query'][_0xf553('0x2d')]);}return _0x55f8da[_0xf553('0xac')](_0x9938aa);}})[_0xf553('0x1f')](function(_0x2673fd){if(_0x2673fd){return _0x2673fd?{'count':_0x51e3eb,'rows':_0x2673fd}:null;}})[_0xf553('0x1f')](respondWithResult(_0x1a2a0a,null))[_0xf553('0x56')](handleError(_0x1a2a0a,null));};exports[_0xf553('0xad')]=function(_0x24243c,_0xdf4eba,_0x2944ab){var _0x51c3fb={'raw':![],'where':{}};var _0x4c362d={};var _0xa51140={'count':0x0,'rows':[]};return db[_0xf553('0x53')][_0xf553('0x65')]({'where':{'id':_0x24243c[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0xdf4eba,null))[_0xf553('0x1f')](function(_0x3d7c58){if(_0x3d7c58){_0x4c362d['model']=_[_0xf553('0x46')](db['OpenchannelInteraction'][_0xf553('0x40')]);_0x4c362d[_0xf553('0x45')]=_[_0xf553('0x46')](_0x24243c[_0xf553('0x45')]);_0x4c362d[_0xf553('0x47')]=_[_0xf553('0x48')](_0x4c362d[_0xf553('0x44')],_0x4c362d[_0xf553('0x45')]);_0x51c3fb[_0xf553('0x4a')]=_['intersection'](_0x4c362d[_0xf553('0x44')],qs[_0xf553('0x49')](_0x24243c[_0xf553('0x45')][_0xf553('0x49')]));_0x51c3fb[_0xf553('0x4a')]=_0x51c3fb['attributes'][_0xf553('0x57')]?_0x51c3fb[_0xf553('0x4a')]:_0x4c362d[_0xf553('0x44')];if(!_0x24243c[_0xf553('0x45')][_0xf553('0x4b')](_0xf553('0x66'))){_0x51c3fb[_0xf553('0x2b')]=qs[_0xf553('0x2b')](_0x24243c[_0xf553('0x45')][_0xf553('0x2b')]);_0x51c3fb[_0xf553('0x2d')]=qs[_0xf553('0x2d')](_0x24243c[_0xf553('0x45')][_0xf553('0x2d')]);}_0x51c3fb[_0xf553('0x4c')]=qs[_0xf553('0x4d')](_0x24243c[_0xf553('0x45')][_0xf553('0x4d')]);_0x51c3fb[_0xf553('0x51')]=qs['filters'](_['pick'](_0x24243c[_0xf553('0x45')],_0x4c362d[_0xf553('0x47')]));_0x51c3fb[_0xf553('0x51')][_0xf553('0x62')]=_0x3d7c58['id'];if(_0x24243c['query'][_0xf553('0x4f')]){_0x51c3fb[_0xf553('0x51')]=_[_0xf553('0x50')](_0x51c3fb[_0xf553('0x51')],{'$or':_[_0xf553('0x3f')](_0x51c3fb[_0xf553('0x4a')],function(_0x56e900){var _0x2001ad={};_0x2001ad[_0x56e900]={'$like':'%'+_0x24243c[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x2001ad;})});}_0x51c3fb=_[_0xf553('0x50')]({},_0x51c3fb,_0x24243c[_0xf553('0x52')]);return db['OpenchannelInteraction'][_0xf553('0x2c')]({'where':_0x51c3fb[_0xf553('0x51')]})[_0xf553('0x1f')](function(_0x10f244){_0xa51140['count']=_0x10f244;if(_0x24243c[_0xf553('0x45')][_0xf553('0x58')]){_0x51c3fb[_0xf553('0x67')]=[{'model':db['CmContact'],'as':_0xf553('0xae'),'required':![]},{'model':db[_0xf553('0x97')],'as':_0xf553('0xaf'),'attributes':['name','fullname',_0xf553('0xb0')],'required':![]},{'model':db[_0xf553('0xb1')],'as':_0xf553('0xb2'),'attributes':['id','name',_0xf553('0xb3')],'where':_0x24243c[_0xf553('0x45')][_0xf553('0xb4')]?{'id':_0x24243c[_0xf553('0x45')][_0xf553('0xb4')]}:undefined,'required':_0x24243c[_0xf553('0x45')][_0xf553('0xb4')]?!![]:![]}];}return db['OpenchannelInteraction'][_0xf553('0x54')](_0x51c3fb);})[_0xf553('0x1f')](function(_0x4ba5b0){_0xa51140[_0xf553('0x55')]=_0x4ba5b0;return _0xa51140;});}})[_0xf553('0x1f')](respondWithFilteredResult(_0xdf4eba,_0x51c3fb))[_0xf553('0x56')](handleError(_0xdf4eba,null));};exports[_0xf553('0xb5')]=function(_0x99cda,_0x273b80,_0x5cb3e6){return db[_0xf553('0x53')][_0xf553('0x59')]({'where':{'id':_0x99cda[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x273b80,null))['then'](function(_0x32f3c9){if(_0x32f3c9){return _0x32f3c9[_0xf553('0xb5')](_0x99cda[_0xf553('0x5e')]['ids'],_[_0xf553('0xb6')](_0x99cda[_0xf553('0x5e')],[_0xf553('0xb7'),'id'])||{})[_0xf553('0xb8')](function(_0x70c643){for(var _0x18f772=0x0;_0x18f772<_0x99cda['body'][_0xf553('0xb7')]['length'];_0x18f772+=0x1){socket['emit'](_0xf553('0xb9'),{'UserId':Number(_0x99cda['body']['ids'][_0x18f772]),'OpenchannelAccountId':Number(_0x99cda[_0xf553('0x5f')]['id'])});}return _0x70c643;});}})['then'](respondWithResult(_0x273b80,null))[_0xf553('0x56')](handleError(_0x273b80,null));};exports['removeAgents']=function(_0x347669,_0xd257d8,_0x5416b6){return db[_0xf553('0x53')]['find']({'where':{'id':_0x347669['params']['id']}})['then'](handleEntityNotFound(_0xd257d8,null))[_0xf553('0x1f')](function(_0x553aa0){if(_0x553aa0){return _0x553aa0['removeAgents'](_0x347669[_0xf553('0x45')][_0xf553('0xb7')])[_0xf553('0x1f')](function(){if(_[_0xf553('0xba')](_0x347669[_0xf553('0x45')][_0xf553('0xb7')])){for(var _0x121641=0x0;_0x121641<_0x347669[_0xf553('0x45')]['ids'][_0xf553('0x57')];_0x121641+=0x1){socket[_0xf553('0xbb')]('userOpenchannelAccount:remove',{'UserId':Number(_0x347669[_0xf553('0x45')][_0xf553('0xb7')][_0x121641]),'OpenchannelAccountId':Number(_0x347669[_0xf553('0x5f')]['id'])});}}else{socket[_0xf553('0xbb')](_0xf553('0xbc'),{'UserId':Number(_0x347669[_0xf553('0x45')][_0xf553('0xb7')]),'OpenchannelAccountId':Number(_0x347669[_0xf553('0x5f')]['id'])});}});}})['then'](respondWithStatusCode(_0xd257d8,null))[_0xf553('0x56')](handleError(_0xd257d8,null));};exports['getAgents']=function(_0x125034,_0x75649b,_0x32e8fb){var _0x45767c={};var _0x2822d5={};var _0x5ca738;var _0xa1a952;return db[_0xf553('0x53')][_0xf553('0x65')]({'where':{'id':_0x125034['params']['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x75649b,null))[_0xf553('0x1f')](function(_0x2d7425){if(_0x2d7425){_0x5ca738=_0x2d7425;_0x2822d5['model']=_['keys'](db['User'][_0xf553('0x40')]);_0x2822d5[_0xf553('0x45')]=_[_0xf553('0x46')](_0x125034[_0xf553('0x45')]);_0x2822d5[_0xf553('0x47')]=_[_0xf553('0x48')](_0x2822d5['model'],_0x2822d5[_0xf553('0x45')]);_0x45767c[_0xf553('0x4a')]=_[_0xf553('0x48')](_0x2822d5[_0xf553('0x44')],qs[_0xf553('0x49')](_0x125034[_0xf553('0x45')][_0xf553('0x49')]));_0x45767c[_0xf553('0x4a')]=_0x45767c['attributes']['length']?_0x45767c[_0xf553('0x4a')]:_0x2822d5[_0xf553('0x44')];_0x45767c[_0xf553('0x4c')]=qs[_0xf553('0x4d')](_0x125034[_0xf553('0x45')][_0xf553('0x4d')]);_0x45767c[_0xf553('0x51')]=qs['filters'](_[_0xf553('0x4e')](_0x125034[_0xf553('0x45')],_0x2822d5[_0xf553('0x47')]));if(_0x125034[_0xf553('0x45')]['filter']){_0x45767c[_0xf553('0x51')]=_['merge'](_0x45767c['where'],{'$or':_[_0xf553('0x3f')](_0x45767c[_0xf553('0x4a')],function(_0x26e170){var _0x653891={};_0x653891[_0x26e170]={'$like':'%'+_0x125034[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x653891;})});}_0x45767c=_[_0xf553('0x50')]({},_0x45767c,_0x125034[_0xf553('0x52')]);return _0x5ca738[_0xf553('0xbd')](_0x45767c);}})[_0xf553('0x1f')](function(_0x14f990){if(_0x14f990){_0xa1a952=_0x14f990['length'];if(!_0x125034[_0xf553('0x45')]['hasOwnProperty']('nolimit')){_0x45767c['limit']=qs[_0xf553('0x2b')](_0x125034[_0xf553('0x45')][_0xf553('0x2b')]);_0x45767c['offset']=qs[_0xf553('0x2d')](_0x125034[_0xf553('0x45')][_0xf553('0x2d')]);}return _0x5ca738[_0xf553('0xbd')](_0x45767c);}})[_0xf553('0x1f')](function(_0x509707){if(_0x509707){return _0x509707?{'count':_0xa1a952,'rows':_0x509707}:null;}})[_0xf553('0x1f')](respondWithResult(_0x75649b,null))['catch'](handleError(_0x75649b,null));};exports[_0xf553('0xab')]=function(_0x40b761,_0x5335ee,_0x5bf161){var _0x480e18,_0x4f7c32,_0x371b39;if(_[_0xf553('0x75')](_0x40b761[_0xf553('0x5e')][_0xf553('0x5e')])||_0x40b761[_0xf553('0x5e')][_0xf553('0x5e')]===''){throw new db[(_0xf553('0x6e'))][(_0xf553('0x6f'))](_0xf553('0x77'));}if(_['isNil'](_0x40b761[_0xf553('0x5e')]['to'])){}_0x480e18=_0x40b761[_0xf553('0x5e')]['to'];return db['OpenchannelAccount'][_0xf553('0x65')]({'where':{'id':_0x40b761[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x5335ee,null))['then'](function(_0x2f1075){if(_0x2f1075){return db[_0xf553('0x53')][_0xf553('0x59')]({'where':{'id':_0x2f1075['id']},'include':[{'model':db[_0xf553('0xbe')],'as':_0xf553('0x81'),'include':[{'model':db['CmContact'],'as':_0xf553('0x7c'),'where':{[_0x2f1075[_0xf553('0x78')]]:_0x480e18},'limit':0x1,'order':[[_0xf553('0x72'),_0xf553('0x7d')]]}]}]})[_0xf553('0x1f')](handleEntityNotFound(_0x5335ee,null))[_0xf553('0x1f')](function(_0x37c738){if(_0x37c738&&_0x37c738['List']){_0x4f7c32=_0x37c738['get']({'plain':!![]});if(_0x4f7c32[_0xf553('0x81')]&&_0x4f7c32[_0xf553('0x81')]['Contacts']['length']){return _0x4f7c32[_0xf553('0x81')][_0xf553('0x7c')][0x0];}return db['CmContact'][_0xf553('0x5a')](_['defaults'](_0x40b761[_0xf553('0x5e')],{'firstName':_0x480e18,[_0x37c738[_0xf553('0x78')]]:_0x480e18,'phone':_0x480e18,'ListId':_0x4f7c32[_0xf553('0x74')]}));}})['then'](handleEntityNotFound(_0x5335ee,null))['then'](function(_0x991959){if(_0x991959){_0x371b39=_0x991959;return db[_0xf553('0x89')][_0xf553('0x59')]({'where':{'ContactId':_0x371b39['id'],'closed':![],'OpenchannelAccountId':_0x4f7c32['id']}})[_0xf553('0x1f')](function(_0x485c0e){if(_0x485c0e){return[_0x485c0e,![]];}return db[_0xf553('0x89')][_0xf553('0x5a')]({'UserId':_0x40b761[_0xf553('0x5b')]['id'],'ContactId':_0x371b39['id'],'OpenchannelAccountId':_0x4f7c32['id'],'lastMsgDirection':'out','firstMsgDirection':_0xf553('0xbf'),'Messages':[_[_0xf553('0x50')](_0x40b761[_0xf553('0x5e')],{'read':![],'body':_0x40b761[_0xf553('0x5e')][_0xf553('0x5e')],'OpenchannelAccountId':_0x4f7c32['id'],'UserId':_0x40b761[_0xf553('0x5b')]['id'],'ContactId':_0x371b39['id']})]},{'include':[{'model':db[_0xf553('0xc0')],'as':'Messages'}]})[_0xf553('0x1f')](function(_0x134f29){return[_0x134f29,!![]];});});}})[_0xf553('0xb8')](function(_0x3dc207,_0x2b96b4){if(_0x2b96b4){return _0x3dc207;}return db[_0xf553('0xc0')]['create'](_[_0xf553('0x50')](_0x40b761['body'],{'read':![],'body':_0x40b761[_0xf553('0x5e')][_0xf553('0x5e')],'OpenchannelAccountId':_0x4f7c32['id'],'OpenchannelInteractionId':_0x3dc207['id'],'UserId':_0x40b761[_0xf553('0x5b')]['id'],'ContactId':_0x371b39['id']}))[_0xf553('0x1f')](function(_0x3be965){_0x3dc207[_0xf553('0xc1')]['Messages']=[];_0x3dc207[_0xf553('0xc1')][_0xf553('0xc2')]['push'](_0x3be965[_0xf553('0xc1')]);return _0x3dc207;});});}})['then'](respondWithResult(_0x5335ee,null))[_0xf553('0x56')](handleError(_0x5335ee,null));};
\ No newline at end of file
index 80f47f0..dda1caa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['../../mysqldb','OpenchannelAccount','setMaxListeners','update','remove','hasOwnProperty','exports','events'];(function(_0x5d7d6b,_0x3e1cde){var _0x2e5b64=function(_0x271709){while(--_0x271709){_0x5d7d6b['push'](_0x5d7d6b['shift']());}};_0x2e5b64(++_0x3e1cde);}(_0xaa88,0x137));var _0x8aa8=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xaa88[_0x138adb];return _0x1b27f2;};'use strict';var EventEmitter=require(_0x8aa8('0x0'));var OpenchannelAccount=require(_0x8aa8('0x1'))['db'][_0x8aa8('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8aa8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8aa8('0x4'),'afterDestroy':_0x8aa8('0x5')};function emitEvent(_0x43f7e4){return function(_0x3b2c88,_0x3e3b70,_0x350e8b){OpenchannelAccountEvents['emit'](_0x43f7e4+':'+_0x3b2c88['id'],_0x3b2c88);OpenchannelAccountEvents['emit'](_0x43f7e4,_0x3b2c88);_0x350e8b(null);};}for(var e in events){if(events[_0x8aa8('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0x8aa8('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x13f6=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x2dde04,_0x1b2c52){var _0x3be2b3=function(_0x3cd8d8){while(--_0x3cd8d8){_0x2dde04['push'](_0x2dde04['shift']());}};_0x3be2b3(++_0x1b2c52);}(_0x13f6,0x124));var _0x613f=function(_0x791916,_0x340092){_0x791916=_0x791916-0x0;var _0x238044=_0x13f6[_0x791916];return _0x238044;};'use strict';var EventEmitter=require(_0x613f('0x0'));var OpenchannelAccount=require(_0x613f('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x613f('0x2'),'afterUpdate':_0x613f('0x3'),'afterDestroy':_0x613f('0x4')};function emitEvent(_0x5414ff){return function(_0x179f6e,_0x1e01e3,_0x20af2f){OpenchannelAccountEvents['emit'](_0x5414ff+':'+_0x179f6e['id'],_0x179f6e);OpenchannelAccountEvents[_0x613f('0x5')](_0x5414ff,_0x179f6e);_0x20af2f(null);};}for(var e in events){if(events[_0x613f('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index 43b14a8..a37c89c 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(_0x2af5cd,_0x52ba10){var _0x14aaa0=function(_0x49de7a){while(--_0x49de7a){_0x2af5cd['push'](_0x2af5cd['shift']());}};_0x14aaa0(++_0x52ba10);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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(_0x5c6cf9,_0x27f516){var _0x3bc762=function(_0x4b5add){while(--_0x4b5add){_0x5c6cf9['push'](_0x5c6cf9['shift']());}};_0x3bc762(++_0x27f516);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'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 7583f19..217fcaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00b3=['OpenchannelAccount,\x20%s,\x20%s','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','./openchannelAccount.socket','register','then','info','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2d126e,_0x1e8257){var _0xcb04d3=function(_0x19a2d9){while(--_0x19a2d9){_0x2d126e['push'](_0x2d126e['shift']());}};_0xcb04d3(++_0x1e8257);}(_0x00b3,0x17a));var _0x300b=function(_0x49fd8a,_0x5656b9){_0x49fd8a=_0x49fd8a-0x0;var _0x40d07a=_0x00b3[_0x49fd8a];return _0x40d07a;};'use strict';var _=require('lodash');var util=require(_0x300b('0x0'));var moment=require(_0x300b('0x1'));var BPromise=require(_0x300b('0x2'));var rs=require(_0x300b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x300b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x300b('0x5'))('rpc');var config=require(_0x300b('0x6'));var jayson=require(_0x300b('0x7'));var client=jayson[_0x300b('0x8')][_0x300b('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x300b('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x300b('0xa')]));require(_0x300b('0xb'))[_0x300b('0xc')](socket);function respondWithRpcPromise(_0x4d8d78,_0x42e5a5,_0x3d907e){return new BPromise(function(_0x243abf,_0x212b2b){return client['request'](_0x4d8d78,_0x3d907e)[_0x300b('0xd')](function(_0x2eeb2d){logger[_0x300b('0xe')]('OpenchannelAccount,\x20%s,\x20%s',_0x42e5a5,_0x300b('0xf'));logger[_0x300b('0x10')](_0x300b('0x11'),_0x42e5a5,_0x300b('0xf'),JSON[_0x300b('0x12')](_0x2eeb2d));if(_0x2eeb2d[_0x300b('0x13')]){if(_0x2eeb2d[_0x300b('0x13')][_0x300b('0x14')]===0x1f4){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x42e5a5,_0x2eeb2d['error']['message']);return _0x212b2b(_0x2eeb2d[_0x300b('0x13')][_0x300b('0x15')]);}logger[_0x300b('0x13')](_0x300b('0x16'),_0x42e5a5,_0x2eeb2d['error']['message']);return _0x243abf(_0x2eeb2d[_0x300b('0x13')][_0x300b('0x15')]);}else{logger[_0x300b('0xe')](_0x300b('0x16'),_0x42e5a5,'request\x20sent');_0x243abf(_0x2eeb2d[_0x300b('0x17')][_0x300b('0x15')]);}})[_0x300b('0x18')](function(_0x5cba7c){logger[_0x300b('0x13')](_0x300b('0x16'),_0x42e5a5,_0x5cba7c);_0x212b2b(_0x5cba7c);});});}
\ No newline at end of file
+var _0x8f59=['redis','localhost','socket.io-emitter','register','info','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelAccount,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x8f59,0x11d));var _0x98f5=function(_0x1d2f15,_0x1107c6){_0x1d2f15=_0x1d2f15-0x0;var _0x19efd2=_0x8f59[_0x1d2f15];return _0x19efd2;};'use strict';var _=require(_0x98f5('0x0'));var util=require(_0x98f5('0x1'));var moment=require(_0x98f5('0x2'));var BPromise=require(_0x98f5('0x3'));var rs=require(_0x98f5('0x4'));var fs=require('fs');var Redis=require(_0x98f5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x98f5('0x6'));var logger=require(_0x98f5('0x7'))(_0x98f5('0x8'));var config=require(_0x98f5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x98f5('0xa')][_0x98f5('0xb')]({'port':0x232a});config[_0x98f5('0xc')]=_['defaults'](config['redis'],{'host':_0x98f5('0xd'),'port':0x18eb});var socket=require(_0x98f5('0xe'))(new Redis(config[_0x98f5('0xc')]));require('./openchannelAccount.socket')[_0x98f5('0xf')](socket);function respondWithRpcPromise(_0x31b669,_0x227cf3,_0x39e85d){return new BPromise(function(_0x4c4abc,_0x26a0fc){return client['request'](_0x31b669,_0x39e85d)['then'](function(_0x3cf4b2){logger[_0x98f5('0x10')]('OpenchannelAccount,\x20%s,\x20%s',_0x227cf3,_0x98f5('0x11'));logger[_0x98f5('0x12')](_0x98f5('0x13'),_0x227cf3,_0x98f5('0x11'),JSON[_0x98f5('0x14')](_0x3cf4b2));if(_0x3cf4b2[_0x98f5('0x15')]){if(_0x3cf4b2['error'][_0x98f5('0x16')]===0x1f4){logger[_0x98f5('0x15')]('OpenchannelAccount,\x20%s,\x20%s',_0x227cf3,_0x3cf4b2[_0x98f5('0x15')][_0x98f5('0x17')]);return _0x26a0fc(_0x3cf4b2[_0x98f5('0x15')]['message']);}logger[_0x98f5('0x15')](_0x98f5('0x18'),_0x227cf3,_0x3cf4b2[_0x98f5('0x15')]['message']);return _0x4c4abc(_0x3cf4b2[_0x98f5('0x15')][_0x98f5('0x17')]);}else{logger['info'](_0x98f5('0x18'),_0x227cf3,'request\x20sent');_0x4c4abc(_0x3cf4b2[_0x98f5('0x19')][_0x98f5('0x17')]);}})[_0x98f5('0x1a')](function(_0x11b6d4){logger[_0x98f5('0x15')](_0x98f5('0x18'),_0x227cf3,_0x11b6d4);_0x26a0fc(_0x11b6d4);});});}
\ No newline at end of file
index 11b9b1d..47b18df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c6d=['emit','removeListener','register','length','openchannelAccount:','./openchannelAccount.events','save','remove','update'];(function(_0x39f8ae,_0x1079b7){var _0x2de47f=function(_0x108a74){while(--_0x108a74){_0x39f8ae['push'](_0x39f8ae['shift']());}};_0x2de47f(++_0x1079b7);}(_0x4c6d,0x1d0));var _0xd4c6=function(_0x9c473d,_0x102fa4){_0x9c473d=_0x9c473d-0x0;var _0x25369d=_0x4c6d[_0x9c473d];return _0x25369d;};'use strict';var OpenchannelAccountEvents=require(_0xd4c6('0x0'));var events=[_0xd4c6('0x1'),_0xd4c6('0x2'),_0xd4c6('0x3')];function createListener(_0x350cc0,_0x5448bc){return function(_0x209f99){_0x5448bc[_0xd4c6('0x4')](_0x350cc0,_0x209f99);};}function removeListener(_0x306766,_0x4b2d75){return function(){OpenchannelAccountEvents[_0xd4c6('0x5')](_0x306766,_0x4b2d75);};}exports[_0xd4c6('0x6')]=function(_0x56279c){for(var _0x182671=0x0,_0x316314=events[_0xd4c6('0x7')];_0x182671<_0x316314;_0x182671++){var _0x5d4fce=events[_0x182671];var _0x440ee3=createListener(_0xd4c6('0x8')+_0x5d4fce,_0x56279c);OpenchannelAccountEvents['on'](_0x5d4fce,_0x440ee3);}};
\ No newline at end of file
+var _0xfa68=['openchannelAccount:','./openchannelAccount.events','save','remove','removeListener','register','length'];(function(_0x3e93cf,_0xfdfabc){var _0x4bbcfc=function(_0x3d488a){while(--_0x3d488a){_0x3e93cf['push'](_0x3e93cf['shift']());}};_0x4bbcfc(++_0xfdfabc);}(_0xfa68,0x86));var _0x8fa6=function(_0x5ac720,_0x3f66ac){_0x5ac720=_0x5ac720-0x0;var _0xe79cd7=_0xfa68[_0x5ac720];return _0xe79cd7;};'use strict';var OpenchannelAccountEvents=require(_0x8fa6('0x0'));var events=[_0x8fa6('0x1'),_0x8fa6('0x2'),'update'];function createListener(_0x16029c,_0x3debfe){return function(_0x3cb0da){_0x3debfe['emit'](_0x16029c,_0x3cb0da);};}function removeListener(_0x1fba3b,_0x2a63d9){return function(){OpenchannelAccountEvents[_0x8fa6('0x3')](_0x1fba3b,_0x2a63d9);};}exports[_0x8fa6('0x4')]=function(_0x3d75c1){for(var _0x4f68b4=0x0,_0x1ab645=events[_0x8fa6('0x5')];_0x4f68b4<_0x1ab645;_0x4f68b4++){var _0x523f62=events[_0x4f68b4];var _0x1cdf94=createListener(_0x8fa6('0x6')+_0x523f62,_0x3d75c1);OpenchannelAccountEvents['on'](_0x523f62,_0x1cdf94);}};
\ No newline at end of file
index 5aa7d8f..ca64b97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0b8=['get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelApplication.controller'];(function(_0x1055a1,_0x329e6a){var _0x42a061=function(_0x1c276d){while(--_0x1c276d){_0x1055a1['push'](_0x1055a1['shift']());}};_0x42a061(++_0x329e6a);}(_0xa0b8,0x172));var _0x8a0b=function(_0x49a1a0,_0x48f776){_0x49a1a0=_0x49a1a0-0x0;var _0x518a4f=_0xa0b8[_0x49a1a0];return _0x518a4f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8a0b('0x0'));var timeout=require(_0x8a0b('0x1'));var express=require(_0x8a0b('0x2'));var router=express[_0x8a0b('0x3')]();var fs_extra=require(_0x8a0b('0x4'));var auth=require(_0x8a0b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8a0b('0x6'));var controller=require(_0x8a0b('0x7'));router[_0x8a0b('0x8')]('/',auth[_0x8a0b('0x9')](),controller['index']);router[_0x8a0b('0x8')](_0x8a0b('0xa'),auth[_0x8a0b('0x9')](),controller[_0x8a0b('0xb')]);router[_0x8a0b('0xc')]('/',auth[_0x8a0b('0x9')](),controller[_0x8a0b('0xd')]);router[_0x8a0b('0xe')](_0x8a0b('0xa'),auth[_0x8a0b('0x9')](),controller[_0x8a0b('0xf')]);router[_0x8a0b('0x10')]('/:id',auth[_0x8a0b('0x9')](),controller[_0x8a0b('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x3d37=['fs-extra','../../components/interaction/service','./openchannelApplication.controller','isAuthenticated','index','get','/:id','show','put','update','delete','destroy','exports','multer','connect-timeout','express'];(function(_0x482066,_0x3bd937){var _0x49dc8b=function(_0x10cddc){while(--_0x10cddc){_0x482066['push'](_0x482066['shift']());}};_0x49dc8b(++_0x3bd937);}(_0x3d37,0x1ad));var _0x73d3=function(_0x992c5d,_0x38fbf8){_0x992c5d=_0x992c5d-0x0;var _0x11c861=_0x3d37[_0x992c5d];return _0x11c861;};'use strict';var multer=require(_0x73d3('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x73d3('0x1'));var express=require(_0x73d3('0x2'));var router=express['Router']();var fs_extra=require(_0x73d3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x73d3('0x4'));var config=require('../../config/environment');var controller=require(_0x73d3('0x5'));router['get']('/',auth[_0x73d3('0x6')](),controller[_0x73d3('0x7')]);router[_0x73d3('0x8')](_0x73d3('0x9'),auth[_0x73d3('0x6')](),controller[_0x73d3('0xa')]);router['post']('/',auth[_0x73d3('0x6')](),controller['create']);router[_0x73d3('0xb')](_0x73d3('0x9'),auth[_0x73d3('0x6')](),controller[_0x73d3('0xc')]);router[_0x73d3('0xd')](_0x73d3('0x9'),auth[_0x73d3('0x6')](),controller[_0x73d3('0xe')]);module[_0x73d3('0xf')]=router;
\ No newline at end of file
index f46cd88..31c1f0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe64f=['exports','INTEGER','STRING','noop','*,*,*,*'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xe64f,0x1b3));var _0xfe64=function(_0x3a5239,_0x1876d0){_0x3a5239=_0x3a5239-0x0;var _0x556232=_0xe64f[_0x3a5239];return _0x556232;};'use strict';var Sequelize=require('sequelize');module[_0xfe64('0x0')]={'priority':{'type':Sequelize[_0xfe64('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xfe64('0x2')],'allowNull':![],'defaultValue':_0xfe64('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xfe64('0x2')],'defaultValue':_0xfe64('0x4')}};
\ No newline at end of file
+var _0x790e=['sequelize','INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0xd89b63,_0x27b39f){var _0x32980b=function(_0x119995){while(--_0x119995){_0xd89b63['push'](_0xd89b63['shift']());}};_0x32980b(++_0x27b39f);}(_0x790e,0xf0));var _0xe790=function(_0x3a46df,_0xda8b5a){_0x3a46df=_0x3a46df-0x0;var _0x5df0c7=_0x790e[_0x3a46df];return _0x5df0c7;};'use strict';var Sequelize=require(_0xe790('0x0'));module['exports']={'priority':{'type':Sequelize[_0xe790('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xe790('0x2')],'allowNull':![],'defaultValue':_0xe790('0x3')},'appdata':{'type':Sequelize[_0xe790('0x4')]()},'description':{'type':Sequelize[_0xe790('0x2')]},'interval':{'type':Sequelize[_0xe790('0x2')],'defaultValue':_0xe790('0x5')}};
\ No newline at end of file
index b33bd12..7f822fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc524=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','map','OpenchannelApplication','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','keys','find','create','body','destroy'];(function(_0x5a9c9b,_0x4d90b1){var _0x442380=function(_0x1c4e91){while(--_0x1c4e91){_0x5a9c9b['push'](_0x5a9c9b['shift']());}};_0x442380(++_0x4d90b1);}(_0xc524,0xde));var _0x4c52=function(_0x2b5511,_0x325913){_0x2b5511=_0x2b5511-0x0;var _0x11efd4=_0xc524[_0x2b5511];return _0x11efd4;};'use strict';var emlformat=require(_0x4c52('0x0'));var rimraf=require(_0x4c52('0x1'));var zipdir=require(_0x4c52('0x2'));var jsonpatch=require(_0x4c52('0x3'));var rp=require(_0x4c52('0x4'));var moment=require(_0x4c52('0x5'));var BPromise=require(_0x4c52('0x6'));var Mustache=require(_0x4c52('0x7'));var util=require(_0x4c52('0x8'));var path=require(_0x4c52('0x9'));var sox=require(_0x4c52('0xa'));var csv=require(_0x4c52('0xb'));var ejs=require(_0x4c52('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4c52('0xd'));var squel=require('squel');var crypto=require(_0x4c52('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4c52('0xb'));var querystring=require(_0x4c52('0xf'));var Papa=require(_0x4c52('0x10'));var Redis=require('ioredis');var authService=require(_0x4c52('0x11'));var qs=require(_0x4c52('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4c52('0x13'));var logger=require(_0x4c52('0x14'))(_0x4c52('0x15'));var utils=require(_0x4c52('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x4c52('0x17'));var db=require(_0x4c52('0x18'))['db'];function respondWithStatusCode(_0x1d2156,_0x3da0c2){_0x3da0c2=_0x3da0c2||0xcc;return function(_0x3eed37){if(_0x3eed37){return _0x1d2156['sendStatus'](_0x3da0c2);}return _0x1d2156[_0x4c52('0x19')](_0x3da0c2)[_0x4c52('0x1a')]();};}function respondWithResult(_0x182662,_0x3aafab){_0x3aafab=_0x3aafab||0xc8;return function(_0xd313eb){if(_0xd313eb){return _0x182662[_0x4c52('0x19')](_0x3aafab)[_0x4c52('0x1b')](_0xd313eb);}};}function respondWithFilteredResult(_0x35115e,_0x634efa){return function(_0x794f5d){if(_0x794f5d){var _0x300066=typeof _0x634efa[_0x4c52('0x1c')]===_0x4c52('0x1d')&&typeof _0x634efa['limit']===_0x4c52('0x1d');var _0x298284=_0x794f5d[_0x4c52('0x1e')];var _0x28c403=_0x300066?0x0:_0x634efa['offset'];var _0x595942=_0x300066?_0x794f5d[_0x4c52('0x1e')]:_0x634efa[_0x4c52('0x1c')]+_0x634efa[_0x4c52('0x1f')];var _0x1f9f07;if(_0x595942>=_0x298284){_0x595942=_0x298284;_0x1f9f07=0xc8;}else{_0x1f9f07=0xce;}_0x35115e[_0x4c52('0x19')](_0x1f9f07);return _0x35115e['set'](_0x4c52('0x20'),_0x28c403+'-'+_0x595942+'/'+_0x298284)[_0x4c52('0x1b')](_0x794f5d);}return null;};}function patchUpdates(_0x474e8e){return function(_0x5d0a05){try{jsonpatch[_0x4c52('0x21')](_0x5d0a05,_0x474e8e,!![]);}catch(_0x233220){return BPromise[_0x4c52('0x22')](_0x233220);}return _0x5d0a05[_0x4c52('0x23')]();};}function saveUpdates(_0x4a29c6,_0x262b95){return function(_0x27fb06){if(_0x27fb06){return _0x27fb06[_0x4c52('0x24')](_0x4a29c6)['then'](function(_0x5a9a2b){return _0x5a9a2b;});}return null;};}function removeEntity(_0x493faa,_0x2685d3){return function(_0x1c6dfb){if(_0x1c6dfb){return _0x1c6dfb['destroy']()[_0x4c52('0x25')](function(){_0x493faa[_0x4c52('0x19')](0xcc)[_0x4c52('0x1a')]();});}};}function handleEntityNotFound(_0x3f353a,_0x16752a){return function(_0x5d281e){if(!_0x5d281e){_0x3f353a[_0x4c52('0x26')](0x194);}return _0x5d281e;};}function handleError(_0x411bb7,_0x109c56){_0x109c56=_0x109c56||0x1f4;return function(_0x594ace){logger[_0x4c52('0x27')](_0x594ace['stack']);if(_0x594ace['name']){delete _0x594ace[_0x4c52('0x28')];}_0x411bb7['status'](_0x109c56)[_0x4c52('0x29')](_0x594ace);};}exports['index']=function(_0x2f129c,_0x3168de){var _0x5476a0={},_0xa04d8c={},_0x4ff606={'count':0x0,'rows':[]};var _0x1134b0=_[_0x4c52('0x2a')](db[_0x4c52('0x2b')][_0x4c52('0x2c')],function(_0x49ce5c){return{'name':_0x49ce5c['fieldName'],'type':_0x49ce5c[_0x4c52('0x2d')][_0x4c52('0x2e')]};});_0xa04d8c[_0x4c52('0x2f')]=_[_0x4c52('0x2a')](_0x1134b0,_0x4c52('0x28'));_0xa04d8c[_0x4c52('0x30')]=_['keys'](_0x2f129c[_0x4c52('0x30')]);_0xa04d8c[_0x4c52('0x31')]=_[_0x4c52('0x32')](_0xa04d8c[_0x4c52('0x2f')],_0xa04d8c[_0x4c52('0x30')]);_0x5476a0[_0x4c52('0x33')]=_[_0x4c52('0x32')](_0xa04d8c['model'],qs[_0x4c52('0x34')](_0x2f129c['query'][_0x4c52('0x34')]));_0x5476a0[_0x4c52('0x33')]=_0x5476a0[_0x4c52('0x33')][_0x4c52('0x35')]?_0x5476a0[_0x4c52('0x33')]:_0xa04d8c[_0x4c52('0x2f')];if(!_0x2f129c[_0x4c52('0x30')][_0x4c52('0x36')](_0x4c52('0x37'))){_0x5476a0[_0x4c52('0x1f')]=qs['limit'](_0x2f129c['query'][_0x4c52('0x1f')]);_0x5476a0[_0x4c52('0x1c')]=qs[_0x4c52('0x1c')](_0x2f129c['query'][_0x4c52('0x1c')]);}_0x5476a0[_0x4c52('0x38')]=qs[_0x4c52('0x39')](_0x2f129c[_0x4c52('0x30')][_0x4c52('0x39')]);_0x5476a0[_0x4c52('0x3a')]=qs[_0x4c52('0x31')](_[_0x4c52('0x3b')](_0x2f129c['query'],_0xa04d8c[_0x4c52('0x31')]),_0x1134b0);if(_0x2f129c[_0x4c52('0x30')][_0x4c52('0x3c')]){_0x5476a0[_0x4c52('0x3a')]=_[_0x4c52('0x3d')](_0x5476a0[_0x4c52('0x3a')],{'$or':_['map'](_0x1134b0,function(_0x2158c8){if(_0x2158c8[_0x4c52('0x2d')]!=='VIRTUAL'){var _0x57c512={};_0x57c512[_0x2158c8[_0x4c52('0x28')]]={'$like':'%'+_0x2f129c['query'][_0x4c52('0x3c')]+'%'};return _0x57c512;}})});}_0x5476a0=_[_0x4c52('0x3d')]({},_0x5476a0,_0x2f129c[_0x4c52('0x3e')]);var _0x3c35be={'where':_0x5476a0[_0x4c52('0x3a')]};return db[_0x4c52('0x2b')]['count'](_0x3c35be)[_0x4c52('0x25')](function(_0xe076f2){_0x4ff606['count']=_0xe076f2;if(_0x2f129c[_0x4c52('0x30')][_0x4c52('0x3f')]){_0x5476a0['include']=[{'all':!![]}];}return db[_0x4c52('0x2b')][_0x4c52('0x40')](_0x5476a0);})['then'](function(_0x1d3596){_0x4ff606[_0x4c52('0x41')]=_0x1d3596;return _0x4ff606;})[_0x4c52('0x25')](respondWithFilteredResult(_0x3168de,_0x5476a0))[_0x4c52('0x42')](handleError(_0x3168de,null));};exports[_0x4c52('0x43')]=function(_0x440523,_0x39b8ae){var _0x5d201a={'raw':!![],'where':{'id':_0x440523[_0x4c52('0x44')]['id']}},_0x18d423={};_0x18d423['model']=_[_0x4c52('0x45')](db[_0x4c52('0x2b')][_0x4c52('0x2c')]);_0x18d423[_0x4c52('0x30')]=_[_0x4c52('0x45')](_0x440523[_0x4c52('0x30')]);_0x18d423['filters']=_[_0x4c52('0x32')](_0x18d423[_0x4c52('0x2f')],_0x18d423[_0x4c52('0x30')]);_0x5d201a[_0x4c52('0x33')]=_[_0x4c52('0x32')](_0x18d423['model'],qs[_0x4c52('0x34')](_0x440523[_0x4c52('0x30')][_0x4c52('0x34')]));_0x5d201a[_0x4c52('0x33')]=_0x5d201a[_0x4c52('0x33')][_0x4c52('0x35')]?_0x5d201a[_0x4c52('0x33')]:_0x18d423[_0x4c52('0x2f')];if(_0x440523['query'][_0x4c52('0x3f')]){_0x5d201a['include']=[{'all':!![]}];}_0x5d201a=_[_0x4c52('0x3d')]({},_0x5d201a,_0x440523['options']);return db[_0x4c52('0x2b')][_0x4c52('0x46')](_0x5d201a)[_0x4c52('0x25')](handleEntityNotFound(_0x39b8ae,null))['then'](respondWithResult(_0x39b8ae,null))[_0x4c52('0x42')](handleError(_0x39b8ae,null));};exports[_0x4c52('0x47')]=function(_0x202c3e,_0x557752){return db['OpenchannelApplication'][_0x4c52('0x47')](_0x202c3e[_0x4c52('0x48')],{})[_0x4c52('0x25')](respondWithResult(_0x557752,0xc9))['catch'](handleError(_0x557752,null));};exports[_0x4c52('0x24')]=function(_0x4b386c,_0x2e9657){if(_0x4b386c[_0x4c52('0x48')]['id']){delete _0x4b386c['body']['id'];}return db[_0x4c52('0x2b')][_0x4c52('0x46')]({'where':{'id':_0x4b386c['params']['id']}})[_0x4c52('0x25')](handleEntityNotFound(_0x2e9657,null))[_0x4c52('0x25')](saveUpdates(_0x4b386c['body'],null))[_0x4c52('0x25')](respondWithResult(_0x2e9657,null))[_0x4c52('0x42')](handleError(_0x2e9657,null));};exports[_0x4c52('0x49')]=function(_0x5b2f6d,_0x1c5249){return db[_0x4c52('0x2b')]['find']({'where':{'id':_0x5b2f6d[_0x4c52('0x44')]['id']}})['then'](handleEntityNotFound(_0x1c5249,null))[_0x4c52('0x25')](removeEntity(_0x1c5249,null))[_0x4c52('0x42')](handleError(_0x1c5249,null));};
\ No newline at end of file
+var _0x11a3=['../../config/environment','../../config/license/util','status','end','offset','limit','undefined','count','Content-Range','json','save','update','then','destroy','sendStatus','error','stack','name','send','index','OpenchannelApplication','fieldName','key','model','map','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','type','merge','options','includeAll','rows','catch','show','params','rawAttributes','include','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x11a3,0x162));var _0x311a=function(_0xbf8ebe,_0x3b69a5){_0xbf8ebe=_0xbf8ebe-0x0;var _0x1e25e8=_0x11a3[_0xbf8ebe];return _0x1e25e8;};'use strict';var emlformat=require(_0x311a('0x0'));var rimraf=require(_0x311a('0x1'));var zipdir=require(_0x311a('0x2'));var jsonpatch=require(_0x311a('0x3'));var rp=require(_0x311a('0x4'));var moment=require(_0x311a('0x5'));var BPromise=require(_0x311a('0x6'));var Mustache=require(_0x311a('0x7'));var util=require(_0x311a('0x8'));var path=require(_0x311a('0x9'));var sox=require('sox');var csv=require(_0x311a('0xa'));var ejs=require(_0x311a('0xb'));var fs=require('fs');var fs_extra=require(_0x311a('0xc'));var _=require(_0x311a('0xd'));var squel=require(_0x311a('0xe'));var crypto=require(_0x311a('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x311a('0x10'));var toCsv=require(_0x311a('0xa'));var querystring=require(_0x311a('0x11'));var Papa=require(_0x311a('0x12'));var Redis=require('ioredis');var authService=require(_0x311a('0x13'));var qs=require(_0x311a('0x14'));var as=require(_0x311a('0x15'));var hardwareService=require(_0x311a('0x16'));var logger=require(_0x311a('0x17'))(_0x311a('0x18'));var utils=require(_0x311a('0x19'));var config=require(_0x311a('0x1a'));var licenseUtil=require(_0x311a('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1def3f,_0x310602){_0x310602=_0x310602||0xcc;return function(_0x455d19){if(_0x455d19){return _0x1def3f['sendStatus'](_0x310602);}return _0x1def3f[_0x311a('0x1c')](_0x310602)[_0x311a('0x1d')]();};}function respondWithResult(_0x32259b,_0x44dc32){_0x44dc32=_0x44dc32||0xc8;return function(_0x2e72a8){if(_0x2e72a8){return _0x32259b['status'](_0x44dc32)['json'](_0x2e72a8);}};}function respondWithFilteredResult(_0x5b0c06,_0x3016ed){return function(_0x3a068d){if(_0x3a068d){var _0x36f119=typeof _0x3016ed[_0x311a('0x1e')]==='undefined'&&typeof _0x3016ed[_0x311a('0x1f')]===_0x311a('0x20');var _0x441b89=_0x3a068d[_0x311a('0x21')];var _0x9627e7=_0x36f119?0x0:_0x3016ed[_0x311a('0x1e')];var _0x28a636=_0x36f119?_0x3a068d[_0x311a('0x21')]:_0x3016ed[_0x311a('0x1e')]+_0x3016ed[_0x311a('0x1f')];var _0x396ff6;if(_0x28a636>=_0x441b89){_0x28a636=_0x441b89;_0x396ff6=0xc8;}else{_0x396ff6=0xce;}_0x5b0c06['status'](_0x396ff6);return _0x5b0c06['set'](_0x311a('0x22'),_0x9627e7+'-'+_0x28a636+'/'+_0x441b89)[_0x311a('0x23')](_0x3a068d);}return null;};}function patchUpdates(_0x559896){return function(_0x6affd4){try{jsonpatch['apply'](_0x6affd4,_0x559896,!![]);}catch(_0x488ebf){return BPromise['reject'](_0x488ebf);}return _0x6affd4[_0x311a('0x24')]();};}function saveUpdates(_0x34ba80,_0x14c06e){return function(_0x2e0848){if(_0x2e0848){return _0x2e0848[_0x311a('0x25')](_0x34ba80)[_0x311a('0x26')](function(_0x3510c6){return _0x3510c6;});}return null;};}function removeEntity(_0x5a374e,_0x657143){return function(_0x454119){if(_0x454119){return _0x454119[_0x311a('0x27')]()[_0x311a('0x26')](function(){_0x5a374e['status'](0xcc)[_0x311a('0x1d')]();});}};}function handleEntityNotFound(_0x37a63a,_0x2e462f){return function(_0x438318){if(!_0x438318){_0x37a63a[_0x311a('0x28')](0x194);}return _0x438318;};}function handleError(_0xc20db8,_0x1ac834){_0x1ac834=_0x1ac834||0x1f4;return function(_0x2d5b61){logger[_0x311a('0x29')](_0x2d5b61[_0x311a('0x2a')]);if(_0x2d5b61[_0x311a('0x2b')]){delete _0x2d5b61['name'];}_0xc20db8[_0x311a('0x1c')](_0x1ac834)[_0x311a('0x2c')](_0x2d5b61);};}exports[_0x311a('0x2d')]=function(_0x491a57,_0x22d18b){var _0x3263c2={},_0x199387={},_0x2cfe09={'count':0x0,'rows':[]};var _0x5d6f26=_['map'](db[_0x311a('0x2e')]['rawAttributes'],function(_0x43fe4d){return{'name':_0x43fe4d[_0x311a('0x2f')],'type':_0x43fe4d['type'][_0x311a('0x30')]};});_0x199387[_0x311a('0x31')]=_[_0x311a('0x32')](_0x5d6f26,_0x311a('0x2b'));_0x199387['query']=_[_0x311a('0x33')](_0x491a57[_0x311a('0x34')]);_0x199387['filters']=_[_0x311a('0x35')](_0x199387['model'],_0x199387[_0x311a('0x34')]);_0x3263c2[_0x311a('0x36')]=_[_0x311a('0x35')](_0x199387[_0x311a('0x31')],qs[_0x311a('0x37')](_0x491a57[_0x311a('0x34')]['fields']));_0x3263c2[_0x311a('0x36')]=_0x3263c2['attributes'][_0x311a('0x38')]?_0x3263c2[_0x311a('0x36')]:_0x199387['model'];if(!_0x491a57[_0x311a('0x34')][_0x311a('0x39')]('nolimit')){_0x3263c2[_0x311a('0x1f')]=qs[_0x311a('0x1f')](_0x491a57[_0x311a('0x34')]['limit']);_0x3263c2[_0x311a('0x1e')]=qs[_0x311a('0x1e')](_0x491a57[_0x311a('0x34')][_0x311a('0x1e')]);}_0x3263c2[_0x311a('0x3a')]=qs[_0x311a('0x3b')](_0x491a57[_0x311a('0x34')][_0x311a('0x3b')]);_0x3263c2[_0x311a('0x3c')]=qs[_0x311a('0x3d')](_['pick'](_0x491a57[_0x311a('0x34')],_0x199387[_0x311a('0x3d')]),_0x5d6f26);if(_0x491a57['query'][_0x311a('0x3e')]){_0x3263c2['where']=_['merge'](_0x3263c2[_0x311a('0x3c')],{'$or':_[_0x311a('0x32')](_0x5d6f26,function(_0x4aefb4){if(_0x4aefb4[_0x311a('0x3f')]!=='VIRTUAL'){var _0x30a8ed={};_0x30a8ed[_0x4aefb4[_0x311a('0x2b')]]={'$like':'%'+_0x491a57['query'][_0x311a('0x3e')]+'%'};return _0x30a8ed;}})});}_0x3263c2=_[_0x311a('0x40')]({},_0x3263c2,_0x491a57[_0x311a('0x41')]);var _0xf010cd={'where':_0x3263c2[_0x311a('0x3c')]};return db[_0x311a('0x2e')]['count'](_0xf010cd)['then'](function(_0x10bd53){_0x2cfe09[_0x311a('0x21')]=_0x10bd53;if(_0x491a57[_0x311a('0x34')][_0x311a('0x42')]){_0x3263c2['include']=[{'all':!![]}];}return db['OpenchannelApplication']['findAll'](_0x3263c2);})[_0x311a('0x26')](function(_0x593f04){_0x2cfe09[_0x311a('0x43')]=_0x593f04;return _0x2cfe09;})[_0x311a('0x26')](respondWithFilteredResult(_0x22d18b,_0x3263c2))[_0x311a('0x44')](handleError(_0x22d18b,null));};exports[_0x311a('0x45')]=function(_0x605786,_0x20831a){var _0x28e4b6={'raw':!![],'where':{'id':_0x605786[_0x311a('0x46')]['id']}},_0x23701f={};_0x23701f[_0x311a('0x31')]=_[_0x311a('0x33')](db['OpenchannelApplication'][_0x311a('0x47')]);_0x23701f[_0x311a('0x34')]=_[_0x311a('0x33')](_0x605786[_0x311a('0x34')]);_0x23701f[_0x311a('0x3d')]=_[_0x311a('0x35')](_0x23701f[_0x311a('0x31')],_0x23701f[_0x311a('0x34')]);_0x28e4b6[_0x311a('0x36')]=_[_0x311a('0x35')](_0x23701f[_0x311a('0x31')],qs[_0x311a('0x37')](_0x605786['query'][_0x311a('0x37')]));_0x28e4b6['attributes']=_0x28e4b6[_0x311a('0x36')][_0x311a('0x38')]?_0x28e4b6[_0x311a('0x36')]:_0x23701f[_0x311a('0x31')];if(_0x605786[_0x311a('0x34')][_0x311a('0x42')]){_0x28e4b6[_0x311a('0x48')]=[{'all':!![]}];}_0x28e4b6=_[_0x311a('0x40')]({},_0x28e4b6,_0x605786[_0x311a('0x41')]);return db[_0x311a('0x2e')]['find'](_0x28e4b6)['then'](handleEntityNotFound(_0x20831a,null))[_0x311a('0x26')](respondWithResult(_0x20831a,null))[_0x311a('0x44')](handleError(_0x20831a,null));};exports[_0x311a('0x49')]=function(_0x256dd9,_0x1959d1){return db[_0x311a('0x2e')][_0x311a('0x49')](_0x256dd9['body'],{})[_0x311a('0x26')](respondWithResult(_0x1959d1,0xc9))[_0x311a('0x44')](handleError(_0x1959d1,null));};exports['update']=function(_0x2f7a0c,_0x2d0822){if(_0x2f7a0c[_0x311a('0x4a')]['id']){delete _0x2f7a0c[_0x311a('0x4a')]['id'];}return db[_0x311a('0x2e')][_0x311a('0x4b')]({'where':{'id':_0x2f7a0c[_0x311a('0x46')]['id']}})['then'](handleEntityNotFound(_0x2d0822,null))[_0x311a('0x26')](saveUpdates(_0x2f7a0c[_0x311a('0x4a')],null))[_0x311a('0x26')](respondWithResult(_0x2d0822,null))[_0x311a('0x44')](handleError(_0x2d0822,null));};exports[_0x311a('0x27')]=function(_0x397a3b,_0x298d17){return db['OpenchannelApplication'][_0x311a('0x4b')]({'where':{'id':_0x397a3b[_0x311a('0x46')]['id']}})[_0x311a('0x26')](handleEntityNotFound(_0x298d17,null))['then'](removeEntity(_0x298d17,null))['catch'](handleError(_0x298d17,null));};
\ No newline at end of file
index 7da3e52..60518ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe369=['request-promise','path','./openchannelApplication.attributes','exports','define','OpenchannelApplication','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment'];(function(_0xee60da,_0x59b0a0){var _0x5365e7=function(_0x2d2c17){while(--_0x2d2c17){_0xee60da['push'](_0xee60da['shift']());}};_0x5365e7(++_0x59b0a0);}(_0xe369,0xd4));var _0x9e36=function(_0x4f2658,_0x525842){_0x4f2658=_0x4f2658-0x0;var _0x2d0018=_0xe369[_0x4f2658];return _0x2d0018;};'use strict';var _=require(_0x9e36('0x0'));var util=require('util');var logger=require(_0x9e36('0x1'))(_0x9e36('0x2'));var moment=require(_0x9e36('0x3'));var BPromise=require('bluebird');var rp=require(_0x9e36('0x4'));var fs=require('fs');var path=require(_0x9e36('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9e36('0x6'));module[_0x9e36('0x7')]=function(_0x354295,_0x4c5226){return _0x354295[_0x9e36('0x8')](_0x9e36('0x9'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9e36('0xa'),'collate':_0x9e36('0xb')});};
\ No newline at end of file
+var _0x43b4=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','OpenchannelApplication','openchannel_applications','utf8mb4'];(function(_0xaf025d,_0x586d7a){var _0x1c77cb=function(_0x560b3a){while(--_0x560b3a){_0xaf025d['push'](_0xaf025d['shift']());}};_0x1c77cb(++_0x586d7a);}(_0x43b4,0x1ee));var _0x443b=function(_0x371a5b,_0x5830d7){_0x371a5b=_0x371a5b-0x0;var _0x2a567a=_0x43b4[_0x371a5b];return _0x2a567a;};'use strict';var _=require(_0x443b('0x0'));var util=require(_0x443b('0x1'));var logger=require(_0x443b('0x2'))(_0x443b('0x3'));var moment=require(_0x443b('0x4'));var BPromise=require(_0x443b('0x5'));var rp=require(_0x443b('0x6'));var fs=require('fs');var path=require(_0x443b('0x7'));var rimraf=require(_0x443b('0x8'));var config=require('../../config/environment');var attributes=require('./openchannelApplication.attributes');module['exports']=function(_0x929fe8,_0x41c365){return _0x929fe8[_0x443b('0x9')](_0x443b('0xa'),attributes,{'tableName':_0x443b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x443b('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index cf07fa9..778ccd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbc4=['util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelApplication','update','options','raw','where','attributes','limit','UpdateOpenchannelApplication','debug','catch','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfbc4,0x167));var _0x4fbc=function(_0x116eab,_0x17a89d){_0x116eab=_0x116eab-0x0;var _0x44a129=_0xfbc4[_0x116eab];return _0x44a129;};'use strict';var _=require(_0x4fbc('0x0'));var util=require(_0x4fbc('0x1'));var moment=require(_0x4fbc('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4fbc('0x3'));var db=require(_0x4fbc('0x4'))['db'];var utils=require(_0x4fbc('0x5'));var logger=require(_0x4fbc('0x6'))('rpc');var config=require(_0x4fbc('0x7'));var jayson=require(_0x4fbc('0x8'));var client=jayson[_0x4fbc('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a082c,_0x554c3b,_0x1e2d50){return new BPromise(function(_0x3c4834,_0x4fb63b){return client[_0x4fbc('0xa')](_0x4a082c,_0x1e2d50)[_0x4fbc('0xb')](function(_0x572ed0){logger[_0x4fbc('0xc')](_0x4fbc('0xd'),_0x554c3b,_0x4fbc('0xe'));logger['debug'](_0x4fbc('0xf'),_0x554c3b,_0x4fbc('0xe'),JSON[_0x4fbc('0x10')](_0x572ed0));if(_0x572ed0[_0x4fbc('0x11')]){if(_0x572ed0['error'][_0x4fbc('0x12')]===0x1f4){logger[_0x4fbc('0x11')]('OpenchannelApplication,\x20%s,\x20%s',_0x554c3b,_0x572ed0[_0x4fbc('0x11')][_0x4fbc('0x13')]);return _0x4fb63b(_0x572ed0[_0x4fbc('0x11')][_0x4fbc('0x13')]);}logger[_0x4fbc('0x11')]('OpenchannelApplication,\x20%s,\x20%s',_0x554c3b,_0x572ed0[_0x4fbc('0x11')][_0x4fbc('0x13')]);return _0x3c4834(_0x572ed0['error'][_0x4fbc('0x13')]);}else{logger[_0x4fbc('0xc')](_0x4fbc('0xd'),_0x554c3b,'request\x20sent');_0x3c4834(_0x572ed0['result'][_0x4fbc('0x13')]);}})['catch'](function(_0x245ecd){logger[_0x4fbc('0x11')](_0x4fbc('0xd'),_0x554c3b,_0x245ecd);_0x4fb63b(_0x245ecd);});});}exports['UpdateOpenchannelApplication']=function(_0x488925){var _0x419b55=this;return new Promise(function(_0x35e2ef,_0x9a8f34){return db[_0x4fbc('0x14')][_0x4fbc('0x15')](_0x488925['body'],{'raw':_0x488925['options']?_0x488925[_0x4fbc('0x16')][_0x4fbc('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x488925['options']?_0x488925[_0x4fbc('0x16')][_0x4fbc('0x18')]||null:null,'attributes':_0x488925[_0x4fbc('0x16')]?_0x488925[_0x4fbc('0x16')][_0x4fbc('0x19')]||null:null,'limit':_0x488925[_0x4fbc('0x16')]?_0x488925[_0x4fbc('0x16')][_0x4fbc('0x1a')]||null:null})[_0x4fbc('0xb')](function(_0x2bf080){logger['info'](_0x4fbc('0x1b'),_0x488925);logger[_0x4fbc('0x1c')](_0x4fbc('0x1b'),_0x488925,JSON[_0x4fbc('0x10')](_0x2bf080));_0x35e2ef(_0x2bf080);})[_0x4fbc('0x1d')](function(_0x5a5bb1){logger['error']('UpdateOpenchannelApplication',_0x5a5bb1[_0x4fbc('0x13')],_0x488925);_0x9a8f34(_0x419b55[_0x4fbc('0x11')](0x1f4,_0x5a5bb1[_0x4fbc('0x13')]));});});};
\ No newline at end of file
+var _0xf49b=['options','raw','where','attributes','limit','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','client','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body'];(function(_0x19d270,_0x121214){var _0x1db1da=function(_0x560e7c){while(--_0x560e7c){_0x19d270['push'](_0x19d270['shift']());}};_0x1db1da(++_0x121214);}(_0xf49b,0x10a));var _0xbf49=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xf49b[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xbf49('0x0'));var moment=require('moment');var BPromise=require(_0xbf49('0x1'));var rs=require(_0xbf49('0x2'));var fs=require('fs');var Redis=require(_0xbf49('0x3'));var db=require(_0xbf49('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbf49('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbf49('0x6')][_0xbf49('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2d2283,_0xf5644a,_0x3d5a67){return new BPromise(function(_0x2791d4,_0x172ffd){return client[_0xbf49('0x8')](_0x2d2283,_0x3d5a67)[_0xbf49('0x9')](function(_0x2a20f2){logger[_0xbf49('0xa')](_0xbf49('0xb'),_0xf5644a,_0xbf49('0xc'));logger[_0xbf49('0xd')](_0xbf49('0xe'),_0xf5644a,'request\x20sent',JSON[_0xbf49('0xf')](_0x2a20f2));if(_0x2a20f2[_0xbf49('0x10')]){if(_0x2a20f2[_0xbf49('0x10')]['code']===0x1f4){logger[_0xbf49('0x10')](_0xbf49('0xb'),_0xf5644a,_0x2a20f2[_0xbf49('0x10')]['message']);return _0x172ffd(_0x2a20f2[_0xbf49('0x10')][_0xbf49('0x11')]);}logger['error'](_0xbf49('0xb'),_0xf5644a,_0x2a20f2[_0xbf49('0x10')]['message']);return _0x2791d4(_0x2a20f2['error'][_0xbf49('0x11')]);}else{logger[_0xbf49('0xa')](_0xbf49('0xb'),_0xf5644a,_0xbf49('0xc'));_0x2791d4(_0x2a20f2[_0xbf49('0x12')][_0xbf49('0x11')]);}})[_0xbf49('0x13')](function(_0x40d027){logger['error'](_0xbf49('0xb'),_0xf5644a,_0x40d027);_0x172ffd(_0x40d027);});});}exports[_0xbf49('0x14')]=function(_0x1e5aaa){var _0x11eed0=this;return new Promise(function(_0x4f3be6,_0x345a8a){return db[_0xbf49('0x15')][_0xbf49('0x16')](_0x1e5aaa[_0xbf49('0x17')],{'raw':_0x1e5aaa[_0xbf49('0x18')]?_0x1e5aaa[_0xbf49('0x18')][_0xbf49('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e5aaa[_0xbf49('0x18')]?_0x1e5aaa[_0xbf49('0x18')][_0xbf49('0x1a')]||null:null,'attributes':_0x1e5aaa[_0xbf49('0x18')]?_0x1e5aaa['options'][_0xbf49('0x1b')]||null:null,'limit':_0x1e5aaa[_0xbf49('0x18')]?_0x1e5aaa['options'][_0xbf49('0x1c')]||null:null})[_0xbf49('0x9')](function(_0x3e2a14){logger[_0xbf49('0xa')]('UpdateOpenchannelApplication',_0x1e5aaa);logger['debug'](_0xbf49('0x14'),_0x1e5aaa,JSON[_0xbf49('0xf')](_0x3e2a14));_0x4f3be6(_0x3e2a14);})[_0xbf49('0x13')](function(_0x471f91){logger[_0xbf49('0x10')](_0xbf49('0x14'),_0x471f91['message'],_0x1e5aaa);_0x345a8a(_0x11eed0[_0xbf49('0x10')](0x1f4,_0x471f91[_0xbf49('0x11')]));});});};
\ No newline at end of file
index a22f4a4..b755e75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1357=['put','update','delete','openchannelinteraction:destroy','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/messages','/:id/download','post','create','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags'];(function(_0x41215f,_0x58e0e1){var _0x1d0aad=function(_0x871168){while(--_0x871168){_0x41215f['push'](_0x41215f['shift']());}};_0x1d0aad(++_0x58e0e1);}(_0x1357,0x1e6));var _0x7135=function(_0x3a877f,_0x21b9ec){_0x3a877f=_0x3a877f-0x0;var _0x21f53b=_0x1357[_0x3a877f];return _0x21f53b;};'use strict';var multer=require(_0x7135('0x0'));var util=require(_0x7135('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7135('0x2'));var router=express[_0x7135('0x3')]();var fs_extra=require(_0x7135('0x4'));var auth=require(_0x7135('0x5'));var interaction=require(_0x7135('0x6'));var config=require(_0x7135('0x7'));var controller=require(_0x7135('0x8'));router[_0x7135('0x9')]('/',auth[_0x7135('0xa')](),controller[_0x7135('0xb')]);router['get'](_0x7135('0xc'),auth['isAuthenticated'](),controller[_0x7135('0xd')]);router['get'](_0x7135('0xe'),auth[_0x7135('0xa')](),controller['show']);router[_0x7135('0x9')](_0x7135('0xf'),auth[_0x7135('0xa')](),controller['getMessages']);router['get'](_0x7135('0x10'),auth[_0x7135('0xa')](),controller['download']);router[_0x7135('0x11')]('/',auth[_0x7135('0xa')](),controller[_0x7135('0x12')]);router[_0x7135('0x11')](_0x7135('0xf'),auth['isAuthenticated'](),controller['addMessage']);router['post'](_0x7135('0x13'),auth[_0x7135('0xa')](),interaction[_0x7135('0x14')](_0x7135('0x15'),_0x7135('0x16')),controller[_0x7135('0x17')]);router[_0x7135('0x18')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x7135('0x15'),'openchannelinteraction:update'),controller[_0x7135('0x19')]);router[_0x7135('0x1a')](_0x7135('0xe'),auth[_0x7135('0xa')](),interaction[_0x7135('0x14')](_0x7135('0x15'),_0x7135('0x1b')),controller[_0x7135('0x1c')]);router[_0x7135('0x1a')](_0x7135('0x13'),auth[_0x7135('0xa')](),controller['removeTags']);module[_0x7135('0x1d')]=router;
\ No newline at end of file
+var _0xce67=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/messages','getMessages','download','post','create','addMessage','/:id/tags','openchannelinteraction:addtags','addTags','put','tracked','openchannel','openchannelinteraction:destroy','destroy','removeTags','exports'];(function(_0x332740,_0x267c85){var _0x2681ed=function(_0x31c35c){while(--_0x31c35c){_0x332740['push'](_0x332740['shift']());}};_0x2681ed(++_0x267c85);}(_0xce67,0xd9));var _0x7ce6=function(_0x5159a8,_0x299e8d){_0x5159a8=_0x5159a8-0x0;var _0x2eb991=_0xce67[_0x5159a8];return _0x2eb991;};'use strict';var multer=require('multer');var util=require(_0x7ce6('0x0'));var path=require(_0x7ce6('0x1'));var timeout=require(_0x7ce6('0x2'));var express=require('express');var router=express[_0x7ce6('0x3')]();var fs_extra=require(_0x7ce6('0x4'));var auth=require(_0x7ce6('0x5'));var interaction=require(_0x7ce6('0x6'));var config=require(_0x7ce6('0x7'));var controller=require(_0x7ce6('0x8'));router['get']('/',auth[_0x7ce6('0x9')](),controller['index']);router[_0x7ce6('0xa')](_0x7ce6('0xb'),auth['isAuthenticated'](),controller[_0x7ce6('0xc')]);router[_0x7ce6('0xa')](_0x7ce6('0xd'),auth[_0x7ce6('0x9')](),controller[_0x7ce6('0xe')]);router['get'](_0x7ce6('0xf'),auth[_0x7ce6('0x9')](),controller[_0x7ce6('0x10')]);router['get']('/:id/download',auth[_0x7ce6('0x9')](),controller[_0x7ce6('0x11')]);router[_0x7ce6('0x12')]('/',auth['isAuthenticated'](),controller[_0x7ce6('0x13')]);router[_0x7ce6('0x12')](_0x7ce6('0xf'),auth[_0x7ce6('0x9')](),controller[_0x7ce6('0x14')]);router[_0x7ce6('0x12')](_0x7ce6('0x15'),auth[_0x7ce6('0x9')](),interaction['tracked']('openchannel',_0x7ce6('0x16')),controller[_0x7ce6('0x17')]);router[_0x7ce6('0x18')](_0x7ce6('0xd'),auth['isAuthenticated'](),interaction[_0x7ce6('0x19')](_0x7ce6('0x1a'),'openchannelinteraction:update'),controller['update']);router['delete'](_0x7ce6('0xd'),auth[_0x7ce6('0x9')](),interaction['tracked'](_0x7ce6('0x1a'),_0x7ce6('0x1b')),controller[_0x7ce6('0x1c')]);router['delete']('/:id/tags',auth[_0x7ce6('0x9')](),controller[_0x7ce6('0x1d')]);module[_0x7ce6('0x1e')]=router;
\ No newline at end of file
index 13d0f07..1ce2ba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf69b=['ENUM','out','BOOLEAN','INTEGER','exports','DATE','STRING'];(function(_0x4a9f69,_0x38c563){var _0x33e3a1=function(_0x53e727){while(--_0x53e727){_0x4a9f69['push'](_0x4a9f69['shift']());}};_0x33e3a1(++_0x38c563);}(_0xf69b,0xc8));var _0xbf69=function(_0x105a2f,_0xdcbfb8){_0x105a2f=_0x105a2f-0x0;var _0x1b0e19=_0xf69b[_0x105a2f];return _0x1b0e19;};'use strict';var Sequelize=require('sequelize');module[_0xbf69('0x0')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xbf69('0x1')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xbf69('0x2')]},'thirdDisposition':{'type':Sequelize[_0xbf69('0x2')]},'note':{'type':Sequelize[_0xbf69('0x2')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0xbf69('0x2')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0xbf69('0x1')]},'firstMsgDirection':{'type':Sequelize[_0xbf69('0x3')]('in',_0xbf69('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0xbf69('0x3')]('in',_0xbf69('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xbf69('0x2')]},'autoreplyExecuted':{'type':Sequelize[_0xbf69('0x5')],'defaultValue':![]},'queueId':{'type':Sequelize[_0xbf69('0x6')]}};
\ No newline at end of file
+var _0x4561=['STRING','ENUM','out','BOOLEAN','DATE'];(function(_0x3a9468,_0x2b6266){var _0x1d2345=function(_0x499728){while(--_0x499728){_0x3a9468['push'](_0x3a9468['shift']());}};_0x1d2345(++_0x2b6266);}(_0x4561,0x1a3));var _0x1456=function(_0x5d51d4,_0x2ea63c){_0x5d51d4=_0x5d51d4-0x0;var _0x118cf5=_0x4561[_0x5d51d4];return _0x118cf5;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1456('0x0')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x1456('0x1')]},'thirdDisposition':{'type':Sequelize[_0x1456('0x1')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x1456('0x0')]},'threadId':{'type':Sequelize[_0x1456('0x1')]},'externalUrl':{'type':Sequelize[_0x1456('0x1')]},'lastMsgAt':{'type':Sequelize[_0x1456('0x0')]},'firstMsgDirection':{'type':Sequelize[_0x1456('0x2')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x1456('0x2')]('in',_0x1456('0x3')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x1456('0x1')]},'autoreplyExecuted':{'type':Sequelize[_0x1456('0x4')],'defaultValue':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index f3c7cb8..58be597 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9454=['api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','destroy','end','error','stack','name','index','map','OpenchannelInteraction','fieldName','findAll','openchannel','user','then','show','query','type','from','params','model','keys','rawAttributes','intersection','fields','attributes','length','includeAll','include','merge','options','find','catch','body','describe','addMessage','OpenchannelMessage','omit','findOne','hasOwnProperty','nolimit','order','sort','filters','pick','where','OpenchannelInteractionId','filter','$gte','split','format','rows','addTags','setTags','ids','spread','Tag','color','openchannelInteractionTags:save','removeTags','download','unix','toString','join','server','files','tmp','root','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','lastName','attachments','Attachment','Messages','createdAt','direction','read','OpenchannelAccount','get','Account','Owner','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','threadId','Public','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','firstName','secret','renderFile','views','transcript-','.pdf','Openchannel','createPdfFromHTML','unlinkSync','zip-dir','moment','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/logger'];(function(_0x1f4251,_0xf94d85){var _0x5bc2f9=function(_0x29c5c2){while(--_0x29c5c2){_0x1f4251['push'](_0x1f4251['shift']());}};_0x5bc2f9(++_0xf94d85);}(_0x9454,0x179));var _0x4945=function(_0x346665,_0x1041b7){_0x346665=_0x346665-0x0;var _0x16f527=_0x9454[_0x346665];return _0x16f527;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x4945('0x0'));var moment=require(_0x4945('0x1'));var util=require(_0x4945('0x2'));var path=require(_0x4945('0x3'));var ejs=require(_0x4945('0x4'));var fs=require('fs');var _=require(_0x4945('0x5'));var Redis=require(_0x4945('0x6'));var interaction=require(_0x4945('0x7'));var qs=require('../../components/parsers/qs');var pdf=require(_0x4945('0x8'));var logger=require(_0x4945('0x9'))(_0x4945('0xa'));var config=require(_0x4945('0xb'));var db=require(_0x4945('0xc'))['db'];config['redis']=_['defaults'](config[_0x4945('0xd')],{'host':_0x4945('0xe'),'port':0x18eb});var socket=require(_0x4945('0xf'))(new Redis(config[_0x4945('0xd')]));require('./openchannelInteraction.socket')['register'](socket);function respondWithStatusCode(_0x4d4788,_0xf71b0){_0xf71b0=_0xf71b0||0xcc;return function(_0x188490){if(_0x188490){return _0x4d4788[_0x4945('0x10')](_0xf71b0);}return _0x4d4788[_0x4945('0x11')](_0xf71b0)['end']();};}function respondWithResult(_0x545307,_0x1e5fb9){_0x1e5fb9=_0x1e5fb9||0xc8;return function(_0x5953cf){if(_0x5953cf){return _0x545307['status'](_0x1e5fb9)[_0x4945('0x12')](_0x5953cf);}};}function respondWithFilteredResult(_0x2dfecf,_0x3df3f7){return function(_0x114d28){if(_0x114d28){var _0x2a5d14=typeof _0x3df3f7[_0x4945('0x13')]===_0x4945('0x14')&&typeof _0x3df3f7[_0x4945('0x15')]===_0x4945('0x14');var _0xc7748a=_0x114d28['count'];var _0x1ab3e5=_0x2a5d14?0x0:_0x3df3f7[_0x4945('0x13')];var _0x5343d1=_0x2a5d14?_0x114d28[_0x4945('0x16')]:_0x3df3f7[_0x4945('0x13')]+_0x3df3f7[_0x4945('0x15')];var _0x371eb4;if(_0x5343d1>=_0xc7748a){_0x5343d1=_0xc7748a;_0x371eb4=0xc8;}else{_0x371eb4=0xce;}_0x2dfecf[_0x4945('0x11')](_0x371eb4);return _0x2dfecf[_0x4945('0x17')](_0x4945('0x18'),_0x1ab3e5+'-'+_0x5343d1+'/'+_0xc7748a)[_0x4945('0x12')](_0x114d28);}return null;};}function saveUpdates(_0x12105f){return function(_0x57a54c){if(_0x57a54c){return _0x57a54c['update'](_0x12105f)['then'](function(_0x1e2dab){return _0x1e2dab;});}return null;};}function removeEntity(_0x3e77b8){return function(_0x16b4a1){if(_0x16b4a1){return _0x16b4a1[_0x4945('0x19')]()['then'](function(){_0x3e77b8[_0x4945('0x11')](0xcc)[_0x4945('0x1a')]();});}};}function handleEntityNotFound(_0x1b58e4){return function(_0x2fd470){if(!_0x2fd470){_0x1b58e4[_0x4945('0x10')](0x194);}return _0x2fd470;};}function handleError(_0x9f548d,_0x32c183){_0x32c183=_0x32c183||0x1f4;return function(_0x49e177){logger[_0x4945('0x1b')](_0x49e177[_0x4945('0x1c')]);if(_0x49e177[_0x4945('0x1d')]){delete _0x49e177[_0x4945('0x1d')];}_0x9f548d[_0x4945('0x11')](_0x32c183)['send'](_0x49e177);};}exports[_0x4945('0x1e')]=function(_0x32bcbe,_0xb9547b){var _0xf3038d={};var _0x17944b=_[_0x4945('0x1f')](db[_0x4945('0x20')]['rawAttributes'],function(_0x2c3ecd){return{'name':_0x2c3ecd[_0x4945('0x21')],'type':_0x2c3ecd['type']['key']};});_0xf3038d=qs['getOptions'](_0x17944b,_0x32bcbe);return interaction[_0x4945('0x22')](_0x4945('0x23'),_0x32bcbe['query'],_0x32bcbe[_0x4945('0x24')],_0xf3038d,_0x17944b)[_0x4945('0x25')](respondWithFilteredResult(_0xb9547b,_0xf3038d))['catch'](handleError(_0xb9547b,null));};exports[_0x4945('0x26')]=function(_0x6bd217,_0x129ffe){var _0x458cd={};if(_0x6bd217[_0x4945('0x27')][_0x4945('0x28')]&&_0x6bd217['query'][_0x4945('0x28')]===_0x4945('0x29')){_0x458cd[_0x4945('0x29')]=_0x6bd217[_0x4945('0x2a')]['id'];}else{_0x458cd['id']=_0x6bd217[_0x4945('0x2a')]['id'];}var _0xeec73d={'raw':![],'where':_0x458cd},_0x1348f6={};_0x1348f6[_0x4945('0x2b')]=_[_0x4945('0x2c')](db['OpenchannelInteraction'][_0x4945('0x2d')]);_0x1348f6[_0x4945('0x27')]=_[_0x4945('0x2c')](_0x6bd217[_0x4945('0x27')]);_0x1348f6['filters']=_[_0x4945('0x2e')](_0x1348f6[_0x4945('0x2b')],_0x1348f6[_0x4945('0x27')]);_0xeec73d['attributes']=_[_0x4945('0x2e')](_0x1348f6[_0x4945('0x2b')],qs[_0x4945('0x2f')](_0x6bd217[_0x4945('0x27')][_0x4945('0x2f')]));_0xeec73d[_0x4945('0x30')]=_0xeec73d['attributes'][_0x4945('0x31')]?_0xeec73d[_0x4945('0x30')]:_0x1348f6[_0x4945('0x2b')];if(_0x6bd217[_0x4945('0x27')][_0x4945('0x32')]){_0xeec73d[_0x4945('0x33')]=[{'all':!![]}];}_0xeec73d=_[_0x4945('0x34')]({},_0xeec73d,_0x6bd217[_0x4945('0x35')]);return db[_0x4945('0x20')][_0x4945('0x36')](_0xeec73d)[_0x4945('0x25')](handleEntityNotFound(_0x129ffe,null))['then'](respondWithResult(_0x129ffe,null))[_0x4945('0x37')](handleError(_0x129ffe,null));};exports['create']=function(_0xe4d561,_0x2dc788){return db[_0x4945('0x20')]['create'](_0xe4d561['body'],{})[_0x4945('0x25')](respondWithResult(_0x2dc788,0xc9))[_0x4945('0x37')](handleError(_0x2dc788,null));};exports['update']=function(_0x5a3b25,_0x449c3a){if(_0x5a3b25[_0x4945('0x38')]['id']){delete _0x5a3b25[_0x4945('0x38')]['id'];}return db[_0x4945('0x20')]['find']({'where':{'id':_0x5a3b25[_0x4945('0x2a')]['id']}})['then'](handleEntityNotFound(_0x449c3a,null))[_0x4945('0x25')](saveUpdates(_0x5a3b25[_0x4945('0x38')],null))['then'](respondWithResult(_0x449c3a,null))[_0x4945('0x37')](handleError(_0x449c3a,null));};exports[_0x4945('0x19')]=function(_0x3aefae,_0x24cb71){return db[_0x4945('0x20')][_0x4945('0x36')]({'where':{'id':_0x3aefae[_0x4945('0x2a')]['id']}})['then'](handleEntityNotFound(_0x24cb71,null))[_0x4945('0x25')](removeEntity(_0x24cb71,null))[_0x4945('0x37')](handleError(_0x24cb71,null));};exports[_0x4945('0x39')]=function(_0x58fbf1,_0x7ef3b7){return db[_0x4945('0x20')][_0x4945('0x39')]()[_0x4945('0x25')](respondWithResult(_0x7ef3b7,null))[_0x4945('0x37')](handleError(_0x7ef3b7,null));};exports[_0x4945('0x3a')]=function(_0x495db3,_0xe99d8){return db[_0x4945('0x3b')]['find']({'where':{'id':_0x495db3[_0x4945('0x2a')]['id']}})['then'](handleEntityNotFound(_0xe99d8,null))[_0x4945('0x25')](function(_0x5d796b){if(_0x5d796b){return _0x5d796b[_0x4945('0x3a')](_0x495db3['body']['ids'],_[_0x4945('0x3c')](_0x495db3[_0x4945('0x38')],['ids','id'])||{});}})[_0x4945('0x25')](respondWithResult(_0xe99d8,null))[_0x4945('0x37')](handleError(_0xe99d8,null));};exports['getMessages']=function(_0x5b601c,_0x31b3e2){var _0x492de9={'raw':![],'where':{}};var _0x1b9a7f={};var _0x21880d={'count':0x0,'rows':[]};return db[_0x4945('0x20')][_0x4945('0x3d')]({'where':{'id':_0x5b601c[_0x4945('0x2a')]['id']}})[_0x4945('0x25')](handleEntityNotFound(_0x31b3e2,null))[_0x4945('0x25')](function(_0x45b0f7){if(_0x45b0f7){_0x1b9a7f[_0x4945('0x2b')]=_['keys'](db['OpenchannelMessage']['rawAttributes']);_0x1b9a7f['query']=_['keys'](_0x5b601c[_0x4945('0x27')]);_0x1b9a7f['filters']=_[_0x4945('0x2e')](_0x1b9a7f[_0x4945('0x2b')],_0x1b9a7f[_0x4945('0x27')]);_0x492de9['attributes']=_['intersection'](_0x1b9a7f['model'],qs['fields'](_0x5b601c['query'][_0x4945('0x2f')]));_0x492de9['attributes']=_0x492de9[_0x4945('0x30')][_0x4945('0x31')]?_0x492de9[_0x4945('0x30')]:_0x1b9a7f['model'];if(!_0x5b601c[_0x4945('0x27')][_0x4945('0x3e')](_0x4945('0x3f'))){_0x492de9[_0x4945('0x15')]=qs[_0x4945('0x15')](_0x5b601c['query'][_0x4945('0x15')]);_0x492de9[_0x4945('0x13')]=qs[_0x4945('0x13')](_0x5b601c[_0x4945('0x27')]['offset']);}_0x492de9[_0x4945('0x40')]=qs[_0x4945('0x41')](_0x5b601c[_0x4945('0x27')][_0x4945('0x41')]);_0x492de9['where']=qs[_0x4945('0x42')](_[_0x4945('0x43')](_0x5b601c['query'],_0x1b9a7f['filters']));_0x492de9[_0x4945('0x44')][_0x4945('0x45')]=_0x45b0f7['id'];if(_0x5b601c[_0x4945('0x27')][_0x4945('0x46')]){_0x492de9[_0x4945('0x44')]=_['merge'](_0x492de9[_0x4945('0x44')],{'$or':_[_0x4945('0x1f')](_0x492de9['attributes'],function(_0x1ebca1){var _0x333df0={};_0x333df0[_0x1ebca1]={'$like':'%'+_0x5b601c['query'][_0x4945('0x46')]+'%'};return _0x333df0;})});}if(_0x5b601c[_0x4945('0x27')][_0x4945('0x47')]){var _0x5a3c1d=_0x5b601c['query'][_0x4945('0x47')][_0x4945('0x48')](',');var _0x6c1b04={};_0x6c1b04[_0x5a3c1d[0x0]]={'$gte':moment(_0x5a3c1d[0x1])[_0x4945('0x49')]('YYYY-MM-DD\x20HH:mm:ss')};_0x492de9['where']=_[_0x4945('0x34')](_0x492de9[_0x4945('0x44')],_0x6c1b04);}_0x492de9=_[_0x4945('0x34')]({},_0x492de9,_0x5b601c[_0x4945('0x35')]);return db[_0x4945('0x3b')][_0x4945('0x16')]({'where':_0x492de9[_0x4945('0x44')]})[_0x4945('0x25')](function(_0x59ef90){_0x21880d[_0x4945('0x16')]=_0x59ef90;if(_0x5b601c['query'][_0x4945('0x32')]){_0x492de9[_0x4945('0x33')]=[{'all':!![]}];}return db[_0x4945('0x3b')]['findAll'](_0x492de9);})[_0x4945('0x25')](function(_0x2bdef4){_0x21880d[_0x4945('0x4a')]=_0x2bdef4;return _0x21880d;});}})[_0x4945('0x25')](respondWithFilteredResult(_0x31b3e2,_0x492de9))[_0x4945('0x37')](handleError(_0x31b3e2,null));};exports[_0x4945('0x4b')]=function(_0x3a82df,_0x56a85c){return db[_0x4945('0x20')][_0x4945('0x36')]({'where':{'id':_0x3a82df[_0x4945('0x2a')]['id']}})[_0x4945('0x25')](handleEntityNotFound(_0x56a85c,null))[_0x4945('0x25')](function(_0x292e19){if(_0x292e19){return _0x292e19[_0x4945('0x4c')](_0x3a82df[_0x4945('0x38')]['ids'],_[_0x4945('0x3c')](_0x3a82df['body'],[_0x4945('0x4d'),'id'])||{})[_0x4945('0x4e')](function(){return db[_0x4945('0x4f')][_0x4945('0x22')]({'attributes':['id',_0x4945('0x1d'),_0x4945('0x50')],'where':{'id':_0x3a82df[_0x4945('0x38')][_0x4945('0x4d')]}});})[_0x4945('0x25')](function(_0x23f2fd){socket['emit'](_0x4945('0x51'),{'id':Number(_0x3a82df['params']['id']),'tags':_0x23f2fd||[]});return{'id':Number(_0x3a82df[_0x4945('0x2a')]['id']),'tags':_0x23f2fd||[]};});}})[_0x4945('0x25')](respondWithResult(_0x56a85c,null))[_0x4945('0x37')](handleError(_0x56a85c,null));};exports[_0x4945('0x52')]=function(_0x1a5b73,_0xdfd479){return db[_0x4945('0x20')][_0x4945('0x36')]({'where':{'id':_0x1a5b73[_0x4945('0x2a')]['id']}})[_0x4945('0x25')](handleEntityNotFound(_0xdfd479,null))[_0x4945('0x25')](function(_0x2b7c9e){if(_0x2b7c9e){return _0x2b7c9e[_0x4945('0x52')](_0x1a5b73['query'][_0x4945('0x4d')]);}})[_0x4945('0x25')](respondWithStatusCode(_0xdfd479,null))['catch'](handleError(_0xdfd479,null));};exports[_0x4945('0x53')]=function(_0x5c5fef,_0x3ece33){var _0x4cd6c5=moment()[_0x4945('0x54')]()[_0x4945('0x55')]();var _0x15403f=path[_0x4945('0x56')](config['root'],_0x4945('0x57'),_0x4945('0x58'),_0x4945('0x59'));var _0x42e5b4=path[_0x4945('0x56')](config[_0x4945('0x5a')],_0x4945('0x57'),'files','attachments');var _0xfcc723=path['join'](_0x15403f,_0x4cd6c5);var _0xe88be=util[_0x4945('0x49')](_0x4945('0x5b'),_0x5c5fef[_0x4945('0x2a')]['id'],_0x4cd6c5);var _0x3f547e=path[_0x4945('0x56')](_0x15403f,_0xe88be);var _0x13caf5=[];_0x13caf5[_0x4945('0x5c')]({'model':db[_0x4945('0x5d')],'as':'User','attributes':['id',_0x4945('0x5e')],'raw':!![]});_0x13caf5[_0x4945('0x5c')]({'model':db[_0x4945('0x5f')],'as':_0x4945('0x60'),'attributes':['id','firstName',_0x4945('0x61')],'raw':!![]});if(_0x5c5fef['query'][_0x4945('0x62')]){_0x13caf5[_0x4945('0x5c')]({'model':db[_0x4945('0x63')],'as':_0x4945('0x63'),'raw':!![]});}var _0x3c7c15=[{'model':db[_0x4945('0x3b')],'as':_0x4945('0x64'),'attributes':['id',_0x4945('0x38'),_0x4945('0x65'),_0x4945('0x66'),'secret',_0x4945('0x67')],'include':_0x13caf5}];_0x3c7c15['push']({'model':db[_0x4945('0x68')],'as':'Account','attributes':['id',_0x4945('0x1d')]});_0x3c7c15[_0x4945('0x5c')]({'model':db[_0x4945('0x5d')],'as':'Owner','attributes':['id',_0x4945('0x5e')]});return db[_0x4945('0x20')]['find']({'where':{'id':_0x5c5fef[_0x4945('0x2a')]['id']},'include':_0x3c7c15})['then'](handleEntityNotFound(_0x3ece33,null))[_0x4945('0x25')](function(_0x4147cc){if(_0x4147cc){var _0x37432c=_0x4147cc[_0x4945('0x69')]({'plain':!![]});fs['mkdirSync'](_0xfcc723);var _0x410d55={'channel':'Openchannel','account':_0x37432c[_0x4945('0x6a')]['name'],'agent':_0x37432c[_0x4945('0x6b')]?_0x37432c[_0x4945('0x6b')][_0x4945('0x5e')]:_0x4945('0x6c'),'createdAt':moment(_0x37432c[_0x4945('0x65')])[_0x4945('0x49')](_0x4945('0x6d'))[_0x4945('0x55')](),'closedAt':_0x37432c['closed']?moment(_0x37432c[_0x4945('0x6e')])[_0x4945('0x49')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x37432c['disposition'],'visibility':_0x37432c[_0x4945('0x6f')]?_0x4945('0x70'):'Private','messages':_(_0x37432c[_0x4945('0x64')])[_0x4945('0x46')]({'secret':![]})['map'](function(_0x4d6b3a){if(_0x4d6b3a[_0x4945('0x63')]){var _0x530b9b=path[_0x4945('0x56')](_0x42e5b4,_0x4d6b3a[_0x4945('0x63')][_0x4945('0x71')]);if(fs[_0x4945('0x72')](_0x530b9b)){fs[_0x4945('0x73')](_0x530b9b)[_0x4945('0x74')](fs[_0x4945('0x75')](path['join'](_0xfcc723,_0x4d6b3a[_0x4945('0x63')]['basename'])));}}return{'date':moment(_0x4d6b3a[_0x4945('0x65')])[_0x4945('0x49')](_0x4945('0x6d'))[_0x4945('0x55')](),'sender':_0x4d6b3a[_0x4945('0x66')]===_0x4945('0x76')?_0x4d6b3a[_0x4945('0x5d')]?_0x4d6b3a[_0x4945('0x5d')][_0x4945('0x5e')]:_0x4945('0x77'):_0x4d6b3a[_0x4945('0x60')][_0x4945('0x78')]+(_0x4d6b3a[_0x4945('0x60')][_0x4945('0x61')]?'\x20'+_0x4d6b3a['Contact'][_0x4945('0x61')]:''),'body':_0x4d6b3a[_0x4945('0x63')]?_0x4d6b3a[_0x4945('0x63')][_0x4945('0x71')]:_0x4d6b3a[_0x4945('0x38')],'direction':_0x4d6b3a[_0x4945('0x66')]===_0x4945('0x76')?'A':'C','secret':_0x4d6b3a[_0x4945('0x79')],'read':_0x4d6b3a[_0x4945('0x67')],'attachment':_0x4d6b3a['Attachment']};})['value']()};return ejs[_0x4945('0x7a')](path[_0x4945('0x56')](config[_0x4945('0x5a')],_0x4945('0x57'),_0x4945('0x7b'),'downloadInteraction.ejs'),{'interaction':_0x410d55})[_0x4945('0x25')](function(_0xf452d9){var _0x39c942=path[_0x4945('0x56')](_0xfcc723,_0x4945('0x7c')+_0x37432c['id']+'-'+_0x4cd6c5+_0x4945('0x7d'));var _0x33b92c={'path':_0x39c942,'channel':_0x4945('0x7e'),'interactionId':_0x37432c['id']};return pdf[_0x4945('0x7f')](_0xf452d9,_0x33b92c);})[_0x4945('0x25')](function(){return new Promise(function(_0x4b2a2d,_0x3eac77){zipdir(_0xfcc723,{'saveTo':_0x3f547e},function(_0x4138e8,_0x2bce70){if(_0x4138e8)return _0x3eac77(_0x4138e8);return _0x4b2a2d(_0x2bce70);});})['then'](function(){return new Promise(function(_0x403011,_0x2670dd){rimraf(_0xfcc723,function(_0x52d062){if(_0x52d062)_0x2670dd(_0x52d062);return _0x403011();});});})['then'](function(){return _0x3ece33[_0x4945('0x53')](_0x3f547e,_0xe88be,function(_0x326cdd){if(_0x326cdd){logger[_0x4945('0x1b')]('Unable\x20to\x20delete\x20zip\x20file',_0x326cdd);}else{fs[_0x4945('0x80')](_0x3f547e);}});});});}else{return _0x3ece33[_0x4945('0x10')](0xc8);}})['catch'](handleError(_0x3ece33,null));};
\ No newline at end of file
+var _0x68e4=['join','root','files','server','attachments','transcript-%d-%s.zip','User','fullname','push','CmContact','Contact','lastName','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Account','get','mkdirSync','Owner','N.A.','format','toString','closed','disposition','threadId','Public','existsSync','createReadStream','pipe','basename','out','value','renderFile','views','downloadInteraction.ejs','createPdfFromHTML','download','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','zip-dir','moment','util','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./openchannelInteraction.socket','register','sendStatus','end','json','undefined','limit','count','offset','set','Content-Range','update','then','status','error','name','send','index','map','type','getOptions','user','catch','show','query','from','params','keys','OpenchannelInteraction','rawAttributes','intersection','fields','length','model','includeAll','include','merge','options','create','body','find','addMessage','OpenchannelMessage','ids','omit','filters','attributes','hasOwnProperty','nolimit','sort','pick','where','filter','split','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','spread','Tag','color','openchannelInteractionTags:save','removeTags','unix'];(function(_0x4b4a49,_0x5d166e){var _0x11f782=function(_0xae6660){while(--_0xae6660){_0x4b4a49['push'](_0x4b4a49['shift']());}};_0x11f782(++_0x5d166e);}(_0x68e4,0xa6));var _0x468e=function(_0x1a1431,_0x111b39){_0x1a1431=_0x1a1431-0x0;var _0x1f3e51=_0x68e4[_0x1a1431];return _0x1f3e51;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x468e('0x0'));var moment=require(_0x468e('0x1'));var util=require(_0x468e('0x2'));var path=require(_0x468e('0x3'));var ejs=require(_0x468e('0x4'));var fs=require('fs');var _=require(_0x468e('0x5'));var Redis=require('ioredis');var interaction=require(_0x468e('0x6'));var qs=require(_0x468e('0x7'));var pdf=require(_0x468e('0x8'));var logger=require(_0x468e('0x9'))(_0x468e('0xa'));var config=require('../../config/environment');var db=require(_0x468e('0xb'))['db'];config['redis']=_[_0x468e('0xc')](config['redis'],{'host':_0x468e('0xd'),'port':0x18eb});var socket=require(_0x468e('0xe'))(new Redis(config[_0x468e('0xf')]));require(_0x468e('0x10'))[_0x468e('0x11')](socket);function respondWithStatusCode(_0x498e81,_0x41bf01){_0x41bf01=_0x41bf01||0xcc;return function(_0x2645c3){if(_0x2645c3){return _0x498e81[_0x468e('0x12')](_0x41bf01);}return _0x498e81['status'](_0x41bf01)[_0x468e('0x13')]();};}function respondWithResult(_0x487f15,_0x51a260){_0x51a260=_0x51a260||0xc8;return function(_0x2b97cd){if(_0x2b97cd){return _0x487f15['status'](_0x51a260)[_0x468e('0x14')](_0x2b97cd);}};}function respondWithFilteredResult(_0x1dee09,_0x1540a4){return function(_0x5392a9){if(_0x5392a9){var _0x250c01=typeof _0x1540a4['offset']===_0x468e('0x15')&&typeof _0x1540a4[_0x468e('0x16')]==='undefined';var _0x5b1f20=_0x5392a9[_0x468e('0x17')];var _0x30ee5c=_0x250c01?0x0:_0x1540a4[_0x468e('0x18')];var _0x146193=_0x250c01?_0x5392a9[_0x468e('0x17')]:_0x1540a4[_0x468e('0x18')]+_0x1540a4[_0x468e('0x16')];var _0x7eca4f;if(_0x146193>=_0x5b1f20){_0x146193=_0x5b1f20;_0x7eca4f=0xc8;}else{_0x7eca4f=0xce;}_0x1dee09['status'](_0x7eca4f);return _0x1dee09[_0x468e('0x19')](_0x468e('0x1a'),_0x30ee5c+'-'+_0x146193+'/'+_0x5b1f20)[_0x468e('0x14')](_0x5392a9);}return null;};}function saveUpdates(_0x17c000){return function(_0x4c97b7){if(_0x4c97b7){return _0x4c97b7[_0x468e('0x1b')](_0x17c000)[_0x468e('0x1c')](function(_0x1ba679){return _0x1ba679;});}return null;};}function removeEntity(_0x205ef6){return function(_0x9b5cbc){if(_0x9b5cbc){return _0x9b5cbc['destroy']()[_0x468e('0x1c')](function(){_0x205ef6[_0x468e('0x1d')](0xcc)[_0x468e('0x13')]();});}};}function handleEntityNotFound(_0x156e22){return function(_0x2c6143){if(!_0x2c6143){_0x156e22[_0x468e('0x12')](0x194);}return _0x2c6143;};}function handleError(_0x2aa144,_0x3948f4){_0x3948f4=_0x3948f4||0x1f4;return function(_0x44ac82){logger[_0x468e('0x1e')](_0x44ac82['stack']);if(_0x44ac82[_0x468e('0x1f')]){delete _0x44ac82['name'];}_0x2aa144['status'](_0x3948f4)[_0x468e('0x20')](_0x44ac82);};}exports[_0x468e('0x21')]=function(_0x168e7a,_0x2b6739){var _0x1e237e={};var _0x53e27a=_[_0x468e('0x22')](db['OpenchannelInteraction']['rawAttributes'],function(_0x591ef1){return{'name':_0x591ef1['fieldName'],'type':_0x591ef1[_0x468e('0x23')]['key']};});_0x1e237e=qs[_0x468e('0x24')](_0x53e27a,_0x168e7a);return interaction['findAll']('openchannel',_0x168e7a['query'],_0x168e7a[_0x468e('0x25')],_0x1e237e,_0x53e27a)[_0x468e('0x1c')](respondWithFilteredResult(_0x2b6739,_0x1e237e))[_0x468e('0x26')](handleError(_0x2b6739,null));};exports[_0x468e('0x27')]=function(_0x3c90f9,_0xce2646){var _0x26de4b={};if(_0x3c90f9[_0x468e('0x28')][_0x468e('0x23')]&&_0x3c90f9[_0x468e('0x28')][_0x468e('0x23')]===_0x468e('0x29')){_0x26de4b[_0x468e('0x29')]=_0x3c90f9['params']['id'];}else{_0x26de4b['id']=_0x3c90f9[_0x468e('0x2a')]['id'];}var _0x220230={'raw':![],'where':_0x26de4b},_0x465b86={};_0x465b86['model']=_[_0x468e('0x2b')](db[_0x468e('0x2c')][_0x468e('0x2d')]);_0x465b86[_0x468e('0x28')]=_['keys'](_0x3c90f9['query']);_0x465b86['filters']=_[_0x468e('0x2e')](_0x465b86['model'],_0x465b86['query']);_0x220230['attributes']=_[_0x468e('0x2e')](_0x465b86['model'],qs[_0x468e('0x2f')](_0x3c90f9[_0x468e('0x28')][_0x468e('0x2f')]));_0x220230['attributes']=_0x220230['attributes'][_0x468e('0x30')]?_0x220230['attributes']:_0x465b86[_0x468e('0x31')];if(_0x3c90f9[_0x468e('0x28')][_0x468e('0x32')]){_0x220230[_0x468e('0x33')]=[{'all':!![]}];}_0x220230=_[_0x468e('0x34')]({},_0x220230,_0x3c90f9[_0x468e('0x35')]);return db[_0x468e('0x2c')]['find'](_0x220230)[_0x468e('0x1c')](handleEntityNotFound(_0xce2646,null))[_0x468e('0x1c')](respondWithResult(_0xce2646,null))['catch'](handleError(_0xce2646,null));};exports['create']=function(_0x2674e0,_0x143084){return db[_0x468e('0x2c')][_0x468e('0x36')](_0x2674e0[_0x468e('0x37')],{})['then'](respondWithResult(_0x143084,0xc9))[_0x468e('0x26')](handleError(_0x143084,null));};exports[_0x468e('0x1b')]=function(_0x2b994a,_0x55eaaf){if(_0x2b994a[_0x468e('0x37')]['id']){delete _0x2b994a['body']['id'];}return db['OpenchannelInteraction'][_0x468e('0x38')]({'where':{'id':_0x2b994a[_0x468e('0x2a')]['id']}})[_0x468e('0x1c')](handleEntityNotFound(_0x55eaaf,null))['then'](saveUpdates(_0x2b994a[_0x468e('0x37')],null))[_0x468e('0x1c')](respondWithResult(_0x55eaaf,null))['catch'](handleError(_0x55eaaf,null));};exports['destroy']=function(_0x4d5c07,_0x49e407){return db[_0x468e('0x2c')][_0x468e('0x38')]({'where':{'id':_0x4d5c07[_0x468e('0x2a')]['id']}})[_0x468e('0x1c')](handleEntityNotFound(_0x49e407,null))[_0x468e('0x1c')](removeEntity(_0x49e407,null))[_0x468e('0x26')](handleError(_0x49e407,null));};exports['describe']=function(_0x441d75,_0x1ad69a){return db['OpenchannelInteraction']['describe']()[_0x468e('0x1c')](respondWithResult(_0x1ad69a,null))['catch'](handleError(_0x1ad69a,null));};exports[_0x468e('0x39')]=function(_0x18adbc,_0x12279e){return db[_0x468e('0x3a')][_0x468e('0x38')]({'where':{'id':_0x18adbc[_0x468e('0x2a')]['id']}})[_0x468e('0x1c')](handleEntityNotFound(_0x12279e,null))[_0x468e('0x1c')](function(_0x19f240){if(_0x19f240){return _0x19f240[_0x468e('0x39')](_0x18adbc[_0x468e('0x37')][_0x468e('0x3b')],_[_0x468e('0x3c')](_0x18adbc[_0x468e('0x37')],[_0x468e('0x3b'),'id'])||{});}})[_0x468e('0x1c')](respondWithResult(_0x12279e,null))[_0x468e('0x26')](handleError(_0x12279e,null));};exports['getMessages']=function(_0x5b5108,_0xe5ee2a){var _0xfd616a={'raw':![],'where':{}};var _0x4579ab={};var _0x43fa57={'count':0x0,'rows':[]};return db['OpenchannelInteraction']['findOne']({'where':{'id':_0x5b5108['params']['id']}})[_0x468e('0x1c')](handleEntityNotFound(_0xe5ee2a,null))[_0x468e('0x1c')](function(_0x1adf26){if(_0x1adf26){_0x4579ab['model']=_['keys'](db['OpenchannelMessage']['rawAttributes']);_0x4579ab[_0x468e('0x28')]=_[_0x468e('0x2b')](_0x5b5108[_0x468e('0x28')]);_0x4579ab[_0x468e('0x3d')]=_[_0x468e('0x2e')](_0x4579ab[_0x468e('0x31')],_0x4579ab[_0x468e('0x28')]);_0xfd616a[_0x468e('0x3e')]=_['intersection'](_0x4579ab[_0x468e('0x31')],qs['fields'](_0x5b5108[_0x468e('0x28')][_0x468e('0x2f')]));_0xfd616a['attributes']=_0xfd616a[_0x468e('0x3e')][_0x468e('0x30')]?_0xfd616a[_0x468e('0x3e')]:_0x4579ab[_0x468e('0x31')];if(!_0x5b5108[_0x468e('0x28')][_0x468e('0x3f')](_0x468e('0x40'))){_0xfd616a[_0x468e('0x16')]=qs[_0x468e('0x16')](_0x5b5108['query'][_0x468e('0x16')]);_0xfd616a[_0x468e('0x18')]=qs['offset'](_0x5b5108[_0x468e('0x28')][_0x468e('0x18')]);}_0xfd616a['order']=qs[_0x468e('0x41')](_0x5b5108[_0x468e('0x28')][_0x468e('0x41')]);_0xfd616a['where']=qs['filters'](_[_0x468e('0x42')](_0x5b5108['query'],_0x4579ab[_0x468e('0x3d')]));_0xfd616a[_0x468e('0x43')]['OpenchannelInteractionId']=_0x1adf26['id'];if(_0x5b5108['query'][_0x468e('0x44')]){_0xfd616a[_0x468e('0x43')]=_['merge'](_0xfd616a[_0x468e('0x43')],{'$or':_[_0x468e('0x22')](_0xfd616a['attributes'],function(_0x5b5a0c){var _0x557fa7={};_0x557fa7[_0x5b5a0c]={'$like':'%'+_0x5b5108[_0x468e('0x28')][_0x468e('0x44')]+'%'};return _0x557fa7;})});}if(_0x5b5108[_0x468e('0x28')]['$gte']){var _0x5dc872=_0x5b5108['query']['$gte'][_0x468e('0x45')](',');var _0x481760={};_0x481760[_0x5dc872[0x0]]={'$gte':moment(_0x5dc872[0x1])['format'](_0x468e('0x46'))};_0xfd616a[_0x468e('0x43')]=_['merge'](_0xfd616a[_0x468e('0x43')],_0x481760);}_0xfd616a=_['merge']({},_0xfd616a,_0x5b5108[_0x468e('0x35')]);return db[_0x468e('0x3a')][_0x468e('0x17')]({'where':_0xfd616a['where']})[_0x468e('0x1c')](function(_0x298c89){_0x43fa57[_0x468e('0x17')]=_0x298c89;if(_0x5b5108[_0x468e('0x28')]['includeAll']){_0xfd616a['include']=[{'all':!![]}];}return db[_0x468e('0x3a')][_0x468e('0x47')](_0xfd616a);})[_0x468e('0x1c')](function(_0x42baf2){_0x43fa57['rows']=_0x42baf2;return _0x43fa57;});}})['then'](respondWithFilteredResult(_0xe5ee2a,_0xfd616a))[_0x468e('0x26')](handleError(_0xe5ee2a,null));};exports[_0x468e('0x48')]=function(_0x54184c,_0x22d7fb){return db[_0x468e('0x2c')]['find']({'where':{'id':_0x54184c['params']['id']}})[_0x468e('0x1c')](handleEntityNotFound(_0x22d7fb,null))[_0x468e('0x1c')](function(_0x571979){if(_0x571979){return _0x571979[_0x468e('0x49')](_0x54184c[_0x468e('0x37')][_0x468e('0x3b')],_['omit'](_0x54184c['body'],['ids','id'])||{})[_0x468e('0x4a')](function(){return db[_0x468e('0x4b')][_0x468e('0x47')]({'attributes':['id',_0x468e('0x1f'),_0x468e('0x4c')],'where':{'id':_0x54184c[_0x468e('0x37')][_0x468e('0x3b')]}});})['then'](function(_0x3e566e){socket['emit'](_0x468e('0x4d'),{'id':Number(_0x54184c[_0x468e('0x2a')]['id']),'tags':_0x3e566e||[]});return{'id':Number(_0x54184c[_0x468e('0x2a')]['id']),'tags':_0x3e566e||[]};});}})['then'](respondWithResult(_0x22d7fb,null))['catch'](handleError(_0x22d7fb,null));};exports[_0x468e('0x4e')]=function(_0x468f3e,_0x4fd2fc){return db[_0x468e('0x2c')][_0x468e('0x38')]({'where':{'id':_0x468f3e[_0x468e('0x2a')]['id']}})['then'](handleEntityNotFound(_0x4fd2fc,null))[_0x468e('0x1c')](function(_0x1c5d6d){if(_0x1c5d6d){return _0x1c5d6d['removeTags'](_0x468f3e[_0x468e('0x28')][_0x468e('0x3b')]);}})[_0x468e('0x1c')](respondWithStatusCode(_0x4fd2fc,null))[_0x468e('0x26')](handleError(_0x4fd2fc,null));};exports['download']=function(_0x59397c,_0x323401){var _0x4b9a89=moment()[_0x468e('0x4f')]()['toString']();var _0x342b31=path[_0x468e('0x50')](config[_0x468e('0x51')],'server',_0x468e('0x52'),'tmp');var _0x86989e=path[_0x468e('0x50')](config[_0x468e('0x51')],_0x468e('0x53'),_0x468e('0x52'),_0x468e('0x54'));var _0x3775f0=path[_0x468e('0x50')](_0x342b31,_0x4b9a89);var _0x2de137=util['format'](_0x468e('0x55'),_0x59397c[_0x468e('0x2a')]['id'],_0x4b9a89);var _0x2bfe72=path['join'](_0x342b31,_0x2de137);var _0x32bf8e=[];_0x32bf8e['push']({'model':db[_0x468e('0x56')],'as':'User','attributes':['id',_0x468e('0x57')],'raw':!![]});_0x32bf8e[_0x468e('0x58')]({'model':db[_0x468e('0x59')],'as':_0x468e('0x5a'),'attributes':['id','firstName',_0x468e('0x5b')],'raw':!![]});if(_0x59397c[_0x468e('0x28')][_0x468e('0x54')]){_0x32bf8e[_0x468e('0x58')]({'model':db[_0x468e('0x5c')],'as':_0x468e('0x5c'),'raw':!![]});}var _0x44c635=[{'model':db[_0x468e('0x3a')],'as':_0x468e('0x5d'),'attributes':['id','body',_0x468e('0x5e'),_0x468e('0x5f'),_0x468e('0x60'),_0x468e('0x61')],'include':_0x32bf8e}];_0x44c635[_0x468e('0x58')]({'model':db[_0x468e('0x62')],'as':_0x468e('0x63'),'attributes':['id',_0x468e('0x1f')]});_0x44c635['push']({'model':db['User'],'as':'Owner','attributes':['id',_0x468e('0x57')]});return db[_0x468e('0x2c')]['find']({'where':{'id':_0x59397c[_0x468e('0x2a')]['id']},'include':_0x44c635})[_0x468e('0x1c')](handleEntityNotFound(_0x323401,null))[_0x468e('0x1c')](function(_0x347b46){if(_0x347b46){var _0x1249e5=_0x347b46[_0x468e('0x64')]({'plain':!![]});fs[_0x468e('0x65')](_0x3775f0);var _0x4f4617={'channel':'Openchannel','account':_0x1249e5[_0x468e('0x63')][_0x468e('0x1f')],'agent':_0x1249e5[_0x468e('0x66')]?_0x1249e5[_0x468e('0x66')][_0x468e('0x57')]:_0x468e('0x67'),'createdAt':moment(_0x1249e5['createdAt'])[_0x468e('0x68')](_0x468e('0x46'))[_0x468e('0x69')](),'closedAt':_0x1249e5[_0x468e('0x6a')]?moment(_0x1249e5['closedAt'])['format'](_0x468e('0x46'))[_0x468e('0x69')]():'','disposition':_0x1249e5[_0x468e('0x6b')],'visibility':_0x1249e5[_0x468e('0x6c')]?_0x468e('0x6d'):'Private','messages':_(_0x1249e5[_0x468e('0x5d')])[_0x468e('0x44')]({'secret':![]})[_0x468e('0x22')](function(_0x5ad6b1){if(_0x5ad6b1['Attachment']){var _0xf27e4a=path[_0x468e('0x50')](_0x86989e,_0x5ad6b1[_0x468e('0x5c')]['basename']);if(fs[_0x468e('0x6e')](_0xf27e4a)){fs[_0x468e('0x6f')](_0xf27e4a)[_0x468e('0x70')](fs['createWriteStream'](path['join'](_0x3775f0,_0x5ad6b1[_0x468e('0x5c')][_0x468e('0x71')])));}}return{'date':moment(_0x5ad6b1[_0x468e('0x5e')])[_0x468e('0x68')](_0x468e('0x46'))[_0x468e('0x69')](),'sender':_0x5ad6b1['direction']===_0x468e('0x72')?_0x5ad6b1['User']?_0x5ad6b1[_0x468e('0x56')][_0x468e('0x57')]:'System':_0x5ad6b1[_0x468e('0x5a')]['firstName']+(_0x5ad6b1[_0x468e('0x5a')][_0x468e('0x5b')]?'\x20'+_0x5ad6b1[_0x468e('0x5a')][_0x468e('0x5b')]:''),'body':_0x5ad6b1['Attachment']?_0x5ad6b1[_0x468e('0x5c')][_0x468e('0x71')]:_0x5ad6b1[_0x468e('0x37')],'direction':_0x5ad6b1['direction']===_0x468e('0x72')?'A':'C','secret':_0x5ad6b1[_0x468e('0x60')],'read':_0x5ad6b1[_0x468e('0x61')],'attachment':_0x5ad6b1['Attachment']};})[_0x468e('0x73')]()};return ejs[_0x468e('0x74')](path[_0x468e('0x50')](config[_0x468e('0x51')],_0x468e('0x53'),_0x468e('0x75'),_0x468e('0x76')),{'interaction':_0x4f4617})[_0x468e('0x1c')](function(_0x904bc0){var _0x30c276=path[_0x468e('0x50')](_0x3775f0,'transcript-'+_0x1249e5['id']+'-'+_0x4b9a89+'.pdf');var _0x12ecfd={'path':_0x30c276,'channel':'Openchannel','interactionId':_0x1249e5['id']};return pdf[_0x468e('0x77')](_0x904bc0,_0x12ecfd);})[_0x468e('0x1c')](function(){return new Promise(function(_0x15066f,_0x393f08){zipdir(_0x3775f0,{'saveTo':_0x2bfe72},function(_0x275f45,_0x550762){if(_0x275f45)return _0x393f08(_0x275f45);return _0x15066f(_0x550762);});})[_0x468e('0x1c')](function(){return new Promise(function(_0x1293cd,_0x15ae96){rimraf(_0x3775f0,function(_0x1d5178){if(_0x1d5178)_0x15ae96(_0x1d5178);return _0x1293cd();});});})['then'](function(){return _0x323401[_0x468e('0x78')](_0x2bfe72,_0x2de137,function(_0x27b605){if(_0x27b605){logger[_0x468e('0x1e')](_0x468e('0x79'),_0x27b605);}else{fs[_0x468e('0x7a')](_0x2bfe72);}});});});}else{return _0x323401[_0x468e('0x12')](0xc8);}})[_0x468e('0x26')](handleError(_0x323401,null));};
\ No newline at end of file
index 6ba74d8..fe28613 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b1e=['setMaxListeners','save','update','remove','getUsers','then','map','findAll','setDataValue','unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','OpenchannelMessage'];(function(_0x21bbee,_0x1b4a3d){var _0x29c1e1=function(_0x58034e){while(--_0x58034e){_0x21bbee['push'](_0x21bbee['shift']());}};_0x29c1e1(++_0x1b4a3d);}(_0x1b1e,0x10b));var _0xe1b1=function(_0x53dd9b,_0x24d9e9){_0x53dd9b=_0x53dd9b-0x0;var _0x42f82b=_0x1b1e[_0x53dd9b];return _0x42f82b;};'use strict';var EventEmitter=require(_0xe1b1('0x0'));var OpenchannelInteraction=require(_0xe1b1('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db'][_0xe1b1('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xe1b1('0x3')](0x0);var events={'afterCreate':_0xe1b1('0x4'),'afterUpdate':_0xe1b1('0x5'),'afterDestroy':_0xe1b1('0x6')};function emitEvent(_0x18fdef){return function(_0x1e3a01,_0x4e1c70,_0x1eaf67){_0x1e3a01[_0xe1b1('0x7')]({'attributes':['id'],'raw':!![]})[_0xe1b1('0x8')](function(_0x242776){_0x1e3a01['setDataValue']('Users',_0x242776[_0xe1b1('0x9')](function(_0x80cedd){return{'id':_0x80cedd['id']};}));return OpenchannelMessage[_0xe1b1('0xa')]({'where':{'OpenchannelInteractionId':_0x1e3a01['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe1b1('0x8')](function(_0x30d3df){_0x1e3a01[_0xe1b1('0xb')](_0xe1b1('0xc'),_0x30d3df[_0xe1b1('0xd')]);OpenchannelInteractionEvents[_0xe1b1('0xe')](_0x18fdef+':'+_0x1e3a01['id'],_0x1e3a01);OpenchannelInteractionEvents[_0xe1b1('0xe')](_0x18fdef,_0x1e3a01);_0x1eaf67(null);})[_0xe1b1('0xf')](_0x1eaf67(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0xe1b1('0x10')](e,emitEvent(event));}}module[_0xe1b1('0x11')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xd645=['map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','remove','then','setDataValue','Users'];(function(_0x2ff5b5,_0x43782b){var _0x302df5=function(_0x1669bc){while(--_0x1669bc){_0x2ff5b5['push'](_0x2ff5b5['shift']());}};_0x302df5(++_0x43782b);}(_0xd645,0x80));var _0x5d64=function(_0x5794d1,_0x159550){_0x5794d1=_0x5794d1-0x0;var _0xc2b301=_0xd645[_0x5794d1];return _0xc2b301;};'use strict';var EventEmitter=require(_0x5d64('0x0'));var OpenchannelInteraction=require(_0x5d64('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x5d64('0x2')](0x0);var events={'afterCreate':_0x5d64('0x3'),'afterUpdate':'update','afterDestroy':_0x5d64('0x4')};function emitEvent(_0x80563d){return function(_0x264d84,_0x3e9b59,_0x97ad1a){_0x264d84['getUsers']({'attributes':['id'],'raw':!![]})[_0x5d64('0x5')](function(_0x3bc3a0){_0x264d84[_0x5d64('0x6')](_0x5d64('0x7'),_0x3bc3a0[_0x5d64('0x8')](function(_0x40a330){return{'id':_0x40a330['id']};}));return OpenchannelMessage[_0x5d64('0x9')]({'where':{'OpenchannelInteractionId':_0x264d84['id'],'direction':'in','read':![]},'raw':!![]});})[_0x5d64('0x5')](function(_0x1cdf5d){_0x264d84[_0x5d64('0x6')](_0x5d64('0xa'),_0x1cdf5d[_0x5d64('0xb')]);OpenchannelInteractionEvents[_0x5d64('0xc')](_0x80563d+':'+_0x264d84['id'],_0x264d84);OpenchannelInteractionEvents[_0x5d64('0xc')](_0x80563d,_0x264d84);_0x97ad1a(null);})[_0x5d64('0xd')](_0x97ad1a(null));};}for(var e in events){if(events[_0x5d64('0xe')](e)){var event=events[e];OpenchannelInteraction[_0x5d64('0xf')](e,emitEvent(event));}}module[_0x5d64('0x10')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 946b849..da810ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x932e=['exports','define','OpenchannelInteraction','openchannel_interactions','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./openchannelInteraction.attributes'];(function(_0x32436d,_0x1e2b21){var _0x157038=function(_0x5bd3b9){while(--_0x5bd3b9){_0x32436d['push'](_0x32436d['shift']());}};_0x157038(++_0x1e2b21);}(_0x932e,0x1d3));var _0xe932=function(_0x33958e,_0x1c2974){_0x33958e=_0x33958e-0x0;var _0x2029fd=_0x932e[_0x33958e];return _0x2029fd;};'use strict';var _=require(_0xe932('0x0'));var util=require(_0xe932('0x1'));var logger=require(_0xe932('0x2'))(_0xe932('0x3'));var moment=require(_0xe932('0x4'));var BPromise=require('bluebird');var rp=require(_0xe932('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe932('0x6'));var config=require(_0xe932('0x7'));var attributes=require(_0xe932('0x8'));module[_0xe932('0x9')]=function(_0x1145ca,_0x2ba006){return _0x1145ca[_0xe932('0xa')](_0xe932('0xb'),attributes,{'tableName':_0xe932('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x197af7,_0xef411f,_0x2c5dd8){if(_0x197af7[_0xe932('0xd')](_0xe932('0xe'))){_0x197af7['closedAt']=moment()[_0xe932('0xf')](_0xe932('0x10'));}_0x2c5dd8(null,_0x197af7);}}});};
\ No newline at end of file
+var _0xb59d=['OpenchannelInteraction','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb59d,0xc0));var _0xdb59=function(_0x51d68f,_0x8bb359){_0x51d68f=_0x51d68f-0x0;var _0x32d749=_0xb59d[_0x51d68f];return _0x32d749;};'use strict';var _=require(_0xdb59('0x0'));var util=require(_0xdb59('0x1'));var logger=require(_0xdb59('0x2'))(_0xdb59('0x3'));var moment=require(_0xdb59('0x4'));var BPromise=require(_0xdb59('0x5'));var rp=require(_0xdb59('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdb59('0x7'));var config=require(_0xdb59('0x8'));var attributes=require(_0xdb59('0x9'));module[_0xdb59('0xa')]=function(_0x40355b,_0xc40c24){return _0x40355b[_0xdb59('0xb')](_0xdb59('0xc'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x3e4194,_0xf20a91,_0x3fbe78){if(_0x3e4194[_0xdb59('0xd')]('closed')){_0x3e4194[_0xdb59('0xe')]=moment()[_0xdb59('0xf')](_0xdb59('0x10'));}_0x3fbe78(null,_0x3e4194);}}});};
\ No newline at end of file
index a71a676..0c1d563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0f1=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','socket.io-emitter','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','UpdateOpenchannelInteraction','update','body','options','raw','attributes','limit','stringify','AddTagsToOpenchannelInteraction','OpenchannelInteraction','find','addTags','omit','ids','spread','debug','AddTags'];(function(_0x2850c0,_0x1363a7){var _0x21e830=function(_0x3ec70a){while(--_0x3ec70a){_0x2850c0['push'](_0x2850c0['shift']());}};_0x21e830(++_0x1363a7);}(_0xc0f1,0x102));var _0x1c0f=function(_0x5bdb83,_0x3605de){_0x5bdb83=_0x5bdb83-0x0;var _0x1986bb=_0xc0f1[_0x5bdb83];return _0x1986bb;};'use strict';var _=require(_0x1c0f('0x0'));var util=require(_0x1c0f('0x1'));var moment=require(_0x1c0f('0x2'));var BPromise=require('bluebird');var rs=require(_0x1c0f('0x3'));var fs=require('fs');var Redis=require(_0x1c0f('0x4'));var db=require(_0x1c0f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1c0f('0x6'))(_0x1c0f('0x7'));var config=require(_0x1c0f('0x8'));var jayson=require(_0x1c0f('0x9'));var client=jayson[_0x1c0f('0xa')]['http']({'port':0x232a});config[_0x1c0f('0xb')]=_['defaults'](config[_0x1c0f('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x1c0f('0xc'))(new Redis(config[_0x1c0f('0xb')]));require(_0x1c0f('0xd'))[_0x1c0f('0xe')](socket);function respondWithRpcPromise(_0x5e19e3,_0x50cbeb,_0x95d62f){return new BPromise(function(_0x41744c,_0x1f322c){return client[_0x1c0f('0xf')](_0x5e19e3,_0x95d62f)[_0x1c0f('0x10')](function(_0x49d1fa){logger[_0x1c0f('0x11')](_0x1c0f('0x12'),_0x50cbeb,'request\x20sent');logger['debug'](_0x1c0f('0x13'),_0x50cbeb,_0x1c0f('0x14'),JSON['stringify'](_0x49d1fa));if(_0x49d1fa[_0x1c0f('0x15')]){if(_0x49d1fa[_0x1c0f('0x15')][_0x1c0f('0x16')]===0x1f4){logger[_0x1c0f('0x15')](_0x1c0f('0x12'),_0x50cbeb,_0x49d1fa[_0x1c0f('0x15')][_0x1c0f('0x17')]);return _0x1f322c(_0x49d1fa[_0x1c0f('0x15')][_0x1c0f('0x17')]);}logger[_0x1c0f('0x15')](_0x1c0f('0x12'),_0x50cbeb,_0x49d1fa[_0x1c0f('0x15')][_0x1c0f('0x17')]);return _0x41744c(_0x49d1fa[_0x1c0f('0x15')][_0x1c0f('0x17')]);}else{logger[_0x1c0f('0x11')]('OpenchannelInteraction,\x20%s,\x20%s',_0x50cbeb,'request\x20sent');_0x41744c(_0x49d1fa[_0x1c0f('0x18')][_0x1c0f('0x17')]);}})[_0x1c0f('0x19')](function(_0x42ddd5){logger[_0x1c0f('0x15')](_0x1c0f('0x12'),_0x50cbeb,_0x42ddd5);_0x1f322c(_0x42ddd5);});});}exports[_0x1c0f('0x1a')]=function(_0x4c4555){var _0x5cc1de=this;return new Promise(function(_0x262e85,_0x50c32d){return db['OpenchannelInteraction'][_0x1c0f('0x1b')](_0x4c4555[_0x1c0f('0x1c')],{'raw':_0x4c4555[_0x1c0f('0x1d')]?_0x4c4555[_0x1c0f('0x1d')][_0x1c0f('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c4555[_0x1c0f('0x1d')]?_0x4c4555['options']['where']||null:null,'attributes':_0x4c4555['options']?_0x4c4555[_0x1c0f('0x1d')][_0x1c0f('0x1f')]||null:null,'limit':_0x4c4555['options']?_0x4c4555['options'][_0x1c0f('0x20')]||null:null})[_0x1c0f('0x10')](function(_0x1d57ff){logger[_0x1c0f('0x11')](_0x1c0f('0x1a'),_0x4c4555);logger['debug']('UpdateOpenchannelInteraction',_0x4c4555,JSON[_0x1c0f('0x21')](_0x1d57ff));_0x262e85(_0x1d57ff);})[_0x1c0f('0x19')](function(_0x455853){logger['error'](_0x1c0f('0x1a'),_0x455853[_0x1c0f('0x17')],_0x4c4555);_0x50c32d(_0x5cc1de[_0x1c0f('0x15')](0x1f4,_0x455853[_0x1c0f('0x17')]));});});};exports[_0x1c0f('0x22')]=function(_0x136e0f){return new Promise(function(_0x5e9ef2,_0x281216){return db[_0x1c0f('0x23')][_0x1c0f('0x24')]({'where':_0x136e0f[_0x1c0f('0x1d')]?_0x136e0f['options']['where']||null:null})[_0x1c0f('0x10')](function(_0x52e336){if(_0x52e336){return _0x52e336[_0x1c0f('0x25')](_0x136e0f[_0x1c0f('0x1c')]['ids'],_[_0x1c0f('0x26')](_0x136e0f[_0x1c0f('0x1c')],[_0x1c0f('0x27'),'id'])||{});}})[_0x1c0f('0x28')](function(_0x1efd6c){logger['info']('AddTags',_0x136e0f);logger[_0x1c0f('0x29')](_0x1c0f('0x2a'),_0x136e0f,JSON['stringify'](_0x1efd6c));_0x5e9ef2(_0x1efd6c);})[_0x1c0f('0x19')](function(_0x3bf671){logger[_0x1c0f('0x15')](_0x1c0f('0x2a'),_0x3bf671[_0x1c0f('0x17')],_0x136e0f);_0x281216(_this[_0x1c0f('0x15')](0x1f4,_0x3bf671['message']));});});};
\ No newline at end of file
+var _0xc617=['randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','OpenchannelInteraction','update','body','options','raw','where','UpdateOpenchannelInteraction','catch','find','ids','omit','spread','AddTags','lodash','moment','bluebird'];(function(_0x3e55ed,_0x3ccba1){var _0x1835d3=function(_0x5d40a5){while(--_0x5d40a5){_0x3e55ed['push'](_0x3e55ed['shift']());}};_0x1835d3(++_0x3ccba1);}(_0xc617,0x13d));var _0x7c61=function(_0x3987a1,_0x447793){_0x3987a1=_0x3987a1-0x0;var _0xe2596e=_0xc617[_0x3987a1];return _0xe2596e;};'use strict';var _=require(_0x7c61('0x0'));var util=require('util');var moment=require(_0x7c61('0x1'));var BPromise=require(_0x7c61('0x2'));var rs=require(_0x7c61('0x3'));var fs=require('fs');var Redis=require(_0x7c61('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7c61('0x5'));var logger=require(_0x7c61('0x6'))('rpc');var config=require(_0x7c61('0x7'));var jayson=require(_0x7c61('0x8'));var client=jayson[_0x7c61('0x9')][_0x7c61('0xa')]({'port':0x232a});config[_0x7c61('0xb')]=_[_0x7c61('0xc')](config[_0x7c61('0xb')],{'host':_0x7c61('0xd'),'port':0x18eb});var socket=require(_0x7c61('0xe'))(new Redis(config[_0x7c61('0xb')]));require(_0x7c61('0xf'))[_0x7c61('0x10')](socket);function respondWithRpcPromise(_0x1a9d43,_0x2a879,_0xc186c8){return new BPromise(function(_0xd7df00,_0x3e9e17){return client['request'](_0x1a9d43,_0xc186c8)[_0x7c61('0x11')](function(_0x11253e){logger[_0x7c61('0x12')](_0x7c61('0x13'),_0x2a879,_0x7c61('0x14'));logger[_0x7c61('0x15')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x2a879,_0x7c61('0x14'),JSON[_0x7c61('0x16')](_0x11253e));if(_0x11253e['error']){if(_0x11253e[_0x7c61('0x17')][_0x7c61('0x18')]===0x1f4){logger[_0x7c61('0x17')](_0x7c61('0x13'),_0x2a879,_0x11253e[_0x7c61('0x17')][_0x7c61('0x19')]);return _0x3e9e17(_0x11253e[_0x7c61('0x17')][_0x7c61('0x19')]);}logger['error'](_0x7c61('0x13'),_0x2a879,_0x11253e[_0x7c61('0x17')]['message']);return _0xd7df00(_0x11253e[_0x7c61('0x17')][_0x7c61('0x19')]);}else{logger[_0x7c61('0x12')]('OpenchannelInteraction,\x20%s,\x20%s',_0x2a879,_0x7c61('0x14'));_0xd7df00(_0x11253e[_0x7c61('0x1a')][_0x7c61('0x19')]);}})['catch'](function(_0x142f23){logger[_0x7c61('0x17')](_0x7c61('0x13'),_0x2a879,_0x142f23);_0x3e9e17(_0x142f23);});});}exports['UpdateOpenchannelInteraction']=function(_0x3f8ba8){var _0x4d1bb1=this;return new Promise(function(_0x2c9ee3,_0x234a7f){return db[_0x7c61('0x1b')][_0x7c61('0x1c')](_0x3f8ba8[_0x7c61('0x1d')],{'raw':_0x3f8ba8[_0x7c61('0x1e')]?_0x3f8ba8[_0x7c61('0x1e')][_0x7c61('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f8ba8['options']?_0x3f8ba8[_0x7c61('0x1e')][_0x7c61('0x20')]||null:null,'attributes':_0x3f8ba8[_0x7c61('0x1e')]?_0x3f8ba8[_0x7c61('0x1e')]['attributes']||null:null,'limit':_0x3f8ba8[_0x7c61('0x1e')]?_0x3f8ba8['options']['limit']||null:null})[_0x7c61('0x11')](function(_0x55d4de){logger[_0x7c61('0x12')](_0x7c61('0x21'),_0x3f8ba8);logger['debug']('UpdateOpenchannelInteraction',_0x3f8ba8,JSON[_0x7c61('0x16')](_0x55d4de));_0x2c9ee3(_0x55d4de);})[_0x7c61('0x22')](function(_0x4d0d59){logger['error'](_0x7c61('0x21'),_0x4d0d59[_0x7c61('0x19')],_0x3f8ba8);_0x234a7f(_0x4d1bb1[_0x7c61('0x17')](0x1f4,_0x4d0d59[_0x7c61('0x19')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x1b11e6){return new Promise(function(_0x130e0e,_0x42b646){return db[_0x7c61('0x1b')][_0x7c61('0x23')]({'where':_0x1b11e6[_0x7c61('0x1e')]?_0x1b11e6[_0x7c61('0x1e')][_0x7c61('0x20')]||null:null})['then'](function(_0x188af2){if(_0x188af2){return _0x188af2['addTags'](_0x1b11e6[_0x7c61('0x1d')][_0x7c61('0x24')],_[_0x7c61('0x25')](_0x1b11e6['body'],[_0x7c61('0x24'),'id'])||{});}})[_0x7c61('0x26')](function(_0x322cfb){logger[_0x7c61('0x12')](_0x7c61('0x27'),_0x1b11e6);logger[_0x7c61('0x15')](_0x7c61('0x27'),_0x1b11e6,JSON[_0x7c61('0x16')](_0x322cfb));_0x130e0e(_0x322cfb);})[_0x7c61('0x22')](function(_0x153134){logger[_0x7c61('0x17')](_0x7c61('0x27'),_0x153134[_0x7c61('0x19')],_0x1b11e6);_0x42b646(_this['error'](0x1f4,_0x153134[_0x7c61('0x19')]));});});};
\ No newline at end of file
index 6233f8a..1ee33d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a41=['update','length','openchannelInteraction:'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x4a41,0xf0));var _0x14a4=function(_0x1e2b91,_0x4360f0){_0x1e2b91=_0x1e2b91-0x0;var _0x40f517=_0x4a41[_0x1e2b91];return _0x40f517;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=['save','remove',_0x14a4('0x0')];function createListener(_0x156ccf,_0x3156e8){return function(_0x58d383){_0x3156e8['emit'](_0x156ccf,_0x58d383);};}function removeListener(_0x56a309,_0x5384a7){return function(){OpenchannelInteractionEvents['removeListener'](_0x56a309,_0x5384a7);};}exports['register']=function(_0x2c0cae){for(var _0x16d98a=0x0,_0x41de77=events[_0x14a4('0x1')];_0x16d98a<_0x41de77;_0x16d98a++){var _0x5e8a26=events[_0x16d98a];var _0x4d4b0e=createListener(_0x14a4('0x2')+_0x5e8a26,_0x2c0cae);OpenchannelInteractionEvents['on'](_0x5e8a26,_0x4d4b0e);}};
\ No newline at end of file
+var _0xd54a=['save','update','emit','removeListener','register','length','openchannelInteraction:'];(function(_0x3b76ae,_0x1f110e){var _0x11ab0f=function(_0x3ebed0){while(--_0x3ebed0){_0x3b76ae['push'](_0x3b76ae['shift']());}};_0x11ab0f(++_0x1f110e);}(_0xd54a,0xe0));var _0xad54=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xd54a[_0x1caf6a];return _0x1bf493;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0xad54('0x0'),'remove',_0xad54('0x1')];function createListener(_0x142474,_0x5aad66){return function(_0x558f94){_0x5aad66[_0xad54('0x2')](_0x142474,_0x558f94);};}function removeListener(_0x28206f,_0x1fce3c){return function(){OpenchannelInteractionEvents[_0xad54('0x3')](_0x28206f,_0x1fce3c);};}exports[_0xad54('0x4')]=function(_0xb19afa){for(var _0x192686=0x0,_0x2abdfb=events[_0xad54('0x5')];_0x192686<_0x2abdfb;_0x192686++){var _0x4e52b4=events[_0x192686];var _0x5e139e=createListener(_0xad54('0x6')+_0x4e52b4,_0xb19afa);OpenchannelInteractionEvents['on'](_0x4e52b4,_0x5e139e);}};
\ No newline at end of file
index dc76d44..661d7f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['index','/describe','show','post','isAuthenticated','tracked','openchannel','openchannelmessage:create','update','put','/:id/accept','accept','reject','delete','/:id','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get'];(function(_0x430369,_0x312a46){var _0x10483a=function(_0x3bd135){while(--_0x3bd135){_0x430369['push'](_0x430369['shift']());}};_0x10483a(++_0x312a46);}(_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['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),interaction[_0x0a9e('0xe')](_0x0a9e('0xf'),_0x0a9e('0x10')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);router[_0x0a9e('0x12')](_0x0a9e('0x13'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x12')]('/:id/reject',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x15')]);router[_0x0a9e('0x16')](_0x0a9e('0x17'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x18')]);module['exports']=router;
\ No newline at end of file
+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(_0x3ad7ad,_0x291a8d){var _0x225a60=function(_0xca7354){while(--_0xca7354){_0x3ad7ad['push'](_0x3ad7ad['shift']());}};_0x225a60(++_0x291a8d);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3e21f4,_0x43d310){_0x3e21f4=_0x3e21f4-0x0;var _0x40fc49=_0xcb91[_0x3e21f4];return _0x40fc49;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
index 7c33c50..a404c6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9147=['out','DATE','STRING','sequelize','exports','medium','BOOLEAN','ENUM'];(function(_0x1daefa,_0x36f14b){var _0x3b87a9=function(_0x114b85){while(--_0x114b85){_0x1daefa['push'](_0x1daefa['shift']());}};_0x3b87a9(++_0x36f14b);}(_0x9147,0x7b));var _0x7914=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x9147[_0x4243a3];return _0x1b2a33;};'use strict';var Sequelize=require(_0x7914('0x0'));module[_0x7914('0x1')]={'body':{'type':Sequelize['TEXT'](_0x7914('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x7914('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x7914('0x4')]('in','out'),'defaultValue':_0x7914('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x7914('0x6')]},'providerName':{'type':Sequelize[_0x7914('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x2fe3=['ENUM','DATE','STRING','sequelize','exports','BOOLEAN'];(function(_0x102f96,_0x2cdfca){var _0x2effea=function(_0x33ac5b){while(--_0x33ac5b){_0x102f96['push'](_0x102f96['shift']());}};_0x2effea(++_0x2cdfca);}(_0x2fe3,0x87));var _0x32fe=function(_0x9af50f,_0x1ee938){_0x9af50f=_0x9af50f-0x0;var _0x5b4863=_0x2fe3[_0x9af50f];return _0x5b4863;};'use strict';var Sequelize=require(_0x32fe('0x0'));module[_0x32fe('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x32fe('0x2')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x32fe('0x3')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x32fe('0x4')]},'providerName':{'type':Sequelize[_0x32fe('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index af37f27..574c295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7953=['rows','show','params','merge','find','create','body','describe','../../config/logger','openchannel-interactions','accept','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','OpenchannelInteraction','OpenchannelInteractionId','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','stringify','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','SELECT','contact','User','fullname','email','manual','interface','channel','EventManager','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','sequelize','QueryTypes','internal','SIP/%s','motionChannel','event','rejectmessage','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','stack','name','send','map','OpenchannelMessage','rawAttributes','type','key','keys','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7953,0x1c4));var _0x3795=function(_0x36d25e,_0x1a047d){_0x36d25e=_0x36d25e-0x0;var _0x4b95b8=_0x7953[_0x36d25e];return _0x4b95b8;};'use strict';var emlformat=require(_0x3795('0x0'));var rimraf=require(_0x3795('0x1'));var zipdir=require(_0x3795('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3795('0x3'));var moment=require('moment');var BPromise=require(_0x3795('0x4'));var Mustache=require('mustache');var util=require(_0x3795('0x5'));var path=require(_0x3795('0x6'));var sox=require(_0x3795('0x7'));var csv=require('to-csv');var ejs=require(_0x3795('0x8'));var fs=require('fs');var fs_extra=require(_0x3795('0x9'));var _=require(_0x3795('0xa'));var squel=require(_0x3795('0xb'));var crypto=require(_0x3795('0xc'));var jsforce=require(_0x3795('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3795('0xe'));var querystring=require('querystring');var Papa=require(_0x3795('0xf'));var Redis=require(_0x3795('0x10'));var authService=require(_0x3795('0x11'));var qs=require(_0x3795('0x12'));var as=require(_0x3795('0x13'));var hardwareService=require(_0x3795('0x14'));var logger=require('../../config/logger')(_0x3795('0x15'));var utils=require(_0x3795('0x16'));var config=require(_0x3795('0x17'));var licenseUtil=require(_0x3795('0x18'));var db=require('../../mysqldb')['db'];config[_0x3795('0x19')]=_['defaults'](config['redis'],{'host':_0x3795('0x1a'),'port':0x18eb});var socket=require(_0x3795('0x1b'))(new Redis(config[_0x3795('0x19')]));require(_0x3795('0x1c'))[_0x3795('0x1d')](socket);var jayson=require(_0x3795('0x1e'));var client=jayson[_0x3795('0x1f')][_0x3795('0x20')]({'port':0x232c});var client9002=jayson[_0x3795('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x364aa7,_0x33a68d,_0x4bd7c7,_0xa415fa){return new BPromise(function(_0x29ee9d,_0x519580){var _0x47de79=_0xa415fa||client;return _0x47de79[_0x3795('0x21')](_0x364aa7,_0x4bd7c7)[_0x3795('0x22')](function(_0x39df78){logger[_0x3795('0x23')](_0x3795('0x24'),_0x33a68d,'request\x20sent');logger[_0x3795('0x25')](_0x3795('0x26'),_0x33a68d,_0x3795('0x27'),JSON['stringify'](_0x39df78));if(_0x39df78[_0x3795('0x28')]){if(_0x39df78[_0x3795('0x28')]['code']===0x1f4){logger[_0x3795('0x28')]('OpenchannelMessage,\x20%s,\x20%s',_0x33a68d,_0x39df78[_0x3795('0x28')][_0x3795('0x29')]);return _0x519580(_0x39df78[_0x3795('0x28')][_0x3795('0x29')]);}logger[_0x3795('0x28')](_0x3795('0x24'),_0x33a68d,_0x39df78[_0x3795('0x28')]['message']);return _0x29ee9d(_0x39df78[_0x3795('0x28')][_0x3795('0x29')]);}else{logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x33a68d,_0x3795('0x27'));_0x29ee9d(_0x39df78['result'][_0x3795('0x29')]);}})[_0x3795('0x2a')](function(_0xdd3a90){logger[_0x3795('0x28')](_0x3795('0x24'),_0x33a68d,_0xdd3a90);_0x519580(_0xdd3a90);});});}function respondWithStatusCode(_0x4df3df,_0x310a33){_0x310a33=_0x310a33||0xcc;return function(_0x2f5343){if(_0x2f5343){return _0x4df3df[_0x3795('0x2b')](_0x310a33);}return _0x4df3df['status'](_0x310a33)[_0x3795('0x2c')]();};}function respondWithResult(_0x2dd1e3,_0x3f99c0){_0x3f99c0=_0x3f99c0||0xc8;return function(_0x28c65e){if(_0x28c65e){return _0x2dd1e3[_0x3795('0x2d')](_0x3f99c0)[_0x3795('0x2e')](_0x28c65e);}};}function respondWithFilteredResult(_0x55e160,_0x5d8df6){return function(_0x588e16){if(_0x588e16){var _0x5784ee=typeof _0x5d8df6[_0x3795('0x2f')]===_0x3795('0x30')&&typeof _0x5d8df6['limit']===_0x3795('0x30');var _0x13da3f=_0x588e16['count'];var _0x489424=_0x5784ee?0x0:_0x5d8df6['offset'];var _0x4f51a7=_0x5784ee?_0x588e16[_0x3795('0x31')]:_0x5d8df6[_0x3795('0x2f')]+_0x5d8df6[_0x3795('0x32')];var _0xc6fe3;if(_0x4f51a7>=_0x13da3f){_0x4f51a7=_0x13da3f;_0xc6fe3=0xc8;}else{_0xc6fe3=0xce;}_0x55e160[_0x3795('0x2d')](_0xc6fe3);return _0x55e160[_0x3795('0x33')](_0x3795('0x34'),_0x489424+'-'+_0x4f51a7+'/'+_0x13da3f)[_0x3795('0x2e')](_0x588e16);}return null;};}function patchUpdates(_0x1f78ba){return function(_0x3b686b){try{jsonpatch[_0x3795('0x35')](_0x3b686b,_0x1f78ba,!![]);}catch(_0x16b72b){return BPromise[_0x3795('0x36')](_0x16b72b);}return _0x3b686b['save']();};}function saveUpdates(_0x440c8f,_0x581fc1){return function(_0x5a03f7){if(_0x5a03f7){return _0x5a03f7[_0x3795('0x37')](_0x440c8f)[_0x3795('0x22')](function(_0x1a3426){return _0x1a3426;});}return null;};}function removeEntity(_0x20abb8,_0x2cbd8d){return function(_0x518045){if(_0x518045){return _0x518045[_0x3795('0x38')]()['then'](function(){_0x20abb8[_0x3795('0x2d')](0xcc)[_0x3795('0x2c')]();});}};}function handleEntityNotFound(_0x1da50b,_0x2b4832){return function(_0x36b90f){if(!_0x36b90f){_0x1da50b[_0x3795('0x2b')](0x194);}return _0x36b90f;};}function handleError(_0x29e877,_0x3792e3){_0x3792e3=_0x3792e3||0x1f4;return function(_0x384791){logger[_0x3795('0x28')](_0x384791[_0x3795('0x39')]);if(_0x384791[_0x3795('0x3a')]){delete _0x384791[_0x3795('0x3a')];}_0x29e877[_0x3795('0x2d')](_0x3792e3)[_0x3795('0x3b')](_0x384791);};}exports['index']=function(_0x53049b,_0x3a0d17){var _0x249797={},_0xbe8655={},_0x26de71={'count':0x0,'rows':[]};var _0x423359=_[_0x3795('0x3c')](db[_0x3795('0x3d')][_0x3795('0x3e')],function(_0x4bb73e){return{'name':_0x4bb73e['fieldName'],'type':_0x4bb73e[_0x3795('0x3f')][_0x3795('0x40')]};});_0xbe8655['model']=_['map'](_0x423359,_0x3795('0x3a'));_0xbe8655['query']=_[_0x3795('0x41')](_0x53049b[_0x3795('0x42')]);_0xbe8655[_0x3795('0x43')]=_[_0x3795('0x44')](_0xbe8655[_0x3795('0x45')],_0xbe8655[_0x3795('0x42')]);_0x249797['attributes']=_['intersection'](_0xbe8655[_0x3795('0x45')],qs['fields'](_0x53049b[_0x3795('0x42')][_0x3795('0x46')]));_0x249797['attributes']=_0x249797[_0x3795('0x47')][_0x3795('0x48')]?_0x249797[_0x3795('0x47')]:_0xbe8655[_0x3795('0x45')];if(!_0x53049b[_0x3795('0x42')]['hasOwnProperty'](_0x3795('0x49'))){_0x249797['limit']=qs[_0x3795('0x32')](_0x53049b[_0x3795('0x42')][_0x3795('0x32')]);_0x249797[_0x3795('0x2f')]=qs[_0x3795('0x2f')](_0x53049b['query'][_0x3795('0x2f')]);}_0x249797[_0x3795('0x4a')]=qs[_0x3795('0x4b')](_0x53049b[_0x3795('0x42')][_0x3795('0x4b')]);_0x249797[_0x3795('0x4c')]=qs[_0x3795('0x43')](_[_0x3795('0x4d')](_0x53049b[_0x3795('0x42')],_0xbe8655['filters']),_0x423359);if(_0x53049b[_0x3795('0x42')][_0x3795('0x4e')]){_0x249797['where']=_['merge'](_0x249797['where'],{'$or':_[_0x3795('0x3c')](_0x423359,function(_0x4d3b58){if(_0x4d3b58[_0x3795('0x3f')]!==_0x3795('0x4f')){var _0x33fb9d={};_0x33fb9d[_0x4d3b58[_0x3795('0x3a')]]={'$like':'%'+_0x53049b[_0x3795('0x42')][_0x3795('0x4e')]+'%'};return _0x33fb9d;}})});}_0x249797=_['merge']({},_0x249797,_0x53049b[_0x3795('0x50')]);var _0x3a4d47={'where':_0x249797[_0x3795('0x4c')]};return db['OpenchannelMessage'][_0x3795('0x31')](_0x3a4d47)[_0x3795('0x22')](function(_0x53ed14){_0x26de71[_0x3795('0x31')]=_0x53ed14;if(_0x53049b['query'][_0x3795('0x51')]){_0x249797[_0x3795('0x52')]=[{'all':!![]}];}return db[_0x3795('0x3d')][_0x3795('0x53')](_0x249797);})[_0x3795('0x22')](function(_0x2ca80e){_0x26de71[_0x3795('0x54')]=_0x2ca80e;return _0x26de71;})[_0x3795('0x22')](respondWithFilteredResult(_0x3a0d17,_0x249797))[_0x3795('0x2a')](handleError(_0x3a0d17,null));};exports[_0x3795('0x55')]=function(_0x267e88,_0x4a4dd9){var _0x5510e3={'raw':!![],'where':{'id':_0x267e88[_0x3795('0x56')]['id']}},_0x3ab496={};_0x3ab496[_0x3795('0x45')]=_['keys'](db[_0x3795('0x3d')][_0x3795('0x3e')]);_0x3ab496['query']=_['keys'](_0x267e88[_0x3795('0x42')]);_0x3ab496[_0x3795('0x43')]=_[_0x3795('0x44')](_0x3ab496['model'],_0x3ab496[_0x3795('0x42')]);_0x5510e3[_0x3795('0x47')]=_[_0x3795('0x44')](_0x3ab496[_0x3795('0x45')],qs[_0x3795('0x46')](_0x267e88[_0x3795('0x42')][_0x3795('0x46')]));_0x5510e3[_0x3795('0x47')]=_0x5510e3[_0x3795('0x47')][_0x3795('0x48')]?_0x5510e3[_0x3795('0x47')]:_0x3ab496[_0x3795('0x45')];if(_0x267e88[_0x3795('0x42')][_0x3795('0x51')]){_0x5510e3[_0x3795('0x52')]=[{'all':!![]}];}_0x5510e3=_[_0x3795('0x57')]({},_0x5510e3,_0x267e88[_0x3795('0x50')]);return db['OpenchannelMessage'][_0x3795('0x58')](_0x5510e3)[_0x3795('0x22')](handleEntityNotFound(_0x4a4dd9,null))[_0x3795('0x22')](respondWithResult(_0x4a4dd9,null))[_0x3795('0x2a')](handleError(_0x4a4dd9,null));};exports[_0x3795('0x59')]=function(_0x5429f1,_0x1c7de6){return db[_0x3795('0x3d')]['create'](_0x5429f1['body'],{})[_0x3795('0x22')](respondWithResult(_0x1c7de6,0xc9))[_0x3795('0x2a')](handleError(_0x1c7de6,null));};exports[_0x3795('0x37')]=function(_0x235a87,_0x907dc4){if(_0x235a87[_0x3795('0x5a')]['id']){delete _0x235a87['body']['id'];}return db[_0x3795('0x3d')][_0x3795('0x58')]({'where':{'id':_0x235a87['params']['id']}})['then'](handleEntityNotFound(_0x907dc4,null))['then'](saveUpdates(_0x235a87[_0x3795('0x5a')],null))[_0x3795('0x22')](respondWithResult(_0x907dc4,null))[_0x3795('0x2a')](handleError(_0x907dc4,null));};exports[_0x3795('0x38')]=function(_0x18614e,_0xa551ce){return db[_0x3795('0x3d')][_0x3795('0x58')]({'where':{'id':_0x18614e[_0x3795('0x56')]['id']}})['then'](handleEntityNotFound(_0xa551ce,null))[_0x3795('0x22')](removeEntity(_0xa551ce,null))['catch'](handleError(_0xa551ce,null));};exports['describe']=function(_0x4b435a,_0x3f3b7c){return db[_0x3795('0x3d')][_0x3795('0x5b')]()[_0x3795('0x22')](respondWithResult(_0x3f3b7c,null))['catch'](handleError(_0x3f3b7c,null));};var interaction_log=require(_0x3795('0x5c'))(_0x3795('0x5d'));exports[_0x3795('0x5e')]=function(_0x583cdc,_0x37ea20,_0x4d7287){var _0x1f7c34={'agent':{},'channel':_0x3795('0x5f')};if(_0x583cdc['body']['id']){delete _0x583cdc[_0x3795('0x5a')]['id'];}_0x583cdc[_0x3795('0x5a')]['read']=!![];_0x583cdc[_0x3795('0x5a')][_0x3795('0x60')]=moment()[_0x3795('0x61')](_0x3795('0x62'));_0x583cdc[_0x3795('0x5a')]['UserId']=_0x583cdc[_0x3795('0x5a')][_0x3795('0x63')]||_0x583cdc['user']['id'];_0x1f7c34[_0x3795('0x64')]['id']=_0x583cdc[_0x3795('0x5a')][_0x3795('0x63')];return db[_0x3795('0x3d')][_0x3795('0x58')]({'where':{'id':_0x583cdc[_0x3795('0x56')]['id'],'UserId':null}})[_0x3795('0x22')](handleEntityNotFound(_0x37ea20,null))['then'](saveUpdates(_0x583cdc['body'],null))[_0x3795('0x22')](function(_0x3eb56e){if(_0x3eb56e){_0x1f7c34['message']=_0x3eb56e[_0x3795('0x65')]({'plain':!![]});return db[_0x3795('0x66')][_0x3795('0x58')]({'where':{'id':_0x3eb56e[_0x3795('0x67')]}});}return null;})[_0x3795('0x22')](handleEntityNotFound(_0x37ea20,null))[_0x3795('0x22')](function(_0x59d9b8){if(_0x59d9b8){return _0x59d9b8[_0x3795('0x37')]({'UserId':_0x583cdc[_0x3795('0x5a')]['UserId'],'read1stAt':_['isNil'](_0x59d9b8[_0x3795('0x68')])?moment()[_0x3795('0x61')](_0x3795('0x62')):undefined});}return null;})[_0x3795('0x22')](function(_0x2ce127){if(_0x2ce127){_0x1f7c34[_0x3795('0x69')]=_0x2ce127['get']({'plain':!![]});interaction_log[_0x3795('0x23')](_0x3795('0x6a'),_0x583cdc['user']['id'],_0x583cdc[_0x3795('0x6b')][_0x3795('0x3a')],_0x583cdc[_0x3795('0x6b')][_0x3795('0x6c')],_0x1f7c34[_0x3795('0x69')]['id'],_0x583cdc['body']?JSON[_0x3795('0x6d')](_0x583cdc[_0x3795('0x5a')]):_0x3795('0x6e'));return respondWithRpcPromise(_0x3795('0x6f'),'acceptMessage',_0x1f7c34);}return null;})[_0x3795('0x22')](function(_0x3268be){var _0x827b13=_0x3795('0x70')+_0x3268be[_0x3795('0x29')][_0x3795('0x71')];return db['sequelize']['query'](_0x827b13,{'type':db[_0x3795('0x72')]['QueryTypes'][_0x3795('0x73')],'raw':!![]})[_0x3795('0x22')](function(_0x3ff835){return _0x3ff835;});})['then'](function(_0x384395){if(_0x384395){_0x1f7c34[_0x3795('0x29')][_0x3795('0x74')]=_0x384395[0x0];if(!_0x583cdc[_0x3795('0x5a')][_0x3795('0x63')])return;return db[_0x3795('0x75')][_0x3795('0x58')]({'where':{'id':_0x583cdc[_0x3795('0x5a')][_0x3795('0x63')],'role':'agent'},'attributes':['id',_0x3795('0x3a'),_0x3795('0x76'),_0x3795('0x77'),'internal'],'raw':!![]});}return null;})[_0x3795('0x22')](function(_0x54c283){if(!_0x54c283)return null;_0x1f7c34[_0x3795('0x29')][_0x3795('0x64')]=_0x54c283;return _0x1f7c34;})[_0x3795('0x22')](function(_0x11c5b4){if(_0x11c5b4){if(_0x583cdc[_0x3795('0x5a')][_0x3795('0x78')]){_0x1f7c34[_0x3795('0x29')][_0x3795('0x79')]=util['format']('SIP/%s',_0x583cdc[_0x3795('0x6b')]['name']);_0x1f7c34['message'][_0x3795('0x7a')]=_0x1f7c34[_0x3795('0x7a')];_0x1f7c34[_0x3795('0x29')]['motionChannel']=_0x1f7c34['channel'];_0x1f7c34[_0x3795('0x29')]['event']=_0x3795('0x5e');return respondWithRpcPromise(_0x3795('0x7b'),_0x3795('0x7b'),{'event':_0x3795('0x7c'),'message':_0x1f7c34[_0x3795('0x29')]},client9002)[_0x3795('0x22')](function(){return _0x1f7c34;});}return _0x1f7c34;}return null;})['then'](respondWithResult(_0x37ea20,null))['catch'](handleError(_0x37ea20,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports[_0x3795('0x36')]=function(_0x26d798,_0x158585,_0x3629e4){var _0x443f10={'agent':{},'channel':_0x3795('0x5f')};if(_0x26d798[_0x3795('0x5a')]['id']){delete _0x26d798[_0x3795('0x5a')]['id'];}_0x26d798['body'][_0x3795('0x63')]=_0x26d798[_0x3795('0x5a')]['UserId']||_0x26d798['user']['id'];_0x443f10[_0x3795('0x64')]['id']=_0x26d798['body'][_0x3795('0x63')];return db[_0x3795('0x3d')][_0x3795('0x58')]({'where':{'id':_0x26d798[_0x3795('0x56')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x158585,null))[_0x3795('0x22')](function(_0x37f392){if(_0x37f392){_0x443f10[_0x3795('0x29')]=_0x37f392[_0x3795('0x65')]({'plain':!![]});return db[_0x3795('0x66')]['find']({'where':{'id':_0x37f392[_0x3795('0x67')]}});}return null;})[_0x3795('0x22')](handleEntityNotFound(_0x158585,null))[_0x3795('0x22')](function(_0x5ae319){if(_0x5ae319){_0x443f10[_0x3795('0x69')]=_0x5ae319[_0x3795('0x65')]({'plain':!![]});interaction_log[_0x3795('0x23')](_0x3795('0x7d'),_0x26d798['user']['id'],_0x26d798[_0x3795('0x6b')]['name'],_0x26d798[_0x3795('0x6b')][_0x3795('0x6c')],_0x443f10[_0x3795('0x69')]['id'],_0x26d798['body']?JSON[_0x3795('0x6d')](_0x26d798[_0x3795('0x5a')]):_0x3795('0x6e'));return respondWithRpcPromise('RejectMessage',_0x3795('0x7e'),_0x443f10);}return null;})[_0x3795('0x22')](function(_0x1fbb45){var _0x1f9ca8=_0x3795('0x70')+_0x1fbb45['message']['ContactId'];return db[_0x3795('0x7f')]['query'](_0x1f9ca8,{'type':db[_0x3795('0x72')][_0x3795('0x80')][_0x3795('0x73')],'raw':!![]})[_0x3795('0x22')](function(_0x2141dc){return _0x2141dc;});})['then'](function(_0x33b0fe){if(_0x33b0fe){_0x443f10['message'][_0x3795('0x74')]=_0x33b0fe[0x0];if(!_0x26d798[_0x3795('0x5a')][_0x3795('0x63')])return;return db[_0x3795('0x75')]['find']({'where':{'id':_0x26d798[_0x3795('0x5a')][_0x3795('0x63')],'role':_0x3795('0x64')},'attributes':['id','name',_0x3795('0x76'),_0x3795('0x77'),_0x3795('0x81')],'raw':!![]});}return null;})[_0x3795('0x22')](function(_0x1af217){if(!_0x1af217)return null;_0x443f10[_0x3795('0x29')][_0x3795('0x64')]=_0x1af217;return _0x443f10;})[_0x3795('0x22')](function(_0x458ac9){if(_0x458ac9){_0x458ac9[_0x3795('0x29')][_0x3795('0x79')]=util[_0x3795('0x61')](_0x3795('0x82'),_0x26d798['user'][_0x3795('0x3a')]);_0x458ac9[_0x3795('0x29')][_0x3795('0x7a')]=_0x443f10['channel'];_0x458ac9[_0x3795('0x29')][_0x3795('0x83')]=_0x443f10[_0x3795('0x7a')];_0x458ac9[_0x3795('0x29')][_0x3795('0x84')]=_0x3795('0x36');respondWithRpcPromise(_0x3795('0x7b'),_0x3795('0x7b'),{'event':_0x3795('0x85'),'message':_0x458ac9[_0x3795('0x29')]},client9002);return _0x443f10;}return null;})[_0x3795('0x22')](respondWithResult(_0x158585,null))[_0x3795('0x2a')](handleError(_0x158585,null));};
\ No newline at end of file
+var _0x199c=['stack','name','send','index','map','OpenchannelMessage','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','type','options','include','findAll','rows','show','params','includeAll','find','create','body','describe','openchannel-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','stringify','AcceptMessage','acceptMessage','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','manual','interface','channel','event','EventManager','acceptmessage','reject','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','SELECT','SIP/%s','motionChannel','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','save','update','destroy','end'];(function(_0x251d9c,_0x580977){var _0x16ae64=function(_0x4d3b53){while(--_0x4d3b53){_0x251d9c['push'](_0x251d9c['shift']());}};_0x16ae64(++_0x580977);}(_0x199c,0x1d8));var _0xc199=function(_0xa5a54e,_0x43ef3e){_0xa5a54e=_0xa5a54e-0x0;var _0x380532=_0x199c[_0xa5a54e];return _0x380532;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc199('0x0'));var jsonpatch=require(_0xc199('0x1'));var rp=require(_0xc199('0x2'));var moment=require(_0xc199('0x3'));var BPromise=require(_0xc199('0x4'));var Mustache=require(_0xc199('0x5'));var util=require(_0xc199('0x6'));var path=require(_0xc199('0x7'));var sox=require('sox');var csv=require(_0xc199('0x8'));var ejs=require(_0xc199('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc199('0xa'));var crypto=require(_0xc199('0xb'));var jsforce=require(_0xc199('0xc'));var deskjs=require(_0xc199('0xd'));var toCsv=require(_0xc199('0x8'));var querystring=require(_0xc199('0xe'));var Papa=require(_0xc199('0xf'));var Redis=require(_0xc199('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xc199('0x11'));var as=require(_0xc199('0x12'));var hardwareService=require(_0xc199('0x13'));var logger=require(_0xc199('0x14'))(_0xc199('0x15'));var utils=require(_0xc199('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xc199('0x17'));var db=require(_0xc199('0x18'))['db'];config[_0xc199('0x19')]=_[_0xc199('0x1a')](config[_0xc199('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xc199('0x1b'))(new Redis(config[_0xc199('0x19')]));require(_0xc199('0x1c'))[_0xc199('0x1d')](socket);var jayson=require(_0xc199('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xc199('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x58d871,_0x3c4736,_0x5a4381,_0x445c65){return new BPromise(function(_0x4f268d,_0x8464ec){var _0xccc7a4=_0x445c65||client;return _0xccc7a4[_0xc199('0x20')](_0x58d871,_0x5a4381)[_0xc199('0x21')](function(_0x34c3cf){logger[_0xc199('0x22')](_0xc199('0x23'),_0x3c4736,_0xc199('0x24'));logger[_0xc199('0x25')](_0xc199('0x26'),_0x3c4736,_0xc199('0x24'),JSON['stringify'](_0x34c3cf));if(_0x34c3cf[_0xc199('0x27')]){if(_0x34c3cf[_0xc199('0x27')][_0xc199('0x28')]===0x1f4){logger[_0xc199('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x3c4736,_0x34c3cf[_0xc199('0x27')][_0xc199('0x29')]);return _0x8464ec(_0x34c3cf[_0xc199('0x27')][_0xc199('0x29')]);}logger[_0xc199('0x27')](_0xc199('0x23'),_0x3c4736,_0x34c3cf['error']['message']);return _0x4f268d(_0x34c3cf[_0xc199('0x27')]['message']);}else{logger[_0xc199('0x22')]('OpenchannelMessage,\x20%s,\x20%s',_0x3c4736,_0xc199('0x24'));_0x4f268d(_0x34c3cf[_0xc199('0x2a')]['message']);}})[_0xc199('0x2b')](function(_0x838760){logger['error'](_0xc199('0x23'),_0x3c4736,_0x838760);_0x8464ec(_0x838760);});});}function respondWithStatusCode(_0x548fca,_0x4ec684){_0x4ec684=_0x4ec684||0xcc;return function(_0x3ec230){if(_0x3ec230){return _0x548fca[_0xc199('0x2c')](_0x4ec684);}return _0x548fca[_0xc199('0x2d')](_0x4ec684)['end']();};}function respondWithResult(_0x2ed565,_0x138443){_0x138443=_0x138443||0xc8;return function(_0x5bd0bc){if(_0x5bd0bc){return _0x2ed565[_0xc199('0x2d')](_0x138443)['json'](_0x5bd0bc);}};}function respondWithFilteredResult(_0x12c6c7,_0x588e05){return function(_0x437e9e){if(_0x437e9e){var _0x13e53e=typeof _0x588e05[_0xc199('0x2e')]===_0xc199('0x2f')&&typeof _0x588e05[_0xc199('0x30')]===_0xc199('0x2f');var _0x35aa04=_0x437e9e[_0xc199('0x31')];var _0x57a3e2=_0x13e53e?0x0:_0x588e05[_0xc199('0x2e')];var _0x8d7945=_0x13e53e?_0x437e9e[_0xc199('0x31')]:_0x588e05['offset']+_0x588e05[_0xc199('0x30')];var _0x50f0d3;if(_0x8d7945>=_0x35aa04){_0x8d7945=_0x35aa04;_0x50f0d3=0xc8;}else{_0x50f0d3=0xce;}_0x12c6c7['status'](_0x50f0d3);return _0x12c6c7[_0xc199('0x32')](_0xc199('0x33'),_0x57a3e2+'-'+_0x8d7945+'/'+_0x35aa04)['json'](_0x437e9e);}return null;};}function patchUpdates(_0x1d98b7){return function(_0x5ae421){try{jsonpatch['apply'](_0x5ae421,_0x1d98b7,!![]);}catch(_0x144b6c){return BPromise['reject'](_0x144b6c);}return _0x5ae421[_0xc199('0x34')]();};}function saveUpdates(_0x3b9220,_0x310fcb){return function(_0x778d57){if(_0x778d57){return _0x778d57[_0xc199('0x35')](_0x3b9220)['then'](function(_0x49a37b){return _0x49a37b;});}return null;};}function removeEntity(_0x4b9ab7,_0x218bb1){return function(_0x490e0e){if(_0x490e0e){return _0x490e0e[_0xc199('0x36')]()[_0xc199('0x21')](function(){_0x4b9ab7[_0xc199('0x2d')](0xcc)[_0xc199('0x37')]();});}};}function handleEntityNotFound(_0x2cfdde,_0x1c5b7e){return function(_0x1c5229){if(!_0x1c5229){_0x2cfdde[_0xc199('0x2c')](0x194);}return _0x1c5229;};}function handleError(_0x30f468,_0x1f04c9){_0x1f04c9=_0x1f04c9||0x1f4;return function(_0x4b90e1){logger['error'](_0x4b90e1[_0xc199('0x38')]);if(_0x4b90e1[_0xc199('0x39')]){delete _0x4b90e1[_0xc199('0x39')];}_0x30f468[_0xc199('0x2d')](_0x1f04c9)[_0xc199('0x3a')](_0x4b90e1);};}exports[_0xc199('0x3b')]=function(_0x3966d0,_0x2d71a3){var _0x539fdc={},_0x552467={},_0x5afc6a={'count':0x0,'rows':[]};var _0x2e50a1=_[_0xc199('0x3c')](db[_0xc199('0x3d')]['rawAttributes'],function(_0x190877){return{'name':_0x190877[_0xc199('0x3e')],'type':_0x190877['type'][_0xc199('0x3f')]};});_0x552467[_0xc199('0x40')]=_[_0xc199('0x3c')](_0x2e50a1,_0xc199('0x39'));_0x552467['query']=_[_0xc199('0x41')](_0x3966d0[_0xc199('0x42')]);_0x552467[_0xc199('0x43')]=_[_0xc199('0x44')](_0x552467[_0xc199('0x40')],_0x552467[_0xc199('0x42')]);_0x539fdc[_0xc199('0x45')]=_['intersection'](_0x552467['model'],qs['fields'](_0x3966d0[_0xc199('0x42')][_0xc199('0x46')]));_0x539fdc[_0xc199('0x45')]=_0x539fdc[_0xc199('0x45')][_0xc199('0x47')]?_0x539fdc['attributes']:_0x552467['model'];if(!_0x3966d0[_0xc199('0x42')][_0xc199('0x48')]('nolimit')){_0x539fdc['limit']=qs[_0xc199('0x30')](_0x3966d0[_0xc199('0x42')]['limit']);_0x539fdc[_0xc199('0x2e')]=qs[_0xc199('0x2e')](_0x3966d0['query'][_0xc199('0x2e')]);}_0x539fdc[_0xc199('0x49')]=qs[_0xc199('0x4a')](_0x3966d0['query'][_0xc199('0x4a')]);_0x539fdc[_0xc199('0x4b')]=qs[_0xc199('0x43')](_['pick'](_0x3966d0[_0xc199('0x42')],_0x552467[_0xc199('0x43')]),_0x2e50a1);if(_0x3966d0[_0xc199('0x42')]['filter']){_0x539fdc[_0xc199('0x4b')]=_[_0xc199('0x4c')](_0x539fdc['where'],{'$or':_[_0xc199('0x3c')](_0x2e50a1,function(_0x450ce5){if(_0x450ce5[_0xc199('0x4d')]!=='VIRTUAL'){var _0x5cf201={};_0x5cf201[_0x450ce5[_0xc199('0x39')]]={'$like':'%'+_0x3966d0[_0xc199('0x42')]['filter']+'%'};return _0x5cf201;}})});}_0x539fdc=_[_0xc199('0x4c')]({},_0x539fdc,_0x3966d0[_0xc199('0x4e')]);var _0x4e987f={'where':_0x539fdc[_0xc199('0x4b')]};return db[_0xc199('0x3d')]['count'](_0x4e987f)[_0xc199('0x21')](function(_0xd845f7){_0x5afc6a[_0xc199('0x31')]=_0xd845f7;if(_0x3966d0[_0xc199('0x42')]['includeAll']){_0x539fdc[_0xc199('0x4f')]=[{'all':!![]}];}return db[_0xc199('0x3d')][_0xc199('0x50')](_0x539fdc);})[_0xc199('0x21')](function(_0x53786b){_0x5afc6a[_0xc199('0x51')]=_0x53786b;return _0x5afc6a;})['then'](respondWithFilteredResult(_0x2d71a3,_0x539fdc))['catch'](handleError(_0x2d71a3,null));};exports[_0xc199('0x52')]=function(_0xdfcf6a,_0x196fda){var _0x221905={'raw':!![],'where':{'id':_0xdfcf6a[_0xc199('0x53')]['id']}},_0x2d0e62={};_0x2d0e62[_0xc199('0x40')]=_[_0xc199('0x41')](db['OpenchannelMessage']['rawAttributes']);_0x2d0e62[_0xc199('0x42')]=_[_0xc199('0x41')](_0xdfcf6a[_0xc199('0x42')]);_0x2d0e62[_0xc199('0x43')]=_[_0xc199('0x44')](_0x2d0e62[_0xc199('0x40')],_0x2d0e62[_0xc199('0x42')]);_0x221905[_0xc199('0x45')]=_[_0xc199('0x44')](_0x2d0e62[_0xc199('0x40')],qs[_0xc199('0x46')](_0xdfcf6a[_0xc199('0x42')][_0xc199('0x46')]));_0x221905[_0xc199('0x45')]=_0x221905[_0xc199('0x45')][_0xc199('0x47')]?_0x221905[_0xc199('0x45')]:_0x2d0e62[_0xc199('0x40')];if(_0xdfcf6a[_0xc199('0x42')][_0xc199('0x54')]){_0x221905['include']=[{'all':!![]}];}_0x221905=_[_0xc199('0x4c')]({},_0x221905,_0xdfcf6a['options']);return db[_0xc199('0x3d')][_0xc199('0x55')](_0x221905)['then'](handleEntityNotFound(_0x196fda,null))[_0xc199('0x21')](respondWithResult(_0x196fda,null))[_0xc199('0x2b')](handleError(_0x196fda,null));};exports['create']=function(_0x22da9c,_0x14a94){return db[_0xc199('0x3d')][_0xc199('0x56')](_0x22da9c['body'],{})[_0xc199('0x21')](respondWithResult(_0x14a94,0xc9))[_0xc199('0x2b')](handleError(_0x14a94,null));};exports[_0xc199('0x35')]=function(_0x4cd202,_0x556549){if(_0x4cd202['body']['id']){delete _0x4cd202['body']['id'];}return db[_0xc199('0x3d')][_0xc199('0x55')]({'where':{'id':_0x4cd202[_0xc199('0x53')]['id']}})[_0xc199('0x21')](handleEntityNotFound(_0x556549,null))['then'](saveUpdates(_0x4cd202[_0xc199('0x57')],null))[_0xc199('0x21')](respondWithResult(_0x556549,null))[_0xc199('0x2b')](handleError(_0x556549,null));};exports[_0xc199('0x36')]=function(_0x5e856e,_0xed11fc){return db[_0xc199('0x3d')][_0xc199('0x55')]({'where':{'id':_0x5e856e[_0xc199('0x53')]['id']}})[_0xc199('0x21')](handleEntityNotFound(_0xed11fc,null))['then'](removeEntity(_0xed11fc,null))['catch'](handleError(_0xed11fc,null));};exports[_0xc199('0x58')]=function(_0x153509,_0x8512f6){return db[_0xc199('0x3d')][_0xc199('0x58')]()[_0xc199('0x21')](respondWithResult(_0x8512f6,null))[_0xc199('0x2b')](handleError(_0x8512f6,null));};var interaction_log=require(_0xc199('0x14'))(_0xc199('0x59'));exports[_0xc199('0x5a')]=function(_0x5c1fd5,_0x56ad5c,_0xcc9488){var _0x5f19b3={'agent':{},'channel':'openchannel'};if(_0x5c1fd5['body']['id']){delete _0x5c1fd5[_0xc199('0x57')]['id'];}_0x5c1fd5[_0xc199('0x57')][_0xc199('0x5b')]=!![];_0x5c1fd5['body'][_0xc199('0x5c')]=moment()[_0xc199('0x5d')](_0xc199('0x5e'));_0x5c1fd5[_0xc199('0x57')][_0xc199('0x5f')]=_0x5c1fd5['body'][_0xc199('0x5f')]||_0x5c1fd5[_0xc199('0x60')]['id'];_0x5f19b3[_0xc199('0x61')]['id']=_0x5c1fd5[_0xc199('0x57')][_0xc199('0x5f')];return db[_0xc199('0x3d')]['find']({'where':{'id':_0x5c1fd5['params']['id'],'UserId':null}})[_0xc199('0x21')](handleEntityNotFound(_0x56ad5c,null))['then'](saveUpdates(_0x5c1fd5[_0xc199('0x57')],null))[_0xc199('0x21')](function(_0x1e1b29){if(_0x1e1b29){_0x5f19b3[_0xc199('0x29')]=_0x1e1b29[_0xc199('0x62')]({'plain':!![]});return db[_0xc199('0x63')][_0xc199('0x55')]({'where':{'id':_0x1e1b29[_0xc199('0x64')]}});}return null;})[_0xc199('0x21')](handleEntityNotFound(_0x56ad5c,null))[_0xc199('0x21')](function(_0x5a9900){if(_0x5a9900){return _0x5a9900[_0xc199('0x35')]({'UserId':_0x5c1fd5['body'][_0xc199('0x5f')],'read1stAt':_[_0xc199('0x65')](_0x5a9900['read1stAt'])?moment()[_0xc199('0x5d')](_0xc199('0x5e')):undefined});}return null;})['then'](function(_0x5c32d5){if(_0x5c32d5){_0x5f19b3['interaction']=_0x5c32d5['get']({'plain':!![]});interaction_log['info'](_0xc199('0x66'),_0x5c1fd5[_0xc199('0x60')]['id'],_0x5c1fd5[_0xc199('0x60')][_0xc199('0x39')],_0x5c1fd5[_0xc199('0x60')][_0xc199('0x67')],_0x5f19b3[_0xc199('0x68')]['id'],_0x5c1fd5['body']?JSON[_0xc199('0x69')](_0x5c1fd5[_0xc199('0x57')]):'null');return respondWithRpcPromise(_0xc199('0x6a'),_0xc199('0x6b'),_0x5f19b3);}return null;})[_0xc199('0x21')](function(_0x1d56ac){var _0x416d51='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1d56ac[_0xc199('0x29')]['ContactId'];return db[_0xc199('0x6c')]['query'](_0x416d51,{'type':db[_0xc199('0x6d')][_0xc199('0x6e')]['SELECT'],'raw':!![]})[_0xc199('0x21')](function(_0x2ce9a4){return _0x2ce9a4;});})['then'](function(_0x23cdb2){if(_0x23cdb2){_0x5f19b3['message'][_0xc199('0x6f')]=_0x23cdb2[0x0];if(!_0x5c1fd5['body'][_0xc199('0x5f')])return;return db[_0xc199('0x70')]['find']({'where':{'id':_0x5c1fd5[_0xc199('0x57')]['UserId'],'role':'agent'},'attributes':['id',_0xc199('0x39'),_0xc199('0x71'),_0xc199('0x72'),_0xc199('0x73')],'raw':!![]});}return null;})[_0xc199('0x21')](function(_0x57ef7e){if(!_0x57ef7e)return null;_0x5f19b3[_0xc199('0x29')][_0xc199('0x61')]=_0x57ef7e;return _0x5f19b3;})[_0xc199('0x21')](function(_0x24930b){if(_0x24930b){if(_0x5c1fd5[_0xc199('0x57')][_0xc199('0x74')]){_0x5f19b3[_0xc199('0x29')][_0xc199('0x75')]=util[_0xc199('0x5d')]('SIP/%s',_0x5c1fd5[_0xc199('0x60')]['name']);_0x5f19b3[_0xc199('0x29')][_0xc199('0x76')]=_0x5f19b3['channel'];_0x5f19b3['message']['motionChannel']=_0x5f19b3[_0xc199('0x76')];_0x5f19b3['message'][_0xc199('0x77')]=_0xc199('0x5a');return respondWithRpcPromise(_0xc199('0x78'),_0xc199('0x78'),{'event':_0xc199('0x79'),'message':_0x5f19b3[_0xc199('0x29')]},client9002)['then'](function(){return _0x5f19b3;});}return _0x5f19b3;}return null;})[_0xc199('0x21')](respondWithResult(_0x56ad5c,null))[_0xc199('0x2b')](handleError(_0x56ad5c,null));};var interaction_log=require(_0xc199('0x14'))(_0xc199('0x59'));exports[_0xc199('0x7a')]=function(_0x2cc9ad,_0x3c3d1c,_0x2a8d2a){var _0x2fda54={'agent':{},'channel':_0xc199('0x7b')};if(_0x2cc9ad['body']['id']){delete _0x2cc9ad[_0xc199('0x57')]['id'];}_0x2cc9ad['body'][_0xc199('0x5f')]=_0x2cc9ad['body']['UserId']||_0x2cc9ad[_0xc199('0x60')]['id'];_0x2fda54['agent']['id']=_0x2cc9ad[_0xc199('0x57')]['UserId'];return db['OpenchannelMessage'][_0xc199('0x55')]({'where':{'id':_0x2cc9ad['params']['id'],'UserId':null}})[_0xc199('0x21')](handleEntityNotFound(_0x3c3d1c,null))['then'](function(_0x1224b8){if(_0x1224b8){_0x2fda54[_0xc199('0x29')]=_0x1224b8[_0xc199('0x62')]({'plain':!![]});return db[_0xc199('0x63')][_0xc199('0x55')]({'where':{'id':_0x1224b8[_0xc199('0x64')]}});}return null;})[_0xc199('0x21')](handleEntityNotFound(_0x3c3d1c,null))[_0xc199('0x21')](function(_0x453799){if(_0x453799){_0x2fda54[_0xc199('0x68')]=_0x453799['get']({'plain':!![]});interaction_log[_0xc199('0x22')](_0xc199('0x7c'),_0x2cc9ad[_0xc199('0x60')]['id'],_0x2cc9ad[_0xc199('0x60')][_0xc199('0x39')],_0x2cc9ad['user'][_0xc199('0x67')],_0x2fda54[_0xc199('0x68')]['id'],_0x2cc9ad[_0xc199('0x57')]?JSON[_0xc199('0x69')](_0x2cc9ad['body']):_0xc199('0x7d'));return respondWithRpcPromise(_0xc199('0x7e'),'rejectMessage',_0x2fda54);}return null;})[_0xc199('0x21')](function(_0x24c877){var _0x1ae95d=_0xc199('0x7f')+_0x24c877[_0xc199('0x29')][_0xc199('0x80')];return db['sequelize'][_0xc199('0x42')](_0x1ae95d,{'type':db[_0xc199('0x6d')]['QueryTypes'][_0xc199('0x81')],'raw':!![]})[_0xc199('0x21')](function(_0x52bfd1){return _0x52bfd1;});})['then'](function(_0x1201e7){if(_0x1201e7){_0x2fda54[_0xc199('0x29')][_0xc199('0x6f')]=_0x1201e7[0x0];if(!_0x2cc9ad[_0xc199('0x57')][_0xc199('0x5f')])return;return db[_0xc199('0x70')][_0xc199('0x55')]({'where':{'id':_0x2cc9ad[_0xc199('0x57')][_0xc199('0x5f')],'role':_0xc199('0x61')},'attributes':['id',_0xc199('0x39'),_0xc199('0x71'),_0xc199('0x72'),_0xc199('0x73')],'raw':!![]});}return null;})[_0xc199('0x21')](function(_0x25bc1e){if(!_0x25bc1e)return null;_0x2fda54[_0xc199('0x29')][_0xc199('0x61')]=_0x25bc1e;return _0x2fda54;})['then'](function(_0x3e4a2a){if(_0x3e4a2a){_0x3e4a2a[_0xc199('0x29')]['interface']=util['format'](_0xc199('0x82'),_0x2cc9ad[_0xc199('0x60')][_0xc199('0x39')]);_0x3e4a2a[_0xc199('0x29')][_0xc199('0x76')]=_0x2fda54[_0xc199('0x76')];_0x3e4a2a['message'][_0xc199('0x83')]=_0x2fda54[_0xc199('0x76')];_0x3e4a2a[_0xc199('0x29')][_0xc199('0x77')]='reject';respondWithRpcPromise(_0xc199('0x78'),_0xc199('0x78'),{'event':'rejectmessage','message':_0x3e4a2a[_0xc199('0x29')]},client9002);return _0x2fda54;}return null;})[_0xc199('0x21')](respondWithResult(_0x3c3d1c,null))[_0xc199('0x2b')](handleError(_0x3c3d1c,null));};
\ No newline at end of file
index 29d0604..e5d4f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa600=['OpenchannelMessage','setMaxListeners','remove','emit','exports','events'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa600,0x1cd));var _0x0a60=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa600[_0x3899d1];return _0xeb4a7d;};'use strict';var EventEmitter=require(_0x0a60('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0x0a60('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x0a60('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x0a60('0x3')};function emitEvent(_0x40a7c9){return function(_0x34df09,_0x18df20,_0x408554){OpenchannelMessageEvents['emit'](_0x40a7c9+':'+_0x34df09['id'],_0x34df09);OpenchannelMessageEvents[_0x0a60('0x4')](_0x40a7c9,_0x34df09);_0x408554(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x0a60('0x5')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xf35f=['emit','hasOwnProperty','hook','exports','OpenchannelMessage','save','remove'];(function(_0xfe9c02,_0xc7eb6b){var _0x36d301=function(_0x84e913){while(--_0x84e913){_0xfe9c02['push'](_0xfe9c02['shift']());}};_0x36d301(++_0xc7eb6b);}(_0xf35f,0xc1));var _0xff35=function(_0x1e7345,_0x18bcce){_0x1e7345=_0x1e7345-0x0;var _0x33017c=_0xf35f[_0x1e7345];return _0x33017c;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require('../../mysqldb')['db'][_0xff35('0x0')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xff35('0x1'),'afterUpdate':'update','afterDestroy':_0xff35('0x2')};function emitEvent(_0x339d43){return function(_0x403fda,_0x4b6b31,_0x17954d){OpenchannelMessageEvents[_0xff35('0x3')](_0x339d43+':'+_0x403fda['id'],_0x403fda);OpenchannelMessageEvents[_0xff35('0x3')](_0x339d43,_0x403fda);_0x17954d(null);};}for(var e in events){if(events[_0xff35('0x4')](e)){var event=events[e];OpenchannelMessage[_0xff35('0x5')](e,emitEvent(event));}}module[_0xff35('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
index 746922a..45fad39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe66e=['catch','error','secret','describe','find','OpenchannelAccountId','OpenchannelInteraction','Contact','keys','then','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','length','Interaction','omit','POST','method','GET','body','format','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./openchannelMessage.attributes','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','FULLTEXT','get','direction','toLowerCase','out','isNil','UserId','findOne','OpenchannelInteractionId','update'];(function(_0x42eb9d,_0xc372c4){var _0x2bbe80=function(_0x54d132){while(--_0x54d132){_0x42eb9d['push'](_0x42eb9d['shift']());}};_0x2bbe80(++_0xc372c4);}(_0xe66e,0x121));var _0xee66=function(_0x33d4a2,_0x2baaf4){_0x33d4a2=_0x33d4a2-0x0;var _0x2c793f=_0xe66e[_0x33d4a2];return _0x2c793f;};'use strict';var _=require(_0xee66('0x0'));var util=require(_0xee66('0x1'));var logger=require(_0xee66('0x2'))(_0xee66('0x3'));var moment=require('moment');var BPromise=require(_0xee66('0x4'));var rp=require(_0xee66('0x5'));var fs=require('fs');var path=require(_0xee66('0x6'));var rimraf=require('rimraf');var config=require(_0xee66('0x7'));var attributes=require(_0xee66('0x8'));module['exports']=function(_0x4a8c11,_0x2c67f6){return _0x4a8c11[_0xee66('0x9')](_0xee66('0xa'),attributes,{'tableName':_0xee66('0xb'),'paranoid':![],'indexes':[{'name':_0xee66('0xc'),'fields':['body'],'type':_0xee66('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x98ad3d,_0x25fedb,_0x379bd8){var _0x59d20e=_0x4a8c11['models'];var _0x53992d=_0x98ad3d[_0xee66('0xe')]({'plain':!![]});if(_0x53992d[_0xee66('0xf')][_0xee66('0x10')]()==='in'||_0x53992d['direction']['toLowerCase']()===_0xee66('0x11')&&!_0x53992d['secret']&&!_[_0xee66('0x12')](_0x53992d[_0xee66('0x13')])){_0x59d20e['OpenchannelInteraction'][_0xee66('0x14')]({'where':{'id':_0x53992d[_0xee66('0x15')]}})['then'](function(_0x410ab2){if(_0x410ab2){_0x410ab2[_0xee66('0x16')]({'lastMsgAt':_0x53992d['createdAt'],'lastMsgDirection':_0x53992d[_0xee66('0xf')][_0xee66('0x10')]()});}})[_0xee66('0x17')](function(_0x4681d7){console[_0xee66('0x18')](_0x4681d7);});}if(_0x53992d['direction']==='out'&&!_0x53992d[_0xee66('0x19')]){var _0x84f56e;_0x59d20e['CmContact'][_0xee66('0x1a')]()['then'](function(_0x5d8af5){return _0x59d20e['OpenchannelAccount'][_0xee66('0x1b')]({'where':{'id':_0x53992d[_0xee66('0x1c')]},'include':[{'model':_0x59d20e[_0xee66('0x1d')],'as':'Interactions','where':{'id':_0x53992d[_0xee66('0x15')]},'limit':0x1,'include':[{'model':_0x59d20e['CmContact'],'as':_0xee66('0x1e'),'attributes':_[_0xee66('0x1f')](_0x5d8af5)}]}]});})[_0xee66('0x20')](function(_0x1cca03){_0x84f56e=_0x1cca03[_0xee66('0xe')]({'plain':!![]});if(_0x84f56e&&_0x84f56e[_0xee66('0x21')]){logger[_0xee66('0x22')](_0xee66('0x23'),_0xee66('0x24'),util['format'](_0xee66('0x25'),_0x53992d['id'],_0x84f56e['replyUri']));if(_0x84f56e['Interactions']&&_0x84f56e[_0xee66('0x26')][_0xee66('0x27')]){_0x53992d[_0xee66('0x28')]=_[_0xee66('0x29')](_0x84f56e[_0xee66('0x26')][0x0],_0xee66('0x1e'));_0x53992d[_0xee66('0x1e')]=_0x84f56e['Interactions'][0x0]['Contact'];}var _0x25fedb={'method':_0xee66('0x2a'),'uri':encodeURI(_0x84f56e[_0xee66('0x21')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x25fedb[_0xee66('0x2b')]){case _0xee66('0x2c'):_0x25fedb['qs']=_0x53992d;break;case'POST':_0x25fedb[_0xee66('0x2d')]=_0x53992d;break;}return rp(_0x25fedb)[_0xee66('0x20')](function(_0x54ae02){logger['info'](_0xee66('0x23'),_0xee66('0x24'),util[_0xee66('0x2e')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x53992d['id'],_0x84f56e[_0xee66('0x21')]));if(_0x54ae02['body']['threadId']&&_0x54ae02[_0xee66('0x2d')][_0xee66('0x2f')]!=_0x53992d[_0xee66('0x28')]['threadId']){return _0x59d20e[_0xee66('0x1d')]['update']({'threadId':_0x54ae02[_0xee66('0x2d')]['threadId']},{'where':{'id':_0x53992d[_0xee66('0x28')]['id']}});}else{return;}})['then'](function(){return _0x98ad3d[_0xee66('0x16')]({'read':!![]});})[_0xee66('0x17')](function(_0x6caf9a){logger[_0xee66('0x18')](_0xee66('0x23'),_0xee66('0x24'),util[_0xee66('0x30')](_0x6caf9a,{'showHidden':![],'depth':null}));_0x379bd8();});}else{_0x379bd8();}})[_0xee66('0x31')](function(){_0x379bd8();});}else{_0x379bd8();}}},'charset':_0xee66('0x32'),'collate':_0xee66('0x33')});};
\ No newline at end of file
+var _0x92b3=['GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','update','inspect','finally','utf8mb4','utf8mb4_unicode_ci','util','moment','bluebird','request-promise','path','rimraf','exports','define','openchannel_messages','fti_openchannel_messages','body','models','get','toLowerCase','direction','out','isNil','UserId','OpenchannelInteraction','OpenchannelInteractionId','then','createdAt','catch','error','describe','find','OpenchannelAccountId','Interactions','CmContact','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','POST'];(function(_0x174e47,_0x4a41dd){var _0x46ebe0=function(_0x1ca7a3){while(--_0x1ca7a3){_0x174e47['push'](_0x174e47['shift']());}};_0x46ebe0(++_0x4a41dd);}(_0x92b3,0x9b));var _0x392b=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x92b3[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require('lodash');var util=require(_0x392b('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x392b('0x1'));var BPromise=require(_0x392b('0x2'));var rp=require(_0x392b('0x3'));var fs=require('fs');var path=require(_0x392b('0x4'));var rimraf=require(_0x392b('0x5'));var config=require('../../config/environment');var attributes=require('./openchannelMessage.attributes');module[_0x392b('0x6')]=function(_0x355be6,_0x5337fd){return _0x355be6[_0x392b('0x7')]('OpenchannelMessage',attributes,{'tableName':_0x392b('0x8'),'paranoid':![],'indexes':[{'name':_0x392b('0x9'),'fields':[_0x392b('0xa')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x549080,_0x2e59d7,_0x56e9f2){var _0x4e9dcd=_0x355be6[_0x392b('0xb')];var _0x30b4a9=_0x549080[_0x392b('0xc')]({'plain':!![]});if(_0x30b4a9['direction'][_0x392b('0xd')]()==='in'||_0x30b4a9[_0x392b('0xe')][_0x392b('0xd')]()===_0x392b('0xf')&&!_0x30b4a9['secret']&&!_[_0x392b('0x10')](_0x30b4a9[_0x392b('0x11')])){_0x4e9dcd[_0x392b('0x12')]['findOne']({'where':{'id':_0x30b4a9[_0x392b('0x13')]}})[_0x392b('0x14')](function(_0x50f3fb){if(_0x50f3fb){_0x50f3fb['update']({'lastMsgAt':_0x30b4a9[_0x392b('0x15')],'lastMsgDirection':_0x30b4a9[_0x392b('0xe')][_0x392b('0xd')]()});}})[_0x392b('0x16')](function(_0x21696b){console[_0x392b('0x17')](_0x21696b);});}if(_0x30b4a9[_0x392b('0xe')]===_0x392b('0xf')&&!_0x30b4a9['secret']){var _0x13209e;_0x4e9dcd['CmContact'][_0x392b('0x18')]()[_0x392b('0x14')](function(_0x4a853c){return _0x4e9dcd['OpenchannelAccount'][_0x392b('0x19')]({'where':{'id':_0x30b4a9[_0x392b('0x1a')]},'include':[{'model':_0x4e9dcd[_0x392b('0x12')],'as':_0x392b('0x1b'),'where':{'id':_0x30b4a9[_0x392b('0x13')]},'limit':0x1,'include':[{'model':_0x4e9dcd[_0x392b('0x1c')],'as':_0x392b('0x1d'),'attributes':_[_0x392b('0x1e')](_0x4a853c)}]}]});})[_0x392b('0x14')](function(_0x3add12){_0x13209e=_0x3add12[_0x392b('0xc')]({'plain':!![]});if(_0x13209e&&_0x13209e[_0x392b('0x1f')]){logger[_0x392b('0x20')](_0x392b('0x21'),_0x392b('0x22'),util[_0x392b('0x23')](_0x392b('0x24'),_0x30b4a9['id'],_0x13209e[_0x392b('0x1f')]));if(_0x13209e[_0x392b('0x1b')]&&_0x13209e[_0x392b('0x1b')][_0x392b('0x25')]){_0x30b4a9[_0x392b('0x26')]=_[_0x392b('0x27')](_0x13209e[_0x392b('0x1b')][0x0],_0x392b('0x1d'));_0x30b4a9['Contact']=_0x13209e[_0x392b('0x1b')][0x0][_0x392b('0x1d')];}var _0x2e59d7={'method':_0x392b('0x28'),'uri':encodeURI(_0x13209e[_0x392b('0x1f')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x2e59d7['method']){case _0x392b('0x29'):_0x2e59d7['qs']=_0x30b4a9;break;case _0x392b('0x28'):_0x2e59d7[_0x392b('0xa')]=_0x30b4a9;break;}return rp(_0x2e59d7)[_0x392b('0x14')](function(_0x461bfc){logger[_0x392b('0x20')]('OpenchannelMessage,\x20%s,\x20%s',_0x392b('0x22'),util[_0x392b('0x23')](_0x392b('0x2a'),_0x30b4a9['id'],_0x13209e['replyUri']));if(_0x461bfc[_0x392b('0xa')]['threadId']&&_0x461bfc['body']['threadId']!=_0x30b4a9[_0x392b('0x26')]['threadId']){return _0x4e9dcd[_0x392b('0x12')]['update']({'threadId':_0x461bfc[_0x392b('0xa')][_0x392b('0x2b')]},{'where':{'id':_0x30b4a9[_0x392b('0x26')]['id']}});}else{return;}})[_0x392b('0x14')](function(){return _0x549080[_0x392b('0x2c')]({'read':!![]});})[_0x392b('0x16')](function(_0x4e2c01){logger['error'](_0x392b('0x21'),_0x392b('0x22'),util[_0x392b('0x2d')](_0x4e2c01,{'showHidden':![],'depth':null}));_0x56e9f2();});}else{_0x56e9f2();}})[_0x392b('0x2e')](function(){_0x56e9f2();});}else{_0x56e9f2();}}},'charset':_0x392b('0x2f'),'collate':_0x392b('0x30')});};
\ No newline at end of file
index a19bede..f67afc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateOpenchannelMessage','OpenchannelMessage','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','request'];(function(_0x4ca6ab,_0x29bc6c){var _0x516678=function(_0x108d0e){while(--_0x108d0e){_0x4ca6ab['push'](_0x4ca6ab['shift']());}};_0x516678(++_0x29bc6c);}(_0xdb28,0x106));var _0x8db2=function(_0x8aae1e,_0x55ecd8){_0x8aae1e=_0x8aae1e-0x0;var _0x2dc41c=_0xdb28[_0x8aae1e];return _0x2dc41c;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});config['redis']=_[_0x8db2('0xb')](config[_0x8db2('0xc')],{'host':_0x8db2('0xd'),'port':0x18eb});var socket=require(_0x8db2('0xe'))(new Redis(config[_0x8db2('0xc')]));require(_0x8db2('0xf'))[_0x8db2('0x10')](socket);function respondWithRpcPromise(_0x4ba340,_0x30dc90,_0x476216){return new BPromise(function(_0x1f62af,_0x57015f){return client[_0x8db2('0x11')](_0x4ba340,_0x476216)[_0x8db2('0x12')](function(_0x576475){logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));logger[_0x8db2('0x16')](_0x8db2('0x17'),_0x30dc90,'request\x20sent',JSON['stringify'](_0x576475));if(_0x576475[_0x8db2('0x18')]){if(_0x576475[_0x8db2('0x18')][_0x8db2('0x19')]===0x1f4){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x57015f(_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);}logger[_0x8db2('0x18')]('OpenchannelMessage,\x20%s,\x20%s',_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x1f62af(_0x576475['error'][_0x8db2('0x1a')]);}else{logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));_0x1f62af(_0x576475[_0x8db2('0x1b')][_0x8db2('0x1a')]);}})['catch'](function(_0x5df464){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x5df464);_0x57015f(_0x5df464);});});}exports[_0x8db2('0x1c')]=function(_0x1b64e4){var _0x58562e=this;return new Promise(function(_0x431d60,_0x36a9ff){return db[_0x8db2('0x1d')][_0x8db2('0x1e')](_0x1b64e4[_0x8db2('0x1f')],{'raw':_0x1b64e4['options']?_0x1b64e4[_0x8db2('0x20')][_0x8db2('0x21')]===undefined?!![]:![]:!![]})[_0x8db2('0x12')](function(_0x125be2){logger[_0x8db2('0x13')](_0x8db2('0x1c'),_0x1b64e4);logger[_0x8db2('0x16')]('CreateOpenchannelMessage',_0x1b64e4,JSON[_0x8db2('0x22')](_0x125be2));_0x431d60(_0x125be2);})['catch'](function(_0x5725f0){logger['error']('CreateOpenchannelMessage',_0x5725f0[_0x8db2('0x1a')],_0x1b64e4);_0x36a9ff(_0x58562e[_0x8db2('0x18')](0x1f4,_0x5725f0[_0x8db2('0x1a')]));});});};
\ No newline at end of file
+var _0x2ef3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','CreateOpenchannelMessage','create','options','info'];(function(_0x3081d0,_0x39f1c1){var _0x12b5c1=function(_0x178a2a){while(--_0x178a2a){_0x3081d0['push'](_0x3081d0['shift']());}};_0x12b5c1(++_0x39f1c1);}(_0x2ef3,0xba));var _0x32ef=function(_0x1f79ea,_0x4c7e58){_0x1f79ea=_0x1f79ea-0x0;var _0x1a327a=_0x2ef3[_0x1f79ea];return _0x1a327a;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x32ef('0xa')]=_[_0x32ef('0xb')](config[_0x32ef('0xa')],{'host':_0x32ef('0xc'),'port':0x18eb});var socket=require(_0x32ef('0xd'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);function respondWithRpcPromise(_0x28275c,_0x77df79,_0x56eb42){return new BPromise(function(_0x5780e9,_0x401d0b){return client[_0x32ef('0x10')](_0x28275c,_0x56eb42)[_0x32ef('0x11')](function(_0x1499c2){logger['info'](_0x32ef('0x12'),_0x77df79,'request\x20sent');logger[_0x32ef('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x77df79,_0x32ef('0x14'),JSON[_0x32ef('0x15')](_0x1499c2));if(_0x1499c2['error']){if(_0x1499c2['error'][_0x32ef('0x16')]===0x1f4){logger['error'](_0x32ef('0x12'),_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x401d0b(_0x1499c2[_0x32ef('0x17')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5780e9(_0x1499c2[_0x32ef('0x17')]['message']);}else{logger['info'](_0x32ef('0x12'),_0x77df79,_0x32ef('0x14'));_0x5780e9(_0x1499c2[_0x32ef('0x19')]['message']);}})[_0x32ef('0x1a')](function(_0x33e230){logger['error'](_0x32ef('0x12'),_0x77df79,_0x33e230);_0x401d0b(_0x33e230);});});}exports[_0x32ef('0x1b')]=function(_0x26aff3){var _0x251084=this;return new Promise(function(_0x445cda,_0x3aec05){return db['OpenchannelMessage'][_0x32ef('0x1c')](_0x26aff3['body'],{'raw':_0x26aff3[_0x32ef('0x1d')]?_0x26aff3[_0x32ef('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x32ef('0x11')](function(_0x97780){logger[_0x32ef('0x1e')]('CreateOpenchannelMessage',_0x26aff3);logger['debug'](_0x32ef('0x1b'),_0x26aff3,JSON[_0x32ef('0x15')](_0x97780));_0x445cda(_0x97780);})[_0x32ef('0x1a')](function(_0x478bef){logger['error'](_0x32ef('0x1b'),_0x478bef['message'],_0x26aff3);_0x3aec05(_0x251084['error'](0x1f4,_0x478bef[_0x32ef('0x18')]));});});};
\ No newline at end of file
index b222e03..d15009b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f03=['./openchannelMessage.events','save','remove','emit','removeListener','register','openchannelMessage:'];(function(_0x2683a4,_0x48e780){var _0x284a0c=function(_0x48362a){while(--_0x48362a){_0x2683a4['push'](_0x2683a4['shift']());}};_0x284a0c(++_0x48e780);}(_0x4f03,0xfc));var _0x34f0=function(_0x42f247,_0x5bbeca){_0x42f247=_0x42f247-0x0;var _0x411317=_0x4f03[_0x42f247];return _0x411317;};'use strict';var OpenchannelMessageEvents=require(_0x34f0('0x0'));var events=[_0x34f0('0x1'),_0x34f0('0x2'),'update'];function createListener(_0x348701,_0x562977){return function(_0x93d5e4){_0x562977[_0x34f0('0x3')](_0x348701,_0x93d5e4);};}function removeListener(_0x1b582a,_0x205cce){return function(){OpenchannelMessageEvents[_0x34f0('0x4')](_0x1b582a,_0x205cce);};}exports[_0x34f0('0x5')]=function(_0x29ac6f){for(var _0x2bd273=0x0,_0x78caec=events['length'];_0x2bd273<_0x78caec;_0x2bd273++){var _0x4ebda4=events[_0x2bd273];var _0x235784=createListener(_0x34f0('0x6')+_0x4ebda4,_0x29ac6f);OpenchannelMessageEvents['on'](_0x4ebda4,_0x235784);}};
\ No newline at end of file
+var _0x8e09=['update','emit','removeListener','register','length','openchannelMessage:','./openchannelMessage.events','save'];(function(_0x10c9b9,_0x4f6b5f){var _0x12dfc1=function(_0x2cae85){while(--_0x2cae85){_0x10c9b9['push'](_0x10c9b9['shift']());}};_0x12dfc1(++_0x4f6b5f);}(_0x8e09,0x1e6));var _0x98e0=function(_0xb99421,_0xaab133){_0xb99421=_0xb99421-0x0;var _0x4b3ec7=_0x8e09[_0xb99421];return _0x4b3ec7;};'use strict';var OpenchannelMessageEvents=require(_0x98e0('0x0'));var events=[_0x98e0('0x1'),'remove',_0x98e0('0x2')];function createListener(_0x1c124c,_0x4a2e6d){return function(_0x59c91a){_0x4a2e6d[_0x98e0('0x3')](_0x1c124c,_0x59c91a);};}function removeListener(_0x373da8,_0x463ec2){return function(){OpenchannelMessageEvents[_0x98e0('0x4')](_0x373da8,_0x463ec2);};}exports[_0x98e0('0x5')]=function(_0xba9318){for(var _0x46e281=0x0,_0x2f6ae4=events[_0x98e0('0x6')];_0x46e281<_0x2f6ae4;_0x46e281++){var _0x12672a=events[_0x46e281];var _0x1d7457=createListener(_0x98e0('0x7')+_0x12672a,_0xba9318);OpenchannelMessageEvents['on'](_0x12672a,_0x1d7457);}};
\ No newline at end of file
index cd54fb9..200bb73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5efa=['show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','describe','/:id'];(function(_0x1a93bb,_0x1be2c4){var _0x5c591b=function(_0xf138dc){while(--_0xf138dc){_0x1a93bb['push'](_0x1a93bb['shift']());}};_0x5c591b(++_0x1be2c4);}(_0x5efa,0x196));var _0xa5ef=function(_0x4ce712,_0x1d325d){_0x4ce712=_0x4ce712-0x0;var _0x4e8220=_0x5efa[_0x4ce712];return _0x4e8220;};'use strict';var multer=require(_0xa5ef('0x0'));var util=require(_0xa5ef('0x1'));var path=require(_0xa5ef('0x2'));var timeout=require(_0xa5ef('0x3'));var express=require('express');var router=express[_0xa5ef('0x4')]();var fs_extra=require(_0xa5ef('0x5'));var auth=require(_0xa5ef('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa5ef('0x7'));var controller=require(_0xa5ef('0x8'));router[_0xa5ef('0x9')]('/',auth[_0xa5ef('0xa')](),controller[_0xa5ef('0xb')]);router[_0xa5ef('0x9')]('/describe',auth[_0xa5ef('0xa')](),controller[_0xa5ef('0xc')]);router[_0xa5ef('0x9')](_0xa5ef('0xd'),auth[_0xa5ef('0xa')](),controller[_0xa5ef('0xe')]);router[_0xa5ef('0x9')]('/:id/members',auth[_0xa5ef('0xa')](),controller[_0xa5ef('0xf')]);router[_0xa5ef('0x9')](_0xa5ef('0x10'),auth[_0xa5ef('0xa')](),controller[_0xa5ef('0x11')]);router[_0xa5ef('0x9')](_0xa5ef('0x12'),auth['isAuthenticated'](),controller[_0xa5ef('0x13')]);router[_0xa5ef('0x14')]('/',auth[_0xa5ef('0xa')](),controller['create']);router[_0xa5ef('0x14')](_0xa5ef('0x10'),auth[_0xa5ef('0xa')](),controller[_0xa5ef('0x15')]);router[_0xa5ef('0x14')](_0xa5ef('0x12'),auth['isAuthenticated'](),controller[_0xa5ef('0x16')]);router[_0xa5ef('0x17')](_0xa5ef('0xd'),auth[_0xa5ef('0xa')](),controller[_0xa5ef('0x18')]);router[_0xa5ef('0x19')](_0xa5ef('0xd'),auth[_0xa5ef('0xa')](),controller[_0xa5ef('0x1a')]);router[_0xa5ef('0x19')]('/:id/teams',auth[_0xa5ef('0xa')](),controller[_0xa5ef('0x1b')]);router['delete'](_0xa5ef('0x12'),auth[_0xa5ef('0xa')](),controller[_0xa5ef('0x1c')]);module[_0xa5ef('0x1d')]=router;
\ No newline at end of file
+var _0x3c17=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/members','getAgents','post','/:id/teams','addTeams','/:id/users','put','/:id','update','destroy','delete','exports','multer','util','connect-timeout'];(function(_0x4fdc01,_0x4101ea){var _0x5bb876=function(_0x134c23){while(--_0x134c23){_0x4fdc01['push'](_0x4fdc01['shift']());}};_0x5bb876(++_0x4101ea);}(_0x3c17,0xf0));var _0x73c1=function(_0x3de8a4,_0x289a5c){_0x3de8a4=_0x3de8a4-0x0;var _0x4635cf=_0x3c17[_0x3de8a4];return _0x4635cf;};'use strict';var multer=require(_0x73c1('0x0'));var util=require(_0x73c1('0x1'));var path=require('path');var timeout=require(_0x73c1('0x2'));var express=require(_0x73c1('0x3'));var router=express[_0x73c1('0x4')]();var fs_extra=require(_0x73c1('0x5'));var auth=require(_0x73c1('0x6'));var interaction=require(_0x73c1('0x7'));var config=require(_0x73c1('0x8'));var controller=require('./openchannelQueue.controller');router[_0x73c1('0x9')]('/',auth[_0x73c1('0xa')](),controller[_0x73c1('0xb')]);router[_0x73c1('0x9')](_0x73c1('0xc'),auth[_0x73c1('0xa')](),controller[_0x73c1('0xd')]);router[_0x73c1('0x9')]('/:id',auth[_0x73c1('0xa')](),controller[_0x73c1('0xe')]);router[_0x73c1('0x9')](_0x73c1('0xf'),auth[_0x73c1('0xa')](),controller['getMembers']);router['get']('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router['get']('/:id/users',auth[_0x73c1('0xa')](),controller[_0x73c1('0x10')]);router[_0x73c1('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x73c1('0x11')](_0x73c1('0x12'),auth[_0x73c1('0xa')](),controller[_0x73c1('0x13')]);router['post'](_0x73c1('0x14'),auth[_0x73c1('0xa')](),controller['addAgents']);router[_0x73c1('0x15')](_0x73c1('0x16'),auth[_0x73c1('0xa')](),controller[_0x73c1('0x17')]);router['delete'](_0x73c1('0x16'),auth[_0x73c1('0xa')](),controller[_0x73c1('0x18')]);router[_0x73c1('0x19')](_0x73c1('0x12'),auth['isAuthenticated'](),controller['removeTeams']);router[_0x73c1('0x19')](_0x73c1('0x14'),auth[_0x73c1('0xa')](),controller['removeAgents']);module[_0x73c1('0x1a')]=router;
\ No newline at end of file
index 79c1b0b..fb3e7fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16d4=['exports','name','INTEGER','ENUM','beepall','sequelize'];(function(_0x52405b,_0x2d1f1a){var _0xadf5be=function(_0x2dae9f){while(--_0x2dae9f){_0x52405b['push'](_0x52405b['shift']());}};_0xadf5be(++_0x2d1f1a);}(_0x16d4,0x1c7));var _0x416d=function(_0x50cd0a,_0x4d1b81){_0x50cd0a=_0x50cd0a-0x0;var _0x1bd6ba=_0x16d4[_0x50cd0a];return _0x1bd6ba;};'use strict';var Sequelize=require(_0x416d('0x0'));module[_0x416d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x416d('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x416d('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x416d('0x4')]('rrmemory',_0x416d('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0xc635=['beepall','sequelize','STRING','name','INTEGER','ENUM'];(function(_0xb67a18,_0xf8149){var _0x79b2df=function(_0x321859){while(--_0x321859){_0xb67a18['push'](_0xb67a18['shift']());}};_0x79b2df(++_0xf8149);}(_0xc635,0xbb));var _0x5c63=function(_0x1de914,_0x2434f1){_0x1de914=_0x1de914-0x0;var _0x303ccd=_0xc635[_0x1de914];return _0x303ccd;};'use strict';var Sequelize=require(_0x5c63('0x0'));module['exports']={'name':{'type':Sequelize[_0x5c63('0x1')],'unique':_0x5c63('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x5c63('0x1')]},'timeout':{'type':Sequelize[_0x5c63('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5c63('0x4')]('rrmemory',_0x5c63('0x5'),'roundrobin')}};
\ No newline at end of file
index 968f71f..4b4d605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc084=['team_has_openchannel_queues','join','user_has_teams','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','includes','all','union','compact','value','isEmpty','userOpenchannelQueue:remove','omit','removeAgents','isArray','getAgents','hasOwnProperty','bluebird','squel','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','update','destroy','then','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','key','getOptions','OpenchannelQueue','include','findAll','rows','catch','show','params','model','keys','query','filters','intersection','fields','attributes','merge','options','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','OpenchannelQueues','UserProfileSection','find','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','limit','order','sort','where','pick','OpenchannelQueueId','filter','UserOpenchannelQueue','User','UserId','agent','openchannelPause','createdAt','%s/%s','SIP','updatedAt','getTeams','Team','length','nolimit','addTeams','ids','Agents','online','flatMap','sequelize','transaction','findOrCreate','forEach','emit','userOpenchannelQueue:save','removeTeams','select','tq.TeamId','from'];(function(_0x2170b1,_0x5c99e9){var _0x4be2c3=function(_0x790566){while(--_0x790566){_0x2170b1['push'](_0x2170b1['shift']());}};_0x4be2c3(++_0x5c99e9);}(_0xc084,0x181));var _0x4c08=function(_0x2e16b1,_0x4d60fe){_0x2e16b1=_0x2e16b1-0x0;var _0x419aca=_0xc084[_0x2e16b1];return _0x419aca;};'use strict';var BPromise=require(_0x4c08('0x0'));var util=require('util');var _=require('lodash');var squel=require(_0x4c08('0x1'));var Redis=require(_0x4c08('0x2'));var qs=require(_0x4c08('0x3'));var logger=require('../../config/logger')(_0x4c08('0x4'));var config=require(_0x4c08('0x5'));var db=require(_0x4c08('0x6'))['db'];config['redis']=_['defaults'](config[_0x4c08('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x4c08('0x8'))(new Redis(config[_0x4c08('0x7')]));require(_0x4c08('0x9'))[_0x4c08('0xa')](socket);function respondWithStatusCode(_0x49b9ad,_0x46a227){_0x46a227=_0x46a227||0xcc;return function(_0x3c20ff){if(_0x3c20ff){return _0x49b9ad[_0x4c08('0xb')](_0x46a227);}return _0x49b9ad[_0x4c08('0xc')](_0x46a227)[_0x4c08('0xd')]();};}function respondWithResult(_0x40330d,_0x1fe634){_0x1fe634=_0x1fe634||0xc8;return function(_0x4ab1cc){if(_0x4ab1cc){return _0x40330d[_0x4c08('0xc')](_0x1fe634)[_0x4c08('0xe')](_0x4ab1cc);}};}function respondWithFilteredResult(_0x57f6fc,_0xf87613){return function(_0x50ae3b){if(_0x50ae3b){var _0x5f0a41=typeof _0xf87613[_0x4c08('0xf')]===_0x4c08('0x10')&&typeof _0xf87613['limit']===_0x4c08('0x10');var _0x538040=_0x50ae3b['count'];var _0x1eb7f0=_0x5f0a41?0x0:_0xf87613[_0x4c08('0xf')];var _0x51fa90=_0x5f0a41?_0x50ae3b[_0x4c08('0x11')]:_0xf87613[_0x4c08('0xf')]+_0xf87613['limit'];var _0x20ff6a;if(_0x51fa90>=_0x538040){_0x51fa90=_0x538040;_0x20ff6a=0xc8;}else{_0x20ff6a=0xce;}_0x57f6fc[_0x4c08('0xc')](_0x20ff6a);return _0x57f6fc[_0x4c08('0x12')](_0x4c08('0x13'),_0x1eb7f0+'-'+_0x51fa90+'/'+_0x538040)[_0x4c08('0xe')](_0x50ae3b);}return null;};}function saveUpdates(_0x1118b1){return function(_0x6a7c84){if(_0x6a7c84){return _0x6a7c84[_0x4c08('0x14')](_0x1118b1)['then'](function(_0x4cd850){return _0x4cd850;});}return null;};}function removeEntity(_0xbeff8e){return function(_0x5f25cc){if(_0x5f25cc){return _0x5f25cc[_0x4c08('0x15')]()[_0x4c08('0x16')](function(){var _0xcf654a=_0x5f25cc['get']({'plain':!![]});var _0x432e24='OpenchannelQueues';return db[_0x4c08('0x17')][_0x4c08('0x15')]({'where':{'type':_0x432e24,'resourceId':_0xcf654a['id']}})[_0x4c08('0x16')](function(){return _0x5f25cc;});})[_0x4c08('0x16')](function(){_0xbeff8e[_0x4c08('0xc')](0xcc)[_0x4c08('0xd')]();});}};}function handleEntityNotFound(_0x9d2d91){return function(_0x543f44){if(!_0x543f44){_0x9d2d91[_0x4c08('0xb')](0x194);}return _0x543f44;};}function handleError(_0xa16582,_0xde6c43){_0xde6c43=_0xde6c43||0x1f4;return function(_0x756e67){logger['error'](_0x756e67[_0x4c08('0x18')]);if(_0x756e67[_0x4c08('0x19')]){delete _0x756e67['name'];}_0xa16582[_0x4c08('0xc')](_0xde6c43)[_0x4c08('0x1a')](_0x756e67);};}exports[_0x4c08('0x1b')]=function(_0x273228,_0x12af18){var _0x12b5ae={};var _0x4e5f3c={'count':0x0,'rows':[]};var _0x321e25=_[_0x4c08('0x1c')](db['OpenchannelQueue'][_0x4c08('0x1d')],function(_0x1ceaf2){return{'name':_0x1ceaf2[_0x4c08('0x1e')],'type':_0x1ceaf2['type'][_0x4c08('0x1f')]};});_0x12b5ae=qs[_0x4c08('0x20')](_0x321e25,_0x273228);var _0x38d938={'where':_0x12b5ae['where']};return db[_0x4c08('0x21')]['count'](_0x38d938)['then'](function(_0x4007d7){_0x4e5f3c[_0x4c08('0x11')]=_0x4007d7;_0x12b5ae[_0x4c08('0x22')]=qs[_0x4c08('0x22')](_0x273228['query']);return db[_0x4c08('0x21')][_0x4c08('0x23')](_0x12b5ae);})['then'](function(_0x1d2039){_0x4e5f3c[_0x4c08('0x24')]=_0x1d2039;return _0x4e5f3c;})['then'](respondWithFilteredResult(_0x12af18,_0x12b5ae))[_0x4c08('0x25')](handleError(_0x12af18,null));};exports[_0x4c08('0x26')]=function(_0x3a996f,_0x5532f6){var _0x2805e4={'raw':!![],'where':{'id':_0x3a996f[_0x4c08('0x27')]['id']}},_0x1de653={};_0x1de653[_0x4c08('0x28')]=_[_0x4c08('0x29')](db[_0x4c08('0x21')]['rawAttributes']);_0x1de653['query']=_[_0x4c08('0x29')](_0x3a996f[_0x4c08('0x2a')]);_0x1de653[_0x4c08('0x2b')]=_[_0x4c08('0x2c')](_0x1de653[_0x4c08('0x28')],_0x1de653[_0x4c08('0x2a')]);_0x2805e4['attributes']=_[_0x4c08('0x2c')](_0x1de653[_0x4c08('0x28')],qs['fields'](_0x3a996f['query'][_0x4c08('0x2d')]));_0x2805e4[_0x4c08('0x2e')]=_0x2805e4['attributes']['length']?_0x2805e4[_0x4c08('0x2e')]:_0x1de653[_0x4c08('0x28')];if(_0x3a996f[_0x4c08('0x2a')]['includeAll']){_0x2805e4[_0x4c08('0x22')]=[{'all':!![]}];}_0x2805e4=_[_0x4c08('0x2f')]({},_0x2805e4,_0x3a996f[_0x4c08('0x30')]);return db[_0x4c08('0x21')]['find'](_0x2805e4)[_0x4c08('0x16')](handleEntityNotFound(_0x5532f6,null))['then'](respondWithResult(_0x5532f6,null))[_0x4c08('0x25')](handleError(_0x5532f6,null));};exports[_0x4c08('0x31')]=function(_0x503183,_0x12e06b){return db['OpenchannelQueue'][_0x4c08('0x31')](_0x503183['body'],{})['then'](function(_0x233fe2){var _0x2458bb=_0x503183['user'][_0x4c08('0x32')]({'plain':!![]});if(!_0x2458bb)throw new Error(_0x4c08('0x33'));if(_0x2458bb[_0x4c08('0x34')]===_0x4c08('0x35')){var _0x4b6cff=_0x233fe2[_0x4c08('0x32')]({'plain':!![]});var _0x1e1a33=_0x4c08('0x36');return db[_0x4c08('0x37')][_0x4c08('0x38')]({'where':{'name':_0x1e1a33,'userProfileId':_0x2458bb['userProfileId']},'raw':!![]})['then'](function(_0x222069){if(_0x222069&&_0x222069[_0x4c08('0x39')]===0x0){return db['UserProfileResource'][_0x4c08('0x31')]({'name':_0x4b6cff[_0x4c08('0x19')],'resourceId':_0x4b6cff['id'],'type':_0x222069[_0x4c08('0x19')],'sectionId':_0x222069['id']},{})['then'](function(){return _0x233fe2;});}else{return _0x233fe2;}})[_0x4c08('0x25')](function(_0x1eacf3){logger[_0x4c08('0x3a')](_0x4c08('0x3b'),_0x1eacf3);throw _0x1eacf3;});}return _0x233fe2;})['then'](respondWithResult(_0x12e06b,0xc9))[_0x4c08('0x25')](handleError(_0x12e06b,null));};exports[_0x4c08('0x14')]=function(_0x22d3ba,_0x2eb142){if(_0x22d3ba[_0x4c08('0x3c')]['id']){delete _0x22d3ba[_0x4c08('0x3c')]['id'];}return db[_0x4c08('0x21')][_0x4c08('0x38')]({'where':{'id':_0x22d3ba[_0x4c08('0x27')]['id']}})[_0x4c08('0x16')](handleEntityNotFound(_0x2eb142,null))[_0x4c08('0x16')](saveUpdates(_0x22d3ba[_0x4c08('0x3c')],null))['then'](respondWithResult(_0x2eb142,null))[_0x4c08('0x25')](handleError(_0x2eb142,null));};exports['destroy']=function(_0x3fd991,_0x1db292){return db[_0x4c08('0x21')]['find']({'where':{'id':_0x3fd991[_0x4c08('0x27')]['id']}})['then'](handleEntityNotFound(_0x1db292,null))['then'](removeEntity(_0x1db292,null))['catch'](handleError(_0x1db292,null));};exports[_0x4c08('0x3d')]=function(_0x4ad8e2,_0x544808){return db[_0x4c08('0x21')][_0x4c08('0x3d')]()[_0x4c08('0x16')](respondWithResult(_0x544808,null))[_0x4c08('0x25')](handleError(_0x544808,null));};exports[_0x4c08('0x3e')]=function(_0x160f9a,_0xdc52a0){var _0x23dd57={'raw':!![],'where':{}},_0x23fb6a={},_0x54b337;return db['OpenchannelQueue'][_0x4c08('0x3f')]({'where':{'id':_0x160f9a[_0x4c08('0x27')]['id']}})['then'](handleEntityNotFound(_0xdc52a0,null))[_0x4c08('0x16')](function(_0x2f568f){if(_0x2f568f){_0x54b337=_0x2f568f[_0x4c08('0x32')]({'plain':!![]});_0x23fb6a[_0x4c08('0x28')]=_[_0x4c08('0x29')](db['UserOpenchannelQueue'][_0x4c08('0x1d')]);_0x23fb6a[_0x4c08('0x2a')]=_[_0x4c08('0x29')](_0x160f9a[_0x4c08('0x2a')]);_0x23fb6a[_0x4c08('0x2b')]=_[_0x4c08('0x2c')](_0x23fb6a['model'],_0x23fb6a[_0x4c08('0x2a')]);_0x23dd57[_0x4c08('0x2e')]=_[_0x4c08('0x2c')](_0x23fb6a[_0x4c08('0x28')],qs['fields'](_0x160f9a['query']['fields']));_0x23dd57[_0x4c08('0x2e')]=_0x23dd57[_0x4c08('0x2e')]['length']?_0x23dd57[_0x4c08('0x2e')]:_0x23fb6a[_0x4c08('0x28')];if(!_0x160f9a[_0x4c08('0x2a')]['hasOwnProperty']('nolimit')){_0x23dd57[_0x4c08('0x40')]=qs['limit'](_0x160f9a[_0x4c08('0x2a')][_0x4c08('0x40')]);_0x23dd57['offset']=qs[_0x4c08('0xf')](_0x160f9a['query'][_0x4c08('0xf')]);}_0x23dd57[_0x4c08('0x41')]=qs[_0x4c08('0x42')](_0x160f9a['query'][_0x4c08('0x42')]);_0x23dd57[_0x4c08('0x43')]=qs[_0x4c08('0x2b')](_[_0x4c08('0x44')](_0x160f9a['query'],_0x23fb6a['filters']));_0x23dd57[_0x4c08('0x43')][_0x4c08('0x45')]=_0x2f568f['id'];if(_0x160f9a['query']['filter']){_0x23dd57[_0x4c08('0x43')]=_[_0x4c08('0x2f')](_0x23dd57[_0x4c08('0x43')],{'$or':_['map'](_0x23dd57[_0x4c08('0x2e')],function(_0x3b62b7){var _0x431e93={};_0x431e93[_0x3b62b7]={'$like':'%'+_0x160f9a['query'][_0x4c08('0x46')]+'%'};return _0x431e93;})});}_0x23dd57=_[_0x4c08('0x2f')]({},_0x23dd57,_0x160f9a[_0x4c08('0x30')]);return db[_0x4c08('0x47')][_0x4c08('0x23')](_0x23dd57);}})['then'](function(_0x5ee1a8){if(_0x5ee1a8){return db[_0x4c08('0x48')]['findAndCountAll']({'where':{'id':_['map'](_0x5ee1a8,_0x4c08('0x49')),'role':_0x4c08('0x4a')},'attributes':['id','name',_0x4c08('0x4b'),'updatedAt',_0x4c08('0x4c')]});}})[_0x4c08('0x16')](function(_0x3c1010){if(_0x3c1010){return{'count':_0x3c1010[_0x4c08('0x11')],'rows':_[_0x4c08('0x1c')](_0x3c1010['rows'],function(_0x41f758){return{'membername':_0x41f758[_0x4c08('0x19')],'UserId':_0x41f758['id'],'queue_name':_0x54b337[_0x4c08('0x19')],'OpenchannelQueueId':_0x54b337['id'],'interface':util['format'](_0x4c08('0x4d'),_0x4c08('0x4e'),_0x41f758[_0x4c08('0x19')]),'penalty':0x0,'paused':_0x41f758[_0x4c08('0x4b')],'createdAt':_0x41f758[_0x4c08('0x4c')],'updatedAt':_0x41f758[_0x4c08('0x4f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4c08('0x16')](respondWithFilteredResult(_0xdc52a0,_0x23dd57))[_0x4c08('0x25')](handleError(_0xdc52a0,null));};exports[_0x4c08('0x50')]=function(_0x4b1d25,_0x325f32){var _0x391992={};var _0x5b1c50={};var _0x4f3cc9;var _0x510a8b;return db[_0x4c08('0x21')]['findOne']({'where':{'id':_0x4b1d25[_0x4c08('0x27')]['id']}})[_0x4c08('0x16')](handleEntityNotFound(_0x325f32,null))[_0x4c08('0x16')](function(_0x4fe07f){if(_0x4fe07f){_0x4f3cc9=_0x4fe07f;_0x5b1c50[_0x4c08('0x28')]=_[_0x4c08('0x29')](db[_0x4c08('0x51')][_0x4c08('0x1d')]);_0x5b1c50[_0x4c08('0x2a')]=_[_0x4c08('0x29')](_0x4b1d25[_0x4c08('0x2a')]);_0x5b1c50['filters']=_[_0x4c08('0x2c')](_0x5b1c50[_0x4c08('0x28')],_0x5b1c50[_0x4c08('0x2a')]);_0x391992['attributes']=_[_0x4c08('0x2c')](_0x5b1c50['model'],qs[_0x4c08('0x2d')](_0x4b1d25[_0x4c08('0x2a')][_0x4c08('0x2d')]));_0x391992[_0x4c08('0x2e')]=_0x391992[_0x4c08('0x2e')][_0x4c08('0x52')]?_0x391992[_0x4c08('0x2e')]:_0x5b1c50[_0x4c08('0x28')];_0x391992[_0x4c08('0x41')]=qs['sort'](_0x4b1d25[_0x4c08('0x2a')]['sort']);_0x391992[_0x4c08('0x43')]=qs['filters'](_[_0x4c08('0x44')](_0x4b1d25[_0x4c08('0x2a')],_0x5b1c50['filters']));if(_0x4b1d25['query'][_0x4c08('0x46')]){_0x391992[_0x4c08('0x43')]=_['merge'](_0x391992['where'],{'$or':_[_0x4c08('0x1c')](_0x391992[_0x4c08('0x2e')],function(_0x57302d){var _0x108c5f={};_0x108c5f[_0x57302d]={'$like':'%'+_0x4b1d25[_0x4c08('0x2a')]['filter']+'%'};return _0x108c5f;})});}_0x391992=_[_0x4c08('0x2f')]({},_0x391992,_0x4b1d25[_0x4c08('0x30')]);return _0x4f3cc9[_0x4c08('0x50')](_0x391992);}})['then'](function(_0x1c0cfe){if(_0x1c0cfe){_0x510a8b=_0x1c0cfe[_0x4c08('0x52')];if(!_0x4b1d25[_0x4c08('0x2a')]['hasOwnProperty'](_0x4c08('0x53'))){_0x391992['limit']=qs['limit'](_0x4b1d25[_0x4c08('0x2a')]['limit']);_0x391992[_0x4c08('0xf')]=qs[_0x4c08('0xf')](_0x4b1d25['query'][_0x4c08('0xf')]);}return _0x4f3cc9['getTeams'](_0x391992);}})[_0x4c08('0x16')](function(_0x416333){if(_0x416333){return _0x416333?{'count':_0x510a8b,'rows':_0x416333}:null;}})[_0x4c08('0x16')](respondWithResult(_0x325f32,null))['catch'](handleError(_0x325f32,null));};exports[_0x4c08('0x54')]=function(_0x3c966b,_0x2e4972){var _0x14be71=_0x3c966b[_0x4c08('0x3c')][_0x4c08('0x55')];return db['Team'][_0x4c08('0x23')]({'where':{'id':_0x14be71},'attributes':['id'],'include':[{'model':db[_0x4c08('0x48')],'as':_0x4c08('0x56'),'attributes':['id',_0x4c08('0x19'),_0x4c08('0x57'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0xd1123a){if(_0xd1123a){var _0x3e5e88=_[_0x4c08('0x58')](_0xd1123a,function(_0x2f9217){var _0x274fa5=_0x2f9217[_0x4c08('0x32')]({'plain':!![]});return _0x274fa5[_0x4c08('0x56')];});return db[_0x4c08('0x21')]['find']({'where':{'id':_0x3c966b[_0x4c08('0x27')]['id']}})[_0x4c08('0x16')](function(_0x55b9c8){return db[_0x4c08('0x59')][_0x4c08('0x5a')](function(_0x172a85){return _0x55b9c8[_0x4c08('0x54')](_0x14be71,{'transaction':_0x172a85})[_0x4c08('0x16')](function(){return BPromise['each'](_0x3e5e88,function(_0x1b8b33){return db[_0x4c08('0x47')][_0x4c08('0x5b')]({'where':{'UserId':_0x1b8b33['id'],'OpenchannelQueueId':_0x3c966b[_0x4c08('0x27')]['id']},'transaction':_0x172a85});});})[_0x4c08('0x16')](function(){_0x3e5e88[_0x4c08('0x5c')](function(_0x333aa7){socket[_0x4c08('0x5d')](_0x4c08('0x5e'),{'UserId':_0x333aa7['id'],'OpenchannelQueueId':_0x55b9c8['id']});});});});});}})['then'](respondWithStatusCode(_0x2e4972,null))['catch'](handleError(_0x2e4972,null));};exports[_0x4c08('0x5f')]=function(_0x590f89,_0x494ab9){return db['Team']['findAll']({'where':{'id':_0x590f89['query'][_0x4c08('0x55')]},'attributes':['id'],'include':[{'model':db[_0x4c08('0x48')],'as':_0x4c08('0x56'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x494ab9,null))['then'](function(_0x422718){var _0x36474b=_[_0x4c08('0x1c')](_0x422718,'id');var _0x5ffd2e=[];var _0x8beec7=[];var _0x49bc9d=squel[_0x4c08('0x60')]();_0x49bc9d['field'](_0x4c08('0x61'))[_0x4c08('0x62')](_0x4c08('0x63'),'tq')[_0x4c08('0x64')](_0x4c08('0x65'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x4c08('0x43')](_0x4c08('0x66'),_0x590f89[_0x4c08('0x27')]['id']);for(var _0x3249f5=0x0;_0x3249f5<_0x422718[_0x4c08('0x52')];_0x3249f5+=0x1){let _0x7531fc=_0x422718[_0x3249f5];for(var _0xbc89b8=0x0;_0xbc89b8<_0x7531fc[_0x4c08('0x56')][_0x4c08('0x52')];_0xbc89b8+=0x1){let _0x86099b=_0x7531fc[_0x4c08('0x56')][_0xbc89b8];var _0x17ecf2=_0x49bc9d['clone']();_0x17ecf2[_0x4c08('0x43')](_0x4c08('0x67'),_0x86099b['id']);_0x8beec7[_0x4c08('0x68')](db['sequelize'][_0x4c08('0x2a')](_0x17ecf2[_0x4c08('0x69')](),{'type':db[_0x4c08('0x59')][_0x4c08('0x6a')]['SELECT']})[_0x4c08('0x16')](function(_0x2f547d){if(_0x2f547d[_0x4c08('0x52')]===0x1){return _0x86099b['id'];}else{var _0x2283eb=_[_0x4c08('0x6b')](_[_0x4c08('0x1c')](_0x2f547d,_0x4c08('0x6c')),function(_0x46bca5){return _[_0x4c08('0x6d')](_0x36474b,_0x46bca5);});if(_0x2283eb){return _0x86099b['id'];}}}));}}return BPromise[_0x4c08('0x6e')](_0x8beec7)[_0x4c08('0x16')](function(_0x4b38d5){_0x5ffd2e=_(_0x5ffd2e)[_0x4c08('0x6f')](_0x4b38d5)[_0x4c08('0x70')]()[_0x4c08('0x71')]();return db['OpenchannelQueue'][_0x4c08('0x38')]({'where':{'id':_0x590f89[_0x4c08('0x27')]['id']}})['then'](function(_0x1a029e){return db['sequelize'][_0x4c08('0x5a')](function(_0x92e364){return _0x1a029e['removeTeams'](_0x590f89['query']['ids'],{'transaction':_0x92e364})[_0x4c08('0x16')](function(){if(!_[_0x4c08('0x72')](_0x5ffd2e)){return _0x1a029e['removeAgents'](_0x5ffd2e,{'transaction':_0x92e364});}})['then'](function(){_0x5ffd2e[_0x4c08('0x5c')](function(_0x16cae4){socket[_0x4c08('0x5d')](_0x4c08('0x73'),{'UserId':_0x16cae4,'OpenchannelQueueId':_0x1a029e['id']});});});});});});})['then'](respondWithStatusCode(_0x494ab9,null))[_0x4c08('0x25')](handleError(_0x494ab9,null));};exports['addAgents']=function(_0x264e98,_0x2c81a5){return db[_0x4c08('0x21')][_0x4c08('0x38')]({'where':{'id':_0x264e98[_0x4c08('0x27')]['id']}})[_0x4c08('0x16')](handleEntityNotFound(_0x2c81a5,null))[_0x4c08('0x16')](function(_0x2fa727){if(_0x2fa727){return _0x2fa727['addAgents'](_0x264e98[_0x4c08('0x3c')][_0x4c08('0x55')],_[_0x4c08('0x74')](_0x264e98[_0x4c08('0x3c')],[_0x4c08('0x55'),'id'])||{})['spread'](function(_0x303fc0){for(var _0x4854ea=0x0;_0x4854ea<_0x264e98[_0x4c08('0x3c')][_0x4c08('0x55')]['length'];_0x4854ea+=0x1){socket[_0x4c08('0x5d')](_0x4c08('0x5e'),{'UserId':Number(_0x264e98[_0x4c08('0x3c')][_0x4c08('0x55')][_0x4854ea]),'OpenchannelQueueId':Number(_0x264e98[_0x4c08('0x27')]['id'])});}return _0x303fc0;});}})['then'](respondWithResult(_0x2c81a5,null))[_0x4c08('0x25')](handleError(_0x2c81a5,null));};exports[_0x4c08('0x75')]=function(_0x5d78c5,_0x5226fa){return db[_0x4c08('0x21')]['find']({'where':{'id':_0x5d78c5[_0x4c08('0x27')]['id']}})['then'](handleEntityNotFound(_0x5226fa,null))['then'](function(_0x12b594){if(_0x12b594){return _0x12b594[_0x4c08('0x75')](_0x5d78c5[_0x4c08('0x2a')][_0x4c08('0x55')])[_0x4c08('0x16')](function(){if(_[_0x4c08('0x76')](_0x5d78c5[_0x4c08('0x2a')][_0x4c08('0x55')])){for(var _0x487fbe=0x0;_0x487fbe<_0x5d78c5[_0x4c08('0x2a')]['ids'][_0x4c08('0x52')];_0x487fbe+=0x1){socket['emit'](_0x4c08('0x73'),{'UserId':Number(_0x5d78c5[_0x4c08('0x2a')]['ids'][_0x487fbe]),'OpenchannelQueueId':Number(_0x5d78c5[_0x4c08('0x27')]['id'])});}}else{socket[_0x4c08('0x5d')](_0x4c08('0x73'),{'UserId':Number(_0x5d78c5[_0x4c08('0x2a')][_0x4c08('0x55')]),'OpenchannelQueueId':Number(_0x5d78c5[_0x4c08('0x27')]['id'])});}});}})[_0x4c08('0x16')](respondWithStatusCode(_0x5226fa,null))[_0x4c08('0x25')](handleError(_0x5226fa,null));};exports['getAgents']=function(_0x21e5c7,_0x4c4b49){var _0x578c48={};var _0x27f5fd={};var _0x3e1b55;var _0x155290;return db['OpenchannelQueue'][_0x4c08('0x3f')]({'where':{'id':_0x21e5c7[_0x4c08('0x27')]['id']}})['then'](handleEntityNotFound(_0x4c4b49,null))[_0x4c08('0x16')](function(_0x5965ae){if(_0x5965ae){_0x3e1b55=_0x5965ae;_0x27f5fd[_0x4c08('0x28')]=_[_0x4c08('0x29')](db['User']['rawAttributes']);_0x27f5fd[_0x4c08('0x2a')]=_[_0x4c08('0x29')](_0x21e5c7[_0x4c08('0x2a')]);_0x27f5fd[_0x4c08('0x2b')]=_[_0x4c08('0x2c')](_0x27f5fd['model'],_0x27f5fd[_0x4c08('0x2a')]);_0x578c48['attributes']=_[_0x4c08('0x2c')](_0x27f5fd[_0x4c08('0x28')],qs[_0x4c08('0x2d')](_0x21e5c7['query'][_0x4c08('0x2d')]));_0x578c48[_0x4c08('0x2e')]=_0x578c48[_0x4c08('0x2e')][_0x4c08('0x52')]?_0x578c48[_0x4c08('0x2e')]:_0x27f5fd[_0x4c08('0x28')];_0x578c48[_0x4c08('0x41')]=qs[_0x4c08('0x42')](_0x21e5c7['query'][_0x4c08('0x42')]);_0x578c48[_0x4c08('0x43')]=qs['filters'](_[_0x4c08('0x44')](_0x21e5c7[_0x4c08('0x2a')],_0x27f5fd[_0x4c08('0x2b')]));if(_0x21e5c7[_0x4c08('0x2a')][_0x4c08('0x46')]){_0x578c48[_0x4c08('0x43')]=_[_0x4c08('0x2f')](_0x578c48[_0x4c08('0x43')],{'$or':_[_0x4c08('0x1c')](_0x578c48[_0x4c08('0x2e')],function(_0x45b480){var _0x24287f={};_0x24287f[_0x45b480]={'$like':'%'+_0x21e5c7[_0x4c08('0x2a')]['filter']+'%'};return _0x24287f;})});}_0x578c48=_[_0x4c08('0x2f')]({},_0x578c48,_0x21e5c7[_0x4c08('0x30')]);return _0x3e1b55[_0x4c08('0x77')](_0x578c48);}})[_0x4c08('0x16')](function(_0x3377ba){if(_0x3377ba){_0x155290=_0x3377ba[_0x4c08('0x52')];if(!_0x21e5c7[_0x4c08('0x2a')][_0x4c08('0x78')](_0x4c08('0x53'))){_0x578c48[_0x4c08('0x40')]=qs[_0x4c08('0x40')](_0x21e5c7[_0x4c08('0x2a')][_0x4c08('0x40')]);_0x578c48[_0x4c08('0xf')]=qs[_0x4c08('0xf')](_0x21e5c7[_0x4c08('0x2a')][_0x4c08('0xf')]);}return _0x3e1b55[_0x4c08('0x77')](_0x578c48);}})[_0x4c08('0x16')](function(_0x290f99){if(_0x290f99){return _0x290f99?{'count':_0x155290,'rows':_0x290f99}:null;}})[_0x4c08('0x16')](respondWithResult(_0x4c4b49,null))[_0x4c08('0x25')](handleError(_0x4c4b49,null));};
\ No newline at end of file
+var _0x3f39=['format','%s/%s','SIP','getTeams','pick','addTeams','ids','Team','Agents','online','voicePause','flatMap','sequelize','transaction','each','forEach','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','includes','all','union','compact','value','removeAgents','emit','addAgents','omit','spread','isArray','userOpenchannelQueue:remove','getAgents','bluebird','lodash','../../components/parsers/qs','../../config/logger','redis','localhost','socket.io-emitter','./openchannelQueue.socket','sendStatus','status','end','offset','undefined','limit','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','OpenchannelQueue','fieldName','type','key','getOptions','where','count','include','query','show','rawAttributes','keys','filters','intersection','model','fields','attributes','length','includeAll','merge','options','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','findOne','UserOpenchannelQueue','hasOwnProperty','nolimit','order','sort','filter','findAll','User','findAndCountAll','UserId','openchannelPause','updatedAt','createdAt','rows'];(function(_0x844d4,_0x2f775e){var _0x15d1b8=function(_0x2755eb){while(--_0x2755eb){_0x844d4['push'](_0x844d4['shift']());}};_0x15d1b8(++_0x2f775e);}(_0x3f39,0x199));var _0x93f3=function(_0xa3a76b,_0x2178f3){_0xa3a76b=_0xa3a76b-0x0;var _0x3cfe8d=_0x3f39[_0xa3a76b];return _0x3cfe8d;};'use strict';var BPromise=require(_0x93f3('0x0'));var util=require('util');var _=require(_0x93f3('0x1'));var squel=require('squel');var Redis=require('ioredis');var qs=require(_0x93f3('0x2'));var logger=require(_0x93f3('0x3'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x93f3('0x4')]=_['defaults'](config[_0x93f3('0x4')],{'host':_0x93f3('0x5'),'port':0x18eb});var socket=require(_0x93f3('0x6'))(new Redis(config[_0x93f3('0x4')]));require(_0x93f3('0x7'))['register'](socket);function respondWithStatusCode(_0x2ffbad,_0x223547){_0x223547=_0x223547||0xcc;return function(_0x105670){if(_0x105670){return _0x2ffbad[_0x93f3('0x8')](_0x223547);}return _0x2ffbad[_0x93f3('0x9')](_0x223547)[_0x93f3('0xa')]();};}function respondWithResult(_0x3efc6c,_0x46e796){_0x46e796=_0x46e796||0xc8;return function(_0xd3daad){if(_0xd3daad){return _0x3efc6c[_0x93f3('0x9')](_0x46e796)['json'](_0xd3daad);}};}function respondWithFilteredResult(_0x59e2d1,_0x25354d){return function(_0x282dd9){if(_0x282dd9){var _0x20b174=typeof _0x25354d[_0x93f3('0xb')]===_0x93f3('0xc')&&typeof _0x25354d[_0x93f3('0xd')]===_0x93f3('0xc');var _0x131082=_0x282dd9['count'];var _0x38cb50=_0x20b174?0x0:_0x25354d[_0x93f3('0xb')];var _0x44bf1c=_0x20b174?_0x282dd9['count']:_0x25354d[_0x93f3('0xb')]+_0x25354d['limit'];var _0x9db7d6;if(_0x44bf1c>=_0x131082){_0x44bf1c=_0x131082;_0x9db7d6=0xc8;}else{_0x9db7d6=0xce;}_0x59e2d1[_0x93f3('0x9')](_0x9db7d6);return _0x59e2d1['set']('Content-Range',_0x38cb50+'-'+_0x44bf1c+'/'+_0x131082)['json'](_0x282dd9);}return null;};}function saveUpdates(_0x3b3092){return function(_0x312acc){if(_0x312acc){return _0x312acc[_0x93f3('0xe')](_0x3b3092)[_0x93f3('0xf')](function(_0x4823e5){return _0x4823e5;});}return null;};}function removeEntity(_0x31dbf3){return function(_0x3356f6){if(_0x3356f6){return _0x3356f6[_0x93f3('0x10')]()['then'](function(){var _0x3c3e45=_0x3356f6[_0x93f3('0x11')]({'plain':!![]});var _0x2c95ac=_0x93f3('0x12');return db[_0x93f3('0x13')][_0x93f3('0x10')]({'where':{'type':_0x2c95ac,'resourceId':_0x3c3e45['id']}})['then'](function(){return _0x3356f6;});})['then'](function(){_0x31dbf3[_0x93f3('0x9')](0xcc)[_0x93f3('0xa')]();});}};}function handleEntityNotFound(_0x5459f7){return function(_0x5d25a6){if(!_0x5d25a6){_0x5459f7['sendStatus'](0x194);}return _0x5d25a6;};}function handleError(_0x480476,_0x27d722){_0x27d722=_0x27d722||0x1f4;return function(_0x4b20c3){logger[_0x93f3('0x14')](_0x4b20c3[_0x93f3('0x15')]);if(_0x4b20c3[_0x93f3('0x16')]){delete _0x4b20c3['name'];}_0x480476[_0x93f3('0x9')](_0x27d722)[_0x93f3('0x17')](_0x4b20c3);};}exports[_0x93f3('0x18')]=function(_0x3cdcb8,_0x436e30){var _0x5f1869={};var _0x54cfcc={'count':0x0,'rows':[]};var _0x39502a=_[_0x93f3('0x19')](db[_0x93f3('0x1a')]['rawAttributes'],function(_0x5e51aa){return{'name':_0x5e51aa[_0x93f3('0x1b')],'type':_0x5e51aa[_0x93f3('0x1c')][_0x93f3('0x1d')]};});_0x5f1869=qs[_0x93f3('0x1e')](_0x39502a,_0x3cdcb8);var _0x377952={'where':_0x5f1869[_0x93f3('0x1f')]};return db[_0x93f3('0x1a')][_0x93f3('0x20')](_0x377952)['then'](function(_0x505a9a){_0x54cfcc['count']=_0x505a9a;_0x5f1869[_0x93f3('0x21')]=qs['include'](_0x3cdcb8[_0x93f3('0x22')]);return db[_0x93f3('0x1a')]['findAll'](_0x5f1869);})['then'](function(_0x109190){_0x54cfcc['rows']=_0x109190;return _0x54cfcc;})[_0x93f3('0xf')](respondWithFilteredResult(_0x436e30,_0x5f1869))['catch'](handleError(_0x436e30,null));};exports[_0x93f3('0x23')]=function(_0x34322d,_0x16fa19){var _0x155c39={'raw':!![],'where':{'id':_0x34322d['params']['id']}},_0x1611a5={};_0x1611a5['model']=_['keys'](db[_0x93f3('0x1a')][_0x93f3('0x24')]);_0x1611a5[_0x93f3('0x22')]=_[_0x93f3('0x25')](_0x34322d[_0x93f3('0x22')]);_0x1611a5[_0x93f3('0x26')]=_[_0x93f3('0x27')](_0x1611a5[_0x93f3('0x28')],_0x1611a5[_0x93f3('0x22')]);_0x155c39['attributes']=_[_0x93f3('0x27')](_0x1611a5[_0x93f3('0x28')],qs[_0x93f3('0x29')](_0x34322d[_0x93f3('0x22')][_0x93f3('0x29')]));_0x155c39['attributes']=_0x155c39[_0x93f3('0x2a')][_0x93f3('0x2b')]?_0x155c39[_0x93f3('0x2a')]:_0x1611a5['model'];if(_0x34322d[_0x93f3('0x22')][_0x93f3('0x2c')]){_0x155c39['include']=[{'all':!![]}];}_0x155c39=_[_0x93f3('0x2d')]({},_0x155c39,_0x34322d[_0x93f3('0x2e')]);return db[_0x93f3('0x1a')][_0x93f3('0x2f')](_0x155c39)['then'](handleEntityNotFound(_0x16fa19,null))[_0x93f3('0xf')](respondWithResult(_0x16fa19,null))[_0x93f3('0x30')](handleError(_0x16fa19,null));};exports[_0x93f3('0x31')]=function(_0xb18f20,_0x2b14d5){return db[_0x93f3('0x1a')]['create'](_0xb18f20['body'],{})[_0x93f3('0xf')](function(_0x216dcc){var _0x266fa7=_0xb18f20[_0x93f3('0x32')]['get']({'plain':!![]});if(!_0x266fa7)throw new Error(_0x93f3('0x33'));if(_0x266fa7[_0x93f3('0x34')]===_0x93f3('0x32')){var _0xfd8a2f=_0x216dcc['get']({'plain':!![]});var _0x13e7ca='OpenchannelQueues';return db[_0x93f3('0x35')]['find']({'where':{'name':_0x13e7ca,'userProfileId':_0x266fa7[_0x93f3('0x36')]},'raw':!![]})[_0x93f3('0xf')](function(_0x483d34){if(_0x483d34&&_0x483d34[_0x93f3('0x37')]===0x0){return db[_0x93f3('0x13')]['create']({'name':_0xfd8a2f[_0x93f3('0x16')],'resourceId':_0xfd8a2f['id'],'type':_0x483d34[_0x93f3('0x16')],'sectionId':_0x483d34['id']},{})[_0x93f3('0xf')](function(){return _0x216dcc;});}else{return _0x216dcc;}})['catch'](function(_0x57b7e5){logger[_0x93f3('0x14')](_0x93f3('0x38'),_0x57b7e5);throw _0x57b7e5;});}return _0x216dcc;})[_0x93f3('0xf')](respondWithResult(_0x2b14d5,0xc9))[_0x93f3('0x30')](handleError(_0x2b14d5,null));};exports[_0x93f3('0xe')]=function(_0x363622,_0xf9f788){if(_0x363622[_0x93f3('0x39')]['id']){delete _0x363622[_0x93f3('0x39')]['id'];}return db[_0x93f3('0x1a')]['find']({'where':{'id':_0x363622[_0x93f3('0x3a')]['id']}})['then'](handleEntityNotFound(_0xf9f788,null))[_0x93f3('0xf')](saveUpdates(_0x363622['body'],null))[_0x93f3('0xf')](respondWithResult(_0xf9f788,null))[_0x93f3('0x30')](handleError(_0xf9f788,null));};exports[_0x93f3('0x10')]=function(_0x4fa8fe,_0x3a00c0){return db[_0x93f3('0x1a')]['find']({'where':{'id':_0x4fa8fe[_0x93f3('0x3a')]['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x3a00c0,null))[_0x93f3('0xf')](removeEntity(_0x3a00c0,null))[_0x93f3('0x30')](handleError(_0x3a00c0,null));};exports['describe']=function(_0x2b2def,_0x439ff1){return db[_0x93f3('0x1a')][_0x93f3('0x3b')]()[_0x93f3('0xf')](respondWithResult(_0x439ff1,null))[_0x93f3('0x30')](handleError(_0x439ff1,null));};exports['getMembers']=function(_0x1960d6,_0x337058){var _0x53bdc9={'raw':!![],'where':{}},_0x22f78c={},_0x5ee060;return db[_0x93f3('0x1a')][_0x93f3('0x3c')]({'where':{'id':_0x1960d6['params']['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x337058,null))[_0x93f3('0xf')](function(_0x4f3167){if(_0x4f3167){_0x5ee060=_0x4f3167[_0x93f3('0x11')]({'plain':!![]});_0x22f78c['model']=_['keys'](db[_0x93f3('0x3d')]['rawAttributes']);_0x22f78c['query']=_['keys'](_0x1960d6[_0x93f3('0x22')]);_0x22f78c[_0x93f3('0x26')]=_['intersection'](_0x22f78c['model'],_0x22f78c[_0x93f3('0x22')]);_0x53bdc9[_0x93f3('0x2a')]=_[_0x93f3('0x27')](_0x22f78c['model'],qs[_0x93f3('0x29')](_0x1960d6['query'][_0x93f3('0x29')]));_0x53bdc9[_0x93f3('0x2a')]=_0x53bdc9[_0x93f3('0x2a')]['length']?_0x53bdc9[_0x93f3('0x2a')]:_0x22f78c['model'];if(!_0x1960d6['query'][_0x93f3('0x3e')](_0x93f3('0x3f'))){_0x53bdc9['limit']=qs[_0x93f3('0xd')](_0x1960d6[_0x93f3('0x22')][_0x93f3('0xd')]);_0x53bdc9[_0x93f3('0xb')]=qs[_0x93f3('0xb')](_0x1960d6[_0x93f3('0x22')][_0x93f3('0xb')]);}_0x53bdc9[_0x93f3('0x40')]=qs[_0x93f3('0x41')](_0x1960d6[_0x93f3('0x22')][_0x93f3('0x41')]);_0x53bdc9[_0x93f3('0x1f')]=qs[_0x93f3('0x26')](_['pick'](_0x1960d6[_0x93f3('0x22')],_0x22f78c['filters']));_0x53bdc9[_0x93f3('0x1f')]['OpenchannelQueueId']=_0x4f3167['id'];if(_0x1960d6['query'][_0x93f3('0x42')]){_0x53bdc9[_0x93f3('0x1f')]=_[_0x93f3('0x2d')](_0x53bdc9[_0x93f3('0x1f')],{'$or':_['map'](_0x53bdc9[_0x93f3('0x2a')],function(_0x5a0f6e){var _0x5e1cb2={};_0x5e1cb2[_0x5a0f6e]={'$like':'%'+_0x1960d6[_0x93f3('0x22')][_0x93f3('0x42')]+'%'};return _0x5e1cb2;})});}_0x53bdc9=_['merge']({},_0x53bdc9,_0x1960d6[_0x93f3('0x2e')]);return db[_0x93f3('0x3d')][_0x93f3('0x43')](_0x53bdc9);}})[_0x93f3('0xf')](function(_0x242b01){if(_0x242b01){return db[_0x93f3('0x44')][_0x93f3('0x45')]({'where':{'id':_[_0x93f3('0x19')](_0x242b01,_0x93f3('0x46')),'role':'agent'},'attributes':['id',_0x93f3('0x16'),_0x93f3('0x47'),_0x93f3('0x48'),_0x93f3('0x49')]});}})['then'](function(_0xd31e2b){if(_0xd31e2b){return{'count':_0xd31e2b[_0x93f3('0x20')],'rows':_['map'](_0xd31e2b[_0x93f3('0x4a')],function(_0x42d26a){return{'membername':_0x42d26a[_0x93f3('0x16')],'UserId':_0x42d26a['id'],'queue_name':_0x5ee060[_0x93f3('0x16')],'OpenchannelQueueId':_0x5ee060['id'],'interface':util[_0x93f3('0x4b')](_0x93f3('0x4c'),_0x93f3('0x4d'),_0x42d26a['name']),'penalty':0x0,'paused':_0x42d26a[_0x93f3('0x47')],'createdAt':_0x42d26a['createdAt'],'updatedAt':_0x42d26a[_0x93f3('0x48')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x93f3('0xf')](respondWithFilteredResult(_0x337058,_0x53bdc9))[_0x93f3('0x30')](handleError(_0x337058,null));};exports[_0x93f3('0x4e')]=function(_0x2be3f4,_0x118254){var _0x42b66d={};var _0x331209={};var _0x14ddb8;var _0x5dd63b;return db[_0x93f3('0x1a')][_0x93f3('0x3c')]({'where':{'id':_0x2be3f4[_0x93f3('0x3a')]['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x118254,null))['then'](function(_0x4df05a){if(_0x4df05a){_0x14ddb8=_0x4df05a;_0x331209[_0x93f3('0x28')]=_['keys'](db['Team'][_0x93f3('0x24')]);_0x331209['query']=_[_0x93f3('0x25')](_0x2be3f4[_0x93f3('0x22')]);_0x331209[_0x93f3('0x26')]=_[_0x93f3('0x27')](_0x331209[_0x93f3('0x28')],_0x331209[_0x93f3('0x22')]);_0x42b66d[_0x93f3('0x2a')]=_[_0x93f3('0x27')](_0x331209[_0x93f3('0x28')],qs['fields'](_0x2be3f4[_0x93f3('0x22')][_0x93f3('0x29')]));_0x42b66d[_0x93f3('0x2a')]=_0x42b66d[_0x93f3('0x2a')]['length']?_0x42b66d['attributes']:_0x331209['model'];_0x42b66d[_0x93f3('0x40')]=qs[_0x93f3('0x41')](_0x2be3f4[_0x93f3('0x22')][_0x93f3('0x41')]);_0x42b66d[_0x93f3('0x1f')]=qs[_0x93f3('0x26')](_[_0x93f3('0x4f')](_0x2be3f4[_0x93f3('0x22')],_0x331209[_0x93f3('0x26')]));if(_0x2be3f4[_0x93f3('0x22')][_0x93f3('0x42')]){_0x42b66d[_0x93f3('0x1f')]=_[_0x93f3('0x2d')](_0x42b66d[_0x93f3('0x1f')],{'$or':_[_0x93f3('0x19')](_0x42b66d[_0x93f3('0x2a')],function(_0x238f4d){var _0x2e335d={};_0x2e335d[_0x238f4d]={'$like':'%'+_0x2be3f4['query'][_0x93f3('0x42')]+'%'};return _0x2e335d;})});}_0x42b66d=_[_0x93f3('0x2d')]({},_0x42b66d,_0x2be3f4['options']);return _0x14ddb8[_0x93f3('0x4e')](_0x42b66d);}})[_0x93f3('0xf')](function(_0x36ac8b){if(_0x36ac8b){_0x5dd63b=_0x36ac8b[_0x93f3('0x2b')];if(!_0x2be3f4[_0x93f3('0x22')]['hasOwnProperty'](_0x93f3('0x3f'))){_0x42b66d[_0x93f3('0xd')]=qs[_0x93f3('0xd')](_0x2be3f4['query'][_0x93f3('0xd')]);_0x42b66d['offset']=qs[_0x93f3('0xb')](_0x2be3f4[_0x93f3('0x22')]['offset']);}return _0x14ddb8['getTeams'](_0x42b66d);}})['then'](function(_0x3e54e4){if(_0x3e54e4){return _0x3e54e4?{'count':_0x5dd63b,'rows':_0x3e54e4}:null;}})[_0x93f3('0xf')](respondWithResult(_0x118254,null))[_0x93f3('0x30')](handleError(_0x118254,null));};exports[_0x93f3('0x50')]=function(_0x21e0a3,_0x364c6d){var _0x420021=_0x21e0a3[_0x93f3('0x39')][_0x93f3('0x51')];return db[_0x93f3('0x52')][_0x93f3('0x43')]({'where':{'id':_0x420021},'attributes':['id'],'include':[{'model':db['User'],'as':_0x93f3('0x53'),'attributes':['id',_0x93f3('0x16'),_0x93f3('0x54'),_0x93f3('0x55'),'interface'],'raw':!![]}]})[_0x93f3('0xf')](function(_0x3ce1c3){if(_0x3ce1c3){var _0x5aff24=_[_0x93f3('0x56')](_0x3ce1c3,function(_0x3eee46){var _0x428489=_0x3eee46[_0x93f3('0x11')]({'plain':!![]});return _0x428489[_0x93f3('0x53')];});return db['OpenchannelQueue'][_0x93f3('0x2f')]({'where':{'id':_0x21e0a3[_0x93f3('0x3a')]['id']}})['then'](function(_0x4c22dc){return db[_0x93f3('0x57')][_0x93f3('0x58')](function(_0x26f478){return _0x4c22dc[_0x93f3('0x50')](_0x420021,{'transaction':_0x26f478})[_0x93f3('0xf')](function(){return BPromise[_0x93f3('0x59')](_0x5aff24,function(_0x28921c){return db[_0x93f3('0x3d')]['findOrCreate']({'where':{'UserId':_0x28921c['id'],'OpenchannelQueueId':_0x21e0a3[_0x93f3('0x3a')]['id']},'transaction':_0x26f478});});})[_0x93f3('0xf')](function(){_0x5aff24[_0x93f3('0x5a')](function(_0x540e68){socket['emit'](_0x93f3('0x5b'),{'UserId':_0x540e68['id'],'OpenchannelQueueId':_0x4c22dc['id']});});});});});}})[_0x93f3('0xf')](respondWithStatusCode(_0x364c6d,null))[_0x93f3('0x30')](handleError(_0x364c6d,null));};exports[_0x93f3('0x5c')]=function(_0x1ccea1,_0x53ad2f){return db['Team'][_0x93f3('0x43')]({'where':{'id':_0x1ccea1[_0x93f3('0x22')][_0x93f3('0x51')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x93f3('0x53'),'attributes':['id'],'raw':!![]}]})[_0x93f3('0xf')](handleEntityNotFound(_0x53ad2f,null))['then'](function(_0x4598ac){var _0x5a4d27=_[_0x93f3('0x19')](_0x4598ac,'id');var _0x6db23c=[];var _0x2931d6=[];var _0x2e9e6c=squel[_0x93f3('0x5d')]();_0x2e9e6c[_0x93f3('0x5e')](_0x93f3('0x5f'))[_0x93f3('0x60')](_0x93f3('0x61'),'tq')[_0x93f3('0x62')](_0x93f3('0x63'),'ut',_0x93f3('0x64'))[_0x93f3('0x1f')](_0x93f3('0x65'),_0x1ccea1[_0x93f3('0x3a')]['id']);for(var _0x3fd3df=0x0;_0x3fd3df<_0x4598ac['length'];_0x3fd3df+=0x1){let _0x5e78d6=_0x4598ac[_0x3fd3df];for(var _0x5b40df=0x0;_0x5b40df<_0x5e78d6[_0x93f3('0x53')][_0x93f3('0x2b')];_0x5b40df+=0x1){let _0x1762e8=_0x5e78d6['Agents'][_0x5b40df];var _0x200e53=_0x2e9e6c[_0x93f3('0x66')]();_0x200e53[_0x93f3('0x1f')](_0x93f3('0x67'),_0x1762e8['id']);_0x2931d6['push'](db[_0x93f3('0x57')][_0x93f3('0x22')](_0x200e53[_0x93f3('0x68')](),{'type':db[_0x93f3('0x57')][_0x93f3('0x69')]['SELECT']})['then'](function(_0x2ffb0c){if(_0x2ffb0c['length']===0x1){return _0x1762e8['id'];}else{var _0x596e17=_[_0x93f3('0x6a')](_[_0x93f3('0x19')](_0x2ffb0c,_0x93f3('0x6b')),function(_0x3ffa42){return _[_0x93f3('0x6c')](_0x5a4d27,_0x3ffa42);});if(_0x596e17){return _0x1762e8['id'];}}}));}}return BPromise[_0x93f3('0x6d')](_0x2931d6)['then'](function(_0xca72c3){_0x6db23c=_(_0x6db23c)[_0x93f3('0x6e')](_0xca72c3)[_0x93f3('0x6f')]()[_0x93f3('0x70')]();return db[_0x93f3('0x1a')][_0x93f3('0x2f')]({'where':{'id':_0x1ccea1[_0x93f3('0x3a')]['id']}})['then'](function(_0x1bfe49){return db['sequelize'][_0x93f3('0x58')](function(_0x4fdbfd){return _0x1bfe49['removeTeams'](_0x1ccea1[_0x93f3('0x22')][_0x93f3('0x51')],{'transaction':_0x4fdbfd})['then'](function(){if(!_['isEmpty'](_0x6db23c)){return _0x1bfe49[_0x93f3('0x71')](_0x6db23c,{'transaction':_0x4fdbfd});}})[_0x93f3('0xf')](function(){_0x6db23c[_0x93f3('0x5a')](function(_0xf92bfe){socket[_0x93f3('0x72')]('userOpenchannelQueue:remove',{'UserId':_0xf92bfe,'OpenchannelQueueId':_0x1bfe49['id']});});});});});});})[_0x93f3('0xf')](respondWithStatusCode(_0x53ad2f,null))[_0x93f3('0x30')](handleError(_0x53ad2f,null));};exports[_0x93f3('0x73')]=function(_0x53f91f,_0x3f90e5){return db[_0x93f3('0x1a')][_0x93f3('0x2f')]({'where':{'id':_0x53f91f[_0x93f3('0x3a')]['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x3f90e5,null))['then'](function(_0x23acb4){if(_0x23acb4){return _0x23acb4[_0x93f3('0x73')](_0x53f91f['body'][_0x93f3('0x51')],_[_0x93f3('0x74')](_0x53f91f[_0x93f3('0x39')],[_0x93f3('0x51'),'id'])||{})[_0x93f3('0x75')](function(_0x2f5eef){for(var _0x1d242c=0x0;_0x1d242c<_0x53f91f[_0x93f3('0x39')][_0x93f3('0x51')][_0x93f3('0x2b')];_0x1d242c+=0x1){socket[_0x93f3('0x72')](_0x93f3('0x5b'),{'UserId':Number(_0x53f91f['body'][_0x93f3('0x51')][_0x1d242c]),'OpenchannelQueueId':Number(_0x53f91f[_0x93f3('0x3a')]['id'])});}return _0x2f5eef;});}})[_0x93f3('0xf')](respondWithResult(_0x3f90e5,null))['catch'](handleError(_0x3f90e5,null));};exports[_0x93f3('0x71')]=function(_0x5ac31e,_0x54ddf8){return db[_0x93f3('0x1a')]['find']({'where':{'id':_0x5ac31e[_0x93f3('0x3a')]['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x54ddf8,null))['then'](function(_0x4dcaa0){if(_0x4dcaa0){return _0x4dcaa0[_0x93f3('0x71')](_0x5ac31e[_0x93f3('0x22')][_0x93f3('0x51')])[_0x93f3('0xf')](function(){if(_[_0x93f3('0x76')](_0x5ac31e['query'][_0x93f3('0x51')])){for(var _0x32233d=0x0;_0x32233d<_0x5ac31e[_0x93f3('0x22')]['ids'][_0x93f3('0x2b')];_0x32233d+=0x1){socket[_0x93f3('0x72')]('userOpenchannelQueue:remove',{'UserId':Number(_0x5ac31e[_0x93f3('0x22')][_0x93f3('0x51')][_0x32233d]),'OpenchannelQueueId':Number(_0x5ac31e[_0x93f3('0x3a')]['id'])});}}else{socket[_0x93f3('0x72')](_0x93f3('0x77'),{'UserId':Number(_0x5ac31e[_0x93f3('0x22')][_0x93f3('0x51')]),'OpenchannelQueueId':Number(_0x5ac31e['params']['id'])});}});}})[_0x93f3('0xf')](respondWithStatusCode(_0x54ddf8,null))[_0x93f3('0x30')](handleError(_0x54ddf8,null));};exports['getAgents']=function(_0x3b9ae0,_0x2eab42){var _0x56905f={};var _0x54ad0d={};var _0x9ef088;var _0x5972db;return db[_0x93f3('0x1a')][_0x93f3('0x3c')]({'where':{'id':_0x3b9ae0[_0x93f3('0x3a')]['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x2eab42,null))[_0x93f3('0xf')](function(_0x550dc7){if(_0x550dc7){_0x9ef088=_0x550dc7;_0x54ad0d[_0x93f3('0x28')]=_['keys'](db[_0x93f3('0x44')][_0x93f3('0x24')]);_0x54ad0d[_0x93f3('0x22')]=_[_0x93f3('0x25')](_0x3b9ae0[_0x93f3('0x22')]);_0x54ad0d[_0x93f3('0x26')]=_['intersection'](_0x54ad0d[_0x93f3('0x28')],_0x54ad0d[_0x93f3('0x22')]);_0x56905f[_0x93f3('0x2a')]=_[_0x93f3('0x27')](_0x54ad0d[_0x93f3('0x28')],qs[_0x93f3('0x29')](_0x3b9ae0['query']['fields']));_0x56905f[_0x93f3('0x2a')]=_0x56905f[_0x93f3('0x2a')]['length']?_0x56905f[_0x93f3('0x2a')]:_0x54ad0d['model'];_0x56905f[_0x93f3('0x40')]=qs[_0x93f3('0x41')](_0x3b9ae0[_0x93f3('0x22')][_0x93f3('0x41')]);_0x56905f['where']=qs[_0x93f3('0x26')](_[_0x93f3('0x4f')](_0x3b9ae0['query'],_0x54ad0d[_0x93f3('0x26')]));if(_0x3b9ae0['query'][_0x93f3('0x42')]){_0x56905f['where']=_['merge'](_0x56905f[_0x93f3('0x1f')],{'$or':_['map'](_0x56905f[_0x93f3('0x2a')],function(_0x3d1f98){var _0x2f5656={};_0x2f5656[_0x3d1f98]={'$like':'%'+_0x3b9ae0['query'][_0x93f3('0x42')]+'%'};return _0x2f5656;})});}_0x56905f=_['merge']({},_0x56905f,_0x3b9ae0[_0x93f3('0x2e')]);return _0x9ef088[_0x93f3('0x78')](_0x56905f);}})[_0x93f3('0xf')](function(_0x393e16){if(_0x393e16){_0x5972db=_0x393e16[_0x93f3('0x2b')];if(!_0x3b9ae0[_0x93f3('0x22')][_0x93f3('0x3e')](_0x93f3('0x3f'))){_0x56905f[_0x93f3('0xd')]=qs[_0x93f3('0xd')](_0x3b9ae0[_0x93f3('0x22')][_0x93f3('0xd')]);_0x56905f[_0x93f3('0xb')]=qs[_0x93f3('0xb')](_0x3b9ae0['query']['offset']);}return _0x9ef088[_0x93f3('0x78')](_0x56905f);}})[_0x93f3('0xf')](function(_0x2e36c5){if(_0x2e36c5){return _0x2e36c5?{'count':_0x5972db,'rows':_0x2e36c5}:null;}})[_0x93f3('0xf')](respondWithResult(_0x2eab42,null))['catch'](handleError(_0x2eab42,null));};
\ No newline at end of file
index 51e03d1..ff54442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3299=['hook','exports','events','../../mysqldb','OpenchannelQueue','save','update','emit','hasOwnProperty'];(function(_0x39de39,_0xc93702){var _0x5137a2=function(_0x3cf31e){while(--_0x3cf31e){_0x39de39['push'](_0x39de39['shift']());}};_0x5137a2(++_0xc93702);}(_0x3299,0x18e));var _0x9329=function(_0x196548,_0x2bc492){_0x196548=_0x196548-0x0;var _0x47e2d2=_0x3299[_0x196548];return _0x47e2d2;};'use strict';var EventEmitter=require(_0x9329('0x0'));var OpenchannelQueue=require(_0x9329('0x1'))['db'][_0x9329('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x9329('0x3'),'afterUpdate':_0x9329('0x4'),'afterDestroy':'remove'};function emitEvent(_0x578db9){return function(_0x349cf0,_0x306292,_0x463ac8){OpenchannelQueueEvents[_0x9329('0x5')](_0x578db9+':'+_0x349cf0['id'],_0x349cf0);OpenchannelQueueEvents['emit'](_0x578db9,_0x349cf0);_0x463ac8(null);};}for(var e in events){if(events[_0x9329('0x6')](e)){var event=events[e];OpenchannelQueue[_0x9329('0x7')](e,emitEvent(event));}}module[_0x9329('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x44c1=['remove','emit','hasOwnProperty','hook','exports','events','OpenchannelQueue','setMaxListeners','save','update'];(function(_0x201490,_0x235e70){var _0x1479df=function(_0xb018ba){while(--_0xb018ba){_0x201490['push'](_0x201490['shift']());}};_0x1479df(++_0x235e70);}(_0x44c1,0x1a9));var _0x144c=function(_0x5de8bf,_0x24e115){_0x5de8bf=_0x5de8bf-0x0;var _0x2be3e3=_0x44c1[_0x5de8bf];return _0x2be3e3;};'use strict';var EventEmitter=require(_0x144c('0x0'));var OpenchannelQueue=require('../../mysqldb')['db'][_0x144c('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x144c('0x2')](0x0);var events={'afterCreate':_0x144c('0x3'),'afterUpdate':_0x144c('0x4'),'afterDestroy':_0x144c('0x5')};function emitEvent(_0x4e4bd8){return function(_0x4566c5,_0xd92341,_0xbcebf4){OpenchannelQueueEvents[_0x144c('0x6')](_0x4e4bd8+':'+_0x4566c5['id'],_0x4566c5);OpenchannelQueueEvents[_0x144c('0x6')](_0x4e4bd8,_0x4566c5);_0xbcebf4(null);};}for(var e in events){if(events[_0x144c('0x7')](e)){var event=events[e];OpenchannelQueue[_0x144c('0x8')](e,emitEvent(event));}}module[_0x144c('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
index 6531ba0..4d5369e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55af=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','openchannel_queues','util'];(function(_0x3cf8f1,_0x5d3d4d){var _0x260bb2=function(_0x429791){while(--_0x429791){_0x3cf8f1['push'](_0x3cf8f1['shift']());}};_0x260bb2(++_0x5d3d4d);}(_0x55af,0xb3));var _0xf55a=function(_0xefec37,_0xdd679){_0xefec37=_0xefec37-0x0;var _0x5a6c6d=_0x55af[_0xefec37];return _0x5a6c6d;};'use strict';var _=require('lodash');var util=require(_0xf55a('0x0'));var logger=require(_0xf55a('0x1'))(_0xf55a('0x2'));var moment=require(_0xf55a('0x3'));var BPromise=require(_0xf55a('0x4'));var rp=require(_0xf55a('0x5'));var fs=require('fs');var path=require(_0xf55a('0x6'));var rimraf=require(_0xf55a('0x7'));var config=require(_0xf55a('0x8'));var attributes=require('./openchannelQueue.attributes');module[_0xf55a('0x9')]=function(_0x5c66e4,_0x261526){return _0x5c66e4[_0xf55a('0xa')]('OpenchannelQueue',attributes,{'tableName':_0xf55a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c69=['bluebird','request-promise','path','../../config/environment','./openchannelQueue.attributes','exports','define','lodash','util','api','moment'];(function(_0x126006,_0x29d087){var _0x4df414=function(_0xf90add){while(--_0xf90add){_0x126006['push'](_0x126006['shift']());}};_0x4df414(++_0x29d087);}(_0x3c69,0x167));var _0x93c6=function(_0x2002b3,_0x11e91c){_0x2002b3=_0x2002b3-0x0;var _0x2756f0=_0x3c69[_0x2002b3];return _0x2756f0;};'use strict';var _=require(_0x93c6('0x0'));var util=require(_0x93c6('0x1'));var logger=require('../../config/logger')(_0x93c6('0x2'));var moment=require(_0x93c6('0x3'));var BPromise=require(_0x93c6('0x4'));var rp=require(_0x93c6('0x5'));var fs=require('fs');var path=require(_0x93c6('0x6'));var rimraf=require('rimraf');var config=require(_0x93c6('0x7'));var attributes=require(_0x93c6('0x8'));module[_0x93c6('0x9')]=function(_0x48c28d,_0x202d72){return _0x48c28d[_0x93c6('0xa')]('OpenchannelQueue',attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 61e0c95..78c8224 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea1d=['OpenchannelQueue,\x20%s,\x20%s','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','map','include','model','then','find','ShowOpenchannelQueue','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','info','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x1c1784,_0x5e3ad5){var _0x356e09=function(_0x43edd3){while(--_0x43edd3){_0x1c1784['push'](_0x1c1784['shift']());}};_0x356e09(++_0x5e3ad5);}(_0xea1d,0x145));var _0xdea1=function(_0xaa821e,_0x547d14){_0xaa821e=_0xaa821e-0x0;var _0x5bb85b=_0xea1d[_0xaa821e];return _0x5bb85b;};'use strict';var _=require(_0xdea1('0x0'));var util=require(_0xdea1('0x1'));var moment=require(_0xdea1('0x2'));var BPromise=require('bluebird');var rs=require(_0xdea1('0x3'));var fs=require('fs');var Redis=require(_0xdea1('0x4'));var db=require(_0xdea1('0x5'))['db'];var utils=require(_0xdea1('0x6'));var logger=require('../../config/logger')(_0xdea1('0x7'));var config=require(_0xdea1('0x8'));var jayson=require(_0xdea1('0x9'));var client=jayson[_0xdea1('0xa')][_0xdea1('0xb')]({'port':0x232a});config[_0xdea1('0xc')]=_[_0xdea1('0xd')](config[_0xdea1('0xc')],{'host':_0xdea1('0xe'),'port':0x18eb});var socket=require(_0xdea1('0xf'))(new Redis(config[_0xdea1('0xc')]));require(_0xdea1('0x10'))[_0xdea1('0x11')](socket);function respondWithRpcPromise(_0x5f79fe,_0x22b8e8,_0x130b53){return new BPromise(function(_0x1519ee,_0x5f28b4){return client[_0xdea1('0x12')](_0x5f79fe,_0x130b53)['then'](function(_0x4bcf92){logger[_0xdea1('0x13')]('OpenchannelQueue,\x20%s,\x20%s',_0x22b8e8,_0xdea1('0x14'));logger[_0xdea1('0x15')](_0xdea1('0x16'),_0x22b8e8,_0xdea1('0x14'),JSON[_0xdea1('0x17')](_0x4bcf92));if(_0x4bcf92['error']){if(_0x4bcf92[_0xdea1('0x18')][_0xdea1('0x19')]===0x1f4){logger[_0xdea1('0x18')]('OpenchannelQueue,\x20%s,\x20%s',_0x22b8e8,_0x4bcf92[_0xdea1('0x18')][_0xdea1('0x1a')]);return _0x5f28b4(_0x4bcf92['error']['message']);}logger[_0xdea1('0x18')](_0xdea1('0x1b'),_0x22b8e8,_0x4bcf92[_0xdea1('0x18')][_0xdea1('0x1a')]);return _0x1519ee(_0x4bcf92[_0xdea1('0x18')]['message']);}else{logger[_0xdea1('0x13')](_0xdea1('0x1b'),_0x22b8e8,_0xdea1('0x14'));_0x1519ee(_0x4bcf92[_0xdea1('0x1c')][_0xdea1('0x1a')]);}})[_0xdea1('0x1d')](function(_0x128d8e){logger[_0xdea1('0x18')](_0xdea1('0x1b'),_0x22b8e8,_0x128d8e);_0x5f28b4(_0x128d8e);});});}exports[_0xdea1('0x1e')]=function(_0x506a79){var _0x59618c=this;return new Promise(function(_0x36dcea,_0x16a8ce){return db[_0xdea1('0x1f')][_0xdea1('0x20')]({'raw':_0x506a79[_0xdea1('0x21')]?_0x506a79[_0xdea1('0x21')][_0xdea1('0x22')]===undefined?!![]:![]:!![],'where':_0x506a79[_0xdea1('0x21')]?_0x506a79[_0xdea1('0x21')][_0xdea1('0x23')]||null:null,'attributes':_0x506a79[_0xdea1('0x21')]?_0x506a79[_0xdea1('0x21')][_0xdea1('0x24')]||null:null,'limit':_0x506a79['options']?_0x506a79['options'][_0xdea1('0x25')]||null:null,'include':_0x506a79[_0xdea1('0x21')]?_0x506a79[_0xdea1('0x21')]['include']?_[_0xdea1('0x26')](_0x506a79[_0xdea1('0x21')][_0xdea1('0x27')],function(_0x127d9f){return{'model':db[_0x127d9f[_0xdea1('0x28')]],'as':_0x127d9f['as'],'attributes':_0x127d9f['attributes'],'include':_0x127d9f[_0xdea1('0x27')]?_['map'](_0x127d9f[_0xdea1('0x27')],function(_0x24156c){return{'model':db[_0x24156c[_0xdea1('0x28')]],'as':_0x24156c['as'],'attributes':_0x24156c['attributes'],'include':_0x24156c[_0xdea1('0x27')]?_['map'](_0x24156c['include'],function(_0x481915){return{'model':db[_0x481915[_0xdea1('0x28')]],'as':_0x481915['as'],'attributes':_0x481915['attributes']};}):[]};}):[]};}):[]:[]})[_0xdea1('0x29')](function(_0x1fb9ab){logger[_0xdea1('0x13')](_0xdea1('0x1e'),_0x506a79);logger[_0xdea1('0x15')](_0xdea1('0x1e'),_0x506a79,JSON[_0xdea1('0x17')](_0x1fb9ab));_0x36dcea(_0x1fb9ab);})[_0xdea1('0x1d')](function(_0x4b4cd6){logger[_0xdea1('0x18')]('GetOpenchannelQueue',_0x4b4cd6['message'],_0x506a79);_0x16a8ce(_0x59618c[_0xdea1('0x18')](0x1f4,_0x4b4cd6[_0xdea1('0x1a')]));});});};exports['ShowOpenchannelQueue']=function(_0x48d401){var _0x177d1d=this;return new Promise(function(_0xdf0994,_0x498b7e){return db[_0xdea1('0x1f')][_0xdea1('0x2a')]({'raw':_0x48d401[_0xdea1('0x21')]?_0x48d401[_0xdea1('0x21')][_0xdea1('0x22')]===undefined?!![]:![]:!![],'where':_0x48d401[_0xdea1('0x21')]?_0x48d401[_0xdea1('0x21')][_0xdea1('0x23')]||null:null,'attributes':_0x48d401[_0xdea1('0x21')]?_0x48d401[_0xdea1('0x21')]['attributes']||null:null,'include':_0x48d401[_0xdea1('0x21')]?_0x48d401[_0xdea1('0x21')][_0xdea1('0x27')]?_[_0xdea1('0x26')](_0x48d401['options'][_0xdea1('0x27')],function(_0x3b33f6){return{'model':db[_0x3b33f6[_0xdea1('0x28')]],'as':_0x3b33f6['as'],'attributes':_0x3b33f6[_0xdea1('0x24')],'include':_0x3b33f6[_0xdea1('0x27')]?_[_0xdea1('0x26')](_0x3b33f6[_0xdea1('0x27')],function(_0x41b194){return{'model':db[_0x41b194[_0xdea1('0x28')]],'as':_0x41b194['as'],'attributes':_0x41b194[_0xdea1('0x24')],'include':_0x41b194[_0xdea1('0x27')]?_['map'](_0x41b194[_0xdea1('0x27')],function(_0x43c65d){return{'model':db[_0x43c65d[_0xdea1('0x28')]],'as':_0x43c65d['as'],'attributes':_0x43c65d[_0xdea1('0x24')]};}):[]};}):[]};}):[]:[]})[_0xdea1('0x29')](function(_0x3592af){logger[_0xdea1('0x13')]('ShowOpenchannelQueue',_0x48d401);logger[_0xdea1('0x15')]('ShowOpenchannelQueue',_0x48d401,JSON['stringify'](_0x3592af));_0xdf0994(_0x3592af);})['catch'](function(_0x489f10){logger[_0xdea1('0x18')](_0xdea1('0x2b'),_0x489f10[_0xdea1('0x1a')],_0x48d401);_0x498b7e(_0x177d1d[_0xdea1('0x18')](0x1f4,_0x489f10[_0xdea1('0x1a')]));});});};
\ No newline at end of file
+var _0x1181=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./openchannelQueue.socket','then','info','OpenchannelQueue,\x20%s,\x20%s','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','findAll','options','raw','where','limit','include','map','model','GetOpenchannelQueue','ShowOpenchannelQueue','OpenchannelQueue','find','attributes','lodash','util','moment','bluebird','ioredis'];(function(_0x39cbd7,_0x91ffe2){var _0x44ce24=function(_0x3c71d1){while(--_0x3c71d1){_0x39cbd7['push'](_0x39cbd7['shift']());}};_0x44ce24(++_0x91ffe2);}(_0x1181,0xe5));var _0x1118=function(_0x2ddfd9,_0x5877d0){_0x2ddfd9=_0x2ddfd9-0x0;var _0x2668f0=_0x1181[_0x2ddfd9];return _0x2668f0;};'use strict';var _=require(_0x1118('0x0'));var util=require(_0x1118('0x1'));var moment=require(_0x1118('0x2'));var BPromise=require(_0x1118('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1118('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1118('0x5'));var logger=require(_0x1118('0x6'))(_0x1118('0x7'));var config=require(_0x1118('0x8'));var jayson=require(_0x1118('0x9'));var client=jayson[_0x1118('0xa')]['http']({'port':0x232a});config[_0x1118('0xb')]=_['defaults'](config[_0x1118('0xb')],{'host':_0x1118('0xc'),'port':0x18eb});var socket=require(_0x1118('0xd'))(new Redis(config[_0x1118('0xb')]));require(_0x1118('0xe'))['register'](socket);function respondWithRpcPromise(_0x21276e,_0x4e0343,_0x3f191e){return new BPromise(function(_0x3c5028,_0x5a4200){return client['request'](_0x21276e,_0x3f191e)[_0x1118('0xf')](function(_0x42e0c2){logger[_0x1118('0x10')](_0x1118('0x11'),_0x4e0343,'request\x20sent');logger[_0x1118('0x12')](_0x1118('0x13'),_0x4e0343,_0x1118('0x14'),JSON[_0x1118('0x15')](_0x42e0c2));if(_0x42e0c2[_0x1118('0x16')]){if(_0x42e0c2[_0x1118('0x16')]['code']===0x1f4){logger[_0x1118('0x16')](_0x1118('0x11'),_0x4e0343,_0x42e0c2[_0x1118('0x16')][_0x1118('0x17')]);return _0x5a4200(_0x42e0c2[_0x1118('0x16')][_0x1118('0x17')]);}logger[_0x1118('0x16')](_0x1118('0x11'),_0x4e0343,_0x42e0c2['error'][_0x1118('0x17')]);return _0x3c5028(_0x42e0c2[_0x1118('0x16')]['message']);}else{logger[_0x1118('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x4e0343,_0x1118('0x14'));_0x3c5028(_0x42e0c2[_0x1118('0x18')][_0x1118('0x17')]);}})[_0x1118('0x19')](function(_0x13a197){logger['error'](_0x1118('0x11'),_0x4e0343,_0x13a197);_0x5a4200(_0x13a197);});});}exports['GetOpenchannelQueue']=function(_0x351dae){var _0x3a2c7a=this;return new Promise(function(_0x2cfd96,_0x4fe694){return db['OpenchannelQueue'][_0x1118('0x1a')]({'raw':_0x351dae[_0x1118('0x1b')]?_0x351dae[_0x1118('0x1b')][_0x1118('0x1c')]===undefined?!![]:![]:!![],'where':_0x351dae['options']?_0x351dae[_0x1118('0x1b')][_0x1118('0x1d')]||null:null,'attributes':_0x351dae['options']?_0x351dae[_0x1118('0x1b')]['attributes']||null:null,'limit':_0x351dae[_0x1118('0x1b')]?_0x351dae[_0x1118('0x1b')][_0x1118('0x1e')]||null:null,'include':_0x351dae[_0x1118('0x1b')]?_0x351dae[_0x1118('0x1b')][_0x1118('0x1f')]?_[_0x1118('0x20')](_0x351dae['options']['include'],function(_0x1f6588){return{'model':db[_0x1f6588[_0x1118('0x21')]],'as':_0x1f6588['as'],'attributes':_0x1f6588['attributes'],'include':_0x1f6588[_0x1118('0x1f')]?_[_0x1118('0x20')](_0x1f6588[_0x1118('0x1f')],function(_0x7450df){return{'model':db[_0x7450df[_0x1118('0x21')]],'as':_0x7450df['as'],'attributes':_0x7450df['attributes'],'include':_0x7450df[_0x1118('0x1f')]?_['map'](_0x7450df[_0x1118('0x1f')],function(_0x1f367e){return{'model':db[_0x1f367e['model']],'as':_0x1f367e['as'],'attributes':_0x1f367e['attributes']};}):[]};}):[]};}):[]:[]})[_0x1118('0xf')](function(_0x5ad0f6){logger[_0x1118('0x10')]('GetOpenchannelQueue',_0x351dae);logger[_0x1118('0x12')](_0x1118('0x22'),_0x351dae,JSON[_0x1118('0x15')](_0x5ad0f6));_0x2cfd96(_0x5ad0f6);})['catch'](function(_0x149e4f){logger['error'](_0x1118('0x22'),_0x149e4f['message'],_0x351dae);_0x4fe694(_0x3a2c7a[_0x1118('0x16')](0x1f4,_0x149e4f['message']));});});};exports[_0x1118('0x23')]=function(_0xca5b71){var _0x1ddac1=this;return new Promise(function(_0x59f486,_0x457fd6){return db[_0x1118('0x24')][_0x1118('0x25')]({'raw':_0xca5b71[_0x1118('0x1b')]?_0xca5b71['options'][_0x1118('0x1c')]===undefined?!![]:![]:!![],'where':_0xca5b71[_0x1118('0x1b')]?_0xca5b71[_0x1118('0x1b')][_0x1118('0x1d')]||null:null,'attributes':_0xca5b71[_0x1118('0x1b')]?_0xca5b71['options'][_0x1118('0x26')]||null:null,'include':_0xca5b71[_0x1118('0x1b')]?_0xca5b71[_0x1118('0x1b')][_0x1118('0x1f')]?_[_0x1118('0x20')](_0xca5b71['options'][_0x1118('0x1f')],function(_0x1c9122){return{'model':db[_0x1c9122[_0x1118('0x21')]],'as':_0x1c9122['as'],'attributes':_0x1c9122['attributes'],'include':_0x1c9122[_0x1118('0x1f')]?_['map'](_0x1c9122['include'],function(_0x3caecc){return{'model':db[_0x3caecc[_0x1118('0x21')]],'as':_0x3caecc['as'],'attributes':_0x3caecc[_0x1118('0x26')],'include':_0x3caecc[_0x1118('0x1f')]?_[_0x1118('0x20')](_0x3caecc[_0x1118('0x1f')],function(_0x12b27f){return{'model':db[_0x12b27f[_0x1118('0x21')]],'as':_0x12b27f['as'],'attributes':_0x12b27f['attributes']};}):[]};}):[]};}):[]:[]})[_0x1118('0xf')](function(_0x28c20a){logger[_0x1118('0x10')]('ShowOpenchannelQueue',_0xca5b71);logger[_0x1118('0x12')](_0x1118('0x23'),_0xca5b71,JSON[_0x1118('0x15')](_0x28c20a));_0x59f486(_0x28c20a);})[_0x1118('0x19')](function(_0x2206bc){logger[_0x1118('0x16')](_0x1118('0x23'),_0x2206bc[_0x1118('0x17')],_0xca5b71);_0x457fd6(_0x1ddac1[_0x1118('0x16')](0x1f4,_0x2206bc[_0x1118('0x17')]));});});};
\ No newline at end of file
index 0446706..eb5305a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdba1=['register','openchannelQueue:','./openchannelQueue.events','save','remove','update','emit'];(function(_0x4cae35,_0x1f7f2f){var _0x199bc4=function(_0x3deb5c){while(--_0x3deb5c){_0x4cae35['push'](_0x4cae35['shift']());}};_0x199bc4(++_0x1f7f2f);}(_0xdba1,0xe9));var _0x1dba=function(_0x3e8c05,_0x407623){_0x3e8c05=_0x3e8c05-0x0;var _0x39f671=_0xdba1[_0x3e8c05];return _0x39f671;};'use strict';var OpenchannelQueueEvents=require(_0x1dba('0x0'));var events=[_0x1dba('0x1'),_0x1dba('0x2'),_0x1dba('0x3')];function createListener(_0x1de280,_0x4117af){return function(_0x7e74ff){_0x4117af[_0x1dba('0x4')](_0x1de280,_0x7e74ff);};}function removeListener(_0xe2e17b,_0x216fc4){return function(){OpenchannelQueueEvents['removeListener'](_0xe2e17b,_0x216fc4);};}exports[_0x1dba('0x5')]=function(_0x2bdcc4){for(var _0x328a08=0x0,_0x1a3b43=events['length'];_0x328a08<_0x1a3b43;_0x328a08++){var _0x4bd16d=events[_0x328a08];var _0x421264=createListener(_0x1dba('0x6')+_0x4bd16d,_0x2bdcc4);OpenchannelQueueEvents['on'](_0x4bd16d,_0x421264);}};
\ No newline at end of file
+var _0xe07e=['emit','removeListener','register','length','openchannelQueue:','./openchannelQueue.events','save','remove'];(function(_0x1d2b88,_0x25dc35){var _0x211775=function(_0x38a432){while(--_0x38a432){_0x1d2b88['push'](_0x1d2b88['shift']());}};_0x211775(++_0x25dc35);}(_0xe07e,0x75));var _0xee07=function(_0x32729c,_0xf5afd8){_0x32729c=_0x32729c-0x0;var _0x482cfd=_0xe07e[_0x32729c];return _0x482cfd;};'use strict';var OpenchannelQueueEvents=require(_0xee07('0x0'));var events=[_0xee07('0x1'),_0xee07('0x2'),'update'];function createListener(_0x4c8e36,_0x5a2f23){return function(_0x2c69f6){_0x5a2f23[_0xee07('0x3')](_0x4c8e36,_0x2c69f6);};}function removeListener(_0x167e20,_0x379476){return function(){OpenchannelQueueEvents[_0xee07('0x4')](_0x167e20,_0x379476);};}exports[_0xee07('0x5')]=function(_0x51d434){for(var _0x4e78af=0x0,_0x544a0f=events[_0xee07('0x6')];_0x4e78af<_0x544a0f;_0x4e78af++){var _0xe8d64d=events[_0x4e78af];var _0x47b941=createListener(_0xee07('0x7')+_0xe8d64d,_0x51d434);OpenchannelQueueEvents['on'](_0xe8d64d,_0x47b941);}};
\ No newline at end of file
index 3e13a67..904b1ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5694=['put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../config/environment','./openchannelQueueReport.controller','get','index','/describe','isAuthenticated','describe','show','create'];(function(_0x3ec0dd,_0x3a5e67){var _0x2818c7=function(_0x1f8166){while(--_0x1f8166){_0x3ec0dd['push'](_0x3ec0dd['shift']());}};_0x2818c7(++_0x3a5e67);}(_0x5694,0x10a));var _0x4569=function(_0x234018,_0x4d12b2){_0x234018=_0x234018-0x0;var _0x91c124=_0x5694[_0x234018];return _0x91c124;};'use strict';var multer=require(_0x4569('0x0'));var util=require(_0x4569('0x1'));var path=require('path');var timeout=require(_0x4569('0x2'));var express=require('express');var router=express[_0x4569('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4569('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x4569('0x5'));var controller=require(_0x4569('0x6'));router[_0x4569('0x7')]('/',auth['isAuthenticated'](),controller[_0x4569('0x8')]);router[_0x4569('0x7')](_0x4569('0x9'),auth[_0x4569('0xa')](),controller[_0x4569('0xb')]);router[_0x4569('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x4569('0xc')]);router['post']('/',auth[_0x4569('0xa')](),controller[_0x4569('0xd')]);router[_0x4569('0xe')](_0x4569('0xf'),auth[_0x4569('0xa')](),controller[_0x4569('0x10')]);router[_0x4569('0x11')](_0x4569('0xf'),auth[_0x4569('0xa')](),controller[_0x4569('0x12')]);module[_0x4569('0x13')]=router;
\ No newline at end of file
+var _0xf0dc=['delete','destroy','path','express','Router','fs-extra','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put'];(function(_0x16121b,_0x3cf212){var _0x312661=function(_0x58fbf3){while(--_0x58fbf3){_0x16121b['push'](_0x16121b['shift']());}};_0x312661(++_0x3cf212);}(_0xf0dc,0xdf));var _0xcf0d=function(_0x273f00,_0x199efd){_0x273f00=_0x273f00-0x0;var _0x13199d=_0xf0dc[_0x273f00];return _0x13199d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcf0d('0x0'));var timeout=require('connect-timeout');var express=require(_0xcf0d('0x1'));var router=express[_0xcf0d('0x2')]();var fs_extra=require(_0xcf0d('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xcf0d('0x4'));var controller=require(_0xcf0d('0x5'));router[_0xcf0d('0x6')]('/',auth[_0xcf0d('0x7')](),controller[_0xcf0d('0x8')]);router[_0xcf0d('0x6')]('/describe',auth[_0xcf0d('0x7')](),controller[_0xcf0d('0x9')]);router[_0xcf0d('0x6')](_0xcf0d('0xa'),auth['isAuthenticated'](),controller[_0xcf0d('0xb')]);router[_0xcf0d('0xc')]('/',auth[_0xcf0d('0x7')](),controller[_0xcf0d('0xd')]);router[_0xcf0d('0xe')](_0xcf0d('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xcf0d('0xf')](_0xcf0d('0xa'),auth[_0xcf0d('0x7')](),controller[_0xcf0d('0x10')]);module['exports']=router;
\ No newline at end of file
index cf710b8..c51bc33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3923=['moment','sequelize','exports','STRING','DATE'];(function(_0x4e0c15,_0x5e8399){var _0x1403b3=function(_0x4281eb){while(--_0x4281eb){_0x4e0c15['push'](_0x4e0c15['shift']());}};_0x1403b3(++_0x5e8399);}(_0x3923,0x1e0));var _0x3392=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x3923[_0xa464c9];return _0x3d73c4;};'use strict';var moment=require(_0x3392('0x0'));var Sequelize=require(_0x3392('0x1'));module[_0x3392('0x2')]={'uniqueid':{'type':Sequelize[_0x3392('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x3392('0x4')]},'leaveAt':{'type':Sequelize[_0x3392('0x4')]},'acceptAt':{'type':Sequelize[_0x3392('0x4')]},'exitAt':{'type':Sequelize[_0x3392('0x4')]},'reason':{'type':Sequelize[_0x3392('0x3')]}};
\ No newline at end of file
+var _0xb155=['moment','STRING'];(function(_0x5b0bc7,_0x132ec5){var _0x157f71=function(_0x1c9a86){while(--_0x1c9a86){_0x5b0bc7['push'](_0x5b0bc7['shift']());}};_0x157f71(++_0x132ec5);}(_0xb155,0x186));var _0x5b15=function(_0x367a3d,_0x452717){_0x367a3d=_0x367a3d-0x0;var _0x460539=_0xb155[_0x367a3d];return _0x460539;};'use strict';var moment=require(_0x5b15('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x5b15('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x5b15('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x5b15('0x1')]}};
\ No newline at end of file
index 0ad154f..b5d3096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d2d=['offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','OpenchannelQueueReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count'];(function(_0x3a6e85,_0x388c42){var _0xb1f143=function(_0x22e250){while(--_0x22e250){_0x3a6e85['push'](_0x3a6e85['shift']());}};_0xb1f143(++_0x388c42);}(_0x4d2d,0x7b));var _0xd4d2=function(_0x3c62ef,_0x4bb6ab){_0x3c62ef=_0x3c62ef-0x0;var _0x4d44f1=_0x4d2d[_0x3c62ef];return _0x4d44f1;};'use strict';var emlformat=require(_0xd4d2('0x0'));var rimraf=require(_0xd4d2('0x1'));var zipdir=require(_0xd4d2('0x2'));var jsonpatch=require(_0xd4d2('0x3'));var rp=require(_0xd4d2('0x4'));var moment=require(_0xd4d2('0x5'));var BPromise=require(_0xd4d2('0x6'));var Mustache=require(_0xd4d2('0x7'));var util=require(_0xd4d2('0x8'));var path=require(_0xd4d2('0x9'));var sox=require(_0xd4d2('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd4d2('0xb'));var _=require(_0xd4d2('0xc'));var squel=require('squel');var crypto=require(_0xd4d2('0xd'));var jsforce=require(_0xd4d2('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xd4d2('0xf'));var querystring=require(_0xd4d2('0x10'));var Papa=require(_0xd4d2('0x11'));var Redis=require('ioredis');var authService=require(_0xd4d2('0x12'));var qs=require(_0xd4d2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd4d2('0x14'));var logger=require(_0xd4d2('0x15'))('api');var utils=require(_0xd4d2('0x16'));var config=require(_0xd4d2('0x17'));var licenseUtil=require(_0xd4d2('0x18'));var db=require(_0xd4d2('0x19'))['db'];function respondWithStatusCode(_0x2b51e3,_0x31f9e6){_0x31f9e6=_0x31f9e6||0xcc;return function(_0x4372fb){if(_0x4372fb){return _0x2b51e3[_0xd4d2('0x1a')](_0x31f9e6);}return _0x2b51e3[_0xd4d2('0x1b')](_0x31f9e6)[_0xd4d2('0x1c')]();};}function respondWithResult(_0x5c91f8,_0xbb5e01){_0xbb5e01=_0xbb5e01||0xc8;return function(_0x50de40){if(_0x50de40){return _0x5c91f8[_0xd4d2('0x1b')](_0xbb5e01)[_0xd4d2('0x1d')](_0x50de40);}};}function respondWithFilteredResult(_0x334094,_0x3876ab){return function(_0x4e85a1){if(_0x4e85a1){var _0x50b22d=typeof _0x3876ab['offset']===_0xd4d2('0x1e')&&typeof _0x3876ab[_0xd4d2('0x1f')]==='undefined';var _0x3d6535=_0x4e85a1[_0xd4d2('0x20')];var _0x6d6b64=_0x50b22d?0x0:_0x3876ab[_0xd4d2('0x21')];var _0x363d02=_0x50b22d?_0x4e85a1['count']:_0x3876ab[_0xd4d2('0x21')]+_0x3876ab[_0xd4d2('0x1f')];var _0x10400c;if(_0x363d02>=_0x3d6535){_0x363d02=_0x3d6535;_0x10400c=0xc8;}else{_0x10400c=0xce;}_0x334094[_0xd4d2('0x1b')](_0x10400c);return _0x334094['set'](_0xd4d2('0x22'),_0x6d6b64+'-'+_0x363d02+'/'+_0x3d6535)[_0xd4d2('0x1d')](_0x4e85a1);}return null;};}function patchUpdates(_0x2f0230){return function(_0x224f8b){try{jsonpatch[_0xd4d2('0x23')](_0x224f8b,_0x2f0230,!![]);}catch(_0x51382d){return BPromise[_0xd4d2('0x24')](_0x51382d);}return _0x224f8b[_0xd4d2('0x25')]();};}function saveUpdates(_0x37afb9,_0x4b3c0a){return function(_0x2891ff){if(_0x2891ff){return _0x2891ff[_0xd4d2('0x26')](_0x37afb9)[_0xd4d2('0x27')](function(_0x2fbf7d){return _0x2fbf7d;});}return null;};}function removeEntity(_0x568a44,_0x3425da){return function(_0x45bf76){if(_0x45bf76){return _0x45bf76[_0xd4d2('0x28')]()['then'](function(){_0x568a44[_0xd4d2('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ae093,_0x599ecb){return function(_0x4ffcb9){if(!_0x4ffcb9){_0x4ae093[_0xd4d2('0x1a')](0x194);}return _0x4ffcb9;};}function handleError(_0x422ba6,_0x4a7804){_0x4a7804=_0x4a7804||0x1f4;return function(_0x48ad42){logger[_0xd4d2('0x29')](_0x48ad42[_0xd4d2('0x2a')]);if(_0x48ad42[_0xd4d2('0x2b')]){delete _0x48ad42[_0xd4d2('0x2b')];}_0x422ba6[_0xd4d2('0x1b')](_0x4a7804)[_0xd4d2('0x2c')](_0x48ad42);};}exports['index']=function(_0x19c032,_0x5ee3da){var _0xa51ffe={},_0x39760e={},_0x3dc6e1={'count':0x0,'rows':[]};var _0x4e7ba8=_[_0xd4d2('0x2d')](db[_0xd4d2('0x2e')][_0xd4d2('0x2f')],function(_0x5cf0ad){return{'name':_0x5cf0ad['fieldName'],'type':_0x5cf0ad[_0xd4d2('0x30')][_0xd4d2('0x31')]};});_0x39760e[_0xd4d2('0x32')]=_['map'](_0x4e7ba8,'name');_0x39760e[_0xd4d2('0x33')]=_[_0xd4d2('0x34')](_0x19c032[_0xd4d2('0x33')]);_0x39760e[_0xd4d2('0x35')]=_[_0xd4d2('0x36')](_0x39760e[_0xd4d2('0x32')],_0x39760e[_0xd4d2('0x33')]);_0xa51ffe[_0xd4d2('0x37')]=_[_0xd4d2('0x36')](_0x39760e['model'],qs[_0xd4d2('0x38')](_0x19c032['query'][_0xd4d2('0x38')]));_0xa51ffe['attributes']=_0xa51ffe[_0xd4d2('0x37')][_0xd4d2('0x39')]?_0xa51ffe['attributes']:_0x39760e[_0xd4d2('0x32')];if(!_0x19c032[_0xd4d2('0x33')][_0xd4d2('0x3a')](_0xd4d2('0x3b'))){_0xa51ffe['limit']=qs[_0xd4d2('0x1f')](_0x19c032[_0xd4d2('0x33')][_0xd4d2('0x1f')]);_0xa51ffe[_0xd4d2('0x21')]=qs[_0xd4d2('0x21')](_0x19c032[_0xd4d2('0x33')][_0xd4d2('0x21')]);}_0xa51ffe[_0xd4d2('0x3c')]=qs[_0xd4d2('0x3d')](_0x19c032['query'][_0xd4d2('0x3d')]);_0xa51ffe['where']=qs[_0xd4d2('0x35')](_[_0xd4d2('0x3e')](_0x19c032[_0xd4d2('0x33')],_0x39760e[_0xd4d2('0x35')]),_0x4e7ba8);if(_0x19c032['query'][_0xd4d2('0x3f')]){_0xa51ffe[_0xd4d2('0x40')]=_[_0xd4d2('0x41')](_0xa51ffe[_0xd4d2('0x40')],{'$or':_['map'](_0x4e7ba8,function(_0x45f3d3){if(_0x45f3d3['type']!==_0xd4d2('0x42')){var _0x3ec34c={};_0x3ec34c[_0x45f3d3[_0xd4d2('0x2b')]]={'$like':'%'+_0x19c032[_0xd4d2('0x33')]['filter']+'%'};return _0x3ec34c;}})});}_0xa51ffe=_[_0xd4d2('0x41')]({},_0xa51ffe,_0x19c032[_0xd4d2('0x43')]);var _0x169826={'where':_0xa51ffe[_0xd4d2('0x40')]};return db[_0xd4d2('0x2e')][_0xd4d2('0x20')](_0x169826)['then'](function(_0x2aaa3b){_0x3dc6e1[_0xd4d2('0x20')]=_0x2aaa3b;if(_0x19c032[_0xd4d2('0x33')][_0xd4d2('0x44')]){_0xa51ffe[_0xd4d2('0x45')]=[{'all':!![]}];}return db['OpenchannelQueueReport']['findAll'](_0xa51ffe);})[_0xd4d2('0x27')](function(_0x33b90b){_0x3dc6e1[_0xd4d2('0x46')]=_0x33b90b;return _0x3dc6e1;})[_0xd4d2('0x27')](respondWithFilteredResult(_0x5ee3da,_0xa51ffe))[_0xd4d2('0x47')](handleError(_0x5ee3da,null));};exports[_0xd4d2('0x48')]=function(_0xb5c3f0,_0x55962a){var _0x45bd4f={'raw':!![],'where':{'id':_0xb5c3f0[_0xd4d2('0x49')]['id']}},_0x25d5e4={};_0x25d5e4[_0xd4d2('0x32')]=_[_0xd4d2('0x34')](db['OpenchannelQueueReport']['rawAttributes']);_0x25d5e4['query']=_[_0xd4d2('0x34')](_0xb5c3f0[_0xd4d2('0x33')]);_0x25d5e4[_0xd4d2('0x35')]=_['intersection'](_0x25d5e4['model'],_0x25d5e4[_0xd4d2('0x33')]);_0x45bd4f['attributes']=_[_0xd4d2('0x36')](_0x25d5e4['model'],qs[_0xd4d2('0x38')](_0xb5c3f0[_0xd4d2('0x33')][_0xd4d2('0x38')]));_0x45bd4f['attributes']=_0x45bd4f['attributes']['length']?_0x45bd4f[_0xd4d2('0x37')]:_0x25d5e4[_0xd4d2('0x32')];if(_0xb5c3f0[_0xd4d2('0x33')][_0xd4d2('0x44')]){_0x45bd4f['include']=[{'all':!![]}];}_0x45bd4f=_[_0xd4d2('0x41')]({},_0x45bd4f,_0xb5c3f0[_0xd4d2('0x43')]);return db[_0xd4d2('0x2e')]['find'](_0x45bd4f)[_0xd4d2('0x27')](handleEntityNotFound(_0x55962a,null))['then'](respondWithResult(_0x55962a,null))[_0xd4d2('0x47')](handleError(_0x55962a,null));};exports['create']=function(_0x388f2c,_0x574781){return db[_0xd4d2('0x2e')][_0xd4d2('0x4a')](_0x388f2c[_0xd4d2('0x4b')],{})[_0xd4d2('0x27')](respondWithResult(_0x574781,0xc9))[_0xd4d2('0x47')](handleError(_0x574781,null));};exports[_0xd4d2('0x26')]=function(_0x2cd218,_0x23c7c1){if(_0x2cd218[_0xd4d2('0x4b')]['id']){delete _0x2cd218[_0xd4d2('0x4b')]['id'];}return db[_0xd4d2('0x2e')][_0xd4d2('0x4c')]({'where':{'id':_0x2cd218[_0xd4d2('0x49')]['id']}})[_0xd4d2('0x27')](handleEntityNotFound(_0x23c7c1,null))[_0xd4d2('0x27')](saveUpdates(_0x2cd218['body'],null))[_0xd4d2('0x27')](respondWithResult(_0x23c7c1,null))[_0xd4d2('0x47')](handleError(_0x23c7c1,null));};exports[_0xd4d2('0x28')]=function(_0x2af5ad,_0x3ec4bd){return db[_0xd4d2('0x2e')]['find']({'where':{'id':_0x2af5ad['params']['id']}})['then'](handleEntityNotFound(_0x3ec4bd,null))[_0xd4d2('0x27')](removeEntity(_0x3ec4bd,null))['catch'](handleError(_0x3ec4bd,null));};exports[_0xd4d2('0x4d')]=function(_0x4d49ca,_0x4f6147){return db[_0xd4d2('0x2e')][_0xd4d2('0x4d')]()[_0xd4d2('0x27')](respondWithResult(_0x4f6147,null))['catch'](handleError(_0x4f6147,null));};
\ No newline at end of file
+var _0x472f=['rows','catch','show','params','keys','include','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','map','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','OpenchannelQueueReport','includeAll','findAll'];(function(_0x538049,_0x1d9715){var _0x395460=function(_0x42d463){while(--_0x42d463){_0x538049['push'](_0x538049['shift']());}};_0x395460(++_0x1d9715);}(_0x472f,0x13a));var _0xf472=function(_0x48a044,_0x59c59c){_0x48a044=_0x48a044-0x0;var _0x2ebb55=_0x472f[_0x48a044];return _0x2ebb55;};'use strict';var emlformat=require(_0xf472('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf472('0x1'));var jsonpatch=require(_0xf472('0x2'));var rp=require('request-promise');var moment=require(_0xf472('0x3'));var BPromise=require(_0xf472('0x4'));var Mustache=require(_0xf472('0x5'));var util=require('util');var path=require(_0xf472('0x6'));var sox=require('sox');var csv=require(_0xf472('0x7'));var ejs=require(_0xf472('0x8'));var fs=require('fs');var fs_extra=require(_0xf472('0x9'));var _=require(_0xf472('0xa'));var squel=require(_0xf472('0xb'));var crypto=require('crypto');var jsforce=require(_0xf472('0xc'));var deskjs=require(_0xf472('0xd'));var toCsv=require(_0xf472('0x7'));var querystring=require(_0xf472('0xe'));var Papa=require(_0xf472('0xf'));var Redis=require(_0xf472('0x10'));var authService=require(_0xf472('0x11'));var qs=require(_0xf472('0x12'));var as=require(_0xf472('0x13'));var hardwareService=require(_0xf472('0x14'));var logger=require(_0xf472('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xf472('0x16'));var licenseUtil=require(_0xf472('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5ecc2a,_0x426659){_0x426659=_0x426659||0xcc;return function(_0x4763f5){if(_0x4763f5){return _0x5ecc2a[_0xf472('0x18')](_0x426659);}return _0x5ecc2a[_0xf472('0x19')](_0x426659)['end']();};}function respondWithResult(_0x1533f0,_0x2a68e8){_0x2a68e8=_0x2a68e8||0xc8;return function(_0x56e469){if(_0x56e469){return _0x1533f0[_0xf472('0x19')](_0x2a68e8)['json'](_0x56e469);}};}function respondWithFilteredResult(_0x3fb6c9,_0x55cc0b){return function(_0x2d7b51){if(_0x2d7b51){var _0x4b0a92=typeof _0x55cc0b[_0xf472('0x1a')]===_0xf472('0x1b')&&typeof _0x55cc0b[_0xf472('0x1c')]===_0xf472('0x1b');var _0x48234c=_0x2d7b51[_0xf472('0x1d')];var _0x272590=_0x4b0a92?0x0:_0x55cc0b[_0xf472('0x1a')];var _0x1d6768=_0x4b0a92?_0x2d7b51[_0xf472('0x1d')]:_0x55cc0b[_0xf472('0x1a')]+_0x55cc0b[_0xf472('0x1c')];var _0x56dbda;if(_0x1d6768>=_0x48234c){_0x1d6768=_0x48234c;_0x56dbda=0xc8;}else{_0x56dbda=0xce;}_0x3fb6c9[_0xf472('0x19')](_0x56dbda);return _0x3fb6c9[_0xf472('0x1e')](_0xf472('0x1f'),_0x272590+'-'+_0x1d6768+'/'+_0x48234c)[_0xf472('0x20')](_0x2d7b51);}return null;};}function patchUpdates(_0x35bc36){return function(_0x122317){try{jsonpatch[_0xf472('0x21')](_0x122317,_0x35bc36,!![]);}catch(_0x257d5c){return BPromise[_0xf472('0x22')](_0x257d5c);}return _0x122317[_0xf472('0x23')]();};}function saveUpdates(_0x36caa5,_0x5709e6){return function(_0x3b0c6f){if(_0x3b0c6f){return _0x3b0c6f[_0xf472('0x24')](_0x36caa5)[_0xf472('0x25')](function(_0x1b18d7){return _0x1b18d7;});}return null;};}function removeEntity(_0x42f296,_0x45e82f){return function(_0x545b16){if(_0x545b16){return _0x545b16[_0xf472('0x26')]()['then'](function(){_0x42f296[_0xf472('0x19')](0xcc)[_0xf472('0x27')]();});}};}function handleEntityNotFound(_0x93b7d2,_0x1e1927){return function(_0x1bd9fd){if(!_0x1bd9fd){_0x93b7d2[_0xf472('0x18')](0x194);}return _0x1bd9fd;};}function handleError(_0x3b3564,_0x3b40b6){_0x3b40b6=_0x3b40b6||0x1f4;return function(_0x454450){logger[_0xf472('0x28')](_0x454450[_0xf472('0x29')]);if(_0x454450[_0xf472('0x2a')]){delete _0x454450[_0xf472('0x2a')];}_0x3b3564['status'](_0x3b40b6)['send'](_0x454450);};}exports['index']=function(_0x489cb4,_0x417cc6){var _0x42264a={},_0x333df0={},_0x57df1c={'count':0x0,'rows':[]};var _0x463342=_[_0xf472('0x2b')](db['OpenchannelQueueReport'][_0xf472('0x2c')],function(_0x56f3dc){return{'name':_0x56f3dc['fieldName'],'type':_0x56f3dc['type'][_0xf472('0x2d')]};});_0x333df0[_0xf472('0x2e')]=_['map'](_0x463342,_0xf472('0x2a'));_0x333df0[_0xf472('0x2f')]=_['keys'](_0x489cb4[_0xf472('0x2f')]);_0x333df0[_0xf472('0x30')]=_[_0xf472('0x31')](_0x333df0['model'],_0x333df0[_0xf472('0x2f')]);_0x42264a[_0xf472('0x32')]=_['intersection'](_0x333df0[_0xf472('0x2e')],qs[_0xf472('0x33')](_0x489cb4['query']['fields']));_0x42264a[_0xf472('0x32')]=_0x42264a[_0xf472('0x32')][_0xf472('0x34')]?_0x42264a[_0xf472('0x32')]:_0x333df0['model'];if(!_0x489cb4[_0xf472('0x2f')][_0xf472('0x35')]('nolimit')){_0x42264a['limit']=qs[_0xf472('0x1c')](_0x489cb4[_0xf472('0x2f')]['limit']);_0x42264a[_0xf472('0x1a')]=qs[_0xf472('0x1a')](_0x489cb4[_0xf472('0x2f')][_0xf472('0x1a')]);}_0x42264a[_0xf472('0x36')]=qs[_0xf472('0x37')](_0x489cb4[_0xf472('0x2f')][_0xf472('0x37')]);_0x42264a[_0xf472('0x38')]=qs[_0xf472('0x30')](_[_0xf472('0x39')](_0x489cb4[_0xf472('0x2f')],_0x333df0[_0xf472('0x30')]),_0x463342);if(_0x489cb4[_0xf472('0x2f')][_0xf472('0x3a')]){_0x42264a[_0xf472('0x38')]=_[_0xf472('0x3b')](_0x42264a[_0xf472('0x38')],{'$or':_['map'](_0x463342,function(_0x2f5e20){if(_0x2f5e20[_0xf472('0x3c')]!==_0xf472('0x3d')){var _0x27f8b0={};_0x27f8b0[_0x2f5e20['name']]={'$like':'%'+_0x489cb4['query']['filter']+'%'};return _0x27f8b0;}})});}_0x42264a=_[_0xf472('0x3b')]({},_0x42264a,_0x489cb4[_0xf472('0x3e')]);var _0x29e5b2={'where':_0x42264a[_0xf472('0x38')]};return db[_0xf472('0x3f')][_0xf472('0x1d')](_0x29e5b2)[_0xf472('0x25')](function(_0x42ad73){_0x57df1c[_0xf472('0x1d')]=_0x42ad73;if(_0x489cb4[_0xf472('0x2f')][_0xf472('0x40')]){_0x42264a['include']=[{'all':!![]}];}return db[_0xf472('0x3f')][_0xf472('0x41')](_0x42264a);})[_0xf472('0x25')](function(_0x57663e){_0x57df1c[_0xf472('0x42')]=_0x57663e;return _0x57df1c;})[_0xf472('0x25')](respondWithFilteredResult(_0x417cc6,_0x42264a))[_0xf472('0x43')](handleError(_0x417cc6,null));};exports[_0xf472('0x44')]=function(_0x3bddad,_0x5a0287){var _0x820c13={'raw':!![],'where':{'id':_0x3bddad[_0xf472('0x45')]['id']}},_0x3c234e={};_0x3c234e[_0xf472('0x2e')]=_[_0xf472('0x46')](db[_0xf472('0x3f')][_0xf472('0x2c')]);_0x3c234e['query']=_[_0xf472('0x46')](_0x3bddad[_0xf472('0x2f')]);_0x3c234e[_0xf472('0x30')]=_[_0xf472('0x31')](_0x3c234e[_0xf472('0x2e')],_0x3c234e['query']);_0x820c13['attributes']=_[_0xf472('0x31')](_0x3c234e['model'],qs['fields'](_0x3bddad[_0xf472('0x2f')]['fields']));_0x820c13[_0xf472('0x32')]=_0x820c13[_0xf472('0x32')][_0xf472('0x34')]?_0x820c13[_0xf472('0x32')]:_0x3c234e[_0xf472('0x2e')];if(_0x3bddad[_0xf472('0x2f')][_0xf472('0x40')]){_0x820c13[_0xf472('0x47')]=[{'all':!![]}];}_0x820c13=_[_0xf472('0x3b')]({},_0x820c13,_0x3bddad[_0xf472('0x3e')]);return db[_0xf472('0x3f')][_0xf472('0x48')](_0x820c13)['then'](handleEntityNotFound(_0x5a0287,null))[_0xf472('0x25')](respondWithResult(_0x5a0287,null))[_0xf472('0x43')](handleError(_0x5a0287,null));};exports['create']=function(_0x300083,_0x580899){return db[_0xf472('0x3f')][_0xf472('0x49')](_0x300083[_0xf472('0x4a')],{})[_0xf472('0x25')](respondWithResult(_0x580899,0xc9))[_0xf472('0x43')](handleError(_0x580899,null));};exports[_0xf472('0x24')]=function(_0x1a1ee5,_0x28192d){if(_0x1a1ee5['body']['id']){delete _0x1a1ee5[_0xf472('0x4a')]['id'];}return db['OpenchannelQueueReport']['find']({'where':{'id':_0x1a1ee5['params']['id']}})[_0xf472('0x25')](handleEntityNotFound(_0x28192d,null))[_0xf472('0x25')](saveUpdates(_0x1a1ee5[_0xf472('0x4a')],null))[_0xf472('0x25')](respondWithResult(_0x28192d,null))[_0xf472('0x43')](handleError(_0x28192d,null));};exports['destroy']=function(_0x370698,_0x17c71b){return db[_0xf472('0x3f')][_0xf472('0x48')]({'where':{'id':_0x370698[_0xf472('0x45')]['id']}})['then'](handleEntityNotFound(_0x17c71b,null))['then'](removeEntity(_0x17c71b,null))[_0xf472('0x43')](handleError(_0x17c71b,null));};exports[_0xf472('0x4b')]=function(_0x5cd805,_0x5d46fd){return db[_0xf472('0x3f')]['describe']()[_0xf472('0x25')](respondWithResult(_0x5d46fd,null))[_0xf472('0x43')](handleError(_0x5d46fd,null));};
\ No newline at end of file
index 6b42cec..56ed066 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x40cf44,_0x2934dd){var _0x160f31=function(_0x194c2b){while(--_0x194c2b){_0x40cf44['push'](_0x40cf44['shift']());}};_0x160f31(++_0x2934dd);}(_0x326f,0xd1));var _0xf326=function(_0x36e1e0,_0x48152c){_0x36e1e0=_0x36e1e0-0x0;var _0x18187f=_0x326f[_0x36e1e0];return _0x18187f;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['bluebird','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','../../config/logger','api','moment'];(function(_0x25a582,_0x4fc348){var _0x189c67=function(_0x587f4d){while(--_0x587f4d){_0x25a582['push'](_0x25a582['shift']());}};_0x189c67(++_0x4fc348);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xc4aa[_0x4b369d];return _0x571a98;};'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 090febf..7666c46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbb=['body','raw','where','attributes','limit','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','options','UpdateOpenchannelQueueReport','update'];(function(_0x2bd5cc,_0x40c8ea){var _0x17515a=function(_0x501605){while(--_0x501605){_0x2bd5cc['push'](_0x2bd5cc['shift']());}};_0x17515a(++_0x40c8ea);}(_0xfcbb,0x10d));var _0xbfcb=function(_0xf5c8c3,_0x51b6b5){_0xf5c8c3=_0xf5c8c3-0x0;var _0x52786a=_0xfcbb[_0xf5c8c3];return _0x52786a;};'use strict';var _=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var moment=require(_0xbfcb('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbfcb('0x3'));var db=require(_0xbfcb('0x4'))['db'];var utils=require(_0xbfcb('0x5'));var logger=require(_0xbfcb('0x6'))(_0xbfcb('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbfcb('0x8')][_0xbfcb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8d4e6a,_0x2df839,_0x288ee5){return new BPromise(function(_0x2f875c,_0x49717b){return client['request'](_0x8d4e6a,_0x288ee5)[_0xbfcb('0xa')](function(_0x331173){logger[_0xbfcb('0xb')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x2df839,_0xbfcb('0xc'));logger[_0xbfcb('0xd')](_0xbfcb('0xe'),_0x2df839,_0xbfcb('0xc'),JSON[_0xbfcb('0xf')](_0x331173));if(_0x331173[_0xbfcb('0x10')]){if(_0x331173['error'][_0xbfcb('0x11')]===0x1f4){logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x331173[_0xbfcb('0x10')]['message']);return _0x49717b(_0x331173[_0xbfcb('0x10')]['message']);}logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x331173[_0xbfcb('0x10')][_0xbfcb('0x13')]);return _0x2f875c(_0x331173[_0xbfcb('0x10')][_0xbfcb('0x13')]);}else{logger[_0xbfcb('0xb')](_0xbfcb('0x12'),_0x2df839,_0xbfcb('0xc'));_0x2f875c(_0x331173[_0xbfcb('0x14')][_0xbfcb('0x13')]);}})[_0xbfcb('0x15')](function(_0x26f335){logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x26f335);_0x49717b(_0x26f335);});});}exports[_0xbfcb('0x16')]=function(_0xba1d6){var _0x38689e=this;return new Promise(function(_0x3404aa,_0x46b8d2){return db[_0xbfcb('0x17')][_0xbfcb('0x18')](_0xba1d6['body'],{'raw':_0xba1d6[_0xbfcb('0x19')]?_0xba1d6[_0xbfcb('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xbfcb('0xa')](function(_0x1a7225){logger['info']('CreateOpenchannelQueueReport',_0xba1d6);logger[_0xbfcb('0xd')](_0xbfcb('0x16'),_0xba1d6,JSON[_0xbfcb('0xf')](_0x1a7225));_0x3404aa(_0x1a7225);})[_0xbfcb('0x15')](function(_0x1c5924){logger['error'](_0xbfcb('0x16'),_0x1c5924[_0xbfcb('0x13')],_0xba1d6);_0x46b8d2(_0x38689e[_0xbfcb('0x10')](0x1f4,_0x1c5924[_0xbfcb('0x13')]));});});};exports[_0xbfcb('0x1a')]=function(_0x19616c){var _0x69c8e9=this;return new Promise(function(_0x14e43c,_0x11f6f7){return db[_0xbfcb('0x17')][_0xbfcb('0x1b')](_0x19616c[_0xbfcb('0x1c')],{'raw':_0x19616c[_0xbfcb('0x19')]?_0x19616c[_0xbfcb('0x19')][_0xbfcb('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19616c[_0xbfcb('0x19')]?_0x19616c['options'][_0xbfcb('0x1e')]||null:null,'attributes':_0x19616c[_0xbfcb('0x19')]?_0x19616c['options'][_0xbfcb('0x1f')]||null:null,'limit':_0x19616c[_0xbfcb('0x19')]?_0x19616c[_0xbfcb('0x19')][_0xbfcb('0x20')]||null:null})[_0xbfcb('0xa')](function(_0x3542e9){logger[_0xbfcb('0xb')](_0xbfcb('0x1a'),_0x19616c);logger[_0xbfcb('0xd')](_0xbfcb('0x1a'),_0x19616c,JSON['stringify'](_0x3542e9));_0x14e43c(_0x3542e9);})[_0xbfcb('0x15')](function(_0x3aa3cd){logger[_0xbfcb('0x10')](_0xbfcb('0x1a'),_0x3aa3cd[_0xbfcb('0x13')],_0x19616c);_0x11f6f7(_0x69c8e9[_0xbfcb('0x10')](0x1f4,_0x3aa3cd[_0xbfcb('0x13')]));});});};
\ No newline at end of file
+var _0x1c3d=['OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','update','where','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug'];(function(_0x375765,_0x1ab276){var _0x1eec64=function(_0x5467fd){while(--_0x5467fd){_0x375765['push'](_0x375765['shift']());}};_0x1eec64(++_0x1ab276);}(_0x1c3d,0x1b8));var _0xd1c3=function(_0x5292a9,_0x37f0c5){_0x5292a9=_0x5292a9-0x0;var _0x32ff30=_0x1c3d[_0x5292a9];return _0x32ff30;};'use strict';var _=require('lodash');var util=require(_0xd1c3('0x0'));var moment=require(_0xd1c3('0x1'));var BPromise=require(_0xd1c3('0x2'));var rs=require(_0xd1c3('0x3'));var fs=require('fs');var Redis=require(_0xd1c3('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd1c3('0x5'))(_0xd1c3('0x6'));var config=require(_0xd1c3('0x7'));var jayson=require(_0xd1c3('0x8'));var client=jayson[_0xd1c3('0x9')][_0xd1c3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5adcb7,_0x398766,_0x420ab0){return new BPromise(function(_0x5db2f0,_0x1afc71){return client[_0xd1c3('0xb')](_0x5adcb7,_0x420ab0)[_0xd1c3('0xc')](function(_0x18556c){logger[_0xd1c3('0xd')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x398766,'request\x20sent');logger[_0xd1c3('0xe')](_0xd1c3('0xf'),_0x398766,_0xd1c3('0x10'),JSON[_0xd1c3('0x11')](_0x18556c));if(_0x18556c[_0xd1c3('0x12')]){if(_0x18556c[_0xd1c3('0x12')][_0xd1c3('0x13')]===0x1f4){logger[_0xd1c3('0x12')](_0xd1c3('0x14'),_0x398766,_0x18556c['error'][_0xd1c3('0x15')]);return _0x1afc71(_0x18556c['error']['message']);}logger[_0xd1c3('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x398766,_0x18556c[_0xd1c3('0x12')][_0xd1c3('0x15')]);return _0x5db2f0(_0x18556c[_0xd1c3('0x12')]['message']);}else{logger[_0xd1c3('0xd')](_0xd1c3('0x14'),_0x398766,_0xd1c3('0x10'));_0x5db2f0(_0x18556c[_0xd1c3('0x16')][_0xd1c3('0x15')]);}})[_0xd1c3('0x17')](function(_0x586fa7){logger[_0xd1c3('0x12')](_0xd1c3('0x14'),_0x398766,_0x586fa7);_0x1afc71(_0x586fa7);});});}exports[_0xd1c3('0x18')]=function(_0x5d26c2){var _0x53a5e1=this;return new Promise(function(_0x14f6cb,_0x3a1a74){return db[_0xd1c3('0x19')][_0xd1c3('0x1a')](_0x5d26c2[_0xd1c3('0x1b')],{'raw':_0x5d26c2['options']?_0x5d26c2[_0xd1c3('0x1c')][_0xd1c3('0x1d')]===undefined?!![]:![]:!![]})[_0xd1c3('0xc')](function(_0x588f4e){logger['info'](_0xd1c3('0x18'),_0x5d26c2);logger[_0xd1c3('0xe')]('CreateOpenchannelQueueReport',_0x5d26c2,JSON['stringify'](_0x588f4e));_0x14f6cb(_0x588f4e);})[_0xd1c3('0x17')](function(_0xc45d5d){logger[_0xd1c3('0x12')](_0xd1c3('0x18'),_0xc45d5d[_0xd1c3('0x15')],_0x5d26c2);_0x3a1a74(_0x53a5e1[_0xd1c3('0x12')](0x1f4,_0xc45d5d[_0xd1c3('0x15')]));});});};exports[_0xd1c3('0x1e')]=function(_0x33c380){var _0x218ef1=this;return new Promise(function(_0x5a9d5d,_0x56091a){return db[_0xd1c3('0x19')][_0xd1c3('0x1f')](_0x33c380[_0xd1c3('0x1b')],{'raw':_0x33c380[_0xd1c3('0x1c')]?_0x33c380['options'][_0xd1c3('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33c380[_0xd1c3('0x1c')]?_0x33c380['options'][_0xd1c3('0x20')]||null:null,'attributes':_0x33c380[_0xd1c3('0x1c')]?_0x33c380[_0xd1c3('0x1c')][_0xd1c3('0x21')]||null:null,'limit':_0x33c380[_0xd1c3('0x1c')]?_0x33c380[_0xd1c3('0x1c')][_0xd1c3('0x22')]||null:null})['then'](function(_0x57309e){logger[_0xd1c3('0xd')](_0xd1c3('0x1e'),_0x33c380);logger[_0xd1c3('0xe')](_0xd1c3('0x1e'),_0x33c380,JSON[_0xd1c3('0x11')](_0x57309e));_0x5a9d5d(_0x57309e);})['catch'](function(_0x331bad){logger[_0xd1c3('0x12')]('UpdateOpenchannelQueueReport',_0x331bad[_0xd1c3('0x15')],_0x33c380);_0x56091a(_0x218ef1['error'](0x1f4,_0x331bad[_0xd1c3('0x15')]));});});};
\ No newline at end of file
index a02d323..9cfc2e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7257=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','delete','destroy','exports','multer','util'];(function(_0x3b9c7c,_0x7aff62){var _0x187907=function(_0x48cfd7){while(--_0x48cfd7){_0x3b9c7c['push'](_0x3b9c7c['shift']());}};_0x187907(++_0x7aff62);}(_0x7257,0xe4));var _0x7725=function(_0x43f552,_0x42808c){_0x43f552=_0x43f552-0x0;var _0x17911b=_0x7257[_0x43f552];return _0x17911b;};'use strict';var multer=require(_0x7725('0x0'));var util=require(_0x7725('0x1'));var path=require(_0x7725('0x2'));var timeout=require(_0x7725('0x3'));var express=require(_0x7725('0x4'));var router=express[_0x7725('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7725('0x6'));var interaction=require(_0x7725('0x7'));var config=require(_0x7725('0x8'));var controller=require(_0x7725('0x9'));router[_0x7725('0xa')]('/',auth[_0x7725('0xb')](),controller[_0x7725('0xc')]);router[_0x7725('0xa')](_0x7725('0xd'),auth['isAuthenticated'](),controller[_0x7725('0xe')]);router[_0x7725('0xa')](_0x7725('0xf'),auth[_0x7725('0xb')](),controller[_0x7725('0x10')]);router[_0x7725('0x11')]('/',auth[_0x7725('0xb')](),controller['create']);router[_0x7725('0x12')]('/:id',auth[_0x7725('0xb')](),controller[_0x7725('0x13')]);router[_0x7725('0x14')]('/:id',auth[_0x7725('0xb')](),controller[_0x7725('0x15')]);module[_0x7725('0x16')]=router;
\ No newline at end of file
+var _0x05ff=['Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','util','connect-timeout','express'];(function(_0x7b3b61,_0x5ba5d6){var _0x18b642=function(_0x301bb8){while(--_0x301bb8){_0x7b3b61['push'](_0x7b3b61['shift']());}};_0x18b642(++_0x5ba5d6);}(_0x05ff,0x11a));var _0xf05f=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x05ff[_0x2b10c6];return _0x3789d2;};'use strict';var multer=require('multer');var util=require(_0xf05f('0x0'));var path=require('path');var timeout=require(_0xf05f('0x1'));var express=require(_0xf05f('0x2'));var router=express[_0xf05f('0x3')]();var fs_extra=require(_0xf05f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf05f('0x5'));var config=require(_0xf05f('0x6'));var controller=require(_0xf05f('0x7'));router[_0xf05f('0x8')]('/',auth[_0xf05f('0x9')](),controller[_0xf05f('0xa')]);router[_0xf05f('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xf05f('0x8')](_0xf05f('0xb'),auth[_0xf05f('0x9')](),controller[_0xf05f('0xc')]);router[_0xf05f('0xd')]('/',auth[_0xf05f('0x9')](),controller[_0xf05f('0xe')]);router[_0xf05f('0xf')](_0xf05f('0xb'),auth[_0xf05f('0x9')](),controller[_0xf05f('0x10')]);router[_0xf05f('0x11')](_0xf05f('0xb'),auth[_0xf05f('0x9')](),controller['destroy']);module[_0xf05f('0x12')]=router;
\ No newline at end of file
index 7bc4a4c..f0ca0ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x39a885,_0x317185){var _0x5e3797=function(_0x1ae361){while(--_0x1ae361){_0x39a885['push'](_0x39a885['shift']());}};_0x5e3797(++_0x317185);}(_0x00bb,0x1d8));var _0xb00b=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x00bb[_0x1e7b16];return _0x37fadc;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x477155,_0x331039){var _0x1d50ba=function(_0x4e4ae9){while(--_0x4e4ae9){_0x477155['push'](_0x477155['shift']());}};_0x1d50ba(++_0x331039);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3ed054,_0x4d4f16){_0x3ed054=_0x3ed054-0x0;var _0x16dd95=_0xcb91[_0x3ed054];return _0x16dd95;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 03bd7d5..0284516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaab6=['reject','save','update','then','destroy','end','error','stack','name','map','OpenchannelTransferReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','find','create','body','params','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','json','apply'];(function(_0x1909e1,_0x53667a){var _0x560761=function(_0x229ab2){while(--_0x229ab2){_0x1909e1['push'](_0x1909e1['shift']());}};_0x560761(++_0x53667a);}(_0xaab6,0x76));var _0x6aab=function(_0x386306,_0x1363c9){_0x386306=_0x386306-0x0;var _0xcb23d=_0xaab6[_0x386306];return _0xcb23d;};'use strict';var emlformat=require(_0x6aab('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6aab('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6aab('0x2'));var moment=require(_0x6aab('0x3'));var BPromise=require(_0x6aab('0x4'));var Mustache=require(_0x6aab('0x5'));var util=require(_0x6aab('0x6'));var path=require('path');var sox=require(_0x6aab('0x7'));var csv=require(_0x6aab('0x8'));var ejs=require(_0x6aab('0x9'));var fs=require('fs');var fs_extra=require(_0x6aab('0xa'));var _=require(_0x6aab('0xb'));var squel=require('squel');var crypto=require(_0x6aab('0xc'));var jsforce=require(_0x6aab('0xd'));var deskjs=require(_0x6aab('0xe'));var toCsv=require(_0x6aab('0x8'));var querystring=require(_0x6aab('0xf'));var Papa=require(_0x6aab('0x10'));var Redis=require('ioredis');var authService=require(_0x6aab('0x11'));var qs=require(_0x6aab('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6aab('0x13'));var logger=require(_0x6aab('0x14'))('api');var utils=require(_0x6aab('0x15'));var config=require(_0x6aab('0x16'));var licenseUtil=require(_0x6aab('0x17'));var db=require(_0x6aab('0x18'))['db'];function respondWithStatusCode(_0x2bb536,_0x1c100e){_0x1c100e=_0x1c100e||0xcc;return function(_0x395671){if(_0x395671){return _0x2bb536[_0x6aab('0x19')](_0x1c100e);}return _0x2bb536[_0x6aab('0x1a')](_0x1c100e)['end']();};}function respondWithResult(_0x1562a5,_0x3104c3){_0x3104c3=_0x3104c3||0xc8;return function(_0x461452){if(_0x461452){return _0x1562a5['status'](_0x3104c3)['json'](_0x461452);}};}function respondWithFilteredResult(_0xc661a0,_0x3b0ec1){return function(_0x13ce26){if(_0x13ce26){var _0x540b06=typeof _0x3b0ec1[_0x6aab('0x1b')]===_0x6aab('0x1c')&&typeof _0x3b0ec1['limit']===_0x6aab('0x1c');var _0x2e888c=_0x13ce26[_0x6aab('0x1d')];var _0xe7172a=_0x540b06?0x0:_0x3b0ec1['offset'];var _0x24775e=_0x540b06?_0x13ce26[_0x6aab('0x1d')]:_0x3b0ec1[_0x6aab('0x1b')]+_0x3b0ec1['limit'];var _0x3b5526;if(_0x24775e>=_0x2e888c){_0x24775e=_0x2e888c;_0x3b5526=0xc8;}else{_0x3b5526=0xce;}_0xc661a0[_0x6aab('0x1a')](_0x3b5526);return _0xc661a0['set']('Content-Range',_0xe7172a+'-'+_0x24775e+'/'+_0x2e888c)[_0x6aab('0x1e')](_0x13ce26);}return null;};}function patchUpdates(_0x1b3385){return function(_0x526988){try{jsonpatch[_0x6aab('0x1f')](_0x526988,_0x1b3385,!![]);}catch(_0xe1eca1){return BPromise[_0x6aab('0x20')](_0xe1eca1);}return _0x526988[_0x6aab('0x21')]();};}function saveUpdates(_0x43a259,_0x4fde42){return function(_0x3594aa){if(_0x3594aa){return _0x3594aa[_0x6aab('0x22')](_0x43a259)[_0x6aab('0x23')](function(_0x272d84){return _0x272d84;});}return null;};}function removeEntity(_0x39176c,_0x5d77f8){return function(_0x913ecf){if(_0x913ecf){return _0x913ecf[_0x6aab('0x24')]()['then'](function(){_0x39176c['status'](0xcc)[_0x6aab('0x25')]();});}};}function handleEntityNotFound(_0x2d9452,_0x28fd05){return function(_0x2fa26b){if(!_0x2fa26b){_0x2d9452[_0x6aab('0x19')](0x194);}return _0x2fa26b;};}function handleError(_0x188868,_0x50e983){_0x50e983=_0x50e983||0x1f4;return function(_0x3512b0){logger[_0x6aab('0x26')](_0x3512b0[_0x6aab('0x27')]);if(_0x3512b0[_0x6aab('0x28')]){delete _0x3512b0[_0x6aab('0x28')];}_0x188868[_0x6aab('0x1a')](_0x50e983)['send'](_0x3512b0);};}exports['index']=function(_0x57965a,_0x488211){var _0x3781b4={},_0x504286={},_0x4c26fe={'count':0x0,'rows':[]};var _0x2d3a3c=_[_0x6aab('0x29')](db[_0x6aab('0x2a')][_0x6aab('0x2b')],function(_0x2e2103){return{'name':_0x2e2103[_0x6aab('0x2c')],'type':_0x2e2103['type'][_0x6aab('0x2d')]};});_0x504286[_0x6aab('0x2e')]=_[_0x6aab('0x29')](_0x2d3a3c,_0x6aab('0x28'));_0x504286[_0x6aab('0x2f')]=_[_0x6aab('0x30')](_0x57965a[_0x6aab('0x2f')]);_0x504286[_0x6aab('0x31')]=_[_0x6aab('0x32')](_0x504286['model'],_0x504286[_0x6aab('0x2f')]);_0x3781b4['attributes']=_[_0x6aab('0x32')](_0x504286['model'],qs[_0x6aab('0x33')](_0x57965a[_0x6aab('0x2f')][_0x6aab('0x33')]));_0x3781b4[_0x6aab('0x34')]=_0x3781b4[_0x6aab('0x34')][_0x6aab('0x35')]?_0x3781b4['attributes']:_0x504286[_0x6aab('0x2e')];if(!_0x57965a[_0x6aab('0x2f')][_0x6aab('0x36')](_0x6aab('0x37'))){_0x3781b4[_0x6aab('0x38')]=qs['limit'](_0x57965a[_0x6aab('0x2f')][_0x6aab('0x38')]);_0x3781b4['offset']=qs['offset'](_0x57965a[_0x6aab('0x2f')][_0x6aab('0x1b')]);}_0x3781b4[_0x6aab('0x39')]=qs[_0x6aab('0x3a')](_0x57965a[_0x6aab('0x2f')][_0x6aab('0x3a')]);_0x3781b4[_0x6aab('0x3b')]=qs['filters'](_[_0x6aab('0x3c')](_0x57965a['query'],_0x504286[_0x6aab('0x31')]),_0x2d3a3c);if(_0x57965a['query']['filter']){_0x3781b4[_0x6aab('0x3b')]=_[_0x6aab('0x3d')](_0x3781b4['where'],{'$or':_[_0x6aab('0x29')](_0x2d3a3c,function(_0x302e0b){if(_0x302e0b['type']!==_0x6aab('0x3e')){var _0x1763da={};_0x1763da[_0x302e0b[_0x6aab('0x28')]]={'$like':'%'+_0x57965a[_0x6aab('0x2f')][_0x6aab('0x3f')]+'%'};return _0x1763da;}})});}_0x3781b4=_[_0x6aab('0x3d')]({},_0x3781b4,_0x57965a[_0x6aab('0x40')]);var _0x338291={'where':_0x3781b4[_0x6aab('0x3b')]};return db[_0x6aab('0x2a')][_0x6aab('0x1d')](_0x338291)[_0x6aab('0x23')](function(_0x436250){_0x4c26fe[_0x6aab('0x1d')]=_0x436250;if(_0x57965a[_0x6aab('0x2f')][_0x6aab('0x41')]){_0x3781b4[_0x6aab('0x42')]=[{'all':!![]}];}return db[_0x6aab('0x2a')]['findAll'](_0x3781b4);})[_0x6aab('0x23')](function(_0x108943){_0x4c26fe[_0x6aab('0x43')]=_0x108943;return _0x4c26fe;})['then'](respondWithFilteredResult(_0x488211,_0x3781b4))[_0x6aab('0x44')](handleError(_0x488211,null));};exports[_0x6aab('0x45')]=function(_0x3a4b42,_0x19c621){var _0x1da5c8={'raw':!![],'where':{'id':_0x3a4b42['params']['id']}},_0x12d17f={};_0x12d17f[_0x6aab('0x2e')]=_[_0x6aab('0x30')](db[_0x6aab('0x2a')][_0x6aab('0x2b')]);_0x12d17f[_0x6aab('0x2f')]=_[_0x6aab('0x30')](_0x3a4b42['query']);_0x12d17f[_0x6aab('0x31')]=_[_0x6aab('0x32')](_0x12d17f[_0x6aab('0x2e')],_0x12d17f['query']);_0x1da5c8[_0x6aab('0x34')]=_[_0x6aab('0x32')](_0x12d17f[_0x6aab('0x2e')],qs['fields'](_0x3a4b42[_0x6aab('0x2f')][_0x6aab('0x33')]));_0x1da5c8[_0x6aab('0x34')]=_0x1da5c8['attributes'][_0x6aab('0x35')]?_0x1da5c8[_0x6aab('0x34')]:_0x12d17f[_0x6aab('0x2e')];if(_0x3a4b42[_0x6aab('0x2f')][_0x6aab('0x41')]){_0x1da5c8[_0x6aab('0x42')]=[{'all':!![]}];}_0x1da5c8=_[_0x6aab('0x3d')]({},_0x1da5c8,_0x3a4b42['options']);return db[_0x6aab('0x2a')][_0x6aab('0x46')](_0x1da5c8)[_0x6aab('0x23')](handleEntityNotFound(_0x19c621,null))[_0x6aab('0x23')](respondWithResult(_0x19c621,null))[_0x6aab('0x44')](handleError(_0x19c621,null));};exports[_0x6aab('0x47')]=function(_0x4f47e9,_0x3ac770){return db['OpenchannelTransferReport'][_0x6aab('0x47')](_0x4f47e9[_0x6aab('0x48')],{})['then'](respondWithResult(_0x3ac770,0xc9))[_0x6aab('0x44')](handleError(_0x3ac770,null));};exports['update']=function(_0x31795c,_0x1262b2){if(_0x31795c[_0x6aab('0x48')]['id']){delete _0x31795c['body']['id'];}return db[_0x6aab('0x2a')][_0x6aab('0x46')]({'where':{'id':_0x31795c[_0x6aab('0x49')]['id']}})['then'](handleEntityNotFound(_0x1262b2,null))[_0x6aab('0x23')](saveUpdates(_0x31795c[_0x6aab('0x48')],null))[_0x6aab('0x23')](respondWithResult(_0x1262b2,null))['catch'](handleError(_0x1262b2,null));};exports[_0x6aab('0x24')]=function(_0xadca30,_0x251471){return db[_0x6aab('0x2a')][_0x6aab('0x46')]({'where':{'id':_0xadca30[_0x6aab('0x49')]['id']}})[_0x6aab('0x23')](handleEntityNotFound(_0x251471,null))[_0x6aab('0x23')](removeEntity(_0x251471,null))[_0x6aab('0x44')](handleError(_0x251471,null));};exports['describe']=function(_0x2eed28,_0x27dfdd){return db[_0x6aab('0x2a')][_0x6aab('0x4a')]()[_0x6aab('0x23')](respondWithResult(_0x27dfdd,null))[_0x6aab('0x44')](handleError(_0x27dfdd,null));};
\ No newline at end of file
+var _0x6ef0=['limit','offset','count','set','Content-Range','reject','update','then','destroy','error','name','send','OpenchannelTransferReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','merge','map','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','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','api','../../config/utils','../../mysqldb','sendStatus','status','end','undefined'];(function(_0x3d7906,_0x491cc2){var _0x511fd5=function(_0xf85da5){while(--_0xf85da5){_0x3d7906['push'](_0x3d7906['shift']());}};_0x511fd5(++_0x491cc2);}(_0x6ef0,0x100));var _0x06ef=function(_0x39a757,_0x51e36d){_0x39a757=_0x39a757-0x0;var _0x3df2f=_0x6ef0[_0x39a757];return _0x3df2f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x06ef('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x06ef('0x1'));var rp=require(_0x06ef('0x2'));var moment=require(_0x06ef('0x3'));var BPromise=require(_0x06ef('0x4'));var Mustache=require(_0x06ef('0x5'));var util=require('util');var path=require('path');var sox=require(_0x06ef('0x6'));var csv=require(_0x06ef('0x7'));var ejs=require(_0x06ef('0x8'));var fs=require('fs');var fs_extra=require(_0x06ef('0x9'));var _=require(_0x06ef('0xa'));var squel=require(_0x06ef('0xb'));var crypto=require(_0x06ef('0xc'));var jsforce=require(_0x06ef('0xd'));var deskjs=require(_0x06ef('0xe'));var toCsv=require('to-csv');var querystring=require(_0x06ef('0xf'));var Papa=require('papaparse');var Redis=require(_0x06ef('0x10'));var authService=require(_0x06ef('0x11'));var qs=require(_0x06ef('0x12'));var as=require(_0x06ef('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x06ef('0x14'))(_0x06ef('0x15'));var utils=require(_0x06ef('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x06ef('0x17'))['db'];function respondWithStatusCode(_0x4fbb74,_0x351f4f){_0x351f4f=_0x351f4f||0xcc;return function(_0x426429){if(_0x426429){return _0x4fbb74[_0x06ef('0x18')](_0x351f4f);}return _0x4fbb74[_0x06ef('0x19')](_0x351f4f)[_0x06ef('0x1a')]();};}function respondWithResult(_0x1999a2,_0x17cd19){_0x17cd19=_0x17cd19||0xc8;return function(_0x5b13ef){if(_0x5b13ef){return _0x1999a2[_0x06ef('0x19')](_0x17cd19)['json'](_0x5b13ef);}};}function respondWithFilteredResult(_0x42bdae,_0x21b8ca){return function(_0x1b2d1d){if(_0x1b2d1d){var _0x480dcc=typeof _0x21b8ca['offset']===_0x06ef('0x1b')&&typeof _0x21b8ca[_0x06ef('0x1c')]===_0x06ef('0x1b');var _0x4fc1e9=_0x1b2d1d['count'];var _0x5214e7=_0x480dcc?0x0:_0x21b8ca[_0x06ef('0x1d')];var _0x2341a0=_0x480dcc?_0x1b2d1d[_0x06ef('0x1e')]:_0x21b8ca[_0x06ef('0x1d')]+_0x21b8ca['limit'];var _0x298f11;if(_0x2341a0>=_0x4fc1e9){_0x2341a0=_0x4fc1e9;_0x298f11=0xc8;}else{_0x298f11=0xce;}_0x42bdae[_0x06ef('0x19')](_0x298f11);return _0x42bdae[_0x06ef('0x1f')](_0x06ef('0x20'),_0x5214e7+'-'+_0x2341a0+'/'+_0x4fc1e9)['json'](_0x1b2d1d);}return null;};}function patchUpdates(_0xfd46c4){return function(_0x56329e){try{jsonpatch['apply'](_0x56329e,_0xfd46c4,!![]);}catch(_0x5e469c){return BPromise[_0x06ef('0x21')](_0x5e469c);}return _0x56329e['save']();};}function saveUpdates(_0xb0879c,_0x39cb8a){return function(_0x27ccdb){if(_0x27ccdb){return _0x27ccdb[_0x06ef('0x22')](_0xb0879c)[_0x06ef('0x23')](function(_0x4a78e3){return _0x4a78e3;});}return null;};}function removeEntity(_0x1657d9,_0x4fa14e){return function(_0x37d04f){if(_0x37d04f){return _0x37d04f[_0x06ef('0x24')]()[_0x06ef('0x23')](function(){_0x1657d9[_0x06ef('0x19')](0xcc)[_0x06ef('0x1a')]();});}};}function handleEntityNotFound(_0x263914,_0x412c52){return function(_0x29334f){if(!_0x29334f){_0x263914['sendStatus'](0x194);}return _0x29334f;};}function handleError(_0x2cbfd9,_0x4705ed){_0x4705ed=_0x4705ed||0x1f4;return function(_0x100a8b){logger[_0x06ef('0x25')](_0x100a8b['stack']);if(_0x100a8b['name']){delete _0x100a8b[_0x06ef('0x26')];}_0x2cbfd9['status'](_0x4705ed)[_0x06ef('0x27')](_0x100a8b);};}exports['index']=function(_0x2c8311,_0x47ba5f){var _0x23f179={},_0x17de02={},_0xa7a2d0={'count':0x0,'rows':[]};var _0x15079a=_['map'](db[_0x06ef('0x28')][_0x06ef('0x29')],function(_0x70ad19){return{'name':_0x70ad19[_0x06ef('0x2a')],'type':_0x70ad19[_0x06ef('0x2b')][_0x06ef('0x2c')]};});_0x17de02['model']=_['map'](_0x15079a,_0x06ef('0x26'));_0x17de02[_0x06ef('0x2d')]=_[_0x06ef('0x2e')](_0x2c8311[_0x06ef('0x2d')]);_0x17de02[_0x06ef('0x2f')]=_[_0x06ef('0x30')](_0x17de02['model'],_0x17de02['query']);_0x23f179['attributes']=_['intersection'](_0x17de02[_0x06ef('0x31')],qs[_0x06ef('0x32')](_0x2c8311[_0x06ef('0x2d')][_0x06ef('0x32')]));_0x23f179['attributes']=_0x23f179[_0x06ef('0x33')][_0x06ef('0x34')]?_0x23f179[_0x06ef('0x33')]:_0x17de02[_0x06ef('0x31')];if(!_0x2c8311[_0x06ef('0x2d')][_0x06ef('0x35')]('nolimit')){_0x23f179[_0x06ef('0x1c')]=qs[_0x06ef('0x1c')](_0x2c8311[_0x06ef('0x2d')][_0x06ef('0x1c')]);_0x23f179[_0x06ef('0x1d')]=qs[_0x06ef('0x1d')](_0x2c8311[_0x06ef('0x2d')][_0x06ef('0x1d')]);}_0x23f179[_0x06ef('0x36')]=qs[_0x06ef('0x37')](_0x2c8311['query'][_0x06ef('0x37')]);_0x23f179[_0x06ef('0x38')]=qs[_0x06ef('0x2f')](_['pick'](_0x2c8311[_0x06ef('0x2d')],_0x17de02[_0x06ef('0x2f')]),_0x15079a);if(_0x2c8311[_0x06ef('0x2d')]['filter']){_0x23f179[_0x06ef('0x38')]=_[_0x06ef('0x39')](_0x23f179[_0x06ef('0x38')],{'$or':_[_0x06ef('0x3a')](_0x15079a,function(_0x147ed9){if(_0x147ed9[_0x06ef('0x2b')]!==_0x06ef('0x3b')){var _0x9e4c58={};_0x9e4c58[_0x147ed9[_0x06ef('0x26')]]={'$like':'%'+_0x2c8311[_0x06ef('0x2d')]['filter']+'%'};return _0x9e4c58;}})});}_0x23f179=_[_0x06ef('0x39')]({},_0x23f179,_0x2c8311[_0x06ef('0x3c')]);var _0x25cfee={'where':_0x23f179['where']};return db['OpenchannelTransferReport'][_0x06ef('0x1e')](_0x25cfee)[_0x06ef('0x23')](function(_0x38ff50){_0xa7a2d0[_0x06ef('0x1e')]=_0x38ff50;if(_0x2c8311[_0x06ef('0x2d')]['includeAll']){_0x23f179[_0x06ef('0x3d')]=[{'all':!![]}];}return db[_0x06ef('0x28')][_0x06ef('0x3e')](_0x23f179);})[_0x06ef('0x23')](function(_0x33e110){_0xa7a2d0[_0x06ef('0x3f')]=_0x33e110;return _0xa7a2d0;})['then'](respondWithFilteredResult(_0x47ba5f,_0x23f179))[_0x06ef('0x40')](handleError(_0x47ba5f,null));};exports[_0x06ef('0x41')]=function(_0x2312d9,_0x594397){var _0x5a592b={'raw':!![],'where':{'id':_0x2312d9[_0x06ef('0x42')]['id']}},_0x6a6a5={};_0x6a6a5['model']=_[_0x06ef('0x2e')](db[_0x06ef('0x28')]['rawAttributes']);_0x6a6a5[_0x06ef('0x2d')]=_[_0x06ef('0x2e')](_0x2312d9[_0x06ef('0x2d')]);_0x6a6a5[_0x06ef('0x2f')]=_[_0x06ef('0x30')](_0x6a6a5[_0x06ef('0x31')],_0x6a6a5[_0x06ef('0x2d')]);_0x5a592b['attributes']=_['intersection'](_0x6a6a5[_0x06ef('0x31')],qs[_0x06ef('0x32')](_0x2312d9[_0x06ef('0x2d')][_0x06ef('0x32')]));_0x5a592b[_0x06ef('0x33')]=_0x5a592b[_0x06ef('0x33')][_0x06ef('0x34')]?_0x5a592b['attributes']:_0x6a6a5[_0x06ef('0x31')];if(_0x2312d9[_0x06ef('0x2d')][_0x06ef('0x43')]){_0x5a592b[_0x06ef('0x3d')]=[{'all':!![]}];}_0x5a592b=_[_0x06ef('0x39')]({},_0x5a592b,_0x2312d9[_0x06ef('0x3c')]);return db[_0x06ef('0x28')][_0x06ef('0x44')](_0x5a592b)[_0x06ef('0x23')](handleEntityNotFound(_0x594397,null))[_0x06ef('0x23')](respondWithResult(_0x594397,null))[_0x06ef('0x40')](handleError(_0x594397,null));};exports['create']=function(_0x1716d4,_0x7a77ce){return db['OpenchannelTransferReport'][_0x06ef('0x45')](_0x1716d4[_0x06ef('0x46')],{})[_0x06ef('0x23')](respondWithResult(_0x7a77ce,0xc9))[_0x06ef('0x40')](handleError(_0x7a77ce,null));};exports['update']=function(_0x4d47d0,_0x4b36f6){if(_0x4d47d0['body']['id']){delete _0x4d47d0[_0x06ef('0x46')]['id'];}return db[_0x06ef('0x28')][_0x06ef('0x44')]({'where':{'id':_0x4d47d0[_0x06ef('0x42')]['id']}})[_0x06ef('0x23')](handleEntityNotFound(_0x4b36f6,null))[_0x06ef('0x23')](saveUpdates(_0x4d47d0[_0x06ef('0x46')],null))[_0x06ef('0x23')](respondWithResult(_0x4b36f6,null))[_0x06ef('0x40')](handleError(_0x4b36f6,null));};exports['destroy']=function(_0x1d1c37,_0x5baa60){return db[_0x06ef('0x28')][_0x06ef('0x44')]({'where':{'id':_0x1d1c37['params']['id']}})[_0x06ef('0x23')](handleEntityNotFound(_0x5baa60,null))[_0x06ef('0x23')](removeEntity(_0x5baa60,null))[_0x06ef('0x40')](handleError(_0x5baa60,null));};exports['describe']=function(_0x503a91,_0x3e45e2){return db[_0x06ef('0x28')]['describe']()[_0x06ef('0x23')](respondWithResult(_0x3e45e2,null))[_0x06ef('0x40')](handleError(_0x3e45e2,null));};
\ No newline at end of file
index d8f82a7..4c53740 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdff0=['util','../../config/logger','api','bluebird','path','rimraf','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash'];(function(_0x83cc7b,_0x337a6b){var _0x77e5ab=function(_0xe70954){while(--_0xe70954){_0x83cc7b['push'](_0x83cc7b['shift']());}};_0x77e5ab(++_0x337a6b);}(_0xdff0,0xa7));var _0x0dff=function(_0x5c00c8,_0xa71130){_0x5c00c8=_0x5c00c8-0x0;var _0x396ba4=_0xdff0[_0x5c00c8];return _0x396ba4;};'use strict';var _=require(_0x0dff('0x0'));var util=require(_0x0dff('0x1'));var logger=require(_0x0dff('0x2'))(_0x0dff('0x3'));var moment=require('moment');var BPromise=require(_0x0dff('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0dff('0x5'));var rimraf=require(_0x0dff('0x6'));var config=require('../../config/environment');var attributes=require('./openchannelTransferReport.attributes');module[_0x0dff('0x7')]=function(_0x57099a,_0x57ad90){return _0x57099a[_0x0dff('0x8')](_0x0dff('0x9'),attributes,{'tableName':_0x0dff('0xa'),'paranoid':![],'indexes':[{'name':_0x0dff('0xb'),'fields':[_0x0dff('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd2ca=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util'];(function(_0x141761,_0x564569){var _0x448e31=function(_0x4c6253){while(--_0x4c6253){_0x141761['push'](_0x141761['shift']());}};_0x448e31(++_0x564569);}(_0xd2ca,0xb4));var _0xad2c=function(_0x3a6d3c,_0x10214c){_0x3a6d3c=_0x3a6d3c-0x0;var _0x17021d=_0xd2ca[_0x3a6d3c];return _0x17021d;};'use strict';var _=require(_0xad2c('0x0'));var util=require(_0xad2c('0x1'));var logger=require(_0xad2c('0x2'))('api');var moment=require(_0xad2c('0x3'));var BPromise=require(_0xad2c('0x4'));var rp=require(_0xad2c('0x5'));var fs=require('fs');var path=require(_0xad2c('0x6'));var rimraf=require(_0xad2c('0x7'));var config=require(_0xad2c('0x8'));var attributes=require(_0xad2c('0x9'));module['exports']=function(_0x5c3489,_0x37c68e){return _0x5c3489[_0xad2c('0xa')](_0xad2c('0xb'),attributes,{'tableName':_0xad2c('0xc'),'paranoid':![],'indexes':[{'name':_0xad2c('0xd'),'fields':[_0xad2c('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index b143c5c..4d66da0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce6=['http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client'];(function(_0x512389,_0x53128b){var _0x2e7867=function(_0x465b5a){while(--_0x465b5a){_0x512389['push'](_0x512389['shift']());}};_0x2e7867(++_0x53128b);}(_0x4ce6,0x108));var _0x64ce=function(_0x35ef6b,_0x202c42){_0x35ef6b=_0x35ef6b-0x0;var _0x3ad145=_0x4ce6[_0x35ef6b];return _0x3ad145;};'use strict';var _=require(_0x64ce('0x0'));var util=require('util');var moment=require(_0x64ce('0x1'));var BPromise=require(_0x64ce('0x2'));var rs=require(_0x64ce('0x3'));var fs=require('fs');var Redis=require(_0x64ce('0x4'));var db=require(_0x64ce('0x5'))['db'];var utils=require(_0x64ce('0x6'));var logger=require('../../config/logger')(_0x64ce('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x64ce('0x8')][_0x64ce('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b8f2d,_0x538b74,_0x3c279f){return new BPromise(function(_0x134230,_0x1b253e){return client[_0x64ce('0xa')](_0x5b8f2d,_0x3c279f)[_0x64ce('0xb')](function(_0x135482){logger[_0x64ce('0xc')](_0x64ce('0xd'),_0x538b74,_0x64ce('0xe'));logger['debug'](_0x64ce('0xf'),_0x538b74,_0x64ce('0xe'),JSON[_0x64ce('0x10')](_0x135482));if(_0x135482[_0x64ce('0x11')]){if(_0x135482[_0x64ce('0x11')][_0x64ce('0x12')]===0x1f4){logger[_0x64ce('0x11')](_0x64ce('0xd'),_0x538b74,_0x135482['error'][_0x64ce('0x13')]);return _0x1b253e(_0x135482['error']['message']);}logger[_0x64ce('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x538b74,_0x135482[_0x64ce('0x11')][_0x64ce('0x13')]);return _0x134230(_0x135482[_0x64ce('0x11')][_0x64ce('0x13')]);}else{logger[_0x64ce('0xc')](_0x64ce('0xd'),_0x538b74,_0x64ce('0xe'));_0x134230(_0x135482[_0x64ce('0x14')][_0x64ce('0x13')]);}})['catch'](function(_0x4b49be){logger['error'](_0x64ce('0xd'),_0x538b74,_0x4b49be);_0x1b253e(_0x4b49be);});});}
\ No newline at end of file
+var _0x1354=['message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x1354,0x95));var _0x4135=function(_0x5e76c6,_0xf16290){_0x5e76c6=_0x5e76c6-0x0;var _0x43fb22=_0x1354[_0x5e76c6];return _0x43fb22;};'use strict';var _=require(_0x4135('0x0'));var util=require(_0x4135('0x1'));var moment=require(_0x4135('0x2'));var BPromise=require(_0x4135('0x3'));var rs=require(_0x4135('0x4'));var fs=require('fs');var Redis=require(_0x4135('0x5'));var db=require(_0x4135('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4135('0x7'))(_0x4135('0x8'));var config=require(_0x4135('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4135('0xa')][_0x4135('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5e355d,_0x419ad4,_0x1dcce0){return new BPromise(function(_0x3e7ae3,_0x50ef3f){return client[_0x4135('0xc')](_0x5e355d,_0x1dcce0)['then'](function(_0x365d9b){logger[_0x4135('0xd')](_0x4135('0xe'),_0x419ad4,_0x4135('0xf'));logger['debug'](_0x4135('0x10'),_0x419ad4,'request\x20sent',JSON['stringify'](_0x365d9b));if(_0x365d9b[_0x4135('0x11')]){if(_0x365d9b[_0x4135('0x11')][_0x4135('0x12')]===0x1f4){logger['error'](_0x4135('0xe'),_0x419ad4,_0x365d9b[_0x4135('0x11')][_0x4135('0x13')]);return _0x50ef3f(_0x365d9b[_0x4135('0x11')][_0x4135('0x13')]);}logger[_0x4135('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x419ad4,_0x365d9b['error'][_0x4135('0x13')]);return _0x3e7ae3(_0x365d9b[_0x4135('0x11')][_0x4135('0x13')]);}else{logger[_0x4135('0xd')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x419ad4,_0x4135('0xf'));_0x3e7ae3(_0x365d9b[_0x4135('0x14')]['message']);}})['catch'](function(_0x32b4db){logger['error'](_0x4135('0xe'),_0x419ad4,_0x32b4db);_0x50ef3f(_0x32b4db);});});}
\ No newline at end of file
index 97f6a88..ba4ed76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dc0=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./pause.controller','get','index','/:id','show','post','isAuthenticated','put','update','destroy','exports','multer'];(function(_0x55822d,_0x58b6ea){var _0x39eb7d=function(_0x2c0408){while(--_0x2c0408){_0x55822d['push'](_0x55822d['shift']());}};_0x39eb7d(++_0x58b6ea);}(_0x7dc0,0x10f));var _0x07dc=function(_0x33bcdb,_0x11846b){_0x33bcdb=_0x33bcdb-0x0;var _0x18a9bf=_0x7dc0[_0x33bcdb];return _0x18a9bf;};'use strict';var multer=require(_0x07dc('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x07dc('0x1'));var router=express[_0x07dc('0x2')]();var fs_extra=require(_0x07dc('0x3'));var auth=require(_0x07dc('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x07dc('0x5'));var controller=require(_0x07dc('0x6'));router[_0x07dc('0x7')]('/',auth['isAuthenticated'](),controller[_0x07dc('0x8')]);router[_0x07dc('0x7')](_0x07dc('0x9'),auth['isAuthenticated'](),controller[_0x07dc('0xa')]);router[_0x07dc('0xb')]('/',auth[_0x07dc('0xc')](),controller['create']);router[_0x07dc('0xd')](_0x07dc('0x9'),auth[_0x07dc('0xc')](),controller[_0x07dc('0xe')]);router['delete'](_0x07dc('0x9'),auth[_0x07dc('0xc')](),controller[_0x07dc('0xf')]);module[_0x07dc('0x10')]=router;
\ No newline at end of file
+var _0x7b4b=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','create','put','update'];(function(_0x2cb4b6,_0xbe1953){var _0x32449e=function(_0x4ce91a){while(--_0x4ce91a){_0x2cb4b6['push'](_0x2cb4b6['shift']());}};_0x32449e(++_0xbe1953);}(_0x7b4b,0x141));var _0xb7b4=function(_0x5b34c0,_0x3ad403){_0x5b34c0=_0x5b34c0-0x0;var _0x242bd3=_0x7b4b[_0x5b34c0];return _0x242bd3;};'use strict';var multer=require(_0xb7b4('0x0'));var util=require(_0xb7b4('0x1'));var path=require(_0xb7b4('0x2'));var timeout=require(_0xb7b4('0x3'));var express=require(_0xb7b4('0x4'));var router=express[_0xb7b4('0x5')]();var fs_extra=require(_0xb7b4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xb7b4('0x7'));var config=require(_0xb7b4('0x8'));var controller=require(_0xb7b4('0x9'));router[_0xb7b4('0xa')]('/',auth[_0xb7b4('0xb')](),controller[_0xb7b4('0xc')]);router[_0xb7b4('0xa')](_0xb7b4('0xd'),auth[_0xb7b4('0xb')](),controller[_0xb7b4('0xe')]);router[_0xb7b4('0xf')]('/',auth['isAuthenticated'](),controller[_0xb7b4('0x10')]);router[_0xb7b4('0x11')](_0xb7b4('0xd'),auth[_0xb7b4('0xb')](),controller[_0xb7b4('0x12')]);router['delete']('/:id',auth[_0xb7b4('0xb')](),controller[_0xb7b4('0x13')]);module['exports']=router;
\ No newline at end of file
index b73b568..509776d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4390=['name','sequelize','exports','STRING'];(function(_0x18cbe5,_0x10cc58){var _0x237fc3=function(_0x17eaf6){while(--_0x17eaf6){_0x18cbe5['push'](_0x18cbe5['shift']());}};_0x237fc3(++_0x10cc58);}(_0x4390,0x8d));var _0x0439=function(_0x3a63b8,_0x1792e8){_0x3a63b8=_0x3a63b8-0x0;var _0x35f2c7=_0x4390[_0x3a63b8];return _0x35f2c7;};'use strict';var Sequelize=require(_0x0439('0x0'));module[_0x0439('0x1')]={'name':{'type':Sequelize[_0x0439('0x2')],'unique':_0x0439('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3d07=['sequelize','STRING'];(function(_0x9b78c4,_0x6c4c3b){var _0x379a1c=function(_0x3d7209){while(--_0x3d7209){_0x9b78c4['push'](_0x9b78c4['shift']());}};_0x379a1c(++_0x6c4c3b);}(_0x3d07,0x1e6));var _0x73d0=function(_0x197127,_0x48bbfd){_0x197127=_0x197127-0x0;var _0x558ca6=_0x3d07[_0x197127];return _0x558ca6;};'use strict';var Sequelize=require(_0x73d0('0x0'));module['exports']={'name':{'type':Sequelize[_0x73d0('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x73d0('0x1')]}};
\ No newline at end of file
index 1f7cfae..0852c55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43fe=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','set','Content-Range','json','reject','save','update','then','get','end','error','stack','name','send','index','map','Pause','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','count','includeAll','include','rows','catch','show','params','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Pauses','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x4c6d00,_0x25c874){var _0x2ea68f=function(_0x266b8b){while(--_0x266b8b){_0x4c6d00['push'](_0x4c6d00['shift']());}};_0x2ea68f(++_0x25c874);}(_0x43fe,0x1de));var _0xe43f=function(_0x3897e5,_0x56aca9){_0x3897e5=_0x3897e5-0x0;var _0x340a00=_0x43fe[_0x3897e5];return _0x340a00;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe43f('0x0'));var jsonpatch=require(_0xe43f('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe43f('0x2'));var Mustache=require(_0xe43f('0x3'));var util=require(_0xe43f('0x4'));var path=require(_0xe43f('0x5'));var sox=require(_0xe43f('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe43f('0x7'));var squel=require('squel');var crypto=require(_0xe43f('0x8'));var jsforce=require(_0xe43f('0x9'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe43f('0xa'));var Papa=require(_0xe43f('0xb'));var Redis=require(_0xe43f('0xc'));var authService=require(_0xe43f('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xe43f('0xe'));var hardwareService=require(_0xe43f('0xf'));var logger=require(_0xe43f('0x10'))(_0xe43f('0x11'));var utils=require(_0xe43f('0x12'));var config=require(_0xe43f('0x13'));var licenseUtil=require(_0xe43f('0x14'));var db=require(_0xe43f('0x15'))['db'];function respondWithStatusCode(_0x46f9a1,_0x36a289){_0x36a289=_0x36a289||0xcc;return function(_0x23ba0d){if(_0x23ba0d){return _0x46f9a1[_0xe43f('0x16')](_0x36a289);}return _0x46f9a1['status'](_0x36a289)['end']();};}function respondWithResult(_0x161493,_0x1bc7c2){_0x1bc7c2=_0x1bc7c2||0xc8;return function(_0x1d352b){if(_0x1d352b){return _0x161493[_0xe43f('0x17')](_0x1bc7c2)['json'](_0x1d352b);}};}function respondWithFilteredResult(_0x2d5088,_0x2694b8){return function(_0x1aa002){if(_0x1aa002){var _0x4cf368=typeof _0x2694b8[_0xe43f('0x18')]==='undefined'&&typeof _0x2694b8[_0xe43f('0x19')]===_0xe43f('0x1a');var _0x3cdf30=_0x1aa002['count'];var _0x414a4c=_0x4cf368?0x0:_0x2694b8['offset'];var _0x594e25=_0x4cf368?_0x1aa002['count']:_0x2694b8[_0xe43f('0x18')]+_0x2694b8['limit'];var _0x59c870;if(_0x594e25>=_0x3cdf30){_0x594e25=_0x3cdf30;_0x59c870=0xc8;}else{_0x59c870=0xce;}_0x2d5088[_0xe43f('0x17')](_0x59c870);return _0x2d5088[_0xe43f('0x1b')](_0xe43f('0x1c'),_0x414a4c+'-'+_0x594e25+'/'+_0x3cdf30)[_0xe43f('0x1d')](_0x1aa002);}return null;};}function patchUpdates(_0x16b7d5){return function(_0x36af82){try{jsonpatch['apply'](_0x36af82,_0x16b7d5,!![]);}catch(_0x52c3e0){return BPromise[_0xe43f('0x1e')](_0x52c3e0);}return _0x36af82[_0xe43f('0x1f')]();};}function saveUpdates(_0x2afd4f,_0x546741){return function(_0x1cf58f){if(_0x1cf58f){return _0x1cf58f[_0xe43f('0x20')](_0x2afd4f)[_0xe43f('0x21')](function(_0x169a4d){return _0x169a4d;});}return null;};}function removeEntity(_0x230bd9,_0x3c07d8){return function(_0x3894f3){if(_0x3894f3){return _0x3894f3['destroy']()[_0xe43f('0x21')](function(){var _0x3155ad=_0x3894f3[_0xe43f('0x22')]({'plain':!![]});var _0x366ca1='Pauses';return db['UserProfileResource']['destroy']({'where':{'type':_0x366ca1,'resourceId':_0x3155ad['id']}})[_0xe43f('0x21')](function(){return _0x3894f3;});})['then'](function(){_0x230bd9[_0xe43f('0x17')](0xcc)[_0xe43f('0x23')]();});}};}function handleEntityNotFound(_0x2d97fe,_0x63680a){return function(_0x5f4226){if(!_0x5f4226){_0x2d97fe[_0xe43f('0x16')](0x194);}return _0x5f4226;};}function handleError(_0x44f1fd,_0x14fc8d){_0x14fc8d=_0x14fc8d||0x1f4;return function(_0x2ad4e4){logger[_0xe43f('0x24')](_0x2ad4e4[_0xe43f('0x25')]);if(_0x2ad4e4[_0xe43f('0x26')]){delete _0x2ad4e4[_0xe43f('0x26')];}_0x44f1fd[_0xe43f('0x17')](_0x14fc8d)[_0xe43f('0x27')](_0x2ad4e4);};}exports[_0xe43f('0x28')]=function(_0xef93ec,_0x2acb4d){var _0x1ddd92={},_0x1a22f5={},_0x2a6e98={'count':0x0,'rows':[]};var _0x3bbaa9=_[_0xe43f('0x29')](db[_0xe43f('0x2a')][_0xe43f('0x2b')],function(_0x2b9db0){return{'name':_0x2b9db0[_0xe43f('0x2c')],'type':_0x2b9db0[_0xe43f('0x2d')][_0xe43f('0x2e')]};});_0x1a22f5[_0xe43f('0x2f')]=_[_0xe43f('0x29')](_0x3bbaa9,_0xe43f('0x26'));_0x1a22f5['query']=_[_0xe43f('0x30')](_0xef93ec['query']);_0x1a22f5[_0xe43f('0x31')]=_[_0xe43f('0x32')](_0x1a22f5['model'],_0x1a22f5[_0xe43f('0x33')]);_0x1ddd92[_0xe43f('0x34')]=_[_0xe43f('0x32')](_0x1a22f5[_0xe43f('0x2f')],qs['fields'](_0xef93ec[_0xe43f('0x33')][_0xe43f('0x35')]));_0x1ddd92['attributes']=_0x1ddd92[_0xe43f('0x34')][_0xe43f('0x36')]?_0x1ddd92[_0xe43f('0x34')]:_0x1a22f5[_0xe43f('0x2f')];if(!_0xef93ec['query']['hasOwnProperty'](_0xe43f('0x37'))){_0x1ddd92[_0xe43f('0x19')]=qs['limit'](_0xef93ec[_0xe43f('0x33')][_0xe43f('0x19')]);_0x1ddd92['offset']=qs['offset'](_0xef93ec[_0xe43f('0x33')][_0xe43f('0x18')]);}_0x1ddd92['order']=qs[_0xe43f('0x38')](_0xef93ec[_0xe43f('0x33')][_0xe43f('0x38')]);_0x1ddd92[_0xe43f('0x39')]=qs[_0xe43f('0x31')](_[_0xe43f('0x3a')](_0xef93ec[_0xe43f('0x33')],_0x1a22f5[_0xe43f('0x31')]),_0x3bbaa9);if(_0xef93ec[_0xe43f('0x33')]['filter']){_0x1ddd92['where']=_[_0xe43f('0x3b')](_0x1ddd92[_0xe43f('0x39')],{'$or':_[_0xe43f('0x29')](_0x3bbaa9,function(_0x23b67d){if(_0x23b67d[_0xe43f('0x2d')]!==_0xe43f('0x3c')){var _0x44fd19={};_0x44fd19[_0x23b67d[_0xe43f('0x26')]]={'$like':'%'+_0xef93ec[_0xe43f('0x33')][_0xe43f('0x3d')]+'%'};return _0x44fd19;}})});}_0x1ddd92=_[_0xe43f('0x3b')]({},_0x1ddd92,_0xef93ec['options']);var _0x235e96={'where':_0x1ddd92[_0xe43f('0x39')]};return db[_0xe43f('0x2a')]['count'](_0x235e96)[_0xe43f('0x21')](function(_0x7ea43){_0x2a6e98[_0xe43f('0x3e')]=_0x7ea43;if(_0xef93ec[_0xe43f('0x33')][_0xe43f('0x3f')]){_0x1ddd92[_0xe43f('0x40')]=[{'all':!![]}];}return db[_0xe43f('0x2a')]['findAll'](_0x1ddd92);})[_0xe43f('0x21')](function(_0x43c04c){_0x2a6e98[_0xe43f('0x41')]=_0x43c04c;return _0x2a6e98;})[_0xe43f('0x21')](respondWithFilteredResult(_0x2acb4d,_0x1ddd92))[_0xe43f('0x42')](handleError(_0x2acb4d,null));};exports[_0xe43f('0x43')]=function(_0x5cd9a4,_0x2f8568){var _0x2ae764={'raw':!![],'where':{'id':_0x5cd9a4[_0xe43f('0x44')]['id']}},_0x43c253={};_0x43c253[_0xe43f('0x2f')]=_[_0xe43f('0x30')](db['Pause'][_0xe43f('0x2b')]);_0x43c253[_0xe43f('0x33')]=_['keys'](_0x5cd9a4['query']);_0x43c253['filters']=_[_0xe43f('0x32')](_0x43c253[_0xe43f('0x2f')],_0x43c253[_0xe43f('0x33')]);_0x2ae764[_0xe43f('0x34')]=_[_0xe43f('0x32')](_0x43c253['model'],qs[_0xe43f('0x35')](_0x5cd9a4[_0xe43f('0x33')][_0xe43f('0x35')]));_0x2ae764[_0xe43f('0x34')]=_0x2ae764[_0xe43f('0x34')][_0xe43f('0x36')]?_0x2ae764[_0xe43f('0x34')]:_0x43c253[_0xe43f('0x2f')];if(_0x5cd9a4[_0xe43f('0x33')][_0xe43f('0x3f')]){_0x2ae764['include']=[{'all':!![]}];}_0x2ae764=_[_0xe43f('0x3b')]({},_0x2ae764,_0x5cd9a4[_0xe43f('0x45')]);return db[_0xe43f('0x2a')]['find'](_0x2ae764)[_0xe43f('0x21')](handleEntityNotFound(_0x2f8568,null))['then'](respondWithResult(_0x2f8568,null))[_0xe43f('0x42')](handleError(_0x2f8568,null));};exports[_0xe43f('0x46')]=function(_0x3036fe,_0x175856){return db['Pause'][_0xe43f('0x46')](_0x3036fe[_0xe43f('0x47')],{})['then'](function(_0x40da14){var _0x874bfd=_0x3036fe['user'][_0xe43f('0x22')]({'plain':!![]});if(!_0x874bfd)throw new Error(_0xe43f('0x48'));if(_0x874bfd[_0xe43f('0x49')]===_0xe43f('0x4a')){var _0x499ce6=_0x40da14[_0xe43f('0x22')]({'plain':!![]});var _0x551a15=_0xe43f('0x4b');return db[_0xe43f('0x4c')][_0xe43f('0x4d')]({'where':{'name':_0x551a15,'userProfileId':_0x874bfd[_0xe43f('0x4e')]},'raw':!![]})[_0xe43f('0x21')](function(_0x31361f){if(_0x31361f&&_0x31361f[_0xe43f('0x4f')]===0x0){return db[_0xe43f('0x50')][_0xe43f('0x46')]({'name':_0x499ce6[_0xe43f('0x26')],'resourceId':_0x499ce6['id'],'type':_0x31361f[_0xe43f('0x26')],'sectionId':_0x31361f['id']},{})['then'](function(){return _0x40da14;});}else{return _0x40da14;}})[_0xe43f('0x42')](function(_0x461a33){logger[_0xe43f('0x24')](_0xe43f('0x51'),_0x461a33);throw _0x461a33;});}return _0x40da14;})[_0xe43f('0x21')](respondWithResult(_0x175856,0xc9))['catch'](handleError(_0x175856,null));};exports[_0xe43f('0x20')]=function(_0x56f66b,_0x4ad6f3){if(_0x56f66b[_0xe43f('0x47')]['id']){delete _0x56f66b[_0xe43f('0x47')]['id'];}return db[_0xe43f('0x2a')][_0xe43f('0x4d')]({'where':{'id':_0x56f66b[_0xe43f('0x44')]['id']}})[_0xe43f('0x21')](handleEntityNotFound(_0x4ad6f3,null))['then'](saveUpdates(_0x56f66b[_0xe43f('0x47')],null))[_0xe43f('0x21')](respondWithResult(_0x4ad6f3,null))[_0xe43f('0x42')](handleError(_0x4ad6f3,null));};exports['destroy']=function(_0x3a1795,_0x572ae6){return db[_0xe43f('0x2a')][_0xe43f('0x4d')]({'where':{'id':_0x3a1795[_0xe43f('0x44')]['id']}})['then'](handleEntityNotFound(_0x572ae6,null))[_0xe43f('0x21')](removeEntity(_0x572ae6,null))[_0xe43f('0x42')](handleError(_0x572ae6,null));};
\ No newline at end of file
+var _0xdaf4=['sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','includeAll','create','body','user','get','role','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','squel','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','Pauses','UserProfileResource','error','stack','name','send','map','Pause','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order'];(function(_0x29534d,_0x5559fd){var _0x4f6ffc=function(_0x5bd32b){while(--_0x5bd32b){_0x29534d['push'](_0x29534d['shift']());}};_0x4f6ffc(++_0x5559fd);}(_0xdaf4,0x103));var _0x4daf=function(_0x209ec9,_0x30378c){_0x209ec9=_0x209ec9-0x0;var _0x129b1b=_0xdaf4[_0x209ec9];return _0x129b1b;};'use strict';var emlformat=require(_0x4daf('0x0'));var rimraf=require(_0x4daf('0x1'));var zipdir=require(_0x4daf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4daf('0x3'));var moment=require(_0x4daf('0x4'));var BPromise=require(_0x4daf('0x5'));var Mustache=require(_0x4daf('0x6'));var util=require(_0x4daf('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x4daf('0x8'));var ejs=require(_0x4daf('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4daf('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4daf('0x8'));var querystring=require(_0x4daf('0xb'));var Papa=require('papaparse');var Redis=require(_0x4daf('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x4daf('0xd'));var as=require(_0x4daf('0xe'));var hardwareService=require(_0x4daf('0xf'));var logger=require(_0x4daf('0x10'))(_0x4daf('0x11'));var utils=require(_0x4daf('0x12'));var config=require(_0x4daf('0x13'));var licenseUtil=require(_0x4daf('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbc5125,_0x7eb9d1){_0x7eb9d1=_0x7eb9d1||0xcc;return function(_0x36d3ca){if(_0x36d3ca){return _0xbc5125[_0x4daf('0x15')](_0x7eb9d1);}return _0xbc5125[_0x4daf('0x16')](_0x7eb9d1)[_0x4daf('0x17')]();};}function respondWithResult(_0x50627f,_0x38c98d){_0x38c98d=_0x38c98d||0xc8;return function(_0xc89921){if(_0xc89921){return _0x50627f[_0x4daf('0x16')](_0x38c98d)[_0x4daf('0x18')](_0xc89921);}};}function respondWithFilteredResult(_0x2b6d54,_0x44d580){return function(_0x3166d8){if(_0x3166d8){var _0x3b4165=typeof _0x44d580[_0x4daf('0x19')]===_0x4daf('0x1a')&&typeof _0x44d580[_0x4daf('0x1b')]==='undefined';var _0x2534f3=_0x3166d8[_0x4daf('0x1c')];var _0x150997=_0x3b4165?0x0:_0x44d580[_0x4daf('0x19')];var _0x1b3944=_0x3b4165?_0x3166d8['count']:_0x44d580[_0x4daf('0x19')]+_0x44d580[_0x4daf('0x1b')];var _0x384ebb;if(_0x1b3944>=_0x2534f3){_0x1b3944=_0x2534f3;_0x384ebb=0xc8;}else{_0x384ebb=0xce;}_0x2b6d54['status'](_0x384ebb);return _0x2b6d54[_0x4daf('0x1d')](_0x4daf('0x1e'),_0x150997+'-'+_0x1b3944+'/'+_0x2534f3)[_0x4daf('0x18')](_0x3166d8);}return null;};}function patchUpdates(_0x29c3f5){return function(_0x3801d8){try{jsonpatch['apply'](_0x3801d8,_0x29c3f5,!![]);}catch(_0x3603f7){return BPromise[_0x4daf('0x1f')](_0x3603f7);}return _0x3801d8[_0x4daf('0x20')]();};}function saveUpdates(_0x268a74,_0x5620eb){return function(_0x4cf355){if(_0x4cf355){return _0x4cf355[_0x4daf('0x21')](_0x268a74)[_0x4daf('0x22')](function(_0x17b308){return _0x17b308;});}return null;};}function removeEntity(_0x27356e,_0x5b1377){return function(_0x5704d2){if(_0x5704d2){return _0x5704d2['destroy']()[_0x4daf('0x22')](function(){var _0xd65e70=_0x5704d2['get']({'plain':!![]});var _0x17859a=_0x4daf('0x23');return db[_0x4daf('0x24')]['destroy']({'where':{'type':_0x17859a,'resourceId':_0xd65e70['id']}})[_0x4daf('0x22')](function(){return _0x5704d2;});})[_0x4daf('0x22')](function(){_0x27356e[_0x4daf('0x16')](0xcc)[_0x4daf('0x17')]();});}};}function handleEntityNotFound(_0x5c9a8,_0x4f6128){return function(_0x3407af){if(!_0x3407af){_0x5c9a8[_0x4daf('0x15')](0x194);}return _0x3407af;};}function handleError(_0x5794cf,_0x412808){_0x412808=_0x412808||0x1f4;return function(_0x33a197){logger[_0x4daf('0x25')](_0x33a197[_0x4daf('0x26')]);if(_0x33a197[_0x4daf('0x27')]){delete _0x33a197[_0x4daf('0x27')];}_0x5794cf[_0x4daf('0x16')](_0x412808)[_0x4daf('0x28')](_0x33a197);};}exports['index']=function(_0x38d47c,_0x46dc78){var _0x33b2d1={},_0x551f9d={},_0x10c69b={'count':0x0,'rows':[]};var _0x1a2a6f=_[_0x4daf('0x29')](db[_0x4daf('0x2a')]['rawAttributes'],function(_0x78bdb2){return{'name':_0x78bdb2['fieldName'],'type':_0x78bdb2['type']['key']};});_0x551f9d[_0x4daf('0x2b')]=_[_0x4daf('0x29')](_0x1a2a6f,_0x4daf('0x27'));_0x551f9d[_0x4daf('0x2c')]=_[_0x4daf('0x2d')](_0x38d47c[_0x4daf('0x2c')]);_0x551f9d['filters']=_[_0x4daf('0x2e')](_0x551f9d[_0x4daf('0x2b')],_0x551f9d['query']);_0x33b2d1[_0x4daf('0x2f')]=_[_0x4daf('0x2e')](_0x551f9d[_0x4daf('0x2b')],qs[_0x4daf('0x30')](_0x38d47c[_0x4daf('0x2c')][_0x4daf('0x30')]));_0x33b2d1['attributes']=_0x33b2d1[_0x4daf('0x2f')][_0x4daf('0x31')]?_0x33b2d1[_0x4daf('0x2f')]:_0x551f9d['model'];if(!_0x38d47c[_0x4daf('0x2c')][_0x4daf('0x32')](_0x4daf('0x33'))){_0x33b2d1[_0x4daf('0x1b')]=qs['limit'](_0x38d47c[_0x4daf('0x2c')][_0x4daf('0x1b')]);_0x33b2d1[_0x4daf('0x19')]=qs[_0x4daf('0x19')](_0x38d47c['query'][_0x4daf('0x19')]);}_0x33b2d1[_0x4daf('0x34')]=qs[_0x4daf('0x35')](_0x38d47c[_0x4daf('0x2c')][_0x4daf('0x35')]);_0x33b2d1[_0x4daf('0x36')]=qs[_0x4daf('0x37')](_[_0x4daf('0x38')](_0x38d47c[_0x4daf('0x2c')],_0x551f9d[_0x4daf('0x37')]),_0x1a2a6f);if(_0x38d47c['query'][_0x4daf('0x39')]){_0x33b2d1[_0x4daf('0x36')]=_[_0x4daf('0x3a')](_0x33b2d1['where'],{'$or':_[_0x4daf('0x29')](_0x1a2a6f,function(_0x412098){if(_0x412098['type']!==_0x4daf('0x3b')){var _0x339f14={};_0x339f14[_0x412098[_0x4daf('0x27')]]={'$like':'%'+_0x38d47c[_0x4daf('0x2c')]['filter']+'%'};return _0x339f14;}})});}_0x33b2d1=_['merge']({},_0x33b2d1,_0x38d47c[_0x4daf('0x3c')]);var _0x823941={'where':_0x33b2d1[_0x4daf('0x36')]};return db['Pause'][_0x4daf('0x1c')](_0x823941)[_0x4daf('0x22')](function(_0x16cc9b){_0x10c69b[_0x4daf('0x1c')]=_0x16cc9b;if(_0x38d47c['query']['includeAll']){_0x33b2d1[_0x4daf('0x3d')]=[{'all':!![]}];}return db[_0x4daf('0x2a')][_0x4daf('0x3e')](_0x33b2d1);})[_0x4daf('0x22')](function(_0x5bc498){_0x10c69b[_0x4daf('0x3f')]=_0x5bc498;return _0x10c69b;})[_0x4daf('0x22')](respondWithFilteredResult(_0x46dc78,_0x33b2d1))[_0x4daf('0x40')](handleError(_0x46dc78,null));};exports[_0x4daf('0x41')]=function(_0x183d75,_0x5de5ce){var _0x24f57c={'raw':!![],'where':{'id':_0x183d75['params']['id']}},_0xb7496a={};_0xb7496a['model']=_[_0x4daf('0x2d')](db['Pause'][_0x4daf('0x42')]);_0xb7496a[_0x4daf('0x2c')]=_[_0x4daf('0x2d')](_0x183d75[_0x4daf('0x2c')]);_0xb7496a['filters']=_[_0x4daf('0x2e')](_0xb7496a[_0x4daf('0x2b')],_0xb7496a[_0x4daf('0x2c')]);_0x24f57c['attributes']=_['intersection'](_0xb7496a[_0x4daf('0x2b')],qs[_0x4daf('0x30')](_0x183d75[_0x4daf('0x2c')][_0x4daf('0x30')]));_0x24f57c[_0x4daf('0x2f')]=_0x24f57c['attributes']['length']?_0x24f57c[_0x4daf('0x2f')]:_0xb7496a[_0x4daf('0x2b')];if(_0x183d75['query'][_0x4daf('0x43')]){_0x24f57c['include']=[{'all':!![]}];}_0x24f57c=_['merge']({},_0x24f57c,_0x183d75[_0x4daf('0x3c')]);return db[_0x4daf('0x2a')]['find'](_0x24f57c)[_0x4daf('0x22')](handleEntityNotFound(_0x5de5ce,null))[_0x4daf('0x22')](respondWithResult(_0x5de5ce,null))[_0x4daf('0x40')](handleError(_0x5de5ce,null));};exports[_0x4daf('0x44')]=function(_0x179170,_0x43e147){return db[_0x4daf('0x2a')][_0x4daf('0x44')](_0x179170[_0x4daf('0x45')],{})[_0x4daf('0x22')](function(_0x4e9761){var _0xbad255=_0x179170[_0x4daf('0x46')][_0x4daf('0x47')]({'plain':!![]});if(!_0xbad255)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xbad255[_0x4daf('0x48')]===_0x4daf('0x46')){var _0x59368c=_0x4e9761[_0x4daf('0x47')]({'plain':!![]});var _0x34398b=_0x4daf('0x23');return db[_0x4daf('0x49')][_0x4daf('0x4a')]({'where':{'name':_0x34398b,'userProfileId':_0xbad255['userProfileId']},'raw':!![]})['then'](function(_0x3bb74a){if(_0x3bb74a&&_0x3bb74a['autoAssociation']===0x0){return db[_0x4daf('0x24')]['create']({'name':_0x59368c['name'],'resourceId':_0x59368c['id'],'type':_0x3bb74a['name'],'sectionId':_0x3bb74a['id']},{})[_0x4daf('0x22')](function(){return _0x4e9761;});}else{return _0x4e9761;}})[_0x4daf('0x40')](function(_0xbf4967){logger['error'](_0x4daf('0x4b'),_0xbf4967);throw _0xbf4967;});}return _0x4e9761;})['then'](respondWithResult(_0x43e147,0xc9))[_0x4daf('0x40')](handleError(_0x43e147,null));};exports[_0x4daf('0x21')]=function(_0x155eeb,_0x30102b){if(_0x155eeb[_0x4daf('0x45')]['id']){delete _0x155eeb[_0x4daf('0x45')]['id'];}return db[_0x4daf('0x2a')][_0x4daf('0x4a')]({'where':{'id':_0x155eeb[_0x4daf('0x4c')]['id']}})['then'](handleEntityNotFound(_0x30102b,null))[_0x4daf('0x22')](saveUpdates(_0x155eeb[_0x4daf('0x45')],null))[_0x4daf('0x22')](respondWithResult(_0x30102b,null))['catch'](handleError(_0x30102b,null));};exports[_0x4daf('0x4d')]=function(_0x2d1267,_0x5628d7){return db[_0x4daf('0x2a')][_0x4daf('0x4a')]({'where':{'id':_0x2d1267[_0x4daf('0x4c')]['id']}})[_0x4daf('0x22')](handleEntityNotFound(_0x5628d7,null))[_0x4daf('0x22')](removeEntity(_0x5628d7,null))[_0x4daf('0x40')](handleError(_0x5628d7,null));};
\ No newline at end of file
index 2ffe0e8..8ed50a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','Pause','tools_pauses','lodash','util'];(function(_0x177973,_0x45beb5){var _0x20abfb=function(_0x5994ec){while(--_0x5994ec){_0x177973['push'](_0x177973['shift']());}};_0x20abfb(++_0x45beb5);}(_0x5fab,0x177));var _0xb5fa=function(_0x345e4c,_0x3e73ba){_0x345e4c=_0x345e4c-0x0;var _0x40c41c=_0x5fab[_0x345e4c];return _0x40c41c;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));module[_0xb5fa('0xa')]=function(_0x44df89,_0x4a0249){return _0x44df89['define'](_0xb5fa('0xb'),attributes,{'tableName':_0xb5fa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Pause','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./pause.attributes'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e7bc3ce..85f024b 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(_0x2fe0b8,_0x51ee32){var _0x26f2b0=function(_0x51e220){while(--_0x51e220){_0x2fe0b8['push'](_0x2fe0b8['shift']());}};_0x26f2b0(++_0x51ee32);}(_0xb10b,0x12a));var _0xbb10=function(_0x21eacf,_0x1d1f5b){_0x21eacf=_0x21eacf-0x0;var _0xbae3e=_0xb10b[_0x21eacf];return _0xbae3e;};'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 _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x539359,_0x27a927){var _0x260da4=function(_0x416cfd){while(--_0x416cfd){_0x539359['push'](_0x539359['shift']());}};_0x260da4(++_0x27a927);}(_0x7a54,0x106));var _0x47a5=function(_0x2752a3,_0x4470b9){_0x2752a3=_0x2752a3-0x0;var _0x313d78=_0x7a54[_0x2752a3];return _0x313d78;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 2e2c26b..20e2a0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x579c=['../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','webhookGet','/:id','show','/:id/download','diskStorage','join','root','server/files/plugins','originalname','replace','%s-%s%s','extname','file','upload','post','/webhook','webhookPost','put','update','delete','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x4fde8d,_0x3203b5){var _0x4a3643=function(_0x17ca13){while(--_0x17ca13){_0x4fde8d['push'](_0x4fde8d['shift']());}};_0x4a3643(++_0x3203b5);}(_0x579c,0xda));var _0xc579=function(_0x58d4ce,_0x154425){_0x58d4ce=_0x58d4ce-0x0;var _0x3c5170=_0x579c[_0x58d4ce];return _0x3c5170;};'use strict';var multer=require(_0xc579('0x0'));var util=require(_0xc579('0x1'));var path=require(_0xc579('0x2'));var timeout=require(_0xc579('0x3'));var express=require(_0xc579('0x4'));var router=express['Router']();var fs_extra=require(_0xc579('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc579('0x6'));var config=require(_0xc579('0x7'));var controller=require(_0xc579('0x8'));router[_0xc579('0x9')]('/',auth[_0xc579('0xa')](),controller[_0xc579('0xb')]);router[_0xc579('0x9')]('/webhook',controller[_0xc579('0xc')]);router[_0xc579('0x9')](_0xc579('0xd'),auth[_0xc579('0xa')](),controller[_0xc579('0xe')]);router[_0xc579('0x9')](_0xc579('0xf'),auth[_0xc579('0xa')](),controller['download']);var upload=multer({'storage':multer[_0xc579('0x10')]({'destination':function(_0x2048bc,_0x17e37f,_0x3684b7){_0x3684b7(null,path[_0xc579('0x11')](config[_0xc579('0x12')],_0xc579('0x13')));},'filename':function(_0x1905b7,_0x421812,_0x441028){_0x421812[_0xc579('0x14')]=_0x421812['originalname'][_0xc579('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x441028(null,util['format'](_0xc579('0x16'),path['basename'](_0x421812[_0xc579('0x14')],path['extname'](_0x421812[_0xc579('0x14')])),Date['now'](),path[_0xc579('0x17')](_0x421812[_0xc579('0x14')])));}})});router['post']('/',upload['single'](_0xc579('0x18')),controller[_0xc579('0x19')]);router[_0xc579('0x1a')](_0xc579('0x1b'),controller[_0xc579('0x1c')]);router[_0xc579('0x1d')](_0xc579('0xd'),auth[_0xc579('0xa')](),controller[_0xc579('0x1e')]);router[_0xc579('0x1f')]('/:id',auth[_0xc579('0xa')](),controller[_0xc579('0x1f')]);module['exports']=router;
\ No newline at end of file
+var _0x425d=['isAuthenticated','index','/webhook','/:id','show','/:id/download','download','diskStorage','join','root','server/files/plugins','originalname','format','%s-%s%s','basename','extname','now','single','file','upload','post','webhookPost','put','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./plugin.controller','get'];(function(_0x180bce,_0x46dd34){var _0x326314=function(_0x2e26ed){while(--_0x2e26ed){_0x180bce['push'](_0x180bce['shift']());}};_0x326314(++_0x46dd34);}(_0x425d,0x1e0));var _0xd425=function(_0x2dd62d,_0x128ccd){_0x2dd62d=_0x2dd62d-0x0;var _0x18e1a5=_0x425d[_0x2dd62d];return _0x18e1a5;};'use strict';var multer=require(_0xd425('0x0'));var util=require('util');var path=require(_0xd425('0x1'));var timeout=require(_0xd425('0x2'));var express=require(_0xd425('0x3'));var router=express[_0xd425('0x4')]();var fs_extra=require(_0xd425('0x5'));var auth=require(_0xd425('0x6'));var interaction=require(_0xd425('0x7'));var config=require('../../config/environment');var controller=require(_0xd425('0x8'));router[_0xd425('0x9')]('/',auth[_0xd425('0xa')](),controller[_0xd425('0xb')]);router[_0xd425('0x9')](_0xd425('0xc'),controller['webhookGet']);router[_0xd425('0x9')](_0xd425('0xd'),auth[_0xd425('0xa')](),controller[_0xd425('0xe')]);router[_0xd425('0x9')](_0xd425('0xf'),auth[_0xd425('0xa')](),controller[_0xd425('0x10')]);var upload=multer({'storage':multer[_0xd425('0x11')]({'destination':function(_0x35a7f4,_0x3d2bcf,_0x10d463){_0x10d463(null,path[_0xd425('0x12')](config[_0xd425('0x13')],_0xd425('0x14')));},'filename':function(_0x2385a5,_0x9bb611,_0x3cacf7){_0x9bb611[_0xd425('0x15')]=_0x9bb611[_0xd425('0x15')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3cacf7(null,util[_0xd425('0x16')](_0xd425('0x17'),path[_0xd425('0x18')](_0x9bb611['originalname'],path[_0xd425('0x19')](_0x9bb611[_0xd425('0x15')])),Date[_0xd425('0x1a')](),path[_0xd425('0x19')](_0x9bb611[_0xd425('0x15')])));}})});router['post']('/',upload[_0xd425('0x1b')](_0xd425('0x1c')),controller[_0xd425('0x1d')]);router[_0xd425('0x1e')]('/webhook',controller[_0xd425('0x1f')]);router[_0xd425('0x20')](_0xd425('0xd'),auth[_0xd425('0xa')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xd425('0x21')]);module[_0xd425('0x22')]=router;
\ No newline at end of file
index fcfbbf8..edaed23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8558=['STRING','ENUM','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports'];(function(_0x27f947,_0x1f79ae){var _0xf6d2d3=function(_0x26eb86){while(--_0x26eb86){_0x27f947['push'](_0x27f947['shift']());}};_0xf6d2d3(++_0x1f79ae);}(_0x8558,0x103));var _0x8855=function(_0x7cb705,_0x2f3c8e){_0x7cb705=_0x7cb705-0x0;var _0x131fa4=_0x8558[_0x7cb705];return _0x131fa4;};'use strict';var Sequelize=require('sequelize');module[_0x8855('0x0')]={'name':{'type':Sequelize[_0x8855('0x1')]},'type':{'type':Sequelize[_0x8855('0x2')](_0x8855('0x3'),_0x8855('0x4'))},'description':{'type':Sequelize[_0x8855('0x5')]},'version':{'type':Sequelize[_0x8855('0x5')]},'path':{'type':Sequelize['STRING'],'comment':_0x8855('0x6')},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x8855('0x7')},'sidebar':{'type':Sequelize['ENUM'](_0x8855('0x8'),_0x8855('0x9'),_0x8855('0xa'),_0x8855('0xb')),'defaultValue':_0x8855('0xa'),'comment':_0x8855('0xc')},'icon':{'type':Sequelize[_0x8855('0x1')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0x8855('0x1')]},'scriptName':{'type':Sequelize[_0x8855('0x1')]},'scriptPath':{'type':Sequelize[_0x8855('0x1')]}};
\ No newline at end of file
+var _0xcd8d=['BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','sequelize','exports','ENUM','script','TEXT','STRING','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'];(function(_0x585d09,_0x1274bc){var _0x7d9a14=function(_0x343d4e){while(--_0x343d4e){_0x585d09['push'](_0x585d09['shift']());}};_0x7d9a14(++_0x1274bc);}(_0xcd8d,0x1a9));var _0xdcd8=function(_0x52085a,_0x3717ca){_0x52085a=_0x52085a-0x0;var _0x5afc1a=_0xcd8d[_0x52085a];return _0x5afc1a;};'use strict';var Sequelize=require(_0xdcd8('0x0'));module[_0xdcd8('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xdcd8('0x2')]('html',_0xdcd8('0x3'))},'description':{'type':Sequelize[_0xdcd8('0x4')]},'version':{'type':Sequelize[_0xdcd8('0x4')]},'path':{'type':Sequelize[_0xdcd8('0x5')],'comment':_0xdcd8('0x6')},'active':{'type':Sequelize[_0xdcd8('0x7')],'defaultValue':0x0,'comment':_0xdcd8('0x8')},'sidebar':{'type':Sequelize[_0xdcd8('0x2')](_0xdcd8('0x9'),_0xdcd8('0xa'),_0xdcd8('0xb'),'never'),'defaultValue':_0xdcd8('0xb'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0xdcd8('0x5')]},'adminUrl':{'type':Sequelize[_0xdcd8('0x5')]},'agentUrl':{'type':Sequelize[_0xdcd8('0x5')]},'scriptName':{'type':Sequelize[_0xdcd8('0x5')]},'scriptPath':{'type':Sequelize[_0xdcd8('0x5')]}};
\ No newline at end of file
index 8b3c08e..fcf4227 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e0=['content-type','endsWith','statusCode','http://localhost:','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','extract-zip','archiver','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./plugin.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Plugins','UserProfileResource','error','stack','name','send','index','map','Plugin','fieldName','type','model','query','filters','intersection','attributes','fields','length','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','path','join','root','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','download','Error\x20while\x20downloading\x20the\x20plugin','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','isFile','isDirectory','some','manifest.json','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','scriptPath','create','body','role','userProfileId','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','encoding','method','%s%s','headers','content-length'];(function(_0x40b570,_0x284e18){var _0x5b5f8a=function(_0xeabebf){while(--_0xeabebf){_0x40b570['push'](_0x40b570['shift']());}};_0x5b5f8a(++_0x284e18);}(_0xb7e0,0x160));var _0x0b7e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xb7e0[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0x0b7e('0x0'));var rimraf=require(_0x0b7e('0x1'));var zipdir=require(_0x0b7e('0x2'));var jsonpatch=require(_0x0b7e('0x3'));var rp=require(_0x0b7e('0x4'));var moment=require(_0x0b7e('0x5'));var BPromise=require(_0x0b7e('0x6'));var Mustache=require('mustache');var util=require(_0x0b7e('0x7'));var path=require('path');var sox=require(_0x0b7e('0x8'));var csv=require(_0x0b7e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0b7e('0xa'));var _=require(_0x0b7e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0b7e('0xc'));var deskjs=require(_0x0b7e('0xd'));var toCsv=require(_0x0b7e('0x9'));var querystring=require(_0x0b7e('0xe'));var Papa=require(_0x0b7e('0xf'));var extract=require(_0x0b7e('0x10'));var rimraf=require(_0x0b7e('0x1'));var archiver=require(_0x0b7e('0x11'));var Redis=require('ioredis');var authService=require(_0x0b7e('0x12'));var qs=require(_0x0b7e('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0b7e('0x14'));var logger=require(_0x0b7e('0x15'))('api');var utils=require(_0x0b7e('0x16'));var config=require(_0x0b7e('0x17'));var licenseUtil=require(_0x0b7e('0x18'));var db=require(_0x0b7e('0x19'))['db'];config[_0x0b7e('0x1a')]=_['defaults'](config[_0x0b7e('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x0b7e('0x1b'))(new Redis(config['redis']));require(_0x0b7e('0x1c'))['register'](socket);function respondWithStatusCode(_0x10806f,_0x578b38){_0x578b38=_0x578b38||0xcc;return function(_0x1b7fe7){if(_0x1b7fe7){return _0x10806f[_0x0b7e('0x1d')](_0x578b38);}return _0x10806f['status'](_0x578b38)[_0x0b7e('0x1e')]();};}function respondWithResult(_0x169e8c,_0xf8fcb1){_0xf8fcb1=_0xf8fcb1||0xc8;return function(_0x2cbfe5){if(_0x2cbfe5){return _0x169e8c[_0x0b7e('0x1f')](_0xf8fcb1)[_0x0b7e('0x20')](_0x2cbfe5);}};}function respondWithFilteredResult(_0x26cef6,_0x476917){return function(_0x37eae8){if(_0x37eae8){var _0x46ec94=typeof _0x476917[_0x0b7e('0x21')]===_0x0b7e('0x22')&&typeof _0x476917[_0x0b7e('0x23')]===_0x0b7e('0x22');var _0x3fb7ef=_0x37eae8[_0x0b7e('0x24')];var _0x4c5a14=_0x46ec94?0x0:_0x476917[_0x0b7e('0x21')];var _0x255212=_0x46ec94?_0x37eae8['count']:_0x476917[_0x0b7e('0x21')]+_0x476917[_0x0b7e('0x23')];var _0x3b9468;if(_0x255212>=_0x3fb7ef){_0x255212=_0x3fb7ef;_0x3b9468=0xc8;}else{_0x3b9468=0xce;}_0x26cef6[_0x0b7e('0x1f')](_0x3b9468);return _0x26cef6[_0x0b7e('0x25')](_0x0b7e('0x26'),_0x4c5a14+'-'+_0x255212+'/'+_0x3fb7ef)[_0x0b7e('0x20')](_0x37eae8);}return null;};}function patchUpdates(_0x1c3a59){return function(_0x36b61b){try{jsonpatch[_0x0b7e('0x27')](_0x36b61b,_0x1c3a59,!![]);}catch(_0x581c9c){return BPromise['reject'](_0x581c9c);}return _0x36b61b[_0x0b7e('0x28')]();};}function saveUpdates(_0x39eea2,_0x3643ac){return function(_0x1e8c11){if(_0x1e8c11){return _0x1e8c11[_0x0b7e('0x29')](_0x39eea2)[_0x0b7e('0x2a')](function(_0x248f3d){return _0x248f3d;});}return null;};}function removeEntity(_0x34d9ea,_0x1ec261){return function(_0x279baa){if(_0x279baa){return _0x279baa[_0x0b7e('0x2b')]()[_0x0b7e('0x2a')](function(){var _0x1b312b=_0x279baa[_0x0b7e('0x2c')]({'plain':!![]});var _0x1f8c86=_0x0b7e('0x2d');return db[_0x0b7e('0x2e')]['destroy']({'where':{'type':_0x1f8c86,'resourceId':_0x1b312b['id']}})[_0x0b7e('0x2a')](function(){return _0x279baa;});})[_0x0b7e('0x2a')](function(){_0x34d9ea[_0x0b7e('0x1f')](0xcc)[_0x0b7e('0x1e')]();});}};}function handleEntityNotFound(_0x364ec3,_0x917dad){return function(_0x3fb7b9){if(!_0x3fb7b9){_0x364ec3['sendStatus'](0x194);}return _0x3fb7b9;};}function handleError(_0x4b52df,_0x4b9a07){_0x4b9a07=_0x4b9a07||0x1f4;return function(_0x32667f){logger[_0x0b7e('0x2f')](_0x32667f[_0x0b7e('0x30')]);if(_0x32667f[_0x0b7e('0x31')]){delete _0x32667f[_0x0b7e('0x31')];}_0x4b52df[_0x0b7e('0x1f')](_0x4b9a07)[_0x0b7e('0x32')](_0x32667f);};}exports[_0x0b7e('0x33')]=function(_0x20843b,_0x5bb9be){var _0x3a1f37={},_0x162b5e={},_0x46ca5c={'count':0x0,'rows':[]};var _0x188153=_[_0x0b7e('0x34')](db[_0x0b7e('0x35')]['rawAttributes'],function(_0x1c1685){return{'name':_0x1c1685[_0x0b7e('0x36')],'type':_0x1c1685[_0x0b7e('0x37')]['key']};});_0x162b5e[_0x0b7e('0x38')]=_[_0x0b7e('0x34')](_0x188153,_0x0b7e('0x31'));_0x162b5e[_0x0b7e('0x39')]=_['keys'](_0x20843b[_0x0b7e('0x39')]);_0x162b5e[_0x0b7e('0x3a')]=_[_0x0b7e('0x3b')](_0x162b5e[_0x0b7e('0x38')],_0x162b5e[_0x0b7e('0x39')]);_0x3a1f37[_0x0b7e('0x3c')]=_[_0x0b7e('0x3b')](_0x162b5e[_0x0b7e('0x38')],qs['fields'](_0x20843b[_0x0b7e('0x39')][_0x0b7e('0x3d')]));_0x3a1f37[_0x0b7e('0x3c')]=_0x3a1f37[_0x0b7e('0x3c')][_0x0b7e('0x3e')]?_0x3a1f37[_0x0b7e('0x3c')]:_0x162b5e[_0x0b7e('0x38')];if(!_0x20843b[_0x0b7e('0x39')]['hasOwnProperty']('nolimit')){_0x3a1f37[_0x0b7e('0x23')]=qs[_0x0b7e('0x23')](_0x20843b[_0x0b7e('0x39')][_0x0b7e('0x23')]);_0x3a1f37['offset']=qs[_0x0b7e('0x21')](_0x20843b['query'][_0x0b7e('0x21')]);}_0x3a1f37[_0x0b7e('0x3f')]=qs[_0x0b7e('0x40')](_0x20843b['query'][_0x0b7e('0x40')]);_0x3a1f37[_0x0b7e('0x41')]=qs[_0x0b7e('0x3a')](_['pick'](_0x20843b['query'],_0x162b5e['filters']),_0x188153);if(_0x20843b['query']['filter']){_0x3a1f37['where']=_[_0x0b7e('0x42')](_0x3a1f37['where'],{'$or':_[_0x0b7e('0x34')](_0x188153,function(_0x24d31a){if(_0x24d31a[_0x0b7e('0x37')]!==_0x0b7e('0x43')){var _0x280348={};_0x280348[_0x24d31a[_0x0b7e('0x31')]]={'$like':'%'+_0x20843b[_0x0b7e('0x39')][_0x0b7e('0x44')]+'%'};return _0x280348;}})});}_0x3a1f37=_[_0x0b7e('0x42')]({},_0x3a1f37,_0x20843b[_0x0b7e('0x45')]);var _0x17741b={'where':_0x3a1f37[_0x0b7e('0x41')]};return db[_0x0b7e('0x35')][_0x0b7e('0x24')](_0x17741b)[_0x0b7e('0x2a')](function(_0x3bbaa7){_0x46ca5c[_0x0b7e('0x24')]=_0x3bbaa7;if(_0x20843b[_0x0b7e('0x39')][_0x0b7e('0x46')]){_0x3a1f37[_0x0b7e('0x47')]=[{'all':!![]}];}return db['Plugin'][_0x0b7e('0x48')](_0x3a1f37);})['then'](function(_0x1135c9){_0x46ca5c[_0x0b7e('0x49')]=_0x1135c9;return _0x46ca5c;})[_0x0b7e('0x2a')](respondWithFilteredResult(_0x5bb9be,_0x3a1f37))[_0x0b7e('0x4a')](handleError(_0x5bb9be,null));};exports[_0x0b7e('0x4b')]=function(_0x1abdcb,_0x27f3ad){var _0x5457f8={'raw':!![],'where':{'id':_0x1abdcb[_0x0b7e('0x4c')]['id']}},_0x30fd96={};_0x30fd96['model']=_[_0x0b7e('0x4d')](db[_0x0b7e('0x35')][_0x0b7e('0x4e')]);_0x30fd96[_0x0b7e('0x39')]=_[_0x0b7e('0x4d')](_0x1abdcb[_0x0b7e('0x39')]);_0x30fd96[_0x0b7e('0x3a')]=_[_0x0b7e('0x3b')](_0x30fd96['model'],_0x30fd96[_0x0b7e('0x39')]);_0x5457f8[_0x0b7e('0x3c')]=_['intersection'](_0x30fd96[_0x0b7e('0x38')],qs[_0x0b7e('0x3d')](_0x1abdcb[_0x0b7e('0x39')][_0x0b7e('0x3d')]));_0x5457f8[_0x0b7e('0x3c')]=_0x5457f8[_0x0b7e('0x3c')][_0x0b7e('0x3e')]?_0x5457f8['attributes']:_0x30fd96['model'];if(_0x1abdcb[_0x0b7e('0x39')][_0x0b7e('0x46')]){_0x5457f8[_0x0b7e('0x47')]=[{'all':!![]}];}_0x5457f8=_[_0x0b7e('0x42')]({},_0x5457f8,_0x1abdcb[_0x0b7e('0x45')]);return db[_0x0b7e('0x35')]['find'](_0x5457f8)['then'](handleEntityNotFound(_0x27f3ad,null))[_0x0b7e('0x2a')](respondWithResult(_0x27f3ad,null))[_0x0b7e('0x4a')](handleError(_0x27f3ad,null));};exports['download']=function(_0x5ae69c,_0x3fea3c,_0x5ead84){return db[_0x0b7e('0x35')][_0x0b7e('0x4f')]({'where':{'id':_0x5ae69c['params']['id']},'attributes':[_0x0b7e('0x31'),_0x0b7e('0x50')],'raw':!![]})[_0x0b7e('0x2a')](handleEntityNotFound(_0x3fea3c,null))[_0x0b7e('0x2a')](function(_0x420c3f){if(_0x420c3f){var _0x35dc51=path[_0x0b7e('0x51')](config[_0x0b7e('0x52')],_0x0b7e('0x53'),util[_0x0b7e('0x54')](_0x0b7e('0x55'),path[_0x0b7e('0x56')](_0x420c3f[_0x0b7e('0x50')])));var _0x4d209a=fs[_0x0b7e('0x57')](_0x35dc51);var _0x540ba0=archiver(_0x0b7e('0x58'),{'zlib':{'level':0x9}});_0x540ba0['on'](_0x0b7e('0x59'),function(_0x43dcd2){if(_0x43dcd2['code']===_0x0b7e('0x5a')){logger[_0x0b7e('0x2f')](_0x43dcd2);}else{throw new db[(_0x0b7e('0x5b'))][(_0x0b7e('0x5c'))](_0x0b7e('0x5d'));}});_0x540ba0['on'](_0x0b7e('0x2f'),function(_0x9e925b){throw new db['Sequelize']['Error'](_0x0b7e('0x5d'));});_0x540ba0[_0x0b7e('0x5e')](_0x4d209a);_0x540ba0[_0x0b7e('0x5f')](_0x0b7e('0x60'),{'cwd':path[_0x0b7e('0x51')](config['root'],'server/files/plugins',path[_0x0b7e('0x61')](_0x420c3f[_0x0b7e('0x50')])),'ignore':[path[_0x0b7e('0x51')](path[_0x0b7e('0x56')](_0x420c3f['path']),_0x0b7e('0x62')),path['join'](path[_0x0b7e('0x56')](_0x420c3f[_0x0b7e('0x50')]),_0x0b7e('0x63'))],'nodir':!![]})[_0x0b7e('0x64')]();_0x4d209a['on'](_0x0b7e('0x65'),function(){if(!fs[_0x0b7e('0x66')](_0x35dc51)){throw new db['Sequelize'][(_0x0b7e('0x5c'))](_0x0b7e('0x67'));}return _0x3fea3c[_0x0b7e('0x68')](_0x35dc51,util[_0x0b7e('0x54')](_0x0b7e('0x55'),path[_0x0b7e('0x56')](_0x420c3f[_0x0b7e('0x50')])),function(_0x453566){if(_0x453566){throw new db[(_0x0b7e('0x5b'))]['Error'](_0x0b7e('0x69'));}fs['unlinkSync'](_0x35dc51);logger[_0x0b7e('0x6a')](_0x0b7e('0x6b'));logger[_0x0b7e('0x6a')](_0x0b7e('0x6c'));});});}return null;})[_0x0b7e('0x4a')](handleError(_0x3fea3c,null));};exports[_0x0b7e('0x6d')]=function(_0x1105ed,_0x1c8836,_0x2f8451){var _0x39b90=path[_0x0b7e('0x56')](_0x1105ed[_0x0b7e('0x6e')][_0x0b7e('0x6f')],path[_0x0b7e('0x70')](_0x1105ed[_0x0b7e('0x6e')]['filename']));var _0x1b5a4c=path[_0x0b7e('0x51')](config[_0x0b7e('0x52')],_0x0b7e('0x53'),_0x1105ed[_0x0b7e('0x6e')][_0x0b7e('0x6f')]);var _0x31d170=path[_0x0b7e('0x51')](config[_0x0b7e('0x52')],_0x0b7e('0x53'),_0x39b90);logger[_0x0b7e('0x6a')](_0x0b7e('0x71'),_0x1b5a4c);logger[_0x0b7e('0x6a')]('Plugin\x20upload\x20destination:\x20%s',_0x31d170);try{fs[_0x0b7e('0x72')](_0x1b5a4c,parseInt(_0x0b7e('0x73'),0x8));extract(_0x1b5a4c,{'dir':_0x31d170},function(_0x5de450){if(_0x5de450){logger[_0x0b7e('0x2f')](_0x5de450);handleError(_0x5de450,!![]);};var _0x1d8bd8=fs[_0x0b7e('0x74')](_0x31d170);if(_0x1d8bd8[_0x0b7e('0x3e')]>0x1){removeReferences(_0x1b5a4c,_0x31d170);logger[_0x0b7e('0x2f')](_0x0b7e('0x75'));return _0x2f8451(new Error('Invalid\x20plugin\x20structure'));}var _0x56fcc6=fs['lstatSync'](path['join'](_0x31d170,_0x1d8bd8[0x0]));if(_0x56fcc6[_0x0b7e('0x76')]()){removeReferences(_0x1b5a4c,_0x31d170);logger[_0x0b7e('0x2f')](_0x0b7e('0x75'));return _0x2f8451(new Error('Invalid\x20plugin\x20structure'));}if(_0x56fcc6[_0x0b7e('0x77')]()){var _0x1ed4ee=fs[_0x0b7e('0x74')](path[_0x0b7e('0x51')](_0x31d170,_0x1d8bd8[0x0]));if(_0x1ed4ee[_0x0b7e('0x3e')]===0x0){removeReferences(_0x1b5a4c,_0x31d170);logger[_0x0b7e('0x2f')](_0x0b7e('0x75'));return _0x2f8451(new Error('Invalid\x20plugin\x20structure'));}var _0x2a5810=_0x1ed4ee[_0x0b7e('0x78')](function(_0x330250){return _0x330250===_0x0b7e('0x79');});if(!_0x2a5810){return _0x2f8451(new Error('Plugin\x20manifest\x20missing'));}var _0x5497d8=fs[_0x0b7e('0x7a')](path[_0x0b7e('0x51')](_0x31d170,_0x1d8bd8[0x0],'manifest.json'));var _0x4cf28f=JSON[_0x0b7e('0x7b')](_0x5497d8);if(_0x0b7e('0x22')==typeof _0x4cf28f[_0x0b7e('0x31')]){return _0x2f8451(new Error(_0x0b7e('0x7c')));}if(_0x0b7e('0x22')==typeof _0x4cf28f[_0x0b7e('0x37')]){return _0x2f8451(new Error(_0x0b7e('0x7d')));}if('undefined'==typeof _0x4cf28f[_0x0b7e('0x7e')]){return _0x2f8451(new Error(_0x0b7e('0x7f')));}if(_0x0b7e('0x22')==typeof _0x4cf28f[_0x0b7e('0x80')]){return _0x2f8451(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x4cf28f['type']==='html'){if(_0x0b7e('0x22')==typeof _0x4cf28f[_0x0b7e('0x80')][_0x0b7e('0x81')]){return _0x2f8451(new Error(_0x0b7e('0x82')));}if('undefined'==typeof _0x4cf28f[_0x0b7e('0x80')][_0x0b7e('0x81')][_0x0b7e('0x83')]&&'undefined'==typeof _0x4cf28f['parameters'][_0x0b7e('0x81')][_0x0b7e('0x84')]){return _0x2f8451(new Error(_0x0b7e('0x85')));}}else if(_0x4cf28f['type']===_0x0b7e('0x86')){if(_0x0b7e('0x22')==typeof _0x4cf28f['parameters'][_0x0b7e('0x87')]){return _0x2f8451(new Error(_0x0b7e('0x88')));}if(_0x0b7e('0x22')==typeof _0x4cf28f[_0x0b7e('0x80')]['scriptPath']){return _0x2f8451(new Error(_0x0b7e('0x89')));}}else{return _0x2f8451(new Error(_0x0b7e('0x8a')));}var _0x4ce7c6=_0x4cf28f[_0x0b7e('0x31')];var _0x539f0a=_0x4cf28f[_0x0b7e('0x8b')];var _0x39bdf8=_0x4cf28f[_0x0b7e('0x37')];var _0x49f4f8=_0x4cf28f[_0x0b7e('0x8c')]?_0x4cf28f[_0x0b7e('0x8c')]:_0x0b7e('0x8d');var _0x3bd880=_0x4cf28f[_0x0b7e('0x8e')]?_0x4cf28f['icon']:_0x0b7e('0x8f');var _0x4035da='';var _0x415eef='';var _0x41e00f='';var _0x59d3f4='';var _0x1c0e0f=_0x4cf28f[_0x0b7e('0x7e')];if(_0x39bdf8==='html'){if(_0x0b7e('0x22')!=typeof _0x4cf28f['parameters'][_0x0b7e('0x81')][_0x0b7e('0x83')]){var _0x5010fc=_0x4cf28f['parameters']['views'][_0x0b7e('0x83')];if(!/^(f|ht)tps?:\/\//i[_0x0b7e('0x90')](_0x5010fc)){_0x4035da=path[_0x0b7e('0x51')](_0x0b7e('0x91'),_0x39b90,_0x1d8bd8[0x0],_0x5010fc);}else{_0x4035da=_0x5010fc;}}else{logger[_0x0b7e('0x6a')](_0x0b7e('0x92'));}if(_0x0b7e('0x22')!=typeof _0x4cf28f[_0x0b7e('0x80')]['views'][_0x0b7e('0x84')]){var _0x4b4aee=_0x4cf28f[_0x0b7e('0x80')]['views']['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x4b4aee)){_0x415eef=path['join'](_0x0b7e('0x91'),_0x39b90,_0x1d8bd8[0x0],_0x4b4aee);}else{_0x415eef=_0x4b4aee;}}else{logger[_0x0b7e('0x6a')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x39bdf8==='script'){_0x41e00f=_0x4cf28f[_0x0b7e('0x80')][_0x0b7e('0x87')];_0x59d3f4=_0x4cf28f[_0x0b7e('0x80')][_0x0b7e('0x93')];if(_0x0b7e('0x22')!=typeof _0x4cf28f[_0x0b7e('0x80')][_0x0b7e('0x81')]){if(_0x0b7e('0x22')!=typeof _0x4cf28f[_0x0b7e('0x80')][_0x0b7e('0x81')][_0x0b7e('0x83')]){var _0x5010fc=_0x4cf28f[_0x0b7e('0x80')][_0x0b7e('0x81')][_0x0b7e('0x83')];if(!/^(f|ht)tps?:\/\//i[_0x0b7e('0x90')](_0x5010fc)){_0x4035da=path[_0x0b7e('0x51')](_0x0b7e('0x91'),_0x39b90,_0x1d8bd8[0x0],_0x5010fc);}else{_0x4035da=_0x5010fc;}}if('undefined'!=typeof _0x4cf28f['parameters'][_0x0b7e('0x81')][_0x0b7e('0x84')]){var _0x4b4aee=_0x4cf28f['parameters'][_0x0b7e('0x81')][_0x0b7e('0x84')];if(!/^(f|ht)tps?:\/\//i[_0x0b7e('0x90')](_0x4b4aee)){_0x415eef=path[_0x0b7e('0x51')](_0x0b7e('0x91'),_0x39b90,_0x1d8bd8[0x0],_0x4b4aee);}else{_0x415eef=_0x4b4aee;}}}}var _0x25c05f={'name':_0x4ce7c6,'description':_0x539f0a,'path':path[_0x0b7e('0x51')](_0x39b90,_0x1d8bd8[0x0]),'type':_0x39bdf8,'sidebar':_0x49f4f8,'icon':_0x3bd880,'adminUrl':_0x4035da,'agentUrl':_0x415eef,'scriptName':_0x41e00f,'scriptPath':_0x59d3f4,'version':_0x1c0e0f};removeReferences(_0x1b5a4c,null);return db[_0x0b7e('0x35')][_0x0b7e('0x94')](_0x25c05f)[_0x0b7e('0x2a')](function(_0x4fb1db){var _0x1c67d3={'role':_0x1105ed[_0x0b7e('0x95')][_0x0b7e('0x96')],'userProfileId':_0x1105ed['body'][_0x0b7e('0x97')]};if(!_0x1c67d3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1c67d3[_0x0b7e('0x96')]==='user'){var _0x1d33e8=_0x4fb1db['get']({'plain':!![]});return db[_0x0b7e('0x98')]['find']({'where':{'name':_0x0b7e('0x2d'),'userProfileId':_0x1c67d3['userProfileId']},'raw':!![]})['then'](function(_0x2d8d4f){if(_0x2d8d4f&&_0x2d8d4f[_0x0b7e('0x99')]===0x0){return db[_0x0b7e('0x2e')][_0x0b7e('0x94')]({'name':_0x1d33e8[_0x0b7e('0x31')],'resourceId':_0x1d33e8['id'],'type':_0x2d8d4f[_0x0b7e('0x31')],'sectionId':_0x2d8d4f['id']},{})[_0x0b7e('0x2a')](function(){return _0x4fb1db;});}else{return _0x4fb1db;}})[_0x0b7e('0x4a')](function(_0x2682b7){logger[_0x0b7e('0x2f')](_0x0b7e('0x9a'),_0x2682b7);throw _0x2682b7;});}return _0x4fb1db;})[_0x0b7e('0x2a')](respondWithResult(_0x1c8836,null))[_0x0b7e('0x4a')](handleError(_0x1c8836,null));}});}catch(_0x21b0d6){_0x1c8836[_0x0b7e('0x1f')](0x1f4)[_0x0b7e('0x32')](_0x21b0d6);}};function removeReferences(_0x2e5532,_0x1a9a01){try{if(_0x2e5532){fs[_0x0b7e('0x9b')](_0x2e5532);logger['info'](_0x0b7e('0x9c'));}if(_0x1a9a01){rimraf(_0x1a9a01,function(){});logger[_0x0b7e('0x6a')](_0x0b7e('0x9d'));}}catch(_0xa3594f){logger[_0x0b7e('0x2f')](_0xa3594f);}}exports[_0x0b7e('0x29')]=function(_0xe3ba74,_0x3587b3,_0x508c58){return db['Plugin']['find']({'where':{'id':_0xe3ba74[_0x0b7e('0x4c')]['id']}})[_0x0b7e('0x2a')](handleEntityNotFound(_0x3587b3,null))[_0x0b7e('0x2a')](saveUpdates(_0xe3ba74[_0x0b7e('0x95')],null))['then'](respondWithResult(_0x3587b3,null))[_0x0b7e('0x4a')](handleError(_0x3587b3,null));};exports[_0x0b7e('0x9e')]=function(_0x2eea05,_0x50bf4b,_0x32ecd9){return db[_0x0b7e('0x35')][_0x0b7e('0x4f')]({'where':{'id':_0x2eea05[_0x0b7e('0x4c')]['id']}})['then'](function(_0x343ca6){if(_0x343ca6){return _0x343ca6[_0x0b7e('0x2b')]();}})[_0x0b7e('0x2a')](function(_0x381b82){rimraf(path[_0x0b7e('0x51')](config['root'],_0x0b7e('0x53'),path[_0x0b7e('0x61')](_0x381b82[_0x0b7e('0x50')])),function(){});return _0x381b82;})[_0x0b7e('0x2a')](handleEntityNotFound(_0x50bf4b,null))[_0x0b7e('0x2a')](respondWithStatusCode(_0x50bf4b,null))[_0x0b7e('0x4a')](handleError(_0x50bf4b,null));};exports[_0x0b7e('0x9f')]=function(_0x260716,_0x4d6a34,_0x22e254){return BPromise[_0x0b7e('0xa0')]()[_0x0b7e('0x2a')](function(){if(!_0x260716[_0x0b7e('0x39')][_0x0b7e('0x50')]){throw new Error(_0x0b7e('0xa1'));}if(!_0x260716[_0x0b7e('0x39')]['port']){throw new Error(_0x0b7e('0xa2'));}var _0x5487fc=_0x260716[_0x0b7e('0x39')]['hostname']?_0x260716[_0x0b7e('0x39')][_0x0b7e('0xa3')]+':'+_0x260716[_0x0b7e('0x39')][_0x0b7e('0xa4')]:'http://localhost:'+_0x260716[_0x0b7e('0x39')][_0x0b7e('0xa4')];var _0x9bcfb3=_0x260716['query']['json']?_0x260716[_0x0b7e('0x39')][_0x0b7e('0x20')]:!![];var _0x33fd18=_0x260716[_0x0b7e('0x39')][_0x0b7e('0xa5')]?_0x260716[_0x0b7e('0x39')][_0x0b7e('0xa5')]:null;var _0x51ac5={'method':_0x260716[_0x0b7e('0xa6')],'uri':util['format'](_0x0b7e('0xa7'),_0x5487fc,_0x260716[_0x0b7e('0x39')]['path']),'json':_0x9bcfb3,'resolveWithFullResponse':!![],'encoding':_0x33fd18,'qs':_0x260716[_0x0b7e('0x39')]};if(_0x260716[_0x0b7e('0xa8')]){_0x51ac5[_0x0b7e('0xa8')]=_0x260716[_0x0b7e('0xa8')];if(_0x51ac5[_0x0b7e('0xa8')][_0x0b7e('0xa9')]){delete _0x51ac5['headers'][_0x0b7e('0xa9')];}}if(_0x51ac5[_0x0b7e('0xa8')]['content-type']){delete _0x51ac5[_0x0b7e('0xa8')][_0x0b7e('0xaa')];}return rp(_0x51ac5);})[_0x0b7e('0x2a')](function(_0x443218){if(_0x443218){_0x4d6a34[_0x0b7e('0x25')](_0x443218[_0x0b7e('0xa8')]);logger[_0x0b7e('0x6a')](_0x443218[_0x0b7e('0x95')]);if(_[_0x0b7e('0xab')](_0x260716['query'][_0x0b7e('0x50')],'download')&&_0x443218[_0x0b7e('0xac')]==0x1f4){return _0x4d6a34[_0x0b7e('0x1d')](_0x443218[_0x0b7e('0xac')]);}else{return _0x4d6a34[_0x0b7e('0x1f')](_0x443218['statusCode'])[_0x0b7e('0x32')](_0x443218[_0x0b7e('0x95')]);}}else{return _0x4d6a34[_0x0b7e('0x1d')](0xc8);}})[_0x0b7e('0x4a')](handleError(_0x4d6a34,null));};exports['webhookPost']=function(_0x39b271,_0x5949af,_0x759300){return BPromise[_0x0b7e('0xa0')]()[_0x0b7e('0x2a')](function(){if(!_0x39b271[_0x0b7e('0x39')]['path']){throw new Error(_0x0b7e('0xa1'));}if(!_0x39b271[_0x0b7e('0x39')]['port']){throw new Error(_0x0b7e('0xa2'));}var _0x5b9ada=_0x39b271['query'][_0x0b7e('0xa3')]?_0x39b271[_0x0b7e('0x39')][_0x0b7e('0xa3')]+':'+_0x39b271[_0x0b7e('0x39')]['port']:_0x0b7e('0xad')+_0x39b271[_0x0b7e('0x39')][_0x0b7e('0xa4')];var _0x561b29=_0x39b271[_0x0b7e('0x39')]['json']?_0x39b271['query'][_0x0b7e('0x20')]:!![];var _0xe562a9=_0x39b271[_0x0b7e('0x39')]['encoding']?_0x39b271[_0x0b7e('0x39')][_0x0b7e('0xa5')]:null;var _0x48bd4d={'method':_0x39b271[_0x0b7e('0xa6')],'uri':util[_0x0b7e('0x54')](_0x0b7e('0xa7'),_0x5b9ada,_0x39b271[_0x0b7e('0x39')][_0x0b7e('0x50')]),'json':_0x561b29,'resolveWithFullResponse':!![],'encoding':_0xe562a9,'body':_0x39b271[_0x0b7e('0x95')]};if(_0x39b271[_0x0b7e('0xa8')]){_0x48bd4d[_0x0b7e('0xa8')]=_0x39b271['headers'];if(_0x48bd4d[_0x0b7e('0xa8')][_0x0b7e('0xa9')]){delete _0x48bd4d[_0x0b7e('0xa8')][_0x0b7e('0xa9')];}}if(_0x48bd4d[_0x0b7e('0xa8')][_0x0b7e('0xaa')]){delete _0x48bd4d[_0x0b7e('0xa8')][_0x0b7e('0xaa')];}return rp(_0x48bd4d);})[_0x0b7e('0x2a')](function(_0xdc4464){if(_0xdc4464){_0x5949af['set'](_0xdc4464['headers']);logger[_0x0b7e('0x6a')](_0xdc4464[_0x0b7e('0x95')]);return _0x5949af[_0x0b7e('0x1f')](_0xdc4464[_0x0b7e('0xac')])[_0x0b7e('0x32')](_0xdc4464[_0x0b7e('0x95')]);}else{return _0x5949af['sendStatus'](0xc8);}})[_0x0b7e('0x4a')](handleError(_0x5949af,null));};
\ No newline at end of file
+var _0x13f2=['../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./plugin.socket','sendStatus','status','offset','undefined','count','limit','set','apply','reject','save','update','then','get','Plugins','UserProfileResource','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','params','Plugin','find','download','path','join','root','server/files/plugins','%s.zip','basename','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','readdirSync','some','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','version','html','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','scriptPath','body','role','user','UserProfileSection','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','json','encoding','method','%s%s','headers','content-length','content-type','statusCode','resolve','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','rimraf','archiver','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x79ebc5,_0x2df5d1){var _0x3813b6=function(_0x4e2769){while(--_0x4e2769){_0x79ebc5['push'](_0x79ebc5['shift']());}};_0x3813b6(++_0x2df5d1);}(_0x13f2,0x90));var _0x213f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x13f2[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x213f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x213f('0x1'));var jsonpatch=require(_0x213f('0x2'));var rp=require(_0x213f('0x3'));var moment=require(_0x213f('0x4'));var BPromise=require(_0x213f('0x5'));var Mustache=require(_0x213f('0x6'));var util=require(_0x213f('0x7'));var path=require('path');var sox=require(_0x213f('0x8'));var csv=require(_0x213f('0x9'));var ejs=require(_0x213f('0xa'));var fs=require('fs');var fs_extra=require(_0x213f('0xb'));var _=require(_0x213f('0xc'));var squel=require(_0x213f('0xd'));var crypto=require(_0x213f('0xe'));var jsforce=require(_0x213f('0xf'));var deskjs=require(_0x213f('0x10'));var toCsv=require('to-csv');var querystring=require(_0x213f('0x11'));var Papa=require(_0x213f('0x12'));var extract=require(_0x213f('0x13'));var rimraf=require(_0x213f('0x14'));var archiver=require(_0x213f('0x15'));var Redis=require('ioredis');var authService=require(_0x213f('0x16'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x213f('0x17'));var logger=require(_0x213f('0x18'))(_0x213f('0x19'));var utils=require(_0x213f('0x1a'));var config=require(_0x213f('0x1b'));var licenseUtil=require(_0x213f('0x1c'));var db=require(_0x213f('0x1d'))['db'];config[_0x213f('0x1e')]=_['defaults'](config['redis'],{'host':_0x213f('0x1f'),'port':0x18eb});var socket=require(_0x213f('0x20'))(new Redis(config[_0x213f('0x1e')]));require(_0x213f('0x21'))['register'](socket);function respondWithStatusCode(_0xdad3de,_0x13c54f){_0x13c54f=_0x13c54f||0xcc;return function(_0x44eea2){if(_0x44eea2){return _0xdad3de[_0x213f('0x22')](_0x13c54f);}return _0xdad3de['status'](_0x13c54f)['end']();};}function respondWithResult(_0x54d664,_0x181320){_0x181320=_0x181320||0xc8;return function(_0x4767b0){if(_0x4767b0){return _0x54d664[_0x213f('0x23')](_0x181320)['json'](_0x4767b0);}};}function respondWithFilteredResult(_0x4c56c0,_0x3a2a27){return function(_0x584574){if(_0x584574){var _0x556d9f=typeof _0x3a2a27[_0x213f('0x24')]===_0x213f('0x25')&&typeof _0x3a2a27['limit']===_0x213f('0x25');var _0x50547d=_0x584574[_0x213f('0x26')];var _0x58021d=_0x556d9f?0x0:_0x3a2a27[_0x213f('0x24')];var _0x3fcf6d=_0x556d9f?_0x584574[_0x213f('0x26')]:_0x3a2a27[_0x213f('0x24')]+_0x3a2a27[_0x213f('0x27')];var _0x416b4b;if(_0x3fcf6d>=_0x50547d){_0x3fcf6d=_0x50547d;_0x416b4b=0xc8;}else{_0x416b4b=0xce;}_0x4c56c0[_0x213f('0x23')](_0x416b4b);return _0x4c56c0[_0x213f('0x28')]('Content-Range',_0x58021d+'-'+_0x3fcf6d+'/'+_0x50547d)['json'](_0x584574);}return null;};}function patchUpdates(_0x1ec3fd){return function(_0x39fd07){try{jsonpatch[_0x213f('0x29')](_0x39fd07,_0x1ec3fd,!![]);}catch(_0x22c79f){return BPromise[_0x213f('0x2a')](_0x22c79f);}return _0x39fd07[_0x213f('0x2b')]();};}function saveUpdates(_0x4204cc,_0x51b795){return function(_0x2cb0c2){if(_0x2cb0c2){return _0x2cb0c2[_0x213f('0x2c')](_0x4204cc)[_0x213f('0x2d')](function(_0x7d7325){return _0x7d7325;});}return null;};}function removeEntity(_0x33ae69,_0x389da2){return function(_0xf14104){if(_0xf14104){return _0xf14104['destroy']()[_0x213f('0x2d')](function(){var _0x28f1f8=_0xf14104[_0x213f('0x2e')]({'plain':!![]});var _0x190731=_0x213f('0x2f');return db[_0x213f('0x30')][_0x213f('0x31')]({'where':{'type':_0x190731,'resourceId':_0x28f1f8['id']}})[_0x213f('0x2d')](function(){return _0xf14104;});})['then'](function(){_0x33ae69[_0x213f('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dbbf5,_0x55c1f5){return function(_0x203896){if(!_0x203896){_0x5dbbf5['sendStatus'](0x194);}return _0x203896;};}function handleError(_0x341cb3,_0x38fafd){_0x38fafd=_0x38fafd||0x1f4;return function(_0x16d36a){logger[_0x213f('0x32')](_0x16d36a[_0x213f('0x33')]);if(_0x16d36a[_0x213f('0x34')]){delete _0x16d36a[_0x213f('0x34')];}_0x341cb3[_0x213f('0x23')](_0x38fafd)['send'](_0x16d36a);};}exports[_0x213f('0x35')]=function(_0x311b4d,_0x383554){var _0x1808b7={},_0x181f9a={},_0x43a823={'count':0x0,'rows':[]};var _0xe18f6f=_[_0x213f('0x36')](db['Plugin'][_0x213f('0x37')],function(_0x3cd86e){return{'name':_0x3cd86e[_0x213f('0x38')],'type':_0x3cd86e[_0x213f('0x39')]['key']};});_0x181f9a[_0x213f('0x3a')]=_['map'](_0xe18f6f,_0x213f('0x34'));_0x181f9a['query']=_[_0x213f('0x3b')](_0x311b4d['query']);_0x181f9a[_0x213f('0x3c')]=_[_0x213f('0x3d')](_0x181f9a[_0x213f('0x3a')],_0x181f9a[_0x213f('0x3e')]);_0x1808b7[_0x213f('0x3f')]=_['intersection'](_0x181f9a[_0x213f('0x3a')],qs[_0x213f('0x40')](_0x311b4d[_0x213f('0x3e')][_0x213f('0x40')]));_0x1808b7[_0x213f('0x3f')]=_0x1808b7[_0x213f('0x3f')][_0x213f('0x41')]?_0x1808b7[_0x213f('0x3f')]:_0x181f9a[_0x213f('0x3a')];if(!_0x311b4d[_0x213f('0x3e')][_0x213f('0x42')]('nolimit')){_0x1808b7['limit']=qs[_0x213f('0x27')](_0x311b4d[_0x213f('0x3e')]['limit']);_0x1808b7[_0x213f('0x24')]=qs[_0x213f('0x24')](_0x311b4d['query'][_0x213f('0x24')]);}_0x1808b7[_0x213f('0x43')]=qs[_0x213f('0x44')](_0x311b4d['query']['sort']);_0x1808b7['where']=qs[_0x213f('0x3c')](_[_0x213f('0x45')](_0x311b4d[_0x213f('0x3e')],_0x181f9a[_0x213f('0x3c')]),_0xe18f6f);if(_0x311b4d[_0x213f('0x3e')][_0x213f('0x46')]){_0x1808b7[_0x213f('0x47')]=_[_0x213f('0x48')](_0x1808b7['where'],{'$or':_['map'](_0xe18f6f,function(_0x598671){if(_0x598671[_0x213f('0x39')]!=='VIRTUAL'){var _0x5a91f6={};_0x5a91f6[_0x598671[_0x213f('0x34')]]={'$like':'%'+_0x311b4d[_0x213f('0x3e')][_0x213f('0x46')]+'%'};return _0x5a91f6;}})});}_0x1808b7=_['merge']({},_0x1808b7,_0x311b4d[_0x213f('0x49')]);var _0x39ff3d={'where':_0x1808b7[_0x213f('0x47')]};return db['Plugin'][_0x213f('0x26')](_0x39ff3d)[_0x213f('0x2d')](function(_0x4372df){_0x43a823[_0x213f('0x26')]=_0x4372df;if(_0x311b4d['query'][_0x213f('0x4a')]){_0x1808b7[_0x213f('0x4b')]=[{'all':!![]}];}return db['Plugin'][_0x213f('0x4c')](_0x1808b7);})['then'](function(_0x3f4976){_0x43a823[_0x213f('0x4d')]=_0x3f4976;return _0x43a823;})[_0x213f('0x2d')](respondWithFilteredResult(_0x383554,_0x1808b7))[_0x213f('0x4e')](handleError(_0x383554,null));};exports['show']=function(_0xf3b3fb,_0x144cb0){var _0x2665b6={'raw':!![],'where':{'id':_0xf3b3fb[_0x213f('0x4f')]['id']}},_0x3f2a7b={};_0x3f2a7b[_0x213f('0x3a')]=_[_0x213f('0x3b')](db[_0x213f('0x50')][_0x213f('0x37')]);_0x3f2a7b['query']=_[_0x213f('0x3b')](_0xf3b3fb[_0x213f('0x3e')]);_0x3f2a7b[_0x213f('0x3c')]=_['intersection'](_0x3f2a7b['model'],_0x3f2a7b[_0x213f('0x3e')]);_0x2665b6[_0x213f('0x3f')]=_[_0x213f('0x3d')](_0x3f2a7b[_0x213f('0x3a')],qs[_0x213f('0x40')](_0xf3b3fb[_0x213f('0x3e')][_0x213f('0x40')]));_0x2665b6[_0x213f('0x3f')]=_0x2665b6['attributes'][_0x213f('0x41')]?_0x2665b6['attributes']:_0x3f2a7b['model'];if(_0xf3b3fb[_0x213f('0x3e')][_0x213f('0x4a')]){_0x2665b6[_0x213f('0x4b')]=[{'all':!![]}];}_0x2665b6=_[_0x213f('0x48')]({},_0x2665b6,_0xf3b3fb[_0x213f('0x49')]);return db[_0x213f('0x50')][_0x213f('0x51')](_0x2665b6)[_0x213f('0x2d')](handleEntityNotFound(_0x144cb0,null))['then'](respondWithResult(_0x144cb0,null))[_0x213f('0x4e')](handleError(_0x144cb0,null));};exports[_0x213f('0x52')]=function(_0xab9ce3,_0x1cba4a,_0x176498){return db[_0x213f('0x50')]['find']({'where':{'id':_0xab9ce3[_0x213f('0x4f')]['id']},'attributes':['name',_0x213f('0x53')],'raw':!![]})[_0x213f('0x2d')](handleEntityNotFound(_0x1cba4a,null))[_0x213f('0x2d')](function(_0x904381){if(_0x904381){var _0x51518f=path[_0x213f('0x54')](config[_0x213f('0x55')],_0x213f('0x56'),util['format'](_0x213f('0x57'),path[_0x213f('0x58')](_0x904381[_0x213f('0x53')])));var _0x4c0b51=fs['createWriteStream'](_0x51518f);var _0x15759f=archiver('zip',{'zlib':{'level':0x9}});_0x15759f['on'](_0x213f('0x59'),function(_0x50981e){if(_0x50981e[_0x213f('0x5a')]===_0x213f('0x5b')){logger['error'](_0x50981e);}else{throw new db[(_0x213f('0x5c'))][(_0x213f('0x5d'))](_0x213f('0x5e'));}});_0x15759f['on'](_0x213f('0x32'),function(_0x3f7a56){throw new db['Sequelize'][(_0x213f('0x5d'))](_0x213f('0x5e'));});_0x15759f[_0x213f('0x5f')](_0x4c0b51);_0x15759f[_0x213f('0x60')](_0x213f('0x61'),{'cwd':path['join'](config[_0x213f('0x55')],_0x213f('0x56'),path[_0x213f('0x62')](_0x904381[_0x213f('0x53')])),'ignore':[path[_0x213f('0x54')](path[_0x213f('0x58')](_0x904381[_0x213f('0x53')]),'node_modules/**/*'),path[_0x213f('0x54')](path['basename'](_0x904381['path']),_0x213f('0x63'))],'nodir':!![]})[_0x213f('0x64')]();_0x4c0b51['on'](_0x213f('0x65'),function(){if(!fs[_0x213f('0x66')](_0x51518f)){throw new db['Sequelize'][(_0x213f('0x5d'))](_0x213f('0x67'));}return _0x1cba4a[_0x213f('0x52')](_0x51518f,util[_0x213f('0x68')](_0x213f('0x57'),path['basename'](_0x904381[_0x213f('0x53')])),function(_0x308bbf){if(_0x308bbf){throw new db['Sequelize'][(_0x213f('0x5d'))](_0x213f('0x69'));}fs[_0x213f('0x6a')](_0x51518f);logger[_0x213f('0x6b')](_0x213f('0x6c'));logger['info'](_0x213f('0x6d'));});});}return null;})[_0x213f('0x4e')](handleError(_0x1cba4a,null));};exports['upload']=function(_0x4036d8,_0x20f090,_0x206400){var _0x35e8f6=path[_0x213f('0x58')](_0x4036d8[_0x213f('0x6e')][_0x213f('0x6f')],path[_0x213f('0x70')](_0x4036d8[_0x213f('0x6e')]['filename']));var _0x8864c2=path['join'](config[_0x213f('0x55')],_0x213f('0x56'),_0x4036d8[_0x213f('0x6e')]['filename']);var _0x291ebc=path[_0x213f('0x54')](config['root'],_0x213f('0x56'),_0x35e8f6);logger[_0x213f('0x6b')](_0x213f('0x71'),_0x8864c2);logger['info'](_0x213f('0x72'),_0x291ebc);try{fs[_0x213f('0x73')](_0x8864c2,parseInt(_0x213f('0x74'),0x8));extract(_0x8864c2,{'dir':_0x291ebc},function(_0xb56bdb){if(_0xb56bdb){logger[_0x213f('0x32')](_0xb56bdb);handleError(_0xb56bdb,!![]);};var _0x374d44=fs['readdirSync'](_0x291ebc);if(_0x374d44['length']>0x1){removeReferences(_0x8864c2,_0x291ebc);logger[_0x213f('0x32')](_0x213f('0x75'));return _0x206400(new Error(_0x213f('0x75')));}var _0x3d3e86=fs[_0x213f('0x76')](path[_0x213f('0x54')](_0x291ebc,_0x374d44[0x0]));if(_0x3d3e86[_0x213f('0x77')]()){removeReferences(_0x8864c2,_0x291ebc);logger[_0x213f('0x32')]('Invalid\x20plugin\x20structure');return _0x206400(new Error(_0x213f('0x75')));}if(_0x3d3e86[_0x213f('0x78')]()){var _0x1d897a=fs[_0x213f('0x79')](path[_0x213f('0x54')](_0x291ebc,_0x374d44[0x0]));if(_0x1d897a[_0x213f('0x41')]===0x0){removeReferences(_0x8864c2,_0x291ebc);logger[_0x213f('0x32')]('Invalid\x20plugin\x20structure');return _0x206400(new Error(_0x213f('0x75')));}var _0x47e823=_0x1d897a[_0x213f('0x7a')](function(_0xfd2039){return _0xfd2039==='manifest.json';});if(!_0x47e823){return _0x206400(new Error(_0x213f('0x7b')));}var _0x2f23d5=fs[_0x213f('0x7c')](path[_0x213f('0x54')](_0x291ebc,_0x374d44[0x0],'manifest.json'));var _0x2a48e0=JSON['parse'](_0x2f23d5);if('undefined'==typeof _0x2a48e0[_0x213f('0x34')]){return _0x206400(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0x213f('0x25')==typeof _0x2a48e0[_0x213f('0x39')]){return _0x206400(new Error(_0x213f('0x7d')));}if(_0x213f('0x25')==typeof _0x2a48e0['version']){return _0x206400(new Error(_0x213f('0x7e')));}if(_0x213f('0x25')==typeof _0x2a48e0['parameters']){return _0x206400(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x2a48e0[_0x213f('0x39')]==='html'){if(_0x213f('0x25')==typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')]){return _0x206400(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x213f('0x25')==typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')][_0x213f('0x81')]&&'undefined'==typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')][_0x213f('0x82')]){return _0x206400(new Error(_0x213f('0x83')));}}else if(_0x2a48e0[_0x213f('0x39')]==='script'){if('undefined'==typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x84')]){return _0x206400(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0x213f('0x25')==typeof _0x2a48e0['parameters']['scriptPath']){return _0x206400(new Error(_0x213f('0x85')));}}else{return _0x206400(new Error(_0x213f('0x86')));}var _0xcd5c36=_0x2a48e0[_0x213f('0x34')];var _0x279796=_0x2a48e0[_0x213f('0x87')];var _0x118004=_0x2a48e0[_0x213f('0x39')];var _0xbf1239=_0x2a48e0[_0x213f('0x88')]?_0x2a48e0['sidebar']:_0x213f('0x89');var _0x3913aa=_0x2a48e0[_0x213f('0x8a')]?_0x2a48e0[_0x213f('0x8a')]:_0x213f('0x8b');var _0x2a31fd='';var _0x525da4='';var _0x5936b='';var _0x34f8dd='';var _0x424ab1=_0x2a48e0[_0x213f('0x8c')];if(_0x118004===_0x213f('0x8d')){if(_0x213f('0x25')!=typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')][_0x213f('0x81')]){var _0x24ff19=_0x2a48e0[_0x213f('0x7f')]['views'][_0x213f('0x81')];if(!/^(f|ht)tps?:\/\//i[_0x213f('0x8e')](_0x24ff19)){_0x2a31fd=path[_0x213f('0x54')](_0x213f('0x8f'),_0x35e8f6,_0x374d44[0x0],_0x24ff19);}else{_0x2a31fd=_0x24ff19;}}else{logger[_0x213f('0x6b')](_0x213f('0x90'));}if(_0x213f('0x25')!=typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')]['agent']){var _0x186ec1=_0x2a48e0['parameters']['views']['agent'];if(!/^(f|ht)tps?:\/\//i[_0x213f('0x8e')](_0x186ec1)){_0x525da4=path['join']('plugins',_0x35e8f6,_0x374d44[0x0],_0x186ec1);}else{_0x525da4=_0x186ec1;}}else{logger[_0x213f('0x6b')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x118004==='script'){_0x5936b=_0x2a48e0[_0x213f('0x7f')][_0x213f('0x84')];_0x34f8dd=_0x2a48e0[_0x213f('0x7f')][_0x213f('0x91')];if(_0x213f('0x25')!=typeof _0x2a48e0[_0x213f('0x7f')]['views']){if(_0x213f('0x25')!=typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')][_0x213f('0x81')]){var _0x24ff19=_0x2a48e0['parameters'][_0x213f('0x80')][_0x213f('0x81')];if(!/^(f|ht)tps?:\/\//i[_0x213f('0x8e')](_0x24ff19)){_0x2a31fd=path[_0x213f('0x54')](_0x213f('0x8f'),_0x35e8f6,_0x374d44[0x0],_0x24ff19);}else{_0x2a31fd=_0x24ff19;}}if('undefined'!=typeof _0x2a48e0[_0x213f('0x7f')]['views'][_0x213f('0x82')]){var _0x186ec1=_0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x213f('0x8e')](_0x186ec1)){_0x525da4=path[_0x213f('0x54')](_0x213f('0x8f'),_0x35e8f6,_0x374d44[0x0],_0x186ec1);}else{_0x525da4=_0x186ec1;}}}}var _0x26052b={'name':_0xcd5c36,'description':_0x279796,'path':path[_0x213f('0x54')](_0x35e8f6,_0x374d44[0x0]),'type':_0x118004,'sidebar':_0xbf1239,'icon':_0x3913aa,'adminUrl':_0x2a31fd,'agentUrl':_0x525da4,'scriptName':_0x5936b,'scriptPath':_0x34f8dd,'version':_0x424ab1};removeReferences(_0x8864c2,null);return db['Plugin']['create'](_0x26052b)['then'](function(_0xed76ab){var _0x4b31be={'role':_0x4036d8[_0x213f('0x92')][_0x213f('0x93')],'userProfileId':_0x4036d8['body']['userProfileId']};if(!_0x4b31be)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b31be[_0x213f('0x93')]===_0x213f('0x94')){var _0x2c21c5=_0xed76ab[_0x213f('0x2e')]({'plain':!![]});return db[_0x213f('0x95')][_0x213f('0x51')]({'where':{'name':_0x213f('0x2f'),'userProfileId':_0x4b31be['userProfileId']},'raw':!![]})[_0x213f('0x2d')](function(_0x51c859){if(_0x51c859&&_0x51c859['autoAssociation']===0x0){return db[_0x213f('0x30')][_0x213f('0x96')]({'name':_0x2c21c5[_0x213f('0x34')],'resourceId':_0x2c21c5['id'],'type':_0x51c859[_0x213f('0x34')],'sectionId':_0x51c859['id']},{})[_0x213f('0x2d')](function(){return _0xed76ab;});}else{return _0xed76ab;}})['catch'](function(_0x523cd4){logger[_0x213f('0x32')](_0x213f('0x97'),_0x523cd4);throw _0x523cd4;});}return _0xed76ab;})[_0x213f('0x2d')](respondWithResult(_0x20f090,null))['catch'](handleError(_0x20f090,null));}});}catch(_0x33b404){_0x20f090[_0x213f('0x23')](0x1f4)[_0x213f('0x98')](_0x33b404);}};function removeReferences(_0x5c918d,_0x31ec9b){try{if(_0x5c918d){fs[_0x213f('0x6a')](_0x5c918d);logger[_0x213f('0x6b')](_0x213f('0x99'));}if(_0x31ec9b){rimraf(_0x31ec9b,function(){});logger['info'](_0x213f('0x9a'));}}catch(_0x20ae86){logger[_0x213f('0x32')](_0x20ae86);}}exports[_0x213f('0x2c')]=function(_0x5bd74c,_0x4f8729,_0x2eddc2){return db[_0x213f('0x50')]['find']({'where':{'id':_0x5bd74c[_0x213f('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4f8729,null))[_0x213f('0x2d')](saveUpdates(_0x5bd74c[_0x213f('0x92')],null))['then'](respondWithResult(_0x4f8729,null))[_0x213f('0x4e')](handleError(_0x4f8729,null));};exports[_0x213f('0x9b')]=function(_0x109624,_0x2a9fc7,_0x59ef6b){return db['Plugin']['find']({'where':{'id':_0x109624['params']['id']}})['then'](function(_0x172624){if(_0x172624){return _0x172624['destroy']();}})[_0x213f('0x2d')](function(_0x42c19b){rimraf(path['join'](config[_0x213f('0x55')],_0x213f('0x56'),path[_0x213f('0x62')](_0x42c19b[_0x213f('0x53')])),function(){});return _0x42c19b;})[_0x213f('0x2d')](handleEntityNotFound(_0x2a9fc7,null))['then'](respondWithStatusCode(_0x2a9fc7,null))[_0x213f('0x4e')](handleError(_0x2a9fc7,null));};exports[_0x213f('0x9c')]=function(_0x4cf5d2,_0x564c38,_0x22f8af){return BPromise['resolve']()[_0x213f('0x2d')](function(){if(!_0x4cf5d2[_0x213f('0x3e')][_0x213f('0x53')]){throw new Error(_0x213f('0x9d'));}if(!_0x4cf5d2['query']['port']){throw new Error(_0x213f('0x9e'));}var _0x380030=_0x4cf5d2['query'][_0x213f('0x9f')]?_0x4cf5d2[_0x213f('0x3e')][_0x213f('0x9f')]+':'+_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa0')]:_0x213f('0xa1')+_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa0')];var _0x3c5e39=_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa2')]?_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa2')]:!![];var _0x232faf=_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa3')]?_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa3')]:null;var _0x15f760={'method':_0x4cf5d2[_0x213f('0xa4')],'uri':util[_0x213f('0x68')](_0x213f('0xa5'),_0x380030,_0x4cf5d2['query'][_0x213f('0x53')]),'json':_0x3c5e39,'resolveWithFullResponse':!![],'encoding':_0x232faf,'qs':_0x4cf5d2['query']};if(_0x4cf5d2[_0x213f('0xa6')]){_0x15f760[_0x213f('0xa6')]=_0x4cf5d2[_0x213f('0xa6')];if(_0x15f760[_0x213f('0xa6')][_0x213f('0xa7')]){delete _0x15f760['headers']['content-length'];}}if(_0x15f760[_0x213f('0xa6')][_0x213f('0xa8')]){delete _0x15f760[_0x213f('0xa6')][_0x213f('0xa8')];}return rp(_0x15f760);})[_0x213f('0x2d')](function(_0x577671){if(_0x577671){_0x564c38['set'](_0x577671[_0x213f('0xa6')]);logger[_0x213f('0x6b')](_0x577671[_0x213f('0x92')]);if(_['endsWith'](_0x4cf5d2[_0x213f('0x3e')][_0x213f('0x53')],_0x213f('0x52'))&&_0x577671[_0x213f('0xa9')]==0x1f4){return _0x564c38['sendStatus'](_0x577671[_0x213f('0xa9')]);}else{return _0x564c38[_0x213f('0x23')](_0x577671[_0x213f('0xa9')])['send'](_0x577671[_0x213f('0x92')]);}}else{return _0x564c38['sendStatus'](0xc8);}})[_0x213f('0x4e')](handleError(_0x564c38,null));};exports['webhookPost']=function(_0xb48a98,_0x160bd9,_0x18b3ce){return BPromise[_0x213f('0xaa')]()[_0x213f('0x2d')](function(){if(!_0xb48a98[_0x213f('0x3e')][_0x213f('0x53')]){throw new Error(_0x213f('0x9d'));}if(!_0xb48a98[_0x213f('0x3e')]['port']){throw new Error(_0x213f('0x9e'));}var _0x2b0f60=_0xb48a98[_0x213f('0x3e')]['hostname']?_0xb48a98[_0x213f('0x3e')][_0x213f('0x9f')]+':'+_0xb48a98[_0x213f('0x3e')][_0x213f('0xa0')]:_0x213f('0xa1')+_0xb48a98[_0x213f('0x3e')][_0x213f('0xa0')];var _0xfbbff2=_0xb48a98[_0x213f('0x3e')][_0x213f('0xa2')]?_0xb48a98[_0x213f('0x3e')]['json']:!![];var _0x77cbb9=_0xb48a98[_0x213f('0x3e')][_0x213f('0xa3')]?_0xb48a98['query'][_0x213f('0xa3')]:null;var _0x4aead4={'method':_0xb48a98[_0x213f('0xa4')],'uri':util[_0x213f('0x68')]('%s%s',_0x2b0f60,_0xb48a98[_0x213f('0x3e')][_0x213f('0x53')]),'json':_0xfbbff2,'resolveWithFullResponse':!![],'encoding':_0x77cbb9,'body':_0xb48a98['body']};if(_0xb48a98[_0x213f('0xa6')]){_0x4aead4[_0x213f('0xa6')]=_0xb48a98[_0x213f('0xa6')];if(_0x4aead4[_0x213f('0xa6')]['content-length']){delete _0x4aead4[_0x213f('0xa6')][_0x213f('0xa7')];}}if(_0x4aead4['headers']['content-type']){delete _0x4aead4[_0x213f('0xa6')][_0x213f('0xa8')];}return rp(_0x4aead4);})['then'](function(_0x5cfa5e){if(_0x5cfa5e){_0x160bd9[_0x213f('0x28')](_0x5cfa5e['headers']);logger[_0x213f('0x6b')](_0x5cfa5e[_0x213f('0x92')]);return _0x160bd9[_0x213f('0x23')](_0x5cfa5e[_0x213f('0xa9')])[_0x213f('0x98')](_0x5cfa5e[_0x213f('0x92')]);}else{return _0x160bd9[_0x213f('0x22')](0xc8);}})[_0x213f('0x4e')](handleError(_0x160bd9,null));};
\ No newline at end of file
index 9f1da95..d52c901 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0adf=['Plugin','save','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x5ee46b,_0x9a3716){var _0x3e031c=function(_0x502308){while(--_0x502308){_0x5ee46b['push'](_0x5ee46b['shift']());}};_0x3e031c(++_0x9a3716);}(_0x0adf,0x1d2));var _0xf0ad=function(_0x499cfb,_0x344ccf){_0x499cfb=_0x499cfb-0x0;var _0x2b948d=_0x0adf[_0x499cfb];return _0x2b948d;};'use strict';var EventEmitter=require(_0xf0ad('0x0'));var Plugin=require(_0xf0ad('0x1'))['db'][_0xf0ad('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf0ad('0x3'),'afterUpdate':_0xf0ad('0x4'),'afterDestroy':_0xf0ad('0x5')};function emitEvent(_0x187aa4){return function(_0x27d666,_0x459e70,_0x719547){PluginEvents['emit'](_0x187aa4+':'+_0x27d666['id'],_0x27d666);PluginEvents[_0xf0ad('0x6')](_0x187aa4,_0x27d666);_0x719547(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin[_0xf0ad('0x7')](e,emitEvent(event));}}module[_0xf0ad('0x8')]=PluginEvents;
\ No newline at end of file
+var _0xb138=['setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','Plugin'];(function(_0x3e69ae,_0x366e8d){var _0x3d7f42=function(_0x5df093){while(--_0x5df093){_0x3e69ae['push'](_0x3e69ae['shift']());}};_0x3d7f42(++_0x366e8d);}(_0xb138,0x1dd));var _0x8b13=function(_0x4143d1,_0x4716d0){_0x4143d1=_0x4143d1-0x0;var _0x28d009=_0xb138[_0x4143d1];return _0x28d009;};'use strict';var EventEmitter=require(_0x8b13('0x0'));var Plugin=require(_0x8b13('0x1'))['db'][_0x8b13('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x8b13('0x3')](0x0);var events={'afterCreate':_0x8b13('0x4'),'afterUpdate':_0x8b13('0x5'),'afterDestroy':_0x8b13('0x6')};function emitEvent(_0x5369d4){return function(_0x4411a0,_0x241acb,_0x3af81a){PluginEvents['emit'](_0x5369d4+':'+_0x4411a0['id'],_0x4411a0);PluginEvents[_0x8b13('0x7')](_0x5369d4,_0x4411a0);_0x3af81a(null);};}for(var e in events){if(events[_0x8b13('0x8')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module[_0x8b13('0x9')]=PluginEvents;
\ No newline at end of file
index eca7ee2..6ec5768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8db9=['api','moment','request-promise','path','rimraf','./plugin.attributes','exports','define','Plugin','plugins','../../config/logger'];(function(_0x1d93c8,_0x15b37b){var _0x33f5bd=function(_0x5d75e0){while(--_0x5d75e0){_0x1d93c8['push'](_0x1d93c8['shift']());}};_0x33f5bd(++_0x15b37b);}(_0x8db9,0x11d));var _0x98db=function(_0x4bac77,_0x3babc1){_0x4bac77=_0x4bac77-0x0;var _0x90e201=_0x8db9[_0x4bac77];return _0x90e201;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x98db('0x0'))(_0x98db('0x1'));var moment=require(_0x98db('0x2'));var BPromise=require('bluebird');var rp=require(_0x98db('0x3'));var fs=require('fs');var path=require(_0x98db('0x4'));var rimraf=require(_0x98db('0x5'));var config=require('../../config/environment');var attributes=require(_0x98db('0x6'));module[_0x98db('0x7')]=function(_0x169cf9,_0x223332){return _0x169cf9[_0x98db('0x8')](_0x98db('0x9'),attributes,{'tableName':_0x98db('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ae5=['plugins','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./plugin.attributes','exports','Plugin'];(function(_0x3635ce,_0x33a6f9){var _0x97ecd0=function(_0x123d98){while(--_0x123d98){_0x3635ce['push'](_0x3635ce['shift']());}};_0x97ecd0(++_0x33a6f9);}(_0x6ae5,0x1d5));var _0x56ae=function(_0xb0b1b1,_0x11742c){_0xb0b1b1=_0xb0b1b1-0x0;var _0x1e457b=_0x6ae5[_0xb0b1b1];return _0x1e457b;};'use strict';var _=require(_0x56ae('0x0'));var util=require(_0x56ae('0x1'));var logger=require(_0x56ae('0x2'))(_0x56ae('0x3'));var moment=require(_0x56ae('0x4'));var BPromise=require('bluebird');var rp=require(_0x56ae('0x5'));var fs=require('fs');var path=require(_0x56ae('0x6'));var rimraf=require('rimraf');var config=require(_0x56ae('0x7'));var attributes=require(_0x56ae('0x8'));module[_0x56ae('0x9')]=function(_0x209518,_0x4d4046){return _0x209518['define'](_0x56ae('0xa'),attributes,{'tableName':_0x56ae('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b38aa48..62b07f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a58=['../../config/environment','client','http','redis','localhost','socket.io-emitter','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreatePlugin','Plugin','create','body','options','raw','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x29771f,_0x1189ae){var _0x279baf=function(_0xd66325){while(--_0xd66325){_0x29771f['push'](_0x29771f['shift']());}};_0x279baf(++_0x1189ae);}(_0x4a58,0x1b1));var _0x84a5=function(_0x472ded,_0x7b9b67){_0x472ded=_0x472ded-0x0;var _0x4cdf81=_0x4a58[_0x472ded];return _0x4cdf81;};'use strict';var _=require(_0x84a5('0x0'));var util=require(_0x84a5('0x1'));var moment=require(_0x84a5('0x2'));var BPromise=require(_0x84a5('0x3'));var rs=require(_0x84a5('0x4'));var fs=require('fs');var Redis=require(_0x84a5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x84a5('0x6'));var logger=require(_0x84a5('0x7'))(_0x84a5('0x8'));var config=require(_0x84a5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x84a5('0xa')][_0x84a5('0xb')]({'port':0x232a});config[_0x84a5('0xc')]=_['defaults'](config[_0x84a5('0xc')],{'host':_0x84a5('0xd'),'port':0x18eb});var socket=require(_0x84a5('0xe'))(new Redis(config[_0x84a5('0xc')]));require('./plugin.socket')[_0x84a5('0xf')](socket);function respondWithRpcPromise(_0x4b5b51,_0x3c9946,_0x4d890e){return new BPromise(function(_0x3b9f1e,_0x49c64a){return client[_0x84a5('0x10')](_0x4b5b51,_0x4d890e)[_0x84a5('0x11')](function(_0x4b3b6b){logger[_0x84a5('0x12')](_0x84a5('0x13'),_0x3c9946,'request\x20sent');logger['debug']('Plugin,\x20%s,\x20%s,\x20%s',_0x3c9946,_0x84a5('0x14'),JSON[_0x84a5('0x15')](_0x4b3b6b));if(_0x4b3b6b[_0x84a5('0x16')]){if(_0x4b3b6b[_0x84a5('0x16')][_0x84a5('0x17')]===0x1f4){logger[_0x84a5('0x16')](_0x84a5('0x13'),_0x3c9946,_0x4b3b6b[_0x84a5('0x16')][_0x84a5('0x18')]);return _0x49c64a(_0x4b3b6b[_0x84a5('0x16')][_0x84a5('0x18')]);}logger['error'](_0x84a5('0x13'),_0x3c9946,_0x4b3b6b[_0x84a5('0x16')]['message']);return _0x3b9f1e(_0x4b3b6b[_0x84a5('0x16')][_0x84a5('0x18')]);}else{logger[_0x84a5('0x12')](_0x84a5('0x13'),_0x3c9946,_0x84a5('0x14'));_0x3b9f1e(_0x4b3b6b[_0x84a5('0x19')][_0x84a5('0x18')]);}})[_0x84a5('0x1a')](function(_0x33f2a3){logger['error']('Plugin,\x20%s,\x20%s',_0x3c9946,_0x33f2a3);_0x49c64a(_0x33f2a3);});});}exports[_0x84a5('0x1b')]=function(_0x382081){var _0x5a2e7e=this;return new Promise(function(_0x591a8e,_0x37671e){return db[_0x84a5('0x1c')][_0x84a5('0x1d')](_0x382081[_0x84a5('0x1e')],{'raw':_0x382081[_0x84a5('0x1f')]?_0x382081[_0x84a5('0x1f')][_0x84a5('0x20')]===undefined?!![]:![]:!![]})[_0x84a5('0x11')](function(_0x18b44e){logger[_0x84a5('0x12')]('CreatePlugin',_0x382081);logger[_0x84a5('0x21')](_0x84a5('0x1b'),_0x382081,JSON[_0x84a5('0x15')](_0x18b44e));_0x591a8e(_0x18b44e);})[_0x84a5('0x1a')](function(_0x462184){logger[_0x84a5('0x16')]('CreatePlugin',_0x462184['message'],_0x382081);_0x37671e(_0x5a2e7e['error'](0x1f4,_0x462184[_0x84a5('0x18')]));});});};
\ No newline at end of file
+var _0x2977=['register','request','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreatePlugin','body','options','raw','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./plugin.socket'];(function(_0x2c0984,_0x18fdf9){var _0x4235f5=function(_0x9a827c){while(--_0x9a827c){_0x2c0984['push'](_0x2c0984['shift']());}};_0x4235f5(++_0x18fdf9);}(_0x2977,0xf2));var _0x7297=function(_0x550e1e,_0x170390){_0x550e1e=_0x550e1e-0x0;var _0x5a5039=_0x2977[_0x550e1e];return _0x5a5039;};'use strict';var _=require(_0x7297('0x0'));var util=require(_0x7297('0x1'));var moment=require('moment');var BPromise=require(_0x7297('0x2'));var rs=require(_0x7297('0x3'));var fs=require('fs');var Redis=require(_0x7297('0x4'));var db=require(_0x7297('0x5'))['db'];var utils=require(_0x7297('0x6'));var logger=require('../../config/logger')(_0x7297('0x7'));var config=require(_0x7297('0x8'));var jayson=require(_0x7297('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x7297('0xa')]=_[_0x7297('0xb')](config[_0x7297('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x7297('0xc'))(new Redis(config[_0x7297('0xa')]));require(_0x7297('0xd'))[_0x7297('0xe')](socket);function respondWithRpcPromise(_0x4ffc20,_0x3f8fab,_0x5dd80d){return new BPromise(function(_0x3aa509,_0x221ba7){return client[_0x7297('0xf')](_0x4ffc20,_0x5dd80d)['then'](function(_0x45931b){logger['info'](_0x7297('0x10'),_0x3f8fab,_0x7297('0x11'));logger[_0x7297('0x12')](_0x7297('0x13'),_0x3f8fab,'request\x20sent',JSON[_0x7297('0x14')](_0x45931b));if(_0x45931b['error']){if(_0x45931b[_0x7297('0x15')][_0x7297('0x16')]===0x1f4){logger['error'](_0x7297('0x10'),_0x3f8fab,_0x45931b[_0x7297('0x15')][_0x7297('0x17')]);return _0x221ba7(_0x45931b[_0x7297('0x15')][_0x7297('0x17')]);}logger[_0x7297('0x15')]('Plugin,\x20%s,\x20%s',_0x3f8fab,_0x45931b[_0x7297('0x15')][_0x7297('0x17')]);return _0x3aa509(_0x45931b[_0x7297('0x15')][_0x7297('0x17')]);}else{logger[_0x7297('0x18')](_0x7297('0x10'),_0x3f8fab,'request\x20sent');_0x3aa509(_0x45931b[_0x7297('0x19')][_0x7297('0x17')]);}})[_0x7297('0x1a')](function(_0x1f64c1){logger['error'](_0x7297('0x10'),_0x3f8fab,_0x1f64c1);_0x221ba7(_0x1f64c1);});});}exports[_0x7297('0x1b')]=function(_0x4bec01){var _0x2f08a3=this;return new Promise(function(_0x5f3db1,_0x17fdfc){return db['Plugin']['create'](_0x4bec01[_0x7297('0x1c')],{'raw':_0x4bec01[_0x7297('0x1d')]?_0x4bec01[_0x7297('0x1d')][_0x7297('0x1e')]===undefined?!![]:![]:!![]})[_0x7297('0x1f')](function(_0x29c4b0){logger[_0x7297('0x18')](_0x7297('0x1b'),_0x4bec01);logger['debug'](_0x7297('0x1b'),_0x4bec01,JSON[_0x7297('0x14')](_0x29c4b0));_0x5f3db1(_0x29c4b0);})[_0x7297('0x1a')](function(_0x1c5fab){logger['error'](_0x7297('0x1b'),_0x1c5fab[_0x7297('0x17')],_0x4bec01);_0x17fdfc(_0x2f08a3[_0x7297('0x15')](0x1f4,_0x1c5fab['message']));});});};
\ No newline at end of file
index 3002492..8efa5f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb64d=['register','plugin:','./plugin.events','save','remove','emit','removeListener'];(function(_0x5d2891,_0x31f203){var _0x12565e=function(_0x1f6b2b){while(--_0x1f6b2b){_0x5d2891['push'](_0x5d2891['shift']());}};_0x12565e(++_0x31f203);}(_0xb64d,0x1b4));var _0xdb64=function(_0x3598f6,_0x4c2264){_0x3598f6=_0x3598f6-0x0;var _0x3fa522=_0xb64d[_0x3598f6];return _0x3fa522;};'use strict';var PluginEvents=require(_0xdb64('0x0'));var events=[_0xdb64('0x1'),_0xdb64('0x2'),'update'];function createListener(_0x275013,_0xdaef5b){return function(_0x2aa5b8){_0xdaef5b[_0xdb64('0x3')](_0x275013,_0x2aa5b8);};}function removeListener(_0x2a0f6d,_0x358d17){return function(){PluginEvents[_0xdb64('0x4')](_0x2a0f6d,_0x358d17);};}exports[_0xdb64('0x5')]=function(_0xf3014c){for(var _0x116b37=0x0,_0x2d4dad=events['length'];_0x116b37<_0x2d4dad;_0x116b37++){var _0x2b951d=events[_0x116b37];var _0x53971e=createListener(_0xdb64('0x6')+_0x2b951d,_0xf3014c);PluginEvents['on'](_0x2b951d,_0x53971e);}};
\ No newline at end of file
+var _0x3f38=['removeListener','register','length','plugin:','update','emit'];(function(_0x35e2da,_0x3c5ad8){var _0x4e3fe6=function(_0x249c1f){while(--_0x249c1f){_0x35e2da['push'](_0x35e2da['shift']());}};_0x4e3fe6(++_0x3c5ad8);}(_0x3f38,0xee));var _0x83f3=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x3f38[_0x3ab51d];return _0x29a04e;};'use strict';var PluginEvents=require('./plugin.events');var events=['save','remove',_0x83f3('0x0')];function createListener(_0x7de14c,_0x18769a){return function(_0x460189){_0x18769a[_0x83f3('0x1')](_0x7de14c,_0x460189);};}function removeListener(_0xfd594a,_0x51bcc5){return function(){PluginEvents[_0x83f3('0x2')](_0xfd594a,_0x51bcc5);};}exports[_0x83f3('0x3')]=function(_0x3828d1){for(var _0x4c5f43=0x0,_0x4f4356=events[_0x83f3('0x4')];_0x4c5f43<_0x4f4356;_0x4c5f43++){var _0x9e6a96=events[_0x4c5f43];var _0x7c0cce=createListener(_0x83f3('0x5')+_0x9e6a96,_0x3828d1);PluginEvents['on'](_0x9e6a96,_0x7c0cce);}};
\ No newline at end of file
index cd6e8b4..1889fa1 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(_0x23c76e,_0x487af4){var _0xfe864e=function(_0x506378){while(--_0x506378){_0x23c76e['push'](_0x23c76e['shift']());}};_0xfe864e(++_0x487af4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'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(_0x3b1192,_0xc0609b){var _0x922703=function(_0x4a085e){while(--_0x4a085e){_0x3b1192['push'](_0x3b1192['shift']());}};_0x922703(++_0xc0609b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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 3761ab8..0cfe230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc788=['body','script','join','../../files/plugins','chdir','dirname','start','dump','send','update','stop','hasOwnProperty','Unknown\x20status','params','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','child_process','exec','bluebird','sendStatus','status','error','stack','name','info','index','list','then','reject','motion2','catch','show','describe'];(function(_0x566438,_0x3abb6a){var _0x2d8c26=function(_0x9ac951){while(--_0x9ac951){_0x566438['push'](_0x566438['shift']());}};_0x2d8c26(++_0x3abb6a);}(_0xc788,0xc4));var _0x8c78=function(_0x2257c3,_0x38dc9b){_0x2257c3=_0x2257c3-0x0;var _0x53638c=_0xc788[_0x2257c3];return _0x53638c;};'use strict';var _=require(_0x8c78('0x0'));var pm2=require(_0x8c78('0x1'));var logger=require(_0x8c78('0x2'))('api');var path=require('path');var exec=require(_0x8c78('0x3'))[_0x8c78('0x4')];var BPromise=require(_0x8c78('0x5'));function handleEntityNotFound(_0x1d0670,_0x386f0a){return function(_0x5498f9){if(!_0x5498f9){_0x1d0670[_0x8c78('0x6')](0x194);;}return _0x5498f9;};}function respondWithResult(_0x4555da,_0x329152){_0x329152=_0x329152||0xc8;return function(_0x1ac27f){if(_0x1ac27f){return _0x4555da[_0x8c78('0x7')](_0x329152)['json'](_0x1ac27f);}return null;};}function handleError(_0x247188,_0x299d9d){_0x299d9d=_0x299d9d||0x1f4;return function(_0x9bc075){logger[_0x8c78('0x8')](_0x9bc075[_0x8c78('0x9')]);if(_0x9bc075[_0x8c78('0xa')]){delete _0x9bc075['name'];}_0x247188[_0x8c78('0x7')](_0x299d9d)['send'](_0x9bc075);};}function execChildProcess(){return new BPromise(function(_0x3d55f0,_0x45935a){exec('npm\x20install',function(_0x1a05a7,_0x95e78e,_0x5ee642){logger[_0x8c78('0xb')](_0x95e78e);logger['info'](_0x5ee642);if(_0x1a05a7){logger['error'](_0x1a05a7);return _0x45935a(_0x1a05a7);}return _0x3d55f0(_0x95e78e);});});}exports[_0x8c78('0xc')]=function(_0x1b1d0e,_0x26178c){return pm2[_0x8c78('0xd')]()[_0x8c78('0xe')](function(_0x3d1306){if(_0x3d1306){var _0xe5f8ae=_[_0x8c78('0xf')](_0x3d1306,function(_0x2f44af){return _0x2f44af[_0x8c78('0xa')]==='express'||_0x2f44af[_0x8c78('0xa')]===_0x8c78('0x10');});return{'rows':_0xe5f8ae,'count':_0xe5f8ae['length']};}return null;})[_0x8c78('0xe')](respondWithResult(_0x26178c,null))[_0x8c78('0x11')](handleError(_0x26178c,null));};exports[_0x8c78('0x12')]=function(_0x23824e,_0x2a982c){return pm2[_0x8c78('0x13')](_0x23824e['params']['id'])['then'](respondWithResult(_0x2a982c,null))[_0x8c78('0xe')](handleEntityNotFound(_0x2a982c,null))['catch'](handleError(_0x2a982c,null));};exports['create']=function(_0xece4f0,_0x56c191){if(_0xece4f0[_0x8c78('0x14')][_0x8c78('0xa')]&&_0xece4f0['body'][_0x8c78('0x15')]){var _0x5b111b=path[_0x8c78('0x16')](__dirname,_0x8c78('0x17'),_0xece4f0['body'][_0x8c78('0x15')]);var _0x188cc3=process['cwd']();process[_0x8c78('0x18')](path[_0x8c78('0x19')](_0x5b111b));return execChildProcess()[_0x8c78('0xe')](function(_0x9581c6){process[_0x8c78('0x18')](_0x188cc3);return pm2[_0x8c78('0x1a')]({'name':_0xece4f0[_0x8c78('0x14')][_0x8c78('0xa')],'script':_0x5b111b});})[_0x8c78('0xe')](function(_0x4a7d20){pm2[_0x8c78('0x1b')]();return _0x4a7d20[0x0];})[_0x8c78('0xe')](respondWithResult(_0x56c191,0xc9))[_0x8c78('0x11')](handleError(_0x56c191,null));}else{return _0x56c191['status'](0x1f4)[_0x8c78('0x1c')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x8c78('0x1d')]=function(_0x24f9a7,_0x8d9ff9){if(_0x24f9a7['body']['id']){delete _0x24f9a7[_0x8c78('0x14')]['id'];}var _0x2568d5={'online':'restart','stopped':_0x8c78('0x1e')};if(_0x2568d5[_0x8c78('0x1f')](_0x24f9a7[_0x8c78('0x14')][_0x8c78('0x7')])){return pm2[_0x2568d5[_0x24f9a7[_0x8c78('0x14')][_0x8c78('0x7')]]](_0x24f9a7['params']['id'])[_0x8c78('0xe')](respondWithResult(_0x8d9ff9,0xc8))['catch'](handleError(_0x8d9ff9,null));}else{return _0x8d9ff9[_0x8c78('0x7')](0x1f4)[_0x8c78('0x1c')]({'message':_0x8c78('0x20')});}};exports['destroy']=function(_0x1f1a0c,_0x3816d2){if(_0x1f1a0c['body']['id']){delete _0x1f1a0c[_0x8c78('0x14')]['id'];}if(_0x1f1a0c[_0x8c78('0x21')]['id']){return pm2[_0x8c78('0x22')](_0x1f1a0c['params']['id'])[_0x8c78('0xe')](function(_0x63307e){pm2[_0x8c78('0x1b')]();return _0x63307e[0x0];})['then'](respondWithResult(_0x3816d2,null))[_0x8c78('0x11')](handleError(_0x3816d2,null));}else{return _0x3816d2[_0x8c78('0x7')](0x1f4)['send']({'message':_0x8c78('0x23')});}};
\ No newline at end of file
+var _0xb903=['../../config/pm2','../../config/logger','api','child_process','exec','bluebird','sendStatus','json','info','error','name','express','motion2','length','show','describe','params','then','create','body','script','join','../../files/plugins','cwd','chdir','start','dump','catch','status','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','send','Unknown\x20status','destroy','delete','lodash'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb903,0x185));var _0x3b90=function(_0x16f8a3,_0x2dca50){_0x16f8a3=_0x16f8a3-0x0;var _0x353946=_0xb903[_0x16f8a3];return _0x353946;};'use strict';var _=require(_0x3b90('0x0'));var pm2=require(_0x3b90('0x1'));var logger=require(_0x3b90('0x2'))(_0x3b90('0x3'));var path=require('path');var exec=require(_0x3b90('0x4'))[_0x3b90('0x5')];var BPromise=require(_0x3b90('0x6'));function handleEntityNotFound(_0x1cd5d8,_0x30d8db){return function(_0x40f726){if(!_0x40f726){_0x1cd5d8[_0x3b90('0x7')](0x194);;}return _0x40f726;};}function respondWithResult(_0x5acd76,_0x15b68f){_0x15b68f=_0x15b68f||0xc8;return function(_0x5e845a){if(_0x5e845a){return _0x5acd76['status'](_0x15b68f)[_0x3b90('0x8')](_0x5e845a);}return null;};}function handleError(_0x2e4c06,_0x42efe8){_0x42efe8=_0x42efe8||0x1f4;return function(_0x1b1fbf){logger['error'](_0x1b1fbf['stack']);if(_0x1b1fbf['name']){delete _0x1b1fbf['name'];}_0x2e4c06['status'](_0x42efe8)['send'](_0x1b1fbf);};}function execChildProcess(){return new BPromise(function(_0x336913,_0x5af39c){exec('npm\x20install',function(_0x30c49c,_0x233509,_0x4bb8f4){logger[_0x3b90('0x9')](_0x233509);logger[_0x3b90('0x9')](_0x4bb8f4);if(_0x30c49c){logger[_0x3b90('0xa')](_0x30c49c);return _0x5af39c(_0x30c49c);}return _0x336913(_0x233509);});});}exports['index']=function(_0x5447df,_0x58c4d1){return pm2['list']()['then'](function(_0x3a0a55){if(_0x3a0a55){var _0x2c72fb=_['reject'](_0x3a0a55,function(_0x51fb66){return _0x51fb66[_0x3b90('0xb')]===_0x3b90('0xc')||_0x51fb66[_0x3b90('0xb')]===_0x3b90('0xd');});return{'rows':_0x2c72fb,'count':_0x2c72fb[_0x3b90('0xe')]};}return null;})['then'](respondWithResult(_0x58c4d1,null))['catch'](handleError(_0x58c4d1,null));};exports[_0x3b90('0xf')]=function(_0x5420dc,_0x4e9120){return pm2[_0x3b90('0x10')](_0x5420dc[_0x3b90('0x11')]['id'])[_0x3b90('0x12')](respondWithResult(_0x4e9120,null))[_0x3b90('0x12')](handleEntityNotFound(_0x4e9120,null))['catch'](handleError(_0x4e9120,null));};exports[_0x3b90('0x13')]=function(_0x5d140f,_0xd8d873){if(_0x5d140f[_0x3b90('0x14')]['name']&&_0x5d140f[_0x3b90('0x14')][_0x3b90('0x15')]){var _0x3642c0=path[_0x3b90('0x16')](__dirname,_0x3b90('0x17'),_0x5d140f[_0x3b90('0x14')][_0x3b90('0x15')]);var _0x2f4270=process[_0x3b90('0x18')]();process[_0x3b90('0x19')](path['dirname'](_0x3642c0));return execChildProcess()[_0x3b90('0x12')](function(_0x36b93e){process[_0x3b90('0x19')](_0x2f4270);return pm2[_0x3b90('0x1a')]({'name':_0x5d140f[_0x3b90('0x14')][_0x3b90('0xb')],'script':_0x3642c0});})['then'](function(_0x4b308c){pm2[_0x3b90('0x1b')]();return _0x4b308c[0x0];})[_0x3b90('0x12')](respondWithResult(_0xd8d873,0xc9))[_0x3b90('0x1c')](handleError(_0xd8d873,null));}else{return _0xd8d873[_0x3b90('0x1d')](0x1f4)['send']({'message':_0x3b90('0x1e')});}};exports[_0x3b90('0x1f')]=function(_0x1787d1,_0x4caead){if(_0x1787d1[_0x3b90('0x14')]['id']){delete _0x1787d1[_0x3b90('0x14')]['id'];}var _0x17ec7f={'online':_0x3b90('0x20'),'stopped':_0x3b90('0x21')};if(_0x17ec7f[_0x3b90('0x22')](_0x1787d1['body'][_0x3b90('0x1d')])){return pm2[_0x17ec7f[_0x1787d1['body'][_0x3b90('0x1d')]]](_0x1787d1[_0x3b90('0x11')]['id'])[_0x3b90('0x12')](respondWithResult(_0x4caead,0xc8))[_0x3b90('0x1c')](handleError(_0x4caead,null));}else{return _0x4caead[_0x3b90('0x1d')](0x1f4)[_0x3b90('0x23')]({'message':_0x3b90('0x24')});}};exports[_0x3b90('0x25')]=function(_0x500ceb,_0x4d1f31){if(_0x500ceb[_0x3b90('0x14')]['id']){delete _0x500ceb[_0x3b90('0x14')]['id'];}if(_0x500ceb[_0x3b90('0x11')]['id']){return pm2[_0x3b90('0x26')](_0x500ceb['params']['id'])['then'](function(_0xd33ac9){pm2[_0x3b90('0x1b')]();return _0xd33ac9[0x0];})[_0x3b90('0x12')](respondWithResult(_0x4d1f31,null))['catch'](handleError(_0x4d1f31,null));}else{return _0x4d1f31[_0x3b90('0x1d')](0x1f4)['send']({'message':'Unknown\x20id'});}};
\ No newline at end of file
index 88c9ea0..fc5956f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5d9=['get','/agents','getAgents','isAuthenticated','exports','express','Router','../../components/auth/service','./realtime.controller'];(function(_0x5c5823,_0x127a6b){var _0x1c962f=function(_0x1916b9){while(--_0x1916b9){_0x5c5823['push'](_0x5c5823['shift']());}};_0x1c962f(++_0x127a6b);}(_0xb5d9,0x191));var _0x9b5d=function(_0x1948cb,_0x37604a){_0x1948cb=_0x1948cb-0x0;var _0x4d63d7=_0xb5d9[_0x1948cb];return _0x4d63d7;};'use strict';var express=require(_0x9b5d('0x0'));var router=express[_0x9b5d('0x1')]();var auth=require(_0x9b5d('0x2'));var controller=require(_0x9b5d('0x3'));router[_0x9b5d('0x4')](_0x9b5d('0x5'),auth['isAuthenticated'](),controller[_0x9b5d('0x6')]);router['get']('/queues',auth[_0x9b5d('0x7')](),controller['getQueues']);module[_0x9b5d('0x8')]=router;
\ No newline at end of file
+var _0xf67e=['getAgents','/queues','getQueues','exports','express','../../components/auth/service','get','/agents','isAuthenticated'];(function(_0x29cc9a,_0x3e20ac){var _0x1eab85=function(_0x2d4252){while(--_0x2d4252){_0x29cc9a['push'](_0x29cc9a['shift']());}};_0x1eab85(++_0x3e20ac);}(_0xf67e,0x175));var _0xef67=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xf67e[_0x465a0c];return _0x1e202e;};'use strict';var express=require(_0xef67('0x0'));var router=express['Router']();var auth=require(_0xef67('0x1'));var controller=require('./realtime.controller');router[_0xef67('0x2')](_0xef67('0x3'),auth[_0xef67('0x4')](),controller[_0xef67('0x5')]);router[_0xef67('0x2')](_0xef67('0x6'),auth[_0xef67('0x4')](),controller[_0xef67('0x7')]);module[_0xef67('0x8')]=router;
\ No newline at end of file
index c7fe4ff..650aa0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x608a=['../../mysqldb','../../errors/api','APIBadRequestError','handleError','offset','undefined','count','limit','status','set','json','getAgents','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','*pause','then','channel','format','Channel\x20parameter\x20%s\x20is\x20invalid','sort','includes','globalStatus','validateSortParameter','getUpdatedSortOptions','fields','join','order','getAgentIdsByQueues','getRealtimeAgents','rows','getAgentIdsByStatus','length','map','User','rawAttributes','fieldName','type','agent','getOptions','raw','push','sequelize','literal','forEach','Pause','merge','role','user','userProfileId','Agents','online','extraQueryConditions','assign','find','filterAgentAttributes','getAgentStatus','voice','talking','Status','sortAgentsByStatus','getRealtimeAgentsQueryFields','catch','resolve','isValidChannel','toLowerCase','Queue','key','name','outbound','dialActive','dialMethod','QueueCampaigns','startCase','Queues','filter','UserProfile','getResources','getRealtimeQueues','lodash','../../components/realtime/agents','../../components/realtime/queues'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0x608a,0xfc));var _0xa608=function(_0x46a158,_0x13e95a){_0x46a158=_0x46a158-0x0;var _0x239032=_0x608a[_0x46a158];return _0x239032;};'use strict';var _=require(_0xa608('0x0'));var util=require('util');var rta=require(_0xa608('0x1'));var rtq=require(_0xa608('0x2'));var qs=require('../../components/parsers/qs');var utils=require('../../config/utils');var db=require(_0xa608('0x3'))['db'];var APIBadRequestError=require(_0xa608('0x4'))[_0xa608('0x5')];var APIHandleError=require(_0xa608('0x4'))[_0xa608('0x6')];function respondWithFilteredResult(_0x1fc5c3,_0xf24edc){return function(_0x20f5b5){if(_0x20f5b5){var _0x53d2a8=typeof _0xf24edc[_0xa608('0x7')]===_0xa608('0x8')&&typeof _0xf24edc['limit']===_0xa608('0x8');var _0x587efe=_0x20f5b5[_0xa608('0x9')];var _0x68ccb0=_0x53d2a8?0x0:_0xf24edc[_0xa608('0x7')];var _0x3f5c6a=_0x53d2a8?_0x20f5b5['count']:_0xf24edc[_0xa608('0x7')]+_0xf24edc[_0xa608('0xa')];var _0x11c4bb;if(_0x3f5c6a>=_0x587efe){_0x3f5c6a=_0x587efe;_0x11c4bb=0xc8;}else{_0x11c4bb=0xce;}_0x1fc5c3[_0xa608('0xb')](_0x11c4bb);return _0x1fc5c3[_0xa608('0xc')]('Content-Range',_0x68ccb0+'-'+_0x3f5c6a+'/'+_0x587efe)[_0xa608('0xd')](_0x20f5b5);}return null;};}exports[_0xa608('0xe')]=function(_0x36c5fc,_0x45a7cb){var _0x6d1c50={'count':0x0,'rows':[]};var _0x42fdf6={};var _0x5a3cf2;var _0x14ec13=utils[_0xa608('0xf')]();var _0x91c4e7;var _0x116d35;var _0x59f721=_0x36c5fc[_0xa608('0x10')][_0xa608('0x11')];var _0x1cee0=_0x36c5fc[_0xa608('0x10')][_0xa608('0x12')];var _0x31b4d2=_0x36c5fc[_0xa608('0x10')][_0xa608('0x13')];var _0xd7da6=_0x1cee0===_0xa608('0x14')||_0x1cee0===_0xa608('0x15')?!![]:![];var _0x35b5ac=[];var _0x1e78c8;var _0x5a6711;Promise['resolve']()[_0xa608('0x16')](function(){if(_0x36c5fc[_0xa608('0x10')][_0xa608('0x17')]){if(!utils['isValidChannel'](_0x36c5fc['query']['channel'])){throw new APIBadRequestError(util[_0xa608('0x18')](_0xa608('0x19'),_0x36c5fc['query']['channel']));}_0x5a3cf2=_0x36c5fc[_0xa608('0x10')]['channel']['toLowerCase']();}if(!_0x36c5fc['query'][_0xa608('0x1a')]||!_0x36c5fc[_0xa608('0x10')][_0xa608('0x1a')][_0xa608('0x1b')](_0xa608('0x1c'))){_0x36c5fc[_0xa608('0x10')]['sort']=rta[_0xa608('0x1d')](_0x36c5fc[_0xa608('0x10')][_0xa608('0x1a')]);return;}var _0x3d4903=rta[_0xa608('0x1e')](_0x36c5fc[_0xa608('0x10')][_0xa608('0x1a')]);_0x36c5fc[_0xa608('0x10')]['sort']=_0x3d4903[_0xa608('0x1f')][_0xa608('0x20')](',');_0x1e78c8=_0x3d4903[_0xa608('0x21')];})[_0xa608('0x16')](function(){if(!_0x59f721){return[];}return rta[_0xa608('0x22')](_0x59f721,_0x5a3cf2);})[_0xa608('0x16')](function(_0x5618e4){_0x35b5ac=_0x5618e4;return rta[_0xa608('0x23')]();})[_0xa608('0x16')](function(_0x11aecc){_0x116d35=_0x11aecc[_0xa608('0x24')];if((!_0x1cee0||_0xd7da6)&&!_0x1e78c8){return _0x35b5ac;}if(_0x1e78c8&&!_0x1cee0){return rta['getSortedAgentsIdsByStatus'](_0x116d35,_0x35b5ac,_0x1e78c8);}else{return rta[_0xa608('0x25')](_0x116d35,_0x35b5ac,_0x1cee0);}})['then'](function(_0x25eb43){_0x35b5ac=_0x25eb43;var _0x404f3d=![];if(_0x35b5ac[_0xa608('0x26')]===0x0){if(_0x59f721||_0x1cee0){_0x404f3d=!![];}if(_0xd7da6){_0x404f3d=![];}}if(_0x404f3d){return _0x6d1c50;}var _0x4662f1=_[_0xa608('0x27')](db[_0xa608('0x28')][_0xa608('0x29')],function(_0x36eaf3){return{'name':_0x36eaf3[_0xa608('0x2a')],'type':_0x36eaf3[_0xa608('0x2b')]['key']};});_0x36c5fc[_0xa608('0x10')]['role']=_0xa608('0x2c');_0x42fdf6=qs[_0xa608('0x2d')](_0x4662f1,_0x36c5fc);_0x42fdf6[_0xa608('0x2e')]=!![];var _0x36aacd=[];if(_0x35b5ac[_0xa608('0x26')]>0x0){_0x36aacd[_0xa608('0x2f')]({'id':{'$in':_0x35b5ac}});if(_0x1e78c8&&!_0x1cee0){_0x5a6711=[db[_0xa608('0x30')][_0xa608('0x31')]('FIELD(id,'+_0x35b5ac+')')];_0x42fdf6['order']=_0x5a6711;}}if(_0xd7da6){_0x14ec13[_0xa608('0x32')](function(_0x403fb0){var _0x1205db=!![];if(_0x1cee0===_0xa608('0x15')&&_0x5a3cf2!==_0x403fb0){_0x1205db=![];}_0x36aacd[_0xa608('0x2f')]({[_0x403fb0+_0xa608('0x33')]:_0x1205db});});if(_0x31b4d2){_0x36aacd['push']({'pauseType':_0x31b4d2});}}else if(_0x1cee0){_0x14ec13[_0xa608('0x32')](function(_0x580997){_0x36aacd[_0xa608('0x2f')]({[_0x580997+_0xa608('0x33')]:![]});});}_0x42fdf6['where']=_[_0xa608('0x34')](_0x42fdf6['where'],{'$and':_0x36aacd});if(_0x36c5fc['user'][_0xa608('0x35')]===_0xa608('0x36')){var _0x5bc9a2={'params':{'id':_0x36c5fc[_0xa608('0x36')][_0xa608('0x37')]},'query':{'section':_0xa608('0x38'),'role':_0xa608('0x2c'),'raw':!![],'ids':_0x35b5ac,'customSorting':_0x5a6711}};if(_0x36c5fc[_0xa608('0x10')][_0xa608('0x39')]){_0x5bc9a2['query'][_0xa608('0x39')]=!![];}if(_0xd7da6){_0x5bc9a2['query'][_0xa608('0x3a')]=_0x36aacd;}_0x5bc9a2[_0xa608('0x10')]=Object[_0xa608('0x3b')](_0x5bc9a2['query'],_0x36c5fc[_0xa608('0x10')]);return db['UserProfile']['getResources'](_0x5bc9a2);}return db['User']['findAndCountAll'](_0x42fdf6);})[_0xa608('0x16')](function(_0x5ca361){_0x6d1c50[_0xa608('0x9')]=_0x5ca361['count'];_0x91c4e7=_0x5ca361[_0xa608('0x24')];return _0x91c4e7[_0xa608('0x27')](function(_0x474e23){var _0x30d35=_[_0xa608('0x3c')](_0x116d35,['id',_0x474e23['id']]);if(_0x30d35){var _0x1e16d7=rta[_0xa608('0x3d')](_0x30d35);_[_0xa608('0x34')](_0x474e23,_0x1e16d7);}_0x474e23[_0xa608('0x1c')]=rta[_0xa608('0x3e')](_0x474e23);if(_0x474e23[_0xa608('0x1c')][_0xa608('0x1b')](_0xa608('0x14'))){_0x14ec13[_0xa608('0x32')](function(_0x1ef90b){if(_0x474e23[_0x1ef90b+_0xa608('0x33')]){if(_0x1ef90b===_0xa608('0x3f')){if(_0x474e23['voiceStatus']!==_0xa608('0x40')){_0x474e23['voiceStatus']=_0xa608('0x14');}}else{_0x474e23[_0x1ef90b+_0xa608('0x41')]=_0xa608('0x14');}}});}return _0x474e23;});})[_0xa608('0x16')](function(_0x7043ab){if(!_0x1e78c8||_0x5a6711){return _0x7043ab;}return rta[_0xa608('0x42')](_0x7043ab,_0x1e78c8);})[_0xa608('0x16')](function(_0x16548a){var _0x54a5c0=rta[_0xa608('0x43')]();_0x6d1c50['rows']=_0x16548a[_0xa608('0x27')](function(_0x14ad74){return _['pick'](_0x14ad74,_0x54a5c0);});return _0x6d1c50;})[_0xa608('0x16')](respondWithFilteredResult(_0x45a7cb,_0x42fdf6))[_0xa608('0x44')](APIHandleError(_0x45a7cb));};exports['getQueues']=function(_0x2c94ee,_0x577402){var _0x465ec4={'count':0x0,'rows':[]};var _0x2e127c={};var _0x32e4e2;var _0x371033;var _0x5a663f;Promise[_0xa608('0x45')]()['then'](function(){if(_0x2c94ee['query']['channel']){if(!utils[_0xa608('0x46')](_0x2c94ee['query']['channel'])){throw new APIBadRequestError(util[_0xa608('0x18')](_0xa608('0x19'),_0x2c94ee[_0xa608('0x10')][_0xa608('0x17')]));}_0x32e4e2=_0x2c94ee['query']['channel'][_0xa608('0x47')]();}var _0x332cc2=_['startCase'](_0x32e4e2)+_0xa608('0x48');var _0x5bbac1=_[_0xa608('0x27')](db[_0x332cc2][_0xa608('0x29')],function(_0x57eef1){return{'name':_0x57eef1[_0xa608('0x2a')],'type':_0x57eef1[_0xa608('0x2b')][_0xa608('0x49')]};});if(!_0x2c94ee[_0xa608('0x10')][_0xa608('0x1f')]){var _0x12ae14=['id',_0xa608('0x4a')];if(_0x32e4e2===_0xa608('0x3f')){_0x12ae14[_0xa608('0x2f')](_0xa608('0x2b'));if(_0x2c94ee[_0xa608('0x10')][_0xa608('0x2b')]===_0xa608('0x4b')){_0x12ae14[_0xa608('0x2f')]([_0xa608('0x4c'),_0xa608('0x4d')]);}}_0x2c94ee[_0xa608('0x10')][_0xa608('0x1f')]=_0x12ae14[_0xa608('0x20')](',');}_0x2e127c=qs['getOptions'](_0x5bbac1,_0x2c94ee);if(_0x2c94ee[_0xa608('0x36')]['role']===_0xa608('0x36')){var _0x2c995e={'params':{'id':_0x2c94ee[_0xa608('0x36')][_0xa608('0x37')]},'query':{'section':_0x32e4e2===_0xa608('0x3f')&&_0x2c94ee[_0xa608('0x10')]['type']==='outbound'?_0xa608('0x4e'):_[_0xa608('0x4f')](_0x32e4e2)+_0xa608('0x50'),'type':_0x2c94ee['query'][_0xa608('0x2b')],'nolimit':!![],'sort':'name','filter':_0x2c94ee['query'][_0xa608('0x51')]}};_0x2c995e[_0xa608('0x10')]=Object[_0xa608('0x3b')](_0x2c995e[_0xa608('0x10')],_0x2c94ee[_0xa608('0x10')]);delete _0x2c995e[_0xa608('0x10')]['id'];return db[_0xa608('0x52')][_0xa608('0x53')](_0x2c995e);}return db[_0x332cc2]['findAndCountAll'](_0x2e127c);})['then'](function(_0x267853){_0x465ec4[_0xa608('0x9')]=_0x267853[_0xa608('0x9')];_0x371033=_0x267853['rows'];return rtq[_0xa608('0x54')](_0x2c94ee,_0x32e4e2);})[_0xa608('0x16')](function(_0x4f67df){_0x5a663f=_0x4f67df[_0xa608('0x24')];return rtq['initializeQueues'](_0x371033,_0x5a663f,_0x32e4e2,_0x2c94ee[_0xa608('0x10')][_0xa608('0x2b')]);})[_0xa608('0x16')](function(_0x895604){_0x465ec4[_0xa608('0x24')]=_0x895604;return _0x465ec4;})[_0xa608('0x16')](respondWithFilteredResult(_0x577402,_0x2e127c))['catch'](APIHandleError(_0x577402));};
\ No newline at end of file
+var _0x53b7=['Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','validateSortParameter','fields','join','getAgentIdsByQueues','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','length','map','User','fieldName','type','agent','getOptions','raw','sequelize','literal','FIELD(id,','order','forEach','push','Pause','where','merge','user','userProfileId','Agents','online','extraQueryConditions','getResources','findAndCountAll','count','find','filterAgentAttributes','globalStatus','getAgentStatus','voiceStatus','talking','pause','Status','pick','catch','isValidChannel','startCase','Queue','rawAttributes','voice','dialActive','dialMethod','outbound','QueueCampaigns','assign','getRealtimeQueues','initializeQueues','lodash','util','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../config/utils','../../mysqldb','../../errors/api','APIBadRequestError','handleError','offset','undefined','set','Content-Range','getAgents','getChannels','globalStatusFilter','query','pauseTypeFilter','*pause','resolve','then','channel','format'];(function(_0x4348cc,_0x1143d3){var _0x362214=function(_0x3f8b39){while(--_0x3f8b39){_0x4348cc['push'](_0x4348cc['shift']());}};_0x362214(++_0x1143d3);}(_0x53b7,0x17d));var _0x753b=function(_0xc3a63e,_0x23787a){_0xc3a63e=_0xc3a63e-0x0;var _0xcc536c=_0x53b7[_0xc3a63e];return _0xcc536c;};'use strict';var _=require(_0x753b('0x0'));var util=require(_0x753b('0x1'));var rta=require(_0x753b('0x2'));var rtq=require(_0x753b('0x3'));var qs=require(_0x753b('0x4'));var utils=require(_0x753b('0x5'));var db=require(_0x753b('0x6'))['db'];var APIBadRequestError=require(_0x753b('0x7'))[_0x753b('0x8')];var APIHandleError=require(_0x753b('0x7'))[_0x753b('0x9')];function respondWithFilteredResult(_0x2e6c8a,_0x4501b1){return function(_0xecf5ad){if(_0xecf5ad){var _0x4f4e04=typeof _0x4501b1[_0x753b('0xa')]===_0x753b('0xb')&&typeof _0x4501b1['limit']===_0x753b('0xb');var _0x2d4b4f=_0xecf5ad['count'];var _0x24a189=_0x4f4e04?0x0:_0x4501b1['offset'];var _0x29abf3=_0x4f4e04?_0xecf5ad['count']:_0x4501b1[_0x753b('0xa')]+_0x4501b1['limit'];var _0x4a0507;if(_0x29abf3>=_0x2d4b4f){_0x29abf3=_0x2d4b4f;_0x4a0507=0xc8;}else{_0x4a0507=0xce;}_0x2e6c8a['status'](_0x4a0507);return _0x2e6c8a[_0x753b('0xc')](_0x753b('0xd'),_0x24a189+'-'+_0x29abf3+'/'+_0x2d4b4f)['json'](_0xecf5ad);}return null;};}exports[_0x753b('0xe')]=function(_0x276e40,_0x1ed848){var _0x353f90={'count':0x0,'rows':[]};var _0x1c5829={};var _0x2fcf32;var _0x40f410=utils[_0x753b('0xf')]();var _0x1c542c;var _0x355f9e;var _0x5f1cbc=_0x276e40['query']['globalQueueFilter'];var _0x26172d=_0x276e40['query'][_0x753b('0x10')];var _0x1af801=_0x276e40[_0x753b('0x11')][_0x753b('0x12')];var _0xadcaee=_0x26172d==='pause'||_0x26172d===_0x753b('0x13')?!![]:![];var _0x19d286=[];var _0x8e36ff;var _0x5553af;Promise[_0x753b('0x14')]()[_0x753b('0x15')](function(){if(_0x276e40[_0x753b('0x11')][_0x753b('0x16')]){if(!utils['isValidChannel'](_0x276e40[_0x753b('0x11')]['channel'])){throw new APIBadRequestError(util[_0x753b('0x17')](_0x753b('0x18'),_0x276e40[_0x753b('0x11')][_0x753b('0x16')]));}_0x2fcf32=_0x276e40['query'][_0x753b('0x16')][_0x753b('0x19')]();}if(!_0x276e40[_0x753b('0x11')][_0x753b('0x1a')]||!_0x276e40[_0x753b('0x11')]['sort']['includes']('globalStatus')){_0x276e40[_0x753b('0x11')][_0x753b('0x1a')]=rta[_0x753b('0x1b')](_0x276e40[_0x753b('0x11')][_0x753b('0x1a')]);return;}var _0x8395c7=rta['getUpdatedSortOptions'](_0x276e40['query'][_0x753b('0x1a')]);_0x276e40[_0x753b('0x11')]['sort']=_0x8395c7[_0x753b('0x1c')][_0x753b('0x1d')](',');_0x8e36ff=_0x8395c7['order'];})[_0x753b('0x15')](function(){if(!_0x5f1cbc){return[];}return rta[_0x753b('0x1e')](_0x5f1cbc,_0x2fcf32);})[_0x753b('0x15')](function(_0x28b6d7){_0x19d286=_0x28b6d7;return rta['getRealtimeAgents']();})['then'](function(_0x5e0095){_0x355f9e=_0x5e0095[_0x753b('0x1f')];if((!_0x26172d||_0xadcaee)&&!_0x8e36ff){return _0x19d286;}if(_0x8e36ff&&!_0x26172d){return rta[_0x753b('0x20')](_0x355f9e,_0x19d286,_0x8e36ff);}else{return rta[_0x753b('0x21')](_0x355f9e,_0x19d286,_0x26172d);}})[_0x753b('0x15')](function(_0x59ef51){_0x19d286=_0x59ef51;var _0xde0a80=![];if(_0x19d286[_0x753b('0x22')]===0x0){if(_0x5f1cbc||_0x26172d){_0xde0a80=!![];}if(_0xadcaee){_0xde0a80=![];}}if(_0xde0a80){return _0x353f90;}var _0x3af2a6=_[_0x753b('0x23')](db[_0x753b('0x24')]['rawAttributes'],function(_0x1368e6){return{'name':_0x1368e6[_0x753b('0x25')],'type':_0x1368e6[_0x753b('0x26')]['key']};});_0x276e40[_0x753b('0x11')]['role']=_0x753b('0x27');_0x1c5829=qs[_0x753b('0x28')](_0x3af2a6,_0x276e40);_0x1c5829[_0x753b('0x29')]=!![];var _0xdbbd87=[];if(_0x19d286[_0x753b('0x22')]>0x0){_0xdbbd87['push']({'id':{'$in':_0x19d286}});if(_0x8e36ff&&!_0x26172d){_0x5553af=[db[_0x753b('0x2a')][_0x753b('0x2b')](_0x753b('0x2c')+_0x19d286+')')];_0x1c5829[_0x753b('0x2d')]=_0x5553af;}}if(_0xadcaee){_0x40f410[_0x753b('0x2e')](function(_0x3ef351){var _0x4ff54c=!![];if(_0x26172d===_0x753b('0x13')&&_0x2fcf32!==_0x3ef351){_0x4ff54c=![];}_0xdbbd87[_0x753b('0x2f')]({[_0x3ef351+_0x753b('0x30')]:_0x4ff54c});});if(_0x1af801){_0xdbbd87[_0x753b('0x2f')]({'pauseType':_0x1af801});}}else if(_0x26172d){_0x40f410[_0x753b('0x2e')](function(_0x311699){_0xdbbd87['push']({[_0x311699+_0x753b('0x30')]:![]});});}_0x1c5829[_0x753b('0x31')]=_[_0x753b('0x32')](_0x1c5829[_0x753b('0x31')],{'$and':_0xdbbd87});if(_0x276e40['user']['role']==='user'){var _0x304ea3={'params':{'id':_0x276e40[_0x753b('0x33')][_0x753b('0x34')]},'query':{'section':_0x753b('0x35'),'role':_0x753b('0x27'),'raw':!![],'ids':_0x19d286,'customSorting':_0x5553af}};if(_0x276e40[_0x753b('0x11')][_0x753b('0x36')]){_0x304ea3['query']['online']=!![];}if(_0xadcaee){_0x304ea3[_0x753b('0x11')][_0x753b('0x37')]=_0xdbbd87;}_0x304ea3[_0x753b('0x11')]=Object['assign'](_0x304ea3['query'],_0x276e40['query']);return db['UserProfile'][_0x753b('0x38')](_0x304ea3);}return db[_0x753b('0x24')][_0x753b('0x39')](_0x1c5829);})[_0x753b('0x15')](function(_0x3de2a6){_0x353f90[_0x753b('0x3a')]=_0x3de2a6['count'];_0x1c542c=_0x3de2a6['rows'];return _0x1c542c['map'](function(_0x530847){var _0x445364=_[_0x753b('0x3b')](_0x355f9e,['id',_0x530847['id']]);if(_0x445364){var _0x43da75=rta[_0x753b('0x3c')](_0x445364);_[_0x753b('0x32')](_0x530847,_0x43da75);}_0x530847[_0x753b('0x3d')]=rta[_0x753b('0x3e')](_0x530847);if(_0x530847[_0x753b('0x3d')]['includes']('pause')){_0x40f410[_0x753b('0x2e')](function(_0x33423a){if(_0x530847[_0x33423a+_0x753b('0x30')]){if(_0x33423a==='voice'){if(_0x530847[_0x753b('0x3f')]!==_0x753b('0x40')){_0x530847[_0x753b('0x3f')]=_0x753b('0x41');}}else{_0x530847[_0x33423a+_0x753b('0x42')]=_0x753b('0x41');}}});}return _0x530847;});})[_0x753b('0x15')](function(_0x45902a){if(!_0x8e36ff||_0x5553af){return _0x45902a;}return rta['sortAgentsByStatus'](_0x45902a,_0x8e36ff);})['then'](function(_0xb152c8){var _0x37980f=rta['getRealtimeAgentsQueryFields']();_0x353f90[_0x753b('0x1f')]=_0xb152c8[_0x753b('0x23')](function(_0x17a011){return _[_0x753b('0x43')](_0x17a011,_0x37980f);});return _0x353f90;})[_0x753b('0x15')](respondWithFilteredResult(_0x1ed848,_0x1c5829))[_0x753b('0x44')](APIHandleError(_0x1ed848));};exports['getQueues']=function(_0x5da44a,_0xf49751){var _0x34e1bb={'count':0x0,'rows':[]};var _0x49ded3={};var _0x4e7a12;var _0x1beac5;var _0x267a15;Promise[_0x753b('0x14')]()['then'](function(){if(_0x5da44a[_0x753b('0x11')]['channel']){if(!utils[_0x753b('0x45')](_0x5da44a[_0x753b('0x11')][_0x753b('0x16')])){throw new APIBadRequestError(util[_0x753b('0x17')](_0x753b('0x18'),_0x5da44a['query']['channel']));}_0x4e7a12=_0x5da44a[_0x753b('0x11')][_0x753b('0x16')][_0x753b('0x19')]();}var _0x408b24=_[_0x753b('0x46')](_0x4e7a12)+_0x753b('0x47');var _0xf0aeac=_[_0x753b('0x23')](db[_0x408b24][_0x753b('0x48')],function(_0x28f07f){return{'name':_0x28f07f[_0x753b('0x25')],'type':_0x28f07f[_0x753b('0x26')]['key']};});if(!_0x5da44a[_0x753b('0x11')][_0x753b('0x1c')]){var _0x5397f5=['id','name'];if(_0x4e7a12===_0x753b('0x49')){_0x5397f5[_0x753b('0x2f')](_0x753b('0x26'));if(_0x5da44a['query']['type']==='outbound'){_0x5397f5[_0x753b('0x2f')]([_0x753b('0x4a'),_0x753b('0x4b')]);}}_0x5da44a[_0x753b('0x11')][_0x753b('0x1c')]=_0x5397f5[_0x753b('0x1d')](',');}_0x49ded3=qs[_0x753b('0x28')](_0xf0aeac,_0x5da44a);if(_0x5da44a['user']['role']==='user'){var _0x3aefcb={'params':{'id':_0x5da44a['user'][_0x753b('0x34')]},'query':{'section':_0x4e7a12===_0x753b('0x49')&&_0x5da44a[_0x753b('0x11')][_0x753b('0x26')]===_0x753b('0x4c')?_0x753b('0x4d'):_[_0x753b('0x46')](_0x4e7a12)+'Queues','type':_0x5da44a[_0x753b('0x11')][_0x753b('0x26')],'nolimit':!![],'sort':'name','filter':_0x5da44a[_0x753b('0x11')]['filter']}};_0x3aefcb['query']=Object[_0x753b('0x4e')](_0x3aefcb[_0x753b('0x11')],_0x5da44a[_0x753b('0x11')]);delete _0x3aefcb[_0x753b('0x11')]['id'];return db['UserProfile'][_0x753b('0x38')](_0x3aefcb);}return db[_0x408b24][_0x753b('0x39')](_0x49ded3);})[_0x753b('0x15')](function(_0x5eb184){_0x34e1bb[_0x753b('0x3a')]=_0x5eb184[_0x753b('0x3a')];_0x1beac5=_0x5eb184[_0x753b('0x1f')];return rtq[_0x753b('0x4f')](_0x5da44a,_0x4e7a12);})[_0x753b('0x15')](function(_0x9e9f49){_0x267a15=_0x9e9f49[_0x753b('0x1f')];return rtq[_0x753b('0x50')](_0x1beac5,_0x267a15,_0x4e7a12,_0x5da44a[_0x753b('0x11')]['type']);})[_0x753b('0x15')](function(_0x15c261){_0x34e1bb[_0x753b('0x1f')]=_0x15c261;return _0x34e1bb;})[_0x753b('0x15')](respondWithFilteredResult(_0xf49751,_0x49ded3))[_0x753b('0x44')](APIHandleError(_0xf49751));};
\ No newline at end of file
index 0659523..0bbe23b 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(_0x582bd0,_0x53738e){var _0x4e2d82=function(_0x266111){while(--_0x266111){_0x582bd0['push'](_0x582bd0['shift']());}};_0x4e2d82(++_0x53738e);}(_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(_0x1b593d,_0xceeaa4){var _0x4285b3=function(_0x3ace01){while(--_0x3ace01){_0x1b593d['push'](_0x1b593d['shift']());}};_0x4285b3(++_0xceeaa4);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x102977,_0x3a99a6){_0x102977=_0x102977-0x0;var _0x15c466=_0xcb91[_0x102977];return _0x15c466;};'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 b617060..3eae22e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3a7=['DATE','exports','INTEGER','STRING'];(function(_0x59862e,_0x14e1f9){var _0x387910=function(_0x3d5a55){while(--_0x3d5a55){_0x59862e['push'](_0x59862e['shift']());}};_0x387910(++_0x14e1f9);}(_0xf3a7,0x99));var _0x7f3a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf3a7[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x7f3a('0x0')]={'state':{'type':Sequelize[_0x7f3a('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x7f3a('0x2')]},'scheduledat':{'type':Sequelize[_0x7f3a('0x3')]},'uniqueid':{'type':Sequelize[_0x7f3a('0x2')]},'starttime':{'type':Sequelize[_0x7f3a('0x3')]},'responsetime':{'type':Sequelize[_0x7f3a('0x3')]},'ringtime':{'type':Sequelize[_0x7f3a('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x7f3a('0x2')]},'campaigntype':{'type':Sequelize[_0x7f3a('0x2')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xab36=['exports','INTEGER','STRING','DATE','sequelize'];(function(_0x3f3fd8,_0x4a9ad8){var _0x38194c=function(_0x309022){while(--_0x309022){_0x3f3fd8['push'](_0x3f3fd8['shift']());}};_0x38194c(++_0x4a9ad8);}(_0xab36,0x1df));var _0x6ab3=function(_0x150201,_0x5b5389){_0x150201=_0x150201-0x0;var _0xfbac86=_0xab36[_0x150201];return _0xfbac86;};'use strict';var Sequelize=require(_0x6ab3('0x0'));module[_0x6ab3('0x1')]={'state':{'type':Sequelize[_0x6ab3('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x6ab3('0x3')]},'scheduledat':{'type':Sequelize[_0x6ab3('0x4')]},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x6ab3('0x4')]},'responsetime':{'type':Sequelize[_0x6ab3('0x4')]},'ringtime':{'type':Sequelize[_0x6ab3('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x6ab3('0x3')]},'membername':{'type':Sequelize[_0x6ab3('0x3')]}};
\ No newline at end of file
index 12b7f62..ef7679d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf521=['bluebird','request-promise','path','rimraf','./reportAgentPreview.attributes','exports','define','report_agent_preview','lodash','util','../../config/logger','api'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xf521,0x1ac));var _0x1f52=function(_0x5cb6f3,_0x4085bc){_0x5cb6f3=_0x5cb6f3-0x0;var _0x225ffe=_0xf521[_0x5cb6f3];return _0x225ffe;};'use strict';var _=require(_0x1f52('0x0'));var util=require(_0x1f52('0x1'));var logger=require(_0x1f52('0x2'))(_0x1f52('0x3'));var moment=require('moment');var BPromise=require(_0x1f52('0x4'));var rp=require(_0x1f52('0x5'));var fs=require('fs');var path=require(_0x1f52('0x6'));var rimraf=require(_0x1f52('0x7'));var config=require('../../config/environment');var attributes=require(_0x1f52('0x8'));module[_0x1f52('0x9')]=function(_0xdf7be4,_0x13c54d){return _0xdf7be4[_0x1f52('0xa')]('ReportAgentPreview',attributes,{'tableName':_0x1f52('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9bd0=['define','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird','rimraf','./reportAgentPreview.attributes','exports'];(function(_0x1c98dd,_0x314f9e){var _0x23b146=function(_0x111ed8){while(--_0x111ed8){_0x1c98dd['push'](_0x1c98dd['shift']());}};_0x23b146(++_0x314f9e);}(_0x9bd0,0x1cb));var _0x09bd=function(_0x392424,_0x5c3b81){_0x392424=_0x392424-0x0;var _0x5c08db=_0x9bd0[_0x392424];return _0x5c08db;};'use strict';var _=require(_0x09bd('0x0'));var util=require(_0x09bd('0x1'));var logger=require(_0x09bd('0x2'))(_0x09bd('0x3'));var moment=require(_0x09bd('0x4'));var BPromise=require(_0x09bd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x09bd('0x6'));var config=require('../../config/environment');var attributes=require(_0x09bd('0x7'));module[_0x09bd('0x8')]=function(_0x4f4437,_0x152899){return _0x4f4437[_0x09bd('0x9')](_0x09bd('0xa'),attributes,{'tableName':_0x09bd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f03b20a..4468114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72d5=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','ReportAgentPreview,\x20%s,\x20%s','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','util','bluebird'];(function(_0x205941,_0x410eb2){var _0x32478e=function(_0x160333){while(--_0x160333){_0x205941['push'](_0x205941['shift']());}};_0x32478e(++_0x410eb2);}(_0x72d5,0x1e4));var _0x572d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x72d5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x572d('0x0'));var moment=require('moment');var BPromise=require(_0x572d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x572d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x572d('0x3'));var logger=require(_0x572d('0x4'))(_0x572d('0x5'));var config=require(_0x572d('0x6'));var jayson=require(_0x572d('0x7'));var client=jayson[_0x572d('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2746f1,_0x194811,_0x3c002a){return new BPromise(function(_0x14282e,_0x198d25){return client[_0x572d('0x9')](_0x2746f1,_0x3c002a)[_0x572d('0xa')](function(_0x448796){logger[_0x572d('0xb')]('ReportAgentPreview,\x20%s,\x20%s',_0x194811,_0x572d('0xc'));logger[_0x572d('0xd')](_0x572d('0xe'),_0x194811,'request\x20sent',JSON[_0x572d('0xf')](_0x448796));if(_0x448796['error']){if(_0x448796[_0x572d('0x10')]['code']===0x1f4){logger[_0x572d('0x10')](_0x572d('0x11'),_0x194811,_0x448796[_0x572d('0x10')][_0x572d('0x12')]);return _0x198d25(_0x448796[_0x572d('0x10')][_0x572d('0x12')]);}logger[_0x572d('0x10')]('ReportAgentPreview,\x20%s,\x20%s',_0x194811,_0x448796[_0x572d('0x10')][_0x572d('0x12')]);return _0x14282e(_0x448796[_0x572d('0x10')]['message']);}else{logger[_0x572d('0xb')]('ReportAgentPreview,\x20%s,\x20%s',_0x194811,'request\x20sent');_0x14282e(_0x448796[_0x572d('0x13')][_0x572d('0x12')]);}})[_0x572d('0x14')](function(_0xe33bc5){logger[_0x572d('0x10')](_0x572d('0x11'),_0x194811,_0xe33bc5);_0x198d25(_0xe33bc5);});});}exports[_0x572d('0x15')]=function(_0x4024bf){var _0x5011d2=this;return new Promise(function(_0x5ea1ea,_0x28a39c){return db[_0x572d('0x16')][_0x572d('0x17')](_0x4024bf[_0x572d('0x18')],{'raw':_0x4024bf[_0x572d('0x19')]?_0x4024bf[_0x572d('0x19')][_0x572d('0x1a')]===undefined?!![]:![]:!![]})[_0x572d('0xa')](function(_0x3fffdf){logger[_0x572d('0xb')](_0x572d('0x15'),_0x4024bf);logger[_0x572d('0xd')](_0x572d('0x15'),_0x4024bf,JSON[_0x572d('0xf')](_0x3fffdf));_0x5ea1ea(_0x3fffdf);})['catch'](function(_0x5de29b){logger[_0x572d('0x10')]('CreateReportAgentPreview',_0x5de29b[_0x572d('0x12')],_0x4024bf);_0x28a39c(_0x5011d2[_0x572d('0x10')](0x1f4,_0x5de29b[_0x572d('0x12')]));});});};
\ No newline at end of file
+var _0x90a1=['error','code','message','ReportAgentPreview,\x20%s,\x20%s','catch','ReportAgentPreview','create','body','options','raw','CreateReportAgentPreview','debug','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s'];(function(_0x4f3b2d,_0x3bbf46){var _0x3dddfa=function(_0xb8179a){while(--_0xb8179a){_0x4f3b2d['push'](_0x4f3b2d['shift']());}};_0x3dddfa(++_0x3bbf46);}(_0x90a1,0xd1));var _0x190a=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0x90a1[_0x5a776b];return _0xbbef59;};'use strict';var _=require(_0x190a('0x0'));var util=require(_0x190a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x190a('0x2'));var fs=require('fs');var Redis=require(_0x190a('0x3'));var db=require(_0x190a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x190a('0x5'))(_0x190a('0x6'));var config=require(_0x190a('0x7'));var jayson=require(_0x190a('0x8'));var client=jayson['client'][_0x190a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x57e352,_0x597b45,_0x294220){return new BPromise(function(_0x3d72df,_0x4aef2c){return client[_0x190a('0xa')](_0x57e352,_0x294220)[_0x190a('0xb')](function(_0x2bdd94){logger[_0x190a('0xc')]('ReportAgentPreview,\x20%s,\x20%s',_0x597b45,_0x190a('0xd'));logger['debug'](_0x190a('0xe'),_0x597b45,'request\x20sent',JSON['stringify'](_0x2bdd94));if(_0x2bdd94[_0x190a('0xf')]){if(_0x2bdd94['error'][_0x190a('0x10')]===0x1f4){logger['error']('ReportAgentPreview,\x20%s,\x20%s',_0x597b45,_0x2bdd94[_0x190a('0xf')][_0x190a('0x11')]);return _0x4aef2c(_0x2bdd94[_0x190a('0xf')][_0x190a('0x11')]);}logger[_0x190a('0xf')](_0x190a('0x12'),_0x597b45,_0x2bdd94[_0x190a('0xf')]['message']);return _0x3d72df(_0x2bdd94[_0x190a('0xf')]['message']);}else{logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x597b45,_0x190a('0xd'));_0x3d72df(_0x2bdd94['result'][_0x190a('0x11')]);}})[_0x190a('0x13')](function(_0x1b4a5b){logger[_0x190a('0xf')](_0x190a('0x12'),_0x597b45,_0x1b4a5b);_0x4aef2c(_0x1b4a5b);});});}exports['CreateReportAgentPreview']=function(_0x47ccba){var _0x16ec02=this;return new Promise(function(_0x13a8b0,_0xb8b3c1){return db[_0x190a('0x14')][_0x190a('0x15')](_0x47ccba[_0x190a('0x16')],{'raw':_0x47ccba[_0x190a('0x17')]?_0x47ccba[_0x190a('0x17')][_0x190a('0x18')]===undefined?!![]:![]:!![]})[_0x190a('0xb')](function(_0x3fd997){logger[_0x190a('0xc')](_0x190a('0x19'),_0x47ccba);logger[_0x190a('0x1a')](_0x190a('0x19'),_0x47ccba,JSON[_0x190a('0x1b')](_0x3fd997));_0x13a8b0(_0x3fd997);})[_0x190a('0x13')](function(_0x576ea9){logger[_0x190a('0xf')](_0x190a('0x19'),_0x576ea9[_0x190a('0x11')],_0x47ccba);_0xb8b3c1(_0x16ec02[_0x190a('0xf')](0x1f4,_0x576ea9[_0x190a('0x11')]));});});};
\ No newline at end of file
index 4e4eb26..e5672f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb05=['/voice/queues','mailQueues','mailAccounts','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','outbound','/outbound/channels','/agents','/agents/:id/capacity','agentCapacity','/telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','queueNotify','chat','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcb05,0x86));var _0x5cb0=function(_0x536ca6,_0x2a9a1d){_0x536ca6=_0x536ca6-0x0;var _0x4afae3=_0xcb05[_0x536ca6];return _0x4afae3;};'use strict';var multer=require(_0x5cb0('0x0'));var util=require(_0x5cb0('0x1'));var path=require(_0x5cb0('0x2'));var express=require('express');var router=express['Router']();var auth=require(_0x5cb0('0x3'));var controller=require(_0x5cb0('0x4'));router[_0x5cb0('0x5')](_0x5cb0('0x6'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x8')]);router[_0x5cb0('0x5')](_0x5cb0('0x9'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0xa')]);router[_0x5cb0('0x5')](_0x5cb0('0xb'),auth[_0x5cb0('0x7')](),controller['voiceChannelStopMixMonitor']);router[_0x5cb0('0x5')](_0x5cb0('0xc'),auth['isAuthenticated'](),controller['voiceQueues']);router['get']('/chat/queues',auth[_0x5cb0('0x7')](),controller['chatQueues']);router['get']('/mail/queues',auth[_0x5cb0('0x7')](),controller[_0x5cb0('0xd')]);router[_0x5cb0('0x5')]('/mail/accounts',auth[_0x5cb0('0x7')](),controller[_0x5cb0('0xe')]);router[_0x5cb0('0x5')]('/openchannel/queues',auth['isAuthenticated'](),controller[_0x5cb0('0xf')]);router['get']('/sms/queues',auth['isAuthenticated'](),controller[_0x5cb0('0x10')]);router['get'](_0x5cb0('0x11'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x12')]);router[_0x5cb0('0x5')](_0x5cb0('0x13'),auth['isAuthenticated'](),controller['faxQueues']);router[_0x5cb0('0x5')]('/voice/queues/preview/:id',auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x14')]);router[_0x5cb0('0x5')](_0x5cb0('0x15'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x16')]);router[_0x5cb0('0x5')]('/voice/queues/channels/:uniqueid',auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x17')]);router[_0x5cb0('0x5')](_0x5cb0('0x18'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x19')]);router[_0x5cb0('0x5')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x5cb0('0x7')](),controller['voiceQueuesChannelRedirect']);router[_0x5cb0('0x5')](_0x5cb0('0x1a'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x1b')]);router[_0x5cb0('0x1c')](_0x5cb0('0x1a'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x1d')]);router[_0x5cb0('0x5')]('/outbound',auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x1e')]);router['get'](_0x5cb0('0x1f'),auth[_0x5cb0('0x7')](),controller['outboundChannels']);router[_0x5cb0('0x5')](_0x5cb0('0x20'),auth[_0x5cb0('0x7')](),controller['agents']);router[_0x5cb0('0x1c')](_0x5cb0('0x21'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x22')]);router['get'](_0x5cb0('0x23'),auth['isAuthenticated'](),controller['telephones']);router[_0x5cb0('0x5')](_0x5cb0('0x24'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x25')]);router['get'](_0x5cb0('0x26'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x27')]);router[_0x5cb0('0x5')](_0x5cb0('0x28'),auth[_0x5cb0('0x7')](),controller['faxAccounts']);router['get'](_0x5cb0('0x29'),auth[_0x5cb0('0x7')](),controller['chatQueuesWaitingInteractions']);router[_0x5cb0('0x5')](_0x5cb0('0x2a'),auth[_0x5cb0('0x7')](),controller['mailQueuesWaitingInteractions']);router[_0x5cb0('0x5')]('/openchannel/queues/waitinginteractions',auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x2b')]);router[_0x5cb0('0x5')]('/openchannel/queues/:id/waitinginteractions',auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x2c')]);router[_0x5cb0('0x5')](_0x5cb0('0x2d'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x2e')]);router[_0x5cb0('0x5')](_0x5cb0('0x2f'),auth['isAuthenticated'](),controller[_0x5cb0('0x30')]);router['get'](_0x5cb0('0x31'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x32')]);router[_0x5cb0('0x33')](_0x5cb0('0x34'),auth[_0x5cb0('0x7')](),controller['queueNotify'](_0x5cb0('0x35')));router['get'](_0x5cb0('0x36'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x37')]);router['post'](_0x5cb0('0x38'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x39')](_0x5cb0('0x3a')));router['get']('/chat/queues/:id',auth[_0x5cb0('0x7')](),controller['showChatQueues']);router[_0x5cb0('0x33')]('/fax/queues/:id/notify',auth['isAuthenticated'](),controller[_0x5cb0('0x39')]('fax'));router[_0x5cb0('0x5')](_0x5cb0('0x3b'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x3c')]);router['post'](_0x5cb0('0x3d'),auth['isAuthenticated'](),controller[_0x5cb0('0x39')](_0x5cb0('0x3e')));router[_0x5cb0('0x5')](_0x5cb0('0x3f'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x40')]);router[_0x5cb0('0x33')]('/sms/queues/:id/notify',auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x39')]('sms'));router[_0x5cb0('0x33')]('/whatsapp/queues/:id/notify',auth['isAuthenticated'](),controller[_0x5cb0('0x39')](_0x5cb0('0x41')));router[_0x5cb0('0x5')](_0x5cb0('0x42'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x43')]);router[_0x5cb0('0x5')](_0x5cb0('0x44'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x45')]);router['post'](_0x5cb0('0x46'),auth[_0x5cb0('0x7')](),controller[_0x5cb0('0x47')]);module[_0x5cb0('0x48')]=router;
\ No newline at end of file
+var _0x14a8=['/whatsapp/queues','whatsappQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelRedirect','/voice/queues/:id','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','put','agentCapacity','/telephones','/trunks','trunks','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','mail','showMailQueues','/chat/queues/:id/notify','queueNotify','chat','/chat/queues/:id','/fax/queues/:id/notify','fax','/fax/queues/:id','/openchannel/queues/:id/notify','/openchannel/queues/:id','/sms/queues/:id/notify','sms','whatsapp','/sms/queues/:id','showWhatsappQueues','/agents/:id/notify','exports','util','path','Router','./rpc.controller','get','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues'];(function(_0x13b330,_0x297092){var _0x1f666c=function(_0x5ebc84){while(--_0x5ebc84){_0x13b330['push'](_0x13b330['shift']());}};_0x1f666c(++_0x297092);}(_0x14a8,0x15f));var _0x814a=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x14a8[_0x126558];return _0x1f6d14;};'use strict';var multer=require('multer');var util=require(_0x814a('0x0'));var path=require(_0x814a('0x1'));var express=require('express');var router=express[_0x814a('0x2')]();var auth=require('../../components/auth/service');var controller=require(_0x814a('0x3'));router[_0x814a('0x4')]('/voice/channels',auth[_0x814a('0x5')](),controller[_0x814a('0x6')]);router[_0x814a('0x4')](_0x814a('0x7'),auth[_0x814a('0x5')](),controller[_0x814a('0x8')]);router[_0x814a('0x4')]('/voice/channels/:uniqueid/stopmixmonitor',auth['isAuthenticated'](),controller[_0x814a('0x9')]);router[_0x814a('0x4')](_0x814a('0xa'),auth['isAuthenticated'](),controller[_0x814a('0xb')]);router['get']('/chat/queues',auth[_0x814a('0x5')](),controller[_0x814a('0xc')]);router[_0x814a('0x4')]('/mail/queues',auth[_0x814a('0x5')](),controller['mailQueues']);router['get'](_0x814a('0xd'),auth[_0x814a('0x5')](),controller[_0x814a('0xe')]);router['get'](_0x814a('0xf'),auth['isAuthenticated'](),controller[_0x814a('0x10')]);router[_0x814a('0x4')](_0x814a('0x11'),auth[_0x814a('0x5')](),controller[_0x814a('0x12')]);router[_0x814a('0x4')](_0x814a('0x13'),auth[_0x814a('0x5')](),controller[_0x814a('0x14')]);router[_0x814a('0x4')]('/fax/queues',auth[_0x814a('0x5')](),controller['faxQueues']);router[_0x814a('0x4')]('/voice/queues/preview/:id',auth[_0x814a('0x5')](),controller[_0x814a('0x15')]);router[_0x814a('0x4')](_0x814a('0x16'),auth[_0x814a('0x5')](),controller[_0x814a('0x17')]);router[_0x814a('0x4')](_0x814a('0x18'),auth[_0x814a('0x5')](),controller['voiceQueuesChannel']);router[_0x814a('0x4')](_0x814a('0x19'),auth[_0x814a('0x5')](),controller['voiceQueuesChannelHangup']);router[_0x814a('0x4')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x814a('0x5')](),controller[_0x814a('0x1a')]);router['get']('/voice/queues/:id',auth[_0x814a('0x5')](),controller['showVoiceQueues']);router['put'](_0x814a('0x1b'),auth['isAuthenticated'](),controller[_0x814a('0x1c')]);router[_0x814a('0x4')](_0x814a('0x1d'),auth[_0x814a('0x5')](),controller[_0x814a('0x1e')]);router['get'](_0x814a('0x1f'),auth['isAuthenticated'](),controller[_0x814a('0x20')]);router[_0x814a('0x4')](_0x814a('0x21'),auth['isAuthenticated'](),controller[_0x814a('0x22')]);router[_0x814a('0x23')]('/agents/:id/capacity',auth['isAuthenticated'](),controller[_0x814a('0x24')]);router[_0x814a('0x4')](_0x814a('0x25'),auth[_0x814a('0x5')](),controller['telephones']);router['get'](_0x814a('0x26'),auth[_0x814a('0x5')](),controller[_0x814a('0x27')]);router[_0x814a('0x4')]('/campaigns',auth[_0x814a('0x5')](),controller[_0x814a('0x28')]);router[_0x814a('0x4')](_0x814a('0x29'),auth[_0x814a('0x5')](),controller[_0x814a('0x2a')]);router['get'](_0x814a('0x2b'),auth[_0x814a('0x5')](),controller[_0x814a('0x2c')]);router[_0x814a('0x4')](_0x814a('0x2d'),auth[_0x814a('0x5')](),controller['mailQueuesWaitingInteractions']);router['get']('/openchannel/queues/waitinginteractions',auth[_0x814a('0x5')](),controller[_0x814a('0x2e')]);router[_0x814a('0x4')]('/openchannel/queues/:id/waitinginteractions',auth[_0x814a('0x5')](),controller[_0x814a('0x2f')]);router[_0x814a('0x4')](_0x814a('0x30'),auth[_0x814a('0x5')](),controller[_0x814a('0x31')]);router[_0x814a('0x4')](_0x814a('0x32'),auth[_0x814a('0x5')](),controller[_0x814a('0x33')]);router[_0x814a('0x4')](_0x814a('0x34'),auth[_0x814a('0x5')](),controller[_0x814a('0x35')]);router[_0x814a('0x36')](_0x814a('0x37'),auth[_0x814a('0x5')](),controller['queueNotify'](_0x814a('0x38')));router[_0x814a('0x4')]('/mail/queues/:id',auth[_0x814a('0x5')](),controller[_0x814a('0x39')]);router[_0x814a('0x36')](_0x814a('0x3a'),auth['isAuthenticated'](),controller[_0x814a('0x3b')](_0x814a('0x3c')));router[_0x814a('0x4')](_0x814a('0x3d'),auth[_0x814a('0x5')](),controller['showChatQueues']);router[_0x814a('0x36')](_0x814a('0x3e'),auth['isAuthenticated'](),controller[_0x814a('0x3b')](_0x814a('0x3f')));router[_0x814a('0x4')](_0x814a('0x40'),auth[_0x814a('0x5')](),controller['showFaxQueues']);router['post'](_0x814a('0x41'),auth[_0x814a('0x5')](),controller['queueNotify']('openchannel'));router[_0x814a('0x4')](_0x814a('0x42'),auth[_0x814a('0x5')](),controller['showOpenchannelQueues']);router['post'](_0x814a('0x43'),auth[_0x814a('0x5')](),controller[_0x814a('0x3b')](_0x814a('0x44')));router[_0x814a('0x36')]('/whatsapp/queues/:id/notify',auth[_0x814a('0x5')](),controller[_0x814a('0x3b')](_0x814a('0x45')));router['get'](_0x814a('0x46'),auth[_0x814a('0x5')](),controller['showSmsQueues']);router[_0x814a('0x4')]('/whatsapp/queues/:id',auth['isAuthenticated'](),controller[_0x814a('0x47')]);router['post'](_0x814a('0x48'),auth[_0x814a('0x5')](),controller['agentNotify']);module[_0x814a('0x49')]=router;
\ No newline at end of file
index b69ddaa..7eb36f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['MailQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','value','indexOf','smsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','Account','\x20Message\x20not\x20found','update','queue','From','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','Website','Agent\x20not\x20found','InteractionId','agentTransferTimeout','moment','lodash','util','../../mysqldb','../../config/logger','api','client','http','request','then','error','code','message','result','status','sendStatus','stack','name','isNil','rows','voiceChannels','VoiceChannels','catch','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','query','params','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','body','interaction','user','hasOwnProperty','MemberReport','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','interface','SIP/%s','agent','internal','AgentCapacity','capacity','telephones','Telephones','trunks','Campaigns','chatQueues','ChatQueues','showChatQueues','MailQueues','showMailQueues','mailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','showSmsQueues','WhatsappQueues','showWhatsappQueues','faxQueues','showFaxQueues','FaxQueues','faxAccounts','FaxAccounts','mailQueuesWaitingInteractions'];(function(_0x3fe5d2,_0x3f8e4a){var _0x26411e=function(_0x59c754){while(--_0x59c754){_0x3fe5d2['push'](_0x3fe5d2['shift']());}};_0x26411e(++_0x3f8e4a);}(_0xbaf0,0x12a));var _0x0baf=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xbaf0[_0xa464c9];return _0x3d73c4;};'use strict';var BPromise=require('bluebird');var moment=require(_0x0baf('0x0'));var _=require(_0x0baf('0x1'));var util=require(_0x0baf('0x2'));var db=require(_0x0baf('0x3'))['db'];var logger=require(_0x0baf('0x4'))(_0x0baf('0x5'));var jayson=require('jayson/promise');var amiClient=jayson[_0x0baf('0x6')][_0x0baf('0x7')]({'port':0x232a});var mailClient=jayson[_0x0baf('0x6')][_0x0baf('0x7')]({'port':0x232b});var routingClient=jayson[_0x0baf('0x6')][_0x0baf('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x1a10b1,_0x2dcaac,_0x1d0a0d){return new BPromise(function(_0x5f5030,_0x11b947){var _0x5f20aa=_0x1d0a0d?_0x1d0a0d:amiClient;return _0x5f20aa[_0x0baf('0x8')](_0x1a10b1,_0x2dcaac)[_0x0baf('0x9')](function(_0x465528){if(_0x465528[_0x0baf('0xa')]){if(_0x465528[_0x0baf('0xa')][_0x0baf('0xb')]===0x1f4){return _0x11b947(_0x465528[_0x0baf('0xa')][_0x0baf('0xc')]);}return _0x5f5030(_0x465528[_0x0baf('0xa')][_0x0baf('0xc')]);}else{_0x5f5030(_0x465528[_0x0baf('0xd')]);}})['catch'](function(_0x5a53e2){_0x11b947(_0x5a53e2);});});}function respondWithResult(_0x465dd7,_0xe4378c){_0xe4378c=_0xe4378c||0xc8;return function(_0x5db689){if(_0x5db689){return _0x465dd7[_0x0baf('0xe')](_0xe4378c)['json'](_0x5db689);}return _0x465dd7[_0x0baf('0xf')](0x194);};}function handleError(_0x49e44b,_0x1c76a8){_0x1c76a8=_0x1c76a8||0x1f4;return function(_0x1f50c3){logger[_0x0baf('0xa')](_0x1f50c3[_0x0baf('0x10')]);if(_0x1f50c3[_0x0baf('0x11')]){delete _0x1f50c3[_0x0baf('0x11')];}_0x49e44b['status'](_0x1c76a8)['send'](_0x1f50c3);};}function findById(_0x2312c7){return function(_0x38395b){if(!_[_0x0baf('0x12')](_0x2312c7)&&!_[_0x0baf('0x12')](_0x38395b)&&!_[_0x0baf('0x12')](_0x38395b[_0x0baf('0x13')])){return _['find'](_0x38395b[_0x0baf('0x13')],function(_0xfbecec){return _0xfbecec['id']==_0x2312c7;});}return null;};}exports[_0x0baf('0x14')]=function(_0x3e9cb4,_0x47070d){return respondWithRpcPromise(_0x0baf('0x15'),_0x3e9cb4['query'])['then'](respondWithResult(_0x47070d,null))[_0x0baf('0x16')](handleError(_0x47070d,null));};exports[_0x0baf('0x17')]=function(_0x32e839,_0x1848e8){return respondWithRpcPromise(_0x0baf('0x18'),_[_0x0baf('0x19')](_0x32e839[_0x0baf('0x1a')],_0x32e839[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x1848e8,null))[_0x0baf('0x16')](handleError(_0x1848e8,null));};exports['voiceChannelStopMixMonitor']=function(_0x334bd6,_0x482522){return respondWithRpcPromise(_0x0baf('0x1c'),_['merge'](_0x334bd6['query'],_0x334bd6[_0x0baf('0x1b')]))['then'](respondWithResult(_0x482522,null))['catch'](handleError(_0x482522,null));};exports[_0x0baf('0x1d')]=function(_0x27b59c,_0x34e264){return respondWithRpcPromise(_0x0baf('0x1e'),_0x27b59c[_0x0baf('0x1a')])['then'](respondWithResult(_0x34e264,null))[_0x0baf('0x16')](handleError(_0x34e264,null));};exports[_0x0baf('0x1f')]=function(_0x1ca35a,_0x366e71){return respondWithRpcPromise(_0x0baf('0x1e'),_0x1ca35a[_0x0baf('0x1a')])[_0x0baf('0x9')](findById(_0x1ca35a['params']['id']))[_0x0baf('0x9')](respondWithResult(_0x366e71,null))[_0x0baf('0x16')](handleError(_0x366e71,null));};exports[_0x0baf('0x20')]=function(_0x265915,_0x55c715){return respondWithRpcPromise(_0x0baf('0x21'),_[_0x0baf('0x19')](_0x265915['body'],_0x265915[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x55c715,null))[_0x0baf('0x16')](handleError(_0x55c715,null));};exports[_0x0baf('0x22')]=function(_0xd14f0f,_0x366924){return respondWithRpcPromise(_0x0baf('0x23'),_['merge'](_0xd14f0f[_0x0baf('0x1a')],_0xd14f0f[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x366924,null))[_0x0baf('0x16')](handleError(_0x366924,null));};exports[_0x0baf('0x24')]=function(_0x275ea1,_0x2fc983){return respondWithRpcPromise(_0x0baf('0x25'),_0x275ea1[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0x2fc983,null))[_0x0baf('0x16')](handleError(_0x2fc983,null));};exports[_0x0baf('0x26')]=function(_0x45294a,_0x3a3353){return respondWithRpcPromise('VoiceQueuesChannel',_[_0x0baf('0x19')](_0x45294a['query'],_0x45294a[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x3a3353,null))[_0x0baf('0x16')](handleError(_0x3a3353,null));};exports[_0x0baf('0x27')]=function(_0x5300a5,_0x1a2b03){return respondWithRpcPromise(_0x0baf('0x28'),_['merge'](_0x5300a5[_0x0baf('0x1a')],_0x5300a5[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x1a2b03,null))[_0x0baf('0x16')](handleError(_0x1a2b03,null));};exports[_0x0baf('0x29')]=function(_0x1b0991,_0xe03d82){return respondWithRpcPromise(_0x0baf('0x2a'),_['merge'](_0x1b0991[_0x0baf('0x1a')],_0x1b0991[_0x0baf('0x1b')]))['then'](respondWithResult(_0xe03d82,null))[_0x0baf('0x16')](handleError(_0xe03d82,null));};exports['outbound']=function(_0x5c545f,_0x11bc49){return respondWithRpcPromise(_0x0baf('0x2b'),_0x5c545f['query'])['then'](respondWithResult(_0x11bc49,null))[_0x0baf('0x16')](handleError(_0x11bc49,null));};exports[_0x0baf('0x2c')]=function(_0x3412bc,_0xb2d9ab){return respondWithRpcPromise(_0x0baf('0x2d'),_0x3412bc[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0xb2d9ab,null))[_0x0baf('0x16')](handleError(_0xb2d9ab,null));};exports[_0x0baf('0x2e')]=function(_0x36c6d2,_0x200864){var _0x148540;return respondWithRpcPromise(_0x0baf('0x2f'),_0x36c6d2[_0x0baf('0x1a')])['then'](function(_0x3573ce){_0x148540=_0x3573ce;return respondWithRpcPromise(_0x0baf('0x2f'),_0x36c6d2['query'],routingClient);})[_0x0baf('0x9')](function(_0x324369){return _[_0x0baf('0x19')]({},_0x324369,_0x148540);})[_0x0baf('0x9')](respondWithResult(_0x200864,null))[_0x0baf('0x16')](handleError(_0x200864,null));};exports[_0x0baf('0x30')]=function(_0x57b581,_0x23ad34){if(_0x57b581[_0x0baf('0x31')]&&_0x57b581['body'][_0x0baf('0x32')]&&_0x57b581[_0x0baf('0x33')]&&_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')]){for(var _0x504031 in _0x57b581[_0x0baf('0x31')][_0x0baf('0x32')]){if(_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x0baf('0x34')](_0x504031)){db[_0x0baf('0x35')][_0x0baf('0x36')]({'where':{'channel':_0x504031,'membername':_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')],'type':_0x0baf('0x37'),'exitAt':null,'uniqueid':_0x57b581['body'][_0x0baf('0x32')][_0x504031]&&_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x504031][_0x0baf('0x38')]?{'$notIn':_0x57b581[_0x0baf('0x31')]['interaction'][_0x504031]}:{'$ne':null}}})[_0x0baf('0x9')](function(_0x310240){var _0x27c3ee=moment()[_0x0baf('0x39')](_0x0baf('0x3a'));for(var _0x54ed41=0x0,_0x2a0924=_0x310240[_0x0baf('0x38')];_0x54ed41<_0x2a0924;_0x54ed41+=0x1){_0x310240[_0x54ed41][_0x0baf('0x3b')]({'exitAt':_0x27c3ee});}});for(var _0x1522b0=0x0;_0x1522b0<_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x504031][_0x0baf('0x38')];_0x1522b0+=0x1){db['MemberReport'][_0x0baf('0x3c')]({'where':{'channel':_0x504031,'membername':_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')],'type':'INTERACTION','uniqueid':_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x504031][_0x1522b0],'exitAt':null},'defaults':{'channel':_0x504031,'membername':_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')],'interface':_[_0x0baf('0x12')](_0x57b581[_0x0baf('0x33')][_0x0baf('0x3d')])?util['format'](_0x0baf('0x3e'),_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')]):_0x57b581[_0x0baf('0x33')][_0x0baf('0x3d')],'type':_0x0baf('0x37'),'enterAt':moment()[_0x0baf('0x39')](_0x0baf('0x3a')),'role':_0x0baf('0x3f'),'internal':_0x57b581[_0x0baf('0x33')][_0x0baf('0x40')],'uniqueid':_0x57b581['body']['interaction'][_0x504031][_0x1522b0]}});}}}}return respondWithRpcPromise(_0x0baf('0x41'),{'id':_0x57b581[_0x0baf('0x1b')]['id'],'capacity':_0x57b581[_0x0baf('0x31')][_0x0baf('0x42')]},routingClient)[_0x0baf('0x9')](respondWithResult(_0x23ad34,null))[_0x0baf('0x16')](handleError(_0x23ad34,null));};exports[_0x0baf('0x43')]=function(_0x4b492c,_0x3fe534){return respondWithRpcPromise(_0x0baf('0x44'),_0x4b492c[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0x3fe534,null))[_0x0baf('0x16')](handleError(_0x3fe534,null));};exports[_0x0baf('0x45')]=function(_0x5e1849,_0x3eebe5){return respondWithRpcPromise('Trunks',_0x5e1849[_0x0baf('0x1a')])['then'](respondWithResult(_0x3eebe5,null))[_0x0baf('0x16')](handleError(_0x3eebe5,null));};exports['campaigns']=function(_0x35b1a5,_0x4c035b){return respondWithRpcPromise(_0x0baf('0x46'),_0x35b1a5[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0x4c035b,null))[_0x0baf('0x16')](handleError(_0x4c035b,null));};exports[_0x0baf('0x47')]=function(_0x576475,_0x21f179){return respondWithRpcPromise(_0x0baf('0x48'),_0x576475[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x21f179,null))[_0x0baf('0x16')](handleError(_0x21f179,null));};exports[_0x0baf('0x49')]=function(_0x480834,_0x402f4d){return respondWithRpcPromise(_0x0baf('0x48'),_0x480834[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](findById(_0x480834[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0x402f4d,null))[_0x0baf('0x16')](handleError(_0x402f4d,null));};exports['mailQueues']=function(_0x48e855,_0x23f6ea){return respondWithRpcPromise(_0x0baf('0x4a'),_0x48e855[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x23f6ea,null))[_0x0baf('0x16')](handleError(_0x23f6ea,null));};exports[_0x0baf('0x4b')]=function(_0xaa4293,_0x14a667){return respondWithRpcPromise(_0x0baf('0x4a'),_0xaa4293['query'],routingClient)[_0x0baf('0x9')](findById(_0xaa4293[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0x14a667,null))[_0x0baf('0x16')](handleError(_0x14a667,null));};exports[_0x0baf('0x4c')]=function(_0xebfc0c,_0x26f5c9){return respondWithRpcPromise('MailAccounts',_0xebfc0c[_0x0baf('0x1a')],mailClient)[_0x0baf('0x9')](respondWithResult(_0x26f5c9,null))[_0x0baf('0x16')](handleError(_0x26f5c9,null));};exports[_0x0baf('0x4d')]=function(_0x1c7d88,_0x1a6d22){return respondWithRpcPromise(_0x0baf('0x4e'),_0x1c7d88[_0x0baf('0x1a')],routingClient)['then'](respondWithResult(_0x1a6d22,null))[_0x0baf('0x16')](handleError(_0x1a6d22,null));};exports['showOpenchannelQueues']=function(_0x3c00e7,_0x5f2fbe){return respondWithRpcPromise('OpenchannelQueues',_0x3c00e7[_0x0baf('0x1a')],routingClient)['then'](findById(_0x3c00e7[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0x5f2fbe,null))['catch'](handleError(_0x5f2fbe,null));};exports[_0x0baf('0x4f')]=function(_0xfb6708,_0x156572){return respondWithRpcPromise('SmsQueues',_0xfb6708['query'],routingClient)[_0x0baf('0x9')](respondWithResult(_0x156572,null))[_0x0baf('0x16')](handleError(_0x156572,null));};exports[_0x0baf('0x50')]=function(_0x7f49e,_0x784e1a){return respondWithRpcPromise('SmsQueues',_0x7f49e[_0x0baf('0x1a')],routingClient)['then'](findById(_0x7f49e['params']['id']))['then'](respondWithResult(_0x784e1a,null))[_0x0baf('0x16')](handleError(_0x784e1a,null));};exports['whatsappQueues']=function(_0x4946d4,_0x11a81e){return respondWithRpcPromise(_0x0baf('0x51'),_0x4946d4[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x11a81e,null))[_0x0baf('0x16')](handleError(_0x11a81e,null));};exports[_0x0baf('0x52')]=function(_0x4c05d6,_0xec3b32){return respondWithRpcPromise(_0x0baf('0x51'),_0x4c05d6[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](findById(_0x4c05d6[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0xec3b32,null))['catch'](handleError(_0xec3b32,null));};exports[_0x0baf('0x53')]=function(_0x468363,_0x29fd46){return respondWithRpcPromise('FaxQueues',_0x468363[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x29fd46,null))[_0x0baf('0x16')](handleError(_0x29fd46,null));};exports[_0x0baf('0x54')]=function(_0x125906,_0x27a959){return respondWithRpcPromise(_0x0baf('0x55'),_0x125906['query'],routingClient)['then'](findById(_0x125906['params']['id']))[_0x0baf('0x9')](respondWithResult(_0x27a959,null))[_0x0baf('0x16')](handleError(_0x27a959,null));};exports[_0x0baf('0x56')]=function(_0x12b9b5,_0x3e65d4){return respondWithRpcPromise(_0x0baf('0x57'),_0x12b9b5['query'])['then'](respondWithResult(_0x3e65d4,null))[_0x0baf('0x16')](handleError(_0x3e65d4,null));};exports['chatQueuesWaitingInteractions']=function(_0x22cd07,_0x3e9b79){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x22cd07[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x3e9b79,null))[_0x0baf('0x16')](handleError(_0x3e9b79,null));};exports[_0x0baf('0x58')]=function(_0x115ff5,_0x33a5af){return respondWithRpcPromise(_0x0baf('0x59'),_0x115ff5[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x33a5af,null))['catch'](handleError(_0x33a5af,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x58a079,_0x493784){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x58a079[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x493784,null))[_0x0baf('0x16')](handleError(_0x493784,null));};exports[_0x0baf('0x5a')]=function(_0x5093f5,_0x1be7f2){return respondWithRpcPromise(_0x0baf('0x5b'),_0x5093f5['query'],routingClient)['then'](function(_0x43aecd){if(_0x5093f5[_0x0baf('0x1a')][_0x0baf('0x5c')]!==undefined){var _0x442e5f=_(_0x43aecd[_0x0baf('0x13')])[_0x0baf('0x5d')]([_0x5093f5[_0x0baf('0x1a')][_0x0baf('0x5c')],_0x5093f5['params']['id']])[_0x0baf('0x5e')](_0x0baf('0x5f'))['uniq']()[_0x0baf('0x60')]();return _0x43aecd[_0x0baf('0x13')]['filter'](function(_0x97d385){return _0x442e5f[_0x0baf('0x61')](_0x97d385[_0x0baf('0x5f')])>-0x1;});}else{return _0x43aecd[_0x0baf('0x13')][_0x0baf('0x5d')](function(_0x4fc5af){return _0x4fc5af['queue_id']===parseInt(_0x5093f5[_0x0baf('0x1b')]['id']);});}})[_0x0baf('0x9')](respondWithResult(_0x1be7f2,null))['catch'](handleError(_0x1be7f2,null));};exports[_0x0baf('0x62')]=function(_0x59dad5,_0x21ad25){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x59dad5[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x21ad25,null))[_0x0baf('0x16')](handleError(_0x21ad25,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x3c2bc1,_0x5008c5){return respondWithRpcPromise(_0x0baf('0x63'),_0x3c2bc1[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x5008c5,null))[_0x0baf('0x16')](handleError(_0x5008c5,null));};exports[_0x0baf('0x64')]=function(_0x52e845,_0x866e6e){return respondWithRpcPromise(_0x0baf('0x65'),_0x52e845['query'],routingClient)[_0x0baf('0x9')](respondWithResult(_0x866e6e,null))[_0x0baf('0x16')](handleError(_0x866e6e,null));};exports[_0x0baf('0x66')]=function(_0x379c54){return function(_0x1cbbcc,_0x250df2){var _0xa4fd1b,_0x1cda78;var _0x44ef57=_[_0x0baf('0x67')](_0x379c54);var _0x3b7abf=_0x379c54===_0x0baf('0x68')?'Website':'Account';return db[_0x44ef57+_0x0baf('0x69')][_0x0baf('0x6a')]({'raw':!![],'where':{'id':_0x1cbbcc[_0x0baf('0x1b')]['id']}})['then'](function(_0x507783){if(_[_0x0baf('0x12')](_0x507783)){throw new Error(_0x44ef57+_0x0baf('0x6b'));}_0xa4fd1b=_0x507783;return db[_0x44ef57+_0x0baf('0x6c')][_0x0baf('0x6a')]({'where':{'id':_0x1cbbcc[_0x0baf('0x31')][_0x0baf('0x6d')]},'include':[{'model':db[_0x44ef57+_0x0baf('0x6e')],'as':_0x0baf('0x6e')},{'model':db[_0x44ef57+_0x3b7abf],'as':_0x0baf('0x6f')}]});})['then'](function(_0x1590a5){if(_[_0x0baf('0x12')](_0x1590a5)){throw new Error(_0x44ef57+_0x0baf('0x70'));}_0x1cda78=_0x1590a5;return _0x1590a5[_0x0baf('0x71')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x5d26e6={'uniqueid':_0x379c54+'.'+_0x1cda78['id']+'.'+_0x1cda78['Interaction']['id'],'FromUserId':_0x1cbbcc[_0x0baf('0x33')]['id'],'type':_0x0baf('0x72')};_0x5d26e6[_0x44ef57+'MessageId']=_0x1cda78['id'];_0x5d26e6[_0x44ef57+'InteractionId']=_0x1cda78[_0x0baf('0x6e')]['id'];_0x5d26e6[_0x0baf('0x73')+_0x44ef57+_0x3b7abf+'Id']=_0x1cda78['Account']['id'];_0x5d26e6['To'+_0x44ef57+_0x0baf('0x74')]=_0xa4fd1b['id'];return db[_0x44ef57+_0x0baf('0x75')][_0x0baf('0x76')](_0x5d26e6);})[_0x0baf('0x9')](function(){return respondWithRpcPromise(_0x0baf('0x77'),{'channel':_0x379c54,'interaction':_0x1cda78[_0x0baf('0x6e')],'message':_0x1cda78,'account':_0x1cda78[_0x0baf('0x6f')],'applications':[{'id':0x0,'priority':0x1,'app':_0x0baf('0x72'),'appdata':_0xa4fd1b[_0x0baf('0x11')]+','+(_0x1cda78[_0x0baf('0x6f')][_0x0baf('0x78')]||0x12c),'interval':_0x0baf('0x79')}],'transfer':!![]},routingClient);})['then'](respondWithResult(_0x250df2,null))[_0x0baf('0x16')](handleError(_0x250df2,null));};};exports[_0x0baf('0x7a')]=function(_0x1e1adb,_0x3bd15b){var _0x3c37b4,_0x195303;if(_['isNil'](_0x1e1adb[_0x0baf('0x31')][_0x0baf('0x7b')])){throw new Error(_0x0baf('0x7c'));}var _0x457ae8=_0x1e1adb[_0x0baf('0x31')]['channel'];var _0x3761b5=_[_0x0baf('0x67')](_0x457ae8);var _0x2eae1b=_0x457ae8===_0x0baf('0x68')?_0x0baf('0x7d'):'Account';return db['User'][_0x0baf('0x6a')]({'raw':!![],'where':{'id':_0x1e1adb['params']['id'],'role':_0x0baf('0x3f')}})['then'](function(_0x32d8b6){if(_[_0x0baf('0x12')](_0x32d8b6)){throw new Error(_0x0baf('0x7e'));}_0x3c37b4=_0x32d8b6;return db[_0x3761b5+_0x0baf('0x6c')]['findOne']({'where':{'id':_0x1e1adb[_0x0baf('0x31')][_0x0baf('0x6d')]},'include':[{'model':db[_0x3761b5+_0x0baf('0x6e')],'as':'Interaction'},{'model':db[_0x3761b5+_0x2eae1b],'as':'Account'}]});})['then'](function(_0x4d4884){if(_[_0x0baf('0x12')](_0x4d4884)){throw new Error(_0x3761b5+_0x0baf('0x70'));}_0x195303=_0x4d4884;return _0x4d4884[_0x0baf('0x71')]({'read':0x0,'readAt':null,'UserId':null});})[_0x0baf('0x9')](function(){var _0x597830={'uniqueid':_0x457ae8+'.'+_0x195303['id']+'.'+_0x195303[_0x0baf('0x6e')]['id'],'FromUserId':_0x1e1adb[_0x0baf('0x33')]['id'],'type':_0x0baf('0x3f'),'ToUserId':_0x3c37b4['id']};_0x597830[_0x3761b5+'MessageId']=_0x195303['id'];_0x597830[_0x3761b5+_0x0baf('0x7f')]=_0x195303[_0x0baf('0x6e')]['id'];_0x597830['From'+_0x3761b5+_0x2eae1b+'Id']=_0x195303[_0x0baf('0x6f')]['id'];return db[_0x3761b5+'TransferReport'][_0x0baf('0x76')](_0x597830);})[_0x0baf('0x9')](function(){return respondWithRpcPromise(_0x0baf('0x77'),{'channel':_0x457ae8,'interaction':_0x195303[_0x0baf('0x6e')],'message':_0x195303,'account':_0x195303['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x3c37b4[_0x0baf('0x11')]+','+(_0x195303['Account'][_0x0baf('0x80')]||0x12c),'interval':_0x0baf('0x79')}],'transfer':!![]},routingClient);})[_0x0baf('0x9')](respondWithResult(_0x3bd15b,null))[_0x0baf('0x16')](handleError(_0x3bd15b,null));};
\ No newline at end of file
+var _0xbaf0=['MailQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','value','indexOf','smsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','Account','\x20Message\x20not\x20found','update','queue','From','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','Website','Agent\x20not\x20found','InteractionId','agentTransferTimeout','moment','lodash','util','../../mysqldb','../../config/logger','api','client','http','request','then','error','code','message','result','status','sendStatus','stack','name','isNil','rows','voiceChannels','VoiceChannels','catch','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','query','params','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','body','interaction','user','hasOwnProperty','MemberReport','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','interface','SIP/%s','agent','internal','AgentCapacity','capacity','telephones','Telephones','trunks','Campaigns','chatQueues','ChatQueues','showChatQueues','MailQueues','showMailQueues','mailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','showSmsQueues','WhatsappQueues','showWhatsappQueues','faxQueues','showFaxQueues','FaxQueues','faxAccounts','FaxAccounts','mailQueuesWaitingInteractions'];(function(_0x155635,_0x25fa8c){var _0x1a0a8=function(_0x2a9c2f){while(--_0x2a9c2f){_0x155635['push'](_0x155635['shift']());}};_0x1a0a8(++_0x25fa8c);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'use strict';var BPromise=require('bluebird');var moment=require(_0x0baf('0x0'));var _=require(_0x0baf('0x1'));var util=require(_0x0baf('0x2'));var db=require(_0x0baf('0x3'))['db'];var logger=require(_0x0baf('0x4'))(_0x0baf('0x5'));var jayson=require('jayson/promise');var amiClient=jayson[_0x0baf('0x6')][_0x0baf('0x7')]({'port':0x232a});var mailClient=jayson[_0x0baf('0x6')][_0x0baf('0x7')]({'port':0x232b});var routingClient=jayson[_0x0baf('0x6')][_0x0baf('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x1a10b1,_0x2dcaac,_0x1d0a0d){return new BPromise(function(_0x5f5030,_0x11b947){var _0x5f20aa=_0x1d0a0d?_0x1d0a0d:amiClient;return _0x5f20aa[_0x0baf('0x8')](_0x1a10b1,_0x2dcaac)[_0x0baf('0x9')](function(_0x465528){if(_0x465528[_0x0baf('0xa')]){if(_0x465528[_0x0baf('0xa')][_0x0baf('0xb')]===0x1f4){return _0x11b947(_0x465528[_0x0baf('0xa')][_0x0baf('0xc')]);}return _0x5f5030(_0x465528[_0x0baf('0xa')][_0x0baf('0xc')]);}else{_0x5f5030(_0x465528[_0x0baf('0xd')]);}})['catch'](function(_0x5a53e2){_0x11b947(_0x5a53e2);});});}function respondWithResult(_0x465dd7,_0xe4378c){_0xe4378c=_0xe4378c||0xc8;return function(_0x5db689){if(_0x5db689){return _0x465dd7[_0x0baf('0xe')](_0xe4378c)['json'](_0x5db689);}return _0x465dd7[_0x0baf('0xf')](0x194);};}function handleError(_0x49e44b,_0x1c76a8){_0x1c76a8=_0x1c76a8||0x1f4;return function(_0x1f50c3){logger[_0x0baf('0xa')](_0x1f50c3[_0x0baf('0x10')]);if(_0x1f50c3[_0x0baf('0x11')]){delete _0x1f50c3[_0x0baf('0x11')];}_0x49e44b['status'](_0x1c76a8)['send'](_0x1f50c3);};}function findById(_0x2312c7){return function(_0x38395b){if(!_[_0x0baf('0x12')](_0x2312c7)&&!_[_0x0baf('0x12')](_0x38395b)&&!_[_0x0baf('0x12')](_0x38395b[_0x0baf('0x13')])){return _['find'](_0x38395b[_0x0baf('0x13')],function(_0xfbecec){return _0xfbecec['id']==_0x2312c7;});}return null;};}exports[_0x0baf('0x14')]=function(_0x3e9cb4,_0x47070d){return respondWithRpcPromise(_0x0baf('0x15'),_0x3e9cb4['query'])['then'](respondWithResult(_0x47070d,null))[_0x0baf('0x16')](handleError(_0x47070d,null));};exports[_0x0baf('0x17')]=function(_0x32e839,_0x1848e8){return respondWithRpcPromise(_0x0baf('0x18'),_[_0x0baf('0x19')](_0x32e839[_0x0baf('0x1a')],_0x32e839[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x1848e8,null))[_0x0baf('0x16')](handleError(_0x1848e8,null));};exports['voiceChannelStopMixMonitor']=function(_0x334bd6,_0x482522){return respondWithRpcPromise(_0x0baf('0x1c'),_['merge'](_0x334bd6['query'],_0x334bd6[_0x0baf('0x1b')]))['then'](respondWithResult(_0x482522,null))['catch'](handleError(_0x482522,null));};exports[_0x0baf('0x1d')]=function(_0x27b59c,_0x34e264){return respondWithRpcPromise(_0x0baf('0x1e'),_0x27b59c[_0x0baf('0x1a')])['then'](respondWithResult(_0x34e264,null))[_0x0baf('0x16')](handleError(_0x34e264,null));};exports[_0x0baf('0x1f')]=function(_0x1ca35a,_0x366e71){return respondWithRpcPromise(_0x0baf('0x1e'),_0x1ca35a[_0x0baf('0x1a')])[_0x0baf('0x9')](findById(_0x1ca35a['params']['id']))[_0x0baf('0x9')](respondWithResult(_0x366e71,null))[_0x0baf('0x16')](handleError(_0x366e71,null));};exports[_0x0baf('0x20')]=function(_0x265915,_0x55c715){return respondWithRpcPromise(_0x0baf('0x21'),_[_0x0baf('0x19')](_0x265915['body'],_0x265915[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x55c715,null))[_0x0baf('0x16')](handleError(_0x55c715,null));};exports[_0x0baf('0x22')]=function(_0xd14f0f,_0x366924){return respondWithRpcPromise(_0x0baf('0x23'),_['merge'](_0xd14f0f[_0x0baf('0x1a')],_0xd14f0f[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x366924,null))[_0x0baf('0x16')](handleError(_0x366924,null));};exports[_0x0baf('0x24')]=function(_0x275ea1,_0x2fc983){return respondWithRpcPromise(_0x0baf('0x25'),_0x275ea1[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0x2fc983,null))[_0x0baf('0x16')](handleError(_0x2fc983,null));};exports[_0x0baf('0x26')]=function(_0x45294a,_0x3a3353){return respondWithRpcPromise('VoiceQueuesChannel',_[_0x0baf('0x19')](_0x45294a['query'],_0x45294a[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x3a3353,null))[_0x0baf('0x16')](handleError(_0x3a3353,null));};exports[_0x0baf('0x27')]=function(_0x5300a5,_0x1a2b03){return respondWithRpcPromise(_0x0baf('0x28'),_['merge'](_0x5300a5[_0x0baf('0x1a')],_0x5300a5[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x1a2b03,null))[_0x0baf('0x16')](handleError(_0x1a2b03,null));};exports[_0x0baf('0x29')]=function(_0x1b0991,_0xe03d82){return respondWithRpcPromise(_0x0baf('0x2a'),_['merge'](_0x1b0991[_0x0baf('0x1a')],_0x1b0991[_0x0baf('0x1b')]))['then'](respondWithResult(_0xe03d82,null))[_0x0baf('0x16')](handleError(_0xe03d82,null));};exports['outbound']=function(_0x5c545f,_0x11bc49){return respondWithRpcPromise(_0x0baf('0x2b'),_0x5c545f['query'])['then'](respondWithResult(_0x11bc49,null))[_0x0baf('0x16')](handleError(_0x11bc49,null));};exports[_0x0baf('0x2c')]=function(_0x3412bc,_0xb2d9ab){return respondWithRpcPromise(_0x0baf('0x2d'),_0x3412bc[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0xb2d9ab,null))[_0x0baf('0x16')](handleError(_0xb2d9ab,null));};exports[_0x0baf('0x2e')]=function(_0x36c6d2,_0x200864){var _0x148540;return respondWithRpcPromise(_0x0baf('0x2f'),_0x36c6d2[_0x0baf('0x1a')])['then'](function(_0x3573ce){_0x148540=_0x3573ce;return respondWithRpcPromise(_0x0baf('0x2f'),_0x36c6d2['query'],routingClient);})[_0x0baf('0x9')](function(_0x324369){return _[_0x0baf('0x19')]({},_0x324369,_0x148540);})[_0x0baf('0x9')](respondWithResult(_0x200864,null))[_0x0baf('0x16')](handleError(_0x200864,null));};exports[_0x0baf('0x30')]=function(_0x57b581,_0x23ad34){if(_0x57b581[_0x0baf('0x31')]&&_0x57b581['body'][_0x0baf('0x32')]&&_0x57b581[_0x0baf('0x33')]&&_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')]){for(var _0x504031 in _0x57b581[_0x0baf('0x31')][_0x0baf('0x32')]){if(_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x0baf('0x34')](_0x504031)){db[_0x0baf('0x35')][_0x0baf('0x36')]({'where':{'channel':_0x504031,'membername':_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')],'type':_0x0baf('0x37'),'exitAt':null,'uniqueid':_0x57b581['body'][_0x0baf('0x32')][_0x504031]&&_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x504031][_0x0baf('0x38')]?{'$notIn':_0x57b581[_0x0baf('0x31')]['interaction'][_0x504031]}:{'$ne':null}}})[_0x0baf('0x9')](function(_0x310240){var _0x27c3ee=moment()[_0x0baf('0x39')](_0x0baf('0x3a'));for(var _0x54ed41=0x0,_0x2a0924=_0x310240[_0x0baf('0x38')];_0x54ed41<_0x2a0924;_0x54ed41+=0x1){_0x310240[_0x54ed41][_0x0baf('0x3b')]({'exitAt':_0x27c3ee});}});for(var _0x1522b0=0x0;_0x1522b0<_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x504031][_0x0baf('0x38')];_0x1522b0+=0x1){db['MemberReport'][_0x0baf('0x3c')]({'where':{'channel':_0x504031,'membername':_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')],'type':'INTERACTION','uniqueid':_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x504031][_0x1522b0],'exitAt':null},'defaults':{'channel':_0x504031,'membername':_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')],'interface':_[_0x0baf('0x12')](_0x57b581[_0x0baf('0x33')][_0x0baf('0x3d')])?util['format'](_0x0baf('0x3e'),_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')]):_0x57b581[_0x0baf('0x33')][_0x0baf('0x3d')],'type':_0x0baf('0x37'),'enterAt':moment()[_0x0baf('0x39')](_0x0baf('0x3a')),'role':_0x0baf('0x3f'),'internal':_0x57b581[_0x0baf('0x33')][_0x0baf('0x40')],'uniqueid':_0x57b581['body']['interaction'][_0x504031][_0x1522b0]}});}}}}return respondWithRpcPromise(_0x0baf('0x41'),{'id':_0x57b581[_0x0baf('0x1b')]['id'],'capacity':_0x57b581[_0x0baf('0x31')][_0x0baf('0x42')]},routingClient)[_0x0baf('0x9')](respondWithResult(_0x23ad34,null))[_0x0baf('0x16')](handleError(_0x23ad34,null));};exports[_0x0baf('0x43')]=function(_0x4b492c,_0x3fe534){return respondWithRpcPromise(_0x0baf('0x44'),_0x4b492c[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0x3fe534,null))[_0x0baf('0x16')](handleError(_0x3fe534,null));};exports[_0x0baf('0x45')]=function(_0x5e1849,_0x3eebe5){return respondWithRpcPromise('Trunks',_0x5e1849[_0x0baf('0x1a')])['then'](respondWithResult(_0x3eebe5,null))[_0x0baf('0x16')](handleError(_0x3eebe5,null));};exports['campaigns']=function(_0x35b1a5,_0x4c035b){return respondWithRpcPromise(_0x0baf('0x46'),_0x35b1a5[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0x4c035b,null))[_0x0baf('0x16')](handleError(_0x4c035b,null));};exports[_0x0baf('0x47')]=function(_0x576475,_0x21f179){return respondWithRpcPromise(_0x0baf('0x48'),_0x576475[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x21f179,null))[_0x0baf('0x16')](handleError(_0x21f179,null));};exports[_0x0baf('0x49')]=function(_0x480834,_0x402f4d){return respondWithRpcPromise(_0x0baf('0x48'),_0x480834[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](findById(_0x480834[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0x402f4d,null))[_0x0baf('0x16')](handleError(_0x402f4d,null));};exports['mailQueues']=function(_0x48e855,_0x23f6ea){return respondWithRpcPromise(_0x0baf('0x4a'),_0x48e855[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x23f6ea,null))[_0x0baf('0x16')](handleError(_0x23f6ea,null));};exports[_0x0baf('0x4b')]=function(_0xaa4293,_0x14a667){return respondWithRpcPromise(_0x0baf('0x4a'),_0xaa4293['query'],routingClient)[_0x0baf('0x9')](findById(_0xaa4293[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0x14a667,null))[_0x0baf('0x16')](handleError(_0x14a667,null));};exports[_0x0baf('0x4c')]=function(_0xebfc0c,_0x26f5c9){return respondWithRpcPromise('MailAccounts',_0xebfc0c[_0x0baf('0x1a')],mailClient)[_0x0baf('0x9')](respondWithResult(_0x26f5c9,null))[_0x0baf('0x16')](handleError(_0x26f5c9,null));};exports[_0x0baf('0x4d')]=function(_0x1c7d88,_0x1a6d22){return respondWithRpcPromise(_0x0baf('0x4e'),_0x1c7d88[_0x0baf('0x1a')],routingClient)['then'](respondWithResult(_0x1a6d22,null))[_0x0baf('0x16')](handleError(_0x1a6d22,null));};exports['showOpenchannelQueues']=function(_0x3c00e7,_0x5f2fbe){return respondWithRpcPromise('OpenchannelQueues',_0x3c00e7[_0x0baf('0x1a')],routingClient)['then'](findById(_0x3c00e7[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0x5f2fbe,null))['catch'](handleError(_0x5f2fbe,null));};exports[_0x0baf('0x4f')]=function(_0xfb6708,_0x156572){return respondWithRpcPromise('SmsQueues',_0xfb6708['query'],routingClient)[_0x0baf('0x9')](respondWithResult(_0x156572,null))[_0x0baf('0x16')](handleError(_0x156572,null));};exports[_0x0baf('0x50')]=function(_0x7f49e,_0x784e1a){return respondWithRpcPromise('SmsQueues',_0x7f49e[_0x0baf('0x1a')],routingClient)['then'](findById(_0x7f49e['params']['id']))['then'](respondWithResult(_0x784e1a,null))[_0x0baf('0x16')](handleError(_0x784e1a,null));};exports['whatsappQueues']=function(_0x4946d4,_0x11a81e){return respondWithRpcPromise(_0x0baf('0x51'),_0x4946d4[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x11a81e,null))[_0x0baf('0x16')](handleError(_0x11a81e,null));};exports[_0x0baf('0x52')]=function(_0x4c05d6,_0xec3b32){return respondWithRpcPromise(_0x0baf('0x51'),_0x4c05d6[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](findById(_0x4c05d6[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0xec3b32,null))['catch'](handleError(_0xec3b32,null));};exports[_0x0baf('0x53')]=function(_0x468363,_0x29fd46){return respondWithRpcPromise('FaxQueues',_0x468363[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x29fd46,null))[_0x0baf('0x16')](handleError(_0x29fd46,null));};exports[_0x0baf('0x54')]=function(_0x125906,_0x27a959){return respondWithRpcPromise(_0x0baf('0x55'),_0x125906['query'],routingClient)['then'](findById(_0x125906['params']['id']))[_0x0baf('0x9')](respondWithResult(_0x27a959,null))[_0x0baf('0x16')](handleError(_0x27a959,null));};exports[_0x0baf('0x56')]=function(_0x12b9b5,_0x3e65d4){return respondWithRpcPromise(_0x0baf('0x57'),_0x12b9b5['query'])['then'](respondWithResult(_0x3e65d4,null))[_0x0baf('0x16')](handleError(_0x3e65d4,null));};exports['chatQueuesWaitingInteractions']=function(_0x22cd07,_0x3e9b79){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x22cd07[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x3e9b79,null))[_0x0baf('0x16')](handleError(_0x3e9b79,null));};exports[_0x0baf('0x58')]=function(_0x115ff5,_0x33a5af){return respondWithRpcPromise(_0x0baf('0x59'),_0x115ff5[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x33a5af,null))['catch'](handleError(_0x33a5af,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x58a079,_0x493784){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x58a079[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x493784,null))[_0x0baf('0x16')](handleError(_0x493784,null));};exports[_0x0baf('0x5a')]=function(_0x5093f5,_0x1be7f2){return respondWithRpcPromise(_0x0baf('0x5b'),_0x5093f5['query'],routingClient)['then'](function(_0x43aecd){if(_0x5093f5[_0x0baf('0x1a')][_0x0baf('0x5c')]!==undefined){var _0x442e5f=_(_0x43aecd[_0x0baf('0x13')])[_0x0baf('0x5d')]([_0x5093f5[_0x0baf('0x1a')][_0x0baf('0x5c')],_0x5093f5['params']['id']])[_0x0baf('0x5e')](_0x0baf('0x5f'))['uniq']()[_0x0baf('0x60')]();return _0x43aecd[_0x0baf('0x13')]['filter'](function(_0x97d385){return _0x442e5f[_0x0baf('0x61')](_0x97d385[_0x0baf('0x5f')])>-0x1;});}else{return _0x43aecd[_0x0baf('0x13')][_0x0baf('0x5d')](function(_0x4fc5af){return _0x4fc5af['queue_id']===parseInt(_0x5093f5[_0x0baf('0x1b')]['id']);});}})[_0x0baf('0x9')](respondWithResult(_0x1be7f2,null))['catch'](handleError(_0x1be7f2,null));};exports[_0x0baf('0x62')]=function(_0x59dad5,_0x21ad25){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x59dad5[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x21ad25,null))[_0x0baf('0x16')](handleError(_0x21ad25,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x3c2bc1,_0x5008c5){return respondWithRpcPromise(_0x0baf('0x63'),_0x3c2bc1[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x5008c5,null))[_0x0baf('0x16')](handleError(_0x5008c5,null));};exports[_0x0baf('0x64')]=function(_0x52e845,_0x866e6e){return respondWithRpcPromise(_0x0baf('0x65'),_0x52e845['query'],routingClient)[_0x0baf('0x9')](respondWithResult(_0x866e6e,null))[_0x0baf('0x16')](handleError(_0x866e6e,null));};exports[_0x0baf('0x66')]=function(_0x379c54){return function(_0x1cbbcc,_0x250df2){var _0xa4fd1b,_0x1cda78;var _0x44ef57=_[_0x0baf('0x67')](_0x379c54);var _0x3b7abf=_0x379c54===_0x0baf('0x68')?'Website':'Account';return db[_0x44ef57+_0x0baf('0x69')][_0x0baf('0x6a')]({'raw':!![],'where':{'id':_0x1cbbcc[_0x0baf('0x1b')]['id']}})['then'](function(_0x507783){if(_[_0x0baf('0x12')](_0x507783)){throw new Error(_0x44ef57+_0x0baf('0x6b'));}_0xa4fd1b=_0x507783;return db[_0x44ef57+_0x0baf('0x6c')][_0x0baf('0x6a')]({'where':{'id':_0x1cbbcc[_0x0baf('0x31')][_0x0baf('0x6d')]},'include':[{'model':db[_0x44ef57+_0x0baf('0x6e')],'as':_0x0baf('0x6e')},{'model':db[_0x44ef57+_0x3b7abf],'as':_0x0baf('0x6f')}]});})['then'](function(_0x1590a5){if(_[_0x0baf('0x12')](_0x1590a5)){throw new Error(_0x44ef57+_0x0baf('0x70'));}_0x1cda78=_0x1590a5;return _0x1590a5[_0x0baf('0x71')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x5d26e6={'uniqueid':_0x379c54+'.'+_0x1cda78['id']+'.'+_0x1cda78['Interaction']['id'],'FromUserId':_0x1cbbcc[_0x0baf('0x33')]['id'],'type':_0x0baf('0x72')};_0x5d26e6[_0x44ef57+'MessageId']=_0x1cda78['id'];_0x5d26e6[_0x44ef57+'InteractionId']=_0x1cda78[_0x0baf('0x6e')]['id'];_0x5d26e6[_0x0baf('0x73')+_0x44ef57+_0x3b7abf+'Id']=_0x1cda78['Account']['id'];_0x5d26e6['To'+_0x44ef57+_0x0baf('0x74')]=_0xa4fd1b['id'];return db[_0x44ef57+_0x0baf('0x75')][_0x0baf('0x76')](_0x5d26e6);})[_0x0baf('0x9')](function(){return respondWithRpcPromise(_0x0baf('0x77'),{'channel':_0x379c54,'interaction':_0x1cda78[_0x0baf('0x6e')],'message':_0x1cda78,'account':_0x1cda78[_0x0baf('0x6f')],'applications':[{'id':0x0,'priority':0x1,'app':_0x0baf('0x72'),'appdata':_0xa4fd1b[_0x0baf('0x11')]+','+(_0x1cda78[_0x0baf('0x6f')][_0x0baf('0x78')]||0x12c),'interval':_0x0baf('0x79')}],'transfer':!![]},routingClient);})['then'](respondWithResult(_0x250df2,null))[_0x0baf('0x16')](handleError(_0x250df2,null));};};exports[_0x0baf('0x7a')]=function(_0x1e1adb,_0x3bd15b){var _0x3c37b4,_0x195303;if(_['isNil'](_0x1e1adb[_0x0baf('0x31')][_0x0baf('0x7b')])){throw new Error(_0x0baf('0x7c'));}var _0x457ae8=_0x1e1adb[_0x0baf('0x31')]['channel'];var _0x3761b5=_[_0x0baf('0x67')](_0x457ae8);var _0x2eae1b=_0x457ae8===_0x0baf('0x68')?_0x0baf('0x7d'):'Account';return db['User'][_0x0baf('0x6a')]({'raw':!![],'where':{'id':_0x1e1adb['params']['id'],'role':_0x0baf('0x3f')}})['then'](function(_0x32d8b6){if(_[_0x0baf('0x12')](_0x32d8b6)){throw new Error(_0x0baf('0x7e'));}_0x3c37b4=_0x32d8b6;return db[_0x3761b5+_0x0baf('0x6c')]['findOne']({'where':{'id':_0x1e1adb[_0x0baf('0x31')][_0x0baf('0x6d')]},'include':[{'model':db[_0x3761b5+_0x0baf('0x6e')],'as':'Interaction'},{'model':db[_0x3761b5+_0x2eae1b],'as':'Account'}]});})['then'](function(_0x4d4884){if(_[_0x0baf('0x12')](_0x4d4884)){throw new Error(_0x3761b5+_0x0baf('0x70'));}_0x195303=_0x4d4884;return _0x4d4884[_0x0baf('0x71')]({'read':0x0,'readAt':null,'UserId':null});})[_0x0baf('0x9')](function(){var _0x597830={'uniqueid':_0x457ae8+'.'+_0x195303['id']+'.'+_0x195303[_0x0baf('0x6e')]['id'],'FromUserId':_0x1e1adb[_0x0baf('0x33')]['id'],'type':_0x0baf('0x3f'),'ToUserId':_0x3c37b4['id']};_0x597830[_0x3761b5+'MessageId']=_0x195303['id'];_0x597830[_0x3761b5+_0x0baf('0x7f')]=_0x195303[_0x0baf('0x6e')]['id'];_0x597830['From'+_0x3761b5+_0x2eae1b+'Id']=_0x195303[_0x0baf('0x6f')]['id'];return db[_0x3761b5+'TransferReport'][_0x0baf('0x76')](_0x597830);})[_0x0baf('0x9')](function(){return respondWithRpcPromise(_0x0baf('0x77'),{'channel':_0x457ae8,'interaction':_0x195303[_0x0baf('0x6e')],'message':_0x195303,'account':_0x195303['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x3c37b4[_0x0baf('0x11')]+','+(_0x195303['Account'][_0x0baf('0x80')]||0x12c),'interval':_0x0baf('0x79')}],'transfer':!![]},routingClient);})[_0x0baf('0x9')](respondWithResult(_0x3bd15b,null))[_0x0baf('0x16')](handleError(_0x3bd15b,null));};
\ No newline at end of file
index dcf205b..1d0c4a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x405d=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','isAuthenticated','index','/:id','show','run','create','delete'];(function(_0x5c8827,_0x5bc5d7){var _0x50ffd5=function(_0x4121bc){while(--_0x4121bc){_0x5c8827['push'](_0x5c8827['shift']());}};_0x50ffd5(++_0x5bc5d7);}(_0x405d,0xea));var _0xd405=function(_0x405764,_0x30c6af){_0x405764=_0x405764-0x0;var _0xe95933=_0x405d[_0x405764];return _0xe95933;};'use strict';var multer=require(_0xd405('0x0'));var util=require(_0xd405('0x1'));var path=require(_0xd405('0x2'));var timeout=require(_0xd405('0x3'));var express=require(_0xd405('0x4'));var router=express[_0xd405('0x5')]();var fs_extra=require(_0xd405('0x6'));var auth=require(_0xd405('0x7'));var interaction=require(_0xd405('0x8'));var config=require(_0xd405('0x9'));var controller=require(_0xd405('0xa'));router['get']('/',auth[_0xd405('0xb')](),controller[_0xd405('0xc')]);router['get'](_0xd405('0xd'),auth[_0xd405('0xb')](),controller[_0xd405('0xe')]);router['get']('/:id/run',auth['isAuthenticated'](),controller[_0xd405('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd405('0x10')]);router['put'](_0xd405('0xd'),auth[_0xd405('0xb')](),controller['update']);router[_0xd405('0x11')](_0xd405('0xd'),auth[_0xd405('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc73e=['express','fs-extra','../../components/interaction/service','../../config/environment','./schedule.controller','index','get','/:id','show','isAuthenticated','run','post','create','put','update','delete','destroy','multer','util','connect-timeout'];(function(_0x457af1,_0x30a5e1){var _0xc1b35e=function(_0xf95d66){while(--_0xf95d66){_0x457af1['push'](_0x457af1['shift']());}};_0xc1b35e(++_0x30a5e1);}(_0xc73e,0x165));var _0xec73=function(_0x399146,_0x2dc81f){_0x399146=_0x399146-0x0;var _0x2faa7c=_0xc73e[_0x399146];return _0x2faa7c;};'use strict';var multer=require(_0xec73('0x0'));var util=require(_0xec73('0x1'));var path=require('path');var timeout=require(_0xec73('0x2'));var express=require(_0xec73('0x3'));var router=express['Router']();var fs_extra=require(_0xec73('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xec73('0x5'));var config=require(_0xec73('0x6'));var controller=require(_0xec73('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xec73('0x8')]);router[_0xec73('0x9')](_0xec73('0xa'),auth['isAuthenticated'](),controller[_0xec73('0xb')]);router['get']('/:id/run',auth[_0xec73('0xc')](),controller[_0xec73('0xd')]);router[_0xec73('0xe')]('/',auth[_0xec73('0xc')](),controller[_0xec73('0xf')]);router[_0xec73('0x10')](_0xec73('0xa'),auth[_0xec73('0xc')](),controller[_0xec73('0x11')]);router[_0xec73('0x12')](_0xec73('0xa'),auth[_0xec73('0xc')](),controller[_0xec73('0x13')]);module['exports']=router;
\ No newline at end of file
index 44202bb..a519add 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2055=['exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters','weeks','days','hours','minutes','csv','pdf','xlsx','default','TEXT','sequelize'];(function(_0x8c77b7,_0x52507b){var _0x32707a=function(_0x3f1f6d){while(--_0x3f1f6d){_0x8c77b7['push'](_0x8c77b7['shift']());}};_0x32707a(++_0x52507b);}(_0x2055,0x84));var _0x5205=function(_0x5e230c,_0x4d5960){_0x5e230c=_0x5e230c-0x0;var _0x3d7956=_0x2055[_0x5e230c];return _0x3d7956;};'use strict';var Sequelize=require(_0x5205('0x0'));module[_0x5205('0x1')]={'name':{'type':Sequelize[_0x5205('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x5205('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5205('0x4')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0x5205('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x5205('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x5205('0x7')](_0x5205('0x8'),_0x5205('0x9'),'months',_0x5205('0xa'),_0x5205('0xb'),_0x5205('0xc'),_0x5205('0xd')),'allowNull':![],'defaultValue':_0x5205('0xb')},'output':{'type':Sequelize[_0x5205('0x7')](_0x5205('0xe'),_0x5205('0xf'),_0x5205('0x10')),'allowNull':![],'defaultValue':_0x5205('0xe')},'type':{'type':Sequelize['ENUM']('custom',_0x5205('0x11')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x5205('0x2')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0x5205('0x12')]},'sendIfEmpty':{'type':Sequelize[_0x5205('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xa7dd=['DATE','INTEGER','ENUM','years','quarters','weeks','days','hours','csv','pdf','xlsx','custom','default','TEXT','sequelize','STRING','BOOLEAN','0\x200\x20*\x20*\x20*'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa7dd,0x140));var _0xda7d=function(_0xb2dfd7,_0x235881){_0xb2dfd7=_0xb2dfd7-0x0;var _0x51d3a9=_0xa7dd[_0xb2dfd7];return _0x51d3a9;};'use strict';var Sequelize=require(_0xda7d('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xda7d('0x1')]},'active':{'type':Sequelize[_0xda7d('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xda7d('0x1')],'allowNull':![],'defaultValue':_0xda7d('0x3')},'startAt':{'type':Sequelize[_0xda7d('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0xda7d('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xda7d('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xda7d('0x6')](_0xda7d('0x7'),_0xda7d('0x8'),'months',_0xda7d('0x9'),_0xda7d('0xa'),_0xda7d('0xb'),'minutes'),'allowNull':![],'defaultValue':_0xda7d('0xa')},'output':{'type':Sequelize[_0xda7d('0x6')](_0xda7d('0xc'),_0xda7d('0xd'),_0xda7d('0xe')),'allowNull':![],'defaultValue':_0xda7d('0xc')},'type':{'type':Sequelize[_0xda7d('0x6')](_0xda7d('0xf'),_0xda7d('0x10')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xda7d('0x1')]},'cc':{'type':Sequelize[_0xda7d('0x11')]},'bcc':{'type':Sequelize[_0xda7d('0x11')]},'sendIfEmpty':{'type':Sequelize[_0xda7d('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 04d34a0..cdb3bef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c31=['include','rows','catch','length','create','body','user','role','UserProfileSection','userProfileId','find','params','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','get','Scheduler','error','stack','name','index','map','Schedule','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll'];(function(_0x177cda,_0x1b4c02){var _0x335935=function(_0x4a7576){while(--_0x4a7576){_0x177cda['push'](_0x177cda['shift']());}};_0x335935(++_0x1b4c02);}(_0x4c31,0x104));var _0x14c3=function(_0x5d594e,_0x333c09){_0x5d594e=_0x5d594e-0x0;var _0x54d309=_0x4c31[_0x5d594e];return _0x54d309;};'use strict';var emlformat=require(_0x14c3('0x0'));var rimraf=require(_0x14c3('0x1'));var zipdir=require(_0x14c3('0x2'));var jsonpatch=require(_0x14c3('0x3'));var rp=require(_0x14c3('0x4'));var moment=require(_0x14c3('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x14c3('0x6'));var util=require(_0x14c3('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x14c3('0x8'));var fs=require('fs');var fs_extra=require(_0x14c3('0x9'));var _=require(_0x14c3('0xa'));var squel=require(_0x14c3('0xb'));var crypto=require(_0x14c3('0xc'));var jsforce=require(_0x14c3('0xd'));var deskjs=require(_0x14c3('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x14c3('0xf'));var Redis=require(_0x14c3('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x14c3('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x14c3('0x12'));var logger=require(_0x14c3('0x13'))(_0x14c3('0x14'));var utils=require(_0x14c3('0x15'));var config=require(_0x14c3('0x16'));var licenseUtil=require(_0x14c3('0x17'));var db=require(_0x14c3('0x18'))['db'];function respondWithStatusCode(_0x99cd35,_0x289ac5){_0x289ac5=_0x289ac5||0xcc;return function(_0x1ce2bc){if(_0x1ce2bc){return _0x99cd35[_0x14c3('0x19')](_0x289ac5);}return _0x99cd35[_0x14c3('0x1a')](_0x289ac5)[_0x14c3('0x1b')]();};}function respondWithResult(_0x119c99,_0x146de5){_0x146de5=_0x146de5||0xc8;return function(_0x3e7ffe){if(_0x3e7ffe){return _0x119c99[_0x14c3('0x1a')](_0x146de5)[_0x14c3('0x1c')](_0x3e7ffe);}};}function respondWithFilteredResult(_0x22fd74,_0xb3265a){return function(_0x4a1d7e){if(_0x4a1d7e){var _0x3e183c=typeof _0xb3265a[_0x14c3('0x1d')]==='undefined'&&typeof _0xb3265a['limit']==='undefined';var _0x479155=_0x4a1d7e['count'];var _0x40ceb0=_0x3e183c?0x0:_0xb3265a[_0x14c3('0x1d')];var _0x367d7e=_0x3e183c?_0x4a1d7e[_0x14c3('0x1e')]:_0xb3265a[_0x14c3('0x1d')]+_0xb3265a[_0x14c3('0x1f')];var _0x134e63;if(_0x367d7e>=_0x479155){_0x367d7e=_0x479155;_0x134e63=0xc8;}else{_0x134e63=0xce;}_0x22fd74[_0x14c3('0x1a')](_0x134e63);return _0x22fd74[_0x14c3('0x20')](_0x14c3('0x21'),_0x40ceb0+'-'+_0x367d7e+'/'+_0x479155)['json'](_0x4a1d7e);}return null;};}function patchUpdates(_0x36f173){return function(_0x1ea748){try{jsonpatch[_0x14c3('0x22')](_0x1ea748,_0x36f173,!![]);}catch(_0x43076f){return BPromise[_0x14c3('0x23')](_0x43076f);}return _0x1ea748[_0x14c3('0x24')]();};}function saveUpdates(_0x1813b9,_0x4d29eb){return function(_0x2fc318){if(_0x2fc318){return _0x2fc318[_0x14c3('0x25')](_0x1813b9)['then'](function(_0x796069){return _0x796069;});}return null;};}function removeEntity(_0x16d696,_0xc797a9){return function(_0x3d6572){if(_0x3d6572){return _0x3d6572[_0x14c3('0x26')]()[_0x14c3('0x27')](function(){var _0x3e28b3=_0x3d6572[_0x14c3('0x28')]({'plain':!![]});var _0x3ddd36=_0x14c3('0x29');return db['UserProfileResource'][_0x14c3('0x26')]({'where':{'type':_0x3ddd36,'resourceId':_0x3e28b3['id']}})[_0x14c3('0x27')](function(){return _0x3d6572;});})[_0x14c3('0x27')](function(){_0x16d696[_0x14c3('0x1a')](0xcc)[_0x14c3('0x1b')]();});}};}function handleEntityNotFound(_0x51ce35,_0x5f4418){return function(_0x24c577){if(!_0x24c577){_0x51ce35[_0x14c3('0x19')](0x194);}return _0x24c577;};}function handleError(_0x3db401,_0x44ebee){_0x44ebee=_0x44ebee||0x1f4;return function(_0x144baa){logger[_0x14c3('0x2a')](_0x144baa[_0x14c3('0x2b')]);if(_0x144baa[_0x14c3('0x2c')]){delete _0x144baa[_0x14c3('0x2c')];}_0x3db401[_0x14c3('0x1a')](_0x44ebee)['send'](_0x144baa);};}exports[_0x14c3('0x2d')]=function(_0x3d123e,_0x2a6cdf){var _0x2469c1={},_0x584108={},_0x4cecb1={'count':0x0,'rows':[]};var _0x29a01d=_[_0x14c3('0x2e')](db[_0x14c3('0x2f')][_0x14c3('0x30')],function(_0x8cb07b){return{'name':_0x8cb07b[_0x14c3('0x31')],'type':_0x8cb07b[_0x14c3('0x32')][_0x14c3('0x33')]};});_0x584108[_0x14c3('0x34')]=_['map'](_0x29a01d,'name');_0x584108[_0x14c3('0x35')]=_[_0x14c3('0x36')](_0x3d123e[_0x14c3('0x35')]);_0x584108['filters']=_[_0x14c3('0x37')](_0x584108['model'],_0x584108[_0x14c3('0x35')]);_0x2469c1[_0x14c3('0x38')]=_[_0x14c3('0x37')](_0x584108[_0x14c3('0x34')],qs[_0x14c3('0x39')](_0x3d123e[_0x14c3('0x35')][_0x14c3('0x39')]));_0x2469c1['attributes']=_0x2469c1['attributes']['length']?_0x2469c1['attributes']:_0x584108[_0x14c3('0x34')];if(!_0x3d123e[_0x14c3('0x35')]['hasOwnProperty']('nolimit')){_0x2469c1['limit']=qs[_0x14c3('0x1f')](_0x3d123e[_0x14c3('0x35')][_0x14c3('0x1f')]);_0x2469c1[_0x14c3('0x1d')]=qs[_0x14c3('0x1d')](_0x3d123e[_0x14c3('0x35')][_0x14c3('0x1d')]);}_0x2469c1[_0x14c3('0x3a')]=qs[_0x14c3('0x3b')](_0x3d123e[_0x14c3('0x35')][_0x14c3('0x3b')]);_0x2469c1['where']=qs[_0x14c3('0x3c')](_[_0x14c3('0x3d')](_0x3d123e[_0x14c3('0x35')],_0x584108[_0x14c3('0x3c')]),_0x29a01d);if(_0x3d123e[_0x14c3('0x35')][_0x14c3('0x3e')]){_0x2469c1[_0x14c3('0x3f')]=_[_0x14c3('0x40')](_0x2469c1['where'],{'$or':_[_0x14c3('0x2e')](_0x29a01d,function(_0x1948b2){if(_0x1948b2['type']!==_0x14c3('0x41')){var _0x3cbfe2={};_0x3cbfe2[_0x1948b2['name']]={'$like':'%'+_0x3d123e[_0x14c3('0x35')][_0x14c3('0x3e')]+'%'};return _0x3cbfe2;}})});}_0x2469c1=_[_0x14c3('0x40')]({},_0x2469c1,_0x3d123e[_0x14c3('0x42')]);var _0x167b07={'where':_0x2469c1[_0x14c3('0x3f')]};return db[_0x14c3('0x2f')][_0x14c3('0x1e')](_0x167b07)[_0x14c3('0x27')](function(_0x77d086){_0x4cecb1[_0x14c3('0x1e')]=_0x77d086;if(_0x3d123e[_0x14c3('0x35')][_0x14c3('0x43')]){_0x2469c1[_0x14c3('0x44')]=[{'all':!![]}];}return db[_0x14c3('0x2f')]['findAll'](_0x2469c1);})[_0x14c3('0x27')](function(_0x5e9ee3){_0x4cecb1[_0x14c3('0x45')]=_0x5e9ee3;return _0x4cecb1;})['then'](respondWithFilteredResult(_0x2a6cdf,_0x2469c1))[_0x14c3('0x46')](handleError(_0x2a6cdf,null));};exports['show']=function(_0x3926e1,_0x4edfab){var _0x11a680={'raw':![],'where':{'id':_0x3926e1['params']['id']}},_0x33f370={};_0x33f370[_0x14c3('0x34')]=_[_0x14c3('0x36')](db[_0x14c3('0x2f')][_0x14c3('0x30')]);_0x33f370[_0x14c3('0x35')]=_['keys'](_0x3926e1[_0x14c3('0x35')]);_0x33f370['filters']=_[_0x14c3('0x37')](_0x33f370[_0x14c3('0x34')],_0x33f370[_0x14c3('0x35')]);_0x11a680[_0x14c3('0x38')]=_[_0x14c3('0x37')](_0x33f370[_0x14c3('0x34')],qs[_0x14c3('0x39')](_0x3926e1[_0x14c3('0x35')]['fields']));_0x11a680[_0x14c3('0x38')]=_0x11a680['attributes'][_0x14c3('0x47')]?_0x11a680['attributes']:_0x33f370['model'];if(_0x3926e1[_0x14c3('0x35')]['includeAll']){_0x11a680['include']=[{'all':!![]}];}_0x11a680=_['merge']({},_0x11a680,_0x3926e1[_0x14c3('0x42')]);return db[_0x14c3('0x2f')]['find'](_0x11a680)[_0x14c3('0x27')](handleEntityNotFound(_0x4edfab,null))[_0x14c3('0x27')](respondWithResult(_0x4edfab,null))[_0x14c3('0x46')](handleError(_0x4edfab,null));};exports['create']=function(_0x558187,_0x4d5050){return db[_0x14c3('0x2f')][_0x14c3('0x48')](_0x558187[_0x14c3('0x49')],{})[_0x14c3('0x27')](function(_0x2454a7){var _0x118c9c=_0x558187[_0x14c3('0x4a')][_0x14c3('0x28')]({'plain':!![]});if(!_0x118c9c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x118c9c[_0x14c3('0x4b')]===_0x14c3('0x4a')){var _0x429f32=_0x2454a7['get']({'plain':!![]});var _0x52e037=_0x14c3('0x29');return db[_0x14c3('0x4c')]['find']({'where':{'name':_0x52e037,'userProfileId':_0x118c9c[_0x14c3('0x4d')]},'raw':!![]})[_0x14c3('0x27')](function(_0x374523){if(_0x374523&&_0x374523['autoAssociation']===0x0){return db['UserProfileResource'][_0x14c3('0x48')]({'name':_0x429f32[_0x14c3('0x2c')],'resourceId':_0x429f32['id'],'type':_0x374523['name'],'sectionId':_0x374523['id']},{})['then'](function(){return _0x2454a7;});}else{return _0x2454a7;}})[_0x14c3('0x46')](function(_0x442a63){logger[_0x14c3('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x442a63);throw _0x442a63;});}return _0x2454a7;})[_0x14c3('0x27')](respondWithResult(_0x4d5050,0xc9))[_0x14c3('0x46')](handleError(_0x4d5050,null));};exports[_0x14c3('0x25')]=function(_0x3e3ee7,_0x138caf){if(_0x3e3ee7[_0x14c3('0x49')]['id']){delete _0x3e3ee7[_0x14c3('0x49')]['id'];}return db[_0x14c3('0x2f')][_0x14c3('0x4e')]({'where':{'id':_0x3e3ee7[_0x14c3('0x4f')]['id']}})[_0x14c3('0x27')](handleEntityNotFound(_0x138caf,null))[_0x14c3('0x27')](saveUpdates(_0x3e3ee7[_0x14c3('0x49')],null))['then'](respondWithResult(_0x138caf,null))['catch'](handleError(_0x138caf,null));};exports[_0x14c3('0x26')]=function(_0x2450d4,_0x27c383){return db[_0x14c3('0x2f')][_0x14c3('0x4e')]({'where':{'id':_0x2450d4[_0x14c3('0x4f')]['id']}})[_0x14c3('0x27')](handleEntityNotFound(_0x27c383,null))[_0x14c3('0x27')](removeEntity(_0x27c383,null))['catch'](handleError(_0x27c383,null));};exports[_0x14c3('0x50')]=function(_0x302ece,_0x2840e9,_0x3c605e){var _0x5b2d42=require(_0x14c3('0x51'));return db[_0x14c3('0x2f')][_0x14c3('0x4e')]({'where':{'id':_0x302ece[_0x14c3('0x4f')]['id']},'raw':!![]})[_0x14c3('0x27')](handleEntityNotFound(_0x2840e9,null))[_0x14c3('0x27')](function(){_0x5b2d42[_0x14c3('0x50')](_0x302ece[_0x14c3('0x4f')]['id']);})[_0x14c3('0x27')](respondWithStatusCode(_0x2840e9,null))[_0x14c3('0x46')](handleError(_0x2840e9,null));};
\ No newline at end of file
+var _0x0ab3=['then','error','stack','name','send','index','Schedule','rawAttributes','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','filter','options','includeAll','include','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','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','count','set','Content-Range','apply','reject','save','update','get','Scheduler'];(function(_0x9782f5,_0x4bb4ac){var _0x3bdb54=function(_0x2ec44f){while(--_0x2ec44f){_0x9782f5['push'](_0x9782f5['shift']());}};_0x3bdb54(++_0x4bb4ac);}(_0x0ab3,0x86));var _0x30ab=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x0ab3[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0x30ab('0x0'));var rimraf=require(_0x30ab('0x1'));var zipdir=require(_0x30ab('0x2'));var jsonpatch=require(_0x30ab('0x3'));var rp=require(_0x30ab('0x4'));var moment=require(_0x30ab('0x5'));var BPromise=require(_0x30ab('0x6'));var Mustache=require(_0x30ab('0x7'));var util=require('util');var path=require(_0x30ab('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x30ab('0x9'));var _=require(_0x30ab('0xa'));var squel=require(_0x30ab('0xb'));var crypto=require(_0x30ab('0xc'));var jsforce=require(_0x30ab('0xd'));var deskjs=require(_0x30ab('0xe'));var toCsv=require(_0x30ab('0xf'));var querystring=require(_0x30ab('0x10'));var Papa=require(_0x30ab('0x11'));var Redis=require('ioredis');var authService=require(_0x30ab('0x12'));var qs=require(_0x30ab('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x30ab('0x14'));var logger=require(_0x30ab('0x15'))(_0x30ab('0x16'));var utils=require(_0x30ab('0x17'));var config=require(_0x30ab('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x30ab('0x19'))['db'];function respondWithStatusCode(_0x2ddf2a,_0x4b2c2e){_0x4b2c2e=_0x4b2c2e||0xcc;return function(_0x260988){if(_0x260988){return _0x2ddf2a[_0x30ab('0x1a')](_0x4b2c2e);}return _0x2ddf2a[_0x30ab('0x1b')](_0x4b2c2e)[_0x30ab('0x1c')]();};}function respondWithResult(_0x2cce26,_0x227997){_0x227997=_0x227997||0xc8;return function(_0x5526b7){if(_0x5526b7){return _0x2cce26[_0x30ab('0x1b')](_0x227997)[_0x30ab('0x1d')](_0x5526b7);}};}function respondWithFilteredResult(_0x218e39,_0x1fdaa6){return function(_0x1f2bbc){if(_0x1f2bbc){var _0x1338c6=typeof _0x1fdaa6[_0x30ab('0x1e')]===_0x30ab('0x1f')&&typeof _0x1fdaa6[_0x30ab('0x20')]===_0x30ab('0x1f');var _0x1190ee=_0x1f2bbc[_0x30ab('0x21')];var _0x5650fd=_0x1338c6?0x0:_0x1fdaa6[_0x30ab('0x1e')];var _0x110114=_0x1338c6?_0x1f2bbc[_0x30ab('0x21')]:_0x1fdaa6['offset']+_0x1fdaa6[_0x30ab('0x20')];var _0x4bef5f;if(_0x110114>=_0x1190ee){_0x110114=_0x1190ee;_0x4bef5f=0xc8;}else{_0x4bef5f=0xce;}_0x218e39[_0x30ab('0x1b')](_0x4bef5f);return _0x218e39[_0x30ab('0x22')](_0x30ab('0x23'),_0x5650fd+'-'+_0x110114+'/'+_0x1190ee)[_0x30ab('0x1d')](_0x1f2bbc);}return null;};}function patchUpdates(_0x4bd914){return function(_0x1892e5){try{jsonpatch[_0x30ab('0x24')](_0x1892e5,_0x4bd914,!![]);}catch(_0x4fd379){return BPromise[_0x30ab('0x25')](_0x4fd379);}return _0x1892e5[_0x30ab('0x26')]();};}function saveUpdates(_0x571dd5,_0x22e9ac){return function(_0x277a9f){if(_0x277a9f){return _0x277a9f[_0x30ab('0x27')](_0x571dd5)['then'](function(_0x4df431){return _0x4df431;});}return null;};}function removeEntity(_0x564056,_0x5b4e1c){return function(_0x182f4a){if(_0x182f4a){return _0x182f4a['destroy']()['then'](function(){var _0x24a2e2=_0x182f4a[_0x30ab('0x28')]({'plain':!![]});var _0x39b18f=_0x30ab('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x39b18f,'resourceId':_0x24a2e2['id']}})[_0x30ab('0x2a')](function(){return _0x182f4a;});})['then'](function(){_0x564056[_0x30ab('0x1b')](0xcc)[_0x30ab('0x1c')]();});}};}function handleEntityNotFound(_0x3ca07e,_0x19580){return function(_0x281647){if(!_0x281647){_0x3ca07e[_0x30ab('0x1a')](0x194);}return _0x281647;};}function handleError(_0x34a130,_0x258b7b){_0x258b7b=_0x258b7b||0x1f4;return function(_0x566d42){logger[_0x30ab('0x2b')](_0x566d42[_0x30ab('0x2c')]);if(_0x566d42['name']){delete _0x566d42[_0x30ab('0x2d')];}_0x34a130[_0x30ab('0x1b')](_0x258b7b)[_0x30ab('0x2e')](_0x566d42);};}exports[_0x30ab('0x2f')]=function(_0x190e3e,_0x438e6b){var _0x156b8c={},_0x41f53a={},_0xb9e53b={'count':0x0,'rows':[]};var _0x5af83=_['map'](db[_0x30ab('0x30')][_0x30ab('0x31')],function(_0x36b795){return{'name':_0x36b795['fieldName'],'type':_0x36b795[_0x30ab('0x32')][_0x30ab('0x33')]};});_0x41f53a[_0x30ab('0x34')]=_[_0x30ab('0x35')](_0x5af83,_0x30ab('0x2d'));_0x41f53a[_0x30ab('0x36')]=_[_0x30ab('0x37')](_0x190e3e[_0x30ab('0x36')]);_0x41f53a['filters']=_[_0x30ab('0x38')](_0x41f53a[_0x30ab('0x34')],_0x41f53a[_0x30ab('0x36')]);_0x156b8c[_0x30ab('0x39')]=_[_0x30ab('0x38')](_0x41f53a[_0x30ab('0x34')],qs[_0x30ab('0x3a')](_0x190e3e[_0x30ab('0x36')][_0x30ab('0x3a')]));_0x156b8c[_0x30ab('0x39')]=_0x156b8c[_0x30ab('0x39')][_0x30ab('0x3b')]?_0x156b8c[_0x30ab('0x39')]:_0x41f53a[_0x30ab('0x34')];if(!_0x190e3e[_0x30ab('0x36')][_0x30ab('0x3c')](_0x30ab('0x3d'))){_0x156b8c[_0x30ab('0x20')]=qs[_0x30ab('0x20')](_0x190e3e[_0x30ab('0x36')][_0x30ab('0x20')]);_0x156b8c[_0x30ab('0x1e')]=qs['offset'](_0x190e3e['query'][_0x30ab('0x1e')]);}_0x156b8c[_0x30ab('0x3e')]=qs[_0x30ab('0x3f')](_0x190e3e['query'][_0x30ab('0x3f')]);_0x156b8c[_0x30ab('0x40')]=qs[_0x30ab('0x41')](_[_0x30ab('0x42')](_0x190e3e[_0x30ab('0x36')],_0x41f53a['filters']),_0x5af83);if(_0x190e3e[_0x30ab('0x36')]['filter']){_0x156b8c[_0x30ab('0x40')]=_[_0x30ab('0x43')](_0x156b8c[_0x30ab('0x40')],{'$or':_['map'](_0x5af83,function(_0x537eed){if(_0x537eed[_0x30ab('0x32')]!=='VIRTUAL'){var _0x5015a8={};_0x5015a8[_0x537eed[_0x30ab('0x2d')]]={'$like':'%'+_0x190e3e[_0x30ab('0x36')][_0x30ab('0x44')]+'%'};return _0x5015a8;}})});}_0x156b8c=_[_0x30ab('0x43')]({},_0x156b8c,_0x190e3e[_0x30ab('0x45')]);var _0x525460={'where':_0x156b8c[_0x30ab('0x40')]};return db[_0x30ab('0x30')][_0x30ab('0x21')](_0x525460)[_0x30ab('0x2a')](function(_0x355b9f){_0xb9e53b[_0x30ab('0x21')]=_0x355b9f;if(_0x190e3e['query'][_0x30ab('0x46')]){_0x156b8c[_0x30ab('0x47')]=[{'all':!![]}];}return db[_0x30ab('0x30')]['findAll'](_0x156b8c);})['then'](function(_0x5a83ff){_0xb9e53b[_0x30ab('0x48')]=_0x5a83ff;return _0xb9e53b;})['then'](respondWithFilteredResult(_0x438e6b,_0x156b8c))[_0x30ab('0x49')](handleError(_0x438e6b,null));};exports[_0x30ab('0x4a')]=function(_0xa0093c,_0x51540a){var _0x54387d={'raw':![],'where':{'id':_0xa0093c[_0x30ab('0x4b')]['id']}},_0x6be034={};_0x6be034[_0x30ab('0x34')]=_['keys'](db['Schedule'][_0x30ab('0x31')]);_0x6be034[_0x30ab('0x36')]=_['keys'](_0xa0093c['query']);_0x6be034[_0x30ab('0x41')]=_[_0x30ab('0x38')](_0x6be034[_0x30ab('0x34')],_0x6be034[_0x30ab('0x36')]);_0x54387d[_0x30ab('0x39')]=_['intersection'](_0x6be034[_0x30ab('0x34')],qs[_0x30ab('0x3a')](_0xa0093c['query'][_0x30ab('0x3a')]));_0x54387d[_0x30ab('0x39')]=_0x54387d[_0x30ab('0x39')][_0x30ab('0x3b')]?_0x54387d[_0x30ab('0x39')]:_0x6be034[_0x30ab('0x34')];if(_0xa0093c['query'][_0x30ab('0x46')]){_0x54387d['include']=[{'all':!![]}];}_0x54387d=_[_0x30ab('0x43')]({},_0x54387d,_0xa0093c[_0x30ab('0x45')]);return db[_0x30ab('0x30')][_0x30ab('0x4c')](_0x54387d)[_0x30ab('0x2a')](handleEntityNotFound(_0x51540a,null))[_0x30ab('0x2a')](respondWithResult(_0x51540a,null))['catch'](handleError(_0x51540a,null));};exports[_0x30ab('0x4d')]=function(_0x206a02,_0x2f7045){return db['Schedule'][_0x30ab('0x4d')](_0x206a02['body'],{})[_0x30ab('0x2a')](function(_0x38c5ad){var _0x345779=_0x206a02[_0x30ab('0x4e')][_0x30ab('0x28')]({'plain':!![]});if(!_0x345779)throw new Error(_0x30ab('0x4f'));if(_0x345779[_0x30ab('0x50')]===_0x30ab('0x4e')){var _0x240c3d=_0x38c5ad[_0x30ab('0x28')]({'plain':!![]});var _0x4e14f4='Scheduler';return db[_0x30ab('0x51')][_0x30ab('0x4c')]({'where':{'name':_0x4e14f4,'userProfileId':_0x345779[_0x30ab('0x52')]},'raw':!![]})[_0x30ab('0x2a')](function(_0x48feb9){if(_0x48feb9&&_0x48feb9['autoAssociation']===0x0){return db['UserProfileResource'][_0x30ab('0x4d')]({'name':_0x240c3d[_0x30ab('0x2d')],'resourceId':_0x240c3d['id'],'type':_0x48feb9[_0x30ab('0x2d')],'sectionId':_0x48feb9['id']},{})[_0x30ab('0x2a')](function(){return _0x38c5ad;});}else{return _0x38c5ad;}})[_0x30ab('0x49')](function(_0x163c5d){logger['error'](_0x30ab('0x53'),_0x163c5d);throw _0x163c5d;});}return _0x38c5ad;})['then'](respondWithResult(_0x2f7045,0xc9))[_0x30ab('0x49')](handleError(_0x2f7045,null));};exports[_0x30ab('0x27')]=function(_0x962afb,_0x2cf67d){if(_0x962afb[_0x30ab('0x54')]['id']){delete _0x962afb[_0x30ab('0x54')]['id'];}return db['Schedule'][_0x30ab('0x4c')]({'where':{'id':_0x962afb['params']['id']}})['then'](handleEntityNotFound(_0x2cf67d,null))[_0x30ab('0x2a')](saveUpdates(_0x962afb['body'],null))['then'](respondWithResult(_0x2cf67d,null))[_0x30ab('0x49')](handleError(_0x2cf67d,null));};exports[_0x30ab('0x55')]=function(_0x5c82d0,_0x33843a){return db[_0x30ab('0x30')][_0x30ab('0x4c')]({'where':{'id':_0x5c82d0[_0x30ab('0x4b')]['id']}})[_0x30ab('0x2a')](handleEntityNotFound(_0x33843a,null))[_0x30ab('0x2a')](removeEntity(_0x33843a,null))[_0x30ab('0x49')](handleError(_0x33843a,null));};exports[_0x30ab('0x56')]=function(_0x2fbde4,_0x47428d,_0x1fe0a6){var _0x3edd25=require(_0x30ab('0x57'));return db[_0x30ab('0x30')][_0x30ab('0x4c')]({'where':{'id':_0x2fbde4[_0x30ab('0x4b')]['id']},'raw':!![]})[_0x30ab('0x2a')](handleEntityNotFound(_0x47428d,null))[_0x30ab('0x2a')](function(){_0x3edd25[_0x30ab('0x56')](_0x2fbde4[_0x30ab('0x4b')]['id']);})[_0x30ab('0x2a')](respondWithStatusCode(_0x47428d,null))[_0x30ab('0x49')](handleError(_0x47428d,null));};
\ No newline at end of file
index 95c9548..3b22380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd35=['rimraf','./schedule.attributes','exports','define','Schedule','tools_schedules','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x44a124,_0x537f1f){var _0x243c78=function(_0x8cf13a){while(--_0x8cf13a){_0x44a124['push'](_0x44a124['shift']());}};_0x243c78(++_0x537f1f);}(_0xfd35,0x8a));var _0x5fd3=function(_0x5b60cf,_0x2d492c){_0x5b60cf=_0x5b60cf-0x0;var _0x290f18=_0xfd35[_0x5b60cf];return _0x290f18;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5fd3('0x0'))(_0x5fd3('0x1'));var moment=require(_0x5fd3('0x2'));var BPromise=require(_0x5fd3('0x3'));var rp=require(_0x5fd3('0x4'));var fs=require('fs');var path=require(_0x5fd3('0x5'));var rimraf=require(_0x5fd3('0x6'));var config=require('../../config/environment');var attributes=require(_0x5fd3('0x7'));module[_0x5fd3('0x8')]=function(_0x362dfa,_0x3c9b0c){return _0x362dfa[_0x5fd3('0x9')](_0x5fd3('0xa'),attributes,{'tableName':_0x5fd3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbbf3=['exports','define','Schedule','tools_schedules','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','./schedule.attributes'];(function(_0x52220d,_0x3dab85){var _0x46aa7d=function(_0x185e57){while(--_0x185e57){_0x52220d['push'](_0x52220d['shift']());}};_0x46aa7d(++_0x3dab85);}(_0xbbf3,0x1d8));var _0x3bbf=function(_0x43d694,_0x313fec){_0x43d694=_0x43d694-0x0;var _0x8f6fb4=_0xbbf3[_0x43d694];return _0x8f6fb4;};'use strict';var _=require(_0x3bbf('0x0'));var util=require('util');var logger=require(_0x3bbf('0x1'))(_0x3bbf('0x2'));var moment=require('moment');var BPromise=require(_0x3bbf('0x3'));var rp=require(_0x3bbf('0x4'));var fs=require('fs');var path=require(_0x3bbf('0x5'));var rimraf=require(_0x3bbf('0x6'));var config=require('../../config/environment');var attributes=require(_0x3bbf('0x7'));module[_0x3bbf('0x8')]=function(_0x2b47a9,_0x1fba4d){return _0x2b47a9[_0x3bbf('0x9')](_0x3bbf('0xa'),attributes,{'tableName':_0x3bbf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a525c04..5d0b2bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9c=['stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Schedule,\x20%s,\x20%s','request\x20sent'];(function(_0x3e00e2,_0x5eeb01){var _0x278680=function(_0x5e0ec6){while(--_0x5e0ec6){_0x3e00e2['push'](_0x3e00e2['shift']());}};_0x278680(++_0x5eeb01);}(_0x4d9c,0x12a));var _0xc4d9=function(_0x1608bf,_0x2f6c91){_0x1608bf=_0x1608bf-0x0;var _0x4e6471=_0x4d9c[_0x1608bf];return _0x4e6471;};'use strict';var _=require(_0xc4d9('0x0'));var util=require(_0xc4d9('0x1'));var moment=require(_0xc4d9('0x2'));var BPromise=require(_0xc4d9('0x3'));var rs=require(_0xc4d9('0x4'));var fs=require('fs');var Redis=require(_0xc4d9('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc4d9('0x6'));var logger=require(_0xc4d9('0x7'))(_0xc4d9('0x8'));var config=require('../../config/environment');var jayson=require(_0xc4d9('0x9'));var client=jayson[_0xc4d9('0xa')][_0xc4d9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ff06,_0x31db6e,_0x377518){return new BPromise(function(_0x241902,_0x1b1200){return client[_0xc4d9('0xc')](_0x5ff06,_0x377518)[_0xc4d9('0xd')](function(_0x43d448){logger[_0xc4d9('0xe')](_0xc4d9('0xf'),_0x31db6e,_0xc4d9('0x10'));logger['debug']('Schedule,\x20%s,\x20%s,\x20%s',_0x31db6e,_0xc4d9('0x10'),JSON[_0xc4d9('0x11')](_0x43d448));if(_0x43d448['error']){if(_0x43d448[_0xc4d9('0x12')][_0xc4d9('0x13')]===0x1f4){logger[_0xc4d9('0x12')](_0xc4d9('0xf'),_0x31db6e,_0x43d448[_0xc4d9('0x12')]['message']);return _0x1b1200(_0x43d448['error'][_0xc4d9('0x14')]);}logger[_0xc4d9('0x12')]('Schedule,\x20%s,\x20%s',_0x31db6e,_0x43d448[_0xc4d9('0x12')]['message']);return _0x241902(_0x43d448[_0xc4d9('0x12')][_0xc4d9('0x14')]);}else{logger['info'](_0xc4d9('0xf'),_0x31db6e,_0xc4d9('0x10'));_0x241902(_0x43d448['result']['message']);}})['catch'](function(_0x4dc0ef){logger[_0xc4d9('0x12')](_0xc4d9('0xf'),_0x31db6e,_0x4dc0ef);_0x1b1200(_0x4dc0ef);});});}
\ No newline at end of file
+var _0xe8be=['request','info','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','Schedule,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','http'];(function(_0x23ab15,_0x33c5e6){var _0x43841e=function(_0x1e93a7){while(--_0x1e93a7){_0x23ab15['push'](_0x23ab15['shift']());}};_0x43841e(++_0x33c5e6);}(_0xe8be,0x1d9));var _0xee8b=function(_0x4bed75,_0x211cc7){_0x4bed75=_0x4bed75-0x0;var _0x2dd8e8=_0xe8be[_0x4bed75];return _0x2dd8e8;};'use strict';var _=require(_0xee8b('0x0'));var util=require(_0xee8b('0x1'));var moment=require(_0xee8b('0x2'));var BPromise=require(_0xee8b('0x3'));var rs=require(_0xee8b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xee8b('0x5'));var logger=require(_0xee8b('0x6'))(_0xee8b('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xee8b('0x8')][_0xee8b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5da08d,_0x22f299,_0x135b01){return new BPromise(function(_0x6345f3,_0x3dbbf8){return client[_0xee8b('0xa')](_0x5da08d,_0x135b01)['then'](function(_0x5c5eca){logger[_0xee8b('0xb')]('Schedule,\x20%s,\x20%s',_0x22f299,_0xee8b('0xc'));logger[_0xee8b('0xd')](_0xee8b('0xe'),_0x22f299,'request\x20sent',JSON[_0xee8b('0xf')](_0x5c5eca));if(_0x5c5eca[_0xee8b('0x10')]){if(_0x5c5eca[_0xee8b('0x10')]['code']===0x1f4){logger[_0xee8b('0x10')](_0xee8b('0x11'),_0x22f299,_0x5c5eca[_0xee8b('0x10')][_0xee8b('0x12')]);return _0x3dbbf8(_0x5c5eca[_0xee8b('0x10')][_0xee8b('0x12')]);}logger[_0xee8b('0x10')](_0xee8b('0x11'),_0x22f299,_0x5c5eca[_0xee8b('0x10')][_0xee8b('0x12')]);return _0x6345f3(_0x5c5eca['error']['message']);}else{logger['info'](_0xee8b('0x11'),_0x22f299,'request\x20sent');_0x6345f3(_0x5c5eca[_0xee8b('0x13')][_0xee8b('0x12')]);}})[_0xee8b('0x14')](function(_0x3022d7){logger[_0xee8b('0x10')]('Schedule,\x20%s,\x20%s',_0x22f299,_0x3022d7);_0x3dbbf8(_0x3022d7);});});}
\ No newline at end of file
index 09314a4..a26d2d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b19=['delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','/:id','show','/:id/download','download','put','update'];(function(_0x78d8b7,_0x2cfc1d){var _0x5a979c=function(_0x3fee12){while(--_0x3fee12){_0x78d8b7['push'](_0x78d8b7['shift']());}};_0x5a979c(++_0x2cfc1d);}(_0x6b19,0xd4));var _0x96b1=function(_0x9b617e,_0x2a6fed){_0x9b617e=_0x9b617e-0x0;var _0x1e9ef9=_0x6b19[_0x9b617e];return _0x1e9ef9;};'use strict';var multer=require(_0x96b1('0x0'));var util=require(_0x96b1('0x1'));var path=require(_0x96b1('0x2'));var timeout=require(_0x96b1('0x3'));var express=require(_0x96b1('0x4'));var router=express[_0x96b1('0x5')]();var fs_extra=require(_0x96b1('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x96b1('0x7'));var config=require(_0x96b1('0x8'));var controller=require('./screenRecording.controller');router['get']('/',auth[_0x96b1('0x9')](),controller[_0x96b1('0xa')]);router[_0x96b1('0xb')](_0x96b1('0xc'),auth[_0x96b1('0x9')](),controller['describe']);router[_0x96b1('0xb')](_0x96b1('0xd'),auth[_0x96b1('0x9')](),controller[_0x96b1('0xe')]);router[_0x96b1('0xb')](_0x96b1('0xf'),auth['isAuthenticated'](),controller[_0x96b1('0x10')]);router['post']('/',auth[_0x96b1('0x9')](),controller['create']);router[_0x96b1('0x11')](_0x96b1('0xd'),auth[_0x96b1('0x9')](),controller[_0x96b1('0x12')]);router[_0x96b1('0x13')](_0x96b1('0xd'),auth[_0x96b1('0x9')](),controller[_0x96b1('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xb82d=['../../components/interaction/service','./screenRecording.controller','get','index','isAuthenticated','describe','/:id','show','/:id/download','download','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xb82d,0xc8));var _0xdb82=function(_0x540231,_0x117b98){_0x540231=_0x540231-0x0;var _0x31334b=_0xb82d[_0x540231];return _0x31334b;};'use strict';var multer=require(_0xdb82('0x0'));var util=require('util');var path=require(_0xdb82('0x1'));var timeout=require(_0xdb82('0x2'));var express=require(_0xdb82('0x3'));var router=express[_0xdb82('0x4')]();var fs_extra=require(_0xdb82('0x5'));var auth=require(_0xdb82('0x6'));var interaction=require(_0xdb82('0x7'));var config=require('../../config/environment');var controller=require(_0xdb82('0x8'));router[_0xdb82('0x9')]('/',auth['isAuthenticated'](),controller[_0xdb82('0xa')]);router[_0xdb82('0x9')]('/describe',auth[_0xdb82('0xb')](),controller[_0xdb82('0xc')]);router[_0xdb82('0x9')](_0xdb82('0xd'),auth[_0xdb82('0xb')](),controller[_0xdb82('0xe')]);router[_0xdb82('0x9')](_0xdb82('0xf'),auth[_0xdb82('0xb')](),controller[_0xdb82('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xdb82('0x11')]);router[_0xdb82('0x12')](_0xdb82('0xd'),auth[_0xdb82('0xb')](),controller[_0xdb82('0x13')]);router[_0xdb82('0x14')](_0xdb82('0xd'),auth['isAuthenticated'](),controller[_0xdb82('0x15')]);module[_0xdb82('0x16')]=router;
\ No newline at end of file
index caa50d9..e4a937f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x078f=['format','MM-DD-YYYY\x20HH:mm','createdAt','updatedAt','moment','path','exports','VIRTUAL','getDataValue','value','STRING','replace','setDataValue','INTEGER','startedAt','subtract','DATE','toString'];(function(_0x1b7dec,_0x503774){var _0x5c30d2=function(_0x245c01){while(--_0x245c01){_0x1b7dec['push'](_0x1b7dec['shift']());}};_0x5c30d2(++_0x503774);}(_0x078f,0x1b4));var _0xf078=function(_0xf6eda5,_0x3b2921){_0xf6eda5=_0xf6eda5-0x0;var _0x1dd6d9=_0x078f[_0xf6eda5];return _0x1dd6d9;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xf078('0x0'));var path=require(_0xf078('0x1'));var config=require('../../config/environment');module[_0xf078('0x2')]={'format':{'type':Sequelize[_0xf078('0x3')],'get':function(){return this[_0xf078('0x4')](_0xf078('0x5'))?path['extname'](this[_0xf078('0x4')](_0xf078('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0xf078('0x6')]},'channel':{'type':Sequelize[_0xf078('0x6')]},'value':{'type':Sequelize[_0xf078('0x6')],'set':function(_0x353874){var _0xa80959=_0x353874[_0xf078('0x7')](/\\/g,'/');this[_0xf078('0x8')](_0xf078('0x5'),_0xa80959);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xf078('0x9')],'set':function(_0x52943d){this[_0xf078('0x8')](_0xf078('0xa'),moment()[_0xf078('0xb')](_0x52943d,'ms'));this[_0xf078('0x8')]('closedAt',moment());this[_0xf078('0x8')]('duration',_0x52943d);}},'startedAt':{'type':Sequelize[_0xf078('0xc')],'get':function(){return moment(this[_0xf078('0x4')](_0xf078('0xa')))['format']('MM-DD-YYYY\x20HH:mm')[_0xf078('0xd')]();}},'closedAt':{'type':Sequelize[_0xf078('0xc')],'get':function(){return moment(this[_0xf078('0x4')]('closedAt'))[_0xf078('0xe')](_0xf078('0xf'))['toString']();}},'createdAt':{'type':Sequelize[_0xf078('0xc')],'get':function(){return moment(this[_0xf078('0x4')](_0xf078('0x10')))[_0xf078('0xe')](_0xf078('0xf'))['toString']();}},'updatedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0xf078('0x11')))[_0xf078('0xe')]('MM-DD-YYYY\x20HH:mm')['toString']();}}};
\ No newline at end of file
+var _0xb4b6=['value','extname','STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','format','MM-DD-YYYY\x20HH:mm','toString','DATE','createdAt','updatedAt','moment','path','../../config/environment','exports','VIRTUAL','getDataValue'];(function(_0x577acd,_0x2dddb2){var _0x2bfd74=function(_0x39d069){while(--_0x39d069){_0x577acd['push'](_0x577acd['shift']());}};_0x2bfd74(++_0x2dddb2);}(_0xb4b6,0x7e));var _0x6b4b=function(_0x23784a,_0x101eb7){_0x23784a=_0x23784a-0x0;var _0x3bd9a8=_0xb4b6[_0x23784a];return _0x3bd9a8;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x6b4b('0x0'));var path=require(_0x6b4b('0x1'));var config=require(_0x6b4b('0x2'));module[_0x6b4b('0x3')]={'format':{'type':Sequelize[_0x6b4b('0x4')],'get':function(){return this[_0x6b4b('0x5')](_0x6b4b('0x6'))?path[_0x6b4b('0x7')](this[_0x6b4b('0x5')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0x6b4b('0x8')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x6b4b('0x8')],'set':function(_0x25eef2){var _0x8b279d=_0x25eef2[_0x6b4b('0x9')](/\\/g,'/');this[_0x6b4b('0xa')]('value',_0x8b279d);}},'rating':{'type':Sequelize[_0x6b4b('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x6b4b('0xb')],'set':function(_0x40b391){this[_0x6b4b('0xa')](_0x6b4b('0xc'),moment()[_0x6b4b('0xd')](_0x40b391,'ms'));this[_0x6b4b('0xa')](_0x6b4b('0xe'),moment());this['setDataValue'](_0x6b4b('0xf'),_0x40b391);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x6b4b('0x5')](_0x6b4b('0xc')))[_0x6b4b('0x10')](_0x6b4b('0x11'))[_0x6b4b('0x12')]();}},'closedAt':{'type':Sequelize[_0x6b4b('0x13')],'get':function(){return moment(this[_0x6b4b('0x5')]('closedAt'))[_0x6b4b('0x10')](_0x6b4b('0x11'))[_0x6b4b('0x12')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x6b4b('0x14')))[_0x6b4b('0x10')]('MM-DD-YYYY\x20HH:mm')[_0x6b4b('0x12')]();}},'updatedAt':{'type':Sequelize[_0x6b4b('0x13')],'get':function(){return moment(this[_0x6b4b('0x5')](_0x6b4b('0x15')))[_0x6b4b('0x10')](_0x6b4b('0x11'))[_0x6b4b('0x12')]();}}};
\ No newline at end of file
index a6e78bc..2a3ee30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','query','keys','filters','attributes','intersection','fields','length','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','duration','createdAt','value','describe','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','existsSync','secrets','recording','Sequelize','ScreenRecording\x20not\x20found','filename','extname','unlink','download','message','Not\x20found','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb'];(function(_0x1446f8,_0x37dff6){var _0x3dddc7=function(_0x25bd94){while(--_0x25bd94){_0x1446f8['push'](_0x1446f8['shift']());}};_0x3dddc7(++_0x37dff6);}(_0x207c,0x1e8));var _0xc207=function(_0x1acc01,_0x5cb80c){_0x1acc01=_0x1acc01-0x0;var _0x5603f1=_0x207c[_0x1acc01];return _0x5603f1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc207('0x0'));var zipdir=require(_0xc207('0x1'));var jsonpatch=require(_0xc207('0x2'));var rp=require(_0xc207('0x3'));var moment=require(_0xc207('0x4'));var BPromise=require(_0xc207('0x5'));var Mustache=require(_0xc207('0x6'));var util=require('util');var path=require(_0xc207('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc207('0x8'));var _=require(_0xc207('0x9'));var squel=require(_0xc207('0xa'));var crypto=require('crypto');var jsforce=require(_0xc207('0xb'));var deskjs=require(_0xc207('0xc'));var toCsv=require(_0xc207('0xd'));var querystring=require('querystring');var Papa=require(_0xc207('0xe'));var Redis=require(_0xc207('0xf'));var authService=require(_0xc207('0x10'));var qs=require(_0xc207('0x11'));var as=require(_0xc207('0x12'));var hardwareService=require(_0xc207('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xc207('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc207('0x15'))['db'];function respondWithStatusCode(_0x2782ce,_0x59d401){_0x59d401=_0x59d401||0xcc;return function(_0x3e1108){if(_0x3e1108){return _0x2782ce[_0xc207('0x16')](_0x59d401);}return _0x2782ce[_0xc207('0x17')](_0x59d401)[_0xc207('0x18')]();};}function respondWithResult(_0xe993a0,_0x51e967){_0x51e967=_0x51e967||0xc8;return function(_0xc62672){if(_0xc62672){return _0xe993a0[_0xc207('0x17')](_0x51e967)[_0xc207('0x19')](_0xc62672);}};}function respondWithFilteredResult(_0x4031ad,_0x4ef6c4){return function(_0x564cef){if(_0x564cef){var _0x554e5c=typeof _0x4ef6c4[_0xc207('0x1a')]===_0xc207('0x1b')&&typeof _0x4ef6c4[_0xc207('0x1c')]===_0xc207('0x1b');var _0x4b8f44=_0x564cef[_0xc207('0x1d')];var _0x282595=_0x554e5c?0x0:_0x4ef6c4[_0xc207('0x1a')];var _0x5f288e=_0x554e5c?_0x564cef[_0xc207('0x1d')]:_0x4ef6c4['offset']+_0x4ef6c4[_0xc207('0x1c')];var _0x33ddb1;if(_0x5f288e>=_0x4b8f44){_0x5f288e=_0x4b8f44;_0x33ddb1=0xc8;}else{_0x33ddb1=0xce;}_0x4031ad[_0xc207('0x17')](_0x33ddb1);return _0x4031ad[_0xc207('0x1e')](_0xc207('0x1f'),_0x282595+'-'+_0x5f288e+'/'+_0x4b8f44)[_0xc207('0x19')](_0x564cef);}return null;};}function patchUpdates(_0x35c0b0){return function(_0x464dea){try{jsonpatch[_0xc207('0x20')](_0x464dea,_0x35c0b0,!![]);}catch(_0x2bd2eb){return BPromise[_0xc207('0x21')](_0x2bd2eb);}return _0x464dea[_0xc207('0x22')]();};}function saveUpdates(_0x40de25,_0x4b52a7){return function(_0x163b36){if(_0x163b36){return _0x163b36['update'](_0x40de25)[_0xc207('0x23')](function(_0x3ac142){return _0x3ac142;});}return null;};}function removeEntity(_0x1eabe8,_0x83253f){return function(_0x3539f4){if(_0x3539f4){return _0x3539f4[_0xc207('0x24')]()[_0xc207('0x23')](function(){_0x1eabe8[_0xc207('0x17')](0xcc)[_0xc207('0x18')]();});}};}function handleEntityNotFound(_0x2385f7,_0x25c91e){return function(_0x27df03){if(!_0x27df03){_0x2385f7[_0xc207('0x16')](0x194);}return _0x27df03;};}function handleError(_0x138970,_0x1445d3){_0x1445d3=_0x1445d3||0x1f4;return function(_0x56a066){logger[_0xc207('0x25')](_0x56a066['stack']);if(_0x56a066['name']){delete _0x56a066[_0xc207('0x26')];}_0x138970[_0xc207('0x17')](_0x1445d3)[_0xc207('0x27')](_0x56a066);};}exports[_0xc207('0x28')]=function(_0x6a653d,_0x478af7){var _0xe5e848={},_0x463ac8={},_0x6223ef={'count':0x0,'rows':[]};var _0x1bec3f=_[_0xc207('0x29')](db[_0xc207('0x2a')][_0xc207('0x2b')],function(_0x27bc72){return{'name':_0x27bc72[_0xc207('0x2c')],'type':_0x27bc72[_0xc207('0x2d')][_0xc207('0x2e')]};});_0x463ac8[_0xc207('0x2f')]=_[_0xc207('0x30')](_['map'](_0x1bec3f,_0xc207('0x26')),[_0xc207('0x31')]);_0x463ac8[_0xc207('0x32')]=_[_0xc207('0x33')](_0x6a653d[_0xc207('0x32')]);_0x463ac8[_0xc207('0x34')]=_['intersection'](_0x463ac8[_0xc207('0x2f')],_0x463ac8[_0xc207('0x32')]);_0xe5e848[_0xc207('0x35')]=_[_0xc207('0x36')](_0x463ac8['model'],qs[_0xc207('0x37')](_0x6a653d[_0xc207('0x32')][_0xc207('0x37')]));_0xe5e848[_0xc207('0x35')]=_0xe5e848[_0xc207('0x35')][_0xc207('0x38')]?_0xe5e848[_0xc207('0x35')]:_0x463ac8[_0xc207('0x2f')];if(!_0x6a653d[_0xc207('0x32')]['hasOwnProperty']('nolimit')){_0xe5e848[_0xc207('0x1c')]=qs[_0xc207('0x1c')](_0x6a653d[_0xc207('0x32')][_0xc207('0x1c')]);_0xe5e848['offset']=qs[_0xc207('0x1a')](_0x6a653d[_0xc207('0x32')][_0xc207('0x1a')]);}_0xe5e848[_0xc207('0x39')]=qs[_0xc207('0x3a')](_0x6a653d['query'][_0xc207('0x3a')]);_0xe5e848[_0xc207('0x3b')]=qs['filters'](_[_0xc207('0x3c')](_0x6a653d['query'],_0x463ac8[_0xc207('0x34')]),_0x1bec3f);if(_0x6a653d[_0xc207('0x32')]['filter']){_0xe5e848[_0xc207('0x3b')]=_[_0xc207('0x3d')](_0xe5e848[_0xc207('0x3b')],{'$or':_['map'](_0x1bec3f,function(_0x5b3041){if(_0x5b3041[_0xc207('0x2d')]!==_0xc207('0x3e')){var _0x41d66c={};_0x41d66c[_0x5b3041[_0xc207('0x26')]]={'$like':'%'+_0x6a653d['query'][_0xc207('0x3f')]+'%'};return _0x41d66c;}})});}_0xe5e848=_['merge']({},_0xe5e848,_0x6a653d['options']);var _0x4c10ed={'where':_0xe5e848['where']};return db[_0xc207('0x2a')][_0xc207('0x1d')](_0x4c10ed)[_0xc207('0x23')](function(_0x487f98){_0x6223ef[_0xc207('0x1d')]=_0x487f98;if(_0x6a653d[_0xc207('0x32')][_0xc207('0x40')]){_0xe5e848[_0xc207('0x41')]=[{'all':!![]}];}return db['ScreenRecording'][_0xc207('0x42')](_0xe5e848);})[_0xc207('0x23')](function(_0x123a46){_0x6223ef[_0xc207('0x43')]=_0x123a46;return _0x6223ef;})[_0xc207('0x23')](respondWithFilteredResult(_0x478af7,_0xe5e848))['catch'](handleError(_0x478af7,null));};exports[_0xc207('0x44')]=function(_0x19a67d,_0x3a935a){var _0x471a85={'raw':![],'where':{'id':_0x19a67d[_0xc207('0x45')]['id']}},_0x153490={};_0x153490[_0xc207('0x2f')]=_[_0xc207('0x33')](db[_0xc207('0x2a')]['rawAttributes']);_0x153490[_0xc207('0x32')]=_[_0xc207('0x33')](_0x19a67d['query']);_0x153490[_0xc207('0x34')]=_[_0xc207('0x36')](_0x153490[_0xc207('0x2f')],_0x153490[_0xc207('0x32')]);_0x471a85[_0xc207('0x35')]=_['intersection'](_0x153490[_0xc207('0x2f')],qs[_0xc207('0x37')](_0x19a67d[_0xc207('0x32')]['fields']));_0x471a85[_0xc207('0x35')]=_0x471a85[_0xc207('0x35')][_0xc207('0x38')]?_0x471a85[_0xc207('0x35')]:_0x153490['model'];if(_0x19a67d['query'][_0xc207('0x40')]){_0x471a85[_0xc207('0x41')]=[{'all':!![]}];}_0x471a85=_[_0xc207('0x3d')]({},_0x471a85,_0x19a67d[_0xc207('0x46')]);return db[_0xc207('0x2a')][_0xc207('0x47')](_0x471a85)[_0xc207('0x23')](handleEntityNotFound(_0x3a935a,null))[_0xc207('0x23')](respondWithResult(_0x3a935a,null))[_0xc207('0x48')](handleError(_0x3a935a,null));};exports[_0xc207('0x49')]=function(_0x2afcd1,_0x2fda4f){return db['ScreenRecording']['create'](_0x2afcd1[_0xc207('0x4a')],{})[_0xc207('0x23')](respondWithResult(_0x2fda4f,0xc9))[_0xc207('0x48')](handleError(_0x2fda4f,null));};exports['update']=function(_0x2b89e0,_0x3f712d){if(_0x2b89e0[_0xc207('0x4a')]['id']){delete _0x2b89e0[_0xc207('0x4a')]['id'];}delete _0x2b89e0['body'][_0xc207('0x4b')];delete _0x2b89e0['body'][_0xc207('0x4c')];delete _0x2b89e0['body']['closedAt'];delete _0x2b89e0[_0xc207('0x4a')][_0xc207('0x4d')];return db['ScreenRecording']['find']({'where':{'id':_0x2b89e0['params']['id']}})[_0xc207('0x23')](handleEntityNotFound(_0x3f712d,null))[_0xc207('0x23')](saveUpdates(_0x2b89e0[_0xc207('0x4a')],null))[_0xc207('0x23')](respondWithResult(_0x3f712d,null))[_0xc207('0x48')](handleError(_0x3f712d,null));};exports[_0xc207('0x4e')]=function(_0x3dc457,_0x1dfdee){return db['ScreenRecording'][_0xc207('0x4e')]()[_0xc207('0x23')](respondWithResult(_0x1dfdee,null))['catch'](handleError(_0x1dfdee,null));};exports['download']=function(_0x362001,_0x47c630,_0x49a78b){var _0x2634d6=require(_0xc207('0x4f'));var _0x356c8c=![];var _0x3b2448={};if(_0x362001[_0xc207('0x32')][_0xc207('0x2d')]&&_0x362001[_0xc207('0x32')][_0xc207('0x2d')]===_0xc207('0x50')){_0x3b2448[_0xc207('0x50')]=_0x362001[_0xc207('0x45')]['id'];}else{_0x3b2448['id']=_0x362001['params']['id'];}return db['ScreenRecording'][_0xc207('0x47')]({'where':_0x3b2448,'attributes':['id',_0xc207('0x4d')],'raw':!![]})[_0xc207('0x23')](handleEntityNotFound(_0x47c630,null))[_0xc207('0x23')](function(_0xaff7a0){if(_0xaff7a0){var _0x21c12b=path[_0xc207('0x51')](config[_0xc207('0x52')],_0xc207('0x53'),_0xaff7a0['value']);var _0x1cc4e3=util[_0xc207('0x31')](_0xc207('0x54'),_0x21c12b);if(fs[_0xc207('0x55')](_0x1cc4e3)){_0x356c8c=!![];return _0x2634d6['decryptFile'](_0x1cc4e3,_0x21c12b,config[_0xc207('0x56')][_0xc207('0x57')])[_0xc207('0x23')](function(){return _0xaff7a0;});}return _0xaff7a0;}})[_0xc207('0x23')](function(_0x464263){if(_0x464263){var _0x45ad58=path[_0xc207('0x51')](config['root'],_0xc207('0x53'),_0x464263[_0xc207('0x4d')]);if(!fs[_0xc207('0x55')](_0x45ad58)){throw new db[(_0xc207('0x58'))]['ValidationError'](_0xc207('0x59'));}if(_0x464263['filename']){return _0x47c630['download'](_0x45ad58,_0x464263[_0xc207('0x5a')]+path[_0xc207('0x5b')](_0x45ad58),function(){if(_0x356c8c){fs[_0xc207('0x5c')](_0x45ad58);}});}else{return _0x47c630[_0xc207('0x5d')](_0x45ad58,function(_0x441d5f){if(_0x356c8c){fs[_0xc207('0x5c')](_0x45ad58);}});}}})[_0xc207('0x48')](function(_0x33c372){if(_0x33c372[_0xc207('0x5e')]===_0xc207('0x59')){_0x47c630[_0xc207('0x17')](0x194)[_0xc207('0x27')](_0xc207('0x5f'));}else{return handleError(_0x47c630,null);}});};exports[_0xc207('0x24')]=function(_0x282ae5,_0x501bca){return db[_0xc207('0x2a')]['find']({'where':{'id':_0x282ae5[_0xc207('0x45')]['id']}})[_0xc207('0x23')](function(_0x2ade23){if(_['isNil'](_0x2ade23)){throw new ReferenceError('Entity\x20not\x20found');}return _0x2ade23;})[_0xc207('0x23')](function(_0x3ac0dd){var _0x2f18a2=path['join'](config[_0xc207('0x52')],_0xc207('0x53'),_0x3ac0dd[_0xc207('0x4d')]);logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x2f18a2);if(!_[_0xc207('0x60')](_0x3ac0dd['value'])&&fs[_0xc207('0x55')](_0x2f18a2)){logger[_0xc207('0x61')](_0xc207('0x62')+_0x2f18a2+_0xc207('0x63'));fs[_0xc207('0x64')](_0x2f18a2);}_0x2f18a2=_0x2f18a2+_0xc207('0x65');if(!_[_0xc207('0x60')](_0x3ac0dd[_0xc207('0x4d')])&&fs['existsSync'](_0x2f18a2)){logger[_0xc207('0x61')](_0xc207('0x62')+_0x2f18a2+_0xc207('0x63'));fs[_0xc207('0x64')](_0x2f18a2);}return _0x3ac0dd;})[_0xc207('0x23')](function(_0x14050a){if(!_0x14050a)throw new InternalError();return _0x14050a[_0xc207('0x24')]();})[_0xc207('0x23')](function(){_0x501bca[_0xc207('0x17')](0xcc)[_0xc207('0x18')]();})[_0xc207('0x48')](handleError(_0x501bca,null));};
\ No newline at end of file
+var _0x6aa7=['fieldName','type','model','differenceBy','format','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','find','catch','create','body','duration','createdAt','closedAt','params','describe','../../components/encryptor','uniqueid','value','join','root','server/files/screen_recordings','%s.cypher','secrets','recording','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','unlink','download','message','Not\x20found','isNil','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','ScreenRecording','rawAttributes'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x6aa7,0x178));var _0x76aa=function(_0x298986,_0x165aec){_0x298986=_0x298986-0x0;var _0x1e6a50=_0x6aa7[_0x298986];return _0x1e6a50;};'use strict';var emlformat=require(_0x76aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x76aa('0x1'));var jsonpatch=require(_0x76aa('0x2'));var rp=require(_0x76aa('0x3'));var moment=require(_0x76aa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x76aa('0x5'));var util=require(_0x76aa('0x6'));var path=require(_0x76aa('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x76aa('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76aa('0x9'));var squel=require(_0x76aa('0xa'));var crypto=require(_0x76aa('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x76aa('0xc'));var toCsv=require(_0x76aa('0xd'));var querystring=require(_0x76aa('0xe'));var Papa=require('papaparse');var Redis=require(_0x76aa('0xf'));var authService=require(_0x76aa('0x10'));var qs=require(_0x76aa('0x11'));var as=require(_0x76aa('0x12'));var hardwareService=require(_0x76aa('0x13'));var logger=require(_0x76aa('0x14'))(_0x76aa('0x15'));var utils=require(_0x76aa('0x16'));var config=require(_0x76aa('0x17'));var licenseUtil=require(_0x76aa('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x112c39,_0x5df49c){_0x5df49c=_0x5df49c||0xcc;return function(_0x226536){if(_0x226536){return _0x112c39[_0x76aa('0x19')](_0x5df49c);}return _0x112c39[_0x76aa('0x1a')](_0x5df49c)[_0x76aa('0x1b')]();};}function respondWithResult(_0x10432c,_0x4e309f){_0x4e309f=_0x4e309f||0xc8;return function(_0x5f5b59){if(_0x5f5b59){return _0x10432c[_0x76aa('0x1a')](_0x4e309f)['json'](_0x5f5b59);}};}function respondWithFilteredResult(_0x180d92,_0x319bf1){return function(_0x5cf594){if(_0x5cf594){var _0x2111c7=typeof _0x319bf1['offset']===_0x76aa('0x1c')&&typeof _0x319bf1['limit']===_0x76aa('0x1c');var _0x413cf6=_0x5cf594[_0x76aa('0x1d')];var _0x21c16d=_0x2111c7?0x0:_0x319bf1[_0x76aa('0x1e')];var _0x3ead3f=_0x2111c7?_0x5cf594['count']:_0x319bf1['offset']+_0x319bf1[_0x76aa('0x1f')];var _0x454dd3;if(_0x3ead3f>=_0x413cf6){_0x3ead3f=_0x413cf6;_0x454dd3=0xc8;}else{_0x454dd3=0xce;}_0x180d92[_0x76aa('0x1a')](_0x454dd3);return _0x180d92[_0x76aa('0x20')](_0x76aa('0x21'),_0x21c16d+'-'+_0x3ead3f+'/'+_0x413cf6)[_0x76aa('0x22')](_0x5cf594);}return null;};}function patchUpdates(_0x19af92){return function(_0x2eaf48){try{jsonpatch[_0x76aa('0x23')](_0x2eaf48,_0x19af92,!![]);}catch(_0x5990c1){return BPromise[_0x76aa('0x24')](_0x5990c1);}return _0x2eaf48[_0x76aa('0x25')]();};}function saveUpdates(_0x338a6b,_0x5b3f55){return function(_0x41463a){if(_0x41463a){return _0x41463a[_0x76aa('0x26')](_0x338a6b)[_0x76aa('0x27')](function(_0x2bd2c6){return _0x2bd2c6;});}return null;};}function removeEntity(_0x29c50c,_0xc1044c){return function(_0x3cd039){if(_0x3cd039){return _0x3cd039[_0x76aa('0x28')]()[_0x76aa('0x27')](function(){_0x29c50c[_0x76aa('0x1a')](0xcc)[_0x76aa('0x1b')]();});}};}function handleEntityNotFound(_0x26b75e,_0x3599a9){return function(_0x4ef9b0){if(!_0x4ef9b0){_0x26b75e[_0x76aa('0x19')](0x194);}return _0x4ef9b0;};}function handleError(_0x1d6d15,_0x25c614){_0x25c614=_0x25c614||0x1f4;return function(_0x2e7ab4){logger[_0x76aa('0x29')](_0x2e7ab4[_0x76aa('0x2a')]);if(_0x2e7ab4[_0x76aa('0x2b')]){delete _0x2e7ab4[_0x76aa('0x2b')];}_0x1d6d15[_0x76aa('0x1a')](_0x25c614)[_0x76aa('0x2c')](_0x2e7ab4);};}exports['index']=function(_0x3fcb7f,_0x5a8030){var _0x994550={},_0x365ff8={},_0x2dec94={'count':0x0,'rows':[]};var _0x1e90b9=_[_0x76aa('0x2d')](db[_0x76aa('0x2e')][_0x76aa('0x2f')],function(_0x3827ec){return{'name':_0x3827ec[_0x76aa('0x30')],'type':_0x3827ec[_0x76aa('0x31')]['key']};});_0x365ff8[_0x76aa('0x32')]=_[_0x76aa('0x33')](_[_0x76aa('0x2d')](_0x1e90b9,_0x76aa('0x2b')),[_0x76aa('0x34')]);_0x365ff8[_0x76aa('0x35')]=_[_0x76aa('0x36')](_0x3fcb7f['query']);_0x365ff8[_0x76aa('0x37')]=_[_0x76aa('0x38')](_0x365ff8['model'],_0x365ff8[_0x76aa('0x35')]);_0x994550['attributes']=_[_0x76aa('0x38')](_0x365ff8['model'],qs[_0x76aa('0x39')](_0x3fcb7f['query']['fields']));_0x994550[_0x76aa('0x3a')]=_0x994550[_0x76aa('0x3a')][_0x76aa('0x3b')]?_0x994550[_0x76aa('0x3a')]:_0x365ff8['model'];if(!_0x3fcb7f['query'][_0x76aa('0x3c')](_0x76aa('0x3d'))){_0x994550[_0x76aa('0x1f')]=qs[_0x76aa('0x1f')](_0x3fcb7f[_0x76aa('0x35')]['limit']);_0x994550[_0x76aa('0x1e')]=qs['offset'](_0x3fcb7f['query'][_0x76aa('0x1e')]);}_0x994550[_0x76aa('0x3e')]=qs[_0x76aa('0x3f')](_0x3fcb7f[_0x76aa('0x35')]['sort']);_0x994550[_0x76aa('0x40')]=qs[_0x76aa('0x37')](_[_0x76aa('0x41')](_0x3fcb7f['query'],_0x365ff8[_0x76aa('0x37')]),_0x1e90b9);if(_0x3fcb7f[_0x76aa('0x35')][_0x76aa('0x42')]){_0x994550[_0x76aa('0x40')]=_[_0x76aa('0x43')](_0x994550[_0x76aa('0x40')],{'$or':_[_0x76aa('0x2d')](_0x1e90b9,function(_0x307d67){if(_0x307d67[_0x76aa('0x31')]!=='VIRTUAL'){var _0x1525cb={};_0x1525cb[_0x307d67[_0x76aa('0x2b')]]={'$like':'%'+_0x3fcb7f[_0x76aa('0x35')][_0x76aa('0x42')]+'%'};return _0x1525cb;}})});}_0x994550=_[_0x76aa('0x43')]({},_0x994550,_0x3fcb7f[_0x76aa('0x44')]);var _0x572fdb={'where':_0x994550['where']};return db[_0x76aa('0x2e')][_0x76aa('0x1d')](_0x572fdb)[_0x76aa('0x27')](function(_0x365612){_0x2dec94['count']=_0x365612;if(_0x3fcb7f[_0x76aa('0x35')][_0x76aa('0x45')]){_0x994550[_0x76aa('0x46')]=[{'all':!![]}];}return db[_0x76aa('0x2e')][_0x76aa('0x47')](_0x994550);})['then'](function(_0x13dafe){_0x2dec94['rows']=_0x13dafe;return _0x2dec94;})[_0x76aa('0x27')](respondWithFilteredResult(_0x5a8030,_0x994550))['catch'](handleError(_0x5a8030,null));};exports['show']=function(_0x4f7f3a,_0x144f0a){var _0x541594={'raw':![],'where':{'id':_0x4f7f3a['params']['id']}},_0x5cf314={};_0x5cf314[_0x76aa('0x32')]=_[_0x76aa('0x36')](db[_0x76aa('0x2e')][_0x76aa('0x2f')]);_0x5cf314[_0x76aa('0x35')]=_['keys'](_0x4f7f3a[_0x76aa('0x35')]);_0x5cf314[_0x76aa('0x37')]=_[_0x76aa('0x38')](_0x5cf314[_0x76aa('0x32')],_0x5cf314[_0x76aa('0x35')]);_0x541594['attributes']=_[_0x76aa('0x38')](_0x5cf314[_0x76aa('0x32')],qs['fields'](_0x4f7f3a[_0x76aa('0x35')]['fields']));_0x541594[_0x76aa('0x3a')]=_0x541594[_0x76aa('0x3a')][_0x76aa('0x3b')]?_0x541594[_0x76aa('0x3a')]:_0x5cf314[_0x76aa('0x32')];if(_0x4f7f3a[_0x76aa('0x35')][_0x76aa('0x45')]){_0x541594[_0x76aa('0x46')]=[{'all':!![]}];}_0x541594=_[_0x76aa('0x43')]({},_0x541594,_0x4f7f3a[_0x76aa('0x44')]);return db['ScreenRecording'][_0x76aa('0x48')](_0x541594)['then'](handleEntityNotFound(_0x144f0a,null))[_0x76aa('0x27')](respondWithResult(_0x144f0a,null))[_0x76aa('0x49')](handleError(_0x144f0a,null));};exports[_0x76aa('0x4a')]=function(_0x156d4e,_0x5ca721){return db['ScreenRecording'][_0x76aa('0x4a')](_0x156d4e['body'],{})[_0x76aa('0x27')](respondWithResult(_0x5ca721,0xc9))[_0x76aa('0x49')](handleError(_0x5ca721,null));};exports[_0x76aa('0x26')]=function(_0x2e5633,_0x30c577){if(_0x2e5633[_0x76aa('0x4b')]['id']){delete _0x2e5633['body']['id'];}delete _0x2e5633['body'][_0x76aa('0x4c')];delete _0x2e5633[_0x76aa('0x4b')][_0x76aa('0x4d')];delete _0x2e5633[_0x76aa('0x4b')][_0x76aa('0x4e')];delete _0x2e5633[_0x76aa('0x4b')]['value'];return db[_0x76aa('0x2e')][_0x76aa('0x48')]({'where':{'id':_0x2e5633[_0x76aa('0x4f')]['id']}})['then'](handleEntityNotFound(_0x30c577,null))[_0x76aa('0x27')](saveUpdates(_0x2e5633['body'],null))[_0x76aa('0x27')](respondWithResult(_0x30c577,null))['catch'](handleError(_0x30c577,null));};exports[_0x76aa('0x50')]=function(_0x4449c1,_0x3c63e5){return db[_0x76aa('0x2e')][_0x76aa('0x50')]()[_0x76aa('0x27')](respondWithResult(_0x3c63e5,null))[_0x76aa('0x49')](handleError(_0x3c63e5,null));};exports['download']=function(_0x186654,_0x5eeaa5,_0x3ee32){var _0x311bd5=require(_0x76aa('0x51'));var _0x53be10=![];var _0x3fa7ec={};if(_0x186654[_0x76aa('0x35')][_0x76aa('0x31')]&&_0x186654['query'][_0x76aa('0x31')]===_0x76aa('0x52')){_0x3fa7ec[_0x76aa('0x52')]=_0x186654[_0x76aa('0x4f')]['id'];}else{_0x3fa7ec['id']=_0x186654['params']['id'];}return db[_0x76aa('0x2e')][_0x76aa('0x48')]({'where':_0x3fa7ec,'attributes':['id',_0x76aa('0x53')],'raw':!![]})[_0x76aa('0x27')](handleEntityNotFound(_0x5eeaa5,null))[_0x76aa('0x27')](function(_0xf7732){if(_0xf7732){var _0x4e6c09=path[_0x76aa('0x54')](config[_0x76aa('0x55')],_0x76aa('0x56'),_0xf7732[_0x76aa('0x53')]);var _0x3967f3=util[_0x76aa('0x34')](_0x76aa('0x57'),_0x4e6c09);if(fs['existsSync'](_0x3967f3)){_0x53be10=!![];return _0x311bd5['decryptFile'](_0x3967f3,_0x4e6c09,config[_0x76aa('0x58')][_0x76aa('0x59')])['then'](function(){return _0xf7732;});}return _0xf7732;}})[_0x76aa('0x27')](function(_0x1e6f3c){if(_0x1e6f3c){var _0x4f832d=path[_0x76aa('0x54')](config[_0x76aa('0x55')],_0x76aa('0x56'),_0x1e6f3c[_0x76aa('0x53')]);if(!fs[_0x76aa('0x5a')](_0x4f832d)){throw new db[(_0x76aa('0x5b'))][(_0x76aa('0x5c'))](_0x76aa('0x5d'));}if(_0x1e6f3c[_0x76aa('0x5e')]){return _0x5eeaa5['download'](_0x4f832d,_0x1e6f3c[_0x76aa('0x5e')]+path['extname'](_0x4f832d),function(){if(_0x53be10){fs[_0x76aa('0x5f')](_0x4f832d);}});}else{return _0x5eeaa5[_0x76aa('0x60')](_0x4f832d,function(_0x2fef92){if(_0x53be10){fs[_0x76aa('0x5f')](_0x4f832d);}});}}})[_0x76aa('0x49')](function(_0x260ad2){if(_0x260ad2[_0x76aa('0x61')]===_0x76aa('0x5d')){_0x5eeaa5[_0x76aa('0x1a')](0x194)['send'](_0x76aa('0x62'));}else{return handleError(_0x5eeaa5,null);}});};exports[_0x76aa('0x28')]=function(_0x5c542b,_0xe5957d){return db[_0x76aa('0x2e')][_0x76aa('0x48')]({'where':{'id':_0x5c542b[_0x76aa('0x4f')]['id']}})[_0x76aa('0x27')](function(_0x5546b6){if(_[_0x76aa('0x63')](_0x5546b6)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5546b6;})[_0x76aa('0x27')](function(_0x35881c){var _0x3e97f8=path[_0x76aa('0x54')](config[_0x76aa('0x55')],_0x76aa('0x56'),_0x35881c[_0x76aa('0x53')]);logger['info'](_0x76aa('0x64'),_0x3e97f8);if(!_[_0x76aa('0x63')](_0x35881c['value'])&&fs['existsSync'](_0x3e97f8)){logger[_0x76aa('0x65')](_0x76aa('0x66')+_0x3e97f8+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x76aa('0x67')](_0x3e97f8);}_0x3e97f8=_0x3e97f8+_0x76aa('0x68');if(!_[_0x76aa('0x63')](_0x35881c['value'])&&fs[_0x76aa('0x5a')](_0x3e97f8)){logger['info'](_0x76aa('0x66')+_0x3e97f8+_0x76aa('0x69'));fs[_0x76aa('0x67')](_0x3e97f8);}return _0x35881c;})[_0x76aa('0x27')](function(_0x55ca84){if(!_0x55ca84)throw new InternalError();return _0x55ca84['destroy']();})[_0x76aa('0x27')](function(){_0xe5957d['status'](0xcc)[_0x76aa('0x1b')]();})[_0x76aa('0x49')](handleError(_0xe5957d,null));};
\ No newline at end of file
index a614628..bd7b2f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b22=['define','ScreenRecording','interactionid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes'];(function(_0x336b6d,_0x3f0432){var _0x1e348e=function(_0x35d53f){while(--_0x35d53f){_0x336b6d['push'](_0x336b6d['shift']());}};_0x1e348e(++_0x3f0432);}(_0x1b22,0x137));var _0x21b2=function(_0x5b1533,_0x27e66c){_0x5b1533=_0x5b1533-0x0;var _0x1ea41d=_0x1b22[_0x5b1533];return _0x1ea41d;};'use strict';var _=require(_0x21b2('0x0'));var util=require(_0x21b2('0x1'));var logger=require(_0x21b2('0x2'))(_0x21b2('0x3'));var moment=require(_0x21b2('0x4'));var BPromise=require(_0x21b2('0x5'));var rp=require(_0x21b2('0x6'));var fs=require('fs');var path=require(_0x21b2('0x7'));var rimraf=require(_0x21b2('0x8'));var config=require(_0x21b2('0x9'));var attributes=require(_0x21b2('0xa'));module['exports']=function(_0x1ca71a,_0xc6239e){return _0x1ca71a[_0x21b2('0xb')](_0x21b2('0xc'),attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0x21b2('0xd'),'fields':[_0x21b2('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfdfe=['interactionid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','exports','define'];(function(_0xce2c5f,_0x4d64d4){var _0x20db49=function(_0x3dd0f0){while(--_0x3dd0f0){_0xce2c5f['push'](_0xce2c5f['shift']());}};_0x20db49(++_0x4d64d4);}(_0xfdfe,0x7a));var _0xefdf=function(_0x5802e6,_0x5482be){_0x5802e6=_0x5802e6-0x0;var _0x3fffbc=_0xfdfe[_0x5802e6];return _0x3fffbc;};'use strict';var _=require(_0xefdf('0x0'));var util=require(_0xefdf('0x1'));var logger=require(_0xefdf('0x2'))(_0xefdf('0x3'));var moment=require('moment');var BPromise=require(_0xefdf('0x4'));var rp=require(_0xefdf('0x5'));var fs=require('fs');var path=require(_0xefdf('0x6'));var rimraf=require(_0xefdf('0x7'));var config=require('../../config/environment');var attributes=require('./screenRecording.attributes');module[_0xefdf('0x8')]=function(_0x2149a9,_0x5de0c7){return _0x2149a9[_0xefdf('0x9')]('ScreenRecording',attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0xefdf('0xa'),'fields':[_0xefdf('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 8133975..301cd2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae68=['error','code','message','ScreenRecording,\x20%s,\x20%s','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x42e4e0,_0x57ab9c){var _0x5ea33c=function(_0x239369){while(--_0x239369){_0x42e4e0['push'](_0x42e4e0['shift']());}};_0x5ea33c(++_0x57ab9c);}(_0xae68,0xec));var _0x8ae6=function(_0x514816,_0x57c091){_0x514816=_0x514816-0x0;var _0x5c3a43=_0xae68[_0x514816];return _0x5c3a43;};'use strict';var _=require(_0x8ae6('0x0'));var util=require('util');var moment=require(_0x8ae6('0x1'));var BPromise=require('bluebird');var rs=require(_0x8ae6('0x2'));var fs=require('fs');var Redis=require(_0x8ae6('0x3'));var db=require(_0x8ae6('0x4'))['db'];var utils=require(_0x8ae6('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x8ae6('0x6'));var jayson=require(_0x8ae6('0x7'));var client=jayson[_0x8ae6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b621e,_0x55573e,_0x2edfdc){return new BPromise(function(_0xf1ee57,_0x1c133c){return client[_0x8ae6('0x9')](_0x1b621e,_0x2edfdc)[_0x8ae6('0xa')](function(_0x17e03e){logger[_0x8ae6('0xb')]('ScreenRecording,\x20%s,\x20%s',_0x55573e,_0x8ae6('0xc'));logger[_0x8ae6('0xd')](_0x8ae6('0xe'),_0x55573e,'request\x20sent',JSON[_0x8ae6('0xf')](_0x17e03e));if(_0x17e03e[_0x8ae6('0x10')]){if(_0x17e03e[_0x8ae6('0x10')][_0x8ae6('0x11')]===0x1f4){logger['error']('ScreenRecording,\x20%s,\x20%s',_0x55573e,_0x17e03e[_0x8ae6('0x10')][_0x8ae6('0x12')]);return _0x1c133c(_0x17e03e[_0x8ae6('0x10')][_0x8ae6('0x12')]);}logger[_0x8ae6('0x10')](_0x8ae6('0x13'),_0x55573e,_0x17e03e['error'][_0x8ae6('0x12')]);return _0xf1ee57(_0x17e03e['error'][_0x8ae6('0x12')]);}else{logger[_0x8ae6('0xb')](_0x8ae6('0x13'),_0x55573e,_0x8ae6('0xc'));_0xf1ee57(_0x17e03e['result'][_0x8ae6('0x12')]);}})[_0x8ae6('0x14')](function(_0x38953c){logger[_0x8ae6('0x10')](_0x8ae6('0x13'),_0x55573e,_0x38953c);_0x1c133c(_0x38953c);});});}
\ No newline at end of file
+var _0xef63=['ScreenRecording,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s'];(function(_0x1a08ae,_0x16862c){var _0x117fe2=function(_0x5b4453){while(--_0x5b4453){_0x1a08ae['push'](_0x1a08ae['shift']());}};_0x117fe2(++_0x16862c);}(_0xef63,0x17f));var _0x3ef6=function(_0x30e338,_0x836ad9){_0x30e338=_0x30e338-0x0;var _0x3327c3=_0xef63[_0x30e338];return _0x3327c3;};'use strict';var _=require(_0x3ef6('0x0'));var util=require(_0x3ef6('0x1'));var moment=require(_0x3ef6('0x2'));var BPromise=require('bluebird');var rs=require(_0x3ef6('0x3'));var fs=require('fs');var Redis=require(_0x3ef6('0x4'));var db=require(_0x3ef6('0x5'))['db'];var utils=require(_0x3ef6('0x6'));var logger=require(_0x3ef6('0x7'))(_0x3ef6('0x8'));var config=require('../../config/environment');var jayson=require(_0x3ef6('0x9'));var client=jayson[_0x3ef6('0xa')][_0x3ef6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35bcbb,_0x2a2b9a,_0x2801c1){return new BPromise(function(_0x211dfc,_0x3e9e42){return client[_0x3ef6('0xc')](_0x35bcbb,_0x2801c1)[_0x3ef6('0xd')](function(_0x2c96cc){logger[_0x3ef6('0xe')](_0x3ef6('0xf'),_0x2a2b9a,'request\x20sent');logger['debug'](_0x3ef6('0x10'),_0x2a2b9a,'request\x20sent',JSON['stringify'](_0x2c96cc));if(_0x2c96cc[_0x3ef6('0x11')]){if(_0x2c96cc[_0x3ef6('0x11')][_0x3ef6('0x12')]===0x1f4){logger[_0x3ef6('0x11')]('ScreenRecording,\x20%s,\x20%s',_0x2a2b9a,_0x2c96cc[_0x3ef6('0x11')][_0x3ef6('0x13')]);return _0x3e9e42(_0x2c96cc['error'][_0x3ef6('0x13')]);}logger[_0x3ef6('0x11')]('ScreenRecording,\x20%s,\x20%s',_0x2a2b9a,_0x2c96cc['error'][_0x3ef6('0x13')]);return _0x211dfc(_0x2c96cc['error'][_0x3ef6('0x13')]);}else{logger[_0x3ef6('0xe')](_0x3ef6('0xf'),_0x2a2b9a,'request\x20sent');_0x211dfc(_0x2c96cc[_0x3ef6('0x14')][_0x3ef6('0x13')]);}})['catch'](function(_0x1f9cb8){logger[_0x3ef6('0x11')](_0x3ef6('0xf'),_0x2a2b9a,_0x1f9cb8);_0x3e9e42(_0x1f9cb8);});});}
\ No newline at end of file
index 470b3a1..4ff0f77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb389=['getFavicon','diskStorage','join','root','server/files/images/logos/','%s%s','extname','originalname','post','single','file','addLogo','format','logologin','/:id/logo_login','addLogoLogin','preferred','addPreferred','favicon','put','update','exports','multer','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','getDate','/:id','show','/:id/logo','getLogo','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon'];(function(_0x238b73,_0x3b9d3b){var _0x68f970=function(_0x474320){while(--_0x474320){_0x238b73['push'](_0x238b73['shift']());}};_0x68f970(++_0x3b9d3b);}(_0xb389,0xc6));var _0x9b38=function(_0x38ff1e,_0x3b9385){_0x38ff1e=_0x38ff1e-0x0;var _0x3755d4=_0xb389[_0x38ff1e];return _0x3755d4;};'use strict';var multer=require(_0x9b38('0x0'));var util=require('util');var path=require(_0x9b38('0x1'));var timeout=require(_0x9b38('0x2'));var express=require(_0x9b38('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9b38('0x4'));var config=require(_0x9b38('0x5'));var controller=require(_0x9b38('0x6'));router[_0x9b38('0x7')]('/',auth[_0x9b38('0x8')](),controller[_0x9b38('0x9')]);router[_0x9b38('0x7')](_0x9b38('0xa'),controller[_0x9b38('0xb')]);router[_0x9b38('0x7')](_0x9b38('0xc'),controller[_0x9b38('0xd')]);router['get'](_0x9b38('0xe'),controller[_0x9b38('0xf')]);router[_0x9b38('0x7')]('/:id/logo_login',controller[_0x9b38('0x10')]);router[_0x9b38('0x7')](_0x9b38('0x11'),controller[_0x9b38('0x12')]);router[_0x9b38('0x7')](_0x9b38('0x13'),controller[_0x9b38('0x14')]);router['get'](_0x9b38('0x15'),controller[_0x9b38('0x16')]);var upload=multer({'storage':multer[_0x9b38('0x17')]({'destination':function(_0x1866ea,_0x58c495,_0x26e733){_0x26e733(null,path[_0x9b38('0x18')](config[_0x9b38('0x19')],_0x9b38('0x1a')));},'filename':function(_0x2a69b6,_0x3542a7,_0x1e718a){_0x1e718a(null,util['format'](_0x9b38('0x1b'),'logo',path[_0x9b38('0x1c')](_0x3542a7[_0x9b38('0x1d')])));}})});router[_0x9b38('0x1e')](_0x9b38('0xe'),upload[_0x9b38('0x1f')](_0x9b38('0x20')),controller[_0x9b38('0x21')]);var upload=multer({'storage':multer[_0x9b38('0x17')]({'destination':function(_0x5592e8,_0x4e51d9,_0xef83e0){_0xef83e0(null,path['join'](config[_0x9b38('0x19')],_0x9b38('0x1a')));},'filename':function(_0x1fa848,_0x5e78bc,_0x37f8c5){_0x37f8c5(null,util[_0x9b38('0x22')](_0x9b38('0x1b'),_0x9b38('0x23'),path[_0x9b38('0x1c')](_0x5e78bc[_0x9b38('0x1d')])));}})});router[_0x9b38('0x1e')](_0x9b38('0x24'),upload['single'](_0x9b38('0x20')),controller[_0x9b38('0x25')]);var upload=multer({'storage':multer[_0x9b38('0x17')]({'destination':function(_0xf34e5f,_0x443cb5,_0x2de0c4){_0x2de0c4(null,path[_0x9b38('0x18')](config['root'],'server/files/images/logos/'));},'filename':function(_0x42c138,_0xc1a51d,_0x3277b0){_0x3277b0(null,util['format'](_0x9b38('0x1b'),_0x9b38('0x26'),path['extname'](_0xc1a51d[_0x9b38('0x1d')])));}})});router['post'](_0x9b38('0x13'),upload[_0x9b38('0x1f')](_0x9b38('0x20')),controller[_0x9b38('0x27')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x87ab14,_0x361ded,_0x32ee98){_0x32ee98(null,path['join'](config[_0x9b38('0x19')],_0x9b38('0x1a')));},'filename':function(_0x390991,_0x66daba,_0x1c6fbc){_0x1c6fbc(null,util[_0x9b38('0x22')]('%s%s',_0x9b38('0x28'),path['extname'](_0x66daba['originalname'])));}})});router[_0x9b38('0x1e')](_0x9b38('0x15'),upload[_0x9b38('0x1f')]('file'),controller['addFavicon']);router[_0x9b38('0x29')]('/:id',auth[_0x9b38('0x8')](),controller[_0x9b38('0x2a')]);module[_0x9b38('0x2b')]=router;
\ No newline at end of file
+var _0xc255=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','/now','getDate','/:id','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','file','logologin','single','addLogoLogin','preferred','post','favicon','/:id/favicon','addFavicon','put','exports','multer','path'];(function(_0x14324d,_0x1b64e0){var _0x1f6358=function(_0x1aec64){while(--_0x1aec64){_0x14324d['push'](_0x14324d['shift']());}};_0x1f6358(++_0x1b64e0);}(_0xc255,0x181));var _0x5c25=function(_0xbf1132,_0x176b34){_0xbf1132=_0xbf1132-0x0;var _0xe63ce4=_0xc255[_0xbf1132];return _0xe63ce4;};'use strict';var multer=require(_0x5c25('0x0'));var util=require('util');var path=require(_0x5c25('0x1'));var timeout=require(_0x5c25('0x2'));var express=require(_0x5c25('0x3'));var router=express[_0x5c25('0x4')]();var fs_extra=require(_0x5c25('0x5'));var auth=require(_0x5c25('0x6'));var interaction=require(_0x5c25('0x7'));var config=require(_0x5c25('0x8'));var controller=require(_0x5c25('0x9'));router[_0x5c25('0xa')]('/',auth[_0x5c25('0xb')](),controller['index']);router[_0x5c25('0xa')](_0x5c25('0xc'),controller[_0x5c25('0xd')]);router[_0x5c25('0xa')](_0x5c25('0xe'),controller['show']);router[_0x5c25('0xa')](_0x5c25('0xf'),controller[_0x5c25('0x10')]);router[_0x5c25('0xa')](_0x5c25('0x11'),controller[_0x5c25('0x12')]);router[_0x5c25('0xa')](_0x5c25('0x13'),controller[_0x5c25('0x14')]);router[_0x5c25('0xa')](_0x5c25('0x15'),controller[_0x5c25('0x16')]);router[_0x5c25('0xa')]('/:id/favicon',controller['getFavicon']);var upload=multer({'storage':multer[_0x5c25('0x17')]({'destination':function(_0x115d12,_0x34b583,_0x92db02){_0x92db02(null,path[_0x5c25('0x18')](config[_0x5c25('0x19')],_0x5c25('0x1a')));},'filename':function(_0x57601a,_0x4242df,_0x14b56e){_0x14b56e(null,util[_0x5c25('0x1b')](_0x5c25('0x1c'),_0x5c25('0x1d'),path[_0x5c25('0x1e')](_0x4242df[_0x5c25('0x1f')])));}})});router['post'](_0x5c25('0xf'),upload['single'](_0x5c25('0x20')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3a9f47,_0x4ca6b5,_0x200ce7){_0x200ce7(null,path[_0x5c25('0x18')](config[_0x5c25('0x19')],_0x5c25('0x1a')));},'filename':function(_0x163402,_0x54b51a,_0x3c0105){_0x3c0105(null,util['format'](_0x5c25('0x1c'),_0x5c25('0x21'),path[_0x5c25('0x1e')](_0x54b51a[_0x5c25('0x1f')])));}})});router['post'](_0x5c25('0x11'),upload[_0x5c25('0x22')](_0x5c25('0x20')),controller[_0x5c25('0x23')]);var upload=multer({'storage':multer[_0x5c25('0x17')]({'destination':function(_0x260a5e,_0x3c0141,_0x4de060){_0x4de060(null,path[_0x5c25('0x18')](config[_0x5c25('0x19')],_0x5c25('0x1a')));},'filename':function(_0x395e10,_0x35b49f,_0x4174d7){_0x4174d7(null,util[_0x5c25('0x1b')]('%s%s',_0x5c25('0x24'),path[_0x5c25('0x1e')](_0x35b49f['originalname'])));}})});router[_0x5c25('0x25')](_0x5c25('0x15'),upload['single']('file'),controller['addPreferred']);var upload=multer({'storage':multer[_0x5c25('0x17')]({'destination':function(_0x21713f,_0x843c2d,_0x41e5e6){_0x41e5e6(null,path[_0x5c25('0x18')](config[_0x5c25('0x19')],_0x5c25('0x1a')));},'filename':function(_0x3934dc,_0x33e4be,_0x5ebb10){_0x5ebb10(null,util[_0x5c25('0x1b')](_0x5c25('0x1c'),_0x5c25('0x26'),path['extname'](_0x33e4be[_0x5c25('0x1f')])));}})});router['post'](_0x5c25('0x27'),upload[_0x5c25('0x22')](_0x5c25('0x20')),controller[_0x5c25('0x28')]);router[_0x5c25('0x29')](_0x5c25('0xe'),auth[_0x5c25('0xb')](),controller['update']);module[_0x5c25('0x2a')]=router;
\ No newline at end of file
index f347f95..fe2972f 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(_0x5c2db0,_0x3ac8bc){var _0x179691=function(_0x17b2eb){while(--_0x17b2eb){_0x5c2db0['push'](_0x5c2db0['shift']());}};_0x179691(++_0x3ac8bc);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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(_0x250b67,_0x4396dc){var _0x292b11=function(_0x4fde0c){while(--_0x4fde0c){_0x250b67['push'](_0x250b67['shift']());}};_0x292b11(++_0x4396dc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'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 3141f3b..faa63ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63a3=['../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','destroy','then','sendStatus','stack','name','send','index','map','Setting','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','show','params','filters','length','include','options','find','update','body','addLogo','file','logo','filename','loginLogo','server/files/images/logos','preferred','favicon','defaultLogo','defaultPreferred','defaultFavicon','join','root','toLower','default_logo.svg','default','upperFirst','custom','existsSync','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','getLicense','defaultLoginLogo','default_loginLogo.svg','gdpr','securePassword','addPreferred','getPreferred','default_preferred.png','addFavicon','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x63a3,0x15b));var _0x363a=function(_0x6a0266,_0x1552d6){_0x6a0266=_0x6a0266-0x0;var _0x309e00=_0x63a3[_0x6a0266];return _0x309e00;};'use strict';var emlformat=require(_0x363a('0x0'));var rimraf=require(_0x363a('0x1'));var zipdir=require(_0x363a('0x2'));var jsonpatch=require(_0x363a('0x3'));var rp=require(_0x363a('0x4'));var moment=require(_0x363a('0x5'));var BPromise=require(_0x363a('0x6'));var Mustache=require('mustache');var util=require(_0x363a('0x7'));var path=require(_0x363a('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x363a('0x9'));var fs=require('fs');var fs_extra=require(_0x363a('0xa'));var _=require(_0x363a('0xb'));var squel=require(_0x363a('0xc'));var crypto=require(_0x363a('0xd'));var jsforce=require(_0x363a('0xe'));var deskjs=require(_0x363a('0xf'));var toCsv=require('to-csv');var querystring=require(_0x363a('0x10'));var Papa=require('papaparse');var Redis=require(_0x363a('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x363a('0x12'));var as=require(_0x363a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x363a('0x14'));var config=require(_0x363a('0x15'));var licenseUtil=require(_0x363a('0x16'));var db=require(_0x363a('0x17'))['db'];var jayson=require(_0x363a('0x18'));var client=jayson[_0x363a('0x19')][_0x363a('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x2503f0,_0x7d8bd,_0x49b63c,_0x41597a){return new BPromise(function(_0x5bbd9c,_0x353d5e){var _0x28ec14=_0x41597a||client;return _0x28ec14[_0x363a('0x1b')](_0x2503f0,_0x49b63c)['then'](function(_0x353ad1){logger[_0x363a('0x1c')](_0x363a('0x1d'),_0x7d8bd,_0x363a('0x1e'));logger[_0x363a('0x1f')](_0x363a('0x20'),_0x7d8bd,_0x363a('0x1e'),JSON[_0x363a('0x21')](_0x353ad1));if(_0x353ad1[_0x363a('0x22')]){if(_0x353ad1[_0x363a('0x22')][_0x363a('0x23')]===0x1f4){logger['error'](_0x363a('0x1d'),_0x7d8bd,_0x353ad1['error']['message']);return _0x353d5e(_0x353ad1['error'][_0x363a('0x24')]);}logger[_0x363a('0x22')]('Setting,\x20%s,\x20%s',_0x7d8bd,_0x353ad1[_0x363a('0x22')][_0x363a('0x24')]);return _0x5bbd9c(_0x353ad1[_0x363a('0x22')]['message']);}else{logger[_0x363a('0x1c')]('Setting,\x20%s,\x20%s',_0x7d8bd,'request\x20sent');_0x5bbd9c(_0x353ad1[_0x363a('0x25')]['message']);}})[_0x363a('0x26')](function(_0x34990c){logger['error']('Setting,\x20%s,\x20%s',_0x7d8bd,_0x34990c);_0x353d5e(_0x34990c);});});}function respondWithStatusCode(_0x139304,_0x170bef){_0x170bef=_0x170bef||0xcc;return function(_0x190836){if(_0x190836){return _0x139304['sendStatus'](_0x170bef);}return _0x139304[_0x363a('0x27')](_0x170bef)[_0x363a('0x28')]();};}function respondWithResult(_0x2f8098,_0x4d6f09){_0x4d6f09=_0x4d6f09||0xc8;return function(_0x4f5b65){if(_0x4f5b65){return _0x2f8098[_0x363a('0x27')](_0x4d6f09)[_0x363a('0x29')](_0x4f5b65);}};}function respondWithFilteredResult(_0x456022,_0x4da3c4){return function(_0x2a1ecd){if(_0x2a1ecd){var _0x4b01ab=typeof _0x4da3c4[_0x363a('0x2a')]===_0x363a('0x2b')&&typeof _0x4da3c4[_0x363a('0x2c')]===_0x363a('0x2b');var _0x1dbae5=_0x2a1ecd[_0x363a('0x2d')];var _0x45cdcd=_0x4b01ab?0x0:_0x4da3c4[_0x363a('0x2a')];var _0x34435a=_0x4b01ab?_0x2a1ecd[_0x363a('0x2d')]:_0x4da3c4[_0x363a('0x2a')]+_0x4da3c4['limit'];var _0x166618;if(_0x34435a>=_0x1dbae5){_0x34435a=_0x1dbae5;_0x166618=0xc8;}else{_0x166618=0xce;}_0x456022[_0x363a('0x27')](_0x166618);return _0x456022[_0x363a('0x2e')](_0x363a('0x2f'),_0x45cdcd+'-'+_0x34435a+'/'+_0x1dbae5)[_0x363a('0x29')](_0x2a1ecd);}return null;};}function patchUpdates(_0x4cf426){return function(_0x52d297){try{jsonpatch['apply'](_0x52d297,_0x4cf426,!![]);}catch(_0x401efa){return BPromise[_0x363a('0x30')](_0x401efa);}return _0x52d297['save']();};}function saveUpdates(_0x4814cb,_0x1d16a6){return function(_0x1b0553){if(_0x1b0553){return _0x1b0553['update'](_0x4814cb)['then'](function(_0x56862f){return _0x56862f;});}return null;};}function removeEntity(_0xe9c389,_0x366bd1){return function(_0x57dd6e){if(_0x57dd6e){return _0x57dd6e[_0x363a('0x31')]()[_0x363a('0x32')](function(){_0xe9c389[_0x363a('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26311b,_0x222493){return function(_0x4446ad){if(!_0x4446ad){_0x26311b[_0x363a('0x33')](0x194);}return _0x4446ad;};}function handleError(_0x38c43a,_0x266cae){_0x266cae=_0x266cae||0x1f4;return function(_0x23c278){logger['error'](_0x23c278[_0x363a('0x34')]);if(_0x23c278[_0x363a('0x35')]){delete _0x23c278['name'];}_0x38c43a[_0x363a('0x27')](_0x266cae)[_0x363a('0x36')](_0x23c278);};}exports[_0x363a('0x37')]=function(_0x4313fa,_0x2dc097){var _0x283f1e={},_0x528c77={},_0xf3dcdd={'count':0x0,'rows':[]};var _0x587296=_[_0x363a('0x38')](db[_0x363a('0x39')][_0x363a('0x3a')],function(_0x21ed8c){return{'name':_0x21ed8c[_0x363a('0x3b')],'type':_0x21ed8c[_0x363a('0x3c')][_0x363a('0x3d')]};});_0x528c77[_0x363a('0x3e')]=_['map'](_0x587296,_0x363a('0x35'));_0x528c77[_0x363a('0x3f')]=_[_0x363a('0x40')](_0x4313fa[_0x363a('0x3f')]);_0x528c77['filters']=_['intersection'](_0x528c77['model'],_0x528c77[_0x363a('0x3f')]);_0x283f1e[_0x363a('0x41')]=_[_0x363a('0x42')](_0x528c77[_0x363a('0x3e')],qs['fields'](_0x4313fa[_0x363a('0x3f')][_0x363a('0x43')]));_0x283f1e[_0x363a('0x41')]=_0x283f1e[_0x363a('0x41')]['length']?_0x283f1e[_0x363a('0x41')]:_0x528c77['model'];if(!_0x4313fa[_0x363a('0x3f')][_0x363a('0x44')](_0x363a('0x45'))){_0x283f1e[_0x363a('0x2c')]=qs[_0x363a('0x2c')](_0x4313fa[_0x363a('0x3f')][_0x363a('0x2c')]);_0x283f1e['offset']=qs[_0x363a('0x2a')](_0x4313fa[_0x363a('0x3f')]['offset']);}_0x283f1e[_0x363a('0x46')]=qs[_0x363a('0x47')](_0x4313fa[_0x363a('0x3f')][_0x363a('0x47')]);_0x283f1e[_0x363a('0x48')]=qs['filters'](_[_0x363a('0x49')](_0x4313fa[_0x363a('0x3f')],_0x528c77['filters']),_0x587296);if(_0x4313fa['query']['filter']){_0x283f1e[_0x363a('0x48')]=_[_0x363a('0x4a')](_0x283f1e['where'],{'$or':_[_0x363a('0x38')](_0x587296,function(_0xd16e04){if(_0xd16e04['type']!==_0x363a('0x4b')){var _0x309ded={};_0x309ded[_0xd16e04[_0x363a('0x35')]]={'$like':'%'+_0x4313fa[_0x363a('0x3f')]['filter']+'%'};return _0x309ded;}})});}_0x283f1e=_[_0x363a('0x4a')]({},_0x283f1e,_0x4313fa['options']);var _0x50ef2d={'where':_0x283f1e[_0x363a('0x48')]};return db['Setting'][_0x363a('0x2d')](_0x50ef2d)[_0x363a('0x32')](function(_0x313462){_0xf3dcdd[_0x363a('0x2d')]=_0x313462;if(_0x4313fa['query']['includeAll']){_0x283f1e['include']=[{'all':!![]}];}return db['Setting']['findAll'](_0x283f1e);})[_0x363a('0x32')](function(_0x1cbf26){_0xf3dcdd['rows']=_0x1cbf26;return _0xf3dcdd;})[_0x363a('0x32')](respondWithFilteredResult(_0x2dc097,_0x283f1e))[_0x363a('0x26')](handleError(_0x2dc097,null));};exports[_0x363a('0x4c')]=function(_0x5c233b,_0x138d44){var _0x5c8143={'raw':![],'where':{'id':_0x5c233b[_0x363a('0x4d')]['id']}},_0x52a4e0={};_0x52a4e0[_0x363a('0x3e')]=_[_0x363a('0x40')](db[_0x363a('0x39')]['rawAttributes']);_0x52a4e0['query']=_[_0x363a('0x40')](_0x5c233b[_0x363a('0x3f')]);_0x52a4e0[_0x363a('0x4e')]=_['intersection'](_0x52a4e0[_0x363a('0x3e')],_0x52a4e0[_0x363a('0x3f')]);_0x5c8143['attributes']=_[_0x363a('0x42')](_0x52a4e0[_0x363a('0x3e')],qs[_0x363a('0x43')](_0x5c233b[_0x363a('0x3f')]['fields']));_0x5c8143[_0x363a('0x41')]=_0x5c8143['attributes'][_0x363a('0x4f')]?_0x5c8143[_0x363a('0x41')]:_0x52a4e0['model'];if(_0x5c233b[_0x363a('0x3f')]['includeAll']){_0x5c8143[_0x363a('0x50')]=[{'all':!![]}];}_0x5c8143=_[_0x363a('0x4a')]({},_0x5c8143,_0x5c233b[_0x363a('0x51')]);return db[_0x363a('0x39')][_0x363a('0x52')](_0x5c8143)[_0x363a('0x32')](handleEntityNotFound(_0x138d44,null))['then'](respondWithResult(_0x138d44,null))[_0x363a('0x26')](handleError(_0x138d44,null));};exports[_0x363a('0x53')]=function(_0x143c2e,_0x37d084){if(_0x143c2e[_0x363a('0x54')]['id']){delete _0x143c2e['body']['id'];}return db[_0x363a('0x39')]['find']({'where':{'id':_0x143c2e[_0x363a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x37d084,null))[_0x363a('0x32')](saveUpdates(_0x143c2e[_0x363a('0x54')],null))[_0x363a('0x32')](respondWithResult(_0x37d084,null))['catch'](handleError(_0x37d084,null));};exports[_0x363a('0x55')]=function(_0x823f31,_0x2bf1ed,_0x192239){if(_0x823f31['file']&&_0x823f31[_0x363a('0x56')]['filename']){_0x823f31[_0x363a('0x54')][_0x363a('0x57')]=_0x823f31['file'][_0x363a('0x58')];}return db['Setting'][_0x363a('0x52')]({'where':{'id':_0x823f31[_0x363a('0x4d')]['id']}})[_0x363a('0x32')](handleEntityNotFound(_0x2bf1ed,null))['then'](saveUpdates(_0x823f31[_0x363a('0x54')],null))[_0x363a('0x32')](respondWithResult(_0x2bf1ed,null))[_0x363a('0x26')](handleError(_0x2bf1ed,null));};exports['addLogoLogin']=function(_0x416533,_0x310b6a,_0x12f6aa){if(_0x416533[_0x363a('0x56')]&&_0x416533[_0x363a('0x56')][_0x363a('0x58')]){_0x416533[_0x363a('0x54')][_0x363a('0x59')]=_0x416533['file'][_0x363a('0x58')];}return db[_0x363a('0x39')]['find']({'where':{'id':_0x416533[_0x363a('0x4d')]['id']}})[_0x363a('0x32')](handleEntityNotFound(_0x310b6a,null))['then'](saveUpdates(_0x416533[_0x363a('0x54')],null))[_0x363a('0x32')](respondWithResult(_0x310b6a,null))[_0x363a('0x26')](handleError(_0x310b6a,null));};var utilLicense=require(_0x363a('0x16'));exports['getLogo']=function(_0x584c17,_0x45a916,_0x49d99f){var _0x4d7aae=_0x363a('0x5a');var _0x2eee1b={'custom':![]};return utilLicense['getLicense']()[_0x363a('0x32')](function(_0x4bb4d7){if(_0x4bb4d7){_0x2eee1b=_0x4bb4d7;}return db['Setting']['find']({'where':{'id':_0x584c17[_0x363a('0x4d')]['id']},'attributes':['logo',_0x363a('0x59'),_0x363a('0x5b'),_0x363a('0x5c'),_0x363a('0x5d'),'defaultLoginLogo',_0x363a('0x5e'),_0x363a('0x5f')],'raw':!![]});})[_0x363a('0x32')](handleEntityNotFound(_0x45a916,null))[_0x363a('0x32')](function(_0x242633){if(_0x242633){var _0xf9658b=_0x242633[_0x363a('0x57')]&&fs['existsSync'](path[_0x363a('0x60')](config[_0x363a('0x61')],_0x4d7aae,_[_0x363a('0x62')](_0x242633[_0x363a('0x57')])))?path[_0x363a('0x60')](config[_0x363a('0x61')],_0x4d7aae,_[_0x363a('0x62')](_0x242633[_0x363a('0x57')])):path[_0x363a('0x60')](config[_0x363a('0x61')],_0x4d7aae,_[_0x363a('0x62')](_0x363a('0x63')));var _0x2a4597=_0x363a('0x64')+_[_0x363a('0x65')](_0x363a('0x57'));if(_0x242633[_0x2a4597]||!_0x2eee1b[_0x363a('0x66')]){_0xf9658b=path[_0x363a('0x60')](config[_0x363a('0x61')],_0x4d7aae,_[_0x363a('0x62')](_0x363a('0x63')));}if(!fs[_0x363a('0x67')](_0xf9658b)){throw new db[(_0x363a('0x68'))][(_0x363a('0x69'))](_[_0x363a('0x65')](_0x363a('0x57'))+_0x363a('0x6a'));}return _0x45a916[_0x363a('0x6b')](_0xf9658b);}})[_0x363a('0x26')](handleError(_0x45a916,null));};var utilLicense=require(_0x363a('0x16'));exports[_0x363a('0x6c')]=function(_0x29cbe7,_0x1faac0,_0x4a5d7e){var _0x342993=_0x363a('0x5a');var _0x42f2b7={'custom':![]};return utilLicense[_0x363a('0x6d')]()[_0x363a('0x32')](function(_0x1e1ccc){if(_0x1e1ccc){_0x42f2b7=_0x1e1ccc;}return db['Setting'][_0x363a('0x52')]({'where':{'id':_0x29cbe7['params']['id']},'attributes':[_0x363a('0x57'),_0x363a('0x59'),'preferred',_0x363a('0x5c'),_0x363a('0x5d'),_0x363a('0x6e'),_0x363a('0x5e'),_0x363a('0x5f')],'raw':!![]});})[_0x363a('0x32')](handleEntityNotFound(_0x1faac0,null))[_0x363a('0x32')](function(_0x440bf4){if(_0x440bf4){var _0x191012=_0x440bf4['loginLogo']&&fs[_0x363a('0x67')](path['join'](config[_0x363a('0x61')],_0x342993,_[_0x363a('0x62')](_0x440bf4[_0x363a('0x59')])))?path[_0x363a('0x60')](config['root'],_0x342993,_[_0x363a('0x62')](_0x440bf4[_0x363a('0x59')])):path['join'](config[_0x363a('0x61')],_0x342993,_[_0x363a('0x62')](_0x363a('0x6f')));var _0x453078=_0x363a('0x64')+_[_0x363a('0x65')](_0x363a('0x59'));if(_0x440bf4[_0x453078]||!_0x42f2b7['custom']){_0x191012=path[_0x363a('0x60')](config[_0x363a('0x61')],_0x342993,_[_0x363a('0x62')]('default_loginLogo.svg'));}if(!fs[_0x363a('0x67')](_0x191012)){throw new db[(_0x363a('0x68'))][(_0x363a('0x69'))](_['upperFirst'](_0x363a('0x59'))+_0x363a('0x6a'));}return _0x1faac0[_0x363a('0x6b')](_0x191012);}})[_0x363a('0x26')](handleError(_0x1faac0,null));};exports[_0x363a('0x70')]=function(_0x638599,_0x578ae1){return db[_0x363a('0x39')][_0x363a('0x52')]({'where':{'id':_0x638599['params']['id']},'attributes':[_0x363a('0x71')]})[_0x363a('0x32')](respondWithResult(_0x578ae1,null))['catch'](handleError(_0x578ae1,null));};exports[_0x363a('0x72')]=function(_0x2d5bd1,_0x1712e9,_0x263189){if(_0x2d5bd1[_0x363a('0x56')]&&_0x2d5bd1[_0x363a('0x56')][_0x363a('0x58')]){_0x2d5bd1[_0x363a('0x54')][_0x363a('0x5b')]=_0x2d5bd1[_0x363a('0x56')][_0x363a('0x58')];}return db[_0x363a('0x39')]['find']({'where':{'id':_0x2d5bd1[_0x363a('0x4d')]['id']}})[_0x363a('0x32')](handleEntityNotFound(_0x1712e9,null))[_0x363a('0x32')](saveUpdates(_0x2d5bd1[_0x363a('0x54')],null))[_0x363a('0x32')](respondWithResult(_0x1712e9,null))[_0x363a('0x26')](handleError(_0x1712e9,null));};var utilLicense=require('../../config/license/util');exports[_0x363a('0x73')]=function(_0x3621a7,_0x440955,_0x16d727){var _0xbdb90e=_0x363a('0x5a');var _0x51a279={'custom':![]};return utilLicense['getLicense']()[_0x363a('0x32')](function(_0x3e4212){if(_0x3e4212){_0x51a279=_0x3e4212;}return db[_0x363a('0x39')][_0x363a('0x52')]({'where':{'id':_0x3621a7[_0x363a('0x4d')]['id']},'attributes':[_0x363a('0x57'),'loginLogo','preferred',_0x363a('0x5c'),_0x363a('0x5d'),_0x363a('0x6e'),_0x363a('0x5e'),_0x363a('0x5f')],'raw':!![]});})[_0x363a('0x32')](handleEntityNotFound(_0x440955,null))['then'](function(_0x3589f1){if(_0x3589f1){var _0x370ff4=_0x3589f1['preferred']&&fs[_0x363a('0x67')](path[_0x363a('0x60')](config[_0x363a('0x61')],_0xbdb90e,_['toLower'](_0x3589f1['preferred'])))?path['join'](config[_0x363a('0x61')],_0xbdb90e,_[_0x363a('0x62')](_0x3589f1[_0x363a('0x5b')])):path[_0x363a('0x60')](config[_0x363a('0x61')],_0xbdb90e,_[_0x363a('0x62')](_0x363a('0x74')));var _0x4ba747=_0x363a('0x64')+_[_0x363a('0x65')](_0x363a('0x5b'));if(_0x3589f1[_0x4ba747]||!_0x51a279[_0x363a('0x66')]||!_0x51a279['preferred']){_0x370ff4=path[_0x363a('0x60')](config[_0x363a('0x61')],_0xbdb90e,_[_0x363a('0x62')](_0x363a('0x74')));}if(!fs['existsSync'](_0x370ff4)){throw new db[(_0x363a('0x68'))][(_0x363a('0x69'))](_[_0x363a('0x65')]('preferred')+_0x363a('0x6a'));}return _0x440955[_0x363a('0x6b')](_0x370ff4);}})[_0x363a('0x26')](handleError(_0x440955,null));};exports[_0x363a('0x75')]=function(_0x1b56c8,_0x1d9974,_0x36ea7e){if(_0x1b56c8[_0x363a('0x56')]&&_0x1b56c8['file']['filename']){_0x1b56c8[_0x363a('0x54')][_0x363a('0x5c')]=_0x1b56c8[_0x363a('0x56')][_0x363a('0x58')];}return db[_0x363a('0x39')][_0x363a('0x52')]({'where':{'id':_0x1b56c8[_0x363a('0x4d')]['id']}})[_0x363a('0x32')](handleEntityNotFound(_0x1d9974,null))['then'](saveUpdates(_0x1b56c8[_0x363a('0x54')],null))[_0x363a('0x32')](respondWithResult(_0x1d9974,null))[_0x363a('0x26')](handleError(_0x1d9974,null));};var utilLicense=require(_0x363a('0x16'));exports['getFavicon']=function(_0x3806f5,_0x2ec551,_0x327411){var _0x4bb990=_0x363a('0x5a');var _0x2d3119={'custom':![]};return utilLicense[_0x363a('0x6d')]()[_0x363a('0x32')](function(_0x31d9de){if(_0x31d9de){_0x2d3119=_0x31d9de;}return db[_0x363a('0x39')][_0x363a('0x52')]({'where':{'id':_0x3806f5[_0x363a('0x4d')]['id']},'attributes':[_0x363a('0x57'),_0x363a('0x59'),'preferred',_0x363a('0x5c'),_0x363a('0x5d'),_0x363a('0x6e'),_0x363a('0x5e'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x2ec551,null))[_0x363a('0x32')](function(_0x527d6a){if(_0x527d6a){var _0x24b8a6=_0x527d6a[_0x363a('0x5c')]&&fs[_0x363a('0x67')](path['join'](config['root'],_0x4bb990,_[_0x363a('0x62')](_0x527d6a[_0x363a('0x5c')])))?path[_0x363a('0x60')](config[_0x363a('0x61')],_0x4bb990,_[_0x363a('0x62')](_0x527d6a[_0x363a('0x5c')])):path[_0x363a('0x60')](config[_0x363a('0x61')],_0x4bb990,_[_0x363a('0x62')]('default_favicon.ico'));var _0x196cca=_0x363a('0x64')+_['upperFirst']('favicon');if(_0x527d6a[_0x196cca]||!_0x2d3119[_0x363a('0x66')]){_0x24b8a6=path[_0x363a('0x60')](config[_0x363a('0x61')],_0x4bb990,_[_0x363a('0x62')]('default_favicon.ico'));}if(!fs[_0x363a('0x67')](_0x24b8a6)){throw new db[(_0x363a('0x68'))][(_0x363a('0x69'))](_[_0x363a('0x65')](_0x363a('0x5c'))+'\x20not\x20found');}return _0x2ec551[_0x363a('0x6b')](_0x24b8a6);}})[_0x363a('0x26')](handleError(_0x2ec551,null));};exports['getDate']=function(_0x28187c,_0x578c45){var _0x45a4d7={'offset':moment()[_0x363a('0x76')]()};_0x45a4d7[_0x363a('0x77')]=moment()[_0x363a('0x76')](_0x45a4d7[_0x363a('0x2a')])[_0x363a('0x78')](_0x363a('0x79'));return _0x578c45[_0x363a('0x27')](0xc8)['send'](_0x45a4d7);};
\ No newline at end of file
+var _0x5178=['Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','defaultLoginLogo','default_loginLogo.svg','default','securePassword','preferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','now','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','end','status','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','stack','send','index','Setting','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','include','options','find','body','addLogo','file','filename','logo','params','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','favicon','defaultLogo','defaultPreferred','defaultFavicon','existsSync','root','toLower','join','default_logo.svg','upperFirst','custom'];(function(_0x1fc18b,_0x13d27d){var _0x16a351=function(_0x54a799){while(--_0x54a799){_0x1fc18b['push'](_0x1fc18b['shift']());}};_0x16a351(++_0x13d27d);}(_0x5178,0x171));var _0x8517=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x5178[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8517('0x0'));var zipdir=require(_0x8517('0x1'));var jsonpatch=require(_0x8517('0x2'));var rp=require(_0x8517('0x3'));var moment=require(_0x8517('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8517('0x5'));var path=require(_0x8517('0x6'));var sox=require('sox');var csv=require(_0x8517('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8517('0x8'));var _=require(_0x8517('0x9'));var squel=require(_0x8517('0xa'));var crypto=require(_0x8517('0xb'));var jsforce=require(_0x8517('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8517('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8517('0xd'));var authService=require(_0x8517('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x8517('0xf'));var hardwareService=require(_0x8517('0x10'));var logger=require(_0x8517('0x11'))(_0x8517('0x12'));var utils=require(_0x8517('0x13'));var config=require(_0x8517('0x14'));var licenseUtil=require(_0x8517('0x15'));var db=require(_0x8517('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x8517('0x17')][_0x8517('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x268128,_0x170214,_0x284a05,_0x49eba7){return new BPromise(function(_0x385219,_0x19dd9d){var _0x126e0b=_0x49eba7||client;return _0x126e0b[_0x8517('0x19')](_0x268128,_0x284a05)[_0x8517('0x1a')](function(_0x18a984){logger[_0x8517('0x1b')](_0x8517('0x1c'),_0x170214,_0x8517('0x1d'));logger[_0x8517('0x1e')](_0x8517('0x1f'),_0x170214,_0x8517('0x1d'),JSON['stringify'](_0x18a984));if(_0x18a984[_0x8517('0x20')]){if(_0x18a984[_0x8517('0x20')][_0x8517('0x21')]===0x1f4){logger[_0x8517('0x20')](_0x8517('0x1c'),_0x170214,_0x18a984[_0x8517('0x20')][_0x8517('0x22')]);return _0x19dd9d(_0x18a984['error'][_0x8517('0x22')]);}logger['error']('Setting,\x20%s,\x20%s',_0x170214,_0x18a984[_0x8517('0x20')][_0x8517('0x22')]);return _0x385219(_0x18a984[_0x8517('0x20')][_0x8517('0x22')]);}else{logger[_0x8517('0x1b')](_0x8517('0x1c'),_0x170214,'request\x20sent');_0x385219(_0x18a984['result'][_0x8517('0x22')]);}})[_0x8517('0x23')](function(_0x2c594f){logger[_0x8517('0x20')](_0x8517('0x1c'),_0x170214,_0x2c594f);_0x19dd9d(_0x2c594f);});});}function respondWithStatusCode(_0x2e6e47,_0x5f02ee){_0x5f02ee=_0x5f02ee||0xcc;return function(_0x181500){if(_0x181500){return _0x2e6e47[_0x8517('0x24')](_0x5f02ee);}return _0x2e6e47['status'](_0x5f02ee)[_0x8517('0x25')]();};}function respondWithResult(_0x2febd5,_0x42c779){_0x42c779=_0x42c779||0xc8;return function(_0x5492f6){if(_0x5492f6){return _0x2febd5[_0x8517('0x26')](_0x42c779)['json'](_0x5492f6);}};}function respondWithFilteredResult(_0x2880b6,_0x2a2b7e){return function(_0x448211){if(_0x448211){var _0x2b0c19=typeof _0x2a2b7e[_0x8517('0x27')]===_0x8517('0x28')&&typeof _0x2a2b7e['limit']===_0x8517('0x28');var _0x51d516=_0x448211[_0x8517('0x29')];var _0x70ee9d=_0x2b0c19?0x0:_0x2a2b7e[_0x8517('0x27')];var _0x355aa6=_0x2b0c19?_0x448211[_0x8517('0x29')]:_0x2a2b7e[_0x8517('0x27')]+_0x2a2b7e['limit'];var _0x20ec0a;if(_0x355aa6>=_0x51d516){_0x355aa6=_0x51d516;_0x20ec0a=0xc8;}else{_0x20ec0a=0xce;}_0x2880b6['status'](_0x20ec0a);return _0x2880b6[_0x8517('0x2a')](_0x8517('0x2b'),_0x70ee9d+'-'+_0x355aa6+'/'+_0x51d516)[_0x8517('0x2c')](_0x448211);}return null;};}function patchUpdates(_0x2d360c){return function(_0x3cf945){try{jsonpatch[_0x8517('0x2d')](_0x3cf945,_0x2d360c,!![]);}catch(_0x273b27){return BPromise[_0x8517('0x2e')](_0x273b27);}return _0x3cf945[_0x8517('0x2f')]();};}function saveUpdates(_0x559707,_0x3e8f81){return function(_0x1031b3){if(_0x1031b3){return _0x1031b3[_0x8517('0x30')](_0x559707)['then'](function(_0x5db173){return _0x5db173;});}return null;};}function removeEntity(_0x5cb78c,_0x25eb4c){return function(_0x4102b4){if(_0x4102b4){return _0x4102b4[_0x8517('0x31')]()[_0x8517('0x1a')](function(){_0x5cb78c[_0x8517('0x26')](0xcc)[_0x8517('0x25')]();});}};}function handleEntityNotFound(_0x5d9d04,_0x19dd26){return function(_0x234da4){if(!_0x234da4){_0x5d9d04[_0x8517('0x24')](0x194);}return _0x234da4;};}function handleError(_0x55785d,_0x43290c){_0x43290c=_0x43290c||0x1f4;return function(_0x5756d7){logger[_0x8517('0x20')](_0x5756d7[_0x8517('0x32')]);if(_0x5756d7['name']){delete _0x5756d7['name'];}_0x55785d[_0x8517('0x26')](_0x43290c)[_0x8517('0x33')](_0x5756d7);};}exports[_0x8517('0x34')]=function(_0x67c412,_0x4f93bd){var _0x5b1d34={},_0x2cb889={},_0x11a1b3={'count':0x0,'rows':[]};var _0x1835ac=_['map'](db[_0x8517('0x35')][_0x8517('0x36')],function(_0x4afa5b){return{'name':_0x4afa5b[_0x8517('0x37')],'type':_0x4afa5b[_0x8517('0x38')][_0x8517('0x39')]};});_0x2cb889[_0x8517('0x3a')]=_['map'](_0x1835ac,_0x8517('0x3b'));_0x2cb889[_0x8517('0x3c')]=_[_0x8517('0x3d')](_0x67c412[_0x8517('0x3c')]);_0x2cb889[_0x8517('0x3e')]=_[_0x8517('0x3f')](_0x2cb889[_0x8517('0x3a')],_0x2cb889[_0x8517('0x3c')]);_0x5b1d34[_0x8517('0x40')]=_[_0x8517('0x3f')](_0x2cb889[_0x8517('0x3a')],qs[_0x8517('0x41')](_0x67c412[_0x8517('0x3c')]['fields']));_0x5b1d34['attributes']=_0x5b1d34[_0x8517('0x40')][_0x8517('0x42')]?_0x5b1d34[_0x8517('0x40')]:_0x2cb889[_0x8517('0x3a')];if(!_0x67c412[_0x8517('0x3c')]['hasOwnProperty'](_0x8517('0x43'))){_0x5b1d34[_0x8517('0x44')]=qs['limit'](_0x67c412[_0x8517('0x3c')][_0x8517('0x44')]);_0x5b1d34[_0x8517('0x27')]=qs[_0x8517('0x27')](_0x67c412['query'][_0x8517('0x27')]);}_0x5b1d34[_0x8517('0x45')]=qs['sort'](_0x67c412[_0x8517('0x3c')][_0x8517('0x46')]);_0x5b1d34[_0x8517('0x47')]=qs['filters'](_[_0x8517('0x48')](_0x67c412[_0x8517('0x3c')],_0x2cb889[_0x8517('0x3e')]),_0x1835ac);if(_0x67c412[_0x8517('0x3c')][_0x8517('0x49')]){_0x5b1d34[_0x8517('0x47')]=_[_0x8517('0x4a')](_0x5b1d34['where'],{'$or':_[_0x8517('0x4b')](_0x1835ac,function(_0x1ea1fb){if(_0x1ea1fb['type']!==_0x8517('0x4c')){var _0x200a14={};_0x200a14[_0x1ea1fb[_0x8517('0x3b')]]={'$like':'%'+_0x67c412[_0x8517('0x3c')][_0x8517('0x49')]+'%'};return _0x200a14;}})});}_0x5b1d34=_[_0x8517('0x4a')]({},_0x5b1d34,_0x67c412['options']);var _0xad2c85={'where':_0x5b1d34[_0x8517('0x47')]};return db[_0x8517('0x35')]['count'](_0xad2c85)[_0x8517('0x1a')](function(_0x197480){_0x11a1b3['count']=_0x197480;if(_0x67c412[_0x8517('0x3c')][_0x8517('0x4d')]){_0x5b1d34['include']=[{'all':!![]}];}return db['Setting']['findAll'](_0x5b1d34);})[_0x8517('0x1a')](function(_0x250a14){_0x11a1b3['rows']=_0x250a14;return _0x11a1b3;})[_0x8517('0x1a')](respondWithFilteredResult(_0x4f93bd,_0x5b1d34))['catch'](handleError(_0x4f93bd,null));};exports['show']=function(_0x691afe,_0x2eae3f){var _0x3c8ecb={'raw':![],'where':{'id':_0x691afe['params']['id']}},_0x6c2607={};_0x6c2607[_0x8517('0x3a')]=_[_0x8517('0x3d')](db[_0x8517('0x35')]['rawAttributes']);_0x6c2607[_0x8517('0x3c')]=_[_0x8517('0x3d')](_0x691afe[_0x8517('0x3c')]);_0x6c2607[_0x8517('0x3e')]=_[_0x8517('0x3f')](_0x6c2607[_0x8517('0x3a')],_0x6c2607[_0x8517('0x3c')]);_0x3c8ecb['attributes']=_[_0x8517('0x3f')](_0x6c2607['model'],qs['fields'](_0x691afe[_0x8517('0x3c')][_0x8517('0x41')]));_0x3c8ecb[_0x8517('0x40')]=_0x3c8ecb[_0x8517('0x40')]['length']?_0x3c8ecb[_0x8517('0x40')]:_0x6c2607[_0x8517('0x3a')];if(_0x691afe['query']['includeAll']){_0x3c8ecb[_0x8517('0x4e')]=[{'all':!![]}];}_0x3c8ecb=_[_0x8517('0x4a')]({},_0x3c8ecb,_0x691afe[_0x8517('0x4f')]);return db['Setting'][_0x8517('0x50')](_0x3c8ecb)['then'](handleEntityNotFound(_0x2eae3f,null))[_0x8517('0x1a')](respondWithResult(_0x2eae3f,null))[_0x8517('0x23')](handleError(_0x2eae3f,null));};exports[_0x8517('0x30')]=function(_0x58c98b,_0x2a2cac){if(_0x58c98b[_0x8517('0x51')]['id']){delete _0x58c98b[_0x8517('0x51')]['id'];}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x58c98b['params']['id']}})['then'](handleEntityNotFound(_0x2a2cac,null))[_0x8517('0x1a')](saveUpdates(_0x58c98b[_0x8517('0x51')],null))[_0x8517('0x1a')](respondWithResult(_0x2a2cac,null))['catch'](handleError(_0x2a2cac,null));};exports[_0x8517('0x52')]=function(_0x1ce476,_0x445f9b,_0x4cc9e2){if(_0x1ce476['file']&&_0x1ce476[_0x8517('0x53')][_0x8517('0x54')]){_0x1ce476[_0x8517('0x51')][_0x8517('0x55')]=_0x1ce476[_0x8517('0x53')][_0x8517('0x54')];}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x1ce476[_0x8517('0x56')]['id']}})[_0x8517('0x1a')](handleEntityNotFound(_0x445f9b,null))[_0x8517('0x1a')](saveUpdates(_0x1ce476[_0x8517('0x51')],null))[_0x8517('0x1a')](respondWithResult(_0x445f9b,null))[_0x8517('0x23')](handleError(_0x445f9b,null));};exports[_0x8517('0x57')]=function(_0x46e6bb,_0x5c3932,_0x2d1352){if(_0x46e6bb[_0x8517('0x53')]&&_0x46e6bb[_0x8517('0x53')][_0x8517('0x54')]){_0x46e6bb[_0x8517('0x51')][_0x8517('0x58')]=_0x46e6bb[_0x8517('0x53')]['filename'];}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x46e6bb[_0x8517('0x56')]['id']}})[_0x8517('0x1a')](handleEntityNotFound(_0x5c3932,null))[_0x8517('0x1a')](saveUpdates(_0x46e6bb['body'],null))[_0x8517('0x1a')](respondWithResult(_0x5c3932,null))['catch'](handleError(_0x5c3932,null));};var utilLicense=require(_0x8517('0x15'));exports[_0x8517('0x59')]=function(_0x4147cf,_0x320dc4,_0x2351a9){var _0x56b659=_0x8517('0x5a');var _0x31928a={'custom':![]};return utilLicense[_0x8517('0x5b')]()[_0x8517('0x1a')](function(_0x575d0d){if(_0x575d0d){_0x31928a=_0x575d0d;}return db['Setting'][_0x8517('0x50')]({'where':{'id':_0x4147cf['params']['id']},'attributes':[_0x8517('0x55'),_0x8517('0x58'),'preferred',_0x8517('0x5c'),_0x8517('0x5d'),'defaultLoginLogo',_0x8517('0x5e'),_0x8517('0x5f')],'raw':!![]});})[_0x8517('0x1a')](handleEntityNotFound(_0x320dc4,null))[_0x8517('0x1a')](function(_0x836e5d){if(_0x836e5d){var _0x30260f=_0x836e5d[_0x8517('0x55')]&&fs[_0x8517('0x60')](path['join'](config[_0x8517('0x61')],_0x56b659,_[_0x8517('0x62')](_0x836e5d[_0x8517('0x55')])))?path[_0x8517('0x63')](config['root'],_0x56b659,_[_0x8517('0x62')](_0x836e5d['logo'])):path[_0x8517('0x63')](config[_0x8517('0x61')],_0x56b659,_[_0x8517('0x62')](_0x8517('0x64')));var _0x52af58='default'+_[_0x8517('0x65')](_0x8517('0x55'));if(_0x836e5d[_0x52af58]||!_0x31928a[_0x8517('0x66')]){_0x30260f=path[_0x8517('0x63')](config['root'],_0x56b659,_[_0x8517('0x62')](_0x8517('0x64')));}if(!fs[_0x8517('0x60')](_0x30260f)){throw new db[(_0x8517('0x67'))][(_0x8517('0x68'))](_[_0x8517('0x65')](_0x8517('0x55'))+_0x8517('0x69'));}return _0x320dc4[_0x8517('0x6a')](_0x30260f);}})[_0x8517('0x23')](handleError(_0x320dc4,null));};var utilLicense=require('../../config/license/util');exports[_0x8517('0x6b')]=function(_0x1afe9c,_0x121098,_0x512a09){var _0x7dfd74='server/files/images/logos';var _0x2a3d87={'custom':![]};return utilLicense[_0x8517('0x5b')]()['then'](function(_0x2504d3){if(_0x2504d3){_0x2a3d87=_0x2504d3;}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x1afe9c[_0x8517('0x56')]['id']},'attributes':[_0x8517('0x55'),_0x8517('0x58'),'preferred',_0x8517('0x5c'),'defaultLogo',_0x8517('0x6c'),_0x8517('0x5e'),_0x8517('0x5f')],'raw':!![]});})[_0x8517('0x1a')](handleEntityNotFound(_0x121098,null))['then'](function(_0x27dbe1){if(_0x27dbe1){var _0x670690=_0x27dbe1[_0x8517('0x58')]&&fs['existsSync'](path[_0x8517('0x63')](config[_0x8517('0x61')],_0x7dfd74,_[_0x8517('0x62')](_0x27dbe1[_0x8517('0x58')])))?path[_0x8517('0x63')](config[_0x8517('0x61')],_0x7dfd74,_[_0x8517('0x62')](_0x27dbe1['loginLogo'])):path[_0x8517('0x63')](config['root'],_0x7dfd74,_['toLower'](_0x8517('0x6d')));var _0x426bfa=_0x8517('0x6e')+_['upperFirst'](_0x8517('0x58'));if(_0x27dbe1[_0x426bfa]||!_0x2a3d87[_0x8517('0x66')]){_0x670690=path['join'](config[_0x8517('0x61')],_0x7dfd74,_['toLower']('default_loginLogo.svg'));}if(!fs[_0x8517('0x60')](_0x670690)){throw new db[(_0x8517('0x67'))][(_0x8517('0x68'))](_[_0x8517('0x65')](_0x8517('0x58'))+'\x20not\x20found');}return _0x121098[_0x8517('0x6a')](_0x670690);}})[_0x8517('0x23')](handleError(_0x121098,null));};exports['gdpr']=function(_0x5cc40c,_0x2e7412){return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x5cc40c[_0x8517('0x56')]['id']},'attributes':[_0x8517('0x6f')]})[_0x8517('0x1a')](respondWithResult(_0x2e7412,null))['catch'](handleError(_0x2e7412,null));};exports['addPreferred']=function(_0x20e21a,_0x1c0cfc,_0x5f53da){if(_0x20e21a[_0x8517('0x53')]&&_0x20e21a[_0x8517('0x53')]['filename']){_0x20e21a[_0x8517('0x51')][_0x8517('0x70')]=_0x20e21a[_0x8517('0x53')]['filename'];}return db['Setting'][_0x8517('0x50')]({'where':{'id':_0x20e21a[_0x8517('0x56')]['id']}})[_0x8517('0x1a')](handleEntityNotFound(_0x1c0cfc,null))[_0x8517('0x1a')](saveUpdates(_0x20e21a[_0x8517('0x51')],null))['then'](respondWithResult(_0x1c0cfc,null))[_0x8517('0x23')](handleError(_0x1c0cfc,null));};var utilLicense=require(_0x8517('0x15'));exports['getPreferred']=function(_0x2c070b,_0x467832,_0x1da121){var _0x330c55=_0x8517('0x5a');var _0x276be5={'custom':![]};return utilLicense[_0x8517('0x5b')]()[_0x8517('0x1a')](function(_0x2df2e5){if(_0x2df2e5){_0x276be5=_0x2df2e5;}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x2c070b[_0x8517('0x56')]['id']},'attributes':[_0x8517('0x55'),_0x8517('0x58'),_0x8517('0x70'),_0x8517('0x5c'),_0x8517('0x5d'),_0x8517('0x6c'),_0x8517('0x5e'),'defaultFavicon'],'raw':!![]});})[_0x8517('0x1a')](handleEntityNotFound(_0x467832,null))[_0x8517('0x1a')](function(_0x41b3ea){if(_0x41b3ea){var _0x2baa2b=_0x41b3ea[_0x8517('0x70')]&&fs[_0x8517('0x60')](path[_0x8517('0x63')](config['root'],_0x330c55,_[_0x8517('0x62')](_0x41b3ea[_0x8517('0x70')])))?path[_0x8517('0x63')](config[_0x8517('0x61')],_0x330c55,_[_0x8517('0x62')](_0x41b3ea[_0x8517('0x70')])):path['join'](config[_0x8517('0x61')],_0x330c55,_[_0x8517('0x62')](_0x8517('0x71')));var _0x11e004=_0x8517('0x6e')+_['upperFirst'](_0x8517('0x70'));if(_0x41b3ea[_0x11e004]||!_0x276be5[_0x8517('0x66')]||!_0x276be5[_0x8517('0x70')]){_0x2baa2b=path[_0x8517('0x63')](config['root'],_0x330c55,_[_0x8517('0x62')]('default_preferred.png'));}if(!fs[_0x8517('0x60')](_0x2baa2b)){throw new db[(_0x8517('0x67'))][(_0x8517('0x68'))](_[_0x8517('0x65')](_0x8517('0x70'))+_0x8517('0x69'));}return _0x467832[_0x8517('0x6a')](_0x2baa2b);}})[_0x8517('0x23')](handleError(_0x467832,null));};exports[_0x8517('0x72')]=function(_0x4b958e,_0x20f01c,_0x23445b){if(_0x4b958e[_0x8517('0x53')]&&_0x4b958e[_0x8517('0x53')]['filename']){_0x4b958e[_0x8517('0x51')][_0x8517('0x5c')]=_0x4b958e[_0x8517('0x53')][_0x8517('0x54')];}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x4b958e[_0x8517('0x56')]['id']}})[_0x8517('0x1a')](handleEntityNotFound(_0x20f01c,null))[_0x8517('0x1a')](saveUpdates(_0x4b958e[_0x8517('0x51')],null))[_0x8517('0x1a')](respondWithResult(_0x20f01c,null))[_0x8517('0x23')](handleError(_0x20f01c,null));};var utilLicense=require('../../config/license/util');exports[_0x8517('0x73')]=function(_0xd6a27e,_0x4b6176,_0x35ccd0){var _0x26f366='server/files/images/logos';var _0x5df022={'custom':![]};return utilLicense['getLicense']()[_0x8517('0x1a')](function(_0x532cec){if(_0x532cec){_0x5df022=_0x532cec;}return db[_0x8517('0x35')]['find']({'where':{'id':_0xd6a27e[_0x8517('0x56')]['id']},'attributes':['logo',_0x8517('0x58'),'preferred',_0x8517('0x5c'),_0x8517('0x5d'),'defaultLoginLogo',_0x8517('0x5e'),_0x8517('0x5f')],'raw':!![]});})[_0x8517('0x1a')](handleEntityNotFound(_0x4b6176,null))[_0x8517('0x1a')](function(_0x327a31){if(_0x327a31){var _0x47db8d=_0x327a31['favicon']&&fs['existsSync'](path[_0x8517('0x63')](config[_0x8517('0x61')],_0x26f366,_[_0x8517('0x62')](_0x327a31[_0x8517('0x5c')])))?path['join'](config['root'],_0x26f366,_[_0x8517('0x62')](_0x327a31[_0x8517('0x5c')])):path['join'](config[_0x8517('0x61')],_0x26f366,_[_0x8517('0x62')](_0x8517('0x74')));var _0x327ef9='default'+_[_0x8517('0x65')](_0x8517('0x5c'));if(_0x327a31[_0x327ef9]||!_0x5df022[_0x8517('0x66')]){_0x47db8d=path[_0x8517('0x63')](config[_0x8517('0x61')],_0x26f366,_[_0x8517('0x62')]('default_favicon.ico'));}if(!fs[_0x8517('0x60')](_0x47db8d)){throw new db[(_0x8517('0x67'))][(_0x8517('0x68'))](_[_0x8517('0x65')](_0x8517('0x5c'))+'\x20not\x20found');}return _0x4b6176[_0x8517('0x6a')](_0x47db8d);}})[_0x8517('0x23')](handleError(_0x4b6176,null));};exports['getDate']=function(_0x179c2e,_0x33caf4){var _0x428756={'offset':moment()['utcOffset']()};_0x428756[_0x8517('0x75')]=moment()['utcOffset'](_0x428756[_0x8517('0x27')])['format']('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x33caf4[_0x8517('0x26')](0xc8)[_0x8517('0x33')](_0x428756);};
\ No newline at end of file
index 672c68c..698457b 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(_0x49fcfb,_0x504dec){var _0x964926=function(_0x327977){while(--_0x327977){_0x49fcfb['push'](_0x49fcfb['shift']());}};_0x964926(++_0x504dec);}(_0x55ca,0x126));var _0xa55c=function(_0x1875c8,_0x4e5f7a){_0x1875c8=_0x1875c8-0x0;var _0x28ed91=_0x55ca[_0x1875c8];return _0x28ed91;};'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 _0x9957=['exports','define','Setting','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./setting.attributes'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d9aceb6..2a5ea1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d86=['lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','Setting,\x20%s,\x20%s','ShowSetting','Setting','find','options','raw','where','attributes','include','map','model','debug','catch'];(function(_0x117282,_0x46f977){var _0x1729af=function(_0x578742){while(--_0x578742){_0x117282['push'](_0x117282['shift']());}};_0x1729af(++_0x46f977);}(_0x2d86,0x1c0));var _0x62d8=function(_0x27e811,_0x20137c){_0x27e811=_0x27e811-0x0;var _0x1627fa=_0x2d86[_0x27e811];return _0x1627fa;};'use strict';var _=require(_0x62d8('0x0'));var util=require(_0x62d8('0x1'));var moment=require(_0x62d8('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x62d8('0x3'));var db=require(_0x62d8('0x4'))['db'];var utils=require(_0x62d8('0x5'));var logger=require('../../config/logger')(_0x62d8('0x6'));var config=require(_0x62d8('0x7'));var jayson=require(_0x62d8('0x8'));var client=jayson[_0x62d8('0x9')][_0x62d8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3d8705,_0x40b6d2,_0x6b424f){return new BPromise(function(_0x5410a3,_0x53af5f){return client[_0x62d8('0xb')](_0x3d8705,_0x6b424f)[_0x62d8('0xc')](function(_0x373b8d){logger[_0x62d8('0xd')]('Setting,\x20%s,\x20%s',_0x40b6d2,'request\x20sent');logger['debug'](_0x62d8('0xe'),_0x40b6d2,_0x62d8('0xf'),JSON['stringify'](_0x373b8d));if(_0x373b8d[_0x62d8('0x10')]){if(_0x373b8d[_0x62d8('0x10')][_0x62d8('0x11')]===0x1f4){logger[_0x62d8('0x10')]('Setting,\x20%s,\x20%s',_0x40b6d2,_0x373b8d[_0x62d8('0x10')][_0x62d8('0x12')]);return _0x53af5f(_0x373b8d['error'][_0x62d8('0x12')]);}logger[_0x62d8('0x10')](_0x62d8('0x13'),_0x40b6d2,_0x373b8d[_0x62d8('0x10')][_0x62d8('0x12')]);return _0x5410a3(_0x373b8d[_0x62d8('0x10')]['message']);}else{logger['info'](_0x62d8('0x13'),_0x40b6d2,'request\x20sent');_0x5410a3(_0x373b8d['result'][_0x62d8('0x12')]);}})['catch'](function(_0x3b0395){logger[_0x62d8('0x10')](_0x62d8('0x13'),_0x40b6d2,_0x3b0395);_0x53af5f(_0x3b0395);});});}exports[_0x62d8('0x14')]=function(_0x4f3853){var _0x5b809e=this;return new Promise(function(_0x57b7cc,_0x2dd9c6){return db[_0x62d8('0x15')][_0x62d8('0x16')]({'raw':_0x4f3853[_0x62d8('0x17')]?_0x4f3853[_0x62d8('0x17')][_0x62d8('0x18')]===undefined?!![]:![]:!![],'where':_0x4f3853[_0x62d8('0x17')]?_0x4f3853[_0x62d8('0x17')][_0x62d8('0x19')]||null:null,'attributes':_0x4f3853[_0x62d8('0x17')]?_0x4f3853['options'][_0x62d8('0x1a')]||null:null,'include':_0x4f3853['options']?_0x4f3853[_0x62d8('0x17')][_0x62d8('0x1b')]?_[_0x62d8('0x1c')](_0x4f3853[_0x62d8('0x17')]['include'],function(_0x68160f){return{'model':db[_0x68160f['model']],'as':_0x68160f['as'],'attributes':_0x68160f[_0x62d8('0x1a')],'include':_0x68160f[_0x62d8('0x1b')]?_[_0x62d8('0x1c')](_0x68160f[_0x62d8('0x1b')],function(_0x18c702){return{'model':db[_0x18c702[_0x62d8('0x1d')]],'as':_0x18c702['as'],'attributes':_0x18c702[_0x62d8('0x1a')],'include':_0x18c702[_0x62d8('0x1b')]?_[_0x62d8('0x1c')](_0x18c702['include'],function(_0x1e7e23){return{'model':db[_0x1e7e23[_0x62d8('0x1d')]],'as':_0x1e7e23['as'],'attributes':_0x1e7e23[_0x62d8('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x20100f){logger['info'](_0x62d8('0x14'),_0x4f3853);logger[_0x62d8('0x1e')](_0x62d8('0x14'),_0x4f3853,JSON['stringify'](_0x20100f));_0x57b7cc(_0x20100f);})[_0x62d8('0x1f')](function(_0x5358fb){logger['error'](_0x62d8('0x14'),_0x5358fb[_0x62d8('0x12')],_0x4f3853);_0x2dd9c6(_0x5b809e[_0x62d8('0x10')](0x1f4,_0x5358fb['message']));});});};
\ No newline at end of file
+var _0xb31a=['map','model','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','Setting,\x20%s,\x20%s','message','result','ShowSetting','find','options','raw','where','attributes','include'];(function(_0x126b6a,_0x32497d){var _0x46f222=function(_0x429cb1){while(--_0x429cb1){_0x126b6a['push'](_0x126b6a['shift']());}};_0x46f222(++_0x32497d);}(_0xb31a,0x123));var _0xab31=function(_0x51351a,_0x566a25){_0x51351a=_0x51351a-0x0;var _0x27999d=_0xb31a[_0x51351a];return _0x27999d;};'use strict';var _=require(_0xab31('0x0'));var util=require(_0xab31('0x1'));var moment=require(_0xab31('0x2'));var BPromise=require('bluebird');var rs=require(_0xab31('0x3'));var fs=require('fs');var Redis=require(_0xab31('0x4'));var db=require(_0xab31('0x5'))['db'];var utils=require(_0xab31('0x6'));var logger=require('../../config/logger')(_0xab31('0x7'));var config=require('../../config/environment');var jayson=require(_0xab31('0x8'));var client=jayson[_0xab31('0x9')][_0xab31('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x436727,_0x2ca1eb,_0x38c346){return new BPromise(function(_0x1d9279,_0x513c16){return client[_0xab31('0xb')](_0x436727,_0x38c346)[_0xab31('0xc')](function(_0x43dec5){logger[_0xab31('0xd')]('Setting,\x20%s,\x20%s',_0x2ca1eb,_0xab31('0xe'));logger[_0xab31('0xf')]('Setting,\x20%s,\x20%s,\x20%s',_0x2ca1eb,_0xab31('0xe'),JSON[_0xab31('0x10')](_0x43dec5));if(_0x43dec5[_0xab31('0x11')]){if(_0x43dec5[_0xab31('0x11')][_0xab31('0x12')]===0x1f4){logger['error'](_0xab31('0x13'),_0x2ca1eb,_0x43dec5[_0xab31('0x11')]['message']);return _0x513c16(_0x43dec5[_0xab31('0x11')]['message']);}logger['error'](_0xab31('0x13'),_0x2ca1eb,_0x43dec5[_0xab31('0x11')][_0xab31('0x14')]);return _0x1d9279(_0x43dec5[_0xab31('0x11')][_0xab31('0x14')]);}else{logger[_0xab31('0xd')](_0xab31('0x13'),_0x2ca1eb,_0xab31('0xe'));_0x1d9279(_0x43dec5[_0xab31('0x15')][_0xab31('0x14')]);}})['catch'](function(_0x589e61){logger[_0xab31('0x11')](_0xab31('0x13'),_0x2ca1eb,_0x589e61);_0x513c16(_0x589e61);});});}exports[_0xab31('0x16')]=function(_0x5ca4a7){var _0x19a144=this;return new Promise(function(_0x359777,_0x3ac60c){return db['Setting'][_0xab31('0x17')]({'raw':_0x5ca4a7[_0xab31('0x18')]?_0x5ca4a7[_0xab31('0x18')][_0xab31('0x19')]===undefined?!![]:![]:!![],'where':_0x5ca4a7[_0xab31('0x18')]?_0x5ca4a7[_0xab31('0x18')][_0xab31('0x1a')]||null:null,'attributes':_0x5ca4a7[_0xab31('0x18')]?_0x5ca4a7[_0xab31('0x18')][_0xab31('0x1b')]||null:null,'include':_0x5ca4a7[_0xab31('0x18')]?_0x5ca4a7['options'][_0xab31('0x1c')]?_[_0xab31('0x1d')](_0x5ca4a7[_0xab31('0x18')][_0xab31('0x1c')],function(_0x351585){return{'model':db[_0x351585[_0xab31('0x1e')]],'as':_0x351585['as'],'attributes':_0x351585[_0xab31('0x1b')],'include':_0x351585[_0xab31('0x1c')]?_[_0xab31('0x1d')](_0x351585['include'],function(_0x5885b2){return{'model':db[_0x5885b2[_0xab31('0x1e')]],'as':_0x5885b2['as'],'attributes':_0x5885b2[_0xab31('0x1b')],'include':_0x5885b2[_0xab31('0x1c')]?_[_0xab31('0x1d')](_0x5885b2[_0xab31('0x1c')],function(_0x4c599f){return{'model':db[_0x4c599f[_0xab31('0x1e')]],'as':_0x4c599f['as'],'attributes':_0x4c599f[_0xab31('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3e228b){logger[_0xab31('0xd')](_0xab31('0x16'),_0x5ca4a7);logger[_0xab31('0xf')]('ShowSetting',_0x5ca4a7,JSON[_0xab31('0x10')](_0x3e228b));_0x359777(_0x3e228b);})[_0xab31('0x1f')](function(_0x5d8d1f){logger[_0xab31('0x11')](_0xab31('0x16'),_0x5d8d1f[_0xab31('0x14')],_0x5ca4a7);_0x3ac60c(_0x19a144[_0xab31('0x11')](0x1f4,_0x5d8d1f['message']));});});};
\ No newline at end of file
index 9ee7a97..09dc400 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['getInteractions','statusGet','/:id/users','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/status','status','addAgents','/:id','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications','/:id/interactions'];(function(_0x525370,_0x5abe18){var _0x4a1ae9=function(_0x257f97){while(--_0x257f97){_0x525370['push'](_0x525370['shift']());}};_0x4a1ae9(++_0x5abe18);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/canned_answers',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x9')](_0x7995('0x14'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router['get']('/:id/status',controller[_0x7995('0x16')]);router[_0x7995('0x9')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x1a')]);router['post'](_0x7995('0xf'),auth['isAuthenticated'](),controller[_0x7995('0x1b')]);router[_0x7995('0x19')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router[_0x7995('0x19')]('/:id/notify',controller['notify']);router[_0x7995('0x19')]('/:id/applications',auth['isAuthenticated'](),controller[_0x7995('0x1e')]);router[_0x7995('0x19')]('/:id/send',auth[_0x7995('0xa')](),controller['send']);router['post'](_0x7995('0x1f'),controller[_0x7995('0x20')]);router[_0x7995('0x19')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x21')]);router['put'](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x23')]);router[_0x7995('0x24')](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x25')]);router[_0x7995('0x24')]('/:id/dispositions',auth[_0x7995('0xa')](),controller[_0x7995('0x26')]);router[_0x7995('0x24')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x27')]);router['delete'](_0x7995('0x17'),auth['isAuthenticated'](),controller[_0x7995('0x28')]);module[_0x7995('0x29')]=router;
\ No newline at end of file
+var _0x7a54=['getInteractions','/:id/status','statusGet','/:id/users','post','create','addAnswer','/:id/notify','notify','addApplications','send','status','addAgents','put','/:id','update','delete','destroy','/:id/canned_answers','removeAnswers','removeAgents','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','index','/describe','isAuthenticated','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications'];(function(_0x5660c8,_0x331e2f){var _0x5e456a=function(_0x5c8404){while(--_0x5c8404){_0x5660c8['push'](_0x5660c8['shift']());}};_0x5e456a(++_0x331e2f);}(_0x7a54,0x106));var _0x47a5=function(_0x48ef7f,_0x45b469){_0x48ef7f=_0x48ef7f-0x0;var _0xfde57a=_0x7a54[_0x48ef7f];return _0xfde57a;};'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['describe']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/canned_answers',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x9')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x9')]('/:id/interactions',auth[_0x47a5('0xc')](),controller[_0x47a5('0x12')]);router[_0x47a5('0x9')](_0x47a5('0x13'),controller[_0x47a5('0x14')]);router[_0x47a5('0x9')](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller['getAgents']);router[_0x47a5('0x16')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x17')]);router[_0x47a5('0x16')](_0x47a5('0xd'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x47a5('0x16')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x47a5('0x18')]);router[_0x47a5('0x16')](_0x47a5('0x19'),controller[_0x47a5('0x1a')]);router[_0x47a5('0x16')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x1b')]);router[_0x47a5('0x16')]('/:id/send',auth[_0x47a5('0xc')](),controller[_0x47a5('0x1c')]);router['post'](_0x47a5('0x13'),controller[_0x47a5('0x1d')]);router[_0x47a5('0x16')]('/:id/users',auth[_0x47a5('0xc')](),controller[_0x47a5('0x1e')]);router[_0x47a5('0x1f')](_0x47a5('0x20'),auth['isAuthenticated'](),controller[_0x47a5('0x21')]);router[_0x47a5('0x22')]('/:id',auth[_0x47a5('0xc')](),controller[_0x47a5('0x23')]);router[_0x47a5('0x22')](_0x47a5('0xd'),auth[_0x47a5('0xc')](),controller['removeDispositions']);router['delete'](_0x47a5('0x24'),auth['isAuthenticated'](),controller[_0x47a5('0x25')]);router['delete'](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x26')]);module[_0x47a5('0x27')]=router;
\ No newline at end of file
index 97f5043..3ba4019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb374=['skebby','connectel','clicksend','plivo','clickatell','bandwidth','intelepeer','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','STRING','generate','ENUM','twilio'];(function(_0x377018,_0x177167){var _0x44b8ad=function(_0x150f43){while(--_0x150f43){_0x377018['push'](_0x377018['shift']());}};_0x44b8ad(++_0x177167);}(_0xb374,0x1b3));var _0x4b37=function(_0x45f679,_0x4d3767){_0x45f679=_0x45f679-0x0;var _0x47ce4a=_0xb374[_0x45f679];return _0x47ce4a;};'use strict';var Sequelize=require(_0x4b37('0x0'));var rs=require(_0x4b37('0x1'));module['exports']={'name':{'type':Sequelize[_0x4b37('0x2')],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x4b37('0x3')]();}},'phone':{'type':Sequelize[_0x4b37('0x2')]},'type':{'type':Sequelize[_0x4b37('0x4')](_0x4b37('0x5'),_0x4b37('0x6'),_0x4b37('0x7'),_0x4b37('0x8'),_0x4b37('0x9'),_0x4b37('0xa'),_0x4b37('0xb'),'csc','infobip',_0x4b37('0xc'))},'accountSid':{'type':Sequelize[_0x4b37('0x2')]},'authId':{'type':Sequelize[_0x4b37('0x2')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x4b37('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x4b37('0x2')]},'password':{'type':Sequelize[_0x4b37('0x2')]},'apiKey':{'type':Sequelize[_0x4b37('0x2')]},'applicationId':{'type':Sequelize[_0x4b37('0x2')]},'accountId':{'type':Sequelize[_0x4b37('0x2')]},'senderString':{'type':Sequelize[_0x4b37('0x2')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x4b37('0x2')]},'notificationTemplate':{'type':Sequelize[_0x4b37('0xd')],'defaultValue':function(){return _0x4b37('0xe');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4b37('0xf')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4b37('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x4b37('0xf')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4b37('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4b37('0xf')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4b37('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x4b37('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x4b37('0x11')},'mandatoryDisposition':{'type':Sequelize[_0x4b37('0xf')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x12df5a){if(!_0x12df5a)this[_0x4b37('0x12')](_0x4b37('0x13'),null);this[_0x4b37('0x12')](_0x4b37('0x14'),_0x12df5a);}}};
\ No newline at end of file
+var _0x3ce8=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','ENUM','twilio','connectel','plivo','clickatell','bandwidth','infobip','BOOLEAN','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x1d46d8,_0x11b2d4){var _0x421dfa=function(_0x9f5020){while(--_0x9f5020){_0x1d46d8['push'](_0x1d46d8['shift']());}};_0x421dfa(++_0x11b2d4);}(_0x3ce8,0x1d1));var _0x83ce=function(_0x385dbe,_0x1fbec1){_0x385dbe=_0x385dbe-0x0;var _0x4a6472=_0x3ce8[_0x385dbe];return _0x4a6472;};'use strict';var Sequelize=require(_0x83ce('0x0'));var rs=require(_0x83ce('0x1'));module[_0x83ce('0x2')]={'name':{'type':Sequelize[_0x83ce('0x3')],'unique':_0x83ce('0x4'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x83ce('0x3')],'defaultValue':function(){return rs[_0x83ce('0x5')]();}},'phone':{'type':Sequelize[_0x83ce('0x3')]},'type':{'type':Sequelize[_0x83ce('0x6')](_0x83ce('0x7'),'skebby',_0x83ce('0x8'),'clicksend',_0x83ce('0x9'),_0x83ce('0xa'),_0x83ce('0xb'),'csc',_0x83ce('0xc'),'intelepeer')},'accountSid':{'type':Sequelize[_0x83ce('0x3')]},'authId':{'type':Sequelize[_0x83ce('0x3')]},'authToken':{'type':Sequelize[_0x83ce('0x3')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x83ce('0x3')]},'password':{'type':Sequelize[_0x83ce('0x3')]},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x83ce('0x3')]},'accountId':{'type':Sequelize[_0x83ce('0x3')]},'senderString':{'type':Sequelize[_0x83ce('0x3')]},'deliveryReport':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':![]},'description':{'type':Sequelize[_0x83ce('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x83ce('0xe');}},'notificationSound':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x83ce('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x83ce('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x83ce('0xf')],'comment':_0x83ce('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':![],'comment':_0x83ce('0x11'),'set':function(_0x226d31){if(!_0x226d31)this[_0x83ce('0x12')](_0x83ce('0x13'),null);this[_0x83ce('0x12')](_0x83ce('0x14'),_0x226d31);}}};
\ No newline at end of file
index eba71b2..d91f39d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf064=['pick','VIRTUAL','filter','merge','options','include','findAll','params','Pause','includeAll','create','body','user','role','SmsAccounts','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','update','find','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','nolimit','rows','removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','sms','SmsApplication','Applications','account','applications','orderBy','priority','CmContact','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','Body','MessageSid','skebby','sender','connectel','clicksend','messageId','message_id','plivo','Text','MessageUUID','infobip','results','text','csc','originatingAddress','segmentedMessage','clickatell','replyMessageId','bandwidth','intelepeer','refid','isNil','from\x20is\x20mandatory','Sequelize','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','omit','contact','SmsInteraction','spread','created','autoclose','push','close','ContactId','AttachmentId','interaction','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','queueId','queue','Start','startRouting','receiveMessage','debug','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','stack','finally','json','getApplications','getInteractions','Contact','User','Owner','internal','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','out','SmsMessage','Messages','dataValues','inspect','skebby_dispatch_id','requestid','statusInt','status_code','DELIVERED','groupName','redif','error_code','RECEIVED_BY_RECIPIENT','message-delivered','ACCEPTD','statusGet','received\x20delivery\x20report\x20from','state','message-id','emit','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','socket.io-emitter','./smsAccount.socket','jayson/promise','client','http','request','then','info','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','apply','save','get','destroy','name','send','index','mandatoryDispositionPause','SmsAccount','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','order','sort','where'];(function(_0x17d71e,_0x367d27){var _0x11fe08=function(_0x39c4ad){while(--_0x39c4ad){_0x17d71e['push'](_0x17d71e['shift']());}};_0x11fe08(++_0x367d27);}(_0xf064,0x181));var _0x4f06=function(_0x555069,_0x23d66a){_0x555069=_0x555069-0x0;var _0x100af7=_0xf064[_0x555069];return _0x100af7;};'use strict';var emlformat=require(_0x4f06('0x0'));var rimraf=require(_0x4f06('0x1'));var zipdir=require(_0x4f06('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4f06('0x3'));var moment=require(_0x4f06('0x4'));var BPromise=require(_0x4f06('0x5'));var Mustache=require(_0x4f06('0x6'));var util=require('util');var path=require(_0x4f06('0x7'));var sox=require(_0x4f06('0x8'));var csv=require(_0x4f06('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4f06('0xa'));var squel=require(_0x4f06('0xb'));var crypto=require(_0x4f06('0xc'));var jsforce=require(_0x4f06('0xd'));var deskjs=require(_0x4f06('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4f06('0xf'));var Papa=require(_0x4f06('0x10'));var Redis=require(_0x4f06('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4f06('0x12'));var as=require(_0x4f06('0x13'));var hardwareService=require(_0x4f06('0x14'));var logger=require(_0x4f06('0x15'))('api');var utils=require(_0x4f06('0x16'));var config=require(_0x4f06('0x17'));var licenseUtil=require(_0x4f06('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x4f06('0x19')](config[_0x4f06('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x4f06('0x1b'))(new Redis(config[_0x4f06('0x1a')]));require(_0x4f06('0x1c'))['register'](socket);var jayson=require(_0x4f06('0x1d'));var client=jayson[_0x4f06('0x1e')][_0x4f06('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x1dd32f,_0x3dc1c9,_0xdab307,_0x328071){return new BPromise(function(_0x4b75fd,_0x35b2f1){var _0x4493af=_0x328071||client;return _0x4493af[_0x4f06('0x20')](_0x1dd32f,_0xdab307)[_0x4f06('0x21')](function(_0x56851f){logger[_0x4f06('0x22')]('SmsAccount,\x20%s,\x20%s',_0x3dc1c9,_0x4f06('0x23'));logger['debug'](_0x4f06('0x24'),_0x3dc1c9,_0x4f06('0x23'),JSON[_0x4f06('0x25')](_0x56851f));if(_0x56851f['error']){if(_0x56851f[_0x4f06('0x26')][_0x4f06('0x27')]===0x1f4){logger[_0x4f06('0x26')](_0x4f06('0x28'),_0x3dc1c9,_0x56851f[_0x4f06('0x26')][_0x4f06('0x29')]);return _0x35b2f1(_0x56851f[_0x4f06('0x26')][_0x4f06('0x29')]);}logger[_0x4f06('0x26')](_0x4f06('0x28'),_0x3dc1c9,_0x56851f[_0x4f06('0x26')][_0x4f06('0x29')]);return _0x4b75fd(_0x56851f['error'][_0x4f06('0x29')]);}else{logger[_0x4f06('0x22')](_0x4f06('0x28'),_0x3dc1c9,_0x4f06('0x23'));_0x4b75fd(_0x56851f[_0x4f06('0x2a')][_0x4f06('0x29')]);}})[_0x4f06('0x2b')](function(_0x537cfe){logger[_0x4f06('0x26')](_0x4f06('0x28'),_0x3dc1c9,_0x537cfe);_0x35b2f1(_0x537cfe);});});}function respondWithStatusCode(_0x2eb363,_0x80c2b3){_0x80c2b3=_0x80c2b3||0xcc;return function(_0x4127a){if(_0x4127a){return _0x2eb363[_0x4f06('0x2c')](_0x80c2b3);}return _0x2eb363[_0x4f06('0x2d')](_0x80c2b3)['end']();};}function respondWithResult(_0x359f2d,_0xa2fa69){_0xa2fa69=_0xa2fa69||0xc8;return function(_0x416516){if(_0x416516){return _0x359f2d[_0x4f06('0x2d')](_0xa2fa69)['json'](_0x416516);}};}function respondWithFilteredResult(_0x244273,_0x509df9){return function(_0x572c36){if(_0x572c36){var _0x415e85=typeof _0x509df9[_0x4f06('0x2e')]===_0x4f06('0x2f')&&typeof _0x509df9[_0x4f06('0x30')]===_0x4f06('0x2f');var _0x2a6cee=_0x572c36['count'];var _0x5caec2=_0x415e85?0x0:_0x509df9['offset'];var _0x245306=_0x415e85?_0x572c36[_0x4f06('0x31')]:_0x509df9[_0x4f06('0x2e')]+_0x509df9[_0x4f06('0x30')];var _0x327a69;if(_0x245306>=_0x2a6cee){_0x245306=_0x2a6cee;_0x327a69=0xc8;}else{_0x327a69=0xce;}_0x244273[_0x4f06('0x2d')](_0x327a69);return _0x244273[_0x4f06('0x32')]('Content-Range',_0x5caec2+'-'+_0x245306+'/'+_0x2a6cee)['json'](_0x572c36);}return null;};}function patchUpdates(_0x3812f8){return function(_0x2ca751){try{jsonpatch[_0x4f06('0x33')](_0x2ca751,_0x3812f8,!![]);}catch(_0x32788b){return BPromise['reject'](_0x32788b);}return _0x2ca751[_0x4f06('0x34')]();};}function saveUpdates(_0x52a98c,_0x241ef4){return function(_0x102a48){if(_0x102a48){return _0x102a48['update'](_0x52a98c)[_0x4f06('0x21')](function(_0x9bfb9b){return _0x9bfb9b;});}return null;};}function removeEntity(_0x411042,_0x2f1764){return function(_0x58c2b9){if(_0x58c2b9){return _0x58c2b9['destroy']()[_0x4f06('0x21')](function(){var _0x110ef6=_0x58c2b9[_0x4f06('0x35')]({'plain':!![]});var _0x1fff01='SmsAccounts';return db['UserProfileResource'][_0x4f06('0x36')]({'where':{'type':_0x1fff01,'resourceId':_0x110ef6['id']}})['then'](function(){return _0x58c2b9;});})[_0x4f06('0x21')](function(){_0x411042[_0x4f06('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ccdf7,_0x5e74c3){return function(_0x8fe7fc){if(!_0x8fe7fc){_0x5ccdf7['sendStatus'](0x194);}return _0x8fe7fc;};}function handleError(_0x22c1dc,_0x3bb34c){_0x3bb34c=_0x3bb34c||0x1f4;return function(_0x1b3cc2){logger['error'](_0x1b3cc2['stack']);if(_0x1b3cc2[_0x4f06('0x37')]){delete _0x1b3cc2[_0x4f06('0x37')];}_0x22c1dc[_0x4f06('0x2d')](_0x3bb34c)[_0x4f06('0x38')](_0x1b3cc2);};}exports[_0x4f06('0x39')]=function(_0x1039f1,_0x1a594e){var _0x2e48be={'include':[{'model':db['Pause'],'as':_0x4f06('0x3a')}]},_0x3f9443={},_0x2d7ac3={'count':0x0,'rows':[]};var _0x5c8129=_['map'](db[_0x4f06('0x3b')][_0x4f06('0x3c')],function(_0x23b868){return{'name':_0x23b868[_0x4f06('0x3d')],'type':_0x23b868[_0x4f06('0x3e')][_0x4f06('0x3f')]};});_0x3f9443[_0x4f06('0x40')]=_[_0x4f06('0x41')](_0x5c8129,_0x4f06('0x37'));_0x3f9443['query']=_[_0x4f06('0x42')](_0x1039f1['query']);_0x3f9443[_0x4f06('0x43')]=_[_0x4f06('0x44')](_0x3f9443[_0x4f06('0x40')],_0x3f9443[_0x4f06('0x45')]);_0x2e48be['attributes']=_['intersection'](_0x3f9443[_0x4f06('0x40')],qs[_0x4f06('0x46')](_0x1039f1[_0x4f06('0x45')][_0x4f06('0x46')]));_0x2e48be[_0x4f06('0x47')]=_0x2e48be[_0x4f06('0x47')][_0x4f06('0x48')]?_0x2e48be[_0x4f06('0x47')]:_0x3f9443['model'];if(!_0x1039f1[_0x4f06('0x45')][_0x4f06('0x49')]('nolimit')){_0x2e48be[_0x4f06('0x30')]=qs['limit'](_0x1039f1[_0x4f06('0x45')]['limit']);_0x2e48be[_0x4f06('0x2e')]=qs['offset'](_0x1039f1['query'][_0x4f06('0x2e')]);}_0x2e48be[_0x4f06('0x4a')]=qs['sort'](_0x1039f1['query'][_0x4f06('0x4b')]);_0x2e48be[_0x4f06('0x4c')]=qs[_0x4f06('0x43')](_[_0x4f06('0x4d')](_0x1039f1[_0x4f06('0x45')],_0x3f9443[_0x4f06('0x43')]),_0x5c8129);if(_0x1039f1[_0x4f06('0x45')]['filter']){_0x2e48be['where']=_['merge'](_0x2e48be[_0x4f06('0x4c')],{'$or':_[_0x4f06('0x41')](_0x5c8129,function(_0x2c88bb){if(_0x2c88bb['type']!==_0x4f06('0x4e')){var _0x24487f={};_0x24487f[_0x2c88bb['name']]={'$like':'%'+_0x1039f1['query'][_0x4f06('0x4f')]+'%'};return _0x24487f;}})});}_0x2e48be=_[_0x4f06('0x50')]({},_0x2e48be,_0x1039f1[_0x4f06('0x51')]);var _0x671aed={'where':_0x2e48be[_0x4f06('0x4c')]};return db[_0x4f06('0x3b')][_0x4f06('0x31')](_0x671aed)[_0x4f06('0x21')](function(_0x4ab450){_0x2d7ac3[_0x4f06('0x31')]=_0x4ab450;if(_0x1039f1[_0x4f06('0x45')]['includeAll']){_0x2e48be[_0x4f06('0x52')]=[{'all':!![]}];}return db[_0x4f06('0x3b')][_0x4f06('0x53')](_0x2e48be);})[_0x4f06('0x21')](function(_0x16f454){_0x2d7ac3['rows']=_0x16f454;return _0x2d7ac3;})['then'](respondWithFilteredResult(_0x1a594e,_0x2e48be))[_0x4f06('0x2b')](handleError(_0x1a594e,null));};exports['show']=function(_0x521e70,_0xce40dd){var _0xbaeed7={'raw':![],'where':{'id':_0x521e70[_0x4f06('0x54')]['id']},'include':[{'model':db[_0x4f06('0x55')],'as':_0x4f06('0x3a')}]},_0x2e840e={};_0x2e840e[_0x4f06('0x40')]=_[_0x4f06('0x42')](db[_0x4f06('0x3b')]['rawAttributes']);_0x2e840e[_0x4f06('0x45')]=_[_0x4f06('0x42')](_0x521e70[_0x4f06('0x45')]);_0x2e840e[_0x4f06('0x43')]=_['intersection'](_0x2e840e[_0x4f06('0x40')],_0x2e840e['query']);_0xbaeed7[_0x4f06('0x47')]=_['intersection'](_0x2e840e[_0x4f06('0x40')],qs[_0x4f06('0x46')](_0x521e70[_0x4f06('0x45')][_0x4f06('0x46')]));_0xbaeed7[_0x4f06('0x47')]=_0xbaeed7[_0x4f06('0x47')][_0x4f06('0x48')]?_0xbaeed7[_0x4f06('0x47')]:_0x2e840e[_0x4f06('0x40')];if(_0x521e70['query'][_0x4f06('0x56')]){_0xbaeed7[_0x4f06('0x52')]=[{'all':!![]}];}_0xbaeed7=_[_0x4f06('0x50')]({},_0xbaeed7,_0x521e70[_0x4f06('0x51')]);return db['SmsAccount']['find'](_0xbaeed7)[_0x4f06('0x21')](handleEntityNotFound(_0xce40dd,null))[_0x4f06('0x21')](respondWithResult(_0xce40dd,null))[_0x4f06('0x2b')](handleError(_0xce40dd,null));};exports['create']=function(_0x16a532,_0x15d213){return db['SmsAccount'][_0x4f06('0x57')](_0x16a532[_0x4f06('0x58')],{})[_0x4f06('0x21')](function(_0x2b8864){var _0x1f08f2=_0x16a532[_0x4f06('0x59')][_0x4f06('0x35')]({'plain':!![]});if(!_0x1f08f2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1f08f2[_0x4f06('0x5a')]===_0x4f06('0x59')){var _0x4df417=_0x2b8864[_0x4f06('0x35')]({'plain':!![]});var _0x2dca75=_0x4f06('0x5b');return db[_0x4f06('0x5c')]['find']({'where':{'name':_0x2dca75,'userProfileId':_0x1f08f2[_0x4f06('0x5d')]},'raw':!![]})[_0x4f06('0x21')](function(_0x55afdc){if(_0x55afdc&&_0x55afdc[_0x4f06('0x5e')]===0x0){return db[_0x4f06('0x5f')]['create']({'name':_0x4df417['name'],'resourceId':_0x4df417['id'],'type':_0x55afdc['name'],'sectionId':_0x55afdc['id']},{})['then'](function(){return _0x2b8864;});}else{return _0x2b8864;}})[_0x4f06('0x2b')](function(_0x5dc770){logger[_0x4f06('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5dc770);throw _0x5dc770;});}return _0x2b8864;})[_0x4f06('0x21')](respondWithResult(_0x15d213,0xc9))[_0x4f06('0x2b')](handleError(_0x15d213,null));};exports[_0x4f06('0x60')]=function(_0x8f1ae6,_0x59ee13){if(_0x8f1ae6['body']['id']){delete _0x8f1ae6[_0x4f06('0x58')]['id'];}return db[_0x4f06('0x3b')][_0x4f06('0x61')]({'where':{'id':_0x8f1ae6[_0x4f06('0x54')]['id']},'include':[{'model':db[_0x4f06('0x55')],'as':_0x4f06('0x3a')}]})[_0x4f06('0x21')](handleEntityNotFound(_0x59ee13,null))[_0x4f06('0x21')](saveUpdates(_0x8f1ae6[_0x4f06('0x58')],null))['then'](respondWithResult(_0x59ee13,null))['catch'](handleError(_0x59ee13,null));};exports[_0x4f06('0x36')]=function(_0x11d944,_0x18a10a){return db[_0x4f06('0x3b')][_0x4f06('0x61')]({'where':{'id':_0x11d944['params']['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x18a10a,null))[_0x4f06('0x21')](removeEntity(_0x18a10a,null))[_0x4f06('0x2b')](handleError(_0x18a10a,null));};exports[_0x4f06('0x62')]=function(_0x13c6f9,_0x5b945b){return db['SmsAccount'][_0x4f06('0x62')]()[_0x4f06('0x21')](respondWithResult(_0x5b945b,null))[_0x4f06('0x2b')](handleError(_0x5b945b,null));};exports[_0x4f06('0x63')]=function(_0x55bf7a,_0x1a0e9c,_0x19d4f8){if(_0x55bf7a[_0x4f06('0x58')]['id']){delete _0x55bf7a[_0x4f06('0x58')]['id'];}return db[_0x4f06('0x3b')][_0x4f06('0x61')]({'where':{'id':_0x55bf7a['params']['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x1a0e9c,null))['then'](function(_0xb3933c){if(_0xb3933c){_0x55bf7a[_0x4f06('0x58')][_0x4f06('0x64')]=_0xb3933c['id'];return db[_0x4f06('0x65')][_0x4f06('0x57')](_0x55bf7a[_0x4f06('0x58')]);}})['then'](respondWithResult(_0x1a0e9c,null))[_0x4f06('0x2b')](handleError(_0x1a0e9c,null));};exports[_0x4f06('0x66')]=function(_0x288b2e,_0x54919b,_0x3de02f){var _0x5ecb2f={'raw':![],'where':{}};var _0x2fbc3f={};var _0x4e9717={'count':0x0,'rows':[]};return db[_0x4f06('0x3b')][_0x4f06('0x67')]({'where':{'id':_0x288b2e[_0x4f06('0x54')]['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x54919b,null))['then'](function(_0x53b364){if(_0x53b364){_0x2fbc3f[_0x4f06('0x40')]=_[_0x4f06('0x42')](db[_0x4f06('0x65')][_0x4f06('0x3c')]);_0x2fbc3f[_0x4f06('0x45')]=_[_0x4f06('0x42')](_0x288b2e[_0x4f06('0x45')]);_0x2fbc3f[_0x4f06('0x43')]=_[_0x4f06('0x44')](_0x2fbc3f[_0x4f06('0x40')],_0x2fbc3f['query']);_0x5ecb2f['attributes']=_[_0x4f06('0x44')](_0x2fbc3f[_0x4f06('0x40')],qs[_0x4f06('0x46')](_0x288b2e[_0x4f06('0x45')][_0x4f06('0x46')]));_0x5ecb2f['attributes']=_0x5ecb2f[_0x4f06('0x47')]['length']?_0x5ecb2f[_0x4f06('0x47')]:_0x2fbc3f['model'];if(!_0x288b2e[_0x4f06('0x45')][_0x4f06('0x49')](_0x4f06('0x68'))){_0x5ecb2f[_0x4f06('0x30')]=qs[_0x4f06('0x30')](_0x288b2e[_0x4f06('0x45')]['limit']);_0x5ecb2f[_0x4f06('0x2e')]=qs['offset'](_0x288b2e[_0x4f06('0x45')][_0x4f06('0x2e')]);}_0x5ecb2f['order']=qs[_0x4f06('0x4b')](_0x288b2e['query']['sort']);_0x5ecb2f[_0x4f06('0x4c')]=qs['filters'](_['pick'](_0x288b2e[_0x4f06('0x45')],_0x2fbc3f[_0x4f06('0x43')]));_0x5ecb2f[_0x4f06('0x4c')][_0x4f06('0x64')]=_0x53b364['id'];if(_0x288b2e[_0x4f06('0x45')][_0x4f06('0x4f')]){_0x5ecb2f['where']=_[_0x4f06('0x50')](_0x5ecb2f[_0x4f06('0x4c')],{'$or':_['map'](_0x5ecb2f['attributes'],function(_0xf18126){var _0x535a80={};_0x535a80[_0xf18126]={'$like':'%'+_0x288b2e[_0x4f06('0x45')]['filter']+'%'};return _0x535a80;})});}_0x5ecb2f=_['merge']({},_0x5ecb2f,_0x288b2e[_0x4f06('0x51')]);return db[_0x4f06('0x65')][_0x4f06('0x31')]({'where':_0x5ecb2f[_0x4f06('0x4c')]})[_0x4f06('0x21')](function(_0x5174f7){_0x4e9717['count']=_0x5174f7;if(_0x288b2e[_0x4f06('0x45')][_0x4f06('0x56')]){_0x5ecb2f[_0x4f06('0x52')]=[{'all':!![]}];}return db[_0x4f06('0x65')][_0x4f06('0x53')](_0x5ecb2f);})[_0x4f06('0x21')](function(_0x2fc7d){_0x4e9717[_0x4f06('0x69')]=_0x2fc7d;return _0x4e9717;});}})[_0x4f06('0x21')](respondWithFilteredResult(_0x54919b,_0x5ecb2f))['catch'](handleError(_0x54919b,null));};exports[_0x4f06('0x6a')]=function(_0x36c3ee,_0x28c152,_0x2ec446){return db[_0x4f06('0x3b')]['find']({'where':{'id':_0x36c3ee[_0x4f06('0x54')]['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x28c152,null))['then'](function(_0x3f3b80){if(_0x3f3b80){return _0x3f3b80[_0x4f06('0x6a')](_0x36c3ee[_0x4f06('0x45')]['ids']);}})[_0x4f06('0x21')](respondWithStatusCode(_0x28c152,null))['catch'](handleError(_0x28c152,null));};exports[_0x4f06('0x6b')]=function(_0x9362b5,_0x4f41cf,_0x709343){if(_0x9362b5[_0x4f06('0x58')]['id']){delete _0x9362b5[_0x4f06('0x58')]['id'];}return db[_0x4f06('0x3b')][_0x4f06('0x61')]({'where':{'id':_0x9362b5[_0x4f06('0x54')]['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x4f41cf,null))['then'](function(_0x3857fc){if(_0x3857fc){_0x9362b5['body'][_0x4f06('0x64')]=_0x3857fc['id'];return db[_0x4f06('0x6c')]['create'](_0x9362b5[_0x4f06('0x58')]);}})[_0x4f06('0x21')](respondWithResult(_0x4f41cf,null))[_0x4f06('0x2b')](handleError(_0x4f41cf,null));};exports['getAnswers']=function(_0x392028,_0x38b7f7,_0x572f83){var _0x213e0e={'raw':![],'where':{}};var _0x27c64a={};var _0x794823={'count':0x0,'rows':[]};return db[_0x4f06('0x3b')][_0x4f06('0x67')]({'where':{'id':_0x392028['params']['id']}})['then'](handleEntityNotFound(_0x38b7f7,null))[_0x4f06('0x21')](function(_0x3ed954){if(_0x3ed954){_0x27c64a[_0x4f06('0x40')]=_[_0x4f06('0x42')](db['CannedAnswer'][_0x4f06('0x3c')]);_0x27c64a[_0x4f06('0x45')]=_[_0x4f06('0x42')](_0x392028['query']);_0x27c64a['filters']=_[_0x4f06('0x44')](_0x27c64a[_0x4f06('0x40')],_0x27c64a['query']);_0x213e0e['attributes']=_[_0x4f06('0x44')](_0x27c64a['model'],qs[_0x4f06('0x46')](_0x392028['query'][_0x4f06('0x46')]));_0x213e0e['attributes']=_0x213e0e[_0x4f06('0x47')][_0x4f06('0x48')]?_0x213e0e[_0x4f06('0x47')]:_0x27c64a[_0x4f06('0x40')];if(!_0x392028[_0x4f06('0x45')][_0x4f06('0x49')](_0x4f06('0x68'))){_0x213e0e[_0x4f06('0x30')]=qs[_0x4f06('0x30')](_0x392028[_0x4f06('0x45')][_0x4f06('0x30')]);_0x213e0e[_0x4f06('0x2e')]=qs[_0x4f06('0x2e')](_0x392028['query'][_0x4f06('0x2e')]);}_0x213e0e[_0x4f06('0x4a')]=qs['sort'](_0x392028[_0x4f06('0x45')][_0x4f06('0x4b')]);_0x213e0e['where']=qs[_0x4f06('0x43')](_[_0x4f06('0x4d')](_0x392028[_0x4f06('0x45')],_0x27c64a[_0x4f06('0x43')]));_0x213e0e[_0x4f06('0x4c')][_0x4f06('0x64')]=_0x3ed954['id'];if(_0x392028['query'][_0x4f06('0x4f')]){_0x213e0e[_0x4f06('0x4c')]=_['merge'](_0x213e0e[_0x4f06('0x4c')],{'$or':_[_0x4f06('0x41')](_0x213e0e[_0x4f06('0x47')],function(_0x141468){var _0x455157={};_0x455157[_0x141468]={'$like':'%'+_0x392028[_0x4f06('0x45')][_0x4f06('0x4f')]+'%'};return _0x455157;})});}_0x213e0e=_[_0x4f06('0x50')]({},_0x213e0e,_0x392028['options']);return db[_0x4f06('0x6c')][_0x4f06('0x31')]({'where':_0x213e0e[_0x4f06('0x4c')]})[_0x4f06('0x21')](function(_0x1f2b76){_0x794823[_0x4f06('0x31')]=_0x1f2b76;if(_0x392028[_0x4f06('0x45')][_0x4f06('0x56')]){_0x213e0e['include']=[{'all':!![]}];}return db[_0x4f06('0x6c')][_0x4f06('0x53')](_0x213e0e);})[_0x4f06('0x21')](function(_0x37b5a8){_0x794823['rows']=_0x37b5a8;return _0x794823;});}})[_0x4f06('0x21')](respondWithFilteredResult(_0x38b7f7,_0x213e0e))[_0x4f06('0x2b')](handleError(_0x38b7f7,null));};exports['removeAnswers']=function(_0xa09b1a,_0x504460,_0x57f41e){return db[_0x4f06('0x3b')]['find']({'where':{'id':_0xa09b1a[_0x4f06('0x54')]['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x504460,null))[_0x4f06('0x21')](function(_0x42de6){if(_0x42de6){return _0x42de6[_0x4f06('0x6d')](_0xa09b1a[_0x4f06('0x45')][_0x4f06('0x6e')]);}})[_0x4f06('0x21')](respondWithStatusCode(_0x504460,null))[_0x4f06('0x2b')](handleError(_0x504460,null));};exports['notify']=function(_0x1f385b,_0x225230,_0x5dfd58){var _0x519bec={'channel':_0x4f06('0x6f')};var _0x517eaa=[];var _0xc368f0=[];var _0x49b9fa={};return db['SmsAccount'][_0x4f06('0x61')]({'where':{'id':_0x1f385b['params']['id']},'include':[{'model':db[_0x4f06('0x70')],'as':_0x4f06('0x71')}]})[_0x4f06('0x21')](handleEntityNotFound(_0x225230,null))[_0x4f06('0x21')](function(_0x49e746){_0x519bec[_0x4f06('0x72')]=_0x49e746;_0x519bec[_0x4f06('0x73')]=_[_0x4f06('0x74')](_0x49e746[_0x4f06('0x71')],[_0x4f06('0x75')],['asc']);if(_0x519bec['account'][_0x4f06('0x71')]){delete _0x519bec[_0x4f06('0x72')][_0x4f06('0x71')];}return db[_0x4f06('0x76')][_0x4f06('0x62')]();})[_0x4f06('0x21')](function(_0x3199c3){if(!_0x3199c3){throw new db['Sequelize'][(_0x4f06('0x77'))]('no\x20available\x20attributes');}_0x517eaa=_[_0x4f06('0x78')](_[_0x4f06('0x42')](_0x3199c3),[_0x4f06('0x79'),_0x4f06('0x7a')]);_0xc368f0=_[_0x4f06('0x78')](_['keys'](_0x3199c3),[_0x4f06('0x79'),_0x4f06('0x7a'),_0x4f06('0x7b'),_0x4f06('0x7c')]);_0x519bec[_0x4f06('0x58')]={'mapKey':_0x4f06('0x7d')};if(_0x519bec[_0x4f06('0x72')]['type']){switch(_0x519bec[_0x4f06('0x72')][_0x4f06('0x3e')]){case _0x4f06('0x7e'):_0x519bec[_0x4f06('0x58')][_0x4f06('0x7f')]=_0x1f385b['body'][_0x4f06('0x80')];_0x519bec['body']['body']=_0x1f385b['body'][_0x4f06('0x81')];_0x519bec['body']['messageId']=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x82')];break;case _0x4f06('0x83'):_0x519bec[_0x4f06('0x58')][_0x4f06('0x7f')]='+'+_0x1f385b['body'][_0x4f06('0x84')];_0x519bec[_0x4f06('0x58')][_0x4f06('0x58')]=_0x1f385b[_0x4f06('0x58')]['text'];break;case _0x4f06('0x85'):_0x519bec[_0x4f06('0x58')][_0x4f06('0x7f')]=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x7f')];_0x519bec[_0x4f06('0x58')][_0x4f06('0x58')]=_0x1f385b[_0x4f06('0x58')]['message'];break;case _0x4f06('0x86'):_0x519bec[_0x4f06('0x58')][_0x4f06('0x7f')]=_0x1f385b['body'][_0x4f06('0x7f')];_0x519bec[_0x4f06('0x58')][_0x4f06('0x58')]=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x58')];_0x519bec[_0x4f06('0x58')][_0x4f06('0x87')]=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x88')];break;case _0x4f06('0x89'):_0x519bec['body']['from']=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x80')];_0x519bec['body'][_0x4f06('0x58')]=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x8a')];_0x519bec[_0x4f06('0x58')][_0x4f06('0x87')]=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x8b')];break;case _0x4f06('0x8c'):_0x519bec[_0x4f06('0x58')]['from']='+'+_0x1f385b['body']['results'][0x0][_0x4f06('0x7f')];_0x519bec[_0x4f06('0x58')][_0x4f06('0x58')]=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x8d')][0x0][_0x4f06('0x8e')];_0x519bec[_0x4f06('0x58')]['messageId']=_0x1f385b['body']['results'][0x0]['messageId'];break;case _0x4f06('0x8f'):_0x519bec[_0x4f06('0x58')]['from']=_0x1f385b['body'][_0x4f06('0x90')];_0x519bec[_0x4f06('0x58')][_0x4f06('0x58')]=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x91')][_0x4f06('0x29')];break;case _0x4f06('0x92'):_0x519bec[_0x4f06('0x58')][_0x4f06('0x7f')]=_0x1f385b[_0x4f06('0x58')]['fromNumber'];_0x519bec[_0x4f06('0x58')]['body']=_0x1f385b[_0x4f06('0x58')]['text'];_0x519bec[_0x4f06('0x58')][_0x4f06('0x87')]=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x93')];break;case _0x4f06('0x94'):_0x519bec[_0x4f06('0x58')]['messageId']=_0x1f385b['body'][0x0]['message']['id'];_0x519bec['body'][_0x4f06('0x7f')]=_0x1f385b[_0x4f06('0x58')][0x0][_0x4f06('0x29')]['from'];_0x519bec['body'][_0x4f06('0x58')]=_0x1f385b[_0x4f06('0x58')][0x0][_0x4f06('0x29')]['text'];break;case _0x4f06('0x95'):_0x519bec[_0x4f06('0x58')]['from']=_0x1f385b['body'][_0x4f06('0x7f')];_0x519bec[_0x4f06('0x58')][_0x4f06('0x58')]=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x29')];_0x519bec[_0x4f06('0x58')][_0x4f06('0x87')]=_0x1f385b[_0x4f06('0x58')][_0x4f06('0x96')];break;}}if(_0x519bec['body']['id']){delete _0x519bec[_0x4f06('0x58')]['id'];}if(_[_0x4f06('0x97')](_0x519bec['body'][_0x4f06('0x7f')])){throw new db['Sequelize'][(_0x4f06('0x77'))](_0x4f06('0x98'));}if(_[_0x4f06('0x97')](_0x519bec[_0x4f06('0x58')][_0x4f06('0x58')])||_0x519bec[_0x4f06('0x58')][_0x4f06('0x58')]===''){throw new db[(_0x4f06('0x99'))][(_0x4f06('0x77'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x4f06('0x97')](_0x519bec['body'][_0x4f06('0x9a')])){throw new db['Sequelize'][(_0x4f06('0x77'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xc368f0);}if(!_[_0x4f06('0x9b')](_0xc368f0,_0x519bec[_0x4f06('0x58')][_0x4f06('0x9a')])){throw new db['Sequelize'][(_0x4f06('0x77'))](_0x4f06('0x9c')+_0xc368f0);}_0x49b9fa[_0x519bec['body']['mapKey']]=_0x519bec[_0x4f06('0x58')][_0x4f06('0x7f')];return db[_0x4f06('0x9d')][_0x4f06('0x61')]({'where':{'id':_0x519bec[_0x4f06('0x72')][_0x4f06('0x7c')]},'include':[{'model':db[_0x4f06('0x76')],'as':_0x4f06('0x9e'),'where':_0x49b9fa,'limit':0x1,'order':[[_0x4f06('0x7a'),_0x4f06('0x9f')]]}]});})['then'](handleEntityNotFound(_0x225230,null))[_0x4f06('0x21')](function(_0x10084c){if(_0x10084c){_0x519bec['list']=_[_0x4f06('0xa0')](_0x10084c,['Contacts']);if(_0x10084c['Contacts'][_0x4f06('0x48')]){return _0x10084c['Contacts'][0x0];}var _0x365a28=_[_0x4f06('0x19')](_0x519bec[_0x4f06('0x58')],{'firstName':_0x519bec[_0x4f06('0x58')]['from'],'ListId':_0x10084c['id']});_0x365a28[_0x519bec[_0x4f06('0x58')][_0x4f06('0x9a')]]=_0x519bec[_0x4f06('0x58')]['from'];return db[_0x4f06('0x76')][_0x4f06('0x57')](_0x365a28,{'fields':_0x517eaa,'raw':!![]});}})['then'](handleEntityNotFound(_0x225230,null))[_0x4f06('0x21')](function(_0x4bf5a5){if(_0x4bf5a5){_0x519bec[_0x4f06('0xa1')]=_0x4bf5a5;var _0x1a6a59={'ContactId':_0x4bf5a5['id'],'phone':_0x519bec[_0x4f06('0x58')][_0x4f06('0x7f')],'SmsAccountId':_0x1f385b['params']['id']};var _0x1969f8={'ContactId':_0x4bf5a5['id'],'SmsAccountId':_0x1f385b[_0x4f06('0x54')]['id'],'closed':![]};return db[_0x4f06('0xa2')][_0x4f06('0x61')]({'where':_0x1969f8})[_0x4f06('0x21')](function(_0x1b29bc){if(_0x1b29bc){return[_0x1b29bc,![]];}return db[_0x4f06('0xa2')]['create'](_0x1a6a59)['then'](function(_0x12ee5a){return[_0x12ee5a,!![]];});});}})[_0x4f06('0xa3')](function(_0x4c6731,_0x409820){_0x519bec['interaction']=_0x4c6731[_0x4f06('0x35')]({'plain':!![]});_0x519bec['interaction'][_0x4f06('0xa4')]=![];if(_0x409820){if(_0x519bec[_0x4f06('0x72')][_0x4f06('0xa5')]){_0x519bec[_0x4f06('0x73')][_0x4f06('0xa6')]({'id':0x0,'priority':_0x519bec[_0x4f06('0x73')][_0x4f06('0x48')]+0x1,'app':_0x4f06('0xa7'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x519bec['interaction'][_0x4f06('0xa4')]=!![];}return db['SmsMessage'][_0x4f06('0x57')]({'phone':_0x519bec[_0x4f06('0x58')]['from'],'messageId':_0x519bec[_0x4f06('0x58')][_0x4f06('0x87')],'body':_0x519bec[_0x4f06('0x58')][_0x4f06('0x58')],'SmsAccountId':_0x1f385b[_0x4f06('0x54')]['id'],'SmsInteractionId':_0x4c6731['id'],'direction':'in','ContactId':_0x4c6731[_0x4f06('0xa8')],'AttachmentId':_0x519bec[_0x4f06('0x58')][_0x4f06('0xa9')]});})[_0x4f06('0x21')](function(_0x106b75){_0x519bec[_0x4f06('0x29')]=_0x106b75;if(!_0x519bec[_0x4f06('0xaa')][_0x4f06('0xab')])return;return db['User'][_0x4f06('0x61')]({'attributes':['id','name'],'where':{'id':_0x519bec['interaction'][_0x4f06('0xab')]}});})['then'](function(_0xf06019){if(_0xf06019){_0x519bec[_0x4f06('0x73')][_0x4f06('0xac')]({'id':0x0,'priority':0x0,'app':_0x4f06('0xad'),'appdata':_0xf06019[_0x4f06('0x37')]+','+(_0x519bec['account'][_0x4f06('0xae')]||0xa),'interval':_0x4f06('0xaf')});}if(!_0x519bec['interaction'][_0x4f06('0xb0')])return;return db['SmsQueue']['find']({'attributes':['id',_0x4f06('0x37')],'where':{'id':_0x519bec['interaction'][_0x4f06('0xb0')]}});})[_0x4f06('0x21')](function(_0x255e60){if(_0x255e60){_0x519bec['applications'][_0x4f06('0xac')]({'id':0x0,'priority':0x1,'app':_0x4f06('0xb1'),'appdata':_0x255e60['name']+','+(_0x519bec[_0x4f06('0x72')]['waitForTheAssignedQueue']||0x12c),'interval':_0x4f06('0xaf')});}return respondWithRpcPromise(_0x4f06('0xb2'),_0x4f06('0xb3'),_0x519bec);})[_0x4f06('0x21')](function(_0x5ae85e){if(_0x5ae85e){var _0x2b6f89=0xc8;var _0x57fd38=_0x4f06('0xb4');logger['info'](_0x4f06('0x24'),_0x57fd38,_0x2b6f89,'entity\x20found');logger[_0x4f06('0xb5')](_0x4f06('0xb6'),_0x57fd38,_0x2b6f89,'entity\x20found',JSON['stringify'](_0x5ae85e));if(_0x519bec['account'][_0x4f06('0x3e')]==='twilio'){return _0x225230[_0x4f06('0x2d')](_0x2b6f89)[_0x4f06('0x32')](_0x4f06('0xb7'),'text/xml')[_0x4f06('0x38')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x225230['status'](_0x2b6f89)['json'](_0x5ae85e);}}})[_0x4f06('0x2b')](handleError(_0x225230,null));};exports[_0x4f06('0xb8')]=function(_0x38433c,_0x49e70f){var _0x4fe865=_0x38433c[_0x4f06('0x54')]['id'];var _0x3b641e=_0x38433c[_0x4f06('0x58')];var _0x517f72=0xc8;var _0x17f47b=null;return db[_0x4f06('0xb9')][_0x4f06('0xba')]({'isolationLevel':db[_0x4f06('0xb9')][_0x4f06('0xbb')][_0x4f06('0xbc')][_0x4f06('0xbd')]},function(_0x4d8862){return db[_0x4f06('0x3b')][_0x4f06('0x67')]({'where':{'id':_0x4fe865},'transaction':_0x4d8862})[_0x4f06('0x21')](function(_0x23a704){if(_0x23a704){return db[_0x4f06('0x70')][_0x4f06('0x36')]({'where':{'SmsAccountId':_0x4fe865},'transaction':_0x4d8862})[_0x4f06('0x21')](function(){var _0x39966f=_['map'](_0x3b641e,function(_0x23379d){_0x23379d['SmsAccountId']=_0x4fe865;return _0x23379d;});return db[_0x4f06('0x70')][_0x4f06('0xbe')](_0x39966f,{'transaction':_0x4d8862});});}else{_0x517f72=0x194;_0x17f47b=[];}});})[_0x4f06('0x21')](function(){if(_0x517f72!==0x194){return db['SmsApplication'][_0x4f06('0xbf')]({'where':{'SmsAccountId':_0x4fe865},'order':_0x4f06('0x75')})[_0x4f06('0x21')](function(_0x1522fa){_0x17f47b=_0x1522fa;});}})['catch'](function(_0x47e192){_0x517f72=0x1f4;logger[_0x4f06('0x26')](_0x47e192[_0x4f06('0xc0')]);if(_0x47e192[_0x4f06('0x37')]){delete _0x47e192[_0x4f06('0x37')];}_0x17f47b=_0x47e192;})[_0x4f06('0xc1')](function(){if(_0x17f47b===null){_0x49e70f[_0x4f06('0x2c')](_0x517f72);}else{if(_0x517f72===0x1f4){_0x49e70f[_0x4f06('0x2d')](_0x517f72)[_0x4f06('0x38')](_0x17f47b);}else{_0x49e70f[_0x4f06('0x2d')](_0x517f72)[_0x4f06('0xc2')](_0x17f47b);}}});};exports[_0x4f06('0xc3')]=function(_0x375a65,_0x35b0b7,_0x2c7d84){var _0x2ecfce={};var _0x1c9669={};var _0x13d864;var _0x2dd807;return db[_0x4f06('0x3b')][_0x4f06('0x67')]({'where':{'id':_0x375a65['params']['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x35b0b7,null))['then'](function(_0x37a7fa){if(_0x37a7fa){_0x13d864=_0x37a7fa;_0x1c9669['model']=_[_0x4f06('0x42')](db[_0x4f06('0x70')][_0x4f06('0x3c')]);_0x1c9669['query']=_['keys'](_0x375a65[_0x4f06('0x45')]);_0x1c9669[_0x4f06('0x43')]=_[_0x4f06('0x44')](_0x1c9669[_0x4f06('0x40')],_0x1c9669[_0x4f06('0x45')]);_0x2ecfce[_0x4f06('0x47')]=_['intersection'](_0x1c9669[_0x4f06('0x40')],qs[_0x4f06('0x46')](_0x375a65[_0x4f06('0x45')][_0x4f06('0x46')]));_0x2ecfce[_0x4f06('0x47')]=_0x2ecfce[_0x4f06('0x47')][_0x4f06('0x48')]?_0x2ecfce[_0x4f06('0x47')]:_0x1c9669[_0x4f06('0x40')];_0x2ecfce[_0x4f06('0x4a')]=qs[_0x4f06('0x4b')](_0x375a65[_0x4f06('0x45')][_0x4f06('0x4b')]);_0x2ecfce[_0x4f06('0x4c')]=qs['filters'](_['pick'](_0x375a65[_0x4f06('0x45')],_0x1c9669[_0x4f06('0x43')]));if(_0x375a65[_0x4f06('0x45')][_0x4f06('0x4f')]){_0x2ecfce[_0x4f06('0x4c')]=_[_0x4f06('0x50')](_0x2ecfce[_0x4f06('0x4c')],{'$or':_[_0x4f06('0x41')](_0x2ecfce[_0x4f06('0x47')],function(_0x12524c){var _0x36d403={};_0x36d403[_0x12524c]={'$like':'%'+_0x375a65['query']['filter']+'%'};return _0x36d403;})});}_0x2ecfce=_[_0x4f06('0x50')]({},_0x2ecfce,_0x375a65['options']);return _0x13d864[_0x4f06('0xc3')](_0x2ecfce);}})['then'](function(_0x5a7e02){if(_0x5a7e02){_0x2dd807=_0x5a7e02['length'];if(!_0x375a65['query']['hasOwnProperty'](_0x4f06('0x68'))){_0x2ecfce[_0x4f06('0x30')]=qs[_0x4f06('0x30')](_0x375a65[_0x4f06('0x45')][_0x4f06('0x30')]);_0x2ecfce[_0x4f06('0x2e')]=qs[_0x4f06('0x2e')](_0x375a65[_0x4f06('0x45')][_0x4f06('0x2e')]);}return _0x13d864['getApplications'](_0x2ecfce);}})[_0x4f06('0x21')](function(_0x1fd352){if(_0x1fd352){return _0x1fd352?{'count':_0x2dd807,'rows':_0x1fd352}:null;}})[_0x4f06('0x21')](respondWithResult(_0x35b0b7,null))[_0x4f06('0x2b')](handleError(_0x35b0b7,null));};exports[_0x4f06('0xc4')]=function(_0x2c1816,_0x403483,_0x308a61){var _0xd444df={'raw':![],'where':{}};var _0x4547ef={};var _0x4726cc={'count':0x0,'rows':[]};return db[_0x4f06('0x3b')][_0x4f06('0x67')]({'where':{'id':_0x2c1816[_0x4f06('0x54')]['id']}})['then'](handleEntityNotFound(_0x403483,null))['then'](function(_0x2f024f){if(_0x2f024f){_0x4547ef[_0x4f06('0x40')]=_['keys'](db[_0x4f06('0xa2')]['rawAttributes']);_0x4547ef[_0x4f06('0x45')]=_[_0x4f06('0x42')](_0x2c1816[_0x4f06('0x45')]);_0x4547ef['filters']=_[_0x4f06('0x44')](_0x4547ef['model'],_0x4547ef['query']);_0xd444df[_0x4f06('0x47')]=_[_0x4f06('0x44')](_0x4547ef[_0x4f06('0x40')],qs[_0x4f06('0x46')](_0x2c1816['query'][_0x4f06('0x46')]));_0xd444df[_0x4f06('0x47')]=_0xd444df[_0x4f06('0x47')][_0x4f06('0x48')]?_0xd444df[_0x4f06('0x47')]:_0x4547ef['model'];if(!_0x2c1816[_0x4f06('0x45')][_0x4f06('0x49')](_0x4f06('0x68'))){_0xd444df[_0x4f06('0x30')]=qs['limit'](_0x2c1816['query'][_0x4f06('0x30')]);_0xd444df[_0x4f06('0x2e')]=qs[_0x4f06('0x2e')](_0x2c1816[_0x4f06('0x45')][_0x4f06('0x2e')]);}_0xd444df['order']=qs[_0x4f06('0x4b')](_0x2c1816[_0x4f06('0x45')][_0x4f06('0x4b')]);_0xd444df[_0x4f06('0x4c')]=qs[_0x4f06('0x43')](_[_0x4f06('0x4d')](_0x2c1816[_0x4f06('0x45')],_0x4547ef[_0x4f06('0x43')]));_0xd444df[_0x4f06('0x4c')][_0x4f06('0x64')]=_0x2f024f['id'];if(_0x2c1816[_0x4f06('0x45')]['filter']){_0xd444df[_0x4f06('0x4c')]=_[_0x4f06('0x50')](_0xd444df[_0x4f06('0x4c')],{'$or':_[_0x4f06('0x41')](_0xd444df[_0x4f06('0x47')],function(_0x51c74b){var _0xb1f0e={};_0xb1f0e[_0x51c74b]={'$like':'%'+_0x2c1816['query'][_0x4f06('0x4f')]+'%'};return _0xb1f0e;})});}_0xd444df=_[_0x4f06('0x50')]({},_0xd444df,_0x2c1816[_0x4f06('0x51')]);return db[_0x4f06('0xa2')][_0x4f06('0x31')]({'where':_0xd444df[_0x4f06('0x4c')]})['then'](function(_0x423d6b){_0x4726cc['count']=_0x423d6b;if(_0x2c1816[_0x4f06('0x45')][_0x4f06('0x56')]){_0xd444df['include']=[{'model':db[_0x4f06('0x76')],'as':_0x4f06('0xc5'),'required':![]},{'model':db[_0x4f06('0xc6')],'as':_0x4f06('0xc7'),'attributes':[_0x4f06('0x37'),'fullname',_0x4f06('0xc8')],'required':![]},{'model':db['Tag'],'as':_0x4f06('0xc9'),'attributes':['id','name',_0x4f06('0xca')],'where':_0x2c1816['query'][_0x4f06('0xcb')]?{'id':_0x2c1816[_0x4f06('0x45')]['tag']}:undefined,'required':_0x2c1816[_0x4f06('0x45')][_0x4f06('0xcb')]?!![]:![]}];}return db[_0x4f06('0xa2')][_0x4f06('0x53')](_0xd444df);})[_0x4f06('0x21')](function(_0x388efd){_0x4726cc[_0x4f06('0x69')]=_0x388efd;return _0x4726cc;});}})[_0x4f06('0x21')](respondWithFilteredResult(_0x403483,_0xd444df))[_0x4f06('0x2b')](handleError(_0x403483,null));};exports[_0x4f06('0x38')]=function(_0x25e481,_0x47d21e,_0x11b31d){var _0x2ffec7,_0x2651e1,_0x4230e9;if(_[_0x4f06('0x97')](_0x25e481[_0x4f06('0x58')][_0x4f06('0x58')])||_0x25e481[_0x4f06('0x58')][_0x4f06('0x58')]===''){throw new db['Sequelize']['ValidationError'](_0x4f06('0xcc'));}if(_[_0x4f06('0x97')](_0x25e481[_0x4f06('0x58')]['to'])){throw new db[(_0x4f06('0x99'))][(_0x4f06('0x77'))](_0x4f06('0xcd'));}_0x2ffec7=_0x25e481[_0x4f06('0x58')]['to'];return db[_0x4f06('0x3b')][_0x4f06('0x61')]({'where':{'id':_0x25e481['params']['id']},'include':[{'model':db[_0x4f06('0x9d')],'as':_0x4f06('0xce'),'include':[{'model':db[_0x4f06('0x76')],'as':_0x4f06('0x9e'),'where':{'mobile':_0x2ffec7},'limit':0x1,'order':[[_0x4f06('0x7a'),_0x4f06('0x9f')]]}]}]})[_0x4f06('0x21')](handleEntityNotFound(_0x47d21e,null))['then'](function(_0x5e31aa){if(_0x5e31aa&&_0x5e31aa[_0x4f06('0xce')]){_0x2651e1=_0x5e31aa[_0x4f06('0x35')]({'plain':!![]});if(_0x2651e1['List']&&_0x2651e1[_0x4f06('0xce')][_0x4f06('0x9e')][_0x4f06('0x48')]){return _0x2651e1[_0x4f06('0xce')][_0x4f06('0x9e')][0x0];}return db['CmContact'][_0x4f06('0x57')](_[_0x4f06('0x19')](_0x25e481[_0x4f06('0x58')],{'firstName':_0x2ffec7,'mobile':_0x2ffec7,'phone':_0x2ffec7,'ListId':_0x2651e1[_0x4f06('0x7c')]}));}})[_0x4f06('0x21')](handleEntityNotFound(_0x47d21e,null))[_0x4f06('0x21')](function(_0x19c844){if(_0x19c844){_0x4230e9=_0x19c844;return db['SmsInteraction'][_0x4f06('0x61')]({'where':{'ContactId':_0x4230e9['id'],'closed':![],'SmsAccountId':_0x2651e1['id']}})[_0x4f06('0x21')](function(_0x2aca17){if(_0x2aca17){return[_0x2aca17,![]];}return db[_0x4f06('0xa2')][_0x4f06('0x57')]({'UserId':_0x25e481['user']['id'],'ContactId':_0x4230e9['id'],'SmsAccountId':_0x2651e1['id'],'phone':_0x2ffec7,'firstMsgDirection':_0x4f06('0xcf'),'Messages':[_[_0x4f06('0x50')](_0x25e481['body'],{'read':![],'body':_0x25e481[_0x4f06('0x58')][_0x4f06('0x58')],'phone':_0x2ffec7,'SmsAccountId':_0x2651e1['id'],'UserId':_0x25e481[_0x4f06('0x59')]['id'],'ContactId':_0x4230e9['id']})]},{'include':[{'model':db[_0x4f06('0xd0')],'as':'Messages'}]})[_0x4f06('0x21')](function(_0x7600dc){return[_0x7600dc,!![]];});});}})['spread'](function(_0x124ba8,_0x616bf){if(_0x616bf){return _0x124ba8;}return db[_0x4f06('0xd0')][_0x4f06('0x57')](_['merge'](_0x25e481[_0x4f06('0x58')],{'read':![],'body':_0x25e481[_0x4f06('0x58')][_0x4f06('0x58')],'phone':_0x2ffec7,'SmsAccountId':_0x2651e1['id'],'SmsInteractionId':_0x124ba8['id'],'UserId':_0x25e481[_0x4f06('0x59')]['id'],'ContactId':_0x4230e9['id']}))['then'](function(_0x36df23){_0x124ba8['dataValues'][_0x4f06('0xd1')]=[];_0x124ba8[_0x4f06('0xd2')]['Messages'][_0x4f06('0xa6')](_0x36df23[_0x4f06('0xd2')]);return _0x124ba8;});})[_0x4f06('0x21')](respondWithResult(_0x47d21e,null))['catch'](handleError(_0x47d21e,null));};exports['status']=function(_0x48c1d8,_0x46bfd4,_0x35a70e){if(_0x48c1d8[_0x4f06('0x58')]['id']){delete _0x48c1d8[_0x4f06('0x58')]['id'];}var _0x128f06,_0x2df5a0,_0x3e49c4;return db[_0x4f06('0x3b')]['find']({'where':{'id':_0x48c1d8[_0x4f06('0x54')]['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x46bfd4,null))[_0x4f06('0x21')](function(_0x59b64c){if(_0x59b64c){_0x3e49c4=_0x59b64c;logger[_0x4f06('0xb5')](_0x4f06('0x24'),_0x4f06('0x2d'),'received\x20delivery\x20report\x20from',_0x59b64c[_0x4f06('0x3e')],util[_0x4f06('0xd3')](_0x48c1d8[_0x4f06('0x58')],{'showHidden':![],'depth':null}));switch(_0x59b64c[_0x4f06('0x3e')]){case _0x4f06('0x83'):if(_0x48c1d8[_0x4f06('0x58')]['skebby_dispatch_id']&&_0x48c1d8[_0x4f06('0x58')]['status']){_0x2df5a0=_0x48c1d8[_0x4f06('0x58')][_0x4f06('0x2d')];return db[_0x4f06('0xd0')][_0x4f06('0x61')]({'where':{'messageId':_0x48c1d8[_0x4f06('0x58')][_0x4f06('0xd4')]}});}break;case _0x4f06('0x85'):if(_0x48c1d8['body'][_0x4f06('0xd5')]&&_0x48c1d8[_0x4f06('0x58')][_0x4f06('0xd6')]){_0x2df5a0=_0x48c1d8['body'][_0x4f06('0xd6')];return db[_0x4f06('0xd0')]['find']({'where':{'messageId':_0x48c1d8[_0x4f06('0x58')][_0x4f06('0xd5')]}});}break;case _0x4f06('0x86'):if(_0x48c1d8[_0x4f06('0x58')][_0x4f06('0x88')]&&_0x48c1d8[_0x4f06('0x58')][_0x4f06('0xd7')]){_0x2df5a0=_0x48c1d8[_0x4f06('0x58')][_0x4f06('0xd7')];return db['SmsMessage']['find']({'where':{'messageId':_0x48c1d8[_0x4f06('0x58')][_0x4f06('0x88')]}});}break;case _0x4f06('0x8c'):var _0x51bb10=_0x48c1d8['body'][_0x4f06('0x8d')][0x0];if(_0x51bb10['messageId']&&_0x51bb10[_0x4f06('0x2d')]['groupName']===_0x4f06('0xd8')){_0x2df5a0=_0x51bb10[_0x4f06('0x2d')][_0x4f06('0xd9')];return db[_0x4f06('0xd0')]['find']({'where':{'messageId':_0x51bb10['messageId']}});}break;case _0x4f06('0x92'):if(_0x48c1d8[_0x4f06('0x58')][_0x4f06('0x87')]&&_0x48c1d8[_0x4f06('0x58')]['status']){_0x2df5a0=_0x48c1d8[_0x4f06('0x58')][_0x4f06('0x2d')];return db[_0x4f06('0xd0')][_0x4f06('0x61')]({'where':{'messageId':_0x48c1d8['body'][_0x4f06('0x87')]}});}break;case _0x4f06('0x94'):if(_0x48c1d8[_0x4f06('0x58')][0x0][_0x4f06('0x29')]['id']){_0x2df5a0=_0x48c1d8['body'][0x0][_0x4f06('0x3e')];return db[_0x4f06('0xd0')][_0x4f06('0x61')]({'where':{'messageId':_0x48c1d8[_0x4f06('0x58')][0x0][_0x4f06('0x29')]['id']}});}break;case _0x4f06('0x95'):if(_0x48c1d8[_0x4f06('0x58')]['redif']&&_0x48c1d8[_0x4f06('0x58')][_0x4f06('0x2d')]){_0x2df5a0=_0x48c1d8['body']['status'];return db[_0x4f06('0xd0')]['find']({'where':{'messageId':_0x48c1d8[_0x4f06('0x58')][_0x4f06('0xda')]}});}break;}}})[_0x4f06('0x21')](handleEntityNotFound(_0x46bfd4,null))[_0x4f06('0x21')](function(_0x5a5d0a){if(_0x5a5d0a){_0x128f06=_0x5a5d0a;switch(_0x3e49c4['type']){case _0x4f06('0x83'):if(_0x2df5a0===_0x4f06('0xd8')){return _0x128f06[_0x4f06('0x60')]({'read':!![]});}else{logger[_0x4f06('0x26')](_0x4f06('0x24'),_0x4f06('0x2d'),_0x4f06('0x83'),util[_0x4f06('0xd3')](_0x48c1d8[_0x4f06('0x58')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x2df5a0==='1'){return _0x128f06[_0x4f06('0x60')]({'read':!![]});}else{logger[_0x4f06('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x4f06('0x83'),util[_0x4f06('0xd3')](_0x48c1d8['body'],{'showHidden':![],'depth':null}));}break;case _0x4f06('0x86'):if(!_0x48c1d8[_0x4f06('0x58')][_0x4f06('0xdb')]&&_0x2df5a0>=0xc8&&_0x2df5a0<=0xce){return _0x128f06['update']({'read':!![]});}else{logger[_0x4f06('0x26')](_0x4f06('0x24'),_0x4f06('0x2d'),'clicksend',util[_0x4f06('0xd3')](_0x48c1d8[_0x4f06('0x58')],{'showHidden':![],'depth':null}));}break;case _0x4f06('0x8c'):var _0x1cd0b8=_0x48c1d8['body'][_0x4f06('0x8d')][0x0];if(_0x1cd0b8[_0x4f06('0x2d')][_0x4f06('0xd9')]===_0x4f06('0xd8')){return _0x128f06[_0x4f06('0x60')]({'read':!![]});}else{logger[_0x4f06('0x26')](_0x4f06('0x24'),'status','infobip',util[_0x4f06('0xd3')](_0x48c1d8[_0x4f06('0x58')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x2df5a0=='DELIVERED_TO_GATEWAY'||_0x2df5a0==_0x4f06('0xdc')){return _0x128f06['update']({'read':!![]});}else{logger[_0x4f06('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x4f06('0x2d'),_0x4f06('0x92'),util['inspect'](_0x48c1d8[_0x4f06('0x58')],{'showHidden':![],'depth':null}));}break;case _0x4f06('0x94'):if(_0x2df5a0==_0x4f06('0xdd')){return _0x128f06['update']({'read':!![]});}else{logger[_0x4f06('0x26')](_0x4f06('0x24'),'status',_0x4f06('0x94'),util[_0x4f06('0xd3')](_0x48c1d8[_0x4f06('0x58')],{'showHidden':![],'depth':null}));}break;case _0x4f06('0x95'):if(_0x2df5a0==='DELIVRD'||_0x2df5a0===_0x4f06('0xde')){return _0x128f06[_0x4f06('0x60')]({'read':!![]});}else{logger[_0x4f06('0x26')](_0x4f06('0x24'),'status',_0x4f06('0x95'),util['inspect'](_0x48c1d8[_0x4f06('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x128f06;}})['then'](respondWithResult(_0x46bfd4,null))[_0x4f06('0x2b')](handleError(_0x46bfd4,null));};exports[_0x4f06('0xdf')]=function(_0x1be048,_0x2bc613,_0x28c4a5){var _0x181b86,_0xd8d182,_0x5517f9;return db[_0x4f06('0x3b')][_0x4f06('0x61')]({'where':{'id':_0x1be048['params']['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x2bc613,null))[_0x4f06('0x21')](function(_0x26daa7){if(_0x26daa7){_0x5517f9=_0x26daa7;logger[_0x4f06('0xb5')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x4f06('0xe0'),_0x26daa7[_0x4f06('0x3e')],util['inspect'](_0x1be048[_0x4f06('0x45')],{'showHidden':![],'depth':null}));switch(_0x26daa7[_0x4f06('0x3e')]){case _0x4f06('0x8f'):if(_0x1be048['query']['message-id']&&_0x1be048['query'][_0x4f06('0xe1')]){_0xd8d182=_0x1be048['query'][_0x4f06('0xe1')];return db['SmsMessage'][_0x4f06('0x61')]({'where':{'messageId':_0x1be048[_0x4f06('0x45')][_0x4f06('0xe2')]}});}break;}}})[_0x4f06('0x21')](handleEntityNotFound(_0x2bc613,null))[_0x4f06('0x21')](function(_0x45d57a){if(_0x45d57a){_0x181b86=_0x45d57a;switch(_0x5517f9[_0x4f06('0x3e')]){case _0x4f06('0x8f'):if(_0xd8d182==='2'||_0xd8d182==='6'){return _0x181b86['update']({'read':!![]});}else{logger[_0x4f06('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x4f06('0x2d'),_0x4f06('0x8f'),util[_0x4f06('0xd3')](_0x1be048[_0x4f06('0x45')],{'showHidden':![],'depth':null}));};break;}return _0x181b86;}})[_0x4f06('0x21')](respondWithResult(_0x2bc613,null))[_0x4f06('0x2b')](handleError(_0x2bc613,null));};exports['addAgents']=function(_0x5e1252,_0x91c2bf,_0x5fdc04){return db[_0x4f06('0x3b')][_0x4f06('0x61')]({'where':{'id':_0x5e1252[_0x4f06('0x54')]['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x91c2bf,null))[_0x4f06('0x21')](function(_0x4a5323){if(_0x4a5323){return _0x4a5323['addAgents'](_0x5e1252[_0x4f06('0x58')][_0x4f06('0x6e')],_[_0x4f06('0xa0')](_0x5e1252[_0x4f06('0x58')],[_0x4f06('0x6e'),'id'])||{})[_0x4f06('0xa3')](function(_0x7ad0e2){for(var _0x4c77ef=0x0;_0x4c77ef<_0x5e1252['body'][_0x4f06('0x6e')][_0x4f06('0x48')];_0x4c77ef+=0x1){socket[_0x4f06('0xe3')]('userSmsAccount:save',{'UserId':Number(_0x5e1252[_0x4f06('0x58')]['ids'][_0x4c77ef]),'SmsAccountId':Number(_0x5e1252[_0x4f06('0x54')]['id'])});}return _0x7ad0e2;});}})[_0x4f06('0x21')](respondWithResult(_0x91c2bf,null))[_0x4f06('0x2b')](handleError(_0x91c2bf,null));};exports['removeAgents']=function(_0x4e3613,_0xc77cf6,_0xb07eea){return db[_0x4f06('0x3b')][_0x4f06('0x61')]({'where':{'id':_0x4e3613['params']['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0xc77cf6,null))[_0x4f06('0x21')](function(_0x43553e){if(_0x43553e){return _0x43553e['removeAgents'](_0x4e3613['query'][_0x4f06('0x6e')])[_0x4f06('0x21')](function(){if(_[_0x4f06('0xe4')](_0x4e3613[_0x4f06('0x45')][_0x4f06('0x6e')])){for(var _0x3026eb=0x0;_0x3026eb<_0x4e3613[_0x4f06('0x45')][_0x4f06('0x6e')][_0x4f06('0x48')];_0x3026eb+=0x1){socket['emit'](_0x4f06('0xe5'),{'UserId':Number(_0x4e3613[_0x4f06('0x45')][_0x4f06('0x6e')][_0x3026eb]),'SmsAccountId':Number(_0x4e3613[_0x4f06('0x54')]['id'])});}}else{socket[_0x4f06('0xe3')](_0x4f06('0xe5'),{'UserId':Number(_0x4e3613[_0x4f06('0x45')][_0x4f06('0x6e')]),'SmsAccountId':Number(_0x4e3613['params']['id'])});}});}})[_0x4f06('0x21')](respondWithStatusCode(_0xc77cf6,null))[_0x4f06('0x2b')](handleError(_0xc77cf6,null));};exports[_0x4f06('0xe6')]=function(_0xdc1eaa,_0x531631,_0x5d9d89){var _0x1cfac3={};var _0x56d918={};var _0x1f354d;var _0x811b8f;return db[_0x4f06('0x3b')][_0x4f06('0x67')]({'where':{'id':_0xdc1eaa['params']['id']}})[_0x4f06('0x21')](handleEntityNotFound(_0x531631,null))['then'](function(_0xe2c1ec){if(_0xe2c1ec){_0x1f354d=_0xe2c1ec;_0x56d918[_0x4f06('0x40')]=_[_0x4f06('0x42')](db[_0x4f06('0xc6')]['rawAttributes']);_0x56d918['query']=_[_0x4f06('0x42')](_0xdc1eaa[_0x4f06('0x45')]);_0x56d918['filters']=_[_0x4f06('0x44')](_0x56d918[_0x4f06('0x40')],_0x56d918[_0x4f06('0x45')]);_0x1cfac3['attributes']=_['intersection'](_0x56d918[_0x4f06('0x40')],qs['fields'](_0xdc1eaa['query'][_0x4f06('0x46')]));_0x1cfac3[_0x4f06('0x47')]=_0x1cfac3[_0x4f06('0x47')]['length']?_0x1cfac3[_0x4f06('0x47')]:_0x56d918['model'];_0x1cfac3['order']=qs[_0x4f06('0x4b')](_0xdc1eaa['query'][_0x4f06('0x4b')]);_0x1cfac3[_0x4f06('0x4c')]=qs['filters'](_[_0x4f06('0x4d')](_0xdc1eaa[_0x4f06('0x45')],_0x56d918['filters']));if(_0xdc1eaa[_0x4f06('0x45')][_0x4f06('0x4f')]){_0x1cfac3[_0x4f06('0x4c')]=_[_0x4f06('0x50')](_0x1cfac3[_0x4f06('0x4c')],{'$or':_[_0x4f06('0x41')](_0x1cfac3[_0x4f06('0x47')],function(_0x3b6ef7){var _0x598722={};_0x598722[_0x3b6ef7]={'$like':'%'+_0xdc1eaa['query'][_0x4f06('0x4f')]+'%'};return _0x598722;})});}_0x1cfac3=_['merge']({},_0x1cfac3,_0xdc1eaa[_0x4f06('0x51')]);return _0x1f354d[_0x4f06('0xe6')](_0x1cfac3);}})[_0x4f06('0x21')](function(_0x353825){if(_0x353825){_0x811b8f=_0x353825[_0x4f06('0x48')];if(!_0xdc1eaa['query'][_0x4f06('0x49')](_0x4f06('0x68'))){_0x1cfac3['limit']=qs['limit'](_0xdc1eaa[_0x4f06('0x45')][_0x4f06('0x30')]);_0x1cfac3[_0x4f06('0x2e')]=qs[_0x4f06('0x2e')](_0xdc1eaa['query'][_0x4f06('0x2e')]);}return _0x1f354d[_0x4f06('0xe6')](_0x1cfac3);}})[_0x4f06('0x21')](function(_0x331740){if(_0x331740){return _0x331740?{'count':_0x811b8f,'rows':_0x331740}:null;}})[_0x4f06('0x21')](respondWithResult(_0x531631,null))[_0x4f06('0x2b')](handleError(_0x531631,null));};
\ No newline at end of file
+var _0xb2aa=['getApplications','getInteractions','Contact','User','Owner','fullname','Tag','Tags','color','tag','to\x20is\x20mandatory','List','DESC','out','dataValues','received\x20delivery\x20report\x20from','inspect','skebby','skebby_dispatch_id','connectel','requestid','statusInt','status_code','infobip','groupName','DELIVERED','redif','update','error_code','clickatell','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','ids','userSmsAccount:save','removeAgents','userSmsAccount:remove','emit','eml-format','rimraf','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','destroy','then','get','SmsAccounts','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','SmsAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','map','type','VIRTUAL','options','includeAll','include','findAll','rows','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','hasOwnProperty','removeDispositions','getAnswers','CannedAnswer','removeAnswers','notify','sms','SmsApplication','Applications','orderBy','priority','asc','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','account','twilio','From','Body','messageId','from','text','clicksend','message_id','plivo','MessageUUID','results','csc','segmentedMessage','fromNumber','bandwidth','intelepeer','refid','ValidationError','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','list','omit','CmContact','contact','SmsInteraction','spread','created','autoclose','push','applications','close','unmanaged','interaction','SmsMessage','ContactId','UserId','waitForTheAssignedAgent','*,*,*,*','SmsQueue','queueId','queue','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','set','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','sequelize','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','finally','send'];(function(_0x178f48,_0x9bfb8f){var _0x12395d=function(_0x5a6e6f){while(--_0x5a6e6f){_0x178f48['push'](_0x178f48['shift']());}};_0x12395d(++_0x9bfb8f);}(_0xb2aa,0x115));var _0xab2a=function(_0x5014ea,_0x49334d){_0x5014ea=_0x5014ea-0x0;var _0x4a5600=_0xb2aa[_0x5014ea];return _0x4a5600;};'use strict';var emlformat=require(_0xab2a('0x0'));var rimraf=require(_0xab2a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xab2a('0x2'));var util=require('util');var path=require(_0xab2a('0x3'));var sox=require(_0xab2a('0x4'));var csv=require(_0xab2a('0x5'));var ejs=require(_0xab2a('0x6'));var fs=require('fs');var fs_extra=require(_0xab2a('0x7'));var _=require(_0xab2a('0x8'));var squel=require(_0xab2a('0x9'));var crypto=require(_0xab2a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xab2a('0xb'));var toCsv=require(_0xab2a('0x5'));var querystring=require(_0xab2a('0xc'));var Papa=require(_0xab2a('0xd'));var Redis=require(_0xab2a('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xab2a('0xf'));var hardwareService=require(_0xab2a('0x10'));var logger=require(_0xab2a('0x11'))(_0xab2a('0x12'));var utils=require(_0xab2a('0x13'));var config=require(_0xab2a('0x14'));var licenseUtil=require(_0xab2a('0x15'));var db=require(_0xab2a('0x16'))['db'];config[_0xab2a('0x17')]=_[_0xab2a('0x18')](config[_0xab2a('0x17')],{'host':_0xab2a('0x19'),'port':0x18eb});var socket=require(_0xab2a('0x1a'))(new Redis(config[_0xab2a('0x17')]));require('./smsAccount.socket')['register'](socket);var jayson=require(_0xab2a('0x1b'));var client=jayson[_0xab2a('0x1c')][_0xab2a('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x233ea2,_0x312cdd,_0x258f96,_0x2b3085){return new BPromise(function(_0x44a7a0,_0x1df945){var _0x4da306=_0x2b3085||client;return _0x4da306['request'](_0x233ea2,_0x258f96)['then'](function(_0x4c9546){logger[_0xab2a('0x1e')](_0xab2a('0x1f'),_0x312cdd,_0xab2a('0x20'));logger[_0xab2a('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x312cdd,_0xab2a('0x20'),JSON[_0xab2a('0x22')](_0x4c9546));if(_0x4c9546['error']){if(_0x4c9546[_0xab2a('0x23')][_0xab2a('0x24')]===0x1f4){logger[_0xab2a('0x23')](_0xab2a('0x1f'),_0x312cdd,_0x4c9546[_0xab2a('0x23')][_0xab2a('0x25')]);return _0x1df945(_0x4c9546['error'][_0xab2a('0x25')]);}logger[_0xab2a('0x23')](_0xab2a('0x1f'),_0x312cdd,_0x4c9546[_0xab2a('0x23')][_0xab2a('0x25')]);return _0x44a7a0(_0x4c9546['error']['message']);}else{logger[_0xab2a('0x1e')]('SmsAccount,\x20%s,\x20%s',_0x312cdd,_0xab2a('0x20'));_0x44a7a0(_0x4c9546[_0xab2a('0x26')][_0xab2a('0x25')]);}})[_0xab2a('0x27')](function(_0x5343bc){logger['error'](_0xab2a('0x1f'),_0x312cdd,_0x5343bc);_0x1df945(_0x5343bc);});});}function respondWithStatusCode(_0x27e98d,_0x3df41f){_0x3df41f=_0x3df41f||0xcc;return function(_0x15c260){if(_0x15c260){return _0x27e98d[_0xab2a('0x28')](_0x3df41f);}return _0x27e98d[_0xab2a('0x29')](_0x3df41f)[_0xab2a('0x2a')]();};}function respondWithResult(_0x338397,_0x1f04a4){_0x1f04a4=_0x1f04a4||0xc8;return function(_0x50bc0c){if(_0x50bc0c){return _0x338397[_0xab2a('0x29')](_0x1f04a4)[_0xab2a('0x2b')](_0x50bc0c);}};}function respondWithFilteredResult(_0x1afc43,_0x2dced2){return function(_0x5f04ce){if(_0x5f04ce){var _0x21f572=typeof _0x2dced2['offset']===_0xab2a('0x2c')&&typeof _0x2dced2[_0xab2a('0x2d')]===_0xab2a('0x2c');var _0x3e84b4=_0x5f04ce[_0xab2a('0x2e')];var _0x1c0f46=_0x21f572?0x0:_0x2dced2[_0xab2a('0x2f')];var _0xcb281b=_0x21f572?_0x5f04ce[_0xab2a('0x2e')]:_0x2dced2[_0xab2a('0x2f')]+_0x2dced2['limit'];var _0x21a6f3;if(_0xcb281b>=_0x3e84b4){_0xcb281b=_0x3e84b4;_0x21a6f3=0xc8;}else{_0x21a6f3=0xce;}_0x1afc43['status'](_0x21a6f3);return _0x1afc43['set'](_0xab2a('0x30'),_0x1c0f46+'-'+_0xcb281b+'/'+_0x3e84b4)['json'](_0x5f04ce);}return null;};}function patchUpdates(_0x3cf9b8){return function(_0x3ed8b5){try{jsonpatch['apply'](_0x3ed8b5,_0x3cf9b8,!![]);}catch(_0x1582de){return BPromise['reject'](_0x1582de);}return _0x3ed8b5['save']();};}function saveUpdates(_0x47301f,_0x1c6eee){return function(_0x16129b){if(_0x16129b){return _0x16129b['update'](_0x47301f)['then'](function(_0x56910e){return _0x56910e;});}return null;};}function removeEntity(_0x4aa63c,_0x461c4f){return function(_0x2d711f){if(_0x2d711f){return _0x2d711f[_0xab2a('0x31')]()[_0xab2a('0x32')](function(){var _0x4db1d0=_0x2d711f[_0xab2a('0x33')]({'plain':!![]});var _0x268eae=_0xab2a('0x34');return db[_0xab2a('0x35')]['destroy']({'where':{'type':_0x268eae,'resourceId':_0x4db1d0['id']}})[_0xab2a('0x32')](function(){return _0x2d711f;});})['then'](function(){_0x4aa63c[_0xab2a('0x29')](0xcc)[_0xab2a('0x2a')]();});}};}function handleEntityNotFound(_0x53a61d,_0x18b908){return function(_0x4d68cb){if(!_0x4d68cb){_0x53a61d[_0xab2a('0x28')](0x194);}return _0x4d68cb;};}function handleError(_0x505809,_0x20bf29){_0x20bf29=_0x20bf29||0x1f4;return function(_0x430152){logger[_0xab2a('0x23')](_0x430152[_0xab2a('0x36')]);if(_0x430152[_0xab2a('0x37')]){delete _0x430152[_0xab2a('0x37')];}_0x505809['status'](_0x20bf29)['send'](_0x430152);};}exports[_0xab2a('0x38')]=function(_0x415b13,_0x584356){var _0x4cb9bc={'include':[{'model':db[_0xab2a('0x39')],'as':_0xab2a('0x3a')}]},_0x4ca7f5={},_0xad0f8a={'count':0x0,'rows':[]};var _0x4e9446=_['map'](db[_0xab2a('0x3b')][_0xab2a('0x3c')],function(_0x4b0358){return{'name':_0x4b0358[_0xab2a('0x3d')],'type':_0x4b0358['type'][_0xab2a('0x3e')]};});_0x4ca7f5[_0xab2a('0x3f')]=_['map'](_0x4e9446,'name');_0x4ca7f5[_0xab2a('0x40')]=_[_0xab2a('0x41')](_0x415b13['query']);_0x4ca7f5[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x4ca7f5['model'],_0x4ca7f5[_0xab2a('0x40')]);_0x4cb9bc[_0xab2a('0x44')]=_[_0xab2a('0x43')](_0x4ca7f5[_0xab2a('0x3f')],qs[_0xab2a('0x45')](_0x415b13['query'][_0xab2a('0x45')]));_0x4cb9bc[_0xab2a('0x44')]=_0x4cb9bc[_0xab2a('0x44')][_0xab2a('0x46')]?_0x4cb9bc[_0xab2a('0x44')]:_0x4ca7f5[_0xab2a('0x3f')];if(!_0x415b13[_0xab2a('0x40')]['hasOwnProperty'](_0xab2a('0x47'))){_0x4cb9bc[_0xab2a('0x2d')]=qs['limit'](_0x415b13[_0xab2a('0x40')][_0xab2a('0x2d')]);_0x4cb9bc[_0xab2a('0x2f')]=qs['offset'](_0x415b13['query'][_0xab2a('0x2f')]);}_0x4cb9bc[_0xab2a('0x48')]=qs['sort'](_0x415b13[_0xab2a('0x40')][_0xab2a('0x49')]);_0x4cb9bc['where']=qs['filters'](_[_0xab2a('0x4a')](_0x415b13[_0xab2a('0x40')],_0x4ca7f5[_0xab2a('0x42')]),_0x4e9446);if(_0x415b13[_0xab2a('0x40')][_0xab2a('0x4b')]){_0x4cb9bc[_0xab2a('0x4c')]=_[_0xab2a('0x4d')](_0x4cb9bc[_0xab2a('0x4c')],{'$or':_[_0xab2a('0x4e')](_0x4e9446,function(_0x2b958d){if(_0x2b958d[_0xab2a('0x4f')]!==_0xab2a('0x50')){var _0x18141d={};_0x18141d[_0x2b958d['name']]={'$like':'%'+_0x415b13[_0xab2a('0x40')][_0xab2a('0x4b')]+'%'};return _0x18141d;}})});}_0x4cb9bc=_[_0xab2a('0x4d')]({},_0x4cb9bc,_0x415b13[_0xab2a('0x51')]);var _0x54854d={'where':_0x4cb9bc[_0xab2a('0x4c')]};return db['SmsAccount']['count'](_0x54854d)[_0xab2a('0x32')](function(_0x380a5c){_0xad0f8a[_0xab2a('0x2e')]=_0x380a5c;if(_0x415b13['query'][_0xab2a('0x52')]){_0x4cb9bc[_0xab2a('0x53')]=[{'all':!![]}];}return db['SmsAccount'][_0xab2a('0x54')](_0x4cb9bc);})[_0xab2a('0x32')](function(_0x9b4d9b){_0xad0f8a[_0xab2a('0x55')]=_0x9b4d9b;return _0xad0f8a;})[_0xab2a('0x32')](respondWithFilteredResult(_0x584356,_0x4cb9bc))['catch'](handleError(_0x584356,null));};exports['show']=function(_0x14b856,_0x93d092){var _0x2be321={'raw':![],'where':{'id':_0x14b856[_0xab2a('0x56')]['id']},'include':[{'model':db[_0xab2a('0x39')],'as':_0xab2a('0x3a')}]},_0x31e5e6={};_0x31e5e6['model']=_[_0xab2a('0x41')](db[_0xab2a('0x3b')][_0xab2a('0x3c')]);_0x31e5e6[_0xab2a('0x40')]=_[_0xab2a('0x41')](_0x14b856[_0xab2a('0x40')]);_0x31e5e6[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x31e5e6[_0xab2a('0x3f')],_0x31e5e6[_0xab2a('0x40')]);_0x2be321[_0xab2a('0x44')]=_[_0xab2a('0x43')](_0x31e5e6[_0xab2a('0x3f')],qs[_0xab2a('0x45')](_0x14b856[_0xab2a('0x40')][_0xab2a('0x45')]));_0x2be321[_0xab2a('0x44')]=_0x2be321[_0xab2a('0x44')]['length']?_0x2be321['attributes']:_0x31e5e6[_0xab2a('0x3f')];if(_0x14b856[_0xab2a('0x40')][_0xab2a('0x52')]){_0x2be321[_0xab2a('0x53')]=[{'all':!![]}];}_0x2be321=_[_0xab2a('0x4d')]({},_0x2be321,_0x14b856['options']);return db['SmsAccount'][_0xab2a('0x57')](_0x2be321)['then'](handleEntityNotFound(_0x93d092,null))[_0xab2a('0x32')](respondWithResult(_0x93d092,null))[_0xab2a('0x27')](handleError(_0x93d092,null));};exports['create']=function(_0x2c5658,_0x329e2e){return db[_0xab2a('0x3b')][_0xab2a('0x58')](_0x2c5658[_0xab2a('0x59')],{})[_0xab2a('0x32')](function(_0x58ff73){var _0x3a2320=_0x2c5658[_0xab2a('0x5a')]['get']({'plain':!![]});if(!_0x3a2320)throw new Error(_0xab2a('0x5b'));if(_0x3a2320[_0xab2a('0x5c')]==='user'){var _0x45f73b=_0x58ff73[_0xab2a('0x33')]({'plain':!![]});var _0x2e44df=_0xab2a('0x34');return db['UserProfileSection'][_0xab2a('0x57')]({'where':{'name':_0x2e44df,'userProfileId':_0x3a2320[_0xab2a('0x5d')]},'raw':!![]})['then'](function(_0x19e548){if(_0x19e548&&_0x19e548[_0xab2a('0x5e')]===0x0){return db[_0xab2a('0x35')][_0xab2a('0x58')]({'name':_0x45f73b[_0xab2a('0x37')],'resourceId':_0x45f73b['id'],'type':_0x19e548[_0xab2a('0x37')],'sectionId':_0x19e548['id']},{})[_0xab2a('0x32')](function(){return _0x58ff73;});}else{return _0x58ff73;}})['catch'](function(_0x139004){logger['error'](_0xab2a('0x5f'),_0x139004);throw _0x139004;});}return _0x58ff73;})[_0xab2a('0x32')](respondWithResult(_0x329e2e,0xc9))[_0xab2a('0x27')](handleError(_0x329e2e,null));};exports['update']=function(_0x1d2ee7,_0x19102e){if(_0x1d2ee7[_0xab2a('0x59')]['id']){delete _0x1d2ee7['body']['id'];}return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x1d2ee7[_0xab2a('0x56')]['id']},'include':[{'model':db[_0xab2a('0x39')],'as':'mandatoryDispositionPause'}]})[_0xab2a('0x32')](handleEntityNotFound(_0x19102e,null))[_0xab2a('0x32')](saveUpdates(_0x1d2ee7[_0xab2a('0x59')],null))[_0xab2a('0x32')](respondWithResult(_0x19102e,null))[_0xab2a('0x27')](handleError(_0x19102e,null));};exports[_0xab2a('0x31')]=function(_0x218136,_0x2e894e){return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x218136['params']['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x2e894e,null))[_0xab2a('0x32')](removeEntity(_0x2e894e,null))[_0xab2a('0x27')](handleError(_0x2e894e,null));};exports[_0xab2a('0x60')]=function(_0x38a31d,_0x4e1b5f){return db[_0xab2a('0x3b')][_0xab2a('0x60')]()[_0xab2a('0x32')](respondWithResult(_0x4e1b5f,null))[_0xab2a('0x27')](handleError(_0x4e1b5f,null));};exports[_0xab2a('0x61')]=function(_0x48e4a2,_0xa652c6,_0x1f622f){if(_0x48e4a2[_0xab2a('0x59')]['id']){delete _0x48e4a2[_0xab2a('0x59')]['id'];}return db[_0xab2a('0x3b')][_0xab2a('0x57')]({'where':{'id':_0x48e4a2['params']['id']}})['then'](handleEntityNotFound(_0xa652c6,null))[_0xab2a('0x32')](function(_0x260260){if(_0x260260){_0x48e4a2[_0xab2a('0x59')][_0xab2a('0x62')]=_0x260260['id'];return db[_0xab2a('0x63')][_0xab2a('0x58')](_0x48e4a2[_0xab2a('0x59')]);}})[_0xab2a('0x32')](respondWithResult(_0xa652c6,null))[_0xab2a('0x27')](handleError(_0xa652c6,null));};exports[_0xab2a('0x64')]=function(_0x3b3b74,_0x815b0,_0x41e8f2){var _0x1c11dd={'raw':![],'where':{}};var _0xf732de={};var _0x18b39f={'count':0x0,'rows':[]};return db['SmsAccount'][_0xab2a('0x65')]({'where':{'id':_0x3b3b74[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x815b0,null))[_0xab2a('0x32')](function(_0x5c41cd){if(_0x5c41cd){_0xf732de[_0xab2a('0x3f')]=_[_0xab2a('0x41')](db['Disposition'][_0xab2a('0x3c')]);_0xf732de[_0xab2a('0x40')]=_['keys'](_0x3b3b74['query']);_0xf732de[_0xab2a('0x42')]=_['intersection'](_0xf732de[_0xab2a('0x3f')],_0xf732de['query']);_0x1c11dd[_0xab2a('0x44')]=_['intersection'](_0xf732de[_0xab2a('0x3f')],qs['fields'](_0x3b3b74['query']['fields']));_0x1c11dd['attributes']=_0x1c11dd['attributes']['length']?_0x1c11dd[_0xab2a('0x44')]:_0xf732de['model'];if(!_0x3b3b74[_0xab2a('0x40')][_0xab2a('0x66')](_0xab2a('0x47'))){_0x1c11dd['limit']=qs['limit'](_0x3b3b74[_0xab2a('0x40')][_0xab2a('0x2d')]);_0x1c11dd['offset']=qs['offset'](_0x3b3b74['query']['offset']);}_0x1c11dd[_0xab2a('0x48')]=qs[_0xab2a('0x49')](_0x3b3b74[_0xab2a('0x40')]['sort']);_0x1c11dd[_0xab2a('0x4c')]=qs[_0xab2a('0x42')](_['pick'](_0x3b3b74['query'],_0xf732de['filters']));_0x1c11dd[_0xab2a('0x4c')][_0xab2a('0x62')]=_0x5c41cd['id'];if(_0x3b3b74[_0xab2a('0x40')][_0xab2a('0x4b')]){_0x1c11dd[_0xab2a('0x4c')]=_[_0xab2a('0x4d')](_0x1c11dd[_0xab2a('0x4c')],{'$or':_[_0xab2a('0x4e')](_0x1c11dd[_0xab2a('0x44')],function(_0x185f30){var _0x4243f3={};_0x4243f3[_0x185f30]={'$like':'%'+_0x3b3b74[_0xab2a('0x40')][_0xab2a('0x4b')]+'%'};return _0x4243f3;})});}_0x1c11dd=_[_0xab2a('0x4d')]({},_0x1c11dd,_0x3b3b74[_0xab2a('0x51')]);return db[_0xab2a('0x63')][_0xab2a('0x2e')]({'where':_0x1c11dd[_0xab2a('0x4c')]})[_0xab2a('0x32')](function(_0x289c37){_0x18b39f['count']=_0x289c37;if(_0x3b3b74[_0xab2a('0x40')][_0xab2a('0x52')]){_0x1c11dd[_0xab2a('0x53')]=[{'all':!![]}];}return db[_0xab2a('0x63')][_0xab2a('0x54')](_0x1c11dd);})['then'](function(_0x266693){_0x18b39f[_0xab2a('0x55')]=_0x266693;return _0x18b39f;});}})[_0xab2a('0x32')](respondWithFilteredResult(_0x815b0,_0x1c11dd))[_0xab2a('0x27')](handleError(_0x815b0,null));};exports[_0xab2a('0x67')]=function(_0x1a4adc,_0x101b6d,_0x5a5c4d){return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x1a4adc[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x101b6d,null))[_0xab2a('0x32')](function(_0x24783e){if(_0x24783e){return _0x24783e['removeDispositions'](_0x1a4adc[_0xab2a('0x40')]['ids']);}})[_0xab2a('0x32')](respondWithStatusCode(_0x101b6d,null))[_0xab2a('0x27')](handleError(_0x101b6d,null));};exports['addAnswer']=function(_0x2a159d,_0x3797b4,_0x5ce85c){if(_0x2a159d['body']['id']){delete _0x2a159d[_0xab2a('0x59')]['id'];}return db['SmsAccount'][_0xab2a('0x57')]({'where':{'id':_0x2a159d['params']['id']}})['then'](handleEntityNotFound(_0x3797b4,null))[_0xab2a('0x32')](function(_0x5cdab2){if(_0x5cdab2){_0x2a159d['body'][_0xab2a('0x62')]=_0x5cdab2['id'];return db['CannedAnswer'][_0xab2a('0x58')](_0x2a159d[_0xab2a('0x59')]);}})['then'](respondWithResult(_0x3797b4,null))['catch'](handleError(_0x3797b4,null));};exports[_0xab2a('0x68')]=function(_0x2faf6b,_0x1959cb,_0x4241d8){var _0x1499d8={'raw':![],'where':{}};var _0x4da22c={};var _0x2eb8d0={'count':0x0,'rows':[]};return db[_0xab2a('0x3b')]['findOne']({'where':{'id':_0x2faf6b['params']['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x1959cb,null))[_0xab2a('0x32')](function(_0x3dc468){if(_0x3dc468){_0x4da22c[_0xab2a('0x3f')]=_[_0xab2a('0x41')](db[_0xab2a('0x69')][_0xab2a('0x3c')]);_0x4da22c['query']=_[_0xab2a('0x41')](_0x2faf6b['query']);_0x4da22c[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x4da22c['model'],_0x4da22c[_0xab2a('0x40')]);_0x1499d8['attributes']=_[_0xab2a('0x43')](_0x4da22c['model'],qs['fields'](_0x2faf6b[_0xab2a('0x40')]['fields']));_0x1499d8['attributes']=_0x1499d8[_0xab2a('0x44')][_0xab2a('0x46')]?_0x1499d8[_0xab2a('0x44')]:_0x4da22c[_0xab2a('0x3f')];if(!_0x2faf6b[_0xab2a('0x40')][_0xab2a('0x66')](_0xab2a('0x47'))){_0x1499d8[_0xab2a('0x2d')]=qs[_0xab2a('0x2d')](_0x2faf6b['query'][_0xab2a('0x2d')]);_0x1499d8[_0xab2a('0x2f')]=qs[_0xab2a('0x2f')](_0x2faf6b[_0xab2a('0x40')]['offset']);}_0x1499d8[_0xab2a('0x48')]=qs[_0xab2a('0x49')](_0x2faf6b['query'][_0xab2a('0x49')]);_0x1499d8['where']=qs['filters'](_[_0xab2a('0x4a')](_0x2faf6b[_0xab2a('0x40')],_0x4da22c[_0xab2a('0x42')]));_0x1499d8[_0xab2a('0x4c')][_0xab2a('0x62')]=_0x3dc468['id'];if(_0x2faf6b[_0xab2a('0x40')][_0xab2a('0x4b')]){_0x1499d8[_0xab2a('0x4c')]=_[_0xab2a('0x4d')](_0x1499d8['where'],{'$or':_[_0xab2a('0x4e')](_0x1499d8[_0xab2a('0x44')],function(_0x15a6d9){var _0x14b6f5={};_0x14b6f5[_0x15a6d9]={'$like':'%'+_0x2faf6b['query']['filter']+'%'};return _0x14b6f5;})});}_0x1499d8=_['merge']({},_0x1499d8,_0x2faf6b['options']);return db[_0xab2a('0x69')][_0xab2a('0x2e')]({'where':_0x1499d8[_0xab2a('0x4c')]})[_0xab2a('0x32')](function(_0x3eae86){_0x2eb8d0[_0xab2a('0x2e')]=_0x3eae86;if(_0x2faf6b[_0xab2a('0x40')][_0xab2a('0x52')]){_0x1499d8[_0xab2a('0x53')]=[{'all':!![]}];}return db['CannedAnswer'][_0xab2a('0x54')](_0x1499d8);})[_0xab2a('0x32')](function(_0x50a822){_0x2eb8d0['rows']=_0x50a822;return _0x2eb8d0;});}})[_0xab2a('0x32')](respondWithFilteredResult(_0x1959cb,_0x1499d8))['catch'](handleError(_0x1959cb,null));};exports['removeAnswers']=function(_0x387530,_0x33fec5,_0x1862bf){return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x387530[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x33fec5,null))[_0xab2a('0x32')](function(_0x17ffac){if(_0x17ffac){return _0x17ffac[_0xab2a('0x6a')](_0x387530[_0xab2a('0x40')]['ids']);}})['then'](respondWithStatusCode(_0x33fec5,null))['catch'](handleError(_0x33fec5,null));};exports[_0xab2a('0x6b')]=function(_0x47f7d0,_0x1aa3a9,_0x382637){var _0x3e5110={'channel':_0xab2a('0x6c')};var _0x25a1a0=[];var _0x222dbd=[];var _0x5b3540={};return db[_0xab2a('0x3b')][_0xab2a('0x57')]({'where':{'id':_0x47f7d0[_0xab2a('0x56')]['id']},'include':[{'model':db[_0xab2a('0x6d')],'as':_0xab2a('0x6e')}]})[_0xab2a('0x32')](handleEntityNotFound(_0x1aa3a9,null))['then'](function(_0x3ec482){_0x3e5110['account']=_0x3ec482;_0x3e5110['applications']=_[_0xab2a('0x6f')](_0x3ec482['Applications'],[_0xab2a('0x70')],[_0xab2a('0x71')]);if(_0x3e5110['account'][_0xab2a('0x6e')]){delete _0x3e5110['account'][_0xab2a('0x6e')];}return db['CmContact'][_0xab2a('0x60')]();})[_0xab2a('0x32')](function(_0x50e4a1){if(!_0x50e4a1){throw new db[(_0xab2a('0x72'))]['ValidationError'](_0xab2a('0x73'));}_0x25a1a0=_[_0xab2a('0x74')](_[_0xab2a('0x41')](_0x50e4a1),[_0xab2a('0x75'),_0xab2a('0x76')]);_0x222dbd=_[_0xab2a('0x74')](_['keys'](_0x50e4a1),['createdAt','updatedAt','CompanyId',_0xab2a('0x77')]);_0x3e5110[_0xab2a('0x59')]={'mapKey':_0xab2a('0x78')};if(_0x3e5110[_0xab2a('0x79')][_0xab2a('0x4f')]){switch(_0x3e5110[_0xab2a('0x79')][_0xab2a('0x4f')]){case _0xab2a('0x7a'):_0x3e5110[_0xab2a('0x59')]['from']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x7b')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')]=_0x47f7d0['body'][_0xab2a('0x7c')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7d')]=_0x47f7d0[_0xab2a('0x59')]['MessageSid'];break;case'skebby':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')]='+'+_0x47f7d0[_0xab2a('0x59')]['sender'];_0x3e5110[_0xab2a('0x59')]['body']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x7f')];break;case'connectel':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')]=_0x47f7d0[_0xab2a('0x59')]['from'];_0x3e5110['body']['body']=_0x47f7d0[_0xab2a('0x59')]['message'];break;case _0xab2a('0x80'):_0x3e5110[_0xab2a('0x59')]['from']=_0x47f7d0['body']['from'];_0x3e5110['body']['body']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x59')];_0x3e5110[_0xab2a('0x59')]['messageId']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x81')];break;case _0xab2a('0x82'):_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x7b')];_0x3e5110[_0xab2a('0x59')]['body']=_0x47f7d0[_0xab2a('0x59')]['Text'];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7d')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x83')];break;case'infobip':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')]='+'+_0x47f7d0['body']['results'][0x0][_0xab2a('0x7e')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x84')][0x0][_0xab2a('0x7f')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7d')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x84')][0x0][_0xab2a('0x7d')];break;case _0xab2a('0x85'):_0x3e5110['body']['from']=_0x47f7d0[_0xab2a('0x59')]['originatingAddress'];_0x3e5110['body'][_0xab2a('0x59')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x86')][_0xab2a('0x25')];break;case'clickatell':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')]=_0x47f7d0['body'][_0xab2a('0x87')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x7f')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7d')]=_0x47f7d0[_0xab2a('0x59')]['replyMessageId'];break;case _0xab2a('0x88'):_0x3e5110[_0xab2a('0x59')]['messageId']=_0x47f7d0[_0xab2a('0x59')][0x0][_0xab2a('0x25')]['id'];_0x3e5110[_0xab2a('0x59')]['from']=_0x47f7d0[_0xab2a('0x59')][0x0][_0xab2a('0x25')][_0xab2a('0x7e')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')]=_0x47f7d0[_0xab2a('0x59')][0x0][_0xab2a('0x25')][_0xab2a('0x7f')];break;case _0xab2a('0x89'):_0x3e5110[_0xab2a('0x59')]['from']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x7e')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')]=_0x47f7d0['body'][_0xab2a('0x25')];_0x3e5110['body']['messageId']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x8a')];break;}}if(_0x3e5110[_0xab2a('0x59')]['id']){delete _0x3e5110[_0xab2a('0x59')]['id'];}if(_['isNil'](_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')])){throw new db['Sequelize'][(_0xab2a('0x8b'))](_0xab2a('0x8c'));}if(_[_0xab2a('0x8d')](_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')])||_0x3e5110[_0xab2a('0x59')]['body']===''){throw new db[(_0xab2a('0x72'))][(_0xab2a('0x8b'))](_0xab2a('0x8e'));}if(_[_0xab2a('0x8d')](_0x3e5110[_0xab2a('0x59')][_0xab2a('0x8f')])){throw new db['Sequelize'][(_0xab2a('0x8b'))](_0xab2a('0x90')+_0x222dbd);}if(!_[_0xab2a('0x91')](_0x222dbd,_0x3e5110[_0xab2a('0x59')][_0xab2a('0x8f')])){throw new db['Sequelize'][(_0xab2a('0x8b'))](_0xab2a('0x92')+_0x222dbd);}_0x5b3540[_0x3e5110['body'][_0xab2a('0x8f')]]=_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')];return db[_0xab2a('0x93')][_0xab2a('0x57')]({'where':{'id':_0x3e5110[_0xab2a('0x79')]['ListId']},'include':[{'model':db['CmContact'],'as':_0xab2a('0x94'),'where':_0x5b3540,'limit':0x1,'order':[[_0xab2a('0x76'),'DESC']]}]});})[_0xab2a('0x32')](handleEntityNotFound(_0x1aa3a9,null))[_0xab2a('0x32')](function(_0x4d2cd6){if(_0x4d2cd6){_0x3e5110[_0xab2a('0x95')]=_[_0xab2a('0x96')](_0x4d2cd6,[_0xab2a('0x94')]);if(_0x4d2cd6['Contacts']['length']){return _0x4d2cd6[_0xab2a('0x94')][0x0];}var _0xe6626e=_[_0xab2a('0x18')](_0x3e5110[_0xab2a('0x59')],{'firstName':_0x3e5110['body'][_0xab2a('0x7e')],'ListId':_0x4d2cd6['id']});_0xe6626e[_0x3e5110[_0xab2a('0x59')][_0xab2a('0x8f')]]=_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')];return db[_0xab2a('0x97')][_0xab2a('0x58')](_0xe6626e,{'fields':_0x25a1a0,'raw':!![]});}})[_0xab2a('0x32')](handleEntityNotFound(_0x1aa3a9,null))[_0xab2a('0x32')](function(_0x5f3768){if(_0x5f3768){_0x3e5110[_0xab2a('0x98')]=_0x5f3768;var _0x160cba={'ContactId':_0x5f3768['id'],'phone':_0x3e5110[_0xab2a('0x59')]['from'],'SmsAccountId':_0x47f7d0[_0xab2a('0x56')]['id']};var _0x4239c3={'ContactId':_0x5f3768['id'],'SmsAccountId':_0x47f7d0[_0xab2a('0x56')]['id'],'closed':![]};return db[_0xab2a('0x99')][_0xab2a('0x57')]({'where':_0x4239c3})[_0xab2a('0x32')](function(_0x38b5b0){if(_0x38b5b0){return[_0x38b5b0,![]];}return db['SmsInteraction'][_0xab2a('0x58')](_0x160cba)[_0xab2a('0x32')](function(_0x49add5){return[_0x49add5,!![]];});});}})[_0xab2a('0x9a')](function(_0x7c38b6,_0x330674){_0x3e5110['interaction']=_0x7c38b6[_0xab2a('0x33')]({'plain':!![]});_0x3e5110['interaction'][_0xab2a('0x9b')]=![];if(_0x330674){if(_0x3e5110[_0xab2a('0x79')][_0xab2a('0x9c')]){_0x3e5110['applications'][_0xab2a('0x9d')]({'id':0x0,'priority':_0x3e5110[_0xab2a('0x9e')]['length']+0x1,'app':_0xab2a('0x9f'),'appdata':_0xab2a('0xa0'),'interval':'*,*,*,*'});}_0x3e5110[_0xab2a('0xa1')][_0xab2a('0x9b')]=!![];}return db[_0xab2a('0xa2')][_0xab2a('0x58')]({'phone':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')],'messageId':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7d')],'body':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')],'SmsAccountId':_0x47f7d0[_0xab2a('0x56')]['id'],'SmsInteractionId':_0x7c38b6['id'],'direction':'in','ContactId':_0x7c38b6[_0xab2a('0xa3')],'AttachmentId':_0x3e5110[_0xab2a('0x59')]['AttachmentId']});})[_0xab2a('0x32')](function(_0x43d1d0){_0x3e5110[_0xab2a('0x25')]=_0x43d1d0;if(!_0x3e5110['interaction'][_0xab2a('0xa4')])return;return db['User'][_0xab2a('0x57')]({'attributes':['id',_0xab2a('0x37')],'where':{'id':_0x3e5110['interaction'][_0xab2a('0xa4')]}});})[_0xab2a('0x32')](function(_0x598996){if(_0x598996){_0x3e5110['applications']['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x598996[_0xab2a('0x37')]+','+(_0x3e5110[_0xab2a('0x79')][_0xab2a('0xa5')]||0xa),'interval':_0xab2a('0xa6')});}if(!_0x3e5110[_0xab2a('0xa1')]['queueId'])return;return db[_0xab2a('0xa7')]['find']({'attributes':['id',_0xab2a('0x37')],'where':{'id':_0x3e5110[_0xab2a('0xa1')][_0xab2a('0xa8')]}});})[_0xab2a('0x32')](function(_0x1d3b96){if(_0x1d3b96){_0x3e5110[_0xab2a('0x9e')]['unshift']({'id':0x0,'priority':0x1,'app':_0xab2a('0xa9'),'appdata':_0x1d3b96[_0xab2a('0x37')]+','+(_0x3e5110[_0xab2a('0x79')]['waitForTheAssignedQueue']||0x12c),'interval':_0xab2a('0xa6')});}return respondWithRpcPromise(_0xab2a('0xaa'),_0xab2a('0xab'),_0x3e5110);})['then'](function(_0x4dfef2){if(_0x4dfef2){var _0xcc3f63=0xc8;var _0xdd1d41=_0xab2a('0xac');logger[_0xab2a('0x1e')](_0xab2a('0xad'),_0xdd1d41,_0xcc3f63,_0xab2a('0xae'));logger[_0xab2a('0x21')](_0xab2a('0xaf'),_0xdd1d41,_0xcc3f63,_0xab2a('0xae'),JSON[_0xab2a('0x22')](_0x4dfef2));if(_0x3e5110[_0xab2a('0x79')][_0xab2a('0x4f')]===_0xab2a('0x7a')){return _0x1aa3a9[_0xab2a('0x29')](_0xcc3f63)[_0xab2a('0xb0')](_0xab2a('0xb1'),_0xab2a('0xb2'))['send'](_0xab2a('0xb3'));}else{return _0x1aa3a9[_0xab2a('0x29')](_0xcc3f63)[_0xab2a('0x2b')](_0x4dfef2);}}})[_0xab2a('0x27')](handleError(_0x1aa3a9,null));};exports[_0xab2a('0xb4')]=function(_0x390528,_0x309a25){var _0x423f7a=_0x390528[_0xab2a('0x56')]['id'];var _0x9392b6=_0x390528[_0xab2a('0x59')];var _0x428c3e=0xc8;var _0x126aef=null;return db['sequelize'][_0xab2a('0xb5')]({'isolationLevel':db[_0xab2a('0xb6')]['Transaction'][_0xab2a('0xb7')][_0xab2a('0xb8')]},function(_0x71fe83){return db['SmsAccount']['findOne']({'where':{'id':_0x423f7a},'transaction':_0x71fe83})['then'](function(_0x24aab6){if(_0x24aab6){return db['SmsApplication'][_0xab2a('0x31')]({'where':{'SmsAccountId':_0x423f7a},'transaction':_0x71fe83})[_0xab2a('0x32')](function(){var _0x14403b=_[_0xab2a('0x4e')](_0x9392b6,function(_0x3a8cca){_0x3a8cca[_0xab2a('0x62')]=_0x423f7a;return _0x3a8cca;});return db[_0xab2a('0x6d')][_0xab2a('0xb9')](_0x14403b,{'transaction':_0x71fe83});});}else{_0x428c3e=0x194;_0x126aef=[];}});})[_0xab2a('0x32')](function(){if(_0x428c3e!==0x194){return db[_0xab2a('0x6d')][_0xab2a('0xba')]({'where':{'SmsAccountId':_0x423f7a},'order':'priority'})[_0xab2a('0x32')](function(_0x428d4e){_0x126aef=_0x428d4e;});}})['catch'](function(_0x312c1f){_0x428c3e=0x1f4;logger[_0xab2a('0x23')](_0x312c1f[_0xab2a('0x36')]);if(_0x312c1f[_0xab2a('0x37')]){delete _0x312c1f['name'];}_0x126aef=_0x312c1f;})[_0xab2a('0xbb')](function(){if(_0x126aef===null){_0x309a25['sendStatus'](_0x428c3e);}else{if(_0x428c3e===0x1f4){_0x309a25[_0xab2a('0x29')](_0x428c3e)[_0xab2a('0xbc')](_0x126aef);}else{_0x309a25['status'](_0x428c3e)[_0xab2a('0x2b')](_0x126aef);}}});};exports[_0xab2a('0xbd')]=function(_0x415d60,_0x3394d8,_0x31d1aa){var _0x4f0c80={};var _0x157032={};var _0xab39e2;var _0xf45edb;return db[_0xab2a('0x3b')][_0xab2a('0x65')]({'where':{'id':_0x415d60[_0xab2a('0x56')]['id']}})['then'](handleEntityNotFound(_0x3394d8,null))[_0xab2a('0x32')](function(_0x5305a4){if(_0x5305a4){_0xab39e2=_0x5305a4;_0x157032['model']=_[_0xab2a('0x41')](db[_0xab2a('0x6d')][_0xab2a('0x3c')]);_0x157032[_0xab2a('0x40')]=_[_0xab2a('0x41')](_0x415d60[_0xab2a('0x40')]);_0x157032[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x157032[_0xab2a('0x3f')],_0x157032[_0xab2a('0x40')]);_0x4f0c80[_0xab2a('0x44')]=_['intersection'](_0x157032['model'],qs[_0xab2a('0x45')](_0x415d60[_0xab2a('0x40')][_0xab2a('0x45')]));_0x4f0c80[_0xab2a('0x44')]=_0x4f0c80[_0xab2a('0x44')][_0xab2a('0x46')]?_0x4f0c80[_0xab2a('0x44')]:_0x157032['model'];_0x4f0c80['order']=qs[_0xab2a('0x49')](_0x415d60[_0xab2a('0x40')]['sort']);_0x4f0c80[_0xab2a('0x4c')]=qs[_0xab2a('0x42')](_[_0xab2a('0x4a')](_0x415d60['query'],_0x157032[_0xab2a('0x42')]));if(_0x415d60['query'][_0xab2a('0x4b')]){_0x4f0c80[_0xab2a('0x4c')]=_['merge'](_0x4f0c80[_0xab2a('0x4c')],{'$or':_[_0xab2a('0x4e')](_0x4f0c80[_0xab2a('0x44')],function(_0x523a59){var _0xa58e38={};_0xa58e38[_0x523a59]={'$like':'%'+_0x415d60[_0xab2a('0x40')][_0xab2a('0x4b')]+'%'};return _0xa58e38;})});}_0x4f0c80=_[_0xab2a('0x4d')]({},_0x4f0c80,_0x415d60[_0xab2a('0x51')]);return _0xab39e2[_0xab2a('0xbd')](_0x4f0c80);}})[_0xab2a('0x32')](function(_0x52eeb1){if(_0x52eeb1){_0xf45edb=_0x52eeb1['length'];if(!_0x415d60[_0xab2a('0x40')][_0xab2a('0x66')]('nolimit')){_0x4f0c80['limit']=qs[_0xab2a('0x2d')](_0x415d60['query']['limit']);_0x4f0c80[_0xab2a('0x2f')]=qs['offset'](_0x415d60[_0xab2a('0x40')][_0xab2a('0x2f')]);}return _0xab39e2[_0xab2a('0xbd')](_0x4f0c80);}})[_0xab2a('0x32')](function(_0x7c95e5){if(_0x7c95e5){return _0x7c95e5?{'count':_0xf45edb,'rows':_0x7c95e5}:null;}})[_0xab2a('0x32')](respondWithResult(_0x3394d8,null))[_0xab2a('0x27')](handleError(_0x3394d8,null));};exports[_0xab2a('0xbe')]=function(_0x27ba63,_0x49324a,_0x1618c5){var _0x185fb6={'raw':![],'where':{}};var _0x4c0847={};var _0x52ad12={'count':0x0,'rows':[]};return db[_0xab2a('0x3b')][_0xab2a('0x65')]({'where':{'id':_0x27ba63[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x49324a,null))[_0xab2a('0x32')](function(_0x36883b){if(_0x36883b){_0x4c0847[_0xab2a('0x3f')]=_[_0xab2a('0x41')](db[_0xab2a('0x99')][_0xab2a('0x3c')]);_0x4c0847[_0xab2a('0x40')]=_[_0xab2a('0x41')](_0x27ba63[_0xab2a('0x40')]);_0x4c0847[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x4c0847[_0xab2a('0x3f')],_0x4c0847[_0xab2a('0x40')]);_0x185fb6[_0xab2a('0x44')]=_[_0xab2a('0x43')](_0x4c0847[_0xab2a('0x3f')],qs[_0xab2a('0x45')](_0x27ba63[_0xab2a('0x40')][_0xab2a('0x45')]));_0x185fb6[_0xab2a('0x44')]=_0x185fb6[_0xab2a('0x44')][_0xab2a('0x46')]?_0x185fb6[_0xab2a('0x44')]:_0x4c0847['model'];if(!_0x27ba63[_0xab2a('0x40')][_0xab2a('0x66')](_0xab2a('0x47'))){_0x185fb6[_0xab2a('0x2d')]=qs[_0xab2a('0x2d')](_0x27ba63[_0xab2a('0x40')][_0xab2a('0x2d')]);_0x185fb6[_0xab2a('0x2f')]=qs[_0xab2a('0x2f')](_0x27ba63[_0xab2a('0x40')][_0xab2a('0x2f')]);}_0x185fb6[_0xab2a('0x48')]=qs[_0xab2a('0x49')](_0x27ba63[_0xab2a('0x40')]['sort']);_0x185fb6[_0xab2a('0x4c')]=qs['filters'](_[_0xab2a('0x4a')](_0x27ba63[_0xab2a('0x40')],_0x4c0847[_0xab2a('0x42')]));_0x185fb6[_0xab2a('0x4c')][_0xab2a('0x62')]=_0x36883b['id'];if(_0x27ba63[_0xab2a('0x40')][_0xab2a('0x4b')]){_0x185fb6[_0xab2a('0x4c')]=_[_0xab2a('0x4d')](_0x185fb6[_0xab2a('0x4c')],{'$or':_['map'](_0x185fb6[_0xab2a('0x44')],function(_0x9094cf){var _0x28eb7b={};_0x28eb7b[_0x9094cf]={'$like':'%'+_0x27ba63[_0xab2a('0x40')][_0xab2a('0x4b')]+'%'};return _0x28eb7b;})});}_0x185fb6=_[_0xab2a('0x4d')]({},_0x185fb6,_0x27ba63[_0xab2a('0x51')]);return db[_0xab2a('0x99')][_0xab2a('0x2e')]({'where':_0x185fb6[_0xab2a('0x4c')]})[_0xab2a('0x32')](function(_0x5d7fe4){_0x52ad12[_0xab2a('0x2e')]=_0x5d7fe4;if(_0x27ba63[_0xab2a('0x40')][_0xab2a('0x52')]){_0x185fb6[_0xab2a('0x53')]=[{'model':db['CmContact'],'as':_0xab2a('0xbf'),'required':![]},{'model':db[_0xab2a('0xc0')],'as':_0xab2a('0xc1'),'attributes':[_0xab2a('0x37'),_0xab2a('0xc2'),'internal'],'required':![]},{'model':db[_0xab2a('0xc3')],'as':_0xab2a('0xc4'),'attributes':['id','name',_0xab2a('0xc5')],'where':_0x27ba63[_0xab2a('0x40')][_0xab2a('0xc6')]?{'id':_0x27ba63[_0xab2a('0x40')]['tag']}:undefined,'required':_0x27ba63[_0xab2a('0x40')][_0xab2a('0xc6')]?!![]:![]}];}return db[_0xab2a('0x99')][_0xab2a('0x54')](_0x185fb6);})[_0xab2a('0x32')](function(_0x50ae4f){_0x52ad12[_0xab2a('0x55')]=_0x50ae4f;return _0x52ad12;});}})[_0xab2a('0x32')](respondWithFilteredResult(_0x49324a,_0x185fb6))[_0xab2a('0x27')](handleError(_0x49324a,null));};exports[_0xab2a('0xbc')]=function(_0x4dfed5,_0x3b159d,_0x16ae1d){var _0x4c790f,_0x1c419a,_0x58d3d4;if(_[_0xab2a('0x8d')](_0x4dfed5['body'][_0xab2a('0x59')])||_0x4dfed5[_0xab2a('0x59')][_0xab2a('0x59')]===''){throw new db[(_0xab2a('0x72'))][(_0xab2a('0x8b'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xab2a('0x8d')](_0x4dfed5[_0xab2a('0x59')]['to'])){throw new db['Sequelize']['ValidationError'](_0xab2a('0xc7'));}_0x4c790f=_0x4dfed5['body']['to'];return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x4dfed5[_0xab2a('0x56')]['id']},'include':[{'model':db['CmList'],'as':_0xab2a('0xc8'),'include':[{'model':db['CmContact'],'as':_0xab2a('0x94'),'where':{'mobile':_0x4c790f},'limit':0x1,'order':[[_0xab2a('0x76'),_0xab2a('0xc9')]]}]}]})[_0xab2a('0x32')](handleEntityNotFound(_0x3b159d,null))['then'](function(_0x4c4b60){if(_0x4c4b60&&_0x4c4b60['List']){_0x1c419a=_0x4c4b60[_0xab2a('0x33')]({'plain':!![]});if(_0x1c419a[_0xab2a('0xc8')]&&_0x1c419a[_0xab2a('0xc8')][_0xab2a('0x94')][_0xab2a('0x46')]){return _0x1c419a[_0xab2a('0xc8')][_0xab2a('0x94')][0x0];}return db[_0xab2a('0x97')][_0xab2a('0x58')](_[_0xab2a('0x18')](_0x4dfed5[_0xab2a('0x59')],{'firstName':_0x4c790f,'mobile':_0x4c790f,'phone':_0x4c790f,'ListId':_0x1c419a[_0xab2a('0x77')]}));}})[_0xab2a('0x32')](handleEntityNotFound(_0x3b159d,null))[_0xab2a('0x32')](function(_0x4acead){if(_0x4acead){_0x58d3d4=_0x4acead;return db['SmsInteraction'][_0xab2a('0x57')]({'where':{'ContactId':_0x58d3d4['id'],'closed':![],'SmsAccountId':_0x1c419a['id']}})['then'](function(_0x5eb3da){if(_0x5eb3da){return[_0x5eb3da,![]];}return db[_0xab2a('0x99')][_0xab2a('0x58')]({'UserId':_0x4dfed5[_0xab2a('0x5a')]['id'],'ContactId':_0x58d3d4['id'],'SmsAccountId':_0x1c419a['id'],'phone':_0x4c790f,'firstMsgDirection':_0xab2a('0xca'),'Messages':[_[_0xab2a('0x4d')](_0x4dfed5[_0xab2a('0x59')],{'read':![],'body':_0x4dfed5[_0xab2a('0x59')]['body'],'phone':_0x4c790f,'SmsAccountId':_0x1c419a['id'],'UserId':_0x4dfed5[_0xab2a('0x5a')]['id'],'ContactId':_0x58d3d4['id']})]},{'include':[{'model':db[_0xab2a('0xa2')],'as':'Messages'}]})[_0xab2a('0x32')](function(_0x22949a){return[_0x22949a,!![]];});});}})[_0xab2a('0x9a')](function(_0x1fef6e,_0x731e6b){if(_0x731e6b){return _0x1fef6e;}return db[_0xab2a('0xa2')][_0xab2a('0x58')](_[_0xab2a('0x4d')](_0x4dfed5[_0xab2a('0x59')],{'read':![],'body':_0x4dfed5['body'][_0xab2a('0x59')],'phone':_0x4c790f,'SmsAccountId':_0x1c419a['id'],'SmsInteractionId':_0x1fef6e['id'],'UserId':_0x4dfed5[_0xab2a('0x5a')]['id'],'ContactId':_0x58d3d4['id']}))[_0xab2a('0x32')](function(_0x522c1d){_0x1fef6e[_0xab2a('0xcb')]['Messages']=[];_0x1fef6e[_0xab2a('0xcb')]['Messages'][_0xab2a('0x9d')](_0x522c1d['dataValues']);return _0x1fef6e;});})[_0xab2a('0x32')](respondWithResult(_0x3b159d,null))[_0xab2a('0x27')](handleError(_0x3b159d,null));};exports[_0xab2a('0x29')]=function(_0x4f81ec,_0x50c526,_0x481c19){if(_0x4f81ec['body']['id']){delete _0x4f81ec[_0xab2a('0x59')]['id'];}var _0x4a144f,_0x54bd6d,_0x322258;return db[_0xab2a('0x3b')][_0xab2a('0x57')]({'where':{'id':_0x4f81ec[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x50c526,null))[_0xab2a('0x32')](function(_0x5009b3){if(_0x5009b3){_0x322258=_0x5009b3;logger[_0xab2a('0x21')](_0xab2a('0xad'),'status',_0xab2a('0xcc'),_0x5009b3[_0xab2a('0x4f')],util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));switch(_0x5009b3[_0xab2a('0x4f')]){case _0xab2a('0xce'):if(_0x4f81ec['body']['skebby_dispatch_id']&&_0x4f81ec['body']['status']){_0x54bd6d=_0x4f81ec['body'][_0xab2a('0x29')];return db[_0xab2a('0xa2')]['find']({'where':{'messageId':_0x4f81ec[_0xab2a('0x59')][_0xab2a('0xcf')]}});}break;case _0xab2a('0xd0'):if(_0x4f81ec[_0xab2a('0x59')][_0xab2a('0xd1')]&&_0x4f81ec[_0xab2a('0x59')][_0xab2a('0xd2')]){_0x54bd6d=_0x4f81ec[_0xab2a('0x59')]['statusInt'];return db[_0xab2a('0xa2')]['find']({'where':{'messageId':_0x4f81ec[_0xab2a('0x59')]['requestid']}});}break;case'clicksend':if(_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x81')]&&_0x4f81ec['body'][_0xab2a('0xd3')]){_0x54bd6d=_0x4f81ec['body'][_0xab2a('0xd3')];return db[_0xab2a('0xa2')][_0xab2a('0x57')]({'where':{'messageId':_0x4f81ec['body'][_0xab2a('0x81')]}});}break;case _0xab2a('0xd4'):var _0x6088ab=_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x84')][0x0];if(_0x6088ab['messageId']&&_0x6088ab[_0xab2a('0x29')][_0xab2a('0xd5')]===_0xab2a('0xd6')){_0x54bd6d=_0x6088ab['status'][_0xab2a('0xd5')];return db[_0xab2a('0xa2')][_0xab2a('0x57')]({'where':{'messageId':_0x6088ab[_0xab2a('0x7d')]}});}break;case'clickatell':if(_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x7d')]&&_0x4f81ec[_0xab2a('0x59')]['status']){_0x54bd6d=_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x29')];return db['SmsMessage'][_0xab2a('0x57')]({'where':{'messageId':_0x4f81ec[_0xab2a('0x59')]['messageId']}});}break;case _0xab2a('0x88'):if(_0x4f81ec[_0xab2a('0x59')][0x0][_0xab2a('0x25')]['id']){_0x54bd6d=_0x4f81ec[_0xab2a('0x59')][0x0][_0xab2a('0x4f')];return db['SmsMessage']['find']({'where':{'messageId':_0x4f81ec['body'][0x0][_0xab2a('0x25')]['id']}});}break;case'intelepeer':if(_0x4f81ec[_0xab2a('0x59')]['redif']&&_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x29')]){_0x54bd6d=_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x29')];return db[_0xab2a('0xa2')][_0xab2a('0x57')]({'where':{'messageId':_0x4f81ec['body'][_0xab2a('0xd7')]}});}break;}}})['then'](handleEntityNotFound(_0x50c526,null))[_0xab2a('0x32')](function(_0x103266){if(_0x103266){_0x4a144f=_0x103266;switch(_0x322258['type']){case _0xab2a('0xce'):if(_0x54bd6d==='DELIVERED'){return _0x4a144f[_0xab2a('0xd8')]({'read':!![]});}else{logger[_0xab2a('0x23')](_0xab2a('0xad'),'status',_0xab2a('0xce'),util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));}break;case _0xab2a('0xd0'):if(_0x54bd6d==='1'){return _0x4a144f['update']({'read':!![]});}else{logger[_0xab2a('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xab2a('0x29'),_0xab2a('0xce'),util['inspect'](_0x4f81ec['body'],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x4f81ec[_0xab2a('0x59')][_0xab2a('0xd9')]&&_0x54bd6d>=0xc8&&_0x54bd6d<=0xce){return _0x4a144f[_0xab2a('0xd8')]({'read':!![]});}else{logger['error'](_0xab2a('0xad'),_0xab2a('0x29'),'clicksend',util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));}break;case _0xab2a('0xd4'):var _0x2f9b9b=_0x4f81ec['body'][_0xab2a('0x84')][0x0];if(_0x2f9b9b['status'][_0xab2a('0xd5')]==='DELIVERED'){return _0x4a144f['update']({'read':!![]});}else{logger[_0xab2a('0x23')](_0xab2a('0xad'),'status',_0xab2a('0xd4'),util['inspect'](_0x4f81ec['body'],{'showHidden':![],'depth':null}));}break;case _0xab2a('0xda'):if(_0x54bd6d==_0xab2a('0xdb')||_0x54bd6d==_0xab2a('0xdc')){return _0x4a144f[_0xab2a('0xd8')]({'read':!![]});}else{logger[_0xab2a('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xab2a('0xda'),util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));}break;case _0xab2a('0x88'):if(_0x54bd6d==_0xab2a('0xdd')){return _0x4a144f[_0xab2a('0xd8')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xab2a('0x29'),_0xab2a('0x88'),util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));}break;case _0xab2a('0x89'):if(_0x54bd6d===_0xab2a('0xde')||_0x54bd6d===_0xab2a('0xdf')){return _0x4a144f[_0xab2a('0xd8')]({'read':!![]});}else{logger['error'](_0xab2a('0xad'),_0xab2a('0x29'),_0xab2a('0x89'),util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x4a144f;}})[_0xab2a('0x32')](respondWithResult(_0x50c526,null))[_0xab2a('0x27')](handleError(_0x50c526,null));};exports[_0xab2a('0xe0')]=function(_0x23ca4b,_0x4e77ac,_0x5633c7){var _0x900b75,_0x1a38da,_0x14f9e2;return db[_0xab2a('0x3b')][_0xab2a('0x57')]({'where':{'id':_0x23ca4b['params']['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x4e77ac,null))[_0xab2a('0x32')](function(_0x4c06b9){if(_0x4c06b9){_0x14f9e2=_0x4c06b9;logger[_0xab2a('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xab2a('0x29'),'received\x20delivery\x20report\x20from',_0x4c06b9[_0xab2a('0x4f')],util[_0xab2a('0xcd')](_0x23ca4b[_0xab2a('0x40')],{'showHidden':![],'depth':null}));switch(_0x4c06b9['type']){case _0xab2a('0x85'):if(_0x23ca4b[_0xab2a('0x40')][_0xab2a('0xe1')]&&_0x23ca4b[_0xab2a('0x40')][_0xab2a('0xe2')]){_0x1a38da=_0x23ca4b[_0xab2a('0x40')][_0xab2a('0xe2')];return db['SmsMessage'][_0xab2a('0x57')]({'where':{'messageId':_0x23ca4b['query']['message-id']}});}break;}}})[_0xab2a('0x32')](handleEntityNotFound(_0x4e77ac,null))['then'](function(_0x551414){if(_0x551414){_0x900b75=_0x551414;switch(_0x14f9e2[_0xab2a('0x4f')]){case _0xab2a('0x85'):if(_0x1a38da==='2'||_0x1a38da==='6'){return _0x900b75[_0xab2a('0xd8')]({'read':!![]});}else{logger['error'](_0xab2a('0xad'),_0xab2a('0x29'),'csc',util['inspect'](_0x23ca4b[_0xab2a('0x40')],{'showHidden':![],'depth':null}));};break;}return _0x900b75;}})['then'](respondWithResult(_0x4e77ac,null))[_0xab2a('0x27')](handleError(_0x4e77ac,null));};exports['addAgents']=function(_0x53068d,_0x5a810a,_0x4f7947){return db['SmsAccount'][_0xab2a('0x57')]({'where':{'id':_0x53068d[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x5a810a,null))[_0xab2a('0x32')](function(_0xec33a){if(_0xec33a){return _0xec33a[_0xab2a('0xe3')](_0x53068d['body'][_0xab2a('0xe4')],_[_0xab2a('0x96')](_0x53068d[_0xab2a('0x59')],[_0xab2a('0xe4'),'id'])||{})[_0xab2a('0x9a')](function(_0x1a6911){for(var _0x33b1da=0x0;_0x33b1da<_0x53068d[_0xab2a('0x59')][_0xab2a('0xe4')]['length'];_0x33b1da+=0x1){socket['emit'](_0xab2a('0xe5'),{'UserId':Number(_0x53068d['body'][_0xab2a('0xe4')][_0x33b1da]),'SmsAccountId':Number(_0x53068d[_0xab2a('0x56')]['id'])});}return _0x1a6911;});}})['then'](respondWithResult(_0x5a810a,null))['catch'](handleError(_0x5a810a,null));};exports[_0xab2a('0xe6')]=function(_0x923710,_0x1a96e7,_0xc4a8c4){return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x923710['params']['id']}})['then'](handleEntityNotFound(_0x1a96e7,null))['then'](function(_0x545118){if(_0x545118){return _0x545118[_0xab2a('0xe6')](_0x923710[_0xab2a('0x40')][_0xab2a('0xe4')])[_0xab2a('0x32')](function(){if(_['isArray'](_0x923710[_0xab2a('0x40')][_0xab2a('0xe4')])){for(var _0x404b1b=0x0;_0x404b1b<_0x923710[_0xab2a('0x40')]['ids'][_0xab2a('0x46')];_0x404b1b+=0x1){socket['emit'](_0xab2a('0xe7'),{'UserId':Number(_0x923710[_0xab2a('0x40')][_0xab2a('0xe4')][_0x404b1b]),'SmsAccountId':Number(_0x923710['params']['id'])});}}else{socket[_0xab2a('0xe8')](_0xab2a('0xe7'),{'UserId':Number(_0x923710['query'][_0xab2a('0xe4')]),'SmsAccountId':Number(_0x923710[_0xab2a('0x56')]['id'])});}});}})[_0xab2a('0x32')](respondWithStatusCode(_0x1a96e7,null))[_0xab2a('0x27')](handleError(_0x1a96e7,null));};exports['getAgents']=function(_0x206923,_0x45e7cd,_0x1a6de9){var _0x17dea6={};var _0x4dc6fd={};var _0x2851fd;var _0xda884;return db[_0xab2a('0x3b')][_0xab2a('0x65')]({'where':{'id':_0x206923[_0xab2a('0x56')]['id']}})['then'](handleEntityNotFound(_0x45e7cd,null))[_0xab2a('0x32')](function(_0x2b64c0){if(_0x2b64c0){_0x2851fd=_0x2b64c0;_0x4dc6fd[_0xab2a('0x3f')]=_[_0xab2a('0x41')](db[_0xab2a('0xc0')][_0xab2a('0x3c')]);_0x4dc6fd[_0xab2a('0x40')]=_[_0xab2a('0x41')](_0x206923[_0xab2a('0x40')]);_0x4dc6fd[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x4dc6fd[_0xab2a('0x3f')],_0x4dc6fd['query']);_0x17dea6[_0xab2a('0x44')]=_[_0xab2a('0x43')](_0x4dc6fd[_0xab2a('0x3f')],qs[_0xab2a('0x45')](_0x206923[_0xab2a('0x40')][_0xab2a('0x45')]));_0x17dea6[_0xab2a('0x44')]=_0x17dea6[_0xab2a('0x44')][_0xab2a('0x46')]?_0x17dea6[_0xab2a('0x44')]:_0x4dc6fd[_0xab2a('0x3f')];_0x17dea6[_0xab2a('0x48')]=qs[_0xab2a('0x49')](_0x206923['query'][_0xab2a('0x49')]);_0x17dea6[_0xab2a('0x4c')]=qs['filters'](_[_0xab2a('0x4a')](_0x206923[_0xab2a('0x40')],_0x4dc6fd['filters']));if(_0x206923[_0xab2a('0x40')][_0xab2a('0x4b')]){_0x17dea6[_0xab2a('0x4c')]=_[_0xab2a('0x4d')](_0x17dea6[_0xab2a('0x4c')],{'$or':_[_0xab2a('0x4e')](_0x17dea6[_0xab2a('0x44')],function(_0x59b185){var _0x19233d={};_0x19233d[_0x59b185]={'$like':'%'+_0x206923[_0xab2a('0x40')][_0xab2a('0x4b')]+'%'};return _0x19233d;})});}_0x17dea6=_['merge']({},_0x17dea6,_0x206923[_0xab2a('0x51')]);return _0x2851fd['getAgents'](_0x17dea6);}})['then'](function(_0x20107e){if(_0x20107e){_0xda884=_0x20107e[_0xab2a('0x46')];if(!_0x206923[_0xab2a('0x40')]['hasOwnProperty'](_0xab2a('0x47'))){_0x17dea6[_0xab2a('0x2d')]=qs['limit'](_0x206923[_0xab2a('0x40')][_0xab2a('0x2d')]);_0x17dea6[_0xab2a('0x2f')]=qs[_0xab2a('0x2f')](_0x206923[_0xab2a('0x40')][_0xab2a('0x2f')]);}return _0x2851fd['getAgents'](_0x17dea6);}})[_0xab2a('0x32')](function(_0x333daa){if(_0x333daa){return _0x333daa?{'count':_0xda884,'rows':_0x333daa}:null;}})[_0xab2a('0x32')](respondWithResult(_0x45e7cd,null))[_0xab2a('0x27')](handleError(_0x45e7cd,null));};
\ No newline at end of file
index e815112..c928cb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa69=['remove','emit','hasOwnProperty','exports','events'];(function(_0x300522,_0x4562b4){var _0x536ff5=function(_0x3158b4){while(--_0x3158b4){_0x300522['push'](_0x300522['shift']());}};_0x536ff5(++_0x4562b4);}(_0xfa69,0x12b));var _0x9fa6=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xfa69[_0x40a045];return _0x1a687c;};'use strict';var EventEmitter=require(_0x9fa6('0x0'));var SmsAccount=require('../../mysqldb')['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x9fa6('0x1')};function emitEvent(_0x3fec6f){return function(_0x2c1215,_0x412f67,_0x26b531){SmsAccountEvents[_0x9fa6('0x2')](_0x3fec6f+':'+_0x2c1215['id'],_0x2c1215);SmsAccountEvents[_0x9fa6('0x2')](_0x3fec6f,_0x2c1215);_0x26b531(null);};}for(var e in events){if(events[_0x9fa6('0x3')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x9fa6('0x4')]=SmsAccountEvents;
\ No newline at end of file
+var _0xf84e=['setMaxListeners','save','remove','emit','hasOwnProperty','events','../../mysqldb','SmsAccount'];(function(_0x2b6889,_0x1cb53a){var _0x116ab2=function(_0x2dbb5a){while(--_0x2dbb5a){_0x2b6889['push'](_0x2b6889['shift']());}};_0x116ab2(++_0x1cb53a);}(_0xf84e,0xf5));var _0xef84=function(_0x3dae40,_0x5ac8fb){_0x3dae40=_0x3dae40-0x0;var _0x4a3858=_0xf84e[_0x3dae40];return _0x4a3858;};'use strict';var EventEmitter=require(_0xef84('0x0'));var SmsAccount=require(_0xef84('0x1'))['db'][_0xef84('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xef84('0x3')](0x0);var events={'afterCreate':_0xef84('0x4'),'afterUpdate':'update','afterDestroy':_0xef84('0x5')};function emitEvent(_0x1a153e){return function(_0x121557,_0x466728,_0xb1cd5d){SmsAccountEvents['emit'](_0x1a153e+':'+_0x121557['id'],_0x121557);SmsAccountEvents[_0xef84('0x6')](_0x1a153e,_0x121557);_0xb1cd5d(null);};}for(var e in events){if(events[_0xef84('0x7')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
index cc0c4ec..4e69175 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55c7=['../../config/environment','./smsAccount.attributes','define','SmsAccount','sms_accounts','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x5d3394,_0x5e5dce){var _0x102ca5=function(_0x40e9a9){while(--_0x40e9a9){_0x5d3394['push'](_0x5d3394['shift']());}};_0x102ca5(++_0x5e5dce);}(_0x55c7,0x191));var _0x755c=function(_0x3a2d2a,_0x20a1d5){_0x3a2d2a=_0x3a2d2a-0x0;var _0x5c2f4c=_0x55c7[_0x3a2d2a];return _0x5c2f4c;};'use strict';var _=require('lodash');var util=require(_0x755c('0x0'));var logger=require(_0x755c('0x1'))(_0x755c('0x2'));var moment=require(_0x755c('0x3'));var BPromise=require(_0x755c('0x4'));var rp=require(_0x755c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x755c('0x6'));var config=require(_0x755c('0x7'));var attributes=require(_0x755c('0x8'));module['exports']=function(_0xe102c9,_0x5a2c3f){return _0xe102c9[_0x755c('0x9')](_0x755c('0xa'),attributes,{'tableName':_0x755c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c66=['bluebird','request-promise','path','rimraf','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','../../config/logger'];(function(_0x4c4037,_0x15054b){var _0x357862=function(_0x480015){while(--_0x480015){_0x4c4037['push'](_0x4c4037['shift']());}};_0x357862(++_0x15054b);}(_0x1c66,0xc4));var _0x61c6=function(_0xd016b3,_0x19d0f8){_0xd016b3=_0xd016b3-0x0;var _0x3f2a46=_0x1c66[_0xd016b3];return _0x3f2a46;};'use strict';var _=require(_0x61c6('0x0'));var util=require('util');var logger=require(_0x61c6('0x1'))('api');var moment=require('moment');var BPromise=require(_0x61c6('0x2'));var rp=require(_0x61c6('0x3'));var fs=require('fs');var path=require(_0x61c6('0x4'));var rimraf=require(_0x61c6('0x5'));var config=require('../../config/environment');var attributes=require(_0x61c6('0x6'));module[_0x61c6('0x7')]=function(_0x30bc5d,_0x37dd0a){return _0x30bc5d[_0x61c6('0x8')](_0x61c6('0x9'),attributes,{'tableName':_0x61c6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e6c5b02..414c2ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd549=['stringify','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','ShowSmsAccount','options','raw','where','attributes','include','map','model'];(function(_0x299bb8,_0xe0eea6){var _0x3ad7f4=function(_0x7fa2ae){while(--_0x7fa2ae){_0x299bb8['push'](_0x299bb8['shift']());}};_0x3ad7f4(++_0xe0eea6);}(_0xd549,0x121));var _0x9d54=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd549[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9d54('0x0'));var util=require(_0x9d54('0x1'));var moment=require(_0x9d54('0x2'));var BPromise=require(_0x9d54('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9d54('0x4'))['db'];var utils=require(_0x9d54('0x5'));var logger=require(_0x9d54('0x6'))(_0x9d54('0x7'));var config=require(_0x9d54('0x8'));var jayson=require(_0x9d54('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x9d54('0xa')]=_[_0x9d54('0xb')](config['redis'],{'host':_0x9d54('0xc'),'port':0x18eb});var socket=require(_0x9d54('0xd'))(new Redis(config['redis']));require(_0x9d54('0xe'))[_0x9d54('0xf')](socket);function respondWithRpcPromise(_0xe928e0,_0x857446,_0x48957c){return new BPromise(function(_0x5b4b90,_0x20db60){return client[_0x9d54('0x10')](_0xe928e0,_0x48957c)[_0x9d54('0x11')](function(_0x59d7a7){logger[_0x9d54('0x12')](_0x9d54('0x13'),_0x857446,_0x9d54('0x14'));logger[_0x9d54('0x15')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x857446,_0x9d54('0x14'),JSON['stringify'](_0x59d7a7));if(_0x59d7a7[_0x9d54('0x16')]){if(_0x59d7a7[_0x9d54('0x16')][_0x9d54('0x17')]===0x1f4){logger[_0x9d54('0x16')](_0x9d54('0x13'),_0x857446,_0x59d7a7['error']['message']);return _0x20db60(_0x59d7a7[_0x9d54('0x16')]['message']);}logger[_0x9d54('0x16')](_0x9d54('0x13'),_0x857446,_0x59d7a7[_0x9d54('0x16')][_0x9d54('0x18')]);return _0x5b4b90(_0x59d7a7[_0x9d54('0x16')][_0x9d54('0x18')]);}else{logger[_0x9d54('0x12')]('SmsAccount,\x20%s,\x20%s',_0x857446,_0x9d54('0x14'));_0x5b4b90(_0x59d7a7[_0x9d54('0x19')]['message']);}})[_0x9d54('0x1a')](function(_0x31aa46){logger['error'](_0x9d54('0x13'),_0x857446,_0x31aa46);_0x20db60(_0x31aa46);});});}exports[_0x9d54('0x1b')]=function(_0x5a6e1a){var _0x6d20de=this;return new Promise(function(_0x17de39,_0x32c42c){return db['SmsAccount']['find']({'raw':_0x5a6e1a[_0x9d54('0x1c')]?_0x5a6e1a[_0x9d54('0x1c')][_0x9d54('0x1d')]===undefined?!![]:![]:!![],'where':_0x5a6e1a[_0x9d54('0x1c')]?_0x5a6e1a[_0x9d54('0x1c')][_0x9d54('0x1e')]||null:null,'attributes':_0x5a6e1a[_0x9d54('0x1c')]?_0x5a6e1a[_0x9d54('0x1c')][_0x9d54('0x1f')]||null:null,'include':_0x5a6e1a[_0x9d54('0x1c')]?_0x5a6e1a[_0x9d54('0x1c')][_0x9d54('0x20')]?_[_0x9d54('0x21')](_0x5a6e1a[_0x9d54('0x1c')]['include'],function(_0x270fb0){return{'model':db[_0x270fb0[_0x9d54('0x22')]],'as':_0x270fb0['as'],'attributes':_0x270fb0[_0x9d54('0x1f')],'include':_0x270fb0[_0x9d54('0x20')]?_[_0x9d54('0x21')](_0x270fb0[_0x9d54('0x20')],function(_0x2e2ba1){return{'model':db[_0x2e2ba1['model']],'as':_0x2e2ba1['as'],'attributes':_0x2e2ba1[_0x9d54('0x1f')],'include':_0x2e2ba1[_0x9d54('0x20')]?_[_0x9d54('0x21')](_0x2e2ba1[_0x9d54('0x20')],function(_0x1b3c36){return{'model':db[_0x1b3c36[_0x9d54('0x22')]],'as':_0x1b3c36['as'],'attributes':_0x1b3c36['attributes']};}):[]};}):[]};}):[]:[]})[_0x9d54('0x11')](function(_0x2b16f7){logger['info'](_0x9d54('0x1b'),_0x5a6e1a);logger[_0x9d54('0x15')]('ShowSmsAccount',_0x5a6e1a,JSON[_0x9d54('0x23')](_0x2b16f7));_0x17de39(_0x2b16f7);})[_0x9d54('0x1a')](function(_0x4e577f){logger['error'](_0x9d54('0x1b'),_0x4e577f[_0x9d54('0x18')],_0x5a6e1a);_0x32c42c(_0x6d20de[_0x9d54('0x16')](0x1f4,_0x4e577f['message']));});});};
\ No newline at end of file
+var _0xa192=['find','options','raw','where','attributes','map','include','model','then','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','defaults','redis','localhost','socket.io-emitter','./smsAccount.socket','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','ShowSmsAccount','SmsAccount'];(function(_0x16c974,_0xad66cb){var _0x4dc29c=function(_0x471c40){while(--_0x471c40){_0x16c974['push'](_0x16c974['shift']());}};_0x4dc29c(++_0xad66cb);}(_0xa192,0x157));var _0x2a19=function(_0x10a2bf,_0x21f48b){_0x10a2bf=_0x10a2bf-0x0;var _0x2224db=_0xa192[_0x10a2bf];return _0x2224db;};'use strict';var _=require(_0x2a19('0x0'));var util=require(_0x2a19('0x1'));var moment=require(_0x2a19('0x2'));var BPromise=require(_0x2a19('0x3'));var rs=require(_0x2a19('0x4'));var fs=require('fs');var Redis=require(_0x2a19('0x5'));var db=require(_0x2a19('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x2a19('0x7'))(_0x2a19('0x8'));var config=require(_0x2a19('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2a19('0xa')]({'port':0x232a});config['redis']=_[_0x2a19('0xb')](config[_0x2a19('0xc')],{'host':_0x2a19('0xd'),'port':0x18eb});var socket=require(_0x2a19('0xe'))(new Redis(config['redis']));require(_0x2a19('0xf'))['register'](socket);function respondWithRpcPromise(_0x1b46e8,_0x1c2161,_0x4e81ce){return new BPromise(function(_0x1ee3c4,_0x40f35e){return client['request'](_0x1b46e8,_0x4e81ce)['then'](function(_0x25ffdb){logger[_0x2a19('0x10')](_0x2a19('0x11'),_0x1c2161,_0x2a19('0x12'));logger[_0x2a19('0x13')](_0x2a19('0x14'),_0x1c2161,_0x2a19('0x12'),JSON[_0x2a19('0x15')](_0x25ffdb));if(_0x25ffdb[_0x2a19('0x16')]){if(_0x25ffdb[_0x2a19('0x16')]['code']===0x1f4){logger['error'](_0x2a19('0x11'),_0x1c2161,_0x25ffdb[_0x2a19('0x16')][_0x2a19('0x17')]);return _0x40f35e(_0x25ffdb[_0x2a19('0x16')]['message']);}logger['error'](_0x2a19('0x11'),_0x1c2161,_0x25ffdb['error'][_0x2a19('0x17')]);return _0x1ee3c4(_0x25ffdb[_0x2a19('0x16')][_0x2a19('0x17')]);}else{logger[_0x2a19('0x10')](_0x2a19('0x11'),_0x1c2161,'request\x20sent');_0x1ee3c4(_0x25ffdb[_0x2a19('0x18')]['message']);}})['catch'](function(_0x593ac4){logger[_0x2a19('0x16')]('SmsAccount,\x20%s,\x20%s',_0x1c2161,_0x593ac4);_0x40f35e(_0x593ac4);});});}exports[_0x2a19('0x19')]=function(_0x22c001){var _0x16a6a1=this;return new Promise(function(_0x43ae96,_0x2ebaa2){return db[_0x2a19('0x1a')][_0x2a19('0x1b')]({'raw':_0x22c001[_0x2a19('0x1c')]?_0x22c001[_0x2a19('0x1c')][_0x2a19('0x1d')]===undefined?!![]:![]:!![],'where':_0x22c001[_0x2a19('0x1c')]?_0x22c001[_0x2a19('0x1c')][_0x2a19('0x1e')]||null:null,'attributes':_0x22c001['options']?_0x22c001[_0x2a19('0x1c')][_0x2a19('0x1f')]||null:null,'include':_0x22c001[_0x2a19('0x1c')]?_0x22c001[_0x2a19('0x1c')]['include']?_[_0x2a19('0x20')](_0x22c001[_0x2a19('0x1c')][_0x2a19('0x21')],function(_0xe6e955){return{'model':db[_0xe6e955[_0x2a19('0x22')]],'as':_0xe6e955['as'],'attributes':_0xe6e955[_0x2a19('0x1f')],'include':_0xe6e955['include']?_['map'](_0xe6e955['include'],function(_0x27e091){return{'model':db[_0x27e091[_0x2a19('0x22')]],'as':_0x27e091['as'],'attributes':_0x27e091[_0x2a19('0x1f')],'include':_0x27e091[_0x2a19('0x21')]?_['map'](_0x27e091[_0x2a19('0x21')],function(_0x4e9b0c){return{'model':db[_0x4e9b0c[_0x2a19('0x22')]],'as':_0x4e9b0c['as'],'attributes':_0x4e9b0c[_0x2a19('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x2a19('0x23')](function(_0x542070){logger[_0x2a19('0x10')](_0x2a19('0x19'),_0x22c001);logger[_0x2a19('0x13')]('ShowSmsAccount',_0x22c001,JSON[_0x2a19('0x15')](_0x542070));_0x43ae96(_0x542070);})[_0x2a19('0x24')](function(_0x1e85d5){logger[_0x2a19('0x16')]('ShowSmsAccount',_0x1e85d5[_0x2a19('0x17')],_0x22c001);_0x2ebaa2(_0x16a6a1[_0x2a19('0x16')](0x1f4,_0x1e85d5['message']));});});};
\ No newline at end of file
index 763bc2f..12c46ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 16fe814..42b713e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['post','create','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show'];(function(_0x52a7fd,_0x34bd2e){var _0x5485d4=function(_0x15da28){while(--_0x15da28){_0x52a7fd['push'](_0x52a7fd['shift']());}};_0x5485d4(++_0x34bd2e);}(_0xedd9,0xfc));var _0x9edd=function(_0xef72e2,_0xe2aa88){_0xef72e2=_0xef72e2-0x0;var _0x20f01a=_0xedd9[_0xef72e2];return _0x20f01a;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0xe')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['put'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x10')]);router[_0x9edd('0x11')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index 082f9ac..37860ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe60b=['*,*,*,*','sequelize','INTEGER','noop','STRING'];(function(_0x506d2f,_0x5ab76e){var _0x101255=function(_0x1596b1){while(--_0x1596b1){_0x506d2f['push'](_0x506d2f['shift']());}};_0x101255(++_0x5ab76e);}(_0xe60b,0xf1));var _0xbe60=function(_0x3453a5,_0x1a369a){_0x3453a5=_0x3453a5-0x0;var _0x1948a6=_0xe60b[_0x3453a5];return _0x1948a6;};'use strict';var Sequelize=require(_0xbe60('0x0'));module['exports']={'priority':{'type':Sequelize[_0xbe60('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xbe60('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xbe60('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xbe60('0x4')}};
\ No newline at end of file
+var _0x93e8=['INTEGER','noop','TEXT','STRING','*,*,*,*','exports'];(function(_0x2f48a7,_0x54ea3c){var _0x3546f6=function(_0x2323d4){while(--_0x2323d4){_0x2f48a7['push'](_0x2f48a7['shift']());}};_0x3546f6(++_0x54ea3c);}(_0x93e8,0xd7));var _0x893e=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x93e8[_0x40220a];return _0x3903cc;};'use strict';var Sequelize=require('sequelize');module[_0x893e('0x0')]={'priority':{'type':Sequelize[_0x893e('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x893e('0x2')},'appdata':{'type':Sequelize[_0x893e('0x3')]()},'description':{'type':Sequelize[_0x893e('0x4')]},'interval':{'type':Sequelize[_0x893e('0x4')],'defaultValue':_0x893e('0x5')}};
\ No newline at end of file
index b716b61..ef6c563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1e7=['model','keys','filters','intersection','query','attributes','fields','length','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','save','update','then','error','stack','name','send','index','map','SmsApplication','rawAttributes','type','key'];(function(_0x4c6403,_0x121316){var _0x18d7c8=function(_0x443ccb){while(--_0x443ccb){_0x4c6403['push'](_0x4c6403['shift']());}};_0x18d7c8(++_0x121316);}(_0xf1e7,0x198));var _0x7f1e=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0xf1e7[_0xbd08b4];return _0x314f1e;};'use strict';var emlformat=require(_0x7f1e('0x0'));var rimraf=require(_0x7f1e('0x1'));var zipdir=require(_0x7f1e('0x2'));var jsonpatch=require(_0x7f1e('0x3'));var rp=require('request-promise');var moment=require(_0x7f1e('0x4'));var BPromise=require(_0x7f1e('0x5'));var Mustache=require(_0x7f1e('0x6'));var util=require(_0x7f1e('0x7'));var path=require(_0x7f1e('0x8'));var sox=require(_0x7f1e('0x9'));var csv=require(_0x7f1e('0xa'));var ejs=require(_0x7f1e('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7f1e('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7f1e('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7f1e('0xe'));var Redis=require(_0x7f1e('0xf'));var authService=require(_0x7f1e('0x10'));var qs=require(_0x7f1e('0x11'));var as=require(_0x7f1e('0x12'));var hardwareService=require(_0x7f1e('0x13'));var logger=require('../../config/logger')(_0x7f1e('0x14'));var utils=require(_0x7f1e('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x7f1e('0x16'));var db=require(_0x7f1e('0x17'))['db'];function respondWithStatusCode(_0x4e81e2,_0x3037dc){_0x3037dc=_0x3037dc||0xcc;return function(_0x4dac5f){if(_0x4dac5f){return _0x4e81e2[_0x7f1e('0x18')](_0x3037dc);}return _0x4e81e2['status'](_0x3037dc)[_0x7f1e('0x19')]();};}function respondWithResult(_0x54d222,_0x203034){_0x203034=_0x203034||0xc8;return function(_0x3198c4){if(_0x3198c4){return _0x54d222['status'](_0x203034)[_0x7f1e('0x1a')](_0x3198c4);}};}function respondWithFilteredResult(_0x540455,_0x2d724a){return function(_0x1a4029){if(_0x1a4029){var _0x21d20b=typeof _0x2d724a[_0x7f1e('0x1b')]===_0x7f1e('0x1c')&&typeof _0x2d724a[_0x7f1e('0x1d')]===_0x7f1e('0x1c');var _0x4ea9f8=_0x1a4029['count'];var _0x5670c9=_0x21d20b?0x0:_0x2d724a[_0x7f1e('0x1b')];var _0x5b9483=_0x21d20b?_0x1a4029[_0x7f1e('0x1e')]:_0x2d724a[_0x7f1e('0x1b')]+_0x2d724a[_0x7f1e('0x1d')];var _0x28eda9;if(_0x5b9483>=_0x4ea9f8){_0x5b9483=_0x4ea9f8;_0x28eda9=0xc8;}else{_0x28eda9=0xce;}_0x540455[_0x7f1e('0x1f')](_0x28eda9);return _0x540455[_0x7f1e('0x20')](_0x7f1e('0x21'),_0x5670c9+'-'+_0x5b9483+'/'+_0x4ea9f8)[_0x7f1e('0x1a')](_0x1a4029);}return null;};}function patchUpdates(_0x5261b7){return function(_0x11dce6){try{jsonpatch[_0x7f1e('0x22')](_0x11dce6,_0x5261b7,!![]);}catch(_0x3af59b){return BPromise['reject'](_0x3af59b);}return _0x11dce6[_0x7f1e('0x23')]();};}function saveUpdates(_0xbbfc47,_0x3d3c2a){return function(_0x13bd78){if(_0x13bd78){return _0x13bd78[_0x7f1e('0x24')](_0xbbfc47)[_0x7f1e('0x25')](function(_0x406d89){return _0x406d89;});}return null;};}function removeEntity(_0x1238b2,_0x21d594){return function(_0x472167){if(_0x472167){return _0x472167['destroy']()['then'](function(){_0x1238b2[_0x7f1e('0x1f')](0xcc)[_0x7f1e('0x19')]();});}};}function handleEntityNotFound(_0x22dce,_0x134d69){return function(_0x4b24dd){if(!_0x4b24dd){_0x22dce[_0x7f1e('0x18')](0x194);}return _0x4b24dd;};}function handleError(_0x7c8595,_0x116620){_0x116620=_0x116620||0x1f4;return function(_0x5e5798){logger[_0x7f1e('0x26')](_0x5e5798[_0x7f1e('0x27')]);if(_0x5e5798[_0x7f1e('0x28')]){delete _0x5e5798[_0x7f1e('0x28')];}_0x7c8595['status'](_0x116620)[_0x7f1e('0x29')](_0x5e5798);};}exports[_0x7f1e('0x2a')]=function(_0x369c93,_0x1e0097){var _0x326459={},_0x14fd23={},_0x2ae1a0={'count':0x0,'rows':[]};var _0x404eac=_[_0x7f1e('0x2b')](db[_0x7f1e('0x2c')][_0x7f1e('0x2d')],function(_0x254375){return{'name':_0x254375['fieldName'],'type':_0x254375[_0x7f1e('0x2e')][_0x7f1e('0x2f')]};});_0x14fd23[_0x7f1e('0x30')]=_['map'](_0x404eac,_0x7f1e('0x28'));_0x14fd23['query']=_[_0x7f1e('0x31')](_0x369c93['query']);_0x14fd23[_0x7f1e('0x32')]=_[_0x7f1e('0x33')](_0x14fd23['model'],_0x14fd23[_0x7f1e('0x34')]);_0x326459[_0x7f1e('0x35')]=_['intersection'](_0x14fd23[_0x7f1e('0x30')],qs[_0x7f1e('0x36')](_0x369c93[_0x7f1e('0x34')][_0x7f1e('0x36')]));_0x326459[_0x7f1e('0x35')]=_0x326459[_0x7f1e('0x35')][_0x7f1e('0x37')]?_0x326459[_0x7f1e('0x35')]:_0x14fd23['model'];if(!_0x369c93[_0x7f1e('0x34')]['hasOwnProperty'](_0x7f1e('0x38'))){_0x326459['limit']=qs[_0x7f1e('0x1d')](_0x369c93[_0x7f1e('0x34')][_0x7f1e('0x1d')]);_0x326459['offset']=qs[_0x7f1e('0x1b')](_0x369c93[_0x7f1e('0x34')][_0x7f1e('0x1b')]);}_0x326459[_0x7f1e('0x39')]=qs[_0x7f1e('0x3a')](_0x369c93[_0x7f1e('0x34')]['sort']);_0x326459['where']=qs[_0x7f1e('0x32')](_[_0x7f1e('0x3b')](_0x369c93['query'],_0x14fd23[_0x7f1e('0x32')]),_0x404eac);if(_0x369c93[_0x7f1e('0x34')]['filter']){_0x326459[_0x7f1e('0x3c')]=_[_0x7f1e('0x3d')](_0x326459[_0x7f1e('0x3c')],{'$or':_[_0x7f1e('0x2b')](_0x404eac,function(_0x1de7ca){if(_0x1de7ca[_0x7f1e('0x2e')]!==_0x7f1e('0x3e')){var _0x12860f={};_0x12860f[_0x1de7ca[_0x7f1e('0x28')]]={'$like':'%'+_0x369c93[_0x7f1e('0x34')][_0x7f1e('0x3f')]+'%'};return _0x12860f;}})});}_0x326459=_[_0x7f1e('0x3d')]({},_0x326459,_0x369c93[_0x7f1e('0x40')]);var _0x4bfb2b={'where':_0x326459[_0x7f1e('0x3c')]};return db[_0x7f1e('0x2c')]['count'](_0x4bfb2b)[_0x7f1e('0x25')](function(_0x20ae45){_0x2ae1a0[_0x7f1e('0x1e')]=_0x20ae45;if(_0x369c93[_0x7f1e('0x34')][_0x7f1e('0x41')]){_0x326459[_0x7f1e('0x42')]=[{'all':!![]}];}return db[_0x7f1e('0x2c')][_0x7f1e('0x43')](_0x326459);})['then'](function(_0x13402e){_0x2ae1a0[_0x7f1e('0x44')]=_0x13402e;return _0x2ae1a0;})[_0x7f1e('0x25')](respondWithFilteredResult(_0x1e0097,_0x326459))['catch'](handleError(_0x1e0097,null));};exports[_0x7f1e('0x45')]=function(_0x47d35c,_0x24406c){var _0x15b998={'raw':!![],'where':{'id':_0x47d35c[_0x7f1e('0x46')]['id']}},_0x42f144={};_0x42f144[_0x7f1e('0x30')]=_['keys'](db[_0x7f1e('0x2c')][_0x7f1e('0x2d')]);_0x42f144['query']=_[_0x7f1e('0x31')](_0x47d35c[_0x7f1e('0x34')]);_0x42f144['filters']=_[_0x7f1e('0x33')](_0x42f144['model'],_0x42f144[_0x7f1e('0x34')]);_0x15b998[_0x7f1e('0x35')]=_[_0x7f1e('0x33')](_0x42f144[_0x7f1e('0x30')],qs[_0x7f1e('0x36')](_0x47d35c[_0x7f1e('0x34')]['fields']));_0x15b998['attributes']=_0x15b998[_0x7f1e('0x35')][_0x7f1e('0x37')]?_0x15b998[_0x7f1e('0x35')]:_0x42f144[_0x7f1e('0x30')];if(_0x47d35c[_0x7f1e('0x34')][_0x7f1e('0x41')]){_0x15b998['include']=[{'all':!![]}];}_0x15b998=_[_0x7f1e('0x3d')]({},_0x15b998,_0x47d35c['options']);return db[_0x7f1e('0x2c')][_0x7f1e('0x47')](_0x15b998)[_0x7f1e('0x25')](handleEntityNotFound(_0x24406c,null))[_0x7f1e('0x25')](respondWithResult(_0x24406c,null))[_0x7f1e('0x48')](handleError(_0x24406c,null));};exports['create']=function(_0x56025b,_0xf459f5){return db[_0x7f1e('0x2c')][_0x7f1e('0x49')](_0x56025b['body'],{})[_0x7f1e('0x25')](respondWithResult(_0xf459f5,0xc9))[_0x7f1e('0x48')](handleError(_0xf459f5,null));};exports[_0x7f1e('0x24')]=function(_0x4cb86a,_0x3a81f6){if(_0x4cb86a[_0x7f1e('0x4a')]['id']){delete _0x4cb86a[_0x7f1e('0x4a')]['id'];}return db[_0x7f1e('0x2c')][_0x7f1e('0x47')]({'where':{'id':_0x4cb86a[_0x7f1e('0x46')]['id']}})[_0x7f1e('0x25')](handleEntityNotFound(_0x3a81f6,null))[_0x7f1e('0x25')](saveUpdates(_0x4cb86a[_0x7f1e('0x4a')],null))[_0x7f1e('0x25')](respondWithResult(_0x3a81f6,null))['catch'](handleError(_0x3a81f6,null));};exports[_0x7f1e('0x4b')]=function(_0x16729c,_0x29be6f){return db[_0x7f1e('0x2c')][_0x7f1e('0x47')]({'where':{'id':_0x16729c['params']['id']}})[_0x7f1e('0x25')](handleEntityNotFound(_0x29be6f,null))[_0x7f1e('0x25')](removeEntity(_0x29be6f,null))[_0x7f1e('0x48')](handleError(_0x29be6f,null));};
\ No newline at end of file
+var _0xde32=['../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','destroy','then','error','stack','name','send','index','SmsApplication','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','include','findAll','catch','show','params','includeAll','options','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x654102,_0x4fa2f9){var _0x3cc306=function(_0x4be5d2){while(--_0x4be5d2){_0x654102['push'](_0x654102['shift']());}};_0x3cc306(++_0x4fa2f9);}(_0xde32,0xc8));var _0x2de3=function(_0x512706,_0x662d32){_0x512706=_0x512706-0x0;var _0x51d92d=_0xde32[_0x512706];return _0x51d92d;};'use strict';var emlformat=require(_0x2de3('0x0'));var rimraf=require(_0x2de3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2de3('0x2'));var rp=require(_0x2de3('0x3'));var moment=require(_0x2de3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2de3('0x5'));var util=require(_0x2de3('0x6'));var path=require(_0x2de3('0x7'));var sox=require(_0x2de3('0x8'));var csv=require(_0x2de3('0x9'));var ejs=require(_0x2de3('0xa'));var fs=require('fs');var fs_extra=require(_0x2de3('0xb'));var _=require(_0x2de3('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2de3('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2de3('0x9'));var querystring=require(_0x2de3('0xe'));var Papa=require('papaparse');var Redis=require(_0x2de3('0xf'));var authService=require(_0x2de3('0x10'));var qs=require(_0x2de3('0x11'));var as=require(_0x2de3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2de3('0x13'))(_0x2de3('0x14'));var utils=require(_0x2de3('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2de3('0x16'));var db=require(_0x2de3('0x17'))['db'];function respondWithStatusCode(_0x3a5bda,_0x8f0c05){_0x8f0c05=_0x8f0c05||0xcc;return function(_0x1618e2){if(_0x1618e2){return _0x3a5bda[_0x2de3('0x18')](_0x8f0c05);}return _0x3a5bda['status'](_0x8f0c05)[_0x2de3('0x19')]();};}function respondWithResult(_0x24b1c6,_0x4ec5ae){_0x4ec5ae=_0x4ec5ae||0xc8;return function(_0x187b6b){if(_0x187b6b){return _0x24b1c6[_0x2de3('0x1a')](_0x4ec5ae)[_0x2de3('0x1b')](_0x187b6b);}};}function respondWithFilteredResult(_0x2b0221,_0x54fb34){return function(_0x399d13){if(_0x399d13){var _0xde127b=typeof _0x54fb34[_0x2de3('0x1c')]===_0x2de3('0x1d')&&typeof _0x54fb34['limit']===_0x2de3('0x1d');var _0x37b505=_0x399d13[_0x2de3('0x1e')];var _0x4817db=_0xde127b?0x0:_0x54fb34[_0x2de3('0x1c')];var _0x11aea2=_0xde127b?_0x399d13['count']:_0x54fb34[_0x2de3('0x1c')]+_0x54fb34[_0x2de3('0x1f')];var _0x2438bd;if(_0x11aea2>=_0x37b505){_0x11aea2=_0x37b505;_0x2438bd=0xc8;}else{_0x2438bd=0xce;}_0x2b0221[_0x2de3('0x1a')](_0x2438bd);return _0x2b0221[_0x2de3('0x20')](_0x2de3('0x21'),_0x4817db+'-'+_0x11aea2+'/'+_0x37b505)['json'](_0x399d13);}return null;};}function patchUpdates(_0x395def){return function(_0xebe1cb){try{jsonpatch[_0x2de3('0x22')](_0xebe1cb,_0x395def,!![]);}catch(_0x2ef995){return BPromise['reject'](_0x2ef995);}return _0xebe1cb['save']();};}function saveUpdates(_0x22e612,_0x57d2e6){return function(_0x3691ef){if(_0x3691ef){return _0x3691ef['update'](_0x22e612)['then'](function(_0xf70392){return _0xf70392;});}return null;};}function removeEntity(_0x59cfa9,_0x152858){return function(_0x1b874c){if(_0x1b874c){return _0x1b874c[_0x2de3('0x23')]()[_0x2de3('0x24')](function(){_0x59cfa9[_0x2de3('0x1a')](0xcc)[_0x2de3('0x19')]();});}};}function handleEntityNotFound(_0x2f1e40,_0x373d80){return function(_0x24423f){if(!_0x24423f){_0x2f1e40[_0x2de3('0x18')](0x194);}return _0x24423f;};}function handleError(_0x556c49,_0x425b5d){_0x425b5d=_0x425b5d||0x1f4;return function(_0x31e6aa){logger[_0x2de3('0x25')](_0x31e6aa[_0x2de3('0x26')]);if(_0x31e6aa[_0x2de3('0x27')]){delete _0x31e6aa[_0x2de3('0x27')];}_0x556c49[_0x2de3('0x1a')](_0x425b5d)[_0x2de3('0x28')](_0x31e6aa);};}exports[_0x2de3('0x29')]=function(_0x4eea11,_0x392762){var _0x438c3e={},_0x36967b={},_0x3852f7={'count':0x0,'rows':[]};var _0xd1179d=_['map'](db[_0x2de3('0x2a')][_0x2de3('0x2b')],function(_0x1028af){return{'name':_0x1028af[_0x2de3('0x2c')],'type':_0x1028af[_0x2de3('0x2d')]['key']};});_0x36967b[_0x2de3('0x2e')]=_['map'](_0xd1179d,_0x2de3('0x27'));_0x36967b[_0x2de3('0x2f')]=_[_0x2de3('0x30')](_0x4eea11[_0x2de3('0x2f')]);_0x36967b[_0x2de3('0x31')]=_['intersection'](_0x36967b['model'],_0x36967b[_0x2de3('0x2f')]);_0x438c3e['attributes']=_[_0x2de3('0x32')](_0x36967b[_0x2de3('0x2e')],qs[_0x2de3('0x33')](_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x33')]));_0x438c3e[_0x2de3('0x34')]=_0x438c3e[_0x2de3('0x34')][_0x2de3('0x35')]?_0x438c3e[_0x2de3('0x34')]:_0x36967b[_0x2de3('0x2e')];if(!_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x36')](_0x2de3('0x37'))){_0x438c3e['limit']=qs[_0x2de3('0x1f')](_0x4eea11['query'][_0x2de3('0x1f')]);_0x438c3e['offset']=qs[_0x2de3('0x1c')](_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x1c')]);}_0x438c3e[_0x2de3('0x38')]=qs[_0x2de3('0x39')](_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x39')]);_0x438c3e[_0x2de3('0x3a')]=qs[_0x2de3('0x31')](_[_0x2de3('0x3b')](_0x4eea11[_0x2de3('0x2f')],_0x36967b['filters']),_0xd1179d);if(_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x3c')]){_0x438c3e[_0x2de3('0x3a')]=_[_0x2de3('0x3d')](_0x438c3e[_0x2de3('0x3a')],{'$or':_[_0x2de3('0x3e')](_0xd1179d,function(_0x2a2304){if(_0x2a2304[_0x2de3('0x2d')]!=='VIRTUAL'){var _0x64cbfd={};_0x64cbfd[_0x2a2304[_0x2de3('0x27')]]={'$like':'%'+_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x3c')]+'%'};return _0x64cbfd;}})});}_0x438c3e=_['merge']({},_0x438c3e,_0x4eea11['options']);var _0x24071a={'where':_0x438c3e[_0x2de3('0x3a')]};return db[_0x2de3('0x2a')][_0x2de3('0x1e')](_0x24071a)[_0x2de3('0x24')](function(_0x5f4cbe){_0x3852f7[_0x2de3('0x1e')]=_0x5f4cbe;if(_0x4eea11[_0x2de3('0x2f')]['includeAll']){_0x438c3e[_0x2de3('0x3f')]=[{'all':!![]}];}return db[_0x2de3('0x2a')][_0x2de3('0x40')](_0x438c3e);})[_0x2de3('0x24')](function(_0x32da66){_0x3852f7['rows']=_0x32da66;return _0x3852f7;})[_0x2de3('0x24')](respondWithFilteredResult(_0x392762,_0x438c3e))[_0x2de3('0x41')](handleError(_0x392762,null));};exports[_0x2de3('0x42')]=function(_0x4afbe6,_0x1a0b3b){var _0x46b563={'raw':!![],'where':{'id':_0x4afbe6[_0x2de3('0x43')]['id']}},_0x2e075e={};_0x2e075e[_0x2de3('0x2e')]=_[_0x2de3('0x30')](db[_0x2de3('0x2a')][_0x2de3('0x2b')]);_0x2e075e['query']=_[_0x2de3('0x30')](_0x4afbe6[_0x2de3('0x2f')]);_0x2e075e['filters']=_['intersection'](_0x2e075e['model'],_0x2e075e[_0x2de3('0x2f')]);_0x46b563[_0x2de3('0x34')]=_['intersection'](_0x2e075e[_0x2de3('0x2e')],qs[_0x2de3('0x33')](_0x4afbe6[_0x2de3('0x2f')][_0x2de3('0x33')]));_0x46b563['attributes']=_0x46b563[_0x2de3('0x34')]['length']?_0x46b563['attributes']:_0x2e075e[_0x2de3('0x2e')];if(_0x4afbe6[_0x2de3('0x2f')][_0x2de3('0x44')]){_0x46b563['include']=[{'all':!![]}];}_0x46b563=_[_0x2de3('0x3d')]({},_0x46b563,_0x4afbe6[_0x2de3('0x45')]);return db[_0x2de3('0x2a')]['find'](_0x46b563)['then'](handleEntityNotFound(_0x1a0b3b,null))[_0x2de3('0x24')](respondWithResult(_0x1a0b3b,null))[_0x2de3('0x41')](handleError(_0x1a0b3b,null));};exports[_0x2de3('0x46')]=function(_0x3a9946,_0x5c4006){return db[_0x2de3('0x2a')][_0x2de3('0x46')](_0x3a9946[_0x2de3('0x47')],{})[_0x2de3('0x24')](respondWithResult(_0x5c4006,0xc9))[_0x2de3('0x41')](handleError(_0x5c4006,null));};exports['update']=function(_0x5289e1,_0x59336c){if(_0x5289e1[_0x2de3('0x47')]['id']){delete _0x5289e1[_0x2de3('0x47')]['id'];}return db[_0x2de3('0x2a')]['find']({'where':{'id':_0x5289e1[_0x2de3('0x43')]['id']}})['then'](handleEntityNotFound(_0x59336c,null))[_0x2de3('0x24')](saveUpdates(_0x5289e1['body'],null))[_0x2de3('0x24')](respondWithResult(_0x59336c,null))['catch'](handleError(_0x59336c,null));};exports[_0x2de3('0x23')]=function(_0xe2b2b2,_0x2a40c4){return db['SmsApplication'][_0x2de3('0x48')]({'where':{'id':_0xe2b2b2[_0x2de3('0x43')]['id']}})['then'](handleEntityNotFound(_0x2a40c4,null))['then'](removeEntity(_0x2a40c4,null))[_0x2de3('0x41')](handleError(_0x2a40c4,null));};
\ No newline at end of file
index 0869311..d916126 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01d8=['util','api','moment','bluebird','request-promise','path','rimraf','./smsApplication.attributes','define','SmsApplication','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x329067,_0x24c60f){var _0x3f4ef4=function(_0x46d674){while(--_0x46d674){_0x329067['push'](_0x329067['shift']());}};_0x3f4ef4(++_0x24c60f);}(_0x01d8,0x1c6));var _0x801d=function(_0x55cc58,_0x5ce0af){_0x55cc58=_0x55cc58-0x0;var _0x26062e=_0x01d8[_0x55cc58];return _0x26062e;};'use strict';var _=require(_0x801d('0x0'));var util=require(_0x801d('0x1'));var logger=require('../../config/logger')(_0x801d('0x2'));var moment=require(_0x801d('0x3'));var BPromise=require(_0x801d('0x4'));var rp=require(_0x801d('0x5'));var fs=require('fs');var path=require(_0x801d('0x6'));var rimraf=require(_0x801d('0x7'));var config=require('../../config/environment');var attributes=require(_0x801d('0x8'));module['exports']=function(_0x3213e9,_0x24c42a){return _0x3213e9[_0x801d('0x9')](_0x801d('0xa'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x801d('0xb'),'collate':_0x801d('0xc')});};
\ No newline at end of file
+var _0xd436=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsApplication','sms_applications','utf8mb4','util','../../config/logger','api'];(function(_0x4ede09,_0x18801d){var _0x253193=function(_0xa4c752){while(--_0xa4c752){_0x4ede09['push'](_0x4ede09['shift']());}};_0x253193(++_0x18801d);}(_0xd436,0x1af));var _0x6d43=function(_0x2e2e41,_0x3a7848){_0x2e2e41=_0x2e2e41-0x0;var _0x266226=_0xd436[_0x2e2e41];return _0x266226;};'use strict';var _=require('lodash');var util=require(_0x6d43('0x0'));var logger=require(_0x6d43('0x1'))(_0x6d43('0x2'));var moment=require(_0x6d43('0x3'));var BPromise=require(_0x6d43('0x4'));var rp=require(_0x6d43('0x5'));var fs=require('fs');var path=require(_0x6d43('0x6'));var rimraf=require(_0x6d43('0x7'));var config=require(_0x6d43('0x8'));var attributes=require('./smsApplication.attributes');module[_0x6d43('0x9')]=function(_0x31ae02,_0xf863e4){return _0x31ae02[_0x6d43('0xa')](_0x6d43('0xb'),attributes,{'tableName':_0x6d43('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6d43('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 8d99f32..ce7e776 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd48e=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','debug','SmsApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','SmsApplication,\x20%s,\x20%s','message','catch'];(function(_0x2189f2,_0x42428e){var _0x28362b=function(_0x1cec8){while(--_0x1cec8){_0x2189f2['push'](_0x2189f2['shift']());}};_0x28362b(++_0x42428e);}(_0xd48e,0x93));var _0xed48=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0xd48e[_0xd0b415];return _0x2bdf2c;};'use strict';var _=require('lodash');var util=require(_0xed48('0x0'));var moment=require(_0xed48('0x1'));var BPromise=require(_0xed48('0x2'));var rs=require(_0xed48('0x3'));var fs=require('fs');var Redis=require(_0xed48('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xed48('0x5'));var logger=require(_0xed48('0x6'))(_0xed48('0x7'));var config=require('../../config/environment');var jayson=require(_0xed48('0x8'));var client=jayson[_0xed48('0x9')][_0xed48('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50b4ce,_0x2cc522,_0x1c9299){return new BPromise(function(_0x52a5e2,_0x5f0f1b){return client['request'](_0x50b4ce,_0x1c9299)[_0xed48('0xb')](function(_0x28096a){logger[_0xed48('0xc')]('SmsApplication,\x20%s,\x20%s',_0x2cc522,'request\x20sent');logger[_0xed48('0xd')](_0xed48('0xe'),_0x2cc522,_0xed48('0xf'),JSON['stringify'](_0x28096a));if(_0x28096a[_0xed48('0x10')]){if(_0x28096a[_0xed48('0x10')][_0xed48('0x11')]===0x1f4){logger[_0xed48('0x10')](_0xed48('0x12'),_0x2cc522,_0x28096a[_0xed48('0x10')][_0xed48('0x13')]);return _0x5f0f1b(_0x28096a[_0xed48('0x10')][_0xed48('0x13')]);}logger[_0xed48('0x10')](_0xed48('0x12'),_0x2cc522,_0x28096a[_0xed48('0x10')][_0xed48('0x13')]);return _0x52a5e2(_0x28096a['error'][_0xed48('0x13')]);}else{logger['info'](_0xed48('0x12'),_0x2cc522,'request\x20sent');_0x52a5e2(_0x28096a['result'][_0xed48('0x13')]);}})[_0xed48('0x14')](function(_0x3dd77d){logger[_0xed48('0x10')](_0xed48('0x12'),_0x2cc522,_0x3dd77d);_0x5f0f1b(_0x3dd77d);});});}
\ No newline at end of file
+var _0x46cb=['debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x1e8616,_0x1809f6){var _0x52af81=function(_0x3cd159){while(--_0x3cd159){_0x1e8616['push'](_0x1e8616['shift']());}};_0x52af81(++_0x1809f6);}(_0x46cb,0x84));var _0xb46c=function(_0x3849ff,_0x4ae25e){_0x3849ff=_0x3849ff-0x0;var _0x3ab676=_0x46cb[_0x3849ff];return _0x3ab676;};'use strict';var _=require(_0xb46c('0x0'));var util=require(_0xb46c('0x1'));var moment=require(_0xb46c('0x2'));var BPromise=require(_0xb46c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb46c('0x4'));var db=require(_0xb46c('0x5'))['db'];var utils=require(_0xb46c('0x6'));var logger=require(_0xb46c('0x7'))('rpc');var config=require(_0xb46c('0x8'));var jayson=require(_0xb46c('0x9'));var client=jayson[_0xb46c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16554f,_0x595776,_0xc2a7af){return new BPromise(function(_0x2bf067,_0x5d6405){return client['request'](_0x16554f,_0xc2a7af)[_0xb46c('0xb')](function(_0x12a113){logger[_0xb46c('0xc')](_0xb46c('0xd'),_0x595776,_0xb46c('0xe'));logger[_0xb46c('0xf')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x595776,_0xb46c('0xe'),JSON[_0xb46c('0x10')](_0x12a113));if(_0x12a113[_0xb46c('0x11')]){if(_0x12a113[_0xb46c('0x11')]['code']===0x1f4){logger[_0xb46c('0x11')](_0xb46c('0xd'),_0x595776,_0x12a113[_0xb46c('0x11')]['message']);return _0x5d6405(_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);}logger['error'](_0xb46c('0xd'),_0x595776,_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);return _0x2bf067(_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);}else{logger[_0xb46c('0xc')](_0xb46c('0xd'),_0x595776,'request\x20sent');_0x2bf067(_0x12a113[_0xb46c('0x13')][_0xb46c('0x12')]);}})[_0xb46c('0x14')](function(_0x118f95){logger[_0xb46c('0x11')](_0xb46c('0xd'),_0x595776,_0x118f95);_0x5d6405(_0x118f95);});});}
\ No newline at end of file
index 0810e86..50a6b8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03e=['exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','removeTags'];(function(_0x3f23fc,_0x50a770){var _0x5e66f8=function(_0xc7b415){while(--_0xc7b415){_0x3f23fc['push'](_0x3f23fc['shift']());}};_0x5e66f8(++_0x50a770);}(_0xb03e,0x1eb));var _0xeb03=function(_0x6b17fd,_0x4fb143){_0x6b17fd=_0x6b17fd-0x0;var _0x325f8c=_0xb03e[_0x6b17fd];return _0x325f8c;};'use strict';var multer=require('multer');var util=require(_0xeb03('0x0'));var path=require(_0xeb03('0x1'));var timeout=require(_0xeb03('0x2'));var express=require(_0xeb03('0x3'));var router=express[_0xeb03('0x4')]();var fs_extra=require(_0xeb03('0x5'));var auth=require(_0xeb03('0x6'));var interaction=require(_0xeb03('0x7'));var config=require(_0xeb03('0x8'));var controller=require(_0xeb03('0x9'));router[_0xeb03('0xa')]('/',auth[_0xeb03('0xb')](),controller['index']);router[_0xeb03('0xa')](_0xeb03('0xc'),auth[_0xeb03('0xb')](),controller[_0xeb03('0xd')]);router[_0xeb03('0xa')](_0xeb03('0xe'),auth['isAuthenticated'](),controller[_0xeb03('0xf')]);router[_0xeb03('0xa')](_0xeb03('0x10'),auth['isAuthenticated'](),controller[_0xeb03('0x11')]);router['get'](_0xeb03('0x12'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x13')]);router[_0xeb03('0x14')]('/',auth[_0xeb03('0xb')](),controller[_0xeb03('0x15')]);router[_0xeb03('0x14')](_0xeb03('0x10'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x16')]);router[_0xeb03('0x14')](_0xeb03('0x17'),auth['isAuthenticated'](),interaction[_0xeb03('0x18')](_0xeb03('0x19'),_0xeb03('0x1a')),controller[_0xeb03('0x1b')]);router['put'](_0xeb03('0xe'),auth[_0xeb03('0xb')](),interaction[_0xeb03('0x18')]('sms',_0xeb03('0x1c')),controller[_0xeb03('0x1d')]);router[_0xeb03('0x1e')](_0xeb03('0xe'),auth[_0xeb03('0xb')](),interaction[_0xeb03('0x18')](_0xeb03('0x19'),_0xeb03('0x1f')),controller[_0xeb03('0x20')]);router[_0xeb03('0x1e')](_0xeb03('0x17'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x21')]);module[_0xeb03('0x22')]=router;
\ No newline at end of file
+var _0xe605=['./smsInteraction.controller','get','isAuthenticated','index','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','/:id','update','delete','smsinteraction:destroy','removeTags','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x611fd0,_0x14de49){var _0xf3f00a=function(_0x3dde98){while(--_0x3dde98){_0x611fd0['push'](_0x611fd0['shift']());}};_0xf3f00a(++_0x14de49);}(_0xe605,0x92));var _0x5e60=function(_0x7cfca,_0x54d06a){_0x7cfca=_0x7cfca-0x0;var _0x4196b3=_0xe605[_0x7cfca];return _0x4196b3;};'use strict';var multer=require(_0x5e60('0x0'));var util=require(_0x5e60('0x1'));var path=require('path');var timeout=require(_0x5e60('0x2'));var express=require(_0x5e60('0x3'));var router=express[_0x5e60('0x4')]();var fs_extra=require(_0x5e60('0x5'));var auth=require(_0x5e60('0x6'));var interaction=require(_0x5e60('0x7'));var config=require(_0x5e60('0x8'));var controller=require(_0x5e60('0x9'));router[_0x5e60('0xa')]('/',auth[_0x5e60('0xb')](),controller[_0x5e60('0xc')]);router[_0x5e60('0xa')]('/describe',auth[_0x5e60('0xb')](),controller['describe']);router['get']('/:id',auth[_0x5e60('0xb')](),controller[_0x5e60('0xd')]);router[_0x5e60('0xa')](_0x5e60('0xe'),auth[_0x5e60('0xb')](),controller[_0x5e60('0xf')]);router['get'](_0x5e60('0x10'),auth['isAuthenticated'](),controller[_0x5e60('0x11')]);router[_0x5e60('0x12')]('/',auth[_0x5e60('0xb')](),controller['create']);router[_0x5e60('0x12')](_0x5e60('0xe'),auth[_0x5e60('0xb')](),controller[_0x5e60('0x13')]);router[_0x5e60('0x12')](_0x5e60('0x14'),auth['isAuthenticated'](),interaction[_0x5e60('0x15')](_0x5e60('0x16'),_0x5e60('0x17')),controller[_0x5e60('0x18')]);router['put'](_0x5e60('0x19'),auth['isAuthenticated'](),interaction[_0x5e60('0x15')](_0x5e60('0x16'),'smsinteraction:update'),controller[_0x5e60('0x1a')]);router[_0x5e60('0x1b')](_0x5e60('0x19'),auth[_0x5e60('0xb')](),interaction['tracked'](_0x5e60('0x16'),_0x5e60('0x1c')),controller['destroy']);router[_0x5e60('0x1b')](_0x5e60('0x14'),auth[_0x5e60('0xb')](),controller[_0x5e60('0x1d')]);module[_0x5e60('0x1e')]=router;
\ No newline at end of file
index 30d73bf..cd76a7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef4d=['BOOLEAN','DATE','STRING','ENUM','out','INTEGER','sequelize','moment','exports'];(function(_0x52085a,_0x3717ca){var _0x5afc1a=function(_0x2aa175){while(--_0x2aa175){_0x52085a['push'](_0x52085a['shift']());}};_0x5afc1a(++_0x3717ca);}(_0xef4d,0x165));var _0xdef4=function(_0x1b5aea,_0x3f04b7){_0x1b5aea=_0x1b5aea-0x0;var _0x15cfc6=_0xef4d[_0x1b5aea];return _0x15cfc6;};'use strict';var Sequelize=require(_0xdef4('0x0'));var moment=require(_0xdef4('0x1'));module[_0xdef4('0x2')]={'closed':{'type':Sequelize[_0xdef4('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xdef4('0x4')]},'disposition':{'type':Sequelize[_0xdef4('0x5')]},'secondDisposition':{'type':Sequelize[_0xdef4('0x5')]},'thirdDisposition':{'type':Sequelize[_0xdef4('0x5')]},'note':{'type':Sequelize[_0xdef4('0x5')]},'phone':{'type':Sequelize[_0xdef4('0x5')]},'read1stAt':{'type':Sequelize[_0xdef4('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xdef4('0x6')]('in',_0xdef4('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xdef4('0x6')]('in',_0xdef4('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xdef4('0x3')],'defaultValue':![]},'queueId':{'type':Sequelize[_0xdef4('0x8')]}};
\ No newline at end of file
+var _0x173d=['moment','DATE','STRING','out','ENUM','BOOLEAN'];(function(_0x19409d,_0xf48905){var _0x5de146=function(_0x117745){while(--_0x117745){_0x19409d['push'](_0x19409d['shift']());}};_0x5de146(++_0xf48905);}(_0x173d,0x108));var _0xd173=function(_0x5dc6c2,_0x47026b){_0x5dc6c2=_0x5dc6c2-0x0;var _0x4b0f54=_0x173d[_0x5dc6c2];return _0x4b0f54;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xd173('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xd173('0x1')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xd173('0x2')]},'thirdDisposition':{'type':Sequelize[_0xd173('0x2')]},'note':{'type':Sequelize[_0xd173('0x2')]},'phone':{'type':Sequelize[_0xd173('0x2')]},'read1stAt':{'type':Sequelize[_0xd173('0x1')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xd173('0x3')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xd173('0x1')]},'lastMsgDirection':{'type':Sequelize[_0xd173('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xd173('0x5')],'defaultValue':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 88b33a7..70a8ada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcfc=['secret','read','SmsAccount','Account','Owner','fullname','get','mkdirSync','N.A.','closed','closedAt','disposition','System','Contact','out','renderFile','root','views','createPdfFromHTML','err','unlinkSync','zip-dir','moment','bluebird','util','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','end','json','offset','limit','count','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','key','getOptions','findAll','sms','query','user','catch','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','options','find','create','SmsInteraction','body','describe','ids','omit','getMessages','SmsMessage','hasOwnProperty','order','sort','where','pick','SmsInteractionId','merge','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','setTags','spread','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','join','server','files','tmp','User','push','firstName','lastName','Messages','createdAt','direction'];(function(_0x27f38d,_0x1a5e24){var _0x19a504=function(_0x33c85b){while(--_0x33c85b){_0x27f38d['push'](_0x27f38d['shift']());}};_0x19a504(++_0x1a5e24);}(_0xfcfc,0xf9));var _0xcfcf=function(_0x2ef976,_0x4ba238){_0x2ef976=_0x2ef976-0x0;var _0x1d34ae=_0xfcfc[_0x2ef976];return _0x1d34ae;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xcfcf('0x0'));var moment=require(_0xcfcf('0x1'));var BPromise=require(_0xcfcf('0x2'));var util=require(_0xcfcf('0x3'));var path=require('path');var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var Redis=require(_0xcfcf('0x4'));var interaction=require(_0xcfcf('0x5'));var qs=require('../../components/parsers/qs');var pdf=require(_0xcfcf('0x6'));var logger=require(_0xcfcf('0x7'))(_0xcfcf('0x8'));var config=require(_0xcfcf('0x9'));var db=require(_0xcfcf('0xa'))['db'];config[_0xcfcf('0xb')]=_['defaults'](config[_0xcfcf('0xb')],{'host':_0xcfcf('0xc'),'port':0x18eb});var socket=require(_0xcfcf('0xd'))(new Redis(config[_0xcfcf('0xb')]));require('./smsInteraction.socket')['register'](socket);function respondWithStatusCode(_0x35d88d,_0x1833f7){_0x1833f7=_0x1833f7||0xcc;return function(_0x4eade5){if(_0x4eade5){return _0x35d88d[_0xcfcf('0xe')](_0x1833f7);}return _0x35d88d[_0xcfcf('0xf')](_0x1833f7)[_0xcfcf('0x10')]();};}function respondWithResult(_0x4adf26,_0x15c9ce){_0x15c9ce=_0x15c9ce||0xc8;return function(_0x413135){if(_0x413135){return _0x4adf26[_0xcfcf('0xf')](_0x15c9ce)[_0xcfcf('0x11')](_0x413135);}};}function respondWithFilteredResult(_0x16f5d0,_0x3c1101){return function(_0x1709cc){if(_0x1709cc){var _0x106d18=typeof _0x3c1101[_0xcfcf('0x12')]==='undefined'&&typeof _0x3c1101[_0xcfcf('0x13')]==='undefined';var _0x3aba49=_0x1709cc[_0xcfcf('0x14')];var _0x1f88a7=_0x106d18?0x0:_0x3c1101[_0xcfcf('0x12')];var _0x1bcd69=_0x106d18?_0x1709cc['count']:_0x3c1101[_0xcfcf('0x12')]+_0x3c1101['limit'];var _0x31c1ec;if(_0x1bcd69>=_0x3aba49){_0x1bcd69=_0x3aba49;_0x31c1ec=0xc8;}else{_0x31c1ec=0xce;}_0x16f5d0[_0xcfcf('0xf')](_0x31c1ec);return _0x16f5d0['set']('Content-Range',_0x1f88a7+'-'+_0x1bcd69+'/'+_0x3aba49)['json'](_0x1709cc);}return null;};}function saveUpdates(_0x42b955){return function(_0x1dfb30){if(_0x1dfb30){return _0x1dfb30[_0xcfcf('0x15')](_0x42b955)[_0xcfcf('0x16')](function(_0x5aecc9){return _0x5aecc9;});}return null;};}function removeEntity(_0x166715){return function(_0x2299c0){if(_0x2299c0){return _0x2299c0['destroy']()[_0xcfcf('0x16')](function(){_0x166715[_0xcfcf('0xf')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4dbfff){return function(_0x3d9670){if(!_0x3d9670){_0x4dbfff['sendStatus'](0x194);}return _0x3d9670;};}function handleError(_0x2ff9fc,_0x274fc7){_0x274fc7=_0x274fc7||0x1f4;return function(_0x796972){logger[_0xcfcf('0x17')](_0x796972[_0xcfcf('0x18')]);if(_0x796972[_0xcfcf('0x19')]){delete _0x796972[_0xcfcf('0x19')];}_0x2ff9fc['status'](_0x274fc7)[_0xcfcf('0x1a')](_0x796972);};}exports[_0xcfcf('0x1b')]=function(_0x36b64d,_0x450d24){var _0x3668fa={};var _0x3bda0d=_[_0xcfcf('0x1c')](db['SmsInteraction'][_0xcfcf('0x1d')],function(_0x33a96a){return{'name':_0x33a96a[_0xcfcf('0x1e')],'type':_0x33a96a['type'][_0xcfcf('0x1f')]};});_0x3668fa=qs[_0xcfcf('0x20')](_0x3bda0d,_0x36b64d);return interaction[_0xcfcf('0x21')](_0xcfcf('0x22'),_0x36b64d[_0xcfcf('0x23')],_0x36b64d[_0xcfcf('0x24')],_0x3668fa,_0x3bda0d)[_0xcfcf('0x16')](respondWithFilteredResult(_0x450d24,_0x3668fa))[_0xcfcf('0x25')](handleError(_0x450d24,null));};exports[_0xcfcf('0x26')]=function(_0x2c7baa,_0x39f654){var _0x231db2={'raw':![],'where':{'id':_0x2c7baa[_0xcfcf('0x27')]['id']}},_0x311a4c={};_0x311a4c[_0xcfcf('0x28')]=_[_0xcfcf('0x29')](db['SmsInteraction'][_0xcfcf('0x1d')]);_0x311a4c[_0xcfcf('0x23')]=_['keys'](_0x2c7baa[_0xcfcf('0x23')]);_0x311a4c[_0xcfcf('0x2a')]=_[_0xcfcf('0x2b')](_0x311a4c[_0xcfcf('0x28')],_0x311a4c[_0xcfcf('0x23')]);_0x231db2[_0xcfcf('0x2c')]=_[_0xcfcf('0x2b')](_0x311a4c['model'],qs[_0xcfcf('0x2d')](_0x2c7baa[_0xcfcf('0x23')]['fields']));_0x231db2[_0xcfcf('0x2c')]=_0x231db2[_0xcfcf('0x2c')][_0xcfcf('0x2e')]?_0x231db2[_0xcfcf('0x2c')]:_0x311a4c[_0xcfcf('0x28')];if(_0x2c7baa[_0xcfcf('0x23')][_0xcfcf('0x2f')]){_0x231db2['include']=[{'all':!![]}];}_0x231db2=_['merge']({},_0x231db2,_0x2c7baa[_0xcfcf('0x30')]);return db['SmsInteraction'][_0xcfcf('0x31')](_0x231db2)[_0xcfcf('0x16')](handleEntityNotFound(_0x39f654,null))[_0xcfcf('0x16')](respondWithResult(_0x39f654,null))[_0xcfcf('0x25')](handleError(_0x39f654,null));};exports[_0xcfcf('0x32')]=function(_0x362307,_0x547e7e){return db[_0xcfcf('0x33')][_0xcfcf('0x32')](_0x362307['body'],{})['then'](respondWithResult(_0x547e7e,0xc9))[_0xcfcf('0x25')](handleError(_0x547e7e,null));};exports[_0xcfcf('0x15')]=function(_0x2a1373,_0x59cb2f){if(_0x2a1373[_0xcfcf('0x34')]['id']){delete _0x2a1373[_0xcfcf('0x34')]['id'];}return db[_0xcfcf('0x33')][_0xcfcf('0x31')]({'where':{'id':_0x2a1373[_0xcfcf('0x27')]['id']}})[_0xcfcf('0x16')](handleEntityNotFound(_0x59cb2f,null))[_0xcfcf('0x16')](saveUpdates(_0x2a1373[_0xcfcf('0x34')],null))['then'](respondWithResult(_0x59cb2f,null))[_0xcfcf('0x25')](handleError(_0x59cb2f,null));};exports['destroy']=function(_0x37e22c,_0x1ca954){return db[_0xcfcf('0x33')][_0xcfcf('0x31')]({'where':{'id':_0x37e22c['params']['id']}})[_0xcfcf('0x16')](handleEntityNotFound(_0x1ca954,null))[_0xcfcf('0x16')](removeEntity(_0x1ca954,null))[_0xcfcf('0x25')](handleError(_0x1ca954,null));};exports['describe']=function(_0x57aa4b,_0x10521f){return db[_0xcfcf('0x33')][_0xcfcf('0x35')]()[_0xcfcf('0x16')](respondWithResult(_0x10521f,null))['catch'](handleError(_0x10521f,null));};exports['addMessage']=function(_0x1650ca,_0xddcd73){return db['SmsMessage'][_0xcfcf('0x31')]({'where':{'id':_0x1650ca[_0xcfcf('0x27')]['id']}})['then'](handleEntityNotFound(_0xddcd73,null))[_0xcfcf('0x16')](function(_0x168ebe){if(_0x168ebe){return _0x168ebe['addMessage'](_0x1650ca[_0xcfcf('0x34')][_0xcfcf('0x36')],_[_0xcfcf('0x37')](_0x1650ca[_0xcfcf('0x34')],['ids','id'])||{});}})[_0xcfcf('0x16')](respondWithResult(_0xddcd73,null))[_0xcfcf('0x25')](handleError(_0xddcd73,null));};exports[_0xcfcf('0x38')]=function(_0x3fd0b1,_0x354c83){var _0x275669={'raw':![],'where':{}};var _0xc933f1={};var _0x3ae0c2={'count':0x0,'rows':[]};return db[_0xcfcf('0x33')]['findOne']({'where':{'id':_0x3fd0b1['params']['id']}})[_0xcfcf('0x16')](handleEntityNotFound(_0x354c83,null))[_0xcfcf('0x16')](function(_0x42285f){if(_0x42285f){_0xc933f1[_0xcfcf('0x28')]=_[_0xcfcf('0x29')](db[_0xcfcf('0x39')][_0xcfcf('0x1d')]);_0xc933f1[_0xcfcf('0x23')]=_[_0xcfcf('0x29')](_0x3fd0b1['query']);_0xc933f1['filters']=_['intersection'](_0xc933f1[_0xcfcf('0x28')],_0xc933f1[_0xcfcf('0x23')]);_0x275669['attributes']=_[_0xcfcf('0x2b')](_0xc933f1[_0xcfcf('0x28')],qs[_0xcfcf('0x2d')](_0x3fd0b1[_0xcfcf('0x23')][_0xcfcf('0x2d')]));_0x275669[_0xcfcf('0x2c')]=_0x275669[_0xcfcf('0x2c')]['length']?_0x275669[_0xcfcf('0x2c')]:_0xc933f1[_0xcfcf('0x28')];if(!_0x3fd0b1[_0xcfcf('0x23')][_0xcfcf('0x3a')]('nolimit')){_0x275669[_0xcfcf('0x13')]=qs[_0xcfcf('0x13')](_0x3fd0b1[_0xcfcf('0x23')]['limit']);_0x275669[_0xcfcf('0x12')]=qs[_0xcfcf('0x12')](_0x3fd0b1[_0xcfcf('0x23')][_0xcfcf('0x12')]);}_0x275669[_0xcfcf('0x3b')]=qs[_0xcfcf('0x3c')](_0x3fd0b1[_0xcfcf('0x23')]['sort']);_0x275669[_0xcfcf('0x3d')]=qs[_0xcfcf('0x2a')](_[_0xcfcf('0x3e')](_0x3fd0b1['query'],_0xc933f1[_0xcfcf('0x2a')]));_0x275669['where'][_0xcfcf('0x3f')]=_0x42285f['id'];if(_0x3fd0b1[_0xcfcf('0x23')]['filter']){_0x275669[_0xcfcf('0x3d')]=_[_0xcfcf('0x40')](_0x275669[_0xcfcf('0x3d')],{'$or':_[_0xcfcf('0x1c')](_0x275669[_0xcfcf('0x2c')],function(_0x1085c4){var _0x85dd5f={};_0x85dd5f[_0x1085c4]={'$like':'%'+_0x3fd0b1['query'][_0xcfcf('0x41')]+'%'};return _0x85dd5f;})});}if(_0x3fd0b1['query'][_0xcfcf('0x42')]){var _0x5d4a1e=_0x3fd0b1[_0xcfcf('0x23')][_0xcfcf('0x42')][_0xcfcf('0x43')](',');var _0x2d8630={};_0x2d8630[_0x5d4a1e[0x0]]={'$gte':moment(_0x5d4a1e[0x1])[_0xcfcf('0x44')](_0xcfcf('0x45'))};_0x275669[_0xcfcf('0x3d')]=_[_0xcfcf('0x40')](_0x275669[_0xcfcf('0x3d')],_0x2d8630);}_0x275669=_[_0xcfcf('0x40')]({},_0x275669,_0x3fd0b1['options']);return db[_0xcfcf('0x39')][_0xcfcf('0x14')]({'where':_0x275669['where']})[_0xcfcf('0x16')](function(_0x587677){_0x3ae0c2['count']=_0x587677;if(_0x3fd0b1[_0xcfcf('0x23')][_0xcfcf('0x2f')]){_0x275669[_0xcfcf('0x46')]=[{'all':!![]}];}return db[_0xcfcf('0x39')][_0xcfcf('0x21')](_0x275669);})[_0xcfcf('0x16')](function(_0x200c60){_0x3ae0c2[_0xcfcf('0x47')]=_0x200c60;return _0x3ae0c2;});}})[_0xcfcf('0x16')](respondWithFilteredResult(_0x354c83,_0x275669))[_0xcfcf('0x25')](handleError(_0x354c83,null));};exports[_0xcfcf('0x48')]=function(_0x2f1037,_0x47be73){return db[_0xcfcf('0x33')][_0xcfcf('0x31')]({'where':{'id':_0x2f1037[_0xcfcf('0x27')]['id']}})[_0xcfcf('0x16')](handleEntityNotFound(_0x47be73,null))[_0xcfcf('0x16')](function(_0x50a3b0){if(_0x50a3b0){return _0x50a3b0[_0xcfcf('0x49')](_0x2f1037[_0xcfcf('0x34')][_0xcfcf('0x36')],_[_0xcfcf('0x37')](_0x2f1037['body'],[_0xcfcf('0x36'),'id'])||{})[_0xcfcf('0x4a')](function(){return db['Tag']['findAll']({'attributes':['id','name',_0xcfcf('0x4b')],'where':{'id':_0x2f1037[_0xcfcf('0x34')][_0xcfcf('0x36')]}});})[_0xcfcf('0x16')](function(_0x42db68){socket[_0xcfcf('0x4c')](_0xcfcf('0x4d'),{'id':Number(_0x2f1037[_0xcfcf('0x27')]['id']),'tags':_0x42db68||[]});return{'id':Number(_0x2f1037[_0xcfcf('0x27')]['id']),'tags':_0x42db68||[]};});}})[_0xcfcf('0x16')](respondWithResult(_0x47be73,null))[_0xcfcf('0x25')](handleError(_0x47be73,null));};exports['removeTags']=function(_0x47a24f,_0x31c6ca){return db[_0xcfcf('0x33')][_0xcfcf('0x31')]({'where':{'id':_0x47a24f[_0xcfcf('0x27')]['id']}})[_0xcfcf('0x16')](handleEntityNotFound(_0x31c6ca,null))['then'](function(_0x15721b){if(_0x15721b){return _0x15721b[_0xcfcf('0x4e')](_0x47a24f[_0xcfcf('0x23')][_0xcfcf('0x36')]);}})['then'](respondWithStatusCode(_0x31c6ca,null))[_0xcfcf('0x25')](handleError(_0x31c6ca,null));};exports[_0xcfcf('0x4f')]=function(_0x407781,_0xdba625){var _0x4c695e=moment()[_0xcfcf('0x50')]()[_0xcfcf('0x51')]();var _0x314d96=path[_0xcfcf('0x52')](config['root'],_0xcfcf('0x53'),_0xcfcf('0x54'),_0xcfcf('0x55'));var _0x1ad504=path[_0xcfcf('0x52')](_0x314d96,_0x4c695e);var _0x2d3b7d=util[_0xcfcf('0x44')]('transcript-%d-%s.zip',_0x407781[_0xcfcf('0x27')]['id'],_0x4c695e);var _0x47ee16=path['join'](_0x314d96,_0x2d3b7d);var _0x3a8e4b=[];_0x3a8e4b['push']({'model':db[_0xcfcf('0x56')],'as':_0xcfcf('0x56'),'attributes':['id','fullname'],'raw':!![]});_0x3a8e4b[_0xcfcf('0x57')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0xcfcf('0x58'),_0xcfcf('0x59')],'raw':!![]});var _0x36027f=[{'model':db[_0xcfcf('0x39')],'as':_0xcfcf('0x5a'),'attributes':['id','body',_0xcfcf('0x5b'),_0xcfcf('0x5c'),_0xcfcf('0x5d'),_0xcfcf('0x5e')],'include':_0x3a8e4b}];_0x36027f[_0xcfcf('0x57')]({'model':db[_0xcfcf('0x5f')],'as':_0xcfcf('0x60'),'attributes':['id','name']});_0x36027f[_0xcfcf('0x57')]({'model':db[_0xcfcf('0x56')],'as':_0xcfcf('0x61'),'attributes':['id',_0xcfcf('0x62')]});return db[_0xcfcf('0x33')]['find']({'where':{'id':_0x407781[_0xcfcf('0x27')]['id']},'include':_0x36027f})['then'](handleEntityNotFound(_0xdba625,null))[_0xcfcf('0x16')](function(_0x4d2310){if(_0x4d2310){var _0x4b4b35=_0x4d2310[_0xcfcf('0x63')]({'plain':!![]});fs[_0xcfcf('0x64')](_0x1ad504);var _0x51dc1b={'channel':'Sms','account':_0x4b4b35[_0xcfcf('0x60')]['name'],'agent':_0x4b4b35[_0xcfcf('0x61')]?_0x4b4b35[_0xcfcf('0x61')]['fullname']:_0xcfcf('0x65'),'createdAt':moment(_0x4b4b35[_0xcfcf('0x5b')])[_0xcfcf('0x44')](_0xcfcf('0x45'))['toString'](),'closedAt':_0x4b4b35[_0xcfcf('0x66')]?moment(_0x4b4b35[_0xcfcf('0x67')])['format'](_0xcfcf('0x45'))[_0xcfcf('0x51')]():'','disposition':_0x4b4b35[_0xcfcf('0x68')],'messages':_(_0x4b4b35[_0xcfcf('0x5a')])['filter']({'secret':![]})[_0xcfcf('0x1c')](function(_0x4f7119){return{'date':moment(_0x4f7119[_0xcfcf('0x5b')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xcfcf('0x51')](),'sender':_0x4f7119['direction']==='out'?_0x4f7119[_0xcfcf('0x56')]?_0x4f7119[_0xcfcf('0x56')][_0xcfcf('0x62')]:_0xcfcf('0x69'):_0x4f7119[_0xcfcf('0x6a')][_0xcfcf('0x58')]+(_0x4f7119[_0xcfcf('0x6a')][_0xcfcf('0x59')]?'\x20'+_0x4f7119[_0xcfcf('0x6a')][_0xcfcf('0x59')]:''),'body':_0x4f7119['body'],'direction':_0x4f7119[_0xcfcf('0x5c')]===_0xcfcf('0x6b')?'A':'C','secret':_0x4f7119['secret'],'read':_0x4f7119[_0xcfcf('0x5e')]};})['value']()};return ejs[_0xcfcf('0x6c')](path[_0xcfcf('0x52')](config[_0xcfcf('0x6d')],'server',_0xcfcf('0x6e'),'downloadInteraction.ejs'),{'interaction':_0x51dc1b})['then'](function(_0x5a1b4b){var _0x16ef28=path[_0xcfcf('0x52')](_0x1ad504,'transcript-'+_0x4b4b35['id']+'-'+_0x4c695e+'.pdf');var _0xbbcd18={'path':_0x16ef28,'channel':'Sms','interactionId':_0x4b4b35['id']};return pdf[_0xcfcf('0x6f')](_0x5a1b4b,_0xbbcd18);})[_0xcfcf('0x16')](function(){return new BPromise(function(_0x2977be,_0x1a918f){zipdir(_0x1ad504,{'saveTo':_0x47ee16},function(_0xf2d549,_0x1caf5a){if(_0xf2d549)return _0x1a918f(_0xf2d549);return _0x2977be(_0x1caf5a);});})[_0xcfcf('0x16')](function(){return new BPromise(function(_0x24ba95,_0x3e695a){rimraf(_0x1ad504,function(_0x32e1ff){if(_0x32e1ff)_0x3e695a(_0x32e1ff);return _0x24ba95();});});})[_0xcfcf('0x16')](function(){return _0xdba625[_0xcfcf('0x4f')](_0x47ee16,_0x2d3b7d,function(_0x5a8eb2){if(_0x5a8eb2){console['log'](_0xcfcf('0x70'),_0x5a8eb2);}else{fs[_0xcfcf('0x71')](_0x47ee16);}});});});}else{return _0xdba625[_0xcfcf('0xe')](0xc8);}})[_0xcfcf('0x25')](handleError(_0xdba625,null));};
\ No newline at end of file
+var _0x15cb=['ids','omit','getMessages','nolimit','limit','order','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','Tag','removeTags','unix','root','server','tmp','join','User','fullname','push','CmContact','lastName','Messages','createdAt','direction','secret','read','Owner','get','mkdirSync','Account','N.A.','toString','closed','closedAt','disposition','System','Contact','out','value','renderFile','downloadInteraction.ejs','transcript-','.pdf','Sms','createPdfFromHTML','download','log','err','unlinkSync','rimraf','moment','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','localhost','socket.io-emitter','redis','./smsInteraction.socket','register','sendStatus','end','json','offset','count','status','set','Content-Range','update','destroy','then','error','stack','name','send','index','map','SmsInteraction','findAll','user','catch','show','params','rawAttributes','query','keys','filters','intersection','model','attributes','fields','includeAll','include','merge','options','find','create','body','describe','addMessage','SmsMessage'];(function(_0x35675f,_0x2d6db6){var _0x26f03f=function(_0xb60831){while(--_0xb60831){_0x35675f['push'](_0x35675f['shift']());}};_0x26f03f(++_0x2d6db6);}(_0x15cb,0xa9));var _0xb15c=function(_0x4e7fef,_0x2ecfbb){_0x4e7fef=_0x4e7fef-0x0;var _0x5d7a7f=_0x15cb[_0x4e7fef];return _0x5d7a7f;};'use strict';var rimraf=require(_0xb15c('0x0'));var zipdir=require('zip-dir');var moment=require(_0xb15c('0x1'));var BPromise=require('bluebird');var util=require('util');var path=require('path');var ejs=require(_0xb15c('0x2'));var fs=require('fs');var _=require(_0xb15c('0x3'));var Redis=require(_0xb15c('0x4'));var interaction=require(_0xb15c('0x5'));var qs=require(_0xb15c('0x6'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0xb15c('0x7'));var config=require(_0xb15c('0x8'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xb15c('0x9'),'port':0x18eb});var socket=require(_0xb15c('0xa'))(new Redis(config[_0xb15c('0xb')]));require(_0xb15c('0xc'))[_0xb15c('0xd')](socket);function respondWithStatusCode(_0x4bafef,_0x533fcf){_0x533fcf=_0x533fcf||0xcc;return function(_0x515b78){if(_0x515b78){return _0x4bafef[_0xb15c('0xe')](_0x533fcf);}return _0x4bafef['status'](_0x533fcf)[_0xb15c('0xf')]();};}function respondWithResult(_0x140f02,_0x23540c){_0x23540c=_0x23540c||0xc8;return function(_0x10dbae){if(_0x10dbae){return _0x140f02['status'](_0x23540c)[_0xb15c('0x10')](_0x10dbae);}};}function respondWithFilteredResult(_0x5460e3,_0x5008fd){return function(_0x387c86){if(_0x387c86){var _0x4c0785=typeof _0x5008fd[_0xb15c('0x11')]==='undefined'&&typeof _0x5008fd['limit']==='undefined';var _0x19d7b2=_0x387c86['count'];var _0x31b675=_0x4c0785?0x0:_0x5008fd[_0xb15c('0x11')];var _0x3f73f7=_0x4c0785?_0x387c86[_0xb15c('0x12')]:_0x5008fd[_0xb15c('0x11')]+_0x5008fd['limit'];var _0x220d71;if(_0x3f73f7>=_0x19d7b2){_0x3f73f7=_0x19d7b2;_0x220d71=0xc8;}else{_0x220d71=0xce;}_0x5460e3[_0xb15c('0x13')](_0x220d71);return _0x5460e3[_0xb15c('0x14')](_0xb15c('0x15'),_0x31b675+'-'+_0x3f73f7+'/'+_0x19d7b2)[_0xb15c('0x10')](_0x387c86);}return null;};}function saveUpdates(_0x4878b9){return function(_0x4e3f4d){if(_0x4e3f4d){return _0x4e3f4d[_0xb15c('0x16')](_0x4878b9)['then'](function(_0x5f1def){return _0x5f1def;});}return null;};}function removeEntity(_0x5cf570){return function(_0x30df0b){if(_0x30df0b){return _0x30df0b[_0xb15c('0x17')]()[_0xb15c('0x18')](function(){_0x5cf570[_0xb15c('0x13')](0xcc)[_0xb15c('0xf')]();});}};}function handleEntityNotFound(_0x5a6c60){return function(_0x3505c4){if(!_0x3505c4){_0x5a6c60[_0xb15c('0xe')](0x194);}return _0x3505c4;};}function handleError(_0x2c2a55,_0x582d4f){_0x582d4f=_0x582d4f||0x1f4;return function(_0x6c3424){logger[_0xb15c('0x19')](_0x6c3424[_0xb15c('0x1a')]);if(_0x6c3424[_0xb15c('0x1b')]){delete _0x6c3424[_0xb15c('0x1b')];}_0x2c2a55[_0xb15c('0x13')](_0x582d4f)[_0xb15c('0x1c')](_0x6c3424);};}exports[_0xb15c('0x1d')]=function(_0x42b13a,_0x4a7b15){var _0x157e7c={};var _0x4a7c0b=_[_0xb15c('0x1e')](db[_0xb15c('0x1f')]['rawAttributes'],function(_0xd96ccf){return{'name':_0xd96ccf['fieldName'],'type':_0xd96ccf['type']['key']};});_0x157e7c=qs['getOptions'](_0x4a7c0b,_0x42b13a);return interaction[_0xb15c('0x20')]('sms',_0x42b13a['query'],_0x42b13a[_0xb15c('0x21')],_0x157e7c,_0x4a7c0b)['then'](respondWithFilteredResult(_0x4a7b15,_0x157e7c))[_0xb15c('0x22')](handleError(_0x4a7b15,null));};exports[_0xb15c('0x23')]=function(_0x24e2bb,_0x408ae5){var _0x316b9f={'raw':![],'where':{'id':_0x24e2bb[_0xb15c('0x24')]['id']}},_0x48e145={};_0x48e145['model']=_['keys'](db[_0xb15c('0x1f')][_0xb15c('0x25')]);_0x48e145[_0xb15c('0x26')]=_[_0xb15c('0x27')](_0x24e2bb[_0xb15c('0x26')]);_0x48e145[_0xb15c('0x28')]=_[_0xb15c('0x29')](_0x48e145[_0xb15c('0x2a')],_0x48e145[_0xb15c('0x26')]);_0x316b9f[_0xb15c('0x2b')]=_[_0xb15c('0x29')](_0x48e145[_0xb15c('0x2a')],qs[_0xb15c('0x2c')](_0x24e2bb['query'][_0xb15c('0x2c')]));_0x316b9f[_0xb15c('0x2b')]=_0x316b9f['attributes']['length']?_0x316b9f[_0xb15c('0x2b')]:_0x48e145['model'];if(_0x24e2bb[_0xb15c('0x26')][_0xb15c('0x2d')]){_0x316b9f[_0xb15c('0x2e')]=[{'all':!![]}];}_0x316b9f=_[_0xb15c('0x2f')]({},_0x316b9f,_0x24e2bb[_0xb15c('0x30')]);return db[_0xb15c('0x1f')][_0xb15c('0x31')](_0x316b9f)['then'](handleEntityNotFound(_0x408ae5,null))[_0xb15c('0x18')](respondWithResult(_0x408ae5,null))['catch'](handleError(_0x408ae5,null));};exports[_0xb15c('0x32')]=function(_0x1e60d6,_0x3366a6){return db[_0xb15c('0x1f')][_0xb15c('0x32')](_0x1e60d6[_0xb15c('0x33')],{})['then'](respondWithResult(_0x3366a6,0xc9))[_0xb15c('0x22')](handleError(_0x3366a6,null));};exports[_0xb15c('0x16')]=function(_0x326bfc,_0x7b762b){if(_0x326bfc[_0xb15c('0x33')]['id']){delete _0x326bfc[_0xb15c('0x33')]['id'];}return db['SmsInteraction'][_0xb15c('0x31')]({'where':{'id':_0x326bfc[_0xb15c('0x24')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x7b762b,null))[_0xb15c('0x18')](saveUpdates(_0x326bfc[_0xb15c('0x33')],null))[_0xb15c('0x18')](respondWithResult(_0x7b762b,null))[_0xb15c('0x22')](handleError(_0x7b762b,null));};exports[_0xb15c('0x17')]=function(_0x20fb22,_0x5ced8f){return db[_0xb15c('0x1f')][_0xb15c('0x31')]({'where':{'id':_0x20fb22[_0xb15c('0x24')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x5ced8f,null))[_0xb15c('0x18')](removeEntity(_0x5ced8f,null))['catch'](handleError(_0x5ced8f,null));};exports[_0xb15c('0x34')]=function(_0x4b20d,_0x2d56c2){return db[_0xb15c('0x1f')]['describe']()['then'](respondWithResult(_0x2d56c2,null))[_0xb15c('0x22')](handleError(_0x2d56c2,null));};exports[_0xb15c('0x35')]=function(_0x4f632f,_0x268262){return db[_0xb15c('0x36')][_0xb15c('0x31')]({'where':{'id':_0x4f632f[_0xb15c('0x24')]['id']}})['then'](handleEntityNotFound(_0x268262,null))[_0xb15c('0x18')](function(_0x21a57e){if(_0x21a57e){return _0x21a57e['addMessage'](_0x4f632f['body'][_0xb15c('0x37')],_[_0xb15c('0x38')](_0x4f632f[_0xb15c('0x33')],['ids','id'])||{});}})[_0xb15c('0x18')](respondWithResult(_0x268262,null))[_0xb15c('0x22')](handleError(_0x268262,null));};exports[_0xb15c('0x39')]=function(_0x58fdb8,_0x4a9452){var _0xe9602c={'raw':![],'where':{}};var _0x3bf3e2={};var _0x13ee77={'count':0x0,'rows':[]};return db['SmsInteraction']['findOne']({'where':{'id':_0x58fdb8[_0xb15c('0x24')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x4a9452,null))[_0xb15c('0x18')](function(_0x13cd4a){if(_0x13cd4a){_0x3bf3e2[_0xb15c('0x2a')]=_[_0xb15c('0x27')](db[_0xb15c('0x36')][_0xb15c('0x25')]);_0x3bf3e2[_0xb15c('0x26')]=_['keys'](_0x58fdb8[_0xb15c('0x26')]);_0x3bf3e2['filters']=_[_0xb15c('0x29')](_0x3bf3e2[_0xb15c('0x2a')],_0x3bf3e2[_0xb15c('0x26')]);_0xe9602c[_0xb15c('0x2b')]=_[_0xb15c('0x29')](_0x3bf3e2[_0xb15c('0x2a')],qs[_0xb15c('0x2c')](_0x58fdb8[_0xb15c('0x26')]['fields']));_0xe9602c[_0xb15c('0x2b')]=_0xe9602c[_0xb15c('0x2b')]['length']?_0xe9602c[_0xb15c('0x2b')]:_0x3bf3e2[_0xb15c('0x2a')];if(!_0x58fdb8[_0xb15c('0x26')]['hasOwnProperty'](_0xb15c('0x3a'))){_0xe9602c['limit']=qs[_0xb15c('0x3b')](_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x3b')]);_0xe9602c[_0xb15c('0x11')]=qs[_0xb15c('0x11')](_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x11')]);}_0xe9602c[_0xb15c('0x3c')]=qs[_0xb15c('0x3d')](_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x3d')]);_0xe9602c[_0xb15c('0x3e')]=qs['filters'](_[_0xb15c('0x3f')](_0x58fdb8[_0xb15c('0x26')],_0x3bf3e2[_0xb15c('0x28')]));_0xe9602c[_0xb15c('0x3e')]['SmsInteractionId']=_0x13cd4a['id'];if(_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x40')]){_0xe9602c['where']=_[_0xb15c('0x2f')](_0xe9602c['where'],{'$or':_[_0xb15c('0x1e')](_0xe9602c[_0xb15c('0x2b')],function(_0x4a8b85){var _0x924611={};_0x924611[_0x4a8b85]={'$like':'%'+_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x40')]+'%'};return _0x924611;})});}if(_0x58fdb8['query'][_0xb15c('0x41')]){var _0x2e4734=_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x41')][_0xb15c('0x42')](',');var _0x4f4dbb={};_0x4f4dbb[_0x2e4734[0x0]]={'$gte':moment(_0x2e4734[0x1])[_0xb15c('0x43')](_0xb15c('0x44'))};_0xe9602c[_0xb15c('0x3e')]=_[_0xb15c('0x2f')](_0xe9602c[_0xb15c('0x3e')],_0x4f4dbb);}_0xe9602c=_[_0xb15c('0x2f')]({},_0xe9602c,_0x58fdb8[_0xb15c('0x30')]);return db[_0xb15c('0x36')]['count']({'where':_0xe9602c[_0xb15c('0x3e')]})[_0xb15c('0x18')](function(_0x25ef58){_0x13ee77[_0xb15c('0x12')]=_0x25ef58;if(_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x2d')]){_0xe9602c[_0xb15c('0x2e')]=[{'all':!![]}];}return db['SmsMessage'][_0xb15c('0x20')](_0xe9602c);})[_0xb15c('0x18')](function(_0x297d13){_0x13ee77['rows']=_0x297d13;return _0x13ee77;});}})[_0xb15c('0x18')](respondWithFilteredResult(_0x4a9452,_0xe9602c))['catch'](handleError(_0x4a9452,null));};exports[_0xb15c('0x45')]=function(_0x1d6856,_0x52ef2b){return db[_0xb15c('0x1f')][_0xb15c('0x31')]({'where':{'id':_0x1d6856[_0xb15c('0x24')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x52ef2b,null))[_0xb15c('0x18')](function(_0x575493){if(_0x575493){return _0x575493[_0xb15c('0x46')](_0x1d6856['body'][_0xb15c('0x37')],_[_0xb15c('0x38')](_0x1d6856[_0xb15c('0x33')],[_0xb15c('0x37'),'id'])||{})[_0xb15c('0x47')](function(){return db[_0xb15c('0x48')][_0xb15c('0x20')]({'attributes':['id',_0xb15c('0x1b'),'color'],'where':{'id':_0x1d6856[_0xb15c('0x33')]['ids']}});})[_0xb15c('0x18')](function(_0x5f5daf){socket['emit']('smsInteractionTags:save',{'id':Number(_0x1d6856[_0xb15c('0x24')]['id']),'tags':_0x5f5daf||[]});return{'id':Number(_0x1d6856[_0xb15c('0x24')]['id']),'tags':_0x5f5daf||[]};});}})[_0xb15c('0x18')](respondWithResult(_0x52ef2b,null))[_0xb15c('0x22')](handleError(_0x52ef2b,null));};exports[_0xb15c('0x49')]=function(_0x5ab37a,_0x15453d){return db[_0xb15c('0x1f')][_0xb15c('0x31')]({'where':{'id':_0x5ab37a['params']['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x15453d,null))[_0xb15c('0x18')](function(_0x4974da){if(_0x4974da){return _0x4974da[_0xb15c('0x49')](_0x5ab37a[_0xb15c('0x26')][_0xb15c('0x37')]);}})['then'](respondWithStatusCode(_0x15453d,null))[_0xb15c('0x22')](handleError(_0x15453d,null));};exports['download']=function(_0x3ef8f5,_0x1d27ef){var _0x4f1944=moment()[_0xb15c('0x4a')]()['toString']();var _0x4e98b1=path['join'](config[_0xb15c('0x4b')],_0xb15c('0x4c'),'files',_0xb15c('0x4d'));var _0x1a4f9a=path[_0xb15c('0x4e')](_0x4e98b1,_0x4f1944);var _0x12f39e=util[_0xb15c('0x43')]('transcript-%d-%s.zip',_0x3ef8f5[_0xb15c('0x24')]['id'],_0x4f1944);var _0x21189f=path['join'](_0x4e98b1,_0x12f39e);var _0x3fa7ba=[];_0x3fa7ba['push']({'model':db[_0xb15c('0x4f')],'as':_0xb15c('0x4f'),'attributes':['id',_0xb15c('0x50')],'raw':!![]});_0x3fa7ba[_0xb15c('0x51')]({'model':db[_0xb15c('0x52')],'as':'Contact','attributes':['id','firstName',_0xb15c('0x53')],'raw':!![]});var _0x3a5970=[{'model':db[_0xb15c('0x36')],'as':_0xb15c('0x54'),'attributes':['id','body',_0xb15c('0x55'),_0xb15c('0x56'),_0xb15c('0x57'),_0xb15c('0x58')],'include':_0x3fa7ba}];_0x3a5970['push']({'model':db['SmsAccount'],'as':'Account','attributes':['id',_0xb15c('0x1b')]});_0x3a5970['push']({'model':db[_0xb15c('0x4f')],'as':_0xb15c('0x59'),'attributes':['id',_0xb15c('0x50')]});return db['SmsInteraction'][_0xb15c('0x31')]({'where':{'id':_0x3ef8f5['params']['id']},'include':_0x3a5970})[_0xb15c('0x18')](handleEntityNotFound(_0x1d27ef,null))[_0xb15c('0x18')](function(_0x3378b){if(_0x3378b){var _0x2668c2=_0x3378b[_0xb15c('0x5a')]({'plain':!![]});fs[_0xb15c('0x5b')](_0x1a4f9a);var _0x15bc48={'channel':'Sms','account':_0x2668c2[_0xb15c('0x5c')]['name'],'agent':_0x2668c2[_0xb15c('0x59')]?_0x2668c2['Owner'][_0xb15c('0x50')]:_0xb15c('0x5d'),'createdAt':moment(_0x2668c2[_0xb15c('0x55')])[_0xb15c('0x43')](_0xb15c('0x44'))[_0xb15c('0x5e')](),'closedAt':_0x2668c2[_0xb15c('0x5f')]?moment(_0x2668c2[_0xb15c('0x60')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xb15c('0x5e')]():'','disposition':_0x2668c2[_0xb15c('0x61')],'messages':_(_0x2668c2[_0xb15c('0x54')])[_0xb15c('0x40')]({'secret':![]})['map'](function(_0x34eced){return{'date':moment(_0x34eced[_0xb15c('0x55')])[_0xb15c('0x43')](_0xb15c('0x44'))['toString'](),'sender':_0x34eced[_0xb15c('0x56')]==='out'?_0x34eced[_0xb15c('0x4f')]?_0x34eced[_0xb15c('0x4f')][_0xb15c('0x50')]:_0xb15c('0x62'):_0x34eced[_0xb15c('0x63')]['firstName']+(_0x34eced[_0xb15c('0x63')]['lastName']?'\x20'+_0x34eced[_0xb15c('0x63')]['lastName']:''),'body':_0x34eced[_0xb15c('0x33')],'direction':_0x34eced['direction']===_0xb15c('0x64')?'A':'C','secret':_0x34eced[_0xb15c('0x57')],'read':_0x34eced[_0xb15c('0x58')]};})[_0xb15c('0x65')]()};return ejs[_0xb15c('0x66')](path['join'](config[_0xb15c('0x4b')],_0xb15c('0x4c'),'views',_0xb15c('0x67')),{'interaction':_0x15bc48})[_0xb15c('0x18')](function(_0x15ec2c){var _0x2507f6=path[_0xb15c('0x4e')](_0x1a4f9a,_0xb15c('0x68')+_0x2668c2['id']+'-'+_0x4f1944+_0xb15c('0x69'));var _0x47a437={'path':_0x2507f6,'channel':_0xb15c('0x6a'),'interactionId':_0x2668c2['id']};return pdf[_0xb15c('0x6b')](_0x15ec2c,_0x47a437);})[_0xb15c('0x18')](function(){return new BPromise(function(_0x13b06c,_0x9b9217){zipdir(_0x1a4f9a,{'saveTo':_0x21189f},function(_0x222003,_0x140525){if(_0x222003)return _0x9b9217(_0x222003);return _0x13b06c(_0x140525);});})[_0xb15c('0x18')](function(){return new BPromise(function(_0x119347,_0x23c129){rimraf(_0x1a4f9a,function(_0x127aa5){if(_0x127aa5)_0x23c129(_0x127aa5);return _0x119347();});});})['then'](function(){return _0x1d27ef[_0xb15c('0x6c')](_0x21189f,_0x12f39e,function(_0x5abc8c){if(_0x5abc8c){console[_0xb15c('0x6d')](_0xb15c('0x6e'),_0x5abc8c);}else{fs[_0xb15c('0x6f')](_0x21189f);}});});});}else{return _0x1d27ef[_0xb15c('0xe')](0xc8);}})[_0xb15c('0x22')](handleError(_0x1d27ef,null));};
\ No newline at end of file
index f80a827..978c521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4991=['then','setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','events','SmsInteraction','SmsMessage','setMaxListeners','save','update','remove','getUsers'];(function(_0x3670c4,_0x5d1d84){var _0x27bb48=function(_0x119276){while(--_0x119276){_0x3670c4['push'](_0x3670c4['shift']());}};_0x27bb48(++_0x5d1d84);}(_0x4991,0xf7));var _0x1499=function(_0x29d322,_0x1daf8a){_0x29d322=_0x29d322-0x0;var _0x2fa103=_0x4991[_0x29d322];return _0x2fa103;};'use strict';var EventEmitter=require(_0x1499('0x0'));var SmsInteraction=require('../../mysqldb')['db'][_0x1499('0x1')];var SmsMessage=require('../../mysqldb')['db'][_0x1499('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x1499('0x3')](0x0);var events={'afterCreate':_0x1499('0x4'),'afterUpdate':_0x1499('0x5'),'afterDestroy':_0x1499('0x6')};function emitEvent(_0x158134){return function(_0x19adff,_0x209616,_0x4b6154){_0x19adff[_0x1499('0x7')]({'attributes':['id'],'raw':!![]})[_0x1499('0x8')](function(_0x1c65c3){_0x19adff[_0x1499('0x9')](_0x1499('0xa'),_0x1c65c3[_0x1499('0xb')](function(_0x3277b3){return{'id':_0x3277b3['id']};}));return SmsMessage[_0x1499('0xc')]({'where':{'SmsInteractionId':_0x19adff['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x16e8ad){_0x19adff[_0x1499('0x9')]('unreadMessages',_0x16e8ad[_0x1499('0xd')]);SmsInteractionEvents[_0x1499('0xe')](_0x158134+':'+_0x19adff['id'],_0x19adff);SmsInteractionEvents['emit'](_0x158134,_0x19adff);_0x4b6154(null);})[_0x1499('0xf')](_0x4b6154(null));};}for(var e in events){if(events[_0x1499('0x10')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0x5c3c=['events','../../mysqldb','SmsInteraction','setMaxListeners','save','update','remove','getUsers','Users','map','findAll','then','setDataValue','unreadMessages','emit','catch','hook','exports'];(function(_0x313bd3,_0xec7f3a){var _0x2125e9=function(_0x5b3f9a){while(--_0x5b3f9a){_0x313bd3['push'](_0x313bd3['shift']());}};_0x2125e9(++_0xec7f3a);}(_0x5c3c,0x132));var _0xc5c3=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x5c3c[_0x49ca18];return _0x145d54;};'use strict';var EventEmitter=require(_0xc5c3('0x0'));var SmsInteraction=require(_0xc5c3('0x1'))['db'][_0xc5c3('0x2')];var SmsMessage=require(_0xc5c3('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xc5c3('0x3')](0x0);var events={'afterCreate':_0xc5c3('0x4'),'afterUpdate':_0xc5c3('0x5'),'afterDestroy':_0xc5c3('0x6')};function emitEvent(_0x2535e0){return function(_0x36525d,_0xe85098,_0x23a6b5){_0x36525d[_0xc5c3('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4b8404){_0x36525d['setDataValue'](_0xc5c3('0x8'),_0x4b8404[_0xc5c3('0x9')](function(_0x593b35){return{'id':_0x593b35['id']};}));return SmsMessage[_0xc5c3('0xa')]({'where':{'SmsInteractionId':_0x36525d['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc5c3('0xb')](function(_0x52f3eb){_0x36525d[_0xc5c3('0xc')](_0xc5c3('0xd'),_0x52f3eb['length']);SmsInteractionEvents[_0xc5c3('0xe')](_0x2535e0+':'+_0x36525d['id'],_0x36525d);SmsInteractionEvents[_0xc5c3('0xe')](_0x2535e0,_0x36525d);_0x23a6b5(null);})[_0xc5c3('0xf')](_0x23a6b5(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0xc5c3('0x10')](e,emitEvent(event));}}module[_0xc5c3('0x11')]=SmsInteractionEvents;
\ No newline at end of file
index 2872f14..ec45180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2035=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2035,0x74));var _0x5203=function(_0x15ac77,_0x928b2d){_0x15ac77=_0x15ac77-0x0;var _0x6550b7=_0x2035[_0x15ac77];return _0x6550b7;};'use strict';var _=require(_0x5203('0x0'));var util=require(_0x5203('0x1'));var logger=require('../../config/logger')(_0x5203('0x2'));var moment=require(_0x5203('0x3'));var BPromise=require(_0x5203('0x4'));var rp=require(_0x5203('0x5'));var fs=require('fs');var path=require(_0x5203('0x6'));var rimraf=require(_0x5203('0x7'));var config=require(_0x5203('0x8'));var attributes=require('./smsInteraction.attributes');module[_0x5203('0x9')]=function(_0x5092f5,_0x564dd4){return _0x5092f5[_0x5203('0xa')](_0x5203('0xb'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x280cd6,_0x138963,_0x49805e){if(_0x280cd6[_0x5203('0xc')](_0x5203('0xd'))){_0x280cd6[_0x5203('0xe')]=moment()[_0x5203('0xf')](_0x5203('0x10'));}_0x49805e(null,_0x280cd6);}}});};
\ No newline at end of file
+var _0x031e=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','changed','closedAt','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x4c1052,_0x385e7a){var _0x3ebcdd=function(_0x1b98cd){while(--_0x1b98cd){_0x4c1052['push'](_0x4c1052['shift']());}};_0x3ebcdd(++_0x385e7a);}(_0x031e,0x1d0));var _0xe031=function(_0x4828b1,_0x5c8cf3){_0x4828b1=_0x4828b1-0x0;var _0x1fec1b=_0x031e[_0x4828b1];return _0x1fec1b;};'use strict';var _=require(_0xe031('0x0'));var util=require('util');var logger=require(_0xe031('0x1'))(_0xe031('0x2'));var moment=require(_0xe031('0x3'));var BPromise=require(_0xe031('0x4'));var rp=require(_0xe031('0x5'));var fs=require('fs');var path=require(_0xe031('0x6'));var rimraf=require('rimraf');var config=require(_0xe031('0x7'));var attributes=require(_0xe031('0x8'));module[_0xe031('0x9')]=function(_0x21f276,_0x574282){return _0x21f276[_0xe031('0xa')](_0xe031('0xb'),attributes,{'tableName':_0xe031('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4203fd,_0x4ae18b,_0x5083e7){if(_0x4203fd[_0xe031('0xd')]('closed')){_0x4203fd[_0xe031('0xe')]=moment()['format'](_0xe031('0xf'));}_0x5083e7(null,_0x4203fd);}}});};
\ No newline at end of file
index d0cc7f3..6929b6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3310=['body','options','where','attributes','limit','stringify','find','addTags','ids','omit','spread','AddTags','lodash','util','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','defaults','localhost','socket.io-emitter','redis','register','request','then','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','UpdateSmsInteraction','SmsInteraction','update'];(function(_0x1c3dcc,_0x197b39){var _0x8c4874=function(_0xabb81a){while(--_0xabb81a){_0x1c3dcc['push'](_0x1c3dcc['shift']());}};_0x8c4874(++_0x197b39);}(_0x3310,0x14c));var _0x0331=function(_0x5c65a4,_0x354c57){_0x5c65a4=_0x5c65a4-0x0;var _0x276021=_0x3310[_0x5c65a4];return _0x276021;};'use strict';var _=require(_0x0331('0x0'));var util=require(_0x0331('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0331('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0331('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0331('0x4'))(_0x0331('0x5'));var config=require('../../config/environment');var jayson=require(_0x0331('0x6'));var client=jayson['client'][_0x0331('0x7')]({'port':0x232a});config['redis']=_[_0x0331('0x8')](config['redis'],{'host':_0x0331('0x9'),'port':0x18eb});var socket=require(_0x0331('0xa'))(new Redis(config[_0x0331('0xb')]));require('./smsInteraction.socket')[_0x0331('0xc')](socket);function respondWithRpcPromise(_0x2e3671,_0x4c6b73,_0x4d5109){return new BPromise(function(_0x30238e,_0x1ac83c){return client[_0x0331('0xd')](_0x2e3671,_0x4d5109)[_0x0331('0xe')](function(_0x58ff1b){logger['info'](_0x0331('0xf'),_0x4c6b73,_0x0331('0x10'));logger[_0x0331('0x11')](_0x0331('0x12'),_0x4c6b73,_0x0331('0x10'),JSON['stringify'](_0x58ff1b));if(_0x58ff1b[_0x0331('0x13')]){if(_0x58ff1b[_0x0331('0x13')][_0x0331('0x14')]===0x1f4){logger[_0x0331('0x13')](_0x0331('0xf'),_0x4c6b73,_0x58ff1b[_0x0331('0x13')]['message']);return _0x1ac83c(_0x58ff1b[_0x0331('0x13')][_0x0331('0x15')]);}logger[_0x0331('0x13')](_0x0331('0xf'),_0x4c6b73,_0x58ff1b[_0x0331('0x13')][_0x0331('0x15')]);return _0x30238e(_0x58ff1b[_0x0331('0x13')][_0x0331('0x15')]);}else{logger[_0x0331('0x16')]('SmsInteraction,\x20%s,\x20%s',_0x4c6b73,_0x0331('0x10'));_0x30238e(_0x58ff1b[_0x0331('0x17')]['message']);}})[_0x0331('0x18')](function(_0x5e3f71){logger[_0x0331('0x13')]('SmsInteraction,\x20%s,\x20%s',_0x4c6b73,_0x5e3f71);_0x1ac83c(_0x5e3f71);});});}exports[_0x0331('0x19')]=function(_0x3a2604){var _0x26a7a8=this;return new Promise(function(_0x1ee7fd,_0x44fe97){return db[_0x0331('0x1a')][_0x0331('0x1b')](_0x3a2604[_0x0331('0x1c')],{'raw':_0x3a2604[_0x0331('0x1d')]?_0x3a2604[_0x0331('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a2604[_0x0331('0x1d')]?_0x3a2604[_0x0331('0x1d')][_0x0331('0x1e')]||null:null,'attributes':_0x3a2604[_0x0331('0x1d')]?_0x3a2604[_0x0331('0x1d')][_0x0331('0x1f')]||null:null,'limit':_0x3a2604[_0x0331('0x1d')]?_0x3a2604[_0x0331('0x1d')][_0x0331('0x20')]||null:null})[_0x0331('0xe')](function(_0x24ee70){logger[_0x0331('0x16')](_0x0331('0x19'),_0x3a2604);logger['debug']('UpdateSmsInteraction',_0x3a2604,JSON[_0x0331('0x21')](_0x24ee70));_0x1ee7fd(_0x24ee70);})['catch'](function(_0x108555){logger['error']('UpdateSmsInteraction',_0x108555['message'],_0x3a2604);_0x44fe97(_0x26a7a8[_0x0331('0x13')](0x1f4,_0x108555[_0x0331('0x15')]));});});};exports['AddTagsToSmsInteraction']=function(_0x10ac64){return new Promise(function(_0x2a5531,_0x3f3ab5){return db[_0x0331('0x1a')][_0x0331('0x22')]({'where':_0x10ac64['options']?_0x10ac64[_0x0331('0x1d')]['where']||null:null})[_0x0331('0xe')](function(_0x2fbadf){if(_0x2fbadf){return _0x2fbadf[_0x0331('0x23')](_0x10ac64[_0x0331('0x1c')][_0x0331('0x24')],_[_0x0331('0x25')](_0x10ac64[_0x0331('0x1c')],[_0x0331('0x24'),'id'])||{});}})[_0x0331('0x26')](function(_0x4862ee){logger[_0x0331('0x16')](_0x0331('0x27'),_0x10ac64);logger[_0x0331('0x11')](_0x0331('0x27'),_0x10ac64,JSON['stringify'](_0x4862ee));_0x2a5531(_0x4862ee);})[_0x0331('0x18')](function(_0x25fc78){logger[_0x0331('0x13')](_0x0331('0x27'),_0x25fc78[_0x0331('0x15')],_0x10ac64);_0x3f3ab5(_this[_0x0331('0x13')](0x1f4,_0x25fc78[_0x0331('0x15')]));});});};
\ No newline at end of file
+var _0xb7de=['result','catch','SmsInteraction','update','options','raw','where','attributes','UpdateSmsInteraction','debug','AddTagsToSmsInteraction','find','addTags','body','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x81dcac,_0x8ff7db){var _0xc7803b=function(_0x499b29){while(--_0x499b29){_0x81dcac['push'](_0x81dcac['shift']());}};_0xc7803b(++_0x8ff7db);}(_0xb7de,0x92));var _0xeb7d=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xb7de[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xeb7d('0x0'));var util=require(_0xeb7d('0x1'));var moment=require('moment');var BPromise=require(_0xeb7d('0x2'));var rs=require(_0xeb7d('0x3'));var fs=require('fs');var Redis=require(_0xeb7d('0x4'));var db=require(_0xeb7d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xeb7d('0x6'))(_0xeb7d('0x7'));var config=require(_0xeb7d('0x8'));var jayson=require(_0xeb7d('0x9'));var client=jayson['client'][_0xeb7d('0xa')]({'port':0x232a});config[_0xeb7d('0xb')]=_[_0xeb7d('0xc')](config[_0xeb7d('0xb')],{'host':_0xeb7d('0xd'),'port':0x18eb});var socket=require(_0xeb7d('0xe'))(new Redis(config[_0xeb7d('0xb')]));require(_0xeb7d('0xf'))[_0xeb7d('0x10')](socket);function respondWithRpcPromise(_0x12b47b,_0x4252e3,_0x193c89){return new BPromise(function(_0x3811c3,_0x35a9b4){return client[_0xeb7d('0x11')](_0x12b47b,_0x193c89)[_0xeb7d('0x12')](function(_0x1d8766){logger[_0xeb7d('0x13')](_0xeb7d('0x14'),_0x4252e3,_0xeb7d('0x15'));logger['debug']('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x4252e3,_0xeb7d('0x15'),JSON[_0xeb7d('0x16')](_0x1d8766));if(_0x1d8766[_0xeb7d('0x17')]){if(_0x1d8766[_0xeb7d('0x17')][_0xeb7d('0x18')]===0x1f4){logger[_0xeb7d('0x17')](_0xeb7d('0x14'),_0x4252e3,_0x1d8766[_0xeb7d('0x17')]['message']);return _0x35a9b4(_0x1d8766[_0xeb7d('0x17')][_0xeb7d('0x19')]);}logger[_0xeb7d('0x17')](_0xeb7d('0x14'),_0x4252e3,_0x1d8766[_0xeb7d('0x17')][_0xeb7d('0x19')]);return _0x3811c3(_0x1d8766[_0xeb7d('0x17')]['message']);}else{logger[_0xeb7d('0x13')](_0xeb7d('0x14'),_0x4252e3,_0xeb7d('0x15'));_0x3811c3(_0x1d8766[_0xeb7d('0x1a')][_0xeb7d('0x19')]);}})[_0xeb7d('0x1b')](function(_0xe602a2){logger[_0xeb7d('0x17')](_0xeb7d('0x14'),_0x4252e3,_0xe602a2);_0x35a9b4(_0xe602a2);});});}exports['UpdateSmsInteraction']=function(_0x32393d){var _0x32938e=this;return new Promise(function(_0x41b708,_0x170126){return db[_0xeb7d('0x1c')][_0xeb7d('0x1d')](_0x32393d['body'],{'raw':_0x32393d['options']?_0x32393d[_0xeb7d('0x1e')][_0xeb7d('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32393d[_0xeb7d('0x1e')]?_0x32393d[_0xeb7d('0x1e')][_0xeb7d('0x20')]||null:null,'attributes':_0x32393d[_0xeb7d('0x1e')]?_0x32393d[_0xeb7d('0x1e')][_0xeb7d('0x21')]||null:null,'limit':_0x32393d[_0xeb7d('0x1e')]?_0x32393d['options']['limit']||null:null})[_0xeb7d('0x12')](function(_0x306bd5){logger[_0xeb7d('0x13')](_0xeb7d('0x22'),_0x32393d);logger[_0xeb7d('0x23')]('UpdateSmsInteraction',_0x32393d,JSON[_0xeb7d('0x16')](_0x306bd5));_0x41b708(_0x306bd5);})[_0xeb7d('0x1b')](function(_0x77288d){logger['error'](_0xeb7d('0x22'),_0x77288d['message'],_0x32393d);_0x170126(_0x32938e[_0xeb7d('0x17')](0x1f4,_0x77288d[_0xeb7d('0x19')]));});});};exports[_0xeb7d('0x24')]=function(_0x1ef92d){return new Promise(function(_0x3b0531,_0x53e608){return db['SmsInteraction'][_0xeb7d('0x25')]({'where':_0x1ef92d['options']?_0x1ef92d[_0xeb7d('0x1e')]['where']||null:null})['then'](function(_0xe55335){if(_0xe55335){return _0xe55335[_0xeb7d('0x26')](_0x1ef92d[_0xeb7d('0x27')][_0xeb7d('0x28')],_['omit'](_0x1ef92d[_0xeb7d('0x27')],[_0xeb7d('0x28'),'id'])||{});}})[_0xeb7d('0x29')](function(_0x27e1ab){logger[_0xeb7d('0x13')](_0xeb7d('0x2a'),_0x1ef92d);logger['debug'](_0xeb7d('0x2a'),_0x1ef92d,JSON['stringify'](_0x27e1ab));_0x3b0531(_0x27e1ab);})[_0xeb7d('0x1b')](function(_0x16650e){logger['error']('AddTags',_0x16650e[_0xeb7d('0x19')],_0x1ef92d);_0x53e608(_this[_0xeb7d('0x17')](0x1f4,_0x16650e[_0xeb7d('0x19')]));});});};
\ No newline at end of file
index 80934aa..9c78316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa893=['./smsInteraction.events','save','remove','update','emit','removeListener','register','length','smsInteraction:'];(function(_0x117f4c,_0x36a9b1){var _0x2b24e9=function(_0x31761b){while(--_0x31761b){_0x117f4c['push'](_0x117f4c['shift']());}};_0x2b24e9(++_0x36a9b1);}(_0xa893,0xe1));var _0x3a89=function(_0x5a9af4,_0x30b0fb){_0x5a9af4=_0x5a9af4-0x0;var _0x140a28=_0xa893[_0x5a9af4];return _0x140a28;};'use strict';var SmsInteractionEvents=require(_0x3a89('0x0'));var events=[_0x3a89('0x1'),_0x3a89('0x2'),_0x3a89('0x3')];function createListener(_0x439c2f,_0x2bfcb1){return function(_0x3c9e2e){_0x2bfcb1[_0x3a89('0x4')](_0x439c2f,_0x3c9e2e);};}function removeListener(_0x3a4452,_0x267710){return function(){SmsInteractionEvents[_0x3a89('0x5')](_0x3a4452,_0x267710);};}exports[_0x3a89('0x6')]=function(_0x31f35e){for(var _0x44bea9=0x0,_0x311475=events[_0x3a89('0x7')];_0x44bea9<_0x311475;_0x44bea9++){var _0x43ee3c=events[_0x44bea9];var _0x26fccf=createListener(_0x3a89('0x8')+_0x43ee3c,_0x31f35e);SmsInteractionEvents['on'](_0x43ee3c,_0x26fccf);}};
\ No newline at end of file
+var _0x1d19=['smsInteraction:','./smsInteraction.events','remove','update','emit','removeListener','register','length'];(function(_0xbb14db,_0x3ee8c6){var _0x36bed7=function(_0x16c478){while(--_0x16c478){_0xbb14db['push'](_0xbb14db['shift']());}};_0x36bed7(++_0x3ee8c6);}(_0x1d19,0xb1));var _0x91d1=function(_0x53a79a,_0x75fb0a){_0x53a79a=_0x53a79a-0x0;var _0x3ab77a=_0x1d19[_0x53a79a];return _0x3ab77a;};'use strict';var SmsInteractionEvents=require(_0x91d1('0x0'));var events=['save',_0x91d1('0x1'),_0x91d1('0x2')];function createListener(_0x33a1c9,_0x118d51){return function(_0x1a8244){_0x118d51[_0x91d1('0x3')](_0x33a1c9,_0x1a8244);};}function removeListener(_0x2d470c,_0x349f3e){return function(){SmsInteractionEvents[_0x91d1('0x4')](_0x2d470c,_0x349f3e);};}exports[_0x91d1('0x5')]=function(_0x37311d){for(var _0xde4117=0x0,_0x29bf64=events[_0x91d1('0x6')];_0xde4117<_0x29bf64;_0xde4117++){var _0x4ea41c=events[_0xde4117];var _0x11422f=createListener(_0x91d1('0x7')+_0x4ea41c,_0x37311d);SmsInteractionEvents['on'](_0x4ea41c,_0x11422f);}};
\ No newline at end of file
index 1549447..f903a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['/:id','post','sms','smsmessage:create','create','put','/:id/accept','accept','delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x169afa,_0x48f99c){var _0x52a8a1=function(_0x42fd39){while(--_0x42fd39){_0x169afa['push'](_0x169afa['shift']());}};_0x52a8a1(++_0x48f99c);}(_0xdc97,0x17a));var _0x7dc9=function(_0x4ba347,_0x170fbe){_0x4ba347=_0x4ba347-0x0;var _0x515cfa=_0xdc97[_0x4ba347];return _0x515cfa;};'use strict';var multer=require(_0x7dc9('0x0'));var util=require(_0x7dc9('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7dc9('0x2'));var router=express[_0x7dc9('0x3')]();var fs_extra=require(_0x7dc9('0x4'));var auth=require(_0x7dc9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7dc9('0x6'));var controller=require(_0x7dc9('0x7'));router[_0x7dc9('0x8')]('/',auth[_0x7dc9('0x9')](),controller[_0x7dc9('0xa')]);router[_0x7dc9('0x8')](_0x7dc9('0xb'),auth[_0x7dc9('0x9')](),controller[_0x7dc9('0xc')]);router[_0x7dc9('0x8')](_0x7dc9('0xd'),auth[_0x7dc9('0x9')](),controller['show']);router[_0x7dc9('0xe')]('/',auth[_0x7dc9('0x9')](),interaction['tracked'](_0x7dc9('0xf'),_0x7dc9('0x10')),controller[_0x7dc9('0x11')]);router['post']('/:id/status',controller['status']);router[_0x7dc9('0x12')](_0x7dc9('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x7dc9('0x12')](_0x7dc9('0x13'),auth['isAuthenticated'](),controller[_0x7dc9('0x14')]);router[_0x7dc9('0x12')]('/:id/reject',auth[_0x7dc9('0x9')](),controller['reject']);router[_0x7dc9('0x15')](_0x7dc9('0xd'),auth[_0x7dc9('0x9')](),controller[_0x7dc9('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x23db=['sms','/:id/status','put','update','/:id/accept','/:id/reject','reject','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x23db,0x141));var _0xb23d=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x23db[_0x31e29a];return _0x32d892;};'use strict';var multer=require(_0xb23d('0x0'));var util=require(_0xb23d('0x1'));var path=require(_0xb23d('0x2'));var timeout=require(_0xb23d('0x3'));var express=require(_0xb23d('0x4'));var router=express[_0xb23d('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb23d('0x6'));var config=require(_0xb23d('0x7'));var controller=require('./smsMessage.controller');router[_0xb23d('0x8')]('/',auth[_0xb23d('0x9')](),controller[_0xb23d('0xa')]);router[_0xb23d('0x8')](_0xb23d('0xb'),auth[_0xb23d('0x9')](),controller[_0xb23d('0xc')]);router[_0xb23d('0x8')](_0xb23d('0xd'),auth['isAuthenticated'](),controller[_0xb23d('0xe')]);router[_0xb23d('0xf')]('/',auth[_0xb23d('0x9')](),interaction[_0xb23d('0x10')](_0xb23d('0x11'),'smsmessage:create'),controller['create']);router['post'](_0xb23d('0x12'),controller['status']);router[_0xb23d('0x13')](_0xb23d('0xd'),auth[_0xb23d('0x9')](),controller[_0xb23d('0x14')]);router[_0xb23d('0x13')](_0xb23d('0x15'),auth[_0xb23d('0x9')](),controller['accept']);router[_0xb23d('0x13')](_0xb23d('0x16'),auth[_0xb23d('0x9')](),controller[_0xb23d('0x17')]);router[_0xb23d('0x18')](_0xb23d('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xb23d('0x19')]=router;
\ No newline at end of file
index 4c16625..d4e2562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f50=['TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE','exports'];(function(_0x5dda6d,_0x3860ee){var _0x379b89=function(_0xf8bd33){while(--_0xf8bd33){_0x5dda6d['push'](_0x5dda6d['shift']());}};_0x379b89(++_0x3860ee);}(_0x0f50,0x6f));var _0x00f5=function(_0x5e7761,_0x411e9a){_0x5e7761=_0x5e7761-0x0;var _0x327be0=_0x0f50[_0x5e7761];return _0x327be0;};'use strict';var Sequelize=require('sequelize');module[_0x00f5('0x0')]={'body':{'type':Sequelize[_0x00f5('0x1')](_0x00f5('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x00f5('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x00f5('0x4')]('in',_0x00f5('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x00f5('0x6')](0xbe)},'phone':{'type':Sequelize[_0x00f5('0x6')]},'readAt':{'type':Sequelize[_0x00f5('0x7')]},'secret':{'type':Sequelize[_0x00f5('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x00f5('0x1')]}};
\ No newline at end of file
+var _0x40fd=['STRING','sequelize','TEXT','BOOLEAN','ENUM','out'];(function(_0x541f70,_0x5781d0){var _0x1794de=function(_0x128a4f){while(--_0x128a4f){_0x541f70['push'](_0x541f70['shift']());}};_0x1794de(++_0x5781d0);}(_0x40fd,0x187));var _0xd40f=function(_0x58fbb0,_0xe497b5){_0x58fbb0=_0x58fbb0-0x0;var _0x1783d2=_0x40fd[_0x58fbb0];return _0x1783d2;};'use strict';var Sequelize=require(_0xd40f('0x0'));module['exports']={'body':{'type':Sequelize[_0xd40f('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xd40f('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xd40f('0x3')]('in',_0xd40f('0x4')),'defaultValue':_0xd40f('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xd40f('0x5')](0xbe)},'phone':{'type':Sequelize[_0xd40f('0x5')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xd40f('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xd40f('0x5')]},'providerResponse':{'type':Sequelize[_0xd40f('0x1')]}};
\ No newline at end of file
index 8dc8355..851f99e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f83=['SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','stack','name','index','SmsMessage','fieldName','type','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','VIRTUAL','merge','options','includeAll','rows','show','params','rawAttributes','include','find','create','body','destroy','describe','sms-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','interaction','user','role','null','acceptMessage','sequelize','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','sms','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','inspect','MessageUUID','indexOf','sent','delivered','Status','plivio','infobip','results','groupName','SmsAccount,\x20%s,\x20%s,\x20%s','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./smsMessage.socket','register','client','http','info','request\x20sent','debug'];(function(_0x2d0733,_0x53fc28){var _0xb67250=function(_0x111705){while(--_0x111705){_0x2d0733['push'](_0x2d0733['shift']());}};_0xb67250(++_0x53fc28);}(_0x6f83,0x72));var _0x36f8=function(_0x2fb721,_0x29d43e){_0x2fb721=_0x2fb721-0x0;var _0x74fa8c=_0x6f83[_0x2fb721];return _0x74fa8c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x36f8('0x0'));var zipdir=require(_0x36f8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x36f8('0x2'));var moment=require(_0x36f8('0x3'));var BPromise=require(_0x36f8('0x4'));var Mustache=require(_0x36f8('0x5'));var util=require(_0x36f8('0x6'));var path=require(_0x36f8('0x7'));var sox=require(_0x36f8('0x8'));var csv=require(_0x36f8('0x9'));var ejs=require(_0x36f8('0xa'));var fs=require('fs');var fs_extra=require(_0x36f8('0xb'));var _=require(_0x36f8('0xc'));var squel=require(_0x36f8('0xd'));var crypto=require(_0x36f8('0xe'));var jsforce=require(_0x36f8('0xf'));var deskjs=require(_0x36f8('0x10'));var toCsv=require(_0x36f8('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x36f8('0x11'));var qs=require(_0x36f8('0x12'));var as=require(_0x36f8('0x13'));var hardwareService=require(_0x36f8('0x14'));var logger=require(_0x36f8('0x15'))(_0x36f8('0x16'));var utils=require(_0x36f8('0x17'));var config=require(_0x36f8('0x18'));var licenseUtil=require(_0x36f8('0x19'));var db=require('../../mysqldb')['db'];config[_0x36f8('0x1a')]=_[_0x36f8('0x1b')](config[_0x36f8('0x1a')],{'host':_0x36f8('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x36f8('0x1a')]));require(_0x36f8('0x1d'))[_0x36f8('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0x36f8('0x1f')][_0x36f8('0x20')]({'port':0x232c});var client9002=jayson[_0x36f8('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x429efc,_0x3e3281,_0x36596e,_0x3525ab){return new BPromise(function(_0x5ec545,_0x5d52b8){var _0x3f9947=_0x3525ab||client;return _0x3f9947['request'](_0x429efc,_0x36596e)['then'](function(_0x3db780){logger[_0x36f8('0x21')]('SmsMessage,\x20%s,\x20%s',_0x3e3281,_0x36f8('0x22'));logger[_0x36f8('0x23')](_0x36f8('0x24'),_0x3e3281,_0x36f8('0x22'),JSON[_0x36f8('0x25')](_0x3db780));if(_0x3db780[_0x36f8('0x26')]){if(_0x3db780[_0x36f8('0x26')][_0x36f8('0x27')]===0x1f4){logger[_0x36f8('0x26')](_0x36f8('0x28'),_0x3e3281,_0x3db780[_0x36f8('0x26')][_0x36f8('0x29')]);return _0x5d52b8(_0x3db780['error'][_0x36f8('0x29')]);}logger[_0x36f8('0x26')](_0x36f8('0x28'),_0x3e3281,_0x3db780['error'][_0x36f8('0x29')]);return _0x5ec545(_0x3db780['error'][_0x36f8('0x29')]);}else{logger[_0x36f8('0x21')]('SmsMessage,\x20%s,\x20%s',_0x3e3281,_0x36f8('0x22'));_0x5ec545(_0x3db780['result'][_0x36f8('0x29')]);}})[_0x36f8('0x2a')](function(_0xb2acc5){logger[_0x36f8('0x26')](_0x36f8('0x28'),_0x3e3281,_0xb2acc5);_0x5d52b8(_0xb2acc5);});});}function respondWithStatusCode(_0xc3381b,_0x59291b){_0x59291b=_0x59291b||0xcc;return function(_0x462fd2){if(_0x462fd2){return _0xc3381b[_0x36f8('0x2b')](_0x59291b);}return _0xc3381b[_0x36f8('0x2c')](_0x59291b)[_0x36f8('0x2d')]();};}function respondWithResult(_0x38b1f1,_0x1a4fed){_0x1a4fed=_0x1a4fed||0xc8;return function(_0xdd5ac5){if(_0xdd5ac5){return _0x38b1f1[_0x36f8('0x2c')](_0x1a4fed)[_0x36f8('0x2e')](_0xdd5ac5);}};}function respondWithFilteredResult(_0x51a2a1,_0x449882){return function(_0x1f67ea){if(_0x1f67ea){var _0x3f01a6=typeof _0x449882[_0x36f8('0x2f')]===_0x36f8('0x30')&&typeof _0x449882[_0x36f8('0x31')]==='undefined';var _0x6d469d=_0x1f67ea[_0x36f8('0x32')];var _0x151803=_0x3f01a6?0x0:_0x449882[_0x36f8('0x2f')];var _0x23ddfb=_0x3f01a6?_0x1f67ea[_0x36f8('0x32')]:_0x449882[_0x36f8('0x2f')]+_0x449882[_0x36f8('0x31')];var _0x3762c8;if(_0x23ddfb>=_0x6d469d){_0x23ddfb=_0x6d469d;_0x3762c8=0xc8;}else{_0x3762c8=0xce;}_0x51a2a1[_0x36f8('0x2c')](_0x3762c8);return _0x51a2a1[_0x36f8('0x33')]('Content-Range',_0x151803+'-'+_0x23ddfb+'/'+_0x6d469d)['json'](_0x1f67ea);}return null;};}function patchUpdates(_0x4a4c14){return function(_0x37bf98){try{jsonpatch[_0x36f8('0x34')](_0x37bf98,_0x4a4c14,!![]);}catch(_0xdfec16){return BPromise['reject'](_0xdfec16);}return _0x37bf98[_0x36f8('0x35')]();};}function saveUpdates(_0x24d19c,_0x605541){return function(_0x37f58f){if(_0x37f58f){return _0x37f58f[_0x36f8('0x36')](_0x24d19c)[_0x36f8('0x37')](function(_0x823b3d){return _0x823b3d;});}return null;};}function removeEntity(_0x7caeb5,_0xa8a16a){return function(_0x4089bf){if(_0x4089bf){return _0x4089bf['destroy']()[_0x36f8('0x37')](function(){_0x7caeb5[_0x36f8('0x2c')](0xcc)[_0x36f8('0x2d')]();});}};}function handleEntityNotFound(_0x1eb28f,_0x369dc9){return function(_0x5b223a){if(!_0x5b223a){_0x1eb28f[_0x36f8('0x2b')](0x194);}return _0x5b223a;};}function handleError(_0x9801ab,_0xc7933b){_0xc7933b=_0xc7933b||0x1f4;return function(_0x58649d){logger[_0x36f8('0x26')](_0x58649d[_0x36f8('0x38')]);if(_0x58649d[_0x36f8('0x39')]){delete _0x58649d[_0x36f8('0x39')];}_0x9801ab['status'](_0xc7933b)['send'](_0x58649d);};}exports[_0x36f8('0x3a')]=function(_0x1e7132,_0x29959e){var _0x21270a={},_0x24e310={},_0x1c5f22={'count':0x0,'rows':[]};var _0x1e231e=_['map'](db[_0x36f8('0x3b')]['rawAttributes'],function(_0x258c27){return{'name':_0x258c27[_0x36f8('0x3c')],'type':_0x258c27[_0x36f8('0x3d')]['key']};});_0x24e310['model']=_[_0x36f8('0x3e')](_0x1e231e,_0x36f8('0x39'));_0x24e310[_0x36f8('0x3f')]=_[_0x36f8('0x40')](_0x1e7132[_0x36f8('0x3f')]);_0x24e310[_0x36f8('0x41')]=_[_0x36f8('0x42')](_0x24e310[_0x36f8('0x43')],_0x24e310[_0x36f8('0x3f')]);_0x21270a[_0x36f8('0x44')]=_['intersection'](_0x24e310[_0x36f8('0x43')],qs[_0x36f8('0x45')](_0x1e7132[_0x36f8('0x3f')][_0x36f8('0x45')]));_0x21270a[_0x36f8('0x44')]=_0x21270a['attributes'][_0x36f8('0x46')]?_0x21270a[_0x36f8('0x44')]:_0x24e310[_0x36f8('0x43')];if(!_0x1e7132['query'][_0x36f8('0x47')](_0x36f8('0x48'))){_0x21270a[_0x36f8('0x31')]=qs[_0x36f8('0x31')](_0x1e7132[_0x36f8('0x3f')]['limit']);_0x21270a[_0x36f8('0x2f')]=qs[_0x36f8('0x2f')](_0x1e7132[_0x36f8('0x3f')][_0x36f8('0x2f')]);}_0x21270a[_0x36f8('0x49')]=qs[_0x36f8('0x4a')](_0x1e7132[_0x36f8('0x3f')][_0x36f8('0x4a')]);_0x21270a['where']=qs[_0x36f8('0x41')](_['pick'](_0x1e7132[_0x36f8('0x3f')],_0x24e310[_0x36f8('0x41')]),_0x1e231e);if(_0x1e7132['query'][_0x36f8('0x4b')]){_0x21270a[_0x36f8('0x4c')]=_['merge'](_0x21270a['where'],{'$or':_[_0x36f8('0x3e')](_0x1e231e,function(_0x2885c8){if(_0x2885c8[_0x36f8('0x3d')]!==_0x36f8('0x4d')){var _0x31b7ee={};_0x31b7ee[_0x2885c8['name']]={'$like':'%'+_0x1e7132['query'][_0x36f8('0x4b')]+'%'};return _0x31b7ee;}})});}_0x21270a=_[_0x36f8('0x4e')]({},_0x21270a,_0x1e7132[_0x36f8('0x4f')]);var _0xd492f1={'where':_0x21270a[_0x36f8('0x4c')]};return db['SmsMessage']['count'](_0xd492f1)[_0x36f8('0x37')](function(_0x1f173d){_0x1c5f22[_0x36f8('0x32')]=_0x1f173d;if(_0x1e7132[_0x36f8('0x3f')][_0x36f8('0x50')]){_0x21270a['include']=[{'all':!![]}];}return db[_0x36f8('0x3b')]['findAll'](_0x21270a);})[_0x36f8('0x37')](function(_0x1c546d){_0x1c5f22[_0x36f8('0x51')]=_0x1c546d;return _0x1c5f22;})['then'](respondWithFilteredResult(_0x29959e,_0x21270a))[_0x36f8('0x2a')](handleError(_0x29959e,null));};exports[_0x36f8('0x52')]=function(_0xee9639,_0x29f4e3){var _0x3dba01={'raw':!![],'where':{'id':_0xee9639[_0x36f8('0x53')]['id']}},_0x5942c1={};_0x5942c1['model']=_['keys'](db['SmsMessage'][_0x36f8('0x54')]);_0x5942c1[_0x36f8('0x3f')]=_[_0x36f8('0x40')](_0xee9639[_0x36f8('0x3f')]);_0x5942c1[_0x36f8('0x41')]=_['intersection'](_0x5942c1['model'],_0x5942c1[_0x36f8('0x3f')]);_0x3dba01[_0x36f8('0x44')]=_[_0x36f8('0x42')](_0x5942c1[_0x36f8('0x43')],qs['fields'](_0xee9639['query'][_0x36f8('0x45')]));_0x3dba01['attributes']=_0x3dba01[_0x36f8('0x44')][_0x36f8('0x46')]?_0x3dba01['attributes']:_0x5942c1[_0x36f8('0x43')];if(_0xee9639['query']['includeAll']){_0x3dba01[_0x36f8('0x55')]=[{'all':!![]}];}_0x3dba01=_['merge']({},_0x3dba01,_0xee9639[_0x36f8('0x4f')]);return db['SmsMessage'][_0x36f8('0x56')](_0x3dba01)[_0x36f8('0x37')](handleEntityNotFound(_0x29f4e3,null))[_0x36f8('0x37')](respondWithResult(_0x29f4e3,null))['catch'](handleError(_0x29f4e3,null));};exports[_0x36f8('0x57')]=function(_0x194578,_0x240286){return db['SmsMessage'][_0x36f8('0x57')](_0x194578['body'],{})[_0x36f8('0x37')](respondWithResult(_0x240286,0xc9))[_0x36f8('0x2a')](handleError(_0x240286,null));};exports[_0x36f8('0x36')]=function(_0x3e275a,_0x216aff){if(_0x3e275a[_0x36f8('0x58')]['id']){delete _0x3e275a[_0x36f8('0x58')]['id'];}return db[_0x36f8('0x3b')][_0x36f8('0x56')]({'where':{'id':_0x3e275a[_0x36f8('0x53')]['id']}})[_0x36f8('0x37')](handleEntityNotFound(_0x216aff,null))[_0x36f8('0x37')](saveUpdates(_0x3e275a[_0x36f8('0x58')],null))[_0x36f8('0x37')](respondWithResult(_0x216aff,null))[_0x36f8('0x2a')](handleError(_0x216aff,null));};exports[_0x36f8('0x59')]=function(_0x4b158a,_0x351d22){return db['SmsMessage'][_0x36f8('0x56')]({'where':{'id':_0x4b158a[_0x36f8('0x53')]['id']}})[_0x36f8('0x37')](handleEntityNotFound(_0x351d22,null))[_0x36f8('0x37')](removeEntity(_0x351d22,null))[_0x36f8('0x2a')](handleError(_0x351d22,null));};exports[_0x36f8('0x5a')]=function(_0x65b81c,_0x35bf06){return db[_0x36f8('0x3b')][_0x36f8('0x5a')]()['then'](respondWithResult(_0x35bf06,null))[_0x36f8('0x2a')](handleError(_0x35bf06,null));};var interaction_log=require(_0x36f8('0x15'))(_0x36f8('0x5b'));exports[_0x36f8('0x5c')]=function(_0x433925,_0x122ef3,_0xe89a0){var _0x16cc7a={'agent':{},'channel':'sms'};if(_0x433925[_0x36f8('0x58')]['id']){delete _0x433925[_0x36f8('0x58')]['id'];}_0x433925['body'][_0x36f8('0x5d')]=!![];_0x433925[_0x36f8('0x58')][_0x36f8('0x5e')]=moment()[_0x36f8('0x5f')](_0x36f8('0x60'));_0x433925[_0x36f8('0x58')][_0x36f8('0x61')]=_0x433925[_0x36f8('0x58')][_0x36f8('0x61')]||_0x433925['user']['id'];_0x16cc7a[_0x36f8('0x62')]['id']=_0x433925['body'][_0x36f8('0x61')];return db[_0x36f8('0x3b')][_0x36f8('0x56')]({'where':{'id':_0x433925[_0x36f8('0x53')]['id'],'UserId':null}})[_0x36f8('0x37')](handleEntityNotFound(_0x122ef3,null))['then'](saveUpdates(_0x433925['body'],null))['then'](function(_0x310ddf){if(_0x310ddf){_0x16cc7a['message']=_0x310ddf[_0x36f8('0x63')]({'plain':!![]});return db[_0x36f8('0x64')]['find']({'where':{'id':_0x310ddf[_0x36f8('0x65')]}});}return null;})[_0x36f8('0x37')](handleEntityNotFound(_0x122ef3,null))[_0x36f8('0x37')](function(_0x59f43b){if(_0x59f43b){return _0x59f43b[_0x36f8('0x36')]({'UserId':_0x433925[_0x36f8('0x58')][_0x36f8('0x61')],'read1stAt':_[_0x36f8('0x66')](_0x59f43b[_0x36f8('0x67')])?moment()[_0x36f8('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x36f8('0x37')](function(_0xf03c48){if(_0xf03c48){_0x16cc7a[_0x36f8('0x68')]=_0xf03c48[_0x36f8('0x63')]({'plain':!![]});interaction_log[_0x36f8('0x21')]('[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x433925[_0x36f8('0x69')]['id'],_0x433925[_0x36f8('0x69')][_0x36f8('0x39')],_0x433925['user'][_0x36f8('0x6a')],_0x16cc7a['interaction']['id'],_0x433925[_0x36f8('0x58')]?JSON['stringify'](_0x433925[_0x36f8('0x58')]):_0x36f8('0x6b'));return respondWithRpcPromise('AcceptMessage',_0x36f8('0x6c'),_0x16cc7a);}return null;})[_0x36f8('0x37')](function(_0x5f2319){var _0x1af693='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5f2319[_0x36f8('0x29')]['ContactId'];return db[_0x36f8('0x6d')]['query'](_0x1af693,{'type':db['Sequelize']['QueryTypes'][_0x36f8('0x6e')],'raw':!![]})[_0x36f8('0x37')](function(_0x1d616c){return _0x1d616c;});})[_0x36f8('0x37')](function(_0x4d1920){if(_0x4d1920){_0x16cc7a[_0x36f8('0x29')][_0x36f8('0x6f')]=_0x4d1920[0x0];if(!_0x433925[_0x36f8('0x58')][_0x36f8('0x61')])return;return db[_0x36f8('0x70')][_0x36f8('0x56')]({'where':{'id':_0x433925[_0x36f8('0x58')][_0x36f8('0x61')],'role':_0x36f8('0x62')},'attributes':['id','name',_0x36f8('0x71'),_0x36f8('0x72'),_0x36f8('0x73')],'raw':!![]});}return null;})[_0x36f8('0x37')](function(_0x5e70c4){if(!_0x5e70c4)return null;_0x16cc7a['message']['agent']=_0x5e70c4;return _0x16cc7a;})[_0x36f8('0x37')](function(_0x18b79d){if(_0x18b79d){if(_0x433925['body'][_0x36f8('0x74')]){_0x16cc7a[_0x36f8('0x29')][_0x36f8('0x75')]=util['format'](_0x36f8('0x76'),_0x433925[_0x36f8('0x69')]['name']);_0x16cc7a[_0x36f8('0x29')][_0x36f8('0x77')]=_0x16cc7a[_0x36f8('0x77')];_0x16cc7a[_0x36f8('0x29')][_0x36f8('0x78')]=_0x16cc7a[_0x36f8('0x77')];_0x16cc7a[_0x36f8('0x29')][_0x36f8('0x79')]=_0x36f8('0x5c');return respondWithRpcPromise(_0x36f8('0x7a'),_0x36f8('0x7a'),{'event':_0x36f8('0x7b'),'message':_0x16cc7a['message']},client9002)[_0x36f8('0x37')](function(){return _0x16cc7a;});}return _0x16cc7a;}return null;})[_0x36f8('0x37')](respondWithResult(_0x122ef3,null))[_0x36f8('0x2a')](handleError(_0x122ef3,null));};var interaction_log=require(_0x36f8('0x15'))(_0x36f8('0x5b'));exports[_0x36f8('0x7c')]=function(_0x56d85e,_0x260d47,_0x238188){var _0x471e01={'agent':{},'channel':_0x36f8('0x7d')};if(_0x56d85e[_0x36f8('0x58')]['id']){delete _0x56d85e[_0x36f8('0x58')]['id'];}_0x56d85e[_0x36f8('0x58')]['UserId']=_0x56d85e['body'][_0x36f8('0x61')]||_0x56d85e[_0x36f8('0x69')]['id'];_0x471e01['agent']['id']=_0x56d85e[_0x36f8('0x58')][_0x36f8('0x61')];return db[_0x36f8('0x3b')][_0x36f8('0x56')]({'where':{'id':_0x56d85e['params']['id'],'UserId':null}})[_0x36f8('0x37')](handleEntityNotFound(_0x260d47,null))['then'](function(_0x1d4239){if(_0x1d4239){_0x471e01[_0x36f8('0x29')]=_0x1d4239[_0x36f8('0x63')]({'plain':!![]});return db[_0x36f8('0x64')][_0x36f8('0x56')]({'where':{'id':_0x1d4239[_0x36f8('0x65')]}});}return null;})[_0x36f8('0x37')](handleEntityNotFound(_0x260d47,null))['then'](function(_0x1d0485){if(_0x1d0485){_0x471e01[_0x36f8('0x68')]=_0x1d0485[_0x36f8('0x63')]({'plain':!![]});interaction_log[_0x36f8('0x21')](_0x36f8('0x7e'),_0x56d85e[_0x36f8('0x69')]['id'],_0x56d85e[_0x36f8('0x69')]['name'],_0x56d85e['user'][_0x36f8('0x6a')],_0x471e01[_0x36f8('0x68')]['id'],_0x56d85e[_0x36f8('0x58')]?JSON[_0x36f8('0x25')](_0x56d85e['body']):_0x36f8('0x6b'));return respondWithRpcPromise(_0x36f8('0x7f'),_0x36f8('0x80'),_0x471e01);}return null;})[_0x36f8('0x37')](function(_0x224912){var _0x49d22c=_0x36f8('0x81')+_0x224912[_0x36f8('0x29')][_0x36f8('0x82')];return db[_0x36f8('0x6d')][_0x36f8('0x3f')](_0x49d22c,{'type':db[_0x36f8('0x83')]['QueryTypes']['SELECT'],'raw':!![]})[_0x36f8('0x37')](function(_0x5211af){return _0x5211af;});})[_0x36f8('0x37')](function(_0xa317f8){if(_0xa317f8){_0x471e01[_0x36f8('0x29')]['contact']=_0xa317f8[0x0];if(!_0x56d85e['body'][_0x36f8('0x61')])return;return db[_0x36f8('0x70')]['find']({'where':{'id':_0x56d85e[_0x36f8('0x58')][_0x36f8('0x61')],'role':_0x36f8('0x62')},'attributes':['id',_0x36f8('0x39'),'fullname',_0x36f8('0x72'),_0x36f8('0x73')],'raw':!![]});}return null;})[_0x36f8('0x37')](function(_0x1bd045){if(!_0x1bd045)return null;_0x471e01['message']['agent']=_0x1bd045;return _0x471e01;})[_0x36f8('0x37')](function(_0x26bf10){if(_0x26bf10){_0x26bf10[_0x36f8('0x29')][_0x36f8('0x75')]=util[_0x36f8('0x5f')](_0x36f8('0x76'),_0x56d85e['user']['name']);_0x26bf10[_0x36f8('0x29')][_0x36f8('0x77')]=_0x471e01[_0x36f8('0x77')];_0x26bf10[_0x36f8('0x29')]['motionChannel']=_0x471e01[_0x36f8('0x77')];_0x26bf10['message']['event']=_0x36f8('0x7c');respondWithRpcPromise(_0x36f8('0x7a'),_0x36f8('0x7a'),{'event':_0x36f8('0x84'),'message':_0x26bf10['message']},client9002);return _0x471e01;}return null;})[_0x36f8('0x37')](respondWithResult(_0x260d47,null))[_0x36f8('0x2a')](handleError(_0x260d47,null));};exports[_0x36f8('0x2c')]=function(_0xbae81c,_0x430afe,_0x11b8ed){if(_0xbae81c[_0x36f8('0x58')]['id']){delete _0xbae81c[_0x36f8('0x58')]['id'];}var _0x4713b2;return db[_0x36f8('0x3b')][_0x36f8('0x56')]({'where':{'id':_0xbae81c[_0x36f8('0x53')]['id']}})[_0x36f8('0x37')](handleEntityNotFound(_0x430afe,null))[_0x36f8('0x37')](function(_0x3dad48){if(_0x3dad48){_0x4713b2=_0x3dad48;return db[_0x36f8('0x85')]['find']({'where':{'id':_0x3dad48[_0x36f8('0x86')]}});}})[_0x36f8('0x37')](handleEntityNotFound(_0x430afe,null))[_0x36f8('0x37')](function(_0x212e60){if(_0x212e60){logger['debug']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x36f8('0x2c'),_0x36f8('0x87'),_0x212e60[_0x36f8('0x3d')],util['inspect'](_0xbae81c[_0x36f8('0x58')],{'showHidden':![],'depth':null}));switch(_0x212e60[_0x36f8('0x3d')]){case _0x36f8('0x88'):if(_0xbae81c['body']['MessageSid']&&_0xbae81c[_0x36f8('0x58')][_0x36f8('0x89')]===_0x4713b2[_0x36f8('0x8a')]){return _0x4713b2[_0x36f8('0x36')]({'read':!![]});}else{logger[_0x36f8('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x36f8('0x2c'),'twilio',util[_0x36f8('0x8b')](_0xbae81c[_0x36f8('0x58')],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0xbae81c[_0x36f8('0x58')][_0x36f8('0x8c')]&&_0xbae81c['body'][_0x36f8('0x8c')]===_0x4713b2['messageId']&&_[_0x36f8('0x8d')]([_0x36f8('0x8e'),_0x36f8('0x8f')],_0xbae81c[_0x36f8('0x58')][_0x36f8('0x90')])>=0x0){return _0x4713b2['update']({'read':!![]});}else{logger[_0x36f8('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x36f8('0x2c'),_0x36f8('0x91'),util[_0x36f8('0x8b')](_0xbae81c['body'],{'showHidden':![],'depth':null}));}break;case _0x36f8('0x92'):var _0xfe721=_0xbae81c['body'][_0x36f8('0x93')][0x0];if(_0xfe721[_0x36f8('0x2c')][_0x36f8('0x94')]==='DELIVERED'){return _0x4713b2['update']({'read':!![]});}else{logger['error'](_0x36f8('0x95'),_0x36f8('0x2c'),_0x36f8('0x92'),util[_0x36f8('0x8b')](_0xbae81c[_0x36f8('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x4713b2;}})[_0x36f8('0x37')](respondWithResult(_0x430afe,null))[_0x36f8('0x2a')](handleError(_0x430afe,null));};
\ No newline at end of file
+var _0x0e56=['set','Content-Range','apply','reject','save','update','stack','name','send','index','map','SmsMessage','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','options','findAll','rows','show','params','includeAll','include','merge','find','body','describe','sms-interactions','sms','read','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteraction','SmsInteractionId','isNil','format','info','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','contact','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','Sequelize','User','email','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','messageId','sent','Status','plivio','infobip','groupName','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsMessage.socket','register','client','http','request','then','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0x0e56,0xf5));var _0x60e5=function(_0x1a595a,_0x263824){_0x1a595a=_0x1a595a-0x0;var _0x33f008=_0x0e56[_0x1a595a];return _0x33f008;};'use strict';var emlformat=require(_0x60e5('0x0'));var rimraf=require(_0x60e5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x60e5('0x2'));var rp=require(_0x60e5('0x3'));var moment=require('moment');var BPromise=require(_0x60e5('0x4'));var Mustache=require(_0x60e5('0x5'));var util=require(_0x60e5('0x6'));var path=require(_0x60e5('0x7'));var sox=require(_0x60e5('0x8'));var csv=require(_0x60e5('0x9'));var ejs=require(_0x60e5('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x60e5('0xb'));var squel=require(_0x60e5('0xc'));var crypto=require(_0x60e5('0xd'));var jsforce=require(_0x60e5('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x60e5('0x9'));var querystring=require(_0x60e5('0xf'));var Papa=require(_0x60e5('0x10'));var Redis=require(_0x60e5('0x11'));var authService=require(_0x60e5('0x12'));var qs=require(_0x60e5('0x13'));var as=require(_0x60e5('0x14'));var hardwareService=require(_0x60e5('0x15'));var logger=require(_0x60e5('0x16'))(_0x60e5('0x17'));var utils=require(_0x60e5('0x18'));var config=require(_0x60e5('0x19'));var licenseUtil=require(_0x60e5('0x1a'));var db=require(_0x60e5('0x1b'))['db'];config[_0x60e5('0x1c')]=_[_0x60e5('0x1d')](config['redis'],{'host':_0x60e5('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x60e5('0x1f'))[_0x60e5('0x20')](socket);var jayson=require('jayson/promise');var client=jayson[_0x60e5('0x21')][_0x60e5('0x22')]({'port':0x232c});var client9002=jayson[_0x60e5('0x21')][_0x60e5('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x546cfc,_0x23a88e,_0x622ead,_0x3fbc43){return new BPromise(function(_0x1ed08d,_0x39a5a0){var _0x1df84a=_0x3fbc43||client;return _0x1df84a[_0x60e5('0x23')](_0x546cfc,_0x622ead)[_0x60e5('0x24')](function(_0x3060b6){logger['info']('SmsMessage,\x20%s,\x20%s',_0x23a88e,'request\x20sent');logger['debug'](_0x60e5('0x25'),_0x23a88e,_0x60e5('0x26'),JSON[_0x60e5('0x27')](_0x3060b6));if(_0x3060b6['error']){if(_0x3060b6[_0x60e5('0x28')][_0x60e5('0x29')]===0x1f4){logger[_0x60e5('0x28')](_0x60e5('0x2a'),_0x23a88e,_0x3060b6[_0x60e5('0x28')][_0x60e5('0x2b')]);return _0x39a5a0(_0x3060b6[_0x60e5('0x28')][_0x60e5('0x2b')]);}logger[_0x60e5('0x28')](_0x60e5('0x2a'),_0x23a88e,_0x3060b6[_0x60e5('0x28')]['message']);return _0x1ed08d(_0x3060b6['error'][_0x60e5('0x2b')]);}else{logger['info']('SmsMessage,\x20%s,\x20%s',_0x23a88e,_0x60e5('0x26'));_0x1ed08d(_0x3060b6['result'][_0x60e5('0x2b')]);}})[_0x60e5('0x2c')](function(_0x476d0a){logger[_0x60e5('0x28')](_0x60e5('0x2a'),_0x23a88e,_0x476d0a);_0x39a5a0(_0x476d0a);});});}function respondWithStatusCode(_0x59e702,_0x1b23bc){_0x1b23bc=_0x1b23bc||0xcc;return function(_0x4fdcda){if(_0x4fdcda){return _0x59e702[_0x60e5('0x2d')](_0x1b23bc);}return _0x59e702[_0x60e5('0x2e')](_0x1b23bc)[_0x60e5('0x2f')]();};}function respondWithResult(_0x59d16f,_0xefae42){_0xefae42=_0xefae42||0xc8;return function(_0x1f6eb4){if(_0x1f6eb4){return _0x59d16f['status'](_0xefae42)[_0x60e5('0x30')](_0x1f6eb4);}};}function respondWithFilteredResult(_0xd10ec1,_0x46ebed){return function(_0x49ba26){if(_0x49ba26){var _0xb1d302=typeof _0x46ebed[_0x60e5('0x31')]===_0x60e5('0x32')&&typeof _0x46ebed[_0x60e5('0x33')]===_0x60e5('0x32');var _0x40ce94=_0x49ba26[_0x60e5('0x34')];var _0x22116d=_0xb1d302?0x0:_0x46ebed[_0x60e5('0x31')];var _0x3bc937=_0xb1d302?_0x49ba26[_0x60e5('0x34')]:_0x46ebed[_0x60e5('0x31')]+_0x46ebed['limit'];var _0x22be5e;if(_0x3bc937>=_0x40ce94){_0x3bc937=_0x40ce94;_0x22be5e=0xc8;}else{_0x22be5e=0xce;}_0xd10ec1[_0x60e5('0x2e')](_0x22be5e);return _0xd10ec1[_0x60e5('0x35')](_0x60e5('0x36'),_0x22116d+'-'+_0x3bc937+'/'+_0x40ce94)['json'](_0x49ba26);}return null;};}function patchUpdates(_0x4842a4){return function(_0x4aa55f){try{jsonpatch[_0x60e5('0x37')](_0x4aa55f,_0x4842a4,!![]);}catch(_0x2e2961){return BPromise[_0x60e5('0x38')](_0x2e2961);}return _0x4aa55f[_0x60e5('0x39')]();};}function saveUpdates(_0x13fbb8,_0x4ddabe){return function(_0x1f0c0b){if(_0x1f0c0b){return _0x1f0c0b[_0x60e5('0x3a')](_0x13fbb8)[_0x60e5('0x24')](function(_0x1b0988){return _0x1b0988;});}return null;};}function removeEntity(_0x5d8fce,_0x53b686){return function(_0x43c8ed){if(_0x43c8ed){return _0x43c8ed['destroy']()[_0x60e5('0x24')](function(){_0x5d8fce[_0x60e5('0x2e')](0xcc)[_0x60e5('0x2f')]();});}};}function handleEntityNotFound(_0x1d0e5f,_0x5ce922){return function(_0x308ec1){if(!_0x308ec1){_0x1d0e5f[_0x60e5('0x2d')](0x194);}return _0x308ec1;};}function handleError(_0x1bbb7d,_0x19c964){_0x19c964=_0x19c964||0x1f4;return function(_0x495a19){logger[_0x60e5('0x28')](_0x495a19[_0x60e5('0x3b')]);if(_0x495a19[_0x60e5('0x3c')]){delete _0x495a19['name'];}_0x1bbb7d[_0x60e5('0x2e')](_0x19c964)[_0x60e5('0x3d')](_0x495a19);};}exports[_0x60e5('0x3e')]=function(_0x2f3bfd,_0x29ee1b){var _0x1f8fcd={},_0x4fa4c9={},_0x493398={'count':0x0,'rows':[]};var _0x437351=_[_0x60e5('0x3f')](db[_0x60e5('0x40')]['rawAttributes'],function(_0x4c5af7){return{'name':_0x4c5af7[_0x60e5('0x41')],'type':_0x4c5af7[_0x60e5('0x42')][_0x60e5('0x43')]};});_0x4fa4c9[_0x60e5('0x44')]=_['map'](_0x437351,_0x60e5('0x3c'));_0x4fa4c9[_0x60e5('0x45')]=_[_0x60e5('0x46')](_0x2f3bfd[_0x60e5('0x45')]);_0x4fa4c9[_0x60e5('0x47')]=_[_0x60e5('0x48')](_0x4fa4c9[_0x60e5('0x44')],_0x4fa4c9['query']);_0x1f8fcd[_0x60e5('0x49')]=_[_0x60e5('0x48')](_0x4fa4c9[_0x60e5('0x44')],qs[_0x60e5('0x4a')](_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x4a')]));_0x1f8fcd[_0x60e5('0x49')]=_0x1f8fcd[_0x60e5('0x49')][_0x60e5('0x4b')]?_0x1f8fcd[_0x60e5('0x49')]:_0x4fa4c9['model'];if(!_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x4c')]('nolimit')){_0x1f8fcd[_0x60e5('0x33')]=qs[_0x60e5('0x33')](_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x33')]);_0x1f8fcd[_0x60e5('0x31')]=qs[_0x60e5('0x31')](_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x31')]);}_0x1f8fcd[_0x60e5('0x4d')]=qs['sort'](_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x4e')]);_0x1f8fcd[_0x60e5('0x4f')]=qs['filters'](_['pick'](_0x2f3bfd[_0x60e5('0x45')],_0x4fa4c9[_0x60e5('0x47')]),_0x437351);if(_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x50')]){_0x1f8fcd[_0x60e5('0x4f')]=_['merge'](_0x1f8fcd[_0x60e5('0x4f')],{'$or':_[_0x60e5('0x3f')](_0x437351,function(_0x58eaf9){if(_0x58eaf9['type']!==_0x60e5('0x51')){var _0x33d078={};_0x33d078[_0x58eaf9[_0x60e5('0x3c')]]={'$like':'%'+_0x2f3bfd[_0x60e5('0x45')]['filter']+'%'};return _0x33d078;}})});}_0x1f8fcd=_['merge']({},_0x1f8fcd,_0x2f3bfd[_0x60e5('0x52')]);var _0x3cde7f={'where':_0x1f8fcd[_0x60e5('0x4f')]};return db['SmsMessage'][_0x60e5('0x34')](_0x3cde7f)[_0x60e5('0x24')](function(_0x6df962){_0x493398[_0x60e5('0x34')]=_0x6df962;if(_0x2f3bfd[_0x60e5('0x45')]['includeAll']){_0x1f8fcd['include']=[{'all':!![]}];}return db['SmsMessage'][_0x60e5('0x53')](_0x1f8fcd);})[_0x60e5('0x24')](function(_0x191023){_0x493398[_0x60e5('0x54')]=_0x191023;return _0x493398;})[_0x60e5('0x24')](respondWithFilteredResult(_0x29ee1b,_0x1f8fcd))[_0x60e5('0x2c')](handleError(_0x29ee1b,null));};exports[_0x60e5('0x55')]=function(_0x407af0,_0x501e57){var _0x475dc9={'raw':!![],'where':{'id':_0x407af0[_0x60e5('0x56')]['id']}},_0x4265c2={};_0x4265c2[_0x60e5('0x44')]=_[_0x60e5('0x46')](db[_0x60e5('0x40')]['rawAttributes']);_0x4265c2[_0x60e5('0x45')]=_[_0x60e5('0x46')](_0x407af0[_0x60e5('0x45')]);_0x4265c2[_0x60e5('0x47')]=_['intersection'](_0x4265c2[_0x60e5('0x44')],_0x4265c2[_0x60e5('0x45')]);_0x475dc9[_0x60e5('0x49')]=_[_0x60e5('0x48')](_0x4265c2[_0x60e5('0x44')],qs[_0x60e5('0x4a')](_0x407af0[_0x60e5('0x45')][_0x60e5('0x4a')]));_0x475dc9[_0x60e5('0x49')]=_0x475dc9['attributes'][_0x60e5('0x4b')]?_0x475dc9[_0x60e5('0x49')]:_0x4265c2['model'];if(_0x407af0[_0x60e5('0x45')][_0x60e5('0x57')]){_0x475dc9[_0x60e5('0x58')]=[{'all':!![]}];}_0x475dc9=_[_0x60e5('0x59')]({},_0x475dc9,_0x407af0[_0x60e5('0x52')]);return db[_0x60e5('0x40')][_0x60e5('0x5a')](_0x475dc9)[_0x60e5('0x24')](handleEntityNotFound(_0x501e57,null))[_0x60e5('0x24')](respondWithResult(_0x501e57,null))[_0x60e5('0x2c')](handleError(_0x501e57,null));};exports['create']=function(_0x36a7c2,_0x3dcb1d){return db[_0x60e5('0x40')]['create'](_0x36a7c2[_0x60e5('0x5b')],{})['then'](respondWithResult(_0x3dcb1d,0xc9))['catch'](handleError(_0x3dcb1d,null));};exports['update']=function(_0x4aaa2e,_0x4d8f1a){if(_0x4aaa2e[_0x60e5('0x5b')]['id']){delete _0x4aaa2e[_0x60e5('0x5b')]['id'];}return db['SmsMessage']['find']({'where':{'id':_0x4aaa2e[_0x60e5('0x56')]['id']}})['then'](handleEntityNotFound(_0x4d8f1a,null))['then'](saveUpdates(_0x4aaa2e[_0x60e5('0x5b')],null))[_0x60e5('0x24')](respondWithResult(_0x4d8f1a,null))[_0x60e5('0x2c')](handleError(_0x4d8f1a,null));};exports['destroy']=function(_0xd9ee89,_0x20b114){return db[_0x60e5('0x40')][_0x60e5('0x5a')]({'where':{'id':_0xd9ee89[_0x60e5('0x56')]['id']}})[_0x60e5('0x24')](handleEntityNotFound(_0x20b114,null))['then'](removeEntity(_0x20b114,null))[_0x60e5('0x2c')](handleError(_0x20b114,null));};exports[_0x60e5('0x5c')]=function(_0x587cf3,_0x10def1){return db[_0x60e5('0x40')][_0x60e5('0x5c')]()[_0x60e5('0x24')](respondWithResult(_0x10def1,null))['catch'](handleError(_0x10def1,null));};var interaction_log=require(_0x60e5('0x16'))(_0x60e5('0x5d'));exports['accept']=function(_0x212d9e,_0x436863,_0x2bf061){var _0xe79613={'agent':{},'channel':_0x60e5('0x5e')};if(_0x212d9e[_0x60e5('0x5b')]['id']){delete _0x212d9e[_0x60e5('0x5b')]['id'];}_0x212d9e[_0x60e5('0x5b')][_0x60e5('0x5f')]=!![];_0x212d9e['body']['readAt']=moment()['format'](_0x60e5('0x60'));_0x212d9e['body'][_0x60e5('0x61')]=_0x212d9e[_0x60e5('0x5b')]['UserId']||_0x212d9e[_0x60e5('0x62')]['id'];_0xe79613[_0x60e5('0x63')]['id']=_0x212d9e[_0x60e5('0x5b')][_0x60e5('0x61')];return db[_0x60e5('0x40')][_0x60e5('0x5a')]({'where':{'id':_0x212d9e['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x436863,null))[_0x60e5('0x24')](saveUpdates(_0x212d9e[_0x60e5('0x5b')],null))[_0x60e5('0x24')](function(_0x36e221){if(_0x36e221){_0xe79613[_0x60e5('0x2b')]=_0x36e221[_0x60e5('0x64')]({'plain':!![]});return db[_0x60e5('0x65')][_0x60e5('0x5a')]({'where':{'id':_0x36e221[_0x60e5('0x66')]}});}return null;})[_0x60e5('0x24')](handleEntityNotFound(_0x436863,null))['then'](function(_0x621d45){if(_0x621d45){return _0x621d45[_0x60e5('0x3a')]({'UserId':_0x212d9e[_0x60e5('0x5b')][_0x60e5('0x61')],'read1stAt':_[_0x60e5('0x67')](_0x621d45['read1stAt'])?moment()[_0x60e5('0x68')](_0x60e5('0x60')):undefined});}return null;})[_0x60e5('0x24')](function(_0x4454a9){if(_0x4454a9){_0xe79613['interaction']=_0x4454a9[_0x60e5('0x64')]({'plain':!![]});interaction_log[_0x60e5('0x69')](_0x60e5('0x6a'),_0x212d9e[_0x60e5('0x62')]['id'],_0x212d9e['user']['name'],_0x212d9e[_0x60e5('0x62')][_0x60e5('0x6b')],_0xe79613[_0x60e5('0x6c')]['id'],_0x212d9e[_0x60e5('0x5b')]?JSON[_0x60e5('0x27')](_0x212d9e[_0x60e5('0x5b')]):_0x60e5('0x6d'));return respondWithRpcPromise(_0x60e5('0x6e'),_0x60e5('0x6f'),_0xe79613);}return null;})['then'](function(_0x5d9cc8){var _0xaea69=_0x60e5('0x70')+_0x5d9cc8[_0x60e5('0x2b')][_0x60e5('0x71')];return db[_0x60e5('0x72')][_0x60e5('0x45')](_0xaea69,{'type':db['Sequelize'][_0x60e5('0x73')]['SELECT'],'raw':!![]})['then'](function(_0x561d89){return _0x561d89;});})[_0x60e5('0x24')](function(_0x125879){if(_0x125879){_0xe79613[_0x60e5('0x2b')][_0x60e5('0x74')]=_0x125879[0x0];if(!_0x212d9e[_0x60e5('0x5b')][_0x60e5('0x61')])return;return db['User'][_0x60e5('0x5a')]({'where':{'id':_0x212d9e[_0x60e5('0x5b')]['UserId'],'role':_0x60e5('0x63')},'attributes':['id',_0x60e5('0x3c'),_0x60e5('0x75'),'email',_0x60e5('0x76')],'raw':!![]});}return null;})[_0x60e5('0x24')](function(_0x3cd2d3){if(!_0x3cd2d3)return null;_0xe79613[_0x60e5('0x2b')][_0x60e5('0x63')]=_0x3cd2d3;return _0xe79613;})['then'](function(_0x4e74f9){if(_0x4e74f9){if(_0x212d9e['body'][_0x60e5('0x77')]){_0xe79613[_0x60e5('0x2b')][_0x60e5('0x78')]=util[_0x60e5('0x68')](_0x60e5('0x79'),_0x212d9e[_0x60e5('0x62')][_0x60e5('0x3c')]);_0xe79613[_0x60e5('0x2b')][_0x60e5('0x7a')]=_0xe79613['channel'];_0xe79613[_0x60e5('0x2b')][_0x60e5('0x7b')]=_0xe79613[_0x60e5('0x7a')];_0xe79613[_0x60e5('0x2b')][_0x60e5('0x7c')]=_0x60e5('0x7d');return respondWithRpcPromise(_0x60e5('0x7e'),_0x60e5('0x7e'),{'event':_0x60e5('0x7f'),'message':_0xe79613[_0x60e5('0x2b')]},client9002)['then'](function(){return _0xe79613;});}return _0xe79613;}return null;})[_0x60e5('0x24')](respondWithResult(_0x436863,null))[_0x60e5('0x2c')](handleError(_0x436863,null));};var interaction_log=require(_0x60e5('0x16'))('sms-interactions');exports[_0x60e5('0x38')]=function(_0x3c123d,_0x374bad,_0x41d274){var _0x42fc2d={'agent':{},'channel':_0x60e5('0x5e')};if(_0x3c123d[_0x60e5('0x5b')]['id']){delete _0x3c123d[_0x60e5('0x5b')]['id'];}_0x3c123d['body']['UserId']=_0x3c123d[_0x60e5('0x5b')]['UserId']||_0x3c123d[_0x60e5('0x62')]['id'];_0x42fc2d[_0x60e5('0x63')]['id']=_0x3c123d[_0x60e5('0x5b')][_0x60e5('0x61')];return db[_0x60e5('0x40')][_0x60e5('0x5a')]({'where':{'id':_0x3c123d[_0x60e5('0x56')]['id'],'UserId':null}})[_0x60e5('0x24')](handleEntityNotFound(_0x374bad,null))[_0x60e5('0x24')](function(_0xf40b25){if(_0xf40b25){_0x42fc2d[_0x60e5('0x2b')]=_0xf40b25[_0x60e5('0x64')]({'plain':!![]});return db[_0x60e5('0x65')]['find']({'where':{'id':_0xf40b25[_0x60e5('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x374bad,null))[_0x60e5('0x24')](function(_0x7107a){if(_0x7107a){_0x42fc2d[_0x60e5('0x6c')]=_0x7107a[_0x60e5('0x64')]({'plain':!![]});interaction_log[_0x60e5('0x69')](_0x60e5('0x80'),_0x3c123d[_0x60e5('0x62')]['id'],_0x3c123d[_0x60e5('0x62')][_0x60e5('0x3c')],_0x3c123d['user'][_0x60e5('0x6b')],_0x42fc2d[_0x60e5('0x6c')]['id'],_0x3c123d[_0x60e5('0x5b')]?JSON[_0x60e5('0x27')](_0x3c123d['body']):_0x60e5('0x6d'));return respondWithRpcPromise('RejectMessage',_0x60e5('0x81'),_0x42fc2d);}return null;})[_0x60e5('0x24')](function(_0xfde7cc){var _0x55877b=_0x60e5('0x70')+_0xfde7cc[_0x60e5('0x2b')][_0x60e5('0x71')];return db[_0x60e5('0x72')][_0x60e5('0x45')](_0x55877b,{'type':db[_0x60e5('0x82')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x330e0e){return _0x330e0e;});})['then'](function(_0x371f1c){if(_0x371f1c){_0x42fc2d[_0x60e5('0x2b')][_0x60e5('0x74')]=_0x371f1c[0x0];if(!_0x3c123d['body'][_0x60e5('0x61')])return;return db[_0x60e5('0x83')]['find']({'where':{'id':_0x3c123d[_0x60e5('0x5b')][_0x60e5('0x61')],'role':_0x60e5('0x63')},'attributes':['id',_0x60e5('0x3c'),_0x60e5('0x75'),_0x60e5('0x84'),_0x60e5('0x76')],'raw':!![]});}return null;})[_0x60e5('0x24')](function(_0x50c19d){if(!_0x50c19d)return null;_0x42fc2d[_0x60e5('0x2b')][_0x60e5('0x63')]=_0x50c19d;return _0x42fc2d;})[_0x60e5('0x24')](function(_0x225c9f){if(_0x225c9f){_0x225c9f[_0x60e5('0x2b')][_0x60e5('0x78')]=util[_0x60e5('0x68')]('SIP/%s',_0x3c123d[_0x60e5('0x62')][_0x60e5('0x3c')]);_0x225c9f[_0x60e5('0x2b')][_0x60e5('0x7a')]=_0x42fc2d[_0x60e5('0x7a')];_0x225c9f[_0x60e5('0x2b')]['motionChannel']=_0x42fc2d['channel'];_0x225c9f[_0x60e5('0x2b')][_0x60e5('0x7c')]='reject';respondWithRpcPromise(_0x60e5('0x7e'),_0x60e5('0x7e'),{'event':_0x60e5('0x85'),'message':_0x225c9f[_0x60e5('0x2b')]},client9002);return _0x42fc2d;}return null;})[_0x60e5('0x24')](respondWithResult(_0x374bad,null))[_0x60e5('0x2c')](handleError(_0x374bad,null));};exports[_0x60e5('0x2e')]=function(_0x3845e6,_0x215779,_0xd38fcf){if(_0x3845e6[_0x60e5('0x5b')]['id']){delete _0x3845e6['body']['id'];}var _0x489f4f;return db[_0x60e5('0x40')][_0x60e5('0x5a')]({'where':{'id':_0x3845e6[_0x60e5('0x56')]['id']}})[_0x60e5('0x24')](handleEntityNotFound(_0x215779,null))[_0x60e5('0x24')](function(_0x455b68){if(_0x455b68){_0x489f4f=_0x455b68;return db[_0x60e5('0x86')][_0x60e5('0x5a')]({'where':{'id':_0x455b68[_0x60e5('0x87')]}});}})[_0x60e5('0x24')](handleEntityNotFound(_0x215779,null))[_0x60e5('0x24')](function(_0x556c81){if(_0x556c81){logger['debug'](_0x60e5('0x25'),_0x60e5('0x2e'),_0x60e5('0x88'),_0x556c81[_0x60e5('0x42')],util[_0x60e5('0x89')](_0x3845e6[_0x60e5('0x5b')],{'showHidden':![],'depth':null}));switch(_0x556c81['type']){case _0x60e5('0x8a'):if(_0x3845e6[_0x60e5('0x5b')][_0x60e5('0x8b')]&&_0x3845e6[_0x60e5('0x5b')][_0x60e5('0x8b')]===_0x489f4f['messageId']){return _0x489f4f['update']({'read':!![]});}else{logger[_0x60e5('0x28')](_0x60e5('0x8c'),_0x60e5('0x2e'),_0x60e5('0x8a'),util[_0x60e5('0x89')](_0x3845e6[_0x60e5('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x60e5('0x8d'):if(_0x3845e6[_0x60e5('0x5b')][_0x60e5('0x8e')]&&_0x3845e6[_0x60e5('0x5b')]['MessageUUID']===_0x489f4f[_0x60e5('0x8f')]&&_['indexOf']([_0x60e5('0x90'),'delivered'],_0x3845e6[_0x60e5('0x5b')][_0x60e5('0x91')])>=0x0){return _0x489f4f[_0x60e5('0x3a')]({'read':!![]});}else{logger['error'](_0x60e5('0x8c'),_0x60e5('0x2e'),_0x60e5('0x92'),util['inspect'](_0x3845e6[_0x60e5('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x60e5('0x93'):var _0x222268=_0x3845e6[_0x60e5('0x5b')]['results'][0x0];if(_0x222268[_0x60e5('0x2e')][_0x60e5('0x94')]==='DELIVERED'){return _0x489f4f[_0x60e5('0x3a')]({'read':!![]});}else{logger[_0x60e5('0x28')](_0x60e5('0x8c'),'status','infobip',util[_0x60e5('0x89')](_0x3845e6[_0x60e5('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x489f4f;}})[_0x60e5('0x24')](respondWithResult(_0x215779,null))['catch'](handleError(_0x215779,null));};
\ No newline at end of file
index b03ef47..a95e6fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeef4=['exports','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x106151,_0x372724){var _0x5c5182=function(_0x4eec4e){while(--_0x4eec4e){_0x106151['push'](_0x106151['shift']());}};_0x5c5182(++_0x372724);}(_0xeef4,0x1a9));var _0x4eef=function(_0x2abaae,_0x29fd8b){_0x2abaae=_0x2abaae-0x0;var _0x5b5745=_0xeef4[_0x2abaae];return _0x5b5745;};'use strict';var EventEmitter=require('events');var SmsMessage=require('../../mysqldb')['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x4eef('0x0')](0x0);var events={'afterCreate':_0x4eef('0x1'),'afterUpdate':_0x4eef('0x2'),'afterDestroy':_0x4eef('0x3')};function emitEvent(_0x4df411){return function(_0xf66518,_0x3f0318,_0xfefe5c){SmsMessageEvents[_0x4eef('0x4')](_0x4df411+':'+_0xf66518['id'],_0xf66518);SmsMessageEvents[_0x4eef('0x4')](_0x4df411,_0xf66518);_0xfefe5c(null);};}for(var e in events){if(events[_0x4eef('0x5')](e)){var event=events[e];SmsMessage[_0x4eef('0x6')](e,emitEvent(event));}}module[_0x4eef('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0x7176=['remove','emit','exports','../../mysqldb','SmsMessage','setMaxListeners','save','update'];(function(_0x399bd4,_0x3c84ab){var _0x12d41b=function(_0x2341dc){while(--_0x2341dc){_0x399bd4['push'](_0x399bd4['shift']());}};_0x12d41b(++_0x3c84ab);}(_0x7176,0x1f3));var _0x6717=function(_0x5a1419,_0x32ab66){_0x5a1419=_0x5a1419-0x0;var _0x147fce=_0x7176[_0x5a1419];return _0x147fce;};'use strict';var EventEmitter=require('events');var SmsMessage=require(_0x6717('0x0'))['db'][_0x6717('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x6717('0x2')](0x0);var events={'afterCreate':_0x6717('0x3'),'afterUpdate':_0x6717('0x4'),'afterDestroy':_0x6717('0x5')};function emitEvent(_0x2e85a2){return function(_0x641403,_0x82e57c,_0x444ceb){SmsMessageEvents[_0x6717('0x6')](_0x2e85a2+':'+_0x641403['id'],_0x641403);SmsMessageEvents['emit'](_0x2e85a2,_0x641403);_0x444ceb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0x6717('0x7')]=SmsMessageEvents;
\ No newline at end of file
index ef258bf..02c3a45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1386=['bluebird','request-promise','path','../../config/environment','./smsMessage.attributes','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','SmsInteractionId','SmsInteraction','then','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','authToken','phone','accountSid','messages','create','remote','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','password','smsMethod','sender','username','GET','split','sms','POST','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','senderString','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','base64','http_code','data','queued_count','message_id','clickSend','plivo','authId','/status?token=','toString','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','/api/sms/messages/','Missing\x20parameters:\x20base_url','crypto','apiKey','login','text','timestamp','keys','sort','length','createHash','md5','digest','signature=','/external/get/send.php?','id_sms','csc','clickatell','https://platform.clickatell.com/messages','uuid','Missing\x20parameters:\x20apiKey','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','application/json','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment'];(function(_0x3f25b2,_0x412bd4){var _0xd8caeb=function(_0x52d252){while(--_0x52d252){_0x3f25b2['push'](_0x3f25b2['shift']());}};_0xd8caeb(++_0x412bd4);}(_0x1386,0x179));var _0x6138=function(_0x5f53ab,_0x324327){_0x5f53ab=_0x5f53ab-0x0;var _0x116166=_0x1386[_0x5f53ab];return _0x116166;};'use strict';var _=require(_0x6138('0x0'));var util=require(_0x6138('0x1'));var logger=require(_0x6138('0x2'))('api');var moment=require(_0x6138('0x3'));var BPromise=require(_0x6138('0x4'));var rp=require(_0x6138('0x5'));var fs=require('fs');var path=require(_0x6138('0x6'));var rimraf=require('rimraf');var config=require(_0x6138('0x7'));var attributes=require(_0x6138('0x8'));module['exports']=function(_0x31b1de,_0x56a7b0){return _0x31b1de[_0x6138('0x9')](_0x6138('0xa'),attributes,{'tableName':_0x6138('0xb'),'paranoid':![],'indexes':[{'name':_0x6138('0xc'),'fields':[_0x6138('0xc')]},{'name':_0x6138('0xd'),'fields':[_0x6138('0xe')],'type':_0x6138('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x59ff1e,_0x5be73b,_0x3b027a){var _0x3259bb=_0x31b1de[_0x6138('0x10')];var _0x235aed=_0x59ff1e[_0x6138('0x11')]({'plain':!![]});if(_0x235aed[_0x6138('0x12')][_0x6138('0x13')]()==='in'||_0x235aed['direction'][_0x6138('0x13')]()===_0x6138('0x14')&&!_0x235aed[_0x6138('0x15')]&&!_[_0x6138('0x16')](_0x235aed[_0x6138('0x17')])&&!_['isNil'](_0x235aed[_0x6138('0x18')])){_0x3259bb[_0x6138('0x19')]['findOne']({'where':{'id':_0x235aed[_0x6138('0x18')]}})[_0x6138('0x1a')](function(_0x397565){if(_0x397565){_0x397565[_0x6138('0x1b')]({'lastMsgAt':_0x235aed[_0x6138('0x1c')],'lastMsgDirection':_0x235aed['direction']['toLowerCase']()});}})[_0x6138('0x1d')](function(_0x5ac6d2){console[_0x6138('0x1e')](_0x5ac6d2);});}if(_0x235aed[_0x6138('0x12')]===_0x6138('0x14')&&!_0x235aed[_0x6138('0x15')]){var _0x333edb;_0x3259bb[_0x6138('0x1f')][_0x6138('0x20')]({'where':{'id':_0x235aed[_0x6138('0x21')]},'raw':!![]})[_0x6138('0x1a')](function(_0x3d4c0c){_0x333edb=_0x3d4c0c;if(_0x333edb&&_0x333edb[_0x6138('0x22')]){switch(_0x333edb['type']){case _0x6138('0x23'):var _0x4ee7a3=require(_0x6138('0x23'));if(_0x333edb['accountSid']&&_0x333edb[_0x6138('0x24')]&&_0x333edb[_0x6138('0x25')]){var _0x3f6910=new _0x4ee7a3(_0x333edb[_0x6138('0x26')],_0x333edb[_0x6138('0x24')]);_0x3f6910[_0x6138('0x27')][_0x6138('0x28')]({'body':_0x235aed[_0x6138('0xe')],'to':_0x235aed[_0x6138('0x25')],'from':_0x333edb[_0x6138('0x25')],'statusCallback':_0x333edb[_0x6138('0x29')]+'/api/sms/messages/'+_0x235aed['id']+'/status?token='+_0x333edb[_0x6138('0x2a')]})[_0x6138('0x1a')](function(_0x13b4c8){if(_0x13b4c8[_0x6138('0x2b')]){return _0x59ff1e[_0x6138('0x1b')]({'messageId':_0x13b4c8['sid']});}})[_0x6138('0x1d')](function(_0x23b000){logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x23'),util[_0x6138('0x2e')](_0x23b000,{'showHidden':![],'depth':null}));});}else{logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x23'),_0x6138('0x2f'));}break;case _0x6138('0x30'):var _0x971806='https://api.skebby.it/API/v1.0/REST/';if(_0x333edb['username']&&_0x333edb[_0x6138('0x31')]){var _0x2b8e7c={'recipient':[_0x235aed[_0x6138('0x25')]],'message':_0x235aed[_0x6138('0xe')],'message_type':_0x333edb[_0x6138('0x32')]};if(_0x333edb[_0x6138('0x32')]&&_0x333edb[_0x6138('0x32')]!=='SI'){_0x2b8e7c[_0x6138('0x33')]=_0x333edb[_0x6138('0x25')];}var _0x574ffc={'url':_0x971806+'login?username='+_0x333edb[_0x6138('0x34')]+'&password='+_0x333edb[_0x6138('0x31')],'method':_0x6138('0x35')};rp(_0x574ffc)[_0x6138('0x1a')](function(_0xf87958){var _0x207e04=_0xf87958[_0x6138('0x36')](';');var _0x9d0ea5={'user_key':_0x207e04[0x0],'session_key':_0x207e04[0x1]};_0x574ffc={'url':_0x971806+_0x6138('0x37'),'method':_0x6138('0x38'),'headers':{'user_key':_0x9d0ea5['user_key'],'Session_key':_0x9d0ea5[_0x6138('0x39')]},'json':!![],'body':_0x2b8e7c};return rp(_0x574ffc);})[_0x6138('0x1a')](function(_0x46d28d){if(_0x46d28d[_0x6138('0x3a')]>=0x1){var _0x11db76={'messageId':_0x46d28d[_0x6138('0x3b')]};if(_0x333edb[_0x6138('0x32')]!=='GP'||!_0x333edb[_0x6138('0x3c')]){_0x11db76[_0x6138('0x3d')]=!![];}return _0x59ff1e['update'](_0x11db76);}else{return logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),'skebby',util[_0x6138('0x2e')](_0x46d28d,{'showHidden':![],'depth':null}));}})['catch'](function(_0x371895){return logger['error'](_0x6138('0x2c'),_0x6138('0x2d'),'skebby',util[_0x6138('0x2e')](_0x371895,{'showHidden':![],'depth':null}));});}else{logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x30'),_0x6138('0x3e'));}break;case _0x6138('0x3f'):if(_0x333edb[_0x6138('0x24')]){var _0x26d431={'recipient':_0x235aed[_0x6138('0x25')],'message':_0x235aed[_0x6138('0xe')],'sender':_0x333edb[_0x6138('0x40')]||_0x333edb['phone'],'authorization':_0x333edb[_0x6138('0x24')]};var _0x5be73b={'method':_0x6138('0x38'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x26d431,'json':!![]};rp(_0x5be73b)[_0x6138('0x1a')](function(_0x47674f){var _0x138958={'messageId':_0x47674f[_0x6138('0x41')]};if(!_0x333edb[_0x6138('0x3c')]){_0x138958[_0x6138('0x3d')]=!![];}return _0x59ff1e[_0x6138('0x1b')](_0x138958);})['catch'](function(_0x1437b9){logger[_0x6138('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6138('0x2d'),_0x6138('0x3f'),util[_0x6138('0x2e')](_0x1437b9,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x3f'),_0x6138('0x42'));}break;case _0x6138('0x43'):if(_0x333edb[_0x6138('0x34')]&&_0x333edb[_0x6138('0x31')]){var _0x26d431={'messages':[{'source':_0x6138('0x44'),'to':_0x235aed[_0x6138('0x25')],'body':_0x235aed[_0x6138('0xe')],'from':_0x333edb[_0x6138('0x40')]||_0x333edb[_0x6138('0x25')]}]};var _0x565998=util[_0x6138('0x45')](_0x6138('0x46'),_0x333edb[_0x6138('0x34')],_0x333edb['password']);var _0x5be73b={'method':_0x6138('0x38'),'uri':_0x6138('0x47'),'body':_0x26d431,'headers':{'Authorization':util[_0x6138('0x45')](_0x6138('0x48'),new Buffer(_0x565998)['toString'](_0x6138('0x49')))},'json':!![]};rp(_0x5be73b)['then'](function(_0x2f91b6){if(_0x2f91b6[_0x6138('0x4a')]>=0xc8&&_0x2f91b6[_0x6138('0x4a')]<=0xce){if(_0x2f91b6[_0x6138('0x4b')]&&_0x2f91b6[_0x6138('0x4b')][_0x6138('0x4c')]>0x0){var _0x346141=_['head'](_0x2f91b6[_0x6138('0x4b')][_0x6138('0x27')]);var _0x3af8b1={'messageId':_0x346141[_0x6138('0x4d')]};if(!_0x333edb['deliveryReport']){_0x3af8b1['read']=!![];}return _0x59ff1e[_0x6138('0x1b')](_0x3af8b1);}else{logger['error'](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x4e'),util[_0x6138('0x2e')](_0x2f91b6,{'showHidden':![],'depth':null}));}}else{logger['error'](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x4e'),util[_0x6138('0x2e')](_0x2f91b6,{'showHidden':![],'depth':null}));}})[_0x6138('0x1d')](function(_0x54a0ec){logger[_0x6138('0x1e')](_0x6138('0x2c'),'afterCreate',_0x6138('0x4e'),util['inspect'](_0x54a0ec,{'showHidden':![],'depth':null}));});}else{logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x4e'),_0x6138('0x3e'));}break;case _0x6138('0x4f'):if(_0x333edb[_0x6138('0x50')]&&_0x333edb[_0x6138('0x24')]){var _0x26d431={'dst':_0x235aed[_0x6138('0x25')],'text':_0x235aed['body'],'src':_0x333edb['senderString']||_0x333edb[_0x6138('0x25')],'url':_0x333edb['remote']+'/api/sms/messages/'+_0x235aed['id']+_0x6138('0x51')+_0x333edb['token']};var _0x565998=util[_0x6138('0x45')](_0x6138('0x46'),_0x333edb[_0x6138('0x50')],_0x333edb[_0x6138('0x24')]);var _0x5be73b={'method':'POST','uri':util[_0x6138('0x45')]('https://api.plivo.com/v1/Account/%s/Message/',_0x333edb[_0x6138('0x50')]),'body':_0x26d431,'headers':{'Authorization':util[_0x6138('0x45')](_0x6138('0x48'),new Buffer(_0x565998)[_0x6138('0x52')](_0x6138('0x49')))},'json':!![]};rp(_0x5be73b)['then'](function(_0x228ad5){var _0x582208={'messageId':_0x228ad5[_0x6138('0x53')][0x0]};return _0x59ff1e[_0x6138('0x1b')](_0x582208);})[_0x6138('0x1d')](function(_0x2ae4d8){logger['error'](_0x6138('0x2c'),'afterCreate','plivo',util[_0x6138('0x2e')](_0x2ae4d8,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x4f'),_0x6138('0x54'));}break;case _0x6138('0x55'):if(_0x333edb[_0x6138('0x34')]&&_0x333edb['password']){if(_0x333edb[_0x6138('0x56')]){var _0x5d46b6={'method':'POST','uri':_0x333edb[_0x6138('0x56')]+_0x6138('0x57'),'body':{'username':_0x333edb['username'],'password':_0x333edb[_0x6138('0x31')]},'json':!![]};return rp(_0x5d46b6)['then'](function(_0x460d3c){var _0x333ed8={'method':_0x6138('0x38'),'uri':_0x333edb['baseUrl']+_0x6138('0x58'),'body':{'messages':[{'from':_0x333edb['phone'],'destinations':[{'to':_0x235aed['phone']}],'text':_0x235aed[_0x6138('0xe')],'notifyUrl':_0x333edb['remote']+_0x6138('0x59')+_0x235aed['id']+_0x6138('0x51')+_0x333edb[_0x6138('0x2a')],'notifyContentType':'application/json','callbackData':_0x333edb[_0x6138('0x25')]+';'+_0x235aed[_0x6138('0xe')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x460d3c[_0x6138('0x2a')]},'json':!![]};return rp(_0x333ed8)['then'](function(_0x1fee65){if(_0x1fee65[_0x6138('0x27')]){var _0x3da5fe={'messageId':_0x1fee65[_0x6138('0x27')][0x0][_0x6138('0xc')]};if(!_0x333edb['deliveryReport']){_0x3da5fe['read']=!![];}return _0x59ff1e['update'](_0x3da5fe);}else{return logger['error'](_0x6138('0x2c'),_0x6138('0x2d'),'infobip',util['inspect'](_0x1fee65,{'showHidden':![],'depth':null}));}});})[_0x6138('0x1d')](function(_0x5c7f85){return logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x55'),util[_0x6138('0x2e')](_0x5c7f85,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6138('0x2c'),'afterCreate',_0x6138('0x55'),_0x6138('0x5a'));}}else{logger['error'](_0x6138('0x2c'),_0x6138('0x2d'),'infobip',_0x6138('0x3e'));}break;case'csc':var _0x12211c=require(_0x6138('0x5b'));if(_0x333edb[_0x6138('0x5c')]){var _0x1518bd={};_0x1518bd[_0x6138('0x5d')]=_0x333edb[_0x6138('0x34')];_0x1518bd[_0x6138('0x25')]=_0x235aed[_0x6138('0x25')];_0x1518bd[_0x6138('0x33')]=_0x333edb['phone'];_0x1518bd[_0x6138('0x5e')]=_0x235aed['body'];_0x1518bd[_0x6138('0x5f')]=+new Date();var _0x3f56a8='';var _0x42974f='';var _0x154349=Object[_0x6138('0x60')](_0x1518bd);_0x154349[_0x6138('0x61')]();for(var _0x477090=0x0;_0x477090<_0x154349[_0x6138('0x62')];_0x477090++){if(_0x3f56a8!=''){_0x3f56a8+='&';}_0x3f56a8+=_0x154349[_0x477090]+'='+encodeURIComponent(_0x1518bd[_0x154349[_0x477090]]);_0x42974f+=_0x1518bd[_0x154349[_0x477090]];}_0x42974f+=_0x333edb['apiKey'];_0x42974f=_0x12211c[_0x6138('0x63')](_0x6138('0x64'))[_0x6138('0x1b')](_0x42974f)[_0x6138('0x65')]('hex');if(_0x3f56a8!==''){_0x3f56a8+='&';}_0x3f56a8+=_0x6138('0x66')+_0x42974f;var _0x574ffc={'method':'GET','uri':_0x333edb['baseUrl']+_0x6138('0x67')+_0x3f56a8,'json':!![]};return rp(_0x574ffc)[_0x6138('0x1a')](function(_0x47543f){var _0x47edaa=Object[_0x6138('0x60')](_0x47543f);if(_0x47543f[_0x47edaa[0x0]][_0x6138('0x1e')]&&parseInt(_0x47543f[_0x47edaa[0x0]]['error'])===0x0){var _0xe6f458={'messageId':_0x47543f[_0x47edaa[0x0]][_0x6138('0x68')]};if(!_0x333edb[_0x6138('0x3c')]){_0xe6f458[_0x6138('0x3d')]=!![];}return _0x59ff1e['update'](_0xe6f458);}else{return logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),'csc',util[_0x6138('0x2e')](_0x47543f['error'],{'showHidden':![],'depth':null}));}})[_0x6138('0x1d')](function(_0x353c22){return logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x69'),util[_0x6138('0x2e')](_0x353c22,{'showHidden':![],'depth':null}));});}else{logger[_0x6138('0x1e')](_0x6138('0x2c'),'afterCreate',_0x6138('0x69'),'Missing\x20parameters:\x20apiKey');}break;case _0x6138('0x6a'):if(_0x333edb[_0x6138('0x5c')]){var _0x23c412={'method':_0x6138('0x38'),'uri':_0x6138('0x6b'),'headers':{'Authorization':_0x333edb['apiKey']},'body':{'content':_0x235aed['body'],'to':[_0x235aed['phone']],'from':_0x333edb[_0x6138('0x25')],'binary':![],'clientMessageId':_0x6138('0x6c'),'charset':'UTF-8'},'json':!![]};rp(_0x23c412)[_0x6138('0x1a')](function(_0x1affdc){if(!_0x1affdc[_0x6138('0x1e')]){var _0x4dce3d={'messageId':_0x1affdc[_0x6138('0x27')][0x0]['apiMessageId']};if(!_0x333edb[_0x6138('0x3c')]){_0x4dce3d[_0x6138('0x3d')]=!![];}return _0x59ff1e['update'](_0x4dce3d);}else{return logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x6a'),util['inspect'](_0x1affdc['error'],{'showHidden':![],'depth':null}));}})[_0x6138('0x1d')](function(_0x24d995){return logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x6a'),util[_0x6138('0x2e')](_0x24d995,{'showHidden':![],'depth':null}));});}else{logger[_0x6138('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6138('0x2d'),'clickatell',_0x6138('0x6d'));}break;case _0x6138('0x6e'):if(_0x333edb[_0x6138('0x34')]&&_0x333edb[_0x6138('0x31')]){var _0x565998=util[_0x6138('0x45')](_0x6138('0x46'),_0x333edb[_0x6138('0x34')],_0x333edb[_0x6138('0x31')]);var _0x5be73b={'method':_0x6138('0x38'),'uri':_0x6138('0x6f')+_0x333edb[_0x6138('0x70')]+'/messages','body':{'to':[_0x235aed['phone']],'text':_0x235aed[_0x6138('0xe')],'from':_0x333edb[_0x6138('0x25')],'applicationId':_0x333edb[_0x6138('0x71')]},'headers':{'Authorization':util[_0x6138('0x45')]('Basic\x20%s',new Buffer(_0x565998)[_0x6138('0x52')](_0x6138('0x49')))},'json':!![]};rp(_0x5be73b)['then'](function(_0x3007d2){if(_0x3007d2['id']){var _0x2b5c20={'messageId':_0x3007d2['id']};return _0x59ff1e[_0x6138('0x1b')](_0x2b5c20);}else{logger['error'](_0x6138('0x2c'),_0x6138('0x2d'),'bandwidth',util[_0x6138('0x2e')](_0x3007d2,{'showHidden':![],'depth':null}));}})[_0x6138('0x1d')](function(_0x19f9e4){logger['error'](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x6e'),util[_0x6138('0x2e')](_0x19f9e4,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6138('0x2c'),_0x6138('0x2d'),_0x6138('0x6e'),_0x6138('0x3e'));}break;case _0x6138('0x72'):if(_0x333edb[_0x6138('0x5c')]){var _0x10832d={};var _0x574ffc={'method':_0x6138('0x38'),'uri':_0x6138('0x73'),'headers':{'Authorization':'Bearer\x20'+_0x333edb[_0x6138('0x5c')],'Content-Type':_0x6138('0x74')},'body':{'from':_0x333edb[_0x6138('0x25')],'to':_0x235aed[_0x6138('0x25')],'text':_0x235aed['body']},'json':!![]};return rp(_0x574ffc)[_0x6138('0x1a')](function(_0x127c51){if(_0x127c51[_0x6138('0x75')]==0xca){_0x10832d[_0x6138('0x76')]=_0x127c51;var _0x3754e6={'method':_0x6138('0x38'),'uri':_0x6138('0x77'),'headers':{'Authorization':_0x6138('0x78')+_0x333edb[_0x6138('0x5c')],'Content-Type':_0x6138('0x74')},'body':{'refid':_0x10832d['message'][_0x6138('0x79')]},'json':!![]};return rp(_0x3754e6)[_0x6138('0x1a')](function(_0x48b7a5){_0x10832d[_0x6138('0x7a')]=_0x48b7a5;var _0xee8e55={'messageId':_0x10832d[_0x6138('0x76')]['refid'],'read':!![]};return _0x59ff1e['update'](_0xee8e55);});}else{return logger[_0x6138('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x6138('0x72'),util[_0x6138('0x2e')](_0x127c51,{'showHidden':![],'depth':null}));}})[_0x6138('0x1d')](function(_0x4d62dc){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x6138('0x72'),util[_0x6138('0x2e')](_0x4d62dc,{'showHidden':![],'depth':null}));});}else{return logger[_0x6138('0x1e')](_0x6138('0x2c'),_0x6138('0x2d'),'intelepeer',_0x6138('0x7b'));}break;}}})[_0x6138('0x7c')](function(){_0x3b027a();});}else{_0x3b027a();}}},'charset':_0x6138('0x7d'),'collate':_0x6138('0x7e')});};
\ No newline at end of file
+var _0x9935=['senderString','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','%s:%s','https://rest.clicksend.com/v3/sms/send','format','Basic\x20%s','base64','http_code','data','queued_count','clickSend','authId','toString','message_uuid','plivo','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','Missing\x20parameters:\x20base_url','csc','apiKey','login','text','sort','length','digest','signature=','/external/get/send.php?','keys','Missing\x20parameters:\x20apiKey','uuid','UTF-8','apiMessageId','clickatell','bandwidth','accountId','/messages','applicationId','intelepeer','Bearer\x20','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','finally','utf8mb4_unicode_ci','../../config/logger','moment','bluebird','request-promise','path','rimraf','./smsMessage.attributes','define','SmsMessage','messageId','fti_sms_messages','FULLTEXT','models','get','toLowerCase','out','secret','UserId','SmsInteraction','findOne','SmsInteractionId','then','update','createdAt','direction','catch','SmsAccount','find','SmsAccountId','type','twilio','accountSid','phone','messages','create','body','remote','/api/sms/messages/','/status?token=','token','error','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','password','smsMethod','sender','login?username=','username','&password=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','authToken'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x9935,0x198));var _0x5993=function(_0xe92ce1,_0x143a04){_0xe92ce1=_0xe92ce1-0x0;var _0x1c71e7=_0x9935[_0xe92ce1];return _0x1c71e7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5993('0x0'))('api');var moment=require(_0x5993('0x1'));var BPromise=require(_0x5993('0x2'));var rp=require(_0x5993('0x3'));var fs=require('fs');var path=require(_0x5993('0x4'));var rimraf=require(_0x5993('0x5'));var config=require('../../config/environment');var attributes=require(_0x5993('0x6'));module['exports']=function(_0x3856e4,_0x3055bc){return _0x3856e4[_0x5993('0x7')](_0x5993('0x8'),attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0x5993('0x9'),'fields':[_0x5993('0x9')]},{'name':_0x5993('0xa'),'fields':['body'],'type':_0x5993('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3edea2,_0x281d90,_0x4dac07){var _0x4ba093=_0x3856e4[_0x5993('0xc')];var _0x5a8993=_0x3edea2[_0x5993('0xd')]({'plain':!![]});if(_0x5a8993['direction'][_0x5993('0xe')]()==='in'||_0x5a8993['direction'][_0x5993('0xe')]()===_0x5993('0xf')&&!_0x5a8993[_0x5993('0x10')]&&!_['isNil'](_0x5a8993[_0x5993('0x11')])&&!_['isNil'](_0x5a8993['SmsInteractionId'])){_0x4ba093[_0x5993('0x12')][_0x5993('0x13')]({'where':{'id':_0x5a8993[_0x5993('0x14')]}})[_0x5993('0x15')](function(_0x2f0391){if(_0x2f0391){_0x2f0391[_0x5993('0x16')]({'lastMsgAt':_0x5a8993[_0x5993('0x17')],'lastMsgDirection':_0x5a8993[_0x5993('0x18')][_0x5993('0xe')]()});}})[_0x5993('0x19')](function(_0x510907){console['error'](_0x510907);});}if(_0x5a8993[_0x5993('0x18')]==='out'&&!_0x5a8993[_0x5993('0x10')]){var _0x35e6f9;_0x4ba093[_0x5993('0x1a')][_0x5993('0x1b')]({'where':{'id':_0x5a8993[_0x5993('0x1c')]},'raw':!![]})[_0x5993('0x15')](function(_0x4cf76d){_0x35e6f9=_0x4cf76d;if(_0x35e6f9&&_0x35e6f9[_0x5993('0x1d')]){switch(_0x35e6f9[_0x5993('0x1d')]){case _0x5993('0x1e'):var _0x32f8ab=require(_0x5993('0x1e'));if(_0x35e6f9[_0x5993('0x1f')]&&_0x35e6f9['authToken']&&_0x35e6f9[_0x5993('0x20')]){var _0x172392=new _0x32f8ab(_0x35e6f9[_0x5993('0x1f')],_0x35e6f9['authToken']);_0x172392[_0x5993('0x21')][_0x5993('0x22')]({'body':_0x5a8993[_0x5993('0x23')],'to':_0x5a8993['phone'],'from':_0x35e6f9[_0x5993('0x20')],'statusCallback':_0x35e6f9[_0x5993('0x24')]+_0x5993('0x25')+_0x5a8993['id']+_0x5993('0x26')+_0x35e6f9[_0x5993('0x27')]})[_0x5993('0x15')](function(_0x308b1d){if(_0x308b1d['sid']){return _0x3edea2[_0x5993('0x16')]({'messageId':_0x308b1d['sid']});}})[_0x5993('0x19')](function(_0x15e7e5){logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'twilio',util[_0x5993('0x2b')](_0x15e7e5,{'showHidden':![],'depth':null}));});}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'twilio',_0x5993('0x2c'));}break;case _0x5993('0x2d'):var _0x46fcd9='https://api.skebby.it/API/v1.0/REST/';if(_0x35e6f9['username']&&_0x35e6f9[_0x5993('0x2e')]){var _0x4c96c8={'recipient':[_0x5a8993[_0x5993('0x20')]],'message':_0x5a8993[_0x5993('0x23')],'message_type':_0x35e6f9[_0x5993('0x2f')]};if(_0x35e6f9[_0x5993('0x2f')]&&_0x35e6f9['smsMethod']!=='SI'){_0x4c96c8[_0x5993('0x30')]=_0x35e6f9[_0x5993('0x20')];}var _0x44796d={'url':_0x46fcd9+_0x5993('0x31')+_0x35e6f9[_0x5993('0x32')]+_0x5993('0x33')+_0x35e6f9[_0x5993('0x2e')],'method':_0x5993('0x34')};rp(_0x44796d)['then'](function(_0x31fa50){var _0x233a8b=_0x31fa50[_0x5993('0x35')](';');var _0x3c840b={'user_key':_0x233a8b[0x0],'session_key':_0x233a8b[0x1]};_0x44796d={'url':_0x46fcd9+_0x5993('0x36'),'method':_0x5993('0x37'),'headers':{'user_key':_0x3c840b[_0x5993('0x38')],'Session_key':_0x3c840b[_0x5993('0x39')]},'json':!![],'body':_0x4c96c8};return rp(_0x44796d);})[_0x5993('0x15')](function(_0x3cf7a0){if(_0x3cf7a0[_0x5993('0x3a')]>=0x1){var _0xd247f1={'messageId':_0x3cf7a0[_0x5993('0x3b')]};if(_0x35e6f9['smsMethod']!=='GP'||!_0x35e6f9[_0x5993('0x3c')]){_0xd247f1[_0x5993('0x3d')]=!![];}return _0x3edea2[_0x5993('0x16')](_0xd247f1);}else{return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'skebby',util[_0x5993('0x2b')](_0x3cf7a0,{'showHidden':![],'depth':null}));}})[_0x5993('0x19')](function(_0x439726){return logger['error'](_0x5993('0x29'),'afterCreate',_0x5993('0x2d'),util[_0x5993('0x2b')](_0x439726,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x5993('0x29'),'afterCreate','skebby',_0x5993('0x3e'));}break;case'connectel':if(_0x35e6f9[_0x5993('0x3f')]){var _0x22d033={'recipient':_0x5a8993[_0x5993('0x20')],'message':_0x5a8993[_0x5993('0x23')],'sender':_0x35e6f9[_0x5993('0x40')]||_0x35e6f9[_0x5993('0x20')],'authorization':_0x35e6f9[_0x5993('0x3f')]};var _0x281d90={'method':_0x5993('0x37'),'uri':_0x5993('0x41'),'body':_0x22d033,'json':!![]};rp(_0x281d90)[_0x5993('0x15')](function(_0x47990c){var _0x2e57d8={'messageId':_0x47990c[_0x5993('0x42')]};if(!_0x35e6f9[_0x5993('0x3c')]){_0x2e57d8[_0x5993('0x3d')]=!![];}return _0x3edea2[_0x5993('0x16')](_0x2e57d8);})[_0x5993('0x19')](function(_0x40aee9){logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x43'),util['inspect'](_0x40aee9,{'showHidden':![],'depth':null}));});}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x43'),_0x5993('0x44'));}break;case _0x5993('0x45'):if(_0x35e6f9[_0x5993('0x32')]&&_0x35e6f9[_0x5993('0x2e')]){var _0x22d033={'messages':[{'source':_0x5993('0x46'),'to':_0x5a8993[_0x5993('0x20')],'body':_0x5a8993['body'],'from':_0x35e6f9[_0x5993('0x40')]||_0x35e6f9['phone']}]};var _0x36e0a0=util['format'](_0x5993('0x47'),_0x35e6f9[_0x5993('0x32')],_0x35e6f9['password']);var _0x281d90={'method':_0x5993('0x37'),'uri':_0x5993('0x48'),'body':_0x22d033,'headers':{'Authorization':util[_0x5993('0x49')](_0x5993('0x4a'),new Buffer(_0x36e0a0)['toString'](_0x5993('0x4b')))},'json':!![]};rp(_0x281d90)[_0x5993('0x15')](function(_0x25c5e1){if(_0x25c5e1[_0x5993('0x4c')]>=0xc8&&_0x25c5e1[_0x5993('0x4c')]<=0xce){if(_0x25c5e1[_0x5993('0x4d')]&&_0x25c5e1[_0x5993('0x4d')][_0x5993('0x4e')]>0x0){var _0x5cd973=_['head'](_0x25c5e1['data'][_0x5993('0x21')]);var _0x50c99d={'messageId':_0x5cd973['message_id']};if(!_0x35e6f9[_0x5993('0x3c')]){_0x50c99d['read']=!![];}return _0x3edea2[_0x5993('0x16')](_0x50c99d);}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'clickSend',util[_0x5993('0x2b')](_0x25c5e1,{'showHidden':![],'depth':null}));}}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x4f'),util[_0x5993('0x2b')](_0x25c5e1,{'showHidden':![],'depth':null}));}})['catch'](function(_0x592600){logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'clickSend',util['inspect'](_0x592600,{'showHidden':![],'depth':null}));});}else{logger[_0x5993('0x28')](_0x5993('0x29'),'afterCreate',_0x5993('0x4f'),_0x5993('0x3e'));}break;case'plivo':if(_0x35e6f9[_0x5993('0x50')]&&_0x35e6f9[_0x5993('0x3f')]){var _0x22d033={'dst':_0x5a8993['phone'],'text':_0x5a8993[_0x5993('0x23')],'src':_0x35e6f9['senderString']||_0x35e6f9[_0x5993('0x20')],'url':_0x35e6f9[_0x5993('0x24')]+_0x5993('0x25')+_0x5a8993['id']+_0x5993('0x26')+_0x35e6f9[_0x5993('0x27')]};var _0x36e0a0=util[_0x5993('0x49')]('%s:%s',_0x35e6f9[_0x5993('0x50')],_0x35e6f9[_0x5993('0x3f')]);var _0x281d90={'method':_0x5993('0x37'),'uri':util['format']('https://api.plivo.com/v1/Account/%s/Message/',_0x35e6f9['authId']),'body':_0x22d033,'headers':{'Authorization':util[_0x5993('0x49')]('Basic\x20%s',new Buffer(_0x36e0a0)[_0x5993('0x51')]('base64'))},'json':!![]};rp(_0x281d90)[_0x5993('0x15')](function(_0x639da1){var _0x27596d={'messageId':_0x639da1[_0x5993('0x52')][0x0]};return _0x3edea2[_0x5993('0x16')](_0x27596d);})[_0x5993('0x19')](function(_0x43df4e){logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x53'),util['inspect'](_0x43df4e,{'showHidden':![],'depth':null}));});}else{logger[_0x5993('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x5993('0x2a'),'plivo','Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x5993('0x54'):if(_0x35e6f9[_0x5993('0x32')]&&_0x35e6f9['password']){if(_0x35e6f9[_0x5993('0x55')]){var _0x2251fb={'method':_0x5993('0x37'),'uri':_0x35e6f9['baseUrl']+_0x5993('0x56'),'body':{'username':_0x35e6f9['username'],'password':_0x35e6f9[_0x5993('0x2e')]},'json':!![]};return rp(_0x2251fb)[_0x5993('0x15')](function(_0x59c2bf){var _0x3607a7={'method':_0x5993('0x37'),'uri':_0x35e6f9['baseUrl']+_0x5993('0x57'),'body':{'messages':[{'from':_0x35e6f9[_0x5993('0x20')],'destinations':[{'to':_0x5a8993[_0x5993('0x20')]}],'text':_0x5a8993['body'],'notifyUrl':_0x35e6f9[_0x5993('0x24')]+_0x5993('0x25')+_0x5a8993['id']+_0x5993('0x26')+_0x35e6f9[_0x5993('0x27')],'notifyContentType':_0x5993('0x58'),'callbackData':_0x35e6f9[_0x5993('0x20')]+';'+_0x5a8993['body']}]},'headers':{'Authorization':'IBSSO\x20'+_0x59c2bf[_0x5993('0x27')]},'json':!![]};return rp(_0x3607a7)[_0x5993('0x15')](function(_0x55d896){if(_0x55d896['messages']){var _0x2a51af={'messageId':_0x55d896[_0x5993('0x21')][0x0][_0x5993('0x9')]};if(!_0x35e6f9[_0x5993('0x3c')]){_0x2a51af[_0x5993('0x3d')]=!![];}return _0x3edea2[_0x5993('0x16')](_0x2a51af);}else{return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'infobip',util[_0x5993('0x2b')](_0x55d896,{'showHidden':![],'depth':null}));}});})[_0x5993('0x19')](function(_0x1b5ef8){return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x54'),util[_0x5993('0x2b')](_0x1b5ef8,{'showHidden':![],'depth':null}));});}else{logger[_0x5993('0x28')](_0x5993('0x29'),'afterCreate','infobip',_0x5993('0x59'));}}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x54'),_0x5993('0x3e'));}break;case _0x5993('0x5a'):var _0x254bc0=require('crypto');if(_0x35e6f9[_0x5993('0x5b')]){var _0x2a3037={};_0x2a3037[_0x5993('0x5c')]=_0x35e6f9[_0x5993('0x32')];_0x2a3037['phone']=_0x5a8993['phone'];_0x2a3037[_0x5993('0x30')]=_0x35e6f9['phone'];_0x2a3037[_0x5993('0x5d')]=_0x5a8993[_0x5993('0x23')];_0x2a3037['timestamp']=+new Date();var _0x53846d='';var _0xce93bb='';var _0x57b7eb=Object['keys'](_0x2a3037);_0x57b7eb[_0x5993('0x5e')]();for(var _0x1a8566=0x0;_0x1a8566<_0x57b7eb[_0x5993('0x5f')];_0x1a8566++){if(_0x53846d!=''){_0x53846d+='&';}_0x53846d+=_0x57b7eb[_0x1a8566]+'='+encodeURIComponent(_0x2a3037[_0x57b7eb[_0x1a8566]]);_0xce93bb+=_0x2a3037[_0x57b7eb[_0x1a8566]];}_0xce93bb+=_0x35e6f9[_0x5993('0x5b')];_0xce93bb=_0x254bc0['createHash']('md5')[_0x5993('0x16')](_0xce93bb)[_0x5993('0x60')]('hex');if(_0x53846d!==''){_0x53846d+='&';}_0x53846d+=_0x5993('0x61')+_0xce93bb;var _0x44796d={'method':_0x5993('0x34'),'uri':_0x35e6f9['baseUrl']+_0x5993('0x62')+_0x53846d,'json':!![]};return rp(_0x44796d)[_0x5993('0x15')](function(_0x303745){var _0x37a554=Object[_0x5993('0x63')](_0x303745);if(_0x303745[_0x37a554[0x0]][_0x5993('0x28')]&&parseInt(_0x303745[_0x37a554[0x0]][_0x5993('0x28')])===0x0){var _0x255c91={'messageId':_0x303745[_0x37a554[0x0]]['id_sms']};if(!_0x35e6f9['deliveryReport']){_0x255c91[_0x5993('0x3d')]=!![];}return _0x3edea2[_0x5993('0x16')](_0x255c91);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x5993('0x2a'),'csc',util[_0x5993('0x2b')](_0x303745[_0x5993('0x28')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x2178ca){return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x5a'),util[_0x5993('0x2b')](_0x2178ca,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x5a'),_0x5993('0x64'));}break;case'clickatell':if(_0x35e6f9[_0x5993('0x5b')]){var _0x1ebbfd={'method':_0x5993('0x37'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x35e6f9[_0x5993('0x5b')]},'body':{'content':_0x5a8993[_0x5993('0x23')],'to':[_0x5a8993[_0x5993('0x20')]],'from':_0x35e6f9[_0x5993('0x20')],'binary':![],'clientMessageId':_0x5993('0x65'),'charset':_0x5993('0x66')},'json':!![]};rp(_0x1ebbfd)[_0x5993('0x15')](function(_0x36f15e){if(!_0x36f15e[_0x5993('0x28')]){var _0x5acbb0={'messageId':_0x36f15e[_0x5993('0x21')][0x0][_0x5993('0x67')]};if(!_0x35e6f9[_0x5993('0x3c')]){_0x5acbb0[_0x5993('0x3d')]=!![];}return _0x3edea2[_0x5993('0x16')](_0x5acbb0);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x5993('0x68'),util[_0x5993('0x2b')](_0x36f15e['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x4b8c9c){return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x68'),util[_0x5993('0x2b')](_0x4b8c9c,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x68'),_0x5993('0x64'));}break;case _0x5993('0x69'):if(_0x35e6f9[_0x5993('0x32')]&&_0x35e6f9['password']){var _0x36e0a0=util[_0x5993('0x49')](_0x5993('0x47'),_0x35e6f9[_0x5993('0x32')],_0x35e6f9[_0x5993('0x2e')]);var _0x281d90={'method':_0x5993('0x37'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x35e6f9[_0x5993('0x6a')]+_0x5993('0x6b'),'body':{'to':[_0x5a8993[_0x5993('0x20')]],'text':_0x5a8993[_0x5993('0x23')],'from':_0x35e6f9['phone'],'applicationId':_0x35e6f9[_0x5993('0x6c')]},'headers':{'Authorization':util['format'](_0x5993('0x4a'),new Buffer(_0x36e0a0)[_0x5993('0x51')](_0x5993('0x4b')))},'json':!![]};rp(_0x281d90)['then'](function(_0x567de3){if(_0x567de3['id']){var _0x33b15e={'messageId':_0x567de3['id']};return _0x3edea2[_0x5993('0x16')](_0x33b15e);}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x69'),util[_0x5993('0x2b')](_0x567de3,{'showHidden':![],'depth':null}));}})[_0x5993('0x19')](function(_0x48a261){logger['error'](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x69'),util[_0x5993('0x2b')](_0x48a261,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x5993('0x2a'),_0x5993('0x69'),_0x5993('0x3e'));}break;case _0x5993('0x6d'):if(_0x35e6f9[_0x5993('0x5b')]){var _0x565aa4={};var _0x44796d={'method':_0x5993('0x37'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x5993('0x6e')+_0x35e6f9[_0x5993('0x5b')],'Content-Type':_0x5993('0x58')},'body':{'from':_0x35e6f9['phone'],'to':_0x5a8993[_0x5993('0x20')],'text':_0x5a8993[_0x5993('0x23')]},'json':!![]};return rp(_0x44796d)[_0x5993('0x15')](function(_0x36fb7d){if(_0x36fb7d['code']==0xca){_0x565aa4[_0x5993('0x6f')]=_0x36fb7d;var _0x2734e0={'method':'POST','uri':_0x5993('0x70'),'headers':{'Authorization':_0x5993('0x6e')+_0x35e6f9[_0x5993('0x5b')],'Content-Type':'application/json'},'body':{'refid':_0x565aa4[_0x5993('0x6f')][_0x5993('0x71')]},'json':!![]};return rp(_0x2734e0)[_0x5993('0x15')](function(_0x3ca1ea){_0x565aa4[_0x5993('0x72')]=_0x3ca1ea;var _0x18b1ba={'messageId':_0x565aa4[_0x5993('0x6f')][_0x5993('0x71')],'read':!![]};return _0x3edea2[_0x5993('0x16')](_0x18b1ba);});}else{return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x6d'),util[_0x5993('0x2b')](_0x36fb7d,{'showHidden':![],'depth':null}));}})[_0x5993('0x19')](function(_0x5cd6a0){return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x6d'),util[_0x5993('0x2b')](_0x5cd6a0,{'showHidden':![],'depth':null}));});}else{return logger[_0x5993('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x5993('0x2a'),'intelepeer',_0x5993('0x73'));}break;}}})[_0x5993('0x74')](function(){_0x4dac07();});}else{_0x4dac07();}}},'charset':'utf8mb4','collate':_0x5993('0x75')});};
\ No newline at end of file
index 69a90ae..f8d94ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e16=['debug','error','SmsMessage,\x20%s,\x20%s','message','result','SmsMessage','create','body','options','raw','CreateSmsMessage','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','then','info','request\x20sent'];(function(_0x508dc5,_0x1aa23c){var _0x403554=function(_0x25d1ac){while(--_0x25d1ac){_0x508dc5['push'](_0x508dc5['shift']());}};_0x403554(++_0x1aa23c);}(_0x4e16,0xba));var _0x64e1=function(_0x1409f2,_0x3dc2a3){_0x1409f2=_0x1409f2-0x0;var _0x30db32=_0x4e16[_0x1409f2];return _0x30db32;};'use strict';var _=require(_0x64e1('0x0'));var util=require(_0x64e1('0x1'));var moment=require(_0x64e1('0x2'));var BPromise=require(_0x64e1('0x3'));var rs=require(_0x64e1('0x4'));var fs=require('fs');var Redis=require(_0x64e1('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x64e1('0x6'));var logger=require('../../config/logger')(_0x64e1('0x7'));var config=require('../../config/environment');var jayson=require(_0x64e1('0x8'));var client=jayson[_0x64e1('0x9')][_0x64e1('0xa')]({'port':0x232a});config[_0x64e1('0xb')]=_[_0x64e1('0xc')](config[_0x64e1('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x64e1('0xd'))(new Redis(config[_0x64e1('0xb')]));require('./smsMessage.socket')['register'](socket);function respondWithRpcPromise(_0x29e16a,_0xd2cf5a,_0x1c809a){return new BPromise(function(_0x42a4b9,_0x2d8786){return client['request'](_0x29e16a,_0x1c809a)[_0x64e1('0xe')](function(_0x387cbc){logger[_0x64e1('0xf')]('SmsMessage,\x20%s,\x20%s',_0xd2cf5a,_0x64e1('0x10'));logger[_0x64e1('0x11')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd2cf5a,_0x64e1('0x10'),JSON['stringify'](_0x387cbc));if(_0x387cbc[_0x64e1('0x12')]){if(_0x387cbc[_0x64e1('0x12')]['code']===0x1f4){logger[_0x64e1('0x12')](_0x64e1('0x13'),_0xd2cf5a,_0x387cbc[_0x64e1('0x12')][_0x64e1('0x14')]);return _0x2d8786(_0x387cbc[_0x64e1('0x12')]['message']);}logger[_0x64e1('0x12')]('SmsMessage,\x20%s,\x20%s',_0xd2cf5a,_0x387cbc[_0x64e1('0x12')][_0x64e1('0x14')]);return _0x42a4b9(_0x387cbc['error'][_0x64e1('0x14')]);}else{logger[_0x64e1('0xf')](_0x64e1('0x13'),_0xd2cf5a,_0x64e1('0x10'));_0x42a4b9(_0x387cbc[_0x64e1('0x15')][_0x64e1('0x14')]);}})['catch'](function(_0x48b721){logger[_0x64e1('0x12')](_0x64e1('0x13'),_0xd2cf5a,_0x48b721);_0x2d8786(_0x48b721);});});}exports['CreateSmsMessage']=function(_0x3a1b64){var _0x2129b5=this;return new Promise(function(_0x851666,_0x3ab48a){return db[_0x64e1('0x16')][_0x64e1('0x17')](_0x3a1b64[_0x64e1('0x18')],{'raw':_0x3a1b64[_0x64e1('0x19')]?_0x3a1b64[_0x64e1('0x19')][_0x64e1('0x1a')]===undefined?!![]:![]:!![]})[_0x64e1('0xe')](function(_0x4a18eb){logger[_0x64e1('0xf')](_0x64e1('0x1b'),_0x3a1b64);logger['debug'](_0x64e1('0x1b'),_0x3a1b64,JSON[_0x64e1('0x1c')](_0x4a18eb));_0x851666(_0x4a18eb);})['catch'](function(_0x32ec73){logger[_0x64e1('0x12')](_0x64e1('0x1b'),_0x32ec73[_0x64e1('0x14')],_0x3a1b64);_0x3ab48a(_0x2129b5['error'](0x1f4,_0x32ec73[_0x64e1('0x14')]));});});};
\ No newline at end of file
+var _0x3d81=['register','request','then','info','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','socket.io-emitter','redis'];(function(_0x1fa759,_0x4ecdce){var _0x2da9f4=function(_0x463e2a){while(--_0x463e2a){_0x1fa759['push'](_0x1fa759['shift']());}};_0x2da9f4(++_0x4ecdce);}(_0x3d81,0x178));var _0x13d8=function(_0x3e4a41,_0x4685fd){_0x3e4a41=_0x3e4a41-0x0;var _0x21a3e8=_0x3d81[_0x3e4a41];return _0x21a3e8;};'use strict';var _=require(_0x13d8('0x0'));var util=require(_0x13d8('0x1'));var moment=require('moment');var BPromise=require(_0x13d8('0x2'));var rs=require(_0x13d8('0x3'));var fs=require('fs');var Redis=require(_0x13d8('0x4'));var db=require(_0x13d8('0x5'))['db'];var utils=require(_0x13d8('0x6'));var logger=require(_0x13d8('0x7'))('rpc');var config=require(_0x13d8('0x8'));var jayson=require(_0x13d8('0x9'));var client=jayson['client'][_0x13d8('0xa')]({'port':0x232a});config['redis']=_[_0x13d8('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x13d8('0xc'))(new Redis(config[_0x13d8('0xd')]));require('./smsMessage.socket')[_0x13d8('0xe')](socket);function respondWithRpcPromise(_0x4ea336,_0x41744a,_0x4bfa9b){return new BPromise(function(_0x48e9ff,_0x1a65e9){return client[_0x13d8('0xf')](_0x4ea336,_0x4bfa9b)[_0x13d8('0x10')](function(_0x602b40){logger[_0x13d8('0x11')]('SmsMessage,\x20%s,\x20%s',_0x41744a,_0x13d8('0x12'));logger['debug'](_0x13d8('0x13'),_0x41744a,_0x13d8('0x12'),JSON[_0x13d8('0x14')](_0x602b40));if(_0x602b40['error']){if(_0x602b40[_0x13d8('0x15')][_0x13d8('0x16')]===0x1f4){logger['error']('SmsMessage,\x20%s,\x20%s',_0x41744a,_0x602b40['error']['message']);return _0x1a65e9(_0x602b40['error']['message']);}logger['error'](_0x13d8('0x17'),_0x41744a,_0x602b40['error'][_0x13d8('0x18')]);return _0x48e9ff(_0x602b40['error'][_0x13d8('0x18')]);}else{logger[_0x13d8('0x11')](_0x13d8('0x17'),_0x41744a,_0x13d8('0x12'));_0x48e9ff(_0x602b40[_0x13d8('0x19')]['message']);}})[_0x13d8('0x1a')](function(_0x5d5bb7){logger[_0x13d8('0x15')]('SmsMessage,\x20%s,\x20%s',_0x41744a,_0x5d5bb7);_0x1a65e9(_0x5d5bb7);});});}exports[_0x13d8('0x1b')]=function(_0x142f41){var _0x9ddd2b=this;return new Promise(function(_0x1f70be,_0x38012a){return db['SmsMessage']['create'](_0x142f41['body'],{'raw':_0x142f41[_0x13d8('0x1c')]?_0x142f41[_0x13d8('0x1c')][_0x13d8('0x1d')]===undefined?!![]:![]:!![]})[_0x13d8('0x10')](function(_0x5d7ba0){logger['info'](_0x13d8('0x1b'),_0x142f41);logger['debug'](_0x13d8('0x1b'),_0x142f41,JSON['stringify'](_0x5d7ba0));_0x1f70be(_0x5d7ba0);})[_0x13d8('0x1a')](function(_0x37e796){logger[_0x13d8('0x15')](_0x13d8('0x1b'),_0x37e796['message'],_0x142f41);_0x38012a(_0x9ddd2b[_0x13d8('0x15')](0x1f4,_0x37e796['message']));});});};
\ No newline at end of file
index 8ae2beb..e5db678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae0b=['remove','register','smsMessage:','./smsMessage.events','save'];(function(_0x5a42cb,_0x4998cb){var _0x29a905=function(_0x48b6ba){while(--_0x48b6ba){_0x5a42cb['push'](_0x5a42cb['shift']());}};_0x29a905(++_0x4998cb);}(_0xae0b,0x94));var _0xbae0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xae0b[_0x3dd15e];return _0x231fd0;};'use strict';var SmsMessageEvents=require(_0xbae0('0x0'));var events=[_0xbae0('0x1'),_0xbae0('0x2'),'update'];function createListener(_0x3f287c,_0x5bbf0c){return function(_0x58ba98){_0x5bbf0c['emit'](_0x3f287c,_0x58ba98);};}function removeListener(_0x45e84c,_0x472884){return function(){SmsMessageEvents['removeListener'](_0x45e84c,_0x472884);};}exports[_0xbae0('0x3')]=function(_0x45face){for(var _0x3e5bc0=0x0,_0x4d7093=events['length'];_0x3e5bc0<_0x4d7093;_0x3e5bc0++){var _0x3144ef=events[_0x3e5bc0];var _0x494c09=createListener(_0xbae0('0x4')+_0x3144ef,_0x45face);SmsMessageEvents['on'](_0x3144ef,_0x494c09);}};
\ No newline at end of file
+var _0x1098=['./smsMessage.events','save','remove','update','emit','removeListener','register','length','smsMessage:'];(function(_0x306018,_0x27a09a){var _0x211343=function(_0x1dd7ab){while(--_0x1dd7ab){_0x306018['push'](_0x306018['shift']());}};_0x211343(++_0x27a09a);}(_0x1098,0xa2));var _0x8109=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1098[_0x3dd15e];return _0x231fd0;};'use strict';var SmsMessageEvents=require(_0x8109('0x0'));var events=[_0x8109('0x1'),_0x8109('0x2'),_0x8109('0x3')];function createListener(_0x566ef4,_0x1b672c){return function(_0x167a74){_0x1b672c[_0x8109('0x4')](_0x566ef4,_0x167a74);};}function removeListener(_0x3f32e3,_0x1217f6){return function(){SmsMessageEvents[_0x8109('0x5')](_0x3f32e3,_0x1217f6);};}exports[_0x8109('0x6')]=function(_0x5262b2){for(var _0x170d69=0x0,_0x608c62=events[_0x8109('0x7')];_0x170d69<_0x608c62;_0x170d69++){var _0x4b8581=events[_0x170d69];var _0x5f32fc=createListener(_0x8109('0x8')+_0x4b8581,_0x5262b2);SmsMessageEvents['on'](_0x4b8581,_0x5f32fc);}};
\ No newline at end of file
index a75acd3..7140d4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca4b=['removeAgents','multer','util','path','connect-timeout','express','../../components/interaction/service','./smsQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/members','/:id/teams','getAgents','post','create','addTeams','/:id/users','addAgents','put','destroy','removeTeams'];(function(_0x3d3082,_0x389bbf){var _0x1e7f66=function(_0x543aeb){while(--_0x543aeb){_0x3d3082['push'](_0x3d3082['shift']());}};_0x1e7f66(++_0x389bbf);}(_0xca4b,0x69));var _0xbca4=function(_0x47698c,_0x3be6d0){_0x47698c=_0x47698c-0x0;var _0x32539a=_0xca4b[_0x47698c];return _0x32539a;};'use strict';var multer=require(_0xbca4('0x0'));var util=require(_0xbca4('0x1'));var path=require(_0xbca4('0x2'));var timeout=require(_0xbca4('0x3'));var express=require(_0xbca4('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbca4('0x5'));var config=require('../../config/environment');var controller=require(_0xbca4('0x6'));router[_0xbca4('0x7')]('/',auth['isAuthenticated'](),controller[_0xbca4('0x8')]);router['get'](_0xbca4('0x9'),auth[_0xbca4('0xa')](),controller[_0xbca4('0xb')]);router[_0xbca4('0x7')](_0xbca4('0xc'),auth[_0xbca4('0xa')](),controller[_0xbca4('0xd')]);router['get'](_0xbca4('0xe'),auth[_0xbca4('0xa')](),controller['getMembers']);router[_0xbca4('0x7')](_0xbca4('0xf'),auth[_0xbca4('0xa')](),controller['getTeams']);router[_0xbca4('0x7')]('/:id/users',auth['isAuthenticated'](),controller[_0xbca4('0x10')]);router[_0xbca4('0x11')]('/',auth[_0xbca4('0xa')](),controller[_0xbca4('0x12')]);router[_0xbca4('0x11')](_0xbca4('0xf'),auth[_0xbca4('0xa')](),controller[_0xbca4('0x13')]);router[_0xbca4('0x11')](_0xbca4('0x14'),auth[_0xbca4('0xa')](),controller[_0xbca4('0x15')]);router[_0xbca4('0x16')](_0xbca4('0xc'),auth[_0xbca4('0xa')](),controller['update']);router['delete'](_0xbca4('0xc'),auth['isAuthenticated'](),controller[_0xbca4('0x17')]);router['delete'](_0xbca4('0xf'),auth[_0xbca4('0xa')](),controller[_0xbca4('0x18')]);router['delete'](_0xbca4('0x14'),auth[_0xbca4('0xa')](),controller[_0xbca4('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x2ba7=['getMembers','getTeams','/:id/users','getAgents','post','/:id/teams','addTeams','addAgents','put','update','destroy','delete','removeAgents','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','/:id'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x2ba7,0x8b));var _0x72ba=function(_0x2f65e1,_0x38de8a){_0x2f65e1=_0x2f65e1-0x0;var _0x23288e=_0x2ba7[_0x2f65e1];return _0x23288e;};'use strict';var multer=require(_0x72ba('0x0'));var util=require('util');var path=require(_0x72ba('0x1'));var timeout=require('connect-timeout');var express=require(_0x72ba('0x2'));var router=express['Router']();var fs_extra=require(_0x72ba('0x3'));var auth=require(_0x72ba('0x4'));var interaction=require(_0x72ba('0x5'));var config=require('../../config/environment');var controller=require('./smsQueue.controller');router[_0x72ba('0x6')]('/',auth[_0x72ba('0x7')](),controller[_0x72ba('0x8')]);router[_0x72ba('0x6')]('/describe',auth['isAuthenticated'](),controller[_0x72ba('0x9')]);router[_0x72ba('0x6')](_0x72ba('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x72ba('0x6')]('/:id/members',auth[_0x72ba('0x7')](),controller[_0x72ba('0xb')]);router[_0x72ba('0x6')]('/:id/teams',auth[_0x72ba('0x7')](),controller[_0x72ba('0xc')]);router[_0x72ba('0x6')](_0x72ba('0xd'),auth[_0x72ba('0x7')](),controller[_0x72ba('0xe')]);router[_0x72ba('0xf')]('/',auth[_0x72ba('0x7')](),controller['create']);router[_0x72ba('0xf')](_0x72ba('0x10'),auth['isAuthenticated'](),controller[_0x72ba('0x11')]);router[_0x72ba('0xf')](_0x72ba('0xd'),auth[_0x72ba('0x7')](),controller[_0x72ba('0x12')]);router[_0x72ba('0x13')]('/:id',auth[_0x72ba('0x7')](),controller[_0x72ba('0x14')]);router['delete'](_0x72ba('0xa'),auth[_0x72ba('0x7')](),controller[_0x72ba('0x15')]);router[_0x72ba('0x16')](_0x72ba('0x10'),auth[_0x72ba('0x7')](),controller['removeTeams']);router[_0x72ba('0x16')](_0x72ba('0xd'),auth[_0x72ba('0x7')](),controller[_0x72ba('0x17')]);module[_0x72ba('0x18')]=router;
\ No newline at end of file
index 5686d81..d68d33d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf639=['sequelize','exports','STRING','ENUM','rrmemory','beepall'];(function(_0x446f11,_0x95cf21){var _0x385cb5=function(_0x426715){while(--_0x426715){_0x446f11['push'](_0x446f11['shift']());}};_0x385cb5(++_0x95cf21);}(_0xf639,0x144));var _0x9f63=function(_0x356196,_0x3f914d){_0x356196=_0x356196-0x0;var _0x26533e=_0xf639[_0x356196];return _0x26533e;};'use strict';var Sequelize=require(_0x9f63('0x0'));module[_0x9f63('0x1')]={'name':{'type':Sequelize[_0x9f63('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x9f63('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9f63('0x3')](_0x9f63('0x4'),_0x9f63('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0x7282=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','STRING','name'];(function(_0x19cbde,_0x4f8b31){var _0x1da364=function(_0x26c4dd){while(--_0x26c4dd){_0x19cbde['push'](_0x19cbde['shift']());}};_0x1da364(++_0x4f8b31);}(_0x7282,0x95));var _0x2728=function(_0x42e6e7,_0x4ee4f6){_0x42e6e7=_0x42e6e7-0x0;var _0x32909b=_0x7282[_0x42e6e7];return _0x32909b;};'use strict';var Sequelize=require(_0x2728('0x0'));module['exports']={'name':{'type':Sequelize[_0x2728('0x1')],'unique':_0x2728('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x2728('0x1')]},'timeout':{'type':Sequelize[_0x2728('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2728('0x4')](_0x2728('0x5'),_0x2728('0x6'),_0x2728('0x7'))}};
\ No newline at end of file
index 0564c02..badad84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','get','SmsQueues','UserProfileResource','error','stack','name','map','SmsQueue','rawAttributes','type','key','getOptions','where','include','findAll','rows','show','params','model','keys','query','filters','intersection','attributes','fields','includeAll','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserSmsQueue','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','User','Agents','online','voicePause','interface','flatMap','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','field','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','sequelize','transaction','isEmpty','removeAgents','addAgents','omit','spread','isArray','userSmsQueue:remove','getAgents','bluebird','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','api'];(function(_0xcb0eb2,_0x3906bf){var _0xbab9b8=function(_0x24fa8a){while(--_0x24fa8a){_0xcb0eb2['push'](_0xcb0eb2['shift']());}};_0xbab9b8(++_0x3906bf);}(_0x5f2f,0x73));var _0xf5f2=function(_0x44bb75,_0x1ce3d2){_0x44bb75=_0x44bb75-0x0;var _0x39dbc8=_0x5f2f[_0x44bb75];return _0x39dbc8;};'use strict';var BPromise=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var _=require(_0xf5f2('0x2'));var squel=require(_0xf5f2('0x3'));var Redis=require(_0xf5f2('0x4'));var qs=require(_0xf5f2('0x5'));var logger=require(_0xf5f2('0x6'))(_0xf5f2('0x7'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0xf5f2('0x8')]=_[_0xf5f2('0x9')](config[_0xf5f2('0x8')],{'host':_0xf5f2('0xa'),'port':0x18eb});var socket=require(_0xf5f2('0xb'))(new Redis(config[_0xf5f2('0x8')]));require('./smsQueue.socket')[_0xf5f2('0xc')](socket);function respondWithStatusCode(_0x46cd9c,_0x2ec345){_0x2ec345=_0x2ec345||0xcc;return function(_0x56a69f){if(_0x56a69f){return _0x46cd9c[_0xf5f2('0xd')](_0x2ec345);}return _0x46cd9c[_0xf5f2('0xe')](_0x2ec345)[_0xf5f2('0xf')]();};}function respondWithResult(_0x4e0e6b,_0x977a59){_0x977a59=_0x977a59||0xc8;return function(_0x4ebbbe){if(_0x4ebbbe){return _0x4e0e6b['status'](_0x977a59)[_0xf5f2('0x10')](_0x4ebbbe);}};}function respondWithFilteredResult(_0x151aba,_0x4b78cd){return function(_0x336f6b){if(_0x336f6b){var _0x14b51f=typeof _0x4b78cd[_0xf5f2('0x11')]===_0xf5f2('0x12')&&typeof _0x4b78cd[_0xf5f2('0x13')]===_0xf5f2('0x12');var _0x5c01b8=_0x336f6b[_0xf5f2('0x14')];var _0xea612c=_0x14b51f?0x0:_0x4b78cd[_0xf5f2('0x11')];var _0x1c1a5c=_0x14b51f?_0x336f6b[_0xf5f2('0x14')]:_0x4b78cd['offset']+_0x4b78cd[_0xf5f2('0x13')];var _0x286197;if(_0x1c1a5c>=_0x5c01b8){_0x1c1a5c=_0x5c01b8;_0x286197=0xc8;}else{_0x286197=0xce;}_0x151aba[_0xf5f2('0xe')](_0x286197);return _0x151aba[_0xf5f2('0x15')](_0xf5f2('0x16'),_0xea612c+'-'+_0x1c1a5c+'/'+_0x5c01b8)[_0xf5f2('0x10')](_0x336f6b);}return null;};}function saveUpdates(_0xdb61b3){return function(_0x395a5a){if(_0x395a5a){return _0x395a5a[_0xf5f2('0x17')](_0xdb61b3)[_0xf5f2('0x18')](function(_0x20fccd){return _0x20fccd;});}return null;};}function removeEntity(_0x28e097){return function(_0x4ff59b){if(_0x4ff59b){return _0x4ff59b[_0xf5f2('0x19')]()[_0xf5f2('0x18')](function(){var _0x626999=_0x4ff59b[_0xf5f2('0x1a')]({'plain':!![]});var _0x56acc5=_0xf5f2('0x1b');return db[_0xf5f2('0x1c')]['destroy']({'where':{'type':_0x56acc5,'resourceId':_0x626999['id']}})['then'](function(){return _0x4ff59b;});})[_0xf5f2('0x18')](function(){_0x28e097[_0xf5f2('0xe')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45b74f){return function(_0x170042){if(!_0x170042){_0x45b74f[_0xf5f2('0xd')](0x194);}return _0x170042;};}function handleError(_0x39c024,_0x36f1cb){_0x36f1cb=_0x36f1cb||0x1f4;return function(_0x4c691a){logger[_0xf5f2('0x1d')](_0x4c691a[_0xf5f2('0x1e')]);if(_0x4c691a[_0xf5f2('0x1f')]){delete _0x4c691a[_0xf5f2('0x1f')];}_0x39c024[_0xf5f2('0xe')](_0x36f1cb)['send'](_0x4c691a);};}exports['index']=function(_0x5f1124,_0x3f79d5){var _0x13da6f={};var _0x1a5bb3={'count':0x0,'rows':[]};var _0xf6c58d=_[_0xf5f2('0x20')](db[_0xf5f2('0x21')][_0xf5f2('0x22')],function(_0x294414){return{'name':_0x294414['fieldName'],'type':_0x294414[_0xf5f2('0x23')][_0xf5f2('0x24')]};});_0x13da6f=qs[_0xf5f2('0x25')](_0xf6c58d,_0x5f1124);var _0x31bfcb={'where':_0x13da6f[_0xf5f2('0x26')]};return db[_0xf5f2('0x21')]['count'](_0x31bfcb)['then'](function(_0x22c826){_0x1a5bb3[_0xf5f2('0x14')]=_0x22c826;_0x13da6f[_0xf5f2('0x27')]=qs['include'](_0x5f1124['query']);return db[_0xf5f2('0x21')][_0xf5f2('0x28')](_0x13da6f);})[_0xf5f2('0x18')](function(_0x153924){_0x1a5bb3[_0xf5f2('0x29')]=_0x153924;return _0x1a5bb3;})['then'](respondWithFilteredResult(_0x3f79d5,_0x13da6f))['catch'](handleError(_0x3f79d5,null));};exports[_0xf5f2('0x2a')]=function(_0x4e19cb,_0xb744b9){var _0x58a4df={'raw':!![],'where':{'id':_0x4e19cb[_0xf5f2('0x2b')]['id']}},_0x45b643={};_0x45b643[_0xf5f2('0x2c')]=_[_0xf5f2('0x2d')](db[_0xf5f2('0x21')][_0xf5f2('0x22')]);_0x45b643[_0xf5f2('0x2e')]=_[_0xf5f2('0x2d')](_0x4e19cb['query']);_0x45b643[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x45b643[_0xf5f2('0x2c')],_0x45b643[_0xf5f2('0x2e')]);_0x58a4df[_0xf5f2('0x31')]=_[_0xf5f2('0x30')](_0x45b643[_0xf5f2('0x2c')],qs['fields'](_0x4e19cb[_0xf5f2('0x2e')][_0xf5f2('0x32')]));_0x58a4df['attributes']=_0x58a4df[_0xf5f2('0x31')]['length']?_0x58a4df[_0xf5f2('0x31')]:_0x45b643[_0xf5f2('0x2c')];if(_0x4e19cb[_0xf5f2('0x2e')][_0xf5f2('0x33')]){_0x58a4df['include']=[{'all':!![]}];}_0x58a4df=_['merge']({},_0x58a4df,_0x4e19cb[_0xf5f2('0x34')]);return db[_0xf5f2('0x21')][_0xf5f2('0x35')](_0x58a4df)['then'](handleEntityNotFound(_0xb744b9,null))[_0xf5f2('0x18')](respondWithResult(_0xb744b9,null))['catch'](handleError(_0xb744b9,null));};exports[_0xf5f2('0x36')]=function(_0x566c47,_0x46f464){return db[_0xf5f2('0x21')]['create'](_0x566c47[_0xf5f2('0x37')],{})[_0xf5f2('0x18')](function(_0x5a4441){var _0x35f738=_0x566c47['user']['get']({'plain':!![]});if(!_0x35f738)throw new Error(_0xf5f2('0x38'));if(_0x35f738[_0xf5f2('0x39')]===_0xf5f2('0x3a')){var _0x2d4400=_0x5a4441[_0xf5f2('0x1a')]({'plain':!![]});var _0xe62b57=_0xf5f2('0x1b');return db['UserProfileSection'][_0xf5f2('0x35')]({'where':{'name':_0xe62b57,'userProfileId':_0x35f738[_0xf5f2('0x3b')]},'raw':!![]})['then'](function(_0xc6a1ae){if(_0xc6a1ae&&_0xc6a1ae[_0xf5f2('0x3c')]===0x0){return db[_0xf5f2('0x1c')][_0xf5f2('0x36')]({'name':_0x2d4400[_0xf5f2('0x1f')],'resourceId':_0x2d4400['id'],'type':_0xc6a1ae[_0xf5f2('0x1f')],'sectionId':_0xc6a1ae['id']},{})[_0xf5f2('0x18')](function(){return _0x5a4441;});}else{return _0x5a4441;}})[_0xf5f2('0x3d')](function(_0x574f24){logger[_0xf5f2('0x1d')](_0xf5f2('0x3e'),_0x574f24);throw _0x574f24;});}return _0x5a4441;})[_0xf5f2('0x18')](respondWithResult(_0x46f464,0xc9))['catch'](handleError(_0x46f464,null));};exports['update']=function(_0x59eb00,_0x76d21b){if(_0x59eb00[_0xf5f2('0x37')]['id']){delete _0x59eb00['body']['id'];}return db[_0xf5f2('0x21')][_0xf5f2('0x35')]({'where':{'id':_0x59eb00[_0xf5f2('0x2b')]['id']}})[_0xf5f2('0x18')](handleEntityNotFound(_0x76d21b,null))[_0xf5f2('0x18')](saveUpdates(_0x59eb00[_0xf5f2('0x37')],null))[_0xf5f2('0x18')](respondWithResult(_0x76d21b,null))[_0xf5f2('0x3d')](handleError(_0x76d21b,null));};exports[_0xf5f2('0x19')]=function(_0x106062,_0x444317){return db[_0xf5f2('0x21')][_0xf5f2('0x35')]({'where':{'id':_0x106062[_0xf5f2('0x2b')]['id']}})['then'](handleEntityNotFound(_0x444317,null))[_0xf5f2('0x18')](removeEntity(_0x444317,null))['catch'](handleError(_0x444317,null));};exports[_0xf5f2('0x3f')]=function(_0xc04f44,_0x218def){return db[_0xf5f2('0x21')][_0xf5f2('0x3f')]()[_0xf5f2('0x18')](respondWithResult(_0x218def,null))['catch'](handleError(_0x218def,null));};exports[_0xf5f2('0x40')]=function(_0x2e7193,_0x1c1497){var _0x29b108={'raw':!![],'where':{}},_0x12124d={},_0x10753a;return db[_0xf5f2('0x21')][_0xf5f2('0x41')]({'where':{'id':_0x2e7193['params']['id']}})[_0xf5f2('0x18')](handleEntityNotFound(_0x1c1497,null))[_0xf5f2('0x18')](function(_0x45db9a){if(_0x45db9a){_0x10753a=_0x45db9a['get']({'plain':!![]});_0x12124d[_0xf5f2('0x2c')]=_[_0xf5f2('0x2d')](db[_0xf5f2('0x42')]['rawAttributes']);_0x12124d['query']=_[_0xf5f2('0x2d')](_0x2e7193[_0xf5f2('0x2e')]);_0x12124d['filters']=_[_0xf5f2('0x30')](_0x12124d['model'],_0x12124d[_0xf5f2('0x2e')]);_0x29b108['attributes']=_[_0xf5f2('0x30')](_0x12124d['model'],qs[_0xf5f2('0x32')](_0x2e7193[_0xf5f2('0x2e')][_0xf5f2('0x32')]));_0x29b108[_0xf5f2('0x31')]=_0x29b108['attributes'][_0xf5f2('0x43')]?_0x29b108[_0xf5f2('0x31')]:_0x12124d['model'];if(!_0x2e7193['query'][_0xf5f2('0x44')](_0xf5f2('0x45'))){_0x29b108['limit']=qs[_0xf5f2('0x13')](_0x2e7193[_0xf5f2('0x2e')][_0xf5f2('0x13')]);_0x29b108[_0xf5f2('0x11')]=qs['offset'](_0x2e7193['query'][_0xf5f2('0x11')]);}_0x29b108[_0xf5f2('0x46')]=qs['sort'](_0x2e7193[_0xf5f2('0x2e')][_0xf5f2('0x47')]);_0x29b108[_0xf5f2('0x26')]=qs[_0xf5f2('0x2f')](_[_0xf5f2('0x48')](_0x2e7193[_0xf5f2('0x2e')],_0x12124d[_0xf5f2('0x2f')]));_0x29b108['where']['SmsQueueId']=_0x45db9a['id'];if(_0x2e7193[_0xf5f2('0x2e')][_0xf5f2('0x49')]){_0x29b108[_0xf5f2('0x26')]=_[_0xf5f2('0x4a')](_0x29b108[_0xf5f2('0x26')],{'$or':_['map'](_0x29b108[_0xf5f2('0x31')],function(_0x20ba91){var _0x18b124={};_0x18b124[_0x20ba91]={'$like':'%'+_0x2e7193['query'][_0xf5f2('0x49')]+'%'};return _0x18b124;})});}_0x29b108=_['merge']({},_0x29b108,_0x2e7193[_0xf5f2('0x34')]);return db[_0xf5f2('0x42')][_0xf5f2('0x28')](_0x29b108);}})[_0xf5f2('0x18')](function(_0x4afa4d){if(_0x4afa4d){return db['User'][_0xf5f2('0x4b')]({'where':{'id':_['map'](_0x4afa4d,_0xf5f2('0x4c')),'role':_0xf5f2('0x4d')},'attributes':['id','name',_0xf5f2('0x4e'),_0xf5f2('0x4f'),_0xf5f2('0x50')]});}})['then'](function(_0x397b99){if(_0x397b99){return{'count':_0x397b99[_0xf5f2('0x14')],'rows':_[_0xf5f2('0x20')](_0x397b99[_0xf5f2('0x29')],function(_0x51fa7e){return{'membername':_0x51fa7e[_0xf5f2('0x1f')],'UserId':_0x51fa7e['id'],'queue_name':_0x10753a['name'],'SmsQueueId':_0x10753a['id'],'interface':util[_0xf5f2('0x51')](_0xf5f2('0x52'),_0xf5f2('0x53'),_0x51fa7e[_0xf5f2('0x1f')]),'penalty':0x0,'paused':_0x51fa7e[_0xf5f2('0x4e')],'createdAt':_0x51fa7e['createdAt'],'updatedAt':_0x51fa7e[_0xf5f2('0x4f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xf5f2('0x18')](respondWithFilteredResult(_0x1c1497,_0x29b108))[_0xf5f2('0x3d')](handleError(_0x1c1497,null));};exports[_0xf5f2('0x54')]=function(_0x2c5733,_0x5359b5){var _0x31e16b={};var _0x5ee6bc={};var _0x4c96ee;var _0xd4f6ef;return db['SmsQueue'][_0xf5f2('0x41')]({'where':{'id':_0x2c5733[_0xf5f2('0x2b')]['id']}})[_0xf5f2('0x18')](handleEntityNotFound(_0x5359b5,null))[_0xf5f2('0x18')](function(_0x5767fc){if(_0x5767fc){_0x4c96ee=_0x5767fc;_0x5ee6bc[_0xf5f2('0x2c')]=_[_0xf5f2('0x2d')](db[_0xf5f2('0x55')][_0xf5f2('0x22')]);_0x5ee6bc[_0xf5f2('0x2e')]=_[_0xf5f2('0x2d')](_0x2c5733[_0xf5f2('0x2e')]);_0x5ee6bc['filters']=_[_0xf5f2('0x30')](_0x5ee6bc[_0xf5f2('0x2c')],_0x5ee6bc[_0xf5f2('0x2e')]);_0x31e16b[_0xf5f2('0x31')]=_['intersection'](_0x5ee6bc[_0xf5f2('0x2c')],qs['fields'](_0x2c5733[_0xf5f2('0x2e')][_0xf5f2('0x32')]));_0x31e16b['attributes']=_0x31e16b[_0xf5f2('0x31')][_0xf5f2('0x43')]?_0x31e16b[_0xf5f2('0x31')]:_0x5ee6bc[_0xf5f2('0x2c')];_0x31e16b[_0xf5f2('0x46')]=qs['sort'](_0x2c5733[_0xf5f2('0x2e')][_0xf5f2('0x47')]);_0x31e16b[_0xf5f2('0x26')]=qs[_0xf5f2('0x2f')](_[_0xf5f2('0x48')](_0x2c5733[_0xf5f2('0x2e')],_0x5ee6bc['filters']));if(_0x2c5733[_0xf5f2('0x2e')][_0xf5f2('0x49')]){_0x31e16b['where']=_[_0xf5f2('0x4a')](_0x31e16b[_0xf5f2('0x26')],{'$or':_[_0xf5f2('0x20')](_0x31e16b['attributes'],function(_0x551cc9){var _0x4f3df6={};_0x4f3df6[_0x551cc9]={'$like':'%'+_0x2c5733[_0xf5f2('0x2e')][_0xf5f2('0x49')]+'%'};return _0x4f3df6;})});}_0x31e16b=_[_0xf5f2('0x4a')]({},_0x31e16b,_0x2c5733[_0xf5f2('0x34')]);return _0x4c96ee[_0xf5f2('0x54')](_0x31e16b);}})['then'](function(_0x278b76){if(_0x278b76){_0xd4f6ef=_0x278b76[_0xf5f2('0x43')];if(!_0x2c5733[_0xf5f2('0x2e')][_0xf5f2('0x44')](_0xf5f2('0x45'))){_0x31e16b[_0xf5f2('0x13')]=qs[_0xf5f2('0x13')](_0x2c5733[_0xf5f2('0x2e')][_0xf5f2('0x13')]);_0x31e16b[_0xf5f2('0x11')]=qs[_0xf5f2('0x11')](_0x2c5733['query']['offset']);}return _0x4c96ee['getTeams'](_0x31e16b);}})[_0xf5f2('0x18')](function(_0xafba8e){if(_0xafba8e){return _0xafba8e?{'count':_0xd4f6ef,'rows':_0xafba8e}:null;}})[_0xf5f2('0x18')](respondWithResult(_0x5359b5,null))[_0xf5f2('0x3d')](handleError(_0x5359b5,null));};exports[_0xf5f2('0x56')]=function(_0x5c6959,_0x9d943f){var _0x43c732=_0x5c6959[_0xf5f2('0x37')][_0xf5f2('0x57')];return db[_0xf5f2('0x55')]['findAll']({'where':{'id':_0x43c732},'attributes':['id'],'include':[{'model':db[_0xf5f2('0x58')],'as':_0xf5f2('0x59'),'attributes':['id','name',_0xf5f2('0x5a'),_0xf5f2('0x5b'),_0xf5f2('0x5c')],'raw':!![]}]})[_0xf5f2('0x18')](function(_0x588434){if(_0x588434){var _0x40b36e=_[_0xf5f2('0x5d')](_0x588434,function(_0x19602d){var _0x2adeb4=_0x19602d[_0xf5f2('0x1a')]({'plain':!![]});return _0x2adeb4['Agents'];});return db['SmsQueue'][_0xf5f2('0x35')]({'where':{'id':_0x5c6959[_0xf5f2('0x2b')]['id']}})[_0xf5f2('0x18')](function(_0xe3ea1e){return db['sequelize']['transaction'](function(_0x16048e){return _0xe3ea1e['addTeams'](_0x43c732,{'transaction':_0x16048e})['then'](function(){return BPromise['each'](_0x40b36e,function(_0x57cb18){return db[_0xf5f2('0x42')][_0xf5f2('0x5e')]({'where':{'UserId':_0x57cb18['id'],'SmsQueueId':_0x5c6959[_0xf5f2('0x2b')]['id']},'transaction':_0x16048e});});})[_0xf5f2('0x18')](function(){_0x40b36e[_0xf5f2('0x5f')](function(_0x9f941e){socket[_0xf5f2('0x60')](_0xf5f2('0x61'),{'UserId':_0x9f941e['id'],'SmsQueueId':_0xe3ea1e['id']});});});});});}})[_0xf5f2('0x18')](respondWithStatusCode(_0x9d943f,null))[_0xf5f2('0x3d')](handleError(_0x9d943f,null));};exports[_0xf5f2('0x62')]=function(_0x2afeac,_0x1ba503){return db[_0xf5f2('0x55')][_0xf5f2('0x28')]({'where':{'id':_0x2afeac[_0xf5f2('0x2e')][_0xf5f2('0x57')]},'attributes':['id'],'include':[{'model':db[_0xf5f2('0x58')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xf5f2('0x18')](handleEntityNotFound(_0x1ba503,null))[_0xf5f2('0x18')](function(_0x21043b){var _0x2811ad=_[_0xf5f2('0x20')](_0x21043b,'id');var _0x308220=[];var _0x16491c=[];var _0xcf48eb=squel['select']();_0xcf48eb[_0xf5f2('0x63')]('tq.TeamId')['from']('team_has_sms_queues','tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0xf5f2('0x26')](_0xf5f2('0x64'),_0x2afeac[_0xf5f2('0x2b')]['id']);for(var _0x375bc9=0x0;_0x375bc9<_0x21043b[_0xf5f2('0x43')];_0x375bc9+=0x1){let _0x3cf857=_0x21043b[_0x375bc9];for(var _0x5dc63f=0x0;_0x5dc63f<_0x3cf857['Agents'][_0xf5f2('0x43')];_0x5dc63f+=0x1){let _0x578a22=_0x3cf857[_0xf5f2('0x59')][_0x5dc63f];var _0x186fdd=_0xcf48eb['clone']();_0x186fdd['where'](_0xf5f2('0x65'),_0x578a22['id']);_0x16491c[_0xf5f2('0x66')](db['sequelize'][_0xf5f2('0x2e')](_0x186fdd[_0xf5f2('0x67')](),{'type':db['sequelize'][_0xf5f2('0x68')][_0xf5f2('0x69')]})[_0xf5f2('0x18')](function(_0x4c1678){if(_0x4c1678[_0xf5f2('0x43')]===0x1){return _0x578a22['id'];}else{var _0xc28adc=_[_0xf5f2('0x6a')](_[_0xf5f2('0x20')](_0x4c1678,_0xf5f2('0x6b')),function(_0x3e0288){return _[_0xf5f2('0x6c')](_0x2811ad,_0x3e0288);});if(_0xc28adc){return _0x578a22['id'];}}}));}}return BPromise[_0xf5f2('0x6d')](_0x16491c)[_0xf5f2('0x18')](function(_0x3a6f60){_0x308220=_(_0x308220)[_0xf5f2('0x6e')](_0x3a6f60)[_0xf5f2('0x6f')]()[_0xf5f2('0x70')]();return db[_0xf5f2('0x21')][_0xf5f2('0x35')]({'where':{'id':_0x2afeac[_0xf5f2('0x2b')]['id']}})[_0xf5f2('0x18')](function(_0x29a9d4){return db[_0xf5f2('0x71')][_0xf5f2('0x72')](function(_0x800f42){return _0x29a9d4['removeTeams'](_0x2afeac[_0xf5f2('0x2e')][_0xf5f2('0x57')],{'transaction':_0x800f42})['then'](function(){if(!_[_0xf5f2('0x73')](_0x308220)){return _0x29a9d4[_0xf5f2('0x74')](_0x308220,{'transaction':_0x800f42});}})['then'](function(){_0x308220[_0xf5f2('0x5f')](function(_0x2f54eb){socket[_0xf5f2('0x60')]('userSmsQueue:remove',{'UserId':_0x2f54eb,'SmsQueueId':_0x29a9d4['id']});});});});});});})['then'](respondWithStatusCode(_0x1ba503,null))[_0xf5f2('0x3d')](handleError(_0x1ba503,null));};exports[_0xf5f2('0x75')]=function(_0x213ade,_0x5ba275){return db['SmsQueue'][_0xf5f2('0x35')]({'where':{'id':_0x213ade[_0xf5f2('0x2b')]['id']}})[_0xf5f2('0x18')](handleEntityNotFound(_0x5ba275,null))['then'](function(_0x4cde64){if(_0x4cde64){return _0x4cde64['addAgents'](_0x213ade['body']['ids'],_[_0xf5f2('0x76')](_0x213ade['body'],[_0xf5f2('0x57'),'id'])||{})[_0xf5f2('0x77')](function(_0xec3c35){for(var _0x43a167=0x0;_0x43a167<_0x213ade[_0xf5f2('0x37')][_0xf5f2('0x57')][_0xf5f2('0x43')];_0x43a167+=0x1){socket[_0xf5f2('0x60')](_0xf5f2('0x61'),{'UserId':Number(_0x213ade[_0xf5f2('0x37')][_0xf5f2('0x57')][_0x43a167]),'SmsQueueId':Number(_0x213ade[_0xf5f2('0x2b')]['id'])});}return _0xec3c35;});}})[_0xf5f2('0x18')](respondWithResult(_0x5ba275,null))['catch'](handleError(_0x5ba275,null));};exports[_0xf5f2('0x74')]=function(_0x2a4fed,_0x5783e2){return db[_0xf5f2('0x21')][_0xf5f2('0x35')]({'where':{'id':_0x2a4fed['params']['id']}})[_0xf5f2('0x18')](handleEntityNotFound(_0x5783e2,null))[_0xf5f2('0x18')](function(_0x281f61){if(_0x281f61){return _0x281f61['removeAgents'](_0x2a4fed[_0xf5f2('0x2e')][_0xf5f2('0x57')])['then'](function(){if(_[_0xf5f2('0x78')](_0x2a4fed[_0xf5f2('0x2e')][_0xf5f2('0x57')])){for(var _0x517aa8=0x0;_0x517aa8<_0x2a4fed[_0xf5f2('0x2e')]['ids'][_0xf5f2('0x43')];_0x517aa8+=0x1){socket['emit'](_0xf5f2('0x79'),{'UserId':Number(_0x2a4fed[_0xf5f2('0x2e')][_0xf5f2('0x57')][_0x517aa8]),'SmsQueueId':Number(_0x2a4fed[_0xf5f2('0x2b')]['id'])});}}else{socket['emit'](_0xf5f2('0x79'),{'UserId':Number(_0x2a4fed['query']['ids']),'SmsQueueId':Number(_0x2a4fed['params']['id'])});}});}})[_0xf5f2('0x18')](respondWithStatusCode(_0x5783e2,null))[_0xf5f2('0x3d')](handleError(_0x5783e2,null));};exports['getAgents']=function(_0x3c8a1b,_0x15025d){var _0x35790b={};var _0x3962b2={};var _0x28873e;var _0x1fc5ae;return db['SmsQueue'][_0xf5f2('0x41')]({'where':{'id':_0x3c8a1b[_0xf5f2('0x2b')]['id']}})['then'](handleEntityNotFound(_0x15025d,null))[_0xf5f2('0x18')](function(_0x19cbff){if(_0x19cbff){_0x28873e=_0x19cbff;_0x3962b2['model']=_[_0xf5f2('0x2d')](db[_0xf5f2('0x58')][_0xf5f2('0x22')]);_0x3962b2[_0xf5f2('0x2e')]=_[_0xf5f2('0x2d')](_0x3c8a1b[_0xf5f2('0x2e')]);_0x3962b2['filters']=_[_0xf5f2('0x30')](_0x3962b2[_0xf5f2('0x2c')],_0x3962b2[_0xf5f2('0x2e')]);_0x35790b[_0xf5f2('0x31')]=_[_0xf5f2('0x30')](_0x3962b2[_0xf5f2('0x2c')],qs[_0xf5f2('0x32')](_0x3c8a1b[_0xf5f2('0x2e')][_0xf5f2('0x32')]));_0x35790b['attributes']=_0x35790b[_0xf5f2('0x31')][_0xf5f2('0x43')]?_0x35790b[_0xf5f2('0x31')]:_0x3962b2[_0xf5f2('0x2c')];_0x35790b[_0xf5f2('0x46')]=qs[_0xf5f2('0x47')](_0x3c8a1b[_0xf5f2('0x2e')][_0xf5f2('0x47')]);_0x35790b[_0xf5f2('0x26')]=qs[_0xf5f2('0x2f')](_['pick'](_0x3c8a1b['query'],_0x3962b2[_0xf5f2('0x2f')]));if(_0x3c8a1b[_0xf5f2('0x2e')][_0xf5f2('0x49')]){_0x35790b[_0xf5f2('0x26')]=_['merge'](_0x35790b[_0xf5f2('0x26')],{'$or':_[_0xf5f2('0x20')](_0x35790b[_0xf5f2('0x31')],function(_0x3d7f53){var _0x456a1e={};_0x456a1e[_0x3d7f53]={'$like':'%'+_0x3c8a1b['query'][_0xf5f2('0x49')]+'%'};return _0x456a1e;})});}_0x35790b=_[_0xf5f2('0x4a')]({},_0x35790b,_0x3c8a1b['options']);return _0x28873e[_0xf5f2('0x7a')](_0x35790b);}})[_0xf5f2('0x18')](function(_0x2563fa){if(_0x2563fa){_0x1fc5ae=_0x2563fa[_0xf5f2('0x43')];if(!_0x3c8a1b['query'][_0xf5f2('0x44')](_0xf5f2('0x45'))){_0x35790b[_0xf5f2('0x13')]=qs['limit'](_0x3c8a1b['query'][_0xf5f2('0x13')]);_0x35790b[_0xf5f2('0x11')]=qs[_0xf5f2('0x11')](_0x3c8a1b[_0xf5f2('0x2e')][_0xf5f2('0x11')]);}return _0x28873e[_0xf5f2('0x7a')](_0x35790b);}})['then'](function(_0x39dee8){if(_0x39dee8){return _0x39dee8?{'count':_0x1fc5ae,'rows':_0x39dee8}:null;}})['then'](respondWithResult(_0x15025d,null))[_0xf5f2('0x3d')](handleError(_0x15025d,null));};
\ No newline at end of file
+var _0xadb5=['%s/%s','pick','filter','getTeams','addTeams','ids','findAll','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','forEach','userSmsQueue:save','removeTeams','Team','field','tq.TeamId','from','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','find','isEmpty','removeAgents','emit','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','util','squel','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','update','then','destroy','SmsQueues','UserProfileResource','error','stack','name','send','index','SmsQueue','rawAttributes','type','key','getOptions','where','count','include','query','rows','catch','show','model','keys','filters','fields','attributes','length','includeAll','options','create','user','get','role','autoAssociation','body','params','describe','getMembers','findOne','intersection','hasOwnProperty','nolimit','order','sort','SmsQueueId','merge','UserSmsQueue','User','findAndCountAll','map','UserId','agent','smsPause','updatedAt','createdAt','format'];(function(_0x459423,_0x3416a8){var _0x42ed14=function(_0x1d4f69){while(--_0x1d4f69){_0x459423['push'](_0x459423['shift']());}};_0x42ed14(++_0x3416a8);}(_0xadb5,0xad));var _0x5adb=function(_0x31db03,_0x13410c){_0x31db03=_0x31db03-0x0;var _0x5169d2=_0xadb5[_0x31db03];return _0x5169d2;};'use strict';var BPromise=require('bluebird');var util=require(_0x5adb('0x0'));var _=require('lodash');var squel=require(_0x5adb('0x1'));var Redis=require(_0x5adb('0x2'));var qs=require(_0x5adb('0x3'));var logger=require('../../config/logger')(_0x5adb('0x4'));var config=require(_0x5adb('0x5'));var db=require(_0x5adb('0x6'))['db'];config['redis']=_[_0x5adb('0x7')](config[_0x5adb('0x8')],{'host':_0x5adb('0x9'),'port':0x18eb});var socket=require(_0x5adb('0xa'))(new Redis(config[_0x5adb('0x8')]));require(_0x5adb('0xb'))[_0x5adb('0xc')](socket);function respondWithStatusCode(_0x6d1b45,_0x41261c){_0x41261c=_0x41261c||0xcc;return function(_0x7293ab){if(_0x7293ab){return _0x6d1b45[_0x5adb('0xd')](_0x41261c);}return _0x6d1b45[_0x5adb('0xe')](_0x41261c)[_0x5adb('0xf')]();};}function respondWithResult(_0x275428,_0x563d86){_0x563d86=_0x563d86||0xc8;return function(_0x4c268d){if(_0x4c268d){return _0x275428[_0x5adb('0xe')](_0x563d86)[_0x5adb('0x10')](_0x4c268d);}};}function respondWithFilteredResult(_0x82e67e,_0x53b772){return function(_0x29f0d5){if(_0x29f0d5){var _0x56012f=typeof _0x53b772[_0x5adb('0x11')]==='undefined'&&typeof _0x53b772[_0x5adb('0x12')]===_0x5adb('0x13');var _0x44abe3=_0x29f0d5['count'];var _0x2a545b=_0x56012f?0x0:_0x53b772[_0x5adb('0x11')];var _0xf82f72=_0x56012f?_0x29f0d5['count']:_0x53b772[_0x5adb('0x11')]+_0x53b772['limit'];var _0x367d82;if(_0xf82f72>=_0x44abe3){_0xf82f72=_0x44abe3;_0x367d82=0xc8;}else{_0x367d82=0xce;}_0x82e67e[_0x5adb('0xe')](_0x367d82);return _0x82e67e[_0x5adb('0x14')](_0x5adb('0x15'),_0x2a545b+'-'+_0xf82f72+'/'+_0x44abe3)[_0x5adb('0x10')](_0x29f0d5);}return null;};}function saveUpdates(_0x39d24d){return function(_0xa29dc){if(_0xa29dc){return _0xa29dc[_0x5adb('0x16')](_0x39d24d)[_0x5adb('0x17')](function(_0x529b65){return _0x529b65;});}return null;};}function removeEntity(_0x3fff62){return function(_0x5de028){if(_0x5de028){return _0x5de028[_0x5adb('0x18')]()['then'](function(){var _0x3ef465=_0x5de028['get']({'plain':!![]});var _0x5e218c=_0x5adb('0x19');return db[_0x5adb('0x1a')][_0x5adb('0x18')]({'where':{'type':_0x5e218c,'resourceId':_0x3ef465['id']}})[_0x5adb('0x17')](function(){return _0x5de028;});})[_0x5adb('0x17')](function(){_0x3fff62['status'](0xcc)[_0x5adb('0xf')]();});}};}function handleEntityNotFound(_0x5c296e){return function(_0x4e9f16){if(!_0x4e9f16){_0x5c296e[_0x5adb('0xd')](0x194);}return _0x4e9f16;};}function handleError(_0x379b33,_0x1a38d3){_0x1a38d3=_0x1a38d3||0x1f4;return function(_0x1a8014){logger[_0x5adb('0x1b')](_0x1a8014[_0x5adb('0x1c')]);if(_0x1a8014[_0x5adb('0x1d')]){delete _0x1a8014['name'];}_0x379b33[_0x5adb('0xe')](_0x1a38d3)[_0x5adb('0x1e')](_0x1a8014);};}exports[_0x5adb('0x1f')]=function(_0x3839fb,_0xeb556c){var _0x49f203={};var _0x2fee18={'count':0x0,'rows':[]};var _0x2e1e63=_['map'](db[_0x5adb('0x20')][_0x5adb('0x21')],function(_0x1a0acd){return{'name':_0x1a0acd['fieldName'],'type':_0x1a0acd[_0x5adb('0x22')][_0x5adb('0x23')]};});_0x49f203=qs[_0x5adb('0x24')](_0x2e1e63,_0x3839fb);var _0x2c64a3={'where':_0x49f203[_0x5adb('0x25')]};return db[_0x5adb('0x20')]['count'](_0x2c64a3)['then'](function(_0x5d457e){_0x2fee18[_0x5adb('0x26')]=_0x5d457e;_0x49f203[_0x5adb('0x27')]=qs[_0x5adb('0x27')](_0x3839fb[_0x5adb('0x28')]);return db[_0x5adb('0x20')]['findAll'](_0x49f203);})[_0x5adb('0x17')](function(_0x34b793){_0x2fee18[_0x5adb('0x29')]=_0x34b793;return _0x2fee18;})[_0x5adb('0x17')](respondWithFilteredResult(_0xeb556c,_0x49f203))[_0x5adb('0x2a')](handleError(_0xeb556c,null));};exports[_0x5adb('0x2b')]=function(_0x28190d,_0x28bf1f){var _0x138bf6={'raw':!![],'where':{'id':_0x28190d['params']['id']}},_0x260295={};_0x260295[_0x5adb('0x2c')]=_['keys'](db[_0x5adb('0x20')][_0x5adb('0x21')]);_0x260295['query']=_[_0x5adb('0x2d')](_0x28190d[_0x5adb('0x28')]);_0x260295[_0x5adb('0x2e')]=_['intersection'](_0x260295[_0x5adb('0x2c')],_0x260295[_0x5adb('0x28')]);_0x138bf6['attributes']=_['intersection'](_0x260295[_0x5adb('0x2c')],qs['fields'](_0x28190d[_0x5adb('0x28')][_0x5adb('0x2f')]));_0x138bf6[_0x5adb('0x30')]=_0x138bf6[_0x5adb('0x30')][_0x5adb('0x31')]?_0x138bf6['attributes']:_0x260295[_0x5adb('0x2c')];if(_0x28190d[_0x5adb('0x28')][_0x5adb('0x32')]){_0x138bf6['include']=[{'all':!![]}];}_0x138bf6=_['merge']({},_0x138bf6,_0x28190d[_0x5adb('0x33')]);return db[_0x5adb('0x20')]['find'](_0x138bf6)[_0x5adb('0x17')](handleEntityNotFound(_0x28bf1f,null))['then'](respondWithResult(_0x28bf1f,null))[_0x5adb('0x2a')](handleError(_0x28bf1f,null));};exports['create']=function(_0x11cb37,_0x4d052f){return db[_0x5adb('0x20')][_0x5adb('0x34')](_0x11cb37['body'],{})[_0x5adb('0x17')](function(_0x5a6a79){var _0xadbe37=_0x11cb37[_0x5adb('0x35')][_0x5adb('0x36')]({'plain':!![]});if(!_0xadbe37)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xadbe37[_0x5adb('0x37')]===_0x5adb('0x35')){var _0xcdaf8e=_0x5a6a79[_0x5adb('0x36')]({'plain':!![]});var _0x22aa95='SmsQueues';return db['UserProfileSection']['find']({'where':{'name':_0x22aa95,'userProfileId':_0xadbe37['userProfileId']},'raw':!![]})[_0x5adb('0x17')](function(_0x2fbe14){if(_0x2fbe14&&_0x2fbe14[_0x5adb('0x38')]===0x0){return db[_0x5adb('0x1a')][_0x5adb('0x34')]({'name':_0xcdaf8e[_0x5adb('0x1d')],'resourceId':_0xcdaf8e['id'],'type':_0x2fbe14[_0x5adb('0x1d')],'sectionId':_0x2fbe14['id']},{})[_0x5adb('0x17')](function(){return _0x5a6a79;});}else{return _0x5a6a79;}})['catch'](function(_0x53f2c6){logger[_0x5adb('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x53f2c6);throw _0x53f2c6;});}return _0x5a6a79;})[_0x5adb('0x17')](respondWithResult(_0x4d052f,0xc9))[_0x5adb('0x2a')](handleError(_0x4d052f,null));};exports[_0x5adb('0x16')]=function(_0x121714,_0xdfecfd){if(_0x121714['body']['id']){delete _0x121714[_0x5adb('0x39')]['id'];}return db[_0x5adb('0x20')]['find']({'where':{'id':_0x121714[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0xdfecfd,null))['then'](saveUpdates(_0x121714[_0x5adb('0x39')],null))[_0x5adb('0x17')](respondWithResult(_0xdfecfd,null))[_0x5adb('0x2a')](handleError(_0xdfecfd,null));};exports[_0x5adb('0x18')]=function(_0xea3307,_0x4362ec){return db[_0x5adb('0x20')]['find']({'where':{'id':_0xea3307['params']['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x4362ec,null))[_0x5adb('0x17')](removeEntity(_0x4362ec,null))[_0x5adb('0x2a')](handleError(_0x4362ec,null));};exports[_0x5adb('0x3b')]=function(_0x57b8af,_0x507e48){return db[_0x5adb('0x20')][_0x5adb('0x3b')]()[_0x5adb('0x17')](respondWithResult(_0x507e48,null))[_0x5adb('0x2a')](handleError(_0x507e48,null));};exports[_0x5adb('0x3c')]=function(_0x5358c0,_0x182cbc){var _0x437f52={'raw':!![],'where':{}},_0x5b574c={},_0x7786c4;return db[_0x5adb('0x20')][_0x5adb('0x3d')]({'where':{'id':_0x5358c0[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x182cbc,null))[_0x5adb('0x17')](function(_0x39840e){if(_0x39840e){_0x7786c4=_0x39840e[_0x5adb('0x36')]({'plain':!![]});_0x5b574c['model']=_[_0x5adb('0x2d')](db['UserSmsQueue']['rawAttributes']);_0x5b574c['query']=_[_0x5adb('0x2d')](_0x5358c0[_0x5adb('0x28')]);_0x5b574c[_0x5adb('0x2e')]=_['intersection'](_0x5b574c[_0x5adb('0x2c')],_0x5b574c['query']);_0x437f52[_0x5adb('0x30')]=_[_0x5adb('0x3e')](_0x5b574c[_0x5adb('0x2c')],qs['fields'](_0x5358c0[_0x5adb('0x28')]['fields']));_0x437f52[_0x5adb('0x30')]=_0x437f52[_0x5adb('0x30')]['length']?_0x437f52[_0x5adb('0x30')]:_0x5b574c[_0x5adb('0x2c')];if(!_0x5358c0[_0x5adb('0x28')][_0x5adb('0x3f')](_0x5adb('0x40'))){_0x437f52['limit']=qs[_0x5adb('0x12')](_0x5358c0[_0x5adb('0x28')][_0x5adb('0x12')]);_0x437f52[_0x5adb('0x11')]=qs['offset'](_0x5358c0[_0x5adb('0x28')][_0x5adb('0x11')]);}_0x437f52[_0x5adb('0x41')]=qs['sort'](_0x5358c0[_0x5adb('0x28')][_0x5adb('0x42')]);_0x437f52[_0x5adb('0x25')]=qs[_0x5adb('0x2e')](_['pick'](_0x5358c0[_0x5adb('0x28')],_0x5b574c[_0x5adb('0x2e')]));_0x437f52[_0x5adb('0x25')][_0x5adb('0x43')]=_0x39840e['id'];if(_0x5358c0[_0x5adb('0x28')]['filter']){_0x437f52[_0x5adb('0x25')]=_['merge'](_0x437f52[_0x5adb('0x25')],{'$or':_['map'](_0x437f52[_0x5adb('0x30')],function(_0x35df22){var _0x1a9358={};_0x1a9358[_0x35df22]={'$like':'%'+_0x5358c0[_0x5adb('0x28')]['filter']+'%'};return _0x1a9358;})});}_0x437f52=_[_0x5adb('0x44')]({},_0x437f52,_0x5358c0[_0x5adb('0x33')]);return db[_0x5adb('0x45')]['findAll'](_0x437f52);}})['then'](function(_0x4ddfdf){if(_0x4ddfdf){return db[_0x5adb('0x46')][_0x5adb('0x47')]({'where':{'id':_[_0x5adb('0x48')](_0x4ddfdf,_0x5adb('0x49')),'role':_0x5adb('0x4a')},'attributes':['id',_0x5adb('0x1d'),_0x5adb('0x4b'),_0x5adb('0x4c'),_0x5adb('0x4d')]});}})[_0x5adb('0x17')](function(_0x452767){if(_0x452767){return{'count':_0x452767[_0x5adb('0x26')],'rows':_[_0x5adb('0x48')](_0x452767['rows'],function(_0x49f4c8){return{'membername':_0x49f4c8[_0x5adb('0x1d')],'UserId':_0x49f4c8['id'],'queue_name':_0x7786c4[_0x5adb('0x1d')],'SmsQueueId':_0x7786c4['id'],'interface':util[_0x5adb('0x4e')](_0x5adb('0x4f'),'SIP',_0x49f4c8[_0x5adb('0x1d')]),'penalty':0x0,'paused':_0x49f4c8[_0x5adb('0x4b')],'createdAt':_0x49f4c8['createdAt'],'updatedAt':_0x49f4c8[_0x5adb('0x4c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5adb('0x17')](respondWithFilteredResult(_0x182cbc,_0x437f52))[_0x5adb('0x2a')](handleError(_0x182cbc,null));};exports['getTeams']=function(_0x30d185,_0x409357){var _0x19df2f={};var _0x30c92c={};var _0x330290;var _0x428019;return db['SmsQueue'][_0x5adb('0x3d')]({'where':{'id':_0x30d185[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x409357,null))['then'](function(_0xcd71d2){if(_0xcd71d2){_0x330290=_0xcd71d2;_0x30c92c[_0x5adb('0x2c')]=_[_0x5adb('0x2d')](db['Team'][_0x5adb('0x21')]);_0x30c92c['query']=_[_0x5adb('0x2d')](_0x30d185[_0x5adb('0x28')]);_0x30c92c[_0x5adb('0x2e')]=_['intersection'](_0x30c92c[_0x5adb('0x2c')],_0x30c92c[_0x5adb('0x28')]);_0x19df2f['attributes']=_[_0x5adb('0x3e')](_0x30c92c[_0x5adb('0x2c')],qs[_0x5adb('0x2f')](_0x30d185[_0x5adb('0x28')]['fields']));_0x19df2f[_0x5adb('0x30')]=_0x19df2f[_0x5adb('0x30')][_0x5adb('0x31')]?_0x19df2f[_0x5adb('0x30')]:_0x30c92c['model'];_0x19df2f['order']=qs[_0x5adb('0x42')](_0x30d185['query']['sort']);_0x19df2f['where']=qs[_0x5adb('0x2e')](_[_0x5adb('0x50')](_0x30d185['query'],_0x30c92c[_0x5adb('0x2e')]));if(_0x30d185[_0x5adb('0x28')][_0x5adb('0x51')]){_0x19df2f[_0x5adb('0x25')]=_[_0x5adb('0x44')](_0x19df2f[_0x5adb('0x25')],{'$or':_[_0x5adb('0x48')](_0x19df2f[_0x5adb('0x30')],function(_0x5240c1){var _0x4b9e80={};_0x4b9e80[_0x5240c1]={'$like':'%'+_0x30d185['query'][_0x5adb('0x51')]+'%'};return _0x4b9e80;})});}_0x19df2f=_[_0x5adb('0x44')]({},_0x19df2f,_0x30d185[_0x5adb('0x33')]);return _0x330290[_0x5adb('0x52')](_0x19df2f);}})[_0x5adb('0x17')](function(_0x2f6ef7){if(_0x2f6ef7){_0x428019=_0x2f6ef7[_0x5adb('0x31')];if(!_0x30d185[_0x5adb('0x28')]['hasOwnProperty']('nolimit')){_0x19df2f[_0x5adb('0x12')]=qs[_0x5adb('0x12')](_0x30d185[_0x5adb('0x28')][_0x5adb('0x12')]);_0x19df2f[_0x5adb('0x11')]=qs[_0x5adb('0x11')](_0x30d185[_0x5adb('0x28')][_0x5adb('0x11')]);}return _0x330290[_0x5adb('0x52')](_0x19df2f);}})[_0x5adb('0x17')](function(_0x484f3d){if(_0x484f3d){return _0x484f3d?{'count':_0x428019,'rows':_0x484f3d}:null;}})[_0x5adb('0x17')](respondWithResult(_0x409357,null))[_0x5adb('0x2a')](handleError(_0x409357,null));};exports[_0x5adb('0x53')]=function(_0x5d3aa4,_0x31f041){var _0xa1bd33=_0x5d3aa4['body'][_0x5adb('0x54')];return db['Team'][_0x5adb('0x55')]({'where':{'id':_0xa1bd33},'attributes':['id'],'include':[{'model':db[_0x5adb('0x46')],'as':'Agents','attributes':['id',_0x5adb('0x1d'),_0x5adb('0x56'),_0x5adb('0x57'),_0x5adb('0x58')],'raw':!![]}]})[_0x5adb('0x17')](function(_0x10f54a){if(_0x10f54a){var _0x3cee6c=_[_0x5adb('0x59')](_0x10f54a,function(_0x49a8a6){var _0x3786b4=_0x49a8a6[_0x5adb('0x36')]({'plain':!![]});return _0x3786b4[_0x5adb('0x5a')];});return db['SmsQueue']['find']({'where':{'id':_0x5d3aa4[_0x5adb('0x3a')]['id']}})['then'](function(_0x27d3d8){return db[_0x5adb('0x5b')][_0x5adb('0x5c')](function(_0x50600f){return _0x27d3d8[_0x5adb('0x53')](_0xa1bd33,{'transaction':_0x50600f})[_0x5adb('0x17')](function(){return BPromise[_0x5adb('0x5d')](_0x3cee6c,function(_0x3ecc56){return db[_0x5adb('0x45')]['findOrCreate']({'where':{'UserId':_0x3ecc56['id'],'SmsQueueId':_0x5d3aa4[_0x5adb('0x3a')]['id']},'transaction':_0x50600f});});})[_0x5adb('0x17')](function(){_0x3cee6c[_0x5adb('0x5e')](function(_0xe3d12d){socket['emit'](_0x5adb('0x5f'),{'UserId':_0xe3d12d['id'],'SmsQueueId':_0x27d3d8['id']});});});});});}})[_0x5adb('0x17')](respondWithStatusCode(_0x31f041,null))[_0x5adb('0x2a')](handleError(_0x31f041,null));};exports[_0x5adb('0x60')]=function(_0x15d4f1,_0x20faf6){return db[_0x5adb('0x61')]['findAll']({'where':{'id':_0x15d4f1[_0x5adb('0x28')][_0x5adb('0x54')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5adb('0x5a'),'attributes':['id'],'raw':!![]}]})[_0x5adb('0x17')](handleEntityNotFound(_0x20faf6,null))['then'](function(_0x462fa0){var _0x50f8ed=_[_0x5adb('0x48')](_0x462fa0,'id');var _0x268df2=[];var _0x4a2ebc=[];var _0x167432=squel['select']();_0x167432[_0x5adb('0x62')](_0x5adb('0x63'))[_0x5adb('0x64')](_0x5adb('0x65'),'tq')[_0x5adb('0x66')]('user_has_teams','ut',_0x5adb('0x67'))[_0x5adb('0x25')](_0x5adb('0x68'),_0x15d4f1[_0x5adb('0x3a')]['id']);for(var _0x47c631=0x0;_0x47c631<_0x462fa0['length'];_0x47c631+=0x1){let _0x3f3db9=_0x462fa0[_0x47c631];for(var _0x461a07=0x0;_0x461a07<_0x3f3db9[_0x5adb('0x5a')][_0x5adb('0x31')];_0x461a07+=0x1){let _0x277668=_0x3f3db9[_0x5adb('0x5a')][_0x461a07];var _0x31f5b2=_0x167432['clone']();_0x31f5b2[_0x5adb('0x25')](_0x5adb('0x69'),_0x277668['id']);_0x4a2ebc[_0x5adb('0x6a')](db[_0x5adb('0x5b')]['query'](_0x31f5b2[_0x5adb('0x6b')](),{'type':db[_0x5adb('0x5b')][_0x5adb('0x6c')][_0x5adb('0x6d')]})[_0x5adb('0x17')](function(_0x188cbd){if(_0x188cbd[_0x5adb('0x31')]===0x1){return _0x277668['id'];}else{var _0x2d1b65=_[_0x5adb('0x6e')](_['map'](_0x188cbd,_0x5adb('0x6f')),function(_0x456799){return _['includes'](_0x50f8ed,_0x456799);});if(_0x2d1b65){return _0x277668['id'];}}}));}}return BPromise[_0x5adb('0x70')](_0x4a2ebc)[_0x5adb('0x17')](function(_0x2b8915){_0x268df2=_(_0x268df2)[_0x5adb('0x71')](_0x2b8915)[_0x5adb('0x72')]()[_0x5adb('0x73')]();return db[_0x5adb('0x20')][_0x5adb('0x74')]({'where':{'id':_0x15d4f1['params']['id']}})[_0x5adb('0x17')](function(_0x2386c0){return db['sequelize'][_0x5adb('0x5c')](function(_0x58a26f){return _0x2386c0[_0x5adb('0x60')](_0x15d4f1['query']['ids'],{'transaction':_0x58a26f})[_0x5adb('0x17')](function(){if(!_[_0x5adb('0x75')](_0x268df2)){return _0x2386c0[_0x5adb('0x76')](_0x268df2,{'transaction':_0x58a26f});}})['then'](function(){_0x268df2[_0x5adb('0x5e')](function(_0x321c3a){socket[_0x5adb('0x77')](_0x5adb('0x78'),{'UserId':_0x321c3a,'SmsQueueId':_0x2386c0['id']});});});});});});})[_0x5adb('0x17')](respondWithStatusCode(_0x20faf6,null))[_0x5adb('0x2a')](handleError(_0x20faf6,null));};exports[_0x5adb('0x79')]=function(_0x463e84,_0x28bd33){return db[_0x5adb('0x20')][_0x5adb('0x74')]({'where':{'id':_0x463e84[_0x5adb('0x3a')]['id']}})['then'](handleEntityNotFound(_0x28bd33,null))['then'](function(_0x312463){if(_0x312463){return _0x312463[_0x5adb('0x79')](_0x463e84['body'][_0x5adb('0x54')],_[_0x5adb('0x7a')](_0x463e84[_0x5adb('0x39')],[_0x5adb('0x54'),'id'])||{})[_0x5adb('0x7b')](function(_0x24cd3b){for(var _0x15626b=0x0;_0x15626b<_0x463e84[_0x5adb('0x39')][_0x5adb('0x54')]['length'];_0x15626b+=0x1){socket[_0x5adb('0x77')](_0x5adb('0x5f'),{'UserId':Number(_0x463e84[_0x5adb('0x39')]['ids'][_0x15626b]),'SmsQueueId':Number(_0x463e84[_0x5adb('0x3a')]['id'])});}return _0x24cd3b;});}})[_0x5adb('0x17')](respondWithResult(_0x28bd33,null))[_0x5adb('0x2a')](handleError(_0x28bd33,null));};exports[_0x5adb('0x76')]=function(_0x64475f,_0x2a78f9){return db['SmsQueue'][_0x5adb('0x74')]({'where':{'id':_0x64475f[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x2a78f9,null))[_0x5adb('0x17')](function(_0x2c3af8){if(_0x2c3af8){return _0x2c3af8[_0x5adb('0x76')](_0x64475f[_0x5adb('0x28')][_0x5adb('0x54')])[_0x5adb('0x17')](function(){if(_[_0x5adb('0x7c')](_0x64475f['query'][_0x5adb('0x54')])){for(var _0x5b9565=0x0;_0x5b9565<_0x64475f[_0x5adb('0x28')][_0x5adb('0x54')][_0x5adb('0x31')];_0x5b9565+=0x1){socket[_0x5adb('0x77')](_0x5adb('0x78'),{'UserId':Number(_0x64475f['query']['ids'][_0x5b9565]),'SmsQueueId':Number(_0x64475f[_0x5adb('0x3a')]['id'])});}}else{socket[_0x5adb('0x77')](_0x5adb('0x78'),{'UserId':Number(_0x64475f[_0x5adb('0x28')][_0x5adb('0x54')]),'SmsQueueId':Number(_0x64475f[_0x5adb('0x3a')]['id'])});}});}})['then'](respondWithStatusCode(_0x2a78f9,null))['catch'](handleError(_0x2a78f9,null));};exports[_0x5adb('0x7d')]=function(_0xd5b95d,_0x9d80fd){var _0x4f5721={};var _0x542626={};var _0x227c17;var _0x5982a5;return db[_0x5adb('0x20')][_0x5adb('0x3d')]({'where':{'id':_0xd5b95d['params']['id']}})['then'](handleEntityNotFound(_0x9d80fd,null))[_0x5adb('0x17')](function(_0x4bb198){if(_0x4bb198){_0x227c17=_0x4bb198;_0x542626['model']=_[_0x5adb('0x2d')](db[_0x5adb('0x46')][_0x5adb('0x21')]);_0x542626[_0x5adb('0x28')]=_[_0x5adb('0x2d')](_0xd5b95d[_0x5adb('0x28')]);_0x542626[_0x5adb('0x2e')]=_[_0x5adb('0x3e')](_0x542626[_0x5adb('0x2c')],_0x542626[_0x5adb('0x28')]);_0x4f5721[_0x5adb('0x30')]=_[_0x5adb('0x3e')](_0x542626[_0x5adb('0x2c')],qs['fields'](_0xd5b95d[_0x5adb('0x28')]['fields']));_0x4f5721[_0x5adb('0x30')]=_0x4f5721[_0x5adb('0x30')][_0x5adb('0x31')]?_0x4f5721[_0x5adb('0x30')]:_0x542626[_0x5adb('0x2c')];_0x4f5721[_0x5adb('0x41')]=qs[_0x5adb('0x42')](_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x42')]);_0x4f5721[_0x5adb('0x25')]=qs[_0x5adb('0x2e')](_[_0x5adb('0x50')](_0xd5b95d['query'],_0x542626[_0x5adb('0x2e')]));if(_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x51')]){_0x4f5721[_0x5adb('0x25')]=_[_0x5adb('0x44')](_0x4f5721[_0x5adb('0x25')],{'$or':_[_0x5adb('0x48')](_0x4f5721[_0x5adb('0x30')],function(_0x57c160){var _0xe7ddc4={};_0xe7ddc4[_0x57c160]={'$like':'%'+_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x51')]+'%'};return _0xe7ddc4;})});}_0x4f5721=_['merge']({},_0x4f5721,_0xd5b95d[_0x5adb('0x33')]);return _0x227c17['getAgents'](_0x4f5721);}})[_0x5adb('0x17')](function(_0x50c3a3){if(_0x50c3a3){_0x5982a5=_0x50c3a3['length'];if(!_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x3f')](_0x5adb('0x40'))){_0x4f5721[_0x5adb('0x12')]=qs[_0x5adb('0x12')](_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x12')]);_0x4f5721[_0x5adb('0x11')]=qs[_0x5adb('0x11')](_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x11')]);}return _0x227c17[_0x5adb('0x7d')](_0x4f5721);}})['then'](function(_0x364da7){if(_0x364da7){return _0x364da7?{'count':_0x5982a5,'rows':_0x364da7}:null;}})['then'](respondWithResult(_0x9d80fd,null))[_0x5adb('0x2a')](handleError(_0x9d80fd,null));};
\ No newline at end of file
index 3cc89f5..a799e2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb27=['save','emit','hasOwnProperty','hook','exports','events','SmsQueue','setMaxListeners'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcb27,0x19d));var _0x7cb2=function(_0x2f14df,_0x339470){_0x2f14df=_0x2f14df-0x0;var _0x43f46e=_0xcb27[_0x2f14df];return _0x43f46e;};'use strict';var EventEmitter=require(_0x7cb2('0x0'));var SmsQueue=require('../../mysqldb')['db'][_0x7cb2('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x7cb2('0x2')](0x0);var events={'afterCreate':_0x7cb2('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3c4f12){return function(_0x1a20d6,_0x3336db,_0x1f58f2){SmsQueueEvents[_0x7cb2('0x4')](_0x3c4f12+':'+_0x1a20d6['id'],_0x1a20d6);SmsQueueEvents['emit'](_0x3c4f12,_0x1a20d6);_0x1f58f2(null);};}for(var e in events){if(events[_0x7cb2('0x5')](e)){var event=events[e];SmsQueue[_0x7cb2('0x6')](e,emitEvent(event));}}module[_0x7cb2('0x7')]=SmsQueueEvents;
\ No newline at end of file
+var _0xa075=['hasOwnProperty','exports','events','../../mysqldb','SmsQueue','save','remove','emit'];(function(_0x553ac2,_0x156cf0){var _0x2182d8=function(_0x594e0f){while(--_0x594e0f){_0x553ac2['push'](_0x553ac2['shift']());}};_0x2182d8(++_0x156cf0);}(_0xa075,0x102));var _0x5a07=function(_0x229d07,_0x484444){_0x229d07=_0x229d07-0x0;var _0x288dd3=_0xa075[_0x229d07];return _0x288dd3;};'use strict';var EventEmitter=require(_0x5a07('0x0'));var SmsQueue=require(_0x5a07('0x1'))['db'][_0x5a07('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5a07('0x3'),'afterUpdate':'update','afterDestroy':_0x5a07('0x4')};function emitEvent(_0x5447b9){return function(_0x301161,_0x1bd1d1,_0x22175c){SmsQueueEvents[_0x5a07('0x5')](_0x5447b9+':'+_0x301161['id'],_0x301161);SmsQueueEvents[_0x5a07('0x5')](_0x5447b9,_0x301161);_0x22175c(null);};}for(var e in events){if(events[_0x5a07('0x6')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0x5a07('0x7')]=SmsQueueEvents;
\ No newline at end of file
index 130d0a6..eddbc33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fe5=['../../config/environment','./smsQueue.attributes','define','SmsQueue','sms_queues','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x224436,_0x13088b){var _0x3c694a=function(_0x5b9648){while(--_0x5b9648){_0x224436['push'](_0x224436['shift']());}};_0x3c694a(++_0x13088b);}(_0x8fe5,0xae));var _0x58fe=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8fe5[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x58fe('0x0'));var logger=require(_0x58fe('0x1'))(_0x58fe('0x2'));var moment=require(_0x58fe('0x3'));var BPromise=require(_0x58fe('0x4'));var rp=require(_0x58fe('0x5'));var fs=require('fs');var path=require(_0x58fe('0x6'));var rimraf=require(_0x58fe('0x7'));var config=require(_0x58fe('0x8'));var attributes=require(_0x58fe('0x9'));module['exports']=function(_0x411981,_0x3af4f5){return _0x411981[_0x58fe('0xa')](_0x58fe('0xb'),attributes,{'tableName':_0x58fe('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb33b=['../../config/environment','./smsQueue.attributes','define','sms_queues','lodash','util','api','bluebird','request-promise','path','rimraf'];(function(_0x2ecb8b,_0x4d2942){var _0x4769c5=function(_0x159613){while(--_0x159613){_0x2ecb8b['push'](_0x2ecb8b['shift']());}};_0x4769c5(++_0x4d2942);}(_0xb33b,0xbf));var _0xbb33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb33b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xbb33('0x0'));var util=require(_0xbb33('0x1'));var logger=require('../../config/logger')(_0xbb33('0x2'));var moment=require('moment');var BPromise=require(_0xbb33('0x3'));var rp=require(_0xbb33('0x4'));var fs=require('fs');var path=require(_0xbb33('0x5'));var rimraf=require(_0xbb33('0x6'));var config=require(_0xbb33('0x7'));var attributes=require(_0xbb33('0x8'));module['exports']=function(_0x9ada8,_0x240137){return _0x9ada8[_0xbb33('0x9')]('SmsQueue',attributes,{'tableName':_0xbb33('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a01677a..75e7cea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf237=['GetSmsQueue','SmsQueue','options','where','attributes','limit','include','map','model','then','debug','find','raw','ShowSmsQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./smsQueue.socket','register','info','SmsQueue,\x20%s,\x20%s','request\x20sent','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x32d368,_0x37db1c){var _0x4fedd8=function(_0x4b6a30){while(--_0x4b6a30){_0x32d368['push'](_0x32d368['shift']());}};_0x4fedd8(++_0x37db1c);}(_0xf237,0xb2));var _0x7f23=function(_0x50188e,_0x3b667b){_0x50188e=_0x50188e-0x0;var _0x298c5b=_0xf237[_0x50188e];return _0x298c5b;};'use strict';var _=require(_0x7f23('0x0'));var util=require(_0x7f23('0x1'));var moment=require(_0x7f23('0x2'));var BPromise=require(_0x7f23('0x3'));var rs=require(_0x7f23('0x4'));var fs=require('fs');var Redis=require(_0x7f23('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7f23('0x6'));var logger=require(_0x7f23('0x7'))(_0x7f23('0x8'));var config=require(_0x7f23('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7f23('0xa')][_0x7f23('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0x7f23('0xc')],{'host':_0x7f23('0xd'),'port':0x18eb});var socket=require(_0x7f23('0xe'))(new Redis(config[_0x7f23('0xc')]));require(_0x7f23('0xf'))[_0x7f23('0x10')](socket);function respondWithRpcPromise(_0xe679f0,_0x35a008,_0x339578){return new BPromise(function(_0x116b56,_0x47575a){return client['request'](_0xe679f0,_0x339578)['then'](function(_0xdf2c0b){logger[_0x7f23('0x11')](_0x7f23('0x12'),_0x35a008,_0x7f23('0x13'));logger['debug'](_0x7f23('0x14'),_0x35a008,'request\x20sent',JSON[_0x7f23('0x15')](_0xdf2c0b));if(_0xdf2c0b['error']){if(_0xdf2c0b[_0x7f23('0x16')][_0x7f23('0x17')]===0x1f4){logger['error'](_0x7f23('0x12'),_0x35a008,_0xdf2c0b[_0x7f23('0x16')][_0x7f23('0x18')]);return _0x47575a(_0xdf2c0b[_0x7f23('0x16')][_0x7f23('0x18')]);}logger['error'](_0x7f23('0x12'),_0x35a008,_0xdf2c0b[_0x7f23('0x16')][_0x7f23('0x18')]);return _0x116b56(_0xdf2c0b[_0x7f23('0x16')]['message']);}else{logger[_0x7f23('0x11')](_0x7f23('0x12'),_0x35a008,_0x7f23('0x13'));_0x116b56(_0xdf2c0b[_0x7f23('0x19')][_0x7f23('0x18')]);}})[_0x7f23('0x1a')](function(_0x37edab){logger[_0x7f23('0x16')]('SmsQueue,\x20%s,\x20%s',_0x35a008,_0x37edab);_0x47575a(_0x37edab);});});}exports[_0x7f23('0x1b')]=function(_0x55595d){var _0x1e036d=this;return new Promise(function(_0x4813b8,_0xb60762){return db[_0x7f23('0x1c')]['findAll']({'raw':_0x55595d[_0x7f23('0x1d')]?_0x55595d[_0x7f23('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x55595d['options']?_0x55595d[_0x7f23('0x1d')][_0x7f23('0x1e')]||null:null,'attributes':_0x55595d[_0x7f23('0x1d')]?_0x55595d['options'][_0x7f23('0x1f')]||null:null,'limit':_0x55595d['options']?_0x55595d[_0x7f23('0x1d')][_0x7f23('0x20')]||null:null,'include':_0x55595d['options']?_0x55595d[_0x7f23('0x1d')][_0x7f23('0x21')]?_[_0x7f23('0x22')](_0x55595d[_0x7f23('0x1d')][_0x7f23('0x21')],function(_0x6e0e4a){return{'model':db[_0x6e0e4a[_0x7f23('0x23')]],'as':_0x6e0e4a['as'],'attributes':_0x6e0e4a[_0x7f23('0x1f')],'include':_0x6e0e4a[_0x7f23('0x21')]?_['map'](_0x6e0e4a['include'],function(_0x53409f){return{'model':db[_0x53409f[_0x7f23('0x23')]],'as':_0x53409f['as'],'attributes':_0x53409f['attributes'],'include':_0x53409f[_0x7f23('0x21')]?_[_0x7f23('0x22')](_0x53409f['include'],function(_0x294f71){return{'model':db[_0x294f71[_0x7f23('0x23')]],'as':_0x294f71['as'],'attributes':_0x294f71[_0x7f23('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7f23('0x24')](function(_0xd0d6e2){logger[_0x7f23('0x11')](_0x7f23('0x1b'),_0x55595d);logger[_0x7f23('0x25')](_0x7f23('0x1b'),_0x55595d,JSON[_0x7f23('0x15')](_0xd0d6e2));_0x4813b8(_0xd0d6e2);})['catch'](function(_0x2aa7a9){logger[_0x7f23('0x16')]('GetSmsQueue',_0x2aa7a9[_0x7f23('0x18')],_0x55595d);_0xb60762(_0x1e036d[_0x7f23('0x16')](0x1f4,_0x2aa7a9[_0x7f23('0x18')]));});});};exports['ShowSmsQueue']=function(_0x2a1e31){var _0x3a43f9=this;return new Promise(function(_0x49ecdc,_0x14a22f){return db[_0x7f23('0x1c')][_0x7f23('0x26')]({'raw':_0x2a1e31[_0x7f23('0x1d')]?_0x2a1e31['options'][_0x7f23('0x27')]===undefined?!![]:![]:!![],'where':_0x2a1e31[_0x7f23('0x1d')]?_0x2a1e31[_0x7f23('0x1d')][_0x7f23('0x1e')]||null:null,'attributes':_0x2a1e31[_0x7f23('0x1d')]?_0x2a1e31[_0x7f23('0x1d')]['attributes']||null:null,'include':_0x2a1e31[_0x7f23('0x1d')]?_0x2a1e31[_0x7f23('0x1d')][_0x7f23('0x21')]?_[_0x7f23('0x22')](_0x2a1e31['options']['include'],function(_0x65a6ef){return{'model':db[_0x65a6ef['model']],'as':_0x65a6ef['as'],'attributes':_0x65a6ef[_0x7f23('0x1f')],'include':_0x65a6ef[_0x7f23('0x21')]?_['map'](_0x65a6ef['include'],function(_0xc87693){return{'model':db[_0xc87693[_0x7f23('0x23')]],'as':_0xc87693['as'],'attributes':_0xc87693[_0x7f23('0x1f')],'include':_0xc87693['include']?_[_0x7f23('0x22')](_0xc87693['include'],function(_0x48129d){return{'model':db[_0x48129d['model']],'as':_0x48129d['as'],'attributes':_0x48129d[_0x7f23('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7f23('0x24')](function(_0x2c50a1){logger[_0x7f23('0x11')]('ShowSmsQueue',_0x2a1e31);logger[_0x7f23('0x25')](_0x7f23('0x28'),_0x2a1e31,JSON[_0x7f23('0x15')](_0x2c50a1));_0x49ecdc(_0x2c50a1);})[_0x7f23('0x1a')](function(_0x2e42af){logger[_0x7f23('0x16')](_0x7f23('0x28'),_0x2e42af['message'],_0x2a1e31);_0x14a22f(_0x3a43f9['error'](0x1f4,_0x2e42af['message']));});});};
\ No newline at end of file
+var _0xe1c1=['findAll','options','raw','where','limit','map','include','model','attributes','ShowSmsQueue','find','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetSmsQueue','SmsQueue'];(function(_0x22fba1,_0x40ac90){var _0x365955=function(_0xbf6f98){while(--_0xbf6f98){_0x22fba1['push'](_0x22fba1['shift']());}};_0x365955(++_0x40ac90);}(_0xe1c1,0x14b));var _0x1e1c=function(_0xc77819,_0x139fdc){_0xc77819=_0xc77819-0x0;var _0x1c9434=_0xe1c1[_0xc77819];return _0x1c9434;};'use strict';var _=require(_0x1e1c('0x0'));var util=require(_0x1e1c('0x1'));var moment=require(_0x1e1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x1e1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1e1c('0x4'))['db'];var utils=require(_0x1e1c('0x5'));var logger=require(_0x1e1c('0x6'))(_0x1e1c('0x7'));var config=require(_0x1e1c('0x8'));var jayson=require(_0x1e1c('0x9'));var client=jayson['client'][_0x1e1c('0xa')]({'port':0x232a});config[_0x1e1c('0xb')]=_['defaults'](config[_0x1e1c('0xb')],{'host':_0x1e1c('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1e1c('0xd'))[_0x1e1c('0xe')](socket);function respondWithRpcPromise(_0x16e8cd,_0x507efb,_0x3c8236){return new BPromise(function(_0x5b8624,_0x23506d){return client[_0x1e1c('0xf')](_0x16e8cd,_0x3c8236)[_0x1e1c('0x10')](function(_0x202db3){logger[_0x1e1c('0x11')](_0x1e1c('0x12'),_0x507efb,_0x1e1c('0x13'));logger[_0x1e1c('0x14')](_0x1e1c('0x15'),_0x507efb,_0x1e1c('0x13'),JSON[_0x1e1c('0x16')](_0x202db3));if(_0x202db3[_0x1e1c('0x17')]){if(_0x202db3[_0x1e1c('0x17')][_0x1e1c('0x18')]===0x1f4){logger[_0x1e1c('0x17')](_0x1e1c('0x12'),_0x507efb,_0x202db3['error'][_0x1e1c('0x19')]);return _0x23506d(_0x202db3[_0x1e1c('0x17')][_0x1e1c('0x19')]);}logger[_0x1e1c('0x17')](_0x1e1c('0x12'),_0x507efb,_0x202db3['error'][_0x1e1c('0x19')]);return _0x5b8624(_0x202db3[_0x1e1c('0x17')][_0x1e1c('0x19')]);}else{logger[_0x1e1c('0x11')]('SmsQueue,\x20%s,\x20%s',_0x507efb,'request\x20sent');_0x5b8624(_0x202db3['result'][_0x1e1c('0x19')]);}})[_0x1e1c('0x1a')](function(_0x4e337a){logger[_0x1e1c('0x17')]('SmsQueue,\x20%s,\x20%s',_0x507efb,_0x4e337a);_0x23506d(_0x4e337a);});});}exports[_0x1e1c('0x1b')]=function(_0x24af7f){var _0x34a43a=this;return new Promise(function(_0x4abaea,_0x3f8ed3){return db[_0x1e1c('0x1c')][_0x1e1c('0x1d')]({'raw':_0x24af7f[_0x1e1c('0x1e')]?_0x24af7f[_0x1e1c('0x1e')][_0x1e1c('0x1f')]===undefined?!![]:![]:!![],'where':_0x24af7f[_0x1e1c('0x1e')]?_0x24af7f[_0x1e1c('0x1e')][_0x1e1c('0x20')]||null:null,'attributes':_0x24af7f[_0x1e1c('0x1e')]?_0x24af7f[_0x1e1c('0x1e')]['attributes']||null:null,'limit':_0x24af7f[_0x1e1c('0x1e')]?_0x24af7f[_0x1e1c('0x1e')][_0x1e1c('0x21')]||null:null,'include':_0x24af7f['options']?_0x24af7f['options']['include']?_[_0x1e1c('0x22')](_0x24af7f['options'][_0x1e1c('0x23')],function(_0xbd5130){return{'model':db[_0xbd5130['model']],'as':_0xbd5130['as'],'attributes':_0xbd5130['attributes'],'include':_0xbd5130[_0x1e1c('0x23')]?_['map'](_0xbd5130[_0x1e1c('0x23')],function(_0x4083f5){return{'model':db[_0x4083f5['model']],'as':_0x4083f5['as'],'attributes':_0x4083f5['attributes'],'include':_0x4083f5['include']?_[_0x1e1c('0x22')](_0x4083f5[_0x1e1c('0x23')],function(_0x362857){return{'model':db[_0x362857[_0x1e1c('0x24')]],'as':_0x362857['as'],'attributes':_0x362857[_0x1e1c('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x36b3d9){logger[_0x1e1c('0x11')]('GetSmsQueue',_0x24af7f);logger[_0x1e1c('0x14')]('GetSmsQueue',_0x24af7f,JSON[_0x1e1c('0x16')](_0x36b3d9));_0x4abaea(_0x36b3d9);})[_0x1e1c('0x1a')](function(_0x15ec17){logger['error'](_0x1e1c('0x1b'),_0x15ec17[_0x1e1c('0x19')],_0x24af7f);_0x3f8ed3(_0x34a43a['error'](0x1f4,_0x15ec17[_0x1e1c('0x19')]));});});};exports[_0x1e1c('0x26')]=function(_0x2baeb3){var _0x5e700b=this;return new Promise(function(_0x59d7be,_0x3f607e){return db['SmsQueue'][_0x1e1c('0x27')]({'raw':_0x2baeb3[_0x1e1c('0x1e')]?_0x2baeb3[_0x1e1c('0x1e')][_0x1e1c('0x1f')]===undefined?!![]:![]:!![],'where':_0x2baeb3[_0x1e1c('0x1e')]?_0x2baeb3[_0x1e1c('0x1e')][_0x1e1c('0x20')]||null:null,'attributes':_0x2baeb3[_0x1e1c('0x1e')]?_0x2baeb3[_0x1e1c('0x1e')][_0x1e1c('0x25')]||null:null,'include':_0x2baeb3[_0x1e1c('0x1e')]?_0x2baeb3[_0x1e1c('0x1e')][_0x1e1c('0x23')]?_[_0x1e1c('0x22')](_0x2baeb3['options']['include'],function(_0xbdfb39){return{'model':db[_0xbdfb39['model']],'as':_0xbdfb39['as'],'attributes':_0xbdfb39[_0x1e1c('0x25')],'include':_0xbdfb39['include']?_['map'](_0xbdfb39['include'],function(_0x98c579){return{'model':db[_0x98c579[_0x1e1c('0x24')]],'as':_0x98c579['as'],'attributes':_0x98c579[_0x1e1c('0x25')],'include':_0x98c579[_0x1e1c('0x23')]?_[_0x1e1c('0x22')](_0x98c579[_0x1e1c('0x23')],function(_0xe4ad0a){return{'model':db[_0xe4ad0a[_0x1e1c('0x24')]],'as':_0xe4ad0a['as'],'attributes':_0xe4ad0a[_0x1e1c('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x20e528){logger[_0x1e1c('0x11')](_0x1e1c('0x26'),_0x2baeb3);logger['debug'](_0x1e1c('0x26'),_0x2baeb3,JSON[_0x1e1c('0x16')](_0x20e528));_0x59d7be(_0x20e528);})[_0x1e1c('0x1a')](function(_0x3e5bd3){logger['error'](_0x1e1c('0x26'),_0x3e5bd3[_0x1e1c('0x19')],_0x2baeb3);_0x3f607e(_0x5e700b[_0x1e1c('0x17')](0x1f4,_0x3e5bd3['message']));});});};
\ No newline at end of file
index a19d5e7..84f6b17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8797=['smsQueue:','./smsQueue.events','save','remove','update','emit','removeListener','register','length'];(function(_0x9911a6,_0x3f751d){var _0x5b445d=function(_0x40a6b8){while(--_0x40a6b8){_0x9911a6['push'](_0x9911a6['shift']());}};_0x5b445d(++_0x3f751d);}(_0x8797,0x169));var _0x7879=function(_0x4d05a0,_0x53aa7e){_0x4d05a0=_0x4d05a0-0x0;var _0x4c999c=_0x8797[_0x4d05a0];return _0x4c999c;};'use strict';var SmsQueueEvents=require(_0x7879('0x0'));var events=[_0x7879('0x1'),_0x7879('0x2'),_0x7879('0x3')];function createListener(_0x1891ee,_0x440ac1){return function(_0x1898c4){_0x440ac1[_0x7879('0x4')](_0x1891ee,_0x1898c4);};}function removeListener(_0x3eb0cd,_0x28d4a6){return function(){SmsQueueEvents[_0x7879('0x5')](_0x3eb0cd,_0x28d4a6);};}exports[_0x7879('0x6')]=function(_0x5bdc04){for(var _0x52a236=0x0,_0x54988a=events[_0x7879('0x7')];_0x52a236<_0x54988a;_0x52a236++){var _0x33739f=events[_0x52a236];var _0x1feaa6=createListener(_0x7879('0x8')+_0x33739f,_0x5bdc04);SmsQueueEvents['on'](_0x33739f,_0x1feaa6);}};
\ No newline at end of file
+var _0x93c3=['smsQueue:','./smsQueue.events','save','remove','emit','removeListener','register','length'];(function(_0x43f47b,_0x311636){var _0x4af9a6=function(_0x4fb7f0){while(--_0x4fb7f0){_0x43f47b['push'](_0x43f47b['shift']());}};_0x4af9a6(++_0x311636);}(_0x93c3,0x1f1));var _0x393c=function(_0x342911,_0x4c66ca){_0x342911=_0x342911-0x0;var _0x591627=_0x93c3[_0x342911];return _0x591627;};'use strict';var SmsQueueEvents=require(_0x393c('0x0'));var events=[_0x393c('0x1'),_0x393c('0x2'),'update'];function createListener(_0x6153a6,_0x3ba2d8){return function(_0x3e9d00){_0x3ba2d8[_0x393c('0x3')](_0x6153a6,_0x3e9d00);};}function removeListener(_0x5536df,_0x2dd278){return function(){SmsQueueEvents[_0x393c('0x4')](_0x5536df,_0x2dd278);};}exports[_0x393c('0x5')]=function(_0x27e02f){for(var _0x27d4a5=0x0,_0x2c9afa=events[_0x393c('0x6')];_0x27d4a5<_0x2c9afa;_0x27d4a5++){var _0x1c7e76=events[_0x27d4a5];var _0x52b40c=createListener(_0x393c('0x7')+_0x1c7e76,_0x27e02f);SmsQueueEvents['on'](_0x1c7e76,_0x52b40c);}};
\ No newline at end of file
index 881d389..116f575 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb613=['delete','destroy','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xb613,0x9d));var _0x3b61=function(_0x118139,_0x7ce965){_0x118139=_0x118139-0x0;var _0x2fece9=_0xb613[_0x118139];return _0x2fece9;};'use strict';var multer=require(_0x3b61('0x0'));var util=require(_0x3b61('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3b61('0x2'));var router=express[_0x3b61('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3b61('0x4'));var interaction=require(_0x3b61('0x5'));var config=require(_0x3b61('0x6'));var controller=require(_0x3b61('0x7'));router[_0x3b61('0x8')]('/',auth[_0x3b61('0x9')](),controller[_0x3b61('0xa')]);router['get'](_0x3b61('0xb'),auth[_0x3b61('0x9')](),controller[_0x3b61('0xc')]);router[_0x3b61('0x8')](_0x3b61('0xd'),auth[_0x3b61('0x9')](),controller[_0x3b61('0xe')]);router[_0x3b61('0xf')]('/',auth[_0x3b61('0x9')](),controller[_0x3b61('0x10')]);router[_0x3b61('0x11')](_0x3b61('0xd'),auth[_0x3b61('0x9')](),controller[_0x3b61('0x12')]);router[_0x3b61('0x13')]('/:id',auth[_0x3b61('0x9')](),controller[_0x3b61('0x14')]);module[_0x3b61('0x15')]=router;
\ No newline at end of file
+var _0x8ca9=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete'];(function(_0x147497,_0x43e433){var _0x35f45=function(_0x584421){while(--_0x584421){_0x147497['push'](_0x147497['shift']());}};_0x35f45(++_0x43e433);}(_0x8ca9,0x9c));var _0x98ca=function(_0x37980a,_0x3425e7){_0x37980a=_0x37980a-0x0;var _0x4f9131=_0x8ca9[_0x37980a];return _0x4f9131;};'use strict';var multer=require(_0x98ca('0x0'));var util=require(_0x98ca('0x1'));var path=require(_0x98ca('0x2'));var timeout=require(_0x98ca('0x3'));var express=require(_0x98ca('0x4'));var router=express[_0x98ca('0x5')]();var fs_extra=require(_0x98ca('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x98ca('0x7'));var controller=require('./smsQueueReport.controller');router[_0x98ca('0x8')]('/',auth['isAuthenticated'](),controller[_0x98ca('0x9')]);router[_0x98ca('0x8')](_0x98ca('0xa'),auth[_0x98ca('0xb')](),controller[_0x98ca('0xc')]);router[_0x98ca('0x8')](_0x98ca('0xd'),auth[_0x98ca('0xb')](),controller[_0x98ca('0xe')]);router[_0x98ca('0xf')]('/',auth[_0x98ca('0xb')](),controller[_0x98ca('0x10')]);router[_0x98ca('0x11')](_0x98ca('0xd'),auth[_0x98ca('0xb')](),controller[_0x98ca('0x12')]);router[_0x98ca('0x13')](_0x98ca('0xd'),auth['isAuthenticated'](),controller[_0x98ca('0x14')]);module[_0x98ca('0x15')]=router;
\ No newline at end of file
index 3f3df61..65ce568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedf2=['sequelize','STRING','DATE'];(function(_0x537abc,_0x19aaf2){var _0x139c64=function(_0x4f410c){while(--_0x4f410c){_0x537abc['push'](_0x537abc['shift']());}};_0x139c64(++_0x19aaf2);}(_0xedf2,0xa2));var _0x2edf=function(_0x541dc0,_0xb3b817){_0x541dc0=_0x541dc0-0x0;var _0x1172ca=_0xedf2[_0x541dc0];return _0x1172ca;};'use strict';var moment=require('moment');var Sequelize=require(_0x2edf('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2edf('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x2edf('0x1')]},'joinAt':{'type':Sequelize[_0x2edf('0x2')]},'leaveAt':{'type':Sequelize[_0x2edf('0x2')]},'acceptAt':{'type':Sequelize[_0x2edf('0x2')]},'exitAt':{'type':Sequelize[_0x2edf('0x2')]},'reason':{'type':Sequelize[_0x2edf('0x1')]}};
\ No newline at end of file
+var _0xb2fd=['DATE','STRING','moment','sequelize','exports'];(function(_0x2c21ee,_0x3424a5){var _0x2c18ef=function(_0x467991){while(--_0x467991){_0x2c21ee['push'](_0x2c21ee['shift']());}};_0x2c18ef(++_0x3424a5);}(_0xb2fd,0xb1));var _0xdb2f=function(_0x4abc0a,_0x2e6dc6){_0x4abc0a=_0x4abc0a-0x0;var _0x54c7cd=_0xb2fd[_0x4abc0a];return _0x54c7cd;};'use strict';var moment=require(_0xdb2f('0x0'));var Sequelize=require(_0xdb2f('0x1'));module[_0xdb2f('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xdb2f('0x3')]},'acceptAt':{'type':Sequelize[_0xdb2f('0x3')]},'exitAt':{'type':Sequelize[_0xdb2f('0x3')]},'reason':{'type':Sequelize[_0xdb2f('0x4')]}};
\ No newline at end of file
index ecdfb6e..eb4e2be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3ae=['map','SmsQueueReport','rawAttributes','type','key','model','query','intersection','attributes','fields','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','findAll','rows','show','keys','length','includeAll','catch','create','body','update','params','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','then','destroy','stack','name','send'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd3ae,0x65));var _0xed3a=function(_0x38c632,_0x14e8e6){_0x38c632=_0x38c632-0x0;var _0x12737e=_0xd3ae[_0x38c632];return _0x12737e;};'use strict';var emlformat=require(_0xed3a('0x0'));var rimraf=require(_0xed3a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xed3a('0x2'));var rp=require('request-promise');var moment=require(_0xed3a('0x3'));var BPromise=require(_0xed3a('0x4'));var Mustache=require(_0xed3a('0x5'));var util=require(_0xed3a('0x6'));var path=require(_0xed3a('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xed3a('0x8'));var fs=require('fs');var fs_extra=require(_0xed3a('0x9'));var _=require('lodash');var squel=require(_0xed3a('0xa'));var crypto=require('crypto');var jsforce=require(_0xed3a('0xb'));var deskjs=require(_0xed3a('0xc'));var toCsv=require(_0xed3a('0xd'));var querystring=require('querystring');var Papa=require(_0xed3a('0xe'));var Redis=require(_0xed3a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xed3a('0x10'));var as=require(_0xed3a('0x11'));var hardwareService=require(_0xed3a('0x12'));var logger=require(_0xed3a('0x13'))(_0xed3a('0x14'));var utils=require(_0xed3a('0x15'));var config=require(_0xed3a('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x303a3a,_0x1cc1a6){_0x1cc1a6=_0x1cc1a6||0xcc;return function(_0x226670){if(_0x226670){return _0x303a3a[_0xed3a('0x17')](_0x1cc1a6);}return _0x303a3a[_0xed3a('0x18')](_0x1cc1a6)[_0xed3a('0x19')]();};}function respondWithResult(_0x58ab5d,_0x3a7f92){_0x3a7f92=_0x3a7f92||0xc8;return function(_0x4e4e20){if(_0x4e4e20){return _0x58ab5d[_0xed3a('0x18')](_0x3a7f92)[_0xed3a('0x1a')](_0x4e4e20);}};}function respondWithFilteredResult(_0xfca430,_0x36b16a){return function(_0x1280fa){if(_0x1280fa){var _0x13a28f=typeof _0x36b16a[_0xed3a('0x1b')]===_0xed3a('0x1c')&&typeof _0x36b16a[_0xed3a('0x1d')]===_0xed3a('0x1c');var _0x3b51a9=_0x1280fa['count'];var _0x535eca=_0x13a28f?0x0:_0x36b16a[_0xed3a('0x1b')];var _0x2e6331=_0x13a28f?_0x1280fa[_0xed3a('0x1e')]:_0x36b16a[_0xed3a('0x1b')]+_0x36b16a[_0xed3a('0x1d')];var _0x4d981d;if(_0x2e6331>=_0x3b51a9){_0x2e6331=_0x3b51a9;_0x4d981d=0xc8;}else{_0x4d981d=0xce;}_0xfca430['status'](_0x4d981d);return _0xfca430[_0xed3a('0x1f')](_0xed3a('0x20'),_0x535eca+'-'+_0x2e6331+'/'+_0x3b51a9)[_0xed3a('0x1a')](_0x1280fa);}return null;};}function patchUpdates(_0x2f2af8){return function(_0x3897fe){try{jsonpatch['apply'](_0x3897fe,_0x2f2af8,!![]);}catch(_0x5825cb){return BPromise['reject'](_0x5825cb);}return _0x3897fe[_0xed3a('0x21')]();};}function saveUpdates(_0x27ed1d,_0xe7021){return function(_0x187a61){if(_0x187a61){return _0x187a61['update'](_0x27ed1d)[_0xed3a('0x22')](function(_0x23520c){return _0x23520c;});}return null;};}function removeEntity(_0x160131,_0x18c215){return function(_0x2ccc14){if(_0x2ccc14){return _0x2ccc14[_0xed3a('0x23')]()[_0xed3a('0x22')](function(){_0x160131[_0xed3a('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1dcabc,_0x52012b){return function(_0x53e47f){if(!_0x53e47f){_0x1dcabc['sendStatus'](0x194);}return _0x53e47f;};}function handleError(_0x5c9677,_0x381420){_0x381420=_0x381420||0x1f4;return function(_0x1335ce){logger['error'](_0x1335ce[_0xed3a('0x24')]);if(_0x1335ce['name']){delete _0x1335ce[_0xed3a('0x25')];}_0x5c9677[_0xed3a('0x18')](_0x381420)[_0xed3a('0x26')](_0x1335ce);};}exports['index']=function(_0x5ca26a,_0x42a8dd){var _0x18a35d={},_0x431d93={},_0x18fe63={'count':0x0,'rows':[]};var _0x14953f=_[_0xed3a('0x27')](db[_0xed3a('0x28')][_0xed3a('0x29')],function(_0x24394b){return{'name':_0x24394b['fieldName'],'type':_0x24394b[_0xed3a('0x2a')][_0xed3a('0x2b')]};});_0x431d93[_0xed3a('0x2c')]=_[_0xed3a('0x27')](_0x14953f,_0xed3a('0x25'));_0x431d93['query']=_['keys'](_0x5ca26a[_0xed3a('0x2d')]);_0x431d93['filters']=_[_0xed3a('0x2e')](_0x431d93[_0xed3a('0x2c')],_0x431d93[_0xed3a('0x2d')]);_0x18a35d[_0xed3a('0x2f')]=_[_0xed3a('0x2e')](_0x431d93[_0xed3a('0x2c')],qs[_0xed3a('0x30')](_0x5ca26a[_0xed3a('0x2d')]['fields']));_0x18a35d['attributes']=_0x18a35d[_0xed3a('0x2f')]['length']?_0x18a35d[_0xed3a('0x2f')]:_0x431d93[_0xed3a('0x2c')];if(!_0x5ca26a[_0xed3a('0x2d')]['hasOwnProperty']('nolimit')){_0x18a35d[_0xed3a('0x1d')]=qs[_0xed3a('0x1d')](_0x5ca26a[_0xed3a('0x2d')][_0xed3a('0x1d')]);_0x18a35d[_0xed3a('0x1b')]=qs[_0xed3a('0x1b')](_0x5ca26a[_0xed3a('0x2d')][_0xed3a('0x1b')]);}_0x18a35d['order']=qs[_0xed3a('0x31')](_0x5ca26a['query']['sort']);_0x18a35d[_0xed3a('0x32')]=qs['filters'](_[_0xed3a('0x33')](_0x5ca26a[_0xed3a('0x2d')],_0x431d93[_0xed3a('0x34')]),_0x14953f);if(_0x5ca26a['query'][_0xed3a('0x35')]){_0x18a35d[_0xed3a('0x32')]=_[_0xed3a('0x36')](_0x18a35d[_0xed3a('0x32')],{'$or':_[_0xed3a('0x27')](_0x14953f,function(_0x4ffc39){if(_0x4ffc39[_0xed3a('0x2a')]!==_0xed3a('0x37')){var _0x17d732={};_0x17d732[_0x4ffc39[_0xed3a('0x25')]]={'$like':'%'+_0x5ca26a[_0xed3a('0x2d')][_0xed3a('0x35')]+'%'};return _0x17d732;}})});}_0x18a35d=_[_0xed3a('0x36')]({},_0x18a35d,_0x5ca26a[_0xed3a('0x38')]);var _0x5a008a={'where':_0x18a35d['where']};return db[_0xed3a('0x28')][_0xed3a('0x1e')](_0x5a008a)[_0xed3a('0x22')](function(_0x5ddf7e){_0x18fe63[_0xed3a('0x1e')]=_0x5ddf7e;if(_0x5ca26a[_0xed3a('0x2d')]['includeAll']){_0x18a35d[_0xed3a('0x39')]=[{'all':!![]}];}return db[_0xed3a('0x28')][_0xed3a('0x3a')](_0x18a35d);})['then'](function(_0xd92807){_0x18fe63[_0xed3a('0x3b')]=_0xd92807;return _0x18fe63;})[_0xed3a('0x22')](respondWithFilteredResult(_0x42a8dd,_0x18a35d))['catch'](handleError(_0x42a8dd,null));};exports[_0xed3a('0x3c')]=function(_0x3010f8,_0x391d0e){var _0x5748dd={'raw':!![],'where':{'id':_0x3010f8['params']['id']}},_0x213478={};_0x213478[_0xed3a('0x2c')]=_[_0xed3a('0x3d')](db[_0xed3a('0x28')][_0xed3a('0x29')]);_0x213478['query']=_['keys'](_0x3010f8[_0xed3a('0x2d')]);_0x213478[_0xed3a('0x34')]=_['intersection'](_0x213478[_0xed3a('0x2c')],_0x213478['query']);_0x5748dd[_0xed3a('0x2f')]=_[_0xed3a('0x2e')](_0x213478[_0xed3a('0x2c')],qs[_0xed3a('0x30')](_0x3010f8['query'][_0xed3a('0x30')]));_0x5748dd['attributes']=_0x5748dd[_0xed3a('0x2f')][_0xed3a('0x3e')]?_0x5748dd[_0xed3a('0x2f')]:_0x213478[_0xed3a('0x2c')];if(_0x3010f8['query'][_0xed3a('0x3f')]){_0x5748dd[_0xed3a('0x39')]=[{'all':!![]}];}_0x5748dd=_[_0xed3a('0x36')]({},_0x5748dd,_0x3010f8[_0xed3a('0x38')]);return db[_0xed3a('0x28')]['find'](_0x5748dd)['then'](handleEntityNotFound(_0x391d0e,null))[_0xed3a('0x22')](respondWithResult(_0x391d0e,null))[_0xed3a('0x40')](handleError(_0x391d0e,null));};exports[_0xed3a('0x41')]=function(_0x3090da,_0x290092){return db[_0xed3a('0x28')]['create'](_0x3090da[_0xed3a('0x42')],{})[_0xed3a('0x22')](respondWithResult(_0x290092,0xc9))[_0xed3a('0x40')](handleError(_0x290092,null));};exports[_0xed3a('0x43')]=function(_0x386e73,_0x29d38f){if(_0x386e73[_0xed3a('0x42')]['id']){delete _0x386e73[_0xed3a('0x42')]['id'];}return db[_0xed3a('0x28')]['find']({'where':{'id':_0x386e73[_0xed3a('0x44')]['id']}})[_0xed3a('0x22')](handleEntityNotFound(_0x29d38f,null))[_0xed3a('0x22')](saveUpdates(_0x386e73[_0xed3a('0x42')],null))[_0xed3a('0x22')](respondWithResult(_0x29d38f,null))[_0xed3a('0x40')](handleError(_0x29d38f,null));};exports['destroy']=function(_0x49da30,_0x3c72a5){return db['SmsQueueReport']['find']({'where':{'id':_0x49da30[_0xed3a('0x44')]['id']}})['then'](handleEntityNotFound(_0x3c72a5,null))[_0xed3a('0x22')](removeEntity(_0x3c72a5,null))[_0xed3a('0x40')](handleError(_0x3c72a5,null));};exports[_0xed3a('0x45')]=function(_0x5eef2f,_0x798be9){return db[_0xed3a('0x28')][_0xed3a('0x45')]()[_0xed3a('0x22')](respondWithResult(_0x798be9,null))[_0xed3a('0x40')](handleError(_0x798be9,null));};
\ No newline at end of file
+var _0xbc21=['save','update','then','end','error','stack','name','send','SmsQueueReport','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','destroy','describe','rimraf','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply'];(function(_0x2e9f44,_0x56a9d1){var _0x1ec7d6=function(_0x3451ac){while(--_0x3451ac){_0x2e9f44['push'](_0x2e9f44['shift']());}};_0x1ec7d6(++_0x56a9d1);}(_0xbc21,0x10a));var _0x1bc2=function(_0x9471c2,_0x5af891){_0x9471c2=_0x9471c2-0x0;var _0x2997da=_0xbc21[_0x9471c2];return _0x2997da;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1bc2('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1bc2('0x1'));var moment=require(_0x1bc2('0x2'));var BPromise=require(_0x1bc2('0x3'));var Mustache=require(_0x1bc2('0x4'));var util=require(_0x1bc2('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x1bc2('0x6'));var ejs=require(_0x1bc2('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1bc2('0x8'));var squel=require(_0x1bc2('0x9'));var crypto=require(_0x1bc2('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x1bc2('0xb'));var toCsv=require('to-csv');var querystring=require(_0x1bc2('0xc'));var Papa=require('papaparse');var Redis=require(_0x1bc2('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x1bc2('0xe'));var as=require(_0x1bc2('0xf'));var hardwareService=require(_0x1bc2('0x10'));var logger=require(_0x1bc2('0x11'))(_0x1bc2('0x12'));var utils=require('../../config/utils');var config=require(_0x1bc2('0x13'));var licenseUtil=require(_0x1bc2('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33a5ce,_0x5a9c60){_0x5a9c60=_0x5a9c60||0xcc;return function(_0x2c579b){if(_0x2c579b){return _0x33a5ce[_0x1bc2('0x15')](_0x5a9c60);}return _0x33a5ce[_0x1bc2('0x16')](_0x5a9c60)['end']();};}function respondWithResult(_0x42d247,_0x467130){_0x467130=_0x467130||0xc8;return function(_0x21f8ce){if(_0x21f8ce){return _0x42d247['status'](_0x467130)[_0x1bc2('0x17')](_0x21f8ce);}};}function respondWithFilteredResult(_0x1ba664,_0x263a57){return function(_0x497d3c){if(_0x497d3c){var _0x3c59e6=typeof _0x263a57[_0x1bc2('0x18')]===_0x1bc2('0x19')&&typeof _0x263a57['limit']==='undefined';var _0x42cfbf=_0x497d3c['count'];var _0x55b7e2=_0x3c59e6?0x0:_0x263a57[_0x1bc2('0x18')];var _0x461468=_0x3c59e6?_0x497d3c[_0x1bc2('0x1a')]:_0x263a57[_0x1bc2('0x18')]+_0x263a57['limit'];var _0x429f66;if(_0x461468>=_0x42cfbf){_0x461468=_0x42cfbf;_0x429f66=0xc8;}else{_0x429f66=0xce;}_0x1ba664['status'](_0x429f66);return _0x1ba664[_0x1bc2('0x1b')](_0x1bc2('0x1c'),_0x55b7e2+'-'+_0x461468+'/'+_0x42cfbf)[_0x1bc2('0x17')](_0x497d3c);}return null;};}function patchUpdates(_0x277d58){return function(_0x10b2ba){try{jsonpatch[_0x1bc2('0x1d')](_0x10b2ba,_0x277d58,!![]);}catch(_0x5af379){return BPromise['reject'](_0x5af379);}return _0x10b2ba[_0x1bc2('0x1e')]();};}function saveUpdates(_0x5190bd,_0x202f56){return function(_0x24e2d1){if(_0x24e2d1){return _0x24e2d1[_0x1bc2('0x1f')](_0x5190bd)[_0x1bc2('0x20')](function(_0x16b57f){return _0x16b57f;});}return null;};}function removeEntity(_0x4f23d7,_0x31fa55){return function(_0x47a028){if(_0x47a028){return _0x47a028['destroy']()[_0x1bc2('0x20')](function(){_0x4f23d7[_0x1bc2('0x16')](0xcc)[_0x1bc2('0x21')]();});}};}function handleEntityNotFound(_0x100a50,_0x1b1d3d){return function(_0x2e1832){if(!_0x2e1832){_0x100a50['sendStatus'](0x194);}return _0x2e1832;};}function handleError(_0x575da8,_0x186bcb){_0x186bcb=_0x186bcb||0x1f4;return function(_0x2c8270){logger[_0x1bc2('0x22')](_0x2c8270[_0x1bc2('0x23')]);if(_0x2c8270[_0x1bc2('0x24')]){delete _0x2c8270[_0x1bc2('0x24')];}_0x575da8[_0x1bc2('0x16')](_0x186bcb)[_0x1bc2('0x25')](_0x2c8270);};}exports['index']=function(_0x30184c,_0x381905){var _0x2d1952={},_0x5e62b0={},_0x44bfde={'count':0x0,'rows':[]};var _0x2fd887=_['map'](db[_0x1bc2('0x26')]['rawAttributes'],function(_0x5c03e3){return{'name':_0x5c03e3[_0x1bc2('0x27')],'type':_0x5c03e3[_0x1bc2('0x28')][_0x1bc2('0x29')]};});_0x5e62b0[_0x1bc2('0x2a')]=_[_0x1bc2('0x2b')](_0x2fd887,_0x1bc2('0x24'));_0x5e62b0[_0x1bc2('0x2c')]=_[_0x1bc2('0x2d')](_0x30184c[_0x1bc2('0x2c')]);_0x5e62b0[_0x1bc2('0x2e')]=_[_0x1bc2('0x2f')](_0x5e62b0['model'],_0x5e62b0[_0x1bc2('0x2c')]);_0x2d1952[_0x1bc2('0x30')]=_['intersection'](_0x5e62b0[_0x1bc2('0x2a')],qs[_0x1bc2('0x31')](_0x30184c[_0x1bc2('0x2c')]['fields']));_0x2d1952['attributes']=_0x2d1952[_0x1bc2('0x30')][_0x1bc2('0x32')]?_0x2d1952[_0x1bc2('0x30')]:_0x5e62b0[_0x1bc2('0x2a')];if(!_0x30184c[_0x1bc2('0x2c')][_0x1bc2('0x33')](_0x1bc2('0x34'))){_0x2d1952[_0x1bc2('0x35')]=qs[_0x1bc2('0x35')](_0x30184c['query'][_0x1bc2('0x35')]);_0x2d1952['offset']=qs[_0x1bc2('0x18')](_0x30184c[_0x1bc2('0x2c')][_0x1bc2('0x18')]);}_0x2d1952['order']=qs[_0x1bc2('0x36')](_0x30184c['query'][_0x1bc2('0x36')]);_0x2d1952[_0x1bc2('0x37')]=qs[_0x1bc2('0x2e')](_[_0x1bc2('0x38')](_0x30184c[_0x1bc2('0x2c')],_0x5e62b0[_0x1bc2('0x2e')]),_0x2fd887);if(_0x30184c[_0x1bc2('0x2c')][_0x1bc2('0x39')]){_0x2d1952['where']=_[_0x1bc2('0x3a')](_0x2d1952[_0x1bc2('0x37')],{'$or':_[_0x1bc2('0x2b')](_0x2fd887,function(_0x29a093){if(_0x29a093[_0x1bc2('0x28')]!==_0x1bc2('0x3b')){var _0x49a301={};_0x49a301[_0x29a093[_0x1bc2('0x24')]]={'$like':'%'+_0x30184c[_0x1bc2('0x2c')][_0x1bc2('0x39')]+'%'};return _0x49a301;}})});}_0x2d1952=_[_0x1bc2('0x3a')]({},_0x2d1952,_0x30184c[_0x1bc2('0x3c')]);var _0x5b9f2b={'where':_0x2d1952[_0x1bc2('0x37')]};return db['SmsQueueReport'][_0x1bc2('0x1a')](_0x5b9f2b)['then'](function(_0x41910c){_0x44bfde[_0x1bc2('0x1a')]=_0x41910c;if(_0x30184c[_0x1bc2('0x2c')][_0x1bc2('0x3d')]){_0x2d1952['include']=[{'all':!![]}];}return db[_0x1bc2('0x26')][_0x1bc2('0x3e')](_0x2d1952);})[_0x1bc2('0x20')](function(_0x5975a3){_0x44bfde[_0x1bc2('0x3f')]=_0x5975a3;return _0x44bfde;})[_0x1bc2('0x20')](respondWithFilteredResult(_0x381905,_0x2d1952))[_0x1bc2('0x40')](handleError(_0x381905,null));};exports[_0x1bc2('0x41')]=function(_0x4341e4,_0x33bf8d){var _0x47e63a={'raw':!![],'where':{'id':_0x4341e4[_0x1bc2('0x42')]['id']}},_0x37f8ab={};_0x37f8ab[_0x1bc2('0x2a')]=_[_0x1bc2('0x2d')](db[_0x1bc2('0x26')][_0x1bc2('0x43')]);_0x37f8ab['query']=_[_0x1bc2('0x2d')](_0x4341e4[_0x1bc2('0x2c')]);_0x37f8ab[_0x1bc2('0x2e')]=_['intersection'](_0x37f8ab[_0x1bc2('0x2a')],_0x37f8ab[_0x1bc2('0x2c')]);_0x47e63a[_0x1bc2('0x30')]=_[_0x1bc2('0x2f')](_0x37f8ab[_0x1bc2('0x2a')],qs[_0x1bc2('0x31')](_0x4341e4[_0x1bc2('0x2c')]['fields']));_0x47e63a['attributes']=_0x47e63a[_0x1bc2('0x30')]['length']?_0x47e63a[_0x1bc2('0x30')]:_0x37f8ab[_0x1bc2('0x2a')];if(_0x4341e4['query'][_0x1bc2('0x3d')]){_0x47e63a[_0x1bc2('0x44')]=[{'all':!![]}];}_0x47e63a=_[_0x1bc2('0x3a')]({},_0x47e63a,_0x4341e4[_0x1bc2('0x3c')]);return db[_0x1bc2('0x26')][_0x1bc2('0x45')](_0x47e63a)[_0x1bc2('0x20')](handleEntityNotFound(_0x33bf8d,null))[_0x1bc2('0x20')](respondWithResult(_0x33bf8d,null))[_0x1bc2('0x40')](handleError(_0x33bf8d,null));};exports[_0x1bc2('0x46')]=function(_0x175604,_0x1935d6){return db[_0x1bc2('0x26')][_0x1bc2('0x46')](_0x175604[_0x1bc2('0x47')],{})['then'](respondWithResult(_0x1935d6,0xc9))['catch'](handleError(_0x1935d6,null));};exports[_0x1bc2('0x1f')]=function(_0x59a65a,_0x847443){if(_0x59a65a[_0x1bc2('0x47')]['id']){delete _0x59a65a[_0x1bc2('0x47')]['id'];}return db[_0x1bc2('0x26')][_0x1bc2('0x45')]({'where':{'id':_0x59a65a['params']['id']}})[_0x1bc2('0x20')](handleEntityNotFound(_0x847443,null))[_0x1bc2('0x20')](saveUpdates(_0x59a65a[_0x1bc2('0x47')],null))[_0x1bc2('0x20')](respondWithResult(_0x847443,null))['catch'](handleError(_0x847443,null));};exports[_0x1bc2('0x48')]=function(_0x2ad450,_0x5b71a4){return db[_0x1bc2('0x26')][_0x1bc2('0x45')]({'where':{'id':_0x2ad450['params']['id']}})[_0x1bc2('0x20')](handleEntityNotFound(_0x5b71a4,null))[_0x1bc2('0x20')](removeEntity(_0x5b71a4,null))[_0x1bc2('0x40')](handleError(_0x5b71a4,null));};exports[_0x1bc2('0x49')]=function(_0x1a073d,_0x3564eb){return db[_0x1bc2('0x26')][_0x1bc2('0x49')]()[_0x1bc2('0x20')](respondWithResult(_0x3564eb,null))['catch'](handleError(_0x3564eb,null));};
\ No newline at end of file
index 50073fb..64288df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index a450a7f..31a6304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5ba=['CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','debug','UpdateSmsQueueReport','where','attributes','lodash','util','moment','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','request','then','info','SmsQueueReport,\x20%s,\x20%s','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x55bc6c,_0x1f7ab1){var _0x5300ec=function(_0x486f49){while(--_0x486f49){_0x55bc6c['push'](_0x55bc6c['shift']());}};_0x5300ec(++_0x1f7ab1);}(_0xd5ba,0x82));var _0xad5b=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xd5ba[_0x279d37];return _0x530173;};'use strict';var _=require(_0xad5b('0x0'));var util=require(_0xad5b('0x1'));var moment=require(_0xad5b('0x2'));var BPromise=require('bluebird');var rs=require(_0xad5b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xad5b('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xad5b('0x5'));var config=require(_0xad5b('0x6'));var jayson=require(_0xad5b('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x26f20c,_0x13f2c8,_0x18f37c){return new BPromise(function(_0x25c672,_0x289c24){return client[_0xad5b('0x8')](_0x26f20c,_0x18f37c)[_0xad5b('0x9')](function(_0x257e91){logger[_0xad5b('0xa')](_0xad5b('0xb'),_0x13f2c8,'request\x20sent');logger['debug'](_0xad5b('0xc'),_0x13f2c8,_0xad5b('0xd'),JSON[_0xad5b('0xe')](_0x257e91));if(_0x257e91[_0xad5b('0xf')]){if(_0x257e91[_0xad5b('0xf')][_0xad5b('0x10')]===0x1f4){logger['error'](_0xad5b('0xb'),_0x13f2c8,_0x257e91[_0xad5b('0xf')][_0xad5b('0x11')]);return _0x289c24(_0x257e91[_0xad5b('0xf')][_0xad5b('0x11')]);}logger['error'](_0xad5b('0xb'),_0x13f2c8,_0x257e91[_0xad5b('0xf')][_0xad5b('0x11')]);return _0x25c672(_0x257e91['error']['message']);}else{logger[_0xad5b('0xa')](_0xad5b('0xb'),_0x13f2c8,_0xad5b('0xd'));_0x25c672(_0x257e91[_0xad5b('0x12')][_0xad5b('0x11')]);}})[_0xad5b('0x13')](function(_0x178932){logger[_0xad5b('0xf')](_0xad5b('0xb'),_0x13f2c8,_0x178932);_0x289c24(_0x178932);});});}exports[_0xad5b('0x14')]=function(_0x442db0){var _0x115994=this;return new Promise(function(_0x80d008,_0x87a22b){return db[_0xad5b('0x15')][_0xad5b('0x16')](_0x442db0[_0xad5b('0x17')],{'raw':_0x442db0[_0xad5b('0x18')]?_0x442db0['options'][_0xad5b('0x19')]===undefined?!![]:![]:!![]})[_0xad5b('0x9')](function(_0x1d2f5c){logger['info'](_0xad5b('0x14'),_0x442db0);logger[_0xad5b('0x1a')](_0xad5b('0x14'),_0x442db0,JSON[_0xad5b('0xe')](_0x1d2f5c));_0x80d008(_0x1d2f5c);})[_0xad5b('0x13')](function(_0x2548d7){logger[_0xad5b('0xf')]('CreateSmsQueueReport',_0x2548d7['message'],_0x442db0);_0x87a22b(_0x115994['error'](0x1f4,_0x2548d7[_0xad5b('0x11')]));});});};exports[_0xad5b('0x1b')]=function(_0x2af13c){var _0xf3f1d1=this;return new Promise(function(_0x299ebc,_0x524f1f){return db[_0xad5b('0x15')]['update'](_0x2af13c['body'],{'raw':_0x2af13c[_0xad5b('0x18')]?_0x2af13c['options'][_0xad5b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2af13c[_0xad5b('0x18')]?_0x2af13c[_0xad5b('0x18')][_0xad5b('0x1c')]||null:null,'attributes':_0x2af13c[_0xad5b('0x18')]?_0x2af13c[_0xad5b('0x18')][_0xad5b('0x1d')]||null:null,'limit':_0x2af13c[_0xad5b('0x18')]?_0x2af13c[_0xad5b('0x18')]['limit']||null:null})['then'](function(_0x705b58){logger[_0xad5b('0xa')](_0xad5b('0x1b'),_0x2af13c);logger[_0xad5b('0x1a')](_0xad5b('0x1b'),_0x2af13c,JSON[_0xad5b('0xe')](_0x705b58));_0x299ebc(_0x705b58);})[_0xad5b('0x13')](function(_0x6c184){logger[_0xad5b('0xf')](_0xad5b('0x1b'),_0x6c184[_0xad5b('0x11')],_0x2af13c);_0x524f1f(_0xf3f1d1['error'](0x1f4,_0x6c184[_0xad5b('0x11')]));});});};
\ No newline at end of file
+var _0x0e7a=['client','request','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','body','options','raw','UpdateSmsQueueReport','update','attributes','limit','then','stringify','util','bluebird','randomstring','ioredis','../../config/utils','../../config/environment'];(function(_0x46aecd,_0x368362){var _0x345cf2=function(_0x496c8d){while(--_0x496c8d){_0x46aecd['push'](_0x46aecd['shift']());}};_0x345cf2(++_0x368362);}(_0x0e7a,0x139));var _0xa0e7=function(_0x3896ea,_0x489972){_0x3896ea=_0x3896ea-0x0;var _0x3527bf=_0x0e7a[_0x3896ea];return _0x3527bf;};'use strict';var _=require('lodash');var util=require(_0xa0e7('0x0'));var moment=require('moment');var BPromise=require(_0xa0e7('0x1'));var rs=require(_0xa0e7('0x2'));var fs=require('fs');var Redis=require(_0xa0e7('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa0e7('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xa0e7('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xa0e7('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5b2b9c,_0x1ce4fd,_0x285bbf){return new BPromise(function(_0x5c5318,_0x40c47b){return client[_0xa0e7('0x7')](_0x5b2b9c,_0x285bbf)['then'](function(_0x58b2e9){logger[_0xa0e7('0x8')](_0xa0e7('0x9'),_0x1ce4fd,_0xa0e7('0xa'));logger[_0xa0e7('0xb')](_0xa0e7('0xc'),_0x1ce4fd,_0xa0e7('0xa'),JSON['stringify'](_0x58b2e9));if(_0x58b2e9[_0xa0e7('0xd')]){if(_0x58b2e9[_0xa0e7('0xd')][_0xa0e7('0xe')]===0x1f4){logger[_0xa0e7('0xd')](_0xa0e7('0x9'),_0x1ce4fd,_0x58b2e9[_0xa0e7('0xd')]['message']);return _0x40c47b(_0x58b2e9[_0xa0e7('0xd')][_0xa0e7('0xf')]);}logger[_0xa0e7('0xd')]('SmsQueueReport,\x20%s,\x20%s',_0x1ce4fd,_0x58b2e9['error'][_0xa0e7('0xf')]);return _0x5c5318(_0x58b2e9[_0xa0e7('0xd')][_0xa0e7('0xf')]);}else{logger[_0xa0e7('0x8')](_0xa0e7('0x9'),_0x1ce4fd,_0xa0e7('0xa'));_0x5c5318(_0x58b2e9[_0xa0e7('0x10')][_0xa0e7('0xf')]);}})[_0xa0e7('0x11')](function(_0xeb26f0){logger[_0xa0e7('0xd')](_0xa0e7('0x9'),_0x1ce4fd,_0xeb26f0);_0x40c47b(_0xeb26f0);});});}exports[_0xa0e7('0x12')]=function(_0xb633aa){var _0x24c86f=this;return new Promise(function(_0x4a86ab,_0x3ea1cf){return db[_0xa0e7('0x13')]['create'](_0xb633aa[_0xa0e7('0x14')],{'raw':_0xb633aa['options']?_0xb633aa[_0xa0e7('0x15')][_0xa0e7('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x4efded){logger[_0xa0e7('0x8')](_0xa0e7('0x12'),_0xb633aa);logger[_0xa0e7('0xb')](_0xa0e7('0x12'),_0xb633aa,JSON['stringify'](_0x4efded));_0x4a86ab(_0x4efded);})[_0xa0e7('0x11')](function(_0xa191a){logger[_0xa0e7('0xd')](_0xa0e7('0x12'),_0xa191a['message'],_0xb633aa);_0x3ea1cf(_0x24c86f['error'](0x1f4,_0xa191a[_0xa0e7('0xf')]));});});};exports[_0xa0e7('0x17')]=function(_0x7a5df2){var _0x2f7168=this;return new Promise(function(_0xbae671,_0x42eb5d){return db[_0xa0e7('0x13')][_0xa0e7('0x18')](_0x7a5df2[_0xa0e7('0x14')],{'raw':_0x7a5df2[_0xa0e7('0x15')]?_0x7a5df2[_0xa0e7('0x15')][_0xa0e7('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x7a5df2[_0xa0e7('0x15')]?_0x7a5df2[_0xa0e7('0x15')]['where']||null:null,'attributes':_0x7a5df2['options']?_0x7a5df2['options'][_0xa0e7('0x19')]||null:null,'limit':_0x7a5df2[_0xa0e7('0x15')]?_0x7a5df2[_0xa0e7('0x15')][_0xa0e7('0x1a')]||null:null})[_0xa0e7('0x1b')](function(_0x12eb6f){logger['info']('UpdateSmsQueueReport',_0x7a5df2);logger['debug'](_0xa0e7('0x17'),_0x7a5df2,JSON[_0xa0e7('0x1c')](_0x12eb6f));_0xbae671(_0x12eb6f);})[_0xa0e7('0x11')](function(_0x492536){logger[_0xa0e7('0xd')](_0xa0e7('0x17'),_0x492536['message'],_0x7a5df2);_0x42eb5d(_0x2f7168[_0xa0e7('0xd')](0x1f4,_0x492536[_0xa0e7('0xf')]));});});};
\ No newline at end of file
index dcd4acd..8e2ff3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd0f=['index','/describe','describe','/:id','show','post','put','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated'];(function(_0x37ff3d,_0x2c06de){var _0x3ed104=function(_0x2a8a08){while(--_0x2a8a08){_0x37ff3d['push'](_0x37ff3d['shift']());}};_0x3ed104(++_0x2c06de);}(_0xfd0f,0x1b8));var _0xffd0=function(_0x190ce1,_0x4ee5c8){_0x190ce1=_0x190ce1-0x0;var _0x380f9b=_0xfd0f[_0x190ce1];return _0x380f9b;};'use strict';var multer=require(_0xffd0('0x0'));var util=require(_0xffd0('0x1'));var path=require('path');var timeout=require(_0xffd0('0x2'));var express=require(_0xffd0('0x3'));var router=express[_0xffd0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xffd0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xffd0('0x6'));var controller=require(_0xffd0('0x7'));router[_0xffd0('0x8')]('/',auth[_0xffd0('0x9')](),controller[_0xffd0('0xa')]);router[_0xffd0('0x8')](_0xffd0('0xb'),auth[_0xffd0('0x9')](),controller[_0xffd0('0xc')]);router['get'](_0xffd0('0xd'),auth[_0xffd0('0x9')](),controller[_0xffd0('0xe')]);router[_0xffd0('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xffd0('0x10')](_0xffd0('0xd'),auth[_0xffd0('0x9')](),controller['update']);router['delete'](_0xffd0('0xd'),auth[_0xffd0('0x9')](),controller['destroy']);module[_0xffd0('0x11')]=router;
\ No newline at end of file
+var _0x1224=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x1e2018,_0xf72ec9){var _0x73abb4=function(_0x118e79){while(--_0x118e79){_0x1e2018['push'](_0x1e2018['shift']());}};_0x73abb4(++_0xf72ec9);}(_0x1224,0x10d));var _0x4122=function(_0x29e871,_0x330b98){_0x29e871=_0x29e871-0x0;var _0x3380e3=_0x1224[_0x29e871];return _0x3380e3;};'use strict';var multer=require(_0x4122('0x0'));var util=require(_0x4122('0x1'));var path=require(_0x4122('0x2'));var timeout=require(_0x4122('0x3'));var express=require(_0x4122('0x4'));var router=express[_0x4122('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4122('0x6'));var interaction=require(_0x4122('0x7'));var config=require(_0x4122('0x8'));var controller=require('./smsTransferReport.controller');router[_0x4122('0x9')]('/',auth[_0x4122('0xa')](),controller[_0x4122('0xb')]);router[_0x4122('0x9')](_0x4122('0xc'),auth[_0x4122('0xa')](),controller[_0x4122('0xd')]);router[_0x4122('0x9')](_0x4122('0xe'),auth[_0x4122('0xa')](),controller[_0x4122('0xf')]);router[_0x4122('0x10')]('/',auth[_0x4122('0xa')](),controller[_0x4122('0x11')]);router[_0x4122('0x12')](_0x4122('0xe'),auth[_0x4122('0xa')](),controller[_0x4122('0x13')]);router[_0x4122('0x14')](_0x4122('0xe'),auth[_0x4122('0xa')](),controller[_0x4122('0x15')]);module[_0x4122('0x16')]=router;
\ No newline at end of file
index 89b7fc2..e84fcaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x4ffa11,_0x120051){var _0x1f669d=function(_0x44b3ab){while(--_0x44b3ab){_0x4ffa11['push'](_0x4ffa11['shift']());}};_0x1f669d(++_0x120051);}(_0x4b84,0x1cc));var _0x44b8=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x4b84[_0x2d7f0e];return _0x110b07;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x123650,_0x35faac){var _0x1fcc93=function(_0x1658b9){while(--_0x1658b9){_0x123650['push'](_0x123650['shift']());}};_0x1fcc93(++_0x35faac);}(_0x4b84,0x1cc));var _0x44b8=function(_0x9a3e0f,_0x2f796d){_0x9a3e0f=_0x9a3e0f-0x0;var _0x3d2a9a=_0x4b84[_0x9a3e0f];return _0x3d2a9a;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index bdfb589..66086bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cfa=['fields','length','model','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','SmsTransferReport','then','include','findAll','rows','catch','show','rawAttributes','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','Content-Range','apply','save','update','end','error','name','send','index','map','fieldName','key','query','keys','filters','intersection','attributes'];(function(_0x2cbdaf,_0x4a5412){var _0x548a3f=function(_0x1ca11d){while(--_0x1ca11d){_0x2cbdaf['push'](_0x2cbdaf['shift']());}};_0x548a3f(++_0x4a5412);}(_0x3cfa,0x14e));var _0xa3cf=function(_0x2bc263,_0x2fd0c0){_0x2bc263=_0x2bc263-0x0;var _0x5f1f88=_0x3cfa[_0x2bc263];return _0x5f1f88;};'use strict';var emlformat=require(_0xa3cf('0x0'));var rimraf=require(_0xa3cf('0x1'));var zipdir=require(_0xa3cf('0x2'));var jsonpatch=require(_0xa3cf('0x3'));var rp=require('request-promise');var moment=require(_0xa3cf('0x4'));var BPromise=require(_0xa3cf('0x5'));var Mustache=require(_0xa3cf('0x6'));var util=require(_0xa3cf('0x7'));var path=require('path');var sox=require(_0xa3cf('0x8'));var csv=require(_0xa3cf('0x9'));var ejs=require(_0xa3cf('0xa'));var fs=require('fs');var fs_extra=require(_0xa3cf('0xb'));var _=require(_0xa3cf('0xc'));var squel=require(_0xa3cf('0xd'));var crypto=require(_0xa3cf('0xe'));var jsforce=require(_0xa3cf('0xf'));var deskjs=require(_0xa3cf('0x10'));var toCsv=require(_0xa3cf('0x9'));var querystring=require(_0xa3cf('0x11'));var Papa=require(_0xa3cf('0x12'));var Redis=require(_0xa3cf('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xa3cf('0x14'));var as=require(_0xa3cf('0x15'));var hardwareService=require(_0xa3cf('0x16'));var logger=require(_0xa3cf('0x17'))('api');var utils=require(_0xa3cf('0x18'));var config=require(_0xa3cf('0x19'));var licenseUtil=require(_0xa3cf('0x1a'));var db=require(_0xa3cf('0x1b'))['db'];function respondWithStatusCode(_0x180889,_0x290c28){_0x290c28=_0x290c28||0xcc;return function(_0x37bc59){if(_0x37bc59){return _0x180889[_0xa3cf('0x1c')](_0x290c28);}return _0x180889[_0xa3cf('0x1d')](_0x290c28)['end']();};}function respondWithResult(_0x21bc56,_0x13ae49){_0x13ae49=_0x13ae49||0xc8;return function(_0x28cefe){if(_0x28cefe){return _0x21bc56[_0xa3cf('0x1d')](_0x13ae49)[_0xa3cf('0x1e')](_0x28cefe);}};}function respondWithFilteredResult(_0x1e8a39,_0x1d5d82){return function(_0x3bf3b3){if(_0x3bf3b3){var _0x27552f=typeof _0x1d5d82[_0xa3cf('0x1f')]==='undefined'&&typeof _0x1d5d82[_0xa3cf('0x20')]==='undefined';var _0x56fb0b=_0x3bf3b3['count'];var _0x1ce443=_0x27552f?0x0:_0x1d5d82[_0xa3cf('0x1f')];var _0x1d5b4b=_0x27552f?_0x3bf3b3[_0xa3cf('0x21')]:_0x1d5d82[_0xa3cf('0x1f')]+_0x1d5d82[_0xa3cf('0x20')];var _0x210003;if(_0x1d5b4b>=_0x56fb0b){_0x1d5b4b=_0x56fb0b;_0x210003=0xc8;}else{_0x210003=0xce;}_0x1e8a39[_0xa3cf('0x1d')](_0x210003);return _0x1e8a39['set'](_0xa3cf('0x22'),_0x1ce443+'-'+_0x1d5b4b+'/'+_0x56fb0b)['json'](_0x3bf3b3);}return null;};}function patchUpdates(_0x32ffc1){return function(_0x28a9e3){try{jsonpatch[_0xa3cf('0x23')](_0x28a9e3,_0x32ffc1,!![]);}catch(_0x943c0){return BPromise['reject'](_0x943c0);}return _0x28a9e3[_0xa3cf('0x24')]();};}function saveUpdates(_0x108b91,_0x3f45d6){return function(_0x2b62fc){if(_0x2b62fc){return _0x2b62fc[_0xa3cf('0x25')](_0x108b91)['then'](function(_0x1d74b8){return _0x1d74b8;});}return null;};}function removeEntity(_0x29e967,_0x2fe869){return function(_0x1263c9){if(_0x1263c9){return _0x1263c9['destroy']()['then'](function(){_0x29e967[_0xa3cf('0x1d')](0xcc)[_0xa3cf('0x26')]();});}};}function handleEntityNotFound(_0xb9bee5,_0x3ff61c){return function(_0x358afd){if(!_0x358afd){_0xb9bee5[_0xa3cf('0x1c')](0x194);}return _0x358afd;};}function handleError(_0x45fd71,_0x382ff2){_0x382ff2=_0x382ff2||0x1f4;return function(_0x1bcf93){logger[_0xa3cf('0x27')](_0x1bcf93['stack']);if(_0x1bcf93[_0xa3cf('0x28')]){delete _0x1bcf93[_0xa3cf('0x28')];}_0x45fd71[_0xa3cf('0x1d')](_0x382ff2)[_0xa3cf('0x29')](_0x1bcf93);};}exports[_0xa3cf('0x2a')]=function(_0x5a6876,_0x18fa9c){var _0x36416d={},_0x34fc3d={},_0x224ebc={'count':0x0,'rows':[]};var _0x287115=_[_0xa3cf('0x2b')](db['SmsTransferReport']['rawAttributes'],function(_0xac8cea){return{'name':_0xac8cea[_0xa3cf('0x2c')],'type':_0xac8cea['type'][_0xa3cf('0x2d')]};});_0x34fc3d['model']=_[_0xa3cf('0x2b')](_0x287115,_0xa3cf('0x28'));_0x34fc3d[_0xa3cf('0x2e')]=_[_0xa3cf('0x2f')](_0x5a6876[_0xa3cf('0x2e')]);_0x34fc3d[_0xa3cf('0x30')]=_[_0xa3cf('0x31')](_0x34fc3d['model'],_0x34fc3d[_0xa3cf('0x2e')]);_0x36416d[_0xa3cf('0x32')]=_[_0xa3cf('0x31')](_0x34fc3d['model'],qs[_0xa3cf('0x33')](_0x5a6876[_0xa3cf('0x2e')][_0xa3cf('0x33')]));_0x36416d[_0xa3cf('0x32')]=_0x36416d[_0xa3cf('0x32')][_0xa3cf('0x34')]?_0x36416d['attributes']:_0x34fc3d[_0xa3cf('0x35')];if(!_0x5a6876[_0xa3cf('0x2e')][_0xa3cf('0x36')](_0xa3cf('0x37'))){_0x36416d['limit']=qs[_0xa3cf('0x20')](_0x5a6876['query'][_0xa3cf('0x20')]);_0x36416d[_0xa3cf('0x1f')]=qs['offset'](_0x5a6876['query'][_0xa3cf('0x1f')]);}_0x36416d[_0xa3cf('0x38')]=qs[_0xa3cf('0x39')](_0x5a6876[_0xa3cf('0x2e')]['sort']);_0x36416d[_0xa3cf('0x3a')]=qs['filters'](_['pick'](_0x5a6876['query'],_0x34fc3d[_0xa3cf('0x30')]),_0x287115);if(_0x5a6876['query']['filter']){_0x36416d['where']=_[_0xa3cf('0x3b')](_0x36416d[_0xa3cf('0x3a')],{'$or':_[_0xa3cf('0x2b')](_0x287115,function(_0x547f80){if(_0x547f80[_0xa3cf('0x3c')]!=='VIRTUAL'){var _0x446222={};_0x446222[_0x547f80[_0xa3cf('0x28')]]={'$like':'%'+_0x5a6876['query'][_0xa3cf('0x3d')]+'%'};return _0x446222;}})});}_0x36416d=_['merge']({},_0x36416d,_0x5a6876[_0xa3cf('0x3e')]);var _0x5d4648={'where':_0x36416d[_0xa3cf('0x3a')]};return db[_0xa3cf('0x3f')][_0xa3cf('0x21')](_0x5d4648)[_0xa3cf('0x40')](function(_0x46d06b){_0x224ebc[_0xa3cf('0x21')]=_0x46d06b;if(_0x5a6876[_0xa3cf('0x2e')]['includeAll']){_0x36416d[_0xa3cf('0x41')]=[{'all':!![]}];}return db[_0xa3cf('0x3f')][_0xa3cf('0x42')](_0x36416d);})['then'](function(_0x198315){_0x224ebc[_0xa3cf('0x43')]=_0x198315;return _0x224ebc;})['then'](respondWithFilteredResult(_0x18fa9c,_0x36416d))[_0xa3cf('0x44')](handleError(_0x18fa9c,null));};exports[_0xa3cf('0x45')]=function(_0x456429,_0x4f0bd9){var _0x1026fa={'raw':!![],'where':{'id':_0x456429['params']['id']}},_0x58944c={};_0x58944c[_0xa3cf('0x35')]=_[_0xa3cf('0x2f')](db[_0xa3cf('0x3f')][_0xa3cf('0x46')]);_0x58944c['query']=_[_0xa3cf('0x2f')](_0x456429[_0xa3cf('0x2e')]);_0x58944c[_0xa3cf('0x30')]=_[_0xa3cf('0x31')](_0x58944c[_0xa3cf('0x35')],_0x58944c[_0xa3cf('0x2e')]);_0x1026fa['attributes']=_[_0xa3cf('0x31')](_0x58944c[_0xa3cf('0x35')],qs[_0xa3cf('0x33')](_0x456429['query'][_0xa3cf('0x33')]));_0x1026fa[_0xa3cf('0x32')]=_0x1026fa['attributes'][_0xa3cf('0x34')]?_0x1026fa[_0xa3cf('0x32')]:_0x58944c[_0xa3cf('0x35')];if(_0x456429[_0xa3cf('0x2e')]['includeAll']){_0x1026fa[_0xa3cf('0x41')]=[{'all':!![]}];}_0x1026fa=_[_0xa3cf('0x3b')]({},_0x1026fa,_0x456429[_0xa3cf('0x3e')]);return db[_0xa3cf('0x3f')][_0xa3cf('0x47')](_0x1026fa)[_0xa3cf('0x40')](handleEntityNotFound(_0x4f0bd9,null))[_0xa3cf('0x40')](respondWithResult(_0x4f0bd9,null))['catch'](handleError(_0x4f0bd9,null));};exports['create']=function(_0x297992,_0x10d6bc){return db[_0xa3cf('0x3f')][_0xa3cf('0x48')](_0x297992[_0xa3cf('0x49')],{})[_0xa3cf('0x40')](respondWithResult(_0x10d6bc,0xc9))[_0xa3cf('0x44')](handleError(_0x10d6bc,null));};exports['update']=function(_0x16e897,_0xe9dfa){if(_0x16e897[_0xa3cf('0x49')]['id']){delete _0x16e897[_0xa3cf('0x49')]['id'];}return db[_0xa3cf('0x3f')][_0xa3cf('0x47')]({'where':{'id':_0x16e897[_0xa3cf('0x4a')]['id']}})[_0xa3cf('0x40')](handleEntityNotFound(_0xe9dfa,null))[_0xa3cf('0x40')](saveUpdates(_0x16e897[_0xa3cf('0x49')],null))[_0xa3cf('0x40')](respondWithResult(_0xe9dfa,null))[_0xa3cf('0x44')](handleError(_0xe9dfa,null));};exports[_0xa3cf('0x4b')]=function(_0x30409e,_0x557b02){return db[_0xa3cf('0x3f')][_0xa3cf('0x47')]({'where':{'id':_0x30409e[_0xa3cf('0x4a')]['id']}})[_0xa3cf('0x40')](handleEntityNotFound(_0x557b02,null))['then'](removeEntity(_0x557b02,null))[_0xa3cf('0x44')](handleError(_0x557b02,null));};exports[_0xa3cf('0x4c')]=function(_0x80408d,_0x239c5c){return db['SmsTransferReport'][_0xa3cf('0x4c')]()[_0xa3cf('0x40')](respondWithResult(_0x239c5c,null))[_0xa3cf('0x44')](handleError(_0x239c5c,null));};
\ No newline at end of file
+var _0xe5ae=['fields','attributes','length','nolimit','limit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','fs-extra','lodash','squel','crypto','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','offset','undefined','count','status','json','reject','save','update','destroy','then','error','stack','name','send','map','SmsTransferReport','rawAttributes','fieldName','type','key','query','keys','model','intersection'];(function(_0x21d799,_0x22fb73){var _0x230ed0=function(_0x1bce7a){while(--_0x1bce7a){_0x21d799['push'](_0x21d799['shift']());}};_0x230ed0(++_0x22fb73);}(_0xe5ae,0x186));var _0xee5a=function(_0x499210,_0x325b29){_0x499210=_0x499210-0x0;var _0x2e153d=_0xe5ae[_0x499210];return _0x2e153d;};'use strict';var emlformat=require(_0xee5a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xee5a('0x1'));var jsonpatch=require(_0xee5a('0x2'));var rp=require(_0xee5a('0x3'));var moment=require(_0xee5a('0x4'));var BPromise=require(_0xee5a('0x5'));var Mustache=require('mustache');var util=require(_0xee5a('0x6'));var path=require(_0xee5a('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xee5a('0x8'));var _=require(_0xee5a('0x9'));var squel=require(_0xee5a('0xa'));var crypto=require(_0xee5a('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xee5a('0xc'));var querystring=require(_0xee5a('0xd'));var Papa=require('papaparse');var Redis=require(_0xee5a('0xe'));var authService=require(_0xee5a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xee5a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xee5a('0x11'))(_0xee5a('0x12'));var utils=require(_0xee5a('0x13'));var config=require(_0xee5a('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xee5a('0x15'))['db'];function respondWithStatusCode(_0x430aef,_0x559319){_0x559319=_0x559319||0xcc;return function(_0x27f102){if(_0x27f102){return _0x430aef[_0xee5a('0x16')](_0x559319);}return _0x430aef['status'](_0x559319)[_0xee5a('0x17')]();};}function respondWithResult(_0x43d39d,_0xec2afa){_0xec2afa=_0xec2afa||0xc8;return function(_0x456d18){if(_0x456d18){return _0x43d39d['status'](_0xec2afa)['json'](_0x456d18);}};}function respondWithFilteredResult(_0x5a0fc5,_0x5e260f){return function(_0x430cbd){if(_0x430cbd){var _0x56a558=typeof _0x5e260f[_0xee5a('0x18')]===_0xee5a('0x19')&&typeof _0x5e260f['limit']===_0xee5a('0x19');var _0x2217b0=_0x430cbd[_0xee5a('0x1a')];var _0x1fb0c1=_0x56a558?0x0:_0x5e260f[_0xee5a('0x18')];var _0x1af20c=_0x56a558?_0x430cbd[_0xee5a('0x1a')]:_0x5e260f[_0xee5a('0x18')]+_0x5e260f['limit'];var _0x31b1cf;if(_0x1af20c>=_0x2217b0){_0x1af20c=_0x2217b0;_0x31b1cf=0xc8;}else{_0x31b1cf=0xce;}_0x5a0fc5[_0xee5a('0x1b')](_0x31b1cf);return _0x5a0fc5['set']('Content-Range',_0x1fb0c1+'-'+_0x1af20c+'/'+_0x2217b0)[_0xee5a('0x1c')](_0x430cbd);}return null;};}function patchUpdates(_0x3ad1f9){return function(_0x2af120){try{jsonpatch['apply'](_0x2af120,_0x3ad1f9,!![]);}catch(_0x1bb682){return BPromise[_0xee5a('0x1d')](_0x1bb682);}return _0x2af120[_0xee5a('0x1e')]();};}function saveUpdates(_0x1e3971,_0x3ff11e){return function(_0xa28ab2){if(_0xa28ab2){return _0xa28ab2[_0xee5a('0x1f')](_0x1e3971)['then'](function(_0xea04b1){return _0xea04b1;});}return null;};}function removeEntity(_0x3dd12c,_0x217655){return function(_0x3afcca){if(_0x3afcca){return _0x3afcca[_0xee5a('0x20')]()[_0xee5a('0x21')](function(){_0x3dd12c['status'](0xcc)[_0xee5a('0x17')]();});}};}function handleEntityNotFound(_0x3cf068,_0x559b9e){return function(_0x1de749){if(!_0x1de749){_0x3cf068[_0xee5a('0x16')](0x194);}return _0x1de749;};}function handleError(_0x1ff5a3,_0x47e2c4){_0x47e2c4=_0x47e2c4||0x1f4;return function(_0x14650b){logger[_0xee5a('0x22')](_0x14650b[_0xee5a('0x23')]);if(_0x14650b[_0xee5a('0x24')]){delete _0x14650b['name'];}_0x1ff5a3[_0xee5a('0x1b')](_0x47e2c4)[_0xee5a('0x25')](_0x14650b);};}exports['index']=function(_0x5c9ecd,_0x9f68d6){var _0xed11e1={},_0x5cb51f={},_0x46ac42={'count':0x0,'rows':[]};var _0x51079c=_[_0xee5a('0x26')](db[_0xee5a('0x27')][_0xee5a('0x28')],function(_0x3b6357){return{'name':_0x3b6357[_0xee5a('0x29')],'type':_0x3b6357[_0xee5a('0x2a')][_0xee5a('0x2b')]};});_0x5cb51f['model']=_[_0xee5a('0x26')](_0x51079c,_0xee5a('0x24'));_0x5cb51f[_0xee5a('0x2c')]=_[_0xee5a('0x2d')](_0x5c9ecd[_0xee5a('0x2c')]);_0x5cb51f['filters']=_['intersection'](_0x5cb51f[_0xee5a('0x2e')],_0x5cb51f[_0xee5a('0x2c')]);_0xed11e1['attributes']=_[_0xee5a('0x2f')](_0x5cb51f[_0xee5a('0x2e')],qs[_0xee5a('0x30')](_0x5c9ecd['query'][_0xee5a('0x30')]));_0xed11e1['attributes']=_0xed11e1[_0xee5a('0x31')][_0xee5a('0x32')]?_0xed11e1['attributes']:_0x5cb51f[_0xee5a('0x2e')];if(!_0x5c9ecd[_0xee5a('0x2c')]['hasOwnProperty'](_0xee5a('0x33'))){_0xed11e1['limit']=qs['limit'](_0x5c9ecd['query'][_0xee5a('0x34')]);_0xed11e1['offset']=qs[_0xee5a('0x18')](_0x5c9ecd[_0xee5a('0x2c')][_0xee5a('0x18')]);}_0xed11e1[_0xee5a('0x35')]=qs[_0xee5a('0x36')](_0x5c9ecd[_0xee5a('0x2c')][_0xee5a('0x36')]);_0xed11e1[_0xee5a('0x37')]=qs[_0xee5a('0x38')](_[_0xee5a('0x39')](_0x5c9ecd[_0xee5a('0x2c')],_0x5cb51f[_0xee5a('0x38')]),_0x51079c);if(_0x5c9ecd[_0xee5a('0x2c')][_0xee5a('0x3a')]){_0xed11e1[_0xee5a('0x37')]=_['merge'](_0xed11e1[_0xee5a('0x37')],{'$or':_[_0xee5a('0x26')](_0x51079c,function(_0x451e39){if(_0x451e39['type']!==_0xee5a('0x3b')){var _0x221d75={};_0x221d75[_0x451e39[_0xee5a('0x24')]]={'$like':'%'+_0x5c9ecd['query'][_0xee5a('0x3a')]+'%'};return _0x221d75;}})});}_0xed11e1=_[_0xee5a('0x3c')]({},_0xed11e1,_0x5c9ecd[_0xee5a('0x3d')]);var _0x118fb5={'where':_0xed11e1['where']};return db[_0xee5a('0x27')]['count'](_0x118fb5)[_0xee5a('0x21')](function(_0x59fa75){_0x46ac42[_0xee5a('0x1a')]=_0x59fa75;if(_0x5c9ecd[_0xee5a('0x2c')][_0xee5a('0x3e')]){_0xed11e1[_0xee5a('0x3f')]=[{'all':!![]}];}return db[_0xee5a('0x27')][_0xee5a('0x40')](_0xed11e1);})[_0xee5a('0x21')](function(_0xfdb6e5){_0x46ac42[_0xee5a('0x41')]=_0xfdb6e5;return _0x46ac42;})['then'](respondWithFilteredResult(_0x9f68d6,_0xed11e1))[_0xee5a('0x42')](handleError(_0x9f68d6,null));};exports[_0xee5a('0x43')]=function(_0x3746d3,_0x91534a){var _0x2b1659={'raw':!![],'where':{'id':_0x3746d3[_0xee5a('0x44')]['id']}},_0x5761be={};_0x5761be['model']=_['keys'](db['SmsTransferReport'][_0xee5a('0x28')]);_0x5761be['query']=_[_0xee5a('0x2d')](_0x3746d3[_0xee5a('0x2c')]);_0x5761be[_0xee5a('0x38')]=_[_0xee5a('0x2f')](_0x5761be[_0xee5a('0x2e')],_0x5761be[_0xee5a('0x2c')]);_0x2b1659[_0xee5a('0x31')]=_['intersection'](_0x5761be[_0xee5a('0x2e')],qs['fields'](_0x3746d3[_0xee5a('0x2c')]['fields']));_0x2b1659['attributes']=_0x2b1659[_0xee5a('0x31')][_0xee5a('0x32')]?_0x2b1659[_0xee5a('0x31')]:_0x5761be['model'];if(_0x3746d3['query'][_0xee5a('0x3e')]){_0x2b1659['include']=[{'all':!![]}];}_0x2b1659=_[_0xee5a('0x3c')]({},_0x2b1659,_0x3746d3['options']);return db[_0xee5a('0x27')]['find'](_0x2b1659)[_0xee5a('0x21')](handleEntityNotFound(_0x91534a,null))[_0xee5a('0x21')](respondWithResult(_0x91534a,null))[_0xee5a('0x42')](handleError(_0x91534a,null));};exports[_0xee5a('0x45')]=function(_0x42231b,_0x158dfc){return db[_0xee5a('0x27')][_0xee5a('0x45')](_0x42231b[_0xee5a('0x46')],{})[_0xee5a('0x21')](respondWithResult(_0x158dfc,0xc9))[_0xee5a('0x42')](handleError(_0x158dfc,null));};exports['update']=function(_0x5a8962,_0x5a3d27){if(_0x5a8962['body']['id']){delete _0x5a8962['body']['id'];}return db[_0xee5a('0x27')][_0xee5a('0x47')]({'where':{'id':_0x5a8962[_0xee5a('0x44')]['id']}})[_0xee5a('0x21')](handleEntityNotFound(_0x5a3d27,null))[_0xee5a('0x21')](saveUpdates(_0x5a8962['body'],null))[_0xee5a('0x21')](respondWithResult(_0x5a3d27,null))['catch'](handleError(_0x5a3d27,null));};exports[_0xee5a('0x20')]=function(_0x2a0d98,_0x15777c){return db[_0xee5a('0x27')][_0xee5a('0x47')]({'where':{'id':_0x2a0d98[_0xee5a('0x44')]['id']}})[_0xee5a('0x21')](handleEntityNotFound(_0x15777c,null))[_0xee5a('0x21')](removeEntity(_0x15777c,null))[_0xee5a('0x42')](handleError(_0x15777c,null));};exports[_0xee5a('0x48')]=function(_0xe1c05e,_0x1306fc){return db[_0xee5a('0x27')]['describe']()[_0xee5a('0x21')](respondWithResult(_0x1306fc,null))[_0xee5a('0x42')](handleError(_0x1306fc,null));};
\ No newline at end of file
index f71a5ae..fb8474f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9f5=['moment','bluebird','request-promise','../../config/environment','exports','define','SmsTransferReport','report_sms_transfer','uniqueid','util','../../config/logger'];(function(_0x385d5d,_0x58415a){var _0x4564d3=function(_0x40d8b5){while(--_0x40d8b5){_0x385d5d['push'](_0x385d5d['shift']());}};_0x4564d3(++_0x58415a);}(_0xc9f5,0xc4));var _0x5c9f=function(_0x39758d,_0x346423){_0x39758d=_0x39758d-0x0;var _0x44ac11=_0xc9f5[_0x39758d];return _0x44ac11;};'use strict';var _=require('lodash');var util=require(_0x5c9f('0x0'));var logger=require(_0x5c9f('0x1'))('api');var moment=require(_0x5c9f('0x2'));var BPromise=require(_0x5c9f('0x3'));var rp=require(_0x5c9f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5c9f('0x5'));var attributes=require('./smsTransferReport.attributes');module[_0x5c9f('0x6')]=function(_0x563d0c,_0x3100cf){return _0x563d0c[_0x5c9f('0x7')](_0x5c9f('0x8'),attributes,{'tableName':_0x5c9f('0x9'),'paranoid':![],'indexes':[{'name':_0x5c9f('0xa'),'fields':[_0x5c9f('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3248=['SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./smsTransferReport.attributes','define'];(function(_0x5c110f,_0x3c4bd8){var _0x5ebfc5=function(_0x2549df){while(--_0x2549df){_0x5c110f['push'](_0x5c110f['shift']());}};_0x5ebfc5(++_0x3c4bd8);}(_0x3248,0x1b0));var _0x8324=function(_0x9c7acc,_0x4dccb5){_0x9c7acc=_0x9c7acc-0x0;var _0x2a7873=_0x3248[_0x9c7acc];return _0x2a7873;};'use strict';var _=require(_0x8324('0x0'));var util=require(_0x8324('0x1'));var logger=require(_0x8324('0x2'))(_0x8324('0x3'));var moment=require(_0x8324('0x4'));var BPromise=require(_0x8324('0x5'));var rp=require(_0x8324('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8324('0x7'));var attributes=require(_0x8324('0x8'));module['exports']=function(_0x18edd2,_0x283f5f){return _0x18edd2[_0x8324('0x9')](_0x8324('0xa'),attributes,{'tableName':_0x8324('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x8324('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index d2e6366..809a68a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4677=['http','then','SmsTransferReport,\x20%s,\x20%s','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3a560e,_0x3e1d9e){var _0x6e7c6d=function(_0x145f91){while(--_0x145f91){_0x3a560e['push'](_0x3a560e['shift']());}};_0x6e7c6d(++_0x3e1d9e);}(_0x4677,0x155));var _0x7467=function(_0x1e18ee,_0x55e6b8){_0x1e18ee=_0x1e18ee-0x0;var _0x3d3f37=_0x4677[_0x1e18ee];return _0x3d3f37;};'use strict';var _=require(_0x7467('0x0'));var util=require('util');var moment=require(_0x7467('0x1'));var BPromise=require(_0x7467('0x2'));var rs=require(_0x7467('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7467('0x4'))['db'];var utils=require(_0x7467('0x5'));var logger=require(_0x7467('0x6'))(_0x7467('0x7'));var config=require(_0x7467('0x8'));var jayson=require(_0x7467('0x9'));var client=jayson[_0x7467('0xa')][_0x7467('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x198e6a,_0x4b26a7,_0x588489){return new BPromise(function(_0x418ff9,_0x1cc835){return client['request'](_0x198e6a,_0x588489)[_0x7467('0xc')](function(_0x4365e6){logger['info'](_0x7467('0xd'),_0x4b26a7,'request\x20sent');logger[_0x7467('0xe')](_0x7467('0xf'),_0x4b26a7,_0x7467('0x10'),JSON['stringify'](_0x4365e6));if(_0x4365e6[_0x7467('0x11')]){if(_0x4365e6[_0x7467('0x11')][_0x7467('0x12')]===0x1f4){logger[_0x7467('0x11')]('SmsTransferReport,\x20%s,\x20%s',_0x4b26a7,_0x4365e6[_0x7467('0x11')]['message']);return _0x1cc835(_0x4365e6[_0x7467('0x11')][_0x7467('0x13')]);}logger[_0x7467('0x11')](_0x7467('0xd'),_0x4b26a7,_0x4365e6['error'][_0x7467('0x13')]);return _0x418ff9(_0x4365e6[_0x7467('0x11')][_0x7467('0x13')]);}else{logger['info'](_0x7467('0xd'),_0x4b26a7,_0x7467('0x10'));_0x418ff9(_0x4365e6[_0x7467('0x14')]['message']);}})[_0x7467('0x15')](function(_0x1df628){logger[_0x7467('0x11')]('SmsTransferReport,\x20%s,\x20%s',_0x4b26a7,_0x1df628);_0x1cc835(_0x1df628);});});}
\ No newline at end of file
+var _0x31af=['client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x31af,0xde));var _0xf31a=function(_0x223715,_0x43336e){_0x223715=_0x223715-0x0;var _0x528f91=_0x31af[_0x223715];return _0x528f91;};'use strict';var _=require(_0xf31a('0x0'));var util=require(_0xf31a('0x1'));var moment=require(_0xf31a('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf31a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf31a('0x4'));var logger=require(_0xf31a('0x5'))(_0xf31a('0x6'));var config=require(_0xf31a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf31a('0x8')][_0xf31a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x405926,_0x1dc7cc,_0x47b7a1){return new BPromise(function(_0x31f8e7,_0xe5778a){return client[_0xf31a('0xa')](_0x405926,_0x47b7a1)[_0xf31a('0xb')](function(_0x48cc46){logger[_0xf31a('0xc')](_0xf31a('0xd'),_0x1dc7cc,_0xf31a('0xe'));logger[_0xf31a('0xf')](_0xf31a('0x10'),_0x1dc7cc,'request\x20sent',JSON[_0xf31a('0x11')](_0x48cc46));if(_0x48cc46[_0xf31a('0x12')]){if(_0x48cc46[_0xf31a('0x12')][_0xf31a('0x13')]===0x1f4){logger['error'](_0xf31a('0xd'),_0x1dc7cc,_0x48cc46[_0xf31a('0x12')]['message']);return _0xe5778a(_0x48cc46[_0xf31a('0x12')][_0xf31a('0x14')]);}logger[_0xf31a('0x12')](_0xf31a('0xd'),_0x1dc7cc,_0x48cc46[_0xf31a('0x12')][_0xf31a('0x14')]);return _0x31f8e7(_0x48cc46[_0xf31a('0x12')][_0xf31a('0x14')]);}else{logger[_0xf31a('0xc')](_0xf31a('0xd'),_0x1dc7cc,_0xf31a('0xe'));_0x31f8e7(_0x48cc46[_0xf31a('0x15')][_0xf31a('0x14')]);}})[_0xf31a('0x16')](function(_0x1429c8){logger['error'](_0xf31a('0xd'),_0x1dc7cc,_0x1429c8);_0xe5778a(_0x1429c8);});});}
\ No newline at end of file
index 0131feb..356289c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb25c=['connect-timeout','express','Router','fs-extra','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','diskStorage','join','originalname','replace','now','extname','single','file','create','put','update','delete','exports','multer','util'];(function(_0xe63d37,_0x50b996){var _0x2d9265=function(_0x26b2be){while(--_0x26b2be){_0xe63d37['push'](_0xe63d37['shift']());}};_0x2d9265(++_0x50b996);}(_0xb25c,0x18e));var _0xcb25=function(_0x43c5f1,_0x149025){_0x43c5f1=_0x43c5f1-0x0;var _0x46d143=_0xb25c[_0x43c5f1];return _0x46d143;};'use strict';var multer=require(_0xcb25('0x0'));var util=require(_0xcb25('0x1'));var path=require('path');var timeout=require(_0xcb25('0x2'));var express=require(_0xcb25('0x3'));var router=express[_0xcb25('0x4')]();var fs_extra=require(_0xcb25('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xcb25('0x6'));var controller=require(_0xcb25('0x7'));router[_0xcb25('0x8')]('/',auth[_0xcb25('0x9')](),controller[_0xcb25('0xa')]);router[_0xcb25('0x8')](_0xcb25('0xb'),auth[_0xcb25('0x9')](),controller['show']);router[_0xcb25('0x8')]('/:id/download',auth[_0xcb25('0x9')](),controller['download']);var upload=multer({'storage':multer[_0xcb25('0xc')]({'destination':function(_0x425ab3,_0x181afd,_0xd0c4eb){_0xd0c4eb(null,path[_0xcb25('0xd')](config['root'],'server/files/sounds/original/'));},'filename':function(_0x5e9a6f,_0x534a23,_0x33d17a){_0x534a23['originalname']=_0x534a23[_0xcb25('0xe')][_0xcb25('0xf')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x33d17a(null,util['format']('%s-%s%s',path['basename'](_0x534a23[_0xcb25('0xe')],path['extname'](_0x534a23[_0xcb25('0xe')])),Date[_0xcb25('0x10')](),path[_0xcb25('0x11')](_0x534a23[_0xcb25('0xe')])));}})});router['post']('/',upload[_0xcb25('0x12')](_0xcb25('0x13')),controller[_0xcb25('0x14')]);router[_0xcb25('0x15')](_0xcb25('0xb'),auth[_0xcb25('0x9')](),controller[_0xcb25('0x16')]);router[_0xcb25('0x17')](_0xcb25('0xb'),auth[_0xcb25('0x9')](),controller[_0xcb25('0x17')]);module[_0xcb25('0x18')]=router;
\ No newline at end of file
+var _0x93c7=['server/files/sounds/original/','originalname','replace','format','basename','extname','now','post','file','create','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','show','/:id/download','diskStorage','root'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x93c7,0x13a));var _0x793c=function(_0x164126,_0x139cac){_0x164126=_0x164126-0x0;var _0x31d4fd=_0x93c7[_0x164126];return _0x31d4fd;};'use strict';var multer=require(_0x793c('0x0'));var util=require(_0x793c('0x1'));var path=require(_0x793c('0x2'));var timeout=require(_0x793c('0x3'));var express=require('express');var router=express[_0x793c('0x4')]();var fs_extra=require(_0x793c('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x793c('0x6'));var controller=require(_0x793c('0x7'));router[_0x793c('0x8')]('/',auth[_0x793c('0x9')](),controller[_0x793c('0xa')]);router[_0x793c('0x8')](_0x793c('0xb'),auth[_0x793c('0x9')](),controller[_0x793c('0xc')]);router[_0x793c('0x8')](_0x793c('0xd'),auth[_0x793c('0x9')](),controller['download']);var upload=multer({'storage':multer[_0x793c('0xe')]({'destination':function(_0x4e2438,_0x20e93f,_0x47b3f9){_0x47b3f9(null,path['join'](config[_0x793c('0xf')],_0x793c('0x10')));},'filename':function(_0x24cdf1,_0x38c76a,_0x4af2fa){_0x38c76a[_0x793c('0x11')]=_0x38c76a[_0x793c('0x11')][_0x793c('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4af2fa(null,util[_0x793c('0x13')]('%s-%s%s',path[_0x793c('0x14')](_0x38c76a[_0x793c('0x11')],path[_0x793c('0x15')](_0x38c76a[_0x793c('0x11')])),Date[_0x793c('0x16')](),path[_0x793c('0x15')](_0x38c76a[_0x793c('0x11')])));}})});router[_0x793c('0x17')]('/',upload['single'](_0x793c('0x18')),controller[_0x793c('0x19')]);router[_0x793c('0x1a')](_0x793c('0xb'),auth['isAuthenticated'](),controller[_0x793c('0x1b')]);router['delete'](_0x793c('0xb'),auth[_0x793c('0x9')](),controller[_0x793c('0x1c')]);module[_0x793c('0x1d')]=router;
\ No newline at end of file
index ae4ddac..4128e10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61c8=['INTEGER','sequelize','exports','STRING','FLOAT','BIGINT'];(function(_0x24b1d9,_0x1d552d){var _0x4f92f5=function(_0x5c9258){while(--_0x5c9258){_0x24b1d9['push'](_0x24b1d9['shift']());}};_0x4f92f5(++_0x1d552d);}(_0x61c8,0x199));var _0x861c=function(_0xe09d0,_0x1e55d0){_0xe09d0=_0xe09d0-0x0;var _0x44ad05=_0x61c8[_0xe09d0];return _0x44ad05;};'use strict';var Sequelize=require(_0x861c('0x0'));module[_0x861c('0x1')]={'name':{'type':Sequelize[_0x861c('0x2')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0x861c('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0x861c('0x2')]},'original_format':{'type':Sequelize[_0x861c('0x2')]},'original_duration':{'type':Sequelize[_0x861c('0x3')]},'original_sampleCount':{'type':Sequelize[_0x861c('0x4')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0x861c('0x4')]},'original_sampleRate':{'type':Sequelize[_0x861c('0x5')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x861c('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x861c('0x4')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0x861c('0x4')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x793c=['FLOAT','INTEGER','BIGINT','STRING','name'];(function(_0x204735,_0x5885fb){var _0xbd6432=function(_0x293971){while(--_0x293971){_0x204735['push'](_0x204735['shift']());}};_0xbd6432(++_0x5885fb);}(_0x793c,0x99));var _0xc793=function(_0x3fba9f,_0x3b7b9b){_0x3fba9f=_0x3fba9f-0x0;var _0x192cf1=_0x793c[_0x3fba9f];return _0x192cf1;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc793('0x0')],'unique':_0xc793('0x1'),'allowNull':![]},'save_name':{'type':Sequelize[_0xc793('0x0')]},'display_name':{'type':Sequelize[_0xc793('0x0')],'defaultValue':''},'description':{'type':Sequelize[_0xc793('0x0')]},'original_format':{'type':Sequelize[_0xc793('0x0')]},'original_duration':{'type':Sequelize[_0xc793('0x2')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0xc793('0x3')]},'original_bitRate':{'type':Sequelize[_0xc793('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0xc793('0x0')]},'converted_duration':{'type':Sequelize[_0xc793('0x2')]},'converted_sampleCount':{'type':Sequelize[_0xc793('0x4')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0xc793('0x3')]}};
\ No newline at end of file
index 66a2653..411abce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff5=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','reject','save','update','then','Sounds','destroy','name','index','map','Sound','fieldName','type','key','model','query','keys','filters','attributes','fields','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','intersection','length','catch','download','find','save_name','converted_format','existsSync','join','server/files/sounds/converted','Sequelize','Sound\x20not\x20found','root','%s.%s','format','create','originalname','file','basename','extname','wav','server/files/sounds/original','filename','info','Sound\x20upload\x20filepath:\x20%s','0777','transcode','error','unlinkSync','send','duration','original_sampleCount','sampleCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_bitRate','converted_sampleRate','chmodSync','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0xe66f5a,_0x20056b){var _0x9f6f71=function(_0x85f64b){while(--_0x85f64b){_0xe66f5a['push'](_0xe66f5a['shift']());}};_0x9f6f71(++_0x20056b);}(_0xeff5,0x79));var _0x5eff=function(_0xe51ca0,_0x59fb1f){_0xe51ca0=_0xe51ca0-0x0;var _0xae8cf0=_0xeff5[_0xe51ca0];return _0xae8cf0;};'use strict';var emlformat=require(_0x5eff('0x0'));var rimraf=require(_0x5eff('0x1'));var zipdir=require(_0x5eff('0x2'));var jsonpatch=require(_0x5eff('0x3'));var rp=require(_0x5eff('0x4'));var moment=require(_0x5eff('0x5'));var BPromise=require(_0x5eff('0x6'));var Mustache=require(_0x5eff('0x7'));var util=require(_0x5eff('0x8'));var path=require(_0x5eff('0x9'));var sox=require(_0x5eff('0xa'));var csv=require(_0x5eff('0xb'));var ejs=require(_0x5eff('0xc'));var fs=require('fs');var fs_extra=require(_0x5eff('0xd'));var _=require('lodash');var squel=require(_0x5eff('0xe'));var crypto=require(_0x5eff('0xf'));var jsforce=require(_0x5eff('0x10'));var deskjs=require(_0x5eff('0x11'));var toCsv=require('to-csv');var querystring=require(_0x5eff('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5eff('0x13'));var qs=require(_0x5eff('0x14'));var as=require(_0x5eff('0x15'));var hardwareService=require(_0x5eff('0x16'));var logger=require(_0x5eff('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x5eff('0x18'));var licenseUtil=require(_0x5eff('0x19'));var db=require(_0x5eff('0x1a'))['db'];function respondWithStatusCode(_0x59bcfc,_0x23870e){_0x23870e=_0x23870e||0xcc;return function(_0x22760d){if(_0x22760d){return _0x59bcfc[_0x5eff('0x1b')](_0x23870e);}return _0x59bcfc[_0x5eff('0x1c')](_0x23870e)[_0x5eff('0x1d')]();};}function respondWithResult(_0x2a7686,_0x5b5288){_0x5b5288=_0x5b5288||0xc8;return function(_0x82d121){if(_0x82d121){return _0x2a7686[_0x5eff('0x1c')](_0x5b5288)['json'](_0x82d121);}};}function respondWithFilteredResult(_0x2f7f32,_0x4c200c){return function(_0x2ecaad){if(_0x2ecaad){var _0x358281=typeof _0x4c200c[_0x5eff('0x1e')]===_0x5eff('0x1f')&&typeof _0x4c200c['limit']==='undefined';var _0x1fd3b8=_0x2ecaad[_0x5eff('0x20')];var _0x94957c=_0x358281?0x0:_0x4c200c[_0x5eff('0x1e')];var _0x3f5d60=_0x358281?_0x2ecaad[_0x5eff('0x20')]:_0x4c200c[_0x5eff('0x1e')]+_0x4c200c[_0x5eff('0x21')];var _0x3780b7;if(_0x3f5d60>=_0x1fd3b8){_0x3f5d60=_0x1fd3b8;_0x3780b7=0xc8;}else{_0x3780b7=0xce;}_0x2f7f32[_0x5eff('0x1c')](_0x3780b7);return _0x2f7f32[_0x5eff('0x22')]('Content-Range',_0x94957c+'-'+_0x3f5d60+'/'+_0x1fd3b8)[_0x5eff('0x23')](_0x2ecaad);}return null;};}function patchUpdates(_0x221964){return function(_0x19c674){try{jsonpatch[_0x5eff('0x24')](_0x19c674,_0x221964,!![]);}catch(_0x322fb2){return BPromise[_0x5eff('0x25')](_0x322fb2);}return _0x19c674[_0x5eff('0x26')]();};}function saveUpdates(_0x3479f6,_0x44ac2d){return function(_0x205c7a){if(_0x205c7a){return _0x205c7a[_0x5eff('0x27')](_0x3479f6)[_0x5eff('0x28')](function(_0x198de0){return _0x198de0;});}return null;};}function removeEntity(_0x14d652,_0x2d4c66){return function(_0x14722a){if(_0x14722a){return _0x14722a['destroy']()[_0x5eff('0x28')](function(){var _0x27721e=_0x14722a['get']({'plain':!![]});var _0x325a21=_0x5eff('0x29');return db['UserProfileResource'][_0x5eff('0x2a')]({'where':{'type':_0x325a21,'resourceId':_0x27721e['id']}})[_0x5eff('0x28')](function(){return _0x14722a;});})[_0x5eff('0x28')](function(){_0x14d652[_0x5eff('0x1c')](0xcc)[_0x5eff('0x1d')]();});}};}function handleEntityNotFound(_0x16a92c,_0x32c2fe){return function(_0x705a2b){if(!_0x705a2b){_0x16a92c[_0x5eff('0x1b')](0x194);}return _0x705a2b;};}function handleError(_0x4605fd,_0x1faf49){_0x1faf49=_0x1faf49||0x1f4;return function(_0x4f419e){logger['error'](_0x4f419e['stack']);if(_0x4f419e[_0x5eff('0x2b')]){delete _0x4f419e[_0x5eff('0x2b')];}_0x4605fd[_0x5eff('0x1c')](_0x1faf49)['send'](_0x4f419e);};}exports[_0x5eff('0x2c')]=function(_0x316d0c,_0x4647e8){var _0xca1fd3={},_0x5824a1={},_0x14038d={'count':0x0,'rows':[]};var _0x2067d5=_[_0x5eff('0x2d')](db[_0x5eff('0x2e')]['rawAttributes'],function(_0x1a8e30){return{'name':_0x1a8e30[_0x5eff('0x2f')],'type':_0x1a8e30[_0x5eff('0x30')][_0x5eff('0x31')]};});_0x5824a1[_0x5eff('0x32')]=_[_0x5eff('0x2d')](_0x2067d5,_0x5eff('0x2b'));_0x5824a1[_0x5eff('0x33')]=_[_0x5eff('0x34')](_0x316d0c[_0x5eff('0x33')]);_0x5824a1[_0x5eff('0x35')]=_['intersection'](_0x5824a1[_0x5eff('0x32')],_0x5824a1[_0x5eff('0x33')]);_0xca1fd3[_0x5eff('0x36')]=_['intersection'](_0x5824a1[_0x5eff('0x32')],qs[_0x5eff('0x37')](_0x316d0c[_0x5eff('0x33')][_0x5eff('0x37')]));_0xca1fd3['attributes']=_0xca1fd3[_0x5eff('0x36')]['length']?_0xca1fd3['attributes']:_0x5824a1[_0x5eff('0x32')];if(!_0x316d0c[_0x5eff('0x33')][_0x5eff('0x38')]('nolimit')){_0xca1fd3[_0x5eff('0x21')]=qs['limit'](_0x316d0c[_0x5eff('0x33')][_0x5eff('0x21')]);_0xca1fd3[_0x5eff('0x1e')]=qs[_0x5eff('0x1e')](_0x316d0c['query'][_0x5eff('0x1e')]);}_0xca1fd3['order']=qs['sort'](_0x316d0c['query'][_0x5eff('0x39')]);_0xca1fd3[_0x5eff('0x3a')]=qs[_0x5eff('0x35')](_[_0x5eff('0x3b')](_0x316d0c['query'],_0x5824a1[_0x5eff('0x35')]),_0x2067d5);if(_0x316d0c['query'][_0x5eff('0x3c')]){_0xca1fd3[_0x5eff('0x3a')]=_[_0x5eff('0x3d')](_0xca1fd3[_0x5eff('0x3a')],{'$or':_['map'](_0x2067d5,function(_0x574943){if(_0x574943[_0x5eff('0x30')]!==_0x5eff('0x3e')){var _0x32d173={};_0x32d173[_0x574943[_0x5eff('0x2b')]]={'$like':'%'+_0x316d0c[_0x5eff('0x33')]['filter']+'%'};return _0x32d173;}})});}_0xca1fd3=_['merge']({},_0xca1fd3,_0x316d0c[_0x5eff('0x3f')]);var _0x4ebcdc={'where':_0xca1fd3[_0x5eff('0x3a')]};return db[_0x5eff('0x2e')][_0x5eff('0x20')](_0x4ebcdc)[_0x5eff('0x28')](function(_0x59ddb0){_0x14038d[_0x5eff('0x20')]=_0x59ddb0;if(_0x316d0c[_0x5eff('0x33')][_0x5eff('0x40')]){_0xca1fd3[_0x5eff('0x41')]=[{'all':!![]}];}return db[_0x5eff('0x2e')][_0x5eff('0x42')](_0xca1fd3);})[_0x5eff('0x28')](function(_0x213564){_0x14038d[_0x5eff('0x43')]=_0x213564;return _0x14038d;})[_0x5eff('0x28')](respondWithFilteredResult(_0x4647e8,_0xca1fd3))['catch'](handleError(_0x4647e8,null));};exports[_0x5eff('0x44')]=function(_0x59a46f,_0x5d8259){var _0x2e97b3={'raw':!![],'where':{'id':_0x59a46f[_0x5eff('0x45')]['id']}},_0x57468b={};_0x57468b[_0x5eff('0x32')]=_[_0x5eff('0x34')](db[_0x5eff('0x2e')][_0x5eff('0x46')]);_0x57468b[_0x5eff('0x33')]=_['keys'](_0x59a46f[_0x5eff('0x33')]);_0x57468b[_0x5eff('0x35')]=_[_0x5eff('0x47')](_0x57468b[_0x5eff('0x32')],_0x57468b['query']);_0x2e97b3[_0x5eff('0x36')]=_[_0x5eff('0x47')](_0x57468b[_0x5eff('0x32')],qs[_0x5eff('0x37')](_0x59a46f['query']['fields']));_0x2e97b3[_0x5eff('0x36')]=_0x2e97b3['attributes'][_0x5eff('0x48')]?_0x2e97b3[_0x5eff('0x36')]:_0x57468b[_0x5eff('0x32')];if(_0x59a46f[_0x5eff('0x33')]['includeAll']){_0x2e97b3[_0x5eff('0x41')]=[{'all':!![]}];}_0x2e97b3=_[_0x5eff('0x3d')]({},_0x2e97b3,_0x59a46f[_0x5eff('0x3f')]);return db[_0x5eff('0x2e')]['find'](_0x2e97b3)[_0x5eff('0x28')](handleEntityNotFound(_0x5d8259,null))[_0x5eff('0x28')](respondWithResult(_0x5d8259,null))[_0x5eff('0x49')](handleError(_0x5d8259,null));};exports[_0x5eff('0x4a')]=function(_0x1ffd68,_0xd616a9,_0x5a02f2){return db[_0x5eff('0x2e')][_0x5eff('0x4b')]({'where':{'id':_0x1ffd68[_0x5eff('0x45')]['id']},'attributes':[_0x5eff('0x2b'),_0x5eff('0x4c'),_0x5eff('0x4d')],'raw':!![]})['then'](handleEntityNotFound(_0xd616a9,null))[_0x5eff('0x28')](function(_0x37d4e0){if(_0x37d4e0){if(!fs[_0x5eff('0x4e')](path[_0x5eff('0x4f')](config['root'],_0x5eff('0x50'),_0x37d4e0[_0x5eff('0x4c')]+'.'+_0x37d4e0[_0x5eff('0x4d')]))){throw new db[(_0x5eff('0x51'))]['ValidationError'](_0x5eff('0x52'));}return _0xd616a9[_0x5eff('0x4a')](path[_0x5eff('0x4f')](config[_0x5eff('0x53')],_0x5eff('0x50'),util['format'](_0x5eff('0x54'),_0x37d4e0[_0x5eff('0x4c')],_0x37d4e0[_0x5eff('0x4d')])),util[_0x5eff('0x55')](_0x5eff('0x54'),_0x37d4e0[_0x5eff('0x2b')],_0x37d4e0[_0x5eff('0x4d')]));}return null;})[_0x5eff('0x49')](handleError(_0xd616a9,null));};exports[_0x5eff('0x56')]=function(_0x3ba796,_0x9b4afc,_0x52d3b7){var _0x42b53d={'name':path['basename'](_0x3ba796['file'][_0x5eff('0x57')],path['extname'](_0x3ba796[_0x5eff('0x58')][_0x5eff('0x57')])),'save_name':path[_0x5eff('0x59')](_0x3ba796['file']['filename'],path[_0x5eff('0x5a')](_0x3ba796[_0x5eff('0x58')]['filename'])),'original_format':path[_0x5eff('0x5a')](_0x3ba796[_0x5eff('0x58')][_0x5eff('0x57')])['substring'](0x1),'converted_format':_0x5eff('0x5b')};var _0x4ca90c=path[_0x5eff('0x4f')](config[_0x5eff('0x53')],_0x5eff('0x5c'),_0x3ba796[_0x5eff('0x58')][_0x5eff('0x5d')]);var _0x398c47=path[_0x5eff('0x4f')](config[_0x5eff('0x53')],_0x5eff('0x50'),util['format'](_0x5eff('0x54'),path['basename'](_0x3ba796[_0x5eff('0x58')][_0x5eff('0x5d')],path[_0x5eff('0x5a')](_0x3ba796[_0x5eff('0x58')]['filename'])),_0x42b53d['converted_format']));logger[_0x5eff('0x5e')](_0x5eff('0x5f'),_0x4ca90c);logger[_0x5eff('0x5e')]('Sound\x20upload\x20destination:\x20%s',_0x398c47);try{fs['chmodSync'](_0x4ca90c,parseInt(_0x5eff('0x60'),0x8));var _0x97877c=sox[_0x5eff('0x61')](_0x4ca90c,_0x398c47,{'sampleRate':0x1f40,'format':_0x5eff('0x5b'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x97877c['on'](_0x5eff('0x62'),function(_0x56a21d){fs[_0x5eff('0x63')](_0x4ca90c);_0x9b4afc[_0x5eff('0x1c')](0x1f4)[_0x5eff('0x64')](_0x56a21d);});_0x97877c['on']('src',function(_0x50b125){_0x42b53d['original_duration']=isNaN(_0x50b125[_0x5eff('0x65')])?null:_0x50b125['duration']*0x3e8;_0x42b53d[_0x5eff('0x66')]=isNaN(_0x50b125[_0x5eff('0x67')])?null:_0x50b125[_0x5eff('0x67')];_0x42b53d['original_channelCount']=isNaN(_0x50b125[_0x5eff('0x68')])?null:_0x50b125[_0x5eff('0x68')];_0x42b53d[_0x5eff('0x69')]=isNaN(_0x50b125[_0x5eff('0x6a')])?null:_0x50b125['bitRate'];_0x42b53d[_0x5eff('0x6b')]=isNaN(_0x50b125[_0x5eff('0x6c')])?null:_0x50b125[_0x5eff('0x6c')];});_0x97877c['on'](_0x5eff('0x6d'),function(_0x36dae4){_0x42b53d[_0x5eff('0x6e')]=isNaN(_0x36dae4['duration'])?null:_0x36dae4[_0x5eff('0x65')]*0x3e8;_0x42b53d[_0x5eff('0x6f')]=isNaN(_0x36dae4[_0x5eff('0x67')])?null:_0x36dae4[_0x5eff('0x67')];_0x42b53d['converted_channelCount']=isNaN(_0x36dae4[_0x5eff('0x68')])?null:_0x36dae4[_0x5eff('0x68')];_0x42b53d[_0x5eff('0x70')]=isNaN(_0x36dae4[_0x5eff('0x6a')])?null:_0x36dae4[_0x5eff('0x6a')];_0x42b53d[_0x5eff('0x71')]=isNaN(_0x36dae4['sampleRate'])?null:_0x36dae4['sampleRate'];});_0x97877c['on'](_0x5eff('0x1d'),function(){fs[_0x5eff('0x72')](_0x398c47,parseInt(_0x5eff('0x60'),0x8));return db[_0x5eff('0x2e')][_0x5eff('0x56')](_0x42b53d)[_0x5eff('0x28')](function(_0x485a13){var _0x54db23={'role':_0x3ba796['body']['role'],'userProfileId':_0x3ba796[_0x5eff('0x73')][_0x5eff('0x74')]};if(!_0x54db23)throw new Error(_0x5eff('0x75'));if(_0x54db23[_0x5eff('0x76')]===_0x5eff('0x77')){var _0x4e4926=_0x485a13[_0x5eff('0x78')]({'plain':!![]});return db['UserProfileSection'][_0x5eff('0x4b')]({'where':{'name':_0x5eff('0x29'),'userProfileId':_0x54db23['userProfileId']},'raw':!![]})[_0x5eff('0x28')](function(_0x15c861){if(_0x15c861&&_0x15c861[_0x5eff('0x79')]===0x0){return db['UserProfileResource']['create']({'name':_0x4e4926[_0x5eff('0x2b')],'resourceId':_0x4e4926['id'],'type':_0x15c861[_0x5eff('0x2b')],'sectionId':_0x15c861['id']},{})[_0x5eff('0x28')](function(){return _0x485a13;});}else{return _0x485a13;}})[_0x5eff('0x49')](function(_0x591fc8){logger['error'](_0x5eff('0x7a'),_0x591fc8);throw _0x591fc8;});}return _0x485a13;})[_0x5eff('0x28')](respondWithResult(_0x9b4afc,null))['catch'](handleError(_0x9b4afc,null));});_0x97877c[_0x5eff('0x7b')]();}catch(_0x3ad68e){_0x9b4afc[_0x5eff('0x1c')](0x1f4)[_0x5eff('0x64')](_0x3ad68e);}};exports[_0x5eff('0x27')]=function(_0x2ce0a7,_0x2946a7,_0x5ee443){return db[_0x5eff('0x2e')][_0x5eff('0x4b')]({'where':{'id':_0x2ce0a7[_0x5eff('0x45')]['id']}})['then'](handleEntityNotFound(_0x2946a7,null))[_0x5eff('0x28')](saveUpdates(_[_0x5eff('0x3b')](_0x2ce0a7[_0x5eff('0x73')],[_0x5eff('0x2b'),_0x5eff('0x7c')]),null))[_0x5eff('0x28')](respondWithResult(_0x2946a7,null))['catch'](handleError(_0x2946a7,null));};exports[_0x5eff('0x7d')]=function(_0x307997,_0x4af7e1,_0x4865f3){return db[_0x5eff('0x2e')][_0x5eff('0x4b')]({'where':{'id':_0x307997[_0x5eff('0x45')]['id']}})[_0x5eff('0x28')](function(_0x30e395){if(_0x30e395){return _0x30e395[_0x5eff('0x2a')]();}})[_0x5eff('0x28')](function(_0x10a3ab){var _0x4fc1a2=path[_0x5eff('0x4f')](config['root'],'server/files/sounds/original',util[_0x5eff('0x55')](_0x5eff('0x54'),_0x10a3ab[_0x5eff('0x4c')],_0x10a3ab[_0x5eff('0x7e')]));var _0x478d2e=path[_0x5eff('0x4f')](config[_0x5eff('0x53')],'server/files/sounds/converted',util[_0x5eff('0x55')](_0x5eff('0x54'),_0x10a3ab[_0x5eff('0x4c')],_0x10a3ab[_0x5eff('0x4d')]));fs[_0x5eff('0x63')](_0x4fc1a2);fs[_0x5eff('0x63')](_0x478d2e);return _0x10a3ab;})[_0x5eff('0x28')](function(_0x1e1bd6){if(_0x1e1bd6){return _0x4af7e1[_0x5eff('0x1c')](0xcc)[_0x5eff('0x1d')]();}})[_0x5eff('0x28')](handleEntityNotFound(_0x4af7e1,null))[_0x5eff('0x49')](handleError(_0x4af7e1,null));};
\ No newline at end of file
+var _0x4312=['sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','get','Sounds','UserProfileResource','error','stack','name','index','map','Sound','rawAttributes','type','key','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','fields','download','find','save_name','converted_format','existsSync','root','Sequelize','ValidationError','Sound\x20not\x20found','join','server/files/sounds/converted','format','%s.%s','create','basename','originalname','extname','file','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','send','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','sampleRate','converted_duration','converted_sampleCount','converted_bitRate','bitRate','converted_sampleRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0x4b3d43,_0x3e1786){var _0x11e498=function(_0x2bb0bf){while(--_0x2bb0bf){_0x4b3d43['push'](_0x4b3d43['shift']());}};_0x11e498(++_0x3e1786);}(_0x4312,0x189));var _0x2431=function(_0x101125,_0x2c5953){_0x101125=_0x101125-0x0;var _0x40f6b0=_0x4312[_0x101125];return _0x40f6b0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2431('0x0'));var zipdir=require(_0x2431('0x1'));var jsonpatch=require(_0x2431('0x2'));var rp=require(_0x2431('0x3'));var moment=require(_0x2431('0x4'));var BPromise=require(_0x2431('0x5'));var Mustache=require(_0x2431('0x6'));var util=require(_0x2431('0x7'));var path=require(_0x2431('0x8'));var sox=require(_0x2431('0x9'));var csv=require(_0x2431('0xa'));var ejs=require(_0x2431('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2431('0xc'));var squel=require(_0x2431('0xd'));var crypto=require(_0x2431('0xe'));var jsforce=require(_0x2431('0xf'));var deskjs=require(_0x2431('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2431('0x11'));var Papa=require('papaparse');var Redis=require(_0x2431('0x12'));var authService=require(_0x2431('0x13'));var qs=require(_0x2431('0x14'));var as=require(_0x2431('0x15'));var hardwareService=require(_0x2431('0x16'));var logger=require(_0x2431('0x17'))(_0x2431('0x18'));var utils=require(_0x2431('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2431('0x1a'))['db'];function respondWithStatusCode(_0x5b4881,_0x332229){_0x332229=_0x332229||0xcc;return function(_0x4b354b){if(_0x4b354b){return _0x5b4881[_0x2431('0x1b')](_0x332229);}return _0x5b4881['status'](_0x332229)[_0x2431('0x1c')]();};}function respondWithResult(_0x49c3f0,_0x294614){_0x294614=_0x294614||0xc8;return function(_0xd514f0){if(_0xd514f0){return _0x49c3f0[_0x2431('0x1d')](_0x294614)[_0x2431('0x1e')](_0xd514f0);}};}function respondWithFilteredResult(_0x2cad49,_0x8f101f){return function(_0x46e0a3){if(_0x46e0a3){var _0x534b04=typeof _0x8f101f[_0x2431('0x1f')]===_0x2431('0x20')&&typeof _0x8f101f[_0x2431('0x21')]===_0x2431('0x20');var _0x3487a7=_0x46e0a3[_0x2431('0x22')];var _0x4542c4=_0x534b04?0x0:_0x8f101f[_0x2431('0x1f')];var _0xe77b9e=_0x534b04?_0x46e0a3[_0x2431('0x22')]:_0x8f101f['offset']+_0x8f101f['limit'];var _0x4366ed;if(_0xe77b9e>=_0x3487a7){_0xe77b9e=_0x3487a7;_0x4366ed=0xc8;}else{_0x4366ed=0xce;}_0x2cad49[_0x2431('0x1d')](_0x4366ed);return _0x2cad49[_0x2431('0x23')]('Content-Range',_0x4542c4+'-'+_0xe77b9e+'/'+_0x3487a7)[_0x2431('0x1e')](_0x46e0a3);}return null;};}function patchUpdates(_0x5d0936){return function(_0x57ca5b){try{jsonpatch[_0x2431('0x24')](_0x57ca5b,_0x5d0936,!![]);}catch(_0x3ad7b8){return BPromise['reject'](_0x3ad7b8);}return _0x57ca5b[_0x2431('0x25')]();};}function saveUpdates(_0x5a0315,_0xe8b838){return function(_0x24f24f){if(_0x24f24f){return _0x24f24f[_0x2431('0x26')](_0x5a0315)[_0x2431('0x27')](function(_0x2bdb4e){return _0x2bdb4e;});}return null;};}function removeEntity(_0x515e1d,_0x1bf2ec){return function(_0x4c41c4){if(_0x4c41c4){return _0x4c41c4[_0x2431('0x28')]()[_0x2431('0x27')](function(){var _0x3121cf=_0x4c41c4[_0x2431('0x29')]({'plain':!![]});var _0x1a8c95=_0x2431('0x2a');return db[_0x2431('0x2b')][_0x2431('0x28')]({'where':{'type':_0x1a8c95,'resourceId':_0x3121cf['id']}})[_0x2431('0x27')](function(){return _0x4c41c4;});})[_0x2431('0x27')](function(){_0x515e1d[_0x2431('0x1d')](0xcc)[_0x2431('0x1c')]();});}};}function handleEntityNotFound(_0x604468,_0x9d6e5d){return function(_0x573c5f){if(!_0x573c5f){_0x604468[_0x2431('0x1b')](0x194);}return _0x573c5f;};}function handleError(_0x3f3705,_0x55c408){_0x55c408=_0x55c408||0x1f4;return function(_0x8bf8c3){logger[_0x2431('0x2c')](_0x8bf8c3[_0x2431('0x2d')]);if(_0x8bf8c3[_0x2431('0x2e')]){delete _0x8bf8c3[_0x2431('0x2e')];}_0x3f3705[_0x2431('0x1d')](_0x55c408)['send'](_0x8bf8c3);};}exports[_0x2431('0x2f')]=function(_0x1d7f34,_0x331671){var _0x354ab4={},_0x2f0272={},_0x20edb4={'count':0x0,'rows':[]};var _0x39598b=_[_0x2431('0x30')](db[_0x2431('0x31')][_0x2431('0x32')],function(_0x4d164f){return{'name':_0x4d164f['fieldName'],'type':_0x4d164f[_0x2431('0x33')][_0x2431('0x34')]};});_0x2f0272['model']=_[_0x2431('0x30')](_0x39598b,_0x2431('0x2e'));_0x2f0272[_0x2431('0x35')]=_['keys'](_0x1d7f34[_0x2431('0x35')]);_0x2f0272[_0x2431('0x36')]=_['intersection'](_0x2f0272['model'],_0x2f0272[_0x2431('0x35')]);_0x354ab4['attributes']=_[_0x2431('0x37')](_0x2f0272[_0x2431('0x38')],qs['fields'](_0x1d7f34['query']['fields']));_0x354ab4[_0x2431('0x39')]=_0x354ab4['attributes'][_0x2431('0x3a')]?_0x354ab4['attributes']:_0x2f0272[_0x2431('0x38')];if(!_0x1d7f34[_0x2431('0x35')][_0x2431('0x3b')](_0x2431('0x3c'))){_0x354ab4[_0x2431('0x21')]=qs[_0x2431('0x21')](_0x1d7f34[_0x2431('0x35')][_0x2431('0x21')]);_0x354ab4[_0x2431('0x1f')]=qs[_0x2431('0x1f')](_0x1d7f34[_0x2431('0x35')][_0x2431('0x1f')]);}_0x354ab4[_0x2431('0x3d')]=qs['sort'](_0x1d7f34[_0x2431('0x35')][_0x2431('0x3e')]);_0x354ab4[_0x2431('0x3f')]=qs[_0x2431('0x36')](_[_0x2431('0x40')](_0x1d7f34[_0x2431('0x35')],_0x2f0272[_0x2431('0x36')]),_0x39598b);if(_0x1d7f34[_0x2431('0x35')][_0x2431('0x41')]){_0x354ab4['where']=_[_0x2431('0x42')](_0x354ab4['where'],{'$or':_[_0x2431('0x30')](_0x39598b,function(_0x571974){if(_0x571974[_0x2431('0x33')]!==_0x2431('0x43')){var _0x4b63bc={};_0x4b63bc[_0x571974[_0x2431('0x2e')]]={'$like':'%'+_0x1d7f34[_0x2431('0x35')][_0x2431('0x41')]+'%'};return _0x4b63bc;}})});}_0x354ab4=_[_0x2431('0x42')]({},_0x354ab4,_0x1d7f34[_0x2431('0x44')]);var _0x5c2202={'where':_0x354ab4[_0x2431('0x3f')]};return db[_0x2431('0x31')][_0x2431('0x22')](_0x5c2202)[_0x2431('0x27')](function(_0x5bc5fd){_0x20edb4[_0x2431('0x22')]=_0x5bc5fd;if(_0x1d7f34[_0x2431('0x35')][_0x2431('0x45')]){_0x354ab4[_0x2431('0x46')]=[{'all':!![]}];}return db['Sound'][_0x2431('0x47')](_0x354ab4);})['then'](function(_0x4b5f3e){_0x20edb4[_0x2431('0x48')]=_0x4b5f3e;return _0x20edb4;})[_0x2431('0x27')](respondWithFilteredResult(_0x331671,_0x354ab4))[_0x2431('0x49')](handleError(_0x331671,null));};exports[_0x2431('0x4a')]=function(_0x2f12b4,_0xa8532e){var _0x56b3bf={'raw':!![],'where':{'id':_0x2f12b4[_0x2431('0x4b')]['id']}},_0x58d610={};_0x58d610['model']=_[_0x2431('0x4c')](db[_0x2431('0x31')][_0x2431('0x32')]);_0x58d610[_0x2431('0x35')]=_[_0x2431('0x4c')](_0x2f12b4[_0x2431('0x35')]);_0x58d610['filters']=_[_0x2431('0x37')](_0x58d610[_0x2431('0x38')],_0x58d610[_0x2431('0x35')]);_0x56b3bf['attributes']=_[_0x2431('0x37')](_0x58d610[_0x2431('0x38')],qs[_0x2431('0x4d')](_0x2f12b4[_0x2431('0x35')][_0x2431('0x4d')]));_0x56b3bf['attributes']=_0x56b3bf['attributes'][_0x2431('0x3a')]?_0x56b3bf['attributes']:_0x58d610[_0x2431('0x38')];if(_0x2f12b4[_0x2431('0x35')][_0x2431('0x45')]){_0x56b3bf['include']=[{'all':!![]}];}_0x56b3bf=_[_0x2431('0x42')]({},_0x56b3bf,_0x2f12b4['options']);return db['Sound']['find'](_0x56b3bf)['then'](handleEntityNotFound(_0xa8532e,null))['then'](respondWithResult(_0xa8532e,null))[_0x2431('0x49')](handleError(_0xa8532e,null));};exports[_0x2431('0x4e')]=function(_0x1ee0f9,_0x27746d,_0x5e3b3c){return db[_0x2431('0x31')][_0x2431('0x4f')]({'where':{'id':_0x1ee0f9[_0x2431('0x4b')]['id']},'attributes':['name',_0x2431('0x50'),_0x2431('0x51')],'raw':!![]})[_0x2431('0x27')](handleEntityNotFound(_0x27746d,null))['then'](function(_0x222716){if(_0x222716){if(!fs[_0x2431('0x52')](path['join'](config[_0x2431('0x53')],'server/files/sounds/converted',_0x222716[_0x2431('0x50')]+'.'+_0x222716[_0x2431('0x51')]))){throw new db[(_0x2431('0x54'))][(_0x2431('0x55'))](_0x2431('0x56'));}return _0x27746d['download'](path[_0x2431('0x57')](config[_0x2431('0x53')],_0x2431('0x58'),util[_0x2431('0x59')](_0x2431('0x5a'),_0x222716[_0x2431('0x50')],_0x222716[_0x2431('0x51')])),util['format']('%s.%s',_0x222716[_0x2431('0x2e')],_0x222716['converted_format']));}return null;})[_0x2431('0x49')](handleError(_0x27746d,null));};exports[_0x2431('0x5b')]=function(_0x3b135d,_0xe47991,_0x1932e0){var _0x5d51ab={'name':path[_0x2431('0x5c')](_0x3b135d['file'][_0x2431('0x5d')],path[_0x2431('0x5e')](_0x3b135d['file'][_0x2431('0x5d')])),'save_name':path[_0x2431('0x5c')](_0x3b135d[_0x2431('0x5f')][_0x2431('0x60')],path[_0x2431('0x5e')](_0x3b135d[_0x2431('0x5f')]['filename'])),'original_format':path['extname'](_0x3b135d[_0x2431('0x5f')][_0x2431('0x5d')])[_0x2431('0x61')](0x1),'converted_format':_0x2431('0x62')};var _0x4552e7=path[_0x2431('0x57')](config[_0x2431('0x53')],_0x2431('0x63'),_0x3b135d['file'][_0x2431('0x60')]);var _0x45cfe3=path['join'](config[_0x2431('0x53')],_0x2431('0x58'),util[_0x2431('0x59')](_0x2431('0x5a'),path['basename'](_0x3b135d[_0x2431('0x5f')][_0x2431('0x60')],path[_0x2431('0x5e')](_0x3b135d['file'][_0x2431('0x60')])),_0x5d51ab[_0x2431('0x51')]));logger[_0x2431('0x64')](_0x2431('0x65'),_0x4552e7);logger[_0x2431('0x64')](_0x2431('0x66'),_0x45cfe3);try{fs[_0x2431('0x67')](_0x4552e7,parseInt(_0x2431('0x68'),0x8));var _0x14dfb4=sox[_0x2431('0x69')](_0x4552e7,_0x45cfe3,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x14dfb4['on'](_0x2431('0x2c'),function(_0x11d9d9){fs['unlinkSync'](_0x4552e7);_0xe47991[_0x2431('0x1d')](0x1f4)[_0x2431('0x6a')](_0x11d9d9);});_0x14dfb4['on'](_0x2431('0x6b'),function(_0x1f3432){_0x5d51ab[_0x2431('0x6c')]=isNaN(_0x1f3432[_0x2431('0x6d')])?null:_0x1f3432[_0x2431('0x6d')]*0x3e8;_0x5d51ab[_0x2431('0x6e')]=isNaN(_0x1f3432[_0x2431('0x6f')])?null:_0x1f3432[_0x2431('0x6f')];_0x5d51ab[_0x2431('0x70')]=isNaN(_0x1f3432[_0x2431('0x71')])?null:_0x1f3432['channelCount'];_0x5d51ab[_0x2431('0x72')]=isNaN(_0x1f3432['bitRate'])?null:_0x1f3432['bitRate'];_0x5d51ab['original_sampleRate']=isNaN(_0x1f3432[_0x2431('0x73')])?null:_0x1f3432[_0x2431('0x73')];});_0x14dfb4['on']('dest',function(_0x31c36f){_0x5d51ab[_0x2431('0x74')]=isNaN(_0x31c36f['duration'])?null:_0x31c36f['duration']*0x3e8;_0x5d51ab[_0x2431('0x75')]=isNaN(_0x31c36f['sampleCount'])?null:_0x31c36f[_0x2431('0x6f')];_0x5d51ab['converted_channelCount']=isNaN(_0x31c36f[_0x2431('0x71')])?null:_0x31c36f[_0x2431('0x71')];_0x5d51ab[_0x2431('0x76')]=isNaN(_0x31c36f[_0x2431('0x77')])?null:_0x31c36f[_0x2431('0x77')];_0x5d51ab[_0x2431('0x78')]=isNaN(_0x31c36f[_0x2431('0x73')])?null:_0x31c36f[_0x2431('0x73')];});_0x14dfb4['on'](_0x2431('0x1c'),function(){fs[_0x2431('0x67')](_0x45cfe3,parseInt(_0x2431('0x68'),0x8));return db[_0x2431('0x31')][_0x2431('0x5b')](_0x5d51ab)[_0x2431('0x27')](function(_0x60c649){var _0x170c85={'role':_0x3b135d[_0x2431('0x79')]['role'],'userProfileId':_0x3b135d[_0x2431('0x79')][_0x2431('0x7a')]};if(!_0x170c85)throw new Error(_0x2431('0x7b'));if(_0x170c85[_0x2431('0x7c')]===_0x2431('0x7d')){var _0x576c65=_0x60c649['get']({'plain':!![]});return db[_0x2431('0x7e')][_0x2431('0x4f')]({'where':{'name':_0x2431('0x2a'),'userProfileId':_0x170c85[_0x2431('0x7a')]},'raw':!![]})['then'](function(_0x3c5064){if(_0x3c5064&&_0x3c5064[_0x2431('0x7f')]===0x0){return db[_0x2431('0x2b')][_0x2431('0x5b')]({'name':_0x576c65[_0x2431('0x2e')],'resourceId':_0x576c65['id'],'type':_0x3c5064[_0x2431('0x2e')],'sectionId':_0x3c5064['id']},{})[_0x2431('0x27')](function(){return _0x60c649;});}else{return _0x60c649;}})[_0x2431('0x49')](function(_0x4a4d9f){logger[_0x2431('0x2c')](_0x2431('0x80'),_0x4a4d9f);throw _0x4a4d9f;});}return _0x60c649;})[_0x2431('0x27')](respondWithResult(_0xe47991,null))[_0x2431('0x49')](handleError(_0xe47991,null));});_0x14dfb4[_0x2431('0x81')]();}catch(_0x42e10d){_0xe47991[_0x2431('0x1d')](0x1f4)[_0x2431('0x6a')](_0x42e10d);}};exports['update']=function(_0x3c1f36,_0x4026bd,_0x1259d9){return db[_0x2431('0x31')]['find']({'where':{'id':_0x3c1f36[_0x2431('0x4b')]['id']}})[_0x2431('0x27')](handleEntityNotFound(_0x4026bd,null))[_0x2431('0x27')](saveUpdates(_[_0x2431('0x40')](_0x3c1f36[_0x2431('0x79')],[_0x2431('0x2e'),_0x2431('0x82')]),null))[_0x2431('0x27')](respondWithResult(_0x4026bd,null))[_0x2431('0x49')](handleError(_0x4026bd,null));};exports[_0x2431('0x83')]=function(_0x20806e,_0x4135ee,_0x10ab8e){return db[_0x2431('0x31')]['find']({'where':{'id':_0x20806e[_0x2431('0x4b')]['id']}})['then'](function(_0x25a090){if(_0x25a090){return _0x25a090['destroy']();}})['then'](function(_0x23f177){var _0x5c974b=path[_0x2431('0x57')](config[_0x2431('0x53')],'server/files/sounds/original',util[_0x2431('0x59')](_0x2431('0x5a'),_0x23f177[_0x2431('0x50')],_0x23f177[_0x2431('0x84')]));var _0x432997=path[_0x2431('0x57')](config[_0x2431('0x53')],_0x2431('0x58'),util[_0x2431('0x59')](_0x2431('0x5a'),_0x23f177['save_name'],_0x23f177[_0x2431('0x51')]));fs[_0x2431('0x85')](_0x5c974b);fs[_0x2431('0x85')](_0x432997);return _0x23f177;})[_0x2431('0x27')](function(_0x1893bc){if(_0x1893bc){return _0x4135ee['status'](0xcc)[_0x2431('0x1c')]();}})[_0x2431('0x27')](handleEntityNotFound(_0x4135ee,null))['catch'](handleError(_0x4135ee,null));};
\ No newline at end of file
index 6541e23..627bf65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x670d=['tools_sounds','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x670d,0x12d));var _0xd670=function(_0x50d253,_0x35de56){_0x50d253=_0x50d253-0x0;var _0x5bb298=_0x670d[_0x50d253];return _0x5bb298;};'use strict';var _=require('lodash');var util=require(_0xd670('0x0'));var logger=require(_0xd670('0x1'))(_0xd670('0x2'));var moment=require(_0xd670('0x3'));var BPromise=require(_0xd670('0x4'));var rp=require(_0xd670('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd670('0x6'));var config=require(_0xd670('0x7'));var attributes=require('./sound.attributes');module[_0xd670('0x8')]=function(_0x271ba3,_0x4b7016){return _0x271ba3['define']('Sound',attributes,{'tableName':_0xd670('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8e08=['path','rimraf','../../config/environment','./sound.attributes','exports','define','Sound','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xe94a77,_0x368dcc){var _0x54387e=function(_0x3998ec){while(--_0x3998ec){_0xe94a77['push'](_0xe94a77['shift']());}};_0x54387e(++_0x368dcc);}(_0x8e08,0x1ac));var _0x88e0=function(_0x2a3374,_0x2a8028){_0x2a3374=_0x2a3374-0x0;var _0x35590a=_0x8e08[_0x2a3374];return _0x35590a;};'use strict';var _=require(_0x88e0('0x0'));var util=require(_0x88e0('0x1'));var logger=require(_0x88e0('0x2'))(_0x88e0('0x3'));var moment=require(_0x88e0('0x4'));var BPromise=require(_0x88e0('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x88e0('0x6'));var rimraf=require(_0x88e0('0x7'));var config=require(_0x88e0('0x8'));var attributes=require(_0x88e0('0x9'));module[_0x88e0('0xa')]=function(_0x4b7c80,_0x37aa00){return _0x4b7c80[_0x88e0('0xb')](_0x88e0('0xc'),attributes,{'tableName':_0x88e0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 75ca3a0..cd0368a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd73=['message','catch','ShowSound','find','options','where','include','map','model','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','error'];(function(_0x137591,_0x3c918e){var _0xa2ed64=function(_0x16b68e){while(--_0x16b68e){_0x137591['push'](_0x137591['shift']());}};_0xa2ed64(++_0x3c918e);}(_0xdd73,0x82));var _0x3dd7=function(_0x8e2f22,_0x4bd4db){_0x8e2f22=_0x8e2f22-0x0;var _0xf7fe9e=_0xdd73[_0x8e2f22];return _0xf7fe9e;};'use strict';var _=require(_0x3dd7('0x0'));var util=require(_0x3dd7('0x1'));var moment=require(_0x3dd7('0x2'));var BPromise=require(_0x3dd7('0x3'));var rs=require(_0x3dd7('0x4'));var fs=require('fs');var Redis=require(_0x3dd7('0x5'));var db=require(_0x3dd7('0x6'))['db'];var utils=require(_0x3dd7('0x7'));var logger=require('../../config/logger')(_0x3dd7('0x8'));var config=require(_0x3dd7('0x9'));var jayson=require(_0x3dd7('0xa'));var client=jayson[_0x3dd7('0xb')][_0x3dd7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x40fa68,_0x1127df,_0x36eaed){return new BPromise(function(_0xff41e8,_0x13af36){return client['request'](_0x40fa68,_0x36eaed)[_0x3dd7('0xd')](function(_0x4298d7){logger[_0x3dd7('0xe')](_0x3dd7('0xf'),_0x1127df,_0x3dd7('0x10'));logger[_0x3dd7('0x11')](_0x3dd7('0x12'),_0x1127df,_0x3dd7('0x10'),JSON['stringify'](_0x4298d7));if(_0x4298d7['error']){if(_0x4298d7['error']['code']===0x1f4){logger[_0x3dd7('0x13')](_0x3dd7('0xf'),_0x1127df,_0x4298d7[_0x3dd7('0x13')]['message']);return _0x13af36(_0x4298d7[_0x3dd7('0x13')][_0x3dd7('0x14')]);}logger[_0x3dd7('0x13')](_0x3dd7('0xf'),_0x1127df,_0x4298d7['error'][_0x3dd7('0x14')]);return _0xff41e8(_0x4298d7[_0x3dd7('0x13')][_0x3dd7('0x14')]);}else{logger[_0x3dd7('0xe')](_0x3dd7('0xf'),_0x1127df,'request\x20sent');_0xff41e8(_0x4298d7['result'][_0x3dd7('0x14')]);}})[_0x3dd7('0x15')](function(_0x163a16){logger[_0x3dd7('0x13')](_0x3dd7('0xf'),_0x1127df,_0x163a16);_0x13af36(_0x163a16);});});}exports[_0x3dd7('0x16')]=function(_0x3b7d46){var _0xb9123f=this;return new Promise(function(_0x1604cf,_0x2ef87f){return db['Sound'][_0x3dd7('0x17')]({'raw':_0x3b7d46['options']?_0x3b7d46['options']['raw']===undefined?!![]:![]:!![],'where':_0x3b7d46['options']?_0x3b7d46[_0x3dd7('0x18')][_0x3dd7('0x19')]||null:null,'attributes':_0x3b7d46[_0x3dd7('0x18')]?_0x3b7d46['options']['attributes']||null:null,'include':_0x3b7d46[_0x3dd7('0x18')]?_0x3b7d46['options'][_0x3dd7('0x1a')]?_[_0x3dd7('0x1b')](_0x3b7d46['options'][_0x3dd7('0x1a')],function(_0x29f48d){return{'model':db[_0x29f48d[_0x3dd7('0x1c')]],'as':_0x29f48d['as'],'attributes':_0x29f48d[_0x3dd7('0x1d')],'include':_0x29f48d['include']?_[_0x3dd7('0x1b')](_0x29f48d[_0x3dd7('0x1a')],function(_0x43ac29){return{'model':db[_0x43ac29[_0x3dd7('0x1c')]],'as':_0x43ac29['as'],'attributes':_0x43ac29['attributes'],'include':_0x43ac29[_0x3dd7('0x1a')]?_[_0x3dd7('0x1b')](_0x43ac29[_0x3dd7('0x1a')],function(_0x23df35){return{'model':db[_0x23df35[_0x3dd7('0x1c')]],'as':_0x23df35['as'],'attributes':_0x23df35[_0x3dd7('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x3dd7('0xd')](function(_0x1f615b){logger[_0x3dd7('0xe')](_0x3dd7('0x16'),_0x3b7d46);logger[_0x3dd7('0x11')](_0x3dd7('0x16'),_0x3b7d46,JSON['stringify'](_0x1f615b));_0x1604cf(_0x1f615b);})[_0x3dd7('0x15')](function(_0x2a4053){logger['error']('ShowSound',_0x2a4053[_0x3dd7('0x14')],_0x3b7d46);_0x2ef87f(_0xb9123f[_0x3dd7('0x13')](0x1f4,_0x2a4053[_0x3dd7('0x14')]));});});};
\ No newline at end of file
+var _0x3c41=['attributes','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowSound','Sound','find','options','raw','where','include','map','model'];(function(_0x311600,_0x5406e4){var _0x48e1e4=function(_0x4b7563){while(--_0x4b7563){_0x311600['push'](_0x311600['shift']());}};_0x48e1e4(++_0x5406e4);}(_0x3c41,0x1f1));var _0x13c4=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x3c41[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require(_0x13c4('0x0'));var moment=require('moment');var BPromise=require(_0x13c4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13c4('0x2'));var db=require(_0x13c4('0x3'))['db'];var utils=require(_0x13c4('0x4'));var logger=require(_0x13c4('0x5'))(_0x13c4('0x6'));var config=require('../../config/environment');var jayson=require(_0x13c4('0x7'));var client=jayson[_0x13c4('0x8')][_0x13c4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x53895e,_0x53c2ac,_0x3991ec){return new BPromise(function(_0x12933f,_0x490941){return client[_0x13c4('0xa')](_0x53895e,_0x3991ec)[_0x13c4('0xb')](function(_0x6a8ce3){logger[_0x13c4('0xc')](_0x13c4('0xd'),_0x53c2ac,_0x13c4('0xe'));logger[_0x13c4('0xf')](_0x13c4('0x10'),_0x53c2ac,_0x13c4('0xe'),JSON[_0x13c4('0x11')](_0x6a8ce3));if(_0x6a8ce3[_0x13c4('0x12')]){if(_0x6a8ce3[_0x13c4('0x12')][_0x13c4('0x13')]===0x1f4){logger[_0x13c4('0x12')]('Sound,\x20%s,\x20%s',_0x53c2ac,_0x6a8ce3[_0x13c4('0x12')][_0x13c4('0x14')]);return _0x490941(_0x6a8ce3[_0x13c4('0x12')]['message']);}logger[_0x13c4('0x12')]('Sound,\x20%s,\x20%s',_0x53c2ac,_0x6a8ce3[_0x13c4('0x12')][_0x13c4('0x14')]);return _0x12933f(_0x6a8ce3[_0x13c4('0x12')][_0x13c4('0x14')]);}else{logger[_0x13c4('0xc')](_0x13c4('0xd'),_0x53c2ac,_0x13c4('0xe'));_0x12933f(_0x6a8ce3[_0x13c4('0x15')]['message']);}})['catch'](function(_0x4c0dc6){logger[_0x13c4('0x12')](_0x13c4('0xd'),_0x53c2ac,_0x4c0dc6);_0x490941(_0x4c0dc6);});});}exports[_0x13c4('0x16')]=function(_0x1ba897){var _0x233f3=this;return new Promise(function(_0x736948,_0x2e442f){return db[_0x13c4('0x17')][_0x13c4('0x18')]({'raw':_0x1ba897[_0x13c4('0x19')]?_0x1ba897[_0x13c4('0x19')][_0x13c4('0x1a')]===undefined?!![]:![]:!![],'where':_0x1ba897[_0x13c4('0x19')]?_0x1ba897[_0x13c4('0x19')][_0x13c4('0x1b')]||null:null,'attributes':_0x1ba897[_0x13c4('0x19')]?_0x1ba897[_0x13c4('0x19')]['attributes']||null:null,'include':_0x1ba897[_0x13c4('0x19')]?_0x1ba897[_0x13c4('0x19')][_0x13c4('0x1c')]?_[_0x13c4('0x1d')](_0x1ba897[_0x13c4('0x19')][_0x13c4('0x1c')],function(_0xd9c025){return{'model':db[_0xd9c025[_0x13c4('0x1e')]],'as':_0xd9c025['as'],'attributes':_0xd9c025[_0x13c4('0x1f')],'include':_0xd9c025[_0x13c4('0x1c')]?_['map'](_0xd9c025[_0x13c4('0x1c')],function(_0x8aff00){return{'model':db[_0x8aff00['model']],'as':_0x8aff00['as'],'attributes':_0x8aff00[_0x13c4('0x1f')],'include':_0x8aff00[_0x13c4('0x1c')]?_[_0x13c4('0x1d')](_0x8aff00[_0x13c4('0x1c')],function(_0xf4bfa5){return{'model':db[_0xf4bfa5['model']],'as':_0xf4bfa5['as'],'attributes':_0xf4bfa5[_0x13c4('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x13c4('0xb')](function(_0x1860a8){logger[_0x13c4('0xc')](_0x13c4('0x16'),_0x1ba897);logger[_0x13c4('0xf')](_0x13c4('0x16'),_0x1ba897,JSON[_0x13c4('0x11')](_0x1860a8));_0x736948(_0x1860a8);})[_0x13c4('0x20')](function(_0x36d152){logger[_0x13c4('0x12')](_0x13c4('0x16'),_0x36d152['message'],_0x1ba897);_0x2e442f(_0x233f3[_0x13c4('0x12')](0x1f4,_0x36d152[_0x13c4('0x14')]));});});};
\ No newline at end of file
index 66c018f..61255f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy'];(function(_0x557750,_0x1d144d){var _0x21db38=function(_0x256e7d){while(--_0x256e7d){_0x557750['push'](_0x557750['shift']());}};_0x21db38(++_0x1d144d);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0xb7e7[_0x2aec52];return _0x3b8835;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0xb')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller['update']);router[_0x7b7e('0xf')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x10')]);module[_0x7b7e('0x11')]=router;
\ No newline at end of file
+var _0x14a0=['get','isAuthenticated','/:id','show','create','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./squareMessage.controller'];(function(_0x3f7b6c,_0x2595df){var _0x36c983=function(_0x4b8761){while(--_0x4b8761){_0x3f7b6c['push'](_0x3f7b6c['shift']());}};_0x36c983(++_0x2595df);}(_0x14a0,0x8e));var _0x014a=function(_0x1b8b66,_0x2f9a50){_0x1b8b66=_0x1b8b66-0x0;var _0x795e0c=_0x14a0[_0x1b8b66];return _0x795e0c;};'use strict';var multer=require('multer');var util=require(_0x014a('0x0'));var path=require(_0x014a('0x1'));var timeout=require(_0x014a('0x2'));var express=require(_0x014a('0x3'));var router=express[_0x014a('0x4')]();var fs_extra=require(_0x014a('0x5'));var auth=require(_0x014a('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x014a('0x7'));router[_0x014a('0x8')]('/',auth[_0x014a('0x9')](),controller['index']);router['get'](_0x014a('0xa'),auth[_0x014a('0x9')](),controller[_0x014a('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x014a('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x014a('0xd')]('/:id',auth[_0x014a('0x9')](),controller[_0x014a('0xe')]);module['exports']=router;
\ No newline at end of file
index 808ca81..a8a1560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20ae=['sequelize','exports','medium','ENUM','out','STRING'];(function(_0x389ee3,_0x38c8b5){var _0x4f7d1f=function(_0x3c35e5){while(--_0x3c35e5){_0x389ee3['push'](_0x389ee3['shift']());}};_0x4f7d1f(++_0x38c8b5);}(_0x20ae,0x144));var _0xe20a=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x20ae[_0x5f1391];return _0x50ebe3;};'use strict';var Sequelize=require(_0xe20a('0x0'));module[_0xe20a('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize['TEXT'](_0xe20a('0x2')),'allowNull':![]},'direction':{'type':Sequelize[_0xe20a('0x3')]('in',_0xe20a('0x4')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0xe20a('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xbf53=['medium','exports','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbf53,0xd9));var _0x3bf5=function(_0x3eb209,_0x5bb276){_0x3eb209=_0x3eb209-0x0;var _0x2870f3=_0xbf53[_0x3eb209];return _0x2870f3;};'use strict';var Sequelize=require('sequelize');module[_0x3bf5('0x0')]={'uniqueid':{'type':Sequelize[_0x3bf5('0x1')]},'body':{'type':Sequelize['TEXT'](_0x3bf5('0x2')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index d389457..e8d6791 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4530=['sendStatus','error','name','SquareMessage','rawAttributes','fieldName','key','map','keys','query','filters','intersection','fields','attributes','model','hasOwnProperty','order','sort','pick','merge','type','filter','where','includeAll','include','findAll','rows','length','find','catch','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0x4530,0x1e9));var _0x0453=function(_0xa1e030,_0x579969){_0xa1e030=_0xa1e030-0x0;var _0x1619bb=_0x4530[_0xa1e030];return _0x1619bb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0453('0x0'));var zipdir=require(_0x0453('0x1'));var jsonpatch=require(_0x0453('0x2'));var rp=require(_0x0453('0x3'));var moment=require(_0x0453('0x4'));var BPromise=require(_0x0453('0x5'));var Mustache=require(_0x0453('0x6'));var util=require(_0x0453('0x7'));var path=require(_0x0453('0x8'));var sox=require(_0x0453('0x9'));var csv=require(_0x0453('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0453('0xb'));var _=require(_0x0453('0xc'));var squel=require(_0x0453('0xd'));var crypto=require(_0x0453('0xe'));var jsforce=require(_0x0453('0xf'));var deskjs=require(_0x0453('0x10'));var toCsv=require(_0x0453('0xa'));var querystring=require(_0x0453('0x11'));var Papa=require(_0x0453('0x12'));var Redis=require(_0x0453('0x13'));var authService=require(_0x0453('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x0453('0x15'));var hardwareService=require(_0x0453('0x16'));var logger=require('../../config/logger')(_0x0453('0x17'));var utils=require(_0x0453('0x18'));var config=require(_0x0453('0x19'));var licenseUtil=require(_0x0453('0x1a'));var db=require(_0x0453('0x1b'))['db'];function respondWithStatusCode(_0x2db95b,_0x1e8aa7){_0x1e8aa7=_0x1e8aa7||0xcc;return function(_0x5af496){if(_0x5af496){return _0x2db95b['sendStatus'](_0x1e8aa7);}return _0x2db95b[_0x0453('0x1c')](_0x1e8aa7)[_0x0453('0x1d')]();};}function respondWithResult(_0x587b93,_0x3f60d2){_0x3f60d2=_0x3f60d2||0xc8;return function(_0x1ae2c1){if(_0x1ae2c1){return _0x587b93[_0x0453('0x1c')](_0x3f60d2)[_0x0453('0x1e')](_0x1ae2c1);}};}function respondWithFilteredResult(_0xacb535,_0x34ae90){return function(_0x519bf7){if(_0x519bf7){var _0x419e91=typeof _0x34ae90[_0x0453('0x1f')]===_0x0453('0x20')&&typeof _0x34ae90[_0x0453('0x21')]===_0x0453('0x20');var _0x59c3dd=_0x519bf7['count'];var _0x4300ff=_0x419e91?0x0:_0x34ae90[_0x0453('0x1f')];var _0x4fba62=_0x419e91?_0x519bf7[_0x0453('0x22')]:_0x34ae90[_0x0453('0x1f')]+_0x34ae90[_0x0453('0x21')];var _0x48ac90;if(_0x4fba62>=_0x59c3dd){_0x4fba62=_0x59c3dd;_0x48ac90=0xc8;}else{_0x48ac90=0xce;}_0xacb535[_0x0453('0x1c')](_0x48ac90);return _0xacb535[_0x0453('0x23')](_0x0453('0x24'),_0x4300ff+'-'+_0x4fba62+'/'+_0x59c3dd)[_0x0453('0x1e')](_0x519bf7);}return null;};}function patchUpdates(_0x2f2c39){return function(_0xfb1c12){try{jsonpatch[_0x0453('0x25')](_0xfb1c12,_0x2f2c39,!![]);}catch(_0x2f2cd4){return BPromise[_0x0453('0x26')](_0x2f2cd4);}return _0xfb1c12[_0x0453('0x27')]();};}function saveUpdates(_0x47dc0b,_0xc60ad3){return function(_0xbe3d2d){if(_0xbe3d2d){return _0xbe3d2d[_0x0453('0x28')](_0x47dc0b)['then'](function(_0x37bcc6){return _0x37bcc6;});}return null;};}function removeEntity(_0x399c5f,_0xae25c5){return function(_0x411665){if(_0x411665){return _0x411665[_0x0453('0x29')]()[_0x0453('0x2a')](function(){_0x399c5f['status'](0xcc)[_0x0453('0x1d')]();});}};}function handleEntityNotFound(_0x94606,_0x547cdd){return function(_0x2b347a){if(!_0x2b347a){_0x94606[_0x0453('0x2b')](0x194);}return _0x2b347a;};}function handleError(_0x314bd0,_0x31a1d9){_0x31a1d9=_0x31a1d9||0x1f4;return function(_0x15f6ad){logger[_0x0453('0x2c')](_0x15f6ad['stack']);if(_0x15f6ad[_0x0453('0x2d')]){delete _0x15f6ad['name'];}_0x314bd0['status'](_0x31a1d9)['send'](_0x15f6ad);};}exports['index']=function(_0x2662ce,_0x26ef0e){var _0xf9c944={},_0x2da859={},_0x4b9b60={'count':0x0,'rows':[]};var _0x1a6632=_['map'](db[_0x0453('0x2e')][_0x0453('0x2f')],function(_0x24eca5){return{'name':_0x24eca5[_0x0453('0x30')],'type':_0x24eca5['type'][_0x0453('0x31')]};});_0x2da859['model']=_[_0x0453('0x32')](_0x1a6632,'name');_0x2da859['query']=_[_0x0453('0x33')](_0x2662ce[_0x0453('0x34')]);_0x2da859[_0x0453('0x35')]=_[_0x0453('0x36')](_0x2da859['model'],_0x2da859[_0x0453('0x34')]);_0xf9c944['attributes']=_['intersection'](_0x2da859['model'],qs[_0x0453('0x37')](_0x2662ce['query'][_0x0453('0x37')]));_0xf9c944[_0x0453('0x38')]=_0xf9c944['attributes']['length']?_0xf9c944[_0x0453('0x38')]:_0x2da859[_0x0453('0x39')];if(!_0x2662ce[_0x0453('0x34')][_0x0453('0x3a')]('nolimit')){_0xf9c944['limit']=qs[_0x0453('0x21')](_0x2662ce[_0x0453('0x34')]['limit']);_0xf9c944['offset']=qs[_0x0453('0x1f')](_0x2662ce[_0x0453('0x34')][_0x0453('0x1f')]);}_0xf9c944[_0x0453('0x3b')]=qs[_0x0453('0x3c')](_0x2662ce[_0x0453('0x34')][_0x0453('0x3c')]);_0xf9c944['where']=qs[_0x0453('0x35')](_[_0x0453('0x3d')](_0x2662ce['query'],_0x2da859[_0x0453('0x35')]),_0x1a6632);if(_0x2662ce['query']['filter']){_0xf9c944['where']=_[_0x0453('0x3e')](_0xf9c944['where'],{'$or':_[_0x0453('0x32')](_0x1a6632,function(_0x5911fc){if(_0x5911fc[_0x0453('0x3f')]!=='VIRTUAL'){var _0x4ffb3a={};_0x4ffb3a[_0x5911fc[_0x0453('0x2d')]]={'$like':'%'+_0x2662ce[_0x0453('0x34')][_0x0453('0x40')]+'%'};return _0x4ffb3a;}})});}_0xf9c944=_[_0x0453('0x3e')]({},_0xf9c944,_0x2662ce['options']);var _0x4326e0={'where':_0xf9c944[_0x0453('0x41')]};return db[_0x0453('0x2e')][_0x0453('0x22')](_0x4326e0)[_0x0453('0x2a')](function(_0x942bc3){_0x4b9b60[_0x0453('0x22')]=_0x942bc3;if(_0x2662ce[_0x0453('0x34')][_0x0453('0x42')]){_0xf9c944[_0x0453('0x43')]=[{'all':!![]}];}return db[_0x0453('0x2e')][_0x0453('0x44')](_0xf9c944);})[_0x0453('0x2a')](function(_0x575ce2){_0x4b9b60[_0x0453('0x45')]=_0x575ce2;return _0x4b9b60;})['then'](respondWithFilteredResult(_0x26ef0e,_0xf9c944))['catch'](handleError(_0x26ef0e,null));};exports['show']=function(_0x5d53cc,_0x4c7be9){var _0x29495f={'raw':!![],'where':{'id':_0x5d53cc['params']['id']}},_0x244698={};_0x244698['model']=_['keys'](db['SquareMessage'][_0x0453('0x2f')]);_0x244698['query']=_[_0x0453('0x33')](_0x5d53cc[_0x0453('0x34')]);_0x244698[_0x0453('0x35')]=_[_0x0453('0x36')](_0x244698[_0x0453('0x39')],_0x244698[_0x0453('0x34')]);_0x29495f[_0x0453('0x38')]=_[_0x0453('0x36')](_0x244698['model'],qs['fields'](_0x5d53cc[_0x0453('0x34')][_0x0453('0x37')]));_0x29495f[_0x0453('0x38')]=_0x29495f[_0x0453('0x38')][_0x0453('0x46')]?_0x29495f[_0x0453('0x38')]:_0x244698['model'];if(_0x5d53cc[_0x0453('0x34')][_0x0453('0x42')]){_0x29495f[_0x0453('0x43')]=[{'all':!![]}];}_0x29495f=_[_0x0453('0x3e')]({},_0x29495f,_0x5d53cc['options']);return db[_0x0453('0x2e')][_0x0453('0x47')](_0x29495f)[_0x0453('0x2a')](handleEntityNotFound(_0x4c7be9,null))[_0x0453('0x2a')](respondWithResult(_0x4c7be9,null))[_0x0453('0x48')](handleError(_0x4c7be9,null));};exports[_0x0453('0x49')]=function(_0x55327e,_0x53f83c){return db['SquareMessage'][_0x0453('0x49')](_0x55327e['body'],{})[_0x0453('0x2a')](respondWithResult(_0x53f83c,0xc9))[_0x0453('0x48')](handleError(_0x53f83c,null));};exports[_0x0453('0x28')]=function(_0xf8899d,_0x57a7d5){if(_0xf8899d[_0x0453('0x4a')]['id']){delete _0xf8899d[_0x0453('0x4a')]['id'];}return db[_0x0453('0x2e')][_0x0453('0x47')]({'where':{'id':_0xf8899d[_0x0453('0x4b')]['id']}})[_0x0453('0x2a')](handleEntityNotFound(_0x57a7d5,null))[_0x0453('0x2a')](saveUpdates(_0xf8899d[_0x0453('0x4a')],null))[_0x0453('0x2a')](respondWithResult(_0x57a7d5,null))['catch'](handleError(_0x57a7d5,null));};exports[_0x0453('0x29')]=function(_0x3a74ee,_0x41638a){return db['SquareMessage'][_0x0453('0x47')]({'where':{'id':_0x3a74ee[_0x0453('0x4b')]['id']}})[_0x0453('0x2a')](handleEntityNotFound(_0x41638a,null))[_0x0453('0x2a')](removeEntity(_0x41638a,null))[_0x0453('0x48')](handleError(_0x41638a,null));};
\ No newline at end of file
+var _0x605b=['sort','where','filters','pick','filter','merge','type','VIRTUAL','options','SquareMessage','includeAll','findAll','rows','catch','params','keys','length','include','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','stack','name','send','map','rawAttributes','fieldName','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x40b283,_0x3be906){var _0x584741=function(_0x24356a){while(--_0x24356a){_0x40b283['push'](_0x40b283['shift']());}};_0x584741(++_0x3be906);}(_0x605b,0xf4));var _0xb605=function(_0x594628,_0x4f8a4c){_0x594628=_0x594628-0x0;var _0xf9a072=_0x605b[_0x594628];return _0xf9a072;};'use strict';var emlformat=require(_0xb605('0x0'));var rimraf=require(_0xb605('0x1'));var zipdir=require(_0xb605('0x2'));var jsonpatch=require(_0xb605('0x3'));var rp=require('request-promise');var moment=require(_0xb605('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb605('0x5'));var path=require('path');var sox=require(_0xb605('0x6'));var csv=require(_0xb605('0x7'));var ejs=require(_0xb605('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb605('0x9'));var squel=require(_0xb605('0xa'));var crypto=require(_0xb605('0xb'));var jsforce=require(_0xb605('0xc'));var deskjs=require(_0xb605('0xd'));var toCsv=require(_0xb605('0x7'));var querystring=require(_0xb605('0xe'));var Papa=require(_0xb605('0xf'));var Redis=require(_0xb605('0x10'));var authService=require(_0xb605('0x11'));var qs=require(_0xb605('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb605('0x13'));var logger=require(_0xb605('0x14'))('api');var utils=require(_0xb605('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xb605('0x16'));var db=require(_0xb605('0x17'))['db'];function respondWithStatusCode(_0x2d4a24,_0x26fee1){_0x26fee1=_0x26fee1||0xcc;return function(_0x5b7a5c){if(_0x5b7a5c){return _0x2d4a24[_0xb605('0x18')](_0x26fee1);}return _0x2d4a24['status'](_0x26fee1)[_0xb605('0x19')]();};}function respondWithResult(_0x1ac276,_0x2b740c){_0x2b740c=_0x2b740c||0xc8;return function(_0x42e1b9){if(_0x42e1b9){return _0x1ac276[_0xb605('0x1a')](_0x2b740c)[_0xb605('0x1b')](_0x42e1b9);}};}function respondWithFilteredResult(_0x41120b,_0x3d721f){return function(_0x2e177b){if(_0x2e177b){var _0x341612=typeof _0x3d721f[_0xb605('0x1c')]===_0xb605('0x1d')&&typeof _0x3d721f['limit']===_0xb605('0x1d');var _0x3cab37=_0x2e177b[_0xb605('0x1e')];var _0x1d39a4=_0x341612?0x0:_0x3d721f[_0xb605('0x1c')];var _0x294f20=_0x341612?_0x2e177b['count']:_0x3d721f[_0xb605('0x1c')]+_0x3d721f[_0xb605('0x1f')];var _0x5ded89;if(_0x294f20>=_0x3cab37){_0x294f20=_0x3cab37;_0x5ded89=0xc8;}else{_0x5ded89=0xce;}_0x41120b[_0xb605('0x1a')](_0x5ded89);return _0x41120b[_0xb605('0x20')](_0xb605('0x21'),_0x1d39a4+'-'+_0x294f20+'/'+_0x3cab37)[_0xb605('0x1b')](_0x2e177b);}return null;};}function patchUpdates(_0x24a798){return function(_0x44ca79){try{jsonpatch['apply'](_0x44ca79,_0x24a798,!![]);}catch(_0x154026){return BPromise[_0xb605('0x22')](_0x154026);}return _0x44ca79[_0xb605('0x23')]();};}function saveUpdates(_0x55293f,_0x296665){return function(_0x36bafa){if(_0x36bafa){return _0x36bafa[_0xb605('0x24')](_0x55293f)[_0xb605('0x25')](function(_0x23857a){return _0x23857a;});}return null;};}function removeEntity(_0xb32ca2,_0x3fbefb){return function(_0x209284){if(_0x209284){return _0x209284['destroy']()[_0xb605('0x25')](function(){_0xb32ca2[_0xb605('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3391e2,_0x3ff449){return function(_0x284aeb){if(!_0x284aeb){_0x3391e2[_0xb605('0x18')](0x194);}return _0x284aeb;};}function handleError(_0x4caeee,_0x19f141){_0x19f141=_0x19f141||0x1f4;return function(_0x340389){logger['error'](_0x340389[_0xb605('0x26')]);if(_0x340389[_0xb605('0x27')]){delete _0x340389[_0xb605('0x27')];}_0x4caeee[_0xb605('0x1a')](_0x19f141)[_0xb605('0x28')](_0x340389);};}exports['index']=function(_0x269e28,_0x4f2936){var _0x1123d6={},_0x54ac84={},_0x24c9cc={'count':0x0,'rows':[]};var _0x4f372d=_[_0xb605('0x29')](db['SquareMessage'][_0xb605('0x2a')],function(_0x35a60d){return{'name':_0x35a60d[_0xb605('0x2b')],'type':_0x35a60d['type']['key']};});_0x54ac84[_0xb605('0x2c')]=_['map'](_0x4f372d,'name');_0x54ac84[_0xb605('0x2d')]=_['keys'](_0x269e28[_0xb605('0x2d')]);_0x54ac84['filters']=_[_0xb605('0x2e')](_0x54ac84[_0xb605('0x2c')],_0x54ac84[_0xb605('0x2d')]);_0x1123d6[_0xb605('0x2f')]=_[_0xb605('0x2e')](_0x54ac84[_0xb605('0x2c')],qs['fields'](_0x269e28[_0xb605('0x2d')][_0xb605('0x30')]));_0x1123d6[_0xb605('0x2f')]=_0x1123d6[_0xb605('0x2f')]['length']?_0x1123d6[_0xb605('0x2f')]:_0x54ac84[_0xb605('0x2c')];if(!_0x269e28['query'][_0xb605('0x31')](_0xb605('0x32'))){_0x1123d6[_0xb605('0x1f')]=qs[_0xb605('0x1f')](_0x269e28[_0xb605('0x2d')]['limit']);_0x1123d6[_0xb605('0x1c')]=qs[_0xb605('0x1c')](_0x269e28[_0xb605('0x2d')][_0xb605('0x1c')]);}_0x1123d6[_0xb605('0x33')]=qs['sort'](_0x269e28[_0xb605('0x2d')][_0xb605('0x34')]);_0x1123d6[_0xb605('0x35')]=qs[_0xb605('0x36')](_[_0xb605('0x37')](_0x269e28[_0xb605('0x2d')],_0x54ac84[_0xb605('0x36')]),_0x4f372d);if(_0x269e28[_0xb605('0x2d')][_0xb605('0x38')]){_0x1123d6[_0xb605('0x35')]=_[_0xb605('0x39')](_0x1123d6['where'],{'$or':_[_0xb605('0x29')](_0x4f372d,function(_0x333bca){if(_0x333bca[_0xb605('0x3a')]!==_0xb605('0x3b')){var _0x149039={};_0x149039[_0x333bca[_0xb605('0x27')]]={'$like':'%'+_0x269e28[_0xb605('0x2d')][_0xb605('0x38')]+'%'};return _0x149039;}})});}_0x1123d6=_[_0xb605('0x39')]({},_0x1123d6,_0x269e28[_0xb605('0x3c')]);var _0x3ad29a={'where':_0x1123d6[_0xb605('0x35')]};return db[_0xb605('0x3d')]['count'](_0x3ad29a)[_0xb605('0x25')](function(_0x27ad4b){_0x24c9cc[_0xb605('0x1e')]=_0x27ad4b;if(_0x269e28[_0xb605('0x2d')][_0xb605('0x3e')]){_0x1123d6['include']=[{'all':!![]}];}return db[_0xb605('0x3d')][_0xb605('0x3f')](_0x1123d6);})['then'](function(_0x3b8605){_0x24c9cc[_0xb605('0x40')]=_0x3b8605;return _0x24c9cc;})[_0xb605('0x25')](respondWithFilteredResult(_0x4f2936,_0x1123d6))[_0xb605('0x41')](handleError(_0x4f2936,null));};exports['show']=function(_0xf4bf6b,_0x3309f7){var _0x5813b3={'raw':!![],'where':{'id':_0xf4bf6b[_0xb605('0x42')]['id']}},_0x5aa1de={};_0x5aa1de[_0xb605('0x2c')]=_[_0xb605('0x43')](db['SquareMessage'][_0xb605('0x2a')]);_0x5aa1de[_0xb605('0x2d')]=_[_0xb605('0x43')](_0xf4bf6b['query']);_0x5aa1de[_0xb605('0x36')]=_[_0xb605('0x2e')](_0x5aa1de[_0xb605('0x2c')],_0x5aa1de[_0xb605('0x2d')]);_0x5813b3[_0xb605('0x2f')]=_[_0xb605('0x2e')](_0x5aa1de[_0xb605('0x2c')],qs[_0xb605('0x30')](_0xf4bf6b[_0xb605('0x2d')]['fields']));_0x5813b3[_0xb605('0x2f')]=_0x5813b3['attributes'][_0xb605('0x44')]?_0x5813b3['attributes']:_0x5aa1de[_0xb605('0x2c')];if(_0xf4bf6b[_0xb605('0x2d')][_0xb605('0x3e')]){_0x5813b3[_0xb605('0x45')]=[{'all':!![]}];}_0x5813b3=_['merge']({},_0x5813b3,_0xf4bf6b[_0xb605('0x3c')]);return db[_0xb605('0x3d')][_0xb605('0x46')](_0x5813b3)[_0xb605('0x25')](handleEntityNotFound(_0x3309f7,null))['then'](respondWithResult(_0x3309f7,null))[_0xb605('0x41')](handleError(_0x3309f7,null));};exports[_0xb605('0x47')]=function(_0x2aa40d,_0xb8c4d8){return db[_0xb605('0x3d')][_0xb605('0x47')](_0x2aa40d[_0xb605('0x48')],{})[_0xb605('0x25')](respondWithResult(_0xb8c4d8,0xc9))[_0xb605('0x41')](handleError(_0xb8c4d8,null));};exports['update']=function(_0x4b78ea,_0x2f8f28){if(_0x4b78ea['body']['id']){delete _0x4b78ea[_0xb605('0x48')]['id'];}return db[_0xb605('0x3d')][_0xb605('0x46')]({'where':{'id':_0x4b78ea['params']['id']}})[_0xb605('0x25')](handleEntityNotFound(_0x2f8f28,null))[_0xb605('0x25')](saveUpdates(_0x4b78ea[_0xb605('0x48')],null))['then'](respondWithResult(_0x2f8f28,null))[_0xb605('0x41')](handleError(_0x2f8f28,null));};exports[_0xb605('0x49')]=function(_0x4b40e7,_0x4b817e){return db[_0xb605('0x3d')][_0xb605('0x46')]({'where':{'id':_0x4b40e7['params']['id']}})[_0xb605('0x25')](handleEntityNotFound(_0x4b817e,null))[_0xb605('0x25')](removeEntity(_0x4b817e,null))[_0xb605('0x41')](handleError(_0x4b817e,null));};
\ No newline at end of file
index 4de8f56..d900ae7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf8=['request-promise','path','rimraf','../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','lodash','../../config/logger','api','moment','bluebird'];(function(_0x2abb9d,_0x5b077f){var _0x9d25d6=function(_0x13b280){while(--_0x13b280){_0x2abb9d['push'](_0x2abb9d['shift']());}};_0x9d25d6(++_0x5b077f);}(_0xecf8,0xbe));var _0x8ecf=function(_0x29ace8,_0x30dfe5){_0x29ace8=_0x29ace8-0x0;var _0x5e63b5=_0xecf8[_0x29ace8];return _0x5e63b5;};'use strict';var _=require(_0x8ecf('0x0'));var util=require('util');var logger=require(_0x8ecf('0x1'))(_0x8ecf('0x2'));var moment=require(_0x8ecf('0x3'));var BPromise=require(_0x8ecf('0x4'));var rp=require(_0x8ecf('0x5'));var fs=require('fs');var path=require(_0x8ecf('0x6'));var rimraf=require(_0x8ecf('0x7'));var config=require(_0x8ecf('0x8'));var attributes=require(_0x8ecf('0x9'));module[_0x8ecf('0xa')]=function(_0x292e8c,_0x53674d){return _0x292e8c[_0x8ecf('0xb')](_0x8ecf('0xc'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe5c9=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','SquareMessage'];(function(_0x23e3da,_0x3e95d1){var _0x24f2a2=function(_0x1ec278){while(--_0x1ec278){_0x23e3da['push'](_0x23e3da['shift']());}};_0x24f2a2(++_0x3e95d1);}(_0xe5c9,0x144));var _0x9e5c=function(_0x339e0c,_0x34e928){_0x339e0c=_0x339e0c-0x0;var _0x21a8d5=_0xe5c9[_0x339e0c];return _0x21a8d5;};'use strict';var _=require(_0x9e5c('0x0'));var util=require(_0x9e5c('0x1'));var logger=require(_0x9e5c('0x2'))(_0x9e5c('0x3'));var moment=require(_0x9e5c('0x4'));var BPromise=require(_0x9e5c('0x5'));var rp=require(_0x9e5c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x9e5c('0x7'));var attributes=require('./squareMessage.attributes');module['exports']=function(_0xeea48e,_0x453b0e){return _0xeea48e['define'](_0x9e5c('0x8'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b4c7ef..fff3a30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d87=['SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareMessage','SquareMessage','create','options','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4a75c0,_0x32a872){var _0x2969e4=function(_0x63769b){while(--_0x63769b){_0x4a75c0['push'](_0x4a75c0['shift']());}};_0x2969e4(++_0x32a872);}(_0x8d87,0x9b));var _0x78d8=function(_0x53f715,_0x52587b){_0x53f715=_0x53f715-0x0;var _0x16c757=_0x8d87[_0x53f715];return _0x16c757;};'use strict';var _=require(_0x78d8('0x0'));var util=require(_0x78d8('0x1'));var moment=require(_0x78d8('0x2'));var BPromise=require(_0x78d8('0x3'));var rs=require(_0x78d8('0x4'));var fs=require('fs');var Redis=require(_0x78d8('0x5'));var db=require(_0x78d8('0x6'))['db'];var utils=require(_0x78d8('0x7'));var logger=require(_0x78d8('0x8'))(_0x78d8('0x9'));var config=require(_0x78d8('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x78d8('0xb')][_0x78d8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x109d7f,_0x5ecf18,_0x285543){return new BPromise(function(_0x13da23,_0x377aa6){return client[_0x78d8('0xd')](_0x109d7f,_0x285543)[_0x78d8('0xe')](function(_0x1a755a){logger[_0x78d8('0xf')](_0x78d8('0x10'),_0x5ecf18,_0x78d8('0x11'));logger[_0x78d8('0x12')](_0x78d8('0x13'),_0x5ecf18,_0x78d8('0x11'),JSON[_0x78d8('0x14')](_0x1a755a));if(_0x1a755a[_0x78d8('0x15')]){if(_0x1a755a['error']['code']===0x1f4){logger[_0x78d8('0x15')]('SquareMessage,\x20%s,\x20%s',_0x5ecf18,_0x1a755a[_0x78d8('0x15')][_0x78d8('0x16')]);return _0x377aa6(_0x1a755a[_0x78d8('0x15')][_0x78d8('0x16')]);}logger[_0x78d8('0x15')](_0x78d8('0x10'),_0x5ecf18,_0x1a755a[_0x78d8('0x15')][_0x78d8('0x16')]);return _0x13da23(_0x1a755a[_0x78d8('0x15')]['message']);}else{logger[_0x78d8('0xf')](_0x78d8('0x10'),_0x5ecf18,_0x78d8('0x11'));_0x13da23(_0x1a755a[_0x78d8('0x17')][_0x78d8('0x16')]);}})[_0x78d8('0x18')](function(_0x5aaf9a){logger['error']('SquareMessage,\x20%s,\x20%s',_0x5ecf18,_0x5aaf9a);_0x377aa6(_0x5aaf9a);});});}exports[_0x78d8('0x19')]=function(_0x8e3941){var _0x60bf3c=this;return new Promise(function(_0x2e811b,_0x2e3408){return db[_0x78d8('0x1a')][_0x78d8('0x1b')](_0x8e3941['body'],{'raw':_0x8e3941[_0x78d8('0x1c')]?_0x8e3941['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2e9469){logger[_0x78d8('0xf')](_0x78d8('0x19'),_0x8e3941);logger['debug']('CreateSquareMessage',_0x8e3941,JSON[_0x78d8('0x14')](_0x2e9469));_0x2e811b(_0x2e9469);})[_0x78d8('0x18')](function(_0x59291b){logger['error'](_0x78d8('0x19'),_0x59291b[_0x78d8('0x16')],_0x8e3941);_0x2e3408(_0x60bf3c[_0x78d8('0x15')](0x1f4,_0x59291b[_0x78d8('0x16')]));});});};
\ No newline at end of file
+var _0xa464=['body','options','raw','then','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','CreateSquareMessage','create'];(function(_0x1805bd,_0x1c1e7d){var _0x56b6f1=function(_0x10697f){while(--_0x10697f){_0x1805bd['push'](_0x1805bd['shift']());}};_0x56b6f1(++_0x1c1e7d);}(_0xa464,0x1a9));var _0x4a46=function(_0x33d431,_0xf591fb){_0x33d431=_0x33d431-0x0;var _0xad1bc8=_0xa464[_0x33d431];return _0xad1bc8;};'use strict';var _=require(_0x4a46('0x0'));var util=require(_0x4a46('0x1'));var moment=require(_0x4a46('0x2'));var BPromise=require(_0x4a46('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a46('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4a46('0x5'))(_0x4a46('0x6'));var config=require(_0x4a46('0x7'));var jayson=require(_0x4a46('0x8'));var client=jayson[_0x4a46('0x9')][_0x4a46('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d19d2,_0x5c958e,_0x23c077){return new BPromise(function(_0x1e9b8f,_0x2dc71a){return client[_0x4a46('0xb')](_0x1d19d2,_0x23c077)['then'](function(_0x28361f){logger['info'](_0x4a46('0xc'),_0x5c958e,_0x4a46('0xd'));logger[_0x4a46('0xe')]('SquareMessage,\x20%s,\x20%s,\x20%s',_0x5c958e,_0x4a46('0xd'),JSON[_0x4a46('0xf')](_0x28361f));if(_0x28361f[_0x4a46('0x10')]){if(_0x28361f[_0x4a46('0x10')][_0x4a46('0x11')]===0x1f4){logger[_0x4a46('0x10')](_0x4a46('0xc'),_0x5c958e,_0x28361f[_0x4a46('0x10')]['message']);return _0x2dc71a(_0x28361f[_0x4a46('0x10')][_0x4a46('0x12')]);}logger[_0x4a46('0x10')](_0x4a46('0xc'),_0x5c958e,_0x28361f['error'][_0x4a46('0x12')]);return _0x1e9b8f(_0x28361f['error']['message']);}else{logger[_0x4a46('0x13')](_0x4a46('0xc'),_0x5c958e,_0x4a46('0xd'));_0x1e9b8f(_0x28361f[_0x4a46('0x14')][_0x4a46('0x12')]);}})['catch'](function(_0x273782){logger[_0x4a46('0x10')](_0x4a46('0xc'),_0x5c958e,_0x273782);_0x2dc71a(_0x273782);});});}exports[_0x4a46('0x15')]=function(_0x376b3b){var _0x4c77c0=this;return new Promise(function(_0x22b9bb,_0x222f0b){return db['SquareMessage'][_0x4a46('0x16')](_0x376b3b[_0x4a46('0x17')],{'raw':_0x376b3b['options']?_0x376b3b[_0x4a46('0x18')][_0x4a46('0x19')]===undefined?!![]:![]:!![]})[_0x4a46('0x1a')](function(_0xcd317d){logger[_0x4a46('0x13')]('CreateSquareMessage',_0x376b3b);logger[_0x4a46('0xe')](_0x4a46('0x15'),_0x376b3b,JSON[_0x4a46('0xf')](_0xcd317d));_0x22b9bb(_0xcd317d);})[_0x4a46('0x1b')](function(_0x539124){logger[_0x4a46('0x10')](_0x4a46('0x15'),_0x539124[_0x4a46('0x12')],_0x376b3b);_0x222f0b(_0x4c77c0[_0x4a46('0x10')](0x1f4,_0x539124[_0x4a46('0x12')]));});});};
\ No newline at end of file
index 908b451..265b192 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6662=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','show','/:id/test','test','post','put','/:id','exports','multer','util','path','express','Router'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x6662,0xeb));var _0x2666=function(_0x569744,_0x30c532){_0x569744=_0x569744-0x0;var _0x57e918=_0x6662[_0x569744];return _0x57e918;};'use strict';var multer=require(_0x2666('0x0'));var util=require(_0x2666('0x1'));var path=require(_0x2666('0x2'));var timeout=require('connect-timeout');var express=require(_0x2666('0x3'));var router=express[_0x2666('0x4')]();var fs_extra=require(_0x2666('0x5'));var auth=require(_0x2666('0x6'));var interaction=require(_0x2666('0x7'));var config=require(_0x2666('0x8'));var controller=require(_0x2666('0x9'));router[_0x2666('0xa')]('/',auth[_0x2666('0xb')](),controller[_0x2666('0xc')]);router[_0x2666('0xa')]('/:id',auth[_0x2666('0xb')](),controller[_0x2666('0xd')]);router[_0x2666('0xa')](_0x2666('0xe'),auth[_0x2666('0xb')](),timeout('15s'),controller[_0x2666('0xf')]);router[_0x2666('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2666('0x11')](_0x2666('0x12'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x2666('0xb')](),controller['destroy']);module[_0x2666('0x13')]=router;
\ No newline at end of file
+var _0x9116=['/:id/test','15s','post','create','put','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','show'];(function(_0x11447e,_0x33dab2){var _0x45a214=function(_0x1dce72){while(--_0x1dce72){_0x11447e['push'](_0x11447e['shift']());}};_0x45a214(++_0x33dab2);}(_0x9116,0x67));var _0x6911=function(_0x2d6197,_0x82ebfb){_0x2d6197=_0x2d6197-0x0;var _0x4d0e75=_0x9116[_0x2d6197];return _0x4d0e75;};'use strict';var multer=require(_0x6911('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6911('0x1'));var express=require(_0x6911('0x2'));var router=express[_0x6911('0x3')]();var fs_extra=require(_0x6911('0x4'));var auth=require(_0x6911('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./squareOdbc.controller');router[_0x6911('0x6')]('/',auth[_0x6911('0x7')](),controller[_0x6911('0x8')]);router[_0x6911('0x6')](_0x6911('0x9'),auth['isAuthenticated'](),controller[_0x6911('0xa')]);router['get'](_0x6911('0xb'),auth[_0x6911('0x7')](),timeout(_0x6911('0xc')),controller['test']);router[_0x6911('0xd')]('/',auth[_0x6911('0x7')](),controller[_0x6911('0xe')]);router[_0x6911('0xf')](_0x6911('0x9'),auth[_0x6911('0x7')](),controller['update']);router[_0x6911('0x10')](_0x6911('0x9'),auth[_0x6911('0x7')](),controller[_0x6911('0x11')]);module[_0x6911('0x12')]=router;
\ No newline at end of file
index dd0ee80..f300b16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd618=['sequelize','exports','STRING','name'];(function(_0x4103e0,_0x1f681a){var _0x955879=function(_0x162049){while(--_0x162049){_0x4103e0['push'](_0x4103e0['shift']());}};_0x955879(++_0x1f681a);}(_0xd618,0xf8));var _0x8d61=function(_0x55e631,_0x4e9bdb){_0x55e631=_0x55e631-0x0;var _0x1a0670=_0xd618[_0x55e631];return _0x1a0670;};'use strict';var Sequelize=require(_0x8d61('0x0'));module[_0x8d61('0x1')]={'name':{'type':Sequelize[_0x8d61('0x2')],'unique':_0x8d61('0x3'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3c38=['name','STRING'];(function(_0x43ce75,_0x47cb7d){var _0x1fe4df=function(_0x4a7c0f){while(--_0x4a7c0f){_0x43ce75['push'](_0x43ce75['shift']());}};_0x1fe4df(++_0x47cb7d);}(_0x3c38,0xd1));var _0x83c3=function(_0x1aabb7,_0x16a236){_0x1aabb7=_0x1aabb7-0x0;var _0x16b4dc=_0x3c38[_0x1aabb7];return _0x16b4dc;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x83c3('0x0')],'unique':_0x83c3('0x1'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x83c3('0x0')]}};
\ No newline at end of file
index 85a5dbd..9a6ea91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a8f=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','reject','update','then','get','ODBC','UserProfileResource','destroy','error','name','index','map','SquareOdbc','type','key','intersection','model','query','attributes','fields','length','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','include','findAll','catch','show','keys','rawAttributes','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','test','dsn','odbc','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','crypto'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x7a8f,0x99));var _0xf7a8=function(_0x30d50a,_0x597bd1){_0x30d50a=_0x30d50a-0x0;var _0x1c0af9=_0x7a8f[_0x30d50a];return _0x1c0af9;};'use strict';var emlformat=require(_0xf7a8('0x0'));var rimraf=require(_0xf7a8('0x1'));var zipdir=require(_0xf7a8('0x2'));var jsonpatch=require(_0xf7a8('0x3'));var rp=require(_0xf7a8('0x4'));var moment=require(_0xf7a8('0x5'));var BPromise=require(_0xf7a8('0x6'));var Mustache=require('mustache');var util=require(_0xf7a8('0x7'));var path=require('path');var sox=require(_0xf7a8('0x8'));var csv=require(_0xf7a8('0x9'));var ejs=require(_0xf7a8('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf7a8('0xb'));var squel=require('squel');var crypto=require(_0xf7a8('0xc'));var jsforce=require(_0xf7a8('0xd'));var deskjs=require(_0xf7a8('0xe'));var toCsv=require(_0xf7a8('0x9'));var querystring=require(_0xf7a8('0xf'));var Papa=require(_0xf7a8('0x10'));var Redis=require(_0xf7a8('0x11'));var authService=require(_0xf7a8('0x12'));var qs=require(_0xf7a8('0x13'));var as=require(_0xf7a8('0x14'));var hardwareService=require(_0xf7a8('0x15'));var logger=require('../../config/logger')(_0xf7a8('0x16'));var utils=require('../../config/utils');var config=require(_0xf7a8('0x17'));var licenseUtil=require(_0xf7a8('0x18'));var db=require(_0xf7a8('0x19'))['db'];function respondWithStatusCode(_0x211286,_0x53167f){_0x53167f=_0x53167f||0xcc;return function(_0x804887){if(_0x804887){return _0x211286[_0xf7a8('0x1a')](_0x53167f);}return _0x211286[_0xf7a8('0x1b')](_0x53167f)['end']();};}function respondWithResult(_0x11f5a8,_0x2814b4){_0x2814b4=_0x2814b4||0xc8;return function(_0x2dba4b){if(_0x2dba4b){return _0x11f5a8['status'](_0x2814b4)['json'](_0x2dba4b);}};}function respondWithFilteredResult(_0x5d895e,_0x3bd93a){return function(_0x175f00){if(_0x175f00){var _0x56187b=typeof _0x3bd93a[_0xf7a8('0x1c')]===_0xf7a8('0x1d')&&typeof _0x3bd93a[_0xf7a8('0x1e')]==='undefined';var _0x1fa6f9=_0x175f00[_0xf7a8('0x1f')];var _0x5160e3=_0x56187b?0x0:_0x3bd93a['offset'];var _0x2d23f9=_0x56187b?_0x175f00[_0xf7a8('0x1f')]:_0x3bd93a[_0xf7a8('0x1c')]+_0x3bd93a[_0xf7a8('0x1e')];var _0x39d139;if(_0x2d23f9>=_0x1fa6f9){_0x2d23f9=_0x1fa6f9;_0x39d139=0xc8;}else{_0x39d139=0xce;}_0x5d895e[_0xf7a8('0x1b')](_0x39d139);return _0x5d895e['set'](_0xf7a8('0x20'),_0x5160e3+'-'+_0x2d23f9+'/'+_0x1fa6f9)[_0xf7a8('0x21')](_0x175f00);}return null;};}function patchUpdates(_0x2be7c5){return function(_0x5f072a){try{jsonpatch['apply'](_0x5f072a,_0x2be7c5,!![]);}catch(_0x48af72){return BPromise[_0xf7a8('0x22')](_0x48af72);}return _0x5f072a['save']();};}function saveUpdates(_0x10238f,_0x27f741){return function(_0x1af728){if(_0x1af728){return _0x1af728[_0xf7a8('0x23')](_0x10238f)[_0xf7a8('0x24')](function(_0x25a25f){return _0x25a25f;});}return null;};}function removeEntity(_0x3e8c6e,_0x120fa5){return function(_0x2b8e8a){if(_0x2b8e8a){return _0x2b8e8a['destroy']()['then'](function(){var _0x5ca07c=_0x2b8e8a[_0xf7a8('0x25')]({'plain':!![]});var _0x213289=_0xf7a8('0x26');return db[_0xf7a8('0x27')][_0xf7a8('0x28')]({'where':{'type':_0x213289,'resourceId':_0x5ca07c['id']}})[_0xf7a8('0x24')](function(){return _0x2b8e8a;});})[_0xf7a8('0x24')](function(){_0x3e8c6e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ea0bf,_0xe726b){return function(_0x12b26b){if(!_0x12b26b){_0x3ea0bf[_0xf7a8('0x1a')](0x194);}return _0x12b26b;};}function handleError(_0xe2fcf7,_0x29fcca){_0x29fcca=_0x29fcca||0x1f4;return function(_0x68d850){logger[_0xf7a8('0x29')](_0x68d850['stack']);if(_0x68d850[_0xf7a8('0x2a')]){delete _0x68d850[_0xf7a8('0x2a')];}_0xe2fcf7[_0xf7a8('0x1b')](_0x29fcca)['send'](_0x68d850);};}exports[_0xf7a8('0x2b')]=function(_0x125465,_0x192a6a){var _0x172c04={},_0x3ec9be={},_0x42e764={'count':0x0,'rows':[]};var _0x13927c=_[_0xf7a8('0x2c')](db[_0xf7a8('0x2d')]['rawAttributes'],function(_0x36ef55){return{'name':_0x36ef55['fieldName'],'type':_0x36ef55[_0xf7a8('0x2e')][_0xf7a8('0x2f')]};});_0x3ec9be['model']=_['map'](_0x13927c,_0xf7a8('0x2a'));_0x3ec9be['query']=_['keys'](_0x125465['query']);_0x3ec9be['filters']=_[_0xf7a8('0x30')](_0x3ec9be[_0xf7a8('0x31')],_0x3ec9be[_0xf7a8('0x32')]);_0x172c04[_0xf7a8('0x33')]=_[_0xf7a8('0x30')](_0x3ec9be['model'],qs[_0xf7a8('0x34')](_0x125465[_0xf7a8('0x32')][_0xf7a8('0x34')]));_0x172c04[_0xf7a8('0x33')]=_0x172c04[_0xf7a8('0x33')][_0xf7a8('0x35')]?_0x172c04[_0xf7a8('0x33')]:_0x3ec9be[_0xf7a8('0x31')];if(!_0x125465[_0xf7a8('0x32')]['hasOwnProperty'](_0xf7a8('0x36'))){_0x172c04['limit']=qs['limit'](_0x125465[_0xf7a8('0x32')][_0xf7a8('0x1e')]);_0x172c04[_0xf7a8('0x1c')]=qs['offset'](_0x125465[_0xf7a8('0x32')][_0xf7a8('0x1c')]);}_0x172c04[_0xf7a8('0x37')]=qs[_0xf7a8('0x38')](_0x125465['query'][_0xf7a8('0x38')]);_0x172c04['where']=qs[_0xf7a8('0x39')](_['pick'](_0x125465['query'],_0x3ec9be[_0xf7a8('0x39')]),_0x13927c);if(_0x125465[_0xf7a8('0x32')][_0xf7a8('0x3a')]){_0x172c04['where']=_[_0xf7a8('0x3b')](_0x172c04[_0xf7a8('0x3c')],{'$or':_[_0xf7a8('0x2c')](_0x13927c,function(_0x1d3700){if(_0x1d3700[_0xf7a8('0x2e')]!==_0xf7a8('0x3d')){var _0x4831a8={};_0x4831a8[_0x1d3700[_0xf7a8('0x2a')]]={'$like':'%'+_0x125465[_0xf7a8('0x32')][_0xf7a8('0x3a')]+'%'};return _0x4831a8;}})});}_0x172c04=_[_0xf7a8('0x3b')]({},_0x172c04,_0x125465['options']);var _0x24a444={'where':_0x172c04[_0xf7a8('0x3c')]};return db['SquareOdbc']['count'](_0x24a444)[_0xf7a8('0x24')](function(_0x2cd666){_0x42e764[_0xf7a8('0x1f')]=_0x2cd666;if(_0x125465['query']['includeAll']){_0x172c04[_0xf7a8('0x3e')]=[{'all':!![]}];}return db[_0xf7a8('0x2d')][_0xf7a8('0x3f')](_0x172c04);})[_0xf7a8('0x24')](function(_0xf2bc79){_0x42e764['rows']=_0xf2bc79;return _0x42e764;})[_0xf7a8('0x24')](respondWithFilteredResult(_0x192a6a,_0x172c04))[_0xf7a8('0x40')](handleError(_0x192a6a,null));};exports[_0xf7a8('0x41')]=function(_0x1020ea,_0x2f5c71){var _0xb31aec={'raw':!![],'where':{'id':_0x1020ea['params']['id']}},_0xca75a2={};_0xca75a2[_0xf7a8('0x31')]=_[_0xf7a8('0x42')](db['SquareOdbc'][_0xf7a8('0x43')]);_0xca75a2[_0xf7a8('0x32')]=_['keys'](_0x1020ea['query']);_0xca75a2['filters']=_['intersection'](_0xca75a2['model'],_0xca75a2[_0xf7a8('0x32')]);_0xb31aec[_0xf7a8('0x33')]=_[_0xf7a8('0x30')](_0xca75a2[_0xf7a8('0x31')],qs[_0xf7a8('0x34')](_0x1020ea[_0xf7a8('0x32')][_0xf7a8('0x34')]));_0xb31aec[_0xf7a8('0x33')]=_0xb31aec[_0xf7a8('0x33')][_0xf7a8('0x35')]?_0xb31aec[_0xf7a8('0x33')]:_0xca75a2[_0xf7a8('0x31')];if(_0x1020ea['query'][_0xf7a8('0x44')]){_0xb31aec[_0xf7a8('0x3e')]=[{'all':!![]}];}_0xb31aec=_[_0xf7a8('0x3b')]({},_0xb31aec,_0x1020ea[_0xf7a8('0x45')]);return db[_0xf7a8('0x2d')][_0xf7a8('0x46')](_0xb31aec)['then'](handleEntityNotFound(_0x2f5c71,null))[_0xf7a8('0x24')](respondWithResult(_0x2f5c71,null))['catch'](handleError(_0x2f5c71,null));};exports[_0xf7a8('0x47')]=function(_0x226f34,_0x932022){return db['SquareOdbc'][_0xf7a8('0x47')](_0x226f34[_0xf7a8('0x48')],{})[_0xf7a8('0x24')](function(_0x589115){var _0x1d29bf=_0x226f34[_0xf7a8('0x49')][_0xf7a8('0x25')]({'plain':!![]});if(!_0x1d29bf)throw new Error(_0xf7a8('0x4a'));if(_0x1d29bf[_0xf7a8('0x4b')]===_0xf7a8('0x49')){var _0x2aaf29=_0x589115[_0xf7a8('0x25')]({'plain':!![]});var _0x4b7e82=_0xf7a8('0x26');return db[_0xf7a8('0x4c')][_0xf7a8('0x46')]({'where':{'name':_0x4b7e82,'userProfileId':_0x1d29bf['userProfileId']},'raw':!![]})[_0xf7a8('0x24')](function(_0x26e67f){if(_0x26e67f&&_0x26e67f['autoAssociation']===0x0){return db[_0xf7a8('0x27')][_0xf7a8('0x47')]({'name':_0x2aaf29[_0xf7a8('0x2a')],'resourceId':_0x2aaf29['id'],'type':_0x26e67f['name'],'sectionId':_0x26e67f['id']},{})[_0xf7a8('0x24')](function(){return _0x589115;});}else{return _0x589115;}})['catch'](function(_0x4ee992){logger[_0xf7a8('0x29')](_0xf7a8('0x4d'),_0x4ee992);throw _0x4ee992;});}return _0x589115;})['then'](respondWithResult(_0x932022,0xc9))[_0xf7a8('0x40')](handleError(_0x932022,null));};exports['update']=function(_0x456e84,_0x23ad35){if(_0x456e84[_0xf7a8('0x48')]['id']){delete _0x456e84['body']['id'];}return db['SquareOdbc']['find']({'where':{'id':_0x456e84['params']['id']}})[_0xf7a8('0x24')](handleEntityNotFound(_0x23ad35,null))[_0xf7a8('0x24')](saveUpdates(_0x456e84['body'],null))[_0xf7a8('0x24')](respondWithResult(_0x23ad35,null))[_0xf7a8('0x40')](handleError(_0x23ad35,null));};exports[_0xf7a8('0x28')]=function(_0x404337,_0x381146){return db[_0xf7a8('0x2d')]['find']({'where':{'id':_0x404337[_0xf7a8('0x4e')]['id']}})[_0xf7a8('0x24')](handleEntityNotFound(_0x381146,null))[_0xf7a8('0x24')](removeEntity(_0x381146,null))['catch'](handleError(_0x381146,null));};exports[_0xf7a8('0x4f')]=function(_0x4b3211,_0x5d2765,_0x124083){var _0xe25374;return db[_0xf7a8('0x2d')]['find']({'where':{'id':_0x4b3211[_0xf7a8('0x4e')]['id']},'attributes':['id',_0xf7a8('0x50')]})[_0xf7a8('0x24')](handleEntityNotFound(_0x5d2765,null))[_0xf7a8('0x24')](function(_0x29c3db){if(_0x29c3db){var _0x1f787f=require(_0xf7a8('0x51'))();_0x1f787f['openSync'](_0x29c3db[_0xf7a8('0x50')]);_0x1f787f[_0xf7a8('0x52')]();return _0x29c3db;}})[_0xf7a8('0x24')](respondWithResult(_0x5d2765,null))['catch'](handleError(_0x5d2765,null));};
\ No newline at end of file
+var _0xf4a6=['type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','map','VIRTUAL','includeAll','include','findAll','catch','show','params','find','create','body','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','dsn','odbc','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','get','ODBC','error','name','send','SquareOdbc','rawAttributes'];(function(_0xff4c63,_0x14298c){var _0xa57f03=function(_0x3e4bf8){while(--_0x3e4bf8){_0xff4c63['push'](_0xff4c63['shift']());}};_0xa57f03(++_0x14298c);}(_0xf4a6,0x11a));var _0x6f4a=function(_0x330398,_0x186a3e){_0x330398=_0x330398-0x0;var _0x6834aa=_0xf4a6[_0x330398];return _0x6834aa;};'use strict';var emlformat=require(_0x6f4a('0x0'));var rimraf=require(_0x6f4a('0x1'));var zipdir=require(_0x6f4a('0x2'));var jsonpatch=require(_0x6f4a('0x3'));var rp=require(_0x6f4a('0x4'));var moment=require(_0x6f4a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6f4a('0x6'));var util=require(_0x6f4a('0x7'));var path=require(_0x6f4a('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6f4a('0x9'));var fs=require('fs');var fs_extra=require(_0x6f4a('0xa'));var _=require(_0x6f4a('0xb'));var squel=require(_0x6f4a('0xc'));var crypto=require(_0x6f4a('0xd'));var jsforce=require(_0x6f4a('0xe'));var deskjs=require(_0x6f4a('0xf'));var toCsv=require(_0x6f4a('0x10'));var querystring=require(_0x6f4a('0x11'));var Papa=require(_0x6f4a('0x12'));var Redis=require(_0x6f4a('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x6f4a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6f4a('0x15'));var logger=require('../../config/logger')(_0x6f4a('0x16'));var utils=require('../../config/utils');var config=require(_0x6f4a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x6f4a('0x18'))['db'];function respondWithStatusCode(_0x201d15,_0x32d28b){_0x32d28b=_0x32d28b||0xcc;return function(_0x5054b4){if(_0x5054b4){return _0x201d15[_0x6f4a('0x19')](_0x32d28b);}return _0x201d15[_0x6f4a('0x1a')](_0x32d28b)[_0x6f4a('0x1b')]();};}function respondWithResult(_0x6f6def,_0x3c35ce){_0x3c35ce=_0x3c35ce||0xc8;return function(_0x2331f2){if(_0x2331f2){return _0x6f6def[_0x6f4a('0x1a')](_0x3c35ce)[_0x6f4a('0x1c')](_0x2331f2);}};}function respondWithFilteredResult(_0x546882,_0x129cc6){return function(_0x4613cf){if(_0x4613cf){var _0xe150d1=typeof _0x129cc6[_0x6f4a('0x1d')]===_0x6f4a('0x1e')&&typeof _0x129cc6[_0x6f4a('0x1f')]===_0x6f4a('0x1e');var _0x1fb2cd=_0x4613cf[_0x6f4a('0x20')];var _0x257b42=_0xe150d1?0x0:_0x129cc6['offset'];var _0x4748e1=_0xe150d1?_0x4613cf[_0x6f4a('0x20')]:_0x129cc6[_0x6f4a('0x1d')]+_0x129cc6['limit'];var _0x54e981;if(_0x4748e1>=_0x1fb2cd){_0x4748e1=_0x1fb2cd;_0x54e981=0xc8;}else{_0x54e981=0xce;}_0x546882[_0x6f4a('0x1a')](_0x54e981);return _0x546882[_0x6f4a('0x21')]('Content-Range',_0x257b42+'-'+_0x4748e1+'/'+_0x1fb2cd)[_0x6f4a('0x1c')](_0x4613cf);}return null;};}function patchUpdates(_0xbc6559){return function(_0xbc4162){try{jsonpatch['apply'](_0xbc4162,_0xbc6559,!![]);}catch(_0x1b93b8){return BPromise[_0x6f4a('0x22')](_0x1b93b8);}return _0xbc4162[_0x6f4a('0x23')]();};}function saveUpdates(_0xaabde6,_0x2568d5){return function(_0x4e061b){if(_0x4e061b){return _0x4e061b[_0x6f4a('0x24')](_0xaabde6)[_0x6f4a('0x25')](function(_0x498ee5){return _0x498ee5;});}return null;};}function removeEntity(_0xc29007,_0x5874d1){return function(_0xa9aed1){if(_0xa9aed1){return _0xa9aed1[_0x6f4a('0x26')]()[_0x6f4a('0x25')](function(){var _0x4f039b=_0xa9aed1[_0x6f4a('0x27')]({'plain':!![]});var _0x457976=_0x6f4a('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x457976,'resourceId':_0x4f039b['id']}})[_0x6f4a('0x25')](function(){return _0xa9aed1;});})[_0x6f4a('0x25')](function(){_0xc29007[_0x6f4a('0x1a')](0xcc)[_0x6f4a('0x1b')]();});}};}function handleEntityNotFound(_0x3234e8,_0x85e0bd){return function(_0x40723a){if(!_0x40723a){_0x3234e8['sendStatus'](0x194);}return _0x40723a;};}function handleError(_0x5aefde,_0x43e24b){_0x43e24b=_0x43e24b||0x1f4;return function(_0x4f8f68){logger[_0x6f4a('0x29')](_0x4f8f68['stack']);if(_0x4f8f68[_0x6f4a('0x2a')]){delete _0x4f8f68[_0x6f4a('0x2a')];}_0x5aefde[_0x6f4a('0x1a')](_0x43e24b)[_0x6f4a('0x2b')](_0x4f8f68);};}exports['index']=function(_0x471412,_0x1a2ac6){var _0x24ac9c={},_0x23a98e={},_0x1f6223={'count':0x0,'rows':[]};var _0xa7b003=_['map'](db[_0x6f4a('0x2c')][_0x6f4a('0x2d')],function(_0x3a35f4){return{'name':_0x3a35f4['fieldName'],'type':_0x3a35f4[_0x6f4a('0x2e')][_0x6f4a('0x2f')]};});_0x23a98e[_0x6f4a('0x30')]=_['map'](_0xa7b003,'name');_0x23a98e[_0x6f4a('0x31')]=_[_0x6f4a('0x32')](_0x471412[_0x6f4a('0x31')]);_0x23a98e['filters']=_[_0x6f4a('0x33')](_0x23a98e[_0x6f4a('0x30')],_0x23a98e[_0x6f4a('0x31')]);_0x24ac9c[_0x6f4a('0x34')]=_[_0x6f4a('0x33')](_0x23a98e[_0x6f4a('0x30')],qs['fields'](_0x471412[_0x6f4a('0x31')][_0x6f4a('0x35')]));_0x24ac9c['attributes']=_0x24ac9c[_0x6f4a('0x34')][_0x6f4a('0x36')]?_0x24ac9c[_0x6f4a('0x34')]:_0x23a98e[_0x6f4a('0x30')];if(!_0x471412[_0x6f4a('0x31')][_0x6f4a('0x37')]('nolimit')){_0x24ac9c[_0x6f4a('0x1f')]=qs['limit'](_0x471412[_0x6f4a('0x31')][_0x6f4a('0x1f')]);_0x24ac9c[_0x6f4a('0x1d')]=qs['offset'](_0x471412['query'][_0x6f4a('0x1d')]);}_0x24ac9c[_0x6f4a('0x38')]=qs[_0x6f4a('0x39')](_0x471412[_0x6f4a('0x31')]['sort']);_0x24ac9c[_0x6f4a('0x3a')]=qs[_0x6f4a('0x3b')](_['pick'](_0x471412[_0x6f4a('0x31')],_0x23a98e[_0x6f4a('0x3b')]),_0xa7b003);if(_0x471412['query'][_0x6f4a('0x3c')]){_0x24ac9c[_0x6f4a('0x3a')]=_[_0x6f4a('0x3d')](_0x24ac9c[_0x6f4a('0x3a')],{'$or':_[_0x6f4a('0x3e')](_0xa7b003,function(_0x4ffaec){if(_0x4ffaec[_0x6f4a('0x2e')]!==_0x6f4a('0x3f')){var _0x333437={};_0x333437[_0x4ffaec[_0x6f4a('0x2a')]]={'$like':'%'+_0x471412[_0x6f4a('0x31')]['filter']+'%'};return _0x333437;}})});}_0x24ac9c=_[_0x6f4a('0x3d')]({},_0x24ac9c,_0x471412['options']);var _0x190066={'where':_0x24ac9c[_0x6f4a('0x3a')]};return db[_0x6f4a('0x2c')]['count'](_0x190066)[_0x6f4a('0x25')](function(_0x298f55){_0x1f6223['count']=_0x298f55;if(_0x471412[_0x6f4a('0x31')][_0x6f4a('0x40')]){_0x24ac9c[_0x6f4a('0x41')]=[{'all':!![]}];}return db[_0x6f4a('0x2c')][_0x6f4a('0x42')](_0x24ac9c);})[_0x6f4a('0x25')](function(_0x278d5c){_0x1f6223['rows']=_0x278d5c;return _0x1f6223;})[_0x6f4a('0x25')](respondWithFilteredResult(_0x1a2ac6,_0x24ac9c))[_0x6f4a('0x43')](handleError(_0x1a2ac6,null));};exports[_0x6f4a('0x44')]=function(_0x481671,_0x9bd936){var _0x5e2c81={'raw':!![],'where':{'id':_0x481671[_0x6f4a('0x45')]['id']}},_0x185d6={};_0x185d6[_0x6f4a('0x30')]=_[_0x6f4a('0x32')](db[_0x6f4a('0x2c')][_0x6f4a('0x2d')]);_0x185d6[_0x6f4a('0x31')]=_[_0x6f4a('0x32')](_0x481671[_0x6f4a('0x31')]);_0x185d6[_0x6f4a('0x3b')]=_[_0x6f4a('0x33')](_0x185d6[_0x6f4a('0x30')],_0x185d6['query']);_0x5e2c81['attributes']=_[_0x6f4a('0x33')](_0x185d6[_0x6f4a('0x30')],qs['fields'](_0x481671[_0x6f4a('0x31')][_0x6f4a('0x35')]));_0x5e2c81['attributes']=_0x5e2c81[_0x6f4a('0x34')][_0x6f4a('0x36')]?_0x5e2c81[_0x6f4a('0x34')]:_0x185d6[_0x6f4a('0x30')];if(_0x481671[_0x6f4a('0x31')][_0x6f4a('0x40')]){_0x5e2c81['include']=[{'all':!![]}];}_0x5e2c81=_[_0x6f4a('0x3d')]({},_0x5e2c81,_0x481671['options']);return db[_0x6f4a('0x2c')][_0x6f4a('0x46')](_0x5e2c81)[_0x6f4a('0x25')](handleEntityNotFound(_0x9bd936,null))['then'](respondWithResult(_0x9bd936,null))[_0x6f4a('0x43')](handleError(_0x9bd936,null));};exports[_0x6f4a('0x47')]=function(_0x2c45ea,_0x3cd84a){return db[_0x6f4a('0x2c')][_0x6f4a('0x47')](_0x2c45ea[_0x6f4a('0x48')],{})[_0x6f4a('0x25')](function(_0xce9a72){var _0x509400=_0x2c45ea['user']['get']({'plain':!![]});if(!_0x509400)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x509400[_0x6f4a('0x49')]==='user'){var _0x31384b=_0xce9a72[_0x6f4a('0x27')]({'plain':!![]});var _0x5f47cd=_0x6f4a('0x28');return db['UserProfileSection'][_0x6f4a('0x46')]({'where':{'name':_0x5f47cd,'userProfileId':_0x509400[_0x6f4a('0x4a')]},'raw':!![]})[_0x6f4a('0x25')](function(_0x737aca){if(_0x737aca&&_0x737aca[_0x6f4a('0x4b')]===0x0){return db[_0x6f4a('0x4c')][_0x6f4a('0x47')]({'name':_0x31384b[_0x6f4a('0x2a')],'resourceId':_0x31384b['id'],'type':_0x737aca[_0x6f4a('0x2a')],'sectionId':_0x737aca['id']},{})[_0x6f4a('0x25')](function(){return _0xce9a72;});}else{return _0xce9a72;}})[_0x6f4a('0x43')](function(_0x23071f){logger[_0x6f4a('0x29')](_0x6f4a('0x4d'),_0x23071f);throw _0x23071f;});}return _0xce9a72;})['then'](respondWithResult(_0x3cd84a,0xc9))[_0x6f4a('0x43')](handleError(_0x3cd84a,null));};exports['update']=function(_0x31741a,_0x74f5dd){if(_0x31741a[_0x6f4a('0x48')]['id']){delete _0x31741a[_0x6f4a('0x48')]['id'];}return db['SquareOdbc'][_0x6f4a('0x46')]({'where':{'id':_0x31741a[_0x6f4a('0x45')]['id']}})[_0x6f4a('0x25')](handleEntityNotFound(_0x74f5dd,null))[_0x6f4a('0x25')](saveUpdates(_0x31741a['body'],null))[_0x6f4a('0x25')](respondWithResult(_0x74f5dd,null))[_0x6f4a('0x43')](handleError(_0x74f5dd,null));};exports[_0x6f4a('0x26')]=function(_0x2f0f6c,_0x572eb8){return db[_0x6f4a('0x2c')][_0x6f4a('0x46')]({'where':{'id':_0x2f0f6c['params']['id']}})['then'](handleEntityNotFound(_0x572eb8,null))[_0x6f4a('0x25')](removeEntity(_0x572eb8,null))[_0x6f4a('0x43')](handleError(_0x572eb8,null));};exports['test']=function(_0xa16cf1,_0x3ad735,_0x356c38){var _0xd1226;return db[_0x6f4a('0x2c')][_0x6f4a('0x46')]({'where':{'id':_0xa16cf1[_0x6f4a('0x45')]['id']},'attributes':['id',_0x6f4a('0x4e')]})[_0x6f4a('0x25')](handleEntityNotFound(_0x3ad735,null))['then'](function(_0x3b0271){if(_0x3b0271){var _0x25334d=require(_0x6f4a('0x4f'))();_0x25334d[_0x6f4a('0x50')](_0x3b0271[_0x6f4a('0x4e')]);_0x25334d[_0x6f4a('0x51')]();return _0x3b0271;}})[_0x6f4a('0x25')](respondWithResult(_0x3ad735,null))['catch'](handleError(_0x3ad735,null));};
\ No newline at end of file
index 650a8a1..4eac4d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22f4=['request-promise','../../config/environment','exports','define','SquareOdbc','square_odbc','lodash','util','../../config/logger','moment','bluebird'];(function(_0x5a5355,_0x2d9bce){var _0x3b389a=function(_0x4c669a){while(--_0x4c669a){_0x5a5355['push'](_0x5a5355['shift']());}};_0x3b389a(++_0x2d9bce);}(_0x22f4,0x1df));var _0x422f=function(_0x585d09,_0x1274bc){_0x585d09=_0x585d09-0x0;var _0x7d9a14=_0x22f4[_0x585d09];return _0x7d9a14;};'use strict';var _=require(_0x422f('0x0'));var util=require(_0x422f('0x1'));var logger=require(_0x422f('0x2'))('api');var moment=require(_0x422f('0x3'));var BPromise=require(_0x422f('0x4'));var rp=require(_0x422f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x422f('0x6'));var attributes=require('./squareOdbc.attributes');module[_0x422f('0x7')]=function(_0x46f460,_0x3d050d){return _0x46f460[_0x422f('0x8')](_0x422f('0x9'),attributes,{'tableName':_0x422f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4d0=['./squareOdbc.attributes','exports','define','square_odbc','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment'];(function(_0x367031,_0x44490a){var _0x1aac4a=function(_0x25a182){while(--_0x25a182){_0x367031['push'](_0x367031['shift']());}};_0x1aac4a(++_0x44490a);}(_0xc4d0,0x17a));var _0x0c4d=function(_0x2b012b,_0x463e28){_0x2b012b=_0x2b012b-0x0;var _0x32c4cf=_0xc4d0[_0x2b012b];return _0x32c4cf;};'use strict';var _=require(_0x0c4d('0x0'));var util=require(_0x0c4d('0x1'));var logger=require(_0x0c4d('0x2'))(_0x0c4d('0x3'));var moment=require('moment');var BPromise=require(_0x0c4d('0x4'));var rp=require(_0x0c4d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0c4d('0x6'));var attributes=require(_0x0c4d('0x7'));module[_0x0c4d('0x8')]=function(_0x26de1c,_0x413d99){return _0x26de1c[_0x0c4d('0x9')]('SquareOdbc',attributes,{'tableName':_0x0c4d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca89ae6..5f96e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a48=['../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','SquareOdbc,\x20%s,\x20%s','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','ShowSquareOdbc','SquareOdbc','options','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x45cf08,_0x315051){var _0x506c37=function(_0x29d6b9){while(--_0x29d6b9){_0x45cf08['push'](_0x45cf08['shift']());}};_0x506c37(++_0x315051);}(_0x8a48,0x119));var _0x88a4=function(_0x4a0a61,_0x46dc1b){_0x4a0a61=_0x4a0a61-0x0;var _0x568b99=_0x8a48[_0x4a0a61];return _0x568b99;};'use strict';var _=require(_0x88a4('0x0'));var util=require(_0x88a4('0x1'));var moment=require(_0x88a4('0x2'));var BPromise=require(_0x88a4('0x3'));var rs=require(_0x88a4('0x4'));var fs=require('fs');var Redis=require(_0x88a4('0x5'));var db=require(_0x88a4('0x6'))['db'];var utils=require(_0x88a4('0x7'));var logger=require('../../config/logger')(_0x88a4('0x8'));var config=require(_0x88a4('0x9'));var jayson=require(_0x88a4('0xa'));var client=jayson['client'][_0x88a4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x417512,_0x5a6931,_0x44609b){return new BPromise(function(_0x485d12,_0x151f91){return client[_0x88a4('0xc')](_0x417512,_0x44609b)[_0x88a4('0xd')](function(_0x535ce8){logger[_0x88a4('0xe')](_0x88a4('0xf'),_0x5a6931,'request\x20sent');logger[_0x88a4('0x10')](_0x88a4('0x11'),_0x5a6931,_0x88a4('0x12'),JSON[_0x88a4('0x13')](_0x535ce8));if(_0x535ce8[_0x88a4('0x14')]){if(_0x535ce8[_0x88a4('0x14')][_0x88a4('0x15')]===0x1f4){logger[_0x88a4('0x14')]('SquareOdbc,\x20%s,\x20%s',_0x5a6931,_0x535ce8['error'][_0x88a4('0x16')]);return _0x151f91(_0x535ce8[_0x88a4('0x14')]['message']);}logger[_0x88a4('0x14')]('SquareOdbc,\x20%s,\x20%s',_0x5a6931,_0x535ce8[_0x88a4('0x14')][_0x88a4('0x16')]);return _0x485d12(_0x535ce8[_0x88a4('0x14')]['message']);}else{logger['info'](_0x88a4('0xf'),_0x5a6931,_0x88a4('0x12'));_0x485d12(_0x535ce8[_0x88a4('0x17')][_0x88a4('0x16')]);}})[_0x88a4('0x18')](function(_0x5ab298){logger[_0x88a4('0x14')](_0x88a4('0xf'),_0x5a6931,_0x5ab298);_0x151f91(_0x5ab298);});});}exports[_0x88a4('0x19')]=function(_0x476cb4){var _0x3da5bf=this;return new Promise(function(_0x39e416,_0x124ee9){return db[_0x88a4('0x1a')]['find']({'raw':_0x476cb4[_0x88a4('0x1b')]?_0x476cb4[_0x88a4('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x476cb4['options']?_0x476cb4[_0x88a4('0x1b')]['where']||null:null,'attributes':_0x476cb4[_0x88a4('0x1b')]?_0x476cb4['options'][_0x88a4('0x1c')]||null:null,'include':_0x476cb4[_0x88a4('0x1b')]?_0x476cb4[_0x88a4('0x1b')][_0x88a4('0x1d')]?_[_0x88a4('0x1e')](_0x476cb4['options'][_0x88a4('0x1d')],function(_0x400ec2){return{'model':db[_0x400ec2[_0x88a4('0x1f')]],'as':_0x400ec2['as'],'attributes':_0x400ec2[_0x88a4('0x1c')],'include':_0x400ec2[_0x88a4('0x1d')]?_['map'](_0x400ec2[_0x88a4('0x1d')],function(_0x30e08f){return{'model':db[_0x30e08f['model']],'as':_0x30e08f['as'],'attributes':_0x30e08f[_0x88a4('0x1c')],'include':_0x30e08f['include']?_[_0x88a4('0x1e')](_0x30e08f['include'],function(_0x5149b2){return{'model':db[_0x5149b2['model']],'as':_0x5149b2['as'],'attributes':_0x5149b2[_0x88a4('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x122985){logger[_0x88a4('0xe')](_0x88a4('0x19'),_0x476cb4);logger[_0x88a4('0x10')](_0x88a4('0x19'),_0x476cb4,JSON[_0x88a4('0x13')](_0x122985));_0x39e416(_0x122985);})[_0x88a4('0x18')](function(_0x112c64){logger[_0x88a4('0x14')](_0x88a4('0x19'),_0x112c64[_0x88a4('0x16')],_0x476cb4);_0x124ee9(_0x3da5bf[_0x88a4('0x14')](0x1f4,_0x112c64[_0x88a4('0x16')]));});});};
\ No newline at end of file
+var _0x5936=['util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','message','result','ShowSquareOdbc','SquareOdbc','find','options','raw','where','include','map','model','attributes','then','catch'];(function(_0x131a9c,_0x4380c5){var _0x1cc059=function(_0x511007){while(--_0x511007){_0x131a9c['push'](_0x131a9c['shift']());}};_0x1cc059(++_0x4380c5);}(_0x5936,0x1d1));var _0x6593=function(_0x2c971e,_0x4c27f9){_0x2c971e=_0x2c971e-0x0;var _0x2c1871=_0x5936[_0x2c971e];return _0x2c1871;};'use strict';var _=require('lodash');var util=require(_0x6593('0x0'));var moment=require(_0x6593('0x1'));var BPromise=require(_0x6593('0x2'));var rs=require(_0x6593('0x3'));var fs=require('fs');var Redis=require(_0x6593('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6593('0x5'));var logger=require('../../config/logger')(_0x6593('0x6'));var config=require(_0x6593('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6593('0x8')][_0x6593('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xbf9430,_0x26d189,_0x4da94a){return new BPromise(function(_0x309b02,_0x24730a){return client[_0x6593('0xa')](_0xbf9430,_0x4da94a)['then'](function(_0x572d46){logger[_0x6593('0xb')](_0x6593('0xc'),_0x26d189,_0x6593('0xd'));logger['debug'](_0x6593('0xe'),_0x26d189,_0x6593('0xd'),JSON[_0x6593('0xf')](_0x572d46));if(_0x572d46[_0x6593('0x10')]){if(_0x572d46[_0x6593('0x10')]['code']===0x1f4){logger[_0x6593('0x10')]('SquareOdbc,\x20%s,\x20%s',_0x26d189,_0x572d46[_0x6593('0x10')]['message']);return _0x24730a(_0x572d46[_0x6593('0x10')][_0x6593('0x11')]);}logger[_0x6593('0x10')](_0x6593('0xc'),_0x26d189,_0x572d46[_0x6593('0x10')][_0x6593('0x11')]);return _0x309b02(_0x572d46[_0x6593('0x10')][_0x6593('0x11')]);}else{logger[_0x6593('0xb')](_0x6593('0xc'),_0x26d189,_0x6593('0xd'));_0x309b02(_0x572d46[_0x6593('0x12')][_0x6593('0x11')]);}})['catch'](function(_0x2949ce){logger[_0x6593('0x10')]('SquareOdbc,\x20%s,\x20%s',_0x26d189,_0x2949ce);_0x24730a(_0x2949ce);});});}exports[_0x6593('0x13')]=function(_0x3a6164){var _0x198e69=this;return new Promise(function(_0x584dcd,_0xa7d40){return db[_0x6593('0x14')][_0x6593('0x15')]({'raw':_0x3a6164[_0x6593('0x16')]?_0x3a6164[_0x6593('0x16')][_0x6593('0x17')]===undefined?!![]:![]:!![],'where':_0x3a6164[_0x6593('0x16')]?_0x3a6164[_0x6593('0x16')][_0x6593('0x18')]||null:null,'attributes':_0x3a6164[_0x6593('0x16')]?_0x3a6164['options']['attributes']||null:null,'include':_0x3a6164[_0x6593('0x16')]?_0x3a6164[_0x6593('0x16')][_0x6593('0x19')]?_[_0x6593('0x1a')](_0x3a6164['options'][_0x6593('0x19')],function(_0x2f5e32){return{'model':db[_0x2f5e32[_0x6593('0x1b')]],'as':_0x2f5e32['as'],'attributes':_0x2f5e32[_0x6593('0x1c')],'include':_0x2f5e32['include']?_[_0x6593('0x1a')](_0x2f5e32[_0x6593('0x19')],function(_0xff5ae5){return{'model':db[_0xff5ae5[_0x6593('0x1b')]],'as':_0xff5ae5['as'],'attributes':_0xff5ae5[_0x6593('0x1c')],'include':_0xff5ae5['include']?_[_0x6593('0x1a')](_0xff5ae5[_0x6593('0x19')],function(_0x43c277){return{'model':db[_0x43c277[_0x6593('0x1b')]],'as':_0x43c277['as'],'attributes':_0x43c277[_0x6593('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x6593('0x1d')](function(_0x25fabd){logger[_0x6593('0xb')](_0x6593('0x13'),_0x3a6164);logger['debug']('ShowSquareOdbc',_0x3a6164,JSON['stringify'](_0x25fabd));_0x584dcd(_0x25fabd);})[_0x6593('0x1e')](function(_0x35ce4a){logger[_0x6593('0x10')]('ShowSquareOdbc',_0x35ce4a[_0x6593('0x11')],_0x3a6164);_0xa7d40(_0x198e69[_0x6593('0x10')](0x1f4,_0x35ce4a[_0x6593('0x11')]));});});};
\ No newline at end of file
index ab72955..0da0ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea76=['multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareProject.controller','get','index','isAuthenticated','show','post','put','/:id','update','delete','destroy','exports'];(function(_0x1a7c6b,_0x184353){var _0x5b3784=function(_0xf1aec5){while(--_0xf1aec5){_0x1a7c6b['push'](_0x1a7c6b['shift']());}};_0x5b3784(++_0x184353);}(_0xea76,0x104));var _0x6ea7=function(_0x594f7a,_0x128a04){_0x594f7a=_0x594f7a-0x0;var _0x47d35c=_0xea76[_0x594f7a];return _0x47d35c;};'use strict';var multer=require(_0x6ea7('0x0'));var util=require(_0x6ea7('0x1'));var path=require('path');var timeout=require(_0x6ea7('0x2'));var express=require(_0x6ea7('0x3'));var router=express[_0x6ea7('0x4')]();var fs_extra=require(_0x6ea7('0x5'));var auth=require(_0x6ea7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6ea7('0x7'));var controller=require(_0x6ea7('0x8'));router[_0x6ea7('0x9')]('/',auth['isAuthenticated'](),controller[_0x6ea7('0xa')]);router[_0x6ea7('0x9')]('/:id',auth[_0x6ea7('0xb')](),controller[_0x6ea7('0xc')]);router[_0x6ea7('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x6ea7('0xe')](_0x6ea7('0xf'),auth[_0x6ea7('0xb')](),controller[_0x6ea7('0x10')]);router[_0x6ea7('0x11')](_0x6ea7('0xf'),auth[_0x6ea7('0xb')](),controller[_0x6ea7('0x12')]);module[_0x6ea7('0x13')]=router;
\ No newline at end of file
+var _0x1c84=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x15f8cc,_0x277506){var _0x526e05=function(_0xb3bf18){while(--_0xb3bf18){_0x15f8cc['push'](_0x15f8cc['shift']());}};_0x526e05(++_0x277506);}(_0x1c84,0xad));var _0x41c8=function(_0x26b622,_0x237e9e){_0x26b622=_0x26b622-0x0;var _0x58a028=_0x1c84[_0x26b622];return _0x58a028;};'use strict';var multer=require('multer');var util=require(_0x41c8('0x0'));var path=require(_0x41c8('0x1'));var timeout=require(_0x41c8('0x2'));var express=require(_0x41c8('0x3'));var router=express[_0x41c8('0x4')]();var fs_extra=require(_0x41c8('0x5'));var auth=require(_0x41c8('0x6'));var interaction=require(_0x41c8('0x7'));var config=require(_0x41c8('0x8'));var controller=require(_0x41c8('0x9'));router['get']('/',auth[_0x41c8('0xa')](),controller[_0x41c8('0xb')]);router[_0x41c8('0xc')](_0x41c8('0xd'),auth[_0x41c8('0xa')](),controller[_0x41c8('0xe')]);router[_0x41c8('0xf')]('/',auth[_0x41c8('0xa')](),controller[_0x41c8('0x10')]);router[_0x41c8('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x41c8('0x12')]);router[_0x41c8('0x13')](_0x41c8('0xd'),auth[_0x41c8('0xa')](),controller[_0x41c8('0x14')]);module[_0x41c8('0x15')]=router;
\ No newline at end of file
index 0b0e814..f22ac17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3383=['preproduction','toString','BLOB','production','utf8','DATE','sequelize','exports','name','STRING','TEXT','long','getDataValue'];(function(_0x2398de,_0x3dacdf){var _0x2863c7=function(_0x494147){while(--_0x494147){_0x2398de['push'](_0x2398de['shift']());}};_0x2863c7(++_0x3dacdf);}(_0x3383,0x1cd));var _0x3338=function(_0x62ade9,_0x2620bf){_0x62ade9=_0x62ade9-0x0;var _0xdbc98e=_0x3383[_0x62ade9];return _0xdbc98e;};'use strict';var Sequelize=require(_0x3338('0x0'));module[_0x3338('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x3338('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x3338('0x3')]},'notes':{'type':Sequelize[_0x3338('0x4')]},'preproduction':{'type':Sequelize['BLOB'](_0x3338('0x5')),'get':function(){if(this[_0x3338('0x6')](_0x3338('0x7'))){return this['getDataValue'](_0x3338('0x7'))[_0x3338('0x8')]('utf8');}}},'production':{'type':Sequelize[_0x3338('0x9')](_0x3338('0x5')),'get':function(){if(this[_0x3338('0x6')](_0x3338('0xa'))){return this[_0x3338('0x6')](_0x3338('0xa'))[_0x3338('0x8')](_0x3338('0xb'));}}},'savedAt':{'type':Sequelize[_0x3338('0xc')]},'publishedAt':{'type':Sequelize[_0x3338('0xc')]}};
\ No newline at end of file
+var _0x2b29=['production','toString','DATE','exports','STRING','name','BLOB','long','getDataValue','preproduction','utf8'];(function(_0x41f81e,_0x19bfe2){var _0x3a4b6d=function(_0x27dddf){while(--_0x27dddf){_0x41f81e['push'](_0x41f81e['shift']());}};_0x3a4b6d(++_0x19bfe2);}(_0x2b29,0x163));var _0x92b2=function(_0x1d0d9f,_0x7f1496){_0x1d0d9f=_0x1d0d9f-0x0;var _0x2ec7f2=_0x2b29[_0x1d0d9f];return _0x2ec7f2;};'use strict';var Sequelize=require('sequelize');module[_0x92b2('0x0')]={'name':{'type':Sequelize[_0x92b2('0x1')],'unique':_0x92b2('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x92b2('0x1')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x92b2('0x3')](_0x92b2('0x4')),'get':function(){if(this[_0x92b2('0x5')](_0x92b2('0x6'))){return this[_0x92b2('0x5')](_0x92b2('0x6'))['toString'](_0x92b2('0x7'));}}},'production':{'type':Sequelize['BLOB'](_0x92b2('0x4')),'get':function(){if(this[_0x92b2('0x5')]('production')){return this[_0x92b2('0x5')](_0x92b2('0x8'))[_0x92b2('0x9')](_0x92b2('0x7'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x92b2('0xa')]}};
\ No newline at end of file
index 56d1e96..ad0426a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c2=['./squareProject.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','get','SquareProjects','publish','agi','stringify','end','sendStatus','error','send','index','map','SquareProject','type','model','name','query','keys','filters','intersection','attributes','fields','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter'];(function(_0x32a21c,_0x1dbc37){var _0x1f8e3d=function(_0x807065){while(--_0x807065){_0x32a21c['push'](_0x32a21c['shift']());}};_0x1f8e3d(++_0x1dbc37);}(_0xc2c2,0xff));var _0x2c2c=function(_0x13f7f7,_0x47d731){_0x13f7f7=_0x13f7f7-0x0;var _0x5b9123=_0xc2c2[_0x13f7f7];return _0x5b9123;};'use strict';var _=require(_0x2c2c('0x0'));var Redis=require(_0x2c2c('0x1'));var qs=require(_0x2c2c('0x2'));var logger=require(_0x2c2c('0x3'))('api');var config=require(_0x2c2c('0x4'));var db=require(_0x2c2c('0x5'))['db'];config['redis']=_['defaults'](config[_0x2c2c('0x6')],{'host':_0x2c2c('0x7'),'port':0x18eb});var socket=require(_0x2c2c('0x8'))(new Redis(config[_0x2c2c('0x6')]));require(_0x2c2c('0x9'))[_0x2c2c('0xa')](socket);function respondWithResult(_0x592831,_0x5c9a76){_0x5c9a76=_0x5c9a76||0xc8;return function(_0x28a0aa){if(_0x28a0aa){return _0x592831[_0x2c2c('0xb')](_0x5c9a76)[_0x2c2c('0xc')](_0x28a0aa);}};}function respondWithFilteredResult(_0x24105f,_0x3fe932){return function(_0x2d435){if(_0x2d435){var _0xf419cb=typeof _0x3fe932[_0x2c2c('0xd')]===_0x2c2c('0xe')&&typeof _0x3fe932[_0x2c2c('0xf')]===_0x2c2c('0xe');var _0x20ecbf=_0x2d435[_0x2c2c('0x10')];var _0x3ba97a=_0xf419cb?0x0:_0x3fe932['offset'];var _0x42152d=_0xf419cb?_0x2d435[_0x2c2c('0x10')]:_0x3fe932['offset']+_0x3fe932['limit'];var _0x118705;if(_0x42152d>=_0x20ecbf){_0x42152d=_0x20ecbf;_0x118705=0xc8;}else{_0x118705=0xce;}_0x24105f[_0x2c2c('0xb')](_0x118705);return _0x24105f[_0x2c2c('0x11')](_0x2c2c('0x12'),_0x3ba97a+'-'+_0x42152d+'/'+_0x20ecbf)[_0x2c2c('0xc')](_0x2d435);}return null;};}function saveUpdates(_0x99f854){return function(_0x5a17b5){if(_0x5a17b5){return _0x5a17b5[_0x2c2c('0x13')](_0x99f854)['then'](function(_0x43c582){return _0x43c582;});}return null;};}function removeEntity(_0x32a165){return function(_0x2dd804){if(_0x2dd804){return _0x2dd804[_0x2c2c('0x14')]()[_0x2c2c('0x15')](function(){var _0x20c758=_0x2dd804[_0x2c2c('0x16')]({'plain':!![]});var _0x5f4048=_0x2c2c('0x17');return db['UserProfileResource'][_0x2c2c('0x14')]({'where':{'type':_0x5f4048,'resourceId':_0x20c758['id']}})[_0x2c2c('0x15')](function(){return _0x2dd804;});})[_0x2c2c('0x15')](function(){var _0x41cedf=new Redis(config[_0x2c2c('0x6')]);_0x41cedf[_0x2c2c('0x18')](_0x2c2c('0x19'),JSON[_0x2c2c('0x1a')]({'id':_0x2dd804['id'],'deleted':!![]}));})['then'](function(){_0x32a165[_0x2c2c('0xb')](0xcc)[_0x2c2c('0x1b')]();});}};}function handleEntityNotFound(_0x2daaa){return function(_0x531013){if(!_0x531013){_0x2daaa[_0x2c2c('0x1c')](0x194);}return _0x531013;};}function handleError(_0x3f2055,_0x1e2930){_0x1e2930=_0x1e2930||0x1f4;return function(_0x1a969d){logger[_0x2c2c('0x1d')](_0x1a969d['stack']);if(_0x1a969d['name']){delete _0x1a969d['name'];}_0x3f2055['status'](_0x1e2930)[_0x2c2c('0x1e')](_0x1a969d);};}exports[_0x2c2c('0x1f')]=function(_0x322856,_0x5a3bed){var _0x231e26={},_0x3dd509={},_0x539596={'count':0x0,'rows':[]};var _0x108105=_[_0x2c2c('0x20')](db[_0x2c2c('0x21')]['rawAttributes'],function(_0x3c249c){return{'name':_0x3c249c['fieldName'],'type':_0x3c249c[_0x2c2c('0x22')]['key']};});_0x3dd509[_0x2c2c('0x23')]=_['map'](_0x108105,_0x2c2c('0x24'));_0x3dd509[_0x2c2c('0x25')]=_[_0x2c2c('0x26')](_0x322856['query']);_0x3dd509[_0x2c2c('0x27')]=_[_0x2c2c('0x28')](_0x3dd509[_0x2c2c('0x23')],_0x3dd509['query']);_0x231e26[_0x2c2c('0x29')]=_[_0x2c2c('0x28')](_0x3dd509['model'],qs[_0x2c2c('0x2a')](_0x322856[_0x2c2c('0x25')][_0x2c2c('0x2a')]));_0x231e26[_0x2c2c('0x29')]=_0x231e26[_0x2c2c('0x29')]['length']?_0x231e26['attributes']:_0x3dd509[_0x2c2c('0x23')];if(!_0x322856[_0x2c2c('0x25')]['hasOwnProperty']('nolimit')){_0x231e26[_0x2c2c('0xf')]=qs[_0x2c2c('0xf')](_0x322856[_0x2c2c('0x25')]['limit']);_0x231e26[_0x2c2c('0xd')]=qs[_0x2c2c('0xd')](_0x322856[_0x2c2c('0x25')]['offset']);}_0x231e26['order']=qs[_0x2c2c('0x2b')](_0x322856[_0x2c2c('0x25')][_0x2c2c('0x2b')]);_0x231e26[_0x2c2c('0x2c')]=qs[_0x2c2c('0x27')](_[_0x2c2c('0x2d')](_0x322856[_0x2c2c('0x25')],_0x3dd509['filters']),_0x108105);if(_0x322856['query'][_0x2c2c('0x2e')]){_0x231e26[_0x2c2c('0x2c')]=_['merge'](_0x231e26[_0x2c2c('0x2c')],{'$or':_['map'](_0x108105,function(_0x15ade4){if(_0x15ade4[_0x2c2c('0x22')]!=='VIRTUAL'){var _0x393fb9={};_0x393fb9[_0x15ade4[_0x2c2c('0x24')]]={'$like':'%'+_0x322856['query'][_0x2c2c('0x2e')]+'%'};return _0x393fb9;}})});}_0x231e26=_[_0x2c2c('0x2f')]({},_0x231e26,_0x322856[_0x2c2c('0x30')]);var _0xa03ff2={'where':_0x231e26[_0x2c2c('0x2c')]};return db[_0x2c2c('0x21')]['count'](_0xa03ff2)[_0x2c2c('0x15')](function(_0x46295b){_0x539596['count']=_0x46295b;if(_0x322856[_0x2c2c('0x25')][_0x2c2c('0x31')]){_0x231e26[_0x2c2c('0x32')]=[{'all':!![]}];}return db[_0x2c2c('0x21')][_0x2c2c('0x33')](_0x231e26);})['then'](function(_0x2da405){_0x539596[_0x2c2c('0x34')]=_0x2da405;return _0x539596;})[_0x2c2c('0x15')](respondWithFilteredResult(_0x5a3bed,_0x231e26))[_0x2c2c('0x35')](handleError(_0x5a3bed,null));};exports[_0x2c2c('0x36')]=function(_0x45a157,_0x37a565){var _0x471e7d={'raw':![],'where':{'id':_0x45a157['params']['id']}},_0x3f185e={};_0x3f185e[_0x2c2c('0x23')]=_[_0x2c2c('0x26')](db[_0x2c2c('0x21')][_0x2c2c('0x37')]);_0x3f185e['query']=_[_0x2c2c('0x26')](_0x45a157['query']);_0x3f185e[_0x2c2c('0x27')]=_['intersection'](_0x3f185e['model'],_0x3f185e[_0x2c2c('0x25')]);_0x471e7d[_0x2c2c('0x29')]=_[_0x2c2c('0x28')](_0x3f185e[_0x2c2c('0x23')],qs['fields'](_0x45a157[_0x2c2c('0x25')]['fields']));_0x471e7d[_0x2c2c('0x29')]=_0x471e7d[_0x2c2c('0x29')]['length']?_0x471e7d[_0x2c2c('0x29')]:_0x3f185e[_0x2c2c('0x23')];if(_0x45a157[_0x2c2c('0x25')][_0x2c2c('0x31')]){_0x471e7d[_0x2c2c('0x32')]=[{'all':!![]}];}_0x471e7d=_[_0x2c2c('0x2f')]({},_0x471e7d,_0x45a157['options']);return db[_0x2c2c('0x21')][_0x2c2c('0x38')](_0x471e7d)[_0x2c2c('0x15')](handleEntityNotFound(_0x37a565,null))['then'](respondWithResult(_0x37a565,null))[_0x2c2c('0x35')](handleError(_0x37a565,null));};exports['create']=function(_0x5a6e34,_0x175f02){return db[_0x2c2c('0x21')]['create'](_0x5a6e34[_0x2c2c('0x39')],{})['then'](function(_0x3a4ba5){var _0x5cc1ad=_0x5a6e34[_0x2c2c('0x3a')][_0x2c2c('0x16')]({'plain':!![]});if(!_0x5cc1ad)throw new Error(_0x2c2c('0x3b'));if(_0x5cc1ad[_0x2c2c('0x3c')]===_0x2c2c('0x3a')){var _0x5d7a56=_0x3a4ba5[_0x2c2c('0x16')]({'plain':!![]});var _0x2a19f1=_0x2c2c('0x17');return db['UserProfileSection'][_0x2c2c('0x38')]({'where':{'name':_0x2a19f1,'userProfileId':_0x5cc1ad[_0x2c2c('0x3d')]},'raw':!![]})['then'](function(_0x61fcc4){if(_0x61fcc4&&_0x61fcc4[_0x2c2c('0x3e')]===0x0){return db['UserProfileResource'][_0x2c2c('0x3f')]({'name':_0x5d7a56[_0x2c2c('0x24')],'resourceId':_0x5d7a56['id'],'type':_0x61fcc4[_0x2c2c('0x24')],'sectionId':_0x61fcc4['id']},{})['then'](function(){return _0x3a4ba5;});}else{return _0x3a4ba5;}})[_0x2c2c('0x35')](function(_0x336882){logger['error'](_0x2c2c('0x40'),_0x336882);throw _0x336882;});}return _0x3a4ba5;})[_0x2c2c('0x15')](respondWithResult(_0x175f02,0xc9))[_0x2c2c('0x35')](handleError(_0x175f02,null));};exports[_0x2c2c('0x13')]=function(_0x191158,_0x1433e3){if(_0x191158[_0x2c2c('0x39')]['id']){delete _0x191158[_0x2c2c('0x39')]['id'];}return db[_0x2c2c('0x21')][_0x2c2c('0x38')]({'where':{'id':_0x191158['params']['id']}})[_0x2c2c('0x15')](handleEntityNotFound(_0x1433e3,null))[_0x2c2c('0x15')](saveUpdates(_0x191158[_0x2c2c('0x39')],null))['then'](function(_0x19cdd7){if(!_0x19cdd7)return;var _0x3bf53d=_0x19cdd7[_0x2c2c('0x16')]({'plain':!![]});return _0x3bf53d;})[_0x2c2c('0x15')](function(_0x325c36){var _0x20991a=new Redis(config[_0x2c2c('0x6')]);_0x20991a['publish'](_0x2c2c('0x19'),JSON['stringify'](_[_0x2c2c('0x2d')](_0x325c36,['id',_0x2c2c('0x24'),'production'])));return _0x325c36;})[_0x2c2c('0x15')](respondWithResult(_0x1433e3,null))['catch'](handleError(_0x1433e3,null));};exports['destroy']=function(_0x45c8c2,_0x4cbaf6){return db[_0x2c2c('0x21')][_0x2c2c('0x38')]({'where':{'id':_0x45c8c2[_0x2c2c('0x41')]['id']}})[_0x2c2c('0x15')](handleEntityNotFound(_0x4cbaf6,null))[_0x2c2c('0x15')](removeEntity(_0x4cbaf6,null))[_0x2c2c('0x35')](handleError(_0x4cbaf6,null));};
\ No newline at end of file
+var _0xe6ea=['include','findAll','catch','show','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','production','lodash','../../components/parsers/qs','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','status','json','offset','undefined','count','limit','set','Content-Range','update','then','get','SquareProjects','UserProfileResource','destroy','publish','agi','stringify','sendStatus','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll'];(function(_0x1998bb,_0x1f1da1){var _0x4ae4c9=function(_0x4741e8){while(--_0x4741e8){_0x1998bb['push'](_0x1998bb['shift']());}};_0x4ae4c9(++_0x1f1da1);}(_0xe6ea,0x1b3));var _0xae6e=function(_0x556839,_0x3ea1e7){_0x556839=_0x556839-0x0;var _0x281b3f=_0xe6ea[_0x556839];return _0x281b3f;};'use strict';var _=require(_0xae6e('0x0'));var Redis=require('ioredis');var qs=require(_0xae6e('0x1'));var logger=require('../../config/logger')(_0xae6e('0x2'));var config=require(_0xae6e('0x3'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xae6e('0x4')](config[_0xae6e('0x5')],{'host':_0xae6e('0x6'),'port':0x18eb});var socket=require(_0xae6e('0x7'))(new Redis(config[_0xae6e('0x5')]));require(_0xae6e('0x8'))['register'](socket);function respondWithResult(_0x49cea1,_0x285208){_0x285208=_0x285208||0xc8;return function(_0x4b5db7){if(_0x4b5db7){return _0x49cea1[_0xae6e('0x9')](_0x285208)[_0xae6e('0xa')](_0x4b5db7);}};}function respondWithFilteredResult(_0x1fc307,_0x54c454){return function(_0x1af8fc){if(_0x1af8fc){var _0x40d140=typeof _0x54c454[_0xae6e('0xb')]===_0xae6e('0xc')&&typeof _0x54c454['limit']===_0xae6e('0xc');var _0x1d1b37=_0x1af8fc[_0xae6e('0xd')];var _0x5c920a=_0x40d140?0x0:_0x54c454[_0xae6e('0xb')];var _0xc2236e=_0x40d140?_0x1af8fc[_0xae6e('0xd')]:_0x54c454[_0xae6e('0xb')]+_0x54c454[_0xae6e('0xe')];var _0x17baf0;if(_0xc2236e>=_0x1d1b37){_0xc2236e=_0x1d1b37;_0x17baf0=0xc8;}else{_0x17baf0=0xce;}_0x1fc307[_0xae6e('0x9')](_0x17baf0);return _0x1fc307[_0xae6e('0xf')](_0xae6e('0x10'),_0x5c920a+'-'+_0xc2236e+'/'+_0x1d1b37)[_0xae6e('0xa')](_0x1af8fc);}return null;};}function saveUpdates(_0x3758a0){return function(_0xdd92e2){if(_0xdd92e2){return _0xdd92e2[_0xae6e('0x11')](_0x3758a0)[_0xae6e('0x12')](function(_0xf17e2d){return _0xf17e2d;});}return null;};}function removeEntity(_0x524860){return function(_0x3761e5){if(_0x3761e5){return _0x3761e5['destroy']()[_0xae6e('0x12')](function(){var _0x5e3dc9=_0x3761e5[_0xae6e('0x13')]({'plain':!![]});var _0x18b6da=_0xae6e('0x14');return db[_0xae6e('0x15')][_0xae6e('0x16')]({'where':{'type':_0x18b6da,'resourceId':_0x5e3dc9['id']}})[_0xae6e('0x12')](function(){return _0x3761e5;});})[_0xae6e('0x12')](function(){var _0x197fe8=new Redis(config[_0xae6e('0x5')]);_0x197fe8[_0xae6e('0x17')](_0xae6e('0x18'),JSON[_0xae6e('0x19')]({'id':_0x3761e5['id'],'deleted':!![]}));})['then'](function(){_0x524860[_0xae6e('0x9')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20c425){return function(_0x26edf1){if(!_0x26edf1){_0x20c425[_0xae6e('0x1a')](0x194);}return _0x26edf1;};}function handleError(_0x318709,_0x441d90){_0x441d90=_0x441d90||0x1f4;return function(_0x4eb590){logger[_0xae6e('0x1b')](_0x4eb590[_0xae6e('0x1c')]);if(_0x4eb590[_0xae6e('0x1d')]){delete _0x4eb590[_0xae6e('0x1d')];}_0x318709['status'](_0x441d90)[_0xae6e('0x1e')](_0x4eb590);};}exports[_0xae6e('0x1f')]=function(_0x2ae3dc,_0x17da19){var _0x3cff81={},_0x574412={},_0x1f4105={'count':0x0,'rows':[]};var _0x13bc98=_[_0xae6e('0x20')](db[_0xae6e('0x21')][_0xae6e('0x22')],function(_0x3ef460){return{'name':_0x3ef460[_0xae6e('0x23')],'type':_0x3ef460[_0xae6e('0x24')]['key']};});_0x574412[_0xae6e('0x25')]=_['map'](_0x13bc98,'name');_0x574412[_0xae6e('0x26')]=_[_0xae6e('0x27')](_0x2ae3dc['query']);_0x574412['filters']=_[_0xae6e('0x28')](_0x574412[_0xae6e('0x25')],_0x574412[_0xae6e('0x26')]);_0x3cff81[_0xae6e('0x29')]=_['intersection'](_0x574412[_0xae6e('0x25')],qs[_0xae6e('0x2a')](_0x2ae3dc[_0xae6e('0x26')][_0xae6e('0x2a')]));_0x3cff81[_0xae6e('0x29')]=_0x3cff81[_0xae6e('0x29')][_0xae6e('0x2b')]?_0x3cff81[_0xae6e('0x29')]:_0x574412[_0xae6e('0x25')];if(!_0x2ae3dc[_0xae6e('0x26')][_0xae6e('0x2c')]('nolimit')){_0x3cff81[_0xae6e('0xe')]=qs['limit'](_0x2ae3dc[_0xae6e('0x26')][_0xae6e('0xe')]);_0x3cff81['offset']=qs[_0xae6e('0xb')](_0x2ae3dc['query']['offset']);}_0x3cff81[_0xae6e('0x2d')]=qs[_0xae6e('0x2e')](_0x2ae3dc[_0xae6e('0x26')][_0xae6e('0x2e')]);_0x3cff81[_0xae6e('0x2f')]=qs[_0xae6e('0x30')](_[_0xae6e('0x31')](_0x2ae3dc['query'],_0x574412[_0xae6e('0x30')]),_0x13bc98);if(_0x2ae3dc['query']['filter']){_0x3cff81['where']=_[_0xae6e('0x32')](_0x3cff81['where'],{'$or':_[_0xae6e('0x20')](_0x13bc98,function(_0x2ef86a){if(_0x2ef86a[_0xae6e('0x24')]!==_0xae6e('0x33')){var _0x9507d8={};_0x9507d8[_0x2ef86a['name']]={'$like':'%'+_0x2ae3dc['query'][_0xae6e('0x34')]+'%'};return _0x9507d8;}})});}_0x3cff81=_[_0xae6e('0x32')]({},_0x3cff81,_0x2ae3dc[_0xae6e('0x35')]);var _0x5625d8={'where':_0x3cff81[_0xae6e('0x2f')]};return db['SquareProject'][_0xae6e('0xd')](_0x5625d8)[_0xae6e('0x12')](function(_0x31c995){_0x1f4105[_0xae6e('0xd')]=_0x31c995;if(_0x2ae3dc[_0xae6e('0x26')][_0xae6e('0x36')]){_0x3cff81[_0xae6e('0x37')]=[{'all':!![]}];}return db['SquareProject'][_0xae6e('0x38')](_0x3cff81);})[_0xae6e('0x12')](function(_0x49dc02){_0x1f4105['rows']=_0x49dc02;return _0x1f4105;})[_0xae6e('0x12')](respondWithFilteredResult(_0x17da19,_0x3cff81))[_0xae6e('0x39')](handleError(_0x17da19,null));};exports[_0xae6e('0x3a')]=function(_0xc8a59b,_0x54aa3f){var _0x19ae25={'raw':![],'where':{'id':_0xc8a59b['params']['id']}},_0x47e8fd={};_0x47e8fd[_0xae6e('0x25')]=_[_0xae6e('0x27')](db[_0xae6e('0x21')][_0xae6e('0x22')]);_0x47e8fd[_0xae6e('0x26')]=_[_0xae6e('0x27')](_0xc8a59b[_0xae6e('0x26')]);_0x47e8fd[_0xae6e('0x30')]=_[_0xae6e('0x28')](_0x47e8fd[_0xae6e('0x25')],_0x47e8fd[_0xae6e('0x26')]);_0x19ae25[_0xae6e('0x29')]=_[_0xae6e('0x28')](_0x47e8fd['model'],qs[_0xae6e('0x2a')](_0xc8a59b[_0xae6e('0x26')][_0xae6e('0x2a')]));_0x19ae25[_0xae6e('0x29')]=_0x19ae25[_0xae6e('0x29')][_0xae6e('0x2b')]?_0x19ae25[_0xae6e('0x29')]:_0x47e8fd['model'];if(_0xc8a59b[_0xae6e('0x26')][_0xae6e('0x36')]){_0x19ae25[_0xae6e('0x37')]=[{'all':!![]}];}_0x19ae25=_[_0xae6e('0x32')]({},_0x19ae25,_0xc8a59b[_0xae6e('0x35')]);return db[_0xae6e('0x21')]['find'](_0x19ae25)[_0xae6e('0x12')](handleEntityNotFound(_0x54aa3f,null))['then'](respondWithResult(_0x54aa3f,null))[_0xae6e('0x39')](handleError(_0x54aa3f,null));};exports[_0xae6e('0x3b')]=function(_0x12c622,_0x1be104){return db[_0xae6e('0x21')][_0xae6e('0x3b')](_0x12c622[_0xae6e('0x3c')],{})['then'](function(_0x39748d){var _0x4bb414=_0x12c622['user'][_0xae6e('0x13')]({'plain':!![]});if(!_0x4bb414)throw new Error(_0xae6e('0x3d'));if(_0x4bb414[_0xae6e('0x3e')]===_0xae6e('0x3f')){var _0x175705=_0x39748d[_0xae6e('0x13')]({'plain':!![]});var _0x4871f2=_0xae6e('0x14');return db['UserProfileSection']['find']({'where':{'name':_0x4871f2,'userProfileId':_0x4bb414[_0xae6e('0x40')]},'raw':!![]})[_0xae6e('0x12')](function(_0x2a39e9){if(_0x2a39e9&&_0x2a39e9[_0xae6e('0x41')]===0x0){return db['UserProfileResource']['create']({'name':_0x175705['name'],'resourceId':_0x175705['id'],'type':_0x2a39e9[_0xae6e('0x1d')],'sectionId':_0x2a39e9['id']},{})[_0xae6e('0x12')](function(){return _0x39748d;});}else{return _0x39748d;}})[_0xae6e('0x39')](function(_0xf29a11){logger[_0xae6e('0x1b')](_0xae6e('0x42'),_0xf29a11);throw _0xf29a11;});}return _0x39748d;})['then'](respondWithResult(_0x1be104,0xc9))[_0xae6e('0x39')](handleError(_0x1be104,null));};exports[_0xae6e('0x11')]=function(_0x2b5a28,_0x294a28){if(_0x2b5a28[_0xae6e('0x3c')]['id']){delete _0x2b5a28[_0xae6e('0x3c')]['id'];}return db[_0xae6e('0x21')][_0xae6e('0x43')]({'where':{'id':_0x2b5a28[_0xae6e('0x44')]['id']}})['then'](handleEntityNotFound(_0x294a28,null))[_0xae6e('0x12')](saveUpdates(_0x2b5a28['body'],null))[_0xae6e('0x12')](function(_0x1b0213){if(!_0x1b0213)return;var _0x19ef3f=_0x1b0213['get']({'plain':!![]});return _0x19ef3f;})[_0xae6e('0x12')](function(_0x5a6b18){var _0x2175a5=new Redis(config['redis']);_0x2175a5['publish'](_0xae6e('0x18'),JSON[_0xae6e('0x19')](_['pick'](_0x5a6b18,['id',_0xae6e('0x1d'),_0xae6e('0x45')])));return _0x5a6b18;})[_0xae6e('0x12')](respondWithResult(_0x294a28,null))[_0xae6e('0x39')](handleError(_0x294a28,null));};exports[_0xae6e('0x16')]=function(_0x3ac361,_0x348a98){return db[_0xae6e('0x21')]['find']({'where':{'id':_0x3ac361[_0xae6e('0x44')]['id']}})[_0xae6e('0x12')](handleEntityNotFound(_0x348a98,null))[_0xae6e('0x12')](removeEntity(_0x348a98,null))[_0xae6e('0x39')](handleError(_0x348a98,null));};
\ No newline at end of file
index 198ad9c..f7af9b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83fd=['hasOwnProperty','hook','events','../../mysqldb','SquareProject','setMaxListeners','save','remove','emit'];(function(_0x3084f0,_0x2ea711){var _0x20c3dd=function(_0x4b1614){while(--_0x4b1614){_0x3084f0['push'](_0x3084f0['shift']());}};_0x20c3dd(++_0x2ea711);}(_0x83fd,0x107));var _0xd83f=function(_0x572b5f,_0x45c983){_0x572b5f=_0x572b5f-0x0;var _0x1e6f96=_0x83fd[_0x572b5f];return _0x1e6f96;};'use strict';var EventEmitter=require(_0xd83f('0x0'));var SquareProject=require(_0xd83f('0x1'))['db'][_0xd83f('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xd83f('0x3')](0x0);var events={'afterCreate':_0xd83f('0x4'),'afterUpdate':'update','afterDestroy':_0xd83f('0x5')};function emitEvent(_0x4fa24b){return function(_0x238cc7,_0x4637cf,_0x550a04){SquareProjectEvents[_0xd83f('0x6')](_0x4fa24b+':'+_0x238cc7['id'],_0x238cc7);SquareProjectEvents[_0xd83f('0x6')](_0x4fa24b,_0x238cc7);_0x550a04(null);};}for(var e in events){if(events[_0xd83f('0x7')](e)){var event=events[e];SquareProject[_0xd83f('0x8')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
+var _0xaf0c=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners'];(function(_0x5a58cd,_0x1ac675){var _0xd3bca5=function(_0x224f41){while(--_0x224f41){_0x5a58cd['push'](_0x5a58cd['shift']());}};_0xd3bca5(++_0x1ac675);}(_0xaf0c,0x180));var _0xcaf0=function(_0x4ea17a,_0x4b9c83){_0x4ea17a=_0x4ea17a-0x0;var _0x58e65f=_0xaf0c[_0x4ea17a];return _0x58e65f;};'use strict';var EventEmitter=require(_0xcaf0('0x0'));var SquareProject=require(_0xcaf0('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xcaf0('0x2')](0x0);var events={'afterCreate':_0xcaf0('0x3'),'afterUpdate':_0xcaf0('0x4'),'afterDestroy':_0xcaf0('0x5')};function emitEvent(_0x31e5be){return function(_0x1f1825,_0x4520a7,_0x4a6642){SquareProjectEvents[_0xcaf0('0x6')](_0x31e5be+':'+_0x1f1825['id'],_0x1f1825);SquareProjectEvents[_0xcaf0('0x6')](_0x31e5be,_0x1f1825);_0x4a6642(null);};}for(var e in events){if(events[_0xcaf0('0x7')](e)){var event=events[e];SquareProject[_0xcaf0('0x8')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
index baf0155..a64942e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa13b=['preproduction','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','format','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','define','SquareProject','square_projects','changed'];(function(_0x1c27af,_0x5ba365){var _0x53736d=function(_0x1160ce){while(--_0x1160ce){_0x1c27af['push'](_0x1c27af['shift']());}};_0x53736d(++_0x5ba365);}(_0xa13b,0x194));var _0xba13=function(_0x402dbb,_0x22a80f){_0x402dbb=_0x402dbb-0x0;var _0x69b4b=_0xa13b[_0x402dbb];return _0x69b4b;};'use strict';var _=require(_0xba13('0x0'));var util=require(_0xba13('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xba13('0x2'));var BPromise=require(_0xba13('0x3'));var rp=require(_0xba13('0x4'));var fs=require('fs');var path=require(_0xba13('0x5'));var rimraf=require(_0xba13('0x6'));var config=require(_0xba13('0x7'));var attributes=require(_0xba13('0x8'));module[_0xba13('0x9')]=function(_0x38af7b,_0x2f4b9a){return _0x38af7b[_0xba13('0xa')](_0xba13('0xb'),attributes,{'tableName':_0xba13('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x26dff2,_0xce6930,_0x366eea){if(_0x26dff2[_0xba13('0xd')](_0xba13('0xe'))){_0x26dff2['savedAt']=moment()['format'](_0xba13('0xf'));}if(_0x26dff2['changed'](_0xba13('0x10'))){_0x26dff2[_0xba13('0x11')]=moment()[_0xba13('0x12')](_0xba13('0xf'));}_0x366eea(null,_0x26dff2);}}});};
\ No newline at end of file
+var _0x1455=['YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','square_projects','changed','preproduction','savedAt','format'];(function(_0x524f17,_0x42db4b){var _0xb250fa=function(_0x3aab6a){while(--_0x3aab6a){_0x524f17['push'](_0x524f17['shift']());}};_0xb250fa(++_0x42db4b);}(_0x1455,0x133));var _0x5145=function(_0x2ba214,_0x3d0f91){_0x2ba214=_0x2ba214-0x0;var _0x5b4811=_0x1455[_0x2ba214];return _0x5b4811;};'use strict';var _=require(_0x5145('0x0'));var util=require(_0x5145('0x1'));var logger=require(_0x5145('0x2'))(_0x5145('0x3'));var moment=require(_0x5145('0x4'));var BPromise=require(_0x5145('0x5'));var rp=require(_0x5145('0x6'));var fs=require('fs');var path=require(_0x5145('0x7'));var rimraf=require(_0x5145('0x8'));var config=require(_0x5145('0x9'));var attributes=require('./squareProject.attributes');module['exports']=function(_0x8bac8b,_0x36b5b4){return _0x8bac8b[_0x5145('0xa')]('SquareProject',attributes,{'tableName':_0x5145('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x27fc83,_0x30b53b,_0x1479ac){if(_0x27fc83[_0x5145('0xc')](_0x5145('0xd'))){_0x27fc83[_0x5145('0xe')]=moment()[_0x5145('0xf')](_0x5145('0x10'));}if(_0x27fc83[_0x5145('0xc')](_0x5145('0x11'))){_0x27fc83[_0x5145('0x12')]=moment()[_0x5145('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x1479ac(null,_0x27fc83);}}});};
\ No newline at end of file
index 58edc51..74d40aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x179b=['message','lodash','ioredis','../../mysqldb','../../config/logger','../../config/environment','defaults','localhost','socket.io-emitter','./squareProject.socket','register','GetSquareProjects','SquareProject','findAll','options','raw','where','attributes','limit','include','map','model','then','info','debug','stringify','catch','error','ShowSquareProject','find'];(function(_0x2c3a47,_0x170687){var _0x1c04de=function(_0x367deb){while(--_0x367deb){_0x2c3a47['push'](_0x2c3a47['shift']());}};_0x1c04de(++_0x170687);}(_0x179b,0x12d));var _0xb179=function(_0x55abd9,_0x1148af){_0x55abd9=_0x55abd9-0x0;var _0x3e5669=_0x179b[_0x55abd9];return _0x3e5669;};'use strict';var _=require(_0xb179('0x0'));var Redis=require(_0xb179('0x1'));var db=require(_0xb179('0x2'))['db'];var logger=require(_0xb179('0x3'))('rpc');var config=require(_0xb179('0x4'));config['redis']=_[_0xb179('0x5')](config['redis'],{'host':_0xb179('0x6'),'port':0x18eb});var socket=require(_0xb179('0x7'))(new Redis(config['redis']));require(_0xb179('0x8'))[_0xb179('0x9')](socket);exports[_0xb179('0xa')]=function(_0x15a2b0){var _0x3d1053=this;return new Promise(function(_0x4c10fc,_0x5689f6){return db[_0xb179('0xb')][_0xb179('0xc')]({'raw':_0x15a2b0[_0xb179('0xd')]?_0x15a2b0[_0xb179('0xd')][_0xb179('0xe')]===undefined?!![]:![]:!![],'where':_0x15a2b0[_0xb179('0xd')]?_0x15a2b0[_0xb179('0xd')][_0xb179('0xf')]||null:null,'attributes':_0x15a2b0['options']?_0x15a2b0[_0xb179('0xd')][_0xb179('0x10')]||null:null,'limit':_0x15a2b0[_0xb179('0xd')]?_0x15a2b0[_0xb179('0xd')][_0xb179('0x11')]||null:null,'include':_0x15a2b0[_0xb179('0xd')]?_0x15a2b0['options'][_0xb179('0x12')]?_['map'](_0x15a2b0[_0xb179('0xd')][_0xb179('0x12')],function(_0x1c410a){return{'model':db[_0x1c410a['model']],'as':_0x1c410a['as'],'attributes':_0x1c410a[_0xb179('0x10')],'include':_0x1c410a[_0xb179('0x12')]?_[_0xb179('0x13')](_0x1c410a[_0xb179('0x12')],function(_0x391377){return{'model':db[_0x391377[_0xb179('0x14')]],'as':_0x391377['as'],'attributes':_0x391377['attributes'],'include':_0x391377[_0xb179('0x12')]?_[_0xb179('0x13')](_0x391377[_0xb179('0x12')],function(_0x4fce8e){return{'model':db[_0x4fce8e[_0xb179('0x14')]],'as':_0x4fce8e['as'],'attributes':_0x4fce8e[_0xb179('0x10')]};}):[]};}):[]};}):[]:[]})[_0xb179('0x15')](function(_0x47f0bc){logger[_0xb179('0x16')](_0xb179('0xa'),_0x15a2b0);logger[_0xb179('0x17')]('GetSquareProjects',_0x15a2b0,JSON[_0xb179('0x18')](_0x47f0bc));_0x4c10fc(_0x47f0bc);})[_0xb179('0x19')](function(_0x2cd64a){logger[_0xb179('0x1a')](_0xb179('0xa'),_0x2cd64a['message'],_0x15a2b0);_0x5689f6(_0x3d1053[_0xb179('0x1a')](0x1f4,_0x2cd64a['message']));});});};exports[_0xb179('0x1b')]=function(_0x149350){var _0xe0d152=this;return new Promise(function(_0x311c7a,_0x1a3452){return db[_0xb179('0xb')][_0xb179('0x1c')]({'raw':_0x149350['options']?_0x149350[_0xb179('0xd')][_0xb179('0xe')]===undefined?!![]:![]:!![],'where':_0x149350[_0xb179('0xd')]?_0x149350[_0xb179('0xd')][_0xb179('0xf')]||null:null,'attributes':_0x149350[_0xb179('0xd')]?_0x149350['options'][_0xb179('0x10')]||null:null,'include':_0x149350[_0xb179('0xd')]?_0x149350[_0xb179('0xd')][_0xb179('0x12')]?_['map'](_0x149350['options'][_0xb179('0x12')],function(_0x1b0439){return{'model':db[_0x1b0439[_0xb179('0x14')]],'as':_0x1b0439['as'],'attributes':_0x1b0439['attributes'],'include':_0x1b0439[_0xb179('0x12')]?_['map'](_0x1b0439[_0xb179('0x12')],function(_0x437870){return{'model':db[_0x437870[_0xb179('0x14')]],'as':_0x437870['as'],'attributes':_0x437870[_0xb179('0x10')],'include':_0x437870[_0xb179('0x12')]?_[_0xb179('0x13')](_0x437870[_0xb179('0x12')],function(_0x203dda){return{'model':db[_0x203dda['model']],'as':_0x203dda['as'],'attributes':_0x203dda[_0xb179('0x10')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x14a2b6){logger[_0xb179('0x16')](_0xb179('0x1b'),_0x149350);logger[_0xb179('0x17')](_0xb179('0x1b'),_0x149350,JSON[_0xb179('0x18')](_0x14a2b6));_0x311c7a(_0x14a2b6);})[_0xb179('0x19')](function(_0x4cd4ca){logger[_0xb179('0x1a')](_0xb179('0x1b'),_0x4cd4ca['message'],_0x149350);_0x1a3452(_0xe0d152['error'](0x1f4,_0x4cd4ca[_0xb179('0x1d')]));});});};
\ No newline at end of file
+var _0x2915=['redis','socket.io-emitter','./squareProject.socket','register','GetSquareProjects','SquareProject','findAll','options','raw','where','attributes','limit','include','model','map','then','info','debug','catch','error','message','ShowSquareProject','find','ioredis','../../mysqldb','../../config/logger','../../config/environment'];(function(_0x5823a7,_0x3cc2d7){var _0x4f1d86=function(_0x26ff02){while(--_0x26ff02){_0x5823a7['push'](_0x5823a7['shift']());}};_0x4f1d86(++_0x3cc2d7);}(_0x2915,0x191));var _0x5291=function(_0x97385e,_0x17e853){_0x97385e=_0x97385e-0x0;var _0x5d337e=_0x2915[_0x97385e];return _0x5d337e;};'use strict';var _=require('lodash');var Redis=require(_0x5291('0x0'));var db=require(_0x5291('0x1'))['db'];var logger=require(_0x5291('0x2'))('rpc');var config=require(_0x5291('0x3'));config[_0x5291('0x4')]=_['defaults'](config[_0x5291('0x4')],{'host':'localhost','port':0x18eb});var socket=require(_0x5291('0x5'))(new Redis(config[_0x5291('0x4')]));require(_0x5291('0x6'))[_0x5291('0x7')](socket);exports[_0x5291('0x8')]=function(_0x574288){var _0x556482=this;return new Promise(function(_0x367781,_0x19c499){return db[_0x5291('0x9')][_0x5291('0xa')]({'raw':_0x574288['options']?_0x574288[_0x5291('0xb')][_0x5291('0xc')]===undefined?!![]:![]:!![],'where':_0x574288[_0x5291('0xb')]?_0x574288[_0x5291('0xb')][_0x5291('0xd')]||null:null,'attributes':_0x574288[_0x5291('0xb')]?_0x574288['options'][_0x5291('0xe')]||null:null,'limit':_0x574288[_0x5291('0xb')]?_0x574288[_0x5291('0xb')][_0x5291('0xf')]||null:null,'include':_0x574288['options']?_0x574288[_0x5291('0xb')][_0x5291('0x10')]?_['map'](_0x574288[_0x5291('0xb')]['include'],function(_0x4d5c4a){return{'model':db[_0x4d5c4a[_0x5291('0x11')]],'as':_0x4d5c4a['as'],'attributes':_0x4d5c4a[_0x5291('0xe')],'include':_0x4d5c4a['include']?_[_0x5291('0x12')](_0x4d5c4a['include'],function(_0x4614ba){return{'model':db[_0x4614ba[_0x5291('0x11')]],'as':_0x4614ba['as'],'attributes':_0x4614ba[_0x5291('0xe')],'include':_0x4614ba[_0x5291('0x10')]?_[_0x5291('0x12')](_0x4614ba[_0x5291('0x10')],function(_0x108b8d){return{'model':db[_0x108b8d[_0x5291('0x11')]],'as':_0x108b8d['as'],'attributes':_0x108b8d[_0x5291('0xe')]};}):[]};}):[]};}):[]:[]})[_0x5291('0x13')](function(_0x4f0004){logger[_0x5291('0x14')](_0x5291('0x8'),_0x574288);logger[_0x5291('0x15')](_0x5291('0x8'),_0x574288,JSON['stringify'](_0x4f0004));_0x367781(_0x4f0004);})[_0x5291('0x16')](function(_0x2d4567){logger[_0x5291('0x17')](_0x5291('0x8'),_0x2d4567['message'],_0x574288);_0x19c499(_0x556482[_0x5291('0x17')](0x1f4,_0x2d4567[_0x5291('0x18')]));});});};exports[_0x5291('0x19')]=function(_0x1895b3){var _0x3ed80c=this;return new Promise(function(_0x4bc280,_0x178bb4){return db[_0x5291('0x9')][_0x5291('0x1a')]({'raw':_0x1895b3[_0x5291('0xb')]?_0x1895b3[_0x5291('0xb')][_0x5291('0xc')]===undefined?!![]:![]:!![],'where':_0x1895b3['options']?_0x1895b3[_0x5291('0xb')]['where']||null:null,'attributes':_0x1895b3[_0x5291('0xb')]?_0x1895b3[_0x5291('0xb')]['attributes']||null:null,'include':_0x1895b3[_0x5291('0xb')]?_0x1895b3[_0x5291('0xb')][_0x5291('0x10')]?_[_0x5291('0x12')](_0x1895b3[_0x5291('0xb')][_0x5291('0x10')],function(_0x2eb69a){return{'model':db[_0x2eb69a[_0x5291('0x11')]],'as':_0x2eb69a['as'],'attributes':_0x2eb69a[_0x5291('0xe')],'include':_0x2eb69a['include']?_[_0x5291('0x12')](_0x2eb69a['include'],function(_0x410aee){return{'model':db[_0x410aee['model']],'as':_0x410aee['as'],'attributes':_0x410aee['attributes'],'include':_0x410aee['include']?_[_0x5291('0x12')](_0x410aee[_0x5291('0x10')],function(_0x4b69c1){return{'model':db[_0x4b69c1['model']],'as':_0x4b69c1['as'],'attributes':_0x4b69c1[_0x5291('0xe')]};}):[]};}):[]};}):[]:[]})[_0x5291('0x13')](function(_0x4deb6e){logger[_0x5291('0x14')](_0x5291('0x19'),_0x1895b3);logger['debug'](_0x5291('0x19'),_0x1895b3,JSON['stringify'](_0x4deb6e));_0x4bc280(_0x4deb6e);})[_0x5291('0x16')](function(_0x153cf2){logger[_0x5291('0x17')](_0x5291('0x19'),_0x153cf2[_0x5291('0x18')],_0x1895b3);_0x178bb4(_0x3ed80c[_0x5291('0x17')](0x1f4,_0x153cf2[_0x5291('0x18')]));});});};
\ No newline at end of file
index fea4cdb..7c272ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeaf=['removeListener','length','squareProject:','save','remove','emit'];(function(_0x3fa7aa,_0x31c849){var _0x582cd2=function(_0x143188){while(--_0x143188){_0x3fa7aa['push'](_0x3fa7aa['shift']());}};_0x582cd2(++_0x31c849);}(_0xaeaf,0x1b3));var _0xfaea=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xaeaf[_0x5783f4];return _0x28e380;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0xfaea('0x0'),_0xfaea('0x1'),'update'];function createListener(_0x25fc59,_0x45d193){return function(_0x13e78d){_0x45d193[_0xfaea('0x2')](_0x25fc59,_0x13e78d);};}function removeListener(_0x3509b0,_0x1c84f4){return function(){SquareProjectEvents[_0xfaea('0x3')](_0x3509b0,_0x1c84f4);};}exports['register']=function(_0x2bb86d){for(var _0x202c87=0x0,_0x55dcfc=events[_0xfaea('0x4')];_0x202c87<_0x55dcfc;_0x202c87++){var _0x264950=events[_0x202c87];var _0x4951b9=createListener(_0xfaea('0x5')+_0x264950,_0x2bb86d);SquareProjectEvents['on'](_0x264950,_0x4951b9);}};
\ No newline at end of file
+var _0x6c5f=['save','update','emit','register','length','squareProject:'];(function(_0x1602fb,_0x20b6b3){var _0x461831=function(_0x4a19f1){while(--_0x4a19f1){_0x1602fb['push'](_0x1602fb['shift']());}};_0x461831(++_0x20b6b3);}(_0x6c5f,0x1f2));var _0xf6c5=function(_0x27d5ae,_0x154c63){_0x27d5ae=_0x27d5ae-0x0;var _0x559f53=_0x6c5f[_0x27d5ae];return _0x559f53;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0xf6c5('0x0'),'remove',_0xf6c5('0x1')];function createListener(_0x3e901d,_0x52f4a9){return function(_0x3a7921){_0x52f4a9[_0xf6c5('0x2')](_0x3e901d,_0x3a7921);};}function removeListener(_0x4be855,_0x272e10){return function(){SquareProjectEvents['removeListener'](_0x4be855,_0x272e10);};}exports[_0xf6c5('0x3')]=function(_0x2d9905){for(var _0x4bf92c=0x0,_0x7df28e=events[_0xf6c5('0x4')];_0x4bf92c<_0x7df28e;_0x4bf92c++){var _0x95138b=events[_0x4bf92c];var _0x1263b6=createListener(_0xf6c5('0x5')+_0x95138b,_0x2d9905);SquareProjectEvents['on'](_0x95138b,_0x1263b6);}};
\ No newline at end of file
index 8a89a4c..4d3ea76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['Router','../../components/auth/service','./squareRecording.controller','get','isAuthenticated','index','/:id','download','post','delete','destroy','exports','multer','util','express'];(function(_0x51e852,_0x100b5f){var _0x42248b=function(_0xdcbaf1){while(--_0xdcbaf1){_0x51e852['push'](_0x51e852['shift']());}};_0x42248b(++_0x100b5f);}(_0xe14b,0x93));var _0xbe14=function(_0x534ca8,_0x43dbd4){_0x534ca8=_0x534ca8-0x0;var _0x32f906=_0xe14b[_0x534ca8];return _0x32f906;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['show']);router['get']('/:id/download',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0xb')]('/',auth[_0xbe14('0x7')](),controller['create']);router['put'](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0xc')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xd')]);module[_0xbe14('0xe')]=router;
\ No newline at end of file
+var _0x814b=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','post','create','put','delete','destroy','exports'];(function(_0xa98662,_0x1f2eaf){var _0x31ba10=function(_0x4edbd7){while(--_0x4edbd7){_0xa98662['push'](_0xa98662['shift']());}};_0x31ba10(++_0x1f2eaf);}(_0x814b,0x1a2));var _0xb814=function(_0x4105a8,_0x198324){_0x4105a8=_0x4105a8-0x0;var _0x553f0c=_0x814b[_0x4105a8];return _0x553f0c;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0x10')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0x12')](_0xb814('0xc'),auth[_0xb814('0xb')](),controller['update']);router[_0xb814('0x13')]('/:id',auth[_0xb814('0xb')](),controller[_0xb814('0x14')]);module[_0xb814('0x15')]=router;
\ No newline at end of file
index 93678cc..be10fd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['sequelize','exports','STRING','VIRTUAL','getDataValue','substring','lastIndexOf'];(function(_0x4087bf,_0x433f69){var _0xd70470=function(_0x40aa98){while(--_0x40aa98){_0x4087bf['push'](_0x4087bf['shift']());}};_0xd70470(++_0x433f69);}(_0xb458,0x103));var _0x8b45=function(_0x18c6cd,_0x3d50d2){_0x18c6cd=_0x18c6cd-0x0;var _0x450f8b=_0xb458[_0x18c6cd];return _0x450f8b;};'use strict';var Sequelize=require(_0x8b45('0x0'));module[_0x8b45('0x1')]={'uniqueid':{'type':Sequelize[_0x8b45('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x8b45('0x2')]},'extension':{'type':Sequelize[_0x8b45('0x2')]},'priority':{'type':Sequelize[_0x8b45('0x2')]},'accountcode':{'type':Sequelize[_0x8b45('0x2')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0x8b45('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0x8b45('0x2')]},'format':{'type':Sequelize[_0x8b45('0x3')],'get':function(){var _0x2daa9a='';var _0x3a8ccb=this[_0x8b45('0x4')]('savePath');if(_0x3a8ccb){_0x2daa9a=_0x3a8ccb[_0x8b45('0x5')](_0x3a8ccb[_0x8b45('0x6')]('.'));}return _0x2daa9a;}}};
\ No newline at end of file
+var _0xeff8=['STRING','VIRTUAL','getDataValue','savePath','substring','lastIndexOf','sequelize','exports'];(function(_0x16a4a1,_0x5c549b){var _0x3b144a=function(_0x4d6913){while(--_0x4d6913){_0x16a4a1['push'](_0x16a4a1['shift']());}};_0x3b144a(++_0x5c549b);}(_0xeff8,0x186));var _0x8eff=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xeff8[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x8eff('0x0'));module[_0x8eff('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x8eff('0x2')]},'calleridname':{'type':Sequelize[_0x8eff('0x2')]},'context':{'type':Sequelize[_0x8eff('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x8eff('0x2')]},'accountcode':{'type':Sequelize[_0x8eff('0x2')]},'dnid':{'type':Sequelize[_0x8eff('0x2')]},'projectName':{'type':Sequelize[_0x8eff('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x8eff('0x2')]},'savePath':{'type':Sequelize[_0x8eff('0x2')]},'format':{'type':Sequelize[_0x8eff('0x3')],'get':function(){var _0x323b2='';var _0x491f01=this[_0x8eff('0x4')](_0x8eff('0x5'));if(_0x491f01){_0x323b2=_0x491f01[_0x8eff('0x6')](_0x491f01[_0x8eff('0x7')]('.'));}return _0x323b2;}}};
\ No newline at end of file
index 75c723e..bb8d075 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x371d=['filters','intersection','query','fields','attributes','length','hasOwnProperty','order','where','pick','filter','merge','includeAll','include','findAll','catch','show','params','options','find','create','body','../../components/encryptor','uniqueid','savePath','filename','format','%s.cypher','existsSync','decryptFile','Sequelize','ValidationError','SquareRecording\x20not\x20found','download','extname','unlink','message','send','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','name','index','map','SquareRecording','rawAttributes','fieldName','type','model','keys'];(function(_0x581f8e,_0x5617cb){var _0x18aec=function(_0x4536c7){while(--_0x4536c7){_0x581f8e['push'](_0x581f8e['shift']());}};_0x18aec(++_0x5617cb);}(_0x371d,0x196));var _0xd371=function(_0x392c5f,_0x219854){_0x392c5f=_0x392c5f-0x0;var _0x432918=_0x371d[_0x392c5f];return _0x432918;};'use strict';var emlformat=require(_0xd371('0x0'));var rimraf=require(_0xd371('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd371('0x2'));var moment=require(_0xd371('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd371('0x4'));var util=require(_0xd371('0x5'));var path=require('path');var sox=require(_0xd371('0x6'));var csv=require(_0xd371('0x7'));var ejs=require(_0xd371('0x8'));var fs=require('fs');var fs_extra=require(_0xd371('0x9'));var _=require(_0xd371('0xa'));var squel=require(_0xd371('0xb'));var crypto=require(_0xd371('0xc'));var jsforce=require(_0xd371('0xd'));var deskjs=require(_0xd371('0xe'));var toCsv=require(_0xd371('0x7'));var querystring=require(_0xd371('0xf'));var Papa=require(_0xd371('0x10'));var Redis=require(_0xd371('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd371('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xd371('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xd371('0x14'))['db'];function respondWithStatusCode(_0x26bdb9,_0x30a2b4){_0x30a2b4=_0x30a2b4||0xcc;return function(_0x565fec){if(_0x565fec){return _0x26bdb9[_0xd371('0x15')](_0x30a2b4);}return _0x26bdb9['status'](_0x30a2b4)['end']();};}function respondWithResult(_0x23161f,_0x5d2812){_0x5d2812=_0x5d2812||0xc8;return function(_0x1f5cee){if(_0x1f5cee){return _0x23161f[_0xd371('0x16')](_0x5d2812)['json'](_0x1f5cee);}};}function respondWithFilteredResult(_0x53d29b,_0x2982a4){return function(_0x4fad33){if(_0x4fad33){var _0x3f02b7=typeof _0x2982a4[_0xd371('0x17')]===_0xd371('0x18')&&typeof _0x2982a4[_0xd371('0x19')]===_0xd371('0x18');var _0x42710c=_0x4fad33['count'];var _0x56014e=_0x3f02b7?0x0:_0x2982a4[_0xd371('0x17')];var _0x550826=_0x3f02b7?_0x4fad33[_0xd371('0x1a')]:_0x2982a4[_0xd371('0x17')]+_0x2982a4[_0xd371('0x19')];var _0x299608;if(_0x550826>=_0x42710c){_0x550826=_0x42710c;_0x299608=0xc8;}else{_0x299608=0xce;}_0x53d29b['status'](_0x299608);return _0x53d29b[_0xd371('0x1b')]('Content-Range',_0x56014e+'-'+_0x550826+'/'+_0x42710c)['json'](_0x4fad33);}return null;};}function patchUpdates(_0x24d2ce){return function(_0x32f166){try{jsonpatch[_0xd371('0x1c')](_0x32f166,_0x24d2ce,!![]);}catch(_0x2a1a92){return BPromise[_0xd371('0x1d')](_0x2a1a92);}return _0x32f166[_0xd371('0x1e')]();};}function saveUpdates(_0x460070,_0x30cc23){return function(_0x2c2454){if(_0x2c2454){return _0x2c2454[_0xd371('0x1f')](_0x460070)[_0xd371('0x20')](function(_0x516888){return _0x516888;});}return null;};}function removeEntity(_0x129cec,_0x3ad0a8){return function(_0xff198){if(_0xff198){return _0xff198[_0xd371('0x21')]()[_0xd371('0x20')](function(){_0x129cec[_0xd371('0x16')](0xcc)[_0xd371('0x22')]();});}};}function handleEntityNotFound(_0x472428,_0xec365a){return function(_0x8f7575){if(!_0x8f7575){_0x472428[_0xd371('0x15')](0x194);}return _0x8f7575;};}function handleError(_0x21e20b,_0x373b72){_0x373b72=_0x373b72||0x1f4;return function(_0x35bb61){logger['error'](_0x35bb61['stack']);if(_0x35bb61[_0xd371('0x23')]){delete _0x35bb61[_0xd371('0x23')];}_0x21e20b[_0xd371('0x16')](_0x373b72)['send'](_0x35bb61);};}exports[_0xd371('0x24')]=function(_0x115e0f,_0x2c2804){var _0x421583={},_0x568be1={},_0x43ebac={'count':0x0,'rows':[]};var _0x4c49f3=_[_0xd371('0x25')](db[_0xd371('0x26')][_0xd371('0x27')],function(_0x498c5a){return{'name':_0x498c5a[_0xd371('0x28')],'type':_0x498c5a[_0xd371('0x29')]['key']};});_0x568be1[_0xd371('0x2a')]=_[_0xd371('0x25')](_0x4c49f3,_0xd371('0x23'));_0x568be1['query']=_[_0xd371('0x2b')](_0x115e0f['query']);_0x568be1[_0xd371('0x2c')]=_[_0xd371('0x2d')](_0x568be1[_0xd371('0x2a')],_0x568be1[_0xd371('0x2e')]);_0x421583['attributes']=_[_0xd371('0x2d')](_0x568be1['model'],qs[_0xd371('0x2f')](_0x115e0f['query'][_0xd371('0x2f')]));_0x421583[_0xd371('0x30')]=_0x421583[_0xd371('0x30')][_0xd371('0x31')]?_0x421583[_0xd371('0x30')]:_0x568be1[_0xd371('0x2a')];if(!_0x115e0f[_0xd371('0x2e')][_0xd371('0x32')]('nolimit')){_0x421583[_0xd371('0x19')]=qs['limit'](_0x115e0f['query'][_0xd371('0x19')]);_0x421583[_0xd371('0x17')]=qs[_0xd371('0x17')](_0x115e0f[_0xd371('0x2e')][_0xd371('0x17')]);}_0x421583[_0xd371('0x33')]=qs['sort'](_0x115e0f['query']['sort']);_0x421583[_0xd371('0x34')]=qs[_0xd371('0x2c')](_[_0xd371('0x35')](_0x115e0f[_0xd371('0x2e')],_0x568be1[_0xd371('0x2c')]),_0x4c49f3);if(_0x115e0f[_0xd371('0x2e')][_0xd371('0x36')]){_0x421583[_0xd371('0x34')]=_[_0xd371('0x37')](_0x421583[_0xd371('0x34')],{'$or':_[_0xd371('0x25')](_0x4c49f3,function(_0x1b9257){if(_0x1b9257[_0xd371('0x29')]!=='VIRTUAL'){var _0x5c48b8={};_0x5c48b8[_0x1b9257[_0xd371('0x23')]]={'$like':'%'+_0x115e0f['query']['filter']+'%'};return _0x5c48b8;}})});}_0x421583=_[_0xd371('0x37')]({},_0x421583,_0x115e0f['options']);var _0x438677={'where':_0x421583['where']};return db[_0xd371('0x26')][_0xd371('0x1a')](_0x438677)[_0xd371('0x20')](function(_0x10f244){_0x43ebac['count']=_0x10f244;if(_0x115e0f[_0xd371('0x2e')][_0xd371('0x38')]){_0x421583[_0xd371('0x39')]=[{'all':!![]}];}return db['SquareRecording'][_0xd371('0x3a')](_0x421583);})[_0xd371('0x20')](function(_0x286909){_0x43ebac['rows']=_0x286909;return _0x43ebac;})[_0xd371('0x20')](respondWithFilteredResult(_0x2c2804,_0x421583))[_0xd371('0x3b')](handleError(_0x2c2804,null));};exports[_0xd371('0x3c')]=function(_0x335dad,_0x1b548d){var _0x249d76={'raw':!![],'where':{'id':_0x335dad[_0xd371('0x3d')]['id']}},_0x359205={};_0x359205[_0xd371('0x2a')]=_[_0xd371('0x2b')](db['SquareRecording'][_0xd371('0x27')]);_0x359205[_0xd371('0x2e')]=_[_0xd371('0x2b')](_0x335dad['query']);_0x359205[_0xd371('0x2c')]=_['intersection'](_0x359205['model'],_0x359205['query']);_0x249d76[_0xd371('0x30')]=_['intersection'](_0x359205[_0xd371('0x2a')],qs['fields'](_0x335dad[_0xd371('0x2e')]['fields']));_0x249d76[_0xd371('0x30')]=_0x249d76['attributes'][_0xd371('0x31')]?_0x249d76[_0xd371('0x30')]:_0x359205['model'];if(_0x335dad[_0xd371('0x2e')][_0xd371('0x38')]){_0x249d76[_0xd371('0x39')]=[{'all':!![]}];}_0x249d76=_[_0xd371('0x37')]({},_0x249d76,_0x335dad[_0xd371('0x3e')]);return db[_0xd371('0x26')][_0xd371('0x3f')](_0x249d76)[_0xd371('0x20')](handleEntityNotFound(_0x1b548d,null))[_0xd371('0x20')](respondWithResult(_0x1b548d,null))['catch'](handleError(_0x1b548d,null));};exports[_0xd371('0x40')]=function(_0x58a610,_0x31429c){return db[_0xd371('0x26')][_0xd371('0x40')](_0x58a610[_0xd371('0x41')],{})[_0xd371('0x20')](respondWithResult(_0x31429c,0xc9))[_0xd371('0x3b')](handleError(_0x31429c,null));};exports[_0xd371('0x1f')]=function(_0x32d638,_0x176cd4){if(_0x32d638[_0xd371('0x41')]['id']){delete _0x32d638[_0xd371('0x41')]['id'];}return db['SquareRecording'][_0xd371('0x3f')]({'where':{'id':_0x32d638[_0xd371('0x3d')]['id']}})[_0xd371('0x20')](handleEntityNotFound(_0x176cd4,null))[_0xd371('0x20')](saveUpdates(_0x32d638[_0xd371('0x41')],null))[_0xd371('0x20')](respondWithResult(_0x176cd4,null))['catch'](handleError(_0x176cd4,null));};exports['download']=function(_0x17d047,_0x39e440,_0x488d7a){var _0x4149a3=require(_0xd371('0x42'));var _0xa60d8=![];var _0x112f61={};if(_0x17d047[_0xd371('0x2e')][_0xd371('0x29')]&&_0x17d047['query'][_0xd371('0x29')]===_0xd371('0x43')){_0x112f61[_0xd371('0x43')]=_0x17d047['params']['id'];}else{_0x112f61['id']=_0x17d047[_0xd371('0x3d')]['id'];}return db[_0xd371('0x26')][_0xd371('0x3f')]({'where':_0x112f61,'attributes':['id',_0xd371('0x44'),_0xd371('0x45')],'raw':!![]})['then'](handleEntityNotFound(_0x39e440,null))['then'](function(_0x5d6a1b){if(_0x5d6a1b){var _0x4cefc1=_0x5d6a1b[_0xd371('0x44')];var _0x3ed84f=util[_0xd371('0x46')](_0xd371('0x47'),_0x4cefc1);if(fs[_0xd371('0x48')](_0x3ed84f)){_0xa60d8=!![];return _0x4149a3[_0xd371('0x49')](_0x3ed84f,_0x4cefc1,config['secrets']['recording'])['then'](function(){return _0x5d6a1b;});}return _0x5d6a1b;}})[_0xd371('0x20')](function(_0x5be092){if(_0x5be092){var _0x4fbdbf=_0x5be092[_0xd371('0x44')];if(!fs[_0xd371('0x48')](_0x4fbdbf)){throw new db[(_0xd371('0x4a'))][(_0xd371('0x4b'))](_0xd371('0x4c'));}if(_0x5be092[_0xd371('0x45')]){return _0x39e440[_0xd371('0x4d')](_0x4fbdbf,_0x5be092[_0xd371('0x45')]+path[_0xd371('0x4e')](_0x4fbdbf),function(){if(_0xa60d8){fs[_0xd371('0x4f')](_0x4fbdbf);}});}else{return _0x39e440['download'](_0x4fbdbf,function(_0x65a5bf){if(_0xa60d8){fs[_0xd371('0x4f')](_0x4fbdbf);}});}}})[_0xd371('0x3b')](function(_0x295717){if(_0x295717[_0xd371('0x50')]==='SquareRecording\x20not\x20found'){_0x39e440['status'](0x194)[_0xd371('0x51')]('Not\x20found');}else{return handleError(_0x39e440,null);}});};exports[_0xd371('0x21')]=function(_0x2cff87,_0x5727c5){return db[_0xd371('0x26')][_0xd371('0x3f')]({'where':{'id':_0x2cff87[_0xd371('0x3d')]['id']}})[_0xd371('0x20')](function(_0x43ad24){if(_['isNil'](_0x43ad24)){throw new ReferenceError(_0xd371('0x52'));}return _0x43ad24;})['then'](function(_0x4be541){var _0x430def=_0x4be541[_0xd371('0x44')];logger[_0xd371('0x53')](_0xd371('0x54'),_0x430def);if(!_[_0xd371('0x55')](_0x4be541[_0xd371('0x44')])&&fs[_0xd371('0x48')](_0x430def)){logger['info'](_0xd371('0x56')+_0x430def+_0xd371('0x57'));fs[_0xd371('0x58')](_0x430def);}_0x430def=_0x430def+_0xd371('0x59');if(!_[_0xd371('0x55')](_0x4be541[_0xd371('0x44')])&&fs[_0xd371('0x48')](_0x430def)){logger[_0xd371('0x53')]('File:\x20\x22'+_0x430def+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xd371('0x58')](_0x430def);}return _0x4be541;})[_0xd371('0x20')](function(_0xe13e43){if(!_0xe13e43)throw new InternalError();return _0xe13e43[_0xd371('0x21')]();})[_0xd371('0x20')](function(){_0x5727c5[_0xd371('0x16')](0xcc)['end']();})['catch'](handleError(_0x5727c5,null));};
\ No newline at end of file
+var _0x2dd9=['to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','save','update','then','error','name','map','SquareRecording','rawAttributes','type','key','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','findAll','rows','catch','show','keys','include','find','create','body','download','uniqueid','params','savePath','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x2dd9,0x182));var _0x92dd=function(_0xef150d,_0x2287a6){_0xef150d=_0xef150d-0x0;var _0x34eb21=_0x2dd9[_0xef150d];return _0x34eb21;};'use strict';var emlformat=require(_0x92dd('0x0'));var rimraf=require(_0x92dd('0x1'));var zipdir=require(_0x92dd('0x2'));var jsonpatch=require(_0x92dd('0x3'));var rp=require(_0x92dd('0x4'));var moment=require(_0x92dd('0x5'));var BPromise=require(_0x92dd('0x6'));var Mustache=require(_0x92dd('0x7'));var util=require('util');var path=require(_0x92dd('0x8'));var sox=require(_0x92dd('0x9'));var csv=require(_0x92dd('0xa'));var ejs=require(_0x92dd('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x92dd('0xc'));var squel=require(_0x92dd('0xd'));var crypto=require(_0x92dd('0xe'));var jsforce=require(_0x92dd('0xf'));var deskjs=require(_0x92dd('0x10'));var toCsv=require(_0x92dd('0xa'));var querystring=require(_0x92dd('0x11'));var Papa=require('papaparse');var Redis=require(_0x92dd('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x92dd('0x13'));var as=require(_0x92dd('0x14'));var hardwareService=require(_0x92dd('0x15'));var logger=require(_0x92dd('0x16'))(_0x92dd('0x17'));var utils=require('../../config/utils');var config=require(_0x92dd('0x18'));var licenseUtil=require(_0x92dd('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x584d55,_0x58eab8){_0x58eab8=_0x58eab8||0xcc;return function(_0xe80c72){if(_0xe80c72){return _0x584d55[_0x92dd('0x1a')](_0x58eab8);}return _0x584d55[_0x92dd('0x1b')](_0x58eab8)[_0x92dd('0x1c')]();};}function respondWithResult(_0x48f2cb,_0x441a0a){_0x441a0a=_0x441a0a||0xc8;return function(_0x39cc62){if(_0x39cc62){return _0x48f2cb['status'](_0x441a0a)[_0x92dd('0x1d')](_0x39cc62);}};}function respondWithFilteredResult(_0x3bd8f0,_0x95882f){return function(_0x31fef2){if(_0x31fef2){var _0x2a05da=typeof _0x95882f[_0x92dd('0x1e')]==='undefined'&&typeof _0x95882f[_0x92dd('0x1f')]===_0x92dd('0x20');var _0x41ae9d=_0x31fef2[_0x92dd('0x21')];var _0x356a6e=_0x2a05da?0x0:_0x95882f[_0x92dd('0x1e')];var _0x4e029d=_0x2a05da?_0x31fef2[_0x92dd('0x21')]:_0x95882f[_0x92dd('0x1e')]+_0x95882f['limit'];var _0x237105;if(_0x4e029d>=_0x41ae9d){_0x4e029d=_0x41ae9d;_0x237105=0xc8;}else{_0x237105=0xce;}_0x3bd8f0[_0x92dd('0x1b')](_0x237105);return _0x3bd8f0[_0x92dd('0x22')]('Content-Range',_0x356a6e+'-'+_0x4e029d+'/'+_0x41ae9d)[_0x92dd('0x1d')](_0x31fef2);}return null;};}function patchUpdates(_0x390fbc){return function(_0x1b29d0){try{jsonpatch[_0x92dd('0x23')](_0x1b29d0,_0x390fbc,!![]);}catch(_0x1b17e3){return BPromise['reject'](_0x1b17e3);}return _0x1b29d0[_0x92dd('0x24')]();};}function saveUpdates(_0x215569,_0x19f0bf){return function(_0x53349b){if(_0x53349b){return _0x53349b[_0x92dd('0x25')](_0x215569)['then'](function(_0x3314c7){return _0x3314c7;});}return null;};}function removeEntity(_0x4a1813,_0x362392){return function(_0xae8d7){if(_0xae8d7){return _0xae8d7['destroy']()[_0x92dd('0x26')](function(){_0x4a1813['status'](0xcc)[_0x92dd('0x1c')]();});}};}function handleEntityNotFound(_0x29a86d,_0x32a30d){return function(_0x505325){if(!_0x505325){_0x29a86d[_0x92dd('0x1a')](0x194);}return _0x505325;};}function handleError(_0x199c2a,_0xffd265){_0xffd265=_0xffd265||0x1f4;return function(_0x1fb64b){logger[_0x92dd('0x27')](_0x1fb64b['stack']);if(_0x1fb64b[_0x92dd('0x28')]){delete _0x1fb64b[_0x92dd('0x28')];}_0x199c2a[_0x92dd('0x1b')](_0xffd265)['send'](_0x1fb64b);};}exports['index']=function(_0x4b89e3,_0x3efd9b){var _0x260006={},_0x373c41={},_0x3b6ad8={'count':0x0,'rows':[]};var _0x2f5849=_[_0x92dd('0x29')](db[_0x92dd('0x2a')][_0x92dd('0x2b')],function(_0x3b31a1){return{'name':_0x3b31a1['fieldName'],'type':_0x3b31a1[_0x92dd('0x2c')][_0x92dd('0x2d')]};});_0x373c41['model']=_[_0x92dd('0x29')](_0x2f5849,'name');_0x373c41[_0x92dd('0x2e')]=_['keys'](_0x4b89e3[_0x92dd('0x2e')]);_0x373c41['filters']=_[_0x92dd('0x2f')](_0x373c41['model'],_0x373c41[_0x92dd('0x2e')]);_0x260006[_0x92dd('0x30')]=_[_0x92dd('0x2f')](_0x373c41[_0x92dd('0x31')],qs[_0x92dd('0x32')](_0x4b89e3[_0x92dd('0x2e')][_0x92dd('0x32')]));_0x260006['attributes']=_0x260006[_0x92dd('0x30')][_0x92dd('0x33')]?_0x260006[_0x92dd('0x30')]:_0x373c41[_0x92dd('0x31')];if(!_0x4b89e3[_0x92dd('0x2e')][_0x92dd('0x34')](_0x92dd('0x35'))){_0x260006['limit']=qs[_0x92dd('0x1f')](_0x4b89e3[_0x92dd('0x2e')][_0x92dd('0x1f')]);_0x260006[_0x92dd('0x1e')]=qs[_0x92dd('0x1e')](_0x4b89e3['query'][_0x92dd('0x1e')]);}_0x260006[_0x92dd('0x36')]=qs[_0x92dd('0x37')](_0x4b89e3[_0x92dd('0x2e')]['sort']);_0x260006[_0x92dd('0x38')]=qs[_0x92dd('0x39')](_[_0x92dd('0x3a')](_0x4b89e3[_0x92dd('0x2e')],_0x373c41['filters']),_0x2f5849);if(_0x4b89e3[_0x92dd('0x2e')][_0x92dd('0x3b')]){_0x260006[_0x92dd('0x38')]=_[_0x92dd('0x3c')](_0x260006[_0x92dd('0x38')],{'$or':_[_0x92dd('0x29')](_0x2f5849,function(_0x11e6bd){if(_0x11e6bd[_0x92dd('0x2c')]!=='VIRTUAL'){var _0x68b08={};_0x68b08[_0x11e6bd[_0x92dd('0x28')]]={'$like':'%'+_0x4b89e3[_0x92dd('0x2e')][_0x92dd('0x3b')]+'%'};return _0x68b08;}})});}_0x260006=_['merge']({},_0x260006,_0x4b89e3[_0x92dd('0x3d')]);var _0x292690={'where':_0x260006[_0x92dd('0x38')]};return db[_0x92dd('0x2a')][_0x92dd('0x21')](_0x292690)[_0x92dd('0x26')](function(_0x2cec40){_0x3b6ad8[_0x92dd('0x21')]=_0x2cec40;if(_0x4b89e3['query'][_0x92dd('0x3e')]){_0x260006['include']=[{'all':!![]}];}return db[_0x92dd('0x2a')][_0x92dd('0x3f')](_0x260006);})['then'](function(_0x1bf8d5){_0x3b6ad8[_0x92dd('0x40')]=_0x1bf8d5;return _0x3b6ad8;})[_0x92dd('0x26')](respondWithFilteredResult(_0x3efd9b,_0x260006))[_0x92dd('0x41')](handleError(_0x3efd9b,null));};exports[_0x92dd('0x42')]=function(_0x5cd686,_0x186b7b){var _0x32940f={'raw':!![],'where':{'id':_0x5cd686['params']['id']}},_0x4df661={};_0x4df661[_0x92dd('0x31')]=_[_0x92dd('0x43')](db['SquareRecording'][_0x92dd('0x2b')]);_0x4df661[_0x92dd('0x2e')]=_['keys'](_0x5cd686[_0x92dd('0x2e')]);_0x4df661[_0x92dd('0x39')]=_[_0x92dd('0x2f')](_0x4df661['model'],_0x4df661['query']);_0x32940f[_0x92dd('0x30')]=_['intersection'](_0x4df661[_0x92dd('0x31')],qs['fields'](_0x5cd686[_0x92dd('0x2e')][_0x92dd('0x32')]));_0x32940f[_0x92dd('0x30')]=_0x32940f[_0x92dd('0x30')][_0x92dd('0x33')]?_0x32940f[_0x92dd('0x30')]:_0x4df661[_0x92dd('0x31')];if(_0x5cd686[_0x92dd('0x2e')][_0x92dd('0x3e')]){_0x32940f[_0x92dd('0x44')]=[{'all':!![]}];}_0x32940f=_[_0x92dd('0x3c')]({},_0x32940f,_0x5cd686[_0x92dd('0x3d')]);return db['SquareRecording'][_0x92dd('0x45')](_0x32940f)[_0x92dd('0x26')](handleEntityNotFound(_0x186b7b,null))[_0x92dd('0x26')](respondWithResult(_0x186b7b,null))['catch'](handleError(_0x186b7b,null));};exports[_0x92dd('0x46')]=function(_0x10a1c3,_0x430b38){return db['SquareRecording']['create'](_0x10a1c3['body'],{})[_0x92dd('0x26')](respondWithResult(_0x430b38,0xc9))[_0x92dd('0x41')](handleError(_0x430b38,null));};exports[_0x92dd('0x25')]=function(_0x2d8b23,_0x2ce466){if(_0x2d8b23[_0x92dd('0x47')]['id']){delete _0x2d8b23[_0x92dd('0x47')]['id'];}return db[_0x92dd('0x2a')][_0x92dd('0x45')]({'where':{'id':_0x2d8b23['params']['id']}})[_0x92dd('0x26')](handleEntityNotFound(_0x2ce466,null))['then'](saveUpdates(_0x2d8b23['body'],null))[_0x92dd('0x26')](respondWithResult(_0x2ce466,null))['catch'](handleError(_0x2ce466,null));};exports[_0x92dd('0x48')]=function(_0x217671,_0x3e8b09,_0x3bfbd3){var _0x9b397d=require('../../components/encryptor');var _0x5e13f4=![];var _0x166615={};if(_0x217671['query']['type']&&_0x217671[_0x92dd('0x2e')][_0x92dd('0x2c')]===_0x92dd('0x49')){_0x166615[_0x92dd('0x49')]=_0x217671[_0x92dd('0x4a')]['id'];}else{_0x166615['id']=_0x217671[_0x92dd('0x4a')]['id'];}return db[_0x92dd('0x2a')][_0x92dd('0x45')]({'where':_0x166615,'attributes':['id',_0x92dd('0x4b'),'filename'],'raw':!![]})['then'](handleEntityNotFound(_0x3e8b09,null))[_0x92dd('0x26')](function(_0x5ed487){if(_0x5ed487){var _0x1d6112=_0x5ed487[_0x92dd('0x4b')];var _0x1c6f5a=util[_0x92dd('0x4c')](_0x92dd('0x4d'),_0x1d6112);if(fs[_0x92dd('0x4e')](_0x1c6f5a)){_0x5e13f4=!![];return _0x9b397d[_0x92dd('0x4f')](_0x1c6f5a,_0x1d6112,config[_0x92dd('0x50')][_0x92dd('0x51')])[_0x92dd('0x26')](function(){return _0x5ed487;});}return _0x5ed487;}})['then'](function(_0x2a8468){if(_0x2a8468){var _0x409893=_0x2a8468[_0x92dd('0x4b')];if(!fs[_0x92dd('0x4e')](_0x409893)){throw new db[(_0x92dd('0x52'))][(_0x92dd('0x53'))](_0x92dd('0x54'));}if(_0x2a8468[_0x92dd('0x55')]){return _0x3e8b09[_0x92dd('0x48')](_0x409893,_0x2a8468['filename']+path[_0x92dd('0x56')](_0x409893),function(){if(_0x5e13f4){fs[_0x92dd('0x57')](_0x409893);}});}else{return _0x3e8b09[_0x92dd('0x48')](_0x409893,function(_0x1bf0b9){if(_0x5e13f4){fs['unlink'](_0x409893);}});}}})[_0x92dd('0x41')](function(_0xe0ef6e){if(_0xe0ef6e[_0x92dd('0x58')]==='SquareRecording\x20not\x20found'){_0x3e8b09['status'](0x194)['send'](_0x92dd('0x59'));}else{return handleError(_0x3e8b09,null);}});};exports[_0x92dd('0x5a')]=function(_0x1bff0a,_0x51ebd9){return db[_0x92dd('0x2a')][_0x92dd('0x45')]({'where':{'id':_0x1bff0a[_0x92dd('0x4a')]['id']}})[_0x92dd('0x26')](function(_0x52bc2f){if(_[_0x92dd('0x5b')](_0x52bc2f)){throw new ReferenceError(_0x92dd('0x5c'));}return _0x52bc2f;})[_0x92dd('0x26')](function(_0x2e45eb){var _0x173fed=_0x2e45eb[_0x92dd('0x4b')];logger[_0x92dd('0x5d')](_0x92dd('0x5e'),_0x173fed);if(!_['isNil'](_0x2e45eb[_0x92dd('0x4b')])&&fs[_0x92dd('0x4e')](_0x173fed)){logger[_0x92dd('0x5d')](_0x92dd('0x5f')+_0x173fed+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x92dd('0x60')](_0x173fed);}_0x173fed=_0x173fed+_0x92dd('0x61');if(!_['isNil'](_0x2e45eb[_0x92dd('0x4b')])&&fs[_0x92dd('0x4e')](_0x173fed)){logger[_0x92dd('0x5d')](_0x92dd('0x5f')+_0x173fed+_0x92dd('0x62'));fs[_0x92dd('0x60')](_0x173fed);}return _0x2e45eb;})['then'](function(_0x5b66e4){if(!_0x5b66e4)throw new InternalError();return _0x5b66e4[_0x92dd('0x5a')]();})[_0x92dd('0x26')](function(){_0x51ebd9[_0x92dd('0x1b')](0xcc)['end']();})[_0x92dd('0x41')](handleError(_0x51ebd9,null));};
\ No newline at end of file
index 81dc28d..9070fa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4744=['define','SquareRecording','square_recordings','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareRecording.attributes'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x4744,0x107));var _0x4474=function(_0x2e161b,_0x53debc){_0x2e161b=_0x2e161b-0x0;var _0x3ab170=_0x4744[_0x2e161b];return _0x3ab170;};'use strict';var _=require(_0x4474('0x0'));var util=require(_0x4474('0x1'));var logger=require('../../config/logger')(_0x4474('0x2'));var moment=require(_0x4474('0x3'));var BPromise=require(_0x4474('0x4'));var rp=require(_0x4474('0x5'));var fs=require('fs');var path=require(_0x4474('0x6'));var rimraf=require(_0x4474('0x7'));var config=require(_0x4474('0x8'));var attributes=require(_0x4474('0x9'));module['exports']=function(_0x55df3c,_0x3042b9){return _0x55df3c[_0x4474('0xa')](_0x4474('0xb'),attributes,{'tableName':_0x4474('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa3fe=['lodash','../../config/logger','api','bluebird','request-promise','path','../../config/environment','exports','square_recordings'];(function(_0x40f351,_0x152dca){var _0x4cd285=function(_0x1311a9){while(--_0x1311a9){_0x40f351['push'](_0x40f351['shift']());}};_0x4cd285(++_0x152dca);}(_0xa3fe,0xd8));var _0xea3f=function(_0x32be86,_0x421ec3){_0x32be86=_0x32be86-0x0;var _0x11711d=_0xa3fe[_0x32be86];return _0x11711d;};'use strict';var _=require(_0xea3f('0x0'));var util=require('util');var logger=require(_0xea3f('0x1'))(_0xea3f('0x2'));var moment=require('moment');var BPromise=require(_0xea3f('0x3'));var rp=require(_0xea3f('0x4'));var fs=require('fs');var path=require(_0xea3f('0x5'));var rimraf=require('rimraf');var config=require(_0xea3f('0x6'));var attributes=require('./squareRecording.attributes');module[_0xea3f('0x7')]=function(_0x7ea359,_0x4150b2){return _0x7ea359['define']('SquareRecording',attributes,{'tableName':_0xea3f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 057b282..019909d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa9=['message','result','CreateSquareRecording','SquareRecording','create','body','options','raw','debug','catch','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x38f4da,_0x3a1583){var _0x497613=function(_0x563142){while(--_0x563142){_0x38f4da['push'](_0x38f4da['shift']());}};_0x497613(++_0x3a1583);}(_0x9fa9,0xb2));var _0x99fa=function(_0x34f350,_0x1750d5){_0x34f350=_0x34f350-0x0;var _0x45024e=_0x9fa9[_0x34f350];return _0x45024e;};'use strict';var _=require('lodash');var util=require(_0x99fa('0x0'));var moment=require(_0x99fa('0x1'));var BPromise=require('bluebird');var rs=require(_0x99fa('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x99fa('0x3'))['db'];var utils=require(_0x99fa('0x4'));var logger=require(_0x99fa('0x5'))(_0x99fa('0x6'));var config=require(_0x99fa('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x99fa('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x44062b,_0x120f74,_0x607b16){return new BPromise(function(_0x50be2d,_0x406f42){return client[_0x99fa('0x9')](_0x44062b,_0x607b16)[_0x99fa('0xa')](function(_0x41b8e2){logger[_0x99fa('0xb')](_0x99fa('0xc'),_0x120f74,_0x99fa('0xd'));logger['debug'](_0x99fa('0xe'),_0x120f74,'request\x20sent',JSON[_0x99fa('0xf')](_0x41b8e2));if(_0x41b8e2[_0x99fa('0x10')]){if(_0x41b8e2['error'][_0x99fa('0x11')]===0x1f4){logger[_0x99fa('0x10')]('SquareRecording,\x20%s,\x20%s',_0x120f74,_0x41b8e2['error']['message']);return _0x406f42(_0x41b8e2['error']['message']);}logger['error'](_0x99fa('0xc'),_0x120f74,_0x41b8e2[_0x99fa('0x10')][_0x99fa('0x12')]);return _0x50be2d(_0x41b8e2[_0x99fa('0x10')][_0x99fa('0x12')]);}else{logger[_0x99fa('0xb')](_0x99fa('0xc'),_0x120f74,_0x99fa('0xd'));_0x50be2d(_0x41b8e2[_0x99fa('0x13')][_0x99fa('0x12')]);}})['catch'](function(_0x476738){logger[_0x99fa('0x10')](_0x99fa('0xc'),_0x120f74,_0x476738);_0x406f42(_0x476738);});});}exports[_0x99fa('0x14')]=function(_0x2a4f9f){var _0x10a3e7=this;return new Promise(function(_0x4e8b5f,_0x5df8bc){return db[_0x99fa('0x15')][_0x99fa('0x16')](_0x2a4f9f[_0x99fa('0x17')],{'raw':_0x2a4f9f[_0x99fa('0x18')]?_0x2a4f9f['options'][_0x99fa('0x19')]===undefined?!![]:![]:!![]})[_0x99fa('0xa')](function(_0x59ffbc){logger[_0x99fa('0xb')](_0x99fa('0x14'),_0x2a4f9f);logger[_0x99fa('0x1a')](_0x99fa('0x14'),_0x2a4f9f,JSON[_0x99fa('0xf')](_0x59ffbc));_0x4e8b5f(_0x59ffbc);})[_0x99fa('0x1b')](function(_0x1d172f){logger[_0x99fa('0x10')](_0x99fa('0x14'),_0x1d172f[_0x99fa('0x12')],_0x2a4f9f);_0x5df8bc(_0x10a3e7['error'](0x1f4,_0x1d172f[_0x99fa('0x12')]));});});};
\ No newline at end of file
+var _0x34ec=['../../config/logger','jayson/promise','client','http','then','info','request\x20sent','stringify','error','code','SquareRecording,\x20%s,\x20%s','message','result','catch','CreateSquareRecording','SquareRecording','body','options','raw','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x529296,_0x1a6a23){var _0x1796bf=function(_0x3cae53){while(--_0x3cae53){_0x529296['push'](_0x529296['shift']());}};_0x1796bf(++_0x1a6a23);}(_0x34ec,0x173));var _0xc34e=function(_0x1f8c5d,_0xf46077){_0x1f8c5d=_0x1f8c5d-0x0;var _0x23fb07=_0x34ec[_0x1f8c5d];return _0x23fb07;};'use strict';var _=require(_0xc34e('0x0'));var util=require(_0xc34e('0x1'));var moment=require(_0xc34e('0x2'));var BPromise=require(_0xc34e('0x3'));var rs=require(_0xc34e('0x4'));var fs=require('fs');var Redis=require(_0xc34e('0x5'));var db=require(_0xc34e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc34e('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc34e('0x8'));var client=jayson[_0xc34e('0x9')][_0xc34e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5fe6e2,_0x5cde63,_0x41de27){return new BPromise(function(_0x2792b4,_0x4e3019){return client['request'](_0x5fe6e2,_0x41de27)[_0xc34e('0xb')](function(_0x10aa4){logger[_0xc34e('0xc')]('SquareRecording,\x20%s,\x20%s',_0x5cde63,_0xc34e('0xd'));logger['debug']('SquareRecording,\x20%s,\x20%s,\x20%s',_0x5cde63,_0xc34e('0xd'),JSON[_0xc34e('0xe')](_0x10aa4));if(_0x10aa4[_0xc34e('0xf')]){if(_0x10aa4['error'][_0xc34e('0x10')]===0x1f4){logger['error'](_0xc34e('0x11'),_0x5cde63,_0x10aa4['error'][_0xc34e('0x12')]);return _0x4e3019(_0x10aa4[_0xc34e('0xf')][_0xc34e('0x12')]);}logger[_0xc34e('0xf')](_0xc34e('0x11'),_0x5cde63,_0x10aa4[_0xc34e('0xf')][_0xc34e('0x12')]);return _0x2792b4(_0x10aa4['error'][_0xc34e('0x12')]);}else{logger[_0xc34e('0xc')](_0xc34e('0x11'),_0x5cde63,_0xc34e('0xd'));_0x2792b4(_0x10aa4[_0xc34e('0x13')]['message']);}})[_0xc34e('0x14')](function(_0x29f738){logger['error']('SquareRecording,\x20%s,\x20%s',_0x5cde63,_0x29f738);_0x4e3019(_0x29f738);});});}exports[_0xc34e('0x15')]=function(_0x135c25){var _0x114ef0=this;return new Promise(function(_0x48d6b1,_0x2dd409){return db[_0xc34e('0x16')]['create'](_0x135c25[_0xc34e('0x17')],{'raw':_0x135c25[_0xc34e('0x18')]?_0x135c25[_0xc34e('0x18')][_0xc34e('0x19')]===undefined?!![]:![]:!![]})[_0xc34e('0xb')](function(_0xd9b64f){logger['info']('CreateSquareRecording',_0x135c25);logger[_0xc34e('0x1a')]('CreateSquareRecording',_0x135c25,JSON[_0xc34e('0xe')](_0xd9b64f));_0x48d6b1(_0xd9b64f);})['catch'](function(_0x26f524){logger[_0xc34e('0xf')](_0xc34e('0x15'),_0x26f524[_0xc34e('0x12')],_0x135c25);_0x2dd409(_0x114ef0[_0xc34e('0xf')](0x1f4,_0x26f524[_0xc34e('0x12')]));});});};
\ No newline at end of file
index 2066a07..0ebc07a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x569caa,_0x5174ce){var _0x44cb5a=function(_0x456df4){while(--_0x456df4){_0x569caa['push'](_0x569caa['shift']());}};_0x44cb5a(++_0x5174ce);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x29efce,_0x39add5){var _0x4fe167=function(_0x5b5b33){while(--_0x5b5b33){_0x29efce['push'](_0x29efce['shift']());}};_0x4fe167(++_0x39add5);}(_0xbaf0,0x12a));var _0x0baf=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xbaf0[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
index f3a9604..cd1d9e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e94=['BOOLEAN','sequelize','exports','STRING','DATE'];(function(_0x1d654f,_0x9cf763){var _0x5416d5=function(_0x3d6085){while(--_0x3d6085){_0x1d654f['push'](_0x1d654f['shift']());}};_0x5416d5(++_0x9cf763);}(_0x0e94,0x88));var _0x40e9=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x0e94[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require(_0x40e9('0x0'));module[_0x40e9('0x1')]={'network':{'type':Sequelize[_0x40e9('0x2')]},'network_script':{'type':Sequelize[_0x40e9('0x2')]},'request':{'type':Sequelize[_0x40e9('0x2')]},'channel':{'type':Sequelize[_0x40e9('0x2')]},'language':{'type':Sequelize[_0x40e9('0x2')]},'type':{'type':Sequelize[_0x40e9('0x2')]},'uniqueid':{'type':Sequelize[_0x40e9('0x2')]},'version':{'type':Sequelize[_0x40e9('0x2')]},'callerid':{'type':Sequelize[_0x40e9('0x2')]},'calleridname':{'type':Sequelize[_0x40e9('0x2')]},'callingpres':{'type':Sequelize[_0x40e9('0x2')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x40e9('0x2')]},'callingtns':{'type':Sequelize[_0x40e9('0x2')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0x40e9('0x2')]},'context':{'type':Sequelize[_0x40e9('0x2')]},'extension':{'type':Sequelize[_0x40e9('0x2')]},'priority':{'type':Sequelize[_0x40e9('0x2')]},'enhanced':{'type':Sequelize[_0x40e9('0x2')]},'accountcode':{'type':Sequelize[_0x40e9('0x2')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0x40e9('0x2')]},'joinAt':{'type':Sequelize[_0x40e9('0x3')]},'leaveAt':{'type':Sequelize[_0x40e9('0x3')]},'bot':{'type':Sequelize[_0x40e9('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc5dc=['STRING','DATE'];(function(_0x54cb24,_0xa4c4b5){var _0x54496e=function(_0x50386b){while(--_0x50386b){_0x54cb24['push'](_0x54cb24['shift']());}};_0x54496e(++_0xa4c4b5);}(_0xc5dc,0xc2));var _0xcc5d=function(_0x4eb28f,_0x317417){_0x4eb28f=_0x4eb28f-0x0;var _0x1eaa29=_0xc5dc[_0x4eb28f];return _0x1eaa29;};'use strict';var Sequelize=require('sequelize');module['exports']={'network':{'type':Sequelize[_0xcc5d('0x0')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xcc5d('0x0')]},'language':{'type':Sequelize[_0xcc5d('0x0')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xcc5d('0x0')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xcc5d('0x0')]},'calleridname':{'type':Sequelize[_0xcc5d('0x0')]},'callingpres':{'type':Sequelize[_0xcc5d('0x0')]},'callingani2':{'type':Sequelize[_0xcc5d('0x0')]},'callington':{'type':Sequelize[_0xcc5d('0x0')]},'callingtns':{'type':Sequelize[_0xcc5d('0x0')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xcc5d('0x0')]},'extension':{'type':Sequelize[_0xcc5d('0x0')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xcc5d('0x0')]},'threadid':{'type':Sequelize[_0xcc5d('0x0')]},'project_name':{'type':Sequelize[_0xcc5d('0x0')]},'joinAt':{'type':Sequelize[_0xcc5d('0x1')]},'leaveAt':{'type':Sequelize[_0xcc5d('0x1')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index b51bfff..355510e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb69d=['sox','to-csv','fs-extra','lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','destroy','error','name','send','map','SquareReport','rawAttributes','fieldName','key','query','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','type','options','then','includeAll','include','rows','show','keys','intersection','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path'];(function(_0x1ded0f,_0x2c82a9){var _0x1ad47a=function(_0x5b745b){while(--_0x5b745b){_0x1ded0f['push'](_0x1ded0f['shift']());}};_0x1ad47a(++_0x2c82a9);}(_0xb69d,0x88));var _0xdb69=function(_0x4291bc,_0x153760){_0x4291bc=_0x4291bc-0x0;var _0x7167ed=_0xb69d[_0x4291bc];return _0x7167ed;};'use strict';var emlformat=require(_0xdb69('0x0'));var rimraf=require(_0xdb69('0x1'));var zipdir=require(_0xdb69('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xdb69('0x3'));var BPromise=require(_0xdb69('0x4'));var Mustache=require(_0xdb69('0x5'));var util=require(_0xdb69('0x6'));var path=require(_0xdb69('0x7'));var sox=require(_0xdb69('0x8'));var csv=require(_0xdb69('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdb69('0xa'));var _=require(_0xdb69('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xdb69('0xc'));var deskjs=require(_0xdb69('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xdb69('0xe'));var authService=require(_0xdb69('0xf'));var qs=require(_0xdb69('0x10'));var as=require(_0xdb69('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdb69('0x12'))(_0xdb69('0x13'));var utils=require(_0xdb69('0x14'));var config=require(_0xdb69('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xdb69('0x16'))['db'];function respondWithStatusCode(_0x1c1f0a,_0x3438b3){_0x3438b3=_0x3438b3||0xcc;return function(_0x3de89c){if(_0x3de89c){return _0x1c1f0a[_0xdb69('0x17')](_0x3438b3);}return _0x1c1f0a[_0xdb69('0x18')](_0x3438b3)[_0xdb69('0x19')]();};}function respondWithResult(_0x2baca1,_0x26cd0e){_0x26cd0e=_0x26cd0e||0xc8;return function(_0x18045f){if(_0x18045f){return _0x2baca1[_0xdb69('0x18')](_0x26cd0e)['json'](_0x18045f);}};}function respondWithFilteredResult(_0x21a762,_0x3cc2c7){return function(_0x29a70f){if(_0x29a70f){var _0x5ea643=typeof _0x3cc2c7[_0xdb69('0x1a')]===_0xdb69('0x1b')&&typeof _0x3cc2c7[_0xdb69('0x1c')]==='undefined';var _0x4f029d=_0x29a70f[_0xdb69('0x1d')];var _0x4418fc=_0x5ea643?0x0:_0x3cc2c7[_0xdb69('0x1a')];var _0xcaa7f5=_0x5ea643?_0x29a70f[_0xdb69('0x1d')]:_0x3cc2c7[_0xdb69('0x1a')]+_0x3cc2c7[_0xdb69('0x1c')];var _0x1caa43;if(_0xcaa7f5>=_0x4f029d){_0xcaa7f5=_0x4f029d;_0x1caa43=0xc8;}else{_0x1caa43=0xce;}_0x21a762[_0xdb69('0x18')](_0x1caa43);return _0x21a762[_0xdb69('0x1e')](_0xdb69('0x1f'),_0x4418fc+'-'+_0xcaa7f5+'/'+_0x4f029d)[_0xdb69('0x20')](_0x29a70f);}return null;};}function patchUpdates(_0x9db583){return function(_0x13dba9){try{jsonpatch[_0xdb69('0x21')](_0x13dba9,_0x9db583,!![]);}catch(_0x4955b3){return BPromise[_0xdb69('0x22')](_0x4955b3);}return _0x13dba9['save']();};}function saveUpdates(_0x557028,_0x497494){return function(_0x2e5e4e){if(_0x2e5e4e){return _0x2e5e4e[_0xdb69('0x23')](_0x557028)['then'](function(_0x25dd51){return _0x25dd51;});}return null;};}function removeEntity(_0x321035,_0x42a0af){return function(_0x1a1a17){if(_0x1a1a17){return _0x1a1a17[_0xdb69('0x24')]()['then'](function(){_0x321035[_0xdb69('0x18')](0xcc)[_0xdb69('0x19')]();});}};}function handleEntityNotFound(_0x2f3f2a,_0x660a0){return function(_0x3ff76e){if(!_0x3ff76e){_0x2f3f2a[_0xdb69('0x17')](0x194);}return _0x3ff76e;};}function handleError(_0x2b7190,_0x23c65e){_0x23c65e=_0x23c65e||0x1f4;return function(_0x499747){logger[_0xdb69('0x25')](_0x499747['stack']);if(_0x499747[_0xdb69('0x26')]){delete _0x499747[_0xdb69('0x26')];}_0x2b7190[_0xdb69('0x18')](_0x23c65e)[_0xdb69('0x27')](_0x499747);};}exports['index']=function(_0xcda215,_0x24f62a){var _0x148e06={},_0x16ab3b={},_0x229de8={'count':0x0,'rows':[]};var _0x3bf9bb=_[_0xdb69('0x28')](db[_0xdb69('0x29')][_0xdb69('0x2a')],function(_0x9f9a10){return{'name':_0x9f9a10[_0xdb69('0x2b')],'type':_0x9f9a10['type'][_0xdb69('0x2c')]};});_0x16ab3b['model']=_[_0xdb69('0x28')](_0x3bf9bb,_0xdb69('0x26'));_0x16ab3b[_0xdb69('0x2d')]=_['keys'](_0xcda215['query']);_0x16ab3b['filters']=_['intersection'](_0x16ab3b[_0xdb69('0x2e')],_0x16ab3b['query']);_0x148e06[_0xdb69('0x2f')]=_['intersection'](_0x16ab3b[_0xdb69('0x2e')],qs[_0xdb69('0x30')](_0xcda215[_0xdb69('0x2d')][_0xdb69('0x30')]));_0x148e06['attributes']=_0x148e06['attributes'][_0xdb69('0x31')]?_0x148e06[_0xdb69('0x2f')]:_0x16ab3b[_0xdb69('0x2e')];if(!_0xcda215['query'][_0xdb69('0x32')]('nolimit')){_0x148e06[_0xdb69('0x1c')]=qs[_0xdb69('0x1c')](_0xcda215[_0xdb69('0x2d')]['limit']);_0x148e06['offset']=qs[_0xdb69('0x1a')](_0xcda215[_0xdb69('0x2d')][_0xdb69('0x1a')]);}_0x148e06[_0xdb69('0x33')]=qs[_0xdb69('0x34')](_0xcda215[_0xdb69('0x2d')]['sort']);_0x148e06[_0xdb69('0x35')]=qs[_0xdb69('0x36')](_['pick'](_0xcda215[_0xdb69('0x2d')],_0x16ab3b['filters']),_0x3bf9bb);if(_0xcda215[_0xdb69('0x2d')][_0xdb69('0x37')]){_0x148e06[_0xdb69('0x35')]=_[_0xdb69('0x38')](_0x148e06[_0xdb69('0x35')],{'$or':_[_0xdb69('0x28')](_0x3bf9bb,function(_0x3b6455){if(_0x3b6455[_0xdb69('0x39')]!=='VIRTUAL'){var _0x4ae5fc={};_0x4ae5fc[_0x3b6455['name']]={'$like':'%'+_0xcda215[_0xdb69('0x2d')][_0xdb69('0x37')]+'%'};return _0x4ae5fc;}})});}_0x148e06=_[_0xdb69('0x38')]({},_0x148e06,_0xcda215[_0xdb69('0x3a')]);var _0x5a5a5={'where':_0x148e06[_0xdb69('0x35')]};return db[_0xdb69('0x29')][_0xdb69('0x1d')](_0x5a5a5)[_0xdb69('0x3b')](function(_0x31d0a0){_0x229de8[_0xdb69('0x1d')]=_0x31d0a0;if(_0xcda215[_0xdb69('0x2d')][_0xdb69('0x3c')]){_0x148e06[_0xdb69('0x3d')]=[{'all':!![]}];}return db[_0xdb69('0x29')]['findAll'](_0x148e06);})[_0xdb69('0x3b')](function(_0x379275){_0x229de8[_0xdb69('0x3e')]=_0x379275;return _0x229de8;})[_0xdb69('0x3b')](respondWithFilteredResult(_0x24f62a,_0x148e06))['catch'](handleError(_0x24f62a,null));};exports[_0xdb69('0x3f')]=function(_0x1324aa,_0x1c784f){var _0x1cb9f0={'raw':!![],'where':{'id':_0x1324aa['params']['id']}},_0x57d4ea={};_0x57d4ea[_0xdb69('0x2e')]=_[_0xdb69('0x40')](db['SquareReport'][_0xdb69('0x2a')]);_0x57d4ea[_0xdb69('0x2d')]=_[_0xdb69('0x40')](_0x1324aa[_0xdb69('0x2d')]);_0x57d4ea[_0xdb69('0x36')]=_['intersection'](_0x57d4ea['model'],_0x57d4ea[_0xdb69('0x2d')]);_0x1cb9f0[_0xdb69('0x2f')]=_[_0xdb69('0x41')](_0x57d4ea['model'],qs['fields'](_0x1324aa[_0xdb69('0x2d')][_0xdb69('0x30')]));_0x1cb9f0[_0xdb69('0x2f')]=_0x1cb9f0[_0xdb69('0x2f')]['length']?_0x1cb9f0[_0xdb69('0x2f')]:_0x57d4ea[_0xdb69('0x2e')];if(_0x1324aa[_0xdb69('0x2d')][_0xdb69('0x3c')]){_0x1cb9f0[_0xdb69('0x3d')]=[{'all':!![]}];}_0x1cb9f0=_[_0xdb69('0x38')]({},_0x1cb9f0,_0x1324aa[_0xdb69('0x3a')]);return db[_0xdb69('0x29')][_0xdb69('0x42')](_0x1cb9f0)[_0xdb69('0x3b')](handleEntityNotFound(_0x1c784f,null))['then'](respondWithResult(_0x1c784f,null))['catch'](handleError(_0x1c784f,null));};exports[_0xdb69('0x43')]=function(_0x34519f,_0x576f8c){return db[_0xdb69('0x29')][_0xdb69('0x43')](_0x34519f['body'],{})[_0xdb69('0x3b')](respondWithResult(_0x576f8c,0xc9))[_0xdb69('0x44')](handleError(_0x576f8c,null));};exports[_0xdb69('0x23')]=function(_0xf6111e,_0x442492){if(_0xf6111e[_0xdb69('0x45')]['id']){delete _0xf6111e[_0xdb69('0x45')]['id'];}return db['SquareReport']['find']({'where':{'id':_0xf6111e[_0xdb69('0x46')]['id']}})[_0xdb69('0x3b')](handleEntityNotFound(_0x442492,null))[_0xdb69('0x3b')](saveUpdates(_0xf6111e['body'],null))['then'](respondWithResult(_0x442492,null))[_0xdb69('0x44')](handleError(_0x442492,null));};exports[_0xdb69('0x24')]=function(_0x36336e,_0x28b1ce){return db[_0xdb69('0x29')][_0xdb69('0x42')]({'where':{'id':_0x36336e[_0xdb69('0x46')]['id']}})[_0xdb69('0x3b')](handleEntityNotFound(_0x28b1ce,null))[_0xdb69('0x3b')](removeEntity(_0x28b1ce,null))[_0xdb69('0x44')](handleError(_0x28b1ce,null));};exports['describe']=function(_0x52fa1b,_0x27e707){return db[_0xdb69('0x29')][_0xdb69('0x47')]()[_0xdb69('0x3b')](respondWithResult(_0x27e707,null))['catch'](handleError(_0x27e707,null));};
\ No newline at end of file
+var _0xd397=['catch','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','options','SquareReport','includeAll','findAll','rows','show','params','length','find'];(function(_0x382a00,_0x38a9f6){var _0x5df870=function(_0x3e8557){while(--_0x3e8557){_0x382a00['push'](_0x382a00['shift']());}};_0x5df870(++_0x38a9f6);}(_0xd397,0x1c6));var _0x7d39=function(_0x3561a5,_0x382ed1){_0x3561a5=_0x3561a5-0x0;var _0x4612cb=_0xd397[_0x3561a5];return _0x4612cb;};'use strict';var emlformat=require(_0x7d39('0x0'));var rimraf=require(_0x7d39('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7d39('0x2'));var rp=require(_0x7d39('0x3'));var moment=require(_0x7d39('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7d39('0x5'));var util=require(_0x7d39('0x6'));var path=require(_0x7d39('0x7'));var sox=require(_0x7d39('0x8'));var csv=require(_0x7d39('0x9'));var ejs=require(_0x7d39('0xa'));var fs=require('fs');var fs_extra=require(_0x7d39('0xb'));var _=require(_0x7d39('0xc'));var squel=require('squel');var crypto=require(_0x7d39('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7d39('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7d39('0xf'));var Papa=require(_0x7d39('0x10'));var Redis=require(_0x7d39('0x11'));var authService=require(_0x7d39('0x12'));var qs=require(_0x7d39('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7d39('0x14'))(_0x7d39('0x15'));var utils=require(_0x7d39('0x16'));var config=require(_0x7d39('0x17'));var licenseUtil=require(_0x7d39('0x18'));var db=require(_0x7d39('0x19'))['db'];function respondWithStatusCode(_0x2f8ac7,_0x486d6a){_0x486d6a=_0x486d6a||0xcc;return function(_0x4f9c08){if(_0x4f9c08){return _0x2f8ac7['sendStatus'](_0x486d6a);}return _0x2f8ac7[_0x7d39('0x1a')](_0x486d6a)[_0x7d39('0x1b')]();};}function respondWithResult(_0x29917c,_0xb212a9){_0xb212a9=_0xb212a9||0xc8;return function(_0x2c15b5){if(_0x2c15b5){return _0x29917c[_0x7d39('0x1a')](_0xb212a9)[_0x7d39('0x1c')](_0x2c15b5);}};}function respondWithFilteredResult(_0x3d51e5,_0x1e3a5e){return function(_0x371174){if(_0x371174){var _0x5dd215=typeof _0x1e3a5e[_0x7d39('0x1d')]===_0x7d39('0x1e')&&typeof _0x1e3a5e[_0x7d39('0x1f')]===_0x7d39('0x1e');var _0x2430ba=_0x371174[_0x7d39('0x20')];var _0x34d3e3=_0x5dd215?0x0:_0x1e3a5e['offset'];var _0x20ba05=_0x5dd215?_0x371174[_0x7d39('0x20')]:_0x1e3a5e[_0x7d39('0x1d')]+_0x1e3a5e[_0x7d39('0x1f')];var _0x261b70;if(_0x20ba05>=_0x2430ba){_0x20ba05=_0x2430ba;_0x261b70=0xc8;}else{_0x261b70=0xce;}_0x3d51e5[_0x7d39('0x1a')](_0x261b70);return _0x3d51e5[_0x7d39('0x21')]('Content-Range',_0x34d3e3+'-'+_0x20ba05+'/'+_0x2430ba)[_0x7d39('0x1c')](_0x371174);}return null;};}function patchUpdates(_0x163dc8){return function(_0x25e007){try{jsonpatch[_0x7d39('0x22')](_0x25e007,_0x163dc8,!![]);}catch(_0x229e02){return BPromise[_0x7d39('0x23')](_0x229e02);}return _0x25e007[_0x7d39('0x24')]();};}function saveUpdates(_0x4b2b08,_0x1de55f){return function(_0x410153){if(_0x410153){return _0x410153[_0x7d39('0x25')](_0x4b2b08)[_0x7d39('0x26')](function(_0x4249dd){return _0x4249dd;});}return null;};}function removeEntity(_0x3addd6,_0x409ae3){return function(_0x146a4a){if(_0x146a4a){return _0x146a4a[_0x7d39('0x27')]()[_0x7d39('0x26')](function(){_0x3addd6[_0x7d39('0x1a')](0xcc)[_0x7d39('0x1b')]();});}};}function handleEntityNotFound(_0x363708,_0x277116){return function(_0x41fc98){if(!_0x41fc98){_0x363708[_0x7d39('0x28')](0x194);}return _0x41fc98;};}function handleError(_0x30b1e1,_0x25f269){_0x25f269=_0x25f269||0x1f4;return function(_0x489e66){logger['error'](_0x489e66[_0x7d39('0x29')]);if(_0x489e66['name']){delete _0x489e66[_0x7d39('0x2a')];}_0x30b1e1[_0x7d39('0x1a')](_0x25f269)[_0x7d39('0x2b')](_0x489e66);};}exports[_0x7d39('0x2c')]=function(_0x2cd01f,_0x56af4c){var _0x10b108={},_0x157fb2={},_0x2a2f1a={'count':0x0,'rows':[]};var _0x8a1aa9=_[_0x7d39('0x2d')](db['SquareReport'][_0x7d39('0x2e')],function(_0x3b7f89){return{'name':_0x3b7f89[_0x7d39('0x2f')],'type':_0x3b7f89[_0x7d39('0x30')]['key']};});_0x157fb2[_0x7d39('0x31')]=_[_0x7d39('0x2d')](_0x8a1aa9,_0x7d39('0x2a'));_0x157fb2['query']=_[_0x7d39('0x32')](_0x2cd01f[_0x7d39('0x33')]);_0x157fb2[_0x7d39('0x34')]=_[_0x7d39('0x35')](_0x157fb2['model'],_0x157fb2[_0x7d39('0x33')]);_0x10b108[_0x7d39('0x36')]=_[_0x7d39('0x35')](_0x157fb2[_0x7d39('0x31')],qs[_0x7d39('0x37')](_0x2cd01f[_0x7d39('0x33')]['fields']));_0x10b108['attributes']=_0x10b108[_0x7d39('0x36')]['length']?_0x10b108[_0x7d39('0x36')]:_0x157fb2[_0x7d39('0x31')];if(!_0x2cd01f[_0x7d39('0x33')][_0x7d39('0x38')](_0x7d39('0x39'))){_0x10b108[_0x7d39('0x1f')]=qs[_0x7d39('0x1f')](_0x2cd01f[_0x7d39('0x33')][_0x7d39('0x1f')]);_0x10b108['offset']=qs['offset'](_0x2cd01f[_0x7d39('0x33')]['offset']);}_0x10b108['order']=qs[_0x7d39('0x3a')](_0x2cd01f[_0x7d39('0x33')]['sort']);_0x10b108[_0x7d39('0x3b')]=qs[_0x7d39('0x34')](_['pick'](_0x2cd01f[_0x7d39('0x33')],_0x157fb2[_0x7d39('0x34')]),_0x8a1aa9);if(_0x2cd01f[_0x7d39('0x33')]['filter']){_0x10b108['where']=_['merge'](_0x10b108[_0x7d39('0x3b')],{'$or':_[_0x7d39('0x2d')](_0x8a1aa9,function(_0x18a97c){if(_0x18a97c[_0x7d39('0x30')]!=='VIRTUAL'){var _0x2ff4ac={};_0x2ff4ac[_0x18a97c[_0x7d39('0x2a')]]={'$like':'%'+_0x2cd01f['query'][_0x7d39('0x3c')]+'%'};return _0x2ff4ac;}})});}_0x10b108=_[_0x7d39('0x3d')]({},_0x10b108,_0x2cd01f[_0x7d39('0x3e')]);var _0x2f228f={'where':_0x10b108[_0x7d39('0x3b')]};return db[_0x7d39('0x3f')][_0x7d39('0x20')](_0x2f228f)[_0x7d39('0x26')](function(_0x3e906b){_0x2a2f1a['count']=_0x3e906b;if(_0x2cd01f[_0x7d39('0x33')][_0x7d39('0x40')]){_0x10b108['include']=[{'all':!![]}];}return db[_0x7d39('0x3f')][_0x7d39('0x41')](_0x10b108);})[_0x7d39('0x26')](function(_0x54e228){_0x2a2f1a[_0x7d39('0x42')]=_0x54e228;return _0x2a2f1a;})[_0x7d39('0x26')](respondWithFilteredResult(_0x56af4c,_0x10b108))['catch'](handleError(_0x56af4c,null));};exports[_0x7d39('0x43')]=function(_0x21e604,_0x20cab7){var _0x5f07aa={'raw':!![],'where':{'id':_0x21e604[_0x7d39('0x44')]['id']}},_0x57cb55={};_0x57cb55['model']=_['keys'](db[_0x7d39('0x3f')][_0x7d39('0x2e')]);_0x57cb55[_0x7d39('0x33')]=_[_0x7d39('0x32')](_0x21e604['query']);_0x57cb55[_0x7d39('0x34')]=_[_0x7d39('0x35')](_0x57cb55['model'],_0x57cb55['query']);_0x5f07aa['attributes']=_['intersection'](_0x57cb55[_0x7d39('0x31')],qs[_0x7d39('0x37')](_0x21e604['query'][_0x7d39('0x37')]));_0x5f07aa[_0x7d39('0x36')]=_0x5f07aa[_0x7d39('0x36')][_0x7d39('0x45')]?_0x5f07aa[_0x7d39('0x36')]:_0x57cb55[_0x7d39('0x31')];if(_0x21e604['query'][_0x7d39('0x40')]){_0x5f07aa['include']=[{'all':!![]}];}_0x5f07aa=_[_0x7d39('0x3d')]({},_0x5f07aa,_0x21e604['options']);return db[_0x7d39('0x3f')][_0x7d39('0x46')](_0x5f07aa)[_0x7d39('0x26')](handleEntityNotFound(_0x20cab7,null))[_0x7d39('0x26')](respondWithResult(_0x20cab7,null))[_0x7d39('0x47')](handleError(_0x20cab7,null));};exports[_0x7d39('0x48')]=function(_0x4100bb,_0x407210){return db[_0x7d39('0x3f')][_0x7d39('0x48')](_0x4100bb[_0x7d39('0x49')],{})['then'](respondWithResult(_0x407210,0xc9))[_0x7d39('0x47')](handleError(_0x407210,null));};exports[_0x7d39('0x25')]=function(_0x12a18a,_0x41ed1d){if(_0x12a18a[_0x7d39('0x49')]['id']){delete _0x12a18a['body']['id'];}return db['SquareReport']['find']({'where':{'id':_0x12a18a[_0x7d39('0x44')]['id']}})[_0x7d39('0x26')](handleEntityNotFound(_0x41ed1d,null))['then'](saveUpdates(_0x12a18a[_0x7d39('0x49')],null))[_0x7d39('0x26')](respondWithResult(_0x41ed1d,null))[_0x7d39('0x47')](handleError(_0x41ed1d,null));};exports[_0x7d39('0x27')]=function(_0x39f38d,_0x49ddf1){return db[_0x7d39('0x3f')]['find']({'where':{'id':_0x39f38d[_0x7d39('0x44')]['id']}})[_0x7d39('0x26')](handleEntityNotFound(_0x49ddf1,null))[_0x7d39('0x26')](removeEntity(_0x49ddf1,null))[_0x7d39('0x47')](handleError(_0x49ddf1,null));};exports[_0x7d39('0x4a')]=function(_0x33790f,_0x4b7e89){return db[_0x7d39('0x3f')][_0x7d39('0x4a')]()[_0x7d39('0x26')](respondWithResult(_0x4b7e89,null))[_0x7d39('0x47')](handleError(_0x4b7e89,null));};
\ No newline at end of file
index 392e757..78d5fdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa29=['leaveAt','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','project_name'];(function(_0x3eafcb,_0x50f5da){var _0x163eba=function(_0x462e44){while(--_0x462e44){_0x3eafcb['push'](_0x3eafcb['shift']());}};_0x163eba(++_0x50f5da);}(_0xfa29,0x181));var _0x9fa2=function(_0x5aa72c,_0x1028d3){_0x5aa72c=_0x5aa72c-0x0;var _0x2474d3=_0xfa29[_0x5aa72c];return _0x2474d3;};'use strict';var _=require(_0x9fa2('0x0'));var util=require(_0x9fa2('0x1'));var logger=require(_0x9fa2('0x2'))(_0x9fa2('0x3'));var moment=require(_0x9fa2('0x4'));var BPromise=require(_0x9fa2('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9fa2('0x6'));var rimraf=require(_0x9fa2('0x7'));var config=require('../../config/environment');var attributes=require(_0x9fa2('0x8'));module[_0x9fa2('0x9')]=function(_0x17d01e,_0x556096){return _0x17d01e[_0x9fa2('0xa')](_0x9fa2('0xb'),attributes,{'tableName':_0x9fa2('0xc'),'paranoid':![],'indexes':[{'name':_0x9fa2('0xd'),'fields':['uniqueid',_0x9fa2('0xe')]},{'name':_0x9fa2('0xf'),'fields':[_0x9fa2('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x317c=['leaveAt','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./squareReport.attributes','define','SquareReport','report_square','uid_pname'];(function(_0x221eb2,_0x2d65bc){var _0x3760ee=function(_0x3a88ee){while(--_0x3a88ee){_0x221eb2['push'](_0x221eb2['shift']());}};_0x3760ee(++_0x2d65bc);}(_0x317c,0x135));var _0xc317=function(_0x9ef8ff,_0x1d7578){_0x9ef8ff=_0x9ef8ff-0x0;var _0x43d4e1=_0x317c[_0x9ef8ff];return _0x43d4e1;};'use strict';var _=require(_0xc317('0x0'));var util=require(_0xc317('0x1'));var logger=require(_0xc317('0x2'))(_0xc317('0x3'));var moment=require(_0xc317('0x4'));var BPromise=require('bluebird');var rp=require(_0xc317('0x5'));var fs=require('fs');var path=require(_0xc317('0x6'));var rimraf=require(_0xc317('0x7'));var config=require('../../config/environment');var attributes=require(_0xc317('0x8'));module['exports']=function(_0x17115d,_0x437187){return _0x17115d[_0xc317('0x9')](_0xc317('0xa'),attributes,{'tableName':_0xc317('0xb'),'paranoid':![],'indexes':[{'name':_0xc317('0xc'),'fields':['uniqueid','project_name']},{'name':_0xc317('0xd'),'fields':[_0xc317('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index ea79d2a..68b427c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cb6=['CreateSquareReport','create','body','options','raw','debug','UpdateSquareReport','update','attributes','limit','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','SquareReport,\x20%s,\x20%s','request\x20sent','SquareReport,\x20%s,\x20%s,\x20%s','error','message','info'];(function(_0x44e487,_0x457420){var _0x347512=function(_0x1f6c38){while(--_0x1f6c38){_0x44e487['push'](_0x44e487['shift']());}};_0x347512(++_0x457420);}(_0x7cb6,0x88));var _0x67cb=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x7cb6[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x67cb('0x0'));var util=require(_0x67cb('0x1'));var moment=require(_0x67cb('0x2'));var BPromise=require(_0x67cb('0x3'));var rs=require(_0x67cb('0x4'));var fs=require('fs');var Redis=require(_0x67cb('0x5'));var db=require(_0x67cb('0x6'))['db'];var utils=require(_0x67cb('0x7'));var logger=require(_0x67cb('0x8'))(_0x67cb('0x9'));var config=require(_0x67cb('0xa'));var jayson=require(_0x67cb('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1892b8,_0xbf304,_0x60cabf){return new BPromise(function(_0x14ff50,_0x41e653){return client['request'](_0x1892b8,_0x60cabf)[_0x67cb('0xc')](function(_0x85f11b){logger['info'](_0x67cb('0xd'),_0xbf304,_0x67cb('0xe'));logger['debug'](_0x67cb('0xf'),_0xbf304,_0x67cb('0xe'),JSON['stringify'](_0x85f11b));if(_0x85f11b['error']){if(_0x85f11b[_0x67cb('0x10')]['code']===0x1f4){logger[_0x67cb('0x10')]('SquareReport,\x20%s,\x20%s',_0xbf304,_0x85f11b[_0x67cb('0x10')][_0x67cb('0x11')]);return _0x41e653(_0x85f11b['error'][_0x67cb('0x11')]);}logger['error'](_0x67cb('0xd'),_0xbf304,_0x85f11b['error'][_0x67cb('0x11')]);return _0x14ff50(_0x85f11b['error'][_0x67cb('0x11')]);}else{logger[_0x67cb('0x12')]('SquareReport,\x20%s,\x20%s',_0xbf304,_0x67cb('0xe'));_0x14ff50(_0x85f11b['result'][_0x67cb('0x11')]);}})['catch'](function(_0x4817b8){logger[_0x67cb('0x10')](_0x67cb('0xd'),_0xbf304,_0x4817b8);_0x41e653(_0x4817b8);});});}exports[_0x67cb('0x13')]=function(_0x50717c){var _0x2712ad=this;return new Promise(function(_0x161f43,_0x577e7d){return db['SquareReport'][_0x67cb('0x14')](_0x50717c[_0x67cb('0x15')],{'raw':_0x50717c[_0x67cb('0x16')]?_0x50717c['options'][_0x67cb('0x17')]===undefined?!![]:![]:!![]})[_0x67cb('0xc')](function(_0x23f1a3){logger['info'](_0x67cb('0x13'),_0x50717c);logger[_0x67cb('0x18')](_0x67cb('0x13'),_0x50717c,JSON['stringify'](_0x23f1a3));_0x161f43(_0x23f1a3);})['catch'](function(_0x3852c9){logger[_0x67cb('0x10')](_0x67cb('0x13'),_0x3852c9[_0x67cb('0x11')],_0x50717c);_0x577e7d(_0x2712ad[_0x67cb('0x10')](0x1f4,_0x3852c9[_0x67cb('0x11')]));});});};exports[_0x67cb('0x19')]=function(_0x25e692){var _0x371d8b=this;return new Promise(function(_0x1847d7,_0x244ec0){return db['SquareReport'][_0x67cb('0x1a')](_0x25e692[_0x67cb('0x15')],{'raw':_0x25e692[_0x67cb('0x16')]?_0x25e692[_0x67cb('0x16')][_0x67cb('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x25e692[_0x67cb('0x16')]?_0x25e692['options']['where']||null:null,'attributes':_0x25e692[_0x67cb('0x16')]?_0x25e692[_0x67cb('0x16')][_0x67cb('0x1b')]||null:null,'limit':_0x25e692['options']?_0x25e692['options'][_0x67cb('0x1c')]||null:null})[_0x67cb('0xc')](function(_0x35f1ff){logger['info']('UpdateSquareReport',_0x25e692);logger[_0x67cb('0x18')](_0x67cb('0x19'),_0x25e692,JSON[_0x67cb('0x1d')](_0x35f1ff));_0x1847d7(_0x35f1ff);})[_0x67cb('0x1e')](function(_0x2ddcc5){logger[_0x67cb('0x10')](_0x67cb('0x19'),_0x2ddcc5[_0x67cb('0x11')],_0x25e692);_0x244ec0(_0x371d8b[_0x67cb('0x10')](0x1f4,_0x2ddcc5[_0x67cb('0x11')]));});});};
\ No newline at end of file
+var _0xa5c6=['raw','info','UpdateSquareReport','body','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateSquareReport','create','options'];(function(_0x12e13a,_0x3f8461){var _0xf4cf3c=function(_0x54012f){while(--_0x54012f){_0x12e13a['push'](_0x12e13a['shift']());}};_0xf4cf3c(++_0x3f8461);}(_0xa5c6,0xff));var _0x6a5c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xa5c6[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6a5c('0x0'));var util=require(_0x6a5c('0x1'));var moment=require('moment');var BPromise=require(_0x6a5c('0x2'));var rs=require(_0x6a5c('0x3'));var fs=require('fs');var Redis=require(_0x6a5c('0x4'));var db=require(_0x6a5c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6a5c('0x6'))(_0x6a5c('0x7'));var config=require(_0x6a5c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6a5c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2c7b7b,_0x1edebb,_0x72462f){return new BPromise(function(_0x42eaf7,_0x171e2f){return client[_0x6a5c('0xa')](_0x2c7b7b,_0x72462f)[_0x6a5c('0xb')](function(_0x2159e0){logger['info'](_0x6a5c('0xc'),_0x1edebb,'request\x20sent');logger[_0x6a5c('0xd')](_0x6a5c('0xe'),_0x1edebb,_0x6a5c('0xf'),JSON[_0x6a5c('0x10')](_0x2159e0));if(_0x2159e0[_0x6a5c('0x11')]){if(_0x2159e0['error'][_0x6a5c('0x12')]===0x1f4){logger[_0x6a5c('0x11')](_0x6a5c('0xc'),_0x1edebb,_0x2159e0[_0x6a5c('0x11')][_0x6a5c('0x13')]);return _0x171e2f(_0x2159e0[_0x6a5c('0x11')][_0x6a5c('0x13')]);}logger[_0x6a5c('0x11')](_0x6a5c('0xc'),_0x1edebb,_0x2159e0['error']['message']);return _0x42eaf7(_0x2159e0['error']['message']);}else{logger['info'](_0x6a5c('0xc'),_0x1edebb,_0x6a5c('0xf'));_0x42eaf7(_0x2159e0['result']['message']);}})[_0x6a5c('0x14')](function(_0x53e5b7){logger[_0x6a5c('0x11')](_0x6a5c('0xc'),_0x1edebb,_0x53e5b7);_0x171e2f(_0x53e5b7);});});}exports[_0x6a5c('0x15')]=function(_0x1f07d2){var _0x17ffa3=this;return new Promise(function(_0x2028b9,_0x36b5c9){return db['SquareReport'][_0x6a5c('0x16')](_0x1f07d2['body'],{'raw':_0x1f07d2[_0x6a5c('0x17')]?_0x1f07d2[_0x6a5c('0x17')][_0x6a5c('0x18')]===undefined?!![]:![]:!![]})[_0x6a5c('0xb')](function(_0x16a150){logger[_0x6a5c('0x19')]('CreateSquareReport',_0x1f07d2);logger[_0x6a5c('0xd')](_0x6a5c('0x15'),_0x1f07d2,JSON[_0x6a5c('0x10')](_0x16a150));_0x2028b9(_0x16a150);})[_0x6a5c('0x14')](function(_0x519ec2){logger[_0x6a5c('0x11')](_0x6a5c('0x15'),_0x519ec2[_0x6a5c('0x13')],_0x1f07d2);_0x36b5c9(_0x17ffa3[_0x6a5c('0x11')](0x1f4,_0x519ec2['message']));});});};exports[_0x6a5c('0x1a')]=function(_0x471c78){var _0x4d6e65=this;return new Promise(function(_0x40774d,_0x3d299e){return db['SquareReport']['update'](_0x471c78[_0x6a5c('0x1b')],{'raw':_0x471c78[_0x6a5c('0x17')]?_0x471c78[_0x6a5c('0x17')][_0x6a5c('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x471c78[_0x6a5c('0x17')]?_0x471c78[_0x6a5c('0x17')][_0x6a5c('0x1c')]||null:null,'attributes':_0x471c78['options']?_0x471c78[_0x6a5c('0x17')][_0x6a5c('0x1d')]||null:null,'limit':_0x471c78[_0x6a5c('0x17')]?_0x471c78['options'][_0x6a5c('0x1e')]||null:null})[_0x6a5c('0xb')](function(_0xe1481f){logger[_0x6a5c('0x19')](_0x6a5c('0x1a'),_0x471c78);logger[_0x6a5c('0xd')](_0x6a5c('0x1a'),_0x471c78,JSON[_0x6a5c('0x10')](_0xe1481f));_0x40774d(_0xe1481f);})[_0x6a5c('0x14')](function(_0x3eabd8){logger[_0x6a5c('0x11')](_0x6a5c('0x1a'),_0x3eabd8[_0x6a5c('0x13')],_0x471c78);_0x3d299e(_0x4d6e65[_0x6a5c('0x11')](0x1f4,_0x3eabd8[_0x6a5c('0x13')]));});});};
\ No newline at end of file
index aa6d330..684137f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5363=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','describe','/:id','show','post','create','update','delete','destroy','multer','util','path','connect-timeout'];(function(_0x1057cb,_0x7b8162){var _0x7fbf7e=function(_0x5fa6a3){while(--_0x5fa6a3){_0x1057cb['push'](_0x1057cb['shift']());}};_0x7fbf7e(++_0x7b8162);}(_0x5363,0x12c));var _0x3536=function(_0x289686,_0x44e470){_0x289686=_0x289686-0x0;var _0x1b4f7a=_0x5363[_0x289686];return _0x1b4f7a;};'use strict';var multer=require(_0x3536('0x0'));var util=require(_0x3536('0x1'));var path=require(_0x3536('0x2'));var timeout=require(_0x3536('0x3'));var express=require(_0x3536('0x4'));var router=express[_0x3536('0x5')]();var fs_extra=require(_0x3536('0x6'));var auth=require(_0x3536('0x7'));var interaction=require(_0x3536('0x8'));var config=require('../../config/environment');var controller=require('./squareReportDetail.controller');router[_0x3536('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3536('0x9')]('/describe',auth[_0x3536('0xa')](),controller[_0x3536('0xb')]);router[_0x3536('0x9')](_0x3536('0xc'),auth[_0x3536('0xa')](),controller[_0x3536('0xd')]);router[_0x3536('0xe')]('/',auth['isAuthenticated'](),controller[_0x3536('0xf')]);router['put'](_0x3536('0xc'),auth[_0x3536('0xa')](),controller[_0x3536('0x10')]);router[_0x3536('0x11')](_0x3536('0xc'),auth[_0x3536('0xa')](),controller[_0x3536('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x8626=['show','post','create','put','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','describe','/:id'];(function(_0x4340f1,_0x59a0a1){var _0xef7e7f=function(_0x573f3e){while(--_0x573f3e){_0x4340f1['push'](_0x4340f1['shift']());}};_0xef7e7f(++_0x59a0a1);}(_0x8626,0x99));var _0x6862=function(_0x441373,_0x191d91){_0x441373=_0x441373-0x0;var _0x154122=_0x8626[_0x441373];return _0x154122;};'use strict';var multer=require(_0x6862('0x0'));var util=require(_0x6862('0x1'));var path=require(_0x6862('0x2'));var timeout=require(_0x6862('0x3'));var express=require(_0x6862('0x4'));var router=express['Router']();var fs_extra=require(_0x6862('0x5'));var auth=require(_0x6862('0x6'));var interaction=require(_0x6862('0x7'));var config=require(_0x6862('0x8'));var controller=require(_0x6862('0x9'));router[_0x6862('0xa')]('/',auth[_0x6862('0xb')](),controller[_0x6862('0xc')]);router[_0x6862('0xa')]('/describe',auth[_0x6862('0xb')](),controller[_0x6862('0xd')]);router[_0x6862('0xa')](_0x6862('0xe'),auth[_0x6862('0xb')](),controller[_0x6862('0xf')]);router[_0x6862('0x10')]('/',auth[_0x6862('0xb')](),controller[_0x6862('0x11')]);router[_0x6862('0x12')](_0x6862('0xe'),auth[_0x6862('0xb')](),controller['update']);router['delete'](_0x6862('0xe'),auth['isAuthenticated'](),controller[_0x6862('0x13')]);module[_0x6862('0x14')]=router;
\ No newline at end of file
index 32c54c8..956a730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x344d=['sequelize','exports','STRING','TEXT'];(function(_0x2560b1,_0xb7ed4b){var _0x4fd7f8=function(_0x10062d){while(--_0x10062d){_0x2560b1['push'](_0x2560b1['shift']());}};_0x4fd7f8(++_0xb7ed4b);}(_0x344d,0x18c));var _0xd344=function(_0x2937ea,_0x43a2a9){_0x2937ea=_0x2937ea-0x0;var _0x40b81b=_0x344d[_0x2937ea];return _0x40b81b;};'use strict';var Sequelize=require(_0xd344('0x0'));module[_0xd344('0x1')]={'uniqueid':{'type':Sequelize[_0xd344('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0xd344('0x3')]},'project_name':{'type':Sequelize[_0xd344('0x2')]},'callerid':{'type':Sequelize[_0xd344('0x2')]}};
\ No newline at end of file
+var _0xcc88=['STRING','TEXT','sequelize'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xcc88,0x1c4));var _0x8cc8=function(_0xdf18c,_0x5b888c){_0xdf18c=_0xdf18c-0x0;var _0x25c19e=_0xcc88[_0xdf18c];return _0x25c19e;};'use strict';var Sequelize=require(_0x8cc8('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x8cc8('0x1')]},'node':{'type':Sequelize[_0x8cc8('0x1')]},'application':{'type':Sequelize[_0x8cc8('0x1')]},'data':{'type':Sequelize[_0x8cc8('0x2')]},'project_name':{'type':Sequelize[_0x8cc8('0x1')]},'callerid':{'type':Sequelize[_0x8cc8('0x1')]}};
\ No newline at end of file
index 24834d9..4b8ca46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb389=['then','error','stack','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update'];(function(_0x413221,_0x6a775e){var _0x407264=function(_0xeba6d7){while(--_0xeba6d7){_0x413221['push'](_0x413221['shift']());}};_0x407264(++_0x6a775e);}(_0xb389,0x1a9));var _0x9b38=function(_0x4702ee,_0xaf6a45){_0x4702ee=_0x4702ee-0x0;var _0x62ca7d=_0xb389[_0x4702ee];return _0x62ca7d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9b38('0x0'));var zipdir=require(_0x9b38('0x1'));var jsonpatch=require(_0x9b38('0x2'));var rp=require('request-promise');var moment=require(_0x9b38('0x3'));var BPromise=require(_0x9b38('0x4'));var Mustache=require(_0x9b38('0x5'));var util=require('util');var path=require(_0x9b38('0x6'));var sox=require(_0x9b38('0x7'));var csv=require(_0x9b38('0x8'));var ejs=require(_0x9b38('0x9'));var fs=require('fs');var fs_extra=require(_0x9b38('0xa'));var _=require(_0x9b38('0xb'));var squel=require(_0x9b38('0xc'));var crypto=require('crypto');var jsforce=require(_0x9b38('0xd'));var deskjs=require(_0x9b38('0xe'));var toCsv=require(_0x9b38('0x8'));var querystring=require(_0x9b38('0xf'));var Papa=require(_0x9b38('0x10'));var Redis=require(_0x9b38('0x11'));var authService=require(_0x9b38('0x12'));var qs=require(_0x9b38('0x13'));var as=require(_0x9b38('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9b38('0x15'))('api');var utils=require(_0x9b38('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x9b38('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b898a,_0x4b9201){_0x4b9201=_0x4b9201||0xcc;return function(_0x19f638){if(_0x19f638){return _0x3b898a[_0x9b38('0x18')](_0x4b9201);}return _0x3b898a[_0x9b38('0x19')](_0x4b9201)[_0x9b38('0x1a')]();};}function respondWithResult(_0x54b539,_0x382655){_0x382655=_0x382655||0xc8;return function(_0x86d0c0){if(_0x86d0c0){return _0x54b539[_0x9b38('0x19')](_0x382655)[_0x9b38('0x1b')](_0x86d0c0);}};}function respondWithFilteredResult(_0xdbbfe1,_0x23a0c6){return function(_0xb39bfc){if(_0xb39bfc){var _0x243393=typeof _0x23a0c6[_0x9b38('0x1c')]===_0x9b38('0x1d')&&typeof _0x23a0c6[_0x9b38('0x1e')]===_0x9b38('0x1d');var _0x1cc5c7=_0xb39bfc[_0x9b38('0x1f')];var _0x15d013=_0x243393?0x0:_0x23a0c6['offset'];var _0x3e9ac3=_0x243393?_0xb39bfc[_0x9b38('0x1f')]:_0x23a0c6[_0x9b38('0x1c')]+_0x23a0c6[_0x9b38('0x1e')];var _0x255199;if(_0x3e9ac3>=_0x1cc5c7){_0x3e9ac3=_0x1cc5c7;_0x255199=0xc8;}else{_0x255199=0xce;}_0xdbbfe1[_0x9b38('0x19')](_0x255199);return _0xdbbfe1[_0x9b38('0x20')](_0x9b38('0x21'),_0x15d013+'-'+_0x3e9ac3+'/'+_0x1cc5c7)[_0x9b38('0x1b')](_0xb39bfc);}return null;};}function patchUpdates(_0x5666d1){return function(_0x498783){try{jsonpatch['apply'](_0x498783,_0x5666d1,!![]);}catch(_0x35f96d){return BPromise[_0x9b38('0x22')](_0x35f96d);}return _0x498783[_0x9b38('0x23')]();};}function saveUpdates(_0x30037e,_0x1fbbd2){return function(_0x470001){if(_0x470001){return _0x470001[_0x9b38('0x24')](_0x30037e)[_0x9b38('0x25')](function(_0x3b65a3){return _0x3b65a3;});}return null;};}function removeEntity(_0x49bf64,_0x46c4c1){return function(_0x1d8b9a){if(_0x1d8b9a){return _0x1d8b9a['destroy']()[_0x9b38('0x25')](function(){_0x49bf64[_0x9b38('0x19')](0xcc)[_0x9b38('0x1a')]();});}};}function handleEntityNotFound(_0x4b375d,_0x38f9ae){return function(_0x595692){if(!_0x595692){_0x4b375d[_0x9b38('0x18')](0x194);}return _0x595692;};}function handleError(_0x364b01,_0x224020){_0x224020=_0x224020||0x1f4;return function(_0x2dca52){logger[_0x9b38('0x26')](_0x2dca52[_0x9b38('0x27')]);if(_0x2dca52['name']){delete _0x2dca52['name'];}_0x364b01['status'](_0x224020)[_0x9b38('0x28')](_0x2dca52);};}exports[_0x9b38('0x29')]=function(_0x2d23f0,_0x4498b0){var _0x3062fc={},_0x58fd49={},_0x206fa6={'count':0x0,'rows':[]};var _0x2c3ba1=_[_0x9b38('0x2a')](db[_0x9b38('0x2b')][_0x9b38('0x2c')],function(_0x1ea19d){return{'name':_0x1ea19d[_0x9b38('0x2d')],'type':_0x1ea19d[_0x9b38('0x2e')][_0x9b38('0x2f')]};});_0x58fd49[_0x9b38('0x30')]=_[_0x9b38('0x2a')](_0x2c3ba1,_0x9b38('0x31'));_0x58fd49[_0x9b38('0x32')]=_[_0x9b38('0x33')](_0x2d23f0[_0x9b38('0x32')]);_0x58fd49[_0x9b38('0x34')]=_[_0x9b38('0x35')](_0x58fd49[_0x9b38('0x30')],_0x58fd49['query']);_0x3062fc[_0x9b38('0x36')]=_[_0x9b38('0x35')](_0x58fd49[_0x9b38('0x30')],qs[_0x9b38('0x37')](_0x2d23f0[_0x9b38('0x32')][_0x9b38('0x37')]));_0x3062fc['attributes']=_0x3062fc['attributes'][_0x9b38('0x38')]?_0x3062fc[_0x9b38('0x36')]:_0x58fd49[_0x9b38('0x30')];if(!_0x2d23f0[_0x9b38('0x32')]['hasOwnProperty'](_0x9b38('0x39'))){_0x3062fc['limit']=qs[_0x9b38('0x1e')](_0x2d23f0[_0x9b38('0x32')][_0x9b38('0x1e')]);_0x3062fc['offset']=qs[_0x9b38('0x1c')](_0x2d23f0[_0x9b38('0x32')][_0x9b38('0x1c')]);}_0x3062fc[_0x9b38('0x3a')]=qs['sort'](_0x2d23f0[_0x9b38('0x32')][_0x9b38('0x3b')]);_0x3062fc[_0x9b38('0x3c')]=qs[_0x9b38('0x34')](_[_0x9b38('0x3d')](_0x2d23f0[_0x9b38('0x32')],_0x58fd49[_0x9b38('0x34')]),_0x2c3ba1);if(_0x2d23f0['query']['filter']){_0x3062fc[_0x9b38('0x3c')]=_[_0x9b38('0x3e')](_0x3062fc[_0x9b38('0x3c')],{'$or':_[_0x9b38('0x2a')](_0x2c3ba1,function(_0x45ca6a){if(_0x45ca6a[_0x9b38('0x2e')]!=='VIRTUAL'){var _0x3cca78={};_0x3cca78[_0x45ca6a[_0x9b38('0x31')]]={'$like':'%'+_0x2d23f0['query'][_0x9b38('0x3f')]+'%'};return _0x3cca78;}})});}_0x3062fc=_[_0x9b38('0x3e')]({},_0x3062fc,_0x2d23f0[_0x9b38('0x40')]);var _0x1da3e3={'where':_0x3062fc[_0x9b38('0x3c')]};return db['SquareDetailsReport']['count'](_0x1da3e3)[_0x9b38('0x25')](function(_0x521d3e){_0x206fa6[_0x9b38('0x1f')]=_0x521d3e;if(_0x2d23f0[_0x9b38('0x32')][_0x9b38('0x41')]){_0x3062fc[_0x9b38('0x42')]=[{'all':!![]}];}return db[_0x9b38('0x2b')][_0x9b38('0x43')](_0x3062fc);})[_0x9b38('0x25')](function(_0x8e61b0){_0x206fa6[_0x9b38('0x44')]=_0x8e61b0;return _0x206fa6;})[_0x9b38('0x25')](respondWithFilteredResult(_0x4498b0,_0x3062fc))[_0x9b38('0x45')](handleError(_0x4498b0,null));};exports[_0x9b38('0x46')]=function(_0x2430f8,_0x4b9623){var _0x4a73e8={'raw':!![],'where':{'id':_0x2430f8[_0x9b38('0x47')]['id']}},_0x559db5={};_0x559db5[_0x9b38('0x30')]=_[_0x9b38('0x33')](db[_0x9b38('0x2b')]['rawAttributes']);_0x559db5['query']=_[_0x9b38('0x33')](_0x2430f8[_0x9b38('0x32')]);_0x559db5[_0x9b38('0x34')]=_[_0x9b38('0x35')](_0x559db5[_0x9b38('0x30')],_0x559db5['query']);_0x4a73e8[_0x9b38('0x36')]=_[_0x9b38('0x35')](_0x559db5[_0x9b38('0x30')],qs[_0x9b38('0x37')](_0x2430f8[_0x9b38('0x32')][_0x9b38('0x37')]));_0x4a73e8[_0x9b38('0x36')]=_0x4a73e8[_0x9b38('0x36')][_0x9b38('0x38')]?_0x4a73e8[_0x9b38('0x36')]:_0x559db5[_0x9b38('0x30')];if(_0x2430f8[_0x9b38('0x32')]['includeAll']){_0x4a73e8[_0x9b38('0x42')]=[{'all':!![]}];}_0x4a73e8=_['merge']({},_0x4a73e8,_0x2430f8[_0x9b38('0x40')]);return db[_0x9b38('0x2b')][_0x9b38('0x48')](_0x4a73e8)[_0x9b38('0x25')](handleEntityNotFound(_0x4b9623,null))[_0x9b38('0x25')](respondWithResult(_0x4b9623,null))[_0x9b38('0x45')](handleError(_0x4b9623,null));};exports[_0x9b38('0x49')]=function(_0x43d5a4,_0x11f329){return db[_0x9b38('0x2b')]['create'](_0x43d5a4[_0x9b38('0x4a')],{})[_0x9b38('0x25')](respondWithResult(_0x11f329,0xc9))[_0x9b38('0x45')](handleError(_0x11f329,null));};exports[_0x9b38('0x24')]=function(_0x5b7145,_0x142452){if(_0x5b7145['body']['id']){delete _0x5b7145[_0x9b38('0x4a')]['id'];}return db['SquareDetailsReport'][_0x9b38('0x48')]({'where':{'id':_0x5b7145[_0x9b38('0x47')]['id']}})[_0x9b38('0x25')](handleEntityNotFound(_0x142452,null))[_0x9b38('0x25')](saveUpdates(_0x5b7145['body'],null))['then'](respondWithResult(_0x142452,null))[_0x9b38('0x45')](handleError(_0x142452,null));};exports[_0x9b38('0x4b')]=function(_0x2714fc,_0x19cb13){return db[_0x9b38('0x2b')][_0x9b38('0x48')]({'where':{'id':_0x2714fc['params']['id']}})[_0x9b38('0x25')](handleEntityNotFound(_0x19cb13,null))[_0x9b38('0x25')](removeEntity(_0x19cb13,null))['catch'](handleError(_0x19cb13,null));};exports[_0x9b38('0x4c')]=function(_0x343043,_0x22a584){return db['SquareDetailsReport'][_0x9b38('0x4c')]()[_0x9b38('0x25')](respondWithResult(_0x22a584,null))[_0x9b38('0x45')](handleError(_0x22a584,null));};
\ No newline at end of file
+var _0x2e55=['rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','SquareDetailsReport','findAll','rows','catch','show','params','keys','length','includeAll','include','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','sendStatus','name','send','index','map'];(function(_0x5a84c3,_0x3323bf){var _0x27f899=function(_0x415a6c){while(--_0x415a6c){_0x5a84c3['push'](_0x5a84c3['shift']());}};_0x27f899(++_0x3323bf);}(_0x2e55,0x1a2));var _0x52e5=function(_0x1443eb,_0x203408){_0x1443eb=_0x1443eb-0x0;var _0x2b8810=_0x2e55[_0x1443eb];return _0x2b8810;};'use strict';var emlformat=require(_0x52e5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x52e5('0x1'));var jsonpatch=require(_0x52e5('0x2'));var rp=require(_0x52e5('0x3'));var moment=require(_0x52e5('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x52e5('0x5'));var path=require(_0x52e5('0x6'));var sox=require(_0x52e5('0x7'));var csv=require(_0x52e5('0x8'));var ejs=require(_0x52e5('0x9'));var fs=require('fs');var fs_extra=require(_0x52e5('0xa'));var _=require(_0x52e5('0xb'));var squel=require(_0x52e5('0xc'));var crypto=require(_0x52e5('0xd'));var jsforce=require(_0x52e5('0xe'));var deskjs=require(_0x52e5('0xf'));var toCsv=require(_0x52e5('0x8'));var querystring=require(_0x52e5('0x10'));var Papa=require(_0x52e5('0x11'));var Redis=require(_0x52e5('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x52e5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x52e5('0x14'));var logger=require(_0x52e5('0x15'))(_0x52e5('0x16'));var utils=require(_0x52e5('0x17'));var config=require(_0x52e5('0x18'));var licenseUtil=require(_0x52e5('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x448644,_0x3a0661){_0x3a0661=_0x3a0661||0xcc;return function(_0x50afa6){if(_0x50afa6){return _0x448644['sendStatus'](_0x3a0661);}return _0x448644[_0x52e5('0x1a')](_0x3a0661)[_0x52e5('0x1b')]();};}function respondWithResult(_0xc6dc4,_0x361fcc){_0x361fcc=_0x361fcc||0xc8;return function(_0x278d63){if(_0x278d63){return _0xc6dc4['status'](_0x361fcc)[_0x52e5('0x1c')](_0x278d63);}};}function respondWithFilteredResult(_0x54a3df,_0x1b381a){return function(_0xae30aa){if(_0xae30aa){var _0x3eea18=typeof _0x1b381a[_0x52e5('0x1d')]===_0x52e5('0x1e')&&typeof _0x1b381a[_0x52e5('0x1f')]===_0x52e5('0x1e');var _0x28622a=_0xae30aa[_0x52e5('0x20')];var _0x3c16b4=_0x3eea18?0x0:_0x1b381a[_0x52e5('0x1d')];var _0x1734a7=_0x3eea18?_0xae30aa[_0x52e5('0x20')]:_0x1b381a[_0x52e5('0x1d')]+_0x1b381a[_0x52e5('0x1f')];var _0x1a2083;if(_0x1734a7>=_0x28622a){_0x1734a7=_0x28622a;_0x1a2083=0xc8;}else{_0x1a2083=0xce;}_0x54a3df[_0x52e5('0x1a')](_0x1a2083);return _0x54a3df['set'](_0x52e5('0x21'),_0x3c16b4+'-'+_0x1734a7+'/'+_0x28622a)[_0x52e5('0x1c')](_0xae30aa);}return null;};}function patchUpdates(_0x5344b3){return function(_0x5c627e){try{jsonpatch['apply'](_0x5c627e,_0x5344b3,!![]);}catch(_0x4450dc){return BPromise[_0x52e5('0x22')](_0x4450dc);}return _0x5c627e[_0x52e5('0x23')]();};}function saveUpdates(_0x4eff9a,_0x208716){return function(_0xe22482){if(_0xe22482){return _0xe22482[_0x52e5('0x24')](_0x4eff9a)[_0x52e5('0x25')](function(_0x33654b){return _0x33654b;});}return null;};}function removeEntity(_0x166f2e,_0x11b686){return function(_0x22f444){if(_0x22f444){return _0x22f444[_0x52e5('0x26')]()[_0x52e5('0x25')](function(){_0x166f2e[_0x52e5('0x1a')](0xcc)[_0x52e5('0x1b')]();});}};}function handleEntityNotFound(_0x5e2a36,_0xe16359){return function(_0x3993aa){if(!_0x3993aa){_0x5e2a36[_0x52e5('0x27')](0x194);}return _0x3993aa;};}function handleError(_0x1bf414,_0x3e9843){_0x3e9843=_0x3e9843||0x1f4;return function(_0x227761){logger['error'](_0x227761['stack']);if(_0x227761[_0x52e5('0x28')]){delete _0x227761[_0x52e5('0x28')];}_0x1bf414['status'](_0x3e9843)[_0x52e5('0x29')](_0x227761);};}exports[_0x52e5('0x2a')]=function(_0x17899b,_0x26293f){var _0x188026={},_0x338fe={},_0x5db1cb={'count':0x0,'rows':[]};var _0x2e8e79=_[_0x52e5('0x2b')](db['SquareDetailsReport'][_0x52e5('0x2c')],function(_0x183b87){return{'name':_0x183b87[_0x52e5('0x2d')],'type':_0x183b87[_0x52e5('0x2e')][_0x52e5('0x2f')]};});_0x338fe[_0x52e5('0x30')]=_[_0x52e5('0x2b')](_0x2e8e79,_0x52e5('0x28'));_0x338fe[_0x52e5('0x31')]=_['keys'](_0x17899b[_0x52e5('0x31')]);_0x338fe[_0x52e5('0x32')]=_[_0x52e5('0x33')](_0x338fe[_0x52e5('0x30')],_0x338fe[_0x52e5('0x31')]);_0x188026[_0x52e5('0x34')]=_[_0x52e5('0x33')](_0x338fe[_0x52e5('0x30')],qs['fields'](_0x17899b[_0x52e5('0x31')][_0x52e5('0x35')]));_0x188026['attributes']=_0x188026['attributes']['length']?_0x188026[_0x52e5('0x34')]:_0x338fe['model'];if(!_0x17899b[_0x52e5('0x31')][_0x52e5('0x36')](_0x52e5('0x37'))){_0x188026['limit']=qs[_0x52e5('0x1f')](_0x17899b[_0x52e5('0x31')][_0x52e5('0x1f')]);_0x188026['offset']=qs[_0x52e5('0x1d')](_0x17899b[_0x52e5('0x31')]['offset']);}_0x188026[_0x52e5('0x38')]=qs['sort'](_0x17899b[_0x52e5('0x31')][_0x52e5('0x39')]);_0x188026[_0x52e5('0x3a')]=qs['filters'](_[_0x52e5('0x3b')](_0x17899b[_0x52e5('0x31')],_0x338fe[_0x52e5('0x32')]),_0x2e8e79);if(_0x17899b[_0x52e5('0x31')][_0x52e5('0x3c')]){_0x188026['where']=_[_0x52e5('0x3d')](_0x188026[_0x52e5('0x3a')],{'$or':_['map'](_0x2e8e79,function(_0x54cb5d){if(_0x54cb5d[_0x52e5('0x2e')]!=='VIRTUAL'){var _0xd1fd1b={};_0xd1fd1b[_0x54cb5d['name']]={'$like':'%'+_0x17899b[_0x52e5('0x31')]['filter']+'%'};return _0xd1fd1b;}})});}_0x188026=_['merge']({},_0x188026,_0x17899b[_0x52e5('0x3e')]);var _0xbcd06e={'where':_0x188026[_0x52e5('0x3a')]};return db[_0x52e5('0x3f')][_0x52e5('0x20')](_0xbcd06e)[_0x52e5('0x25')](function(_0x1e9a8b){_0x5db1cb[_0x52e5('0x20')]=_0x1e9a8b;if(_0x17899b['query']['includeAll']){_0x188026['include']=[{'all':!![]}];}return db['SquareDetailsReport'][_0x52e5('0x40')](_0x188026);})[_0x52e5('0x25')](function(_0x25848c){_0x5db1cb[_0x52e5('0x41')]=_0x25848c;return _0x5db1cb;})['then'](respondWithFilteredResult(_0x26293f,_0x188026))[_0x52e5('0x42')](handleError(_0x26293f,null));};exports[_0x52e5('0x43')]=function(_0x141259,_0x49b6a7){var _0x17a16e={'raw':!![],'where':{'id':_0x141259[_0x52e5('0x44')]['id']}},_0x30ff89={};_0x30ff89[_0x52e5('0x30')]=_[_0x52e5('0x45')](db[_0x52e5('0x3f')][_0x52e5('0x2c')]);_0x30ff89['query']=_[_0x52e5('0x45')](_0x141259['query']);_0x30ff89[_0x52e5('0x32')]=_[_0x52e5('0x33')](_0x30ff89[_0x52e5('0x30')],_0x30ff89[_0x52e5('0x31')]);_0x17a16e[_0x52e5('0x34')]=_['intersection'](_0x30ff89[_0x52e5('0x30')],qs[_0x52e5('0x35')](_0x141259[_0x52e5('0x31')][_0x52e5('0x35')]));_0x17a16e['attributes']=_0x17a16e[_0x52e5('0x34')][_0x52e5('0x46')]?_0x17a16e[_0x52e5('0x34')]:_0x30ff89[_0x52e5('0x30')];if(_0x141259['query'][_0x52e5('0x47')]){_0x17a16e[_0x52e5('0x48')]=[{'all':!![]}];}_0x17a16e=_['merge']({},_0x17a16e,_0x141259[_0x52e5('0x3e')]);return db[_0x52e5('0x3f')]['find'](_0x17a16e)['then'](handleEntityNotFound(_0x49b6a7,null))['then'](respondWithResult(_0x49b6a7,null))['catch'](handleError(_0x49b6a7,null));};exports['create']=function(_0x35925f,_0x372474){return db[_0x52e5('0x3f')][_0x52e5('0x49')](_0x35925f[_0x52e5('0x4a')],{})[_0x52e5('0x25')](respondWithResult(_0x372474,0xc9))[_0x52e5('0x42')](handleError(_0x372474,null));};exports[_0x52e5('0x24')]=function(_0x81377,_0x356e04){if(_0x81377['body']['id']){delete _0x81377['body']['id'];}return db[_0x52e5('0x3f')][_0x52e5('0x4b')]({'where':{'id':_0x81377[_0x52e5('0x44')]['id']}})[_0x52e5('0x25')](handleEntityNotFound(_0x356e04,null))[_0x52e5('0x25')](saveUpdates(_0x81377[_0x52e5('0x4a')],null))[_0x52e5('0x25')](respondWithResult(_0x356e04,null))[_0x52e5('0x42')](handleError(_0x356e04,null));};exports[_0x52e5('0x26')]=function(_0x50a475,_0x4dbe82){return db[_0x52e5('0x3f')][_0x52e5('0x4b')]({'where':{'id':_0x50a475[_0x52e5('0x44')]['id']}})[_0x52e5('0x25')](handleEntityNotFound(_0x4dbe82,null))[_0x52e5('0x25')](removeEntity(_0x4dbe82,null))['catch'](handleError(_0x4dbe82,null));};exports[_0x52e5('0x4c')]=function(_0x35dc1c,_0x1bff6b){return db[_0x52e5('0x3f')][_0x52e5('0x4c')]()['then'](respondWithResult(_0x1bff6b,null))[_0x52e5('0x42')](handleError(_0x1bff6b,null));};
\ No newline at end of file
index 07daad9..13a5c68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb5=['rimraf','./squareReportDetail.attributes','exports','define','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4fb5,0xca));var _0x54fb=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0x4fb5[_0x5f3f88];return _0xd08119;};'use strict';var _=require(_0x54fb('0x0'));var util=require(_0x54fb('0x1'));var logger=require(_0x54fb('0x2'))(_0x54fb('0x3'));var moment=require(_0x54fb('0x4'));var BPromise=require(_0x54fb('0x5'));var rp=require(_0x54fb('0x6'));var fs=require('fs');var path=require(_0x54fb('0x7'));var rimraf=require(_0x54fb('0x8'));var config=require('../../config/environment');var attributes=require(_0x54fb('0x9'));module[_0x54fb('0xa')]=function(_0x452c0c,_0x548e1f){return _0x452c0c[_0x54fb('0xb')](_0x54fb('0xc'),attributes,{'tableName':_0x54fb('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x19c1=['exports','report_square_details','lodash','../../config/logger','api','request-promise','path','../../config/environment'];(function(_0x58f9ff,_0x5d2dd4){var _0x36ecce=function(_0x10b514){while(--_0x10b514){_0x58f9ff['push'](_0x58f9ff['shift']());}};_0x36ecce(++_0x5d2dd4);}(_0x19c1,0x172));var _0x119c=function(_0x3db384,_0x1e2f2f){_0x3db384=_0x3db384-0x0;var _0x396190=_0x19c1[_0x3db384];return _0x396190;};'use strict';var _=require(_0x119c('0x0'));var util=require('util');var logger=require(_0x119c('0x1'))(_0x119c('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x119c('0x3'));var fs=require('fs');var path=require(_0x119c('0x4'));var rimraf=require('rimraf');var config=require(_0x119c('0x5'));var attributes=require('./squareReportDetail.attributes');module[_0x119c('0x6')]=function(_0x505aeb,_0x1dddb7){return _0x505aeb['define']('SquareDetailsReport',attributes,{'tableName':_0x119c('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 13215db..7c5feb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe493=['randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareDetailsReport','create','options','raw','lodash','util','moment','bluebird'];(function(_0x4a4125,_0x43fe9f){var _0x3501b9=function(_0x65be93){while(--_0x65be93){_0x4a4125['push'](_0x4a4125['shift']());}};_0x3501b9(++_0x43fe9f);}(_0xe493,0x7e));var _0x3e49=function(_0x57c180,_0x4303ee){_0x57c180=_0x57c180-0x0;var _0x5b7062=_0xe493[_0x57c180];return _0x5b7062;};'use strict';var _=require(_0x3e49('0x0'));var util=require(_0x3e49('0x1'));var moment=require(_0x3e49('0x2'));var BPromise=require(_0x3e49('0x3'));var rs=require(_0x3e49('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e49('0x5'))['db'];var utils=require(_0x3e49('0x6'));var logger=require('../../config/logger')(_0x3e49('0x7'));var config=require('../../config/environment');var jayson=require(_0x3e49('0x8'));var client=jayson[_0x3e49('0x9')][_0x3e49('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f7821,_0x12dd84,_0x3626b6){return new BPromise(function(_0x4e96ac,_0x56b767){return client['request'](_0x3f7821,_0x3626b6)[_0x3e49('0xb')](function(_0x8b8c0e){logger[_0x3e49('0xc')](_0x3e49('0xd'),_0x12dd84,_0x3e49('0xe'));logger[_0x3e49('0xf')](_0x3e49('0x10'),_0x12dd84,_0x3e49('0xe'),JSON[_0x3e49('0x11')](_0x8b8c0e));if(_0x8b8c0e[_0x3e49('0x12')]){if(_0x8b8c0e[_0x3e49('0x12')]['code']===0x1f4){logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x8b8c0e['error'][_0x3e49('0x13')]);return _0x56b767(_0x8b8c0e[_0x3e49('0x12')]['message']);}logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x8b8c0e['error'][_0x3e49('0x13')]);return _0x4e96ac(_0x8b8c0e[_0x3e49('0x12')][_0x3e49('0x13')]);}else{logger[_0x3e49('0xc')](_0x3e49('0xd'),_0x12dd84,_0x3e49('0xe'));_0x4e96ac(_0x8b8c0e[_0x3e49('0x14')][_0x3e49('0x13')]);}})[_0x3e49('0x15')](function(_0x1d9cce){logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x1d9cce);_0x56b767(_0x1d9cce);});});}exports[_0x3e49('0x16')]=function(_0x3ae5f4){var _0x448c36=this;return new Promise(function(_0x4e1cdf,_0xf33205){return db['SquareDetailsReport'][_0x3e49('0x17')](_0x3ae5f4['body'],{'raw':_0x3ae5f4[_0x3e49('0x18')]?_0x3ae5f4['options'][_0x3e49('0x19')]===undefined?!![]:![]:!![]})[_0x3e49('0xb')](function(_0x420d7b){logger['info'](_0x3e49('0x16'),_0x3ae5f4);logger['debug'](_0x3e49('0x16'),_0x3ae5f4,JSON[_0x3e49('0x11')](_0x420d7b));_0x4e1cdf(_0x420d7b);})[_0x3e49('0x15')](function(_0x5e0f1d){logger['error'](_0x3e49('0x16'),_0x5e0f1d['message'],_0x3ae5f4);_0xf33205(_0x448c36[_0x3e49('0x12')](0x1f4,_0x5e0f1d[_0x3e49('0x13')]));});});};
\ No newline at end of file
+var _0x0972=['info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','catch','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x4f6e04,_0x147e66){var _0x7dac2=function(_0x42bb24){while(--_0x42bb24){_0x4f6e04['push'](_0x4f6e04['shift']());}};_0x7dac2(++_0x147e66);}(_0x0972,0x64));var _0x2097=function(_0x4607b1,_0x11de0b){_0x4607b1=_0x4607b1-0x0;var _0x16a702=_0x0972[_0x4607b1];return _0x16a702;};'use strict';var _=require('lodash');var util=require(_0x2097('0x0'));var moment=require('moment');var BPromise=require(_0x2097('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2097('0x2'));var db=require(_0x2097('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x2097('0x4'))(_0x2097('0x5'));var config=require(_0x2097('0x6'));var jayson=require(_0x2097('0x7'));var client=jayson[_0x2097('0x8')][_0x2097('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b4f21,_0x59739f,_0x332aac){return new BPromise(function(_0x1e661a,_0x11d263){return client[_0x2097('0xa')](_0x2b4f21,_0x332aac)[_0x2097('0xb')](function(_0x59d947){logger[_0x2097('0xc')](_0x2097('0xd'),_0x59739f,_0x2097('0xe'));logger[_0x2097('0xf')](_0x2097('0x10'),_0x59739f,_0x2097('0xe'),JSON[_0x2097('0x11')](_0x59d947));if(_0x59d947[_0x2097('0x12')]){if(_0x59d947[_0x2097('0x12')][_0x2097('0x13')]===0x1f4){logger[_0x2097('0x12')](_0x2097('0xd'),_0x59739f,_0x59d947[_0x2097('0x12')][_0x2097('0x14')]);return _0x11d263(_0x59d947[_0x2097('0x12')][_0x2097('0x14')]);}logger[_0x2097('0x12')](_0x2097('0xd'),_0x59739f,_0x59d947[_0x2097('0x12')][_0x2097('0x14')]);return _0x1e661a(_0x59d947['error'][_0x2097('0x14')]);}else{logger[_0x2097('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x59739f,'request\x20sent');_0x1e661a(_0x59d947['result'][_0x2097('0x14')]);}})['catch'](function(_0x28c35c){logger[_0x2097('0x12')](_0x2097('0xd'),_0x59739f,_0x28c35c);_0x11d263(_0x28c35c);});});}exports[_0x2097('0x15')]=function(_0x44c584){var _0x53e2b4=this;return new Promise(function(_0x324652,_0x140094){return db[_0x2097('0x16')][_0x2097('0x17')](_0x44c584[_0x2097('0x18')],{'raw':_0x44c584[_0x2097('0x19')]?_0x44c584[_0x2097('0x19')][_0x2097('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x4d957e){logger[_0x2097('0xc')]('CreateSquareDetailsReport',_0x44c584);logger[_0x2097('0xf')](_0x2097('0x15'),_0x44c584,JSON['stringify'](_0x4d957e));_0x324652(_0x4d957e);})[_0x2097('0x1b')](function(_0x5b0582){logger[_0x2097('0x12')](_0x2097('0x15'),_0x5b0582[_0x2097('0x14')],_0x44c584);_0x140094(_0x53e2b4[_0x2097('0x12')](0x1f4,_0x5b0582[_0x2097('0x14')]));});});};
\ No newline at end of file
index 12f8ef3..5b0fdda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80d8=['/process/:pid/kill','isAuthenticated','killProcess','exports','express','../../components/auth/service','./system.controller','index','get'];(function(_0x59168c,_0x17a1c1){var _0x4fd2e3=function(_0x4bb77e){while(--_0x4bb77e){_0x59168c['push'](_0x59168c['shift']());}};_0x4fd2e3(++_0x17a1c1);}(_0x80d8,0x12d));var _0x880d=function(_0x2f25ed,_0x3e0622){_0x2f25ed=_0x2f25ed-0x0;var _0x19c980=_0x80d8[_0x2f25ed];return _0x19c980;};'use strict';var express=require(_0x880d('0x0'));var router=express['Router']();var auth=require(_0x880d('0x1'));var controller=require(_0x880d('0x2'));router['get']('/',auth['isAuthenticated'](),controller[_0x880d('0x3')]);router[_0x880d('0x4')](_0x880d('0x5'),auth[_0x880d('0x6')](),controller[_0x880d('0x7')]);module[_0x880d('0x8')]=router;
\ No newline at end of file
+var _0x483b=['/process/:pid/kill','isAuthenticated','killProcess','exports','Router','../../components/auth/service','./system.controller'];(function(_0x204474,_0x5cfef6){var _0x567e42=function(_0x5ab080){while(--_0x5ab080){_0x204474['push'](_0x204474['shift']());}};_0x567e42(++_0x5cfef6);}(_0x483b,0xeb));var _0xb483=function(_0x49ac7c,_0xa9fa22){_0x49ac7c=_0x49ac7c-0x0;var _0x294359=_0x483b[_0x49ac7c];return _0x294359;};'use strict';var express=require('express');var router=express[_0xb483('0x0')]();var auth=require(_0xb483('0x1'));var controller=require(_0xb483('0x2'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xb483('0x3'),auth[_0xb483('0x4')](),controller[_0xb483('0x5')]);module[_0xb483('0x6')]=router;
\ No newline at end of file
index 07056f3..eeb6e52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c8c=['index','then','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','split','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','SIGINT','json','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','systeminformation','child_process','../../config/logger','api','util','bluebird','lodash','error','name','status'];(function(_0x433843,_0x1e7f0e){var _0x55e749=function(_0x2014bb){while(--_0x2014bb){_0x433843['push'](_0x433843['shift']());}};_0x55e749(++_0x1e7f0e);}(_0x7c8c,0x16d));var _0xc7c8=function(_0x28db9a,_0x4f5d8a){_0x28db9a=_0x28db9a-0x0;var _0x2c6138=_0x7c8c[_0x28db9a];return _0x2c6138;};'use strict';var info=require(_0xc7c8('0x0'));var exec=require(_0xc7c8('0x1'))['exec'];var logger=require(_0xc7c8('0x2'))(_0xc7c8('0x3'));var util=require(_0xc7c8('0x4'));var BPromise=require(_0xc7c8('0x5'));var _=require(_0xc7c8('0x6'));function handleError(_0x5ab593,_0x109c9a,_0x4360bc){_0x109c9a=_0x109c9a||0x1f4;return function(_0x4acb54){logger[_0xc7c8('0x7')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x4360bc,_0x109c9a,util['inspect'](_0x4acb54,{'showHidden':![],'depth':null}));delete _0x4acb54[_0xc7c8('0x8')];_0x5ab593[_0xc7c8('0x9')](_0x109c9a)['send'](_0x4acb54);};}exports[_0xc7c8('0xa')]=function(_0x141fa3,_0x1981b1){return info['getAllData']()[_0xc7c8('0xb')](function(_0x161799){return _0x1981b1[_0xc7c8('0x9')](0xc8)['json'](_0x161799);})['catch'](function(_0x184ac3){return _0x1981b1[_0xc7c8('0x9')](0x1f4)['json'](_0x184ac3);});};exports[_0xc7c8('0xc')]=function(_0x53f0f7,_0x20c519){var _0x58c0e9=[_0xc7c8('0xd')];return new BPromise(function(_0x492b18,_0xaa2fc9){return exec(util[_0xc7c8('0xe')](_0xc7c8('0xf'),_0x53f0f7['params'][_0xc7c8('0x10')]),function(_0x8ace99,_0x571b2a,_0x4dbf13){if(_0x8ace99){return _0xaa2fc9(_0x8ace99);}return _0x492b18(_0x571b2a);});})['then'](function(_0x90adc6){var _0x4dac60=![];var _0x4a1c6f=_0x90adc6[_0xc7c8('0x11')](/\n/);for(var _0x15b845=0x0,_0x4f0bbf=_0x58c0e9['length'];_0x15b845<_0x4f0bbf,_0x4dac60===![];_0x15b845+=0x1){if(_0x90adc6[_0xc7c8('0x12')](_0x58c0e9[_0x15b845])>=0x0){_0x4dac60=!![];}}if(!_0x4dac60){throw new Error(util['format'](_0xc7c8('0x13'),_0x53f0f7[_0xc7c8('0x14')][_0xc7c8('0x10')]));}process['kill'](_0x53f0f7['params']['pid'],_0xc7c8('0x15'));return _0x20c519[_0xc7c8('0x9')](0xc8)[_0xc7c8('0x16')]({'message':util[_0xc7c8('0xe')](_0xc7c8('0x17'),_0x53f0f7[_0xc7c8('0x14')]['pid'])});})[_0xc7c8('0x18')](handleError(_0x20c519,null,_0xc7c8('0xc')));};
\ No newline at end of file
+var _0x6b5b=['format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','then','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','exec','../../config/logger','api','util','bluebird','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','index','getAllData','json','killProcess','components/import/cm'];(function(_0x110989,_0xb79ea7){var _0xd0f211=function(_0x4ed059){while(--_0x4ed059){_0x110989['push'](_0x110989['shift']());}};_0xd0f211(++_0xb79ea7);}(_0x6b5b,0x1a3));var _0xb6b5=function(_0x44f545,_0xe5f5d7){_0x44f545=_0x44f545-0x0;var _0x33d866=_0x6b5b[_0x44f545];return _0x33d866;};'use strict';var info=require('systeminformation');var exec=require('child_process')[_0xb6b5('0x0')];var logger=require(_0xb6b5('0x1'))(_0xb6b5('0x2'));var util=require(_0xb6b5('0x3'));var BPromise=require(_0xb6b5('0x4'));var _=require('lodash');function handleError(_0xbf2ff4,_0x30cec9,_0x1e39b0){_0x30cec9=_0x30cec9||0x1f4;return function(_0x2b9d07){logger[_0xb6b5('0x5')](_0xb6b5('0x6'),_0x1e39b0,_0x30cec9,util[_0xb6b5('0x7')](_0x2b9d07,{'showHidden':![],'depth':null}));delete _0x2b9d07[_0xb6b5('0x8')];_0xbf2ff4[_0xb6b5('0x9')](_0x30cec9)[_0xb6b5('0xa')](_0x2b9d07);};}exports[_0xb6b5('0xb')]=function(_0x37277a,_0x11a678){return info[_0xb6b5('0xc')]()['then'](function(_0xf2d914){return _0x11a678['status'](0xc8)['json'](_0xf2d914);})['catch'](function(_0x239607){return _0x11a678['status'](0x1f4)[_0xb6b5('0xd')](_0x239607);});};exports[_0xb6b5('0xe')]=function(_0x5f5b96,_0x1d3a26){var _0x216895=[_0xb6b5('0xf')];return new BPromise(function(_0x56799e,_0x5316c4){return exec(util[_0xb6b5('0x10')](_0xb6b5('0x11'),_0x5f5b96['params'][_0xb6b5('0x12')]),function(_0x6457c0,_0x1a22ef,_0x577a29){if(_0x6457c0){return _0x5316c4(_0x6457c0);}return _0x56799e(_0x1a22ef);});})[_0xb6b5('0x13')](function(_0x4a526e){var _0x4e8eed=![];var _0x9342a3=_0x4a526e[_0xb6b5('0x14')](/\n/);for(var _0x2b94e6=0x0,_0x5067f6=_0x216895[_0xb6b5('0x15')];_0x2b94e6<_0x5067f6,_0x4e8eed===![];_0x2b94e6+=0x1){if(_0x4a526e[_0xb6b5('0x16')](_0x216895[_0x2b94e6])>=0x0){_0x4e8eed=!![];}}if(!_0x4e8eed){throw new Error(util['format'](_0xb6b5('0x17'),_0x5f5b96[_0xb6b5('0x18')][_0xb6b5('0x12')]));}process[_0xb6b5('0x19')](_0x5f5b96[_0xb6b5('0x18')]['pid'],_0xb6b5('0x1a'));return _0x1d3a26['status'](0xc8)[_0xb6b5('0xd')]({'message':util[_0xb6b5('0x10')](_0xb6b5('0x1b'),_0x5f5b96[_0xb6b5('0x18')]['pid'])});})[_0xb6b5('0x1c')](handleError(_0x1d3a26,null,'killProcess'));};
\ No newline at end of file
index 3b8d9e1..bd10a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf22d=['../../components/interaction/service','./tag.controller','get','index','/:id','isAuthenticated','show','post','put','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x204300,_0xd48962){var _0x41541f=function(_0x144488){while(--_0x144488){_0x204300['push'](_0x204300['shift']());}};_0x41541f(++_0xd48962);}(_0xf22d,0x150));var _0xdf22=function(_0x20e7e3,_0x1529be){_0x20e7e3=_0x20e7e3-0x0;var _0x14b9de=_0xf22d[_0x20e7e3];return _0x14b9de;};'use strict';var multer=require(_0xdf22('0x0'));var util=require('util');var path=require(_0xdf22('0x1'));var timeout=require(_0xdf22('0x2'));var express=require(_0xdf22('0x3'));var router=express['Router']();var fs_extra=require(_0xdf22('0x4'));var auth=require(_0xdf22('0x5'));var interaction=require(_0xdf22('0x6'));var config=require('../../config/environment');var controller=require(_0xdf22('0x7'));router[_0xdf22('0x8')]('/',auth['isAuthenticated'](),controller[_0xdf22('0x9')]);router[_0xdf22('0x8')](_0xdf22('0xa'),auth[_0xdf22('0xb')](),controller[_0xdf22('0xc')]);router[_0xdf22('0xd')]('/',auth[_0xdf22('0xb')](),controller['create']);router[_0xdf22('0xe')](_0xdf22('0xa'),auth[_0xdf22('0xb')](),controller[_0xdf22('0xf')]);router[_0xdf22('0x10')](_0xdf22('0xa'),auth[_0xdf22('0xb')](),controller[_0xdf22('0x11')]);module[_0xdf22('0x12')]=router;
\ No newline at end of file
+var _0x3147=['./tag.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x34b821,_0x504e55){var _0x5e00a0=function(_0x242892){while(--_0x242892){_0x34b821['push'](_0x34b821['shift']());}};_0x5e00a0(++_0x504e55);}(_0x3147,0x1b0));var _0x7314=function(_0x5a25ee,_0xaf9ae6){_0x5a25ee=_0x5a25ee-0x0;var _0x22e977=_0x3147[_0x5a25ee];return _0x22e977;};'use strict';var multer=require(_0x7314('0x0'));var util=require(_0x7314('0x1'));var path=require(_0x7314('0x2'));var timeout=require(_0x7314('0x3'));var express=require(_0x7314('0x4'));var router=express[_0x7314('0x5')]();var fs_extra=require(_0x7314('0x6'));var auth=require(_0x7314('0x7'));var interaction=require(_0x7314('0x8'));var config=require('../../config/environment');var controller=require(_0x7314('0x9'));router[_0x7314('0xa')]('/',auth[_0x7314('0xb')](),controller['index']);router[_0x7314('0xa')](_0x7314('0xc'),auth[_0x7314('0xb')](),controller[_0x7314('0xd')]);router[_0x7314('0xe')]('/',auth[_0x7314('0xb')](),controller[_0x7314('0xf')]);router[_0x7314('0x10')](_0x7314('0xc'),auth[_0x7314('0xb')](),controller[_0x7314('0x11')]);router[_0x7314('0x12')](_0x7314('0xc'),auth['isAuthenticated'](),controller[_0x7314('0x13')]);module[_0x7314('0x14')]=router;
\ No newline at end of file
index ec6a708..96e093f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78e=['STRING','#0091EA','sequelize','exports','name'];(function(_0x4d5ccb,_0x3bdbfe){var _0x29c4ae=function(_0x5678c1){while(--_0x5678c1){_0x4d5ccb['push'](_0x4d5ccb['shift']());}};_0x29c4ae(++_0x3bdbfe);}(_0xb78e,0x1c9));var _0xeb78=function(_0x294f08,_0x1ea447){_0x294f08=_0x294f08-0x0;var _0x382ab4=_0xb78e[_0x294f08];return _0x382ab4;};'use strict';var Sequelize=require(_0xeb78('0x0'));module[_0xeb78('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xeb78('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xeb78('0x3')],'defaultValue':_0xeb78('0x4')},'description':{'type':Sequelize[_0xeb78('0x3')]}};
\ No newline at end of file
+var _0x9649=['sequelize','exports','name','STRING','#0091EA'];(function(_0x176513,_0x23a166){var _0x43881b=function(_0x4aad01){while(--_0x4aad01){_0x176513['push'](_0x176513['shift']());}};_0x43881b(++_0x23a166);}(_0x9649,0x118));var _0x9964=function(_0xc632d4,_0x2811cb){_0xc632d4=_0xc632d4-0x0;var _0x15aae3=_0x9649[_0xc632d4];return _0x15aae3;};'use strict';var Sequelize=require(_0x9964('0x0'));module[_0x9964('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x9964('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x9964('0x3')],'defaultValue':_0x9964('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b32c119..4bf42ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85b5=['save','then','get','Tags','UserProfileResource','destroy','sendStatus','error','stack','send','map','Tag','rawAttributes','fieldName','type','key','name','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','keys','include','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','eml-format','rimraf','fast-json-patch','moment','util','sox','to-csv','ejs','lodash','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','status','end','json','undefined','count','offset','limit','set','Content-Range','reject'];(function(_0x40b004,_0x5e46f5){var _0x4344e0=function(_0x19b96d){while(--_0x19b96d){_0x40b004['push'](_0x40b004['shift']());}};_0x4344e0(++_0x5e46f5);}(_0x85b5,0x7f));var _0x585b=function(_0x5c6604,_0x1b8c1e){_0x5c6604=_0x5c6604-0x0;var _0x5c0d85=_0x85b5[_0x5c6604];return _0x5c0d85;};'use strict';var emlformat=require(_0x585b('0x0'));var rimraf=require(_0x585b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x585b('0x2'));var rp=require('request-promise');var moment=require(_0x585b('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x585b('0x4'));var path=require('path');var sox=require(_0x585b('0x5'));var csv=require(_0x585b('0x6'));var ejs=require(_0x585b('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x585b('0x8'));var squel=require('squel');var crypto=require(_0x585b('0x9'));var jsforce=require(_0x585b('0xa'));var deskjs=require(_0x585b('0xb'));var toCsv=require(_0x585b('0x6'));var querystring=require('querystring');var Papa=require(_0x585b('0xc'));var Redis=require(_0x585b('0xd'));var authService=require(_0x585b('0xe'));var qs=require(_0x585b('0xf'));var as=require(_0x585b('0x10'));var hardwareService=require(_0x585b('0x11'));var logger=require(_0x585b('0x12'))('api');var utils=require(_0x585b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x585b('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x16d608,_0x35bda0){_0x35bda0=_0x35bda0||0xcc;return function(_0x19336c){if(_0x19336c){return _0x16d608['sendStatus'](_0x35bda0);}return _0x16d608[_0x585b('0x15')](_0x35bda0)[_0x585b('0x16')]();};}function respondWithResult(_0x3d15ed,_0x299ee4){_0x299ee4=_0x299ee4||0xc8;return function(_0x3dcc28){if(_0x3dcc28){return _0x3d15ed[_0x585b('0x15')](_0x299ee4)[_0x585b('0x17')](_0x3dcc28);}};}function respondWithFilteredResult(_0x5ebc1a,_0x2f827f){return function(_0x41f50d){if(_0x41f50d){var _0x4c094e=typeof _0x2f827f['offset']===_0x585b('0x18')&&typeof _0x2f827f['limit']==='undefined';var _0x2f840e=_0x41f50d[_0x585b('0x19')];var _0x20c4ba=_0x4c094e?0x0:_0x2f827f['offset'];var _0x72fdc4=_0x4c094e?_0x41f50d[_0x585b('0x19')]:_0x2f827f[_0x585b('0x1a')]+_0x2f827f[_0x585b('0x1b')];var _0x562886;if(_0x72fdc4>=_0x2f840e){_0x72fdc4=_0x2f840e;_0x562886=0xc8;}else{_0x562886=0xce;}_0x5ebc1a[_0x585b('0x15')](_0x562886);return _0x5ebc1a[_0x585b('0x1c')](_0x585b('0x1d'),_0x20c4ba+'-'+_0x72fdc4+'/'+_0x2f840e)['json'](_0x41f50d);}return null;};}function patchUpdates(_0x5200ec){return function(_0x6bea29){try{jsonpatch['apply'](_0x6bea29,_0x5200ec,!![]);}catch(_0x484157){return BPromise[_0x585b('0x1e')](_0x484157);}return _0x6bea29[_0x585b('0x1f')]();};}function saveUpdates(_0x48d9f8,_0x183308){return function(_0x272a8d){if(_0x272a8d){return _0x272a8d['update'](_0x48d9f8)[_0x585b('0x20')](function(_0xe50751){return _0xe50751;});}return null;};}function removeEntity(_0x2122e0,_0x5bf9e4){return function(_0x1c8a7b){if(_0x1c8a7b){return _0x1c8a7b['destroy']()[_0x585b('0x20')](function(){var _0x10dd42=_0x1c8a7b[_0x585b('0x21')]({'plain':!![]});var _0x428a9a=_0x585b('0x22');return db[_0x585b('0x23')][_0x585b('0x24')]({'where':{'type':_0x428a9a,'resourceId':_0x10dd42['id']}})[_0x585b('0x20')](function(){return _0x1c8a7b;});})[_0x585b('0x20')](function(){_0x2122e0[_0x585b('0x15')](0xcc)[_0x585b('0x16')]();});}};}function handleEntityNotFound(_0x35075c,_0x11dc56){return function(_0x476ed9){if(!_0x476ed9){_0x35075c[_0x585b('0x25')](0x194);}return _0x476ed9;};}function handleError(_0x554099,_0x2f848c){_0x2f848c=_0x2f848c||0x1f4;return function(_0x205ffe){logger[_0x585b('0x26')](_0x205ffe[_0x585b('0x27')]);if(_0x205ffe['name']){delete _0x205ffe['name'];}_0x554099[_0x585b('0x15')](_0x2f848c)[_0x585b('0x28')](_0x205ffe);};}exports['index']=function(_0x2ce768,_0x112fb5){var _0x5c9249={},_0x47020d={},_0x3e700a={'count':0x0,'rows':[]};var _0x2ab871=_[_0x585b('0x29')](db[_0x585b('0x2a')][_0x585b('0x2b')],function(_0x227149){return{'name':_0x227149[_0x585b('0x2c')],'type':_0x227149[_0x585b('0x2d')][_0x585b('0x2e')]};});_0x47020d['model']=_[_0x585b('0x29')](_0x2ab871,_0x585b('0x2f'));_0x47020d[_0x585b('0x30')]=_['keys'](_0x2ce768[_0x585b('0x30')]);_0x47020d[_0x585b('0x31')]=_[_0x585b('0x32')](_0x47020d['model'],_0x47020d[_0x585b('0x30')]);_0x5c9249[_0x585b('0x33')]=_[_0x585b('0x32')](_0x47020d[_0x585b('0x34')],qs['fields'](_0x2ce768['query'][_0x585b('0x35')]));_0x5c9249[_0x585b('0x33')]=_0x5c9249[_0x585b('0x33')][_0x585b('0x36')]?_0x5c9249[_0x585b('0x33')]:_0x47020d['model'];if(!_0x2ce768[_0x585b('0x30')][_0x585b('0x37')](_0x585b('0x38'))){_0x5c9249[_0x585b('0x1b')]=qs[_0x585b('0x1b')](_0x2ce768['query']['limit']);_0x5c9249['offset']=qs[_0x585b('0x1a')](_0x2ce768[_0x585b('0x30')][_0x585b('0x1a')]);}_0x5c9249[_0x585b('0x39')]=qs[_0x585b('0x3a')](_0x2ce768[_0x585b('0x30')][_0x585b('0x3a')]);_0x5c9249[_0x585b('0x3b')]=qs[_0x585b('0x31')](_['pick'](_0x2ce768[_0x585b('0x30')],_0x47020d[_0x585b('0x31')]),_0x2ab871);if(_0x2ce768['query'][_0x585b('0x3c')]){_0x5c9249[_0x585b('0x3b')]=_[_0x585b('0x3d')](_0x5c9249[_0x585b('0x3b')],{'$or':_[_0x585b('0x29')](_0x2ab871,function(_0x12f7b1){if(_0x12f7b1['type']!==_0x585b('0x3e')){var _0x3c10b2={};_0x3c10b2[_0x12f7b1[_0x585b('0x2f')]]={'$like':'%'+_0x2ce768[_0x585b('0x30')][_0x585b('0x3c')]+'%'};return _0x3c10b2;}})});}_0x5c9249=_[_0x585b('0x3d')]({},_0x5c9249,_0x2ce768[_0x585b('0x3f')]);var _0xc543ca={'where':_0x5c9249['where']};return db[_0x585b('0x2a')][_0x585b('0x19')](_0xc543ca)[_0x585b('0x20')](function(_0x4c5a14){_0x3e700a[_0x585b('0x19')]=_0x4c5a14;if(_0x2ce768[_0x585b('0x30')][_0x585b('0x40')]){_0x5c9249['include']=[{'all':!![]}];}return db[_0x585b('0x2a')][_0x585b('0x41')](_0x5c9249);})['then'](function(_0x4edd57){_0x3e700a[_0x585b('0x42')]=_0x4edd57;return _0x3e700a;})['then'](respondWithFilteredResult(_0x112fb5,_0x5c9249))[_0x585b('0x43')](handleError(_0x112fb5,null));};exports['show']=function(_0x207d79,_0x33380b){var _0x5e989e={'raw':!![],'where':{'id':_0x207d79['params']['id']}},_0xa26652={};_0xa26652['model']=_['keys'](db[_0x585b('0x2a')]['rawAttributes']);_0xa26652[_0x585b('0x30')]=_[_0x585b('0x44')](_0x207d79['query']);_0xa26652[_0x585b('0x31')]=_[_0x585b('0x32')](_0xa26652[_0x585b('0x34')],_0xa26652['query']);_0x5e989e['attributes']=_['intersection'](_0xa26652[_0x585b('0x34')],qs[_0x585b('0x35')](_0x207d79[_0x585b('0x30')][_0x585b('0x35')]));_0x5e989e['attributes']=_0x5e989e[_0x585b('0x33')][_0x585b('0x36')]?_0x5e989e[_0x585b('0x33')]:_0xa26652[_0x585b('0x34')];if(_0x207d79['query'][_0x585b('0x40')]){_0x5e989e[_0x585b('0x45')]=[{'all':!![]}];}_0x5e989e=_[_0x585b('0x3d')]({},_0x5e989e,_0x207d79[_0x585b('0x3f')]);return db[_0x585b('0x2a')]['find'](_0x5e989e)['then'](handleEntityNotFound(_0x33380b,null))['then'](respondWithResult(_0x33380b,null))[_0x585b('0x43')](handleError(_0x33380b,null));};exports['create']=function(_0x1f8ae0,_0x54ab6f){return db['Tag']['create'](_0x1f8ae0[_0x585b('0x46')],{})[_0x585b('0x20')](function(_0x47c349){var _0x5116a8=_0x1f8ae0[_0x585b('0x47')][_0x585b('0x21')]({'plain':!![]});if(!_0x5116a8)throw new Error(_0x585b('0x48'));if(_0x5116a8['role']===_0x585b('0x47')){var _0x4ca120=_0x47c349[_0x585b('0x21')]({'plain':!![]});var _0x5f31cb=_0x585b('0x22');return db['UserProfileSection'][_0x585b('0x49')]({'where':{'name':_0x5f31cb,'userProfileId':_0x5116a8['userProfileId']},'raw':!![]})[_0x585b('0x20')](function(_0x259dac){if(_0x259dac&&_0x259dac[_0x585b('0x4a')]===0x0){return db[_0x585b('0x23')][_0x585b('0x4b')]({'name':_0x4ca120['name'],'resourceId':_0x4ca120['id'],'type':_0x259dac[_0x585b('0x2f')],'sectionId':_0x259dac['id']},{})[_0x585b('0x20')](function(){return _0x47c349;});}else{return _0x47c349;}})[_0x585b('0x43')](function(_0x2d0f60){logger[_0x585b('0x26')](_0x585b('0x4c'),_0x2d0f60);throw _0x2d0f60;});}return _0x47c349;})['then'](respondWithResult(_0x54ab6f,0xc9))[_0x585b('0x43')](handleError(_0x54ab6f,null));};exports[_0x585b('0x4d')]=function(_0x14a30b,_0x2f0741){if(_0x14a30b['body']['id']){delete _0x14a30b[_0x585b('0x46')]['id'];}return db[_0x585b('0x2a')][_0x585b('0x49')]({'where':{'id':_0x14a30b['params']['id']}})['then'](handleEntityNotFound(_0x2f0741,null))['then'](saveUpdates(_0x14a30b['body'],null))['then'](respondWithResult(_0x2f0741,null))['catch'](handleError(_0x2f0741,null));};exports[_0x585b('0x24')]=function(_0x39f29e,_0x102733){return db['Tag'][_0x585b('0x49')]({'where':{'id':_0x39f29e[_0x585b('0x4e')]['id']}})[_0x585b('0x20')](handleEntityNotFound(_0x102733,null))[_0x585b('0x20')](removeEntity(_0x102733,null))['catch'](handleError(_0x102733,null));};
\ No newline at end of file
+var _0x7794=['stack','name','send','Tag','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','catch','show','params','includeAll','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','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','get','Tags','UserProfileResource','sendStatus','error'];(function(_0x23bcd0,_0x507df5){var _0x1eee6a=function(_0x37afbc){while(--_0x37afbc){_0x23bcd0['push'](_0x23bcd0['shift']());}};_0x1eee6a(++_0x507df5);}(_0x7794,0x7b));var _0x4779=function(_0x586539,_0x45e161){_0x586539=_0x586539-0x0;var _0x491c5e=_0x7794[_0x586539];return _0x491c5e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4779('0x0'));var zipdir=require(_0x4779('0x1'));var jsonpatch=require(_0x4779('0x2'));var rp=require(_0x4779('0x3'));var moment=require('moment');var BPromise=require(_0x4779('0x4'));var Mustache=require(_0x4779('0x5'));var util=require('util');var path=require(_0x4779('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4779('0x7'));var _=require(_0x4779('0x8'));var squel=require('squel');var crypto=require(_0x4779('0x9'));var jsforce=require(_0x4779('0xa'));var deskjs=require(_0x4779('0xb'));var toCsv=require(_0x4779('0xc'));var querystring=require(_0x4779('0xd'));var Papa=require(_0x4779('0xe'));var Redis=require(_0x4779('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4779('0x10'));var as=require(_0x4779('0x11'));var hardwareService=require(_0x4779('0x12'));var logger=require(_0x4779('0x13'))(_0x4779('0x14'));var utils=require(_0x4779('0x15'));var config=require(_0x4779('0x16'));var licenseUtil=require(_0x4779('0x17'));var db=require(_0x4779('0x18'))['db'];function respondWithStatusCode(_0x13c989,_0x50e17e){_0x50e17e=_0x50e17e||0xcc;return function(_0x5b1219){if(_0x5b1219){return _0x13c989['sendStatus'](_0x50e17e);}return _0x13c989[_0x4779('0x19')](_0x50e17e)[_0x4779('0x1a')]();};}function respondWithResult(_0xb9a06f,_0xddf5cd){_0xddf5cd=_0xddf5cd||0xc8;return function(_0x4fe370){if(_0x4fe370){return _0xb9a06f[_0x4779('0x19')](_0xddf5cd)[_0x4779('0x1b')](_0x4fe370);}};}function respondWithFilteredResult(_0x4d71a0,_0x599deb){return function(_0x1dbbe1){if(_0x1dbbe1){var _0x2de2be=typeof _0x599deb[_0x4779('0x1c')]===_0x4779('0x1d')&&typeof _0x599deb['limit']==='undefined';var _0x445e0b=_0x1dbbe1[_0x4779('0x1e')];var _0x19fbb6=_0x2de2be?0x0:_0x599deb['offset'];var _0x3dbe70=_0x2de2be?_0x1dbbe1['count']:_0x599deb[_0x4779('0x1c')]+_0x599deb[_0x4779('0x1f')];var _0x478fa5;if(_0x3dbe70>=_0x445e0b){_0x3dbe70=_0x445e0b;_0x478fa5=0xc8;}else{_0x478fa5=0xce;}_0x4d71a0[_0x4779('0x19')](_0x478fa5);return _0x4d71a0['set'](_0x4779('0x20'),_0x19fbb6+'-'+_0x3dbe70+'/'+_0x445e0b)[_0x4779('0x1b')](_0x1dbbe1);}return null;};}function patchUpdates(_0x143ef6){return function(_0x298e25){try{jsonpatch[_0x4779('0x21')](_0x298e25,_0x143ef6,!![]);}catch(_0x1ce270){return BPromise['reject'](_0x1ce270);}return _0x298e25[_0x4779('0x22')]();};}function saveUpdates(_0x4f2158,_0x4ad246){return function(_0xd983f0){if(_0xd983f0){return _0xd983f0[_0x4779('0x23')](_0x4f2158)[_0x4779('0x24')](function(_0x2b7ab6){return _0x2b7ab6;});}return null;};}function removeEntity(_0x555cd6,_0x152887){return function(_0x29a39a){if(_0x29a39a){return _0x29a39a[_0x4779('0x25')]()['then'](function(){var _0x340648=_0x29a39a[_0x4779('0x26')]({'plain':!![]});var _0x577b13=_0x4779('0x27');return db[_0x4779('0x28')]['destroy']({'where':{'type':_0x577b13,'resourceId':_0x340648['id']}})[_0x4779('0x24')](function(){return _0x29a39a;});})[_0x4779('0x24')](function(){_0x555cd6[_0x4779('0x19')](0xcc)[_0x4779('0x1a')]();});}};}function handleEntityNotFound(_0x2634c2,_0x254562){return function(_0xeb1850){if(!_0xeb1850){_0x2634c2[_0x4779('0x29')](0x194);}return _0xeb1850;};}function handleError(_0x4b9066,_0x44c162){_0x44c162=_0x44c162||0x1f4;return function(_0x1607a5){logger[_0x4779('0x2a')](_0x1607a5[_0x4779('0x2b')]);if(_0x1607a5[_0x4779('0x2c')]){delete _0x1607a5[_0x4779('0x2c')];}_0x4b9066[_0x4779('0x19')](_0x44c162)[_0x4779('0x2d')](_0x1607a5);};}exports['index']=function(_0x5b1b36,_0x179717){var _0x986bed={},_0xc7e4d1={},_0x15da6d={'count':0x0,'rows':[]};var _0x335d48=_['map'](db[_0x4779('0x2e')][_0x4779('0x2f')],function(_0x1fa222){return{'name':_0x1fa222[_0x4779('0x30')],'type':_0x1fa222['type']['key']};});_0xc7e4d1[_0x4779('0x31')]=_['map'](_0x335d48,_0x4779('0x2c'));_0xc7e4d1[_0x4779('0x32')]=_[_0x4779('0x33')](_0x5b1b36[_0x4779('0x32')]);_0xc7e4d1[_0x4779('0x34')]=_[_0x4779('0x35')](_0xc7e4d1[_0x4779('0x31')],_0xc7e4d1[_0x4779('0x32')]);_0x986bed[_0x4779('0x36')]=_[_0x4779('0x35')](_0xc7e4d1[_0x4779('0x31')],qs[_0x4779('0x37')](_0x5b1b36['query']['fields']));_0x986bed[_0x4779('0x36')]=_0x986bed['attributes'][_0x4779('0x38')]?_0x986bed['attributes']:_0xc7e4d1[_0x4779('0x31')];if(!_0x5b1b36[_0x4779('0x32')][_0x4779('0x39')](_0x4779('0x3a'))){_0x986bed[_0x4779('0x1f')]=qs['limit'](_0x5b1b36['query'][_0x4779('0x1f')]);_0x986bed[_0x4779('0x1c')]=qs[_0x4779('0x1c')](_0x5b1b36[_0x4779('0x32')][_0x4779('0x1c')]);}_0x986bed[_0x4779('0x3b')]=qs[_0x4779('0x3c')](_0x5b1b36[_0x4779('0x32')][_0x4779('0x3c')]);_0x986bed[_0x4779('0x3d')]=qs[_0x4779('0x34')](_[_0x4779('0x3e')](_0x5b1b36[_0x4779('0x32')],_0xc7e4d1[_0x4779('0x34')]),_0x335d48);if(_0x5b1b36[_0x4779('0x32')][_0x4779('0x3f')]){_0x986bed[_0x4779('0x3d')]=_[_0x4779('0x40')](_0x986bed[_0x4779('0x3d')],{'$or':_['map'](_0x335d48,function(_0xa48aa1){if(_0xa48aa1['type']!==_0x4779('0x41')){var _0x1cc7da={};_0x1cc7da[_0xa48aa1[_0x4779('0x2c')]]={'$like':'%'+_0x5b1b36[_0x4779('0x32')][_0x4779('0x3f')]+'%'};return _0x1cc7da;}})});}_0x986bed=_[_0x4779('0x40')]({},_0x986bed,_0x5b1b36['options']);var _0x2ab9c3={'where':_0x986bed['where']};return db[_0x4779('0x2e')][_0x4779('0x1e')](_0x2ab9c3)[_0x4779('0x24')](function(_0x3a3589){_0x15da6d[_0x4779('0x1e')]=_0x3a3589;if(_0x5b1b36[_0x4779('0x32')]['includeAll']){_0x986bed[_0x4779('0x42')]=[{'all':!![]}];}return db['Tag'][_0x4779('0x43')](_0x986bed);})[_0x4779('0x24')](function(_0x2e60ab){_0x15da6d['rows']=_0x2e60ab;return _0x15da6d;})[_0x4779('0x24')](respondWithFilteredResult(_0x179717,_0x986bed))[_0x4779('0x44')](handleError(_0x179717,null));};exports[_0x4779('0x45')]=function(_0x15520d,_0xbc5a86){var _0x3b0bfd={'raw':!![],'where':{'id':_0x15520d[_0x4779('0x46')]['id']}},_0x13f768={};_0x13f768[_0x4779('0x31')]=_[_0x4779('0x33')](db[_0x4779('0x2e')][_0x4779('0x2f')]);_0x13f768[_0x4779('0x32')]=_[_0x4779('0x33')](_0x15520d[_0x4779('0x32')]);_0x13f768['filters']=_['intersection'](_0x13f768[_0x4779('0x31')],_0x13f768[_0x4779('0x32')]);_0x3b0bfd[_0x4779('0x36')]=_[_0x4779('0x35')](_0x13f768[_0x4779('0x31')],qs[_0x4779('0x37')](_0x15520d[_0x4779('0x32')][_0x4779('0x37')]));_0x3b0bfd['attributes']=_0x3b0bfd[_0x4779('0x36')][_0x4779('0x38')]?_0x3b0bfd[_0x4779('0x36')]:_0x13f768[_0x4779('0x31')];if(_0x15520d[_0x4779('0x32')][_0x4779('0x47')]){_0x3b0bfd['include']=[{'all':!![]}];}_0x3b0bfd=_[_0x4779('0x40')]({},_0x3b0bfd,_0x15520d[_0x4779('0x48')]);return db[_0x4779('0x2e')][_0x4779('0x49')](_0x3b0bfd)[_0x4779('0x24')](handleEntityNotFound(_0xbc5a86,null))['then'](respondWithResult(_0xbc5a86,null))[_0x4779('0x44')](handleError(_0xbc5a86,null));};exports[_0x4779('0x4a')]=function(_0x3873d4,_0x4a1040){return db[_0x4779('0x2e')]['create'](_0x3873d4[_0x4779('0x4b')],{})[_0x4779('0x24')](function(_0x397216){var _0x4f0aaf=_0x3873d4[_0x4779('0x4c')]['get']({'plain':!![]});if(!_0x4f0aaf)throw new Error(_0x4779('0x4d'));if(_0x4f0aaf[_0x4779('0x4e')]===_0x4779('0x4c')){var _0x58e14e=_0x397216['get']({'plain':!![]});var _0x5dc79a=_0x4779('0x27');return db[_0x4779('0x4f')]['find']({'where':{'name':_0x5dc79a,'userProfileId':_0x4f0aaf[_0x4779('0x50')]},'raw':!![]})[_0x4779('0x24')](function(_0x3c7493){if(_0x3c7493&&_0x3c7493[_0x4779('0x51')]===0x0){return db[_0x4779('0x28')]['create']({'name':_0x58e14e[_0x4779('0x2c')],'resourceId':_0x58e14e['id'],'type':_0x3c7493[_0x4779('0x2c')],'sectionId':_0x3c7493['id']},{})[_0x4779('0x24')](function(){return _0x397216;});}else{return _0x397216;}})[_0x4779('0x44')](function(_0x15c180){logger[_0x4779('0x2a')](_0x4779('0x52'),_0x15c180);throw _0x15c180;});}return _0x397216;})[_0x4779('0x24')](respondWithResult(_0x4a1040,0xc9))['catch'](handleError(_0x4a1040,null));};exports['update']=function(_0x1e4bff,_0x34e951){if(_0x1e4bff[_0x4779('0x4b')]['id']){delete _0x1e4bff[_0x4779('0x4b')]['id'];}return db['Tag'][_0x4779('0x49')]({'where':{'id':_0x1e4bff[_0x4779('0x46')]['id']}})['then'](handleEntityNotFound(_0x34e951,null))[_0x4779('0x24')](saveUpdates(_0x1e4bff[_0x4779('0x4b')],null))[_0x4779('0x24')](respondWithResult(_0x34e951,null))['catch'](handleError(_0x34e951,null));};exports['destroy']=function(_0x225734,_0xe836e0){return db['Tag'][_0x4779('0x49')]({'where':{'id':_0x225734[_0x4779('0x46')]['id']}})[_0x4779('0x24')](handleEntityNotFound(_0xe836e0,null))[_0x4779('0x24')](removeEntity(_0xe836e0,null))[_0x4779('0x44')](handleError(_0xe836e0,null));};
\ No newline at end of file
index 098d1cc..28bfd1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91b0=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes','lodash','util','../../config/logger','api'];(function(_0x518892,_0x3fe64e){var _0x2ad247=function(_0x5b4327){while(--_0x5b4327){_0x518892['push'](_0x518892['shift']());}};_0x2ad247(++_0x3fe64e);}(_0x91b0,0x1ca));var _0x091b=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x91b0[_0x2bf141];return _0x48277b;};'use strict';var _=require(_0x091b('0x0'));var util=require(_0x091b('0x1'));var logger=require(_0x091b('0x2'))(_0x091b('0x3'));var moment=require(_0x091b('0x4'));var BPromise=require(_0x091b('0x5'));var rp=require(_0x091b('0x6'));var fs=require('fs');var path=require(_0x091b('0x7'));var rimraf=require(_0x091b('0x8'));var config=require(_0x091b('0x9'));var attributes=require(_0x091b('0xa'));module['exports']=function(_0x4b7c11,_0x58e92f){return _0x4b7c11['define']('Tag',attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a71=['request-promise','rimraf','../../config/environment','./tag.attributes','exports','define','tools_tags','util','api','moment','bluebird'];(function(_0x1f3da6,_0x525a2f){var _0x335a3b=function(_0x16ebd5){while(--_0x16ebd5){_0x1f3da6['push'](_0x1f3da6['shift']());}};_0x335a3b(++_0x525a2f);}(_0x9a71,0x80));var _0x19a7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9a71[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x19a7('0x0'));var logger=require('../../config/logger')(_0x19a7('0x1'));var moment=require(_0x19a7('0x2'));var BPromise=require(_0x19a7('0x3'));var rp=require(_0x19a7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x19a7('0x5'));var config=require(_0x19a7('0x6'));var attributes=require(_0x19a7('0x7'));module[_0x19a7('0x8')]=function(_0xef1757,_0x24a98b){return _0xef1757[_0x19a7('0x9')]('Tag',attributes,{'tableName':_0x19a7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5e531bf..e8678c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['Tag,\x20%s,\x20%s,\x20%s','code','error','message','request\x20sent','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','Tag,\x20%s,\x20%s','debug'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0xb458,0x103));var _0x8b45=function(_0x682cd2,_0x38817d){_0x682cd2=_0x682cd2-0x0;var _0x3aacb7=_0xb458[_0x682cd2];return _0x3aacb7;};'use strict';var _=require(_0x8b45('0x0'));var util=require(_0x8b45('0x1'));var moment=require(_0x8b45('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8b45('0x3'));var db=require(_0x8b45('0x4'))['db'];var utils=require(_0x8b45('0x5'));var logger=require(_0x8b45('0x6'))('rpc');var config=require(_0x8b45('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8b45('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x12bd05,_0x2daa9a,_0x3a8ccb){return new BPromise(function(_0x32342f,_0x4d1718){return client[_0x8b45('0x9')](_0x12bd05,_0x3a8ccb)[_0x8b45('0xa')](function(_0x33f30e){logger[_0x8b45('0xb')](_0x8b45('0xc'),_0x2daa9a,'request\x20sent');logger[_0x8b45('0xd')](_0x8b45('0xe'),_0x2daa9a,'request\x20sent',JSON['stringify'](_0x33f30e));if(_0x33f30e['error']){if(_0x33f30e['error'][_0x8b45('0xf')]===0x1f4){logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x33f30e['error'][_0x8b45('0x11')]);return _0x4d1718(_0x33f30e[_0x8b45('0x10')][_0x8b45('0x11')]);}logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x33f30e[_0x8b45('0x10')]['message']);return _0x32342f(_0x33f30e['error'][_0x8b45('0x11')]);}else{logger[_0x8b45('0xb')](_0x8b45('0xc'),_0x2daa9a,_0x8b45('0x12'));_0x32342f(_0x33f30e[_0x8b45('0x13')][_0x8b45('0x11')]);}})[_0x8b45('0x14')](function(_0x147d6b){logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x147d6b);_0x4d1718(_0x147d6b);});});}
\ No newline at end of file
+var _0xf72b=['../../config/environment','jayson/promise','client','request','Tag,\x20%s,\x20%s','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x6d97b2,_0x3c1332){var _0x514465=function(_0x13c3ce){while(--_0x13c3ce){_0x6d97b2['push'](_0x6d97b2['shift']());}};_0x514465(++_0x3c1332);}(_0xf72b,0x1d9));var _0xbf72=function(_0x2f759d,_0x23b2cb){_0x2f759d=_0x2f759d-0x0;var _0x3464f9=_0xf72b[_0x2f759d];return _0x3464f9;};'use strict';var _=require(_0xbf72('0x0'));var util=require('util');var moment=require(_0xbf72('0x1'));var BPromise=require('bluebird');var rs=require(_0xbf72('0x2'));var fs=require('fs');var Redis=require(_0xbf72('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbf72('0x4'));var logger=require(_0xbf72('0x5'))(_0xbf72('0x6'));var config=require(_0xbf72('0x7'));var jayson=require(_0xbf72('0x8'));var client=jayson[_0xbf72('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41c11d,_0xc0842b,_0x119807){return new BPromise(function(_0xd0402c,_0xdd6177){return client[_0xbf72('0xa')](_0x41c11d,_0x119807)['then'](function(_0x455891){logger['info'](_0xbf72('0xb'),_0xc0842b,_0xbf72('0xc'));logger['debug'](_0xbf72('0xd'),_0xc0842b,_0xbf72('0xc'),JSON[_0xbf72('0xe')](_0x455891));if(_0x455891[_0xbf72('0xf')]){if(_0x455891[_0xbf72('0xf')][_0xbf72('0x10')]===0x1f4){logger[_0xbf72('0xf')](_0xbf72('0xb'),_0xc0842b,_0x455891['error'][_0xbf72('0x11')]);return _0xdd6177(_0x455891[_0xbf72('0xf')][_0xbf72('0x11')]);}logger['error'](_0xbf72('0xb'),_0xc0842b,_0x455891['error']['message']);return _0xd0402c(_0x455891['error'][_0xbf72('0x11')]);}else{logger[_0xbf72('0x12')](_0xbf72('0xb'),_0xc0842b,_0xbf72('0xc'));_0xd0402c(_0x455891[_0xbf72('0x13')][_0xbf72('0x11')]);}})['catch'](function(_0x266ce2){logger[_0xbf72('0xf')](_0xbf72('0xb'),_0xc0842b,_0x266ce2);_0xdd6177(_0x266ce2);});});}
\ No newline at end of file
index 78b845e..63be30c 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(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'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 a32f9ed..324ea07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0x4e0c31,_0x208e9f){var _0x3fd7df=function(_0x5ee817){while(--_0x5ee817){_0x4e0c31['push'](_0x4e0c31['shift']());}};_0x3fd7df(++_0x208e9f);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
+var _0xe706=['STRING','sequelize','exports'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xe706,0xa3));var _0x6e70=function(_0x1d895d,_0x3e5c93){_0x1d895d=_0x1d895d-0x0;var _0x2dae23=_0xe706[_0x1d895d];return _0x2dae23;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'name':{'type':Sequelize[_0x6e70('0x2')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x6e70('0x2')]}};
\ No newline at end of file
index 5e641e3..f28514e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36b5=['upsert','addAgents','spread','removeAgents','Openchannel','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./team.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','save','update','then','error','stack','name','send','index','map','Team','rawAttributes','fieldName','type','model','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','params','keys','includeAll','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','sequelize','Sequelize','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','VoiceQueueId','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','UserWhatsappQueue','UserVoicePrefix','VoicePrefixId','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','length','pick','addQueues','add','ids','removeQueues','remove','Queues','Voice','Chat','Mail','Sms','Fax','Whatsapp','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','user','Queue:save','online','UserVoiceQueueRt','isNil','interface','format','SIP/%s','voicePause','all'];(function(_0x25a85c,_0xc50610){var _0x491a29=function(_0x3c407c){while(--_0x3c407c){_0x25a85c['push'](_0x25a85c['shift']());}};_0x491a29(++_0xc50610);}(_0x36b5,0x145));var _0x536b=function(_0x3d2b19,_0x349a5b){_0x3d2b19=_0x3d2b19-0x0;var _0x29769b=_0x36b5[_0x3d2b19];return _0x29769b;};'use strict';var emlformat=require(_0x536b('0x0'));var rimraf=require(_0x536b('0x1'));var zipdir=require(_0x536b('0x2'));var jsonpatch=require(_0x536b('0x3'));var rp=require(_0x536b('0x4'));var moment=require(_0x536b('0x5'));var BPromise=require(_0x536b('0x6'));var Mustache=require(_0x536b('0x7'));var util=require('util');var path=require(_0x536b('0x8'));var sox=require(_0x536b('0x9'));var csv=require(_0x536b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x536b('0xb'));var _=require(_0x536b('0xc'));var squel=require(_0x536b('0xd'));var crypto=require(_0x536b('0xe'));var jsforce=require(_0x536b('0xf'));var deskjs=require(_0x536b('0x10'));var toCsv=require(_0x536b('0xa'));var querystring=require(_0x536b('0x11'));var Papa=require(_0x536b('0x12'));var Redis=require(_0x536b('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x536b('0x14'));var as=require(_0x536b('0x15'));var hardwareService=require(_0x536b('0x16'));var logger=require(_0x536b('0x17'))('api');var utils=require(_0x536b('0x18'));var config=require(_0x536b('0x19'));var licenseUtil=require(_0x536b('0x1a'));var db=require(_0x536b('0x1b'))['db'];config[_0x536b('0x1c')]=_[_0x536b('0x1d')](config[_0x536b('0x1c')],{'host':_0x536b('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x536b('0x1c')]));require(_0x536b('0x1f'))[_0x536b('0x20')](socket);function respondWithStatusCode(_0xb1492a,_0x384aec){_0x384aec=_0x384aec||0xcc;return function(_0x16a7fd){if(_0x16a7fd){return _0xb1492a[_0x536b('0x21')](_0x384aec);}return _0xb1492a[_0x536b('0x22')](_0x384aec)[_0x536b('0x23')]();};}function respondWithResult(_0x36f78b,_0x44923b){_0x44923b=_0x44923b||0xc8;return function(_0x24b86c){if(_0x24b86c){return _0x36f78b[_0x536b('0x22')](_0x44923b)[_0x536b('0x24')](_0x24b86c);}};}function respondWithFilteredResult(_0x545369,_0x4965fd){return function(_0x179002){if(_0x179002){var _0xf83153=typeof _0x4965fd[_0x536b('0x25')]==='undefined'&&typeof _0x4965fd[_0x536b('0x26')]===_0x536b('0x27');var _0x254c4a=_0x179002[_0x536b('0x28')];var _0x1b6572=_0xf83153?0x0:_0x4965fd['offset'];var _0x3e6e7c=_0xf83153?_0x179002['count']:_0x4965fd[_0x536b('0x25')]+_0x4965fd['limit'];var _0x5155be;if(_0x3e6e7c>=_0x254c4a){_0x3e6e7c=_0x254c4a;_0x5155be=0xc8;}else{_0x5155be=0xce;}_0x545369[_0x536b('0x22')](_0x5155be);return _0x545369[_0x536b('0x29')](_0x536b('0x2a'),_0x1b6572+'-'+_0x3e6e7c+'/'+_0x254c4a)['json'](_0x179002);}return null;};}function patchUpdates(_0xae5410){return function(_0x289de8){try{jsonpatch['apply'](_0x289de8,_0xae5410,!![]);}catch(_0x19d28c){return BPromise['reject'](_0x19d28c);}return _0x289de8[_0x536b('0x2b')]();};}function saveUpdates(_0x51005a,_0x236890){return function(_0x5a49df){if(_0x5a49df){return _0x5a49df[_0x536b('0x2c')](_0x51005a)[_0x536b('0x2d')](function(_0x31ccfa){return _0x31ccfa;});}return null;};}function handleEntityNotFound(_0x3a904b,_0x46f10e){return function(_0x61d88f){if(!_0x61d88f){_0x3a904b[_0x536b('0x21')](0x194);}return _0x61d88f;};}function handleError(_0x263a8e,_0x203b48){_0x203b48=_0x203b48||0x1f4;return function(_0x562c50){logger[_0x536b('0x2e')](_0x562c50[_0x536b('0x2f')]);if(_0x562c50[_0x536b('0x30')]){delete _0x562c50[_0x536b('0x30')];}_0x263a8e[_0x536b('0x22')](_0x203b48)[_0x536b('0x31')](_0x562c50);};}exports[_0x536b('0x32')]=function(_0x4f9e9d,_0xf91bb2){var _0x418b48={},_0x46d245={},_0x1b7f19={'count':0x0,'rows':[]};var _0x531478=_[_0x536b('0x33')](db[_0x536b('0x34')][_0x536b('0x35')],function(_0x51af09){return{'name':_0x51af09[_0x536b('0x36')],'type':_0x51af09[_0x536b('0x37')]['key']};});_0x46d245[_0x536b('0x38')]=_[_0x536b('0x33')](_0x531478,'name');_0x46d245[_0x536b('0x39')]=_['keys'](_0x4f9e9d[_0x536b('0x39')]);_0x46d245['filters']=_[_0x536b('0x3a')](_0x46d245[_0x536b('0x38')],_0x46d245[_0x536b('0x39')]);_0x418b48['attributes']=_['intersection'](_0x46d245[_0x536b('0x38')],qs[_0x536b('0x3b')](_0x4f9e9d[_0x536b('0x39')][_0x536b('0x3b')]));_0x418b48['attributes']=_0x418b48[_0x536b('0x3c')]['length']?_0x418b48[_0x536b('0x3c')]:_0x46d245[_0x536b('0x38')];if(!_0x4f9e9d[_0x536b('0x39')][_0x536b('0x3d')](_0x536b('0x3e'))){_0x418b48['limit']=qs[_0x536b('0x26')](_0x4f9e9d[_0x536b('0x39')]['limit']);_0x418b48[_0x536b('0x25')]=qs[_0x536b('0x25')](_0x4f9e9d[_0x536b('0x39')][_0x536b('0x25')]);}_0x418b48[_0x536b('0x3f')]=qs[_0x536b('0x40')](_0x4f9e9d[_0x536b('0x39')][_0x536b('0x40')]);_0x418b48['where']=qs[_0x536b('0x41')](_['pick'](_0x4f9e9d['query'],_0x46d245['filters']),_0x531478);if(_0x4f9e9d['query']['filter']){_0x418b48[_0x536b('0x42')]=_[_0x536b('0x43')](_0x418b48[_0x536b('0x42')],{'$or':_[_0x536b('0x33')](_0x531478,function(_0xcf62a4){if(_0xcf62a4[_0x536b('0x37')]!==_0x536b('0x44')){var _0x4a33f8={};_0x4a33f8[_0xcf62a4[_0x536b('0x30')]]={'$like':'%'+_0x4f9e9d[_0x536b('0x39')][_0x536b('0x45')]+'%'};return _0x4a33f8;}})});}_0x418b48=_['merge']({},_0x418b48,_0x4f9e9d[_0x536b('0x46')]);var _0x6627bb={'where':_0x418b48[_0x536b('0x42')]};return db[_0x536b('0x34')][_0x536b('0x28')](_0x6627bb)[_0x536b('0x2d')](function(_0x4303f4){_0x1b7f19[_0x536b('0x28')]=_0x4303f4;if(_0x4f9e9d[_0x536b('0x39')]['includeAll']){_0x418b48[_0x536b('0x47')]=[{'all':!![]}];}return db[_0x536b('0x34')][_0x536b('0x48')](_0x418b48);})['then'](function(_0x589f77){_0x1b7f19[_0x536b('0x49')]=_0x589f77;return _0x1b7f19;})['then'](respondWithFilteredResult(_0xf91bb2,_0x418b48))[_0x536b('0x4a')](handleError(_0xf91bb2,null));};exports['show']=function(_0x5d61c3,_0x2b9fa9){var _0xc90673={'raw':![],'where':{'id':_0x5d61c3[_0x536b('0x4b')]['id']}},_0x47d9b6={};_0x47d9b6[_0x536b('0x38')]=_[_0x536b('0x4c')](db[_0x536b('0x34')][_0x536b('0x35')]);_0x47d9b6[_0x536b('0x39')]=_['keys'](_0x5d61c3[_0x536b('0x39')]);_0x47d9b6[_0x536b('0x41')]=_['intersection'](_0x47d9b6[_0x536b('0x38')],_0x47d9b6['query']);_0xc90673['attributes']=_[_0x536b('0x3a')](_0x47d9b6[_0x536b('0x38')],qs[_0x536b('0x3b')](_0x5d61c3[_0x536b('0x39')]['fields']));_0xc90673['attributes']=_0xc90673[_0x536b('0x3c')]['length']?_0xc90673[_0x536b('0x3c')]:_0x47d9b6[_0x536b('0x38')];if(_0x5d61c3[_0x536b('0x39')][_0x536b('0x4d')]){_0xc90673[_0x536b('0x47')]=[{'all':!![]}];}_0xc90673=_[_0x536b('0x43')]({},_0xc90673,_0x5d61c3['options']);return db[_0x536b('0x34')][_0x536b('0x4e')](_0xc90673)[_0x536b('0x2d')](handleEntityNotFound(_0x2b9fa9,null))[_0x536b('0x2d')](respondWithResult(_0x2b9fa9,null))['catch'](handleError(_0x2b9fa9,null));};exports[_0x536b('0x4f')]=function(_0x330fb2,_0x5b9e20){return db[_0x536b('0x34')]['create'](_0x330fb2['body'],{})[_0x536b('0x2d')](function(_0x102699){var _0x315c2a=_0x330fb2['user'][_0x536b('0x50')]({'plain':!![]});if(!_0x315c2a)throw new Error(_0x536b('0x51'));if(_0x315c2a[_0x536b('0x52')]==='user'){var _0x311f84=_0x102699[_0x536b('0x50')]({'plain':!![]});var _0xb14772=_0x536b('0x53');return db[_0x536b('0x54')][_0x536b('0x4e')]({'where':{'name':_0xb14772,'userProfileId':_0x315c2a[_0x536b('0x55')]},'raw':!![]})[_0x536b('0x2d')](function(_0x570e0c){if(_0x570e0c&&_0x570e0c[_0x536b('0x56')]===0x0){return db['UserProfileResource']['create']({'name':_0x311f84['name'],'resourceId':_0x311f84['id'],'type':_0x570e0c['name'],'sectionId':_0x570e0c['id']},{})[_0x536b('0x2d')](function(){return _0x102699;});}else{return _0x102699;}})[_0x536b('0x4a')](function(_0x3477c8){logger['error'](_0x536b('0x57'),_0x3477c8);throw _0x3477c8;});}return _0x102699;})[_0x536b('0x2d')](respondWithResult(_0x5b9e20,0xc9))[_0x536b('0x4a')](handleError(_0x5b9e20,null));};exports[_0x536b('0x2c')]=function(_0x37bced,_0x2e4799){if(_0x37bced[_0x536b('0x58')]['id']){delete _0x37bced[_0x536b('0x58')]['id'];}return db[_0x536b('0x34')]['find']({'where':{'id':_0x37bced[_0x536b('0x4b')]['id']}})[_0x536b('0x2d')](handleEntityNotFound(_0x2e4799,null))[_0x536b('0x2d')](saveUpdates(_0x37bced[_0x536b('0x58')],null))['then'](respondWithResult(_0x2e4799,null))['catch'](handleError(_0x2e4799,null));};exports[_0x536b('0x59')]=function(_0x377226,_0x1174ee){var _0x1c69a3=_0x377226[_0x536b('0x4b')]['id'];var _0x2a9adf=[];return db['sequelize']['transaction'](function(_0x36886b){var _0x193ff9='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x1c69a3;return db[_0x536b('0x5a')]['query'](_0x193ff9,{'type':db[_0x536b('0x5b')][_0x536b('0x5c')][_0x536b('0x5d')],'raw':!![],'transaction':_0x36886b})[_0x536b('0x2d')](function(_0x4b7c0a){_0x2a9adf=_[_0x536b('0x33')](_0x4b7c0a,function(_0x51e0a2){return Number(_0x51e0a2[_0x536b('0x5e')]);});})['then'](function(){var _0x3d5a04=_0x536b('0x5f')+_0x1c69a3;return db[_0x536b('0x5a')][_0x536b('0x39')](_0x3d5a04,{'type':db[_0x536b('0x5b')][_0x536b('0x5c')]['SELECT'],'raw':!![],'transaction':_0x36886b});})[_0x536b('0x2d')](function(_0x480d3d){var _0x3396f6=_[_0x536b('0x33')](_0x480d3d,function(_0x9742d4){return Number(_0x9742d4[_0x536b('0x60')]);});return db['UserVoiceQueue'][_0x536b('0x59')]({'where':{'UserId':{'$in':_0x2a9adf},'VoiceQueueId':{'$in':_0x3396f6}},'transaction':_0x36886b});})['then'](function(){var _0x2b2017=_0x536b('0x61')+_0x1c69a3;return db[_0x536b('0x5a')][_0x536b('0x39')](_0x2b2017,{'type':db['Sequelize'][_0x536b('0x5c')][_0x536b('0x5d')],'raw':!![],'transaction':_0x36886b});})['then'](function(_0x47c632){var _0x24f3f8=_[_0x536b('0x33')](_0x47c632,function(_0x25ff26){return Number(_0x25ff26[_0x536b('0x62')]);});return db[_0x536b('0x63')][_0x536b('0x59')]({'where':{'UserId':{'$in':_0x2a9adf},'MailQueueId':{'$in':_0x24f3f8}},'transaction':_0x36886b});})['then'](function(){var _0x329975=_0x536b('0x64')+_0x1c69a3;return db[_0x536b('0x5a')]['query'](_0x329975,{'type':db['Sequelize'][_0x536b('0x5c')][_0x536b('0x5d')],'raw':!![],'transaction':_0x36886b});})[_0x536b('0x2d')](function(_0x55ecd7){var _0x4d3cf5=_[_0x536b('0x33')](_0x55ecd7,function(_0x4285ed){return Number(_0x4285ed[_0x536b('0x65')]);});return db['UserSmsQueue']['destroy']({'where':{'UserId':{'$in':_0x2a9adf},'SmsQueueId':{'$in':_0x4d3cf5}},'transaction':_0x36886b});})['then'](function(){var _0x5ce696=_0x536b('0x66')+_0x1c69a3;return db[_0x536b('0x5a')][_0x536b('0x39')](_0x5ce696,{'type':db['Sequelize'][_0x536b('0x5c')]['SELECT'],'raw':!![],'transaction':_0x36886b});})['then'](function(_0x3ccfea){var _0x53a238=_[_0x536b('0x33')](_0x3ccfea,function(_0x821e83){return Number(_0x821e83[_0x536b('0x67')]);});return db[_0x536b('0x68')]['destroy']({'where':{'UserId':{'$in':_0x2a9adf},'ChatQueueId':{'$in':_0x53a238}},'transaction':_0x36886b});})[_0x536b('0x2d')](function(){var _0x1be5dd='SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1c69a3;return db[_0x536b('0x5a')][_0x536b('0x39')](_0x1be5dd,{'type':db['Sequelize'][_0x536b('0x5c')][_0x536b('0x5d')],'raw':!![],'transaction':_0x36886b});})['then'](function(_0x26086d){var _0xaa5ede=_['map'](_0x26086d,function(_0x2df58d){return Number(_0x2df58d[_0x536b('0x69')]);});return db[_0x536b('0x6a')]['destroy']({'where':{'UserId':{'$in':_0x2a9adf},'FaxQueueId':{'$in':_0xaa5ede}},'transaction':_0x36886b});})[_0x536b('0x2d')](function(){var _0x4ac543=_0x536b('0x6b')+_0x1c69a3;return db[_0x536b('0x5a')][_0x536b('0x39')](_0x4ac543,{'type':db[_0x536b('0x5b')][_0x536b('0x5c')][_0x536b('0x5d')],'raw':!![],'transaction':_0x36886b});})['then'](function(_0x4057a9){var _0x1cfc00=_[_0x536b('0x33')](_0x4057a9,function(_0x2bb2a2){return Number(_0x2bb2a2[_0x536b('0x6c')]);});return db[_0x536b('0x6d')][_0x536b('0x59')]({'where':{'UserId':{'$in':_0x2a9adf},'OpenchannelQueueId':{'$in':_0x1cfc00}},'transaction':_0x36886b});})[_0x536b('0x2d')](function(){var _0x308c19='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1c69a3;return db[_0x536b('0x5a')]['query'](_0x308c19,{'type':db[_0x536b('0x5b')][_0x536b('0x5c')][_0x536b('0x5d')],'raw':!![],'transaction':_0x36886b});})[_0x536b('0x2d')](function(_0x4dbee2){var _0x236538=_[_0x536b('0x33')](_0x4dbee2,function(_0x91528d){return Number(_0x91528d['WhatsappQueueId']);});return db[_0x536b('0x6e')]['destroy']({'where':{'UserId':{'$in':_0x2a9adf},'WhatsappQueueId':{'$in':_0x236538}},'transaction':_0x36886b});})[_0x536b('0x2d')](function(){return db['TeamVoicePrefix']['find']({'where':{'TeamId':_0x1c69a3}});})[_0x536b('0x2d')](function(_0x1be832){if(_0x1be832===null){return;}return db[_0x536b('0x6f')][_0x536b('0x59')]({'where':{'UserId':{'$in':_0x2a9adf},'VoicePrefixId':_0x1be832[_0x536b('0x70')]},'transaction':_0x36886b});})['then'](function(){return db[_0x536b('0x34')][_0x536b('0x59')]({'where':{'id':_0x1c69a3},'cascade':!![],'transaction':_0x36886b});})[_0x536b('0x2d')](function(_0x2da841){if(_0x2da841===0x0){_0x1174ee[_0x536b('0x21')](0x194);}else{return db['UserProfileResource']['destroy']({'where':{'type':'Teams','resourceId':_0x1c69a3},'cascade':!![],'transaction':_0x36886b})[_0x536b('0x2d')](function(){_0x1174ee[_0x536b('0x22')](0xcc)[_0x536b('0x23')]();});}})['catch'](function(_0x3f3d03){_0x1174ee['status'](0x1f4)[_0x536b('0x31')](_0x3f3d03);});});};exports[_0x536b('0x71')]=function(_0x49664d,_0x5d8d81,_0xcce554){return db[_0x536b('0x34')][_0x536b('0x72')]({'where':{'id':_0x49664d['params']['id']}})['then'](handleEntityNotFound(_0x5d8d81,null))['then'](function(_0x5605d3){if(!_0x49664d[_0x536b('0x39')][_0x536b('0x73')]||!utils[_0x536b('0x74')](_0x49664d[_0x536b('0x39')][_0x536b('0x73')])){throw new db['Sequelize'][(_0x536b('0x75'))](_0x536b('0x76'));}var _0x4003e9={};var _0x1206ce={};_0x1206ce[_0x536b('0x38')]=_[_0x536b('0x4c')](db[_[_0x536b('0x77')](_0x49664d[_0x536b('0x39')][_0x536b('0x73')][_0x536b('0x78')]())+_0x536b('0x79')]['rawAttributes']);_0x1206ce[_0x536b('0x39')]=_[_0x536b('0x4c')](_0x49664d[_0x536b('0x39')]);_0x1206ce[_0x536b('0x41')]=_['intersection'](_0x1206ce[_0x536b('0x38')],_0x1206ce[_0x536b('0x39')]);_0x4003e9[_0x536b('0x3c')]=_['intersection'](_0x1206ce[_0x536b('0x38')],qs['fields'](_0x49664d[_0x536b('0x39')][_0x536b('0x3b')]));_0x4003e9['attributes']=_0x4003e9[_0x536b('0x3c')][_0x536b('0x7a')]?_0x4003e9['attributes']:_0x1206ce['model'];_0x4003e9[_0x536b('0x26')]=qs[_0x536b('0x26')](_0x49664d[_0x536b('0x39')][_0x536b('0x26')]);_0x4003e9[_0x536b('0x25')]=qs['offset'](_0x49664d[_0x536b('0x39')][_0x536b('0x25')]);_0x4003e9[_0x536b('0x3f')]=qs[_0x536b('0x40')](_0x49664d[_0x536b('0x39')]['sort']);_0x4003e9['where']=qs[_0x536b('0x41')](_[_0x536b('0x7b')](_0x49664d[_0x536b('0x39')],_0x1206ce[_0x536b('0x41')]));_0x4003e9=_[_0x536b('0x43')]({},_0x4003e9,_0x49664d[_0x536b('0x46')]);return _0x5605d3[_0x536b('0x50')+_[_0x536b('0x77')](_0x49664d['query'][_0x536b('0x73')][_0x536b('0x78')]())+'Queues'](_0x4003e9);})['then'](respondWithResult(_0x5d8d81,null))[_0x536b('0x4a')](handleError(_0x5d8d81,null));};exports[_0x536b('0x7c')]=function(_0x276998,_0x2b90be,_0x49ee85){return db[_0x536b('0x34')]['findOne']({'where':{'id':_0x276998[_0x536b('0x4b')]['id']}})[_0x536b('0x2d')](function(_0x536147){if(_0x536147){if(!_0x276998[_0x536b('0x58')]['channel']||!utils[_0x536b('0x74')](_0x276998['body'][_0x536b('0x73')])){throw new db['Sequelize'][(_0x536b('0x75'))](_0x536b('0x76'));}return _0x536147[_0x536b('0x7d')+_[_0x536b('0x77')](_0x276998[_0x536b('0x58')][_0x536b('0x73')][_0x536b('0x78')]())+'Queues'](_0x276998[_0x536b('0x58')][_0x536b('0x7e')]);}return null;})[_0x536b('0x2d')](handleEntityNotFound(_0x2b90be,null))['then'](respondWithStatusCode(_0x2b90be,null))[_0x536b('0x4a')](handleError(_0x2b90be,null));};exports[_0x536b('0x7f')]=function(_0x45261e,_0xf08241,_0x4e29b3){return db[_0x536b('0x34')][_0x536b('0x72')]({'where':{'id':_0x45261e[_0x536b('0x4b')]['id']}})[_0x536b('0x2d')](function(_0x4baedf){if(_0x4baedf){if(!_0x45261e[_0x536b('0x39')][_0x536b('0x73')]||!utils[_0x536b('0x74')](_0x45261e['query']['channel'])){throw new db[(_0x536b('0x5b'))][(_0x536b('0x75'))](_0x536b('0x76'));}return _0x4baedf[_0x536b('0x80')+_['capitalize'](_0x45261e[_0x536b('0x39')]['channel'][_0x536b('0x78')]())+_0x536b('0x81')](_0x45261e[_0x536b('0x39')]['ids']);}return null;})[_0x536b('0x2d')](handleEntityNotFound(_0xf08241,null))['then'](respondWithStatusCode(_0xf08241,null))[_0x536b('0x4a')](handleError(_0xf08241,null));};exports['addAgents']=function(_0x83c4de,_0x4f4131){var _0x239d60=_['isArray'](_0x83c4de[_0x536b('0x58')][_0x536b('0x7e')])?_0x83c4de['body'][_0x536b('0x7e')]:[_0x83c4de[_0x536b('0x58')]['ids']];var _0x2c8e71=_0x83c4de[_0x536b('0x4b')]['id'];return db[_0x536b('0x34')][_0x536b('0x4e')]({'where':{'id':_0x2c8e71}})['then'](handleEntityNotFound(_0x4f4131,null))[_0x536b('0x2d')](function(_0x183e9b){if(_0x183e9b){var _0x3140e5=[_0x536b('0x82'),_0x536b('0x83'),_0x536b('0x84'),_0x536b('0x85'),_0x536b('0x86'),'Openchannel',_0x536b('0x87')];return db[_0x536b('0x5a')]['transaction'](function(_0x2ff2ca){var _0x4441e4=_[_0x536b('0x33')](_0x3140e5,function(_0x107efd){var _0x5e1b59={'attributes':['id',_0x536b('0x30')]};if(_0x107efd==='Voice'){_0x5e1b59[_0x536b('0x88')]={'attributes':[_0x536b('0x89')]};}return _0x183e9b[_0x536b('0x50')+_0x107efd+'Queues'](_0x5e1b59)['then'](function(_0xd26d09){var _0x2111f4=_[_0x536b('0x33')](_0xd26d09,function(_0x29ed13){var _0x20cce0=_[_0x536b('0x33')](_0x239d60,function(_0xece903){var _0x3262e8={'where':{'UserId':_0xece903,[_0x107efd+_0x536b('0x8a')]:_0x29ed13['id']},'transaction':_0x2ff2ca};if(_0x107efd==='Voice'){_0x3262e8['defaults']={'penalty':_0x29ed13[_0x536b('0x8b')][_0x536b('0x89')]};}return db[_0x536b('0x8c')+_0x107efd+'Queue'][_0x536b('0x8d')](_0x3262e8)[_0x536b('0x2d')](function(){socket['emit'](_0x536b('0x8e')+_0x107efd+_0x536b('0x8f'),{'UserId':_0xece903,[_0x107efd+_0x536b('0x8a')]:_0x29ed13['id']});if(_0x107efd!=='Voice'){return;}return db[_0x536b('0x8c')]['findAll']({'where':{'id':_0x239d60,'online':0x1},'attributes':['id',_0x536b('0x30'),_0x536b('0x90'),'voicePause','interface'],'raw':!![]})[_0x536b('0x2d')](function(_0x4dc205){var _0xe1405f=_[_0x536b('0x33')](_0x4dc205,function(_0x2eff47){return db[_0x536b('0x91')]['upsert']({'membername':_0x2eff47[_0x536b('0x30')],'UserId':_0x2eff47['id'],'queue_name':_0x29ed13[_0x536b('0x30')],'VoiceQueueId':_0x29ed13['id'],'interface':_[_0x536b('0x92')](_0x2eff47[_0x536b('0x93')])?util[_0x536b('0x94')](_0x536b('0x95'),_0x2eff47[_0x536b('0x30')]):_0x2eff47[_0x536b('0x93')],'paused':_0x2eff47[_0x536b('0x96')]||![],'penalty':_0x29ed13['TeamVoiceQueue'][_0x536b('0x89')]},{'transaction':_0x2ff2ca});});return Promise[_0x536b('0x97')](_0xe1405f);});});});return Promise[_0x536b('0x97')](_0x20cce0);});return Promise[_0x536b('0x97')](_0x2111f4);})['then'](function(){return db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x2c8e71}})['then'](function(_0x2ae5a7){if(_0x2ae5a7){var _0x56d5a7=_[_0x536b('0x33')](_0x239d60,function(_0x449fc0){db[_0x536b('0x6f')][_0x536b('0x98')]({'UserId':_0x449fc0,'VoicePrefixId':_0x2ae5a7[_0x536b('0x70')]});});return Promise['all'](_0x56d5a7);}});});});return Promise[_0x536b('0x97')](_0x4441e4)[_0x536b('0x2d')](function(){return _0x183e9b[_0x536b('0x99')](_0x239d60,{'transaction':_0x2ff2ca})[_0x536b('0x9a')](function(_0xf7fd47){return _0xf7fd47;});});});}})['then'](respondWithResult(_0x4f4131,null))[_0x536b('0x4a')](handleError(_0x4f4131,null));};exports[_0x536b('0x9b')]=function(_0x2e02b,_0x1f17b2){var _0x2c2000=_['isArray'](_0x2e02b['query'][_0x536b('0x7e')])?_0x2e02b[_0x536b('0x39')]['ids']:[_0x2e02b[_0x536b('0x39')][_0x536b('0x7e')]];var _0x40330a=_0x2e02b[_0x536b('0x4b')]['id'];return db[_0x536b('0x34')][_0x536b('0x4e')]({'where':{'id':_0x40330a}})[_0x536b('0x2d')](handleEntityNotFound(_0x1f17b2,null))['then'](function(_0x3dc837){if(_0x3dc837){var _0x583d50=['Voice','Chat',_0x536b('0x84'),'Sms',_0x536b('0x86'),_0x536b('0x9c'),'Whatsapp'];return db['sequelize']['transaction'](function(_0x12fca7){var _0x34c29b=_[_0x536b('0x33')](_0x583d50,function(_0xa7f0be){var _0x5c376d={'attributes':['id',_0x536b('0x30')]};return _0x3dc837[_0x536b('0x50')+_0xa7f0be+_0x536b('0x81')](_0x5c376d)[_0x536b('0x2d')](function(_0x1bd811){var _0x3a7527=_['map'](_0x1bd811,function(_0x4309af){return _0x4309af[_0x536b('0x9b')](_0x2c2000,{'transaction':_0x12fca7})['then'](function(){var _0x4e0668=_[_0x536b('0x33')](_0x2c2000,function(_0x5348ce){socket[_0x536b('0x9d')](_0x536b('0x8e')+_0xa7f0be+'Queue:remove',{'UserId':Number(_0x5348ce),[_0xa7f0be+_0x536b('0x8a')]:_0x4309af['id']});if(_0xa7f0be!=='Voice'){return;}return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x4309af['id'],'UserId':_0x5348ce},'transaction':_0x12fca7});});return Promise[_0x536b('0x97')](_0x4e0668);});});return Promise['all'](_0x3a7527);});});return Promise[_0x536b('0x97')](_0x34c29b)[_0x536b('0x2d')](function(){return _0x3dc837[_0x536b('0x9b')](_0x2c2000,{'transaction':_0x12fca7});})[_0x536b('0x2d')](function(){return db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x40330a}})[_0x536b('0x2d')](function(_0x473216){if(_0x473216){var _0x4cb24b=_[_0x536b('0x33')](_0x2c2000,function(_0x2ca808){db[_0x536b('0x6f')][_0x536b('0x59')]({'where':{'UserId':_0x2ca808,'VoicePrefixId':_0x473216[_0x536b('0x70')]}});});return Promise[_0x536b('0x97')](_0x4cb24b);}});});});}})['then'](respondWithStatusCode(_0x1f17b2,null))[_0x536b('0x4a')](handleError(_0x1f17b2,null));};exports[_0x536b('0x9e')]=function(_0x40a360,_0x29b801,_0x5b8942){var _0x2c68c6={};var _0xfd713b={};var _0x39409f;var _0x1a0941;return db[_0x536b('0x34')]['findOne']({'where':{'id':_0x40a360['params']['id']}})[_0x536b('0x2d')](handleEntityNotFound(_0x29b801,null))['then'](function(_0x16a11d){if(_0x16a11d){_0x39409f=_0x16a11d;_0xfd713b[_0x536b('0x38')]=_[_0x536b('0x4c')](db[_0x536b('0x8c')][_0x536b('0x35')]);_0xfd713b[_0x536b('0x39')]=_[_0x536b('0x4c')](_0x40a360[_0x536b('0x39')]);_0xfd713b[_0x536b('0x41')]=_[_0x536b('0x3a')](_0xfd713b[_0x536b('0x38')],_0xfd713b[_0x536b('0x39')]);_0x2c68c6['attributes']=_[_0x536b('0x3a')](_0xfd713b[_0x536b('0x38')],qs['fields'](_0x40a360['query']['fields']));_0x2c68c6[_0x536b('0x3c')]=_0x2c68c6['attributes'][_0x536b('0x7a')]?_0x2c68c6['attributes']:_0xfd713b[_0x536b('0x38')];_0x2c68c6['order']=qs[_0x536b('0x40')](_0x40a360[_0x536b('0x39')][_0x536b('0x40')]);_0x2c68c6['where']=qs[_0x536b('0x41')](_[_0x536b('0x7b')](_0x40a360[_0x536b('0x39')],_0xfd713b[_0x536b('0x41')]));if(_0x40a360[_0x536b('0x39')]['filter']){_0x2c68c6[_0x536b('0x42')]=_[_0x536b('0x43')](_0x2c68c6[_0x536b('0x42')],{'$or':_[_0x536b('0x33')](_0x2c68c6[_0x536b('0x3c')],function(_0x50b23c){var _0x279a5e={};_0x279a5e[_0x50b23c]={'$like':'%'+_0x40a360[_0x536b('0x39')][_0x536b('0x45')]+'%'};return _0x279a5e;})});}_0x2c68c6=_[_0x536b('0x43')]({},_0x2c68c6,_0x40a360[_0x536b('0x46')]);return _0x39409f[_0x536b('0x9e')](_0x2c68c6);}})[_0x536b('0x2d')](function(_0x75acb8){if(_0x75acb8){_0x1a0941=_0x75acb8[_0x536b('0x7a')];if(!_0x40a360[_0x536b('0x39')][_0x536b('0x3d')]('nolimit')){_0x2c68c6[_0x536b('0x26')]=qs[_0x536b('0x26')](_0x40a360[_0x536b('0x39')][_0x536b('0x26')]);_0x2c68c6['offset']=qs[_0x536b('0x25')](_0x40a360[_0x536b('0x39')]['offset']);}return _0x39409f['getAgents'](_0x2c68c6);}})[_0x536b('0x2d')](function(_0x2dc990){if(_0x2dc990){return _0x2dc990?{'count':_0x1a0941,'rows':_0x2dc990}:null;}})[_0x536b('0x2d')](respondWithResult(_0x29b801,null))['catch'](handleError(_0x29b801,null));};
\ No newline at end of file
+var _0x27ce=['Whatsapp','through','penalty','QueueId','User','findOrCreate','emit','Queue:save','online','isNil','interface','format','voicePause','TeamVoiceQueue','all','TeamVoicePrefix','UserVoicePrefix','upsert','VoicePrefixId','spread','removeAgents','Queue:remove','UserVoiceQueueRt','nolimit','getAgents','rimraf','zip-dir','request-promise','moment','mustache','sox','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','defaults','redis','./team.socket','sendStatus','status','end','json','offset','undefined','limit','count','reject','update','then','error','stack','name','send','Team','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','map','VIRTUAL','filter','options','include','findAll','rows','includeAll','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Teams','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','destroy','transaction','Sequelize','QueryTypes','SELECT','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','sequelize','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','getQueues','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','findOne','ids','removeQueues','addAgents','isArray','Voice','Chat','Mail','Sms','Fax','Openchannel'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x27ce,0x137));var _0xe27c=function(_0x377696,_0x251061){_0x377696=_0x377696-0x0;var _0x43bb54=_0x27ce[_0x377696];return _0x43bb54;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe27c('0x0'));var zipdir=require(_0xe27c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe27c('0x2'));var moment=require(_0xe27c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe27c('0x4'));var util=require('util');var path=require('path');var sox=require(_0xe27c('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe27c('0x6'));var crypto=require(_0xe27c('0x7'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe27c('0x8'));var Redis=require(_0xe27c('0x9'));var authService=require(_0xe27c('0xa'));var qs=require(_0xe27c('0xb'));var as=require(_0xe27c('0xc'));var hardwareService=require(_0xe27c('0xd'));var logger=require('../../config/logger')(_0xe27c('0xe'));var utils=require('../../config/utils');var config=require(_0xe27c('0xf'));var licenseUtil=require('../../config/license/util');var db=require(_0xe27c('0x10'))['db'];config['redis']=_[_0xe27c('0x11')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe27c('0x12')]));require(_0xe27c('0x13'))['register'](socket);function respondWithStatusCode(_0x55d872,_0x54b4f0){_0x54b4f0=_0x54b4f0||0xcc;return function(_0x4acd45){if(_0x4acd45){return _0x55d872[_0xe27c('0x14')](_0x54b4f0);}return _0x55d872[_0xe27c('0x15')](_0x54b4f0)[_0xe27c('0x16')]();};}function respondWithResult(_0x90ee76,_0x180c7e){_0x180c7e=_0x180c7e||0xc8;return function(_0x70d940){if(_0x70d940){return _0x90ee76[_0xe27c('0x15')](_0x180c7e)[_0xe27c('0x17')](_0x70d940);}};}function respondWithFilteredResult(_0x2ec631,_0x4e322e){return function(_0x29f3d8){if(_0x29f3d8){var _0x546610=typeof _0x4e322e[_0xe27c('0x18')]===_0xe27c('0x19')&&typeof _0x4e322e[_0xe27c('0x1a')]===_0xe27c('0x19');var _0x1748d2=_0x29f3d8['count'];var _0xf7c2ac=_0x546610?0x0:_0x4e322e[_0xe27c('0x18')];var _0xb42252=_0x546610?_0x29f3d8[_0xe27c('0x1b')]:_0x4e322e[_0xe27c('0x18')]+_0x4e322e['limit'];var _0x5aaf31;if(_0xb42252>=_0x1748d2){_0xb42252=_0x1748d2;_0x5aaf31=0xc8;}else{_0x5aaf31=0xce;}_0x2ec631[_0xe27c('0x15')](_0x5aaf31);return _0x2ec631['set']('Content-Range',_0xf7c2ac+'-'+_0xb42252+'/'+_0x1748d2)[_0xe27c('0x17')](_0x29f3d8);}return null;};}function patchUpdates(_0x46dcf0){return function(_0x3abad1){try{jsonpatch['apply'](_0x3abad1,_0x46dcf0,!![]);}catch(_0x42ca39){return BPromise[_0xe27c('0x1c')](_0x42ca39);}return _0x3abad1['save']();};}function saveUpdates(_0x2168a6,_0x341473){return function(_0x596e64){if(_0x596e64){return _0x596e64[_0xe27c('0x1d')](_0x2168a6)[_0xe27c('0x1e')](function(_0x5255a3){return _0x5255a3;});}return null;};}function handleEntityNotFound(_0x5d14ab,_0x3b76b7){return function(_0x11fabd){if(!_0x11fabd){_0x5d14ab['sendStatus'](0x194);}return _0x11fabd;};}function handleError(_0x5bf52e,_0xc24e5d){_0xc24e5d=_0xc24e5d||0x1f4;return function(_0x365d9c){logger[_0xe27c('0x1f')](_0x365d9c[_0xe27c('0x20')]);if(_0x365d9c['name']){delete _0x365d9c[_0xe27c('0x21')];}_0x5bf52e['status'](_0xc24e5d)[_0xe27c('0x22')](_0x365d9c);};}exports['index']=function(_0x4b535a,_0x26043f){var _0x17b03c={},_0x5f5d6a={},_0x2fbe0e={'count':0x0,'rows':[]};var _0x1a360c=_['map'](db[_0xe27c('0x23')][_0xe27c('0x24')],function(_0x586c62){return{'name':_0x586c62[_0xe27c('0x25')],'type':_0x586c62[_0xe27c('0x26')]['key']};});_0x5f5d6a[_0xe27c('0x27')]=_['map'](_0x1a360c,'name');_0x5f5d6a[_0xe27c('0x28')]=_[_0xe27c('0x29')](_0x4b535a[_0xe27c('0x28')]);_0x5f5d6a[_0xe27c('0x2a')]=_['intersection'](_0x5f5d6a[_0xe27c('0x27')],_0x5f5d6a['query']);_0x17b03c['attributes']=_[_0xe27c('0x2b')](_0x5f5d6a[_0xe27c('0x27')],qs[_0xe27c('0x2c')](_0x4b535a[_0xe27c('0x28')][_0xe27c('0x2c')]));_0x17b03c[_0xe27c('0x2d')]=_0x17b03c[_0xe27c('0x2d')][_0xe27c('0x2e')]?_0x17b03c['attributes']:_0x5f5d6a[_0xe27c('0x27')];if(!_0x4b535a[_0xe27c('0x28')][_0xe27c('0x2f')]('nolimit')){_0x17b03c['limit']=qs[_0xe27c('0x1a')](_0x4b535a[_0xe27c('0x28')][_0xe27c('0x1a')]);_0x17b03c['offset']=qs[_0xe27c('0x18')](_0x4b535a[_0xe27c('0x28')][_0xe27c('0x18')]);}_0x17b03c[_0xe27c('0x30')]=qs[_0xe27c('0x31')](_0x4b535a[_0xe27c('0x28')]['sort']);_0x17b03c[_0xe27c('0x32')]=qs[_0xe27c('0x2a')](_[_0xe27c('0x33')](_0x4b535a[_0xe27c('0x28')],_0x5f5d6a[_0xe27c('0x2a')]),_0x1a360c);if(_0x4b535a[_0xe27c('0x28')]['filter']){_0x17b03c['where']=_[_0xe27c('0x34')](_0x17b03c[_0xe27c('0x32')],{'$or':_[_0xe27c('0x35')](_0x1a360c,function(_0x94e139){if(_0x94e139[_0xe27c('0x26')]!==_0xe27c('0x36')){var _0x3b75b7={};_0x3b75b7[_0x94e139[_0xe27c('0x21')]]={'$like':'%'+_0x4b535a['query'][_0xe27c('0x37')]+'%'};return _0x3b75b7;}})});}_0x17b03c=_[_0xe27c('0x34')]({},_0x17b03c,_0x4b535a[_0xe27c('0x38')]);var _0x251b59={'where':_0x17b03c[_0xe27c('0x32')]};return db[_0xe27c('0x23')][_0xe27c('0x1b')](_0x251b59)[_0xe27c('0x1e')](function(_0x32c12c){_0x2fbe0e['count']=_0x32c12c;if(_0x4b535a[_0xe27c('0x28')]['includeAll']){_0x17b03c[_0xe27c('0x39')]=[{'all':!![]}];}return db[_0xe27c('0x23')][_0xe27c('0x3a')](_0x17b03c);})[_0xe27c('0x1e')](function(_0x4afc79){_0x2fbe0e[_0xe27c('0x3b')]=_0x4afc79;return _0x2fbe0e;})['then'](respondWithFilteredResult(_0x26043f,_0x17b03c))['catch'](handleError(_0x26043f,null));};exports['show']=function(_0x15aa68,_0x1bab72){var _0xf7134a={'raw':![],'where':{'id':_0x15aa68['params']['id']}},_0x205a64={};_0x205a64['model']=_[_0xe27c('0x29')](db[_0xe27c('0x23')]['rawAttributes']);_0x205a64[_0xe27c('0x28')]=_[_0xe27c('0x29')](_0x15aa68['query']);_0x205a64[_0xe27c('0x2a')]=_[_0xe27c('0x2b')](_0x205a64[_0xe27c('0x27')],_0x205a64[_0xe27c('0x28')]);_0xf7134a['attributes']=_['intersection'](_0x205a64[_0xe27c('0x27')],qs[_0xe27c('0x2c')](_0x15aa68[_0xe27c('0x28')][_0xe27c('0x2c')]));_0xf7134a[_0xe27c('0x2d')]=_0xf7134a['attributes'][_0xe27c('0x2e')]?_0xf7134a[_0xe27c('0x2d')]:_0x205a64['model'];if(_0x15aa68[_0xe27c('0x28')][_0xe27c('0x3c')]){_0xf7134a['include']=[{'all':!![]}];}_0xf7134a=_[_0xe27c('0x34')]({},_0xf7134a,_0x15aa68[_0xe27c('0x38')]);return db[_0xe27c('0x23')][_0xe27c('0x3d')](_0xf7134a)[_0xe27c('0x1e')](handleEntityNotFound(_0x1bab72,null))[_0xe27c('0x1e')](respondWithResult(_0x1bab72,null))[_0xe27c('0x3e')](handleError(_0x1bab72,null));};exports[_0xe27c('0x3f')]=function(_0x5f5338,_0x2d93ba){return db['Team']['create'](_0x5f5338['body'],{})[_0xe27c('0x1e')](function(_0x1b449a){var _0x26699b=_0x5f5338[_0xe27c('0x40')][_0xe27c('0x41')]({'plain':!![]});if(!_0x26699b)throw new Error(_0xe27c('0x42'));if(_0x26699b['role']===_0xe27c('0x40')){var _0x5bda13=_0x1b449a[_0xe27c('0x41')]({'plain':!![]});var _0x116eda=_0xe27c('0x43');return db[_0xe27c('0x44')][_0xe27c('0x3d')]({'where':{'name':_0x116eda,'userProfileId':_0x26699b['userProfileId']},'raw':!![]})['then'](function(_0x28d35e){if(_0x28d35e&&_0x28d35e['autoAssociation']===0x0){return db[_0xe27c('0x45')][_0xe27c('0x3f')]({'name':_0x5bda13[_0xe27c('0x21')],'resourceId':_0x5bda13['id'],'type':_0x28d35e[_0xe27c('0x21')],'sectionId':_0x28d35e['id']},{})[_0xe27c('0x1e')](function(){return _0x1b449a;});}else{return _0x1b449a;}})[_0xe27c('0x3e')](function(_0x598cb1){logger['error'](_0xe27c('0x46'),_0x598cb1);throw _0x598cb1;});}return _0x1b449a;})[_0xe27c('0x1e')](respondWithResult(_0x2d93ba,0xc9))[_0xe27c('0x3e')](handleError(_0x2d93ba,null));};exports[_0xe27c('0x1d')]=function(_0x2e0837,_0x19c21a){if(_0x2e0837[_0xe27c('0x47')]['id']){delete _0x2e0837[_0xe27c('0x47')]['id'];}return db[_0xe27c('0x23')][_0xe27c('0x3d')]({'where':{'id':_0x2e0837[_0xe27c('0x48')]['id']}})[_0xe27c('0x1e')](handleEntityNotFound(_0x19c21a,null))[_0xe27c('0x1e')](saveUpdates(_0x2e0837[_0xe27c('0x47')],null))[_0xe27c('0x1e')](respondWithResult(_0x19c21a,null))['catch'](handleError(_0x19c21a,null));};exports[_0xe27c('0x49')]=function(_0x3734a8,_0x32c829){var _0x36814e=_0x3734a8['params']['id'];var _0x5eda3e=[];return db['sequelize'][_0xe27c('0x4a')](function(_0x13499e){var _0x27000e='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x36814e;return db['sequelize']['query'](_0x27000e,{'type':db[_0xe27c('0x4b')][_0xe27c('0x4c')][_0xe27c('0x4d')],'raw':!![],'transaction':_0x13499e})[_0xe27c('0x1e')](function(_0x1fc838){_0x5eda3e=_[_0xe27c('0x35')](_0x1fc838,function(_0x16189e){return Number(_0x16189e['UserId']);});})[_0xe27c('0x1e')](function(){var _0x46d912=_0xe27c('0x4e')+_0x36814e;return db[_0xe27c('0x4f')][_0xe27c('0x28')](_0x46d912,{'type':db[_0xe27c('0x4b')]['QueryTypes'][_0xe27c('0x4d')],'raw':!![],'transaction':_0x13499e});})['then'](function(_0x4e19ff){var _0x43d57f=_[_0xe27c('0x35')](_0x4e19ff,function(_0x28442f){return Number(_0x28442f['VoiceQueueId']);});return db[_0xe27c('0x50')]['destroy']({'where':{'UserId':{'$in':_0x5eda3e},'VoiceQueueId':{'$in':_0x43d57f}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){var _0x5e2683=_0xe27c('0x51')+_0x36814e;return db[_0xe27c('0x4f')][_0xe27c('0x28')](_0x5e2683,{'type':db[_0xe27c('0x4b')][_0xe27c('0x4c')][_0xe27c('0x4d')],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x1323ff){var _0x32a23f=_[_0xe27c('0x35')](_0x1323ff,function(_0x2f8ab3){return Number(_0x2f8ab3[_0xe27c('0x52')]);});return db[_0xe27c('0x53')][_0xe27c('0x49')]({'where':{'UserId':{'$in':_0x5eda3e},'MailQueueId':{'$in':_0x32a23f}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){var _0x1e3939=_0xe27c('0x54')+_0x36814e;return db['sequelize'][_0xe27c('0x28')](_0x1e3939,{'type':db[_0xe27c('0x4b')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x5640b3){var _0x169395=_[_0xe27c('0x35')](_0x5640b3,function(_0x423099){return Number(_0x423099['SmsQueueId']);});return db[_0xe27c('0x55')][_0xe27c('0x49')]({'where':{'UserId':{'$in':_0x5eda3e},'SmsQueueId':{'$in':_0x169395}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){var _0x356047=_0xe27c('0x56')+_0x36814e;return db[_0xe27c('0x4f')]['query'](_0x356047,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x1c5e4a){var _0x155f62=_[_0xe27c('0x35')](_0x1c5e4a,function(_0x2e9129){return Number(_0x2e9129['ChatQueueId']);});return db[_0xe27c('0x57')]['destroy']({'where':{'UserId':{'$in':_0x5eda3e},'ChatQueueId':{'$in':_0x155f62}},'transaction':_0x13499e});})['then'](function(){var _0x3ced30=_0xe27c('0x58')+_0x36814e;return db[_0xe27c('0x4f')][_0xe27c('0x28')](_0x3ced30,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x281d31){var _0x116e8d=_[_0xe27c('0x35')](_0x281d31,function(_0xad77f1){return Number(_0xad77f1[_0xe27c('0x59')]);});return db[_0xe27c('0x5a')][_0xe27c('0x49')]({'where':{'UserId':{'$in':_0x5eda3e},'FaxQueueId':{'$in':_0x116e8d}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){var _0x2e8e44=_0xe27c('0x5b')+_0x36814e;return db['sequelize'][_0xe27c('0x28')](_0x2e8e44,{'type':db[_0xe27c('0x4b')][_0xe27c('0x4c')][_0xe27c('0x4d')],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x382305){var _0x44f085=_['map'](_0x382305,function(_0x5bcba7){return Number(_0x5bcba7[_0xe27c('0x5c')]);});return db[_0xe27c('0x5d')]['destroy']({'where':{'UserId':{'$in':_0x5eda3e},'OpenchannelQueueId':{'$in':_0x44f085}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){var _0x1cc47c=_0xe27c('0x5e')+_0x36814e;return db[_0xe27c('0x4f')]['query'](_0x1cc47c,{'type':db[_0xe27c('0x4b')][_0xe27c('0x4c')][_0xe27c('0x4d')],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x45cfee){var _0x585523=_[_0xe27c('0x35')](_0x45cfee,function(_0x1d9e27){return Number(_0x1d9e27[_0xe27c('0x5f')]);});return db[_0xe27c('0x60')]['destroy']({'where':{'UserId':{'$in':_0x5eda3e},'WhatsappQueueId':{'$in':_0x585523}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){return db['TeamVoicePrefix'][_0xe27c('0x3d')]({'where':{'TeamId':_0x36814e}});})['then'](function(_0x31d8cc){if(_0x31d8cc===null){return;}return db['UserVoicePrefix'][_0xe27c('0x49')]({'where':{'UserId':{'$in':_0x5eda3e},'VoicePrefixId':_0x31d8cc['VoicePrefixId']},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){return db[_0xe27c('0x23')][_0xe27c('0x49')]({'where':{'id':_0x36814e},'cascade':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x4eaac9){if(_0x4eaac9===0x0){_0x32c829[_0xe27c('0x14')](0x194);}else{return db[_0xe27c('0x45')][_0xe27c('0x49')]({'where':{'type':_0xe27c('0x43'),'resourceId':_0x36814e},'cascade':!![],'transaction':_0x13499e})[_0xe27c('0x1e')](function(){_0x32c829[_0xe27c('0x15')](0xcc)[_0xe27c('0x16')]();});}})[_0xe27c('0x3e')](function(_0x46f385){_0x32c829[_0xe27c('0x15')](0x1f4)[_0xe27c('0x22')](_0x46f385);});});};exports[_0xe27c('0x61')]=function(_0x5f3ac8,_0x440850,_0x2959e1){return db[_0xe27c('0x23')]['findOne']({'where':{'id':_0x5f3ac8[_0xe27c('0x48')]['id']}})[_0xe27c('0x1e')](handleEntityNotFound(_0x440850,null))[_0xe27c('0x1e')](function(_0xb8c7d7){if(!_0x5f3ac8[_0xe27c('0x28')][_0xe27c('0x62')]||!utils[_0xe27c('0x63')](_0x5f3ac8[_0xe27c('0x28')]['channel'])){throw new db[(_0xe27c('0x4b'))][(_0xe27c('0x64'))](_0xe27c('0x65'));}var _0x56285b={};var _0x421265={};_0x421265[_0xe27c('0x27')]=_['keys'](db[_[_0xe27c('0x66')](_0x5f3ac8[_0xe27c('0x28')][_0xe27c('0x62')][_0xe27c('0x67')]())+_0xe27c('0x68')][_0xe27c('0x24')]);_0x421265['query']=_[_0xe27c('0x29')](_0x5f3ac8[_0xe27c('0x28')]);_0x421265[_0xe27c('0x2a')]=_[_0xe27c('0x2b')](_0x421265[_0xe27c('0x27')],_0x421265[_0xe27c('0x28')]);_0x56285b[_0xe27c('0x2d')]=_['intersection'](_0x421265['model'],qs[_0xe27c('0x2c')](_0x5f3ac8[_0xe27c('0x28')][_0xe27c('0x2c')]));_0x56285b[_0xe27c('0x2d')]=_0x56285b[_0xe27c('0x2d')][_0xe27c('0x2e')]?_0x56285b[_0xe27c('0x2d')]:_0x421265[_0xe27c('0x27')];_0x56285b[_0xe27c('0x1a')]=qs['limit'](_0x5f3ac8[_0xe27c('0x28')][_0xe27c('0x1a')]);_0x56285b[_0xe27c('0x18')]=qs[_0xe27c('0x18')](_0x5f3ac8[_0xe27c('0x28')]['offset']);_0x56285b[_0xe27c('0x30')]=qs[_0xe27c('0x31')](_0x5f3ac8['query'][_0xe27c('0x31')]);_0x56285b[_0xe27c('0x32')]=qs['filters'](_[_0xe27c('0x33')](_0x5f3ac8[_0xe27c('0x28')],_0x421265[_0xe27c('0x2a')]));_0x56285b=_['merge']({},_0x56285b,_0x5f3ac8['options']);return _0xb8c7d7[_0xe27c('0x41')+_[_0xe27c('0x66')](_0x5f3ac8[_0xe27c('0x28')][_0xe27c('0x62')][_0xe27c('0x67')]())+_0xe27c('0x69')](_0x56285b);})[_0xe27c('0x1e')](respondWithResult(_0x440850,null))[_0xe27c('0x3e')](handleError(_0x440850,null));};exports[_0xe27c('0x6a')]=function(_0x169573,_0x394105,_0x1cca0b){return db[_0xe27c('0x23')][_0xe27c('0x6b')]({'where':{'id':_0x169573[_0xe27c('0x48')]['id']}})[_0xe27c('0x1e')](function(_0x33215c){if(_0x33215c){if(!_0x169573[_0xe27c('0x47')][_0xe27c('0x62')]||!utils[_0xe27c('0x63')](_0x169573[_0xe27c('0x47')][_0xe27c('0x62')])){throw new db['Sequelize']['ValidationError'](_0xe27c('0x65'));}return _0x33215c['add'+_['capitalize'](_0x169573[_0xe27c('0x47')]['channel'][_0xe27c('0x67')]())+_0xe27c('0x69')](_0x169573['body'][_0xe27c('0x6c')]);}return null;})[_0xe27c('0x1e')](handleEntityNotFound(_0x394105,null))[_0xe27c('0x1e')](respondWithStatusCode(_0x394105,null))[_0xe27c('0x3e')](handleError(_0x394105,null));};exports[_0xe27c('0x6d')]=function(_0x22b955,_0x28d9c8,_0x468e26){return db['Team'][_0xe27c('0x6b')]({'where':{'id':_0x22b955[_0xe27c('0x48')]['id']}})[_0xe27c('0x1e')](function(_0x466af0){if(_0x466af0){if(!_0x22b955['query']['channel']||!utils[_0xe27c('0x63')](_0x22b955[_0xe27c('0x28')][_0xe27c('0x62')])){throw new db[(_0xe27c('0x4b'))][(_0xe27c('0x64'))](_0xe27c('0x65'));}return _0x466af0['remove'+_[_0xe27c('0x66')](_0x22b955[_0xe27c('0x28')][_0xe27c('0x62')][_0xe27c('0x67')]())+_0xe27c('0x69')](_0x22b955[_0xe27c('0x28')][_0xe27c('0x6c')]);}return null;})[_0xe27c('0x1e')](handleEntityNotFound(_0x28d9c8,null))[_0xe27c('0x1e')](respondWithStatusCode(_0x28d9c8,null))[_0xe27c('0x3e')](handleError(_0x28d9c8,null));};exports[_0xe27c('0x6e')]=function(_0x16cb4d,_0x5e4897){var _0x294bca=_[_0xe27c('0x6f')](_0x16cb4d[_0xe27c('0x47')][_0xe27c('0x6c')])?_0x16cb4d[_0xe27c('0x47')][_0xe27c('0x6c')]:[_0x16cb4d[_0xe27c('0x47')][_0xe27c('0x6c')]];var _0x1f253f=_0x16cb4d['params']['id'];return db[_0xe27c('0x23')][_0xe27c('0x3d')]({'where':{'id':_0x1f253f}})[_0xe27c('0x1e')](handleEntityNotFound(_0x5e4897,null))[_0xe27c('0x1e')](function(_0x3faa76){if(_0x3faa76){var _0x287f88=[_0xe27c('0x70'),_0xe27c('0x71'),_0xe27c('0x72'),_0xe27c('0x73'),_0xe27c('0x74'),_0xe27c('0x75'),_0xe27c('0x76')];return db[_0xe27c('0x4f')][_0xe27c('0x4a')](function(_0x56a764){var _0x5edca3=_[_0xe27c('0x35')](_0x287f88,function(_0x268187){var _0x561aa8={'attributes':['id',_0xe27c('0x21')]};if(_0x268187===_0xe27c('0x70')){_0x561aa8[_0xe27c('0x77')]={'attributes':[_0xe27c('0x78')]};}return _0x3faa76['get'+_0x268187+_0xe27c('0x69')](_0x561aa8)[_0xe27c('0x1e')](function(_0x69f1f1){var _0x3298db=_[_0xe27c('0x35')](_0x69f1f1,function(_0x55cea2){var _0x1be15c=_[_0xe27c('0x35')](_0x294bca,function(_0x51843b){var _0x14caae={'where':{'UserId':_0x51843b,[_0x268187+_0xe27c('0x79')]:_0x55cea2['id']},'transaction':_0x56a764};if(_0x268187===_0xe27c('0x70')){_0x14caae['defaults']={'penalty':_0x55cea2['TeamVoiceQueue'][_0xe27c('0x78')]};}return db[_0xe27c('0x7a')+_0x268187+_0xe27c('0x68')][_0xe27c('0x7b')](_0x14caae)[_0xe27c('0x1e')](function(){socket[_0xe27c('0x7c')](_0xe27c('0x40')+_0x268187+_0xe27c('0x7d'),{'UserId':_0x51843b,[_0x268187+_0xe27c('0x79')]:_0x55cea2['id']});if(_0x268187!==_0xe27c('0x70')){return;}return db[_0xe27c('0x7a')][_0xe27c('0x3a')]({'where':{'id':_0x294bca,'online':0x1},'attributes':['id','name',_0xe27c('0x7e'),'voicePause','interface'],'raw':!![]})[_0xe27c('0x1e')](function(_0x5b2a2d){var _0x5f2098=_[_0xe27c('0x35')](_0x5b2a2d,function(_0x4d8a2f){return db['UserVoiceQueueRt']['upsert']({'membername':_0x4d8a2f[_0xe27c('0x21')],'UserId':_0x4d8a2f['id'],'queue_name':_0x55cea2['name'],'VoiceQueueId':_0x55cea2['id'],'interface':_[_0xe27c('0x7f')](_0x4d8a2f[_0xe27c('0x80')])?util[_0xe27c('0x81')]('SIP/%s',_0x4d8a2f[_0xe27c('0x21')]):_0x4d8a2f[_0xe27c('0x80')],'paused':_0x4d8a2f[_0xe27c('0x82')]||![],'penalty':_0x55cea2[_0xe27c('0x83')]['penalty']},{'transaction':_0x56a764});});return Promise['all'](_0x5f2098);});});});return Promise['all'](_0x1be15c);});return Promise[_0xe27c('0x84')](_0x3298db);})[_0xe27c('0x1e')](function(){return db[_0xe27c('0x85')][_0xe27c('0x6b')]({'where':{'teamId':_0x1f253f}})['then'](function(_0x597ae1){if(_0x597ae1){var _0x58d6ae=_[_0xe27c('0x35')](_0x294bca,function(_0xd24a1e){db[_0xe27c('0x86')][_0xe27c('0x87')]({'UserId':_0xd24a1e,'VoicePrefixId':_0x597ae1[_0xe27c('0x88')]});});return Promise['all'](_0x58d6ae);}});});});return Promise[_0xe27c('0x84')](_0x5edca3)['then'](function(){return _0x3faa76['addAgents'](_0x294bca,{'transaction':_0x56a764})[_0xe27c('0x89')](function(_0x218e5b){return _0x218e5b;});});});}})[_0xe27c('0x1e')](respondWithResult(_0x5e4897,null))[_0xe27c('0x3e')](handleError(_0x5e4897,null));};exports['removeAgents']=function(_0x163412,_0x28ba1a){var _0x4b0010=_[_0xe27c('0x6f')](_0x163412['query'][_0xe27c('0x6c')])?_0x163412[_0xe27c('0x28')][_0xe27c('0x6c')]:[_0x163412['query'][_0xe27c('0x6c')]];var _0x6eb1d0=_0x163412['params']['id'];return db[_0xe27c('0x23')][_0xe27c('0x3d')]({'where':{'id':_0x6eb1d0}})['then'](handleEntityNotFound(_0x28ba1a,null))[_0xe27c('0x1e')](function(_0x286ecd){if(_0x286ecd){var _0x20cadf=[_0xe27c('0x70'),_0xe27c('0x71'),'Mail',_0xe27c('0x73'),'Fax','Openchannel',_0xe27c('0x76')];return db[_0xe27c('0x4f')]['transaction'](function(_0xe28143){var _0x3c52da=_[_0xe27c('0x35')](_0x20cadf,function(_0x140e23){var _0x24069a={'attributes':['id',_0xe27c('0x21')]};return _0x286ecd[_0xe27c('0x41')+_0x140e23+'Queues'](_0x24069a)['then'](function(_0x3258c7){var _0x2bcb69=_[_0xe27c('0x35')](_0x3258c7,function(_0x33e88d){return _0x33e88d[_0xe27c('0x8a')](_0x4b0010,{'transaction':_0xe28143})[_0xe27c('0x1e')](function(){var _0xd79997=_[_0xe27c('0x35')](_0x4b0010,function(_0x3b8b5f){socket[_0xe27c('0x7c')](_0xe27c('0x40')+_0x140e23+_0xe27c('0x8b'),{'UserId':Number(_0x3b8b5f),[_0x140e23+_0xe27c('0x79')]:_0x33e88d['id']});if(_0x140e23!=='Voice'){return;}return db[_0xe27c('0x8c')]['destroy']({'where':{'VoiceQueueId':_0x33e88d['id'],'UserId':_0x3b8b5f},'transaction':_0xe28143});});return Promise[_0xe27c('0x84')](_0xd79997);});});return Promise[_0xe27c('0x84')](_0x2bcb69);});});return Promise['all'](_0x3c52da)[_0xe27c('0x1e')](function(){return _0x286ecd[_0xe27c('0x8a')](_0x4b0010,{'transaction':_0xe28143});})[_0xe27c('0x1e')](function(){return db[_0xe27c('0x85')][_0xe27c('0x6b')]({'where':{'teamId':_0x6eb1d0}})[_0xe27c('0x1e')](function(_0x56e56c){if(_0x56e56c){var _0xd37cab=_[_0xe27c('0x35')](_0x4b0010,function(_0x18a5e4){db[_0xe27c('0x86')]['destroy']({'where':{'UserId':_0x18a5e4,'VoicePrefixId':_0x56e56c[_0xe27c('0x88')]}});});return Promise[_0xe27c('0x84')](_0xd37cab);}});});});}})[_0xe27c('0x1e')](respondWithStatusCode(_0x28ba1a,null))[_0xe27c('0x3e')](handleError(_0x28ba1a,null));};exports['getAgents']=function(_0x2a048d,_0x4a49bb,_0x5b9219){var _0x35b1fd={};var _0xcdacb4={};var _0x5678d0;var _0x1e71bb;return db[_0xe27c('0x23')][_0xe27c('0x6b')]({'where':{'id':_0x2a048d['params']['id']}})[_0xe27c('0x1e')](handleEntityNotFound(_0x4a49bb,null))['then'](function(_0x16a785){if(_0x16a785){_0x5678d0=_0x16a785;_0xcdacb4[_0xe27c('0x27')]=_['keys'](db[_0xe27c('0x7a')][_0xe27c('0x24')]);_0xcdacb4[_0xe27c('0x28')]=_[_0xe27c('0x29')](_0x2a048d['query']);_0xcdacb4[_0xe27c('0x2a')]=_['intersection'](_0xcdacb4[_0xe27c('0x27')],_0xcdacb4[_0xe27c('0x28')]);_0x35b1fd[_0xe27c('0x2d')]=_[_0xe27c('0x2b')](_0xcdacb4[_0xe27c('0x27')],qs[_0xe27c('0x2c')](_0x2a048d[_0xe27c('0x28')]['fields']));_0x35b1fd['attributes']=_0x35b1fd[_0xe27c('0x2d')][_0xe27c('0x2e')]?_0x35b1fd[_0xe27c('0x2d')]:_0xcdacb4['model'];_0x35b1fd[_0xe27c('0x30')]=qs['sort'](_0x2a048d[_0xe27c('0x28')][_0xe27c('0x31')]);_0x35b1fd['where']=qs['filters'](_[_0xe27c('0x33')](_0x2a048d[_0xe27c('0x28')],_0xcdacb4[_0xe27c('0x2a')]));if(_0x2a048d[_0xe27c('0x28')][_0xe27c('0x37')]){_0x35b1fd[_0xe27c('0x32')]=_[_0xe27c('0x34')](_0x35b1fd[_0xe27c('0x32')],{'$or':_['map'](_0x35b1fd['attributes'],function(_0xfe91f8){var _0x2d2853={};_0x2d2853[_0xfe91f8]={'$like':'%'+_0x2a048d[_0xe27c('0x28')]['filter']+'%'};return _0x2d2853;})});}_0x35b1fd=_[_0xe27c('0x34')]({},_0x35b1fd,_0x2a048d[_0xe27c('0x38')]);return _0x5678d0['getAgents'](_0x35b1fd);}})['then'](function(_0x1907ba){if(_0x1907ba){_0x1e71bb=_0x1907ba[_0xe27c('0x2e')];if(!_0x2a048d[_0xe27c('0x28')][_0xe27c('0x2f')](_0xe27c('0x8d'))){_0x35b1fd[_0xe27c('0x1a')]=qs[_0xe27c('0x1a')](_0x2a048d[_0xe27c('0x28')][_0xe27c('0x1a')]);_0x35b1fd[_0xe27c('0x18')]=qs['offset'](_0x2a048d[_0xe27c('0x28')][_0xe27c('0x18')]);}return _0x5678d0[_0xe27c('0x8e')](_0x35b1fd);}})[_0xe27c('0x1e')](function(_0x15cbbd){if(_0x15cbbd){return _0x15cbbd?{'count':_0x1e71bb,'rows':_0x15cbbd}:null;}})[_0xe27c('0x1e')](respondWithResult(_0x4a49bb,null))[_0xe27c('0x3e')](handleError(_0x4a49bb,null));};
\ No newline at end of file
index 90083ef..aa25488 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a26=['update','remove','hasOwnProperty','hook','exports','events','../../mysqldb','Team','setMaxListeners'];(function(_0x1e1ed4,_0x3fe6a8){var _0x1593d7=function(_0x23e76e){while(--_0x23e76e){_0x1e1ed4['push'](_0x1e1ed4['shift']());}};_0x1593d7(++_0x3fe6a8);}(_0x3a26,0x1f4));var _0x63a2=function(_0x43b3cf,_0x4c75e8){_0x43b3cf=_0x43b3cf-0x0;var _0x287a6d=_0x3a26[_0x43b3cf];return _0x287a6d;};'use strict';var EventEmitter=require(_0x63a2('0x0'));var Team=require(_0x63a2('0x1'))['db'][_0x63a2('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x63a2('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x63a2('0x4'),'afterDestroy':_0x63a2('0x5')};function emitEvent(_0x596626){return function(_0xe0eae6,_0x50e38f,_0x233075){TeamEvents['emit'](_0x596626+':'+_0xe0eae6['id'],_0xe0eae6);TeamEvents['emit'](_0x596626,_0xe0eae6);_0x233075(null);};}for(var e in events){if(events[_0x63a2('0x6')](e)){var event=events[e];Team[_0x63a2('0x7')](e,emitEvent(event));}}module[_0x63a2('0x8')]=TeamEvents;
\ No newline at end of file
+var _0x1766=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','Team','setMaxListeners','save'];(function(_0x466821,_0x18270d){var _0x445e31=function(_0x49636c){while(--_0x49636c){_0x466821['push'](_0x466821['shift']());}};_0x445e31(++_0x18270d);}(_0x1766,0x9c));var _0x6176=function(_0x345202,_0x38eb0a){_0x345202=_0x345202-0x0;var _0x25bedc=_0x1766[_0x345202];return _0x25bedc;};'use strict';var EventEmitter=require('events');var Team=require(_0x6176('0x0'))['db'][_0x6176('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0x6176('0x2')](0x0);var events={'afterCreate':_0x6176('0x3'),'afterUpdate':_0x6176('0x4'),'afterDestroy':_0x6176('0x5')};function emitEvent(_0x2cb2ef){return function(_0x1e2c5b,_0x17ee7f,_0x295978){TeamEvents[_0x6176('0x6')](_0x2cb2ef+':'+_0x1e2c5b['id'],_0x1e2c5b);TeamEvents[_0x6176('0x6')](_0x2cb2ef,_0x1e2c5b);_0x295978(null);};}for(var e in events){if(events[_0x6176('0x7')](e)){var event=events[e];Team[_0x6176('0x8')](e,emitEvent(event));}}module[_0x6176('0x9')]=TeamEvents;
\ No newline at end of file
index 5a8cbcc..42fc0cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80c7=['resolve','map','all','./team.attributes','get','Queues','then','channel','catch','exports','define','Team','Chat','Openchannel','Sms','Voice','Whatsapp'];(function(_0x467e8e,_0x162852){var _0x16c2a5=function(_0x380795){while(--_0x380795){_0x467e8e['push'](_0x467e8e['shift']());}};_0x16c2a5(++_0x162852);}(_0x80c7,0x18a));var _0x780c=function(_0x1e44a4,_0x58f0ea){_0x1e44a4=_0x1e44a4-0x0;var _0x2d69b0=_0x80c7[_0x1e44a4];return _0x2d69b0;};'use strict';var _=require('lodash');var attributes=require(_0x780c('0x0'));function getQueuesByChannel(_0x4b019f,_0x1ee4c5){var _0x548736=_0x780c('0x1')+_0x1ee4c5+_0x780c('0x2');return _0x4b019f[_0x548736]()[_0x780c('0x3')](function(_0x5a032b){return _['map'](_0x5a032b,function(_0x1cf3c3){_0x1cf3c3['setDataValue'](_0x780c('0x4'),_0x1ee4c5);return _0x1cf3c3;});})[_0x780c('0x5')](function(_0x46b7b2){throw _0x46b7b2;});}module[_0x780c('0x6')]=function(_0x17f901){return _0x17f901[_0x780c('0x7')](_0x780c('0x8'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x1fcd0f=this;var _0x5b6028=[_0x780c('0x9'),'Fax','Mail',_0x780c('0xa'),_0x780c('0xb'),_0x780c('0xc'),_0x780c('0xd')];return Promise[_0x780c('0xe')]()[_0x780c('0x3')](function(){var _0x13a88b=_[_0x780c('0xf')](_0x5b6028,function(_0x42ec4b){return getQueuesByChannel(_0x1fcd0f,_0x42ec4b);});return Promise[_0x780c('0x10')](_0x13a88b);})[_0x780c('0x5')](function(_0x5ef3f2){throw _0x5ef3f2;});}}});};
\ No newline at end of file
+var _0xeb0b=['get','then','setDataValue','catch','exports','define','teams','Chat','Fax','Openchannel','Sms','Whatsapp','resolve','all','lodash','./team.attributes'];(function(_0x113ff3,_0x43f59c){var _0x57717a=function(_0x236099){while(--_0x236099){_0x113ff3['push'](_0x113ff3['shift']());}};_0x57717a(++_0x43f59c);}(_0xeb0b,0x18e));var _0xbeb0=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xeb0b[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xbeb0('0x0'));var attributes=require(_0xbeb0('0x1'));function getQueuesByChannel(_0xc8b913,_0x37584e){var _0x432785=_0xbeb0('0x2')+_0x37584e+'Queues';return _0xc8b913[_0x432785]()[_0xbeb0('0x3')](function(_0x29594a){return _['map'](_0x29594a,function(_0x2afd27){_0x2afd27[_0xbeb0('0x4')]('channel',_0x37584e);return _0x2afd27;});})[_0xbeb0('0x5')](function(_0x41625c){throw _0x41625c;});}module[_0xbeb0('0x6')]=function(_0x589815){return _0x589815[_0xbeb0('0x7')]('Team',attributes,{'tableName':_0xbeb0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x32b751=this;var _0x30561a=[_0xbeb0('0x9'),_0xbeb0('0xa'),'Mail',_0xbeb0('0xb'),_0xbeb0('0xc'),'Voice',_0xbeb0('0xd')];return Promise[_0xbeb0('0xe')]()['then'](function(){var _0x53ff16=_['map'](_0x30561a,function(_0x3dc575){return getQueuesByChannel(_0x32b751,_0x3dc575);});return Promise[_0xbeb0('0xf')](_0x53ff16);})['catch'](function(_0x527a73){throw _0x527a73;});}}});};
\ No newline at end of file
index 1a4266e..9e8a829 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x032e=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','then','info','Team,\x20%s,\x20%s','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x350902,_0x209604){var _0x4bbba5=function(_0x402a4c){while(--_0x402a4c){_0x350902['push'](_0x350902['shift']());}};_0x4bbba5(++_0x209604);}(_0x032e,0x124));var _0xe032=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x032e[_0x618414];return _0x21c19a;};'use strict';var _=require(_0xe032('0x0'));var util=require('util');var moment=require(_0xe032('0x1'));var BPromise=require(_0xe032('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe032('0x3'))['db'];var utils=require(_0xe032('0x4'));var logger=require(_0xe032('0x5'))(_0xe032('0x6'));var config=require(_0xe032('0x7'));var jayson=require(_0xe032('0x8'));var client=jayson[_0xe032('0x9')][_0xe032('0xa')]({'port':0x232a});config[_0xe032('0xb')]=_[_0xe032('0xc')](config[_0xe032('0xb')],{'host':_0xe032('0xd'),'port':0x18eb});var socket=require(_0xe032('0xe'))(new Redis(config[_0xe032('0xb')]));require(_0xe032('0xf'))[_0xe032('0x10')](socket);function respondWithRpcPromise(_0x2dc9e5,_0x167bd9,_0x4aec53){return new BPromise(function(_0x1382e1,_0x1ce2ae){return client[_0xe032('0x11')](_0x2dc9e5,_0x4aec53)[_0xe032('0x12')](function(_0x244f93){logger[_0xe032('0x13')](_0xe032('0x14'),_0x167bd9,'request\x20sent');logger[_0xe032('0x15')](_0xe032('0x16'),_0x167bd9,_0xe032('0x17'),JSON[_0xe032('0x18')](_0x244f93));if(_0x244f93['error']){if(_0x244f93[_0xe032('0x19')][_0xe032('0x1a')]===0x1f4){logger[_0xe032('0x19')](_0xe032('0x14'),_0x167bd9,_0x244f93[_0xe032('0x19')][_0xe032('0x1b')]);return _0x1ce2ae(_0x244f93[_0xe032('0x19')]['message']);}logger[_0xe032('0x19')](_0xe032('0x14'),_0x167bd9,_0x244f93[_0xe032('0x19')][_0xe032('0x1b')]);return _0x1382e1(_0x244f93[_0xe032('0x19')][_0xe032('0x1b')]);}else{logger['info'](_0xe032('0x14'),_0x167bd9,_0xe032('0x17'));_0x1382e1(_0x244f93[_0xe032('0x1c')][_0xe032('0x1b')]);}})[_0xe032('0x1d')](function(_0x5721ce){logger['error']('Team,\x20%s,\x20%s',_0x167bd9,_0x5721ce);_0x1ce2ae(_0x5721ce);});});}
\ No newline at end of file
+var _0x21ff=['localhost','register','request','then','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','Team,\x20%s,\x20%s','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis'];(function(_0x4c1d2f,_0x497986){var _0x2edbad=function(_0x18cba9){while(--_0x18cba9){_0x4c1d2f['push'](_0x4c1d2f['shift']());}};_0x2edbad(++_0x497986);}(_0x21ff,0x101));var _0xf21f=function(_0x2eb5bc,_0x4634c6){_0x2eb5bc=_0x2eb5bc-0x0;var _0x51c7b1=_0x21ff[_0x2eb5bc];return _0x51c7b1;};'use strict';var _=require(_0xf21f('0x0'));var util=require('util');var moment=require(_0xf21f('0x1'));var BPromise=require(_0xf21f('0x2'));var rs=require(_0xf21f('0x3'));var fs=require('fs');var Redis=require(_0xf21f('0x4'));var db=require(_0xf21f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf21f('0x6'))(_0xf21f('0x7'));var config=require(_0xf21f('0x8'));var jayson=require(_0xf21f('0x9'));var client=jayson['client'][_0xf21f('0xa')]({'port':0x232a});config['redis']=_[_0xf21f('0xb')](config[_0xf21f('0xc')],{'host':_0xf21f('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./team.socket')[_0xf21f('0xe')](socket);function respondWithRpcPromise(_0xa66e97,_0x1dae5a,_0x36315d){return new BPromise(function(_0x26d9b9,_0x3a600e){return client[_0xf21f('0xf')](_0xa66e97,_0x36315d)[_0xf21f('0x10')](function(_0x1411a7){logger[_0xf21f('0x11')]('Team,\x20%s,\x20%s',_0x1dae5a,_0xf21f('0x12'));logger[_0xf21f('0x13')](_0xf21f('0x14'),_0x1dae5a,_0xf21f('0x12'),JSON[_0xf21f('0x15')](_0x1411a7));if(_0x1411a7[_0xf21f('0x16')]){if(_0x1411a7[_0xf21f('0x16')]['code']===0x1f4){logger['error']('Team,\x20%s,\x20%s',_0x1dae5a,_0x1411a7[_0xf21f('0x16')][_0xf21f('0x17')]);return _0x3a600e(_0x1411a7[_0xf21f('0x16')]['message']);}logger[_0xf21f('0x16')]('Team,\x20%s,\x20%s',_0x1dae5a,_0x1411a7[_0xf21f('0x16')][_0xf21f('0x17')]);return _0x26d9b9(_0x1411a7['error'][_0xf21f('0x17')]);}else{logger[_0xf21f('0x11')]('Team,\x20%s,\x20%s',_0x1dae5a,_0xf21f('0x12'));_0x26d9b9(_0x1411a7[_0xf21f('0x18')][_0xf21f('0x17')]);}})[_0xf21f('0x19')](function(_0x492cdf){logger[_0xf21f('0x16')](_0xf21f('0x1a'),_0x1dae5a,_0x492cdf);_0x3a600e(_0x492cdf);});});}
\ No newline at end of file
index a3e9e33..18f4a1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa4=['length','team:','./team.events','save','remove','emit','removeListener','register'];(function(_0x59d517,_0x166ca2){var _0x522a2e=function(_0x49fd5a){while(--_0x49fd5a){_0x59d517['push'](_0x59d517['shift']());}};_0x522a2e(++_0x166ca2);}(_0x6aa4,0xb2));var _0x46aa=function(_0x3a3857,_0x98cfc3){_0x3a3857=_0x3a3857-0x0;var _0x31ff92=_0x6aa4[_0x3a3857];return _0x31ff92;};'use strict';var TeamEvents=require(_0x46aa('0x0'));var events=[_0x46aa('0x1'),_0x46aa('0x2'),'update'];function createListener(_0x25cf6a,_0x598ef0){return function(_0x1242ef){_0x598ef0[_0x46aa('0x3')](_0x25cf6a,_0x1242ef);};}function removeListener(_0x3d4a1e,_0x3b47ba){return function(){TeamEvents[_0x46aa('0x4')](_0x3d4a1e,_0x3b47ba);};}exports[_0x46aa('0x5')]=function(_0x290f7d){for(var _0x8d685c=0x0,_0x3a7d40=events[_0x46aa('0x6')];_0x8d685c<_0x3a7d40;_0x8d685c++){var _0x482dfb=events[_0x8d685c];var _0x12ad97=createListener(_0x46aa('0x7')+_0x482dfb,_0x290f7d);TeamEvents['on'](_0x482dfb,_0x12ad97);}};
\ No newline at end of file
+var _0xf35d=['register','length','./team.events','remove','emit','removeListener'];(function(_0x4c2e71,_0x4a324c){var _0x4862d0=function(_0x55d054){while(--_0x55d054){_0x4c2e71['push'](_0x4c2e71['shift']());}};_0x4862d0(++_0x4a324c);}(_0xf35d,0x17c));var _0xdf35=function(_0x45e81e,_0x37adc6){_0x45e81e=_0x45e81e-0x0;var _0x334162=_0xf35d[_0x45e81e];return _0x334162;};'use strict';var TeamEvents=require(_0xdf35('0x0'));var events=['save',_0xdf35('0x1'),'update'];function createListener(_0x1c77d6,_0x2c4abd){return function(_0x5a1692){_0x2c4abd[_0xdf35('0x2')](_0x1c77d6,_0x5a1692);};}function removeListener(_0x523d72,_0x222e83){return function(){TeamEvents[_0xdf35('0x3')](_0x523d72,_0x222e83);};}exports[_0xdf35('0x4')]=function(_0x7cfe71){for(var _0x41036b=0x0,_0x30e2ee=events[_0xdf35('0x5')];_0x41036b<_0x30e2ee;_0x41036b++){var _0x5802cf=events[_0x41036b];var _0x49eb59=createListener('team:'+_0x5802cf,_0x7cfe71);TeamEvents['on'](_0x5802cf,_0x49eb59);}};
\ No newline at end of file
index dafb736..31da514 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf96=['sequelize','exports','INTEGER'];(function(_0x50d26b,_0x259ae9){var _0x5b8cdc=function(_0x5b5fa7){while(--_0x5b5fa7){_0x50d26b['push'](_0x50d26b['shift']());}};_0x5b8cdc(++_0x259ae9);}(_0xdf96,0xfc));var _0x6df9=function(_0x389f4f,_0x3b8dfd){_0x389f4f=_0x389f4f-0x0;var _0x41c9b8=_0xdf96[_0x389f4f];return _0x41c9b8;};'use strict';var Sequelize=require(_0x6df9('0x0'));module[_0x6df9('0x1')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x6df9('0x2')]}};
\ No newline at end of file
+var _0x58e9=['exports','INTEGER','sequelize'];(function(_0x1f4c0b,_0x28f740){var _0xa2eddb=function(_0x51f179){while(--_0x51f179){_0x1f4c0b['push'](_0x1f4c0b['shift']());}};_0xa2eddb(++_0x28f740);}(_0x58e9,0x15e));var _0x958e=function(_0x1f0529,_0x57e665){_0x1f0529=_0x1f0529-0x0;var _0x43bfe6=_0x58e9[_0x1f0529];return _0x43bfe6;};'use strict';var Sequelize=require(_0x958e('0x0'));module[_0x958e('0x1')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x958e('0x2')]}};
\ No newline at end of file
index c37da50..36ebcb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75e3=['request-promise','./teamVoicePrefix.attributes','TeamVoicePrefix','team_has_voice_prefixes','util','../../config/logger','moment','bluebird'];(function(_0x6019ad,_0x177ce3){var _0x327802=function(_0x214cce){while(--_0x214cce){_0x6019ad['push'](_0x6019ad['shift']());}};_0x327802(++_0x177ce3);}(_0x75e3,0x104));var _0x375e=function(_0x5351b8,_0x1bed41){_0x5351b8=_0x5351b8-0x0;var _0x61dee6=_0x75e3[_0x5351b8];return _0x61dee6;};'use strict';var _=require('lodash');var util=require(_0x375e('0x0'));var logger=require(_0x375e('0x1'))('api');var moment=require(_0x375e('0x2'));var BPromise=require(_0x375e('0x3'));var rp=require(_0x375e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x375e('0x5'));module['exports']=function(_0x17e32c,_0x52f876){return _0x17e32c['define'](_0x375e('0x6'),attributes,{'tableName':_0x375e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8caf=['request-promise','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','TeamVoicePrefix','team_has_voice_prefixes','util','../../config/logger','api','moment','bluebird'];(function(_0xd01c26,_0x2269ba){var _0x2aedb6=function(_0xa8ea50){while(--_0xa8ea50){_0xd01c26['push'](_0xd01c26['shift']());}};_0x2aedb6(++_0x2269ba);}(_0x8caf,0x1ab));var _0xf8ca=function(_0x4e1d2d,_0x5a44e1){_0x4e1d2d=_0x4e1d2d-0x0;var _0x520f96=_0x8caf[_0x4e1d2d];return _0x520f96;};'use strict';var _=require('lodash');var util=require(_0xf8ca('0x0'));var logger=require(_0xf8ca('0x1'))(_0xf8ca('0x2'));var moment=require(_0xf8ca('0x3'));var BPromise=require(_0xf8ca('0x4'));var rp=require(_0xf8ca('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf8ca('0x6'));var config=require(_0xf8ca('0x7'));var attributes=require(_0xf8ca('0x8'));module[_0xf8ca('0x9')]=function(_0x1e2888,_0x20c10a){return _0x1e2888['define'](_0xf8ca('0xa'),attributes,{'tableName':_0xf8ca('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18c42a5..cc404c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x647508,_0x39d116){var _0x4c54b1=function(_0x54e222){while(--_0x54e222){_0x647508['push'](_0x647508['shift']());}};_0x4c54b1(++_0x39d116);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x18f302,_0x373c83){var _0x1c3aa9=function(_0x625aec){while(--_0x625aec){_0x18f302['push'](_0x18f302['shift']());}};_0x1c3aa9(++_0x373c83);}(_0xe706,0xa3));var _0x6e70=function(_0x237340,_0x39b15d){_0x237340=_0x237340-0x0;var _0x5542c8=_0xe706[_0x237340];return _0x5542c8;};'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 4c00f57..feab27a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x444a=['sequelize','exports','INTEGER'];(function(_0x4a25e3,_0xffc2aa){var _0xc2ac02=function(_0x1f0eba){while(--_0x1f0eba){_0x4a25e3['push'](_0x4a25e3['shift']());}};_0xc2ac02(++_0xffc2aa);}(_0x444a,0xba));var _0xa444=function(_0x5a6644,_0x45d612){_0x5a6644=_0x5a6644-0x0;var _0x3a2a5d=_0x444a[_0x5a6644];return _0x3a2a5d;};'use strict';var Sequelize=require(_0xa444('0x0'));module[_0xa444('0x1')]={'penalty':{'type':Sequelize[_0xa444('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdba6=['sequelize','INTEGER'];(function(_0xfcfc35,_0x41125e){var _0x13a3c7=function(_0x594a49){while(--_0x594a49){_0xfcfc35['push'](_0xfcfc35['shift']());}};_0x13a3c7(++_0x41125e);}(_0xdba6,0xe6));var _0x6dba=function(_0x2b0fd0,_0x5a7d75){_0x2b0fd0=_0x2b0fd0-0x0;var _0x2aecb8=_0xdba6[_0x2b0fd0];return _0x2aecb8;};'use strict';var Sequelize=require(_0x6dba('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x6dba('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 1306a1f..88ff47e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9879=['request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','team_has_voice_queues','lodash','util','../../config/logger','moment'];(function(_0x16a223,_0x31b6e8){var _0x5ded66=function(_0x25eb5f){while(--_0x25eb5f){_0x16a223['push'](_0x16a223['shift']());}};_0x5ded66(++_0x31b6e8);}(_0x9879,0x98));var _0x9987=function(_0x49f683,_0x1200fa){_0x49f683=_0x49f683-0x0;var _0x463692=_0x9879[_0x49f683];return _0x463692;};'use strict';var _=require(_0x9987('0x0'));var util=require(_0x9987('0x1'));var logger=require(_0x9987('0x2'))('api');var moment=require(_0x9987('0x3'));var BPromise=require('bluebird');var rp=require(_0x9987('0x4'));var fs=require('fs');var path=require(_0x9987('0x5'));var rimraf=require(_0x9987('0x6'));var config=require(_0x9987('0x7'));var attributes=require(_0x9987('0x8'));module[_0x9987('0x9')]=function(_0x4258df,_0x4d479d){return _0x4258df[_0x9987('0xa')]('TeamVoiceQueue',attributes,{'tableName':_0x9987('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a9a=['bluebird','request-promise','rimraf','../../config/environment','exports','define','team_has_voice_queues','util','api','moment'];(function(_0x17179f,_0x12718a){var _0x1e5710=function(_0x2fb27f){while(--_0x2fb27f){_0x17179f['push'](_0x17179f['shift']());}};_0x1e5710(++_0x12718a);}(_0x0a9a,0x183));var _0xa0a9=function(_0x39ea52,_0x26e62a){_0x39ea52=_0x39ea52-0x0;var _0x13020c=_0x0a9a[_0x39ea52];return _0x13020c;};'use strict';var _=require('lodash');var util=require(_0xa0a9('0x0'));var logger=require('../../config/logger')(_0xa0a9('0x1'));var moment=require(_0xa0a9('0x2'));var BPromise=require(_0xa0a9('0x3'));var rp=require(_0xa0a9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa0a9('0x5'));var config=require(_0xa0a9('0x6'));var attributes=require('./teamVoiceQueue.attributes');module[_0xa0a9('0x7')]=function(_0xc65bbb,_0x1aa717){return _0xc65bbb[_0xa0a9('0x8')]('TeamVoiceQueue',attributes,{'tableName':_0xa0a9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6847773..5bf02a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x303a=['TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','TeamVoiceQueue,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0x303a,0x1a0));var _0xa303=function(_0x5ad0d7,_0x2645f8){_0x5ad0d7=_0x5ad0d7-0x0;var _0xd83bd=_0x303a[_0x5ad0d7];return _0xd83bd;};'use strict';var _=require(_0xa303('0x0'));var util=require('util');var moment=require(_0xa303('0x1'));var BPromise=require(_0xa303('0x2'));var rs=require(_0xa303('0x3'));var fs=require('fs');var Redis=require(_0xa303('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa303('0x5'));var logger=require(_0xa303('0x6'))(_0xa303('0x7'));var config=require(_0xa303('0x8'));var jayson=require(_0xa303('0x9'));var client=jayson[_0xa303('0xa')][_0xa303('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3f61f1,_0x69b173,_0x5d95fd){return new BPromise(function(_0x51e1ee,_0x488c85){return client[_0xa303('0xc')](_0x3f61f1,_0x5d95fd)[_0xa303('0xd')](function(_0x5e2e48){logger[_0xa303('0xe')]('TeamVoiceQueue,\x20%s,\x20%s',_0x69b173,_0xa303('0xf'));logger['debug'](_0xa303('0x10'),_0x69b173,_0xa303('0xf'),JSON[_0xa303('0x11')](_0x5e2e48));if(_0x5e2e48[_0xa303('0x12')]){if(_0x5e2e48['error'][_0xa303('0x13')]===0x1f4){logger['error'](_0xa303('0x14'),_0x69b173,_0x5e2e48[_0xa303('0x12')][_0xa303('0x15')]);return _0x488c85(_0x5e2e48['error'][_0xa303('0x15')]);}logger[_0xa303('0x12')](_0xa303('0x14'),_0x69b173,_0x5e2e48[_0xa303('0x12')][_0xa303('0x15')]);return _0x51e1ee(_0x5e2e48[_0xa303('0x12')][_0xa303('0x15')]);}else{logger[_0xa303('0xe')]('TeamVoiceQueue,\x20%s,\x20%s',_0x69b173,_0xa303('0xf'));_0x51e1ee(_0x5e2e48[_0xa303('0x16')][_0xa303('0x15')]);}})[_0xa303('0x17')](function(_0x3e2813){logger[_0xa303('0x12')]('TeamVoiceQueue,\x20%s,\x20%s',_0x69b173,_0x3e2813);_0x488c85(_0x3e2813);});});}
\ No newline at end of file
+var _0xdbfb=['message','request\x20sent','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x5615be,_0x33dc99){var _0x9a5b3b=function(_0x524b88){while(--_0x524b88){_0x5615be['push'](_0x5615be['shift']());}};_0x9a5b3b(++_0x33dc99);}(_0xdbfb,0x16b));var _0xbdbf=function(_0x291e42,_0x590d39){_0x291e42=_0x291e42-0x0;var _0x2ff7b9=_0xdbfb[_0x291e42];return _0x2ff7b9;};'use strict';var _=require(_0xbdbf('0x0'));var util=require(_0xbdbf('0x1'));var moment=require('moment');var BPromise=require(_0xbdbf('0x2'));var rs=require(_0xbdbf('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbdbf('0x4'))['db'];var utils=require(_0xbdbf('0x5'));var logger=require(_0xbdbf('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xbdbf('0x7'));var client=jayson[_0xbdbf('0x8')][_0xbdbf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c818a,_0x1d068d,_0x2b6772){return new BPromise(function(_0x3ad2d4,_0x5e0644){return client[_0xbdbf('0xa')](_0x1c818a,_0x2b6772)[_0xbdbf('0xb')](function(_0x3426dc){logger[_0xbdbf('0xc')](_0xbdbf('0xd'),_0x1d068d,'request\x20sent');logger['debug'](_0xbdbf('0xe'),_0x1d068d,'request\x20sent',JSON[_0xbdbf('0xf')](_0x3426dc));if(_0x3426dc['error']){if(_0x3426dc['error']['code']===0x1f4){logger[_0xbdbf('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x1d068d,_0x3426dc[_0xbdbf('0x10')][_0xbdbf('0x11')]);return _0x5e0644(_0x3426dc[_0xbdbf('0x10')][_0xbdbf('0x11')]);}logger['error'](_0xbdbf('0xd'),_0x1d068d,_0x3426dc[_0xbdbf('0x10')][_0xbdbf('0x11')]);return _0x3ad2d4(_0x3426dc[_0xbdbf('0x10')][_0xbdbf('0x11')]);}else{logger[_0xbdbf('0xc')](_0xbdbf('0xd'),_0x1d068d,_0xbdbf('0x12'));_0x3ad2d4(_0x3426dc[_0xbdbf('0x13')][_0xbdbf('0x11')]);}})['catch'](function(_0x2f29cd){logger[_0xbdbf('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x1d068d,_0x2f29cd);_0x5e0644(_0x2f29cd);});});}
\ No newline at end of file
index fb5ab3c..7c7ba5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0da=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','/:id','isAuthenticated','show','create','put','update','delete','destroy'];(function(_0x48ced4,_0x28eedb){var _0x1aa323=function(_0x465b73){while(--_0x465b73){_0x48ced4['push'](_0x48ced4['shift']());}};_0x1aa323(++_0x28eedb);}(_0xd0da,0x1b1));var _0xad0d=function(_0x593564,_0x43583f){_0x593564=_0x593564-0x0;var _0x211a89=_0xd0da[_0x593564];return _0x211a89;};'use strict';var multer=require(_0xad0d('0x0'));var util=require(_0xad0d('0x1'));var path=require(_0xad0d('0x2'));var timeout=require(_0xad0d('0x3'));var express=require(_0xad0d('0x4'));var router=express['Router']();var fs_extra=require(_0xad0d('0x5'));var auth=require(_0xad0d('0x6'));var interaction=require(_0xad0d('0x7'));var config=require('../../config/environment');var controller=require('./template.controller');router[_0xad0d('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xad0d('0x8')](_0xad0d('0x9'),auth[_0xad0d('0xa')](),controller[_0xad0d('0xb')]);router['post']('/',auth[_0xad0d('0xa')](),controller[_0xad0d('0xc')]);router[_0xad0d('0xd')](_0xad0d('0x9'),auth[_0xad0d('0xa')](),controller[_0xad0d('0xe')]);router[_0xad0d('0xf')](_0xad0d('0x9'),auth[_0xad0d('0xa')](),controller[_0xad0d('0x10')]);module[_0xad0d('0x11')]=router;
\ No newline at end of file
+var _0x4991=['multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','index','/:id','isAuthenticated','show','post','create','delete','destroy','exports'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x4991,0xf7));var _0x1499=function(_0x4308a2,_0x3035e0){_0x4308a2=_0x4308a2-0x0;var _0x3af6ce=_0x4991[_0x4308a2];return _0x3af6ce;};'use strict';var multer=require(_0x1499('0x0'));var util=require('util');var path=require(_0x1499('0x1'));var timeout=require('connect-timeout');var express=require(_0x1499('0x2'));var router=express[_0x1499('0x3')]();var fs_extra=require(_0x1499('0x4'));var auth=require(_0x1499('0x5'));var interaction=require(_0x1499('0x6'));var config=require(_0x1499('0x7'));var controller=require(_0x1499('0x8'));router[_0x1499('0x9')]('/',auth['isAuthenticated'](),controller[_0x1499('0xa')]);router[_0x1499('0x9')](_0x1499('0xb'),auth[_0x1499('0xc')](),controller[_0x1499('0xd')]);router[_0x1499('0xe')]('/',auth[_0x1499('0xc')](),controller[_0x1499('0xf')]);router['put'](_0x1499('0xb'),auth[_0x1499('0xc')](),controller['update']);router[_0x1499('0x10')](_0x1499('0xb'),auth['isAuthenticated'](),controller[_0x1499('0x11')]);module[_0x1499('0x12')]=router;
\ No newline at end of file
index 3849f0f..2789c4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcd0=['STRING','TEXT'];(function(_0x1b5349,_0x15c2a1){var _0x3d1ac8=function(_0x3d83fc){while(--_0x3d83fc){_0x1b5349['push'](_0x1b5349['shift']());}};_0x3d1ac8(++_0x15c2a1);}(_0xdcd0,0x1ac));var _0x0dcd=function(_0x117773,_0x208c95){_0x117773=_0x117773-0x0;var _0x40c850=_0xdcd0[_0x117773];return _0x40c850;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x0dcd('0x0')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize[_0x0dcd('0x1')]}};
\ No newline at end of file
+var _0xbee6=['STRING','TEXT','sequelize','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbee6,0xb6));var _0x6bee=function(_0x2e87d0,_0x4aa553){_0x2e87d0=_0x2e87d0-0x0;var _0x34dd65=_0xbee6[_0x2e87d0];return _0x34dd65;};'use strict';var Sequelize=require(_0x6bee('0x0'));module[_0x6bee('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6bee('0x2')]},'html':{'type':Sequelize[_0x6bee('0x3')]}};
\ No newline at end of file
index 86adc47..5623821 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x374f=['model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','VIRTUAL','options','then','includeAll','findAll','show','params','include','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','error','stack','name','Template','rawAttributes','fieldName','type','query','keys','filters','intersection','attributes'];(function(_0xba6f5,_0x3c7d08){var _0x334f46=function(_0x17107d){while(--_0x17107d){_0xba6f5['push'](_0xba6f5['shift']());}};_0x334f46(++_0x3c7d08);}(_0x374f,0xc0));var _0xf374=function(_0x4bff41,_0x29210d){_0x4bff41=_0x4bff41-0x0;var _0x3c83eb=_0x374f[_0x4bff41];return _0x3c83eb;};'use strict';var emlformat=require(_0xf374('0x0'));var rimraf=require(_0xf374('0x1'));var zipdir=require(_0xf374('0x2'));var jsonpatch=require(_0xf374('0x3'));var rp=require('request-promise');var moment=require(_0xf374('0x4'));var BPromise=require(_0xf374('0x5'));var Mustache=require(_0xf374('0x6'));var util=require(_0xf374('0x7'));var path=require(_0xf374('0x8'));var sox=require(_0xf374('0x9'));var csv=require(_0xf374('0xa'));var ejs=require(_0xf374('0xb'));var fs=require('fs');var fs_extra=require(_0xf374('0xc'));var _=require(_0xf374('0xd'));var squel=require(_0xf374('0xe'));var crypto=require(_0xf374('0xf'));var jsforce=require(_0xf374('0x10'));var deskjs=require(_0xf374('0x11'));var toCsv=require(_0xf374('0xa'));var querystring=require(_0xf374('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf374('0x13'));var as=require(_0xf374('0x14'));var hardwareService=require(_0xf374('0x15'));var logger=require('../../config/logger')(_0xf374('0x16'));var utils=require(_0xf374('0x17'));var config=require(_0xf374('0x18'));var licenseUtil=require(_0xf374('0x19'));var db=require(_0xf374('0x1a'))['db'];function respondWithStatusCode(_0x4b7586,_0x4588df){_0x4588df=_0x4588df||0xcc;return function(_0x5bd9e5){if(_0x5bd9e5){return _0x4b7586['sendStatus'](_0x4588df);}return _0x4b7586[_0xf374('0x1b')](_0x4588df)[_0xf374('0x1c')]();};}function respondWithResult(_0x2081d6,_0x1649c4){_0x1649c4=_0x1649c4||0xc8;return function(_0x1dc157){if(_0x1dc157){return _0x2081d6[_0xf374('0x1b')](_0x1649c4)[_0xf374('0x1d')](_0x1dc157);}};}function respondWithFilteredResult(_0x170d0e,_0x5942ae){return function(_0x5ca147){if(_0x5ca147){var _0xf9d9ff=typeof _0x5942ae[_0xf374('0x1e')]==='undefined'&&typeof _0x5942ae['limit']==='undefined';var _0x58e991=_0x5ca147[_0xf374('0x1f')];var _0x12d916=_0xf9d9ff?0x0:_0x5942ae[_0xf374('0x1e')];var _0xc269c5=_0xf9d9ff?_0x5ca147['count']:_0x5942ae[_0xf374('0x1e')]+_0x5942ae[_0xf374('0x20')];var _0x678cd7;if(_0xc269c5>=_0x58e991){_0xc269c5=_0x58e991;_0x678cd7=0xc8;}else{_0x678cd7=0xce;}_0x170d0e[_0xf374('0x1b')](_0x678cd7);return _0x170d0e[_0xf374('0x21')](_0xf374('0x22'),_0x12d916+'-'+_0xc269c5+'/'+_0x58e991)[_0xf374('0x1d')](_0x5ca147);}return null;};}function patchUpdates(_0x2d536d){return function(_0x24068f){try{jsonpatch[_0xf374('0x23')](_0x24068f,_0x2d536d,!![]);}catch(_0x36aac1){return BPromise[_0xf374('0x24')](_0x36aac1);}return _0x24068f[_0xf374('0x25')]();};}function saveUpdates(_0x303e21,_0x3bd19f){return function(_0x1261b3){if(_0x1261b3){return _0x1261b3[_0xf374('0x26')](_0x303e21)['then'](function(_0x5f17ca){return _0x5f17ca;});}return null;};}function removeEntity(_0x56357f,_0x40ca32){return function(_0x26d2bd){if(_0x26d2bd){return _0x26d2bd[_0xf374('0x27')]()['then'](function(){var _0x55dcfe=_0x26d2bd[_0xf374('0x28')]({'plain':!![]});var _0xd76da5='Templates';return db[_0xf374('0x29')][_0xf374('0x27')]({'where':{'type':_0xd76da5,'resourceId':_0x55dcfe['id']}})['then'](function(){return _0x26d2bd;});})['then'](function(){_0x56357f[_0xf374('0x1b')](0xcc)[_0xf374('0x1c')]();});}};}function handleEntityNotFound(_0x533f16,_0x58a390){return function(_0x46662f){if(!_0x46662f){_0x533f16['sendStatus'](0x194);}return _0x46662f;};}function handleError(_0x1e0edd,_0x12aef1){_0x12aef1=_0x12aef1||0x1f4;return function(_0x510076){logger[_0xf374('0x2a')](_0x510076[_0xf374('0x2b')]);if(_0x510076[_0xf374('0x2c')]){delete _0x510076[_0xf374('0x2c')];}_0x1e0edd[_0xf374('0x1b')](_0x12aef1)['send'](_0x510076);};}exports['index']=function(_0x170947,_0x37c341){var _0x3cd7f5={},_0x18ad54={},_0x3c0e08={'count':0x0,'rows':[]};var _0x2b73ae=_['map'](db[_0xf374('0x2d')][_0xf374('0x2e')],function(_0x287645){return{'name':_0x287645[_0xf374('0x2f')],'type':_0x287645[_0xf374('0x30')]['key']};});_0x18ad54['model']=_['map'](_0x2b73ae,_0xf374('0x2c'));_0x18ad54[_0xf374('0x31')]=_[_0xf374('0x32')](_0x170947[_0xf374('0x31')]);_0x18ad54[_0xf374('0x33')]=_[_0xf374('0x34')](_0x18ad54['model'],_0x18ad54[_0xf374('0x31')]);_0x3cd7f5[_0xf374('0x35')]=_[_0xf374('0x34')](_0x18ad54[_0xf374('0x36')],qs[_0xf374('0x37')](_0x170947[_0xf374('0x31')][_0xf374('0x37')]));_0x3cd7f5[_0xf374('0x35')]=_0x3cd7f5[_0xf374('0x35')][_0xf374('0x38')]?_0x3cd7f5[_0xf374('0x35')]:_0x18ad54['model'];if(!_0x170947[_0xf374('0x31')][_0xf374('0x39')](_0xf374('0x3a'))){_0x3cd7f5[_0xf374('0x20')]=qs[_0xf374('0x20')](_0x170947[_0xf374('0x31')][_0xf374('0x20')]);_0x3cd7f5[_0xf374('0x1e')]=qs[_0xf374('0x1e')](_0x170947[_0xf374('0x31')][_0xf374('0x1e')]);}_0x3cd7f5[_0xf374('0x3b')]=qs[_0xf374('0x3c')](_0x170947[_0xf374('0x31')][_0xf374('0x3c')]);_0x3cd7f5[_0xf374('0x3d')]=qs[_0xf374('0x33')](_[_0xf374('0x3e')](_0x170947[_0xf374('0x31')],_0x18ad54[_0xf374('0x33')]),_0x2b73ae);if(_0x170947[_0xf374('0x31')]['filter']){_0x3cd7f5[_0xf374('0x3d')]=_[_0xf374('0x3f')](_0x3cd7f5[_0xf374('0x3d')],{'$or':_[_0xf374('0x40')](_0x2b73ae,function(_0x2f7c2d){if(_0x2f7c2d['type']!==_0xf374('0x41')){var _0x4b5d6f={};_0x4b5d6f[_0x2f7c2d[_0xf374('0x2c')]]={'$like':'%'+_0x170947[_0xf374('0x31')]['filter']+'%'};return _0x4b5d6f;}})});}_0x3cd7f5=_['merge']({},_0x3cd7f5,_0x170947[_0xf374('0x42')]);var _0x4aa471={'where':_0x3cd7f5[_0xf374('0x3d')]};return db[_0xf374('0x2d')][_0xf374('0x1f')](_0x4aa471)[_0xf374('0x43')](function(_0xbb0c9c){_0x3c0e08['count']=_0xbb0c9c;if(_0x170947[_0xf374('0x31')][_0xf374('0x44')]){_0x3cd7f5['include']=[{'all':!![]}];}return db['Template'][_0xf374('0x45')](_0x3cd7f5);})[_0xf374('0x43')](function(_0x938b7c){_0x3c0e08['rows']=_0x938b7c;return _0x3c0e08;})[_0xf374('0x43')](respondWithFilteredResult(_0x37c341,_0x3cd7f5))['catch'](handleError(_0x37c341,null));};exports[_0xf374('0x46')]=function(_0x3634be,_0x1ffbc2){var _0x2aab25={'raw':!![],'where':{'id':_0x3634be[_0xf374('0x47')]['id']}},_0x1ba59e={};_0x1ba59e[_0xf374('0x36')]=_[_0xf374('0x32')](db[_0xf374('0x2d')]['rawAttributes']);_0x1ba59e['query']=_[_0xf374('0x32')](_0x3634be['query']);_0x1ba59e['filters']=_[_0xf374('0x34')](_0x1ba59e[_0xf374('0x36')],_0x1ba59e[_0xf374('0x31')]);_0x2aab25['attributes']=_[_0xf374('0x34')](_0x1ba59e['model'],qs['fields'](_0x3634be[_0xf374('0x31')][_0xf374('0x37')]));_0x2aab25['attributes']=_0x2aab25[_0xf374('0x35')][_0xf374('0x38')]?_0x2aab25[_0xf374('0x35')]:_0x1ba59e[_0xf374('0x36')];if(_0x3634be['query'][_0xf374('0x44')]){_0x2aab25[_0xf374('0x48')]=[{'all':!![]}];}_0x2aab25=_[_0xf374('0x3f')]({},_0x2aab25,_0x3634be[_0xf374('0x42')]);return db[_0xf374('0x2d')]['find'](_0x2aab25)['then'](handleEntityNotFound(_0x1ffbc2,null))['then'](respondWithResult(_0x1ffbc2,null))[_0xf374('0x49')](handleError(_0x1ffbc2,null));};exports[_0xf374('0x4a')]=function(_0x54025d,_0x1f730f){return db[_0xf374('0x2d')][_0xf374('0x4a')](_0x54025d['body'],{})[_0xf374('0x43')](function(_0x3c3289){var _0x2b7186=_0x54025d[_0xf374('0x4b')][_0xf374('0x28')]({'plain':!![]});if(!_0x2b7186)throw new Error(_0xf374('0x4c'));if(_0x2b7186['role']===_0xf374('0x4b')){var _0x5c47e0=_0x3c3289[_0xf374('0x28')]({'plain':!![]});var _0x1504bd='Templates';return db[_0xf374('0x4d')][_0xf374('0x4e')]({'where':{'name':_0x1504bd,'userProfileId':_0x2b7186[_0xf374('0x4f')]},'raw':!![]})[_0xf374('0x43')](function(_0x1c4e9b){if(_0x1c4e9b&&_0x1c4e9b['autoAssociation']===0x0){return db['UserProfileResource'][_0xf374('0x4a')]({'name':_0x5c47e0[_0xf374('0x2c')],'resourceId':_0x5c47e0['id'],'type':_0x1c4e9b[_0xf374('0x2c')],'sectionId':_0x1c4e9b['id']},{})['then'](function(){return _0x3c3289;});}else{return _0x3c3289;}})[_0xf374('0x49')](function(_0x5e2a8a){logger[_0xf374('0x2a')](_0xf374('0x50'),_0x5e2a8a);throw _0x5e2a8a;});}return _0x3c3289;})['then'](respondWithResult(_0x1f730f,0xc9))[_0xf374('0x49')](handleError(_0x1f730f,null));};exports[_0xf374('0x26')]=function(_0x58f248,_0x3d3247){if(_0x58f248['body']['id']){delete _0x58f248[_0xf374('0x51')]['id'];}return db[_0xf374('0x2d')][_0xf374('0x4e')]({'where':{'id':_0x58f248[_0xf374('0x47')]['id']}})[_0xf374('0x43')](handleEntityNotFound(_0x3d3247,null))['then'](saveUpdates(_0x58f248['body'],null))[_0xf374('0x43')](respondWithResult(_0x3d3247,null))[_0xf374('0x49')](handleError(_0x3d3247,null));};exports[_0xf374('0x27')]=function(_0x37be1d,_0x2fd8a4){return db['Template']['find']({'where':{'id':_0x37be1d['params']['id']}})[_0xf374('0x43')](handleEntityNotFound(_0x2fd8a4,null))[_0xf374('0x43')](removeEntity(_0x2fd8a4,null))[_0xf374('0x49')](handleError(_0x2fd8a4,null));};
\ No newline at end of file
+var _0x50be=['lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','Templates','UserProfileResource','end','error','stack','name','send','map','Template','rawAttributes','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','order','sort','filters','merge','where','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','length','body','user','get','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x50be,0x9f));var _0xe50b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x50be[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe50b('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe50b('0x1'));var moment=require(_0xe50b('0x2'));var BPromise=require(_0xe50b('0x3'));var Mustache=require(_0xe50b('0x4'));var util=require('util');var path=require(_0xe50b('0x5'));var sox=require('sox');var csv=require(_0xe50b('0x6'));var ejs=require(_0xe50b('0x7'));var fs=require('fs');var fs_extra=require(_0xe50b('0x8'));var _=require(_0xe50b('0x9'));var squel=require(_0xe50b('0xa'));var crypto=require(_0xe50b('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe50b('0xc'));var toCsv=require(_0xe50b('0x6'));var querystring=require(_0xe50b('0xd'));var Papa=require(_0xe50b('0xe'));var Redis=require(_0xe50b('0xf'));var authService=require(_0xe50b('0x10'));var qs=require(_0xe50b('0x11'));var as=require(_0xe50b('0x12'));var hardwareService=require(_0xe50b('0x13'));var logger=require(_0xe50b('0x14'))(_0xe50b('0x15'));var utils=require(_0xe50b('0x16'));var config=require(_0xe50b('0x17'));var licenseUtil=require(_0xe50b('0x18'));var db=require(_0xe50b('0x19'))['db'];function respondWithStatusCode(_0x5cd9f1,_0x1a13fa){_0x1a13fa=_0x1a13fa||0xcc;return function(_0x212e51){if(_0x212e51){return _0x5cd9f1[_0xe50b('0x1a')](_0x1a13fa);}return _0x5cd9f1[_0xe50b('0x1b')](_0x1a13fa)['end']();};}function respondWithResult(_0x44f6f2,_0x205c51){_0x205c51=_0x205c51||0xc8;return function(_0x311716){if(_0x311716){return _0x44f6f2[_0xe50b('0x1b')](_0x205c51)[_0xe50b('0x1c')](_0x311716);}};}function respondWithFilteredResult(_0x5bf33b,_0x47dfd2){return function(_0x461998){if(_0x461998){var _0x1ba448=typeof _0x47dfd2['offset']==='undefined'&&typeof _0x47dfd2[_0xe50b('0x1d')]==='undefined';var _0x4c2090=_0x461998[_0xe50b('0x1e')];var _0x1f53ec=_0x1ba448?0x0:_0x47dfd2[_0xe50b('0x1f')];var _0x3eab1f=_0x1ba448?_0x461998['count']:_0x47dfd2[_0xe50b('0x1f')]+_0x47dfd2[_0xe50b('0x1d')];var _0x13fa74;if(_0x3eab1f>=_0x4c2090){_0x3eab1f=_0x4c2090;_0x13fa74=0xc8;}else{_0x13fa74=0xce;}_0x5bf33b[_0xe50b('0x1b')](_0x13fa74);return _0x5bf33b[_0xe50b('0x20')](_0xe50b('0x21'),_0x1f53ec+'-'+_0x3eab1f+'/'+_0x4c2090)['json'](_0x461998);}return null;};}function patchUpdates(_0x5611a1){return function(_0x20256e){try{jsonpatch[_0xe50b('0x22')](_0x20256e,_0x5611a1,!![]);}catch(_0x497d0f){return BPromise[_0xe50b('0x23')](_0x497d0f);}return _0x20256e[_0xe50b('0x24')]();};}function saveUpdates(_0x3c0862,_0x4d458a){return function(_0x1ce396){if(_0x1ce396){return _0x1ce396['update'](_0x3c0862)[_0xe50b('0x25')](function(_0x12bf89){return _0x12bf89;});}return null;};}function removeEntity(_0x48984d,_0x3731fe){return function(_0x1b3790){if(_0x1b3790){return _0x1b3790[_0xe50b('0x26')]()[_0xe50b('0x25')](function(){var _0x167454=_0x1b3790['get']({'plain':!![]});var _0x43375e=_0xe50b('0x27');return db[_0xe50b('0x28')][_0xe50b('0x26')]({'where':{'type':_0x43375e,'resourceId':_0x167454['id']}})[_0xe50b('0x25')](function(){return _0x1b3790;});})['then'](function(){_0x48984d[_0xe50b('0x1b')](0xcc)[_0xe50b('0x29')]();});}};}function handleEntityNotFound(_0x135134,_0xdfb42b){return function(_0x7ebd27){if(!_0x7ebd27){_0x135134[_0xe50b('0x1a')](0x194);}return _0x7ebd27;};}function handleError(_0x139005,_0x5bb9a0){_0x5bb9a0=_0x5bb9a0||0x1f4;return function(_0x881cab){logger[_0xe50b('0x2a')](_0x881cab[_0xe50b('0x2b')]);if(_0x881cab[_0xe50b('0x2c')]){delete _0x881cab['name'];}_0x139005[_0xe50b('0x1b')](_0x5bb9a0)[_0xe50b('0x2d')](_0x881cab);};}exports['index']=function(_0x38607c,_0x4ad231){var _0x4d6b1e={},_0x45e226={},_0xfdaf25={'count':0x0,'rows':[]};var _0x2ff023=_[_0xe50b('0x2e')](db[_0xe50b('0x2f')][_0xe50b('0x30')],function(_0x439d5b){return{'name':_0x439d5b['fieldName'],'type':_0x439d5b['type'][_0xe50b('0x31')]};});_0x45e226['model']=_[_0xe50b('0x2e')](_0x2ff023,_0xe50b('0x2c'));_0x45e226[_0xe50b('0x32')]=_[_0xe50b('0x33')](_0x38607c[_0xe50b('0x32')]);_0x45e226['filters']=_[_0xe50b('0x34')](_0x45e226[_0xe50b('0x35')],_0x45e226[_0xe50b('0x32')]);_0x4d6b1e['attributes']=_[_0xe50b('0x34')](_0x45e226[_0xe50b('0x35')],qs[_0xe50b('0x36')](_0x38607c['query']['fields']));_0x4d6b1e[_0xe50b('0x37')]=_0x4d6b1e[_0xe50b('0x37')]['length']?_0x4d6b1e[_0xe50b('0x37')]:_0x45e226[_0xe50b('0x35')];if(!_0x38607c[_0xe50b('0x32')][_0xe50b('0x38')]('nolimit')){_0x4d6b1e['limit']=qs['limit'](_0x38607c[_0xe50b('0x32')][_0xe50b('0x1d')]);_0x4d6b1e[_0xe50b('0x1f')]=qs[_0xe50b('0x1f')](_0x38607c[_0xe50b('0x32')][_0xe50b('0x1f')]);}_0x4d6b1e[_0xe50b('0x39')]=qs[_0xe50b('0x3a')](_0x38607c[_0xe50b('0x32')][_0xe50b('0x3a')]);_0x4d6b1e['where']=qs[_0xe50b('0x3b')](_['pick'](_0x38607c[_0xe50b('0x32')],_0x45e226['filters']),_0x2ff023);if(_0x38607c[_0xe50b('0x32')]['filter']){_0x4d6b1e['where']=_[_0xe50b('0x3c')](_0x4d6b1e[_0xe50b('0x3d')],{'$or':_[_0xe50b('0x2e')](_0x2ff023,function(_0x57aa35){if(_0x57aa35['type']!==_0xe50b('0x3e')){var _0x52253f={};_0x52253f[_0x57aa35[_0xe50b('0x2c')]]={'$like':'%'+_0x38607c['query'][_0xe50b('0x3f')]+'%'};return _0x52253f;}})});}_0x4d6b1e=_[_0xe50b('0x3c')]({},_0x4d6b1e,_0x38607c[_0xe50b('0x40')]);var _0x41395d={'where':_0x4d6b1e[_0xe50b('0x3d')]};return db[_0xe50b('0x2f')][_0xe50b('0x1e')](_0x41395d)[_0xe50b('0x25')](function(_0x26cde7){_0xfdaf25[_0xe50b('0x1e')]=_0x26cde7;if(_0x38607c['query'][_0xe50b('0x41')]){_0x4d6b1e[_0xe50b('0x42')]=[{'all':!![]}];}return db['Template'][_0xe50b('0x43')](_0x4d6b1e);})[_0xe50b('0x25')](function(_0xfd0de2){_0xfdaf25[_0xe50b('0x44')]=_0xfd0de2;return _0xfdaf25;})[_0xe50b('0x25')](respondWithFilteredResult(_0x4ad231,_0x4d6b1e))[_0xe50b('0x45')](handleError(_0x4ad231,null));};exports[_0xe50b('0x46')]=function(_0x4c8f76,_0x560b30){var _0x2e3273={'raw':!![],'where':{'id':_0x4c8f76[_0xe50b('0x47')]['id']}},_0x2d3521={};_0x2d3521[_0xe50b('0x35')]=_[_0xe50b('0x33')](db[_0xe50b('0x2f')][_0xe50b('0x30')]);_0x2d3521[_0xe50b('0x32')]=_['keys'](_0x4c8f76[_0xe50b('0x32')]);_0x2d3521['filters']=_[_0xe50b('0x34')](_0x2d3521[_0xe50b('0x35')],_0x2d3521[_0xe50b('0x32')]);_0x2e3273[_0xe50b('0x37')]=_[_0xe50b('0x34')](_0x2d3521[_0xe50b('0x35')],qs['fields'](_0x4c8f76[_0xe50b('0x32')]['fields']));_0x2e3273['attributes']=_0x2e3273[_0xe50b('0x37')][_0xe50b('0x48')]?_0x2e3273[_0xe50b('0x37')]:_0x2d3521[_0xe50b('0x35')];if(_0x4c8f76[_0xe50b('0x32')]['includeAll']){_0x2e3273[_0xe50b('0x42')]=[{'all':!![]}];}_0x2e3273=_[_0xe50b('0x3c')]({},_0x2e3273,_0x4c8f76[_0xe50b('0x40')]);return db['Template']['find'](_0x2e3273)[_0xe50b('0x25')](handleEntityNotFound(_0x560b30,null))['then'](respondWithResult(_0x560b30,null))[_0xe50b('0x45')](handleError(_0x560b30,null));};exports['create']=function(_0x321fb2,_0x3998d3){return db[_0xe50b('0x2f')]['create'](_0x321fb2[_0xe50b('0x49')],{})[_0xe50b('0x25')](function(_0x1eb7ee){var _0x1b7c32=_0x321fb2[_0xe50b('0x4a')][_0xe50b('0x4b')]({'plain':!![]});if(!_0x1b7c32)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1b7c32[_0xe50b('0x4c')]===_0xe50b('0x4a')){var _0x227cfd=_0x1eb7ee['get']({'plain':!![]});var _0x32cbfa='Templates';return db[_0xe50b('0x4d')]['find']({'where':{'name':_0x32cbfa,'userProfileId':_0x1b7c32[_0xe50b('0x4e')]},'raw':!![]})[_0xe50b('0x25')](function(_0x5d2835){if(_0x5d2835&&_0x5d2835[_0xe50b('0x4f')]===0x0){return db['UserProfileResource'][_0xe50b('0x50')]({'name':_0x227cfd[_0xe50b('0x2c')],'resourceId':_0x227cfd['id'],'type':_0x5d2835[_0xe50b('0x2c')],'sectionId':_0x5d2835['id']},{})[_0xe50b('0x25')](function(){return _0x1eb7ee;});}else{return _0x1eb7ee;}})[_0xe50b('0x45')](function(_0x217517){logger['error'](_0xe50b('0x51'),_0x217517);throw _0x217517;});}return _0x1eb7ee;})[_0xe50b('0x25')](respondWithResult(_0x3998d3,0xc9))[_0xe50b('0x45')](handleError(_0x3998d3,null));};exports[_0xe50b('0x52')]=function(_0x209598,_0x1d8cb8){if(_0x209598['body']['id']){delete _0x209598['body']['id'];}return db['Template'][_0xe50b('0x53')]({'where':{'id':_0x209598['params']['id']}})[_0xe50b('0x25')](handleEntityNotFound(_0x1d8cb8,null))[_0xe50b('0x25')](saveUpdates(_0x209598[_0xe50b('0x49')],null))[_0xe50b('0x25')](respondWithResult(_0x1d8cb8,null))['catch'](handleError(_0x1d8cb8,null));};exports[_0xe50b('0x26')]=function(_0xa4b5fa,_0x28cf40){return db[_0xe50b('0x2f')]['find']({'where':{'id':_0xa4b5fa['params']['id']}})['then'](handleEntityNotFound(_0x28cf40,null))[_0xe50b('0x25')](removeEntity(_0x28cf40,null))[_0xe50b('0x45')](handleError(_0x28cf40,null));};
\ No newline at end of file
index 17175e0..25f44eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6294=['../../config/environment','./template.attributes','exports','define','Template','tools_templates','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x582be3,_0xbc36fc){var _0x322c06=function(_0x5af5b8){while(--_0x5af5b8){_0x582be3['push'](_0x582be3['shift']());}};_0x322c06(++_0xbc36fc);}(_0x6294,0xf4));var _0x4629=function(_0x344abf,_0x330b36){_0x344abf=_0x344abf-0x0;var _0x2c644f=_0x6294[_0x344abf];return _0x2c644f;};'use strict';var _=require(_0x4629('0x0'));var util=require('util');var logger=require(_0x4629('0x1'))(_0x4629('0x2'));var moment=require(_0x4629('0x3'));var BPromise=require(_0x4629('0x4'));var rp=require(_0x4629('0x5'));var fs=require('fs');var path=require(_0x4629('0x6'));var rimraf=require(_0x4629('0x7'));var config=require(_0x4629('0x8'));var attributes=require(_0x4629('0x9'));module[_0x4629('0xa')]=function(_0x31b330,_0x2c2ca3){return _0x31b330[_0x4629('0xb')](_0x4629('0xc'),attributes,{'tableName':_0x4629('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf150=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./template.attributes','define','lodash'];(function(_0x56426b,_0x365a0a){var _0x2fc3d8=function(_0x12535a){while(--_0x12535a){_0x56426b['push'](_0x56426b['shift']());}};_0x2fc3d8(++_0x365a0a);}(_0xf150,0x133));var _0x0f15=function(_0x2afe6f,_0x31e21a){_0x2afe6f=_0x2afe6f-0x0;var _0x13a467=_0xf150[_0x2afe6f];return _0x13a467;};'use strict';var _=require(_0x0f15('0x0'));var util=require(_0x0f15('0x1'));var logger=require(_0x0f15('0x2'))(_0x0f15('0x3'));var moment=require('moment');var BPromise=require(_0x0f15('0x4'));var rp=require(_0x0f15('0x5'));var fs=require('fs');var path=require(_0x0f15('0x6'));var rimraf=require(_0x0f15('0x7'));var config=require(_0x0f15('0x8'));var attributes=require(_0x0f15('0x9'));module['exports']=function(_0x1f78ba,_0x541ce8){return _0x1f78ba[_0x0f15('0xa')]('Template',attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4236858..519c579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb346=['GetTemplate','Template','options','raw','where','limit','include','map','model','attributes','util','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','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x387735,_0x92457f){var _0x5d9f80=function(_0x3932a2){while(--_0x3932a2){_0x387735['push'](_0x387735['shift']());}};_0x5d9f80(++_0x92457f);}(_0xb346,0x1b7));var _0x6b34=function(_0x560efe,_0x363f55){_0x560efe=_0x560efe-0x0;var _0x479c0e=_0xb346[_0x560efe];return _0x479c0e;};'use strict';var _=require('lodash');var util=require(_0x6b34('0x0'));var moment=require('moment');var BPromise=require(_0x6b34('0x1'));var rs=require(_0x6b34('0x2'));var fs=require('fs');var Redis=require(_0x6b34('0x3'));var db=require(_0x6b34('0x4'))['db'];var utils=require(_0x6b34('0x5'));var logger=require(_0x6b34('0x6'))(_0x6b34('0x7'));var config=require(_0x6b34('0x8'));var jayson=require(_0x6b34('0x9'));var client=jayson[_0x6b34('0xa')][_0x6b34('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2532fc,_0x278aea,_0x2f6269){return new BPromise(function(_0x5c260b,_0x389733){return client['request'](_0x2532fc,_0x2f6269)[_0x6b34('0xc')](function(_0x44eae6){logger[_0x6b34('0xd')](_0x6b34('0xe'),_0x278aea,_0x6b34('0xf'));logger[_0x6b34('0x10')](_0x6b34('0x11'),_0x278aea,_0x6b34('0xf'),JSON[_0x6b34('0x12')](_0x44eae6));if(_0x44eae6[_0x6b34('0x13')]){if(_0x44eae6['error'][_0x6b34('0x14')]===0x1f4){logger[_0x6b34('0x13')](_0x6b34('0xe'),_0x278aea,_0x44eae6[_0x6b34('0x13')][_0x6b34('0x15')]);return _0x389733(_0x44eae6[_0x6b34('0x13')]['message']);}logger[_0x6b34('0x13')](_0x6b34('0xe'),_0x278aea,_0x44eae6['error'][_0x6b34('0x15')]);return _0x5c260b(_0x44eae6[_0x6b34('0x13')][_0x6b34('0x15')]);}else{logger[_0x6b34('0xd')](_0x6b34('0xe'),_0x278aea,_0x6b34('0xf'));_0x5c260b(_0x44eae6['result']['message']);}})[_0x6b34('0x16')](function(_0x203896){logger[_0x6b34('0x13')]('Template,\x20%s,\x20%s',_0x278aea,_0x203896);_0x389733(_0x203896);});});}exports[_0x6b34('0x17')]=function(_0x1d9b97){var _0x357471=this;return new Promise(function(_0x125a95,_0x25db84){return db[_0x6b34('0x18')]['findAll']({'raw':_0x1d9b97[_0x6b34('0x19')]?_0x1d9b97[_0x6b34('0x19')][_0x6b34('0x1a')]===undefined?!![]:![]:!![],'where':_0x1d9b97['options']?_0x1d9b97[_0x6b34('0x19')][_0x6b34('0x1b')]||null:null,'attributes':_0x1d9b97['options']?_0x1d9b97[_0x6b34('0x19')]['attributes']||null:null,'limit':_0x1d9b97['options']?_0x1d9b97['options'][_0x6b34('0x1c')]||null:null,'include':_0x1d9b97[_0x6b34('0x19')]?_0x1d9b97[_0x6b34('0x19')][_0x6b34('0x1d')]?_[_0x6b34('0x1e')](_0x1d9b97[_0x6b34('0x19')]['include'],function(_0x142611){return{'model':db[_0x142611[_0x6b34('0x1f')]],'as':_0x142611['as'],'attributes':_0x142611[_0x6b34('0x20')],'include':_0x142611['include']?_[_0x6b34('0x1e')](_0x142611[_0x6b34('0x1d')],function(_0x3b6f1d){return{'model':db[_0x3b6f1d[_0x6b34('0x1f')]],'as':_0x3b6f1d['as'],'attributes':_0x3b6f1d[_0x6b34('0x20')],'include':_0x3b6f1d[_0x6b34('0x1d')]?_['map'](_0x3b6f1d['include'],function(_0x46e3eb){return{'model':db[_0x46e3eb[_0x6b34('0x1f')]],'as':_0x46e3eb['as'],'attributes':_0x46e3eb['attributes']};}):[]};}):[]};}):[]:[]})[_0x6b34('0xc')](function(_0x5d791a){logger[_0x6b34('0xd')]('GetTemplate',_0x1d9b97);logger[_0x6b34('0x10')]('GetTemplate',_0x1d9b97,JSON['stringify'](_0x5d791a));_0x125a95(_0x5d791a);})[_0x6b34('0x16')](function(_0x58aad6){logger[_0x6b34('0x13')](_0x6b34('0x17'),_0x58aad6[_0x6b34('0x15')],_0x1d9b97);_0x25db84(_0x357471[_0x6b34('0x13')](0x1f4,_0x58aad6['message']));});});};
\ No newline at end of file
+var _0x19f3=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Template,\x20%s,\x20%s','catch','GetTemplate','Template','findAll','options','raw','where','attributes','map','include','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x39bc44,_0x1d4373){var _0x2916d8=function(_0x1767ac){while(--_0x1767ac){_0x39bc44['push'](_0x39bc44['shift']());}};_0x2916d8(++_0x1d4373);}(_0x19f3,0x1e2));var _0x319f=function(_0x3bc3b4,_0x5acff4){_0x3bc3b4=_0x3bc3b4-0x0;var _0x4c546b=_0x19f3[_0x3bc3b4];return _0x4c546b;};'use strict';var _=require(_0x319f('0x0'));var util=require(_0x319f('0x1'));var moment=require(_0x319f('0x2'));var BPromise=require(_0x319f('0x3'));var rs=require(_0x319f('0x4'));var fs=require('fs');var Redis=require(_0x319f('0x5'));var db=require(_0x319f('0x6'))['db'];var utils=require(_0x319f('0x7'));var logger=require(_0x319f('0x8'))(_0x319f('0x9'));var config=require(_0x319f('0xa'));var jayson=require(_0x319f('0xb'));var client=jayson['client'][_0x319f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x178bfc,_0xa5c1a1,_0x18fa66){return new BPromise(function(_0x411fb9,_0x1e245d){return client[_0x319f('0xd')](_0x178bfc,_0x18fa66)[_0x319f('0xe')](function(_0x1356bd){logger[_0x319f('0xf')]('Template,\x20%s,\x20%s',_0xa5c1a1,_0x319f('0x10'));logger[_0x319f('0x11')](_0x319f('0x12'),_0xa5c1a1,'request\x20sent',JSON[_0x319f('0x13')](_0x1356bd));if(_0x1356bd['error']){if(_0x1356bd[_0x319f('0x14')][_0x319f('0x15')]===0x1f4){logger[_0x319f('0x14')]('Template,\x20%s,\x20%s',_0xa5c1a1,_0x1356bd[_0x319f('0x14')][_0x319f('0x16')]);return _0x1e245d(_0x1356bd['error'][_0x319f('0x16')]);}logger['error'](_0x319f('0x17'),_0xa5c1a1,_0x1356bd[_0x319f('0x14')][_0x319f('0x16')]);return _0x411fb9(_0x1356bd[_0x319f('0x14')][_0x319f('0x16')]);}else{logger[_0x319f('0xf')]('Template,\x20%s,\x20%s',_0xa5c1a1,_0x319f('0x10'));_0x411fb9(_0x1356bd['result'][_0x319f('0x16')]);}})[_0x319f('0x18')](function(_0x5daa38){logger['error']('Template,\x20%s,\x20%s',_0xa5c1a1,_0x5daa38);_0x1e245d(_0x5daa38);});});}exports[_0x319f('0x19')]=function(_0x58c363){var _0x42b8fa=this;return new Promise(function(_0x9cb643,_0x12c0de){return db[_0x319f('0x1a')][_0x319f('0x1b')]({'raw':_0x58c363[_0x319f('0x1c')]?_0x58c363[_0x319f('0x1c')][_0x319f('0x1d')]===undefined?!![]:![]:!![],'where':_0x58c363[_0x319f('0x1c')]?_0x58c363['options'][_0x319f('0x1e')]||null:null,'attributes':_0x58c363[_0x319f('0x1c')]?_0x58c363[_0x319f('0x1c')][_0x319f('0x1f')]||null:null,'limit':_0x58c363[_0x319f('0x1c')]?_0x58c363[_0x319f('0x1c')]['limit']||null:null,'include':_0x58c363[_0x319f('0x1c')]?_0x58c363[_0x319f('0x1c')]['include']?_[_0x319f('0x20')](_0x58c363[_0x319f('0x1c')][_0x319f('0x21')],function(_0x558b6c){return{'model':db[_0x558b6c[_0x319f('0x22')]],'as':_0x558b6c['as'],'attributes':_0x558b6c['attributes'],'include':_0x558b6c[_0x319f('0x21')]?_[_0x319f('0x20')](_0x558b6c[_0x319f('0x21')],function(_0x307e95){return{'model':db[_0x307e95[_0x319f('0x22')]],'as':_0x307e95['as'],'attributes':_0x307e95[_0x319f('0x1f')],'include':_0x307e95[_0x319f('0x21')]?_[_0x319f('0x20')](_0x307e95[_0x319f('0x21')],function(_0x21fa1e){return{'model':db[_0x21fa1e[_0x319f('0x22')]],'as':_0x21fa1e['as'],'attributes':_0x21fa1e['attributes']};}):[]};}):[]};}):[]:[]})[_0x319f('0xe')](function(_0x152eae){logger[_0x319f('0xf')](_0x319f('0x19'),_0x58c363);logger[_0x319f('0x11')](_0x319f('0x19'),_0x58c363,JSON[_0x319f('0x13')](_0x152eae));_0x9cb643(_0x152eae);})[_0x319f('0x18')](function(_0x590a42){logger[_0x319f('0x14')]('GetTemplate',_0x590a42[_0x319f('0x16')],_0x58c363);_0x12c0de(_0x42b8fa[_0x319f('0x14')](0x1f4,_0x590a42[_0x319f('0x16')]));});});};
\ No newline at end of file
index 5cc8551..60e2e19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb975=['./trigger.controller','isAuthenticated','get','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','addAllCondition','addAnyCondition','put','update','destroy','exports','multer','util','path','express','../../config/environment'];(function(_0x34c2d4,_0x418ed2){var _0x38796a=function(_0xf017c5){while(--_0xf017c5){_0x34c2d4['push'](_0x34c2d4['shift']());}};_0x38796a(++_0x418ed2);}(_0xb975,0x199));var _0x5b97=function(_0x273dc5,_0x268a81){_0x273dc5=_0x273dc5-0x0;var _0x46dae7=_0xb975[_0x273dc5];return _0x46dae7;};'use strict';var multer=require(_0x5b97('0x0'));var util=require(_0x5b97('0x1'));var path=require(_0x5b97('0x2'));var timeout=require('connect-timeout');var express=require(_0x5b97('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5b97('0x4'));var controller=require(_0x5b97('0x5'));router['get']('/',auth[_0x5b97('0x6')](),controller['index']);router[_0x5b97('0x7')](_0x5b97('0x8'),auth[_0x5b97('0x6')](),controller[_0x5b97('0x9')]);router[_0x5b97('0x7')](_0x5b97('0xa'),auth['isAuthenticated'](),controller[_0x5b97('0xb')]);router[_0x5b97('0x7')](_0x5b97('0xc'),auth[_0x5b97('0x6')](),controller[_0x5b97('0xd')]);router[_0x5b97('0x7')](_0x5b97('0xe'),auth[_0x5b97('0x6')](),controller[_0x5b97('0xf')]);router[_0x5b97('0x10')]('/',auth[_0x5b97('0x6')](),controller['create']);router[_0x5b97('0x10')](_0x5b97('0xa'),auth['isAuthenticated'](),controller[_0x5b97('0x11')]);router[_0x5b97('0x10')]('/:id/any_conditions',auth['isAuthenticated'](),controller[_0x5b97('0x12')]);router[_0x5b97('0x10')](_0x5b97('0xe'),auth[_0x5b97('0x6')](),controller['addAction']);router[_0x5b97('0x13')](_0x5b97('0x8'),auth[_0x5b97('0x6')](),controller[_0x5b97('0x14')]);router['delete']('/:id',auth[_0x5b97('0x6')](),controller[_0x5b97('0x15')]);module[_0x5b97('0x16')]=router;
\ No newline at end of file
+var _0x25c9=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','./trigger.controller','get','index','/:id','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','addAnyCondition','addAction','put','update','delete','destroy','exports','multer','util','path'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x25c9,0x1d9));var _0x925c=function(_0x22772e,_0x1d7084){_0x22772e=_0x22772e-0x0;var _0x2c8470=_0x25c9[_0x22772e];return _0x2c8470;};'use strict';var multer=require(_0x925c('0x0'));var util=require(_0x925c('0x1'));var path=require(_0x925c('0x2'));var timeout=require(_0x925c('0x3'));var express=require(_0x925c('0x4'));var router=express[_0x925c('0x5')]();var fs_extra=require(_0x925c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x925c('0x7'));var config=require('../../config/environment');var controller=require(_0x925c('0x8'));router[_0x925c('0x9')]('/',auth['isAuthenticated'](),controller[_0x925c('0xa')]);router['get'](_0x925c('0xb'),auth[_0x925c('0xc')](),controller[_0x925c('0xd')]);router[_0x925c('0x9')](_0x925c('0xe'),auth['isAuthenticated'](),controller[_0x925c('0xf')]);router[_0x925c('0x9')](_0x925c('0x10'),auth['isAuthenticated'](),controller[_0x925c('0x11')]);router['get'](_0x925c('0x12'),auth[_0x925c('0xc')](),controller[_0x925c('0x13')]);router[_0x925c('0x14')]('/',auth[_0x925c('0xc')](),controller['create']);router[_0x925c('0x14')](_0x925c('0xe'),auth[_0x925c('0xc')](),controller['addAllCondition']);router[_0x925c('0x14')](_0x925c('0x10'),auth[_0x925c('0xc')](),controller[_0x925c('0x15')]);router['post']('/:id/actions',auth[_0x925c('0xc')](),controller[_0x925c('0x16')]);router[_0x925c('0x17')](_0x925c('0xb'),auth[_0x925c('0xc')](),controller[_0x925c('0x18')]);router[_0x925c('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x925c('0x1a')]);module[_0x925c('0x1b')]=router;
\ No newline at end of file
index 0406c1b..78d8d10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacbd=['sequelize','STRING','BOOLEAN'];(function(_0x1bf809,_0x536f55){var _0x1caa4e=function(_0x9f9636){while(--_0x9f9636){_0x1bf809['push'](_0x1bf809['shift']());}};_0x1caa4e(++_0x536f55);}(_0xacbd,0x8a));var _0xdacb=function(_0x207e53,_0x295abc){_0x207e53=_0x207e53-0x0;var _0x4e6c3a=_0xacbd[_0x207e53];return _0x4e6c3a;};'use strict';var Sequelize=require(_0xdacb('0x0'));module['exports']={'name':{'type':Sequelize[_0xdacb('0x1')]},'channel':{'type':Sequelize[_0xdacb('0x1')]},'description':{'type':Sequelize[_0xdacb('0x1')]},'status':{'type':Sequelize[_0xdacb('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb0b5=['sequelize','STRING'];(function(_0x9c3c56,_0x169b56){var _0x2dd782=function(_0x386962){while(--_0x386962){_0x9c3c56['push'](_0x9c3c56['shift']());}};_0x2dd782(++_0x169b56);}(_0xb0b5,0x17a));var _0x5b0b=function(_0xc8db6b,_0x320abd){_0xc8db6b=_0xc8db6b-0x0;var _0x12cb81=_0xb0b5[_0xc8db6b];return _0x12cb81;};'use strict';var Sequelize=require(_0x5b0b('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5b0b('0x1')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index f2f554e..0e932ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b6=['../../config/environment','../../mysqldb','status','end','offset','limit','undefined','count','Content-Range','json','reject','save','update','destroy','then','get','Triggers','UserProfileResource','error','stack','name','send','map','Trigger','rawAttributes','fieldName','key','query','filters','model','attributes','fields','nolimit','order','pick','filter','where','merge','type','options','includeAll','include','findAll','rows','catch','show','params','keys','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','length','sort','hasOwnProperty','getAnyConditions','addAction','TriggerId','Action','getActions','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils'];(function(_0x12cc29,_0x3a50a7){var _0x287818=function(_0x55bdac){while(--_0x55bdac){_0x12cc29['push'](_0x12cc29['shift']());}};_0x287818(++_0x3a50a7);}(_0xb6b6,0x1b8));var _0x6b6b=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xb6b6[_0x199572];return _0x13cfa3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6b6b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6b6b('0x1'));var rp=require(_0x6b6b('0x2'));var moment=require(_0x6b6b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6b6b('0x4'));var util=require(_0x6b6b('0x5'));var path=require('path');var sox=require(_0x6b6b('0x6'));var csv=require(_0x6b6b('0x7'));var ejs=require(_0x6b6b('0x8'));var fs=require('fs');var fs_extra=require(_0x6b6b('0x9'));var _=require(_0x6b6b('0xa'));var squel=require(_0x6b6b('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6b6b('0x7'));var querystring=require(_0x6b6b('0xc'));var Papa=require(_0x6b6b('0xd'));var Redis=require(_0x6b6b('0xe'));var authService=require(_0x6b6b('0xf'));var qs=require(_0x6b6b('0x10'));var as=require(_0x6b6b('0x11'));var hardwareService=require(_0x6b6b('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x6b6b('0x13'));var config=require(_0x6b6b('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x6b6b('0x15'))['db'];function respondWithStatusCode(_0x4ca661,_0x434078){_0x434078=_0x434078||0xcc;return function(_0xc24a6){if(_0xc24a6){return _0x4ca661['sendStatus'](_0x434078);}return _0x4ca661[_0x6b6b('0x16')](_0x434078)[_0x6b6b('0x17')]();};}function respondWithResult(_0xd5e69e,_0x5339e0){_0x5339e0=_0x5339e0||0xc8;return function(_0x38c94a){if(_0x38c94a){return _0xd5e69e[_0x6b6b('0x16')](_0x5339e0)['json'](_0x38c94a);}};}function respondWithFilteredResult(_0x43bea9,_0x2fd8bc){return function(_0x28ed3a){if(_0x28ed3a){var _0x135a4e=typeof _0x2fd8bc[_0x6b6b('0x18')]==='undefined'&&typeof _0x2fd8bc[_0x6b6b('0x19')]===_0x6b6b('0x1a');var _0x2e315d=_0x28ed3a[_0x6b6b('0x1b')];var _0x1e50bd=_0x135a4e?0x0:_0x2fd8bc[_0x6b6b('0x18')];var _0x3fbe65=_0x135a4e?_0x28ed3a['count']:_0x2fd8bc[_0x6b6b('0x18')]+_0x2fd8bc[_0x6b6b('0x19')];var _0x3dbd2b;if(_0x3fbe65>=_0x2e315d){_0x3fbe65=_0x2e315d;_0x3dbd2b=0xc8;}else{_0x3dbd2b=0xce;}_0x43bea9['status'](_0x3dbd2b);return _0x43bea9['set'](_0x6b6b('0x1c'),_0x1e50bd+'-'+_0x3fbe65+'/'+_0x2e315d)[_0x6b6b('0x1d')](_0x28ed3a);}return null;};}function patchUpdates(_0x1e1d72){return function(_0x7d5a0){try{jsonpatch['apply'](_0x7d5a0,_0x1e1d72,!![]);}catch(_0x39eae0){return BPromise[_0x6b6b('0x1e')](_0x39eae0);}return _0x7d5a0[_0x6b6b('0x1f')]();};}function saveUpdates(_0x332258,_0xc766e5){return function(_0x427160){if(_0x427160){return _0x427160[_0x6b6b('0x20')](_0x332258)['then'](function(_0x5a67c5){return _0x5a67c5;});}return null;};}function removeEntity(_0x427341,_0x2bdce8){return function(_0x4f4014){if(_0x4f4014){return _0x4f4014[_0x6b6b('0x21')]()[_0x6b6b('0x22')](function(){var _0x3d85f8=_0x4f4014[_0x6b6b('0x23')]({'plain':!![]});var _0x29c8fb=_0x6b6b('0x24');return db[_0x6b6b('0x25')]['destroy']({'where':{'type':_0x29c8fb,'resourceId':_0x3d85f8['id']}})[_0x6b6b('0x22')](function(){return _0x4f4014;});})[_0x6b6b('0x22')](function(){_0x427341[_0x6b6b('0x16')](0xcc)[_0x6b6b('0x17')]();});}};}function handleEntityNotFound(_0x1009f4,_0x26def2){return function(_0x3b7809){if(!_0x3b7809){_0x1009f4['sendStatus'](0x194);}return _0x3b7809;};}function handleError(_0x5f569a,_0x4307a4){_0x4307a4=_0x4307a4||0x1f4;return function(_0x598b4a){logger[_0x6b6b('0x26')](_0x598b4a[_0x6b6b('0x27')]);if(_0x598b4a[_0x6b6b('0x28')]){delete _0x598b4a[_0x6b6b('0x28')];}_0x5f569a['status'](_0x4307a4)[_0x6b6b('0x29')](_0x598b4a);};}exports['index']=function(_0x28b5a1,_0x11de3e){var _0x563285={},_0x1cd26e={},_0x570426={'count':0x0,'rows':[]};var _0x1e72b2=_[_0x6b6b('0x2a')](db[_0x6b6b('0x2b')][_0x6b6b('0x2c')],function(_0x57ebb9){return{'name':_0x57ebb9[_0x6b6b('0x2d')],'type':_0x57ebb9['type'][_0x6b6b('0x2e')]};});_0x1cd26e['model']=_[_0x6b6b('0x2a')](_0x1e72b2,_0x6b6b('0x28'));_0x1cd26e['query']=_['keys'](_0x28b5a1[_0x6b6b('0x2f')]);_0x1cd26e[_0x6b6b('0x30')]=_['intersection'](_0x1cd26e[_0x6b6b('0x31')],_0x1cd26e[_0x6b6b('0x2f')]);_0x563285[_0x6b6b('0x32')]=_['intersection'](_0x1cd26e['model'],qs['fields'](_0x28b5a1['query'][_0x6b6b('0x33')]));_0x563285[_0x6b6b('0x32')]=_0x563285[_0x6b6b('0x32')]['length']?_0x563285[_0x6b6b('0x32')]:_0x1cd26e[_0x6b6b('0x31')];if(!_0x28b5a1[_0x6b6b('0x2f')]['hasOwnProperty'](_0x6b6b('0x34'))){_0x563285[_0x6b6b('0x19')]=qs[_0x6b6b('0x19')](_0x28b5a1[_0x6b6b('0x2f')][_0x6b6b('0x19')]);_0x563285['offset']=qs[_0x6b6b('0x18')](_0x28b5a1[_0x6b6b('0x2f')][_0x6b6b('0x18')]);}_0x563285[_0x6b6b('0x35')]=qs['sort'](_0x28b5a1['query']['sort']);_0x563285['where']=qs[_0x6b6b('0x30')](_[_0x6b6b('0x36')](_0x28b5a1['query'],_0x1cd26e[_0x6b6b('0x30')]),_0x1e72b2);if(_0x28b5a1[_0x6b6b('0x2f')][_0x6b6b('0x37')]){_0x563285[_0x6b6b('0x38')]=_[_0x6b6b('0x39')](_0x563285[_0x6b6b('0x38')],{'$or':_['map'](_0x1e72b2,function(_0x459552){if(_0x459552[_0x6b6b('0x3a')]!=='VIRTUAL'){var _0x55c9ff={};_0x55c9ff[_0x459552['name']]={'$like':'%'+_0x28b5a1[_0x6b6b('0x2f')][_0x6b6b('0x37')]+'%'};return _0x55c9ff;}})});}_0x563285=_[_0x6b6b('0x39')]({},_0x563285,_0x28b5a1[_0x6b6b('0x3b')]);var _0x570e24={'where':_0x563285[_0x6b6b('0x38')]};return db['Trigger'][_0x6b6b('0x1b')](_0x570e24)[_0x6b6b('0x22')](function(_0x3971fb){_0x570426[_0x6b6b('0x1b')]=_0x3971fb;if(_0x28b5a1[_0x6b6b('0x2f')][_0x6b6b('0x3c')]){_0x563285[_0x6b6b('0x3d')]=[{'all':!![]}];}return db[_0x6b6b('0x2b')][_0x6b6b('0x3e')](_0x563285);})[_0x6b6b('0x22')](function(_0x3b0763){_0x570426[_0x6b6b('0x3f')]=_0x3b0763;return _0x570426;})[_0x6b6b('0x22')](respondWithFilteredResult(_0x11de3e,_0x563285))[_0x6b6b('0x40')](handleError(_0x11de3e,null));};exports[_0x6b6b('0x41')]=function(_0xea453b,_0x546c8e){var _0x3faeae={'raw':![],'where':{'id':_0xea453b[_0x6b6b('0x42')]['id']}},_0x47de2e={};_0x47de2e[_0x6b6b('0x31')]=_[_0x6b6b('0x43')](db[_0x6b6b('0x2b')]['rawAttributes']);_0x47de2e[_0x6b6b('0x2f')]=_[_0x6b6b('0x43')](_0xea453b[_0x6b6b('0x2f')]);_0x47de2e[_0x6b6b('0x30')]=_[_0x6b6b('0x44')](_0x47de2e['model'],_0x47de2e[_0x6b6b('0x2f')]);_0x3faeae['attributes']=_[_0x6b6b('0x44')](_0x47de2e[_0x6b6b('0x31')],qs['fields'](_0xea453b[_0x6b6b('0x2f')][_0x6b6b('0x33')]));_0x3faeae[_0x6b6b('0x32')]=_0x3faeae['attributes']['length']?_0x3faeae[_0x6b6b('0x32')]:_0x47de2e[_0x6b6b('0x31')];if(_0xea453b[_0x6b6b('0x2f')][_0x6b6b('0x3c')]){_0x3faeae[_0x6b6b('0x3d')]=[{'all':!![]}];}_0x3faeae=_[_0x6b6b('0x39')]({},_0x3faeae,_0xea453b[_0x6b6b('0x3b')]);return db[_0x6b6b('0x2b')][_0x6b6b('0x45')](_0x3faeae)[_0x6b6b('0x22')](handleEntityNotFound(_0x546c8e,null))[_0x6b6b('0x22')](respondWithResult(_0x546c8e,null))['catch'](handleError(_0x546c8e,null));};exports[_0x6b6b('0x46')]=function(_0x1a0df3,_0x46e08c){return db[_0x6b6b('0x2b')][_0x6b6b('0x46')](_0x1a0df3[_0x6b6b('0x47')],{})[_0x6b6b('0x22')](function(_0x3ea177){var _0x23b80e=_0x1a0df3[_0x6b6b('0x48')][_0x6b6b('0x23')]({'plain':!![]});if(!_0x23b80e)throw new Error(_0x6b6b('0x49'));if(_0x23b80e[_0x6b6b('0x4a')]===_0x6b6b('0x48')){var _0x2a141e=_0x3ea177[_0x6b6b('0x23')]({'plain':!![]});var _0x406088=_0x6b6b('0x24');return db['UserProfileSection'][_0x6b6b('0x45')]({'where':{'name':_0x406088,'userProfileId':_0x23b80e[_0x6b6b('0x4b')]},'raw':!![]})[_0x6b6b('0x22')](function(_0x13e703){if(_0x13e703&&_0x13e703[_0x6b6b('0x4c')]===0x0){return db[_0x6b6b('0x25')][_0x6b6b('0x46')]({'name':_0x2a141e[_0x6b6b('0x28')],'resourceId':_0x2a141e['id'],'type':_0x13e703['name'],'sectionId':_0x13e703['id']},{})['then'](function(){return _0x3ea177;});}else{return _0x3ea177;}})['catch'](function(_0x100edb){logger['error'](_0x6b6b('0x4d'),_0x100edb);throw _0x100edb;});}return _0x3ea177;})[_0x6b6b('0x22')](respondWithResult(_0x46e08c,0xc9))[_0x6b6b('0x40')](handleError(_0x46e08c,null));};exports[_0x6b6b('0x20')]=function(_0x33f07b,_0x49fe17){if(_0x33f07b['body']['id']){delete _0x33f07b['body']['id'];}return db[_0x6b6b('0x2b')]['find']({'where':{'id':_0x33f07b[_0x6b6b('0x42')]['id']}})['then'](handleEntityNotFound(_0x49fe17,null))['then'](saveUpdates(_0x33f07b[_0x6b6b('0x47')],null))[_0x6b6b('0x22')](respondWithResult(_0x49fe17,null))[_0x6b6b('0x40')](handleError(_0x49fe17,null));};exports[_0x6b6b('0x21')]=function(_0x4a7cf9,_0x245d90){return db[_0x6b6b('0x2b')][_0x6b6b('0x45')]({'where':{'id':_0x4a7cf9[_0x6b6b('0x42')]['id']}})[_0x6b6b('0x22')](handleEntityNotFound(_0x245d90,null))[_0x6b6b('0x22')](removeEntity(_0x245d90,null))['catch'](handleError(_0x245d90,null));};exports['addAllCondition']=function(_0x2b5e60,_0x2bab38,_0x1cf587){if(_0x2b5e60['body']['id']){delete _0x2b5e60[_0x6b6b('0x47')]['id'];}return db[_0x6b6b('0x2b')][_0x6b6b('0x45')]({'where':{'id':_0x2b5e60[_0x6b6b('0x42')]['id']}})['then'](handleEntityNotFound(_0x2bab38,null))[_0x6b6b('0x22')](function(_0x48b936){if(_0x48b936){_0x2b5e60['body'][_0x6b6b('0x4e')]=_0x48b936['id'];return db[_0x6b6b('0x4f')][_0x6b6b('0x46')](_0x2b5e60['body']);}})[_0x6b6b('0x22')](respondWithResult(_0x2bab38,null))[_0x6b6b('0x40')](handleError(_0x2bab38,null));};exports[_0x6b6b('0x50')]=function(_0x4e4cda,_0x1f541d,_0xe18fe4){if(_0x4e4cda['body']['id']){delete _0x4e4cda[_0x6b6b('0x47')]['id'];}return db['Trigger'][_0x6b6b('0x45')]({'where':{'id':_0x4e4cda[_0x6b6b('0x42')]['id']}})[_0x6b6b('0x22')](handleEntityNotFound(_0x1f541d,null))['then'](function(_0x276e8f){if(_0x276e8f){_0x4e4cda[_0x6b6b('0x47')][_0x6b6b('0x51')]=_0x276e8f['id'];return db[_0x6b6b('0x4f')][_0x6b6b('0x46')](_0x4e4cda[_0x6b6b('0x47')]);}})[_0x6b6b('0x22')](respondWithResult(_0x1f541d,null))['catch'](handleError(_0x1f541d,null));};exports[_0x6b6b('0x52')]=function(_0x15bd2d,_0x5edf08,_0xc2b2e4){var _0xd3c8c5={};var _0x1ea341={};var _0x17b3d6;var _0x52b2c4;return db[_0x6b6b('0x2b')][_0x6b6b('0x53')]({'where':{'id':_0x15bd2d[_0x6b6b('0x42')]['id']}})[_0x6b6b('0x22')](handleEntityNotFound(_0x5edf08,null))[_0x6b6b('0x22')](function(_0x28fb19){if(_0x28fb19){_0x17b3d6=_0x28fb19;_0x1ea341[_0x6b6b('0x31')]=_[_0x6b6b('0x43')](db['Condition']['rawAttributes']);_0x1ea341['query']=_['keys'](_0x15bd2d['query']);_0x1ea341['filters']=_['intersection'](_0x1ea341[_0x6b6b('0x31')],_0x1ea341['query']);_0xd3c8c5['attributes']=_[_0x6b6b('0x44')](_0x1ea341[_0x6b6b('0x31')],qs['fields'](_0x15bd2d[_0x6b6b('0x2f')][_0x6b6b('0x33')]));_0xd3c8c5[_0x6b6b('0x32')]=_0xd3c8c5['attributes'][_0x6b6b('0x54')]?_0xd3c8c5['attributes']:_0x1ea341[_0x6b6b('0x31')];_0xd3c8c5[_0x6b6b('0x35')]=qs[_0x6b6b('0x55')](_0x15bd2d[_0x6b6b('0x2f')][_0x6b6b('0x55')]);_0xd3c8c5[_0x6b6b('0x38')]=qs[_0x6b6b('0x30')](_['pick'](_0x15bd2d[_0x6b6b('0x2f')],_0x1ea341[_0x6b6b('0x30')]));if(_0x15bd2d[_0x6b6b('0x2f')][_0x6b6b('0x37')]){_0xd3c8c5[_0x6b6b('0x38')]=_[_0x6b6b('0x39')](_0xd3c8c5['where'],{'$or':_[_0x6b6b('0x2a')](_0xd3c8c5['attributes'],function(_0x3c169e){var _0x10328b={};_0x10328b[_0x3c169e]={'$like':'%'+_0x15bd2d[_0x6b6b('0x2f')]['filter']+'%'};return _0x10328b;})});}_0xd3c8c5=_[_0x6b6b('0x39')]({},_0xd3c8c5,_0x15bd2d[_0x6b6b('0x3b')]);return _0x17b3d6['getAllConditions'](_0xd3c8c5);}})['then'](function(_0x2dd016){if(_0x2dd016){_0x52b2c4=_0x2dd016[_0x6b6b('0x54')];if(!_0x15bd2d[_0x6b6b('0x2f')][_0x6b6b('0x56')](_0x6b6b('0x34'))){_0xd3c8c5[_0x6b6b('0x19')]=qs[_0x6b6b('0x19')](_0x15bd2d[_0x6b6b('0x2f')][_0x6b6b('0x19')]);_0xd3c8c5[_0x6b6b('0x18')]=qs['offset'](_0x15bd2d['query'][_0x6b6b('0x18')]);}return _0x17b3d6[_0x6b6b('0x52')](_0xd3c8c5);}})[_0x6b6b('0x22')](function(_0x25021a){if(_0x25021a){return _0x25021a?{'count':_0x52b2c4,'rows':_0x25021a}:null;}})[_0x6b6b('0x22')](respondWithResult(_0x5edf08,null))[_0x6b6b('0x40')](handleError(_0x5edf08,null));};exports[_0x6b6b('0x57')]=function(_0x2e7752,_0x3342ba,_0x520503){var _0x4146b5={};var _0x46e4c4={};var _0x2d8e12;var _0x5b6372;return db[_0x6b6b('0x2b')][_0x6b6b('0x53')]({'where':{'id':_0x2e7752[_0x6b6b('0x42')]['id']}})[_0x6b6b('0x22')](handleEntityNotFound(_0x3342ba,null))[_0x6b6b('0x22')](function(_0xc37108){if(_0xc37108){_0x2d8e12=_0xc37108;_0x46e4c4['model']=_[_0x6b6b('0x43')](db['Condition'][_0x6b6b('0x2c')]);_0x46e4c4[_0x6b6b('0x2f')]=_[_0x6b6b('0x43')](_0x2e7752[_0x6b6b('0x2f')]);_0x46e4c4[_0x6b6b('0x30')]=_[_0x6b6b('0x44')](_0x46e4c4['model'],_0x46e4c4[_0x6b6b('0x2f')]);_0x4146b5[_0x6b6b('0x32')]=_['intersection'](_0x46e4c4[_0x6b6b('0x31')],qs[_0x6b6b('0x33')](_0x2e7752[_0x6b6b('0x2f')]['fields']));_0x4146b5['attributes']=_0x4146b5[_0x6b6b('0x32')]['length']?_0x4146b5[_0x6b6b('0x32')]:_0x46e4c4[_0x6b6b('0x31')];_0x4146b5[_0x6b6b('0x35')]=qs[_0x6b6b('0x55')](_0x2e7752[_0x6b6b('0x2f')][_0x6b6b('0x55')]);_0x4146b5[_0x6b6b('0x38')]=qs[_0x6b6b('0x30')](_[_0x6b6b('0x36')](_0x2e7752[_0x6b6b('0x2f')],_0x46e4c4[_0x6b6b('0x30')]));if(_0x2e7752[_0x6b6b('0x2f')][_0x6b6b('0x37')]){_0x4146b5[_0x6b6b('0x38')]=_[_0x6b6b('0x39')](_0x4146b5[_0x6b6b('0x38')],{'$or':_[_0x6b6b('0x2a')](_0x4146b5[_0x6b6b('0x32')],function(_0x360b2a){var _0x422f89={};_0x422f89[_0x360b2a]={'$like':'%'+_0x2e7752['query'][_0x6b6b('0x37')]+'%'};return _0x422f89;})});}_0x4146b5=_['merge']({},_0x4146b5,_0x2e7752['options']);return _0x2d8e12[_0x6b6b('0x57')](_0x4146b5);}})[_0x6b6b('0x22')](function(_0x3156f2){if(_0x3156f2){_0x5b6372=_0x3156f2['length'];if(!_0x2e7752[_0x6b6b('0x2f')]['hasOwnProperty'](_0x6b6b('0x34'))){_0x4146b5[_0x6b6b('0x19')]=qs[_0x6b6b('0x19')](_0x2e7752[_0x6b6b('0x2f')]['limit']);_0x4146b5['offset']=qs[_0x6b6b('0x18')](_0x2e7752[_0x6b6b('0x2f')][_0x6b6b('0x18')]);}return _0x2d8e12[_0x6b6b('0x57')](_0x4146b5);}})['then'](function(_0x2a98c8){if(_0x2a98c8){return _0x2a98c8?{'count':_0x5b6372,'rows':_0x2a98c8}:null;}})['then'](respondWithResult(_0x3342ba,null))[_0x6b6b('0x40')](handleError(_0x3342ba,null));};exports[_0x6b6b('0x58')]=function(_0x3b29e8,_0x59a6c1,_0x5bcd7d){if(_0x3b29e8['body']['id']){delete _0x3b29e8['body']['id'];}return db[_0x6b6b('0x2b')][_0x6b6b('0x45')]({'where':{'id':_0x3b29e8['params']['id']}})[_0x6b6b('0x22')](handleEntityNotFound(_0x59a6c1,null))['then'](function(_0x261078){if(_0x261078){_0x3b29e8[_0x6b6b('0x47')][_0x6b6b('0x59')]=_0x261078['id'];return db[_0x6b6b('0x5a')][_0x6b6b('0x46')](_0x3b29e8[_0x6b6b('0x47')]);}})['then'](respondWithResult(_0x59a6c1,null))[_0x6b6b('0x40')](handleError(_0x59a6c1,null));};exports['getActions']=function(_0x21ff4f,_0x41d666,_0x2da3fd){var _0x549245={};var _0x53df19={};var _0x2e8b7d;var _0x1d2abf;return db['Trigger'][_0x6b6b('0x53')]({'where':{'id':_0x21ff4f[_0x6b6b('0x42')]['id']}})[_0x6b6b('0x22')](handleEntityNotFound(_0x41d666,null))[_0x6b6b('0x22')](function(_0x1975b9){if(_0x1975b9){_0x2e8b7d=_0x1975b9;_0x53df19[_0x6b6b('0x31')]=_[_0x6b6b('0x43')](db[_0x6b6b('0x5a')][_0x6b6b('0x2c')]);_0x53df19[_0x6b6b('0x2f')]=_['keys'](_0x21ff4f[_0x6b6b('0x2f')]);_0x53df19['filters']=_['intersection'](_0x53df19[_0x6b6b('0x31')],_0x53df19[_0x6b6b('0x2f')]);_0x549245[_0x6b6b('0x32')]=_['intersection'](_0x53df19[_0x6b6b('0x31')],qs[_0x6b6b('0x33')](_0x21ff4f['query'][_0x6b6b('0x33')]));_0x549245['attributes']=_0x549245[_0x6b6b('0x32')][_0x6b6b('0x54')]?_0x549245[_0x6b6b('0x32')]:_0x53df19['model'];_0x549245[_0x6b6b('0x35')]=qs[_0x6b6b('0x55')](_0x21ff4f[_0x6b6b('0x2f')][_0x6b6b('0x55')]);_0x549245['where']=qs[_0x6b6b('0x30')](_[_0x6b6b('0x36')](_0x21ff4f['query'],_0x53df19[_0x6b6b('0x30')]));if(_0x21ff4f[_0x6b6b('0x2f')][_0x6b6b('0x37')]){_0x549245['where']=_[_0x6b6b('0x39')](_0x549245[_0x6b6b('0x38')],{'$or':_[_0x6b6b('0x2a')](_0x549245[_0x6b6b('0x32')],function(_0x468a06){var _0x4648dc={};_0x4648dc[_0x468a06]={'$like':'%'+_0x21ff4f[_0x6b6b('0x2f')][_0x6b6b('0x37')]+'%'};return _0x4648dc;})});}_0x549245=_[_0x6b6b('0x39')]({},_0x549245,_0x21ff4f[_0x6b6b('0x3b')]);return _0x2e8b7d[_0x6b6b('0x5b')](_0x549245);}})[_0x6b6b('0x22')](function(_0x5bf578){if(_0x5bf578){_0x1d2abf=_0x5bf578['length'];if(!_0x21ff4f[_0x6b6b('0x2f')]['hasOwnProperty'](_0x6b6b('0x34'))){_0x549245['limit']=qs[_0x6b6b('0x19')](_0x21ff4f[_0x6b6b('0x2f')]['limit']);_0x549245[_0x6b6b('0x18')]=qs[_0x6b6b('0x18')](_0x21ff4f[_0x6b6b('0x2f')][_0x6b6b('0x18')]);}return _0x2e8b7d['getActions'](_0x549245);}})['then'](function(_0x10eed1){if(_0x10eed1){return _0x10eed1?{'count':_0x1d2abf,'rows':_0x10eed1}:null;}})['then'](respondWithResult(_0x41d666,null))[_0x6b6b('0x40')](handleError(_0x41d666,null));};
\ No newline at end of file
+var _0x982c=['Trigger','rawAttributes','fieldName','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','includeAll','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addAllCondition','TriggerAllId','addAnyCondition','TriggerAnyId','Condition','findOne','getAllConditions','getAnyConditions','addAction','TriggerId','Action','getActions','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','destroy','get','Triggers','end','error','stack','name','send','index'];(function(_0x335b9b,_0x1bd2d4){var _0x309863=function(_0x5c5a0a){while(--_0x5c5a0a){_0x335b9b['push'](_0x335b9b['shift']());}};_0x309863(++_0x1bd2d4);}(_0x982c,0x1c4));var _0xc982=function(_0x32eeeb,_0x9a72ad){_0x32eeeb=_0x32eeeb-0x0;var _0x28528=_0x982c[_0x32eeeb];return _0x28528;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc982('0x0'));var zipdir=require(_0xc982('0x1'));var jsonpatch=require(_0xc982('0x2'));var rp=require(_0xc982('0x3'));var moment=require(_0xc982('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc982('0x5'));var util=require(_0xc982('0x6'));var path=require(_0xc982('0x7'));var sox=require(_0xc982('0x8'));var csv=require(_0xc982('0x9'));var ejs=require(_0xc982('0xa'));var fs=require('fs');var fs_extra=require(_0xc982('0xb'));var _=require(_0xc982('0xc'));var squel=require('squel');var crypto=require(_0xc982('0xd'));var jsforce=require(_0xc982('0xe'));var deskjs=require(_0xc982('0xf'));var toCsv=require(_0xc982('0x9'));var querystring=require(_0xc982('0x10'));var Papa=require(_0xc982('0x11'));var Redis=require(_0xc982('0x12'));var authService=require(_0xc982('0x13'));var qs=require(_0xc982('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc982('0x15'));var logger=require(_0xc982('0x16'))(_0xc982('0x17'));var utils=require('../../config/utils');var config=require(_0xc982('0x18'));var licenseUtil=require(_0xc982('0x19'));var db=require(_0xc982('0x1a'))['db'];function respondWithStatusCode(_0x4265b8,_0x9870){_0x9870=_0x9870||0xcc;return function(_0x1d3add){if(_0x1d3add){return _0x4265b8[_0xc982('0x1b')](_0x9870);}return _0x4265b8[_0xc982('0x1c')](_0x9870)['end']();};}function respondWithResult(_0x56dc1e,_0x133ad3){_0x133ad3=_0x133ad3||0xc8;return function(_0x44bc7b){if(_0x44bc7b){return _0x56dc1e['status'](_0x133ad3)[_0xc982('0x1d')](_0x44bc7b);}};}function respondWithFilteredResult(_0x1c9b3e,_0x1abaf1){return function(_0x32bf33){if(_0x32bf33){var _0x5916e1=typeof _0x1abaf1[_0xc982('0x1e')]==='undefined'&&typeof _0x1abaf1[_0xc982('0x1f')]===_0xc982('0x20');var _0x3d9f04=_0x32bf33['count'];var _0x3d9303=_0x5916e1?0x0:_0x1abaf1[_0xc982('0x1e')];var _0x5574f4=_0x5916e1?_0x32bf33[_0xc982('0x21')]:_0x1abaf1[_0xc982('0x1e')]+_0x1abaf1[_0xc982('0x1f')];var _0x49b792;if(_0x5574f4>=_0x3d9f04){_0x5574f4=_0x3d9f04;_0x49b792=0xc8;}else{_0x49b792=0xce;}_0x1c9b3e[_0xc982('0x1c')](_0x49b792);return _0x1c9b3e['set'](_0xc982('0x22'),_0x3d9303+'-'+_0x5574f4+'/'+_0x3d9f04)['json'](_0x32bf33);}return null;};}function patchUpdates(_0x2a3d4f){return function(_0x2be030){try{jsonpatch['apply'](_0x2be030,_0x2a3d4f,!![]);}catch(_0x493164){return BPromise[_0xc982('0x23')](_0x493164);}return _0x2be030[_0xc982('0x24')]();};}function saveUpdates(_0x1bd331,_0x56a6c7){return function(_0x7bbaa6){if(_0x7bbaa6){return _0x7bbaa6[_0xc982('0x25')](_0x1bd331)[_0xc982('0x26')](function(_0x5f3d41){return _0x5f3d41;});}return null;};}function removeEntity(_0x2a71bb,_0x139477){return function(_0x45cb3e){if(_0x45cb3e){return _0x45cb3e[_0xc982('0x27')]()[_0xc982('0x26')](function(){var _0x411db8=_0x45cb3e[_0xc982('0x28')]({'plain':!![]});var _0x1a4ec1=_0xc982('0x29');return db['UserProfileResource'][_0xc982('0x27')]({'where':{'type':_0x1a4ec1,'resourceId':_0x411db8['id']}})[_0xc982('0x26')](function(){return _0x45cb3e;});})[_0xc982('0x26')](function(){_0x2a71bb[_0xc982('0x1c')](0xcc)[_0xc982('0x2a')]();});}};}function handleEntityNotFound(_0x4f0e53,_0x274cbf){return function(_0x39b10d){if(!_0x39b10d){_0x4f0e53[_0xc982('0x1b')](0x194);}return _0x39b10d;};}function handleError(_0x5d98c4,_0x1b08bf){_0x1b08bf=_0x1b08bf||0x1f4;return function(_0x3f121c){logger[_0xc982('0x2b')](_0x3f121c[_0xc982('0x2c')]);if(_0x3f121c[_0xc982('0x2d')]){delete _0x3f121c[_0xc982('0x2d')];}_0x5d98c4['status'](_0x1b08bf)[_0xc982('0x2e')](_0x3f121c);};}exports[_0xc982('0x2f')]=function(_0x451dd7,_0x2e4916){var _0x5aca2e={},_0x33876b={},_0x216172={'count':0x0,'rows':[]};var _0x939e1b=_['map'](db[_0xc982('0x30')][_0xc982('0x31')],function(_0x36dffa){return{'name':_0x36dffa[_0xc982('0x32')],'type':_0x36dffa[_0xc982('0x33')][_0xc982('0x34')]};});_0x33876b['model']=_[_0xc982('0x35')](_0x939e1b,_0xc982('0x2d'));_0x33876b['query']=_[_0xc982('0x36')](_0x451dd7[_0xc982('0x37')]);_0x33876b[_0xc982('0x38')]=_[_0xc982('0x39')](_0x33876b[_0xc982('0x3a')],_0x33876b['query']);_0x5aca2e[_0xc982('0x3b')]=_[_0xc982('0x39')](_0x33876b['model'],qs[_0xc982('0x3c')](_0x451dd7[_0xc982('0x37')][_0xc982('0x3c')]));_0x5aca2e[_0xc982('0x3b')]=_0x5aca2e[_0xc982('0x3b')][_0xc982('0x3d')]?_0x5aca2e[_0xc982('0x3b')]:_0x33876b[_0xc982('0x3a')];if(!_0x451dd7[_0xc982('0x37')][_0xc982('0x3e')](_0xc982('0x3f'))){_0x5aca2e[_0xc982('0x1f')]=qs[_0xc982('0x1f')](_0x451dd7['query'][_0xc982('0x1f')]);_0x5aca2e[_0xc982('0x1e')]=qs[_0xc982('0x1e')](_0x451dd7[_0xc982('0x37')]['offset']);}_0x5aca2e[_0xc982('0x40')]=qs[_0xc982('0x41')](_0x451dd7[_0xc982('0x37')][_0xc982('0x41')]);_0x5aca2e[_0xc982('0x42')]=qs[_0xc982('0x38')](_[_0xc982('0x43')](_0x451dd7['query'],_0x33876b['filters']),_0x939e1b);if(_0x451dd7[_0xc982('0x37')]['filter']){_0x5aca2e['where']=_[_0xc982('0x44')](_0x5aca2e['where'],{'$or':_['map'](_0x939e1b,function(_0x3af1d8){if(_0x3af1d8[_0xc982('0x33')]!==_0xc982('0x45')){var _0x5e5e9e={};_0x5e5e9e[_0x3af1d8[_0xc982('0x2d')]]={'$like':'%'+_0x451dd7[_0xc982('0x37')][_0xc982('0x46')]+'%'};return _0x5e5e9e;}})});}_0x5aca2e=_[_0xc982('0x44')]({},_0x5aca2e,_0x451dd7[_0xc982('0x47')]);var _0x2e6b7d={'where':_0x5aca2e[_0xc982('0x42')]};return db[_0xc982('0x30')]['count'](_0x2e6b7d)[_0xc982('0x26')](function(_0xce3e6a){_0x216172[_0xc982('0x21')]=_0xce3e6a;if(_0x451dd7['query']['includeAll']){_0x5aca2e[_0xc982('0x48')]=[{'all':!![]}];}return db[_0xc982('0x30')][_0xc982('0x49')](_0x5aca2e);})[_0xc982('0x26')](function(_0x18f4d8){_0x216172[_0xc982('0x4a')]=_0x18f4d8;return _0x216172;})[_0xc982('0x26')](respondWithFilteredResult(_0x2e4916,_0x5aca2e))[_0xc982('0x4b')](handleError(_0x2e4916,null));};exports[_0xc982('0x4c')]=function(_0x5b5339,_0x302b27){var _0x5b0c1c={'raw':![],'where':{'id':_0x5b5339[_0xc982('0x4d')]['id']}},_0x1457f1={};_0x1457f1[_0xc982('0x3a')]=_[_0xc982('0x36')](db['Trigger'][_0xc982('0x31')]);_0x1457f1['query']=_[_0xc982('0x36')](_0x5b5339[_0xc982('0x37')]);_0x1457f1[_0xc982('0x38')]=_[_0xc982('0x39')](_0x1457f1[_0xc982('0x3a')],_0x1457f1[_0xc982('0x37')]);_0x5b0c1c[_0xc982('0x3b')]=_[_0xc982('0x39')](_0x1457f1[_0xc982('0x3a')],qs[_0xc982('0x3c')](_0x5b5339[_0xc982('0x37')][_0xc982('0x3c')]));_0x5b0c1c['attributes']=_0x5b0c1c['attributes'][_0xc982('0x3d')]?_0x5b0c1c[_0xc982('0x3b')]:_0x1457f1[_0xc982('0x3a')];if(_0x5b5339[_0xc982('0x37')][_0xc982('0x4e')]){_0x5b0c1c['include']=[{'all':!![]}];}_0x5b0c1c=_[_0xc982('0x44')]({},_0x5b0c1c,_0x5b5339[_0xc982('0x47')]);return db[_0xc982('0x30')][_0xc982('0x4f')](_0x5b0c1c)[_0xc982('0x26')](handleEntityNotFound(_0x302b27,null))[_0xc982('0x26')](respondWithResult(_0x302b27,null))['catch'](handleError(_0x302b27,null));};exports[_0xc982('0x50')]=function(_0x4bcfef,_0x305eea){return db[_0xc982('0x30')][_0xc982('0x50')](_0x4bcfef['body'],{})[_0xc982('0x26')](function(_0x3f6a56){var _0x3f7d19=_0x4bcfef['user'][_0xc982('0x28')]({'plain':!![]});if(!_0x3f7d19)throw new Error(_0xc982('0x51'));if(_0x3f7d19[_0xc982('0x52')]===_0xc982('0x53')){var _0x155c3e=_0x3f6a56['get']({'plain':!![]});var _0x2133f1=_0xc982('0x29');return db[_0xc982('0x54')][_0xc982('0x4f')]({'where':{'name':_0x2133f1,'userProfileId':_0x3f7d19['userProfileId']},'raw':!![]})[_0xc982('0x26')](function(_0x18194b){if(_0x18194b&&_0x18194b['autoAssociation']===0x0){return db[_0xc982('0x55')]['create']({'name':_0x155c3e[_0xc982('0x2d')],'resourceId':_0x155c3e['id'],'type':_0x18194b[_0xc982('0x2d')],'sectionId':_0x18194b['id']},{})['then'](function(){return _0x3f6a56;});}else{return _0x3f6a56;}})['catch'](function(_0x767bc7){logger['error'](_0xc982('0x56'),_0x767bc7);throw _0x767bc7;});}return _0x3f6a56;})[_0xc982('0x26')](respondWithResult(_0x305eea,0xc9))[_0xc982('0x4b')](handleError(_0x305eea,null));};exports[_0xc982('0x25')]=function(_0x77640d,_0x4b134a){if(_0x77640d[_0xc982('0x57')]['id']){delete _0x77640d[_0xc982('0x57')]['id'];}return db[_0xc982('0x30')]['find']({'where':{'id':_0x77640d[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x4b134a,null))[_0xc982('0x26')](saveUpdates(_0x77640d['body'],null))[_0xc982('0x26')](respondWithResult(_0x4b134a,null))[_0xc982('0x4b')](handleError(_0x4b134a,null));};exports['destroy']=function(_0x554ea3,_0x5ebc04){return db[_0xc982('0x30')][_0xc982('0x4f')]({'where':{'id':_0x554ea3[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x5ebc04,null))[_0xc982('0x26')](removeEntity(_0x5ebc04,null))['catch'](handleError(_0x5ebc04,null));};exports[_0xc982('0x58')]=function(_0x452374,_0x141e25,_0xe02248){if(_0x452374[_0xc982('0x57')]['id']){delete _0x452374[_0xc982('0x57')]['id'];}return db['Trigger'][_0xc982('0x4f')]({'where':{'id':_0x452374[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x141e25,null))[_0xc982('0x26')](function(_0xe5f62){if(_0xe5f62){_0x452374[_0xc982('0x57')][_0xc982('0x59')]=_0xe5f62['id'];return db['Condition'][_0xc982('0x50')](_0x452374[_0xc982('0x57')]);}})['then'](respondWithResult(_0x141e25,null))[_0xc982('0x4b')](handleError(_0x141e25,null));};exports[_0xc982('0x5a')]=function(_0x31198c,_0x4d1571,_0x229668){if(_0x31198c[_0xc982('0x57')]['id']){delete _0x31198c['body']['id'];}return db[_0xc982('0x30')]['find']({'where':{'id':_0x31198c[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x4d1571,null))[_0xc982('0x26')](function(_0x1e3c92){if(_0x1e3c92){_0x31198c[_0xc982('0x57')][_0xc982('0x5b')]=_0x1e3c92['id'];return db[_0xc982('0x5c')]['create'](_0x31198c[_0xc982('0x57')]);}})[_0xc982('0x26')](respondWithResult(_0x4d1571,null))[_0xc982('0x4b')](handleError(_0x4d1571,null));};exports['getAllConditions']=function(_0x541673,_0x4a7ee2,_0x123124){var _0x44ed07={};var _0x1adef1={};var _0x20f97f;var _0x1972a4;return db[_0xc982('0x30')][_0xc982('0x5d')]({'where':{'id':_0x541673[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x4a7ee2,null))[_0xc982('0x26')](function(_0x1a136d){if(_0x1a136d){_0x20f97f=_0x1a136d;_0x1adef1[_0xc982('0x3a')]=_['keys'](db[_0xc982('0x5c')][_0xc982('0x31')]);_0x1adef1['query']=_[_0xc982('0x36')](_0x541673[_0xc982('0x37')]);_0x1adef1[_0xc982('0x38')]=_[_0xc982('0x39')](_0x1adef1[_0xc982('0x3a')],_0x1adef1[_0xc982('0x37')]);_0x44ed07[_0xc982('0x3b')]=_[_0xc982('0x39')](_0x1adef1[_0xc982('0x3a')],qs[_0xc982('0x3c')](_0x541673['query']['fields']));_0x44ed07[_0xc982('0x3b')]=_0x44ed07['attributes'][_0xc982('0x3d')]?_0x44ed07[_0xc982('0x3b')]:_0x1adef1[_0xc982('0x3a')];_0x44ed07[_0xc982('0x40')]=qs[_0xc982('0x41')](_0x541673[_0xc982('0x37')][_0xc982('0x41')]);_0x44ed07[_0xc982('0x42')]=qs[_0xc982('0x38')](_[_0xc982('0x43')](_0x541673[_0xc982('0x37')],_0x1adef1[_0xc982('0x38')]));if(_0x541673['query'][_0xc982('0x46')]){_0x44ed07[_0xc982('0x42')]=_[_0xc982('0x44')](_0x44ed07[_0xc982('0x42')],{'$or':_['map'](_0x44ed07[_0xc982('0x3b')],function(_0x313f63){var _0x19f8e9={};_0x19f8e9[_0x313f63]={'$like':'%'+_0x541673[_0xc982('0x37')][_0xc982('0x46')]+'%'};return _0x19f8e9;})});}_0x44ed07=_[_0xc982('0x44')]({},_0x44ed07,_0x541673[_0xc982('0x47')]);return _0x20f97f[_0xc982('0x5e')](_0x44ed07);}})[_0xc982('0x26')](function(_0x428215){if(_0x428215){_0x1972a4=_0x428215['length'];if(!_0x541673[_0xc982('0x37')][_0xc982('0x3e')](_0xc982('0x3f'))){_0x44ed07[_0xc982('0x1f')]=qs[_0xc982('0x1f')](_0x541673[_0xc982('0x37')]['limit']);_0x44ed07['offset']=qs['offset'](_0x541673[_0xc982('0x37')]['offset']);}return _0x20f97f[_0xc982('0x5e')](_0x44ed07);}})['then'](function(_0x5db841){if(_0x5db841){return _0x5db841?{'count':_0x1972a4,'rows':_0x5db841}:null;}})[_0xc982('0x26')](respondWithResult(_0x4a7ee2,null))[_0xc982('0x4b')](handleError(_0x4a7ee2,null));};exports[_0xc982('0x5f')]=function(_0x17bd41,_0x3b652c,_0x4dab79){var _0x55c70a={};var _0x384d84={};var _0x2c5dc4;var _0x4a1a5f;return db['Trigger'][_0xc982('0x5d')]({'where':{'id':_0x17bd41['params']['id']}})['then'](handleEntityNotFound(_0x3b652c,null))['then'](function(_0x2b6f22){if(_0x2b6f22){_0x2c5dc4=_0x2b6f22;_0x384d84[_0xc982('0x3a')]=_[_0xc982('0x36')](db['Condition'][_0xc982('0x31')]);_0x384d84[_0xc982('0x37')]=_[_0xc982('0x36')](_0x17bd41[_0xc982('0x37')]);_0x384d84[_0xc982('0x38')]=_[_0xc982('0x39')](_0x384d84['model'],_0x384d84['query']);_0x55c70a[_0xc982('0x3b')]=_[_0xc982('0x39')](_0x384d84[_0xc982('0x3a')],qs[_0xc982('0x3c')](_0x17bd41[_0xc982('0x37')][_0xc982('0x3c')]));_0x55c70a[_0xc982('0x3b')]=_0x55c70a[_0xc982('0x3b')][_0xc982('0x3d')]?_0x55c70a['attributes']:_0x384d84['model'];_0x55c70a[_0xc982('0x40')]=qs[_0xc982('0x41')](_0x17bd41['query']['sort']);_0x55c70a[_0xc982('0x42')]=qs[_0xc982('0x38')](_[_0xc982('0x43')](_0x17bd41['query'],_0x384d84[_0xc982('0x38')]));if(_0x17bd41[_0xc982('0x37')][_0xc982('0x46')]){_0x55c70a[_0xc982('0x42')]=_[_0xc982('0x44')](_0x55c70a[_0xc982('0x42')],{'$or':_[_0xc982('0x35')](_0x55c70a[_0xc982('0x3b')],function(_0x39b33b){var _0x1eedea={};_0x1eedea[_0x39b33b]={'$like':'%'+_0x17bd41['query'][_0xc982('0x46')]+'%'};return _0x1eedea;})});}_0x55c70a=_['merge']({},_0x55c70a,_0x17bd41[_0xc982('0x47')]);return _0x2c5dc4['getAnyConditions'](_0x55c70a);}})[_0xc982('0x26')](function(_0x1c3076){if(_0x1c3076){_0x4a1a5f=_0x1c3076[_0xc982('0x3d')];if(!_0x17bd41[_0xc982('0x37')][_0xc982('0x3e')](_0xc982('0x3f'))){_0x55c70a['limit']=qs[_0xc982('0x1f')](_0x17bd41[_0xc982('0x37')][_0xc982('0x1f')]);_0x55c70a[_0xc982('0x1e')]=qs['offset'](_0x17bd41[_0xc982('0x37')][_0xc982('0x1e')]);}return _0x2c5dc4[_0xc982('0x5f')](_0x55c70a);}})[_0xc982('0x26')](function(_0x4730da){if(_0x4730da){return _0x4730da?{'count':_0x4a1a5f,'rows':_0x4730da}:null;}})[_0xc982('0x26')](respondWithResult(_0x3b652c,null))[_0xc982('0x4b')](handleError(_0x3b652c,null));};exports[_0xc982('0x60')]=function(_0x483270,_0x226767,_0x1be572){if(_0x483270['body']['id']){delete _0x483270[_0xc982('0x57')]['id'];}return db['Trigger'][_0xc982('0x4f')]({'where':{'id':_0x483270['params']['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x226767,null))['then'](function(_0x4bc8d2){if(_0x4bc8d2){_0x483270[_0xc982('0x57')][_0xc982('0x61')]=_0x4bc8d2['id'];return db['Action'][_0xc982('0x50')](_0x483270[_0xc982('0x57')]);}})['then'](respondWithResult(_0x226767,null))[_0xc982('0x4b')](handleError(_0x226767,null));};exports['getActions']=function(_0x20a55d,_0x2aac49,_0x2810b2){var _0x197b28={};var _0x29b6dd={};var _0x235808;var _0x1986f4;return db[_0xc982('0x30')][_0xc982('0x5d')]({'where':{'id':_0x20a55d[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x2aac49,null))[_0xc982('0x26')](function(_0xa8e340){if(_0xa8e340){_0x235808=_0xa8e340;_0x29b6dd[_0xc982('0x3a')]=_[_0xc982('0x36')](db[_0xc982('0x62')][_0xc982('0x31')]);_0x29b6dd['query']=_[_0xc982('0x36')](_0x20a55d[_0xc982('0x37')]);_0x29b6dd[_0xc982('0x38')]=_[_0xc982('0x39')](_0x29b6dd[_0xc982('0x3a')],_0x29b6dd[_0xc982('0x37')]);_0x197b28[_0xc982('0x3b')]=_[_0xc982('0x39')](_0x29b6dd['model'],qs[_0xc982('0x3c')](_0x20a55d[_0xc982('0x37')][_0xc982('0x3c')]));_0x197b28[_0xc982('0x3b')]=_0x197b28[_0xc982('0x3b')][_0xc982('0x3d')]?_0x197b28[_0xc982('0x3b')]:_0x29b6dd['model'];_0x197b28[_0xc982('0x40')]=qs[_0xc982('0x41')](_0x20a55d[_0xc982('0x37')][_0xc982('0x41')]);_0x197b28[_0xc982('0x42')]=qs['filters'](_[_0xc982('0x43')](_0x20a55d[_0xc982('0x37')],_0x29b6dd[_0xc982('0x38')]));if(_0x20a55d[_0xc982('0x37')]['filter']){_0x197b28[_0xc982('0x42')]=_['merge'](_0x197b28['where'],{'$or':_[_0xc982('0x35')](_0x197b28[_0xc982('0x3b')],function(_0x1d0d28){var _0x593d38={};_0x593d38[_0x1d0d28]={'$like':'%'+_0x20a55d['query'][_0xc982('0x46')]+'%'};return _0x593d38;})});}_0x197b28=_[_0xc982('0x44')]({},_0x197b28,_0x20a55d[_0xc982('0x47')]);return _0x235808[_0xc982('0x63')](_0x197b28);}})[_0xc982('0x26')](function(_0x371dc6){if(_0x371dc6){_0x1986f4=_0x371dc6[_0xc982('0x3d')];if(!_0x20a55d[_0xc982('0x37')][_0xc982('0x3e')](_0xc982('0x3f'))){_0x197b28['limit']=qs[_0xc982('0x1f')](_0x20a55d[_0xc982('0x37')][_0xc982('0x1f')]);_0x197b28[_0xc982('0x1e')]=qs['offset'](_0x20a55d[_0xc982('0x37')]['offset']);}return _0x235808[_0xc982('0x63')](_0x197b28);}})[_0xc982('0x26')](function(_0x12e520){if(_0x12e520){return _0x12e520?{'count':_0x1986f4,'rows':_0x12e520}:null;}})[_0xc982('0x26')](respondWithResult(_0x2aac49,null))['catch'](handleError(_0x2aac49,null));};
\ No newline at end of file
index 9485817..4ac6d99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd50=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','define','Trigger','tools_triggers','lodash'];(function(_0xf64e5,_0x4a3232){var _0x5f312c=function(_0x4d816c){while(--_0x4d816c){_0xf64e5['push'](_0xf64e5['shift']());}};_0x5f312c(++_0x4a3232);}(_0xbd50,0x196));var _0x0bd5=function(_0xa16640,_0x25fc45){_0xa16640=_0xa16640-0x0;var _0x34172f=_0xbd50[_0xa16640];return _0x34172f;};'use strict';var _=require(_0x0bd5('0x0'));var util=require(_0x0bd5('0x1'));var logger=require(_0x0bd5('0x2'))('api');var moment=require(_0x0bd5('0x3'));var BPromise=require(_0x0bd5('0x4'));var rp=require(_0x0bd5('0x5'));var fs=require('fs');var path=require(_0x0bd5('0x6'));var rimraf=require(_0x0bd5('0x7'));var config=require('../../config/environment');var attributes=require('./trigger.attributes');module['exports']=function(_0x376024,_0x2ef1d0){return _0x376024[_0x0bd5('0x8')](_0x0bd5('0x9'),attributes,{'tableName':_0x0bd5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x38d3=['define','Trigger','tools_triggers','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trigger.attributes','exports'];(function(_0x566bdf,_0x1f4861){var _0x331215=function(_0x524d0d){while(--_0x524d0d){_0x566bdf['push'](_0x566bdf['shift']());}};_0x331215(++_0x1f4861);}(_0x38d3,0x1a7));var _0x338d=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x38d3[_0x3ab9ee];return _0x82ee88;};'use strict';var _=require(_0x338d('0x0'));var util=require(_0x338d('0x1'));var logger=require('../../config/logger')(_0x338d('0x2'));var moment=require(_0x338d('0x3'));var BPromise=require(_0x338d('0x4'));var rp=require(_0x338d('0x5'));var fs=require('fs');var path=require(_0x338d('0x6'));var rimraf=require(_0x338d('0x7'));var config=require(_0x338d('0x8'));var attributes=require(_0x338d('0x9'));module[_0x338d('0xa')]=function(_0x4e32b4,_0x2a056d){return _0x4e32b4[_0x338d('0xb')](_0x338d('0xc'),attributes,{'tableName':_0x338d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d6b628c..5d1c52a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4596=['code','message','catch','GetTrigger','Trigger','findAll','options','raw','attributes','limit','include','map','model','debug','find','where','ShowTrigger','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','Trigger,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0x4596,0x183));var _0x6459=function(_0x221474,_0x4d57ba){_0x221474=_0x221474-0x0;var _0x41e156=_0x4596[_0x221474];return _0x41e156;};'use strict';var _=require(_0x6459('0x0'));var util=require('util');var moment=require(_0x6459('0x1'));var BPromise=require(_0x6459('0x2'));var rs=require(_0x6459('0x3'));var fs=require('fs');var Redis=require(_0x6459('0x4'));var db=require(_0x6459('0x5'))['db'];var utils=require(_0x6459('0x6'));var logger=require('../../config/logger')(_0x6459('0x7'));var config=require(_0x6459('0x8'));var jayson=require(_0x6459('0x9'));var client=jayson[_0x6459('0xa')][_0x6459('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3ec749,_0x353909,_0x3d7e06){return new BPromise(function(_0x5de377,_0x23ed37){return client[_0x6459('0xc')](_0x3ec749,_0x3d7e06)[_0x6459('0xd')](function(_0x2223f2){logger[_0x6459('0xe')](_0x6459('0xf'),_0x353909,_0x6459('0x10'));logger['debug'](_0x6459('0x11'),_0x353909,'request\x20sent',JSON[_0x6459('0x12')](_0x2223f2));if(_0x2223f2['error']){if(_0x2223f2[_0x6459('0x13')][_0x6459('0x14')]===0x1f4){logger[_0x6459('0x13')](_0x6459('0xf'),_0x353909,_0x2223f2[_0x6459('0x13')][_0x6459('0x15')]);return _0x23ed37(_0x2223f2[_0x6459('0x13')][_0x6459('0x15')]);}logger['error'](_0x6459('0xf'),_0x353909,_0x2223f2['error'][_0x6459('0x15')]);return _0x5de377(_0x2223f2[_0x6459('0x13')][_0x6459('0x15')]);}else{logger['info'](_0x6459('0xf'),_0x353909,_0x6459('0x10'));_0x5de377(_0x2223f2['result']['message']);}})[_0x6459('0x16')](function(_0xd04c79){logger['error']('Trigger,\x20%s,\x20%s',_0x353909,_0xd04c79);_0x23ed37(_0xd04c79);});});}exports[_0x6459('0x17')]=function(_0x1a797b){var _0x438483=this;return new Promise(function(_0x2b793,_0x4dc0d0){return db[_0x6459('0x18')][_0x6459('0x19')]({'raw':_0x1a797b[_0x6459('0x1a')]?_0x1a797b[_0x6459('0x1a')][_0x6459('0x1b')]===undefined?!![]:![]:!![],'where':_0x1a797b[_0x6459('0x1a')]?_0x1a797b[_0x6459('0x1a')]['where']||null:null,'attributes':_0x1a797b['options']?_0x1a797b['options'][_0x6459('0x1c')]||null:null,'limit':_0x1a797b[_0x6459('0x1a')]?_0x1a797b[_0x6459('0x1a')][_0x6459('0x1d')]||null:null,'include':_0x1a797b[_0x6459('0x1a')]?_0x1a797b[_0x6459('0x1a')][_0x6459('0x1e')]?_[_0x6459('0x1f')](_0x1a797b[_0x6459('0x1a')][_0x6459('0x1e')],function(_0x50dc9a){return{'model':db[_0x50dc9a[_0x6459('0x20')]],'as':_0x50dc9a['as'],'attributes':_0x50dc9a[_0x6459('0x1c')],'include':_0x50dc9a[_0x6459('0x1e')]?_[_0x6459('0x1f')](_0x50dc9a['include'],function(_0x33f496){return{'model':db[_0x33f496[_0x6459('0x20')]],'as':_0x33f496['as'],'attributes':_0x33f496[_0x6459('0x1c')],'include':_0x33f496['include']?_[_0x6459('0x1f')](_0x33f496[_0x6459('0x1e')],function(_0x3f13ca){return{'model':db[_0x3f13ca[_0x6459('0x20')]],'as':_0x3f13ca['as'],'attributes':_0x3f13ca['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4c2416){logger[_0x6459('0xe')](_0x6459('0x17'),_0x1a797b);logger[_0x6459('0x21')](_0x6459('0x17'),_0x1a797b,JSON[_0x6459('0x12')](_0x4c2416));_0x2b793(_0x4c2416);})[_0x6459('0x16')](function(_0x187eab){logger[_0x6459('0x13')]('GetTrigger',_0x187eab[_0x6459('0x15')],_0x1a797b);_0x4dc0d0(_0x438483['error'](0x1f4,_0x187eab[_0x6459('0x15')]));});});};exports['ShowTrigger']=function(_0x26b91f){var _0x56cffe=this;return new Promise(function(_0xca6d96,_0x1ce3bf){return db[_0x6459('0x18')][_0x6459('0x22')]({'raw':_0x26b91f[_0x6459('0x1a')]?_0x26b91f[_0x6459('0x1a')][_0x6459('0x1b')]===undefined?!![]:![]:!![],'where':_0x26b91f[_0x6459('0x1a')]?_0x26b91f[_0x6459('0x1a')][_0x6459('0x23')]||null:null,'attributes':_0x26b91f['options']?_0x26b91f[_0x6459('0x1a')]['attributes']||null:null,'include':_0x26b91f[_0x6459('0x1a')]?_0x26b91f[_0x6459('0x1a')][_0x6459('0x1e')]?_[_0x6459('0x1f')](_0x26b91f[_0x6459('0x1a')][_0x6459('0x1e')],function(_0xaa2e11){return{'model':db[_0xaa2e11[_0x6459('0x20')]],'as':_0xaa2e11['as'],'attributes':_0xaa2e11[_0x6459('0x1c')],'include':_0xaa2e11[_0x6459('0x1e')]?_[_0x6459('0x1f')](_0xaa2e11[_0x6459('0x1e')],function(_0x2ccd74){return{'model':db[_0x2ccd74['model']],'as':_0x2ccd74['as'],'attributes':_0x2ccd74['attributes'],'include':_0x2ccd74[_0x6459('0x1e')]?_['map'](_0x2ccd74[_0x6459('0x1e')],function(_0x46f393){return{'model':db[_0x46f393[_0x6459('0x20')]],'as':_0x46f393['as'],'attributes':_0x46f393[_0x6459('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x40651c){logger[_0x6459('0xe')](_0x6459('0x24'),_0x26b91f);logger[_0x6459('0x21')](_0x6459('0x24'),_0x26b91f,JSON[_0x6459('0x12')](_0x40651c));_0xca6d96(_0x40651c);})[_0x6459('0x16')](function(_0x3fabe2){logger[_0x6459('0x13')](_0x6459('0x24'),_0x3fabe2[_0x6459('0x15')],_0x26b91f);_0x1ce3bf(_0x56cffe['error'](0x1f4,_0x3fabe2[_0x6459('0x15')]));});});};
\ No newline at end of file
+var _0x25cb=['Trigger','findAll','options','raw','where','attributes','limit','map','include','model','info','GetTrigger','ShowTrigger','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','Trigger,\x20%s,\x20%s','debug','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x4eea4b,_0x2df371){var _0xe8bec8=function(_0x2bedce){while(--_0x2bedce){_0x4eea4b['push'](_0x4eea4b['shift']());}};_0xe8bec8(++_0x2df371);}(_0x25cb,0xec));var _0xb25c=function(_0x427d3a,_0x23724c){_0x427d3a=_0x427d3a-0x0;var _0xe5c521=_0x25cb[_0x427d3a];return _0xe5c521;};'use strict';var _=require(_0xb25c('0x0'));var util=require(_0xb25c('0x1'));var moment=require(_0xb25c('0x2'));var BPromise=require(_0xb25c('0x3'));var rs=require(_0xb25c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb25c('0x5'))['db'];var utils=require(_0xb25c('0x6'));var logger=require(_0xb25c('0x7'))(_0xb25c('0x8'));var config=require(_0xb25c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb25c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5475da,_0x531d9a,_0x323b7c){return new BPromise(function(_0x17e909,_0x26e0f4){return client[_0xb25c('0xb')](_0x5475da,_0x323b7c)[_0xb25c('0xc')](function(_0x412e4e){logger['info'](_0xb25c('0xd'),_0x531d9a,'request\x20sent');logger[_0xb25c('0xe')](_0xb25c('0xf'),_0x531d9a,_0xb25c('0x10'),JSON[_0xb25c('0x11')](_0x412e4e));if(_0x412e4e[_0xb25c('0x12')]){if(_0x412e4e['error'][_0xb25c('0x13')]===0x1f4){logger[_0xb25c('0x12')](_0xb25c('0xd'),_0x531d9a,_0x412e4e[_0xb25c('0x12')][_0xb25c('0x14')]);return _0x26e0f4(_0x412e4e[_0xb25c('0x12')][_0xb25c('0x14')]);}logger[_0xb25c('0x12')](_0xb25c('0xd'),_0x531d9a,_0x412e4e[_0xb25c('0x12')][_0xb25c('0x14')]);return _0x17e909(_0x412e4e[_0xb25c('0x12')][_0xb25c('0x14')]);}else{logger['info'](_0xb25c('0xd'),_0x531d9a,_0xb25c('0x10'));_0x17e909(_0x412e4e[_0xb25c('0x15')][_0xb25c('0x14')]);}})[_0xb25c('0x16')](function(_0x16755d){logger[_0xb25c('0x12')](_0xb25c('0xd'),_0x531d9a,_0x16755d);_0x26e0f4(_0x16755d);});});}exports['GetTrigger']=function(_0x19234d){var _0x3720f1=this;return new Promise(function(_0x3b8c2e,_0x2f40c2){return db[_0xb25c('0x17')][_0xb25c('0x18')]({'raw':_0x19234d['options']?_0x19234d[_0xb25c('0x19')][_0xb25c('0x1a')]===undefined?!![]:![]:!![],'where':_0x19234d[_0xb25c('0x19')]?_0x19234d['options'][_0xb25c('0x1b')]||null:null,'attributes':_0x19234d[_0xb25c('0x19')]?_0x19234d[_0xb25c('0x19')][_0xb25c('0x1c')]||null:null,'limit':_0x19234d[_0xb25c('0x19')]?_0x19234d[_0xb25c('0x19')][_0xb25c('0x1d')]||null:null,'include':_0x19234d[_0xb25c('0x19')]?_0x19234d['options']['include']?_[_0xb25c('0x1e')](_0x19234d['options']['include'],function(_0x3bc94e){return{'model':db[_0x3bc94e['model']],'as':_0x3bc94e['as'],'attributes':_0x3bc94e[_0xb25c('0x1c')],'include':_0x3bc94e[_0xb25c('0x1f')]?_[_0xb25c('0x1e')](_0x3bc94e[_0xb25c('0x1f')],function(_0x313d37){return{'model':db[_0x313d37[_0xb25c('0x20')]],'as':_0x313d37['as'],'attributes':_0x313d37[_0xb25c('0x1c')],'include':_0x313d37['include']?_[_0xb25c('0x1e')](_0x313d37[_0xb25c('0x1f')],function(_0x273ba7){return{'model':db[_0x273ba7[_0xb25c('0x20')]],'as':_0x273ba7['as'],'attributes':_0x273ba7[_0xb25c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb25c('0xc')](function(_0x2a1518){logger[_0xb25c('0x21')](_0xb25c('0x22'),_0x19234d);logger[_0xb25c('0xe')](_0xb25c('0x22'),_0x19234d,JSON['stringify'](_0x2a1518));_0x3b8c2e(_0x2a1518);})[_0xb25c('0x16')](function(_0x8c2a22){logger['error']('GetTrigger',_0x8c2a22[_0xb25c('0x14')],_0x19234d);_0x2f40c2(_0x3720f1[_0xb25c('0x12')](0x1f4,_0x8c2a22[_0xb25c('0x14')]));});});};exports[_0xb25c('0x23')]=function(_0x4d8e5e){var _0x5e5b4f=this;return new Promise(function(_0x16f8af,_0x417b2d){return db['Trigger'][_0xb25c('0x24')]({'raw':_0x4d8e5e[_0xb25c('0x19')]?_0x4d8e5e[_0xb25c('0x19')][_0xb25c('0x1a')]===undefined?!![]:![]:!![],'where':_0x4d8e5e[_0xb25c('0x19')]?_0x4d8e5e['options'][_0xb25c('0x1b')]||null:null,'attributes':_0x4d8e5e[_0xb25c('0x19')]?_0x4d8e5e[_0xb25c('0x19')]['attributes']||null:null,'include':_0x4d8e5e[_0xb25c('0x19')]?_0x4d8e5e['options'][_0xb25c('0x1f')]?_['map'](_0x4d8e5e[_0xb25c('0x19')][_0xb25c('0x1f')],function(_0x36165e){return{'model':db[_0x36165e['model']],'as':_0x36165e['as'],'attributes':_0x36165e[_0xb25c('0x1c')],'include':_0x36165e['include']?_[_0xb25c('0x1e')](_0x36165e['include'],function(_0xe5adf4){return{'model':db[_0xe5adf4[_0xb25c('0x20')]],'as':_0xe5adf4['as'],'attributes':_0xe5adf4[_0xb25c('0x1c')],'include':_0xe5adf4[_0xb25c('0x1f')]?_['map'](_0xe5adf4[_0xb25c('0x1f')],function(_0x3af29c){return{'model':db[_0x3af29c['model']],'as':_0x3af29c['as'],'attributes':_0x3af29c[_0xb25c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb25c('0xc')](function(_0x46bd99){logger[_0xb25c('0x21')](_0xb25c('0x23'),_0x4d8e5e);logger[_0xb25c('0xe')](_0xb25c('0x23'),_0x4d8e5e,JSON[_0xb25c('0x11')](_0x46bd99));_0x16f8af(_0x46bd99);})[_0xb25c('0x16')](function(_0x28c96d){logger[_0xb25c('0x12')](_0xb25c('0x23'),_0x28c96d[_0xb25c('0x14')],_0x4d8e5e);_0x417b2d(_0x5e5b4f[_0xb25c('0x12')](0x1f4,_0x28c96d[_0xb25c('0x14')]));});});};
\ No newline at end of file
index 2426d5d..479b34d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ddb=['update','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./trunk.controller','get','isAuthenticated','post','/:id/clone','clone','create','put','/:id'];(function(_0x39be9c,_0x3716b3){var _0x16eae7=function(_0x409f97){while(--_0x409f97){_0x39be9c['push'](_0x39be9c['shift']());}};_0x16eae7(++_0x3716b3);}(_0x4ddb,0xbc));var _0xb4dd=function(_0x48cf09,_0x3b5f6c){_0x48cf09=_0x48cf09-0x0;var _0x203b57=_0x4ddb[_0x48cf09];return _0x203b57;};'use strict';var multer=require(_0xb4dd('0x0'));var util=require('util');var path=require(_0xb4dd('0x1'));var timeout=require(_0xb4dd('0x2'));var express=require(_0xb4dd('0x3'));var router=express['Router']();var fs_extra=require(_0xb4dd('0x4'));var auth=require(_0xb4dd('0x5'));var interaction=require(_0xb4dd('0x6'));var config=require('../../config/environment');var controller=require(_0xb4dd('0x7'));router[_0xb4dd('0x8')]('/',auth[_0xb4dd('0x9')](),controller['index']);router[_0xb4dd('0x8')]('/:id',auth[_0xb4dd('0x9')](),controller['show']);router[_0xb4dd('0xa')](_0xb4dd('0xb'),auth['isAuthenticated'](),controller[_0xb4dd('0xc')]);router[_0xb4dd('0xa')]('/',auth[_0xb4dd('0x9')](),controller[_0xb4dd('0xd')]);router[_0xb4dd('0xe')](_0xb4dd('0xf'),auth[_0xb4dd('0x9')](),controller[_0xb4dd('0x10')]);router['delete'](_0xb4dd('0xf'),auth[_0xb4dd('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe050=['../../components/interaction/service','./trunk.controller','get','index','/:id','isAuthenticated','/:id/clone','clone','create','put','update','exports','multer','path','Router','../../components/auth/service'];(function(_0x88e558,_0x4e8960){var _0x5c2b09=function(_0x47653c){while(--_0x47653c){_0x88e558['push'](_0x88e558['shift']());}};_0x5c2b09(++_0x4e8960);}(_0xe050,0x16c));var _0x0e05=function(_0x165c55,_0x111b89){_0x165c55=_0x165c55-0x0;var _0x4fe39d=_0xe050[_0x165c55];return _0x4fe39d;};'use strict';var multer=require(_0x0e05('0x0'));var util=require('util');var path=require(_0x0e05('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0e05('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x0e05('0x3'));var interaction=require(_0x0e05('0x4'));var config=require('../../config/environment');var controller=require(_0x0e05('0x5'));router[_0x0e05('0x6')]('/',auth['isAuthenticated'](),controller[_0x0e05('0x7')]);router['get'](_0x0e05('0x8'),auth[_0x0e05('0x9')](),controller['show']);router['post'](_0x0e05('0xa'),auth[_0x0e05('0x9')](),controller[_0x0e05('0xb')]);router['post']('/',auth[_0x0e05('0x9')](),controller[_0x0e05('0xc')]);router[_0x0e05('0xd')](_0x0e05('0x8'),auth[_0x0e05('0x9')](),controller[_0x0e05('0xe')]);router['delete'](_0x0e05('0x8'),auth[_0x0e05('0x9')](),controller['destroy']);module[_0x0e05('0xf')]=router;
\ No newline at end of file
index f641f34..9a43e18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f2e=['allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','never','INTEGER','\x22\x22\x20<>','always','accept','originate','uas','pai','fingerprint','active','actpass','dynamic','update','update,nonat','BOOLEAN','sequelize','exports','friend','user','peer','STRING','from-voip-provider','ENUM','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','setDataValue','join','getDataValue','transport','split','rfc2833','info','inband','yes','nonat','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm'];(function(_0x3c560a,_0x1c46d4){var _0x22e9be=function(_0xd72419){while(--_0xd72419){_0x3c560a['push'](_0x3c560a['shift']());}};_0x22e9be(++_0x1c46d4);}(_0x8f2e,0x1f3));var _0xe8f2=function(_0x5810cb,_0x2c06be){_0x5810cb=_0x5810cb-0x0;var _0x2f2dd4=_0x8f2e[_0x5810cb];return _0x2f2dd4;};'use strict';var Sequelize=require(_0xe8f2('0x0'));module[_0xe8f2('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0xe8f2('0x2'),_0xe8f2('0x3'),_0xe8f2('0x4')),'allowNull':![],'defaultValue':_0xe8f2('0x2')},'context':{'type':Sequelize[_0xe8f2('0x5')],'allowNull':![],'defaultValue':_0xe8f2('0x6')},'callingpres':{'type':Sequelize[_0xe8f2('0x7')]('ALLOWED_NOT_SCREENED',_0xe8f2('0x8'),'ALLOWED_FAILED_SCREEN',_0xe8f2('0x9'),_0xe8f2('0xa'),_0xe8f2('0xb'),_0xe8f2('0xc'),'PROHIB')},'deny':{'type':Sequelize[_0xe8f2('0x5')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0xe8f2('0x5')]},'remotesecret':{'type':Sequelize[_0xe8f2('0x5')]},'transport':{'type':Sequelize[_0xe8f2('0x5')],'defaultValue':_0xe8f2('0xd'),'set':function(_0x574000){this[_0xe8f2('0xe')]('transport',_0x574000?_0x574000[_0xe8f2('0xf')](','):null);},'get':function(){return this[_0xe8f2('0x10')](_0xe8f2('0x11'))?this[_0xe8f2('0x10')]('transport')[_0xe8f2('0x12')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize['ENUM'](_0xe8f2('0x13'),_0xe8f2('0x14'),'shortinfo',_0xe8f2('0x15'),'auto'),'defaultValue':_0xe8f2('0x13')},'directmedia':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no',_0xe8f2('0x17'),'update','outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xe8f2('0x5')]},'directmediadeny':{'type':Sequelize[_0xe8f2('0x5')]},'nat':{'type':Sequelize[_0xe8f2('0x5')],'defaultValue':_0xe8f2('0x18'),'set':function(_0x53f652){this['setDataValue'](_0xe8f2('0x19'),_0x53f652?_0x53f652[_0xe8f2('0xf')](','):null);},'get':function(){return this['getDataValue'](_0xe8f2('0x19'))?this[_0xe8f2('0x10')](_0xe8f2('0x19'))[_0xe8f2('0x12')](','):null;},'comment':_0xe8f2('0x1a')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0xe8f2('0x5')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xe8f2('0x5')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xe8f2('0x5')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0xe8f2('0x1b')},'allow':{'type':Sequelize[_0xe8f2('0x5')],'allowNull':![],'defaultValue':_0xe8f2('0x1c'),'set':function(_0x5c5953){this[_0xe8f2('0xe')](_0xe8f2('0x1d'),_0x5c5953?_0x5c5953['join'](';'):_0xe8f2('0x1c'));},'get':function(){return this['getDataValue'](_0xe8f2('0x1d'))?this[_0xe8f2('0x10')](_0xe8f2('0x1d'))[_0xe8f2('0x12')](';'):null;},'comment':_0xe8f2('0x1e')},'autoframing':{'type':Sequelize['ENUM'](_0xe8f2('0x16'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0xe8f2('0x1f'),'set':function(_0x114dec){this[_0xe8f2('0xe')]('insecure',_0x114dec?_0x114dec[_0xe8f2('0xf')](','):null);},'get':function(){return this[_0xe8f2('0x10')](_0xe8f2('0x20'))?this[_0xe8f2('0x10')](_0xe8f2('0x20'))[_0xe8f2('0x12')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no',_0xe8f2('0x21'))},'promiscredir':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no')},'useclientcode':{'type':Sequelize[_0xe8f2('0x7')]('yes','no')},'accountcode':{'type':Sequelize[_0xe8f2('0x22')](0xb)},'setvar':{'type':Sequelize[_0xe8f2('0x5')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0xe8f2('0x23')},'amaflags':{'type':Sequelize[_0xe8f2('0x5')]},'callcounter':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no'),'defaultValue':_0xe8f2('0x16')},'busylevel':{'type':Sequelize['INTEGER'](0xb)},'allowoverlap':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no')},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no')},'allowtransfer':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0xe8f2('0x7')]('yes','no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize['ENUM'](_0xe8f2('0x16'),'no',_0xe8f2('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xe8f2('0x22')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no')},'mailbox':{'type':Sequelize[_0xe8f2('0x5')]},'session_timers':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x25'),'refuse',_0xe8f2('0x26'))},'session_expires':{'type':Sequelize[_0xe8f2('0x22')](0xb)},'session_minse':{'type':Sequelize[_0xe8f2('0x22')](0xb)},'session_refresher':{'type':Sequelize[_0xe8f2('0x7')]('uac','uas'),'defaultValue':_0xe8f2('0x27')},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0xe8f2('0x5')]},'fromdomain':{'type':Sequelize[_0xe8f2('0x5')]},'fromuser':{'type':Sequelize[_0xe8f2('0x5')]},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0xe8f2('0x7')]('yes','no'),'defaultValue':_0xe8f2('0x16')},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0xe8f2('0x5')]},'defaultuser':{'type':Sequelize[_0xe8f2('0x5')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xe8f2('0x22')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xe8f2('0x22')](0xb)},'sendrpid':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no',_0xe8f2('0x28')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0xe8f2('0x5')]},'timert1':{'type':Sequelize[_0xe8f2('0x22')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0xe8f2('0x22')](0xb)},'contactpermit':{'type':Sequelize[_0xe8f2('0x5')]},'contactdeny':{'type':Sequelize[_0xe8f2('0x5')]},'contactacl':{'type':Sequelize[_0xe8f2('0x5')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0xe8f2('0x5')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0xe8f2('0x7')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xe8f2('0x7')]('yes','no')},'force_avp':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no')},'icesupport':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no')},'dtlsenable':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no')},'dtlsverify':{'type':Sequelize[_0xe8f2('0x7')]('yes','no',_0xe8f2('0x29'),'certificate')},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0xe8f2('0x5')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0xe8f2('0x5')]},'dtlscafile':{'type':Sequelize[_0xe8f2('0x5')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x2a'),'passive',_0xe8f2('0x2b')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xe8f2('0x5')]},'recordofffeature':{'type':Sequelize[_0xe8f2('0x5')]},'call_limit':{'type':Sequelize[_0xe8f2('0x22')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0xe8f2('0x16'),'no')},'subscribemwi':{'type':Sequelize[_0xe8f2('0x7')](_0xe8f2('0x16'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0xe8f2('0x5')]},'mohsuggest':{'type':Sequelize[_0xe8f2('0x5')]},'parkinglot':{'type':Sequelize[_0xe8f2('0x5')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xe8f2('0x5')],'defaultValue':_0xe8f2('0x2c')},'canreinvite':{'type':Sequelize['ENUM'](_0xe8f2('0x16'),'no',_0xe8f2('0x17'),_0xe8f2('0x2d'),_0xe8f2('0x2e')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xe8f2('0x5')]},'otherFields':{'type':Sequelize[_0xe8f2('0x5')]},'active':{'type':Sequelize[_0xe8f2('0x2f')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xe8f2('0x5')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xe662=['exports','STRING','name','ENUM','friend','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','setDataValue','transport','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','nonat','update','outgoing','getDataValue','nat','all','ulaw;alaw;gsm','allow','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','yes','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','pai','fingerprint','actpass','dynamic','BOOLEAN'];(function(_0x4f7035,_0x204fb5){var _0x283816=function(_0x7c2597){while(--_0x7c2597){_0x4f7035['push'](_0x4f7035['shift']());}};_0x283816(++_0x204fb5);}(_0xe662,0xf5));var _0x2e66=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xe662[_0x5b561d];return _0x431060;};'use strict';var Sequelize=require('sequelize');module[_0x2e66('0x0')]={'name':{'type':Sequelize[_0x2e66('0x1')],'allowNull':![],'unique':_0x2e66('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x4'),'user',_0x2e66('0x5')),'allowNull':![],'defaultValue':_0x2e66('0x4')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2e66('0x6')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0x2e66('0x7'),'ALLOWED_FAILED_SCREEN',_0x2e66('0x8'),_0x2e66('0x9'),_0x2e66('0xa'),_0x2e66('0xb'),_0x2e66('0xc'))},'deny':{'type':Sequelize[_0x2e66('0x1')]},'permit':{'type':Sequelize[_0x2e66('0x1')]},'secret':{'type':Sequelize[_0x2e66('0x1')]},'md5secret':{'type':Sequelize[_0x2e66('0x1')]},'remotesecret':{'type':Sequelize[_0x2e66('0x1')]},'transport':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':'udp','set':function(_0x201cb5){this[_0x2e66('0xd')](_0x2e66('0xe'),_0x201cb5?_0x201cb5[_0x2e66('0xf')](','):null);},'get':function(){return this['getDataValue'](_0x2e66('0xe'))?this['getDataValue'](_0x2e66('0xe'))['split'](','):null;},'comment':_0x2e66('0x10')},'dtmfmode':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x11'),_0x2e66('0x12'),_0x2e66('0x13'),_0x2e66('0x14'),_0x2e66('0x15')),'defaultValue':_0x2e66('0x11')},'directmedia':{'type':Sequelize[_0x2e66('0x3')]('yes','no',_0x2e66('0x16'),_0x2e66('0x17'),_0x2e66('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x2e66('0x3')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x2e66('0x1')]},'directmediadeny':{'type':Sequelize[_0x2e66('0x1')]},'nat':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':'force_rport,comedia','set':function(_0x42f8c7){this[_0x2e66('0xd')]('nat',_0x42f8c7?_0x42f8c7[_0x2e66('0xf')](','):null);},'get':function(){return this[_0x2e66('0x19')](_0x2e66('0x1a'))?this[_0x2e66('0x19')](_0x2e66('0x1a'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x2e66('0x1')]},'namedcallgroup':{'type':Sequelize[_0x2e66('0x1')]},'pickupgroup':{'type':Sequelize[_0x2e66('0x1')]},'namedpickupgroup':{'type':Sequelize[_0x2e66('0x1')]},'language':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':_0x2e66('0x1b')},'allow':{'type':Sequelize[_0x2e66('0x1')],'allowNull':![],'defaultValue':_0x2e66('0x1c'),'set':function(_0x507b45){this[_0x2e66('0xd')](_0x2e66('0x1d'),_0x507b45?_0x507b45[_0x2e66('0xf')](';'):_0x2e66('0x1c'));},'get':function(){return this[_0x2e66('0x19')](_0x2e66('0x1d'))?this[_0x2e66('0x19')](_0x2e66('0x1d'))[_0x2e66('0x1e')](';'):null;},'comment':_0x2e66('0x1f')},'autoframing':{'type':Sequelize[_0x2e66('0x3')]('yes','no')},'insecure':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':_0x2e66('0x20'),'set':function(_0x13ccbc){this[_0x2e66('0xd')]('insecure',_0x13ccbc?_0x13ccbc[_0x2e66('0xf')](','):null);},'get':function(){return this['getDataValue'](_0x2e66('0x21'))?this[_0x2e66('0x19')](_0x2e66('0x21'))[_0x2e66('0x1e')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0x2e66('0x23'))},'promiscredir':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no')},'useclientcode':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'accountcode':{'type':Sequelize[_0x2e66('0x24')](0xb)},'setvar':{'type':Sequelize[_0x2e66('0x1')]},'callerid':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':_0x2e66('0x25')},'amaflags':{'type':Sequelize[_0x2e66('0x1')]},'callcounter':{'type':Sequelize[_0x2e66('0x3')]('yes','no'),'defaultValue':_0x2e66('0x22')},'busylevel':{'type':Sequelize[_0x2e66('0x24')](0xb)},'allowoverlap':{'type':Sequelize[_0x2e66('0x3')]('yes','no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no')},'ignoresdpversion':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'subscribecontext':{'type':Sequelize[_0x2e66('0x1')]},'template':{'type':Sequelize[_0x2e66('0x1')]},'videosupport':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no',_0x2e66('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize['ENUM'](_0x2e66('0x27'),_0x2e66('0x28'),_0x2e66('0x29'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0x2e66('0x24')](0xb)},'session_refresher':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x2a'),_0x2e66('0x2b')),'defaultValue':_0x2e66('0x2b')},'t38pt_usertpsource':{'type':Sequelize[_0x2e66('0x1')]},'regexten':{'type':Sequelize[_0x2e66('0x1')]},'fromdomain':{'type':Sequelize[_0x2e66('0x1')]},'fromuser':{'type':Sequelize[_0x2e66('0x1')]},'port':{'type':Sequelize[_0x2e66('0x24')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no'),'defaultValue':_0x2e66('0x22')},'keepalive':{'type':Sequelize[_0x2e66('0x24')](0xb)},'defaultip':{'type':Sequelize[_0x2e66('0x1')]},'defaultuser':{'type':Sequelize[_0x2e66('0x1')]},'rtptimeout':{'type':Sequelize[_0x2e66('0x24')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x2e66('0x24')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x2e66('0x24')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no',_0x2e66('0x2c')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x2e66('0x1')]},'callbackextension':{'type':Sequelize[_0x2e66('0x1')]},'timert1':{'type':Sequelize[_0x2e66('0x24')](0xb)},'timerb':{'type':Sequelize[_0x2e66('0x24')](0xb)},'qualifyfreq':{'type':Sequelize[_0x2e66('0x24')](0xb)},'contactpermit':{'type':Sequelize[_0x2e66('0x1')]},'contactdeny':{'type':Sequelize[_0x2e66('0x1')]},'contactacl':{'type':Sequelize[_0x2e66('0x1')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x2e66('0x24')](0xb)},'encryption':{'type':Sequelize[_0x2e66('0x3')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'force_avp':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'icesupport':{'type':Sequelize[_0x2e66('0x3')]('yes','no')},'dtlsenable':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'dtlsverify':{'type':Sequelize[_0x2e66('0x3')]('yes','no',_0x2e66('0x2d'),'certificate')},'dtlsrekey':{'type':Sequelize[_0x2e66('0x24')](0xb)},'dtlscertfile':{'type':Sequelize[_0x2e66('0x1')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0x2e66('0x1')]},'dtlssetup':{'type':Sequelize[_0x2e66('0x3')]('active','passive',_0x2e66('0x2e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x2e66('0x1')]},'usereqphone':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0x2e66('0x1')]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM']('yes','no')},'subscribemwi':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'vmexten':{'type':Sequelize[_0x2e66('0x1')]},'mohinterpret':{'type':Sequelize[_0x2e66('0x1')]},'mohsuggest':{'type':Sequelize[_0x2e66('0x1')]},'parkinglot':{'type':Sequelize[_0x2e66('0x1')]},'description':{'type':Sequelize[_0x2e66('0x1')]},'host':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':_0x2e66('0x2f')},'canreinvite':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no',_0x2e66('0x16'),'update','update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x2e66('0x1')]},'active':{'type':Sequelize[_0x2e66('0x30')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':'no'}};
\ No newline at end of file
index 91cb339..c977bdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['includeAll','findAll','rows','params','find','clone','rawAttributes','include','omit','createdAt','body','updatedAt','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','Reload','chan_sip.so','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','jayson/promise','client','http','request','info','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','Trunk,\x20%s,\x20%s','result','catch','sendStatus','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','get','Trunks','UserProfileResource','status','stack','name','index','map','Trunk','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options'];(function(_0x5c052d,_0x34d3d8){var _0x3cfc57=function(_0x15334b){while(--_0x15334b){_0x5c052d['push'](_0x5c052d['shift']());}};_0x3cfc57(++_0x34d3d8);}(_0x00bb,0x1d8));var _0xb00b=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x00bb[_0xbca1b1];return _0x4e1686;};'use strict';var emlformat=require(_0xb00b('0x0'));var rimraf=require(_0xb00b('0x1'));var zipdir=require(_0xb00b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb00b('0x3'));var moment=require('moment');var BPromise=require(_0xb00b('0x4'));var Mustache=require(_0xb00b('0x5'));var util=require('util');var path=require(_0xb00b('0x6'));var sox=require(_0xb00b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var authService=require(_0xb00b('0xf'));var qs=require(_0xb00b('0x10'));var as=require(_0xb00b('0x11'));var hardwareService=require(_0xb00b('0x12'));var logger=require('../../config/logger')(_0xb00b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb00b('0x14'))['db'];var jayson=require(_0xb00b('0x15'));var client=jayson[_0xb00b('0x16')][_0xb00b('0x17')]({'port':0x232a});function respondWithRpcPromise(_0xef5d52,_0x1f1c1d,_0x4ada81,_0x218de2){return new BPromise(function(_0xb0d42e,_0x482fe6){var _0x88d95e=_0x218de2||client;return _0x88d95e[_0xb00b('0x18')](_0xef5d52,_0x4ada81)['then'](function(_0x5da36b){logger[_0xb00b('0x19')]('Trunk,\x20%s,\x20%s',_0x1f1c1d,'request\x20sent');logger[_0xb00b('0x1a')](_0xb00b('0x1b'),_0x1f1c1d,_0xb00b('0x1c'),JSON[_0xb00b('0x1d')](_0x5da36b));if(_0x5da36b['error']){if(_0x5da36b[_0xb00b('0x1e')]['code']===0x1f4){logger[_0xb00b('0x1e')]('Trunk,\x20%s,\x20%s',_0x1f1c1d,_0x5da36b[_0xb00b('0x1e')]['message']);return _0x482fe6(_0x5da36b[_0xb00b('0x1e')][_0xb00b('0x1f')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x1f1c1d,_0x5da36b[_0xb00b('0x1e')]['message']);return _0xb0d42e(_0x5da36b[_0xb00b('0x1e')][_0xb00b('0x1f')]);}else{logger[_0xb00b('0x19')](_0xb00b('0x20'),_0x1f1c1d,'request\x20sent');_0xb0d42e(_0x5da36b[_0xb00b('0x21')]['message']);}})[_0xb00b('0x22')](function(_0x121ec7){logger['error'](_0xb00b('0x20'),_0x1f1c1d,_0x121ec7);_0x482fe6(_0x121ec7);});});}function respondWithStatusCode(_0x2896d1,_0x520444){_0x520444=_0x520444||0xcc;return function(_0x3ab3cc){if(_0x3ab3cc){return _0x2896d1[_0xb00b('0x23')](_0x520444);}return _0x2896d1['status'](_0x520444)[_0xb00b('0x24')]();};}function respondWithResult(_0x243fdb,_0x3c9500){_0x3c9500=_0x3c9500||0xc8;return function(_0x8caadf){if(_0x8caadf){return _0x243fdb['status'](_0x3c9500)['json'](_0x8caadf);}};}function respondWithFilteredResult(_0x3785e9,_0x490380){return function(_0x550587){if(_0x550587){var _0x4a635e=typeof _0x490380[_0xb00b('0x25')]===_0xb00b('0x26')&&typeof _0x490380[_0xb00b('0x27')]===_0xb00b('0x26');var _0x1f14fa=_0x550587[_0xb00b('0x28')];var _0x15d3b9=_0x4a635e?0x0:_0x490380['offset'];var _0x22c22d=_0x4a635e?_0x550587['count']:_0x490380[_0xb00b('0x25')]+_0x490380[_0xb00b('0x27')];var _0x5424ca;if(_0x22c22d>=_0x1f14fa){_0x22c22d=_0x1f14fa;_0x5424ca=0xc8;}else{_0x5424ca=0xce;}_0x3785e9['status'](_0x5424ca);return _0x3785e9[_0xb00b('0x29')](_0xb00b('0x2a'),_0x15d3b9+'-'+_0x22c22d+'/'+_0x1f14fa)[_0xb00b('0x2b')](_0x550587);}return null;};}function patchUpdates(_0x183233){return function(_0x303625){try{jsonpatch[_0xb00b('0x2c')](_0x303625,_0x183233,!![]);}catch(_0x2e160a){return BPromise[_0xb00b('0x2d')](_0x2e160a);}return _0x303625[_0xb00b('0x2e')]();};}function saveUpdates(_0x54e247,_0x2b5f41){return function(_0x44918d){if(_0x44918d){return _0x44918d['update'](_0x54e247)[_0xb00b('0x2f')](function(_0x2f3b37){return _0x2f3b37;});}return null;};}function removeEntity(_0x5a5e5a,_0x456241){return function(_0x4d2ee5){if(_0x4d2ee5){return _0x4d2ee5[_0xb00b('0x30')]()[_0xb00b('0x2f')](function(){var _0x322879=_0x4d2ee5[_0xb00b('0x31')]({'plain':!![]});var _0x338864=_0xb00b('0x32');return db[_0xb00b('0x33')]['destroy']({'where':{'type':_0x338864,'resourceId':_0x322879['id']}})['then'](function(){return _0x4d2ee5;});})['then'](function(){_0x5a5e5a[_0xb00b('0x34')](0xcc)[_0xb00b('0x24')]();});}};}function handleEntityNotFound(_0x45dcda,_0x2589cb){return function(_0x5cfa60){if(!_0x5cfa60){_0x45dcda[_0xb00b('0x23')](0x194);}return _0x5cfa60;};}function handleError(_0x266f8e,_0x341f46){_0x341f46=_0x341f46||0x1f4;return function(_0x1c7a9f){logger[_0xb00b('0x1e')](_0x1c7a9f[_0xb00b('0x35')]);if(_0x1c7a9f[_0xb00b('0x36')]){delete _0x1c7a9f[_0xb00b('0x36')];}_0x266f8e['status'](_0x341f46)['send'](_0x1c7a9f);};}exports[_0xb00b('0x37')]=function(_0x56022e,_0x1c8258){var _0x1c5400={},_0x29579b={},_0x45ca74={'count':0x0,'rows':[]};var _0x37c017=_[_0xb00b('0x38')](db[_0xb00b('0x39')]['rawAttributes'],function(_0x35f1ca){return{'name':_0x35f1ca[_0xb00b('0x3a')],'type':_0x35f1ca[_0xb00b('0x3b')][_0xb00b('0x3c')]};});_0x29579b[_0xb00b('0x3d')]=_[_0xb00b('0x38')](_0x37c017,'name');_0x29579b[_0xb00b('0x3e')]=_[_0xb00b('0x3f')](_0x56022e['query']);_0x29579b[_0xb00b('0x40')]=_[_0xb00b('0x41')](_0x29579b[_0xb00b('0x3d')],_0x29579b[_0xb00b('0x3e')]);_0x1c5400[_0xb00b('0x42')]=_['intersection'](_0x29579b[_0xb00b('0x3d')],qs[_0xb00b('0x43')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x43')]));_0x1c5400['attributes']=_0x1c5400['attributes'][_0xb00b('0x44')]?_0x1c5400[_0xb00b('0x42')]:_0x29579b[_0xb00b('0x3d')];if(!_0x56022e[_0xb00b('0x3e')][_0xb00b('0x45')](_0xb00b('0x46'))){_0x1c5400[_0xb00b('0x27')]=qs['limit'](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x27')]);_0x1c5400[_0xb00b('0x25')]=qs[_0xb00b('0x25')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x25')]);}_0x1c5400[_0xb00b('0x47')]=qs[_0xb00b('0x48')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x48')]);_0x1c5400[_0xb00b('0x49')]=qs[_0xb00b('0x40')](_['pick'](_0x56022e[_0xb00b('0x3e')],_0x29579b[_0xb00b('0x40')]),_0x37c017);if(_0x56022e[_0xb00b('0x3e')][_0xb00b('0x4a')]){_0x1c5400[_0xb00b('0x49')]=_[_0xb00b('0x4b')](_0x1c5400[_0xb00b('0x49')],{'$or':_[_0xb00b('0x38')](_0x37c017,function(_0x10ba60){if(_0x10ba60[_0xb00b('0x3b')]!==_0xb00b('0x4c')){var _0x3b3031={};_0x3b3031[_0x10ba60['name']]={'$like':'%'+_0x56022e['query']['filter']+'%'};return _0x3b3031;}})});}_0x1c5400=_[_0xb00b('0x4b')]({},_0x1c5400,_0x56022e[_0xb00b('0x4d')]);var _0x481154={'where':_0x1c5400[_0xb00b('0x49')]};return db[_0xb00b('0x39')][_0xb00b('0x28')](_0x481154)[_0xb00b('0x2f')](function(_0x4b62b3){_0x45ca74['count']=_0x4b62b3;if(_0x56022e[_0xb00b('0x3e')][_0xb00b('0x4e')]){_0x1c5400['include']=[{'all':!![]}];}return db['Trunk'][_0xb00b('0x4f')](_0x1c5400);})[_0xb00b('0x2f')](function(_0x4e0be4){_0x45ca74[_0xb00b('0x50')]=_0x4e0be4;return _0x45ca74;})['then'](respondWithFilteredResult(_0x1c8258,_0x1c5400))['catch'](handleError(_0x1c8258,null));};exports['show']=function(_0x465d90,_0x481515){var _0x1f7b86={'raw':![],'where':{'id':_0x465d90[_0xb00b('0x51')]['id']}},_0x3178aa={};_0x3178aa[_0xb00b('0x3d')]=_[_0xb00b('0x3f')](db[_0xb00b('0x39')]['rawAttributes']);_0x3178aa['query']=_[_0xb00b('0x3f')](_0x465d90[_0xb00b('0x3e')]);_0x3178aa['filters']=_[_0xb00b('0x41')](_0x3178aa[_0xb00b('0x3d')],_0x3178aa['query']);_0x1f7b86[_0xb00b('0x42')]=_[_0xb00b('0x41')](_0x3178aa[_0xb00b('0x3d')],qs['fields'](_0x465d90['query'][_0xb00b('0x43')]));_0x1f7b86[_0xb00b('0x42')]=_0x1f7b86[_0xb00b('0x42')][_0xb00b('0x44')]?_0x1f7b86['attributes']:_0x3178aa[_0xb00b('0x3d')];if(_0x465d90[_0xb00b('0x3e')]['includeAll']){_0x1f7b86['include']=[{'all':!![]}];}_0x1f7b86=_[_0xb00b('0x4b')]({},_0x1f7b86,_0x465d90['options']);return db[_0xb00b('0x39')][_0xb00b('0x52')](_0x1f7b86)[_0xb00b('0x2f')](handleEntityNotFound(_0x481515,null))[_0xb00b('0x2f')](respondWithResult(_0x481515,null))[_0xb00b('0x22')](handleError(_0x481515,null));};exports[_0xb00b('0x53')]=function(_0x5a3b85,_0x5d52a5){var _0x51c9e3={'where':{'id':_0x5a3b85[_0xb00b('0x51')]['id']}},_0x37d4d2={};_0x37d4d2[_0xb00b('0x3d')]=_['keys'](db[_0xb00b('0x39')][_0xb00b('0x54')]);_0x51c9e3[_0xb00b('0x42')]=_['intersection'](_0x37d4d2[_0xb00b('0x3d')],qs[_0xb00b('0x43')](_0x5a3b85[_0xb00b('0x3e')][_0xb00b('0x43')]));_0x51c9e3[_0xb00b('0x42')]=_0x51c9e3[_0xb00b('0x42')][_0xb00b('0x44')]?_0x51c9e3[_0xb00b('0x42')]:_0x37d4d2['model'];if(_0x5a3b85[_0xb00b('0x3e')][_0xb00b('0x4e')]){_0x51c9e3[_0xb00b('0x55')]=[{'all':!![]}];}_0x51c9e3=_['merge']({},_0x51c9e3,_0x5a3b85[_0xb00b('0x4d')]);return db[_0xb00b('0x39')][_0xb00b('0x52')](_0x51c9e3)[_0xb00b('0x2f')](handleEntityNotFound(_0x5d52a5,null))[_0xb00b('0x2f')](function(_0x4bfe0b){if(_0x4bfe0b){var _0xfd4ecc=_0x4bfe0b[_0xb00b('0x31')]({'plain':!![]});_0xfd4ecc=qs[_0xb00b('0x56')](_0xfd4ecc,['id',_0xb00b('0x57'),'updatedAt']);_0x5a3b85[_0xb00b('0x58')]=_[_0xb00b('0x56')](_0x5a3b85[_0xb00b('0x58')],['id',_0xb00b('0x57'),_0xb00b('0x59')]);return db[_0xb00b('0x39')][_0xb00b('0x5a')](_['merge'](_0xfd4ecc,_0x5a3b85[_0xb00b('0x58')]),{'include':_0x5a3b85['query'][_0xb00b('0x4e')]?[{'all':!![]}]:undefined})['then'](function(_0x3b3272){var _0x530d4a=_0x5a3b85[_0xb00b('0x5b')]['get']({'plain':!![]});if(!_0x530d4a)throw new Error(_0xb00b('0x5c'));if(_0x530d4a[_0xb00b('0x5d')]===_0xb00b('0x5b')){var _0x4d1cec=_0x3b3272['get']({'plain':!![]});var _0x4f7a59=_0xb00b('0x32');return db[_0xb00b('0x5e')][_0xb00b('0x52')]({'where':{'name':_0x4f7a59,'userProfileId':_0x530d4a['userProfileId']},'raw':!![]})[_0xb00b('0x2f')](function(_0x37ae88){if(_0x37ae88&&_0x37ae88[_0xb00b('0x5f')]===0x0){return db[_0xb00b('0x33')][_0xb00b('0x5a')]({'name':_0x4d1cec['name'],'resourceId':_0x4d1cec['id'],'type':_0x37ae88[_0xb00b('0x36')],'sectionId':_0x37ae88['id']},{})[_0xb00b('0x2f')](function(){return _0x3b3272;});}else{return _0x3b3272;}})['catch'](function(_0xe1316d){logger[_0xb00b('0x1e')](_0xb00b('0x60'),_0xe1316d);throw _0xe1316d;});}return _0x3b3272;});}})['then'](respondWithResult(_0x5d52a5,0xc9))['catch'](handleError(_0x5d52a5,null));};exports[_0xb00b('0x5a')]=function(_0x188da7,_0x23762e,_0x49f0a2){var _0x5aac5f;return db['Trunk']['create'](_0x188da7[_0xb00b('0x58')],{'raw':!![]})['then'](function(_0x2434a0){_0x5aac5f=_0x2434a0;return db[_0xb00b('0x39')]['findAll']({'raw':!![]});})[_0xb00b('0x2f')](function(_0x1e7f3a){var _0x2d21ec=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],_0xb00b('0x63')),_0xb00b('0x64'));var _0x3d4482=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config[_0xb00b('0x65')],_0xb00b('0x66')),'utf8');var _0x27b3ae=ejs[_0xb00b('0x67')](_0x2d21ec,{'trunks':_0x1e7f3a||[]});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x27b3ae);if(_0x5aac5f[_0xb00b('0x6a')]){var _0x432b68=ejs[_0xb00b('0x67')](_0x3d4482,{'trunks':_0x1e7f3a||[]});fs[_0xb00b('0x68')]('/etc/asterisk/sip_xcally_registers.conf',_0x432b68);}})[_0xb00b('0x2f')](function(){return respondWithRpcPromise(_0xb00b('0x6b'),_0xb00b('0x5a'),{'module':_0xb00b('0x6c')});})[_0xb00b('0x2f')](function(){var _0xfb2b68=_0x188da7[_0xb00b('0x5b')][_0xb00b('0x31')]({'plain':!![]});if(!_0xfb2b68)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xfb2b68[_0xb00b('0x5d')]===_0xb00b('0x5b')){var _0x7803a0=_0x5aac5f[_0xb00b('0x31')]({'plain':!![]});return db[_0xb00b('0x5e')][_0xb00b('0x52')]({'where':{'name':_0xb00b('0x32'),'userProfileId':_0xfb2b68['userProfileId']},'raw':!![]})[_0xb00b('0x2f')](function(_0x37a4c0){if(_0x37a4c0&&_0x37a4c0[_0xb00b('0x5f')]===0x0){return db[_0xb00b('0x33')][_0xb00b('0x5a')]({'name':_0x7803a0[_0xb00b('0x36')],'resourceId':_0x7803a0['id'],'type':_0x37a4c0['name'],'sectionId':_0x37a4c0['id']},{})[_0xb00b('0x2f')](function(){return _0x5aac5f;});}else{return _0x5aac5f;}})['catch'](function(_0x135cbf){logger['error'](_0xb00b('0x60'),_0x135cbf);throw _0x135cbf;});}return _0x5aac5f;})[_0xb00b('0x2f')](respondWithResult(_0x23762e,0xc9))[_0xb00b('0x22')](handleError(_0x23762e,null));};exports['update']=function(_0x5287cc,_0x9ad1c6,_0x3c4850){var _0x33a483;return db[_0xb00b('0x39')][_0xb00b('0x52')]({'where':{'id':_0x5287cc[_0xb00b('0x51')]['id']}})[_0xb00b('0x2f')](handleEntityNotFound(_0x9ad1c6,null))[_0xb00b('0x2f')](saveUpdates(_0x5287cc[_0xb00b('0x58')],null))[_0xb00b('0x2f')](function(_0x257430){if(_0x257430){_0x33a483=_0x257430;return db[_0xb00b('0x39')][_0xb00b('0x4f')]({'raw':!![]});}})[_0xb00b('0x2f')](function(_0x4eb17d){if(_0x4eb17d){var _0x59503c=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],'server/files/templates/trunk.ejs'),_0xb00b('0x64'));var _0x391e98=fs[_0xb00b('0x61')](path['join'](config[_0xb00b('0x65')],_0xb00b('0x66')),_0xb00b('0x64'));var _0x45c9cd=ejs[_0xb00b('0x67')](_0x59503c,{'trunks':_0x4eb17d||[]});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x45c9cd);var _0x4a9125=ejs[_0xb00b('0x67')](_0x391e98,{'trunks':_0x4eb17d||[]});fs['writeFileSync'](_0xb00b('0x6d'),_0x4a9125);return respondWithRpcPromise(_0xb00b('0x6b'),'update',{'module':_0xb00b('0x6c')});}return null;})[_0xb00b('0x2f')](function(_0xe80a21){if(_0xe80a21){return _0x33a483;}})[_0xb00b('0x2f')](respondWithResult(_0x9ad1c6,null))[_0xb00b('0x22')](handleError(_0x9ad1c6,null));};exports[_0xb00b('0x30')]=function(_0xc41c1f,_0x2423b2,_0x36ba5c){var _0x383d16;return db[_0xb00b('0x39')][_0xb00b('0x52')]({'where':{'id':_0xc41c1f['params']['id']}})[_0xb00b('0x2f')](handleEntityNotFound(_0x2423b2,null))[_0xb00b('0x2f')](removeEntity(_0x2423b2,null))[_0xb00b('0x2f')](function(){return db[_0xb00b('0x39')]['findAll']({'raw':!![]});})[_0xb00b('0x2f')](function(_0x17503d){var _0x32508b=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],_0xb00b('0x63')),_0xb00b('0x64'));var _0xa4fe1e=fs[_0xb00b('0x61')](path['join'](config[_0xb00b('0x65')],'server/files/templates/registry.ejs'),_0xb00b('0x64'));var _0x202d5f=ejs[_0xb00b('0x67')](_0x32508b,{'trunks':_0x17503d});var _0x165442=ejs[_0xb00b('0x67')](_0xa4fe1e,{'trunks':_0x17503d});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x202d5f);fs[_0xb00b('0x68')](_0xb00b('0x6d'),_0x165442);return respondWithRpcPromise(_0xb00b('0x6b'),_0xb00b('0x30'),{'module':'chan_sip.so'});})[_0xb00b('0x22')](handleError(_0x2423b2,null));};
\ No newline at end of file
+var _0x00bb=['includeAll','findAll','rows','params','find','clone','rawAttributes','include','omit','createdAt','body','updatedAt','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','Reload','chan_sip.so','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','jayson/promise','client','http','request','info','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','Trunk,\x20%s,\x20%s','result','catch','sendStatus','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','get','Trunks','UserProfileResource','status','stack','name','index','map','Trunk','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options'];(function(_0x4fc376,_0x5aeac1){var _0x5355c8=function(_0x350759){while(--_0x350759){_0x4fc376['push'](_0x4fc376['shift']());}};_0x5355c8(++_0x5aeac1);}(_0x00bb,0x1d8));var _0xb00b=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0x00bb[_0x411add];return _0x238242;};'use strict';var emlformat=require(_0xb00b('0x0'));var rimraf=require(_0xb00b('0x1'));var zipdir=require(_0xb00b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb00b('0x3'));var moment=require('moment');var BPromise=require(_0xb00b('0x4'));var Mustache=require(_0xb00b('0x5'));var util=require('util');var path=require(_0xb00b('0x6'));var sox=require(_0xb00b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var authService=require(_0xb00b('0xf'));var qs=require(_0xb00b('0x10'));var as=require(_0xb00b('0x11'));var hardwareService=require(_0xb00b('0x12'));var logger=require('../../config/logger')(_0xb00b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb00b('0x14'))['db'];var jayson=require(_0xb00b('0x15'));var client=jayson[_0xb00b('0x16')][_0xb00b('0x17')]({'port':0x232a});function respondWithRpcPromise(_0xef5d52,_0x1f1c1d,_0x4ada81,_0x218de2){return new BPromise(function(_0xb0d42e,_0x482fe6){var _0x88d95e=_0x218de2||client;return _0x88d95e[_0xb00b('0x18')](_0xef5d52,_0x4ada81)['then'](function(_0x5da36b){logger[_0xb00b('0x19')]('Trunk,\x20%s,\x20%s',_0x1f1c1d,'request\x20sent');logger[_0xb00b('0x1a')](_0xb00b('0x1b'),_0x1f1c1d,_0xb00b('0x1c'),JSON[_0xb00b('0x1d')](_0x5da36b));if(_0x5da36b['error']){if(_0x5da36b[_0xb00b('0x1e')]['code']===0x1f4){logger[_0xb00b('0x1e')]('Trunk,\x20%s,\x20%s',_0x1f1c1d,_0x5da36b[_0xb00b('0x1e')]['message']);return _0x482fe6(_0x5da36b[_0xb00b('0x1e')][_0xb00b('0x1f')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x1f1c1d,_0x5da36b[_0xb00b('0x1e')]['message']);return _0xb0d42e(_0x5da36b[_0xb00b('0x1e')][_0xb00b('0x1f')]);}else{logger[_0xb00b('0x19')](_0xb00b('0x20'),_0x1f1c1d,'request\x20sent');_0xb0d42e(_0x5da36b[_0xb00b('0x21')]['message']);}})[_0xb00b('0x22')](function(_0x121ec7){logger['error'](_0xb00b('0x20'),_0x1f1c1d,_0x121ec7);_0x482fe6(_0x121ec7);});});}function respondWithStatusCode(_0x2896d1,_0x520444){_0x520444=_0x520444||0xcc;return function(_0x3ab3cc){if(_0x3ab3cc){return _0x2896d1[_0xb00b('0x23')](_0x520444);}return _0x2896d1['status'](_0x520444)[_0xb00b('0x24')]();};}function respondWithResult(_0x243fdb,_0x3c9500){_0x3c9500=_0x3c9500||0xc8;return function(_0x8caadf){if(_0x8caadf){return _0x243fdb['status'](_0x3c9500)['json'](_0x8caadf);}};}function respondWithFilteredResult(_0x3785e9,_0x490380){return function(_0x550587){if(_0x550587){var _0x4a635e=typeof _0x490380[_0xb00b('0x25')]===_0xb00b('0x26')&&typeof _0x490380[_0xb00b('0x27')]===_0xb00b('0x26');var _0x1f14fa=_0x550587[_0xb00b('0x28')];var _0x15d3b9=_0x4a635e?0x0:_0x490380['offset'];var _0x22c22d=_0x4a635e?_0x550587['count']:_0x490380[_0xb00b('0x25')]+_0x490380[_0xb00b('0x27')];var _0x5424ca;if(_0x22c22d>=_0x1f14fa){_0x22c22d=_0x1f14fa;_0x5424ca=0xc8;}else{_0x5424ca=0xce;}_0x3785e9['status'](_0x5424ca);return _0x3785e9[_0xb00b('0x29')](_0xb00b('0x2a'),_0x15d3b9+'-'+_0x22c22d+'/'+_0x1f14fa)[_0xb00b('0x2b')](_0x550587);}return null;};}function patchUpdates(_0x183233){return function(_0x303625){try{jsonpatch[_0xb00b('0x2c')](_0x303625,_0x183233,!![]);}catch(_0x2e160a){return BPromise[_0xb00b('0x2d')](_0x2e160a);}return _0x303625[_0xb00b('0x2e')]();};}function saveUpdates(_0x54e247,_0x2b5f41){return function(_0x44918d){if(_0x44918d){return _0x44918d['update'](_0x54e247)[_0xb00b('0x2f')](function(_0x2f3b37){return _0x2f3b37;});}return null;};}function removeEntity(_0x5a5e5a,_0x456241){return function(_0x4d2ee5){if(_0x4d2ee5){return _0x4d2ee5[_0xb00b('0x30')]()[_0xb00b('0x2f')](function(){var _0x322879=_0x4d2ee5[_0xb00b('0x31')]({'plain':!![]});var _0x338864=_0xb00b('0x32');return db[_0xb00b('0x33')]['destroy']({'where':{'type':_0x338864,'resourceId':_0x322879['id']}})['then'](function(){return _0x4d2ee5;});})['then'](function(){_0x5a5e5a[_0xb00b('0x34')](0xcc)[_0xb00b('0x24')]();});}};}function handleEntityNotFound(_0x45dcda,_0x2589cb){return function(_0x5cfa60){if(!_0x5cfa60){_0x45dcda[_0xb00b('0x23')](0x194);}return _0x5cfa60;};}function handleError(_0x266f8e,_0x341f46){_0x341f46=_0x341f46||0x1f4;return function(_0x1c7a9f){logger[_0xb00b('0x1e')](_0x1c7a9f[_0xb00b('0x35')]);if(_0x1c7a9f[_0xb00b('0x36')]){delete _0x1c7a9f[_0xb00b('0x36')];}_0x266f8e['status'](_0x341f46)['send'](_0x1c7a9f);};}exports[_0xb00b('0x37')]=function(_0x56022e,_0x1c8258){var _0x1c5400={},_0x29579b={},_0x45ca74={'count':0x0,'rows':[]};var _0x37c017=_[_0xb00b('0x38')](db[_0xb00b('0x39')]['rawAttributes'],function(_0x35f1ca){return{'name':_0x35f1ca[_0xb00b('0x3a')],'type':_0x35f1ca[_0xb00b('0x3b')][_0xb00b('0x3c')]};});_0x29579b[_0xb00b('0x3d')]=_[_0xb00b('0x38')](_0x37c017,'name');_0x29579b[_0xb00b('0x3e')]=_[_0xb00b('0x3f')](_0x56022e['query']);_0x29579b[_0xb00b('0x40')]=_[_0xb00b('0x41')](_0x29579b[_0xb00b('0x3d')],_0x29579b[_0xb00b('0x3e')]);_0x1c5400[_0xb00b('0x42')]=_['intersection'](_0x29579b[_0xb00b('0x3d')],qs[_0xb00b('0x43')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x43')]));_0x1c5400['attributes']=_0x1c5400['attributes'][_0xb00b('0x44')]?_0x1c5400[_0xb00b('0x42')]:_0x29579b[_0xb00b('0x3d')];if(!_0x56022e[_0xb00b('0x3e')][_0xb00b('0x45')](_0xb00b('0x46'))){_0x1c5400[_0xb00b('0x27')]=qs['limit'](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x27')]);_0x1c5400[_0xb00b('0x25')]=qs[_0xb00b('0x25')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x25')]);}_0x1c5400[_0xb00b('0x47')]=qs[_0xb00b('0x48')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x48')]);_0x1c5400[_0xb00b('0x49')]=qs[_0xb00b('0x40')](_['pick'](_0x56022e[_0xb00b('0x3e')],_0x29579b[_0xb00b('0x40')]),_0x37c017);if(_0x56022e[_0xb00b('0x3e')][_0xb00b('0x4a')]){_0x1c5400[_0xb00b('0x49')]=_[_0xb00b('0x4b')](_0x1c5400[_0xb00b('0x49')],{'$or':_[_0xb00b('0x38')](_0x37c017,function(_0x10ba60){if(_0x10ba60[_0xb00b('0x3b')]!==_0xb00b('0x4c')){var _0x3b3031={};_0x3b3031[_0x10ba60['name']]={'$like':'%'+_0x56022e['query']['filter']+'%'};return _0x3b3031;}})});}_0x1c5400=_[_0xb00b('0x4b')]({},_0x1c5400,_0x56022e[_0xb00b('0x4d')]);var _0x481154={'where':_0x1c5400[_0xb00b('0x49')]};return db[_0xb00b('0x39')][_0xb00b('0x28')](_0x481154)[_0xb00b('0x2f')](function(_0x4b62b3){_0x45ca74['count']=_0x4b62b3;if(_0x56022e[_0xb00b('0x3e')][_0xb00b('0x4e')]){_0x1c5400['include']=[{'all':!![]}];}return db['Trunk'][_0xb00b('0x4f')](_0x1c5400);})[_0xb00b('0x2f')](function(_0x4e0be4){_0x45ca74[_0xb00b('0x50')]=_0x4e0be4;return _0x45ca74;})['then'](respondWithFilteredResult(_0x1c8258,_0x1c5400))['catch'](handleError(_0x1c8258,null));};exports['show']=function(_0x465d90,_0x481515){var _0x1f7b86={'raw':![],'where':{'id':_0x465d90[_0xb00b('0x51')]['id']}},_0x3178aa={};_0x3178aa[_0xb00b('0x3d')]=_[_0xb00b('0x3f')](db[_0xb00b('0x39')]['rawAttributes']);_0x3178aa['query']=_[_0xb00b('0x3f')](_0x465d90[_0xb00b('0x3e')]);_0x3178aa['filters']=_[_0xb00b('0x41')](_0x3178aa[_0xb00b('0x3d')],_0x3178aa['query']);_0x1f7b86[_0xb00b('0x42')]=_[_0xb00b('0x41')](_0x3178aa[_0xb00b('0x3d')],qs['fields'](_0x465d90['query'][_0xb00b('0x43')]));_0x1f7b86[_0xb00b('0x42')]=_0x1f7b86[_0xb00b('0x42')][_0xb00b('0x44')]?_0x1f7b86['attributes']:_0x3178aa[_0xb00b('0x3d')];if(_0x465d90[_0xb00b('0x3e')]['includeAll']){_0x1f7b86['include']=[{'all':!![]}];}_0x1f7b86=_[_0xb00b('0x4b')]({},_0x1f7b86,_0x465d90['options']);return db[_0xb00b('0x39')][_0xb00b('0x52')](_0x1f7b86)[_0xb00b('0x2f')](handleEntityNotFound(_0x481515,null))[_0xb00b('0x2f')](respondWithResult(_0x481515,null))[_0xb00b('0x22')](handleError(_0x481515,null));};exports[_0xb00b('0x53')]=function(_0x5a3b85,_0x5d52a5){var _0x51c9e3={'where':{'id':_0x5a3b85[_0xb00b('0x51')]['id']}},_0x37d4d2={};_0x37d4d2[_0xb00b('0x3d')]=_['keys'](db[_0xb00b('0x39')][_0xb00b('0x54')]);_0x51c9e3[_0xb00b('0x42')]=_['intersection'](_0x37d4d2[_0xb00b('0x3d')],qs[_0xb00b('0x43')](_0x5a3b85[_0xb00b('0x3e')][_0xb00b('0x43')]));_0x51c9e3[_0xb00b('0x42')]=_0x51c9e3[_0xb00b('0x42')][_0xb00b('0x44')]?_0x51c9e3[_0xb00b('0x42')]:_0x37d4d2['model'];if(_0x5a3b85[_0xb00b('0x3e')][_0xb00b('0x4e')]){_0x51c9e3[_0xb00b('0x55')]=[{'all':!![]}];}_0x51c9e3=_['merge']({},_0x51c9e3,_0x5a3b85[_0xb00b('0x4d')]);return db[_0xb00b('0x39')][_0xb00b('0x52')](_0x51c9e3)[_0xb00b('0x2f')](handleEntityNotFound(_0x5d52a5,null))[_0xb00b('0x2f')](function(_0x4bfe0b){if(_0x4bfe0b){var _0xfd4ecc=_0x4bfe0b[_0xb00b('0x31')]({'plain':!![]});_0xfd4ecc=qs[_0xb00b('0x56')](_0xfd4ecc,['id',_0xb00b('0x57'),'updatedAt']);_0x5a3b85[_0xb00b('0x58')]=_[_0xb00b('0x56')](_0x5a3b85[_0xb00b('0x58')],['id',_0xb00b('0x57'),_0xb00b('0x59')]);return db[_0xb00b('0x39')][_0xb00b('0x5a')](_['merge'](_0xfd4ecc,_0x5a3b85[_0xb00b('0x58')]),{'include':_0x5a3b85['query'][_0xb00b('0x4e')]?[{'all':!![]}]:undefined})['then'](function(_0x3b3272){var _0x530d4a=_0x5a3b85[_0xb00b('0x5b')]['get']({'plain':!![]});if(!_0x530d4a)throw new Error(_0xb00b('0x5c'));if(_0x530d4a[_0xb00b('0x5d')]===_0xb00b('0x5b')){var _0x4d1cec=_0x3b3272['get']({'plain':!![]});var _0x4f7a59=_0xb00b('0x32');return db[_0xb00b('0x5e')][_0xb00b('0x52')]({'where':{'name':_0x4f7a59,'userProfileId':_0x530d4a['userProfileId']},'raw':!![]})[_0xb00b('0x2f')](function(_0x37ae88){if(_0x37ae88&&_0x37ae88[_0xb00b('0x5f')]===0x0){return db[_0xb00b('0x33')][_0xb00b('0x5a')]({'name':_0x4d1cec['name'],'resourceId':_0x4d1cec['id'],'type':_0x37ae88[_0xb00b('0x36')],'sectionId':_0x37ae88['id']},{})[_0xb00b('0x2f')](function(){return _0x3b3272;});}else{return _0x3b3272;}})['catch'](function(_0xe1316d){logger[_0xb00b('0x1e')](_0xb00b('0x60'),_0xe1316d);throw _0xe1316d;});}return _0x3b3272;});}})['then'](respondWithResult(_0x5d52a5,0xc9))['catch'](handleError(_0x5d52a5,null));};exports[_0xb00b('0x5a')]=function(_0x188da7,_0x23762e,_0x49f0a2){var _0x5aac5f;return db['Trunk']['create'](_0x188da7[_0xb00b('0x58')],{'raw':!![]})['then'](function(_0x2434a0){_0x5aac5f=_0x2434a0;return db[_0xb00b('0x39')]['findAll']({'raw':!![]});})[_0xb00b('0x2f')](function(_0x1e7f3a){var _0x2d21ec=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],_0xb00b('0x63')),_0xb00b('0x64'));var _0x3d4482=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config[_0xb00b('0x65')],_0xb00b('0x66')),'utf8');var _0x27b3ae=ejs[_0xb00b('0x67')](_0x2d21ec,{'trunks':_0x1e7f3a||[]});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x27b3ae);if(_0x5aac5f[_0xb00b('0x6a')]){var _0x432b68=ejs[_0xb00b('0x67')](_0x3d4482,{'trunks':_0x1e7f3a||[]});fs[_0xb00b('0x68')]('/etc/asterisk/sip_xcally_registers.conf',_0x432b68);}})[_0xb00b('0x2f')](function(){return respondWithRpcPromise(_0xb00b('0x6b'),_0xb00b('0x5a'),{'module':_0xb00b('0x6c')});})[_0xb00b('0x2f')](function(){var _0xfb2b68=_0x188da7[_0xb00b('0x5b')][_0xb00b('0x31')]({'plain':!![]});if(!_0xfb2b68)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xfb2b68[_0xb00b('0x5d')]===_0xb00b('0x5b')){var _0x7803a0=_0x5aac5f[_0xb00b('0x31')]({'plain':!![]});return db[_0xb00b('0x5e')][_0xb00b('0x52')]({'where':{'name':_0xb00b('0x32'),'userProfileId':_0xfb2b68['userProfileId']},'raw':!![]})[_0xb00b('0x2f')](function(_0x37a4c0){if(_0x37a4c0&&_0x37a4c0[_0xb00b('0x5f')]===0x0){return db[_0xb00b('0x33')][_0xb00b('0x5a')]({'name':_0x7803a0[_0xb00b('0x36')],'resourceId':_0x7803a0['id'],'type':_0x37a4c0['name'],'sectionId':_0x37a4c0['id']},{})[_0xb00b('0x2f')](function(){return _0x5aac5f;});}else{return _0x5aac5f;}})['catch'](function(_0x135cbf){logger['error'](_0xb00b('0x60'),_0x135cbf);throw _0x135cbf;});}return _0x5aac5f;})[_0xb00b('0x2f')](respondWithResult(_0x23762e,0xc9))[_0xb00b('0x22')](handleError(_0x23762e,null));};exports['update']=function(_0x5287cc,_0x9ad1c6,_0x3c4850){var _0x33a483;return db[_0xb00b('0x39')][_0xb00b('0x52')]({'where':{'id':_0x5287cc[_0xb00b('0x51')]['id']}})[_0xb00b('0x2f')](handleEntityNotFound(_0x9ad1c6,null))[_0xb00b('0x2f')](saveUpdates(_0x5287cc[_0xb00b('0x58')],null))[_0xb00b('0x2f')](function(_0x257430){if(_0x257430){_0x33a483=_0x257430;return db[_0xb00b('0x39')][_0xb00b('0x4f')]({'raw':!![]});}})[_0xb00b('0x2f')](function(_0x4eb17d){if(_0x4eb17d){var _0x59503c=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],'server/files/templates/trunk.ejs'),_0xb00b('0x64'));var _0x391e98=fs[_0xb00b('0x61')](path['join'](config[_0xb00b('0x65')],_0xb00b('0x66')),_0xb00b('0x64'));var _0x45c9cd=ejs[_0xb00b('0x67')](_0x59503c,{'trunks':_0x4eb17d||[]});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x45c9cd);var _0x4a9125=ejs[_0xb00b('0x67')](_0x391e98,{'trunks':_0x4eb17d||[]});fs['writeFileSync'](_0xb00b('0x6d'),_0x4a9125);return respondWithRpcPromise(_0xb00b('0x6b'),'update',{'module':_0xb00b('0x6c')});}return null;})[_0xb00b('0x2f')](function(_0xe80a21){if(_0xe80a21){return _0x33a483;}})[_0xb00b('0x2f')](respondWithResult(_0x9ad1c6,null))[_0xb00b('0x22')](handleError(_0x9ad1c6,null));};exports[_0xb00b('0x30')]=function(_0xc41c1f,_0x2423b2,_0x36ba5c){var _0x383d16;return db[_0xb00b('0x39')][_0xb00b('0x52')]({'where':{'id':_0xc41c1f['params']['id']}})[_0xb00b('0x2f')](handleEntityNotFound(_0x2423b2,null))[_0xb00b('0x2f')](removeEntity(_0x2423b2,null))[_0xb00b('0x2f')](function(){return db[_0xb00b('0x39')]['findAll']({'raw':!![]});})[_0xb00b('0x2f')](function(_0x17503d){var _0x32508b=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],_0xb00b('0x63')),_0xb00b('0x64'));var _0xa4fe1e=fs[_0xb00b('0x61')](path['join'](config[_0xb00b('0x65')],'server/files/templates/registry.ejs'),_0xb00b('0x64'));var _0x202d5f=ejs[_0xb00b('0x67')](_0x32508b,{'trunks':_0x17503d});var _0x165442=ejs[_0xb00b('0x67')](_0xa4fe1e,{'trunks':_0x17503d});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x202d5f);fs[_0xb00b('0x68')](_0xb00b('0x6d'),_0x165442);return respondWithRpcPromise(_0xb00b('0x6b'),_0xb00b('0x30'),{'module':'chan_sip.so'});})[_0xb00b('0x22')](handleError(_0x2423b2,null));};
\ No newline at end of file
index db207c0..bc88876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71d5=['rimraf','../../config/environment','./trunk.attributes','define','Trunk','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1d828c,_0x545c77){var _0x3d341a=function(_0x3f7ec8){while(--_0x3f7ec8){_0x1d828c['push'](_0x1d828c['shift']());}};_0x3d341a(++_0x545c77);}(_0x71d5,0x17e));var _0x571d=function(_0x4393d1,_0x2111fb){_0x4393d1=_0x4393d1-0x0;var _0x1b6e18=_0x71d5[_0x4393d1];return _0x1b6e18;};'use strict';var _=require(_0x571d('0x0'));var util=require(_0x571d('0x1'));var logger=require(_0x571d('0x2'))(_0x571d('0x3'));var moment=require(_0x571d('0x4'));var BPromise=require(_0x571d('0x5'));var rp=require(_0x571d('0x6'));var fs=require('fs');var path=require(_0x571d('0x7'));var rimraf=require(_0x571d('0x8'));var config=require(_0x571d('0x9'));var attributes=require(_0x571d('0xa'));module['exports']=function(_0x2a4a0a,_0x46cd74){return _0x2a4a0a[_0x571d('0xb')](_0x571d('0xc'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1093=['exports','define','Trunk','tools_trunks','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x2afd66,_0x46347d){var _0x45ab41=function(_0x3f0382){while(--_0x3f0382){_0x2afd66['push'](_0x2afd66['shift']());}};_0x45ab41(++_0x46347d);}(_0x1093,0x143));var _0x3109=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0x1093[_0x187ee1];return _0x388160;};'use strict';var _=require(_0x3109('0x0'));var util=require('util');var logger=require(_0x3109('0x1'))('api');var moment=require(_0x3109('0x2'));var BPromise=require('bluebird');var rp=require(_0x3109('0x3'));var fs=require('fs');var path=require(_0x3109('0x4'));var rimraf=require(_0x3109('0x5'));var config=require(_0x3109('0x6'));var attributes=require('./trunk.attributes');module[_0x3109('0x7')]=function(_0x2c1490,_0x2c3aac){return _0x2c1490[_0x3109('0x8')](_0x3109('0x9'),attributes,{'tableName':_0x3109('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e9c6929..a1977a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a73=['info','GetTrunk','catch','ShowTrunk','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','http','request','then','request\x20sent','debug','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','Trunk','findAll','raw','options','where','include','map','model','attributes'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0x7a73,0x65));var _0x37a7=function(_0x11b4f9,_0x123cba){_0x11b4f9=_0x11b4f9-0x0;var _0x433974=_0x7a73[_0x11b4f9];return _0x433974;};'use strict';var _=require(_0x37a7('0x0'));var util=require(_0x37a7('0x1'));var moment=require(_0x37a7('0x2'));var BPromise=require(_0x37a7('0x3'));var rs=require(_0x37a7('0x4'));var fs=require('fs');var Redis=require(_0x37a7('0x5'));var db=require(_0x37a7('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x37a7('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2894cc,_0x335de1,_0x47d22b){return new BPromise(function(_0x4705b0,_0x58a2db){return client[_0x37a7('0x8')](_0x2894cc,_0x47d22b)[_0x37a7('0x9')](function(_0x560c39){logger['info']('Trunk,\x20%s,\x20%s',_0x335de1,_0x37a7('0xa'));logger[_0x37a7('0xb')]('Trunk,\x20%s,\x20%s,\x20%s',_0x335de1,_0x37a7('0xa'),JSON[_0x37a7('0xc')](_0x560c39));if(_0x560c39[_0x37a7('0xd')]){if(_0x560c39[_0x37a7('0xd')][_0x37a7('0xe')]===0x1f4){logger[_0x37a7('0xd')](_0x37a7('0xf'),_0x335de1,_0x560c39[_0x37a7('0xd')][_0x37a7('0x10')]);return _0x58a2db(_0x560c39[_0x37a7('0xd')][_0x37a7('0x10')]);}logger[_0x37a7('0xd')](_0x37a7('0xf'),_0x335de1,_0x560c39[_0x37a7('0xd')][_0x37a7('0x10')]);return _0x4705b0(_0x560c39[_0x37a7('0xd')][_0x37a7('0x10')]);}else{logger['info'](_0x37a7('0xf'),_0x335de1,_0x37a7('0xa'));_0x4705b0(_0x560c39[_0x37a7('0x11')][_0x37a7('0x10')]);}})['catch'](function(_0x89914){logger['error'](_0x37a7('0xf'),_0x335de1,_0x89914);_0x58a2db(_0x89914);});});}exports['GetTrunk']=function(_0xf526a6){var _0x111d52=this;return new Promise(function(_0x549802,_0x406c12){return db[_0x37a7('0x12')][_0x37a7('0x13')]({'raw':_0xf526a6['options']?_0xf526a6['options'][_0x37a7('0x14')]===undefined?!![]:![]:!![],'where':_0xf526a6[_0x37a7('0x15')]?_0xf526a6[_0x37a7('0x15')][_0x37a7('0x16')]||null:null,'attributes':_0xf526a6[_0x37a7('0x15')]?_0xf526a6[_0x37a7('0x15')]['attributes']||null:null,'limit':_0xf526a6[_0x37a7('0x15')]?_0xf526a6[_0x37a7('0x15')]['limit']||null:null,'include':_0xf526a6[_0x37a7('0x15')]?_0xf526a6[_0x37a7('0x15')][_0x37a7('0x17')]?_[_0x37a7('0x18')](_0xf526a6[_0x37a7('0x15')][_0x37a7('0x17')],function(_0x879003){return{'model':db[_0x879003[_0x37a7('0x19')]],'as':_0x879003['as'],'attributes':_0x879003[_0x37a7('0x1a')],'include':_0x879003[_0x37a7('0x17')]?_[_0x37a7('0x18')](_0x879003[_0x37a7('0x17')],function(_0x175a29){return{'model':db[_0x175a29['model']],'as':_0x175a29['as'],'attributes':_0x175a29[_0x37a7('0x1a')],'include':_0x175a29['include']?_[_0x37a7('0x18')](_0x175a29[_0x37a7('0x17')],function(_0x4f516b){return{'model':db[_0x4f516b[_0x37a7('0x19')]],'as':_0x4f516b['as'],'attributes':_0x4f516b[_0x37a7('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x37a7('0x9')](function(_0x113d6a){logger[_0x37a7('0x1b')](_0x37a7('0x1c'),_0xf526a6);logger[_0x37a7('0xb')](_0x37a7('0x1c'),_0xf526a6,JSON[_0x37a7('0xc')](_0x113d6a));_0x549802(_0x113d6a);})[_0x37a7('0x1d')](function(_0x125412){logger[_0x37a7('0xd')](_0x37a7('0x1c'),_0x125412[_0x37a7('0x10')],_0xf526a6);_0x406c12(_0x111d52[_0x37a7('0xd')](0x1f4,_0x125412[_0x37a7('0x10')]));});});};exports[_0x37a7('0x1e')]=function(_0x476937){var _0x3d75b3=this;return new Promise(function(_0x3f5d62,_0x3ac8d9){return db[_0x37a7('0x12')][_0x37a7('0x1f')]({'raw':_0x476937['options']?_0x476937[_0x37a7('0x15')][_0x37a7('0x14')]===undefined?!![]:![]:!![],'where':_0x476937[_0x37a7('0x15')]?_0x476937['options'][_0x37a7('0x16')]||null:null,'attributes':_0x476937['options']?_0x476937['options'][_0x37a7('0x1a')]||null:null,'include':_0x476937[_0x37a7('0x15')]?_0x476937[_0x37a7('0x15')][_0x37a7('0x17')]?_[_0x37a7('0x18')](_0x476937['options']['include'],function(_0xe7a75b){return{'model':db[_0xe7a75b[_0x37a7('0x19')]],'as':_0xe7a75b['as'],'attributes':_0xe7a75b[_0x37a7('0x1a')],'include':_0xe7a75b[_0x37a7('0x17')]?_[_0x37a7('0x18')](_0xe7a75b['include'],function(_0x494b46){return{'model':db[_0x494b46[_0x37a7('0x19')]],'as':_0x494b46['as'],'attributes':_0x494b46[_0x37a7('0x1a')],'include':_0x494b46[_0x37a7('0x17')]?_[_0x37a7('0x18')](_0x494b46[_0x37a7('0x17')],function(_0x52af66){return{'model':db[_0x52af66[_0x37a7('0x19')]],'as':_0x52af66['as'],'attributes':_0x52af66['attributes']};}):[]};}):[]};}):[]:[]})[_0x37a7('0x9')](function(_0xd7c9cf){logger[_0x37a7('0x1b')]('ShowTrunk',_0x476937);logger[_0x37a7('0xb')](_0x37a7('0x1e'),_0x476937,JSON[_0x37a7('0xc')](_0xd7c9cf));_0x3f5d62(_0xd7c9cf);})[_0x37a7('0x1d')](function(_0x56cf70){logger['error'](_0x37a7('0x1e'),_0x56cf70[_0x37a7('0x10')],_0x476937);_0x3ac8d9(_0x3d75b3[_0x37a7('0xd')](0x1f4,_0x56cf70[_0x37a7('0x10')]));});});};
\ No newline at end of file
+var _0x95db=['options','raw','where','attributes','include','map','model','GetTrunk','ShowTrunk','find','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','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','Trunk','findAll'];(function(_0x4074d5,_0xa57194){var _0x502cfe=function(_0x345efa){while(--_0x345efa){_0x4074d5['push'](_0x4074d5['shift']());}};_0x502cfe(++_0xa57194);}(_0x95db,0x1a2));var _0xb95d=function(_0x5d80f0,_0x2ad9f0){_0x5d80f0=_0x5d80f0-0x0;var _0x122343=_0x95db[_0x5d80f0];return _0x122343;};'use strict';var _=require(_0xb95d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb95d('0x1'));var fs=require('fs');var Redis=require(_0xb95d('0x2'));var db=require(_0xb95d('0x3'))['db'];var utils=require(_0xb95d('0x4'));var logger=require(_0xb95d('0x5'))(_0xb95d('0x6'));var config=require('../../config/environment');var jayson=require(_0xb95d('0x7'));var client=jayson['client'][_0xb95d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x38cdb3,_0x2060e5,_0x493be2){return new BPromise(function(_0x5bdb83,_0x37df4a){return client[_0xb95d('0x9')](_0x38cdb3,_0x493be2)[_0xb95d('0xa')](function(_0x808f8f){logger['info'](_0xb95d('0xb'),_0x2060e5,_0xb95d('0xc'));logger[_0xb95d('0xd')](_0xb95d('0xe'),_0x2060e5,'request\x20sent',JSON[_0xb95d('0xf')](_0x808f8f));if(_0x808f8f['error']){if(_0x808f8f[_0xb95d('0x10')][_0xb95d('0x11')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x2060e5,_0x808f8f['error'][_0xb95d('0x12')]);return _0x37df4a(_0x808f8f[_0xb95d('0x10')][_0xb95d('0x12')]);}logger[_0xb95d('0x10')](_0xb95d('0xb'),_0x2060e5,_0x808f8f[_0xb95d('0x10')][_0xb95d('0x12')]);return _0x5bdb83(_0x808f8f[_0xb95d('0x10')]['message']);}else{logger[_0xb95d('0x13')](_0xb95d('0xb'),_0x2060e5,'request\x20sent');_0x5bdb83(_0x808f8f[_0xb95d('0x14')][_0xb95d('0x12')]);}})[_0xb95d('0x15')](function(_0x19fd54){logger['error'](_0xb95d('0xb'),_0x2060e5,_0x19fd54);_0x37df4a(_0x19fd54);});});}exports['GetTrunk']=function(_0x37e512){var _0xaec168=this;return new Promise(function(_0x40737f,_0x2e0735){return db[_0xb95d('0x16')][_0xb95d('0x17')]({'raw':_0x37e512['options']?_0x37e512[_0xb95d('0x18')][_0xb95d('0x19')]===undefined?!![]:![]:!![],'where':_0x37e512['options']?_0x37e512[_0xb95d('0x18')][_0xb95d('0x1a')]||null:null,'attributes':_0x37e512[_0xb95d('0x18')]?_0x37e512[_0xb95d('0x18')][_0xb95d('0x1b')]||null:null,'limit':_0x37e512[_0xb95d('0x18')]?_0x37e512['options']['limit']||null:null,'include':_0x37e512[_0xb95d('0x18')]?_0x37e512[_0xb95d('0x18')][_0xb95d('0x1c')]?_[_0xb95d('0x1d')](_0x37e512[_0xb95d('0x18')][_0xb95d('0x1c')],function(_0x579911){return{'model':db[_0x579911['model']],'as':_0x579911['as'],'attributes':_0x579911[_0xb95d('0x1b')],'include':_0x579911[_0xb95d('0x1c')]?_[_0xb95d('0x1d')](_0x579911[_0xb95d('0x1c')],function(_0x1e0fd8){return{'model':db[_0x1e0fd8[_0xb95d('0x1e')]],'as':_0x1e0fd8['as'],'attributes':_0x1e0fd8['attributes'],'include':_0x1e0fd8[_0xb95d('0x1c')]?_['map'](_0x1e0fd8[_0xb95d('0x1c')],function(_0x1a98c1){return{'model':db[_0x1a98c1[_0xb95d('0x1e')]],'as':_0x1a98c1['as'],'attributes':_0x1a98c1['attributes']};}):[]};}):[]};}):[]:[]})[_0xb95d('0xa')](function(_0x3a7239){logger['info'](_0xb95d('0x1f'),_0x37e512);logger['debug'](_0xb95d('0x1f'),_0x37e512,JSON['stringify'](_0x3a7239));_0x40737f(_0x3a7239);})[_0xb95d('0x15')](function(_0x4633e2){logger[_0xb95d('0x10')](_0xb95d('0x1f'),_0x4633e2['message'],_0x37e512);_0x2e0735(_0xaec168[_0xb95d('0x10')](0x1f4,_0x4633e2[_0xb95d('0x12')]));});});};exports[_0xb95d('0x20')]=function(_0x4404e6){var _0x15b621=this;return new Promise(function(_0x193a3f,_0x17578e){return db[_0xb95d('0x16')][_0xb95d('0x21')]({'raw':_0x4404e6[_0xb95d('0x18')]?_0x4404e6[_0xb95d('0x18')][_0xb95d('0x19')]===undefined?!![]:![]:!![],'where':_0x4404e6[_0xb95d('0x18')]?_0x4404e6[_0xb95d('0x18')][_0xb95d('0x1a')]||null:null,'attributes':_0x4404e6[_0xb95d('0x18')]?_0x4404e6[_0xb95d('0x18')][_0xb95d('0x1b')]||null:null,'include':_0x4404e6[_0xb95d('0x18')]?_0x4404e6[_0xb95d('0x18')][_0xb95d('0x1c')]?_[_0xb95d('0x1d')](_0x4404e6[_0xb95d('0x18')][_0xb95d('0x1c')],function(_0xd75ae0){return{'model':db[_0xd75ae0[_0xb95d('0x1e')]],'as':_0xd75ae0['as'],'attributes':_0xd75ae0['attributes'],'include':_0xd75ae0['include']?_['map'](_0xd75ae0['include'],function(_0x57885e){return{'model':db[_0x57885e['model']],'as':_0x57885e['as'],'attributes':_0x57885e[_0xb95d('0x1b')],'include':_0x57885e[_0xb95d('0x1c')]?_['map'](_0x57885e[_0xb95d('0x1c')],function(_0x43cea8){return{'model':db[_0x43cea8[_0xb95d('0x1e')]],'as':_0x43cea8['as'],'attributes':_0x43cea8['attributes']};}):[]};}):[]};}):[]:[]})[_0xb95d('0xa')](function(_0x15eaf6){logger[_0xb95d('0x13')](_0xb95d('0x20'),_0x4404e6);logger[_0xb95d('0xd')](_0xb95d('0x20'),_0x4404e6,JSON['stringify'](_0x15eaf6));_0x193a3f(_0x15eaf6);})['catch'](function(_0x3b2fff){logger[_0xb95d('0x10')](_0xb95d('0x20'),_0x3b2fff[_0xb95d('0x12')],_0x4404e6);_0x17578e(_0x15b621[_0xb95d('0x10')](0x1f4,_0x3b2fff[_0xb95d('0x12')]));});});};
\ No newline at end of file
index a1de394..fcdbe8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf382=['./user-setting.controller','put','/:id','isAuthenticated','update','../../components/auth/service'];(function(_0x5ba6b8,_0x404eec){var _0x2dd1e9=function(_0x4a9bfa){while(--_0x4a9bfa){_0x5ba6b8['push'](_0x5ba6b8['shift']());}};_0x2dd1e9(++_0x404eec);}(_0xf382,0xb9));var _0x2f38=function(_0x169cf7,_0xba0095){_0x169cf7=_0x169cf7-0x0;var _0x4f1709=_0xf382[_0x169cf7];return _0x4f1709;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x2f38('0x0'));var controller=require(_0x2f38('0x1'));router[_0x2f38('0x2')](_0x2f38('0x3'),auth[_0x2f38('0x4')](),controller[_0x2f38('0x5')]);module['exports']=router;
\ No newline at end of file
+var _0x022e=['put','/:id','update','exports','express','../../components/auth/service','./user-setting.controller'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x022e,0x10e));var _0xe022=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x022e[_0x565c49];return _0x20ca34;};'use strict';var express=require(_0xe022('0x0'));var router=express['Router']();var auth=require(_0xe022('0x1'));var controller=require(_0xe022('0x2'));router[_0xe022('0x3')](_0xe022('0x4'),auth['isAuthenticated'](),controller[_0xe022('0x5')]);module[_0xe022('0x6')]=router;
\ No newline at end of file
index 8dde3c6..47c3432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3af9=['debug','exports','BOOLEAN','TEXT','INTEGER','UserId','sequelize','error','warning'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0x3af9,0x1e3));var _0x93af=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x3af9[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0x93af('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x93af('0x1'),_0x93af('0x2'),'info',_0x93af('0x3')];module[_0x93af('0x4')]={'clientSideLoggingLevel':{'type':Sequelize['ENUM'](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x93af('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x93af('0x5')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x93af('0x6')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x93af('0x7')],'unique':_0x93af('0x8')}};
\ No newline at end of file
+var _0x6ae1=['INTEGER','UserId','sequelize','error','warning','info','debug','exports','ENUM','BOOLEAN','DATE'];(function(_0x2f4bdc,_0x3f0878){var _0x43d004=function(_0x4f7781){while(--_0x4f7781){_0x2f4bdc['push'](_0x2f4bdc['shift']());}};_0x43d004(++_0x3f0878);}(_0x6ae1,0xff));var _0x16ae=function(_0x1fdac4,_0x268905){_0x1fdac4=_0x1fdac4-0x0;var _0x3fdb21=_0x6ae1[_0x1fdac4];return _0x3fdb21;};'use strict';var Sequelize=require(_0x16ae('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x16ae('0x1'),_0x16ae('0x2'),_0x16ae('0x3'),_0x16ae('0x4')];module[_0x16ae('0x5')]={'clientSideLoggingLevel':{'type':Sequelize[_0x16ae('0x6')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':'error','validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x16ae('0x7')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize['TEXT'],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x16ae('0x8')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x16ae('0x9')],'unique':_0x16ae('0xa')}};
\ No newline at end of file
index 83cbbd7..8b7ee62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bca=['socket.io-emitter','redis','./user-setting.socket','defaults','localhost','status','json','update','sendStatus','error','name','send','user','role','admin','Unauthorized','params','find','then','body','catch','ioredis','../../config/environment'];(function(_0x337e47,_0x3ef503){var _0xe18c2e=function(_0x21dc01){while(--_0x21dc01){_0x337e47['push'](_0x337e47['shift']());}};_0xe18c2e(++_0x3ef503);}(_0x1bca,0xb6));var _0xa1bc=function(_0x155bd6,_0x28ed03){_0x155bd6=_0x155bd6-0x0;var _0x5b18d5=_0x1bca[_0x155bd6];return _0x5b18d5;};'use strict';var _=require('lodash');var Redis=require(_0xa1bc('0x0'));var logger=require('../../config/logger')('api');var config=require(_0xa1bc('0x1'));var db=require('../../mysqldb')['db'];var socket=require(_0xa1bc('0x2'))(new Redis(config[_0xa1bc('0x3')]));require(_0xa1bc('0x4'))['register'](socket);config[_0xa1bc('0x3')]=_[_0xa1bc('0x5')](config[_0xa1bc('0x3')],{'host':_0xa1bc('0x6'),'port':0x18eb});function respondWithResult(_0x54bffb,_0x43a67){_0x43a67=_0x43a67||0xc8;return function(_0x432b65){if(_0x432b65){return _0x54bffb[_0xa1bc('0x7')](_0x43a67)[_0xa1bc('0x8')](_0x432b65);}};}function saveUpdates(_0x16b36f){return function(_0x3ec26c){if(_0x3ec26c){return _0x3ec26c[_0xa1bc('0x9')](_0x16b36f)['then'](function(_0x1b826d){return _0x1b826d;});}return null;};}function handleEntityNotFound(_0x1edde3){return function(_0x23203c){if(!_0x23203c){_0x1edde3[_0xa1bc('0xa')](0x194);}return _0x23203c;};}function handleError(_0x327c9a,_0x24a815){_0x24a815=_0x24a815||0x1f4;return function(_0x40c40e){logger[_0xa1bc('0xb')](_0x40c40e['stack']);if(_0x40c40e['name']){delete _0x40c40e[_0xa1bc('0xc')];}_0x327c9a[_0xa1bc('0x7')](_0x24a815)[_0xa1bc('0xd')](_0x40c40e);};}exports[_0xa1bc('0x9')]=function(_0x3019a1,_0x210f9a){if(_0x3019a1[_0xa1bc('0xe')][_0xa1bc('0xf')]!==_0xa1bc('0x10'))throw new Error(_0xa1bc('0x11'));if(isNaN(Number(_0x3019a1[_0xa1bc('0x12')]['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db['UserSetting'][_0xa1bc('0x13')]({'where':{'id':_0x3019a1[_0xa1bc('0x12')]['id']}})[_0xa1bc('0x14')](handleEntityNotFound(_0x210f9a,null))[_0xa1bc('0x14')](saveUpdates(_0x3019a1[_0xa1bc('0x15')],null))[_0xa1bc('0x14')](respondWithResult(_0x210f9a,null))[_0xa1bc('0x16')](handleError(_0x210f9a,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(_0x484520,_0x23a4ad){var _0x12153e=function(_0x2c494b){while(--_0x2c494b){_0x484520['push'](_0x484520['shift']());}};_0x12153e(++_0x23a4ad);}(_0xdd0c,0x165));var _0xcdd0=function(_0x42bdcd,_0x5d36a0){_0x42bdcd=_0x42bdcd-0x0;var _0x3f09e6=_0xdd0c[_0x42bdcd];return _0x3f09e6;};'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 a87e085..1538053 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd02=['exports','../../mysqldb','remove','emit','hasOwnProperty'];(function(_0x31910f,_0xef8563){var _0x59b88a=function(_0x18afeb){while(--_0x18afeb){_0x31910f['push'](_0x31910f['shift']());}};_0x59b88a(++_0xef8563);}(_0xcd02,0x191));var _0x2cd0=function(_0xae05de,_0x518819){_0xae05de=_0xae05de-0x0;var _0xb859db=_0xcd02[_0xae05de];return _0xb859db;};'use strict';var EventEmitter=require('events');var UserSetting=require(_0x2cd0('0x0'))['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x2cd0('0x1')};function emitEvent(_0x27ceb2){return function(_0x3270a4,_0x389f4b,_0x2779cc){UserSettingEvents[_0x2cd0('0x2')](_0x27ceb2+':'+_0x3270a4['id'],_0x3270a4);UserSettingEvents[_0x2cd0('0x2')](_0x27ceb2,_0x3270a4);_0x2779cc(null);};}for(var e in events){if(events[_0x2cd0('0x3')](e)){var event=events[e];UserSetting['hook'](e,emitEvent(event));}}module[_0x2cd0('0x4')]=UserSettingEvents;
\ No newline at end of file
+var _0x9c8a=['hook','events','../../mysqldb','UserSetting','update','remove','emit','hasOwnProperty'];(function(_0x1ed116,_0x23bc80){var _0x574066=function(_0x424f9e){while(--_0x424f9e){_0x1ed116['push'](_0x1ed116['shift']());}};_0x574066(++_0x23bc80);}(_0x9c8a,0x81));var _0xa9c8=function(_0x5461c1,_0x5b8eb2){_0x5461c1=_0x5461c1-0x0;var _0xaebe6e=_0x9c8a[_0x5461c1];return _0xaebe6e;};'use strict';var EventEmitter=require(_0xa9c8('0x0'));var UserSetting=require(_0xa9c8('0x1'))['db'][_0xa9c8('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa9c8('0x3'),'afterDestroy':_0xa9c8('0x4')};function emitEvent(_0x1a3e03){return function(_0x56d8ac,_0x4afe1f,_0x426d0e){UserSettingEvents[_0xa9c8('0x5')](_0x1a3e03+':'+_0x56d8ac['id'],_0x56d8ac);UserSettingEvents[_0xa9c8('0x5')](_0x1a3e03,_0x56d8ac);_0x426d0e(null);};}for(var e in events){if(events[_0xa9c8('0x6')](e)){var event=events[e];UserSetting[_0xa9c8('0x7')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
index 42b40b9..0e4a37f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x693f=['clientSideLoggingEnabledSince','./user-setting.attributes','exports','define','user_settings','clientSideLoggingEnabled'];(function(_0x23bf82,_0x3be0c5){var _0x4b6703=function(_0x165796){while(--_0x165796){_0x23bf82['push'](_0x23bf82['shift']());}};_0x4b6703(++_0x3be0c5);}(_0x693f,0x9d));var _0xf693=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x693f[_0x14add3];return _0x4a174f;};'use strict';var attributes=require(_0xf693('0x0'));module[_0xf693('0x1')]=function(_0x3511a1){return _0x3511a1[_0xf693('0x2')]('UserSetting',attributes,{'tableName':_0xf693('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x151799){if(!_0x151799[_0xf693('0x4')])_0x151799[_0xf693('0x5')]=null;else if(_0x151799[_0xf693('0x5')]===null)_0x151799[_0xf693('0x5')]=new Date();}}});};
\ No newline at end of file
+var _0x6c50=['clientSideLoggingEnabled','clientSideLoggingEnabledSince','./user-setting.attributes','exports','define','user_settings'];(function(_0xe239fd,_0x55870e){var _0x51038d=function(_0x41d883){while(--_0x41d883){_0xe239fd['push'](_0xe239fd['shift']());}};_0x51038d(++_0x55870e);}(_0x6c50,0xa4));var _0x06c5=function(_0x5e5d2a,_0x478117){_0x5e5d2a=_0x5e5d2a-0x0;var _0x18cc29=_0x6c50[_0x5e5d2a];return _0x18cc29;};'use strict';var attributes=require(_0x06c5('0x0'));module[_0x06c5('0x1')]=function(_0x306ad3){return _0x306ad3[_0x06c5('0x2')]('UserSetting',attributes,{'tableName':_0x06c5('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x494494){if(!_0x494494[_0x06c5('0x4')])_0x494494[_0x06c5('0x5')]=null;else if(_0x494494[_0x06c5('0x5')]===null)_0x494494[_0x06c5('0x5')]=new Date();}}});};
\ No newline at end of file
index 7cbc8ea..f7e848e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfad1=['emit','register','length','user-setting:','./user-setting.events','remove','update'];(function(_0x18d631,_0x4376d2){var _0x50d708=function(_0x3b6ab5){while(--_0x3b6ab5){_0x18d631['push'](_0x18d631['shift']());}};_0x50d708(++_0x4376d2);}(_0xfad1,0x12a));var _0x1fad=function(_0x46e3fb,_0x4abb5f){_0x46e3fb=_0x46e3fb-0x0;var _0x4684f0=_0xfad1[_0x46e3fb];return _0x4684f0;};'use strict';var UserSettingEvents=require(_0x1fad('0x0'));var events=['save',_0x1fad('0x1'),_0x1fad('0x2')];function createListener(_0x473fd7,_0x455e17){return function(_0x28e41e){_0x455e17[_0x1fad('0x3')](_0x473fd7,_0x28e41e);if(_0x473fd7==='user-setting:update'){_0x455e17[_0x1fad('0x3')]('user-setting:update:user-'+_0x28e41e['UserId'],_0x28e41e);}};}exports[_0x1fad('0x4')]=function(_0x408aa9){for(var _0x15488e=0x0,_0x550b36=events[_0x1fad('0x5')];_0x15488e<_0x550b36;_0x15488e++){var _0x18d8fc=events[_0x15488e];var _0x6f76e4=createListener(_0x1fad('0x6')+_0x18d8fc,_0x408aa9);UserSettingEvents['on'](_0x18d8fc,_0x6f76e4);}};
\ No newline at end of file
+var _0xeba8=['user-setting:update:user-','UserId','length','user-setting:','./user-setting.events','remove','emit'];(function(_0x48b5e6,_0x14cd11){var _0x8a03f9=function(_0xbb6861){while(--_0xbb6861){_0x48b5e6['push'](_0x48b5e6['shift']());}};_0x8a03f9(++_0x14cd11);}(_0xeba8,0x6d));var _0x8eba=function(_0x50d84b,_0x1d7ea7){_0x50d84b=_0x50d84b-0x0;var _0x6d4270=_0xeba8[_0x50d84b];return _0x6d4270;};'use strict';var UserSettingEvents=require(_0x8eba('0x0'));var events=['save',_0x8eba('0x1'),'update'];function createListener(_0x307e14,_0x40f345){return function(_0x372285){_0x40f345['emit'](_0x307e14,_0x372285);if(_0x307e14==='user-setting:update'){_0x40f345[_0x8eba('0x2')](_0x8eba('0x3')+_0x372285[_0x8eba('0x4')],_0x372285);}};}exports['register']=function(_0x35ee6e){for(var _0x2aa7df=0x0,_0x9b840d=events[_0x8eba('0x5')];_0x2aa7df<_0x9b840d;_0x2aa7df++){var _0x449ba5=events[_0x2aa7df];var _0x1b4407=createListener(_0x8eba('0x6')+_0x449ba5,_0x35ee6e);UserSettingEvents['on'](_0x449ba5,_0x1b4407);}};
\ No newline at end of file
index 428cbda..a61410f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbde2=['now','originalname','single','file','addAvatar','login','/:id/logout','logout','/:id/pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','/:id/mail_interactions','addMailInteractions','addFaxInteractions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','/:id/sms_accounts','addSmsAccounts','addChatWebsites','/:id/whatsapp_accounts','addWhatsappAccounts','createApiKey','put','update','removeQueues','delete','removeChatInteractions','removeMailInteractions','/:id/fax_interactions','removeFaxInteractions','removeSmsInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeWhatsappAccounts','removeApiKey','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','describe','/whoami','/presence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/teams','getTeams','/:id/lists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','getWhatsappAccounts','getScheduledCalls','/:id/api_key','post','addContacts','create','/create_many','bulkCreate','diskStorage','join','root','format','%s-%s'];(function(_0x22a4cc,_0x5731e4){var _0x27bb2f=function(_0x282372){while(--_0x282372){_0x22a4cc['push'](_0x22a4cc['shift']());}};_0x27bb2f(++_0x5731e4);}(_0xbde2,0x111));var _0x2bde=function(_0x391e60,_0x3fb454){_0x391e60=_0x391e60-0x0;var _0xc95b4e=_0xbde2[_0x391e60];return _0xc95b4e;};'use strict';var multer=require(_0x2bde('0x0'));var util=require(_0x2bde('0x1'));var path=require(_0x2bde('0x2'));var timeout=require(_0x2bde('0x3'));var express=require(_0x2bde('0x4'));var router=express[_0x2bde('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x2bde('0x6'));var interaction=require(_0x2bde('0x7'));var config=require(_0x2bde('0x8'));var controller=require(_0x2bde('0x9'));router[_0x2bde('0xa')]('/',auth[_0x2bde('0xb')](),controller[_0x2bde('0xc')]);router[_0x2bde('0xa')]('/describe',auth[_0x2bde('0xb')](),controller[_0x2bde('0xd')]);router[_0x2bde('0xa')](_0x2bde('0xe'),auth[_0x2bde('0xb')](),controller['whoami']);router[_0x2bde('0xa')](_0x2bde('0xf'),auth['isAuthenticated'](),controller['getPresence']);router[_0x2bde('0xa')](_0x2bde('0x10'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x11')]);router[_0x2bde('0xa')](_0x2bde('0x12'),controller[_0x2bde('0x13')]);router[_0x2bde('0xa')](_0x2bde('0x14'),auth['isAuthenticated'](),controller[_0x2bde('0x15')]);router[_0x2bde('0xa')](_0x2bde('0x16'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x17')]);router['get'](_0x2bde('0x18'),auth['isAuthenticated'](),controller['getQueues']);router[_0x2bde('0xa')]('/:id/queues_rt',auth[_0x2bde('0xb')](),controller['getVoiceQueuesRt']);router[_0x2bde('0xa')](_0x2bde('0x19'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x1a')]);router['get'](_0x2bde('0x1b'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x1c')]);router[_0x2bde('0xa')](_0x2bde('0x1d'),auth['isAuthenticated'](),controller[_0x2bde('0x1e')]);router[_0x2bde('0xa')](_0x2bde('0x1f'),auth[_0x2bde('0xb')](),controller['getChatInteractions']);router[_0x2bde('0xa')](_0x2bde('0x20'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x21')]);router[_0x2bde('0xa')](_0x2bde('0x22'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x23')]);router[_0x2bde('0xa')](_0x2bde('0x24'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x25')]);router[_0x2bde('0xa')](_0x2bde('0x26'),auth['isAuthenticated'](),controller[_0x2bde('0x27')]);router[_0x2bde('0xa')](_0x2bde('0x28'),auth['isAuthenticated'](),controller['getWhatsappInteractions']);router[_0x2bde('0xa')](_0x2bde('0x29'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x2a')]);router[_0x2bde('0xa')](_0x2bde('0x2b'),auth[_0x2bde('0xb')](),controller['getLists']);router[_0x2bde('0xa')](_0x2bde('0x2c'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x2d')]);router[_0x2bde('0xa')](_0x2bde('0x2e'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x2f')]);router['get'](_0x2bde('0x30'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x31')]);router['get'](_0x2bde('0x32'),auth[_0x2bde('0xb')](),controller['getMailAccounts']);router['get'](_0x2bde('0x33'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x34')]);router[_0x2bde('0xa')]('/:id/sms_accounts',auth[_0x2bde('0xb')](),controller[_0x2bde('0x35')]);router['get'](_0x2bde('0x36'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x37')]);router['get']('/:id/whatsapp_accounts',auth[_0x2bde('0xb')](),controller[_0x2bde('0x38')]);router[_0x2bde('0xa')]('/:id/scheduled_calls',auth[_0x2bde('0xb')](),controller[_0x2bde('0x39')]);router[_0x2bde('0xa')](_0x2bde('0x3a'),auth[_0x2bde('0xb')](),controller['getApiKey']);router[_0x2bde('0x3b')](_0x2bde('0x16'),auth['isAuthenticated'](),controller[_0x2bde('0x3c')]);router[_0x2bde('0x3b')]('/',auth['isAuthenticated'](),controller[_0x2bde('0x3d')]);router[_0x2bde('0x3b')](_0x2bde('0x3e'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x3f')]);router['post'](_0x2bde('0x18'),auth[_0x2bde('0xb')](),controller['addQueues']);var upload=multer({'storage':multer[_0x2bde('0x40')]({'destination':function(_0x346135,_0x17ce8b,_0x5e61b7){_0x5e61b7(null,path[_0x2bde('0x41')](config[_0x2bde('0x42')],'server/files/images/'));},'filename':function(_0x50c652,_0x367ff3,_0x18120d){_0x18120d(null,util[_0x2bde('0x43')](_0x2bde('0x44'),Date[_0x2bde('0x45')](),_0x367ff3[_0x2bde('0x46')]));}})});router[_0x2bde('0x3b')](_0x2bde('0x12'),upload[_0x2bde('0x47')](_0x2bde('0x48')),controller[_0x2bde('0x49')]);router['post']('/:id/login',auth['isAuthenticated'](),controller[_0x2bde('0x4a')]);router[_0x2bde('0x3b')](_0x2bde('0x4b'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x4c')]);router[_0x2bde('0x3b')](_0x2bde('0x4d'),auth[_0x2bde('0xb')](),controller['pause']);router[_0x2bde('0x3b')](_0x2bde('0x4e'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x4f')]);router['post'](_0x2bde('0x29'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x50')]);router['post'](_0x2bde('0x51'),auth[_0x2bde('0xb')](),controller['addChatInteractions']);router[_0x2bde('0x3b')](_0x2bde('0x52'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x53')]);router['post']('/:id/fax_interactions',auth[_0x2bde('0xb')](),controller[_0x2bde('0x54')]);router[_0x2bde('0x3b')]('/:id/sms_interactions',auth[_0x2bde('0xb')](),controller[_0x2bde('0x55')]);router[_0x2bde('0x3b')](_0x2bde('0x56'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x57')]);router['post'](_0x2bde('0x58'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x59')]);router[_0x2bde('0x3b')](_0x2bde('0x30'),auth['isAuthenticated'](),controller[_0x2bde('0x5a')]);router[_0x2bde('0x3b')](_0x2bde('0x32'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x5b')]);router[_0x2bde('0x3b')](_0x2bde('0x33'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x5c')]);router['post'](_0x2bde('0x5d'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x5e')]);router[_0x2bde('0x3b')](_0x2bde('0x36'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x5f')]);router[_0x2bde('0x3b')](_0x2bde('0x60'),auth['isAuthenticated'](),controller[_0x2bde('0x61')]);router['post']('/:id/api_key',auth[_0x2bde('0xb')](),controller[_0x2bde('0x62')]);router[_0x2bde('0x63')](_0x2bde('0x10'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x64')]);router[_0x2bde('0x63')]('/:id/password',auth['isAuthenticated'](),controller['changePassword']);router['delete'](_0x2bde('0x18'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x65')]);router['delete']('/:id/teams',auth[_0x2bde('0xb')](),controller['removeTeams']);router[_0x2bde('0x66')](_0x2bde('0x10'),auth['isAuthenticated'](),controller['destroy']);router[_0x2bde('0x66')](_0x2bde('0x51'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x67')]);router[_0x2bde('0x66')]('/:id/mail_interactions',auth[_0x2bde('0xb')](),controller[_0x2bde('0x68')]);router[_0x2bde('0x66')](_0x2bde('0x69'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x6a')]);router[_0x2bde('0x66')]('/:id/sms_interactions',auth[_0x2bde('0xb')](),controller[_0x2bde('0x6b')]);router['delete']('/:id/openchannel_interactions',auth['isAuthenticated'](),controller['removeOpenchannelInteractions']);router[_0x2bde('0x66')]('/:id/whatsapp_interactions',auth[_0x2bde('0xb')](),controller[_0x2bde('0x6c')]);router[_0x2bde('0x66')](_0x2bde('0x30'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x6d')]);router[_0x2bde('0x66')]('/:id/mail_accounts',auth[_0x2bde('0xb')](),controller[_0x2bde('0x6e')]);router[_0x2bde('0x66')]('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0x2bde('0x6f')]);router['delete'](_0x2bde('0x5d'),auth['isAuthenticated'](),controller['removeSmsAccounts']);router['delete']('/:id/chat_websites',auth[_0x2bde('0xb')](),controller['removeChatWebsites']);router['delete'](_0x2bde('0x60'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x70')]);router['delete'](_0x2bde('0x3a'),auth[_0x2bde('0xb')](),controller[_0x2bde('0x71')]);router[_0x2bde('0x3b')]('/:id/messengerSoundNotification',auth['isAuthenticated'](),controller['messengerSoundNotification']);module['exports']=router;
\ No newline at end of file
+var _0x1e4e=['/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','/:id/api_key','getApiKey','post','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','%s-%s','now','originalname','single','addAvatar','login','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','addMailInteractions','/:id/fax_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','put','update','/:id/password','delete','removeQueues','removeTeams','removeChatInteractions','removeMailInteractions','removeFaxInteractions','/:id/sms_interactions','removeWhatsappInteractions','removeMailAccounts','removeSmsAccounts','removeChatWebsites','removeApiKey','/:id/messengerSoundNotification','messengerSoundNotification','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./user.controller','get','isAuthenticated','/whoami','whoami','/presence','getPresence','/:id','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','getVoiceQueuesRt','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes'];(function(_0x350f0f,_0x549a3b){var _0x1ea456=function(_0x27c9ec){while(--_0x27c9ec){_0x350f0f['push'](_0x350f0f['shift']());}};_0x1ea456(++_0x549a3b);}(_0x1e4e,0xaf));var _0xe1e4=function(_0x419e20,_0x18021a){_0x419e20=_0x419e20-0x0;var _0x2e1f1c=_0x1e4e[_0x419e20];return _0x2e1f1c;};'use strict';var multer=require(_0xe1e4('0x0'));var util=require(_0xe1e4('0x1'));var path=require('path');var timeout=require(_0xe1e4('0x2'));var express=require(_0xe1e4('0x3'));var router=express[_0xe1e4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe1e4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe1e4('0x6'));var controller=require(_0xe1e4('0x7'));router[_0xe1e4('0x8')]('/',auth[_0xe1e4('0x9')](),controller['index']);router[_0xe1e4('0x8')]('/describe',auth[_0xe1e4('0x9')](),controller['describe']);router[_0xe1e4('0x8')](_0xe1e4('0xa'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0xb')]);router[_0xe1e4('0x8')](_0xe1e4('0xc'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0xd')]);router[_0xe1e4('0x8')](_0xe1e4('0xe'),auth['isAuthenticated'](),controller['show']);router['get'](_0xe1e4('0xf'),controller[_0xe1e4('0x10')]);router[_0xe1e4('0x8')](_0xe1e4('0x11'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x12')]);router['get'](_0xe1e4('0x13'),auth['isAuthenticated'](),controller[_0xe1e4('0x14')]);router[_0xe1e4('0x8')](_0xe1e4('0x15'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x16')]);router[_0xe1e4('0x8')]('/:id/queues_rt',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x17')]);router[_0xe1e4('0x8')](_0xe1e4('0x18'),auth['isAuthenticated'](),controller['getGroups']);router['get'](_0xe1e4('0x19'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x1a')]);router['get'](_0xe1e4('0x1b'),auth[_0xe1e4('0x9')](),controller['getScreenRecordings']);router[_0xe1e4('0x8')](_0xe1e4('0x1c'),auth[_0xe1e4('0x9')](),controller['getChatInteractions']);router[_0xe1e4('0x8')](_0xe1e4('0x1d'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x1e')]);router[_0xe1e4('0x8')](_0xe1e4('0x1f'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x20')]);router[_0xe1e4('0x8')](_0xe1e4('0x21'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x22')]);router[_0xe1e4('0x8')](_0xe1e4('0x23'),auth['isAuthenticated'](),controller[_0xe1e4('0x24')]);router[_0xe1e4('0x8')]('/:id/whatsapp/interactions',auth['isAuthenticated'](),controller['getWhatsappInteractions']);router[_0xe1e4('0x8')](_0xe1e4('0x25'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x26')]);router[_0xe1e4('0x8')](_0xe1e4('0x27'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x28')]);router[_0xe1e4('0x8')](_0xe1e4('0x29'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x2a')]);router['get'](_0xe1e4('0x2b'),auth['isAuthenticated'](),controller[_0xe1e4('0x2c')]);router[_0xe1e4('0x8')](_0xe1e4('0x2d'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x2e')]);router[_0xe1e4('0x8')](_0xe1e4('0x2f'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x30')]);router[_0xe1e4('0x8')](_0xe1e4('0x31'),auth[_0xe1e4('0x9')](),controller['getOpenchannelAccounts']);router[_0xe1e4('0x8')](_0xe1e4('0x32'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x33')]);router[_0xe1e4('0x8')](_0xe1e4('0x34'),auth['isAuthenticated'](),controller[_0xe1e4('0x35')]);router[_0xe1e4('0x8')](_0xe1e4('0x36'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x37')]);router[_0xe1e4('0x8')](_0xe1e4('0x38'),auth[_0xe1e4('0x9')](),controller['getScheduledCalls']);router[_0xe1e4('0x8')](_0xe1e4('0x39'),auth['isAuthenticated'](),controller[_0xe1e4('0x3a')]);router[_0xe1e4('0x3b')](_0xe1e4('0x13'),auth[_0xe1e4('0x9')](),controller['addContacts']);router[_0xe1e4('0x3b')]('/',auth[_0xe1e4('0x9')](),controller['create']);router['post']('/create_many',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x3c')]);router['post'](_0xe1e4('0x15'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x3d')]);var upload=multer({'storage':multer[_0xe1e4('0x3e')]({'destination':function(_0x26477c,_0x5c86ef,_0x5e4cd4){_0x5e4cd4(null,path[_0xe1e4('0x3f')](config[_0xe1e4('0x40')],_0xe1e4('0x41')));},'filename':function(_0x346e22,_0x31615e,_0x39e61f){_0x39e61f(null,util['format'](_0xe1e4('0x42'),Date[_0xe1e4('0x43')](),_0x31615e[_0xe1e4('0x44')]));}})});router[_0xe1e4('0x3b')](_0xe1e4('0xf'),upload[_0xe1e4('0x45')]('file'),controller[_0xe1e4('0x46')]);router['post']('/:id/login',auth['isAuthenticated'](),controller[_0xe1e4('0x47')]);router['post']('/:id/logout',auth['isAuthenticated'](),controller[_0xe1e4('0x48')]);router[_0xe1e4('0x3b')](_0xe1e4('0x49'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x4a')]);router[_0xe1e4('0x3b')](_0xe1e4('0x4b'),auth['isAuthenticated'](),controller[_0xe1e4('0x4c')]);router[_0xe1e4('0x3b')](_0xe1e4('0x25'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x4d')]);router[_0xe1e4('0x3b')](_0xe1e4('0x4e'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x4f')]);router['post']('/:id/mail_interactions',auth['isAuthenticated'](),controller[_0xe1e4('0x50')]);router[_0xe1e4('0x3b')](_0xe1e4('0x51'),auth[_0xe1e4('0x9')](),controller['addFaxInteractions']);router[_0xe1e4('0x3b')]('/:id/sms_interactions',auth['isAuthenticated'](),controller['addSmsInteractions']);router[_0xe1e4('0x3b')](_0xe1e4('0x52'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x53')]);router[_0xe1e4('0x3b')](_0xe1e4('0x54'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x55')]);router[_0xe1e4('0x3b')](_0xe1e4('0x2d'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x56')]);router['post'](_0xe1e4('0x2f'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x57')]);router[_0xe1e4('0x3b')](_0xe1e4('0x31'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x58')]);router[_0xe1e4('0x3b')](_0xe1e4('0x32'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x59')]);router[_0xe1e4('0x3b')](_0xe1e4('0x34'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x5a')]);router[_0xe1e4('0x3b')]('/:id/whatsapp_accounts',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x5b')]);router[_0xe1e4('0x3b')](_0xe1e4('0x39'),auth[_0xe1e4('0x9')](),controller['createApiKey']);router[_0xe1e4('0x5c')]('/:id',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x5d')]);router[_0xe1e4('0x5c')](_0xe1e4('0x5e'),auth[_0xe1e4('0x9')](),controller['changePassword']);router[_0xe1e4('0x5f')]('/:id/queues',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x60')]);router[_0xe1e4('0x5f')]('/:id/teams',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x61')]);router[_0xe1e4('0x5f')](_0xe1e4('0xe'),auth[_0xe1e4('0x9')](),controller['destroy']);router['delete'](_0xe1e4('0x4e'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x62')]);router[_0xe1e4('0x5f')]('/:id/mail_interactions',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x63')]);router[_0xe1e4('0x5f')](_0xe1e4('0x51'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x64')]);router[_0xe1e4('0x5f')](_0xe1e4('0x65'),auth[_0xe1e4('0x9')](),controller['removeSmsInteractions']);router['delete'](_0xe1e4('0x52'),auth[_0xe1e4('0x9')](),controller['removeOpenchannelInteractions']);router[_0xe1e4('0x5f')](_0xe1e4('0x54'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x66')]);router[_0xe1e4('0x5f')]('/:id/fax_accounts',auth[_0xe1e4('0x9')](),controller['removeFaxAccounts']);router[_0xe1e4('0x5f')](_0xe1e4('0x2f'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x67')]);router[_0xe1e4('0x5f')](_0xe1e4('0x31'),auth[_0xe1e4('0x9')](),controller['removeOpenchannelAccounts']);router['delete'](_0xe1e4('0x32'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x68')]);router[_0xe1e4('0x5f')](_0xe1e4('0x34'),auth['isAuthenticated'](),controller[_0xe1e4('0x69')]);router[_0xe1e4('0x5f')](_0xe1e4('0x36'),auth[_0xe1e4('0x9')](),controller['removeWhatsappAccounts']);router[_0xe1e4('0x5f')](_0xe1e4('0x39'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x6a')]);router[_0xe1e4('0x3b')](_0xe1e4('0x6b'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x6c')]);module[_0xe1e4('0x6d')]=router;
\ No newline at end of file
index e685433..3cbb329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a5a=['/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','TEXT','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','lodash','exports','STRING','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','user','agent','telephone','INTEGER','accountcode','callerid','fullname','BOOLEAN','DATE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','transport','join','split','info','shortinfo','inband','auto','rfc2833','yes','nonat','update','force_rport,comedia','nat','all','ulaw;alaw;gsm','allow','insecure','never','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','update,nonat','showWebBar','isArray','udp','wss','encryption','avpf','icesupport','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','force_avp','dtlsenable'];(function(_0x44d9ab,_0x76bc69){var _0x31485e=function(_0x1e44ce){while(--_0x1e44ce){_0x44d9ab['push'](_0x44d9ab['shift']());}};_0x31485e(++_0x76bc69);}(_0x9a5a,0x1ea));var _0xa9a5=function(_0x175e3a,_0x2b04e1){_0x175e3a=_0x175e3a-0x0;var _0x447a7d=_0x9a5a[_0x175e3a];return _0x447a7d;};'use strict';var Sequelize=require(_0xa9a5('0x0'));var moment=require(_0xa9a5('0x1'));var util=require(_0xa9a5('0x2'));var _=require(_0xa9a5('0x3'));module[_0xa9a5('0x4')]={'name':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x3a7890){this[_0xa9a5('0x6')]('name',_0x3a7890);this[_0xa9a5('0x6')](_0xa9a5('0x7'),_0x3a7890);},'comment':_0xa9a5('0x8')},'fullname':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':![],'set':function(_0x1f114e){this[_0xa9a5('0x6')]('fullname',_0x1f114e);this[_0xa9a5('0x6')]('callerid',util[_0xa9a5('0x9')](_0xa9a5('0xa'),_0x1f114e,this[_0xa9a5('0xb')](_0xa9a5('0xc'))));}},'alias':{'type':Sequelize[_0xa9a5('0x5')]},'email':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x309cca){if(_0x309cca){this[_0xa9a5('0x6')](_0xa9a5('0xd'),_0x309cca[_0xa9a5('0xe')]());}}},'role':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x10'),_0xa9a5('0x11'),_0xa9a5('0x12'),_0xa9a5('0x13')),'allowNull':![]},'password':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0xa9a5('0x5')],'defaultValue':'local'},'internal':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':![],'unique':_0xa9a5('0xc'),'set':function(_0x2dfd05){this[_0xa9a5('0x6')](_0xa9a5('0xc'),_0x2dfd05);this[_0xa9a5('0x6')](_0xa9a5('0x15'),_0x2dfd05);this[_0xa9a5('0x6')](_0xa9a5('0x16'),util[_0xa9a5('0x9')](_0xa9a5('0xa'),this[_0xa9a5('0xb')](_0xa9a5('0x17')),_0x2dfd05));}},'salt':{'type':Sequelize[_0xa9a5('0x5')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0xa9a5('0x5')]},'zipcode':{'type':Sequelize[_0xa9a5('0x5')]},'userpic':{'type':Sequelize[_0xa9a5('0x5')]},'city':{'type':Sequelize[_0xa9a5('0x5')]},'country':{'type':Sequelize[_0xa9a5('0x5')]},'online':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xa9a5('0x19')]},'voicePause':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xa9a5('0x5')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0xa9a5('0x19')]},'chatCapacity':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xa9a5('0x14')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'description':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'host':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![],'defaultValue':_0xa9a5('0x1a')},'ipaddr':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'regserver':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM'](_0xa9a5('0x1b'),_0xa9a5('0x11'),_0xa9a5('0x1c')),'allowNull':!![],'defaultValue':_0xa9a5('0x1b')},'context':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![],'defaultValue':_0xa9a5('0x1d')},'callingpres':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x1e'),'ALLOWED_PASSED_SCREEN',_0xa9a5('0x1f'),_0xa9a5('0x20'),_0xa9a5('0x21'),_0xa9a5('0x22'),_0xa9a5('0x23'),_0xa9a5('0x24')),'allowNull':!![]},'deny':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'permit':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'secret':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'transport':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![],'defaultValue':'udp','set':function(_0x304974){this[_0xa9a5('0x6')](_0xa9a5('0x25'),_0x304974?_0x304974[_0xa9a5('0x26')](','):null);},'get':function(){return this['getDataValue'](_0xa9a5('0x25'))?this['getDataValue'](_0xa9a5('0x25'))[_0xa9a5('0x27')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0xa9a5('0xf')]('rfc2833',_0xa9a5('0x28'),_0xa9a5('0x29'),_0xa9a5('0x2a'),_0xa9a5('0x2b')),'allowNull':!![],'defaultValue':_0xa9a5('0x2c')},'directmedia':{'type':Sequelize['ENUM'](_0xa9a5('0x2d'),'no',_0xa9a5('0x2e'),_0xa9a5('0x2f'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![],'defaultValue':_0xa9a5('0x30'),'set':function(_0x56efe0){this[_0xa9a5('0x6')]('nat',_0x56efe0?_0x56efe0[_0xa9a5('0x26')](','):null);},'get':function(){return this[_0xa9a5('0xb')](_0xa9a5('0x31'))?this['getDataValue'](_0xa9a5('0x31'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0xa9a5('0x5')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0xa9a5('0x5')]},'namedpickupgroup':{'type':Sequelize[_0xa9a5('0x5')]},'language':{'type':Sequelize[_0xa9a5('0x5')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xa9a5('0x5')]},'disallow':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':![],'defaultValue':_0xa9a5('0x32')},'allow':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':![],'defaultValue':_0xa9a5('0x33'),'set':function(_0x216713){this[_0xa9a5('0x6')](_0xa9a5('0x34'),_0x216713?_0x216713[_0xa9a5('0x26')](';'):_0xa9a5('0x33'));},'get':function(){return this[_0xa9a5('0xb')](_0xa9a5('0x34'))?this[_0xa9a5('0xb')]('allow')['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0xa9a5('0xf')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![],'set':function(_0x2fc2c5){this[_0xa9a5('0x6')](_0xa9a5('0x35'),_0x2fc2c5?_0x2fc2c5[_0xa9a5('0x26')](','):null);},'get':function(){return this[_0xa9a5('0xb')]('insecure')?this[_0xa9a5('0xb')](_0xa9a5('0x35'))[_0xa9a5('0x27')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0xa9a5('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no',_0xa9a5('0x36')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![],'defaultValue':_0xa9a5('0x2d')},'busylevel':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'template':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0xa9a5('0x2d'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x37'),_0xa9a5('0x38'),_0xa9a5('0x39')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x3a'),_0xa9a5('0x3b')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xa9a5('0xf')]('yes','no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xa9a5('0xf')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xa9a5('0xf')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no',_0xa9a5('0x3c'),_0xa9a5('0x3d')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x3e'),_0xa9a5('0x3f'),_0xa9a5('0x40')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xa9a5('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xa9a5('0xf')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xa9a5('0xf')]('yes','no','nonat',_0xa9a5('0x2f'),_0xa9a5('0x41')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xa9a5('0x5')]},'resetPasswordExpires':{'type':Sequelize[_0xa9a5('0x19')]},'passwordResetAt':{'type':Sequelize[_0xa9a5('0x19')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0,'set':function(_0x4dbacd){this[_0xa9a5('0x6')](_0xa9a5('0x42'),_0x4dbacd);var _0x25640c=this['get']({'plain':!![]});switch(_0x4dbacd){case 0x0:case 0x1:var _0x2f724e=_0x25640c['transport']?_[_0xa9a5('0x43')](_0x25640c[_0xa9a5('0x25')])?_0x25640c['transport'][_0xa9a5('0x26')]():_0x25640c[_0xa9a5('0x25')]:_0xa9a5('0x44');if(_0x2f724e===_0xa9a5('0x45')){_0x2f724e=_0xa9a5('0x44');}this[_0xa9a5('0x6')](_0xa9a5('0x25'),_0x2f724e);this['setDataValue'](_0xa9a5('0x46'),'no');this[_0xa9a5('0x6')](_0xa9a5('0x47'),null);this[_0xa9a5('0x6')]('force_avp',null);this[_0xa9a5('0x6')](_0xa9a5('0x48'),null);this[_0xa9a5('0x6')]('dtlsenable',null);this[_0xa9a5('0x6')](_0xa9a5('0x49'),null);this[_0xa9a5('0x6')](_0xa9a5('0x4a'),null);this[_0xa9a5('0x6')](_0xa9a5('0x4b'),null);this[_0xa9a5('0x6')](_0xa9a5('0x4c'),null);this[_0xa9a5('0x6')](_0xa9a5('0x4d'),'no');break;case 0x2:this[_0xa9a5('0x6')]('transport','wss');this[_0xa9a5('0x6')](_0xa9a5('0x46'),'yes');this[_0xa9a5('0x6')](_0xa9a5('0x47'),_0xa9a5('0x2d'));this[_0xa9a5('0x6')](_0xa9a5('0x4e'),'yes');this[_0xa9a5('0x6')]('icesupport',_0xa9a5('0x2d'));this[_0xa9a5('0x6')](_0xa9a5('0x4f'),_0xa9a5('0x2d'));this['setDataValue'](_0xa9a5('0x49'),'no');this['setDataValue'](_0xa9a5('0x4a'),'actpass');this[_0xa9a5('0x6')](_0xa9a5('0x4b'),_0x25640c[_0xa9a5('0x4b')]||_0xa9a5('0x50'));this[_0xa9a5('0x6')]('dtlsprivatekey',_0x25640c[_0xa9a5('0x4c')]||_0xa9a5('0x51'));this['setDataValue'](_0xa9a5('0x4d'),_0xa9a5('0x2d'));break;default:}}},'permissions':{'type':Sequelize[_0xa9a5('0x52')],'set':function(_0x1da2c6){this[_0xa9a5('0x6')]('permissions',_0x1da2c6?_0x1da2c6[_0xa9a5('0x26')](','):[]);},'get':function(){return this[_0xa9a5('0xb')](_0xa9a5('0x53'))?_[_0xa9a5('0x54')](this[_0xa9a5('0xb')]('permissions')[_0xa9a5('0x27')](','),function(_0xd0be0d){return parseInt(_0xd0be0d,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0xa9a5('0x5')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xa9a5('0x5')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xa9a5('0xf')](_0xa9a5('0x2d'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xa9a5('0x5')]},'phoneBarEnableJaws':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xa9a5('0x55')],'get':function(){return this[_0xa9a5('0xb')](_0xa9a5('0x56'))?this[_0xa9a5('0xb')](_0xa9a5('0x56')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xa9a5('0x5')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![],'set':function(_0x31127d){if(typeof _0x31127d===_0xa9a5('0x57')){var _0x122c2d=_0x31127d==='1'?!![]:_0x31127d==='0'?![]:_0x31127d===_0xa9a5('0x58')?!![]:_0x31127d===_0xa9a5('0x59')?![]:![];this[_0xa9a5('0x6')](_0xa9a5('0x5a'),_0x122c2d);}else{this[_0xa9a5('0x6')]('screenrecording',_0x31127d);}}},'blocked':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![],'set':function(_0x3c5f08){this[_0xa9a5('0x6')](_0xa9a5('0x5b'),_0x3c5f08);if(_0x3c5f08===!![]){this[_0xa9a5('0x6')](_0xa9a5('0x5c'),moment());this['setDataValue'](_0xa9a5('0x5d'),0x0);}else{this['setDataValue'](_0xa9a5('0x5c'),null);}}},'blockedAt':{'type':Sequelize[_0xa9a5('0x19')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xa9a5('0x14')](0x5)[_0xa9a5('0x5e')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0xa9a5('0x18')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0xa9a5('0x14')],'defaultValue':0x0},'messengerSoundNotification':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x9260=['blockedAt','moment','util','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','ENUM','user','telephone','local','INTEGER','accountcode','BOOLEAN','DEFAULT\x20PAUSE','DATE','friend','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','update','yes','force_rport,comedia','nat','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','originate','uac','uas','active','passive','actpass','TEXT','get','isArray','udp','avpf','icesupport','dtlsenable','dtlscertfile','dtlsprivatekey','rtcp_mux','encryption','force_avp','dtlssetup','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','VIRTUAL','string','true','false','screenrecording','blocked','loginAttempts'];(function(_0x57931b,_0x2accfd){var _0x30ce42=function(_0x46ec15){while(--_0x46ec15){_0x57931b['push'](_0x57931b['shift']());}};_0x30ce42(++_0x2accfd);}(_0x9260,0xab));var _0x0926=function(_0x5870f1,_0x4fcb91){_0x5870f1=_0x5870f1-0x0;var _0x2faef2=_0x9260[_0x5870f1];return _0x2faef2;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x0926('0x0'));var util=require(_0x0926('0x1'));var _=require('lodash');module[_0x0926('0x2')]={'name':{'type':Sequelize[_0x0926('0x3')],'allowNull':![],'unique':_0x0926('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x3d9e35){this['setDataValue'](_0x0926('0x4'),_0x3d9e35);this[_0x0926('0x5')](_0x0926('0x6'),_0x3d9e35);},'comment':_0x0926('0x7')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x1b3dcb){this[_0x0926('0x5')](_0x0926('0x8'),_0x1b3dcb);this[_0x0926('0x5')](_0x0926('0x9'),util[_0x0926('0xa')](_0x0926('0xb'),_0x1b3dcb,this[_0x0926('0xc')](_0x0926('0xd'))));}},'alias':{'type':Sequelize[_0x0926('0x3')]},'email':{'type':Sequelize[_0x0926('0x3')],'allowNull':![],'unique':_0x0926('0xe'),'validate':{'isEmail':!![]},'set':function(_0xad3543){if(_0xad3543){this[_0x0926('0x5')]('email',_0xad3543['toLowerCase']());}}},'role':{'type':Sequelize[_0x0926('0xf')]('admin',_0x0926('0x10'),'agent',_0x0926('0x11')),'allowNull':![]},'password':{'type':Sequelize[_0x0926('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x0926('0x3')],'defaultValue':_0x0926('0x12')},'internal':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':![],'unique':'internal','set':function(_0x1037be){this['setDataValue'](_0x0926('0xd'),_0x1037be);this['setDataValue'](_0x0926('0x14'),_0x1037be);this[_0x0926('0x5')](_0x0926('0x9'),util[_0x0926('0xa')]('\x22%s\x22\x20<%s>',this[_0x0926('0xc')](_0x0926('0x8')),_0x1037be));}},'salt':{'type':Sequelize[_0x0926('0x3')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x0926('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x0926('0x3')]},'online':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x0926('0x3')],'defaultValue':_0x0926('0x16')},'lastPauseAt':{'type':Sequelize[_0x0926('0x17')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x0926('0x13')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x0926('0x13')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'description':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x0926('0x13')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x18'),_0x0926('0x10'),'peer'),'allowNull':!![],'defaultValue':_0x0926('0x18')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x0926('0x19')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0x0926('0x1a'),_0x0926('0x1b'),'ALLOWED',_0x0926('0x1c'),_0x0926('0x1d'),_0x0926('0x1e'),_0x0926('0x1f')),'allowNull':!![]},'deny':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x3e4168){this['setDataValue'](_0x0926('0x20'),_0x3e4168?_0x3e4168[_0x0926('0x21')](','):null);},'get':function(){return this[_0x0926('0xc')]('transport')?this[_0x0926('0xc')](_0x0926('0x20'))[_0x0926('0x22')](','):null;},'comment':_0x0926('0x23')},'dtmfmode':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x24'),_0x0926('0x25'),_0x0926('0x26'),_0x0926('0x27'),_0x0926('0x28')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x0926('0xf')]('yes','no','nonat',_0x0926('0x29'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![],'defaultValue':_0x0926('0x2b'),'set':function(_0x1a281b){this[_0x0926('0x5')](_0x0926('0x2c'),_0x1a281b?_0x1a281b[_0x0926('0x21')](','):null);},'get':function(){return this['getDataValue'](_0x0926('0x2c'))?this['getDataValue'](_0x0926('0x2c'))[_0x0926('0x22')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x0926('0x3')]},'pickupgroup':{'type':Sequelize[_0x0926('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x0926('0x3')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0x0926('0x3')],'allowNull':![],'defaultValue':_0x0926('0x2d')},'allow':{'type':Sequelize[_0x0926('0x3')],'allowNull':![],'defaultValue':_0x0926('0x2e'),'set':function(_0x22a73c){this[_0x0926('0x5')](_0x0926('0x2f'),_0x22a73c?_0x22a73c[_0x0926('0x21')](';'):_0x0926('0x2e'));},'get':function(){return this[_0x0926('0xc')]('allow')?this[_0x0926('0xc')](_0x0926('0x2f'))['split'](';'):null;},'comment':_0x0926('0x30')},'autoframing':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![],'set':function(_0x20dd20){this[_0x0926('0x5')](_0x0926('0x31'),_0x20dd20?_0x20dd20['join'](','):null);},'get':function(){return this['getDataValue'](_0x0926('0x31'))?this[_0x0926('0xc')]('insecure')[_0x0926('0x22')](','):null;},'comment':_0x0926('0x32')},'trustrpid':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no',_0x0926('0x33')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x0926('0xf')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![],'defaultValue':_0x0926('0x34')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':_0x0926('0x2a')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x0926('0xf')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no',_0x0926('0x35')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x36'),'refuse',_0x0926('0x37')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x38'),_0x0926('0x39')),'allowNull':!![],'defaultValue':_0x0926('0x39')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM']('yes','no','fingerprint','certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x3a'),_0x0926('0x3b'),_0x0926('0x3c')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no','nonat',_0x0926('0x29'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x0926('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x0926('0x17')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x0926('0x3d')]},'showWebBar':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0,'set':function(_0x18769a){this['setDataValue']('showWebBar',_0x18769a);var _0x2ca456=this[_0x0926('0x3e')]({'plain':!![]});switch(_0x18769a){case 0x0:case 0x1:var _0x50a25d=_0x2ca456['transport']?_[_0x0926('0x3f')](_0x2ca456['transport'])?_0x2ca456[_0x0926('0x20')][_0x0926('0x21')]():_0x2ca456[_0x0926('0x20')]:_0x0926('0x40');if(_0x50a25d==='wss'){_0x50a25d='udp';}this[_0x0926('0x5')]('transport',_0x50a25d);this[_0x0926('0x5')]('encryption','no');this['setDataValue'](_0x0926('0x41'),null);this[_0x0926('0x5')]('force_avp',null);this['setDataValue'](_0x0926('0x42'),null);this[_0x0926('0x5')](_0x0926('0x43'),null);this[_0x0926('0x5')]('dtlsverify',null);this[_0x0926('0x5')]('dtlssetup',null);this[_0x0926('0x5')](_0x0926('0x44'),null);this['setDataValue'](_0x0926('0x45'),null);this[_0x0926('0x5')](_0x0926('0x46'),'no');break;case 0x2:this[_0x0926('0x5')](_0x0926('0x20'),'wss');this[_0x0926('0x5')](_0x0926('0x47'),_0x0926('0x2a'));this[_0x0926('0x5')]('avpf',_0x0926('0x2a'));this[_0x0926('0x5')](_0x0926('0x48'),'yes');this[_0x0926('0x5')](_0x0926('0x42'),_0x0926('0x2a'));this[_0x0926('0x5')]('dtlsenable',_0x0926('0x2a'));this[_0x0926('0x5')]('dtlsverify','no');this[_0x0926('0x5')](_0x0926('0x49'),_0x0926('0x3c'));this[_0x0926('0x5')](_0x0926('0x44'),_0x2ca456[_0x0926('0x44')]||_0x0926('0x4a'));this['setDataValue'](_0x0926('0x45'),_0x2ca456[_0x0926('0x45')]||_0x0926('0x4b'));this[_0x0926('0x5')](_0x0926('0x46'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0x0926('0x3d')],'set':function(_0x49e543){this[_0x0926('0x5')](_0x0926('0x4c'),_0x49e543?_0x49e543[_0x0926('0x21')](','):[]);},'get':function(){return this[_0x0926('0xc')](_0x0926('0x4c'))?_['map'](this['getDataValue'](_0x0926('0x4c'))['split'](','),function(_0x5ea0b0){return parseInt(_0x5ea0b0,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x0926('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x0926('0x3')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x0926('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x0926('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x0926('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x0926('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x0926('0x4d')],'get':function(){return this[_0x0926('0xc')]('phoneBarEnableScreenRecordingByAgent')?this['getDataValue']('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'interface':{'type':Sequelize[_0x0926('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x31dc2a){if(typeof _0x31dc2a===_0x0926('0x4e')){var _0x342aab=_0x31dc2a==='1'?!![]:_0x31dc2a==='0'?![]:_0x31dc2a===_0x0926('0x4f')?!![]:_0x31dc2a===_0x0926('0x50')?![]:![];this[_0x0926('0x5')](_0x0926('0x51'),_0x342aab);}else{this['setDataValue'](_0x0926('0x51'),_0x31dc2a);}}},'blocked':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![],'set':function(_0x23b2b3){this[_0x0926('0x5')](_0x0926('0x52'),_0x23b2b3);if(_0x23b2b3===!![]){this['setDataValue']('blockedAt',moment());this[_0x0926('0x5')](_0x0926('0x53'),0x0);}else{this['setDataValue'](_0x0926('0x54'),null);}}},'blockedAt':{'type':Sequelize[_0x0926('0x17')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x0926('0x13')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x0926('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x0926('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'messengerSoundNotification':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]}};
\ No newline at end of file
index 5e3e6c6..b5db0d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a55=['OpenchannelOpenTabs','OPENCHANNEL','MAIL','SmsOpenTabs','WHATSAPP','concat','User\x20with\x20id\x20%s\x20not\x20found','hasOwnProperty','List','Tag','Tags','color','tag','getQueues','model','keys','intersection','fields','sort','filters','pick','Queue','Unknown\x20role','nolimit','getVoiceQueuesRt','options','getGroups','ChatGroup','order','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','OpenchannelInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','mobile','format','LOCAL/%s@from-sip/n','intrf','SIP/%s','user:%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','loginInPause','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','MemberReport','isMiddleware','resolve','pause','updateAttributes','DEFAULT\x20PAUSE','type','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','Team','getTeams','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','sequelize','transaction','getAssociatedQueues','flattenDeep','addAgent','getDataValue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','Queue:save','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeAgent','CmList','getLists','values','send','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','CmHopper','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','firstName','lastName','Contact','dialActive','getApiKey','retrieveApiKey','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','token','removeApiKey','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','unknown','ringing','teams','queues','inbound','getAgents','toString','lower','col','desc','asc','substring','uniqBy','orderBy','offline','unavailable','voiceStatus','busy','charAt','toUpperCase','field','InteractionId','_interactions','ui.UserId\x20=\x20?','messengerSoundNotification','moment','util','path','lodash','ioredis','../../components/auth/service','../../components/contacts','../../components/parsers/qs','../../components/realtime/agents','../../config/logger','../../config/utils','../../config/environment','../../errors/api','APIBadRequestError','APINotFoundError','handleError','../../mysqldb','./user.socket','redis','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','agent','emit','get','role','user','Agents','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','destroy','sendStatus','error','stack','User','rawAttributes','fieldName','key','password','resetPasswordToken','md5secret','index','getOptions','where','query','include','userSetting','UserSetting','attributes','push','rows','length','chat','dataValues','sms','fax','openchannel','catch','params','includeAll','merge','openTabs','true','whatsapp','body','addContacts','ids','omit','Setting','findById','securePassword','validatePasswordPattern','max','isNil','internal','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)','QueryTypes','SELECT','from','voicemail','mailbox','VoiceMail','fullname','permissions','101','102','103','113','110','104','105','106','107','108','109','100','111','114','115','create','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','UserProfileSection','userProfileId','bulkCreate','Unauthorized','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','all','findAll','isEmpty','autoAssociation','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','updatePasswordsHistory','channel','online','voicePause','interface','Unknown\x20channel','add','capitalize','toLowerCase','penalty','spread','QueueId','voice','VoiceQueue','UserVoiceQueueRt','upsert','removeQueues','isValidChannel','remove','Queues','isArray','Queue:remove','addAvatar','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','userpic','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x3a55,0xd4));var _0x53a5=function(_0x4aa391,_0x10a95e){_0x4aa391=_0x4aa391-0x0;var _0x2197f7=_0x3a55[_0x4aa391];return _0x2197f7;};'use strict';var moment=require(_0x53a5('0x0'));var util=require(_0x53a5('0x1'));var path=require(_0x53a5('0x2'));var fs=require('fs');var _=require(_0x53a5('0x3'));var squel=require('squel');var Redis=require(_0x53a5('0x4'));var authService=require(_0x53a5('0x5'));var contacts=require(_0x53a5('0x6'));var qs=require(_0x53a5('0x7'));var rta=require(_0x53a5('0x8'));var logger=require(_0x53a5('0x9'))('api');var utils=require(_0x53a5('0xa'));var config=require(_0x53a5('0xb'));var licenseUtil=require('../../config/license/util');var APIBadRequestError=require(_0x53a5('0xc'))[_0x53a5('0xd')];var APINotFoundError=require(_0x53a5('0xc'))[_0x53a5('0xe')];var APIHandleError=require(_0x53a5('0xc'))[_0x53a5('0xf')];var db=require(_0x53a5('0x10'))['db'];var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x53a5('0x11'))['register'](socket);config[_0x53a5('0x12')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var values;function respondWithStatusCode(_0x47e53f,_0x34e7aa){_0x34e7aa=_0x34e7aa||0xcc;return function(_0x409fb4){if(_0x409fb4){return _0x47e53f['sendStatus'](_0x34e7aa);}return _0x47e53f[_0x53a5('0x13')](_0x34e7aa)[_0x53a5('0x14')]();};}function respondWithResult(_0x33207d,_0x58d5fa){_0x58d5fa=_0x58d5fa||0xc8;return function(_0x4d2d77){if(_0x4d2d77){return _0x33207d[_0x53a5('0x13')](_0x58d5fa)[_0x53a5('0x15')](_0x4d2d77);}};}function respondWithFilteredResult(_0x19ae4b,_0xb32319){return function(_0xe4c814){if(_0xe4c814){var _0x829a98=typeof _0xb32319[_0x53a5('0x16')]===_0x53a5('0x17')&&typeof _0xb32319[_0x53a5('0x18')]==='undefined';var _0x5b3c7f=_0xe4c814[_0x53a5('0x19')];var _0x2c8306=_0x829a98?0x0:_0xb32319[_0x53a5('0x16')];var _0x7164bd=_0x829a98?_0xe4c814['count']:_0xb32319[_0x53a5('0x16')]+_0xb32319[_0x53a5('0x18')];var _0x2bdd88;if(_0x7164bd>=_0x5b3c7f){_0x7164bd=_0x5b3c7f;_0x2bdd88=0xc8;}else{_0x2bdd88=0xce;}_0x19ae4b[_0x53a5('0x13')](_0x2bdd88);return _0x19ae4b[_0x53a5('0x1a')](_0x53a5('0x1b'),_0x2c8306+'-'+_0x7164bd+'/'+_0x5b3c7f)['json'](_0xe4c814);}return null;};}function saveUpdates(_0x29c397){return function(_0x284777){if(_0x284777){return _0x284777[_0x53a5('0x1c')](_0x29c397)[_0x53a5('0x1d')](function(_0x423577){if(_0x423577['role']===_0x53a5('0x1e')){socket[_0x53a5('0x1f')]('userNotification:recalc:'+_0x423577['id'],_0x423577);}return _0x423577;});}return null;};}function removeEntity(_0x8306d9){return function(_0x11ad30){if(_0x11ad30){return _0x11ad30['destroy']()[_0x53a5('0x1d')](function(){var _0x365a0e=_0x11ad30[_0x53a5('0x20')]({'plain':!![]});if(_0x365a0e[_0x53a5('0x21')]==='admin')return;var _0x51a1db=[{'name':'Users','value':_0x53a5('0x22'),'ignore':!![]},{'name':_0x53a5('0x23'),'value':_0x53a5('0x1e'),'ignore':![]},{'name':_0x53a5('0x24'),'value':_0x53a5('0x25'),'ignore':![]}];var _0x292bdc=_(_0x51a1db)[_0x53a5('0x26')](_0x53a5('0x27'))[_0x53a5('0x28')](_0x53a5('0x29'))[_0x53a5('0x29')]();if(_[_0x53a5('0x2a')](_0x292bdc,_0x365a0e[_0x53a5('0x21')])){return;}var _0x5567a8=_[_0x53a5('0x2b')](_0x51a1db,[_0x53a5('0x29'),_0x365a0e[_0x53a5('0x21')]])[_0x53a5('0x2c')];return db[_0x53a5('0x2d')][_0x53a5('0x2e')]({'where':{'type':_0x5567a8,'resourceId':_0x365a0e['id']}})[_0x53a5('0x1d')](function(){return _0x11ad30;});})['then'](function(){_0x8306d9['status'](0xcc)[_0x53a5('0x14')]();});}};}function handleEntityNotFound(_0x3033fa){return function(_0x117ecf){if(!_0x117ecf){_0x3033fa[_0x53a5('0x2f')](0x194);}return _0x117ecf;};}function handleError(_0x37c579,_0x215f11){_0x215f11=_0x215f11||0x1f4;return function(_0x385369){logger[_0x53a5('0x30')](_0x385369[_0x53a5('0x31')]);if(_0x385369[_0x53a5('0x2c')]){delete _0x385369[_0x53a5('0x2c')];}_0x37c579[_0x53a5('0x13')](_0x215f11)['send'](_0x385369);};}function getUserAttributes(){return _(db[_0x53a5('0x32')][_0x53a5('0x33')])['map'](function(_0x42e037){return{'name':_0x42e037[_0x53a5('0x34')],'type':_0x42e037['type'][_0x53a5('0x35')]};})[_0x53a5('0x26')](function(_0x2cdc31){return![_0x53a5('0x36'),'salt','previousPasswords',_0x53a5('0x37'),'resetPasswordExpires',_0x53a5('0x38')]['includes'](_0x2cdc31[_0x53a5('0x2c')]);})[_0x53a5('0x29')]();}exports[_0x53a5('0x39')]=function(_0x50356b,_0x1db695){var _0x2d5aa8={},_0xb921f={'count':0x0,'rows':[]};var _0x291901=getUserAttributes();_0x2d5aa8=qs[_0x53a5('0x3a')](_0x291901,_0x50356b);var _0x33a798={'where':_0x2d5aa8[_0x53a5('0x3b')]};return db[_0x53a5('0x32')][_0x53a5('0x19')](_0x33a798)[_0x53a5('0x1d')](function(_0xf08045){_0xb921f['count']=_0xf08045;if(_0x50356b[_0x53a5('0x3c')]['includeAll']){_0x2d5aa8[_0x53a5('0x3d')]=[{'all':!![]}];}if(_0x50356b['query'][_0x53a5('0x3e')]==='true'){_0x2d5aa8[_0x53a5('0x3d')]=[{'model':db[_0x53a5('0x3f')],'as':_0x53a5('0x3e')}];}if(!_[_0x53a5('0x2a')](_0x2d5aa8[_0x53a5('0x40')],'id')){_0x2d5aa8[_0x53a5('0x40')][_0x53a5('0x41')]('id');}return db[_0x53a5('0x32')]['findAll'](_0x2d5aa8);})[_0x53a5('0x1d')](function(_0x30474a){_0xb921f[_0x53a5('0x42')]=_0x30474a;if(_0x50356b[_0x53a5('0x3c')]['openTabs']==='true'){var _0x43362f=[];for(var _0xa46ec8=0x0;_0xa46ec8<_0xb921f['rows'][_0x53a5('0x43')];_0xa46ec8++){_0x43362f[_0x53a5('0x41')](get_open_tabs(_0x53a5('0x44'),_0xb921f[_0x53a5('0x42')][_0xa46ec8][_0x53a5('0x45')]));_0x43362f['push'](get_open_tabs(_0x53a5('0x46'),_0xb921f['rows'][_0xa46ec8]['dataValues']));_0x43362f[_0x53a5('0x41')](get_open_tabs(_0x53a5('0x47'),_0xb921f[_0x53a5('0x42')][_0xa46ec8][_0x53a5('0x45')]));_0x43362f[_0x53a5('0x41')](get_open_tabs('mail',_0xb921f[_0x53a5('0x42')][_0xa46ec8][_0x53a5('0x45')]));_0x43362f[_0x53a5('0x41')](get_open_tabs(_0x53a5('0x48'),_0xb921f[_0x53a5('0x42')][_0xa46ec8][_0x53a5('0x45')]));_0x43362f[_0x53a5('0x41')](get_open_tabs('whatsapp',_0xb921f[_0x53a5('0x42')][_0xa46ec8][_0x53a5('0x45')]));}return Promise['all'](_0x43362f)['then'](function(){return _0xb921f;});}else{return _0xb921f;}})[_0x53a5('0x1d')](respondWithFilteredResult(_0x1db695,_0x2d5aa8))[_0x53a5('0x49')](handleError(_0x1db695,null));};exports['show']=function(_0x4c4609,_0x497837){var _0x2d8800=getUserAttributes();_0x4c4609[_0x53a5('0x3c')]['id']=_0x4c4609[_0x53a5('0x4a')]['id'];var _0x4439be=qs[_0x53a5('0x3a')](_0x2d8800,_0x4c4609);if(_0x4c4609[_0x53a5('0x3c')][_0x53a5('0x4b')]){_0x4439be[_0x53a5('0x3d')]=[{'all':!![]}];}if(_0x4c4609[_0x53a5('0x3c')][_0x53a5('0x3e')]==='true'){_0x4439be[_0x53a5('0x3d')]=[{'model':db[_0x53a5('0x3f')],'as':_0x53a5('0x3e')}];}_0x4439be=_[_0x53a5('0x4c')]({},_0x4439be,_0x4c4609['options']);if(!_[_0x53a5('0x2a')](_0x4439be['attributes'],'id')){_0x4439be[_0x53a5('0x40')]['push']('id');}return db[_0x53a5('0x32')][_0x53a5('0x2b')](_0x4439be)['then'](handleEntityNotFound(_0x497837,null))[_0x53a5('0x1d')](function(_0x3ab0c3){var _0x11805f=[];values=_0x3ab0c3;if(_0x4c4609[_0x53a5('0x3c')][_0x53a5('0x4d')]===_0x53a5('0x4e')){_0x11805f[_0x53a5('0x41')](get_open_tabs(_0x53a5('0x44'),_0x3ab0c3[_0x53a5('0x45')]));_0x11805f['push'](get_open_tabs(_0x53a5('0x46'),_0x3ab0c3[_0x53a5('0x45')]));_0x11805f[_0x53a5('0x41')](get_open_tabs(_0x53a5('0x48'),_0x3ab0c3['dataValues']));_0x11805f[_0x53a5('0x41')](get_open_tabs(_0x53a5('0x4f'),_0x3ab0c3[_0x53a5('0x45')]));_0x11805f[_0x53a5('0x41')](get_open_tabs('fax',_0x3ab0c3['dataValues']));_0x11805f[_0x53a5('0x41')](get_open_tabs('mail',_0x3ab0c3['dataValues']));return Promise['all'](_0x11805f);}else{return values;}})[_0x53a5('0x1d')](function(){return values;})['then'](respondWithResult(_0x497837,null))[_0x53a5('0x49')](handleError(_0x497837,null));};exports[_0x53a5('0x1c')]=function(_0x178ac6,_0x4de9c9){if(_0x178ac6[_0x53a5('0x50')]['id']){delete _0x178ac6[_0x53a5('0x50')]['id'];}delete _0x178ac6[_0x53a5('0x50')][_0x53a5('0x21')];return db['User'][_0x53a5('0x2b')]({'where':{'id':_0x178ac6[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x4de9c9,null))['then'](saveUpdates(_0x178ac6[_0x53a5('0x50')],null))[_0x53a5('0x1d')](respondWithResult(_0x4de9c9,null))['catch'](handleError(_0x4de9c9,null));};exports['describe']=function(_0x664b90,_0x250eb1){return db[_0x53a5('0x32')]['describe']()[_0x53a5('0x1d')](respondWithResult(_0x250eb1,null))[_0x53a5('0x49')](handleError(_0x250eb1,null));};exports[_0x53a5('0x51')]=function(_0x34ef4c,_0xe7cc44){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x34ef4c[_0x53a5('0x4a')]['id']}})['then'](handleEntityNotFound(_0xe7cc44,null))['then'](function(_0x3e082d){if(_0x3e082d){return _0x3e082d['addContacts'](_0x34ef4c['body'][_0x53a5('0x52')],_[_0x53a5('0x53')](_0x34ef4c[_0x53a5('0x50')],[_0x53a5('0x52'),'id'])||{});}})[_0x53a5('0x1d')](respondWithResult(_0xe7cc44,null))[_0x53a5('0x49')](handleError(_0xe7cc44,null));};function validateUser(_0x1497eb){return new Promise(function(_0x1d6493,_0x380084){if(_0x1497eb['internal'])return _0x1d6493(_0x1497eb);return db[_0x53a5('0x54')][_0x53a5('0x55')](0x1)['then'](function(_0x4db617){if(_0x4db617[_0x53a5('0x56')])authService[_0x53a5('0x57')](_0x1497eb[_0x53a5('0x36')]);db[_0x53a5('0x32')][_0x53a5('0x58')]('internal')[_0x53a5('0x1d')](function(_0x2652d5){if(_[_0x53a5('0x59')](_0x2652d5)){_0x1497eb[_0x53a5('0x5a')]=_0x4db617[_0x53a5('0x5b')]||0x1;return;}if(_[_0x53a5('0x59')](_0x4db617[_0x53a5('0x5b')])||_0x4db617[_0x53a5('0x5b')]===_0x2652d5){_0x1497eb[_0x53a5('0x5a')]=_0x2652d5+0x1;return;}if(_0x4db617[_0x53a5('0x5b')]>_0x2652d5){_0x1497eb[_0x53a5('0x5a')]=_0x4db617[_0x53a5('0x5b')];return;}return db['sequelize']['query'](_0x53a5('0x5c'),{'type':db['sequelize'][_0x53a5('0x5d')][_0x53a5('0x5e')]})['then'](function(_0x4ae959){if(_0x4ae959&&_0x4ae959[_0x53a5('0x43')]){for(var _0x5de073=0x0,_0x534634=_0x4ae959[_0x53a5('0x43')];_0x5de073<_0x534634&&_[_0x53a5('0x59')](_0x1497eb[_0x53a5('0x5a')]);_0x5de073++){if(_0x4db617[_0x53a5('0x5b')]<=_0x4ae959[_0x5de073][_0x53a5('0x5f')]){_0x1497eb[_0x53a5('0x5a')]=_0x4ae959[_0x5de073][_0x53a5('0x5f')];}else if(_0x4db617[_0x53a5('0x5b')]>_0x4ae959[_0x5de073]['from']&&_0x4db617[_0x53a5('0x5b')]<=_0x4ae959[_0x5de073]['to']){_0x1497eb[_0x53a5('0x5a')]=_0x4db617[_0x53a5('0x5b')];}}}if(_[_0x53a5('0x59')](_0x1497eb[_0x53a5('0x5a')])){_0x1497eb[_0x53a5('0x5a')]=_0x2652d5+0x1;}return _0x1d6493(_0x1497eb);});});})[_0x53a5('0x49')](function(_0x43a68a){_0x380084(_0x43a68a);});});}function updateUser(_0x803627){return new Promise(function(_0x5ee0d2,_0xfd4df5){try{if(_0x803627[_0x53a5('0x60')]){_0x803627[_0x53a5('0x61')]=_0x803627[_0x53a5('0x5a')];_0x803627[_0x53a5('0x62')]={'mailbox':_0x803627[_0x53a5('0x5a')],'password':_0x803627[_0x53a5('0x36')],'fullname':_0x803627[_0x53a5('0x63')],'email':_0x803627['email']};}if(_0x803627[_0x53a5('0x21')]==='agent'){if(!_0x803627['permissions'])_0x803627[_0x53a5('0x64')]=[_0x53a5('0x65'),_0x53a5('0x66'),_0x53a5('0x67'),_0x53a5('0x68'),_0x53a5('0x69'),_0x53a5('0x6a'),_0x53a5('0x6b'),_0x53a5('0x6c'),_0x53a5('0x6d'),_0x53a5('0x6e'),_0x53a5('0x6f'),_0x53a5('0x70'),_0x53a5('0x71'),_0x53a5('0x72'),_0x53a5('0x73')];}_0x5ee0d2(_0x803627);}catch(_0x3440e1){_0xfd4df5(_0x3440e1);}});}exports[_0x53a5('0x74')]=function(_0x10d464,_0x4e191d){if(_0x10d464[_0x53a5('0x22')][_0x53a5('0x21')]===_0x53a5('0x1e'))throw new Error('Unauthorized');if(_0x10d464[_0x53a5('0x50')][_0x53a5('0x21')]===_0x53a5('0x22')&&_0x10d464[_0x53a5('0x22')]['role']!=='admin'){throw new Error(_0x53a5('0x75'));}if(_0x10d464['body'][_0x53a5('0x21')]==='admin'&&_0x10d464[_0x53a5('0x22')]['role']!==_0x53a5('0x76')){throw new Error(_0x53a5('0x77'));}return licenseUtil[_0x53a5('0x78')]([_0x10d464[_0x53a5('0x50')]])[_0x53a5('0x1d')](function(){return validateUser(_0x10d464[_0x53a5('0x50')]);})[_0x53a5('0x1d')](function(_0xa9c6c){return updateUser(_0xa9c6c)[_0x53a5('0x1d')](function(_0x3d461f){if(_0x3d461f['role']==='admin'){_0x3d461f[_0x53a5('0x79')]=_0x10d464['user'][_0x53a5('0x79')];delete _0x3d461f['userProfileId'];}return _0x3d461f;});})[_0x53a5('0x1d')](function(_0x30fa9d){return db[_0x53a5('0x32')][_0x53a5('0x74')](_0x30fa9d,{'include':[{'model':db['VoiceMail'],'as':_0x53a5('0x62')}]});})['then'](function(_0x4d44a8){if(_0x10d464['body']['role']==='user')return _0x4d44a8;if(_0x10d464['user'][_0x53a5('0x21')]!=='user')return _0x4d44a8;return db[_0x53a5('0x7a')][_0x53a5('0x2b')]({'where':{'name':_0x4d44a8[_0x53a5('0x21')]===_0x53a5('0x1e')?_0x53a5('0x23'):_0x53a5('0x24'),'userProfileId':_0x10d464[_0x53a5('0x22')][_0x53a5('0x7b')]},'raw':!![]})['then'](function(_0x17e869){if(!_0x17e869||_0x17e869['autoAssociation']!=0x0)return _0x4d44a8;return db['UserProfileResource'][_0x53a5('0x74')]({'name':_0x4d44a8[_0x53a5('0x2c')],'resourceId':_0x4d44a8['id'],'type':_0x17e869[_0x53a5('0x2c')],'sectionId':_0x17e869['id']},{})[_0x53a5('0x1d')](function(){return _0x4d44a8;});})[_0x53a5('0x49')](function(_0x155551){logger[_0x53a5('0x30')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x155551);throw _0x155551;});})[_0x53a5('0x1d')](respondWithResult(_0x4e191d,0xc9))['catch'](handleError(_0x4e191d,null));};exports[_0x53a5('0x7c')]=function(_0x1b2dfa,_0x403c4f){var _0xec435d=_0x1b2dfa[_0x53a5('0x50')];var _0x301c4e=[];if(_0x1b2dfa[_0x53a5('0x22')][_0x53a5('0x21')]==='agent')throw new Error(_0x53a5('0x7d'));if(_[_0x53a5('0x7e')](_0xec435d,[_0x53a5('0x21'),_0x53a5('0x22')])&&_0x1b2dfa[_0x53a5('0x22')][_0x53a5('0x21')]!==_0x53a5('0x76')){throw new Error(_0x53a5('0x75'));}if(_[_0x53a5('0x7e')](_0xec435d,[_0x53a5('0x21'),_0x53a5('0x76')])&&_0x1b2dfa[_0x53a5('0x22')][_0x53a5('0x21')]!==_0x53a5('0x76')){throw new Error(_0x53a5('0x7f'));}return licenseUtil[_0x53a5('0x78')](_0xec435d)['then'](function(){return validateUser(_0xec435d[0x0]);})[_0x53a5('0x1d')](function(){for(var _0x11f5a6=0x1;_0x11f5a6<_0xec435d[_0x53a5('0x43')];_0x11f5a6++){var _0x35bc67=_0xec435d[_0x11f5a6-0x1]['internal'];if(!_0xec435d[_0x11f5a6]['internal'])_0xec435d[_0x11f5a6][_0x53a5('0x5a')]=_0x35bc67+0x1;_0x301c4e['push'](validateUser(_0xec435d[_0x11f5a6]));}return Promise[_0x53a5('0x80')](_0x301c4e);})[_0x53a5('0x1d')](function(){_0x301c4e=[];for(var _0x350c0e=0x0;_0x350c0e<_0xec435d[_0x53a5('0x43')];_0x350c0e++){_0x301c4e[_0x53a5('0x41')](updateUser(_0xec435d[_0x350c0e]));}return Promise['all'](_0x301c4e);})[_0x53a5('0x1d')](function(){_0x301c4e=_0xec435d[_0x53a5('0x28')](function(_0x3d53de){return db[_0x53a5('0x32')][_0x53a5('0x74')](_0x3d53de,{'include':[{'model':db['VoiceMail'],'as':_0x53a5('0x62')}]})['then'](function(_0x59e09e){_0x3d53de['id']=_0x59e09e['id'];return _0x3d53de;});});return Promise[_0x53a5('0x80')](_0x301c4e);})[_0x53a5('0x1d')](function(_0xcd7dc1){if(_0x1b2dfa[_0x53a5('0x50')]['role']===_0x53a5('0x22'))return _0xcd7dc1;if(_0x1b2dfa[_0x53a5('0x22')]['role']!==_0x53a5('0x22'))return _0xcd7dc1;var _0x573c11=_[_0x53a5('0x7e')](_0xcd7dc1,function(_0x5f121a){return _0x5f121a['role']===_0x53a5('0x1e')||_0x5f121a['role']==='telephone';});if(!_0x573c11)return _0xcd7dc1;return db[_0x53a5('0x7a')][_0x53a5('0x81')]({'where':{'name':{'$or':[_0x53a5('0x23'),'Telephones']},'userProfileId':_0x1b2dfa['user'][_0x53a5('0x7b')]},'raw':!![]})[_0x53a5('0x1d')](function(_0x106f34){if(_[_0x53a5('0x82')](_0x106f34)||!_['some'](_0x106f34,[_0x53a5('0x83'),0x0]))return _0xcd7dc1;_0x301c4e=[];var _0x1ddc89=_(_0x106f34)[_0x53a5('0x28')](function(_0x3d3d55){if(_0x3d3d55[_0x53a5('0x83')]===0x1)return;return _0x3d3d55[_0x53a5('0x2c')]===_0x53a5('0x23')?_0x53a5('0x1e'):_0x53a5('0x25');})[_0x53a5('0x84')]()[_0x53a5('0x29')]();for(var _0xbbd57c=0x0;_0xbbd57c<_0xcd7dc1[_0x53a5('0x43')];_0xbbd57c++){if(!_[_0x53a5('0x2a')](_0x1ddc89,_0xcd7dc1[_0xbbd57c][_0x53a5('0x21')]))return;var _0x4f5211=_0xcd7dc1[_0xbbd57c][_0x53a5('0x21')]===_0x53a5('0x1e')?_0x53a5('0x23'):'Telephones';_0x301c4e[_0x53a5('0x41')](db[_0x53a5('0x2d')]['create']({'name':_0xcd7dc1[_0xbbd57c][_0x53a5('0x2c')],'resourceId':_0xcd7dc1[_0xbbd57c]['id'],'type':_0x4f5211,'sectionId':_[_0x53a5('0x2b')](_0x106f34,['name',_0x4f5211])['id']},{}));}return Promise[_0x53a5('0x80')](_0x301c4e);});})[_0x53a5('0x1d')](respondWithResult(_0x403c4f,0xc9))[_0x53a5('0x49')](handleError(_0x403c4f,null));};exports[_0x53a5('0x85')]=function(_0x38ccd9,_0x522609){if(_0x38ccd9['body']['id']){delete _0x38ccd9['body']['id'];}return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x38ccd9[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](function(_0x1ab70d){if(!_0x1ab70d)return null;if(_0x1ab70d['id']===_0x38ccd9[_0x53a5('0x22')]['id']){if(!_0x38ccd9[_0x53a5('0x50')][_0x53a5('0x86')]||!_0x38ccd9[_0x53a5('0x50')][_0x53a5('0x87')]){throw new db[(_0x53a5('0x88'))][(_0x53a5('0x89'))](_0x53a5('0x8a'));}if(!_0x1ab70d[_0x53a5('0x8b')](_0x38ccd9[_0x53a5('0x50')][_0x53a5('0x86')])){throw new db[(_0x53a5('0x88'))][(_0x53a5('0x89'))](_0x53a5('0x8c'));}if(_0x38ccd9[_0x53a5('0x50')][_0x53a5('0x86')]===_0x38ccd9[_0x53a5('0x50')]['newPassword']){throw new db[(_0x53a5('0x88'))][(_0x53a5('0x89'))](_0x53a5('0x8d'));}}else if(_0x38ccd9[_0x53a5('0x22')][_0x53a5('0x21')]==='admin'){if(!_0x38ccd9['body'][_0x53a5('0x87')]){throw new db[(_0x53a5('0x88'))][(_0x53a5('0x89'))](_0x53a5('0x8e'));}}else if(_0x38ccd9[_0x53a5('0x22')][_0x53a5('0x21')]==='user'){if(!_0x38ccd9[_0x53a5('0x50')]['newPassword']){throw new db[(_0x53a5('0x88'))]['ValidationError'](_0x53a5('0x8e'));}if(_0x1ab70d['role']!==_0x53a5('0x1e')){throw new db[(_0x53a5('0x88'))]['ValidationError'](_0x53a5('0x7d'));}}else{throw new db[(_0x53a5('0x88'))][(_0x53a5('0x89'))]('Unauthorized');}return _0x1ab70d;})[_0x53a5('0x1d')](handleEntityNotFound(_0x522609,null))[_0x53a5('0x1d')](function(_0x3b22a6){return db['Setting'][_0x53a5('0x8f')]({'attributes':['id','securePassword',_0x53a5('0x90'),_0x53a5('0x91')]})[_0x53a5('0x1d')](function(_0x13d798){if(_0x13d798[_0x53a5('0x56')])authService[_0x53a5('0x57')](_0x38ccd9[_0x53a5('0x50')][_0x53a5('0x87')]);if(!_0x13d798['enforcePasswordHistory']||!_0x3b22a6['previousPasswords'])return _0x3b22a6;authService['validatePasswordHistory'](_0x38ccd9[_0x53a5('0x50')][_0x53a5('0x87')],_0x3b22a6['previousPasswords'],_0x13d798[_0x53a5('0x91')]);return _0x3b22a6;})['then'](saveUpdates({'password':_0x38ccd9[_0x53a5('0x50')][_0x53a5('0x87')],'passwordResetAt':_0x38ccd9[_0x53a5('0x22')]['id']==_0x38ccd9[_0x53a5('0x4a')]['id']?moment():null,'previousPasswords':authService[_0x53a5('0x92')](_0x38ccd9[_0x53a5('0x50')][_0x53a5('0x87')],_0x3b22a6['previousPasswords'])},null));})['then'](respondWithResult(_0x522609,null))[_0x53a5('0x49')](handleError(_0x522609,null));};exports['addQueues']=function(_0xcd14c4,_0x197edd){var _0x70297d=_0xcd14c4[_0x53a5('0x50')][_0x53a5('0x93')];return db[_0x53a5('0x32')]['find']({'where':{'id':_0xcd14c4[_0x53a5('0x4a')]['id']},'attributes':['id',_0x53a5('0x2c'),_0x53a5('0x21'),_0x53a5('0x94'),'loginInPause',_0x53a5('0x95'),_0x53a5('0x96')]})[_0x53a5('0x1d')](handleEntityNotFound(_0x197edd,null))[_0x53a5('0x1d')](function(_0x273a3d){if(_0x273a3d){if(!utils['isValidChannel'](_0x70297d)){throw new db[(_0x53a5('0x88'))][(_0x53a5('0x89'))](_0x53a5('0x97'));}return _0x273a3d[_0x53a5('0x98')+_[_0x53a5('0x99')](_0x70297d[_0x53a5('0x9a')]())+'Queues'](_0xcd14c4[_0x53a5('0x50')][_0x53a5('0x52')],{'penalty':_0xcd14c4[_0x53a5('0x50')][_0x53a5('0x9b')]||0x0})[_0x53a5('0x9c')](function(_0x5016cf){for(var _0x36c5f3=0x0;_0x36c5f3<_0xcd14c4[_0x53a5('0x50')][_0x53a5('0x52')][_0x53a5('0x43')];_0x36c5f3+=0x1){var _0x1d65a1={'UserId':Number(_0xcd14c4[_0x53a5('0x4a')]['id'])};_0x1d65a1[_['capitalize'](_0x70297d['toLowerCase']())+_0x53a5('0x9d')]=Number(_0xcd14c4['body']['ids'][_0x36c5f3]);socket['emit'](_0x53a5('0x22')+_[_0x53a5('0x99')](_0x70297d[_0x53a5('0x9a')]())+'Queue:save',_0x1d65a1);}return _0x5016cf;})[_0x53a5('0x1d')](function(){if(_0x70297d===_0x53a5('0x9e')){return db[_0x53a5('0x9f')][_0x53a5('0x81')]({'where':{'id':_0xcd14c4[_0x53a5('0x50')][_0x53a5('0x52')]||[]},'raw':!![],'attributes':['id',_0x53a5('0x2c')]});}})[_0x53a5('0x1d')](function(_0x39fd56){var _0xc2dc98=_0x273a3d[_0x53a5('0x20')]({'plain':!![]});var _0x4b5fde=[];if(_0x70297d===_0x53a5('0x9e')&&_0xc2dc98['role']===_0x53a5('0x1e')&&_0xc2dc98[_0x53a5('0x94')]){for(let _0x5ebd80=0x0;_0x5ebd80<_0x39fd56[_0x53a5('0x43')];_0x5ebd80+=0x1){_0x4b5fde[_0x53a5('0x41')]({'membername':_0xc2dc98[_0x53a5('0x2c')],'UserId':_0xc2dc98['id'],'queue_name':_0x39fd56[_0x5ebd80]['name'],'VoiceQueueId':_0x39fd56[_0x5ebd80]['id'],'interface':_[_0x53a5('0x59')](_0xc2dc98[_0x53a5('0x96')])?util['format']('SIP/%s',_0xc2dc98[_0x53a5('0x2c')]):_0xc2dc98[_0x53a5('0x96')],'paused':_0xc2dc98[_0x53a5('0x95')]||![],'penalty':_0xcd14c4[_0x53a5('0x50')][_0x53a5('0x9b')]||0x0});}return Promise[_0x53a5('0x80')](_0x4b5fde['map'](function(_0x59c352){return db[_0x53a5('0xa0')][_0x53a5('0xa1')](_0x59c352);}));}return _0x273a3d;});}})[_0x53a5('0x1d')](respondWithStatusCode(_0x197edd,null))[_0x53a5('0x49')](handleError(_0x197edd,null));};exports[_0x53a5('0xa2')]=function(_0x2628b2,_0xe833c){var _0x5f1458,_0x4c1942;return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x2628b2[_0x53a5('0x4a')]['id']},'attributes':['id',_0x53a5('0x2c'),'role']})[_0x53a5('0x1d')](handleEntityNotFound(_0xe833c,null))[_0x53a5('0x1d')](function(_0x2196c7){if(_0x2196c7){_0x5f1458=_0x2196c7;if(!_0x2628b2[_0x53a5('0x3c')]['channel']||!utils[_0x53a5('0xa3')](_0x2628b2[_0x53a5('0x3c')][_0x53a5('0x93')])){throw new db[(_0x53a5('0x88'))][(_0x53a5('0x89'))](_0x53a5('0x97'));}return _0x2196c7[_0x53a5('0xa4')+_['capitalize'](_0x2628b2[_0x53a5('0x3c')][_0x53a5('0x93')][_0x53a5('0x9a')]())+_0x53a5('0xa5')](_0x2628b2['query'][_0x53a5('0x52')]);}})[_0x53a5('0x1d')](function(_0x15369a){if(_[_0x53a5('0xa6')](_0x2628b2[_0x53a5('0x3c')][_0x53a5('0x52')])){for(var _0x4d7627=0x0;_0x4d7627<_0x2628b2[_0x53a5('0x3c')][_0x53a5('0x52')][_0x53a5('0x43')];_0x4d7627+=0x1){_0x4c1942={'UserId':Number(_0x2628b2[_0x53a5('0x4a')]['id'])};_0x4c1942[_[_0x53a5('0x99')](_0x2628b2[_0x53a5('0x3c')]['channel'][_0x53a5('0x9a')]())+_0x53a5('0x9d')]=Number(_0x2628b2[_0x53a5('0x3c')][_0x53a5('0x52')][_0x4d7627]);socket[_0x53a5('0x1f')](_0x53a5('0x22')+_[_0x53a5('0x99')](_0x2628b2['query'][_0x53a5('0x93')][_0x53a5('0x9a')]())+_0x53a5('0xa7'),_0x4c1942);}}else{_0x4c1942={'UserId':Number(_0x2628b2[_0x53a5('0x4a')]['id'])};_0x4c1942[_[_0x53a5('0x99')](_0x2628b2['query']['channel'][_0x53a5('0x9a')]())+_0x53a5('0x9d')]=Number(_0x2628b2[_0x53a5('0x3c')][_0x53a5('0x52')]);socket['emit'](_0x53a5('0x22')+_['capitalize'](_0x2628b2[_0x53a5('0x3c')][_0x53a5('0x93')][_0x53a5('0x9a')]())+'Queue:remove',_0x4c1942);}return _0x15369a;})['then'](function(){if(_0x2628b2[_0x53a5('0x3c')][_0x53a5('0x93')]===_0x53a5('0x9e')){return db[_0x53a5('0xa0')][_0x53a5('0x2e')]({'where':{'UserId':_0x2628b2[_0x53a5('0x4a')]['id'],'VoiceQueueId':_0x2628b2[_0x53a5('0x3c')][_0x53a5('0x52')]},'individualHooks':!![]})[_0x53a5('0x1d')](function(){return _0x5f1458;});}return _0x5f1458;})[_0x53a5('0x1d')](respondWithStatusCode(_0xe833c,null))['catch'](handleError(_0xe833c,null));};exports[_0x53a5('0xa8')]=function(_0x3012a5,_0x5ec872){_0x3012a5[_0x53a5('0x50')]['userpic']=_0x3012a5[_0x53a5('0xa9')][_0x53a5('0xaa')];return db[_0x53a5('0x32')]['find']({'where':{'id':_0x3012a5[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x5ec872,null))[_0x53a5('0x1d')](saveUpdates(_0x3012a5['body'],null))[_0x53a5('0x1d')](respondWithResult(_0x5ec872,null))[_0x53a5('0x49')](handleError(_0x5ec872,null));};exports[_0x53a5('0xab')]=function(_0x5ad5a9,_0x3e05ee){var _0x2618c5=path[_0x53a5('0xac')](config[_0x53a5('0xad')],_0x53a5('0xae'));return db['User'][_0x53a5('0x2b')]({'where':{'id':_0x5ad5a9['params']['id']},'attributes':['id',_0x53a5('0xaf')],'raw':!![]})[_0x53a5('0x1d')](handleEntityNotFound(_0x3e05ee,null))[_0x53a5('0x1d')](function(_0x406dc8){if(_0x406dc8){if(_[_0x53a5('0x59')](_0x406dc8[_0x53a5('0xaf')])){return _0x3e05ee[_0x53a5('0xb0')](_0x2618c5);}else{if(!fs[_0x53a5('0xb1')](path[_0x53a5('0xac')](config[_0x53a5('0xad')],_0x53a5('0xb2'),_0x406dc8[_0x53a5('0xaf')]))){return _0x3e05ee[_0x53a5('0xb0')](_0x2618c5);}return _0x3e05ee[_0x53a5('0xb0')](path[_0x53a5('0xac')](config[_0x53a5('0xad')],_0x53a5('0xb2'),_0x406dc8[_0x53a5('0xaf')]));}}})[_0x53a5('0x49')](handleError(_0x3e05ee,null));};exports[_0x53a5('0xb3')]=function(_0x3bd4d8,_0x37c786){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x3bd4d8[_0x53a5('0x4a')]['id']},'attributes':['id']})[_0x53a5('0x1d')](handleEntityNotFound(_0x37c786,null))[_0x53a5('0x1d')](function(_0x3ba3b2){var _0x5af0af=[];values=_0x3ba3b2[_0x53a5('0x45')];_0x5af0af[_0x53a5('0x41')](get_open_tabs(_0x53a5('0x44'),_0x3ba3b2[_0x53a5('0x45')]));_0x5af0af['push'](get_open_tabs(_0x53a5('0x46'),_0x3ba3b2[_0x53a5('0x45')]));_0x5af0af[_0x53a5('0x41')](get_open_tabs(_0x53a5('0x48'),_0x3ba3b2[_0x53a5('0x45')]));_0x5af0af['push'](get_open_tabs(_0x53a5('0x4f'),_0x3ba3b2[_0x53a5('0x45')]));_0x5af0af[_0x53a5('0x41')](get_open_tabs(_0x53a5('0x47'),_0x3ba3b2['dataValues']));_0x5af0af['push'](get_open_tabs('mail',_0x3ba3b2[_0x53a5('0x45')]));return Promise['all'](_0x5af0af);})[_0x53a5('0x1d')](function(_0x2368a6){if(_0x2368a6){var _0x4494ff=_['map'](values[_0x53a5('0xb4')],function(_0x211d3e){return{'channel':_0x53a5('0xb5'),'id':_0x211d3e['id'],'createdAt':_0x211d3e[_0x53a5('0xb6')]};});var _0x1df012=_['map'](values['FaxOpenTabs'],function(_0x2a57a1){return{'channel':'FAX','id':_0x2a57a1['id'],'createdAt':_0x2a57a1['createdAt']};});var _0x4070de=_[_0x53a5('0x28')](values[_0x53a5('0xb7')],function(_0x232d9b){return{'channel':_0x53a5('0xb8'),'id':_0x232d9b['id'],'createdAt':_0x232d9b[_0x53a5('0xb6')]};});var _0x402e9f=_['map'](values['MailOpenTabs'],function(_0x4663ed){return{'channel':_0x53a5('0xb9'),'id':_0x4663ed['id'],'createdAt':_0x4663ed[_0x53a5('0xb6')]};});var _0x554420=_['map'](values[_0x53a5('0xba')],function(_0x5614d4){return{'channel':'SMS','id':_0x5614d4['id'],'createdAt':_0x5614d4[_0x53a5('0xb6')]};});var _0x9133e1=_[_0x53a5('0x28')](values['WhatsappOpenTabs'],function(_0x1acdbf){return{'channel':_0x53a5('0xbb'),'id':_0x1acdbf['id'],'createdAt':_0x1acdbf['createdAt']};});var _0x189edc=_[_0x53a5('0xbc')](_0x4494ff,_0x1df012,_0x4070de,_0x402e9f,_0x554420,_0x9133e1);var _0xe905a5={'count':_0x189edc[_0x53a5('0x43')],'rows':_0x189edc};return _0xe905a5;}else return null;})[_0x53a5('0x1d')](respondWithResult(_0x37c786,null))[_0x53a5('0x49')](handleError(_0x37c786,null));};exports['getContacts']=function(_0x42b972,_0x1a032a){var _0x2e9ece={};return db['User'][_0x53a5('0x8f')]({'where':{'id':_0x42b972[_0x53a5('0x4a')]['id']}})['then'](function(_0x5797d4){if(!_0x5797d4){throw new APINotFoundError(util['format'](_0x53a5('0xbd'),_0x42b972[_0x53a5('0x4a')]['id']));}return contacts['describe']();})[_0x53a5('0x1d')](function(_0x2f8f2b){_0x42b972[_0x53a5('0x3c')]['User']=_0x42b972['params']['id'];_0x2e9ece=qs['getOptions'](_0x2f8f2b,_0x42b972);if(_0x42b972[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0x4b'))){_0x2e9ece[_0x53a5('0x3d')]=[{'model':db['CmList'],'as':_0x53a5('0xbf'),'required':![]},{'model':db[_0x53a5('0xc0')],'as':_0x53a5('0xc1'),'attributes':['id',_0x53a5('0x2c'),_0x53a5('0xc2')],'where':_0x42b972['query'][_0x53a5('0xc3')]?{'id':_0x42b972[_0x53a5('0x3c')]['tag']}:undefined,'required':_0x42b972['query'][_0x53a5('0xc3')]?!![]:![]}];}return contacts['findAll'](_0x42b972[_0x53a5('0x3c')],_0x42b972[_0x53a5('0x22')],_0x2e9ece,_0x2f8f2b);})[_0x53a5('0x1d')](respondWithFilteredResult(_0x1a032a,_0x2e9ece))[_0x53a5('0x49')](APIHandleError(_0x1a032a));};exports[_0x53a5('0xc4')]=function(_0xb122d9,_0x380c59){var _0x12e0fd;var _0x272298={};var _0x4ab1d8;return db[_0x53a5('0x32')]['findOne']({'where':{'id':_0xb122d9[_0x53a5('0x4a')]['id']},'attributes':['id',_0x53a5('0x2c'),_0x53a5('0x21')]})['then'](handleEntityNotFound(_0x380c59,null))['then'](function(_0x233ef3){if(!utils[_0x53a5('0xa3')](_0xb122d9['query'][_0x53a5('0x93')])){throw new db[(_0x53a5('0x88'))][(_0x53a5('0x89'))](_0x53a5('0x97'));}_0x12e0fd=_0x233ef3;var _0x13a0e1={};_0x13a0e1[_0x53a5('0xc5')]=_['keys'](db[_[_0x53a5('0x99')](_0xb122d9[_0x53a5('0x3c')]['channel'])+'Queue']['rawAttributes']);_0x13a0e1[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0xb122d9['query']);_0x13a0e1['filters']=_[_0x53a5('0xc7')](_0x13a0e1['model'],_0x13a0e1[_0x53a5('0x3c')]);_0x272298[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x13a0e1[_0x53a5('0xc5')],qs['fields'](_0xb122d9[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x272298[_0x53a5('0x40')]=_0x272298[_0x53a5('0x40')][_0x53a5('0x43')]?_0x272298[_0x53a5('0x40')]:_0x13a0e1[_0x53a5('0xc5')];_0x272298['order']=qs[_0x53a5('0xc9')](_0xb122d9[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x272298[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0xb122d9[_0x53a5('0x3c')],_0x13a0e1[_0x53a5('0xca')]));if(_0xb122d9['query'][_0x53a5('0x26')]){_0x272298['where']=_[_0x53a5('0x4c')](_0x272298[_0x53a5('0x3b')],{'$or':_['map'](_0x272298[_0x53a5('0x40')],function(_0x3957d6){var _0x2f487f={};_0x2f487f[_0x3957d6]={'$like':'%'+_0xb122d9[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x2f487f;})});}_0x272298=_[_0x53a5('0x4c')]({},_0x272298,_0xb122d9['options']);switch(_0x12e0fd[_0x53a5('0x21')]){case _0x53a5('0x76'):return db[_[_0x53a5('0x99')](_0xb122d9[_0x53a5('0x3c')][_0x53a5('0x93')])+_0x53a5('0xcc')]['findAll'](_0x272298);case _0x53a5('0x22'):case _0x53a5('0x1e'):return _0x12e0fd[_0x53a5('0x20')+_[_0x53a5('0x99')](_0xb122d9[_0x53a5('0x3c')]['channel'])+'Queues'](_0x272298);default:throw new db[(_0x53a5('0x88'))]['ValidationError'](_0x53a5('0xcd'));}})['then'](function(_0x523aa5){_0x4ab1d8=_0x523aa5[_0x53a5('0x43')];if(!_0xb122d9[_0x53a5('0x3c')]['hasOwnProperty'](_0x53a5('0xce'))){_0x272298[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0xb122d9[_0x53a5('0x3c')][_0x53a5('0x18')]);_0x272298['offset']=qs[_0x53a5('0x16')](_0xb122d9['query'][_0x53a5('0x16')]);}switch(_0x12e0fd[_0x53a5('0x21')]){case _0x53a5('0x76'):return db[_[_0x53a5('0x99')](_0xb122d9[_0x53a5('0x3c')][_0x53a5('0x93')])+_0x53a5('0xcc')][_0x53a5('0x81')](_0x272298);case'user':case _0x53a5('0x1e'):return _0x12e0fd[_0x53a5('0x20')+_['capitalize'](_0xb122d9['query'][_0x53a5('0x93')])+'Queues'](_0x272298);}})[_0x53a5('0x1d')](function(_0x2dee3e){return{'count':_0x4ab1d8,'rows':_0x2dee3e};})[_0x53a5('0x1d')](respondWithResult(_0x380c59,null))['catch'](handleError(_0x380c59,null));};exports[_0x53a5('0xcf')]=function(_0x24a87f,_0x628931){var _0x213aff={};var _0x4eb4d5={};var _0x57d4d9;var _0x6b3566;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x24a87f['params']['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x628931,null))[_0x53a5('0x1d')](function(_0x217141){if(_0x217141){_0x57d4d9=_0x217141;_0x4eb4d5['model']=_[_0x53a5('0xc6')](db[_0x53a5('0xa0')][_0x53a5('0x33')]);_0x4eb4d5[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0x24a87f[_0x53a5('0x3c')]);_0x4eb4d5[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x4eb4d5[_0x53a5('0xc5')],_0x4eb4d5[_0x53a5('0x3c')]);_0x213aff[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x4eb4d5[_0x53a5('0xc5')],qs['fields'](_0x24a87f[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x213aff[_0x53a5('0x40')]=_0x213aff[_0x53a5('0x40')][_0x53a5('0x43')]?_0x213aff[_0x53a5('0x40')]:_0x4eb4d5[_0x53a5('0xc5')];_0x213aff['order']=qs['sort'](_0x24a87f[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x213aff['where']=qs[_0x53a5('0xca')](_['pick'](_0x24a87f[_0x53a5('0x3c')],_0x4eb4d5[_0x53a5('0xca')]));if(_0x24a87f['query']['filter']){_0x213aff[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x213aff[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x213aff[_0x53a5('0x40')],function(_0x45244a){var _0x37b642={};_0x37b642[_0x45244a]={'$like':'%'+_0x24a87f[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x37b642;})});}_0x213aff=_['merge']({},_0x213aff,_0x24a87f[_0x53a5('0xd0')]);return _0x57d4d9['getVoiceQueuesRt'](_0x213aff);}})['then'](function(_0x5bcad1){if(_0x5bcad1){_0x6b3566=_0x5bcad1[_0x53a5('0x43')];if(!_0x24a87f['query'][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x213aff['limit']=qs[_0x53a5('0x18')](_0x24a87f[_0x53a5('0x3c')][_0x53a5('0x18')]);_0x213aff['offset']=qs['offset'](_0x24a87f[_0x53a5('0x3c')]['offset']);}return _0x57d4d9[_0x53a5('0xcf')](_0x213aff);}})[_0x53a5('0x1d')](function(_0x611b31){if(_0x611b31){return _0x611b31?{'count':_0x6b3566,'rows':_0x611b31}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x628931,null))[_0x53a5('0x49')](handleError(_0x628931,null));};exports[_0x53a5('0xd1')]=function(_0x298aba,_0xe7cfc5){var _0x293375={};var _0x7bface={};var _0x27279d;var _0x2f7878;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x298aba['params']['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0xe7cfc5,null))['then'](function(_0x2a92ab){if(_0x2a92ab){_0x27279d=_0x2a92ab;_0x7bface[_0x53a5('0xc5')]=_[_0x53a5('0xc6')](db[_0x53a5('0xd2')]['rawAttributes']);_0x7bface['query']=_['keys'](_0x298aba[_0x53a5('0x3c')]);_0x7bface[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x7bface[_0x53a5('0xc5')],_0x7bface[_0x53a5('0x3c')]);_0x293375[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x7bface[_0x53a5('0xc5')],qs['fields'](_0x298aba['query'][_0x53a5('0xc8')]));_0x293375['attributes']=_0x293375[_0x53a5('0x40')][_0x53a5('0x43')]?_0x293375[_0x53a5('0x40')]:_0x7bface['model'];_0x293375[_0x53a5('0xd3')]=qs['sort'](_0x298aba[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x293375[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x298aba[_0x53a5('0x3c')],_0x7bface[_0x53a5('0xca')]));if(_0x298aba['query'][_0x53a5('0x26')]){_0x293375['where']=_[_0x53a5('0x4c')](_0x293375[_0x53a5('0x3b')],{'$or':_['map'](_0x293375['attributes'],function(_0x4cc528){var _0x1a956e={};_0x1a956e[_0x4cc528]={'$like':'%'+_0x298aba[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x1a956e;})});}_0x293375=_[_0x53a5('0x4c')]({},_0x293375,_0x298aba[_0x53a5('0xd0')]);return _0x27279d['getGroups'](_0x293375);}})[_0x53a5('0x1d')](function(_0x5f10c9){if(_0x5f10c9){_0x2f7878=_0x5f10c9[_0x53a5('0x43')];if(!_0x298aba[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x293375[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0x298aba['query']['limit']);_0x293375[_0x53a5('0x16')]=qs[_0x53a5('0x16')](_0x298aba['query'][_0x53a5('0x16')]);}return _0x27279d['getGroups'](_0x293375);}})['then'](function(_0x3bd157){if(_0x3bd157){return _0x3bd157?{'count':_0x2f7878,'rows':_0x3bd157}:null;}})[_0x53a5('0x1d')](respondWithResult(_0xe7cfc5,null))[_0x53a5('0x49')](handleError(_0xe7cfc5,null));};exports[_0x53a5('0xd4')]=function(_0x4fc1ff,_0x389fff){var _0x29842b={'raw':!![],'where':{}};var _0x364992={};var _0x380301={'count':0x0,'rows':[]};return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x4fc1ff[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x389fff,null))['then'](function(_0x491183){if(_0x491183){_0x364992[_0x53a5('0xc5')]=_[_0x53a5('0xc6')](db[_0x53a5('0xd5')][_0x53a5('0x33')]);_0x364992[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0x4fc1ff[_0x53a5('0x3c')]);_0x364992['filters']=_[_0x53a5('0xc7')](_0x364992[_0x53a5('0xc5')],_0x364992[_0x53a5('0x3c')]);_0x29842b[_0x53a5('0x40')]=_['intersection'](_0x364992[_0x53a5('0xc5')],qs['fields'](_0x4fc1ff[_0x53a5('0x3c')]['fields']));_0x29842b['attributes']=_0x29842b[_0x53a5('0x40')][_0x53a5('0x43')]?_0x29842b[_0x53a5('0x40')]:_0x364992[_0x53a5('0xc5')];if(!_0x4fc1ff[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x29842b['limit']=qs[_0x53a5('0x18')](_0x4fc1ff['query'][_0x53a5('0x18')]);_0x29842b[_0x53a5('0x16')]=qs[_0x53a5('0x16')](_0x4fc1ff[_0x53a5('0x3c')][_0x53a5('0x16')]);}_0x29842b[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0x4fc1ff[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x29842b['where']=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x4fc1ff[_0x53a5('0x3c')],_0x364992['filters']));_0x29842b[_0x53a5('0x3b')][_0x53a5('0xd6')]=_0x491183['id'];if(_0x4fc1ff[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x29842b['where']=_['merge'](_0x29842b['where'],{'$or':_[_0x53a5('0x28')](_0x29842b[_0x53a5('0x40')],function(_0x49316f){var _0x273feb={};_0x273feb[_0x49316f]={'$like':'%'+_0x4fc1ff['query']['filter']+'%'};return _0x273feb;})});}_0x29842b=_[_0x53a5('0x4c')]({},_0x29842b,_0x4fc1ff[_0x53a5('0xd0')]);return db[_0x53a5('0xd5')][_0x53a5('0x19')]({'where':_0x29842b['where']})[_0x53a5('0x1d')](function(_0x10ba4b){_0x380301[_0x53a5('0x19')]=_0x10ba4b;if(_0x4fc1ff[_0x53a5('0x3c')][_0x53a5('0x4b')]){_0x29842b[_0x53a5('0x3d')]=[{'all':!![]}];}return db[_0x53a5('0xd5')][_0x53a5('0x81')](_0x29842b);})['then'](function(_0x4ca757){_0x380301[_0x53a5('0x42')]=_0x4ca757;return _0x380301;});}})[_0x53a5('0x1d')](respondWithFilteredResult(_0x389fff,_0x29842b))[_0x53a5('0x49')](handleError(_0x389fff,null));};exports[_0x53a5('0xd7')]=function(_0x9dc7fb,_0x26b1a7){var _0x1d6eeb={'raw':!![],'where':{}};var _0x311b67={};var _0x5e795a={'count':0x0,'rows':[]};return db['User'][_0x53a5('0x8f')]({'where':{'id':_0x9dc7fb[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x26b1a7,null))[_0x53a5('0x1d')](function(_0x1c61ec){if(_0x1c61ec){_0x311b67['model']=_[_0x53a5('0xc6')](db[_0x53a5('0xd8')][_0x53a5('0x33')]);_0x311b67[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0x9dc7fb[_0x53a5('0x3c')]);_0x311b67['filters']=_[_0x53a5('0xc7')](_0x311b67[_0x53a5('0xc5')],_0x311b67['query']);_0x1d6eeb[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x311b67[_0x53a5('0xc5')],qs[_0x53a5('0xc8')](_0x9dc7fb[_0x53a5('0x3c')]['fields']));_0x1d6eeb[_0x53a5('0x40')]=_0x1d6eeb['attributes'][_0x53a5('0x43')]?_0x1d6eeb[_0x53a5('0x40')]:_0x311b67[_0x53a5('0xc5')];if(!_0x9dc7fb[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x1d6eeb[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0x9dc7fb[_0x53a5('0x3c')]['limit']);_0x1d6eeb[_0x53a5('0x16')]=qs[_0x53a5('0x16')](_0x9dc7fb[_0x53a5('0x3c')][_0x53a5('0x16')]);}_0x1d6eeb[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0x9dc7fb['query'][_0x53a5('0xc9')]);_0x1d6eeb[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_['pick'](_0x9dc7fb[_0x53a5('0x3c')],_0x311b67['filters']));_0x1d6eeb[_0x53a5('0x3b')][_0x53a5('0xd6')]=_0x1c61ec['id'];if(_0x9dc7fb[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x1d6eeb[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x1d6eeb[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x1d6eeb[_0x53a5('0x40')],function(_0x112ab9){var _0x47ba39={};_0x47ba39[_0x112ab9]={'$like':'%'+_0x9dc7fb[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x47ba39;})});}_0x1d6eeb=_[_0x53a5('0x4c')]({},_0x1d6eeb,_0x9dc7fb['options']);return db['ScreenRecording'][_0x53a5('0x19')]({'where':_0x1d6eeb[_0x53a5('0x3b')]})['then'](function(_0x3ec9b3){_0x5e795a[_0x53a5('0x19')]=_0x3ec9b3;if(_0x9dc7fb[_0x53a5('0x3c')][_0x53a5('0x4b')]){_0x1d6eeb['include']=[{'all':!![]}];}return db['ScreenRecording'][_0x53a5('0x81')](_0x1d6eeb);})[_0x53a5('0x1d')](function(_0xedfba){_0x5e795a[_0x53a5('0x42')]=_0xedfba;return _0x5e795a;});}})[_0x53a5('0x1d')](respondWithFilteredResult(_0x26b1a7,_0x1d6eeb))[_0x53a5('0x49')](handleError(_0x26b1a7,null));};exports[_0x53a5('0xd9')]=function(_0x4c8b05,_0x47a832){var _0x4ad139={};var _0xab217b={};var _0x4467cb;var _0x3d0cd9;return db[_0x53a5('0x32')]['findOne']({'where':{'id':_0x4c8b05[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x47a832,null))['then'](function(_0x738f8c){if(_0x738f8c){_0x4467cb=_0x738f8c;_0xab217b[_0x53a5('0xc5')]=_[_0x53a5('0xc6')](db[_0x53a5('0xda')][_0x53a5('0x33')]);_0xab217b[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0x4c8b05[_0x53a5('0x3c')]);_0xab217b[_0x53a5('0xca')]=_['intersection'](_0xab217b[_0x53a5('0xc5')],_0xab217b[_0x53a5('0x3c')]);_0x4ad139['attributes']=_[_0x53a5('0xc7')](_0xab217b[_0x53a5('0xc5')],qs[_0x53a5('0xc8')](_0x4c8b05[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x4ad139[_0x53a5('0x40')]=_0x4ad139['attributes'][_0x53a5('0x43')]?_0x4ad139[_0x53a5('0x40')]:_0xab217b[_0x53a5('0xc5')];_0x4ad139[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0x4c8b05[_0x53a5('0x3c')]['sort']);_0x4ad139[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x4c8b05['query'],_0xab217b[_0x53a5('0xca')]));if(_0x4c8b05[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x4ad139[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x4ad139[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x4ad139['attributes'],function(_0x50d126){var _0x447573={};_0x447573[_0x50d126]={'$like':'%'+_0x4c8b05[_0x53a5('0x3c')]['filter']+'%'};return _0x447573;})});}_0x4ad139=_['merge']({},_0x4ad139,_0x4c8b05[_0x53a5('0xd0')]);return _0x4467cb[_0x53a5('0xd9')](_0x4ad139);}})[_0x53a5('0x1d')](function(_0x572c09){if(_0x572c09){_0x3d0cd9=_0x572c09[_0x53a5('0x43')];if(!_0x4c8b05[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x4ad139[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0x4c8b05['query'][_0x53a5('0x18')]);_0x4ad139['offset']=qs[_0x53a5('0x16')](_0x4c8b05['query']['offset']);}return _0x4467cb['getChatInteractions'](_0x4ad139);}})['then'](function(_0x5714b1){if(_0x5714b1){return _0x5714b1?{'count':_0x3d0cd9,'rows':_0x5714b1}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x47a832,null))['catch'](handleError(_0x47a832,null));};exports['getOpenchannelInteractions']=function(_0x6fdaa1,_0x126417){var _0x14a49d={};var _0x2bc717={};var _0x18c499;var _0x370d1d;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x6fdaa1['params']['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x126417,null))[_0x53a5('0x1d')](function(_0xdfc786){if(_0xdfc786){_0x18c499=_0xdfc786;_0x2bc717[_0x53a5('0xc5')]=_['keys'](db[_0x53a5('0xdb')][_0x53a5('0x33')]);_0x2bc717['query']=_[_0x53a5('0xc6')](_0x6fdaa1[_0x53a5('0x3c')]);_0x2bc717['filters']=_[_0x53a5('0xc7')](_0x2bc717['model'],_0x2bc717['query']);_0x14a49d[_0x53a5('0x40')]=_['intersection'](_0x2bc717['model'],qs[_0x53a5('0xc8')](_0x6fdaa1['query'][_0x53a5('0xc8')]));_0x14a49d[_0x53a5('0x40')]=_0x14a49d[_0x53a5('0x40')][_0x53a5('0x43')]?_0x14a49d[_0x53a5('0x40')]:_0x2bc717[_0x53a5('0xc5')];_0x14a49d[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0x6fdaa1[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x14a49d['where']=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x6fdaa1['query'],_0x2bc717[_0x53a5('0xca')]));if(_0x6fdaa1['query'][_0x53a5('0x26')]){_0x14a49d[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x14a49d[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x14a49d[_0x53a5('0x40')],function(_0x18a58b){var _0x99ec69={};_0x99ec69[_0x18a58b]={'$like':'%'+_0x6fdaa1[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x99ec69;})});}_0x14a49d=_[_0x53a5('0x4c')]({},_0x14a49d,_0x6fdaa1[_0x53a5('0xd0')]);return _0x18c499[_0x53a5('0xdc')](_0x14a49d);}})[_0x53a5('0x1d')](function(_0x1316ee){if(_0x1316ee){_0x370d1d=_0x1316ee[_0x53a5('0x43')];if(!_0x6fdaa1[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x14a49d[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0x6fdaa1[_0x53a5('0x3c')]['limit']);_0x14a49d[_0x53a5('0x16')]=qs[_0x53a5('0x16')](_0x6fdaa1[_0x53a5('0x3c')][_0x53a5('0x16')]);}return _0x18c499['getOpenchannelInteractions'](_0x14a49d);}})[_0x53a5('0x1d')](function(_0x16ae2c){if(_0x16ae2c){return _0x16ae2c?{'count':_0x370d1d,'rows':_0x16ae2c}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x126417,null))['catch'](handleError(_0x126417,null));};exports[_0x53a5('0xdd')]=function(_0x282bbd,_0x11c483){var _0x487650={'raw':!![],'where':{}};var _0x566671={};var _0x240bee={'count':0x0,'rows':[]};return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x282bbd[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x11c483,null))['then'](function(_0x296cb9){if(_0x296cb9){_0x566671['model']=_['keys'](db['MailInteraction']['rawAttributes']);_0x566671['query']=_[_0x53a5('0xc6')](_0x282bbd['query']);_0x566671[_0x53a5('0xca')]=_['intersection'](_0x566671[_0x53a5('0xc5')],_0x566671[_0x53a5('0x3c')]);_0x487650[_0x53a5('0x40')]=_['intersection'](_0x566671[_0x53a5('0xc5')],qs[_0x53a5('0xc8')](_0x282bbd[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x487650[_0x53a5('0x40')]=_0x487650[_0x53a5('0x40')][_0x53a5('0x43')]?_0x487650[_0x53a5('0x40')]:_0x566671[_0x53a5('0xc5')];if(!_0x282bbd['query'][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x487650[_0x53a5('0x18')]=qs['limit'](_0x282bbd['query'][_0x53a5('0x18')]);_0x487650[_0x53a5('0x16')]=qs['offset'](_0x282bbd[_0x53a5('0x3c')][_0x53a5('0x16')]);}_0x487650[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0x282bbd['query']['sort']);_0x487650[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_['pick'](_0x282bbd['query'],_0x566671[_0x53a5('0xca')]));_0x487650['where'][_0x53a5('0xd6')]=_0x296cb9['id'];if(_0x282bbd['query'][_0x53a5('0x26')]){_0x487650[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x487650[_0x53a5('0x3b')],{'$or':_['map'](_0x487650[_0x53a5('0x40')],function(_0x133ab5){var _0x551b93={};_0x551b93[_0x133ab5]={'$like':'%'+_0x282bbd['query'][_0x53a5('0x26')]+'%'};return _0x551b93;})});}_0x487650=_[_0x53a5('0x4c')]({},_0x487650,_0x282bbd[_0x53a5('0xd0')]);return db[_0x53a5('0xde')][_0x53a5('0x19')]({'where':_0x487650[_0x53a5('0x3b')]})[_0x53a5('0x1d')](function(_0x376680){_0x240bee[_0x53a5('0x19')]=_0x376680;if(_0x282bbd['query'][_0x53a5('0x4b')]){_0x487650[_0x53a5('0x3d')]=[{'all':!![]}];}return db[_0x53a5('0xde')][_0x53a5('0x81')](_0x487650);})[_0x53a5('0x1d')](function(_0x5430b9){_0x240bee[_0x53a5('0x42')]=_0x5430b9;return _0x240bee;});}})[_0x53a5('0x1d')](respondWithFilteredResult(_0x11c483,_0x487650))[_0x53a5('0x49')](handleError(_0x11c483,null));};exports[_0x53a5('0xdf')]=function(_0x5d69d9,_0xb2b3b3){var _0x307064={};var _0x1f559b={};var _0x1d2a99;var _0x9ce137;return db['User'][_0x53a5('0x8f')]({'where':{'id':_0x5d69d9[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0xb2b3b3,null))[_0x53a5('0x1d')](function(_0x53840e){if(_0x53840e){_0x1d2a99=_0x53840e;_0x1f559b[_0x53a5('0xc5')]=_[_0x53a5('0xc6')](db[_0x53a5('0xe0')][_0x53a5('0x33')]);_0x1f559b[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0x5d69d9[_0x53a5('0x3c')]);_0x1f559b[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x1f559b[_0x53a5('0xc5')],_0x1f559b[_0x53a5('0x3c')]);_0x307064[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x1f559b[_0x53a5('0xc5')],qs['fields'](_0x5d69d9[_0x53a5('0x3c')]['fields']));_0x307064[_0x53a5('0x40')]=_0x307064[_0x53a5('0x40')][_0x53a5('0x43')]?_0x307064[_0x53a5('0x40')]:_0x1f559b[_0x53a5('0xc5')];_0x307064['order']=qs[_0x53a5('0xc9')](_0x5d69d9[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x307064['where']=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x5d69d9[_0x53a5('0x3c')],_0x1f559b[_0x53a5('0xca')]));if(_0x5d69d9[_0x53a5('0x3c')]['filter']){_0x307064[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x307064[_0x53a5('0x3b')],{'$or':_['map'](_0x307064[_0x53a5('0x40')],function(_0x48ffdd){var _0x30a8ae={};_0x30a8ae[_0x48ffdd]={'$like':'%'+_0x5d69d9[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x30a8ae;})});}_0x307064=_[_0x53a5('0x4c')]({},_0x307064,_0x5d69d9[_0x53a5('0xd0')]);return _0x1d2a99['getSmsInteractions'](_0x307064);}})[_0x53a5('0x1d')](function(_0x1bd7c7){if(_0x1bd7c7){_0x9ce137=_0x1bd7c7[_0x53a5('0x43')];if(!_0x5d69d9['query'][_0x53a5('0xbe')]('nolimit')){_0x307064[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0x5d69d9[_0x53a5('0x3c')][_0x53a5('0x18')]);_0x307064['offset']=qs['offset'](_0x5d69d9['query'][_0x53a5('0x16')]);}return _0x1d2a99[_0x53a5('0xdf')](_0x307064);}})['then'](function(_0xb9f8c2){if(_0xb9f8c2){return _0xb9f8c2?{'count':_0x9ce137,'rows':_0xb9f8c2}:null;}})[_0x53a5('0x1d')](respondWithResult(_0xb2b3b3,null))['catch'](handleError(_0xb2b3b3,null));};exports[_0x53a5('0xe1')]=function(_0x4e0fd8,_0x27f540){var _0x570d4={};var _0x269eae={};var _0x1c7927;var _0x13252e;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x4e0fd8[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x27f540,null))[_0x53a5('0x1d')](function(_0x12a235){if(_0x12a235){_0x1c7927=_0x12a235;_0x269eae['model']=_[_0x53a5('0xc6')](db[_0x53a5('0xe2')][_0x53a5('0x33')]);_0x269eae[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0x4e0fd8['query']);_0x269eae[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x269eae[_0x53a5('0xc5')],_0x269eae['query']);_0x570d4[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x269eae['model'],qs[_0x53a5('0xc8')](_0x4e0fd8['query']['fields']));_0x570d4[_0x53a5('0x40')]=_0x570d4[_0x53a5('0x40')][_0x53a5('0x43')]?_0x570d4[_0x53a5('0x40')]:_0x269eae[_0x53a5('0xc5')];_0x570d4[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0x4e0fd8[_0x53a5('0x3c')]['sort']);_0x570d4[_0x53a5('0x3b')]=qs['filters'](_[_0x53a5('0xcb')](_0x4e0fd8[_0x53a5('0x3c')],_0x269eae[_0x53a5('0xca')]));if(_0x4e0fd8[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x570d4[_0x53a5('0x3b')]=_['merge'](_0x570d4[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x570d4['attributes'],function(_0xd70586){var _0x33cee4={};_0x33cee4[_0xd70586]={'$like':'%'+_0x4e0fd8['query'][_0x53a5('0x26')]+'%'};return _0x33cee4;})});}_0x570d4=_[_0x53a5('0x4c')]({},_0x570d4,_0x4e0fd8[_0x53a5('0xd0')]);return _0x1c7927[_0x53a5('0xe1')](_0x570d4);}})[_0x53a5('0x1d')](function(_0x4f5b3a){if(_0x4f5b3a){_0x13252e=_0x4f5b3a[_0x53a5('0x43')];if(!_0x4e0fd8[_0x53a5('0x3c')]['hasOwnProperty'](_0x53a5('0xce'))){_0x570d4[_0x53a5('0x18')]=qs['limit'](_0x4e0fd8[_0x53a5('0x3c')]['limit']);_0x570d4[_0x53a5('0x16')]=qs[_0x53a5('0x16')](_0x4e0fd8['query'][_0x53a5('0x16')]);}return _0x1c7927[_0x53a5('0xe1')](_0x570d4);}})['then'](function(_0x5a0e4d){if(_0x5a0e4d){return _0x5a0e4d?{'count':_0x13252e,'rows':_0x5a0e4d}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x27f540,null))[_0x53a5('0x49')](handleError(_0x27f540,null));};exports[_0x53a5('0xe3')]=function(_0x4f0d11,_0x1b669a){var _0x536dee={};var _0x5956e6={};var _0x1447cf;var _0xa859e6;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x4f0d11[_0x53a5('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1b669a,null))[_0x53a5('0x1d')](function(_0x2e3942){if(_0x2e3942){_0x1447cf=_0x2e3942;_0x5956e6[_0x53a5('0xc5')]=_['keys'](db[_0x53a5('0xe4')][_0x53a5('0x33')]);_0x5956e6[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0x4f0d11[_0x53a5('0x3c')]);_0x5956e6[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x5956e6[_0x53a5('0xc5')],_0x5956e6['query']);_0x536dee[_0x53a5('0x40')]=_['intersection'](_0x5956e6[_0x53a5('0xc5')],qs[_0x53a5('0xc8')](_0x4f0d11[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x536dee[_0x53a5('0x40')]=_0x536dee[_0x53a5('0x40')]['length']?_0x536dee[_0x53a5('0x40')]:_0x5956e6[_0x53a5('0xc5')];_0x536dee[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0x4f0d11['query']['sort']);_0x536dee[_0x53a5('0x3b')]=qs['filters'](_[_0x53a5('0xcb')](_0x4f0d11[_0x53a5('0x3c')],_0x5956e6['filters']));if(_0x4f0d11[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x536dee[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x536dee[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x536dee['attributes'],function(_0x3bdd18){var _0x5203da={};_0x5203da[_0x3bdd18]={'$like':'%'+_0x4f0d11['query'][_0x53a5('0x26')]+'%'};return _0x5203da;})});}_0x536dee=_[_0x53a5('0x4c')]({},_0x536dee,_0x4f0d11[_0x53a5('0xd0')]);return _0x1447cf[_0x53a5('0xe3')](_0x536dee);}})[_0x53a5('0x1d')](function(_0x25cba6){if(_0x25cba6){_0xa859e6=_0x25cba6[_0x53a5('0x43')];if(!_0x4f0d11[_0x53a5('0x3c')]['hasOwnProperty'](_0x53a5('0xce'))){_0x536dee[_0x53a5('0x18')]=qs['limit'](_0x4f0d11[_0x53a5('0x3c')][_0x53a5('0x18')]);_0x536dee['offset']=qs[_0x53a5('0x16')](_0x4f0d11['query']['offset']);}return _0x1447cf[_0x53a5('0xe3')](_0x536dee);}})[_0x53a5('0x1d')](function(_0x1ef6f9){if(_0x1ef6f9){return _0x1ef6f9?{'count':_0xa859e6,'rows':_0x1ef6f9}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x1b669a,null))['catch'](handleError(_0x1b669a,null));};exports['login']=function(_0x23aace,_0x4d2246,_0x3ba893){var _0x483d7c;var _0x410e7f;var _0x583a9f;var _0xab2d10=!_[_0x53a5('0x59')](_0x23aace['params']['id'])?_0x23aace[_0x53a5('0x4a')]['id']:!_['isNil'](_0x23aace[_0x53a5('0x22')]['id'])?_0x23aace[_0x53a5('0x22')]['id']:null;return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0xab2d10,'role':{'$or':[_0x53a5('0x76'),_0x53a5('0x22'),_0x53a5('0x1e')]}},'attributes':['id',_0x53a5('0x2c'),_0x53a5('0xe5'),_0x53a5('0xe6'),_0x53a5('0x21'),_0x53a5('0x5a'),'loginInPause']})[_0x53a5('0x1d')](function(_0x1d8d3e){if(_0x1d8d3e){if(_0x1d8d3e[_0x53a5('0x21')]===_0x53a5('0x1e')){_0x483d7c=_0x1d8d3e;if(_0x23aace[_0x53a5('0x50')][_0x53a5('0x96')]){_0x583a9f=util[_0x53a5('0xe7')](_0x53a5('0xe8'),_0x483d7c[_0x23aace[_0x53a5('0x50')][_0x53a5('0x96')]]);}else if(_0x23aace[_0x53a5('0x50')][_0x53a5('0xe9')]){_0x583a9f=util['format']('SIP/%s',_0x23aace[_0x53a5('0x50')][_0x53a5('0xe9')]);}else{_0x583a9f=util['format'](_0x53a5('0xea'),_0x483d7c[_0x53a5('0x2c')]);}socket['to'](util[_0x53a5('0xe7')](_0x53a5('0xeb'),_0x483d7c[_0x53a5('0x2c')]))[_0x53a5('0x1f')](_0x53a5('0xec'),{'user':{'id':_0x483d7c['id'],'name':_0x483d7c[_0x53a5('0x2c')]},'ip':_0x23aace[_0x53a5('0xed')][_0x53a5('0xee')]||_0x23aace[_0x53a5('0xef')][_0x53a5('0xf0')]||_0x23aace[_0x53a5('0xf1')][_0x53a5('0xf0')]||_0x23aace['connection'][_0x53a5('0xf1')][_0x53a5('0xf0')]});return db[_0x53a5('0xa0')]['destroy']({'where':{'membername':_0x483d7c['name']},'individualHooks':!![]});}}else{throw new db['Sequelize']['ValidationError'](_0x53a5('0xf2'));}})[_0x53a5('0x1d')](function(){if(_0x483d7c){return _0x483d7c[_0x53a5('0xf3')]({'raw':!![]});}})[_0x53a5('0x1d')](function(_0x3f1594){if(_0x483d7c){if(_0x3f1594){_0x410e7f=_0x3f1594;if(_0x410e7f[_0x53a5('0x43')]){var _0x5ab2fb=_0x410e7f['map'](function(_0x56b018){var _0x56aeb9={'membername':_0x483d7c[_0x53a5('0x2c')],'UserId':_0x483d7c['id'],'queue_name':_0x56b018['name'],'VoiceQueueId':_0x56b018['id'],'interface':_0x583a9f,'paused':_0x483d7c[_0x53a5('0xf4')]||![],'penalty':_0x56b018[_0x53a5('0xf5')]||0x0};return db[_0x53a5('0xa0')][_0x53a5('0xa1')](_0x56aeb9);});return Promise[_0x53a5('0x80')](_0x5ab2fb);}}}})['then'](function(){if(_0x483d7c){return db['MemberReport'][_0x53a5('0x81')]({'where':{'membername':_0x483d7c['name'],'exitAt':null}});}})['then'](function(_0x5b1aa4){if(_0x483d7c){var _0x25e4a6=[];_0x5b1aa4[_0x53a5('0xf6')](function(_0x4c93e9){_0x25e4a6[_0x53a5('0x41')](_0x4c93e9[_0x53a5('0x1c')]({'exitAt':moment()[_0x53a5('0xe7')](_0x53a5('0xf7'))}));});return Promise[_0x53a5('0x80')](_0x25e4a6);}})[_0x53a5('0x1d')](function(){if(_0x483d7c){var _0xbbc016=[];var _0x200345=[];var _0x176ba2=utils[_0x53a5('0xf8')]();var _0x2b644b={'membername':_0x483d7c['name'],'interface':_0x583a9f,'enterAt':moment()['format'](_0x53a5('0xf7')),'role':_0x483d7c[_0x53a5('0x21')],'internal':_0x483d7c[_0x53a5('0x5a')]};_0x176ba2[_0x53a5('0xf6')](function(_0x41752b){_0xbbc016[_0x53a5('0x41')](_['merge']({'channel':_0x41752b,'type':_0x53a5('0xf9'),'data1':_0x23aace[_0x53a5('0x50')][_0x53a5('0xfa')],'data2':_0x583a9f},_0x2b644b));if(_0x483d7c[_0x53a5('0xf4')]){_0x200345[_0x53a5('0x41')](_[_0x53a5('0x4c')]({'channel':_0x41752b,'type':_0x53a5('0xfb'),'data1':_0x53a5('0xfc')},_0x2b644b));}});return db[_0x53a5('0xfd')][_0x53a5('0x7c')](_0xbbc016[_0x53a5('0xbc')](_0x200345),{'individualHooks':!![]});}})['then'](function(){if(_0x483d7c){return _0x483d7c[_0x53a5('0x1c')]({'online':!![],'lastLoginAt':moment()[_0x53a5('0xe7')](_0x53a5('0xf7')),'voicePause':_0x483d7c[_0x53a5('0xf4')]||![],'mailPause':_0x483d7c['loginInPause']||![],'chatPause':_0x483d7c[_0x53a5('0xf4')]||![],'faxPause':_0x483d7c[_0x53a5('0xf4')]||![],'smsPause':_0x483d7c[_0x53a5('0xf4')]||![],'openchannelPause':_0x483d7c[_0x53a5('0xf4')]||![],'whatsappPause':_0x483d7c[_0x53a5('0xf4')]||![],'pauseType':_0x483d7c[_0x53a5('0xf4')]?_0x53a5('0xfc'):null,'interface':_0x583a9f,'lastPauseAt':moment()[_0x53a5('0xe7')](_0x53a5('0xf7'))});}})[_0x53a5('0x1d')](function(_0x463893){if(_0x23aace[_0x53a5('0xfe')]){return _0x3ba893();}else{return Promise[_0x53a5('0xff')](_0x463893)[_0x53a5('0x1d')](respondWithResult(_0x4d2246,null));}})[_0x53a5('0x49')](handleError(_0x4d2246,null));};exports['logout']=function(_0x2d3dfe,_0x9dfee7){var _0x72a786;return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x2d3dfe[_0x53a5('0x4a')]['id'],'role':'agent'},'attributes':['id','name',_0x53a5('0x21')]})['then'](handleEntityNotFound(_0x9dfee7,null))[_0x53a5('0x1d')](function(_0x1de5b4){if(_0x1de5b4){_0x72a786=_0x1de5b4;return db[_0x53a5('0xa0')][_0x53a5('0x2e')]({'where':{'membername':_0x72a786[_0x53a5('0x2c')]},'individualHooks':!![]});}})[_0x53a5('0x1d')](function(){return db[_0x53a5('0xfd')][_0x53a5('0x81')]({'where':{'membername':_0x72a786[_0x53a5('0x2c')],'exitAt':null}});})['then'](function(_0x56ad3b){var _0x56ff40=[];_0x56ad3b[_0x53a5('0xf6')](function(_0x5bdcb4){_0x56ff40[_0x53a5('0x41')](_0x5bdcb4[_0x53a5('0x1c')]({'exitAt':moment()[_0x53a5('0xe7')](_0x53a5('0xf7'))}));});return Promise[_0x53a5('0x80')](_0x56ff40);})[_0x53a5('0x1d')](function(){return _0x72a786[_0x53a5('0x1c')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x53a5('0x1d')](respondWithResult(_0x9dfee7,null))[_0x53a5('0x49')](handleError(_0x9dfee7,null));};exports[_0x53a5('0x100')]=function(_0x55b8ce,_0x282743){var _0xebd43;return db[_0x53a5('0xa0')][_0x53a5('0x1c')]({'paused':0x1},{'where':{'UserId':_0x55b8ce[_0x53a5('0x4a')]['id']},'individualHooks':!![]})[_0x53a5('0x1d')](function(){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x55b8ce[_0x53a5('0x4a')]['id'],'role':_0x53a5('0x1e')},'attributes':['id',_0x53a5('0x2c'),_0x53a5('0x21'),_0x53a5('0x5a'),_0x53a5('0x96'),'online']});})['then'](handleEntityNotFound(_0x282743,null))[_0x53a5('0x1d')](function(_0x4fb775){if(_0x4fb775){_0xebd43=_0x4fb775;return db[_0x53a5('0xfd')][_0x53a5('0x81')]({'where':{'membername':_0xebd43[_0x53a5('0x2c')],'type':_0x53a5('0xfb'),'exitAt':null}});}})['then'](function(_0x5ea8e8){if(_0x5ea8e8[_0x53a5('0x43')]){var _0x152460=moment()[_0x53a5('0xe7')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x521b90=0x0,_0x695a49=_0x5ea8e8['length'];_0x521b90<_0x695a49;_0x521b90++){_0x5ea8e8[_0x521b90][_0x53a5('0x101')]({'exitAt':_0x152460});}}})[_0x53a5('0x1d')](function(){var _0x4c6586=[];var _0x5ec964=utils['getChannels']();_0x5ec964[_0x53a5('0xf6')](function(_0x2da4b3){_0x4c6586[_0x53a5('0x41')]({'channel':_0x2da4b3,'membername':_0xebd43[_0x53a5('0x2c')],'interface':_[_0x53a5('0x59')](_0xebd43[_0x53a5('0x96')])?util['format'](_0x53a5('0xea'),_0xebd43[_0x53a5('0x2c')]):_0xebd43[_0x53a5('0x96')],'type':_0x53a5('0xfb'),'enterAt':moment()[_0x53a5('0xe7')](_0x53a5('0xf7')),'data1':_0x55b8ce['body']['type']||_0x53a5('0x102'),'role':_0xebd43[_0x53a5('0x21')],'internal':_0xebd43[_0x53a5('0x5a')]});});return db[_0x53a5('0xfd')][_0x53a5('0x7c')](_0x4c6586,{'individualHooks':!![]});})[_0x53a5('0x1d')](function(){return _0xebd43[_0x53a5('0x1c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x55b8ce[_0x53a5('0x50')][_0x53a5('0x103')]||_0x53a5('0x102'),'lastPauseAt':moment()[_0x53a5('0xe7')]('YYYY-MM-DD\x20HH:mm:ss')});})['then'](respondWithResult(_0x282743,null))[_0x53a5('0x49')](handleError(_0x282743,null));};exports[_0x53a5('0x104')]=function(_0x1eb48e,_0x3ddca4){if(_0x1eb48e[_0x53a5('0x50')]['channel']&&!utils['isValidChannel'](_0x1eb48e[_0x53a5('0x50')][_0x53a5('0x93')])){throw new APIBadRequestError(util['format'](_0x53a5('0x105'),_0x1eb48e[_0x53a5('0x50')][_0x53a5('0x93')]));}return db[_0x53a5('0x32')]['find']({'where':{'id':_0x1eb48e['params']['id']},'attributes':['id','name','role',_0x53a5('0x5a'),_0x53a5('0x96'),_0x53a5('0x94'),_0x53a5('0x95'),_0x53a5('0x106'),'chatPause',_0x53a5('0x107'),_0x53a5('0x108'),_0x53a5('0x109'),_0x53a5('0x10a'),_0x53a5('0x10b'),_0x53a5('0x10c')]})[_0x53a5('0x1d')](function(_0x48bb08){if(!_0x48bb08){throw new APINotFoundError(util[_0x53a5('0xe7')]('User\x20with\x20id\x20%s\x20not\x20found',_0x1eb48e[_0x53a5('0x4a')]['id']));}return _0x48bb08['unpause'](_0x1eb48e['body'][_0x53a5('0x93')]);})[_0x53a5('0x1d')](respondWithResult(_0x3ddca4,null))[_0x53a5('0x49')](APIHandleError(_0x3ddca4));};exports['getTeams']=function(_0x165c77,_0x186d0f){var _0x220965={};var _0x3fa9da={};var _0x593c36;var _0x1a0d36;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x165c77[_0x53a5('0x4a')]['id']}})['then'](handleEntityNotFound(_0x186d0f,null))[_0x53a5('0x1d')](function(_0x1431a1){if(_0x1431a1){_0x593c36=_0x1431a1;_0x3fa9da[_0x53a5('0xc5')]=_[_0x53a5('0xc6')](db[_0x53a5('0x10d')][_0x53a5('0x33')]);_0x3fa9da[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0x165c77[_0x53a5('0x3c')]);_0x3fa9da[_0x53a5('0xca')]=_['intersection'](_0x3fa9da[_0x53a5('0xc5')],_0x3fa9da[_0x53a5('0x3c')]);_0x220965[_0x53a5('0x40')]=_['intersection'](_0x3fa9da[_0x53a5('0xc5')],qs['fields'](_0x165c77[_0x53a5('0x3c')]['fields']));_0x220965['attributes']=_0x220965[_0x53a5('0x40')][_0x53a5('0x43')]?_0x220965[_0x53a5('0x40')]:_0x3fa9da[_0x53a5('0xc5')];_0x220965[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0x165c77['query'][_0x53a5('0xc9')]);_0x220965[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x165c77['query'],_0x3fa9da[_0x53a5('0xca')]));if(_0x165c77[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x220965[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x220965[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x220965[_0x53a5('0x40')],function(_0x4254dd){var _0x4a9035={};_0x4a9035[_0x4254dd]={'$like':'%'+_0x165c77['query']['filter']+'%'};return _0x4a9035;})});}_0x220965=_['merge']({},_0x220965,_0x165c77['options']);return _0x593c36[_0x53a5('0x10e')](_0x220965);}})['then'](function(_0x50cf73){if(_0x50cf73){_0x1a0d36=_0x50cf73[_0x53a5('0x43')];if(!_0x165c77[_0x53a5('0x3c')]['hasOwnProperty'](_0x53a5('0xce'))){_0x220965[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0x165c77[_0x53a5('0x3c')]['limit']);_0x220965['offset']=qs[_0x53a5('0x16')](_0x165c77[_0x53a5('0x3c')][_0x53a5('0x16')]);}return _0x593c36[_0x53a5('0x10e')](_0x220965);}})[_0x53a5('0x1d')](function(_0xa846cc){if(_0xa846cc){return _0xa846cc?{'count':_0x1a0d36,'rows':_0xa846cc}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x186d0f,null))[_0x53a5('0x49')](handleError(_0x186d0f,null));};exports[_0x53a5('0x10f')]=function(_0x103079,_0x78f3ca){var _0x398c70=_0x103079[_0x53a5('0x4a')]['id'];var _0x33b882=_0x103079[_0x53a5('0x50')]?_0x103079['body'][_0x53a5('0x52')]:null;var _0x201b5a=[];return Promise[_0x53a5('0xff')]()[_0x53a5('0x1d')](function(){if(!_0x33b882)throw new APIBadRequestError(_0x53a5('0x110'));})['then'](function(){return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x398c70}});})[_0x53a5('0x1d')](function(_0x39eb2c){if(!_0x39eb2c)throw new APINotFoundError(util[_0x53a5('0xe7')](_0x53a5('0xbd'),_0x103079[_0x53a5('0x4a')]['id']));return db[_0x53a5('0x111')][_0x53a5('0x112')](function(_0xfaa191){return _0x39eb2c[_0x53a5('0x10f')](_0x33b882,{'transaction':_0xfaa191})[_0x53a5('0x1d')](function(){return db[_0x53a5('0x10d')][_0x53a5('0x81')]({'where':{'id':{'$in':_0x33b882}}});})['then'](function(_0x4484a1){var _0x1da3a8=_[_0x53a5('0x28')](_0x4484a1,function(_0x1628c3){return _0x1628c3[_0x53a5('0x113')]();});return Promise[_0x53a5('0x80')](_0x1da3a8);})['then'](function(_0x17acd6){_0x201b5a=_[_0x53a5('0x114')](_0x17acd6);var _0x511bd2=_['map'](_0x201b5a,function(_0x2954a3){return _0x2954a3[_0x53a5('0x115')](_0x39eb2c['id'],{'transaction':_0xfaa191});});return Promise['all'](_0x511bd2);})[_0x53a5('0x1d')](function(){if(!_0x39eb2c[_0x53a5('0x94')])return;var _0x30117a=_['filter'](_0x201b5a,function(_0x504cbc){return _0x504cbc[_0x53a5('0x116')]('channel')==='Voice';});var _0x2989c4=_['map'](_0x30117a,function(_0x320dd4){return db['UserVoiceQueueRt']['upsert']({'membername':_0x39eb2c[_0x53a5('0x2c')],'UserId':_0x39eb2c['id'],'queue_name':_0x320dd4[_0x53a5('0x2c')],'VoiceQueueId':_0x320dd4['id'],'interface':_[_0x53a5('0x59')](_0x39eb2c['interface'])?util['format']('SIP/%s',_0x39eb2c[_0x53a5('0x2c')]):_0x39eb2c[_0x53a5('0x96')],'paused':_0x39eb2c['voicePause']||![],'penalty':_0x39eb2c['penalty']},{'transaction':_0xfaa191});});return Promise['all'](_0x2989c4);})['then'](function(){return db[_0x53a5('0x117')][_0x53a5('0x81')]({'where':{'teamId':{'$in':_0x33b882}}});})[_0x53a5('0x1d')](function(_0x3877fb){var _0x193e43=_[_0x53a5('0x28')](_0x3877fb,function(_0x557c93){return db[_0x53a5('0x118')][_0x53a5('0x74')]({'UserId':_0x39eb2c['id'],'VoicePrefixId':_0x557c93[_0x53a5('0x119')]},{'transaction':_0xfaa191});});return Promise[_0x53a5('0x80')](_0x193e43);});});})[_0x53a5('0x1d')](function(){for(var _0x1268ce=0x0;_0x1268ce<_0x201b5a[_0x53a5('0x43')];_0x1268ce++){var _0x3965c4=_0x201b5a[_0x1268ce][_0x53a5('0x116')](_0x53a5('0x93'));var _0x2e6b12=_0x3965c4+_0x53a5('0x9d');socket[_0x53a5('0x1f')]('user'+_0x3965c4+_0x53a5('0x11a'),{'UserId':_0x398c70,['queueField']:_0x201b5a[_0x1268ce]['id']});}})[_0x53a5('0x1d')](respondWithStatusCode(_0x78f3ca,null))[_0x53a5('0x49')](APIHandleError(_0x78f3ca));};exports[_0x53a5('0x11b')]=function(_0x15a840,_0x401fe2){var _0x2f11b5=_0x15a840['params']['id'];var _0x496bcd=null;if(_0x15a840[_0x53a5('0x3c')][_0x53a5('0x52')]){_0x496bcd=_[_0x53a5('0xa6')](_0x15a840[_0x53a5('0x3c')][_0x53a5('0x52')])?_0x15a840[_0x53a5('0x3c')][_0x53a5('0x52')]:[_0x15a840['query'][_0x53a5('0x52')]];}var _0xf99341=[];return Promise['resolve']()[_0x53a5('0x1d')](function(){if(!_0x496bcd)throw new APIBadRequestError(_0x53a5('0x11c'));})[_0x53a5('0x1d')](function(){return db['User'][_0x53a5('0x8f')]({'where':{'id':_0x2f11b5}});})['then'](function(_0xe8b2c7){if(!_0xe8b2c7)throw new APINotFoundError(util[_0x53a5('0xe7')](_0x53a5('0xbd'),_0x15a840['params']['id']));return db['sequelize'][_0x53a5('0x112')](function(_0x4f5f9b){return _0xe8b2c7[_0x53a5('0x11b')](_0x496bcd,{'transaction':_0x4f5f9b})[_0x53a5('0x1d')](function(){return db[_0x53a5('0x10d')][_0x53a5('0x81')]({'where':{'id':{'$in':_0x496bcd}}});})[_0x53a5('0x1d')](function(_0xe03529){var _0x2bfaa2=_[_0x53a5('0x28')](_0xe03529,function(_0x58c235){return _0x58c235['getAssociatedQueues']();});return Promise[_0x53a5('0x80')](_0x2bfaa2);})[_0x53a5('0x1d')](function(_0x2bd6ea){_0xf99341=_[_0x53a5('0x114')](_0x2bd6ea);var _0xca0c31=_['map'](_0xf99341,function(_0xb8b1a7){return _0xb8b1a7[_0x53a5('0x11d')](_0xe8b2c7['id'],{'transaction':_0x4f5f9b});});return Promise['all'](_0xca0c31);})[_0x53a5('0x1d')](function(){if(!_0xe8b2c7[_0x53a5('0x94')])return;var _0x41b9ca=_[_0x53a5('0x26')](_0xf99341,function(_0x5be760){return _0x5be760[_0x53a5('0x116')](_0x53a5('0x93'))==='Voice';});var _0x2d53de=_['map'](_0x41b9ca,function(_0x264228){return db[_0x53a5('0xa0')][_0x53a5('0x2e')]({'where':{'VoiceQueueId':_0x264228['id'],'UserId':_0xe8b2c7['id']},'transaction':_0x4f5f9b});});return Promise[_0x53a5('0x80')](_0x2d53de);})[_0x53a5('0x1d')](function(){return db[_0x53a5('0x117')][_0x53a5('0x81')]({'where':{'teamId':{'$in':_0x496bcd}}});})[_0x53a5('0x1d')](function(_0x3f0ada){var _0x599893=_[_0x53a5('0x28')](_0x3f0ada,function(_0x2c76ec){return db[_0x53a5('0x118')]['destroy']({'where':{'UserId':_0xe8b2c7['id'],'VoicePrefixId':_0x2c76ec['VoicePrefixId']}},{'transaction':_0x4f5f9b});});return Promise[_0x53a5('0x80')](_0x599893);});});})[_0x53a5('0x1d')](function(){for(var _0x267a66=0x0;_0x267a66<_0xf99341[_0x53a5('0x43')];_0x267a66++){var _0x49e1db=_0xf99341[_0x267a66]['getDataValue'](_0x53a5('0x93'));var _0x4a06f7=_0x49e1db+_0x53a5('0x9d');socket[_0x53a5('0x1f')](_0x53a5('0x22')+_0x49e1db+_0x53a5('0xa7'),{'UserId':_0x2f11b5,['queueField']:_0xf99341[_0x267a66]['id']});}})[_0x53a5('0x1d')](respondWithStatusCode(_0x401fe2,null))[_0x53a5('0x49')](APIHandleError(_0x401fe2));};exports['getLists']=function(_0x25a86e,_0x328814){var _0x39741b={};var _0x1fa491={};var _0x2a086f;var _0x101c87;return db['User']['findOne']({'where':{'id':_0x25a86e[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x328814,null))[_0x53a5('0x1d')](function(_0xa37b2c){if(_0xa37b2c){_0x2a086f=_0xa37b2c;_0x1fa491['model']=_[_0x53a5('0xc6')](db[_0x53a5('0x11e')]['rawAttributes']);_0x1fa491[_0x53a5('0x3c')]=_['keys'](_0x25a86e[_0x53a5('0x3c')]);_0x1fa491[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x1fa491[_0x53a5('0xc5')],_0x1fa491[_0x53a5('0x3c')]);_0x39741b[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x1fa491['model'],qs['fields'](_0x25a86e[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x39741b[_0x53a5('0x40')]=_0x39741b['attributes'][_0x53a5('0x43')]?_0x39741b[_0x53a5('0x40')]:_0x1fa491[_0x53a5('0xc5')];_0x39741b['order']=qs[_0x53a5('0xc9')](_0x25a86e[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x39741b['where']=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x25a86e[_0x53a5('0x3c')],_0x1fa491[_0x53a5('0xca')]));if(_0x25a86e[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x39741b[_0x53a5('0x3b')]=_['merge'](_0x39741b[_0x53a5('0x3b')],{'$or':_['map'](_0x39741b[_0x53a5('0x40')],function(_0x93ba71){var _0x50fd9e={};_0x50fd9e[_0x93ba71]={'$like':'%'+_0x25a86e[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x50fd9e;})});}_0x39741b=_['merge']({},_0x39741b,_0x25a86e[_0x53a5('0xd0')]);return _0x2a086f['getLists'](_0x39741b);}})[_0x53a5('0x1d')](function(_0x5875e5){if(_0x5875e5){_0x101c87=_0x5875e5[_0x53a5('0x43')];if(!_0x25a86e[_0x53a5('0x3c')]['hasOwnProperty'](_0x53a5('0xce'))){_0x39741b[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0x25a86e['query'][_0x53a5('0x18')]);_0x39741b['offset']=qs[_0x53a5('0x16')](_0x25a86e['query'][_0x53a5('0x16')]);}return _0x2a086f[_0x53a5('0x11f')](_0x39741b);}})[_0x53a5('0x1d')](function(_0x72bef6){if(_0x72bef6){return _0x72bef6?{'count':_0x101c87,'rows':_0x72bef6}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x328814,null))[_0x53a5('0x49')](handleError(_0x328814,null));};exports['getAgents']=function(_0x22c1ca,_0x202e9f){var _0x54a8d1={};var _0x312be7={};var _0x322a68;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x22c1ca[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x202e9f,null))[_0x53a5('0x1d')](function(_0x17ff70){if(_0x17ff70){_0x322a68=_0x17ff70;_0x312be7[_0x53a5('0xc5')]=_[_0x53a5('0xc6')](db[_0x53a5('0x32')][_0x53a5('0x33')]);_0x312be7['query']=_['keys'](_0x22c1ca[_0x53a5('0x3c')]);_0x312be7[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x312be7[_0x53a5('0xc5')],_0x312be7[_0x53a5('0x3c')]);_0x54a8d1[_0x53a5('0x40')]=_['intersection'](_0x312be7['model'],qs['fields'](_0x22c1ca[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x54a8d1[_0x53a5('0x40')]=_0x54a8d1[_0x53a5('0x40')][_0x53a5('0x43')]?_0x54a8d1[_0x53a5('0x40')]:_0x312be7[_0x53a5('0xc5')];_0x54a8d1[_0x53a5('0xd3')]=qs['sort'](_0x22c1ca[_0x53a5('0x3c')]['sort']);_0x54a8d1[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x22c1ca[_0x53a5('0x3c')],_0x312be7[_0x53a5('0xca')]));if(_0x22c1ca['query'][_0x53a5('0x26')]){_0x54a8d1[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x54a8d1[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x54a8d1[_0x53a5('0x40')],function(_0x10145d){var _0x21b67c={};_0x21b67c[_0x10145d]={'$like':'%'+_0x22c1ca[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x21b67c;})});}_0x54a8d1[_0x53a5('0xc5')]=db[_0x53a5('0x32')];_0x54a8d1['as']=_0x53a5('0x23');_0x54a8d1=_[_0x53a5('0x4c')]({},_0x54a8d1,_0x22c1ca[_0x53a5('0xd0')]);return _0x322a68[_0x53a5('0xf3')]({'include':[_0x54a8d1]});}})[_0x53a5('0x1d')](function(_0x287884){if(_0x287884){var _0x28c25c={},_0x31ef4e=[];for(var _0x4e23d9=0x0;_0x4e23d9<_0x287884[_0x53a5('0x43')];_0x4e23d9+=0x1){for(var _0x330263=0x0,_0x4bbead;_0x330263<_0x287884[_0x4e23d9]['Agents'][_0x53a5('0x43')];_0x330263+=0x1){_0x4bbead=_0x287884[_0x4e23d9][_0x53a5('0x23')][_0x330263][_0x53a5('0x20')]({'plain':!![]});_0x28c25c[_0x4bbead['id']]=_0x4bbead;}}_0x28c25c=_[_0x53a5('0x120')](_0x28c25c);for(var _0x366790=qs['offset'](_0x22c1ca[_0x53a5('0x3c')]['offset']);_0x366790<_0x28c25c[_0x53a5('0x43')]&&_0x31ef4e['length']<qs[_0x53a5('0x18')](_0x22c1ca[_0x53a5('0x3c')][_0x53a5('0x18')]);_0x366790+=0x1){if(_0x28c25c[_0x366790]){_0x31ef4e[_0x53a5('0x41')](_0x28c25c[_0x366790]);}}return{'count':_0x28c25c[_0x53a5('0x43')],'rows':_0x31ef4e};}})[_0x53a5('0x1d')](respondWithResult(_0x202e9f,null))[_0x53a5('0x49')](handleError(_0x202e9f,null));};exports[_0x53a5('0x2e')]=function(_0x273ab4,_0x3b8d1b){if(_0x273ab4[_0x53a5('0x22')]['id']==_0x273ab4[_0x53a5('0x4a')]['id']){return _0x3b8d1b[_0x53a5('0x13')](0x1f4)[_0x53a5('0x121')]({'message':_0x53a5('0x122')});}return db['User'][_0x53a5('0x2b')]({'where':{'id':_0x273ab4[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x3b8d1b,null))[_0x53a5('0x1d')](removeEntity(_0x3b8d1b,null))[_0x53a5('0x49')](handleError(_0x3b8d1b,null));};exports['addChatInteractions']=function(_0x383a83,_0x4df413){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x383a83[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x4df413,null))[_0x53a5('0x1d')](function(_0x24c865){if(_0x24c865){return _0x24c865[_0x53a5('0x123')](_0x383a83[_0x53a5('0x50')][_0x53a5('0x52')],_[_0x53a5('0x53')](_0x383a83[_0x53a5('0x50')],[_0x53a5('0x52'),'id'])||{})['spread'](function(){for(var _0x5db87f=0x0;_0x5db87f<_0x383a83[_0x53a5('0x50')][_0x53a5('0x52')][_0x53a5('0x43')];_0x5db87f+=0x1){socket[_0x53a5('0x1f')](_0x53a5('0x124'),{'ChatInteractionId':Number(_0x383a83['body'][_0x53a5('0x52')][_0x5db87f]),'UserId':Number(_0x383a83['params']['id'])});}return _0x383a83[_0x53a5('0x50')][_0x53a5('0x52')];});}})['then'](respondWithResult(_0x4df413,null))[_0x53a5('0x49')](handleError(_0x4df413,null));};exports[_0x53a5('0x125')]=function(_0x3ca96e,_0x14231b){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x3ca96e[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x14231b,null))[_0x53a5('0x1d')](function(_0x35a279){if(_0x35a279){return _0x35a279[_0x53a5('0x125')](_0x3ca96e[_0x53a5('0x3c')][_0x53a5('0x52')])[_0x53a5('0x1d')](function(){if(_[_0x53a5('0xa6')](_0x3ca96e[_0x53a5('0x3c')][_0x53a5('0x52')])){for(var _0x2422cf=0x0;_0x2422cf<_0x3ca96e['query']['ids'][_0x53a5('0x43')];_0x2422cf+=0x1){socket['emit'](_0x53a5('0x126'),{'ChatInteractionId':Number(_0x3ca96e['query']['ids'][_0x2422cf]),'UserId':Number(_0x3ca96e[_0x53a5('0x4a')]['id'])});}}else{socket[_0x53a5('0x1f')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x3ca96e[_0x53a5('0x3c')][_0x53a5('0x52')]),'UserId':Number(_0x3ca96e['params']['id'])});}});}})[_0x53a5('0x1d')](respondWithStatusCode(_0x14231b,null))[_0x53a5('0x49')](handleError(_0x14231b,null));};exports[_0x53a5('0x127')]=function(_0x2467da,_0x55e2c1){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x2467da[_0x53a5('0x4a')]['id']}})['then'](handleEntityNotFound(_0x55e2c1,null))[_0x53a5('0x1d')](function(_0x24bb58){if(_0x24bb58){return _0x24bb58[_0x53a5('0x127')](_0x2467da[_0x53a5('0x50')]['ids'],_['omit'](_0x2467da['body'],[_0x53a5('0x52'),'id'])||{})[_0x53a5('0x9c')](function(){for(var _0x5852e4=0x0;_0x5852e4<_0x2467da['body']['ids']['length'];_0x5852e4+=0x1){socket[_0x53a5('0x1f')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x2467da['body'][_0x53a5('0x52')][_0x5852e4]),'UserId':Number(_0x2467da[_0x53a5('0x4a')]['id'])});}return _0x2467da[_0x53a5('0x50')][_0x53a5('0x52')];});}})['then'](respondWithResult(_0x55e2c1,null))[_0x53a5('0x49')](handleError(_0x55e2c1,null));};exports['removeMailInteractions']=function(_0x59e522,_0x181fde){return db[_0x53a5('0x32')]['find']({'where':{'id':_0x59e522[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x181fde,null))[_0x53a5('0x1d')](function(_0x265363){if(_0x265363){return _0x265363['removeMailInteractions'](_0x59e522[_0x53a5('0x3c')][_0x53a5('0x52')])['then'](function(){if(_[_0x53a5('0xa6')](_0x59e522[_0x53a5('0x3c')][_0x53a5('0x52')])){for(var _0x4bee2e=0x0;_0x4bee2e<_0x59e522[_0x53a5('0x3c')][_0x53a5('0x52')][_0x53a5('0x43')];_0x4bee2e+=0x1){socket['emit'](_0x53a5('0x128'),{'MailInteractionId':Number(_0x59e522[_0x53a5('0x3c')][_0x53a5('0x52')][_0x4bee2e]),'UserId':Number(_0x59e522[_0x53a5('0x4a')]['id'])});}}else{socket[_0x53a5('0x1f')](_0x53a5('0x128'),{'MailInteractionId':Number(_0x59e522['query'][_0x53a5('0x52')]),'UserId':Number(_0x59e522[_0x53a5('0x4a')]['id'])});}});}})['then'](respondWithStatusCode(_0x181fde,null))[_0x53a5('0x49')](handleError(_0x181fde,null));};exports['addFaxInteractions']=function(_0x94d33a,_0x5cfc6f){return db['User'][_0x53a5('0x2b')]({'where':{'id':_0x94d33a[_0x53a5('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5cfc6f,null))[_0x53a5('0x1d')](function(_0x5efe18){if(_0x5efe18){return _0x5efe18[_0x53a5('0x129')](_0x94d33a[_0x53a5('0x50')][_0x53a5('0x52')],_[_0x53a5('0x53')](_0x94d33a[_0x53a5('0x50')],[_0x53a5('0x52'),'id'])||{})[_0x53a5('0x9c')](function(){for(var _0x1fdf17=0x0;_0x1fdf17<_0x94d33a[_0x53a5('0x50')]['ids']['length'];_0x1fdf17+=0x1){socket['emit'](_0x53a5('0x12a'),{'FaxInteractionId':Number(_0x94d33a[_0x53a5('0x50')][_0x53a5('0x52')][_0x1fdf17]),'UserId':Number(_0x94d33a['params']['id'])});}return _0x94d33a[_0x53a5('0x50')][_0x53a5('0x52')];});}})['then'](respondWithResult(_0x5cfc6f,null))[_0x53a5('0x49')](handleError(_0x5cfc6f,null));};exports[_0x53a5('0x12b')]=function(_0x5166a7,_0x2f92d2){return db[_0x53a5('0x32')]['find']({'where':{'id':_0x5166a7[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x2f92d2,null))[_0x53a5('0x1d')](function(_0x3c7bdc){if(_0x3c7bdc){return _0x3c7bdc['removeFaxInteractions'](_0x5166a7['query']['ids'])[_0x53a5('0x1d')](function(){if(_[_0x53a5('0xa6')](_0x5166a7[_0x53a5('0x3c')][_0x53a5('0x52')])){for(var _0x1bcbc1=0x0;_0x1bcbc1<_0x5166a7['query'][_0x53a5('0x52')]['length'];_0x1bcbc1+=0x1){socket['emit'](_0x53a5('0x12c'),{'FaxInteractionId':Number(_0x5166a7['query'][_0x53a5('0x52')][_0x1bcbc1]),'UserId':Number(_0x5166a7[_0x53a5('0x4a')]['id'])});}}else{socket[_0x53a5('0x1f')](_0x53a5('0x12c'),{'FaxInteractionId':Number(_0x5166a7[_0x53a5('0x3c')][_0x53a5('0x52')]),'UserId':Number(_0x5166a7[_0x53a5('0x4a')]['id'])});}});}})[_0x53a5('0x1d')](respondWithStatusCode(_0x2f92d2,null))[_0x53a5('0x49')](handleError(_0x2f92d2,null));};exports[_0x53a5('0x12d')]=function(_0x147bc6,_0x2fecd1){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x147bc6['params']['id']}})['then'](handleEntityNotFound(_0x2fecd1,null))[_0x53a5('0x1d')](function(_0x5b8300){if(_0x5b8300){return _0x5b8300[_0x53a5('0x12d')](_0x147bc6[_0x53a5('0x50')][_0x53a5('0x52')],_[_0x53a5('0x53')](_0x147bc6[_0x53a5('0x50')],[_0x53a5('0x52'),'id'])||{})[_0x53a5('0x9c')](function(){for(var _0x412ea6=0x0;_0x412ea6<_0x147bc6['body'][_0x53a5('0x52')][_0x53a5('0x43')];_0x412ea6+=0x1){socket[_0x53a5('0x1f')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x147bc6[_0x53a5('0x50')][_0x53a5('0x52')][_0x412ea6]),'UserId':Number(_0x147bc6[_0x53a5('0x4a')]['id'])});}return _0x147bc6['body']['ids'];});}})[_0x53a5('0x1d')](respondWithResult(_0x2fecd1,null))[_0x53a5('0x49')](handleError(_0x2fecd1,null));};exports['removeSmsInteractions']=function(_0x53cedc,_0x2f0644){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x53cedc[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x2f0644,null))[_0x53a5('0x1d')](function(_0x4ae71e){if(_0x4ae71e){return _0x4ae71e[_0x53a5('0x12e')](_0x53cedc[_0x53a5('0x3c')][_0x53a5('0x52')])[_0x53a5('0x1d')](function(){if(_[_0x53a5('0xa6')](_0x53cedc['query']['ids'])){for(var _0xbc9475=0x0;_0xbc9475<_0x53cedc[_0x53a5('0x3c')]['ids']['length'];_0xbc9475+=0x1){socket[_0x53a5('0x1f')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x53cedc['query'][_0x53a5('0x52')][_0xbc9475]),'UserId':Number(_0x53cedc[_0x53a5('0x4a')]['id'])});}}else{socket[_0x53a5('0x1f')](_0x53a5('0x12f'),{'SmsInteractionId':Number(_0x53cedc[_0x53a5('0x3c')][_0x53a5('0x52')]),'UserId':Number(_0x53cedc[_0x53a5('0x4a')]['id'])});}});}})[_0x53a5('0x1d')](respondWithStatusCode(_0x2f0644,null))[_0x53a5('0x49')](handleError(_0x2f0644,null));};exports['addOpenchannelInteractions']=function(_0x9fb351,_0x2fb3d0){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x9fb351[_0x53a5('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2fb3d0,null))[_0x53a5('0x1d')](function(_0x5e9195){if(_0x5e9195){return _0x5e9195['addOpenchannelInteractions'](_0x9fb351[_0x53a5('0x50')][_0x53a5('0x52')],_['omit'](_0x9fb351[_0x53a5('0x50')],['ids','id'])||{})['spread'](function(){for(var _0x22ddc6=0x0;_0x22ddc6<_0x9fb351[_0x53a5('0x50')][_0x53a5('0x52')][_0x53a5('0x43')];_0x22ddc6+=0x1){socket[_0x53a5('0x1f')](_0x53a5('0x130'),{'OpenchannelInteractionId':Number(_0x9fb351[_0x53a5('0x50')][_0x53a5('0x52')][_0x22ddc6]),'UserId':Number(_0x9fb351['params']['id'])});}return _0x9fb351['body'][_0x53a5('0x52')];});}})['then'](respondWithResult(_0x2fb3d0,null))[_0x53a5('0x49')](handleError(_0x2fb3d0,null));};exports[_0x53a5('0x131')]=function(_0xd5e29d,_0x2295d0){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0xd5e29d[_0x53a5('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2295d0,null))[_0x53a5('0x1d')](function(_0x13cd83){if(_0x13cd83){return _0x13cd83[_0x53a5('0x131')](_0xd5e29d['query']['ids'])[_0x53a5('0x1d')](function(){if(_[_0x53a5('0xa6')](_0xd5e29d[_0x53a5('0x3c')][_0x53a5('0x52')])){for(var _0x395106=0x0;_0x395106<_0xd5e29d[_0x53a5('0x3c')][_0x53a5('0x52')][_0x53a5('0x43')];_0x395106+=0x1){socket[_0x53a5('0x1f')](_0x53a5('0x132'),{'OpenchannelInteractionId':Number(_0xd5e29d[_0x53a5('0x3c')][_0x53a5('0x52')][_0x395106]),'UserId':Number(_0xd5e29d[_0x53a5('0x4a')]['id'])});}}else{socket[_0x53a5('0x1f')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0xd5e29d[_0x53a5('0x3c')]['ids']),'UserId':Number(_0xd5e29d['params']['id'])});}});}})[_0x53a5('0x1d')](respondWithStatusCode(_0x2295d0,null))[_0x53a5('0x49')](handleError(_0x2295d0,null));};exports[_0x53a5('0x133')]=function(_0xc5a338,_0x5828ec){return db['User']['find']({'where':{'id':_0xc5a338[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x5828ec,null))[_0x53a5('0x1d')](function(_0x4e7a87){if(_0x4e7a87){return _0x4e7a87['addWhatsappInteractions'](_0xc5a338[_0x53a5('0x50')][_0x53a5('0x52')],_['omit'](_0xc5a338[_0x53a5('0x50')],[_0x53a5('0x52'),'id'])||{})[_0x53a5('0x9c')](function(){for(var _0x1ed74b=0x0;_0x1ed74b<_0xc5a338[_0x53a5('0x50')]['ids'][_0x53a5('0x43')];_0x1ed74b+=0x1){socket['emit']('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0xc5a338['body'][_0x53a5('0x52')][_0x1ed74b]),'UserId':Number(_0xc5a338[_0x53a5('0x4a')]['id'])});}return _0xc5a338[_0x53a5('0x50')]['ids'];});}})[_0x53a5('0x1d')](respondWithResult(_0x5828ec,null))[_0x53a5('0x49')](handleError(_0x5828ec,null));};exports['removeWhatsappInteractions']=function(_0x4692fb,_0x17c96c){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x4692fb['params']['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x17c96c,null))[_0x53a5('0x1d')](function(_0x1f8786){if(_0x1f8786){return _0x1f8786['removeWhatsappInteractions'](_0x4692fb[_0x53a5('0x3c')][_0x53a5('0x52')]);}})['then'](respondWithStatusCode(_0x17c96c,null))[_0x53a5('0x49')](handleError(_0x17c96c,null));};exports[_0x53a5('0x134')]=function(_0x4a8402,_0x5056b1){var _0x2278aa={};var _0x2c1720={};var _0x3bde1d;var _0x2d645e;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x4a8402[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x5056b1,null))[_0x53a5('0x1d')](function(_0x4b9e8e){if(_0x4b9e8e){_0x3bde1d=_0x4b9e8e;_0x2c1720[_0x53a5('0xc5')]=_['keys'](db[_0x53a5('0x135')][_0x53a5('0x33')]);_0x2c1720['query']=_[_0x53a5('0xc6')](_0x4a8402[_0x53a5('0x3c')]);_0x2c1720[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x2c1720['model'],_0x2c1720[_0x53a5('0x3c')]);_0x2278aa[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x2c1720[_0x53a5('0xc5')],qs[_0x53a5('0xc8')](_0x4a8402[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x2278aa[_0x53a5('0x40')]=_0x2278aa[_0x53a5('0x40')]['length']?_0x2278aa['attributes']:_0x2c1720['model'];_0x2278aa[_0x53a5('0xd3')]=qs['sort'](_0x4a8402['query'][_0x53a5('0xc9')]);_0x2278aa[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_['pick'](_0x4a8402['query'],_0x2c1720['filters']));if(_0x4a8402[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x2278aa['where']=_[_0x53a5('0x4c')](_0x2278aa[_0x53a5('0x3b')],{'$or':_['map'](_0x2278aa[_0x53a5('0x40')],function(_0x16544d){var _0x1a811b={};_0x1a811b[_0x16544d]={'$like':'%'+_0x4a8402[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x1a811b;})});}_0x2278aa=_[_0x53a5('0x4c')]({},_0x2278aa,_0x4a8402['options']);return _0x3bde1d['getVoicePrefixes'](_0x2278aa);}})[_0x53a5('0x1d')](function(_0x1eacc4){if(_0x1eacc4){_0x2d645e=_0x1eacc4[_0x53a5('0x43')];if(!_0x4a8402[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x2278aa[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0x4a8402[_0x53a5('0x3c')][_0x53a5('0x18')]);_0x2278aa['offset']=qs['offset'](_0x4a8402[_0x53a5('0x3c')][_0x53a5('0x16')]);}return _0x3bde1d[_0x53a5('0x134')](_0x2278aa);}})[_0x53a5('0x1d')](function(_0x3c87b7){if(_0x3c87b7){return _0x3c87b7?{'count':_0x2d645e,'rows':_0x3c87b7}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x5056b1,null))['catch'](handleError(_0x5056b1,null));};exports[_0x53a5('0x136')]=function(_0xd0026c,_0x50d396){var _0x59c9e5={};var _0x2d425c={};var _0x25e3f4;var _0x53e71c;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0xd0026c['params']['id']}})['then'](handleEntityNotFound(_0x50d396,null))[_0x53a5('0x1d')](function(_0x19cba0){if(_0x19cba0){_0x25e3f4=_0x19cba0;_0x2d425c['model']=_[_0x53a5('0xc6')](db[_0x53a5('0x137')][_0x53a5('0x33')]);_0x2d425c['query']=_[_0x53a5('0xc6')](_0xd0026c['query']);_0x2d425c['filters']=_[_0x53a5('0xc7')](_0x2d425c[_0x53a5('0xc5')],_0x2d425c[_0x53a5('0x3c')]);_0x59c9e5[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x2d425c['model'],qs[_0x53a5('0xc8')](_0xd0026c[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x59c9e5[_0x53a5('0x40')]=_0x59c9e5[_0x53a5('0x40')][_0x53a5('0x43')]?_0x59c9e5[_0x53a5('0x40')]:_0x2d425c[_0x53a5('0xc5')];_0x59c9e5[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0xd0026c[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x59c9e5[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_['pick'](_0xd0026c[_0x53a5('0x3c')],_0x2d425c['filters']));if(_0xd0026c[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x59c9e5[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x59c9e5[_0x53a5('0x3b')],{'$or':_['map'](_0x59c9e5[_0x53a5('0x40')],function(_0x36db12){var _0x4d61c3={};_0x4d61c3[_0x36db12]={'$like':'%'+_0xd0026c[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x4d61c3;})});}_0x59c9e5=_['merge']({},_0x59c9e5,_0xd0026c['options']);return _0x25e3f4[_0x53a5('0x136')](_0x59c9e5);}})[_0x53a5('0x1d')](function(_0xce03c5){if(_0xce03c5){_0x53e71c=_0xce03c5[_0x53a5('0x43')];if(!_0xd0026c[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x59c9e5[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0xd0026c[_0x53a5('0x3c')][_0x53a5('0x18')]);_0x59c9e5[_0x53a5('0x16')]=qs[_0x53a5('0x16')](_0xd0026c[_0x53a5('0x3c')]['offset']);}return _0x25e3f4[_0x53a5('0x136')](_0x59c9e5);}})['then'](function(_0x2b9c59){if(_0x2b9c59){return _0x2b9c59?{'count':_0x53e71c,'rows':_0x2b9c59}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x50d396,null))[_0x53a5('0x49')](handleError(_0x50d396,null));};exports['addFaxAccounts']=function(_0x1ebf4b,_0x3565eb){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x1ebf4b[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x3565eb,null))[_0x53a5('0x1d')](function(_0x7dabaa){if(_0x7dabaa){return _0x7dabaa[_0x53a5('0x138')](_0x1ebf4b['body'][_0x53a5('0x52')],_[_0x53a5('0x53')](_0x1ebf4b[_0x53a5('0x50')],[_0x53a5('0x52'),'id'])||{});}})['then'](respondWithResult(_0x3565eb,null))[_0x53a5('0x49')](handleError(_0x3565eb,null));};exports['removeFaxAccounts']=function(_0x18b26f,_0x3498db){return db['User']['find']({'where':{'id':_0x18b26f['params']['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x3498db,null))['then'](function(_0x35ff4e){if(_0x35ff4e){return _0x35ff4e[_0x53a5('0x139')](_0x18b26f[_0x53a5('0x3c')][_0x53a5('0x52')]);}})[_0x53a5('0x1d')](respondWithStatusCode(_0x3498db,null))[_0x53a5('0x49')](handleError(_0x3498db,null));};exports[_0x53a5('0x13a')]=function(_0x31e8fc,_0x29bb4c){var _0x521de4={};var _0x5179dc={};var _0x5b9625;var _0x4dde8f;return db[_0x53a5('0x32')]['findOne']({'where':{'id':_0x31e8fc[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x29bb4c,null))[_0x53a5('0x1d')](function(_0x2dfd64){if(_0x2dfd64){_0x5b9625=_0x2dfd64;_0x5179dc['model']=_['keys'](db[_0x53a5('0x13b')][_0x53a5('0x33')]);_0x5179dc['query']=_['keys'](_0x31e8fc[_0x53a5('0x3c')]);_0x5179dc['filters']=_[_0x53a5('0xc7')](_0x5179dc['model'],_0x5179dc[_0x53a5('0x3c')]);_0x521de4[_0x53a5('0x40')]=_['intersection'](_0x5179dc['model'],qs[_0x53a5('0xc8')](_0x31e8fc[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x521de4[_0x53a5('0x40')]=_0x521de4[_0x53a5('0x40')][_0x53a5('0x43')]?_0x521de4[_0x53a5('0x40')]:_0x5179dc[_0x53a5('0xc5')];_0x521de4[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0x31e8fc['query']['sort']);_0x521de4[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_['pick'](_0x31e8fc[_0x53a5('0x3c')],_0x5179dc[_0x53a5('0xca')]));if(_0x31e8fc[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x521de4[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x521de4[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x521de4[_0x53a5('0x40')],function(_0xd9ea5e){var _0x11f3f5={};_0x11f3f5[_0xd9ea5e]={'$like':'%'+_0x31e8fc[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x11f3f5;})});}_0x521de4=_['merge']({},_0x521de4,_0x31e8fc['options']);return _0x5b9625[_0x53a5('0x13a')](_0x521de4);}})[_0x53a5('0x1d')](function(_0x2d8f2e){if(_0x2d8f2e){_0x4dde8f=_0x2d8f2e['length'];if(!_0x31e8fc[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x521de4['limit']=qs['limit'](_0x31e8fc['query'][_0x53a5('0x18')]);_0x521de4[_0x53a5('0x16')]=qs['offset'](_0x31e8fc[_0x53a5('0x3c')][_0x53a5('0x16')]);}return _0x5b9625['getMailAccounts'](_0x521de4);}})[_0x53a5('0x1d')](function(_0x4c3c03){if(_0x4c3c03){return _0x4c3c03?{'count':_0x4dde8f,'rows':_0x4c3c03}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x29bb4c,null))[_0x53a5('0x49')](handleError(_0x29bb4c,null));};exports[_0x53a5('0x13c')]=function(_0x2b14de,_0x36c733){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x2b14de['params']['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x36c733,null))[_0x53a5('0x1d')](function(_0x552a18){if(_0x552a18){return _0x552a18[_0x53a5('0x13c')](_0x2b14de[_0x53a5('0x50')]['ids'],_[_0x53a5('0x53')](_0x2b14de['body'],[_0x53a5('0x52'),'id'])||{});}})['then'](respondWithResult(_0x36c733,null))['catch'](handleError(_0x36c733,null));};exports['removeMailAccounts']=function(_0x60e1bb,_0x4902de){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x60e1bb[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x4902de,null))['then'](function(_0x18569d){if(_0x18569d){return _0x18569d[_0x53a5('0x13d')](_0x60e1bb['query'][_0x53a5('0x52')]);}})[_0x53a5('0x1d')](respondWithStatusCode(_0x4902de,null))[_0x53a5('0x49')](handleError(_0x4902de,null));};exports['getOpenchannelAccounts']=function(_0x1858fd,_0x3d6684){var _0x1d4eb7={};var _0x40ccdf={};var _0x3604a1;var _0x445a16;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x1858fd[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x3d6684,null))[_0x53a5('0x1d')](function(_0x141c30){if(_0x141c30){_0x3604a1=_0x141c30;_0x40ccdf[_0x53a5('0xc5')]=_[_0x53a5('0xc6')](db[_0x53a5('0x13e')][_0x53a5('0x33')]);_0x40ccdf[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0x1858fd[_0x53a5('0x3c')]);_0x40ccdf['filters']=_[_0x53a5('0xc7')](_0x40ccdf[_0x53a5('0xc5')],_0x40ccdf[_0x53a5('0x3c')]);_0x1d4eb7['attributes']=_['intersection'](_0x40ccdf[_0x53a5('0xc5')],qs[_0x53a5('0xc8')](_0x1858fd['query'][_0x53a5('0xc8')]));_0x1d4eb7[_0x53a5('0x40')]=_0x1d4eb7[_0x53a5('0x40')]['length']?_0x1d4eb7[_0x53a5('0x40')]:_0x40ccdf[_0x53a5('0xc5')];_0x1d4eb7['order']=qs[_0x53a5('0xc9')](_0x1858fd[_0x53a5('0x3c')]['sort']);_0x1d4eb7['where']=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x1858fd['query'],_0x40ccdf[_0x53a5('0xca')]));if(_0x1858fd[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x1d4eb7[_0x53a5('0x3b')]=_['merge'](_0x1d4eb7[_0x53a5('0x3b')],{'$or':_['map'](_0x1d4eb7[_0x53a5('0x40')],function(_0x27f6e5){var _0x22366a={};_0x22366a[_0x27f6e5]={'$like':'%'+_0x1858fd[_0x53a5('0x3c')]['filter']+'%'};return _0x22366a;})});}_0x1d4eb7=_[_0x53a5('0x4c')]({},_0x1d4eb7,_0x1858fd[_0x53a5('0xd0')]);return _0x3604a1['getOpenchannelAccounts'](_0x1d4eb7);}})[_0x53a5('0x1d')](function(_0x331b6e){if(_0x331b6e){_0x445a16=_0x331b6e[_0x53a5('0x43')];if(!_0x1858fd[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x1d4eb7[_0x53a5('0x18')]=qs['limit'](_0x1858fd[_0x53a5('0x3c')]['limit']);_0x1d4eb7['offset']=qs[_0x53a5('0x16')](_0x1858fd['query'][_0x53a5('0x16')]);}return _0x3604a1[_0x53a5('0x13f')](_0x1d4eb7);}})['then'](function(_0x2de07f){if(_0x2de07f){return _0x2de07f?{'count':_0x445a16,'rows':_0x2de07f}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x3d6684,null))[_0x53a5('0x49')](handleError(_0x3d6684,null));};exports[_0x53a5('0x140')]=function(_0x1791d6,_0x7428b){return db[_0x53a5('0x32')]['find']({'where':{'id':_0x1791d6[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x7428b,null))[_0x53a5('0x1d')](function(_0x3a8365){if(_0x3a8365){return _0x3a8365[_0x53a5('0x140')](_0x1791d6[_0x53a5('0x50')][_0x53a5('0x52')],_[_0x53a5('0x53')](_0x1791d6[_0x53a5('0x50')],['ids','id'])||{});}})['then'](respondWithResult(_0x7428b,null))[_0x53a5('0x49')](handleError(_0x7428b,null));};exports[_0x53a5('0x141')]=function(_0x10bfab,_0x4e1a58){return db['User']['find']({'where':{'id':_0x10bfab['params']['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x4e1a58,null))[_0x53a5('0x1d')](function(_0x17a170){if(_0x17a170){return _0x17a170[_0x53a5('0x141')](_0x10bfab[_0x53a5('0x3c')][_0x53a5('0x52')]);}})[_0x53a5('0x1d')](respondWithStatusCode(_0x4e1a58,null))[_0x53a5('0x49')](handleError(_0x4e1a58,null));};exports['getSmsAccounts']=function(_0x1a7af3,_0x2b3c02){var _0x5035d5={};var _0x142d11={};var _0x41dfb8;var _0x2027a7;return db['User'][_0x53a5('0x8f')]({'where':{'id':_0x1a7af3[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x2b3c02,null))[_0x53a5('0x1d')](function(_0x3f9235){if(_0x3f9235){_0x41dfb8=_0x3f9235;_0x142d11[_0x53a5('0xc5')]=_['keys'](db['SmsAccount'][_0x53a5('0x33')]);_0x142d11[_0x53a5('0x3c')]=_[_0x53a5('0xc6')](_0x1a7af3['query']);_0x142d11[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x142d11[_0x53a5('0xc5')],_0x142d11[_0x53a5('0x3c')]);_0x5035d5[_0x53a5('0x40')]=_['intersection'](_0x142d11['model'],qs[_0x53a5('0xc8')](_0x1a7af3['query'][_0x53a5('0xc8')]));_0x5035d5[_0x53a5('0x40')]=_0x5035d5['attributes'][_0x53a5('0x43')]?_0x5035d5[_0x53a5('0x40')]:_0x142d11[_0x53a5('0xc5')];_0x5035d5[_0x53a5('0xd3')]=qs['sort'](_0x1a7af3[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x5035d5['where']=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x1a7af3[_0x53a5('0x3c')],_0x142d11[_0x53a5('0xca')]));if(_0x1a7af3['query'][_0x53a5('0x26')]){_0x5035d5[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x5035d5[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x5035d5[_0x53a5('0x40')],function(_0x42b5ec){var _0x1f0408={};_0x1f0408[_0x42b5ec]={'$like':'%'+_0x1a7af3[_0x53a5('0x3c')][_0x53a5('0x26')]+'%'};return _0x1f0408;})});}_0x5035d5=_[_0x53a5('0x4c')]({},_0x5035d5,_0x1a7af3[_0x53a5('0xd0')]);return _0x41dfb8['getSmsAccounts'](_0x5035d5);}})['then'](function(_0x242c93){if(_0x242c93){_0x2027a7=_0x242c93[_0x53a5('0x43')];if(!_0x1a7af3[_0x53a5('0x3c')]['hasOwnProperty'](_0x53a5('0xce'))){_0x5035d5['limit']=qs[_0x53a5('0x18')](_0x1a7af3[_0x53a5('0x3c')][_0x53a5('0x18')]);_0x5035d5[_0x53a5('0x16')]=qs[_0x53a5('0x16')](_0x1a7af3[_0x53a5('0x3c')][_0x53a5('0x16')]);}return _0x41dfb8[_0x53a5('0x142')](_0x5035d5);}})[_0x53a5('0x1d')](function(_0x5a0b64){if(_0x5a0b64){return _0x5a0b64?{'count':_0x2027a7,'rows':_0x5a0b64}:null;}})['then'](respondWithResult(_0x2b3c02,null))['catch'](handleError(_0x2b3c02,null));};exports['addSmsAccounts']=function(_0x3b926b,_0x5423da){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x3b926b['params']['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x5423da,null))[_0x53a5('0x1d')](function(_0x2c8050){if(_0x2c8050){return _0x2c8050['addSmsAccounts'](_0x3b926b[_0x53a5('0x50')][_0x53a5('0x52')],_[_0x53a5('0x53')](_0x3b926b[_0x53a5('0x50')],[_0x53a5('0x52'),'id'])||{});}})['then'](respondWithResult(_0x5423da,null))[_0x53a5('0x49')](handleError(_0x5423da,null));};exports[_0x53a5('0x143')]=function(_0x35d35c,_0x5204b1){return db[_0x53a5('0x32')]['find']({'where':{'id':_0x35d35c[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x5204b1,null))[_0x53a5('0x1d')](function(_0x1aef27){if(_0x1aef27){return _0x1aef27[_0x53a5('0x143')](_0x35d35c[_0x53a5('0x3c')][_0x53a5('0x52')]);}})[_0x53a5('0x1d')](respondWithStatusCode(_0x5204b1,null))[_0x53a5('0x49')](handleError(_0x5204b1,null));};exports[_0x53a5('0x144')]=function(_0x5a0867,_0x110900){var _0x3834f3={};var _0x5b1d0d={};var _0x2d83bc;var _0x2811ae;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x5a0867['params']['id']}})['then'](handleEntityNotFound(_0x110900,null))[_0x53a5('0x1d')](function(_0x497b84){if(_0x497b84){_0x2d83bc=_0x497b84;_0x5b1d0d['model']=_[_0x53a5('0xc6')](db['ChatWebsite'][_0x53a5('0x33')]);_0x5b1d0d[_0x53a5('0x3c')]=_['keys'](_0x5a0867[_0x53a5('0x3c')]);_0x5b1d0d[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x5b1d0d[_0x53a5('0xc5')],_0x5b1d0d[_0x53a5('0x3c')]);_0x3834f3[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x5b1d0d[_0x53a5('0xc5')],qs[_0x53a5('0xc8')](_0x5a0867['query']['fields']));_0x3834f3['attributes']=_0x3834f3[_0x53a5('0x40')]['length']?_0x3834f3[_0x53a5('0x40')]:_0x5b1d0d[_0x53a5('0xc5')];_0x3834f3[_0x53a5('0xd3')]=qs[_0x53a5('0xc9')](_0x5a0867[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x3834f3['where']=qs['filters'](_[_0x53a5('0xcb')](_0x5a0867[_0x53a5('0x3c')],_0x5b1d0d[_0x53a5('0xca')]));if(_0x5a0867[_0x53a5('0x3c')]['filter']){_0x3834f3[_0x53a5('0x3b')]=_['merge'](_0x3834f3['where'],{'$or':_[_0x53a5('0x28')](_0x3834f3[_0x53a5('0x40')],function(_0xead4c4){var _0x2f0302={};_0x2f0302[_0xead4c4]={'$like':'%'+_0x5a0867[_0x53a5('0x3c')]['filter']+'%'};return _0x2f0302;})});}_0x3834f3=_['merge']({},_0x3834f3,_0x5a0867[_0x53a5('0xd0')]);return _0x2d83bc['getChatWebsites'](_0x3834f3);}})['then'](function(_0xc6cd08){if(_0xc6cd08){_0x2811ae=_0xc6cd08['length'];if(!_0x5a0867[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x3834f3['limit']=qs['limit'](_0x5a0867[_0x53a5('0x3c')][_0x53a5('0x18')]);_0x3834f3['offset']=qs[_0x53a5('0x16')](_0x5a0867[_0x53a5('0x3c')][_0x53a5('0x16')]);}return _0x2d83bc[_0x53a5('0x144')](_0x3834f3);}})[_0x53a5('0x1d')](function(_0x64d8f2){if(_0x64d8f2){return _0x64d8f2?{'count':_0x2811ae,'rows':_0x64d8f2}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x110900,null))[_0x53a5('0x49')](handleError(_0x110900,null));};exports[_0x53a5('0x145')]=function(_0x3d98df,_0x59d2d2){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x3d98df[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x59d2d2,null))[_0x53a5('0x1d')](function(_0x3589f9){if(_0x3589f9){return _0x3589f9[_0x53a5('0x145')](_0x3d98df[_0x53a5('0x50')][_0x53a5('0x52')],_[_0x53a5('0x53')](_0x3d98df[_0x53a5('0x50')],[_0x53a5('0x52'),'id'])||{});}})['then'](respondWithResult(_0x59d2d2,null))[_0x53a5('0x49')](handleError(_0x59d2d2,null));};exports['removeChatWebsites']=function(_0x17d5f3,_0x502823){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x17d5f3[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x502823,null))[_0x53a5('0x1d')](function(_0x4e2aef){if(_0x4e2aef){return _0x4e2aef[_0x53a5('0x146')](_0x17d5f3['query'][_0x53a5('0x52')]);}})[_0x53a5('0x1d')](respondWithStatusCode(_0x502823,null))[_0x53a5('0x49')](handleError(_0x502823,null));};exports[_0x53a5('0x147')]=function(_0x55d1a4,_0x2dda69){var _0x2f7e2c={};var _0x210826={};var _0x18e7ce;var _0x26dd3a;return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x55d1a4[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x2dda69,null))['then'](function(_0x605545){if(_0x605545){_0x18e7ce=_0x605545;_0x210826[_0x53a5('0xc5')]=_[_0x53a5('0xc6')](db[_0x53a5('0x148')][_0x53a5('0x33')]);_0x210826['query']=_['keys'](_0x55d1a4[_0x53a5('0x3c')]);_0x210826[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x210826['model'],_0x210826[_0x53a5('0x3c')]);_0x2f7e2c[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x210826[_0x53a5('0xc5')],qs[_0x53a5('0xc8')](_0x55d1a4[_0x53a5('0x3c')]['fields']));_0x2f7e2c[_0x53a5('0x40')]=_0x2f7e2c['attributes']['length']?_0x2f7e2c[_0x53a5('0x40')]:_0x210826[_0x53a5('0xc5')];_0x2f7e2c[_0x53a5('0xd3')]=qs['sort'](_0x55d1a4[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x2f7e2c[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x55d1a4['query'],_0x210826['filters']));if(_0x55d1a4[_0x53a5('0x3c')]['filter']){_0x2f7e2c[_0x53a5('0x3b')]=_[_0x53a5('0x4c')](_0x2f7e2c[_0x53a5('0x3b')],{'$or':_['map'](_0x2f7e2c[_0x53a5('0x40')],function(_0x1367c6){var _0x5c5e58={};_0x5c5e58[_0x1367c6]={'$like':'%'+_0x55d1a4[_0x53a5('0x3c')]['filter']+'%'};return _0x5c5e58;})});}_0x2f7e2c=_[_0x53a5('0x4c')]({},_0x2f7e2c,_0x55d1a4[_0x53a5('0xd0')]);return _0x18e7ce[_0x53a5('0x147')](_0x2f7e2c);}})['then'](function(_0x24745c){if(_0x24745c){_0x26dd3a=_0x24745c[_0x53a5('0x43')];if(!_0x55d1a4[_0x53a5('0x3c')][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x2f7e2c[_0x53a5('0x18')]=qs['limit'](_0x55d1a4[_0x53a5('0x3c')][_0x53a5('0x18')]);_0x2f7e2c[_0x53a5('0x16')]=qs[_0x53a5('0x16')](_0x55d1a4[_0x53a5('0x3c')][_0x53a5('0x16')]);}return _0x18e7ce[_0x53a5('0x147')](_0x2f7e2c);}})['then'](function(_0x357e37){if(_0x357e37){return _0x357e37?{'count':_0x26dd3a,'rows':_0x357e37}:null;}})[_0x53a5('0x1d')](respondWithResult(_0x2dda69,null))[_0x53a5('0x49')](handleError(_0x2dda69,null));};exports[_0x53a5('0x149')]=function(_0x4fe42c,_0x3411db){return db['User']['find']({'where':{'id':_0x4fe42c[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x3411db,null))[_0x53a5('0x1d')](function(_0x12a6dd){if(_0x12a6dd){return _0x12a6dd[_0x53a5('0x149')](_0x4fe42c[_0x53a5('0x50')][_0x53a5('0x52')],_[_0x53a5('0x53')](_0x4fe42c[_0x53a5('0x50')],[_0x53a5('0x52'),'id'])||{});}})['then'](respondWithResult(_0x3411db,null))[_0x53a5('0x49')](handleError(_0x3411db,null));};exports['removeWhatsappAccounts']=function(_0x1d855f,_0x94addc){return db['User']['find']({'where':{'id':_0x1d855f['params']['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x94addc,null))[_0x53a5('0x1d')](function(_0x2cc5a4){if(_0x2cc5a4){return _0x2cc5a4[_0x53a5('0x14a')](_0x1d855f[_0x53a5('0x3c')][_0x53a5('0x52')]);}})[_0x53a5('0x1d')](respondWithStatusCode(_0x94addc,null))[_0x53a5('0x49')](handleError(_0x94addc,null));};exports['getScheduledCalls']=function(_0x58d61e,_0x332196){var _0x8d9892={},_0x4a2fc7={},_0x2e36dc={'count':0x0,'rows':[]};var _0x4e85eb=db[_0x53a5('0x14b')][_0x53a5('0x33')];_0x4a2fc7[_0x53a5('0xc5')]=_['keys'](_0x4e85eb);_0x4a2fc7['query']=_[_0x53a5('0xc6')](_0x58d61e[_0x53a5('0x3c')]);_0x4a2fc7[_0x53a5('0xca')]=_[_0x53a5('0xc7')](_0x4a2fc7[_0x53a5('0xc5')],_0x4a2fc7[_0x53a5('0x3c')]);_0x4a2fc7[_0x53a5('0xca')]=_[_0x53a5('0xbc')](_0x4a2fc7['filters'],[_0x53a5('0x14c'),_0x53a5('0x14d'),_0x53a5('0x14e'),_0x53a5('0x14f'),_0x53a5('0x150'),_0x53a5('0x151'),_0x53a5('0x152'),_0x53a5('0x153'),_0x53a5('0x154'),_0x53a5('0x155'),'$notBetween',_0x53a5('0x156'),_0x53a5('0x157'),_0x53a5('0x158'),_0x53a5('0x159'),_0x53a5('0x15a'),_0x53a5('0x15b'),'$like',_0x53a5('0x15c'),_0x53a5('0x15d'),_0x53a5('0x15e'),'$any']);_0x8d9892[_0x53a5('0x40')]=_[_0x53a5('0xc7')](_0x4a2fc7[_0x53a5('0xc5')],qs[_0x53a5('0xc8')](_0x58d61e[_0x53a5('0x3c')][_0x53a5('0xc8')]));_0x8d9892['attributes']=_0x8d9892[_0x53a5('0x40')][_0x53a5('0x43')]?_0x8d9892[_0x53a5('0x40')]:_0x4a2fc7[_0x53a5('0xc5')];if(!_0x58d61e['query'][_0x53a5('0xbe')]('nolimit')){_0x8d9892[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0x58d61e[_0x53a5('0x3c')]['limit']);_0x8d9892[_0x53a5('0x16')]=qs[_0x53a5('0x16')](_0x58d61e['query'][_0x53a5('0x16')]);}_0x8d9892[_0x53a5('0xd3')]=qs['sort'](_0x58d61e[_0x53a5('0x3c')][_0x53a5('0xc9')]);_0x8d9892[_0x53a5('0x3b')]=qs[_0x53a5('0xca')](_[_0x53a5('0xcb')](_0x58d61e[_0x53a5('0x3c')],_0x4a2fc7['filters']));if(_0x58d61e[_0x53a5('0x3c')][_0x53a5('0x26')]){_0x8d9892[_0x53a5('0x3b')]=_['merge'](_0x8d9892[_0x53a5('0x3b')],{'$or':_[_0x53a5('0x28')](_0x8d9892[_0x53a5('0x40')],function(_0x4ef539){var _0x354ae4={};_0x354ae4[_0x4ef539]={'$like':'%'+_0x58d61e['query'][_0x53a5('0x26')]+'%'};return _0x354ae4;})});}_0x8d9892[_0x53a5('0x3b')]={'$and':[_0x8d9892[_0x53a5('0x3b')],{'$or':[{'UserId':_0x58d61e[_0x53a5('0x4a')]['id']},{'OwnerId':_0x58d61e['params']['id']}]}]};_0x8d9892=_[_0x53a5('0x4c')]({},_0x8d9892,_0x58d61e[_0x53a5('0xd0')]);var _0x2de640={'where':_0x8d9892[_0x53a5('0x3b')]};return db[_0x53a5('0x14b')][_0x53a5('0x19')](_0x2de640)['then'](function(_0x528303){_0x2e36dc['count']=_0x528303;if(_0x58d61e[_0x53a5('0x3c')][_0x53a5('0x4b')]){_0x8d9892[_0x53a5('0x3d')]=[{'attributes':['id',_0x53a5('0x15f'),_0x53a5('0x160'),_0x53a5('0xe5')],'model':db['CmContact'],'as':_0x53a5('0x161')},{'attributes':['id',_0x53a5('0x2c'),_0x53a5('0x162')],'model':db[_0x53a5('0x9f')],'as':_0x53a5('0xcc')}];}return db[_0x53a5('0x14b')][_0x53a5('0x81')](_0x8d9892);})[_0x53a5('0x1d')](function(_0x5650ff){_0x2e36dc[_0x53a5('0x42')]=_0x5650ff;return _0x2e36dc;})[_0x53a5('0x1d')](respondWithFilteredResult(_0x332196,_0x8d9892))[_0x53a5('0x49')](handleError(_0x332196,null));};exports[_0x53a5('0x163')]=function(_0x463f70,_0x557b26){if(!_[_0x53a5('0x59')](_0x463f70[_0x53a5('0x22')]['id'])&&(_0x463f70['user'][_0x53a5('0x21')]==_0x53a5('0x76')||_0x463f70[_0x53a5('0x22')]['role']==_0x53a5('0x22'))){return db[_0x53a5('0x32')][_0x53a5('0x8f')]({'where':{'id':_0x463f70[_0x53a5('0x4a')]['id']},'raw':!![]})[_0x53a5('0x1d')](function(_0x4eac32){return authService[_0x53a5('0x164')](_0x4eac32);})['then'](function(_0x137d0e){if(_0x137d0e){return _0x557b26[_0x53a5('0x13')](0xc8)[_0x53a5('0x15')]({'api_key':_0x137d0e['token']});}else{return _0x557b26[_0x53a5('0x13')](0xcc)[_0x53a5('0x15')]({'message':_0x53a5('0x165')});}})['catch'](handleError(_0x557b26,0x193));}else{return _0x557b26[_0x53a5('0x13')](0x191)[_0x53a5('0x15')]({'message':_0x53a5('0x166')});}};exports[_0x53a5('0x167')]=function(_0x138d59,_0x531114){if(!_[_0x53a5('0x59')](_0x138d59[_0x53a5('0x22')]['id'])&&(_0x138d59[_0x53a5('0x22')][_0x53a5('0x21')]==_0x53a5('0x76')||_0x138d59[_0x53a5('0x22')]['role']=='user')){return db['User']['find']({'where':{'id':_0x138d59[_0x53a5('0x4a')]['id']}})['then'](function(_0x44b706){return authService[_0x53a5('0x168')](_0x44b706);})[_0x53a5('0x1d')](function(_0x3771ce){return db[_0x53a5('0x32')][_0x53a5('0x1c')]({'apiKeyIat':_0x3771ce[_0x53a5('0x169')],'apiKeyNonce':_0x3771ce[_0x53a5('0x16a')]},{'where':{'id':_0x138d59['params']['id']}})[_0x53a5('0x1d')](function(){return _0x531114[_0x53a5('0x13')](0xc8)[_0x53a5('0x15')]({'api_key':_0x3771ce[_0x53a5('0x16b')]});});})['catch'](handleError(_0x531114,0x193));}else{return _0x531114['status'](0x191)[_0x53a5('0x15')]({'message':_0x53a5('0x166')});}};exports[_0x53a5('0x16c')]=function(_0x4ce5f6,_0x104863){if(!_[_0x53a5('0x59')](_0x4ce5f6[_0x53a5('0x22')]['id'])&&(_0x4ce5f6[_0x53a5('0x22')]['role']=='admin'||_0x4ce5f6[_0x53a5('0x22')]['role']==_0x53a5('0x22'))){return db[_0x53a5('0x32')][_0x53a5('0x2b')]({'where':{'id':_0x4ce5f6[_0x53a5('0x4a')]['id']}})[_0x53a5('0x1d')](handleEntityNotFound(_0x104863,null))[_0x53a5('0x1d')](function(_0x17fdc8){if(_0x17fdc8&&_0x17fdc8['apiKeyNonce']&&_0x17fdc8[_0x53a5('0x16d')])return _0x17fdc8;else throw{'message':_0x53a5('0x16e')};})['then'](function(){return db['User'][_0x53a5('0x1c')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x4ce5f6['params']['id']}});})[_0x53a5('0x1d')](respondWithStatusCode(_0x104863,0xc8))[_0x53a5('0x49')](handleError(_0x104863,0x193));}else{return _0x104863['status'](0x191)[_0x53a5('0x15')]({'message':_0x53a5('0x166')});}};exports[_0x53a5('0x16f')]=function(_0x85479c,_0x48edb1){var _0x295c95=_0x85479c['user'][_0x53a5('0x20')]({'plain':!![]});if(!_0x295c95){return _0x48edb1[_0x53a5('0x13')](0x191)['send'](_0x53a5('0x170'));}else{Promise[_0x53a5('0xff')]()['then'](function(){if(_0x85479c[_0x53a5('0x3c')]['userSetting']!=='true')return;return _0x85479c[_0x53a5('0x22')]['getUserSetting']();})[_0x53a5('0x1d')](function(_0x4bea23){if(!_0x4bea23)return;return _0x4bea23[_0x53a5('0x20')]({'plain':!![]});})[_0x53a5('0x1d')](function(_0x256d34){_0x295c95[_0x53a5('0x3e')]=_0x256d34;return _0x48edb1[_0x53a5('0x13')](0xc8)[_0x53a5('0x15')](_0x295c95);});}};exports[_0x53a5('0x171')]=function(_0x4a3944,_0x39cf00){var _0x56a364={'offset':0x0};var _0xf6c416={'count':0x0,'rows':[]};var _0x14c794=['idle',_0x53a5('0x172'),_0x53a5('0x173')];var _0x2a103f=[];var _0x3f65de=[];var _0x4e7104=[];var _0x511378=_0x4a3944[_0x53a5('0x3c')][_0x53a5('0x174')];var _0x14851b=_0x4a3944[_0x53a5('0x3c')][_0x53a5('0x175')];var _0x4a2483=_0x4a3944[_0x53a5('0x3c')][_0x53a5('0x26')];return Promise['resolve']()[_0x53a5('0x1d')](function(){if(!_0x511378){return[];}return db['Team']['findAll']({'attributes':['id',_0x53a5('0x2c')],'where':{'id':_0x511378}});})[_0x53a5('0x1d')](function(_0x393ee2){_0x4e7104=_0x393ee2;if(!_0x14851b){return[];}return db[_0x53a5('0x9f')][_0x53a5('0x81')]({'attributes':['id','name'],'type':_0x53a5('0x176'),'where':{'id':_0x14851b}});})[_0x53a5('0x1d')](function(_0x160d0a){_0x3f65de=_0x160d0a;var _0x3a64d8=_0x4e7104[_0x53a5('0xbc')](_0x3f65de)[_0x53a5('0x28')](function(_0x36886f){return _0x36886f[_0x53a5('0x177')]({'attributes':['id','name',_0x53a5('0x5a'),'online'],'raw':!![]});});return Promise['all'](_0x3a64d8);})[_0x53a5('0x1d')](function(_0x4a6a58){var _0x2402fe=_['flatten'](_0x4a6a58);if(_0x4a2483){if(_0x14851b||_0x511378){return _0x2402fe['filter'](function(_0x21da85){return _0x21da85[_0x53a5('0x2c')][_0x53a5('0x9a')]()[_0x53a5('0x2a')](_0x4a2483[_0x53a5('0x9a')]())||_0x21da85[_0x53a5('0x5a')][_0x53a5('0x178')]()[_0x53a5('0x2a')](_0x4a2483);});}else{return db['User']['findAll']({'attributes':['id',_0x53a5('0x2c'),_0x53a5('0x5a'),_0x53a5('0x94')],'where':{'role':_0x53a5('0x1e'),'$or':[db['sequelize'][_0x53a5('0x3b')](db[_0x53a5('0x111')]['fn'](_0x53a5('0x179'),db[_0x53a5('0x111')][_0x53a5('0x17a')](_0x53a5('0x2c'))),{'$like':'%'+_0x4a2483[_0x53a5('0x9a')]()+'%'}),{'internal':{'$like':'%'+_0x4a2483+'%'}}]},'raw':!![]});}}else{return _0x2402fe;}})[_0x53a5('0x1d')](function(_0x3fae52){var _0x3a75ff=_0x53a5('0x2c');var _0x1aaa48='asc';if(_0x4a3944['query'][_0x53a5('0xc9')]){_0x1aaa48=_0x4a3944[_0x53a5('0x3c')][_0x53a5('0xc9')][0x0]==='-'?_0x53a5('0x17b'):_0x53a5('0x17c');_0x3a75ff=_0x1aaa48==='asc'?_0x4a3944['query']['sort']:_0x4a3944[_0x53a5('0x3c')]['sort'][_0x53a5('0x17d')](0x1);}return _(_0x3fae52)[_0x53a5('0x17e')]('id')[_0x53a5('0x17f')]([function(_0x2f4905){return _0x3a75ff===_0x53a5('0x2c')?_0x2f4905[_0x3a75ff][_0x53a5('0x9a')]():_0x2f4905[_0x3a75ff];}],[_0x1aaa48])[_0x53a5('0x28')](function(_0x2625cf){return _[_0x53a5('0xcb')](_0x2625cf,['id',_0x53a5('0x2c'),'internal',_0x53a5('0x94')]);})[_0x53a5('0x29')]();})[_0x53a5('0x1d')](function(_0x227a7){_0x2a103f=_0x227a7;return rta['getRealtimeAgents']();})[_0x53a5('0x1d')](function(_0x582d13){return _0x2a103f[_0x53a5('0x28')](function(_0x5a439c){var _0x402535=_[_0x53a5('0x2b')](_0x582d13[_0x53a5('0x42')],['id',_0x5a439c['id']]);if(!_0x402535||!_0x5a439c[_0x53a5('0x94')]){_0x5a439c['status']=_0x53a5('0x180');}else if(_0x402535[_0x53a5('0x95')]){_0x5a439c['status']=_0x53a5('0x100');}else if(_0x402535['voiceStatus']===_0x53a5('0x181')||!_0x402535[_0x53a5('0x182')]){_0x5a439c[_0x53a5('0x13')]=_0x53a5('0x181');}else{_0x5a439c[_0x53a5('0x13')]=_0x14c794[_0x53a5('0x2a')](_0x402535[_0x53a5('0x182')])?_0x53a5('0x94'):_0x53a5('0x183');}return _0x5a439c;});})[_0x53a5('0x1d')](function(_0x2e8fd6){if(!_0x4a3944['query'][_0x53a5('0xbe')](_0x53a5('0xce'))){_0x56a364[_0x53a5('0x18')]=qs[_0x53a5('0x18')](_0x4a3944['query']['limit']||0xa);_0x56a364[_0x53a5('0x16')]=qs[_0x53a5('0x16')](_0x4a3944[_0x53a5('0x3c')][_0x53a5('0x16')]);}_0xf6c416[_0x53a5('0x19')]=_0x2e8fd6[_0x53a5('0x43')];_0xf6c416[_0x53a5('0x42')]=_0x56a364[_0x53a5('0x18')]?_0x2e8fd6['slice'](_0x56a364[_0x53a5('0x16')],_0x56a364['offset']+_0x56a364[_0x53a5('0x18')]):_0x2e8fd6;return _0xf6c416;})[_0x53a5('0x1d')](respondWithFilteredResult(_0x39cf00,_0x56a364))[_0x53a5('0x49')](handleError(_0x39cf00,null));};function get_open_tabs(_0xf171b2,_0x585995){var _0x1fa143=_0xf171b2[_0x53a5('0x184')](0x0)[_0x53a5('0x185')]()+_0xf171b2['slice'](0x1);var _0x1c3d91={'type':db['Sequelize']['QueryTypes'][_0x53a5('0x5e')],'raw':!![]};return new Promise(function(_0x52b7a8,_0x143ecc){var _0xaea0d3=squel['select']()[_0x53a5('0x186')]('ui.'+_0x1fa143+_0x53a5('0x187'),'id')['field']('ui.createdAt')['from']('user_has_'+_0xf171b2+_0x53a5('0x188'),'ui')[_0x53a5('0x3b')](_0x53a5('0x189'),_0x585995['id']);return db[_0x53a5('0x111')][_0x53a5('0x3c')](_0xaea0d3['toString'](),_0x1c3d91)[_0x53a5('0x1d')](function(_0x198ea5){_0x585995[_0x1fa143+'OpenTabs']=_0x198ea5;_0x52b7a8(_0x198ea5);})['catch'](function(_0x1c1128){_0x143ecc(_0x1c1128);});});}exports[_0x53a5('0x18a')]=function(_0x1f67f3,_0x2939d7){var _0x46a406=_0x1f67f3[_0x53a5('0x4a')]['id'];var _0x69f86b=_0x1f67f3['body']['enabled'];return db[_0x53a5('0x32')][_0x53a5('0x1c')]({'messengerSoundNotification':_0x69f86b},{'where':{'id':_0x46a406}})[_0x53a5('0x1d')](respondWithStatusCode(_0x2939d7,null))[_0x53a5('0x49')](handleError(_0x2939d7,null));};
\ No newline at end of file
+var _0x475d=['Telephones','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','checkUserLimits','UserProfileSection','isEmpty','compact','oldPassword','ValidationError','Sequelize','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','validatePasswordHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','capitalize','toLowerCase','Queues','penalty','spread','QueueId','Queue:save','voice','VoiceQueue','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','Queue:remove','addAvatar','file','join','root','userpic','download','existsSync','server/files/images/','getOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SMS','WhatsappOpenTabs','WHATSAPP','concat','format','CmList','List','Tag','Tags','color','tag','model','keys','rawAttributes','filters','intersection','fields','order','sort','where','pick','Queue','nolimit','limit','getVoiceQueuesRt','hasOwnProperty','getGroups','VoiceRecording','UserId','getScreenRecordings','getChatInteractions','ChatInteraction','getOpenchannelInteractions','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','x-forwarded-for','connection','remoteAddress','socket','getVoiceQueues','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','PAUSE','LOGININPAUSE','MemberReport','isMiddleware','resolve','logout','pause','updateAttributes','type','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','chatPause','faxPause','smsPause','pauseType','User\x20with\x20id\x20%s\x20not\x20found','getTeams','Team','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','getAssociatedQueues','flattenDeep','addAgent','getDataValue','Voice','TeamVoicePrefix','removeTeams','removeAgent','UserVoicePrefix','VoicePrefixId','getLists','getAgents','values','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','isArray','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$and','$or','$gte','$lt','$lte','$ne','$not','$between','$notBetween','$in','$notIn','$notLike','$notILike','$like','$overlap','$contains','$contained','firstName','lastName','phone','CmContact','Contact','dialActive','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','idle','unknown','ringing','inbound','flatten','toString','lower','col','asc','substring','uniqBy','orderBy','getRealtimeAgents','offline','voiceStatus','unavailable','busy','charAt','toUpperCase','slice','QueryTypes','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','messengerSoundNotification','enabled','moment','path','lodash','ioredis','../../components/auth/service','../../components/contacts','../../components/parsers/qs','../../components/realtime/agents','../../config/logger','api','../../config/environment','APIBadRequestError','APINotFoundError','../../errors/api','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','status','json','offset','undefined','count','set','Content-Range','update','then','role','agent','emit','userNotification:recalc:','destroy','get','admin','Users','user','Agents','telephone','ignore','value','includes','find','UserProfileResource','end','sendStatus','error','stack','name','send','User','map','fieldName','key','filter','password','salt','previousPasswords','resetPasswordExpires','md5secret','getOptions','includeAll','include','query','userSetting','true','UserSetting','attributes','push','findAll','rows','length','chat','dataValues','sms','openchannel','whatsapp','all','catch','merge','options','fax','mail','body','params','describe','addContacts','ids','omit','internal','Setting','findById','securePassword','validatePasswordPattern','min_internal','isNil','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','SELECT','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','102','103','113','110','105','106','108','109','100','111','114','115','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','settingsEnabled','userProfileId','create'];(function(_0xa6a5d8,_0x314233){var _0x4a6448=function(_0x4e0d15){while(--_0x4e0d15){_0xa6a5d8['push'](_0xa6a5d8['shift']());}};_0x4a6448(++_0x314233);}(_0x475d,0x108));var _0xd475=function(_0x5ed65f,_0x23d121){_0x5ed65f=_0x5ed65f-0x0;var _0x1f43ae=_0x475d[_0x5ed65f];return _0x1f43ae;};'use strict';var moment=require(_0xd475('0x0'));var util=require('util');var path=require(_0xd475('0x1'));var fs=require('fs');var _=require(_0xd475('0x2'));var squel=require('squel');var Redis=require(_0xd475('0x3'));var authService=require(_0xd475('0x4'));var contacts=require(_0xd475('0x5'));var qs=require(_0xd475('0x6'));var rta=require(_0xd475('0x7'));var logger=require(_0xd475('0x8'))(_0xd475('0x9'));var utils=require('../../config/utils');var config=require(_0xd475('0xa'));var licenseUtil=require('../../config/license/util');var APIBadRequestError=require('../../errors/api')[_0xd475('0xb')];var APINotFoundError=require('../../errors/api')[_0xd475('0xc')];var APIHandleError=require(_0xd475('0xd'))[_0xd475('0xe')];var db=require(_0xd475('0xf'))['db'];var socket=require(_0xd475('0x10'))(new Redis(config[_0xd475('0x11')]));require(_0xd475('0x12'))['register'](socket);config['redis']=_['defaults'](config[_0xd475('0x11')],{'host':'localhost','port':0x18eb});var values;function respondWithStatusCode(_0x3f7bcc,_0x1b695e){_0x1b695e=_0x1b695e||0xcc;return function(_0x1019e5){if(_0x1019e5){return _0x3f7bcc['sendStatus'](_0x1b695e);}return _0x3f7bcc['status'](_0x1b695e)['end']();};}function respondWithResult(_0x31e702,_0x4b86d5){_0x4b86d5=_0x4b86d5||0xc8;return function(_0x5c3933){if(_0x5c3933){return _0x31e702[_0xd475('0x13')](_0x4b86d5)[_0xd475('0x14')](_0x5c3933);}};}function respondWithFilteredResult(_0x11b9cf,_0xfb4614){return function(_0xd294c6){if(_0xd294c6){var _0x53dd36=typeof _0xfb4614[_0xd475('0x15')]===_0xd475('0x16')&&typeof _0xfb4614['limit']===_0xd475('0x16');var _0xfe974=_0xd294c6['count'];var _0x1d4a07=_0x53dd36?0x0:_0xfb4614[_0xd475('0x15')];var _0x3c1b43=_0x53dd36?_0xd294c6[_0xd475('0x17')]:_0xfb4614[_0xd475('0x15')]+_0xfb4614['limit'];var _0x4f456e;if(_0x3c1b43>=_0xfe974){_0x3c1b43=_0xfe974;_0x4f456e=0xc8;}else{_0x4f456e=0xce;}_0x11b9cf['status'](_0x4f456e);return _0x11b9cf[_0xd475('0x18')](_0xd475('0x19'),_0x1d4a07+'-'+_0x3c1b43+'/'+_0xfe974)[_0xd475('0x14')](_0xd294c6);}return null;};}function saveUpdates(_0x118f74){return function(_0x2eb318){if(_0x2eb318){return _0x2eb318[_0xd475('0x1a')](_0x118f74)[_0xd475('0x1b')](function(_0x4a90d4){if(_0x4a90d4[_0xd475('0x1c')]===_0xd475('0x1d')){socket[_0xd475('0x1e')](_0xd475('0x1f')+_0x4a90d4['id'],_0x4a90d4);}return _0x4a90d4;});}return null;};}function removeEntity(_0x5b36ef){return function(_0x42d677){if(_0x42d677){return _0x42d677[_0xd475('0x20')]()[_0xd475('0x1b')](function(){var _0x10c1b7=_0x42d677[_0xd475('0x21')]({'plain':!![]});if(_0x10c1b7[_0xd475('0x1c')]===_0xd475('0x22'))return;var _0x3eaa2a=[{'name':_0xd475('0x23'),'value':_0xd475('0x24'),'ignore':!![]},{'name':_0xd475('0x25'),'value':'agent','ignore':![]},{'name':'Telephones','value':_0xd475('0x26'),'ignore':![]}];var _0x2808db=_(_0x3eaa2a)['filter'](_0xd475('0x27'))['map'](_0xd475('0x28'))[_0xd475('0x28')]();if(_[_0xd475('0x29')](_0x2808db,_0x10c1b7[_0xd475('0x1c')])){return;}var _0x498fc8=_[_0xd475('0x2a')](_0x3eaa2a,[_0xd475('0x28'),_0x10c1b7['role']])['name'];return db[_0xd475('0x2b')]['destroy']({'where':{'type':_0x498fc8,'resourceId':_0x10c1b7['id']}})[_0xd475('0x1b')](function(){return _0x42d677;});})['then'](function(){_0x5b36ef[_0xd475('0x13')](0xcc)[_0xd475('0x2c')]();});}};}function handleEntityNotFound(_0x2e89e1){return function(_0x400e22){if(!_0x400e22){_0x2e89e1[_0xd475('0x2d')](0x194);}return _0x400e22;};}function handleError(_0xf9d34d,_0x326db0){_0x326db0=_0x326db0||0x1f4;return function(_0x45f3dd){logger[_0xd475('0x2e')](_0x45f3dd[_0xd475('0x2f')]);if(_0x45f3dd[_0xd475('0x30')]){delete _0x45f3dd[_0xd475('0x30')];}_0xf9d34d[_0xd475('0x13')](_0x326db0)[_0xd475('0x31')](_0x45f3dd);};}function getUserAttributes(){return _(db[_0xd475('0x32')]['rawAttributes'])[_0xd475('0x33')](function(_0x316587){return{'name':_0x316587[_0xd475('0x34')],'type':_0x316587['type'][_0xd475('0x35')]};})[_0xd475('0x36')](function(_0x3665c9){return![_0xd475('0x37'),_0xd475('0x38'),_0xd475('0x39'),'resetPasswordToken',_0xd475('0x3a'),_0xd475('0x3b')][_0xd475('0x29')](_0x3665c9[_0xd475('0x30')]);})['value']();}exports['index']=function(_0x4724e5,_0x224d4){var _0x218884={},_0x4effac={'count':0x0,'rows':[]};var _0x1374b6=getUserAttributes();_0x218884=qs[_0xd475('0x3c')](_0x1374b6,_0x4724e5);var _0x57c862={'where':_0x218884['where']};return db['User'][_0xd475('0x17')](_0x57c862)[_0xd475('0x1b')](function(_0x5a1bb5){_0x4effac['count']=_0x5a1bb5;if(_0x4724e5['query'][_0xd475('0x3d')]){_0x218884[_0xd475('0x3e')]=[{'all':!![]}];}if(_0x4724e5[_0xd475('0x3f')][_0xd475('0x40')]===_0xd475('0x41')){_0x218884['include']=[{'model':db[_0xd475('0x42')],'as':_0xd475('0x40')}];}if(!_[_0xd475('0x29')](_0x218884[_0xd475('0x43')],'id')){_0x218884[_0xd475('0x43')][_0xd475('0x44')]('id');}return db[_0xd475('0x32')][_0xd475('0x45')](_0x218884);})[_0xd475('0x1b')](function(_0x5aecbe){_0x4effac[_0xd475('0x46')]=_0x5aecbe;if(_0x4724e5[_0xd475('0x3f')]['openTabs']===_0xd475('0x41')){var _0x59c903=[];for(var _0x3b13d3=0x0;_0x3b13d3<_0x4effac[_0xd475('0x46')][_0xd475('0x47')];_0x3b13d3++){_0x59c903[_0xd475('0x44')](get_open_tabs(_0xd475('0x48'),_0x4effac[_0xd475('0x46')][_0x3b13d3][_0xd475('0x49')]));_0x59c903['push'](get_open_tabs(_0xd475('0x4a'),_0x4effac[_0xd475('0x46')][_0x3b13d3]['dataValues']));_0x59c903[_0xd475('0x44')](get_open_tabs('fax',_0x4effac[_0xd475('0x46')][_0x3b13d3][_0xd475('0x49')]));_0x59c903[_0xd475('0x44')](get_open_tabs('mail',_0x4effac[_0xd475('0x46')][_0x3b13d3][_0xd475('0x49')]));_0x59c903['push'](get_open_tabs(_0xd475('0x4b'),_0x4effac['rows'][_0x3b13d3]['dataValues']));_0x59c903[_0xd475('0x44')](get_open_tabs(_0xd475('0x4c'),_0x4effac[_0xd475('0x46')][_0x3b13d3][_0xd475('0x49')]));}return Promise[_0xd475('0x4d')](_0x59c903)['then'](function(){return _0x4effac;});}else{return _0x4effac;}})[_0xd475('0x1b')](respondWithFilteredResult(_0x224d4,_0x218884))[_0xd475('0x4e')](handleError(_0x224d4,null));};exports['show']=function(_0xebe1f7,_0x189ee4){var _0x5f0817=getUserAttributes();_0xebe1f7[_0xd475('0x3f')]['id']=_0xebe1f7['params']['id'];var _0x2a4851=qs[_0xd475('0x3c')](_0x5f0817,_0xebe1f7);if(_0xebe1f7[_0xd475('0x3f')]['includeAll']){_0x2a4851[_0xd475('0x3e')]=[{'all':!![]}];}if(_0xebe1f7[_0xd475('0x3f')][_0xd475('0x40')]===_0xd475('0x41')){_0x2a4851[_0xd475('0x3e')]=[{'model':db[_0xd475('0x42')],'as':_0xd475('0x40')}];}_0x2a4851=_[_0xd475('0x4f')]({},_0x2a4851,_0xebe1f7[_0xd475('0x50')]);if(!_[_0xd475('0x29')](_0x2a4851['attributes'],'id')){_0x2a4851['attributes'][_0xd475('0x44')]('id');}return db[_0xd475('0x32')][_0xd475('0x2a')](_0x2a4851)[_0xd475('0x1b')](handleEntityNotFound(_0x189ee4,null))[_0xd475('0x1b')](function(_0x241b80){var _0x20aa93=[];values=_0x241b80;if(_0xebe1f7[_0xd475('0x3f')]['openTabs']===_0xd475('0x41')){_0x20aa93[_0xd475('0x44')](get_open_tabs(_0xd475('0x48'),_0x241b80['dataValues']));_0x20aa93[_0xd475('0x44')](get_open_tabs(_0xd475('0x4a'),_0x241b80[_0xd475('0x49')]));_0x20aa93[_0xd475('0x44')](get_open_tabs('openchannel',_0x241b80['dataValues']));_0x20aa93[_0xd475('0x44')](get_open_tabs(_0xd475('0x4c'),_0x241b80['dataValues']));_0x20aa93[_0xd475('0x44')](get_open_tabs(_0xd475('0x51'),_0x241b80[_0xd475('0x49')]));_0x20aa93['push'](get_open_tabs(_0xd475('0x52'),_0x241b80[_0xd475('0x49')]));return Promise['all'](_0x20aa93);}else{return values;}})[_0xd475('0x1b')](function(){return values;})[_0xd475('0x1b')](respondWithResult(_0x189ee4,null))['catch'](handleError(_0x189ee4,null));};exports[_0xd475('0x1a')]=function(_0x1e7aff,_0x22079e){if(_0x1e7aff[_0xd475('0x53')]['id']){delete _0x1e7aff[_0xd475('0x53')]['id'];}delete _0x1e7aff['body'][_0xd475('0x1c')];return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x1e7aff[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x22079e,null))[_0xd475('0x1b')](saveUpdates(_0x1e7aff[_0xd475('0x53')],null))[_0xd475('0x1b')](respondWithResult(_0x22079e,null))['catch'](handleError(_0x22079e,null));};exports[_0xd475('0x55')]=function(_0x4d5bb5,_0x1b1b8){return db[_0xd475('0x32')]['describe']()[_0xd475('0x1b')](respondWithResult(_0x1b1b8,null))[_0xd475('0x4e')](handleError(_0x1b1b8,null));};exports[_0xd475('0x56')]=function(_0x48f418,_0x10ea78){return db[_0xd475('0x32')]['find']({'where':{'id':_0x48f418[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x10ea78,null))[_0xd475('0x1b')](function(_0x2d4440){if(_0x2d4440){return _0x2d4440[_0xd475('0x56')](_0x48f418[_0xd475('0x53')][_0xd475('0x57')],_[_0xd475('0x58')](_0x48f418[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{});}})[_0xd475('0x1b')](respondWithResult(_0x10ea78,null))[_0xd475('0x4e')](handleError(_0x10ea78,null));};function validateUser(_0x5130c4){return new Promise(function(_0x3f6262,_0x3660c4){if(_0x5130c4[_0xd475('0x59')])return _0x3f6262(_0x5130c4);return db[_0xd475('0x5a')][_0xd475('0x5b')](0x1)[_0xd475('0x1b')](function(_0x351851){if(_0x351851[_0xd475('0x5c')])authService[_0xd475('0x5d')](_0x5130c4[_0xd475('0x37')]);db[_0xd475('0x32')]['max'](_0xd475('0x59'))[_0xd475('0x1b')](function(_0x5080b2){if(_['isNil'](_0x5080b2)){_0x5130c4['internal']=_0x351851[_0xd475('0x5e')]||0x1;return;}if(_[_0xd475('0x5f')](_0x351851[_0xd475('0x5e')])||_0x351851[_0xd475('0x5e')]===_0x5080b2){_0x5130c4[_0xd475('0x59')]=_0x5080b2+0x1;return;}if(_0x351851[_0xd475('0x5e')]>_0x5080b2){_0x5130c4[_0xd475('0x59')]=_0x351851[_0xd475('0x5e')];return;}return db[_0xd475('0x60')]['query'](_0xd475('0x61'),{'type':db[_0xd475('0x60')]['QueryTypes'][_0xd475('0x62')]})[_0xd475('0x1b')](function(_0x391b95){if(_0x391b95&&_0x391b95[_0xd475('0x47')]){for(var _0x2766a0=0x0,_0x3ba43c=_0x391b95[_0xd475('0x47')];_0x2766a0<_0x3ba43c&&_[_0xd475('0x5f')](_0x5130c4['internal']);_0x2766a0++){if(_0x351851['min_internal']<=_0x391b95[_0x2766a0]['from']){_0x5130c4[_0xd475('0x59')]=_0x391b95[_0x2766a0][_0xd475('0x63')];}else if(_0x351851[_0xd475('0x5e')]>_0x391b95[_0x2766a0][_0xd475('0x63')]&&_0x351851[_0xd475('0x5e')]<=_0x391b95[_0x2766a0]['to']){_0x5130c4['internal']=_0x351851[_0xd475('0x5e')];}}}if(_[_0xd475('0x5f')](_0x5130c4[_0xd475('0x59')])){_0x5130c4[_0xd475('0x59')]=_0x5080b2+0x1;}return _0x3f6262(_0x5130c4);});});})['catch'](function(_0x422519){_0x3660c4(_0x422519);});});}function updateUser(_0x5522c1){return new Promise(function(_0x209fb7,_0x86c6f9){try{if(_0x5522c1[_0xd475('0x64')]){_0x5522c1[_0xd475('0x65')]=_0x5522c1[_0xd475('0x59')];_0x5522c1[_0xd475('0x66')]={'mailbox':_0x5522c1[_0xd475('0x59')],'password':_0x5522c1[_0xd475('0x37')],'fullname':_0x5522c1[_0xd475('0x67')],'email':_0x5522c1[_0xd475('0x68')]};}if(_0x5522c1[_0xd475('0x1c')]===_0xd475('0x1d')){if(!_0x5522c1[_0xd475('0x69')])_0x5522c1['permissions']=[_0xd475('0x6a'),_0xd475('0x6b'),_0xd475('0x6c'),_0xd475('0x6d'),_0xd475('0x6e'),'104',_0xd475('0x6f'),_0xd475('0x70'),'107',_0xd475('0x71'),_0xd475('0x72'),_0xd475('0x73'),_0xd475('0x74'),_0xd475('0x75'),_0xd475('0x76')];}_0x209fb7(_0x5522c1);}catch(_0x6de1a2){_0x86c6f9(_0x6de1a2);}});}exports['create']=function(_0x5ba2d8,_0x12ac2f){if(_0x5ba2d8['user'][_0xd475('0x1c')]==='agent')throw new Error(_0xd475('0x77'));if(_0x5ba2d8[_0xd475('0x53')][_0xd475('0x1c')]===_0xd475('0x24')&&_0x5ba2d8[_0xd475('0x24')]['role']!=='admin'){throw new Error(_0xd475('0x78'));}if(_0x5ba2d8['body']['role']==='admin'&&_0x5ba2d8[_0xd475('0x24')][_0xd475('0x1c')]!==_0xd475('0x22')){throw new Error(_0xd475('0x79'));}return licenseUtil['checkUserLimits']([_0x5ba2d8[_0xd475('0x53')]])[_0xd475('0x1b')](function(){return validateUser(_0x5ba2d8[_0xd475('0x53')]);})[_0xd475('0x1b')](function(_0x222b4d){return updateUser(_0x222b4d)['then'](function(_0x8379e1){if(_0x8379e1[_0xd475('0x1c')]===_0xd475('0x22')){_0x8379e1[_0xd475('0x7a')]=_0x5ba2d8['user'][_0xd475('0x7a')];delete _0x8379e1[_0xd475('0x7b')];}return _0x8379e1;});})['then'](function(_0x334592){return db['User'][_0xd475('0x7c')](_0x334592,{'include':[{'model':db[_0xd475('0x66')],'as':'VoiceMail'}]});})[_0xd475('0x1b')](function(_0x18073b){if(_0x5ba2d8[_0xd475('0x53')][_0xd475('0x1c')]==='user')return _0x18073b;if(_0x5ba2d8['user'][_0xd475('0x1c')]!==_0xd475('0x24'))return _0x18073b;return db['UserProfileSection'][_0xd475('0x2a')]({'where':{'name':_0x18073b[_0xd475('0x1c')]==='agent'?'Agents':_0xd475('0x7d'),'userProfileId':_0x5ba2d8[_0xd475('0x24')][_0xd475('0x7b')]},'raw':!![]})[_0xd475('0x1b')](function(_0x86f995){if(!_0x86f995||_0x86f995[_0xd475('0x7e')]!=0x0)return _0x18073b;return db[_0xd475('0x2b')][_0xd475('0x7c')]({'name':_0x18073b['name'],'resourceId':_0x18073b['id'],'type':_0x86f995[_0xd475('0x30')],'sectionId':_0x86f995['id']},{})['then'](function(){return _0x18073b;});})[_0xd475('0x4e')](function(_0xa6ae64){logger[_0xd475('0x2e')](_0xd475('0x7f'),_0xa6ae64);throw _0xa6ae64;});})[_0xd475('0x1b')](respondWithResult(_0x12ac2f,0xc9))[_0xd475('0x4e')](handleError(_0x12ac2f,null));};exports[_0xd475('0x80')]=function(_0x7c2db,_0x166efc){var _0x56d023=_0x7c2db[_0xd475('0x53')];var _0x247143=[];if(_0x7c2db[_0xd475('0x24')]['role']==='agent')throw new Error(_0xd475('0x77'));if(_[_0xd475('0x81')](_0x56d023,['role',_0xd475('0x24')])&&_0x7c2db[_0xd475('0x24')]['role']!=='admin'){throw new Error(_0xd475('0x78'));}if(_[_0xd475('0x81')](_0x56d023,[_0xd475('0x1c'),_0xd475('0x22')])&&_0x7c2db[_0xd475('0x24')][_0xd475('0x1c')]!==_0xd475('0x22')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0xd475('0x82')](_0x56d023)[_0xd475('0x1b')](function(){return validateUser(_0x56d023[0x0]);})[_0xd475('0x1b')](function(){for(var _0x9c9a4e=0x1;_0x9c9a4e<_0x56d023['length'];_0x9c9a4e++){var _0x3a4e85=_0x56d023[_0x9c9a4e-0x1][_0xd475('0x59')];if(!_0x56d023[_0x9c9a4e][_0xd475('0x59')])_0x56d023[_0x9c9a4e][_0xd475('0x59')]=_0x3a4e85+0x1;_0x247143[_0xd475('0x44')](validateUser(_0x56d023[_0x9c9a4e]));}return Promise[_0xd475('0x4d')](_0x247143);})[_0xd475('0x1b')](function(){_0x247143=[];for(var _0x2bfba7=0x0;_0x2bfba7<_0x56d023[_0xd475('0x47')];_0x2bfba7++){_0x247143[_0xd475('0x44')](updateUser(_0x56d023[_0x2bfba7]));}return Promise['all'](_0x247143);})[_0xd475('0x1b')](function(){_0x247143=_0x56d023[_0xd475('0x33')](function(_0x325f59){return db[_0xd475('0x32')]['create'](_0x325f59,{'include':[{'model':db[_0xd475('0x66')],'as':_0xd475('0x66')}]})[_0xd475('0x1b')](function(_0x226c8d){_0x325f59['id']=_0x226c8d['id'];return _0x325f59;});});return Promise['all'](_0x247143);})['then'](function(_0x409245){if(_0x7c2db[_0xd475('0x53')]['role']==='user')return _0x409245;if(_0x7c2db[_0xd475('0x24')][_0xd475('0x1c')]!==_0xd475('0x24'))return _0x409245;var _0x2f404c=_['some'](_0x409245,function(_0x73ff88){return _0x73ff88[_0xd475('0x1c')]===_0xd475('0x1d')||_0x73ff88[_0xd475('0x1c')]===_0xd475('0x26');});if(!_0x2f404c)return _0x409245;return db[_0xd475('0x83')]['findAll']({'where':{'name':{'$or':[_0xd475('0x25'),_0xd475('0x7d')]},'userProfileId':_0x7c2db[_0xd475('0x24')]['userProfileId']},'raw':!![]})['then'](function(_0x49ede7){if(_[_0xd475('0x84')](_0x49ede7)||!_[_0xd475('0x81')](_0x49ede7,[_0xd475('0x7e'),0x0]))return _0x409245;_0x247143=[];var _0x4cdd7f=_(_0x49ede7)['map'](function(_0x5c404c){if(_0x5c404c[_0xd475('0x7e')]===0x1)return;return _0x5c404c[_0xd475('0x30')]==='Agents'?_0xd475('0x1d'):_0xd475('0x26');})[_0xd475('0x85')]()[_0xd475('0x28')]();for(var _0x22a20a=0x0;_0x22a20a<_0x409245['length'];_0x22a20a++){if(!_['includes'](_0x4cdd7f,_0x409245[_0x22a20a]['role']))return;var _0xed2aa5=_0x409245[_0x22a20a][_0xd475('0x1c')]==='agent'?_0xd475('0x25'):_0xd475('0x7d');_0x247143['push'](db[_0xd475('0x2b')][_0xd475('0x7c')]({'name':_0x409245[_0x22a20a][_0xd475('0x30')],'resourceId':_0x409245[_0x22a20a]['id'],'type':_0xed2aa5,'sectionId':_[_0xd475('0x2a')](_0x49ede7,[_0xd475('0x30'),_0xed2aa5])['id']},{}));}return Promise[_0xd475('0x4d')](_0x247143);});})[_0xd475('0x1b')](respondWithResult(_0x166efc,0xc9))[_0xd475('0x4e')](handleError(_0x166efc,null));};exports['changePassword']=function(_0x4581fc,_0x521f81){if(_0x4581fc[_0xd475('0x53')]['id']){delete _0x4581fc['body']['id'];}return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x4581fc['params']['id']}})[_0xd475('0x1b')](function(_0x122fda){if(!_0x122fda)return null;if(_0x122fda['id']===_0x4581fc[_0xd475('0x24')]['id']){if(!_0x4581fc[_0xd475('0x53')][_0xd475('0x86')]||!_0x4581fc[_0xd475('0x53')]['newPassword']){throw new db['Sequelize'][(_0xd475('0x87'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x122fda['authenticate'](_0x4581fc['body'][_0xd475('0x86')])){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x89'));}if(_0x4581fc[_0xd475('0x53')][_0xd475('0x86')]===_0x4581fc[_0xd475('0x53')]['newPassword']){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x8a'));}}else if(_0x4581fc[_0xd475('0x24')]['role']===_0xd475('0x22')){if(!_0x4581fc['body']['newPassword']){throw new db['Sequelize']['ValidationError'](_0xd475('0x8b'));}}else if(_0x4581fc[_0xd475('0x24')][_0xd475('0x1c')]===_0xd475('0x24')){if(!_0x4581fc[_0xd475('0x53')][_0xd475('0x8c')]){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x122fda[_0xd475('0x1c')]!==_0xd475('0x1d')){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))]('Unauthorized');}}else{throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x77'));}return _0x122fda;})[_0xd475('0x1b')](handleEntityNotFound(_0x521f81,null))[_0xd475('0x1b')](function(_0x2b7ddb){return db[_0xd475('0x5a')][_0xd475('0x8d')]({'attributes':['id','securePassword',_0xd475('0x8e'),_0xd475('0x8f')]})[_0xd475('0x1b')](function(_0x304de7){if(_0x304de7[_0xd475('0x5c')])authService[_0xd475('0x5d')](_0x4581fc[_0xd475('0x53')][_0xd475('0x8c')]);if(!_0x304de7[_0xd475('0x8e')]||!_0x2b7ddb[_0xd475('0x39')])return _0x2b7ddb;authService[_0xd475('0x90')](_0x4581fc['body']['newPassword'],_0x2b7ddb[_0xd475('0x39')],_0x304de7[_0xd475('0x8f')]);return _0x2b7ddb;})[_0xd475('0x1b')](saveUpdates({'password':_0x4581fc[_0xd475('0x53')]['newPassword'],'passwordResetAt':_0x4581fc[_0xd475('0x24')]['id']==_0x4581fc[_0xd475('0x54')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x4581fc[_0xd475('0x53')][_0xd475('0x8c')],_0x2b7ddb['previousPasswords'])},null));})['then'](respondWithResult(_0x521f81,null))[_0xd475('0x4e')](handleError(_0x521f81,null));};exports['addQueues']=function(_0x37b91b,_0x4b27b2){var _0x58c0be=_0x37b91b['body'][_0xd475('0x91')];return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x37b91b['params']['id']},'attributes':['id','name',_0xd475('0x1c'),_0xd475('0x92'),_0xd475('0x93'),_0xd475('0x94'),_0xd475('0x95')]})[_0xd475('0x1b')](handleEntityNotFound(_0x4b27b2,null))['then'](function(_0x5cb02b){if(_0x5cb02b){if(!utils[_0xd475('0x96')](_0x58c0be)){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x97'));}return _0x5cb02b['add'+_[_0xd475('0x98')](_0x58c0be[_0xd475('0x99')]())+_0xd475('0x9a')](_0x37b91b[_0xd475('0x53')][_0xd475('0x57')],{'penalty':_0x37b91b[_0xd475('0x53')][_0xd475('0x9b')]||0x0})[_0xd475('0x9c')](function(_0x3a7682){for(var _0x357bfb=0x0;_0x357bfb<_0x37b91b[_0xd475('0x53')]['ids'][_0xd475('0x47')];_0x357bfb+=0x1){var _0x534481={'UserId':Number(_0x37b91b['params']['id'])};_0x534481[_[_0xd475('0x98')](_0x58c0be[_0xd475('0x99')]())+_0xd475('0x9d')]=Number(_0x37b91b[_0xd475('0x53')][_0xd475('0x57')][_0x357bfb]);socket['emit'](_0xd475('0x24')+_[_0xd475('0x98')](_0x58c0be['toLowerCase']())+_0xd475('0x9e'),_0x534481);}return _0x3a7682;})[_0xd475('0x1b')](function(){if(_0x58c0be===_0xd475('0x9f')){return db[_0xd475('0xa0')][_0xd475('0x45')]({'where':{'id':_0x37b91b['body']['ids']||[]},'raw':!![],'attributes':['id',_0xd475('0x30')]});}})[_0xd475('0x1b')](function(_0x2993ab){var _0xf4f532=_0x5cb02b['get']({'plain':!![]});var _0x2add73=[];if(_0x58c0be===_0xd475('0x9f')&&_0xf4f532[_0xd475('0x1c')]===_0xd475('0x1d')&&_0xf4f532['online']){for(let _0x1cdf02=0x0;_0x1cdf02<_0x2993ab[_0xd475('0x47')];_0x1cdf02+=0x1){_0x2add73[_0xd475('0x44')]({'membername':_0xf4f532[_0xd475('0x30')],'UserId':_0xf4f532['id'],'queue_name':_0x2993ab[_0x1cdf02][_0xd475('0x30')],'VoiceQueueId':_0x2993ab[_0x1cdf02]['id'],'interface':_[_0xd475('0x5f')](_0xf4f532[_0xd475('0x95')])?util['format'](_0xd475('0xa1'),_0xf4f532[_0xd475('0x30')]):_0xf4f532[_0xd475('0x95')],'paused':_0xf4f532['voicePause']||![],'penalty':_0x37b91b[_0xd475('0x53')]['penalty']||0x0});}return Promise[_0xd475('0x4d')](_0x2add73[_0xd475('0x33')](function(_0x503f5a){return db[_0xd475('0xa2')][_0xd475('0xa3')](_0x503f5a);}));}return _0x5cb02b;});}})['then'](respondWithStatusCode(_0x4b27b2,null))[_0xd475('0x4e')](handleError(_0x4b27b2,null));};exports[_0xd475('0xa4')]=function(_0x18df0a,_0x5388c4){var _0x4bf3c4,_0x1a8f1e;return db['User'][_0xd475('0x2a')]({'where':{'id':_0x18df0a['params']['id']},'attributes':['id',_0xd475('0x30'),_0xd475('0x1c')]})[_0xd475('0x1b')](handleEntityNotFound(_0x5388c4,null))['then'](function(_0x1fa247){if(_0x1fa247){_0x4bf3c4=_0x1fa247;if(!_0x18df0a[_0xd475('0x3f')][_0xd475('0x91')]||!utils[_0xd475('0x96')](_0x18df0a['query'][_0xd475('0x91')])){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x97'));}return _0x1fa247['remove'+_['capitalize'](_0x18df0a['query']['channel'][_0xd475('0x99')]())+'Queues'](_0x18df0a['query'][_0xd475('0x57')]);}})['then'](function(_0x4a5f97){if(_['isArray'](_0x18df0a[_0xd475('0x3f')][_0xd475('0x57')])){for(var _0x32f3a6=0x0;_0x32f3a6<_0x18df0a[_0xd475('0x3f')][_0xd475('0x57')][_0xd475('0x47')];_0x32f3a6+=0x1){_0x1a8f1e={'UserId':Number(_0x18df0a[_0xd475('0x54')]['id'])};_0x1a8f1e[_['capitalize'](_0x18df0a[_0xd475('0x3f')][_0xd475('0x91')][_0xd475('0x99')]())+_0xd475('0x9d')]=Number(_0x18df0a[_0xd475('0x3f')][_0xd475('0x57')][_0x32f3a6]);socket[_0xd475('0x1e')](_0xd475('0x24')+_[_0xd475('0x98')](_0x18df0a[_0xd475('0x3f')][_0xd475('0x91')]['toLowerCase']())+_0xd475('0xa5'),_0x1a8f1e);}}else{_0x1a8f1e={'UserId':Number(_0x18df0a[_0xd475('0x54')]['id'])};_0x1a8f1e[_[_0xd475('0x98')](_0x18df0a[_0xd475('0x3f')][_0xd475('0x91')][_0xd475('0x99')]())+'QueueId']=Number(_0x18df0a[_0xd475('0x3f')][_0xd475('0x57')]);socket['emit'](_0xd475('0x24')+_['capitalize'](_0x18df0a[_0xd475('0x3f')][_0xd475('0x91')][_0xd475('0x99')]())+'Queue:remove',_0x1a8f1e);}return _0x4a5f97;})[_0xd475('0x1b')](function(){if(_0x18df0a['query'][_0xd475('0x91')]===_0xd475('0x9f')){return db[_0xd475('0xa2')][_0xd475('0x20')]({'where':{'UserId':_0x18df0a[_0xd475('0x54')]['id'],'VoiceQueueId':_0x18df0a[_0xd475('0x3f')][_0xd475('0x57')]},'individualHooks':!![]})[_0xd475('0x1b')](function(){return _0x4bf3c4;});}return _0x4bf3c4;})[_0xd475('0x1b')](respondWithStatusCode(_0x5388c4,null))[_0xd475('0x4e')](handleError(_0x5388c4,null));};exports[_0xd475('0xa6')]=function(_0x4d90dd,_0x498e3e){_0x4d90dd[_0xd475('0x53')]['userpic']=_0x4d90dd[_0xd475('0xa7')]['filename'];return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x4d90dd[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x498e3e,null))['then'](saveUpdates(_0x4d90dd[_0xd475('0x53')],null))[_0xd475('0x1b')](respondWithResult(_0x498e3e,null))[_0xd475('0x4e')](handleError(_0x498e3e,null));};exports['getAvatar']=function(_0x424fef,_0x1f9d65){var _0xfb993d=path[_0xd475('0xa8')](config[_0xd475('0xa9')],'server/files/images/logos/default_profile.png');return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x424fef[_0xd475('0x54')]['id']},'attributes':['id',_0xd475('0xaa')],'raw':!![]})[_0xd475('0x1b')](handleEntityNotFound(_0x1f9d65,null))[_0xd475('0x1b')](function(_0x29948a){if(_0x29948a){if(_[_0xd475('0x5f')](_0x29948a[_0xd475('0xaa')])){return _0x1f9d65[_0xd475('0xab')](_0xfb993d);}else{if(!fs[_0xd475('0xac')](path[_0xd475('0xa8')](config[_0xd475('0xa9')],_0xd475('0xad'),_0x29948a[_0xd475('0xaa')]))){return _0x1f9d65[_0xd475('0xab')](_0xfb993d);}return _0x1f9d65['download'](path[_0xd475('0xa8')](config[_0xd475('0xa9')],'server/files/images/',_0x29948a[_0xd475('0xaa')]));}}})['catch'](handleError(_0x1f9d65,null));};exports[_0xd475('0xae')]=function(_0x228ddc,_0x257383){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x228ddc[_0xd475('0x54')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x257383,null))[_0xd475('0x1b')](function(_0x221aa6){var _0x4f0c55=[];values=_0x221aa6[_0xd475('0x49')];_0x4f0c55['push'](get_open_tabs('chat',_0x221aa6[_0xd475('0x49')]));_0x4f0c55[_0xd475('0x44')](get_open_tabs(_0xd475('0x4a'),_0x221aa6[_0xd475('0x49')]));_0x4f0c55[_0xd475('0x44')](get_open_tabs(_0xd475('0x4b'),_0x221aa6['dataValues']));_0x4f0c55[_0xd475('0x44')](get_open_tabs(_0xd475('0x4c'),_0x221aa6[_0xd475('0x49')]));_0x4f0c55['push'](get_open_tabs(_0xd475('0x51'),_0x221aa6[_0xd475('0x49')]));_0x4f0c55['push'](get_open_tabs(_0xd475('0x52'),_0x221aa6[_0xd475('0x49')]));return Promise[_0xd475('0x4d')](_0x4f0c55);})['then'](function(_0x2bbac4){if(_0x2bbac4){var _0x28d151=_[_0xd475('0x33')](values['ChatOpenTabs'],function(_0x2e494a){return{'channel':_0xd475('0xaf'),'id':_0x2e494a['id'],'createdAt':_0x2e494a[_0xd475('0xb0')]};});var _0x4507e4=_[_0xd475('0x33')](values[_0xd475('0xb1')],function(_0x22611d){return{'channel':_0xd475('0xb2'),'id':_0x22611d['id'],'createdAt':_0x22611d[_0xd475('0xb0')]};});var _0x515751=_[_0xd475('0x33')](values[_0xd475('0xb3')],function(_0x2af1b3){return{'channel':_0xd475('0xb4'),'id':_0x2af1b3['id'],'createdAt':_0x2af1b3[_0xd475('0xb0')]};});var _0x209c2a=_[_0xd475('0x33')](values[_0xd475('0xb5')],function(_0x29b03){return{'channel':_0xd475('0xb6'),'id':_0x29b03['id'],'createdAt':_0x29b03[_0xd475('0xb0')]};});var _0x2c0027=_['map'](values['SmsOpenTabs'],function(_0x5eb3ec){return{'channel':_0xd475('0xb7'),'id':_0x5eb3ec['id'],'createdAt':_0x5eb3ec[_0xd475('0xb0')]};});var _0x3546fe=_[_0xd475('0x33')](values[_0xd475('0xb8')],function(_0x530a07){return{'channel':_0xd475('0xb9'),'id':_0x530a07['id'],'createdAt':_0x530a07[_0xd475('0xb0')]};});var _0x437f5f=_[_0xd475('0xba')](_0x28d151,_0x4507e4,_0x515751,_0x209c2a,_0x2c0027,_0x3546fe);var _0x4f8ad0={'count':_0x437f5f[_0xd475('0x47')],'rows':_0x437f5f};return _0x4f8ad0;}else return null;})[_0xd475('0x1b')](respondWithResult(_0x257383,null))[_0xd475('0x4e')](handleError(_0x257383,null));};exports['getContacts']=function(_0x5af755,_0x568f52){var _0x96b7f6={};return db[_0xd475('0x32')]['findOne']({'where':{'id':_0x5af755['params']['id']}})[_0xd475('0x1b')](function(_0x33f579){if(!_0x33f579){throw new APINotFoundError(util[_0xd475('0xbb')]('User\x20with\x20id\x20%s\x20not\x20found',_0x5af755[_0xd475('0x54')]['id']));}return contacts[_0xd475('0x55')]();})[_0xd475('0x1b')](function(_0x11af1b){_0x5af755['query'][_0xd475('0x32')]=_0x5af755[_0xd475('0x54')]['id'];_0x96b7f6=qs[_0xd475('0x3c')](_0x11af1b,_0x5af755);if(_0x5af755[_0xd475('0x3f')]['hasOwnProperty'](_0xd475('0x3d'))){_0x96b7f6[_0xd475('0x3e')]=[{'model':db[_0xd475('0xbc')],'as':_0xd475('0xbd'),'required':![]},{'model':db[_0xd475('0xbe')],'as':_0xd475('0xbf'),'attributes':['id',_0xd475('0x30'),_0xd475('0xc0')],'where':_0x5af755[_0xd475('0x3f')][_0xd475('0xc1')]?{'id':_0x5af755[_0xd475('0x3f')][_0xd475('0xc1')]}:undefined,'required':_0x5af755[_0xd475('0x3f')][_0xd475('0xc1')]?!![]:![]}];}return contacts[_0xd475('0x45')](_0x5af755['query'],_0x5af755[_0xd475('0x24')],_0x96b7f6,_0x11af1b);})[_0xd475('0x1b')](respondWithFilteredResult(_0x568f52,_0x96b7f6))[_0xd475('0x4e')](APIHandleError(_0x568f52));};exports['getQueues']=function(_0x5b1283,_0x579115){var _0x1f5f12;var _0x547803={};var _0x1f0d4c;return db['User']['findOne']({'where':{'id':_0x5b1283[_0xd475('0x54')]['id']},'attributes':['id','name',_0xd475('0x1c')]})[_0xd475('0x1b')](handleEntityNotFound(_0x579115,null))[_0xd475('0x1b')](function(_0x7c039c){if(!utils['isValidChannel'](_0x5b1283[_0xd475('0x3f')][_0xd475('0x91')])){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x97'));}_0x1f5f12=_0x7c039c;var _0x478a15={};_0x478a15[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_[_0xd475('0x98')](_0x5b1283[_0xd475('0x3f')][_0xd475('0x91')])+'Queue'][_0xd475('0xc4')]);_0x478a15[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x5b1283[_0xd475('0x3f')]);_0x478a15[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x478a15[_0xd475('0xc2')],_0x478a15[_0xd475('0x3f')]);_0x547803['attributes']=_[_0xd475('0xc6')](_0x478a15[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x5b1283[_0xd475('0x3f')]['fields']));_0x547803[_0xd475('0x43')]=_0x547803[_0xd475('0x43')]['length']?_0x547803[_0xd475('0x43')]:_0x478a15[_0xd475('0xc2')];_0x547803[_0xd475('0xc8')]=qs['sort'](_0x5b1283[_0xd475('0x3f')][_0xd475('0xc9')]);_0x547803[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x5b1283['query'],_0x478a15[_0xd475('0xc5')]));if(_0x5b1283['query'][_0xd475('0x36')]){_0x547803[_0xd475('0xca')]=_['merge'](_0x547803[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x547803[_0xd475('0x43')],function(_0x25d232){var _0x105f1b={};_0x105f1b[_0x25d232]={'$like':'%'+_0x5b1283[_0xd475('0x3f')]['filter']+'%'};return _0x105f1b;})});}_0x547803=_[_0xd475('0x4f')]({},_0x547803,_0x5b1283['options']);switch(_0x1f5f12[_0xd475('0x1c')]){case'admin':return db[_[_0xd475('0x98')](_0x5b1283['query'][_0xd475('0x91')])+_0xd475('0xcc')][_0xd475('0x45')](_0x547803);case _0xd475('0x24'):case _0xd475('0x1d'):return _0x1f5f12[_0xd475('0x21')+_[_0xd475('0x98')](_0x5b1283[_0xd475('0x3f')]['channel'])+_0xd475('0x9a')](_0x547803);default:throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))]('Unknown\x20role');}})[_0xd475('0x1b')](function(_0x5049fc){_0x1f0d4c=_0x5049fc[_0xd475('0x47')];if(!_0x5b1283[_0xd475('0x3f')]['hasOwnProperty'](_0xd475('0xcd'))){_0x547803[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x5b1283[_0xd475('0x3f')][_0xd475('0xce')]);_0x547803[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x5b1283['query'][_0xd475('0x15')]);}switch(_0x1f5f12['role']){case _0xd475('0x22'):return db[_['capitalize'](_0x5b1283['query'][_0xd475('0x91')])+_0xd475('0xcc')]['findAll'](_0x547803);case _0xd475('0x24'):case _0xd475('0x1d'):return _0x1f5f12[_0xd475('0x21')+_[_0xd475('0x98')](_0x5b1283[_0xd475('0x3f')][_0xd475('0x91')])+_0xd475('0x9a')](_0x547803);}})[_0xd475('0x1b')](function(_0x59672d){return{'count':_0x1f0d4c,'rows':_0x59672d};})[_0xd475('0x1b')](respondWithResult(_0x579115,null))[_0xd475('0x4e')](handleError(_0x579115,null));};exports[_0xd475('0xcf')]=function(_0x194a4a,_0x21250e){var _0x441802={};var _0x454309={};var _0x31d368;var _0x111fe2;return db['User'][_0xd475('0x8d')]({'where':{'id':_0x194a4a[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x21250e,null))[_0xd475('0x1b')](function(_0x45fffe){if(_0x45fffe){_0x31d368=_0x45fffe;_0x454309[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xa2')][_0xd475('0xc4')]);_0x454309[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x194a4a[_0xd475('0x3f')]);_0x454309['filters']=_[_0xd475('0xc6')](_0x454309[_0xd475('0xc2')],_0x454309['query']);_0x441802[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x454309[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x194a4a[_0xd475('0x3f')]['fields']));_0x441802[_0xd475('0x43')]=_0x441802[_0xd475('0x43')][_0xd475('0x47')]?_0x441802['attributes']:_0x454309[_0xd475('0xc2')];_0x441802[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x194a4a[_0xd475('0x3f')][_0xd475('0xc9')]);_0x441802[_0xd475('0xca')]=qs['filters'](_['pick'](_0x194a4a['query'],_0x454309[_0xd475('0xc5')]));if(_0x194a4a[_0xd475('0x3f')][_0xd475('0x36')]){_0x441802[_0xd475('0xca')]=_['merge'](_0x441802[_0xd475('0xca')],{'$or':_['map'](_0x441802['attributes'],function(_0x31061a){var _0x4eea58={};_0x4eea58[_0x31061a]={'$like':'%'+_0x194a4a[_0xd475('0x3f')]['filter']+'%'};return _0x4eea58;})});}_0x441802=_[_0xd475('0x4f')]({},_0x441802,_0x194a4a[_0xd475('0x50')]);return _0x31d368['getVoiceQueuesRt'](_0x441802);}})[_0xd475('0x1b')](function(_0x1c51ee){if(_0x1c51ee){_0x111fe2=_0x1c51ee[_0xd475('0x47')];if(!_0x194a4a['query'][_0xd475('0xd0')](_0xd475('0xcd'))){_0x441802[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x194a4a[_0xd475('0x3f')]['limit']);_0x441802[_0xd475('0x15')]=qs['offset'](_0x194a4a[_0xd475('0x3f')]['offset']);}return _0x31d368[_0xd475('0xcf')](_0x441802);}})[_0xd475('0x1b')](function(_0x1cf447){if(_0x1cf447){return _0x1cf447?{'count':_0x111fe2,'rows':_0x1cf447}:null;}})[_0xd475('0x1b')](respondWithResult(_0x21250e,null))['catch'](handleError(_0x21250e,null));};exports[_0xd475('0xd1')]=function(_0x1b74eb,_0x3ad546){var _0x55ad82={};var _0x2fc5c4={};var _0x57b2ec;var _0x5a225d;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x1b74eb[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x3ad546,null))['then'](function(_0x94d1a1){if(_0x94d1a1){_0x57b2ec=_0x94d1a1;_0x2fc5c4[_0xd475('0xc2')]=_[_0xd475('0xc3')](db['ChatGroup'][_0xd475('0xc4')]);_0x2fc5c4[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x1b74eb[_0xd475('0x3f')]);_0x2fc5c4[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x2fc5c4['model'],_0x2fc5c4['query']);_0x55ad82[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x2fc5c4['model'],qs[_0xd475('0xc7')](_0x1b74eb[_0xd475('0x3f')][_0xd475('0xc7')]));_0x55ad82[_0xd475('0x43')]=_0x55ad82[_0xd475('0x43')][_0xd475('0x47')]?_0x55ad82[_0xd475('0x43')]:_0x2fc5c4[_0xd475('0xc2')];_0x55ad82['order']=qs['sort'](_0x1b74eb[_0xd475('0x3f')]['sort']);_0x55ad82['where']=qs['filters'](_[_0xd475('0xcb')](_0x1b74eb['query'],_0x2fc5c4[_0xd475('0xc5')]));if(_0x1b74eb[_0xd475('0x3f')][_0xd475('0x36')]){_0x55ad82[_0xd475('0xca')]=_['merge'](_0x55ad82[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x55ad82['attributes'],function(_0x3fed54){var _0x2b1c48={};_0x2b1c48[_0x3fed54]={'$like':'%'+_0x1b74eb[_0xd475('0x3f')]['filter']+'%'};return _0x2b1c48;})});}_0x55ad82=_[_0xd475('0x4f')]({},_0x55ad82,_0x1b74eb[_0xd475('0x50')]);return _0x57b2ec['getGroups'](_0x55ad82);}})[_0xd475('0x1b')](function(_0x3b7686){if(_0x3b7686){_0x5a225d=_0x3b7686[_0xd475('0x47')];if(!_0x1b74eb[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0x55ad82[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x1b74eb[_0xd475('0x3f')][_0xd475('0xce')]);_0x55ad82[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x1b74eb['query'][_0xd475('0x15')]);}return _0x57b2ec[_0xd475('0xd1')](_0x55ad82);}})['then'](function(_0x3e9853){if(_0x3e9853){return _0x3e9853?{'count':_0x5a225d,'rows':_0x3e9853}:null;}})[_0xd475('0x1b')](respondWithResult(_0x3ad546,null))[_0xd475('0x4e')](handleError(_0x3ad546,null));};exports['getRecordings']=function(_0x2a0d4a,_0x5e17aa){var _0x373c30={'raw':!![],'where':{}};var _0x13d0d2={};var _0x2f32fb={'count':0x0,'rows':[]};return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x2a0d4a['params']['id']}})['then'](handleEntityNotFound(_0x5e17aa,null))['then'](function(_0x5c605a){if(_0x5c605a){_0x13d0d2['model']=_['keys'](db[_0xd475('0xd2')]['rawAttributes']);_0x13d0d2['query']=_['keys'](_0x2a0d4a[_0xd475('0x3f')]);_0x13d0d2[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x13d0d2[_0xd475('0xc2')],_0x13d0d2[_0xd475('0x3f')]);_0x373c30[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x13d0d2[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x2a0d4a[_0xd475('0x3f')][_0xd475('0xc7')]));_0x373c30[_0xd475('0x43')]=_0x373c30[_0xd475('0x43')]['length']?_0x373c30['attributes']:_0x13d0d2['model'];if(!_0x2a0d4a[_0xd475('0x3f')]['hasOwnProperty'](_0xd475('0xcd'))){_0x373c30[_0xd475('0xce')]=qs['limit'](_0x2a0d4a[_0xd475('0x3f')][_0xd475('0xce')]);_0x373c30[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x2a0d4a['query'][_0xd475('0x15')]);}_0x373c30['order']=qs[_0xd475('0xc9')](_0x2a0d4a[_0xd475('0x3f')][_0xd475('0xc9')]);_0x373c30[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x2a0d4a[_0xd475('0x3f')],_0x13d0d2['filters']));_0x373c30[_0xd475('0xca')][_0xd475('0xd3')]=_0x5c605a['id'];if(_0x2a0d4a['query'][_0xd475('0x36')]){_0x373c30[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x373c30['where'],{'$or':_['map'](_0x373c30[_0xd475('0x43')],function(_0xc7cc3){var _0x53f8f3={};_0x53f8f3[_0xc7cc3]={'$like':'%'+_0x2a0d4a['query']['filter']+'%'};return _0x53f8f3;})});}_0x373c30=_['merge']({},_0x373c30,_0x2a0d4a['options']);return db[_0xd475('0xd2')][_0xd475('0x17')]({'where':_0x373c30[_0xd475('0xca')]})[_0xd475('0x1b')](function(_0x4910fc){_0x2f32fb['count']=_0x4910fc;if(_0x2a0d4a['query']['includeAll']){_0x373c30[_0xd475('0x3e')]=[{'all':!![]}];}return db['VoiceRecording'][_0xd475('0x45')](_0x373c30);})[_0xd475('0x1b')](function(_0xe7c499){_0x2f32fb[_0xd475('0x46')]=_0xe7c499;return _0x2f32fb;});}})['then'](respondWithFilteredResult(_0x5e17aa,_0x373c30))[_0xd475('0x4e')](handleError(_0x5e17aa,null));};exports[_0xd475('0xd4')]=function(_0x2549b3,_0x15bd57){var _0x249da1={'raw':!![],'where':{}};var _0x1d43ae={};var _0x11be89={'count':0x0,'rows':[]};return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x2549b3['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x15bd57,null))[_0xd475('0x1b')](function(_0x246473){if(_0x246473){_0x1d43ae[_0xd475('0xc2')]=_['keys'](db['ScreenRecording']['rawAttributes']);_0x1d43ae['query']=_[_0xd475('0xc3')](_0x2549b3[_0xd475('0x3f')]);_0x1d43ae[_0xd475('0xc5')]=_['intersection'](_0x1d43ae[_0xd475('0xc2')],_0x1d43ae[_0xd475('0x3f')]);_0x249da1['attributes']=_[_0xd475('0xc6')](_0x1d43ae[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x2549b3[_0xd475('0x3f')]['fields']));_0x249da1[_0xd475('0x43')]=_0x249da1[_0xd475('0x43')]['length']?_0x249da1[_0xd475('0x43')]:_0x1d43ae[_0xd475('0xc2')];if(!_0x2549b3[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x249da1['limit']=qs['limit'](_0x2549b3['query'][_0xd475('0xce')]);_0x249da1[_0xd475('0x15')]=qs['offset'](_0x2549b3[_0xd475('0x3f')]['offset']);}_0x249da1['order']=qs[_0xd475('0xc9')](_0x2549b3[_0xd475('0x3f')][_0xd475('0xc9')]);_0x249da1[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x2549b3[_0xd475('0x3f')],_0x1d43ae[_0xd475('0xc5')]));_0x249da1[_0xd475('0xca')][_0xd475('0xd3')]=_0x246473['id'];if(_0x2549b3['query'][_0xd475('0x36')]){_0x249da1[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x249da1[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x249da1[_0xd475('0x43')],function(_0x51b104){var _0x1f4651={};_0x1f4651[_0x51b104]={'$like':'%'+_0x2549b3[_0xd475('0x3f')]['filter']+'%'};return _0x1f4651;})});}_0x249da1=_[_0xd475('0x4f')]({},_0x249da1,_0x2549b3[_0xd475('0x50')]);return db['ScreenRecording']['count']({'where':_0x249da1[_0xd475('0xca')]})[_0xd475('0x1b')](function(_0xb15df5){_0x11be89[_0xd475('0x17')]=_0xb15df5;if(_0x2549b3[_0xd475('0x3f')][_0xd475('0x3d')]){_0x249da1['include']=[{'all':!![]}];}return db['ScreenRecording'][_0xd475('0x45')](_0x249da1);})['then'](function(_0x4c846a){_0x11be89[_0xd475('0x46')]=_0x4c846a;return _0x11be89;});}})[_0xd475('0x1b')](respondWithFilteredResult(_0x15bd57,_0x249da1))[_0xd475('0x4e')](handleError(_0x15bd57,null));};exports[_0xd475('0xd5')]=function(_0x252c29,_0x1aba1f){var _0x1da414={};var _0x24042d={};var _0x2f8e71;var _0x2e7b2d;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x252c29[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x1aba1f,null))[_0xd475('0x1b')](function(_0xadeb56){if(_0xadeb56){_0x2f8e71=_0xadeb56;_0x24042d[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xd6')][_0xd475('0xc4')]);_0x24042d[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x252c29[_0xd475('0x3f')]);_0x24042d[_0xd475('0xc5')]=_['intersection'](_0x24042d[_0xd475('0xc2')],_0x24042d[_0xd475('0x3f')]);_0x1da414['attributes']=_['intersection'](_0x24042d[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x252c29[_0xd475('0x3f')][_0xd475('0xc7')]));_0x1da414[_0xd475('0x43')]=_0x1da414[_0xd475('0x43')][_0xd475('0x47')]?_0x1da414[_0xd475('0x43')]:_0x24042d[_0xd475('0xc2')];_0x1da414[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x252c29[_0xd475('0x3f')][_0xd475('0xc9')]);_0x1da414['where']=qs['filters'](_['pick'](_0x252c29[_0xd475('0x3f')],_0x24042d[_0xd475('0xc5')]));if(_0x252c29['query'][_0xd475('0x36')]){_0x1da414[_0xd475('0xca')]=_['merge'](_0x1da414[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x1da414['attributes'],function(_0x441b7a){var _0x5df147={};_0x5df147[_0x441b7a]={'$like':'%'+_0x252c29[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x5df147;})});}_0x1da414=_[_0xd475('0x4f')]({},_0x1da414,_0x252c29['options']);return _0x2f8e71[_0xd475('0xd5')](_0x1da414);}})[_0xd475('0x1b')](function(_0x4ec1d){if(_0x4ec1d){_0x2e7b2d=_0x4ec1d['length'];if(!_0x252c29[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x1da414[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x252c29[_0xd475('0x3f')][_0xd475('0xce')]);_0x1da414['offset']=qs[_0xd475('0x15')](_0x252c29[_0xd475('0x3f')][_0xd475('0x15')]);}return _0x2f8e71['getChatInteractions'](_0x1da414);}})['then'](function(_0x589899){if(_0x589899){return _0x589899?{'count':_0x2e7b2d,'rows':_0x589899}:null;}})['then'](respondWithResult(_0x1aba1f,null))['catch'](handleError(_0x1aba1f,null));};exports[_0xd475('0xd7')]=function(_0x2b2908,_0x59df5a){var _0x1c2a42={};var _0x26a694={};var _0x50e244;var _0x39e921;return db[_0xd475('0x32')]['findOne']({'where':{'id':_0x2b2908[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x59df5a,null))[_0xd475('0x1b')](function(_0x69db29){if(_0x69db29){_0x50e244=_0x69db29;_0x26a694[_0xd475('0xc2')]=_['keys'](db['OpenchannelInteraction'][_0xd475('0xc4')]);_0x26a694[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x2b2908[_0xd475('0x3f')]);_0x26a694[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x26a694['model'],_0x26a694[_0xd475('0x3f')]);_0x1c2a42[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x26a694[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x2b2908[_0xd475('0x3f')]['fields']));_0x1c2a42['attributes']=_0x1c2a42['attributes'][_0xd475('0x47')]?_0x1c2a42[_0xd475('0x43')]:_0x26a694['model'];_0x1c2a42[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x2b2908[_0xd475('0x3f')][_0xd475('0xc9')]);_0x1c2a42[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x2b2908['query'],_0x26a694['filters']));if(_0x2b2908[_0xd475('0x3f')]['filter']){_0x1c2a42[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x1c2a42[_0xd475('0xca')],{'$or':_['map'](_0x1c2a42[_0xd475('0x43')],function(_0x594359){var _0x44127b={};_0x44127b[_0x594359]={'$like':'%'+_0x2b2908[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x44127b;})});}_0x1c2a42=_[_0xd475('0x4f')]({},_0x1c2a42,_0x2b2908['options']);return _0x50e244[_0xd475('0xd7')](_0x1c2a42);}})['then'](function(_0x53c444){if(_0x53c444){_0x39e921=_0x53c444[_0xd475('0x47')];if(!_0x2b2908[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x1c2a42['limit']=qs['limit'](_0x2b2908['query'][_0xd475('0xce')]);_0x1c2a42[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x2b2908['query'][_0xd475('0x15')]);}return _0x50e244['getOpenchannelInteractions'](_0x1c2a42);}})[_0xd475('0x1b')](function(_0x58c492){if(_0x58c492){return _0x58c492?{'count':_0x39e921,'rows':_0x58c492}:null;}})['then'](respondWithResult(_0x59df5a,null))[_0xd475('0x4e')](handleError(_0x59df5a,null));};exports['getMailInteractions']=function(_0x187848,_0xb93770){var _0x334def={'raw':!![],'where':{}};var _0x168aad={};var _0x5f562d={'count':0x0,'rows':[]};return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x187848[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0xb93770,null))[_0xd475('0x1b')](function(_0x533875){if(_0x533875){_0x168aad[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xd8')][_0xd475('0xc4')]);_0x168aad[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x187848[_0xd475('0x3f')]);_0x168aad['filters']=_[_0xd475('0xc6')](_0x168aad[_0xd475('0xc2')],_0x168aad[_0xd475('0x3f')]);_0x334def[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x168aad[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x187848[_0xd475('0x3f')][_0xd475('0xc7')]));_0x334def[_0xd475('0x43')]=_0x334def[_0xd475('0x43')][_0xd475('0x47')]?_0x334def[_0xd475('0x43')]:_0x168aad[_0xd475('0xc2')];if(!_0x187848['query'][_0xd475('0xd0')](_0xd475('0xcd'))){_0x334def[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x187848['query'][_0xd475('0xce')]);_0x334def[_0xd475('0x15')]=qs['offset'](_0x187848[_0xd475('0x3f')][_0xd475('0x15')]);}_0x334def[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x187848[_0xd475('0x3f')][_0xd475('0xc9')]);_0x334def[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x187848['query'],_0x168aad[_0xd475('0xc5')]));_0x334def[_0xd475('0xca')][_0xd475('0xd3')]=_0x533875['id'];if(_0x187848[_0xd475('0x3f')]['filter']){_0x334def[_0xd475('0xca')]=_['merge'](_0x334def[_0xd475('0xca')],{'$or':_['map'](_0x334def['attributes'],function(_0x50122b){var _0x22fbc7={};_0x22fbc7[_0x50122b]={'$like':'%'+_0x187848[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x22fbc7;})});}_0x334def=_[_0xd475('0x4f')]({},_0x334def,_0x187848[_0xd475('0x50')]);return db[_0xd475('0xd8')][_0xd475('0x17')]({'where':_0x334def['where']})[_0xd475('0x1b')](function(_0x1eaad3){_0x5f562d['count']=_0x1eaad3;if(_0x187848[_0xd475('0x3f')][_0xd475('0x3d')]){_0x334def['include']=[{'all':!![]}];}return db[_0xd475('0xd8')][_0xd475('0x45')](_0x334def);})[_0xd475('0x1b')](function(_0x88c1a){_0x5f562d['rows']=_0x88c1a;return _0x5f562d;});}})['then'](respondWithFilteredResult(_0xb93770,_0x334def))[_0xd475('0x4e')](handleError(_0xb93770,null));};exports['getSmsInteractions']=function(_0x3ee1c0,_0x419712){var _0x419b80={};var _0x28423f={};var _0x3cf4ad;var _0x25fe67;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x3ee1c0[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x419712,null))[_0xd475('0x1b')](function(_0x433928){if(_0x433928){_0x3cf4ad=_0x433928;_0x28423f[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xd9')][_0xd475('0xc4')]);_0x28423f['query']=_['keys'](_0x3ee1c0['query']);_0x28423f[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x28423f[_0xd475('0xc2')],_0x28423f[_0xd475('0x3f')]);_0x419b80[_0xd475('0x43')]=_['intersection'](_0x28423f[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x3ee1c0[_0xd475('0x3f')][_0xd475('0xc7')]));_0x419b80[_0xd475('0x43')]=_0x419b80[_0xd475('0x43')][_0xd475('0x47')]?_0x419b80[_0xd475('0x43')]:_0x28423f[_0xd475('0xc2')];_0x419b80['order']=qs[_0xd475('0xc9')](_0x3ee1c0[_0xd475('0x3f')]['sort']);_0x419b80[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x3ee1c0[_0xd475('0x3f')],_0x28423f[_0xd475('0xc5')]));if(_0x3ee1c0[_0xd475('0x3f')][_0xd475('0x36')]){_0x419b80[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x419b80[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x419b80[_0xd475('0x43')],function(_0x2ccb49){var _0x4a9275={};_0x4a9275[_0x2ccb49]={'$like':'%'+_0x3ee1c0[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x4a9275;})});}_0x419b80=_[_0xd475('0x4f')]({},_0x419b80,_0x3ee1c0[_0xd475('0x50')]);return _0x3cf4ad[_0xd475('0xda')](_0x419b80);}})[_0xd475('0x1b')](function(_0x54956d){if(_0x54956d){_0x25fe67=_0x54956d[_0xd475('0x47')];if(!_0x3ee1c0[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0x419b80[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x3ee1c0[_0xd475('0x3f')][_0xd475('0xce')]);_0x419b80[_0xd475('0x15')]=qs['offset'](_0x3ee1c0['query'][_0xd475('0x15')]);}return _0x3cf4ad['getSmsInteractions'](_0x419b80);}})[_0xd475('0x1b')](function(_0x5157d2){if(_0x5157d2){return _0x5157d2?{'count':_0x25fe67,'rows':_0x5157d2}:null;}})[_0xd475('0x1b')](respondWithResult(_0x419712,null))['catch'](handleError(_0x419712,null));};exports[_0xd475('0xdb')]=function(_0x48476d,_0x539441){var _0x492990={};var _0x35fb72={};var _0x158cb3;var _0x4b4fad;return db['User'][_0xd475('0x8d')]({'where':{'id':_0x48476d[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x539441,null))[_0xd475('0x1b')](function(_0x27ac1a){if(_0x27ac1a){_0x158cb3=_0x27ac1a;_0x35fb72['model']=_[_0xd475('0xc3')](db['FaxInteraction']['rawAttributes']);_0x35fb72[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x48476d['query']);_0x35fb72['filters']=_['intersection'](_0x35fb72[_0xd475('0xc2')],_0x35fb72['query']);_0x492990[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x35fb72[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x48476d[_0xd475('0x3f')][_0xd475('0xc7')]));_0x492990[_0xd475('0x43')]=_0x492990['attributes'][_0xd475('0x47')]?_0x492990[_0xd475('0x43')]:_0x35fb72[_0xd475('0xc2')];_0x492990['order']=qs[_0xd475('0xc9')](_0x48476d[_0xd475('0x3f')][_0xd475('0xc9')]);_0x492990[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x48476d[_0xd475('0x3f')],_0x35fb72[_0xd475('0xc5')]));if(_0x48476d['query'][_0xd475('0x36')]){_0x492990[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x492990[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x492990[_0xd475('0x43')],function(_0xa12423){var _0x4f64fa={};_0x4f64fa[_0xa12423]={'$like':'%'+_0x48476d[_0xd475('0x3f')]['filter']+'%'};return _0x4f64fa;})});}_0x492990=_[_0xd475('0x4f')]({},_0x492990,_0x48476d[_0xd475('0x50')]);return _0x158cb3[_0xd475('0xdb')](_0x492990);}})[_0xd475('0x1b')](function(_0x353d36){if(_0x353d36){_0x4b4fad=_0x353d36[_0xd475('0x47')];if(!_0x48476d[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x492990['limit']=qs[_0xd475('0xce')](_0x48476d['query'][_0xd475('0xce')]);_0x492990[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x48476d[_0xd475('0x3f')][_0xd475('0x15')]);}return _0x158cb3[_0xd475('0xdb')](_0x492990);}})[_0xd475('0x1b')](function(_0xd73c99){if(_0xd73c99){return _0xd73c99?{'count':_0x4b4fad,'rows':_0xd73c99}:null;}})[_0xd475('0x1b')](respondWithResult(_0x539441,null))[_0xd475('0x4e')](handleError(_0x539441,null));};exports[_0xd475('0xdc')]=function(_0x4bacc9,_0x396256){var _0x336a77={};var _0x48096e={};var _0x17753f;var _0x127b6f;return db['User']['findOne']({'where':{'id':_0x4bacc9[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x396256,null))[_0xd475('0x1b')](function(_0x44c71d){if(_0x44c71d){_0x17753f=_0x44c71d;_0x48096e[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xdd')][_0xd475('0xc4')]);_0x48096e[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x4bacc9['query']);_0x48096e[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x48096e[_0xd475('0xc2')],_0x48096e[_0xd475('0x3f')]);_0x336a77[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x48096e[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x4bacc9[_0xd475('0x3f')][_0xd475('0xc7')]));_0x336a77['attributes']=_0x336a77['attributes'][_0xd475('0x47')]?_0x336a77['attributes']:_0x48096e[_0xd475('0xc2')];_0x336a77['order']=qs[_0xd475('0xc9')](_0x4bacc9[_0xd475('0x3f')][_0xd475('0xc9')]);_0x336a77[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x4bacc9[_0xd475('0x3f')],_0x48096e[_0xd475('0xc5')]));if(_0x4bacc9[_0xd475('0x3f')][_0xd475('0x36')]){_0x336a77[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x336a77['where'],{'$or':_[_0xd475('0x33')](_0x336a77['attributes'],function(_0x234b04){var _0x487475={};_0x487475[_0x234b04]={'$like':'%'+_0x4bacc9[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x487475;})});}_0x336a77=_[_0xd475('0x4f')]({},_0x336a77,_0x4bacc9[_0xd475('0x50')]);return _0x17753f[_0xd475('0xdc')](_0x336a77);}})[_0xd475('0x1b')](function(_0xaead06){if(_0xaead06){_0x127b6f=_0xaead06[_0xd475('0x47')];if(!_0x4bacc9['query']['hasOwnProperty']('nolimit')){_0x336a77[_0xd475('0xce')]=qs['limit'](_0x4bacc9[_0xd475('0x3f')][_0xd475('0xce')]);_0x336a77['offset']=qs[_0xd475('0x15')](_0x4bacc9['query'][_0xd475('0x15')]);}return _0x17753f[_0xd475('0xdc')](_0x336a77);}})[_0xd475('0x1b')](function(_0x4a0a61){if(_0x4a0a61){return _0x4a0a61?{'count':_0x127b6f,'rows':_0x4a0a61}:null;}})[_0xd475('0x1b')](respondWithResult(_0x396256,null))[_0xd475('0x4e')](handleError(_0x396256,null));};exports[_0xd475('0xde')]=function(_0x35756e,_0x20239a,_0x1830ea){var _0x897fef;var _0x2375ef;var _0x246a39;var _0x57fef2=!_[_0xd475('0x5f')](_0x35756e[_0xd475('0x54')]['id'])?_0x35756e[_0xd475('0x54')]['id']:!_['isNil'](_0x35756e['user']['id'])?_0x35756e[_0xd475('0x24')]['id']:null;return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x57fef2,'role':{'$or':[_0xd475('0x22'),_0xd475('0x24'),_0xd475('0x1d')]}},'attributes':['id','name','phone',_0xd475('0xdf'),_0xd475('0x1c'),_0xd475('0x59'),_0xd475('0x93')]})[_0xd475('0x1b')](function(_0x333b1b){if(_0x333b1b){if(_0x333b1b['role']===_0xd475('0x1d')){_0x897fef=_0x333b1b;if(_0x35756e['body']['interface']){_0x246a39=util['format'](_0xd475('0xe0'),_0x897fef[_0x35756e['body'][_0xd475('0x95')]]);}else if(_0x35756e['body'][_0xd475('0xe1')]){_0x246a39=util[_0xd475('0xbb')]('SIP/%s',_0x35756e[_0xd475('0x53')][_0xd475('0xe1')]);}else{_0x246a39=util['format'](_0xd475('0xa1'),_0x897fef[_0xd475('0x30')]);}socket['to'](util[_0xd475('0xbb')](_0xd475('0xe2'),_0x897fef[_0xd475('0x30')]))[_0xd475('0x1e')](_0xd475('0xe3'),{'user':{'id':_0x897fef['id'],'name':_0x897fef['name']},'ip':_0x35756e['headers'][_0xd475('0xe4')]||_0x35756e[_0xd475('0xe5')][_0xd475('0xe6')]||_0x35756e[_0xd475('0xe7')][_0xd475('0xe6')]||_0x35756e[_0xd475('0xe5')]['socket'][_0xd475('0xe6')]});return db[_0xd475('0xa2')][_0xd475('0x20')]({'where':{'membername':_0x897fef['name']},'individualHooks':!![]});}}else{throw new db[(_0xd475('0x88'))]['ValidationError']('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0xd475('0x1b')](function(){if(_0x897fef){return _0x897fef[_0xd475('0xe8')]({'raw':!![]});}})[_0xd475('0x1b')](function(_0x411738){if(_0x897fef){if(_0x411738){_0x2375ef=_0x411738;if(_0x2375ef[_0xd475('0x47')]){var _0x252704=_0x2375ef[_0xd475('0x33')](function(_0x3c8ae5){var _0x494d69={'membername':_0x897fef['name'],'UserId':_0x897fef['id'],'queue_name':_0x3c8ae5[_0xd475('0x30')],'VoiceQueueId':_0x3c8ae5['id'],'interface':_0x246a39,'paused':_0x897fef['loginInPause']||![],'penalty':_0x3c8ae5[_0xd475('0xe9')]||0x0};return db['UserVoiceQueueRt']['upsert'](_0x494d69);});return Promise[_0xd475('0x4d')](_0x252704);}}}})['then'](function(){if(_0x897fef){return db['MemberReport']['findAll']({'where':{'membername':_0x897fef[_0xd475('0x30')],'exitAt':null}});}})[_0xd475('0x1b')](function(_0x31ab21){if(_0x897fef){var _0x305e40=[];_0x31ab21[_0xd475('0xea')](function(_0x41df14){_0x305e40[_0xd475('0x44')](_0x41df14['update']({'exitAt':moment()[_0xd475('0xbb')](_0xd475('0xeb'))}));});return Promise[_0xd475('0x4d')](_0x305e40);}})['then'](function(){if(_0x897fef){var _0x369311=[];var _0x2bf058=[];var _0x1ff017=utils[_0xd475('0xec')]();var _0x229207={'membername':_0x897fef[_0xd475('0x30')],'interface':_0x246a39,'enterAt':moment()[_0xd475('0xbb')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x897fef[_0xd475('0x1c')],'internal':_0x897fef['internal']};_0x1ff017['forEach'](function(_0x5dc431){_0x369311[_0xd475('0x44')](_[_0xd475('0x4f')]({'channel':_0x5dc431,'type':_0xd475('0xed'),'data1':_0x35756e[_0xd475('0x53')]['device'],'data2':_0x246a39},_0x229207));if(_0x897fef[_0xd475('0x93')]){_0x2bf058[_0xd475('0x44')](_[_0xd475('0x4f')]({'channel':_0x5dc431,'type':_0xd475('0xee'),'data1':_0xd475('0xef')},_0x229207));}});return db[_0xd475('0xf0')][_0xd475('0x80')](_0x369311['concat'](_0x2bf058),{'individualHooks':!![]});}})[_0xd475('0x1b')](function(){if(_0x897fef){return _0x897fef[_0xd475('0x1a')]({'online':!![],'lastLoginAt':moment()[_0xd475('0xbb')](_0xd475('0xeb')),'voicePause':_0x897fef[_0xd475('0x93')]||![],'mailPause':_0x897fef['loginInPause']||![],'chatPause':_0x897fef[_0xd475('0x93')]||![],'faxPause':_0x897fef[_0xd475('0x93')]||![],'smsPause':_0x897fef[_0xd475('0x93')]||![],'openchannelPause':_0x897fef[_0xd475('0x93')]||![],'whatsappPause':_0x897fef[_0xd475('0x93')]||![],'pauseType':_0x897fef[_0xd475('0x93')]?_0xd475('0xef'):null,'interface':_0x246a39,'lastPauseAt':moment()[_0xd475('0xbb')](_0xd475('0xeb'))});}})[_0xd475('0x1b')](function(_0x32e08e){if(_0x35756e[_0xd475('0xf1')]){return _0x1830ea();}else{return Promise[_0xd475('0xf2')](_0x32e08e)[_0xd475('0x1b')](respondWithResult(_0x20239a,null));}})['catch'](handleError(_0x20239a,null));};exports[_0xd475('0xf3')]=function(_0xe30b85,_0xf77f81){var _0xef09c6;return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0xe30b85['params']['id'],'role':_0xd475('0x1d')},'attributes':['id','name','role']})[_0xd475('0x1b')](handleEntityNotFound(_0xf77f81,null))[_0xd475('0x1b')](function(_0x588629){if(_0x588629){_0xef09c6=_0x588629;return db[_0xd475('0xa2')][_0xd475('0x20')]({'where':{'membername':_0xef09c6[_0xd475('0x30')]},'individualHooks':!![]});}})[_0xd475('0x1b')](function(){return db[_0xd475('0xf0')][_0xd475('0x45')]({'where':{'membername':_0xef09c6[_0xd475('0x30')],'exitAt':null}});})[_0xd475('0x1b')](function(_0x2a59c6){var _0x663a23=[];_0x2a59c6[_0xd475('0xea')](function(_0x380025){_0x663a23[_0xd475('0x44')](_0x380025[_0xd475('0x1a')]({'exitAt':moment()[_0xd475('0xbb')](_0xd475('0xeb'))}));});return Promise[_0xd475('0x4d')](_0x663a23);})[_0xd475('0x1b')](function(){return _0xef09c6[_0xd475('0x1a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xd475('0x1b')](respondWithResult(_0xf77f81,null))[_0xd475('0x4e')](handleError(_0xf77f81,null));};exports[_0xd475('0xf4')]=function(_0x3a5075,_0x5b5997){var _0x372ef0;return db[_0xd475('0xa2')][_0xd475('0x1a')]({'paused':0x1},{'where':{'UserId':_0x3a5075[_0xd475('0x54')]['id']},'individualHooks':!![]})[_0xd475('0x1b')](function(){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x3a5075[_0xd475('0x54')]['id'],'role':_0xd475('0x1d')},'attributes':['id',_0xd475('0x30'),_0xd475('0x1c'),_0xd475('0x59'),'interface',_0xd475('0x92')]});})['then'](handleEntityNotFound(_0x5b5997,null))[_0xd475('0x1b')](function(_0x2be1cf){if(_0x2be1cf){_0x372ef0=_0x2be1cf;return db[_0xd475('0xf0')][_0xd475('0x45')]({'where':{'membername':_0x372ef0[_0xd475('0x30')],'type':'PAUSE','exitAt':null}});}})[_0xd475('0x1b')](function(_0x5e1822){if(_0x5e1822['length']){var _0x296e32=moment()[_0xd475('0xbb')](_0xd475('0xeb'));for(var _0xc123bc=0x0,_0x30872d=_0x5e1822['length'];_0xc123bc<_0x30872d;_0xc123bc++){_0x5e1822[_0xc123bc][_0xd475('0xf5')]({'exitAt':_0x296e32});}}})[_0xd475('0x1b')](function(){var _0x5e83cc=[];var _0x4df29d=utils[_0xd475('0xec')]();_0x4df29d[_0xd475('0xea')](function(_0x549876){_0x5e83cc[_0xd475('0x44')]({'channel':_0x549876,'membername':_0x372ef0[_0xd475('0x30')],'interface':_['isNil'](_0x372ef0[_0xd475('0x95')])?util[_0xd475('0xbb')]('SIP/%s',_0x372ef0['name']):_0x372ef0[_0xd475('0x95')],'type':'PAUSE','enterAt':moment()[_0xd475('0xbb')](_0xd475('0xeb')),'data1':_0x3a5075['body'][_0xd475('0xf6')]||_0xd475('0xf7'),'role':_0x372ef0[_0xd475('0x1c')],'internal':_0x372ef0[_0xd475('0x59')]});});return db[_0xd475('0xf0')][_0xd475('0x80')](_0x5e83cc,{'individualHooks':!![]});})[_0xd475('0x1b')](function(){return _0x372ef0[_0xd475('0x1a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x3a5075[_0xd475('0x53')][_0xd475('0xf6')]||_0xd475('0xf7'),'lastPauseAt':moment()[_0xd475('0xbb')](_0xd475('0xeb'))});})[_0xd475('0x1b')](respondWithResult(_0x5b5997,null))['catch'](handleError(_0x5b5997,null));};exports[_0xd475('0xf8')]=function(_0x285df9,_0x1e1166){if(_0x285df9[_0xd475('0x53')]['channel']&&!utils[_0xd475('0x96')](_0x285df9[_0xd475('0x53')][_0xd475('0x91')])){throw new APIBadRequestError(util[_0xd475('0xbb')](_0xd475('0xf9'),_0x285df9['body'][_0xd475('0x91')]));}return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x285df9[_0xd475('0x54')]['id']},'attributes':['id',_0xd475('0x30'),_0xd475('0x1c'),_0xd475('0x59'),'interface',_0xd475('0x92'),_0xd475('0x94'),_0xd475('0xfa'),_0xd475('0xfb'),_0xd475('0xfc'),'openchannelPause',_0xd475('0xfd'),'whatsappPause',_0xd475('0xfe'),'lastPauseAt']})[_0xd475('0x1b')](function(_0x59ef0b){if(!_0x59ef0b){throw new APINotFoundError(util[_0xd475('0xbb')](_0xd475('0xff'),_0x285df9['params']['id']));}return _0x59ef0b[_0xd475('0xf8')](_0x285df9[_0xd475('0x53')]['channel']);})[_0xd475('0x1b')](respondWithResult(_0x1e1166,null))[_0xd475('0x4e')](APIHandleError(_0x1e1166));};exports[_0xd475('0x100')]=function(_0x3da766,_0x409ae2){var _0xd735f={};var _0x524b81={};var _0x5045d4;var _0x4c4ea4;return db['User'][_0xd475('0x8d')]({'where':{'id':_0x3da766[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x409ae2,null))[_0xd475('0x1b')](function(_0x29c736){if(_0x29c736){_0x5045d4=_0x29c736;_0x524b81[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0x101')]['rawAttributes']);_0x524b81[_0xd475('0x3f')]=_['keys'](_0x3da766[_0xd475('0x3f')]);_0x524b81[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x524b81[_0xd475('0xc2')],_0x524b81['query']);_0xd735f[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x524b81['model'],qs['fields'](_0x3da766['query'][_0xd475('0xc7')]));_0xd735f[_0xd475('0x43')]=_0xd735f['attributes'][_0xd475('0x47')]?_0xd735f[_0xd475('0x43')]:_0x524b81[_0xd475('0xc2')];_0xd735f[_0xd475('0xc8')]=qs['sort'](_0x3da766[_0xd475('0x3f')]['sort']);_0xd735f[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x3da766[_0xd475('0x3f')],_0x524b81[_0xd475('0xc5')]));if(_0x3da766['query'][_0xd475('0x36')]){_0xd735f['where']=_[_0xd475('0x4f')](_0xd735f[_0xd475('0xca')],{'$or':_['map'](_0xd735f['attributes'],function(_0x343780){var _0x12b107={};_0x12b107[_0x343780]={'$like':'%'+_0x3da766['query']['filter']+'%'};return _0x12b107;})});}_0xd735f=_['merge']({},_0xd735f,_0x3da766[_0xd475('0x50')]);return _0x5045d4[_0xd475('0x100')](_0xd735f);}})[_0xd475('0x1b')](function(_0x25f37c){if(_0x25f37c){_0x4c4ea4=_0x25f37c['length'];if(!_0x3da766[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0xd735f['limit']=qs[_0xd475('0xce')](_0x3da766[_0xd475('0x3f')][_0xd475('0xce')]);_0xd735f[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x3da766[_0xd475('0x3f')]['offset']);}return _0x5045d4[_0xd475('0x100')](_0xd735f);}})['then'](function(_0x501c61){if(_0x501c61){return _0x501c61?{'count':_0x4c4ea4,'rows':_0x501c61}:null;}})['then'](respondWithResult(_0x409ae2,null))['catch'](handleError(_0x409ae2,null));};exports[_0xd475('0x102')]=function(_0x5898c4,_0x372db7){var _0x375ee8=_0x5898c4[_0xd475('0x54')]['id'];var _0x476cec=_0x5898c4[_0xd475('0x53')]?_0x5898c4[_0xd475('0x53')][_0xd475('0x57')]:null;var _0x3e0637=[];return Promise[_0xd475('0xf2')]()['then'](function(){if(!_0x476cec)throw new APIBadRequestError(_0xd475('0x103'));})[_0xd475('0x1b')](function(){return db[_0xd475('0x32')]['findOne']({'where':{'id':_0x375ee8}});})[_0xd475('0x1b')](function(_0x5b8be4){if(!_0x5b8be4)throw new APINotFoundError(util[_0xd475('0xbb')]('User\x20with\x20id\x20%s\x20not\x20found',_0x5898c4['params']['id']));return db[_0xd475('0x60')][_0xd475('0x104')](function(_0x422a51){return _0x5b8be4[_0xd475('0x102')](_0x476cec,{'transaction':_0x422a51})[_0xd475('0x1b')](function(){return db[_0xd475('0x101')][_0xd475('0x45')]({'where':{'id':{'$in':_0x476cec}}});})['then'](function(_0x1bcf5c){var _0x132efc=_['map'](_0x1bcf5c,function(_0xa4c558){return _0xa4c558[_0xd475('0x105')]();});return Promise['all'](_0x132efc);})[_0xd475('0x1b')](function(_0x5a517b){_0x3e0637=_[_0xd475('0x106')](_0x5a517b);var _0x8fab53=_[_0xd475('0x33')](_0x3e0637,function(_0x34c372){return _0x34c372[_0xd475('0x107')](_0x5b8be4['id'],{'transaction':_0x422a51});});return Promise[_0xd475('0x4d')](_0x8fab53);})['then'](function(){if(!_0x5b8be4[_0xd475('0x92')])return;var _0x113d51=_[_0xd475('0x36')](_0x3e0637,function(_0x4143d1){return _0x4143d1[_0xd475('0x108')](_0xd475('0x91'))===_0xd475('0x109');});var _0x257fd0=_['map'](_0x113d51,function(_0x58d1bb){return db[_0xd475('0xa2')]['upsert']({'membername':_0x5b8be4[_0xd475('0x30')],'UserId':_0x5b8be4['id'],'queue_name':_0x58d1bb['name'],'VoiceQueueId':_0x58d1bb['id'],'interface':_[_0xd475('0x5f')](_0x5b8be4['interface'])?util[_0xd475('0xbb')](_0xd475('0xa1'),_0x5b8be4[_0xd475('0x30')]):_0x5b8be4[_0xd475('0x95')],'paused':_0x5b8be4['voicePause']||![],'penalty':_0x5b8be4[_0xd475('0x9b')]},{'transaction':_0x422a51});});return Promise[_0xd475('0x4d')](_0x257fd0);})[_0xd475('0x1b')](function(){return db[_0xd475('0x10a')][_0xd475('0x45')]({'where':{'teamId':{'$in':_0x476cec}}});})[_0xd475('0x1b')](function(_0x55d78b){var _0x31e1e0=_[_0xd475('0x33')](_0x55d78b,function(_0x4cef9f){return db['UserVoicePrefix'][_0xd475('0x7c')]({'UserId':_0x5b8be4['id'],'VoicePrefixId':_0x4cef9f['VoicePrefixId']},{'transaction':_0x422a51});});return Promise['all'](_0x31e1e0);});});})[_0xd475('0x1b')](function(){for(var _0x5d104a=0x0;_0x5d104a<_0x3e0637['length'];_0x5d104a++){var _0x8b20cb=_0x3e0637[_0x5d104a][_0xd475('0x108')](_0xd475('0x91'));var _0x2b5785=_0x8b20cb+_0xd475('0x9d');socket['emit'](_0xd475('0x24')+_0x8b20cb+_0xd475('0x9e'),{'UserId':_0x375ee8,['queueField']:_0x3e0637[_0x5d104a]['id']});}})[_0xd475('0x1b')](respondWithStatusCode(_0x372db7,null))[_0xd475('0x4e')](APIHandleError(_0x372db7));};exports[_0xd475('0x10b')]=function(_0x300147,_0x275335){var _0x302f08=_0x300147[_0xd475('0x54')]['id'];var _0x448d7f=null;if(_0x300147[_0xd475('0x3f')]['ids']){_0x448d7f=_['isArray'](_0x300147[_0xd475('0x3f')]['ids'])?_0x300147[_0xd475('0x3f')][_0xd475('0x57')]:[_0x300147['query']['ids']];}var _0x306f8c=[];return Promise['resolve']()['then'](function(){if(!_0x448d7f)throw new APIBadRequestError('Query\x20parameter\x20\x27ids\x27\x20is\x20required');})['then'](function(){return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x302f08}});})[_0xd475('0x1b')](function(_0x4a659d){if(!_0x4a659d)throw new APINotFoundError(util['format'](_0xd475('0xff'),_0x300147['params']['id']));return db[_0xd475('0x60')]['transaction'](function(_0x3d93ee){return _0x4a659d[_0xd475('0x10b')](_0x448d7f,{'transaction':_0x3d93ee})[_0xd475('0x1b')](function(){return db[_0xd475('0x101')]['findAll']({'where':{'id':{'$in':_0x448d7f}}});})['then'](function(_0x21c42d){var _0x38d43c=_[_0xd475('0x33')](_0x21c42d,function(_0x14cbff){return _0x14cbff[_0xd475('0x105')]();});return Promise['all'](_0x38d43c);})[_0xd475('0x1b')](function(_0x2bea88){_0x306f8c=_['flattenDeep'](_0x2bea88);var _0x87acc8=_[_0xd475('0x33')](_0x306f8c,function(_0x24d500){return _0x24d500[_0xd475('0x10c')](_0x4a659d['id'],{'transaction':_0x3d93ee});});return Promise[_0xd475('0x4d')](_0x87acc8);})[_0xd475('0x1b')](function(){if(!_0x4a659d[_0xd475('0x92')])return;var _0x18a778=_['filter'](_0x306f8c,function(_0x5a4973){return _0x5a4973['getDataValue']('channel')===_0xd475('0x109');});var _0x271ca2=_[_0xd475('0x33')](_0x18a778,function(_0x503dcd){return db[_0xd475('0xa2')][_0xd475('0x20')]({'where':{'VoiceQueueId':_0x503dcd['id'],'UserId':_0x4a659d['id']},'transaction':_0x3d93ee});});return Promise['all'](_0x271ca2);})[_0xd475('0x1b')](function(){return db[_0xd475('0x10a')][_0xd475('0x45')]({'where':{'teamId':{'$in':_0x448d7f}}});})[_0xd475('0x1b')](function(_0x2b61be){var _0x252c80=_[_0xd475('0x33')](_0x2b61be,function(_0x2f551c){return db[_0xd475('0x10d')][_0xd475('0x20')]({'where':{'UserId':_0x4a659d['id'],'VoicePrefixId':_0x2f551c[_0xd475('0x10e')]}},{'transaction':_0x3d93ee});});return Promise[_0xd475('0x4d')](_0x252c80);});});})['then'](function(){for(var _0x1856ea=0x0;_0x1856ea<_0x306f8c[_0xd475('0x47')];_0x1856ea++){var _0x1875fe=_0x306f8c[_0x1856ea]['getDataValue'](_0xd475('0x91'));var _0x4594e2=_0x1875fe+_0xd475('0x9d');socket[_0xd475('0x1e')](_0xd475('0x24')+_0x1875fe+'Queue:remove',{'UserId':_0x302f08,['queueField']:_0x306f8c[_0x1856ea]['id']});}})['then'](respondWithStatusCode(_0x275335,null))[_0xd475('0x4e')](APIHandleError(_0x275335));};exports['getLists']=function(_0x1ee5f2,_0x5d9ef1){var _0x4af9a7={};var _0x3db4df={};var _0x44828d;var _0x137675;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x1ee5f2['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x5d9ef1,null))[_0xd475('0x1b')](function(_0x2b3c80){if(_0x2b3c80){_0x44828d=_0x2b3c80;_0x3db4df[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xbc')][_0xd475('0xc4')]);_0x3db4df['query']=_[_0xd475('0xc3')](_0x1ee5f2[_0xd475('0x3f')]);_0x3db4df[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x3db4df[_0xd475('0xc2')],_0x3db4df['query']);_0x4af9a7['attributes']=_[_0xd475('0xc6')](_0x3db4df[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x1ee5f2[_0xd475('0x3f')][_0xd475('0xc7')]));_0x4af9a7[_0xd475('0x43')]=_0x4af9a7['attributes']['length']?_0x4af9a7[_0xd475('0x43')]:_0x3db4df[_0xd475('0xc2')];_0x4af9a7[_0xd475('0xc8')]=qs['sort'](_0x1ee5f2[_0xd475('0x3f')][_0xd475('0xc9')]);_0x4af9a7['where']=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x1ee5f2[_0xd475('0x3f')],_0x3db4df['filters']));if(_0x1ee5f2['query'][_0xd475('0x36')]){_0x4af9a7['where']=_[_0xd475('0x4f')](_0x4af9a7[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x4af9a7[_0xd475('0x43')],function(_0x2e98ac){var _0x4f4849={};_0x4f4849[_0x2e98ac]={'$like':'%'+_0x1ee5f2[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x4f4849;})});}_0x4af9a7=_[_0xd475('0x4f')]({},_0x4af9a7,_0x1ee5f2[_0xd475('0x50')]);return _0x44828d['getLists'](_0x4af9a7);}})[_0xd475('0x1b')](function(_0x4af7fc){if(_0x4af7fc){_0x137675=_0x4af7fc['length'];if(!_0x1ee5f2[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x4af9a7[_0xd475('0xce')]=qs['limit'](_0x1ee5f2['query'][_0xd475('0xce')]);_0x4af9a7[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x1ee5f2['query'][_0xd475('0x15')]);}return _0x44828d[_0xd475('0x10f')](_0x4af9a7);}})[_0xd475('0x1b')](function(_0x3941a1){if(_0x3941a1){return _0x3941a1?{'count':_0x137675,'rows':_0x3941a1}:null;}})[_0xd475('0x1b')](respondWithResult(_0x5d9ef1,null))[_0xd475('0x4e')](handleError(_0x5d9ef1,null));};exports[_0xd475('0x110')]=function(_0x11dc5f,_0xc4cdf8){var _0x2bdd15={};var _0x198069={};var _0x29ae7c;return db['User'][_0xd475('0x8d')]({'where':{'id':_0x11dc5f[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0xc4cdf8,null))[_0xd475('0x1b')](function(_0x910873){if(_0x910873){_0x29ae7c=_0x910873;_0x198069[_0xd475('0xc2')]=_['keys'](db[_0xd475('0x32')]['rawAttributes']);_0x198069['query']=_[_0xd475('0xc3')](_0x11dc5f[_0xd475('0x3f')]);_0x198069[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x198069[_0xd475('0xc2')],_0x198069[_0xd475('0x3f')]);_0x2bdd15[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x198069[_0xd475('0xc2')],qs['fields'](_0x11dc5f[_0xd475('0x3f')][_0xd475('0xc7')]));_0x2bdd15[_0xd475('0x43')]=_0x2bdd15['attributes'][_0xd475('0x47')]?_0x2bdd15[_0xd475('0x43')]:_0x198069[_0xd475('0xc2')];_0x2bdd15['order']=qs[_0xd475('0xc9')](_0x11dc5f[_0xd475('0x3f')]['sort']);_0x2bdd15[_0xd475('0xca')]=qs['filters'](_[_0xd475('0xcb')](_0x11dc5f[_0xd475('0x3f')],_0x198069[_0xd475('0xc5')]));if(_0x11dc5f[_0xd475('0x3f')]['filter']){_0x2bdd15[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x2bdd15['where'],{'$or':_['map'](_0x2bdd15['attributes'],function(_0x29e8be){var _0x21be9a={};_0x21be9a[_0x29e8be]={'$like':'%'+_0x11dc5f[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x21be9a;})});}_0x2bdd15[_0xd475('0xc2')]=db['User'];_0x2bdd15['as']=_0xd475('0x25');_0x2bdd15=_['merge']({},_0x2bdd15,_0x11dc5f[_0xd475('0x50')]);return _0x29ae7c[_0xd475('0xe8')]({'include':[_0x2bdd15]});}})[_0xd475('0x1b')](function(_0xb02234){if(_0xb02234){var _0x1db2fc={},_0x5ea4b9=[];for(var _0x5bf003=0x0;_0x5bf003<_0xb02234['length'];_0x5bf003+=0x1){for(var _0x3d2790=0x0,_0x3a58dd;_0x3d2790<_0xb02234[_0x5bf003][_0xd475('0x25')][_0xd475('0x47')];_0x3d2790+=0x1){_0x3a58dd=_0xb02234[_0x5bf003]['Agents'][_0x3d2790]['get']({'plain':!![]});_0x1db2fc[_0x3a58dd['id']]=_0x3a58dd;}}_0x1db2fc=_[_0xd475('0x111')](_0x1db2fc);for(var _0x2cd6ae=qs['offset'](_0x11dc5f['query'][_0xd475('0x15')]);_0x2cd6ae<_0x1db2fc['length']&&_0x5ea4b9['length']<qs['limit'](_0x11dc5f[_0xd475('0x3f')][_0xd475('0xce')]);_0x2cd6ae+=0x1){if(_0x1db2fc[_0x2cd6ae]){_0x5ea4b9[_0xd475('0x44')](_0x1db2fc[_0x2cd6ae]);}}return{'count':_0x1db2fc[_0xd475('0x47')],'rows':_0x5ea4b9};}})[_0xd475('0x1b')](respondWithResult(_0xc4cdf8,null))[_0xd475('0x4e')](handleError(_0xc4cdf8,null));};exports[_0xd475('0x20')]=function(_0x5c9918,_0x1606ec){if(_0x5c9918[_0xd475('0x24')]['id']==_0x5c9918[_0xd475('0x54')]['id']){return _0x1606ec[_0xd475('0x13')](0x1f4)['send']({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0xd475('0x32')]['find']({'where':{'id':_0x5c9918[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x1606ec,null))['then'](removeEntity(_0x1606ec,null))[_0xd475('0x4e')](handleError(_0x1606ec,null));};exports['addChatInteractions']=function(_0x1e947d,_0x23005c){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x1e947d[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x23005c,null))['then'](function(_0xafc0eb){if(_0xafc0eb){return _0xafc0eb[_0xd475('0x112')](_0x1e947d[_0xd475('0x53')][_0xd475('0x57')],_[_0xd475('0x58')](_0x1e947d[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{})['spread'](function(){for(var _0x26c983=0x0;_0x26c983<_0x1e947d['body'][_0xd475('0x57')][_0xd475('0x47')];_0x26c983+=0x1){socket[_0xd475('0x1e')](_0xd475('0x113'),{'ChatInteractionId':Number(_0x1e947d[_0xd475('0x53')][_0xd475('0x57')][_0x26c983]),'UserId':Number(_0x1e947d[_0xd475('0x54')]['id'])});}return _0x1e947d[_0xd475('0x53')][_0xd475('0x57')];});}})[_0xd475('0x1b')](respondWithResult(_0x23005c,null))[_0xd475('0x4e')](handleError(_0x23005c,null));};exports[_0xd475('0x114')]=function(_0xb9f5f9,_0x34caab){return db[_0xd475('0x32')]['find']({'where':{'id':_0xb9f5f9[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x34caab,null))['then'](function(_0x10489a){if(_0x10489a){return _0x10489a[_0xd475('0x114')](_0xb9f5f9[_0xd475('0x3f')][_0xd475('0x57')])[_0xd475('0x1b')](function(){if(_[_0xd475('0x115')](_0xb9f5f9['query'][_0xd475('0x57')])){for(var _0x389f9c=0x0;_0x389f9c<_0xb9f5f9[_0xd475('0x3f')]['ids'][_0xd475('0x47')];_0x389f9c+=0x1){socket['emit'](_0xd475('0x116'),{'ChatInteractionId':Number(_0xb9f5f9[_0xd475('0x3f')][_0xd475('0x57')][_0x389f9c]),'UserId':Number(_0xb9f5f9[_0xd475('0x54')]['id'])});}}else{socket['emit'](_0xd475('0x116'),{'ChatInteractionId':Number(_0xb9f5f9[_0xd475('0x3f')][_0xd475('0x57')]),'UserId':Number(_0xb9f5f9[_0xd475('0x54')]['id'])});}});}})[_0xd475('0x1b')](respondWithStatusCode(_0x34caab,null))[_0xd475('0x4e')](handleError(_0x34caab,null));};exports['addMailInteractions']=function(_0x3da1f5,_0xcb1b23){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x3da1f5['params']['id']}})['then'](handleEntityNotFound(_0xcb1b23,null))[_0xd475('0x1b')](function(_0x49838f){if(_0x49838f){return _0x49838f['addMailInteractions'](_0x3da1f5[_0xd475('0x53')]['ids'],_['omit'](_0x3da1f5[_0xd475('0x53')],['ids','id'])||{})[_0xd475('0x9c')](function(){for(var _0x3095e0=0x0;_0x3095e0<_0x3da1f5[_0xd475('0x53')]['ids'][_0xd475('0x47')];_0x3095e0+=0x1){socket[_0xd475('0x1e')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x3da1f5[_0xd475('0x53')][_0xd475('0x57')][_0x3095e0]),'UserId':Number(_0x3da1f5[_0xd475('0x54')]['id'])});}return _0x3da1f5[_0xd475('0x53')]['ids'];});}})[_0xd475('0x1b')](respondWithResult(_0xcb1b23,null))[_0xd475('0x4e')](handleError(_0xcb1b23,null));};exports[_0xd475('0x117')]=function(_0x44adb5,_0x55b14a){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x44adb5['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x55b14a,null))['then'](function(_0x458591){if(_0x458591){return _0x458591[_0xd475('0x117')](_0x44adb5[_0xd475('0x3f')][_0xd475('0x57')])[_0xd475('0x1b')](function(){if(_[_0xd475('0x115')](_0x44adb5[_0xd475('0x3f')][_0xd475('0x57')])){for(var _0x26e7cb=0x0;_0x26e7cb<_0x44adb5[_0xd475('0x3f')]['ids'][_0xd475('0x47')];_0x26e7cb+=0x1){socket[_0xd475('0x1e')](_0xd475('0x118'),{'MailInteractionId':Number(_0x44adb5[_0xd475('0x3f')][_0xd475('0x57')][_0x26e7cb]),'UserId':Number(_0x44adb5[_0xd475('0x54')]['id'])});}}else{socket[_0xd475('0x1e')](_0xd475('0x118'),{'MailInteractionId':Number(_0x44adb5['query'][_0xd475('0x57')]),'UserId':Number(_0x44adb5['params']['id'])});}});}})[_0xd475('0x1b')](respondWithStatusCode(_0x55b14a,null))[_0xd475('0x4e')](handleError(_0x55b14a,null));};exports[_0xd475('0x119')]=function(_0x9b90a6,_0x517af6){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x9b90a6[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x517af6,null))[_0xd475('0x1b')](function(_0x3b3954){if(_0x3b3954){return _0x3b3954['addFaxInteractions'](_0x9b90a6[_0xd475('0x53')][_0xd475('0x57')],_['omit'](_0x9b90a6[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{})[_0xd475('0x9c')](function(){for(var _0x31d1e7=0x0;_0x31d1e7<_0x9b90a6[_0xd475('0x53')]['ids'][_0xd475('0x47')];_0x31d1e7+=0x1){socket['emit']('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x9b90a6[_0xd475('0x53')][_0xd475('0x57')][_0x31d1e7]),'UserId':Number(_0x9b90a6['params']['id'])});}return _0x9b90a6['body']['ids'];});}})[_0xd475('0x1b')](respondWithResult(_0x517af6,null))['catch'](handleError(_0x517af6,null));};exports['removeFaxInteractions']=function(_0x43403b,_0x2274ce){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x43403b[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x2274ce,null))[_0xd475('0x1b')](function(_0x2475d4){if(_0x2475d4){return _0x2475d4[_0xd475('0x11a')](_0x43403b[_0xd475('0x3f')]['ids'])[_0xd475('0x1b')](function(){if(_[_0xd475('0x115')](_0x43403b[_0xd475('0x3f')]['ids'])){for(var _0x42504e=0x0;_0x42504e<_0x43403b['query'][_0xd475('0x57')]['length'];_0x42504e+=0x1){socket[_0xd475('0x1e')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x43403b[_0xd475('0x3f')][_0xd475('0x57')][_0x42504e]),'UserId':Number(_0x43403b['params']['id'])});}}else{socket[_0xd475('0x1e')](_0xd475('0x11b'),{'FaxInteractionId':Number(_0x43403b[_0xd475('0x3f')][_0xd475('0x57')]),'UserId':Number(_0x43403b[_0xd475('0x54')]['id'])});}});}})['then'](respondWithStatusCode(_0x2274ce,null))[_0xd475('0x4e')](handleError(_0x2274ce,null));};exports[_0xd475('0x11c')]=function(_0x26340c,_0x39befc){return db[_0xd475('0x32')]['find']({'where':{'id':_0x26340c[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x39befc,null))[_0xd475('0x1b')](function(_0x206f1b){if(_0x206f1b){return _0x206f1b[_0xd475('0x11c')](_0x26340c[_0xd475('0x53')][_0xd475('0x57')],_['omit'](_0x26340c[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{})[_0xd475('0x9c')](function(){for(var _0x2e2b5b=0x0;_0x2e2b5b<_0x26340c[_0xd475('0x53')][_0xd475('0x57')][_0xd475('0x47')];_0x2e2b5b+=0x1){socket[_0xd475('0x1e')](_0xd475('0x11d'),{'SmsInteractionId':Number(_0x26340c['body'][_0xd475('0x57')][_0x2e2b5b]),'UserId':Number(_0x26340c[_0xd475('0x54')]['id'])});}return _0x26340c['body'][_0xd475('0x57')];});}})[_0xd475('0x1b')](respondWithResult(_0x39befc,null))[_0xd475('0x4e')](handleError(_0x39befc,null));};exports[_0xd475('0x11e')]=function(_0x9ee167,_0x351a66){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x9ee167[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x351a66,null))[_0xd475('0x1b')](function(_0x1adca1){if(_0x1adca1){return _0x1adca1['removeSmsInteractions'](_0x9ee167[_0xd475('0x3f')][_0xd475('0x57')])[_0xd475('0x1b')](function(){if(_['isArray'](_0x9ee167[_0xd475('0x3f')]['ids'])){for(var _0x2ab899=0x0;_0x2ab899<_0x9ee167[_0xd475('0x3f')]['ids'][_0xd475('0x47')];_0x2ab899+=0x1){socket['emit'](_0xd475('0x11f'),{'SmsInteractionId':Number(_0x9ee167[_0xd475('0x3f')][_0xd475('0x57')][_0x2ab899]),'UserId':Number(_0x9ee167[_0xd475('0x54')]['id'])});}}else{socket[_0xd475('0x1e')](_0xd475('0x11f'),{'SmsInteractionId':Number(_0x9ee167[_0xd475('0x3f')][_0xd475('0x57')]),'UserId':Number(_0x9ee167[_0xd475('0x54')]['id'])});}});}})[_0xd475('0x1b')](respondWithStatusCode(_0x351a66,null))['catch'](handleError(_0x351a66,null));};exports[_0xd475('0x120')]=function(_0x23dfef,_0x188b1f){return db[_0xd475('0x32')]['find']({'where':{'id':_0x23dfef[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x188b1f,null))[_0xd475('0x1b')](function(_0x4afbb1){if(_0x4afbb1){return _0x4afbb1[_0xd475('0x120')](_0x23dfef[_0xd475('0x53')]['ids'],_[_0xd475('0x58')](_0x23dfef[_0xd475('0x53')],['ids','id'])||{})[_0xd475('0x9c')](function(){for(var _0x4fc866=0x0;_0x4fc866<_0x23dfef[_0xd475('0x53')]['ids']['length'];_0x4fc866+=0x1){socket[_0xd475('0x1e')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x23dfef[_0xd475('0x53')][_0xd475('0x57')][_0x4fc866]),'UserId':Number(_0x23dfef[_0xd475('0x54')]['id'])});}return _0x23dfef[_0xd475('0x53')][_0xd475('0x57')];});}})[_0xd475('0x1b')](respondWithResult(_0x188b1f,null))[_0xd475('0x4e')](handleError(_0x188b1f,null));};exports[_0xd475('0x121')]=function(_0x200456,_0x336185){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x200456[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x336185,null))[_0xd475('0x1b')](function(_0x5a64a0){if(_0x5a64a0){return _0x5a64a0[_0xd475('0x121')](_0x200456[_0xd475('0x3f')][_0xd475('0x57')])['then'](function(){if(_[_0xd475('0x115')](_0x200456[_0xd475('0x3f')][_0xd475('0x57')])){for(var _0x1e92b4=0x0;_0x1e92b4<_0x200456[_0xd475('0x3f')][_0xd475('0x57')]['length'];_0x1e92b4+=0x1){socket[_0xd475('0x1e')](_0xd475('0x122'),{'OpenchannelInteractionId':Number(_0x200456[_0xd475('0x3f')][_0xd475('0x57')][_0x1e92b4]),'UserId':Number(_0x200456[_0xd475('0x54')]['id'])});}}else{socket['emit'](_0xd475('0x122'),{'OpenchannelInteractionId':Number(_0x200456[_0xd475('0x3f')][_0xd475('0x57')]),'UserId':Number(_0x200456[_0xd475('0x54')]['id'])});}});}})[_0xd475('0x1b')](respondWithStatusCode(_0x336185,null))[_0xd475('0x4e')](handleError(_0x336185,null));};exports['addWhatsappInteractions']=function(_0x5a90b5,_0xe8abd){return db[_0xd475('0x32')]['find']({'where':{'id':_0x5a90b5['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0xe8abd,null))[_0xd475('0x1b')](function(_0x40b300){if(_0x40b300){return _0x40b300['addWhatsappInteractions'](_0x5a90b5['body'][_0xd475('0x57')],_[_0xd475('0x58')](_0x5a90b5[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{})['spread'](function(){for(var _0x21d774=0x0;_0x21d774<_0x5a90b5[_0xd475('0x53')][_0xd475('0x57')][_0xd475('0x47')];_0x21d774+=0x1){socket[_0xd475('0x1e')](_0xd475('0x123'),{'WhatsappInteractionId':Number(_0x5a90b5[_0xd475('0x53')]['ids'][_0x21d774]),'UserId':Number(_0x5a90b5[_0xd475('0x54')]['id'])});}return _0x5a90b5[_0xd475('0x53')][_0xd475('0x57')];});}})[_0xd475('0x1b')](respondWithResult(_0xe8abd,null))[_0xd475('0x4e')](handleError(_0xe8abd,null));};exports['removeWhatsappInteractions']=function(_0x57d0ba,_0x140229){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x57d0ba[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x140229,null))[_0xd475('0x1b')](function(_0x358c03){if(_0x358c03){return _0x358c03[_0xd475('0x124')](_0x57d0ba[_0xd475('0x3f')][_0xd475('0x57')]);}})[_0xd475('0x1b')](respondWithStatusCode(_0x140229,null))[_0xd475('0x4e')](handleError(_0x140229,null));};exports[_0xd475('0x125')]=function(_0xc86ed3,_0x3a18fe){var _0x474547={};var _0x49249f={};var _0x2264c0;var _0x71b3d3;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0xc86ed3['params']['id']}})['then'](handleEntityNotFound(_0x3a18fe,null))[_0xd475('0x1b')](function(_0x1ed9a0){if(_0x1ed9a0){_0x2264c0=_0x1ed9a0;_0x49249f[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0x126')][_0xd475('0xc4')]);_0x49249f[_0xd475('0x3f')]=_['keys'](_0xc86ed3[_0xd475('0x3f')]);_0x49249f[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x49249f[_0xd475('0xc2')],_0x49249f[_0xd475('0x3f')]);_0x474547[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x49249f[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0xc86ed3[_0xd475('0x3f')][_0xd475('0xc7')]));_0x474547['attributes']=_0x474547[_0xd475('0x43')][_0xd475('0x47')]?_0x474547[_0xd475('0x43')]:_0x49249f[_0xd475('0xc2')];_0x474547['order']=qs[_0xd475('0xc9')](_0xc86ed3['query']['sort']);_0x474547[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0xc86ed3[_0xd475('0x3f')],_0x49249f[_0xd475('0xc5')]));if(_0xc86ed3[_0xd475('0x3f')][_0xd475('0x36')]){_0x474547[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x474547[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x474547[_0xd475('0x43')],function(_0x252ab4){var _0x169b63={};_0x169b63[_0x252ab4]={'$like':'%'+_0xc86ed3[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x169b63;})});}_0x474547=_[_0xd475('0x4f')]({},_0x474547,_0xc86ed3[_0xd475('0x50')]);return _0x2264c0[_0xd475('0x125')](_0x474547);}})[_0xd475('0x1b')](function(_0x4aceca){if(_0x4aceca){_0x71b3d3=_0x4aceca[_0xd475('0x47')];if(!_0xc86ed3[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0x474547[_0xd475('0xce')]=qs[_0xd475('0xce')](_0xc86ed3[_0xd475('0x3f')][_0xd475('0xce')]);_0x474547[_0xd475('0x15')]=qs['offset'](_0xc86ed3[_0xd475('0x3f')]['offset']);}return _0x2264c0[_0xd475('0x125')](_0x474547);}})[_0xd475('0x1b')](function(_0x237c13){if(_0x237c13){return _0x237c13?{'count':_0x71b3d3,'rows':_0x237c13}:null;}})['then'](respondWithResult(_0x3a18fe,null))['catch'](handleError(_0x3a18fe,null));};exports[_0xd475('0x127')]=function(_0x138de2,_0x22e884){var _0x22eb57={};var _0x240760={};var _0x5ad35e;var _0x837ef7;return db[_0xd475('0x32')]['findOne']({'where':{'id':_0x138de2['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x22e884,null))[_0xd475('0x1b')](function(_0x26c79b){if(_0x26c79b){_0x5ad35e=_0x26c79b;_0x240760['model']=_[_0xd475('0xc3')](db['FaxAccount'][_0xd475('0xc4')]);_0x240760[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x138de2['query']);_0x240760[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x240760['model'],_0x240760[_0xd475('0x3f')]);_0x22eb57['attributes']=_[_0xd475('0xc6')](_0x240760[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x138de2['query']['fields']));_0x22eb57[_0xd475('0x43')]=_0x22eb57['attributes'][_0xd475('0x47')]?_0x22eb57[_0xd475('0x43')]:_0x240760['model'];_0x22eb57['order']=qs[_0xd475('0xc9')](_0x138de2[_0xd475('0x3f')][_0xd475('0xc9')]);_0x22eb57[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x138de2[_0xd475('0x3f')],_0x240760[_0xd475('0xc5')]));if(_0x138de2[_0xd475('0x3f')][_0xd475('0x36')]){_0x22eb57[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x22eb57[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x22eb57['attributes'],function(_0x4450b8){var _0x4eecd9={};_0x4eecd9[_0x4450b8]={'$like':'%'+_0x138de2[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x4eecd9;})});}_0x22eb57=_[_0xd475('0x4f')]({},_0x22eb57,_0x138de2[_0xd475('0x50')]);return _0x5ad35e[_0xd475('0x127')](_0x22eb57);}})[_0xd475('0x1b')](function(_0x9204fc){if(_0x9204fc){_0x837ef7=_0x9204fc[_0xd475('0x47')];if(!_0x138de2['query'][_0xd475('0xd0')](_0xd475('0xcd'))){_0x22eb57[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x138de2[_0xd475('0x3f')]['limit']);_0x22eb57[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x138de2[_0xd475('0x3f')][_0xd475('0x15')]);}return _0x5ad35e[_0xd475('0x127')](_0x22eb57);}})[_0xd475('0x1b')](function(_0x1a096f){if(_0x1a096f){return _0x1a096f?{'count':_0x837ef7,'rows':_0x1a096f}:null;}})[_0xd475('0x1b')](respondWithResult(_0x22e884,null))[_0xd475('0x4e')](handleError(_0x22e884,null));};exports[_0xd475('0x128')]=function(_0x57b0f2,_0x24392d){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x57b0f2[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x24392d,null))[_0xd475('0x1b')](function(_0x9afdef){if(_0x9afdef){return _0x9afdef[_0xd475('0x128')](_0x57b0f2['body']['ids'],_['omit'](_0x57b0f2['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x24392d,null))['catch'](handleError(_0x24392d,null));};exports[_0xd475('0x129')]=function(_0x19bd7d,_0x343788){return db[_0xd475('0x32')]['find']({'where':{'id':_0x19bd7d[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x343788,null))['then'](function(_0x5f4bbb){if(_0x5f4bbb){return _0x5f4bbb[_0xd475('0x129')](_0x19bd7d[_0xd475('0x3f')][_0xd475('0x57')]);}})[_0xd475('0x1b')](respondWithStatusCode(_0x343788,null))['catch'](handleError(_0x343788,null));};exports[_0xd475('0x12a')]=function(_0xd74020,_0x3429bd){var _0x427a56={};var _0x3028e2={};var _0x205e5d;var _0x12295a;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0xd74020[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x3429bd,null))['then'](function(_0x26d132){if(_0x26d132){_0x205e5d=_0x26d132;_0x3028e2[_0xd475('0xc2')]=_['keys'](db[_0xd475('0x12b')][_0xd475('0xc4')]);_0x3028e2[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0xd74020[_0xd475('0x3f')]);_0x3028e2[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x3028e2['model'],_0x3028e2[_0xd475('0x3f')]);_0x427a56[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x3028e2[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0xd74020[_0xd475('0x3f')]['fields']));_0x427a56[_0xd475('0x43')]=_0x427a56[_0xd475('0x43')][_0xd475('0x47')]?_0x427a56[_0xd475('0x43')]:_0x3028e2[_0xd475('0xc2')];_0x427a56[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0xd74020[_0xd475('0x3f')][_0xd475('0xc9')]);_0x427a56[_0xd475('0xca')]=qs['filters'](_[_0xd475('0xcb')](_0xd74020[_0xd475('0x3f')],_0x3028e2[_0xd475('0xc5')]));if(_0xd74020[_0xd475('0x3f')][_0xd475('0x36')]){_0x427a56[_0xd475('0xca')]=_['merge'](_0x427a56['where'],{'$or':_[_0xd475('0x33')](_0x427a56[_0xd475('0x43')],function(_0x5b79f2){var _0x24a712={};_0x24a712[_0x5b79f2]={'$like':'%'+_0xd74020[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x24a712;})});}_0x427a56=_['merge']({},_0x427a56,_0xd74020[_0xd475('0x50')]);return _0x205e5d[_0xd475('0x12a')](_0x427a56);}})[_0xd475('0x1b')](function(_0x2fe45f){if(_0x2fe45f){_0x12295a=_0x2fe45f[_0xd475('0x47')];if(!_0xd74020[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x427a56['limit']=qs[_0xd475('0xce')](_0xd74020['query']['limit']);_0x427a56[_0xd475('0x15')]=qs[_0xd475('0x15')](_0xd74020[_0xd475('0x3f')]['offset']);}return _0x205e5d['getMailAccounts'](_0x427a56);}})['then'](function(_0x339505){if(_0x339505){return _0x339505?{'count':_0x12295a,'rows':_0x339505}:null;}})[_0xd475('0x1b')](respondWithResult(_0x3429bd,null))[_0xd475('0x4e')](handleError(_0x3429bd,null));};exports[_0xd475('0x12c')]=function(_0x9a046c,_0x55a41f){return db[_0xd475('0x32')]['find']({'where':{'id':_0x9a046c[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x55a41f,null))[_0xd475('0x1b')](function(_0x519d5d){if(_0x519d5d){return _0x519d5d[_0xd475('0x12c')](_0x9a046c['body'][_0xd475('0x57')],_[_0xd475('0x58')](_0x9a046c[_0xd475('0x53')],['ids','id'])||{});}})[_0xd475('0x1b')](respondWithResult(_0x55a41f,null))[_0xd475('0x4e')](handleError(_0x55a41f,null));};exports[_0xd475('0x12d')]=function(_0x166475,_0x24f918){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x166475[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x24f918,null))[_0xd475('0x1b')](function(_0x4bf073){if(_0x4bf073){return _0x4bf073[_0xd475('0x12d')](_0x166475[_0xd475('0x3f')]['ids']);}})[_0xd475('0x1b')](respondWithStatusCode(_0x24f918,null))[_0xd475('0x4e')](handleError(_0x24f918,null));};exports[_0xd475('0x12e')]=function(_0x5f1273,_0x10e0bd){var _0x1def68={};var _0x14cbc6={};var _0x1ae7f4;var _0x1ce832;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x5f1273['params']['id']}})['then'](handleEntityNotFound(_0x10e0bd,null))[_0xd475('0x1b')](function(_0x130f7f){if(_0x130f7f){_0x1ae7f4=_0x130f7f;_0x14cbc6[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0x12f')][_0xd475('0xc4')]);_0x14cbc6[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x5f1273[_0xd475('0x3f')]);_0x14cbc6[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x14cbc6[_0xd475('0xc2')],_0x14cbc6['query']);_0x1def68[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x14cbc6['model'],qs[_0xd475('0xc7')](_0x5f1273[_0xd475('0x3f')][_0xd475('0xc7')]));_0x1def68[_0xd475('0x43')]=_0x1def68[_0xd475('0x43')][_0xd475('0x47')]?_0x1def68['attributes']:_0x14cbc6[_0xd475('0xc2')];_0x1def68[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x5f1273['query'][_0xd475('0xc9')]);_0x1def68['where']=qs[_0xd475('0xc5')](_['pick'](_0x5f1273[_0xd475('0x3f')],_0x14cbc6['filters']));if(_0x5f1273[_0xd475('0x3f')][_0xd475('0x36')]){_0x1def68['where']=_['merge'](_0x1def68['where'],{'$or':_[_0xd475('0x33')](_0x1def68['attributes'],function(_0x1786c8){var _0x466ed3={};_0x466ed3[_0x1786c8]={'$like':'%'+_0x5f1273[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x466ed3;})});}_0x1def68=_[_0xd475('0x4f')]({},_0x1def68,_0x5f1273[_0xd475('0x50')]);return _0x1ae7f4[_0xd475('0x12e')](_0x1def68);}})[_0xd475('0x1b')](function(_0x3bf658){if(_0x3bf658){_0x1ce832=_0x3bf658[_0xd475('0x47')];if(!_0x5f1273[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x1def68[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x5f1273[_0xd475('0x3f')]['limit']);_0x1def68[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x5f1273[_0xd475('0x3f')][_0xd475('0x15')]);}return _0x1ae7f4[_0xd475('0x12e')](_0x1def68);}})[_0xd475('0x1b')](function(_0xcf0804){if(_0xcf0804){return _0xcf0804?{'count':_0x1ce832,'rows':_0xcf0804}:null;}})[_0xd475('0x1b')](respondWithResult(_0x10e0bd,null))['catch'](handleError(_0x10e0bd,null));};exports[_0xd475('0x130')]=function(_0x402202,_0x55589c){return db['User']['find']({'where':{'id':_0x402202[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x55589c,null))[_0xd475('0x1b')](function(_0x873946){if(_0x873946){return _0x873946[_0xd475('0x130')](_0x402202['body'][_0xd475('0x57')],_[_0xd475('0x58')](_0x402202[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{});}})[_0xd475('0x1b')](respondWithResult(_0x55589c,null))[_0xd475('0x4e')](handleError(_0x55589c,null));};exports[_0xd475('0x131')]=function(_0x516fc6,_0x4a0fe1){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x516fc6[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x4a0fe1,null))[_0xd475('0x1b')](function(_0x1db5f7){if(_0x1db5f7){return _0x1db5f7[_0xd475('0x131')](_0x516fc6[_0xd475('0x3f')]['ids']);}})[_0xd475('0x1b')](respondWithStatusCode(_0x4a0fe1,null))['catch'](handleError(_0x4a0fe1,null));};exports['getSmsAccounts']=function(_0x3aee4a,_0x57fdfd){var _0x56116a={};var _0x1aa170={};var _0xfff336;var _0xd21b5a;return db['User']['findOne']({'where':{'id':_0x3aee4a[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x57fdfd,null))[_0xd475('0x1b')](function(_0x2a35b9){if(_0x2a35b9){_0xfff336=_0x2a35b9;_0x1aa170[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0x132')][_0xd475('0xc4')]);_0x1aa170[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x3aee4a['query']);_0x1aa170[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x1aa170[_0xd475('0xc2')],_0x1aa170[_0xd475('0x3f')]);_0x56116a[_0xd475('0x43')]=_['intersection'](_0x1aa170[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x3aee4a[_0xd475('0x3f')][_0xd475('0xc7')]));_0x56116a[_0xd475('0x43')]=_0x56116a['attributes']['length']?_0x56116a[_0xd475('0x43')]:_0x1aa170[_0xd475('0xc2')];_0x56116a[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x3aee4a['query'][_0xd475('0xc9')]);_0x56116a['where']=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x3aee4a[_0xd475('0x3f')],_0x1aa170[_0xd475('0xc5')]));if(_0x3aee4a['query']['filter']){_0x56116a['where']=_[_0xd475('0x4f')](_0x56116a[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x56116a[_0xd475('0x43')],function(_0x3567a8){var _0x21c9ae={};_0x21c9ae[_0x3567a8]={'$like':'%'+_0x3aee4a[_0xd475('0x3f')]['filter']+'%'};return _0x21c9ae;})});}_0x56116a=_[_0xd475('0x4f')]({},_0x56116a,_0x3aee4a[_0xd475('0x50')]);return _0xfff336[_0xd475('0x133')](_0x56116a);}})[_0xd475('0x1b')](function(_0x18b22b){if(_0x18b22b){_0xd21b5a=_0x18b22b[_0xd475('0x47')];if(!_0x3aee4a[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x56116a[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x3aee4a[_0xd475('0x3f')][_0xd475('0xce')]);_0x56116a['offset']=qs['offset'](_0x3aee4a[_0xd475('0x3f')][_0xd475('0x15')]);}return _0xfff336[_0xd475('0x133')](_0x56116a);}})[_0xd475('0x1b')](function(_0x50d817){if(_0x50d817){return _0x50d817?{'count':_0xd21b5a,'rows':_0x50d817}:null;}})[_0xd475('0x1b')](respondWithResult(_0x57fdfd,null))[_0xd475('0x4e')](handleError(_0x57fdfd,null));};exports[_0xd475('0x134')]=function(_0x3a767c,_0x2c243a){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x3a767c[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x2c243a,null))[_0xd475('0x1b')](function(_0x1e8e08){if(_0x1e8e08){return _0x1e8e08[_0xd475('0x134')](_0x3a767c['body'][_0xd475('0x57')],_[_0xd475('0x58')](_0x3a767c[_0xd475('0x53')],['ids','id'])||{});}})[_0xd475('0x1b')](respondWithResult(_0x2c243a,null))[_0xd475('0x4e')](handleError(_0x2c243a,null));};exports[_0xd475('0x135')]=function(_0x12b3ea,_0x502025){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x12b3ea['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x502025,null))['then'](function(_0x30ed33){if(_0x30ed33){return _0x30ed33[_0xd475('0x135')](_0x12b3ea[_0xd475('0x3f')]['ids']);}})[_0xd475('0x1b')](respondWithStatusCode(_0x502025,null))[_0xd475('0x4e')](handleError(_0x502025,null));};exports[_0xd475('0x136')]=function(_0x226f59,_0x198631){var _0x41a60d={};var _0x29ed0f={};var _0x98d8ba;var _0x4afb14;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x226f59[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x198631,null))['then'](function(_0x33e8ef){if(_0x33e8ef){_0x98d8ba=_0x33e8ef;_0x29ed0f[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0x137')][_0xd475('0xc4')]);_0x29ed0f[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x226f59[_0xd475('0x3f')]);_0x29ed0f[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x29ed0f[_0xd475('0xc2')],_0x29ed0f[_0xd475('0x3f')]);_0x41a60d[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x29ed0f[_0xd475('0xc2')],qs['fields'](_0x226f59[_0xd475('0x3f')][_0xd475('0xc7')]));_0x41a60d[_0xd475('0x43')]=_0x41a60d[_0xd475('0x43')][_0xd475('0x47')]?_0x41a60d[_0xd475('0x43')]:_0x29ed0f['model'];_0x41a60d[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x226f59[_0xd475('0x3f')]['sort']);_0x41a60d[_0xd475('0xca')]=qs[_0xd475('0xc5')](_['pick'](_0x226f59[_0xd475('0x3f')],_0x29ed0f[_0xd475('0xc5')]));if(_0x226f59[_0xd475('0x3f')][_0xd475('0x36')]){_0x41a60d['where']=_['merge'](_0x41a60d[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x41a60d[_0xd475('0x43')],function(_0x3ba020){var _0x3f7e83={};_0x3f7e83[_0x3ba020]={'$like':'%'+_0x226f59['query'][_0xd475('0x36')]+'%'};return _0x3f7e83;})});}_0x41a60d=_[_0xd475('0x4f')]({},_0x41a60d,_0x226f59[_0xd475('0x50')]);return _0x98d8ba[_0xd475('0x136')](_0x41a60d);}})[_0xd475('0x1b')](function(_0x2194e0){if(_0x2194e0){_0x4afb14=_0x2194e0[_0xd475('0x47')];if(!_0x226f59[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0x41a60d['limit']=qs[_0xd475('0xce')](_0x226f59[_0xd475('0x3f')][_0xd475('0xce')]);_0x41a60d[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x226f59['query'][_0xd475('0x15')]);}return _0x98d8ba[_0xd475('0x136')](_0x41a60d);}})['then'](function(_0x1883bb){if(_0x1883bb){return _0x1883bb?{'count':_0x4afb14,'rows':_0x1883bb}:null;}})['then'](respondWithResult(_0x198631,null))[_0xd475('0x4e')](handleError(_0x198631,null));};exports[_0xd475('0x138')]=function(_0x4db3bc,_0x18942e){return db['User'][_0xd475('0x2a')]({'where':{'id':_0x4db3bc[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x18942e,null))[_0xd475('0x1b')](function(_0x46d087){if(_0x46d087){return _0x46d087['addChatWebsites'](_0x4db3bc['body'][_0xd475('0x57')],_['omit'](_0x4db3bc[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{});}})['then'](respondWithResult(_0x18942e,null))[_0xd475('0x4e')](handleError(_0x18942e,null));};exports[_0xd475('0x139')]=function(_0x211cf7,_0x169100){return db['User']['find']({'where':{'id':_0x211cf7['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x169100,null))[_0xd475('0x1b')](function(_0x23ce64){if(_0x23ce64){return _0x23ce64[_0xd475('0x139')](_0x211cf7[_0xd475('0x3f')][_0xd475('0x57')]);}})[_0xd475('0x1b')](respondWithStatusCode(_0x169100,null))[_0xd475('0x4e')](handleError(_0x169100,null));};exports['getWhatsappAccounts']=function(_0x2f3347,_0x2ebea1){var _0x2dc070={};var _0x55e0e3={};var _0x5b4d51;var _0x368a40;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x2f3347[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x2ebea1,null))[_0xd475('0x1b')](function(_0x1623b9){if(_0x1623b9){_0x5b4d51=_0x1623b9;_0x55e0e3['model']=_[_0xd475('0xc3')](db[_0xd475('0x13a')][_0xd475('0xc4')]);_0x55e0e3[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x2f3347[_0xd475('0x3f')]);_0x55e0e3[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x55e0e3[_0xd475('0xc2')],_0x55e0e3[_0xd475('0x3f')]);_0x2dc070['attributes']=_[_0xd475('0xc6')](_0x55e0e3[_0xd475('0xc2')],qs['fields'](_0x2f3347[_0xd475('0x3f')][_0xd475('0xc7')]));_0x2dc070['attributes']=_0x2dc070[_0xd475('0x43')][_0xd475('0x47')]?_0x2dc070[_0xd475('0x43')]:_0x55e0e3[_0xd475('0xc2')];_0x2dc070['order']=qs['sort'](_0x2f3347[_0xd475('0x3f')][_0xd475('0xc9')]);_0x2dc070['where']=qs['filters'](_[_0xd475('0xcb')](_0x2f3347['query'],_0x55e0e3[_0xd475('0xc5')]));if(_0x2f3347['query']['filter']){_0x2dc070[_0xd475('0xca')]=_['merge'](_0x2dc070[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x2dc070[_0xd475('0x43')],function(_0x36afdb){var _0x13803d={};_0x13803d[_0x36afdb]={'$like':'%'+_0x2f3347['query'][_0xd475('0x36')]+'%'};return _0x13803d;})});}_0x2dc070=_[_0xd475('0x4f')]({},_0x2dc070,_0x2f3347[_0xd475('0x50')]);return _0x5b4d51[_0xd475('0x13b')](_0x2dc070);}})['then'](function(_0x637061){if(_0x637061){_0x368a40=_0x637061[_0xd475('0x47')];if(!_0x2f3347[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x2dc070[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x2f3347[_0xd475('0x3f')][_0xd475('0xce')]);_0x2dc070[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x2f3347[_0xd475('0x3f')]['offset']);}return _0x5b4d51[_0xd475('0x13b')](_0x2dc070);}})[_0xd475('0x1b')](function(_0x4d0bf4){if(_0x4d0bf4){return _0x4d0bf4?{'count':_0x368a40,'rows':_0x4d0bf4}:null;}})[_0xd475('0x1b')](respondWithResult(_0x2ebea1,null))[_0xd475('0x4e')](handleError(_0x2ebea1,null));};exports['addWhatsappAccounts']=function(_0x4d550a,_0x2d0a77){return db['User'][_0xd475('0x2a')]({'where':{'id':_0x4d550a[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x2d0a77,null))[_0xd475('0x1b')](function(_0x5e496d){if(_0x5e496d){return _0x5e496d[_0xd475('0x13c')](_0x4d550a[_0xd475('0x53')]['ids'],_[_0xd475('0x58')](_0x4d550a[_0xd475('0x53')],['ids','id'])||{});}})[_0xd475('0x1b')](respondWithResult(_0x2d0a77,null))['catch'](handleError(_0x2d0a77,null));};exports[_0xd475('0x13d')]=function(_0x22c430,_0x2aabf8){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x22c430[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x2aabf8,null))['then'](function(_0xaae8d2){if(_0xaae8d2){return _0xaae8d2[_0xd475('0x13d')](_0x22c430['query']['ids']);}})['then'](respondWithStatusCode(_0x2aabf8,null))[_0xd475('0x4e')](handleError(_0x2aabf8,null));};exports[_0xd475('0x13e')]=function(_0xedac75,_0x1c3a4c){var _0xa0af2b={},_0x59ae48={},_0x1e4e9f={'count':0x0,'rows':[]};var _0xb98b0f=db[_0xd475('0x13f')][_0xd475('0xc4')];_0x59ae48[_0xd475('0xc2')]=_[_0xd475('0xc3')](_0xb98b0f);_0x59ae48[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0xedac75[_0xd475('0x3f')]);_0x59ae48[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x59ae48[_0xd475('0xc2')],_0x59ae48[_0xd475('0x3f')]);_0x59ae48['filters']=_[_0xd475('0xba')](_0x59ae48[_0xd475('0xc5')],[_0xd475('0x140'),_0xd475('0x141'),'$gt',_0xd475('0x142'),_0xd475('0x143'),_0xd475('0x144'),_0xd475('0x145'),'$eq',_0xd475('0x146'),_0xd475('0x147'),_0xd475('0x148'),_0xd475('0x149'),_0xd475('0x14a'),'$like',_0xd475('0x14b'),'$iLike',_0xd475('0x14c'),_0xd475('0x14d'),_0xd475('0x14e'),_0xd475('0x14f'),_0xd475('0x150'),'$any']);_0xa0af2b[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x59ae48['model'],qs['fields'](_0xedac75['query'][_0xd475('0xc7')]));_0xa0af2b['attributes']=_0xa0af2b[_0xd475('0x43')]['length']?_0xa0af2b['attributes']:_0x59ae48[_0xd475('0xc2')];if(!_0xedac75[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0xa0af2b[_0xd475('0xce')]=qs[_0xd475('0xce')](_0xedac75[_0xd475('0x3f')][_0xd475('0xce')]);_0xa0af2b['offset']=qs['offset'](_0xedac75[_0xd475('0x3f')][_0xd475('0x15')]);}_0xa0af2b[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0xedac75[_0xd475('0x3f')][_0xd475('0xc9')]);_0xa0af2b[_0xd475('0xca')]=qs['filters'](_[_0xd475('0xcb')](_0xedac75[_0xd475('0x3f')],_0x59ae48[_0xd475('0xc5')]));if(_0xedac75[_0xd475('0x3f')][_0xd475('0x36')]){_0xa0af2b[_0xd475('0xca')]=_[_0xd475('0x4f')](_0xa0af2b[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0xa0af2b[_0xd475('0x43')],function(_0x17df0b){var _0x4dcac2={};_0x4dcac2[_0x17df0b]={'$like':'%'+_0xedac75[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x4dcac2;})});}_0xa0af2b['where']={'$and':[_0xa0af2b[_0xd475('0xca')],{'$or':[{'UserId':_0xedac75['params']['id']},{'OwnerId':_0xedac75[_0xd475('0x54')]['id']}]}]};_0xa0af2b=_['merge']({},_0xa0af2b,_0xedac75[_0xd475('0x50')]);var _0x535fd4={'where':_0xa0af2b[_0xd475('0xca')]};return db[_0xd475('0x13f')][_0xd475('0x17')](_0x535fd4)[_0xd475('0x1b')](function(_0x588656){_0x1e4e9f['count']=_0x588656;if(_0xedac75[_0xd475('0x3f')][_0xd475('0x3d')]){_0xa0af2b[_0xd475('0x3e')]=[{'attributes':['id',_0xd475('0x151'),_0xd475('0x152'),_0xd475('0x153')],'model':db[_0xd475('0x154')],'as':_0xd475('0x155')},{'attributes':['id',_0xd475('0x30'),_0xd475('0x156')],'model':db[_0xd475('0xa0')],'as':_0xd475('0xcc')}];}return db[_0xd475('0x13f')][_0xd475('0x45')](_0xa0af2b);})['then'](function(_0x3e95c3){_0x1e4e9f[_0xd475('0x46')]=_0x3e95c3;return _0x1e4e9f;})[_0xd475('0x1b')](respondWithFilteredResult(_0x1c3a4c,_0xa0af2b))[_0xd475('0x4e')](handleError(_0x1c3a4c,null));};exports['getApiKey']=function(_0x4f0cc0,_0x5226b1){if(!_[_0xd475('0x5f')](_0x4f0cc0['user']['id'])&&(_0x4f0cc0[_0xd475('0x24')]['role']==_0xd475('0x22')||_0x4f0cc0[_0xd475('0x24')][_0xd475('0x1c')]==_0xd475('0x24'))){return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x4f0cc0['params']['id']},'raw':!![]})[_0xd475('0x1b')](function(_0x273226){return authService[_0xd475('0x157')](_0x273226);})[_0xd475('0x1b')](function(_0x53c45f){if(_0x53c45f){return _0x5226b1[_0xd475('0x13')](0xc8)[_0xd475('0x14')]({'api_key':_0x53c45f[_0xd475('0x158')]});}else{return _0x5226b1[_0xd475('0x13')](0xcc)[_0xd475('0x14')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0xd475('0x4e')](handleError(_0x5226b1,0x193));}else{return _0x5226b1['status'](0x191)[_0xd475('0x14')]({'message':_0xd475('0x159')});}};exports[_0xd475('0x15a')]=function(_0x3a915f,_0x7b6e7e){if(!_[_0xd475('0x5f')](_0x3a915f['user']['id'])&&(_0x3a915f[_0xd475('0x24')][_0xd475('0x1c')]==_0xd475('0x22')||_0x3a915f[_0xd475('0x24')][_0xd475('0x1c')]=='user')){return db['User']['find']({'where':{'id':_0x3a915f[_0xd475('0x54')]['id']}})['then'](function(_0x1ddafa){return authService[_0xd475('0x15b')](_0x1ddafa);})['then'](function(_0x1cadf0){return db['User']['update']({'apiKeyIat':_0x1cadf0[_0xd475('0x15c')],'apiKeyNonce':_0x1cadf0[_0xd475('0x15d')]},{'where':{'id':_0x3a915f[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](function(){return _0x7b6e7e['status'](0xc8)['json']({'api_key':_0x1cadf0['token']});});})[_0xd475('0x4e')](handleError(_0x7b6e7e,0x193));}else{return _0x7b6e7e[_0xd475('0x13')](0x191)[_0xd475('0x14')]({'message':_0xd475('0x159')});}};exports[_0xd475('0x15e')]=function(_0x57d395,_0x582e20){if(!_[_0xd475('0x5f')](_0x57d395[_0xd475('0x24')]['id'])&&(_0x57d395[_0xd475('0x24')][_0xd475('0x1c')]==_0xd475('0x22')||_0x57d395[_0xd475('0x24')]['role']==_0xd475('0x24'))){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x57d395[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x582e20,null))['then'](function(_0x253860){if(_0x253860&&_0x253860[_0xd475('0x15f')]&&_0x253860[_0xd475('0x160')])return _0x253860;else throw{'message':_0xd475('0x161')};})['then'](function(){return db[_0xd475('0x32')][_0xd475('0x1a')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x57d395[_0xd475('0x54')]['id']}});})[_0xd475('0x1b')](respondWithStatusCode(_0x582e20,0xc8))[_0xd475('0x4e')](handleError(_0x582e20,0x193));}else{return _0x582e20['status'](0x191)[_0xd475('0x14')]({'message':_0xd475('0x159')});}};exports[_0xd475('0x162')]=function(_0x1b5174,_0x26ab71){var _0x47daa4=_0x1b5174[_0xd475('0x24')]['get']({'plain':!![]});if(!_0x47daa4){return _0x26ab71[_0xd475('0x13')](0x191)['send'](_0xd475('0x163'));}else{Promise['resolve']()['then'](function(){if(_0x1b5174[_0xd475('0x3f')][_0xd475('0x40')]!==_0xd475('0x41'))return;return _0x1b5174['user'][_0xd475('0x164')]();})[_0xd475('0x1b')](function(_0x79d759){if(!_0x79d759)return;return _0x79d759[_0xd475('0x21')]({'plain':!![]});})[_0xd475('0x1b')](function(_0x592af6){_0x47daa4['userSetting']=_0x592af6;return _0x26ab71[_0xd475('0x13')](0xc8)[_0xd475('0x14')](_0x47daa4);});}};exports[_0xd475('0x165')]=function(_0x31ae4b,_0x1fb94e){var _0x36a9df={'offset':0x0};var _0x2cc245={'count':0x0,'rows':[]};var _0x219db7=[_0xd475('0x166'),_0xd475('0x167'),_0xd475('0x168')];var _0x88eb41=[];var _0x242255=[];var _0x4a0daa=[];var _0x2b29b0=_0x31ae4b[_0xd475('0x3f')]['teams'];var _0x3f8a61=_0x31ae4b[_0xd475('0x3f')]['queues'];var _0x8dbcbf=_0x31ae4b[_0xd475('0x3f')][_0xd475('0x36')];return Promise[_0xd475('0xf2')]()[_0xd475('0x1b')](function(){if(!_0x2b29b0){return[];}return db[_0xd475('0x101')][_0xd475('0x45')]({'attributes':['id',_0xd475('0x30')],'where':{'id':_0x2b29b0}});})[_0xd475('0x1b')](function(_0x564657){_0x4a0daa=_0x564657;if(!_0x3f8a61){return[];}return db[_0xd475('0xa0')][_0xd475('0x45')]({'attributes':['id','name'],'type':_0xd475('0x169'),'where':{'id':_0x3f8a61}});})[_0xd475('0x1b')](function(_0x2744bf){_0x242255=_0x2744bf;var _0x2dacad=_0x4a0daa['concat'](_0x242255)['map'](function(_0x118719){return _0x118719[_0xd475('0x110')]({'attributes':['id',_0xd475('0x30'),'internal',_0xd475('0x92')],'raw':!![]});});return Promise[_0xd475('0x4d')](_0x2dacad);})['then'](function(_0x187152){var _0x15c8fe=_[_0xd475('0x16a')](_0x187152);if(_0x8dbcbf){if(_0x3f8a61||_0x2b29b0){return _0x15c8fe[_0xd475('0x36')](function(_0x3df836){return _0x3df836[_0xd475('0x30')][_0xd475('0x99')]()[_0xd475('0x29')](_0x8dbcbf[_0xd475('0x99')]())||_0x3df836[_0xd475('0x59')][_0xd475('0x16b')]()[_0xd475('0x29')](_0x8dbcbf);});}else{return db[_0xd475('0x32')][_0xd475('0x45')]({'attributes':['id','name',_0xd475('0x59'),_0xd475('0x92')],'where':{'role':_0xd475('0x1d'),'$or':[db[_0xd475('0x60')][_0xd475('0xca')](db[_0xd475('0x60')]['fn'](_0xd475('0x16c'),db[_0xd475('0x60')][_0xd475('0x16d')](_0xd475('0x30'))),{'$like':'%'+_0x8dbcbf[_0xd475('0x99')]()+'%'}),{'internal':{'$like':'%'+_0x8dbcbf+'%'}}]},'raw':!![]});}}else{return _0x15c8fe;}})['then'](function(_0x519055){var _0x254d97=_0xd475('0x30');var _0x31e7ee='asc';if(_0x31ae4b[_0xd475('0x3f')][_0xd475('0xc9')]){_0x31e7ee=_0x31ae4b[_0xd475('0x3f')]['sort'][0x0]==='-'?'desc':_0xd475('0x16e');_0x254d97=_0x31e7ee===_0xd475('0x16e')?_0x31ae4b[_0xd475('0x3f')][_0xd475('0xc9')]:_0x31ae4b[_0xd475('0x3f')]['sort'][_0xd475('0x16f')](0x1);}return _(_0x519055)[_0xd475('0x170')]('id')[_0xd475('0x171')]([function(_0x458f35){return _0x254d97===_0xd475('0x30')?_0x458f35[_0x254d97][_0xd475('0x99')]():_0x458f35[_0x254d97];}],[_0x31e7ee])['map'](function(_0x397cc9){return _[_0xd475('0xcb')](_0x397cc9,['id','name',_0xd475('0x59'),'online']);})[_0xd475('0x28')]();})[_0xd475('0x1b')](function(_0x48430a){_0x88eb41=_0x48430a;return rta[_0xd475('0x172')]();})[_0xd475('0x1b')](function(_0x1b32b5){return _0x88eb41[_0xd475('0x33')](function(_0x589d57){var _0x2f9f54=_['find'](_0x1b32b5[_0xd475('0x46')],['id',_0x589d57['id']]);if(!_0x2f9f54||!_0x589d57['online']){_0x589d57['status']=_0xd475('0x173');}else if(_0x2f9f54['voicePause']){_0x589d57[_0xd475('0x13')]=_0xd475('0xf4');}else if(_0x2f9f54[_0xd475('0x174')]===_0xd475('0x175')||!_0x2f9f54[_0xd475('0x174')]){_0x589d57[_0xd475('0x13')]=_0xd475('0x175');}else{_0x589d57[_0xd475('0x13')]=_0x219db7['includes'](_0x2f9f54[_0xd475('0x174')])?_0xd475('0x92'):_0xd475('0x176');}return _0x589d57;});})[_0xd475('0x1b')](function(_0x2be9fa){if(!_0x31ae4b[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0x36a9df['limit']=qs[_0xd475('0xce')](_0x31ae4b[_0xd475('0x3f')][_0xd475('0xce')]||0xa);_0x36a9df[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x31ae4b[_0xd475('0x3f')][_0xd475('0x15')]);}_0x2cc245['count']=_0x2be9fa[_0xd475('0x47')];_0x2cc245[_0xd475('0x46')]=_0x36a9df[_0xd475('0xce')]?_0x2be9fa['slice'](_0x36a9df['offset'],_0x36a9df['offset']+_0x36a9df[_0xd475('0xce')]):_0x2be9fa;return _0x2cc245;})['then'](respondWithFilteredResult(_0x1fb94e,_0x36a9df))[_0xd475('0x4e')](handleError(_0x1fb94e,null));};function get_open_tabs(_0x45320a,_0x13498a){var _0x53ac8d=_0x45320a[_0xd475('0x177')](0x0)[_0xd475('0x178')]()+_0x45320a[_0xd475('0x179')](0x1);var _0x1806a3={'type':db[_0xd475('0x88')][_0xd475('0x17a')]['SELECT'],'raw':!![]};return new Promise(function(_0x272418,_0x532bea){var _0x2a0ad6=squel['select']()[_0xd475('0x17b')](_0xd475('0x17c')+_0x53ac8d+_0xd475('0x17d'),'id')['field'](_0xd475('0x17e'))[_0xd475('0x63')](_0xd475('0x17f')+_0x45320a+_0xd475('0x180'),'ui')[_0xd475('0xca')](_0xd475('0x181'),_0x13498a['id']);return db[_0xd475('0x60')]['query'](_0x2a0ad6[_0xd475('0x16b')](),_0x1806a3)[_0xd475('0x1b')](function(_0x31246c){_0x13498a[_0x53ac8d+_0xd475('0x182')]=_0x31246c;_0x272418(_0x31246c);})[_0xd475('0x4e')](function(_0x34be33){_0x532bea(_0x34be33);});});}exports[_0xd475('0x183')]=function(_0xebd707,_0x40e7a7){var _0x455662=_0xebd707[_0xd475('0x54')]['id'];var _0x4d6598=_0xebd707['body'][_0xd475('0x184')];return db[_0xd475('0x32')]['update']({'messengerSoundNotification':_0x4d6598},{'where':{'id':_0x455662}})[_0xd475('0x1b')](respondWithStatusCode(_0x40e7a7,null))[_0xd475('0x4e')](handleError(_0x40e7a7,null));};
\ No newline at end of file
index 6ddb031..963ecb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ffc=['setMaxListeners','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x4276da,_0x1c2145){var _0x3dcf77=function(_0x2c5631){while(--_0x2c5631){_0x4276da['push'](_0x4276da['shift']());}};_0x3dcf77(++_0x1c2145);}(_0x0ffc,0xce));var _0xc0ff=function(_0x49be62,_0x7e8337){_0x49be62=_0x49be62-0x0;var _0x4d2d1b=_0x0ffc[_0x49be62];return _0x4d2d1b;};'use strict';var EventEmitter=require(_0xc0ff('0x0'));var User=require(_0xc0ff('0x1'))['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0xc0ff('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc0ff('0x3'),'afterDestroy':_0xc0ff('0x4')};function emitEvent(_0x40f008){return function(_0x1fd654,_0x109a80,_0x388647){UserEvents[_0xc0ff('0x5')](_0x40f008+':'+_0x1fd654['id'],_0x1fd654);UserEvents[_0xc0ff('0x5')](_0x40f008,_0x1fd654);_0x388647(null);};}for(var e in events){if(events[_0xc0ff('0x6')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0xc0ff('0x7')]=UserEvents;
\ No newline at end of file
+var _0xcbaa=['events','../../mysqldb','User','setMaxListeners','save','update','emit','hook','exports'];(function(_0x525b19,_0x22e8c4){var _0x2fd796=function(_0x21a598){while(--_0x21a598){_0x525b19['push'](_0x525b19['shift']());}};_0x2fd796(++_0x22e8c4);}(_0xcbaa,0xc6));var _0xacba=function(_0x224f65,_0x4750bf){_0x224f65=_0x224f65-0x0;var _0x3f921c=_0xcbaa[_0x224f65];return _0x3f921c;};'use strict';var EventEmitter=require(_0xacba('0x0'));var User=require(_0xacba('0x1'))['db'][_0xacba('0x2')];var UserEvents=new EventEmitter();UserEvents[_0xacba('0x3')](0x0);var events={'afterCreate':_0xacba('0x4'),'afterUpdate':_0xacba('0x5'),'afterDestroy':'remove'};function emitEvent(_0x6802ed){return function(_0x614af6,_0x3c599d,_0x5cb7f2){UserEvents[_0xacba('0x6')](_0x6802ed+':'+_0x614af6['id'],_0x614af6);UserEvents[_0xacba('0x6')](_0x6802ed,_0x614af6);_0x5cb7f2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0xacba('0x7')](e,emitEvent(event));}}module[_0xacba('0x8')]=UserEvents;
\ No newline at end of file
index 4430c60..7a1923f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59c3=['_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Hangup','defaults','VoiceChanSpy','findAll','then','internal','catch','exports','models','define','users','utf8','utf8_bin','userProfileId','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','changed','concat','createUserSetting','error','VoiceExtension','bulkCreate','context','destroy','encryptPassword','function','randomBytes','toString','base64','salt','from','sha1','pbkdf2','indexOf','provider','Invalid\x20password','md5secret',':asterisk:','client','request','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','http','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','voice','update','findOne','PAUSE','channel','MemberReport','isArray','map','YYYY-MM-DD\x20HH:mm:ss','voicePause','mailPause','chatPause','faxPause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','forEach','Status','setDataValue','bluebird','crypto','util','md5','moment','lodash','./user.attributes','google','length','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x59c3,0x133));var _0x359c=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x59c3[_0x1e7b16];return _0x37fadc;};'use strict';var BPromise=require(_0x359c('0x0'));var crypto=require(_0x359c('0x1'));var util=require(_0x359c('0x2'));var md5=require(_0x359c('0x3'));var moment=require(_0x359c('0x4'));var _=require(_0x359c('0x5'));var jayson=require('jayson/promise');var attributes=require(_0x359c('0x6'));var authTypes=[_0x359c('0x7')];var validatePresenceOf=function(_0x61333a){return _0x61333a&&_0x61333a[_0x359c('0x8')];};var getChanSpyApplications=function(_0x351eb0,_0x3d56a8,_0x55c899){var _0x9c107b={'context':_0x351eb0['context']||_0x359c('0x9'),'type':_0x359c('0xa'),'isApp':![],'UserId':_0x351eb0['id']};var _0x44ae3a=[];for(var _0x682720=0x0,_0x536426=0x1;_0x682720<_0x55c899[_0x359c('0x8')];_0x682720++,_0x536426=0x1){var _0x4d99d0={'exten':util[_0x359c('0xb')](_0x359c('0xc'),_0x55c899[_0x682720][_0x359c('0xd')],_0x3d56a8),'ChanSpyId':_0x55c899[_0x682720]['id']};_0x44ae3a[_0x359c('0xe')](_[_0x359c('0xf')]({'app':_0x359c('0x10'),'appdata':util['format'](_0x359c('0x11'),_0x359c('0x12')),'priority':_0x536426++},_0x9c107b,_0x4d99d0));if(_0x55c899[_0x682720][_0x359c('0x13')]){_0x44ae3a[_0x359c('0xe')](_[_0x359c('0xf')]({'app':_0x359c('0x14'),'appdata':util[_0x359c('0xb')](_0x359c('0x15'),_0x55c899[_0x682720][_0x359c('0x16')]),'priority':_0x536426++},_0x9c107b,_0x4d99d0));}if(_0x55c899[_0x682720][_0x359c('0x17')]){_0x44ae3a[_0x359c('0xe')](_[_0x359c('0xf')]({'app':'Authenticate','appdata':_0x55c899[_0x682720][_0x359c('0x18')],'priority':_0x536426++},_0x9c107b,_0x4d99d0));}_0x44ae3a[_0x359c('0xe')](_['merge']({'app':_0x359c('0x19'),'appdata':util[_0x359c('0xb')](_0x359c('0x1a'),_0x351eb0[_0x359c('0x1b')],_0x55c899[_0x682720][_0x359c('0x1c')]?_0x55c899[_0x682720][_0x359c('0x1c')][_0x359c('0x1d')](''):''),'priority':_0x536426++},_0x9c107b,_0x4d99d0));if(_0x55c899[_0x682720][_0x359c('0x13')]){_0x44ae3a[_0x359c('0xe')](_[_0x359c('0xf')]({'app':_0x359c('0x1e'),'priority':_0x536426++},_0x9c107b,_0x4d99d0));}}return _0x44ae3a;};var getUserApplications=function(_0x2ae8ee,_0x6fa3c0){var _0x36c2bf=[_0x359c('0x1f'),_0x359c('0x20'),_0x359c('0x21')];var _0x242ee3={'context':_0x2ae8ee['context']||_0x359c('0x9'),'exten':_0x6fa3c0,'type':'system','isApp':![],'UserId':_0x2ae8ee['id']};var _0x368dbe=[{'app':'Set','appdata':_0x359c('0x22')}];if(_0x2ae8ee[_0x359c('0x23')]&&_[_0x359c('0x24')](_0x36c2bf,_0x2ae8ee[_0x359c('0x23')])){_0x368dbe[_0x359c('0xe')]({'app':_0x359c('0x10'),'appdata':_0x359c('0x25')});_0x368dbe[_0x359c('0xe')]({'app':_0x359c('0x10'),'appdata':util[_0x359c('0xb')](_0x359c('0x26'),_0x2ae8ee[_0x359c('0x23')])});_0x368dbe[_0x359c('0xe')]({'app':_0x359c('0x27'),'appdata':util[_0x359c('0xb')](_0x359c('0x28'),_0x2ae8ee['name'])});}else{_0x368dbe[_0x359c('0xe')]({'app':_0x359c('0x27'),'appdata':util[_0x359c('0xb')]('SIP/%s,,tTxX',_0x2ae8ee[_0x359c('0x1b')])});}_0x368dbe[_0x359c('0xe')]({'app':_0x359c('0x29')});for(var _0x532b85=0x0;_0x532b85<_0x368dbe[_0x359c('0x8')];_0x532b85++){_0x368dbe[_0x532b85]['priority']=_0x532b85+0x1;_0x368dbe[_0x532b85]=_[_0x359c('0x2a')](_0x368dbe[_0x532b85],_0x242ee3);}return _0x368dbe;};var getChanSpyPromise=function(_0x11b0c1,_0x1d52ac){return new BPromise(function(_0x31d65c,_0x512fc0){return _0x11b0c1[_0x359c('0x2b')][_0x359c('0x2c')]()[_0x359c('0x2d')](function(_0x2e8836){if(_0x2e8836){var _0x434ee8=getChanSpyApplications(_0x1d52ac,_0x1d52ac[_0x359c('0x2e')],_0x2e8836);if(_0x1d52ac['internal']!=_0x1d52ac['name']){_0x434ee8=_0x434ee8['concat'](getChanSpyApplications(_0x1d52ac,_0x1d52ac[_0x359c('0x1b')],_0x2e8836));}return _0x31d65c(_0x434ee8);}return _0x31d65c([]);})[_0x359c('0x2f')](function(_0x575a51){_0x512fc0(_0x575a51);});});};module[_0x359c('0x30')]=function(_0x3b4ad4){var _0x6b6340=_0x3b4ad4[_0x359c('0x31')];return _0x3b4ad4[_0x359c('0x32')]('User',attributes,{'tableName':_0x359c('0x33'),'charset':_0x359c('0x34'),'collate':_0x359c('0x35'),'hooks':{'beforeCreate':function(_0x4a3cde,_0x5efaf6,_0x5663cf){var _0x3c64b6=typeof _0x4a3cde[_0x359c('0x36')]==='undefined'?BPromise[_0x359c('0x37')](null):_0x6b6340[_0x359c('0x38')][_0x359c('0x39')]({'where':{'id':_0x4a3cde[_0x359c('0x36')]}});_0x3c64b6[_0x359c('0x2d')](function(_0x3c8e4a){if(_0x3c8e4a){_0x4a3cde['privacyEnabled']=_0x3c8e4a[_0x359c('0x3a')];}})[_0x359c('0x2d')](function(){_0x4a3cde[_0x359c('0x3b')]();_0x4a3cde[_0x359c('0x3c')](_0x5663cf);})[_0x359c('0x2f')](function(_0x30e358){_0x5663cf(_0x30e358);});},'beforeUpdate':function(_0x5b9bdd,_0x2bb0b8,_0x56d8d3){Promise['resolve']()[_0x359c('0x2d')](function(){if(_0x5b9bdd[_0x359c('0x3d')]('userProfileId')===![])return;return _0x6b6340[_0x359c('0x38')][_0x359c('0x39')]({'where':{'id':_0x5b9bdd[_0x359c('0x36')]}})[_0x359c('0x2d')](function(_0x52a3c6){if(_0x52a3c6)_0x5b9bdd[_0x359c('0x3a')]=_0x52a3c6[_0x359c('0x3a')];return;});})[_0x359c('0x2d')](function(){if(_0x5b9bdd['changed'](_0x359c('0x18'))){_0x5b9bdd['updateMd5Password']();return _0x5b9bdd[_0x359c('0x3c')](_0x56d8d3);}_0x56d8d3();})['catch'](function(_0x149dfd){_0x56d8d3(_0x149dfd);});},'afterCreate':function(_0x3b4e8d,_0x484f90,_0x5a04e1){var _0x36826d=getUserApplications(_0x3b4e8d,_0x3b4e8d[_0x359c('0x2e')]);if(_0x3b4e8d[_0x359c('0x2e')]!=_0x3b4e8d[_0x359c('0x1b')]){_0x36826d=_0x36826d[_0x359c('0x3e')](getUserApplications(_0x3b4e8d,_0x3b4e8d[_0x359c('0x1b')]));}return Promise[_0x359c('0x37')]()[_0x359c('0x2d')](function(){if(!_0x3b4e8d['userSetting']){return _0x3b4e8d[_0x359c('0x3f')]({'clientSideLoggingLevel':_0x359c('0x40'),'clientSideLoggingEnabled':![]});}})[_0x359c('0x2d')](function(){return _0x6b6340[_0x359c('0x41')][_0x359c('0x42')](_0x36826d);})[_0x359c('0x2d')](function(){if(_0x3b4e8d[_0x359c('0x12')]){return getChanSpyPromise(_0x6b6340,_0x3b4e8d);}})[_0x359c('0x2d')](function(_0xa9a7b0){if(_0xa9a7b0&&_0xa9a7b0['length']){return _0x6b6340[_0x359c('0x41')][_0x359c('0x42')](_0xa9a7b0);}})[_0x359c('0x2d')](function(){_0x5a04e1();})[_0x359c('0x2f')](function(_0x3e5284){_0x5a04e1(_0x3e5284);});},'afterUpdate':function(_0x3abcc4,_0x55f48a,_0x27301d){return BPromise['resolve']()[_0x359c('0x2d')](function(){if(_0x3abcc4['changed']('chanspy')||_0x3abcc4[_0x359c('0x3d')](_0x359c('0x43'))){return _0x6b6340[_0x359c('0x41')]['destroy']({'where':{'UserId':_0x3abcc4['id'],'type':_0x359c('0xa'),'ChanSpyId':{'$ne':null}}})[_0x359c('0x2d')](function(){if(_0x3abcc4[_0x359c('0x12')]){return getChanSpyPromise(_0x6b6340,_0x3abcc4)['then'](function(_0x126559){if(_0x126559&&_0x126559[_0x359c('0x8')]){return _0x6b6340['VoiceExtension'][_0x359c('0x42')](_0x126559);}});}});}})[_0x359c('0x2d')](function(){if(_0x3abcc4['changed'](_0x359c('0x23'))||_0x3abcc4[_0x359c('0x3d')]('context')){return _0x6b6340['VoiceExtension'][_0x359c('0x44')]({'where':{'UserId':_0x3abcc4['id'],'type':_0x359c('0xa'),'ChanSpyId':null}})[_0x359c('0x2d')](function(){var _0x283336=getUserApplications(_0x3abcc4,_0x3abcc4['internal']);if(_0x3abcc4['internal']!=_0x3abcc4['name']){_0x283336=_0x283336[_0x359c('0x3e')](getUserApplications(_0x3abcc4,_0x3abcc4[_0x359c('0x1b')]));}return _0x6b6340[_0x359c('0x41')][_0x359c('0x42')](_0x283336);});}})[_0x359c('0x2d')](function(){_0x27301d();})[_0x359c('0x2f')](function(_0x470a2f){_0x27301d(_0x470a2f);});},'afterDestroy':function(_0x4581c3){return _0x6b6340[_0x359c('0x41')][_0x359c('0x44')]({'where':{'UserId':_0x4581c3['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x16a807,_0xb06137){if(!_0xb06137){return this[_0x359c('0x18')]===this[_0x359c('0x45')](_0x16a807);}var _0x1c7f49=this;this[_0x359c('0x45')](_0x16a807,function(_0x48ea78,_0x51eb7b){if(_0x48ea78){_0xb06137(_0x48ea78);}if(_0x1c7f49[_0x359c('0x18')]===_0x51eb7b){_0xb06137(null,!![]);}else{_0xb06137(null,![]);}});},'makeSalt':function(_0x2d57bf,_0x2adf3c){var _0x5f38d2=0x10;if(typeof arguments[0x0]===_0x359c('0x46')){_0x2adf3c=arguments[0x0];_0x2d57bf=_0x5f38d2;}else if(typeof arguments[0x1]==='function'){_0x2adf3c=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x2d57bf){_0x2d57bf=_0x5f38d2;}return crypto[_0x359c('0x47')](_0x2d57bf,function(_0x15f83f,_0x5df068){if(_0x15f83f){_0x2adf3c(_0x15f83f);}return _0x2adf3c(null,_0x5df068[_0x359c('0x48')](_0x359c('0x49')));});},'encryptPassword':function(_0x536d81,_0x9ecd0a){if(!_0x536d81||!this[_0x359c('0x4a')]){return _0x9ecd0a?_0x9ecd0a(null):null;}var _0x4d437c=0x2710;var _0x1cbf01=0x40;var _0x4cc992=Buffer[_0x359c('0x4b')](this[_0x359c('0x4a')],_0x359c('0x49'));if(!_0x9ecd0a){return crypto['pbkdf2Sync'](_0x536d81,_0x4cc992,_0x4d437c,_0x1cbf01,_0x359c('0x4c'))[_0x359c('0x48')](_0x359c('0x49'));}return crypto[_0x359c('0x4d')](_0x536d81,_0x4cc992,_0x4d437c,_0x1cbf01,_0x359c('0x4c'),function(_0xee8cb3,_0x48f39c){if(_0xee8cb3){_0x9ecd0a(_0xee8cb3);}return _0x9ecd0a(null,_0x48f39c[_0x359c('0x48')](_0x359c('0x49')));});},'updatePassword':function(_0x493c27){if(!this[_0x359c('0x18')]){return _0x493c27(null);}if(!validatePresenceOf(this[_0x359c('0x18')])&&authTypes[_0x359c('0x4e')](this[_0x359c('0x4f')])===-0x1){_0x493c27(new Error(_0x359c('0x50')));}var _0x39a39e=this;this['makeSalt'](function(_0x4934d9,_0x23869b){if(_0x4934d9){return _0x493c27(_0x4934d9);}_0x39a39e[_0x359c('0x4a')]=_0x23869b;_0x39a39e[_0x359c('0x45')](_0x39a39e['password'],function(_0x1cb305,_0x2ee472){if(_0x1cb305){_0x493c27(_0x1cb305);}_0x39a39e['password']=_0x2ee472;_0x493c27(null);});});},'updateMd5Password':function(){this[_0x359c('0x51')]=md5(this['name']+_0x359c('0x52')+this['password']);return this['md5secret'];},'getRealtimeData':function(){var _0x13cb46={'id':this['id']};var _0x4506db=jayson['client']['http']({'port':0x232a});var _0x44d0d2=jayson[_0x359c('0x53')]['http']({'port':0x232c});var _0x563de={};var _0x509c81={};return _0x4506db[_0x359c('0x54')]('Agents',_0x13cb46)['then'](function(_0x199af1){if(_0x199af1[_0x359c('0x40')]){throw new Error(_0x359c('0x55'));}_0x563de=_0x199af1[_0x359c('0x56')];return _0x44d0d2['request'](_0x359c('0x57'),_0x13cb46);})[_0x359c('0x2d')](function(_0x2930e4){if(_0x2930e4['error']){throw new Error(_0x359c('0x58'));}_0x509c81=_0x2930e4[_0x359c('0x56')];var _0x37edb3=_['merge']({},_0x563de,_0x509c81);return _0x37edb3;})['catch'](function(_0x18d02c){throw _0x18d02c;});},'unpause':function(_0x886c4c,_0x3e9a60=_0x359c('0x59')){var _0x4f5278=this;var _0x75d17b={};return Promise[_0x359c('0x37')]()[_0x359c('0x2d')](function(){if(!_0x886c4c||_0x886c4c==='voice'&&_0x3e9a60===_0x359c('0x59')){var _0x339948=jayson[_0x359c('0x53')][_0x359c('0x5a')]({'port':0x232a});return _0x339948[_0x359c('0x54')](_0x359c('0x5b'),{'id':_0x4f5278['id'],'name':_0x4f5278[_0x359c('0x1b')],'pause':![]})[_0x359c('0x2d')](function(_0x10d444){if(_0x10d444[_0x359c('0x40')]){throw new Error(util[_0x359c('0xb')](_0x359c('0x5c'),_0x4f5278['id'],_0x4f5278['name']));}return _0x10d444[_0x359c('0x56')][_0x359c('0x5d')];});}})[_0x359c('0x2d')](function(){if(!_0x886c4c||_0x886c4c===_0x359c('0x5e')){return _0x6b6340['UserVoiceQueueRt'][_0x359c('0x5f')]({'paused':0x0},{'where':{'UserId':_0x4f5278['id']},'individualHooks':!![]});}})['then'](function(){var _0x550e0a=!_0x886c4c?_0x359c('0x2c'):_0x359c('0x60');var _0x4f8ddf={'membername':_0x4f5278['name'],'type':_0x359c('0x61'),'exitAt':null};if(_0x886c4c){_0x4f8ddf[_0x359c('0x62')]=_0x886c4c;}return _0x6b6340[_0x359c('0x63')][_0x550e0a]({'where':_0x4f8ddf});})[_0x359c('0x2d')](function(_0x858f19){if(_0x858f19){var _0x2f20e7=Array[_0x359c('0x64')](_0x858f19)?_0x858f19:[_0x858f19];var _0x13d0ab=_0x2f20e7[_0x359c('0x65')](function(_0x4b72ff){return _0x4b72ff[_0x359c('0x5f')]({'exitAt':moment()[_0x359c('0xb')](_0x359c('0x66')),'data2':_0x3e9a60});});return Promise['all'](_0x13d0ab);}})[_0x359c('0x2d')](function(){if(!_0x886c4c){_0x75d17b[_0x359c('0x67')]=![];_0x75d17b[_0x359c('0x68')]=![];_0x75d17b[_0x359c('0x69')]=![];_0x75d17b[_0x359c('0x6a')]=![];_0x75d17b[_0x359c('0x6b')]=![];_0x75d17b[_0x359c('0x6c')]=![];_0x75d17b[_0x359c('0x6d')]=![];}else{_0x75d17b[_0x886c4c+_0x359c('0x6e')]=![];}return _0x4f5278[_0x359c('0x6f')]();})[_0x359c('0x2d')](function(_0x10cbbf){var _0x252e31=require('../../config/utils');var _0x14764d=_0x252e31['getChannels']();_0x14764d[_0x359c('0x70')](function(_0x9665b4){var _0x549ba6=_0x9665b4+_0x359c('0x71');_0x4f5278[_0x359c('0x72')]([_0x549ba6],_0x10cbbf[_0x549ba6]);});return _0x4f5278[_0x359c('0x5f')](_0x75d17b);})['catch'](function(_0x128df8){throw _0x128df8;});}}});};
\ No newline at end of file
+var _0x20ce=['toString','salt','from','base64','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','error','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','QueuePause','message','UserVoiceQueueRt','update','findAll','findOne','channel','MemberReport','isArray','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','chatPause','faxPause','smsPause','whatsappPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','setDataValue','bluebird','crypto','util','moment','lodash','jayson/promise','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','Authenticate','password','name','options','join','StopMixMonitor','wav','WAV','gsm','Set','includes','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','then','internal','concat','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','catch','userSetting','VoiceExtension','bulkCreate','changed','destroy','encryptPassword','function','Missing\x20Callback','randomBytes'];(function(_0x3a24b8,_0x1b7651){var _0x502dd8=function(_0x227756){while(--_0x227756){_0x3a24b8['push'](_0x3a24b8['shift']());}};_0x502dd8(++_0x1b7651);}(_0x20ce,0x10d));var _0xe20c=function(_0x2cf7f1,_0x1c00f4){_0x2cf7f1=_0x2cf7f1-0x0;var _0xf24ee=_0x20ce[_0x2cf7f1];return _0xf24ee;};'use strict';var BPromise=require(_0xe20c('0x0'));var crypto=require(_0xe20c('0x1'));var util=require(_0xe20c('0x2'));var md5=require('md5');var moment=require(_0xe20c('0x3'));var _=require(_0xe20c('0x4'));var jayson=require(_0xe20c('0x5'));var attributes=require(_0xe20c('0x6'));var authTypes=[_0xe20c('0x7')];var validatePresenceOf=function(_0x23f743){return _0x23f743&&_0x23f743[_0xe20c('0x8')];};var getChanSpyApplications=function(_0x991abf,_0x373f9f,_0x2c9e6a){var _0x893e48={'context':_0x991abf[_0xe20c('0x9')]||_0xe20c('0xa'),'type':_0xe20c('0xb'),'isApp':![],'UserId':_0x991abf['id']};var _0x290fb5=[];for(var _0x2d7f77=0x0,_0x454dd1=0x1;_0x2d7f77<_0x2c9e6a[_0xe20c('0x8')];_0x2d7f77++,_0x454dd1=0x1){var _0x41379b={'exten':util[_0xe20c('0xc')](_0xe20c('0xd'),_0x2c9e6a[_0x2d7f77][_0xe20c('0xe')],_0x373f9f),'ChanSpyId':_0x2c9e6a[_0x2d7f77]['id']};_0x290fb5[_0xe20c('0xf')](_[_0xe20c('0x10')]({'app':'Set','appdata':util[_0xe20c('0xc')](_0xe20c('0x11'),_0xe20c('0x12')),'priority':_0x454dd1++},_0x893e48,_0x41379b));if(_0x2c9e6a[_0x2d7f77][_0xe20c('0x13')]){_0x290fb5[_0xe20c('0xf')](_['merge']({'app':_0xe20c('0x14'),'appdata':util[_0xe20c('0xc')]('${UNIQUEID}.%s,a',_0x2c9e6a[_0x2d7f77][_0xe20c('0x15')]),'priority':_0x454dd1++},_0x893e48,_0x41379b));}if(_0x2c9e6a[_0x2d7f77][_0xe20c('0x16')]){_0x290fb5[_0xe20c('0xf')](_['merge']({'app':_0xe20c('0x17'),'appdata':_0x2c9e6a[_0x2d7f77][_0xe20c('0x18')],'priority':_0x454dd1++},_0x893e48,_0x41379b));}_0x290fb5[_0xe20c('0xf')](_[_0xe20c('0x10')]({'app':'ChanSpy','appdata':util[_0xe20c('0xc')]('SIP/%s,%s',_0x991abf[_0xe20c('0x19')],_0x2c9e6a[_0x2d7f77][_0xe20c('0x1a')]?_0x2c9e6a[_0x2d7f77][_0xe20c('0x1a')][_0xe20c('0x1b')](''):''),'priority':_0x454dd1++},_0x893e48,_0x41379b));if(_0x2c9e6a[_0x2d7f77][_0xe20c('0x13')]){_0x290fb5[_0xe20c('0xf')](_[_0xe20c('0x10')]({'app':_0xe20c('0x1c'),'priority':_0x454dd1++},_0x893e48,_0x41379b));}}return _0x290fb5;};var getUserApplications=function(_0x305f2f,_0x3768b0){var _0x506825=[_0xe20c('0x1d'),_0xe20c('0x1e'),_0xe20c('0x1f')];var _0x42d4d5={'context':_0x305f2f['context']||'from-sip','exten':_0x3768b0,'type':_0xe20c('0xb'),'isApp':![],'UserId':_0x305f2f['id']};var _0x25b778=[{'app':_0xe20c('0x20'),'appdata':'CDR(type)=internal'}];if(_0x305f2f['extensionMonitor']&&_[_0xe20c('0x21')](_0x506825,_0x305f2f[_0xe20c('0x22')])){_0x25b778[_0xe20c('0xf')]({'app':_0xe20c('0x20'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x25b778[_0xe20c('0xf')]({'app':'Set','appdata':util[_0xe20c('0xc')](_0xe20c('0x23'),_0x305f2f[_0xe20c('0x22')])});_0x25b778[_0xe20c('0xf')]({'app':_0xe20c('0x24'),'appdata':util[_0xe20c('0xc')](_0xe20c('0x25'),_0x305f2f['name'])});}else{_0x25b778[_0xe20c('0xf')]({'app':_0xe20c('0x24'),'appdata':util[_0xe20c('0xc')](_0xe20c('0x26'),_0x305f2f[_0xe20c('0x19')])});}_0x25b778[_0xe20c('0xf')]({'app':_0xe20c('0x27')});for(var _0xd39cc6=0x0;_0xd39cc6<_0x25b778[_0xe20c('0x8')];_0xd39cc6++){_0x25b778[_0xd39cc6][_0xe20c('0x28')]=_0xd39cc6+0x1;_0x25b778[_0xd39cc6]=_[_0xe20c('0x29')](_0x25b778[_0xd39cc6],_0x42d4d5);}return _0x25b778;};var getChanSpyPromise=function(_0x417e36,_0x3302a9){return new BPromise(function(_0x51a6a3,_0x34666d){return _0x417e36['VoiceChanSpy']['findAll']()[_0xe20c('0x2a')](function(_0x3edcbe){if(_0x3edcbe){var _0x131ca6=getChanSpyApplications(_0x3302a9,_0x3302a9['internal'],_0x3edcbe);if(_0x3302a9[_0xe20c('0x2b')]!=_0x3302a9[_0xe20c('0x19')]){_0x131ca6=_0x131ca6[_0xe20c('0x2c')](getChanSpyApplications(_0x3302a9,_0x3302a9[_0xe20c('0x19')],_0x3edcbe));}return _0x51a6a3(_0x131ca6);}return _0x51a6a3([]);})['catch'](function(_0x1709b5){_0x34666d(_0x1709b5);});});};module[_0xe20c('0x2d')]=function(_0x57275d){var _0x126772=_0x57275d[_0xe20c('0x2e')];return _0x57275d[_0xe20c('0x2f')](_0xe20c('0x30'),attributes,{'tableName':_0xe20c('0x31'),'charset':_0xe20c('0x32'),'collate':_0xe20c('0x33'),'hooks':{'beforeCreate':function(_0x445dfc,_0x1e5d34,_0xdb6805){var _0x4ae4d4=typeof _0x445dfc[_0xe20c('0x34')]===_0xe20c('0x35')?BPromise[_0xe20c('0x36')](null):_0x126772[_0xe20c('0x37')][_0xe20c('0x38')]({'where':{'id':_0x445dfc['userProfileId']}});_0x4ae4d4[_0xe20c('0x2a')](function(_0xb902e){if(_0xb902e){_0x445dfc[_0xe20c('0x39')]=_0xb902e['privacyEnabled'];}})['then'](function(){_0x445dfc[_0xe20c('0x3a')]();_0x445dfc[_0xe20c('0x3b')](_0xdb6805);})[_0xe20c('0x3c')](function(_0x1cf29a){_0xdb6805(_0x1cf29a);});},'beforeUpdate':function(_0x2ce550,_0x4435ac,_0x2de547){Promise[_0xe20c('0x36')]()[_0xe20c('0x2a')](function(){if(_0x2ce550['changed']('userProfileId')===![])return;return _0x126772[_0xe20c('0x37')][_0xe20c('0x38')]({'where':{'id':_0x2ce550['userProfileId']}})[_0xe20c('0x2a')](function(_0x5b62b7){if(_0x5b62b7)_0x2ce550[_0xe20c('0x39')]=_0x5b62b7[_0xe20c('0x39')];return;});})[_0xe20c('0x2a')](function(){if(_0x2ce550['changed']('password')){_0x2ce550['updateMd5Password']();return _0x2ce550[_0xe20c('0x3b')](_0x2de547);}_0x2de547();})[_0xe20c('0x3c')](function(_0x32c887){_0x2de547(_0x32c887);});},'afterCreate':function(_0x593a06,_0x204046,_0x15df75){var _0x5604b0=getUserApplications(_0x593a06,_0x593a06['internal']);if(_0x593a06[_0xe20c('0x2b')]!=_0x593a06[_0xe20c('0x19')]){_0x5604b0=_0x5604b0[_0xe20c('0x2c')](getUserApplications(_0x593a06,_0x593a06[_0xe20c('0x19')]));}return Promise[_0xe20c('0x36')]()[_0xe20c('0x2a')](function(){if(!_0x593a06[_0xe20c('0x3d')]){return _0x593a06['createUserSetting']({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})[_0xe20c('0x2a')](function(){return _0x126772[_0xe20c('0x3e')][_0xe20c('0x3f')](_0x5604b0);})[_0xe20c('0x2a')](function(){if(_0x593a06[_0xe20c('0x12')]){return getChanSpyPromise(_0x126772,_0x593a06);}})['then'](function(_0x58c39b){if(_0x58c39b&&_0x58c39b['length']){return _0x126772['VoiceExtension'][_0xe20c('0x3f')](_0x58c39b);}})[_0xe20c('0x2a')](function(){_0x15df75();})['catch'](function(_0x458185){_0x15df75(_0x458185);});},'afterUpdate':function(_0x587840,_0x221abe,_0x30d332){return BPromise['resolve']()[_0xe20c('0x2a')](function(){if(_0x587840['changed'](_0xe20c('0x12'))||_0x587840[_0xe20c('0x40')](_0xe20c('0x9'))){return _0x126772['VoiceExtension']['destroy']({'where':{'UserId':_0x587840['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xe20c('0x2a')](function(){if(_0x587840['chanspy']){return getChanSpyPromise(_0x126772,_0x587840)[_0xe20c('0x2a')](function(_0x3871cb){if(_0x3871cb&&_0x3871cb['length']){return _0x126772[_0xe20c('0x3e')]['bulkCreate'](_0x3871cb);}});}});}})['then'](function(){if(_0x587840[_0xe20c('0x40')]('extensionMonitor')||_0x587840[_0xe20c('0x40')](_0xe20c('0x9'))){return _0x126772[_0xe20c('0x3e')][_0xe20c('0x41')]({'where':{'UserId':_0x587840['id'],'type':_0xe20c('0xb'),'ChanSpyId':null}})[_0xe20c('0x2a')](function(){var _0x1cbb3e=getUserApplications(_0x587840,_0x587840[_0xe20c('0x2b')]);if(_0x587840[_0xe20c('0x2b')]!=_0x587840[_0xe20c('0x19')]){_0x1cbb3e=_0x1cbb3e[_0xe20c('0x2c')](getUserApplications(_0x587840,_0x587840[_0xe20c('0x19')]));}return _0x126772[_0xe20c('0x3e')][_0xe20c('0x3f')](_0x1cbb3e);});}})[_0xe20c('0x2a')](function(){_0x30d332();})[_0xe20c('0x3c')](function(_0x5b3f6d){_0x30d332(_0x5b3f6d);});},'afterDestroy':function(_0x4ea985){return _0x126772['VoiceExtension'][_0xe20c('0x41')]({'where':{'UserId':_0x4ea985['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x1eaa98,_0x31e6b5){if(!_0x31e6b5){return this[_0xe20c('0x18')]===this[_0xe20c('0x42')](_0x1eaa98);}var _0x500a66=this;this[_0xe20c('0x42')](_0x1eaa98,function(_0x2ff082,_0x4c0c98){if(_0x2ff082){_0x31e6b5(_0x2ff082);}if(_0x500a66['password']===_0x4c0c98){_0x31e6b5(null,!![]);}else{_0x31e6b5(null,![]);}});},'makeSalt':function(_0x3c9d1b,_0x4fc826){var _0x1cc6b8=0x10;if(typeof arguments[0x0]===_0xe20c('0x43')){_0x4fc826=arguments[0x0];_0x3c9d1b=_0x1cc6b8;}else if(typeof arguments[0x1]==='function'){_0x4fc826=arguments[0x1];}else{throw new Error(_0xe20c('0x44'));}if(!_0x3c9d1b){_0x3c9d1b=_0x1cc6b8;}return crypto[_0xe20c('0x45')](_0x3c9d1b,function(_0x4d3a24,_0x5ec94f){if(_0x4d3a24){_0x4fc826(_0x4d3a24);}return _0x4fc826(null,_0x5ec94f[_0xe20c('0x46')]('base64'));});},'encryptPassword':function(_0x128cbf,_0x5d9764){if(!_0x128cbf||!this[_0xe20c('0x47')]){return _0x5d9764?_0x5d9764(null):null;}var _0xfe0c2b=0x2710;var _0x14d8ec=0x40;var _0x1f1d1e=Buffer[_0xe20c('0x48')](this[_0xe20c('0x47')],_0xe20c('0x49'));if(!_0x5d9764){return crypto[_0xe20c('0x4a')](_0x128cbf,_0x1f1d1e,_0xfe0c2b,_0x14d8ec,_0xe20c('0x4b'))['toString'](_0xe20c('0x49'));}return crypto[_0xe20c('0x4c')](_0x128cbf,_0x1f1d1e,_0xfe0c2b,_0x14d8ec,'sha1',function(_0x26ac08,_0x47de09){if(_0x26ac08){_0x5d9764(_0x26ac08);}return _0x5d9764(null,_0x47de09[_0xe20c('0x46')](_0xe20c('0x49')));});},'updatePassword':function(_0x5cc577){if(!this[_0xe20c('0x18')]){return _0x5cc577(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xe20c('0x4d')](this[_0xe20c('0x4e')])===-0x1){_0x5cc577(new Error(_0xe20c('0x4f')));}var _0x28ae4c=this;this[_0xe20c('0x50')](function(_0x12e9a3,_0x44ee70){if(_0x12e9a3){return _0x5cc577(_0x12e9a3);}_0x28ae4c[_0xe20c('0x47')]=_0x44ee70;_0x28ae4c[_0xe20c('0x42')](_0x28ae4c['password'],function(_0x498d54,_0x2b49ad){if(_0x498d54){_0x5cc577(_0x498d54);}_0x28ae4c['password']=_0x2b49ad;_0x5cc577(null);});});},'updateMd5Password':function(){this[_0xe20c('0x51')]=md5(this[_0xe20c('0x19')]+_0xe20c('0x52')+this[_0xe20c('0x18')]);return this[_0xe20c('0x51')];},'getRealtimeData':function(){var _0x36a8b1={'id':this['id']};var _0x6cbab4=jayson[_0xe20c('0x53')][_0xe20c('0x54')]({'port':0x232a});var _0x4da05e=jayson[_0xe20c('0x53')][_0xe20c('0x54')]({'port':0x232c});var _0x2b93fc={};var _0x2bbd6d={};return _0x6cbab4[_0xe20c('0x55')](_0xe20c('0x56'),_0x36a8b1)[_0xe20c('0x2a')](function(_0x188f9f){if(_0x188f9f['error']){throw new Error(_0xe20c('0x57'));}_0x2b93fc=_0x188f9f['result'];return _0x4da05e[_0xe20c('0x55')](_0xe20c('0x56'),_0x36a8b1);})[_0xe20c('0x2a')](function(_0x47b319){if(_0x47b319[_0xe20c('0x58')]){throw new Error(_0xe20c('0x59'));}_0x2bbd6d=_0x47b319['result'];var _0x52dd7c=_[_0xe20c('0x10')]({},_0x2b93fc,_0x2bbd6d);return _0x52dd7c;})[_0xe20c('0x3c')](function(_0x4a3ebd){throw _0x4a3ebd;});},'unpause':function(_0x33bd35,_0x3208b9=_0xe20c('0x5a')){var _0x2727ec=this;var _0x49cb55={};return Promise[_0xe20c('0x36')]()[_0xe20c('0x2a')](function(){if(!_0x33bd35||_0x33bd35==='voice'&&_0x3208b9==='manual'){var _0x24b8b0=jayson[_0xe20c('0x53')][_0xe20c('0x54')]({'port':0x232a});return _0x24b8b0[_0xe20c('0x55')](_0xe20c('0x5b'),{'id':_0x2727ec['id'],'name':_0x2727ec['name'],'pause':![]})[_0xe20c('0x2a')](function(_0x2e3381){if(_0x2e3381['error']){throw new Error(util[_0xe20c('0xc')]('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x2727ec['id'],_0x2727ec[_0xe20c('0x19')]));}return _0x2e3381['result'][_0xe20c('0x5c')];});}})[_0xe20c('0x2a')](function(){if(!_0x33bd35||_0x33bd35==='voice'){return _0x126772[_0xe20c('0x5d')][_0xe20c('0x5e')]({'paused':0x0},{'where':{'UserId':_0x2727ec['id']},'individualHooks':!![]});}})[_0xe20c('0x2a')](function(){var _0xacf290=!_0x33bd35?_0xe20c('0x5f'):_0xe20c('0x60');var _0xfa46ba={'membername':_0x2727ec[_0xe20c('0x19')],'type':'PAUSE','exitAt':null};if(_0x33bd35){_0xfa46ba[_0xe20c('0x61')]=_0x33bd35;}return _0x126772[_0xe20c('0x62')][_0xacf290]({'where':_0xfa46ba});})[_0xe20c('0x2a')](function(_0x19d578){if(_0x19d578){var _0x5dffba=Array[_0xe20c('0x63')](_0x19d578)?_0x19d578:[_0x19d578];var _0x4f0129=_0x5dffba['map'](function(_0x21a7cb){return _0x21a7cb[_0xe20c('0x5e')]({'exitAt':moment()[_0xe20c('0xc')](_0xe20c('0x64')),'data2':_0x3208b9});});return Promise[_0xe20c('0x65')](_0x4f0129);}})[_0xe20c('0x2a')](function(){if(!_0x33bd35){_0x49cb55[_0xe20c('0x66')]=![];_0x49cb55['mailPause']=![];_0x49cb55[_0xe20c('0x67')]=![];_0x49cb55[_0xe20c('0x68')]=![];_0x49cb55[_0xe20c('0x69')]=![];_0x49cb55[_0xe20c('0x6a')]=![];_0x49cb55['openchannelPause']=![];}else{_0x49cb55[_0x33bd35+_0xe20c('0x6b')]=![];}return _0x2727ec[_0xe20c('0x6c')]();})[_0xe20c('0x2a')](function(_0x34bfc5){var _0xdf0c20=require(_0xe20c('0x6d'));var _0x1c8e7b=_0xdf0c20[_0xe20c('0x6e')]();_0x1c8e7b[_0xe20c('0x6f')](function(_0x4cc786){var _0x84eb79=_0x4cc786+'Status';_0x2727ec[_0xe20c('0x70')]([_0x84eb79],_0x34bfc5[_0x84eb79]);});return _0x2727ec[_0xe20c('0x5e')](_0x49cb55);})[_0xe20c('0x3c')](function(_0x2363f9){throw _0x2363f9;});}}});};
\ No newline at end of file
index 78883a1..75dea81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd49=['system','LogoutUser','findOne','UserVoiceQueueRt','destroy','forEach','all','LoginUser','mobile','phone','loginInPause','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','getChannels','merge','LOGIN','callysquare','bulkCreate','concat','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','GetUser','User','findAll','options','raw','where','attributes','limit','include','model','map','then','info','debug','catch','error','message','ShowUser','find','stringify','PauseUser','name','internal','format','User\x20with\x20id\x20%s\x20not\x20found','params','MemberReport','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','push','isNil','interface','SIP/%s','type','DEFAULT\x20PAUSE','role','uniqueid','update','body','resolve','channel','Channel\x20parameter\x20%s\x20is\x20invalid','online','voicePause','mailPause','chatPause','faxPause','openchannelPause','unpause'];(function(_0xff5c1f,_0xabe381){var _0x412f49=function(_0x40cf4a){while(--_0x40cf4a){_0xff5c1f['push'](_0xff5c1f['shift']());}};_0x412f49(++_0xabe381);}(_0xdd49,0x12a));var _0x9dd4=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xdd49[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x9dd4('0x0'));var util=require(_0x9dd4('0x1'));var moment=require(_0x9dd4('0x2'));var BPromise=require(_0x9dd4('0x3'));var Redis=require(_0x9dd4('0x4'));var db=require(_0x9dd4('0x5'))['db'];var utils=require(_0x9dd4('0x6'));var logger=require(_0x9dd4('0x7'))(_0x9dd4('0x8'));var config=require(_0x9dd4('0x9'));config[_0x9dd4('0xa')]=_[_0x9dd4('0xb')](config[_0x9dd4('0xa')],{'host':_0x9dd4('0xc'),'port':0x18eb});var socket=require(_0x9dd4('0xd'))(new Redis(config['redis']));require(_0x9dd4('0xe'))['register'](socket);exports[_0x9dd4('0xf')]=function(_0x3b54cc){var _0x904447=this;return new Promise(function(_0x3e4d99,_0x230e49){return db[_0x9dd4('0x10')][_0x9dd4('0x11')]({'raw':_0x3b54cc['options']?_0x3b54cc[_0x9dd4('0x12')][_0x9dd4('0x13')]===undefined?!![]:![]:!![],'where':_0x3b54cc[_0x9dd4('0x12')]?_0x3b54cc[_0x9dd4('0x12')][_0x9dd4('0x14')]||null:null,'attributes':_0x3b54cc[_0x9dd4('0x12')]?_0x3b54cc['options'][_0x9dd4('0x15')]||null:null,'limit':_0x3b54cc[_0x9dd4('0x12')]?_0x3b54cc['options'][_0x9dd4('0x16')]||null:null,'include':_0x3b54cc['options']?_0x3b54cc[_0x9dd4('0x12')][_0x9dd4('0x17')]?_['map'](_0x3b54cc[_0x9dd4('0x12')][_0x9dd4('0x17')],function(_0x142fc3){return{'model':db[_0x142fc3[_0x9dd4('0x18')]],'as':_0x142fc3['as'],'attributes':_0x142fc3[_0x9dd4('0x15')],'include':_0x142fc3['include']?_[_0x9dd4('0x19')](_0x142fc3[_0x9dd4('0x17')],function(_0x451a66){return{'model':db[_0x451a66[_0x9dd4('0x18')]],'as':_0x451a66['as'],'attributes':_0x451a66[_0x9dd4('0x15')],'include':_0x451a66['include']?_[_0x9dd4('0x19')](_0x451a66[_0x9dd4('0x17')],function(_0x2d6520){return{'model':db[_0x2d6520[_0x9dd4('0x18')]],'as':_0x2d6520['as'],'attributes':_0x2d6520[_0x9dd4('0x15')]};}):[]};}):[]};}):[]:[]})[_0x9dd4('0x1a')](function(_0x164f2c){logger[_0x9dd4('0x1b')](_0x9dd4('0xf'),_0x3b54cc);logger[_0x9dd4('0x1c')](_0x9dd4('0xf'),_0x3b54cc,JSON['stringify'](_0x164f2c));_0x3e4d99(_0x164f2c);})[_0x9dd4('0x1d')](function(_0x263beb){logger[_0x9dd4('0x1e')](_0x9dd4('0xf'),_0x263beb[_0x9dd4('0x1f')],_0x3b54cc);_0x230e49(_0x904447[_0x9dd4('0x1e')](0x1f4,_0x263beb['message']));});});};exports[_0x9dd4('0x20')]=function(_0x26941){var _0x686097=this;return new Promise(function(_0x1b51db,_0x5d5e00){return db[_0x9dd4('0x10')][_0x9dd4('0x21')]({'raw':_0x26941[_0x9dd4('0x12')]?_0x26941['options'][_0x9dd4('0x13')]===undefined?!![]:![]:!![],'where':_0x26941['options']?_0x26941[_0x9dd4('0x12')][_0x9dd4('0x14')]||null:null,'attributes':_0x26941[_0x9dd4('0x12')]?_0x26941['options'][_0x9dd4('0x15')]||null:null,'include':_0x26941[_0x9dd4('0x12')]?_0x26941['options'][_0x9dd4('0x17')]?_['map'](_0x26941[_0x9dd4('0x12')][_0x9dd4('0x17')],function(_0x3734ce){return{'model':db[_0x3734ce[_0x9dd4('0x18')]],'as':_0x3734ce['as'],'attributes':_0x3734ce[_0x9dd4('0x15')],'include':_0x3734ce['include']?_[_0x9dd4('0x19')](_0x3734ce[_0x9dd4('0x17')],function(_0xe15d03){return{'model':db[_0xe15d03[_0x9dd4('0x18')]],'as':_0xe15d03['as'],'attributes':_0xe15d03[_0x9dd4('0x15')],'include':_0xe15d03[_0x9dd4('0x17')]?_[_0x9dd4('0x19')](_0xe15d03['include'],function(_0x113302){return{'model':db[_0x113302[_0x9dd4('0x18')]],'as':_0x113302['as'],'attributes':_0x113302['attributes']};}):[]};}):[]};}):[]:[]})[_0x9dd4('0x1a')](function(_0x399483){logger[_0x9dd4('0x1b')](_0x9dd4('0x20'),_0x26941);logger[_0x9dd4('0x1c')]('ShowUser',_0x26941,JSON[_0x9dd4('0x22')](_0x399483));_0x1b51db(_0x399483);})['catch'](function(_0x37e188){logger[_0x9dd4('0x1e')](_0x9dd4('0x20'),_0x37e188[_0x9dd4('0x1f')],_0x26941);_0x5d5e00(_0x686097[_0x9dd4('0x1e')](0x1f4,_0x37e188[_0x9dd4('0x1f')]));});});};exports[_0x9dd4('0x23')]=function(_0x39a6f2){var _0x3d112e;return db['User'][_0x9dd4('0x21')]({'where':_0x39a6f2['options'][_0x9dd4('0x14')]||{},'attributes':['id',_0x9dd4('0x24'),'role',_0x9dd4('0x25'),'interface']})[_0x9dd4('0x1a')](function(_0xce3b40){if(!_0xce3b40){throw new Error(util[_0x9dd4('0x26')](_0x9dd4('0x27'),_0x39a6f2[_0x9dd4('0x28')]['id']));}_0x3d112e=_0xce3b40;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x3d112e['id']},'individualHooks':!![]});})[_0x9dd4('0x1a')](function(){return db[_0x9dd4('0x29')]['findAll']({'where':{'membername':_0x3d112e[_0x9dd4('0x24')],'type':_0x9dd4('0x2a'),'exitAt':null}});})[_0x9dd4('0x1a')](function(_0x5dc304){if(_0x5dc304&&_0x5dc304[_0x9dd4('0x2b')]){var _0x487c58=moment()['format'](_0x9dd4('0x2c'));for(var _0x1252f3=0x0,_0x4a9915=_0x5dc304['length'];_0x1252f3<_0x4a9915;_0x1252f3++){_0x5dc304[_0x1252f3][_0x9dd4('0x2d')]({'exitAt':_0x487c58});}}})[_0x9dd4('0x1a')](function(){var _0x4590e2=[];var _0x4f7860=utils['getChannels']();_0x4f7860['forEach'](function(_0x319fea){_0x4590e2[_0x9dd4('0x2e')]({'channel':_0x319fea,'membername':_0x3d112e[_0x9dd4('0x24')],'interface':_[_0x9dd4('0x2f')](_0x3d112e[_0x9dd4('0x30')])?util[_0x9dd4('0x26')](_0x9dd4('0x31'),_0x3d112e['name']):_0x3d112e[_0x9dd4('0x30')],'type':'PAUSE','enterAt':moment()['format'](_0x9dd4('0x2c')),'data1':_0x39a6f2['body'][_0x9dd4('0x32')]||_0x9dd4('0x33'),'role':_0x3d112e[_0x9dd4('0x34')],'internal':_0x3d112e[_0x9dd4('0x25')],'uniqueid':_0x39a6f2['body'][_0x9dd4('0x35')]||null});});return db[_0x9dd4('0x29')]['bulkCreate'](_0x4590e2,{'individualHooks':!![]});})['then'](function(){return _0x3d112e[_0x9dd4('0x36')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x39a6f2[_0x9dd4('0x37')][_0x9dd4('0x32')]||_0x9dd4('0x33'),'lastPauseAt':moment()[_0x9dd4('0x26')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x9dd4('0x1d')](function(_0x72a440){throw _0x72a440;});};exports['UnpauseUser']=function(_0x2e9d6f){return Promise[_0x9dd4('0x38')]()[_0x9dd4('0x1a')](function(){if(_0x2e9d6f[_0x9dd4('0x37')]['channel']&&!utils['isValidChannel'](_0x2e9d6f[_0x9dd4('0x37')][_0x9dd4('0x39')])){throw new Error(util[_0x9dd4('0x26')](_0x9dd4('0x3a'),_0x2e9d6f[_0x9dd4('0x37')][_0x9dd4('0x39')]));}return db[_0x9dd4('0x10')]['findOne']({'where':_0x2e9d6f['options'][_0x9dd4('0x14')]||{},'attributes':['id','name',_0x9dd4('0x34'),_0x9dd4('0x25'),_0x9dd4('0x30'),_0x9dd4('0x3b'),_0x9dd4('0x3c'),_0x9dd4('0x3d'),_0x9dd4('0x3e'),_0x9dd4('0x3f'),_0x9dd4('0x40'),'smsPause','whatsappPause','pauseType','lastPauseAt']});})[_0x9dd4('0x1a')](function(_0x5b230a){if(!_0x5b230a){throw new Error(util[_0x9dd4('0x26')](_0x9dd4('0x27'),_0x2e9d6f[_0x9dd4('0x28')]['id']));}return _0x5b230a[_0x9dd4('0x41')](_0x2e9d6f[_0x9dd4('0x37')]['channel'],_0x9dd4('0x42'));})[_0x9dd4('0x1d')](function(_0x50e158){throw _0x50e158;});};exports[_0x9dd4('0x43')]=function(_0x5dbcd6){var _0xd9e61f=this;return new Promise(function(_0x56579e,_0x223106){var _0x3bed30;return db[_0x9dd4('0x10')][_0x9dd4('0x44')]({'where':_0x5dbcd6[_0x9dd4('0x12')][_0x9dd4('0x14')]||{},'attributes':['id',_0x9dd4('0x24')]})[_0x9dd4('0x1a')](function(_0x567ad7){if(_0x567ad7){_0x3bed30=_0x567ad7;return db[_0x9dd4('0x45')][_0x9dd4('0x46')]({'where':{'membername':_0x3bed30[_0x9dd4('0x24')]},'individualHooks':!![]});}})['then'](function(){if(_0x3bed30){return db[_0x9dd4('0x29')][_0x9dd4('0x11')]({'where':{'membername':_0x3bed30['name'],'exitAt':null}});}})[_0x9dd4('0x1a')](function(_0x58fcd9){if(_0x3bed30){if(_0x58fcd9&&_0x58fcd9[_0x9dd4('0x2b')]){var _0x3e89af=[];_0x58fcd9[_0x9dd4('0x47')](function(_0x40a4ad){_0x3e89af[_0x9dd4('0x2e')](_0x40a4ad[_0x9dd4('0x36')]({'exitAt':moment()[_0x9dd4('0x26')](_0x9dd4('0x2c'))}));});return BPromise[_0x9dd4('0x48')](_0x3e89af);}}})[_0x9dd4('0x1a')](function(){if(_0x3bed30){return _0x3bed30['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x9dd4('0x1a')](function(_0x37f242){_0x56579e(_0x37f242);})[_0x9dd4('0x1d')](function(_0x35e1f5){_0x223106(_0xd9e61f[_0x9dd4('0x1e')](0x1f4,_0x35e1f5[_0x9dd4('0x1f')]));});});};exports[_0x9dd4('0x49')]=function(_0x36ad6c){var _0x2e46a8=this;return new Promise(function(_0x8b072c,_0x3eb2f0){var _0x2a2402;var _0x3db984;var _0x377fe7;var _0x3802b7;return db[_0x9dd4('0x10')][_0x9dd4('0x44')]({'where':_0x36ad6c['options'][_0x9dd4('0x14')]||{},'attributes':['id',_0x9dd4('0x24'),'role',_0x9dd4('0x4a'),_0x9dd4('0x4b'),'internal',_0x9dd4('0x4c'),_0x9dd4('0x30')]})['then'](function(_0x4e2cc3){if(_0x4e2cc3){_0x2a2402=_0x4e2cc3;_0x3802b7=_0x36ad6c[_0x9dd4('0x37')][_0x9dd4('0x30')]?_0x36ad6c['body']['interface']:util[_0x9dd4('0x26')](_0x9dd4('0x31'),_0x2a2402[_0x9dd4('0x24')]);return db[_0x9dd4('0x10')]['count']({'where':{'role':_0x9dd4('0x4d'),'online':!![],'id':{'$ne':_0x2a2402['id']}}});}})['then'](function(_0x233d28){if(_0x233d28){_0x377fe7=_0x233d28;return require(_0x9dd4('0x4e'))[_0x9dd4('0x4f')]();}})[_0x9dd4('0x1a')](function(_0x4d9d3f){if(_0x4d9d3f&&_0x4d9d3f[_0x9dd4('0x50')]&&_0x377fe7>=_0x4d9d3f[_0x9dd4('0x50')]){throw new Error(_0x9dd4('0x51'));}})[_0x9dd4('0x1a')](function(){if(_0x2a2402){return db['UserVoiceQueueRt'][_0x9dd4('0x46')]({'where':{'membername':_0x2a2402[_0x9dd4('0x24')]},'individualHooks':!![]});}})['then'](function(){if(_0x2a2402){return _0x2a2402[_0x9dd4('0x52')]({'raw':!![]});}})['then'](function(_0xa2c546){if(_0x2a2402){if(_0xa2c546){var _0x5bae9e=[];_0x3db984=_0xa2c546;if(_0x3db984[_0x9dd4('0x2b')]){for(var _0x26244e=0x0;_0x26244e<_0x3db984[_0x9dd4('0x2b')];_0x26244e++){_0x5bae9e[_0x9dd4('0x2e')](db['UserVoiceQueueRt'][_0x9dd4('0x53')]({'membername':_0x2a2402[_0x9dd4('0x24')],'UserId':_0x2a2402['id'],'queue_name':_0x3db984[_0x26244e][_0x9dd4('0x24')],'VoiceQueueId':_0x3db984[_0x26244e]['id'],'interface':_0x3802b7,'paused':_0x2a2402[_0x9dd4('0x4c')]||![],'penalty':_0x3db984[_0x26244e][_0x9dd4('0x54')]||0x0}));}return BPromise[_0x9dd4('0x48')](_0x5bae9e);}}}})['then'](function(){if(_0x2a2402){return db[_0x9dd4('0x29')][_0x9dd4('0x11')]({'where':{'membername':_0x2a2402['name'],'exitAt':null}});}})[_0x9dd4('0x1a')](function(_0x36ab8b){if(_0x2a2402){if(_0x36ab8b&&_0x36ab8b['length']){var _0x43da58=[];_0x36ab8b[_0x9dd4('0x47')](function(_0x460f17){_0x43da58[_0x9dd4('0x2e')](_0x460f17[_0x9dd4('0x36')]({'exitAt':moment()[_0x9dd4('0x26')](_0x9dd4('0x2c'))}));});return BPromise['all'](_0x43da58);}}})[_0x9dd4('0x1a')](function(){if(_0x2a2402){var _0xb53979=[];var _0x5ec930=[];var _0x457630=utils[_0x9dd4('0x55')]();var _0xf554c9={'membername':_0x2a2402[_0x9dd4('0x24')],'interface':_0x3802b7,'enterAt':moment()[_0x9dd4('0x26')](_0x9dd4('0x2c')),'role':_0x2a2402[_0x9dd4('0x34')],'internal':_0x2a2402[_0x9dd4('0x25')]};_0x457630[_0x9dd4('0x47')](function(_0x105626){_0xb53979[_0x9dd4('0x2e')](_[_0x9dd4('0x56')]({'channel':_0x105626,'type':_0x9dd4('0x57'),'data1':_0x9dd4('0x58'),'data2':_0x3802b7},_0xf554c9));if(_0x2a2402[_0x9dd4('0x4c')]){_0x5ec930['push'](_[_0x9dd4('0x56')]({'channel':_0x105626,'type':_0x9dd4('0x2a'),'data1':'LOGININPAUSE'},_0xf554c9));}});return db['MemberReport'][_0x9dd4('0x59')](_0xb53979[_0x9dd4('0x5a')](_0x5ec930),{'individualHooks':!![]});}})[_0x9dd4('0x1a')](function(){if(_0x2a2402){return _0x2a2402[_0x9dd4('0x36')]({'online':!![],'lastLoginAt':moment()['format'](_0x9dd4('0x2c')),'voicePause':_0x2a2402[_0x9dd4('0x4c')]||![],'mailPause':_0x2a2402['loginInPause']||![],'chatPause':_0x2a2402['loginInPause']||![],'faxPause':_0x2a2402[_0x9dd4('0x4c')]||![],'smsPause':_0x2a2402[_0x9dd4('0x4c')]||![],'openchannelPause':_0x2a2402[_0x9dd4('0x4c')]||![],'pauseType':_0x2a2402[_0x9dd4('0x4c')]?'LOGININPAUSE':null,'lastPauseAt':moment()['format'](_0x9dd4('0x2c')),'interface':_0x3802b7});}})[_0x9dd4('0x1a')](function(_0x1316a8){_0x8b072c(_0x1316a8);})[_0x9dd4('0x1d')](function(_0x4a2daa){_0x3eb2f0(_0x2e46a8['error'](0x1f4,_0x4a2daa[_0x9dd4('0x1f')]));});});};
\ No newline at end of file
+var _0xf206=['length','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','push','isNil','SIP/%s','PAUSE','body','DEFAULT\x20PAUSE','bulkCreate','update','type','resolve','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','chatPause','faxPause','smsPause','pauseType','lastPauseAt','system','LoginUser','mobile','phone','loginInPause','count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','getVoiceQueues','upsert','UserVoiceQueue.penalty','all','merge','LOGININPAUSE','lodash','util','moment','bluebird','ioredis','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','register','GetUser','User','options','attributes','limit','map','include','model','then','info','debug','stringify','catch','message','error','raw','where','ShowUser','find','name','role','internal','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','MemberReport','findAll'];(function(_0x109587,_0x465d39){var _0x4cc1b6=function(_0xdb59b3){while(--_0xdb59b3){_0x109587['push'](_0x109587['shift']());}};_0x4cc1b6(++_0x465d39);}(_0xf206,0x1c8));var _0x6f20=function(_0xdfbdfd,_0x41d10f){_0xdfbdfd=_0xdfbdfd-0x0;var _0x36038d=_0xf206[_0xdfbdfd];return _0x36038d;};'use strict';var _=require(_0x6f20('0x0'));var util=require(_0x6f20('0x1'));var moment=require(_0x6f20('0x2'));var BPromise=require(_0x6f20('0x3'));var Redis=require(_0x6f20('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6f20('0x5'));var config=require(_0x6f20('0x6'));config[_0x6f20('0x7')]=_[_0x6f20('0x8')](config['redis'],{'host':_0x6f20('0x9'),'port':0x18eb});var socket=require(_0x6f20('0xa'))(new Redis(config['redis']));require(_0x6f20('0xb'))[_0x6f20('0xc')](socket);exports[_0x6f20('0xd')]=function(_0x518a74){var _0x5bcd15=this;return new Promise(function(_0x25104b,_0x5af431){return db[_0x6f20('0xe')]['findAll']({'raw':_0x518a74[_0x6f20('0xf')]?_0x518a74[_0x6f20('0xf')]['raw']===undefined?!![]:![]:!![],'where':_0x518a74[_0x6f20('0xf')]?_0x518a74[_0x6f20('0xf')]['where']||null:null,'attributes':_0x518a74['options']?_0x518a74[_0x6f20('0xf')][_0x6f20('0x10')]||null:null,'limit':_0x518a74[_0x6f20('0xf')]?_0x518a74[_0x6f20('0xf')][_0x6f20('0x11')]||null:null,'include':_0x518a74[_0x6f20('0xf')]?_0x518a74[_0x6f20('0xf')]['include']?_[_0x6f20('0x12')](_0x518a74['options'][_0x6f20('0x13')],function(_0x19b07e){return{'model':db[_0x19b07e[_0x6f20('0x14')]],'as':_0x19b07e['as'],'attributes':_0x19b07e[_0x6f20('0x10')],'include':_0x19b07e['include']?_['map'](_0x19b07e[_0x6f20('0x13')],function(_0x4a2099){return{'model':db[_0x4a2099['model']],'as':_0x4a2099['as'],'attributes':_0x4a2099[_0x6f20('0x10')],'include':_0x4a2099[_0x6f20('0x13')]?_[_0x6f20('0x12')](_0x4a2099[_0x6f20('0x13')],function(_0x2ca5f4){return{'model':db[_0x2ca5f4[_0x6f20('0x14')]],'as':_0x2ca5f4['as'],'attributes':_0x2ca5f4[_0x6f20('0x10')]};}):[]};}):[]};}):[]:[]})[_0x6f20('0x15')](function(_0x2cee62){logger[_0x6f20('0x16')](_0x6f20('0xd'),_0x518a74);logger[_0x6f20('0x17')](_0x6f20('0xd'),_0x518a74,JSON[_0x6f20('0x18')](_0x2cee62));_0x25104b(_0x2cee62);})[_0x6f20('0x19')](function(_0x590aa4){logger['error'](_0x6f20('0xd'),_0x590aa4[_0x6f20('0x1a')],_0x518a74);_0x5af431(_0x5bcd15[_0x6f20('0x1b')](0x1f4,_0x590aa4[_0x6f20('0x1a')]));});});};exports['ShowUser']=function(_0x426693){var _0x12cafd=this;return new Promise(function(_0x343ef9,_0x5d2f05){return db[_0x6f20('0xe')]['find']({'raw':_0x426693['options']?_0x426693[_0x6f20('0xf')][_0x6f20('0x1c')]===undefined?!![]:![]:!![],'where':_0x426693[_0x6f20('0xf')]?_0x426693[_0x6f20('0xf')][_0x6f20('0x1d')]||null:null,'attributes':_0x426693[_0x6f20('0xf')]?_0x426693[_0x6f20('0xf')]['attributes']||null:null,'include':_0x426693['options']?_0x426693[_0x6f20('0xf')]['include']?_[_0x6f20('0x12')](_0x426693[_0x6f20('0xf')]['include'],function(_0x4a6811){return{'model':db[_0x4a6811['model']],'as':_0x4a6811['as'],'attributes':_0x4a6811[_0x6f20('0x10')],'include':_0x4a6811['include']?_['map'](_0x4a6811[_0x6f20('0x13')],function(_0x7c7f50){return{'model':db[_0x7c7f50[_0x6f20('0x14')]],'as':_0x7c7f50['as'],'attributes':_0x7c7f50[_0x6f20('0x10')],'include':_0x7c7f50[_0x6f20('0x13')]?_[_0x6f20('0x12')](_0x7c7f50[_0x6f20('0x13')],function(_0x43e6f4){return{'model':db[_0x43e6f4[_0x6f20('0x14')]],'as':_0x43e6f4['as'],'attributes':_0x43e6f4[_0x6f20('0x10')]};}):[]};}):[]};}):[]:[]})[_0x6f20('0x15')](function(_0x3b4aa9){logger[_0x6f20('0x16')](_0x6f20('0x1e'),_0x426693);logger[_0x6f20('0x17')]('ShowUser',_0x426693,JSON['stringify'](_0x3b4aa9));_0x343ef9(_0x3b4aa9);})[_0x6f20('0x19')](function(_0x325921){logger['error']('ShowUser',_0x325921[_0x6f20('0x1a')],_0x426693);_0x5d2f05(_0x12cafd['error'](0x1f4,_0x325921['message']));});});};exports['PauseUser']=function(_0x2fa5eb){var _0x264ac5;return db[_0x6f20('0xe')][_0x6f20('0x1f')]({'where':_0x2fa5eb[_0x6f20('0xf')][_0x6f20('0x1d')]||{},'attributes':['id',_0x6f20('0x20'),_0x6f20('0x21'),_0x6f20('0x22'),_0x6f20('0x23')]})[_0x6f20('0x15')](function(_0x30694f){if(!_0x30694f){throw new Error(util[_0x6f20('0x24')](_0x6f20('0x25'),_0x2fa5eb[_0x6f20('0x26')]['id']));}_0x264ac5=_0x30694f;return db[_0x6f20('0x27')]['update']({'paused':0x1},{'where':{'UserId':_0x264ac5['id']},'individualHooks':!![]});})['then'](function(){return db[_0x6f20('0x28')][_0x6f20('0x29')]({'where':{'membername':_0x264ac5[_0x6f20('0x20')],'type':'PAUSE','exitAt':null}});})[_0x6f20('0x15')](function(_0x32a6d7){if(_0x32a6d7&&_0x32a6d7[_0x6f20('0x2a')]){var _0x1ad9f5=moment()[_0x6f20('0x24')](_0x6f20('0x2b'));for(var _0x21a07e=0x0,_0x15c4ea=_0x32a6d7[_0x6f20('0x2a')];_0x21a07e<_0x15c4ea;_0x21a07e++){_0x32a6d7[_0x21a07e]['updateAttributes']({'exitAt':_0x1ad9f5});}}})['then'](function(){var _0x1846d2=[];var _0x5ac374=utils[_0x6f20('0x2c')]();_0x5ac374[_0x6f20('0x2d')](function(_0x5e5044){_0x1846d2[_0x6f20('0x2e')]({'channel':_0x5e5044,'membername':_0x264ac5[_0x6f20('0x20')],'interface':_[_0x6f20('0x2f')](_0x264ac5[_0x6f20('0x23')])?util[_0x6f20('0x24')](_0x6f20('0x30'),_0x264ac5[_0x6f20('0x20')]):_0x264ac5[_0x6f20('0x23')],'type':_0x6f20('0x31'),'enterAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b')),'data1':_0x2fa5eb[_0x6f20('0x32')]['type']||_0x6f20('0x33'),'role':_0x264ac5['role'],'internal':_0x264ac5[_0x6f20('0x22')],'uniqueid':_0x2fa5eb[_0x6f20('0x32')]['uniqueid']||null});});return db[_0x6f20('0x28')][_0x6f20('0x34')](_0x1846d2,{'individualHooks':!![]});})[_0x6f20('0x15')](function(){return _0x264ac5[_0x6f20('0x35')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2fa5eb[_0x6f20('0x32')][_0x6f20('0x36')]||_0x6f20('0x33'),'lastPauseAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b'))});})[_0x6f20('0x19')](function(_0x5521c1){throw _0x5521c1;});};exports['UnpauseUser']=function(_0x18aaf4){return Promise[_0x6f20('0x37')]()['then'](function(){if(_0x18aaf4[_0x6f20('0x32')][_0x6f20('0x38')]&&!utils[_0x6f20('0x39')](_0x18aaf4[_0x6f20('0x32')][_0x6f20('0x38')])){throw new Error(util[_0x6f20('0x24')](_0x6f20('0x3a'),_0x18aaf4[_0x6f20('0x32')][_0x6f20('0x38')]));}return db[_0x6f20('0xe')][_0x6f20('0x3b')]({'where':_0x18aaf4[_0x6f20('0xf')][_0x6f20('0x1d')]||{},'attributes':['id','name',_0x6f20('0x21'),'internal','interface',_0x6f20('0x3c'),'voicePause','mailPause',_0x6f20('0x3d'),_0x6f20('0x3e'),'openchannelPause',_0x6f20('0x3f'),'whatsappPause',_0x6f20('0x40'),_0x6f20('0x41')]});})[_0x6f20('0x15')](function(_0x74732d){if(!_0x74732d){throw new Error(util[_0x6f20('0x24')](_0x6f20('0x25'),_0x18aaf4[_0x6f20('0x26')]['id']));}return _0x74732d['unpause'](_0x18aaf4['body'][_0x6f20('0x38')],_0x6f20('0x42'));})[_0x6f20('0x19')](function(_0xe73c96){throw _0xe73c96;});};exports['LogoutUser']=function(_0x2efecf){var _0x5a7e7c=this;return new Promise(function(_0x5aa917,_0x34ccf4){var _0x1aa4fc;return db['User'][_0x6f20('0x3b')]({'where':_0x2efecf['options'][_0x6f20('0x1d')]||{},'attributes':['id',_0x6f20('0x20')]})[_0x6f20('0x15')](function(_0x334a32){if(_0x334a32){_0x1aa4fc=_0x334a32;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x1aa4fc['name']},'individualHooks':!![]});}})[_0x6f20('0x15')](function(){if(_0x1aa4fc){return db[_0x6f20('0x28')][_0x6f20('0x29')]({'where':{'membername':_0x1aa4fc['name'],'exitAt':null}});}})[_0x6f20('0x15')](function(_0x511b91){if(_0x1aa4fc){if(_0x511b91&&_0x511b91[_0x6f20('0x2a')]){var _0x27c3ad=[];_0x511b91[_0x6f20('0x2d')](function(_0x16f674){_0x27c3ad['push'](_0x16f674[_0x6f20('0x35')]({'exitAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b'))}));});return BPromise['all'](_0x27c3ad);}}})[_0x6f20('0x15')](function(){if(_0x1aa4fc){return _0x1aa4fc[_0x6f20('0x35')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x2933c0){_0x5aa917(_0x2933c0);})[_0x6f20('0x19')](function(_0xe9a1b4){_0x34ccf4(_0x5a7e7c['error'](0x1f4,_0xe9a1b4['message']));});});};exports[_0x6f20('0x43')]=function(_0x4efccc){var _0x11d4c1=this;return new Promise(function(_0x46f568,_0x34f00e){var _0x128be2;var _0x3db645;var _0x6874ad;var _0x50185;return db[_0x6f20('0xe')][_0x6f20('0x3b')]({'where':_0x4efccc[_0x6f20('0xf')][_0x6f20('0x1d')]||{},'attributes':['id','name','role',_0x6f20('0x44'),_0x6f20('0x45'),_0x6f20('0x22'),_0x6f20('0x46'),_0x6f20('0x23')]})[_0x6f20('0x15')](function(_0x90ee8b){if(_0x90ee8b){_0x128be2=_0x90ee8b;_0x50185=_0x4efccc[_0x6f20('0x32')]['interface']?_0x4efccc['body'][_0x6f20('0x23')]:util['format']('SIP/%s',_0x128be2[_0x6f20('0x20')]);return db[_0x6f20('0xe')][_0x6f20('0x47')]({'where':{'role':_0x6f20('0x48'),'online':!![],'id':{'$ne':_0x128be2['id']}}});}})['then'](function(_0x15eb2c){if(_0x15eb2c){_0x6874ad=_0x15eb2c;return require('../../config/license/util')[_0x6f20('0x49')]();}})[_0x6f20('0x15')](function(_0x254f3f){if(_0x254f3f&&_0x254f3f[_0x6f20('0x4a')]&&_0x6874ad>=_0x254f3f[_0x6f20('0x4a')]){throw new Error(_0x6f20('0x4b'));}})[_0x6f20('0x15')](function(){if(_0x128be2){return db['UserVoiceQueueRt'][_0x6f20('0x4c')]({'where':{'membername':_0x128be2[_0x6f20('0x20')]},'individualHooks':!![]});}})[_0x6f20('0x15')](function(){if(_0x128be2){return _0x128be2[_0x6f20('0x4d')]({'raw':!![]});}})[_0x6f20('0x15')](function(_0x2c910b){if(_0x128be2){if(_0x2c910b){var _0x520e66=[];_0x3db645=_0x2c910b;if(_0x3db645[_0x6f20('0x2a')]){for(var _0x493d89=0x0;_0x493d89<_0x3db645[_0x6f20('0x2a')];_0x493d89++){_0x520e66[_0x6f20('0x2e')](db[_0x6f20('0x27')][_0x6f20('0x4e')]({'membername':_0x128be2['name'],'UserId':_0x128be2['id'],'queue_name':_0x3db645[_0x493d89]['name'],'VoiceQueueId':_0x3db645[_0x493d89]['id'],'interface':_0x50185,'paused':_0x128be2[_0x6f20('0x46')]||![],'penalty':_0x3db645[_0x493d89][_0x6f20('0x4f')]||0x0}));}return BPromise[_0x6f20('0x50')](_0x520e66);}}}})[_0x6f20('0x15')](function(){if(_0x128be2){return db[_0x6f20('0x28')]['findAll']({'where':{'membername':_0x128be2['name'],'exitAt':null}});}})[_0x6f20('0x15')](function(_0x5942dc){if(_0x128be2){if(_0x5942dc&&_0x5942dc['length']){var _0x17acc6=[];_0x5942dc['forEach'](function(_0x5c32a5){_0x17acc6[_0x6f20('0x2e')](_0x5c32a5[_0x6f20('0x35')]({'exitAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b'))}));});return BPromise[_0x6f20('0x50')](_0x17acc6);}}})[_0x6f20('0x15')](function(){if(_0x128be2){var _0x1c4d6a=[];var _0x49c81c=[];var _0x12d116=utils[_0x6f20('0x2c')]();var _0x11b774={'membername':_0x128be2[_0x6f20('0x20')],'interface':_0x50185,'enterAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b')),'role':_0x128be2[_0x6f20('0x21')],'internal':_0x128be2[_0x6f20('0x22')]};_0x12d116[_0x6f20('0x2d')](function(_0x5e93ae){_0x1c4d6a[_0x6f20('0x2e')](_[_0x6f20('0x51')]({'channel':_0x5e93ae,'type':'LOGIN','data1':'callysquare','data2':_0x50185},_0x11b774));if(_0x128be2[_0x6f20('0x46')]){_0x49c81c[_0x6f20('0x2e')](_['merge']({'channel':_0x5e93ae,'type':_0x6f20('0x31'),'data1':_0x6f20('0x52')},_0x11b774));}});return db[_0x6f20('0x28')]['bulkCreate'](_0x1c4d6a['concat'](_0x49c81c),{'individualHooks':!![]});}})['then'](function(){if(_0x128be2){return _0x128be2['update']({'online':!![],'lastLoginAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b')),'voicePause':_0x128be2['loginInPause']||![],'mailPause':_0x128be2[_0x6f20('0x46')]||![],'chatPause':_0x128be2[_0x6f20('0x46')]||![],'faxPause':_0x128be2[_0x6f20('0x46')]||![],'smsPause':_0x128be2['loginInPause']||![],'openchannelPause':_0x128be2[_0x6f20('0x46')]||![],'pauseType':_0x128be2[_0x6f20('0x46')]?_0x6f20('0x52'):null,'lastPauseAt':moment()[_0x6f20('0x24')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x50185});}})[_0x6f20('0x15')](function(_0x401568){_0x46f568(_0x401568);})[_0x6f20('0x19')](function(_0x16cafe){_0x34f00e(_0x11d4c1['error'](0x1f4,_0x16cafe[_0x6f20('0x1a')]));});});};
\ No newline at end of file
index caa06ad..82f91ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61d3=['emit','removeListener','register','length','user:','./user.events','save','remove','update'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x61d3,0x71));var _0x361d=function(_0x308f79,_0x121c42){_0x308f79=_0x308f79-0x0;var _0x71490e=_0x61d3[_0x308f79];return _0x71490e;};'use strict';var UserEvents=require(_0x361d('0x0'));var events=[_0x361d('0x1'),_0x361d('0x2'),_0x361d('0x3')];function createListener(_0x4a4d94,_0x5ad28b){return function(_0x2c938e){_0x5ad28b[_0x361d('0x4')](_0x4a4d94,_0x2c938e);};}function removeListener(_0x213645,_0x5d13f1){return function(){UserEvents[_0x361d('0x5')](_0x213645,_0x5d13f1);};}exports[_0x361d('0x6')]=function(_0x1837fb){for(var _0x1114fd=0x0,_0x48053d=events[_0x361d('0x7')];_0x1114fd<_0x48053d;_0x1114fd++){var _0x1d5e6e=events[_0x1114fd];var _0x1103fd=createListener(_0x361d('0x8')+_0x1d5e6e,_0x1837fb);UserEvents['on'](_0x1d5e6e,_0x1103fd);}};
\ No newline at end of file
+var _0x5e73=['removeListener','register','length','user:','save','remove','emit'];(function(_0x4c7b20,_0x361515){var _0x4872bd=function(_0x358e19){while(--_0x358e19){_0x4c7b20['push'](_0x4c7b20['shift']());}};_0x4872bd(++_0x361515);}(_0x5e73,0x17e));var _0x35e7=function(_0x50e1a7,_0x555868){_0x50e1a7=_0x50e1a7-0x0;var _0x5a3a82=_0x5e73[_0x50e1a7];return _0x5a3a82;};'use strict';var UserEvents=require('./user.events');var events=[_0x35e7('0x0'),_0x35e7('0x1'),'update'];function createListener(_0x1a5f12,_0x2c0508){return function(_0x3200c7){_0x2c0508[_0x35e7('0x2')](_0x1a5f12,_0x3200c7);};}function removeListener(_0x5d39f6,_0x1d0e62){return function(){UserEvents[_0x35e7('0x3')](_0x5d39f6,_0x1d0e62);};}exports[_0x35e7('0x4')]=function(_0x1bc09f){for(var _0x5d14ae=0x0,_0x26ffb6=events[_0x35e7('0x5')];_0x5d14ae<_0x26ffb6;_0x5d14ae++){var _0x591325=events[_0x5d14ae];var _0x276396=createListener(_0x35e7('0x6')+_0x591325,_0x1bc09f);UserEvents['on'](_0x591325,_0x276396);}};
\ No newline at end of file
index 77cc53b..fc6f6f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x3199af,_0x339560){var _0x5aa4d0=function(_0x1cb5f0){while(--_0x1cb5f0){_0x3199af['push'](_0x3199af['shift']());}};_0x5aa4d0(++_0x339560);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x169318,_0x3b4dfa){var _0x5d07b6=function(_0x1376a8){while(--_0x1376a8){_0x169318['push'](_0x169318['shift']());}};_0x5d07b6(++_0x3b4dfa);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 9006424..7164721 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x642a=['INTEGER','sequelize','exports'];(function(_0x4fdb86,_0x1600b3){var _0x151c45=function(_0x53a0a8){while(--_0x53a0a8){_0x4fdb86['push'](_0x4fdb86['shift']());}};_0x151c45(++_0x1600b3);}(_0x642a,0x1f0));var _0xa642=function(_0x4acd52,_0x158142){_0x4acd52=_0x4acd52-0x0;var _0x9d50c9=_0x642a[_0x4acd52];return _0x9d50c9;};'use strict';var Sequelize=require(_0xa642('0x0'));module[_0xa642('0x1')]={'penalty':{'type':Sequelize[_0xa642('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index a1413b0..b3ea8b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadd9=['request-promise','rimraf','../../config/environment','./userChatQueue.attributes','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x34b3b7,_0x50676a){var _0x3a3bc0=function(_0x1a442f){while(--_0x1a442f){_0x34b3b7['push'](_0x34b3b7['shift']());}};_0x3a3bc0(++_0x50676a);}(_0xadd9,0x11a));var _0x9add=function(_0x540d0e,_0x3ed766){_0x540d0e=_0x540d0e-0x0;var _0x515efa=_0xadd9[_0x540d0e];return _0x515efa;};'use strict';var _=require(_0x9add('0x0'));var util=require(_0x9add('0x1'));var logger=require(_0x9add('0x2'))(_0x9add('0x3'));var moment=require(_0x9add('0x4'));var BPromise=require(_0x9add('0x5'));var rp=require(_0x9add('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9add('0x7'));var config=require(_0x9add('0x8'));var attributes=require(_0x9add('0x9'));module['exports']=function(_0xe9e608,_0x4676a4){return _0xe9e608['define'](_0x9add('0xa'),attributes,{'tableName':_0x9add('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd529=['api','bluebird','rimraf','../../config/environment','./userChatQueue.attributes','exports','../../config/logger'];(function(_0x26337f,_0x360c6b){var _0x51c972=function(_0x2e6d46){while(--_0x2e6d46){_0x26337f['push'](_0x26337f['shift']());}};_0x51c972(++_0x360c6b);}(_0xd529,0xf4));var _0x9d52=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xd529[_0xfae23b];return _0x200640;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9d52('0x0'))(_0x9d52('0x1'));var moment=require('moment');var BPromise=require(_0x9d52('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9d52('0x3'));var config=require(_0x9d52('0x4'));var attributes=require(_0x9d52('0x5'));module[_0x9d52('0x6')]=function(_0x405424,_0x193337){return _0x405424['define']('UserChatQueue',attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cfaf45d..7055d7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc3=['result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','stringify','error','code','message','UserChatQueue,\x20%s,\x20%s'];(function(_0x20ff00,_0x22a2b2){var _0x2e7cb8=function(_0xce48f6){while(--_0xce48f6){_0x20ff00['push'](_0x20ff00['shift']());}};_0x2e7cb8(++_0x22a2b2);}(_0x4fc3,0x14c));var _0x34fc=function(_0x2111db,_0x24a22c){_0x2111db=_0x2111db-0x0;var _0xa2ba25=_0x4fc3[_0x2111db];return _0xa2ba25;};'use strict';var _=require(_0x34fc('0x0'));var util=require(_0x34fc('0x1'));var moment=require(_0x34fc('0x2'));var BPromise=require('bluebird');var rs=require(_0x34fc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x34fc('0x4'))['db'];var utils=require(_0x34fc('0x5'));var logger=require('../../config/logger')(_0x34fc('0x6'));var config=require(_0x34fc('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x34fc('0x8')][_0x34fc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x471972,_0x168ced,_0x371b5a){return new BPromise(function(_0x2b015f,_0x29edea){return client[_0x34fc('0xa')](_0x471972,_0x371b5a)[_0x34fc('0xb')](function(_0x326d67){logger[_0x34fc('0xc')]('UserChatQueue,\x20%s,\x20%s',_0x168ced,_0x34fc('0xd'));logger[_0x34fc('0xe')]('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x168ced,_0x34fc('0xd'),JSON[_0x34fc('0xf')](_0x326d67));if(_0x326d67[_0x34fc('0x10')]){if(_0x326d67[_0x34fc('0x10')][_0x34fc('0x11')]===0x1f4){logger[_0x34fc('0x10')]('UserChatQueue,\x20%s,\x20%s',_0x168ced,_0x326d67[_0x34fc('0x10')][_0x34fc('0x12')]);return _0x29edea(_0x326d67[_0x34fc('0x10')][_0x34fc('0x12')]);}logger['error'](_0x34fc('0x13'),_0x168ced,_0x326d67['error'][_0x34fc('0x12')]);return _0x2b015f(_0x326d67['error'][_0x34fc('0x12')]);}else{logger['info'](_0x34fc('0x13'),_0x168ced,_0x34fc('0xd'));_0x2b015f(_0x326d67[_0x34fc('0x14')]['message']);}})[_0x34fc('0x15')](function(_0x3a6555){logger['error'](_0x34fc('0x13'),_0x168ced,_0x3a6555);_0x29edea(_0x3a6555);});});}
\ No newline at end of file
+var _0xc25e=['catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x41f5a6,_0xb35c51){var _0x241efd=function(_0x2cfaa5){while(--_0x2cfaa5){_0x41f5a6['push'](_0x41f5a6['shift']());}};_0x241efd(++_0xb35c51);}(_0xc25e,0x1c9));var _0xec25=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xc25e[_0x2b4411];return _0x8e41ef;};'use strict';var _=require('lodash');var util=require(_0xec25('0x0'));var moment=require(_0xec25('0x1'));var BPromise=require(_0xec25('0x2'));var rs=require(_0xec25('0x3'));var fs=require('fs');var Redis=require(_0xec25('0x4'));var db=require(_0xec25('0x5'))['db'];var utils=require(_0xec25('0x6'));var logger=require(_0xec25('0x7'))('rpc');var config=require(_0xec25('0x8'));var jayson=require(_0xec25('0x9'));var client=jayson[_0xec25('0xa')][_0xec25('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f40b2,_0x1da63d,_0x20ae9f){return new BPromise(function(_0x39f271,_0x5048a0){return client[_0xec25('0xc')](_0x1f40b2,_0x20ae9f)[_0xec25('0xd')](function(_0x10eb6b){logger[_0xec25('0xe')](_0xec25('0xf'),_0x1da63d,_0xec25('0x10'));logger[_0xec25('0x11')](_0xec25('0x12'),_0x1da63d,_0xec25('0x10'),JSON[_0xec25('0x13')](_0x10eb6b));if(_0x10eb6b[_0xec25('0x14')]){if(_0x10eb6b[_0xec25('0x14')]['code']===0x1f4){logger[_0xec25('0x14')](_0xec25('0xf'),_0x1da63d,_0x10eb6b[_0xec25('0x14')][_0xec25('0x15')]);return _0x5048a0(_0x10eb6b[_0xec25('0x14')]['message']);}logger[_0xec25('0x14')](_0xec25('0xf'),_0x1da63d,_0x10eb6b[_0xec25('0x14')]['message']);return _0x39f271(_0x10eb6b[_0xec25('0x14')]['message']);}else{logger[_0xec25('0xe')](_0xec25('0xf'),_0x1da63d,_0xec25('0x10'));_0x39f271(_0x10eb6b[_0xec25('0x16')][_0xec25('0x15')]);}})[_0xec25('0x17')](function(_0x2faf59){logger[_0xec25('0x14')](_0xec25('0xf'),_0x1da63d,_0x2faf59);_0x5048a0(_0x2faf59);});});}
\ No newline at end of file
index 0f2825e..274c2dd 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(_0x50aa3b,_0x4e92e1){var _0x4fa6da=function(_0x200ec1){while(--_0x200ec1){_0x50aa3b['push'](_0x50aa3b['shift']());}};_0x4fa6da(++_0x4e92e1);}(_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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x9132cc,_0x2304bc){var _0x33b079=function(_0x312998){while(--_0x312998){_0x9132cc['push'](_0x9132cc['shift']());}};_0x33b079(++_0x2304bc);}(_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 2561204..921cb5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc371=['sequelize','INTEGER'];(function(_0x5ac4fb,_0x45525f){var _0x5af491=function(_0x4ec070){while(--_0x4ec070){_0x5ac4fb['push'](_0x5ac4fb['shift']());}};_0x5af491(++_0x45525f);}(_0xc371,0x13c));var _0x1c37=function(_0x37b004,_0x52d4b7){_0x37b004=_0x37b004-0x0;var _0x180d3d=_0xc371[_0x37b004];return _0x180d3d;};'use strict';var Sequelize=require(_0x1c37('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x1c37('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x1c37('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7681=['INTEGER','STRING','sequelize','exports'];(function(_0x1573ba,_0x51140c){var _0x412946=function(_0x37c566){while(--_0x37c566){_0x1573ba['push'](_0x1573ba['shift']());}};_0x412946(++_0x51140c);}(_0x7681,0x1f2));var _0x1768=function(_0x18a6cf,_0x357dbb){_0x18a6cf=_0x18a6cf-0x0;var _0x39107e=_0x7681[_0x18a6cf];return _0x39107e;};'use strict';var Sequelize=require(_0x1768('0x0'));module[_0x1768('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x1768('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x1768('0x3')]}};
\ No newline at end of file
index e654b49..48e2391 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb0c=['user_has_fax_queues','lodash','util','api','bluebird','request-promise','path','rimraf','exports','define','UserFaxQueue'];(function(_0x572b9a,_0x501bca){var _0x33e045=function(_0xb559ec){while(--_0xb559ec){_0x572b9a['push'](_0x572b9a['shift']());}};_0x33e045(++_0x501bca);}(_0xdb0c,0x11f));var _0xcdb0=function(_0x16f867,_0x555c27){_0x16f867=_0x16f867-0x0;var _0x3c99f9=_0xdb0c[_0x16f867];return _0x3c99f9;};'use strict';var _=require(_0xcdb0('0x0'));var util=require(_0xcdb0('0x1'));var logger=require('../../config/logger')(_0xcdb0('0x2'));var moment=require('moment');var BPromise=require(_0xcdb0('0x3'));var rp=require(_0xcdb0('0x4'));var fs=require('fs');var path=require(_0xcdb0('0x5'));var rimraf=require(_0xcdb0('0x6'));var config=require('../../config/environment');var attributes=require('./userFaxQueue.attributes');module[_0xcdb0('0x7')]=function(_0x394b3c,_0x31c57a){return _0x394b3c[_0xcdb0('0x8')](_0xcdb0('0x9'),attributes,{'tableName':_0xcdb0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6e7=['user_has_fax_queues','lodash','util','api','request-promise','path','../../config/environment','./userFaxQueue.attributes','define','UserFaxQueue'];(function(_0x191b54,_0x1dc69a){var _0x2270d1=function(_0xfcc107){while(--_0xfcc107){_0x191b54['push'](_0x191b54['shift']());}};_0x2270d1(++_0x1dc69a);}(_0xc6e7,0x1af));var _0x7c6e=function(_0x510c11,_0x766147){_0x510c11=_0x510c11-0x0;var _0x19e066=_0xc6e7[_0x510c11];return _0x19e066;};'use strict';var _=require(_0x7c6e('0x0'));var util=require(_0x7c6e('0x1'));var logger=require('../../config/logger')(_0x7c6e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7c6e('0x3'));var fs=require('fs');var path=require(_0x7c6e('0x4'));var rimraf=require('rimraf');var config=require(_0x7c6e('0x5'));var attributes=require(_0x7c6e('0x6'));module['exports']=function(_0x577f1e,_0x5754f0){return _0x577f1e[_0x7c6e('0x7')](_0x7c6e('0x8'),attributes,{'tableName':_0x7c6e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0697572..0a22f93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a58=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','randomstring'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x1a58,0x1b6));var _0x81a5=function(_0x53e67e,_0x27b029){_0x53e67e=_0x53e67e-0x0;var _0x29fea3=_0x1a58[_0x53e67e];return _0x29fea3;};'use strict';var _=require(_0x81a5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x81a5('0x1'));var fs=require('fs');var Redis=require(_0x81a5('0x2'));var db=require(_0x81a5('0x3'))['db'];var utils=require(_0x81a5('0x4'));var logger=require(_0x81a5('0x5'))(_0x81a5('0x6'));var config=require(_0x81a5('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x81a5('0x8')][_0x81a5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x882e6d,_0x230901,_0x2eefaf){return new BPromise(function(_0x5b6070,_0x2dafee){return client[_0x81a5('0xa')](_0x882e6d,_0x2eefaf)[_0x81a5('0xb')](function(_0x222675){logger[_0x81a5('0xc')](_0x81a5('0xd'),_0x230901,_0x81a5('0xe'));logger[_0x81a5('0xf')](_0x81a5('0x10'),_0x230901,_0x81a5('0xe'),JSON[_0x81a5('0x11')](_0x222675));if(_0x222675[_0x81a5('0x12')]){if(_0x222675[_0x81a5('0x12')][_0x81a5('0x13')]===0x1f4){logger[_0x81a5('0x12')](_0x81a5('0xd'),_0x230901,_0x222675[_0x81a5('0x12')][_0x81a5('0x14')]);return _0x2dafee(_0x222675[_0x81a5('0x12')][_0x81a5('0x14')]);}logger['error'](_0x81a5('0xd'),_0x230901,_0x222675[_0x81a5('0x12')]['message']);return _0x5b6070(_0x222675[_0x81a5('0x12')][_0x81a5('0x14')]);}else{logger[_0x81a5('0xc')](_0x81a5('0xd'),_0x230901,_0x81a5('0xe'));_0x5b6070(_0x222675['result']['message']);}})[_0x81a5('0x15')](function(_0x150d74){logger[_0x81a5('0x12')]('UserFaxQueue,\x20%s,\x20%s',_0x230901,_0x150d74);_0x2dafee(_0x150d74);});});}
\ No newline at end of file
+var _0xbccb=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','UserFaxQueue,\x20%s,\x20%s'];(function(_0xf73c09,_0x4e424e){var _0xa8923c=function(_0x4831c1){while(--_0x4831c1){_0xf73c09['push'](_0xf73c09['shift']());}};_0xa8923c(++_0x4e424e);}(_0xbccb,0x168));var _0xbbcc=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0xbccb[_0x5416db];return _0x243e35;};'use strict';var _=require(_0xbbcc('0x0'));var util=require(_0xbbcc('0x1'));var moment=require(_0xbbcc('0x2'));var BPromise=require(_0xbbcc('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbbcc('0x4'));var db=require(_0xbbcc('0x5'))['db'];var utils=require(_0xbbcc('0x6'));var logger=require('../../config/logger')(_0xbbcc('0x7'));var config=require('../../config/environment');var jayson=require(_0xbbcc('0x8'));var client=jayson[_0xbbcc('0x9')][_0xbbcc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2dc242,_0x5baec9,_0x4a2fd3){return new BPromise(function(_0x38321d,_0x508ee5){return client[_0xbbcc('0xb')](_0x2dc242,_0x4a2fd3)[_0xbbcc('0xc')](function(_0x18baf5){logger[_0xbbcc('0xd')]('UserFaxQueue,\x20%s,\x20%s',_0x5baec9,_0xbbcc('0xe'));logger['debug']('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x5baec9,_0xbbcc('0xe'),JSON[_0xbbcc('0xf')](_0x18baf5));if(_0x18baf5[_0xbbcc('0x10')]){if(_0x18baf5[_0xbbcc('0x10')]['code']===0x1f4){logger[_0xbbcc('0x10')](_0xbbcc('0x11'),_0x5baec9,_0x18baf5[_0xbbcc('0x10')][_0xbbcc('0x12')]);return _0x508ee5(_0x18baf5['error'][_0xbbcc('0x12')]);}logger[_0xbbcc('0x10')](_0xbbcc('0x11'),_0x5baec9,_0x18baf5[_0xbbcc('0x10')]['message']);return _0x38321d(_0x18baf5[_0xbbcc('0x10')][_0xbbcc('0x12')]);}else{logger[_0xbbcc('0xd')]('UserFaxQueue,\x20%s,\x20%s',_0x5baec9,_0xbbcc('0xe'));_0x38321d(_0x18baf5[_0xbbcc('0x13')]['message']);}})[_0xbbcc('0x14')](function(_0x487d89){logger[_0xbbcc('0x10')]('UserFaxQueue,\x20%s,\x20%s',_0x5baec9,_0x487d89);_0x508ee5(_0x487d89);});});}
\ No newline at end of file
index db63d59..60404f6 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(_0x204671,_0x2cc028){var _0x16effa=function(_0xcdcaea){while(--_0xcdcaea){_0x204671['push'](_0x204671['shift']());}};_0x16effa(++_0x2cc028);}(_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(_0x2becba,_0x4ea656){var _0x90b5dd=function(_0x26ae2b){while(--_0x26ae2b){_0x2becba['push'](_0x2becba['shift']());}};_0x90b5dd(++_0x4ea656);}(_0x9c44,0x178));var _0x49c4=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x9c44[_0x3ff085];return _0x2b68c3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 48603ba..ff49f0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb681=['sequelize','exports','INTEGER'];(function(_0x1fec1e,_0xce18d2){var _0x31f9ec=function(_0x347a9a){while(--_0x347a9a){_0x1fec1e['push'](_0x1fec1e['shift']());}};_0x31f9ec(++_0xce18d2);}(_0xb681,0x153));var _0x1b68=function(_0x5c11f3,_0x565efa){_0x5c11f3=_0x5c11f3-0x0;var _0x45f63a=_0xb681[_0x5c11f3];return _0x45f63a;};'use strict';var Sequelize=require(_0x1b68('0x0'));module[_0x1b68('0x1')]={'penalty':{'type':Sequelize[_0x1b68('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2d66=['exports','INTEGER'];(function(_0x20ee5a,_0x409903){var _0x4573bf=function(_0xc7daf6){while(--_0xc7daf6){_0x20ee5a['push'](_0x20ee5a['shift']());}};_0x4573bf(++_0x409903);}(_0x2d66,0x18c));var _0x62d6=function(_0xe73498,_0x3d8943){_0xe73498=_0xe73498-0x0;var _0x4debca=_0x2d66[_0xe73498];return _0x4debca;};'use strict';var Sequelize=require('sequelize');module[_0x62d6('0x0')]={'penalty':{'type':Sequelize[_0x62d6('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 1cc1526..7f87014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dc2=['define','user_has_mail_queues','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./userMailQueue.attributes','exports'];(function(_0x4e65c2,_0x18237c){var _0x21bf48=function(_0x51d501){while(--_0x51d501){_0x4e65c2['push'](_0x4e65c2['shift']());}};_0x21bf48(++_0x18237c);}(_0x2dc2,0x70));var _0x22dc=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0x2dc2[_0x2576d7];return _0x16a08c;};'use strict';var _=require(_0x22dc('0x0'));var util=require(_0x22dc('0x1'));var logger=require(_0x22dc('0x2'))('api');var moment=require('moment');var BPromise=require(_0x22dc('0x3'));var rp=require(_0x22dc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x22dc('0x5'));var config=require(_0x22dc('0x6'));var attributes=require(_0x22dc('0x7'));module[_0x22dc('0x8')]=function(_0x4f5309,_0x5cdcae){return _0x4f5309[_0x22dc('0x9')]('UserMailQueue',attributes,{'tableName':_0x22dc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x52a4=['UserMailQueue','user_has_mail_queues','lodash','../../config/logger','api','moment','request-promise','rimraf','./userMailQueue.attributes','define'];(function(_0x246148,_0x1358ee){var _0x453d94=function(_0x59920e){while(--_0x59920e){_0x246148['push'](_0x246148['shift']());}};_0x453d94(++_0x1358ee);}(_0x52a4,0x110));var _0x452a=function(_0xe974a4,_0x287b3d){_0xe974a4=_0xe974a4-0x0;var _0x2dcffa=_0x52a4[_0xe974a4];return _0x2dcffa;};'use strict';var _=require(_0x452a('0x0'));var util=require('util');var logger=require(_0x452a('0x1'))(_0x452a('0x2'));var moment=require(_0x452a('0x3'));var BPromise=require('bluebird');var rp=require(_0x452a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x452a('0x5'));var config=require('../../config/environment');var attributes=require(_0x452a('0x6'));module['exports']=function(_0x26f299,_0x288264){return _0x26f299[_0x452a('0x7')](_0x452a('0x8'),attributes,{'tableName':_0x452a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 777e77a..bc5110f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x5678a5,_0x43505b){var _0x195890=function(_0x1788bb){while(--_0x1788bb){_0x5678a5['push'](_0x5678a5['shift']());}};_0x195890(++_0x43505b);}(_0x6aa7,0x178));var _0x76aa=function(_0x18f36f,_0x365f71){_0x18f36f=_0x18f36f-0x0;var _0x214f59=_0x6aa7[_0x18f36f];return _0x214f59;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
+var _0x8ef6=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x13018a,_0x5ad3b9){var _0x18aa8f=function(_0x2707f2){while(--_0x2707f2){_0x13018a['push'](_0x13018a['shift']());}};_0x18aa8f(++_0x5ad3b9);}(_0x8ef6,0xf2));var _0x68ef=function(_0x3e94e1,_0x47fc8c){_0x3e94e1=_0x3e94e1-0x0;var _0xd0e9ac=_0x8ef6[_0x3e94e1];return _0xd0e9ac;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var moment=require(_0x68ef('0x2'));var BPromise=require(_0x68ef('0x3'));var rs=require(_0x68ef('0x4'));var fs=require('fs');var Redis=require(_0x68ef('0x5'));var db=require(_0x68ef('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x68ef('0x7'))(_0x68ef('0x8'));var config=require(_0x68ef('0x9'));var jayson=require(_0x68ef('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){return client[_0x68ef('0xb')](_0x3c2ff3,_0x2de776)[_0x68ef('0xc')](function(_0x22ae26){logger[_0x68ef('0xd')](_0x68ef('0xe'),_0x4740e8,_0x68ef('0xf'));logger[_0x68ef('0x10')](_0x68ef('0x11'),_0x4740e8,_0x68ef('0xf'),JSON[_0x68ef('0x12')](_0x22ae26));if(_0x22ae26[_0x68ef('0x13')]){if(_0x22ae26['error'][_0x68ef('0x14')]===0x1f4){logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);return _0x228967(_0x22ae26[_0x68ef('0x13')]['message']);}logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')]['message']);return _0x4eb5eb(_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);}else{logger[_0x68ef('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4740e8,_0x68ef('0xf'));_0x4eb5eb(_0x22ae26[_0x68ef('0x16')][_0x68ef('0x15')]);}})[_0x68ef('0x17')](function(_0x5c4456){logger[_0x68ef('0x13')]('UserMailQueue,\x20%s,\x20%s',_0x4740e8,_0x5c4456);_0x228967(_0x5c4456);});});}
\ No newline at end of file
index 69c5610..e18d5ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc842=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','util','path','connect-timeout'];(function(_0x1a8f8f,_0x2d8cc4){var _0x5a3e09=function(_0x2194bc){while(--_0x2194bc){_0x1a8f8f['push'](_0x1a8f8f['shift']());}};_0x5a3e09(++_0x2d8cc4);}(_0xc842,0xa4));var _0x2c84=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0xc842[_0x38537f];return _0x141e23;};'use strict';var multer=require(_0x2c84('0x0'));var util=require(_0x2c84('0x1'));var path=require(_0x2c84('0x2'));var timeout=require(_0x2c84('0x3'));var express=require('express');var router=express[_0x2c84('0x4')]();var fs_extra=require(_0x2c84('0x5'));var auth=require(_0x2c84('0x6'));var interaction=require(_0x2c84('0x7'));var config=require(_0x2c84('0x8'));var controller=require(_0x2c84('0x9'));router[_0x2c84('0xa')]('/',auth[_0x2c84('0xb')](),controller[_0x2c84('0xc')]);module[_0x2c84('0xd')]=router;
\ No newline at end of file
+var _0x5cee=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','path','connect-timeout'];(function(_0x240772,_0x3d0f1b){var _0x4c245b=function(_0x79a3d9){while(--_0x79a3d9){_0x240772['push'](_0x240772['shift']());}};_0x4c245b(++_0x3d0f1b);}(_0x5cee,0x11b));var _0xe5ce=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0x5cee[_0x12f688];return _0x59c3de;};'use strict';var multer=require(_0xe5ce('0x0'));var util=require('util');var path=require(_0xe5ce('0x1'));var timeout=require(_0xe5ce('0x2'));var express=require(_0xe5ce('0x3'));var router=express['Router']();var fs_extra=require(_0xe5ce('0x4'));var auth=require(_0xe5ce('0x5'));var interaction=require(_0xe5ce('0x6'));var config=require(_0xe5ce('0x7'));var controller=require(_0xe5ce('0x8'));router[_0xe5ce('0x9')]('/',auth[_0xe5ce('0xa')](),controller[_0xe5ce('0xb')]);module[_0xe5ce('0xc')]=router;
\ No newline at end of file
index de41dda..83973c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08f7=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x2fc480,_0x2702ff){var _0x12bb41=function(_0x25f7f3){while(--_0x25f7f3){_0x2fc480['push'](_0x2fc480['shift']());}};_0x12bb41(++_0x2702ff);}(_0x08f7,0x10c));var _0x708f=function(_0x5ce3c8,_0x2503bd){_0x5ce3c8=_0x5ce3c8-0x0;var _0xa76867=_0x08f7[_0x5ce3c8];return _0xa76867;};'use strict';var Sequelize=require(_0x708f('0x0'));module[_0x708f('0x1')]={'body':{'type':Sequelize[_0x708f('0x2')]},'senderName':{'type':Sequelize[_0x708f('0x3')]},'recipientsId':{'type':Sequelize[_0x708f('0x2')]},'recipientsDescription':{'type':Sequelize[_0x708f('0x3')]},'beep':{'type':Sequelize[_0x708f('0x4')]}};
\ No newline at end of file
+var _0xfdf3=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x3fdf92,_0x5d139a){var _0x437c41=function(_0x236e0a){while(--_0x236e0a){_0x3fdf92['push'](_0x3fdf92['shift']());}};_0x437c41(++_0x5d139a);}(_0xfdf3,0x1e8));var _0x3fdf=function(_0xde589d,_0xcfa1c1){_0xde589d=_0xde589d-0x0;var _0x3053b5=_0xfdf3[_0xde589d];return _0x3053b5;};'use strict';var Sequelize=require(_0x3fdf('0x0'));module[_0x3fdf('0x1')]={'body':{'type':Sequelize[_0x3fdf('0x2')]},'senderName':{'type':Sequelize[_0x3fdf('0x3')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0x3fdf('0x3')]},'beep':{'type':Sequelize[_0x3fdf('0x4')]}};
\ No newline at end of file
index 266aaba..bdee9c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fa0=['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','./userNotification.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','update','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','recipientsDescription','isEmpty','beep','then','recipientsId','sortBy','join','transaction','UserNotification','create','recipient','emit','userNotification:send','catch','Template','html','TemplateId','Invalid\x20\x27TemplateId\x27\x20parameter','render','forEach','startCase','ids','replace','queue','Queue','push','all','union','flatten','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x2975c7,_0x5dcc22){var _0x26a179=function(_0x150969){while(--_0x150969){_0x2975c7['push'](_0x2975c7['shift']());}};_0x26a179(++_0x5dcc22);}(_0x7fa0,0x18e));var _0x07fa=function(_0x314d1d,_0x1211b8){_0x314d1d=_0x314d1d-0x0;var _0x31e31d=_0x7fa0[_0x314d1d];return _0x31e31d;};'use strict';var emlformat=require(_0x07fa('0x0'));var rimraf=require(_0x07fa('0x1'));var zipdir=require(_0x07fa('0x2'));var jsonpatch=require(_0x07fa('0x3'));var rp=require(_0x07fa('0x4'));var moment=require(_0x07fa('0x5'));var BPromise=require(_0x07fa('0x6'));var Mustache=require(_0x07fa('0x7'));var util=require('util');var path=require(_0x07fa('0x8'));var sox=require(_0x07fa('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x07fa('0xa'));var crypto=require(_0x07fa('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x07fa('0xc'));var toCsv=require('to-csv');var querystring=require(_0x07fa('0xd'));var Papa=require(_0x07fa('0xe'));var Redis=require(_0x07fa('0xf'));var authService=require(_0x07fa('0x10'));var qs=require(_0x07fa('0x11'));var as=require(_0x07fa('0x12'));var hardwareService=require(_0x07fa('0x13'));var logger=require(_0x07fa('0x14'))(_0x07fa('0x15'));var utils=require(_0x07fa('0x16'));var config=require(_0x07fa('0x17'));var licenseUtil=require(_0x07fa('0x18'));var db=require(_0x07fa('0x19'))['db'];config[_0x07fa('0x1a')]=_[_0x07fa('0x1b')](config['redis'],{'host':_0x07fa('0x1c'),'port':0x18eb});var socket=require(_0x07fa('0x1d'))(new Redis(config[_0x07fa('0x1a')]));require(_0x07fa('0x1e'))[_0x07fa('0x1f')](socket);function respondWithStatusCode(_0x5743d3,_0x5fb0e0){_0x5fb0e0=_0x5fb0e0||0xcc;return function(_0x3d060c){if(_0x3d060c){return _0x5743d3[_0x07fa('0x20')](_0x5fb0e0);}return _0x5743d3[_0x07fa('0x21')](_0x5fb0e0)[_0x07fa('0x22')]();};}function respondWithResult(_0x262bd8,_0x3ffb0d){_0x3ffb0d=_0x3ffb0d||0xc8;return function(_0x5968cf){if(_0x5968cf){return _0x262bd8[_0x07fa('0x21')](_0x3ffb0d)[_0x07fa('0x23')](_0x5968cf);}};}function respondWithFilteredResult(_0x2d57e7,_0x575856){return function(_0x23689c){if(_0x23689c){var _0x41f7a6=typeof _0x575856[_0x07fa('0x24')]==='undefined'&&typeof _0x575856['limit']===_0x07fa('0x25');var _0x10b08f=_0x23689c[_0x07fa('0x26')];var _0x132fcb=_0x41f7a6?0x0:_0x575856[_0x07fa('0x24')];var _0x321216=_0x41f7a6?_0x23689c['count']:_0x575856[_0x07fa('0x24')]+_0x575856[_0x07fa('0x27')];var _0x30b627;if(_0x321216>=_0x10b08f){_0x321216=_0x10b08f;_0x30b627=0xc8;}else{_0x30b627=0xce;}_0x2d57e7[_0x07fa('0x21')](_0x30b627);return _0x2d57e7[_0x07fa('0x28')]('Content-Range',_0x132fcb+'-'+_0x321216+'/'+_0x10b08f)[_0x07fa('0x23')](_0x23689c);}return null;};}function patchUpdates(_0x4c7d2b){return function(_0xdc6283){try{jsonpatch['apply'](_0xdc6283,_0x4c7d2b,!![]);}catch(_0x139b7e){return BPromise[_0x07fa('0x29')](_0x139b7e);}return _0xdc6283['save']();};}function saveUpdates(_0x232df7,_0x5d486f){return function(_0x2d2249){if(_0x2d2249){return _0x2d2249[_0x07fa('0x2a')](_0x232df7)['then'](function(_0x53567a){return _0x53567a;});}return null;};}function removeEntity(_0x1b08cc,_0x6f1d0f){return function(_0x5da65c){if(_0x5da65c){return _0x5da65c[_0x07fa('0x2b')]()['then'](function(){_0x1b08cc[_0x07fa('0x21')](0xcc)[_0x07fa('0x22')]();});}};}function handleEntityNotFound(_0x334e7d,_0x815f41){return function(_0x2f17d4){if(!_0x2f17d4){_0x334e7d[_0x07fa('0x20')](0x194);}return _0x2f17d4;};}function handleError(_0x25f9a9,_0xcf6ab1){_0xcf6ab1=_0xcf6ab1||0x1f4;return function(_0x2ef3fd){logger[_0x07fa('0x2c')](_0x2ef3fd[_0x07fa('0x2d')]);if(_0x2ef3fd['name']){delete _0x2ef3fd[_0x07fa('0x2e')];}_0x25f9a9[_0x07fa('0x21')](_0xcf6ab1)[_0x07fa('0x2f')](_0x2ef3fd);};}exports[_0x07fa('0x30')]=function(_0x38a62b,_0x3c0456,_0x5a4eb5){if(!_0x38a62b[_0x07fa('0x31')][_0x07fa('0x32')](_0x07fa('0x33'))&&!_0x38a62b[_0x07fa('0x31')][_0x07fa('0x32')]('TemplateId')){throw new db[(_0x07fa('0x34'))][(_0x07fa('0x35'))](_0x07fa('0x36'));}else{if(_0x38a62b['body'][_0x07fa('0x32')]('TemplateId')&&!_0x38a62b[_0x07fa('0x31')]['hasOwnProperty']('view')){throw new db['Sequelize']['ValidationError'](_0x07fa('0x37'));}if(!_0x38a62b[_0x07fa('0x31')]['hasOwnProperty'](_0x07fa('0x38'))){throw new db[(_0x07fa('0x34'))][(_0x07fa('0x35'))](_0x07fa('0x39'));}else{try{var _0x433e39=JSON['parse'](_0x38a62b['body']['recipients']);}catch(_0xd67973){logger[_0x07fa('0x2c')](_0xd67973);throw new db[(_0x07fa('0x34'))][(_0x07fa('0x35'))](_0x07fa('0x3a'));}var _0x23cdee=[_0x07fa('0x3b'),_0x07fa('0x3c'),_0x07fa('0x3d'),_0x07fa('0x3e'),_0x07fa('0x3f'),_0x07fa('0x40'),_0x07fa('0x41'),_0x07fa('0x42'),_0x07fa('0x43')];if(_[_0x07fa('0x44')](_0x433e39,function(_0x2c3afc){return!_['includes'](_0x23cdee,_0x2c3afc['model'][_0x07fa('0x45')]());})){throw new db[(_0x07fa('0x34'))][(_0x07fa('0x35'))](_0x07fa('0x46'));}}}var _0x258c87={};_0x258c87['senderName']=_0x38a62b[_0x07fa('0x31')][_0x07fa('0x32')](_0x07fa('0x47'))?_0x38a62b[_0x07fa('0x31')]['senderName']:_0x38a62b['user']['fullname'];_0x258c87[_0x07fa('0x48')]=_[_0x07fa('0x49')](_0x38a62b['body'][_0x07fa('0x48')])?null:_0x38a62b[_0x07fa('0x31')][_0x07fa('0x48')];_0x258c87[_0x07fa('0x4a')]=_0x38a62b[_0x07fa('0x31')]['beep']||![];_0x258c87['SenderId']=_0x38a62b[_0x07fa('0x43')]['id'];return getContent(_0x38a62b[_0x07fa('0x31')])[_0x07fa('0x4b')](function(_0xc219b7){_0x258c87['body']=_0xc219b7;return getRecipients(_0x433e39);})[_0x07fa('0x4b')](function(_0x1b1ef4){_0x258c87[_0x07fa('0x4c')]=_[_0x07fa('0x4d')](_0x1b1ef4)[_0x07fa('0x4e')](',');return db['sequelize'][_0x07fa('0x4f')](function(_0x65d907){return db[_0x07fa('0x50')][_0x07fa('0x51')](_0x258c87,{'raw':!![],'transaction':_0x65d907})['then'](function(_0x4ad5d2){var _0x3a1ec6={'sender':_0x258c87['senderName'],'description':_0x258c87[_0x07fa('0x48')],'content':_0x258c87[_0x07fa('0x31')],'beep':_0x258c87[_0x07fa('0x4a')]};_0x1b1ef4['forEach'](function(_0x2a760c){_0x3a1ec6[_0x07fa('0x52')]=_0x2a760c;socket[_0x07fa('0x53')](_0x07fa('0x54'),_0x3a1ec6);});return _0x4ad5d2;});});})[_0x07fa('0x4b')](respondWithResult(_0x3c0456,0xc9))[_0x07fa('0x55')](handleError(_0x3c0456,null));};function getContent(_0x111d8c){return new BPromise(function(_0x4087e3,_0x4163d8){if(_0x111d8c[_0x07fa('0x33')]){_0x4087e3(_0x111d8c[_0x07fa('0x33')]);return;}return db[_0x07fa('0x56')]['findOne']({'attributes':[_0x07fa('0x57')],'where':{'id':_0x111d8c[_0x07fa('0x58')]},'raw':!![]})[_0x07fa('0x4b')](function(_0x2fb946){if(!_0x2fb946)throw new db[(_0x07fa('0x34'))]['ValidationError'](_0x07fa('0x59'));var _0x4e0068=Mustache[_0x07fa('0x5a')](_0x2fb946['html'],_0x111d8c['view']);_0x4087e3(_0x4e0068);})['catch'](function(_0x896f7d){_0x4163d8(_0x896f7d);});});}function getRecipients(_0x320fc7){return new BPromise(function(_0x222088,_0x189430){var _0x29629c=[];var _0x4a0155=[];_0x320fc7[_0x07fa('0x5b')](function(_0xe9a8ad){var _0x4b0aa3=_[_0x07fa('0x5c')](_0xe9a8ad['model'][_0x07fa('0x45')]());if(_0x4b0aa3==='User'){_0x29629c=_['union'](_0x29629c,_0xe9a8ad[_0x07fa('0x5d')]);}else{if(_['includes'](_0x4b0aa3,'queue'))_0x4b0aa3=_0x4b0aa3[_0x07fa('0x5e')](_0x07fa('0x5f'),_0x07fa('0x60'));_0xe9a8ad[_0x07fa('0x5d')][_0x07fa('0x5b')](function(_0x5ea746){_0x4a0155[_0x07fa('0x61')](getAgents(_0x4b0aa3,_0x5ea746));});}});return BPromise[_0x07fa('0x62')](_0x4a0155)['then'](function(_0x339d85){_0x29629c=_[_0x07fa('0x63')](_0x29629c,_[_0x07fa('0x64')](_0x339d85));_0x222088(_0x29629c);})[_0x07fa('0x55')](function(_0x2d855a){_0x189430(_0x2d855a);});});}function getAgents(_0x3849a,_0x77089f){return new BPromise(function(_0x3279b2,_0x5cc904){return db[_0x3849a]['findOne']({'where':{'id':_0x77089f}})['then'](function(_0x214f66){return _0x214f66[_0x07fa('0x65')]({'attributes':['id'],'raw':!![]})[_0x07fa('0x4b')](function(_0x14e98f){var _0xd14746=_['map'](_0x14e98f,'id');_0x3279b2(_0xd14746);});})['catch'](function(_0x1e5544){_0x5cc904(_0x1e5544);});});}
\ No newline at end of file
+var _0x96a5=['reject','save','update','then','error','stack','name','send','body','hasOwnProperty','text','TemplateId','view','Sequelize','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','voicequeue','whatsappqueue','team','user','some','includes','model','toLowerCase','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','sortBy','join','create','forEach','recipient','emit','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','catch','startCase','User','ids','replace','queue','all','union','flatten','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply'];(function(_0x4fa9b2,_0x5c7361){var _0x14a1af=function(_0xe00238){while(--_0xe00238){_0x4fa9b2['push'](_0x4fa9b2['shift']());}};_0x14a1af(++_0x5c7361);}(_0x96a5,0x160));var _0x596a=function(_0x1f2059,_0x503ca5){_0x1f2059=_0x1f2059-0x0;var _0x3df2f=_0x96a5[_0x1f2059];return _0x3df2f;};'use strict';var emlformat=require(_0x596a('0x0'));var rimraf=require(_0x596a('0x1'));var zipdir=require(_0x596a('0x2'));var jsonpatch=require(_0x596a('0x3'));var rp=require('request-promise');var moment=require(_0x596a('0x4'));var BPromise=require(_0x596a('0x5'));var Mustache=require(_0x596a('0x6'));var util=require('util');var path=require('path');var sox=require(_0x596a('0x7'));var csv=require('to-csv');var ejs=require(_0x596a('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x596a('0x9'));var squel=require(_0x596a('0xa'));var crypto=require(_0x596a('0xb'));var jsforce=require(_0x596a('0xc'));var deskjs=require(_0x596a('0xd'));var toCsv=require(_0x596a('0xe'));var querystring=require(_0x596a('0xf'));var Papa=require('papaparse');var Redis=require(_0x596a('0x10'));var authService=require(_0x596a('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x596a('0x12'));var hardwareService=require(_0x596a('0x13'));var logger=require(_0x596a('0x14'))(_0x596a('0x15'));var utils=require(_0x596a('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x596a('0x17'));var db=require(_0x596a('0x18'))['db'];config[_0x596a('0x19')]=_[_0x596a('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x596a('0x1b'))(new Redis(config['redis']));require(_0x596a('0x1c'))[_0x596a('0x1d')](socket);function respondWithStatusCode(_0x7d3cd6,_0x4a0940){_0x4a0940=_0x4a0940||0xcc;return function(_0x5664c9){if(_0x5664c9){return _0x7d3cd6[_0x596a('0x1e')](_0x4a0940);}return _0x7d3cd6[_0x596a('0x1f')](_0x4a0940)[_0x596a('0x20')]();};}function respondWithResult(_0x97936c,_0x23b919){_0x23b919=_0x23b919||0xc8;return function(_0x456f28){if(_0x456f28){return _0x97936c[_0x596a('0x1f')](_0x23b919)[_0x596a('0x21')](_0x456f28);}};}function respondWithFilteredResult(_0x10f81b,_0x588bd4){return function(_0x32f169){if(_0x32f169){var _0x2c249d=typeof _0x588bd4[_0x596a('0x22')]===_0x596a('0x23')&&typeof _0x588bd4[_0x596a('0x24')]===_0x596a('0x23');var _0x341445=_0x32f169['count'];var _0x2203f8=_0x2c249d?0x0:_0x588bd4['offset'];var _0x20dde8=_0x2c249d?_0x32f169[_0x596a('0x25')]:_0x588bd4[_0x596a('0x22')]+_0x588bd4['limit'];var _0xbd4a;if(_0x20dde8>=_0x341445){_0x20dde8=_0x341445;_0xbd4a=0xc8;}else{_0xbd4a=0xce;}_0x10f81b[_0x596a('0x1f')](_0xbd4a);return _0x10f81b['set'](_0x596a('0x26'),_0x2203f8+'-'+_0x20dde8+'/'+_0x341445)['json'](_0x32f169);}return null;};}function patchUpdates(_0x247171){return function(_0x15fdc6){try{jsonpatch[_0x596a('0x27')](_0x15fdc6,_0x247171,!![]);}catch(_0x478ca4){return BPromise[_0x596a('0x28')](_0x478ca4);}return _0x15fdc6[_0x596a('0x29')]();};}function saveUpdates(_0x73f1d7,_0x52f079){return function(_0x5d21e9){if(_0x5d21e9){return _0x5d21e9[_0x596a('0x2a')](_0x73f1d7)[_0x596a('0x2b')](function(_0x2ed77a){return _0x2ed77a;});}return null;};}function removeEntity(_0x17f0f9,_0x495e9a){return function(_0x1f577a){if(_0x1f577a){return _0x1f577a['destroy']()[_0x596a('0x2b')](function(){_0x17f0f9[_0x596a('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4170a8,_0x532078){return function(_0x38fa58){if(!_0x38fa58){_0x4170a8[_0x596a('0x1e')](0x194);}return _0x38fa58;};}function handleError(_0x5f3797,_0x3dd401){_0x3dd401=_0x3dd401||0x1f4;return function(_0x125e52){logger[_0x596a('0x2c')](_0x125e52[_0x596a('0x2d')]);if(_0x125e52['name']){delete _0x125e52[_0x596a('0x2e')];}_0x5f3797[_0x596a('0x1f')](_0x3dd401)[_0x596a('0x2f')](_0x125e52);};}exports['sendUserNotification']=function(_0x4d6aef,_0x7231e2,_0x4246e1){if(!_0x4d6aef[_0x596a('0x30')][_0x596a('0x31')](_0x596a('0x32'))&&!_0x4d6aef[_0x596a('0x30')][_0x596a('0x31')]('TemplateId')){throw new db['Sequelize']['ValidationError']('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x4d6aef['body'][_0x596a('0x31')](_0x596a('0x33'))&&!_0x4d6aef[_0x596a('0x30')][_0x596a('0x31')](_0x596a('0x34'))){throw new db[(_0x596a('0x35'))][(_0x596a('0x36'))](_0x596a('0x37'));}if(!_0x4d6aef[_0x596a('0x30')][_0x596a('0x31')](_0x596a('0x38'))){throw new db['Sequelize'][(_0x596a('0x36'))](_0x596a('0x39'));}else{try{var _0x1ec5e9=JSON[_0x596a('0x3a')](_0x4d6aef[_0x596a('0x30')][_0x596a('0x38')]);}catch(_0x4396ad){logger[_0x596a('0x2c')](_0x4396ad);throw new db[(_0x596a('0x35'))]['ValidationError'](_0x596a('0x3b'));}var _0x37a4a5=[_0x596a('0x3c'),_0x596a('0x3d'),'mailqueue',_0x596a('0x3e'),'smsqueue',_0x596a('0x3f'),_0x596a('0x40'),_0x596a('0x41'),_0x596a('0x42')];if(_[_0x596a('0x43')](_0x1ec5e9,function(_0x39afc8){return!_[_0x596a('0x44')](_0x37a4a5,_0x39afc8[_0x596a('0x45')][_0x596a('0x46')]());})){throw new db[(_0x596a('0x35'))]['ValidationError']('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x278d51={};_0x278d51[_0x596a('0x47')]=_0x4d6aef['body'][_0x596a('0x31')]('senderName')?_0x4d6aef[_0x596a('0x30')][_0x596a('0x47')]:_0x4d6aef[_0x596a('0x42')][_0x596a('0x48')];_0x278d51[_0x596a('0x49')]=_[_0x596a('0x4a')](_0x4d6aef[_0x596a('0x30')][_0x596a('0x49')])?null:_0x4d6aef[_0x596a('0x30')][_0x596a('0x49')];_0x278d51[_0x596a('0x4b')]=_0x4d6aef[_0x596a('0x30')]['beep']||![];_0x278d51[_0x596a('0x4c')]=_0x4d6aef[_0x596a('0x42')]['id'];return getContent(_0x4d6aef[_0x596a('0x30')])[_0x596a('0x2b')](function(_0x4e8b30){_0x278d51[_0x596a('0x30')]=_0x4e8b30;return getRecipients(_0x1ec5e9);})[_0x596a('0x2b')](function(_0x2bec6c){_0x278d51['recipientsId']=_[_0x596a('0x4d')](_0x2bec6c)[_0x596a('0x4e')](',');return db['sequelize']['transaction'](function(_0x121fa7){return db['UserNotification'][_0x596a('0x4f')](_0x278d51,{'raw':!![],'transaction':_0x121fa7})['then'](function(_0x295d8c){var _0x34aa39={'sender':_0x278d51['senderName'],'description':_0x278d51[_0x596a('0x49')],'content':_0x278d51[_0x596a('0x30')],'beep':_0x278d51[_0x596a('0x4b')]};_0x2bec6c[_0x596a('0x50')](function(_0x12b7b7){_0x34aa39[_0x596a('0x51')]=_0x12b7b7;socket[_0x596a('0x52')]('userNotification:send',_0x34aa39);});return _0x295d8c;});});})[_0x596a('0x2b')](respondWithResult(_0x7231e2,0xc9))['catch'](handleError(_0x7231e2,null));};function getContent(_0x3ebc8a){return new BPromise(function(_0x2b1ec7,_0x8ec07b){if(_0x3ebc8a['text']){_0x2b1ec7(_0x3ebc8a['text']);return;}return db[_0x596a('0x53')][_0x596a('0x54')]({'attributes':[_0x596a('0x55')],'where':{'id':_0x3ebc8a[_0x596a('0x33')]},'raw':!![]})[_0x596a('0x2b')](function(_0xc4f926){if(!_0xc4f926)throw new db[(_0x596a('0x35'))][(_0x596a('0x36'))](_0x596a('0x56'));var _0x4a78d6=Mustache[_0x596a('0x57')](_0xc4f926[_0x596a('0x55')],_0x3ebc8a[_0x596a('0x34')]);_0x2b1ec7(_0x4a78d6);})[_0x596a('0x58')](function(_0x5684db){_0x8ec07b(_0x5684db);});});}function getRecipients(_0x31aa19){return new BPromise(function(_0x2f61f9,_0x39109d){var _0xefbc8=[];var _0x1a9d0d=[];_0x31aa19[_0x596a('0x50')](function(_0x4ee190){var _0x3a3718=_[_0x596a('0x59')](_0x4ee190[_0x596a('0x45')][_0x596a('0x46')]());if(_0x3a3718===_0x596a('0x5a')){_0xefbc8=_['union'](_0xefbc8,_0x4ee190[_0x596a('0x5b')]);}else{if(_[_0x596a('0x44')](_0x3a3718,'queue'))_0x3a3718=_0x3a3718[_0x596a('0x5c')](_0x596a('0x5d'),'Queue');_0x4ee190[_0x596a('0x5b')][_0x596a('0x50')](function(_0xffa322){_0x1a9d0d['push'](getAgents(_0x3a3718,_0xffa322));});}});return BPromise[_0x596a('0x5e')](_0x1a9d0d)[_0x596a('0x2b')](function(_0x3c7fc8){_0xefbc8=_[_0x596a('0x5f')](_0xefbc8,_[_0x596a('0x60')](_0x3c7fc8));_0x2f61f9(_0xefbc8);})[_0x596a('0x58')](function(_0x5880af){_0x39109d(_0x5880af);});});}function getAgents(_0x4185ce,_0x53f008){return new BPromise(function(_0x2673d7,_0x4ede76){return db[_0x4185ce][_0x596a('0x54')]({'where':{'id':_0x53f008}})[_0x596a('0x2b')](function(_0x2d908b){return _0x2d908b[_0x596a('0x61')]({'attributes':['id'],'raw':!![]})[_0x596a('0x2b')](function(_0x47c349){var _0x4aedcf=_['map'](_0x47c349,'id');_0x2673d7(_0x4aedcf);});})[_0x596a('0x58')](function(_0x51ef8a){_0x4ede76(_0x51ef8a);});});}
\ No newline at end of file
index 6125fb1..370a32c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39c1=['emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','update'];(function(_0x9278c6,_0x50f57b){var _0x1eca17=function(_0x57a15b){while(--_0x57a15b){_0x9278c6['push'](_0x9278c6['shift']());}};_0x1eca17(++_0x50f57b);}(_0x39c1,0x154));var _0x139c=function(_0x2b2434,_0x5c6530){_0x2b2434=_0x2b2434-0x0;var _0x4e1dcb=_0x39c1[_0x2b2434];return _0x4e1dcb;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0x139c('0x0'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x139c('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x139c('0x2'),'afterDestroy':'remove'};function emitEvent(_0x5bc407){return function(_0x2975c5,_0x20bea2,_0x581ce8){UserNotificationEvents[_0x139c('0x3')](_0x5bc407+':'+_0x2975c5['id'],_0x2975c5);UserNotificationEvents['emit'](_0x5bc407,_0x2975c5);_0x581ce8(null);};}for(var e in events){if(events[_0x139c('0x4')](e)){var event=events[e];UserNotification[_0x139c('0x5')](e,emitEvent(event));}}module[_0x139c('0x6')]=UserNotificationEvents;
\ No newline at end of file
+var _0x76db=['hasOwnProperty','events','../../mysqldb','UserNotification','setMaxListeners','save','update','remove','emit'];(function(_0x2e0642,_0x498c4f){var _0x3eb04f=function(_0x239236){while(--_0x239236){_0x2e0642['push'](_0x2e0642['shift']());}};_0x3eb04f(++_0x498c4f);}(_0x76db,0x1e7));var _0xb76d=function(_0x12d985,_0x140349){_0x12d985=_0x12d985-0x0;var _0x17ace0=_0x76db[_0x12d985];return _0x17ace0;};'use strict';var EventEmitter=require(_0xb76d('0x0'));var UserNotification=require(_0xb76d('0x1'))['db'][_0xb76d('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xb76d('0x3')](0x0);var events={'afterCreate':_0xb76d('0x4'),'afterUpdate':_0xb76d('0x5'),'afterDestroy':_0xb76d('0x6')};function emitEvent(_0x41fd96){return function(_0x5f12a2,_0x2cd6b4,_0xfaedba){UserNotificationEvents[_0xb76d('0x7')](_0x41fd96+':'+_0x5f12a2['id'],_0x5f12a2);UserNotificationEvents[_0xb76d('0x7')](_0x41fd96,_0x5f12a2);_0xfaedba(null);};}for(var e in events){if(events[_0xb76d('0x8')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module['exports']=UserNotificationEvents;
\ No newline at end of file
index 338cc26..d3011cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x737b=['bluebird','request-promise','path','rimraf','../../config/environment','./userNotification.attributes','exports','define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment'];(function(_0x3eee59,_0x1e47a8){var _0x322fff=function(_0x5bd2b7){while(--_0x5bd2b7){_0x3eee59['push'](_0x3eee59['shift']());}};_0x322fff(++_0x1e47a8);}(_0x737b,0x16c));var _0xb737=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x737b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb737('0x0'));var util=require(_0xb737('0x1'));var logger=require('../../config/logger')(_0xb737('0x2'));var moment=require(_0xb737('0x3'));var BPromise=require(_0xb737('0x4'));var rp=require(_0xb737('0x5'));var fs=require('fs');var path=require(_0xb737('0x6'));var rimraf=require(_0xb737('0x7'));var config=require(_0xb737('0x8'));var attributes=require(_0xb737('0x9'));module[_0xb737('0xa')]=function(_0x3a718e,_0x1c1cf4){return _0x3a718e[_0xb737('0xb')](_0xb737('0xc'),attributes,{'tableName':_0xb737('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb737('0xe'),'collate':_0xb737('0xf')});};
\ No newline at end of file
+var _0x2b00=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','UserNotification','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x123f53,_0x24d769){var _0x300745=function(_0x2a485b){while(--_0x2a485b){_0x123f53['push'](_0x123f53['shift']());}};_0x300745(++_0x24d769);}(_0x2b00,0x1b0));var _0x02b0=function(_0x17f339,_0x1c4422){_0x17f339=_0x17f339-0x0;var _0x529dc2=_0x2b00[_0x17f339];return _0x529dc2;};'use strict';var _=require(_0x02b0('0x0'));var util=require(_0x02b0('0x1'));var logger=require(_0x02b0('0x2'))(_0x02b0('0x3'));var moment=require('moment');var BPromise=require(_0x02b0('0x4'));var rp=require(_0x02b0('0x5'));var fs=require('fs');var path=require(_0x02b0('0x6'));var rimraf=require(_0x02b0('0x7'));var config=require(_0x02b0('0x8'));var attributes=require('./userNotification.attributes');module[_0x02b0('0x9')]=function(_0x5a7c36,_0x4b8958){return _0x5a7c36[_0x02b0('0xa')](_0x02b0('0xb'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x02b0('0xc'),'collate':_0x02b0('0xd')});};
\ No newline at end of file
index c8423b5..44d8277 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3b6=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','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','info','catch','lodash','util','bluebird'];(function(_0x214a25,_0x15071d){var _0x405988=function(_0x5c6fc1){while(--_0x5c6fc1){_0x214a25['push'](_0x214a25['shift']());}};_0x405988(++_0x15071d);}(_0xa3b6,0x131));var _0x6a3b=function(_0x3f6919,_0x4c8e88){_0x3f6919=_0x3f6919-0x0;var _0x2dfef3=_0xa3b6[_0x3f6919];return _0x2dfef3;};'use strict';var _=require(_0x6a3b('0x0'));var util=require(_0x6a3b('0x1'));var moment=require('moment');var BPromise=require(_0x6a3b('0x2'));var rs=require(_0x6a3b('0x3'));var fs=require('fs');var Redis=require(_0x6a3b('0x4'));var db=require(_0x6a3b('0x5'))['db'];var utils=require(_0x6a3b('0x6'));var logger=require(_0x6a3b('0x7'))(_0x6a3b('0x8'));var config=require(_0x6a3b('0x9'));var jayson=require(_0x6a3b('0xa'));var client=jayson[_0x6a3b('0xb')][_0x6a3b('0xc')]({'port':0x232a});config['redis']=_['defaults'](config[_0x6a3b('0xd')],{'host':_0x6a3b('0xe'),'port':0x18eb});var socket=require(_0x6a3b('0xf'))(new Redis(config['redis']));require('./userNotification.socket')['register'](socket);function respondWithRpcPromise(_0x106415,_0x194815,_0x1fb00a){return new BPromise(function(_0x55fd25,_0xaec2f2){return client[_0x6a3b('0x10')](_0x106415,_0x1fb00a)[_0x6a3b('0x11')](function(_0x3f369c){logger['info'](_0x6a3b('0x12'),_0x194815,_0x6a3b('0x13'));logger[_0x6a3b('0x14')](_0x6a3b('0x15'),_0x194815,_0x6a3b('0x13'),JSON[_0x6a3b('0x16')](_0x3f369c));if(_0x3f369c[_0x6a3b('0x17')]){if(_0x3f369c[_0x6a3b('0x17')][_0x6a3b('0x18')]===0x1f4){logger['error'](_0x6a3b('0x12'),_0x194815,_0x3f369c[_0x6a3b('0x17')]['message']);return _0xaec2f2(_0x3f369c[_0x6a3b('0x17')][_0x6a3b('0x19')]);}logger[_0x6a3b('0x17')]('UserNotification,\x20%s,\x20%s',_0x194815,_0x3f369c[_0x6a3b('0x17')][_0x6a3b('0x19')]);return _0x55fd25(_0x3f369c[_0x6a3b('0x17')][_0x6a3b('0x19')]);}else{logger[_0x6a3b('0x1a')](_0x6a3b('0x12'),_0x194815,_0x6a3b('0x13'));_0x55fd25(_0x3f369c['result'][_0x6a3b('0x19')]);}})[_0x6a3b('0x1b')](function(_0x501560){logger[_0x6a3b('0x17')]('UserNotification,\x20%s,\x20%s',_0x194815,_0x501560);_0xaec2f2(_0x501560);});});}
\ No newline at end of file
+var _0xdfca=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./userNotification.socket','request','info','UserNotification,\x20%s,\x20%s','request\x20sent','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','result'];(function(_0x223a12,_0x270b5e){var _0x2fc2e3=function(_0x23f89b){while(--_0x23f89b){_0x223a12['push'](_0x223a12['shift']());}};_0x2fc2e3(++_0x270b5e);}(_0xdfca,0x121));var _0xadfc=function(_0x1a9b0e,_0x4b5248){_0x1a9b0e=_0x1a9b0e-0x0;var _0x1ac4c4=_0xdfca[_0x1a9b0e];return _0x1ac4c4;};'use strict';var _=require(_0xadfc('0x0'));var util=require(_0xadfc('0x1'));var moment=require(_0xadfc('0x2'));var BPromise=require(_0xadfc('0x3'));var rs=require(_0xadfc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xadfc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xadfc('0x6'))(_0xadfc('0x7'));var config=require('../../config/environment');var jayson=require(_0xadfc('0x8'));var client=jayson[_0xadfc('0x9')]['http']({'port':0x232a});config['redis']=_[_0xadfc('0xa')](config[_0xadfc('0xb')],{'host':_0xadfc('0xc'),'port':0x18eb});var socket=require(_0xadfc('0xd'))(new Redis(config[_0xadfc('0xb')]));require(_0xadfc('0xe'))['register'](socket);function respondWithRpcPromise(_0x514124,_0x3397f2,_0x190b17){return new BPromise(function(_0x1071f,_0x494fdc){return client[_0xadfc('0xf')](_0x514124,_0x190b17)['then'](function(_0x5786a9){logger[_0xadfc('0x10')](_0xadfc('0x11'),_0x3397f2,_0xadfc('0x12'));logger['debug'](_0xadfc('0x13'),_0x3397f2,_0xadfc('0x12'),JSON[_0xadfc('0x14')](_0x5786a9));if(_0x5786a9['error']){if(_0x5786a9[_0xadfc('0x15')]['code']===0x1f4){logger[_0xadfc('0x15')](_0xadfc('0x11'),_0x3397f2,_0x5786a9[_0xadfc('0x15')]['message']);return _0x494fdc(_0x5786a9['error']['message']);}logger[_0xadfc('0x15')]('UserNotification,\x20%s,\x20%s',_0x3397f2,_0x5786a9[_0xadfc('0x15')]['message']);return _0x1071f(_0x5786a9[_0xadfc('0x15')]['message']);}else{logger[_0xadfc('0x10')](_0xadfc('0x11'),_0x3397f2,_0xadfc('0x12'));_0x1071f(_0x5786a9[_0xadfc('0x16')]['message']);}})[_0xadfc('0x17')](function(_0x3a3961){logger[_0xadfc('0x15')](_0xadfc('0x11'),_0x3397f2,_0x3a3961);_0x494fdc(_0x3a3961);});});}
\ No newline at end of file
index 2dacc56..ad43089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4509=['length','./userNotification.events','save','update','register'];(function(_0x3d016c,_0x32277d){var _0x3b673c=function(_0x1287fc){while(--_0x1287fc){_0x3d016c['push'](_0x3d016c['shift']());}};_0x3b673c(++_0x32277d);}(_0x4509,0x123));var _0x9450=function(_0x48ed97,_0x363715){_0x48ed97=_0x48ed97-0x0;var _0x2326ea=_0x4509[_0x48ed97];return _0x2326ea;};'use strict';var UserNotificationEvents=require(_0x9450('0x0'));var events=[_0x9450('0x1'),'remove',_0x9450('0x2')];function createListener(_0x3ed80e,_0x505412){return function(_0x49102e){_0x505412['emit'](_0x3ed80e,_0x49102e);};}function removeListener(_0xa627fe,_0x3572da){return function(){UserNotificationEvents['removeListener'](_0xa627fe,_0x3572da);};}exports[_0x9450('0x3')]=function(_0x52d77a){for(var _0x4a6d1b=0x0,_0x36b7a8=events[_0x9450('0x4')];_0x4a6d1b<_0x36b7a8;_0x4a6d1b++){var _0x195ced=events[_0x4a6d1b];var _0x47392e=createListener('userNotification:'+_0x195ced,_0x52d77a);UserNotificationEvents['on'](_0x195ced,_0x47392e);}};
\ No newline at end of file
+var _0x3171=['./userNotification.events','remove','removeListener','register','length','userNotification:'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x3171,0x72));var _0x1317=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0x3171[_0x34843e];return _0x598f7f;};'use strict';var UserNotificationEvents=require(_0x1317('0x0'));var events=['save',_0x1317('0x1'),'update'];function createListener(_0x6948f8,_0xb932d7){return function(_0x50ce4d){_0xb932d7['emit'](_0x6948f8,_0x50ce4d);};}function removeListener(_0x411130,_0x4da66f){return function(){UserNotificationEvents[_0x1317('0x2')](_0x411130,_0x4da66f);};}exports[_0x1317('0x3')]=function(_0x39bdb3){for(var _0x1e62e1=0x0,_0x58f611=events[_0x1317('0x4')];_0x1e62e1<_0x58f611;_0x1e62e1++){var _0x5768d8=events[_0x1e62e1];var _0x2efe11=createListener(_0x1317('0x5')+_0x5768d8,_0x39bdb3);UserNotificationEvents['on'](_0x5768d8,_0x2efe11);}};
\ No newline at end of file
index a71d435..db11c40 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(_0x13c779,_0x5a82a8){var _0xcaa0e0=function(_0x37fef3){while(--_0x37fef3){_0x13c779['push'](_0x13c779['shift']());}};_0xcaa0e0(++_0x5a82a8);}(_0x9c44,0x178));var _0x49c4=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x9c44[_0x2d7f0e];return _0x110b07;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x3937b6,_0xd53d2b){var _0x1ba356=function(_0x4816cc){while(--_0x4816cc){_0x3937b6['push'](_0x3937b6['shift']());}};_0x1ba356(++_0xd53d2b);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 30daaea..5b4d28b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc023=['INTEGER'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0xc023,0x162));var _0x3c02=function(_0x15184c,_0x35a6e){_0x15184c=_0x15184c-0x0;var _0x35ca27=_0xc023[_0x15184c];return _0x35ca27;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x3c02('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7bbc=['sequelize','exports','INTEGER'];(function(_0x36f284,_0x24cbd1){var _0x4ea099=function(_0xea729e){while(--_0xea729e){_0x36f284['push'](_0x36f284['shift']());}};_0x4ea099(++_0x24cbd1);}(_0x7bbc,0x19e));var _0xc7bb=function(_0x5b080b,_0xe34631){_0x5b080b=_0x5b080b-0x0;var _0x3d724c=_0x7bbc[_0x5b080b];return _0x3d724c;};'use strict';var Sequelize=require(_0xc7bb('0x0'));module[_0xc7bb('0x1')]={'penalty':{'type':Sequelize[_0xc7bb('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index b941f97..0b85ece 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd90=['user_has_openchannel_queues','util','../../config/logger','api','path','./userOpenchannelQueue.attributes','exports','UserOpenchannelQueue'];(function(_0x19869e,_0x231ccb){var _0x298a42=function(_0x21d037){while(--_0x21d037){_0x19869e['push'](_0x19869e['shift']());}};_0x298a42(++_0x231ccb);}(_0xdd90,0x129));var _0x0dd9=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xdd90[_0x4a9fb1];return _0x348672;};'use strict';var _=require('lodash');var util=require(_0x0dd9('0x0'));var logger=require(_0x0dd9('0x1'))(_0x0dd9('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0dd9('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0dd9('0x4'));module[_0x0dd9('0x5')]=function(_0xf87d5f,_0x4c805f){return _0xf87d5f['define'](_0x0dd9('0x6'),attributes,{'tableName':_0x0dd9('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x609c=['request-promise','rimraf','./userOpenchannelQueue.attributes','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','bluebird'];(function(_0x190ceb,_0x2345b2){var _0x5ce806=function(_0x432853){while(--_0x432853){_0x190ceb['push'](_0x190ceb['shift']());}};_0x5ce806(++_0x2345b2);}(_0x609c,0xd7));var _0xc609=function(_0x53f922,_0xdf3d82){_0x53f922=_0x53f922-0x0;var _0x10e076=_0x609c[_0x53f922];return _0x10e076;};'use strict';var _=require(_0xc609('0x0'));var util=require(_0xc609('0x1'));var logger=require(_0xc609('0x2'))(_0xc609('0x3'));var moment=require('moment');var BPromise=require(_0xc609('0x4'));var rp=require(_0xc609('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc609('0x6'));var config=require('../../config/environment');var attributes=require(_0xc609('0x7'));module['exports']=function(_0xf9498a,_0x35a720){return _0xf9498a[_0xc609('0x8')](_0xc609('0x9'),attributes,{'tableName':_0xc609('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 89a9d23..d074ae5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc7c=['../../config/utils','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0xcc7c,0x1d9));var _0xccc7=function(_0x254570,_0x560ae3){_0x254570=_0x254570-0x0;var _0x3c696b=_0xcc7c[_0x254570];return _0x3c696b;};'use strict';var _=require(_0xccc7('0x0'));var util=require(_0xccc7('0x1'));var moment=require(_0xccc7('0x2'));var BPromise=require(_0xccc7('0x3'));var rs=require(_0xccc7('0x4'));var fs=require('fs');var Redis=require(_0xccc7('0x5'));var db=require(_0xccc7('0x6'))['db'];var utils=require(_0xccc7('0x7'));var logger=require('../../config/logger')(_0xccc7('0x8'));var config=require('../../config/environment');var jayson=require(_0xccc7('0x9'));var client=jayson[_0xccc7('0xa')][_0xccc7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4e69a5,_0x54118f,_0x55e1f7){return new BPromise(function(_0xec425e,_0x3f29b6){return client[_0xccc7('0xc')](_0x4e69a5,_0x55e1f7)[_0xccc7('0xd')](function(_0x1a1c53){logger[_0xccc7('0xe')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x54118f,_0xccc7('0xf'));logger[_0xccc7('0x10')](_0xccc7('0x11'),_0x54118f,_0xccc7('0xf'),JSON['stringify'](_0x1a1c53));if(_0x1a1c53[_0xccc7('0x12')]){if(_0x1a1c53[_0xccc7('0x12')][_0xccc7('0x13')]===0x1f4){logger['error'](_0xccc7('0x14'),_0x54118f,_0x1a1c53['error'][_0xccc7('0x15')]);return _0x3f29b6(_0x1a1c53[_0xccc7('0x12')][_0xccc7('0x15')]);}logger[_0xccc7('0x12')](_0xccc7('0x14'),_0x54118f,_0x1a1c53[_0xccc7('0x12')][_0xccc7('0x15')]);return _0xec425e(_0x1a1c53['error']['message']);}else{logger['info'](_0xccc7('0x14'),_0x54118f,_0xccc7('0xf'));_0xec425e(_0x1a1c53[_0xccc7('0x16')][_0xccc7('0x15')]);}})[_0xccc7('0x17')](function(_0x5a35f6){logger[_0xccc7('0x12')](_0xccc7('0x14'),_0x54118f,_0x5a35f6);_0x3f29b6(_0x5a35f6);});});}
\ No newline at end of file
+var _0xb64a=['request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','info','UserOpenchannelQueue,\x20%s,\x20%s'];(function(_0x1438f8,_0x39dee7){var _0x397744=function(_0x2a3d64){while(--_0x2a3d64){_0x1438f8['push'](_0x1438f8['shift']());}};_0x397744(++_0x39dee7);}(_0xb64a,0x8d));var _0xab64=function(_0xbac73b,_0x46260d){_0xbac73b=_0xbac73b-0x0;var _0x380fbc=_0xb64a[_0xbac73b];return _0x380fbc;};'use strict';var _=require(_0xab64('0x0'));var util=require(_0xab64('0x1'));var moment=require('moment');var BPromise=require(_0xab64('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xab64('0x3'));var db=require(_0xab64('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xab64('0x5'))(_0xab64('0x6'));var config=require(_0xab64('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xab64('0x8')][_0xab64('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x9de8f0,_0x3e37f1,_0x40e943){return new BPromise(function(_0x364a48,_0x269581){return client[_0xab64('0xa')](_0x9de8f0,_0x40e943)['then'](function(_0x39f0a9){logger[_0xab64('0xb')](_0xab64('0xc'),_0x3e37f1,_0xab64('0xd'));logger[_0xab64('0xe')](_0xab64('0xf'),_0x3e37f1,_0xab64('0xd'),JSON[_0xab64('0x10')](_0x39f0a9));if(_0x39f0a9[_0xab64('0x11')]){if(_0x39f0a9[_0xab64('0x11')][_0xab64('0x12')]===0x1f4){logger[_0xab64('0x11')](_0xab64('0xc'),_0x3e37f1,_0x39f0a9[_0xab64('0x11')][_0xab64('0x13')]);return _0x269581(_0x39f0a9[_0xab64('0x11')][_0xab64('0x13')]);}logger['error'](_0xab64('0xc'),_0x3e37f1,_0x39f0a9[_0xab64('0x11')][_0xab64('0x13')]);return _0x364a48(_0x39f0a9['error'][_0xab64('0x13')]);}else{logger[_0xab64('0xb')](_0xab64('0xc'),_0x3e37f1,_0xab64('0xd'));_0x364a48(_0x39f0a9[_0xab64('0x14')][_0xab64('0x13')]);}})[_0xab64('0x15')](function(_0x549ba8){logger[_0xab64('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x3e37f1,_0x549ba8);_0x269581(_0x549ba8);});});}
\ No newline at end of file
index 46b2720..691ab57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ee5=['getSections','/:id/resources','getResources','post','clone','addSections','addResources','put','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/sections'];(function(_0x2e0443,_0x7e5974){var _0x52d450=function(_0x3a9985){while(--_0x3a9985){_0x2e0443['push'](_0x2e0443['shift']());}};_0x52d450(++_0x7e5974);}(_0x7ee5,0x169));var _0x57ee=function(_0x64e3c1,_0x14da00){_0x64e3c1=_0x64e3c1-0x0;var _0x44adc8=_0x7ee5[_0x64e3c1];return _0x44adc8;};'use strict';var multer=require(_0x57ee('0x0'));var util=require(_0x57ee('0x1'));var path=require('path');var timeout=require(_0x57ee('0x2'));var express=require('express');var router=express[_0x57ee('0x3')]();var fs_extra=require(_0x57ee('0x4'));var auth=require(_0x57ee('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x57ee('0x6'));var controller=require('./userProfile.controller');router[_0x57ee('0x7')]('/',auth[_0x57ee('0x8')](),controller['index']);router['get'](_0x57ee('0x9'),auth[_0x57ee('0x8')](),controller[_0x57ee('0xa')]);router[_0x57ee('0x7')](_0x57ee('0xb'),auth[_0x57ee('0x8')](),controller[_0x57ee('0xc')]);router[_0x57ee('0x7')](_0x57ee('0xd'),auth[_0x57ee('0x8')](),controller[_0x57ee('0xe')]);router[_0x57ee('0x7')](_0x57ee('0xf'),auth['isAuthenticated'](),controller[_0x57ee('0x10')]);router[_0x57ee('0x11')]('/',auth[_0x57ee('0x8')](),controller['create']);router['post']('/:id/clone',auth[_0x57ee('0x8')](),controller[_0x57ee('0x12')]);router['post'](_0x57ee('0xd'),auth['isAuthenticated'](),controller[_0x57ee('0x13')]);router[_0x57ee('0x11')](_0x57ee('0xf'),auth[_0x57ee('0x8')](),controller[_0x57ee('0x14')]);router[_0x57ee('0x15')](_0x57ee('0xb'),auth[_0x57ee('0x8')](),controller['update']);router[_0x57ee('0x16')]('/:id',auth[_0x57ee('0x8')](),controller[_0x57ee('0x17')]);router['delete'](_0x57ee('0xd'),auth[_0x57ee('0x8')](),controller['removeSections']);router[_0x57ee('0x16')](_0x57ee('0xf'),auth[_0x57ee('0x8')](),controller['removeResources']);module[_0x57ee('0x18')]=router;
\ No newline at end of file
+var _0x7c92=['./userProfile.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/sections','/:id/resources','getResources','post','create','/:id/clone','addSections','put','update','delete','destroy','removeResources','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1b2255,_0x3de34f){var _0x33e57d=function(_0x2f9cce){while(--_0x2f9cce){_0x1b2255['push'](_0x1b2255['shift']());}};_0x33e57d(++_0x3de34f);}(_0x7c92,0x110));var _0x27c9=function(_0xf81f07,_0x1bf7b7){_0xf81f07=_0xf81f07-0x0;var _0x5810cc=_0x7c92[_0xf81f07];return _0x5810cc;};'use strict';var multer=require('multer');var util=require(_0x27c9('0x0'));var path=require(_0x27c9('0x1'));var timeout=require(_0x27c9('0x2'));var express=require(_0x27c9('0x3'));var router=express[_0x27c9('0x4')]();var fs_extra=require(_0x27c9('0x5'));var auth=require(_0x27c9('0x6'));var interaction=require(_0x27c9('0x7'));var config=require('../../config/environment');var controller=require(_0x27c9('0x8'));router[_0x27c9('0x9')]('/',auth['isAuthenticated'](),controller[_0x27c9('0xa')]);router['get'](_0x27c9('0xb'),auth[_0x27c9('0xc')](),controller[_0x27c9('0xd')]);router[_0x27c9('0x9')](_0x27c9('0xe'),auth[_0x27c9('0xc')](),controller[_0x27c9('0xf')]);router[_0x27c9('0x9')](_0x27c9('0x10'),auth[_0x27c9('0xc')](),controller['getSections']);router[_0x27c9('0x9')](_0x27c9('0x11'),auth[_0x27c9('0xc')](),controller[_0x27c9('0x12')]);router[_0x27c9('0x13')]('/',auth[_0x27c9('0xc')](),controller[_0x27c9('0x14')]);router[_0x27c9('0x13')](_0x27c9('0x15'),auth[_0x27c9('0xc')](),controller['clone']);router[_0x27c9('0x13')](_0x27c9('0x10'),auth[_0x27c9('0xc')](),controller[_0x27c9('0x16')]);router['post'](_0x27c9('0x11'),auth[_0x27c9('0xc')](),controller['addResources']);router[_0x27c9('0x17')](_0x27c9('0xe'),auth[_0x27c9('0xc')](),controller[_0x27c9('0x18')]);router[_0x27c9('0x19')](_0x27c9('0xe'),auth[_0x27c9('0xc')](),controller[_0x27c9('0x1a')]);router[_0x27c9('0x19')](_0x27c9('0x10'),auth['isAuthenticated'](),controller['removeSections']);router['delete']('/:id/resources',auth['isAuthenticated'](),controller[_0x27c9('0x1b')]);module['exports']=router;
\ No newline at end of file
index 7a4772c..cd511a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5cb=['sequelize','exports','STRING','name','setDataValue','crudPermissions','join','getDataValue','split','BOOLEAN'];(function(_0x4667b2,_0x135b67){var _0x1070f2=function(_0xa72ca5){while(--_0xa72ca5){_0x4667b2['push'](_0x4667b2['shift']());}};_0x1070f2(++_0x135b67);}(_0xc5cb,0x104));var _0xbc5c=function(_0x147771,_0x139c34){_0x147771=_0x147771-0x0;var _0x329716=_0xc5cb[_0x147771];return _0x329716;};'use strict';var Sequelize=require(_0xbc5c('0x0'));module[_0xbc5c('0x1')]={'name':{'type':Sequelize[_0xbc5c('0x2')],'allowNull':![],'unique':_0xbc5c('0x3')},'crudPermissions':{'type':Sequelize[_0xbc5c('0x2')],'set':function(_0x4bb498){this[_0xbc5c('0x4')](_0xbc5c('0x5'),_0x4bb498?_0x4bb498[_0xbc5c('0x6')](''):[]);},'get':function(){return this[_0xbc5c('0x7')]('crudPermissions')?this[_0xbc5c('0x7')](_0xbc5c('0x5'))[_0xbc5c('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xbc5c('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xbc5c('0x9')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xbc5c('0x9')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xbc5c('0x9')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xbc5c('0x9')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xbc5c('0x9')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xbc5c('0x9')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xbc5c('0x9')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x2d2c=['exports','STRING','name','crudPermissions','getDataValue','split','BOOLEAN','sequelize'];(function(_0x5a9c0c,_0x4ec485){var _0x53c77d=function(_0x1cf384){while(--_0x1cf384){_0x5a9c0c['push'](_0x5a9c0c['shift']());}};_0x53c77d(++_0x4ec485);}(_0x2d2c,0xa7));var _0xc2d2=function(_0x3d8d0a,_0x11bb87){_0x3d8d0a=_0x3d8d0a-0x0;var _0x5b9df5=_0x2d2c[_0x3d8d0a];return _0x5b9df5;};'use strict';var Sequelize=require(_0xc2d2('0x0'));module[_0xc2d2('0x1')]={'name':{'type':Sequelize[_0xc2d2('0x2')],'allowNull':![],'unique':_0xc2d2('0x3')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x2dd67b){this['setDataValue'](_0xc2d2('0x4'),_0x2dd67b?_0x2dd67b['join'](''):[]);},'get':function(){return this[_0xc2d2('0x5')](_0xc2d2('0x4'))?this[_0xc2d2('0x5')](_0xc2d2('0x4'))[_0xc2d2('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xc2d2('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index e8ca776..e7e3984 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34ce=['limit','count','offset','set','Content-Range','update','destroy','then','error','stack','name','index','map','UserProfile','rawAttributes','type','keys','query','filters','attributes','intersection','model','fields','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','length','catch','create','body','get','createdAt','updatedAt','crudPermissions','omit','sequelize','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','sectionId','Resources','find','describe','addSections','userProfileId','push','removeSections','ids','enabled','includes','isEmpty','subsections','concat','forEach','resourceId','addResources','bulkCreate','removeResources','getResources','section','hasOwnProperty','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','register','sendStatus','status','end','json','undefined'];(function(_0x381b03,_0x3604d3){var _0x19d10d=function(_0x561f9a){while(--_0x561f9a){_0x381b03['push'](_0x381b03['shift']());}};_0x19d10d(++_0x3604d3);}(_0x34ce,0x11a));var _0xe34c=function(_0x468b0f,_0x408566){_0x468b0f=_0x468b0f-0x0;var _0x3e74d9=_0x34ce[_0x468b0f];return _0x3e74d9;};'use strict';var emlformat=require(_0xe34c('0x0'));var rimraf=require(_0xe34c('0x1'));var zipdir=require(_0xe34c('0x2'));var jsonpatch=require(_0xe34c('0x3'));var rp=require(_0xe34c('0x4'));var moment=require(_0xe34c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe34c('0x6'));var util=require(_0xe34c('0x7'));var path=require('path');var sox=require(_0xe34c('0x8'));var csv=require(_0xe34c('0x9'));var ejs=require(_0xe34c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe34c('0xb'));var squel=require('squel');var crypto=require(_0xe34c('0xc'));var jsforce=require(_0xe34c('0xd'));var deskjs=require(_0xe34c('0xe'));var toCsv=require(_0xe34c('0x9'));var querystring=require(_0xe34c('0xf'));var Papa=require(_0xe34c('0x10'));var Redis=require(_0xe34c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xe34c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xe34c('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xe34c('0x14'));var db=require(_0xe34c('0x15'))['db'];config[_0xe34c('0x16')]=_[_0xe34c('0x17')](config[_0xe34c('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe34c('0x16')]));require('./userProfile.socket')[_0xe34c('0x18')](socket);function respondWithStatusCode(_0x1633f0,_0x155554){_0x155554=_0x155554||0xcc;return function(_0xcad557){if(_0xcad557){return _0x1633f0[_0xe34c('0x19')](_0x155554);}return _0x1633f0[_0xe34c('0x1a')](_0x155554)[_0xe34c('0x1b')]();};}function respondWithResult(_0x2ea244,_0x73682d){_0x73682d=_0x73682d||0xc8;return function(_0x540f6a){if(_0x540f6a){return _0x2ea244['status'](_0x73682d)[_0xe34c('0x1c')](_0x540f6a);}};}function respondWithFilteredResult(_0x168636,_0x335c3d){return function(_0x1c53f4){if(_0x1c53f4){var _0x142396=typeof _0x335c3d['offset']===_0xe34c('0x1d')&&typeof _0x335c3d[_0xe34c('0x1e')]==='undefined';var _0x33127a=_0x1c53f4[_0xe34c('0x1f')];var _0x78667a=_0x142396?0x0:_0x335c3d[_0xe34c('0x20')];var _0xe2b40f=_0x142396?_0x1c53f4[_0xe34c('0x1f')]:_0x335c3d['offset']+_0x335c3d[_0xe34c('0x1e')];var _0x5a2e5e;if(_0xe2b40f>=_0x33127a){_0xe2b40f=_0x33127a;_0x5a2e5e=0xc8;}else{_0x5a2e5e=0xce;}_0x168636['status'](_0x5a2e5e);return _0x168636[_0xe34c('0x21')](_0xe34c('0x22'),_0x78667a+'-'+_0xe2b40f+'/'+_0x33127a)[_0xe34c('0x1c')](_0x1c53f4);}return null;};}function patchUpdates(_0x4975bc){return function(_0x4b4280){try{jsonpatch['apply'](_0x4b4280,_0x4975bc,!![]);}catch(_0x5e0a02){return BPromise['reject'](_0x5e0a02);}return _0x4b4280['save']();};}function saveUpdates(_0x43bd14,_0x6672bd){return function(_0x5180c2){if(_0x5180c2){return _0x5180c2[_0xe34c('0x23')](_0x43bd14)['then'](function(_0x5d8985){return _0x5d8985;});}return null;};}function removeEntity(_0x51ba68,_0x43ed65){return function(_0x40af6e){if(_0x40af6e){return _0x40af6e[_0xe34c('0x24')]()[_0xe34c('0x25')](function(){_0x51ba68[_0xe34c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x40eb3d,_0x14c66d){return function(_0x14caa7){if(!_0x14caa7){_0x40eb3d[_0xe34c('0x19')](0x194);}return _0x14caa7;};}function handleError(_0x113a19,_0x503c95){_0x503c95=_0x503c95||0x1f4;return function(_0x96faf8){logger[_0xe34c('0x26')](_0x96faf8[_0xe34c('0x27')]);if(_0x96faf8[_0xe34c('0x28')]){delete _0x96faf8[_0xe34c('0x28')];}_0x113a19[_0xe34c('0x1a')](_0x503c95)['send'](_0x96faf8);};}exports[_0xe34c('0x29')]=function(_0x36ffb5,_0x53fb67){var _0x3055d6={},_0x5dcabe={},_0x36b294={'count':0x0,'rows':[]};var _0x139fd7=_[_0xe34c('0x2a')](db[_0xe34c('0x2b')][_0xe34c('0x2c')],function(_0x5d1acc){return{'name':_0x5d1acc['fieldName'],'type':_0x5d1acc[_0xe34c('0x2d')]['key']};});_0x5dcabe['model']=_[_0xe34c('0x2a')](_0x139fd7,_0xe34c('0x28'));_0x5dcabe['query']=_[_0xe34c('0x2e')](_0x36ffb5[_0xe34c('0x2f')]);_0x5dcabe[_0xe34c('0x30')]=_['intersection'](_0x5dcabe['model'],_0x5dcabe[_0xe34c('0x2f')]);_0x3055d6[_0xe34c('0x31')]=_[_0xe34c('0x32')](_0x5dcabe[_0xe34c('0x33')],qs['fields'](_0x36ffb5[_0xe34c('0x2f')][_0xe34c('0x34')]));_0x3055d6[_0xe34c('0x31')]=_0x3055d6[_0xe34c('0x31')]['length']?_0x3055d6[_0xe34c('0x31')]:_0x5dcabe[_0xe34c('0x33')];if(!_0x36ffb5[_0xe34c('0x2f')]['hasOwnProperty']('nolimit')){_0x3055d6[_0xe34c('0x1e')]=qs['limit'](_0x36ffb5[_0xe34c('0x2f')][_0xe34c('0x1e')]);_0x3055d6[_0xe34c('0x20')]=qs['offset'](_0x36ffb5[_0xe34c('0x2f')][_0xe34c('0x20')]);}_0x3055d6['order']=qs[_0xe34c('0x35')](_0x36ffb5[_0xe34c('0x2f')][_0xe34c('0x35')]);_0x3055d6[_0xe34c('0x36')]=qs[_0xe34c('0x30')](_[_0xe34c('0x37')](_0x36ffb5[_0xe34c('0x2f')],_0x5dcabe['filters']),_0x139fd7);if(_0x36ffb5[_0xe34c('0x2f')][_0xe34c('0x38')]){_0x3055d6['where']=_[_0xe34c('0x39')](_0x3055d6[_0xe34c('0x36')],{'$or':_[_0xe34c('0x2a')](_0x139fd7,function(_0x1284c3){if(_0x1284c3[_0xe34c('0x2d')]!==_0xe34c('0x3a')){var _0x474fa1={};_0x474fa1[_0x1284c3[_0xe34c('0x28')]]={'$like':'%'+_0x36ffb5[_0xe34c('0x2f')]['filter']+'%'};return _0x474fa1;}})});}_0x3055d6=_[_0xe34c('0x39')]({},_0x3055d6,_0x36ffb5[_0xe34c('0x3b')]);var _0x312792={'where':_0x3055d6['where']};return db[_0xe34c('0x2b')][_0xe34c('0x1f')](_0x312792)[_0xe34c('0x25')](function(_0x3e3b6f){_0x36b294[_0xe34c('0x1f')]=_0x3e3b6f;if(_0x36ffb5[_0xe34c('0x2f')][_0xe34c('0x3c')]){_0x3055d6[_0xe34c('0x3d')]=[{'all':!![]}];}return db[_0xe34c('0x2b')][_0xe34c('0x3e')](_0x3055d6);})[_0xe34c('0x25')](function(_0x2d6429){_0x36b294['rows']=_0x2d6429;return _0x36b294;})[_0xe34c('0x25')](respondWithFilteredResult(_0x53fb67,_0x3055d6))['catch'](handleError(_0x53fb67,null));};exports[_0xe34c('0x3f')]=function(_0x4c6a78,_0x297425){var _0x3c8021={'raw':![],'where':{'id':_0x4c6a78[_0xe34c('0x40')]['id']}},_0x3373fa={};_0x3373fa[_0xe34c('0x33')]=_[_0xe34c('0x2e')](db[_0xe34c('0x2b')][_0xe34c('0x2c')]);_0x3373fa[_0xe34c('0x2f')]=_[_0xe34c('0x2e')](_0x4c6a78['query']);_0x3373fa[_0xe34c('0x30')]=_[_0xe34c('0x32')](_0x3373fa[_0xe34c('0x33')],_0x3373fa['query']);_0x3c8021[_0xe34c('0x31')]=_[_0xe34c('0x32')](_0x3373fa['model'],qs[_0xe34c('0x34')](_0x4c6a78['query'][_0xe34c('0x34')]));_0x3c8021[_0xe34c('0x31')]=_0x3c8021[_0xe34c('0x31')][_0xe34c('0x41')]?_0x3c8021['attributes']:_0x3373fa[_0xe34c('0x33')];if(_0x4c6a78[_0xe34c('0x2f')][_0xe34c('0x3c')]){_0x3c8021['include']=[{'all':!![]}];}_0x3c8021=_['merge']({},_0x3c8021,_0x4c6a78['options']);return db['UserProfile']['find'](_0x3c8021)['then'](handleEntityNotFound(_0x297425,null))[_0xe34c('0x25')](respondWithResult(_0x297425,null))[_0xe34c('0x42')](handleError(_0x297425,null));};exports[_0xe34c('0x43')]=function(_0x586118,_0x467f66){return db['UserProfile'][_0xe34c('0x43')](_0x586118[_0xe34c('0x44')],{})[_0xe34c('0x25')](respondWithResult(_0x467f66,0xc9))['catch'](handleError(_0x467f66,null));};exports['clone']=function(_0xd81674,_0x24bc57){var _0x1cc441={'where':{'id':_0xd81674[_0xe34c('0x40')]['id']}},_0x409e01={};_0x409e01[_0xe34c('0x33')]=_[_0xe34c('0x2e')](db[_0xe34c('0x2b')][_0xe34c('0x2c')]);_0x1cc441[_0xe34c('0x31')]=_[_0xe34c('0x32')](_0x409e01[_0xe34c('0x33')],qs[_0xe34c('0x34')](_0xd81674[_0xe34c('0x2f')]['fields']));_0x1cc441[_0xe34c('0x31')]=_0x1cc441[_0xe34c('0x31')][_0xe34c('0x41')]?_0x1cc441[_0xe34c('0x31')]:_0x409e01[_0xe34c('0x33')];if(_0xd81674[_0xe34c('0x2f')][_0xe34c('0x3c')]){_0x1cc441['include']=[{'all':!![]}];}_0x1cc441=_[_0xe34c('0x39')]({},_0x1cc441,_0xd81674[_0xe34c('0x3b')]);return db[_0xe34c('0x2b')]['find'](_0x1cc441)[_0xe34c('0x25')](handleEntityNotFound(_0x24bc57,null))[_0xe34c('0x25')](function(_0x107d12){if(_0x107d12){var _0x3bf984=_0x107d12[_0xe34c('0x45')]({'plain':!![]});_0x3bf984=qs['omit'](_0x3bf984,['id',_0xe34c('0x46'),_0xe34c('0x47'),_0xe34c('0x48')]);_0xd81674['body']=_[_0xe34c('0x49')](_0xd81674[_0xe34c('0x44')],['id',_0xe34c('0x46'),_0xe34c('0x47')]);return db[_0xe34c('0x4a')][_0xe34c('0x4b')](function(_0x5a4abb){return db['UserProfile']['create'](_[_0xe34c('0x39')](_0x3bf984,_0xd81674[_0xe34c('0x44')]),{'include':_0xd81674[_0xe34c('0x2f')][_0xe34c('0x3c')]?[{'all':!![]}]:undefined,'transaction':_0x5a4abb})[_0xe34c('0x25')](function(_0x4cedf9){var _0x105e6e=_0x4cedf9[_0xe34c('0x45')]({'plain':!![]});return db[_0xe34c('0x4c')][_0xe34c('0x3e')]({'where':{'userProfileId':_0xd81674[_0xe34c('0x40')]['id']},'raw':!![]})['then'](function(_0x16db7e){if(_0x16db7e){return BPromise[_0xe34c('0x4d')](_0x16db7e,function(_0x1740ed){return new BPromise(function(_0x1d6270,_0x141d4){if(_0x1740ed['autoAssociation']===null||_0x1740ed[_0xe34c('0x4e')]===0x1)_0x1d6270(null);return db[_0xe34c('0x4f')]['findAll']({'where':{'sectionId':_0x1740ed['id']},'raw':!![]})[_0xe34c('0x25')](function(_0x1a5b62){var _0x590f91=_[_0xe34c('0x2a')](_0x1a5b62,function(_0xb59559){return qs['omit'](_0xb59559,['id',_0xe34c('0x46'),_0xe34c('0x47'),_0xe34c('0x50')]);});_0x1d6270(_0x590f91);})[_0xe34c('0x42')](function(_0x5223af){_0x141d4(_0x5223af);});})[_0xe34c('0x25')](function(_0x2880d8){var _0x327876=qs[_0xe34c('0x49')](_0x1740ed,['id',_0xe34c('0x46'),_0xe34c('0x47')]);_0x327876['userProfileId']=_0x105e6e['id'];if(_0x2880d8)_0x327876[_0xe34c('0x51')]=_0x2880d8;return _0x327876;})[_0xe34c('0x25')](function(_0x1f0055){return db[_0xe34c('0x4c')]['create'](_0x1f0055,{'include':[{'model':db[_0xe34c('0x4f')],'as':_0xe34c('0x51')}],'raw':!![],'transaction':_0x5a4abb});});})[_0xe34c('0x25')](function(){return _0x105e6e;});}});});});}})[_0xe34c('0x25')](respondWithResult(_0x24bc57,0xc9))[_0xe34c('0x42')](handleError(_0x24bc57,null));};exports[_0xe34c('0x23')]=function(_0x2cdc7c,_0x2f9060){if(_0x2cdc7c[_0xe34c('0x44')]['id']){delete _0x2cdc7c[_0xe34c('0x44')]['id'];}return db[_0xe34c('0x2b')][_0xe34c('0x52')]({'where':{'id':_0x2cdc7c['params']['id']}})[_0xe34c('0x25')](handleEntityNotFound(_0x2f9060,null))[_0xe34c('0x25')](saveUpdates(_0x2cdc7c[_0xe34c('0x44')],null))[_0xe34c('0x25')](respondWithResult(_0x2f9060,null))[_0xe34c('0x42')](handleError(_0x2f9060,null));};exports[_0xe34c('0x24')]=function(_0x109fbc,_0x163837){return db['UserProfile'][_0xe34c('0x52')]({'where':{'id':_0x109fbc[_0xe34c('0x40')]['id']}})['then'](handleEntityNotFound(_0x163837,null))[_0xe34c('0x25')](removeEntity(_0x163837,null))[_0xe34c('0x42')](handleError(_0x163837,null));};exports['describe']=function(_0x616b01,_0x41f541){return db[_0xe34c('0x2b')][_0xe34c('0x53')]()[_0xe34c('0x25')](respondWithResult(_0x41f541,null))['catch'](handleError(_0x41f541,null));};exports[_0xe34c('0x54')]=function(_0x78e4a8,_0x5d6ea3){var _0x3095b7=_0x78e4a8['body'];return db[_0xe34c('0x2b')][_0xe34c('0x52')]({'where':{'id':_0x78e4a8[_0xe34c('0x40')]['id']}})['then'](handleEntityNotFound(_0x5d6ea3,null))['then'](function(_0x5cd5bf){if(_0x5cd5bf){return db['sequelize'][_0xe34c('0x4b')](function(_0xb1e29f){return db[_0xe34c('0x4c')][_0xe34c('0x24')]({'where':{'userProfileId':_0x78e4a8[_0xe34c('0x40')]['id'],'sectionId':_[_0xe34c('0x2a')](_0x3095b7,function(_0x472c00){return _0x472c00[_0xe34c('0x50')];})},'transaction':_0xb1e29f})[_0xe34c('0x25')](function(){var _0x189f53=_[_0xe34c('0x2a')](_0x3095b7,function(_0x5d4671){_0x5d4671[_0xe34c('0x55')]=_0x78e4a8['params']['id'];return _0x5d4671;});var _0x593d5c=[];return BPromise[_0xe34c('0x4d')](_0x189f53,function(_0x45fdf1){return db[_0xe34c('0x4c')][_0xe34c('0x43')](_0x45fdf1,{'include':[{'model':db['UserProfileResource'],'as':_0xe34c('0x51')}],'raw':!![],'transaction':_0xb1e29f})[_0xe34c('0x25')](function(_0x34dc4f){_0x593d5c[_0xe34c('0x56')](_0x34dc4f[_0xe34c('0x45')]({'plain':!![]}));});})[_0xe34c('0x25')](function(){return _0x593d5c;});});});}})['then'](function(_0x5f5185){return _0x5f5185;})[_0xe34c('0x25')](respondWithResult(_0x5d6ea3,null))['catch'](handleError(_0x5d6ea3,null));};exports[_0xe34c('0x57')]=function(_0x133036,_0x472f27){var _0x4989ee;return db[_0xe34c('0x2b')]['find']({'where':{'id':_0x133036[_0xe34c('0x40')]['id']},'attributes':['id',_0xe34c('0x28')]})[_0xe34c('0x25')](handleEntityNotFound(_0x472f27,null))[_0xe34c('0x25')](function(_0x21cca6){if(_0x21cca6){_0x4989ee=_0x21cca6;return db['UserProfileSection'][_0xe34c('0x24')]({'where':{'userProfileId':_0x133036[_0xe34c('0x40')]['id'],'sectionId':_0x133036[_0xe34c('0x2f')][_0xe34c('0x58')]}});}})[_0xe34c('0x25')](function(){return _0x4989ee;})[_0xe34c('0x25')](respondWithStatusCode(_0x472f27,null))['catch'](handleError(_0x472f27,null));};exports['getSections']=function(_0x582f57,_0x1f3be7){var _0x309f40=[];var _0x5d1d63=[];return db[_0xe34c('0x4c')][_0xe34c('0x3e')]({'where':{'userProfileId':_0x582f57[_0xe34c('0x40')]['id']},'raw':!![]})[_0xe34c('0x25')](function(_0x201c0d){_0x309f40=_[_0xe34c('0x38')](_0x201c0d,function(_0xdc10ae){return _0xdc10ae[_0xe34c('0x59')]===0x1||_[_0xe34c('0x5a')]([0x3eb,0x709],_0xdc10ae[_0xe34c('0x50')]);});if(!_[_0xe34c('0x5b')](_0x309f40)){return _[_0xe34c('0x2a')](_0x309f40,function(_0x1e6cd6){return _0x1e6cd6[_0xe34c('0x50')];});}else{return;}})['then'](function(_0xd90076){if(_0xd90076)_0x5d1d63=_0xd90076;if(_['includes'](_0x5d1d63,0x64)){var _0x2977ea=_[_0xe34c('0x52')](_0x309f40,{'sectionId':0x64});return hasDefaultDashboard(_0x2977ea)[_0xe34c('0x25')](function(_0x4fcb7a){return _[_0xe34c('0x2a')](_0x309f40,function(_0x5cd4c9){if(_0x5cd4c9[_0xe34c('0x50')]===0x64){_0x5cd4c9[_0xe34c('0x5c')]=_0x4fcb7a;}return _0x5cd4c9;});});}else{return;}})[_0xe34c('0x25')](function(_0x39f8e1){if(_0x39f8e1)_0x309f40=_0x39f8e1;if(_[_0xe34c('0x5a')](_0x5d1d63,0x3eb)){var _0x2b3e17=_[_0xe34c('0x52')](_0x309f40,{'sectionId':0x3eb});return getCustomDashboards(_0x2b3e17)[_0xe34c('0x25')](function(_0x2bde7f){return _[_0xe34c('0x2a')](_0x309f40,function(_0x174a1c){if(_0x2b3e17[_0xe34c('0x59')]){if(_0x174a1c[_0xe34c('0x50')]===0x3eb){_0x174a1c['subsections']=_0x2bde7f;}}else{if(_0x174a1c[_0xe34c('0x50')]===0x64){if(!_0x174a1c['subsections']){_0x174a1c[_0xe34c('0x5c')]=[];}_0x174a1c['subsections']=_0x174a1c[_0xe34c('0x5c')][_0xe34c('0x5d')](_0x2bde7f);}}return _0x174a1c;});});}else{return;}})[_0xe34c('0x25')](function(_0x129b0d){if(_0x129b0d)_0x309f40=_0x129b0d;if(_['includes'](_0x5d1d63,0x709)){var _0x443eb7=_['find'](_0x309f40,{'sectionId':0x709});return getPlugins(_0x443eb7)[_0xe34c('0x25')](function(_0x4386ad){if(_0x443eb7['enabled']){return _[_0xe34c('0x2a')](_0x309f40,function(_0x5bc7ed){if(_0x5bc7ed[_0xe34c('0x50')]===0x709){_0x5bc7ed['subsections']=_0x4386ad;}return _0x5bc7ed;});}else{var _0x36e893={'sectionId':0x76c,'enabled':0x1,'subsections':_0x4386ad};var _0x935bfe=_[_0xe34c('0x2a')](_0x309f40);_0x935bfe[_0xe34c('0x56')](_0x36e893);return _0x935bfe;}});}else{return;}})[_0xe34c('0x25')](function(_0x62ecc0){if(_0x62ecc0)_0x309f40=_0x62ecc0;return _['filter'](_0x309f40,[_0xe34c('0x59'),0x1]);})[_0xe34c('0x25')](respondWithResult(_0x1f3be7,null))[_0xe34c('0x42')](handleError(_0x1f3be7,null));};function hasDefaultDashboard(_0x1fdb8b){var _0x19ff3e=[0x65];return new BPromise(function(_0x26e329,_0x8d1793){try{if(_0x1fdb8b[_0xe34c('0x4e')]){_0x26e329(_0x19ff3e);}else{return db[_0xe34c('0x4f')]['findOne']({'where':{'sectionId':_0x1fdb8b['id']},'raw':!![]})['then'](function(_0x50a68d){_0x50a68d?_0x26e329(_0x19ff3e):_0x26e329();});}}catch(_0x31b44b){_0x8d1793(_0x31b44b);}});}function getCustomDashboards(_0x17c77f){var _0x106bad=[];return new BPromise(function(_0x5b540e,_0x541767){try{if(_0x17c77f[_0xe34c('0x4e')]){return db['Dashboard']['findAll']({'raw':!![]})[_0xe34c('0x25')](function(_0x209fdd){_0x209fdd[_0xe34c('0x5e')](function(_0x9808e){_0x106bad[_0xe34c('0x56')](_0x9808e['id']+0x1869f);});_0x5b540e(_0x106bad);});}else{return db[_0xe34c('0x4f')][_0xe34c('0x3e')]({'where':{'sectionId':_0x17c77f['id']},'raw':!![]})[_0xe34c('0x25')](function(_0x7246a5){_0x7246a5['forEach'](function(_0x52cf5a){_0x106bad[_0xe34c('0x56')](_0x52cf5a[_0xe34c('0x5f')]+0x1869f);});_0x5b540e(_0x106bad);});}}catch(_0x11f754){_0x541767(_0x11f754);}});}function getPlugins(_0x485f1d){var _0x66d7f9=[];return new BPromise(function(_0x1ea1a6,_0x5afafd){try{if(_0x485f1d['autoAssociation']){return db['Plugin'][_0xe34c('0x3e')]({'raw':!![]})[_0xe34c('0x25')](function(_0x73e09d){_0x73e09d[_0xe34c('0x5e')](function(_0x4e4fa9){_0x66d7f9[_0xe34c('0x56')](_0x4e4fa9['id']+0x15b38);});_0x1ea1a6(_0x66d7f9);});}else{return db['UserProfileResource'][_0xe34c('0x3e')]({'where':{'sectionId':_0x485f1d['id']},'raw':!![]})[_0xe34c('0x25')](function(_0x14a984){_0x14a984[_0xe34c('0x5e')](function(_0x11efce){_0x66d7f9[_0xe34c('0x56')](_0x11efce[_0xe34c('0x5f')]+0x15b38);});_0x1ea1a6(_0x66d7f9);});}}catch(_0x9bb1b6){_0x5afafd(_0x9bb1b6);}});}exports[_0xe34c('0x60')]=function(_0x45474c,_0x23cdfc){return db[_0xe34c('0x2b')][_0xe34c('0x52')]({'where':{'id':_0x45474c[_0xe34c('0x40')]['id']}})['then'](handleEntityNotFound(_0x23cdfc,null))[_0xe34c('0x25')](function(_0x1b05a4){if(_0x1b05a4){return db['sequelize'][_0xe34c('0x4b')](function(_0xa4e36d){return db[_0xe34c('0x4c')][_0xe34c('0x3e')]({'where':{'userProfileId':_0x45474c[_0xe34c('0x40')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x10f74b){if(_0x10f74b){return db[_0xe34c('0x4c')][_0xe34c('0x24')]({'where':{'userProfileId':_0x45474c[_0xe34c('0x40')]['id'],'id':_['map'](_0x10f74b,function(_0x30c1d7){return _0x30c1d7['id'];})},'transaction':_0xa4e36d});}})[_0xe34c('0x25')](function(_0x436bbb){var _0xa5e943=_[_0xe34c('0x2a')](_0x45474c['body'],function(_0x90acce){_0x90acce[_0xe34c('0x55')]=_0x45474c[_0xe34c('0x40')]['id'];return _0x90acce;});return db[_0xe34c('0x4c')][_0xe34c('0x61')](_0xa5e943,{'raw':!![],'transaction':_0xa4e36d});})[_0xe34c('0x25')](function(_0x477149){var _0x26575c=_[_0xe34c('0x38')](_[_0xe34c('0x2a')](_0x477149,function(_0x1e0a37){return _0x1e0a37[_0xe34c('0x45')]({'plain':!![]});}),{'includeAll':![]});if(_0x26575c){return db[_0xe34c('0x4c')]['findAll']({'where':{'userProfileId':_0x45474c[_0xe34c('0x40')]['id'],'sectionId':_[_0xe34c('0x2a')](_0x26575c,function(_0x48dc24){return _0x48dc24[_0xe34c('0x50')];})},'attributes':['id',_0xe34c('0x50')],'raw':!![]})['then'](function(_0x59ad0e){var _0xdeccaf=_[_0xe34c('0x2a')](_0x45474c['body'],function(_0x4c1972){_0x4c1972[_0xe34c('0x55')]=_0x45474c['params']['id'];return _0x4c1972;});return db[_0xe34c('0x4f')][_0xe34c('0x61')](_0xdeccaf,{'raw':!![],'transaction':_0xa4e36d});});}})[_0xe34c('0x42')](handleError(_0x23cdfc,null));});}})[_0xe34c('0x25')](function(_0x56adf7){var _0x43976c=_[_0xe34c('0x2a')](_0x56adf7,function(_0x1b793d){return _0x1b793d['get']({'plain':!![]});});})[_0xe34c('0x25')](respondWithResult(_0x23cdfc,null))[_0xe34c('0x42')](handleError(_0x23cdfc,null));};exports[_0xe34c('0x62')]=function(_0x33f4b5,_0x5753a7,_0x57b548){return db[_0xe34c('0x2b')]['find']({'where':{'id':_0x33f4b5['params']['id']}})[_0xe34c('0x25')](handleEntityNotFound(_0x5753a7,null))['then'](function(_0x32e7e9){if(_0x32e7e9){return _0x32e7e9['removeResources'](_0x33f4b5[_0xe34c('0x2f')]['ids']);}})[_0xe34c('0x25')](respondWithStatusCode(_0x5753a7,null))[_0xe34c('0x42')](handleError(_0x5753a7,null));};exports[_0xe34c('0x63')]=function(_0x267bd7,_0x4d47e0){var _0x498411={};if(!_0x267bd7[_0xe34c('0x2f')][_0xe34c('0x64')])throw new Error('Missing\x20section\x20parameter');if(!_0x267bd7['query'][_0xe34c('0x65')](_0xe34c('0x66'))){_0x498411['limit']=qs[_0xe34c('0x1e')](_0x267bd7['query'][_0xe34c('0x1e')]);_0x498411[_0xe34c('0x20')]=qs[_0xe34c('0x20')](_0x267bd7[_0xe34c('0x2f')][_0xe34c('0x20')]);}return db[_0xe34c('0x2b')][_0xe34c('0x52')]({'where':{'id':_0x267bd7[_0xe34c('0x40')]['id']}})['then'](function(_0x18049d){if(!_0x18049d)throw new Error(_0xe34c('0x67')+_0x267bd7[_0xe34c('0x40')]['id']);return db[_0xe34c('0x2b')][_0xe34c('0x63')](_0x267bd7);})[_0xe34c('0x25')](respondWithFilteredResult(_0x4d47e0,_0x498411))[_0xe34c('0x42')](handleError(_0x4d47e0,null));};
\ No newline at end of file
+var _0x608c=['offset','undefined','limit','set','save','update','destroy','then','sendStatus','stack','name','send','rawAttributes','query','keys','filters','intersection','model','attributes','fields','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','UserProfile','count','includeAll','include','findAll','rows','catch','params','length','find','create','body','clone','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','autoAssociation','UserProfileResource','map','sectionId','describe','addSections','userProfileId','each','Resources','push','removeSections','ids','enabled','isEmpty','includes','subsections','concat','findOne','forEach','resourceId','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','hasOwnProperty','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','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','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','end','json'];(function(_0x148019,_0x2e8418){var _0x3eb830=function(_0xe68fa5){while(--_0xe68fa5){_0x148019['push'](_0x148019['shift']());}};_0x3eb830(++_0x2e8418);}(_0x608c,0x1a1));var _0xc608=function(_0x11859d,_0x1c9f0e){_0x11859d=_0x11859d-0x0;var _0x6c172e=_0x608c[_0x11859d];return _0x6c172e;};'use strict';var emlformat=require(_0xc608('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc608('0x1'));var jsonpatch=require(_0xc608('0x2'));var rp=require(_0xc608('0x3'));var moment=require(_0xc608('0x4'));var BPromise=require(_0xc608('0x5'));var Mustache=require(_0xc608('0x6'));var util=require(_0xc608('0x7'));var path=require(_0xc608('0x8'));var sox=require(_0xc608('0x9'));var csv=require(_0xc608('0xa'));var ejs=require(_0xc608('0xb'));var fs=require('fs');var fs_extra=require(_0xc608('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc608('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc608('0xe'));var toCsv=require(_0xc608('0xa'));var querystring=require(_0xc608('0xf'));var Papa=require(_0xc608('0x10'));var Redis=require(_0xc608('0x11'));var authService=require(_0xc608('0x12'));var qs=require(_0xc608('0x13'));var as=require(_0xc608('0x14'));var hardwareService=require(_0xc608('0x15'));var logger=require(_0xc608('0x16'))(_0xc608('0x17'));var utils=require(_0xc608('0x18'));var config=require(_0xc608('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xc608('0x1a'))['db'];config[_0xc608('0x1b')]=_[_0xc608('0x1c')](config[_0xc608('0x1b')],{'host':_0xc608('0x1d'),'port':0x18eb});var socket=require(_0xc608('0x1e'))(new Redis(config[_0xc608('0x1b')]));require('./userProfile.socket')[_0xc608('0x1f')](socket);function respondWithStatusCode(_0x167918,_0x4a545d){_0x4a545d=_0x4a545d||0xcc;return function(_0x1c5453){if(_0x1c5453){return _0x167918['sendStatus'](_0x4a545d);}return _0x167918[_0xc608('0x20')](_0x4a545d)[_0xc608('0x21')]();};}function respondWithResult(_0x2f1a05,_0x5ae844){_0x5ae844=_0x5ae844||0xc8;return function(_0x12081a){if(_0x12081a){return _0x2f1a05[_0xc608('0x20')](_0x5ae844)[_0xc608('0x22')](_0x12081a);}};}function respondWithFilteredResult(_0x566bd3,_0x349d65){return function(_0x2d4a42){if(_0x2d4a42){var _0x108b73=typeof _0x349d65[_0xc608('0x23')]===_0xc608('0x24')&&typeof _0x349d65[_0xc608('0x25')]==='undefined';var _0x237af7=_0x2d4a42['count'];var _0x5e176a=_0x108b73?0x0:_0x349d65[_0xc608('0x23')];var _0x260b67=_0x108b73?_0x2d4a42['count']:_0x349d65[_0xc608('0x23')]+_0x349d65['limit'];var _0x54ed33;if(_0x260b67>=_0x237af7){_0x260b67=_0x237af7;_0x54ed33=0xc8;}else{_0x54ed33=0xce;}_0x566bd3[_0xc608('0x20')](_0x54ed33);return _0x566bd3[_0xc608('0x26')]('Content-Range',_0x5e176a+'-'+_0x260b67+'/'+_0x237af7)[_0xc608('0x22')](_0x2d4a42);}return null;};}function patchUpdates(_0x33dce0){return function(_0xd4d9e){try{jsonpatch['apply'](_0xd4d9e,_0x33dce0,!![]);}catch(_0x33f471){return BPromise['reject'](_0x33f471);}return _0xd4d9e[_0xc608('0x27')]();};}function saveUpdates(_0x2cbb3d,_0x1340cb){return function(_0x1eb0e8){if(_0x1eb0e8){return _0x1eb0e8[_0xc608('0x28')](_0x2cbb3d)['then'](function(_0x2af153){return _0x2af153;});}return null;};}function removeEntity(_0x33ea95,_0x1ed12d){return function(_0x1014c3){if(_0x1014c3){return _0x1014c3[_0xc608('0x29')]()[_0xc608('0x2a')](function(){_0x33ea95[_0xc608('0x20')](0xcc)[_0xc608('0x21')]();});}};}function handleEntityNotFound(_0x4af74e,_0xfd6ba2){return function(_0x2b23b1){if(!_0x2b23b1){_0x4af74e[_0xc608('0x2b')](0x194);}return _0x2b23b1;};}function handleError(_0x3993c6,_0x40b900){_0x40b900=_0x40b900||0x1f4;return function(_0x14182e){logger['error'](_0x14182e[_0xc608('0x2c')]);if(_0x14182e[_0xc608('0x2d')]){delete _0x14182e[_0xc608('0x2d')];}_0x3993c6[_0xc608('0x20')](_0x40b900)[_0xc608('0x2e')](_0x14182e);};}exports['index']=function(_0x39032f,_0x22f906){var _0x249501={},_0x2738cd={},_0x3489c5={'count':0x0,'rows':[]};var _0x3c2325=_['map'](db['UserProfile'][_0xc608('0x2f')],function(_0x4c39a9){return{'name':_0x4c39a9['fieldName'],'type':_0x4c39a9['type']['key']};});_0x2738cd['model']=_['map'](_0x3c2325,'name');_0x2738cd[_0xc608('0x30')]=_[_0xc608('0x31')](_0x39032f[_0xc608('0x30')]);_0x2738cd[_0xc608('0x32')]=_[_0xc608('0x33')](_0x2738cd[_0xc608('0x34')],_0x2738cd[_0xc608('0x30')]);_0x249501[_0xc608('0x35')]=_['intersection'](_0x2738cd[_0xc608('0x34')],qs[_0xc608('0x36')](_0x39032f['query'][_0xc608('0x36')]));_0x249501[_0xc608('0x35')]=_0x249501[_0xc608('0x35')]['length']?_0x249501[_0xc608('0x35')]:_0x2738cd['model'];if(!_0x39032f[_0xc608('0x30')]['hasOwnProperty'](_0xc608('0x37'))){_0x249501[_0xc608('0x25')]=qs[_0xc608('0x25')](_0x39032f[_0xc608('0x30')][_0xc608('0x25')]);_0x249501[_0xc608('0x23')]=qs[_0xc608('0x23')](_0x39032f['query'][_0xc608('0x23')]);}_0x249501['order']=qs[_0xc608('0x38')](_0x39032f[_0xc608('0x30')][_0xc608('0x38')]);_0x249501[_0xc608('0x39')]=qs[_0xc608('0x32')](_[_0xc608('0x3a')](_0x39032f[_0xc608('0x30')],_0x2738cd[_0xc608('0x32')]),_0x3c2325);if(_0x39032f['query'][_0xc608('0x3b')]){_0x249501[_0xc608('0x39')]=_[_0xc608('0x3c')](_0x249501[_0xc608('0x39')],{'$or':_['map'](_0x3c2325,function(_0x3eba2f){if(_0x3eba2f[_0xc608('0x3d')]!==_0xc608('0x3e')){var _0x235232={};_0x235232[_0x3eba2f[_0xc608('0x2d')]]={'$like':'%'+_0x39032f[_0xc608('0x30')][_0xc608('0x3b')]+'%'};return _0x235232;}})});}_0x249501=_['merge']({},_0x249501,_0x39032f[_0xc608('0x3f')]);var _0x28bcb4={'where':_0x249501[_0xc608('0x39')]};return db[_0xc608('0x40')]['count'](_0x28bcb4)['then'](function(_0x1a8724){_0x3489c5[_0xc608('0x41')]=_0x1a8724;if(_0x39032f['query'][_0xc608('0x42')]){_0x249501[_0xc608('0x43')]=[{'all':!![]}];}return db['UserProfile'][_0xc608('0x44')](_0x249501);})[_0xc608('0x2a')](function(_0x136f55){_0x3489c5[_0xc608('0x45')]=_0x136f55;return _0x3489c5;})[_0xc608('0x2a')](respondWithFilteredResult(_0x22f906,_0x249501))[_0xc608('0x46')](handleError(_0x22f906,null));};exports['show']=function(_0x1053b4,_0x100b1d){var _0x1ef94f={'raw':![],'where':{'id':_0x1053b4[_0xc608('0x47')]['id']}},_0x4618fc={};_0x4618fc['model']=_[_0xc608('0x31')](db[_0xc608('0x40')][_0xc608('0x2f')]);_0x4618fc[_0xc608('0x30')]=_[_0xc608('0x31')](_0x1053b4[_0xc608('0x30')]);_0x4618fc[_0xc608('0x32')]=_[_0xc608('0x33')](_0x4618fc[_0xc608('0x34')],_0x4618fc[_0xc608('0x30')]);_0x1ef94f[_0xc608('0x35')]=_[_0xc608('0x33')](_0x4618fc[_0xc608('0x34')],qs[_0xc608('0x36')](_0x1053b4[_0xc608('0x30')][_0xc608('0x36')]));_0x1ef94f[_0xc608('0x35')]=_0x1ef94f[_0xc608('0x35')][_0xc608('0x48')]?_0x1ef94f[_0xc608('0x35')]:_0x4618fc['model'];if(_0x1053b4['query'][_0xc608('0x42')]){_0x1ef94f[_0xc608('0x43')]=[{'all':!![]}];}_0x1ef94f=_['merge']({},_0x1ef94f,_0x1053b4[_0xc608('0x3f')]);return db[_0xc608('0x40')][_0xc608('0x49')](_0x1ef94f)['then'](handleEntityNotFound(_0x100b1d,null))['then'](respondWithResult(_0x100b1d,null))['catch'](handleError(_0x100b1d,null));};exports['create']=function(_0x27e700,_0x4c4102){return db[_0xc608('0x40')][_0xc608('0x4a')](_0x27e700[_0xc608('0x4b')],{})[_0xc608('0x2a')](respondWithResult(_0x4c4102,0xc9))[_0xc608('0x46')](handleError(_0x4c4102,null));};exports[_0xc608('0x4c')]=function(_0x1644c1,_0xcf30de){var _0xff1fc9={'where':{'id':_0x1644c1[_0xc608('0x47')]['id']}},_0x54c7dc={};_0x54c7dc[_0xc608('0x34')]=_[_0xc608('0x31')](db[_0xc608('0x40')][_0xc608('0x2f')]);_0xff1fc9['attributes']=_[_0xc608('0x33')](_0x54c7dc[_0xc608('0x34')],qs['fields'](_0x1644c1[_0xc608('0x30')][_0xc608('0x36')]));_0xff1fc9[_0xc608('0x35')]=_0xff1fc9[_0xc608('0x35')][_0xc608('0x48')]?_0xff1fc9[_0xc608('0x35')]:_0x54c7dc[_0xc608('0x34')];if(_0x1644c1['query'][_0xc608('0x42')]){_0xff1fc9[_0xc608('0x43')]=[{'all':!![]}];}_0xff1fc9=_[_0xc608('0x3c')]({},_0xff1fc9,_0x1644c1[_0xc608('0x3f')]);return db[_0xc608('0x40')]['find'](_0xff1fc9)[_0xc608('0x2a')](handleEntityNotFound(_0xcf30de,null))[_0xc608('0x2a')](function(_0x461675){if(_0x461675){var _0x2596bf=_0x461675[_0xc608('0x4d')]({'plain':!![]});_0x2596bf=qs[_0xc608('0x4e')](_0x2596bf,['id',_0xc608('0x4f'),_0xc608('0x50'),_0xc608('0x51')]);_0x1644c1['body']=_[_0xc608('0x4e')](_0x1644c1[_0xc608('0x4b')],['id','createdAt',_0xc608('0x50')]);return db[_0xc608('0x52')][_0xc608('0x53')](function(_0x3bf0d0){return db[_0xc608('0x40')][_0xc608('0x4a')](_[_0xc608('0x3c')](_0x2596bf,_0x1644c1[_0xc608('0x4b')]),{'include':_0x1644c1[_0xc608('0x30')][_0xc608('0x42')]?[{'all':!![]}]:undefined,'transaction':_0x3bf0d0})['then'](function(_0x1e20ec){var _0x48e70e=_0x1e20ec['get']({'plain':!![]});return db[_0xc608('0x54')][_0xc608('0x44')]({'where':{'userProfileId':_0x1644c1[_0xc608('0x47')]['id']},'raw':!![]})[_0xc608('0x2a')](function(_0x76176d){if(_0x76176d){return BPromise['each'](_0x76176d,function(_0x5bd524){return new BPromise(function(_0x5674a4,_0xe9a3e5){if(_0x5bd524['autoAssociation']===null||_0x5bd524[_0xc608('0x55')]===0x1)_0x5674a4(null);return db[_0xc608('0x56')][_0xc608('0x44')]({'where':{'sectionId':_0x5bd524['id']},'raw':!![]})[_0xc608('0x2a')](function(_0x211359){var _0x3fa13b=_[_0xc608('0x57')](_0x211359,function(_0x3105bb){return qs['omit'](_0x3105bb,['id',_0xc608('0x4f'),_0xc608('0x50'),_0xc608('0x58')]);});_0x5674a4(_0x3fa13b);})['catch'](function(_0x17003d){_0xe9a3e5(_0x17003d);});})[_0xc608('0x2a')](function(_0x28f5f9){var _0x1c39be=qs[_0xc608('0x4e')](_0x5bd524,['id',_0xc608('0x4f'),_0xc608('0x50')]);_0x1c39be['userProfileId']=_0x48e70e['id'];if(_0x28f5f9)_0x1c39be['Resources']=_0x28f5f9;return _0x1c39be;})[_0xc608('0x2a')](function(_0x3fc5f8){return db[_0xc608('0x54')][_0xc608('0x4a')](_0x3fc5f8,{'include':[{'model':db[_0xc608('0x56')],'as':'Resources'}],'raw':!![],'transaction':_0x3bf0d0});});})['then'](function(){return _0x48e70e;});}});});});}})['then'](respondWithResult(_0xcf30de,0xc9))[_0xc608('0x46')](handleError(_0xcf30de,null));};exports[_0xc608('0x28')]=function(_0x424c85,_0x343109){if(_0x424c85[_0xc608('0x4b')]['id']){delete _0x424c85[_0xc608('0x4b')]['id'];}return db[_0xc608('0x40')]['find']({'where':{'id':_0x424c85[_0xc608('0x47')]['id']}})[_0xc608('0x2a')](handleEntityNotFound(_0x343109,null))['then'](saveUpdates(_0x424c85[_0xc608('0x4b')],null))['then'](respondWithResult(_0x343109,null))[_0xc608('0x46')](handleError(_0x343109,null));};exports['destroy']=function(_0x566dbb,_0x3bb0b4){return db['UserProfile'][_0xc608('0x49')]({'where':{'id':_0x566dbb[_0xc608('0x47')]['id']}})[_0xc608('0x2a')](handleEntityNotFound(_0x3bb0b4,null))[_0xc608('0x2a')](removeEntity(_0x3bb0b4,null))[_0xc608('0x46')](handleError(_0x3bb0b4,null));};exports[_0xc608('0x59')]=function(_0x4e7bce,_0x28f858){return db['UserProfile'][_0xc608('0x59')]()[_0xc608('0x2a')](respondWithResult(_0x28f858,null))[_0xc608('0x46')](handleError(_0x28f858,null));};exports[_0xc608('0x5a')]=function(_0x2a03f2,_0xba5431){var _0xd7a38d=_0x2a03f2[_0xc608('0x4b')];return db['UserProfile'][_0xc608('0x49')]({'where':{'id':_0x2a03f2[_0xc608('0x47')]['id']}})[_0xc608('0x2a')](handleEntityNotFound(_0xba5431,null))[_0xc608('0x2a')](function(_0x2288b3){if(_0x2288b3){return db['sequelize'][_0xc608('0x53')](function(_0x5481d2){return db[_0xc608('0x54')][_0xc608('0x29')]({'where':{'userProfileId':_0x2a03f2[_0xc608('0x47')]['id'],'sectionId':_[_0xc608('0x57')](_0xd7a38d,function(_0x58a422){return _0x58a422['sectionId'];})},'transaction':_0x5481d2})['then'](function(){var _0x67c505=_[_0xc608('0x57')](_0xd7a38d,function(_0x41753a){_0x41753a[_0xc608('0x5b')]=_0x2a03f2[_0xc608('0x47')]['id'];return _0x41753a;});var _0x217338=[];return BPromise[_0xc608('0x5c')](_0x67c505,function(_0x1e1850){return db[_0xc608('0x54')]['create'](_0x1e1850,{'include':[{'model':db[_0xc608('0x56')],'as':_0xc608('0x5d')}],'raw':!![],'transaction':_0x5481d2})[_0xc608('0x2a')](function(_0x1018dc){_0x217338[_0xc608('0x5e')](_0x1018dc[_0xc608('0x4d')]({'plain':!![]}));});})[_0xc608('0x2a')](function(){return _0x217338;});});});}})[_0xc608('0x2a')](function(_0x57c634){return _0x57c634;})[_0xc608('0x2a')](respondWithResult(_0xba5431,null))[_0xc608('0x46')](handleError(_0xba5431,null));};exports[_0xc608('0x5f')]=function(_0x373e77,_0x10565e){var _0x4ac43c;return db[_0xc608('0x40')][_0xc608('0x49')]({'where':{'id':_0x373e77[_0xc608('0x47')]['id']},'attributes':['id',_0xc608('0x2d')]})['then'](handleEntityNotFound(_0x10565e,null))['then'](function(_0x1c2210){if(_0x1c2210){_0x4ac43c=_0x1c2210;return db['UserProfileSection'][_0xc608('0x29')]({'where':{'userProfileId':_0x373e77[_0xc608('0x47')]['id'],'sectionId':_0x373e77[_0xc608('0x30')][_0xc608('0x60')]}});}})['then'](function(){return _0x4ac43c;})[_0xc608('0x2a')](respondWithStatusCode(_0x10565e,null))[_0xc608('0x46')](handleError(_0x10565e,null));};exports['getSections']=function(_0x7bfb5b,_0x40fd78){var _0x11a550=[];var _0x5c999a=[];return db[_0xc608('0x54')][_0xc608('0x44')]({'where':{'userProfileId':_0x7bfb5b[_0xc608('0x47')]['id']},'raw':!![]})['then'](function(_0x3975a4){_0x11a550=_['filter'](_0x3975a4,function(_0x1934d1){return _0x1934d1[_0xc608('0x61')]===0x1||_['includes']([0x3eb,0x709],_0x1934d1[_0xc608('0x58')]);});if(!_[_0xc608('0x62')](_0x11a550)){return _[_0xc608('0x57')](_0x11a550,function(_0x1c4868){return _0x1c4868['sectionId'];});}else{return;}})['then'](function(_0x3ba385){if(_0x3ba385)_0x5c999a=_0x3ba385;if(_[_0xc608('0x63')](_0x5c999a,0x64)){var _0x501232=_[_0xc608('0x49')](_0x11a550,{'sectionId':0x64});return hasDefaultDashboard(_0x501232)[_0xc608('0x2a')](function(_0x37f1ce){return _[_0xc608('0x57')](_0x11a550,function(_0x510ba7){if(_0x510ba7[_0xc608('0x58')]===0x64){_0x510ba7['subsections']=_0x37f1ce;}return _0x510ba7;});});}else{return;}})[_0xc608('0x2a')](function(_0x3f9870){if(_0x3f9870)_0x11a550=_0x3f9870;if(_['includes'](_0x5c999a,0x3eb)){var _0x59aa2f=_[_0xc608('0x49')](_0x11a550,{'sectionId':0x3eb});return getCustomDashboards(_0x59aa2f)[_0xc608('0x2a')](function(_0x36b30e){return _[_0xc608('0x57')](_0x11a550,function(_0x2f2ef5){if(_0x59aa2f[_0xc608('0x61')]){if(_0x2f2ef5[_0xc608('0x58')]===0x3eb){_0x2f2ef5[_0xc608('0x64')]=_0x36b30e;}}else{if(_0x2f2ef5[_0xc608('0x58')]===0x64){if(!_0x2f2ef5[_0xc608('0x64')]){_0x2f2ef5['subsections']=[];}_0x2f2ef5[_0xc608('0x64')]=_0x2f2ef5[_0xc608('0x64')][_0xc608('0x65')](_0x36b30e);}}return _0x2f2ef5;});});}else{return;}})[_0xc608('0x2a')](function(_0x1e45d2){if(_0x1e45d2)_0x11a550=_0x1e45d2;if(_['includes'](_0x5c999a,0x709)){var _0x3d8f38=_[_0xc608('0x49')](_0x11a550,{'sectionId':0x709});return getPlugins(_0x3d8f38)[_0xc608('0x2a')](function(_0x3aa02b){if(_0x3d8f38['enabled']){return _[_0xc608('0x57')](_0x11a550,function(_0x59d3e8){if(_0x59d3e8[_0xc608('0x58')]===0x709){_0x59d3e8[_0xc608('0x64')]=_0x3aa02b;}return _0x59d3e8;});}else{var _0x4a4869={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3aa02b};var _0x5c9ef7=_[_0xc608('0x57')](_0x11a550);_0x5c9ef7['push'](_0x4a4869);return _0x5c9ef7;}});}else{return;}})['then'](function(_0x33bd91){if(_0x33bd91)_0x11a550=_0x33bd91;return _['filter'](_0x11a550,['enabled',0x1]);})['then'](respondWithResult(_0x40fd78,null))[_0xc608('0x46')](handleError(_0x40fd78,null));};function hasDefaultDashboard(_0x1e2b64){var _0x516a3b=[0x65];return new BPromise(function(_0x1e7f6b,_0x4ce9db){try{if(_0x1e2b64[_0xc608('0x55')]){_0x1e7f6b(_0x516a3b);}else{return db[_0xc608('0x56')][_0xc608('0x66')]({'where':{'sectionId':_0x1e2b64['id']},'raw':!![]})[_0xc608('0x2a')](function(_0x30c8bb){_0x30c8bb?_0x1e7f6b(_0x516a3b):_0x1e7f6b();});}}catch(_0x1ce5c5){_0x4ce9db(_0x1ce5c5);}});}function getCustomDashboards(_0x3ae2fc){var _0x39ddb7=[];return new BPromise(function(_0x2e53a3,_0x2af28f){try{if(_0x3ae2fc['autoAssociation']){return db['Dashboard'][_0xc608('0x44')]({'raw':!![]})[_0xc608('0x2a')](function(_0x3a0f01){_0x3a0f01[_0xc608('0x67')](function(_0x38966f){_0x39ddb7[_0xc608('0x5e')](_0x38966f['id']+0x1869f);});_0x2e53a3(_0x39ddb7);});}else{return db[_0xc608('0x56')][_0xc608('0x44')]({'where':{'sectionId':_0x3ae2fc['id']},'raw':!![]})[_0xc608('0x2a')](function(_0x5875d1){_0x5875d1['forEach'](function(_0x364b2f){_0x39ddb7[_0xc608('0x5e')](_0x364b2f['resourceId']+0x1869f);});_0x2e53a3(_0x39ddb7);});}}catch(_0x418158){_0x2af28f(_0x418158);}});}function getPlugins(_0x3640f7){var _0x8bf0d=[];return new BPromise(function(_0x46442e,_0x53e0ae){try{if(_0x3640f7[_0xc608('0x55')]){return db['Plugin'][_0xc608('0x44')]({'raw':!![]})[_0xc608('0x2a')](function(_0x480fd3){_0x480fd3[_0xc608('0x67')](function(_0x452460){_0x8bf0d['push'](_0x452460['id']+0x15b38);});_0x46442e(_0x8bf0d);});}else{return db[_0xc608('0x56')][_0xc608('0x44')]({'where':{'sectionId':_0x3640f7['id']},'raw':!![]})[_0xc608('0x2a')](function(_0x462a6c){_0x462a6c['forEach'](function(_0x557c75){_0x8bf0d[_0xc608('0x5e')](_0x557c75[_0xc608('0x68')]+0x15b38);});_0x46442e(_0x8bf0d);});}}catch(_0x1fbc36){_0x53e0ae(_0x1fbc36);}});}exports[_0xc608('0x69')]=function(_0x3b8a44,_0x2d1bf8){return db[_0xc608('0x40')]['find']({'where':{'id':_0x3b8a44[_0xc608('0x47')]['id']}})['then'](handleEntityNotFound(_0x2d1bf8,null))[_0xc608('0x2a')](function(_0x3ab3fe){if(_0x3ab3fe){return db[_0xc608('0x52')][_0xc608('0x53')](function(_0x262f45){return db[_0xc608('0x54')][_0xc608('0x44')]({'where':{'userProfileId':_0x3b8a44[_0xc608('0x47')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0xbf4b98){if(_0xbf4b98){return db[_0xc608('0x54')]['destroy']({'where':{'userProfileId':_0x3b8a44[_0xc608('0x47')]['id'],'id':_[_0xc608('0x57')](_0xbf4b98,function(_0x33bd90){return _0x33bd90['id'];})},'transaction':_0x262f45});}})[_0xc608('0x2a')](function(_0x2337d3){var _0x35aa77=_[_0xc608('0x57')](_0x3b8a44[_0xc608('0x4b')],function(_0x435005){_0x435005[_0xc608('0x5b')]=_0x3b8a44['params']['id'];return _0x435005;});return db['UserProfileSection']['bulkCreate'](_0x35aa77,{'raw':!![],'transaction':_0x262f45});})[_0xc608('0x2a')](function(_0x1152b9){var _0x49b9b6=_[_0xc608('0x3b')](_[_0xc608('0x57')](_0x1152b9,function(_0x575788){return _0x575788[_0xc608('0x4d')]({'plain':!![]});}),{'includeAll':![]});if(_0x49b9b6){return db['UserProfileSection'][_0xc608('0x44')]({'where':{'userProfileId':_0x3b8a44[_0xc608('0x47')]['id'],'sectionId':_[_0xc608('0x57')](_0x49b9b6,function(_0x2254a1){return _0x2254a1['sectionId'];})},'attributes':['id',_0xc608('0x58')],'raw':!![]})['then'](function(_0xe3c4ed){var _0x1550f1=_[_0xc608('0x57')](_0x3b8a44[_0xc608('0x4b')],function(_0x3d1d38){_0x3d1d38[_0xc608('0x5b')]=_0x3b8a44['params']['id'];return _0x3d1d38;});return db[_0xc608('0x56')][_0xc608('0x6a')](_0x1550f1,{'raw':!![],'transaction':_0x262f45});});}})['catch'](handleError(_0x2d1bf8,null));});}})[_0xc608('0x2a')](function(_0x189d86){var _0x5a4dd2=_[_0xc608('0x57')](_0x189d86,function(_0x3f854d){return _0x3f854d[_0xc608('0x4d')]({'plain':!![]});});})['then'](respondWithResult(_0x2d1bf8,null))['catch'](handleError(_0x2d1bf8,null));};exports['removeResources']=function(_0x23e3e0,_0x3c2a3f,_0x2c5e5c){return db['UserProfile']['find']({'where':{'id':_0x23e3e0[_0xc608('0x47')]['id']}})[_0xc608('0x2a')](handleEntityNotFound(_0x3c2a3f,null))[_0xc608('0x2a')](function(_0x41d443){if(_0x41d443){return _0x41d443[_0xc608('0x6b')](_0x23e3e0['query']['ids']);}})[_0xc608('0x2a')](respondWithStatusCode(_0x3c2a3f,null))[_0xc608('0x46')](handleError(_0x3c2a3f,null));};exports[_0xc608('0x6c')]=function(_0xc23aaa,_0x5bd395){var _0x157ffa={};if(!_0xc23aaa['query'][_0xc608('0x6d')])throw new Error(_0xc608('0x6e'));if(!_0xc23aaa[_0xc608('0x30')][_0xc608('0x6f')](_0xc608('0x37'))){_0x157ffa[_0xc608('0x25')]=qs['limit'](_0xc23aaa[_0xc608('0x30')]['limit']);_0x157ffa[_0xc608('0x23')]=qs['offset'](_0xc23aaa[_0xc608('0x30')]['offset']);}return db[_0xc608('0x40')][_0xc608('0x49')]({'where':{'id':_0xc23aaa[_0xc608('0x47')]['id']}})[_0xc608('0x2a')](function(_0x32ed2a){if(!_0x32ed2a)throw new Error(_0xc608('0x70')+_0xc23aaa[_0xc608('0x47')]['id']);return db['UserProfile'][_0xc608('0x6c')](_0xc23aaa);})['then'](respondWithFilteredResult(_0x5bd395,_0x157ffa))['catch'](handleError(_0x5bd395,null));};
\ No newline at end of file
index f5c4cff..96b0d81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0650=['update','emit','exports','events','UserProfile','setMaxListeners'];(function(_0x386d58,_0x475404){var _0x31a408=function(_0x2726f0){while(--_0x2726f0){_0x386d58['push'](_0x386d58['shift']());}};_0x31a408(++_0x475404);}(_0x0650,0xed));var _0x0065=function(_0x4f7786,_0x4ffc01){_0x4f7786=_0x4f7786-0x0;var _0x42fbb9=_0x0650[_0x4f7786];return _0x42fbb9;};'use strict';var EventEmitter=require(_0x0065('0x0'));var UserProfile=require('../../mysqldb')['db'][_0x0065('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x0065('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0065('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2e05a4){return function(_0x8260ba,_0x3dd8c6,_0x4b15b1){UserProfileEvents[_0x0065('0x4')](_0x2e05a4+':'+_0x8260ba['id'],_0x8260ba);UserProfileEvents['emit'](_0x2e05a4,_0x8260ba);_0x4b15b1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x0065('0x5')]=UserProfileEvents;
\ No newline at end of file
+var _0xdb28=['UserProfile','setMaxListeners','update','remove','emit','exports','events','../../mysqldb'];(function(_0x3c94ff,_0x131d63){var _0x3bf70b=function(_0x3d0eed){while(--_0x3d0eed){_0x3c94ff['push'](_0x3c94ff['shift']());}};_0x3bf70b(++_0x131d63);}(_0xdb28,0x106));var _0x8db2=function(_0x115dda,_0x3ec2ba){_0x115dda=_0x115dda-0x0;var _0x4e4e3d=_0xdb28[_0x115dda];return _0x4e4e3d;};'use strict';var EventEmitter=require(_0x8db2('0x0'));var UserProfile=require(_0x8db2('0x1'))['db'][_0x8db2('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x8db2('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8db2('0x4'),'afterDestroy':_0x8db2('0x5')};function emitEvent(_0xfcf49f){return function(_0x4426fe,_0x11109e,_0x52bf99){UserProfileEvents[_0x8db2('0x6')](_0xfcf49f+':'+_0x4426fe['id'],_0x4426fe);UserProfileEvents[_0x8db2('0x6')](_0xfcf49f,_0x4426fe);_0x52bf99(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x8db2('0x7')]=UserProfileEvents;
\ No newline at end of file
index 319228b..11a638c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9b0=['reportType','default','DefaultReports','custom','CustomReports','count','rows','ids','order','customSorting','extraQueryConditions','CmContact','color','tag','ThroughTags','true','chat','sms','dataValues','fax','mail','openchannel','whatsapp','./userProfile.attributes','squel','exports','filter','field','findAll','then','map','catch','value','model','associatedResources','name','resolve','UserProfileResource','AnalyticExtractedReport','toLowerCase','squareprojects','childModel','SquareProject','SquareOdbc','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','Agents','membername','role','Telephones','telephone','queue','VoiceQueue','QueueCampaigns','outbound','musiconholds','chanspies','voiceprefixes','VoicePrefix','Campaign','mailqueues','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','OpenchannelQueue','openchannelaccounts','smsqueues','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','queuecampaigns','agents','telephones','User','user','zendeskaccounts','SalesforceAccount','freshdeskaccounts','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','vtigeraccounts','CannedAnswer','dispositions','Dashboard','intervals','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','templates','Template','triggers','Trigger','trunks','Trunk','variables','Variable','Plugin','reportId','metrics','AnalyticMetric','charAt','toUpperCase','Sequelize','SELECT','select','InteractionId','ui.createdAt','from','user_has_','_interactions','where','sequelize','toString','OpenTabs','UserProfile','../../components/parsers/qs','query','section','Invalid\x20section\x20\x27','push','UserProfileSection','find','params','all','ignore','isEmpty','union','length','rawAttributes','keys','filters','intersection','attributes','hasOwnProperty','nolimit','limit','offset','sort','pick','merge','type','key','foreignKey','forEach','autoAssociation','includeAll','include'];(function(_0xf98854,_0x8abe4c){var _0x456f98=function(_0x4143dc){while(--_0x4143dc){_0xf98854['push'](_0xf98854['shift']());}};_0x456f98(++_0x8abe4c);}(_0xa9b0,0xd4));var _0x0a9b=function(_0x23e6bb,_0x5c2d69){_0x23e6bb=_0x23e6bb-0x0;var _0x1e3b4c=_0xa9b0[_0x23e6bb];return _0x1e3b4c;};'use strict';var _=require('lodash');var attributes=require(_0x0a9b('0x0'));var squel=require(_0x0a9b('0x1'));module[_0x0a9b('0x2')]=function(_0x1a8ca2){var _0x5537ef=_0x1a8ca2['models'];function _0x1ce674(_0x13f669,_0x498538){return new Promise(function(_0x25d6b9,_0xf7391e){if(!_0x498538)return _0x25d6b9(null);var _0x1f030a=_0x498538[_0x0a9b('0x3')]?{[_0x498538[_0x0a9b('0x3')][_0x0a9b('0x4')]]:_0x498538[_0x0a9b('0x3')]['value']}:undefined;return _0x5537ef[_0x13f669][_0x0a9b('0x5')]({'where':_0x1f030a,'raw':!![]})[_0x0a9b('0x6')](function(_0x3ff9c1){_0x498538['associatedResources']=_[_0x0a9b('0x7')](_0x3ff9c1,'id');_0x25d6b9(_0x498538);})[_0x0a9b('0x8')](function(_0x279657){_0xf7391e(_0x279657);});});}function _0x2da9cc(_0x2e6192,_0x479e26){return new Promise(function(_0x1f8056,_0x288d12){var _0x586315=_0x2e6192['filter']?{[_0x2e6192[_0x0a9b('0x3')]['field']]:_0x2e6192[_0x0a9b('0x3')][_0x0a9b('0x9')]}:undefined;return _0x5537ef[_0x2e6192[_0x0a9b('0xa')]][_0x0a9b('0x5')]({'where':_0x586315,'raw':!![]})[_0x0a9b('0x6')](function(_0x1c857f){_0x479e26[_0x0a9b('0xb')]=_[_0x0a9b('0x7')](_0x1c857f,function(_0x2a3dda){return _0x2a3dda[_0x0a9b('0xc')];});_0x1f8056(_0x479e26);})[_0x0a9b('0x8')](function(_0x50d9d2){_0x288d12(_0x50d9d2);});});}function _0x4b4e8c(_0x43c191,_0x16dace,_0x2e15f4){if(!_0x16dace)return Promise[_0x0a9b('0xd')](null);return new Promise(function(_0x14dd92,_0x28ce8c){return _0x5537ef[_0x0a9b('0xe')][_0x0a9b('0x5')]({'where':{'sectionId':_0x16dace['id']},'raw':!![]})[_0x0a9b('0x6')](function(_0xecbe07){if(_0x43c191[_0x0a9b('0x4')]&&_0x43c191[_0x0a9b('0x4')]!=='id'){_0x16dace[_0x0a9b('0xb')]=_[_0x0a9b('0x7')](_0xecbe07,function(_0x345c94){return _0x345c94[_0x43c191['field']];});}else{if(_0x2e15f4===_0x0a9b('0xf')){_0x16dace['associatedResources']=_[_0x0a9b('0x7')](_0xecbe07,function(_0x209330){return{'id':_0x209330['resourceId'],'type':_0x209330['type']};});}else{_0x16dace['associatedResources']=_[_0x0a9b('0x7')](_0xecbe07,function(_0x47fa2c){return _0x47fa2c['resourceId'];});}}_0x14dd92(_0x16dace);})[_0x0a9b('0x8')](function(_0x480fdd){_0x28ce8c(_0x480fdd);});});}function _0x54e808(_0x5e5a93,_0x37d030){var _0x47942a={'parentSections':[]};switch(_0x5e5a93[_0x0a9b('0x10')]()){case _0x0a9b('0x11'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x13');break;case'odbc':_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x14');break;case'squarerecordings':_0x47942a['childModel']=_0x0a9b('0x15');_0x47942a[_0x0a9b('0x16')]=[{'name':_0x0a9b('0x17'),'field':_0x0a9b('0xc'),'foreignKey':_0x0a9b('0x18')}];break;case _0x0a9b('0x19'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x1a');break;case _0x0a9b('0x1b'):_0x47942a['childModel']='CmContact';_0x47942a[_0x0a9b('0x16')]=[{'name':_0x0a9b('0x1c'),'field':'id','foreignKey':_0x0a9b('0x1d')}];break;case _0x0a9b('0x1e'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x1f');break;case _0x0a9b('0x20'):_0x47942a['childModel']=_0x0a9b('0x21');break;case _0x0a9b('0x22'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x23');break;case _0x0a9b('0x24'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x25');break;case'chatwebsites':_0x47942a[_0x0a9b('0x12')]='ChatWebsite';break;case _0x0a9b('0x26'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x27');break;case _0x0a9b('0x28'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x29');break;case _0x0a9b('0x2a'):case _0x0a9b('0x2b'):case _0x0a9b('0x2c'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x2d');break;case _0x0a9b('0x2e'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x2f');break;case _0x0a9b('0x30'):_0x47942a['childModel']=_0x0a9b('0x31');break;case _0x0a9b('0x32'):_0x47942a[_0x0a9b('0x12')]='VoiceRecording';_0x47942a[_0x0a9b('0x16')]=[{'name':_0x0a9b('0x33'),'field':'name','foreignKey':_0x0a9b('0x34'),'model':'User','filter':{'field':_0x0a9b('0x35'),'value':['agent']}},{'name':_0x0a9b('0x36'),'field':_0x0a9b('0xc'),'foreignKey':_0x0a9b('0x34'),'model':'User','filter':{'field':_0x0a9b('0x35'),'value':[_0x0a9b('0x37')]}},{'name':'VoiceQueues','field':_0x0a9b('0xc'),'foreignKey':_0x0a9b('0x38'),'model':_0x0a9b('0x39'),'filter':{'field':'type','value':['inbound']}},{'name':_0x0a9b('0x3a'),'field':'name','foreignKey':_0x0a9b('0x38'),'model':_0x0a9b('0x39'),'filter':{'field':'type','value':[_0x0a9b('0x3b')]}}];break;case _0x0a9b('0x3c'):_0x47942a[_0x0a9b('0x12')]='VoiceMusicOnHold';break;case _0x0a9b('0x3d'):_0x47942a['childModel']='VoiceChanSpy';break;case _0x0a9b('0x3e'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x3f');break;case'ivrcampaigns':_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x40');break;case _0x0a9b('0x41'):_0x47942a[_0x0a9b('0x12')]='MailQueue';break;case _0x0a9b('0x42'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x43');break;case _0x0a9b('0x44'):_0x47942a['childModel']=_0x0a9b('0x45');break;case'openchannelqueues':_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x46');break;case _0x0a9b('0x47'):_0x47942a['childModel']='OpenchannelAccount';break;case _0x0a9b('0x48'):_0x47942a[_0x0a9b('0x12')]='SmsQueue';break;case _0x0a9b('0x49'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x4a');break;case _0x0a9b('0x4b'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x4c');break;case _0x0a9b('0x4d'):_0x47942a['childModel']=_0x0a9b('0x4e');break;case _0x0a9b('0x4f'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x50');break;case _0x0a9b('0x51'):case _0x0a9b('0x52'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x39');if(_0x37d030){_0x47942a[_0x0a9b('0x16')]=[{'name':'VoiceQueues'},{'name':_0x0a9b('0x3a')}];}break;case'users':case _0x0a9b('0x53'):case _0x0a9b('0x54'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x55');if(_0x37d030){_0x47942a[_0x0a9b('0x16')]=[{'name':'Users','filter':{'field':_0x0a9b('0x35'),'value':['admin',_0x0a9b('0x56')]},'ignore':!![]},{'name':_0x0a9b('0x33')},{'name':'Telephones'}];}break;case _0x0a9b('0x57'):_0x47942a['childModel']='ZendeskAccount';break;case'salesforceaccounts':_0x47942a['childModel']=_0x0a9b('0x58');break;case _0x0a9b('0x59'):_0x47942a[_0x0a9b('0x12')]='FreshdeskAccount';break;case _0x0a9b('0x5a'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x5b');break;case _0x0a9b('0x5c'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x5d');break;case'zohoaccounts':_0x47942a['childModel']='ZohoAccount';break;case _0x0a9b('0x5e'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x55');break;case'cannedanswers':_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x5f');break;case _0x0a9b('0x60'):_0x47942a[_0x0a9b('0x12')]='Disposition';break;case'customdashboards':_0x47942a['childModel']=_0x0a9b('0x61');break;case _0x0a9b('0x62'):_0x47942a[_0x0a9b('0x12')]='Interval';break;case _0x0a9b('0x63'):_0x47942a['childModel']=_0x0a9b('0x64');break;case _0x0a9b('0x65'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x66');break;case _0x0a9b('0x67'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x68');break;case _0x0a9b('0x69'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x6a');break;case _0x0a9b('0x6b'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x6c');break;case _0x0a9b('0x6d'):_0x47942a['childModel']=_0x0a9b('0x6e');break;case _0x0a9b('0x6f'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x70');break;case _0x0a9b('0x71'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x72');break;case'plugins':_0x47942a['childModel']=_0x0a9b('0x73');break;case'extractedreports':_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0xf');_0x47942a['parentSections']=[{'name':'Reports','field':'id','foreignKey':_0x0a9b('0x74')}];break;case _0x0a9b('0x75'):_0x47942a[_0x0a9b('0x12')]=_0x0a9b('0x76');break;}return _0x47942a;}function _0x31e22e(_0x354178,_0xce084d){var _0x1347d6=_0x354178[_0x0a9b('0x77')](0x0)[_0x0a9b('0x78')]()+_0x354178['slice'](0x1);var _0x3e5db0={'type':_0x5537ef[_0x0a9b('0x79')]['QueryTypes'][_0x0a9b('0x7a')],'raw':!![]};return new Promise(function(_0x2624cf,_0x34f916){var _0x290113=squel[_0x0a9b('0x7b')]()['field']('ui.'+_0x1347d6+_0x0a9b('0x7c'),'id')['field'](_0x0a9b('0x7d'))[_0x0a9b('0x7e')](_0x0a9b('0x7f')+_0x354178+_0x0a9b('0x80'),'ui')[_0x0a9b('0x81')]('ui.UserId\x20=\x20?',_0xce084d['id']);return _0x5537ef[_0x0a9b('0x82')]['query'](_0x290113[_0x0a9b('0x83')](),_0x3e5db0)[_0x0a9b('0x6')](function(_0x5bb532){_0xce084d[_0x1347d6+_0x0a9b('0x84')]=_0x5bb532;_0x2624cf(_0x5bb532);})[_0x0a9b('0x8')](function(_0x331567){_0x34f916(_0x331567);});});}return _0x1a8ca2['define'](_0x0a9b('0x85'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x3ca2bd){var _0x45396a=require(_0x0a9b('0x86'));var _0x328523={'raw':_0x3ca2bd[_0x0a9b('0x87')]['raw'],'where':{}};var _0x1e7efa={};var _0x3414b3={'count':0x0,'rows':[]};var _0x206334=_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0x88')];var _0x51c124=_0x3ca2bd[_0x0a9b('0x87')]['mergeResources']||![];var _0x50c24b=_0x54e808(_0x206334,_0x51c124);if(!_0x50c24b[_0x0a9b('0x12')])throw new Error(_0x0a9b('0x89')+_0x206334+'\x27');var _0x1506d6=[{'name':_0x206334}];if(!_['isEmpty'](_0x50c24b[_0x0a9b('0x16')]))_0x1506d6=_0x50c24b[_0x0a9b('0x16')];var _0x28b41f=[];for(var _0x13dfac=0x0;_0x13dfac<_0x1506d6['length'];_0x13dfac++){_0x28b41f[_0x0a9b('0x8a')](_0x5537ef[_0x0a9b('0x8b')][_0x0a9b('0x8c')]({'where':{'userProfileId':_0x3ca2bd[_0x0a9b('0x8d')]['id'],'name':_0x1506d6[_0x13dfac][_0x0a9b('0xc')]},'raw':!![]}));}return Promise[_0x0a9b('0x8e')](_0x28b41f)[_0x0a9b('0x6')](function(_0x243ec4){var _0x5a460d=_[_0x0a9b('0x3')](_0x243ec4,function(_0x1693c7){return _0x1693c7?_0x1693c7:undefined;});var _0x4abbdc=_[_0x0a9b('0x3')](_0x1506d6,[_0x0a9b('0x8f'),!![]]);var _0x354513=_[_0x0a9b('0x90')](_0x5a460d)&&_['isEmpty'](_0x4abbdc)?null:_[_0x0a9b('0x91')](_0x4abbdc,_0x5a460d);if(!_0x354513)return null;var _0x56e3cd=[];for(var _0x186ee7=0x0;_0x186ee7<_0x354513[_0x0a9b('0x92')];_0x186ee7++){var _0x55d5aa=_[_0x0a9b('0x8c')](_0x1506d6,function(_0x34a2ce){return _0x354513[_0x186ee7]?_0x34a2ce[_0x0a9b('0xc')]===_0x354513[_0x186ee7][_0x0a9b('0xc')]:null;});if(_0x55d5aa){if(_0x354513[_0x186ee7][_0x0a9b('0x8f')]){_0x56e3cd[_0x0a9b('0x8a')](_0x1ce674(_0x50c24b[_0x0a9b('0x12')],_0x354513[_0x186ee7]));}else{if(!_0x354513[_0x186ee7]['autoAssociation']){_0x56e3cd[_0x0a9b('0x8a')](_0x4b4e8c(_0x55d5aa,_0x354513[_0x186ee7],_0x50c24b[_0x0a9b('0x12')]));}else{if(_0x55d5aa[_0x0a9b('0xa')]){_0x56e3cd[_0x0a9b('0x8a')](_0x2da9cc(_0x55d5aa,_0x354513[_0x186ee7]));}}}}}return Promise['all'](_0x56e3cd);})['then'](function(_0x5ae0f8){var _0x4c1d03=_0x5ae0f8;var _0x53170b=null;if(_0x4c1d03){_0x53170b=_0x4c1d03[_0x0a9b('0x92')]===0x1?_0x4c1d03[0x0]:null;}if(!_0x53170b&&!_0x4c1d03)return _0x3414b3;var _0x5a3933=_0x5537ef[_0x50c24b[_0x0a9b('0x12')]][_0x0a9b('0x93')];_0x1e7efa[_0x0a9b('0xa')]=_[_0x0a9b('0x94')](_0x5a3933);_0x1e7efa['query']=_[_0x0a9b('0x94')](_0x3ca2bd[_0x0a9b('0x87')]);_0x1e7efa[_0x0a9b('0x95')]=_[_0x0a9b('0x96')](_0x1e7efa[_0x0a9b('0xa')],_0x1e7efa[_0x0a9b('0x87')]);_0x328523[_0x0a9b('0x97')]=_['intersection'](_0x1e7efa[_0x0a9b('0xa')],_0x45396a['fields'](_0x3ca2bd[_0x0a9b('0x87')]['fields']));_0x328523[_0x0a9b('0x97')]=_0x328523[_0x0a9b('0x97')]['length']?_0x328523['attributes']:_0x1e7efa['model'];if(!_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0x98')](_0x0a9b('0x99'))){_0x328523[_0x0a9b('0x9a')]=_0x45396a[_0x0a9b('0x9a')](_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0x9a')]);_0x328523['offset']=_0x45396a[_0x0a9b('0x9b')](_0x3ca2bd['query']['offset']);}_0x328523['order']=_0x45396a[_0x0a9b('0x9c')](_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0x9c')]);_0x328523[_0x0a9b('0x81')]=_0x45396a[_0x0a9b('0x95')](_[_0x0a9b('0x9d')](_0x3ca2bd[_0x0a9b('0x87')],_0x1e7efa[_0x0a9b('0x95')]));if(_0x3ca2bd['query'][_0x0a9b('0x3')]){_0x328523[_0x0a9b('0x81')]=_[_0x0a9b('0x9e')](_0x328523[_0x0a9b('0x81')],{'$or':_['map'](_0x5a3933,function(_0x5db334){if(_0x5db334[_0x0a9b('0x9f')][_0x0a9b('0xa0')]!=='VIRTUAL'){var _0x5a1410={};_0x5a1410[_0x5db334[_0x0a9b('0x4')]]={'$like':'%'+_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0x3')]+'%'};return _0x5a1410;}})});}var _0xd4a2a1=[];var _0x495c62=null;var _0x29003f={};if(_0x53170b){_0x495c62=_[_0x0a9b('0x8c')](_0x1506d6,[_0x0a9b('0xc'),_0x53170b[_0x0a9b('0xc')]]);if(_0x495c62[_0x0a9b('0x4')]){_0x29003f={};if(_0x50c24b['childModel']===_0x0a9b('0xf')){_0x29003f[_0x495c62['foreignKey']]=_[_0x0a9b('0x7')](_0x53170b[_0x0a9b('0xb')],'id');}else{_0x29003f[_0x495c62[_0x0a9b('0xa1')]]=_0x53170b['associatedResources'];}_0xd4a2a1['push'](_0x29003f);}else{_0x328523['where']['id']=_0x53170b[_0x0a9b('0xb')];}}else{for(var _0x5d506b=0x0;_0x5d506b<_0x4c1d03[_0x0a9b('0x92')];_0x5d506b++){_0x495c62=_[_0x0a9b('0x8c')](_0x1506d6,[_0x0a9b('0xc'),_0x4c1d03[_0x5d506b][_0x0a9b('0xc')]]);if(_0x495c62['field']){_0x29003f={};_0x29003f[_0x495c62['foreignKey']]=_0x4c1d03[_0x5d506b][_0x0a9b('0xb')];_0xd4a2a1[_0x0a9b('0x8a')](_0x29003f);}else{if(!_0x328523[_0x0a9b('0x81')]['id'])_0x328523[_0x0a9b('0x81')]['id']=[];_0x4c1d03[_0x5d506b][_0x0a9b('0xb')][_0x0a9b('0xa2')](function(_0x23314b){_0x328523[_0x0a9b('0x81')]['id'][_0x0a9b('0x8a')](_0x23314b);});}}}if(!_[_0x0a9b('0x90')](_0xd4a2a1)){_0x328523['where']=_[_0x0a9b('0x9e')](_0x328523[_0x0a9b('0x81')],{'$and':{'$or':_0xd4a2a1}});}_0x328523=_[_0x0a9b('0x9e')]({},_0x328523,_0x3ca2bd['options']);if(_0x53170b&&!_0x53170b[_0x0a9b('0xa3')]&&_0x50c24b[_0x0a9b('0x12')]==='AnalyticExtractedReport'){if(_0x3ca2bd['query'][_0x0a9b('0xa4')]){_0x328523[_0x0a9b('0xa5')]=[{'all':!![]}];}return _0x5537ef[_0x50c24b['childModel']]['findAll'](_0x328523)['then'](function(_0x56b01e){var _0x1b5d1d=[];_0x56b01e[_0x0a9b('0xa2')](function(_0x4152ba){var _0x2b8514;switch(_0x4152ba[_0x0a9b('0xa6')]){case _0x0a9b('0xa7'):_0x2b8514=_[_0x0a9b('0x8c')](_0x53170b[_0x0a9b('0xb')],function(_0x1d06de){return _0x1d06de['id']===_0x4152ba[_0x0a9b('0x74')]&&_0x1d06de[_0x0a9b('0x9f')]===_0x0a9b('0xa8');});break;case _0x0a9b('0xa9'):_0x2b8514=_[_0x0a9b('0x8c')](_0x53170b[_0x0a9b('0xb')],function(_0x4d41a0){return _0x4d41a0['id']===_0x4152ba['reportId']&&_0x4d41a0['type']===_0x0a9b('0xaa');});break;}if(_0x2b8514)_0x1b5d1d[_0x0a9b('0x8a')](_0x4152ba);});_0x3414b3[_0x0a9b('0xab')]=_0x1b5d1d[_0x0a9b('0x92')];_0x3414b3[_0x0a9b('0xac')]=_0x1b5d1d;return _0x3414b3;});}else{if(!_['isEmpty'](_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0xad')])){_0x328523['where']['id']=_0x328523[_0x0a9b('0x81')]['id']?_[_0x0a9b('0x96')](_0x328523[_0x0a9b('0x81')]['id'],_0x3ca2bd[_0x0a9b('0x87')]['ids']):_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0xad')];if(_0x3ca2bd['query']['customSorting']){_0x328523[_0x0a9b('0xae')]=_0x3ca2bd['query'][_0x0a9b('0xaf')];}}if(_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0xb0')]){_0x328523[_0x0a9b('0x81')]=_[_0x0a9b('0x9e')](_0x328523[_0x0a9b('0x81')],{'$and':_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0xb0')]});}return _0x5537ef[_0x50c24b['childModel']][_0x0a9b('0xab')]({'where':_0x328523[_0x0a9b('0x81')]})[_0x0a9b('0x6')](function(_0x387ef6){_0x3414b3[_0x0a9b('0xab')]=_0x387ef6;if(_0x3ca2bd[_0x0a9b('0x87')]['includeAll']){if(_0x50c24b[_0x0a9b('0x12')]===_0x0a9b('0xb1')){_0x328523[_0x0a9b('0xa5')]=[{'model':_0x5537ef[_0x0a9b('0x6a')],'as':'Tags','attributes':['id',_0x0a9b('0xc'),_0x0a9b('0xb2')],'required':_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0xb3')]?!![]:![]},{'model':_0x5537ef[_0x0a9b('0x6a')],'as':_0x0a9b('0xb4'),'attributes':['id',_0x0a9b('0xc'),_0x0a9b('0xb2')],'through':_0x3ca2bd[_0x0a9b('0x87')][_0x0a9b('0xb3')]?{'attributes':[],'where':{'TagId':_0x3ca2bd[_0x0a9b('0x87')]['tag']||undefined}}:{},'required':_0x3ca2bd['query'][_0x0a9b('0xb3')]?!![]:![]}];}else{_0x328523[_0x0a9b('0xa5')]=[{'all':!![]}];}}return _0x5537ef[_0x50c24b[_0x0a9b('0x12')]]['findAll'](_0x328523);})[_0x0a9b('0x6')](function(_0xa7fe96){_0x3414b3[_0x0a9b('0xac')]=_0xa7fe96;if(_0x206334===_0x0a9b('0x33')&&_0x3ca2bd[_0x0a9b('0x87')]['openTabs']===_0x0a9b('0xb5')){var _0x1b6595=[];for(var _0x1dc65d=0x0;_0x1dc65d<_0x3414b3['rows'][_0x0a9b('0x92')];_0x1dc65d++){_0x1b6595[_0x0a9b('0x8a')](_0x31e22e(_0x0a9b('0xb6'),_0x3414b3[_0x0a9b('0xac')][_0x1dc65d]['dataValues']));_0x1b6595[_0x0a9b('0x8a')](_0x31e22e(_0x0a9b('0xb7'),_0x3414b3[_0x0a9b('0xac')][_0x1dc65d][_0x0a9b('0xb8')]));_0x1b6595[_0x0a9b('0x8a')](_0x31e22e(_0x0a9b('0xb9'),_0x3414b3['rows'][_0x1dc65d][_0x0a9b('0xb8')]));_0x1b6595['push'](_0x31e22e(_0x0a9b('0xba'),_0x3414b3[_0x0a9b('0xac')][_0x1dc65d][_0x0a9b('0xb8')]));_0x1b6595[_0x0a9b('0x8a')](_0x31e22e(_0x0a9b('0xbb'),_0x3414b3[_0x0a9b('0xac')][_0x1dc65d]['dataValues']));_0x1b6595[_0x0a9b('0x8a')](_0x31e22e(_0x0a9b('0xbc'),_0x3414b3[_0x0a9b('0xac')][_0x1dc65d][_0x0a9b('0xb8')]));}return Promise['all'](_0x1b6595)[_0x0a9b('0x6')](function(){return _0x3414b3;});}return _0x3414b3;});}});}}});};
\ No newline at end of file
+var _0xbc12=['Tags','color','tag','openTabs','chat','dataValues','sms','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','squel','exports','models','filter','field','value','associatedResources','catch','findAll','then','map','name','resolve','resourceId','toLowerCase','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','parentSections','SquareProjects','projectName','JscriptyProject','contacts','CmContact','Lists','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','faxqueues','FaxQueue','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','voicemails','VoiceMail','VoiceRecording','membername','role','agent','telephone','VoiceQueues','queue','type','QueueCampaigns','VoiceQueue','outbound','musiconholds','VoiceMusicOnHold','chanspies','ivrcampaigns','Campaign','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','OpenchannelQueue','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','teams','Team','voicequeues','queuecampaigns','users','User','Users','admin','user','Agents','Telephones','zendeskaccounts','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','intervals','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','templates','Template','triggers','Trigger','Trunk','Variable','plugins','Plugin','extractedreports','AnalyticExtractedReport','Reports','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','ui.createdAt','from','user_has_','_interactions','where','sequelize','toString','OpenTabs','define','UserProfile','user_profiles','../../components/parsers/qs','query','raw','section','mergeResources','Invalid\x20section\x20\x27','length','push','UserProfileSection','params','all','ignore','isEmpty','union','find','model','rawAttributes','keys','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','filters','merge','key','VIRTUAL','foreignKey','forEach','options','autoAssociation','includeAll','include','default','reportId','DefaultReports','custom','rows','ids','customSorting','extraQueryConditions','count','Tag'];(function(_0x291d3f,_0x3ef99f){var _0x242080=function(_0x257705){while(--_0x257705){_0x291d3f['push'](_0x291d3f['shift']());}};_0x242080(++_0x3ef99f);}(_0xbc12,0x199));var _0x2bc1=function(_0xdbfe11,_0x5cfa1e){_0xdbfe11=_0xdbfe11-0x0;var _0x28438d=_0xbc12[_0xdbfe11];return _0x28438d;};'use strict';var _=require(_0x2bc1('0x0'));var attributes=require(_0x2bc1('0x1'));var squel=require(_0x2bc1('0x2'));module[_0x2bc1('0x3')]=function(_0xeef25c){var _0x134525=_0xeef25c[_0x2bc1('0x4')];function _0x124c25(_0x370344,_0x392078){return new Promise(function(_0x2c2bc5,_0x10fe39){if(!_0x392078)return _0x2c2bc5(null);var _0x3427c3=_0x392078[_0x2bc1('0x5')]?{[_0x392078['filter'][_0x2bc1('0x6')]]:_0x392078['filter'][_0x2bc1('0x7')]}:undefined;return _0x134525[_0x370344]['findAll']({'where':_0x3427c3,'raw':!![]})['then'](function(_0x1c0266){_0x392078[_0x2bc1('0x8')]=_['map'](_0x1c0266,'id');_0x2c2bc5(_0x392078);})[_0x2bc1('0x9')](function(_0x56cb7b){_0x10fe39(_0x56cb7b);});});}function _0x568c6c(_0x5a4a11,_0x30c616){return new Promise(function(_0x15601a,_0x293c92){var _0x30b356=_0x5a4a11[_0x2bc1('0x5')]?{[_0x5a4a11['filter'][_0x2bc1('0x6')]]:_0x5a4a11[_0x2bc1('0x5')][_0x2bc1('0x7')]}:undefined;return _0x134525[_0x5a4a11['model']][_0x2bc1('0xa')]({'where':_0x30b356,'raw':!![]})[_0x2bc1('0xb')](function(_0x12166d){_0x30c616[_0x2bc1('0x8')]=_[_0x2bc1('0xc')](_0x12166d,function(_0x237874){return _0x237874[_0x2bc1('0xd')];});_0x15601a(_0x30c616);})[_0x2bc1('0x9')](function(_0x2c5af4){_0x293c92(_0x2c5af4);});});}function _0x93e268(_0x42518c,_0x37ad1c,_0x117497){if(!_0x37ad1c)return Promise[_0x2bc1('0xe')](null);return new Promise(function(_0x58f845,_0x5117f1){return _0x134525['UserProfileResource'][_0x2bc1('0xa')]({'where':{'sectionId':_0x37ad1c['id']},'raw':!![]})[_0x2bc1('0xb')](function(_0x3a570f){if(_0x42518c[_0x2bc1('0x6')]&&_0x42518c['field']!=='id'){_0x37ad1c[_0x2bc1('0x8')]=_[_0x2bc1('0xc')](_0x3a570f,function(_0x1ef36d){return _0x1ef36d[_0x42518c[_0x2bc1('0x6')]];});}else{if(_0x117497==='AnalyticExtractedReport'){_0x37ad1c['associatedResources']=_[_0x2bc1('0xc')](_0x3a570f,function(_0x12b9be){return{'id':_0x12b9be[_0x2bc1('0xf')],'type':_0x12b9be['type']};});}else{_0x37ad1c[_0x2bc1('0x8')]=_[_0x2bc1('0xc')](_0x3a570f,function(_0x484db6){return _0x484db6['resourceId'];});}}_0x58f845(_0x37ad1c);})[_0x2bc1('0x9')](function(_0x22a67d){_0x5117f1(_0x22a67d);});});}function _0x3383da(_0x5c0706,_0x1b872c){var _0x1db349={'parentSections':[]};switch(_0x5c0706[_0x2bc1('0x10')]()){case'squareprojects':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x12');break;case _0x2bc1('0x13'):_0x1db349['childModel']=_0x2bc1('0x14');break;case'squarerecordings':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x15');_0x1db349[_0x2bc1('0x16')]=[{'name':_0x2bc1('0x17'),'field':'name','foreignKey':_0x2bc1('0x18')}];break;case'projects':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x19');break;case _0x2bc1('0x1a'):_0x1db349['childModel']=_0x2bc1('0x1b');_0x1db349[_0x2bc1('0x16')]=[{'name':_0x2bc1('0x1c'),'field':'id','foreignKey':'ListId'}];break;case _0x2bc1('0x1d'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x1e');break;case _0x2bc1('0x1f'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x20');break;case _0x2bc1('0x21'):_0x1db349['childModel']=_0x2bc1('0x22');break;case _0x2bc1('0x23'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x24');break;case _0x2bc1('0x25'):_0x1db349[_0x2bc1('0x11')]='ChatWebsite';break;case _0x2bc1('0x26'):_0x1db349['childModel']=_0x2bc1('0x27');break;case'faxaccounts':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x28');break;case _0x2bc1('0x29'):case _0x2bc1('0x2a'):case _0x2bc1('0x2b'):_0x1db349['childModel']=_0x2bc1('0x2c');break;case'contexts':_0x1db349['childModel']='VoiceContext';break;case _0x2bc1('0x2d'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x2e');break;case'voicerecordings':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x2f');_0x1db349['parentSections']=[{'name':'Agents','field':_0x2bc1('0xd'),'foreignKey':_0x2bc1('0x30'),'model':'User','filter':{'field':_0x2bc1('0x31'),'value':[_0x2bc1('0x32')]}},{'name':'Telephones','field':_0x2bc1('0xd'),'foreignKey':_0x2bc1('0x30'),'model':'User','filter':{'field':'role','value':[_0x2bc1('0x33')]}},{'name':_0x2bc1('0x34'),'field':_0x2bc1('0xd'),'foreignKey':_0x2bc1('0x35'),'model':'VoiceQueue','filter':{'field':_0x2bc1('0x36'),'value':['inbound']}},{'name':_0x2bc1('0x37'),'field':_0x2bc1('0xd'),'foreignKey':'queue','model':_0x2bc1('0x38'),'filter':{'field':_0x2bc1('0x36'),'value':[_0x2bc1('0x39')]}}];break;case _0x2bc1('0x3a'):_0x1db349['childModel']=_0x2bc1('0x3b');break;case _0x2bc1('0x3c'):_0x1db349[_0x2bc1('0x11')]='VoiceChanSpy';break;case'voiceprefixes':_0x1db349[_0x2bc1('0x11')]='VoicePrefix';break;case _0x2bc1('0x3d'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x3e');break;case'mailqueues':_0x1db349[_0x2bc1('0x11')]='MailQueue';break;case _0x2bc1('0x3f'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x40');break;case _0x2bc1('0x41'):_0x1db349['childModel']=_0x2bc1('0x42');break;case'openchannelqueues':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x43');break;case'openchannelaccounts':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x44');break;case _0x2bc1('0x45'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x46');break;case _0x2bc1('0x47'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x48');break;case _0x2bc1('0x49'):_0x1db349['childModel']=_0x2bc1('0x4a');break;case _0x2bc1('0x4b'):_0x1db349[_0x2bc1('0x11')]='WhatsappAccount';break;case _0x2bc1('0x4c'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x4d');break;case _0x2bc1('0x4e'):case _0x2bc1('0x4f'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x38');if(_0x1b872c){_0x1db349[_0x2bc1('0x16')]=[{'name':'VoiceQueues'},{'name':'QueueCampaigns'}];}break;case _0x2bc1('0x50'):case'agents':case'telephones':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x51');if(_0x1b872c){_0x1db349[_0x2bc1('0x16')]=[{'name':_0x2bc1('0x52'),'filter':{'field':_0x2bc1('0x31'),'value':[_0x2bc1('0x53'),_0x2bc1('0x54')]},'ignore':!![]},{'name':_0x2bc1('0x55')},{'name':_0x2bc1('0x56')}];}break;case _0x2bc1('0x57'):_0x1db349['childModel']='ZendeskAccount';break;case _0x2bc1('0x58'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x59');break;case'freshdeskaccounts':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x5a');break;case _0x2bc1('0x5b'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x5c');break;case'deskaccounts':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x5d');break;case _0x2bc1('0x5e'):_0x1db349['childModel']=_0x2bc1('0x5f');break;case _0x2bc1('0x60'):_0x1db349['childModel']=_0x2bc1('0x51');break;case _0x2bc1('0x61'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x62');break;case _0x2bc1('0x63'):_0x1db349['childModel']=_0x2bc1('0x64');break;case _0x2bc1('0x65'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x66');break;case _0x2bc1('0x67'):_0x1db349['childModel']='Interval';break;case _0x2bc1('0x68'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x69');break;case _0x2bc1('0x6a'):_0x1db349['childModel']=_0x2bc1('0x6b');break;case _0x2bc1('0x6c'):_0x1db349['childModel']=_0x2bc1('0x6d');break;case _0x2bc1('0x6e'):_0x1db349['childModel']='Tag';break;case _0x2bc1('0x6f'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x70');break;case _0x2bc1('0x71'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x72');break;case'trunks':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x73');break;case'variables':_0x1db349['childModel']=_0x2bc1('0x74');break;case _0x2bc1('0x75'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x76');break;case _0x2bc1('0x77'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x78');_0x1db349['parentSections']=[{'name':_0x2bc1('0x79'),'field':'id','foreignKey':'reportId'}];break;case _0x2bc1('0x7a'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x7b');break;}return _0x1db349;}function _0x172998(_0x2472c4,_0xc353cd){var _0x1eb759=_0x2472c4[_0x2bc1('0x7c')](0x0)[_0x2bc1('0x7d')]()+_0x2472c4[_0x2bc1('0x7e')](0x1);var _0x2bb262={'type':_0x134525[_0x2bc1('0x7f')][_0x2bc1('0x80')][_0x2bc1('0x81')],'raw':!![]};return new Promise(function(_0x2f0ca2,_0x31d611){var _0x3036af=squel['select']()['field']('ui.'+_0x1eb759+'InteractionId','id')[_0x2bc1('0x6')](_0x2bc1('0x82'))[_0x2bc1('0x83')](_0x2bc1('0x84')+_0x2472c4+_0x2bc1('0x85'),'ui')[_0x2bc1('0x86')]('ui.UserId\x20=\x20?',_0xc353cd['id']);return _0x134525[_0x2bc1('0x87')]['query'](_0x3036af[_0x2bc1('0x88')](),_0x2bb262)[_0x2bc1('0xb')](function(_0x2fa076){_0xc353cd[_0x1eb759+_0x2bc1('0x89')]=_0x2fa076;_0x2f0ca2(_0x2fa076);})[_0x2bc1('0x9')](function(_0x3d4a35){_0x31d611(_0x3d4a35);});});}return _0xeef25c[_0x2bc1('0x8a')](_0x2bc1('0x8b'),attributes,{'tableName':_0x2bc1('0x8c'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x4e8f27){var _0x56f24c=require(_0x2bc1('0x8d'));var _0x536408={'raw':_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0x8f')],'where':{}};var _0x5e0c3a={};var _0x537329={'count':0x0,'rows':[]};var _0x148500=_0x4e8f27['query'][_0x2bc1('0x90')];var _0x13e698=_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0x91')]||![];var _0x3da63e=_0x3383da(_0x148500,_0x13e698);if(!_0x3da63e[_0x2bc1('0x11')])throw new Error(_0x2bc1('0x92')+_0x148500+'\x27');var _0x329580=[{'name':_0x148500}];if(!_['isEmpty'](_0x3da63e[_0x2bc1('0x16')]))_0x329580=_0x3da63e[_0x2bc1('0x16')];var _0x55e102=[];for(var _0xadfaf8=0x0;_0xadfaf8<_0x329580[_0x2bc1('0x93')];_0xadfaf8++){_0x55e102[_0x2bc1('0x94')](_0x134525[_0x2bc1('0x95')]['find']({'where':{'userProfileId':_0x4e8f27[_0x2bc1('0x96')]['id'],'name':_0x329580[_0xadfaf8][_0x2bc1('0xd')]},'raw':!![]}));}return Promise[_0x2bc1('0x97')](_0x55e102)[_0x2bc1('0xb')](function(_0x32fc36){var _0x121cdc=_['filter'](_0x32fc36,function(_0x593b71){return _0x593b71?_0x593b71:undefined;});var _0x343cb3=_['filter'](_0x329580,[_0x2bc1('0x98'),!![]]);var _0x280587=_['isEmpty'](_0x121cdc)&&_[_0x2bc1('0x99')](_0x343cb3)?null:_[_0x2bc1('0x9a')](_0x343cb3,_0x121cdc);if(!_0x280587)return null;var _0x37cdef=[];for(var _0x1400be=0x0;_0x1400be<_0x280587['length'];_0x1400be++){var _0x2e63d1=_[_0x2bc1('0x9b')](_0x329580,function(_0x2bf305){return _0x280587[_0x1400be]?_0x2bf305['name']===_0x280587[_0x1400be][_0x2bc1('0xd')]:null;});if(_0x2e63d1){if(_0x280587[_0x1400be][_0x2bc1('0x98')]){_0x37cdef[_0x2bc1('0x94')](_0x124c25(_0x3da63e['childModel'],_0x280587[_0x1400be]));}else{if(!_0x280587[_0x1400be]['autoAssociation']){_0x37cdef[_0x2bc1('0x94')](_0x93e268(_0x2e63d1,_0x280587[_0x1400be],_0x3da63e[_0x2bc1('0x11')]));}else{if(_0x2e63d1[_0x2bc1('0x9c')]){_0x37cdef[_0x2bc1('0x94')](_0x568c6c(_0x2e63d1,_0x280587[_0x1400be]));}}}}}return Promise[_0x2bc1('0x97')](_0x37cdef);})['then'](function(_0x487d52){var _0x342dd3=_0x487d52;var _0x373d06=null;if(_0x342dd3){_0x373d06=_0x342dd3[_0x2bc1('0x93')]===0x1?_0x342dd3[0x0]:null;}if(!_0x373d06&&!_0x342dd3)return _0x537329;var _0x348c18=_0x134525[_0x3da63e['childModel']][_0x2bc1('0x9d')];_0x5e0c3a['model']=_[_0x2bc1('0x9e')](_0x348c18);_0x5e0c3a[_0x2bc1('0x8e')]=_[_0x2bc1('0x9e')](_0x4e8f27[_0x2bc1('0x8e')]);_0x5e0c3a['filters']=_[_0x2bc1('0x9f')](_0x5e0c3a[_0x2bc1('0x9c')],_0x5e0c3a[_0x2bc1('0x8e')]);_0x536408[_0x2bc1('0xa0')]=_[_0x2bc1('0x9f')](_0x5e0c3a[_0x2bc1('0x9c')],_0x56f24c[_0x2bc1('0xa1')](_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xa1')]));_0x536408['attributes']=_0x536408['attributes'][_0x2bc1('0x93')]?_0x536408[_0x2bc1('0xa0')]:_0x5e0c3a[_0x2bc1('0x9c')];if(!_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xa2')](_0x2bc1('0xa3'))){_0x536408['limit']=_0x56f24c[_0x2bc1('0xa4')](_0x4e8f27['query']['limit']);_0x536408[_0x2bc1('0xa5')]=_0x56f24c['offset'](_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xa5')]);}_0x536408[_0x2bc1('0xa6')]=_0x56f24c[_0x2bc1('0xa7')](_0x4e8f27[_0x2bc1('0x8e')]['sort']);_0x536408[_0x2bc1('0x86')]=_0x56f24c[_0x2bc1('0xa8')](_['pick'](_0x4e8f27['query'],_0x5e0c3a[_0x2bc1('0xa8')]));if(_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0x5')]){_0x536408[_0x2bc1('0x86')]=_[_0x2bc1('0xa9')](_0x536408[_0x2bc1('0x86')],{'$or':_[_0x2bc1('0xc')](_0x348c18,function(_0x43ad83){if(_0x43ad83[_0x2bc1('0x36')][_0x2bc1('0xaa')]!==_0x2bc1('0xab')){var _0x2d22cc={};_0x2d22cc[_0x43ad83[_0x2bc1('0x6')]]={'$like':'%'+_0x4e8f27['query'][_0x2bc1('0x5')]+'%'};return _0x2d22cc;}})});}var _0x5252ba=[];var _0x5bab48=null;var _0x5d3265={};if(_0x373d06){_0x5bab48=_['find'](_0x329580,[_0x2bc1('0xd'),_0x373d06[_0x2bc1('0xd')]]);if(_0x5bab48[_0x2bc1('0x6')]){_0x5d3265={};if(_0x3da63e[_0x2bc1('0x11')]==='AnalyticExtractedReport'){_0x5d3265[_0x5bab48[_0x2bc1('0xac')]]=_[_0x2bc1('0xc')](_0x373d06[_0x2bc1('0x8')],'id');}else{_0x5d3265[_0x5bab48[_0x2bc1('0xac')]]=_0x373d06[_0x2bc1('0x8')];}_0x5252ba[_0x2bc1('0x94')](_0x5d3265);}else{_0x536408[_0x2bc1('0x86')]['id']=_0x373d06['associatedResources'];}}else{for(var _0x58e761=0x0;_0x58e761<_0x342dd3['length'];_0x58e761++){_0x5bab48=_[_0x2bc1('0x9b')](_0x329580,['name',_0x342dd3[_0x58e761][_0x2bc1('0xd')]]);if(_0x5bab48[_0x2bc1('0x6')]){_0x5d3265={};_0x5d3265[_0x5bab48[_0x2bc1('0xac')]]=_0x342dd3[_0x58e761][_0x2bc1('0x8')];_0x5252ba[_0x2bc1('0x94')](_0x5d3265);}else{if(!_0x536408[_0x2bc1('0x86')]['id'])_0x536408['where']['id']=[];_0x342dd3[_0x58e761][_0x2bc1('0x8')][_0x2bc1('0xad')](function(_0x113093){_0x536408[_0x2bc1('0x86')]['id'][_0x2bc1('0x94')](_0x113093);});}}}if(!_[_0x2bc1('0x99')](_0x5252ba)){_0x536408[_0x2bc1('0x86')]=_[_0x2bc1('0xa9')](_0x536408[_0x2bc1('0x86')],{'$and':{'$or':_0x5252ba}});}_0x536408=_[_0x2bc1('0xa9')]({},_0x536408,_0x4e8f27[_0x2bc1('0xae')]);if(_0x373d06&&!_0x373d06[_0x2bc1('0xaf')]&&_0x3da63e[_0x2bc1('0x11')]==='AnalyticExtractedReport'){if(_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb0')]){_0x536408[_0x2bc1('0xb1')]=[{'all':!![]}];}return _0x134525[_0x3da63e['childModel']][_0x2bc1('0xa')](_0x536408)[_0x2bc1('0xb')](function(_0x53bfc9){var _0x41b671=[];_0x53bfc9['forEach'](function(_0xb7db8b){var _0x2fb198;switch(_0xb7db8b['reportType']){case _0x2bc1('0xb2'):_0x2fb198=_['find'](_0x373d06[_0x2bc1('0x8')],function(_0x45773d){return _0x45773d['id']===_0xb7db8b[_0x2bc1('0xb3')]&&_0x45773d[_0x2bc1('0x36')]===_0x2bc1('0xb4');});break;case _0x2bc1('0xb5'):_0x2fb198=_[_0x2bc1('0x9b')](_0x373d06[_0x2bc1('0x8')],function(_0x1c8c7a){return _0x1c8c7a['id']===_0xb7db8b[_0x2bc1('0xb3')]&&_0x1c8c7a[_0x2bc1('0x36')]==='CustomReports';});break;}if(_0x2fb198)_0x41b671[_0x2bc1('0x94')](_0xb7db8b);});_0x537329['count']=_0x41b671[_0x2bc1('0x93')];_0x537329[_0x2bc1('0xb6')]=_0x41b671;return _0x537329;});}else{if(!_[_0x2bc1('0x99')](_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb7')])){_0x536408['where']['id']=_0x536408['where']['id']?_[_0x2bc1('0x9f')](_0x536408[_0x2bc1('0x86')]['id'],_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb7')]):_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb7')];if(_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb8')]){_0x536408[_0x2bc1('0xa6')]=_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb8')];}}if(_0x4e8f27[_0x2bc1('0x8e')]['extraQueryConditions']){_0x536408['where']=_[_0x2bc1('0xa9')](_0x536408['where'],{'$and':_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb9')]});}return _0x134525[_0x3da63e[_0x2bc1('0x11')]]['count']({'where':_0x536408[_0x2bc1('0x86')]})[_0x2bc1('0xb')](function(_0x23d85a){_0x537329[_0x2bc1('0xba')]=_0x23d85a;if(_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb0')]){if(_0x3da63e['childModel']===_0x2bc1('0x1b')){_0x536408[_0x2bc1('0xb1')]=[{'model':_0x134525[_0x2bc1('0xbb')],'as':_0x2bc1('0xbc'),'attributes':['id',_0x2bc1('0xd'),_0x2bc1('0xbd')],'required':_0x4e8f27['query'][_0x2bc1('0xbe')]?!![]:![]},{'model':_0x134525['Tag'],'as':'ThroughTags','attributes':['id','name','color'],'through':_0x4e8f27[_0x2bc1('0x8e')]['tag']?{'attributes':[],'where':{'TagId':_0x4e8f27[_0x2bc1('0x8e')]['tag']||undefined}}:{},'required':_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xbe')]?!![]:![]}];}else{_0x536408[_0x2bc1('0xb1')]=[{'all':!![]}];}}return _0x134525[_0x3da63e[_0x2bc1('0x11')]]['findAll'](_0x536408);})[_0x2bc1('0xb')](function(_0x5c67b2){_0x537329[_0x2bc1('0xb6')]=_0x5c67b2;if(_0x148500===_0x2bc1('0x55')&&_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xbf')]==='true'){var _0x34c06a=[];for(var _0x111e48=0x0;_0x111e48<_0x537329['rows'][_0x2bc1('0x93')];_0x111e48++){_0x34c06a[_0x2bc1('0x94')](_0x172998(_0x2bc1('0xc0'),_0x537329['rows'][_0x111e48][_0x2bc1('0xc1')]));_0x34c06a['push'](_0x172998(_0x2bc1('0xc2'),_0x537329['rows'][_0x111e48]['dataValues']));_0x34c06a[_0x2bc1('0x94')](_0x172998(_0x2bc1('0xc3'),_0x537329[_0x2bc1('0xb6')][_0x111e48][_0x2bc1('0xc1')]));_0x34c06a[_0x2bc1('0x94')](_0x172998(_0x2bc1('0xc4'),_0x537329[_0x2bc1('0xb6')][_0x111e48][_0x2bc1('0xc1')]));_0x34c06a[_0x2bc1('0x94')](_0x172998(_0x2bc1('0xc5'),_0x537329[_0x2bc1('0xb6')][_0x111e48]['dataValues']));_0x34c06a['push'](_0x172998(_0x2bc1('0xc6'),_0x537329[_0x2bc1('0xb6')][_0x111e48]['dataValues']));}return Promise[_0x2bc1('0x97')](_0x34c06a)[_0x2bc1('0xb')](function(){return _0x537329;});}return _0x537329;});}});}}});};
\ No newline at end of file
index 9d0aa7b..a2c3cde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4253=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./userProfile.socket','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4253,0x14c));var _0x3425=function(_0x537fda,_0x1dd82d){_0x537fda=_0x537fda-0x0;var _0x27d1e9=_0x4253[_0x537fda];return _0x27d1e9;};'use strict';var _=require(_0x3425('0x0'));var util=require(_0x3425('0x1'));var moment=require('moment');var BPromise=require(_0x3425('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3425('0x3'));var db=require(_0x3425('0x4'))['db'];var utils=require(_0x3425('0x5'));var logger=require(_0x3425('0x6'))(_0x3425('0x7'));var config=require(_0x3425('0x8'));var jayson=require(_0x3425('0x9'));var client=jayson[_0x3425('0xa')][_0x3425('0xb')]({'port':0x232a});config['redis']=_[_0x3425('0xc')](config[_0x3425('0xd')],{'host':_0x3425('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3425('0xd')]));require(_0x3425('0xf'))['register'](socket);function respondWithRpcPromise(_0x21c54d,_0x562e27,_0x5bcbf0){return new BPromise(function(_0x528436,_0x196d62){return client[_0x3425('0x10')](_0x21c54d,_0x5bcbf0)[_0x3425('0x11')](function(_0x5788e7){logger[_0x3425('0x12')](_0x3425('0x13'),_0x562e27,_0x3425('0x14'));logger['debug'](_0x3425('0x15'),_0x562e27,_0x3425('0x14'),JSON[_0x3425('0x16')](_0x5788e7));if(_0x5788e7[_0x3425('0x17')]){if(_0x5788e7[_0x3425('0x17')][_0x3425('0x18')]===0x1f4){logger[_0x3425('0x17')]('UserProfile,\x20%s,\x20%s',_0x562e27,_0x5788e7[_0x3425('0x17')]['message']);return _0x196d62(_0x5788e7[_0x3425('0x17')][_0x3425('0x19')]);}logger['error'](_0x3425('0x13'),_0x562e27,_0x5788e7[_0x3425('0x17')]['message']);return _0x528436(_0x5788e7[_0x3425('0x17')]['message']);}else{logger[_0x3425('0x12')](_0x3425('0x13'),_0x562e27,_0x3425('0x14'));_0x528436(_0x5788e7[_0x3425('0x1a')]['message']);}})[_0x3425('0x1b')](function(_0x5a5876){logger[_0x3425('0x17')](_0x3425('0x13'),_0x562e27,_0x5a5876);_0x196d62(_0x5a5876);});});}
\ No newline at end of file
+var _0xc1c6=['./userProfile.socket','register','then','info','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfile,\x20%s,\x20%s','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','defaults','redis','localhost','socket.io-emitter'];(function(_0x163a12,_0x55fd8e){var _0x2cb6f8=function(_0x3ba84b){while(--_0x3ba84b){_0x163a12['push'](_0x163a12['shift']());}};_0x2cb6f8(++_0x55fd8e);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x43d03d,_0x19c9e5){_0x43d03d=_0x43d03d-0x0;var _0xe10e08=_0xc1c6[_0x43d03d];return _0xe10e08;};'use strict';var _=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var moment=require(_0x6c1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x6c1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6c1c('0x4'))['db'];var utils=require(_0x6c1c('0x5'));var logger=require(_0x6c1c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6c1c('0x7'));var client=jayson['client'][_0x6c1c('0x8')]({'port':0x232a});config['redis']=_[_0x6c1c('0x9')](config[_0x6c1c('0xa')],{'host':_0x6c1c('0xb'),'port':0x18eb});var socket=require(_0x6c1c('0xc'))(new Redis(config['redis']));require(_0x6c1c('0xd'))[_0x6c1c('0xe')](socket);function respondWithRpcPromise(_0x524d21,_0x147c7b,_0x36275f){return new BPromise(function(_0xb3bd12,_0x1137e8){return client['request'](_0x524d21,_0x36275f)[_0x6c1c('0xf')](function(_0x2a4fd4){logger[_0x6c1c('0x10')]('UserProfile,\x20%s,\x20%s',_0x147c7b,_0x6c1c('0x11'));logger[_0x6c1c('0x12')](_0x6c1c('0x13'),_0x147c7b,'request\x20sent',JSON[_0x6c1c('0x14')](_0x2a4fd4));if(_0x2a4fd4['error']){if(_0x2a4fd4[_0x6c1c('0x15')][_0x6c1c('0x16')]===0x1f4){logger[_0x6c1c('0x15')](_0x6c1c('0x17'),_0x147c7b,_0x2a4fd4[_0x6c1c('0x15')][_0x6c1c('0x18')]);return _0x1137e8(_0x2a4fd4[_0x6c1c('0x15')][_0x6c1c('0x18')]);}logger[_0x6c1c('0x15')]('UserProfile,\x20%s,\x20%s',_0x147c7b,_0x2a4fd4[_0x6c1c('0x15')][_0x6c1c('0x18')]);return _0xb3bd12(_0x2a4fd4['error'][_0x6c1c('0x18')]);}else{logger[_0x6c1c('0x10')]('UserProfile,\x20%s,\x20%s',_0x147c7b,_0x6c1c('0x11'));_0xb3bd12(_0x2a4fd4['result'][_0x6c1c('0x18')]);}})[_0x6c1c('0x19')](function(_0x5a3bb7){logger[_0x6c1c('0x15')]('UserProfile,\x20%s,\x20%s',_0x147c7b,_0x5a3bb7);_0x1137e8(_0x5a3bb7);});});}
\ No newline at end of file
index db570bf..36ff593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0021=['./userProfile.events','save','remove','emit'];(function(_0x4ee2b9,_0x1c7cc0){var _0x1e9d13=function(_0xbf4d5c){while(--_0xbf4d5c){_0x4ee2b9['push'](_0x4ee2b9['shift']());}};_0x1e9d13(++_0x1c7cc0);}(_0x0021,0x1d4));var _0x1002=function(_0x4a29a9,_0x58cd04){_0x4a29a9=_0x4a29a9-0x0;var _0x386570=_0x0021[_0x4a29a9];return _0x386570;};'use strict';var UserProfileEvents=require(_0x1002('0x0'));var events=[_0x1002('0x1'),_0x1002('0x2'),'update'];function createListener(_0x1a95c0,_0x356f52){return function(_0x221a44){_0x356f52[_0x1002('0x3')](_0x1a95c0,_0x221a44);};}function removeListener(_0x211cb9,_0x21e793){return function(){UserProfileEvents['removeListener'](_0x211cb9,_0x21e793);};}exports['register']=function(_0x35b34f){for(var _0x1da191=0x0,_0x152e40=events['length'];_0x1da191<_0x152e40;_0x1da191++){var _0x4639ba=events[_0x1da191];var _0x40f615=createListener('userProfile:'+_0x4639ba,_0x35b34f);UserProfileEvents['on'](_0x4639ba,_0x40f615);}};
\ No newline at end of file
+var _0x3ed8=['register','length','./userProfile.events','save','remove','emit','removeListener'];(function(_0x4d3850,_0x181ffa){var _0x3e8fff=function(_0x55dd94){while(--_0x55dd94){_0x4d3850['push'](_0x4d3850['shift']());}};_0x3e8fff(++_0x181ffa);}(_0x3ed8,0x113));var _0x83ed=function(_0x2f62aa,_0x108e95){_0x2f62aa=_0x2f62aa-0x0;var _0x1a341f=_0x3ed8[_0x2f62aa];return _0x1a341f;};'use strict';var UserProfileEvents=require(_0x83ed('0x0'));var events=[_0x83ed('0x1'),_0x83ed('0x2'),'update'];function createListener(_0x476dc9,_0x51da66){return function(_0x18c54d){_0x51da66[_0x83ed('0x3')](_0x476dc9,_0x18c54d);};}function removeListener(_0x417e09,_0x2ae1a8){return function(){UserProfileEvents[_0x83ed('0x4')](_0x417e09,_0x2ae1a8);};}exports[_0x83ed('0x5')]=function(_0x1b9a7d){for(var _0x7ec7f5=0x0,_0x39241e=events[_0x83ed('0x6')];_0x7ec7f5<_0x39241e;_0x7ec7f5++){var _0x54121b=events[_0x7ec7f5];var _0x4dba38=createListener('userProfile:'+_0x54121b,_0x1b9a7d);UserProfileEvents['on'](_0x54121b,_0x4dba38);}};
\ No newline at end of file
index 4fd9dbe..ab0e582 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf389=['/describe','describe','/:id','show','post','create','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','isAuthenticated','index','get'];(function(_0x45948d,_0x5b21e0){var _0x531cb1=function(_0x3bca58){while(--_0x3bca58){_0x45948d['push'](_0x45948d['shift']());}};_0x531cb1(++_0x5b21e0);}(_0xf389,0x11d));var _0x9f38=function(_0xce7312,_0x4e77e9){_0xce7312=_0xce7312-0x0;var _0x4fb4ac=_0xf389[_0xce7312];return _0x4fb4ac;};'use strict';var multer=require(_0x9f38('0x0'));var util=require(_0x9f38('0x1'));var path=require(_0x9f38('0x2'));var timeout=require(_0x9f38('0x3'));var express=require(_0x9f38('0x4'));var router=express[_0x9f38('0x5')]();var fs_extra=require(_0x9f38('0x6'));var auth=require(_0x9f38('0x7'));var interaction=require(_0x9f38('0x8'));var config=require(_0x9f38('0x9'));var controller=require(_0x9f38('0xa'));router['get']('/',auth[_0x9f38('0xb')](),controller[_0x9f38('0xc')]);router[_0x9f38('0xd')](_0x9f38('0xe'),auth['isAuthenticated'](),controller[_0x9f38('0xf')]);router['get'](_0x9f38('0x10'),auth[_0x9f38('0xb')](),controller[_0x9f38('0x11')]);router[_0x9f38('0x12')]('/',auth[_0x9f38('0xb')](),controller[_0x9f38('0x13')]);router['put'](_0x9f38('0x10'),auth[_0x9f38('0xb')](),controller[_0x9f38('0x14')]);router[_0x9f38('0x15')](_0x9f38('0x10'),auth[_0x9f38('0xb')](),controller[_0x9f38('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xfc65=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','exports','util','path','connect-timeout'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xfc65,0x97));var _0x5fc6=function(_0x46f282,_0x300c8b){_0x46f282=_0x46f282-0x0;var _0x5d4ae6=_0xfc65[_0x46f282];return _0x5d4ae6;};'use strict';var multer=require('multer');var util=require(_0x5fc6('0x0'));var path=require(_0x5fc6('0x1'));var timeout=require(_0x5fc6('0x2'));var express=require(_0x5fc6('0x3'));var router=express[_0x5fc6('0x4')]();var fs_extra=require(_0x5fc6('0x5'));var auth=require(_0x5fc6('0x6'));var interaction=require(_0x5fc6('0x7'));var config=require(_0x5fc6('0x8'));var controller=require(_0x5fc6('0x9'));router[_0x5fc6('0xa')]('/',auth[_0x5fc6('0xb')](),controller[_0x5fc6('0xc')]);router[_0x5fc6('0xa')](_0x5fc6('0xd'),auth[_0x5fc6('0xb')](),controller[_0x5fc6('0xe')]);router[_0x5fc6('0xa')](_0x5fc6('0xf'),auth['isAuthenticated'](),controller[_0x5fc6('0x10')]);router[_0x5fc6('0x11')]('/',auth[_0x5fc6('0xb')](),controller[_0x5fc6('0x12')]);router[_0x5fc6('0x13')](_0x5fc6('0xf'),auth[_0x5fc6('0xb')](),controller['update']);router[_0x5fc6('0x14')]('/:id',auth[_0x5fc6('0xb')](),controller['destroy']);module[_0x5fc6('0x15')]=router;
\ No newline at end of file
index 2b7213e..bd37c21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5717=['INTEGER','exports','STRING'];(function(_0x3321d7,_0x5f5681){var _0x44f518=function(_0x469820){while(--_0x469820){_0x3321d7['push'](_0x3321d7['shift']());}};_0x44f518(++_0x5f5681);}(_0x5717,0x112));var _0x7571=function(_0x32392f,_0x426580){_0x32392f=_0x32392f-0x0;var _0x6eb431=_0x5717[_0x32392f];return _0x6eb431;};'use strict';var Sequelize=require('sequelize');module[_0x7571('0x0')]={'name':{'type':Sequelize[_0x7571('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x7571('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7571('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x3caf=['sequelize','INTEGER'];(function(_0x261b6c,_0x2beb34){var _0xf8a24e=function(_0x56418c){while(--_0x56418c){_0x261b6c['push'](_0x261b6c['shift']());}};_0xf8a24e(++_0x2beb34);}(_0x3caf,0x148));var _0xf3ca=function(_0x225838,_0x29b914){_0x225838=_0x225838-0x0;var _0x1da96b=_0x3caf[_0x225838];return _0x1da96b;};'use strict';var Sequelize=require(_0xf3ca('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0xf3ca('0x1')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index a1d1ec5..f11953e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['options','include','findAll','rows','show','length','includeAll','merge','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL'];(function(_0xe45118,_0x5dffbc){var _0x15e15d=function(_0x17eaec){while(--_0x17eaec){_0xe45118['push'](_0xe45118['shift']());}};_0x15e15d(++_0x5dffbc);}(_0x687b,0x14a));var _0xb687=function(_0x16d2c7,_0x5bf3c0){_0x16d2c7=_0x16d2c7-0x0;var _0x1c9a0a=_0x687b[_0x16d2c7];return _0x1c9a0a;};'use strict';var emlformat=require(_0xb687('0x0'));var rimraf=require(_0xb687('0x1'));var zipdir=require(_0xb687('0x2'));var jsonpatch=require(_0xb687('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb687('0x4'));var Mustache=require(_0xb687('0x5'));var util=require(_0xb687('0x6'));var path=require(_0xb687('0x7'));var sox=require(_0xb687('0x8'));var csv=require(_0xb687('0x9'));var ejs=require(_0xb687('0xa'));var fs=require('fs');var fs_extra=require(_0xb687('0xb'));var _=require(_0xb687('0xc'));var squel=require(_0xb687('0xd'));var crypto=require('crypto');var jsforce=require(_0xb687('0xe'));var deskjs=require(_0xb687('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb687('0x10'));var Papa=require(_0xb687('0x11'));var Redis=require(_0xb687('0x12'));var authService=require(_0xb687('0x13'));var qs=require(_0xb687('0x14'));var as=require(_0xb687('0x15'));var hardwareService=require(_0xb687('0x16'));var logger=require(_0xb687('0x17'))(_0xb687('0x18'));var utils=require('../../config/utils');var config=require(_0xb687('0x19'));var licenseUtil=require(_0xb687('0x1a'));var db=require(_0xb687('0x1b'))['db'];function respondWithStatusCode(_0x12a0be,_0x4f9c19){_0x4f9c19=_0x4f9c19||0xcc;return function(_0x4c97ed){if(_0x4c97ed){return _0x12a0be[_0xb687('0x1c')](_0x4f9c19);}return _0x12a0be[_0xb687('0x1d')](_0x4f9c19)['end']();};}function respondWithResult(_0x108fd0,_0x2f1ac0){_0x2f1ac0=_0x2f1ac0||0xc8;return function(_0x1f1f35){if(_0x1f1f35){return _0x108fd0[_0xb687('0x1d')](_0x2f1ac0)[_0xb687('0x1e')](_0x1f1f35);}};}function respondWithFilteredResult(_0x3ab914,_0x30622f){return function(_0x141375){if(_0x141375){var _0x263085=typeof _0x30622f[_0xb687('0x1f')]===_0xb687('0x20')&&typeof _0x30622f[_0xb687('0x21')]==='undefined';var _0x214b06=_0x141375[_0xb687('0x22')];var _0x30d370=_0x263085?0x0:_0x30622f['offset'];var _0x48958d=_0x263085?_0x141375[_0xb687('0x22')]:_0x30622f[_0xb687('0x1f')]+_0x30622f[_0xb687('0x21')];var _0x4b593b;if(_0x48958d>=_0x214b06){_0x48958d=_0x214b06;_0x4b593b=0xc8;}else{_0x4b593b=0xce;}_0x3ab914[_0xb687('0x1d')](_0x4b593b);return _0x3ab914['set'](_0xb687('0x23'),_0x30d370+'-'+_0x48958d+'/'+_0x214b06)[_0xb687('0x1e')](_0x141375);}return null;};}function patchUpdates(_0x170dc0){return function(_0x44bd0b){try{jsonpatch['apply'](_0x44bd0b,_0x170dc0,!![]);}catch(_0x3a73d5){return BPromise['reject'](_0x3a73d5);}return _0x44bd0b[_0xb687('0x24')]();};}function saveUpdates(_0x90e892,_0x274241){return function(_0x546fde){if(_0x546fde){return _0x546fde[_0xb687('0x25')](_0x90e892)[_0xb687('0x26')](function(_0xa95e91){return _0xa95e91;});}return null;};}function removeEntity(_0x16cdcb,_0xbf6c58){return function(_0x38866c){if(_0x38866c){return _0x38866c[_0xb687('0x27')]()[_0xb687('0x26')](function(){_0x16cdcb['status'](0xcc)[_0xb687('0x28')]();});}};}function handleEntityNotFound(_0x129347,_0x1c1585){return function(_0x1a0261){if(!_0x1a0261){_0x129347[_0xb687('0x1c')](0x194);}return _0x1a0261;};}function handleError(_0x4136c9,_0x17ff2b){_0x17ff2b=_0x17ff2b||0x1f4;return function(_0x3cb2f2){logger[_0xb687('0x29')](_0x3cb2f2[_0xb687('0x2a')]);if(_0x3cb2f2['name']){delete _0x3cb2f2[_0xb687('0x2b')];}_0x4136c9[_0xb687('0x1d')](_0x17ff2b)[_0xb687('0x2c')](_0x3cb2f2);};}exports[_0xb687('0x2d')]=function(_0x2e5c8d,_0x173c58){var _0x4e9a06={},_0x28b69a={},_0x5143af={'count':0x0,'rows':[]};var _0x360429=_[_0xb687('0x2e')](db[_0xb687('0x2f')][_0xb687('0x30')],function(_0x1ad3ef){return{'name':_0x1ad3ef[_0xb687('0x31')],'type':_0x1ad3ef[_0xb687('0x32')]['key']};});_0x28b69a[_0xb687('0x33')]=_[_0xb687('0x2e')](_0x360429,_0xb687('0x2b'));_0x28b69a[_0xb687('0x34')]=_[_0xb687('0x35')](_0x2e5c8d[_0xb687('0x34')]);_0x28b69a[_0xb687('0x36')]=_[_0xb687('0x37')](_0x28b69a[_0xb687('0x33')],_0x28b69a[_0xb687('0x34')]);_0x4e9a06[_0xb687('0x38')]=_['intersection'](_0x28b69a['model'],qs[_0xb687('0x39')](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x39')]));_0x4e9a06[_0xb687('0x38')]=_0x4e9a06['attributes']['length']?_0x4e9a06[_0xb687('0x38')]:_0x28b69a[_0xb687('0x33')];if(!_0x2e5c8d['query'][_0xb687('0x3a')](_0xb687('0x3b'))){_0x4e9a06['limit']=qs[_0xb687('0x21')](_0x2e5c8d['query'][_0xb687('0x21')]);_0x4e9a06[_0xb687('0x1f')]=qs[_0xb687('0x1f')](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x1f')]);}_0x4e9a06[_0xb687('0x3c')]=qs['sort'](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x3d')]);_0x4e9a06[_0xb687('0x3e')]=qs[_0xb687('0x36')](_['pick'](_0x2e5c8d[_0xb687('0x34')],_0x28b69a[_0xb687('0x36')]),_0x360429);if(_0x2e5c8d[_0xb687('0x34')][_0xb687('0x3f')]){_0x4e9a06[_0xb687('0x3e')]=_['merge'](_0x4e9a06[_0xb687('0x3e')],{'$or':_[_0xb687('0x2e')](_0x360429,function(_0x24c013){if(_0x24c013[_0xb687('0x32')]!==_0xb687('0x40')){var _0x29cf09={};_0x29cf09[_0x24c013['name']]={'$like':'%'+_0x2e5c8d['query'][_0xb687('0x3f')]+'%'};return _0x29cf09;}})});}_0x4e9a06=_['merge']({},_0x4e9a06,_0x2e5c8d[_0xb687('0x41')]);var _0x2f4550={'where':_0x4e9a06['where']};return db[_0xb687('0x2f')][_0xb687('0x22')](_0x2f4550)['then'](function(_0x394b56){_0x5143af[_0xb687('0x22')]=_0x394b56;if(_0x2e5c8d[_0xb687('0x34')]['includeAll']){_0x4e9a06[_0xb687('0x42')]=[{'all':!![]}];}return db[_0xb687('0x2f')][_0xb687('0x43')](_0x4e9a06);})[_0xb687('0x26')](function(_0x140388){_0x5143af[_0xb687('0x44')]=_0x140388;return _0x5143af;})[_0xb687('0x26')](respondWithFilteredResult(_0x173c58,_0x4e9a06))['catch'](handleError(_0x173c58,null));};exports[_0xb687('0x45')]=function(_0x4cf6ad,_0x50fdb7){var _0xa3a9e0={'raw':![],'where':{'id':_0x4cf6ad['params']['id']}},_0x430364={};_0x430364[_0xb687('0x33')]=_['keys'](db[_0xb687('0x2f')][_0xb687('0x30')]);_0x430364['query']=_[_0xb687('0x35')](_0x4cf6ad[_0xb687('0x34')]);_0x430364['filters']=_[_0xb687('0x37')](_0x430364[_0xb687('0x33')],_0x430364[_0xb687('0x34')]);_0xa3a9e0[_0xb687('0x38')]=_[_0xb687('0x37')](_0x430364[_0xb687('0x33')],qs[_0xb687('0x39')](_0x4cf6ad[_0xb687('0x34')][_0xb687('0x39')]));_0xa3a9e0[_0xb687('0x38')]=_0xa3a9e0[_0xb687('0x38')][_0xb687('0x46')]?_0xa3a9e0['attributes']:_0x430364[_0xb687('0x33')];if(_0x4cf6ad['query'][_0xb687('0x47')]){_0xa3a9e0[_0xb687('0x42')]=[{'all':!![]}];}_0xa3a9e0=_[_0xb687('0x48')]({},_0xa3a9e0,_0x4cf6ad[_0xb687('0x41')]);return db[_0xb687('0x2f')][_0xb687('0x49')](_0xa3a9e0)['then'](handleEntityNotFound(_0x50fdb7,null))['then'](respondWithResult(_0x50fdb7,null))[_0xb687('0x4a')](handleError(_0x50fdb7,null));};exports[_0xb687('0x4b')]=function(_0x40558a,_0x4f3069){return db['UserProfileResource'][_0xb687('0x4b')](_0x40558a[_0xb687('0x4c')],{})[_0xb687('0x26')](respondWithResult(_0x4f3069,0xc9))[_0xb687('0x4a')](handleError(_0x4f3069,null));};exports['update']=function(_0x33a0b0,_0xfc4c5f){if(_0x33a0b0[_0xb687('0x4c')]['id']){delete _0x33a0b0[_0xb687('0x4c')]['id'];}return db['UserProfileResource']['find']({'where':{'id':_0x33a0b0[_0xb687('0x4d')]['id']}})[_0xb687('0x26')](handleEntityNotFound(_0xfc4c5f,null))[_0xb687('0x26')](saveUpdates(_0x33a0b0['body'],null))['then'](respondWithResult(_0xfc4c5f,null))[_0xb687('0x4a')](handleError(_0xfc4c5f,null));};exports[_0xb687('0x27')]=function(_0xd5bdb7,_0x22e618){return db[_0xb687('0x2f')][_0xb687('0x49')]({'where':{'id':_0xd5bdb7[_0xb687('0x4d')]['id']}})[_0xb687('0x26')](handleEntityNotFound(_0x22e618,null))['then'](removeEntity(_0x22e618,null))[_0xb687('0x4a')](handleError(_0x22e618,null));};exports[_0xb687('0x4e')]=function(_0x2342f6,_0x4f5784){return db['UserProfileResource']['describe']()['then'](respondWithResult(_0x4f5784,null))[_0xb687('0x4a')](handleError(_0x4f5784,null));};
\ No newline at end of file
+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(_0x11f226,_0x491e30){var _0x30be77=function(_0x2049bd){while(--_0x2049bd){_0x11f226['push'](_0x11f226['shift']());}};_0x30be77(++_0x491e30);}(_0xba34,0x119));var _0x4ba3=function(_0x11d785,_0x162126){_0x11d785=_0x11d785-0x0;var _0x2dfb30=_0xba34[_0x11d785];return _0x2dfb30;};'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
index 1548abf..ebf3881 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e56=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash'];(function(_0x1bb812,_0x23eacc){var _0x372adb=function(_0x5ad456){while(--_0x5ad456){_0x1bb812['push'](_0x1bb812['shift']());}};_0x372adb(++_0x23eacc);}(_0x7e56,0x1db));var _0x67e5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7e56[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x67e5('0x0'));var util=require('util');var logger=require(_0x67e5('0x1'))(_0x67e5('0x2'));var moment=require(_0x67e5('0x3'));var BPromise=require(_0x67e5('0x4'));var rp=require(_0x67e5('0x5'));var fs=require('fs');var path=require(_0x67e5('0x6'));var rimraf=require('rimraf');var config=require(_0x67e5('0x7'));var attributes=require('./userProfileResource.attributes');module[_0x67e5('0x8')]=function(_0x5bf20b,_0x13dc93){return _0x5bf20b[_0x67e5('0x9')]('UserProfileResource',attributes,{'tableName':_0x67e5('0xa'),'paranoid':![],'indexes':[{'name':_0x67e5('0xb'),'fields':[_0x67e5('0xc'),_0x67e5('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6fbe=['path','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','sectionId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x6fbe,0xb9));var _0xe6fb=function(_0x26cd90,_0x561e89){_0x26cd90=_0x26cd90-0x0;var _0x14194e=_0x6fbe[_0x26cd90];return _0x14194e;};'use strict';var _=require(_0xe6fb('0x0'));var util=require(_0xe6fb('0x1'));var logger=require(_0xe6fb('0x2'))(_0xe6fb('0x3'));var moment=require(_0xe6fb('0x4'));var BPromise=require(_0xe6fb('0x5'));var rp=require(_0xe6fb('0x6'));var fs=require('fs');var path=require(_0xe6fb('0x7'));var rimraf=require('rimraf');var config=require(_0xe6fb('0x8'));var attributes=require(_0xe6fb('0x9'));module[_0xe6fb('0xa')]=function(_0xb91d05,_0x261e6f){return _0xb91d05[_0xe6fb('0xb')](_0xe6fb('0xc'),attributes,{'tableName':_0xe6fb('0xd'),'paranoid':![],'indexes':[{'name':_0xe6fb('0xe'),'fields':['resourceId',_0xe6fb('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 17ca068..099b821 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ccf=['info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x7ccf,0xbc));var _0xf7cc=function(_0x817d9b,_0x3c37e3){_0x817d9b=_0x817d9b-0x0;var _0x2752e1=_0x7ccf[_0x817d9b];return _0x2752e1;};'use strict';var _=require(_0xf7cc('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf7cc('0x1'));var rs=require(_0xf7cc('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf7cc('0x3'))['db'];var utils=require(_0xf7cc('0x4'));var logger=require(_0xf7cc('0x5'))(_0xf7cc('0x6'));var config=require(_0xf7cc('0x7'));var jayson=require(_0xf7cc('0x8'));var client=jayson[_0xf7cc('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x59ff0d,_0xa9e3cf,_0x4ffdb2){return new BPromise(function(_0x451475,_0x3a7aa4){return client['request'](_0x59ff0d,_0x4ffdb2)['then'](function(_0x58bbf7){logger[_0xf7cc('0xa')](_0xf7cc('0xb'),_0xa9e3cf,_0xf7cc('0xc'));logger[_0xf7cc('0xd')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0xa9e3cf,_0xf7cc('0xc'),JSON[_0xf7cc('0xe')](_0x58bbf7));if(_0x58bbf7[_0xf7cc('0xf')]){if(_0x58bbf7[_0xf7cc('0xf')][_0xf7cc('0x10')]===0x1f4){logger[_0xf7cc('0xf')](_0xf7cc('0xb'),_0xa9e3cf,_0x58bbf7[_0xf7cc('0xf')]['message']);return _0x3a7aa4(_0x58bbf7[_0xf7cc('0xf')][_0xf7cc('0x11')]);}logger[_0xf7cc('0xf')](_0xf7cc('0xb'),_0xa9e3cf,_0x58bbf7[_0xf7cc('0xf')][_0xf7cc('0x11')]);return _0x451475(_0x58bbf7[_0xf7cc('0xf')][_0xf7cc('0x11')]);}else{logger[_0xf7cc('0xa')](_0xf7cc('0xb'),_0xa9e3cf,_0xf7cc('0xc'));_0x451475(_0x58bbf7['result'][_0xf7cc('0x11')]);}})['catch'](function(_0x5b98f6){logger[_0xf7cc('0xf')](_0xf7cc('0xb'),_0xa9e3cf,_0x5b98f6);_0x3a7aa4(_0x5b98f6);});});}
\ No newline at end of file
+var _0x8bcb=['error','code','message','result','catch','util','bluebird','randomstring','../../config/utils','rpc','../../config/environment','http','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x8bcb,0xfc));var _0xb8bc=function(_0x1597e2,_0x388d3e){_0x1597e2=_0x1597e2-0x0;var _0x4c8c0a=_0x8bcb[_0x1597e2];return _0x4c8c0a;};'use strict';var _=require('lodash');var util=require(_0xb8bc('0x0'));var moment=require('moment');var BPromise=require(_0xb8bc('0x1'));var rs=require(_0xb8bc('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb8bc('0x3'));var logger=require('../../config/logger')(_0xb8bc('0x4'));var config=require(_0xb8bc('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb8bc('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x26e9e7,_0x52341a,_0x3d15d9){return new BPromise(function(_0x31a173,_0x2836ac){return client['request'](_0x26e9e7,_0x3d15d9)[_0xb8bc('0x7')](function(_0x436f64){logger[_0xb8bc('0x8')](_0xb8bc('0x9'),_0x52341a,_0xb8bc('0xa'));logger[_0xb8bc('0xb')](_0xb8bc('0xc'),_0x52341a,'request\x20sent',JSON[_0xb8bc('0xd')](_0x436f64));if(_0x436f64[_0xb8bc('0xe')]){if(_0x436f64['error'][_0xb8bc('0xf')]===0x1f4){logger[_0xb8bc('0xe')](_0xb8bc('0x9'),_0x52341a,_0x436f64['error'][_0xb8bc('0x10')]);return _0x2836ac(_0x436f64[_0xb8bc('0xe')]['message']);}logger[_0xb8bc('0xe')](_0xb8bc('0x9'),_0x52341a,_0x436f64[_0xb8bc('0xe')][_0xb8bc('0x10')]);return _0x31a173(_0x436f64[_0xb8bc('0xe')][_0xb8bc('0x10')]);}else{logger[_0xb8bc('0x8')](_0xb8bc('0x9'),_0x52341a,'request\x20sent');_0x31a173(_0x436f64[_0xb8bc('0x11')][_0xb8bc('0x10')]);}})[_0xb8bc('0x12')](function(_0x19cfe2){logger[_0xb8bc('0xe')](_0xb8bc('0x9'),_0x52341a,_0x19cfe2);_0x2836ac(_0x19cfe2);});});}
\ No newline at end of file
index 6c983dc..a9a0098 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e2c=['post','put','update','destroy','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x1895b7,_0x21fbc7){var _0x1aecdc=function(_0x44682a){while(--_0x44682a){_0x1895b7['push'](_0x1895b7['shift']());}};_0x1aecdc(++_0x21fbc7);}(_0x4e2c,0xe4));var _0xc4e2=function(_0xa04024,_0x531c9f){_0xa04024=_0xa04024-0x0;var _0x5bf7fc=_0x4e2c[_0xa04024];return _0x5bf7fc;};'use strict';var multer=require('multer');var util=require(_0xc4e2('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc4e2('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xc4e2('0x2'));var interaction=require(_0xc4e2('0x3'));var config=require(_0xc4e2('0x4'));var controller=require(_0xc4e2('0x5'));router[_0xc4e2('0x6')]('/',auth[_0xc4e2('0x7')](),controller[_0xc4e2('0x8')]);router[_0xc4e2('0x6')](_0xc4e2('0x9'),auth[_0xc4e2('0x7')](),controller['describe']);router['get'](_0xc4e2('0xa'),auth['isAuthenticated'](),controller[_0xc4e2('0xb')]);router[_0xc4e2('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc4e2('0xd')]('/:id',auth[_0xc4e2('0x7')](),controller[_0xc4e2('0xe')]);router['delete'](_0xc4e2('0xa'),auth[_0xc4e2('0x7')](),controller[_0xc4e2('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x828e=['destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','/:id','post','create','put','update'];(function(_0x4629ed,_0x59ef85){var _0x52ca04=function(_0x59dc63){while(--_0x59dc63){_0x4629ed['push'](_0x4629ed['shift']());}};_0x52ca04(++_0x59ef85);}(_0x828e,0xac));var _0xe828=function(_0x5095d6,_0x51c390){_0x5095d6=_0x5095d6-0x0;var _0x6eb73a=_0x828e[_0x5095d6];return _0x6eb73a;};'use strict';var multer=require(_0xe828('0x0'));var util=require('util');var path=require(_0xe828('0x1'));var timeout=require(_0xe828('0x2'));var express=require(_0xe828('0x3'));var router=express[_0xe828('0x4')]();var fs_extra=require(_0xe828('0x5'));var auth=require(_0xe828('0x6'));var interaction=require(_0xe828('0x7'));var config=require(_0xe828('0x8'));var controller=require('./userProfileSection.controller');router[_0xe828('0x9')]('/',auth['isAuthenticated'](),controller[_0xe828('0xa')]);router['get']('/describe',auth[_0xe828('0xb')](),controller[_0xe828('0xc')]);router['get'](_0xe828('0xd'),auth[_0xe828('0xb')](),controller['show']);router[_0xe828('0xe')]('/',auth[_0xe828('0xb')](),controller[_0xe828('0xf')]);router[_0xe828('0x10')]('/:id',auth[_0xe828('0xb')](),controller[_0xe828('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe828('0x12')]);module['exports']=router;
\ No newline at end of file
index b6f5cd2..264aeaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed3c=['join','getDataValue','sequelize','exports','STRING','BOOLEAN','crudPermissions'];(function(_0x521e2f,_0x18d08a){var _0x1ecd5d=function(_0x20d140){while(--_0x20d140){_0x521e2f['push'](_0x521e2f['shift']());}};_0x1ecd5d(++_0x18d08a);}(_0xed3c,0x1a6));var _0xced3=function(_0x54d52c,_0x55b8d9){_0x54d52c=_0x54d52c-0x0;var _0x28f99e=_0xed3c[_0x54d52c];return _0x28f99e;};'use strict';var Sequelize=require(_0xced3('0x0'));module[_0xced3('0x1')]={'name':{'type':Sequelize[_0xced3('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0xced3('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0xced3('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xced3('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xced3('0x2')],'set':function(_0x5f03e0){this['setDataValue'](_0xced3('0x4'),_0x5f03e0?_0x5f03e0[_0xced3('0x5')](''):[]);},'get':function(){return this[_0xced3('0x6')](_0xced3('0x4'))?this['getDataValue']('crudPermissions')['split'](''):[];}}};
\ No newline at end of file
+var _0x58a4=['split','sequelize','exports','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','join','getDataValue'];(function(_0x3fa5cd,_0x4f0717){var _0x4f51cd=function(_0x2b9440){while(--_0x2b9440){_0x3fa5cd['push'](_0x3fa5cd['shift']());}};_0x4f51cd(++_0x4f0717);}(_0x58a4,0xbf));var _0x458a=function(_0x4e7551,_0x398ee5){_0x4e7551=_0x4e7551-0x0;var _0x2c2ae8=_0x58a4[_0x4e7551];return _0x2c2ae8;};'use strict';var Sequelize=require(_0x458a('0x0'));module[_0x458a('0x1')]={'name':{'type':Sequelize[_0x458a('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x458a('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x458a('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x458a('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x458a('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x458a('0x2')],'set':function(_0x362079){this[_0x458a('0x5')](_0x458a('0x6'),_0x362079?_0x362079[_0x458a('0x7')](''):[]);},'get':function(){return this[_0x458a('0x8')]('crudPermissions')?this['getDataValue'](_0x458a('0x6'))[_0x458a('0x9')](''):[];}}};
\ No newline at end of file
index 2f3c2f7..03328a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ebf=['rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','includeAll','include','findAll','rows','catch','keys','find','create','body','update','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','UserProfileSection'];(function(_0x67a134,_0x4d2473){var _0x2c4b7e=function(_0x3bf5fd){while(--_0x3bf5fd){_0x67a134['push'](_0x67a134['shift']());}};_0x2c4b7e(++_0x4d2473);}(_0x1ebf,0x15b));var _0xf1eb=function(_0x52fa5b,_0x264631){_0x52fa5b=_0x52fa5b-0x0;var _0x3bf60b=_0x1ebf[_0x52fa5b];return _0x3bf60b;};'use strict';var emlformat=require(_0xf1eb('0x0'));var rimraf=require(_0xf1eb('0x1'));var zipdir=require(_0xf1eb('0x2'));var jsonpatch=require(_0xf1eb('0x3'));var rp=require(_0xf1eb('0x4'));var moment=require(_0xf1eb('0x5'));var BPromise=require(_0xf1eb('0x6'));var Mustache=require(_0xf1eb('0x7'));var util=require(_0xf1eb('0x8'));var path=require(_0xf1eb('0x9'));var sox=require(_0xf1eb('0xa'));var csv=require('to-csv');var ejs=require(_0xf1eb('0xb'));var fs=require('fs');var fs_extra=require(_0xf1eb('0xc'));var _=require(_0xf1eb('0xd'));var squel=require('squel');var crypto=require(_0xf1eb('0xe'));var jsforce=require(_0xf1eb('0xf'));var deskjs=require(_0xf1eb('0x10'));var toCsv=require(_0xf1eb('0x11'));var querystring=require(_0xf1eb('0x12'));var Papa=require(_0xf1eb('0x13'));var Redis=require(_0xf1eb('0x14'));var authService=require(_0xf1eb('0x15'));var qs=require(_0xf1eb('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf1eb('0x17'));var logger=require('../../config/logger')(_0xf1eb('0x18'));var utils=require(_0xf1eb('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xf1eb('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33627f,_0x2c501d){_0x2c501d=_0x2c501d||0xcc;return function(_0x1d4a8c){if(_0x1d4a8c){return _0x33627f[_0xf1eb('0x1b')](_0x2c501d);}return _0x33627f['status'](_0x2c501d)[_0xf1eb('0x1c')]();};}function respondWithResult(_0x116b2b,_0x941d69){_0x941d69=_0x941d69||0xc8;return function(_0x2c9200){if(_0x2c9200){return _0x116b2b[_0xf1eb('0x1d')](_0x941d69)[_0xf1eb('0x1e')](_0x2c9200);}};}function respondWithFilteredResult(_0x2f754e,_0x1fb959){return function(_0x521506){if(_0x521506){var _0x361ef6=typeof _0x1fb959[_0xf1eb('0x1f')]===_0xf1eb('0x20')&&typeof _0x1fb959[_0xf1eb('0x21')]===_0xf1eb('0x20');var _0x5d6f3a=_0x521506['count'];var _0x50f545=_0x361ef6?0x0:_0x1fb959['offset'];var _0x2e1793=_0x361ef6?_0x521506[_0xf1eb('0x22')]:_0x1fb959[_0xf1eb('0x1f')]+_0x1fb959[_0xf1eb('0x21')];var _0x4cc3a7;if(_0x2e1793>=_0x5d6f3a){_0x2e1793=_0x5d6f3a;_0x4cc3a7=0xc8;}else{_0x4cc3a7=0xce;}_0x2f754e[_0xf1eb('0x1d')](_0x4cc3a7);return _0x2f754e[_0xf1eb('0x23')](_0xf1eb('0x24'),_0x50f545+'-'+_0x2e1793+'/'+_0x5d6f3a)[_0xf1eb('0x1e')](_0x521506);}return null;};}function patchUpdates(_0x41ef40){return function(_0x15545a){try{jsonpatch[_0xf1eb('0x25')](_0x15545a,_0x41ef40,!![]);}catch(_0x254080){return BPromise[_0xf1eb('0x26')](_0x254080);}return _0x15545a[_0xf1eb('0x27')]();};}function saveUpdates(_0x40a393,_0x667f1){return function(_0x351658){if(_0x351658){return _0x351658['update'](_0x40a393)[_0xf1eb('0x28')](function(_0x221e34){return _0x221e34;});}return null;};}function removeEntity(_0x18863c,_0x59e4d9){return function(_0x3ff935){if(_0x3ff935){return _0x3ff935[_0xf1eb('0x29')]()[_0xf1eb('0x28')](function(){_0x18863c[_0xf1eb('0x1d')](0xcc)[_0xf1eb('0x1c')]();});}};}function handleEntityNotFound(_0x64e7fc,_0x55ae51){return function(_0x44a0dc){if(!_0x44a0dc){_0x64e7fc[_0xf1eb('0x1b')](0x194);}return _0x44a0dc;};}function handleError(_0x491596,_0x30fabc){_0x30fabc=_0x30fabc||0x1f4;return function(_0x1b1365){logger[_0xf1eb('0x2a')](_0x1b1365[_0xf1eb('0x2b')]);if(_0x1b1365[_0xf1eb('0x2c')]){delete _0x1b1365[_0xf1eb('0x2c')];}_0x491596[_0xf1eb('0x1d')](_0x30fabc)[_0xf1eb('0x2d')](_0x1b1365);};}exports[_0xf1eb('0x2e')]=function(_0x30f769,_0x2d125c){var _0xfa892f={},_0x17d302={},_0x464a7a={'count':0x0,'rows':[]};var _0x29dd48=_['map'](db[_0xf1eb('0x2f')][_0xf1eb('0x30')],function(_0x38628c){return{'name':_0x38628c[_0xf1eb('0x31')],'type':_0x38628c[_0xf1eb('0x32')]['key']};});_0x17d302[_0xf1eb('0x33')]=_[_0xf1eb('0x34')](_0x29dd48,_0xf1eb('0x2c'));_0x17d302[_0xf1eb('0x35')]=_['keys'](_0x30f769[_0xf1eb('0x35')]);_0x17d302[_0xf1eb('0x36')]=_[_0xf1eb('0x37')](_0x17d302['model'],_0x17d302['query']);_0xfa892f[_0xf1eb('0x38')]=_[_0xf1eb('0x37')](_0x17d302[_0xf1eb('0x33')],qs[_0xf1eb('0x39')](_0x30f769[_0xf1eb('0x35')][_0xf1eb('0x39')]));_0xfa892f[_0xf1eb('0x38')]=_0xfa892f[_0xf1eb('0x38')][_0xf1eb('0x3a')]?_0xfa892f['attributes']:_0x17d302[_0xf1eb('0x33')];if(!_0x30f769['query'][_0xf1eb('0x3b')](_0xf1eb('0x3c'))){_0xfa892f[_0xf1eb('0x21')]=qs[_0xf1eb('0x21')](_0x30f769[_0xf1eb('0x35')][_0xf1eb('0x21')]);_0xfa892f[_0xf1eb('0x1f')]=qs[_0xf1eb('0x1f')](_0x30f769['query'][_0xf1eb('0x1f')]);}_0xfa892f[_0xf1eb('0x3d')]=qs[_0xf1eb('0x3e')](_0x30f769[_0xf1eb('0x35')][_0xf1eb('0x3e')]);_0xfa892f['where']=qs[_0xf1eb('0x36')](_['pick'](_0x30f769[_0xf1eb('0x35')],_0x17d302[_0xf1eb('0x36')]),_0x29dd48);if(_0x30f769[_0xf1eb('0x35')]['filter']){_0xfa892f[_0xf1eb('0x3f')]=_[_0xf1eb('0x40')](_0xfa892f[_0xf1eb('0x3f')],{'$or':_[_0xf1eb('0x34')](_0x29dd48,function(_0x3bf878){if(_0x3bf878[_0xf1eb('0x32')]!=='VIRTUAL'){var _0x5bf838={};_0x5bf838[_0x3bf878['name']]={'$like':'%'+_0x30f769[_0xf1eb('0x35')][_0xf1eb('0x41')]+'%'};return _0x5bf838;}})});}_0xfa892f=_[_0xf1eb('0x40')]({},_0xfa892f,_0x30f769[_0xf1eb('0x42')]);var _0x1dfef2={'where':_0xfa892f['where']};return db[_0xf1eb('0x2f')][_0xf1eb('0x22')](_0x1dfef2)['then'](function(_0x5d83d7){_0x464a7a[_0xf1eb('0x22')]=_0x5d83d7;if(_0x30f769[_0xf1eb('0x35')][_0xf1eb('0x43')]){_0xfa892f[_0xf1eb('0x44')]=[{'all':!![]}];}return db['UserProfileSection'][_0xf1eb('0x45')](_0xfa892f);})[_0xf1eb('0x28')](function(_0x6bf408){_0x464a7a[_0xf1eb('0x46')]=_0x6bf408;return _0x464a7a;})[_0xf1eb('0x28')](respondWithFilteredResult(_0x2d125c,_0xfa892f))[_0xf1eb('0x47')](handleError(_0x2d125c,null));};exports['show']=function(_0x22e198,_0x52037c){var _0x486c85={'raw':![],'where':{'id':_0x22e198['params']['id']}},_0x226944={};_0x226944[_0xf1eb('0x33')]=_[_0xf1eb('0x48')](db['UserProfileSection'][_0xf1eb('0x30')]);_0x226944['query']=_[_0xf1eb('0x48')](_0x22e198[_0xf1eb('0x35')]);_0x226944['filters']=_[_0xf1eb('0x37')](_0x226944[_0xf1eb('0x33')],_0x226944['query']);_0x486c85['attributes']=_[_0xf1eb('0x37')](_0x226944[_0xf1eb('0x33')],qs[_0xf1eb('0x39')](_0x22e198[_0xf1eb('0x35')][_0xf1eb('0x39')]));_0x486c85[_0xf1eb('0x38')]=_0x486c85[_0xf1eb('0x38')]['length']?_0x486c85[_0xf1eb('0x38')]:_0x226944[_0xf1eb('0x33')];if(_0x22e198[_0xf1eb('0x35')]['includeAll']){_0x486c85[_0xf1eb('0x44')]=[{'all':!![]}];}_0x486c85=_[_0xf1eb('0x40')]({},_0x486c85,_0x22e198['options']);return db[_0xf1eb('0x2f')][_0xf1eb('0x49')](_0x486c85)['then'](handleEntityNotFound(_0x52037c,null))[_0xf1eb('0x28')](respondWithResult(_0x52037c,null))[_0xf1eb('0x47')](handleError(_0x52037c,null));};exports[_0xf1eb('0x4a')]=function(_0x31e80e,_0x2dc347){return db[_0xf1eb('0x2f')][_0xf1eb('0x4a')](_0x31e80e[_0xf1eb('0x4b')],{})[_0xf1eb('0x28')](respondWithResult(_0x2dc347,0xc9))[_0xf1eb('0x47')](handleError(_0x2dc347,null));};exports[_0xf1eb('0x4c')]=function(_0x1d8019,_0x435cd3){if(_0x1d8019[_0xf1eb('0x4b')]['id']){delete _0x1d8019[_0xf1eb('0x4b')]['id'];}return db[_0xf1eb('0x2f')]['find']({'where':{'id':_0x1d8019[_0xf1eb('0x4d')]['id']}})[_0xf1eb('0x28')](handleEntityNotFound(_0x435cd3,null))[_0xf1eb('0x28')](saveUpdates(_0x1d8019[_0xf1eb('0x4b')],null))[_0xf1eb('0x28')](respondWithResult(_0x435cd3,null))[_0xf1eb('0x47')](handleError(_0x435cd3,null));};exports[_0xf1eb('0x29')]=function(_0x21b129,_0x55e387){return db[_0xf1eb('0x2f')][_0xf1eb('0x49')]({'where':{'id':_0x21b129[_0xf1eb('0x4d')]['id']}})[_0xf1eb('0x28')](handleEntityNotFound(_0x55e387,null))[_0xf1eb('0x28')](removeEntity(_0x55e387,null))['catch'](handleError(_0x55e387,null));};exports[_0xf1eb('0x4e')]=function(_0x4ff48c,_0x4a3f3a){return db[_0xf1eb('0x2f')][_0xf1eb('0x4e')]()[_0xf1eb('0x28')](respondWithResult(_0x4a3f3a,null))[_0xf1eb('0x47')](handleError(_0x4a3f3a,null));};
\ No newline at end of file
+var _0x7709=['undefined','count','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','map','UserProfileSection','rawAttributes','fieldName','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','params','find','create','body','update','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','status','end','json','offset'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7709,0x181));var _0x9770=function(_0x530183,_0x1e799d){_0x530183=_0x530183-0x0;var _0x1fb710=_0x7709[_0x530183];return _0x1fb710;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9770('0x0'));var jsonpatch=require(_0x9770('0x1'));var rp=require(_0x9770('0x2'));var moment=require(_0x9770('0x3'));var BPromise=require(_0x9770('0x4'));var Mustache=require('mustache');var util=require(_0x9770('0x5'));var path=require('path');var sox=require(_0x9770('0x6'));var csv=require(_0x9770('0x7'));var ejs=require(_0x9770('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9770('0x9'));var squel=require(_0x9770('0xa'));var crypto=require(_0x9770('0xb'));var jsforce=require(_0x9770('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9770('0x7'));var querystring=require(_0x9770('0xd'));var Papa=require('papaparse');var Redis=require(_0x9770('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x9770('0xf'));var as=require(_0x9770('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9770('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x9770('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x42bb50,_0x273efc){_0x273efc=_0x273efc||0xcc;return function(_0x17d824){if(_0x17d824){return _0x42bb50['sendStatus'](_0x273efc);}return _0x42bb50[_0x9770('0x13')](_0x273efc)[_0x9770('0x14')]();};}function respondWithResult(_0x5604fa,_0x563a38){_0x563a38=_0x563a38||0xc8;return function(_0x1e17c8){if(_0x1e17c8){return _0x5604fa[_0x9770('0x13')](_0x563a38)[_0x9770('0x15')](_0x1e17c8);}};}function respondWithFilteredResult(_0x2ab833,_0x3b9469){return function(_0x59e6d7){if(_0x59e6d7){var _0x5e2eb7=typeof _0x3b9469[_0x9770('0x16')]===_0x9770('0x17')&&typeof _0x3b9469['limit']===_0x9770('0x17');var _0x242a00=_0x59e6d7[_0x9770('0x18')];var _0x11fe3f=_0x5e2eb7?0x0:_0x3b9469[_0x9770('0x16')];var _0x43c05f=_0x5e2eb7?_0x59e6d7[_0x9770('0x18')]:_0x3b9469['offset']+_0x3b9469[_0x9770('0x19')];var _0x2605d3;if(_0x43c05f>=_0x242a00){_0x43c05f=_0x242a00;_0x2605d3=0xc8;}else{_0x2605d3=0xce;}_0x2ab833[_0x9770('0x13')](_0x2605d3);return _0x2ab833[_0x9770('0x1a')](_0x9770('0x1b'),_0x11fe3f+'-'+_0x43c05f+'/'+_0x242a00)['json'](_0x59e6d7);}return null;};}function patchUpdates(_0xef72c3){return function(_0x4afa0c){try{jsonpatch[_0x9770('0x1c')](_0x4afa0c,_0xef72c3,!![]);}catch(_0x2c6c0c){return BPromise[_0x9770('0x1d')](_0x2c6c0c);}return _0x4afa0c['save']();};}function saveUpdates(_0x53095b,_0x4f4bc6){return function(_0xc7583){if(_0xc7583){return _0xc7583['update'](_0x53095b)[_0x9770('0x1e')](function(_0x27ded2){return _0x27ded2;});}return null;};}function removeEntity(_0x29ead5,_0x326cca){return function(_0x3e6c0d){if(_0x3e6c0d){return _0x3e6c0d[_0x9770('0x1f')]()[_0x9770('0x1e')](function(){_0x29ead5[_0x9770('0x13')](0xcc)[_0x9770('0x14')]();});}};}function handleEntityNotFound(_0x3f0ce3,_0x4c7341){return function(_0x5161a3){if(!_0x5161a3){_0x3f0ce3['sendStatus'](0x194);}return _0x5161a3;};}function handleError(_0x37ca41,_0x217473){_0x217473=_0x217473||0x1f4;return function(_0x20dec9){logger[_0x9770('0x20')](_0x20dec9[_0x9770('0x21')]);if(_0x20dec9[_0x9770('0x22')]){delete _0x20dec9[_0x9770('0x22')];}_0x37ca41['status'](_0x217473)[_0x9770('0x23')](_0x20dec9);};}exports['index']=function(_0x9e9384,_0x33a80b){var _0x29ea95={},_0x1a3b77={},_0x2b91ae={'count':0x0,'rows':[]};var _0x2d3f46=_[_0x9770('0x24')](db[_0x9770('0x25')][_0x9770('0x26')],function(_0x548a2d){return{'name':_0x548a2d[_0x9770('0x27')],'type':_0x548a2d['type']['key']};});_0x1a3b77[_0x9770('0x28')]=_[_0x9770('0x24')](_0x2d3f46,_0x9770('0x22'));_0x1a3b77['query']=_[_0x9770('0x29')](_0x9e9384['query']);_0x1a3b77[_0x9770('0x2a')]=_['intersection'](_0x1a3b77[_0x9770('0x28')],_0x1a3b77[_0x9770('0x2b')]);_0x29ea95[_0x9770('0x2c')]=_[_0x9770('0x2d')](_0x1a3b77[_0x9770('0x28')],qs[_0x9770('0x2e')](_0x9e9384['query']['fields']));_0x29ea95[_0x9770('0x2c')]=_0x29ea95[_0x9770('0x2c')][_0x9770('0x2f')]?_0x29ea95[_0x9770('0x2c')]:_0x1a3b77['model'];if(!_0x9e9384[_0x9770('0x2b')][_0x9770('0x30')](_0x9770('0x31'))){_0x29ea95[_0x9770('0x19')]=qs[_0x9770('0x19')](_0x9e9384[_0x9770('0x2b')][_0x9770('0x19')]);_0x29ea95[_0x9770('0x16')]=qs[_0x9770('0x16')](_0x9e9384[_0x9770('0x2b')][_0x9770('0x16')]);}_0x29ea95[_0x9770('0x32')]=qs['sort'](_0x9e9384[_0x9770('0x2b')][_0x9770('0x33')]);_0x29ea95[_0x9770('0x34')]=qs[_0x9770('0x2a')](_[_0x9770('0x35')](_0x9e9384['query'],_0x1a3b77[_0x9770('0x2a')]),_0x2d3f46);if(_0x9e9384[_0x9770('0x2b')][_0x9770('0x36')]){_0x29ea95[_0x9770('0x34')]=_['merge'](_0x29ea95['where'],{'$or':_['map'](_0x2d3f46,function(_0x44faa9){if(_0x44faa9['type']!==_0x9770('0x37')){var _0x13c1b9={};_0x13c1b9[_0x44faa9['name']]={'$like':'%'+_0x9e9384[_0x9770('0x2b')][_0x9770('0x36')]+'%'};return _0x13c1b9;}})});}_0x29ea95=_[_0x9770('0x38')]({},_0x29ea95,_0x9e9384[_0x9770('0x39')]);var _0x581e70={'where':_0x29ea95['where']};return db[_0x9770('0x25')][_0x9770('0x18')](_0x581e70)[_0x9770('0x1e')](function(_0x2d1ddc){_0x2b91ae['count']=_0x2d1ddc;if(_0x9e9384[_0x9770('0x2b')][_0x9770('0x3a')]){_0x29ea95[_0x9770('0x3b')]=[{'all':!![]}];}return db[_0x9770('0x25')][_0x9770('0x3c')](_0x29ea95);})[_0x9770('0x1e')](function(_0x5135f2){_0x2b91ae['rows']=_0x5135f2;return _0x2b91ae;})['then'](respondWithFilteredResult(_0x33a80b,_0x29ea95))[_0x9770('0x3d')](handleError(_0x33a80b,null));};exports['show']=function(_0x43c0bc,_0x2e75b9){var _0x5b5479={'raw':![],'where':{'id':_0x43c0bc[_0x9770('0x3e')]['id']}},_0x3e6d80={};_0x3e6d80['model']=_[_0x9770('0x29')](db['UserProfileSection'][_0x9770('0x26')]);_0x3e6d80[_0x9770('0x2b')]=_[_0x9770('0x29')](_0x43c0bc[_0x9770('0x2b')]);_0x3e6d80['filters']=_['intersection'](_0x3e6d80[_0x9770('0x28')],_0x3e6d80[_0x9770('0x2b')]);_0x5b5479['attributes']=_[_0x9770('0x2d')](_0x3e6d80[_0x9770('0x28')],qs[_0x9770('0x2e')](_0x43c0bc[_0x9770('0x2b')][_0x9770('0x2e')]));_0x5b5479['attributes']=_0x5b5479[_0x9770('0x2c')][_0x9770('0x2f')]?_0x5b5479[_0x9770('0x2c')]:_0x3e6d80[_0x9770('0x28')];if(_0x43c0bc[_0x9770('0x2b')][_0x9770('0x3a')]){_0x5b5479['include']=[{'all':!![]}];}_0x5b5479=_[_0x9770('0x38')]({},_0x5b5479,_0x43c0bc[_0x9770('0x39')]);return db[_0x9770('0x25')][_0x9770('0x3f')](_0x5b5479)[_0x9770('0x1e')](handleEntityNotFound(_0x2e75b9,null))[_0x9770('0x1e')](respondWithResult(_0x2e75b9,null))[_0x9770('0x3d')](handleError(_0x2e75b9,null));};exports[_0x9770('0x40')]=function(_0x53a4fd,_0x5c2604){return db[_0x9770('0x25')][_0x9770('0x40')](_0x53a4fd[_0x9770('0x41')],{})[_0x9770('0x1e')](respondWithResult(_0x5c2604,0xc9))[_0x9770('0x3d')](handleError(_0x5c2604,null));};exports[_0x9770('0x42')]=function(_0x493d91,_0x37a3c5){if(_0x493d91[_0x9770('0x41')]['id']){delete _0x493d91[_0x9770('0x41')]['id'];}return db[_0x9770('0x25')][_0x9770('0x3f')]({'where':{'id':_0x493d91['params']['id']}})['then'](handleEntityNotFound(_0x37a3c5,null))[_0x9770('0x1e')](saveUpdates(_0x493d91[_0x9770('0x41')],null))[_0x9770('0x1e')](respondWithResult(_0x37a3c5,null))[_0x9770('0x3d')](handleError(_0x37a3c5,null));};exports['destroy']=function(_0x2f6d81,_0x1fc821){return db[_0x9770('0x25')]['find']({'where':{'id':_0x2f6d81[_0x9770('0x3e')]['id']}})[_0x9770('0x1e')](handleEntityNotFound(_0x1fc821,null))[_0x9770('0x1e')](removeEntity(_0x1fc821,null))['catch'](handleError(_0x1fc821,null));};exports[_0x9770('0x43')]=function(_0x311b23,_0x37e081){return db['UserProfileSection'][_0x9770('0x43')]()['then'](respondWithResult(_0x37e081,null))[_0x9770('0x3d')](handleError(_0x37e081,null));};
\ No newline at end of file
index 3d60ee1..1e87a4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e18=['moment','bluebird','path','rimraf','../../config/environment','./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','lodash','util'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x6e18,0xc2));var _0x86e1=function(_0x4a9f28,_0x22352c){_0x4a9f28=_0x4a9f28-0x0;var _0x535a04=_0x6e18[_0x4a9f28];return _0x535a04;};'use strict';var _=require(_0x86e1('0x0'));var util=require(_0x86e1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x86e1('0x2'));var BPromise=require(_0x86e1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x86e1('0x4'));var rimraf=require(_0x86e1('0x5'));var config=require(_0x86e1('0x6'));var attributes=require(_0x86e1('0x7'));module[_0x86e1('0x8')]=function(_0x5a7dd5,_0x479407){return _0x5a7dd5[_0x86e1('0x9')](_0x86e1('0xa'),attributes,{'tableName':_0x86e1('0xb'),'paranoid':![],'indexes':[{'name':_0x86e1('0xc'),'fields':[_0x86e1('0xd'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x49e4=['rimraf','exports','define','UserProfileSection','compositeIndex','sectionId','userProfileId','util','api','moment','bluebird','request-promise','path'];(function(_0x48b7fe,_0x38dc26){var _0x1f0f56=function(_0x48f03c){while(--_0x48f03c){_0x48b7fe['push'](_0x48b7fe['shift']());}};_0x1f0f56(++_0x38dc26);}(_0x49e4,0x1c1));var _0x449e=function(_0x21aac8,_0x2858d4){_0x21aac8=_0x21aac8-0x0;var _0x79b387=_0x49e4[_0x21aac8];return _0x79b387;};'use strict';var _=require('lodash');var util=require(_0x449e('0x0'));var logger=require('../../config/logger')(_0x449e('0x1'));var moment=require(_0x449e('0x2'));var BPromise=require(_0x449e('0x3'));var rp=require(_0x449e('0x4'));var fs=require('fs');var path=require(_0x449e('0x5'));var rimraf=require(_0x449e('0x6'));var config=require('../../config/environment');var attributes=require('./userProfileSection.attributes');module[_0x449e('0x7')]=function(_0x3eb864,_0x7471f2){return _0x3eb864[_0x449e('0x8')](_0x449e('0x9'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x449e('0xa'),'fields':[_0x449e('0xb'),_0x449e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 8adb765..6fd616a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29cd=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x1d3dda,_0x362006){var _0x45de52=function(_0x3e9823){while(--_0x3e9823){_0x1d3dda['push'](_0x1d3dda['shift']());}};_0x45de52(++_0x362006);}(_0x29cd,0x17b));var _0xd29c=function(_0x410b0e,_0x31c41c){_0x410b0e=_0x410b0e-0x0;var _0x53dc9d=_0x29cd[_0x410b0e];return _0x53dc9d;};'use strict';var _=require(_0xd29c('0x0'));var util=require('util');var moment=require(_0xd29c('0x1'));var BPromise=require(_0xd29c('0x2'));var rs=require(_0xd29c('0x3'));var fs=require('fs');var Redis=require(_0xd29c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd29c('0x5'));var logger=require(_0xd29c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd29c('0x7'));var client=jayson[_0xd29c('0x8')][_0xd29c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x389864,_0x48633d,_0x241e70){return new BPromise(function(_0x3acf2e,_0x73603e){return client['request'](_0x389864,_0x241e70)['then'](function(_0x376d36){logger[_0xd29c('0xa')](_0xd29c('0xb'),_0x48633d,_0xd29c('0xc'));logger['debug'](_0xd29c('0xd'),_0x48633d,_0xd29c('0xc'),JSON[_0xd29c('0xe')](_0x376d36));if(_0x376d36[_0xd29c('0xf')]){if(_0x376d36[_0xd29c('0xf')][_0xd29c('0x10')]===0x1f4){logger[_0xd29c('0xf')]('UserProfileSection,\x20%s,\x20%s',_0x48633d,_0x376d36['error'][_0xd29c('0x11')]);return _0x73603e(_0x376d36[_0xd29c('0xf')]['message']);}logger[_0xd29c('0xf')]('UserProfileSection,\x20%s,\x20%s',_0x48633d,_0x376d36[_0xd29c('0xf')][_0xd29c('0x11')]);return _0x3acf2e(_0x376d36[_0xd29c('0xf')]['message']);}else{logger[_0xd29c('0xa')](_0xd29c('0xb'),_0x48633d,_0xd29c('0xc'));_0x3acf2e(_0x376d36[_0xd29c('0x12')][_0xd29c('0x11')]);}})['catch'](function(_0x4a28b7){logger['error'](_0xd29c('0xb'),_0x48633d,_0x4a28b7);_0x73603e(_0x4a28b7);});});}
\ No newline at end of file
+var _0x9e38=['ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x441fac,_0x241af5){var _0x17a797=function(_0x16f0d5){while(--_0x16f0d5){_0x441fac['push'](_0x441fac['shift']());}};_0x17a797(++_0x241af5);}(_0x9e38,0x107));var _0x89e3=function(_0x1f0724,_0x3a58bf){_0x1f0724=_0x1f0724-0x0;var _0x253ffb=_0x9e38[_0x1f0724];return _0x253ffb;};'use strict';var _=require(_0x89e3('0x0'));var util=require('util');var moment=require(_0x89e3('0x1'));var BPromise=require(_0x89e3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x89e3('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x89e3('0x4'));var logger=require(_0x89e3('0x5'))('rpc');var config=require(_0x89e3('0x6'));var jayson=require(_0x89e3('0x7'));var client=jayson[_0x89e3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xd24d32,_0x4867f7,_0x4d927c){return new BPromise(function(_0x50dd51,_0x1cb5c5){return client['request'](_0xd24d32,_0x4d927c)[_0x89e3('0x9')](function(_0x378a61){logger[_0x89e3('0xa')](_0x89e3('0xb'),_0x4867f7,_0x89e3('0xc'));logger[_0x89e3('0xd')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x4867f7,_0x89e3('0xc'),JSON['stringify'](_0x378a61));if(_0x378a61['error']){if(_0x378a61[_0x89e3('0xe')][_0x89e3('0xf')]===0x1f4){logger[_0x89e3('0xe')](_0x89e3('0xb'),_0x4867f7,_0x378a61[_0x89e3('0xe')]['message']);return _0x1cb5c5(_0x378a61['error'][_0x89e3('0x10')]);}logger[_0x89e3('0xe')](_0x89e3('0xb'),_0x4867f7,_0x378a61[_0x89e3('0xe')][_0x89e3('0x10')]);return _0x50dd51(_0x378a61[_0x89e3('0xe')][_0x89e3('0x10')]);}else{logger[_0x89e3('0xa')](_0x89e3('0xb'),_0x4867f7,_0x89e3('0xc'));_0x50dd51(_0x378a61[_0x89e3('0x11')][_0x89e3('0x10')]);}})[_0x89e3('0x12')](function(_0x407a84){logger[_0x89e3('0xe')](_0x89e3('0xb'),_0x4867f7,_0x407a84);_0x1cb5c5(_0x407a84);});});}
\ No newline at end of file
index 6b0793e..089fee0 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(_0x2d5ac8,_0x2b6a02){var _0x385e94=function(_0x535801){while(--_0x535801){_0x2d5ac8['push'](_0x2d5ac8['shift']());}};_0x385e94(++_0x2b6a02);}(_0x70e0,0x17b));var _0x070e=function(_0x20cf16,_0x310b57){_0x20cf16=_0x20cf16-0x0;var _0x576da4=_0x70e0[_0x20cf16];return _0x576da4;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x3d5db9,_0x2dbe0a){var _0x3c114c=function(_0x3e0239){while(--_0x3e0239){_0x3d5db9['push'](_0x3d5db9['shift']());}};_0x3c114c(++_0x2dbe0a);}(_0x9c44,0x178));var _0x49c4=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x9c44[_0x209941];return _0x1e8729;};'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 f48175f..584771e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5343=['sequelize','exports','INTEGER'];(function(_0x3236a8,_0x44c5f2){var _0x209b4a=function(_0x22ed4c){while(--_0x22ed4c){_0x3236a8['push'](_0x3236a8['shift']());}};_0x209b4a(++_0x44c5f2);}(_0x5343,0x123));var _0x3534=function(_0x113f46,_0x422e03){_0x113f46=_0x113f46-0x0;var _0xbdbf7f=_0x5343[_0x113f46];return _0xbdbf7f;};'use strict';var Sequelize=require(_0x3534('0x0'));module[_0x3534('0x1')]={'penalty':{'type':Sequelize[_0x3534('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3fb1=['exports','INTEGER','sequelize'];(function(_0x10b3f6,_0x5eb3b5){var _0x1a6666=function(_0x24b670){while(--_0x24b670){_0x10b3f6['push'](_0x10b3f6['shift']());}};_0x1a6666(++_0x5eb3b5);}(_0x3fb1,0x8c));var _0x13fb=function(_0x455b12,_0x10ab4a){_0x455b12=_0x455b12-0x0;var _0x4ded00=_0x3fb1[_0x455b12];return _0x4ded00;};'use strict';var Sequelize=require(_0x13fb('0x0'));module[_0x13fb('0x1')]={'penalty':{'type':Sequelize[_0x13fb('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index dba40e4..e47e40f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ccb=['util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','exports','UserSmsQueue','user_has_sms_queues','lodash'];(function(_0x313e38,_0xa8b45c){var _0x63a605=function(_0x328b19){while(--_0x328b19){_0x313e38['push'](_0x313e38['shift']());}};_0x63a605(++_0xa8b45c);}(_0x4ccb,0x196));var _0xb4cc=function(_0x34245e,_0x114d90){_0x34245e=_0x34245e-0x0;var _0x51f5c2=_0x4ccb[_0x34245e];return _0x51f5c2;};'use strict';var _=require(_0xb4cc('0x0'));var util=require(_0xb4cc('0x1'));var logger=require(_0xb4cc('0x2'))('api');var moment=require(_0xb4cc('0x3'));var BPromise=require(_0xb4cc('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb4cc('0x5'));var rimraf=require(_0xb4cc('0x6'));var config=require(_0xb4cc('0x7'));var attributes=require('./userSmsQueue.attributes');module[_0xb4cc('0x8')]=function(_0x2181b2,_0x1e19dd){return _0x2181b2['define'](_0xb4cc('0x9'),attributes,{'tableName':_0xb4cc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd0a=['user_has_sms_queues','lodash','../../config/logger','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','define'];(function(_0xd0b415,_0x149675){var _0x2bdf2c=function(_0x59fbfa){while(--_0x59fbfa){_0xd0b415['push'](_0xd0b415['shift']());}};_0x2bdf2c(++_0x149675);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x48b696,_0x55cc88){_0x48b696=_0x48b696-0x0;var _0x58e2f3=_0xbd0a[_0x48b696];return _0x58e2f3;};'use strict';var _=require(_0xabd0('0x0'));var util=require('util');var logger=require(_0xabd0('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xabd0('0x2'));var fs=require('fs');var path=require(_0xabd0('0x3'));var rimraf=require(_0xabd0('0x4'));var config=require(_0xabd0('0x5'));var attributes=require(_0xabd0('0x6'));module[_0xabd0('0x7')]=function(_0x221368,_0xb41697){return _0x221368[_0xabd0('0x8')]('UserSmsQueue',attributes,{'tableName':_0xabd0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b38a9d7..e353f80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb104=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x1f21dd,_0x3ba586){var _0x5d779d=function(_0x1d3549){while(--_0x1d3549){_0x1f21dd['push'](_0x1f21dd['shift']());}};_0x5d779d(++_0x3ba586);}(_0xb104,0xd8));var _0x4b10=function(_0x264b9b,_0xa1181e){_0x264b9b=_0x264b9b-0x0;var _0x4c7a0e=_0xb104[_0x264b9b];return _0x4c7a0e;};'use strict';var _=require(_0x4b10('0x0'));var util=require('util');var moment=require(_0x4b10('0x1'));var BPromise=require(_0x4b10('0x2'));var rs=require(_0x4b10('0x3'));var fs=require('fs');var Redis=require(_0x4b10('0x4'));var db=require(_0x4b10('0x5'))['db'];var utils=require(_0x4b10('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x4b10('0x7'));var jayson=require(_0x4b10('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x58d944,_0x1ee603,_0x444e13){return new BPromise(function(_0x1ca3cf,_0x22327b){return client['request'](_0x58d944,_0x444e13)['then'](function(_0x43a72f){logger[_0x4b10('0x9')](_0x4b10('0xa'),_0x1ee603,_0x4b10('0xb'));logger['debug']('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x1ee603,'request\x20sent',JSON[_0x4b10('0xc')](_0x43a72f));if(_0x43a72f[_0x4b10('0xd')]){if(_0x43a72f[_0x4b10('0xd')][_0x4b10('0xe')]===0x1f4){logger[_0x4b10('0xd')]('UserSmsQueue,\x20%s,\x20%s',_0x1ee603,_0x43a72f['error'][_0x4b10('0xf')]);return _0x22327b(_0x43a72f['error']['message']);}logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x1ee603,_0x43a72f[_0x4b10('0xd')][_0x4b10('0xf')]);return _0x1ca3cf(_0x43a72f['error'][_0x4b10('0xf')]);}else{logger[_0x4b10('0x9')](_0x4b10('0xa'),_0x1ee603,_0x4b10('0xb'));_0x1ca3cf(_0x43a72f['result'][_0x4b10('0xf')]);}})[_0x4b10('0x10')](function(_0x1e0c24){logger[_0x4b10('0xd')](_0x4b10('0xa'),_0x1ee603,_0x1e0c24);_0x22327b(_0x1e0c24);});});}
\ No newline at end of file
+var _0x1f00=['UserSmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','info','UserSmsQueue,\x20%s,\x20%s','debug'];(function(_0x431fc3,_0x4a4354){var _0x3da394=function(_0x42dec0){while(--_0x42dec0){_0x431fc3['push'](_0x431fc3['shift']());}};_0x3da394(++_0x4a4354);}(_0x1f00,0x181));var _0x01f0=function(_0x3fa8bd,_0xd89912){_0x3fa8bd=_0x3fa8bd-0x0;var _0x41d3e7=_0x1f00[_0x3fa8bd];return _0x41d3e7;};'use strict';var _=require('lodash');var util=require(_0x01f0('0x0'));var moment=require(_0x01f0('0x1'));var BPromise=require(_0x01f0('0x2'));var rs=require(_0x01f0('0x3'));var fs=require('fs');var Redis=require(_0x01f0('0x4'));var db=require(_0x01f0('0x5'))['db'];var utils=require(_0x01f0('0x6'));var logger=require('../../config/logger')(_0x01f0('0x7'));var config=require(_0x01f0('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x01f0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xfd1833,_0x2957f5,_0x3542fc){return new BPromise(function(_0x5ddef3,_0x1261b6){return client[_0x01f0('0xa')](_0xfd1833,_0x3542fc)['then'](function(_0x14cec0){logger[_0x01f0('0xb')](_0x01f0('0xc'),_0x2957f5,'request\x20sent');logger[_0x01f0('0xd')](_0x01f0('0xe'),_0x2957f5,'request\x20sent',JSON['stringify'](_0x14cec0));if(_0x14cec0[_0x01f0('0xf')]){if(_0x14cec0[_0x01f0('0xf')][_0x01f0('0x10')]===0x1f4){logger['error'](_0x01f0('0xc'),_0x2957f5,_0x14cec0['error']['message']);return _0x1261b6(_0x14cec0[_0x01f0('0xf')]['message']);}logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x2957f5,_0x14cec0[_0x01f0('0xf')]['message']);return _0x5ddef3(_0x14cec0[_0x01f0('0xf')][_0x01f0('0x11')]);}else{logger[_0x01f0('0xb')](_0x01f0('0xc'),_0x2957f5,_0x01f0('0x12'));_0x5ddef3(_0x14cec0[_0x01f0('0x13')]['message']);}})[_0x01f0('0x14')](function(_0x4e9394){logger[_0x01f0('0xf')]('UserSmsQueue,\x20%s,\x20%s',_0x2957f5,_0x4e9394);_0x1261b6(_0x4e9394);});});}
\ No newline at end of file
index 19bd5ce..6142ddc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c86=['INTEGER','exports'];(function(_0x59efbb,_0x1b77e1){var _0x1e143c=function(_0x411003){while(--_0x411003){_0x59efbb['push'](_0x59efbb['shift']());}};_0x1e143c(++_0x1b77e1);}(_0x5c86,0xa1));var _0x65c8=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x5c86[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require('sequelize');module[_0x65c8('0x0')]={'UserId':{'type':Sequelize[_0x65c8('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x65c8('0x1')]}};
\ No newline at end of file
+var _0x011c=['INTEGER','sequelize'];(function(_0x5b7788,_0x309ae5){var _0x573871=function(_0x5c79fd){while(--_0x5c79fd){_0x5b7788['push'](_0x5b7788['shift']());}};_0x573871(++_0x309ae5);}(_0x011c,0x87));var _0xc011=function(_0x38499f,_0x30a52c){_0x38499f=_0x38499f-0x0;var _0x1bec1e=_0x011c[_0x38499f];return _0x1bec1e;};'use strict';var Sequelize=require(_0xc011('0x0'));module['exports']={'UserId':{'type':Sequelize[_0xc011('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xc011('0x1')]}};
\ No newline at end of file
index 0334c06..522d264 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(_0x375e4f,_0x3f4242){var _0x235edb=function(_0x2de658){while(--_0x2de658){_0x375e4f['push'](_0x375e4f['shift']());}};_0x235edb(++_0x3f4242);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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(_0x53d863,_0x2fd998){var _0xecc6f6=function(_0x49b075){while(--_0x49b075){_0x53d863['push'](_0x53d863['shift']());}};_0xecc6f6(++_0x2fd998);}(_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 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 844455d..34f4051 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x97f085,_0x202eaf){var _0x311399=function(_0xe6d231){while(--_0xe6d231){_0x97f085['push'](_0x97f085['shift']());}};_0x311399(++_0x202eaf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xa9e0[_0x8de54f];return _0x14cba4;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x41b6eb,_0x4f84b7){var _0xb44dda=function(_0x309dc8){while(--_0x309dc8){_0x41b6eb['push'](_0x41b6eb['shift']());}};_0xb44dda(++_0x4f84b7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 058451e..da139db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd8c=['INTEGER','exports'];(function(_0x329ebf,_0x905aa6){var _0x3e1ec4=function(_0x6f90ea){while(--_0x6f90ea){_0x329ebf['push'](_0x329ebf['shift']());}};_0x3e1ec4(++_0x905aa6);}(_0xbd8c,0xfd));var _0xcbd8=function(_0x2b5a1f,_0x134e66){_0x2b5a1f=_0x2b5a1f-0x0;var _0x38671b=_0xbd8c[_0x2b5a1f];return _0x38671b;};'use strict';var Sequelize=require('sequelize');module[_0xcbd8('0x0')]={'penalty':{'type':Sequelize[_0xcbd8('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xde71=['exports','INTEGER','sequelize'];(function(_0x57334f,_0xa3fc31){var _0xe4c0fb=function(_0x1941cb){while(--_0x1941cb){_0x57334f['push'](_0x57334f['shift']());}};_0xe4c0fb(++_0xa3fc31);}(_0xde71,0x155));var _0x1de7=function(_0x1bc762,_0x523eb3){_0x1bc762=_0x1bc762-0x0;var _0x40f70c=_0xde71[_0x1bc762];return _0x40f70c;};'use strict';var Sequelize=require(_0x1de7('0x0'));module[_0x1de7('0x1')]={'penalty':{'type':Sequelize[_0x1de7('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 08bc410..2a025a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0d4=['../../config/logger','api','bluebird','path','rimraf','./userVoiceQueue.attributes','exports','define','user_has_voice_queues','util'];(function(_0x51af00,_0x1f0374){var _0x48bbe7=function(_0x5ce433){while(--_0x5ce433){_0x51af00['push'](_0x51af00['shift']());}};_0x48bbe7(++_0x1f0374);}(_0xe0d4,0xdb));var _0x4e0d=function(_0x1ba522,_0x2570fe){_0x1ba522=_0x1ba522-0x0;var _0x964553=_0xe0d4[_0x1ba522];return _0x964553;};'use strict';var _=require('lodash');var util=require(_0x4e0d('0x0'));var logger=require(_0x4e0d('0x1'))(_0x4e0d('0x2'));var moment=require('moment');var BPromise=require(_0x4e0d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4e0d('0x4'));var rimraf=require(_0x4e0d('0x5'));var config=require('../../config/environment');var attributes=require(_0x4e0d('0x6'));module[_0x4e0d('0x7')]=function(_0x191836,_0x7ca091){return _0x191836[_0x4e0d('0x8')]('UserVoiceQueue',attributes,{'tableName':_0x4e0d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x26ca=['exports','define','UserVoiceQueue','user_has_voice_queues','lodash','util','api','moment','path','rimraf','../../config/environment','./userVoiceQueue.attributes'];(function(_0x19c637,_0x109f66){var _0x13f3f6=function(_0x5d16f5){while(--_0x5d16f5){_0x19c637['push'](_0x19c637['shift']());}};_0x13f3f6(++_0x109f66);}(_0x26ca,0x190));var _0xa26c=function(_0x81dcac,_0x8ff7db){_0x81dcac=_0x81dcac-0x0;var _0xc7803b=_0x26ca[_0x81dcac];return _0xc7803b;};'use strict';var _=require(_0xa26c('0x0'));var util=require(_0xa26c('0x1'));var logger=require('../../config/logger')(_0xa26c('0x2'));var moment=require(_0xa26c('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa26c('0x4'));var rimraf=require(_0xa26c('0x5'));var config=require(_0xa26c('0x6'));var attributes=require(_0xa26c('0x7'));module[_0xa26c('0x8')]=function(_0x3f1842,_0x30594b){return _0x3f1842[_0xa26c('0x9')](_0xa26c('0xa'),attributes,{'tableName':_0xa26c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee4227f..4b0756f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aea=['request\x20sent','UserVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','request','then','info','UserVoiceQueue,\x20%s,\x20%s'];(function(_0x4382bc,_0x231a2d){var _0x13c82a=function(_0x3723b0){while(--_0x3723b0){_0x4382bc['push'](_0x4382bc['shift']());}};_0x13c82a(++_0x231a2d);}(_0x7aea,0x196));var _0xa7ae=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7aea[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa7ae('0x0'));var util=require(_0xa7ae('0x1'));var moment=require(_0xa7ae('0x2'));var BPromise=require(_0xa7ae('0x3'));var rs=require(_0xa7ae('0x4'));var fs=require('fs');var Redis=require(_0xa7ae('0x5'));var db=require(_0xa7ae('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xa7ae('0x7'))(_0xa7ae('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa7ae('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ebc79,_0x4c5ea0,_0x51488a){return new BPromise(function(_0x2fa7b8,_0x504ded){return client[_0xa7ae('0xa')](_0x2ebc79,_0x51488a)[_0xa7ae('0xb')](function(_0x32da8c){logger[_0xa7ae('0xc')](_0xa7ae('0xd'),_0x4c5ea0,_0xa7ae('0xe'));logger['debug'](_0xa7ae('0xf'),_0x4c5ea0,_0xa7ae('0xe'),JSON['stringify'](_0x32da8c));if(_0x32da8c[_0xa7ae('0x10')]){if(_0x32da8c[_0xa7ae('0x10')][_0xa7ae('0x11')]===0x1f4){logger[_0xa7ae('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x4c5ea0,_0x32da8c[_0xa7ae('0x10')][_0xa7ae('0x12')]);return _0x504ded(_0x32da8c[_0xa7ae('0x10')][_0xa7ae('0x12')]);}logger['error'](_0xa7ae('0xd'),_0x4c5ea0,_0x32da8c[_0xa7ae('0x10')]['message']);return _0x2fa7b8(_0x32da8c['error'][_0xa7ae('0x12')]);}else{logger[_0xa7ae('0xc')](_0xa7ae('0xd'),_0x4c5ea0,_0xa7ae('0xe'));_0x2fa7b8(_0x32da8c['result'][_0xa7ae('0x12')]);}})[_0xa7ae('0x13')](function(_0x19f3ec){logger[_0xa7ae('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x4c5ea0,_0x19f3ec);_0x504ded(_0x19f3ec);});});}
\ No newline at end of file
+var _0x1423=['error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x1ab1b6,_0x3bedf8){var _0x215c12=function(_0x5955c6){while(--_0x5955c6){_0x1ab1b6['push'](_0x1ab1b6['shift']());}};_0x215c12(++_0x3bedf8);}(_0x1423,0x76));var _0x3142=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1423[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x3142('0x0'));var util=require(_0x3142('0x1'));var moment=require(_0x3142('0x2'));var BPromise=require('bluebird');var rs=require(_0x3142('0x3'));var fs=require('fs');var Redis=require(_0x3142('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3142('0x5'));var logger=require(_0x3142('0x6'))(_0x3142('0x7'));var config=require('../../config/environment');var jayson=require(_0x3142('0x8'));var client=jayson['client'][_0x3142('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x53bfe4,_0x4f5554,_0xf1a56c){return new BPromise(function(_0x5eb29d,_0x4e9f8f){return client[_0x3142('0xa')](_0x53bfe4,_0xf1a56c)['then'](function(_0x56c366){logger[_0x3142('0xb')](_0x3142('0xc'),_0x4f5554,_0x3142('0xd'));logger['debug']('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x4f5554,'request\x20sent',JSON[_0x3142('0xe')](_0x56c366));if(_0x56c366[_0x3142('0xf')]){if(_0x56c366['error'][_0x3142('0x10')]===0x1f4){logger[_0x3142('0xf')](_0x3142('0xc'),_0x4f5554,_0x56c366[_0x3142('0xf')][_0x3142('0x11')]);return _0x4e9f8f(_0x56c366[_0x3142('0xf')]['message']);}logger[_0x3142('0xf')](_0x3142('0xc'),_0x4f5554,_0x56c366[_0x3142('0xf')][_0x3142('0x11')]);return _0x5eb29d(_0x56c366[_0x3142('0xf')][_0x3142('0x11')]);}else{logger[_0x3142('0xb')]('UserVoiceQueue,\x20%s,\x20%s',_0x4f5554,_0x3142('0xd'));_0x5eb29d(_0x56c366['result'][_0x3142('0x11')]);}})[_0x3142('0x12')](function(_0x3cbdf4){logger[_0x3142('0xf')](_0x3142('0xc'),_0x4f5554,_0x3cbdf4);_0x4e9f8f(_0x3cbdf4);});});}
\ No newline at end of file
index f3b175a..2c412a8 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(_0x35ef32,_0x4c063d){var _0x3f5ec8=function(_0x346c56){while(--_0x346c56){_0x35ef32['push'](_0x35ef32['shift']());}};_0x3f5ec8(++_0x4c063d);}(_0x70e0,0x17b));var _0x070e=function(_0x29b218,_0x1e8626){_0x29b218=_0x29b218-0x0;var _0x1fd78d=_0x70e0[_0x29b218];return _0x1fd78d;};'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(_0x32aa00,_0x53e494){var _0x3ae564=function(_0x1eeb8f){while(--_0x1eeb8f){_0x32aa00['push'](_0x32aa00['shift']());}};_0x3ae564(++_0x53e494);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 6335533..2f261da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeb8=['exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x372def,_0x49b0f9){var _0x5b9c36=function(_0x203bf1){while(--_0x203bf1){_0x372def['push'](_0x372def['shift']());}};_0x5b9c36(++_0x49b0f9);}(_0xeeb8,0x168));var _0x8eeb=function(_0x236430,_0xb2be3b){_0x236430=_0x236430-0x0;var _0x298bbc=_0xeeb8[_0x236430];return _0x298bbc;};'use strict';var Sequelize=require('sequelize');module[_0x8eeb('0x0')]={'uniqueid':{'type':Sequelize[_0x8eeb('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x8eeb('0x2')},'membername':{'type':Sequelize[_0x8eeb('0x3')],'allowNull':![],'comment':_0x8eeb('0x2')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0x8eeb('0x3')],'allowNull':![],'unique':_0x8eeb('0x4'),'comment':_0x8eeb('0x2')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0x8eeb('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0x8eeb('0x2')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0x8eeb('0x1')](0xb),'defaultValue':0x0,'comment':_0x8eeb('0x2')}};
\ No newline at end of file
+var _0x36eb=['Required\x20by\x20Asterisk','sequelize','INTEGER','STRING'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x36eb,0x111));var _0xb36e=function(_0x5b50b0,_0x51f71b){_0x5b50b0=_0x5b50b0-0x0;var _0x43ac6d=_0x36eb[_0x5b50b0];return _0x43ac6d;};'use strict';var Sequelize=require(_0xb36e('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xb36e('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xb36e('0x2')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xb36e('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0xb36e('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xb36e('0x2')],'allowNull':![],'unique':'queue_interface','comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0xb36e('0x1')](0xb),'defaultValue':0x0,'comment':_0xb36e('0x3')},'paused':{'type':Sequelize[_0xb36e('0x1')](0xb),'defaultValue':0x0,'comment':_0xb36e('0x3')}};
\ No newline at end of file
index 54ad9e8..af9e8d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb04=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save'];(function(_0x5b9571,_0x18534a){var _0x368123=function(_0x30656){while(--_0x30656){_0x5b9571['push'](_0x5b9571['shift']());}};_0x368123(++_0x18534a);}(_0xcb04,0x10e));var _0x4cb0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xcb04[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x4cb0('0x0'));var UserVoiceQueueRt=require(_0x4cb0('0x1'))['db'][_0x4cb0('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x4cb0('0x3')](0x0);var events={'afterCreate':_0x4cb0('0x4'),'afterUpdate':_0x4cb0('0x5'),'afterDestroy':_0x4cb0('0x6')};function emitEvent(_0x28612f){return function(_0x21516e,_0x3f1f94,_0x359dac){UserVoiceQueueRtEvents[_0x4cb0('0x7')](_0x28612f+':'+_0x21516e['id'],_0x21516e);UserVoiceQueueRtEvents[_0x4cb0('0x7')](_0x28612f,_0x21516e);_0x359dac(null);};}for(var e in events){if(events[_0x4cb0('0x8')](e)){var event=events[e];UserVoiceQueueRt[_0x4cb0('0x9')](e,emitEvent(event));}}module[_0x4cb0('0xa')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x1c79=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserVoiceQueueRt'];(function(_0x2132a3,_0x4639e9){var _0x21890c=function(_0x34b73d){while(--_0x34b73d){_0x2132a3['push'](_0x2132a3['shift']());}};_0x21890c(++_0x4639e9);}(_0x1c79,0x129));var _0x91c7=function(_0xca4478,_0x13f3ec){_0xca4478=_0xca4478-0x0;var _0xee12e9=_0x1c79[_0xca4478];return _0xee12e9;};'use strict';var EventEmitter=require(_0x91c7('0x0'));var UserVoiceQueueRt=require(_0x91c7('0x1'))['db'][_0x91c7('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x91c7('0x3'),'afterUpdate':_0x91c7('0x4'),'afterDestroy':_0x91c7('0x5')};function emitEvent(_0x4021c9){return function(_0x4e2408,_0x1a06fe,_0xa6cdf5){UserVoiceQueueRtEvents['emit'](_0x4021c9+':'+_0x4e2408['id'],_0x4e2408);UserVoiceQueueRtEvents[_0x91c7('0x6')](_0x4021c9,_0x4e2408);_0xa6cdf5(null);};}for(var e in events){if(events[_0x91c7('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0x91c7('0x8')](e,emitEvent(event));}}module[_0x91c7('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index a96db54..4f0fde9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbea=['user_has_voice_queues_rt','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports','define'];(function(_0x1ae31c,_0x8dcd2d){var _0x19519d=function(_0x22b8cd){while(--_0x22b8cd){_0x1ae31c['push'](_0x1ae31c['shift']());}};_0x19519d(++_0x8dcd2d);}(_0xbbea,0x11f));var _0xabbe=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xbbea[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xabbe('0x0'));var util=require(_0xabbe('0x1'));var logger=require(_0xabbe('0x2'))('api');var moment=require(_0xabbe('0x3'));var BPromise=require(_0xabbe('0x4'));var rp=require(_0xabbe('0x5'));var fs=require('fs');var path=require(_0xabbe('0x6'));var rimraf=require('rimraf');var config=require(_0xabbe('0x7'));var attributes=require('./userVoiceQueueRt.attributes');module[_0xabbe('0x8')]=function(_0x2cca64,_0x5f51b3){return _0x2cca64[_0xabbe('0x9')]('UserVoiceQueueRt',attributes,{'tableName':_0xabbe('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2a57=['UserVoiceQueueRt','util','api','moment','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define'];(function(_0x184bfb,_0x37eace){var _0x54f44a=function(_0x225587){while(--_0x225587){_0x184bfb['push'](_0x184bfb['shift']());}};_0x54f44a(++_0x37eace);}(_0x2a57,0x18d));var _0x72a5=function(_0x3be0c4,_0x5b7eff){_0x3be0c4=_0x3be0c4-0x0;var _0x11af9f=_0x2a57[_0x3be0c4];return _0x11af9f;};'use strict';var _=require('lodash');var util=require(_0x72a5('0x0'));var logger=require('../../config/logger')(_0x72a5('0x1'));var moment=require(_0x72a5('0x2'));var BPromise=require('bluebird');var rp=require(_0x72a5('0x3'));var fs=require('fs');var path=require(_0x72a5('0x4'));var rimraf=require(_0x72a5('0x5'));var config=require(_0x72a5('0x6'));var attributes=require(_0x72a5('0x7'));module[_0x72a5('0x8')]=function(_0x425865,_0x19829e){return _0x425865[_0x72a5('0x9')](_0x72a5('0xa'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f7ccdf5..2aa6910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdf1=['COUNT','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','then','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where'];(function(_0x4c1088,_0x3ff863){var _0x54a35e=function(_0x2ddfed){while(--_0x2ddfed){_0x4c1088['push'](_0x4c1088['shift']());}};_0x54a35e(++_0x3ff863);}(_0xcdf1,0x99));var _0x1cdf=function(_0xd845db,_0x57f0dd){_0xd845db=_0xd845db-0x0;var _0xa92be1=_0xcdf1[_0xd845db];return _0xa92be1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cdf('0x0'));var BPromise=require(_0x1cdf('0x1'));var rs=require(_0x1cdf('0x2'));var fs=require('fs');var Redis=require(_0x1cdf('0x3'));var db=require(_0x1cdf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1cdf('0x5'))(_0x1cdf('0x6'));var config=require(_0x1cdf('0x7'));var jayson=require(_0x1cdf('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x1cdf('0x9')]=_[_0x1cdf('0xa')](config[_0x1cdf('0x9')],{'host':_0x1cdf('0xb'),'port':0x18eb});var socket=require(_0x1cdf('0xc'))(new Redis(config[_0x1cdf('0x9')]));require(_0x1cdf('0xd'))[_0x1cdf('0xe')](socket);function respondWithRpcPromise(_0x2eab24,_0x14b3c7,_0x4cfb2c){return new BPromise(function(_0x4b614d,_0x33801e){return client[_0x1cdf('0xf')](_0x2eab24,_0x4cfb2c)['then'](function(_0x2faa19){logger['info'](_0x1cdf('0x10'),_0x14b3c7,_0x1cdf('0x11'));logger[_0x1cdf('0x12')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x14b3c7,_0x1cdf('0x11'),JSON[_0x1cdf('0x13')](_0x2faa19));if(_0x2faa19[_0x1cdf('0x14')]){if(_0x2faa19['error'][_0x1cdf('0x15')]===0x1f4){logger[_0x1cdf('0x14')](_0x1cdf('0x10'),_0x14b3c7,_0x2faa19[_0x1cdf('0x14')][_0x1cdf('0x16')]);return _0x33801e(_0x2faa19['error'][_0x1cdf('0x16')]);}logger[_0x1cdf('0x14')](_0x1cdf('0x10'),_0x14b3c7,_0x2faa19['error'][_0x1cdf('0x16')]);return _0x4b614d(_0x2faa19[_0x1cdf('0x14')][_0x1cdf('0x16')]);}else{logger[_0x1cdf('0x17')](_0x1cdf('0x10'),_0x14b3c7,'request\x20sent');_0x4b614d(_0x2faa19[_0x1cdf('0x18')][_0x1cdf('0x16')]);}})[_0x1cdf('0x19')](function(_0x514962){logger[_0x1cdf('0x14')](_0x1cdf('0x10'),_0x14b3c7,_0x514962);_0x33801e(_0x514962);});});}exports[_0x1cdf('0x1a')]=function(_0x3abcad){var _0x400fa6=this;return new Promise(function(_0x129338,_0x13eca2){return db[_0x1cdf('0x1b')][_0x1cdf('0x1c')]({'raw':_0x3abcad[_0x1cdf('0x1d')]?_0x3abcad['options'][_0x1cdf('0x1e')]===undefined?!![]:![]:!![],'where':_0x3abcad[_0x1cdf('0x1d')]?_0x3abcad[_0x1cdf('0x1d')][_0x1cdf('0x1f')]||null:null,'attributes':[[db['sequelize']['fn'](_0x1cdf('0x20'),db[_0x1cdf('0x21')]['fn']('IF',db[_0x1cdf('0x21')][_0x1cdf('0x22')](_0x1cdf('0x23')))),'outboundQueuePauses']]})[_0x1cdf('0x24')](function(_0x52be23){logger['info'](_0x1cdf('0x1a'),_0x3abcad);logger[_0x1cdf('0x12')]('GetVoiceQueueRtPauses',_0x3abcad,JSON['stringify'](_0x52be23));_0x129338(_0x52be23);})['catch'](function(_0x48701c){logger[_0x1cdf('0x14')]('GetVoiceQueueRtPauses',_0x48701c[_0x1cdf('0x16')],_0x3abcad);_0x13eca2(_0x400fa6[_0x1cdf('0x14')](0x1f4,_0x48701c['message']));});});};
\ No newline at end of file
+var _0xa4db=['UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','COUNT','sequelize','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','then','catch','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','defaults','socket.io-emitter','redis','register','request','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x18e913,_0x449cc0){var _0x204cb9=function(_0x4aef22){while(--_0x4aef22){_0x18e913['push'](_0x18e913['shift']());}};_0x204cb9(++_0x449cc0);}(_0xa4db,0x167));var _0xba4d=function(_0x2759fe,_0x4cc3e7){_0x2759fe=_0x2759fe-0x0;var _0x5d1a25=_0xa4db[_0x2759fe];return _0x5d1a25;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xba4d('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xba4d('0x1'));var db=require(_0xba4d('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xba4d('0x3'))(_0xba4d('0x4'));var config=require(_0xba4d('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xba4d('0x6')]({'port':0x232a});config['redis']=_[_0xba4d('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xba4d('0x8'))(new Redis(config[_0xba4d('0x9')]));require('./userVoiceQueueRt.socket')[_0xba4d('0xa')](socket);function respondWithRpcPromise(_0x188ba7,_0x1f0b48,_0x5cd2f7){return new BPromise(function(_0x3c83e3,_0x5eb7d0){return client[_0xba4d('0xb')](_0x188ba7,_0x5cd2f7)['then'](function(_0x29d01a){logger['info'](_0xba4d('0xc'),_0x1f0b48,_0xba4d('0xd'));logger[_0xba4d('0xe')](_0xba4d('0xf'),_0x1f0b48,'request\x20sent',JSON[_0xba4d('0x10')](_0x29d01a));if(_0x29d01a[_0xba4d('0x11')]){if(_0x29d01a[_0xba4d('0x11')][_0xba4d('0x12')]===0x1f4){logger[_0xba4d('0x11')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x1f0b48,_0x29d01a[_0xba4d('0x11')][_0xba4d('0x13')]);return _0x5eb7d0(_0x29d01a[_0xba4d('0x11')][_0xba4d('0x13')]);}logger[_0xba4d('0x11')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x1f0b48,_0x29d01a[_0xba4d('0x11')]['message']);return _0x3c83e3(_0x29d01a[_0xba4d('0x11')]['message']);}else{logger[_0xba4d('0x14')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x1f0b48,'request\x20sent');_0x3c83e3(_0x29d01a[_0xba4d('0x15')][_0xba4d('0x13')]);}})['catch'](function(_0x47fb5a){logger['error'](_0xba4d('0xc'),_0x1f0b48,_0x47fb5a);_0x5eb7d0(_0x47fb5a);});});}exports[_0xba4d('0x16')]=function(_0x5dda30){var _0x3bf19f=this;return new Promise(function(_0x41f0d3,_0x3c6bdc){return db[_0xba4d('0x17')][_0xba4d('0x18')]({'raw':_0x5dda30[_0xba4d('0x19')]?_0x5dda30['options'][_0xba4d('0x1a')]===undefined?!![]:![]:!![],'where':_0x5dda30['options']?_0x5dda30[_0xba4d('0x19')][_0xba4d('0x1b')]||null:null,'attributes':[[db['sequelize']['fn'](_0xba4d('0x1c'),db[_0xba4d('0x1d')]['fn']('IF',db[_0xba4d('0x1d')]['literal'](_0xba4d('0x1e')))),_0xba4d('0x1f')]]})[_0xba4d('0x20')](function(_0x42efc7){logger['info'](_0xba4d('0x16'),_0x5dda30);logger['debug'](_0xba4d('0x16'),_0x5dda30,JSON[_0xba4d('0x10')](_0x42efc7));_0x41f0d3(_0x42efc7);})[_0xba4d('0x21')](function(_0x1366c3){logger[_0xba4d('0x11')](_0xba4d('0x16'),_0x1366c3['message'],_0x5dda30);_0x3c6bdc(_0x3bf19f[_0xba4d('0x11')](0x1f4,_0x1366c3[_0xba4d('0x13')]));});});};
\ No newline at end of file
index d8f167e..9f989f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f3=['save','remove','emit','removeListener','length','userVoiceQueueRt:','./userVoiceQueueRt.events'];(function(_0x34e714,_0x83de64){var _0x3045b9=function(_0x31071c){while(--_0x31071c){_0x34e714['push'](_0x34e714['shift']());}};_0x3045b9(++_0x83de64);}(_0x74f3,0x164));var _0x374f=function(_0xb26465,_0x138e2c){_0xb26465=_0xb26465-0x0;var _0x23bc34=_0x74f3[_0xb26465];return _0x23bc34;};'use strict';var UserVoiceQueueRtEvents=require(_0x374f('0x0'));var events=[_0x374f('0x1'),_0x374f('0x2'),'update'];function createListener(_0x407670,_0x29c056){return function(_0x3dee9d){_0x29c056[_0x374f('0x3')](_0x407670,_0x3dee9d);};}function removeListener(_0x4a3be7,_0x3db0a){return function(){UserVoiceQueueRtEvents[_0x374f('0x4')](_0x4a3be7,_0x3db0a);};}exports['register']=function(_0x1292f2){for(var _0x1eb333=0x0,_0x405e93=events[_0x374f('0x5')];_0x1eb333<_0x405e93;_0x1eb333++){var _0x3bcc86=events[_0x1eb333];var _0x394073=createListener(_0x374f('0x6')+_0x3bcc86,_0x1292f2);UserVoiceQueueRtEvents['on'](_0x3bcc86,_0x394073);}};
\ No newline at end of file
+var _0x806b=['removeListener','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','update','emit'];(function(_0x1ac72b,_0x27b2ae){var _0x1e1f3f=function(_0x141ddb){while(--_0x141ddb){_0x1ac72b['push'](_0x1ac72b['shift']());}};_0x1e1f3f(++_0x27b2ae);}(_0x806b,0x163));var _0xb806=function(_0x1d4064,_0x538a83){_0x1d4064=_0x1d4064-0x0;var _0x3e4414=_0x806b[_0x1d4064];return _0x3e4414;};'use strict';var UserVoiceQueueRtEvents=require(_0xb806('0x0'));var events=[_0xb806('0x1'),_0xb806('0x2'),_0xb806('0x3')];function createListener(_0x448368,_0x4648ea){return function(_0x307014){_0x4648ea[_0xb806('0x4')](_0x448368,_0x307014);};}function removeListener(_0x595117,_0x32c93c){return function(){UserVoiceQueueRtEvents[_0xb806('0x5')](_0x595117,_0x32c93c);};}exports[_0xb806('0x6')]=function(_0xc0353b){for(var _0x52107e=0x0,_0x9b2858=events[_0xb806('0x7')];_0x52107e<_0x9b2858;_0x52107e++){var _0x4fdc38=events[_0x52107e];var _0x3525e8=createListener(_0xb806('0x8')+_0x4fdc38,_0xc0353b);UserVoiceQueueRtEvents['on'](_0x4fdc38,_0x3525e8);}};
\ No newline at end of file
index 1dda33c..d5c0390 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x17caca,_0x2bc731){var _0x1d9b18=function(_0x1c7190){while(--_0x1c7190){_0x17caca['push'](_0x17caca['shift']());}};_0x1d9b18(++_0x2bc731);}(_0x9c44,0x178));var _0x49c4=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9c44[_0x4d613c];return _0x301fe3;};'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 0b7e031..8bcc373 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa952=['exports','INTEGER','sequelize'];(function(_0x12b526,_0x407b8b){var _0xccb2bd=function(_0x1fefe0){while(--_0x1fefe0){_0x12b526['push'](_0x12b526['shift']());}};_0xccb2bd(++_0x407b8b);}(_0xa952,0x1b2));var _0x2a95=function(_0x1846f2,_0x353922){_0x1846f2=_0x1846f2-0x0;var _0x3f2021=_0xa952[_0x1846f2];return _0x3f2021;};'use strict';var Sequelize=require(_0x2a95('0x0'));module[_0x2a95('0x1')]={'penalty':{'type':Sequelize[_0x2a95('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa60e=['INTEGER','sequelize','exports'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0xa60e,0x1c3));var _0xea60=function(_0x12fe29,_0x1a1dea){_0x12fe29=_0x12fe29-0x0;var _0xff8473=_0xa60e[_0x12fe29];return _0xff8473;};'use strict';var Sequelize=require(_0xea60('0x0'));module[_0xea60('0x1')]={'penalty':{'type':Sequelize[_0xea60('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index dc3e86b..7f04811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x103a=['moment','bluebird','request-promise','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','lodash','util','../../config/logger','api'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x103a,0xb0));var _0xa103=function(_0x4e0d45,_0x55f937){_0x4e0d45=_0x4e0d45-0x0;var _0xb25758=_0x103a[_0x4e0d45];return _0xb25758;};'use strict';var _=require(_0xa103('0x0'));var util=require(_0xa103('0x1'));var logger=require(_0xa103('0x2'))(_0xa103('0x3'));var moment=require(_0xa103('0x4'));var BPromise=require(_0xa103('0x5'));var rp=require(_0xa103('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa103('0x7'));var attributes=require(_0xa103('0x8'));module[_0xa103('0x9')]=function(_0x2553b2,_0xe01b41){return _0x2553b2[_0xa103('0xa')](_0xa103('0xb'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xac4d=['exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','./userWhatsappQueue.attributes'];(function(_0x37b426,_0x2f1a8c){var _0x438eee=function(_0x3b6703){while(--_0x3b6703){_0x37b426['push'](_0x37b426['shift']());}};_0x438eee(++_0x2f1a8c);}(_0xac4d,0x1f0));var _0xdac4=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xac4d[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xdac4('0x0'));var util=require(_0xdac4('0x1'));var logger=require(_0xdac4('0x2'))(_0xdac4('0x3'));var moment=require('moment');var BPromise=require(_0xdac4('0x4'));var rp=require(_0xdac4('0x5'));var fs=require('fs');var path=require(_0xdac4('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xdac4('0x7'));module[_0xdac4('0x8')]=function(_0x581870,_0x27c757){return _0x581870[_0xdac4('0x9')](_0xdac4('0xa'),attributes,{'tableName':_0xdac4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 532d9cd..2b983fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59b4=['http','request','then','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','error','message','info','result','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x75869b,_0x847a55){var _0x2c7522=function(_0x50a6f1){while(--_0x50a6f1){_0x75869b['push'](_0x75869b['shift']());}};_0x2c7522(++_0x847a55);}(_0x59b4,0xa3));var _0x459b=function(_0x556bb1,_0x34830d){_0x556bb1=_0x556bb1-0x0;var _0x45455f=_0x59b4[_0x556bb1];return _0x45455f;};'use strict';var _=require(_0x459b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x459b('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x459b('0x2'));var db=require(_0x459b('0x3'))['db'];var utils=require(_0x459b('0x4'));var logger=require(_0x459b('0x5'))(_0x459b('0x6'));var config=require(_0x459b('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x459b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xcbd526,_0x2ce91b,_0x245e2d){return new BPromise(function(_0x23c44f,_0x1860cd){return client[_0x459b('0x9')](_0xcbd526,_0x245e2d)[_0x459b('0xa')](function(_0x42b41a){logger['info'](_0x459b('0xb'),_0x2ce91b,_0x459b('0xc'));logger[_0x459b('0xd')](_0x459b('0xe'),_0x2ce91b,_0x459b('0xc'),JSON['stringify'](_0x42b41a));if(_0x42b41a[_0x459b('0xf')]){if(_0x42b41a[_0x459b('0xf')]['code']===0x1f4){logger[_0x459b('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2ce91b,_0x42b41a[_0x459b('0xf')][_0x459b('0x10')]);return _0x1860cd(_0x42b41a[_0x459b('0xf')][_0x459b('0x10')]);}logger['error'](_0x459b('0xb'),_0x2ce91b,_0x42b41a[_0x459b('0xf')]['message']);return _0x23c44f(_0x42b41a[_0x459b('0xf')][_0x459b('0x10')]);}else{logger[_0x459b('0x11')](_0x459b('0xb'),_0x2ce91b,_0x459b('0xc'));_0x23c44f(_0x42b41a[_0x459b('0x12')][_0x459b('0x10')]);}})['catch'](function(_0x188319){logger[_0x459b('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2ce91b,_0x188319);_0x1860cd(_0x188319);});});}
\ No newline at end of file
+var _0xd71c=['rpc','../../config/environment','client','http','request','info','UserWhatsappQueue,\x20%s,\x20%s','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x1e03e4,_0x362f76){var _0x4a887e=function(_0x13f548){while(--_0x13f548){_0x1e03e4['push'](_0x1e03e4['shift']());}};_0x4a887e(++_0x362f76);}(_0xd71c,0x14e));var _0xcd71=function(_0x14ff7e,_0x508e69){_0x14ff7e=_0x14ff7e-0x0;var _0x594063=_0xd71c[_0x14ff7e];return _0x594063;};'use strict';var _=require(_0xcd71('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xcd71('0x1'));var rs=require(_0xcd71('0x2'));var fs=require('fs');var Redis=require(_0xcd71('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xcd71('0x4'));var logger=require(_0xcd71('0x5'))(_0xcd71('0x6'));var config=require(_0xcd71('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xcd71('0x8')][_0xcd71('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3b515f,_0x1eee21,_0x35166e){return new BPromise(function(_0x4c0206,_0x47704d){return client[_0xcd71('0xa')](_0x3b515f,_0x35166e)['then'](function(_0x5c4c87){logger[_0xcd71('0xb')](_0xcd71('0xc'),_0x1eee21,'request\x20sent');logger['debug'](_0xcd71('0xd'),_0x1eee21,_0xcd71('0xe'),JSON[_0xcd71('0xf')](_0x5c4c87));if(_0x5c4c87['error']){if(_0x5c4c87['error']['code']===0x1f4){logger[_0xcd71('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x1eee21,_0x5c4c87['error']['message']);return _0x47704d(_0x5c4c87[_0xcd71('0x10')]['message']);}logger['error'](_0xcd71('0xc'),_0x1eee21,_0x5c4c87[_0xcd71('0x10')][_0xcd71('0x11')]);return _0x4c0206(_0x5c4c87['error']['message']);}else{logger['info'](_0xcd71('0xc'),_0x1eee21,_0xcd71('0xe'));_0x4c0206(_0x5c4c87[_0xcd71('0x12')][_0xcd71('0x11')]);}})[_0xcd71('0x13')](function(_0x5c87d3){logger['error'](_0xcd71('0xc'),_0x1eee21,_0x5c87d3);_0x47704d(_0x5c87d3);});});}
\ No newline at end of file
index dbeb405..d5e8f46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd691=['delete','/:id','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','post','create','put','update'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xd691,0xe6));var _0x1d69=function(_0x2a78d9,_0x271b92){_0x2a78d9=_0x2a78d9-0x0;var _0x293145=_0xd691[_0x2a78d9];return _0x293145;};'use strict';var multer=require(_0x1d69('0x0'));var util=require(_0x1d69('0x1'));var path=require(_0x1d69('0x2'));var timeout=require('connect-timeout');var express=require(_0x1d69('0x3'));var router=express[_0x1d69('0x4')]();var fs_extra=require(_0x1d69('0x5'));var auth=require(_0x1d69('0x6'));var interaction=require(_0x1d69('0x7'));var config=require(_0x1d69('0x8'));var controller=require(_0x1d69('0x9'));router[_0x1d69('0xa')]('/',auth[_0x1d69('0xb')](),controller[_0x1d69('0xc')]);router['get']('/:id',auth[_0x1d69('0xb')](),controller['show']);router[_0x1d69('0xd')]('/',auth[_0x1d69('0xb')](),controller[_0x1d69('0xe')]);router[_0x1d69('0xf')]('/:id',auth[_0x1d69('0xb')](),controller[_0x1d69('0x10')]);router[_0x1d69('0x11')](_0x1d69('0x12'),auth[_0x1d69('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7119=['../../components/auth/service','../../components/interaction/service','./variable.controller','get','isAuthenticated','index','show','post','create','/:id','update','destroy','exports','util','connect-timeout','Router','fs-extra'];(function(_0x2605dc,_0x50cf7e){var _0x4568c9=function(_0x447f7c){while(--_0x447f7c){_0x2605dc['push'](_0x2605dc['shift']());}};_0x4568c9(++_0x50cf7e);}(_0x7119,0x1c7));var _0x9711=function(_0x50a004,_0x193d84){_0x50a004=_0x50a004-0x0;var _0x5e9992=_0x7119[_0x50a004];return _0x5e9992;};'use strict';var multer=require('multer');var util=require(_0x9711('0x0'));var path=require('path');var timeout=require(_0x9711('0x1'));var express=require('express');var router=express[_0x9711('0x2')]();var fs_extra=require(_0x9711('0x3'));var auth=require(_0x9711('0x4'));var interaction=require(_0x9711('0x5'));var config=require('../../config/environment');var controller=require(_0x9711('0x6'));router[_0x9711('0x7')]('/',auth[_0x9711('0x8')](),controller[_0x9711('0x9')]);router[_0x9711('0x7')]('/:id',auth[_0x9711('0x8')](),controller[_0x9711('0xa')]);router[_0x9711('0xb')]('/',auth['isAuthenticated'](),controller[_0x9711('0xc')]);router['put'](_0x9711('0xd'),auth[_0x9711('0x8')](),controller[_0x9711('0xe')]);router['delete'](_0x9711('0xd'),auth[_0x9711('0x8')](),controller[_0x9711('0xf')]);module[_0x9711('0x10')]=router;
\ No newline at end of file
index d7915c4..4f8e10c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45a7=['STRING','name','sequelize','exports'];(function(_0x3ceb7b,_0x659062){var _0x548422=function(_0x2b3110){while(--_0x2b3110){_0x3ceb7b['push'](_0x3ceb7b['shift']());}};_0x548422(++_0x659062);}(_0x45a7,0x17e));var _0x745a=function(_0x2f2dba,_0x451d2e){_0x2f2dba=_0x2f2dba-0x0;var _0x27e85e=_0x45a7[_0x2f2dba];return _0x27e85e;};'use strict';var Sequelize=require(_0x745a('0x0'));module[_0x745a('0x1')]={'name':{'type':Sequelize[_0x745a('0x2')],'unique':_0x745a('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x745a('0x2')]}};
\ No newline at end of file
+var _0x4fe2=['name','sequelize'];(function(_0x163d42,_0x3cabea){var _0x59186c=function(_0x139ab9){while(--_0x139ab9){_0x163d42['push'](_0x163d42['shift']());}};_0x59186c(++_0x3cabea);}(_0x4fe2,0x1ad));var _0x24fe=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x4fe2[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x24fe('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x24fe('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index dcfeaaf..1a9931b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab23=['sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','json','update','then','destroy','get','Variables','error','name','index','Variable','rawAttributes','key','keys','query','filters','intersection','model','attributes','fields','length','nolimit','limit','order','sort','pick','merge','type','filter','options','includeAll','include','rows','catch','params','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','bluebird','path'];(function(_0x104c8e,_0x4f26c8){var _0x39656b=function(_0x460988){while(--_0x460988){_0x104c8e['push'](_0x104c8e['shift']());}};_0x39656b(++_0x4f26c8);}(_0xab23,0x162));var _0x3ab2=function(_0x38149a,_0x1602e1){_0x38149a=_0x38149a-0x0;var _0x4fd47a=_0xab23[_0x38149a];return _0x4fd47a;};'use strict';var emlformat=require(_0x3ab2('0x0'));var rimraf=require(_0x3ab2('0x1'));var zipdir=require(_0x3ab2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3ab2('0x3'));var moment=require('moment');var BPromise=require(_0x3ab2('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x3ab2('0x5'));var sox=require(_0x3ab2('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3ab2('0x7'));var _=require(_0x3ab2('0x8'));var squel=require(_0x3ab2('0x9'));var crypto=require(_0x3ab2('0xa'));var jsforce=require(_0x3ab2('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x3ab2('0xc'));var querystring=require('querystring');var Papa=require(_0x3ab2('0xd'));var Redis=require('ioredis');var authService=require(_0x3ab2('0xe'));var qs=require(_0x3ab2('0xf'));var as=require(_0x3ab2('0x10'));var hardwareService=require(_0x3ab2('0x11'));var logger=require(_0x3ab2('0x12'))('api');var utils=require(_0x3ab2('0x13'));var config=require(_0x3ab2('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x3ab2('0x15'))['db'];function respondWithStatusCode(_0x1d01b1,_0x342c8a){_0x342c8a=_0x342c8a||0xcc;return function(_0x33ed57){if(_0x33ed57){return _0x1d01b1[_0x3ab2('0x16')](_0x342c8a);}return _0x1d01b1[_0x3ab2('0x17')](_0x342c8a)[_0x3ab2('0x18')]();};}function respondWithResult(_0x1566c7,_0x2ef1e4){_0x2ef1e4=_0x2ef1e4||0xc8;return function(_0x2d2167){if(_0x2d2167){return _0x1566c7['status'](_0x2ef1e4)['json'](_0x2d2167);}};}function respondWithFilteredResult(_0x5691b6,_0x33005d){return function(_0x375d97){if(_0x375d97){var _0x54375f=typeof _0x33005d[_0x3ab2('0x19')]===_0x3ab2('0x1a')&&typeof _0x33005d['limit']===_0x3ab2('0x1a');var _0x4dd7da=_0x375d97[_0x3ab2('0x1b')];var _0x15961f=_0x54375f?0x0:_0x33005d[_0x3ab2('0x19')];var _0x152217=_0x54375f?_0x375d97[_0x3ab2('0x1b')]:_0x33005d[_0x3ab2('0x19')]+_0x33005d['limit'];var _0x32e5cf;if(_0x152217>=_0x4dd7da){_0x152217=_0x4dd7da;_0x32e5cf=0xc8;}else{_0x32e5cf=0xce;}_0x5691b6[_0x3ab2('0x17')](_0x32e5cf);return _0x5691b6[_0x3ab2('0x1c')]('Content-Range',_0x15961f+'-'+_0x152217+'/'+_0x4dd7da)[_0x3ab2('0x1d')](_0x375d97);}return null;};}function patchUpdates(_0x37e26f){return function(_0x2e943b){try{jsonpatch['apply'](_0x2e943b,_0x37e26f,!![]);}catch(_0x23be3f){return BPromise['reject'](_0x23be3f);}return _0x2e943b['save']();};}function saveUpdates(_0x3f41e0,_0x1f4db9){return function(_0x33ecc8){if(_0x33ecc8){return _0x33ecc8[_0x3ab2('0x1e')](_0x3f41e0)[_0x3ab2('0x1f')](function(_0x5ae40b){return _0x5ae40b;});}return null;};}function removeEntity(_0x47e459,_0x58234e){return function(_0x179d88){if(_0x179d88){return _0x179d88[_0x3ab2('0x20')]()[_0x3ab2('0x1f')](function(){var _0x4159e3=_0x179d88[_0x3ab2('0x21')]({'plain':!![]});var _0x122c0a=_0x3ab2('0x22');return db['UserProfileResource'][_0x3ab2('0x20')]({'where':{'type':_0x122c0a,'resourceId':_0x4159e3['id']}})[_0x3ab2('0x1f')](function(){return _0x179d88;});})[_0x3ab2('0x1f')](function(){_0x47e459['status'](0xcc)[_0x3ab2('0x18')]();});}};}function handleEntityNotFound(_0x3f98b9,_0x34fac0){return function(_0x96e68b){if(!_0x96e68b){_0x3f98b9[_0x3ab2('0x16')](0x194);}return _0x96e68b;};}function handleError(_0xd09724,_0x594fbf){_0x594fbf=_0x594fbf||0x1f4;return function(_0x32b313){logger[_0x3ab2('0x23')](_0x32b313['stack']);if(_0x32b313['name']){delete _0x32b313[_0x3ab2('0x24')];}_0xd09724[_0x3ab2('0x17')](_0x594fbf)['send'](_0x32b313);};}exports[_0x3ab2('0x25')]=function(_0x22be46,_0x1b950d){var _0x25d334={},_0x28c637={},_0x515380={'count':0x0,'rows':[]};var _0x25b32f=_['map'](db[_0x3ab2('0x26')][_0x3ab2('0x27')],function(_0x3c29ce){return{'name':_0x3c29ce['fieldName'],'type':_0x3c29ce['type'][_0x3ab2('0x28')]};});_0x28c637['model']=_['map'](_0x25b32f,_0x3ab2('0x24'));_0x28c637['query']=_[_0x3ab2('0x29')](_0x22be46[_0x3ab2('0x2a')]);_0x28c637[_0x3ab2('0x2b')]=_[_0x3ab2('0x2c')](_0x28c637[_0x3ab2('0x2d')],_0x28c637[_0x3ab2('0x2a')]);_0x25d334[_0x3ab2('0x2e')]=_[_0x3ab2('0x2c')](_0x28c637['model'],qs[_0x3ab2('0x2f')](_0x22be46[_0x3ab2('0x2a')][_0x3ab2('0x2f')]));_0x25d334[_0x3ab2('0x2e')]=_0x25d334[_0x3ab2('0x2e')][_0x3ab2('0x30')]?_0x25d334[_0x3ab2('0x2e')]:_0x28c637['model'];if(!_0x22be46['query']['hasOwnProperty'](_0x3ab2('0x31'))){_0x25d334[_0x3ab2('0x32')]=qs[_0x3ab2('0x32')](_0x22be46[_0x3ab2('0x2a')][_0x3ab2('0x32')]);_0x25d334['offset']=qs[_0x3ab2('0x19')](_0x22be46[_0x3ab2('0x2a')][_0x3ab2('0x19')]);}_0x25d334[_0x3ab2('0x33')]=qs[_0x3ab2('0x34')](_0x22be46[_0x3ab2('0x2a')][_0x3ab2('0x34')]);_0x25d334['where']=qs[_0x3ab2('0x2b')](_[_0x3ab2('0x35')](_0x22be46[_0x3ab2('0x2a')],_0x28c637[_0x3ab2('0x2b')]),_0x25b32f);if(_0x22be46[_0x3ab2('0x2a')]['filter']){_0x25d334['where']=_[_0x3ab2('0x36')](_0x25d334['where'],{'$or':_['map'](_0x25b32f,function(_0x345501){if(_0x345501[_0x3ab2('0x37')]!=='VIRTUAL'){var _0x1cb4e1={};_0x1cb4e1[_0x345501['name']]={'$like':'%'+_0x22be46[_0x3ab2('0x2a')][_0x3ab2('0x38')]+'%'};return _0x1cb4e1;}})});}_0x25d334=_[_0x3ab2('0x36')]({},_0x25d334,_0x22be46[_0x3ab2('0x39')]);var _0x38fc2a={'where':_0x25d334['where']};return db[_0x3ab2('0x26')][_0x3ab2('0x1b')](_0x38fc2a)['then'](function(_0x5e61b0){_0x515380[_0x3ab2('0x1b')]=_0x5e61b0;if(_0x22be46['query'][_0x3ab2('0x3a')]){_0x25d334[_0x3ab2('0x3b')]=[{'all':!![]}];}return db[_0x3ab2('0x26')]['findAll'](_0x25d334);})[_0x3ab2('0x1f')](function(_0x3d3468){_0x515380[_0x3ab2('0x3c')]=_0x3d3468;return _0x515380;})[_0x3ab2('0x1f')](respondWithFilteredResult(_0x1b950d,_0x25d334))[_0x3ab2('0x3d')](handleError(_0x1b950d,null));};exports['show']=function(_0x3d4a21,_0x185d11){var _0x500174={'raw':!![],'where':{'id':_0x3d4a21[_0x3ab2('0x3e')]['id']}},_0x51394d={};_0x51394d[_0x3ab2('0x2d')]=_[_0x3ab2('0x29')](db[_0x3ab2('0x26')][_0x3ab2('0x27')]);_0x51394d[_0x3ab2('0x2a')]=_['keys'](_0x3d4a21[_0x3ab2('0x2a')]);_0x51394d['filters']=_[_0x3ab2('0x2c')](_0x51394d['model'],_0x51394d[_0x3ab2('0x2a')]);_0x500174[_0x3ab2('0x2e')]=_[_0x3ab2('0x2c')](_0x51394d[_0x3ab2('0x2d')],qs[_0x3ab2('0x2f')](_0x3d4a21[_0x3ab2('0x2a')][_0x3ab2('0x2f')]));_0x500174['attributes']=_0x500174[_0x3ab2('0x2e')][_0x3ab2('0x30')]?_0x500174[_0x3ab2('0x2e')]:_0x51394d[_0x3ab2('0x2d')];if(_0x3d4a21[_0x3ab2('0x2a')][_0x3ab2('0x3a')]){_0x500174[_0x3ab2('0x3b')]=[{'all':!![]}];}_0x500174=_[_0x3ab2('0x36')]({},_0x500174,_0x3d4a21[_0x3ab2('0x39')]);return db['Variable'][_0x3ab2('0x3f')](_0x500174)[_0x3ab2('0x1f')](handleEntityNotFound(_0x185d11,null))[_0x3ab2('0x1f')](respondWithResult(_0x185d11,null))['catch'](handleError(_0x185d11,null));};exports['create']=function(_0x442e79,_0x29333a){return db[_0x3ab2('0x26')]['create'](_0x442e79[_0x3ab2('0x40')],{})['then'](function(_0x1a0d34){var _0x2d8f89=_0x442e79[_0x3ab2('0x41')][_0x3ab2('0x21')]({'plain':!![]});if(!_0x2d8f89)throw new Error(_0x3ab2('0x42'));if(_0x2d8f89[_0x3ab2('0x43')]===_0x3ab2('0x41')){var _0x4d5a22=_0x1a0d34[_0x3ab2('0x21')]({'plain':!![]});var _0x4bfada=_0x3ab2('0x22');return db['UserProfileSection'][_0x3ab2('0x3f')]({'where':{'name':_0x4bfada,'userProfileId':_0x2d8f89['userProfileId']},'raw':!![]})[_0x3ab2('0x1f')](function(_0x2fcdeb){if(_0x2fcdeb&&_0x2fcdeb[_0x3ab2('0x44')]===0x0){return db[_0x3ab2('0x45')][_0x3ab2('0x46')]({'name':_0x4d5a22[_0x3ab2('0x24')],'resourceId':_0x4d5a22['id'],'type':_0x2fcdeb[_0x3ab2('0x24')],'sectionId':_0x2fcdeb['id']},{})[_0x3ab2('0x1f')](function(){return _0x1a0d34;});}else{return _0x1a0d34;}})[_0x3ab2('0x3d')](function(_0xdb9dcb){logger[_0x3ab2('0x23')](_0x3ab2('0x47'),_0xdb9dcb);throw _0xdb9dcb;});}return _0x1a0d34;})[_0x3ab2('0x1f')](respondWithResult(_0x29333a,0xc9))[_0x3ab2('0x3d')](handleError(_0x29333a,null));};exports[_0x3ab2('0x1e')]=function(_0x40de35,_0x40e2a6){if(_0x40de35[_0x3ab2('0x40')]['id']){delete _0x40de35[_0x3ab2('0x40')]['id'];}return db[_0x3ab2('0x26')][_0x3ab2('0x3f')]({'where':{'id':_0x40de35['params']['id']}})['then'](handleEntityNotFound(_0x40e2a6,null))[_0x3ab2('0x1f')](saveUpdates(_0x40de35[_0x3ab2('0x40')],null))[_0x3ab2('0x1f')](respondWithResult(_0x40e2a6,null))[_0x3ab2('0x3d')](handleError(_0x40e2a6,null));};exports['destroy']=function(_0x53a9dd,_0x11f55a){return db['Variable'][_0x3ab2('0x3f')]({'where':{'id':_0x53a9dd[_0x3ab2('0x3e')]['id']}})['then'](handleEntityNotFound(_0x11f55a,null))[_0x3ab2('0x1f')](removeEntity(_0x11f55a,null))[_0x3ab2('0x3d')](handleError(_0x11f55a,null));};
\ No newline at end of file
+var _0x67c5=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','request-promise','moment','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','get','destroy','status','error','name','send','index','map','Variable','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','keys','length','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x67c5,0x9d));var _0x567c=function(_0x387d9e,_0x2e69b6){_0x387d9e=_0x387d9e-0x0;var _0x52bf56=_0x67c5[_0x387d9e];return _0x52bf56;};'use strict';var emlformat=require(_0x567c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x567c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x567c('0x2'));var moment=require(_0x567c('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x567c('0x4'));var sox=require(_0x567c('0x5'));var csv=require(_0x567c('0x6'));var ejs=require(_0x567c('0x7'));var fs=require('fs');var fs_extra=require(_0x567c('0x8'));var _=require('lodash');var squel=require(_0x567c('0x9'));var crypto=require(_0x567c('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x567c('0x6'));var querystring=require(_0x567c('0xb'));var Papa=require(_0x567c('0xc'));var Redis=require(_0x567c('0xd'));var authService=require(_0x567c('0xe'));var qs=require(_0x567c('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x567c('0x10'));var logger=require('../../config/logger')(_0x567c('0x11'));var utils=require(_0x567c('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x567c('0x13'));var db=require(_0x567c('0x14'))['db'];function respondWithStatusCode(_0x49914e,_0x5ab2fe){_0x5ab2fe=_0x5ab2fe||0xcc;return function(_0x460547){if(_0x460547){return _0x49914e[_0x567c('0x15')](_0x5ab2fe);}return _0x49914e['status'](_0x5ab2fe)[_0x567c('0x16')]();};}function respondWithResult(_0x3471e7,_0x336a90){_0x336a90=_0x336a90||0xc8;return function(_0x5e3c14){if(_0x5e3c14){return _0x3471e7['status'](_0x336a90)[_0x567c('0x17')](_0x5e3c14);}};}function respondWithFilteredResult(_0x144d10,_0xdeef0){return function(_0x17b182){if(_0x17b182){var _0x786dca=typeof _0xdeef0[_0x567c('0x18')]==='undefined'&&typeof _0xdeef0[_0x567c('0x19')]===_0x567c('0x1a');var _0xda934e=_0x17b182[_0x567c('0x1b')];var _0x3c51c5=_0x786dca?0x0:_0xdeef0['offset'];var _0x13ef91=_0x786dca?_0x17b182[_0x567c('0x1b')]:_0xdeef0['offset']+_0xdeef0['limit'];var _0x376278;if(_0x13ef91>=_0xda934e){_0x13ef91=_0xda934e;_0x376278=0xc8;}else{_0x376278=0xce;}_0x144d10['status'](_0x376278);return _0x144d10[_0x567c('0x1c')](_0x567c('0x1d'),_0x3c51c5+'-'+_0x13ef91+'/'+_0xda934e)[_0x567c('0x17')](_0x17b182);}return null;};}function patchUpdates(_0x3586d9){return function(_0x2add66){try{jsonpatch[_0x567c('0x1e')](_0x2add66,_0x3586d9,!![]);}catch(_0x357dbc){return BPromise[_0x567c('0x1f')](_0x357dbc);}return _0x2add66[_0x567c('0x20')]();};}function saveUpdates(_0x4e4b31,_0x3d3525){return function(_0x43d025){if(_0x43d025){return _0x43d025[_0x567c('0x21')](_0x4e4b31)[_0x567c('0x22')](function(_0x4a6af3){return _0x4a6af3;});}return null;};}function removeEntity(_0x4b6590,_0x40f20b){return function(_0x241c32){if(_0x241c32){return _0x241c32['destroy']()['then'](function(){var _0x5b1829=_0x241c32[_0x567c('0x23')]({'plain':!![]});var _0x313a64='Variables';return db['UserProfileResource'][_0x567c('0x24')]({'where':{'type':_0x313a64,'resourceId':_0x5b1829['id']}})[_0x567c('0x22')](function(){return _0x241c32;});})[_0x567c('0x22')](function(){_0x4b6590[_0x567c('0x25')](0xcc)[_0x567c('0x16')]();});}};}function handleEntityNotFound(_0x279264,_0x3851e6){return function(_0x25162b){if(!_0x25162b){_0x279264[_0x567c('0x15')](0x194);}return _0x25162b;};}function handleError(_0x4dff60,_0x123d19){_0x123d19=_0x123d19||0x1f4;return function(_0x21c8f0){logger[_0x567c('0x26')](_0x21c8f0['stack']);if(_0x21c8f0[_0x567c('0x27')]){delete _0x21c8f0[_0x567c('0x27')];}_0x4dff60[_0x567c('0x25')](_0x123d19)[_0x567c('0x28')](_0x21c8f0);};}exports[_0x567c('0x29')]=function(_0x762083,_0x52077f){var _0x3494af={},_0x59b72f={},_0x2cf6da={'count':0x0,'rows':[]};var _0x521a95=_[_0x567c('0x2a')](db[_0x567c('0x2b')][_0x567c('0x2c')],function(_0x5dd88c){return{'name':_0x5dd88c[_0x567c('0x2d')],'type':_0x5dd88c[_0x567c('0x2e')][_0x567c('0x2f')]};});_0x59b72f['model']=_[_0x567c('0x2a')](_0x521a95,_0x567c('0x27'));_0x59b72f['query']=_['keys'](_0x762083[_0x567c('0x30')]);_0x59b72f[_0x567c('0x31')]=_[_0x567c('0x32')](_0x59b72f[_0x567c('0x33')],_0x59b72f[_0x567c('0x30')]);_0x3494af[_0x567c('0x34')]=_[_0x567c('0x32')](_0x59b72f[_0x567c('0x33')],qs[_0x567c('0x35')](_0x762083[_0x567c('0x30')][_0x567c('0x35')]));_0x3494af[_0x567c('0x34')]=_0x3494af['attributes']['length']?_0x3494af[_0x567c('0x34')]:_0x59b72f['model'];if(!_0x762083[_0x567c('0x30')][_0x567c('0x36')]('nolimit')){_0x3494af[_0x567c('0x19')]=qs['limit'](_0x762083['query'][_0x567c('0x19')]);_0x3494af[_0x567c('0x18')]=qs[_0x567c('0x18')](_0x762083[_0x567c('0x30')][_0x567c('0x18')]);}_0x3494af[_0x567c('0x37')]=qs[_0x567c('0x38')](_0x762083['query'][_0x567c('0x38')]);_0x3494af[_0x567c('0x39')]=qs['filters'](_[_0x567c('0x3a')](_0x762083[_0x567c('0x30')],_0x59b72f[_0x567c('0x31')]),_0x521a95);if(_0x762083[_0x567c('0x30')][_0x567c('0x3b')]){_0x3494af[_0x567c('0x39')]=_[_0x567c('0x3c')](_0x3494af[_0x567c('0x39')],{'$or':_['map'](_0x521a95,function(_0x368843){if(_0x368843['type']!=='VIRTUAL'){var _0x3c7564={};_0x3c7564[_0x368843[_0x567c('0x27')]]={'$like':'%'+_0x762083[_0x567c('0x30')][_0x567c('0x3b')]+'%'};return _0x3c7564;}})});}_0x3494af=_['merge']({},_0x3494af,_0x762083[_0x567c('0x3d')]);var _0x473eec={'where':_0x3494af[_0x567c('0x39')]};return db[_0x567c('0x2b')][_0x567c('0x1b')](_0x473eec)[_0x567c('0x22')](function(_0x2c21d7){_0x2cf6da['count']=_0x2c21d7;if(_0x762083['query'][_0x567c('0x3e')]){_0x3494af['include']=[{'all':!![]}];}return db['Variable'][_0x567c('0x3f')](_0x3494af);})[_0x567c('0x22')](function(_0xf841ba){_0x2cf6da[_0x567c('0x40')]=_0xf841ba;return _0x2cf6da;})[_0x567c('0x22')](respondWithFilteredResult(_0x52077f,_0x3494af))[_0x567c('0x41')](handleError(_0x52077f,null));};exports[_0x567c('0x42')]=function(_0x27bc3f,_0x23ade6){var _0x3ba5e7={'raw':!![],'where':{'id':_0x27bc3f['params']['id']}},_0x893d88={};_0x893d88[_0x567c('0x33')]=_[_0x567c('0x43')](db[_0x567c('0x2b')][_0x567c('0x2c')]);_0x893d88[_0x567c('0x30')]=_[_0x567c('0x43')](_0x27bc3f['query']);_0x893d88[_0x567c('0x31')]=_[_0x567c('0x32')](_0x893d88[_0x567c('0x33')],_0x893d88[_0x567c('0x30')]);_0x3ba5e7[_0x567c('0x34')]=_[_0x567c('0x32')](_0x893d88[_0x567c('0x33')],qs[_0x567c('0x35')](_0x27bc3f[_0x567c('0x30')]['fields']));_0x3ba5e7[_0x567c('0x34')]=_0x3ba5e7['attributes'][_0x567c('0x44')]?_0x3ba5e7['attributes']:_0x893d88[_0x567c('0x33')];if(_0x27bc3f['query'][_0x567c('0x3e')]){_0x3ba5e7['include']=[{'all':!![]}];}_0x3ba5e7=_[_0x567c('0x3c')]({},_0x3ba5e7,_0x27bc3f['options']);return db['Variable'][_0x567c('0x45')](_0x3ba5e7)[_0x567c('0x22')](handleEntityNotFound(_0x23ade6,null))[_0x567c('0x22')](respondWithResult(_0x23ade6,null))[_0x567c('0x41')](handleError(_0x23ade6,null));};exports[_0x567c('0x46')]=function(_0x34b42f,_0x158def){return db['Variable'][_0x567c('0x46')](_0x34b42f[_0x567c('0x47')],{})[_0x567c('0x22')](function(_0x2afcf1){var _0x5578c3=_0x34b42f[_0x567c('0x48')]['get']({'plain':!![]});if(!_0x5578c3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5578c3[_0x567c('0x49')]===_0x567c('0x48')){var _0x589cb9=_0x2afcf1['get']({'plain':!![]});var _0x183038='Variables';return db[_0x567c('0x4a')]['find']({'where':{'name':_0x183038,'userProfileId':_0x5578c3[_0x567c('0x4b')]},'raw':!![]})[_0x567c('0x22')](function(_0x374740){if(_0x374740&&_0x374740[_0x567c('0x4c')]===0x0){return db['UserProfileResource'][_0x567c('0x46')]({'name':_0x589cb9['name'],'resourceId':_0x589cb9['id'],'type':_0x374740['name'],'sectionId':_0x374740['id']},{})[_0x567c('0x22')](function(){return _0x2afcf1;});}else{return _0x2afcf1;}})['catch'](function(_0x28e62f){logger[_0x567c('0x26')](_0x567c('0x4d'),_0x28e62f);throw _0x28e62f;});}return _0x2afcf1;})[_0x567c('0x22')](respondWithResult(_0x158def,0xc9))[_0x567c('0x41')](handleError(_0x158def,null));};exports[_0x567c('0x21')]=function(_0x408471,_0x47bba5){if(_0x408471[_0x567c('0x47')]['id']){delete _0x408471[_0x567c('0x47')]['id'];}return db[_0x567c('0x2b')][_0x567c('0x45')]({'where':{'id':_0x408471['params']['id']}})[_0x567c('0x22')](handleEntityNotFound(_0x47bba5,null))[_0x567c('0x22')](saveUpdates(_0x408471[_0x567c('0x47')],null))[_0x567c('0x22')](respondWithResult(_0x47bba5,null))[_0x567c('0x41')](handleError(_0x47bba5,null));};exports[_0x567c('0x24')]=function(_0x1ceb9f,_0x44bf97){return db['Variable'][_0x567c('0x45')]({'where':{'id':_0x1ceb9f['params']['id']}})[_0x567c('0x22')](handleEntityNotFound(_0x44bf97,null))[_0x567c('0x22')](removeEntity(_0x44bf97,null))[_0x567c('0x41')](handleError(_0x44bf97,null));};
\ No newline at end of file
index fa8b7c6..9ddb781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42ba=['./variable.attributes','define','Variable','tools_variables','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x4a3795,_0x14a8e6){var _0x4ab7ba=function(_0x2ef2b4){while(--_0x2ef2b4){_0x4a3795['push'](_0x4a3795['shift']());}};_0x4ab7ba(++_0x14a8e6);}(_0x42ba,0x1f0));var _0xa42b=function(_0x21d436,_0x52c2c1){_0x21d436=_0x21d436-0x0;var _0x37b47b=_0x42ba[_0x21d436];return _0x37b47b;};'use strict';var _=require(_0xa42b('0x0'));var util=require('util');var logger=require(_0xa42b('0x1'))(_0xa42b('0x2'));var moment=require(_0xa42b('0x3'));var BPromise=require(_0xa42b('0x4'));var rp=require(_0xa42b('0x5'));var fs=require('fs');var path=require(_0xa42b('0x6'));var rimraf=require('rimraf');var config=require(_0xa42b('0x7'));var attributes=require(_0xa42b('0x8'));module['exports']=function(_0x481c91,_0x41f242){return _0x481c91[_0xa42b('0x9')](_0xa42b('0xa'),attributes,{'tableName':_0xa42b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x38f3=['path','../../config/environment','./variable.attributes','exports','tools_variables','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4610c5,_0xae54dd){var _0x266fc3=function(_0x32ce7e){while(--_0x32ce7e){_0x4610c5['push'](_0x4610c5['shift']());}};_0x266fc3(++_0xae54dd);}(_0x38f3,0x1f4));var _0x338f=function(_0xbfc560,_0x311fba){_0xbfc560=_0xbfc560-0x0;var _0x47b022=_0x38f3[_0xbfc560];return _0x47b022;};'use strict';var _=require(_0x338f('0x0'));var util=require('util');var logger=require(_0x338f('0x1'))(_0x338f('0x2'));var moment=require(_0x338f('0x3'));var BPromise=require(_0x338f('0x4'));var rp=require(_0x338f('0x5'));var fs=require('fs');var path=require(_0x338f('0x6'));var rimraf=require('rimraf');var config=require(_0x338f('0x7'));var attributes=require(_0x338f('0x8'));module[_0x338f('0x9')]=function(_0x570b02,_0x16b774){return _0x570b02['define']('Variable',attributes,{'tableName':_0x338f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 217b9f4..eb3ac0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowVariable','options','where','include','map','attributes'];(function(_0x35fb99,_0x37d22c){var _0x55b51d=function(_0x1eb4fa){while(--_0x1eb4fa){_0x35fb99['push'](_0x35fb99['shift']());}};_0x55b51d(++_0x37d22c);}(_0x814b,0x1a2));var _0xb814=function(_0x3f3c46,_0x33e972){_0x3f3c46=_0x3f3c46-0x0;var _0x7d1132=_0x814b[_0x3f3c46];return _0x7d1132;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('Variable,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}exports[_0xb814('0x18')]=function(_0x55ba16){var _0x270598=this;return new Promise(function(_0xfac75b,_0x4c3007){return db['Variable']['find']({'raw':_0x55ba16[_0xb814('0x19')]?_0x55ba16['options']['raw']===undefined?!![]:![]:!![],'where':_0x55ba16[_0xb814('0x19')]?_0x55ba16[_0xb814('0x19')][_0xb814('0x1a')]||null:null,'attributes':_0x55ba16['options']?_0x55ba16[_0xb814('0x19')]['attributes']||null:null,'include':_0x55ba16[_0xb814('0x19')]?_0x55ba16[_0xb814('0x19')][_0xb814('0x1b')]?_[_0xb814('0x1c')](_0x55ba16[_0xb814('0x19')][_0xb814('0x1b')],function(_0x1f5d40){return{'model':db[_0x1f5d40['model']],'as':_0x1f5d40['as'],'attributes':_0x1f5d40[_0xb814('0x1d')],'include':_0x1f5d40['include']?_[_0xb814('0x1c')](_0x1f5d40[_0xb814('0x1b')],function(_0x31c7ec){return{'model':db[_0x31c7ec[_0xb814('0x1e')]],'as':_0x31c7ec['as'],'attributes':_0x31c7ec[_0xb814('0x1d')],'include':_0x31c7ec[_0xb814('0x1b')]?_[_0xb814('0x1c')](_0x31c7ec['include'],function(_0x392222){return{'model':db[_0x392222[_0xb814('0x1e')]],'as':_0x392222['as'],'attributes':_0x392222[_0xb814('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xb814('0xd')](function(_0x32ed56){logger[_0xb814('0xe')](_0xb814('0x18'),_0x55ba16);logger[_0xb814('0x11')]('ShowVariable',_0x55ba16,JSON[_0xb814('0x1f')](_0x32ed56));_0xfac75b(_0x32ed56);})[_0xb814('0x17')](function(_0x52ed64){logger[_0xb814('0x13')](_0xb814('0x18'),_0x52ed64[_0xb814('0x15')],_0x55ba16);_0x4c3007(_0x270598['error'](0x1f4,_0x52ed64[_0xb814('0x15')]));});});};
\ No newline at end of file
+var _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(_0x3155b9,_0x58dbee){var _0x15c6e2=function(_0x1dfa10){while(--_0x1dfa10){_0x3155b9['push'](_0x3155b9['shift']());}};_0x15c6e2(++_0x58dbee);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x179e6a,_0x23c5f8){_0x179e6a=_0x179e6a-0x0;var _0x515f39=_0x7fbe[_0x179e6a];return _0x515f39;};'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
index 58b2c94..bdf616c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x024d=['Router','../../components/auth/service','./version.controller','get','index','/fetch','canUpdate','/reset','isAuthenticated','pull','/restart','/migrations','migrations','express'];(function(_0x53693a,_0x3aa6a3){var _0x30775b=function(_0x882ea5){while(--_0x882ea5){_0x53693a['push'](_0x53693a['shift']());}};_0x30775b(++_0x3aa6a3);}(_0x024d,0xc3));var _0xd024=function(_0x1b7d68,_0x5c2c1b){_0x1b7d68=_0x1b7d68-0x0;var _0x2995b6=_0x024d[_0x1b7d68];return _0x2995b6;};'use strict';var express=require(_0xd024('0x0'));var router=express[_0xd024('0x1')]();var auth=require(_0xd024('0x2'));var controller=require(_0xd024('0x3'));router[_0xd024('0x4')]('/',controller[_0xd024('0x5')]);router[_0xd024('0x4')](_0xd024('0x6'),auth['isAuthenticated'](),auth[_0xd024('0x7')](),controller['fetch']);router[_0xd024('0x4')](_0xd024('0x8'),auth[_0xd024('0x9')](),auth[_0xd024('0x7')](),controller['reset']);router[_0xd024('0x4')]('/pull',auth[_0xd024('0x9')](),auth[_0xd024('0x7')](),controller[_0xd024('0xa')]);router[_0xd024('0x4')](_0xd024('0xb'),auth['isAuthenticated'](),controller['restart']);router[_0xd024('0x4')](_0xd024('0xc'),controller[_0xd024('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0xdcdd=['canUpdate','/pull','pull','/restart','migrations','exports','express','Router','../../components/auth/service','./version.controller','get','index','/fetch','isAuthenticated','fetch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdcdd,0x114));var _0xddcd=function(_0x2d76d8,_0x3f5026){_0x2d76d8=_0x2d76d8-0x0;var _0x226939=_0xdcdd[_0x2d76d8];return _0x226939;};'use strict';var express=require(_0xddcd('0x0'));var router=express[_0xddcd('0x1')]();var auth=require(_0xddcd('0x2'));var controller=require(_0xddcd('0x3'));router[_0xddcd('0x4')]('/',controller[_0xddcd('0x5')]);router[_0xddcd('0x4')](_0xddcd('0x6'),auth[_0xddcd('0x7')](),auth['canUpdate'](),controller[_0xddcd('0x8')]);router[_0xddcd('0x4')]('/reset',auth[_0xddcd('0x7')](),auth[_0xddcd('0x9')](),controller['reset']);router[_0xddcd('0x4')](_0xddcd('0xa'),auth[_0xddcd('0x7')](),auth[_0xddcd('0x9')](),controller[_0xddcd('0xb')]);router['get'](_0xddcd('0xc'),auth[_0xddcd('0x7')](),controller['restart']);router['get']('/migrations',controller[_0xddcd('0xd')]);module[_0xddcd('0xe')]=router;
\ No newline at end of file
index a634d0f..a635811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6960=['--hard','FETCH_HEAD','info','git\x20reset\x20--hard','pull','restart','then','pm2\x20restart\x20motion\x20%s','catch','readdirSync','server','migrations','replace','.js','length','sequelize','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','map','Database\x20migrated\x20successfully\x20from\x20version\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','pkginfo','version','compare-versions','exec','../../mysqldb','../../config/environment','../../config/logger','simple-git','root','query','latest','tags','exports','2.0.0','status','json','fetch','master','error','git\x20fetch','git\x20fetch\x20origin\x20master','reset'];(function(_0x283c3b,_0x741fa4){var _0x2ab028=function(_0x259f82){while(--_0x259f82){_0x283c3b['push'](_0x283c3b['shift']());}};_0x2ab028(++_0x741fa4);}(_0x6960,0x169));var _0x0696=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x6960[_0x59ee6f];return _0x4c0979;};'use strict';var Umzug=require(_0x0696('0x0'));var path=require('path');var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x0696('0x1'))(module,_0x0696('0x2'));var compareVersions=require(_0x0696('0x3'));var exec=require('child_process')[_0x0696('0x4')];var db=require(_0x0696('0x5'))['db'];var config=require(_0x0696('0x6'));var pm2=require('../../config/pm2');var logger=require(_0x0696('0x7'))('update');var git=require(_0x0696('0x8'))(config[_0x0696('0x9')]);exports['index']=function(_0x596dc9,_0x20bc7a){var _0x4ea8d0={'current':module['exports']['version'],'phonebar':0x2};if(_0x596dc9[_0x0696('0xa')]&&_0x596dc9[_0x0696('0xa')][_0x0696('0xb')]){return git['fetch']()[_0x0696('0xc')](function(_0x3d09dd,_0x3a6862){_0x4ea8d0[_0x0696('0xb')]=(_0x3d09dd?module[_0x0696('0xd')][_0x0696('0x2')]:_0x3a6862[_0x0696('0xb')])||_0x0696('0xe');return _0x20bc7a[_0x0696('0xf')](0xc8)[_0x0696('0x10')](_0x4ea8d0);});}else{return _0x20bc7a[_0x0696('0xf')](0xc8)['json'](_0x4ea8d0);}};exports[_0x0696('0x11')]=function(_0x12190f,_0x40200d){return git[_0x0696('0x11')](['origin',_0x0696('0x12')],function(_0x4e40fd){if(_0x4e40fd){logger[_0x0696('0x13')](_0x4e40fd);return _0x40200d[_0x0696('0xf')](0x1f4)[_0x0696('0x10')](_0x4e40fd);}logger['info'](_0x0696('0x14'));return _0x40200d['status'](0xc8)[_0x0696('0x10')]({'output':_0x0696('0x15')});});};exports[_0x0696('0x16')]=function(_0x4ce6a0,_0x50a7be){return git[_0x0696('0x16')]([_0x0696('0x17'),_0x0696('0x18')],function(_0x6e3f81){if(_0x6e3f81){logger[_0x0696('0x13')](_0x6e3f81);return _0x50a7be[_0x0696('0xf')](0x1f4)['json'](_0x6e3f81);}logger[_0x0696('0x19')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x50a7be['status'](0xc8)[_0x0696('0x10')]({'output':_0x0696('0x1a')});});};exports[_0x0696('0x1b')]=function(_0x3e17d5,_0x510eca){exec('npm\x20install\x20--production',function(_0x450d74,_0x478c1a,_0x1ed38a){logger[_0x0696('0x19')](_0x478c1a);logger[_0x0696('0x19')](_0x1ed38a);if(_0x450d74){logger[_0x0696('0x13')](_0x450d74);return _0x510eca[_0x0696('0xf')](0x1f4)[_0x0696('0x10')](_0x450d74);}return _0x510eca[_0x0696('0xf')](0xc8)[_0x0696('0x10')]({'output':_0x478c1a});});};exports[_0x0696('0x1c')]=function(_0xddfd90,_0x8adf6f){return pm2[_0x0696('0x1c')]('motion2')[_0x0696('0x1d')](function(_0x24ecf4){logger[_0x0696('0x19')](_0x0696('0x1e'),_0x24ecf4);return _0x8adf6f['status'](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x0696('0x1f')](function(_0x3b04a4){logger['error'](_0x3b04a4);return _0x8adf6f[_0x0696('0xf')](0x1f4)[_0x0696('0x10')](_0x3b04a4);});};exports['migrations']=function(_0x50b7f8,_0x25c2b7){var _0x21eb93=fs[_0x0696('0x20')](path['join'](config[_0x0696('0x9')],_0x0696('0x21'),_0x0696('0x22')));var _0x57c093=[];for(var _0x336dfd=0x0;_0x336dfd<_0x21eb93['length'];_0x336dfd++){var _0x46b072=_0x21eb93[_0x336dfd][_0x0696('0x23')](_0x0696('0x24'),'');if(compareVersions(module[_0x0696('0xd')][_0x0696('0x2')],_0x46b072)===-0x1){_0x57c093['push'](_0x46b072);}}if(_0x57c093[_0x0696('0x25')]){var _0x11f377=_0x57c093['sort'](compareVersions);var _0x2a090a=new Umzug({'storage':_0x0696('0x26'),'storageOptions':{'model':db['Migration'],'modelName':'Migration','columnName':_0x0696('0x2')},'migrations':{'params':[db['sequelize'][_0x0696('0x27')](),db['sequelize'][_0x0696('0x28')],function(){throw new Error(_0x0696('0x29'));}],'path':path[_0x0696('0x2a')](config[_0x0696('0x9')],'server','migrations'),'pattern':/\.js$/}});_0x2a090a['up']({'migrations':_[_0x0696('0x2b')](_0x11f377,function(_0xf86d51){return _0xf86d51+_0x0696('0x24');})})[_0x0696('0x1d')](function(){return _0x25c2b7[_0x0696('0xf')](0xc8)[_0x0696('0x10')]({'output':_0x0696('0x2c')+module[_0x0696('0xd')][_0x0696('0x2')]+'\x20to\x20'+_[_0x0696('0x2d')](_0x11f377),'migrations':_[_0x0696('0x2a')](_0x11f377)});})[_0x0696('0x1f')](function(_0x223eae){if(_0x223eae instanceof db[_0x0696('0x26')][_0x0696('0x2e')]){return _0x25c2b7[_0x0696('0xf')](0xc8)[_0x0696('0x10')]({'output':_0x0696('0x2f')});}else{return _0x25c2b7[_0x0696('0xf')](0x1f4)['json'](_0x223eae);}});}else{return _0x25c2b7[_0x0696('0xf')](0xc8)[_0x0696('0x10')]({'output':_0x0696('0x2f')});}};
\ No newline at end of file
+var _0xfdc3=['\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','simple-git','root','index','latest','fetch','tags','exports','2.0.0','status','json','origin','master','error','git\x20fetch\x20origin\x20master','reset','FETCH_HEAD','info','pull','npm\x20install\x20--production','restart','motion2','then','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','readdirSync','join','server','migrations','length','replace','push','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','.js','Database\x20migrated\x20successfully\x20from\x20version\x20'];(function(_0x39f964,_0x328eee){var _0x3c659e=function(_0x22b06e){while(--_0x22b06e){_0x39f964['push'](_0x39f964['shift']());}};_0x3c659e(++_0x328eee);}(_0xfdc3,0x14e));var _0x3fdc=function(_0x1d8326,_0x7b519e){_0x1d8326=_0x1d8326-0x0;var _0x5bb6af=_0xfdc3[_0x1d8326];return _0x5bb6af;};'use strict';var Umzug=require(_0x3fdc('0x0'));var path=require(_0x3fdc('0x1'));var fs=require('fs');var _=require(_0x3fdc('0x2'));var pkginfo=require('pkginfo')(module,_0x3fdc('0x3'));var compareVersions=require(_0x3fdc('0x4'));var exec=require(_0x3fdc('0x5'))[_0x3fdc('0x6')];var db=require(_0x3fdc('0x7'))['db'];var config=require(_0x3fdc('0x8'));var pm2=require(_0x3fdc('0x9'));var logger=require(_0x3fdc('0xa'))('update');var git=require(_0x3fdc('0xb'))(config[_0x3fdc('0xc')]);exports[_0x3fdc('0xd')]=function(_0x38740d,_0x1eff5a){var _0x55807a={'current':module['exports'][_0x3fdc('0x3')],'phonebar':0x2};if(_0x38740d['query']&&_0x38740d['query'][_0x3fdc('0xe')]){return git[_0x3fdc('0xf')]()[_0x3fdc('0x10')](function(_0xd4a309,_0x375e9d){_0x55807a[_0x3fdc('0xe')]=(_0xd4a309?module[_0x3fdc('0x11')]['version']:_0x375e9d[_0x3fdc('0xe')])||_0x3fdc('0x12');return _0x1eff5a[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')](_0x55807a);});}else{return _0x1eff5a['status'](0xc8)['json'](_0x55807a);}};exports[_0x3fdc('0xf')]=function(_0x363c4d,_0x9c61db){return git['fetch']([_0x3fdc('0x15'),_0x3fdc('0x16')],function(_0x30b344){if(_0x30b344){logger[_0x3fdc('0x17')](_0x30b344);return _0x9c61db[_0x3fdc('0x13')](0x1f4)['json'](_0x30b344);}logger['info']('git\x20fetch');return _0x9c61db[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')]({'output':_0x3fdc('0x18')});});};exports[_0x3fdc('0x19')]=function(_0x1482cb,_0x415b0c){return git[_0x3fdc('0x19')](['--hard',_0x3fdc('0x1a')],function(_0x19e682){if(_0x19e682){logger['error'](_0x19e682);return _0x415b0c['status'](0x1f4)[_0x3fdc('0x14')](_0x19e682);}logger[_0x3fdc('0x1b')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x415b0c[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')]({'output':'git\x20reset\x20--hard'});});};exports[_0x3fdc('0x1c')]=function(_0x525c54,_0xc508b2){exec(_0x3fdc('0x1d'),function(_0x3561b4,_0xbae521,_0x5c455a){logger[_0x3fdc('0x1b')](_0xbae521);logger[_0x3fdc('0x1b')](_0x5c455a);if(_0x3561b4){logger[_0x3fdc('0x17')](_0x3561b4);return _0xc508b2['status'](0x1f4)[_0x3fdc('0x14')](_0x3561b4);}return _0xc508b2[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')]({'output':_0xbae521});});};exports['restart']=function(_0x7f7233,_0x342f98){return pm2[_0x3fdc('0x1e')](_0x3fdc('0x1f'))[_0x3fdc('0x20')](function(_0x105022){logger['info']('pm2\x20restart\x20motion\x20%s',_0x105022);return _0x342f98[_0x3fdc('0x13')](0xc8)['json']({'output':_0x3fdc('0x21')});})[_0x3fdc('0x22')](function(_0x85f4a4){logger[_0x3fdc('0x17')](_0x85f4a4);return _0x342f98[_0x3fdc('0x13')](0x1f4)['json'](_0x85f4a4);});};exports['migrations']=function(_0x506056,_0x3c2918){var _0x3bc88f=fs[_0x3fdc('0x23')](path[_0x3fdc('0x24')](config['root'],_0x3fdc('0x25'),_0x3fdc('0x26')));var _0x35ebfd=[];for(var _0x335f34=0x0;_0x335f34<_0x3bc88f[_0x3fdc('0x27')];_0x335f34++){var _0x277a57=_0x3bc88f[_0x335f34][_0x3fdc('0x28')]('.js','');if(compareVersions(module[_0x3fdc('0x11')]['version'],_0x277a57)===-0x1){_0x35ebfd[_0x3fdc('0x29')](_0x277a57);}}if(_0x35ebfd['length']){var _0x233d43=_0x35ebfd[_0x3fdc('0x2a')](compareVersions);var _0x5c43db=new Umzug({'storage':_0x3fdc('0x2b'),'storageOptions':{'model':db[_0x3fdc('0x2c')],'modelName':'Migration','columnName':_0x3fdc('0x3')},'migrations':{'params':[db['sequelize'][_0x3fdc('0x2d')](),db[_0x3fdc('0x2b')][_0x3fdc('0x2e')],function(){throw new Error(_0x3fdc('0x2f'));}],'path':path[_0x3fdc('0x24')](config['root'],'server',_0x3fdc('0x26')),'pattern':/\.js$/}});_0x5c43db['up']({'migrations':_[_0x3fdc('0x30')](_0x233d43,function(_0x1c3442){return _0x1c3442+_0x3fdc('0x31');})})[_0x3fdc('0x20')](function(){return _0x3c2918[_0x3fdc('0x13')](0xc8)['json']({'output':_0x3fdc('0x32')+module[_0x3fdc('0x11')][_0x3fdc('0x3')]+_0x3fdc('0x33')+_[_0x3fdc('0x34')](_0x233d43),'migrations':_[_0x3fdc('0x24')](_0x233d43)});})[_0x3fdc('0x22')](function(_0x1e5bab){if(_0x1e5bab instanceof db['sequelize'][_0x3fdc('0x35')]){return _0x3c2918[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x3c2918['status'](0x1f4)[_0x3fdc('0x14')](_0x1e5bab);}});}else{return _0x3c2918[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')]({'output':_0x3fdc('0x36')});}};
\ No newline at end of file
index 8f313a0..d3879b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb70b=['show','post','create','update','delete','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id'];(function(_0x578070,_0x1fcb84){var _0x1cdbbe=function(_0x2f3d51){while(--_0x2f3d51){_0x578070['push'](_0x578070['shift']());}};_0x1cdbbe(++_0x1fcb84);}(_0xb70b,0x1d9));var _0xbb70=function(_0x26db89,_0x5cf65e){_0x26db89=_0x26db89-0x0;var _0x407f4c=_0xb70b[_0x26db89];return _0x407f4c;};'use strict';var multer=require(_0xbb70('0x0'));var util=require(_0xbb70('0x1'));var path=require(_0xbb70('0x2'));var timeout=require(_0xbb70('0x3'));var express=require(_0xbb70('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xbb70('0x5'));var interaction=require(_0xbb70('0x6'));var config=require(_0xbb70('0x7'));var controller=require('./voiceAgentReport.controller');router['get']('/',auth[_0xbb70('0x8')](),controller[_0xbb70('0x9')]);router[_0xbb70('0xa')]('/describe',auth[_0xbb70('0x8')](),controller[_0xbb70('0xb')]);router['get'](_0xbb70('0xc'),auth[_0xbb70('0x8')](),controller[_0xbb70('0xd')]);router[_0xbb70('0xe')]('/',auth[_0xbb70('0x8')](),controller[_0xbb70('0xf')]);router['put']('/:id',auth[_0xbb70('0x8')](),controller[_0xbb70('0x10')]);router[_0xbb70('0x11')](_0xbb70('0xc'),auth[_0xbb70('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xa503=['../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','show','post','put','/:id','delete','destroy','exports','multer','express','Router','../../components/auth/service'];(function(_0x2e6b07,_0x581517){var _0x113ea9=function(_0x5c07fc){while(--_0x5c07fc){_0x2e6b07['push'](_0x2e6b07['shift']());}};_0x113ea9(++_0x581517);}(_0xa503,0xd4));var _0x3a50=function(_0x5689c6,_0x58e92c){_0x5689c6=_0x5689c6-0x0;var _0x565cc9=_0xa503[_0x5689c6];return _0x565cc9;};'use strict';var multer=require(_0x3a50('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3a50('0x1'));var router=express[_0x3a50('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x3a50('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x3a50('0x4'));var controller=require(_0x3a50('0x5'));router[_0x3a50('0x6')]('/',auth[_0x3a50('0x7')](),controller[_0x3a50('0x8')]);router[_0x3a50('0x6')](_0x3a50('0x9'),auth['isAuthenticated'](),controller[_0x3a50('0xa')]);router[_0x3a50('0x6')]('/:id',auth[_0x3a50('0x7')](),controller[_0x3a50('0xb')]);router[_0x3a50('0xc')]('/',auth[_0x3a50('0x7')](),controller['create']);router[_0x3a50('0xd')](_0x3a50('0xe'),auth[_0x3a50('0x7')](),controller['update']);router[_0x3a50('0xf')](_0x3a50('0xe'),auth[_0x3a50('0x7')](),controller[_0x3a50('0x10')]);module[_0x3a50('0x11')]=router;
\ No newline at end of file
index 23417a1..18e8a5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa32b=['INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING','DATE','BOOLEAN'];(function(_0x44cae2,_0x5021bc){var _0x55a7bc=function(_0x7c9d9f){while(--_0x7c9d9f){_0x44cae2['push'](_0x44cae2['shift']());}};_0x55a7bc(++_0x5021bc);}(_0xa32b,0x68));var _0xba32=function(_0x29d2d2,_0x3344){_0x29d2d2=_0x29d2d2-0x0;var _0x3f6476=_0xa32b[_0x29d2d2];return _0x3f6476;};'use strict';var Sequelize=require(_0xba32('0x0'));module['exports']={'type':{'type':Sequelize[_0xba32('0x1')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xba32('0x1')]},'queue':{'type':Sequelize[_0xba32('0x1')]},'interface':{'type':Sequelize[_0xba32('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xba32('0x2')]},'agentconnectAt':{'type':Sequelize[_0xba32('0x2')]},'agentcompleteAt':{'type':Sequelize[_0xba32('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xba32('0x2')]},'agentdumpAt':{'type':Sequelize[_0xba32('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xba32('0x3')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xba32('0x3')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xba32('0x4')]},'agentacw':{'type':Sequelize[_0xba32('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xba32('0x4')]},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xba32('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xba32('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xba32('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xba32('0x1')]},'destchannel':{'type':Sequelize[_0xba32('0x1')]},'destchannelstate':{'type':Sequelize[_0xba32('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xba32('0x1')]},'destcalleridnum':{'type':Sequelize[_0xba32('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xba32('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xba32('0x1')]},'destlanguage':{'type':Sequelize[_0xba32('0x1')]},'destaccountcode':{'type':Sequelize[_0xba32('0x1')]},'destcontext':{'type':Sequelize[_0xba32('0x1')]},'destexten':{'type':Sequelize[_0xba32('0x1')]},'destpriority':{'type':Sequelize[_0xba32('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xba32('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xba32('0x1')]},'transfer':{'type':Sequelize[_0xba32('0x3')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xba32('0x1')],'comment':_0xba32('0x5')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x07a2=['exports','STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x07a2,0x12c));var _0x207a=function(_0x2df523,_0x11b09e){_0x2df523=_0x2df523-0x0;var _0x43f919=_0x07a2[_0x2df523];return _0x43f919;};'use strict';var Sequelize=require(_0x207a('0x0'));module[_0x207a('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x207a('0x2')]},'calleridnum':{'type':Sequelize[_0x207a('0x2')]},'calleridname':{'type':Sequelize[_0x207a('0x2')]},'queue':{'type':Sequelize[_0x207a('0x2')]},'interface':{'type':Sequelize[_0x207a('0x2')]},'membername':{'type':Sequelize[_0x207a('0x2')]},'agentcalledAt':{'type':Sequelize[_0x207a('0x3')]},'agentconnectAt':{'type':Sequelize[_0x207a('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x207a('0x3')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x207a('0x4')]},'agentcomplete':{'type':Sequelize[_0x207a('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x207a('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x207a('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x207a('0x4')]},'agentacw':{'type':Sequelize[_0x207a('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize[_0x207a('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x207a('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x207a('0x2')]},'accountcode':{'type':Sequelize[_0x207a('0x2')]},'context':{'type':Sequelize[_0x207a('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x207a('0x2')]},'destchannel':{'type':Sequelize[_0x207a('0x2')]},'destchannelstate':{'type':Sequelize[_0x207a('0x4')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x207a('0x2')]},'destcalleridname':{'type':Sequelize[_0x207a('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x207a('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x207a('0x2')]},'destlanguage':{'type':Sequelize[_0x207a('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x207a('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x207a('0x2')]},'destuniqueid':{'type':Sequelize[_0x207a('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x207a('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x207a('0x2')]},'transfer':{'type':Sequelize[_0x207a('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x207a('0x2')],'comment':_0x207a('0x6')},'transferexten':{'type':Sequelize[_0x207a('0x2')]},'transferuniqueid':{'type':Sequelize[_0x207a('0x2')]},'agententerreason':{'type':Sequelize[_0x207a('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 4749b0d..519a727 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(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'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(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'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 770bca0..bdfbfa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0689=['uniqueid','destuniqueid','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define'];(function(_0x29c305,_0x3640f6){var _0x5a8cfc=function(_0x5b3131){while(--_0x5b3131){_0x29c305['push'](_0x29c305['shift']());}};_0x5a8cfc(++_0x3640f6);}(_0x0689,0x161));var _0x9068=function(_0x598e0e,_0x3607d3){_0x598e0e=_0x598e0e-0x0;var _0x11318c=_0x0689[_0x598e0e];return _0x11318c;};'use strict';var _=require('lodash');var util=require(_0x9068('0x0'));var logger=require('../../config/logger')(_0x9068('0x1'));var moment=require(_0x9068('0x2'));var BPromise=require(_0x9068('0x3'));var rp=require(_0x9068('0x4'));var fs=require('fs');var path=require(_0x9068('0x5'));var rimraf=require(_0x9068('0x6'));var config=require(_0x9068('0x7'));var attributes=require(_0x9068('0x8'));module[_0x9068('0x9')]=function(_0x287846,_0x5ce5a7){return _0x287846[_0x9068('0xa')]('VoiceAgentReport',attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0x9068('0xb'),_0x9068('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x84e7=['report_agent','uniqueid','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define'];(function(_0x337a3f,_0x57c81a){var _0x59cd7d=function(_0x249537){while(--_0x249537){_0x337a3f['push'](_0x337a3f['shift']());}};_0x59cd7d(++_0x57c81a);}(_0x84e7,0x122));var _0x784e=function(_0x2c6bcf,_0x2f6241){_0x2c6bcf=_0x2c6bcf-0x0;var _0x435809=_0x84e7[_0x2c6bcf];return _0x435809;};'use strict';var _=require('lodash');var util=require(_0x784e('0x0'));var logger=require(_0x784e('0x1'))('api');var moment=require(_0x784e('0x2'));var BPromise=require(_0x784e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x784e('0x4'));var rimraf=require(_0x784e('0x5'));var config=require(_0x784e('0x6'));var attributes=require(_0x784e('0x7'));module[_0x784e('0x8')]=function(_0x133296,_0x48ed22){return _0x133296[_0x784e('0x9')]('VoiceAgentReport',attributes,{'tableName':_0x784e('0xa'),'paranoid':![],'indexes':[{'fields':[_0x784e('0xb'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index f96f678..8b0e86e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35ae=['result','catch','CreateVoiceAgentReport','VoiceAgentReport','body','options','UpdateVoiceAgentReport','where','limit','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x22b8a3,_0x2a79a7){var _0x199a0c=function(_0x544c66){while(--_0x544c66){_0x22b8a3['push'](_0x22b8a3['shift']());}};_0x199a0c(++_0x2a79a7);}(_0x35ae,0x13f));var _0xe35a=function(_0x1f4666,_0x4c2268){_0x1f4666=_0x1f4666-0x0;var _0x4bb480=_0x35ae[_0x1f4666];return _0x4bb480;};'use strict';var _=require('lodash');var util=require(_0xe35a('0x0'));var moment=require(_0xe35a('0x1'));var BPromise=require('bluebird');var rs=require(_0xe35a('0x2'));var fs=require('fs');var Redis=require(_0xe35a('0x3'));var db=require(_0xe35a('0x4'))['db'];var utils=require(_0xe35a('0x5'));var logger=require(_0xe35a('0x6'))(_0xe35a('0x7'));var config=require(_0xe35a('0x8'));var jayson=require(_0xe35a('0x9'));var client=jayson['client'][_0xe35a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x224a12,_0x49299b,_0x575207){return new BPromise(function(_0xb74b24,_0x11d7ea){return client[_0xe35a('0xb')](_0x224a12,_0x575207)[_0xe35a('0xc')](function(_0x192658){logger[_0xe35a('0xd')](_0xe35a('0xe'),_0x49299b,_0xe35a('0xf'));logger[_0xe35a('0x10')](_0xe35a('0x11'),_0x49299b,_0xe35a('0xf'),JSON[_0xe35a('0x12')](_0x192658));if(_0x192658[_0xe35a('0x13')]){if(_0x192658[_0xe35a('0x13')][_0xe35a('0x14')]===0x1f4){logger[_0xe35a('0x13')](_0xe35a('0xe'),_0x49299b,_0x192658['error'][_0xe35a('0x15')]);return _0x11d7ea(_0x192658[_0xe35a('0x13')][_0xe35a('0x15')]);}logger[_0xe35a('0x13')](_0xe35a('0xe'),_0x49299b,_0x192658[_0xe35a('0x13')]['message']);return _0xb74b24(_0x192658['error'][_0xe35a('0x15')]);}else{logger['info'](_0xe35a('0xe'),_0x49299b,_0xe35a('0xf'));_0xb74b24(_0x192658[_0xe35a('0x16')][_0xe35a('0x15')]);}})[_0xe35a('0x17')](function(_0x1cc598){logger[_0xe35a('0x13')](_0xe35a('0xe'),_0x49299b,_0x1cc598);_0x11d7ea(_0x1cc598);});});}exports[_0xe35a('0x18')]=function(_0x1d65f3){var _0xd865d5=this;return new Promise(function(_0x3e6b81,_0x28d890){return db[_0xe35a('0x19')]['create'](_0x1d65f3[_0xe35a('0x1a')],{'raw':_0x1d65f3['options']?_0x1d65f3[_0xe35a('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x437ed1){logger['info'](_0xe35a('0x18'),_0x1d65f3);logger[_0xe35a('0x10')]('CreateVoiceAgentReport',_0x1d65f3,JSON['stringify'](_0x437ed1));_0x3e6b81(_0x437ed1);})[_0xe35a('0x17')](function(_0x4c2a7d){logger['error']('CreateVoiceAgentReport',_0x4c2a7d[_0xe35a('0x15')],_0x1d65f3);_0x28d890(_0xd865d5[_0xe35a('0x13')](0x1f4,_0x4c2a7d[_0xe35a('0x15')]));});});};exports[_0xe35a('0x1c')]=function(_0xf84a03){var _0x1f2d90=this;return new Promise(function(_0x20f787,_0x396367){return db[_0xe35a('0x19')]['update'](_0xf84a03['body'],{'raw':_0xf84a03[_0xe35a('0x1b')]?_0xf84a03[_0xe35a('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf84a03[_0xe35a('0x1b')]?_0xf84a03[_0xe35a('0x1b')][_0xe35a('0x1d')]||null:null,'attributes':_0xf84a03[_0xe35a('0x1b')]?_0xf84a03[_0xe35a('0x1b')]['attributes']||null:null,'limit':_0xf84a03[_0xe35a('0x1b')]?_0xf84a03['options'][_0xe35a('0x1e')]||null:null})[_0xe35a('0xc')](function(_0x833c80){logger[_0xe35a('0xd')](_0xe35a('0x1c'),_0xf84a03);logger[_0xe35a('0x10')]('UpdateVoiceAgentReport',_0xf84a03,JSON[_0xe35a('0x12')](_0x833c80));_0x20f787(_0x833c80);})[_0xe35a('0x17')](function(_0x251d49){logger[_0xe35a('0x13')](_0xe35a('0x1c'),_0x251d49[_0xe35a('0x15')],_0xf84a03);_0x396367(_0x1f2d90[_0xe35a('0x13')](0x1f4,_0x251d49[_0xe35a('0x15')]));});});};
\ No newline at end of file
+var _0xabf9=['create','body','options','raw','then','CreateVoiceAgentReport','catch','UpdateVoiceAgentReport','VoiceAgentReport','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceAgentReport,\x20%s,\x20%s','message','result'];(function(_0x508c11,_0x308545){var _0x438f65=function(_0x59ee0c){while(--_0x59ee0c){_0x508c11['push'](_0x508c11['shift']());}};_0x438f65(++_0x308545);}(_0xabf9,0xd1));var _0x9abf=function(_0x48dcaf,_0x1b8a21){_0x48dcaf=_0x48dcaf-0x0;var _0x311b27=_0xabf9[_0x48dcaf];return _0x311b27;};'use strict';var _=require(_0x9abf('0x0'));var util=require(_0x9abf('0x1'));var moment=require(_0x9abf('0x2'));var BPromise=require(_0x9abf('0x3'));var rs=require(_0x9abf('0x4'));var fs=require('fs');var Redis=require(_0x9abf('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9abf('0x6'));var logger=require(_0x9abf('0x7'))(_0x9abf('0x8'));var config=require('../../config/environment');var jayson=require(_0x9abf('0x9'));var client=jayson[_0x9abf('0xa')][_0x9abf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x490e9b,_0x2fba9c,_0x1e58b4){return new BPromise(function(_0x3b0953,_0x38ef93){return client['request'](_0x490e9b,_0x1e58b4)['then'](function(_0x152dbe){logger[_0x9abf('0xc')]('VoiceAgentReport,\x20%s,\x20%s',_0x2fba9c,_0x9abf('0xd'));logger[_0x9abf('0xe')](_0x9abf('0xf'),_0x2fba9c,_0x9abf('0xd'),JSON[_0x9abf('0x10')](_0x152dbe));if(_0x152dbe[_0x9abf('0x11')]){if(_0x152dbe[_0x9abf('0x11')][_0x9abf('0x12')]===0x1f4){logger['error'](_0x9abf('0x13'),_0x2fba9c,_0x152dbe[_0x9abf('0x11')]['message']);return _0x38ef93(_0x152dbe[_0x9abf('0x11')][_0x9abf('0x14')]);}logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x2fba9c,_0x152dbe[_0x9abf('0x11')][_0x9abf('0x14')]);return _0x3b0953(_0x152dbe[_0x9abf('0x11')]['message']);}else{logger[_0x9abf('0xc')](_0x9abf('0x13'),_0x2fba9c,_0x9abf('0xd'));_0x3b0953(_0x152dbe[_0x9abf('0x15')][_0x9abf('0x14')]);}})['catch'](function(_0x2270ed){logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x2fba9c,_0x2270ed);_0x38ef93(_0x2270ed);});});}exports['CreateVoiceAgentReport']=function(_0x4646f4){var _0x5b6959=this;return new Promise(function(_0x2d2cec,_0x1157c4){return db['VoiceAgentReport'][_0x9abf('0x16')](_0x4646f4[_0x9abf('0x17')],{'raw':_0x4646f4['options']?_0x4646f4[_0x9abf('0x18')][_0x9abf('0x19')]===undefined?!![]:![]:!![]})[_0x9abf('0x1a')](function(_0xc85123){logger[_0x9abf('0xc')]('CreateVoiceAgentReport',_0x4646f4);logger['debug'](_0x9abf('0x1b'),_0x4646f4,JSON['stringify'](_0xc85123));_0x2d2cec(_0xc85123);})[_0x9abf('0x1c')](function(_0x31a42b){logger[_0x9abf('0x11')]('CreateVoiceAgentReport',_0x31a42b[_0x9abf('0x14')],_0x4646f4);_0x1157c4(_0x5b6959[_0x9abf('0x11')](0x1f4,_0x31a42b[_0x9abf('0x14')]));});});};exports[_0x9abf('0x1d')]=function(_0x574d8c){var _0xfae639=this;return new Promise(function(_0x37186c,_0x5ca162){return db[_0x9abf('0x1e')]['update'](_0x574d8c[_0x9abf('0x17')],{'raw':_0x574d8c[_0x9abf('0x18')]?_0x574d8c[_0x9abf('0x18')][_0x9abf('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x574d8c[_0x9abf('0x18')]?_0x574d8c['options']['where']||null:null,'attributes':_0x574d8c['options']?_0x574d8c['options'][_0x9abf('0x1f')]||null:null,'limit':_0x574d8c['options']?_0x574d8c['options'][_0x9abf('0x20')]||null:null})[_0x9abf('0x1a')](function(_0x23bc6d){logger['info'](_0x9abf('0x1d'),_0x574d8c);logger[_0x9abf('0xe')]('UpdateVoiceAgentReport',_0x574d8c,JSON[_0x9abf('0x10')](_0x23bc6d));_0x37186c(_0x23bc6d);})[_0x9abf('0x1c')](function(_0x449c02){logger[_0x9abf('0x11')](_0x9abf('0x1d'),_0x449c02[_0x9abf('0x14')],_0x574d8c);_0x5ca162(_0xfae639[_0x9abf('0x11')](0x1f4,_0x449c02[_0x9abf('0x14')]));});});};
\ No newline at end of file
index 46b9828..0852a70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb66=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x28b55a,_0x1a2e62){var _0x5ea7f8=function(_0x563ac0){while(--_0x563ac0){_0x28b55a['push'](_0x28b55a['shift']());}};_0x5ea7f8(++_0x1a2e62);}(_0xcb66,0x19f));var _0x6cb6=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0xcb66[_0x29d94e];return _0x106237;};'use strict';var multer=require('multer');var util=require(_0x6cb6('0x0'));var path=require(_0x6cb6('0x1'));var timeout=require(_0x6cb6('0x2'));var express=require(_0x6cb6('0x3'));var router=express[_0x6cb6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6cb6('0x5'));var interaction=require(_0x6cb6('0x6'));var config=require(_0x6cb6('0x7'));var controller=require(_0x6cb6('0x8'));router[_0x6cb6('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6cb6('0x9')](_0x6cb6('0xa'),auth[_0x6cb6('0xb')](),controller[_0x6cb6('0xc')]);router[_0x6cb6('0x9')](_0x6cb6('0xd'),auth[_0x6cb6('0xb')](),controller[_0x6cb6('0xe')]);router[_0x6cb6('0xf')]('/',auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x10')]);router[_0x6cb6('0x11')](_0x6cb6('0xd'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x12')]);module[_0x6cb6('0x13')]=router;
\ No newline at end of file
+var _0xeec6=['isAuthenticated','index','/describe','describe','get','show','post','/:id','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xeec6,0x1c2));var _0x6eec=function(_0x12c66e,_0xea7b4){_0x12c66e=_0x12c66e-0x0;var _0x19481a=_0xeec6[_0x12c66e];return _0x19481a;};'use strict';var multer=require(_0x6eec('0x0'));var util=require(_0x6eec('0x1'));var path=require(_0x6eec('0x2'));var timeout=require(_0x6eec('0x3'));var express=require('express');var router=express[_0x6eec('0x4')]();var fs_extra=require(_0x6eec('0x5'));var auth=require(_0x6eec('0x6'));var interaction=require(_0x6eec('0x7'));var config=require(_0x6eec('0x8'));var controller=require(_0x6eec('0x9'));router['get']('/',auth[_0x6eec('0xa')](),controller[_0x6eec('0xb')]);router['get'](_0x6eec('0xc'),auth[_0x6eec('0xa')](),controller[_0x6eec('0xd')]);router[_0x6eec('0xe')]('/:id',auth[_0x6eec('0xa')](),controller[_0x6eec('0xf')]);router[_0x6eec('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x6eec('0x11'),auth[_0x6eec('0xa')](),controller['update']);router['delete'](_0x6eec('0x11'),auth['isAuthenticated'](),controller[_0x6eec('0x12')]);module[_0x6eec('0x13')]=router;
\ No newline at end of file
index 89bd610..be77332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd0c=['outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','STRING','ENUM','inbound','internal','inbound-fax'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xfd0c,0x139));var _0xcfd0=function(_0x36888d,_0x22988e){_0x36888d=_0x36888d-0x0;var _0x14f524=_0xfd0c[_0x36888d];return _0x14f524;};'use strict';var Sequelize=require(_0xcfd0('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xcfd0('0x1')]},'type':{'type':Sequelize[_0xcfd0('0x2')](_0xcfd0('0x3'),_0xcfd0('0x4'),'outbound',_0xcfd0('0x5'),_0xcfd0('0x6'),_0xcfd0('0x7'))},'tag':{'type':Sequelize[_0xcfd0('0x1')]},'accountcode':{'type':Sequelize[_0xcfd0('0x1')]},'source':{'type':Sequelize[_0xcfd0('0x1')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0xcfd0('0x1')]},'callerid':{'type':Sequelize[_0xcfd0('0x1')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0xcfd0('0x1')]},'lastdata':{'type':Sequelize[_0xcfd0('0x8')]},'starttime':{'type':Sequelize[_0xcfd0('0x9')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xcfd0('0x9')]},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0xcfd0('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xcfd0('0x1')]},'amaflags':{'type':Sequelize[_0xcfd0('0x1')]},'userfield':{'type':Sequelize[_0xcfd0('0x1')]},'userDisposition':{'type':Sequelize[_0xcfd0('0x1')]},'userSecondDisposition':{'type':Sequelize[_0xcfd0('0x1')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xcfd0('0x1')]},'routeid':{'type':Sequelize[_0xcfd0('0xa')]},'sipcallid':{'type':Sequelize[_0xcfd0('0x1')]}};
\ No newline at end of file
+var _0x659e=['STRING','ENUM','internal','inbound-fax','TEXT','DATE','INTEGER','sequelize'];(function(_0x7ff118,_0xe4ddfa){var _0x2a8330=function(_0x4bd6f9){while(--_0x4bd6f9){_0x7ff118['push'](_0x7ff118['shift']());}};_0x2a8330(++_0xe4ddfa);}(_0x659e,0x117));var _0xe659=function(_0x3b7ec3,_0x257ba6){_0x3b7ec3=_0x3b7ec3-0x0;var _0x4ff928=_0x659e[_0x3b7ec3];return _0x4ff928;};'use strict';var Sequelize=require(_0xe659('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe659('0x1')]},'type':{'type':Sequelize[_0xe659('0x2')]('inbound',_0xe659('0x3'),'outbound',_0xe659('0x4'),'outbound-fax','dialer')},'tag':{'type':Sequelize[_0xe659('0x1')]},'accountcode':{'type':Sequelize[_0xe659('0x1')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0xe659('0x1')]},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xe659('0x1')]},'channel':{'type':Sequelize[_0xe659('0x1')]},'destinationchannel':{'type':Sequelize[_0xe659('0x1')]},'lastapplication':{'type':Sequelize[_0xe659('0x1')]},'lastdata':{'type':Sequelize[_0xe659('0x5')]},'starttime':{'type':Sequelize[_0xe659('0x6')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xe659('0x6')]},'endtime':{'type':Sequelize[_0xe659('0x6')]},'duration':{'type':Sequelize[_0xe659('0x7')]},'billableseconds':{'type':Sequelize[_0xe659('0x7')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xe659('0x1')]},'amaflags':{'type':Sequelize[_0xe659('0x1')]},'userfield':{'type':Sequelize[_0xe659('0x1')]},'userDisposition':{'type':Sequelize[_0xe659('0x1')]},'userSecondDisposition':{'type':Sequelize[_0xe659('0x1')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xe659('0x1')]},'prefix':{'type':Sequelize[_0xe659('0x1')]},'routeid':{'type':Sequelize[_0xe659('0x7')]},'sipcallid':{'type':Sequelize[_0xe659('0x1')]}};
\ No newline at end of file
index 7d2549e..d018741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','VoiceCallReport','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','fullname','alias','User','findAll','rows','params','find','create','body','catch','describe','update','uniqueid','user','eml-format','zip-dir','request-promise','moment'];(function(_0x3ecf3f,_0x1709c9){var _0x1c6c85=function(_0x576ff8){while(--_0x576ff8){_0x3ecf3f['push'](_0x3ecf3f['shift']());}};_0x1c6c85(++_0x1709c9);}(_0x0b0e,0x187));var _0xe0b0=function(_0x58803c,_0x4a34df){_0x58803c=_0x58803c-0x0;var _0xf95b9b=_0x0b0e[_0x58803c];return _0xf95b9b;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['VoiceCallReport'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'attributes':['id',_0xe0b0('0x27'),_0xe0b0('0x41'),_0xe0b0('0x42')],'model':db[_0xe0b0('0x43')],'as':_0xe0b0('0x43')}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x44')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x52ffe4){_0x36d137[_0xe0b0('0x45')]=_0x52ffe4;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))['catch'](handleError(_0x5b7a64,null));};exports['show']=function(_0x327fb4,_0x247f8d){var _0x56e7df={'raw':!![],'where':{'id':_0x327fb4[_0xe0b0('0x46')]['id']}},_0x18a59d={};_0x18a59d[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db[_0xe0b0('0x2a')]['rawAttributes']);_0x18a59d['query']=_['keys'](_0x327fb4[_0xe0b0('0x2e')]);_0x18a59d[_0xe0b0('0x39')]=_['intersection'](_0x18a59d[_0xe0b0('0x31')],_0x18a59d[_0xe0b0('0x2e')]);_0x56e7df[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x18a59d[_0xe0b0('0x31')],qs['fields'](_0x327fb4['query'][_0xe0b0('0x33')]));_0x56e7df[_0xe0b0('0x32')]=_0x56e7df[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x56e7df[_0xe0b0('0x32')]:_0x18a59d['model'];if(_0x327fb4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x56e7df['include']=[{'all':!![]}];}_0x56e7df=_['merge']({},_0x56e7df,_0x327fb4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x47')](_0x56e7df)[_0xe0b0('0x23')](handleEntityNotFound(_0x247f8d,null))[_0xe0b0('0x23')](respondWithResult(_0x247f8d,null))['catch'](handleError(_0x247f8d,null));};exports[_0xe0b0('0x48')]=function(_0x87d8f3,_0x483f12){return db['VoiceCallReport'][_0xe0b0('0x48')](_0x87d8f3[_0xe0b0('0x49')],{})['then'](respondWithResult(_0x483f12,0xc9))[_0xe0b0('0x4a')](handleError(_0x483f12,null));};exports[_0xe0b0('0x24')]=function(_0x504284,_0x5cb2b6){return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x504284[_0xe0b0('0x46')]['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x5cb2b6,null))[_0xe0b0('0x23')](removeEntity(_0x5cb2b6,null))[_0xe0b0('0x4a')](handleError(_0x5cb2b6,null));};exports[_0xe0b0('0x4b')]=function(_0xf9e694,_0x5f5486){return db['VoiceCallReport'][_0xe0b0('0x4b')]()['then'](respondWithResult(_0x5f5486,null))['catch'](handleError(_0x5f5486,null));};exports[_0xe0b0('0x4c')]=function(_0x222174,_0x54cf7b){if(_0x222174['body'][_0xe0b0('0x4d')]){delete _0x222174[_0xe0b0('0x49')][_0xe0b0('0x4d')];}return db[_0xe0b0('0x2a')][_0xe0b0('0x47')]({'where':{'uniqueid':_0x222174[_0xe0b0('0x46')]['id'],'UserId':{'$or':[null,_0x222174[_0xe0b0('0x4e')]['id']]}}})['then'](handleEntityNotFound(_0x54cf7b,null))[_0xe0b0('0x23')](saveUpdates(_0x222174['body'],null))[_0xe0b0('0x23')](respondWithResult(_0x54cf7b,null))['catch'](handleError(_0x54cf7b,null));};
\ No newline at end of file
+var _0xb10b=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','VoiceCallReport','includeAll','include','alias','User','rows','show','find','create','body','catch','params','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce'];(function(_0x471c51,_0x246517){var _0x2fd187=function(_0x2a863c){while(--_0x2a863c){_0x471c51['push'](_0x471c51['shift']());}};_0x2fd187(++_0x246517);}(_0xb10b,0x12a));var _0xbb10=function(_0x51b169,_0x5efbc2){_0x51b169=_0x51b169-0x0;var _0x12605a=_0xb10b[_0x51b169];return _0x12605a;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['VoiceCallReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'attributes':['id',_0xbb10('0x28'),'fullname',_0xbb10('0x43')],'model':db[_0xbb10('0x44')],'as':_0xbb10('0x44')}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x331751){_0x2e0249[_0xbb10('0x45')]=_0x331751;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x46')]=function(_0x202c60,_0x54ac18){var _0x5d9a4f={'raw':!![],'where':{'id':_0x202c60['params']['id']}},_0x38d78f={};_0x38d78f[_0xbb10('0x2f')]=_[_0xbb10('0x30')](db['VoiceCallReport'][_0xbb10('0x2c')]);_0x38d78f[_0xbb10('0x31')]=_[_0xbb10('0x30')](_0x202c60['query']);_0x38d78f[_0xbb10('0x3a')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],_0x38d78f[_0xbb10('0x31')]);_0x5d9a4f[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x202c60[_0xbb10('0x31')][_0xbb10('0x34')]));_0x5d9a4f[_0xbb10('0x33')]=_0x5d9a4f[_0xbb10('0x33')]['length']?_0x5d9a4f[_0xbb10('0x33')]:_0x38d78f[_0xbb10('0x2f')];if(_0x202c60['query'][_0xbb10('0x41')]){_0x5d9a4f[_0xbb10('0x42')]=[{'all':!![]}];}_0x5d9a4f=_[_0xbb10('0x3e')]({},_0x5d9a4f,_0x202c60[_0xbb10('0x3f')]);return db[_0xbb10('0x40')][_0xbb10('0x47')](_0x5d9a4f)[_0xbb10('0x23')](handleEntityNotFound(_0x54ac18,null))['then'](respondWithResult(_0x54ac18,null))['catch'](handleError(_0x54ac18,null));};exports[_0xbb10('0x48')]=function(_0x76a208,_0x2b12bd){return db['VoiceCallReport']['create'](_0x76a208[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x2b12bd,0xc9))[_0xbb10('0x4a')](handleError(_0x2b12bd,null));};exports[_0xbb10('0x24')]=function(_0x10159b,_0x22b315){return db[_0xbb10('0x40')][_0xbb10('0x47')]({'where':{'id':_0x10159b[_0xbb10('0x4b')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x22b315,null))['then'](removeEntity(_0x22b315,null))['catch'](handleError(_0x22b315,null));};exports[_0xbb10('0x4c')]=function(_0x467dba,_0x36ab7d){return db[_0xbb10('0x40')][_0xbb10('0x4c')]()[_0xbb10('0x23')](respondWithResult(_0x36ab7d,null))[_0xbb10('0x4a')](handleError(_0x36ab7d,null));};exports[_0xbb10('0x22')]=function(_0x1c0d8f,_0x1214f7){if(_0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')]){delete _0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')];}return db[_0xbb10('0x40')]['find']({'where':{'uniqueid':_0x1c0d8f[_0xbb10('0x4b')]['id'],'UserId':{'$or':[null,_0x1c0d8f['user']['id']]}}})[_0xbb10('0x23')](handleEntityNotFound(_0x1214f7,null))[_0xbb10('0x23')](saveUpdates(_0x1c0d8f[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x1214f7,null))[_0xbb10('0x4a')](handleError(_0x1214f7,null));};
\ No newline at end of file
index 3ba4636..21f0118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14e2=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','report_call','uniqueid','lodash'];(function(_0x14568d,_0x26fbc6){var _0x533662=function(_0xb6c6ef){while(--_0xb6c6ef){_0x14568d['push'](_0x14568d['shift']());}};_0x533662(++_0x26fbc6);}(_0x14e2,0x12b));var _0x214e=function(_0x22093a,_0xa7acf1){_0x22093a=_0x22093a-0x0;var _0x2f4989=_0x14e2[_0x22093a];return _0x2f4989;};'use strict';var _=require(_0x214e('0x0'));var util=require('util');var logger=require(_0x214e('0x1'))(_0x214e('0x2'));var moment=require(_0x214e('0x3'));var BPromise=require(_0x214e('0x4'));var rp=require(_0x214e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x214e('0x6'));var config=require(_0x214e('0x7'));var attributes=require('./voiceCallReport.attributes');module[_0x214e('0x8')]=function(_0x51d772,_0x429dcd){return _0x51d772[_0x214e('0x9')]('VoiceCallReport',attributes,{'tableName':_0x214e('0xa'),'paranoid':![],'indexes':[{'fields':[_0x214e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfc17=['exports','define','VoiceCallReport','uniqueid','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes'];(function(_0x5eed57,_0x224dc5){var _0x1ca877=function(_0xcdca76){while(--_0xcdca76){_0x5eed57['push'](_0x5eed57['shift']());}};_0x1ca877(++_0x224dc5);}(_0xfc17,0x1b4));var _0x7fc1=function(_0x532050,_0x4de296){_0x532050=_0x532050-0x0;var _0x146589=_0xfc17[_0x532050];return _0x146589;};'use strict';var _=require(_0x7fc1('0x0'));var util=require('util');var logger=require(_0x7fc1('0x1'))(_0x7fc1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7fc1('0x3'));var fs=require('fs');var path=require(_0x7fc1('0x4'));var rimraf=require(_0x7fc1('0x5'));var config=require(_0x7fc1('0x6'));var attributes=require(_0x7fc1('0x7'));module[_0x7fc1('0x8')]=function(_0x33c6d9,_0x17d8a3){return _0x33c6d9[_0x7fc1('0x9')](_0x7fc1('0xa'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x7fc1('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 5637d2c..144308f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde10=['attributes','model','map','then','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','http','request','VoiceCallReport,\x20%s,\x20%s','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','limit','include'];(function(_0x48f465,_0x57cf10){var _0x1eaf5c=function(_0x207b01){while(--_0x207b01){_0x48f465['push'](_0x48f465['shift']());}};_0x1eaf5c(++_0x57cf10);}(_0xde10,0x71));var _0x0de1=function(_0x1a1420,_0x11414d){_0x1a1420=_0x1a1420-0x0;var _0x10f6a0=_0xde10[_0x1a1420];return _0x10f6a0;};'use strict';var _=require(_0x0de1('0x0'));var util=require(_0x0de1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0de1('0x2'));var fs=require('fs');var Redis=require(_0x0de1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0de1('0x4'));var logger=require(_0x0de1('0x5'))(_0x0de1('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x0de1('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x50d4fc,_0x50895a,_0xf357f4){return new BPromise(function(_0x1483ec,_0x3a3705){return client[_0x0de1('0x8')](_0x50d4fc,_0xf357f4)['then'](function(_0x38f157){logger['info'](_0x0de1('0x9'),_0x50895a,'request\x20sent');logger[_0x0de1('0xa')](_0x0de1('0xb'),_0x50895a,_0x0de1('0xc'),JSON[_0x0de1('0xd')](_0x38f157));if(_0x38f157[_0x0de1('0xe')]){if(_0x38f157[_0x0de1('0xe')][_0x0de1('0xf')]===0x1f4){logger['error'](_0x0de1('0x9'),_0x50895a,_0x38f157[_0x0de1('0xe')][_0x0de1('0x10')]);return _0x3a3705(_0x38f157[_0x0de1('0xe')][_0x0de1('0x10')]);}logger[_0x0de1('0xe')](_0x0de1('0x9'),_0x50895a,_0x38f157[_0x0de1('0xe')][_0x0de1('0x10')]);return _0x1483ec(_0x38f157[_0x0de1('0xe')][_0x0de1('0x10')]);}else{logger[_0x0de1('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x50895a,'request\x20sent');_0x1483ec(_0x38f157['result']['message']);}})[_0x0de1('0x12')](function(_0x3c50e8){logger['error'](_0x0de1('0x9'),_0x50895a,_0x3c50e8);_0x3a3705(_0x3c50e8);});});}exports[_0x0de1('0x13')]=function(_0x55a12a){var _0x1baec0=this;return new Promise(function(_0x51fdce,_0x4d702d){return db[_0x0de1('0x14')][_0x0de1('0x15')]({'raw':_0x55a12a[_0x0de1('0x16')]?_0x55a12a['options'][_0x0de1('0x17')]===undefined?!![]:![]:!![],'where':_0x55a12a[_0x0de1('0x16')]?_0x55a12a[_0x0de1('0x16')][_0x0de1('0x18')]||null:null,'attributes':_0x55a12a[_0x0de1('0x16')]?_0x55a12a[_0x0de1('0x16')]['attributes']||null:null,'limit':_0x55a12a[_0x0de1('0x16')]?_0x55a12a['options'][_0x0de1('0x19')]||null:null,'include':_0x55a12a['options']?_0x55a12a[_0x0de1('0x16')][_0x0de1('0x1a')]?_['map'](_0x55a12a[_0x0de1('0x16')][_0x0de1('0x1a')],function(_0x26c24c){return{'model':db[_0x26c24c['model']],'as':_0x26c24c['as'],'attributes':_0x26c24c[_0x0de1('0x1b')],'include':_0x26c24c[_0x0de1('0x1a')]?_['map'](_0x26c24c[_0x0de1('0x1a')],function(_0x3ad07f){return{'model':db[_0x3ad07f[_0x0de1('0x1c')]],'as':_0x3ad07f['as'],'attributes':_0x3ad07f[_0x0de1('0x1b')],'include':_0x3ad07f[_0x0de1('0x1a')]?_[_0x0de1('0x1d')](_0x3ad07f['include'],function(_0x56cd91){return{'model':db[_0x56cd91[_0x0de1('0x1c')]],'as':_0x56cd91['as'],'attributes':_0x56cd91[_0x0de1('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x0de1('0x1e')](function(_0x273df8){logger[_0x0de1('0x11')]('GetVoiceCallReport',_0x55a12a);logger[_0x0de1('0xa')](_0x0de1('0x13'),_0x55a12a,JSON['stringify'](_0x273df8));_0x51fdce(_0x273df8);})[_0x0de1('0x12')](function(_0x3c29b4){logger[_0x0de1('0xe')](_0x0de1('0x13'),_0x3c29b4[_0x0de1('0x10')],_0x55a12a);_0x4d702d(_0x1baec0['error'](0x1f4,_0x3c29b4[_0x0de1('0x10')]));});});};exports[_0x0de1('0x1f')]=function(_0x1ccd48){var _0x5d7734=this;return new Promise(function(_0xa12cd4,_0xdabc6d){return db[_0x0de1('0x14')][_0x0de1('0x20')](_0x1ccd48[_0x0de1('0x21')],{'raw':_0x1ccd48[_0x0de1('0x16')]?_0x1ccd48['options'][_0x0de1('0x17')]===undefined?!![]:![]:!![]})[_0x0de1('0x1e')](function(_0x45178e){logger[_0x0de1('0x11')](_0x0de1('0x1f'),_0x1ccd48);logger[_0x0de1('0xa')](_0x0de1('0x1f'),_0x1ccd48,JSON['stringify'](_0x45178e));_0xa12cd4(_0x45178e);})['catch'](function(_0x227ce4){logger[_0x0de1('0xe')](_0x0de1('0x1f'),_0x227ce4[_0x0de1('0x10')],_0x1ccd48);_0xdabc6d(_0x5d7734[_0x0de1('0xe')](0x1f4,_0x227ce4[_0x0de1('0x10')]));});});};exports['UpdateVoiceCallReport']=function(_0x2fb97a){var _0x32f5c5=this;return new Promise(function(_0x340173,_0xba76dd){return db[_0x0de1('0x14')]['update'](_0x2fb97a['body'],{'raw':_0x2fb97a[_0x0de1('0x16')]?_0x2fb97a[_0x0de1('0x16')][_0x0de1('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2fb97a[_0x0de1('0x16')]?_0x2fb97a['options'][_0x0de1('0x18')]||null:null,'attributes':_0x2fb97a[_0x0de1('0x16')]?_0x2fb97a['options'][_0x0de1('0x1b')]||null:null,'limit':_0x2fb97a['options']?_0x2fb97a[_0x0de1('0x16')]['limit']||null:null})[_0x0de1('0x1e')](function(_0x3121fe){logger[_0x0de1('0x11')](_0x0de1('0x22'),_0x2fb97a);logger[_0x0de1('0xa')](_0x0de1('0x22'),_0x2fb97a,JSON[_0x0de1('0xd')](_0x3121fe));_0x340173(_0x3121fe);})[_0x0de1('0x12')](function(_0x33ea19){logger['error'](_0x0de1('0x22'),_0x33ea19[_0x0de1('0x10')],_0x2fb97a);_0xba76dd(_0x32f5c5['error'](0x1f4,_0x33ea19['message']));});});};
\ No newline at end of file
+var _0x025a=['GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','include','map','model','attributes','CreateVoiceCallReport','body','UpdateVoiceCallReport','update','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x025a,0x13e));var _0xa025=function(_0x3f1a8a,_0x5e6b68){_0x3f1a8a=_0x3f1a8a-0x0;var _0x3e34da=_0x025a[_0x3f1a8a];return _0x3e34da;};'use strict';var _=require(_0xa025('0x0'));var util=require(_0xa025('0x1'));var moment=require('moment');var BPromise=require(_0xa025('0x2'));var rs=require(_0xa025('0x3'));var fs=require('fs');var Redis=require(_0xa025('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa025('0x5'));var logger=require(_0xa025('0x6'))(_0xa025('0x7'));var config=require(_0xa025('0x8'));var jayson=require(_0xa025('0x9'));var client=jayson[_0xa025('0xa')][_0xa025('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x596c62,_0x359791,_0xa9771f){return new BPromise(function(_0x275984,_0x1d6330){return client[_0xa025('0xc')](_0x596c62,_0xa9771f)[_0xa025('0xd')](function(_0x2d435a){logger[_0xa025('0xe')](_0xa025('0xf'),_0x359791,_0xa025('0x10'));logger[_0xa025('0x11')](_0xa025('0x12'),_0x359791,'request\x20sent',JSON[_0xa025('0x13')](_0x2d435a));if(_0x2d435a['error']){if(_0x2d435a[_0xa025('0x14')][_0xa025('0x15')]===0x1f4){logger[_0xa025('0x14')](_0xa025('0xf'),_0x359791,_0x2d435a[_0xa025('0x14')]['message']);return _0x1d6330(_0x2d435a['error'][_0xa025('0x16')]);}logger[_0xa025('0x14')](_0xa025('0xf'),_0x359791,_0x2d435a[_0xa025('0x14')][_0xa025('0x16')]);return _0x275984(_0x2d435a['error'][_0xa025('0x16')]);}else{logger[_0xa025('0xe')](_0xa025('0xf'),_0x359791,_0xa025('0x10'));_0x275984(_0x2d435a['result'][_0xa025('0x16')]);}})[_0xa025('0x17')](function(_0x416349){logger[_0xa025('0x14')](_0xa025('0xf'),_0x359791,_0x416349);_0x1d6330(_0x416349);});});}exports[_0xa025('0x18')]=function(_0x13efa4){var _0x42669f=this;return new Promise(function(_0x9335eb,_0x399e31){return db[_0xa025('0x19')][_0xa025('0x1a')]({'raw':_0x13efa4[_0xa025('0x1b')]?_0x13efa4[_0xa025('0x1b')][_0xa025('0x1c')]===undefined?!![]:![]:!![],'where':_0x13efa4[_0xa025('0x1b')]?_0x13efa4[_0xa025('0x1b')][_0xa025('0x1d')]||null:null,'attributes':_0x13efa4[_0xa025('0x1b')]?_0x13efa4[_0xa025('0x1b')]['attributes']||null:null,'limit':_0x13efa4[_0xa025('0x1b')]?_0x13efa4[_0xa025('0x1b')]['limit']||null:null,'include':_0x13efa4['options']?_0x13efa4[_0xa025('0x1b')][_0xa025('0x1e')]?_[_0xa025('0x1f')](_0x13efa4['options'][_0xa025('0x1e')],function(_0x8c0a78){return{'model':db[_0x8c0a78[_0xa025('0x20')]],'as':_0x8c0a78['as'],'attributes':_0x8c0a78[_0xa025('0x21')],'include':_0x8c0a78[_0xa025('0x1e')]?_['map'](_0x8c0a78[_0xa025('0x1e')],function(_0x5d658c){return{'model':db[_0x5d658c[_0xa025('0x20')]],'as':_0x5d658c['as'],'attributes':_0x5d658c[_0xa025('0x21')],'include':_0x5d658c['include']?_[_0xa025('0x1f')](_0x5d658c[_0xa025('0x1e')],function(_0x5b028f){return{'model':db[_0x5b028f['model']],'as':_0x5b028f['as'],'attributes':_0x5b028f[_0xa025('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa025('0xd')](function(_0x44d5f1){logger[_0xa025('0xe')]('GetVoiceCallReport',_0x13efa4);logger['debug'](_0xa025('0x18'),_0x13efa4,JSON[_0xa025('0x13')](_0x44d5f1));_0x9335eb(_0x44d5f1);})[_0xa025('0x17')](function(_0x1a6df0){logger[_0xa025('0x14')](_0xa025('0x18'),_0x1a6df0[_0xa025('0x16')],_0x13efa4);_0x399e31(_0x42669f[_0xa025('0x14')](0x1f4,_0x1a6df0['message']));});});};exports[_0xa025('0x22')]=function(_0x20090a){var _0x2076d5=this;return new Promise(function(_0x366d77,_0x597bfa){return db[_0xa025('0x19')]['create'](_0x20090a[_0xa025('0x23')],{'raw':_0x20090a['options']?_0x20090a[_0xa025('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0xa025('0xd')](function(_0x5d3099){logger['info'](_0xa025('0x22'),_0x20090a);logger[_0xa025('0x11')](_0xa025('0x22'),_0x20090a,JSON[_0xa025('0x13')](_0x5d3099));_0x366d77(_0x5d3099);})[_0xa025('0x17')](function(_0x1f1c2a){logger[_0xa025('0x14')](_0xa025('0x22'),_0x1f1c2a[_0xa025('0x16')],_0x20090a);_0x597bfa(_0x2076d5[_0xa025('0x14')](0x1f4,_0x1f1c2a[_0xa025('0x16')]));});});};exports[_0xa025('0x24')]=function(_0x556a5f){var _0x406299=this;return new Promise(function(_0x3b2f6f,_0x57e1ba){return db[_0xa025('0x19')][_0xa025('0x25')](_0x556a5f[_0xa025('0x23')],{'raw':_0x556a5f[_0xa025('0x1b')]?_0x556a5f[_0xa025('0x1b')][_0xa025('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x556a5f[_0xa025('0x1b')]?_0x556a5f[_0xa025('0x1b')][_0xa025('0x1d')]||null:null,'attributes':_0x556a5f['options']?_0x556a5f['options']['attributes']||null:null,'limit':_0x556a5f['options']?_0x556a5f[_0xa025('0x1b')]['limit']||null:null})[_0xa025('0xd')](function(_0x2f175a){logger['info'](_0xa025('0x24'),_0x556a5f);logger[_0xa025('0x11')]('UpdateVoiceCallReport',_0x556a5f,JSON[_0xa025('0x13')](_0x2f175a));_0x3b2f6f(_0x2f175a);})[_0xa025('0x17')](function(_0x5982ff){logger[_0xa025('0x14')](_0xa025('0x24'),_0x5982ff[_0xa025('0x16')],_0x556a5f);_0x57e1ba(_0x406299[_0xa025('0x14')](0x1f4,_0x5982ff[_0xa025('0x16')]));});});};
\ No newline at end of file
index 2203e9e..d0663f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf151=['get','isAuthenticated','index','/:id','show','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2217ae,_0x102af2){var _0x4b9ced=function(_0x187f25){while(--_0x187f25){_0x2217ae['push'](_0x2217ae['shift']());}};_0x4b9ced(++_0x102af2);}(_0xf151,0x183));var _0x1f15=function(_0x3dc320,_0x51a587){_0x3dc320=_0x3dc320-0x0;var _0x5d8f4f=_0xf151[_0x3dc320];return _0x5d8f4f;};'use strict';var multer=require('multer');var util=require(_0x1f15('0x0'));var path=require(_0x1f15('0x1'));var timeout=require(_0x1f15('0x2'));var express=require(_0x1f15('0x3'));var router=express[_0x1f15('0x4')]();var fs_extra=require(_0x1f15('0x5'));var auth=require(_0x1f15('0x6'));var interaction=require(_0x1f15('0x7'));var config=require(_0x1f15('0x8'));var controller=require('./voiceChanSpy.controller');router[_0x1f15('0x9')]('/',auth[_0x1f15('0xa')](),controller[_0x1f15('0xb')]);router[_0x1f15('0x9')](_0x1f15('0xc'),auth[_0x1f15('0xa')](),controller[_0x1f15('0xd')]);router['post']('/',auth[_0x1f15('0xa')](),controller['create']);router[_0x1f15('0xe')]('/:id',auth[_0x1f15('0xa')](),controller[_0x1f15('0xf')]);router['delete'](_0x1f15('0xc'),auth['isAuthenticated'](),controller[_0x1f15('0x10')]);module[_0x1f15('0x11')]=router;
\ No newline at end of file
+var _0xf6b3=['destroy','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','show','post','create','put','update','delete'];(function(_0x5b9829,_0x197062){var _0x2e9e4b=function(_0x43cad5){while(--_0x43cad5){_0x5b9829['push'](_0x5b9829['shift']());}};_0x2e9e4b(++_0x197062);}(_0xf6b3,0xfd));var _0x3f6b=function(_0x4f88fd,_0x4a54d9){_0x4f88fd=_0x4f88fd-0x0;var _0x2b02ae=_0xf6b3[_0x4f88fd];return _0x2b02ae;};'use strict';var multer=require(_0x3f6b('0x0'));var util=require(_0x3f6b('0x1'));var path=require(_0x3f6b('0x2'));var timeout=require(_0x3f6b('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3f6b('0x4'));var interaction=require(_0x3f6b('0x5'));var config=require(_0x3f6b('0x6'));var controller=require(_0x3f6b('0x7'));router[_0x3f6b('0x8')]('/',auth[_0x3f6b('0x9')](),controller[_0x3f6b('0xa')]);router[_0x3f6b('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x3f6b('0xb')]);router[_0x3f6b('0xc')]('/',auth[_0x3f6b('0x9')](),controller[_0x3f6b('0xd')]);router[_0x3f6b('0xe')]('/:id',auth[_0x3f6b('0x9')](),controller[_0x3f6b('0xf')]);router[_0x3f6b('0x10')]('/:id',auth[_0x3f6b('0x9')](),controller[_0x3f6b('0x11')]);module['exports']=router;
\ No newline at end of file
index 9748c4d..d6a7935 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb3e=['exports','STRING','name','setDataValue','getDataValue','options','split','BOOLEAN','sequelize'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xcb3e,0x155));var _0xecb3=function(_0x148dff,_0x4d4a74){_0x148dff=_0x148dff-0x0;var _0x1019f5=_0xcb3e[_0x148dff];return _0x1019f5;};'use strict';var Sequelize=require(_0xecb3('0x0'));module[_0xecb3('0x1')]={'name':{'type':Sequelize[_0xecb3('0x2')]},'prefix':{'type':Sequelize['STRING'],'unique':_0xecb3('0x3'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x384e17){this[_0xecb3('0x4')]('options',_0x384e17?_0x384e17['join'](''):[]);},'get':function(){return this[_0xecb3('0x5')]('options')?this[_0xecb3('0x5')](_0xecb3('0x6'))[_0xecb3('0x7')](''):[];}},'auth':{'type':Sequelize[_0xecb3('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0xecb3('0x2')]},'record':{'type':Sequelize[_0xecb3('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xecb3('0x2')]},'description':{'type':Sequelize[_0xecb3('0x2')]}};
\ No newline at end of file
+var _0xb8c7=['exports','STRING','name','options','getDataValue','split','BOOLEAN','sequelize'];(function(_0x2dd408,_0x1e3402){var _0x4aa4a9=function(_0xbc01eb){while(--_0xbc01eb){_0x2dd408['push'](_0x2dd408['shift']());}};_0x4aa4a9(++_0x1e3402);}(_0xb8c7,0xcf));var _0x7b8c=function(_0x1eb75b,_0x367914){_0x1eb75b=_0x1eb75b-0x0;var _0x103c07=_0xb8c7[_0x1eb75b];return _0x103c07;};'use strict';var Sequelize=require(_0x7b8c('0x0'));module[_0x7b8c('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x7b8c('0x2')],'unique':_0x7b8c('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x7b8c('0x2')],'set':function(_0x21f8f6){this['setDataValue'](_0x7b8c('0x4'),_0x21f8f6?_0x21f8f6['join'](''):[]);},'get':function(){return this['getDataValue'](_0x7b8c('0x4'))?this[_0x7b8c('0x5')](_0x7b8c('0x4'))[_0x7b8c('0x6')](''):[];}},'auth':{'type':Sequelize[_0x7b8c('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0x7b8c('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 41a54b7..3c3424e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bbd=['../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','UserProfileResource','sendStatus','error','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','where','filter','VIRTUAL','merge','VoiceChanSpy','includeAll','findAll','rows','catch','show','params','keys','include','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','ChanSpies','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x4a8418,_0x39078a){var _0x390174=function(_0x173ea6){while(--_0x173ea6){_0x4a8418['push'](_0x4a8418['shift']());}};_0x390174(++_0x39078a);}(_0x5bbd,0x12b));var _0xd5bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5bbd[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xd5bb('0x0'));var rimraf=require(_0xd5bb('0x1'));var zipdir=require(_0xd5bb('0x2'));var jsonpatch=require(_0xd5bb('0x3'));var rp=require(_0xd5bb('0x4'));var moment=require(_0xd5bb('0x5'));var BPromise=require(_0xd5bb('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xd5bb('0x7'));var csv=require(_0xd5bb('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd5bb('0x9'));var squel=require('squel');var crypto=require(_0xd5bb('0xa'));var jsforce=require(_0xd5bb('0xb'));var deskjs=require(_0xd5bb('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd5bb('0xd'));var Redis=require(_0xd5bb('0xe'));var authService=require(_0xd5bb('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xd5bb('0x10'));var hardwareService=require(_0xd5bb('0x11'));var logger=require(_0xd5bb('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xd5bb('0x13'));var licenseUtil=require(_0xd5bb('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1df75a,_0x4b1f1b){_0x4b1f1b=_0x4b1f1b||0xcc;return function(_0x16b13f){if(_0x16b13f){return _0x1df75a['sendStatus'](_0x4b1f1b);}return _0x1df75a[_0xd5bb('0x15')](_0x4b1f1b)[_0xd5bb('0x16')]();};}function respondWithResult(_0x57cdb0,_0x37bb78){_0x37bb78=_0x37bb78||0xc8;return function(_0x1f54eb){if(_0x1f54eb){return _0x57cdb0[_0xd5bb('0x15')](_0x37bb78)['json'](_0x1f54eb);}};}function respondWithFilteredResult(_0x48c60a,_0x7d2333){return function(_0xa014fe){if(_0xa014fe){var _0x516418=typeof _0x7d2333[_0xd5bb('0x17')]===_0xd5bb('0x18')&&typeof _0x7d2333[_0xd5bb('0x19')]===_0xd5bb('0x18');var _0x510d9b=_0xa014fe[_0xd5bb('0x1a')];var _0x41bc89=_0x516418?0x0:_0x7d2333[_0xd5bb('0x17')];var _0x3d312f=_0x516418?_0xa014fe[_0xd5bb('0x1a')]:_0x7d2333[_0xd5bb('0x17')]+_0x7d2333['limit'];var _0x3bb5ae;if(_0x3d312f>=_0x510d9b){_0x3d312f=_0x510d9b;_0x3bb5ae=0xc8;}else{_0x3bb5ae=0xce;}_0x48c60a[_0xd5bb('0x15')](_0x3bb5ae);return _0x48c60a[_0xd5bb('0x1b')](_0xd5bb('0x1c'),_0x41bc89+'-'+_0x3d312f+'/'+_0x510d9b)[_0xd5bb('0x1d')](_0xa014fe);}return null;};}function patchUpdates(_0x40112f){return function(_0x56a68c){try{jsonpatch[_0xd5bb('0x1e')](_0x56a68c,_0x40112f,!![]);}catch(_0x53b6fc){return BPromise['reject'](_0x53b6fc);}return _0x56a68c[_0xd5bb('0x1f')]();};}function saveUpdates(_0x4c82d3,_0x53f959){return function(_0x118e3d){if(_0x118e3d){return _0x118e3d[_0xd5bb('0x20')](_0x4c82d3)[_0xd5bb('0x21')](function(_0x44551e){return _0x44551e;});}return null;};}function removeEntity(_0x285609,_0x52383c){return function(_0x2685ad){if(_0x2685ad){return _0x2685ad[_0xd5bb('0x22')]()[_0xd5bb('0x21')](function(){var _0x6155c=_0x2685ad[_0xd5bb('0x23')]({'plain':!![]});var _0x48f15d='ChanSpies';return db[_0xd5bb('0x24')][_0xd5bb('0x22')]({'where':{'type':_0x48f15d,'resourceId':_0x6155c['id']}})[_0xd5bb('0x21')](function(){return _0x2685ad;});})[_0xd5bb('0x21')](function(){_0x285609[_0xd5bb('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x11428a,_0x4f6ec6){return function(_0x30fa6d){if(!_0x30fa6d){_0x11428a[_0xd5bb('0x25')](0x194);}return _0x30fa6d;};}function handleError(_0x4698a8,_0x32a83e){_0x32a83e=_0x32a83e||0x1f4;return function(_0x10e5a6){logger[_0xd5bb('0x26')](_0x10e5a6[_0xd5bb('0x27')]);if(_0x10e5a6[_0xd5bb('0x28')]){delete _0x10e5a6[_0xd5bb('0x28')];}_0x4698a8[_0xd5bb('0x15')](_0x32a83e)[_0xd5bb('0x29')](_0x10e5a6);};}exports[_0xd5bb('0x2a')]=function(_0x408ada,_0x965a7f){var _0x12aeea={},_0x2a6a4a={},_0x4db50b={'count':0x0,'rows':[]};var _0x12fa21=_[_0xd5bb('0x2b')](db['VoiceChanSpy'][_0xd5bb('0x2c')],function(_0x425e8a){return{'name':_0x425e8a['fieldName'],'type':_0x425e8a[_0xd5bb('0x2d')][_0xd5bb('0x2e')]};});_0x2a6a4a[_0xd5bb('0x2f')]=_['map'](_0x12fa21,_0xd5bb('0x28'));_0x2a6a4a[_0xd5bb('0x30')]=_['keys'](_0x408ada['query']);_0x2a6a4a[_0xd5bb('0x31')]=_[_0xd5bb('0x32')](_0x2a6a4a['model'],_0x2a6a4a[_0xd5bb('0x30')]);_0x12aeea['attributes']=_[_0xd5bb('0x32')](_0x2a6a4a[_0xd5bb('0x2f')],qs['fields'](_0x408ada[_0xd5bb('0x30')][_0xd5bb('0x33')]));_0x12aeea[_0xd5bb('0x34')]=_0x12aeea[_0xd5bb('0x34')][_0xd5bb('0x35')]?_0x12aeea[_0xd5bb('0x34')]:_0x2a6a4a['model'];if(!_0x408ada[_0xd5bb('0x30')][_0xd5bb('0x36')]('nolimit')){_0x12aeea[_0xd5bb('0x19')]=qs[_0xd5bb('0x19')](_0x408ada[_0xd5bb('0x30')][_0xd5bb('0x19')]);_0x12aeea[_0xd5bb('0x17')]=qs[_0xd5bb('0x17')](_0x408ada[_0xd5bb('0x30')][_0xd5bb('0x17')]);}_0x12aeea['order']=qs['sort'](_0x408ada[_0xd5bb('0x30')]['sort']);_0x12aeea[_0xd5bb('0x37')]=qs['filters'](_['pick'](_0x408ada[_0xd5bb('0x30')],_0x2a6a4a[_0xd5bb('0x31')]),_0x12fa21);if(_0x408ada[_0xd5bb('0x30')][_0xd5bb('0x38')]){_0x12aeea[_0xd5bb('0x37')]=_['merge'](_0x12aeea['where'],{'$or':_['map'](_0x12fa21,function(_0x278954){if(_0x278954[_0xd5bb('0x2d')]!==_0xd5bb('0x39')){var _0xb9eb13={};_0xb9eb13[_0x278954['name']]={'$like':'%'+_0x408ada[_0xd5bb('0x30')][_0xd5bb('0x38')]+'%'};return _0xb9eb13;}})});}_0x12aeea=_[_0xd5bb('0x3a')]({},_0x12aeea,_0x408ada['options']);var _0x3d11c9={'where':_0x12aeea['where']};return db[_0xd5bb('0x3b')]['count'](_0x3d11c9)['then'](function(_0x2e0e59){_0x4db50b['count']=_0x2e0e59;if(_0x408ada['query'][_0xd5bb('0x3c')]){_0x12aeea['include']=[{'all':!![]}];}return db[_0xd5bb('0x3b')][_0xd5bb('0x3d')](_0x12aeea);})[_0xd5bb('0x21')](function(_0x51d020){_0x4db50b[_0xd5bb('0x3e')]=_0x51d020;return _0x4db50b;})[_0xd5bb('0x21')](respondWithFilteredResult(_0x965a7f,_0x12aeea))[_0xd5bb('0x3f')](handleError(_0x965a7f,null));};exports[_0xd5bb('0x40')]=function(_0x4d392f,_0x56a1ba){var _0x47d1ee={'raw':![],'where':{'id':_0x4d392f[_0xd5bb('0x41')]['id']}},_0x30c47e={};_0x30c47e[_0xd5bb('0x2f')]=_[_0xd5bb('0x42')](db[_0xd5bb('0x3b')][_0xd5bb('0x2c')]);_0x30c47e[_0xd5bb('0x30')]=_['keys'](_0x4d392f[_0xd5bb('0x30')]);_0x30c47e[_0xd5bb('0x31')]=_[_0xd5bb('0x32')](_0x30c47e[_0xd5bb('0x2f')],_0x30c47e[_0xd5bb('0x30')]);_0x47d1ee[_0xd5bb('0x34')]=_['intersection'](_0x30c47e[_0xd5bb('0x2f')],qs[_0xd5bb('0x33')](_0x4d392f[_0xd5bb('0x30')][_0xd5bb('0x33')]));_0x47d1ee[_0xd5bb('0x34')]=_0x47d1ee['attributes']['length']?_0x47d1ee[_0xd5bb('0x34')]:_0x30c47e[_0xd5bb('0x2f')];if(_0x4d392f['query'][_0xd5bb('0x3c')]){_0x47d1ee[_0xd5bb('0x43')]=[{'all':!![]}];}_0x47d1ee=_['merge']({},_0x47d1ee,_0x4d392f[_0xd5bb('0x44')]);return db['VoiceChanSpy'][_0xd5bb('0x45')](_0x47d1ee)[_0xd5bb('0x21')](handleEntityNotFound(_0x56a1ba,null))[_0xd5bb('0x21')](respondWithResult(_0x56a1ba,null))[_0xd5bb('0x3f')](handleError(_0x56a1ba,null));};exports[_0xd5bb('0x46')]=function(_0x58553c,_0x1cbb68){return db['VoiceChanSpy'][_0xd5bb('0x46')](_0x58553c['body'],{})[_0xd5bb('0x21')](function(_0x505db8){var _0x4ea20b=_0x58553c[_0xd5bb('0x47')][_0xd5bb('0x23')]({'plain':!![]});if(!_0x4ea20b)throw new Error(_0xd5bb('0x48'));if(_0x4ea20b['role']===_0xd5bb('0x47')){var _0x26c882=_0x505db8[_0xd5bb('0x23')]({'plain':!![]});var _0x96e91e=_0xd5bb('0x49');return db[_0xd5bb('0x4a')][_0xd5bb('0x45')]({'where':{'name':_0x96e91e,'userProfileId':_0x4ea20b[_0xd5bb('0x4b')]},'raw':!![]})[_0xd5bb('0x21')](function(_0x2d8d82){if(_0x2d8d82&&_0x2d8d82[_0xd5bb('0x4c')]===0x0){return db['UserProfileResource'][_0xd5bb('0x46')]({'name':_0x26c882[_0xd5bb('0x28')],'resourceId':_0x26c882['id'],'type':_0x2d8d82[_0xd5bb('0x28')],'sectionId':_0x2d8d82['id']},{})[_0xd5bb('0x21')](function(){return _0x505db8;});}else{return _0x505db8;}})[_0xd5bb('0x3f')](function(_0x4d1dd4){logger['error'](_0xd5bb('0x4d'),_0x4d1dd4);throw _0x4d1dd4;});}return _0x505db8;})[_0xd5bb('0x21')](respondWithResult(_0x1cbb68,0xc9))[_0xd5bb('0x3f')](handleError(_0x1cbb68,null));};exports[_0xd5bb('0x20')]=function(_0x566322,_0x1abe56){if(_0x566322['body']['id']){delete _0x566322[_0xd5bb('0x4e')]['id'];}return db[_0xd5bb('0x3b')]['find']({'where':{'id':_0x566322[_0xd5bb('0x41')]['id']}})['then'](handleEntityNotFound(_0x1abe56,null))['then'](saveUpdates(_0x566322[_0xd5bb('0x4e')],null))[_0xd5bb('0x21')](respondWithResult(_0x1abe56,null))[_0xd5bb('0x3f')](handleError(_0x1abe56,null));};exports[_0xd5bb('0x22')]=function(_0x11cc95,_0x1f7f76){return db[_0xd5bb('0x3b')][_0xd5bb('0x45')]({'where':{'id':_0x11cc95[_0xd5bb('0x41')]['id']}})[_0xd5bb('0x21')](handleEntityNotFound(_0x1f7f76,null))[_0xd5bb('0x21')](removeEntity(_0x1f7f76,null))[_0xd5bb('0x3f')](handleError(_0x1f7f76,null));};
\ No newline at end of file
+var _0x4584=['reject','update','then','get','UserProfileResource','destroy','sendStatus','stack','name','send','index','map','VoiceChanSpy','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','ChanSpies','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','limit','count','set','Content-Range','apply'];(function(_0x25d051,_0x3d9a8f){var _0x231dcd=function(_0x2fff94){while(--_0x2fff94){_0x25d051['push'](_0x25d051['shift']());}};_0x231dcd(++_0x3d9a8f);}(_0x4584,0x1cf));var _0x4458=function(_0x31038b,_0x3ac1c9){_0x31038b=_0x31038b-0x0;var _0x1c9d3c=_0x4584[_0x31038b];return _0x1c9d3c;};'use strict';var emlformat=require(_0x4458('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4458('0x1'));var jsonpatch=require(_0x4458('0x2'));var rp=require(_0x4458('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4458('0x4'));var util=require(_0x4458('0x5'));var path=require(_0x4458('0x6'));var sox=require(_0x4458('0x7'));var csv=require(_0x4458('0x8'));var ejs=require(_0x4458('0x9'));var fs=require('fs');var fs_extra=require(_0x4458('0xa'));var _=require(_0x4458('0xb'));var squel=require(_0x4458('0xc'));var crypto=require('crypto');var jsforce=require(_0x4458('0xd'));var deskjs=require(_0x4458('0xe'));var toCsv=require(_0x4458('0x8'));var querystring=require(_0x4458('0xf'));var Papa=require(_0x4458('0x10'));var Redis=require(_0x4458('0x11'));var authService=require(_0x4458('0x12'));var qs=require(_0x4458('0x13'));var as=require(_0x4458('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4458('0x15'))(_0x4458('0x16'));var utils=require(_0x4458('0x17'));var config=require(_0x4458('0x18'));var licenseUtil=require(_0x4458('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x302552,_0x527809){_0x527809=_0x527809||0xcc;return function(_0x1f13ab){if(_0x1f13ab){return _0x302552['sendStatus'](_0x527809);}return _0x302552[_0x4458('0x1a')](_0x527809)[_0x4458('0x1b')]();};}function respondWithResult(_0x4abaf9,_0x5e2f05){_0x5e2f05=_0x5e2f05||0xc8;return function(_0x42771e){if(_0x42771e){return _0x4abaf9[_0x4458('0x1a')](_0x5e2f05)[_0x4458('0x1c')](_0x42771e);}};}function respondWithFilteredResult(_0x2619ed,_0x30d440){return function(_0x21ff11){if(_0x21ff11){var _0x225679=typeof _0x30d440[_0x4458('0x1d')]==='undefined'&&typeof _0x30d440[_0x4458('0x1e')]==='undefined';var _0x3bb7f4=_0x21ff11[_0x4458('0x1f')];var _0x130d39=_0x225679?0x0:_0x30d440['offset'];var _0x319247=_0x225679?_0x21ff11[_0x4458('0x1f')]:_0x30d440[_0x4458('0x1d')]+_0x30d440[_0x4458('0x1e')];var _0x463809;if(_0x319247>=_0x3bb7f4){_0x319247=_0x3bb7f4;_0x463809=0xc8;}else{_0x463809=0xce;}_0x2619ed[_0x4458('0x1a')](_0x463809);return _0x2619ed[_0x4458('0x20')](_0x4458('0x21'),_0x130d39+'-'+_0x319247+'/'+_0x3bb7f4)[_0x4458('0x1c')](_0x21ff11);}return null;};}function patchUpdates(_0x2dfcf1){return function(_0x531ab6){try{jsonpatch[_0x4458('0x22')](_0x531ab6,_0x2dfcf1,!![]);}catch(_0x24ecd1){return BPromise[_0x4458('0x23')](_0x24ecd1);}return _0x531ab6['save']();};}function saveUpdates(_0xe09a2b,_0x1688f2){return function(_0x58aeca){if(_0x58aeca){return _0x58aeca[_0x4458('0x24')](_0xe09a2b)[_0x4458('0x25')](function(_0x5d3df2){return _0x5d3df2;});}return null;};}function removeEntity(_0xcf668c,_0x17e482){return function(_0x3e7945){if(_0x3e7945){return _0x3e7945['destroy']()[_0x4458('0x25')](function(){var _0x597e89=_0x3e7945[_0x4458('0x26')]({'plain':!![]});var _0x504a86='ChanSpies';return db[_0x4458('0x27')][_0x4458('0x28')]({'where':{'type':_0x504a86,'resourceId':_0x597e89['id']}})[_0x4458('0x25')](function(){return _0x3e7945;});})[_0x4458('0x25')](function(){_0xcf668c[_0x4458('0x1a')](0xcc)[_0x4458('0x1b')]();});}};}function handleEntityNotFound(_0xa1f81e,_0x63bef){return function(_0x452ec4){if(!_0x452ec4){_0xa1f81e[_0x4458('0x29')](0x194);}return _0x452ec4;};}function handleError(_0x14df7b,_0x47f369){_0x47f369=_0x47f369||0x1f4;return function(_0x179be7){logger['error'](_0x179be7[_0x4458('0x2a')]);if(_0x179be7['name']){delete _0x179be7[_0x4458('0x2b')];}_0x14df7b[_0x4458('0x1a')](_0x47f369)[_0x4458('0x2c')](_0x179be7);};}exports[_0x4458('0x2d')]=function(_0x652afc,_0x235832){var _0x1494d2={},_0x164b01={},_0xe21853={'count':0x0,'rows':[]};var _0x3ea32d=_[_0x4458('0x2e')](db[_0x4458('0x2f')][_0x4458('0x30')],function(_0x328a9f){return{'name':_0x328a9f['fieldName'],'type':_0x328a9f[_0x4458('0x31')][_0x4458('0x32')]};});_0x164b01[_0x4458('0x33')]=_[_0x4458('0x2e')](_0x3ea32d,_0x4458('0x2b'));_0x164b01[_0x4458('0x34')]=_[_0x4458('0x35')](_0x652afc[_0x4458('0x34')]);_0x164b01['filters']=_['intersection'](_0x164b01['model'],_0x164b01[_0x4458('0x34')]);_0x1494d2[_0x4458('0x36')]=_[_0x4458('0x37')](_0x164b01[_0x4458('0x33')],qs[_0x4458('0x38')](_0x652afc[_0x4458('0x34')][_0x4458('0x38')]));_0x1494d2[_0x4458('0x36')]=_0x1494d2[_0x4458('0x36')][_0x4458('0x39')]?_0x1494d2[_0x4458('0x36')]:_0x164b01[_0x4458('0x33')];if(!_0x652afc[_0x4458('0x34')]['hasOwnProperty'](_0x4458('0x3a'))){_0x1494d2['limit']=qs[_0x4458('0x1e')](_0x652afc[_0x4458('0x34')][_0x4458('0x1e')]);_0x1494d2[_0x4458('0x1d')]=qs['offset'](_0x652afc['query'][_0x4458('0x1d')]);}_0x1494d2[_0x4458('0x3b')]=qs[_0x4458('0x3c')](_0x652afc['query'][_0x4458('0x3c')]);_0x1494d2[_0x4458('0x3d')]=qs[_0x4458('0x3e')](_[_0x4458('0x3f')](_0x652afc[_0x4458('0x34')],_0x164b01[_0x4458('0x3e')]),_0x3ea32d);if(_0x652afc[_0x4458('0x34')][_0x4458('0x40')]){_0x1494d2[_0x4458('0x3d')]=_[_0x4458('0x41')](_0x1494d2['where'],{'$or':_['map'](_0x3ea32d,function(_0x778878){if(_0x778878[_0x4458('0x31')]!==_0x4458('0x42')){var _0x3feb47={};_0x3feb47[_0x778878[_0x4458('0x2b')]]={'$like':'%'+_0x652afc[_0x4458('0x34')][_0x4458('0x40')]+'%'};return _0x3feb47;}})});}_0x1494d2=_[_0x4458('0x41')]({},_0x1494d2,_0x652afc[_0x4458('0x43')]);var _0x524b6c={'where':_0x1494d2[_0x4458('0x3d')]};return db[_0x4458('0x2f')][_0x4458('0x1f')](_0x524b6c)[_0x4458('0x25')](function(_0x2e98ce){_0xe21853[_0x4458('0x1f')]=_0x2e98ce;if(_0x652afc[_0x4458('0x34')][_0x4458('0x44')]){_0x1494d2[_0x4458('0x45')]=[{'all':!![]}];}return db[_0x4458('0x2f')]['findAll'](_0x1494d2);})[_0x4458('0x25')](function(_0x474735){_0xe21853[_0x4458('0x46')]=_0x474735;return _0xe21853;})[_0x4458('0x25')](respondWithFilteredResult(_0x235832,_0x1494d2))[_0x4458('0x47')](handleError(_0x235832,null));};exports['show']=function(_0x4a7ee7,_0x5b4a72){var _0x477dde={'raw':![],'where':{'id':_0x4a7ee7[_0x4458('0x48')]['id']}},_0x339175={};_0x339175['model']=_[_0x4458('0x35')](db['VoiceChanSpy']['rawAttributes']);_0x339175['query']=_[_0x4458('0x35')](_0x4a7ee7[_0x4458('0x34')]);_0x339175['filters']=_[_0x4458('0x37')](_0x339175[_0x4458('0x33')],_0x339175['query']);_0x477dde['attributes']=_[_0x4458('0x37')](_0x339175[_0x4458('0x33')],qs[_0x4458('0x38')](_0x4a7ee7[_0x4458('0x34')][_0x4458('0x38')]));_0x477dde['attributes']=_0x477dde[_0x4458('0x36')]['length']?_0x477dde['attributes']:_0x339175['model'];if(_0x4a7ee7['query'][_0x4458('0x44')]){_0x477dde[_0x4458('0x45')]=[{'all':!![]}];}_0x477dde=_['merge']({},_0x477dde,_0x4a7ee7[_0x4458('0x43')]);return db['VoiceChanSpy'][_0x4458('0x49')](_0x477dde)[_0x4458('0x25')](handleEntityNotFound(_0x5b4a72,null))[_0x4458('0x25')](respondWithResult(_0x5b4a72,null))[_0x4458('0x47')](handleError(_0x5b4a72,null));};exports[_0x4458('0x4a')]=function(_0x455931,_0x3dd938){return db[_0x4458('0x2f')][_0x4458('0x4a')](_0x455931[_0x4458('0x4b')],{})[_0x4458('0x25')](function(_0x39aed8){var _0x367b3a=_0x455931[_0x4458('0x4c')][_0x4458('0x26')]({'plain':!![]});if(!_0x367b3a)throw new Error(_0x4458('0x4d'));if(_0x367b3a['role']===_0x4458('0x4c')){var _0x5251e1=_0x39aed8[_0x4458('0x26')]({'plain':!![]});var _0x50f86c=_0x4458('0x4e');return db['UserProfileSection'][_0x4458('0x49')]({'where':{'name':_0x50f86c,'userProfileId':_0x367b3a[_0x4458('0x4f')]},'raw':!![]})['then'](function(_0x1d9d48){if(_0x1d9d48&&_0x1d9d48[_0x4458('0x50')]===0x0){return db[_0x4458('0x27')][_0x4458('0x4a')]({'name':_0x5251e1[_0x4458('0x2b')],'resourceId':_0x5251e1['id'],'type':_0x1d9d48[_0x4458('0x2b')],'sectionId':_0x1d9d48['id']},{})['then'](function(){return _0x39aed8;});}else{return _0x39aed8;}})['catch'](function(_0x1d043f){logger[_0x4458('0x51')](_0x4458('0x52'),_0x1d043f);throw _0x1d043f;});}return _0x39aed8;})[_0x4458('0x25')](respondWithResult(_0x3dd938,0xc9))[_0x4458('0x47')](handleError(_0x3dd938,null));};exports[_0x4458('0x24')]=function(_0x53ff8a,_0x13535f){if(_0x53ff8a[_0x4458('0x4b')]['id']){delete _0x53ff8a['body']['id'];}return db[_0x4458('0x2f')][_0x4458('0x49')]({'where':{'id':_0x53ff8a[_0x4458('0x48')]['id']}})['then'](handleEntityNotFound(_0x13535f,null))[_0x4458('0x25')](saveUpdates(_0x53ff8a[_0x4458('0x4b')],null))[_0x4458('0x25')](respondWithResult(_0x13535f,null))['catch'](handleError(_0x13535f,null));};exports['destroy']=function(_0x54bb3f,_0x1f1899){return db[_0x4458('0x2f')][_0x4458('0x49')]({'where':{'id':_0x54bb3f[_0x4458('0x48')]['id']}})[_0x4458('0x25')](handleEntityNotFound(_0x1f1899,null))[_0x4458('0x25')](removeEntity(_0x1f1899,null))[_0x4458('0x47')](handleError(_0x1f1899,null));};
\ No newline at end of file
index 78ede60..0129850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b0a=['recordingFormat','auth','Authenticate','ChanSpy','SIP/%s,%s','options','join','record','StopMixMonitor','concat','internal','name','agent','then','catch','exports','models','voice_chanspy','length','VoiceExtension','bulkCreate','lodash','util','bluebird','./voiceChanSpy.attributes','from-sip','%s%s','prefix','system','push','chanspy','merge','format','${UNIQUEID}.%s,a'];(function(_0x1275b7,_0x457830){var _0x38524b=function(_0x51df7e){while(--_0x51df7e){_0x1275b7['push'](_0x1275b7['shift']());}};_0x38524b(++_0x457830);}(_0x8b0a,0x1ad));var _0xa8b0=function(_0x453d74,_0x2dd33b){_0x453d74=_0x453d74-0x0;var _0x2a641a=_0x8b0a[_0x453d74];return _0x2a641a;};'use strict';var _=require(_0xa8b0('0x0'));var util=require(_0xa8b0('0x1'));var BPromise=require(_0xa8b0('0x2'));var attributes=require(_0xa8b0('0x3'));var getUserApplications=function(_0x457ac8,_0x29e730,_0x381e2d){var _0x2c22a9=0x1;var _0x1cb771=[];var _0x195130={'context':_0x29e730['context']||_0xa8b0('0x4'),'exten':util['format'](_0xa8b0('0x5'),_0x457ac8[_0xa8b0('0x6')],_0x381e2d),'type':_0xa8b0('0x7'),'isApp':![],'ChanSpyId':_0x457ac8['id'],'UserId':_0x29e730['id']};_0x1cb771[_0xa8b0('0x8')](_['merge']({'app':'Set','appdata':util['format']('CDR(type)=%s',_0xa8b0('0x9')),'priority':_0x2c22a9++},_0x195130));if(_0x457ac8['record']){_0x1cb771[_0xa8b0('0x8')](_[_0xa8b0('0xa')]({'app':'MixMonitor','appdata':util[_0xa8b0('0xb')](_0xa8b0('0xc'),_0x457ac8[_0xa8b0('0xd')]),'priority':_0x2c22a9++},_0x195130));}if(_0x457ac8[_0xa8b0('0xe')]){_0x1cb771[_0xa8b0('0x8')](_[_0xa8b0('0xa')]({'app':_0xa8b0('0xf'),'appdata':_0x457ac8['password'],'priority':_0x2c22a9++},_0x195130));}_0x1cb771['push'](_[_0xa8b0('0xa')]({'app':_0xa8b0('0x10'),'appdata':util[_0xa8b0('0xb')](_0xa8b0('0x11'),_0x29e730['name'],_0x457ac8[_0xa8b0('0x12')]?_0x457ac8[_0xa8b0('0x12')][_0xa8b0('0x13')](''):''),'priority':_0x2c22a9++},_0x195130));if(_0x457ac8[_0xa8b0('0x14')]){_0x1cb771[_0xa8b0('0x8')](_[_0xa8b0('0xa')]({'app':_0xa8b0('0x15'),'priority':_0x2c22a9++},_0x195130));}return _0x1cb771;};var getChanSpyApplications=function(_0x21efa4,_0x4a11ba){var _0x32267e=[];for(var _0x58d183=0x0,_0xcb548e=0x1;_0x58d183<_0x4a11ba['length'];_0x58d183++,_0xcb548e=0x1){_0x32267e=_0x32267e[_0xa8b0('0x16')](getUserApplications(_0x21efa4,_0x4a11ba[_0x58d183],_0x4a11ba[_0x58d183][_0xa8b0('0x17')]));if(_0x4a11ba[_0x58d183][_0xa8b0('0x17')]!=_0x4a11ba[_0x58d183][_0xa8b0('0x18')]){_0x32267e=_0x32267e[_0xa8b0('0x16')](getUserApplications(_0x21efa4,_0x4a11ba[_0x58d183],_0x4a11ba[_0x58d183][_0xa8b0('0x18')]));}}return _0x32267e;};var getChanSpyPromise=function(_0x55926e,_0x1acf81){return new BPromise(function(_0x54fac6,_0x2b1324){return _0x55926e['User']['findAll']({'attributes':['id',_0xa8b0('0x18'),'internal'],'where':{'role':_0xa8b0('0x19'),'chanspy':!![]},'raw':!![]})[_0xa8b0('0x1a')](function(_0x2ae6ed){if(_0x2ae6ed){return _0x54fac6(getChanSpyApplications(_0x1acf81,_0x2ae6ed));}return _0x54fac6([]);})[_0xa8b0('0x1b')](function(_0x4ba155){_0x2b1324(_0x4ba155);});});};module[_0xa8b0('0x1c')]=function(_0x4a3d86,_0x5bdea0){var _0x1ed606=_0x4a3d86[_0xa8b0('0x1d')];return _0x4a3d86['define']('VoiceChanSpy',attributes,{'tableName':_0xa8b0('0x1e'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3489f2,_0x3f0901,_0x26794f){return getChanSpyPromise(_0x1ed606,_0x3489f2)[_0xa8b0('0x1a')](function(_0x271aeb){if(_0x271aeb&&_0x271aeb[_0xa8b0('0x1f')]){return _0x1ed606['VoiceExtension']['bulkCreate'](_0x271aeb);}})[_0xa8b0('0x1a')](function(){_0x26794f();})[_0xa8b0('0x1b')](function(_0x230ddf){_0x26794f(_0x230ddf);});},'afterUpdate':function(_0x2d7291,_0x42ebac,_0x18b0ee){return _0x1ed606[_0xa8b0('0x20')]['destroy']({'where':{'ChanSpyId':_0x2d7291['id']}})['then'](function(){return getChanSpyPromise(_0x1ed606,_0x2d7291);})[_0xa8b0('0x1a')](function(_0x579615){if(_0x579615&&_0x579615[_0xa8b0('0x1f')]){return _0x1ed606['VoiceExtension'][_0xa8b0('0x21')](_0x579615);}})['then'](function(){_0x18b0ee();})['catch'](function(_0x364883){_0x18b0ee(_0x364883);});},'afterDestroy':function(_0x337e25,_0x5399ad,_0x14d4dd){return _0x1ed606[_0xa8b0('0x20')]['destroy']({'where':{'ChanSpyId':_0x337e25['id']}})[_0xa8b0('0x1a')](function(){_0x14d4dd();})[_0xa8b0('0x1b')](function(_0x2bc424){_0x14d4dd(_0x2bc424);});}}});};
\ No newline at end of file
+var _0xa35c=['push','merge','CDR(type)=%s','chanspy','MixMonitor','format','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','record','length','concat','internal','findAll','catch','exports','models','VoiceChanSpy','voice_chanspy','then','VoiceExtension','destroy','bulkCreate','util','bluebird','./voiceChanSpy.attributes','%s%s','prefix','system'];(function(_0x209283,_0x331e05){var _0x4700aa=function(_0x5a003d){while(--_0x5a003d){_0x209283['push'](_0x209283['shift']());}};_0x4700aa(++_0x331e05);}(_0xa35c,0x86));var _0xca35=function(_0x4a2e9d,_0x4ad6c6){_0x4a2e9d=_0x4a2e9d-0x0;var _0x218a09=_0xa35c[_0x4a2e9d];return _0x218a09;};'use strict';var _=require('lodash');var util=require(_0xca35('0x0'));var BPromise=require(_0xca35('0x1'));var attributes=require(_0xca35('0x2'));var getUserApplications=function(_0x2febd5,_0x2664b7,_0x2ba8a7){var _0x9a69db=0x1;var _0x3c2b3c=[];var _0x333ba6={'context':_0x2664b7['context']||'from-sip','exten':util['format'](_0xca35('0x3'),_0x2febd5[_0xca35('0x4')],_0x2ba8a7),'type':_0xca35('0x5'),'isApp':![],'ChanSpyId':_0x2febd5['id'],'UserId':_0x2664b7['id']};_0x3c2b3c[_0xca35('0x6')](_[_0xca35('0x7')]({'app':'Set','appdata':util['format'](_0xca35('0x8'),_0xca35('0x9')),'priority':_0x9a69db++},_0x333ba6));if(_0x2febd5['record']){_0x3c2b3c[_0xca35('0x6')](_[_0xca35('0x7')]({'app':_0xca35('0xa'),'appdata':util[_0xca35('0xb')](_0xca35('0xc'),_0x2febd5[_0xca35('0xd')]),'priority':_0x9a69db++},_0x333ba6));}if(_0x2febd5[_0xca35('0xe')]){_0x3c2b3c[_0xca35('0x6')](_[_0xca35('0x7')]({'app':_0xca35('0xf'),'appdata':_0x2febd5[_0xca35('0x10')],'priority':_0x9a69db++},_0x333ba6));}_0x3c2b3c[_0xca35('0x6')](_[_0xca35('0x7')]({'app':_0xca35('0x11'),'appdata':util['format'](_0xca35('0x12'),_0x2664b7[_0xca35('0x13')],_0x2febd5[_0xca35('0x14')]?_0x2febd5[_0xca35('0x14')]['join'](''):''),'priority':_0x9a69db++},_0x333ba6));if(_0x2febd5[_0xca35('0x15')]){_0x3c2b3c[_0xca35('0x6')](_[_0xca35('0x7')]({'app':'StopMixMonitor','priority':_0x9a69db++},_0x333ba6));}return _0x3c2b3c;};var getChanSpyApplications=function(_0x40b337,_0x225f91){var _0x15f234=[];for(var _0x2522d7=0x0,_0xa53b3a=0x1;_0x2522d7<_0x225f91[_0xca35('0x16')];_0x2522d7++,_0xa53b3a=0x1){_0x15f234=_0x15f234[_0xca35('0x17')](getUserApplications(_0x40b337,_0x225f91[_0x2522d7],_0x225f91[_0x2522d7][_0xca35('0x18')]));if(_0x225f91[_0x2522d7]['internal']!=_0x225f91[_0x2522d7]['name']){_0x15f234=_0x15f234[_0xca35('0x17')](getUserApplications(_0x40b337,_0x225f91[_0x2522d7],_0x225f91[_0x2522d7][_0xca35('0x13')]));}}return _0x15f234;};var getChanSpyPromise=function(_0x3274cb,_0x3f0636){return new BPromise(function(_0x316b51,_0x2400c8){return _0x3274cb['User'][_0xca35('0x19')]({'attributes':['id',_0xca35('0x13'),_0xca35('0x18')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})['then'](function(_0x28ab58){if(_0x28ab58){return _0x316b51(getChanSpyApplications(_0x3f0636,_0x28ab58));}return _0x316b51([]);})[_0xca35('0x1a')](function(_0x6f4938){_0x2400c8(_0x6f4938);});});};module[_0xca35('0x1b')]=function(_0x34cc0d,_0x27f37f){var _0x448066=_0x34cc0d[_0xca35('0x1c')];return _0x34cc0d['define'](_0xca35('0x1d'),attributes,{'tableName':_0xca35('0x1e'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4c836d,_0x2b0115,_0x5cb8e7){return getChanSpyPromise(_0x448066,_0x4c836d)[_0xca35('0x1f')](function(_0x45d7f5){if(_0x45d7f5&&_0x45d7f5['length']){return _0x448066[_0xca35('0x20')]['bulkCreate'](_0x45d7f5);}})[_0xca35('0x1f')](function(){_0x5cb8e7();})[_0xca35('0x1a')](function(_0x822bcb){_0x5cb8e7(_0x822bcb);});},'afterUpdate':function(_0x5d419a,_0x11030f,_0x324620){return _0x448066['VoiceExtension'][_0xca35('0x21')]({'where':{'ChanSpyId':_0x5d419a['id']}})[_0xca35('0x1f')](function(){return getChanSpyPromise(_0x448066,_0x5d419a);})[_0xca35('0x1f')](function(_0x4bb11f){if(_0x4bb11f&&_0x4bb11f['length']){return _0x448066['VoiceExtension'][_0xca35('0x22')](_0x4bb11f);}})[_0xca35('0x1f')](function(){_0x324620();})[_0xca35('0x1a')](function(_0x23787d){_0x324620(_0x23787d);});},'afterDestroy':function(_0x3f91e6,_0x534e2b,_0x22ab41){return _0x448066['VoiceExtension'][_0xca35('0x21')]({'where':{'ChanSpyId':_0x3f91e6['id']}})[_0xca35('0x1f')](function(){_0x22ab41();})[_0xca35('0x1a')](function(_0x374780){_0x22ab41(_0x374780);});}}});};
\ No newline at end of file
index 3e44b40..c9a402f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c2c=['request\x20sent','stringify','code','error','message','info','result','catch','lodash','util','ioredis','../../config/utils','../../config/logger','jayson/promise','http','request','then','VoiceChanSpy,\x20%s,\x20%s','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s'];(function(_0x4e4f67,_0x57dc0b){var _0x193c53=function(_0x401912){while(--_0x401912){_0x4e4f67['push'](_0x4e4f67['shift']());}};_0x193c53(++_0x57dc0b);}(_0x9c2c,0x1c0));var _0xc9c2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c2c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc9c2('0x0'));var util=require(_0xc9c2('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc9c2('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xc9c2('0x3'));var logger=require(_0xc9c2('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc9c2('0x5'));var client=jayson['client'][_0xc9c2('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x17b5e8,_0x711f3d,_0x18a815){return new BPromise(function(_0x270572,_0xd7fb27){return client[_0xc9c2('0x7')](_0x17b5e8,_0x18a815)[_0xc9c2('0x8')](function(_0x8614c4){logger['info'](_0xc9c2('0x9'),_0x711f3d,'request\x20sent');logger[_0xc9c2('0xa')](_0xc9c2('0xb'),_0x711f3d,_0xc9c2('0xc'),JSON[_0xc9c2('0xd')](_0x8614c4));if(_0x8614c4['error']){if(_0x8614c4['error'][_0xc9c2('0xe')]===0x1f4){logger[_0xc9c2('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x711f3d,_0x8614c4[_0xc9c2('0xf')][_0xc9c2('0x10')]);return _0xd7fb27(_0x8614c4[_0xc9c2('0xf')][_0xc9c2('0x10')]);}logger[_0xc9c2('0xf')](_0xc9c2('0x9'),_0x711f3d,_0x8614c4[_0xc9c2('0xf')][_0xc9c2('0x10')]);return _0x270572(_0x8614c4[_0xc9c2('0xf')][_0xc9c2('0x10')]);}else{logger[_0xc9c2('0x11')](_0xc9c2('0x9'),_0x711f3d,'request\x20sent');_0x270572(_0x8614c4[_0xc9c2('0x12')][_0xc9c2('0x10')]);}})[_0xc9c2('0x13')](function(_0x240099){logger[_0xc9c2('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x711f3d,_0x240099);_0xd7fb27(_0x240099);});});}
\ No newline at end of file
+var _0xaf80=['result','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','VoiceChanSpy,\x20%s,\x20%s','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x28d211,_0x2de397){var _0x227b0d=function(_0x553268){while(--_0x553268){_0x28d211['push'](_0x28d211['shift']());}};_0x227b0d(++_0x2de397);}(_0xaf80,0x1ef));var _0x0af8=function(_0x187d40,_0xe4e3f3){_0x187d40=_0x187d40-0x0;var _0x485c10=_0xaf80[_0x187d40];return _0x485c10;};'use strict';var _=require(_0x0af8('0x0'));var util=require(_0x0af8('0x1'));var moment=require(_0x0af8('0x2'));var BPromise=require(_0x0af8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0af8('0x4'));var logger=require(_0x0af8('0x5'))(_0x0af8('0x6'));var config=require(_0x0af8('0x7'));var jayson=require(_0x0af8('0x8'));var client=jayson[_0x0af8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4bce2c,_0x28f555,_0x538c1c){return new BPromise(function(_0x207a9b,_0x430bd4){return client[_0x0af8('0xa')](_0x4bce2c,_0x538c1c)['then'](function(_0xc0d5eb){logger[_0x0af8('0xb')](_0x0af8('0xc'),_0x28f555,'request\x20sent');logger['debug'](_0x0af8('0xd'),_0x28f555,_0x0af8('0xe'),JSON[_0x0af8('0xf')](_0xc0d5eb));if(_0xc0d5eb[_0x0af8('0x10')]){if(_0xc0d5eb[_0x0af8('0x10')]['code']===0x1f4){logger[_0x0af8('0x10')](_0x0af8('0xc'),_0x28f555,_0xc0d5eb[_0x0af8('0x10')][_0x0af8('0x11')]);return _0x430bd4(_0xc0d5eb[_0x0af8('0x10')][_0x0af8('0x11')]);}logger[_0x0af8('0x10')]('VoiceChanSpy,\x20%s,\x20%s',_0x28f555,_0xc0d5eb['error'][_0x0af8('0x11')]);return _0x207a9b(_0xc0d5eb[_0x0af8('0x10')][_0x0af8('0x11')]);}else{logger[_0x0af8('0xb')](_0x0af8('0xc'),_0x28f555,_0x0af8('0xe'));_0x207a9b(_0xc0d5eb[_0x0af8('0x12')][_0x0af8('0x11')]);}})['catch'](function(_0x5f4275){logger['error'](_0x0af8('0xc'),_0x28f555,_0x5f4275);_0x430bd4(_0x5f4275);});});}
\ No newline at end of file
index 979cb41..7320c17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x666e=['./voiceContext.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x528d58,_0xace04b){var _0x104222=function(_0x1bdc2f){while(--_0x1bdc2f){_0x528d58['push'](_0x528d58['shift']());}};_0x104222(++_0xace04b);}(_0x666e,0xf3));var _0xe666=function(_0x2ef1a5,_0x316aac){_0x2ef1a5=_0x2ef1a5-0x0;var _0x268769=_0x666e[_0x2ef1a5];return _0x268769;};'use strict';var multer=require('multer');var util=require(_0xe666('0x0'));var path=require(_0xe666('0x1'));var timeout=require(_0xe666('0x2'));var express=require(_0xe666('0x3'));var router=express[_0xe666('0x4')]();var fs_extra=require(_0xe666('0x5'));var auth=require(_0xe666('0x6'));var interaction=require(_0xe666('0x7'));var config=require(_0xe666('0x8'));var controller=require(_0xe666('0x9'));router[_0xe666('0xa')]('/',auth[_0xe666('0xb')](),controller[_0xe666('0xc')]);router[_0xe666('0xa')](_0xe666('0xd'),auth[_0xe666('0xb')](),controller[_0xe666('0xe')]);router[_0xe666('0xf')]('/',auth[_0xe666('0xb')](),controller[_0xe666('0x10')]);router[_0xe666('0x11')](_0xe666('0xd'),auth[_0xe666('0xb')](),controller[_0xe666('0x12')]);router['delete'](_0xe666('0xd'),auth['isAuthenticated'](),controller[_0xe666('0x13')]);module[_0xe666('0x14')]=router;
\ No newline at end of file
+var _0xf24e=['index','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated'];(function(_0x57a3a3,_0xf56c83){var _0x3311eb=function(_0xa2149b){while(--_0xa2149b){_0x57a3a3['push'](_0x57a3a3['shift']());}};_0x3311eb(++_0xf56c83);}(_0xf24e,0x11a));var _0xef24=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xf24e[_0x243b59];return _0x3e1676;};'use strict';var multer=require(_0xef24('0x0'));var util=require(_0xef24('0x1'));var path=require(_0xef24('0x2'));var timeout=require(_0xef24('0x3'));var express=require('express');var router=express[_0xef24('0x4')]();var fs_extra=require(_0xef24('0x5'));var auth=require(_0xef24('0x6'));var interaction=require(_0xef24('0x7'));var config=require(_0xef24('0x8'));var controller=require(_0xef24('0x9'));router[_0xef24('0xa')]('/',auth[_0xef24('0xb')](),controller[_0xef24('0xc')]);router[_0xef24('0xa')](_0xef24('0xd'),auth['isAuthenticated'](),controller[_0xef24('0xe')]);router[_0xef24('0xf')]('/',auth[_0xef24('0xb')](),controller[_0xef24('0x10')]);router[_0xef24('0x11')](_0xef24('0xd'),auth[_0xef24('0xb')](),controller[_0xef24('0x12')]);router[_0xef24('0x13')](_0xef24('0xd'),auth[_0xef24('0xb')](),controller['destroy']);module[_0xef24('0x14')]=router;
\ No newline at end of file
index 69a9787..bf6b272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c08=['BOOLEAN','exports','STRING'];(function(_0x1b6ad6,_0x26dce7){var _0x5c9c91=function(_0x6e0b22){while(--_0x6e0b22){_0x1b6ad6['push'](_0x1b6ad6['shift']());}};_0x5c9c91(++_0x26dce7);}(_0x3c08,0x136));var _0x83c0=function(_0x1f9e3a,_0x4b5298){_0x1f9e3a=_0x1f9e3a-0x0;var _0x3c9f64=_0x3c08[_0x1f9e3a];return _0x3c9f64;};'use strict';var Sequelize=require('sequelize');module[_0x83c0('0x0')]={'name':{'type':Sequelize[_0x83c0('0x1')],'unique':'name'},'description':{'type':Sequelize[_0x83c0('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x83c0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xccbf=['exports','STRING','name','BOOLEAN'];(function(_0x4a8935,_0x159d0f){var _0x3516fb=function(_0x31640a){while(--_0x31640a){_0x4a8935['push'](_0x4a8935['shift']());}};_0x3516fb(++_0x159d0f);}(_0xccbf,0xd8));var _0xfccb=function(_0x33ceb8,_0x32d180){_0x33ceb8=_0x33ceb8-0x0;var _0x490811=_0xccbf[_0x33ceb8];return _0x490811;};'use strict';var Sequelize=require('sequelize');module[_0xfccb('0x0')]={'name':{'type':Sequelize[_0xfccb('0x1')],'unique':_0xfccb('0x2')},'description':{'type':Sequelize[_0xfccb('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xfccb('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 550c4dc..0cc603a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6c0=['info','VoiceContext,\x20%s,\x20%s','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','Contexts','UserProfileResource','sendStatus','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','keys','find','create','body','readFileSync','join','root','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','server/files/templates/context.ejs','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','client','request','then'];(function(_0x28a4a8,_0x151298){var _0x5a8c2d=function(_0x8ef80f){while(--_0x8ef80f){_0x28a4a8['push'](_0x28a4a8['shift']());}};_0x5a8c2d(++_0x151298);}(_0xd6c0,0x111));var _0x0d6c=function(_0x31f5d5,_0x5e8c3d){_0x31f5d5=_0x31f5d5-0x0;var _0x38f5ed=_0xd6c0[_0x31f5d5];return _0x38f5ed;};'use strict';var emlformat=require(_0x0d6c('0x0'));var rimraf=require(_0x0d6c('0x1'));var zipdir=require(_0x0d6c('0x2'));var jsonpatch=require(_0x0d6c('0x3'));var rp=require('request-promise');var moment=require(_0x0d6c('0x4'));var BPromise=require(_0x0d6c('0x5'));var Mustache=require('mustache');var util=require(_0x0d6c('0x6'));var path=require(_0x0d6c('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d6c('0x8'));var fs=require('fs');var fs_extra=require(_0x0d6c('0x9'));var _=require('lodash');var squel=require(_0x0d6c('0xa'));var crypto=require(_0x0d6c('0xb'));var jsforce=require(_0x0d6c('0xc'));var deskjs=require(_0x0d6c('0xd'));var toCsv=require(_0x0d6c('0xe'));var querystring=require('querystring');var Papa=require(_0x0d6c('0xf'));var Redis=require(_0x0d6c('0x10'));var authService=require(_0x0d6c('0x11'));var qs=require(_0x0d6c('0x12'));var as=require(_0x0d6c('0x13'));var hardwareService=require(_0x0d6c('0x14'));var logger=require(_0x0d6c('0x15'))('api');var utils=require(_0x0d6c('0x16'));var config=require(_0x0d6c('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x0d6c('0x18')]['http']({'port':0x232a});function respondWithRpcPromise(_0x550d6c,_0x592800,_0x1fec25,_0x4b934d){return new BPromise(function(_0x596512,_0x2fe10b){var _0x30f3cf=_0x4b934d||client;return _0x30f3cf[_0x0d6c('0x19')](_0x550d6c,_0x1fec25)[_0x0d6c('0x1a')](function(_0x33f252){logger[_0x0d6c('0x1b')](_0x0d6c('0x1c'),_0x592800,'request\x20sent');logger['debug'](_0x0d6c('0x1d'),_0x592800,_0x0d6c('0x1e'),JSON['stringify'](_0x33f252));if(_0x33f252[_0x0d6c('0x1f')]){if(_0x33f252['error']['code']===0x1f4){logger[_0x0d6c('0x1f')](_0x0d6c('0x1c'),_0x592800,_0x33f252[_0x0d6c('0x1f')][_0x0d6c('0x20')]);return _0x2fe10b(_0x33f252[_0x0d6c('0x1f')][_0x0d6c('0x20')]);}logger['error']('VoiceContext,\x20%s,\x20%s',_0x592800,_0x33f252[_0x0d6c('0x1f')][_0x0d6c('0x20')]);return _0x596512(_0x33f252[_0x0d6c('0x1f')][_0x0d6c('0x20')]);}else{logger[_0x0d6c('0x1b')]('VoiceContext,\x20%s,\x20%s',_0x592800,_0x0d6c('0x1e'));_0x596512(_0x33f252['result'][_0x0d6c('0x20')]);}})[_0x0d6c('0x21')](function(_0x328fe6){logger[_0x0d6c('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x592800,_0x328fe6);_0x2fe10b(_0x328fe6);});});}function respondWithStatusCode(_0x524d3d,_0xeeda15){_0xeeda15=_0xeeda15||0xcc;return function(_0x3d62d3){if(_0x3d62d3){return _0x524d3d['sendStatus'](_0xeeda15);}return _0x524d3d['status'](_0xeeda15)[_0x0d6c('0x22')]();};}function respondWithResult(_0xe029da,_0x459187){_0x459187=_0x459187||0xc8;return function(_0x5f0795){if(_0x5f0795){return _0xe029da[_0x0d6c('0x23')](_0x459187)[_0x0d6c('0x24')](_0x5f0795);}};}function respondWithFilteredResult(_0x1af7b6,_0x4198cb){return function(_0x53b78f){if(_0x53b78f){var _0x41edc4=typeof _0x4198cb[_0x0d6c('0x25')]===_0x0d6c('0x26')&&typeof _0x4198cb['limit']===_0x0d6c('0x26');var _0x4aa5c9=_0x53b78f[_0x0d6c('0x27')];var _0xd41bbd=_0x41edc4?0x0:_0x4198cb['offset'];var _0x9874ad=_0x41edc4?_0x53b78f[_0x0d6c('0x27')]:_0x4198cb[_0x0d6c('0x25')]+_0x4198cb[_0x0d6c('0x28')];var _0xa18f34;if(_0x9874ad>=_0x4aa5c9){_0x9874ad=_0x4aa5c9;_0xa18f34=0xc8;}else{_0xa18f34=0xce;}_0x1af7b6[_0x0d6c('0x23')](_0xa18f34);return _0x1af7b6[_0x0d6c('0x29')](_0x0d6c('0x2a'),_0xd41bbd+'-'+_0x9874ad+'/'+_0x4aa5c9)['json'](_0x53b78f);}return null;};}function patchUpdates(_0x35fa25){return function(_0x4b5e57){try{jsonpatch[_0x0d6c('0x2b')](_0x4b5e57,_0x35fa25,!![]);}catch(_0x3521c2){return BPromise[_0x0d6c('0x2c')](_0x3521c2);}return _0x4b5e57['save']();};}function saveUpdates(_0x25f9e0,_0x2d6403){return function(_0x4cb198){if(_0x4cb198){return _0x4cb198[_0x0d6c('0x2d')](_0x25f9e0)['then'](function(_0x17a3d4){return _0x17a3d4;});}return null;};}function removeEntity(_0x3e160d,_0x34f733){return function(_0x8029b5){if(_0x8029b5){return _0x8029b5[_0x0d6c('0x2e')]()[_0x0d6c('0x1a')](function(){var _0x5aec59=_0x8029b5['get']({'plain':!![]});var _0x1cbc4e=_0x0d6c('0x2f');return db[_0x0d6c('0x30')][_0x0d6c('0x2e')]({'where':{'type':_0x1cbc4e,'resourceId':_0x5aec59['id']}})[_0x0d6c('0x1a')](function(){return _0x8029b5;});})['then'](function(){_0x3e160d['status'](0xcc)[_0x0d6c('0x22')]();});}};}function handleEntityNotFound(_0x3f8c38,_0x32b7e7){return function(_0x5836bd){if(!_0x5836bd){_0x3f8c38[_0x0d6c('0x31')](0x194);}return _0x5836bd;};}function handleError(_0x547388,_0x573d6a){_0x573d6a=_0x573d6a||0x1f4;return function(_0x2bdec3){logger[_0x0d6c('0x1f')](_0x2bdec3[_0x0d6c('0x32')]);if(_0x2bdec3[_0x0d6c('0x33')]){delete _0x2bdec3['name'];}_0x547388[_0x0d6c('0x23')](_0x573d6a)[_0x0d6c('0x34')](_0x2bdec3);};}exports[_0x0d6c('0x35')]=function(_0x35809e,_0x578ba3){var _0x4fefd0={},_0x231053={},_0x5c382b={'count':0x0,'rows':[]};var _0x13b9a8=_[_0x0d6c('0x36')](db[_0x0d6c('0x37')][_0x0d6c('0x38')],function(_0x1e37d9){return{'name':_0x1e37d9[_0x0d6c('0x39')],'type':_0x1e37d9[_0x0d6c('0x3a')][_0x0d6c('0x3b')]};});_0x231053[_0x0d6c('0x3c')]=_[_0x0d6c('0x36')](_0x13b9a8,_0x0d6c('0x33'));_0x231053[_0x0d6c('0x3d')]=_['keys'](_0x35809e['query']);_0x231053[_0x0d6c('0x3e')]=_[_0x0d6c('0x3f')](_0x231053[_0x0d6c('0x3c')],_0x231053['query']);_0x4fefd0[_0x0d6c('0x40')]=_[_0x0d6c('0x3f')](_0x231053[_0x0d6c('0x3c')],qs['fields'](_0x35809e[_0x0d6c('0x3d')][_0x0d6c('0x41')]));_0x4fefd0[_0x0d6c('0x40')]=_0x4fefd0[_0x0d6c('0x40')][_0x0d6c('0x42')]?_0x4fefd0[_0x0d6c('0x40')]:_0x231053[_0x0d6c('0x3c')];if(!_0x35809e[_0x0d6c('0x3d')][_0x0d6c('0x43')](_0x0d6c('0x44'))){_0x4fefd0[_0x0d6c('0x28')]=qs[_0x0d6c('0x28')](_0x35809e[_0x0d6c('0x3d')]['limit']);_0x4fefd0['offset']=qs['offset'](_0x35809e[_0x0d6c('0x3d')][_0x0d6c('0x25')]);}_0x4fefd0[_0x0d6c('0x45')]=qs[_0x0d6c('0x46')](_0x35809e[_0x0d6c('0x3d')]['sort']);_0x4fefd0[_0x0d6c('0x47')]=qs[_0x0d6c('0x3e')](_[_0x0d6c('0x48')](_0x35809e[_0x0d6c('0x3d')],_0x231053['filters']),_0x13b9a8);if(_0x35809e[_0x0d6c('0x3d')][_0x0d6c('0x49')]){_0x4fefd0['where']=_[_0x0d6c('0x4a')](_0x4fefd0[_0x0d6c('0x47')],{'$or':_[_0x0d6c('0x36')](_0x13b9a8,function(_0x866954){if(_0x866954[_0x0d6c('0x3a')]!==_0x0d6c('0x4b')){var _0x68d88d={};_0x68d88d[_0x866954['name']]={'$like':'%'+_0x35809e['query'][_0x0d6c('0x49')]+'%'};return _0x68d88d;}})});}_0x4fefd0=_['merge']({},_0x4fefd0,_0x35809e[_0x0d6c('0x4c')]);var _0x8967e7={'where':_0x4fefd0['where']};return db[_0x0d6c('0x37')][_0x0d6c('0x27')](_0x8967e7)['then'](function(_0x486540){_0x5c382b[_0x0d6c('0x27')]=_0x486540;if(_0x35809e[_0x0d6c('0x3d')][_0x0d6c('0x4d')]){_0x4fefd0[_0x0d6c('0x4e')]=[{'all':!![]}];}return db[_0x0d6c('0x37')][_0x0d6c('0x4f')](_0x4fefd0);})[_0x0d6c('0x1a')](function(_0x5ee4ca){_0x5c382b['rows']=_0x5ee4ca;return _0x5c382b;})[_0x0d6c('0x1a')](respondWithFilteredResult(_0x578ba3,_0x4fefd0))[_0x0d6c('0x21')](handleError(_0x578ba3,null));};exports[_0x0d6c('0x50')]=function(_0x1c345c,_0x1312fb){var _0x26ebfd={'raw':![],'where':{'id':_0x1c345c[_0x0d6c('0x51')]['id']}},_0x68a942={};_0x68a942['model']=_[_0x0d6c('0x52')](db[_0x0d6c('0x37')]['rawAttributes']);_0x68a942[_0x0d6c('0x3d')]=_[_0x0d6c('0x52')](_0x1c345c[_0x0d6c('0x3d')]);_0x68a942[_0x0d6c('0x3e')]=_[_0x0d6c('0x3f')](_0x68a942[_0x0d6c('0x3c')],_0x68a942[_0x0d6c('0x3d')]);_0x26ebfd[_0x0d6c('0x40')]=_[_0x0d6c('0x3f')](_0x68a942['model'],qs[_0x0d6c('0x41')](_0x1c345c[_0x0d6c('0x3d')][_0x0d6c('0x41')]));_0x26ebfd[_0x0d6c('0x40')]=_0x26ebfd['attributes'][_0x0d6c('0x42')]?_0x26ebfd[_0x0d6c('0x40')]:_0x68a942[_0x0d6c('0x3c')];if(_0x1c345c[_0x0d6c('0x3d')][_0x0d6c('0x4d')]){_0x26ebfd['include']=[{'all':!![]}];}_0x26ebfd=_[_0x0d6c('0x4a')]({},_0x26ebfd,_0x1c345c[_0x0d6c('0x4c')]);return db[_0x0d6c('0x37')][_0x0d6c('0x53')](_0x26ebfd)[_0x0d6c('0x1a')](handleEntityNotFound(_0x1312fb,null))['then'](respondWithResult(_0x1312fb,null))['catch'](handleError(_0x1312fb,null));};exports['create']=function(_0x7b3cf6,_0x32494f,_0x536a3f){var _0x5281d0;return db['VoiceContext'][_0x0d6c('0x54')](_0x7b3cf6[_0x0d6c('0x55')],{'raw':!![]})[_0x0d6c('0x1a')](function(_0x4518e0){_0x5281d0=_0x4518e0;return db[_0x0d6c('0x37')][_0x0d6c('0x4f')]({'raw':!![]});})[_0x0d6c('0x1a')](function(_0x54d446){var _0x7dab25=fs[_0x0d6c('0x56')](path[_0x0d6c('0x57')](config[_0x0d6c('0x58')],'server/files/templates/context.ejs'),_0x0d6c('0x59'));var _0x2e85b5=ejs[_0x0d6c('0x5a')](_0x7dab25,{'contexts':_0x54d446||[]});fs[_0x0d6c('0x5b')](_0x0d6c('0x5c'),_0x2e85b5);})[_0x0d6c('0x1a')](function(){return respondWithRpcPromise(_0x0d6c('0x5d'),_0x0d6c('0x54'),{'module':_0x0d6c('0x5e')});})[_0x0d6c('0x1a')](function(){var _0xf87c33=_0x7b3cf6['user'][_0x0d6c('0x5f')]({'plain':!![]});if(!_0xf87c33)throw new Error(_0x0d6c('0x60'));if(_0xf87c33['role']==='user'){var _0x212f71=_0x5281d0['get']({'plain':!![]});return db[_0x0d6c('0x61')][_0x0d6c('0x53')]({'where':{'name':_0x0d6c('0x2f'),'userProfileId':_0xf87c33['userProfileId']},'raw':!![]})[_0x0d6c('0x1a')](function(_0x32a1ab){if(_0x32a1ab&&_0x32a1ab['autoAssociation']===0x0){return db[_0x0d6c('0x30')][_0x0d6c('0x54')]({'name':_0x212f71[_0x0d6c('0x33')],'resourceId':_0x212f71['id'],'type':_0x32a1ab[_0x0d6c('0x33')],'sectionId':_0x32a1ab['id']},{})[_0x0d6c('0x1a')](function(){return _0x5281d0;});}else{return _0x5281d0;}})[_0x0d6c('0x21')](function(_0x4ffdc2){logger['error'](_0x0d6c('0x62'),_0x4ffdc2);throw _0x4ffdc2;});}return _0x5281d0;})[_0x0d6c('0x1a')](respondWithResult(_0x32494f,0xc9))[_0x0d6c('0x21')](handleError(_0x32494f,null));};exports[_0x0d6c('0x2d')]=function(_0x6052df,_0x98e6a6,_0x3d8c24){var _0x5278fd;return db[_0x0d6c('0x37')][_0x0d6c('0x53')]({'where':{'id':_0x6052df[_0x0d6c('0x51')]['id']}})['then'](handleEntityNotFound(_0x98e6a6,null))[_0x0d6c('0x1a')](saveUpdates(_0x6052df[_0x0d6c('0x55')],null))[_0x0d6c('0x1a')](function(_0x1328e4){if(_0x1328e4){_0x5278fd=_0x1328e4;return db[_0x0d6c('0x37')]['findAll']({'raw':!![]});}})[_0x0d6c('0x1a')](function(_0x2feead){var _0x253b99=fs['readFileSync'](path[_0x0d6c('0x57')](config[_0x0d6c('0x58')],'server/files/templates/context.ejs'),_0x0d6c('0x59'));var _0x2890af=ejs[_0x0d6c('0x5a')](_0x253b99,{'contexts':_0x2feead||[]});fs[_0x0d6c('0x5b')](_0x0d6c('0x5c'),_0x2890af);})[_0x0d6c('0x1a')](function(){return respondWithRpcPromise(_0x0d6c('0x5d'),_0x0d6c('0x2d'),{'module':_0x0d6c('0x5e')});})[_0x0d6c('0x1a')](function(){return _0x5278fd;})[_0x0d6c('0x1a')](respondWithResult(_0x98e6a6,null))['catch'](handleError(_0x98e6a6,null));};exports[_0x0d6c('0x2e')]=function(_0x4b5c95,_0x1a078a,_0x2150d6){var _0x39f597;return db[_0x0d6c('0x37')][_0x0d6c('0x53')]({'where':{'id':_0x4b5c95[_0x0d6c('0x51')]['id']}})[_0x0d6c('0x1a')](handleEntityNotFound(_0x1a078a,null))['then'](removeEntity(_0x1a078a,null))[_0x0d6c('0x1a')](function(){return db[_0x0d6c('0x37')][_0x0d6c('0x4f')]({'raw':!![]});})[_0x0d6c('0x1a')](function(_0x441444){var _0x221ea2=fs[_0x0d6c('0x56')](path['join'](config[_0x0d6c('0x58')],_0x0d6c('0x63')),_0x0d6c('0x59'));var _0x1a53db=ejs[_0x0d6c('0x5a')](_0x221ea2,{'contexts':_0x441444});fs[_0x0d6c('0x5b')](_0x0d6c('0x5c'),_0x1a53db);return respondWithRpcPromise(_0x0d6c('0x5d'),_0x0d6c('0x2e'),{'module':'chan_sip.so'});})[_0x0d6c('0x21')](handleError(_0x1a078a,null));};
\ No newline at end of file
+var _0x6af0=['pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','params','length','find','create','body','readFileSync','join','server/files/templates/context.ejs','render','writeFileSync','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','utf8','/etc/asterisk/extensions_xcally_contexts.conf','root','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','apply','reject','save','update','destroy','get','Contexts','UserProfileResource','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters'];(function(_0x1ccfb3,_0x2d0190){var _0x6f8c5a=function(_0x25e631){while(--_0x25e631){_0x1ccfb3['push'](_0x1ccfb3['shift']());}};_0x6f8c5a(++_0x2d0190);}(_0x6af0,0xe7));var _0x06af=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x6af0[_0x2235bf];return _0x4c3a64;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x06af('0x0'));var zipdir=require(_0x06af('0x1'));var jsonpatch=require(_0x06af('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x06af('0x3'));var Mustache=require(_0x06af('0x4'));var util=require(_0x06af('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x06af('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x06af('0x7'));var squel=require(_0x06af('0x8'));var crypto=require(_0x06af('0x9'));var jsforce=require(_0x06af('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x06af('0x6'));var querystring=require(_0x06af('0xb'));var Papa=require(_0x06af('0xc'));var Redis=require(_0x06af('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x06af('0xe'));var as=require(_0x06af('0xf'));var hardwareService=require(_0x06af('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x06af('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x06af('0x12'));var db=require(_0x06af('0x13'))['db'];var jayson=require(_0x06af('0x14'));var client=jayson[_0x06af('0x15')][_0x06af('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x557b54,_0x5a8792,_0x37f48b,_0x369660){return new BPromise(function(_0x55ff9c,_0x402c60){var _0x1c65a8=_0x369660||client;return _0x1c65a8['request'](_0x557b54,_0x37f48b)[_0x06af('0x17')](function(_0x5756e1){logger[_0x06af('0x18')](_0x06af('0x19'),_0x5a8792,_0x06af('0x1a'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x5a8792,'request\x20sent',JSON[_0x06af('0x1b')](_0x5756e1));if(_0x5756e1['error']){if(_0x5756e1[_0x06af('0x1c')][_0x06af('0x1d')]===0x1f4){logger[_0x06af('0x1c')]('VoiceContext,\x20%s,\x20%s',_0x5a8792,_0x5756e1['error'][_0x06af('0x1e')]);return _0x402c60(_0x5756e1[_0x06af('0x1c')][_0x06af('0x1e')]);}logger[_0x06af('0x1c')](_0x06af('0x19'),_0x5a8792,_0x5756e1[_0x06af('0x1c')][_0x06af('0x1e')]);return _0x55ff9c(_0x5756e1['error'][_0x06af('0x1e')]);}else{logger[_0x06af('0x18')]('VoiceContext,\x20%s,\x20%s',_0x5a8792,_0x06af('0x1a'));_0x55ff9c(_0x5756e1['result'][_0x06af('0x1e')]);}})[_0x06af('0x1f')](function(_0x223a02){logger[_0x06af('0x1c')](_0x06af('0x19'),_0x5a8792,_0x223a02);_0x402c60(_0x223a02);});});}function respondWithStatusCode(_0x148a94,_0x2cc31f){_0x2cc31f=_0x2cc31f||0xcc;return function(_0x47f421){if(_0x47f421){return _0x148a94[_0x06af('0x20')](_0x2cc31f);}return _0x148a94[_0x06af('0x21')](_0x2cc31f)[_0x06af('0x22')]();};}function respondWithResult(_0x556f35,_0x45629a){_0x45629a=_0x45629a||0xc8;return function(_0x2cf6af){if(_0x2cf6af){return _0x556f35[_0x06af('0x21')](_0x45629a)[_0x06af('0x23')](_0x2cf6af);}};}function respondWithFilteredResult(_0x12cba4,_0x1afe69){return function(_0x39abdf){if(_0x39abdf){var _0x21850e=typeof _0x1afe69['offset']===_0x06af('0x24')&&typeof _0x1afe69[_0x06af('0x25')]===_0x06af('0x24');var _0x358138=_0x39abdf[_0x06af('0x26')];var _0x1de200=_0x21850e?0x0:_0x1afe69[_0x06af('0x27')];var _0x32a414=_0x21850e?_0x39abdf['count']:_0x1afe69[_0x06af('0x27')]+_0x1afe69[_0x06af('0x25')];var _0x29caca;if(_0x32a414>=_0x358138){_0x32a414=_0x358138;_0x29caca=0xc8;}else{_0x29caca=0xce;}_0x12cba4[_0x06af('0x21')](_0x29caca);return _0x12cba4['set']('Content-Range',_0x1de200+'-'+_0x32a414+'/'+_0x358138)['json'](_0x39abdf);}return null;};}function patchUpdates(_0x46b906){return function(_0x9155e8){try{jsonpatch[_0x06af('0x28')](_0x9155e8,_0x46b906,!![]);}catch(_0x580550){return BPromise[_0x06af('0x29')](_0x580550);}return _0x9155e8[_0x06af('0x2a')]();};}function saveUpdates(_0x30dfc8,_0x6dd6){return function(_0x46f9a9){if(_0x46f9a9){return _0x46f9a9[_0x06af('0x2b')](_0x30dfc8)[_0x06af('0x17')](function(_0x1c6827){return _0x1c6827;});}return null;};}function removeEntity(_0x4719a8,_0x4dcff1){return function(_0x2e4031){if(_0x2e4031){return _0x2e4031[_0x06af('0x2c')]()[_0x06af('0x17')](function(){var _0x1d56ff=_0x2e4031[_0x06af('0x2d')]({'plain':!![]});var _0x5eebf1=_0x06af('0x2e');return db[_0x06af('0x2f')][_0x06af('0x2c')]({'where':{'type':_0x5eebf1,'resourceId':_0x1d56ff['id']}})[_0x06af('0x17')](function(){return _0x2e4031;});})['then'](function(){_0x4719a8[_0x06af('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27ee36,_0x2006c1){return function(_0x4d93ec){if(!_0x4d93ec){_0x27ee36['sendStatus'](0x194);}return _0x4d93ec;};}function handleError(_0x172774,_0xdba938){_0xdba938=_0xdba938||0x1f4;return function(_0x193d95){logger['error'](_0x193d95[_0x06af('0x30')]);if(_0x193d95[_0x06af('0x31')]){delete _0x193d95[_0x06af('0x31')];}_0x172774[_0x06af('0x21')](_0xdba938)[_0x06af('0x32')](_0x193d95);};}exports[_0x06af('0x33')]=function(_0x5a6520,_0x234612){var _0x254c17={},_0x5aa336={},_0x37bd71={'count':0x0,'rows':[]};var _0x2b8c9b=_[_0x06af('0x34')](db[_0x06af('0x35')][_0x06af('0x36')],function(_0x3a130a){return{'name':_0x3a130a[_0x06af('0x37')],'type':_0x3a130a['type'][_0x06af('0x38')]};});_0x5aa336['model']=_[_0x06af('0x34')](_0x2b8c9b,_0x06af('0x31'));_0x5aa336[_0x06af('0x39')]=_[_0x06af('0x3a')](_0x5a6520['query']);_0x5aa336['filters']=_[_0x06af('0x3b')](_0x5aa336[_0x06af('0x3c')],_0x5aa336[_0x06af('0x39')]);_0x254c17['attributes']=_[_0x06af('0x3b')](_0x5aa336['model'],qs[_0x06af('0x3d')](_0x5a6520[_0x06af('0x39')][_0x06af('0x3d')]));_0x254c17[_0x06af('0x3e')]=_0x254c17[_0x06af('0x3e')]['length']?_0x254c17['attributes']:_0x5aa336[_0x06af('0x3c')];if(!_0x5a6520[_0x06af('0x39')][_0x06af('0x3f')](_0x06af('0x40'))){_0x254c17[_0x06af('0x25')]=qs[_0x06af('0x25')](_0x5a6520[_0x06af('0x39')][_0x06af('0x25')]);_0x254c17[_0x06af('0x27')]=qs['offset'](_0x5a6520[_0x06af('0x39')]['offset']);}_0x254c17[_0x06af('0x41')]=qs[_0x06af('0x42')](_0x5a6520['query'][_0x06af('0x42')]);_0x254c17[_0x06af('0x43')]=qs[_0x06af('0x44')](_[_0x06af('0x45')](_0x5a6520[_0x06af('0x39')],_0x5aa336[_0x06af('0x44')]),_0x2b8c9b);if(_0x5a6520[_0x06af('0x39')][_0x06af('0x46')]){_0x254c17[_0x06af('0x43')]=_[_0x06af('0x47')](_0x254c17[_0x06af('0x43')],{'$or':_['map'](_0x2b8c9b,function(_0x3b0e5e){if(_0x3b0e5e[_0x06af('0x48')]!==_0x06af('0x49')){var _0xd4101c={};_0xd4101c[_0x3b0e5e[_0x06af('0x31')]]={'$like':'%'+_0x5a6520['query'][_0x06af('0x46')]+'%'};return _0xd4101c;}})});}_0x254c17=_[_0x06af('0x47')]({},_0x254c17,_0x5a6520[_0x06af('0x4a')]);var _0x313010={'where':_0x254c17['where']};return db[_0x06af('0x35')][_0x06af('0x26')](_0x313010)[_0x06af('0x17')](function(_0x3910dc){_0x37bd71[_0x06af('0x26')]=_0x3910dc;if(_0x5a6520['query'][_0x06af('0x4b')]){_0x254c17[_0x06af('0x4c')]=[{'all':!![]}];}return db[_0x06af('0x35')][_0x06af('0x4d')](_0x254c17);})[_0x06af('0x17')](function(_0x3ad8d3){_0x37bd71[_0x06af('0x4e')]=_0x3ad8d3;return _0x37bd71;})['then'](respondWithFilteredResult(_0x234612,_0x254c17))['catch'](handleError(_0x234612,null));};exports['show']=function(_0x358677,_0x675922){var _0x573697={'raw':![],'where':{'id':_0x358677[_0x06af('0x4f')]['id']}},_0x1258c0={};_0x1258c0[_0x06af('0x3c')]=_['keys'](db[_0x06af('0x35')][_0x06af('0x36')]);_0x1258c0[_0x06af('0x39')]=_[_0x06af('0x3a')](_0x358677[_0x06af('0x39')]);_0x1258c0['filters']=_[_0x06af('0x3b')](_0x1258c0[_0x06af('0x3c')],_0x1258c0[_0x06af('0x39')]);_0x573697[_0x06af('0x3e')]=_[_0x06af('0x3b')](_0x1258c0[_0x06af('0x3c')],qs[_0x06af('0x3d')](_0x358677[_0x06af('0x39')][_0x06af('0x3d')]));_0x573697[_0x06af('0x3e')]=_0x573697[_0x06af('0x3e')][_0x06af('0x50')]?_0x573697['attributes']:_0x1258c0[_0x06af('0x3c')];if(_0x358677[_0x06af('0x39')][_0x06af('0x4b')]){_0x573697[_0x06af('0x4c')]=[{'all':!![]}];}_0x573697=_[_0x06af('0x47')]({},_0x573697,_0x358677[_0x06af('0x4a')]);return db[_0x06af('0x35')][_0x06af('0x51')](_0x573697)[_0x06af('0x17')](handleEntityNotFound(_0x675922,null))[_0x06af('0x17')](respondWithResult(_0x675922,null))[_0x06af('0x1f')](handleError(_0x675922,null));};exports['create']=function(_0x3ca5f6,_0x21e4d7,_0x358679){var _0x252882;return db[_0x06af('0x35')][_0x06af('0x52')](_0x3ca5f6[_0x06af('0x53')],{'raw':!![]})[_0x06af('0x17')](function(_0x4c93b5){_0x252882=_0x4c93b5;return db['VoiceContext'][_0x06af('0x4d')]({'raw':!![]});})['then'](function(_0x5622a4){var _0x384a2b=fs[_0x06af('0x54')](path[_0x06af('0x55')](config['root'],_0x06af('0x56')),'utf8');var _0x33bb75=ejs[_0x06af('0x57')](_0x384a2b,{'contexts':_0x5622a4||[]});fs[_0x06af('0x58')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x33bb75);})[_0x06af('0x17')](function(){return respondWithRpcPromise(_0x06af('0x59'),_0x06af('0x52'),{'module':_0x06af('0x5a')});})[_0x06af('0x17')](function(){var _0x5569da=_0x3ca5f6[_0x06af('0x5b')][_0x06af('0x2d')]({'plain':!![]});if(!_0x5569da)throw new Error(_0x06af('0x5c'));if(_0x5569da[_0x06af('0x5d')]==='user'){var _0x5f1428=_0x252882[_0x06af('0x2d')]({'plain':!![]});return db[_0x06af('0x5e')][_0x06af('0x51')]({'where':{'name':_0x06af('0x2e'),'userProfileId':_0x5569da['userProfileId']},'raw':!![]})[_0x06af('0x17')](function(_0x500816){if(_0x500816&&_0x500816[_0x06af('0x5f')]===0x0){return db[_0x06af('0x2f')][_0x06af('0x52')]({'name':_0x5f1428[_0x06af('0x31')],'resourceId':_0x5f1428['id'],'type':_0x500816[_0x06af('0x31')],'sectionId':_0x500816['id']},{})[_0x06af('0x17')](function(){return _0x252882;});}else{return _0x252882;}})[_0x06af('0x1f')](function(_0x355689){logger['error'](_0x06af('0x60'),_0x355689);throw _0x355689;});}return _0x252882;})[_0x06af('0x17')](respondWithResult(_0x21e4d7,0xc9))['catch'](handleError(_0x21e4d7,null));};exports[_0x06af('0x2b')]=function(_0x2b8f8c,_0x2a248b,_0x38b07d){var _0x494c46;return db['VoiceContext']['find']({'where':{'id':_0x2b8f8c[_0x06af('0x4f')]['id']}})[_0x06af('0x17')](handleEntityNotFound(_0x2a248b,null))['then'](saveUpdates(_0x2b8f8c[_0x06af('0x53')],null))[_0x06af('0x17')](function(_0x5acbfc){if(_0x5acbfc){_0x494c46=_0x5acbfc;return db[_0x06af('0x35')][_0x06af('0x4d')]({'raw':!![]});}})[_0x06af('0x17')](function(_0x1f1c8b){var _0x9ecb90=fs['readFileSync'](path[_0x06af('0x55')](config['root'],_0x06af('0x56')),_0x06af('0x61'));var _0xf6c260=ejs[_0x06af('0x57')](_0x9ecb90,{'contexts':_0x1f1c8b||[]});fs['writeFileSync'](_0x06af('0x62'),_0xf6c260);})[_0x06af('0x17')](function(){return respondWithRpcPromise('Reload',_0x06af('0x2b'),{'module':_0x06af('0x5a')});})['then'](function(){return _0x494c46;})[_0x06af('0x17')](respondWithResult(_0x2a248b,null))[_0x06af('0x1f')](handleError(_0x2a248b,null));};exports['destroy']=function(_0x4b5d9e,_0x5ade52,_0x57dbb6){var _0x32f489;return db[_0x06af('0x35')][_0x06af('0x51')]({'where':{'id':_0x4b5d9e[_0x06af('0x4f')]['id']}})[_0x06af('0x17')](handleEntityNotFound(_0x5ade52,null))['then'](removeEntity(_0x5ade52,null))[_0x06af('0x17')](function(){return db[_0x06af('0x35')][_0x06af('0x4d')]({'raw':!![]});})[_0x06af('0x17')](function(_0x5628f4){var _0x24b4d1=fs[_0x06af('0x54')](path['join'](config[_0x06af('0x63')],_0x06af('0x56')),_0x06af('0x61'));var _0x3312c3=ejs[_0x06af('0x57')](_0x24b4d1,{'contexts':_0x5628f4});fs[_0x06af('0x58')](_0x06af('0x62'),_0x3312c3);return respondWithRpcPromise(_0x06af('0x59'),'destroy',{'module':_0x06af('0x5a')});})[_0x06af('0x1f')](handleError(_0x5ade52,null));};
\ No newline at end of file
index 339aa5b..fae898c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf66b=['voice_contexts','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','define'];(function(_0x2384f6,_0x167775){var _0x370294=function(_0x8f68f4){while(--_0x8f68f4){_0x2384f6['push'](_0x2384f6['shift']());}};_0x370294(++_0x167775);}(_0xf66b,0x1ae));var _0xbf66=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xf66b[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require(_0xbf66('0x0'));var util=require('util');var logger=require(_0xbf66('0x1'))(_0xbf66('0x2'));var moment=require(_0xbf66('0x3'));var BPromise=require('bluebird');var rp=require(_0xbf66('0x4'));var fs=require('fs');var path=require(_0xbf66('0x5'));var rimraf=require(_0xbf66('0x6'));var config=require(_0xbf66('0x7'));var attributes=require(_0xbf66('0x8'));module['exports']=function(_0x5c14db,_0x2be054){return _0x5c14db[_0xbf66('0x9')]('VoiceContext',attributes,{'tableName':_0xbf66('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeeeb=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','VoiceContext','voice_contexts','lodash','util','../../config/logger'];(function(_0x3b6d58,_0xb29c70){var _0x64d7dc=function(_0x2ac5e4){while(--_0x2ac5e4){_0x3b6d58['push'](_0x3b6d58['shift']());}};_0x64d7dc(++_0xb29c70);}(_0xeeeb,0x1d9));var _0xbeee=function(_0x246219,_0x3919d8){_0x246219=_0x246219-0x0;var _0x8e2b86=_0xeeeb[_0x246219];return _0x8e2b86;};'use strict';var _=require(_0xbeee('0x0'));var util=require(_0xbeee('0x1'));var logger=require(_0xbeee('0x2'))(_0xbeee('0x3'));var moment=require(_0xbeee('0x4'));var BPromise=require(_0xbeee('0x5'));var rp=require(_0xbeee('0x6'));var fs=require('fs');var path=require(_0xbeee('0x7'));var rimraf=require(_0xbeee('0x8'));var config=require(_0xbeee('0x9'));var attributes=require(_0xbeee('0xa'));module[_0xbeee('0xb')]=function(_0xe5c536,_0x47a187){return _0xe5c536['define'](_0xbeee('0xc'),attributes,{'tableName':_0xbeee('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9857e86..c460894 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeee9=['message','VoiceContext,\x20%s,\x20%s','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0xc30c4,_0x5f1f5b){var _0x169e1d=function(_0x1bf26f){while(--_0x1bf26f){_0xc30c4['push'](_0xc30c4['shift']());}};_0x169e1d(++_0x5f1f5b);}(_0xeee9,0x153));var _0x9eee=function(_0x288e1b,_0x10a8cc){_0x288e1b=_0x288e1b-0x0;var _0x33cf43=_0xeee9[_0x288e1b];return _0x33cf43;};'use strict';var _=require('lodash');var util=require(_0x9eee('0x0'));var moment=require(_0x9eee('0x1'));var BPromise=require(_0x9eee('0x2'));var rs=require(_0x9eee('0x3'));var fs=require('fs');var Redis=require(_0x9eee('0x4'));var db=require(_0x9eee('0x5'))['db'];var utils=require(_0x9eee('0x6'));var logger=require(_0x9eee('0x7'))(_0x9eee('0x8'));var config=require('../../config/environment');var jayson=require(_0x9eee('0x9'));var client=jayson[_0x9eee('0xa')][_0x9eee('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x37a570,_0x13d7e7,_0x5aa5b4){return new BPromise(function(_0x44c3c3,_0xa5270e){return client[_0x9eee('0xc')](_0x37a570,_0x5aa5b4)[_0x9eee('0xd')](function(_0x173449){logger[_0x9eee('0xe')]('VoiceContext,\x20%s,\x20%s',_0x13d7e7,_0x9eee('0xf'));logger[_0x9eee('0x10')](_0x9eee('0x11'),_0x13d7e7,_0x9eee('0xf'),JSON[_0x9eee('0x12')](_0x173449));if(_0x173449[_0x9eee('0x13')]){if(_0x173449[_0x9eee('0x13')][_0x9eee('0x14')]===0x1f4){logger[_0x9eee('0x13')]('VoiceContext,\x20%s,\x20%s',_0x13d7e7,_0x173449[_0x9eee('0x13')][_0x9eee('0x15')]);return _0xa5270e(_0x173449[_0x9eee('0x13')][_0x9eee('0x15')]);}logger['error']('VoiceContext,\x20%s,\x20%s',_0x13d7e7,_0x173449[_0x9eee('0x13')][_0x9eee('0x15')]);return _0x44c3c3(_0x173449[_0x9eee('0x13')][_0x9eee('0x15')]);}else{logger[_0x9eee('0xe')](_0x9eee('0x16'),_0x13d7e7,_0x9eee('0xf'));_0x44c3c3(_0x173449[_0x9eee('0x17')][_0x9eee('0x15')]);}})['catch'](function(_0x120ce5){logger['error'](_0x9eee('0x16'),_0x13d7e7,_0x120ce5);_0xa5270e(_0x120ce5);});});}
\ No newline at end of file
+var _0x1cf3=['request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s'];(function(_0x5da0d9,_0x49ee54){var _0x4b6d2f=function(_0x9832cf){while(--_0x9832cf){_0x5da0d9['push'](_0x5da0d9['shift']());}};_0x4b6d2f(++_0x49ee54);}(_0x1cf3,0x1be));var _0x31cf=function(_0x171a13,_0x301d51){_0x171a13=_0x171a13-0x0;var _0x2554c0=_0x1cf3[_0x171a13];return _0x2554c0;};'use strict';var _=require(_0x31cf('0x0'));var util=require(_0x31cf('0x1'));var moment=require(_0x31cf('0x2'));var BPromise=require(_0x31cf('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x31cf('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x31cf('0x5'));var logger=require(_0x31cf('0x6'))(_0x31cf('0x7'));var config=require(_0x31cf('0x8'));var jayson=require(_0x31cf('0x9'));var client=jayson[_0x31cf('0xa')][_0x31cf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1830b4,_0x2581c4,_0x6be80){return new BPromise(function(_0x3f7b2e,_0x3fa83e){return client[_0x31cf('0xc')](_0x1830b4,_0x6be80)[_0x31cf('0xd')](function(_0x56e8f6){logger[_0x31cf('0xe')](_0x31cf('0xf'),_0x2581c4,_0x31cf('0x10'));logger['debug'](_0x31cf('0x11'),_0x2581c4,_0x31cf('0x10'),JSON[_0x31cf('0x12')](_0x56e8f6));if(_0x56e8f6[_0x31cf('0x13')]){if(_0x56e8f6[_0x31cf('0x13')]['code']===0x1f4){logger['error'](_0x31cf('0xf'),_0x2581c4,_0x56e8f6[_0x31cf('0x13')][_0x31cf('0x14')]);return _0x3fa83e(_0x56e8f6[_0x31cf('0x13')]['message']);}logger[_0x31cf('0x13')](_0x31cf('0xf'),_0x2581c4,_0x56e8f6[_0x31cf('0x13')]['message']);return _0x3f7b2e(_0x56e8f6[_0x31cf('0x13')][_0x31cf('0x14')]);}else{logger[_0x31cf('0xe')](_0x31cf('0xf'),_0x2581c4,'request\x20sent');_0x3f7b2e(_0x56e8f6['result'][_0x31cf('0x14')]);}})[_0x31cf('0x15')](function(_0x2d5532){logger['error'](_0x31cf('0xf'),_0x2581c4,_0x2d5532);_0x3fa83e(_0x2d5532);});});}
\ No newline at end of file
index bd59978..80b5d49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a21=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','isAuthenticated','get','describe','/:id','post','update','delete','destroy','util'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x0a21,0x9f));var _0x10a2=function(_0x223aa9,_0x50f5e1){_0x223aa9=_0x223aa9-0x0;var _0x402858=_0x0a21[_0x223aa9];return _0x402858;};'use strict';var multer=require('multer');var util=require(_0x10a2('0x0'));var path=require('path');var timeout=require(_0x10a2('0x1'));var express=require(_0x10a2('0x2'));var router=express['Router']();var fs_extra=require(_0x10a2('0x3'));var auth=require(_0x10a2('0x4'));var interaction=require(_0x10a2('0x5'));var config=require(_0x10a2('0x6'));var controller=require(_0x10a2('0x7'));router['get']('/',auth[_0x10a2('0x8')](),controller['index']);router[_0x10a2('0x9')]('/describe',auth[_0x10a2('0x8')](),controller[_0x10a2('0xa')]);router[_0x10a2('0x9')](_0x10a2('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x10a2('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x10a2('0xb'),auth[_0x10a2('0x8')](),controller[_0x10a2('0xd')]);router[_0x10a2('0xe')](_0x10a2('0xb'),auth[_0x10a2('0x8')](),controller[_0x10a2('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x0da6=['./voiceDialReport.controller','get','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','delete','destroy','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1399d6,_0x2c1661){var _0x4a9db4=function(_0x4666b8){while(--_0x4666b8){_0x1399d6['push'](_0x1399d6['shift']());}};_0x4a9db4(++_0x2c1661);}(_0x0da6,0x71));var _0x60da=function(_0x1a93a5,_0x13f256){_0x1a93a5=_0x1a93a5-0x0;var _0x4893a2=_0x0da6[_0x1a93a5];return _0x4893a2;};'use strict';var multer=require('multer');var util=require(_0x60da('0x0'));var path=require(_0x60da('0x1'));var timeout=require('connect-timeout');var express=require(_0x60da('0x2'));var router=express['Router']();var fs_extra=require(_0x60da('0x3'));var auth=require(_0x60da('0x4'));var interaction=require(_0x60da('0x5'));var config=require(_0x60da('0x6'));var controller=require(_0x60da('0x7'));router[_0x60da('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x60da('0x8')](_0x60da('0x9'),auth[_0x60da('0xa')](),controller[_0x60da('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x60da('0xc')]);router[_0x60da('0xd')]('/',auth[_0x60da('0xa')](),controller[_0x60da('0xe')]);router[_0x60da('0xf')](_0x60da('0x10'),auth[_0x60da('0xa')](),controller[_0x60da('0x11')]);router[_0x60da('0x12')](_0x60da('0x10'),auth['isAuthenticated'](),controller[_0x60da('0x13')]);module['exports']=router;
\ No newline at end of file
index d39dae9..b3be46c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['STRING','INTEGER','DATE','exports'];(function(_0x37804c,_0x351907){var _0x5e1a28=function(_0x62ff4f){while(--_0x62ff4f){_0x37804c['push'](_0x37804c['shift']());}};_0x5e1a28(++_0x351907);}(_0xe5b3,0x133));var _0x3e5b=function(_0x30b942,_0x5198f0){_0x30b942=_0x30b942-0x0;var _0x3d486d=_0xe5b3[_0x30b942];return _0x3d486d;};'use strict';var Sequelize=require('sequelize');module[_0x3e5b('0x0')]={'privilege':{'type':Sequelize[_0x3e5b('0x1')]},'channel':{'type':Sequelize[_0x3e5b('0x1')]},'channelstate':{'type':Sequelize[_0x3e5b('0x2')]},'channelstatedesc':{'type':Sequelize[_0x3e5b('0x1')]},'calleridnum':{'type':Sequelize[_0x3e5b('0x1')]},'calleridname':{'type':Sequelize[_0x3e5b('0x1')]},'connectedlinenum':{'type':Sequelize[_0x3e5b('0x1')]},'connectedlinename':{'type':Sequelize[_0x3e5b('0x1')]},'language':{'type':Sequelize[_0x3e5b('0x1')]},'accountcode':{'type':Sequelize[_0x3e5b('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x3e5b('0x1')]},'priority':{'type':Sequelize[_0x3e5b('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x3e5b('0x1')]},'destchannel':{'type':Sequelize[_0x3e5b('0x1')]},'destchannelstate':{'type':Sequelize[_0x3e5b('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x3e5b('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x3e5b('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x3e5b('0x1')]},'destlanguage':{'type':Sequelize[_0x3e5b('0x1')]},'destaccountcode':{'type':Sequelize[_0x3e5b('0x1')]},'destcontext':{'type':Sequelize[_0x3e5b('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x3e5b('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize[_0x3e5b('0x1')]},'dialstring':{'type':Sequelize[_0x3e5b('0x1')]},'dialstatus':{'type':Sequelize[_0x3e5b('0x1')]},'starttime':{'type':Sequelize[_0x3e5b('0x3')]},'answertime':{'type':Sequelize[_0x3e5b('0x3')]},'endtime':{'type':Sequelize[_0x3e5b('0x3')]},'lastevent':{'type':Sequelize[_0x3e5b('0x1')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0x3e5b('0x2')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x00bb=['STRING','INTEGER','DATE','called,connect,complete','sequelize','exports'];(function(_0x2b4d25,_0x5159ad){var _0x212214=function(_0x4dbdcf){while(--_0x4dbdcf){_0x2b4d25['push'](_0x2b4d25['shift']());}};_0x212214(++_0x5159ad);}(_0x00bb,0x1d8));var _0xb00b=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x00bb[_0x6131cd];return _0x47e916;};'use strict';var Sequelize=require(_0xb00b('0x0'));module[_0xb00b('0x1')]={'privilege':{'type':Sequelize[_0xb00b('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xb00b('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb00b('0x2')]},'calleridname':{'type':Sequelize[_0xb00b('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xb00b('0x2')]},'language':{'type':Sequelize[_0xb00b('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb00b('0x3')]},'uniqueid':{'type':Sequelize[_0xb00b('0x2')]},'linkedid':{'type':Sequelize[_0xb00b('0x2')]},'destchannel':{'type':Sequelize[_0xb00b('0x2')]},'destchannelstate':{'type':Sequelize[_0xb00b('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xb00b('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xb00b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xb00b('0x2')]},'destlanguage':{'type':Sequelize[_0xb00b('0x2')]},'destaccountcode':{'type':Sequelize[_0xb00b('0x2')]},'destcontext':{'type':Sequelize[_0xb00b('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xb00b('0x3')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0xb00b('0x2')]},'starttime':{'type':Sequelize[_0xb00b('0x4')]},'answertime':{'type':Sequelize[_0xb00b('0x4')]},'endtime':{'type':Sequelize[_0xb00b('0x4')]},'lastevent':{'type':Sequelize[_0xb00b('0x2')],'comment':_0xb00b('0x5')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0xb00b('0x3')]},'holdtime':{'type':Sequelize[_0xb00b('0x3')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index ae7a649..207a2b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ba=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','VoiceDialReport','include','findAll','catch','params','includeAll','options','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','count','json','save','update','then','destroy','stack','name','send','map','rawAttributes','fieldName','type','key','model'];(function(_0x434f2e,_0x68493e){var _0x76c0b9=function(_0x7db698){while(--_0x7db698){_0x434f2e['push'](_0x434f2e['shift']());}};_0x76c0b9(++_0x68493e);}(_0xa4ba,0xa5));var _0xaa4b=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xa4ba[_0x88cd7b];return _0x56fcc8;};'use strict';var emlformat=require(_0xaa4b('0x0'));var rimraf=require(_0xaa4b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa4b('0x2'));var rp=require(_0xaa4b('0x3'));var moment=require('moment');var BPromise=require(_0xaa4b('0x4'));var Mustache=require(_0xaa4b('0x5'));var util=require(_0xaa4b('0x6'));var path=require(_0xaa4b('0x7'));var sox=require('sox');var csv=require(_0xaa4b('0x8'));var ejs=require(_0xaa4b('0x9'));var fs=require('fs');var fs_extra=require(_0xaa4b('0xa'));var _=require('lodash');var squel=require(_0xaa4b('0xb'));var crypto=require(_0xaa4b('0xc'));var jsforce=require(_0xaa4b('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xaa4b('0xe'));var authService=require(_0xaa4b('0xf'));var qs=require(_0xaa4b('0x10'));var as=require(_0xaa4b('0x11'));var hardwareService=require(_0xaa4b('0x12'));var logger=require('../../config/logger')(_0xaa4b('0x13'));var utils=require('../../config/utils');var config=require(_0xaa4b('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xaa4b('0x15'))['db'];function respondWithStatusCode(_0x3542d9,_0x330e81){_0x330e81=_0x330e81||0xcc;return function(_0x421f21){if(_0x421f21){return _0x3542d9['sendStatus'](_0x330e81);}return _0x3542d9[_0xaa4b('0x16')](_0x330e81)[_0xaa4b('0x17')]();};}function respondWithResult(_0x1a278e,_0x5bf953){_0x5bf953=_0x5bf953||0xc8;return function(_0x2826db){if(_0x2826db){return _0x1a278e[_0xaa4b('0x16')](_0x5bf953)['json'](_0x2826db);}};}function respondWithFilteredResult(_0x4a8e9e,_0x3decae){return function(_0x4218a8){if(_0x4218a8){var _0x5675a9=typeof _0x3decae[_0xaa4b('0x18')]===_0xaa4b('0x19')&&typeof _0x3decae[_0xaa4b('0x1a')]===_0xaa4b('0x19');var _0x18fd05=_0x4218a8[_0xaa4b('0x1b')];var _0x585858=_0x5675a9?0x0:_0x3decae['offset'];var _0x38b7e1=_0x5675a9?_0x4218a8[_0xaa4b('0x1b')]:_0x3decae[_0xaa4b('0x18')]+_0x3decae[_0xaa4b('0x1a')];var _0x372652;if(_0x38b7e1>=_0x18fd05){_0x38b7e1=_0x18fd05;_0x372652=0xc8;}else{_0x372652=0xce;}_0x4a8e9e[_0xaa4b('0x16')](_0x372652);return _0x4a8e9e['set']('Content-Range',_0x585858+'-'+_0x38b7e1+'/'+_0x18fd05)[_0xaa4b('0x1c')](_0x4218a8);}return null;};}function patchUpdates(_0x2a0bfe){return function(_0x4b88b3){try{jsonpatch['apply'](_0x4b88b3,_0x2a0bfe,!![]);}catch(_0x17b9e4){return BPromise['reject'](_0x17b9e4);}return _0x4b88b3[_0xaa4b('0x1d')]();};}function saveUpdates(_0xeeaa4f,_0x16ece1){return function(_0x1d8d8f){if(_0x1d8d8f){return _0x1d8d8f[_0xaa4b('0x1e')](_0xeeaa4f)[_0xaa4b('0x1f')](function(_0x7b35cb){return _0x7b35cb;});}return null;};}function removeEntity(_0x3e7f40,_0x29f020){return function(_0x508253){if(_0x508253){return _0x508253[_0xaa4b('0x20')]()['then'](function(){_0x3e7f40[_0xaa4b('0x16')](0xcc)[_0xaa4b('0x17')]();});}};}function handleEntityNotFound(_0x41d10d,_0x1cff74){return function(_0x2cec5e){if(!_0x2cec5e){_0x41d10d['sendStatus'](0x194);}return _0x2cec5e;};}function handleError(_0x8f527,_0x328ce5){_0x328ce5=_0x328ce5||0x1f4;return function(_0x4efe9f){logger['error'](_0x4efe9f[_0xaa4b('0x21')]);if(_0x4efe9f[_0xaa4b('0x22')]){delete _0x4efe9f[_0xaa4b('0x22')];}_0x8f527[_0xaa4b('0x16')](_0x328ce5)[_0xaa4b('0x23')](_0x4efe9f);};}exports['index']=function(_0x460855,_0x388d24){var _0x3283c7={},_0x12eb89={},_0x261ac3={'count':0x0,'rows':[]};var _0x21cf01=_[_0xaa4b('0x24')](db['VoiceDialReport'][_0xaa4b('0x25')],function(_0x4cefa3){return{'name':_0x4cefa3[_0xaa4b('0x26')],'type':_0x4cefa3[_0xaa4b('0x27')][_0xaa4b('0x28')]};});_0x12eb89[_0xaa4b('0x29')]=_[_0xaa4b('0x24')](_0x21cf01,'name');_0x12eb89[_0xaa4b('0x2a')]=_[_0xaa4b('0x2b')](_0x460855[_0xaa4b('0x2a')]);_0x12eb89[_0xaa4b('0x2c')]=_[_0xaa4b('0x2d')](_0x12eb89[_0xaa4b('0x29')],_0x12eb89['query']);_0x3283c7[_0xaa4b('0x2e')]=_[_0xaa4b('0x2d')](_0x12eb89[_0xaa4b('0x29')],qs['fields'](_0x460855[_0xaa4b('0x2a')][_0xaa4b('0x2f')]));_0x3283c7[_0xaa4b('0x2e')]=_0x3283c7[_0xaa4b('0x2e')][_0xaa4b('0x30')]?_0x3283c7[_0xaa4b('0x2e')]:_0x12eb89[_0xaa4b('0x29')];if(!_0x460855['query'][_0xaa4b('0x31')](_0xaa4b('0x32'))){_0x3283c7['limit']=qs[_0xaa4b('0x1a')](_0x460855['query'][_0xaa4b('0x1a')]);_0x3283c7[_0xaa4b('0x18')]=qs[_0xaa4b('0x18')](_0x460855[_0xaa4b('0x2a')]['offset']);}_0x3283c7[_0xaa4b('0x33')]=qs[_0xaa4b('0x34')](_0x460855[_0xaa4b('0x2a')][_0xaa4b('0x34')]);_0x3283c7['where']=qs[_0xaa4b('0x2c')](_[_0xaa4b('0x35')](_0x460855[_0xaa4b('0x2a')],_0x12eb89[_0xaa4b('0x2c')]),_0x21cf01);if(_0x460855[_0xaa4b('0x2a')][_0xaa4b('0x36')]){_0x3283c7[_0xaa4b('0x37')]=_[_0xaa4b('0x38')](_0x3283c7['where'],{'$or':_['map'](_0x21cf01,function(_0xcebf4d){if(_0xcebf4d[_0xaa4b('0x27')]!==_0xaa4b('0x39')){var _0x355d41={};_0x355d41[_0xcebf4d[_0xaa4b('0x22')]]={'$like':'%'+_0x460855[_0xaa4b('0x2a')]['filter']+'%'};return _0x355d41;}})});}_0x3283c7=_[_0xaa4b('0x38')]({},_0x3283c7,_0x460855['options']);var _0x29b1cf={'where':_0x3283c7[_0xaa4b('0x37')]};return db[_0xaa4b('0x3a')][_0xaa4b('0x1b')](_0x29b1cf)['then'](function(_0xfc51c8){_0x261ac3[_0xaa4b('0x1b')]=_0xfc51c8;if(_0x460855[_0xaa4b('0x2a')]['includeAll']){_0x3283c7[_0xaa4b('0x3b')]=[{'all':!![]}];}return db['VoiceDialReport'][_0xaa4b('0x3c')](_0x3283c7);})[_0xaa4b('0x1f')](function(_0x5f179e){_0x261ac3['rows']=_0x5f179e;return _0x261ac3;})[_0xaa4b('0x1f')](respondWithFilteredResult(_0x388d24,_0x3283c7))[_0xaa4b('0x3d')](handleError(_0x388d24,null));};exports['show']=function(_0xdab3a9,_0x517bf9){var _0x4b6c39={'raw':!![],'where':{'id':_0xdab3a9[_0xaa4b('0x3e')]['id']}},_0x237056={};_0x237056[_0xaa4b('0x29')]=_['keys'](db['VoiceDialReport'][_0xaa4b('0x25')]);_0x237056[_0xaa4b('0x2a')]=_[_0xaa4b('0x2b')](_0xdab3a9[_0xaa4b('0x2a')]);_0x237056['filters']=_['intersection'](_0x237056[_0xaa4b('0x29')],_0x237056[_0xaa4b('0x2a')]);_0x4b6c39['attributes']=_[_0xaa4b('0x2d')](_0x237056[_0xaa4b('0x29')],qs[_0xaa4b('0x2f')](_0xdab3a9[_0xaa4b('0x2a')][_0xaa4b('0x2f')]));_0x4b6c39[_0xaa4b('0x2e')]=_0x4b6c39[_0xaa4b('0x2e')][_0xaa4b('0x30')]?_0x4b6c39['attributes']:_0x237056[_0xaa4b('0x29')];if(_0xdab3a9[_0xaa4b('0x2a')][_0xaa4b('0x3f')]){_0x4b6c39[_0xaa4b('0x3b')]=[{'all':!![]}];}_0x4b6c39=_['merge']({},_0x4b6c39,_0xdab3a9[_0xaa4b('0x40')]);return db['VoiceDialReport'][_0xaa4b('0x41')](_0x4b6c39)[_0xaa4b('0x1f')](handleEntityNotFound(_0x517bf9,null))[_0xaa4b('0x1f')](respondWithResult(_0x517bf9,null))[_0xaa4b('0x3d')](handleError(_0x517bf9,null));};exports[_0xaa4b('0x42')]=function(_0x4341ca,_0x562f71){return db[_0xaa4b('0x3a')]['create'](_0x4341ca[_0xaa4b('0x43')],{})[_0xaa4b('0x1f')](respondWithResult(_0x562f71,0xc9))[_0xaa4b('0x3d')](handleError(_0x562f71,null));};exports[_0xaa4b('0x1e')]=function(_0x3fe9fc,_0xbdc00c){if(_0x3fe9fc[_0xaa4b('0x43')]['id']){delete _0x3fe9fc[_0xaa4b('0x43')]['id'];}return db[_0xaa4b('0x3a')][_0xaa4b('0x41')]({'where':{'id':_0x3fe9fc['params']['id']}})['then'](handleEntityNotFound(_0xbdc00c,null))[_0xaa4b('0x1f')](saveUpdates(_0x3fe9fc['body'],null))[_0xaa4b('0x1f')](respondWithResult(_0xbdc00c,null))[_0xaa4b('0x3d')](handleError(_0xbdc00c,null));};exports[_0xaa4b('0x20')]=function(_0x26c05e,_0x1c71c0){return db[_0xaa4b('0x3a')]['find']({'where':{'id':_0x26c05e[_0xaa4b('0x3e')]['id']}})[_0xaa4b('0x1f')](handleEntityNotFound(_0x1c71c0,null))[_0xaa4b('0x1f')](removeEntity(_0x1c71c0,null))[_0xaa4b('0x3d')](handleError(_0x1c71c0,null));};exports[_0xaa4b('0x44')]=function(_0x51cb2a,_0x3ceb7e){return db['VoiceDialReport'][_0xaa4b('0x44')]()['then'](respondWithResult(_0x3ceb7e,null))[_0xaa4b('0x3d')](handleError(_0x3ceb7e,null));};
\ No newline at end of file
+var _0x2844=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','limit','sort','pick','merge','where','VIRTUAL','filter','includeAll','include','VoiceDialReport','findAll','rows','catch','show','params','find','create','body','eml-format'];(function(_0x1746e6,_0x1a57da){var _0x1b24a2=function(_0x177782){while(--_0x177782){_0x1746e6['push'](_0x1746e6['shift']());}};_0x1b24a2(++_0x1a57da);}(_0x2844,0xe6));var _0x4284=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x2844[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0x4284('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4284('0x1'));var jsonpatch=require(_0x4284('0x2'));var rp=require(_0x4284('0x3'));var moment=require(_0x4284('0x4'));var BPromise=require(_0x4284('0x5'));var Mustache=require(_0x4284('0x6'));var util=require(_0x4284('0x7'));var path=require(_0x4284('0x8'));var sox=require(_0x4284('0x9'));var csv=require('to-csv');var ejs=require(_0x4284('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4284('0xb'));var squel=require(_0x4284('0xc'));var crypto=require(_0x4284('0xd'));var jsforce=require(_0x4284('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4284('0xf'));var querystring=require(_0x4284('0x10'));var Papa=require(_0x4284('0x11'));var Redis=require(_0x4284('0x12'));var authService=require(_0x4284('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x4284('0x14'));var hardwareService=require(_0x4284('0x15'));var logger=require(_0x4284('0x16'))(_0x4284('0x17'));var utils=require(_0x4284('0x18'));var config=require(_0x4284('0x19'));var licenseUtil=require(_0x4284('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3660a3,_0x3bbae0){_0x3bbae0=_0x3bbae0||0xcc;return function(_0x5bce1a){if(_0x5bce1a){return _0x3660a3[_0x4284('0x1b')](_0x3bbae0);}return _0x3660a3['status'](_0x3bbae0)[_0x4284('0x1c')]();};}function respondWithResult(_0x5275cc,_0x2e496a){_0x2e496a=_0x2e496a||0xc8;return function(_0x38a38d){if(_0x38a38d){return _0x5275cc[_0x4284('0x1d')](_0x2e496a)[_0x4284('0x1e')](_0x38a38d);}};}function respondWithFilteredResult(_0x2b1931,_0x5059e2){return function(_0x54a185){if(_0x54a185){var _0x47d1bc=typeof _0x5059e2[_0x4284('0x1f')]===_0x4284('0x20')&&typeof _0x5059e2['limit']===_0x4284('0x20');var _0x1a2374=_0x54a185[_0x4284('0x21')];var _0x40f92f=_0x47d1bc?0x0:_0x5059e2['offset'];var _0x28d82f=_0x47d1bc?_0x54a185[_0x4284('0x21')]:_0x5059e2[_0x4284('0x1f')]+_0x5059e2['limit'];var _0x4b3fb6;if(_0x28d82f>=_0x1a2374){_0x28d82f=_0x1a2374;_0x4b3fb6=0xc8;}else{_0x4b3fb6=0xce;}_0x2b1931[_0x4284('0x1d')](_0x4b3fb6);return _0x2b1931['set'](_0x4284('0x22'),_0x40f92f+'-'+_0x28d82f+'/'+_0x1a2374)[_0x4284('0x1e')](_0x54a185);}return null;};}function patchUpdates(_0x3b60b4){return function(_0x2bdc21){try{jsonpatch[_0x4284('0x23')](_0x2bdc21,_0x3b60b4,!![]);}catch(_0x1b3c1a){return BPromise[_0x4284('0x24')](_0x1b3c1a);}return _0x2bdc21[_0x4284('0x25')]();};}function saveUpdates(_0x151f13,_0x36477d){return function(_0x409528){if(_0x409528){return _0x409528[_0x4284('0x26')](_0x151f13)[_0x4284('0x27')](function(_0xb0ef74){return _0xb0ef74;});}return null;};}function removeEntity(_0x2c7148,_0x4333e9){return function(_0x1dff16){if(_0x1dff16){return _0x1dff16[_0x4284('0x28')]()[_0x4284('0x27')](function(){_0x2c7148['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b219c,_0x3909b0){return function(_0x5830ea){if(!_0x5830ea){_0x3b219c[_0x4284('0x1b')](0x194);}return _0x5830ea;};}function handleError(_0xb80462,_0x579894){_0x579894=_0x579894||0x1f4;return function(_0x1dc37d){logger[_0x4284('0x29')](_0x1dc37d[_0x4284('0x2a')]);if(_0x1dc37d[_0x4284('0x2b')]){delete _0x1dc37d[_0x4284('0x2b')];}_0xb80462['status'](_0x579894)[_0x4284('0x2c')](_0x1dc37d);};}exports['index']=function(_0x31698c,_0xdcf1a4){var _0x39a166={},_0x3f7903={},_0x316c4f={'count':0x0,'rows':[]};var _0x23ab12=_[_0x4284('0x2d')](db['VoiceDialReport'][_0x4284('0x2e')],function(_0x5cf6d7){return{'name':_0x5cf6d7[_0x4284('0x2f')],'type':_0x5cf6d7[_0x4284('0x30')][_0x4284('0x31')]};});_0x3f7903['model']=_[_0x4284('0x2d')](_0x23ab12,'name');_0x3f7903[_0x4284('0x32')]=_[_0x4284('0x33')](_0x31698c[_0x4284('0x32')]);_0x3f7903[_0x4284('0x34')]=_[_0x4284('0x35')](_0x3f7903[_0x4284('0x36')],_0x3f7903[_0x4284('0x32')]);_0x39a166['attributes']=_[_0x4284('0x35')](_0x3f7903[_0x4284('0x36')],qs[_0x4284('0x37')](_0x31698c['query'][_0x4284('0x37')]));_0x39a166[_0x4284('0x38')]=_0x39a166[_0x4284('0x38')][_0x4284('0x39')]?_0x39a166['attributes']:_0x3f7903[_0x4284('0x36')];if(!_0x31698c[_0x4284('0x32')]['hasOwnProperty'](_0x4284('0x3a'))){_0x39a166[_0x4284('0x3b')]=qs['limit'](_0x31698c['query']['limit']);_0x39a166['offset']=qs['offset'](_0x31698c[_0x4284('0x32')][_0x4284('0x1f')]);}_0x39a166['order']=qs[_0x4284('0x3c')](_0x31698c[_0x4284('0x32')][_0x4284('0x3c')]);_0x39a166['where']=qs[_0x4284('0x34')](_[_0x4284('0x3d')](_0x31698c[_0x4284('0x32')],_0x3f7903[_0x4284('0x34')]),_0x23ab12);if(_0x31698c['query']['filter']){_0x39a166['where']=_[_0x4284('0x3e')](_0x39a166[_0x4284('0x3f')],{'$or':_['map'](_0x23ab12,function(_0x2e446c){if(_0x2e446c[_0x4284('0x30')]!==_0x4284('0x40')){var _0x446d39={};_0x446d39[_0x2e446c[_0x4284('0x2b')]]={'$like':'%'+_0x31698c['query'][_0x4284('0x41')]+'%'};return _0x446d39;}})});}_0x39a166=_['merge']({},_0x39a166,_0x31698c['options']);var _0x359521={'where':_0x39a166[_0x4284('0x3f')]};return db['VoiceDialReport'][_0x4284('0x21')](_0x359521)[_0x4284('0x27')](function(_0x5d2887){_0x316c4f[_0x4284('0x21')]=_0x5d2887;if(_0x31698c['query'][_0x4284('0x42')]){_0x39a166[_0x4284('0x43')]=[{'all':!![]}];}return db[_0x4284('0x44')][_0x4284('0x45')](_0x39a166);})[_0x4284('0x27')](function(_0x59446d){_0x316c4f[_0x4284('0x46')]=_0x59446d;return _0x316c4f;})[_0x4284('0x27')](respondWithFilteredResult(_0xdcf1a4,_0x39a166))[_0x4284('0x47')](handleError(_0xdcf1a4,null));};exports[_0x4284('0x48')]=function(_0x1384e1,_0x1f9885){var _0x230b0a={'raw':!![],'where':{'id':_0x1384e1[_0x4284('0x49')]['id']}},_0x5d9736={};_0x5d9736['model']=_[_0x4284('0x33')](db[_0x4284('0x44')][_0x4284('0x2e')]);_0x5d9736[_0x4284('0x32')]=_[_0x4284('0x33')](_0x1384e1[_0x4284('0x32')]);_0x5d9736[_0x4284('0x34')]=_['intersection'](_0x5d9736[_0x4284('0x36')],_0x5d9736[_0x4284('0x32')]);_0x230b0a['attributes']=_[_0x4284('0x35')](_0x5d9736[_0x4284('0x36')],qs[_0x4284('0x37')](_0x1384e1['query'][_0x4284('0x37')]));_0x230b0a[_0x4284('0x38')]=_0x230b0a['attributes']['length']?_0x230b0a['attributes']:_0x5d9736[_0x4284('0x36')];if(_0x1384e1[_0x4284('0x32')]['includeAll']){_0x230b0a['include']=[{'all':!![]}];}_0x230b0a=_[_0x4284('0x3e')]({},_0x230b0a,_0x1384e1['options']);return db[_0x4284('0x44')][_0x4284('0x4a')](_0x230b0a)[_0x4284('0x27')](handleEntityNotFound(_0x1f9885,null))[_0x4284('0x27')](respondWithResult(_0x1f9885,null))[_0x4284('0x47')](handleError(_0x1f9885,null));};exports[_0x4284('0x4b')]=function(_0x25b55e,_0x395180){return db[_0x4284('0x44')][_0x4284('0x4b')](_0x25b55e[_0x4284('0x4c')],{})[_0x4284('0x27')](respondWithResult(_0x395180,0xc9))[_0x4284('0x47')](handleError(_0x395180,null));};exports[_0x4284('0x26')]=function(_0x26a122,_0x53b1b1){if(_0x26a122[_0x4284('0x4c')]['id']){delete _0x26a122[_0x4284('0x4c')]['id'];}return db[_0x4284('0x44')][_0x4284('0x4a')]({'where':{'id':_0x26a122[_0x4284('0x49')]['id']}})[_0x4284('0x27')](handleEntityNotFound(_0x53b1b1,null))[_0x4284('0x27')](saveUpdates(_0x26a122['body'],null))['then'](respondWithResult(_0x53b1b1,null))[_0x4284('0x47')](handleError(_0x53b1b1,null));};exports['destroy']=function(_0x18f2e1,_0x2fd0d1){return db['VoiceDialReport'][_0x4284('0x4a')]({'where':{'id':_0x18f2e1['params']['id']}})[_0x4284('0x27')](handleEntityNotFound(_0x2fd0d1,null))[_0x4284('0x27')](removeEntity(_0x2fd0d1,null))['catch'](handleError(_0x2fd0d1,null));};exports['describe']=function(_0x4400e5,_0x397080){return db[_0x4284('0x44')]['describe']()[_0x4284('0x27')](respondWithResult(_0x397080,null))[_0x4284('0x47')](handleError(_0x397080,null));};
\ No newline at end of file
index e2114a0..3ec1d54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ee4=['request-promise','path','../../config/environment','exports','define','VoiceDialReport','report_dial','uniqueid','lodash','util','api','moment'];(function(_0x3d98fa,_0x119ed4){var _0x2575a0=function(_0x2f28bd){while(--_0x2f28bd){_0x3d98fa['push'](_0x3d98fa['shift']());}};_0x2575a0(++_0x119ed4);}(_0x7ee4,0xbc));var _0x47ee=function(_0x352fc5,_0xc25f36){_0x352fc5=_0x352fc5-0x0;var _0x47095f=_0x7ee4[_0x352fc5];return _0x47095f;};'use strict';var _=require(_0x47ee('0x0'));var util=require(_0x47ee('0x1'));var logger=require('../../config/logger')(_0x47ee('0x2'));var moment=require(_0x47ee('0x3'));var BPromise=require('bluebird');var rp=require(_0x47ee('0x4'));var fs=require('fs');var path=require(_0x47ee('0x5'));var rimraf=require('rimraf');var config=require(_0x47ee('0x6'));var attributes=require('./voiceDialReport.attributes');module[_0x47ee('0x7')]=function(_0x9054da,_0x25d96e){return _0x9054da[_0x47ee('0x8')](_0x47ee('0x9'),attributes,{'tableName':_0x47ee('0xa'),'paranoid':![],'indexes':[{'fields':[_0x47ee('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcebf=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','VoiceDialReport','report_dial','uniqueid'];(function(_0x529c32,_0xfd26ac){var _0x26f092=function(_0x455610){while(--_0x455610){_0x529c32['push'](_0x529c32['shift']());}};_0x26f092(++_0xfd26ac);}(_0xcebf,0x1a0));var _0xfceb=function(_0x4be0c4,_0xbe9e61){_0x4be0c4=_0x4be0c4-0x0;var _0x2aa443=_0xcebf[_0x4be0c4];return _0x2aa443;};'use strict';var _=require('lodash');var util=require(_0xfceb('0x0'));var logger=require(_0xfceb('0x1'))(_0xfceb('0x2'));var moment=require(_0xfceb('0x3'));var BPromise=require(_0xfceb('0x4'));var rp=require(_0xfceb('0x5'));var fs=require('fs');var path=require(_0xfceb('0x6'));var rimraf=require(_0xfceb('0x7'));var config=require('../../config/environment');var attributes=require('./voiceDialReport.attributes');module[_0xfceb('0x8')]=function(_0x7cd28d,_0x54b077){return _0x7cd28d[_0xfceb('0x9')](_0xfceb('0xa'),attributes,{'tableName':_0xfceb('0xb'),'paranoid':![],'indexes':[{'fields':[_0xfceb('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 229e2bf..b3b9565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['create','body','options','raw','stringify','catch','UpdateVoiceDialReport','VoiceDialReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','error','code','message','CreateVoiceDialReport'];(function(_0x5c0f90,_0xcbe32d){var _0x5375bf=function(_0x1e996d){while(--_0x1e996d){_0x5c0f90['push'](_0x5c0f90['shift']());}};_0x5375bf(++_0xcbe32d);}(_0x00bb,0x147));var _0xb00b=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x00bb[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var BPromise=require(_0xb00b('0x3'));var rs=require(_0xb00b('0x4'));var fs=require('fs');var Redis=require(_0xb00b('0x5'));var db=require(_0xb00b('0x6'))['db'];var utils=require(_0xb00b('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xb00b('0x8'));var jayson=require(_0xb00b('0x9'));var client=jayson[_0xb00b('0xa')][_0xb00b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x39b98c,_0x11a7ab,_0x183f9b){return new BPromise(function(_0x22bddd,_0x52e0a1){return client[_0xb00b('0xc')](_0x39b98c,_0x183f9b)[_0xb00b('0xd')](function(_0x3dcc83){logger[_0xb00b('0xe')](_0xb00b('0xf'),_0x11a7ab,_0xb00b('0x10'));logger[_0xb00b('0x11')](_0xb00b('0x12'),_0x11a7ab,'request\x20sent',JSON['stringify'](_0x3dcc83));if(_0x3dcc83[_0xb00b('0x13')]){if(_0x3dcc83[_0xb00b('0x13')][_0xb00b('0x14')]===0x1f4){logger[_0xb00b('0x13')]('VoiceDialReport,\x20%s,\x20%s',_0x11a7ab,_0x3dcc83['error']['message']);return _0x52e0a1(_0x3dcc83[_0xb00b('0x13')]['message']);}logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x11a7ab,_0x3dcc83[_0xb00b('0x13')][_0xb00b('0x15')]);return _0x22bddd(_0x3dcc83[_0xb00b('0x13')][_0xb00b('0x15')]);}else{logger['info']('VoiceDialReport,\x20%s,\x20%s',_0x11a7ab,_0xb00b('0x10'));_0x22bddd(_0x3dcc83['result'][_0xb00b('0x15')]);}})['catch'](function(_0x3895ec){logger[_0xb00b('0x13')]('VoiceDialReport,\x20%s,\x20%s',_0x11a7ab,_0x3895ec);_0x52e0a1(_0x3895ec);});});}exports[_0xb00b('0x16')]=function(_0x4813a9){var _0x354ce2=this;return new Promise(function(_0x243f1e,_0xd2ac78){return db['VoiceDialReport'][_0xb00b('0x17')](_0x4813a9[_0xb00b('0x18')],{'raw':_0x4813a9[_0xb00b('0x19')]?_0x4813a9[_0xb00b('0x19')][_0xb00b('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x53ff04){logger[_0xb00b('0xe')](_0xb00b('0x16'),_0x4813a9);logger[_0xb00b('0x11')](_0xb00b('0x16'),_0x4813a9,JSON[_0xb00b('0x1b')](_0x53ff04));_0x243f1e(_0x53ff04);})[_0xb00b('0x1c')](function(_0x555dd9){logger[_0xb00b('0x13')](_0xb00b('0x16'),_0x555dd9[_0xb00b('0x15')],_0x4813a9);_0xd2ac78(_0x354ce2[_0xb00b('0x13')](0x1f4,_0x555dd9['message']));});});};exports[_0xb00b('0x1d')]=function(_0x62faa2){var _0x5bd832=this;return new Promise(function(_0x440e1f,_0x2f6a47){return db[_0xb00b('0x1e')][_0xb00b('0x1f')](_0x62faa2['body'],{'raw':_0x62faa2[_0xb00b('0x19')]?_0x62faa2[_0xb00b('0x19')][_0xb00b('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x62faa2['options']?_0x62faa2['options'][_0xb00b('0x20')]||null:null,'attributes':_0x62faa2[_0xb00b('0x19')]?_0x62faa2[_0xb00b('0x19')][_0xb00b('0x21')]||null:null,'limit':_0x62faa2['options']?_0x62faa2[_0xb00b('0x19')][_0xb00b('0x22')]||null:null})[_0xb00b('0xd')](function(_0x3f9636){logger[_0xb00b('0xe')](_0xb00b('0x1d'),_0x62faa2);logger[_0xb00b('0x11')]('UpdateVoiceDialReport',_0x62faa2,JSON[_0xb00b('0x1b')](_0x3f9636));_0x440e1f(_0x3f9636);})[_0xb00b('0x1c')](function(_0x4f53fe){logger[_0xb00b('0x13')](_0xb00b('0x1d'),_0x4f53fe[_0xb00b('0x15')],_0x62faa2);_0x2f6a47(_0x5bd832['error'](0x1f4,_0x4f53fe[_0xb00b('0x15')]));});});};
\ No newline at end of file
+var _0x172b=['catch','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','then','where','attributes','limit','UpdateVoiceDialReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','VoiceDialReport,\x20%s,\x20%s','message','result'];(function(_0x4fb854,_0x5675c5){var _0x269fea=function(_0x34efbb){while(--_0x34efbb){_0x4fb854['push'](_0x4fb854['shift']());}};_0x269fea(++_0x5675c5);}(_0x172b,0xfa));var _0xb172=function(_0x57b55c,_0x1e2ec5){_0x57b55c=_0x57b55c-0x0;var _0x1e80e7=_0x172b[_0x57b55c];return _0x1e80e7;};'use strict';var _=require(_0xb172('0x0'));var util=require('util');var moment=require(_0xb172('0x1'));var BPromise=require(_0xb172('0x2'));var rs=require(_0xb172('0x3'));var fs=require('fs');var Redis=require(_0xb172('0x4'));var db=require(_0xb172('0x5'))['db'];var utils=require(_0xb172('0x6'));var logger=require(_0xb172('0x7'))('rpc');var config=require(_0xb172('0x8'));var jayson=require(_0xb172('0x9'));var client=jayson[_0xb172('0xa')][_0xb172('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3fd4b9,_0x46b195,_0x55d336){return new BPromise(function(_0x29299f,_0x2687d4){return client[_0xb172('0xc')](_0x3fd4b9,_0x55d336)['then'](function(_0x78c08e){logger[_0xb172('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x46b195,_0xb172('0xe'));logger[_0xb172('0xf')](_0xb172('0x10'),_0x46b195,'request\x20sent',JSON[_0xb172('0x11')](_0x78c08e));if(_0x78c08e['error']){if(_0x78c08e[_0xb172('0x12')]['code']===0x1f4){logger['error'](_0xb172('0x13'),_0x46b195,_0x78c08e[_0xb172('0x12')][_0xb172('0x14')]);return _0x2687d4(_0x78c08e[_0xb172('0x12')][_0xb172('0x14')]);}logger[_0xb172('0x12')](_0xb172('0x13'),_0x46b195,_0x78c08e['error']['message']);return _0x29299f(_0x78c08e[_0xb172('0x12')]['message']);}else{logger[_0xb172('0xd')](_0xb172('0x13'),_0x46b195,_0xb172('0xe'));_0x29299f(_0x78c08e[_0xb172('0x15')][_0xb172('0x14')]);}})[_0xb172('0x16')](function(_0x2eb118){logger['error'](_0xb172('0x13'),_0x46b195,_0x2eb118);_0x2687d4(_0x2eb118);});});}exports[_0xb172('0x17')]=function(_0x2b5bf7){var _0x250f74=this;return new Promise(function(_0x53a041,_0x53d820){return db[_0xb172('0x18')][_0xb172('0x19')](_0x2b5bf7[_0xb172('0x1a')],{'raw':_0x2b5bf7[_0xb172('0x1b')]?_0x2b5bf7['options'][_0xb172('0x1c')]===undefined?!![]:![]:!![]})[_0xb172('0x1d')](function(_0x2af75a){logger[_0xb172('0xd')](_0xb172('0x17'),_0x2b5bf7);logger['debug']('CreateVoiceDialReport',_0x2b5bf7,JSON['stringify'](_0x2af75a));_0x53a041(_0x2af75a);})[_0xb172('0x16')](function(_0x4eafd0){logger['error']('CreateVoiceDialReport',_0x4eafd0[_0xb172('0x14')],_0x2b5bf7);_0x53d820(_0x250f74[_0xb172('0x12')](0x1f4,_0x4eafd0['message']));});});};exports['UpdateVoiceDialReport']=function(_0x1d9680){var _0x12987e=this;return new Promise(function(_0x19de6e,_0x1cea6a){return db[_0xb172('0x18')]['update'](_0x1d9680[_0xb172('0x1a')],{'raw':_0x1d9680[_0xb172('0x1b')]?_0x1d9680[_0xb172('0x1b')][_0xb172('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d9680['options']?_0x1d9680[_0xb172('0x1b')][_0xb172('0x1e')]||null:null,'attributes':_0x1d9680['options']?_0x1d9680[_0xb172('0x1b')][_0xb172('0x1f')]||null:null,'limit':_0x1d9680[_0xb172('0x1b')]?_0x1d9680[_0xb172('0x1b')][_0xb172('0x20')]||null:null})['then'](function(_0x42b778){logger[_0xb172('0xd')](_0xb172('0x21'),_0x1d9680);logger[_0xb172('0xf')](_0xb172('0x21'),_0x1d9680,JSON[_0xb172('0x11')](_0x42b778));_0x19de6e(_0x42b778);})[_0xb172('0x16')](function(_0x49b72f){logger['error'](_0xb172('0x21'),_0x49b72f['message'],_0x1d9680);_0x1cea6a(_0x12987e[_0xb172('0x12')](0x1f4,_0x49b72f[_0xb172('0x14')]));});});};
\ No newline at end of file
index 2b60a81..2bc01bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24c8=['show','post','create','/:id/applications','addApplications','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','/:id'];(function(_0x3899d1,_0x4aa04c){var _0xeb4a7d=function(_0x3ea5ee){while(--_0x3ea5ee){_0x3899d1['push'](_0x3899d1['shift']());}};_0xeb4a7d(++_0x4aa04c);}(_0x24c8,0x13d));var _0x824c=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0x24c8[_0x2576d7];return _0x16a08c;};'use strict';var multer=require(_0x824c('0x0'));var util=require(_0x824c('0x1'));var path=require(_0x824c('0x2'));var timeout=require('connect-timeout');var express=require(_0x824c('0x3'));var router=express[_0x824c('0x4')]();var fs_extra=require(_0x824c('0x5'));var auth=require(_0x824c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x824c('0x7'));var controller=require(_0x824c('0x8'));router[_0x824c('0x9')]('/',auth[_0x824c('0xa')](),controller[_0x824c('0xb')]);router[_0x824c('0x9')](_0x824c('0xc'),auth[_0x824c('0xa')](),controller[_0x824c('0xd')]);router[_0x824c('0xe')]('/',auth[_0x824c('0xa')](),controller[_0x824c('0xf')]);router['post'](_0x824c('0x10'),auth[_0x824c('0xa')](),controller[_0x824c('0x11')]);router[_0x824c('0x12')](_0x824c('0xc'),auth[_0x824c('0xa')](),controller[_0x824c('0x13')]);router[_0x824c('0x14')](_0x824c('0xc'),auth[_0x824c('0xa')](),controller['destroy']);module[_0x824c('0x15')]=router;
\ No newline at end of file
+var _0xee10=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','/:id','post','create','addApplications','update','delete','destroy','multer','util','path','express','fs-extra'];(function(_0x1a7783,_0x3ffac4){var _0x5dfbd9=function(_0x4bc4c9){while(--_0x4bc4c9){_0x1a7783['push'](_0x1a7783['shift']());}};_0x5dfbd9(++_0x3ffac4);}(_0xee10,0x151));var _0x0ee1=function(_0xcc683b,_0x1682e6){_0xcc683b=_0xcc683b-0x0;var _0x279201=_0xee10[_0xcc683b];return _0x279201;};'use strict';var multer=require(_0x0ee1('0x0'));var util=require(_0x0ee1('0x1'));var path=require(_0x0ee1('0x2'));var timeout=require('connect-timeout');var express=require(_0x0ee1('0x3'));var router=express['Router']();var fs_extra=require(_0x0ee1('0x4'));var auth=require(_0x0ee1('0x5'));var interaction=require(_0x0ee1('0x6'));var config=require(_0x0ee1('0x7'));var controller=require(_0x0ee1('0x8'));router[_0x0ee1('0x9')]('/',auth[_0x0ee1('0xa')](),controller['index']);router['get'](_0x0ee1('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x0ee1('0xc')]('/',auth[_0x0ee1('0xa')](),controller[_0x0ee1('0xd')]);router[_0x0ee1('0xc')]('/:id/applications',auth[_0x0ee1('0xa')](),controller[_0x0ee1('0xe')]);router['put'](_0x0ee1('0xb'),auth['isAuthenticated'](),controller[_0x0ee1('0xf')]);router[_0x0ee1('0x10')](_0x0ee1('0xb'),auth[_0x0ee1('0xa')](),controller[_0x0ee1('0x11')]);module['exports']=router;
\ No newline at end of file
index 241d343..e5d0f9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd432=['BOOLEAN','VIRTUAL','getDataValue','exten','sequelize','exports','STRING','compositeIndex','NoOp','ENUM','inbound','internal','system'];(function(_0x41e873,_0x52156c){var _0x53d447=function(_0x58f43f){while(--_0x58f43f){_0x41e873['push'](_0x41e873['shift']());}};_0x53d447(++_0x52156c);}(_0xd432,0xc7));var _0x2d43=function(_0x11db22,_0xf42455){_0x11db22=_0x11db22-0x0;var _0x549259=_0xd432[_0x11db22];return _0x549259;};'use strict';var Sequelize=require(_0x2d43('0x0'));module[_0x2d43('0x1')]={'context':{'type':Sequelize[_0x2d43('0x2')],'allowNull':![],'unique':_0x2d43('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x2d43('0x2')],'allowNull':![],'unique':_0x2d43('0x3')},'priority':{'type':Sequelize[_0x2d43('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x2d43('0x3')},'tag':{'type':Sequelize[_0x2d43('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x2d43('0x2')],'allowNull':![],'defaultValue':_0x2d43('0x4')},'appdata':{'type':Sequelize[_0x2d43('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x2d43('0x5')](_0x2d43('0x6'),'outbound',_0x2d43('0x7'),'inbound-fax','outbound-fax',_0x2d43('0x8'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x2d43('0x2')]},'interval':{'type':Sequelize[_0x2d43('0x2')],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x2d43('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x2d43('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0x2d43('0x9')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0x2d43('0x2')],'defaultValue':'wav'},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0x2d43('0xa')],'get':function(_0x48f458){return this[_0x2d43('0xb')](_0x2d43('0xc'));}},'alias':{'type':Sequelize[_0x2d43('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x3235=['internal','outbound-fax','*,*,*,*','INTEGER','BOOLEAN','exten','exports','STRING','compositeIndex','ENUM','outbound'];(function(_0x1d30bc,_0x6f5f13){var _0x104a7d=function(_0x31bd38){while(--_0x31bd38){_0x1d30bc['push'](_0x1d30bc['shift']());}};_0x104a7d(++_0x6f5f13);}(_0x3235,0xd7));var _0x5323=function(_0x467ae8,_0x3d1ef2){_0x467ae8=_0x467ae8-0x0;var _0x29e859=_0x3235[_0x467ae8];return _0x29e859;};'use strict';var Sequelize=require('sequelize');module[_0x5323('0x0')]={'context':{'type':Sequelize[_0x5323('0x1')],'allowNull':![],'unique':_0x5323('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x5323('0x1')],'allowNull':![],'unique':_0x5323('0x2')},'priority':{'type':Sequelize[_0x5323('0x1')],'allowNull':![],'defaultValue':'1','unique':_0x5323('0x2')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x5323('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x5323('0x3')]('inbound',_0x5323('0x4'),_0x5323('0x5'),'inbound-fax',_0x5323('0x6'),'system','any'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x5323('0x1')],'allowNull':![],'defaultValue':_0x5323('0x7')},'IntervalId':{'type':Sequelize[_0x5323('0x8')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x5323('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x5323('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0x5323('0x9')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x5323('0x8')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':'wav'},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x478ce0){return this['getDataValue'](_0x5323('0xa'));}},'alias':{'type':Sequelize[_0x5323('0x1')],'allowNull':!![]}};
\ No newline at end of file
index b4a4228..d781ae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf715=['undefined','count','limit','set','Content-Range','get','InboundRoutes','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','find','name','destroy','then','stack','index','VoiceExtension','rawAttributes','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','includeAll','findAll','rows','catch','params','length','options','create','body','startsWith','exten','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','inbound','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','recordingFormat','mandatoryDisposition','alias','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','isApp','bulkCreate','findAndCountAll','send','lodash','ioredis','../../components/parsers/qs','../../config/environment','../../mysqldb','redis','defaults','localhost','./voiceExtension.socket','sendStatus','status','end','json','offset'];(function(_0x18fbc1,_0x2e8bbc){var _0x3dd94e=function(_0x372a3d){while(--_0x372a3d){_0x18fbc1['push'](_0x18fbc1['shift']());}};_0x3dd94e(++_0x2e8bbc);}(_0xf715,0xa2));var _0x5f71=function(_0x464ac5,_0x3841cd){_0x464ac5=_0x464ac5-0x0;var _0x431e2b=_0xf715[_0x464ac5];return _0x431e2b;};'use strict';var _=require(_0x5f71('0x0'));var Redis=require(_0x5f71('0x1'));var qs=require(_0x5f71('0x2'));var logger=require('../../config/logger')('api');var config=require(_0x5f71('0x3'));var db=require(_0x5f71('0x4'))['db'];config[_0x5f71('0x5')]=_[_0x5f71('0x6')](config[_0x5f71('0x5')],{'host':_0x5f71('0x7'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5f71('0x5')]));require(_0x5f71('0x8'))['register'](socket);function respondWithStatusCode(_0x1424f1,_0x397181){_0x397181=_0x397181||0xcc;return function(_0x2d5858){if(_0x2d5858){return _0x1424f1[_0x5f71('0x9')](_0x397181);}return _0x1424f1[_0x5f71('0xa')](_0x397181)[_0x5f71('0xb')]();};}function respondWithResult(_0x57bb13,_0xc54b6b){_0xc54b6b=_0xc54b6b||0xc8;return function(_0x5dda65){if(_0x5dda65){return _0x57bb13[_0x5f71('0xa')](_0xc54b6b)[_0x5f71('0xc')](_0x5dda65);}};}function respondWithFilteredResult(_0x1318a6,_0x443067){return function(_0xf78b7b){if(_0xf78b7b){var _0x86d4f=typeof _0x443067[_0x5f71('0xd')]===_0x5f71('0xe')&&typeof _0x443067['limit']==='undefined';var _0x440279=_0xf78b7b[_0x5f71('0xf')];var _0x488890=_0x86d4f?0x0:_0x443067[_0x5f71('0xd')];var _0x1fc1c3=_0x86d4f?_0xf78b7b['count']:_0x443067[_0x5f71('0xd')]+_0x443067[_0x5f71('0x10')];var _0x143910;if(_0x1fc1c3>=_0x440279){_0x1fc1c3=_0x440279;_0x143910=0xc8;}else{_0x143910=0xce;}_0x1318a6[_0x5f71('0xa')](_0x143910);return _0x1318a6[_0x5f71('0x11')](_0x5f71('0x12'),_0x488890+'-'+_0x1fc1c3+'/'+_0x440279)[_0x5f71('0xc')](_0xf78b7b);}return null;};}function removeEntity(_0xe4ad46){return function(_0x4f9ef0){if(_0x4f9ef0){return _0x4f9ef0['destroy']()['then'](function(){var _0x36437c=_0x4f9ef0[_0x5f71('0x13')]({'plain':!![]});var _0x224539=[{'name':_0x5f71('0x14'),'value':'inbound','ignore':![]},{'name':_0x5f71('0x15'),'value':_0x5f71('0x16'),'ignore':![]},{'name':_0x5f71('0x17'),'value':_0x5f71('0x18'),'ignore':![]}];var _0xd299ad=_(_0x224539)[_0x5f71('0x19')](_0x5f71('0x1a'))[_0x5f71('0x1b')](_0x5f71('0x1c'))[_0x5f71('0x1c')]();if(_[_0x5f71('0x1d')](_0xd299ad,_0x36437c[_0x5f71('0x1e')])){return;}var _0x1089c1=_[_0x5f71('0x1f')](_0x224539,['value',_0x36437c[_0x5f71('0x1e')]])[_0x5f71('0x20')];return db['UserProfileResource'][_0x5f71('0x21')]({'where':{'type':_0x1089c1,'resourceId':_0x36437c['id']}})[_0x5f71('0x22')](function(){return _0x4f9ef0;});})[_0x5f71('0x22')](function(){_0xe4ad46['status'](0xcc)[_0x5f71('0xb')]();});}};}function handleEntityNotFound(_0x2cacf7){return function(_0x3221e6){if(!_0x3221e6){_0x2cacf7[_0x5f71('0x9')](0x194);}return _0x3221e6;};}function handleError(_0x411520,_0x2fb1d5){_0x2fb1d5=_0x2fb1d5||0x1f4;return function(_0x2928d8){logger['error'](_0x2928d8[_0x5f71('0x23')]);if(_0x2928d8[_0x5f71('0x20')]){delete _0x2928d8[_0x5f71('0x20')];}_0x411520[_0x5f71('0xa')](_0x2fb1d5)['send'](_0x2928d8);};}exports[_0x5f71('0x24')]=function(_0x12baf9,_0x237a13){var _0x59d093={},_0x311f1d={},_0x52ff6={'count':0x0,'rows':[]};var _0x242bbf=_['map'](db[_0x5f71('0x25')][_0x5f71('0x26')],function(_0x2c2367){return{'name':_0x2c2367['fieldName'],'type':_0x2c2367['type'][_0x5f71('0x27')]};});_0x311f1d[_0x5f71('0x28')]=_[_0x5f71('0x1b')](_0x242bbf,_0x5f71('0x20'));_0x311f1d['query']=_[_0x5f71('0x29')](_0x12baf9[_0x5f71('0x2a')]);_0x311f1d[_0x5f71('0x2b')]=_[_0x5f71('0x2c')](_0x311f1d['model'],_0x311f1d[_0x5f71('0x2a')]);_0x59d093['attributes']=_[_0x5f71('0x2c')](_0x311f1d[_0x5f71('0x28')],qs[_0x5f71('0x2d')](_0x12baf9[_0x5f71('0x2a')][_0x5f71('0x2d')]));_0x59d093[_0x5f71('0x2e')]=_0x59d093['attributes']['length']?_0x59d093['attributes']:_0x311f1d['model'];if(!_0x12baf9[_0x5f71('0x2a')][_0x5f71('0x2f')]('nolimit')){_0x59d093[_0x5f71('0x10')]=qs[_0x5f71('0x10')](_0x12baf9['query']['limit']);_0x59d093[_0x5f71('0xd')]=qs[_0x5f71('0xd')](_0x12baf9[_0x5f71('0x2a')][_0x5f71('0xd')]);}_0x59d093[_0x5f71('0x30')]=qs['sort'](_0x12baf9[_0x5f71('0x2a')][_0x5f71('0x31')]);_0x59d093[_0x5f71('0x32')]=qs['filters'](_[_0x5f71('0x33')](_0x12baf9[_0x5f71('0x2a')],_0x311f1d['filters']),_0x242bbf);if(_0x12baf9[_0x5f71('0x2a')][_0x5f71('0x19')]){_0x59d093[_0x5f71('0x32')]=_[_0x5f71('0x34')](_0x59d093[_0x5f71('0x32')],{'$or':_[_0x5f71('0x1b')](_0x242bbf,function(_0x3931f6){if(_0x3931f6[_0x5f71('0x1e')]!==_0x5f71('0x35')){var _0x1ae72b={};_0x1ae72b[_0x3931f6['name']]={'$like':'%'+_0x12baf9[_0x5f71('0x2a')]['filter']+'%'};return _0x1ae72b;}})});}_0x59d093=_[_0x5f71('0x34')]({},_0x59d093,_0x12baf9['options']);var _0x10809f={'where':_0x59d093[_0x5f71('0x32')]};return db[_0x5f71('0x25')][_0x5f71('0xf')](_0x10809f)[_0x5f71('0x22')](function(_0x53583c){_0x52ff6[_0x5f71('0xf')]=_0x53583c;if(_0x12baf9[_0x5f71('0x2a')][_0x5f71('0x36')]){_0x59d093['include']=[{'all':!![]}];}return db[_0x5f71('0x25')][_0x5f71('0x37')](_0x59d093);})[_0x5f71('0x22')](function(_0x87267c){_0x52ff6[_0x5f71('0x38')]=_0x87267c;return _0x52ff6;})[_0x5f71('0x22')](respondWithFilteredResult(_0x237a13,_0x59d093))[_0x5f71('0x39')](handleError(_0x237a13,null));};exports['show']=function(_0x315916,_0x235676){var _0x2983d9={'raw':![],'where':{'id':_0x315916[_0x5f71('0x3a')]['id']}},_0x2fba4a={};_0x2fba4a[_0x5f71('0x28')]=_['keys'](db[_0x5f71('0x25')][_0x5f71('0x26')]);_0x2fba4a[_0x5f71('0x2a')]=_['keys'](_0x315916[_0x5f71('0x2a')]);_0x2fba4a[_0x5f71('0x2b')]=_[_0x5f71('0x2c')](_0x2fba4a[_0x5f71('0x28')],_0x2fba4a[_0x5f71('0x2a')]);_0x2983d9[_0x5f71('0x2e')]=_['intersection'](_0x2fba4a[_0x5f71('0x28')],qs[_0x5f71('0x2d')](_0x315916['query'][_0x5f71('0x2d')]));_0x2983d9[_0x5f71('0x2e')]=_0x2983d9[_0x5f71('0x2e')][_0x5f71('0x3b')]?_0x2983d9['attributes']:_0x2fba4a[_0x5f71('0x28')];if(_0x315916[_0x5f71('0x2a')][_0x5f71('0x36')]){_0x2983d9['include']=[{'all':!![]}];}_0x2983d9=_[_0x5f71('0x34')]({},_0x2983d9,_0x315916[_0x5f71('0x3c')]);return db[_0x5f71('0x25')][_0x5f71('0x1f')](_0x2983d9)[_0x5f71('0x22')](handleEntityNotFound(_0x235676,null))[_0x5f71('0x22')](respondWithResult(_0x235676,null))[_0x5f71('0x39')](handleError(_0x235676,null));};exports[_0x5f71('0x21')]=function(_0x2083ee,_0x5c6b75){return db[_0x5f71('0x25')][_0x5f71('0x1f')]({'where':{'id':_0x2083ee[_0x5f71('0x3a')]['id']}})['then'](handleEntityNotFound(_0x5c6b75,null))[_0x5f71('0x22')](removeEntity(_0x5c6b75,null))['catch'](handleError(_0x5c6b75,null));};exports[_0x5f71('0x3d')]=function(_0x5b24be,_0x429c4e){if(_0x5b24be[_0x5f71('0x3e')]['type']==='outbound'&&!_[_0x5f71('0x3f')](_0x5b24be[_0x5f71('0x3e')]['exten'],'_')){_0x5b24be['body'][_0x5f71('0x40')]='_'['concat'](_0x5b24be[_0x5f71('0x3e')][_0x5f71('0x40')]);}return db[_0x5f71('0x25')][_0x5f71('0x3d')](_0x5b24be['body'],{'raw':![]})[_0x5f71('0x22')](function(_0xbc37a9){var _0x5e82f8=_0x5b24be[_0x5f71('0x41')][_0x5f71('0x13')]({'plain':!![]});if(!_0x5e82f8)throw new Error(_0x5f71('0x42'));if(_0x5e82f8['role']===_0x5f71('0x41')){var _0x55f309=_0xbc37a9[_0x5f71('0x13')]({'plain':!![]});var _0x1f8cf6=[{'name':'InboundRoutes','value':_0x5f71('0x43')},{'name':_0x5f71('0x15'),'value':_0x5f71('0x16')},{'name':_0x5f71('0x17'),'value':_0x5f71('0x18')}];var _0x4c815f=_['find'](_0x1f8cf6,[_0x5f71('0x1c'),_0x55f309[_0x5f71('0x1e')]])['name'];return db[_0x5f71('0x44')][_0x5f71('0x1f')]({'where':{'name':_0x4c815f,'userProfileId':_0x5e82f8[_0x5f71('0x45')]},'raw':!![]})[_0x5f71('0x22')](function(_0xdf4dfd){if(_0xdf4dfd&&_0xdf4dfd[_0x5f71('0x46')]===0x0){return db[_0x5f71('0x47')]['create']({'name':_0x55f309['name'],'resourceId':_0x55f309['id'],'type':_0xdf4dfd[_0x5f71('0x20')],'sectionId':_0xdf4dfd['id']},{})['then'](function(){return _0xbc37a9;});}else{return _0xbc37a9;}})['catch'](function(_0x2e4877){logger[_0x5f71('0x48')](_0x5f71('0x49'),_0x2e4877);throw _0x2e4877;});}return _0xbc37a9;})[_0x5f71('0x22')](respondWithResult(_0x429c4e,0xc9))[_0x5f71('0x39')](handleError(_0x429c4e,null));};exports[_0x5f71('0x4a')]=function(_0x445cf3,_0x8c316e){if(_0x445cf3['body']['id']){delete _0x445cf3[_0x5f71('0x3e')]['id'];}return db[_0x5f71('0x25')][_0x5f71('0x1f')]({'where':{'id':_0x445cf3['params']['id']}})['then'](handleEntityNotFound(_0x8c316e,null))[_0x5f71('0x22')](function(_0x58966f){if(_0x58966f){return db[_0x5f71('0x25')][_0x5f71('0x4a')](_[_0x5f71('0x33')](_0x445cf3[_0x5f71('0x3e')],[_0x5f71('0x40'),_0x5f71('0x4b'),'description',_0x5f71('0x4c'),'cutdigits',_0x5f71('0x4d'),_0x5f71('0x4e')]),{'where':{'context':_0x58966f[_0x5f71('0x4b')],'exten':_0x58966f[_0x5f71('0x40')]},'individualHooks':!![]})[_0x5f71('0x22')](function(_0xc9e2fa){return _0xc9e2fa;});}return null;})[_0x5f71('0x22')](respondWithStatusCode(_0x8c316e,null))[_0x5f71('0x39')](handleError(_0x8c316e,null));};exports[_0x5f71('0x4f')]=function(_0x3748f8,_0x18e701){var _0x4a5cde=_0x3748f8[_0x5f71('0x3a')]['id'];var _0x300740=_0x3748f8[_0x5f71('0x3e')];var _0x5bb901=0xc8;var _0x58b099=null;return db[_0x5f71('0x50')]['transaction']({'isolationLevel':db['sequelize'][_0x5f71('0x51')][_0x5f71('0x52')][_0x5f71('0x53')]},function(_0x3c3791){return db[_0x5f71('0x25')]['findOne']({'where':{'id':_0x4a5cde},'transaction':_0x3c3791})[_0x5f71('0x22')](function(_0x592221){if(_0x592221){return db['VoiceExtension'][_0x5f71('0x21')]({'where':{'VoiceExtensionId':_0x4a5cde},'transaction':_0x3c3791})[_0x5f71('0x22')](function(){var _0x1b8601=_[_0x5f71('0x1b')](_0x300740,function(_0x34c7d8){_0x34c7d8['VoiceExtensionId']=_0x4a5cde;_0x34c7d8[_0x5f71('0x54')]=!![];return _0x34c7d8;});return _0x592221['createRouting'](_0x1b8601);})['then'](function(_0xf1f794){return db[_0x5f71('0x25')][_0x5f71('0x55')](_0xf1f794,{'transaction':_0x3c3791});});}else{_0x5bb901=0x194;_0x58b099=[];}});})[_0x5f71('0x22')](function(){if(_0x5bb901!==0x194){return db[_0x5f71('0x25')][_0x5f71('0x56')]({'where':{'isApp':!![],'VoiceExtensionId':_0x4a5cde},'order':'cast(priority\x20as\x20unsigned)'})[_0x5f71('0x22')](function(_0x1e94b7){_0x58b099=_0x1e94b7;});}})[_0x5f71('0x39')](function(_0x47a304){_0x5bb901=0x1f4;logger[_0x5f71('0x48')](_0x47a304['stack']);if(_0x47a304[_0x5f71('0x20')]){delete _0x47a304[_0x5f71('0x20')];}_0x58b099=_0x47a304;})['finally'](function(){if(_0x58b099===null){_0x18e701[_0x5f71('0x9')](_0x5bb901);}else{if(_0x5bb901===0x1f4){_0x18e701[_0x5f71('0xa')](_0x5bb901)[_0x5f71('0x57')](_0x58b099);}else{_0x18e701[_0x5f71('0xa')](_0x5bb901)['json'](_0x58b099);}}});};
\ No newline at end of file
+var _0x3c3c=['findAndCountAll','cast(priority\x20as\x20unsigned)','finally','sendStatus','send','lodash','ioredis','api','../../mysqldb','redis','defaults','socket.io-emitter','register','status','end','offset','undefined','limit','count','Content-Range','json','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','ignore','includes','type','value','error','stack','name','index','map','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','include','rows','catch','params','find','create','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','pick','context','recordingFormat','cutdigits','alias','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','isApp','createRouting','bulkCreate'];(function(_0x4d0b58,_0x4e6151){var _0x2f1853=function(_0x4ecdcb){while(--_0x4ecdcb){_0x4d0b58['push'](_0x4d0b58['shift']());}};_0x2f1853(++_0x4e6151);}(_0x3c3c,0x16d));var _0xc3c3=function(_0x332bee,_0x515df2){_0x332bee=_0x332bee-0x0;var _0x194f1c=_0x3c3c[_0x332bee];return _0x194f1c;};'use strict';var _=require(_0xc3c3('0x0'));var Redis=require(_0xc3c3('0x1'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xc3c3('0x2'));var config=require('../../config/environment');var db=require(_0xc3c3('0x3'))['db'];config[_0xc3c3('0x4')]=_[_0xc3c3('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc3c3('0x6'))(new Redis(config['redis']));require('./voiceExtension.socket')[_0xc3c3('0x7')](socket);function respondWithStatusCode(_0x3e7628,_0x3574d9){_0x3574d9=_0x3574d9||0xcc;return function(_0x3bd1be){if(_0x3bd1be){return _0x3e7628['sendStatus'](_0x3574d9);}return _0x3e7628[_0xc3c3('0x8')](_0x3574d9)[_0xc3c3('0x9')]();};}function respondWithResult(_0x3ca917,_0x329f2e){_0x329f2e=_0x329f2e||0xc8;return function(_0x1724e8){if(_0x1724e8){return _0x3ca917[_0xc3c3('0x8')](_0x329f2e)['json'](_0x1724e8);}};}function respondWithFilteredResult(_0x158407,_0x17779d){return function(_0x1cb830){if(_0x1cb830){var _0x5a69d8=typeof _0x17779d[_0xc3c3('0xa')]===_0xc3c3('0xb')&&typeof _0x17779d[_0xc3c3('0xc')]==='undefined';var _0x503013=_0x1cb830[_0xc3c3('0xd')];var _0x29f17a=_0x5a69d8?0x0:_0x17779d['offset'];var _0x40f9ce=_0x5a69d8?_0x1cb830['count']:_0x17779d['offset']+_0x17779d[_0xc3c3('0xc')];var _0x52300a;if(_0x40f9ce>=_0x503013){_0x40f9ce=_0x503013;_0x52300a=0xc8;}else{_0x52300a=0xce;}_0x158407['status'](_0x52300a);return _0x158407['set'](_0xc3c3('0xe'),_0x29f17a+'-'+_0x40f9ce+'/'+_0x503013)[_0xc3c3('0xf')](_0x1cb830);}return null;};}function removeEntity(_0x217214){return function(_0x11d3a2){if(_0x11d3a2){return _0x11d3a2[_0xc3c3('0x10')]()[_0xc3c3('0x11')](function(){var _0x46863f=_0x11d3a2[_0xc3c3('0x12')]({'plain':!![]});var _0x17b6c4=[{'name':_0xc3c3('0x13'),'value':_0xc3c3('0x14'),'ignore':![]},{'name':_0xc3c3('0x15'),'value':_0xc3c3('0x16'),'ignore':![]},{'name':_0xc3c3('0x17'),'value':_0xc3c3('0x18'),'ignore':![]}];var _0x489604=_(_0x17b6c4)['filter'](_0xc3c3('0x19'))['map']('value')['value']();if(_[_0xc3c3('0x1a')](_0x489604,_0x46863f[_0xc3c3('0x1b')])){return;}var _0x147121=_['find'](_0x17b6c4,[_0xc3c3('0x1c'),_0x46863f[_0xc3c3('0x1b')]])['name'];return db['UserProfileResource'][_0xc3c3('0x10')]({'where':{'type':_0x147121,'resourceId':_0x46863f['id']}})[_0xc3c3('0x11')](function(){return _0x11d3a2;});})[_0xc3c3('0x11')](function(){_0x217214['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x39ee03){return function(_0xb591ec){if(!_0xb591ec){_0x39ee03['sendStatus'](0x194);}return _0xb591ec;};}function handleError(_0x49d9d7,_0x442c33){_0x442c33=_0x442c33||0x1f4;return function(_0x515c39){logger[_0xc3c3('0x1d')](_0x515c39[_0xc3c3('0x1e')]);if(_0x515c39[_0xc3c3('0x1f')]){delete _0x515c39[_0xc3c3('0x1f')];}_0x49d9d7[_0xc3c3('0x8')](_0x442c33)['send'](_0x515c39);};}exports[_0xc3c3('0x20')]=function(_0x2f9f0f,_0x130b3c){var _0x940060={},_0x2ee08d={},_0x4f26d0={'count':0x0,'rows':[]};var _0x2cf7f7=_[_0xc3c3('0x21')](db[_0xc3c3('0x22')][_0xc3c3('0x23')],function(_0x314b4d){return{'name':_0x314b4d[_0xc3c3('0x24')],'type':_0x314b4d[_0xc3c3('0x1b')][_0xc3c3('0x25')]};});_0x2ee08d[_0xc3c3('0x26')]=_['map'](_0x2cf7f7,_0xc3c3('0x1f'));_0x2ee08d[_0xc3c3('0x27')]=_[_0xc3c3('0x28')](_0x2f9f0f[_0xc3c3('0x27')]);_0x2ee08d[_0xc3c3('0x29')]=_[_0xc3c3('0x2a')](_0x2ee08d['model'],_0x2ee08d[_0xc3c3('0x27')]);_0x940060[_0xc3c3('0x2b')]=_[_0xc3c3('0x2a')](_0x2ee08d[_0xc3c3('0x26')],qs[_0xc3c3('0x2c')](_0x2f9f0f['query'][_0xc3c3('0x2c')]));_0x940060['attributes']=_0x940060['attributes'][_0xc3c3('0x2d')]?_0x940060[_0xc3c3('0x2b')]:_0x2ee08d[_0xc3c3('0x26')];if(!_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0x2e')]('nolimit')){_0x940060[_0xc3c3('0xc')]=qs[_0xc3c3('0xc')](_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0xc')]);_0x940060[_0xc3c3('0xa')]=qs[_0xc3c3('0xa')](_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0xa')]);}_0x940060[_0xc3c3('0x2f')]=qs['sort'](_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0x30')]);_0x940060[_0xc3c3('0x31')]=qs[_0xc3c3('0x29')](_['pick'](_0x2f9f0f[_0xc3c3('0x27')],_0x2ee08d[_0xc3c3('0x29')]),_0x2cf7f7);if(_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0x32')]){_0x940060[_0xc3c3('0x31')]=_['merge'](_0x940060[_0xc3c3('0x31')],{'$or':_[_0xc3c3('0x21')](_0x2cf7f7,function(_0x146b2e){if(_0x146b2e[_0xc3c3('0x1b')]!=='VIRTUAL'){var _0x133405={};_0x133405[_0x146b2e[_0xc3c3('0x1f')]]={'$like':'%'+_0x2f9f0f['query'][_0xc3c3('0x32')]+'%'};return _0x133405;}})});}_0x940060=_[_0xc3c3('0x33')]({},_0x940060,_0x2f9f0f[_0xc3c3('0x34')]);var _0x417e98={'where':_0x940060['where']};return db['VoiceExtension'][_0xc3c3('0xd')](_0x417e98)['then'](function(_0x3f68fe){_0x4f26d0['count']=_0x3f68fe;if(_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0x35')]){_0x940060[_0xc3c3('0x36')]=[{'all':!![]}];}return db['VoiceExtension']['findAll'](_0x940060);})[_0xc3c3('0x11')](function(_0x4eebcf){_0x4f26d0[_0xc3c3('0x37')]=_0x4eebcf;return _0x4f26d0;})[_0xc3c3('0x11')](respondWithFilteredResult(_0x130b3c,_0x940060))[_0xc3c3('0x38')](handleError(_0x130b3c,null));};exports['show']=function(_0x46f678,_0x52dac1){var _0x5aa690={'raw':![],'where':{'id':_0x46f678[_0xc3c3('0x39')]['id']}},_0x4a19a2={};_0x4a19a2[_0xc3c3('0x26')]=_[_0xc3c3('0x28')](db['VoiceExtension'][_0xc3c3('0x23')]);_0x4a19a2[_0xc3c3('0x27')]=_[_0xc3c3('0x28')](_0x46f678['query']);_0x4a19a2[_0xc3c3('0x29')]=_['intersection'](_0x4a19a2[_0xc3c3('0x26')],_0x4a19a2[_0xc3c3('0x27')]);_0x5aa690['attributes']=_[_0xc3c3('0x2a')](_0x4a19a2[_0xc3c3('0x26')],qs[_0xc3c3('0x2c')](_0x46f678['query'][_0xc3c3('0x2c')]));_0x5aa690[_0xc3c3('0x2b')]=_0x5aa690[_0xc3c3('0x2b')][_0xc3c3('0x2d')]?_0x5aa690[_0xc3c3('0x2b')]:_0x4a19a2['model'];if(_0x46f678[_0xc3c3('0x27')][_0xc3c3('0x35')]){_0x5aa690[_0xc3c3('0x36')]=[{'all':!![]}];}_0x5aa690=_[_0xc3c3('0x33')]({},_0x5aa690,_0x46f678[_0xc3c3('0x34')]);return db[_0xc3c3('0x22')][_0xc3c3('0x3a')](_0x5aa690)[_0xc3c3('0x11')](handleEntityNotFound(_0x52dac1,null))['then'](respondWithResult(_0x52dac1,null))[_0xc3c3('0x38')](handleError(_0x52dac1,null));};exports['destroy']=function(_0x2b6f22,_0x563389){return db[_0xc3c3('0x22')][_0xc3c3('0x3a')]({'where':{'id':_0x2b6f22[_0xc3c3('0x39')]['id']}})[_0xc3c3('0x11')](handleEntityNotFound(_0x563389,null))[_0xc3c3('0x11')](removeEntity(_0x563389,null))['catch'](handleError(_0x563389,null));};exports[_0xc3c3('0x3b')]=function(_0x28f153,_0x5b2722){if(_0x28f153[_0xc3c3('0x3c')]['type']===_0xc3c3('0x16')&&!_[_0xc3c3('0x3d')](_0x28f153[_0xc3c3('0x3c')][_0xc3c3('0x3e')],'_')){_0x28f153[_0xc3c3('0x3c')]['exten']='_'[_0xc3c3('0x3f')](_0x28f153[_0xc3c3('0x3c')][_0xc3c3('0x3e')]);}return db['VoiceExtension'][_0xc3c3('0x3b')](_0x28f153[_0xc3c3('0x3c')],{'raw':![]})[_0xc3c3('0x11')](function(_0x13132d){var _0x5d9320=_0x28f153[_0xc3c3('0x40')][_0xc3c3('0x12')]({'plain':!![]});if(!_0x5d9320)throw new Error(_0xc3c3('0x41'));if(_0x5d9320[_0xc3c3('0x42')]==='user'){var _0x1adf29=_0x13132d[_0xc3c3('0x12')]({'plain':!![]});var _0x1068ce=[{'name':'InboundRoutes','value':'inbound'},{'name':_0xc3c3('0x15'),'value':_0xc3c3('0x16')},{'name':_0xc3c3('0x17'),'value':'internal'}];var _0x5c8932=_[_0xc3c3('0x3a')](_0x1068ce,[_0xc3c3('0x1c'),_0x1adf29[_0xc3c3('0x1b')]])[_0xc3c3('0x1f')];return db[_0xc3c3('0x43')][_0xc3c3('0x3a')]({'where':{'name':_0x5c8932,'userProfileId':_0x5d9320['userProfileId']},'raw':!![]})[_0xc3c3('0x11')](function(_0x1b172e){if(_0x1b172e&&_0x1b172e[_0xc3c3('0x44')]===0x0){return db['UserProfileResource'][_0xc3c3('0x3b')]({'name':_0x1adf29[_0xc3c3('0x1f')],'resourceId':_0x1adf29['id'],'type':_0x1b172e['name'],'sectionId':_0x1b172e['id']},{})[_0xc3c3('0x11')](function(){return _0x13132d;});}else{return _0x13132d;}})[_0xc3c3('0x38')](function(_0x2d5309){logger[_0xc3c3('0x1d')](_0xc3c3('0x45'),_0x2d5309);throw _0x2d5309;});}return _0x13132d;})['then'](respondWithResult(_0x5b2722,0xc9))[_0xc3c3('0x38')](handleError(_0x5b2722,null));};exports[_0xc3c3('0x46')]=function(_0x444be1,_0x154614){if(_0x444be1[_0xc3c3('0x3c')]['id']){delete _0x444be1[_0xc3c3('0x3c')]['id'];}return db[_0xc3c3('0x22')]['find']({'where':{'id':_0x444be1['params']['id']}})[_0xc3c3('0x11')](handleEntityNotFound(_0x154614,null))['then'](function(_0x453cd5){if(_0x453cd5){return db['VoiceExtension']['update'](_[_0xc3c3('0x47')](_0x444be1[_0xc3c3('0x3c')],[_0xc3c3('0x3e'),_0xc3c3('0x48'),'description',_0xc3c3('0x49'),_0xc3c3('0x4a'),'mandatoryDisposition',_0xc3c3('0x4b')]),{'where':{'context':_0x453cd5[_0xc3c3('0x48')],'exten':_0x453cd5[_0xc3c3('0x3e')]},'individualHooks':!![]})[_0xc3c3('0x11')](function(_0x256051){return _0x256051;});}return null;})[_0xc3c3('0x11')](respondWithStatusCode(_0x154614,null))[_0xc3c3('0x38')](handleError(_0x154614,null));};exports[_0xc3c3('0x4c')]=function(_0x1a5af0,_0x44fa30){var _0x323b08=_0x1a5af0['params']['id'];var _0x1cd58e=_0x1a5af0[_0xc3c3('0x3c')];var _0x16cd0e=0xc8;var _0x433c72=null;return db['sequelize']['transaction']({'isolationLevel':db[_0xc3c3('0x4d')][_0xc3c3('0x4e')][_0xc3c3('0x4f')][_0xc3c3('0x50')]},function(_0x593322){return db[_0xc3c3('0x22')][_0xc3c3('0x51')]({'where':{'id':_0x323b08},'transaction':_0x593322})[_0xc3c3('0x11')](function(_0x2b0591){if(_0x2b0591){return db['VoiceExtension'][_0xc3c3('0x10')]({'where':{'VoiceExtensionId':_0x323b08},'transaction':_0x593322})[_0xc3c3('0x11')](function(){var _0x88c427=_[_0xc3c3('0x21')](_0x1cd58e,function(_0x5f13d3){_0x5f13d3['VoiceExtensionId']=_0x323b08;_0x5f13d3[_0xc3c3('0x52')]=!![];return _0x5f13d3;});return _0x2b0591[_0xc3c3('0x53')](_0x88c427);})[_0xc3c3('0x11')](function(_0x217c66){return db['VoiceExtension'][_0xc3c3('0x54')](_0x217c66,{'transaction':_0x593322});});}else{_0x16cd0e=0x194;_0x433c72=[];}});})['then'](function(){if(_0x16cd0e!==0x194){return db['VoiceExtension'][_0xc3c3('0x55')]({'where':{'isApp':!![],'VoiceExtensionId':_0x323b08},'order':_0xc3c3('0x56')})[_0xc3c3('0x11')](function(_0x19531c){_0x433c72=_0x19531c;});}})[_0xc3c3('0x38')](function(_0x1530c4){_0x16cd0e=0x1f4;logger[_0xc3c3('0x1d')](_0x1530c4[_0xc3c3('0x1e')]);if(_0x1530c4[_0xc3c3('0x1f')]){delete _0x1530c4[_0xc3c3('0x1f')];}_0x433c72=_0x1530c4;})[_0xc3c3('0x57')](function(){if(_0x433c72===null){_0x44fa30[_0xc3c3('0x58')](_0x16cd0e);}else{if(_0x16cd0e===0x1f4){_0x44fa30[_0xc3c3('0x8')](_0x16cd0e)[_0xc3c3('0x59')](_0x433c72);}else{_0x44fa30['status'](_0x16cd0e)[_0xc3c3('0xf')](_0x433c72);}}});};
\ No newline at end of file
index 39338b7..d52edaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2499=['../../mysqldb','setMaxListeners','update','remove','hasOwnProperty','hook','exports','events'];(function(_0x1e44d2,_0x1f0458){var _0x14f8f4=function(_0x5904e3){while(--_0x5904e3){_0x1e44d2['push'](_0x1e44d2['shift']());}};_0x14f8f4(++_0x1f0458);}(_0x2499,0xff));var _0x9249=function(_0xc27c89,_0x198b53){_0xc27c89=_0xc27c89-0x0;var _0x27326f=_0x2499[_0xc27c89];return _0x27326f;};'use strict';var EventEmitter=require(_0x9249('0x0'));var VoiceExtension=require(_0x9249('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x9249('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9249('0x3'),'afterDestroy':_0x9249('0x4')};function emitEvent(_0x64eb9f){return function(_0x354b19,_0x5886b6,_0x3afd6b){VoiceExtensionEvents['emit'](_0x64eb9f+':'+_0x354b19['id'],_0x354b19);VoiceExtensionEvents['emit'](_0x64eb9f,_0x354b19);_0x3afd6b(null);};}for(var e in events){if(events[_0x9249('0x5')](e)){var event=events[e];VoiceExtension[_0x9249('0x6')](e,emitEvent(event));}}module[_0x9249('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x732a=['save','update','remove','emit','hasOwnProperty','hook','../../mysqldb','VoiceExtension'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x732a,0x8e));var _0xa732=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0x732a[_0x5a9c0c];return _0x53c77d;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0xa732('0x0'))['db'][_0xa732('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa732('0x2'),'afterUpdate':_0xa732('0x3'),'afterDestroy':_0xa732('0x4')};function emitEvent(_0x36019a){return function(_0x47fd59,_0xa7fd60,_0x27b2fb){VoiceExtensionEvents[_0xa732('0x5')](_0x36019a+':'+_0x47fd59['id'],_0x47fd59);VoiceExtensionEvents['emit'](_0x36019a,_0x47fd59);_0x27b2fb(null);};}for(var e in events){if(events[_0xa732('0x6')](e)){var event=events[e];VoiceExtension[_0xa732('0x7')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
index 42f7049..831225e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1040=['hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','options','url','split','name','trunk','param','phone','prefix','${EXTEN}','SIP','join','indexOf','U(xcally-mixmonitor-context)','isEmpty','Interval','findAll','length','interval','intervals','IntervalId','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','app','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','splice','GotoIfTime','appType','appdata','agi','XMCS-UNIQUEID=${CHANNEL(LINKEDID)}','last','priority','concat','catch','VoiceExtension','voice_extensions','get','then','lodash','./voiceExtension.attributes','exports','models','CDR(type)=','context','type','alias','Set','NoOp','No\x20alias\x20set','exten','inbound','CDR(routeid)=','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(routeAlias)=','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=noprefix','outboundrouteid='];(function(_0x4ccbe2,_0x11eacf){var _0x134525=function(_0x5c9da9){while(--_0x5c9da9){_0x4ccbe2['push'](_0x4ccbe2['shift']());}};_0x134525(++_0x11eacf);}(_0x1040,0x116));var _0x0104=function(_0x470212,_0x1387de){_0x470212=_0x470212-0x0;var _0x5083cb=_0x1040[_0x470212];return _0x5083cb;};'use strict';var _=require(_0x0104('0x0'));var attributes=require(_0x0104('0x1'));module[_0x0104('0x2')]=function(_0x598df8){var _0x2e31e4=_0x598df8[_0x0104('0x3')];function _0x5315d1(_0x248027){var _0x3e942b=0x2;var _0x58016b=[{'type':_0x248027['type'],'app':'Set','appdata':_0x0104('0x4')+_0x248027['type'],'context':_0x248027[_0x0104('0x5')],'exten':_0x248027['exten'],'priority':_0x3e942b++,'VoiceExtensionId':_0x248027['id']},{'type':_0x248027[_0x0104('0x6')],'app':_0x248027[_0x0104('0x7')]?_0x0104('0x8'):_0x0104('0x9'),'appdata':_0x248027[_0x0104('0x7')]?'CDR(routeAlias)='+_0x248027[_0x0104('0x7')]:_0x0104('0xa'),'context':_0x248027[_0x0104('0x5')],'exten':_0x248027[_0x0104('0xb')],'priority':_0x3e942b++,'VoiceExtensionId':_0x248027['id']}];if(_0x248027[_0x0104('0x6')]==='inbound'){_0x58016b['push']({'type':_0x0104('0xc'),'app':_0x0104('0x8'),'appdata':_0x0104('0xd')+_0x248027['id'],'context':_0x248027[_0x0104('0x5')],'exten':_0x248027[_0x0104('0xb')],'priority':_0x3e942b++,'VoiceExtensionId':_0x248027['id']});}_0x58016b[_0x0104('0xe')]({'type':_0x248027[_0x0104('0x6')],'app':_0x0104('0x8'),'appdata':_0x0104('0xf'),'context':_0x248027['context'],'exten':_0x248027['exten'],'priority':_0x3e942b++,'VoiceExtensionId':_0x248027['id']},{'type':_0x248027[_0x0104('0x6')],'app':_0x0104('0x8'),'appdata':_0x0104('0x10'),'context':_0x248027[_0x0104('0x5')],'exten':_0x248027['exten'],'priority':_0x3e942b++,'VoiceExtensionId':_0x248027['id']},{'type':_0x248027['type'],'app':_0x0104('0x8'),'appdata':_0x0104('0x11'),'context':_0x248027[_0x0104('0x5')],'exten':_0x248027[_0x0104('0xb')],'priority':_0x3e942b++,'VoiceExtensionId':_0x248027['id']});return _0x58016b;}function _0x9f3b7e(_0x54e69f){var _0x5ea249=0x2;var _0x39bc4d=[{'type':_0x0104('0x12'),'app':_0x0104('0x8'),'appdata':'CDR(type)=outbound','context':_0x54e69f['context'],'exten':_0x54e69f[_0x0104('0xb')],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']},{'type':_0x0104('0x12'),'app':_0x54e69f[_0x0104('0x7')]?_0x0104('0x8'):'NoOp','appdata':_0x54e69f[_0x0104('0x7')]?_0x0104('0x13')+_0x54e69f[_0x0104('0x7')]:'No\x20alias\x20set','context':_0x54e69f[_0x0104('0x5')],'exten':_0x54e69f['exten'],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']},{'type':'outbound','app':_0x0104('0x8'),'appdata':'CDR(destination)='+(_0x54e69f[_0x0104('0x14')]?_0x0104('0x15')+_0x54e69f[_0x0104('0x14')]+'}':'${EXTEN}'),'context':_0x54e69f['context'],'exten':_0x54e69f['exten'],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']},{'type':_0x0104('0x12'),'app':_0x0104('0x8'),'appdata':_0x0104('0xd')+_0x54e69f['id'],'context':_0x54e69f[_0x0104('0x5')],'exten':_0x54e69f[_0x0104('0xb')],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']},{'type':_0x0104('0x12'),'app':_0x0104('0x16'),'appdata':_0x0104('0x17')+(_0x5ea249+0x2)+'):Goto('+(_0x5ea249+0x1)+')','context':_0x54e69f[_0x0104('0x5')],'exten':_0x54e69f[_0x0104('0xb')],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']},{'type':'outbound','app':_0x0104('0x8'),'appdata':_0x54e69f['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0x54e69f[_0x0104('0x14')]+'}':_0x0104('0x18'),'context':_0x54e69f[_0x0104('0x5')],'exten':_0x54e69f[_0x0104('0xb')],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']},{'type':_0x0104('0x12'),'app':_0x0104('0x8'),'appdata':_0x0104('0xf'),'context':_0x54e69f[_0x0104('0x5')],'exten':_0x54e69f[_0x0104('0xb')],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']},{'type':_0x0104('0x12'),'app':_0x0104('0x8'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x54e69f[_0x0104('0x5')],'exten':_0x54e69f['exten'],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']},{'type':_0x0104('0x12'),'app':'Set','appdata':_0x0104('0x11'),'context':_0x54e69f[_0x0104('0x5')],'exten':_0x54e69f['exten'],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']},{'type':_0x0104('0x12'),'app':_0x0104('0x8'),'appdata':_0x0104('0x19')+_0x54e69f['id'],'context':_0x54e69f[_0x0104('0x5')],'exten':_0x54e69f[_0x0104('0xb')],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']}];if(_0x54e69f[_0x0104('0x1a')](_0x0104('0x1b'))&&_0x54e69f[_0x0104('0x1b')]!=='none'){_0x39bc4d['push']({'type':'outbound','app':_0x0104('0x8'),'appdata':_0x0104('0x1c'),'context':_0x54e69f[_0x0104('0x5')],'exten':_0x54e69f[_0x0104('0xb')],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']},{'type':'outbound','app':'Set','appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x54e69f['recordingFormat']||_0x0104('0x1d'),'context':_0x54e69f[_0x0104('0x5')],'exten':_0x54e69f[_0x0104('0xb')],'priority':_0x5ea249++,'VoiceExtensionId':_0x54e69f['id']});}return _0x39bc4d;}function _0x1242c3(_0x1c00a7,_0x10f1f){var _0x39a45d=[{'name':'trunk','param':0x0},{'name':'timeout','param':0x1},{'name':_0x0104('0x1e'),'param':0x2},{'name':_0x0104('0x1f'),'param':0x3}];var _0x2c9832={};var _0xed6661=_0x10f1f[_0x0104('0x20')](',');var _0x27ba27=[];for(var _0x3a5644=0x0;_0x3a5644<_0x39a45d['length'];_0x3a5644++){switch(_0x39a45d[_0x3a5644][_0x0104('0x21')]){case _0x0104('0x22'):_0x2c9832[_0x0104('0x22')]=_0xed6661[_0x39a45d[_0x3a5644][_0x0104('0x23')]][_0x0104('0x20')]('/')[0x1];_0x2c9832[_0x0104('0x24')]=_0xed6661[_0x39a45d[_0x3a5644][_0x0104('0x23')]][_0x0104('0x20')]('/')[0x2];_0x2c9832[_0x0104('0x25')]=_0x2c9832[_0x0104('0x24')]?_0x2c9832[_0x0104('0x24')][_0x0104('0x20')]('$')[0x0]:undefined;_0x2c9832[_0x0104('0x24')]=_0x1c00a7[_0x0104('0x14')]?(_0x2c9832['prefix']||'')+'${EXTEN:'+_0x1c00a7[_0x0104('0x14')]+'}':(_0x2c9832[_0x0104('0x25')]||'')+_0x0104('0x26');_0x27ba27[_0x39a45d[_0x3a5644]['param']]=[_0x0104('0x27'),_0x2c9832[_0x0104('0x22')],_0x2c9832[_0x0104('0x24')]][_0x0104('0x28')]('/');break;case'options':_0x2c9832['options']=_0xed6661[_0x39a45d[_0x3a5644][_0x0104('0x23')]];if(_0x1c00a7['recordingFormat']!=='none'){if(_0x2c9832[_0x0104('0x1e')][_0x0104('0x29')](_0x0104('0x2a'))<0x0){_0x2c9832[_0x0104('0x1e')]+=_0x0104('0x2a');}}else{_0x2c9832[_0x0104('0x1e')]=_0x2c9832[_0x0104('0x1e')]['replace'](_0x0104('0x2a'),'');}_0x27ba27[_0x39a45d[_0x3a5644][_0x0104('0x23')]]=_0x2c9832[_0x0104('0x1e')];break;default:_0x27ba27[_0x39a45d[_0x3a5644][_0x0104('0x23')]]=_0xed6661[_0x39a45d[_0x3a5644]['param']];}}return _0x27ba27['join'](',');}function _0x476dd6(_0x50cd74,_0x5d9038,_0x3b2fa6){return new Promise(function(_0x351701,_0x45ed82){var _0x71b737=[];if(_[_0x0104('0x2b')](_0x5d9038))return _0x351701(_0x71b737);_0x2e31e4[_0x0104('0x2c')][_0x0104('0x2d')]({'attributes':['id','interval','IntervalId'],'raw':!![]})['then'](function(_0x2a8308){for(var _0xb2648d=0x0,_0x1c8d76=0x0;_0xb2648d<_0x5d9038[_0x0104('0x2e')];_0xb2648d++,_0x1c8d76=0x0){var _0x2212c8=_0x5d9038[_0xb2648d];var _0x4d24ad=[];var _0x4e8b9a=[];delete _0x2212c8['id'];if(_0x2212c8[_0x0104('0x2f')]!=='*,*,*,*'){_0x2212c8[_0x0104('0x30')]=[_0x2212c8['interval']];}else{_0x2212c8[_0x0104('0x30')]=_0x2212c8['IntervalId']?_['map'](_['filter'](_0x2a8308,{'IntervalId':_0x2212c8[_0x0104('0x31')]}),_0x0104('0x2f')):[];}_0x2212c8[_0x0104('0x5')]=_0x50cd74[_0x0104('0x5')];_0x2212c8[_0x0104('0xb')]=_0x50cd74[_0x0104('0xb')];if(_0x2212c8[_0x0104('0x6')])_0x2212c8[_0x0104('0x6')]=_0x2212c8[_0x0104('0x6')][_0x0104('0x32')]();if(_0x50cd74[_0x0104('0x6')]==='outbound'){if(_0x2212c8[_0x0104('0x1a')](_0x0104('0x33'))&&_0x2212c8['tag']&&_0x2212c8[_0x0104('0x33')]!=='--'){_0x4d24ad[_0x0104('0xe')]({'type':_0x2212c8[_0x0104('0x6')][_0x0104('0x32')](),'app':'Set','appdata':_0x0104('0x34')+_0x2212c8[_0x0104('0x33')],'context':_0x50cd74[_0x0104('0x5')],'exten':_0x50cd74[_0x0104('0xb')],'priority':_0x2212c8[_0x0104('0x30')][_0x0104('0x2e')]+_0x3b2fa6+_0x1c8d76++,'VoiceExtensionId':_0x50cd74['id']});}_0x4d24ad[_0x0104('0xe')]({'type':_0x2212c8[_0x0104('0x6')][_0x0104('0x32')](),'app':'ExecIf','appdata':_0x0104('0x35')+(_0x2212c8[_0x0104('0x36')]?_0x0104('0x37')+_0x2212c8['callerID']+')':_0x0104('0x38')),'context':_0x50cd74[_0x0104('0x5')],'exten':_0x50cd74['exten'],'priority':_0x2212c8[_0x0104('0x30')][_0x0104('0x2e')]+_0x3b2fa6+_0x1c8d76++,'VoiceExtensionId':_0x50cd74['id']});}else{if(_0x2212c8[_0x0104('0x1a')](_0x0104('0x39'))){if([_0x0104('0x3a'),'playback']['includes'](_0x2212c8[_0x0104('0x3b')][_0x0104('0x32')]())&&_0x2212c8['appType']!==_0x0104('0x3c')){if(_0x2212c8[_0x0104('0x39')]){_0x4d24ad[_0x0104('0xe')]({'type':_0x2212c8[_0x0104('0x6')][_0x0104('0x32')](),'app':_0x0104('0x16'),'appdata':_0x0104('0x3d'),'context':_0x50cd74[_0x0104('0x5')],'exten':_0x50cd74['exten'],'priority':_0x2212c8[_0x0104('0x30')][_0x0104('0x2e')]+_0x3b2fa6+_0x1c8d76++,'VoiceExtensionId':_0x50cd74['id']});_0x4d24ad[_0x0104('0xe')]({'type':_0x2212c8['type'][_0x0104('0x32')](),'app':_0x0104('0x8'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x50cd74[_0x0104('0x5')],'exten':_0x50cd74['exten'],'priority':_0x2212c8[_0x0104('0x30')][_0x0104('0x2e')]+_0x3b2fa6+_0x1c8d76++,'VoiceExtensionId':_0x50cd74['id']});}else{_0x4d24ad[_0x0104('0xe')]({'type':_0x2212c8[_0x0104('0x6')][_0x0104('0x32')](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x50cd74[_0x0104('0x5')],'exten':_0x50cd74[_0x0104('0xb')],'priority':_0x2212c8[_0x0104('0x30')][_0x0104('0x2e')]+_0x3b2fa6+_0x1c8d76++,'VoiceExtensionId':_0x50cd74['id']});_0x4d24ad['push']({'type':_0x2212c8[_0x0104('0x6')][_0x0104('0x32')](),'app':_0x0104('0x8'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x50cd74[_0x0104('0x5')],'exten':_0x50cd74[_0x0104('0xb')],'priority':_0x2212c8[_0x0104('0x30')][_0x0104('0x2e')]+_0x3b2fa6+_0x1c8d76++,'VoiceExtensionId':_0x50cd74['id']});}}}}for(var _0xbb3a81=0x0;_0xbb3a81<_0x2212c8[_0x0104('0x30')][_0x0104('0x2e')];_0xbb3a81++){var _0x15bc66=_0x3b2fa6+_0x2212c8['intervals']['length'];var _0x230947=_0xbb3a81===_0x2212c8[_0x0104('0x30')]['length']-0x1?_0x3b2fa6+_0x4d24ad['length']+_0x4e8b9a[_0x0104('0x2e')]+0x2:_0x3b2fa6+_0xbb3a81+0x1;_0x4d24ad[_0x0104('0x3e')](_0xbb3a81,0x0,{'type':_0x50cd74['type'],'app':_0x0104('0x3f'),'appdata':_0x2212c8[_0x0104('0x30')][_0xbb3a81]+'?'+_0x50cd74['context']+',${EXTEN},'+_0x15bc66+':'+_0x50cd74[_0x0104('0x5')]+',${EXTEN},'+_0x230947,'exten':_0x50cd74[_0x0104('0xb')],'context':_0x50cd74[_0x0104('0x5')],'priority':_0x3b2fa6+_0xbb3a81,'VoiceExtensionId':_0x50cd74['id']});}if(_0x2212c8[_0x0104('0x40')]==='outboundDial'){_0x2212c8[_0x0104('0x41')]=_0x1242c3(_0x50cd74,_0x2212c8['appdata']);}if(_0x2212c8[_0x0104('0x40')]===_0x0104('0x42')){_0x4d24ad[_0x0104('0xe')]({'type':_0x2212c8[_0x0104('0x6')][_0x0104('0x32')](),'app':_0x0104('0x8'),'appdata':_0x0104('0x43'),'context':_0x50cd74[_0x0104('0x5')],'exten':_0x50cd74[_0x0104('0xb')],'priority':_0x2212c8[_0x0104('0x30')][_0x0104('0x2e')]+_0x3b2fa6+_0x1c8d76++,'VoiceExtensionId':_0x50cd74['id']});}_0x2212c8['priority']=_0x4d24ad['length']?_[_0x0104('0x44')](_0x4d24ad)[_0x0104('0x45')]+0x1:_0x3b2fa6;_0x71b737=_[_0x0104('0x46')](_0x71b737,_0x4d24ad,[_0x2212c8],_0x4e8b9a);_0x3b2fa6=_[_0x0104('0x44')](_0x71b737)['priority']+0x1;}return _0x351701(_0x71b737);})[_0x0104('0x47')](function(_0x3acef7){_0x45ed82(_0x3acef7);});});}return _0x598df8['define'](_0x0104('0x48'),attributes,{'tableName':_0x0104('0x49'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x2b6627){var _0x1835a9=this[_0x0104('0x4a')]({'plain':!![]});var _0x2d47b4=_0x1835a9[_0x0104('0x6')]==='outbound'?_0x9f3b7e(_0x1835a9):_0x5315d1(_0x1835a9);return _0x476dd6(_0x1835a9,_0x2b6627,_[_0x0104('0x44')](_0x2d47b4)[_0x0104('0x45')]+0x1)[_0x0104('0x4b')](function(_0x33d9cc){var _0x384b20=_[_0x0104('0x46')](_0x2d47b4,_0x33d9cc);_0x384b20[_0x0104('0xe')]({'type':_0x1835a9[_0x0104('0x6')],'app':'Hangup','exten':_0x1835a9['exten'],'context':_0x1835a9[_0x0104('0x5')],'priority':_['last'](_0x384b20)[_0x0104('0x45')]+0x1,'VoiceExtensionId':_0x1835a9['id']});return _0x384b20;});}}});};
\ No newline at end of file
+var _0xea3a=['exten','alias','NoOp','CDR(routeAlias)=','inbound','push','CDR(routeid)=','context','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','No\x20alias\x20set','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','length','name','param','split','prefix','phone','SIP','join','none','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','interval','IntervalId','*,*,*,*','intervals','map','filter','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','answer','queue','playback','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','appdata','agi','XMCS-UNIQUEID=${CHANNEL(LINKEDID)}','priority','last','concat','define','get','then','Hangup','lodash','./voiceExtension.attributes','exports','type','Set'];(function(_0x2f6799,_0x4e7f00){var _0x3cb26f=function(_0x3c5a3d){while(--_0x3c5a3d){_0x2f6799['push'](_0x2f6799['shift']());}};_0x3cb26f(++_0x4e7f00);}(_0xea3a,0x13f));var _0xaea3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xea3a[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xaea3('0x0'));var attributes=require(_0xaea3('0x1'));module[_0xaea3('0x2')]=function(_0xd282ef){var _0x6a9f2e=_0xd282ef['models'];function _0xe7afc5(_0x4be0a2){var _0x5b0ade=0x2;var _0x4844f5=[{'type':_0x4be0a2[_0xaea3('0x3')],'app':_0xaea3('0x4'),'appdata':'CDR(type)='+_0x4be0a2[_0xaea3('0x3')],'context':_0x4be0a2['context'],'exten':_0x4be0a2[_0xaea3('0x5')],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']},{'type':_0x4be0a2[_0xaea3('0x3')],'app':_0x4be0a2[_0xaea3('0x6')]?_0xaea3('0x4'):_0xaea3('0x7'),'appdata':_0x4be0a2['alias']?_0xaea3('0x8')+_0x4be0a2[_0xaea3('0x6')]:'No\x20alias\x20set','context':_0x4be0a2['context'],'exten':_0x4be0a2[_0xaea3('0x5')],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']}];if(_0x4be0a2[_0xaea3('0x3')]===_0xaea3('0x9')){_0x4844f5[_0xaea3('0xa')]({'type':_0xaea3('0x9'),'app':_0xaea3('0x4'),'appdata':_0xaea3('0xb')+_0x4be0a2['id'],'context':_0x4be0a2[_0xaea3('0xc')],'exten':_0x4be0a2[_0xaea3('0x5')],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']});}_0x4844f5[_0xaea3('0xa')]({'type':_0x4be0a2[_0xaea3('0x3')],'app':_0xaea3('0x4'),'appdata':_0xaea3('0xd'),'context':_0x4be0a2[_0xaea3('0xc')],'exten':_0x4be0a2['exten'],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']},{'type':_0x4be0a2['type'],'app':'Set','appdata':_0xaea3('0xe'),'context':_0x4be0a2[_0xaea3('0xc')],'exten':_0x4be0a2[_0xaea3('0x5')],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']},{'type':_0x4be0a2[_0xaea3('0x3')],'app':_0xaea3('0x4'),'appdata':_0xaea3('0xf'),'context':_0x4be0a2[_0xaea3('0xc')],'exten':_0x4be0a2['exten'],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']});return _0x4844f5;}function _0x4649e7(_0xd3c75b){var _0x1e76a2=0x2;var _0x37f3e0=[{'type':_0xaea3('0x10'),'app':_0xaea3('0x4'),'appdata':'CDR(type)=outbound','context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':_0xaea3('0x10'),'app':_0xd3c75b[_0xaea3('0x6')]?_0xaea3('0x4'):'NoOp','appdata':_0xd3c75b[_0xaea3('0x6')]?_0xaea3('0x8')+_0xd3c75b['alias']:_0xaea3('0x11'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':_0xaea3('0x10'),'app':'Set','appdata':'CDR(destination)='+(_0xd3c75b[_0xaea3('0x12')]?_0xaea3('0x13')+_0xd3c75b[_0xaea3('0x12')]+'}':_0xaea3('0x14')),'context':_0xd3c75b['context'],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':_0xaea3('0x10'),'app':_0xaea3('0x4'),'appdata':_0xaea3('0xb')+_0xd3c75b['id'],'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b['exten'],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':'outbound','app':_0xaea3('0x15'),'appdata':_0xaea3('0x16')+(_0x1e76a2+0x2)+_0xaea3('0x17')+(_0x1e76a2+0x1)+')','context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':_0xaea3('0x10'),'app':_0xaea3('0x4'),'appdata':_0xd3c75b['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0xd3c75b[_0xaea3('0x12')]+'}':_0xaea3('0x18'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':_0xaea3('0x10'),'app':'Set','appdata':_0xaea3('0xd'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':'outbound','app':_0xaea3('0x4'),'appdata':_0xaea3('0xe'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b['exten'],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':'outbound','app':_0xaea3('0x4'),'appdata':_0xaea3('0xf'),'context':_0xd3c75b['context'],'exten':_0xd3c75b['exten'],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':'outbound','app':_0xaea3('0x4'),'appdata':_0xaea3('0x19')+_0xd3c75b['id'],'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']}];if(_0xd3c75b[_0xaea3('0x1a')](_0xaea3('0x1b'))&&_0xd3c75b[_0xaea3('0x1b')]!=='none'){_0x37f3e0[_0xaea3('0xa')]({'type':_0xaea3('0x10'),'app':_0xaea3('0x4'),'appdata':_0xaea3('0x1c'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':'outbound','app':_0xaea3('0x4'),'appdata':_0xaea3('0x1d')+_0xd3c75b[_0xaea3('0x1b')]||_0xaea3('0x1e'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']});}return _0x37f3e0;}function _0x5e880b(_0x4598a0,_0x426479){var _0x211369=[{'name':_0xaea3('0x1f'),'param':0x0},{'name':_0xaea3('0x20'),'param':0x1},{'name':_0xaea3('0x21'),'param':0x2},{'name':_0xaea3('0x22'),'param':0x3}];var _0x13e2d2={};var _0x355f6c=_0x426479['split'](',');var _0x655dc2=[];for(var _0x35a76f=0x0;_0x35a76f<_0x211369[_0xaea3('0x23')];_0x35a76f++){switch(_0x211369[_0x35a76f][_0xaea3('0x24')]){case'trunk':_0x13e2d2[_0xaea3('0x1f')]=_0x355f6c[_0x211369[_0x35a76f]['param']]['split']('/')[0x1];_0x13e2d2['phone']=_0x355f6c[_0x211369[_0x35a76f][_0xaea3('0x25')]][_0xaea3('0x26')]('/')[0x2];_0x13e2d2[_0xaea3('0x27')]=_0x13e2d2[_0xaea3('0x28')]?_0x13e2d2[_0xaea3('0x28')]['split']('$')[0x0]:undefined;_0x13e2d2[_0xaea3('0x28')]=_0x4598a0['cutdigits']?(_0x13e2d2['prefix']||'')+_0xaea3('0x13')+_0x4598a0[_0xaea3('0x12')]+'}':(_0x13e2d2[_0xaea3('0x27')]||'')+'${EXTEN}';_0x655dc2[_0x211369[_0x35a76f]['param']]=[_0xaea3('0x29'),_0x13e2d2['trunk'],_0x13e2d2[_0xaea3('0x28')]][_0xaea3('0x2a')]('/');break;case _0xaea3('0x21'):_0x13e2d2['options']=_0x355f6c[_0x211369[_0x35a76f][_0xaea3('0x25')]];if(_0x4598a0[_0xaea3('0x1b')]!==_0xaea3('0x2b')){if(_0x13e2d2[_0xaea3('0x21')]['indexOf'](_0xaea3('0x2c'))<0x0){_0x13e2d2['options']+=_0xaea3('0x2c');}}else{_0x13e2d2[_0xaea3('0x21')]=_0x13e2d2[_0xaea3('0x21')][_0xaea3('0x2d')]('U(xcally-mixmonitor-context)','');}_0x655dc2[_0x211369[_0x35a76f]['param']]=_0x13e2d2[_0xaea3('0x21')];break;default:_0x655dc2[_0x211369[_0x35a76f]['param']]=_0x355f6c[_0x211369[_0x35a76f][_0xaea3('0x25')]];}}return _0x655dc2[_0xaea3('0x2a')](',');}function _0x514e05(_0x2ec54a,_0xee0c11,_0x2dd8ae){return new Promise(function(_0x364117,_0x478d3f){var _0x394996=[];if(_[_0xaea3('0x2e')](_0xee0c11))return _0x364117(_0x394996);_0x6a9f2e[_0xaea3('0x2f')]['findAll']({'attributes':['id',_0xaea3('0x30'),_0xaea3('0x31')],'raw':!![]})['then'](function(_0x369228){for(var _0x595410=0x0,_0x26a289=0x0;_0x595410<_0xee0c11[_0xaea3('0x23')];_0x595410++,_0x26a289=0x0){var _0x591021=_0xee0c11[_0x595410];var _0x17f0ed=[];var _0x253b33=[];delete _0x591021['id'];if(_0x591021[_0xaea3('0x30')]!==_0xaea3('0x32')){_0x591021[_0xaea3('0x33')]=[_0x591021[_0xaea3('0x30')]];}else{_0x591021[_0xaea3('0x33')]=_0x591021[_0xaea3('0x31')]?_[_0xaea3('0x34')](_[_0xaea3('0x35')](_0x369228,{'IntervalId':_0x591021[_0xaea3('0x31')]}),_0xaea3('0x30')):[];}_0x591021[_0xaea3('0xc')]=_0x2ec54a[_0xaea3('0xc')];_0x591021[_0xaea3('0x5')]=_0x2ec54a[_0xaea3('0x5')];if(_0x591021[_0xaea3('0x3')])_0x591021[_0xaea3('0x3')]=_0x591021[_0xaea3('0x3')][_0xaea3('0x36')]();if(_0x2ec54a[_0xaea3('0x3')]===_0xaea3('0x10')){if(_0x591021['hasOwnProperty'](_0xaea3('0x37'))&&_0x591021[_0xaea3('0x37')]&&_0x591021[_0xaea3('0x37')]!=='--'){_0x17f0ed[_0xaea3('0xa')]({'type':_0x591021['type'][_0xaea3('0x36')](),'app':'Set','appdata':_0xaea3('0x38')+_0x591021[_0xaea3('0x37')],'context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021['intervals'][_0xaea3('0x23')]+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});}_0x17f0ed[_0xaea3('0xa')]({'type':_0x591021[_0xaea3('0x3')]['toLowerCase'](),'app':_0xaea3('0x15'),'appdata':_0xaea3('0x39')+(_0x591021[_0xaea3('0x3a')]?_0xaea3('0x3b')+_0x591021[_0xaea3('0x3a')]+')':'NoOp(No\x20number\x20available)'),'context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a['exten'],'priority':_0x591021[_0xaea3('0x33')][_0xaea3('0x23')]+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});}else{if(_0x591021['hasOwnProperty'](_0xaea3('0x3c'))){if([_0xaea3('0x3d'),_0xaea3('0x3e')]['includes'](_0x591021[_0xaea3('0x3f')][_0xaea3('0x36')]())&&_0x591021[_0xaea3('0x40')]!=='custom'){if(_0x591021[_0xaea3('0x3c')]){_0x17f0ed['push']({'type':_0x591021[_0xaea3('0x3')][_0xaea3('0x36')](),'app':_0xaea3('0x15'),'appdata':_0xaea3('0x41'),'context':_0x2ec54a['context'],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021[_0xaea3('0x33')]['length']+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});_0x17f0ed['push']({'type':_0x591021[_0xaea3('0x3')][_0xaea3('0x36')](),'app':_0xaea3('0x4'),'appdata':_0xaea3('0x42'),'context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021[_0xaea3('0x33')]['length']+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});}else{_0x17f0ed['push']({'type':_0x591021[_0xaea3('0x3')][_0xaea3('0x36')](),'app':_0xaea3('0x15'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021['intervals'][_0xaea3('0x23')]+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});_0x17f0ed[_0xaea3('0xa')]({'type':_0x591021[_0xaea3('0x3')][_0xaea3('0x36')](),'app':_0xaea3('0x4'),'appdata':_0xaea3('0x43'),'context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021[_0xaea3('0x33')]['length']+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});}}}}for(var _0x308886=0x0;_0x308886<_0x591021[_0xaea3('0x33')][_0xaea3('0x23')];_0x308886++){var _0x1130b4=_0x2dd8ae+_0x591021[_0xaea3('0x33')]['length'];var _0x4f7205=_0x308886===_0x591021[_0xaea3('0x33')]['length']-0x1?_0x2dd8ae+_0x17f0ed[_0xaea3('0x23')]+_0x253b33[_0xaea3('0x23')]+0x2:_0x2dd8ae+_0x308886+0x1;_0x17f0ed[_0xaea3('0x44')](_0x308886,0x0,{'type':_0x2ec54a[_0xaea3('0x3')],'app':_0xaea3('0x45'),'appdata':_0x591021[_0xaea3('0x33')][_0x308886]+'?'+_0x2ec54a[_0xaea3('0xc')]+_0xaea3('0x46')+_0x1130b4+':'+_0x2ec54a[_0xaea3('0xc')]+_0xaea3('0x46')+_0x4f7205,'exten':_0x2ec54a[_0xaea3('0x5')],'context':_0x2ec54a[_0xaea3('0xc')],'priority':_0x2dd8ae+_0x308886,'VoiceExtensionId':_0x2ec54a['id']});}if(_0x591021['appType']==='outboundDial'){_0x591021[_0xaea3('0x47')]=_0x5e880b(_0x2ec54a,_0x591021[_0xaea3('0x47')]);}if(_0x591021[_0xaea3('0x40')]===_0xaea3('0x48')){_0x17f0ed[_0xaea3('0xa')]({'type':_0x591021[_0xaea3('0x3')]['toLowerCase'](),'app':'Set','appdata':_0xaea3('0x49'),'context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021[_0xaea3('0x33')][_0xaea3('0x23')]+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});}_0x591021[_0xaea3('0x4a')]=_0x17f0ed[_0xaea3('0x23')]?_[_0xaea3('0x4b')](_0x17f0ed)[_0xaea3('0x4a')]+0x1:_0x2dd8ae;_0x394996=_[_0xaea3('0x4c')](_0x394996,_0x17f0ed,[_0x591021],_0x253b33);_0x2dd8ae=_[_0xaea3('0x4b')](_0x394996)['priority']+0x1;}return _0x364117(_0x394996);})['catch'](function(_0x3accb3){_0x478d3f(_0x3accb3);});});}return _0xd282ef[_0xaea3('0x4d')]('VoiceExtension',attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x57d6c9){var _0x248c7b=this[_0xaea3('0x4e')]({'plain':!![]});var _0x95f53c=_0x248c7b['type']===_0xaea3('0x10')?_0x4649e7(_0x248c7b):_0xe7afc5(_0x248c7b);return _0x514e05(_0x248c7b,_0x57d6c9,_[_0xaea3('0x4b')](_0x95f53c)[_0xaea3('0x4a')]+0x1)[_0xaea3('0x4f')](function(_0x1a37df){var _0x3388f5=_['concat'](_0x95f53c,_0x1a37df);_0x3388f5[_0xaea3('0xa')]({'type':_0x248c7b[_0xaea3('0x3')],'app':_0xaea3('0x50'),'exten':_0x248c7b[_0xaea3('0x5')],'context':_0x248c7b[_0xaea3('0xc')],'priority':_[_0xaea3('0x4b')](_0x3388f5)[_0xaea3('0x4a')]+0x1,'VoiceExtensionId':_0x248c7b['id']});return _0x3388f5;});}}});};
\ No newline at end of file
index e9c27a3..1cd832f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c5=['rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','register','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceExtension','findAll','options','attributes','limit','include','map','model','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4e5d49,_0x45fb08){var _0x4dc6b6=function(_0xd340d7){while(--_0xd340d7){_0x4e5d49['push'](_0x4e5d49['shift']());}};_0x4dc6b6(++_0x45fb08);}(_0x37c5,0xa7));var _0x537c=function(_0x3f1c62,_0x330b7a){_0x3f1c62=_0x3f1c62-0x0;var _0x4e90e0=_0x37c5[_0x3f1c62];return _0x4e90e0;};'use strict';var _=require('lodash');var util=require(_0x537c('0x0'));var moment=require(_0x537c('0x1'));var BPromise=require(_0x537c('0x2'));var rs=require(_0x537c('0x3'));var fs=require('fs');var Redis=require(_0x537c('0x4'));var db=require(_0x537c('0x5'))['db'];var utils=require(_0x537c('0x6'));var logger=require(_0x537c('0x7'))(_0x537c('0x8'));var config=require(_0x537c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x537c('0xa')][_0x537c('0xb')]({'port':0x232a});config[_0x537c('0xc')]=_['defaults'](config[_0x537c('0xc')],{'host':_0x537c('0xd'),'port':0x18eb});var socket=require(_0x537c('0xe'))(new Redis(config[_0x537c('0xc')]));require('./voiceExtension.socket')[_0x537c('0xf')](socket);function respondWithRpcPromise(_0x1d8c6f,_0x29c294,_0x579666){return new BPromise(function(_0x1459e0,_0x48fdeb){return client['request'](_0x1d8c6f,_0x579666)[_0x537c('0x10')](function(_0x53004e){logger[_0x537c('0x11')](_0x537c('0x12'),_0x29c294,_0x537c('0x13'));logger[_0x537c('0x14')](_0x537c('0x15'),_0x29c294,_0x537c('0x13'),JSON[_0x537c('0x16')](_0x53004e));if(_0x53004e[_0x537c('0x17')]){if(_0x53004e[_0x537c('0x17')]['code']===0x1f4){logger[_0x537c('0x17')](_0x537c('0x12'),_0x29c294,_0x53004e[_0x537c('0x17')][_0x537c('0x18')]);return _0x48fdeb(_0x53004e[_0x537c('0x17')][_0x537c('0x18')]);}logger[_0x537c('0x17')](_0x537c('0x12'),_0x29c294,_0x53004e[_0x537c('0x17')]['message']);return _0x1459e0(_0x53004e[_0x537c('0x17')]['message']);}else{logger['info'](_0x537c('0x12'),_0x29c294,_0x537c('0x13'));_0x1459e0(_0x53004e[_0x537c('0x19')]['message']);}})[_0x537c('0x1a')](function(_0x229ffd){logger['error']('VoiceExtension,\x20%s,\x20%s',_0x29c294,_0x229ffd);_0x48fdeb(_0x229ffd);});});}exports[_0x537c('0x1b')]=function(_0x49641d){var _0x59a481=this;return new Promise(function(_0x2307c7,_0x32be40){return db['VoiceExtension'][_0x537c('0x1c')]({'raw':_0x49641d[_0x537c('0x1d')]?_0x49641d['options']['raw']===undefined?!![]:![]:!![],'where':_0x49641d[_0x537c('0x1d')]?_0x49641d['options']['where']||null:null,'attributes':_0x49641d[_0x537c('0x1d')]?_0x49641d[_0x537c('0x1d')][_0x537c('0x1e')]||null:null,'limit':_0x49641d[_0x537c('0x1d')]?_0x49641d[_0x537c('0x1d')][_0x537c('0x1f')]||null:null,'include':_0x49641d['options']?_0x49641d[_0x537c('0x1d')][_0x537c('0x20')]?_[_0x537c('0x21')](_0x49641d[_0x537c('0x1d')][_0x537c('0x20')],function(_0x4b6af1){return{'model':db[_0x4b6af1['model']],'as':_0x4b6af1['as'],'attributes':_0x4b6af1['attributes'],'include':_0x4b6af1[_0x537c('0x20')]?_[_0x537c('0x21')](_0x4b6af1['include'],function(_0x3005a4){return{'model':db[_0x3005a4[_0x537c('0x22')]],'as':_0x3005a4['as'],'attributes':_0x3005a4[_0x537c('0x1e')],'include':_0x3005a4['include']?_['map'](_0x3005a4[_0x537c('0x20')],function(_0x44cc94){return{'model':db[_0x44cc94[_0x537c('0x22')]],'as':_0x44cc94['as'],'attributes':_0x44cc94[_0x537c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x537c('0x10')](function(_0x5ca8f6){logger[_0x537c('0x11')](_0x537c('0x1b'),_0x49641d);logger['debug']('GetVoiceExtension',_0x49641d,JSON['stringify'](_0x5ca8f6));_0x2307c7(_0x5ca8f6);})['catch'](function(_0x254996){logger[_0x537c('0x17')](_0x537c('0x1b'),_0x254996['message'],_0x49641d);_0x32be40(_0x59a481[_0x537c('0x17')](0x1f4,_0x254996[_0x537c('0x18')]));});});};
\ No newline at end of file
+var _0x522b=['include','model','then','lodash','util','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','register','info','VoiceExtension,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','map'];(function(_0x5e202f,_0xaeb2a9){var _0x17cbc4=function(_0x3a4dba){while(--_0x3a4dba){_0x5e202f['push'](_0x5e202f['shift']());}};_0x17cbc4(++_0xaeb2a9);}(_0x522b,0x1c3));var _0xb522=function(_0x1d211b,_0x475f3b){_0x1d211b=_0x1d211b-0x0;var _0x47c88b=_0x522b[_0x1d211b];return _0x47c88b;};'use strict';var _=require(_0xb522('0x0'));var util=require(_0xb522('0x1'));var moment=require('moment');var BPromise=require(_0xb522('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb522('0x3'))['db'];var utils=require(_0xb522('0x4'));var logger=require('../../config/logger')(_0xb522('0x5'));var config=require(_0xb522('0x6'));var jayson=require(_0xb522('0x7'));var client=jayson[_0xb522('0x8')][_0xb522('0x9')]({'port':0x232a});config['redis']=_[_0xb522('0xa')](config[_0xb522('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb522('0xb')]));require('./voiceExtension.socket')[_0xb522('0xc')](socket);function respondWithRpcPromise(_0x265224,_0x4df613,_0x1e77ee){return new BPromise(function(_0x2676b7,_0x2fd1bd){return client['request'](_0x265224,_0x1e77ee)['then'](function(_0x37713e){logger[_0xb522('0xd')](_0xb522('0xe'),_0x4df613,'request\x20sent');logger[_0xb522('0xf')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x4df613,_0xb522('0x10'),JSON[_0xb522('0x11')](_0x37713e));if(_0x37713e['error']){if(_0x37713e[_0xb522('0x12')]['code']===0x1f4){logger[_0xb522('0x12')](_0xb522('0xe'),_0x4df613,_0x37713e[_0xb522('0x12')][_0xb522('0x13')]);return _0x2fd1bd(_0x37713e[_0xb522('0x12')][_0xb522('0x13')]);}logger[_0xb522('0x12')]('VoiceExtension,\x20%s,\x20%s',_0x4df613,_0x37713e[_0xb522('0x12')]['message']);return _0x2676b7(_0x37713e[_0xb522('0x12')][_0xb522('0x13')]);}else{logger[_0xb522('0xd')]('VoiceExtension,\x20%s,\x20%s',_0x4df613,_0xb522('0x10'));_0x2676b7(_0x37713e['result'][_0xb522('0x13')]);}})[_0xb522('0x14')](function(_0x10b0b7){logger[_0xb522('0x12')](_0xb522('0xe'),_0x4df613,_0x10b0b7);_0x2fd1bd(_0x10b0b7);});});}exports[_0xb522('0x15')]=function(_0x326769){var _0x4a04a8=this;return new Promise(function(_0x58a513,_0x4e53be){return db[_0xb522('0x16')][_0xb522('0x17')]({'raw':_0x326769[_0xb522('0x18')]?_0x326769[_0xb522('0x18')][_0xb522('0x19')]===undefined?!![]:![]:!![],'where':_0x326769[_0xb522('0x18')]?_0x326769[_0xb522('0x18')][_0xb522('0x1a')]||null:null,'attributes':_0x326769[_0xb522('0x18')]?_0x326769[_0xb522('0x18')][_0xb522('0x1b')]||null:null,'limit':_0x326769[_0xb522('0x18')]?_0x326769[_0xb522('0x18')]['limit']||null:null,'include':_0x326769[_0xb522('0x18')]?_0x326769[_0xb522('0x18')]['include']?_[_0xb522('0x1c')](_0x326769[_0xb522('0x18')][_0xb522('0x1d')],function(_0x52d5db){return{'model':db[_0x52d5db[_0xb522('0x1e')]],'as':_0x52d5db['as'],'attributes':_0x52d5db['attributes'],'include':_0x52d5db[_0xb522('0x1d')]?_[_0xb522('0x1c')](_0x52d5db[_0xb522('0x1d')],function(_0x4295e6){return{'model':db[_0x4295e6['model']],'as':_0x4295e6['as'],'attributes':_0x4295e6['attributes'],'include':_0x4295e6[_0xb522('0x1d')]?_['map'](_0x4295e6[_0xb522('0x1d')],function(_0x430491){return{'model':db[_0x430491[_0xb522('0x1e')]],'as':_0x430491['as'],'attributes':_0x430491['attributes']};}):[]};}):[]};}):[]:[]})[_0xb522('0x1f')](function(_0x3c0528){logger['info'](_0xb522('0x15'),_0x326769);logger[_0xb522('0xf')](_0xb522('0x15'),_0x326769,JSON[_0xb522('0x11')](_0x3c0528));_0x58a513(_0x3c0528);})[_0xb522('0x14')](function(_0x5bc250){logger[_0xb522('0x12')](_0xb522('0x15'),_0x5bc250[_0xb522('0x13')],_0x326769);_0x4e53be(_0x4a04a8[_0xb522('0x12')](0x1f4,_0x5bc250[_0xb522('0x13')]));});});};
\ No newline at end of file
index 2e083a6..5c16048 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['./voiceExtension.events','save','update','emit','removeListener','register','voiceExtension:'];(function(_0x286c17,_0x51742e){var _0x52f89c=function(_0xff55ba){while(--_0xff55ba){_0x286c17['push'](_0x286c17['shift']());}};_0x52f89c(++_0x51742e);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2b0bc2,_0x4331f5){_0x2b0bc2=_0x2b0bc2-0x0;var _0x56e5b9=_0x5fc3[_0x2b0bc2];return _0x56e5b9;};'use strict';var VoiceExtensionEvents=require(_0x35fc('0x0'));var events=[_0x35fc('0x1'),'remove',_0x35fc('0x2')];function createListener(_0x2ac6da,_0x196bc2){return function(_0x91d024){_0x196bc2[_0x35fc('0x3')](_0x2ac6da,_0x91d024);};}function removeListener(_0x5e75e6,_0x2d1404){return function(){VoiceExtensionEvents[_0x35fc('0x4')](_0x5e75e6,_0x2d1404);};}exports[_0x35fc('0x5')]=function(_0x5b85ad){for(var _0x5754be=0x0,_0x19a0d1=events['length'];_0x5754be<_0x19a0d1;_0x5754be++){var _0x16e153=events[_0x5754be];var _0x27524f=createListener(_0x35fc('0x6')+_0x16e153,_0x5b85ad);VoiceExtensionEvents['on'](_0x16e153,_0x27524f);}};
\ No newline at end of file
+var _0x5fab=['emit','removeListener','register','length','./voiceExtension.events','save','update'];(function(_0x4d5376,_0x3d10c6){var _0x849db0=function(_0x316bce){while(--_0x316bce){_0x4d5376['push'](_0x4d5376['shift']());}};_0x849db0(++_0x3d10c6);}(_0x5fab,0x177));var _0xb5fa=function(_0x3ead55,_0x22bc51){_0x3ead55=_0x3ead55-0x0;var _0x3ea16d=_0x5fab[_0x3ead55];return _0x3ea16d;};'use strict';var VoiceExtensionEvents=require(_0xb5fa('0x0'));var events=[_0xb5fa('0x1'),'remove',_0xb5fa('0x2')];function createListener(_0x2e2a50,_0x3fc227){return function(_0x316ad0){_0x3fc227[_0xb5fa('0x3')](_0x2e2a50,_0x316ad0);};}function removeListener(_0x595d8b,_0x29390a){return function(){VoiceExtensionEvents[_0xb5fa('0x4')](_0x595d8b,_0x29390a);};}exports[_0xb5fa('0x5')]=function(_0x44df89){for(var _0x4a0249=0x0,_0x5d70f6=events[_0xb5fa('0x6')];_0x4a0249<_0x5d70f6;_0x4a0249++){var _0x1aec3e=events[_0x4a0249];var _0x9c7bce=createListener('voiceExtension:'+_0x1aec3e,_0x44df89);VoiceExtensionEvents['on'](_0x1aec3e,_0x9c7bce);}};
\ No newline at end of file
index 496929f..8e8d946 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','./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post'];(function(_0x5dc26d,_0x4b0292){var _0x584e7a=function(_0xa89513){while(--_0xa89513){_0x5dc26d['push'](_0x5dc26d['shift']());}};_0x584e7a(++_0x4b0292);}(_0x57ca,0x108));var _0xa57c=function(_0xf76c25,_0x563034){_0xf76c25=_0xf76c25-0x0;var _0x566859=_0x57ca[_0xf76c25];return _0x566859;};'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('0xb'),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 _0xfb11=['index','/:id','show','get','/:id/messages','getMessages','post','create','update','destroy','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./voiceMail.controller','isAuthenticated'];(function(_0x4a8389,_0x33974a){var _0x2a03b6=function(_0x1d2e9e){while(--_0x1d2e9e){_0x4a8389['push'](_0x4a8389['shift']());}};_0x2a03b6(++_0x33974a);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x4d07cc,_0x587613){_0x4d07cc=_0x4d07cc-0x0;var _0x42de3b=_0xfb11[_0x4d07cc];return _0x42de3b;};'use strict';var multer=require(_0x1fb1('0x0'));var util=require('util');var path=require(_0x1fb1('0x1'));var timeout=require(_0x1fb1('0x2'));var express=require('express');var router=express[_0x1fb1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1fb1('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1fb1('0x5'));var controller=require(_0x1fb1('0x6'));router['get']('/',auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x8')]);router['get'](_0x1fb1('0x9'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xa')]);router[_0x1fb1('0xb')](_0x1fb1('0xc'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xd')]);router[_0x1fb1('0xe')]('/',auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xf')]);router['put'](_0x1fb1('0x9'),auth['isAuthenticated'](),controller[_0x1fb1('0x10')]);router['delete'](_0x1fb1('0x9'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x11')]);module[_0x1fb1('0x12')]=router;
\ No newline at end of file
index 3c58945..c46cfa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21f0=['getDataValue','mailbox','sequelize','exports','STRING','contest_mailbox','setDataValue','email','trim','yes','ENUM','TINYINT(4)','TIMESTAMP','INTEGER','\x20-\x20'];(function(_0x4dfb14,_0x512077){var _0x461a79=function(_0x3cb0c2){while(--_0x3cb0c2){_0x4dfb14['push'](_0x4dfb14['shift']());}};_0x461a79(++_0x512077);}(_0x21f0,0xd4));var _0x021f=function(_0x54eeba,_0xcc0877){_0x54eeba=_0x54eeba-0x0;var _0x5992d7=_0x21f0[_0x54eeba];return _0x5992d7;};'use strict';var Sequelize=require(_0x021f('0x0'));module[_0x021f('0x1')]={'customer_id':{'type':Sequelize[_0x021f('0x2')]},'context':{'type':Sequelize[_0x021f('0x2')],'defaultValue':'from-voicemail','unique':_0x021f('0x3')},'mailbox':{'type':Sequelize[_0x021f('0x2')],'defaultValue':'','allowNull':![],'unique':_0x021f('0x3')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x021f('0x2')]},'email':{'type':Sequelize[_0x021f('0x2')],'validate':{'isEmail':!![]},'set':function(_0x41919a){this[_0x021f('0x4')](_0x021f('0x5'),typeof _0x41919a==='string'&&_0x41919a['trim']()?_0x41919a[_0x021f('0x6')]():null);}},'pager':{'type':Sequelize[_0x021f('0x2')]},'tz':{'type':Sequelize[_0x021f('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize['ENUM'](_0x021f('0x7'),'no'),'defaultValue':_0x021f('0x7'),'allowNull':![]},'saycid':{'type':Sequelize[_0x021f('0x8')](_0x021f('0x7'),'no'),'defaultValue':_0x021f('0x7'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x021f('0x2')]},'review':{'type':Sequelize[_0x021f('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x021f('0x8')](_0x021f('0x7'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x021f('0x8')](_0x021f('0x7'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM'](_0x021f('0x7'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x021f('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0x021f('0x7'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x021f('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x021f('0x8')](_0x021f('0x7'),'no'),'defaultValue':_0x021f('0x7'),'allowNull':![]},'forcename':{'type':Sequelize[_0x021f('0x8')](_0x021f('0x7'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x021f('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0x021f('0x7'),'no'),'defaultValue':_0x021f('0x7'),'allowNull':![]},'stamp':{'type':_0x021f('0xa')},'emailsubject':{'type':Sequelize[_0x021f('0x2')]},'emailbody':{'type':Sequelize[_0x021f('0x2')]},'maxsecs':{'type':Sequelize[_0x021f('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue']('fullname')+_0x021f('0xc')+this[_0x021f('0xd')](_0x021f('0xe'));}}};
\ No newline at end of file
+var _0xa7c5=['TIMESTAMP','INTEGER','VIRTUAL','getDataValue','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes','TINYINT(4)'];(function(_0x47b08a,_0x45dc17){var _0x561f40=function(_0x753dfc){while(--_0x753dfc){_0x47b08a['push'](_0x47b08a['shift']());}};_0x561f40(++_0x45dc17);}(_0xa7c5,0x1ce));var _0x5a7c=function(_0x42f0ad,_0xf61060){_0x42f0ad=_0x42f0ad-0x0;var _0x574e84=_0xa7c5[_0x42f0ad];return _0x574e84;};'use strict';var Sequelize=require(_0x5a7c('0x0'));module[_0x5a7c('0x1')]={'customer_id':{'type':Sequelize[_0x5a7c('0x2')]},'context':{'type':Sequelize[_0x5a7c('0x2')],'defaultValue':_0x5a7c('0x3'),'unique':_0x5a7c('0x4')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':_0x5a7c('0x4')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x5a7c('0x2')],'validate':{'isEmail':!![]},'set':function(_0xc7623){this[_0x5a7c('0x5')](_0x5a7c('0x6'),typeof _0xc7623===_0x5a7c('0x7')&&_0xc7623[_0x5a7c('0x8')]()?_0xc7623['trim']():null);}},'pager':{'type':Sequelize[_0x5a7c('0x2')]},'tz':{'type':Sequelize[_0x5a7c('0x2')],'defaultValue':_0x5a7c('0x9')},'attach':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':_0x5a7c('0xb'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x5a7c('0x2')]},'review':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0x5a7c('0xb'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x5a7c('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x5a7c('0xc'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x5a7c('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x5a7c('0xa')]('yes','no'),'defaultValue':_0x5a7c('0xb'),'allowNull':![]},'stamp':{'type':_0x5a7c('0xd')},'emailsubject':{'type':Sequelize[_0x5a7c('0x2')]},'emailbody':{'type':Sequelize[_0x5a7c('0x2')]},'maxsecs':{'type':Sequelize[_0x5a7c('0xe')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x5a7c('0xe')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x5a7c('0xf')],'get':function(){return this[_0x5a7c('0x10')]('fullname')+_0x5a7c('0x11')+this[_0x5a7c('0x10')](_0x5a7c('0x12'));}}};
\ No newline at end of file
index bd169d1..0271612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['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','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','get','Voicemails','UserProfileResource','sendStatus','error','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','includeAll','include','VoiceMail','findAll','rows','catch','show','params','options','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','VoiceMailMessage','pick','filter','mailbox'];(function(_0x906ca6,_0x592235){var _0x12dd8b=function(_0x20f636){while(--_0x20f636){_0x906ca6['push'](_0x906ca6['shift']());}};_0x12dd8b(++_0x592235);}(_0x5eb8,0xb0));var _0x85eb=function(_0x6182ff,_0x59d492){_0x6182ff=_0x6182ff-0x0;var _0x1cec22=_0x5eb8[_0x6182ff];return _0x1cec22;};'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'];function respondWithStatusCode(_0x784583,_0x2f42ba){_0x2f42ba=_0x2f42ba||0xcc;return function(_0x259f72){if(_0x259f72){return _0x784583['sendStatus'](_0x2f42ba);}return _0x784583['status'](_0x2f42ba)[_0x85eb('0x19')]();};}function respondWithResult(_0x5c760a,_0x18ca53){_0x18ca53=_0x18ca53||0xc8;return function(_0x23a82a){if(_0x23a82a){return _0x5c760a[_0x85eb('0x1a')](_0x18ca53)[_0x85eb('0x1b')](_0x23a82a);}};}function respondWithFilteredResult(_0x183b0c,_0x49efdf){return function(_0x2e5c0a){if(_0x2e5c0a){var _0x59237b=typeof _0x49efdf[_0x85eb('0x1c')]===_0x85eb('0x1d')&&typeof _0x49efdf[_0x85eb('0x1e')]===_0x85eb('0x1d');var _0x5dbeda=_0x2e5c0a['count'];var _0x50d2a8=_0x59237b?0x0:_0x49efdf[_0x85eb('0x1c')];var _0x39ca96=_0x59237b?_0x2e5c0a[_0x85eb('0x1f')]:_0x49efdf[_0x85eb('0x1c')]+_0x49efdf[_0x85eb('0x1e')];var _0x34f875;if(_0x39ca96>=_0x5dbeda){_0x39ca96=_0x5dbeda;_0x34f875=0xc8;}else{_0x34f875=0xce;}_0x183b0c['status'](_0x34f875);return _0x183b0c[_0x85eb('0x20')](_0x85eb('0x21'),_0x50d2a8+'-'+_0x39ca96+'/'+_0x5dbeda)[_0x85eb('0x1b')](_0x2e5c0a);}return null;};}function patchUpdates(_0x4e8041){return function(_0x4b4b38){try{jsonpatch['apply'](_0x4b4b38,_0x4e8041,!![]);}catch(_0x55b9e4){return BPromise[_0x85eb('0x22')](_0x55b9e4);}return _0x4b4b38[_0x85eb('0x23')]();};}function saveUpdates(_0x329fc5,_0x255ca7){return function(_0x465c74){if(_0x465c74){return _0x465c74[_0x85eb('0x24')](_0x329fc5)['then'](function(_0x5491d5){return _0x5491d5;});}return null;};}function removeEntity(_0x5b48d9,_0x298e84){return function(_0x1426c8){if(_0x1426c8){return _0x1426c8[_0x85eb('0x25')]()[_0x85eb('0x26')](function(){var _0x312b3e=_0x1426c8[_0x85eb('0x27')]({'plain':!![]});var _0x5dfc96=_0x85eb('0x28');return db[_0x85eb('0x29')][_0x85eb('0x25')]({'where':{'type':_0x5dfc96,'resourceId':_0x312b3e['id']}})[_0x85eb('0x26')](function(){return _0x1426c8;});})[_0x85eb('0x26')](function(){_0x5b48d9['status'](0xcc)[_0x85eb('0x19')]();});}};}function handleEntityNotFound(_0x792d3a,_0x291557){return function(_0x3e7eb9){if(!_0x3e7eb9){_0x792d3a[_0x85eb('0x2a')](0x194);}return _0x3e7eb9;};}function handleError(_0x29d262,_0x50541a){_0x50541a=_0x50541a||0x1f4;return function(_0x562792){logger[_0x85eb('0x2b')](_0x562792['stack']);if(_0x562792[_0x85eb('0x2c')]){delete _0x562792['name'];}_0x29d262[_0x85eb('0x1a')](_0x50541a)[_0x85eb('0x2d')](_0x562792);};}exports[_0x85eb('0x2e')]=function(_0x1d9278,_0xa67e1c){var _0xf4ac13={},_0x41ed76={},_0x5decd5={'count':0x0,'rows':[]};var _0x237f19=_[_0x85eb('0x2f')](db['VoiceMail'][_0x85eb('0x30')],function(_0x5af2de){return{'name':_0x5af2de['fieldName'],'type':_0x5af2de[_0x85eb('0x31')][_0x85eb('0x32')]};});_0x41ed76[_0x85eb('0x33')]=_[_0x85eb('0x2f')](_0x237f19,_0x85eb('0x2c'));_0x41ed76[_0x85eb('0x34')]=_[_0x85eb('0x35')](_0x1d9278[_0x85eb('0x34')]);_0x41ed76[_0x85eb('0x36')]=_[_0x85eb('0x37')](_0x41ed76['model'],_0x41ed76[_0x85eb('0x34')]);_0xf4ac13[_0x85eb('0x38')]=_['intersection'](_0x41ed76['model'],qs[_0x85eb('0x39')](_0x1d9278[_0x85eb('0x34')][_0x85eb('0x39')]));_0xf4ac13[_0x85eb('0x38')]=_0xf4ac13[_0x85eb('0x38')][_0x85eb('0x3a')]?_0xf4ac13[_0x85eb('0x38')]:_0x41ed76[_0x85eb('0x33')];if(!_0x1d9278[_0x85eb('0x34')][_0x85eb('0x3b')](_0x85eb('0x3c'))){_0xf4ac13[_0x85eb('0x1e')]=qs[_0x85eb('0x1e')](_0x1d9278[_0x85eb('0x34')]['limit']);_0xf4ac13[_0x85eb('0x1c')]=qs[_0x85eb('0x1c')](_0x1d9278['query']['offset']);}_0xf4ac13[_0x85eb('0x3d')]=qs[_0x85eb('0x3e')](_0x1d9278['query'][_0x85eb('0x3e')]);_0xf4ac13['where']=qs[_0x85eb('0x36')](_['pick'](_0x1d9278[_0x85eb('0x34')],_0x41ed76['filters']),_0x237f19);if(_0x1d9278[_0x85eb('0x34')]['filter']){_0xf4ac13[_0x85eb('0x3f')]=_[_0x85eb('0x40')](_0xf4ac13['where'],{'$or':_[_0x85eb('0x2f')](_0x237f19,function(_0x5a1c15){if(_0x5a1c15[_0x85eb('0x31')]!==_0x85eb('0x41')){var _0x5c0156={};_0x5c0156[_0x5a1c15[_0x85eb('0x2c')]]={'$like':'%'+_0x1d9278['query']['filter']+'%'};return _0x5c0156;}})});}_0xf4ac13=_[_0x85eb('0x40')]({},_0xf4ac13,_0x1d9278['options']);var _0x17cc20={'where':_0xf4ac13[_0x85eb('0x3f')]};return db['VoiceMail']['count'](_0x17cc20)[_0x85eb('0x26')](function(_0x422ec3){_0x5decd5['count']=_0x422ec3;if(_0x1d9278['query'][_0x85eb('0x42')]){_0xf4ac13[_0x85eb('0x43')]=[{'all':!![]}];}return db[_0x85eb('0x44')][_0x85eb('0x45')](_0xf4ac13);})[_0x85eb('0x26')](function(_0x5b7411){_0x5decd5[_0x85eb('0x46')]=_0x5b7411;return _0x5decd5;})[_0x85eb('0x26')](respondWithFilteredResult(_0xa67e1c,_0xf4ac13))[_0x85eb('0x47')](handleError(_0xa67e1c,null));};exports[_0x85eb('0x48')]=function(_0x2ed39d,_0xbc43a7){var _0x40e2a2={'raw':!![],'where':{'id':_0x2ed39d[_0x85eb('0x49')]['id']}},_0x3e11a8={};_0x3e11a8['model']=_[_0x85eb('0x35')](db[_0x85eb('0x44')]['rawAttributes']);_0x3e11a8[_0x85eb('0x34')]=_[_0x85eb('0x35')](_0x2ed39d[_0x85eb('0x34')]);_0x3e11a8[_0x85eb('0x36')]=_[_0x85eb('0x37')](_0x3e11a8[_0x85eb('0x33')],_0x3e11a8['query']);_0x40e2a2[_0x85eb('0x38')]=_[_0x85eb('0x37')](_0x3e11a8[_0x85eb('0x33')],qs[_0x85eb('0x39')](_0x2ed39d[_0x85eb('0x34')][_0x85eb('0x39')]));_0x40e2a2[_0x85eb('0x38')]=_0x40e2a2[_0x85eb('0x38')]['length']?_0x40e2a2[_0x85eb('0x38')]:_0x3e11a8[_0x85eb('0x33')];if(_0x2ed39d[_0x85eb('0x34')][_0x85eb('0x42')]){_0x40e2a2[_0x85eb('0x43')]=[{'all':!![]}];}_0x40e2a2=_[_0x85eb('0x40')]({},_0x40e2a2,_0x2ed39d[_0x85eb('0x4a')]);return db[_0x85eb('0x44')][_0x85eb('0x4b')](_0x40e2a2)[_0x85eb('0x26')](handleEntityNotFound(_0xbc43a7,null))[_0x85eb('0x26')](respondWithResult(_0xbc43a7,null))[_0x85eb('0x47')](handleError(_0xbc43a7,null));};exports['create']=function(_0x11da79,_0x2c951b){return db[_0x85eb('0x44')]['create'](_0x11da79[_0x85eb('0x4c')],{})[_0x85eb('0x26')](function(_0x2cf928){var _0xd2f302=_0x11da79[_0x85eb('0x4d')]['get']({'plain':!![]});if(!_0xd2f302)throw new Error(_0x85eb('0x4e'));if(_0xd2f302[_0x85eb('0x4f')]===_0x85eb('0x4d')){var _0x50e264=_0x2cf928[_0x85eb('0x27')]({'plain':!![]});var _0x4550fd=_0x85eb('0x28');return db['UserProfileSection']['find']({'where':{'name':_0x4550fd,'userProfileId':_0xd2f302[_0x85eb('0x50')]},'raw':!![]})['then'](function(_0x5ed98a){if(_0x5ed98a&&_0x5ed98a[_0x85eb('0x51')]===0x0){return db['UserProfileResource'][_0x85eb('0x52')]({'name':_0x50e264[_0x85eb('0x2c')],'resourceId':_0x50e264['id'],'type':_0x5ed98a['name'],'sectionId':_0x5ed98a['id']},{})['then'](function(){return _0x2cf928;});}else{return _0x2cf928;}})[_0x85eb('0x47')](function(_0x249511){logger[_0x85eb('0x2b')](_0x85eb('0x53'),_0x249511);throw _0x249511;});}return _0x2cf928;})[_0x85eb('0x26')](respondWithResult(_0x2c951b,0xc9))['catch'](handleError(_0x2c951b,null));};exports[_0x85eb('0x24')]=function(_0x30062e,_0x270bb2){if(_0x30062e[_0x85eb('0x4c')]['id']){delete _0x30062e[_0x85eb('0x4c')]['id'];}return db['VoiceMail'][_0x85eb('0x4b')]({'where':{'id':_0x30062e['params']['id']}})[_0x85eb('0x26')](handleEntityNotFound(_0x270bb2,null))[_0x85eb('0x26')](saveUpdates(_0x30062e['body'],null))[_0x85eb('0x26')](respondWithResult(_0x270bb2,null))[_0x85eb('0x47')](handleError(_0x270bb2,null));};exports[_0x85eb('0x25')]=function(_0x26e04a,_0x214ef7){return db[_0x85eb('0x44')]['find']({'where':{'id':_0x26e04a[_0x85eb('0x49')]['id']}})['then'](handleEntityNotFound(_0x214ef7,null))[_0x85eb('0x26')](removeEntity(_0x214ef7,null))[_0x85eb('0x47')](handleError(_0x214ef7,null));};exports['getMessages']=function(_0x152452,_0x2a0f8b,_0x4a3af9){return db[_0x85eb('0x44')]['findOne']({'where':{'id':_0x152452[_0x85eb('0x49')]['id']}})[_0x85eb('0x26')](handleEntityNotFound(_0x2a0f8b,null))[_0x85eb('0x26')](function(_0x13c0b3){var _0x45a201;var _0x15d4a7={},_0x5a729e={};_0x5a729e[_0x85eb('0x33')]=_[_0x85eb('0x35')](db[_0x85eb('0x54')][_0x85eb('0x30')]);_0x5a729e[_0x85eb('0x34')]=_[_0x85eb('0x35')](_0x152452[_0x85eb('0x34')]);_0x5a729e[_0x85eb('0x36')]=_[_0x85eb('0x37')](_0x5a729e[_0x85eb('0x33')],_0x5a729e[_0x85eb('0x34')]);_0x15d4a7['attributes']=_[_0x85eb('0x37')](_0x5a729e[_0x85eb('0x33')],qs[_0x85eb('0x39')](_0x152452[_0x85eb('0x34')][_0x85eb('0x39')]));_0x15d4a7[_0x85eb('0x38')]=_0x15d4a7['attributes'][_0x85eb('0x3a')]?_0x15d4a7['attributes']:_0x5a729e[_0x85eb('0x33')];if(!_0x152452[_0x85eb('0x34')][_0x85eb('0x3b')](_0x85eb('0x3c'))){_0x15d4a7[_0x85eb('0x1e')]=qs['limit'](_0x152452[_0x85eb('0x34')][_0x85eb('0x1e')]);_0x15d4a7[_0x85eb('0x1c')]=qs[_0x85eb('0x1c')](_0x152452[_0x85eb('0x34')][_0x85eb('0x1c')]);}_0x15d4a7[_0x85eb('0x3d')]=qs[_0x85eb('0x3e')](_0x152452['query'][_0x85eb('0x3e')]);_0x15d4a7['where']=qs[_0x85eb('0x36')](_[_0x85eb('0x55')](_0x152452[_0x85eb('0x34')],_0x5a729e[_0x85eb('0x36')]));if(_0x152452[_0x85eb('0x34')]['filter']){_0x15d4a7[_0x85eb('0x3f')]=_[_0x85eb('0x40')](_0x15d4a7[_0x85eb('0x3f')],{'$or':_[_0x85eb('0x2f')](_0x15d4a7[_0x85eb('0x38')],function(_0x419b24){var _0x562ffa={};_0x562ffa[_0x419b24]={'$like':'%'+_0x152452['query'][_0x85eb('0x56')]+'%'};return _0x562ffa;})});}_0x15d4a7['where']=_[_0x85eb('0x40')](_0x15d4a7[_0x85eb('0x3f')],{'mailboxuser':_0x13c0b3[_0x85eb('0x57')]});_0x15d4a7=_[_0x85eb('0x40')]({},_0x15d4a7,_0x152452[_0x85eb('0x4a')]);return db[_0x85eb('0x54')]['findAndCountAll'](_0x15d4a7)[_0x85eb('0x26')](respondWithFilteredResult(_0x2a0f8b,_0x15d4a7));})[_0x85eb('0x47')](handleError(_0x2a0f8b,null));};
\ No newline at end of file
+var _0x91a7=['status','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','get','Voicemails','error','stack','name','send','index','map','VoiceMail','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filter','merge','includeAll','catch','show','params','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','body','getMessages','findOne','VoiceMailMessage','order','mailbox','options','findAndCountAll','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x91a7,0xe7));var _0x791a=function(_0x361f0a,_0x521a9a){_0x361f0a=_0x361f0a-0x0;var _0x374c0f=_0x91a7[_0x361f0a];return _0x374c0f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x791a('0x0'));var zipdir=require(_0x791a('0x1'));var jsonpatch=require(_0x791a('0x2'));var rp=require('request-promise');var moment=require(_0x791a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x791a('0x4'));var util=require('util');var path=require('path');var sox=require(_0x791a('0x5'));var csv=require(_0x791a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x791a('0x7'));var _=require('lodash');var squel=require(_0x791a('0x8'));var crypto=require(_0x791a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x791a('0xa'));var toCsv=require(_0x791a('0x6'));var querystring=require(_0x791a('0xb'));var Papa=require(_0x791a('0xc'));var Redis=require(_0x791a('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x791a('0xe'));var as=require(_0x791a('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x791a('0x10'))(_0x791a('0x11'));var utils=require(_0x791a('0x12'));var config=require(_0x791a('0x13'));var licenseUtil=require(_0x791a('0x14'));var db=require(_0x791a('0x15'))['db'];function respondWithStatusCode(_0x53dc41,_0x5daecd){_0x5daecd=_0x5daecd||0xcc;return function(_0xc92016){if(_0xc92016){return _0x53dc41[_0x791a('0x16')](_0x5daecd);}return _0x53dc41['status'](_0x5daecd)[_0x791a('0x17')]();};}function respondWithResult(_0x3a2ec6,_0x5d5b11){_0x5d5b11=_0x5d5b11||0xc8;return function(_0x2887f0){if(_0x2887f0){return _0x3a2ec6[_0x791a('0x18')](_0x5d5b11)[_0x791a('0x19')](_0x2887f0);}};}function respondWithFilteredResult(_0x5cdf2,_0x55e845){return function(_0x2ce2e0){if(_0x2ce2e0){var _0x575d11=typeof _0x55e845[_0x791a('0x1a')]===_0x791a('0x1b')&&typeof _0x55e845['limit']===_0x791a('0x1b');var _0x5bea2e=_0x2ce2e0[_0x791a('0x1c')];var _0x52941d=_0x575d11?0x0:_0x55e845['offset'];var _0x588d00=_0x575d11?_0x2ce2e0[_0x791a('0x1c')]:_0x55e845['offset']+_0x55e845['limit'];var _0x39c60b;if(_0x588d00>=_0x5bea2e){_0x588d00=_0x5bea2e;_0x39c60b=0xc8;}else{_0x39c60b=0xce;}_0x5cdf2[_0x791a('0x18')](_0x39c60b);return _0x5cdf2[_0x791a('0x1d')](_0x791a('0x1e'),_0x52941d+'-'+_0x588d00+'/'+_0x5bea2e)['json'](_0x2ce2e0);}return null;};}function patchUpdates(_0x189c0d){return function(_0xcb5e66){try{jsonpatch[_0x791a('0x1f')](_0xcb5e66,_0x189c0d,!![]);}catch(_0x280f1e){return BPromise['reject'](_0x280f1e);}return _0xcb5e66[_0x791a('0x20')]();};}function saveUpdates(_0x2054c6,_0x25bae5){return function(_0x9e17b5){if(_0x9e17b5){return _0x9e17b5[_0x791a('0x21')](_0x2054c6)[_0x791a('0x22')](function(_0x2241a0){return _0x2241a0;});}return null;};}function removeEntity(_0x45a67d,_0x323c6a){return function(_0xe8e452){if(_0xe8e452){return _0xe8e452[_0x791a('0x23')]()['then'](function(){var _0x1102c9=_0xe8e452[_0x791a('0x24')]({'plain':!![]});var _0x380329=_0x791a('0x25');return db['UserProfileResource'][_0x791a('0x23')]({'where':{'type':_0x380329,'resourceId':_0x1102c9['id']}})[_0x791a('0x22')](function(){return _0xe8e452;});})['then'](function(){_0x45a67d[_0x791a('0x18')](0xcc)[_0x791a('0x17')]();});}};}function handleEntityNotFound(_0x16dbaf,_0x4c1626){return function(_0x29194d){if(!_0x29194d){_0x16dbaf[_0x791a('0x16')](0x194);}return _0x29194d;};}function handleError(_0x2b0784,_0x395376){_0x395376=_0x395376||0x1f4;return function(_0x4f423){logger[_0x791a('0x26')](_0x4f423[_0x791a('0x27')]);if(_0x4f423[_0x791a('0x28')]){delete _0x4f423['name'];}_0x2b0784[_0x791a('0x18')](_0x395376)[_0x791a('0x29')](_0x4f423);};}exports[_0x791a('0x2a')]=function(_0x59d2c0,_0x1cdda9){var _0x5df656={},_0xc59f5e={},_0x2e4ec8={'count':0x0,'rows':[]};var _0xcde862=_[_0x791a('0x2b')](db[_0x791a('0x2c')][_0x791a('0x2d')],function(_0x15ff6e){return{'name':_0x15ff6e['fieldName'],'type':_0x15ff6e[_0x791a('0x2e')][_0x791a('0x2f')]};});_0xc59f5e[_0x791a('0x30')]=_[_0x791a('0x2b')](_0xcde862,_0x791a('0x28'));_0xc59f5e['query']=_[_0x791a('0x31')](_0x59d2c0[_0x791a('0x32')]);_0xc59f5e[_0x791a('0x33')]=_[_0x791a('0x34')](_0xc59f5e[_0x791a('0x30')],_0xc59f5e['query']);_0x5df656[_0x791a('0x35')]=_[_0x791a('0x34')](_0xc59f5e[_0x791a('0x30')],qs[_0x791a('0x36')](_0x59d2c0[_0x791a('0x32')]['fields']));_0x5df656[_0x791a('0x35')]=_0x5df656['attributes'][_0x791a('0x37')]?_0x5df656['attributes']:_0xc59f5e['model'];if(!_0x59d2c0[_0x791a('0x32')][_0x791a('0x38')](_0x791a('0x39'))){_0x5df656[_0x791a('0x3a')]=qs[_0x791a('0x3a')](_0x59d2c0[_0x791a('0x32')][_0x791a('0x3a')]);_0x5df656['offset']=qs[_0x791a('0x1a')](_0x59d2c0['query'][_0x791a('0x1a')]);}_0x5df656['order']=qs[_0x791a('0x3b')](_0x59d2c0[_0x791a('0x32')]['sort']);_0x5df656[_0x791a('0x3c')]=qs[_0x791a('0x33')](_['pick'](_0x59d2c0[_0x791a('0x32')],_0xc59f5e[_0x791a('0x33')]),_0xcde862);if(_0x59d2c0[_0x791a('0x32')][_0x791a('0x3d')]){_0x5df656[_0x791a('0x3c')]=_[_0x791a('0x3e')](_0x5df656[_0x791a('0x3c')],{'$or':_[_0x791a('0x2b')](_0xcde862,function(_0xc0fb63){if(_0xc0fb63[_0x791a('0x2e')]!=='VIRTUAL'){var _0x15f066={};_0x15f066[_0xc0fb63[_0x791a('0x28')]]={'$like':'%'+_0x59d2c0[_0x791a('0x32')]['filter']+'%'};return _0x15f066;}})});}_0x5df656=_[_0x791a('0x3e')]({},_0x5df656,_0x59d2c0['options']);var _0x5bad7d={'where':_0x5df656['where']};return db[_0x791a('0x2c')][_0x791a('0x1c')](_0x5bad7d)['then'](function(_0x415c44){_0x2e4ec8[_0x791a('0x1c')]=_0x415c44;if(_0x59d2c0[_0x791a('0x32')][_0x791a('0x3f')]){_0x5df656['include']=[{'all':!![]}];}return db['VoiceMail']['findAll'](_0x5df656);})[_0x791a('0x22')](function(_0x216dd3){_0x2e4ec8['rows']=_0x216dd3;return _0x2e4ec8;})[_0x791a('0x22')](respondWithFilteredResult(_0x1cdda9,_0x5df656))[_0x791a('0x40')](handleError(_0x1cdda9,null));};exports[_0x791a('0x41')]=function(_0x954164,_0x508727){var _0x11263d={'raw':!![],'where':{'id':_0x954164[_0x791a('0x42')]['id']}},_0x5911db={};_0x5911db[_0x791a('0x30')]=_[_0x791a('0x31')](db[_0x791a('0x2c')][_0x791a('0x2d')]);_0x5911db['query']=_[_0x791a('0x31')](_0x954164[_0x791a('0x32')]);_0x5911db[_0x791a('0x33')]=_[_0x791a('0x34')](_0x5911db[_0x791a('0x30')],_0x5911db['query']);_0x11263d[_0x791a('0x35')]=_[_0x791a('0x34')](_0x5911db['model'],qs['fields'](_0x954164[_0x791a('0x32')][_0x791a('0x36')]));_0x11263d[_0x791a('0x35')]=_0x11263d['attributes']['length']?_0x11263d[_0x791a('0x35')]:_0x5911db[_0x791a('0x30')];if(_0x954164['query'][_0x791a('0x3f')]){_0x11263d[_0x791a('0x43')]=[{'all':!![]}];}_0x11263d=_[_0x791a('0x3e')]({},_0x11263d,_0x954164['options']);return db['VoiceMail'][_0x791a('0x44')](_0x11263d)[_0x791a('0x22')](handleEntityNotFound(_0x508727,null))[_0x791a('0x22')](respondWithResult(_0x508727,null))[_0x791a('0x40')](handleError(_0x508727,null));};exports['create']=function(_0x2d7c7d,_0x9f768a){return db[_0x791a('0x2c')][_0x791a('0x45')](_0x2d7c7d['body'],{})[_0x791a('0x22')](function(_0x19654d){var _0xe0696b=_0x2d7c7d[_0x791a('0x46')][_0x791a('0x24')]({'plain':!![]});if(!_0xe0696b)throw new Error(_0x791a('0x47'));if(_0xe0696b[_0x791a('0x48')]==='user'){var _0xdcb1b=_0x19654d[_0x791a('0x24')]({'plain':!![]});var _0x4bffa6=_0x791a('0x25');return db[_0x791a('0x49')]['find']({'where':{'name':_0x4bffa6,'userProfileId':_0xe0696b[_0x791a('0x4a')]},'raw':!![]})[_0x791a('0x22')](function(_0x12178e){if(_0x12178e&&_0x12178e[_0x791a('0x4b')]===0x0){return db[_0x791a('0x4c')]['create']({'name':_0xdcb1b['name'],'resourceId':_0xdcb1b['id'],'type':_0x12178e['name'],'sectionId':_0x12178e['id']},{})[_0x791a('0x22')](function(){return _0x19654d;});}else{return _0x19654d;}})['catch'](function(_0x4c7555){logger[_0x791a('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c7555);throw _0x4c7555;});}return _0x19654d;})[_0x791a('0x22')](respondWithResult(_0x9f768a,0xc9))[_0x791a('0x40')](handleError(_0x9f768a,null));};exports['update']=function(_0x5166b5,_0x3599f6){if(_0x5166b5['body']['id']){delete _0x5166b5[_0x791a('0x4d')]['id'];}return db[_0x791a('0x2c')][_0x791a('0x44')]({'where':{'id':_0x5166b5['params']['id']}})[_0x791a('0x22')](handleEntityNotFound(_0x3599f6,null))[_0x791a('0x22')](saveUpdates(_0x5166b5['body'],null))[_0x791a('0x22')](respondWithResult(_0x3599f6,null))[_0x791a('0x40')](handleError(_0x3599f6,null));};exports[_0x791a('0x23')]=function(_0x34d53c,_0x450ad8){return db[_0x791a('0x2c')]['find']({'where':{'id':_0x34d53c['params']['id']}})[_0x791a('0x22')](handleEntityNotFound(_0x450ad8,null))['then'](removeEntity(_0x450ad8,null))[_0x791a('0x40')](handleError(_0x450ad8,null));};exports[_0x791a('0x4e')]=function(_0x18ad89,_0xf11dea,_0x3b760c){return db[_0x791a('0x2c')][_0x791a('0x4f')]({'where':{'id':_0x18ad89['params']['id']}})[_0x791a('0x22')](handleEntityNotFound(_0xf11dea,null))[_0x791a('0x22')](function(_0xc34c5b){var _0x1a4376;var _0x2d671f={},_0xe062f1={};_0xe062f1[_0x791a('0x30')]=_['keys'](db[_0x791a('0x50')]['rawAttributes']);_0xe062f1['query']=_[_0x791a('0x31')](_0x18ad89[_0x791a('0x32')]);_0xe062f1[_0x791a('0x33')]=_[_0x791a('0x34')](_0xe062f1[_0x791a('0x30')],_0xe062f1[_0x791a('0x32')]);_0x2d671f[_0x791a('0x35')]=_[_0x791a('0x34')](_0xe062f1[_0x791a('0x30')],qs[_0x791a('0x36')](_0x18ad89[_0x791a('0x32')][_0x791a('0x36')]));_0x2d671f[_0x791a('0x35')]=_0x2d671f[_0x791a('0x35')][_0x791a('0x37')]?_0x2d671f[_0x791a('0x35')]:_0xe062f1[_0x791a('0x30')];if(!_0x18ad89[_0x791a('0x32')][_0x791a('0x38')](_0x791a('0x39'))){_0x2d671f['limit']=qs[_0x791a('0x3a')](_0x18ad89[_0x791a('0x32')][_0x791a('0x3a')]);_0x2d671f[_0x791a('0x1a')]=qs[_0x791a('0x1a')](_0x18ad89['query'][_0x791a('0x1a')]);}_0x2d671f[_0x791a('0x51')]=qs[_0x791a('0x3b')](_0x18ad89[_0x791a('0x32')]['sort']);_0x2d671f[_0x791a('0x3c')]=qs['filters'](_['pick'](_0x18ad89['query'],_0xe062f1['filters']));if(_0x18ad89[_0x791a('0x32')][_0x791a('0x3d')]){_0x2d671f[_0x791a('0x3c')]=_[_0x791a('0x3e')](_0x2d671f[_0x791a('0x3c')],{'$or':_[_0x791a('0x2b')](_0x2d671f[_0x791a('0x35')],function(_0x5dca78){var _0x522cb8={};_0x522cb8[_0x5dca78]={'$like':'%'+_0x18ad89[_0x791a('0x32')][_0x791a('0x3d')]+'%'};return _0x522cb8;})});}_0x2d671f['where']=_['merge'](_0x2d671f[_0x791a('0x3c')],{'mailboxuser':_0xc34c5b[_0x791a('0x52')]});_0x2d671f=_['merge']({},_0x2d671f,_0x18ad89[_0x791a('0x53')]);return db[_0x791a('0x50')][_0x791a('0x54')](_0x2d671f)[_0x791a('0x22')](respondWithFilteredResult(_0xf11dea,_0x2d671f));})['catch'](handleError(_0xf11dea,null));};
\ No newline at end of file
index 4915f32..d1a2ce6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x648a=['mailbox','context','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','define','VoiceMail','mailbox_context'];(function(_0x2bd5e2,_0xca922c){var _0x248543=function(_0x6b72b8){while(--_0x6b72b8){_0x2bd5e2['push'](_0x2bd5e2['shift']());}};_0x248543(++_0xca922c);}(_0x648a,0x91));var _0xa648=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x648a[_0x255d5b];return _0x3e141a;};'use strict';var _=require(_0xa648('0x0'));var util=require(_0xa648('0x1'));var logger=require('../../config/logger')(_0xa648('0x2'));var moment=require(_0xa648('0x3'));var BPromise=require(_0xa648('0x4'));var rp=require(_0xa648('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa648('0x6'));var config=require(_0xa648('0x7'));var attributes=require('./voiceMail.attributes');module['exports']=function(_0x271406,_0x114bc5){return _0x271406[_0xa648('0x8')](_0xa648('0x9'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0xa648('0xa'),'fields':[_0xa648('0xb'),_0xa648('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d70=['voice_voicemail','context','lodash','util','api','bluebird','path','rimraf','../../config/environment','./voiceMail.attributes','exports','define'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x3d70,0x10a));var _0x03d7=function(_0x5e3a45,_0x45f0c5){_0x5e3a45=_0x5e3a45-0x0;var _0x13419f=_0x3d70[_0x5e3a45];return _0x13419f;};'use strict';var _=require(_0x03d7('0x0'));var util=require(_0x03d7('0x1'));var logger=require('../../config/logger')(_0x03d7('0x2'));var moment=require('moment');var BPromise=require(_0x03d7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x03d7('0x4'));var rimraf=require(_0x03d7('0x5'));var config=require(_0x03d7('0x6'));var attributes=require(_0x03d7('0x7'));module[_0x03d7('0x8')]=function(_0x38fc08,_0x5719f5){return _0x38fc08[_0x03d7('0x9')]('VoiceMail',attributes,{'tableName':_0x03d7('0xa'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':['mailbox',_0x03d7('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 3108e80..70bcad0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8217=['then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x337441,_0x58e955){var _0x544ad7=function(_0x1e0eb4){while(--_0x1e0eb4){_0x337441['push'](_0x337441['shift']());}};_0x544ad7(++_0x58e955);}(_0x8217,0x150));var _0x7821=function(_0x4d2993,_0x1c9473){_0x4d2993=_0x4d2993-0x0;var _0x427374=_0x8217[_0x4d2993];return _0x427374;};'use strict';var _=require(_0x7821('0x0'));var util=require(_0x7821('0x1'));var moment=require(_0x7821('0x2'));var BPromise=require(_0x7821('0x3'));var rs=require(_0x7821('0x4'));var fs=require('fs');var Redis=require(_0x7821('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7821('0x6'));var logger=require(_0x7821('0x7'))(_0x7821('0x8'));var config=require(_0x7821('0x9'));var jayson=require(_0x7821('0xa'));var client=jayson[_0x7821('0xb')][_0x7821('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x18081f,_0x4e1a17,_0x145952){return new BPromise(function(_0x3d7239,_0x22b5c0){return client[_0x7821('0xd')](_0x18081f,_0x145952)[_0x7821('0xe')](function(_0x3acb42){logger['info'](_0x7821('0xf'),_0x4e1a17,_0x7821('0x10'));logger[_0x7821('0x11')](_0x7821('0x12'),_0x4e1a17,_0x7821('0x10'),JSON[_0x7821('0x13')](_0x3acb42));if(_0x3acb42[_0x7821('0x14')]){if(_0x3acb42[_0x7821('0x14')][_0x7821('0x15')]===0x1f4){logger[_0x7821('0x14')](_0x7821('0xf'),_0x4e1a17,_0x3acb42[_0x7821('0x14')][_0x7821('0x16')]);return _0x22b5c0(_0x3acb42[_0x7821('0x14')][_0x7821('0x16')]);}logger[_0x7821('0x14')](_0x7821('0xf'),_0x4e1a17,_0x3acb42[_0x7821('0x14')]['message']);return _0x3d7239(_0x3acb42[_0x7821('0x14')]['message']);}else{logger[_0x7821('0x17')]('VoiceMail,\x20%s,\x20%s',_0x4e1a17,'request\x20sent');_0x3d7239(_0x3acb42[_0x7821('0x18')][_0x7821('0x16')]);}})['catch'](function(_0x56428b){logger[_0x7821('0x14')](_0x7821('0xf'),_0x4e1a17,_0x56428b);_0x22b5c0(_0x56428b);});});}
\ No newline at end of file
+var _0xbb2b=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch'];(function(_0x1bc7ac,_0x1d72cf){var _0x4ec745=function(_0xcc87c4){while(--_0xcc87c4){_0x1bc7ac['push'](_0x1bc7ac['shift']());}};_0x4ec745(++_0x1d72cf);}(_0xbb2b,0x1a2));var _0xbbb2=function(_0x75d78,_0x1becc3){_0x75d78=_0x75d78-0x0;var _0x3b7706=_0xbb2b[_0x75d78];return _0x3b7706;};'use strict';var _=require('lodash');var util=require(_0xbbb2('0x0'));var moment=require('moment');var BPromise=require(_0xbbb2('0x1'));var rs=require(_0xbbb2('0x2'));var fs=require('fs');var Redis=require(_0xbbb2('0x3'));var db=require(_0xbbb2('0x4'))['db'];var utils=require(_0xbbb2('0x5'));var logger=require(_0xbbb2('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbbb2('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x85f33a,_0x30cb8b,_0x12ed20){return new BPromise(function(_0x49e184,_0x34b8db){return client[_0xbbb2('0x8')](_0x85f33a,_0x12ed20)[_0xbbb2('0x9')](function(_0x5081fa){logger[_0xbbb2('0xa')](_0xbbb2('0xb'),_0x30cb8b,_0xbbb2('0xc'));logger[_0xbbb2('0xd')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x30cb8b,_0xbbb2('0xc'),JSON['stringify'](_0x5081fa));if(_0x5081fa[_0xbbb2('0xe')]){if(_0x5081fa[_0xbbb2('0xe')][_0xbbb2('0xf')]===0x1f4){logger[_0xbbb2('0xe')](_0xbbb2('0xb'),_0x30cb8b,_0x5081fa[_0xbbb2('0xe')][_0xbbb2('0x10')]);return _0x34b8db(_0x5081fa[_0xbbb2('0xe')][_0xbbb2('0x10')]);}logger[_0xbbb2('0xe')](_0xbbb2('0xb'),_0x30cb8b,_0x5081fa[_0xbbb2('0xe')][_0xbbb2('0x10')]);return _0x49e184(_0x5081fa[_0xbbb2('0xe')][_0xbbb2('0x10')]);}else{logger[_0xbbb2('0xa')](_0xbbb2('0xb'),_0x30cb8b,_0xbbb2('0xc'));_0x49e184(_0x5081fa[_0xbbb2('0x11')][_0xbbb2('0x10')]);}})[_0xbbb2('0x12')](function(_0x32ca8b){logger[_0xbbb2('0xe')](_0xbbb2('0xb'),_0x30cb8b,_0x32ca8b);_0x34b8db(_0x32ca8b);});});}
\ No newline at end of file
index 8bfafcc..257b4d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d5f=['create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./voiceMailMessage.controller','get','index','/:id','isAuthenticated','show','/:id/download','post'];(function(_0x530508,_0x16d0c4){var _0x2f7330=function(_0x46d8d2){while(--_0x46d8d2){_0x530508['push'](_0x530508['shift']());}};_0x2f7330(++_0x16d0c4);}(_0x1d5f,0x1aa));var _0xf1d5=function(_0x2a55f8,_0x540ac4){_0x2a55f8=_0x2a55f8-0x0;var _0x245efd=_0x1d5f[_0x2a55f8];return _0x245efd;};'use strict';var multer=require('multer');var util=require(_0xf1d5('0x0'));var path=require(_0xf1d5('0x1'));var timeout=require(_0xf1d5('0x2'));var express=require('express');var router=express[_0xf1d5('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf1d5('0x4'));var interaction=require(_0xf1d5('0x5'));var config=require('../../config/environment');var controller=require(_0xf1d5('0x6'));router[_0xf1d5('0x7')]('/',auth['isAuthenticated'](),controller[_0xf1d5('0x8')]);router[_0xf1d5('0x7')](_0xf1d5('0x9'),auth[_0xf1d5('0xa')](),controller[_0xf1d5('0xb')]);router[_0xf1d5('0x7')](_0xf1d5('0xc'),auth[_0xf1d5('0xa')](),controller['download']);router[_0xf1d5('0xd')]('/',auth[_0xf1d5('0xa')](),controller[_0xf1d5('0xe')]);router[_0xf1d5('0xf')](_0xf1d5('0x9'),auth['isAuthenticated'](),controller[_0xf1d5('0x10')]);router[_0xf1d5('0x11')](_0xf1d5('0x9'),auth[_0xf1d5('0xa')](),controller[_0xf1d5('0x12')]);module[_0xf1d5('0x13')]=router;
\ No newline at end of file
+var _0xd3e7=['show','/:id/download','download','post','create','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index'];(function(_0x2f3e66,_0x4d1f82){var _0x2d6116=function(_0x258d15){while(--_0x258d15){_0x2f3e66['push'](_0x2f3e66['shift']());}};_0x2d6116(++_0x4d1f82);}(_0xd3e7,0x107));var _0x7d3e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd3e7[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x7d3e('0x0'));var util=require(_0x7d3e('0x1'));var path=require(_0x7d3e('0x2'));var timeout=require(_0x7d3e('0x3'));var express=require(_0x7d3e('0x4'));var router=express[_0x7d3e('0x5')]();var fs_extra=require(_0x7d3e('0x6'));var auth=require(_0x7d3e('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x7d3e('0x8'));var controller=require(_0x7d3e('0x9'));router[_0x7d3e('0xa')]('/',auth[_0x7d3e('0xb')](),controller[_0x7d3e('0xc')]);router['get']('/:id',auth[_0x7d3e('0xb')](),controller[_0x7d3e('0xd')]);router[_0x7d3e('0xa')](_0x7d3e('0xe'),auth[_0x7d3e('0xb')](),controller[_0x7d3e('0xf')]);router[_0x7d3e('0x10')]('/',auth[_0x7d3e('0xb')](),controller[_0x7d3e('0x11')]);router[_0x7d3e('0x12')](_0x7d3e('0x13'),auth[_0x7d3e('0xb')](),controller['update']);router[_0x7d3e('0x14')](_0x7d3e('0x13'),auth['isAuthenticated'](),controller[_0x7d3e('0x15')]);module[_0x7d3e('0x16')]=router;
\ No newline at end of file
index a87834f..0ced614 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3275=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','STRING','BLOB','long','literal'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0x3275,0xb5));var _0x5327=function(_0x372863,_0x5d617d){_0x372863=_0x372863-0x0;var _0x55e46a=_0x3275[_0x372863];return _0x55e46a;};'use strict';var Sequelize=require(_0x5327('0x0'));module[_0x5327('0x1')]={'name':{'type':Sequelize[_0x5327('0x2')],'get':function(_0x58d5cf){return this[_0x5327('0x3')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x5327('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x5327('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize['STRING'],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x5327('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize[_0x5327('0x5')](_0x5327('0x6')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0x5327('0x4')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0x5327('0x7')](_0x5327('0x8'))}};
\ No newline at end of file
+var _0x290e=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','INTEGER','STRING','BLOB','long','TIMESTAMP','literal'];(function(_0x396e4d,_0xf36727){var _0x301bf4=function(_0x51e466){while(--_0x51e466){_0x396e4d['push'](_0x396e4d['shift']());}};_0x301bf4(++_0xf36727);}(_0x290e,0x1cd));var _0xe290=function(_0x46f04c,_0x23c4b9){_0x46f04c=_0x46f04c-0x0;var _0x26966a=_0x290e[_0x46f04c];return _0x26966a;};'use strict';var Sequelize=require(_0xe290('0x0'));module[_0xe290('0x1')]={'name':{'type':Sequelize[_0xe290('0x2')],'get':function(_0x40105a){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0xe290('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xe290('0x5')](_0xe290('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'stamp':{'type':_0xe290('0x7'),'defaultValue':Sequelize[_0xe290('0x8')](_0xe290('0x9'))}};
\ No newline at end of file
index 435fde4..3ff305b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa649=['undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','VoiceMailMessage','rawAttributes','fieldName','type','key','model','differenceBy','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','create','body','find','download','recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xa649,0x95));var _0x9a64=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xa649[_0x4b055c];return _0x4b62bb;};'use strict';var emlformat=require(_0x9a64('0x0'));var rimraf=require(_0x9a64('0x1'));var zipdir=require(_0x9a64('0x2'));var jsonpatch=require(_0x9a64('0x3'));var rp=require(_0x9a64('0x4'));var moment=require(_0x9a64('0x5'));var BPromise=require(_0x9a64('0x6'));var Mustache=require(_0x9a64('0x7'));var util=require('util');var path=require(_0x9a64('0x8'));var sox=require(_0x9a64('0x9'));var csv=require('to-csv');var ejs=require(_0x9a64('0xa'));var fs=require('fs');var fs_extra=require(_0x9a64('0xb'));var _=require(_0x9a64('0xc'));var squel=require(_0x9a64('0xd'));var crypto=require(_0x9a64('0xe'));var jsforce=require(_0x9a64('0xf'));var deskjs=require(_0x9a64('0x10'));var toCsv=require(_0x9a64('0x11'));var querystring=require(_0x9a64('0x12'));var Papa=require('papaparse');var Redis=require(_0x9a64('0x13'));var authService=require(_0x9a64('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9a64('0x15'));var logger=require(_0x9a64('0x16'))(_0x9a64('0x17'));var utils=require(_0x9a64('0x18'));var config=require(_0x9a64('0x19'));var licenseUtil=require(_0x9a64('0x1a'));var db=require(_0x9a64('0x1b'))['db'];function respondWithStatusCode(_0x861fc5,_0x57fb3f){_0x57fb3f=_0x57fb3f||0xcc;return function(_0x5ce9f9){if(_0x5ce9f9){return _0x861fc5[_0x9a64('0x1c')](_0x57fb3f);}return _0x861fc5[_0x9a64('0x1d')](_0x57fb3f)[_0x9a64('0x1e')]();};}function respondWithResult(_0x3a4fb0,_0x3cafa5){_0x3cafa5=_0x3cafa5||0xc8;return function(_0x3005f7){if(_0x3005f7){return _0x3a4fb0[_0x9a64('0x1d')](_0x3cafa5)[_0x9a64('0x1f')](_0x3005f7);}};}function respondWithFilteredResult(_0x27926f,_0x57fa65){return function(_0x4f0388){if(_0x4f0388){var _0x43cf01=typeof _0x57fa65[_0x9a64('0x20')]===_0x9a64('0x21')&&typeof _0x57fa65[_0x9a64('0x22')]===_0x9a64('0x21');var _0x4699a2=_0x4f0388[_0x9a64('0x23')];var _0x1cf4bf=_0x43cf01?0x0:_0x57fa65[_0x9a64('0x20')];var _0x1d9379=_0x43cf01?_0x4f0388[_0x9a64('0x23')]:_0x57fa65[_0x9a64('0x20')]+_0x57fa65['limit'];var _0x23817d;if(_0x1d9379>=_0x4699a2){_0x1d9379=_0x4699a2;_0x23817d=0xc8;}else{_0x23817d=0xce;}_0x27926f[_0x9a64('0x1d')](_0x23817d);return _0x27926f[_0x9a64('0x24')](_0x9a64('0x25'),_0x1cf4bf+'-'+_0x1d9379+'/'+_0x4699a2)['json'](_0x4f0388);}return null;};}function patchUpdates(_0x5bae29){return function(_0x5979f6){try{jsonpatch['apply'](_0x5979f6,_0x5bae29,!![]);}catch(_0x1548f1){return BPromise[_0x9a64('0x26')](_0x1548f1);}return _0x5979f6[_0x9a64('0x27')]();};}function saveUpdates(_0x5f3de7,_0x3f9c6b){return function(_0x5fa6f4){if(_0x5fa6f4){return _0x5fa6f4[_0x9a64('0x28')](_0x5f3de7)[_0x9a64('0x29')](function(_0x47379d){return _0x47379d;});}return null;};}function removeEntity(_0x3e9e73,_0xf80752){return function(_0x50fd52){if(_0x50fd52){return _0x50fd52[_0x9a64('0x2a')]()[_0x9a64('0x29')](function(){_0x3e9e73[_0x9a64('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1b3d22,_0x3b29e0){return function(_0x486fbc){if(!_0x486fbc){_0x1b3d22[_0x9a64('0x1c')](0x194);}return _0x486fbc;};}function handleError(_0x920efd,_0x447655){_0x447655=_0x447655||0x1f4;return function(_0x13cae2){logger[_0x9a64('0x2b')](_0x13cae2[_0x9a64('0x2c')]);if(_0x13cae2[_0x9a64('0x2d')]){delete _0x13cae2[_0x9a64('0x2d')];}_0x920efd[_0x9a64('0x1d')](_0x447655)[_0x9a64('0x2e')](_0x13cae2);};}exports[_0x9a64('0x2f')]=function(_0x53bab3,_0xdf72ab){var _0x11181d={},_0x3777a5={},_0x3811e5={'count':0x0,'rows':[]};var _0x26c0c1=_['map'](db[_0x9a64('0x30')][_0x9a64('0x31')],function(_0x234a0e){return{'name':_0x234a0e[_0x9a64('0x32')],'type':_0x234a0e[_0x9a64('0x33')][_0x9a64('0x34')]};});_0x3777a5[_0x9a64('0x35')]=_[_0x9a64('0x36')](_[_0x9a64('0x37')](_0x26c0c1,'name'),['name']);_0x3777a5['query']=_[_0x9a64('0x38')](_0x53bab3[_0x9a64('0x39')]);_0x3777a5[_0x9a64('0x3a')]=_[_0x9a64('0x3b')](_0x3777a5[_0x9a64('0x35')],_0x3777a5[_0x9a64('0x39')]);_0x11181d[_0x9a64('0x3c')]=_[_0x9a64('0x3b')](_0x3777a5[_0x9a64('0x35')],qs[_0x9a64('0x3d')](_0x53bab3[_0x9a64('0x39')][_0x9a64('0x3d')]));_0x11181d['attributes']=_0x11181d['attributes'][_0x9a64('0x3e')]?_0x11181d[_0x9a64('0x3c')]:_0x3777a5[_0x9a64('0x35')];if(!_0x53bab3['query'][_0x9a64('0x3f')](_0x9a64('0x40'))){_0x11181d[_0x9a64('0x22')]=qs[_0x9a64('0x22')](_0x53bab3['query'][_0x9a64('0x22')]);_0x11181d[_0x9a64('0x20')]=qs[_0x9a64('0x20')](_0x53bab3[_0x9a64('0x39')][_0x9a64('0x20')]);}_0x11181d[_0x9a64('0x41')]=qs['sort'](_0x53bab3[_0x9a64('0x39')][_0x9a64('0x42')]);_0x11181d[_0x9a64('0x43')]=qs[_0x9a64('0x3a')](_[_0x9a64('0x44')](_0x53bab3[_0x9a64('0x39')],_0x3777a5[_0x9a64('0x3a')]),_0x26c0c1);if(_0x53bab3[_0x9a64('0x39')][_0x9a64('0x45')]){_0x11181d[_0x9a64('0x43')]=_[_0x9a64('0x46')](_0x11181d['where'],{'$or':_[_0x9a64('0x37')](_0x26c0c1,function(_0x17582f){if(_0x17582f[_0x9a64('0x33')]!==_0x9a64('0x47')){var _0x33bd03={};_0x33bd03[_0x17582f[_0x9a64('0x2d')]]={'$like':'%'+_0x53bab3[_0x9a64('0x39')]['filter']+'%'};return _0x33bd03;}})});}_0x11181d=_[_0x9a64('0x46')]({},_0x11181d,_0x53bab3[_0x9a64('0x48')]);var _0x35ce98={'where':_0x11181d['where']};return db[_0x9a64('0x30')][_0x9a64('0x23')](_0x35ce98)['then'](function(_0x3334ab){_0x3811e5[_0x9a64('0x23')]=_0x3334ab;if(_0x53bab3[_0x9a64('0x39')][_0x9a64('0x49')]){_0x11181d[_0x9a64('0x4a')]=[{'all':!![]}];}return db[_0x9a64('0x30')]['findAll'](_0x11181d);})[_0x9a64('0x29')](function(_0xb1df12){_0x3811e5[_0x9a64('0x4b')]=_0xb1df12;return _0x3811e5;})['then'](respondWithFilteredResult(_0xdf72ab,_0x11181d))[_0x9a64('0x4c')](handleError(_0xdf72ab,null));};exports['show']=function(_0xa1ddec,_0x36f0e5){var _0x3e9feb={'raw':!![],'where':{'id':_0xa1ddec[_0x9a64('0x4d')]['id']}},_0x5c2516={};_0x5c2516['model']=_['keys'](db['VoiceMailMessage'][_0x9a64('0x31')]);_0x5c2516[_0x9a64('0x39')]=_[_0x9a64('0x38')](_0xa1ddec[_0x9a64('0x39')]);_0x5c2516[_0x9a64('0x3a')]=_[_0x9a64('0x3b')](_0x5c2516[_0x9a64('0x35')],_0x5c2516[_0x9a64('0x39')]);_0x3e9feb[_0x9a64('0x3c')]=_['intersection'](_0x5c2516[_0x9a64('0x35')],qs['fields'](_0xa1ddec[_0x9a64('0x39')][_0x9a64('0x3d')]));_0x3e9feb[_0x9a64('0x3c')]=_0x3e9feb[_0x9a64('0x3c')][_0x9a64('0x3e')]?_0x3e9feb[_0x9a64('0x3c')]:_0x5c2516[_0x9a64('0x35')];if(_0xa1ddec['query'][_0x9a64('0x49')]){_0x3e9feb['include']=[{'all':!![]}];}_0x3e9feb=_[_0x9a64('0x46')]({},_0x3e9feb,_0xa1ddec[_0x9a64('0x48')]);return db[_0x9a64('0x30')]['find'](_0x3e9feb)['then'](handleEntityNotFound(_0x36f0e5,null))[_0x9a64('0x29')](respondWithResult(_0x36f0e5,null))['catch'](handleError(_0x36f0e5,null));};exports[_0x9a64('0x4e')]=function(_0x5edf59,_0x2750cf){return db[_0x9a64('0x30')][_0x9a64('0x4e')](_0x5edf59['body'],{})[_0x9a64('0x29')](respondWithResult(_0x2750cf,0xc9))[_0x9a64('0x4c')](handleError(_0x2750cf,null));};exports['update']=function(_0x54e8c6,_0x340962){if(_0x54e8c6[_0x9a64('0x4f')]['id']){delete _0x54e8c6[_0x9a64('0x4f')]['id'];}return db['VoiceMailMessage'][_0x9a64('0x50')]({'where':{'id':_0x54e8c6[_0x9a64('0x4d')]['id']}})['then'](handleEntityNotFound(_0x340962,null))[_0x9a64('0x29')](saveUpdates(_0x54e8c6[_0x9a64('0x4f')],null))[_0x9a64('0x29')](respondWithResult(_0x340962,null))[_0x9a64('0x4c')](handleError(_0x340962,null));};exports[_0x9a64('0x2a')]=function(_0x2c771d,_0x127362){return db[_0x9a64('0x30')]['find']({'where':{'id':_0x2c771d['params']['id']}})['then'](handleEntityNotFound(_0x127362,null))[_0x9a64('0x29')](removeEntity(_0x127362,null))['catch'](handleError(_0x127362,null));};exports[_0x9a64('0x51')]=function(_0x446c23,_0x4f2987,_0x321e94){return db[_0x9a64('0x30')][_0x9a64('0x50')]({'where':{'id':_0x446c23['params']['id']},'attributes':['id',_0x9a64('0x52'),_0x9a64('0x53')]})['then'](handleEntityNotFound(_0x4f2987,null))['then'](function(_0x10c9a2){if(_0x10c9a2){if(!_0x10c9a2['recording']){throw new db[(_0x9a64('0x54'))][(_0x9a64('0x55'))](_0x9a64('0x56'));}var _0x474e1c={'Content-Type':_0x9a64('0x57'),'Content-Disposition':_0x9a64('0x58')};if(_0x10c9a2['msg_id']){_0x474e1c['Content-Disposition']=_0x9a64('0x59')+_0x10c9a2[_0x9a64('0x53')]+_0x9a64('0x5a');}_0x4f2987[_0x9a64('0x24')](_0x474e1c);return _0x4f2987[_0x9a64('0x2e')](new Buffer(_0x10c9a2[_0x9a64('0x52')]));}})[_0x9a64('0x4c')](handleError(_0x4f2987,null));};
\ No newline at end of file
+var _0xf2f6=['status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','destroy','error','name','index','VoiceMailMessage','rawAttributes','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','VIRTUAL','then','includeAll','include','rows','params','options','find','catch','create','body','update','download','msg_id','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end'];(function(_0xfb02c9,_0x43c274){var _0x9afb71=function(_0x56dff0){while(--_0x56dff0){_0xfb02c9['push'](_0xfb02c9['shift']());}};_0x9afb71(++_0x43c274);}(_0xf2f6,0x138));var _0x6f2f=function(_0x56a021,_0x3895ee){_0x56a021=_0x56a021-0x0;var _0x38a58=_0xf2f6[_0x56a021];return _0x38a58;};'use strict';var emlformat=require(_0x6f2f('0x0'));var rimraf=require(_0x6f2f('0x1'));var zipdir=require(_0x6f2f('0x2'));var jsonpatch=require(_0x6f2f('0x3'));var rp=require(_0x6f2f('0x4'));var moment=require('moment');var BPromise=require(_0x6f2f('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x6f2f('0x6'));var ejs=require(_0x6f2f('0x7'));var fs=require('fs');var fs_extra=require(_0x6f2f('0x8'));var _=require(_0x6f2f('0x9'));var squel=require(_0x6f2f('0xa'));var crypto=require('crypto');var jsforce=require(_0x6f2f('0xb'));var deskjs=require(_0x6f2f('0xc'));var toCsv=require(_0x6f2f('0x6'));var querystring=require(_0x6f2f('0xd'));var Papa=require('papaparse');var Redis=require(_0x6f2f('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6f2f('0xf'));var hardwareService=require(_0x6f2f('0x10'));var logger=require(_0x6f2f('0x11'))(_0x6f2f('0x12'));var utils=require(_0x6f2f('0x13'));var config=require(_0x6f2f('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x6f2f('0x15'))['db'];function respondWithStatusCode(_0x37a1c0,_0x5598be){_0x5598be=_0x5598be||0xcc;return function(_0x13e5f6){if(_0x13e5f6){return _0x37a1c0[_0x6f2f('0x16')](_0x5598be);}return _0x37a1c0['status'](_0x5598be)[_0x6f2f('0x17')]();};}function respondWithResult(_0x196932,_0x5962c9){_0x5962c9=_0x5962c9||0xc8;return function(_0x99b496){if(_0x99b496){return _0x196932[_0x6f2f('0x18')](_0x5962c9)[_0x6f2f('0x19')](_0x99b496);}};}function respondWithFilteredResult(_0x23d46b,_0x59d2f9){return function(_0x38b94f){if(_0x38b94f){var _0x2e23a7=typeof _0x59d2f9['offset']==='undefined'&&typeof _0x59d2f9[_0x6f2f('0x1a')]===_0x6f2f('0x1b');var _0x52bb41=_0x38b94f[_0x6f2f('0x1c')];var _0x49a367=_0x2e23a7?0x0:_0x59d2f9[_0x6f2f('0x1d')];var _0x4438d3=_0x2e23a7?_0x38b94f['count']:_0x59d2f9['offset']+_0x59d2f9[_0x6f2f('0x1a')];var _0x3665f0;if(_0x4438d3>=_0x52bb41){_0x4438d3=_0x52bb41;_0x3665f0=0xc8;}else{_0x3665f0=0xce;}_0x23d46b['status'](_0x3665f0);return _0x23d46b[_0x6f2f('0x1e')](_0x6f2f('0x1f'),_0x49a367+'-'+_0x4438d3+'/'+_0x52bb41)[_0x6f2f('0x19')](_0x38b94f);}return null;};}function patchUpdates(_0x3ca3a1){return function(_0x483800){try{jsonpatch[_0x6f2f('0x20')](_0x483800,_0x3ca3a1,!![]);}catch(_0xa16c20){return BPromise[_0x6f2f('0x21')](_0xa16c20);}return _0x483800[_0x6f2f('0x22')]();};}function saveUpdates(_0xf8c8be,_0x2962f3){return function(_0x50070c){if(_0x50070c){return _0x50070c['update'](_0xf8c8be)['then'](function(_0x42e016){return _0x42e016;});}return null;};}function removeEntity(_0x2d1119,_0x3df428){return function(_0x54dcb8){if(_0x54dcb8){return _0x54dcb8[_0x6f2f('0x23')]()['then'](function(){_0x2d1119['status'](0xcc)[_0x6f2f('0x17')]();});}};}function handleEntityNotFound(_0x1d684b,_0x3ad9ef){return function(_0x3a89cc){if(!_0x3a89cc){_0x1d684b['sendStatus'](0x194);}return _0x3a89cc;};}function handleError(_0xe33b66,_0x4dd965){_0x4dd965=_0x4dd965||0x1f4;return function(_0x1fbb59){logger[_0x6f2f('0x24')](_0x1fbb59['stack']);if(_0x1fbb59['name']){delete _0x1fbb59[_0x6f2f('0x25')];}_0xe33b66[_0x6f2f('0x18')](_0x4dd965)['send'](_0x1fbb59);};}exports[_0x6f2f('0x26')]=function(_0x2ad327,_0x24dc3e){var _0x5a591b={},_0xdeb4e6={},_0x4e894c={'count':0x0,'rows':[]};var _0x5ba062=_['map'](db[_0x6f2f('0x27')][_0x6f2f('0x28')],function(_0x5c6587){return{'name':_0x5c6587['fieldName'],'type':_0x5c6587[_0x6f2f('0x29')][_0x6f2f('0x2a')]};});_0xdeb4e6[_0x6f2f('0x2b')]=_[_0x6f2f('0x2c')](_['map'](_0x5ba062,_0x6f2f('0x25')),[_0x6f2f('0x25')]);_0xdeb4e6[_0x6f2f('0x2d')]=_[_0x6f2f('0x2e')](_0x2ad327[_0x6f2f('0x2d')]);_0xdeb4e6[_0x6f2f('0x2f')]=_['intersection'](_0xdeb4e6[_0x6f2f('0x2b')],_0xdeb4e6[_0x6f2f('0x2d')]);_0x5a591b[_0x6f2f('0x30')]=_[_0x6f2f('0x31')](_0xdeb4e6[_0x6f2f('0x2b')],qs[_0x6f2f('0x32')](_0x2ad327[_0x6f2f('0x2d')]['fields']));_0x5a591b['attributes']=_0x5a591b[_0x6f2f('0x30')][_0x6f2f('0x33')]?_0x5a591b[_0x6f2f('0x30')]:_0xdeb4e6[_0x6f2f('0x2b')];if(!_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x34')](_0x6f2f('0x35'))){_0x5a591b[_0x6f2f('0x1a')]=qs[_0x6f2f('0x1a')](_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x1a')]);_0x5a591b['offset']=qs['offset'](_0x2ad327['query'][_0x6f2f('0x1d')]);}_0x5a591b[_0x6f2f('0x36')]=qs[_0x6f2f('0x37')](_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x37')]);_0x5a591b['where']=qs['filters'](_[_0x6f2f('0x38')](_0x2ad327[_0x6f2f('0x2d')],_0xdeb4e6['filters']),_0x5ba062);if(_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x39')]){_0x5a591b[_0x6f2f('0x3a')]=_[_0x6f2f('0x3b')](_0x5a591b[_0x6f2f('0x3a')],{'$or':_[_0x6f2f('0x3c')](_0x5ba062,function(_0x5541fc){if(_0x5541fc['type']!==_0x6f2f('0x3d')){var _0x9cd0d1={};_0x9cd0d1[_0x5541fc[_0x6f2f('0x25')]]={'$like':'%'+_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x39')]+'%'};return _0x9cd0d1;}})});}_0x5a591b=_[_0x6f2f('0x3b')]({},_0x5a591b,_0x2ad327['options']);var _0xa632ca={'where':_0x5a591b[_0x6f2f('0x3a')]};return db['VoiceMailMessage'][_0x6f2f('0x1c')](_0xa632ca)[_0x6f2f('0x3e')](function(_0x5b639b){_0x4e894c[_0x6f2f('0x1c')]=_0x5b639b;if(_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x3f')]){_0x5a591b[_0x6f2f('0x40')]=[{'all':!![]}];}return db['VoiceMailMessage']['findAll'](_0x5a591b);})[_0x6f2f('0x3e')](function(_0x4b72f7){_0x4e894c[_0x6f2f('0x41')]=_0x4b72f7;return _0x4e894c;})[_0x6f2f('0x3e')](respondWithFilteredResult(_0x24dc3e,_0x5a591b))['catch'](handleError(_0x24dc3e,null));};exports['show']=function(_0xd61edf,_0x129606){var _0x2642fb={'raw':!![],'where':{'id':_0xd61edf[_0x6f2f('0x42')]['id']}},_0x5ebf00={};_0x5ebf00[_0x6f2f('0x2b')]=_['keys'](db[_0x6f2f('0x27')][_0x6f2f('0x28')]);_0x5ebf00['query']=_['keys'](_0xd61edf['query']);_0x5ebf00[_0x6f2f('0x2f')]=_[_0x6f2f('0x31')](_0x5ebf00[_0x6f2f('0x2b')],_0x5ebf00[_0x6f2f('0x2d')]);_0x2642fb[_0x6f2f('0x30')]=_[_0x6f2f('0x31')](_0x5ebf00[_0x6f2f('0x2b')],qs[_0x6f2f('0x32')](_0xd61edf[_0x6f2f('0x2d')][_0x6f2f('0x32')]));_0x2642fb[_0x6f2f('0x30')]=_0x2642fb['attributes']['length']?_0x2642fb[_0x6f2f('0x30')]:_0x5ebf00[_0x6f2f('0x2b')];if(_0xd61edf[_0x6f2f('0x2d')][_0x6f2f('0x3f')]){_0x2642fb[_0x6f2f('0x40')]=[{'all':!![]}];}_0x2642fb=_[_0x6f2f('0x3b')]({},_0x2642fb,_0xd61edf[_0x6f2f('0x43')]);return db[_0x6f2f('0x27')][_0x6f2f('0x44')](_0x2642fb)[_0x6f2f('0x3e')](handleEntityNotFound(_0x129606,null))[_0x6f2f('0x3e')](respondWithResult(_0x129606,null))[_0x6f2f('0x45')](handleError(_0x129606,null));};exports[_0x6f2f('0x46')]=function(_0x41be66,_0x58ddb1){return db[_0x6f2f('0x27')]['create'](_0x41be66[_0x6f2f('0x47')],{})['then'](respondWithResult(_0x58ddb1,0xc9))[_0x6f2f('0x45')](handleError(_0x58ddb1,null));};exports[_0x6f2f('0x48')]=function(_0x310aa1,_0x34800c){if(_0x310aa1[_0x6f2f('0x47')]['id']){delete _0x310aa1['body']['id'];}return db[_0x6f2f('0x27')][_0x6f2f('0x44')]({'where':{'id':_0x310aa1[_0x6f2f('0x42')]['id']}})['then'](handleEntityNotFound(_0x34800c,null))[_0x6f2f('0x3e')](saveUpdates(_0x310aa1[_0x6f2f('0x47')],null))['then'](respondWithResult(_0x34800c,null))[_0x6f2f('0x45')](handleError(_0x34800c,null));};exports[_0x6f2f('0x23')]=function(_0x5ea648,_0xc57e1c){return db[_0x6f2f('0x27')][_0x6f2f('0x44')]({'where':{'id':_0x5ea648[_0x6f2f('0x42')]['id']}})['then'](handleEntityNotFound(_0xc57e1c,null))[_0x6f2f('0x3e')](removeEntity(_0xc57e1c,null))[_0x6f2f('0x45')](handleError(_0xc57e1c,null));};exports[_0x6f2f('0x49')]=function(_0x28afb8,_0x3d730e,_0x4e9b56){return db[_0x6f2f('0x27')][_0x6f2f('0x44')]({'where':{'id':_0x28afb8[_0x6f2f('0x42')]['id']},'attributes':['id','recording',_0x6f2f('0x4a')]})[_0x6f2f('0x3e')](handleEntityNotFound(_0x3d730e,null))['then'](function(_0x446de1){if(_0x446de1){if(!_0x446de1[_0x6f2f('0x4b')]){throw new db[(_0x6f2f('0x4c'))][(_0x6f2f('0x4d'))](_0x6f2f('0x4e'));}var _0x2396fd={'Content-Type':_0x6f2f('0x4f'),'Content-Disposition':_0x6f2f('0x50')};if(_0x446de1[_0x6f2f('0x4a')]){_0x2396fd[_0x6f2f('0x51')]=_0x6f2f('0x52')+_0x446de1[_0x6f2f('0x4a')]+_0x6f2f('0x53');}_0x3d730e[_0x6f2f('0x1e')](_0x2396fd);return _0x3d730e['send'](new Buffer(_0x446de1[_0x6f2f('0x4b')]));}})[_0x6f2f('0x45')](handleError(_0x3d730e,null));};
\ No newline at end of file
index 2f4dbc9..0477283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac7f=['voice_voicemail_messages','dir','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./voiceMailMessage.attributes','define'];(function(_0x58a18a,_0x1d948a){var _0x504330=function(_0x2be3d2){while(--_0x2be3d2){_0x58a18a['push'](_0x58a18a['shift']());}};_0x504330(++_0x1d948a);}(_0xac7f,0x12e));var _0xfac7=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xac7f[_0x50007c];return _0x5c1ec7;};'use strict';var _=require(_0xfac7('0x0'));var util=require(_0xfac7('0x1'));var logger=require('../../config/logger')(_0xfac7('0x2'));var moment=require(_0xfac7('0x3'));var BPromise=require(_0xfac7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfac7('0x5'));var rimraf=require(_0xfac7('0x6'));var config=require(_0xfac7('0x7'));var attributes=require(_0xfac7('0x8'));module['exports']=function(_0x48be8f,_0x4d9971){return _0x48be8f[_0xfac7('0x9')]('VoiceMailMessage',attributes,{'tableName':_0xfac7('0xa'),'paranoid':![],'indexes':[{'name':_0xfac7('0xb'),'fields':[_0xfac7('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xe2a2=['path','rimraf','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','bluebird','request-promise'];(function(_0x23439c,_0x5baf43){var _0x5f0922=function(_0x34406f){while(--_0x34406f){_0x23439c['push'](_0x23439c['shift']());}};_0x5f0922(++_0x5baf43);}(_0xe2a2,0x188));var _0x2e2a=function(_0x2ce73a,_0x36d330){_0x2ce73a=_0x2ce73a-0x0;var _0x3c21d1=_0xe2a2[_0x2ce73a];return _0x3c21d1;};'use strict';var _=require(_0x2e2a('0x0'));var util=require(_0x2e2a('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x2e2a('0x2'));var rp=require(_0x2e2a('0x3'));var fs=require('fs');var path=require(_0x2e2a('0x4'));var rimraf=require(_0x2e2a('0x5'));var config=require('../../config/environment');var attributes=require(_0x2e2a('0x6'));module[_0x2e2a('0x7')]=function(_0x3b9428,_0x24c6f8){return _0x3b9428[_0x2e2a('0x8')](_0x2e2a('0x9'),attributes,{'tableName':_0x2e2a('0xa'),'paranoid':![],'indexes':[{'name':_0x2e2a('0xb'),'fields':[_0x2e2a('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index e67d9cc..3eb1775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6916=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','moment','bluebird'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x6916,0x16e));var _0x6691=function(_0x216973,_0x5c3a3a){_0x216973=_0x216973-0x0;var _0x911f42=_0x6916[_0x216973];return _0x911f42;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6691('0x0'));var BPromise=require(_0x6691('0x1'));var rs=require(_0x6691('0x2'));var fs=require('fs');var Redis=require(_0x6691('0x3'));var db=require(_0x6691('0x4'))['db'];var utils=require(_0x6691('0x5'));var logger=require(_0x6691('0x6'))(_0x6691('0x7'));var config=require(_0x6691('0x8'));var jayson=require(_0x6691('0x9'));var client=jayson[_0x6691('0xa')][_0x6691('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b8f9b,_0xdb5c1,_0x37ec41){return new BPromise(function(_0x320631,_0x4526ed){return client[_0x6691('0xc')](_0x4b8f9b,_0x37ec41)[_0x6691('0xd')](function(_0x261e45){logger[_0x6691('0xe')](_0x6691('0xf'),_0xdb5c1,_0x6691('0x10'));logger[_0x6691('0x11')](_0x6691('0x12'),_0xdb5c1,_0x6691('0x10'),JSON[_0x6691('0x13')](_0x261e45));if(_0x261e45[_0x6691('0x14')]){if(_0x261e45[_0x6691('0x14')]['code']===0x1f4){logger[_0x6691('0x14')](_0x6691('0xf'),_0xdb5c1,_0x261e45['error'][_0x6691('0x15')]);return _0x4526ed(_0x261e45[_0x6691('0x14')][_0x6691('0x15')]);}logger[_0x6691('0x14')]('VoiceMailMessage,\x20%s,\x20%s',_0xdb5c1,_0x261e45[_0x6691('0x14')][_0x6691('0x15')]);return _0x320631(_0x261e45[_0x6691('0x14')][_0x6691('0x15')]);}else{logger['info'](_0x6691('0xf'),_0xdb5c1,_0x6691('0x10'));_0x320631(_0x261e45[_0x6691('0x16')]['message']);}})['catch'](function(_0x15d268){logger[_0x6691('0x14')]('VoiceMailMessage,\x20%s,\x20%s',_0xdb5c1,_0x15d268);_0x4526ed(_0x15d268);});});}
\ No newline at end of file
+var _0xd5e2=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','util','randomstring'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0xd5e2,0x142));var _0x2d5e=function(_0x5a559c,_0xb34e0b){_0x5a559c=_0x5a559c-0x0;var _0x1a4bd9=_0xd5e2[_0x5a559c];return _0x1a4bd9;};'use strict';var _=require('lodash');var util=require(_0x2d5e('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2d5e('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2d5e('0x2'))(_0x2d5e('0x3'));var config=require(_0x2d5e('0x4'));var jayson=require(_0x2d5e('0x5'));var client=jayson[_0x2d5e('0x6')][_0x2d5e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x17783b,_0x1ced8e,_0x1e7fb1){return new BPromise(function(_0x352e6d,_0x2d83f4){return client[_0x2d5e('0x8')](_0x17783b,_0x1e7fb1)['then'](function(_0x53e0e8){logger['info'](_0x2d5e('0x9'),_0x1ced8e,_0x2d5e('0xa'));logger[_0x2d5e('0xb')](_0x2d5e('0xc'),_0x1ced8e,_0x2d5e('0xa'),JSON[_0x2d5e('0xd')](_0x53e0e8));if(_0x53e0e8['error']){if(_0x53e0e8[_0x2d5e('0xe')]['code']===0x1f4){logger[_0x2d5e('0xe')](_0x2d5e('0x9'),_0x1ced8e,_0x53e0e8['error'][_0x2d5e('0xf')]);return _0x2d83f4(_0x53e0e8[_0x2d5e('0xe')]['message']);}logger['error'](_0x2d5e('0x9'),_0x1ced8e,_0x53e0e8[_0x2d5e('0xe')][_0x2d5e('0xf')]);return _0x352e6d(_0x53e0e8[_0x2d5e('0xe')][_0x2d5e('0xf')]);}else{logger[_0x2d5e('0x10')](_0x2d5e('0x9'),_0x1ced8e,_0x2d5e('0xa'));_0x352e6d(_0x53e0e8[_0x2d5e('0x11')][_0x2d5e('0xf')]);}})['catch'](function(_0x55ddf1){logger[_0x2d5e('0xe')]('VoiceMailMessage,\x20%s,\x20%s',_0x1ced8e,_0x55ddf1);_0x2d83f4(_0x55ddf1);});});}
\ No newline at end of file
index 34d0a29..ddae9fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe633=['show','/:id/sounds','getSounds','create','post','addSound','put','/:id','update','delete','/:id/sounds/:id2','removeSound','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','index','get','isAuthenticated'];(function(_0x91ddd,_0x3629cf){var _0x134ec9=function(_0x2dcdc8){while(--_0x2dcdc8){_0x91ddd['push'](_0x91ddd['shift']());}};_0x134ec9(++_0x3629cf);}(_0xe633,0x1e0));var _0x3e63=function(_0x54767d,_0x37cab7){_0x54767d=_0x54767d-0x0;var _0x22f8d7=_0xe633[_0x54767d];return _0x22f8d7;};'use strict';var multer=require(_0x3e63('0x0'));var util=require(_0x3e63('0x1'));var path=require(_0x3e63('0x2'));var timeout=require(_0x3e63('0x3'));var express=require(_0x3e63('0x4'));var router=express[_0x3e63('0x5')]();var fs_extra=require(_0x3e63('0x6'));var auth=require(_0x3e63('0x7'));var interaction=require(_0x3e63('0x8'));var config=require(_0x3e63('0x9'));var controller=require(_0x3e63('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x3e63('0xb')]);router[_0x3e63('0xc')]('/:id',auth[_0x3e63('0xd')](),controller[_0x3e63('0xe')]);router[_0x3e63('0xc')](_0x3e63('0xf'),auth[_0x3e63('0xd')](),controller[_0x3e63('0x10')]);router['post']('/',auth[_0x3e63('0xd')](),controller[_0x3e63('0x11')]);router[_0x3e63('0x12')]('/:id/sounds',auth[_0x3e63('0xd')](),controller[_0x3e63('0x13')]);router[_0x3e63('0x14')](_0x3e63('0x15'),auth[_0x3e63('0xd')](),controller[_0x3e63('0x16')]);router[_0x3e63('0x17')](_0x3e63('0x15'),auth['isAuthenticated'](),controller['destroy']);router[_0x3e63('0x17')](_0x3e63('0x18'),auth['isAuthenticated'](),controller[_0x3e63('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x4747=['../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','isAuthenticated','index','get','/:id','show','/:id/sounds','getSounds','post','create','addSound','put','delete','/:id/sounds/:id2','removeSound','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x1f2419,_0x557b91){var _0x2b56c5=function(_0x40255b){while(--_0x40255b){_0x1f2419['push'](_0x1f2419['shift']());}};_0x2b56c5(++_0x557b91);}(_0x4747,0x19d));var _0x7474=function(_0x1e203a,_0x397111){_0x1e203a=_0x1e203a-0x0;var _0x2a5006=_0x4747[_0x1e203a];return _0x2a5006;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7474('0x0'));var timeout=require(_0x7474('0x1'));var express=require(_0x7474('0x2'));var router=express[_0x7474('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x7474('0x4'));var interaction=require(_0x7474('0x5'));var config=require(_0x7474('0x6'));var controller=require(_0x7474('0x7'));router['get']('/',auth[_0x7474('0x8')](),controller[_0x7474('0x9')]);router[_0x7474('0xa')](_0x7474('0xb'),auth[_0x7474('0x8')](),controller[_0x7474('0xc')]);router['get'](_0x7474('0xd'),auth['isAuthenticated'](),controller[_0x7474('0xe')]);router[_0x7474('0xf')]('/',auth[_0x7474('0x8')](),controller[_0x7474('0x10')]);router['post'](_0x7474('0xd'),auth[_0x7474('0x8')](),controller[_0x7474('0x11')]);router[_0x7474('0x12')](_0x7474('0xb'),auth[_0x7474('0x8')](),controller['update']);router[_0x7474('0x13')]('/:id',auth[_0x7474('0x8')](),controller['destroy']);router[_0x7474('0x13')](_0x7474('0x14'),auth[_0x7474('0x8')](),controller[_0x7474('0x15')]);module['exports']=router;
\ No newline at end of file
index ad7e60d..2840ee1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5c1=['quietmp3','mp3','alpha','TIMESTAMP','exports','STRING','name','ENUM','custom','files'];(function(_0x4c60f5,_0x2cf853){var _0x2e158a=function(_0x190f2f){while(--_0x190f2f){_0x4c60f5['push'](_0x4c60f5['shift']());}};_0x2e158a(++_0x2cf853);}(_0xa5c1,0x86));var _0x1a5c=function(_0x36b469,_0x59be55){_0x36b469=_0x36b469-0x0;var _0xea9354=_0xa5c1[_0x36b469];return _0xea9354;};'use strict';var Sequelize=require('sequelize');module[_0x1a5c('0x0')]={'name':{'type':Sequelize[_0x1a5c('0x1')],'allowNull':![],'unique':_0x1a5c('0x2')},'mode':{'type':Sequelize[_0x1a5c('0x3')](_0x1a5c('0x4'),_0x1a5c('0x5'),'mp3nb','quietmp3nb',_0x1a5c('0x6'),_0x1a5c('0x7')),'allowNull':!![],'defaultValue':_0x1a5c('0x5')},'directory':{'type':Sequelize[_0x1a5c('0x1')],'allowNull':!![]},'application':{'type':Sequelize[_0x1a5c('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0x1a5c('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x1a5c('0x1')],'allowNull':!![],'defaultValue':_0x1a5c('0x8')},'format':{'type':Sequelize[_0x1a5c('0x1')],'allowNull':!![]},'stamp':{'type':_0x1a5c('0x9')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3258=['mp3','TIMESTAMP','BOOLEAN','sequelize','STRING','name','ENUM','custom','files','mp3nb','quietmp3nb','quietmp3'];(function(_0x1a4a89,_0x5f18f5){var _0x46bbef=function(_0x1fbc87){while(--_0x1fbc87){_0x1a4a89['push'](_0x1a4a89['shift']());}};_0x46bbef(++_0x5f18f5);}(_0x3258,0x9f));var _0x8325=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3258[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x8325('0x0'));module['exports']={'name':{'type':Sequelize[_0x8325('0x1')],'allowNull':![],'unique':_0x8325('0x2')},'mode':{'type':Sequelize[_0x8325('0x3')](_0x8325('0x4'),_0x8325('0x5'),_0x8325('0x6'),_0x8325('0x7'),_0x8325('0x8'),_0x8325('0x9')),'allowNull':!![],'defaultValue':_0x8325('0x5')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0x8325('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0x8325('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x8325('0x1')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x8325('0x1')],'allowNull':!![]},'stamp':{'type':_0x8325('0xa')},'defaultEntry':{'type':Sequelize[_0x8325('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index 34a5415..32263a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90e1=['rows','catch','show','params','fields','find','body','create','sequelize','transaction','mode','join','root','mkdirSync','directory','user','get','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','rmdirSync','ValidationError','message','addSound','findOne','converted_format','createdAt','server/files/sounds/converted','format','basename','extname','save_name','server/files/moh','%s.%s','Sequelize','id2','getSounds','Sound','options','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','destroy','MusicOnHolds','then','error','stack','name','index','map','VoiceMusicOnHold','rawAttributes','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','include','findAll'];(function(_0x32da6e,_0x5245ea){var _0xb4bc=function(_0x3fabc0){while(--_0x3fabc0){_0x32da6e['push'](_0x32da6e['shift']());}};_0xb4bc(++_0x5245ea);}(_0x90e1,0x1d5));var _0x190e=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x90e1[_0x4a9fb1];return _0x348672;};'use strict';var emlformat=require(_0x190e('0x0'));var rimraf=require(_0x190e('0x1'));var zipdir=require(_0x190e('0x2'));var jsonpatch=require(_0x190e('0x3'));var rp=require(_0x190e('0x4'));var moment=require(_0x190e('0x5'));var BPromise=require(_0x190e('0x6'));var Mustache=require(_0x190e('0x7'));var util=require(_0x190e('0x8'));var path=require(_0x190e('0x9'));var sox=require('sox');var csv=require(_0x190e('0xa'));var ejs=require(_0x190e('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x190e('0xc'));var squel=require('squel');var crypto=require(_0x190e('0xd'));var jsforce=require(_0x190e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x190e('0xa'));var querystring=require(_0x190e('0xf'));var Papa=require(_0x190e('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x190e('0x11'));var as=require(_0x190e('0x12'));var hardwareService=require(_0x190e('0x13'));var logger=require(_0x190e('0x14'))(_0x190e('0x15'));var utils=require(_0x190e('0x16'));var config=require(_0x190e('0x17'));var licenseUtil=require(_0x190e('0x18'));var db=require(_0x190e('0x19'))['db'];function respondWithStatusCode(_0x182dc6,_0x3a5a30){_0x3a5a30=_0x3a5a30||0xcc;return function(_0x34aafd){if(_0x34aafd){return _0x182dc6[_0x190e('0x1a')](_0x3a5a30);}return _0x182dc6[_0x190e('0x1b')](_0x3a5a30)[_0x190e('0x1c')]();};}function respondWithResult(_0x207b58,_0x9b37d9){_0x9b37d9=_0x9b37d9||0xc8;return function(_0xaec0b6){if(_0xaec0b6){return _0x207b58[_0x190e('0x1b')](_0x9b37d9)[_0x190e('0x1d')](_0xaec0b6);}};}function respondWithFilteredResult(_0x1a6072,_0x9b64a5){return function(_0x4e7877){if(_0x4e7877){var _0x5765f7=typeof _0x9b64a5[_0x190e('0x1e')]==='undefined'&&typeof _0x9b64a5[_0x190e('0x1f')]===_0x190e('0x20');var _0x55db84=_0x4e7877[_0x190e('0x21')];var _0x5efda4=_0x5765f7?0x0:_0x9b64a5[_0x190e('0x1e')];var _0x4d6bf0=_0x5765f7?_0x4e7877[_0x190e('0x21')]:_0x9b64a5[_0x190e('0x1e')]+_0x9b64a5[_0x190e('0x1f')];var _0x2175cc;if(_0x4d6bf0>=_0x55db84){_0x4d6bf0=_0x55db84;_0x2175cc=0xc8;}else{_0x2175cc=0xce;}_0x1a6072[_0x190e('0x1b')](_0x2175cc);return _0x1a6072[_0x190e('0x22')](_0x190e('0x23'),_0x5efda4+'-'+_0x4d6bf0+'/'+_0x55db84)['json'](_0x4e7877);}return null;};}function patchUpdates(_0x4e838d){return function(_0x48ecb1){try{jsonpatch['apply'](_0x48ecb1,_0x4e838d,!![]);}catch(_0x3737cd){return BPromise['reject'](_0x3737cd);}return _0x48ecb1['save']();};}function saveUpdates(_0x5cbb7c,_0x11340b){return function(_0x570727){if(_0x570727){return _0x570727['update'](_0x5cbb7c)['then'](function(_0x210a2d){return _0x210a2d;});}return null;};}function removeEntity(_0x4b4276,_0x540bf1){return function(_0x41972f){if(_0x41972f){return _0x41972f[_0x190e('0x24')]()['then'](function(){var _0x128fe9=_0x41972f['get']({'plain':!![]});var _0x133ed8=_0x190e('0x25');return db['UserProfileResource'][_0x190e('0x24')]({'where':{'type':_0x133ed8,'resourceId':_0x128fe9['id']}})[_0x190e('0x26')](function(){return _0x41972f;});})[_0x190e('0x26')](function(){_0x4b4276[_0x190e('0x1b')](0xcc)[_0x190e('0x1c')]();});}};}function handleEntityNotFound(_0x47c147,_0x120b25){return function(_0x287da9){if(!_0x287da9){_0x47c147[_0x190e('0x1a')](0x194);}return _0x287da9;};}function handleError(_0x304493,_0x10b7b2){_0x10b7b2=_0x10b7b2||0x1f4;return function(_0x19e0ad){logger[_0x190e('0x27')](_0x19e0ad[_0x190e('0x28')]);if(_0x19e0ad[_0x190e('0x29')]){delete _0x19e0ad[_0x190e('0x29')];}_0x304493['status'](_0x10b7b2)['send'](_0x19e0ad);};}exports[_0x190e('0x2a')]=function(_0x2b922e,_0x4f12de){var _0x2b4862={},_0x4b1217={},_0x56b6d6={'count':0x0,'rows':[]};var _0x33b202=_[_0x190e('0x2b')](db[_0x190e('0x2c')][_0x190e('0x2d')],function(_0x549e2f){return{'name':_0x549e2f['fieldName'],'type':_0x549e2f['type']['key']};});_0x4b1217[_0x190e('0x2e')]=_['map'](_0x33b202,_0x190e('0x29'));_0x4b1217['query']=_[_0x190e('0x2f')](_0x2b922e[_0x190e('0x30')]);_0x4b1217[_0x190e('0x31')]=_[_0x190e('0x32')](_0x4b1217[_0x190e('0x2e')],_0x4b1217[_0x190e('0x30')]);_0x2b4862[_0x190e('0x33')]=_['intersection'](_0x4b1217[_0x190e('0x2e')],qs['fields'](_0x2b922e[_0x190e('0x30')]['fields']));_0x2b4862[_0x190e('0x33')]=_0x2b4862[_0x190e('0x33')][_0x190e('0x34')]?_0x2b4862[_0x190e('0x33')]:_0x4b1217[_0x190e('0x2e')];if(!_0x2b922e[_0x190e('0x30')][_0x190e('0x35')](_0x190e('0x36'))){_0x2b4862[_0x190e('0x1f')]=qs[_0x190e('0x1f')](_0x2b922e[_0x190e('0x30')][_0x190e('0x1f')]);_0x2b4862[_0x190e('0x1e')]=qs[_0x190e('0x1e')](_0x2b922e[_0x190e('0x30')]['offset']);}_0x2b4862[_0x190e('0x37')]=qs['sort'](_0x2b922e[_0x190e('0x30')]['sort']);delete _0x2b922e['query'][_0x190e('0x38')];_0x2b4862[_0x190e('0x39')]=qs['filters'](_[_0x190e('0x3a')](_0x2b922e[_0x190e('0x30')],_0x4b1217['filters']),_0x33b202);if(_0x2b922e[_0x190e('0x30')][_0x190e('0x3b')]){_0x2b4862['where']=_['merge'](_0x2b4862[_0x190e('0x39')],{'$or':_['map'](_0x33b202,function(_0x4f18ca){if(_0x4f18ca[_0x190e('0x3c')]!==_0x190e('0x3d')){var _0xc859d6={};_0xc859d6[_0x4f18ca[_0x190e('0x29')]]={'$like':'%'+_0x2b922e[_0x190e('0x30')]['filter']+'%'};return _0xc859d6;}})});}_0x2b4862=_[_0x190e('0x3e')]({},_0x2b4862,_0x2b922e['options']);var _0x3c01df={'where':_0x2b4862['where']};return db[_0x190e('0x2c')][_0x190e('0x21')](_0x3c01df)[_0x190e('0x26')](function(_0x770402){_0x56b6d6[_0x190e('0x21')]=_0x770402;if(_0x2b922e['query'][_0x190e('0x3f')]){_0x2b4862[_0x190e('0x40')]=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0x190e('0x41')](_0x2b4862);})['then'](function(_0x19aaa9){_0x56b6d6[_0x190e('0x42')]=_0x19aaa9;return _0x56b6d6;})[_0x190e('0x26')](respondWithFilteredResult(_0x4f12de,_0x2b4862))[_0x190e('0x43')](handleError(_0x4f12de,null));};exports[_0x190e('0x44')]=function(_0x16850a,_0x1264b4){var _0x52f081={'raw':![],'where':{'id':_0x16850a[_0x190e('0x45')]['id']}},_0x18d1d6={};_0x18d1d6['model']=_[_0x190e('0x2f')](db['VoiceMusicOnHold'][_0x190e('0x2d')]);_0x18d1d6[_0x190e('0x30')]=_[_0x190e('0x2f')](_0x16850a[_0x190e('0x30')]);_0x18d1d6[_0x190e('0x31')]=_[_0x190e('0x32')](_0x18d1d6[_0x190e('0x2e')],_0x18d1d6[_0x190e('0x30')]);_0x52f081[_0x190e('0x33')]=_[_0x190e('0x32')](_0x18d1d6[_0x190e('0x2e')],qs[_0x190e('0x46')](_0x16850a['query'][_0x190e('0x46')]));_0x52f081['attributes']=_0x52f081['attributes'][_0x190e('0x34')]?_0x52f081[_0x190e('0x33')]:_0x18d1d6[_0x190e('0x2e')];if(_0x16850a['query'][_0x190e('0x3f')]){_0x52f081[_0x190e('0x40')]=[{'all':!![]}];}_0x52f081=_['merge']({},_0x52f081,_0x16850a['options']);return db[_0x190e('0x2c')][_0x190e('0x47')](_0x52f081)[_0x190e('0x26')](handleEntityNotFound(_0x1264b4,null))['then'](respondWithResult(_0x1264b4,null))[_0x190e('0x43')](handleError(_0x1264b4,null));};exports['update']=function(_0x396977,_0x33c69f){if(_0x396977[_0x190e('0x48')]['id']){delete _0x396977[_0x190e('0x48')]['id'];}return db[_0x190e('0x2c')]['find']({'where':{'id':_0x396977[_0x190e('0x45')]['id']}})[_0x190e('0x26')](handleEntityNotFound(_0x33c69f,null))[_0x190e('0x26')](saveUpdates(_0x396977[_0x190e('0x48')],null))[_0x190e('0x26')](respondWithResult(_0x33c69f,null))[_0x190e('0x43')](handleError(_0x33c69f,null));};exports[_0x190e('0x49')]=function(_0x7bcb6c,_0x19359e,_0x51802c){return db[_0x190e('0x4a')][_0x190e('0x4b')](function(_0x12afb7){if(_0x7bcb6c[_0x190e('0x48')][_0x190e('0x4c')]==='files'){_0x7bcb6c['body']['directory']=path[_0x190e('0x4d')](config[_0x190e('0x4e')],'server/files/moh',_0x7bcb6c[_0x190e('0x48')][_0x190e('0x29')]);}return db[_0x190e('0x2c')][_0x190e('0x49')](_0x7bcb6c[_0x190e('0x48')],{'transaction':_0x12afb7})['then'](function(_0x4e3962){if(_0x7bcb6c[_0x190e('0x48')]['mode']==='files'){fs[_0x190e('0x4f')](_0x4e3962[_0x190e('0x50')],parseInt('0777',0x8));}var _0x1c0498=_0x7bcb6c[_0x190e('0x51')][_0x190e('0x52')]({'plain':!![]});if(!_0x1c0498)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1c0498['role']===_0x190e('0x51')){var _0x485213=_0x4e3962[_0x190e('0x52')]({'plain':!![]});return db[_0x190e('0x53')][_0x190e('0x47')]({'where':{'name':_0x190e('0x25'),'userProfileId':_0x1c0498['userProfileId']},'raw':!![]})[_0x190e('0x26')](function(_0x4fef05){if(_0x4fef05&&_0x4fef05[_0x190e('0x54')]===0x0){return db[_0x190e('0x55')][_0x190e('0x49')]({'name':_0x485213['name'],'resourceId':_0x485213['id'],'type':_0x4fef05[_0x190e('0x29')],'sectionId':_0x4fef05['id']},{})[_0x190e('0x26')](function(){return _0x4e3962;});}else{return _0x4e3962;}})[_0x190e('0x43')](function(_0x1f793e){logger['error'](_0x190e('0x56'),_0x1f793e);});}return _0x4e3962;});})[_0x190e('0x26')](respondWithResult(_0x19359e,0xc9))[_0x190e('0x43')](handleError(_0x19359e,null));};exports[_0x190e('0x24')]=function(_0x1a09c5,_0x28e229,_0x130046){var _0x2796c4;return db[_0x190e('0x2c')][_0x190e('0x47')]({'where':{'id':_0x1a09c5[_0x190e('0x45')]['id']}})[_0x190e('0x26')](function(_0x2ed9b3){if(_0x2ed9b3){return db[_0x190e('0x4a')][_0x190e('0x4b')](function(_0x3c2636){return _0x2ed9b3['destroy']({'transaction':_0x3c2636,'raw':!![]})[_0x190e('0x26')](function(_0x26b7a3){if(_0x26b7a3[_0x190e('0x50')]){fs['readdirSync'](_0x26b7a3[_0x190e('0x50')])['forEach'](function(_0x3d1aab){fs[_0x190e('0x57')](path['join'](_0x26b7a3[_0x190e('0x50')],_0x3d1aab));});fs[_0x190e('0x58')](_0x26b7a3[_0x190e('0x50')]);}return _0x26b7a3;});})['catch'](function(_0x45f502){throw new db['Sequelize'][(_0x190e('0x59'))](_0x45f502[_0x190e('0x5a')]);});}})['then'](handleEntityNotFound(_0x28e229,null))[_0x190e('0x26')](removeEntity(_0x28e229,null))[_0x190e('0x43')](handleError(_0x28e229,null));};exports[_0x190e('0x5b')]=function(_0x14ba02,_0x5af7bc,_0x24b231){return db[_0x190e('0x4a')]['transaction'](function(_0x4b51c2){var _0x152e09;return db[_0x190e('0x2c')]['find']({'where':{'id':_0x14ba02[_0x190e('0x45')]['id']}})[_0x190e('0x26')](function(_0x1ba9cb){if(_0x1ba9cb){_0x152e09=_0x1ba9cb;return _0x1ba9cb[_0x190e('0x5b')](_0x14ba02[_0x190e('0x48')]['id'],{'transaction':_0x4b51c2});}})[_0x190e('0x26')](function(_0x95d0ac){if(_0x95d0ac){return db['Sound'][_0x190e('0x5c')]({'where':{'id':_0x14ba02[_0x190e('0x48')]['id']},'attributes':['id','name','save_name',_0x190e('0x5d'),_0x190e('0x5e')],'raw':!![]});}})[_0x190e('0x26')](function(_0x2d504b){if(_0x2d504b){var _0x2ab030=path[_0x190e('0x4d')](config[_0x190e('0x4e')],_0x190e('0x5f'),util[_0x190e('0x60')]('%s.%s',path[_0x190e('0x61')](_0x2d504b['save_name'],path[_0x190e('0x62')](_0x2d504b[_0x190e('0x63')])),_0x2d504b[_0x190e('0x5d')]));var _0x24e482=path[_0x190e('0x4d')](config[_0x190e('0x4e')],_0x190e('0x64'),_0x152e09[_0x190e('0x29')],util[_0x190e('0x60')](_0x190e('0x65'),_0x2d504b[_0x190e('0x29')],_0x2d504b[_0x190e('0x5d')]));fs['symlinkSync'](_0x2ab030,_0x24e482);return _0x2d504b;}})[_0x190e('0x43')](function(_0x3f5be){throw new db[(_0x190e('0x66'))][(_0x190e('0x59'))](_0x3f5be[_0x190e('0x5a')]);});})[_0x190e('0x26')](handleEntityNotFound(_0x5af7bc,null))[_0x190e('0x26')](respondWithResult(_0x5af7bc,0xc9))[_0x190e('0x43')](handleError(_0x5af7bc,null));};exports['removeSound']=function(_0x1d7d5e,_0x5d5cb1,_0x5c3e19){return db[_0x190e('0x4a')][_0x190e('0x4b')](function(_0x658145){var _0x56765c;return db['VoiceMusicOnHold'][_0x190e('0x5c')]({'where':{'id':_0x1d7d5e[_0x190e('0x45')]['id']}})[_0x190e('0x26')](handleEntityNotFound(_0x5d5cb1,null))[_0x190e('0x26')](function(_0x2834c9){if(_0x2834c9){_0x56765c=_0x2834c9;return _0x2834c9['removeSound'](_0x1d7d5e['params'][_0x190e('0x67')]);}})['then'](function(_0xc2bff6){if(_0xc2bff6){return db['Sound'][_0x190e('0x5c')]({'where':{'id':_0x1d7d5e['params'][_0x190e('0x67')]},'attributes':['id',_0x190e('0x29'),'save_name',_0x190e('0x5d'),_0x190e('0x5e')],'raw':!![]});}})['then'](function(_0x31670f){if(_0x31670f){fs[_0x190e('0x57')](path[_0x190e('0x4d')](_0x56765c['directory'],util[_0x190e('0x60')](_0x190e('0x65'),_0x31670f[_0x190e('0x29')],_0x31670f[_0x190e('0x5d')])));return _0x31670f;}})[_0x190e('0x43')](function(_0x118402){throw new db[(_0x190e('0x66'))][(_0x190e('0x59'))](_0x118402[_0x190e('0x5a')]);});})[_0x190e('0x26')](handleEntityNotFound(_0x5d5cb1,null))[_0x190e('0x26')](respondWithStatusCode(_0x5d5cb1,0xcc))['catch'](handleError(_0x5d5cb1,null));};exports[_0x190e('0x68')]=function(_0x5934ff,_0x419afe,_0x45cc8d){var _0x9b94f7={};var _0x4ab347={};var _0x24c303;var _0x5c4a9b;return db[_0x190e('0x2c')][_0x190e('0x5c')]({'where':{'id':_0x5934ff['params']['id']}})[_0x190e('0x26')](handleEntityNotFound(_0x419afe,null))[_0x190e('0x26')](function(_0x54d581){if(_0x54d581){_0x24c303=_0x54d581;_0x4ab347['model']=_[_0x190e('0x2f')](db[_0x190e('0x69')][_0x190e('0x2d')]);_0x4ab347[_0x190e('0x30')]=_['keys'](_0x5934ff[_0x190e('0x30')]);_0x4ab347[_0x190e('0x31')]=_[_0x190e('0x32')](_0x4ab347[_0x190e('0x2e')],_0x4ab347[_0x190e('0x30')]);_0x9b94f7[_0x190e('0x33')]=_[_0x190e('0x32')](_0x4ab347[_0x190e('0x2e')],qs[_0x190e('0x46')](_0x5934ff[_0x190e('0x30')][_0x190e('0x46')]));_0x9b94f7['attributes']=_0x9b94f7['attributes'][_0x190e('0x34')]?_0x9b94f7[_0x190e('0x33')]:_0x4ab347['model'];_0x9b94f7[_0x190e('0x37')]=qs['sort'](_0x5934ff['query']['sort']);_0x9b94f7['where']=qs[_0x190e('0x31')](_[_0x190e('0x3a')](_0x5934ff[_0x190e('0x30')],_0x4ab347[_0x190e('0x31')]));if(_0x5934ff[_0x190e('0x30')][_0x190e('0x3b')]){_0x9b94f7[_0x190e('0x39')]=_[_0x190e('0x3e')](_0x9b94f7[_0x190e('0x39')],{'$or':_[_0x190e('0x2b')](_0x9b94f7['attributes'],function(_0x54af64){var _0xbe6029={};_0xbe6029[_0x54af64]={'$like':'%'+_0x5934ff['query'][_0x190e('0x3b')]+'%'};return _0xbe6029;})});}_0x9b94f7=_[_0x190e('0x3e')]({},_0x9b94f7,_0x5934ff[_0x190e('0x6a')]);return _0x24c303[_0x190e('0x68')](_0x9b94f7);}})[_0x190e('0x26')](function(_0x72eb5e){if(_0x72eb5e){_0x5c4a9b=_0x72eb5e[_0x190e('0x34')];if(!_0x5934ff[_0x190e('0x30')][_0x190e('0x35')]('nolimit')){_0x9b94f7[_0x190e('0x1f')]=qs[_0x190e('0x1f')](_0x5934ff['query'][_0x190e('0x1f')]);_0x9b94f7[_0x190e('0x1e')]=qs[_0x190e('0x1e')](_0x5934ff['query'][_0x190e('0x1e')]);}return _0x24c303[_0x190e('0x68')](_0x9b94f7);}})[_0x190e('0x26')](function(_0x44e38d){if(_0x44e38d){return _0x44e38d?{'count':_0x5c4a9b,'rows':_0x44e38d}:null;}})[_0x190e('0x26')](respondWithResult(_0x419afe,null))[_0x190e('0x43')](handleError(_0x419afe,null));};
\ No newline at end of file
+var _0xe286=['filter','merge','VoiceMusicOnHold','includeAll','include','findAll','rows','params','options','find','catch','body','create','transaction','mode','files','directory','join','root','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MusicOnHolds','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','readdirSync','forEach','unlinkSync','Sequelize','ValidationError','addSound','findOne','createdAt','server/files/sounds/converted','format','extname','save_name','converted_format','server/files/moh','%s.%s','symlinkSync','message','removeSound','id2','Sound','sort','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','end','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick'];(function(_0x4d6af0,_0x3f3394){var _0x546a9d=function(_0x1c3563){while(--_0x1c3563){_0x4d6af0['push'](_0x4d6af0['shift']());}};_0x546a9d(++_0x3f3394);}(_0xe286,0x18c));var _0x6e28=function(_0x29ce4a,_0x4a7909){_0x29ce4a=_0x29ce4a-0x0;var _0x455d8a=_0xe286[_0x29ce4a];return _0x455d8a;};'use strict';var emlformat=require(_0x6e28('0x0'));var rimraf=require(_0x6e28('0x1'));var zipdir=require(_0x6e28('0x2'));var jsonpatch=require(_0x6e28('0x3'));var rp=require(_0x6e28('0x4'));var moment=require(_0x6e28('0x5'));var BPromise=require(_0x6e28('0x6'));var Mustache=require(_0x6e28('0x7'));var util=require(_0x6e28('0x8'));var path=require(_0x6e28('0x9'));var sox=require(_0x6e28('0xa'));var csv=require(_0x6e28('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6e28('0xc'));var _=require(_0x6e28('0xd'));var squel=require('squel');var crypto=require(_0x6e28('0xe'));var jsforce=require(_0x6e28('0xf'));var deskjs=require(_0x6e28('0x10'));var toCsv=require(_0x6e28('0xb'));var querystring=require('querystring');var Papa=require(_0x6e28('0x11'));var Redis=require('ioredis');var authService=require(_0x6e28('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x6e28('0x13'));var hardwareService=require(_0x6e28('0x14'));var logger=require(_0x6e28('0x15'))(_0x6e28('0x16'));var utils=require('../../config/utils');var config=require(_0x6e28('0x17'));var licenseUtil=require(_0x6e28('0x18'));var db=require(_0x6e28('0x19'))['db'];function respondWithStatusCode(_0x34fc07,_0x1d8fb9){_0x1d8fb9=_0x1d8fb9||0xcc;return function(_0x37c8ad){if(_0x37c8ad){return _0x34fc07[_0x6e28('0x1a')](_0x1d8fb9);}return _0x34fc07[_0x6e28('0x1b')](_0x1d8fb9)['end']();};}function respondWithResult(_0x44dc3f,_0x2968ee){_0x2968ee=_0x2968ee||0xc8;return function(_0x2c739d){if(_0x2c739d){return _0x44dc3f['status'](_0x2968ee)[_0x6e28('0x1c')](_0x2c739d);}};}function respondWithFilteredResult(_0x28916,_0x3ba74f){return function(_0x5f2331){if(_0x5f2331){var _0x2a18c5=typeof _0x3ba74f[_0x6e28('0x1d')]===_0x6e28('0x1e')&&typeof _0x3ba74f[_0x6e28('0x1f')]==='undefined';var _0x65aaa0=_0x5f2331[_0x6e28('0x20')];var _0x48d49a=_0x2a18c5?0x0:_0x3ba74f[_0x6e28('0x1d')];var _0x5ee504=_0x2a18c5?_0x5f2331[_0x6e28('0x20')]:_0x3ba74f[_0x6e28('0x1d')]+_0x3ba74f[_0x6e28('0x1f')];var _0x458d8b;if(_0x5ee504>=_0x65aaa0){_0x5ee504=_0x65aaa0;_0x458d8b=0xc8;}else{_0x458d8b=0xce;}_0x28916[_0x6e28('0x1b')](_0x458d8b);return _0x28916[_0x6e28('0x21')](_0x6e28('0x22'),_0x48d49a+'-'+_0x5ee504+'/'+_0x65aaa0)['json'](_0x5f2331);}return null;};}function patchUpdates(_0x41db6b){return function(_0xf758a4){try{jsonpatch['apply'](_0xf758a4,_0x41db6b,!![]);}catch(_0x5dcc95){return BPromise[_0x6e28('0x23')](_0x5dcc95);}return _0xf758a4[_0x6e28('0x24')]();};}function saveUpdates(_0x65cb7a,_0xb240e1){return function(_0x12d82c){if(_0x12d82c){return _0x12d82c[_0x6e28('0x25')](_0x65cb7a)[_0x6e28('0x26')](function(_0x5bcfea){return _0x5bcfea;});}return null;};}function removeEntity(_0x1d4d3f,_0x1e0c59){return function(_0x2c8fcc){if(_0x2c8fcc){return _0x2c8fcc[_0x6e28('0x27')]()[_0x6e28('0x26')](function(){var _0x4e9fe3=_0x2c8fcc[_0x6e28('0x28')]({'plain':!![]});var _0x10ea07='MusicOnHolds';return db['UserProfileResource'][_0x6e28('0x27')]({'where':{'type':_0x10ea07,'resourceId':_0x4e9fe3['id']}})[_0x6e28('0x26')](function(){return _0x2c8fcc;});})[_0x6e28('0x26')](function(){_0x1d4d3f[_0x6e28('0x1b')](0xcc)[_0x6e28('0x29')]();});}};}function handleEntityNotFound(_0x47af88,_0x4cdab9){return function(_0x4012ee){if(!_0x4012ee){_0x47af88['sendStatus'](0x194);}return _0x4012ee;};}function handleError(_0x3b0b04,_0x3d066e){_0x3d066e=_0x3d066e||0x1f4;return function(_0x464a89){logger[_0x6e28('0x2a')](_0x464a89[_0x6e28('0x2b')]);if(_0x464a89[_0x6e28('0x2c')]){delete _0x464a89[_0x6e28('0x2c')];}_0x3b0b04[_0x6e28('0x1b')](_0x3d066e)[_0x6e28('0x2d')](_0x464a89);};}exports['index']=function(_0x53449d,_0xb7513d){var _0x1c873f={},_0x274088={},_0x33d39a={'count':0x0,'rows':[]};var _0x2a2ada=_[_0x6e28('0x2e')](db['VoiceMusicOnHold'][_0x6e28('0x2f')],function(_0x34639d){return{'name':_0x34639d[_0x6e28('0x30')],'type':_0x34639d[_0x6e28('0x31')][_0x6e28('0x32')]};});_0x274088[_0x6e28('0x33')]=_[_0x6e28('0x2e')](_0x2a2ada,_0x6e28('0x2c'));_0x274088[_0x6e28('0x34')]=_[_0x6e28('0x35')](_0x53449d[_0x6e28('0x34')]);_0x274088[_0x6e28('0x36')]=_[_0x6e28('0x37')](_0x274088[_0x6e28('0x33')],_0x274088[_0x6e28('0x34')]);_0x1c873f[_0x6e28('0x38')]=_['intersection'](_0x274088[_0x6e28('0x33')],qs[_0x6e28('0x39')](_0x53449d[_0x6e28('0x34')][_0x6e28('0x39')]));_0x1c873f[_0x6e28('0x38')]=_0x1c873f[_0x6e28('0x38')][_0x6e28('0x3a')]?_0x1c873f[_0x6e28('0x38')]:_0x274088[_0x6e28('0x33')];if(!_0x53449d[_0x6e28('0x34')][_0x6e28('0x3b')](_0x6e28('0x3c'))){_0x1c873f['limit']=qs[_0x6e28('0x1f')](_0x53449d[_0x6e28('0x34')][_0x6e28('0x1f')]);_0x1c873f[_0x6e28('0x1d')]=qs[_0x6e28('0x1d')](_0x53449d[_0x6e28('0x34')][_0x6e28('0x1d')]);}_0x1c873f[_0x6e28('0x3d')]=qs['sort'](_0x53449d[_0x6e28('0x34')]['sort']);delete _0x53449d[_0x6e28('0x34')]['sort'];_0x1c873f[_0x6e28('0x3e')]=qs[_0x6e28('0x36')](_[_0x6e28('0x3f')](_0x53449d[_0x6e28('0x34')],_0x274088['filters']),_0x2a2ada);if(_0x53449d[_0x6e28('0x34')][_0x6e28('0x40')]){_0x1c873f[_0x6e28('0x3e')]=_[_0x6e28('0x41')](_0x1c873f[_0x6e28('0x3e')],{'$or':_[_0x6e28('0x2e')](_0x2a2ada,function(_0x4d178e){if(_0x4d178e[_0x6e28('0x31')]!=='VIRTUAL'){var _0x35a266={};_0x35a266[_0x4d178e[_0x6e28('0x2c')]]={'$like':'%'+_0x53449d[_0x6e28('0x34')][_0x6e28('0x40')]+'%'};return _0x35a266;}})});}_0x1c873f=_[_0x6e28('0x41')]({},_0x1c873f,_0x53449d['options']);var _0x5c1e6a={'where':_0x1c873f[_0x6e28('0x3e')]};return db[_0x6e28('0x42')][_0x6e28('0x20')](_0x5c1e6a)[_0x6e28('0x26')](function(_0x3e857e){_0x33d39a[_0x6e28('0x20')]=_0x3e857e;if(_0x53449d[_0x6e28('0x34')][_0x6e28('0x43')]){_0x1c873f[_0x6e28('0x44')]=[{'all':!![]}];}return db[_0x6e28('0x42')][_0x6e28('0x45')](_0x1c873f);})[_0x6e28('0x26')](function(_0x4d1581){_0x33d39a[_0x6e28('0x46')]=_0x4d1581;return _0x33d39a;})['then'](respondWithFilteredResult(_0xb7513d,_0x1c873f))['catch'](handleError(_0xb7513d,null));};exports['show']=function(_0x1d569f,_0x55d238){var _0x162349={'raw':![],'where':{'id':_0x1d569f[_0x6e28('0x47')]['id']}},_0x76e467={};_0x76e467[_0x6e28('0x33')]=_[_0x6e28('0x35')](db[_0x6e28('0x42')]['rawAttributes']);_0x76e467['query']=_['keys'](_0x1d569f[_0x6e28('0x34')]);_0x76e467[_0x6e28('0x36')]=_[_0x6e28('0x37')](_0x76e467[_0x6e28('0x33')],_0x76e467[_0x6e28('0x34')]);_0x162349['attributes']=_['intersection'](_0x76e467['model'],qs['fields'](_0x1d569f['query'][_0x6e28('0x39')]));_0x162349[_0x6e28('0x38')]=_0x162349[_0x6e28('0x38')]['length']?_0x162349[_0x6e28('0x38')]:_0x76e467[_0x6e28('0x33')];if(_0x1d569f['query']['includeAll']){_0x162349[_0x6e28('0x44')]=[{'all':!![]}];}_0x162349=_[_0x6e28('0x41')]({},_0x162349,_0x1d569f[_0x6e28('0x48')]);return db[_0x6e28('0x42')][_0x6e28('0x49')](_0x162349)['then'](handleEntityNotFound(_0x55d238,null))[_0x6e28('0x26')](respondWithResult(_0x55d238,null))[_0x6e28('0x4a')](handleError(_0x55d238,null));};exports[_0x6e28('0x25')]=function(_0x30e591,_0x5849ab){if(_0x30e591[_0x6e28('0x4b')]['id']){delete _0x30e591[_0x6e28('0x4b')]['id'];}return db[_0x6e28('0x42')]['find']({'where':{'id':_0x30e591[_0x6e28('0x47')]['id']}})[_0x6e28('0x26')](handleEntityNotFound(_0x5849ab,null))[_0x6e28('0x26')](saveUpdates(_0x30e591[_0x6e28('0x4b')],null))[_0x6e28('0x26')](respondWithResult(_0x5849ab,null))[_0x6e28('0x4a')](handleError(_0x5849ab,null));};exports[_0x6e28('0x4c')]=function(_0x41d83a,_0x14d833,_0x543b69){return db['sequelize'][_0x6e28('0x4d')](function(_0x41daab){if(_0x41d83a[_0x6e28('0x4b')][_0x6e28('0x4e')]===_0x6e28('0x4f')){_0x41d83a[_0x6e28('0x4b')][_0x6e28('0x50')]=path[_0x6e28('0x51')](config[_0x6e28('0x52')],'server/files/moh',_0x41d83a['body'][_0x6e28('0x2c')]);}return db[_0x6e28('0x42')][_0x6e28('0x4c')](_0x41d83a[_0x6e28('0x4b')],{'transaction':_0x41daab})[_0x6e28('0x26')](function(_0x5233ff){if(_0x41d83a['body'][_0x6e28('0x4e')]===_0x6e28('0x4f')){fs['mkdirSync'](_0x5233ff[_0x6e28('0x50')],parseInt(_0x6e28('0x53'),0x8));}var _0x191577=_0x41d83a[_0x6e28('0x54')][_0x6e28('0x28')]({'plain':!![]});if(!_0x191577)throw new Error(_0x6e28('0x55'));if(_0x191577[_0x6e28('0x56')]==='user'){var _0x4ad64e=_0x5233ff[_0x6e28('0x28')]({'plain':!![]});return db[_0x6e28('0x57')][_0x6e28('0x49')]({'where':{'name':_0x6e28('0x58'),'userProfileId':_0x191577[_0x6e28('0x59')]},'raw':!![]})[_0x6e28('0x26')](function(_0x43fd25){if(_0x43fd25&&_0x43fd25[_0x6e28('0x5a')]===0x0){return db[_0x6e28('0x5b')]['create']({'name':_0x4ad64e['name'],'resourceId':_0x4ad64e['id'],'type':_0x43fd25[_0x6e28('0x2c')],'sectionId':_0x43fd25['id']},{})[_0x6e28('0x26')](function(){return _0x5233ff;});}else{return _0x5233ff;}})[_0x6e28('0x4a')](function(_0x38dd84){logger[_0x6e28('0x2a')](_0x6e28('0x5c'),_0x38dd84);});}return _0x5233ff;});})[_0x6e28('0x26')](respondWithResult(_0x14d833,0xc9))['catch'](handleError(_0x14d833,null));};exports[_0x6e28('0x27')]=function(_0x2df954,_0x9fdf43,_0x342953){var _0x46fe68;return db[_0x6e28('0x42')][_0x6e28('0x49')]({'where':{'id':_0x2df954['params']['id']}})['then'](function(_0x3d32aa){if(_0x3d32aa){return db[_0x6e28('0x5d')][_0x6e28('0x4d')](function(_0x9620cc){return _0x3d32aa[_0x6e28('0x27')]({'transaction':_0x9620cc,'raw':!![]})[_0x6e28('0x26')](function(_0x3bfb8f){if(_0x3bfb8f[_0x6e28('0x50')]){fs[_0x6e28('0x5e')](_0x3bfb8f[_0x6e28('0x50')])[_0x6e28('0x5f')](function(_0x276df1){fs[_0x6e28('0x60')](path[_0x6e28('0x51')](_0x3bfb8f[_0x6e28('0x50')],_0x276df1));});fs['rmdirSync'](_0x3bfb8f[_0x6e28('0x50')]);}return _0x3bfb8f;});})['catch'](function(_0x52cb49){throw new db[(_0x6e28('0x61'))][(_0x6e28('0x62'))](_0x52cb49['message']);});}})[_0x6e28('0x26')](handleEntityNotFound(_0x9fdf43,null))['then'](removeEntity(_0x9fdf43,null))[_0x6e28('0x4a')](handleError(_0x9fdf43,null));};exports[_0x6e28('0x63')]=function(_0x333f8c,_0x488c7a,_0x3d375d){return db[_0x6e28('0x5d')][_0x6e28('0x4d')](function(_0x55c6c7){var _0x5f00ce;return db[_0x6e28('0x42')][_0x6e28('0x49')]({'where':{'id':_0x333f8c['params']['id']}})[_0x6e28('0x26')](function(_0x79c8a4){if(_0x79c8a4){_0x5f00ce=_0x79c8a4;return _0x79c8a4[_0x6e28('0x63')](_0x333f8c['body']['id'],{'transaction':_0x55c6c7});}})[_0x6e28('0x26')](function(_0x379e89){if(_0x379e89){return db['Sound'][_0x6e28('0x64')]({'where':{'id':_0x333f8c[_0x6e28('0x4b')]['id']},'attributes':['id',_0x6e28('0x2c'),'save_name','converted_format',_0x6e28('0x65')],'raw':!![]});}})[_0x6e28('0x26')](function(_0x165e2c){if(_0x165e2c){var _0x3b7871=path[_0x6e28('0x51')](config[_0x6e28('0x52')],_0x6e28('0x66'),util[_0x6e28('0x67')]('%s.%s',path['basename'](_0x165e2c['save_name'],path[_0x6e28('0x68')](_0x165e2c[_0x6e28('0x69')])),_0x165e2c[_0x6e28('0x6a')]));var _0x1231d6=path[_0x6e28('0x51')](config[_0x6e28('0x52')],_0x6e28('0x6b'),_0x5f00ce[_0x6e28('0x2c')],util[_0x6e28('0x67')](_0x6e28('0x6c'),_0x165e2c[_0x6e28('0x2c')],_0x165e2c['converted_format']));fs[_0x6e28('0x6d')](_0x3b7871,_0x1231d6);return _0x165e2c;}})['catch'](function(_0x2fb236){throw new db[(_0x6e28('0x61'))]['ValidationError'](_0x2fb236[_0x6e28('0x6e')]);});})[_0x6e28('0x26')](handleEntityNotFound(_0x488c7a,null))[_0x6e28('0x26')](respondWithResult(_0x488c7a,0xc9))[_0x6e28('0x4a')](handleError(_0x488c7a,null));};exports[_0x6e28('0x6f')]=function(_0x2025f4,_0x1472de,_0x385990){return db['sequelize'][_0x6e28('0x4d')](function(_0x537f06){var _0x20174d;return db[_0x6e28('0x42')]['findOne']({'where':{'id':_0x2025f4[_0x6e28('0x47')]['id']}})[_0x6e28('0x26')](handleEntityNotFound(_0x1472de,null))[_0x6e28('0x26')](function(_0x331761){if(_0x331761){_0x20174d=_0x331761;return _0x331761[_0x6e28('0x6f')](_0x2025f4[_0x6e28('0x47')][_0x6e28('0x70')]);}})[_0x6e28('0x26')](function(_0x477da){if(_0x477da){return db[_0x6e28('0x71')][_0x6e28('0x64')]({'where':{'id':_0x2025f4['params']['id2']},'attributes':['id',_0x6e28('0x2c'),_0x6e28('0x69'),_0x6e28('0x6a'),_0x6e28('0x65')],'raw':!![]});}})[_0x6e28('0x26')](function(_0x32edc3){if(_0x32edc3){fs['unlinkSync'](path[_0x6e28('0x51')](_0x20174d[_0x6e28('0x50')],util[_0x6e28('0x67')](_0x6e28('0x6c'),_0x32edc3[_0x6e28('0x2c')],_0x32edc3[_0x6e28('0x6a')])));return _0x32edc3;}})['catch'](function(_0x53bbc6){throw new db[(_0x6e28('0x61'))][(_0x6e28('0x62'))](_0x53bbc6[_0x6e28('0x6e')]);});})[_0x6e28('0x26')](handleEntityNotFound(_0x1472de,null))['then'](respondWithStatusCode(_0x1472de,0xcc))[_0x6e28('0x4a')](handleError(_0x1472de,null));};exports['getSounds']=function(_0x516c5e,_0x2ef9e6,_0x39888f){var _0x3b05a4={};var _0xcc50c5={};var _0x8cf06e;var _0x517f48;return db[_0x6e28('0x42')][_0x6e28('0x64')]({'where':{'id':_0x516c5e['params']['id']}})[_0x6e28('0x26')](handleEntityNotFound(_0x2ef9e6,null))['then'](function(_0xac4afd){if(_0xac4afd){_0x8cf06e=_0xac4afd;_0xcc50c5['model']=_['keys'](db['Sound'][_0x6e28('0x2f')]);_0xcc50c5[_0x6e28('0x34')]=_[_0x6e28('0x35')](_0x516c5e[_0x6e28('0x34')]);_0xcc50c5[_0x6e28('0x36')]=_[_0x6e28('0x37')](_0xcc50c5[_0x6e28('0x33')],_0xcc50c5[_0x6e28('0x34')]);_0x3b05a4[_0x6e28('0x38')]=_[_0x6e28('0x37')](_0xcc50c5[_0x6e28('0x33')],qs[_0x6e28('0x39')](_0x516c5e[_0x6e28('0x34')][_0x6e28('0x39')]));_0x3b05a4[_0x6e28('0x38')]=_0x3b05a4[_0x6e28('0x38')][_0x6e28('0x3a')]?_0x3b05a4['attributes']:_0xcc50c5[_0x6e28('0x33')];_0x3b05a4['order']=qs['sort'](_0x516c5e[_0x6e28('0x34')][_0x6e28('0x72')]);_0x3b05a4['where']=qs[_0x6e28('0x36')](_[_0x6e28('0x3f')](_0x516c5e[_0x6e28('0x34')],_0xcc50c5['filters']));if(_0x516c5e['query'][_0x6e28('0x40')]){_0x3b05a4[_0x6e28('0x3e')]=_['merge'](_0x3b05a4[_0x6e28('0x3e')],{'$or':_[_0x6e28('0x2e')](_0x3b05a4['attributes'],function(_0x52965f){var _0x358235={};_0x358235[_0x52965f]={'$like':'%'+_0x516c5e['query'][_0x6e28('0x40')]+'%'};return _0x358235;})});}_0x3b05a4=_['merge']({},_0x3b05a4,_0x516c5e[_0x6e28('0x48')]);return _0x8cf06e['getSounds'](_0x3b05a4);}})[_0x6e28('0x26')](function(_0x192593){if(_0x192593){_0x517f48=_0x192593[_0x6e28('0x3a')];if(!_0x516c5e['query'][_0x6e28('0x3b')]('nolimit')){_0x3b05a4[_0x6e28('0x1f')]=qs[_0x6e28('0x1f')](_0x516c5e[_0x6e28('0x34')][_0x6e28('0x1f')]);_0x3b05a4[_0x6e28('0x1d')]=qs[_0x6e28('0x1d')](_0x516c5e[_0x6e28('0x34')]['offset']);}return _0x8cf06e['getSounds'](_0x3b05a4);}})[_0x6e28('0x26')](function(_0x55c419){if(_0x55c419){return _0x55c419?{'count':_0x517f48,'rows':_0x55c419}:null;}})['then'](respondWithResult(_0x2ef9e6,null))[_0x6e28('0x4a')](handleError(_0x2ef9e6,null));};
\ No newline at end of file
index 58946e3..20cfc39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04b5=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','api','moment'];(function(_0x3bad41,_0x1bb329){var _0x477b85=function(_0x2560e0){while(--_0x2560e0){_0x3bad41['push'](_0x3bad41['shift']());}};_0x477b85(++_0x1bb329);}(_0x04b5,0x19f));var _0x504b=function(_0x48bb48,_0x15562c){_0x48bb48=_0x48bb48-0x0;var _0x119c62=_0x04b5[_0x48bb48];return _0x119c62;};'use strict';var _=require(_0x504b('0x0'));var util=require(_0x504b('0x1'));var logger=require(_0x504b('0x2'))(_0x504b('0x3'));var moment=require(_0x504b('0x4'));var BPromise=require(_0x504b('0x5'));var rp=require(_0x504b('0x6'));var fs=require('fs');var path=require(_0x504b('0x7'));var rimraf=require(_0x504b('0x8'));var config=require(_0x504b('0x9'));var attributes=require(_0x504b('0xa'));module[_0x504b('0xb')]=function(_0x1e4350,_0x53ec16){return _0x1e4350[_0x504b('0xc')](_0x504b('0xd'),attributes,{'tableName':_0x504b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x53f2=['moment','bluebird','request-promise','path','../../config/environment','exports','define','VoiceMusicOnHold','voice_musiconhold','util','api'];(function(_0x8350a5,_0x5db397){var _0x288ee5=function(_0x43f366){while(--_0x43f366){_0x8350a5['push'](_0x8350a5['shift']());}};_0x288ee5(++_0x5db397);}(_0x53f2,0x148));var _0x253f=function(_0x10675b,_0x21f4d4){_0x10675b=_0x10675b-0x0;var _0x2771c8=_0x53f2[_0x10675b];return _0x2771c8;};'use strict';var _=require('lodash');var util=require(_0x253f('0x0'));var logger=require('../../config/logger')(_0x253f('0x1'));var moment=require(_0x253f('0x2'));var BPromise=require(_0x253f('0x3'));var rp=require(_0x253f('0x4'));var fs=require('fs');var path=require(_0x253f('0x5'));var rimraf=require('rimraf');var config=require(_0x253f('0x6'));var attributes=require('./voiceMusicOnHold.attributes');module[_0x253f('0x7')]=function(_0xb1c75f,_0x4197ef){return _0xb1c75f[_0x253f('0x8')](_0x253f('0x9'),attributes,{'tableName':_0x253f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ce6e697..d91d8b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x228f94,_0x2bc5d4){var _0x2f724a=function(_0x435b04){while(--_0x435b04){_0x228f94['push'](_0x228f94['shift']());}};_0x2f724a(++_0x2bc5d4);}(_0xe706,0xa3));var _0x6e70=function(_0x3faaf8,_0x16d9ae){_0x3faaf8=_0x3faaf8-0x0;var _0x1a3527=_0xe706[_0x3faaf8];return _0x1a3527;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
+var _0x0713=['VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x3424f4,_0x1ce2ec){var _0x3a9c61=function(_0x37dcfe){while(--_0x37dcfe){_0x3424f4['push'](_0x3424f4['shift']());}};_0x3a9c61(++_0x1ce2ec);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index ee234fc..18d87f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x782e=['getTeams','post','addAgents','addTeams','update','delete','destroy','removeAgents','removeTeams','exports','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','index','isAuthenticated','/:id','show','/:id/users','getAgents','/:id/teams'];(function(_0x42a49e,_0x51c823){var _0x5982ac=function(_0x57233d){while(--_0x57233d){_0x42a49e['push'](_0x42a49e['shift']());}};_0x5982ac(++_0x51c823);}(_0x782e,0xb9));var _0xe782=function(_0x3dc6e4,_0x12bdb9){_0x3dc6e4=_0x3dc6e4-0x0;var _0xe7a2b0=_0x782e[_0x3dc6e4];return _0xe7a2b0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe782('0x0'));var timeout=require(_0xe782('0x1'));var express=require('express');var router=express[_0xe782('0x2')]();var fs_extra=require(_0xe782('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xe782('0x4'));var config=require(_0xe782('0x5'));var controller=require(_0xe782('0x6'));router[_0xe782('0x7')]('/',auth['isAuthenticated'](),controller[_0xe782('0x8')]);router['get']('/describe',auth[_0xe782('0x9')](),controller['describe']);router[_0xe782('0x7')](_0xe782('0xa'),auth[_0xe782('0x9')](),controller[_0xe782('0xb')]);router[_0xe782('0x7')](_0xe782('0xc'),auth[_0xe782('0x9')](),controller[_0xe782('0xd')]);router[_0xe782('0x7')](_0xe782('0xe'),auth[_0xe782('0x9')](),controller[_0xe782('0xf')]);router[_0xe782('0x10')]('/',auth[_0xe782('0x9')](),controller['create']);router[_0xe782('0x10')]('/:id/users',auth[_0xe782('0x9')](),controller[_0xe782('0x11')]);router[_0xe782('0x10')](_0xe782('0xe'),auth[_0xe782('0x9')](),controller[_0xe782('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xe782('0x13')]);router[_0xe782('0x14')]('/:id',auth[_0xe782('0x9')](),controller[_0xe782('0x15')]);router[_0xe782('0x14')](_0xe782('0xc'),auth[_0xe782('0x9')](),controller[_0xe782('0x16')]);router[_0xe782('0x14')](_0xe782('0xe'),auth[_0xe782('0x9')](),controller[_0xe782('0x17')]);module[_0xe782('0x18')]=router;
\ No newline at end of file
+var _0x649b=['fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','isAuthenticated','index','get','describe','/:id','show','getAgents','/:id/teams','getTeams','post','/:id/users','addAgents','addTeams','update','delete','destroy','removeAgents','removeTeams','path','connect-timeout'];(function(_0x26693b,_0x1209d0){var _0x2d3c39=function(_0x266729){while(--_0x266729){_0x26693b['push'](_0x26693b['shift']());}};_0x2d3c39(++_0x1209d0);}(_0x649b,0x166));var _0xb649=function(_0x4b4efd,_0x1032f1){_0x4b4efd=_0x4b4efd-0x0;var _0x12f197=_0x649b[_0x4b4efd];return _0x12f197;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb649('0x0'));var timeout=require(_0xb649('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb649('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xb649('0x3'));var config=require(_0xb649('0x4'));var controller=require(_0xb649('0x5'));router['get']('/',auth[_0xb649('0x6')](),controller[_0xb649('0x7')]);router[_0xb649('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xb649('0x9')]);router['get'](_0xb649('0xa'),auth[_0xb649('0x6')](),controller[_0xb649('0xb')]);router[_0xb649('0x8')]('/:id/users',auth[_0xb649('0x6')](),controller[_0xb649('0xc')]);router[_0xb649('0x8')](_0xb649('0xd'),auth['isAuthenticated'](),controller[_0xb649('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xb649('0xf')](_0xb649('0x10'),auth[_0xb649('0x6')](),controller[_0xb649('0x11')]);router['post'](_0xb649('0xd'),auth[_0xb649('0x6')](),controller[_0xb649('0x12')]);router['put'](_0xb649('0xa'),auth[_0xb649('0x6')](),controller[_0xb649('0x13')]);router[_0xb649('0x14')](_0xb649('0xa'),auth['isAuthenticated'](),controller[_0xb649('0x15')]);router[_0xb649('0x14')](_0xb649('0x10'),auth['isAuthenticated'](),controller[_0xb649('0x16')]);router[_0xb649('0x14')](_0xb649('0xd'),auth[_0xb649('0x6')](),controller[_0xb649('0x17')]);module['exports']=router;
\ No newline at end of file
index 26b8af1..b211224 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87b6=['name','sequelize','exports','STRING'];(function(_0x4b9978,_0x58eb71){var _0x42f0e5=function(_0x4ff5dc){while(--_0x4ff5dc){_0x4b9978['push'](_0x4b9978['shift']());}};_0x42f0e5(++_0x58eb71);}(_0x87b6,0x175));var _0x687b=function(_0x653d7f,_0x4b9913){_0x653d7f=_0x653d7f-0x0;var _0x161752=_0x87b6[_0x653d7f];return _0x161752;};'use strict';var Sequelize=require(_0x687b('0x0'));module[_0x687b('0x1')]={'name':{'type':Sequelize[_0x687b('0x2')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x2e67da){return'system-'+this['getDataValue'](_0x687b('0x3'))+'-';}},'description':{'type':Sequelize[_0x687b('0x2')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xec84=['system-','getDataValue','sequelize','exports','STRING','name','VIRTUAL'];(function(_0x52c37d,_0x501a4a){var _0x5b3a9e=function(_0x23a047){while(--_0x23a047){_0x52c37d['push'](_0x52c37d['shift']());}};_0x5b3a9e(++_0x501a4a);}(_0xec84,0x1ec));var _0x4ec8=function(_0x392d7c,_0x4d5cab){_0x392d7c=_0x392d7c-0x0;var _0x1b0dc7=_0xec84[_0x392d7c];return _0x1b0dc7;};'use strict';var Sequelize=require(_0x4ec8('0x0'));module[_0x4ec8('0x1')]={'name':{'type':Sequelize[_0x4ec8('0x2')],'allowNull':![],'unique':_0x4ec8('0x3')},'prefix':{'type':Sequelize[_0x4ec8('0x4')],'get':function(_0x9c61b4){return _0x4ec8('0x5')+this[_0x4ec8('0x6')](_0x4ec8('0x3'))+'-';}},'description':{'type':Sequelize[_0x4ec8('0x2')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 1e2c774..4ce3fea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36ee=['show','params','find','describe','create','sequelize','transaction','get','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','prefix','NoOp','Voice\x20Prefix','VoiceExtensionId','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','charAt','body','findById','addAgents','spread','ids','userVoicePrefix:save','removeAgents','emit','userVoicePrefix:remove','getAgents','User','nolimit','getTeams','findOne','Team','findAll','Agents','voicePause','interface','flatMap','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','field','tq.TeamId','from','team_has_voice_prefixes','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','toString','QueryTypes','SELECT','every','includes','all','forEach','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./voicePrefix.socket','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','update','then','destroy','UserProfileResource','name','send','index','map','VoicePrefix','rawAttributes','fieldName','type','key','model','keys','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch'];(function(_0x3804c3,_0x3a7c96){var _0x44d776=function(_0x2bfeaf){while(--_0x2bfeaf){_0x3804c3['push'](_0x3804c3['shift']());}};_0x44d776(++_0x3a7c96);}(_0x36ee,0xe8));var _0xe36e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x36ee[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe36e('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe36e('0x1'));var moment=require(_0xe36e('0x2'));var BPromise=require(_0xe36e('0x3'));var Mustache=require(_0xe36e('0x4'));var util=require(_0xe36e('0x5'));var path=require(_0xe36e('0x6'));var sox=require(_0xe36e('0x7'));var csv=require(_0xe36e('0x8'));var ejs=require(_0xe36e('0x9'));var fs=require('fs');var fs_extra=require(_0xe36e('0xa'));var _=require(_0xe36e('0xb'));var squel=require(_0xe36e('0xc'));var crypto=require('crypto');var jsforce=require(_0xe36e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe36e('0x8'));var querystring=require(_0xe36e('0xe'));var Papa=require(_0xe36e('0xf'));var Redis=require('ioredis');var authService=require(_0xe36e('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe36e('0x11'));var hardwareService=require(_0xe36e('0x12'));var logger=require(_0xe36e('0x13'))(_0xe36e('0x14'));var utils=require(_0xe36e('0x15'));var config=require(_0xe36e('0x16'));var licenseUtil=require(_0xe36e('0x17'));var db=require(_0xe36e('0x18'))['db'];config['redis']=_[_0xe36e('0x19')](config[_0xe36e('0x1a')],{'host':_0xe36e('0x1b'),'port':0x18eb});var socket=require(_0xe36e('0x1c'))(new Redis(config['redis']));require(_0xe36e('0x1d'))['register'](socket);function respondWithStatusCode(_0x525155,_0x27ff47){_0x27ff47=_0x27ff47||0xcc;return function(_0x300f21){if(_0x300f21){return _0x525155[_0xe36e('0x1e')](_0x27ff47);}return _0x525155[_0xe36e('0x1f')](_0x27ff47)[_0xe36e('0x20')]();};}function respondWithResult(_0x924cd5,_0x2096f6){_0x2096f6=_0x2096f6||0xc8;return function(_0x39bae8){if(_0x39bae8){return _0x924cd5[_0xe36e('0x1f')](_0x2096f6)[_0xe36e('0x21')](_0x39bae8);}};}function respondWithFilteredResult(_0x5792e8,_0x333554){return function(_0x2184ae){if(_0x2184ae){var _0x56c019=typeof _0x333554[_0xe36e('0x22')]==='undefined'&&typeof _0x333554[_0xe36e('0x23')]===_0xe36e('0x24');var _0x5e15f5=_0x2184ae[_0xe36e('0x25')];var _0x6aa186=_0x56c019?0x0:_0x333554[_0xe36e('0x22')];var _0x597331=_0x56c019?_0x2184ae[_0xe36e('0x25')]:_0x333554[_0xe36e('0x22')]+_0x333554[_0xe36e('0x23')];var _0x3c4017;if(_0x597331>=_0x5e15f5){_0x597331=_0x5e15f5;_0x3c4017=0xc8;}else{_0x3c4017=0xce;}_0x5792e8[_0xe36e('0x1f')](_0x3c4017);return _0x5792e8[_0xe36e('0x26')]('Content-Range',_0x6aa186+'-'+_0x597331+'/'+_0x5e15f5)[_0xe36e('0x21')](_0x2184ae);}return null;};}function patchUpdates(_0x4f214a){return function(_0x23bcf3){try{jsonpatch[_0xe36e('0x27')](_0x23bcf3,_0x4f214a,!![]);}catch(_0x437f3f){return BPromise['reject'](_0x437f3f);}return _0x23bcf3['save']();};}function saveUpdates(_0x4749a8,_0x10818d){return function(_0xb0cd85){if(_0xb0cd85){return _0xb0cd85[_0xe36e('0x28')](_0x4749a8)[_0xe36e('0x29')](function(_0x1507f9){return _0x1507f9;});}return null;};}function removeEntity(_0x1a045c,_0x5ac484){return function(_0x3cafbf){if(_0x3cafbf){return _0x3cafbf[_0xe36e('0x2a')]()[_0xe36e('0x29')](function(){var _0x262caa=_0x3cafbf['get']({'plain':!![]});var _0x2d757c='VoicePrefixes';return db[_0xe36e('0x2b')]['destroy']({'where':{'type':_0x2d757c,'resourceId':_0x262caa['id']}})[_0xe36e('0x29')](function(){return _0x3cafbf;});})['then'](function(){_0x1a045c[_0xe36e('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b1045,_0x59548b){return function(_0x4bb75b){if(!_0x4bb75b){_0x3b1045['sendStatus'](0x194);}return _0x4bb75b;};}function handleError(_0x5b5d53,_0x203fa2){_0x203fa2=_0x203fa2||0x1f4;return function(_0x1fc639){logger['error'](_0x1fc639['stack']);if(_0x1fc639[_0xe36e('0x2c')]){delete _0x1fc639[_0xe36e('0x2c')];}_0x5b5d53[_0xe36e('0x1f')](_0x203fa2)[_0xe36e('0x2d')](_0x1fc639);};}exports[_0xe36e('0x2e')]=function(_0x4759b4,_0x57bb9b){var _0xb98e78={},_0x11c95d={},_0x57272f={'count':0x0,'rows':[]};var _0x87e595=_[_0xe36e('0x2f')](db[_0xe36e('0x30')][_0xe36e('0x31')],function(_0x21623e){return{'name':_0x21623e[_0xe36e('0x32')],'type':_0x21623e[_0xe36e('0x33')][_0xe36e('0x34')]};});_0x11c95d[_0xe36e('0x35')]=_[_0xe36e('0x2f')](_0x87e595,_0xe36e('0x2c'));_0x11c95d['query']=_[_0xe36e('0x36')](_0x4759b4['query']);_0x11c95d['filters']=_[_0xe36e('0x37')](_0x11c95d['model'],_0x11c95d[_0xe36e('0x38')]);_0xb98e78[_0xe36e('0x39')]=_[_0xe36e('0x37')](_0x11c95d[_0xe36e('0x35')],qs['fields'](_0x4759b4['query'][_0xe36e('0x3a')]));_0xb98e78[_0xe36e('0x39')]=_0xb98e78[_0xe36e('0x39')][_0xe36e('0x3b')]?_0xb98e78['attributes']:_0x11c95d[_0xe36e('0x35')];if(!_0x4759b4[_0xe36e('0x38')][_0xe36e('0x3c')]('nolimit')){_0xb98e78[_0xe36e('0x23')]=qs[_0xe36e('0x23')](_0x4759b4['query'][_0xe36e('0x23')]);_0xb98e78[_0xe36e('0x22')]=qs[_0xe36e('0x22')](_0x4759b4[_0xe36e('0x38')][_0xe36e('0x22')]);}_0xb98e78[_0xe36e('0x3d')]=qs[_0xe36e('0x3e')](_0x4759b4[_0xe36e('0x38')][_0xe36e('0x3e')]);_0xb98e78[_0xe36e('0x3f')]=qs[_0xe36e('0x40')](_[_0xe36e('0x41')](_0x4759b4[_0xe36e('0x38')],_0x11c95d['filters']),_0x87e595);if(_0x4759b4[_0xe36e('0x38')][_0xe36e('0x42')]){_0xb98e78[_0xe36e('0x3f')]=_[_0xe36e('0x43')](_0xb98e78[_0xe36e('0x3f')],{'$or':_['map'](_0x87e595,function(_0x591e33){if(_0x591e33[_0xe36e('0x33')]!==_0xe36e('0x44')){var _0x1acc12={};_0x1acc12[_0x591e33[_0xe36e('0x2c')]]={'$like':'%'+_0x4759b4[_0xe36e('0x38')][_0xe36e('0x42')]+'%'};return _0x1acc12;}})});}_0xb98e78=_[_0xe36e('0x43')]({},_0xb98e78,_0x4759b4[_0xe36e('0x45')]);var _0x48066c={'where':_0xb98e78[_0xe36e('0x3f')]};return db[_0xe36e('0x30')]['count'](_0x48066c)[_0xe36e('0x29')](function(_0x5ef3e4){_0x57272f[_0xe36e('0x25')]=_0x5ef3e4;if(_0x4759b4[_0xe36e('0x38')][_0xe36e('0x46')]){_0xb98e78[_0xe36e('0x47')]=[{'all':!![]}];}return db[_0xe36e('0x30')]['findAll'](_0xb98e78);})[_0xe36e('0x29')](function(_0x2961c9){_0x57272f[_0xe36e('0x48')]=_0x2961c9;return _0x57272f;})[_0xe36e('0x29')](respondWithFilteredResult(_0x57bb9b,_0xb98e78))[_0xe36e('0x49')](handleError(_0x57bb9b,null));};exports[_0xe36e('0x4a')]=function(_0x569809,_0x122704){var _0x134d71={'raw':![],'where':{'id':_0x569809[_0xe36e('0x4b')]['id']}},_0x2a6817={};_0x2a6817[_0xe36e('0x35')]=_['keys'](db[_0xe36e('0x30')][_0xe36e('0x31')]);_0x2a6817[_0xe36e('0x38')]=_[_0xe36e('0x36')](_0x569809[_0xe36e('0x38')]);_0x2a6817[_0xe36e('0x40')]=_[_0xe36e('0x37')](_0x2a6817[_0xe36e('0x35')],_0x2a6817[_0xe36e('0x38')]);_0x134d71['attributes']=_['intersection'](_0x2a6817[_0xe36e('0x35')],qs['fields'](_0x569809[_0xe36e('0x38')][_0xe36e('0x3a')]));_0x134d71[_0xe36e('0x39')]=_0x134d71[_0xe36e('0x39')]['length']?_0x134d71[_0xe36e('0x39')]:_0x2a6817[_0xe36e('0x35')];if(_0x569809['query'][_0xe36e('0x46')]){_0x134d71[_0xe36e('0x47')]=[{'all':!![]}];}_0x134d71=_[_0xe36e('0x43')]({},_0x134d71,_0x569809[_0xe36e('0x45')]);return db[_0xe36e('0x30')][_0xe36e('0x4c')](_0x134d71)[_0xe36e('0x29')](handleEntityNotFound(_0x122704,null))[_0xe36e('0x29')](respondWithResult(_0x122704,null))[_0xe36e('0x49')](handleError(_0x122704,null));};exports[_0xe36e('0x2a')]=function(_0x7307bc,_0x13ccc5){return db[_0xe36e('0x30')][_0xe36e('0x4c')]({'where':{'id':_0x7307bc[_0xe36e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x13ccc5,null))[_0xe36e('0x29')](removeEntity(_0x13ccc5,null))['catch'](handleError(_0x13ccc5,null));};exports['describe']=function(_0x10b8ff,_0x3e8ccb){return db['VoicePrefix'][_0xe36e('0x4d')]()[_0xe36e('0x29')](respondWithResult(_0x3e8ccb,null))[_0xe36e('0x49')](handleError(_0x3e8ccb,null));};exports[_0xe36e('0x4e')]=function(_0xa4be24,_0x22788b){var _0x935e84;return db[_0xe36e('0x4f')][_0xe36e('0x50')](function(_0x55d190){return db[_0xe36e('0x30')][_0xe36e('0x4e')](_0xa4be24['body'],{'transaction':_0x55d190})[_0xe36e('0x29')](function(_0x1da952){_0x935e84=_0x1da952[_0xe36e('0x51')]({'plain':!![]});return db[_0xe36e('0x52')][_0xe36e('0x4c')]({'where':{'id':_0x935e84['VoiceExtensionId']},'raw':!![]})['then'](function(_0x56f5b6){return createVoicePrefixExtensions(_0x935e84,_0x56f5b6,_0x55d190);});});})['then'](function(){var _0x47605d=_0xa4be24[_0xe36e('0x53')][_0xe36e('0x51')]({'plain':!![]});if(!_0x47605d)throw new Error(_0xe36e('0x54'));if(_0x47605d[_0xe36e('0x55')]===_0xe36e('0x53')){var _0x7c3766=_0x935e84;return db[_0xe36e('0x56')][_0xe36e('0x4c')]({'where':{'name':'VoicePrefixes','userProfileId':_0x47605d[_0xe36e('0x57')]},'raw':!![]})[_0xe36e('0x29')](function(_0x5a058b){if(_0x5a058b&&_0x5a058b[_0xe36e('0x58')]===0x0){return db[_0xe36e('0x2b')][_0xe36e('0x4e')]({'name':_0x7c3766[_0xe36e('0x2c')],'resourceId':_0x7c3766['id'],'type':_0x5a058b[_0xe36e('0x2c')],'sectionId':_0x5a058b['id']},{})[_0xe36e('0x29')](function(){return _0x935e84;});}else{return _0x935e84;}})[_0xe36e('0x49')](function(_0x1a70d1){logger[_0xe36e('0x59')](_0xe36e('0x5a'),_0x1a70d1);throw _0x1a70d1;});}return _0x935e84;})[_0xe36e('0x29')](respondWithResult(_0x22788b,null))[_0xe36e('0x49')](handleError(_0x22788b,null));};function Extension(_0x389e91,_0x6f979f,_0x3512ec,_0x3e4860){this[_0xe36e('0x5b')]=_0xe36e('0x5c');this[_0xe36e('0x5d')]=_0x389e91;this[_0xe36e('0x5e')]=_0x3512ec;this[_0xe36e('0x33')]=_0xe36e('0x5f');this[_0xe36e('0x60')]=_0xe36e('0x61');this[_0xe36e('0x62')]=_0x6f979f;this['appdata']=_0x3e4860;}function createVoicePrefixExtensions(_0x429a01,_0xedaa96,_0x49336b){return new BPromise(function(_0xce5583,_0x41bad0){var _0x180dc3=new Extension(formatPrefixName(_0x429a01[_0xe36e('0x63')]),0x1,_0xe36e('0x64'),_0xe36e('0x65'));_0x180dc3['VoicePrefixId']=_0x429a01['id'];return db[_0xe36e('0x52')]['create'](_0x180dc3,{'transaction':_0x49336b})[_0xe36e('0x29')](function(_0x1fc1e5){var _0x2b0059=_0x1fc1e5[_0xe36e('0x51')]({'plain':!![]});var _0x2a767d=_[_0xe36e('0x2f')](addVoicePrefixExtensions(_0x429a01,_0xedaa96),function(_0x2ab6aa){_0x2ab6aa[_0xe36e('0x66')]=_0x2b0059['id'];_0x2ab6aa['VoicePrefixId']=_0x429a01['id'];return _0x2ab6aa;});return db[_0xe36e('0x52')][_0xe36e('0x67')](_0x2a767d,{'transaction':_0x49336b})['then'](function(_0x3068e1){if(!_0x3068e1){return _0x41bad0(_0xe36e('0x68'));}else{return _0xce5583(_0x3068e1);}})[_0xe36e('0x49')](function(_0x1e8943){return _0x41bad0(_0x1e8943);});});;});};function addVoicePrefixExtensions(_0x30786a,_0x3565cb){var _0x3d4874=[];var _0x48ff05=formatPrefixName(_0x30786a[_0xe36e('0x63')]);_0x3d4874[_0xe36e('0x69')](new Extension(_0x48ff05,0x2,_0xe36e('0x6a'),_0xe36e('0x6b')+_0x30786a[_0xe36e('0x2c')]));if(_0x30786a[_0xe36e('0x6c')]){_0x3d4874[_0xe36e('0x69')](new Extension(_0x48ff05,0x3,_0xe36e('0x6a'),_0xe36e('0x6d')+_0x30786a[_0xe36e('0x6c')]));}else{_0x3d4874[_0xe36e('0x69')](new Extension(_0x48ff05,0x3,'NoOp',_0xe36e('0x6e')));}_0x3d4874[_0xe36e('0x69')](new Extension(_0x48ff05,0x4,_0xe36e('0x6f'),_0x3565cb[_0xe36e('0x5b')]+','+'${EXTEN:'+(0x8+_0x30786a['name'][_0xe36e('0x3b')])+'}'+','+0x1));return _0x3d4874;}function formatPrefixName(_0x55911b){var _0x585bd5='_';for(var _0x59c454=0x0;_0x59c454<_0x55911b[_0xe36e('0x3b')];_0x59c454++){if(_0x55911b['charAt'](_0x59c454)=='-'){_0x585bd5+=_0x55911b[_0xe36e('0x70')](_0x59c454);}else{_0x585bd5+='['+_0x55911b[_0xe36e('0x70')](_0x59c454)+']';}}_0x585bd5+='.';return _0x585bd5;}exports[_0xe36e('0x28')]=function(_0x221a90,_0x1bd60d,_0x46f789){var _0x11e610=_0x221a90[_0xe36e('0x71')];_0x11e610[_0xe36e('0x63')]='system-'+_0x11e610[_0xe36e('0x2c')]+'-';return db['sequelize'][_0xe36e('0x50')](function(_0x517c2a){return db[_0xe36e('0x30')][_0xe36e('0x28')](_0x11e610,{'where':{'id':_0x11e610['id']},'transaction':_0x517c2a})[_0xe36e('0x29')](function(){return db[_0xe36e('0x52')]['destroy']({'where':{'VoicePrefixId':_0x11e610['id']},'transaction':_0x517c2a})['then'](function(){return db[_0xe36e('0x52')][_0xe36e('0x4c')]({'where':{'id':_0x11e610[_0xe36e('0x66')]},'raw':!![]})[_0xe36e('0x29')](function(_0x3be728){return createVoicePrefixExtensions(_0x11e610,_0x3be728,_0x517c2a);});});});})[_0xe36e('0x29')](function(){return db['VoicePrefix'][_0xe36e('0x72')](_0x11e610['id']);})[_0xe36e('0x29')](respondWithResult(_0x1bd60d,null))['catch'](handleError(_0x1bd60d,null));};exports[_0xe36e('0x73')]=function(_0x5eea4f,_0x45ebca,_0x421c28){return db[_0xe36e('0x30')][_0xe36e('0x4c')]({'where':{'id':_0x5eea4f['params']['id']}})[_0xe36e('0x29')](handleEntityNotFound(_0x45ebca,null))['then'](function(_0x49a74b){if(_0x49a74b){return _0x49a74b[_0xe36e('0x73')](_0x5eea4f[_0xe36e('0x71')]['ids'],_['omit'](_0x5eea4f[_0xe36e('0x71')],['ids','id'])||{})[_0xe36e('0x74')](function(_0x36ddc0){for(var _0x2c0ed5=0x0;_0x2c0ed5<_0x5eea4f[_0xe36e('0x71')][_0xe36e('0x75')][_0xe36e('0x3b')];_0x2c0ed5+=0x1){socket['emit'](_0xe36e('0x76'),{'UserId':Number(_0x5eea4f[_0xe36e('0x71')][_0xe36e('0x75')][_0x2c0ed5]),'VoicePrefixId':Number(_0x5eea4f[_0xe36e('0x4b')]['id'])});}return _0x36ddc0;});}})['then'](respondWithResult(_0x45ebca,null))[_0xe36e('0x49')](handleError(_0x45ebca,null));};exports[_0xe36e('0x77')]=function(_0x2eef73,_0x39c9fe,_0x5ee201){return db[_0xe36e('0x30')]['find']({'where':{'id':_0x2eef73[_0xe36e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x39c9fe,null))[_0xe36e('0x29')](function(_0x522968){if(_0x522968){return _0x522968['removeAgents'](_0x2eef73[_0xe36e('0x38')][_0xe36e('0x75')])[_0xe36e('0x29')](function(){if(_['isArray'](_0x2eef73[_0xe36e('0x38')][_0xe36e('0x75')])){for(var _0x48e4f5=0x0;_0x48e4f5<_0x2eef73[_0xe36e('0x38')][_0xe36e('0x75')][_0xe36e('0x3b')];_0x48e4f5+=0x1){socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x2eef73[_0xe36e('0x38')][_0xe36e('0x75')][_0x48e4f5]),'VoicePrefixId':Number(_0x2eef73[_0xe36e('0x4b')]['id'])});}}else{socket[_0xe36e('0x78')](_0xe36e('0x79'),{'UserId':Number(_0x2eef73['query'][_0xe36e('0x75')]),'VoicePrefixId':Number(_0x2eef73[_0xe36e('0x4b')]['id'])});}});}})[_0xe36e('0x29')](respondWithStatusCode(_0x39c9fe,null))[_0xe36e('0x49')](handleError(_0x39c9fe,null));};exports[_0xe36e('0x7a')]=function(_0x5bdeea,_0x3712f6,_0x24fcf8){var _0x188dc9={};var _0x493d0f={};var _0x25e4eb;var _0x499f0a;return db[_0xe36e('0x30')]['findOne']({'where':{'id':_0x5bdeea[_0xe36e('0x4b')]['id']}})[_0xe36e('0x29')](handleEntityNotFound(_0x3712f6,null))['then'](function(_0x463355){if(_0x463355){_0x25e4eb=_0x463355;_0x493d0f['model']=_[_0xe36e('0x36')](db[_0xe36e('0x7b')][_0xe36e('0x31')]);_0x493d0f[_0xe36e('0x38')]=_[_0xe36e('0x36')](_0x5bdeea['query']);_0x493d0f[_0xe36e('0x40')]=_['intersection'](_0x493d0f[_0xe36e('0x35')],_0x493d0f[_0xe36e('0x38')]);_0x188dc9[_0xe36e('0x39')]=_[_0xe36e('0x37')](_0x493d0f[_0xe36e('0x35')],qs[_0xe36e('0x3a')](_0x5bdeea['query'][_0xe36e('0x3a')]));_0x188dc9[_0xe36e('0x39')]=_0x188dc9[_0xe36e('0x39')]['length']?_0x188dc9[_0xe36e('0x39')]:_0x493d0f[_0xe36e('0x35')];_0x188dc9[_0xe36e('0x3d')]=qs[_0xe36e('0x3e')](_0x5bdeea['query'][_0xe36e('0x3e')]);_0x188dc9['where']=qs[_0xe36e('0x40')](_['pick'](_0x5bdeea[_0xe36e('0x38')],_0x493d0f[_0xe36e('0x40')]));if(_0x5bdeea[_0xe36e('0x38')]['filter']){_0x188dc9[_0xe36e('0x3f')]=_[_0xe36e('0x43')](_0x188dc9['where'],{'$or':_[_0xe36e('0x2f')](_0x188dc9[_0xe36e('0x39')],function(_0x1f4dd2){var _0x531eac={};_0x531eac[_0x1f4dd2]={'$like':'%'+_0x5bdeea['query'][_0xe36e('0x42')]+'%'};return _0x531eac;})});}_0x188dc9=_[_0xe36e('0x43')]({},_0x188dc9,_0x5bdeea[_0xe36e('0x45')]);return _0x25e4eb[_0xe36e('0x7a')](_0x188dc9);}})[_0xe36e('0x29')](function(_0x5e62f1){if(_0x5e62f1){_0x499f0a=_0x5e62f1[_0xe36e('0x3b')];if(!_0x5bdeea[_0xe36e('0x38')][_0xe36e('0x3c')](_0xe36e('0x7c'))){_0x188dc9['limit']=qs[_0xe36e('0x23')](_0x5bdeea[_0xe36e('0x38')]['limit']);_0x188dc9['offset']=qs['offset'](_0x5bdeea[_0xe36e('0x38')]['offset']);}return _0x25e4eb['getAgents'](_0x188dc9);}})[_0xe36e('0x29')](function(_0x96f37a){if(_0x96f37a){return _0x96f37a?{'count':_0x499f0a,'rows':_0x96f37a}:null;}})[_0xe36e('0x29')](respondWithResult(_0x3712f6,null))[_0xe36e('0x49')](handleError(_0x3712f6,null));};exports[_0xe36e('0x7d')]=function(_0x378126,_0x48fbed,_0x2ebe8e){var _0x4f9354={};var _0x493692={};var _0x4451ec;var _0x21644d;return db[_0xe36e('0x30')][_0xe36e('0x7e')]({'where':{'id':_0x378126['params']['id']}})[_0xe36e('0x29')](handleEntityNotFound(_0x48fbed,null))[_0xe36e('0x29')](function(_0x23e62d){if(_0x23e62d){_0x4451ec=_0x23e62d;_0x493692[_0xe36e('0x35')]=_['keys'](db[_0xe36e('0x7f')]['rawAttributes']);_0x493692[_0xe36e('0x38')]=_[_0xe36e('0x36')](_0x378126[_0xe36e('0x38')]);_0x493692[_0xe36e('0x40')]=_[_0xe36e('0x37')](_0x493692['model'],_0x493692[_0xe36e('0x38')]);_0x4f9354[_0xe36e('0x39')]=_[_0xe36e('0x37')](_0x493692[_0xe36e('0x35')],qs[_0xe36e('0x3a')](_0x378126[_0xe36e('0x38')][_0xe36e('0x3a')]));_0x4f9354[_0xe36e('0x39')]=_0x4f9354[_0xe36e('0x39')][_0xe36e('0x3b')]?_0x4f9354[_0xe36e('0x39')]:_0x493692[_0xe36e('0x35')];_0x4f9354[_0xe36e('0x3d')]=qs['sort'](_0x378126['query']['sort']);_0x4f9354[_0xe36e('0x3f')]=qs[_0xe36e('0x40')](_[_0xe36e('0x41')](_0x378126[_0xe36e('0x38')],_0x493692['filters']));if(_0x378126[_0xe36e('0x38')][_0xe36e('0x42')]){_0x4f9354[_0xe36e('0x3f')]=_[_0xe36e('0x43')](_0x4f9354['where'],{'$or':_[_0xe36e('0x2f')](_0x4f9354[_0xe36e('0x39')],function(_0xdd1816){var _0x18dd36={};_0x18dd36[_0xdd1816]={'$like':'%'+_0x378126['query']['filter']+'%'};return _0x18dd36;})});}_0x4f9354=_[_0xe36e('0x43')]({},_0x4f9354,_0x378126[_0xe36e('0x45')]);return _0x4451ec['getTeams'](_0x4f9354);}})['then'](function(_0x59bf4d){if(_0x59bf4d){_0x21644d=_0x59bf4d[_0xe36e('0x3b')];if(!_0x378126[_0xe36e('0x38')][_0xe36e('0x3c')]('nolimit')){_0x4f9354[_0xe36e('0x23')]=qs[_0xe36e('0x23')](_0x378126[_0xe36e('0x38')][_0xe36e('0x23')]);_0x4f9354['offset']=qs[_0xe36e('0x22')](_0x378126[_0xe36e('0x38')][_0xe36e('0x22')]);}return _0x4451ec[_0xe36e('0x7d')](_0x4f9354);}})['then'](function(_0x3de53b){if(_0x3de53b){return _0x3de53b?{'count':_0x21644d,'rows':_0x3de53b}:null;}})['then'](respondWithResult(_0x48fbed,null))[_0xe36e('0x49')](handleError(_0x48fbed,null));};exports['addTeams']=function(_0x1c95cd,_0x2b3e81,_0x498822){var _0x2376b2=_0x1c95cd[_0xe36e('0x71')]['ids'];var _0x179b3f;return db[_0xe36e('0x7f')][_0xe36e('0x80')]({'where':{'id':_0x2376b2},'attributes':['id'],'include':[{'model':db[_0xe36e('0x7b')],'as':_0xe36e('0x81'),'attributes':['id',_0xe36e('0x2c'),'online',_0xe36e('0x82'),_0xe36e('0x83')],'raw':!![]}]})['then'](function(_0xda5f86){if(_0xda5f86){_0x179b3f=_0xda5f86;var _0x48e276=_[_0xe36e('0x84')](_0xda5f86,function(_0x7872d5){var _0x2aefd4=_0x7872d5[_0xe36e('0x51')]({'plain':!![]});return _0x2aefd4['Agents'];});return db[_0xe36e('0x30')][_0xe36e('0x4c')]({'where':{'id':_0x1c95cd[_0xe36e('0x4b')]['id']}})[_0xe36e('0x29')](function(_0x43f149){return db['sequelize'][_0xe36e('0x50')](function(_0x25abc5){return _0x43f149['addTeams'](_0x2376b2,{'transaction':_0x25abc5})['then'](function(){return BPromise[_0xe36e('0x85')](_0x179b3f,function(_0x51c98c){return db[_0xe36e('0x86')][_0xe36e('0x87')]({'TeamId':_0x51c98c['id'],'VoicePrefixId':_0x1c95cd[_0xe36e('0x4b')]['id']},{'transaction':_0x25abc5});});})[_0xe36e('0x29')](function(){return BPromise[_0xe36e('0x85')](_0x48e276,function(_0x3bd8e1){return db[_0xe36e('0x88')][_0xe36e('0x89')]({'where':{'UserId':_0x3bd8e1['id'],'VoicePrefixId':_0x1c95cd[_0xe36e('0x4b')]['id']},'transaction':_0x25abc5});});})[_0xe36e('0x29')](function(){_0x48e276['forEach'](function(_0xab0e50){socket['emit'](_0xe36e('0x76'),{'UserId':_0xab0e50['id'],'VoicePrefixId':_0x43f149['id']});});});});});}})[_0xe36e('0x29')](respondWithStatusCode(_0x2b3e81,null))[_0xe36e('0x49')](handleError(_0x2b3e81,null));};exports['removeTeams']=function(_0x3fc054,_0x947053,_0x51c758){return db[_0xe36e('0x7f')]['findAll']({'where':{'id':_0x3fc054[_0xe36e('0x38')][_0xe36e('0x75')]},'attributes':['id'],'include':[{'model':db[_0xe36e('0x7b')],'as':_0xe36e('0x81'),'attributes':['id'],'raw':!![]}]})[_0xe36e('0x29')](handleEntityNotFound(_0x947053,null))[_0xe36e('0x29')](function(_0x257b00){var _0x2056ed=_[_0xe36e('0x2f')](_0x257b00,'id');var _0x31ae71=[];var _0x166c22=[];var _0x47b082=squel['select']();_0x47b082[_0xe36e('0x8a')](_0xe36e('0x8b'))[_0xe36e('0x8c')](_0xe36e('0x8d'),'tq')['join'](_0xe36e('0x8e'),'ut',_0xe36e('0x8f'))['where'](_0xe36e('0x90'),_0x3fc054['params']['id']);for(var _0x260fff=0x0;_0x260fff<_0x257b00[_0xe36e('0x3b')];_0x260fff+=0x1){let _0x27d09b=_0x257b00[_0x260fff];for(var _0x5bc8b1=0x0;_0x5bc8b1<_0x27d09b[_0xe36e('0x81')][_0xe36e('0x3b')];_0x5bc8b1+=0x1){let _0x2e0e12=_0x27d09b[_0xe36e('0x81')][_0x5bc8b1];var _0x7a5d80=_0x47b082[_0xe36e('0x91')]();_0x7a5d80[_0xe36e('0x3f')]('ut.UserId\x20=\x20?',_0x2e0e12['id']);_0x166c22[_0xe36e('0x69')](db[_0xe36e('0x4f')][_0xe36e('0x38')](_0x7a5d80[_0xe36e('0x92')](),{'type':db[_0xe36e('0x4f')][_0xe36e('0x93')][_0xe36e('0x94')]})[_0xe36e('0x29')](function(_0xacc91e){if(_0xacc91e['length']===0x1){return _0x2e0e12['id'];}else{var _0x3e0dc9=_[_0xe36e('0x95')](_['map'](_0xacc91e,'TeamId'),function(_0x546461){return _[_0xe36e('0x96')](_0x2056ed,_0x546461);});if(_0x3e0dc9){return _0x2e0e12['id'];}}}));}}return BPromise[_0xe36e('0x97')](_0x166c22)['then'](function(_0x20208c){_0x31ae71=_(_0x31ae71)['union'](_0x20208c)['compact']()['value']();return db[_0xe36e('0x30')][_0xe36e('0x4c')]({'where':{'id':_0x3fc054['params']['id']}})[_0xe36e('0x29')](function(_0x2c9191){return db['sequelize'][_0xe36e('0x50')](function(_0x15b38e){return _0x2c9191['removeTeams'](_0x3fc054[_0xe36e('0x38')][_0xe36e('0x75')],{'transaction':_0x15b38e})['then'](function(){if(!_['isEmpty'](_0x31ae71)){return _0x2c9191[_0xe36e('0x77')](_0x31ae71,{'transaction':_0x15b38e});}})[_0xe36e('0x29')](function(){_0x31ae71[_0xe36e('0x98')](function(_0x3c7778){socket[_0xe36e('0x78')](_0xe36e('0x79'),{'UserId':_0x3c7778,'VoicePrefixId':_0x2c9191['id']});});});});});});})[_0xe36e('0x29')](respondWithStatusCode(_0x947053,null))[_0xe36e('0x49')](handleError(_0x947053,null));};
\ No newline at end of file
+var _0x0972=['filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','params','keys','include','find','create','sequelize','transaction','body','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','VoicePrefixes','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','exten','system','Voice\x20Prefix\x20Extension','priority','appdata','NoOp','Voice\x20Prefix','VoicePrefixId','get','Extensions\x20creation\x20failed','prefix','push','callerIdAll','Set','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','length','charAt','system-','VoiceExtensionId','findById','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','getTeams','addTeams','Team','findAll','Agents','online','voicePause','interface','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','QueryTypes','every','TeamId','includes','all','union','value','isEmpty','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','end','name','send','index','map','VoicePrefix','rawAttributes','fieldName','type','key','query'];(function(_0x29f443,_0x497381){var _0xae7643=function(_0x168e10){while(--_0x168e10){_0x29f443['push'](_0x29f443['shift']());}};_0xae7643(++_0x497381);}(_0x0972,0x64));var _0x2097=function(_0xe8f57e,_0x5ba143){_0xe8f57e=_0xe8f57e-0x0;var _0x4f5859=_0x0972[_0xe8f57e];return _0x4f5859;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2097('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2097('0x1'));var rp=require('request-promise');var moment=require(_0x2097('0x2'));var BPromise=require(_0x2097('0x3'));var Mustache=require('mustache');var util=require(_0x2097('0x4'));var path=require(_0x2097('0x5'));var sox=require(_0x2097('0x6'));var csv=require(_0x2097('0x7'));var ejs=require(_0x2097('0x8'));var fs=require('fs');var fs_extra=require(_0x2097('0x9'));var _=require(_0x2097('0xa'));var squel=require('squel');var crypto=require(_0x2097('0xb'));var jsforce=require(_0x2097('0xc'));var deskjs=require(_0x2097('0xd'));var toCsv=require(_0x2097('0x7'));var querystring=require(_0x2097('0xe'));var Papa=require('papaparse');var Redis=require(_0x2097('0xf'));var authService=require(_0x2097('0x10'));var qs=require(_0x2097('0x11'));var as=require(_0x2097('0x12'));var hardwareService=require(_0x2097('0x13'));var logger=require(_0x2097('0x14'))(_0x2097('0x15'));var utils=require(_0x2097('0x16'));var config=require(_0x2097('0x17'));var licenseUtil=require(_0x2097('0x18'));var db=require(_0x2097('0x19'))['db'];config[_0x2097('0x1a')]=_[_0x2097('0x1b')](config[_0x2097('0x1a')],{'host':_0x2097('0x1c'),'port':0x18eb});var socket=require(_0x2097('0x1d'))(new Redis(config[_0x2097('0x1a')]));require(_0x2097('0x1e'))[_0x2097('0x1f')](socket);function respondWithStatusCode(_0x354387,_0x5d0a43){_0x5d0a43=_0x5d0a43||0xcc;return function(_0x639c14){if(_0x639c14){return _0x354387[_0x2097('0x20')](_0x5d0a43);}return _0x354387['status'](_0x5d0a43)['end']();};}function respondWithResult(_0x4fc8c5,_0x409deb){_0x409deb=_0x409deb||0xc8;return function(_0x588396){if(_0x588396){return _0x4fc8c5[_0x2097('0x21')](_0x409deb)[_0x2097('0x22')](_0x588396);}};}function respondWithFilteredResult(_0x43fec9,_0x1347e4){return function(_0x44c584){if(_0x44c584){var _0x53e2b4=typeof _0x1347e4[_0x2097('0x23')]===_0x2097('0x24')&&typeof _0x1347e4[_0x2097('0x25')]===_0x2097('0x24');var _0x1d3804=_0x44c584[_0x2097('0x26')];var _0x253f5d=_0x53e2b4?0x0:_0x1347e4[_0x2097('0x23')];var _0x5d8b9e=_0x53e2b4?_0x44c584['count']:_0x1347e4[_0x2097('0x23')]+_0x1347e4['limit'];var _0x227c00;if(_0x5d8b9e>=_0x1d3804){_0x5d8b9e=_0x1d3804;_0x227c00=0xc8;}else{_0x227c00=0xce;}_0x43fec9[_0x2097('0x21')](_0x227c00);return _0x43fec9['set'](_0x2097('0x27'),_0x253f5d+'-'+_0x5d8b9e+'/'+_0x1d3804)['json'](_0x44c584);}return null;};}function patchUpdates(_0x2e17c8){return function(_0xf32d3f){try{jsonpatch[_0x2097('0x28')](_0xf32d3f,_0x2e17c8,!![]);}catch(_0x20b93a){return BPromise[_0x2097('0x29')](_0x20b93a);}return _0xf32d3f[_0x2097('0x2a')]();};}function saveUpdates(_0x56390a,_0xae5f9){return function(_0x500234){if(_0x500234){return _0x500234[_0x2097('0x2b')](_0x56390a)[_0x2097('0x2c')](function(_0x345875){return _0x345875;});}return null;};}function removeEntity(_0x9f59bc,_0x499988){return function(_0x2d683a){if(_0x2d683a){return _0x2d683a[_0x2097('0x2d')]()['then'](function(){var _0x1229fc=_0x2d683a['get']({'plain':!![]});var _0x29b879='VoicePrefixes';return db[_0x2097('0x2e')][_0x2097('0x2d')]({'where':{'type':_0x29b879,'resourceId':_0x1229fc['id']}})[_0x2097('0x2c')](function(){return _0x2d683a;});})[_0x2097('0x2c')](function(){_0x9f59bc[_0x2097('0x21')](0xcc)[_0x2097('0x2f')]();});}};}function handleEntityNotFound(_0x450e0b,_0x4b443d){return function(_0x11242f){if(!_0x11242f){_0x450e0b[_0x2097('0x20')](0x194);}return _0x11242f;};}function handleError(_0x5cce55,_0x1398d0){_0x1398d0=_0x1398d0||0x1f4;return function(_0x41487d){logger['error'](_0x41487d['stack']);if(_0x41487d[_0x2097('0x30')]){delete _0x41487d[_0x2097('0x30')];}_0x5cce55[_0x2097('0x21')](_0x1398d0)[_0x2097('0x31')](_0x41487d);};}exports[_0x2097('0x32')]=function(_0x180654,_0x56c538){var _0xe1a381={},_0x56bb42={},_0x193160={'count':0x0,'rows':[]};var _0x3c36d3=_[_0x2097('0x33')](db[_0x2097('0x34')][_0x2097('0x35')],function(_0x395d9f){return{'name':_0x395d9f[_0x2097('0x36')],'type':_0x395d9f[_0x2097('0x37')][_0x2097('0x38')]};});_0x56bb42['model']=_[_0x2097('0x33')](_0x3c36d3,_0x2097('0x30'));_0x56bb42[_0x2097('0x39')]=_['keys'](_0x180654[_0x2097('0x39')]);_0x56bb42[_0x2097('0x3a')]=_[_0x2097('0x3b')](_0x56bb42[_0x2097('0x3c')],_0x56bb42['query']);_0xe1a381['attributes']=_['intersection'](_0x56bb42[_0x2097('0x3c')],qs[_0x2097('0x3d')](_0x180654[_0x2097('0x39')][_0x2097('0x3d')]));_0xe1a381[_0x2097('0x3e')]=_0xe1a381[_0x2097('0x3e')]['length']?_0xe1a381[_0x2097('0x3e')]:_0x56bb42[_0x2097('0x3c')];if(!_0x180654[_0x2097('0x39')][_0x2097('0x3f')](_0x2097('0x40'))){_0xe1a381[_0x2097('0x25')]=qs['limit'](_0x180654[_0x2097('0x39')][_0x2097('0x25')]);_0xe1a381[_0x2097('0x23')]=qs['offset'](_0x180654['query'][_0x2097('0x23')]);}_0xe1a381[_0x2097('0x41')]=qs[_0x2097('0x42')](_0x180654[_0x2097('0x39')][_0x2097('0x42')]);_0xe1a381[_0x2097('0x43')]=qs[_0x2097('0x3a')](_[_0x2097('0x44')](_0x180654[_0x2097('0x39')],_0x56bb42[_0x2097('0x3a')]),_0x3c36d3);if(_0x180654[_0x2097('0x39')][_0x2097('0x45')]){_0xe1a381['where']=_[_0x2097('0x46')](_0xe1a381[_0x2097('0x43')],{'$or':_[_0x2097('0x33')](_0x3c36d3,function(_0x483900){if(_0x483900[_0x2097('0x37')]!==_0x2097('0x47')){var _0x26d448={};_0x26d448[_0x483900[_0x2097('0x30')]]={'$like':'%'+_0x180654[_0x2097('0x39')][_0x2097('0x45')]+'%'};return _0x26d448;}})});}_0xe1a381=_[_0x2097('0x46')]({},_0xe1a381,_0x180654[_0x2097('0x48')]);var _0x5ab893={'where':_0xe1a381[_0x2097('0x43')]};return db[_0x2097('0x34')][_0x2097('0x26')](_0x5ab893)[_0x2097('0x2c')](function(_0x12e0e2){_0x193160[_0x2097('0x26')]=_0x12e0e2;if(_0x180654[_0x2097('0x39')][_0x2097('0x49')]){_0xe1a381['include']=[{'all':!![]}];}return db[_0x2097('0x34')]['findAll'](_0xe1a381);})[_0x2097('0x2c')](function(_0x298e49){_0x193160[_0x2097('0x4a')]=_0x298e49;return _0x193160;})[_0x2097('0x2c')](respondWithFilteredResult(_0x56c538,_0xe1a381))[_0x2097('0x4b')](handleError(_0x56c538,null));};exports['show']=function(_0x2cf34e,_0x46ccbb){var _0x113c3b={'raw':![],'where':{'id':_0x2cf34e[_0x2097('0x4c')]['id']}},_0x39e0a4={};_0x39e0a4['model']=_[_0x2097('0x4d')](db[_0x2097('0x34')][_0x2097('0x35')]);_0x39e0a4[_0x2097('0x39')]=_[_0x2097('0x4d')](_0x2cf34e[_0x2097('0x39')]);_0x39e0a4[_0x2097('0x3a')]=_[_0x2097('0x3b')](_0x39e0a4['model'],_0x39e0a4[_0x2097('0x39')]);_0x113c3b[_0x2097('0x3e')]=_[_0x2097('0x3b')](_0x39e0a4[_0x2097('0x3c')],qs['fields'](_0x2cf34e['query']['fields']));_0x113c3b[_0x2097('0x3e')]=_0x113c3b[_0x2097('0x3e')]['length']?_0x113c3b[_0x2097('0x3e')]:_0x39e0a4[_0x2097('0x3c')];if(_0x2cf34e['query']['includeAll']){_0x113c3b[_0x2097('0x4e')]=[{'all':!![]}];}_0x113c3b=_[_0x2097('0x46')]({},_0x113c3b,_0x2cf34e[_0x2097('0x48')]);return db['VoicePrefix'][_0x2097('0x4f')](_0x113c3b)[_0x2097('0x2c')](handleEntityNotFound(_0x46ccbb,null))['then'](respondWithResult(_0x46ccbb,null))[_0x2097('0x4b')](handleError(_0x46ccbb,null));};exports[_0x2097('0x2d')]=function(_0xdfea21,_0xba6ef0){return db[_0x2097('0x34')]['find']({'where':{'id':_0xdfea21['params']['id']}})[_0x2097('0x2c')](handleEntityNotFound(_0xba6ef0,null))[_0x2097('0x2c')](removeEntity(_0xba6ef0,null))[_0x2097('0x4b')](handleError(_0xba6ef0,null));};exports['describe']=function(_0x5c1739,_0x144719){return db[_0x2097('0x34')]['describe']()[_0x2097('0x2c')](respondWithResult(_0x144719,null))[_0x2097('0x4b')](handleError(_0x144719,null));};exports[_0x2097('0x50')]=function(_0x33490e,_0x390a52){var _0x4a709a;return db[_0x2097('0x51')][_0x2097('0x52')](function(_0x190859){return db['VoicePrefix'][_0x2097('0x50')](_0x33490e[_0x2097('0x53')],{'transaction':_0x190859})['then'](function(_0x12ba76){_0x4a709a=_0x12ba76['get']({'plain':!![]});return db[_0x2097('0x54')]['find']({'where':{'id':_0x4a709a['VoiceExtensionId']},'raw':!![]})['then'](function(_0x40cbe1){return createVoicePrefixExtensions(_0x4a709a,_0x40cbe1,_0x190859);});});})['then'](function(){var _0x54bea1=_0x33490e[_0x2097('0x55')]['get']({'plain':!![]});if(!_0x54bea1)throw new Error(_0x2097('0x56'));if(_0x54bea1[_0x2097('0x57')]==='user'){var _0x3e799f=_0x4a709a;return db[_0x2097('0x58')][_0x2097('0x4f')]({'where':{'name':_0x2097('0x59'),'userProfileId':_0x54bea1[_0x2097('0x5a')]},'raw':!![]})['then'](function(_0x2117e3){if(_0x2117e3&&_0x2117e3['autoAssociation']===0x0){return db[_0x2097('0x2e')][_0x2097('0x50')]({'name':_0x3e799f[_0x2097('0x30')],'resourceId':_0x3e799f['id'],'type':_0x2117e3['name'],'sectionId':_0x2117e3['id']},{})[_0x2097('0x2c')](function(){return _0x4a709a;});}else{return _0x4a709a;}})[_0x2097('0x4b')](function(_0x2f5016){logger[_0x2097('0x5b')](_0x2097('0x5c'),_0x2f5016);throw _0x2f5016;});}return _0x4a709a;})['then'](respondWithResult(_0x390a52,null))['catch'](handleError(_0x390a52,null));};function Extension(_0x265eac,_0x275578,_0x4cc782,_0x4ddb4b){this['context']='from-sip';this[_0x2097('0x5d')]=_0x265eac;this['app']=_0x4cc782;this[_0x2097('0x37')]=_0x2097('0x5e');this['description']=_0x2097('0x5f');this[_0x2097('0x60')]=_0x275578;this[_0x2097('0x61')]=_0x4ddb4b;}function createVoicePrefixExtensions(_0x103756,_0x2a2673,_0x60332a){return new BPromise(function(_0x15aa91,_0x8f7aaa){var _0x2ec365=new Extension(formatPrefixName(_0x103756['prefix']),0x1,_0x2097('0x62'),_0x2097('0x63'));_0x2ec365[_0x2097('0x64')]=_0x103756['id'];return db[_0x2097('0x54')][_0x2097('0x50')](_0x2ec365,{'transaction':_0x60332a})[_0x2097('0x2c')](function(_0x4befa9){var _0x43071d=_0x4befa9[_0x2097('0x65')]({'plain':!![]});var _0xcabda7=_[_0x2097('0x33')](addVoicePrefixExtensions(_0x103756,_0x2a2673),function(_0x1c4156){_0x1c4156['VoiceExtensionId']=_0x43071d['id'];_0x1c4156[_0x2097('0x64')]=_0x103756['id'];return _0x1c4156;});return db[_0x2097('0x54')]['bulkCreate'](_0xcabda7,{'transaction':_0x60332a})['then'](function(_0x580c1e){if(!_0x580c1e){return _0x8f7aaa(_0x2097('0x66'));}else{return _0x15aa91(_0x580c1e);}})[_0x2097('0x4b')](function(_0x319d3b){return _0x8f7aaa(_0x319d3b);});});;});};function addVoicePrefixExtensions(_0x3edb3e,_0x168703){var _0x18d90a=[];var _0x2e287b=formatPrefixName(_0x3edb3e[_0x2097('0x67')]);_0x18d90a[_0x2097('0x68')](new Extension(_0x2e287b,0x2,'Set','CDR(prefix)='+_0x3edb3e[_0x2097('0x30')]));if(_0x3edb3e[_0x2097('0x69')]){_0x18d90a[_0x2097('0x68')](new Extension(_0x2e287b,0x3,_0x2097('0x6a'),_0x2097('0x6b')+_0x3edb3e[_0x2097('0x69')]));}else{_0x18d90a['push'](new Extension(_0x2e287b,0x3,_0x2097('0x62'),_0x2097('0x6c')));}_0x18d90a[_0x2097('0x68')](new Extension(_0x2e287b,0x4,_0x2097('0x6d'),_0x168703['context']+','+'${EXTEN:'+(0x8+_0x3edb3e[_0x2097('0x30')][_0x2097('0x6e')])+'}'+','+0x1));return _0x18d90a;}function formatPrefixName(_0x487f1f){var _0x3707da='_';for(var _0x426290=0x0;_0x426290<_0x487f1f[_0x2097('0x6e')];_0x426290++){if(_0x487f1f[_0x2097('0x6f')](_0x426290)=='-'){_0x3707da+=_0x487f1f[_0x2097('0x6f')](_0x426290);}else{_0x3707da+='['+_0x487f1f[_0x2097('0x6f')](_0x426290)+']';}}_0x3707da+='.';return _0x3707da;}exports[_0x2097('0x2b')]=function(_0x2c6f24,_0x54159e,_0x4533fd){var _0x283e2b=_0x2c6f24['body'];_0x283e2b[_0x2097('0x67')]=_0x2097('0x70')+_0x283e2b[_0x2097('0x30')]+'-';return db[_0x2097('0x51')][_0x2097('0x52')](function(_0x46d6b5){return db[_0x2097('0x34')][_0x2097('0x2b')](_0x283e2b,{'where':{'id':_0x283e2b['id']},'transaction':_0x46d6b5})[_0x2097('0x2c')](function(){return db[_0x2097('0x54')][_0x2097('0x2d')]({'where':{'VoicePrefixId':_0x283e2b['id']},'transaction':_0x46d6b5})['then'](function(){return db[_0x2097('0x54')][_0x2097('0x4f')]({'where':{'id':_0x283e2b[_0x2097('0x71')]},'raw':!![]})[_0x2097('0x2c')](function(_0x3c9e03){return createVoicePrefixExtensions(_0x283e2b,_0x3c9e03,_0x46d6b5);});});});})['then'](function(){return db[_0x2097('0x34')][_0x2097('0x72')](_0x283e2b['id']);})[_0x2097('0x2c')](respondWithResult(_0x54159e,null))['catch'](handleError(_0x54159e,null));};exports[_0x2097('0x73')]=function(_0x545cd9,_0x364d3a,_0x4dcd9c){return db[_0x2097('0x34')]['find']({'where':{'id':_0x545cd9[_0x2097('0x4c')]['id']}})['then'](handleEntityNotFound(_0x364d3a,null))[_0x2097('0x2c')](function(_0x3dba80){if(_0x3dba80){return _0x3dba80[_0x2097('0x73')](_0x545cd9[_0x2097('0x53')][_0x2097('0x74')],_['omit'](_0x545cd9[_0x2097('0x53')],[_0x2097('0x74'),'id'])||{})[_0x2097('0x75')](function(_0x1f733c){for(var _0xa8416a=0x0;_0xa8416a<_0x545cd9[_0x2097('0x53')][_0x2097('0x74')][_0x2097('0x6e')];_0xa8416a+=0x1){socket[_0x2097('0x76')](_0x2097('0x77'),{'UserId':Number(_0x545cd9[_0x2097('0x53')][_0x2097('0x74')][_0xa8416a]),'VoicePrefixId':Number(_0x545cd9[_0x2097('0x4c')]['id'])});}return _0x1f733c;});}})[_0x2097('0x2c')](respondWithResult(_0x364d3a,null))[_0x2097('0x4b')](handleError(_0x364d3a,null));};exports[_0x2097('0x78')]=function(_0x57a31e,_0x1a81de,_0x4bd44d){return db['VoicePrefix'][_0x2097('0x4f')]({'where':{'id':_0x57a31e[_0x2097('0x4c')]['id']}})[_0x2097('0x2c')](handleEntityNotFound(_0x1a81de,null))['then'](function(_0x34b687){if(_0x34b687){return _0x34b687[_0x2097('0x78')](_0x57a31e[_0x2097('0x39')][_0x2097('0x74')])['then'](function(){if(_[_0x2097('0x79')](_0x57a31e['query'][_0x2097('0x74')])){for(var _0x385551=0x0;_0x385551<_0x57a31e[_0x2097('0x39')][_0x2097('0x74')]['length'];_0x385551+=0x1){socket[_0x2097('0x76')](_0x2097('0x7a'),{'UserId':Number(_0x57a31e[_0x2097('0x39')]['ids'][_0x385551]),'VoicePrefixId':Number(_0x57a31e[_0x2097('0x4c')]['id'])});}}else{socket[_0x2097('0x76')](_0x2097('0x7a'),{'UserId':Number(_0x57a31e['query'][_0x2097('0x74')]),'VoicePrefixId':Number(_0x57a31e[_0x2097('0x4c')]['id'])});}});}})[_0x2097('0x2c')](respondWithStatusCode(_0x1a81de,null))[_0x2097('0x4b')](handleError(_0x1a81de,null));};exports[_0x2097('0x7b')]=function(_0x5efe1e,_0x5d181f,_0x56d4c0){var _0xc7481d={};var _0x3f510d={};var _0x4213d0;var _0x16451c;return db[_0x2097('0x34')][_0x2097('0x7c')]({'where':{'id':_0x5efe1e['params']['id']}})[_0x2097('0x2c')](handleEntityNotFound(_0x5d181f,null))[_0x2097('0x2c')](function(_0x164ad3){if(_0x164ad3){_0x4213d0=_0x164ad3;_0x3f510d[_0x2097('0x3c')]=_[_0x2097('0x4d')](db[_0x2097('0x7d')][_0x2097('0x35')]);_0x3f510d['query']=_[_0x2097('0x4d')](_0x5efe1e[_0x2097('0x39')]);_0x3f510d[_0x2097('0x3a')]=_[_0x2097('0x3b')](_0x3f510d[_0x2097('0x3c')],_0x3f510d[_0x2097('0x39')]);_0xc7481d['attributes']=_['intersection'](_0x3f510d[_0x2097('0x3c')],qs['fields'](_0x5efe1e['query'][_0x2097('0x3d')]));_0xc7481d[_0x2097('0x3e')]=_0xc7481d[_0x2097('0x3e')][_0x2097('0x6e')]?_0xc7481d[_0x2097('0x3e')]:_0x3f510d[_0x2097('0x3c')];_0xc7481d[_0x2097('0x41')]=qs[_0x2097('0x42')](_0x5efe1e['query'][_0x2097('0x42')]);_0xc7481d[_0x2097('0x43')]=qs[_0x2097('0x3a')](_[_0x2097('0x44')](_0x5efe1e[_0x2097('0x39')],_0x3f510d['filters']));if(_0x5efe1e[_0x2097('0x39')][_0x2097('0x45')]){_0xc7481d[_0x2097('0x43')]=_[_0x2097('0x46')](_0xc7481d[_0x2097('0x43')],{'$or':_[_0x2097('0x33')](_0xc7481d['attributes'],function(_0x33b0c0){var _0x79f858={};_0x79f858[_0x33b0c0]={'$like':'%'+_0x5efe1e['query']['filter']+'%'};return _0x79f858;})});}_0xc7481d=_['merge']({},_0xc7481d,_0x5efe1e['options']);return _0x4213d0[_0x2097('0x7b')](_0xc7481d);}})[_0x2097('0x2c')](function(_0x3fe29e){if(_0x3fe29e){_0x16451c=_0x3fe29e[_0x2097('0x6e')];if(!_0x5efe1e[_0x2097('0x39')]['hasOwnProperty'](_0x2097('0x40'))){_0xc7481d[_0x2097('0x25')]=qs[_0x2097('0x25')](_0x5efe1e[_0x2097('0x39')][_0x2097('0x25')]);_0xc7481d[_0x2097('0x23')]=qs['offset'](_0x5efe1e[_0x2097('0x39')][_0x2097('0x23')]);}return _0x4213d0['getAgents'](_0xc7481d);}})[_0x2097('0x2c')](function(_0x358bc3){if(_0x358bc3){return _0x358bc3?{'count':_0x16451c,'rows':_0x358bc3}:null;}})[_0x2097('0x2c')](respondWithResult(_0x5d181f,null))[_0x2097('0x4b')](handleError(_0x5d181f,null));};exports[_0x2097('0x7e')]=function(_0x498a91,_0x3a7959,_0x35570d){var _0x86f89={};var _0x26a3e5={};var _0x25bb03;var _0x429c9e;return db[_0x2097('0x34')][_0x2097('0x7c')]({'where':{'id':_0x498a91[_0x2097('0x4c')]['id']}})[_0x2097('0x2c')](handleEntityNotFound(_0x3a7959,null))[_0x2097('0x2c')](function(_0x299a3e){if(_0x299a3e){_0x25bb03=_0x299a3e;_0x26a3e5[_0x2097('0x3c')]=_['keys'](db['Team'][_0x2097('0x35')]);_0x26a3e5['query']=_['keys'](_0x498a91[_0x2097('0x39')]);_0x26a3e5[_0x2097('0x3a')]=_[_0x2097('0x3b')](_0x26a3e5[_0x2097('0x3c')],_0x26a3e5[_0x2097('0x39')]);_0x86f89['attributes']=_['intersection'](_0x26a3e5[_0x2097('0x3c')],qs['fields'](_0x498a91[_0x2097('0x39')]['fields']));_0x86f89['attributes']=_0x86f89['attributes']['length']?_0x86f89['attributes']:_0x26a3e5[_0x2097('0x3c')];_0x86f89[_0x2097('0x41')]=qs[_0x2097('0x42')](_0x498a91[_0x2097('0x39')][_0x2097('0x42')]);_0x86f89[_0x2097('0x43')]=qs[_0x2097('0x3a')](_[_0x2097('0x44')](_0x498a91[_0x2097('0x39')],_0x26a3e5[_0x2097('0x3a')]));if(_0x498a91[_0x2097('0x39')][_0x2097('0x45')]){_0x86f89[_0x2097('0x43')]=_[_0x2097('0x46')](_0x86f89[_0x2097('0x43')],{'$or':_[_0x2097('0x33')](_0x86f89[_0x2097('0x3e')],function(_0x5e49bc){var _0x1e30c5={};_0x1e30c5[_0x5e49bc]={'$like':'%'+_0x498a91[_0x2097('0x39')][_0x2097('0x45')]+'%'};return _0x1e30c5;})});}_0x86f89=_[_0x2097('0x46')]({},_0x86f89,_0x498a91[_0x2097('0x48')]);return _0x25bb03[_0x2097('0x7e')](_0x86f89);}})[_0x2097('0x2c')](function(_0x1c5ec7){if(_0x1c5ec7){_0x429c9e=_0x1c5ec7[_0x2097('0x6e')];if(!_0x498a91[_0x2097('0x39')][_0x2097('0x3f')]('nolimit')){_0x86f89[_0x2097('0x25')]=qs[_0x2097('0x25')](_0x498a91[_0x2097('0x39')][_0x2097('0x25')]);_0x86f89[_0x2097('0x23')]=qs[_0x2097('0x23')](_0x498a91['query']['offset']);}return _0x25bb03[_0x2097('0x7e')](_0x86f89);}})[_0x2097('0x2c')](function(_0x2beb7a){if(_0x2beb7a){return _0x2beb7a?{'count':_0x429c9e,'rows':_0x2beb7a}:null;}})['then'](respondWithResult(_0x3a7959,null))[_0x2097('0x4b')](handleError(_0x3a7959,null));};exports[_0x2097('0x7f')]=function(_0x4eeac1,_0x459585,_0x436533){var _0x16405f=_0x4eeac1[_0x2097('0x53')][_0x2097('0x74')];var _0x41f718;return db[_0x2097('0x80')][_0x2097('0x81')]({'where':{'id':_0x16405f},'attributes':['id'],'include':[{'model':db[_0x2097('0x7d')],'as':_0x2097('0x82'),'attributes':['id',_0x2097('0x30'),_0x2097('0x83'),_0x2097('0x84'),_0x2097('0x85')],'raw':!![]}]})[_0x2097('0x2c')](function(_0x44661a){if(_0x44661a){_0x41f718=_0x44661a;var _0x39e21f=_['flatMap'](_0x44661a,function(_0x2d211b){var _0x1ab39a=_0x2d211b[_0x2097('0x65')]({'plain':!![]});return _0x1ab39a[_0x2097('0x82')];});return db[_0x2097('0x34')][_0x2097('0x4f')]({'where':{'id':_0x4eeac1[_0x2097('0x4c')]['id']}})[_0x2097('0x2c')](function(_0xecd4fc){return db[_0x2097('0x51')]['transaction'](function(_0x2fb539){return _0xecd4fc[_0x2097('0x7f')](_0x16405f,{'transaction':_0x2fb539})[_0x2097('0x2c')](function(){return BPromise[_0x2097('0x86')](_0x41f718,function(_0x17c494){return db[_0x2097('0x87')][_0x2097('0x88')]({'TeamId':_0x17c494['id'],'VoicePrefixId':_0x4eeac1[_0x2097('0x4c')]['id']},{'transaction':_0x2fb539});});})['then'](function(){return BPromise[_0x2097('0x86')](_0x39e21f,function(_0x239570){return db[_0x2097('0x89')][_0x2097('0x8a')]({'where':{'UserId':_0x239570['id'],'VoicePrefixId':_0x4eeac1[_0x2097('0x4c')]['id']},'transaction':_0x2fb539});});})[_0x2097('0x2c')](function(){_0x39e21f[_0x2097('0x8b')](function(_0x51bb2f){socket[_0x2097('0x76')](_0x2097('0x77'),{'UserId':_0x51bb2f['id'],'VoicePrefixId':_0xecd4fc['id']});});});});});}})['then'](respondWithStatusCode(_0x459585,null))[_0x2097('0x4b')](handleError(_0x459585,null));};exports[_0x2097('0x8c')]=function(_0x568de5,_0x473a54,_0x53a5ed){return db[_0x2097('0x80')][_0x2097('0x81')]({'where':{'id':_0x568de5['query']['ids']},'attributes':['id'],'include':[{'model':db[_0x2097('0x7d')],'as':_0x2097('0x82'),'attributes':['id'],'raw':!![]}]})[_0x2097('0x2c')](handleEntityNotFound(_0x473a54,null))[_0x2097('0x2c')](function(_0x1909d8){var _0x2de4=_[_0x2097('0x33')](_0x1909d8,'id');var _0x43a1f8=[];var _0xb53629=[];var _0x516ed6=squel[_0x2097('0x8d')]();_0x516ed6[_0x2097('0x8e')]('tq.TeamId')['from'](_0x2097('0x8f'),'tq')[_0x2097('0x90')](_0x2097('0x91'),'ut',_0x2097('0x92'))[_0x2097('0x43')](_0x2097('0x93'),_0x568de5[_0x2097('0x4c')]['id']);for(var _0x5626f0=0x0;_0x5626f0<_0x1909d8[_0x2097('0x6e')];_0x5626f0+=0x1){let _0x45bbca=_0x1909d8[_0x5626f0];for(var _0x46fc92=0x0;_0x46fc92<_0x45bbca[_0x2097('0x82')][_0x2097('0x6e')];_0x46fc92+=0x1){let _0x357a5b=_0x45bbca[_0x2097('0x82')][_0x46fc92];var _0x3fcedc=_0x516ed6[_0x2097('0x94')]();_0x3fcedc[_0x2097('0x43')](_0x2097('0x95'),_0x357a5b['id']);_0xb53629['push'](db[_0x2097('0x51')][_0x2097('0x39')](_0x3fcedc['toString'](),{'type':db[_0x2097('0x51')][_0x2097('0x96')]['SELECT']})[_0x2097('0x2c')](function(_0xbe052f){if(_0xbe052f['length']===0x1){return _0x357a5b['id'];}else{var _0x32c5f1=_[_0x2097('0x97')](_[_0x2097('0x33')](_0xbe052f,_0x2097('0x98')),function(_0x456633){return _[_0x2097('0x99')](_0x2de4,_0x456633);});if(_0x32c5f1){return _0x357a5b['id'];}}}));}}return BPromise[_0x2097('0x9a')](_0xb53629)[_0x2097('0x2c')](function(_0x124d8f){_0x43a1f8=_(_0x43a1f8)[_0x2097('0x9b')](_0x124d8f)['compact']()[_0x2097('0x9c')]();return db[_0x2097('0x34')][_0x2097('0x4f')]({'where':{'id':_0x568de5[_0x2097('0x4c')]['id']}})['then'](function(_0x1b555e){return db['sequelize'][_0x2097('0x52')](function(_0x1ab515){return _0x1b555e[_0x2097('0x8c')](_0x568de5[_0x2097('0x39')][_0x2097('0x74')],{'transaction':_0x1ab515})[_0x2097('0x2c')](function(){if(!_[_0x2097('0x9d')](_0x43a1f8)){return _0x1b555e[_0x2097('0x78')](_0x43a1f8,{'transaction':_0x1ab515});}})[_0x2097('0x2c')](function(){_0x43a1f8['forEach'](function(_0x22fa5d){socket['emit']('userVoicePrefix:remove',{'UserId':_0x22fa5d,'VoicePrefixId':_0x1b555e['id']});});});});});});})['then'](respondWithStatusCode(_0x473a54,null))['catch'](handleError(_0x473a54,null));};
\ No newline at end of file
index 68d1376..6228f31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb0=['setMaxListeners','update','remove','emit','hook','exports','events','../../mysqldb','VoicePrefix'];(function(_0xdbfa98,_0x54d28c){var _0x12941f=function(_0x1eb451){while(--_0x1eb451){_0xdbfa98['push'](_0xdbfa98['shift']());}};_0x12941f(++_0x54d28c);}(_0x3cb0,0x1d1));var _0x03cb=function(_0x10af2c,_0x13760a){_0x10af2c=_0x10af2c-0x0;var _0x1e1d81=_0x3cb0[_0x10af2c];return _0x1e1d81;};'use strict';var EventEmitter=require(_0x03cb('0x0'));var VoicePrefix=require(_0x03cb('0x1'))['db'][_0x03cb('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x03cb('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x03cb('0x4'),'afterDestroy':_0x03cb('0x5')};function emitEvent(_0x4b504b){return function(_0x40ea70,_0x339920,_0x56dc67){VoicePrefixEvents['emit'](_0x4b504b+':'+_0x40ea70['id'],_0x40ea70);VoicePrefixEvents[_0x03cb('0x6')](_0x4b504b,_0x40ea70);_0x56dc67(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x03cb('0x7')](e,emitEvent(event));}}module[_0x03cb('0x8')]=VoicePrefixEvents;
\ No newline at end of file
+var _0xc876=['exports','events','../../mysqldb','VoicePrefix','setMaxListeners','save','update','remove','emit','hook'];(function(_0x567b55,_0x4823cd){var _0xc57c5b=function(_0x4cd840){while(--_0x4cd840){_0x567b55['push'](_0x567b55['shift']());}};_0xc57c5b(++_0x4823cd);}(_0xc876,0x187));var _0x6c87=function(_0x209d95,_0x87f23a){_0x209d95=_0x209d95-0x0;var _0x394d46=_0xc876[_0x209d95];return _0x394d46;};'use strict';var EventEmitter=require(_0x6c87('0x0'));var VoicePrefix=require(_0x6c87('0x1'))['db'][_0x6c87('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x6c87('0x3')](0x0);var events={'afterCreate':_0x6c87('0x4'),'afterUpdate':_0x6c87('0x5'),'afterDestroy':_0x6c87('0x6')};function emitEvent(_0x382954){return function(_0x4dcfba,_0x57c2ae,_0x3c5e7e){VoicePrefixEvents[_0x6c87('0x7')](_0x382954+':'+_0x4dcfba['id'],_0x4dcfba);VoicePrefixEvents[_0x6c87('0x7')](_0x382954,_0x4dcfba);_0x3c5e7e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x6c87('0x8')](e,emitEvent(event));}}module[_0x6c87('0x9')]=VoicePrefixEvents;
\ No newline at end of file
index 9ae10df..cc994e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x206c=['bluebird','rimraf','../../config/environment','define','VoicePrefix','voice_prefixes','lodash','util','../../config/logger','moment'];(function(_0x323469,_0x65c556){var _0x4cf8b1=function(_0x845075){while(--_0x845075){_0x323469['push'](_0x323469['shift']());}};_0x4cf8b1(++_0x65c556);}(_0x206c,0x146));var _0xc206=function(_0x5001c4,_0x3b525c){_0x5001c4=_0x5001c4-0x0;var _0x3c558a=_0x206c[_0x5001c4];return _0x3c558a;};'use strict';var _=require(_0xc206('0x0'));var util=require(_0xc206('0x1'));var logger=require(_0xc206('0x2'))('api');var moment=require(_0xc206('0x3'));var BPromise=require(_0xc206('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc206('0x5'));var config=require(_0xc206('0x6'));var attributes=require('./voicePrefix.attributes');module['exports']=function(_0x45627b,_0x2a22c7){return _0x45627b[_0xc206('0x7')](_0xc206('0x8'),attributes,{'tableName':_0xc206('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x316d=['path','rimraf','./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes','lodash','api','moment','bluebird','request-promise'];(function(_0x49192,_0x2fc6fb){var _0x57d8e8=function(_0xc4ed8d){while(--_0xc4ed8d){_0x49192['push'](_0x49192['shift']());}};_0x57d8e8(++_0x2fc6fb);}(_0x316d,0xf7));var _0xd316=function(_0x20b55b,_0x387ba6){_0x20b55b=_0x20b55b-0x0;var _0x106f72=_0x316d[_0x20b55b];return _0x106f72;};'use strict';var _=require(_0xd316('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd316('0x1'));var moment=require(_0xd316('0x2'));var BPromise=require(_0xd316('0x3'));var rp=require(_0xd316('0x4'));var fs=require('fs');var path=require(_0xd316('0x5'));var rimraf=require(_0xd316('0x6'));var config=require('../../config/environment');var attributes=require(_0xd316('0x7'));module[_0xd316('0x8')]=function(_0x357371,_0x448599){return _0x357371[_0xd316('0x9')](_0xd316('0xa'),attributes,{'tableName':_0xd316('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dbc1767..33df184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9af6=['then','info','VoicePrefix,\x20%s,\x20%s','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','request'];(function(_0x1e6f48,_0x499c17){var _0xe3b642=function(_0x182d85){while(--_0x182d85){_0x1e6f48['push'](_0x1e6f48['shift']());}};_0xe3b642(++_0x499c17);}(_0x9af6,0x1d7));var _0x69af=function(_0x2e913b,_0x4b7071){_0x2e913b=_0x2e913b-0x0;var _0x173899=_0x9af6[_0x2e913b];return _0x173899;};'use strict';var _=require(_0x69af('0x0'));var util=require(_0x69af('0x1'));var moment=require(_0x69af('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x69af('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x69af('0x4'))(_0x69af('0x5'));var config=require(_0x69af('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x69af('0x7')]['http']({'port':0x232a});config[_0x69af('0x8')]=_[_0x69af('0x9')](config[_0x69af('0x8')],{'host':_0x69af('0xa'),'port':0x18eb});var socket=require(_0x69af('0xb'))(new Redis(config[_0x69af('0x8')]));require(_0x69af('0xc'))[_0x69af('0xd')](socket);function respondWithRpcPromise(_0x59bc56,_0x5e42ea,_0x1dd1c2){return new BPromise(function(_0x19f2f7,_0x742a9c){return client[_0x69af('0xe')](_0x59bc56,_0x1dd1c2)[_0x69af('0xf')](function(_0x351143){logger[_0x69af('0x10')](_0x69af('0x11'),_0x5e42ea,'request\x20sent');logger[_0x69af('0x12')](_0x69af('0x13'),_0x5e42ea,_0x69af('0x14'),JSON[_0x69af('0x15')](_0x351143));if(_0x351143['error']){if(_0x351143[_0x69af('0x16')][_0x69af('0x17')]===0x1f4){logger[_0x69af('0x16')](_0x69af('0x11'),_0x5e42ea,_0x351143[_0x69af('0x16')][_0x69af('0x18')]);return _0x742a9c(_0x351143[_0x69af('0x16')][_0x69af('0x18')]);}logger['error'](_0x69af('0x11'),_0x5e42ea,_0x351143[_0x69af('0x16')][_0x69af('0x18')]);return _0x19f2f7(_0x351143[_0x69af('0x16')][_0x69af('0x18')]);}else{logger[_0x69af('0x10')]('VoicePrefix,\x20%s,\x20%s',_0x5e42ea,_0x69af('0x14'));_0x19f2f7(_0x351143[_0x69af('0x19')][_0x69af('0x18')]);}})[_0x69af('0x1a')](function(_0x244594){logger[_0x69af('0x16')](_0x69af('0x11'),_0x5e42ea,_0x244594);_0x742a9c(_0x244594);});});}
\ No newline at end of file
+var _0xeaab=['catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','VoicePrefix,\x20%s,\x20%s','request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x1147ab,_0x10e72b){var _0x55cb5a=function(_0x364bd6){while(--_0x364bd6){_0x1147ab['push'](_0x1147ab['shift']());}};_0x55cb5a(++_0x10e72b);}(_0xeaab,0xd9));var _0xbeaa=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xeaab[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0xbeaa('0x0'));var util=require('util');var moment=require(_0xbeaa('0x1'));var BPromise=require(_0xbeaa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbeaa('0x3'))['db'];var utils=require(_0xbeaa('0x4'));var logger=require(_0xbeaa('0x5'))(_0xbeaa('0x6'));var config=require(_0xbeaa('0x7'));var jayson=require(_0xbeaa('0x8'));var client=jayson[_0xbeaa('0x9')][_0xbeaa('0xa')]({'port':0x232a});config[_0xbeaa('0xb')]=_[_0xbeaa('0xc')](config[_0xbeaa('0xb')],{'host':_0xbeaa('0xd'),'port':0x18eb});var socket=require(_0xbeaa('0xe'))(new Redis(config[_0xbeaa('0xb')]));require('./voicePrefix.socket')[_0xbeaa('0xf')](socket);function respondWithRpcPromise(_0xcefe5e,_0xdc012e,_0x3ca743){return new BPromise(function(_0x1762a1,_0x1305fc){return client[_0xbeaa('0x10')](_0xcefe5e,_0x3ca743)['then'](function(_0x18fd02){logger['info'](_0xbeaa('0x11'),_0xdc012e,_0xbeaa('0x12'));logger['debug'](_0xbeaa('0x13'),_0xdc012e,'request\x20sent',JSON[_0xbeaa('0x14')](_0x18fd02));if(_0x18fd02[_0xbeaa('0x15')]){if(_0x18fd02['error'][_0xbeaa('0x16')]===0x1f4){logger[_0xbeaa('0x15')](_0xbeaa('0x11'),_0xdc012e,_0x18fd02[_0xbeaa('0x15')][_0xbeaa('0x17')]);return _0x1305fc(_0x18fd02[_0xbeaa('0x15')][_0xbeaa('0x17')]);}logger[_0xbeaa('0x15')](_0xbeaa('0x11'),_0xdc012e,_0x18fd02[_0xbeaa('0x15')][_0xbeaa('0x17')]);return _0x1762a1(_0x18fd02[_0xbeaa('0x15')][_0xbeaa('0x17')]);}else{logger[_0xbeaa('0x18')](_0xbeaa('0x11'),_0xdc012e,_0xbeaa('0x12'));_0x1762a1(_0x18fd02[_0xbeaa('0x19')][_0xbeaa('0x17')]);}})[_0xbeaa('0x1a')](function(_0xa98958){logger[_0xbeaa('0x15')]('VoicePrefix,\x20%s,\x20%s',_0xdc012e,_0xa98958);_0x1305fc(_0xa98958);});});}
\ No newline at end of file
index 83fe00d..34cecd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1948=['voicePrefix:','./voicePrefix.events','save','remove','update','emit','removeListener','register','length'];(function(_0x34f701,_0x37e407){var _0x3e2429=function(_0x20c0c3){while(--_0x20c0c3){_0x34f701['push'](_0x34f701['shift']());}};_0x3e2429(++_0x37e407);}(_0x1948,0x145));var _0x8194=function(_0x32c8bb,_0x200e4c){_0x32c8bb=_0x32c8bb-0x0;var _0x22f3ce=_0x1948[_0x32c8bb];return _0x22f3ce;};'use strict';var VoicePrefixEvents=require(_0x8194('0x0'));var events=[_0x8194('0x1'),_0x8194('0x2'),_0x8194('0x3')];function createListener(_0x196370,_0x4d5815){return function(_0x14a887){_0x4d5815[_0x8194('0x4')](_0x196370,_0x14a887);};}function removeListener(_0x152b72,_0x332d2f){return function(){VoicePrefixEvents[_0x8194('0x5')](_0x152b72,_0x332d2f);};}exports[_0x8194('0x6')]=function(_0x2a3372){for(var _0x23f556=0x0,_0x521ed0=events[_0x8194('0x7')];_0x23f556<_0x521ed0;_0x23f556++){var _0x104856=events[_0x23f556];var _0x4f32ce=createListener(_0x8194('0x8')+_0x104856,_0x2a3372);VoicePrefixEvents['on'](_0x104856,_0x4f32ce);}};
\ No newline at end of file
+var _0x1cf3=['emit','removeListener','register','length','voicePrefix:','./voicePrefix.events','save','remove','update'];(function(_0x2abfd3,_0x3182c6){var _0x3d8d34=function(_0x11db26){while(--_0x11db26){_0x2abfd3['push'](_0x2abfd3['shift']());}};_0x3d8d34(++_0x3182c6);}(_0x1cf3,0x1be));var _0x31cf=function(_0x3417ab,_0x1ec5d6){_0x3417ab=_0x3417ab-0x0;var _0x39571a=_0x1cf3[_0x3417ab];return _0x39571a;};'use strict';var VoicePrefixEvents=require(_0x31cf('0x0'));var events=[_0x31cf('0x1'),_0x31cf('0x2'),_0x31cf('0x3')];function createListener(_0x54dff7,_0x20aa57){return function(_0x5a2ae7){_0x20aa57[_0x31cf('0x4')](_0x54dff7,_0x5a2ae7);};}function removeListener(_0x442009,_0x44d64d){return function(){VoicePrefixEvents[_0x31cf('0x5')](_0x442009,_0x44d64d);};}exports[_0x31cf('0x6')]=function(_0x44dd04){for(var _0x2b7cd4=0x0,_0x1830b4=events[_0x31cf('0x7')];_0x2b7cd4<_0x1830b4;_0x2b7cd4++){var _0x6be80=events[_0x2b7cd4];var _0x3f7b2e=createListener(_0x31cf('0x8')+_0x6be80,_0x44dd04);VoicePrefixEvents['on'](_0x6be80,_0x3f7b2e);}};
\ No newline at end of file
index 89dc18f..67794ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x8bb4c1,_0x2d6e53){var _0x67a6e1=function(_0x1155e5){while(--_0x1155e5){_0x8bb4c1['push'](_0x8bb4c1['shift']());}};_0x67a6e1(++_0x2d6e53);}(_0xb10b,0x12a));var _0xbb10=function(_0x35af23,_0x9190f6){_0x35af23=_0x35af23-0x0;var _0x340506=_0xb10b[_0x35af23];return _0x340506;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x4e673e,_0x3413b8){var _0x837f41=function(_0x1f06b9){while(--_0x1f06b9){_0x4e673e['push'](_0x4e673e['shift']());}};_0x837f41(++_0x3413b8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'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 934726c..2c8414a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f14=['Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','name','inbound','default','ENUM','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','strategy','type','dialMethod','getDataValue','outbound','preview','booked','roundrobin','includes','setDataValue','INTEGER','yes','all','once','periodic_announce','split','joinempty','leavewhenempty','acw','BOOLEAN','progressive','predictive','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'];(function(_0x37cbc3,_0x5a490d){var _0x171986=function(_0x281ce8){while(--_0x281ce8){_0x37cbc3['push'](_0x37cbc3['shift']());}};_0x171986(++_0x5a490d);}(_0x3f14,0x165));var _0x43f1=function(_0x284a24,_0xebce8f){_0x284a24=_0x284a24-0x0;var _0x2dfdad=_0x3f14[_0x284a24];return _0x2dfdad;};'use strict';var Sequelize=require(_0x43f1('0x0'));module['exports']={'name':{'type':Sequelize[_0x43f1('0x1')],'allowNull':![],'unique':_0x43f1('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x43f1('0x3'),'outbound'),'allowNull':![],'defaultValue':_0x43f1('0x3')},'musiconhold':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':_0x43f1('0x4')},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize[_0x43f1('0x5')]('rr',_0x43f1('0x6'),_0x43f1('0x7'),_0x43f1('0x8'),_0x43f1('0x9'),_0x43f1('0xa'),_0x43f1('0xb'),_0x43f1('0xc'),'rrordered'),'allowNull':![],'defaultValue':_0x43f1('0x6'),'set':function(_0x4cc793){this['setDataValue'](_0x43f1('0xd'),_0x4cc793?_0x4cc793:_0x43f1('0xa'));},'get':function(){var _0x4f15eb=this['getDataValue'](_0x43f1('0xe'));var _0x12a7a2=this['getDataValue'](_0x43f1('0xf'));var _0x4cca90=this[_0x43f1('0x10')](_0x43f1('0xd'));if(_0x4f15eb===_0x43f1('0x11')){if(_0x12a7a2===_0x43f1('0x12')){return null;}if(_0x12a7a2===_0x43f1('0x13')&&!['rrmemory',_0x43f1('0x14')][_0x43f1('0x15')](_0x4cca90)){this[_0x43f1('0x16')](_0x43f1('0xd'),'rrmemory');}}return _0x4cca90;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x43f1('0x17')](0xb)},'timeout':{'type':Sequelize[_0x43f1('0x17')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x43f1('0x17')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0x43f1('0x17')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x43f1('0x17')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x43f1('0x5')](_0x43f1('0x18'),'no'),'defaultValue':_0x43f1('0x18')},'autopause':{'type':Sequelize['ENUM'](_0x43f1('0x18'),'no',_0x43f1('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x43f1('0x17')](0xb)},'autopausebusy':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x43f1('0x5')](_0x43f1('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x43f1('0x17')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x43f1('0x5')](_0x43f1('0x18'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x43f1('0x5')](_0x43f1('0x18'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0x43f1('0x18'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x43f1('0x5')](_0x43f1('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x43f1('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x43f1('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x43f1('0x17')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x43f1('0x17')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x43f1('0x5')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x43f1('0x18'),'no'),'defaultValue':_0x43f1('0x18')},'announce_holdtime':{'type':Sequelize['ENUM'](_0x43f1('0x18'),'no',_0x43f1('0x1a')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x43f1('0x5')](_0x43f1('0x18'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x43f1('0x5')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x43f1('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x43f1('0x1')]},'queue_quantity1':{'type':Sequelize[_0x43f1('0x1')]},'queue_quantity2':{'type':Sequelize[_0x43f1('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0x43f1('0x1')]},'queue_less_than':{'type':Sequelize[_0x43f1('0x1')]},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x2caa74){this[_0x43f1('0x16')](_0x43f1('0x1b'),_0x2caa74?_0x2caa74['join'](','):[]);},'get':function(){return this[_0x43f1('0x10')](_0x43f1('0x1b'))?this['getDataValue']('periodic_announce')[_0x43f1('0x1c')](','):[];}},'joinempty':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':_0x43f1('0x18'),'set':function(_0x28c3e8){this[_0x43f1('0x16')]('joinempty',_0x28c3e8?_0x28c3e8['join'](','):undefined);},'get':function(){return this[_0x43f1('0x10')](_0x43f1('0x1d'))?this['getDataValue'](_0x43f1('0x1d'))[_0x43f1('0x1c')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':'no','set':function(_0x11eb37){this['setDataValue'](_0x43f1('0x1e'),_0x11eb37?_0x11eb37['join'](','):undefined);},'get':function(){return this[_0x43f1('0x10')](_0x43f1('0x1e'))?this['getDataValue'](_0x43f1('0x1e'))[_0x43f1('0x1c')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x43f1('0x18'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0x43f1('0x18'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x43f1('0x17')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0x43f1('0x18'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x43f1('0x1')]},'description':{'type':Sequelize[_0x43f1('0x1')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x4f5e6f){this[_0x43f1('0x16')](_0x43f1('0x1f'),_0x4f5e6f);if(_0x4f5e6f){if(this[_0x43f1('0x10')]('wrapuptime')<0x2){this[_0x43f1('0x16')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0x43f1('0x17')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x43f1('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x43f1('0x5')](_0x43f1('0x12'),_0x43f1('0x21'),'power',_0x43f1('0x22'),_0x43f1('0x13')),'defaultValue':_0x43f1('0x21'),'comment':_0x43f1('0x23')},'dialLimitChannel':{'type':Sequelize[_0x43f1('0x17')](0x4)[_0x43f1('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x43f1('0x25')},'dialLimitQueue':{'type':Sequelize[_0x43f1('0x17')](0x4)[_0x43f1('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x43f1('0x26')},'dialPowerLevel':{'type':Sequelize[_0x43f1('0x27')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x43f1('0x28')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x43f1('0x29'),'dropRate'),'defaultValue':_0x43f1('0x2a'),'comment':_0x43f1('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x43f1('0x27')](0x2)[_0x43f1('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x43f1('0x2c')},'dialPredictiveInterval':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x43f1('0x2d')},'dialOriginateCallerIdName':{'type':Sequelize[_0x43f1('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x43f1('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':_0x43f1('0x2e'),'comment':_0x43f1('0x2f')},'dialQueueTimeout':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x43f1('0x30')},'dialQueueProject':{'type':Sequelize[_0x43f1('0x1')],'comment':_0x43f1('0x31')},'dialCongestionMaxRetry':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x43f1('0x32')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x43f1('0x17')](0x5)[_0x43f1('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x43f1('0x33')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'defaultValue':0x3,'comment':_0x43f1('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x43f1('0x17')](0x5)[_0x43f1('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x43f1('0x35')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x43f1('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x43f1('0x36')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':_0x43f1('0x37')},'dialPrefix':{'type':Sequelize[_0x43f1('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x43f1('0x5')](_0x43f1('0x38'),_0x43f1('0x39'),_0x43f1('0x3a')),'defaultValue':_0x43f1('0x38')},'dialAMDActive':{'type':Sequelize[_0x43f1('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x43f1('0x17')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x43f1('0x17')](0x9)[_0x43f1('0x24')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x43f1('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x43f1('0x17')](0x9)[_0x43f1('0x24')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x43f1('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x43f1('0x17')](0x9)[_0x43f1('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x43f1('0x3d')},'dialAMDMinWordLength':{'type':Sequelize[_0x43f1('0x17')](0x9)[_0x43f1('0x24')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x43f1('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x43f1('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x43f1('0x17')](0x9)[_0x43f1('0x24')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x43f1('0x3f')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x43f1('0x17')](0x9)[_0x43f1('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x43f1('0x40')},'dialRecallMeTimeout':{'type':Sequelize[_0x43f1('0x17')](0x5)[_0x43f1('0x24')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0x43f1('0x20')],'defaultValue':0x0,'comment':_0x43f1('0x41')},'dialOrderByScheduledAt':{'type':Sequelize[_0x43f1('0x5')](_0x43f1('0x42'),_0x43f1('0x43')),'defaultValue':_0x43f1('0x42')},'dialQueueProject2':{'type':Sequelize[_0x43f1('0x1')],'comment':_0x43f1('0x31')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x43f1('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x43f1('0x44')},'dialCutDigit':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x43f1('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x43f1('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x43f1('0x46')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x43f1('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x43f1('0x47')},'dialDropMaxRetry':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x43f1('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x43f1('0x48')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x43f1('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x43f1('0x49')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x43f1('0x4a')},'dialMachineMaxRetry':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x43f1('0x17')](0x5)[_0x43f1('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x43f1('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x43f1('0x4b')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x43f1('0x17')](0x5)[_0x43f1('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x43f1('0x4c')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x43f1('0x17')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x43f1('0x20')],'defaultValue':![],'comment':_0x43f1('0x4d'),'set':function(_0x5b9e69){if(!_0x5b9e69)this[_0x43f1('0x16')](_0x43f1('0x4e'),null);this[_0x43f1('0x16')](_0x43f1('0x4f'),_0x5b9e69);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x43f1('0x17')](0x3)[_0x43f1('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x43f1('0x20')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize['INTEGER'](0x3)[_0x43f1('0x24')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x43f1('0x20')],'defaultValue':![]}};
\ No newline at end of file
+var _0x44ef=['INTEGER','yes','all','once','periodic_announce','join','joinempty','split','leavewhenempty','BOOLEAN','wrapuptime','progressive','power','predictive','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','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','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','exports','STRING','name','ENUM','inbound','default','ringall','leastrecent','rrmemory','linear','wrandom','setDataValue','strategy','getDataValue','dialMethod','outbound','preview','booked','roundrobin','includes'];(function(_0x513eca,_0x593007){var _0x2c4e0b=function(_0x8886da){while(--_0x8886da){_0x513eca['push'](_0x513eca['shift']());}};_0x2c4e0b(++_0x593007);}(_0x44ef,0xe4));var _0xf44e=function(_0x31f138,_0x13d372){_0x31f138=_0x31f138-0x0;var _0xd623c4=_0x44ef[_0x31f138];return _0xd623c4;};'use strict';var Sequelize=require(_0xf44e('0x0'));module[_0xf44e('0x1')]={'name':{'type':Sequelize[_0xf44e('0x2')],'allowNull':![],'unique':_0xf44e('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x5'),'outbound'),'allowNull':![],'defaultValue':_0xf44e('0x5')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0xf44e('0x6')},'announce':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0xf44e('0x4')]('rr',_0xf44e('0x7'),_0xf44e('0x8'),'fewestcalls','random',_0xf44e('0x9'),_0xf44e('0xa'),_0xf44e('0xb'),'rrordered'),'allowNull':![],'defaultValue':_0xf44e('0x7'),'set':function(_0x2a759f){this[_0xf44e('0xc')](_0xf44e('0xd'),_0x2a759f?_0x2a759f:_0xf44e('0x9'));},'get':function(){var _0x12fadc=this[_0xf44e('0xe')]('type');var _0x2981f8=this['getDataValue'](_0xf44e('0xf'));var _0x2bdb42=this[_0xf44e('0xe')](_0xf44e('0xd'));if(_0x12fadc===_0xf44e('0x10')){if(_0x2981f8===_0xf44e('0x11')){return null;}if(_0x2981f8===_0xf44e('0x12')&&!['rrmemory',_0xf44e('0x13')][_0xf44e('0x14')](_0x2bdb42)){this['setDataValue']('strategy','rrmemory');}}return _0x2bdb42;}},'servicelevel':{'type':Sequelize[_0xf44e('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xf44e('0x15')](0xb)},'timeout':{'type':Sequelize[_0xf44e('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xf44e('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xf44e('0x2')]},'weight':{'type':Sequelize[_0xf44e('0x15')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':_0xf44e('0x16')},'autopause':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no',_0xf44e('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xf44e('0x15')](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0xf44e('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xf44e('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xf44e('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xf44e('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xf44e('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':_0xf44e('0x16')},'announce_holdtime':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no',_0xf44e('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM'](_0xf44e('0x16'),'no')},'announce_position_limit':{'type':Sequelize[_0xf44e('0x15')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xf44e('0x2')]},'queue_youarenext':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xf44e('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xf44e('0x2')]},'queue_quantity1':{'type':Sequelize[_0xf44e('0x2')]},'queue_quantity2':{'type':Sequelize[_0xf44e('0x2')]},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x1111df){this[_0xf44e('0xc')](_0xf44e('0x19'),_0x1111df?_0x1111df[_0xf44e('0x1a')](','):[]);},'get':function(){return this[_0xf44e('0xe')]('periodic_announce')?this[_0xf44e('0xe')](_0xf44e('0x19'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':'yes','set':function(_0x4e9577){this['setDataValue']('joinempty',_0x4e9577?_0x4e9577[_0xf44e('0x1a')](','):undefined);},'get':function(){return this['getDataValue'](_0xf44e('0x1b'))?this[_0xf44e('0xe')](_0xf44e('0x1b'))[_0xf44e('0x1c')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':'no','set':function(_0x3726b9){this[_0xf44e('0xc')]('leavewhenempty',_0x3726b9?_0x3726b9['join'](','):undefined);},'get':function(){return this[_0xf44e('0xe')](_0xf44e('0x1d'))?this[_0xf44e('0xe')](_0xf44e('0x1d'))[_0xf44e('0x1c')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xf44e('0x2')]},'description':{'type':Sequelize[_0xf44e('0x2')]},'acw':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':0x0,'set':function(_0x5a6bc2){this[_0xf44e('0xc')]('acw',_0x5a6bc2);if(_0x5a6bc2){if(this[_0xf44e('0xe')](_0xf44e('0x1f'))<0x2){this['setDataValue'](_0xf44e('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize['ENUM'](_0xf44e('0x11'),_0xf44e('0x20'),_0xf44e('0x21'),_0xf44e('0x22'),_0xf44e('0x12')),'defaultValue':'progressive','comment':_0xf44e('0x23')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0xf44e('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0xf44e('0x15')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xf44e('0x25')},'dialPowerLevel':{'type':Sequelize[_0xf44e('0x26')](0x2)[_0xf44e('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xf44e('0x27')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0xf44e('0x28'),_0xf44e('0x29')),'defaultValue':_0xf44e('0x29'),'comment':_0xf44e('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xf44e('0x26')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xf44e('0x2b')},'dialPredictiveInterval':{'type':Sequelize[_0xf44e('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xf44e('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize[_0xf44e('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xf44e('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x2d')},'dialQueueOptions':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':_0xf44e('0x2e'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0xf44e('0x2f')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x30')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x31')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x32')},'dialBusyRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x33')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'comment':_0xf44e('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x35')},'dialGlobalMaxRetry':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xf44e('0x36')},'dialTimezone':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':_0xf44e('0x37')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xf44e('0x38'),_0xf44e('0x39'),_0xf44e('0x3a')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xf44e('0x3b')},'dialAMDInitialSilence':{'type':Sequelize[_0xf44e('0x15')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xf44e('0x3c')},'dialAMDGreeting':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0xf44e('0x24')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xf44e('0x3d')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf44e('0x3e')},'dialAMDMinWordLength':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xf44e('0x3f')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xf44e('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xf44e('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf44e('0x42')},'dialRecallMeTimeout':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xf44e('0x43')},'dialRecallInQueue':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xf44e('0x44'),'ASC'),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0xf44e('0x2f')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf44e('0x45')},'dialCutDigit':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf44e('0x46')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x47')},'dialDropMaxRetry':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x48')},'dialDropRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x49')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x4a')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x4b')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x4c')},'dialMachineRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x4d')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x4e')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x4f')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf44e('0x15')],'allowNull':!![],'comment':_0xf44e('0x50')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xf44e('0x51'),'set':function(_0xb26d44){if(!_0xb26d44)this[_0xf44e('0xc')](_0xf44e('0x52'),null);this[_0xf44e('0xc')]('mandatoryDisposition',_0xb26d44);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':![]}};
\ No newline at end of file
index 1c6e356..87f2979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['redis','localhost','./voiceQueue.socket','register','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','update','then','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','value','type','find','UserProfileResource','destroy','stack','name','index','VoiceQueue','fieldName','getOptions','where','include','findAll','rows','catch','show','params','model','keys','query','intersection','attributes','length','includeAll','merge','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','rawAttributes','fields','omit','createdAt','updatedAt','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getHoppers','CmHopper','filters','nolimit','order','sort','pick','VoiceQueueId','getHopperHistories','findOne','CmHopperHistory','hasOwnProperty','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','addTeams','teams','Team','online','voicePause','interface','flatMap','forEach','penalty','Agents','sequelize','transaction','upsert','findOrCreate','UserVoiceQueueRt','isNil','format','emit','ids','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','removeTeams','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','spread','userVoiceQueue:save','User','isArray','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','phone','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','cm_hopper_additional_phones','CmHopperId','OrderBy','ci.item','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','NOW()','removeBlackLists','moment','bluebird','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb'];(function(_0x36f8a6,_0x24bff4){var _0x40e2bd=function(_0x534bbe){while(--_0x534bbe){_0x36f8a6['push'](_0x36f8a6['shift']());}};_0x40e2bd(++_0x24bff4);}(_0x5fc3,0xa8));var _0x35fc=function(_0x256e32,_0x4013bc){_0x256e32=_0x256e32-0x0;var _0x464070=_0x5fc3[_0x256e32];return _0x464070;};'use strict';var moment=require(_0x35fc('0x0'));var BPromise=require(_0x35fc('0x1'));var util=require('util');var _=require(_0x35fc('0x2'));var squel=require(_0x35fc('0x3'));var Redis=require(_0x35fc('0x4'));var qs=require(_0x35fc('0x5'));var logger=require(_0x35fc('0x6'))('api');var config=require(_0x35fc('0x7'));var db=require(_0x35fc('0x8'))['db'];config[_0x35fc('0x9')]=_['defaults'](config['redis'],{'host':_0x35fc('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x35fc('0x9')]));require(_0x35fc('0xb'))[_0x35fc('0xc')](socket);function respondWithStatusCode(_0x1e5f90,_0x34ff19){_0x34ff19=_0x34ff19||0xcc;return function(_0xf9d3a6){if(_0xf9d3a6){return _0x1e5f90[_0x35fc('0xd')](_0x34ff19);}return _0x1e5f90['status'](_0x34ff19)[_0x35fc('0xe')]();};}function respondWithResult(_0x2a1084,_0x4fdca1){_0x4fdca1=_0x4fdca1||0xc8;return function(_0x471549){if(_0x471549){return _0x2a1084[_0x35fc('0xf')](_0x4fdca1)['json'](_0x471549);}};}function respondWithFilteredResult(_0xda83fb,_0x1a9f2b){return function(_0x5469f5){if(_0x5469f5){var _0x4cbe74=typeof _0x1a9f2b[_0x35fc('0x10')]==='undefined'&&typeof _0x1a9f2b[_0x35fc('0x11')]===_0x35fc('0x12');var _0x2a6ad2=_0x5469f5[_0x35fc('0x13')];var _0x38d9f2=_0x4cbe74?0x0:_0x1a9f2b['offset'];var _0x59507a=_0x4cbe74?_0x5469f5['count']:_0x1a9f2b['offset']+_0x1a9f2b[_0x35fc('0x11')];var _0x229d56;if(_0x59507a>=_0x2a6ad2){_0x59507a=_0x2a6ad2;_0x229d56=0xc8;}else{_0x229d56=0xce;}_0xda83fb[_0x35fc('0xf')](_0x229d56);return _0xda83fb[_0x35fc('0x14')](_0x35fc('0x15'),_0x38d9f2+'-'+_0x59507a+'/'+_0x2a6ad2)[_0x35fc('0x16')](_0x5469f5);}return null;};}function saveUpdates(_0x480851){return function(_0x26ba54){if(_0x26ba54){return _0x26ba54[_0x35fc('0x17')](_0x480851)['then'](function(_0x41e165){return _0x41e165;});}return null;};}function removeEntity(_0x363e47){return function(_0x2e513b){if(_0x2e513b){return _0x2e513b['destroy']()[_0x35fc('0x18')](function(){var _0x3c58ea=_0x2e513b[_0x35fc('0x19')]({'plain':!![]});var _0x488234=[{'name':_0x35fc('0x1a'),'value':_0x35fc('0x1b'),'ignore':![]},{'name':_0x35fc('0x1c'),'value':_0x35fc('0x1d'),'ignore':![]}];var _0x20ffde=_(_0x488234)[_0x35fc('0x1e')](_0x35fc('0x1f'))[_0x35fc('0x20')](_0x35fc('0x21'))[_0x35fc('0x21')]();if(_['includes'](_0x20ffde,_0x3c58ea[_0x35fc('0x22')])){return;}var _0xd5399f=_[_0x35fc('0x23')](_0x488234,[_0x35fc('0x21'),_0x3c58ea[_0x35fc('0x22')]])['name'];return db[_0x35fc('0x24')][_0x35fc('0x25')]({'where':{'type':_0xd5399f,'resourceId':_0x3c58ea['id']}})['then'](function(){return _0x2e513b;});})[_0x35fc('0x18')](function(){_0x363e47[_0x35fc('0xf')](0xcc)[_0x35fc('0xe')]();});}};}function handleEntityNotFound(_0x51cfec){return function(_0x4086e9){if(!_0x4086e9){_0x51cfec['sendStatus'](0x194);}return _0x4086e9;};}function handleError(_0x1bf180,_0xdfab9f){_0xdfab9f=_0xdfab9f||0x1f4;return function(_0x5cb986){logger['error'](_0x5cb986[_0x35fc('0x26')]);if(_0x5cb986['name']){delete _0x5cb986[_0x35fc('0x27')];}_0x1bf180[_0x35fc('0xf')](_0xdfab9f)['send'](_0x5cb986);};}exports[_0x35fc('0x28')]=function(_0x645eac,_0x383837){var _0x9f3c8a={};var _0x3735da={'count':0x0,'rows':[]};var _0x134dfa=_[_0x35fc('0x20')](db[_0x35fc('0x29')]['rawAttributes'],function(_0x1cd1ae){return{'name':_0x1cd1ae[_0x35fc('0x2a')],'type':_0x1cd1ae[_0x35fc('0x22')]['key']};});_0x9f3c8a=qs[_0x35fc('0x2b')](_0x134dfa,_0x645eac);var _0x16f067={'where':_0x9f3c8a[_0x35fc('0x2c')]};return db[_0x35fc('0x29')][_0x35fc('0x13')](_0x16f067)[_0x35fc('0x18')](function(_0x222ddb){_0x3735da[_0x35fc('0x13')]=_0x222ddb;_0x9f3c8a[_0x35fc('0x2d')]=qs[_0x35fc('0x2d')](_0x645eac['query']);return db['VoiceQueue'][_0x35fc('0x2e')](_0x9f3c8a);})['then'](function(_0x37b394){_0x3735da[_0x35fc('0x2f')]=_0x37b394;return _0x3735da;})[_0x35fc('0x18')](respondWithFilteredResult(_0x383837,_0x9f3c8a))[_0x35fc('0x30')](handleError(_0x383837,null));};exports[_0x35fc('0x31')]=function(_0x12e78f,_0x4e43b4){var _0x3fe193={'raw':![],'where':{'id':_0x12e78f[_0x35fc('0x32')]['id']}},_0x330a14={};_0x330a14[_0x35fc('0x33')]=_[_0x35fc('0x34')](db[_0x35fc('0x29')]['rawAttributes']);_0x330a14[_0x35fc('0x35')]=_[_0x35fc('0x34')](_0x12e78f[_0x35fc('0x35')]);_0x330a14['filters']=_[_0x35fc('0x36')](_0x330a14['model'],_0x330a14[_0x35fc('0x35')]);_0x3fe193[_0x35fc('0x37')]=_[_0x35fc('0x36')](_0x330a14[_0x35fc('0x33')],qs['fields'](_0x12e78f['query']['fields']));_0x3fe193[_0x35fc('0x37')]=_0x3fe193['attributes'][_0x35fc('0x38')]?_0x3fe193['attributes']:_0x330a14[_0x35fc('0x33')];if(_0x12e78f[_0x35fc('0x35')][_0x35fc('0x39')]){_0x3fe193[_0x35fc('0x2d')]=[{'all':!![]}];}_0x3fe193=_[_0x35fc('0x3a')]({},_0x3fe193,_0x12e78f[_0x35fc('0x3b')]);return db[_0x35fc('0x29')]['find'](_0x3fe193)[_0x35fc('0x18')](handleEntityNotFound(_0x4e43b4,null))[_0x35fc('0x18')](respondWithResult(_0x4e43b4,null))['catch'](handleError(_0x4e43b4,null));};exports[_0x35fc('0x3c')]=function(_0x1ccc41,_0x1aac67){return db[_0x35fc('0x29')][_0x35fc('0x3c')](_0x1ccc41[_0x35fc('0x3d')],{})['then'](function(_0x3f6480){var _0x267858=_0x1ccc41[_0x35fc('0x3e')]['get']({'plain':!![]});if(!_0x267858)throw new Error(_0x35fc('0x3f'));if(_0x267858[_0x35fc('0x40')]==='user'){var _0x237548=_0x3f6480[_0x35fc('0x19')]({'plain':!![]});var _0x43b77c=[{'name':_0x35fc('0x1a'),'value':_0x35fc('0x1b')},{'name':_0x35fc('0x1c'),'value':_0x35fc('0x1d')}];var _0x3ec51f=_['find'](_0x43b77c,['value',_0x237548[_0x35fc('0x22')]])[_0x35fc('0x27')];return db['UserProfileSection']['find']({'where':{'name':_0x3ec51f,'userProfileId':_0x267858['userProfileId']},'raw':!![]})[_0x35fc('0x18')](function(_0x10f98b){if(_0x10f98b&&_0x10f98b['autoAssociation']===0x0){return db[_0x35fc('0x24')][_0x35fc('0x3c')]({'name':_0x237548[_0x35fc('0x27')],'resourceId':_0x237548['id'],'type':_0x10f98b[_0x35fc('0x27')],'sectionId':_0x10f98b['id']},{})['then'](function(){return _0x3f6480;});}else{return _0x3f6480;}})['catch'](function(_0x5bf2f4){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5bf2f4);throw _0x5bf2f4;});}return _0x3f6480;})[_0x35fc('0x18')](respondWithResult(_0x1aac67,0xc9))[_0x35fc('0x30')](handleError(_0x1aac67,null));};exports['clone']=function(_0x119925,_0x56cf1f){var _0x13d16c={'where':{'id':_0x119925[_0x35fc('0x32')]['id']}},_0x40797d={};_0x40797d[_0x35fc('0x33')]=_[_0x35fc('0x34')](db['VoiceQueue'][_0x35fc('0x41')]);_0x13d16c[_0x35fc('0x37')]=_['intersection'](_0x40797d[_0x35fc('0x33')],qs[_0x35fc('0x42')](_0x119925[_0x35fc('0x35')][_0x35fc('0x42')]));_0x13d16c['attributes']=_0x13d16c[_0x35fc('0x37')]['length']?_0x13d16c['attributes']:_0x40797d[_0x35fc('0x33')];if(_0x119925[_0x35fc('0x35')][_0x35fc('0x39')]){_0x13d16c[_0x35fc('0x2d')]=[{'all':!![]}];}_0x13d16c=_[_0x35fc('0x3a')]({},_0x13d16c,_0x119925[_0x35fc('0x3b')]);return db[_0x35fc('0x29')][_0x35fc('0x23')](_0x13d16c)['then'](handleEntityNotFound(_0x56cf1f,null))[_0x35fc('0x18')](function(_0x91d7c0){if(_0x91d7c0){var _0xeca02e=_0x91d7c0[_0x35fc('0x19')]({'plain':!![]});_0xeca02e=qs[_0x35fc('0x43')](_0xeca02e,['id',_0x35fc('0x44'),_0x35fc('0x45')]);_0x119925[_0x35fc('0x3d')]=_[_0x35fc('0x43')](_0x119925[_0x35fc('0x3d')],['id',_0x35fc('0x44'),_0x35fc('0x45')]);return db[_0x35fc('0x29')][_0x35fc('0x3c')](_['merge'](_0xeca02e,_0x119925['body']),{'include':_0x119925[_0x35fc('0x35')][_0x35fc('0x39')]?[{'all':!![]}]:undefined})[_0x35fc('0x18')](function(_0x2bf0b0){var _0x3ee296=_0x119925[_0x35fc('0x3e')]['get']({'plain':!![]});if(!_0x3ee296)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3ee296[_0x35fc('0x40')]===_0x35fc('0x3e')){var _0x395d63=_0x2bf0b0[_0x35fc('0x19')]({'plain':!![]});var _0x5b2595=[{'name':_0x35fc('0x1a'),'value':_0x35fc('0x1b')},{'name':'QueueCampaigns','value':_0x35fc('0x1d')}];var _0x2536d3=_['find'](_0x5b2595,[_0x35fc('0x21'),_0x395d63[_0x35fc('0x22')]])[_0x35fc('0x27')];return db[_0x35fc('0x46')]['find']({'where':{'name':_0x2536d3,'userProfileId':_0x3ee296['userProfileId']},'raw':!![]})['then'](function(_0x240338){if(_0x240338&&_0x240338[_0x35fc('0x47')]===0x0){return db['UserProfileResource'][_0x35fc('0x3c')]({'name':_0x395d63[_0x35fc('0x27')],'resourceId':_0x395d63['id'],'type':_0x240338[_0x35fc('0x27')],'sectionId':_0x240338['id']},{})[_0x35fc('0x18')](function(){return _0x2bf0b0;});}else{return _0x2bf0b0;}})[_0x35fc('0x30')](function(_0x538be0){logger[_0x35fc('0x48')](_0x35fc('0x49'),_0x538be0);throw _0x538be0;});}return _0x2bf0b0;});}})[_0x35fc('0x18')](respondWithResult(_0x56cf1f,0xc9))['catch'](handleError(_0x56cf1f,null));};exports[_0x35fc('0x17')]=function(_0x1dbf5a,_0x47fb1a){if(_0x1dbf5a[_0x35fc('0x3d')]['id']){delete _0x1dbf5a[_0x35fc('0x3d')]['id'];}return db[_0x35fc('0x29')][_0x35fc('0x23')]({'where':{'id':_0x1dbf5a[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x47fb1a,null))[_0x35fc('0x18')](saveUpdates(_0x1dbf5a[_0x35fc('0x3d')],null))['then'](respondWithResult(_0x47fb1a,null))[_0x35fc('0x30')](handleError(_0x47fb1a,null));};exports[_0x35fc('0x25')]=function(_0x303927,_0x4fabd4){return db[_0x35fc('0x29')]['find']({'where':{'id':_0x303927['params']['id']}})['then'](handleEntityNotFound(_0x4fabd4,null))[_0x35fc('0x18')](removeEntity(_0x4fabd4,null))[_0x35fc('0x30')](handleError(_0x4fabd4,null));};exports[_0x35fc('0x4a')]=function(_0x13901c,_0x3d06b8){var _0x4bbea0={'raw':![],'where':{}};var _0x579f5a={};var _0x5353ea={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x13901c[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x3d06b8,null))[_0x35fc('0x18')](function(_0x3ef680){if(_0x3ef680){_0x579f5a['model']=_[_0x35fc('0x34')](db[_0x35fc('0x4b')][_0x35fc('0x41')]);_0x579f5a[_0x35fc('0x35')]=_[_0x35fc('0x34')](_0x13901c[_0x35fc('0x35')]);_0x579f5a[_0x35fc('0x4c')]=_[_0x35fc('0x36')](_0x579f5a[_0x35fc('0x33')],_0x579f5a['query']);_0x4bbea0[_0x35fc('0x37')]=_['intersection'](_0x579f5a[_0x35fc('0x33')],qs[_0x35fc('0x42')](_0x13901c[_0x35fc('0x35')][_0x35fc('0x42')]));_0x4bbea0['attributes']=_0x4bbea0[_0x35fc('0x37')]['length']?_0x4bbea0['attributes']:_0x579f5a['model'];if(!_0x13901c[_0x35fc('0x35')]['hasOwnProperty'](_0x35fc('0x4d'))){_0x4bbea0['limit']=qs[_0x35fc('0x11')](_0x13901c['query'][_0x35fc('0x11')]);_0x4bbea0[_0x35fc('0x10')]=qs[_0x35fc('0x10')](_0x13901c[_0x35fc('0x35')]['offset']);}_0x4bbea0[_0x35fc('0x4e')]=qs[_0x35fc('0x4f')](_0x13901c[_0x35fc('0x35')]['sort']);_0x4bbea0[_0x35fc('0x2c')]=qs[_0x35fc('0x4c')](_[_0x35fc('0x50')](_0x13901c[_0x35fc('0x35')],_0x579f5a[_0x35fc('0x4c')]));_0x4bbea0[_0x35fc('0x2c')][_0x35fc('0x51')]=_0x3ef680['id'];if(_0x13901c[_0x35fc('0x35')]['filter']){_0x4bbea0[_0x35fc('0x2c')]=_[_0x35fc('0x3a')](_0x4bbea0[_0x35fc('0x2c')],{'$or':_['map'](_0x4bbea0[_0x35fc('0x37')],function(_0x1b76f0){var _0x586729={};_0x586729[_0x1b76f0]={'$like':'%'+_0x13901c['query'][_0x35fc('0x1e')]+'%'};return _0x586729;})});}_0x4bbea0=_['merge']({},_0x4bbea0,_0x13901c[_0x35fc('0x3b')]);return db[_0x35fc('0x4b')][_0x35fc('0x13')]({'where':_0x4bbea0[_0x35fc('0x2c')]})[_0x35fc('0x18')](function(_0x20ddc6){_0x5353ea[_0x35fc('0x13')]=_0x20ddc6;if(_0x13901c[_0x35fc('0x35')][_0x35fc('0x39')]){_0x4bbea0[_0x35fc('0x2d')]=[{'all':!![]}];}return db[_0x35fc('0x4b')][_0x35fc('0x2e')](_0x4bbea0);})[_0x35fc('0x18')](function(_0x9f034e){_0x5353ea[_0x35fc('0x2f')]=_0x9f034e;return _0x5353ea;});}})[_0x35fc('0x18')](respondWithFilteredResult(_0x3d06b8,_0x4bbea0))[_0x35fc('0x30')](handleError(_0x3d06b8,null));};exports[_0x35fc('0x52')]=function(_0x3b2160,_0x3f3f36){var _0x4ba1b0={'raw':!![],'where':{}};var _0x1797d0={};var _0x55cb69={'count':0x0,'rows':[]};return db[_0x35fc('0x29')][_0x35fc('0x53')]({'where':{'id':_0x3b2160[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x3f3f36,null))[_0x35fc('0x18')](function(_0x3f56f4){if(_0x3f56f4){_0x1797d0[_0x35fc('0x33')]=_[_0x35fc('0x34')](db[_0x35fc('0x54')][_0x35fc('0x41')]);_0x1797d0[_0x35fc('0x35')]=_['keys'](_0x3b2160[_0x35fc('0x35')]);_0x1797d0[_0x35fc('0x4c')]=_[_0x35fc('0x36')](_0x1797d0[_0x35fc('0x33')],_0x1797d0[_0x35fc('0x35')]);_0x4ba1b0[_0x35fc('0x37')]=_['intersection'](_0x1797d0[_0x35fc('0x33')],qs[_0x35fc('0x42')](_0x3b2160[_0x35fc('0x35')][_0x35fc('0x42')]));_0x4ba1b0[_0x35fc('0x37')]=_0x4ba1b0[_0x35fc('0x37')][_0x35fc('0x38')]?_0x4ba1b0[_0x35fc('0x37')]:_0x1797d0[_0x35fc('0x33')];if(!_0x3b2160['query'][_0x35fc('0x55')]('nolimit')){_0x4ba1b0[_0x35fc('0x11')]=qs[_0x35fc('0x11')](_0x3b2160['query'][_0x35fc('0x11')]);_0x4ba1b0[_0x35fc('0x10')]=qs[_0x35fc('0x10')](_0x3b2160[_0x35fc('0x35')][_0x35fc('0x10')]);}_0x4ba1b0[_0x35fc('0x4e')]=qs[_0x35fc('0x4f')](_0x3b2160[_0x35fc('0x35')][_0x35fc('0x4f')]);_0x4ba1b0['where']=qs['filters'](_['pick'](_0x3b2160['query'],_0x1797d0[_0x35fc('0x4c')]));_0x4ba1b0[_0x35fc('0x2c')][_0x35fc('0x51')]=_0x3f56f4['id'];if(_0x3b2160[_0x35fc('0x35')][_0x35fc('0x1e')]){_0x4ba1b0['where']=_[_0x35fc('0x3a')](_0x4ba1b0[_0x35fc('0x2c')],{'$or':_[_0x35fc('0x20')](_0x4ba1b0[_0x35fc('0x37')],function(_0x584a58){var _0x15e936={};_0x15e936[_0x584a58]={'$like':'%'+_0x3b2160[_0x35fc('0x35')][_0x35fc('0x1e')]+'%'};return _0x15e936;})});}_0x4ba1b0=_['merge']({},_0x4ba1b0,_0x3b2160[_0x35fc('0x3b')]);return db[_0x35fc('0x54')][_0x35fc('0x13')]({'where':_0x4ba1b0[_0x35fc('0x2c')]})[_0x35fc('0x18')](function(_0x31d276){_0x55cb69[_0x35fc('0x13')]=_0x31d276;if(_0x3b2160[_0x35fc('0x35')]['includeAll']){_0x4ba1b0[_0x35fc('0x2d')]=[{'all':!![]}];}return db[_0x35fc('0x54')][_0x35fc('0x2e')](_0x4ba1b0);})[_0x35fc('0x18')](function(_0x221c5b){_0x55cb69[_0x35fc('0x2f')]=_0x221c5b;return _0x55cb69;});}})['then'](respondWithFilteredResult(_0x3f3f36,_0x4ba1b0))[_0x35fc('0x30')](handleError(_0x3f3f36,null));};exports['getHopperFinals']=function(_0x4855ee,_0x1a2da0){var _0x597670={'raw':!![],'where':{}};var _0x1246c7={};var _0x233b7d={'count':0x0,'rows':[]};return db[_0x35fc('0x29')]['findOne']({'where':{'id':_0x4855ee[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x1a2da0,null))[_0x35fc('0x18')](function(_0x1beb46){if(_0x1beb46){_0x1246c7[_0x35fc('0x33')]=_['keys'](db['CmHopperFinal']['rawAttributes']);_0x1246c7[_0x35fc('0x35')]=_['keys'](_0x4855ee[_0x35fc('0x35')]);_0x1246c7[_0x35fc('0x4c')]=_[_0x35fc('0x36')](_0x1246c7[_0x35fc('0x33')],_0x1246c7['query']);_0x597670[_0x35fc('0x37')]=_[_0x35fc('0x36')](_0x1246c7[_0x35fc('0x33')],qs['fields'](_0x4855ee[_0x35fc('0x35')][_0x35fc('0x42')]));_0x597670[_0x35fc('0x37')]=_0x597670['attributes']['length']?_0x597670['attributes']:_0x1246c7[_0x35fc('0x33')];if(!_0x4855ee[_0x35fc('0x35')][_0x35fc('0x55')](_0x35fc('0x4d'))){_0x597670['limit']=qs[_0x35fc('0x11')](_0x4855ee[_0x35fc('0x35')]['limit']);_0x597670['offset']=qs[_0x35fc('0x10')](_0x4855ee[_0x35fc('0x35')][_0x35fc('0x10')]);}_0x597670['order']=qs['sort'](_0x4855ee[_0x35fc('0x35')][_0x35fc('0x4f')]);_0x597670['where']=qs[_0x35fc('0x4c')](_[_0x35fc('0x50')](_0x4855ee[_0x35fc('0x35')],_0x1246c7['filters']));_0x597670[_0x35fc('0x2c')][_0x35fc('0x51')]=_0x1beb46['id'];if(_0x4855ee[_0x35fc('0x35')][_0x35fc('0x1e')]){_0x597670['where']=_[_0x35fc('0x3a')](_0x597670[_0x35fc('0x2c')],{'$or':_[_0x35fc('0x20')](_0x597670['attributes'],function(_0x96dfc){var _0x26d242={};_0x26d242[_0x96dfc]={'$like':'%'+_0x4855ee[_0x35fc('0x35')]['filter']+'%'};return _0x26d242;})});}_0x597670=_[_0x35fc('0x3a')]({},_0x597670,_0x4855ee[_0x35fc('0x3b')]);return db['CmHopperFinal'][_0x35fc('0x13')]({'where':_0x597670[_0x35fc('0x2c')]})[_0x35fc('0x18')](function(_0x45eaae){_0x233b7d[_0x35fc('0x13')]=_0x45eaae;if(_0x4855ee[_0x35fc('0x35')][_0x35fc('0x39')]){_0x597670[_0x35fc('0x2d')]=[{'all':!![]}];}return db[_0x35fc('0x56')]['findAll'](_0x597670);})[_0x35fc('0x18')](function(_0x3fc6cc){_0x233b7d[_0x35fc('0x2f')]=_0x3fc6cc;return _0x233b7d;});}})[_0x35fc('0x18')](respondWithFilteredResult(_0x1a2da0,_0x597670))['catch'](handleError(_0x1a2da0,null));};exports[_0x35fc('0x57')]=function(_0x1808a3,_0x209d7a){var _0x7b633a={'raw':!![],'where':{}};var _0x4684b6={};var _0x319998={'count':0x0,'rows':[]};return db[_0x35fc('0x29')][_0x35fc('0x53')]({'where':{'id':_0x1808a3['params']['id']}})['then'](handleEntityNotFound(_0x209d7a,null))[_0x35fc('0x18')](function(_0xafa771){if(_0xafa771){_0x4684b6[_0x35fc('0x33')]=_['keys'](db[_0x35fc('0x58')][_0x35fc('0x41')]);_0x4684b6[_0x35fc('0x35')]=_[_0x35fc('0x34')](_0x1808a3['query']);_0x4684b6['filters']=_[_0x35fc('0x36')](_0x4684b6['model'],_0x4684b6[_0x35fc('0x35')]);_0x7b633a[_0x35fc('0x37')]=_['intersection'](_0x4684b6['model'],qs[_0x35fc('0x42')](_0x1808a3[_0x35fc('0x35')][_0x35fc('0x42')]));_0x7b633a['attributes']=_0x7b633a[_0x35fc('0x37')][_0x35fc('0x38')]?_0x7b633a[_0x35fc('0x37')]:_0x4684b6['model'];if(!_0x1808a3[_0x35fc('0x35')][_0x35fc('0x55')](_0x35fc('0x4d'))){_0x7b633a[_0x35fc('0x11')]=qs['limit'](_0x1808a3[_0x35fc('0x35')][_0x35fc('0x11')]);_0x7b633a[_0x35fc('0x10')]=qs[_0x35fc('0x10')](_0x1808a3[_0x35fc('0x35')][_0x35fc('0x10')]);}_0x7b633a['order']=qs[_0x35fc('0x4f')](_0x1808a3[_0x35fc('0x35')]['sort']);_0x7b633a[_0x35fc('0x2c')]=qs[_0x35fc('0x4c')](_['pick'](_0x1808a3[_0x35fc('0x35')],_0x4684b6[_0x35fc('0x4c')]));_0x7b633a[_0x35fc('0x2c')][_0x35fc('0x51')]=_0xafa771['id'];if(_0x1808a3[_0x35fc('0x35')]['filter']){_0x7b633a[_0x35fc('0x2c')]=_[_0x35fc('0x3a')](_0x7b633a[_0x35fc('0x2c')],{'$or':_['map'](_0x7b633a[_0x35fc('0x37')],function(_0x5a8641){var _0x58d3d5={};_0x58d3d5[_0x5a8641]={'$like':'%'+_0x1808a3[_0x35fc('0x35')][_0x35fc('0x1e')]+'%'};return _0x58d3d5;})});}_0x7b633a=_[_0x35fc('0x3a')]({},_0x7b633a,_0x1808a3[_0x35fc('0x3b')]);return db[_0x35fc('0x58')]['count']({'where':_0x7b633a[_0x35fc('0x2c')]})[_0x35fc('0x18')](function(_0x44683e){_0x319998['count']=_0x44683e;if(_0x1808a3[_0x35fc('0x35')][_0x35fc('0x39')]){_0x7b633a[_0x35fc('0x2d')]=[{'all':!![]}];}return db[_0x35fc('0x58')][_0x35fc('0x2e')](_0x7b633a);})['then'](function(_0x1a2d73){_0x319998[_0x35fc('0x2f')]=_0x1a2d73;return _0x319998;});}})['then'](respondWithFilteredResult(_0x209d7a,_0x7b633a))['catch'](handleError(_0x209d7a,null));};exports[_0x35fc('0x59')]=function(_0x44b356,_0x207336){var _0x2b16b2={};var _0x405a43={};var _0x2b2a87;var _0x8c80ca;return db['VoiceQueue']['findOne']({'where':{'id':_0x44b356[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x207336,null))[_0x35fc('0x18')](function(_0x1a92fa){if(_0x1a92fa){_0x2b2a87=_0x1a92fa;_0x405a43[_0x35fc('0x33')]=_['keys'](db['Team'][_0x35fc('0x41')]);_0x405a43[_0x35fc('0x35')]=_[_0x35fc('0x34')](_0x44b356[_0x35fc('0x35')]);_0x405a43['filters']=_['intersection'](_0x405a43[_0x35fc('0x33')],_0x405a43[_0x35fc('0x35')]);_0x2b16b2[_0x35fc('0x37')]=_[_0x35fc('0x36')](_0x405a43['model'],qs['fields'](_0x44b356[_0x35fc('0x35')][_0x35fc('0x42')]));_0x2b16b2['attributes']=_0x2b16b2[_0x35fc('0x37')][_0x35fc('0x38')]?_0x2b16b2[_0x35fc('0x37')]:_0x405a43[_0x35fc('0x33')];_0x2b16b2[_0x35fc('0x4e')]=qs[_0x35fc('0x4f')](_0x44b356[_0x35fc('0x35')][_0x35fc('0x4f')]);_0x2b16b2[_0x35fc('0x2c')]=qs[_0x35fc('0x4c')](_[_0x35fc('0x50')](_0x44b356[_0x35fc('0x35')],_0x405a43[_0x35fc('0x4c')]));if(_0x44b356[_0x35fc('0x35')][_0x35fc('0x1e')]){_0x2b16b2[_0x35fc('0x2c')]=_['merge'](_0x2b16b2[_0x35fc('0x2c')],{'$or':_['map'](_0x2b16b2[_0x35fc('0x37')],function(_0x5d677a){var _0x5aa072={};_0x5aa072[_0x5d677a]={'$like':'%'+_0x44b356[_0x35fc('0x35')][_0x35fc('0x1e')]+'%'};return _0x5aa072;})});}_0x2b16b2=_[_0x35fc('0x3a')]({},_0x2b16b2,_0x44b356['options']);return _0x2b2a87[_0x35fc('0x59')](_0x2b16b2);}})[_0x35fc('0x18')](function(_0xe9c7c2){if(_0xe9c7c2){_0x8c80ca=_0xe9c7c2[_0x35fc('0x38')];if(!_0x44b356[_0x35fc('0x35')][_0x35fc('0x55')]('nolimit')){_0x2b16b2['limit']=qs[_0x35fc('0x11')](_0x44b356['query']['limit']);_0x2b16b2[_0x35fc('0x10')]=qs['offset'](_0x44b356['query']['offset']);}return _0x2b2a87[_0x35fc('0x59')](_0x2b16b2);}})['then'](function(_0x355154){if(_0x355154){return _0x355154?{'count':_0x8c80ca,'rows':_0x355154}:null;}})[_0x35fc('0x18')](respondWithResult(_0x207336,null))[_0x35fc('0x30')](handleError(_0x207336,null));};exports[_0x35fc('0x5a')]=function(_0x392212,_0x201dfa){var _0x4ab6f9=_0x392212['body'][_0x35fc('0x5b')];var _0x5994ec=_[_0x35fc('0x20')](_0x4ab6f9,'id');return db[_0x35fc('0x5c')]['findAll']({'where':{'id':_0x5994ec},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x35fc('0x27'),_0x35fc('0x5d'),_0x35fc('0x5e'),_0x35fc('0x5f')],'raw':!![]}]})[_0x35fc('0x18')](function(_0x28525f){if(_0x28525f){var _0x9116b1=_[_0x35fc('0x60')](_0x28525f,function(_0x4818ea){var _0x5436a3=_0x4818ea['get']({'plain':!![]});_0x5436a3['Agents'][_0x35fc('0x61')](function(_0x4c9c90){_0x4c9c90[_0x35fc('0x62')]=_['find'](_0x4ab6f9,{'id':_0x5436a3['id']})[_0x35fc('0x62')];});return _0x5436a3[_0x35fc('0x63')];});return db['VoiceQueue']['find']({'where':{'id':_0x392212[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](function(_0x10ef95){return db[_0x35fc('0x64')][_0x35fc('0x65')](function(_0x4ff80c){return _0x10ef95['addTeams'](_0x5994ec,{'transaction':_0x4ff80c})[_0x35fc('0x18')](function(){return BPromise['each'](_0x4ab6f9,function(_0x15b6be){return db['TeamVoiceQueue'][_0x35fc('0x66')]({'TeamId':_0x15b6be['id'],'VoiceQueueId':_0x392212[_0x35fc('0x32')]['id'],'penalty':_0x15b6be[_0x35fc('0x62')]},{'transaction':_0x4ff80c});});})[_0x35fc('0x18')](function(){return BPromise['each'](_0x9116b1,function(_0x29a77a){return db['UserVoiceQueue'][_0x35fc('0x67')]({'where':{'UserId':_0x29a77a['id'],'VoiceQueueId':_0x392212['params']['id']},'defaults':{'penalty':_0x29a77a['penalty']},'transaction':_0x4ff80c});});})[_0x35fc('0x18')](function(){return BPromise['each'](_[_0x35fc('0x1e')](_0x9116b1,{'online':!![]}),function(_0x2c8361){return db[_0x35fc('0x68')][_0x35fc('0x66')]({'membername':_0x2c8361[_0x35fc('0x27')],'UserId':_0x2c8361['id'],'queue_name':_0x10ef95[_0x35fc('0x27')],'VoiceQueueId':_0x10ef95['id'],'interface':_[_0x35fc('0x69')](_0x2c8361[_0x35fc('0x5f')])?util[_0x35fc('0x6a')]('SIP/%s',_0x2c8361[_0x35fc('0x27')]):_0x2c8361[_0x35fc('0x5f')],'paused':_0x2c8361[_0x35fc('0x5e')]||![],'penalty':_0x2c8361[_0x35fc('0x62')]},{'transaction':_0x4ff80c});});})[_0x35fc('0x18')](function(){_0x9116b1[_0x35fc('0x61')](function(_0x4020ae){socket[_0x35fc('0x6b')]('userVoiceQueue:save',{'UserId':_0x4020ae['id'],'VoiceQueueId':_0x10ef95['id']});});});});});}})['then'](respondWithStatusCode(_0x201dfa,null))['catch'](handleError(_0x201dfa,null));};exports['removeTeams']=function(_0x5c8419,_0x271087){return db[_0x35fc('0x5c')][_0x35fc('0x2e')]({'where':{'id':_0x5c8419[_0x35fc('0x35')][_0x35fc('0x6c')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x35fc('0x63'),'attributes':['id'],'raw':!![]}]})[_0x35fc('0x18')](handleEntityNotFound(_0x271087,null))[_0x35fc('0x18')](function(_0x2f450e){var _0x370e99=_['map'](_0x2f450e,'id');var _0x195ca3=[];var _0x398359=[];var _0x4188bc=squel['select']();_0x4188bc[_0x35fc('0x6d')](_0x35fc('0x6e'))[_0x35fc('0x6f')](_0x35fc('0x70'),'tq')[_0x35fc('0x71')](_0x35fc('0x72'),'ut',_0x35fc('0x73'))[_0x35fc('0x2c')](_0x35fc('0x74'),_0x5c8419[_0x35fc('0x32')]['id']);for(var _0x3aba1c=0x0;_0x3aba1c<_0x2f450e[_0x35fc('0x38')];_0x3aba1c+=0x1){let _0x225eb1=_0x2f450e[_0x3aba1c];for(var _0x206f0b=0x0;_0x206f0b<_0x225eb1[_0x35fc('0x63')]['length'];_0x206f0b+=0x1){let _0x4ae3d8=_0x225eb1[_0x35fc('0x63')][_0x206f0b];var _0x6a0c44=_0x4188bc[_0x35fc('0x75')]();_0x6a0c44[_0x35fc('0x2c')](_0x35fc('0x76'),_0x4ae3d8['id']);_0x398359[_0x35fc('0x77')](db[_0x35fc('0x64')][_0x35fc('0x35')](_0x6a0c44[_0x35fc('0x78')](),{'type':db[_0x35fc('0x64')][_0x35fc('0x79')][_0x35fc('0x7a')]})[_0x35fc('0x18')](function(_0x336c4a){if(_0x336c4a[_0x35fc('0x38')]===0x1){return _0x4ae3d8['id'];}else{var _0x5824a0=_[_0x35fc('0x7b')](_[_0x35fc('0x20')](_0x336c4a,_0x35fc('0x7c')),function(_0x34e007){return _[_0x35fc('0x7d')](_0x370e99,_0x34e007);});if(_0x5824a0){return _0x4ae3d8['id'];}}}));}}return BPromise[_0x35fc('0x7e')](_0x398359)[_0x35fc('0x18')](function(_0xa4c51a){_0x195ca3=_(_0x195ca3)['union'](_0xa4c51a)['compact']()[_0x35fc('0x21')]();return db[_0x35fc('0x29')]['find']({'where':{'id':_0x5c8419[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](function(_0x43a794){return db[_0x35fc('0x64')]['transaction'](function(_0x42912c){return _0x43a794[_0x35fc('0x7f')](_0x5c8419[_0x35fc('0x35')][_0x35fc('0x6c')],{'transaction':_0x42912c})['then'](function(){if(!_[_0x35fc('0x80')](_0x195ca3)){return _0x43a794[_0x35fc('0x81')](_0x195ca3,{'transaction':_0x42912c})['then'](function(){return db[_0x35fc('0x68')][_0x35fc('0x25')]({'where':{'VoiceQueueId':_0x5c8419[_0x35fc('0x32')]['id'],'UserId':_0x195ca3},'transaction':_0x42912c});});}})['then'](function(){_0x195ca3[_0x35fc('0x61')](function(_0x4de072){socket[_0x35fc('0x6b')](_0x35fc('0x82'),{'UserId':_0x4de072,'VoiceQueueId':_0x43a794['id']});});});});});});})['then'](respondWithStatusCode(_0x271087,null))[_0x35fc('0x30')](handleError(_0x271087,null));};exports[_0x35fc('0x83')]=function(_0x139065,_0x25aedf){var _0x316d37,_0x3fd897;return db[_0x35fc('0x29')]['find']({'where':{'id':_0x139065['params']['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x25aedf,null))[_0x35fc('0x18')](function(_0x2463dd){if(_0x2463dd){_0x3fd897=_0x2463dd;return _0x2463dd[_0x35fc('0x83')](_0x139065[_0x35fc('0x3d')][_0x35fc('0x6c')],_[_0x35fc('0x43')](_0x139065['body'],[_0x35fc('0x6c'),'id'])||{})[_0x35fc('0x84')](function(_0x46b9b6){for(var _0x4cdc31=0x0;_0x4cdc31<_0x139065[_0x35fc('0x3d')][_0x35fc('0x6c')][_0x35fc('0x38')];_0x4cdc31+=0x1){socket[_0x35fc('0x6b')](_0x35fc('0x85'),{'UserId':Number(_0x139065[_0x35fc('0x3d')][_0x35fc('0x6c')][_0x4cdc31]),'VoiceQueueId':Number(_0x139065[_0x35fc('0x32')]['id'])});}return _0x46b9b6;});}})[_0x35fc('0x18')](function(_0x14e414){_0x316d37=_0x14e414||[];if(_0x3fd897){return db[_0x35fc('0x86')][_0x35fc('0x2e')]({'where':{'id':_0x139065[_0x35fc('0x3d')][_0x35fc('0x6c')]},'attributes':['id',_0x35fc('0x27'),_0x35fc('0x5d'),_0x35fc('0x5e'),_0x35fc('0x5f')],'raw':!![]});}})[_0x35fc('0x18')](function(_0x4949ed){if(!_[_0x35fc('0x80')](_0x4949ed)){var _0x4f74ff=[];for(var _0x28cbc8=0x0;_0x28cbc8<_0x4949ed[_0x35fc('0x38')];_0x28cbc8++){if(_0x4949ed[_0x28cbc8]['online']){_0x4f74ff[_0x35fc('0x77')](db[_0x35fc('0x68')][_0x35fc('0x66')]({'membername':_0x4949ed[_0x28cbc8][_0x35fc('0x27')],'UserId':_0x4949ed[_0x28cbc8]['id'],'queue_name':_0x3fd897[_0x35fc('0x27')],'VoiceQueueId':_0x3fd897['id'],'interface':_[_0x35fc('0x69')](_0x4949ed[_0x28cbc8][_0x35fc('0x5f')])?util[_0x35fc('0x6a')]('SIP/%s',_0x4949ed[_0x28cbc8][_0x35fc('0x27')]):_0x4949ed[_0x28cbc8][_0x35fc('0x5f')],'paused':_0x4949ed[_0x28cbc8][_0x35fc('0x5e')]||![],'penalty':_0x139065[_0x35fc('0x3d')]['penalty']||0x0}));}}return BPromise['all'](_0x4f74ff);}})['then'](function(){return _0x316d37;})['then'](respondWithResult(_0x25aedf,null))[_0x35fc('0x30')](handleError(_0x25aedf,null));};exports['removeAgents']=function(_0xcbabdf,_0x2475d6){return db[_0x35fc('0x29')][_0x35fc('0x23')]({'where':{'id':_0xcbabdf[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x2475d6,null))[_0x35fc('0x18')](function(_0x41cbaa){if(_0x41cbaa){return _0x41cbaa[_0x35fc('0x81')](_0xcbabdf[_0x35fc('0x35')][_0x35fc('0x6c')])[_0x35fc('0x18')](function(){if(_[_0x35fc('0x87')](_0xcbabdf['query'][_0x35fc('0x6c')])){for(var _0x3e8580=0x0;_0x3e8580<_0xcbabdf[_0x35fc('0x35')][_0x35fc('0x6c')]['length'];_0x3e8580+=0x1){socket[_0x35fc('0x6b')](_0x35fc('0x82'),{'UserId':Number(_0xcbabdf[_0x35fc('0x35')][_0x35fc('0x6c')][_0x3e8580]),'VoiceQueueId':Number(_0xcbabdf[_0x35fc('0x32')]['id'])});}}else{socket[_0x35fc('0x6b')](_0x35fc('0x82'),{'UserId':Number(_0xcbabdf[_0x35fc('0x35')][_0x35fc('0x6c')]),'VoiceQueueId':Number(_0xcbabdf[_0x35fc('0x32')]['id'])});}});}})[_0x35fc('0x18')](function(_0xa39c4c){return db[_0x35fc('0x68')][_0x35fc('0x25')]({'where':{'VoiceQueueId':_0xcbabdf[_0x35fc('0x32')]['id'],'UserId':_0xcbabdf[_0x35fc('0x35')][_0x35fc('0x6c')]}})[_0x35fc('0x18')](function(){return _0xa39c4c;});})[_0x35fc('0x18')](respondWithStatusCode(_0x2475d6,null))[_0x35fc('0x30')](handleError(_0x2475d6,null));};exports[_0x35fc('0x88')]=function(_0x11d0f4,_0x4f150a){var _0x12238e={};var _0x16b52f={};var _0x238242;var _0x452f30;return db[_0x35fc('0x29')]['findOne']({'where':{'id':_0x11d0f4[_0x35fc('0x32')]['id']}})['then'](handleEntityNotFound(_0x4f150a,null))[_0x35fc('0x18')](function(_0x156c24){if(_0x156c24){_0x238242=_0x156c24;_0x16b52f[_0x35fc('0x33')]=_[_0x35fc('0x34')](db[_0x35fc('0x86')][_0x35fc('0x41')]);_0x16b52f[_0x35fc('0x35')]=_[_0x35fc('0x34')](_0x11d0f4[_0x35fc('0x35')]);_0x16b52f[_0x35fc('0x4c')]=_[_0x35fc('0x36')](_0x16b52f[_0x35fc('0x33')],_0x16b52f[_0x35fc('0x35')]);_0x12238e[_0x35fc('0x37')]=_[_0x35fc('0x36')](_0x16b52f[_0x35fc('0x33')],qs[_0x35fc('0x42')](_0x11d0f4[_0x35fc('0x35')][_0x35fc('0x42')]));_0x12238e[_0x35fc('0x37')]=_0x12238e['attributes'][_0x35fc('0x38')]?_0x12238e[_0x35fc('0x37')]:_0x16b52f[_0x35fc('0x33')];_0x12238e['order']=qs[_0x35fc('0x4f')](_0x11d0f4[_0x35fc('0x35')]['sort']);_0x12238e['where']=qs['filters'](_[_0x35fc('0x50')](_0x11d0f4[_0x35fc('0x35')],_0x16b52f['filters']));if(_0x11d0f4[_0x35fc('0x35')][_0x35fc('0x1e')]){_0x12238e[_0x35fc('0x2c')]=_[_0x35fc('0x3a')](_0x12238e[_0x35fc('0x2c')],{'$or':_[_0x35fc('0x20')](_0x12238e['attributes'],function(_0x13534c){var _0x3be339={};_0x3be339[_0x13534c]={'$like':'%'+_0x11d0f4[_0x35fc('0x35')][_0x35fc('0x1e')]+'%'};return _0x3be339;})});}_0x12238e=_[_0x35fc('0x3a')]({},_0x12238e,_0x11d0f4['options']);return _0x238242[_0x35fc('0x88')](_0x12238e);}})[_0x35fc('0x18')](function(_0x52f355){if(_0x52f355){_0x452f30=_0x52f355[_0x35fc('0x38')];if(!_0x11d0f4[_0x35fc('0x35')][_0x35fc('0x55')](_0x35fc('0x4d'))){_0x12238e[_0x35fc('0x11')]=qs[_0x35fc('0x11')](_0x11d0f4[_0x35fc('0x35')][_0x35fc('0x11')]);_0x12238e[_0x35fc('0x10')]=qs['offset'](_0x11d0f4[_0x35fc('0x35')][_0x35fc('0x10')]);}return _0x238242['getAgents'](_0x12238e);}})[_0x35fc('0x18')](function(_0x4ffbf9){if(_0x4ffbf9){return _0x4ffbf9?{'count':_0x452f30,'rows':_0x4ffbf9}:null;}})[_0x35fc('0x18')](respondWithResult(_0x4f150a,null))[_0x35fc('0x30')](handleError(_0x4f150a,null));};exports[_0x35fc('0x89')]=function(_0x206491,_0x536837){var _0x3cfbd4={};var _0x3ac7fb={};var _0x3916e7;var _0x4bcc53;return db[_0x35fc('0x29')]['findOne']({'where':{'id':_0x206491[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x536837,null))[_0x35fc('0x18')](function(_0x3da024){if(_0x3da024){_0x3916e7=_0x3da024;_0x3ac7fb[_0x35fc('0x33')]=_[_0x35fc('0x34')](db[_0x35fc('0x68')][_0x35fc('0x41')]);_0x3ac7fb[_0x35fc('0x35')]=_[_0x35fc('0x34')](_0x206491[_0x35fc('0x35')]);_0x3ac7fb[_0x35fc('0x4c')]=_[_0x35fc('0x36')](_0x3ac7fb[_0x35fc('0x33')],_0x3ac7fb[_0x35fc('0x35')]);_0x3cfbd4['attributes']=_[_0x35fc('0x36')](_0x3ac7fb[_0x35fc('0x33')],qs[_0x35fc('0x42')](_0x206491[_0x35fc('0x35')][_0x35fc('0x42')]));_0x3cfbd4[_0x35fc('0x37')]=_0x3cfbd4[_0x35fc('0x37')]['length']?_0x3cfbd4['attributes']:_0x3ac7fb['model'];_0x3cfbd4['order']=qs[_0x35fc('0x4f')](_0x206491['query'][_0x35fc('0x4f')]);_0x3cfbd4[_0x35fc('0x2c')]=qs[_0x35fc('0x4c')](_[_0x35fc('0x50')](_0x206491[_0x35fc('0x35')],_0x3ac7fb[_0x35fc('0x4c')]));if(_0x206491['query'][_0x35fc('0x1e')]){_0x3cfbd4['where']=_[_0x35fc('0x3a')](_0x3cfbd4['where'],{'$or':_['map'](_0x3cfbd4[_0x35fc('0x37')],function(_0x472e13){var _0x2d0512={};_0x2d0512[_0x472e13]={'$like':'%'+_0x206491['query']['filter']+'%'};return _0x2d0512;})});}_0x3cfbd4=_['merge']({},_0x3cfbd4,_0x206491['options']);return _0x3916e7[_0x35fc('0x89')](_0x3cfbd4);}})[_0x35fc('0x18')](function(_0x131db6){if(_0x131db6){_0x4bcc53=_0x131db6[_0x35fc('0x38')];if(!_0x206491[_0x35fc('0x35')][_0x35fc('0x55')](_0x35fc('0x4d'))){_0x3cfbd4[_0x35fc('0x11')]=qs[_0x35fc('0x11')](_0x206491['query']['limit']);_0x3cfbd4[_0x35fc('0x10')]=qs[_0x35fc('0x10')](_0x206491[_0x35fc('0x35')][_0x35fc('0x10')]);}return _0x3916e7[_0x35fc('0x89')](_0x3cfbd4);}})[_0x35fc('0x18')](function(_0x4f4c68){return _0x4f4c68?{'count':_0x4bcc53,'rows':_0x4f4c68}:null;})[_0x35fc('0x18')](respondWithResult(_0x536837,null))[_0x35fc('0x30')](handleError(_0x536837,null));};exports[_0x35fc('0x8a')]=function(_0x4f9a00,_0x5c097d){var _0x11c117={};var _0x26b1cb={};var _0x84e749;var _0x4f9685;return db[_0x35fc('0x29')][_0x35fc('0x53')]({'where':{'id':_0x4f9a00[_0x35fc('0x32')]['id']}})['then'](handleEntityNotFound(_0x5c097d,null))[_0x35fc('0x18')](function(_0x546d2e){if(_0x546d2e){_0x84e749=_0x546d2e;_0x26b1cb[_0x35fc('0x33')]=_['keys'](db[_0x35fc('0x8b')][_0x35fc('0x41')]);_0x26b1cb['query']=_[_0x35fc('0x34')](_0x4f9a00[_0x35fc('0x35')]);_0x26b1cb['filters']=_[_0x35fc('0x36')](_0x26b1cb[_0x35fc('0x33')],_0x26b1cb[_0x35fc('0x35')]);_0x11c117[_0x35fc('0x37')]=_[_0x35fc('0x36')](_0x26b1cb[_0x35fc('0x33')],qs['fields'](_0x4f9a00[_0x35fc('0x35')][_0x35fc('0x42')]));_0x11c117[_0x35fc('0x37')]=_0x11c117[_0x35fc('0x37')][_0x35fc('0x38')]?_0x11c117['attributes']:_0x26b1cb[_0x35fc('0x33')];_0x11c117[_0x35fc('0x4e')]=qs[_0x35fc('0x4f')](_0x4f9a00[_0x35fc('0x35')][_0x35fc('0x4f')]);_0x11c117[_0x35fc('0x2c')]=qs[_0x35fc('0x4c')](_[_0x35fc('0x50')](_0x4f9a00[_0x35fc('0x35')],_0x26b1cb['filters']));if(_0x4f9a00[_0x35fc('0x35')][_0x35fc('0x1e')]){_0x11c117[_0x35fc('0x2c')]=_['merge'](_0x11c117[_0x35fc('0x2c')],{'$or':_['map'](_0x11c117[_0x35fc('0x37')],function(_0x413a4b){var _0x599121={};_0x599121[_0x413a4b]={'$like':'%'+_0x4f9a00[_0x35fc('0x35')][_0x35fc('0x1e')]+'%'};return _0x599121;})});}_0x11c117=_[_0x35fc('0x3a')]({},_0x11c117,_0x4f9a00[_0x35fc('0x3b')]);return _0x84e749[_0x35fc('0x8a')](_0x11c117);}})[_0x35fc('0x18')](function(_0x411d09){if(_0x411d09){_0x4f9685=_0x411d09['length'];if(!_0x4f9a00[_0x35fc('0x35')][_0x35fc('0x55')](_0x35fc('0x4d'))){_0x11c117['limit']=qs['limit'](_0x4f9a00[_0x35fc('0x35')][_0x35fc('0x11')]);_0x11c117[_0x35fc('0x10')]=qs[_0x35fc('0x10')](_0x4f9a00[_0x35fc('0x35')][_0x35fc('0x10')]);}return _0x84e749[_0x35fc('0x8a')](_0x11c117);}})[_0x35fc('0x18')](function(_0x214f01){if(_0x214f01){return _0x214f01?{'count':_0x4f9685,'rows':_0x214f01}:null;}})[_0x35fc('0x18')](respondWithResult(_0x5c097d,null))[_0x35fc('0x30')](handleError(_0x5c097d,null));};exports[_0x35fc('0x8c')]=function(_0xae43b4,_0x3c5524){var _0x2ceb04=moment()[_0x35fc('0x6a')](_0x35fc('0x8d'));var _0x605f3b,_0x43bb43;return db['VoiceQueue'][_0x35fc('0x23')]({'where':{'id':_0xae43b4['params']['id']}})['then'](handleEntityNotFound(_0x3c5524,null))[_0x35fc('0x18')](function(_0x1d7881){if(_0x1d7881){_0x43bb43=_0x1d7881;return _0x1d7881[_0x35fc('0x8c')](_0xae43b4[_0x35fc('0x3d')][_0x35fc('0x6c')],_[_0x35fc('0x43')](_0xae43b4[_0x35fc('0x3d')],[_0x35fc('0x6c'),'id'])||{});}return null;})[_0x35fc('0x84')](function(_0x3e0ebb){var _0x138fe5;_0x605f3b=_0x3e0ebb||[];var _0x3033a0=[];if(_0x3e0ebb){for(var _0x228bb9=0x0;_0x228bb9<_0x3e0ebb[_0x35fc('0x38')];_0x228bb9+=0x1){var _0x163afe=_0x3e0ebb[_0x228bb9][_0x35fc('0x19')]({'plain':!![]});_0x43bb43[_0x35fc('0x8e')]=_0xae43b4[_0x35fc('0x3d')][_0x35fc('0x8e')]?_0xae43b4[_0x35fc('0x3d')]['dialCheckDuplicateType']:_0x43bb43[_0x35fc('0x8e')];switch(_0x43bb43[_0x35fc('0x8e')]){case _0x35fc('0x8f'):_0x138fe5=squel['insert']()[_0x35fc('0x90')](_0x35fc('0x91'))[_0x35fc('0x92')](['phone',_0x35fc('0x93'),_0x35fc('0x94'),_0x35fc('0x95'),'VoiceQueueId',_0x35fc('0x44'),_0x35fc('0x45')],squel['select']()[_0x35fc('0x6d')](_0x35fc('0x96'),_0x35fc('0x96'))[_0x35fc('0x6d')]('\x27'+_0x2ceb04+'\x27','scheduledAt')['field']('id','ContactId')[_0x35fc('0x6d')](_0x163afe[_0x35fc('0x97')]['toString'](),_0x35fc('0x95'))[_0x35fc('0x6d')](_0xae43b4[_0x35fc('0x32')]['id'][_0x35fc('0x78')](),_0x35fc('0x51'))['field']('\x27'+_0x2ceb04+'\x27',_0x35fc('0x44'))[_0x35fc('0x6d')]('\x27'+_0x2ceb04+'\x27','updatedAt')[_0x35fc('0x6f')](_0x35fc('0x98'))[_0x35fc('0x2c')](_0x35fc('0x99'))[_0x35fc('0x2c')](_0x35fc('0x9a'),_0x163afe[_0x35fc('0x97')][_0x35fc('0x78')]())['where'](_0x35fc('0x9b'))['where'](_0x35fc('0x9c'),squel[_0x35fc('0x9d')]()[_0x35fc('0x6d')](_0x35fc('0x9e'))[_0x35fc('0x6f')](_0x35fc('0x9f'))['where']('VoiceQueueId\x20=\x20?',_0xae43b4['params']['id'][_0x35fc('0x78')]()))[_0x35fc('0x2c')](_0x35fc('0x9c'),squel['select']()[_0x35fc('0x6d')](_0x35fc('0xa0'))[_0x35fc('0x6f')](_0x35fc('0x91'))[_0x35fc('0x2c')](_0x35fc('0x74'),_0xae43b4[_0x35fc('0x32')]['id'][_0x35fc('0x78')]())))[_0x35fc('0x78')]();break;case _0x35fc('0xa1'):_0x138fe5=squel[_0x35fc('0xa2')]()['into'](_0x35fc('0x91'))[_0x35fc('0x92')](['phone',_0x35fc('0x93'),_0x35fc('0x94'),'ListId','VoiceQueueId',_0x35fc('0x44'),_0x35fc('0x45')],squel[_0x35fc('0x9d')]()[_0x35fc('0x6d')](_0x35fc('0x96'),_0x35fc('0x96'))[_0x35fc('0x6d')]('\x27'+_0x2ceb04+'\x27',_0x35fc('0x93'))['field']('id',_0x35fc('0x94'))[_0x35fc('0x6d')](_0x163afe[_0x35fc('0x97')]['toString'](),_0x35fc('0x95'))['field'](_0xae43b4[_0x35fc('0x32')]['id'][_0x35fc('0x78')](),_0x35fc('0x51'))[_0x35fc('0x6d')]('\x27'+_0x2ceb04+'\x27',_0x35fc('0x44'))['field']('\x27'+_0x2ceb04+'\x27',_0x35fc('0x45'))['from']('cm_contacts')[_0x35fc('0x2c')](_0x35fc('0x99'))[_0x35fc('0x2c')]('ListId\x20=\x20?',_0x163afe[_0x35fc('0x97')][_0x35fc('0x78')]())[_0x35fc('0x2c')](_0x35fc('0x9b'))[_0x35fc('0x2c')](_0x35fc('0x9c'),squel[_0x35fc('0x9d')]()['field']('COALESCE(phone,\x27\x27)')[_0x35fc('0x6f')](_0x35fc('0x91'))['where'](_0x35fc('0x74'),_0xae43b4['params']['id'][_0x35fc('0x78')]())))[_0x35fc('0x78')]();break;default:_0x138fe5=squel[_0x35fc('0xa2')]()[_0x35fc('0x90')]('cm_hopper')[_0x35fc('0x92')](['phone',_0x35fc('0x93'),_0x35fc('0x94'),_0x35fc('0x95'),'VoiceQueueId',_0x35fc('0x44'),_0x35fc('0x45')],squel[_0x35fc('0x9d')]()[_0x35fc('0x6d')](_0x35fc('0x96'),_0x35fc('0x96'))['field']('\x27'+_0x2ceb04+'\x27',_0x35fc('0x93'))[_0x35fc('0x6d')]('id','ContactId')[_0x35fc('0x6d')](_0x163afe['CmListId']['toString'](),'ListId')[_0x35fc('0x6d')](_0xae43b4[_0x35fc('0x32')]['id'][_0x35fc('0x78')](),_0x35fc('0x51'))[_0x35fc('0x6d')]('\x27'+_0x2ceb04+'\x27',_0x35fc('0x44'))[_0x35fc('0x6d')]('\x27'+_0x2ceb04+'\x27',_0x35fc('0x45'))[_0x35fc('0x6f')](_0x35fc('0x98'))[_0x35fc('0x2c')](_0x35fc('0x99'))['where'](_0x35fc('0x9a'),_0x163afe[_0x35fc('0x97')][_0x35fc('0x78')]())[_0x35fc('0x2c')](_0x35fc('0x9b')))[_0x35fc('0x78')]();}_0x3033a0[_0x35fc('0x77')](db['sequelize'][_0x35fc('0x35')](_0x138fe5));}return BPromise['all'](_0x3033a0);}})[_0x35fc('0x18')](function(){var _0x477d70=[];var _0x28533f=squel['insert']()[_0x35fc('0x90')](_0x35fc('0xa3'))[_0x35fc('0x92')]([_0x35fc('0xa4'),_0x35fc('0x96'),_0x35fc('0xa5'),'createdAt',_0x35fc('0x45')],squel['select']()[_0x35fc('0x6d')]('h.id')['field'](_0x35fc('0xa6'))[_0x35fc('0x6d')]('ci.OrderBy+1')[_0x35fc('0x6d')]('\x27'+_0x2ceb04+'\x27',_0x35fc('0x44'))[_0x35fc('0x6d')]('\x27'+_0x2ceb04+'\x27','updatedAt')[_0x35fc('0x6f')](_0x35fc('0xa7'),'ci')[_0x35fc('0x71')]('cm_hopper','h',_0x35fc('0xa8'))[_0x35fc('0x2c')](_0x35fc('0xa9'),_0x2ceb04)[_0x35fc('0x2c')](_0x35fc('0xaa'),_0x35fc('0xab')))[_0x35fc('0x78')]();_0x477d70[_0x35fc('0x77')](db[_0x35fc('0x64')][_0x35fc('0x35')](_0x28533f));return BPromise[_0x35fc('0x7e')](_0x477d70);})[_0x35fc('0x18')](function(){return _0x605f3b;})[_0x35fc('0x18')](respondWithResult(_0x3c5524,null))[_0x35fc('0x30')](handleError(_0x3c5524,null));};exports['removeLists']=function(_0x57b3f1,_0x8fa3cf){return db[_0x35fc('0x29')][_0x35fc('0x23')]({'where':{'id':_0x57b3f1[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x8fa3cf,null))[_0x35fc('0x18')](function(_0x293c2d){if(_0x293c2d){return _0x293c2d[_0x35fc('0xac')](_0x57b3f1[_0x35fc('0x35')][_0x35fc('0x6c')]);}})['then'](function(_0x4860b4){if(_0x4860b4){return db[_0x35fc('0x4b')][_0x35fc('0x25')]({'where':{'ListId':_0x57b3f1[_0x35fc('0x35')][_0x35fc('0x6c')],'VoiceQueueId':_0x57b3f1[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](function(){return _0x4860b4;});}})[_0x35fc('0x18')](respondWithStatusCode(_0x8fa3cf,null))[_0x35fc('0x30')](handleError(_0x8fa3cf,null));};exports[_0x35fc('0xad')]=function(_0x55d140,_0x488cea){var _0x1a5f12={};var _0x4c40e5={};var _0x3afdf3;var _0x3b64de;return db['VoiceQueue'][_0x35fc('0x53')]({'where':{'id':_0x55d140['params']['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x488cea,null))[_0x35fc('0x18')](function(_0xa46452){if(_0xa46452){_0x3afdf3=_0xa46452;_0x4c40e5[_0x35fc('0x33')]=_[_0x35fc('0x34')](db['CmList'][_0x35fc('0x41')]);_0x4c40e5[_0x35fc('0x35')]=_[_0x35fc('0x34')](_0x55d140['query']);_0x4c40e5[_0x35fc('0x4c')]=_[_0x35fc('0x36')](_0x4c40e5[_0x35fc('0x33')],_0x4c40e5['query']);_0x1a5f12[_0x35fc('0x37')]=_[_0x35fc('0x36')](_0x4c40e5[_0x35fc('0x33')],qs[_0x35fc('0x42')](_0x55d140[_0x35fc('0x35')][_0x35fc('0x42')]));_0x1a5f12[_0x35fc('0x37')]=_0x1a5f12[_0x35fc('0x37')][_0x35fc('0x38')]?_0x1a5f12[_0x35fc('0x37')]:_0x4c40e5[_0x35fc('0x33')];_0x1a5f12[_0x35fc('0x4e')]=qs[_0x35fc('0x4f')](_0x55d140[_0x35fc('0x35')][_0x35fc('0x4f')]);_0x1a5f12[_0x35fc('0x2c')]=qs[_0x35fc('0x4c')](_[_0x35fc('0x50')](_0x55d140[_0x35fc('0x35')],_0x4c40e5[_0x35fc('0x4c')]));if(_0x55d140['query'][_0x35fc('0x1e')]){_0x1a5f12[_0x35fc('0x2c')]=_['merge'](_0x1a5f12[_0x35fc('0x2c')],{'$or':_[_0x35fc('0x20')](_0x1a5f12[_0x35fc('0x37')],function(_0x55c126){var _0x9e7561={};_0x9e7561[_0x55c126]={'$like':'%'+_0x55d140[_0x35fc('0x35')][_0x35fc('0x1e')]+'%'};return _0x9e7561;})});}_0x1a5f12=_[_0x35fc('0x3a')]({},_0x1a5f12,_0x55d140[_0x35fc('0x3b')]);return _0x3afdf3[_0x35fc('0xad')](_0x1a5f12);}})[_0x35fc('0x18')](function(_0x5545e9){if(_0x5545e9){_0x3b64de=_0x5545e9[_0x35fc('0x38')];if(!_0x55d140[_0x35fc('0x35')][_0x35fc('0x55')](_0x35fc('0x4d'))){_0x1a5f12[_0x35fc('0x11')]=qs[_0x35fc('0x11')](_0x55d140[_0x35fc('0x35')][_0x35fc('0x11')]);_0x1a5f12['offset']=qs['offset'](_0x55d140[_0x35fc('0x35')][_0x35fc('0x10')]);}return _0x3afdf3['getBlackLists'](_0x1a5f12);}})[_0x35fc('0x18')](function(_0x2c1181){if(_0x2c1181){return _0x2c1181?{'count':_0x3b64de,'rows':_0x2c1181}:null;}})[_0x35fc('0x18')](respondWithResult(_0x488cea,null))[_0x35fc('0x30')](handleError(_0x488cea,null));};exports[_0x35fc('0xae')]=function(_0x3f7fd7,_0x5e16f1){var _0xa46ffd;return db[_0x35fc('0x29')][_0x35fc('0x23')]({'where':{'id':_0x3f7fd7[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](handleEntityNotFound(_0x5e16f1,null))[_0x35fc('0x18')](function(_0x4abeb5){if(_0x4abeb5){return _0x4abeb5[_0x35fc('0xae')](_0x3f7fd7[_0x35fc('0x3d')][_0x35fc('0x6c')],_[_0x35fc('0x43')](_0x3f7fd7[_0x35fc('0x3d')],[_0x35fc('0x6c'),'id'])||{});}return null;})[_0x35fc('0x84')](function(_0x4007f9){var _0x58d0b1;_0xa46ffd=_0x4007f9||[];var _0x4bf83e=[];if(_0x4007f9){for(var _0x1afe94=0x0;_0x1afe94<_0x4007f9[_0x35fc('0x38')];_0x1afe94+=0x1){var _0x108366=_0x4007f9[_0x1afe94][_0x35fc('0x19')]({'plain':!![]});_0x58d0b1=squel['insert']()[_0x35fc('0x90')]('cm_hopper_black')['fromQuery']([_0x35fc('0x96'),_0x35fc('0x94'),_0x35fc('0x95'),_0x35fc('0x51'),_0x35fc('0x44'),_0x35fc('0x45')],squel[_0x35fc('0x9d')]()['field'](_0x35fc('0x96'),_0x35fc('0x96'))[_0x35fc('0x6d')]('id',_0x35fc('0x94'))['field'](_0x108366[_0x35fc('0x97')][_0x35fc('0x78')](),_0x35fc('0x95'))[_0x35fc('0x6d')](_0x3f7fd7[_0x35fc('0x32')]['id']['toString'](),_0x35fc('0x51'))[_0x35fc('0x6d')](_0x35fc('0xaf'),_0x35fc('0x44'))[_0x35fc('0x6d')]('NOW()','updatedAt')[_0x35fc('0x6f')](_0x35fc('0x98'))[_0x35fc('0x2c')](_0x35fc('0x99'))[_0x35fc('0x2c')](_0x35fc('0x9a'),_0x108366[_0x35fc('0x97')]['toString']())[_0x35fc('0x2c')](_0x35fc('0x9b')))['toString']();_0x4bf83e[_0x35fc('0x77')](db[_0x35fc('0x64')][_0x35fc('0x35')](_0x58d0b1));}return BPromise[_0x35fc('0x7e')](_0x4bf83e);}})[_0x35fc('0x18')](function(){return _0xa46ffd;})[_0x35fc('0x18')](respondWithResult(_0x5e16f1,null))[_0x35fc('0x30')](handleError(_0x5e16f1,null));};exports[_0x35fc('0xb0')]=function(_0x4fd3d4,_0x2dff64){return db[_0x35fc('0x29')][_0x35fc('0x23')]({'where':{'id':_0x4fd3d4['params']['id']}})['then'](handleEntityNotFound(_0x2dff64,null))[_0x35fc('0x18')](function(_0x409a32){if(_0x409a32){return _0x409a32['removeBlackLists'](_0x4fd3d4[_0x35fc('0x35')][_0x35fc('0x6c')]);}})[_0x35fc('0x18')](function(_0x2c0bf5){if(_0x2c0bf5){return db['CmHopperBlack'][_0x35fc('0x25')]({'where':{'ListId':_0x4fd3d4['query']['ids'],'VoiceQueueId':_0x4fd3d4[_0x35fc('0x32')]['id']}})[_0x35fc('0x18')](function(){return _0x2c0bf5;});}})[_0x35fc('0x18')](respondWithStatusCode(_0x2dff64,null))[_0x35fc('0x30')](handleError(_0x2dff64,null));};
\ No newline at end of file
+var _0x55ca=['find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','merge','omit','createdAt','updatedAt','VoiceQueues','UserProfileResource','findOne','CmHopper','hasOwnProperty','nolimit','limit','order','sort','where','rows','getHopperHistories','CmHopperHistory','pick','VoiceQueueId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','online','voicePause','flatMap','penalty','sequelize','each','TeamVoiceQueue','upsert','findOrCreate','UserVoiceQueueRt','isNil','interface','format','SIP/%s','forEach','emit','userVoiceQueue:save','removeTeams','select','tq.TeamId','join','user_has_teams','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','all','union','transaction','isEmpty','userVoiceQueue:remove','addAgents','ids','spread','removeAgents','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','field','ContactId','CmListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','onlyIfOpen','COALESCE(phone,\x27\x27)','push','cm_hopper_additional_phones','CmHopperId','h.id','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','phone\x20IS\x20NOT\x20NULL','removeBlackLists','moment','bluebird','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./voiceQueue.socket','status','end','json','undefined','count','offset','set','Content-Range','update','then','destroy','get','inbound','QueueCampaigns','outbound','filter','ignore','value','includes','type','sendStatus','error','stack','name','send','index','map','VoiceQueue','key','getOptions','include','query','findAll','catch','params','model','keys','rawAttributes','filters','intersection','attributes','fields','length','includeAll','options'];(function(_0x4370b2,_0xfa3445){var _0x482b0f=function(_0x211b3a){while(--_0x211b3a){_0x4370b2['push'](_0x4370b2['shift']());}};_0x482b0f(++_0xfa3445);}(_0x55ca,0x126));var _0xa55c=function(_0xbe31a4,_0x11ba89){_0xbe31a4=_0xbe31a4-0x0;var _0x15ec28=_0x55ca[_0xbe31a4];return _0x15ec28;};'use strict';var moment=require(_0xa55c('0x0'));var BPromise=require(_0xa55c('0x1'));var util=require('util');var _=require('lodash');var squel=require('squel');var Redis=require(_0xa55c('0x2'));var qs=require(_0xa55c('0x3'));var logger=require('../../config/logger')(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var db=require(_0xa55c('0x6'))['db'];config[_0xa55c('0x7')]=_[_0xa55c('0x8')](config[_0xa55c('0x7')],{'host':_0xa55c('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa55c('0x7')]));require(_0xa55c('0xa'))['register'](socket);function respondWithStatusCode(_0x291996,_0x290d28){_0x290d28=_0x290d28||0xcc;return function(_0x52a3bc){if(_0x52a3bc){return _0x291996['sendStatus'](_0x290d28);}return _0x291996[_0xa55c('0xb')](_0x290d28)[_0xa55c('0xc')]();};}function respondWithResult(_0x381d07,_0x5d8e5a){_0x5d8e5a=_0x5d8e5a||0xc8;return function(_0x31646d){if(_0x31646d){return _0x381d07[_0xa55c('0xb')](_0x5d8e5a)[_0xa55c('0xd')](_0x31646d);}};}function respondWithFilteredResult(_0x70c2de,_0x3998f7){return function(_0x15eec8){if(_0x15eec8){var _0x5d47ff=typeof _0x3998f7['offset']===_0xa55c('0xe')&&typeof _0x3998f7['limit']==='undefined';var _0x59ea8d=_0x15eec8[_0xa55c('0xf')];var _0x3930e4=_0x5d47ff?0x0:_0x3998f7[_0xa55c('0x10')];var _0x938bd6=_0x5d47ff?_0x15eec8[_0xa55c('0xf')]:_0x3998f7[_0xa55c('0x10')]+_0x3998f7['limit'];var _0x3ccf65;if(_0x938bd6>=_0x59ea8d){_0x938bd6=_0x59ea8d;_0x3ccf65=0xc8;}else{_0x3ccf65=0xce;}_0x70c2de[_0xa55c('0xb')](_0x3ccf65);return _0x70c2de[_0xa55c('0x11')](_0xa55c('0x12'),_0x3930e4+'-'+_0x938bd6+'/'+_0x59ea8d)[_0xa55c('0xd')](_0x15eec8);}return null;};}function saveUpdates(_0x3ae86b){return function(_0x51590e){if(_0x51590e){return _0x51590e[_0xa55c('0x13')](_0x3ae86b)[_0xa55c('0x14')](function(_0x4cee3c){return _0x4cee3c;});}return null;};}function removeEntity(_0x3d4c9e){return function(_0x104a99){if(_0x104a99){return _0x104a99[_0xa55c('0x15')]()[_0xa55c('0x14')](function(){var _0x23a1ae=_0x104a99[_0xa55c('0x16')]({'plain':!![]});var _0x4c0daf=[{'name':'VoiceQueues','value':_0xa55c('0x17'),'ignore':![]},{'name':_0xa55c('0x18'),'value':_0xa55c('0x19'),'ignore':![]}];var _0x4cfe10=_(_0x4c0daf)[_0xa55c('0x1a')](_0xa55c('0x1b'))['map'](_0xa55c('0x1c'))[_0xa55c('0x1c')]();if(_[_0xa55c('0x1d')](_0x4cfe10,_0x23a1ae[_0xa55c('0x1e')])){return;}var _0x234372=_['find'](_0x4c0daf,[_0xa55c('0x1c'),_0x23a1ae['type']])['name'];return db['UserProfileResource'][_0xa55c('0x15')]({'where':{'type':_0x234372,'resourceId':_0x23a1ae['id']}})['then'](function(){return _0x104a99;});})[_0xa55c('0x14')](function(){_0x3d4c9e[_0xa55c('0xb')](0xcc)[_0xa55c('0xc')]();});}};}function handleEntityNotFound(_0xf0e574){return function(_0x2313a9){if(!_0x2313a9){_0xf0e574[_0xa55c('0x1f')](0x194);}return _0x2313a9;};}function handleError(_0x1da633,_0x11e7f7){_0x11e7f7=_0x11e7f7||0x1f4;return function(_0x192df2){logger[_0xa55c('0x20')](_0x192df2[_0xa55c('0x21')]);if(_0x192df2['name']){delete _0x192df2[_0xa55c('0x22')];}_0x1da633[_0xa55c('0xb')](_0x11e7f7)[_0xa55c('0x23')](_0x192df2);};}exports[_0xa55c('0x24')]=function(_0x5d940d,_0x1377b0){var _0x22f6b6={};var _0x1b8388={'count':0x0,'rows':[]};var _0x201941=_[_0xa55c('0x25')](db[_0xa55c('0x26')]['rawAttributes'],function(_0x23e698){return{'name':_0x23e698['fieldName'],'type':_0x23e698[_0xa55c('0x1e')][_0xa55c('0x27')]};});_0x22f6b6=qs[_0xa55c('0x28')](_0x201941,_0x5d940d);var _0x223813={'where':_0x22f6b6['where']};return db[_0xa55c('0x26')][_0xa55c('0xf')](_0x223813)[_0xa55c('0x14')](function(_0x20da31){_0x1b8388[_0xa55c('0xf')]=_0x20da31;_0x22f6b6[_0xa55c('0x29')]=qs[_0xa55c('0x29')](_0x5d940d[_0xa55c('0x2a')]);return db[_0xa55c('0x26')][_0xa55c('0x2b')](_0x22f6b6);})[_0xa55c('0x14')](function(_0x4eb7c4){_0x1b8388['rows']=_0x4eb7c4;return _0x1b8388;})[_0xa55c('0x14')](respondWithFilteredResult(_0x1377b0,_0x22f6b6))[_0xa55c('0x2c')](handleError(_0x1377b0,null));};exports['show']=function(_0x30fadd,_0x2f0110){var _0x2e9623={'raw':![],'where':{'id':_0x30fadd[_0xa55c('0x2d')]['id']}},_0x1839ac={};_0x1839ac[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x26')][_0xa55c('0x30')]);_0x1839ac['query']=_['keys'](_0x30fadd['query']);_0x1839ac[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x1839ac[_0xa55c('0x2e')],_0x1839ac['query']);_0x2e9623[_0xa55c('0x33')]=_['intersection'](_0x1839ac[_0xa55c('0x2e')],qs['fields'](_0x30fadd[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x2e9623[_0xa55c('0x33')]=_0x2e9623['attributes'][_0xa55c('0x35')]?_0x2e9623[_0xa55c('0x33')]:_0x1839ac['model'];if(_0x30fadd[_0xa55c('0x2a')][_0xa55c('0x36')]){_0x2e9623['include']=[{'all':!![]}];}_0x2e9623=_['merge']({},_0x2e9623,_0x30fadd[_0xa55c('0x37')]);return db['VoiceQueue'][_0xa55c('0x38')](_0x2e9623)[_0xa55c('0x14')](handleEntityNotFound(_0x2f0110,null))['then'](respondWithResult(_0x2f0110,null))['catch'](handleError(_0x2f0110,null));};exports['create']=function(_0x4de781,_0x3b3308){return db[_0xa55c('0x26')][_0xa55c('0x39')](_0x4de781[_0xa55c('0x3a')],{})[_0xa55c('0x14')](function(_0x56d17c){var _0x3d52d8=_0x4de781[_0xa55c('0x3b')][_0xa55c('0x16')]({'plain':!![]});if(!_0x3d52d8)throw new Error(_0xa55c('0x3c'));if(_0x3d52d8[_0xa55c('0x3d')]===_0xa55c('0x3b')){var _0x554620=_0x56d17c[_0xa55c('0x16')]({'plain':!![]});var _0x5ee63d=[{'name':'VoiceQueues','value':_0xa55c('0x17')},{'name':_0xa55c('0x18'),'value':'outbound'}];var _0x2bd98b=_['find'](_0x5ee63d,['value',_0x554620[_0xa55c('0x1e')]])[_0xa55c('0x22')];return db[_0xa55c('0x3e')]['find']({'where':{'name':_0x2bd98b,'userProfileId':_0x3d52d8[_0xa55c('0x3f')]},'raw':!![]})[_0xa55c('0x14')](function(_0x5d9d5d){if(_0x5d9d5d&&_0x5d9d5d[_0xa55c('0x40')]===0x0){return db['UserProfileResource'][_0xa55c('0x39')]({'name':_0x554620[_0xa55c('0x22')],'resourceId':_0x554620['id'],'type':_0x5d9d5d['name'],'sectionId':_0x5d9d5d['id']},{})[_0xa55c('0x14')](function(){return _0x56d17c;});}else{return _0x56d17c;}})[_0xa55c('0x2c')](function(_0x5d834d){logger[_0xa55c('0x20')](_0xa55c('0x41'),_0x5d834d);throw _0x5d834d;});}return _0x56d17c;})[_0xa55c('0x14')](respondWithResult(_0x3b3308,0xc9))['catch'](handleError(_0x3b3308,null));};exports[_0xa55c('0x42')]=function(_0x582901,_0x2f9717){var _0x3a8af4={'where':{'id':_0x582901['params']['id']}},_0x451269={};_0x451269[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db['VoiceQueue'][_0xa55c('0x30')]);_0x3a8af4[_0xa55c('0x33')]=_['intersection'](_0x451269[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x582901['query'][_0xa55c('0x34')]));_0x3a8af4[_0xa55c('0x33')]=_0x3a8af4[_0xa55c('0x33')][_0xa55c('0x35')]?_0x3a8af4['attributes']:_0x451269[_0xa55c('0x2e')];if(_0x582901['query'][_0xa55c('0x36')]){_0x3a8af4[_0xa55c('0x29')]=[{'all':!![]}];}_0x3a8af4=_[_0xa55c('0x43')]({},_0x3a8af4,_0x582901['options']);return db[_0xa55c('0x26')][_0xa55c('0x38')](_0x3a8af4)['then'](handleEntityNotFound(_0x2f9717,null))[_0xa55c('0x14')](function(_0x34de95){if(_0x34de95){var _0x3822b7=_0x34de95[_0xa55c('0x16')]({'plain':!![]});_0x3822b7=qs[_0xa55c('0x44')](_0x3822b7,['id',_0xa55c('0x45'),_0xa55c('0x46')]);_0x582901[_0xa55c('0x3a')]=_[_0xa55c('0x44')](_0x582901[_0xa55c('0x3a')],['id','createdAt',_0xa55c('0x46')]);return db[_0xa55c('0x26')][_0xa55c('0x39')](_['merge'](_0x3822b7,_0x582901[_0xa55c('0x3a')]),{'include':_0x582901[_0xa55c('0x2a')]['includeAll']?[{'all':!![]}]:undefined})[_0xa55c('0x14')](function(_0x4fa412){var _0x2b6a0e=_0x582901[_0xa55c('0x3b')][_0xa55c('0x16')]({'plain':!![]});if(!_0x2b6a0e)throw new Error(_0xa55c('0x3c'));if(_0x2b6a0e[_0xa55c('0x3d')]==='user'){var _0x44b7c1=_0x4fa412[_0xa55c('0x16')]({'plain':!![]});var _0x4b85cc=[{'name':_0xa55c('0x47'),'value':_0xa55c('0x17')},{'name':_0xa55c('0x18'),'value':_0xa55c('0x19')}];var _0x50176b=_['find'](_0x4b85cc,[_0xa55c('0x1c'),_0x44b7c1[_0xa55c('0x1e')]])[_0xa55c('0x22')];return db[_0xa55c('0x3e')]['find']({'where':{'name':_0x50176b,'userProfileId':_0x2b6a0e[_0xa55c('0x3f')]},'raw':!![]})['then'](function(_0x2742e4){if(_0x2742e4&&_0x2742e4[_0xa55c('0x40')]===0x0){return db[_0xa55c('0x48')][_0xa55c('0x39')]({'name':_0x44b7c1[_0xa55c('0x22')],'resourceId':_0x44b7c1['id'],'type':_0x2742e4['name'],'sectionId':_0x2742e4['id']},{})[_0xa55c('0x14')](function(){return _0x4fa412;});}else{return _0x4fa412;}})['catch'](function(_0x23f67f){logger[_0xa55c('0x20')](_0xa55c('0x41'),_0x23f67f);throw _0x23f67f;});}return _0x4fa412;});}})[_0xa55c('0x14')](respondWithResult(_0x2f9717,0xc9))[_0xa55c('0x2c')](handleError(_0x2f9717,null));};exports[_0xa55c('0x13')]=function(_0x5d14e0,_0x53e2be){if(_0x5d14e0[_0xa55c('0x3a')]['id']){delete _0x5d14e0[_0xa55c('0x3a')]['id'];}return db[_0xa55c('0x26')][_0xa55c('0x38')]({'where':{'id':_0x5d14e0[_0xa55c('0x2d')]['id']}})['then'](handleEntityNotFound(_0x53e2be,null))[_0xa55c('0x14')](saveUpdates(_0x5d14e0[_0xa55c('0x3a')],null))[_0xa55c('0x14')](respondWithResult(_0x53e2be,null))[_0xa55c('0x2c')](handleError(_0x53e2be,null));};exports[_0xa55c('0x15')]=function(_0x493f51,_0xdd92c1){return db[_0xa55c('0x26')][_0xa55c('0x38')]({'where':{'id':_0x493f51[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0xdd92c1,null))['then'](removeEntity(_0xdd92c1,null))[_0xa55c('0x2c')](handleError(_0xdd92c1,null));};exports['getHoppers']=function(_0x2e482a,_0x5e3a28){var _0x3495a7={'raw':![],'where':{}};var _0x5a8897={};var _0x34edc5={'count':0x0,'rows':[]};return db[_0xa55c('0x26')][_0xa55c('0x49')]({'where':{'id':_0x2e482a[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x5e3a28,null))[_0xa55c('0x14')](function(_0xafaf8c){if(_0xafaf8c){_0x5a8897[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x4a')]['rawAttributes']);_0x5a8897[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x2e482a['query']);_0x5a8897[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x5a8897[_0xa55c('0x2e')],_0x5a8897[_0xa55c('0x2a')]);_0x3495a7[_0xa55c('0x33')]=_[_0xa55c('0x32')](_0x5a8897[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x2e482a['query'][_0xa55c('0x34')]));_0x3495a7[_0xa55c('0x33')]=_0x3495a7[_0xa55c('0x33')][_0xa55c('0x35')]?_0x3495a7[_0xa55c('0x33')]:_0x5a8897[_0xa55c('0x2e')];if(!_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x4b')](_0xa55c('0x4c'))){_0x3495a7['limit']=qs[_0xa55c('0x4d')](_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x3495a7[_0xa55c('0x10')]=qs[_0xa55c('0x10')](_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x10')]);}_0x3495a7[_0xa55c('0x4e')]=qs[_0xa55c('0x4f')](_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x4f')]);_0x3495a7['where']=qs[_0xa55c('0x31')](_['pick'](_0x2e482a[_0xa55c('0x2a')],_0x5a8897[_0xa55c('0x31')]));_0x3495a7[_0xa55c('0x50')]['VoiceQueueId']=_0xafaf8c['id'];if(_0x2e482a['query'][_0xa55c('0x1a')]){_0x3495a7[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x3495a7[_0xa55c('0x50')],{'$or':_['map'](_0x3495a7[_0xa55c('0x33')],function(_0xd02251){var _0x8ea1c6={};_0x8ea1c6[_0xd02251]={'$like':'%'+_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x8ea1c6;})});}_0x3495a7=_['merge']({},_0x3495a7,_0x2e482a['options']);return db[_0xa55c('0x4a')][_0xa55c('0xf')]({'where':_0x3495a7[_0xa55c('0x50')]})[_0xa55c('0x14')](function(_0x1af9d5){_0x34edc5['count']=_0x1af9d5;if(_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x36')]){_0x3495a7['include']=[{'all':!![]}];}return db[_0xa55c('0x4a')][_0xa55c('0x2b')](_0x3495a7);})[_0xa55c('0x14')](function(_0x4dcb93){_0x34edc5[_0xa55c('0x51')]=_0x4dcb93;return _0x34edc5;});}})[_0xa55c('0x14')](respondWithFilteredResult(_0x5e3a28,_0x3495a7))[_0xa55c('0x2c')](handleError(_0x5e3a28,null));};exports[_0xa55c('0x52')]=function(_0x232143,_0x506f74){var _0x25bd5b={'raw':!![],'where':{}};var _0x2e2cf6={};var _0x4bf233={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xa55c('0x49')]({'where':{'id':_0x232143['params']['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x506f74,null))[_0xa55c('0x14')](function(_0x2f13db){if(_0x2f13db){_0x2e2cf6[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x53')][_0xa55c('0x30')]);_0x2e2cf6[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x232143['query']);_0x2e2cf6[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x2e2cf6[_0xa55c('0x2e')],_0x2e2cf6[_0xa55c('0x2a')]);_0x25bd5b['attributes']=_[_0xa55c('0x32')](_0x2e2cf6[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x232143[_0xa55c('0x2a')]['fields']));_0x25bd5b['attributes']=_0x25bd5b[_0xa55c('0x33')][_0xa55c('0x35')]?_0x25bd5b[_0xa55c('0x33')]:_0x2e2cf6[_0xa55c('0x2e')];if(!_0x232143['query']['hasOwnProperty'](_0xa55c('0x4c'))){_0x25bd5b[_0xa55c('0x4d')]=qs[_0xa55c('0x4d')](_0x232143[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x25bd5b[_0xa55c('0x10')]=qs[_0xa55c('0x10')](_0x232143['query'][_0xa55c('0x10')]);}_0x25bd5b['order']=qs[_0xa55c('0x4f')](_0x232143['query'][_0xa55c('0x4f')]);_0x25bd5b[_0xa55c('0x50')]=qs[_0xa55c('0x31')](_[_0xa55c('0x54')](_0x232143[_0xa55c('0x2a')],_0x2e2cf6[_0xa55c('0x31')]));_0x25bd5b[_0xa55c('0x50')][_0xa55c('0x55')]=_0x2f13db['id'];if(_0x232143['query']['filter']){_0x25bd5b[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x25bd5b[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x25bd5b[_0xa55c('0x33')],function(_0x137728){var _0x47e8e2={};_0x47e8e2[_0x137728]={'$like':'%'+_0x232143[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x47e8e2;})});}_0x25bd5b=_[_0xa55c('0x43')]({},_0x25bd5b,_0x232143[_0xa55c('0x37')]);return db[_0xa55c('0x53')][_0xa55c('0xf')]({'where':_0x25bd5b[_0xa55c('0x50')]})[_0xa55c('0x14')](function(_0x58b670){_0x4bf233[_0xa55c('0xf')]=_0x58b670;if(_0x232143[_0xa55c('0x2a')][_0xa55c('0x36')]){_0x25bd5b[_0xa55c('0x29')]=[{'all':!![]}];}return db[_0xa55c('0x53')]['findAll'](_0x25bd5b);})[_0xa55c('0x14')](function(_0x2ab1f2){_0x4bf233['rows']=_0x2ab1f2;return _0x4bf233;});}})['then'](respondWithFilteredResult(_0x506f74,_0x25bd5b))[_0xa55c('0x2c')](handleError(_0x506f74,null));};exports[_0xa55c('0x56')]=function(_0x5c2229,_0x559e71){var _0x579726={'raw':!![],'where':{}};var _0x5ab79e={};var _0xf8e295={'count':0x0,'rows':[]};return db[_0xa55c('0x26')][_0xa55c('0x49')]({'where':{'id':_0x5c2229[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x559e71,null))[_0xa55c('0x14')](function(_0x568a5b){if(_0x568a5b){_0x5ab79e[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x57')][_0xa55c('0x30')]);_0x5ab79e['query']=_[_0xa55c('0x2f')](_0x5c2229[_0xa55c('0x2a')]);_0x5ab79e[_0xa55c('0x31')]=_['intersection'](_0x5ab79e[_0xa55c('0x2e')],_0x5ab79e['query']);_0x579726['attributes']=_[_0xa55c('0x32')](_0x5ab79e[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x5c2229[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x579726[_0xa55c('0x33')]=_0x579726[_0xa55c('0x33')]['length']?_0x579726['attributes']:_0x5ab79e[_0xa55c('0x2e')];if(!_0x5c2229[_0xa55c('0x2a')][_0xa55c('0x4b')](_0xa55c('0x4c'))){_0x579726[_0xa55c('0x4d')]=qs[_0xa55c('0x4d')](_0x5c2229[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x579726[_0xa55c('0x10')]=qs[_0xa55c('0x10')](_0x5c2229['query'][_0xa55c('0x10')]);}_0x579726[_0xa55c('0x4e')]=qs['sort'](_0x5c2229[_0xa55c('0x2a')]['sort']);_0x579726[_0xa55c('0x50')]=qs[_0xa55c('0x31')](_[_0xa55c('0x54')](_0x5c2229[_0xa55c('0x2a')],_0x5ab79e[_0xa55c('0x31')]));_0x579726['where'][_0xa55c('0x55')]=_0x568a5b['id'];if(_0x5c2229[_0xa55c('0x2a')][_0xa55c('0x1a')]){_0x579726[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x579726[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x579726['attributes'],function(_0x49a307){var _0x5c08e5={};_0x5c08e5[_0x49a307]={'$like':'%'+_0x5c2229[_0xa55c('0x2a')]['filter']+'%'};return _0x5c08e5;})});}_0x579726=_[_0xa55c('0x43')]({},_0x579726,_0x5c2229[_0xa55c('0x37')]);return db[_0xa55c('0x57')][_0xa55c('0xf')]({'where':_0x579726[_0xa55c('0x50')]})['then'](function(_0x253d7a){_0xf8e295['count']=_0x253d7a;if(_0x5c2229[_0xa55c('0x2a')][_0xa55c('0x36')]){_0x579726[_0xa55c('0x29')]=[{'all':!![]}];}return db[_0xa55c('0x57')]['findAll'](_0x579726);})[_0xa55c('0x14')](function(_0x46f8ab){_0xf8e295[_0xa55c('0x51')]=_0x46f8ab;return _0xf8e295;});}})[_0xa55c('0x14')](respondWithFilteredResult(_0x559e71,_0x579726))[_0xa55c('0x2c')](handleError(_0x559e71,null));};exports[_0xa55c('0x58')]=function(_0x270bd0,_0x472c73){var _0x5bae40={'raw':!![],'where':{}};var _0x147962={};var _0x1538dc={'count':0x0,'rows':[]};return db[_0xa55c('0x26')][_0xa55c('0x49')]({'where':{'id':_0x270bd0[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x472c73,null))['then'](function(_0x46124b){if(_0x46124b){_0x147962['model']=_[_0xa55c('0x2f')](db['CmHopperBlack'][_0xa55c('0x30')]);_0x147962[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x270bd0['query']);_0x147962[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x147962[_0xa55c('0x2e')],_0x147962['query']);_0x5bae40[_0xa55c('0x33')]=_['intersection'](_0x147962[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x270bd0['query'][_0xa55c('0x34')]));_0x5bae40['attributes']=_0x5bae40[_0xa55c('0x33')][_0xa55c('0x35')]?_0x5bae40['attributes']:_0x147962[_0xa55c('0x2e')];if(!_0x270bd0[_0xa55c('0x2a')]['hasOwnProperty'](_0xa55c('0x4c'))){_0x5bae40[_0xa55c('0x4d')]=qs['limit'](_0x270bd0[_0xa55c('0x2a')]['limit']);_0x5bae40['offset']=qs[_0xa55c('0x10')](_0x270bd0[_0xa55c('0x2a')][_0xa55c('0x10')]);}_0x5bae40[_0xa55c('0x4e')]=qs['sort'](_0x270bd0[_0xa55c('0x2a')]['sort']);_0x5bae40[_0xa55c('0x50')]=qs['filters'](_['pick'](_0x270bd0['query'],_0x147962[_0xa55c('0x31')]));_0x5bae40['where']['VoiceQueueId']=_0x46124b['id'];if(_0x270bd0[_0xa55c('0x2a')][_0xa55c('0x1a')]){_0x5bae40[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x5bae40[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x5bae40[_0xa55c('0x33')],function(_0x9225d9){var _0x465801={};_0x465801[_0x9225d9]={'$like':'%'+_0x270bd0[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x465801;})});}_0x5bae40=_[_0xa55c('0x43')]({},_0x5bae40,_0x270bd0[_0xa55c('0x37')]);return db['CmHopperBlack'][_0xa55c('0xf')]({'where':_0x5bae40['where']})['then'](function(_0x5c8003){_0x1538dc[_0xa55c('0xf')]=_0x5c8003;if(_0x270bd0['query'][_0xa55c('0x36')]){_0x5bae40['include']=[{'all':!![]}];}return db[_0xa55c('0x59')]['findAll'](_0x5bae40);})['then'](function(_0xfb1954){_0x1538dc['rows']=_0xfb1954;return _0x1538dc;});}})['then'](respondWithFilteredResult(_0x472c73,_0x5bae40))[_0xa55c('0x2c')](handleError(_0x472c73,null));};exports[_0xa55c('0x5a')]=function(_0x4ba496,_0x11349d){var _0x55caeb={};var _0x294e54={};var _0x403dff;var _0x1dcd8a;return db['VoiceQueue']['findOne']({'where':{'id':_0x4ba496[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x11349d,null))[_0xa55c('0x14')](function(_0xfda07f){if(_0xfda07f){_0x403dff=_0xfda07f;_0x294e54[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x5b')][_0xa55c('0x30')]);_0x294e54['query']=_[_0xa55c('0x2f')](_0x4ba496[_0xa55c('0x2a')]);_0x294e54[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x294e54[_0xa55c('0x2e')],_0x294e54[_0xa55c('0x2a')]);_0x55caeb[_0xa55c('0x33')]=_[_0xa55c('0x32')](_0x294e54[_0xa55c('0x2e')],qs['fields'](_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x55caeb[_0xa55c('0x33')]=_0x55caeb['attributes']['length']?_0x55caeb['attributes']:_0x294e54[_0xa55c('0x2e')];_0x55caeb['order']=qs[_0xa55c('0x4f')](_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x4f')]);_0x55caeb[_0xa55c('0x50')]=qs[_0xa55c('0x31')](_[_0xa55c('0x54')](_0x4ba496[_0xa55c('0x2a')],_0x294e54[_0xa55c('0x31')]));if(_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x1a')]){_0x55caeb[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x55caeb[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x55caeb[_0xa55c('0x33')],function(_0x1c7aec){var _0xf0bcac={};_0xf0bcac[_0x1c7aec]={'$like':'%'+_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0xf0bcac;})});}_0x55caeb=_[_0xa55c('0x43')]({},_0x55caeb,_0x4ba496[_0xa55c('0x37')]);return _0x403dff[_0xa55c('0x5a')](_0x55caeb);}})[_0xa55c('0x14')](function(_0x168b3f){if(_0x168b3f){_0x1dcd8a=_0x168b3f['length'];if(!_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x4b')]('nolimit')){_0x55caeb[_0xa55c('0x4d')]=qs[_0xa55c('0x4d')](_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x55caeb[_0xa55c('0x10')]=qs['offset'](_0x4ba496[_0xa55c('0x2a')]['offset']);}return _0x403dff['getTeams'](_0x55caeb);}})[_0xa55c('0x14')](function(_0x1c9903){if(_0x1c9903){return _0x1c9903?{'count':_0x1dcd8a,'rows':_0x1c9903}:null;}})[_0xa55c('0x14')](respondWithResult(_0x11349d,null))[_0xa55c('0x2c')](handleError(_0x11349d,null));};exports[_0xa55c('0x5c')]=function(_0x23b513,_0x1e4464){var _0xd9f634=_0x23b513[_0xa55c('0x3a')][_0xa55c('0x5d')];var _0x1036b3=_[_0xa55c('0x25')](_0xd9f634,'id');return db[_0xa55c('0x5b')][_0xa55c('0x2b')]({'where':{'id':_0x1036b3},'attributes':['id'],'include':[{'model':db[_0xa55c('0x5e')],'as':_0xa55c('0x5f'),'attributes':['id',_0xa55c('0x22'),_0xa55c('0x60'),_0xa55c('0x61'),'interface'],'raw':!![]}]})['then'](function(_0x55a98d){if(_0x55a98d){var _0x200c28=_[_0xa55c('0x62')](_0x55a98d,function(_0x5e41b3){var _0x45b329=_0x5e41b3['get']({'plain':!![]});_0x45b329[_0xa55c('0x5f')]['forEach'](function(_0x3060f2){_0x3060f2[_0xa55c('0x63')]=_[_0xa55c('0x38')](_0xd9f634,{'id':_0x45b329['id']})[_0xa55c('0x63')];});return _0x45b329[_0xa55c('0x5f')];});return db[_0xa55c('0x26')][_0xa55c('0x38')]({'where':{'id':_0x23b513[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](function(_0x665054){return db[_0xa55c('0x64')]['transaction'](function(_0x59f3a4){return _0x665054[_0xa55c('0x5c')](_0x1036b3,{'transaction':_0x59f3a4})['then'](function(){return BPromise[_0xa55c('0x65')](_0xd9f634,function(_0x5447a4){return db[_0xa55c('0x66')][_0xa55c('0x67')]({'TeamId':_0x5447a4['id'],'VoiceQueueId':_0x23b513[_0xa55c('0x2d')]['id'],'penalty':_0x5447a4['penalty']},{'transaction':_0x59f3a4});});})[_0xa55c('0x14')](function(){return BPromise[_0xa55c('0x65')](_0x200c28,function(_0x130c5f){return db['UserVoiceQueue'][_0xa55c('0x68')]({'where':{'UserId':_0x130c5f['id'],'VoiceQueueId':_0x23b513['params']['id']},'defaults':{'penalty':_0x130c5f[_0xa55c('0x63')]},'transaction':_0x59f3a4});});})['then'](function(){return BPromise['each'](_[_0xa55c('0x1a')](_0x200c28,{'online':!![]}),function(_0x40e121){return db[_0xa55c('0x69')]['upsert']({'membername':_0x40e121[_0xa55c('0x22')],'UserId':_0x40e121['id'],'queue_name':_0x665054[_0xa55c('0x22')],'VoiceQueueId':_0x665054['id'],'interface':_[_0xa55c('0x6a')](_0x40e121[_0xa55c('0x6b')])?util[_0xa55c('0x6c')](_0xa55c('0x6d'),_0x40e121[_0xa55c('0x22')]):_0x40e121[_0xa55c('0x6b')],'paused':_0x40e121['voicePause']||![],'penalty':_0x40e121[_0xa55c('0x63')]},{'transaction':_0x59f3a4});});})[_0xa55c('0x14')](function(){_0x200c28[_0xa55c('0x6e')](function(_0x151533){socket[_0xa55c('0x6f')](_0xa55c('0x70'),{'UserId':_0x151533['id'],'VoiceQueueId':_0x665054['id']});});});});});}})[_0xa55c('0x14')](respondWithStatusCode(_0x1e4464,null))[_0xa55c('0x2c')](handleError(_0x1e4464,null));};exports[_0xa55c('0x71')]=function(_0x261087,_0x2ef9dd){return db['Team'][_0xa55c('0x2b')]({'where':{'id':_0x261087['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xa55c('0x5e')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xa55c('0x14')](handleEntityNotFound(_0x2ef9dd,null))['then'](function(_0x302284){var _0x231499=_[_0xa55c('0x25')](_0x302284,'id');var _0x2d3e42=[];var _0x97275b=[];var _0x5c7c60=squel[_0xa55c('0x72')]();_0x5c7c60['field'](_0xa55c('0x73'))['from']('team_has_voice_queues','tq')[_0xa55c('0x74')](_0xa55c('0x75'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xa55c('0x50')](_0xa55c('0x76'),_0x261087[_0xa55c('0x2d')]['id']);for(var _0x485652=0x0;_0x485652<_0x302284['length'];_0x485652+=0x1){let _0x57a1fc=_0x302284[_0x485652];for(var _0x50018c=0x0;_0x50018c<_0x57a1fc[_0xa55c('0x5f')][_0xa55c('0x35')];_0x50018c+=0x1){let _0x4c77c4=_0x57a1fc[_0xa55c('0x5f')][_0x50018c];var _0x1322a0=_0x5c7c60[_0xa55c('0x42')]();_0x1322a0['where'](_0xa55c('0x77'),_0x4c77c4['id']);_0x97275b['push'](db['sequelize']['query'](_0x1322a0[_0xa55c('0x78')](),{'type':db['sequelize'][_0xa55c('0x79')]['SELECT']})[_0xa55c('0x14')](function(_0x21e529){if(_0x21e529[_0xa55c('0x35')]===0x1){return _0x4c77c4['id'];}else{var _0x5063e7=_[_0xa55c('0x7a')](_[_0xa55c('0x25')](_0x21e529,_0xa55c('0x7b')),function(_0x16401f){return _[_0xa55c('0x1d')](_0x231499,_0x16401f);});if(_0x5063e7){return _0x4c77c4['id'];}}}));}}return BPromise[_0xa55c('0x7c')](_0x97275b)[_0xa55c('0x14')](function(_0x34d755){_0x2d3e42=_(_0x2d3e42)[_0xa55c('0x7d')](_0x34d755)['compact']()[_0xa55c('0x1c')]();return db[_0xa55c('0x26')][_0xa55c('0x38')]({'where':{'id':_0x261087[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](function(_0x2c0b71){return db['sequelize'][_0xa55c('0x7e')](function(_0x5bae58){return _0x2c0b71[_0xa55c('0x71')](_0x261087[_0xa55c('0x2a')]['ids'],{'transaction':_0x5bae58})[_0xa55c('0x14')](function(){if(!_[_0xa55c('0x7f')](_0x2d3e42)){return _0x2c0b71['removeAgents'](_0x2d3e42,{'transaction':_0x5bae58})['then'](function(){return db[_0xa55c('0x69')][_0xa55c('0x15')]({'where':{'VoiceQueueId':_0x261087[_0xa55c('0x2d')]['id'],'UserId':_0x2d3e42},'transaction':_0x5bae58});});}})[_0xa55c('0x14')](function(){_0x2d3e42[_0xa55c('0x6e')](function(_0x1a335b){socket[_0xa55c('0x6f')](_0xa55c('0x80'),{'UserId':_0x1a335b,'VoiceQueueId':_0x2c0b71['id']});});});});});});})['then'](respondWithStatusCode(_0x2ef9dd,null))[_0xa55c('0x2c')](handleError(_0x2ef9dd,null));};exports[_0xa55c('0x81')]=function(_0xc8cd97,_0x21a206){var _0x29469d,_0x59a69d;return db[_0xa55c('0x26')]['find']({'where':{'id':_0xc8cd97['params']['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x21a206,null))[_0xa55c('0x14')](function(_0x6fcc){if(_0x6fcc){_0x59a69d=_0x6fcc;return _0x6fcc[_0xa55c('0x81')](_0xc8cd97['body'][_0xa55c('0x82')],_[_0xa55c('0x44')](_0xc8cd97[_0xa55c('0x3a')],[_0xa55c('0x82'),'id'])||{})[_0xa55c('0x83')](function(_0x4295c1){for(var _0x37f242=0x0;_0x37f242<_0xc8cd97[_0xa55c('0x3a')]['ids'][_0xa55c('0x35')];_0x37f242+=0x1){socket[_0xa55c('0x6f')](_0xa55c('0x70'),{'UserId':Number(_0xc8cd97[_0xa55c('0x3a')]['ids'][_0x37f242]),'VoiceQueueId':Number(_0xc8cd97[_0xa55c('0x2d')]['id'])});}return _0x4295c1;});}})[_0xa55c('0x14')](function(_0x65c752){_0x29469d=_0x65c752||[];if(_0x59a69d){return db['User'][_0xa55c('0x2b')]({'where':{'id':_0xc8cd97[_0xa55c('0x3a')][_0xa55c('0x82')]},'attributes':['id',_0xa55c('0x22'),_0xa55c('0x60'),_0xa55c('0x61'),_0xa55c('0x6b')],'raw':!![]});}})['then'](function(_0xcd4f3a){if(!_[_0xa55c('0x7f')](_0xcd4f3a)){var _0x496e8c=[];for(var _0x1c930b=0x0;_0x1c930b<_0xcd4f3a[_0xa55c('0x35')];_0x1c930b++){if(_0xcd4f3a[_0x1c930b][_0xa55c('0x60')]){_0x496e8c['push'](db['UserVoiceQueueRt']['upsert']({'membername':_0xcd4f3a[_0x1c930b][_0xa55c('0x22')],'UserId':_0xcd4f3a[_0x1c930b]['id'],'queue_name':_0x59a69d[_0xa55c('0x22')],'VoiceQueueId':_0x59a69d['id'],'interface':_['isNil'](_0xcd4f3a[_0x1c930b]['interface'])?util[_0xa55c('0x6c')](_0xa55c('0x6d'),_0xcd4f3a[_0x1c930b]['name']):_0xcd4f3a[_0x1c930b]['interface'],'paused':_0xcd4f3a[_0x1c930b][_0xa55c('0x61')]||![],'penalty':_0xc8cd97[_0xa55c('0x3a')][_0xa55c('0x63')]||0x0}));}}return BPromise['all'](_0x496e8c);}})['then'](function(){return _0x29469d;})[_0xa55c('0x14')](respondWithResult(_0x21a206,null))['catch'](handleError(_0x21a206,null));};exports[_0xa55c('0x84')]=function(_0xe0a356,_0x5a4e69){return db[_0xa55c('0x26')]['find']({'where':{'id':_0xe0a356['params']['id']}})['then'](handleEntityNotFound(_0x5a4e69,null))['then'](function(_0x527669){if(_0x527669){return _0x527669[_0xa55c('0x84')](_0xe0a356['query'][_0xa55c('0x82')])[_0xa55c('0x14')](function(){if(_[_0xa55c('0x85')](_0xe0a356['query'][_0xa55c('0x82')])){for(var _0x111ff8=0x0;_0x111ff8<_0xe0a356[_0xa55c('0x2a')][_0xa55c('0x82')][_0xa55c('0x35')];_0x111ff8+=0x1){socket[_0xa55c('0x6f')](_0xa55c('0x80'),{'UserId':Number(_0xe0a356[_0xa55c('0x2a')][_0xa55c('0x82')][_0x111ff8]),'VoiceQueueId':Number(_0xe0a356[_0xa55c('0x2d')]['id'])});}}else{socket['emit'](_0xa55c('0x80'),{'UserId':Number(_0xe0a356[_0xa55c('0x2a')]['ids']),'VoiceQueueId':Number(_0xe0a356[_0xa55c('0x2d')]['id'])});}});}})[_0xa55c('0x14')](function(_0x940871){return db[_0xa55c('0x69')][_0xa55c('0x15')]({'where':{'VoiceQueueId':_0xe0a356[_0xa55c('0x2d')]['id'],'UserId':_0xe0a356[_0xa55c('0x2a')][_0xa55c('0x82')]}})[_0xa55c('0x14')](function(){return _0x940871;});})[_0xa55c('0x14')](respondWithStatusCode(_0x5a4e69,null))[_0xa55c('0x2c')](handleError(_0x5a4e69,null));};exports[_0xa55c('0x86')]=function(_0x262d72,_0x228d12){var _0x16e229={};var _0x5c8713={};var _0x2d03b2;var _0x4b2e75;return db[_0xa55c('0x26')][_0xa55c('0x49')]({'where':{'id':_0x262d72[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x228d12,null))['then'](function(_0x537011){if(_0x537011){_0x2d03b2=_0x537011;_0x5c8713[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db['User'][_0xa55c('0x30')]);_0x5c8713[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x262d72['query']);_0x5c8713[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x5c8713[_0xa55c('0x2e')],_0x5c8713['query']);_0x16e229[_0xa55c('0x33')]=_['intersection'](_0x5c8713[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x262d72[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x16e229[_0xa55c('0x33')]=_0x16e229['attributes'][_0xa55c('0x35')]?_0x16e229[_0xa55c('0x33')]:_0x5c8713[_0xa55c('0x2e')];_0x16e229['order']=qs[_0xa55c('0x4f')](_0x262d72[_0xa55c('0x2a')][_0xa55c('0x4f')]);_0x16e229['where']=qs[_0xa55c('0x31')](_[_0xa55c('0x54')](_0x262d72[_0xa55c('0x2a')],_0x5c8713[_0xa55c('0x31')]));if(_0x262d72[_0xa55c('0x2a')][_0xa55c('0x1a')]){_0x16e229[_0xa55c('0x50')]=_['merge'](_0x16e229[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x16e229[_0xa55c('0x33')],function(_0x100ccb){var _0x531e60={};_0x531e60[_0x100ccb]={'$like':'%'+_0x262d72[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x531e60;})});}_0x16e229=_[_0xa55c('0x43')]({},_0x16e229,_0x262d72[_0xa55c('0x37')]);return _0x2d03b2[_0xa55c('0x86')](_0x16e229);}})[_0xa55c('0x14')](function(_0x243cf3){if(_0x243cf3){_0x4b2e75=_0x243cf3['length'];if(!_0x262d72[_0xa55c('0x2a')][_0xa55c('0x4b')](_0xa55c('0x4c'))){_0x16e229[_0xa55c('0x4d')]=qs[_0xa55c('0x4d')](_0x262d72['query']['limit']);_0x16e229['offset']=qs[_0xa55c('0x10')](_0x262d72[_0xa55c('0x2a')][_0xa55c('0x10')]);}return _0x2d03b2[_0xa55c('0x86')](_0x16e229);}})[_0xa55c('0x14')](function(_0xb22076){if(_0xb22076){return _0xb22076?{'count':_0x4b2e75,'rows':_0xb22076}:null;}})[_0xa55c('0x14')](respondWithResult(_0x228d12,null))[_0xa55c('0x2c')](handleError(_0x228d12,null));};exports['getMembers']=function(_0x35c42c,_0x3b2174){var _0x35375e={};var _0x19a5f1={};var _0x3e7cfa;var _0xd511c0;return db['VoiceQueue'][_0xa55c('0x49')]({'where':{'id':_0x35c42c['params']['id']}})['then'](handleEntityNotFound(_0x3b2174,null))['then'](function(_0x58831d){if(_0x58831d){_0x3e7cfa=_0x58831d;_0x19a5f1[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x69')][_0xa55c('0x30')]);_0x19a5f1[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x35c42c[_0xa55c('0x2a')]);_0x19a5f1[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x19a5f1[_0xa55c('0x2e')],_0x19a5f1[_0xa55c('0x2a')]);_0x35375e['attributes']=_['intersection'](_0x19a5f1[_0xa55c('0x2e')],qs['fields'](_0x35c42c[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x35375e[_0xa55c('0x33')]=_0x35375e[_0xa55c('0x33')][_0xa55c('0x35')]?_0x35375e[_0xa55c('0x33')]:_0x19a5f1[_0xa55c('0x2e')];_0x35375e[_0xa55c('0x4e')]=qs[_0xa55c('0x4f')](_0x35c42c['query'][_0xa55c('0x4f')]);_0x35375e[_0xa55c('0x50')]=qs['filters'](_['pick'](_0x35c42c[_0xa55c('0x2a')],_0x19a5f1[_0xa55c('0x31')]));if(_0x35c42c[_0xa55c('0x2a')]['filter']){_0x35375e[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x35375e[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x35375e['attributes'],function(_0x55459c){var _0x33d58c={};_0x33d58c[_0x55459c]={'$like':'%'+_0x35c42c['query']['filter']+'%'};return _0x33d58c;})});}_0x35375e=_[_0xa55c('0x43')]({},_0x35375e,_0x35c42c[_0xa55c('0x37')]);return _0x3e7cfa[_0xa55c('0x87')](_0x35375e);}})[_0xa55c('0x14')](function(_0x5184ea){if(_0x5184ea){_0xd511c0=_0x5184ea[_0xa55c('0x35')];if(!_0x35c42c[_0xa55c('0x2a')][_0xa55c('0x4b')](_0xa55c('0x4c'))){_0x35375e[_0xa55c('0x4d')]=qs['limit'](_0x35c42c[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x35375e[_0xa55c('0x10')]=qs[_0xa55c('0x10')](_0x35c42c[_0xa55c('0x2a')][_0xa55c('0x10')]);}return _0x3e7cfa[_0xa55c('0x87')](_0x35375e);}})['then'](function(_0x2d5e0e){return _0x2d5e0e?{'count':_0xd511c0,'rows':_0x2d5e0e}:null;})['then'](respondWithResult(_0x3b2174,null))[_0xa55c('0x2c')](handleError(_0x3b2174,null));};exports[_0xa55c('0x88')]=function(_0x3755a7,_0x50663f){var _0x50b42f={};var _0x307b39={};var _0x1319c6;var _0x536e1d;return db['VoiceQueue'][_0xa55c('0x49')]({'where':{'id':_0x3755a7[_0xa55c('0x2d')]['id']}})['then'](handleEntityNotFound(_0x50663f,null))[_0xa55c('0x14')](function(_0x568a42){if(_0x568a42){_0x1319c6=_0x568a42;_0x307b39[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x89')][_0xa55c('0x30')]);_0x307b39['query']=_[_0xa55c('0x2f')](_0x3755a7[_0xa55c('0x2a')]);_0x307b39[_0xa55c('0x31')]=_['intersection'](_0x307b39['model'],_0x307b39[_0xa55c('0x2a')]);_0x50b42f['attributes']=_['intersection'](_0x307b39[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x3755a7[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x50b42f[_0xa55c('0x33')]=_0x50b42f[_0xa55c('0x33')][_0xa55c('0x35')]?_0x50b42f[_0xa55c('0x33')]:_0x307b39[_0xa55c('0x2e')];_0x50b42f[_0xa55c('0x4e')]=qs['sort'](_0x3755a7['query'][_0xa55c('0x4f')]);_0x50b42f[_0xa55c('0x50')]=qs[_0xa55c('0x31')](_[_0xa55c('0x54')](_0x3755a7['query'],_0x307b39[_0xa55c('0x31')]));if(_0x3755a7[_0xa55c('0x2a')][_0xa55c('0x1a')]){_0x50b42f[_0xa55c('0x50')]=_['merge'](_0x50b42f[_0xa55c('0x50')],{'$or':_['map'](_0x50b42f['attributes'],function(_0x545806){var _0x4fbb59={};_0x4fbb59[_0x545806]={'$like':'%'+_0x3755a7[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x4fbb59;})});}_0x50b42f=_['merge']({},_0x50b42f,_0x3755a7[_0xa55c('0x37')]);return _0x1319c6[_0xa55c('0x88')](_0x50b42f);}})[_0xa55c('0x14')](function(_0x3899bd){if(_0x3899bd){_0x536e1d=_0x3899bd[_0xa55c('0x35')];if(!_0x3755a7[_0xa55c('0x2a')]['hasOwnProperty'](_0xa55c('0x4c'))){_0x50b42f[_0xa55c('0x4d')]=qs[_0xa55c('0x4d')](_0x3755a7[_0xa55c('0x2a')]['limit']);_0x50b42f['offset']=qs['offset'](_0x3755a7[_0xa55c('0x2a')][_0xa55c('0x10')]);}return _0x1319c6[_0xa55c('0x88')](_0x50b42f);}})[_0xa55c('0x14')](function(_0x1205cb){if(_0x1205cb){return _0x1205cb?{'count':_0x536e1d,'rows':_0x1205cb}:null;}})[_0xa55c('0x14')](respondWithResult(_0x50663f,null))[_0xa55c('0x2c')](handleError(_0x50663f,null));};exports[_0xa55c('0x8a')]=function(_0x499008,_0x4ef239){var _0x3e3208=moment()[_0xa55c('0x6c')]('YYYY-MM-DD\x20HH:mm:ss');var _0x1e19d6,_0x286b33;return db['VoiceQueue']['find']({'where':{'id':_0x499008[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x4ef239,null))[_0xa55c('0x14')](function(_0x236015){if(_0x236015){_0x286b33=_0x236015;return _0x236015['addLists'](_0x499008['body'][_0xa55c('0x82')],_[_0xa55c('0x44')](_0x499008[_0xa55c('0x3a')],[_0xa55c('0x82'),'id'])||{});}return null;})[_0xa55c('0x83')](function(_0x18e4fd){var _0x185c5b;_0x1e19d6=_0x18e4fd||[];var _0x2511fe=[];if(_0x18e4fd){for(var _0x3ba948=0x0;_0x3ba948<_0x18e4fd[_0xa55c('0x35')];_0x3ba948+=0x1){var _0x5e83e9=_0x18e4fd[_0x3ba948][_0xa55c('0x16')]({'plain':!![]});_0x286b33['dialCheckDuplicateType']=_0x499008[_0xa55c('0x3a')][_0xa55c('0x8b')]?_0x499008[_0xa55c('0x3a')][_0xa55c('0x8b')]:_0x286b33[_0xa55c('0x8b')];switch(_0x286b33[_0xa55c('0x8b')]){case _0xa55c('0x8c'):_0x185c5b=squel[_0xa55c('0x8d')]()[_0xa55c('0x8e')](_0xa55c('0x8f'))[_0xa55c('0x90')]([_0xa55c('0x91'),_0xa55c('0x92'),'ContactId',_0xa55c('0x93'),_0xa55c('0x55'),'createdAt',_0xa55c('0x46')],squel[_0xa55c('0x72')]()[_0xa55c('0x94')]('phone',_0xa55c('0x91'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27','scheduledAt')[_0xa55c('0x94')]('id',_0xa55c('0x95'))['field'](_0x5e83e9[_0xa55c('0x96')]['toString'](),_0xa55c('0x93'))[_0xa55c('0x94')](_0x499008[_0xa55c('0x2d')]['id'][_0xa55c('0x78')](),_0xa55c('0x55'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27',_0xa55c('0x45'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27',_0xa55c('0x46'))[_0xa55c('0x97')](_0xa55c('0x98'))[_0xa55c('0x50')](_0xa55c('0x99'))[_0xa55c('0x50')](_0xa55c('0x9a'),_0x5e83e9[_0xa55c('0x96')]['toString']())[_0xa55c('0x50')]('phone\x20IS\x20NOT\x20NULL')[_0xa55c('0x50')](_0xa55c('0x9b'),squel[_0xa55c('0x72')]()['field'](_0xa55c('0x9c'))[_0xa55c('0x97')](_0xa55c('0x9d'))[_0xa55c('0x50')]('VoiceQueueId\x20=\x20?',_0x499008['params']['id'][_0xa55c('0x78')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0xa55c('0x72')]()[_0xa55c('0x94')]('COALESCE(phone,\x27\x27)')['from']('cm_hopper')[_0xa55c('0x50')](_0xa55c('0x76'),_0x499008['params']['id'][_0xa55c('0x78')]())))[_0xa55c('0x78')]();break;case _0xa55c('0x9e'):_0x185c5b=squel[_0xa55c('0x8d')]()[_0xa55c('0x8e')](_0xa55c('0x8f'))[_0xa55c('0x90')]([_0xa55c('0x91'),_0xa55c('0x92'),_0xa55c('0x95'),_0xa55c('0x93'),_0xa55c('0x55'),'createdAt',_0xa55c('0x46')],squel[_0xa55c('0x72')]()[_0xa55c('0x94')](_0xa55c('0x91'),_0xa55c('0x91'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27',_0xa55c('0x92'))[_0xa55c('0x94')]('id',_0xa55c('0x95'))[_0xa55c('0x94')](_0x5e83e9['CmListId']['toString'](),_0xa55c('0x93'))[_0xa55c('0x94')](_0x499008[_0xa55c('0x2d')]['id'][_0xa55c('0x78')](),_0xa55c('0x55'))['field']('\x27'+_0x3e3208+'\x27',_0xa55c('0x45'))['field']('\x27'+_0x3e3208+'\x27','updatedAt')[_0xa55c('0x97')](_0xa55c('0x98'))[_0xa55c('0x50')](_0xa55c('0x99'))['where'](_0xa55c('0x9a'),_0x5e83e9[_0xa55c('0x96')][_0xa55c('0x78')]())[_0xa55c('0x50')]('phone\x20IS\x20NOT\x20NULL')[_0xa55c('0x50')](_0xa55c('0x9b'),squel[_0xa55c('0x72')]()[_0xa55c('0x94')](_0xa55c('0x9f'))[_0xa55c('0x97')](_0xa55c('0x8f'))[_0xa55c('0x50')](_0xa55c('0x76'),_0x499008[_0xa55c('0x2d')]['id']['toString']())))[_0xa55c('0x78')]();break;default:_0x185c5b=squel[_0xa55c('0x8d')]()[_0xa55c('0x8e')](_0xa55c('0x8f'))[_0xa55c('0x90')]([_0xa55c('0x91'),_0xa55c('0x92'),_0xa55c('0x95'),_0xa55c('0x93'),'VoiceQueueId',_0xa55c('0x45'),'updatedAt'],squel[_0xa55c('0x72')]()[_0xa55c('0x94')](_0xa55c('0x91'),_0xa55c('0x91'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27',_0xa55c('0x92'))[_0xa55c('0x94')]('id',_0xa55c('0x95'))[_0xa55c('0x94')](_0x5e83e9['CmListId']['toString'](),_0xa55c('0x93'))['field'](_0x499008[_0xa55c('0x2d')]['id'][_0xa55c('0x78')](),_0xa55c('0x55'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27','createdAt')[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27','updatedAt')[_0xa55c('0x97')](_0xa55c('0x98'))[_0xa55c('0x50')](_0xa55c('0x99'))[_0xa55c('0x50')](_0xa55c('0x9a'),_0x5e83e9[_0xa55c('0x96')][_0xa55c('0x78')]())[_0xa55c('0x50')]('phone\x20IS\x20NOT\x20NULL'))[_0xa55c('0x78')]();}_0x2511fe[_0xa55c('0xa0')](db[_0xa55c('0x64')]['query'](_0x185c5b));}return BPromise[_0xa55c('0x7c')](_0x2511fe);}})[_0xa55c('0x14')](function(){var _0x4457e9=[];var _0x456cb9=squel[_0xa55c('0x8d')]()[_0xa55c('0x8e')](_0xa55c('0xa1'))[_0xa55c('0x90')]([_0xa55c('0xa2'),_0xa55c('0x91'),'OrderBy',_0xa55c('0x45'),_0xa55c('0x46')],squel[_0xa55c('0x72')]()[_0xa55c('0x94')](_0xa55c('0xa3'))['field']('ci.item')['field']('ci.OrderBy+1')[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27','createdAt')[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27',_0xa55c('0x46'))[_0xa55c('0x97')](_0xa55c('0xa4'),'ci')[_0xa55c('0x74')](_0xa55c('0x8f'),'h',_0xa55c('0xa5'))[_0xa55c('0x50')](_0xa55c('0xa6'),_0x3e3208)[_0xa55c('0x50')](_0xa55c('0xa7'),'PHONE'))[_0xa55c('0x78')]();_0x4457e9[_0xa55c('0xa0')](db[_0xa55c('0x64')]['query'](_0x456cb9));return BPromise['all'](_0x4457e9);})['then'](function(){return _0x1e19d6;})[_0xa55c('0x14')](respondWithResult(_0x4ef239,null))[_0xa55c('0x2c')](handleError(_0x4ef239,null));};exports[_0xa55c('0xa8')]=function(_0x27cd1b,_0x3ed3a5){return db[_0xa55c('0x26')][_0xa55c('0x38')]({'where':{'id':_0x27cd1b[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x3ed3a5,null))[_0xa55c('0x14')](function(_0x3def57){if(_0x3def57){return _0x3def57[_0xa55c('0xa8')](_0x27cd1b[_0xa55c('0x2a')][_0xa55c('0x82')]);}})[_0xa55c('0x14')](function(_0x4f5f1a){if(_0x4f5f1a){return db[_0xa55c('0x4a')]['destroy']({'where':{'ListId':_0x27cd1b[_0xa55c('0x2a')][_0xa55c('0x82')],'VoiceQueueId':_0x27cd1b[_0xa55c('0x2d')]['id']}})['then'](function(){return _0x4f5f1a;});}})['then'](respondWithStatusCode(_0x3ed3a5,null))[_0xa55c('0x2c')](handleError(_0x3ed3a5,null));};exports[_0xa55c('0xa9')]=function(_0x30af02,_0x5ebd8a){var _0x2420da={};var _0x2a4b78={};var _0x1e4c2d;var _0x2bf777;return db[_0xa55c('0x26')][_0xa55c('0x49')]({'where':{'id':_0x30af02[_0xa55c('0x2d')]['id']}})['then'](handleEntityNotFound(_0x5ebd8a,null))[_0xa55c('0x14')](function(_0x266b12){if(_0x266b12){_0x1e4c2d=_0x266b12;_0x2a4b78[_0xa55c('0x2e')]=_['keys'](db[_0xa55c('0x89')]['rawAttributes']);_0x2a4b78[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x30af02['query']);_0x2a4b78[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x2a4b78[_0xa55c('0x2e')],_0x2a4b78['query']);_0x2420da[_0xa55c('0x33')]=_[_0xa55c('0x32')](_0x2a4b78['model'],qs['fields'](_0x30af02[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x2420da[_0xa55c('0x33')]=_0x2420da[_0xa55c('0x33')][_0xa55c('0x35')]?_0x2420da['attributes']:_0x2a4b78[_0xa55c('0x2e')];_0x2420da['order']=qs['sort'](_0x30af02[_0xa55c('0x2a')][_0xa55c('0x4f')]);_0x2420da['where']=qs[_0xa55c('0x31')](_['pick'](_0x30af02[_0xa55c('0x2a')],_0x2a4b78[_0xa55c('0x31')]));if(_0x30af02['query'][_0xa55c('0x1a')]){_0x2420da[_0xa55c('0x50')]=_['merge'](_0x2420da[_0xa55c('0x50')],{'$or':_['map'](_0x2420da['attributes'],function(_0x37273b){var _0x1cd529={};_0x1cd529[_0x37273b]={'$like':'%'+_0x30af02[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x1cd529;})});}_0x2420da=_[_0xa55c('0x43')]({},_0x2420da,_0x30af02[_0xa55c('0x37')]);return _0x1e4c2d[_0xa55c('0xa9')](_0x2420da);}})['then'](function(_0x27e791){if(_0x27e791){_0x2bf777=_0x27e791[_0xa55c('0x35')];if(!_0x30af02['query'][_0xa55c('0x4b')](_0xa55c('0x4c'))){_0x2420da['limit']=qs[_0xa55c('0x4d')](_0x30af02[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x2420da[_0xa55c('0x10')]=qs['offset'](_0x30af02[_0xa55c('0x2a')][_0xa55c('0x10')]);}return _0x1e4c2d[_0xa55c('0xa9')](_0x2420da);}})[_0xa55c('0x14')](function(_0x365331){if(_0x365331){return _0x365331?{'count':_0x2bf777,'rows':_0x365331}:null;}})[_0xa55c('0x14')](respondWithResult(_0x5ebd8a,null))['catch'](handleError(_0x5ebd8a,null));};exports[_0xa55c('0xaa')]=function(_0x4d7cd6,_0x1ca9bd){var _0x2bf932;return db['VoiceQueue']['find']({'where':{'id':_0x4d7cd6[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x1ca9bd,null))[_0xa55c('0x14')](function(_0x3c9d2b){if(_0x3c9d2b){return _0x3c9d2b[_0xa55c('0xaa')](_0x4d7cd6[_0xa55c('0x3a')][_0xa55c('0x82')],_['omit'](_0x4d7cd6[_0xa55c('0x3a')],[_0xa55c('0x82'),'id'])||{});}return null;})[_0xa55c('0x83')](function(_0x158b01){var _0x19f576;_0x2bf932=_0x158b01||[];var _0x10da4b=[];if(_0x158b01){for(var _0x3320ab=0x0;_0x3320ab<_0x158b01[_0xa55c('0x35')];_0x3320ab+=0x1){var _0x298cf5=_0x158b01[_0x3320ab][_0xa55c('0x16')]({'plain':!![]});_0x19f576=squel[_0xa55c('0x8d')]()[_0xa55c('0x8e')](_0xa55c('0xab'))['fromQuery']([_0xa55c('0x91'),'ContactId',_0xa55c('0x93'),_0xa55c('0x55'),'createdAt',_0xa55c('0x46')],squel[_0xa55c('0x72')]()[_0xa55c('0x94')](_0xa55c('0x91'),_0xa55c('0x91'))['field']('id',_0xa55c('0x95'))[_0xa55c('0x94')](_0x298cf5[_0xa55c('0x96')]['toString'](),'ListId')['field'](_0x4d7cd6[_0xa55c('0x2d')]['id'][_0xa55c('0x78')](),'VoiceQueueId')[_0xa55c('0x94')](_0xa55c('0xac'),_0xa55c('0x45'))[_0xa55c('0x94')](_0xa55c('0xac'),'updatedAt')[_0xa55c('0x97')](_0xa55c('0x98'))[_0xa55c('0x50')](_0xa55c('0x99'))[_0xa55c('0x50')]('ListId\x20=\x20?',_0x298cf5['CmListId'][_0xa55c('0x78')]())[_0xa55c('0x50')](_0xa55c('0xad')))['toString']();_0x10da4b[_0xa55c('0xa0')](db[_0xa55c('0x64')][_0xa55c('0x2a')](_0x19f576));}return BPromise[_0xa55c('0x7c')](_0x10da4b);}})[_0xa55c('0x14')](function(){return _0x2bf932;})[_0xa55c('0x14')](respondWithResult(_0x1ca9bd,null))[_0xa55c('0x2c')](handleError(_0x1ca9bd,null));};exports[_0xa55c('0xae')]=function(_0x23862a,_0xb432d1){return db['VoiceQueue'][_0xa55c('0x38')]({'where':{'id':_0x23862a[_0xa55c('0x2d')]['id']}})['then'](handleEntityNotFound(_0xb432d1,null))[_0xa55c('0x14')](function(_0x5bc270){if(_0x5bc270){return _0x5bc270[_0xa55c('0xae')](_0x23862a[_0xa55c('0x2a')][_0xa55c('0x82')]);}})[_0xa55c('0x14')](function(_0x543b4a){if(_0x543b4a){return db[_0xa55c('0x59')]['destroy']({'where':{'ListId':_0x23862a[_0xa55c('0x2a')][_0xa55c('0x82')],'VoiceQueueId':_0x23862a[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](function(){return _0x543b4a;});}})[_0xa55c('0x14')](respondWithStatusCode(_0xb432d1,null))['catch'](handleError(_0xb432d1,null));};
\ No newline at end of file
index 656f8ca..1b0a748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1747=['VoiceQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0x1747,0x178));var _0x7174=function(_0x9c2427,_0x17c865){_0x9c2427=_0x9c2427-0x0;var _0x51984f=_0x1747[_0x9c2427];return _0x51984f;};'use strict';var EventEmitter=require(_0x7174('0x0'));var VoiceQueue=require(_0x7174('0x1'))['db'][_0x7174('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x7174('0x3')](0x0);var events={'afterCreate':_0x7174('0x4'),'afterUpdate':_0x7174('0x5'),'afterDestroy':_0x7174('0x6')};function emitEvent(_0x482e16){return function(_0x523b52,_0x425e18,_0x4f966c){VoiceQueueEvents['emit'](_0x482e16+':'+_0x523b52['id'],_0x523b52);VoiceQueueEvents[_0x7174('0x7')](_0x482e16,_0x523b52);_0x4f966c(null);};}for(var e in events){if(events[_0x7174('0x8')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
+var _0x8115=['VoiceQueue','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0xa6e54f,_0x34dfbe){var _0x70e0c6=function(_0x34054a){while(--_0x34054a){_0xa6e54f['push'](_0xa6e54f['shift']());}};_0x70e0c6(++_0x34dfbe);}(_0x8115,0x1c8));var _0x5811=function(_0x4a07c6,_0x2c6283){_0x4a07c6=_0x4a07c6-0x0;var _0x11eb00=_0x8115[_0x4a07c6];return _0x11eb00;};'use strict';var EventEmitter=require('events');var VoiceQueue=require('../../mysqldb')['db'][_0x5811('0x0')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5811('0x1'),'afterUpdate':_0x5811('0x2'),'afterDestroy':_0x5811('0x3')};function emitEvent(_0x2590aa){return function(_0x251241,_0x23b679,_0x43d966){VoiceQueueEvents[_0x5811('0x4')](_0x2590aa+':'+_0x251241['id'],_0x251241);VoiceQueueEvents[_0x5811('0x4')](_0x2590aa,_0x251241);_0x43d966(null);};}for(var e in events){if(events[_0x5811('0x5')](e)){var event=events[e];VoiceQueue[_0x5811('0x6')](e,emitEvent(event));}}module[_0x5811('0x7')]=VoiceQueueEvents;
\ No newline at end of file
index 4232fec..3a411d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x5d68a2,_0x4304cf){var _0x5b3088=function(_0x25a360){while(--_0x25a360){_0x5d68a2['push'](_0x5d68a2['shift']());}};_0x5b3088(++_0x4304cf);}(_0x70e0,0x17b));var _0x070e=function(_0x4f4d8b,_0x5e424c){_0x4f4d8b=_0x4f4d8b-0x0;var _0x36e31e=_0x70e0[_0x4f4d8b];return _0x36e31e;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x1385fe,_0x55a7d8){var _0x4903e6=function(_0x382ecb){while(--_0x382ecb){_0x1385fe['push'](_0x1385fe['shift']());}};_0x4903e6(++_0x55a7d8);}(_0x70e0,0x17b));var _0x070e=function(_0x4560ba,_0x2bd389){_0x4560ba=_0x4560ba-0x0;var _0x4e7f59=_0x70e0[_0x4560ba];return _0x4e7f59;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ebb62da..b5b5b2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe251=['info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','map','include','attributes','model','debug','ShowVoiceQueue','find','raw','where','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','request','then'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xe251,0xae));var _0x1e25=function(_0x2947d1,_0x5e70b0){_0x2947d1=_0x2947d1-0x0;var _0x2b36a5=_0xe251[_0x2947d1];return _0x2b36a5;};'use strict';var _=require(_0x1e25('0x0'));var util=require(_0x1e25('0x1'));var moment=require(_0x1e25('0x2'));var BPromise=require('bluebird');var rs=require(_0x1e25('0x3'));var fs=require('fs');var Redis=require(_0x1e25('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1e25('0x5'))(_0x1e25('0x6'));var config=require('../../config/environment');var jayson=require(_0x1e25('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0x1e25('0x8')]=_[_0x1e25('0x9')](config[_0x1e25('0x8')],{'host':_0x1e25('0xa'),'port':0x18eb});var socket=require(_0x1e25('0xb'))(new Redis(config[_0x1e25('0x8')]));require(_0x1e25('0xc'))[_0x1e25('0xd')](socket);function respondWithRpcPromise(_0x12ce4b,_0x5266f7,_0x580cfd){return new BPromise(function(_0x39643b,_0x2571f8){return client[_0x1e25('0xe')](_0x12ce4b,_0x580cfd)[_0x1e25('0xf')](function(_0x4c8535){logger[_0x1e25('0x10')](_0x1e25('0x11'),_0x5266f7,_0x1e25('0x12'));logger['debug'](_0x1e25('0x13'),_0x5266f7,_0x1e25('0x12'),JSON[_0x1e25('0x14')](_0x4c8535));if(_0x4c8535['error']){if(_0x4c8535['error']['code']===0x1f4){logger[_0x1e25('0x15')](_0x1e25('0x11'),_0x5266f7,_0x4c8535[_0x1e25('0x15')]['message']);return _0x2571f8(_0x4c8535[_0x1e25('0x15')][_0x1e25('0x16')]);}logger['error'](_0x1e25('0x11'),_0x5266f7,_0x4c8535[_0x1e25('0x15')][_0x1e25('0x16')]);return _0x39643b(_0x4c8535['error'][_0x1e25('0x16')]);}else{logger['info']('VoiceQueue,\x20%s,\x20%s',_0x5266f7,'request\x20sent');_0x39643b(_0x4c8535[_0x1e25('0x17')][_0x1e25('0x16')]);}})[_0x1e25('0x18')](function(_0x73c13){logger[_0x1e25('0x15')](_0x1e25('0x11'),_0x5266f7,_0x73c13);_0x2571f8(_0x73c13);});});}exports[_0x1e25('0x19')]=function(_0x564c57){var _0x4908d4=this;return new Promise(function(_0xb8b4df,_0x288cda){return db[_0x1e25('0x1a')][_0x1e25('0x1b')]({'raw':_0x564c57[_0x1e25('0x1c')]?_0x564c57[_0x1e25('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x564c57[_0x1e25('0x1c')]?_0x564c57[_0x1e25('0x1c')]['where']||null:null,'attributes':_0x564c57[_0x1e25('0x1c')]?_0x564c57[_0x1e25('0x1c')]['attributes']||null:null,'limit':_0x564c57[_0x1e25('0x1c')]?_0x564c57[_0x1e25('0x1c')]['limit']||null:null,'include':_0x564c57[_0x1e25('0x1c')]?_0x564c57[_0x1e25('0x1c')]['include']?_[_0x1e25('0x1d')](_0x564c57[_0x1e25('0x1c')][_0x1e25('0x1e')],function(_0x1c9f07){return{'model':db[_0x1c9f07['model']],'as':_0x1c9f07['as'],'attributes':_0x1c9f07[_0x1e25('0x1f')],'include':_0x1c9f07[_0x1e25('0x1e')]?_[_0x1e25('0x1d')](_0x1c9f07[_0x1e25('0x1e')],function(_0x5932d9){return{'model':db[_0x5932d9[_0x1e25('0x20')]],'as':_0x5932d9['as'],'attributes':_0x5932d9[_0x1e25('0x1f')],'include':_0x5932d9[_0x1e25('0x1e')]?_[_0x1e25('0x1d')](_0x5932d9[_0x1e25('0x1e')],function(_0x153840){return{'model':db[_0x153840['model']],'as':_0x153840['as'],'attributes':_0x153840['attributes']};}):[]};}):[]};}):[]:[]})[_0x1e25('0xf')](function(_0x5f11d7){logger[_0x1e25('0x10')]('GetVoiceQueue',_0x564c57);logger[_0x1e25('0x21')](_0x1e25('0x19'),_0x564c57,JSON[_0x1e25('0x14')](_0x5f11d7));_0xb8b4df(_0x5f11d7);})[_0x1e25('0x18')](function(_0x4b9814){logger[_0x1e25('0x15')](_0x1e25('0x19'),_0x4b9814[_0x1e25('0x16')],_0x564c57);_0x288cda(_0x4908d4[_0x1e25('0x15')](0x1f4,_0x4b9814[_0x1e25('0x16')]));});});};exports[_0x1e25('0x22')]=function(_0x25e7c8){var _0x47a7d8=this;return new Promise(function(_0xd5b302,_0x39e12e){return db[_0x1e25('0x1a')][_0x1e25('0x23')]({'raw':_0x25e7c8[_0x1e25('0x1c')]?_0x25e7c8[_0x1e25('0x1c')][_0x1e25('0x24')]===undefined?!![]:![]:!![],'where':_0x25e7c8['options']?_0x25e7c8[_0x1e25('0x1c')][_0x1e25('0x25')]||null:null,'attributes':_0x25e7c8[_0x1e25('0x1c')]?_0x25e7c8[_0x1e25('0x1c')][_0x1e25('0x1f')]||null:null,'include':_0x25e7c8[_0x1e25('0x1c')]?_0x25e7c8[_0x1e25('0x1c')]['include']?_[_0x1e25('0x1d')](_0x25e7c8[_0x1e25('0x1c')][_0x1e25('0x1e')],function(_0x432a56){return{'model':db[_0x432a56[_0x1e25('0x20')]],'as':_0x432a56['as'],'attributes':_0x432a56[_0x1e25('0x1f')],'include':_0x432a56[_0x1e25('0x1e')]?_['map'](_0x432a56[_0x1e25('0x1e')],function(_0x1f179c){return{'model':db[_0x1f179c['model']],'as':_0x1f179c['as'],'attributes':_0x1f179c[_0x1e25('0x1f')],'include':_0x1f179c[_0x1e25('0x1e')]?_[_0x1e25('0x1d')](_0x1f179c[_0x1e25('0x1e')],function(_0x185cd2){return{'model':db[_0x185cd2[_0x1e25('0x20')]],'as':_0x185cd2['as'],'attributes':_0x185cd2[_0x1e25('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x1e25('0xf')](function(_0x234cff){logger[_0x1e25('0x10')](_0x1e25('0x22'),_0x25e7c8);logger[_0x1e25('0x21')](_0x1e25('0x22'),_0x25e7c8,JSON['stringify'](_0x234cff));_0xd5b302(_0x234cff);})[_0x1e25('0x18')](function(_0x10b3f7){logger['error'](_0x1e25('0x22'),_0x10b3f7['message'],_0x25e7c8);_0x39e12e(_0x47a7d8[_0x1e25('0x15')](0x1f4,_0x10b3f7[_0x1e25('0x16')]));});});};
\ No newline at end of file
+var _0x341c=['error','code','message','VoiceQueue,\x20%s,\x20%s','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','include','map','model','stringify','find','ShowVoiceQueue','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','then','info','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s'];(function(_0xa84046,_0x456128){var _0x156dae=function(_0x2e5bf4){while(--_0x2e5bf4){_0xa84046['push'](_0xa84046['shift']());}};_0x156dae(++_0x456128);}(_0x341c,0x164));var _0xc341=function(_0x2100d6,_0x55362c){_0x2100d6=_0x2100d6-0x0;var _0x298ddd=_0x341c[_0x2100d6];return _0x298ddd;};'use strict';var _=require(_0xc341('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc341('0x1'));var rs=require(_0xc341('0x2'));var fs=require('fs');var Redis=require(_0xc341('0x3'));var db=require(_0xc341('0x4'))['db'];var utils=require(_0xc341('0x5'));var logger=require(_0xc341('0x6'))(_0xc341('0x7'));var config=require('../../config/environment');var jayson=require(_0xc341('0x8'));var client=jayson[_0xc341('0x9')][_0xc341('0xa')]({'port':0x232a});config[_0xc341('0xb')]=_[_0xc341('0xc')](config['redis'],{'host':_0xc341('0xd'),'port':0x18eb});var socket=require(_0xc341('0xe'))(new Redis(config[_0xc341('0xb')]));require(_0xc341('0xf'))[_0xc341('0x10')](socket);function respondWithRpcPromise(_0x3e868d,_0x2d5627,_0x472a29){return new BPromise(function(_0xa20650,_0x219540){return client['request'](_0x3e868d,_0x472a29)[_0xc341('0x11')](function(_0x55af72){logger[_0xc341('0x12')]('VoiceQueue,\x20%s,\x20%s',_0x2d5627,_0xc341('0x13'));logger[_0xc341('0x14')](_0xc341('0x15'),_0x2d5627,_0xc341('0x13'),JSON['stringify'](_0x55af72));if(_0x55af72[_0xc341('0x16')]){if(_0x55af72['error'][_0xc341('0x17')]===0x1f4){logger[_0xc341('0x16')]('VoiceQueue,\x20%s,\x20%s',_0x2d5627,_0x55af72[_0xc341('0x16')][_0xc341('0x18')]);return _0x219540(_0x55af72['error']['message']);}logger[_0xc341('0x16')](_0xc341('0x19'),_0x2d5627,_0x55af72[_0xc341('0x16')]['message']);return _0xa20650(_0x55af72[_0xc341('0x16')][_0xc341('0x18')]);}else{logger[_0xc341('0x12')](_0xc341('0x19'),_0x2d5627,_0xc341('0x13'));_0xa20650(_0x55af72[_0xc341('0x1a')][_0xc341('0x18')]);}})[_0xc341('0x1b')](function(_0x363124){logger[_0xc341('0x16')](_0xc341('0x19'),_0x2d5627,_0x363124);_0x219540(_0x363124);});});}exports[_0xc341('0x1c')]=function(_0x149b8d){var _0x9a769=this;return new Promise(function(_0x2f9a05,_0x3d21aa){return db[_0xc341('0x1d')][_0xc341('0x1e')]({'raw':_0x149b8d[_0xc341('0x1f')]?_0x149b8d[_0xc341('0x1f')][_0xc341('0x20')]===undefined?!![]:![]:!![],'where':_0x149b8d[_0xc341('0x1f')]?_0x149b8d[_0xc341('0x1f')][_0xc341('0x21')]||null:null,'attributes':_0x149b8d[_0xc341('0x1f')]?_0x149b8d[_0xc341('0x1f')][_0xc341('0x22')]||null:null,'limit':_0x149b8d[_0xc341('0x1f')]?_0x149b8d[_0xc341('0x1f')][_0xc341('0x23')]||null:null,'include':_0x149b8d['options']?_0x149b8d[_0xc341('0x1f')][_0xc341('0x24')]?_[_0xc341('0x25')](_0x149b8d['options'][_0xc341('0x24')],function(_0x4b246d){return{'model':db[_0x4b246d[_0xc341('0x26')]],'as':_0x4b246d['as'],'attributes':_0x4b246d[_0xc341('0x22')],'include':_0x4b246d[_0xc341('0x24')]?_[_0xc341('0x25')](_0x4b246d[_0xc341('0x24')],function(_0x5ada7a){return{'model':db[_0x5ada7a[_0xc341('0x26')]],'as':_0x5ada7a['as'],'attributes':_0x5ada7a[_0xc341('0x22')],'include':_0x5ada7a[_0xc341('0x24')]?_[_0xc341('0x25')](_0x5ada7a['include'],function(_0x56034d){return{'model':db[_0x56034d[_0xc341('0x26')]],'as':_0x56034d['as'],'attributes':_0x56034d[_0xc341('0x22')]};}):[]};}):[]};}):[]:[]})[_0xc341('0x11')](function(_0x2d52dc){logger['info']('GetVoiceQueue',_0x149b8d);logger[_0xc341('0x14')](_0xc341('0x1c'),_0x149b8d,JSON[_0xc341('0x27')](_0x2d52dc));_0x2f9a05(_0x2d52dc);})[_0xc341('0x1b')](function(_0x5e480f){logger[_0xc341('0x16')](_0xc341('0x1c'),_0x5e480f[_0xc341('0x18')],_0x149b8d);_0x3d21aa(_0x9a769['error'](0x1f4,_0x5e480f[_0xc341('0x18')]));});});};exports['ShowVoiceQueue']=function(_0x57eb92){var _0x2d98e2=this;return new Promise(function(_0x7302e9,_0x53a1e9){return db['VoiceQueue'][_0xc341('0x28')]({'raw':_0x57eb92[_0xc341('0x1f')]?_0x57eb92[_0xc341('0x1f')][_0xc341('0x20')]===undefined?!![]:![]:!![],'where':_0x57eb92[_0xc341('0x1f')]?_0x57eb92['options']['where']||null:null,'attributes':_0x57eb92['options']?_0x57eb92[_0xc341('0x1f')][_0xc341('0x22')]||null:null,'include':_0x57eb92[_0xc341('0x1f')]?_0x57eb92[_0xc341('0x1f')][_0xc341('0x24')]?_[_0xc341('0x25')](_0x57eb92['options'][_0xc341('0x24')],function(_0x49e015){return{'model':db[_0x49e015['model']],'as':_0x49e015['as'],'attributes':_0x49e015[_0xc341('0x22')],'include':_0x49e015[_0xc341('0x24')]?_[_0xc341('0x25')](_0x49e015[_0xc341('0x24')],function(_0xf92b1a){return{'model':db[_0xf92b1a['model']],'as':_0xf92b1a['as'],'attributes':_0xf92b1a[_0xc341('0x22')],'include':_0xf92b1a[_0xc341('0x24')]?_[_0xc341('0x25')](_0xf92b1a[_0xc341('0x24')],function(_0x1eb1ef){return{'model':db[_0x1eb1ef[_0xc341('0x26')]],'as':_0x1eb1ef['as'],'attributes':_0x1eb1ef[_0xc341('0x22')]};}):[]};}):[]};}):[]:[]})[_0xc341('0x11')](function(_0x1d7c78){logger[_0xc341('0x12')]('ShowVoiceQueue',_0x57eb92);logger[_0xc341('0x14')](_0xc341('0x29'),_0x57eb92,JSON[_0xc341('0x27')](_0x1d7c78));_0x7302e9(_0x1d7c78);})[_0xc341('0x1b')](function(_0x3b0c74){logger['error'](_0xc341('0x29'),_0x3b0c74['message'],_0x57eb92);_0x53a1e9(_0x2d98e2[_0xc341('0x16')](0x1f4,_0x3b0c74['message']));});});};
\ No newline at end of file
index 8f4a618..2dacbfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f56=['save','update','removeListener','register','voiceQueue:','./voiceQueue.events'];(function(_0x288f5e,_0x205edd){var _0x476cc9=function(_0x796f53){while(--_0x796f53){_0x288f5e['push'](_0x288f5e['shift']());}};_0x476cc9(++_0x205edd);}(_0x9f56,0x119));var _0x69f5=function(_0x6e1239,_0x3562ac){_0x6e1239=_0x6e1239-0x0;var _0x418150=_0x9f56[_0x6e1239];return _0x418150;};'use strict';var VoiceQueueEvents=require(_0x69f5('0x0'));var events=[_0x69f5('0x1'),'remove',_0x69f5('0x2')];function createListener(_0x477dd4,_0x419b05){return function(_0x594f1e){_0x419b05['emit'](_0x477dd4,_0x594f1e);};}function removeListener(_0x20d58c,_0x1c395f){return function(){VoiceQueueEvents[_0x69f5('0x3')](_0x20d58c,_0x1c395f);};}exports[_0x69f5('0x4')]=function(_0x41da20){for(var _0x11b4fa=0x0,_0x4af219=events['length'];_0x11b4fa<_0x4af219;_0x11b4fa++){var _0x49e4d6=events[_0x11b4fa];var _0x1be371=createListener(_0x69f5('0x5')+_0x49e4d6,_0x41da20);VoiceQueueEvents['on'](_0x49e4d6,_0x1be371);}};
\ No newline at end of file
+var _0xe897=['./voiceQueue.events','remove','update','emit','removeListener','register','voiceQueue:'];(function(_0x4b68cf,_0x53cfe1){var _0x348ff3=function(_0x1b6ff8){while(--_0x1b6ff8){_0x4b68cf['push'](_0x4b68cf['shift']());}};_0x348ff3(++_0x53cfe1);}(_0xe897,0xa8));var _0x7e89=function(_0x929c7e,_0x38c4cc){_0x929c7e=_0x929c7e-0x0;var _0x5de099=_0xe897[_0x929c7e];return _0x5de099;};'use strict';var VoiceQueueEvents=require(_0x7e89('0x0'));var events=['save',_0x7e89('0x1'),_0x7e89('0x2')];function createListener(_0x3114f6,_0x3a442a){return function(_0x2228c5){_0x3a442a[_0x7e89('0x3')](_0x3114f6,_0x2228c5);};}function removeListener(_0x288ccf,_0x1b2695){return function(){VoiceQueueEvents[_0x7e89('0x4')](_0x288ccf,_0x1b2695);};}exports[_0x7e89('0x5')]=function(_0x5ff6b9){for(var _0x21447c=0x0,_0x16dd63=events['length'];_0x21447c<_0x16dd63;_0x21447c++){var _0x2ed128=events[_0x21447c];var _0x551824=createListener(_0x7e89('0x6')+_0x2ed128,_0x5ff6b9);VoiceQueueEvents['on'](_0x2ed128,_0x551824);}};
\ No newline at end of file
index 7629e2f..39118ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe44e=['/describe','describe','/index','getVoiceQueuesReport','/:id','show','post','create','put','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0xc95742,_0xb1ef83){var _0x51c0fa=function(_0x52a12f){while(--_0x52a12f){_0xc95742['push'](_0xc95742['shift']());}};_0x51c0fa(++_0xb1ef83);}(_0xe44e,0x145));var _0xee44=function(_0x31b6b6,_0x3354aa){_0x31b6b6=_0x31b6b6-0x0;var _0x225ffe=_0xe44e[_0x31b6b6];return _0x225ffe;};'use strict';var multer=require(_0xee44('0x0'));var util=require(_0xee44('0x1'));var path=require(_0xee44('0x2'));var timeout=require(_0xee44('0x3'));var express=require('express');var router=express[_0xee44('0x4')]();var fs_extra=require(_0xee44('0x5'));var auth=require(_0xee44('0x6'));var interaction=require(_0xee44('0x7'));var config=require(_0xee44('0x8'));var controller=require('./voiceQueueReport.controller');router[_0xee44('0x9')]('/',auth[_0xee44('0xa')](),controller['index']);router[_0xee44('0x9')](_0xee44('0xb'),auth[_0xee44('0xa')](),controller[_0xee44('0xc')]);router[_0xee44('0x9')](_0xee44('0xd'),auth[_0xee44('0xa')](),controller[_0xee44('0xe')]);router[_0xee44('0x9')](_0xee44('0xf'),auth['isAuthenticated'](),controller[_0xee44('0x10')]);router[_0xee44('0x11')]('/',auth['isAuthenticated'](),controller[_0xee44('0x12')]);router[_0xee44('0x13')]('/:id',auth[_0xee44('0xa')](),controller['update']);router['delete']('/:id',auth[_0xee44('0xa')](),controller[_0xee44('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xbf11=['connect-timeout','express','Router','../../components/interaction/service','./voiceQueueReport.controller','get','index','isAuthenticated','describe','/index','getVoiceQueuesReport','/:id','show','post','create','put','update','delete','destroy','multer','path'];(function(_0x46d45d,_0xfb8b6a){var _0x46eb47=function(_0x179913){while(--_0x179913){_0x46d45d['push'](_0x46d45d['shift']());}};_0x46eb47(++_0xfb8b6a);}(_0xbf11,0x91));var _0x1bf1=function(_0x283f1a,_0x271f9a){_0x283f1a=_0x283f1a-0x0;var _0x3eeb4c=_0xbf11[_0x283f1a];return _0x3eeb4c;};'use strict';var multer=require(_0x1bf1('0x0'));var util=require('util');var path=require(_0x1bf1('0x1'));var timeout=require(_0x1bf1('0x2'));var express=require(_0x1bf1('0x3'));var router=express[_0x1bf1('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1bf1('0x5'));var config=require('../../config/environment');var controller=require(_0x1bf1('0x6'));router[_0x1bf1('0x7')]('/',auth['isAuthenticated'](),controller[_0x1bf1('0x8')]);router[_0x1bf1('0x7')]('/describe',auth[_0x1bf1('0x9')](),controller[_0x1bf1('0xa')]);router[_0x1bf1('0x7')](_0x1bf1('0xb'),auth[_0x1bf1('0x9')](),controller[_0x1bf1('0xc')]);router[_0x1bf1('0x7')](_0x1bf1('0xd'),auth[_0x1bf1('0x9')](),controller[_0x1bf1('0xe')]);router[_0x1bf1('0xf')]('/',auth[_0x1bf1('0x9')](),controller[_0x1bf1('0x10')]);router[_0x1bf1('0x11')](_0x1bf1('0xd'),auth[_0x1bf1('0x9')](),controller[_0x1bf1('0x12')]);router[_0x1bf1('0x13')](_0x1bf1('0xd'),auth[_0x1bf1('0x9')](),controller[_0x1bf1('0x14')]);module['exports']=router;
\ No newline at end of file
index 2485bbc..473ff24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcec=['sequelize','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x1ed7a0,_0x163e04){var _0x22108f=function(_0x4ed342){while(--_0x4ed342){_0x1ed7a0['push'](_0x1ed7a0['shift']());}};_0x22108f(++_0x163e04);}(_0xdcec,0xf0));var _0xcdce=function(_0x172ed7,_0x3d08fd){_0x172ed7=_0x172ed7-0x0;var _0xfa8f61=_0xdcec[_0x172ed7];return _0xfa8f61;};'use strict';var Sequelize=require(_0xcdce('0x0'));var moment=require('moment');module[_0xcdce('0x1')]={'type':{'type':Sequelize[_0xcdce('0x2')]},'uniqueid':{'type':Sequelize[_0xcdce('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0xcdce('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0xcdce('0x3')],'set':function(_0x2b26cb){var _0x4385dc=moment(_0x2b26cb);var _0x3e8cd9=moment(this[_0xcdce('0x4')]('queuecallerjoinAt'))[_0xcdce('0x5')](_0xcdce('0x6'));var _0x14726e=_0x4385dc[_0xcdce('0x7')](_0x3e8cd9,_0xcdce('0x8'));this[_0xcdce('0x9')](_0xcdce('0xa'),_0x2b26cb);this['setDataValue']('holdtime',_0x14726e||null);}},'position':{'type':Sequelize[_0xcdce('0xb')]},'count':{'type':Sequelize[_0xcdce('0xb')]},'queuecallerabandon':{'type':Sequelize[_0xcdce('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xcdce('0x3')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xcdce('0x3')]},'queuecallerexit':{'type':Sequelize[_0xcdce('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0xcdce('0xd')},'originalposition':{'type':Sequelize[_0xcdce('0xb')]},'channel':{'type':Sequelize[_0xcdce('0x2')]},'connectedlinenum':{'type':Sequelize[_0xcdce('0x2')]},'connectedlinename':{'type':Sequelize[_0xcdce('0x2')]},'accountcode':{'type':Sequelize[_0xcdce('0x2')]},'context':{'type':Sequelize[_0xcdce('0x2')]},'exten':{'type':Sequelize[_0xcdce('0x2')]},'priority':{'type':Sequelize[_0xcdce('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0xcdce('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xcdce('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xcdce('0x2')]},'transfer':{'type':Sequelize[_0xcdce('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xcdce('0x2')],'comment':_0xcdce('0xe')},'transferexten':{'type':Sequelize[_0xcdce('0x2')]},'transferuniqueid':{'type':Sequelize[_0xcdce('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xcdce('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0xcdce('0xb')],'defaultValue':0x0},'note':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3fed=['BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','format','diff','seconds','setDataValue','queuecallerleaveAt','INTEGER'];(function(_0x205837,_0x3bec85){var _0x9b77e8=function(_0x278cfa){while(--_0x278cfa){_0x205837['push'](_0x205837['shift']());}};_0x9b77e8(++_0x3bec85);}(_0x3fed,0x99));var _0xd3fe=function(_0x17a43c,_0x2360d8){_0x17a43c=_0x17a43c-0x0;var _0x3a69dc=_0x3fed[_0x17a43c];return _0x3a69dc;};'use strict';var Sequelize=require(_0xd3fe('0x0'));var moment=require(_0xd3fe('0x1'));module[_0xd3fe('0x2')]={'type':{'type':Sequelize[_0xd3fe('0x3')]},'uniqueid':{'type':Sequelize[_0xd3fe('0x3')]},'calleridnum':{'type':Sequelize[_0xd3fe('0x3')]},'calleridname':{'type':Sequelize[_0xd3fe('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0xd3fe('0x4')],'set':function(_0x3b7974){var _0xfc9f40=moment(_0x3b7974);var _0x1c9a98=moment(this[_0xd3fe('0x5')]('queuecallerjoinAt'))[_0xd3fe('0x6')]('YYYY-MM-DD\x20HH:mm:ss');var _0x1c8d4e=_0xfc9f40[_0xd3fe('0x7')](_0x1c9a98,_0xd3fe('0x8'));this[_0xd3fe('0x9')](_0xd3fe('0xa'),_0x3b7974);this[_0xd3fe('0x9')]('holdtime',_0x1c8d4e||null);}},'position':{'type':Sequelize[_0xd3fe('0xb')]},'count':{'type':Sequelize[_0xd3fe('0xb')]},'queuecallerabandon':{'type':Sequelize[_0xd3fe('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xd3fe('0x4')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xd3fe('0x4')]},'queuecallerexit':{'type':Sequelize[_0xd3fe('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xd3fe('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xd3fe('0x3')],'comment':_0xd3fe('0xd')},'originalposition':{'type':Sequelize[_0xd3fe('0xb')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd3fe('0x3')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xd3fe('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xd3fe('0x3')]},'holdtime':{'type':Sequelize[_0xd3fe('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xd3fe('0x3')]},'transfer':{'type':Sequelize[_0xd3fe('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xd3fe('0xe')},'transferexten':{'type':Sequelize[_0xd3fe('0x3')]},'transferuniqueid':{'type':Sequelize[_0xd3fe('0x3')]},'disposition':{'type':Sequelize[_0xd3fe('0x3')]},'secondDisposition':{'type':Sequelize[_0xd3fe('0x3')]},'thirdDisposition':{'type':Sequelize[_0xd3fe('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0xd3fe('0xb')],'defaultValue':0x0},'note':{'type':Sequelize['STRING']}};
\ No newline at end of file
index bf5873f..da4493e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc207=['papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','error','stack','name','send','index','VoiceQueueReport','rawAttributes','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','find','create','body','describe','getVoiceQueuesReport','rows','eml-format','rimraf','moment','bluebird','mustache','path','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring'];(function(_0x116bd6,_0x518d9b){var _0x4a179c=function(_0x4ce0af){while(--_0x4ce0af){_0x116bd6['push'](_0x116bd6['shift']());}};_0x4a179c(++_0x518d9b);}(_0xc207,0x1c7));var _0x7c20=function(_0x1afd3b,_0x212a08){_0x1afd3b=_0x1afd3b-0x0;var _0x21dd50=_0xc207[_0x1afd3b];return _0x21dd50;};'use strict';var emlformat=require(_0x7c20('0x0'));var rimraf=require(_0x7c20('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7c20('0x2'));var BPromise=require(_0x7c20('0x3'));var Mustache=require(_0x7c20('0x4'));var util=require('util');var path=require(_0x7c20('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7c20('0x6'));var fs=require('fs');var fs_extra=require(_0x7c20('0x7'));var _=require('lodash');var squel=require(_0x7c20('0x8'));var crypto=require(_0x7c20('0x9'));var jsforce=require(_0x7c20('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x7c20('0xb'));var querystring=require(_0x7c20('0xc'));var Papa=require(_0x7c20('0xd'));var Redis=require('ioredis');var authService=require(_0x7c20('0xe'));var qs=require(_0x7c20('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7c20('0x10'))(_0x7c20('0x11'));var utils=require('../../config/utils');var config=require(_0x7c20('0x12'));var licenseUtil=require(_0x7c20('0x13'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x7c20('0x14')](config[_0x7c20('0x15')],{'host':_0x7c20('0x16'),'port':0x18eb});var socket=require(_0x7c20('0x17'))(new Redis(config['redis']));require('./voiceQueueReport.socket')[_0x7c20('0x18')](socket);function respondWithStatusCode(_0x2ce950,_0x3feafa){_0x3feafa=_0x3feafa||0xcc;return function(_0x7ee2f8){if(_0x7ee2f8){return _0x2ce950[_0x7c20('0x19')](_0x3feafa);}return _0x2ce950[_0x7c20('0x1a')](_0x3feafa)[_0x7c20('0x1b')]();};}function respondWithResult(_0x2e1a01,_0x17d08e){_0x17d08e=_0x17d08e||0xc8;return function(_0x5281cd){if(_0x5281cd){return _0x2e1a01[_0x7c20('0x1a')](_0x17d08e)[_0x7c20('0x1c')](_0x5281cd);}};}function respondWithFilteredResult(_0x4efcd2,_0x24d6d6){return function(_0x47fc09){if(_0x47fc09){var _0x19cb42=typeof _0x24d6d6[_0x7c20('0x1d')]==='undefined'&&typeof _0x24d6d6[_0x7c20('0x1e')]===_0x7c20('0x1f');var _0x29fb93=_0x47fc09[_0x7c20('0x20')];var _0x5236e4=_0x19cb42?0x0:_0x24d6d6[_0x7c20('0x1d')];var _0x14b5e1=_0x19cb42?_0x47fc09[_0x7c20('0x20')]:_0x24d6d6[_0x7c20('0x1d')]+_0x24d6d6[_0x7c20('0x1e')];var _0x1cf591;if(_0x14b5e1>=_0x29fb93){_0x14b5e1=_0x29fb93;_0x1cf591=0xc8;}else{_0x1cf591=0xce;}_0x4efcd2[_0x7c20('0x1a')](_0x1cf591);return _0x4efcd2[_0x7c20('0x21')](_0x7c20('0x22'),_0x5236e4+'-'+_0x14b5e1+'/'+_0x29fb93)[_0x7c20('0x1c')](_0x47fc09);}return null;};}function patchUpdates(_0x26ba64){return function(_0x532f62){try{jsonpatch[_0x7c20('0x23')](_0x532f62,_0x26ba64,!![]);}catch(_0x2081e1){return BPromise['reject'](_0x2081e1);}return _0x532f62[_0x7c20('0x24')]();};}function saveUpdates(_0x1a9808,_0x3d8c09){return function(_0x2ad78d){if(_0x2ad78d){return _0x2ad78d[_0x7c20('0x25')](_0x1a9808)[_0x7c20('0x26')](function(_0x4b5065){return _0x4b5065;});}return null;};}function removeEntity(_0x3f8a46,_0x2f5801){return function(_0x55a691){if(_0x55a691){return _0x55a691['destroy']()[_0x7c20('0x26')](function(){_0x3f8a46[_0x7c20('0x1a')](0xcc)[_0x7c20('0x1b')]();});}};}function handleEntityNotFound(_0x2a7031,_0x5a2c2a){return function(_0x28a4e3){if(!_0x28a4e3){_0x2a7031['sendStatus'](0x194);}return _0x28a4e3;};}function handleError(_0x738a85,_0x498f71){_0x498f71=_0x498f71||0x1f4;return function(_0x45e7e8){logger[_0x7c20('0x27')](_0x45e7e8[_0x7c20('0x28')]);if(_0x45e7e8['name']){delete _0x45e7e8[_0x7c20('0x29')];}_0x738a85[_0x7c20('0x1a')](_0x498f71)[_0x7c20('0x2a')](_0x45e7e8);};}exports[_0x7c20('0x2b')]=function(_0x49c376,_0x1a4bce){var _0x1f5f4d={},_0x3a957f={},_0x283850={'count':0x0,'rows':[]};var _0x51f2de=_['map'](db[_0x7c20('0x2c')][_0x7c20('0x2d')],function(_0x31ba49){return{'name':_0x31ba49['fieldName'],'type':_0x31ba49[_0x7c20('0x2e')]['key']};});_0x3a957f[_0x7c20('0x2f')]=_[_0x7c20('0x30')](_0x51f2de,_0x7c20('0x29'));_0x3a957f[_0x7c20('0x31')]=_[_0x7c20('0x32')](_0x49c376[_0x7c20('0x31')]);_0x3a957f[_0x7c20('0x33')]=_[_0x7c20('0x34')](_0x3a957f[_0x7c20('0x2f')],_0x3a957f['query']);_0x1f5f4d[_0x7c20('0x35')]=_[_0x7c20('0x34')](_0x3a957f[_0x7c20('0x2f')],qs[_0x7c20('0x36')](_0x49c376['query'][_0x7c20('0x36')]));_0x1f5f4d[_0x7c20('0x35')]=_0x1f5f4d[_0x7c20('0x35')][_0x7c20('0x37')]?_0x1f5f4d['attributes']:_0x3a957f[_0x7c20('0x2f')];if(!_0x49c376[_0x7c20('0x31')][_0x7c20('0x38')](_0x7c20('0x39'))){_0x1f5f4d['limit']=qs[_0x7c20('0x1e')](_0x49c376['query']['limit']);_0x1f5f4d['offset']=qs[_0x7c20('0x1d')](_0x49c376[_0x7c20('0x31')][_0x7c20('0x1d')]);}_0x1f5f4d[_0x7c20('0x3a')]=qs['sort'](_0x49c376['query'][_0x7c20('0x3b')]);_0x1f5f4d[_0x7c20('0x3c')]=qs['filters'](_[_0x7c20('0x3d')](_0x49c376[_0x7c20('0x31')],_0x3a957f[_0x7c20('0x33')]),_0x51f2de);if(_0x49c376[_0x7c20('0x31')]['filter']){_0x1f5f4d['where']=_[_0x7c20('0x3e')](_0x1f5f4d[_0x7c20('0x3c')],{'$or':_[_0x7c20('0x30')](_0x51f2de,function(_0x4082e5){if(_0x4082e5[_0x7c20('0x2e')]!==_0x7c20('0x3f')){var _0x28b537={};_0x28b537[_0x4082e5[_0x7c20('0x29')]]={'$like':'%'+_0x49c376[_0x7c20('0x31')][_0x7c20('0x40')]+'%'};return _0x28b537;}})});}_0x1f5f4d=_['merge']({},_0x1f5f4d,_0x49c376[_0x7c20('0x41')]);var _0x529998={'where':_0x1f5f4d[_0x7c20('0x3c')]};return db[_0x7c20('0x2c')][_0x7c20('0x20')](_0x529998)['then'](function(_0x3b03cd){_0x283850[_0x7c20('0x20')]=_0x3b03cd;if(_0x49c376[_0x7c20('0x31')][_0x7c20('0x42')]){_0x1f5f4d[_0x7c20('0x43')]=[{'all':!![]}];}return db[_0x7c20('0x2c')][_0x7c20('0x44')](_0x1f5f4d);})[_0x7c20('0x26')](function(_0x3f7ccb){_0x283850['rows']=_0x3f7ccb;return _0x283850;})[_0x7c20('0x26')](respondWithFilteredResult(_0x1a4bce,_0x1f5f4d))[_0x7c20('0x45')](handleError(_0x1a4bce,null));};exports[_0x7c20('0x46')]=function(_0x1a3056,_0x1d2c89){var _0x47af5b={'raw':![],'where':{'id':_0x1a3056[_0x7c20('0x47')]['id']}},_0x5a9f38={};_0x5a9f38[_0x7c20('0x2f')]=_['keys'](db[_0x7c20('0x2c')][_0x7c20('0x2d')]);_0x5a9f38['query']=_[_0x7c20('0x32')](_0x1a3056[_0x7c20('0x31')]);_0x5a9f38[_0x7c20('0x33')]=_[_0x7c20('0x34')](_0x5a9f38['model'],_0x5a9f38[_0x7c20('0x31')]);_0x47af5b[_0x7c20('0x35')]=_[_0x7c20('0x34')](_0x5a9f38[_0x7c20('0x2f')],qs[_0x7c20('0x36')](_0x1a3056[_0x7c20('0x31')]['fields']));_0x47af5b[_0x7c20('0x35')]=_0x47af5b[_0x7c20('0x35')][_0x7c20('0x37')]?_0x47af5b['attributes']:_0x5a9f38['model'];if(_0x1a3056['query'][_0x7c20('0x42')]){_0x47af5b['include']=[{'all':!![]}];}_0x47af5b=_['merge']({},_0x47af5b,_0x1a3056['options']);return db[_0x7c20('0x2c')][_0x7c20('0x48')](_0x47af5b)[_0x7c20('0x26')](handleEntityNotFound(_0x1d2c89,null))[_0x7c20('0x26')](respondWithResult(_0x1d2c89,null))[_0x7c20('0x45')](handleError(_0x1d2c89,null));};exports['create']=function(_0x38dab4,_0x1a473e){return db['VoiceQueueReport'][_0x7c20('0x49')](_0x38dab4[_0x7c20('0x4a')],{})[_0x7c20('0x26')](respondWithResult(_0x1a473e,0xc9))[_0x7c20('0x45')](handleError(_0x1a473e,null));};exports[_0x7c20('0x25')]=function(_0x3cba2d,_0x1dff37){if(_0x3cba2d[_0x7c20('0x4a')]['id']){delete _0x3cba2d[_0x7c20('0x4a')]['id'];}return db['VoiceQueueReport']['find']({'where':{'id':_0x3cba2d[_0x7c20('0x47')]['id']}})[_0x7c20('0x26')](handleEntityNotFound(_0x1dff37,null))[_0x7c20('0x26')](saveUpdates(_0x3cba2d[_0x7c20('0x4a')],null))[_0x7c20('0x26')](respondWithResult(_0x1dff37,null))['catch'](handleError(_0x1dff37,null));};exports['destroy']=function(_0x2c989a,_0x5155e3){return db[_0x7c20('0x2c')][_0x7c20('0x48')]({'where':{'id':_0x2c989a[_0x7c20('0x47')]['id']}})['then'](handleEntityNotFound(_0x5155e3,null))[_0x7c20('0x26')](removeEntity(_0x5155e3,null))['catch'](handleError(_0x5155e3,null));};exports[_0x7c20('0x4b')]=function(_0x4ae7c9,_0xfce831){return db[_0x7c20('0x2c')][_0x7c20('0x4b')]()[_0x7c20('0x26')](respondWithResult(_0xfce831,null))['catch'](handleError(_0xfce831,null));};exports[_0x7c20('0x4c')]=function(_0x2bdc8a,_0x205735){var _0x22bbed={},_0x2f0511={},_0x5ee025={'count':0x0,'rows':[]};_0x2f0511[_0x7c20('0x2f')]=_[_0x7c20('0x32')](db[_0x7c20('0x2c')][_0x7c20('0x2d')]);_0x2f0511['query']=_['keys'](_0x2bdc8a[_0x7c20('0x31')]);_0x2f0511[_0x7c20('0x33')]=_[_0x7c20('0x34')](_0x2f0511[_0x7c20('0x2f')],_0x2f0511[_0x7c20('0x31')]);_0x22bbed[_0x7c20('0x35')]=_[_0x7c20('0x34')](_0x2f0511[_0x7c20('0x2f')],qs[_0x7c20('0x36')](_0x2bdc8a[_0x7c20('0x31')][_0x7c20('0x36')]));_0x22bbed['attributes']=_0x22bbed[_0x7c20('0x35')]['length']?_0x22bbed[_0x7c20('0x35')]:_0x2f0511[_0x7c20('0x2f')];if(!_0x2bdc8a[_0x7c20('0x31')][_0x7c20('0x38')](_0x7c20('0x39'))){_0x22bbed['limit']=qs[_0x7c20('0x1e')](_0x2bdc8a[_0x7c20('0x31')][_0x7c20('0x1e')]);_0x22bbed[_0x7c20('0x1d')]=qs[_0x7c20('0x1d')](_0x2bdc8a[_0x7c20('0x31')][_0x7c20('0x1d')]);}_0x22bbed[_0x7c20('0x3a')]=qs['sort'](_0x2bdc8a['query'][_0x7c20('0x3b')]);_0x22bbed[_0x7c20('0x3c')]=qs[_0x7c20('0x33')](_[_0x7c20('0x3d')](_0x2bdc8a[_0x7c20('0x31')],_0x2f0511[_0x7c20('0x33')]));if(_0x2bdc8a[_0x7c20('0x31')][_0x7c20('0x40')]){_0x22bbed[_0x7c20('0x3c')]=_[_0x7c20('0x3e')](_0x22bbed['where'],{'$or':_[_0x7c20('0x30')](_0x22bbed[_0x7c20('0x35')],function(_0x41a93c){var _0x18a96a={};_0x18a96a[_0x41a93c]={'$like':'%'+_0x2bdc8a[_0x7c20('0x31')][_0x7c20('0x40')]+'%'};return _0x18a96a;})});}_0x22bbed=_['merge']({},_0x22bbed,_0x2bdc8a[_0x7c20('0x41')]);var _0x3b0602={'where':_0x22bbed[_0x7c20('0x3c')]};return db[_0x7c20('0x2c')]['count'](_0x3b0602)[_0x7c20('0x26')](function(_0x3f3594){_0x5ee025[_0x7c20('0x20')]=_0x3f3594;if(_0x2bdc8a[_0x7c20('0x31')][_0x7c20('0x42')]){_0x22bbed[_0x7c20('0x43')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x7c20('0x44')](_0x22bbed);})[_0x7c20('0x26')](function(_0x152548){_0x5ee025[_0x7c20('0x4d')]=_0x152548;return _0x5ee025;})['then'](respondWithFilteredResult(_0x205735,_0x22bbed,_0x7c20('0x4c')))[_0x7c20('0x45')](handleError(_0x205735,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0x6596=['getVoiceQueuesReport','nolimit','sort','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','localhost','socket.io-emitter','redis','./voiceQueueReport.socket','register','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','length','attributes','hasOwnProperty','order','pick','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','merge','create','body','find','describe'];(function(_0x4568b8,_0x122d70){var _0x280fe7=function(_0x11a7cb){while(--_0x11a7cb){_0x4568b8['push'](_0x4568b8['shift']());}};_0x280fe7(++_0x122d70);}(_0x6596,0x1ef));var _0x6659=function(_0xeb8fcc,_0x1eb5fb){_0xeb8fcc=_0xeb8fcc-0x0;var _0x42d72f=_0x6596[_0xeb8fcc];return _0x42d72f;};'use strict';var emlformat=require(_0x6659('0x0'));var rimraf=require(_0x6659('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6659('0x2'));var moment=require(_0x6659('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6659('0x4'));var util=require(_0x6659('0x5'));var path=require(_0x6659('0x6'));var sox=require(_0x6659('0x7'));var csv=require(_0x6659('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6659('0x9'));var _=require(_0x6659('0xa'));var squel=require(_0x6659('0xb'));var crypto=require(_0x6659('0xc'));var jsforce=require(_0x6659('0xd'));var deskjs=require(_0x6659('0xe'));var toCsv=require(_0x6659('0x8'));var querystring=require(_0x6659('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6659('0x10'));var qs=require(_0x6659('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6659('0x12'));var logger=require(_0x6659('0x13'))(_0x6659('0x14'));var utils=require(_0x6659('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x6659('0x16'),'port':0x18eb});var socket=require(_0x6659('0x17'))(new Redis(config[_0x6659('0x18')]));require(_0x6659('0x19'))[_0x6659('0x1a')](socket);function respondWithStatusCode(_0x14776d,_0xcec658){_0xcec658=_0xcec658||0xcc;return function(_0x135391){if(_0x135391){return _0x14776d['sendStatus'](_0xcec658);}return _0x14776d['status'](_0xcec658)[_0x6659('0x1b')]();};}function respondWithResult(_0x2c3eeb,_0x3d76d2){_0x3d76d2=_0x3d76d2||0xc8;return function(_0x302d64){if(_0x302d64){return _0x2c3eeb[_0x6659('0x1c')](_0x3d76d2)['json'](_0x302d64);}};}function respondWithFilteredResult(_0x34e229,_0x554421){return function(_0x5031c3){if(_0x5031c3){var _0x1caece=typeof _0x554421[_0x6659('0x1d')]==='undefined'&&typeof _0x554421['limit']===_0x6659('0x1e');var _0x37f270=_0x5031c3['count'];var _0x503932=_0x1caece?0x0:_0x554421[_0x6659('0x1d')];var _0x4c7ad9=_0x1caece?_0x5031c3[_0x6659('0x1f')]:_0x554421['offset']+_0x554421[_0x6659('0x20')];var _0x3de8ca;if(_0x4c7ad9>=_0x37f270){_0x4c7ad9=_0x37f270;_0x3de8ca=0xc8;}else{_0x3de8ca=0xce;}_0x34e229['status'](_0x3de8ca);return _0x34e229[_0x6659('0x21')](_0x6659('0x22'),_0x503932+'-'+_0x4c7ad9+'/'+_0x37f270)[_0x6659('0x23')](_0x5031c3);}return null;};}function patchUpdates(_0xdaf59d){return function(_0x273134){try{jsonpatch[_0x6659('0x24')](_0x273134,_0xdaf59d,!![]);}catch(_0x562a86){return BPromise[_0x6659('0x25')](_0x562a86);}return _0x273134[_0x6659('0x26')]();};}function saveUpdates(_0x433307,_0x382555){return function(_0x5b2366){if(_0x5b2366){return _0x5b2366[_0x6659('0x27')](_0x433307)[_0x6659('0x28')](function(_0x2b1baf){return _0x2b1baf;});}return null;};}function removeEntity(_0x58c614,_0x439637){return function(_0x8ddd8c){if(_0x8ddd8c){return _0x8ddd8c[_0x6659('0x29')]()[_0x6659('0x28')](function(){_0x58c614[_0x6659('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x31b9c5,_0x40ab9f){return function(_0xbeb66){if(!_0xbeb66){_0x31b9c5[_0x6659('0x2a')](0x194);}return _0xbeb66;};}function handleError(_0x4dc939,_0x336801){_0x336801=_0x336801||0x1f4;return function(_0x12f11c){logger['error'](_0x12f11c[_0x6659('0x2b')]);if(_0x12f11c['name']){delete _0x12f11c[_0x6659('0x2c')];}_0x4dc939[_0x6659('0x1c')](_0x336801)[_0x6659('0x2d')](_0x12f11c);};}exports[_0x6659('0x2e')]=function(_0xed8781,_0x228cb7){var _0x474652={},_0x1de27f={},_0x4380d4={'count':0x0,'rows':[]};var _0x4a8dac=_[_0x6659('0x2f')](db[_0x6659('0x30')][_0x6659('0x31')],function(_0x985cc5){return{'name':_0x985cc5[_0x6659('0x32')],'type':_0x985cc5[_0x6659('0x33')][_0x6659('0x34')]};});_0x1de27f[_0x6659('0x35')]=_[_0x6659('0x2f')](_0x4a8dac,_0x6659('0x2c'));_0x1de27f[_0x6659('0x36')]=_['keys'](_0xed8781[_0x6659('0x36')]);_0x1de27f[_0x6659('0x37')]=_[_0x6659('0x38')](_0x1de27f['model'],_0x1de27f[_0x6659('0x36')]);_0x474652['attributes']=_[_0x6659('0x38')](_0x1de27f[_0x6659('0x35')],qs[_0x6659('0x39')](_0xed8781[_0x6659('0x36')]['fields']));_0x474652['attributes']=_0x474652['attributes'][_0x6659('0x3a')]?_0x474652[_0x6659('0x3b')]:_0x1de27f[_0x6659('0x35')];if(!_0xed8781[_0x6659('0x36')][_0x6659('0x3c')]('nolimit')){_0x474652[_0x6659('0x20')]=qs['limit'](_0xed8781['query'][_0x6659('0x20')]);_0x474652['offset']=qs[_0x6659('0x1d')](_0xed8781[_0x6659('0x36')]['offset']);}_0x474652[_0x6659('0x3d')]=qs['sort'](_0xed8781[_0x6659('0x36')]['sort']);_0x474652['where']=qs[_0x6659('0x37')](_[_0x6659('0x3e')](_0xed8781[_0x6659('0x36')],_0x1de27f[_0x6659('0x37')]),_0x4a8dac);if(_0xed8781['query'][_0x6659('0x3f')]){_0x474652[_0x6659('0x40')]=_['merge'](_0x474652[_0x6659('0x40')],{'$or':_[_0x6659('0x2f')](_0x4a8dac,function(_0x389756){if(_0x389756['type']!==_0x6659('0x41')){var _0x382f0a={};_0x382f0a[_0x389756[_0x6659('0x2c')]]={'$like':'%'+_0xed8781[_0x6659('0x36')]['filter']+'%'};return _0x382f0a;}})});}_0x474652=_['merge']({},_0x474652,_0xed8781[_0x6659('0x42')]);var _0x10ce7e={'where':_0x474652['where']};return db[_0x6659('0x30')][_0x6659('0x1f')](_0x10ce7e)[_0x6659('0x28')](function(_0x2186a5){_0x4380d4[_0x6659('0x1f')]=_0x2186a5;if(_0xed8781[_0x6659('0x36')][_0x6659('0x43')]){_0x474652[_0x6659('0x44')]=[{'all':!![]}];}return db[_0x6659('0x30')][_0x6659('0x45')](_0x474652);})[_0x6659('0x28')](function(_0x3c682a){_0x4380d4[_0x6659('0x46')]=_0x3c682a;return _0x4380d4;})[_0x6659('0x28')](respondWithFilteredResult(_0x228cb7,_0x474652))[_0x6659('0x47')](handleError(_0x228cb7,null));};exports['show']=function(_0x4be10c,_0x4339fe){var _0x671a5b={'raw':![],'where':{'id':_0x4be10c[_0x6659('0x48')]['id']}},_0x1521ab={};_0x1521ab[_0x6659('0x35')]=_['keys'](db[_0x6659('0x30')][_0x6659('0x31')]);_0x1521ab[_0x6659('0x36')]=_[_0x6659('0x49')](_0x4be10c[_0x6659('0x36')]);_0x1521ab[_0x6659('0x37')]=_[_0x6659('0x38')](_0x1521ab[_0x6659('0x35')],_0x1521ab[_0x6659('0x36')]);_0x671a5b[_0x6659('0x3b')]=_['intersection'](_0x1521ab[_0x6659('0x35')],qs['fields'](_0x4be10c['query']['fields']));_0x671a5b[_0x6659('0x3b')]=_0x671a5b[_0x6659('0x3b')][_0x6659('0x3a')]?_0x671a5b[_0x6659('0x3b')]:_0x1521ab[_0x6659('0x35')];if(_0x4be10c[_0x6659('0x36')][_0x6659('0x43')]){_0x671a5b[_0x6659('0x44')]=[{'all':!![]}];}_0x671a5b=_[_0x6659('0x4a')]({},_0x671a5b,_0x4be10c[_0x6659('0x42')]);return db[_0x6659('0x30')]['find'](_0x671a5b)[_0x6659('0x28')](handleEntityNotFound(_0x4339fe,null))[_0x6659('0x28')](respondWithResult(_0x4339fe,null))[_0x6659('0x47')](handleError(_0x4339fe,null));};exports[_0x6659('0x4b')]=function(_0x11d68c,_0x35c46c){return db[_0x6659('0x30')][_0x6659('0x4b')](_0x11d68c['body'],{})[_0x6659('0x28')](respondWithResult(_0x35c46c,0xc9))[_0x6659('0x47')](handleError(_0x35c46c,null));};exports[_0x6659('0x27')]=function(_0x1793ee,_0x1ef237){if(_0x1793ee['body']['id']){delete _0x1793ee[_0x6659('0x4c')]['id'];}return db['VoiceQueueReport'][_0x6659('0x4d')]({'where':{'id':_0x1793ee[_0x6659('0x48')]['id']}})[_0x6659('0x28')](handleEntityNotFound(_0x1ef237,null))[_0x6659('0x28')](saveUpdates(_0x1793ee[_0x6659('0x4c')],null))['then'](respondWithResult(_0x1ef237,null))['catch'](handleError(_0x1ef237,null));};exports['destroy']=function(_0x202e38,_0x24e7e5){return db[_0x6659('0x30')]['find']({'where':{'id':_0x202e38['params']['id']}})['then'](handleEntityNotFound(_0x24e7e5,null))['then'](removeEntity(_0x24e7e5,null))[_0x6659('0x47')](handleError(_0x24e7e5,null));};exports[_0x6659('0x4e')]=function(_0x1aafd2,_0x4771f6){return db[_0x6659('0x30')]['describe']()['then'](respondWithResult(_0x4771f6,null))[_0x6659('0x47')](handleError(_0x4771f6,null));};exports[_0x6659('0x4f')]=function(_0x26d104,_0x332dc2){var _0x2e03ef={},_0x57afeb={},_0x2d272e={'count':0x0,'rows':[]};_0x57afeb[_0x6659('0x35')]=_[_0x6659('0x49')](db[_0x6659('0x30')][_0x6659('0x31')]);_0x57afeb[_0x6659('0x36')]=_[_0x6659('0x49')](_0x26d104[_0x6659('0x36')]);_0x57afeb[_0x6659('0x37')]=_[_0x6659('0x38')](_0x57afeb[_0x6659('0x35')],_0x57afeb[_0x6659('0x36')]);_0x2e03ef[_0x6659('0x3b')]=_[_0x6659('0x38')](_0x57afeb[_0x6659('0x35')],qs['fields'](_0x26d104['query'][_0x6659('0x39')]));_0x2e03ef['attributes']=_0x2e03ef['attributes']['length']?_0x2e03ef[_0x6659('0x3b')]:_0x57afeb[_0x6659('0x35')];if(!_0x26d104['query']['hasOwnProperty'](_0x6659('0x50'))){_0x2e03ef[_0x6659('0x20')]=qs[_0x6659('0x20')](_0x26d104['query']['limit']);_0x2e03ef[_0x6659('0x1d')]=qs[_0x6659('0x1d')](_0x26d104[_0x6659('0x36')][_0x6659('0x1d')]);}_0x2e03ef['order']=qs['sort'](_0x26d104[_0x6659('0x36')][_0x6659('0x51')]);_0x2e03ef[_0x6659('0x40')]=qs[_0x6659('0x37')](_[_0x6659('0x3e')](_0x26d104[_0x6659('0x36')],_0x57afeb[_0x6659('0x37')]));if(_0x26d104[_0x6659('0x36')][_0x6659('0x3f')]){_0x2e03ef['where']=_[_0x6659('0x4a')](_0x2e03ef['where'],{'$or':_['map'](_0x2e03ef[_0x6659('0x3b')],function(_0x15d806){var _0x24dcb1={};_0x24dcb1[_0x15d806]={'$like':'%'+_0x26d104[_0x6659('0x36')][_0x6659('0x3f')]+'%'};return _0x24dcb1;})});}_0x2e03ef=_[_0x6659('0x4a')]({},_0x2e03ef,_0x26d104[_0x6659('0x42')]);var _0x382902={'where':_0x2e03ef[_0x6659('0x40')]};return db['VoiceQueueReport'][_0x6659('0x1f')](_0x382902)['then'](function(_0x4e9148){_0x2d272e[_0x6659('0x1f')]=_0x4e9148;if(_0x26d104[_0x6659('0x36')][_0x6659('0x43')]){_0x2e03ef['include']=[{'all':!![]}];}return db[_0x6659('0x30')][_0x6659('0x45')](_0x2e03ef);})[_0x6659('0x28')](function(_0x571d4f){_0x2d272e[_0x6659('0x46')]=_0x571d4f;return _0x2d272e;})[_0x6659('0x28')](respondWithFilteredResult(_0x332dc2,_0x2e03ef,_0x6659('0x4f')))['catch'](handleError(_0x332dc2,null,_0x6659('0x4f')));};
\ No newline at end of file
index 842ddde..f31576b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62a8=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoiceQueueReport','save','update'];(function(_0x55b52a,_0x50d9d8){var _0x3a9c45=function(_0x5af7a1){while(--_0x5af7a1){_0x55b52a['push'](_0x55b52a['shift']());}};_0x3a9c45(++_0x50d9d8);}(_0x62a8,0x1c7));var _0x862a=function(_0x2bed44,_0x217bf1){_0x2bed44=_0x2bed44-0x0;var _0x11fc5c=_0x62a8[_0x2bed44];return _0x11fc5c;};'use strict';var EventEmitter=require(_0x862a('0x0'));var VoiceQueueReport=require(_0x862a('0x1'))['db'][_0x862a('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x862a('0x3'),'afterUpdate':_0x862a('0x4'),'afterDestroy':_0x862a('0x5')};function emitEvent(_0x453857){return function(_0x294550,_0x527c87,_0x19bb92){VoiceQueueReportEvents['emit'](_0x453857+':'+_0x294550['id'],_0x294550);VoiceQueueReportEvents[_0x862a('0x6')](_0x453857,_0x294550);_0x19bb92(null);};}for(var e in events){if(events[_0x862a('0x7')](e)){var event=events[e];VoiceQueueReport[_0x862a('0x8')](e,emitEvent(event));}}module[_0x862a('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xd6c2=['hasOwnProperty','exports','events','../../mysqldb','VoiceQueueReport','setMaxListeners','save','update','remove','emit'];(function(_0x4b3979,_0xfc8b8f){var _0x1707fc=function(_0x1bc44f){while(--_0x1bc44f){_0x4b3979['push'](_0x4b3979['shift']());}};_0x1707fc(++_0xfc8b8f);}(_0xd6c2,0xb6));var _0x2d6c=function(_0x31ba8c,_0x394bfd){_0x31ba8c=_0x31ba8c-0x0;var _0x51d0e2=_0xd6c2[_0x31ba8c];return _0x51d0e2;};'use strict';var EventEmitter=require(_0x2d6c('0x0'));var VoiceQueueReport=require(_0x2d6c('0x1'))['db'][_0x2d6c('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x2d6c('0x3')](0x0);var events={'afterCreate':_0x2d6c('0x4'),'afterUpdate':_0x2d6c('0x5'),'afterDestroy':_0x2d6c('0x6')};function emitEvent(_0x1a6901){return function(_0x204c41,_0x2b57e8,_0x3ebe21){VoiceQueueReportEvents[_0x2d6c('0x7')](_0x1a6901+':'+_0x204c41['id'],_0x204c41);VoiceQueueReportEvents['emit'](_0x1a6901,_0x204c41);_0x3ebe21(null);};}for(var e in events){if(events[_0x2d6c('0x8')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x2d6c('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
index 7bba6e5..e30c37c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e8=['define','VoiceQueueReport','report_queue','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./voiceQueueReport.attributes','exports'];(function(_0x132787,_0x49aebb){var _0x281428=function(_0x5e354e){while(--_0x5e354e){_0x132787['push'](_0x132787['shift']());}};_0x281428(++_0x49aebb);}(_0x98e8,0x10e));var _0x898e=function(_0x79221a,_0x588c19){_0x79221a=_0x79221a-0x0;var _0x323cee=_0x98e8[_0x79221a];return _0x323cee;};'use strict';var _=require(_0x898e('0x0'));var util=require(_0x898e('0x1'));var logger=require(_0x898e('0x2'))(_0x898e('0x3'));var moment=require('moment');var BPromise=require(_0x898e('0x4'));var rp=require(_0x898e('0x5'));var fs=require('fs');var path=require(_0x898e('0x6'));var rimraf=require('rimraf');var config=require(_0x898e('0x7'));var attributes=require(_0x898e('0x8'));module[_0x898e('0x9')]=function(_0xa016de,_0x37bb10){return _0xa016de[_0x898e('0xa')](_0x898e('0xb'),attributes,{'tableName':_0x898e('0xc'),'paranoid':![],'indexes':[{'fields':[_0x898e('0xd')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a9e=['report_queue','uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','exports','define'];(function(_0x5e9e76,_0x3cb685){var _0x2bc580=function(_0x5a2bd3){while(--_0x5a2bd3){_0x5e9e76['push'](_0x5e9e76['shift']());}};_0x2bc580(++_0x3cb685);}(_0x1a9e,0x7a));var _0xe1a9=function(_0x5dd49a,_0x36c7d7){_0x5dd49a=_0x5dd49a-0x0;var _0x954b72=_0x1a9e[_0x5dd49a];return _0x954b72;};'use strict';var _=require(_0xe1a9('0x0'));var util=require(_0xe1a9('0x1'));var logger=require(_0xe1a9('0x2'))(_0xe1a9('0x3'));var moment=require(_0xe1a9('0x4'));var BPromise=require('bluebird');var rp=require(_0xe1a9('0x5'));var fs=require('fs');var path=require(_0xe1a9('0x6'));var rimraf=require('rimraf');var config=require(_0xe1a9('0x7'));var attributes=require('./voiceQueueReport.attributes');module[_0xe1a9('0x8')]=function(_0x56555d,_0x139da3){return _0x56555d[_0xe1a9('0x9')]('VoiceQueueReport',attributes,{'tableName':_0xe1a9('0xa'),'paranoid':![],'indexes':[{'fields':[_0xe1a9('0xb')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
index 3eb381f..bddbd51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x308e=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','then','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','GetVoiceQueueReport','VoiceQueueReport','options','attributes','limit','include','map','model','catch','CreateVoiceQueueReport','create','body','raw','UpdateVoiceQueueReport','update','where','util','moment','ioredis','../../mysqldb'];(function(_0x14dde2,_0x3ec312){var _0x31418c=function(_0x5aeed3){while(--_0x5aeed3){_0x14dde2['push'](_0x14dde2['shift']());}};_0x31418c(++_0x3ec312);}(_0x308e,0x1e8));var _0xe308=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x308e[_0x543084];return _0x306a57;};'use strict';var _=require('lodash');var util=require(_0xe308('0x0'));var moment=require(_0xe308('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe308('0x2'));var db=require(_0xe308('0x3'))['db'];var utils=require(_0xe308('0x4'));var logger=require(_0xe308('0x5'))(_0xe308('0x6'));var config=require(_0xe308('0x7'));var jayson=require(_0xe308('0x8'));var client=jayson[_0xe308('0x9')][_0xe308('0xa')]({'port':0x232a});config[_0xe308('0xb')]=_[_0xe308('0xc')](config[_0xe308('0xb')],{'host':_0xe308('0xd'),'port':0x18eb});var socket=require(_0xe308('0xe'))(new Redis(config[_0xe308('0xb')]));require(_0xe308('0xf'))['register'](socket);function respondWithRpcPromise(_0x1e800e,_0x21a260,_0x54dcf7){return new BPromise(function(_0x3d067f,_0x27a045){return client['request'](_0x1e800e,_0x54dcf7)[_0xe308('0x10')](function(_0x590235){logger['info'](_0xe308('0x11'),_0x21a260,_0xe308('0x12'));logger[_0xe308('0x13')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x21a260,_0xe308('0x12'),JSON[_0xe308('0x14')](_0x590235));if(_0x590235[_0xe308('0x15')]){if(_0x590235[_0xe308('0x15')][_0xe308('0x16')]===0x1f4){logger[_0xe308('0x15')](_0xe308('0x11'),_0x21a260,_0x590235[_0xe308('0x15')]['message']);return _0x27a045(_0x590235[_0xe308('0x15')][_0xe308('0x17')]);}logger['error'](_0xe308('0x11'),_0x21a260,_0x590235[_0xe308('0x15')][_0xe308('0x17')]);return _0x3d067f(_0x590235[_0xe308('0x15')][_0xe308('0x17')]);}else{logger[_0xe308('0x18')](_0xe308('0x11'),_0x21a260,_0xe308('0x12'));_0x3d067f(_0x590235['result'][_0xe308('0x17')]);}})['catch'](function(_0x14fb77){logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x21a260,_0x14fb77);_0x27a045(_0x14fb77);});});}exports[_0xe308('0x19')]=function(_0x49a574){var _0x1956eb=this;return new Promise(function(_0x2e008f,_0x4757ad){return db[_0xe308('0x1a')]['findAll']({'raw':_0x49a574[_0xe308('0x1b')]?_0x49a574[_0xe308('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x49a574[_0xe308('0x1b')]?_0x49a574[_0xe308('0x1b')]['where']||null:null,'attributes':_0x49a574[_0xe308('0x1b')]?_0x49a574['options'][_0xe308('0x1c')]||null:null,'limit':_0x49a574[_0xe308('0x1b')]?_0x49a574[_0xe308('0x1b')][_0xe308('0x1d')]||null:null,'include':_0x49a574[_0xe308('0x1b')]?_0x49a574['options'][_0xe308('0x1e')]?_[_0xe308('0x1f')](_0x49a574[_0xe308('0x1b')][_0xe308('0x1e')],function(_0x5da4a9){return{'model':db[_0x5da4a9[_0xe308('0x20')]],'as':_0x5da4a9['as'],'attributes':_0x5da4a9[_0xe308('0x1c')],'include':_0x5da4a9['include']?_[_0xe308('0x1f')](_0x5da4a9[_0xe308('0x1e')],function(_0x397154){return{'model':db[_0x397154[_0xe308('0x20')]],'as':_0x397154['as'],'attributes':_0x397154[_0xe308('0x1c')],'include':_0x397154[_0xe308('0x1e')]?_[_0xe308('0x1f')](_0x397154[_0xe308('0x1e')],function(_0x3ebac3){return{'model':db[_0x3ebac3['model']],'as':_0x3ebac3['as'],'attributes':_0x3ebac3['attributes']};}):[]};}):[]};}):[]:[]})[_0xe308('0x10')](function(_0x4e985d){logger[_0xe308('0x18')](_0xe308('0x19'),_0x49a574);logger[_0xe308('0x13')](_0xe308('0x19'),_0x49a574,JSON[_0xe308('0x14')](_0x4e985d));_0x2e008f(_0x4e985d);})[_0xe308('0x21')](function(_0x534d88){logger[_0xe308('0x15')]('GetVoiceQueueReport',_0x534d88[_0xe308('0x17')],_0x49a574);_0x4757ad(_0x1956eb[_0xe308('0x15')](0x1f4,_0x534d88[_0xe308('0x17')]));});});};exports[_0xe308('0x22')]=function(_0x2943d4){var _0x5dc1da=this;return new Promise(function(_0x392b00,_0x3821bb){return db[_0xe308('0x1a')][_0xe308('0x23')](_0x2943d4[_0xe308('0x24')],{'raw':_0x2943d4[_0xe308('0x1b')]?_0x2943d4['options'][_0xe308('0x25')]===undefined?!![]:![]:!![]})['then'](function(_0x4e9431){logger[_0xe308('0x18')](_0xe308('0x22'),_0x2943d4);logger['debug'](_0xe308('0x22'),_0x2943d4,JSON[_0xe308('0x14')](_0x4e9431));_0x392b00(_0x4e9431);})[_0xe308('0x21')](function(_0x4b148b){logger[_0xe308('0x15')](_0xe308('0x22'),_0x4b148b[_0xe308('0x17')],_0x2943d4);_0x3821bb(_0x5dc1da['error'](0x1f4,_0x4b148b[_0xe308('0x17')]));});});};exports[_0xe308('0x26')]=function(_0x41f15c){var _0x183db8=this;return new Promise(function(_0x9ffd07,_0x422a41){return db[_0xe308('0x1a')][_0xe308('0x27')](_0x41f15c[_0xe308('0x24')],{'raw':_0x41f15c[_0xe308('0x1b')]?_0x41f15c[_0xe308('0x1b')][_0xe308('0x25')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41f15c[_0xe308('0x1b')]?_0x41f15c[_0xe308('0x1b')][_0xe308('0x28')]||null:null,'attributes':_0x41f15c[_0xe308('0x1b')]?_0x41f15c['options'][_0xe308('0x1c')]||null:null,'limit':_0x41f15c[_0xe308('0x1b')]?_0x41f15c[_0xe308('0x1b')][_0xe308('0x1d')]||null:null})[_0xe308('0x10')](function(_0xb0ea0b){logger[_0xe308('0x18')](_0xe308('0x26'),_0x41f15c);logger['debug']('UpdateVoiceQueueReport',_0x41f15c,JSON[_0xe308('0x14')](_0xb0ea0b));_0x9ffd07(_0xb0ea0b);})[_0xe308('0x21')](function(_0x32cad9){logger['error'](_0xe308('0x26'),_0x32cad9[_0xe308('0x17')],_0x41f15c);_0x422a41(_0x183db8[_0xe308('0x15')](0x1f4,_0x32cad9[_0xe308('0x17')]));});});};
\ No newline at end of file
+var _0xe2fa=['VoiceQueueReport,\x20%s,\x20%s,\x20%s','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','findAll','options','raw','where','attributes','limit','include','map','model','stringify','VoiceQueueReport','create','body','CreateVoiceQueueReport','debug','UpdateVoiceQueueReport','update','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','request','then','info','request\x20sent'];(function(_0x181144,_0x4e62a8){var _0x576cbd=function(_0x4f4036){while(--_0x4f4036){_0x181144['push'](_0x181144['shift']());}};_0x576cbd(++_0x4e62a8);}(_0xe2fa,0x75));var _0xae2f=function(_0x2fcec9,_0x402240){_0x2fcec9=_0x2fcec9-0x0;var _0x324186=_0xe2fa[_0x2fcec9];return _0x324186;};'use strict';var _=require(_0xae2f('0x0'));var util=require(_0xae2f('0x1'));var moment=require(_0xae2f('0x2'));var BPromise=require(_0xae2f('0x3'));var rs=require(_0xae2f('0x4'));var fs=require('fs');var Redis=require(_0xae2f('0x5'));var db=require(_0xae2f('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xae2f('0x7'));var config=require(_0xae2f('0x8'));var jayson=require(_0xae2f('0x9'));var client=jayson[_0xae2f('0xa')][_0xae2f('0xb')]({'port':0x232a});config[_0xae2f('0xc')]=_[_0xae2f('0xd')](config[_0xae2f('0xc')],{'host':_0xae2f('0xe'),'port':0x18eb});var socket=require(_0xae2f('0xf'))(new Redis(config[_0xae2f('0xc')]));require(_0xae2f('0x10'))['register'](socket);function respondWithRpcPromise(_0x4674a0,_0x3846b0,_0x250a63){return new BPromise(function(_0x1b1d0f,_0x29b8be){return client[_0xae2f('0x11')](_0x4674a0,_0x250a63)[_0xae2f('0x12')](function(_0x3125c9){logger[_0xae2f('0x13')]('VoiceQueueReport,\x20%s,\x20%s',_0x3846b0,_0xae2f('0x14'));logger['debug'](_0xae2f('0x15'),_0x3846b0,_0xae2f('0x14'),JSON['stringify'](_0x3125c9));if(_0x3125c9['error']){if(_0x3125c9[_0xae2f('0x16')][_0xae2f('0x17')]===0x1f4){logger['error'](_0xae2f('0x18'),_0x3846b0,_0x3125c9[_0xae2f('0x16')]['message']);return _0x29b8be(_0x3125c9['error'][_0xae2f('0x19')]);}logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x3846b0,_0x3125c9['error'][_0xae2f('0x19')]);return _0x1b1d0f(_0x3125c9['error'][_0xae2f('0x19')]);}else{logger[_0xae2f('0x13')]('VoiceQueueReport,\x20%s,\x20%s',_0x3846b0,_0xae2f('0x14'));_0x1b1d0f(_0x3125c9[_0xae2f('0x1a')]['message']);}})[_0xae2f('0x1b')](function(_0x3bdb06){logger['error'](_0xae2f('0x18'),_0x3846b0,_0x3bdb06);_0x29b8be(_0x3bdb06);});});}exports[_0xae2f('0x1c')]=function(_0x34fe82){var _0xa8ac7f=this;return new Promise(function(_0x3c57c9,_0x4f6aa9){return db['VoiceQueueReport'][_0xae2f('0x1d')]({'raw':_0x34fe82[_0xae2f('0x1e')]?_0x34fe82[_0xae2f('0x1e')][_0xae2f('0x1f')]===undefined?!![]:![]:!![],'where':_0x34fe82[_0xae2f('0x1e')]?_0x34fe82['options'][_0xae2f('0x20')]||null:null,'attributes':_0x34fe82[_0xae2f('0x1e')]?_0x34fe82[_0xae2f('0x1e')][_0xae2f('0x21')]||null:null,'limit':_0x34fe82[_0xae2f('0x1e')]?_0x34fe82[_0xae2f('0x1e')][_0xae2f('0x22')]||null:null,'include':_0x34fe82[_0xae2f('0x1e')]?_0x34fe82['options'][_0xae2f('0x23')]?_[_0xae2f('0x24')](_0x34fe82[_0xae2f('0x1e')]['include'],function(_0x197e37){return{'model':db[_0x197e37[_0xae2f('0x25')]],'as':_0x197e37['as'],'attributes':_0x197e37['attributes'],'include':_0x197e37[_0xae2f('0x23')]?_[_0xae2f('0x24')](_0x197e37['include'],function(_0x934a6f){return{'model':db[_0x934a6f['model']],'as':_0x934a6f['as'],'attributes':_0x934a6f[_0xae2f('0x21')],'include':_0x934a6f['include']?_[_0xae2f('0x24')](_0x934a6f[_0xae2f('0x23')],function(_0xbf7234){return{'model':db[_0xbf7234['model']],'as':_0xbf7234['as'],'attributes':_0xbf7234[_0xae2f('0x21')]};}):[]};}):[]};}):[]:[]})[_0xae2f('0x12')](function(_0x333477){logger[_0xae2f('0x13')](_0xae2f('0x1c'),_0x34fe82);logger['debug'](_0xae2f('0x1c'),_0x34fe82,JSON[_0xae2f('0x26')](_0x333477));_0x3c57c9(_0x333477);})[_0xae2f('0x1b')](function(_0x54aee6){logger['error'](_0xae2f('0x1c'),_0x54aee6[_0xae2f('0x19')],_0x34fe82);_0x4f6aa9(_0xa8ac7f[_0xae2f('0x16')](0x1f4,_0x54aee6[_0xae2f('0x19')]));});});};exports['CreateVoiceQueueReport']=function(_0x15b1e8){var _0x298dc9=this;return new Promise(function(_0x51a73f,_0x47c840){return db[_0xae2f('0x27')][_0xae2f('0x28')](_0x15b1e8[_0xae2f('0x29')],{'raw':_0x15b1e8[_0xae2f('0x1e')]?_0x15b1e8[_0xae2f('0x1e')][_0xae2f('0x1f')]===undefined?!![]:![]:!![]})[_0xae2f('0x12')](function(_0x3a3cb7){logger[_0xae2f('0x13')](_0xae2f('0x2a'),_0x15b1e8);logger[_0xae2f('0x2b')](_0xae2f('0x2a'),_0x15b1e8,JSON[_0xae2f('0x26')](_0x3a3cb7));_0x51a73f(_0x3a3cb7);})[_0xae2f('0x1b')](function(_0x12258e){logger['error'](_0xae2f('0x2a'),_0x12258e[_0xae2f('0x19')],_0x15b1e8);_0x47c840(_0x298dc9[_0xae2f('0x16')](0x1f4,_0x12258e[_0xae2f('0x19')]));});});};exports[_0xae2f('0x2c')]=function(_0x1ee5dd){var _0x5bf813=this;return new Promise(function(_0x59805d,_0x44907d){return db[_0xae2f('0x27')][_0xae2f('0x2d')](_0x1ee5dd['body'],{'raw':_0x1ee5dd[_0xae2f('0x1e')]?_0x1ee5dd[_0xae2f('0x1e')][_0xae2f('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ee5dd[_0xae2f('0x1e')]?_0x1ee5dd[_0xae2f('0x1e')]['where']||null:null,'attributes':_0x1ee5dd[_0xae2f('0x1e')]?_0x1ee5dd[_0xae2f('0x1e')][_0xae2f('0x21')]||null:null,'limit':_0x1ee5dd['options']?_0x1ee5dd[_0xae2f('0x1e')][_0xae2f('0x22')]||null:null})[_0xae2f('0x12')](function(_0x4d8823){logger[_0xae2f('0x13')](_0xae2f('0x2c'),_0x1ee5dd);logger[_0xae2f('0x2b')](_0xae2f('0x2c'),_0x1ee5dd,JSON[_0xae2f('0x26')](_0x4d8823));_0x59805d(_0x4d8823);})[_0xae2f('0x1b')](function(_0x54bba1){logger[_0xae2f('0x16')](_0xae2f('0x2c'),_0x54bba1[_0xae2f('0x19')],_0x1ee5dd);_0x44907d(_0x5bf813[_0xae2f('0x16')](0x1f4,_0x54bba1['message']));});});};
\ No newline at end of file
index e71a87d..a93a90e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8c4=['save','remove','emit','removeListener','register','length','voiceQueueReport:'];(function(_0xf7e3ad,_0x205c01){var _0x1f2aae=function(_0x134e0d){while(--_0x134e0d){_0xf7e3ad['push'](_0xf7e3ad['shift']());}};_0x1f2aae(++_0x205c01);}(_0xa8c4,0x12d));var _0x4a8c=function(_0x3cfcb9,_0x23afe8){_0x3cfcb9=_0x3cfcb9-0x0;var _0x53435f=_0xa8c4[_0x3cfcb9];return _0x53435f;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x4a8c('0x0'),_0x4a8c('0x1'),'update'];function createListener(_0xcd762c,_0x467ef5){return function(_0x4ddf3b){_0x467ef5[_0x4a8c('0x2')](_0xcd762c,_0x4ddf3b);};}function removeListener(_0x402ceb,_0x3eb6cf){return function(){VoiceQueueReportEvents[_0x4a8c('0x3')](_0x402ceb,_0x3eb6cf);};}exports[_0x4a8c('0x4')]=function(_0x392c01){for(var _0x1e8a2d=0x0,_0x3d05e7=events[_0x4a8c('0x5')];_0x1e8a2d<_0x3d05e7;_0x1e8a2d++){var _0x455f94=events[_0x1e8a2d];var _0x59d4ec=createListener(_0x4a8c('0x6')+_0x455f94,_0x392c01);VoiceQueueReportEvents['on'](_0x455f94,_0x59d4ec);}};
\ No newline at end of file
+var _0xbd50=['length','./voiceQueueReport.events','save','remove','emit'];(function(_0x1d385c,_0xdef29a){var _0x2a5892=function(_0x460673){while(--_0x460673){_0x1d385c['push'](_0x1d385c['shift']());}};_0x2a5892(++_0xdef29a);}(_0xbd50,0x196));var _0x0bd5=function(_0x3d812d,_0x1ed6e9){_0x3d812d=_0x3d812d-0x0;var _0x5703ad=_0xbd50[_0x3d812d];return _0x5703ad;};'use strict';var VoiceQueueReportEvents=require(_0x0bd5('0x0'));var events=[_0x0bd5('0x1'),_0x0bd5('0x2'),'update'];function createListener(_0x44fcb9,_0x167372){return function(_0x37acba){_0x167372[_0x0bd5('0x3')](_0x44fcb9,_0x37acba);};}function removeListener(_0x15620d,_0x4c17ee){return function(){VoiceQueueReportEvents['removeListener'](_0x15620d,_0x4c17ee);};}exports['register']=function(_0x376024){for(var _0x2ef1d0=0x0,_0xcc6cfa=events[_0x0bd5('0x4')];_0x2ef1d0<_0xcc6cfa;_0x2ef1d0++){var _0x1b99f3=events[_0x2ef1d0];var _0x5ebe64=createListener('voiceQueueReport:'+_0x1b99f3,_0x376024);VoiceQueueReportEvents['on'](_0x1b99f3,_0x5ebe64);}};
\ No newline at end of file
index caebbb1..959327d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x850f=['../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x59b32a,_0x278c25){var _0x57483b=function(_0x3b4359){while(--_0x3b4359){_0x59b32a['push'](_0x59b32a['shift']());}};_0x57483b(++_0x278c25);}(_0x850f,0xff));var _0xf850=function(_0x3ab46e,_0x55e6f1){_0x3ab46e=_0x3ab46e-0x0;var _0x59ec21=_0x850f[_0x3ab46e];return _0x59ec21;};'use strict';var multer=require(_0xf850('0x0'));var util=require(_0xf850('0x1'));var path=require(_0xf850('0x2'));var timeout=require(_0xf850('0x3'));var express=require(_0xf850('0x4'));var router=express[_0xf850('0x5')]();var fs_extra=require(_0xf850('0x6'));var auth=require(_0xf850('0x7'));var interaction=require(_0xf850('0x8'));var config=require(_0xf850('0x9'));var controller=require(_0xf850('0xa'));router[_0xf850('0xb')]('/',auth[_0xf850('0xc')](),controller[_0xf850('0xd')]);router[_0xf850('0xb')](_0xf850('0xe'),auth[_0xf850('0xc')](),controller[_0xf850('0xf')]);router[_0xf850('0x10')]('/',auth['isAuthenticated'](),controller[_0xf850('0x11')]);router['put'](_0xf850('0xe'),auth['isAuthenticated'](),controller[_0xf850('0x12')]);router[_0xf850('0x13')](_0xf850('0xe'),auth[_0xf850('0xc')](),controller[_0xf850('0x14')]);module[_0xf850('0x15')]=router;
\ No newline at end of file
+var _0xd605=['get','show','post','create','put','/:id','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','isAuthenticated'];(function(_0xf51c06,_0x388e5b){var _0x1d5420=function(_0x5e077b){while(--_0x5e077b){_0xf51c06['push'](_0xf51c06['shift']());}};_0x1d5420(++_0x388e5b);}(_0xd605,0x1c1));var _0x5d60=function(_0x42415e,_0x147878){_0x42415e=_0x42415e-0x0;var _0x58f9bf=_0xd605[_0x42415e];return _0x58f9bf;};'use strict';var multer=require(_0x5d60('0x0'));var util=require('util');var path=require(_0x5d60('0x1'));var timeout=require(_0x5d60('0x2'));var express=require(_0x5d60('0x3'));var router=express[_0x5d60('0x4')]();var fs_extra=require(_0x5d60('0x5'));var auth=require(_0x5d60('0x6'));var interaction=require(_0x5d60('0x7'));var config=require(_0x5d60('0x8'));var controller=require(_0x5d60('0x9'));router['get']('/',auth[_0x5d60('0xa')](),controller['index']);router[_0x5d60('0xb')]('/:id',auth[_0x5d60('0xa')](),controller[_0x5d60('0xc')]);router[_0x5d60('0xd')]('/',auth[_0x5d60('0xa')](),controller[_0x5d60('0xe')]);router[_0x5d60('0xf')](_0x5d60('0x10'),auth['isAuthenticated'](),controller[_0x5d60('0x11')]);router[_0x5d60('0x12')](_0x5d60('0x10'),auth[_0x5d60('0xa')](),controller['destroy']);module[_0x5d60('0x13')]=router;
\ No newline at end of file
index 4aaf594..b97e462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e62=['literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','moment','STRING','DATE'];(function(_0x1fdead,_0x241323){var _0x2d33d=function(_0x2ebc38){while(--_0x2ebc38){_0x1fdead['push'](_0x1fdead['shift']());}};_0x2d33d(++_0x241323);}(_0x9e62,0x17c));var _0x29e6=function(_0x5277f9,_0x300dfc){_0x5277f9=_0x5277f9-0x0;var _0x20c80f=_0x9e62[_0x5277f9];return _0x20c80f;};'use strict';var Sequelize=require(_0x29e6('0x0'));var moment=require(_0x29e6('0x1'));module['exports']={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x29e6('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x29e6('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x29e6('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x29e6('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x29e6('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x29e6('0x3')],'allowNull':![],'defaultValue':Sequelize[_0x29e6('0x4')](_0x29e6('0x5'))}};
\ No newline at end of file
+var _0x8be2=['DATE','literal','sequelize','moment','exports','STRING'];(function(_0x12b0a2,_0x21ae7a){var _0x264538=function(_0x5c12ce){while(--_0x5c12ce){_0x12b0a2['push'](_0x12b0a2['shift']());}};_0x264538(++_0x21ae7a);}(_0x8be2,0xe6));var _0x28be=function(_0x5b8b97,_0x6b4dfa){_0x5b8b97=_0x5b8b97-0x0;var _0x1fdf84=_0x8be2[_0x5b8b97];return _0x1fdf84;};'use strict';var Sequelize=require(_0x28be('0x0'));var moment=require(_0x28be('0x1'));module[_0x28be('0x2')]={'time':{'type':Sequelize[_0x28be('0x3')]},'callid':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x28be('0x4')],'allowNull':![],'defaultValue':Sequelize[_0x28be('0x5')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
index 1b8c028..57a8c88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4591=['offset','limit','undefined','count','set','json','apply','reject','save','update','destroy','error','stack','name','send','index','VoiceQueuesLog','rawAttributes','fieldName','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','catch','show','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/license/util','sendStatus','status','end'];(function(_0x35f7f5,_0x4e2ee1){var _0x5567a4=function(_0x3e5df0){while(--_0x3e5df0){_0x35f7f5['push'](_0x35f7f5['shift']());}};_0x5567a4(++_0x4e2ee1);}(_0x4591,0x7a));var _0x1459=function(_0xf11cdf,_0x39ba33){_0xf11cdf=_0xf11cdf-0x0;var _0x1c3436=_0x4591[_0xf11cdf];return _0x1c3436;};'use strict';var emlformat=require(_0x1459('0x0'));var rimraf=require(_0x1459('0x1'));var zipdir=require(_0x1459('0x2'));var jsonpatch=require(_0x1459('0x3'));var rp=require('request-promise');var moment=require(_0x1459('0x4'));var BPromise=require(_0x1459('0x5'));var Mustache=require(_0x1459('0x6'));var util=require(_0x1459('0x7'));var path=require(_0x1459('0x8'));var sox=require(_0x1459('0x9'));var csv=require(_0x1459('0xa'));var ejs=require(_0x1459('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1459('0xc'));var crypto=require('crypto');var jsforce=require(_0x1459('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1459('0xe'));var Papa=require(_0x1459('0xf'));var Redis=require(_0x1459('0x10'));var authService=require(_0x1459('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1459('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x1459('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x1459('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x358745,_0x1c363b){_0x1c363b=_0x1c363b||0xcc;return function(_0x4d4780){if(_0x4d4780){return _0x358745[_0x1459('0x15')](_0x1c363b);}return _0x358745[_0x1459('0x16')](_0x1c363b)[_0x1459('0x17')]();};}function respondWithResult(_0x2ca543,_0x350f0a){_0x350f0a=_0x350f0a||0xc8;return function(_0x3ec2d4){if(_0x3ec2d4){return _0x2ca543[_0x1459('0x16')](_0x350f0a)['json'](_0x3ec2d4);}};}function respondWithFilteredResult(_0x352465,_0xc5e3f7){return function(_0x353db4){if(_0x353db4){var _0x52781a=typeof _0xc5e3f7[_0x1459('0x18')]==='undefined'&&typeof _0xc5e3f7[_0x1459('0x19')]===_0x1459('0x1a');var _0x4944f3=_0x353db4[_0x1459('0x1b')];var _0x50e44f=_0x52781a?0x0:_0xc5e3f7[_0x1459('0x18')];var _0x54de5c=_0x52781a?_0x353db4[_0x1459('0x1b')]:_0xc5e3f7[_0x1459('0x18')]+_0xc5e3f7[_0x1459('0x19')];var _0x30ec70;if(_0x54de5c>=_0x4944f3){_0x54de5c=_0x4944f3;_0x30ec70=0xc8;}else{_0x30ec70=0xce;}_0x352465[_0x1459('0x16')](_0x30ec70);return _0x352465[_0x1459('0x1c')]('Content-Range',_0x50e44f+'-'+_0x54de5c+'/'+_0x4944f3)[_0x1459('0x1d')](_0x353db4);}return null;};}function patchUpdates(_0x139958){return function(_0x2acebe){try{jsonpatch[_0x1459('0x1e')](_0x2acebe,_0x139958,!![]);}catch(_0xcf6a4a){return BPromise[_0x1459('0x1f')](_0xcf6a4a);}return _0x2acebe[_0x1459('0x20')]();};}function saveUpdates(_0x3f522f,_0x3dd8d9){return function(_0x530ad6){if(_0x530ad6){return _0x530ad6[_0x1459('0x21')](_0x3f522f)['then'](function(_0x376a61){return _0x376a61;});}return null;};}function removeEntity(_0x2966ed,_0x238b38){return function(_0x7e6c1b){if(_0x7e6c1b){return _0x7e6c1b[_0x1459('0x22')]()['then'](function(){_0x2966ed[_0x1459('0x16')](0xcc)[_0x1459('0x17')]();});}};}function handleEntityNotFound(_0x378823,_0x4c8dc6){return function(_0x830862){if(!_0x830862){_0x378823[_0x1459('0x15')](0x194);}return _0x830862;};}function handleError(_0x56148d,_0xf7bc93){_0xf7bc93=_0xf7bc93||0x1f4;return function(_0x1350a8){logger[_0x1459('0x23')](_0x1350a8[_0x1459('0x24')]);if(_0x1350a8[_0x1459('0x25')]){delete _0x1350a8[_0x1459('0x25')];}_0x56148d[_0x1459('0x16')](_0xf7bc93)[_0x1459('0x26')](_0x1350a8);};}exports[_0x1459('0x27')]=function(_0x388ce0,_0x183a2b){var _0x230a5a={},_0x48a5b1={},_0x5dcb92={'count':0x0,'rows':[]};var _0x32062c=_['map'](db[_0x1459('0x28')][_0x1459('0x29')],function(_0x47c8f8){return{'name':_0x47c8f8[_0x1459('0x2a')],'type':_0x47c8f8[_0x1459('0x2b')][_0x1459('0x2c')]};});_0x48a5b1['model']=_[_0x1459('0x2d')](_0x32062c,_0x1459('0x25'));_0x48a5b1['query']=_[_0x1459('0x2e')](_0x388ce0[_0x1459('0x2f')]);_0x48a5b1[_0x1459('0x30')]=_[_0x1459('0x31')](_0x48a5b1[_0x1459('0x32')],_0x48a5b1[_0x1459('0x2f')]);_0x230a5a[_0x1459('0x33')]=_['intersection'](_0x48a5b1[_0x1459('0x32')],qs[_0x1459('0x34')](_0x388ce0[_0x1459('0x2f')][_0x1459('0x34')]));_0x230a5a['attributes']=_0x230a5a[_0x1459('0x33')][_0x1459('0x35')]?_0x230a5a['attributes']:_0x48a5b1[_0x1459('0x32')];if(!_0x388ce0['query'][_0x1459('0x36')](_0x1459('0x37'))){_0x230a5a[_0x1459('0x19')]=qs[_0x1459('0x19')](_0x388ce0[_0x1459('0x2f')][_0x1459('0x19')]);_0x230a5a[_0x1459('0x18')]=qs[_0x1459('0x18')](_0x388ce0[_0x1459('0x2f')][_0x1459('0x18')]);}_0x230a5a[_0x1459('0x38')]=qs[_0x1459('0x39')](_0x388ce0[_0x1459('0x2f')][_0x1459('0x39')]);_0x230a5a['where']=qs[_0x1459('0x30')](_[_0x1459('0x3a')](_0x388ce0[_0x1459('0x2f')],_0x48a5b1[_0x1459('0x30')]),_0x32062c);if(_0x388ce0['query'][_0x1459('0x3b')]){_0x230a5a[_0x1459('0x3c')]=_[_0x1459('0x3d')](_0x230a5a[_0x1459('0x3c')],{'$or':_[_0x1459('0x2d')](_0x32062c,function(_0x5630db){if(_0x5630db[_0x1459('0x2b')]!==_0x1459('0x3e')){var _0x499e16={};_0x499e16[_0x5630db[_0x1459('0x25')]]={'$like':'%'+_0x388ce0[_0x1459('0x2f')][_0x1459('0x3b')]+'%'};return _0x499e16;}})});}_0x230a5a=_[_0x1459('0x3d')]({},_0x230a5a,_0x388ce0[_0x1459('0x3f')]);var _0x25ba70={'where':_0x230a5a[_0x1459('0x3c')]};return db[_0x1459('0x28')][_0x1459('0x1b')](_0x25ba70)[_0x1459('0x40')](function(_0x4ccea6){_0x5dcb92[_0x1459('0x1b')]=_0x4ccea6;if(_0x388ce0[_0x1459('0x2f')][_0x1459('0x41')]){_0x230a5a['include']=[{'all':!![]}];}return db['VoiceQueuesLog']['findAll'](_0x230a5a);})['then'](function(_0x221d72){_0x5dcb92['rows']=_0x221d72;return _0x5dcb92;})[_0x1459('0x40')](respondWithFilteredResult(_0x183a2b,_0x230a5a))[_0x1459('0x42')](handleError(_0x183a2b,null));};exports[_0x1459('0x43')]=function(_0x4289b0,_0x11e42b){var _0x520166={'raw':!![],'where':{'id':_0x4289b0[_0x1459('0x44')]['id']}},_0x5a931c={};_0x5a931c['model']=_['keys'](db[_0x1459('0x28')][_0x1459('0x29')]);_0x5a931c['query']=_[_0x1459('0x2e')](_0x4289b0[_0x1459('0x2f')]);_0x5a931c[_0x1459('0x30')]=_[_0x1459('0x31')](_0x5a931c[_0x1459('0x32')],_0x5a931c['query']);_0x520166['attributes']=_[_0x1459('0x31')](_0x5a931c['model'],qs[_0x1459('0x34')](_0x4289b0[_0x1459('0x2f')]['fields']));_0x520166[_0x1459('0x33')]=_0x520166[_0x1459('0x33')]['length']?_0x520166['attributes']:_0x5a931c[_0x1459('0x32')];if(_0x4289b0[_0x1459('0x2f')][_0x1459('0x41')]){_0x520166[_0x1459('0x45')]=[{'all':!![]}];}_0x520166=_['merge']({},_0x520166,_0x4289b0['options']);return db[_0x1459('0x28')][_0x1459('0x46')](_0x520166)['then'](handleEntityNotFound(_0x11e42b,null))[_0x1459('0x40')](respondWithResult(_0x11e42b,null))[_0x1459('0x42')](handleError(_0x11e42b,null));};exports[_0x1459('0x47')]=function(_0x17de3c,_0x2eace4){return db[_0x1459('0x28')]['create'](_0x17de3c[_0x1459('0x48')],{})[_0x1459('0x40')](respondWithResult(_0x2eace4,0xc9))['catch'](handleError(_0x2eace4,null));};exports[_0x1459('0x21')]=function(_0x6877cc,_0x1f3623){if(_0x6877cc[_0x1459('0x48')]['id']){delete _0x6877cc['body']['id'];}return db[_0x1459('0x28')][_0x1459('0x46')]({'where':{'id':_0x6877cc['params']['id']}})[_0x1459('0x40')](handleEntityNotFound(_0x1f3623,null))[_0x1459('0x40')](saveUpdates(_0x6877cc[_0x1459('0x48')],null))[_0x1459('0x40')](respondWithResult(_0x1f3623,null))[_0x1459('0x42')](handleError(_0x1f3623,null));};exports['destroy']=function(_0x28c125,_0x1f979a){return db['VoiceQueuesLog'][_0x1459('0x46')]({'where':{'id':_0x28c125[_0x1459('0x44')]['id']}})[_0x1459('0x40')](handleEntityNotFound(_0x1f979a,null))[_0x1459('0x40')](removeEntity(_0x1f979a,null))['catch'](handleError(_0x1f979a,null));};
\ No newline at end of file
+var _0xf2dd=['path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','VoiceQueuesLog','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','type','VIRTUAL','options','includeAll','include','rows','show','params','find','create','catch','body','rimraf','zip-dir','fast-json-patch','moment','mustache','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf2dd,0x1aa));var _0xdf2d=function(_0xc7348b,_0x145880){_0xc7348b=_0xc7348b-0x0;var _0x307cec=_0xf2dd[_0xc7348b];return _0x307cec;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdf2d('0x0'));var zipdir=require(_0xdf2d('0x1'));var jsonpatch=require(_0xdf2d('0x2'));var rp=require('request-promise');var moment=require(_0xdf2d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xdf2d('0x4'));var util=require(_0xdf2d('0x5'));var path=require(_0xdf2d('0x6'));var sox=require('sox');var csv=require(_0xdf2d('0x7'));var ejs=require(_0xdf2d('0x8'));var fs=require('fs');var fs_extra=require(_0xdf2d('0x9'));var _=require(_0xdf2d('0xa'));var squel=require(_0xdf2d('0xb'));var crypto=require(_0xdf2d('0xc'));var jsforce=require(_0xdf2d('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xdf2d('0x7'));var querystring=require(_0xdf2d('0xe'));var Papa=require('papaparse');var Redis=require(_0xdf2d('0xf'));var authService=require(_0xdf2d('0x10'));var qs=require(_0xdf2d('0x11'));var as=require(_0xdf2d('0x12'));var hardwareService=require(_0xdf2d('0x13'));var logger=require(_0xdf2d('0x14'))(_0xdf2d('0x15'));var utils=require('../../config/utils');var config=require(_0xdf2d('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xdf2d('0x17'))['db'];function respondWithStatusCode(_0xa86ce8,_0x41c256){_0x41c256=_0x41c256||0xcc;return function(_0x5a7bd5){if(_0x5a7bd5){return _0xa86ce8['sendStatus'](_0x41c256);}return _0xa86ce8['status'](_0x41c256)[_0xdf2d('0x18')]();};}function respondWithResult(_0x4f5a40,_0x52fa69){_0x52fa69=_0x52fa69||0xc8;return function(_0x115325){if(_0x115325){return _0x4f5a40[_0xdf2d('0x19')](_0x52fa69)[_0xdf2d('0x1a')](_0x115325);}};}function respondWithFilteredResult(_0x5b4498,_0x3c2ec4){return function(_0x3950a3){if(_0x3950a3){var _0x3c312a=typeof _0x3c2ec4[_0xdf2d('0x1b')]==='undefined'&&typeof _0x3c2ec4[_0xdf2d('0x1c')]==='undefined';var _0x183d11=_0x3950a3[_0xdf2d('0x1d')];var _0x4332c4=_0x3c312a?0x0:_0x3c2ec4[_0xdf2d('0x1b')];var _0x4f3dcc=_0x3c312a?_0x3950a3[_0xdf2d('0x1d')]:_0x3c2ec4['offset']+_0x3c2ec4[_0xdf2d('0x1c')];var _0x2f1ac8;if(_0x4f3dcc>=_0x183d11){_0x4f3dcc=_0x183d11;_0x2f1ac8=0xc8;}else{_0x2f1ac8=0xce;}_0x5b4498[_0xdf2d('0x19')](_0x2f1ac8);return _0x5b4498[_0xdf2d('0x1e')](_0xdf2d('0x1f'),_0x4332c4+'-'+_0x4f3dcc+'/'+_0x183d11)[_0xdf2d('0x1a')](_0x3950a3);}return null;};}function patchUpdates(_0x45812a){return function(_0x58595e){try{jsonpatch[_0xdf2d('0x20')](_0x58595e,_0x45812a,!![]);}catch(_0x5a2c09){return BPromise[_0xdf2d('0x21')](_0x5a2c09);}return _0x58595e[_0xdf2d('0x22')]();};}function saveUpdates(_0x9672ea,_0x3d365b){return function(_0x275e92){if(_0x275e92){return _0x275e92[_0xdf2d('0x23')](_0x9672ea)[_0xdf2d('0x24')](function(_0x1e745b){return _0x1e745b;});}return null;};}function removeEntity(_0x1f5535,_0x21cb2d){return function(_0x79205f){if(_0x79205f){return _0x79205f[_0xdf2d('0x25')]()['then'](function(){_0x1f5535[_0xdf2d('0x19')](0xcc)[_0xdf2d('0x18')]();});}};}function handleEntityNotFound(_0x20cca2,_0x4dd3d1){return function(_0x58df6e){if(!_0x58df6e){_0x20cca2[_0xdf2d('0x26')](0x194);}return _0x58df6e;};}function handleError(_0x493e2f,_0x1fe554){_0x1fe554=_0x1fe554||0x1f4;return function(_0xa1c363){logger[_0xdf2d('0x27')](_0xa1c363[_0xdf2d('0x28')]);if(_0xa1c363[_0xdf2d('0x29')]){delete _0xa1c363['name'];}_0x493e2f[_0xdf2d('0x19')](_0x1fe554)['send'](_0xa1c363);};}exports[_0xdf2d('0x2a')]=function(_0x146d1e,_0xf71dee){var _0x29b7fb={},_0x171007={},_0x18fefa={'count':0x0,'rows':[]};var _0x4e73da=_['map'](db[_0xdf2d('0x2b')]['rawAttributes'],function(_0x3612c2){return{'name':_0x3612c2['fieldName'],'type':_0x3612c2['type'][_0xdf2d('0x2c')]};});_0x171007[_0xdf2d('0x2d')]=_['map'](_0x4e73da,_0xdf2d('0x29'));_0x171007[_0xdf2d('0x2e')]=_[_0xdf2d('0x2f')](_0x146d1e[_0xdf2d('0x2e')]);_0x171007[_0xdf2d('0x30')]=_['intersection'](_0x171007[_0xdf2d('0x2d')],_0x171007[_0xdf2d('0x2e')]);_0x29b7fb[_0xdf2d('0x31')]=_[_0xdf2d('0x32')](_0x171007[_0xdf2d('0x2d')],qs['fields'](_0x146d1e['query'][_0xdf2d('0x33')]));_0x29b7fb['attributes']=_0x29b7fb['attributes'][_0xdf2d('0x34')]?_0x29b7fb['attributes']:_0x171007[_0xdf2d('0x2d')];if(!_0x146d1e[_0xdf2d('0x2e')][_0xdf2d('0x35')](_0xdf2d('0x36'))){_0x29b7fb['limit']=qs['limit'](_0x146d1e[_0xdf2d('0x2e')][_0xdf2d('0x1c')]);_0x29b7fb[_0xdf2d('0x1b')]=qs[_0xdf2d('0x1b')](_0x146d1e[_0xdf2d('0x2e')]['offset']);}_0x29b7fb['order']=qs[_0xdf2d('0x37')](_0x146d1e[_0xdf2d('0x2e')][_0xdf2d('0x37')]);_0x29b7fb[_0xdf2d('0x38')]=qs[_0xdf2d('0x30')](_['pick'](_0x146d1e[_0xdf2d('0x2e')],_0x171007[_0xdf2d('0x30')]),_0x4e73da);if(_0x146d1e['query'][_0xdf2d('0x39')]){_0x29b7fb['where']=_[_0xdf2d('0x3a')](_0x29b7fb[_0xdf2d('0x38')],{'$or':_[_0xdf2d('0x3b')](_0x4e73da,function(_0x531fe4){if(_0x531fe4[_0xdf2d('0x3c')]!==_0xdf2d('0x3d')){var _0x3085f9={};_0x3085f9[_0x531fe4[_0xdf2d('0x29')]]={'$like':'%'+_0x146d1e[_0xdf2d('0x2e')][_0xdf2d('0x39')]+'%'};return _0x3085f9;}})});}_0x29b7fb=_['merge']({},_0x29b7fb,_0x146d1e[_0xdf2d('0x3e')]);var _0x76e777={'where':_0x29b7fb[_0xdf2d('0x38')]};return db[_0xdf2d('0x2b')][_0xdf2d('0x1d')](_0x76e777)['then'](function(_0x381135){_0x18fefa[_0xdf2d('0x1d')]=_0x381135;if(_0x146d1e[_0xdf2d('0x2e')][_0xdf2d('0x3f')]){_0x29b7fb[_0xdf2d('0x40')]=[{'all':!![]}];}return db[_0xdf2d('0x2b')]['findAll'](_0x29b7fb);})[_0xdf2d('0x24')](function(_0x40afac){_0x18fefa[_0xdf2d('0x41')]=_0x40afac;return _0x18fefa;})[_0xdf2d('0x24')](respondWithFilteredResult(_0xf71dee,_0x29b7fb))['catch'](handleError(_0xf71dee,null));};exports[_0xdf2d('0x42')]=function(_0x522b5c,_0x246502){var _0x6a072e={'raw':!![],'where':{'id':_0x522b5c[_0xdf2d('0x43')]['id']}},_0x58ce08={};_0x58ce08[_0xdf2d('0x2d')]=_[_0xdf2d('0x2f')](db[_0xdf2d('0x2b')]['rawAttributes']);_0x58ce08[_0xdf2d('0x2e')]=_[_0xdf2d('0x2f')](_0x522b5c['query']);_0x58ce08[_0xdf2d('0x30')]=_[_0xdf2d('0x32')](_0x58ce08[_0xdf2d('0x2d')],_0x58ce08[_0xdf2d('0x2e')]);_0x6a072e['attributes']=_['intersection'](_0x58ce08[_0xdf2d('0x2d')],qs[_0xdf2d('0x33')](_0x522b5c[_0xdf2d('0x2e')][_0xdf2d('0x33')]));_0x6a072e[_0xdf2d('0x31')]=_0x6a072e[_0xdf2d('0x31')]['length']?_0x6a072e[_0xdf2d('0x31')]:_0x58ce08[_0xdf2d('0x2d')];if(_0x522b5c['query'][_0xdf2d('0x3f')]){_0x6a072e['include']=[{'all':!![]}];}_0x6a072e=_[_0xdf2d('0x3a')]({},_0x6a072e,_0x522b5c[_0xdf2d('0x3e')]);return db['VoiceQueuesLog'][_0xdf2d('0x44')](_0x6a072e)[_0xdf2d('0x24')](handleEntityNotFound(_0x246502,null))[_0xdf2d('0x24')](respondWithResult(_0x246502,null))['catch'](handleError(_0x246502,null));};exports[_0xdf2d('0x45')]=function(_0x4c462b,_0x1b34c3){return db['VoiceQueuesLog']['create'](_0x4c462b['body'],{})['then'](respondWithResult(_0x1b34c3,0xc9))[_0xdf2d('0x46')](handleError(_0x1b34c3,null));};exports[_0xdf2d('0x23')]=function(_0x2499f9,_0x204e9e){if(_0x2499f9[_0xdf2d('0x47')]['id']){delete _0x2499f9['body']['id'];}return db['VoiceQueuesLog'][_0xdf2d('0x44')]({'where':{'id':_0x2499f9[_0xdf2d('0x43')]['id']}})[_0xdf2d('0x24')](handleEntityNotFound(_0x204e9e,null))[_0xdf2d('0x24')](saveUpdates(_0x2499f9['body'],null))[_0xdf2d('0x24')](respondWithResult(_0x204e9e,null))['catch'](handleError(_0x204e9e,null));};exports[_0xdf2d('0x25')]=function(_0x37f250,_0x2e67fc){return db[_0xdf2d('0x2b')][_0xdf2d('0x44')]({'where':{'id':_0x37f250['params']['id']}})[_0xdf2d('0x24')](handleEntityNotFound(_0x2e67fc,null))[_0xdf2d('0x24')](removeEntity(_0x2e67fc,null))[_0xdf2d('0x46')](handleError(_0x2e67fc,null));};
\ No newline at end of file
index 8327a35..a96594e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3379=['api','bluebird','request-promise','path','rimraf','./voiceQueuesLog.attributes','exports','VoiceQueuesLog','event_dtm','event','dtm','lodash','util','../../config/logger'];(function(_0x2f48e9,_0x1bd1b4){var _0x34d5bb=function(_0x399242){while(--_0x399242){_0x2f48e9['push'](_0x2f48e9['shift']());}};_0x34d5bb(++_0x1bd1b4);}(_0x3379,0x115));var _0x9337=function(_0x44c7d9,_0x26fc83){_0x44c7d9=_0x44c7d9-0x0;var _0x22bdd2=_0x3379[_0x44c7d9];return _0x22bdd2;};'use strict';var _=require(_0x9337('0x0'));var util=require(_0x9337('0x1'));var logger=require(_0x9337('0x2'))(_0x9337('0x3'));var moment=require('moment');var BPromise=require(_0x9337('0x4'));var rp=require(_0x9337('0x5'));var fs=require('fs');var path=require(_0x9337('0x6'));var rimraf=require(_0x9337('0x7'));var config=require('../../config/environment');var attributes=require(_0x9337('0x8'));module[_0x9337('0x9')]=function(_0x390772,_0x677c38){return _0x390772['define'](_0x9337('0xa'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x9337('0xb'),'fields':[_0x9337('0xc'),_0x9337('0xd')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x49d7=['event_dtm','event','lodash','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x2576d7,_0x167624){var _0x16a08c=function(_0x19de1e){while(--_0x19de1e){_0x2576d7['push'](_0x2576d7['shift']());}};_0x16a08c(++_0x167624);}(_0x49d7,0xfe));var _0x749d=function(_0x59e821,_0x86c723){_0x59e821=_0x59e821-0x0;var _0x5333f6=_0x49d7[_0x59e821];return _0x5333f6;};'use strict';var _=require(_0x749d('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x749d('0x1'));var BPromise=require('bluebird');var rp=require(_0x749d('0x2'));var fs=require('fs');var path=require(_0x749d('0x3'));var rimraf=require(_0x749d('0x4'));var config=require(_0x749d('0x5'));var attributes=require('./voiceQueuesLog.attributes');module[_0x749d('0x6')]=function(_0x16a05e,_0x166e28){return _0x16a05e['define']('VoiceQueuesLog',attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x749d('0x7'),'fields':[_0x749d('0x8'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
index 04c9a8d..9abd95f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9584=['VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x5634d2,_0x40ec38){var _0x4150b5=function(_0x44ceef){while(--_0x44ceef){_0x5634d2['push'](_0x5634d2['shift']());}};_0x4150b5(++_0x40ec38);}(_0x9584,0x1b9));var _0x4958=function(_0x295b55,_0xf2dfc1){_0x295b55=_0x295b55-0x0;var _0x2c8885=_0x9584[_0x295b55];return _0x2c8885;};'use strict';var _=require(_0x4958('0x0'));var util=require(_0x4958('0x1'));var moment=require(_0x4958('0x2'));var BPromise=require('bluebird');var rs=require(_0x4958('0x3'));var fs=require('fs');var Redis=require(_0x4958('0x4'));var db=require(_0x4958('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4958('0x6'))(_0x4958('0x7'));var config=require(_0x4958('0x8'));var jayson=require(_0x4958('0x9'));var client=jayson[_0x4958('0xa')][_0x4958('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x527644,_0x1dfabd,_0x152103){return new BPromise(function(_0x27c0ff,_0x276ec8){return client[_0x4958('0xc')](_0x527644,_0x152103)[_0x4958('0xd')](function(_0xf399d6){logger[_0x4958('0xe')](_0x4958('0xf'),_0x1dfabd,_0x4958('0x10'));logger[_0x4958('0x11')](_0x4958('0x12'),_0x1dfabd,'request\x20sent',JSON[_0x4958('0x13')](_0xf399d6));if(_0xf399d6[_0x4958('0x14')]){if(_0xf399d6['error'][_0x4958('0x15')]===0x1f4){logger[_0x4958('0x14')](_0x4958('0xf'),_0x1dfabd,_0xf399d6[_0x4958('0x14')][_0x4958('0x16')]);return _0x276ec8(_0xf399d6[_0x4958('0x14')][_0x4958('0x16')]);}logger[_0x4958('0x14')](_0x4958('0xf'),_0x1dfabd,_0xf399d6[_0x4958('0x14')][_0x4958('0x16')]);return _0x27c0ff(_0xf399d6[_0x4958('0x14')][_0x4958('0x16')]);}else{logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0x1dfabd,_0x4958('0x10'));_0x27c0ff(_0xf399d6[_0x4958('0x17')]['message']);}})['catch'](function(_0x442552){logger[_0x4958('0x14')]('VoiceQueuesLog,\x20%s,\x20%s',_0x1dfabd,_0x442552);_0x276ec8(_0x442552);});});}
\ No newline at end of file
+var _0x4641=['../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','stringify','error','code','message','VoiceQueuesLog,\x20%s,\x20%s','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1885db,_0x4aca16){var _0x11d038=function(_0x5ab6be){while(--_0x5ab6be){_0x1885db['push'](_0x1885db['shift']());}};_0x11d038(++_0x4aca16);}(_0x4641,0x185));var _0x1464=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x4641[_0x465028];return _0xb783d4;};'use strict';var _=require('lodash');var util=require(_0x1464('0x0'));var moment=require(_0x1464('0x1'));var BPromise=require(_0x1464('0x2'));var rs=require(_0x1464('0x3'));var fs=require('fs');var Redis=require(_0x1464('0x4'));var db=require(_0x1464('0x5'))['db'];var utils=require(_0x1464('0x6'));var logger=require(_0x1464('0x7'))('rpc');var config=require(_0x1464('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1464('0x9')][_0x1464('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c2e86,_0x5a40d9,_0x1d298a){return new BPromise(function(_0x226cde,_0x1b711b){return client[_0x1464('0xb')](_0x1c2e86,_0x1d298a)[_0x1464('0xc')](function(_0x1e1c85){logger[_0x1464('0xd')]('VoiceQueuesLog,\x20%s,\x20%s',_0x5a40d9,_0x1464('0xe'));logger[_0x1464('0xf')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x5a40d9,'request\x20sent',JSON[_0x1464('0x10')](_0x1e1c85));if(_0x1e1c85[_0x1464('0x11')]){if(_0x1e1c85[_0x1464('0x11')][_0x1464('0x12')]===0x1f4){logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x5a40d9,_0x1e1c85[_0x1464('0x11')]['message']);return _0x1b711b(_0x1e1c85[_0x1464('0x11')][_0x1464('0x13')]);}logger[_0x1464('0x11')](_0x1464('0x14'),_0x5a40d9,_0x1e1c85[_0x1464('0x11')]['message']);return _0x226cde(_0x1e1c85[_0x1464('0x11')][_0x1464('0x13')]);}else{logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0x5a40d9,_0x1464('0xe'));_0x226cde(_0x1e1c85[_0x1464('0x15')]['message']);}})['catch'](function(_0x1bcb38){logger[_0x1464('0x11')](_0x1464('0x14'),_0x5a40d9,_0x1bcb38);_0x1b711b(_0x1bcb38);});});}
\ No newline at end of file
index 078606e..a53bb4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfff=['index','/describe','describe','get','/:id','isAuthenticated','show','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','put','update','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x22d3b0,_0x2802db){var _0x3ed566=function(_0x54f3be){while(--_0x54f3be){_0x22d3b0['push'](_0x22d3b0['shift']());}};_0x3ed566(++_0x2802db);}(_0xdfff,0xfe));var _0xfdff=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdfff[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xfdff('0x0'));var path=require('path');var timeout=require(_0xfdff('0x1'));var express=require(_0xfdff('0x2'));var router=express[_0xfdff('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xfdff('0x4'));var interaction=require(_0xfdff('0x5'));var config=require('../../config/environment');var controller=require('./voiceRecording.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xfdff('0x6')]);router['get'](_0xfdff('0x7'),auth['isAuthenticated'](),controller[_0xfdff('0x8')]);router[_0xfdff('0x9')](_0xfdff('0xa'),auth[_0xfdff('0xb')](),controller[_0xfdff('0xc')]);router[_0xfdff('0x9')](_0xfdff('0xd'),auth[_0xfdff('0xb')](),controller[_0xfdff('0xe')]);router[_0xfdff('0x9')](_0xfdff('0xf'),controller[_0xfdff('0x10')]);router[_0xfdff('0x9')](_0xfdff('0x11'),auth[_0xfdff('0xb')](),controller[_0xfdff('0x12')]);router[_0xfdff('0x13')]('/',auth[_0xfdff('0xb')](),controller[_0xfdff('0x14')]);router[_0xfdff('0x13')](_0xfdff('0x11'),auth[_0xfdff('0xb')](),controller[_0xfdff('0x15')]);router[_0xfdff('0x16')](_0xfdff('0xa'),auth[_0xfdff('0xb')](),controller[_0xfdff('0x17')]);router['delete'](_0xfdff('0xa'),auth['isAuthenticated'](),controller[_0xfdff('0x18')]);module[_0xfdff('0x19')]=router;
\ No newline at end of file
+var _0xb78f=['index','/describe','/:id','show','download','/:id/downloads','downloads','downloadTranscribe','post','create','runTranscribe','put','update','delete','destroy','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./voiceRecording.controller','get','isAuthenticated'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xb78f,0x6f));var _0xfb78=function(_0x5e7992,_0x143881){_0x5e7992=_0x5e7992-0x0;var _0x1ea634=_0xb78f[_0x5e7992];return _0x1ea634;};'use strict';var multer=require('multer');var util=require(_0xfb78('0x0'));var path=require(_0xfb78('0x1'));var timeout=require(_0xfb78('0x2'));var express=require('express');var router=express[_0xfb78('0x3')]();var fs_extra=require(_0xfb78('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfb78('0x5'));var config=require('../../config/environment');var controller=require(_0xfb78('0x6'));router[_0xfb78('0x7')]('/',auth[_0xfb78('0x8')](),controller[_0xfb78('0x9')]);router[_0xfb78('0x7')](_0xfb78('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0xfb78('0x7')](_0xfb78('0xb'),auth[_0xfb78('0x8')](),controller[_0xfb78('0xc')]);router[_0xfb78('0x7')]('/:id/download',auth[_0xfb78('0x8')](),controller[_0xfb78('0xd')]);router['get'](_0xfb78('0xe'),controller[_0xfb78('0xf')]);router['get']('/:id/transcribe',auth[_0xfb78('0x8')](),controller[_0xfb78('0x10')]);router[_0xfb78('0x11')]('/',auth[_0xfb78('0x8')](),controller[_0xfb78('0x12')]);router['post']('/:id/transcribe',auth[_0xfb78('0x8')](),controller[_0xfb78('0x13')]);router[_0xfb78('0x14')](_0xfb78('0xb'),auth[_0xfb78('0x8')](),controller[_0xfb78('0x15')]);router[_0xfb78('0x16')](_0xfb78('0xb'),auth[_0xfb78('0x8')](),controller[_0xfb78('0x17')]);module['exports']=router;
\ No newline at end of file
index af7fa8f..adf0d99 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(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'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(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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 1a9ada6..5ccc7da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd019=['count','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','map','VoiceRecording','rawAttributes','type','key','model','differenceBy','format','keys','filters','intersection','attributes','fields','length','hasOwnProperty','query','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','catch','params','create','body','describe','../../components/encryptor','uniqueid','value','%s.cypher','secrets','existsSync','Sequelize','ValidationError','filename','download','extname','unlink','message','VoiceRecording\x20not\x20found','downloads','sequelize','col','token','push','$and','find','recording','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','listBuckets','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','transcribeAccountId','transcribeRegion','language','bucket','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit'];(function(_0x521f8c,_0x592436){var _0x49e924=function(_0x4b0b06){while(--_0x4b0b06){_0x521f8c['push'](_0x521f8c['shift']());}};_0x49e924(++_0x592436);}(_0xd019,0x6d));var _0x9d01=function(_0x31a576,_0x424419){_0x31a576=_0x31a576-0x0;var _0x30b1d3=_0xd019[_0x31a576];return _0x30b1d3;};'use strict';var emlformat=require(_0x9d01('0x0'));var rimraf=require(_0x9d01('0x1'));var zipdir=require(_0x9d01('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9d01('0x3'));var BPromise=require(_0x9d01('0x4'));var Mustache=require(_0x9d01('0x5'));var util=require(_0x9d01('0x6'));var path=require(_0x9d01('0x7'));var sox=require('sox');var csv=require(_0x9d01('0x8'));var ejs=require(_0x9d01('0x9'));var fs=require('fs');var fs_extra=require(_0x9d01('0xa'));var _=require(_0x9d01('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9d01('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9d01('0x8'));var querystring=require('querystring');var Papa=require(_0x9d01('0xd'));var AWS=require(_0x9d01('0xe'));var uuidv4=require(_0x9d01('0xf'));var Redis=require(_0x9d01('0x10'));var authService=require(_0x9d01('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9d01('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d01('0x13'))(_0x9d01('0x14'));var utils=require(_0x9d01('0x15'));var config=require(_0x9d01('0x16'));var licenseUtil=require(_0x9d01('0x17'));var db=require(_0x9d01('0x18'))['db'];function respondWithStatusCode(_0x2369ac,_0x556eb9){_0x556eb9=_0x556eb9||0xcc;return function(_0x50410f){if(_0x50410f){return _0x2369ac[_0x9d01('0x19')](_0x556eb9);}return _0x2369ac[_0x9d01('0x1a')](_0x556eb9)[_0x9d01('0x1b')]();};}function respondWithResult(_0x1b1cc1,_0x480fd5){_0x480fd5=_0x480fd5||0xc8;return function(_0x34a5f3){if(_0x34a5f3){return _0x1b1cc1[_0x9d01('0x1a')](_0x480fd5)[_0x9d01('0x1c')](_0x34a5f3);}};}function respondWithFilteredResult(_0x34e3f9,_0x5df9fd){return function(_0x295852){if(_0x295852){var _0x32e38f=typeof _0x5df9fd[_0x9d01('0x1d')]===_0x9d01('0x1e')&&typeof _0x5df9fd[_0x9d01('0x1f')]===_0x9d01('0x1e');var _0xcc175a=_0x295852[_0x9d01('0x20')];var _0x281b05=_0x32e38f?0x0:_0x5df9fd[_0x9d01('0x1d')];var _0x37644b=_0x32e38f?_0x295852['count']:_0x5df9fd[_0x9d01('0x1d')]+_0x5df9fd['limit'];var _0x26370a;if(_0x37644b>=_0xcc175a){_0x37644b=_0xcc175a;_0x26370a=0xc8;}else{_0x26370a=0xce;}_0x34e3f9['status'](_0x26370a);return _0x34e3f9['set'](_0x9d01('0x21'),_0x281b05+'-'+_0x37644b+'/'+_0xcc175a)['json'](_0x295852);}return null;};}function patchUpdates(_0x292559){return function(_0x343789){try{jsonpatch[_0x9d01('0x22')](_0x343789,_0x292559,!![]);}catch(_0x14b213){return BPromise[_0x9d01('0x23')](_0x14b213);}return _0x343789[_0x9d01('0x24')]();};}function saveUpdates(_0x49eac8,_0x212583){return function(_0x5bd9b0){if(_0x5bd9b0){return _0x5bd9b0[_0x9d01('0x25')](_0x49eac8)['then'](function(_0x8a9047){return _0x8a9047;});}return null;};}function removeEntity(_0x50c7d7,_0x20a924){return function(_0x31af00){if(_0x31af00){return _0x31af00[_0x9d01('0x26')]()[_0x9d01('0x27')](function(){_0x50c7d7[_0x9d01('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x340f88,_0xde6c08){return function(_0x3b866a){if(!_0x3b866a){_0x340f88[_0x9d01('0x19')](0x194);}return _0x3b866a;};}function handleError(_0x189208,_0x52d19a){_0x52d19a=_0x52d19a||0x1f4;return function(_0x4e1dc3){logger['error'](_0x4e1dc3[_0x9d01('0x28')]);if(_0x4e1dc3[_0x9d01('0x29')]){delete _0x4e1dc3['name'];}_0x189208[_0x9d01('0x1a')](_0x52d19a)[_0x9d01('0x2a')](_0x4e1dc3);};}exports[_0x9d01('0x2b')]=function(_0x35c309,_0x5926e4){var _0x3a299c={},_0x55059a={},_0x15c65f={'count':0x0,'rows':[]};var _0x53e57d=_[_0x9d01('0x2c')](db[_0x9d01('0x2d')][_0x9d01('0x2e')],function(_0x236989){return{'name':_0x236989['fieldName'],'type':_0x236989[_0x9d01('0x2f')][_0x9d01('0x30')]};});_0x55059a[_0x9d01('0x31')]=_[_0x9d01('0x32')](_[_0x9d01('0x2c')](_0x53e57d,'name'),[_0x9d01('0x33')]);_0x55059a['query']=_[_0x9d01('0x34')](_0x35c309['query']);_0x55059a[_0x9d01('0x35')]=_[_0x9d01('0x36')](_0x55059a[_0x9d01('0x31')],_0x55059a['query']);_0x3a299c[_0x9d01('0x37')]=_[_0x9d01('0x36')](_0x55059a['model'],qs[_0x9d01('0x38')](_0x35c309['query'][_0x9d01('0x38')]));_0x3a299c[_0x9d01('0x37')]=_0x3a299c[_0x9d01('0x37')][_0x9d01('0x39')]?_0x3a299c['attributes']:_0x55059a[_0x9d01('0x31')];if(!_0x35c309['query'][_0x9d01('0x3a')]('nolimit')){_0x3a299c[_0x9d01('0x1f')]=qs['limit'](_0x35c309[_0x9d01('0x3b')][_0x9d01('0x1f')]);_0x3a299c[_0x9d01('0x1d')]=qs[_0x9d01('0x1d')](_0x35c309[_0x9d01('0x3b')][_0x9d01('0x1d')]);}_0x3a299c[_0x9d01('0x3c')]=qs['sort'](_0x35c309['query'][_0x9d01('0x3d')]);_0x3a299c[_0x9d01('0x3e')]=qs['filters'](_['pick'](_0x35c309[_0x9d01('0x3b')],_0x55059a[_0x9d01('0x35')]),_0x53e57d);if(_0x35c309[_0x9d01('0x3b')][_0x9d01('0x3f')]){_0x3a299c[_0x9d01('0x3e')]=_[_0x9d01('0x40')](_0x3a299c[_0x9d01('0x3e')],{'$or':_['map'](_0x53e57d,function(_0x289e3e){if(_0x289e3e['type']!==_0x9d01('0x41')){var _0xd0de9e={};_0xd0de9e[_0x289e3e[_0x9d01('0x29')]]={'$like':'%'+_0x35c309[_0x9d01('0x3b')]['filter']+'%'};return _0xd0de9e;}})});}_0x3a299c=_[_0x9d01('0x40')]({},_0x3a299c,_0x35c309[_0x9d01('0x42')]);var _0x3b84d6={'where':_0x3a299c[_0x9d01('0x3e')]};return db[_0x9d01('0x2d')]['count'](_0x3b84d6)['then'](function(_0x5af9ef){_0x15c65f['count']=_0x5af9ef;if(_0x35c309[_0x9d01('0x3b')]['includeAll']){_0x3a299c[_0x9d01('0x43')]=[{'all':!![]}];}return db[_0x9d01('0x2d')][_0x9d01('0x44')](_0x3a299c);})[_0x9d01('0x27')](function(_0x505a32){_0x15c65f['rows']=_0x505a32;return _0x15c65f;})[_0x9d01('0x27')](respondWithFilteredResult(_0x5926e4,_0x3a299c))[_0x9d01('0x45')](handleError(_0x5926e4,null));};exports['show']=function(_0x1bc22e,_0x5964aa){var _0x133fe5={'raw':![],'where':{'id':_0x1bc22e[_0x9d01('0x46')]['id']}},_0x54b0e7={};_0x54b0e7[_0x9d01('0x31')]=_[_0x9d01('0x34')](db[_0x9d01('0x2d')][_0x9d01('0x2e')]);_0x54b0e7['query']=_['keys'](_0x1bc22e[_0x9d01('0x3b')]);_0x54b0e7['filters']=_[_0x9d01('0x36')](_0x54b0e7[_0x9d01('0x31')],_0x54b0e7[_0x9d01('0x3b')]);_0x133fe5['attributes']=_[_0x9d01('0x36')](_0x54b0e7[_0x9d01('0x31')],qs['fields'](_0x1bc22e[_0x9d01('0x3b')]['fields']));_0x133fe5[_0x9d01('0x37')]=_0x133fe5[_0x9d01('0x37')][_0x9d01('0x39')]?_0x133fe5['attributes']:_0x54b0e7[_0x9d01('0x31')];if(_0x1bc22e[_0x9d01('0x3b')]['includeAll']){_0x133fe5[_0x9d01('0x43')]=[{'all':!![]}];}_0x133fe5=_[_0x9d01('0x40')]({},_0x133fe5,_0x1bc22e[_0x9d01('0x42')]);return db[_0x9d01('0x2d')]['find'](_0x133fe5)[_0x9d01('0x27')](handleEntityNotFound(_0x5964aa,null))[_0x9d01('0x27')](respondWithResult(_0x5964aa,null))[_0x9d01('0x45')](handleError(_0x5964aa,null));};exports['create']=function(_0x43004c,_0x5670e4){return db['VoiceRecording'][_0x9d01('0x47')](_0x43004c[_0x9d01('0x48')],{})['then'](respondWithResult(_0x5670e4,0xc9))[_0x9d01('0x45')](handleError(_0x5670e4,null));};exports[_0x9d01('0x25')]=function(_0x55048e,_0x32cb78){if(_0x55048e[_0x9d01('0x48')]['id']){delete _0x55048e[_0x9d01('0x48')]['id'];}return db['VoiceRecording']['find']({'where':{'id':_0x55048e[_0x9d01('0x46')]['id']}})[_0x9d01('0x27')](handleEntityNotFound(_0x32cb78,null))['then'](saveUpdates(_0x55048e[_0x9d01('0x48')],null))[_0x9d01('0x27')](respondWithResult(_0x32cb78,null))[_0x9d01('0x45')](handleError(_0x32cb78,null));};exports[_0x9d01('0x49')]=function(_0x5b7175,_0x4d111a){return db['VoiceRecording'][_0x9d01('0x49')]()['then'](respondWithResult(_0x4d111a,null))['catch'](handleError(_0x4d111a,null));};exports['download']=function(_0x369141,_0x560723,_0x506e8a){var _0x35b8ef=require(_0x9d01('0x4a'));var _0x134f15=![];var _0x273b7f={};if(_0x369141[_0x9d01('0x3b')]['type']&&_0x369141[_0x9d01('0x3b')]['type']===_0x9d01('0x4b')){_0x273b7f['uniqueid']=_0x369141['params']['id'];}else{_0x273b7f['id']=_0x369141[_0x9d01('0x46')]['id'];}return db['VoiceRecording']['find']({'where':_0x273b7f,'attributes':['id','value'],'raw':!![]})[_0x9d01('0x27')](handleEntityNotFound(_0x560723,null))[_0x9d01('0x27')](function(_0x319b43){if(_0x319b43){var _0x4d4a8f=_0x319b43[_0x9d01('0x4c')];var _0x269544=util[_0x9d01('0x33')](_0x9d01('0x4d'),_0x4d4a8f);if(fs['existsSync'](_0x269544)){_0x134f15=!![];return _0x35b8ef['decryptFile'](_0x269544,_0x4d4a8f,config[_0x9d01('0x4e')]['recording'])['then'](function(){return _0x319b43;});}return _0x319b43;}})['then'](function(_0x5569f3){if(_0x5569f3){var _0x3cce4e=_0x5569f3[_0x9d01('0x4c')];if(!fs[_0x9d01('0x4f')](_0x3cce4e)){throw new db[(_0x9d01('0x50'))][(_0x9d01('0x51'))]('VoiceRecording\x20not\x20found');}if(_0x5569f3[_0x9d01('0x52')]){return _0x560723[_0x9d01('0x53')](_0x3cce4e,_0x5569f3[_0x9d01('0x52')]+path[_0x9d01('0x54')](_0x3cce4e),function(){if(_0x134f15){fs[_0x9d01('0x55')](_0x3cce4e);}});}else{return _0x560723[_0x9d01('0x53')](_0x3cce4e,function(_0x367a79){if(_0x134f15){fs[_0x9d01('0x55')](_0x3cce4e);}});}}})[_0x9d01('0x45')](function(_0x4c1408){if(_0x4c1408[_0x9d01('0x56')]===_0x9d01('0x57')){_0x560723[_0x9d01('0x1a')](0x194)['send']('Not\x20found');}else{return handleError(_0x560723,null);}});};exports[_0x9d01('0x58')]=function(_0x4a0cb5,_0x4b9ab3,_0x1f5dfb){var _0x520666=require(_0x9d01('0x4a'));var _0x2c8a93=![];var _0x4d5f7e={'$and':[db[_0x9d01('0x59')][_0x9d01('0x3e')](db[_0x9d01('0x59')]['fn']('MD5',db[_0x9d01('0x59')][_0x9d01('0x5a')]('uniqueid')),_0x4a0cb5[_0x9d01('0x3b')][_0x9d01('0x5b')])]};if(_0x4a0cb5['query'][_0x9d01('0x2f')]&&_0x4a0cb5['query'][_0x9d01('0x2f')]===_0x9d01('0x4b')){_0x4d5f7e['$and'][_0x9d01('0x5c')]({'uniqueid':_0x4a0cb5[_0x9d01('0x46')]['id']});}else{_0x4d5f7e[_0x9d01('0x5d')]['push']({'id':_0x4a0cb5[_0x9d01('0x46')]['id']});}return db[_0x9d01('0x2d')][_0x9d01('0x5e')]({'where':_0x4d5f7e,'attributes':['id',_0x9d01('0x4c')],'raw':!![]})[_0x9d01('0x27')](handleEntityNotFound(_0x4b9ab3,null))[_0x9d01('0x27')](function(_0x4c4981){if(_0x4c4981){var _0x137079=util[_0x9d01('0x33')](_0x9d01('0x4d'),_0x4c4981[_0x9d01('0x4c')]);if(fs[_0x9d01('0x4f')](_0x137079)){_0x2c8a93=!![];return _0x520666['decryptFile'](_0x137079,_0x4c4981['value'],config[_0x9d01('0x4e')][_0x9d01('0x5f')])[_0x9d01('0x27')](function(){return _0x4c4981;});}return _0x4c4981;}})[_0x9d01('0x27')](function(_0x2ff401){if(_0x2ff401){if(!fs['existsSync'](_0x2ff401[_0x9d01('0x4c')])){throw new db['Sequelize']['ValidationError'](_0x9d01('0x57'));}if(_0x2ff401[_0x9d01('0x52')]){return _0x4b9ab3[_0x9d01('0x53')](_0x2ff401['value'],_0x2ff401[_0x9d01('0x52')]+path[_0x9d01('0x54')](_0x2ff401[_0x9d01('0x4c')]),function(){if(_0x2c8a93){fs['unlink'](_0x2ff401[_0x9d01('0x4c')]);}});}else{return _0x4b9ab3[_0x9d01('0x53')](_0x2ff401[_0x9d01('0x4c')],function(_0x4f98c3){if(_0x2c8a93){fs[_0x9d01('0x55')](_0x2ff401[_0x9d01('0x4c')]);}});}}})[_0x9d01('0x45')](handleError(_0x4b9ab3,null));};exports[_0x9d01('0x26')]=function(_0x520bf2,_0x28c250){return db['VoiceRecording']['find']({'where':{'id':_0x520bf2[_0x9d01('0x46')]['id']}})[_0x9d01('0x27')](function(_0x2bc91a){if(_[_0x9d01('0x60')](_0x2bc91a)){throw new ReferenceError(_0x9d01('0x61'));}return _0x2bc91a;})[_0x9d01('0x27')](function(_0x3d0d37){var _0x2395a8=_0x3d0d37[_0x9d01('0x4c')];logger['info'](_0x9d01('0x62'),_0x2395a8);if(!_[_0x9d01('0x60')](_0x3d0d37['value'])&&fs[_0x9d01('0x4f')](_0x2395a8)){logger[_0x9d01('0x63')](_0x9d01('0x64')+_0x2395a8+_0x9d01('0x65'));fs['unlinkSync'](_0x2395a8);}_0x2395a8=_0x2395a8+'.cypher';if(!_[_0x9d01('0x60')](_0x3d0d37[_0x9d01('0x4c')])&&fs['existsSync'](_0x2395a8)){logger[_0x9d01('0x63')](_0x9d01('0x64')+_0x2395a8+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x9d01('0x66')](_0x2395a8);}return _0x3d0d37;})[_0x9d01('0x27')](function(_0x4733b0){if(!_0x4733b0)throw new InternalError();return _0x4733b0[_0x9d01('0x26')]();})[_0x9d01('0x27')](function(){_0x28c250[_0x9d01('0x1a')](0xcc)[_0x9d01('0x1b')]();})[_0x9d01('0x45')](handleError(_0x28c250,null));};function getBucketslist(_0x1b1669,_0x2abcf7,_0x5134b3){return new Promise(function(_0x5ca9fb,_0x2619fe){var _0x2256bf=new AWS['S3']({'accessKeyId':_0x2abcf7,'secretAccessKey':_0x1b1669,'region':_0x5134b3});_0x2256bf[_0x9d01('0x67')]({},function(_0x1163c3,_0x3275e1){if(_0x1163c3){return _0x2619fe(_0x1163c3);}else{return _0x5ca9fb(_0x3275e1);}});});}function createBucket(_0x21ae28,_0x36ee88,_0x280b74,_0xbdd3f){return new Promise(function(_0x1f5a8e,_0x1ca4c8){var _0x431603=new AWS['S3']({'accessKeyId':_0x36ee88,'secretAccessKey':_0x21ae28,'region':_0x280b74});_0x431603['createBucket']({'Bucket':_0xbdd3f},function(_0x54dfd5,_0x194fd8){if(_0x54dfd5){return _0x1ca4c8(_0x54dfd5);}else{return _0x1f5a8e(_0x194fd8);}});});}function uploadFile(_0x245449,_0x442cf2,_0x2c89f5,_0x460163,_0x31e577,_0xe65e6e){return new Promise(function(_0x23ca50,_0x478a96){var _0x595a68=new AWS['S3']({'accessKeyId':_0x442cf2,'secretAccessKey':_0x245449,'region':_0x2c89f5});_0x595a68['upload']({'Bucket':_0x460163,'Key':_0x31e577,'Body':_0xe65e6e},function(_0x5d169d,_0x2bd040){if(_0x5d169d){return _0x478a96(_0x5d169d);}else{return _0x23ca50(_0x2bd040);}});});}function startTranscribe(_0x22dbea,_0xa723fe,_0x428f66,_0x3af1d4,_0x4df487,_0x54ec26){return new Promise(function(_0x40bedc,_0x54feca){var _0xff3e2c=new AWS['TranscribeService']({'accessKeyId':_0xa723fe,'secretAccessKey':_0x22dbea,'region':_0x428f66});_0xff3e2c['startTranscriptionJob']({'TranscriptionJobName':_0x3af1d4,'LanguageCode':_0x4df487,'Media':{'MediaFileUri':_0x54ec26}},function(_0x1374e8,_0x480222){if(_0x1374e8){return _0x54feca(_0x1374e8);}else{return _0x40bedc(_0x480222);}});});}function transcribe(_0x946da3,_0x4000e3,_0x34ec89,_0x1ad37c,_0x2cfaee,_0xb9eed1,_0x55528b){return new Promise(function(_0x3924f5,_0x3887ad){var _0x4ffaf9={};logger[_0x9d01('0x63')](util[_0x9d01('0x33')]('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x946da3,_0x2cfaee));return uploadFile(_0x4000e3,_0x34ec89,_0x1ad37c,_0x2cfaee,path[_0x9d01('0x68')](_0xb9eed1),fs[_0x9d01('0x69')](_0xb9eed1))[_0x9d01('0x27')](function(_0x215d9a){logger[_0x9d01('0x63')](util[_0x9d01('0x33')](_0x9d01('0x6a'),_0x946da3,_0x2cfaee,_0x215d9a[_0x9d01('0x6b')]));_0x4ffaf9['bucket']=_0x215d9a['Bucket'];_0x4ffaf9['location']=_0x215d9a[_0x9d01('0x6b')];logger['info'](util[_0x9d01('0x33')](_0x9d01('0x6c'),_0x946da3));return startTranscribe(_0x4000e3,_0x34ec89,_0x1ad37c,uuidv4(),_0x55528b,_0x215d9a[_0x9d01('0x6b')]);})['then'](function(_0x3a3dc6){logger[_0x9d01('0x63')](util[_0x9d01('0x33')](_0x9d01('0x6d'),_0x946da3,_0x3a3dc6[_0x9d01('0x6e')][_0x9d01('0x6f')]));_0x4ffaf9[_0x9d01('0x70')]=_0x3a3dc6['TranscriptionJob'][_0x9d01('0x6f')];_0x4ffaf9['transcribeStatus']=_0x3a3dc6[_0x9d01('0x6e')]['TranscriptionJobStatus'];return _0x3924f5(_0x4ffaf9);})[_0x9d01('0x45')](function(_0x2ccec0){return _0x3887ad(_0x2ccec0);});});}exports[_0x9d01('0x71')]=function(_0xbf736e,_0x235900,_0x58b125){var _0x131f69;var _0x270ed3;var _0x52c970;var _0x2e79cb=require(_0x9d01('0x4a'));return db[_0x9d01('0x2d')][_0x9d01('0x72')]({'where':{'id':_0xbf736e[_0x9d01('0x46')]['id']}})['then'](function(_0x47fdc2){if(_0x47fdc2){var _0x5929fe=util[_0x9d01('0x33')](_0x9d01('0x4d'),_0x47fdc2['value']);if(fs[_0x9d01('0x4f')](_0x5929fe)){cypher=!![];return _0x2e79cb['decryptFile'](_0x5929fe,_0x47fdc2['value'],config[_0x9d01('0x4e')][_0x9d01('0x5f')])[_0x9d01('0x27')](function(){return _0x47fdc2;});}return _0x47fdc2;}})[_0x9d01('0x27')](function(_0x3cbb68){if(!_0x3cbb68){throw new db[(_0x9d01('0x50'))][(_0x9d01('0x51'))](_0x9d01('0x73'));}_0x270ed3=_0x3cbb68;return db['Setting'][_0x9d01('0x72')]({'where':{'id':0x1}});})[_0x9d01('0x27')](handleEntityNotFound(_0x235900,null))[_0x9d01('0x27')](function(_0x4bbdd8){if(_0x4bbdd8){_0x131f69=_0x4bbdd8;if(!_0x131f69['transcribe']||!_0x131f69[_0x9d01('0x74')]||!_0x131f69[_0x9d01('0x75')]||!_0x131f69[_0x9d01('0x76')]||!_0x131f69[_0x9d01('0x77')]){throw new db[(_0x9d01('0x50'))][(_0x9d01('0x51'))]('Transcribe\x20not\x20configured');}if(_0xbf736e['body'][_0x9d01('0x78')]&&(!_0x131f69[_0x9d01('0x79')]||!_0x131f69[_0x9d01('0x7a')]||!_0x131f69[_0x9d01('0x7b')]||!_0x131f69[_0x9d01('0x76')]||!_0x131f69[_0x9d01('0x77')])){throw new db[(_0x9d01('0x50'))][(_0x9d01('0x51'))](_0x9d01('0x7c'));}return db[_0x9d01('0x7d')][_0x9d01('0x72')]({'where':{'id':_0x131f69[_0x9d01('0x74')]}});}})[_0x9d01('0x27')](function(_0xceaafb){if(!_0xceaafb){throw new db[(_0x9d01('0x50'))]['ValidationError'](_0x9d01('0x7e'));}if(!_0xceaafb[_0x9d01('0x7f')]||!_0xceaafb[_0x9d01('0x80')]){throw new db['Sequelize'][(_0x9d01('0x51'))]('Cloud\x20Provider\x20not\x20configured');}_0x52c970=_0xceaafb;return getBucketslist(_0x52c970[_0x9d01('0x7f')],_0x52c970[_0x9d01('0x80')],_0x131f69[_0x9d01('0x75')]);})[_0x9d01('0x27')](function(_0x38b44e){if(_0x38b44e&&_0x38b44e['Buckets']){var _0x4f7e45=_[_0x9d01('0x5e')](_0x38b44e['Buckets'],function(_0x3ef347){return _0x3ef347[_0x9d01('0x81')]===_0x131f69[_0x9d01('0x77')];});if(!_0x4f7e45){logger[_0x9d01('0x63')](util[_0x9d01('0x33')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0xbf736e[_0x9d01('0x46')]['id'],_0x131f69['bucket']));return createBucket(_0x52c970[_0x9d01('0x7f')],_0x52c970[_0x9d01('0x80')],_0x131f69['transcribeRegion'],_0x131f69[_0x9d01('0x77')]);}logger['info'](util[_0x9d01('0x33')](_0x9d01('0x82'),_0xbf736e[_0x9d01('0x46')]['id'],_0x131f69['bucket']));return;}})[_0x9d01('0x27')](function(_0x4dc5b3){if(_0x270ed3['transcribeStatus']==='NEW'){return transcribe(_0xbf736e[_0x9d01('0x46')]['id'],_0x52c970[_0x9d01('0x7f')],_0x52c970[_0x9d01('0x80')],_0x131f69[_0x9d01('0x75')],_0x131f69[_0x9d01('0x77')],_0x270ed3['value'],_0x131f69[_0x9d01('0x76')]);}else{logger['info'](util[_0x9d01('0x33')](_0x9d01('0x83'),_0xbf736e[_0x9d01('0x46')]['id']));return{'transcribeStatus':_0x9d01('0x84')};}})[_0x9d01('0x27')](function(_0x2385a4){if(_0x2385a4){_0x2385a4[_0x9d01('0x85')]=_0xbf736e['body'][_0x9d01('0x78')];return _0x270ed3[_0x9d01('0x86')](_0x2385a4);}})['then'](respondWithResult(_0x235900,null))[_0x9d01('0x45')](handleError(_0x235900,null));};function writeFile(_0x124921,_0x41800f){return new Promise(function(_0x36fea4,_0x5daf02){fs[_0x9d01('0x87')](_0x41800f,_0x124921,function(_0x55ffbc,_0x4aea39){if(_0x55ffbc){return _0x5daf02(_0x55ffbc);}else{return _0x36fea4(_0x4aea39);}});});}exports[_0x9d01('0x88')]=function(_0x328ed0,_0x4a2abe,_0x5d497e){return db[_0x9d01('0x2d')][_0x9d01('0x72')]({'where':{'id':_0x328ed0[_0x9d01('0x46')]['id']}})[_0x9d01('0x27')](handleEntityNotFound(_0x4a2abe))[_0x9d01('0x27')](function(_0x34bcd1){if(_0x34bcd1&&_0x34bcd1['fileText']){var _0x50bfb3=_0x34bcd1[_0x9d01('0x89')];var _0x241ee9=config[_0x9d01('0x8a')]+_0x9d01('0x8b')+_0x34bcd1['id']+_0x9d01('0x8c');if(fs[_0x9d01('0x4f')](_0x241ee9)){return _0x241ee9;}return writeFile(_0x50bfb3,_0x241ee9)[_0x9d01('0x27')](function(){return _0x241ee9;});}else{throw new db[(_0x9d01('0x50'))]['ValidationError']('Transcript\x20not\x20available');}})[_0x9d01('0x27')](function(_0x2efec6){return _0x4a2abe[_0x9d01('0x53')](_0x2efec6);})[_0x9d01('0x45')](handleError(_0x4a2abe));};
\ No newline at end of file
+var _0x9b22=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','aws-sdk','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','VoiceRecording','fieldName','type','key','model','differenceBy','format','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','describe','download','../../components/encryptor','uniqueid','value','existsSync','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','unlink','message','send','Not\x20found','downloads','sequelize','MD5','col','token','$and','push','%s.cypher','info','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','File:\x20\x22','listBuckets','upload','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeStatus','runTranscribe','findOne','Setting','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','CloudProvider','data1','Cloud\x20Provider\x20not\x20configured','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','data2','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available'];(function(_0x1fcaf1,_0x21c3c2){var _0x55f464=function(_0x348eb3){while(--_0x348eb3){_0x1fcaf1['push'](_0x1fcaf1['shift']());}};_0x55f464(++_0x21c3c2);}(_0x9b22,0x1d1));var _0x29b2=function(_0x358339,_0x27d754){_0x358339=_0x358339-0x0;var _0x5768b5=_0x9b22[_0x358339];return _0x5768b5;};'use strict';var emlformat=require(_0x29b2('0x0'));var rimraf=require(_0x29b2('0x1'));var zipdir=require(_0x29b2('0x2'));var jsonpatch=require(_0x29b2('0x3'));var rp=require('request-promise');var moment=require(_0x29b2('0x4'));var BPromise=require(_0x29b2('0x5'));var Mustache=require(_0x29b2('0x6'));var util=require(_0x29b2('0x7'));var path=require(_0x29b2('0x8'));var sox=require(_0x29b2('0x9'));var csv=require('to-csv');var ejs=require(_0x29b2('0xa'));var fs=require('fs');var fs_extra=require(_0x29b2('0xb'));var _=require(_0x29b2('0xc'));var squel=require('squel');var crypto=require(_0x29b2('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x29b2('0xe'));var toCsv=require(_0x29b2('0xf'));var querystring=require(_0x29b2('0x10'));var Papa=require('papaparse');var AWS=require(_0x29b2('0x11'));var uuidv4=require(_0x29b2('0x12'));var Redis=require('ioredis');var authService=require(_0x29b2('0x13'));var qs=require(_0x29b2('0x14'));var as=require(_0x29b2('0x15'));var hardwareService=require(_0x29b2('0x16'));var logger=require(_0x29b2('0x17'))('api');var utils=require(_0x29b2('0x18'));var config=require(_0x29b2('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x29b2('0x1a'))['db'];function respondWithStatusCode(_0x5659b0,_0x33789f){_0x33789f=_0x33789f||0xcc;return function(_0x337dab){if(_0x337dab){return _0x5659b0[_0x29b2('0x1b')](_0x33789f);}return _0x5659b0[_0x29b2('0x1c')](_0x33789f)['end']();};}function respondWithResult(_0x414184,_0x16f968){_0x16f968=_0x16f968||0xc8;return function(_0x3d9b7b){if(_0x3d9b7b){return _0x414184['status'](_0x16f968)[_0x29b2('0x1d')](_0x3d9b7b);}};}function respondWithFilteredResult(_0x3a6c9b,_0x46fd73){return function(_0x1945f7){if(_0x1945f7){var _0x5b5ebb=typeof _0x46fd73[_0x29b2('0x1e')]==='undefined'&&typeof _0x46fd73[_0x29b2('0x1f')]===_0x29b2('0x20');var _0x26c040=_0x1945f7['count'];var _0x39dd41=_0x5b5ebb?0x0:_0x46fd73[_0x29b2('0x1e')];var _0x268b8d=_0x5b5ebb?_0x1945f7[_0x29b2('0x21')]:_0x46fd73[_0x29b2('0x1e')]+_0x46fd73[_0x29b2('0x1f')];var _0xf2ea49;if(_0x268b8d>=_0x26c040){_0x268b8d=_0x26c040;_0xf2ea49=0xc8;}else{_0xf2ea49=0xce;}_0x3a6c9b[_0x29b2('0x1c')](_0xf2ea49);return _0x3a6c9b[_0x29b2('0x22')](_0x29b2('0x23'),_0x39dd41+'-'+_0x268b8d+'/'+_0x26c040)['json'](_0x1945f7);}return null;};}function patchUpdates(_0x16e892){return function(_0x1efc76){try{jsonpatch[_0x29b2('0x24')](_0x1efc76,_0x16e892,!![]);}catch(_0x4f988f){return BPromise[_0x29b2('0x25')](_0x4f988f);}return _0x1efc76[_0x29b2('0x26')]();};}function saveUpdates(_0x1ba47e,_0x2ca4ee){return function(_0x26086e){if(_0x26086e){return _0x26086e[_0x29b2('0x27')](_0x1ba47e)[_0x29b2('0x28')](function(_0x5bd214){return _0x5bd214;});}return null;};}function removeEntity(_0x220693,_0x533621){return function(_0x23304d){if(_0x23304d){return _0x23304d[_0x29b2('0x29')]()['then'](function(){_0x220693[_0x29b2('0x1c')](0xcc)[_0x29b2('0x2a')]();});}};}function handleEntityNotFound(_0x224da1,_0x39d880){return function(_0x4be898){if(!_0x4be898){_0x224da1['sendStatus'](0x194);}return _0x4be898;};}function handleError(_0x19fe5b,_0x278fa3){_0x278fa3=_0x278fa3||0x1f4;return function(_0x59ed42){logger[_0x29b2('0x2b')](_0x59ed42[_0x29b2('0x2c')]);if(_0x59ed42[_0x29b2('0x2d')]){delete _0x59ed42[_0x29b2('0x2d')];}_0x19fe5b[_0x29b2('0x1c')](_0x278fa3)['send'](_0x59ed42);};}exports[_0x29b2('0x2e')]=function(_0x4d7087,_0x4a6053){var _0x106406={},_0x2a6af0={},_0x36dbf6={'count':0x0,'rows':[]};var _0x184522=_[_0x29b2('0x2f')](db[_0x29b2('0x30')]['rawAttributes'],function(_0x3fb4bc){return{'name':_0x3fb4bc[_0x29b2('0x31')],'type':_0x3fb4bc[_0x29b2('0x32')][_0x29b2('0x33')]};});_0x2a6af0[_0x29b2('0x34')]=_[_0x29b2('0x35')](_[_0x29b2('0x2f')](_0x184522,'name'),[_0x29b2('0x36')]);_0x2a6af0[_0x29b2('0x37')]=_[_0x29b2('0x38')](_0x4d7087['query']);_0x2a6af0['filters']=_[_0x29b2('0x39')](_0x2a6af0[_0x29b2('0x34')],_0x2a6af0['query']);_0x106406[_0x29b2('0x3a')]=_[_0x29b2('0x39')](_0x2a6af0['model'],qs[_0x29b2('0x3b')](_0x4d7087[_0x29b2('0x37')]['fields']));_0x106406['attributes']=_0x106406['attributes'][_0x29b2('0x3c')]?_0x106406[_0x29b2('0x3a')]:_0x2a6af0[_0x29b2('0x34')];if(!_0x4d7087[_0x29b2('0x37')][_0x29b2('0x3d')](_0x29b2('0x3e'))){_0x106406[_0x29b2('0x1f')]=qs[_0x29b2('0x1f')](_0x4d7087[_0x29b2('0x37')]['limit']);_0x106406[_0x29b2('0x1e')]=qs[_0x29b2('0x1e')](_0x4d7087[_0x29b2('0x37')][_0x29b2('0x1e')]);}_0x106406[_0x29b2('0x3f')]=qs['sort'](_0x4d7087[_0x29b2('0x37')][_0x29b2('0x40')]);_0x106406[_0x29b2('0x41')]=qs[_0x29b2('0x42')](_[_0x29b2('0x43')](_0x4d7087[_0x29b2('0x37')],_0x2a6af0['filters']),_0x184522);if(_0x4d7087['query'][_0x29b2('0x44')]){_0x106406[_0x29b2('0x41')]=_[_0x29b2('0x45')](_0x106406['where'],{'$or':_[_0x29b2('0x2f')](_0x184522,function(_0x8da4ba){if(_0x8da4ba[_0x29b2('0x32')]!==_0x29b2('0x46')){var _0x248d9e={};_0x248d9e[_0x8da4ba[_0x29b2('0x2d')]]={'$like':'%'+_0x4d7087['query'][_0x29b2('0x44')]+'%'};return _0x248d9e;}})});}_0x106406=_[_0x29b2('0x45')]({},_0x106406,_0x4d7087['options']);var _0x4d38a9={'where':_0x106406['where']};return db['VoiceRecording'][_0x29b2('0x21')](_0x4d38a9)['then'](function(_0x2fc6f5){_0x36dbf6[_0x29b2('0x21')]=_0x2fc6f5;if(_0x4d7087['query'][_0x29b2('0x47')]){_0x106406[_0x29b2('0x48')]=[{'all':!![]}];}return db[_0x29b2('0x30')][_0x29b2('0x49')](_0x106406);})[_0x29b2('0x28')](function(_0x2ead92){_0x36dbf6[_0x29b2('0x4a')]=_0x2ead92;return _0x36dbf6;})['then'](respondWithFilteredResult(_0x4a6053,_0x106406))['catch'](handleError(_0x4a6053,null));};exports[_0x29b2('0x4b')]=function(_0x336761,_0x16a4fc){var _0x4b1f1={'raw':![],'where':{'id':_0x336761[_0x29b2('0x4c')]['id']}},_0x1ede63={};_0x1ede63[_0x29b2('0x34')]=_[_0x29b2('0x38')](db[_0x29b2('0x30')]['rawAttributes']);_0x1ede63[_0x29b2('0x37')]=_[_0x29b2('0x38')](_0x336761['query']);_0x1ede63[_0x29b2('0x42')]=_[_0x29b2('0x39')](_0x1ede63[_0x29b2('0x34')],_0x1ede63[_0x29b2('0x37')]);_0x4b1f1[_0x29b2('0x3a')]=_[_0x29b2('0x39')](_0x1ede63[_0x29b2('0x34')],qs[_0x29b2('0x3b')](_0x336761['query']['fields']));_0x4b1f1['attributes']=_0x4b1f1[_0x29b2('0x3a')][_0x29b2('0x3c')]?_0x4b1f1[_0x29b2('0x3a')]:_0x1ede63[_0x29b2('0x34')];if(_0x336761[_0x29b2('0x37')]['includeAll']){_0x4b1f1[_0x29b2('0x48')]=[{'all':!![]}];}_0x4b1f1=_[_0x29b2('0x45')]({},_0x4b1f1,_0x336761[_0x29b2('0x4d')]);return db[_0x29b2('0x30')][_0x29b2('0x4e')](_0x4b1f1)[_0x29b2('0x28')](handleEntityNotFound(_0x16a4fc,null))[_0x29b2('0x28')](respondWithResult(_0x16a4fc,null))[_0x29b2('0x4f')](handleError(_0x16a4fc,null));};exports['create']=function(_0x216fef,_0x21e222){return db[_0x29b2('0x30')][_0x29b2('0x50')](_0x216fef[_0x29b2('0x51')],{})[_0x29b2('0x28')](respondWithResult(_0x21e222,0xc9))['catch'](handleError(_0x21e222,null));};exports[_0x29b2('0x27')]=function(_0x45ce30,_0x523e2d){if(_0x45ce30[_0x29b2('0x51')]['id']){delete _0x45ce30[_0x29b2('0x51')]['id'];}return db[_0x29b2('0x30')][_0x29b2('0x4e')]({'where':{'id':_0x45ce30[_0x29b2('0x4c')]['id']}})['then'](handleEntityNotFound(_0x523e2d,null))['then'](saveUpdates(_0x45ce30['body'],null))[_0x29b2('0x28')](respondWithResult(_0x523e2d,null))['catch'](handleError(_0x523e2d,null));};exports[_0x29b2('0x52')]=function(_0x55041b,_0x141ada){return db['VoiceRecording']['describe']()['then'](respondWithResult(_0x141ada,null))['catch'](handleError(_0x141ada,null));};exports[_0x29b2('0x53')]=function(_0x4f15ad,_0x178af4,_0x24d295){var _0x58ac77=require(_0x29b2('0x54'));var _0xb1a48c=![];var _0x313323={};if(_0x4f15ad['query'][_0x29b2('0x32')]&&_0x4f15ad['query']['type']==='uniqueid'){_0x313323[_0x29b2('0x55')]=_0x4f15ad[_0x29b2('0x4c')]['id'];}else{_0x313323['id']=_0x4f15ad[_0x29b2('0x4c')]['id'];}return db[_0x29b2('0x30')]['find']({'where':_0x313323,'attributes':['id',_0x29b2('0x56')],'raw':!![]})['then'](handleEntityNotFound(_0x178af4,null))[_0x29b2('0x28')](function(_0x298a87){if(_0x298a87){var _0x129f96=_0x298a87[_0x29b2('0x56')];var _0x3b90cf=util[_0x29b2('0x36')]('%s.cypher',_0x129f96);if(fs[_0x29b2('0x57')](_0x3b90cf)){_0xb1a48c=!![];return _0x58ac77['decryptFile'](_0x3b90cf,_0x129f96,config[_0x29b2('0x58')][_0x29b2('0x59')])[_0x29b2('0x28')](function(){return _0x298a87;});}return _0x298a87;}})['then'](function(_0x50c1dc){if(_0x50c1dc){var _0x4c7254=_0x50c1dc[_0x29b2('0x56')];if(!fs[_0x29b2('0x57')](_0x4c7254)){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))](_0x29b2('0x5c'));}if(_0x50c1dc[_0x29b2('0x5d')]){return _0x178af4[_0x29b2('0x53')](_0x4c7254,_0x50c1dc[_0x29b2('0x5d')]+path['extname'](_0x4c7254),function(){if(_0xb1a48c){fs[_0x29b2('0x5e')](_0x4c7254);}});}else{return _0x178af4[_0x29b2('0x53')](_0x4c7254,function(_0x11eda2){if(_0xb1a48c){fs[_0x29b2('0x5e')](_0x4c7254);}});}}})[_0x29b2('0x4f')](function(_0x5c9d96){if(_0x5c9d96[_0x29b2('0x5f')]==='VoiceRecording\x20not\x20found'){_0x178af4[_0x29b2('0x1c')](0x194)[_0x29b2('0x60')](_0x29b2('0x61'));}else{return handleError(_0x178af4,null);}});};exports[_0x29b2('0x62')]=function(_0x48f5ec,_0x193388,_0x1f7993){var _0x4d176f=require(_0x29b2('0x54'));var _0xa33814=![];var _0x324012={'$and':[db[_0x29b2('0x63')][_0x29b2('0x41')](db[_0x29b2('0x63')]['fn'](_0x29b2('0x64'),db['sequelize'][_0x29b2('0x65')](_0x29b2('0x55'))),_0x48f5ec[_0x29b2('0x37')][_0x29b2('0x66')])]};if(_0x48f5ec['query'][_0x29b2('0x32')]&&_0x48f5ec[_0x29b2('0x37')][_0x29b2('0x32')]==='uniqueid'){_0x324012[_0x29b2('0x67')][_0x29b2('0x68')]({'uniqueid':_0x48f5ec['params']['id']});}else{_0x324012['$and'][_0x29b2('0x68')]({'id':_0x48f5ec[_0x29b2('0x4c')]['id']});}return db['VoiceRecording'][_0x29b2('0x4e')]({'where':_0x324012,'attributes':['id',_0x29b2('0x56')],'raw':!![]})[_0x29b2('0x28')](handleEntityNotFound(_0x193388,null))['then'](function(_0x5710ba){if(_0x5710ba){var _0x447c13=util['format'](_0x29b2('0x69'),_0x5710ba[_0x29b2('0x56')]);if(fs['existsSync'](_0x447c13)){_0xa33814=!![];return _0x4d176f['decryptFile'](_0x447c13,_0x5710ba[_0x29b2('0x56')],config[_0x29b2('0x58')][_0x29b2('0x59')])[_0x29b2('0x28')](function(){return _0x5710ba;});}return _0x5710ba;}})[_0x29b2('0x28')](function(_0x6c8aa3){if(_0x6c8aa3){if(!fs['existsSync'](_0x6c8aa3['value'])){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))]('VoiceRecording\x20not\x20found');}if(_0x6c8aa3['filename']){return _0x193388['download'](_0x6c8aa3['value'],_0x6c8aa3[_0x29b2('0x5d')]+path['extname'](_0x6c8aa3[_0x29b2('0x56')]),function(){if(_0xa33814){fs[_0x29b2('0x5e')](_0x6c8aa3['value']);}});}else{return _0x193388[_0x29b2('0x53')](_0x6c8aa3[_0x29b2('0x56')],function(_0x50b41f){if(_0xa33814){fs[_0x29b2('0x5e')](_0x6c8aa3[_0x29b2('0x56')]);}});}}})[_0x29b2('0x4f')](handleError(_0x193388,null));};exports[_0x29b2('0x29')]=function(_0xc44c52,_0xc6ad04){return db[_0x29b2('0x30')][_0x29b2('0x4e')]({'where':{'id':_0xc44c52[_0x29b2('0x4c')]['id']}})[_0x29b2('0x28')](function(_0x45fb79){if(_['isNil'](_0x45fb79)){throw new ReferenceError('Entity\x20not\x20found');}return _0x45fb79;})[_0x29b2('0x28')](function(_0x4c1b0c){var _0x8f4458=_0x4c1b0c[_0x29b2('0x56')];logger[_0x29b2('0x6a')]('cancellazione\x20fisica\x20documento\x20%s',_0x8f4458);if(!_[_0x29b2('0x6b')](_0x4c1b0c[_0x29b2('0x56')])&&fs[_0x29b2('0x57')](_0x8f4458)){logger['info']('File:\x20\x22'+_0x8f4458+_0x29b2('0x6c'));fs[_0x29b2('0x6d')](_0x8f4458);}_0x8f4458=_0x8f4458+_0x29b2('0x6e');if(!_[_0x29b2('0x6b')](_0x4c1b0c[_0x29b2('0x56')])&&fs[_0x29b2('0x57')](_0x8f4458)){logger['info'](_0x29b2('0x6f')+_0x8f4458+_0x29b2('0x6c'));fs[_0x29b2('0x6d')](_0x8f4458);}return _0x4c1b0c;})[_0x29b2('0x28')](function(_0x1877d9){if(!_0x1877d9)throw new InternalError();return _0x1877d9[_0x29b2('0x29')]();})['then'](function(){_0xc6ad04[_0x29b2('0x1c')](0xcc)[_0x29b2('0x2a')]();})[_0x29b2('0x4f')](handleError(_0xc6ad04,null));};function getBucketslist(_0x42ea21,_0x4995f7,_0x1cf9f1){return new Promise(function(_0x97498d,_0x4ca441){var _0x4114fd=new AWS['S3']({'accessKeyId':_0x4995f7,'secretAccessKey':_0x42ea21,'region':_0x1cf9f1});_0x4114fd[_0x29b2('0x70')]({},function(_0x55f280,_0x148217){if(_0x55f280){return _0x4ca441(_0x55f280);}else{return _0x97498d(_0x148217);}});});}function createBucket(_0x56fa04,_0x27981a,_0x421230,_0xd3294f){return new Promise(function(_0x235749,_0x4987bd){var _0x419f5c=new AWS['S3']({'accessKeyId':_0x27981a,'secretAccessKey':_0x56fa04,'region':_0x421230});_0x419f5c['createBucket']({'Bucket':_0xd3294f},function(_0x3d203e,_0x5f22e2){if(_0x3d203e){return _0x4987bd(_0x3d203e);}else{return _0x235749(_0x5f22e2);}});});}function uploadFile(_0x1a01da,_0x271775,_0x2c8dac,_0x3d0a70,_0x212f04,_0x4665eb){return new Promise(function(_0x432722,_0x4a4e72){var _0x1b8b21=new AWS['S3']({'accessKeyId':_0x271775,'secretAccessKey':_0x1a01da,'region':_0x2c8dac});_0x1b8b21[_0x29b2('0x71')]({'Bucket':_0x3d0a70,'Key':_0x212f04,'Body':_0x4665eb},function(_0x1b5852,_0x5c36a9){if(_0x1b5852){return _0x4a4e72(_0x1b5852);}else{return _0x432722(_0x5c36a9);}});});}function startTranscribe(_0x2fcdb1,_0x23db61,_0x44e2ed,_0x1c4abe,_0xc03bdf,_0x86a050){return new Promise(function(_0x4f94ab,_0x3cb7b4){var _0x1c99fc=new AWS['TranscribeService']({'accessKeyId':_0x23db61,'secretAccessKey':_0x2fcdb1,'region':_0x44e2ed});_0x1c99fc['startTranscriptionJob']({'TranscriptionJobName':_0x1c4abe,'LanguageCode':_0xc03bdf,'Media':{'MediaFileUri':_0x86a050}},function(_0x51fd69,_0x1b5c62){if(_0x51fd69){return _0x3cb7b4(_0x51fd69);}else{return _0x4f94ab(_0x1b5c62);}});});}function transcribe(_0x1d7e31,_0xd0f011,_0x166c8f,_0x35bacd,_0x771539,_0x2ee545,_0x1e6e56){return new Promise(function(_0x7c3460,_0x2ae5b6){var _0x4621c6={};logger[_0x29b2('0x6a')](util[_0x29b2('0x36')](_0x29b2('0x72'),_0x1d7e31,_0x771539));return uploadFile(_0xd0f011,_0x166c8f,_0x35bacd,_0x771539,path['basename'](_0x2ee545),fs[_0x29b2('0x73')](_0x2ee545))[_0x29b2('0x28')](function(_0x44ab3e){logger[_0x29b2('0x6a')](util[_0x29b2('0x36')](_0x29b2('0x74'),_0x1d7e31,_0x771539,_0x44ab3e[_0x29b2('0x75')]));_0x4621c6[_0x29b2('0x76')]=_0x44ab3e[_0x29b2('0x77')];_0x4621c6[_0x29b2('0x78')]=_0x44ab3e[_0x29b2('0x75')];logger['info'](util[_0x29b2('0x36')](_0x29b2('0x79'),_0x1d7e31));return startTranscribe(_0xd0f011,_0x166c8f,_0x35bacd,uuidv4(),_0x1e6e56,_0x44ab3e[_0x29b2('0x75')]);})[_0x29b2('0x28')](function(_0x480204){logger['info'](util[_0x29b2('0x36')](_0x29b2('0x7a'),_0x1d7e31,_0x480204[_0x29b2('0x7b')][_0x29b2('0x7c')]));_0x4621c6['transcribeName']=_0x480204[_0x29b2('0x7b')][_0x29b2('0x7c')];_0x4621c6[_0x29b2('0x7d')]=_0x480204[_0x29b2('0x7b')]['TranscriptionJobStatus'];return _0x7c3460(_0x4621c6);})[_0x29b2('0x4f')](function(_0x3c2d29){return _0x2ae5b6(_0x3c2d29);});});}exports[_0x29b2('0x7e')]=function(_0x4b6b84,_0x3897e6,_0x466370){var _0x54d337;var _0x55c6c5;var _0x179184;var _0x17bde0=require('../../components/encryptor');return db[_0x29b2('0x30')][_0x29b2('0x7f')]({'where':{'id':_0x4b6b84[_0x29b2('0x4c')]['id']}})[_0x29b2('0x28')](function(_0x3d1542){if(_0x3d1542){var _0x5b0ba0=util[_0x29b2('0x36')](_0x29b2('0x69'),_0x3d1542[_0x29b2('0x56')]);if(fs[_0x29b2('0x57')](_0x5b0ba0)){cypher=!![];return _0x17bde0['decryptFile'](_0x5b0ba0,_0x3d1542[_0x29b2('0x56')],config['secrets']['recording'])[_0x29b2('0x28')](function(){return _0x3d1542;});}return _0x3d1542;}})[_0x29b2('0x28')](function(_0x3d12e9){if(!_0x3d12e9){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))]('Voice\x20Recording\x20not\x20found');}_0x55c6c5=_0x3d12e9;return db[_0x29b2('0x80')]['findOne']({'where':{'id':0x1}});})[_0x29b2('0x28')](handleEntityNotFound(_0x3897e6,null))[_0x29b2('0x28')](function(_0x23e511){if(_0x23e511){_0x54d337=_0x23e511;if(!_0x54d337[_0x29b2('0x81')]||!_0x54d337[_0x29b2('0x82')]||!_0x54d337[_0x29b2('0x83')]||!_0x54d337[_0x29b2('0x84')]||!_0x54d337[_0x29b2('0x76')]){throw new db['Sequelize'][(_0x29b2('0x5b'))](_0x29b2('0x85'));}if(_0x4b6b84[_0x29b2('0x51')][_0x29b2('0x86')]&&(!_0x54d337['sentiment']||!_0x54d337[_0x29b2('0x87')]||!_0x54d337[_0x29b2('0x88')]||!_0x54d337['language']||!_0x54d337[_0x29b2('0x76')])){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))]('Sentiment\x20Analysis\x20not\x20configured');}return db[_0x29b2('0x89')][_0x29b2('0x7f')]({'where':{'id':_0x54d337[_0x29b2('0x82')]}});}})[_0x29b2('0x28')](function(_0x5a7fad){if(!_0x5a7fad){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x5a7fad[_0x29b2('0x8a')]||!_0x5a7fad['data2']){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))](_0x29b2('0x8b'));}_0x179184=_0x5a7fad;return getBucketslist(_0x179184[_0x29b2('0x8a')],_0x179184['data2'],_0x54d337[_0x29b2('0x83')]);})[_0x29b2('0x28')](function(_0x4d9646){if(_0x4d9646&&_0x4d9646['Buckets']){var _0x4a145d=_[_0x29b2('0x4e')](_0x4d9646['Buckets'],function(_0x6ca795){return _0x6ca795[_0x29b2('0x8c')]===_0x54d337[_0x29b2('0x76')];});if(!_0x4a145d){logger[_0x29b2('0x6a')](util[_0x29b2('0x36')](_0x29b2('0x8d'),_0x4b6b84[_0x29b2('0x4c')]['id'],_0x54d337[_0x29b2('0x76')]));return createBucket(_0x179184[_0x29b2('0x8a')],_0x179184[_0x29b2('0x8e')],_0x54d337[_0x29b2('0x83')],_0x54d337[_0x29b2('0x76')]);}logger['info'](util[_0x29b2('0x36')](_0x29b2('0x8f'),_0x4b6b84[_0x29b2('0x4c')]['id'],_0x54d337['bucket']));return;}})[_0x29b2('0x28')](function(_0x48b032){if(_0x55c6c5['transcribeStatus']===_0x29b2('0x90')){return transcribe(_0x4b6b84['params']['id'],_0x179184['data1'],_0x179184[_0x29b2('0x8e')],_0x54d337[_0x29b2('0x83')],_0x54d337['bucket'],_0x55c6c5['value'],_0x54d337[_0x29b2('0x84')]);}else{logger['info'](util[_0x29b2('0x36')](_0x29b2('0x91'),_0x4b6b84[_0x29b2('0x4c')]['id']));return{'transcribeStatus':_0x29b2('0x92')};}})[_0x29b2('0x28')](function(_0x52487b){if(_0x52487b){_0x52487b[_0x29b2('0x93')]=_0x4b6b84['body'][_0x29b2('0x86')];return _0x55c6c5[_0x29b2('0x94')](_0x52487b);}})[_0x29b2('0x28')](respondWithResult(_0x3897e6,null))[_0x29b2('0x4f')](handleError(_0x3897e6,null));};function writeFile(_0x533f34,_0x728aa6){return new Promise(function(_0x2c4e99,_0x18936a){fs[_0x29b2('0x95')](_0x728aa6,_0x533f34,function(_0x1fd118,_0x1b522d){if(_0x1fd118){return _0x18936a(_0x1fd118);}else{return _0x2c4e99(_0x1b522d);}});});}exports[_0x29b2('0x96')]=function(_0x4cac4a,_0x581d90,_0x56e66b){return db[_0x29b2('0x30')][_0x29b2('0x7f')]({'where':{'id':_0x4cac4a[_0x29b2('0x4c')]['id']}})['then'](handleEntityNotFound(_0x581d90))[_0x29b2('0x28')](function(_0x14e984){if(_0x14e984&&_0x14e984['fileText']){var _0x2041de=_0x14e984['fileText'];var _0x178187=config[_0x29b2('0x97')]+_0x29b2('0x98')+_0x14e984['id']+_0x29b2('0x99');if(fs[_0x29b2('0x57')](_0x178187)){return _0x178187;}return writeFile(_0x2041de,_0x178187)[_0x29b2('0x28')](function(){return _0x178187;});}else{throw new db[(_0x29b2('0x5a'))]['ValidationError'](_0x29b2('0x9a'));}})['then'](function(_0x37b8d8){return _0x581d90[_0x29b2('0x53')](_0x37b8d8);})['catch'](handleError(_0x581d90));};
\ No newline at end of file
index 846a642..b2fda74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd8=['transcribeStatus','./voiceRecording.attributes','define','VoiceRecording','uniqueid'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x5cd8,0x1d2));var _0x85cd=function(_0x2bc73d,_0x11660e){_0x2bc73d=_0x2bc73d-0x0;var _0x5dd76e=_0x5cd8[_0x2bc73d];return _0x5dd76e;};'use strict';var attributes=require(_0x85cd('0x0'));module['exports']=function(_0x24bfe8,_0x32ee64){return _0x24bfe8[_0x85cd('0x1')](_0x85cd('0x2'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':_0x85cd('0x3'),'fields':['uniqueid']},{'name':_0x85cd('0x4'),'fields':[_0x85cd('0x4')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdadd=['./voiceRecording.attributes','define','VoiceRecording','voice_recordings','uniqueid','transcribeStatus'];(function(_0x316c42,_0x3391f0){var _0x2b38f7=function(_0x38d2cf){while(--_0x38d2cf){_0x316c42['push'](_0x316c42['shift']());}};_0x2b38f7(++_0x3391f0);}(_0xdadd,0x1c8));var _0xddad=function(_0x270a54,_0x307ff6){_0x270a54=_0x270a54-0x0;var _0x4d07d0=_0xdadd[_0x270a54];return _0x4d07d0;};'use strict';var attributes=require(_0xddad('0x0'));module['exports']=function(_0x34afe8,_0x5cafca){return _0x34afe8[_0xddad('0x1')](_0xddad('0x2'),attributes,{'tableName':_0xddad('0x3'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xddad('0x4')]},{'name':_0xddad('0x5'),'fields':[_0xddad('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
index 6d5b214..6a2f1f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7d1=['unlink','CreateVoiceRecording\x20file\x20encrypted','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','update','body','options','raw','where','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','VoiceRecording','create','existsSync','format','%s.cypher','value','encryptFile','secrets','recording'];(function(_0x271060,_0x3f86b1){var _0x40540b=function(_0x1735a7){while(--_0x1735a7){_0x271060['push'](_0x271060['shift']());}};_0x40540b(++_0x3f86b1);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x458b37,_0x3d5409){_0x458b37=_0x458b37-0x0;var _0x216144=_0xd7d1[_0x458b37];return _0x216144;};'use strict';var _=require(_0x1d7d('0x0'));var util=require(_0x1d7d('0x1'));var moment=require(_0x1d7d('0x2'));var BPromise=require(_0x1d7d('0x3'));var rs=require(_0x1d7d('0x4'));var fs=require('fs');var Redis=require(_0x1d7d('0x5'));var db=require(_0x1d7d('0x6'))['db'];var utils=require(_0x1d7d('0x7'));var logger=require(_0x1d7d('0x8'))(_0x1d7d('0x9'));var config=require(_0x1d7d('0xa'));var jayson=require(_0x1d7d('0xb'));var client=jayson[_0x1d7d('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x462ef8,_0x1aa456,_0x14dbf6){return new BPromise(function(_0x3675a2,_0xd6189e){return client[_0x1d7d('0xd')](_0x462ef8,_0x14dbf6)[_0x1d7d('0xe')](function(_0xa44223){logger[_0x1d7d('0xf')](_0x1d7d('0x10'),_0x1aa456,_0x1d7d('0x11'));logger['debug'](_0x1d7d('0x12'),_0x1aa456,'request\x20sent',JSON[_0x1d7d('0x13')](_0xa44223));if(_0xa44223[_0x1d7d('0x14')]){if(_0xa44223[_0x1d7d('0x14')][_0x1d7d('0x15')]===0x1f4){logger['error'](_0x1d7d('0x10'),_0x1aa456,_0xa44223['error']['message']);return _0xd6189e(_0xa44223[_0x1d7d('0x14')][_0x1d7d('0x16')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x1aa456,_0xa44223[_0x1d7d('0x14')][_0x1d7d('0x16')]);return _0x3675a2(_0xa44223[_0x1d7d('0x14')][_0x1d7d('0x16')]);}else{logger[_0x1d7d('0xf')]('VoiceRecording,\x20%s,\x20%s',_0x1aa456,_0x1d7d('0x11'));_0x3675a2(_0xa44223[_0x1d7d('0x17')]['message']);}})[_0x1d7d('0x18')](function(_0x162c3a){logger[_0x1d7d('0x14')](_0x1d7d('0x10'),_0x1aa456,_0x162c3a);_0xd6189e(_0x162c3a);});});}exports[_0x1d7d('0x19')]=function(_0x4db4f2){var _0x664e3f=this;return new Promise(function(_0x191024,_0x5cbb8f){return db['VoiceRecording'][_0x1d7d('0x1a')](_0x4db4f2[_0x1d7d('0x1b')],{'raw':_0x4db4f2[_0x1d7d('0x1c')]?_0x4db4f2[_0x1d7d('0x1c')][_0x1d7d('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4db4f2[_0x1d7d('0x1c')]?_0x4db4f2['options'][_0x1d7d('0x1e')]||null:null,'attributes':_0x4db4f2[_0x1d7d('0x1c')]?_0x4db4f2[_0x1d7d('0x1c')]['attributes']||null:null,'limit':_0x4db4f2[_0x1d7d('0x1c')]?_0x4db4f2[_0x1d7d('0x1c')]['limit']||null:null})['then'](function(_0x1dcaf2){logger[_0x1d7d('0xf')](_0x1d7d('0x19'),_0x4db4f2);logger['debug'](_0x1d7d('0x19'),_0x4db4f2,JSON[_0x1d7d('0x13')](_0x1dcaf2));_0x191024(_0x1dcaf2);})[_0x1d7d('0x18')](function(_0x21e59){logger['error'](_0x1d7d('0x19'),_0x21e59[_0x1d7d('0x16')],_0x4db4f2);_0x5cbb8f(_0x664e3f['error'](0x1f4,_0x21e59['message']));});});};exports[_0x1d7d('0x1f')]=function(_0x52c618){var _0x38c323=this;return new Promise(function(_0x2d4de4,_0x3bc6e8){var _0x22c40d=require(_0x1d7d('0x20'));var _0x59f827;return db[_0x1d7d('0x21')][_0x1d7d('0x22')]({'attributes':['id',_0x1d7d('0x23')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x78adbe){_0x59f827=_0x78adbe;return db[_0x1d7d('0x24')][_0x1d7d('0x25')](_0x52c618['body']);})['then'](function(_0x53e25c){if(_0x59f827[_0x1d7d('0x23')]&&fs[_0x1d7d('0x26')](_0x53e25c['value'])){var _0x1ebcbc=util[_0x1d7d('0x27')](_0x1d7d('0x28'),_0x53e25c[_0x1d7d('0x29')]);return _0x22c40d[_0x1d7d('0x2a')](_0x53e25c[_0x1d7d('0x29')],_0x1ebcbc,config[_0x1d7d('0x2b')][_0x1d7d('0x2c')])[_0x1d7d('0xe')](function(){fs[_0x1d7d('0x2d')](_0x53e25c['value']);logger['info'](_0x1d7d('0x2e'));return _0x53e25c;});}return _0x53e25c;})[_0x1d7d('0xe')](function(_0x90e852){logger[_0x1d7d('0xf')](_0x1d7d('0x1f'),_0x52c618);logger[_0x1d7d('0x2f')](_0x1d7d('0x1f'),_0x52c618,JSON[_0x1d7d('0x13')](_0x90e852));_0x2d4de4(_0x90e852);})[_0x1d7d('0x18')](function(_0x47b6b2){logger[_0x1d7d('0x14')](_0x1d7d('0x1f'),_0x47b6b2[_0x1d7d('0x16')],_0x52c618);_0x3bc6e8(_0x38c323[_0x1d7d('0x14')](0x1f4,_0x47b6b2['message']));});});};
\ No newline at end of file
+var _0x32f4=['unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','attributes','../../components/encryptor','findOne','callRecordingEncryption','existsSync','format','encryptFile','value','secrets','recording'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0x32f4,0x154));var _0x432f=function(_0x23b001,_0x236139){_0x23b001=_0x23b001-0x0;var _0x20d458=_0x32f4[_0x23b001];return _0x20d458;};'use strict';var _=require(_0x432f('0x0'));var util=require(_0x432f('0x1'));var moment=require(_0x432f('0x2'));var BPromise=require(_0x432f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x432f('0x4'));var db=require(_0x432f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x432f('0x6'))(_0x432f('0x7'));var config=require(_0x432f('0x8'));var jayson=require(_0x432f('0x9'));var client=jayson[_0x432f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5b5f08,_0x2f66fd,_0x32b062){return new BPromise(function(_0x4a5b56,_0x2a2ef6){return client['request'](_0x5b5f08,_0x32b062)[_0x432f('0xb')](function(_0x340fe9){logger[_0x432f('0xc')](_0x432f('0xd'),_0x2f66fd,_0x432f('0xe'));logger['debug'](_0x432f('0xf'),_0x2f66fd,'request\x20sent',JSON[_0x432f('0x10')](_0x340fe9));if(_0x340fe9['error']){if(_0x340fe9[_0x432f('0x11')][_0x432f('0x12')]===0x1f4){logger['error'](_0x432f('0xd'),_0x2f66fd,_0x340fe9[_0x432f('0x11')]['message']);return _0x2a2ef6(_0x340fe9[_0x432f('0x11')][_0x432f('0x13')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x2f66fd,_0x340fe9[_0x432f('0x11')][_0x432f('0x13')]);return _0x4a5b56(_0x340fe9[_0x432f('0x11')][_0x432f('0x13')]);}else{logger[_0x432f('0xc')]('VoiceRecording,\x20%s,\x20%s',_0x2f66fd,_0x432f('0xe'));_0x4a5b56(_0x340fe9[_0x432f('0x14')][_0x432f('0x13')]);}})[_0x432f('0x15')](function(_0x5bae29){logger[_0x432f('0x11')](_0x432f('0xd'),_0x2f66fd,_0x5bae29);_0x2a2ef6(_0x5bae29);});});}exports[_0x432f('0x16')]=function(_0x243cf){var _0x3cd5da=this;return new Promise(function(_0x129582,_0x5ae24e){return db[_0x432f('0x17')]['update'](_0x243cf[_0x432f('0x18')],{'raw':_0x243cf[_0x432f('0x19')]?_0x243cf[_0x432f('0x19')][_0x432f('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x243cf[_0x432f('0x19')]?_0x243cf[_0x432f('0x19')][_0x432f('0x1b')]||null:null,'attributes':_0x243cf[_0x432f('0x19')]?_0x243cf[_0x432f('0x19')][_0x432f('0x1c')]||null:null,'limit':_0x243cf[_0x432f('0x19')]?_0x243cf[_0x432f('0x19')]['limit']||null:null})['then'](function(_0x343d13){logger['info'](_0x432f('0x16'),_0x243cf);logger['debug'](_0x432f('0x16'),_0x243cf,JSON[_0x432f('0x10')](_0x343d13));_0x129582(_0x343d13);})[_0x432f('0x15')](function(_0x89ea50){logger[_0x432f('0x11')](_0x432f('0x16'),_0x89ea50['message'],_0x243cf);_0x5ae24e(_0x3cd5da[_0x432f('0x11')](0x1f4,_0x89ea50[_0x432f('0x13')]));});});};exports['CreateVoiceRecording']=function(_0x2cbde9){var _0x3e37ec=this;return new Promise(function(_0x2bcbb4,_0x23347e){var _0x44839=require(_0x432f('0x1d'));var _0x138a6a;return db['Setting'][_0x432f('0x1e')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0x432f('0xb')](function(_0x573cc5){_0x138a6a=_0x573cc5;return db[_0x432f('0x17')]['create'](_0x2cbde9[_0x432f('0x18')]);})['then'](function(_0x325a9c){if(_0x138a6a[_0x432f('0x1f')]&&fs[_0x432f('0x20')](_0x325a9c['value'])){var _0x6a116e=util[_0x432f('0x21')]('%s.cypher',_0x325a9c['value']);return _0x44839[_0x432f('0x22')](_0x325a9c[_0x432f('0x23')],_0x6a116e,config[_0x432f('0x24')][_0x432f('0x25')])[_0x432f('0xb')](function(){fs[_0x432f('0x26')](_0x325a9c['value']);logger['info'](_0x432f('0x27'));return _0x325a9c;});}return _0x325a9c;})[_0x432f('0xb')](function(_0x184203){logger['info'](_0x432f('0x28'),_0x2cbde9);logger[_0x432f('0x29')](_0x432f('0x28'),_0x2cbde9,JSON[_0x432f('0x10')](_0x184203));_0x2bcbb4(_0x184203);})[_0x432f('0x15')](function(_0x3ad632){logger[_0x432f('0x11')](_0x432f('0x28'),_0x3ad632['message'],_0x2cbde9);_0x23347e(_0x3e37ec['error'](0x1f4,_0x3ad632[_0x432f('0x13')]));});});};
\ No newline at end of file
index 4b53b18..e70a5e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef65=['path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','describe','show','post','put','/:id','delete','destroy','exports','util'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xef65,0x103));var _0x5ef6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xef65[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x5ef6('0x0'));var path=require(_0x5ef6('0x1'));var timeout=require(_0x5ef6('0x2'));var express=require(_0x5ef6('0x3'));var router=express[_0x5ef6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5ef6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5ef6('0x6'));var controller=require(_0x5ef6('0x7'));router[_0x5ef6('0x8')]('/',auth[_0x5ef6('0x9')](),controller[_0x5ef6('0xa')]);router[_0x5ef6('0x8')](_0x5ef6('0xb'),auth[_0x5ef6('0x9')](),controller[_0x5ef6('0xc')]);router[_0x5ef6('0x8')]('/:id',auth[_0x5ef6('0x9')](),controller[_0x5ef6('0xd')]);router[_0x5ef6('0xe')]('/',auth[_0x5ef6('0x9')](),controller['create']);router[_0x5ef6('0xf')](_0x5ef6('0x10'),auth[_0x5ef6('0x9')](),controller['update']);router[_0x5ef6('0x11')](_0x5ef6('0x10'),auth[_0x5ef6('0x9')](),controller[_0x5ef6('0x12')]);module[_0x5ef6('0x13')]=router;
\ No newline at end of file
+var _0x20db=['post','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x20db,0x1d9));var _0xb20d=function(_0x2bfef0,_0x571176){_0x2bfef0=_0x2bfef0-0x0;var _0x44249b=_0x20db[_0x2bfef0];return _0x44249b;};'use strict';var multer=require(_0xb20d('0x0'));var util=require(_0xb20d('0x1'));var path=require(_0xb20d('0x2'));var timeout=require(_0xb20d('0x3'));var express=require(_0xb20d('0x4'));var router=express[_0xb20d('0x5')]();var fs_extra=require(_0xb20d('0x6'));var auth=require(_0xb20d('0x7'));var interaction=require(_0xb20d('0x8'));var config=require('../../config/environment');var controller=require('./voiceTransferReport.controller');router[_0xb20d('0x9')]('/',auth[_0xb20d('0xa')](),controller[_0xb20d('0xb')]);router['get']('/describe',auth[_0xb20d('0xa')](),controller[_0xb20d('0xc')]);router['get']('/:id',auth[_0xb20d('0xa')](),controller['show']);router[_0xb20d('0xd')]('/',auth[_0xb20d('0xa')](),controller['create']);router[_0xb20d('0xe')]('/:id',auth[_0xb20d('0xa')](),controller[_0xb20d('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xb20d('0x10')]);module[_0xb20d('0x11')]=router;
\ No newline at end of file
index 1b03e78..7ff9aa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d2e=['blind','attended','STRING','Yes','moment','exports','ENUM'];(function(_0x3a1f29,_0x413bfd){var _0x2f93d7=function(_0x291f88){while(--_0x291f88){_0x3a1f29['push'](_0x3a1f29['shift']());}};_0x2f93d7(++_0x413bfd);}(_0x6d2e,0x97));var _0xe6d2=function(_0x43caa2,_0x1ffb73){_0x43caa2=_0x43caa2-0x0;var _0x51b342=_0x6d2e[_0x43caa2];return _0x51b342;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xe6d2('0x0'));module[_0xe6d2('0x1')]={'type':{'type':Sequelize[_0xe6d2('0x2')](_0xe6d2('0x3'),_0xe6d2('0x4'))},'result':{'type':Sequelize[_0xe6d2('0x5')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize[_0xe6d2('0x5')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0xe6d2('0x5')]},'transfereraccountcode':{'type':Sequelize[_0xe6d2('0x5')]},'transferercontext':{'type':Sequelize[_0xe6d2('0x5')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0xe6d2('0x5')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0xe6d2('0x5')]},'transfereecalleridname':{'type':Sequelize[_0xe6d2('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0xe6d2('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0xe6d2('0x5')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0xe6d2('0x5')]},'transfereelinkedid':{'type':Sequelize[_0xe6d2('0x5')]},'isexternal':{'type':Sequelize['ENUM'](_0xe6d2('0x6'),'No')},'context':{'type':Sequelize[_0xe6d2('0x5')]},'extension':{'type':Sequelize[_0xe6d2('0x5')]}};
\ No newline at end of file
+var _0x5107=['moment','exports','blind','STRING','ENUM','sequelize'];(function(_0x32cac1,_0x14441b){var _0x2b9ab2=function(_0x38d5c8){while(--_0x38d5c8){_0x32cac1['push'](_0x32cac1['shift']());}};_0x2b9ab2(++_0x14441b);}(_0x5107,0x1c1));var _0x7510=function(_0x824690,_0x4a5371){_0x824690=_0x824690-0x0;var _0x139df6=_0x5107[_0x824690];return _0x139df6;};'use strict';var Sequelize=require(_0x7510('0x0'));var moment=require(_0x7510('0x1'));module[_0x7510('0x2')]={'type':{'type':Sequelize['ENUM'](_0x7510('0x3'),'attended')},'result':{'type':Sequelize[_0x7510('0x4')]},'transfererchannel':{'type':Sequelize[_0x7510('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x7510('0x4')]},'transferercalleridname':{'type':Sequelize[_0x7510('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0x7510('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0x7510('0x4')]},'transfereraccountcode':{'type':Sequelize[_0x7510('0x4')]},'transferercontext':{'type':Sequelize[_0x7510('0x4')]},'transfererexten':{'type':Sequelize[_0x7510('0x4')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x7510('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0x7510('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x7510('0x4')]},'transfereecontext':{'type':Sequelize[_0x7510('0x4')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x7510('0x5')]('Yes','No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x7510('0x4')]}};
\ No newline at end of file
index 1a26471..a117b2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebc3=['reject','save','update','then','destroy','error','stack','name','index','map','VoiceTransferReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','includeAll','findAll','rows','catch','show','include','options','find','create','body','params','describe','eml-format','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/advancedSearch','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','apply'];(function(_0x206053,_0x422374){var _0x39e8db=function(_0x4d3d4c){while(--_0x4d3d4c){_0x206053['push'](_0x206053['shift']());}};_0x39e8db(++_0x422374);}(_0xebc3,0x71));var _0x3ebc=function(_0x2f237e,_0x5a78ff){_0x2f237e=_0x2f237e-0x0;var _0x52b67f=_0xebc3[_0x2f237e];return _0x52b67f;};'use strict';var emlformat=require(_0x3ebc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3ebc('0x1'));var jsonpatch=require(_0x3ebc('0x2'));var rp=require(_0x3ebc('0x3'));var moment=require(_0x3ebc('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3ebc('0x5'));var util=require(_0x3ebc('0x6'));var path=require(_0x3ebc('0x7'));var sox=require(_0x3ebc('0x8'));var csv=require(_0x3ebc('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3ebc('0xa'));var _=require(_0x3ebc('0xb'));var squel=require(_0x3ebc('0xc'));var crypto=require(_0x3ebc('0xd'));var jsforce=require(_0x3ebc('0xe'));var deskjs=require(_0x3ebc('0xf'));var toCsv=require(_0x3ebc('0x9'));var querystring=require('querystring');var Papa=require(_0x3ebc('0x10'));var Redis=require(_0x3ebc('0x11'));var authService=require(_0x3ebc('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x3ebc('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3ebc('0x14'))('api');var utils=require(_0x3ebc('0x15'));var config=require(_0x3ebc('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17e9ce,_0x82d457){_0x82d457=_0x82d457||0xcc;return function(_0x3f5f19){if(_0x3f5f19){return _0x17e9ce[_0x3ebc('0x17')](_0x82d457);}return _0x17e9ce[_0x3ebc('0x18')](_0x82d457)[_0x3ebc('0x19')]();};}function respondWithResult(_0x5c1fd6,_0x3ed237){_0x3ed237=_0x3ed237||0xc8;return function(_0x44f88c){if(_0x44f88c){return _0x5c1fd6[_0x3ebc('0x18')](_0x3ed237)[_0x3ebc('0x1a')](_0x44f88c);}};}function respondWithFilteredResult(_0x399011,_0x25a146){return function(_0x481116){if(_0x481116){var _0x3efdbe=typeof _0x25a146[_0x3ebc('0x1b')]===_0x3ebc('0x1c')&&typeof _0x25a146[_0x3ebc('0x1d')]===_0x3ebc('0x1c');var _0x26d6e1=_0x481116['count'];var _0x2d2e16=_0x3efdbe?0x0:_0x25a146[_0x3ebc('0x1b')];var _0x248cec=_0x3efdbe?_0x481116[_0x3ebc('0x1e')]:_0x25a146[_0x3ebc('0x1b')]+_0x25a146[_0x3ebc('0x1d')];var _0x4c0f13;if(_0x248cec>=_0x26d6e1){_0x248cec=_0x26d6e1;_0x4c0f13=0xc8;}else{_0x4c0f13=0xce;}_0x399011[_0x3ebc('0x18')](_0x4c0f13);return _0x399011[_0x3ebc('0x1f')]('Content-Range',_0x2d2e16+'-'+_0x248cec+'/'+_0x26d6e1)[_0x3ebc('0x1a')](_0x481116);}return null;};}function patchUpdates(_0x5cbf74){return function(_0x1eec94){try{jsonpatch[_0x3ebc('0x20')](_0x1eec94,_0x5cbf74,!![]);}catch(_0x3a1d89){return BPromise[_0x3ebc('0x21')](_0x3a1d89);}return _0x1eec94[_0x3ebc('0x22')]();};}function saveUpdates(_0x3b2118,_0x3938a0){return function(_0x3edcdb){if(_0x3edcdb){return _0x3edcdb[_0x3ebc('0x23')](_0x3b2118)[_0x3ebc('0x24')](function(_0xf6d7c8){return _0xf6d7c8;});}return null;};}function removeEntity(_0x17aada,_0x30b2ef){return function(_0x3780be){if(_0x3780be){return _0x3780be[_0x3ebc('0x25')]()[_0x3ebc('0x24')](function(){_0x17aada[_0x3ebc('0x18')](0xcc)[_0x3ebc('0x19')]();});}};}function handleEntityNotFound(_0x36429c,_0x412217){return function(_0x5c6efc){if(!_0x5c6efc){_0x36429c[_0x3ebc('0x17')](0x194);}return _0x5c6efc;};}function handleError(_0x377bde,_0x4c31a0){_0x4c31a0=_0x4c31a0||0x1f4;return function(_0x21c027){logger[_0x3ebc('0x26')](_0x21c027[_0x3ebc('0x27')]);if(_0x21c027[_0x3ebc('0x28')]){delete _0x21c027['name'];}_0x377bde[_0x3ebc('0x18')](_0x4c31a0)['send'](_0x21c027);};}exports[_0x3ebc('0x29')]=function(_0x4e848e,_0x563459){var _0x49ada3={},_0x3358c2={},_0x1e2959={'count':0x0,'rows':[]};var _0xba67e5=_[_0x3ebc('0x2a')](db[_0x3ebc('0x2b')][_0x3ebc('0x2c')],function(_0x3c13c0){return{'name':_0x3c13c0[_0x3ebc('0x2d')],'type':_0x3c13c0[_0x3ebc('0x2e')]['key']};});_0x3358c2[_0x3ebc('0x2f')]=_[_0x3ebc('0x2a')](_0xba67e5,_0x3ebc('0x28'));_0x3358c2[_0x3ebc('0x30')]=_[_0x3ebc('0x31')](_0x4e848e['query']);_0x3358c2['filters']=_[_0x3ebc('0x32')](_0x3358c2['model'],_0x3358c2['query']);_0x49ada3[_0x3ebc('0x33')]=_[_0x3ebc('0x32')](_0x3358c2['model'],qs[_0x3ebc('0x34')](_0x4e848e[_0x3ebc('0x30')][_0x3ebc('0x34')]));_0x49ada3[_0x3ebc('0x33')]=_0x49ada3['attributes']['length']?_0x49ada3[_0x3ebc('0x33')]:_0x3358c2['model'];if(!_0x4e848e[_0x3ebc('0x30')][_0x3ebc('0x35')](_0x3ebc('0x36'))){_0x49ada3[_0x3ebc('0x1d')]=qs[_0x3ebc('0x1d')](_0x4e848e[_0x3ebc('0x30')]['limit']);_0x49ada3['offset']=qs[_0x3ebc('0x1b')](_0x4e848e[_0x3ebc('0x30')][_0x3ebc('0x1b')]);}_0x49ada3['order']=qs[_0x3ebc('0x37')](_0x4e848e[_0x3ebc('0x30')][_0x3ebc('0x37')]);_0x49ada3[_0x3ebc('0x38')]=qs[_0x3ebc('0x39')](_[_0x3ebc('0x3a')](_0x4e848e[_0x3ebc('0x30')],_0x3358c2[_0x3ebc('0x39')]),_0xba67e5);if(_0x4e848e[_0x3ebc('0x30')]['filter']){_0x49ada3[_0x3ebc('0x38')]=_[_0x3ebc('0x3b')](_0x49ada3[_0x3ebc('0x38')],{'$or':_[_0x3ebc('0x2a')](_0xba67e5,function(_0x233b59){if(_0x233b59[_0x3ebc('0x2e')]!==_0x3ebc('0x3c')){var _0x383910={};_0x383910[_0x233b59[_0x3ebc('0x28')]]={'$like':'%'+_0x4e848e[_0x3ebc('0x30')]['filter']+'%'};return _0x383910;}})});}_0x49ada3=_[_0x3ebc('0x3b')]({},_0x49ada3,_0x4e848e['options']);var _0x2b401b={'where':_0x49ada3[_0x3ebc('0x38')]};return db['VoiceTransferReport'][_0x3ebc('0x1e')](_0x2b401b)[_0x3ebc('0x24')](function(_0x3085da){_0x1e2959[_0x3ebc('0x1e')]=_0x3085da;if(_0x4e848e['query'][_0x3ebc('0x3d')]){_0x49ada3['include']=[{'all':!![]}];}return db[_0x3ebc('0x2b')][_0x3ebc('0x3e')](_0x49ada3);})[_0x3ebc('0x24')](function(_0x42f1a0){_0x1e2959[_0x3ebc('0x3f')]=_0x42f1a0;return _0x1e2959;})[_0x3ebc('0x24')](respondWithFilteredResult(_0x563459,_0x49ada3))[_0x3ebc('0x40')](handleError(_0x563459,null));};exports[_0x3ebc('0x41')]=function(_0x58f09e,_0x38529d){var _0x1ecb51={'raw':!![],'where':{'id':_0x58f09e['params']['id']}},_0x485c36={};_0x485c36['model']=_[_0x3ebc('0x31')](db['VoiceTransferReport']['rawAttributes']);_0x485c36['query']=_[_0x3ebc('0x31')](_0x58f09e[_0x3ebc('0x30')]);_0x485c36['filters']=_[_0x3ebc('0x32')](_0x485c36[_0x3ebc('0x2f')],_0x485c36[_0x3ebc('0x30')]);_0x1ecb51[_0x3ebc('0x33')]=_[_0x3ebc('0x32')](_0x485c36[_0x3ebc('0x2f')],qs[_0x3ebc('0x34')](_0x58f09e['query'][_0x3ebc('0x34')]));_0x1ecb51[_0x3ebc('0x33')]=_0x1ecb51[_0x3ebc('0x33')]['length']?_0x1ecb51['attributes']:_0x485c36[_0x3ebc('0x2f')];if(_0x58f09e['query'][_0x3ebc('0x3d')]){_0x1ecb51[_0x3ebc('0x42')]=[{'all':!![]}];}_0x1ecb51=_[_0x3ebc('0x3b')]({},_0x1ecb51,_0x58f09e[_0x3ebc('0x43')]);return db['VoiceTransferReport'][_0x3ebc('0x44')](_0x1ecb51)[_0x3ebc('0x24')](handleEntityNotFound(_0x38529d,null))[_0x3ebc('0x24')](respondWithResult(_0x38529d,null))[_0x3ebc('0x40')](handleError(_0x38529d,null));};exports[_0x3ebc('0x45')]=function(_0x46a711,_0x56dc0d){return db['VoiceTransferReport'][_0x3ebc('0x45')](_0x46a711[_0x3ebc('0x46')],{})[_0x3ebc('0x24')](respondWithResult(_0x56dc0d,0xc9))[_0x3ebc('0x40')](handleError(_0x56dc0d,null));};exports[_0x3ebc('0x23')]=function(_0xf9ee4e,_0x41309c){if(_0xf9ee4e[_0x3ebc('0x46')]['id']){delete _0xf9ee4e['body']['id'];}return db[_0x3ebc('0x2b')][_0x3ebc('0x44')]({'where':{'id':_0xf9ee4e[_0x3ebc('0x47')]['id']}})['then'](handleEntityNotFound(_0x41309c,null))[_0x3ebc('0x24')](saveUpdates(_0xf9ee4e[_0x3ebc('0x46')],null))['then'](respondWithResult(_0x41309c,null))[_0x3ebc('0x40')](handleError(_0x41309c,null));};exports[_0x3ebc('0x25')]=function(_0x123df8,_0x3185c4){return db[_0x3ebc('0x2b')][_0x3ebc('0x44')]({'where':{'id':_0x123df8[_0x3ebc('0x47')]['id']}})[_0x3ebc('0x24')](handleEntityNotFound(_0x3185c4,null))['then'](removeEntity(_0x3185c4,null))[_0x3ebc('0x40')](handleError(_0x3185c4,null));};exports[_0x3ebc('0x48')]=function(_0x220fd8,_0x2f6541){return db[_0x3ebc('0x2b')]['describe']()['then'](respondWithResult(_0x2f6541,null))['catch'](handleError(_0x2f6541,null));};
\ No newline at end of file
+var _0x2b36=['key','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','options','VoiceTransferReport','includeAll','findAll','rows','show','params','include','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','apply','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName'];(function(_0x158552,_0x307bcd){var _0x479b31=function(_0x25fef1){while(--_0x25fef1){_0x158552['push'](_0x158552['shift']());}};_0x479b31(++_0x307bcd);}(_0x2b36,0x6e));var _0x62b3=function(_0x2b5422,_0x55a475){_0x2b5422=_0x2b5422-0x0;var _0x4c7d28=_0x2b36[_0x2b5422];return _0x4c7d28;};'use strict';var emlformat=require(_0x62b3('0x0'));var rimraf=require(_0x62b3('0x1'));var zipdir=require(_0x62b3('0x2'));var jsonpatch=require(_0x62b3('0x3'));var rp=require('request-promise');var moment=require(_0x62b3('0x4'));var BPromise=require(_0x62b3('0x5'));var Mustache=require(_0x62b3('0x6'));var util=require(_0x62b3('0x7'));var path=require(_0x62b3('0x8'));var sox=require(_0x62b3('0x9'));var csv=require(_0x62b3('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x62b3('0xb'));var _=require(_0x62b3('0xc'));var squel=require(_0x62b3('0xd'));var crypto=require('crypto');var jsforce=require(_0x62b3('0xe'));var deskjs=require(_0x62b3('0xf'));var toCsv=require(_0x62b3('0xa'));var querystring=require(_0x62b3('0x10'));var Papa=require(_0x62b3('0x11'));var Redis=require('ioredis');var authService=require(_0x62b3('0x12'));var qs=require(_0x62b3('0x13'));var as=require(_0x62b3('0x14'));var hardwareService=require(_0x62b3('0x15'));var logger=require(_0x62b3('0x16'))('api');var utils=require(_0x62b3('0x17'));var config=require(_0x62b3('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x62b3('0x19'))['db'];function respondWithStatusCode(_0x4dc463,_0x512ec7){_0x512ec7=_0x512ec7||0xcc;return function(_0x4dbf8f){if(_0x4dbf8f){return _0x4dc463['sendStatus'](_0x512ec7);}return _0x4dc463[_0x62b3('0x1a')](_0x512ec7)[_0x62b3('0x1b')]();};}function respondWithResult(_0xfd315f,_0x151901){_0x151901=_0x151901||0xc8;return function(_0x2c0014){if(_0x2c0014){return _0xfd315f[_0x62b3('0x1a')](_0x151901)[_0x62b3('0x1c')](_0x2c0014);}};}function respondWithFilteredResult(_0xe4017f,_0x45d9f8){return function(_0x3f9174){if(_0x3f9174){var _0x3f61e8=typeof _0x45d9f8[_0x62b3('0x1d')]===_0x62b3('0x1e')&&typeof _0x45d9f8['limit']==='undefined';var _0x4e6479=_0x3f9174[_0x62b3('0x1f')];var _0x2786be=_0x3f61e8?0x0:_0x45d9f8['offset'];var _0x3c6237=_0x3f61e8?_0x3f9174['count']:_0x45d9f8['offset']+_0x45d9f8['limit'];var _0xaeb4cc;if(_0x3c6237>=_0x4e6479){_0x3c6237=_0x4e6479;_0xaeb4cc=0xc8;}else{_0xaeb4cc=0xce;}_0xe4017f['status'](_0xaeb4cc);return _0xe4017f['set']('Content-Range',_0x2786be+'-'+_0x3c6237+'/'+_0x4e6479)['json'](_0x3f9174);}return null;};}function patchUpdates(_0x4c77a8){return function(_0x7d6b71){try{jsonpatch[_0x62b3('0x20')](_0x7d6b71,_0x4c77a8,!![]);}catch(_0x36d7e4){return BPromise['reject'](_0x36d7e4);}return _0x7d6b71[_0x62b3('0x21')]();};}function saveUpdates(_0x9cae42,_0x50111f){return function(_0x1c5a86){if(_0x1c5a86){return _0x1c5a86[_0x62b3('0x22')](_0x9cae42)['then'](function(_0x3bd83f){return _0x3bd83f;});}return null;};}function removeEntity(_0x39ae08,_0x2feb28){return function(_0xa1eea0){if(_0xa1eea0){return _0xa1eea0[_0x62b3('0x23')]()[_0x62b3('0x24')](function(){_0x39ae08[_0x62b3('0x1a')](0xcc)[_0x62b3('0x1b')]();});}};}function handleEntityNotFound(_0x2866e9,_0x3b09ce){return function(_0x18364f){if(!_0x18364f){_0x2866e9[_0x62b3('0x25')](0x194);}return _0x18364f;};}function handleError(_0x548948,_0x44d4b7){_0x44d4b7=_0x44d4b7||0x1f4;return function(_0x2bcd08){logger[_0x62b3('0x26')](_0x2bcd08[_0x62b3('0x27')]);if(_0x2bcd08[_0x62b3('0x28')]){delete _0x2bcd08[_0x62b3('0x28')];}_0x548948[_0x62b3('0x1a')](_0x44d4b7)[_0x62b3('0x29')](_0x2bcd08);};}exports[_0x62b3('0x2a')]=function(_0x6c3806,_0x3db0fb){var _0x1274a4={},_0x17f1ef={},_0x5c3298={'count':0x0,'rows':[]};var _0x413b40=_[_0x62b3('0x2b')](db['VoiceTransferReport'][_0x62b3('0x2c')],function(_0x113cca){return{'name':_0x113cca[_0x62b3('0x2d')],'type':_0x113cca['type'][_0x62b3('0x2e')]};});_0x17f1ef[_0x62b3('0x2f')]=_['map'](_0x413b40,_0x62b3('0x28'));_0x17f1ef['query']=_[_0x62b3('0x30')](_0x6c3806['query']);_0x17f1ef[_0x62b3('0x31')]=_['intersection'](_0x17f1ef[_0x62b3('0x2f')],_0x17f1ef[_0x62b3('0x32')]);_0x1274a4[_0x62b3('0x33')]=_[_0x62b3('0x34')](_0x17f1ef[_0x62b3('0x2f')],qs[_0x62b3('0x35')](_0x6c3806[_0x62b3('0x32')][_0x62b3('0x35')]));_0x1274a4[_0x62b3('0x33')]=_0x1274a4[_0x62b3('0x33')][_0x62b3('0x36')]?_0x1274a4[_0x62b3('0x33')]:_0x17f1ef['model'];if(!_0x6c3806[_0x62b3('0x32')][_0x62b3('0x37')](_0x62b3('0x38'))){_0x1274a4[_0x62b3('0x39')]=qs['limit'](_0x6c3806[_0x62b3('0x32')][_0x62b3('0x39')]);_0x1274a4[_0x62b3('0x1d')]=qs[_0x62b3('0x1d')](_0x6c3806['query'][_0x62b3('0x1d')]);}_0x1274a4[_0x62b3('0x3a')]=qs['sort'](_0x6c3806['query'][_0x62b3('0x3b')]);_0x1274a4[_0x62b3('0x3c')]=qs[_0x62b3('0x31')](_[_0x62b3('0x3d')](_0x6c3806[_0x62b3('0x32')],_0x17f1ef[_0x62b3('0x31')]),_0x413b40);if(_0x6c3806[_0x62b3('0x32')][_0x62b3('0x3e')]){_0x1274a4[_0x62b3('0x3c')]=_[_0x62b3('0x3f')](_0x1274a4['where'],{'$or':_[_0x62b3('0x2b')](_0x413b40,function(_0x2e26ca){if(_0x2e26ca[_0x62b3('0x40')]!=='VIRTUAL'){var _0x3a2ce1={};_0x3a2ce1[_0x2e26ca[_0x62b3('0x28')]]={'$like':'%'+_0x6c3806[_0x62b3('0x32')]['filter']+'%'};return _0x3a2ce1;}})});}_0x1274a4=_[_0x62b3('0x3f')]({},_0x1274a4,_0x6c3806[_0x62b3('0x41')]);var _0x1a952c={'where':_0x1274a4[_0x62b3('0x3c')]};return db[_0x62b3('0x42')][_0x62b3('0x1f')](_0x1a952c)['then'](function(_0x120b44){_0x5c3298[_0x62b3('0x1f')]=_0x120b44;if(_0x6c3806[_0x62b3('0x32')][_0x62b3('0x43')]){_0x1274a4['include']=[{'all':!![]}];}return db[_0x62b3('0x42')][_0x62b3('0x44')](_0x1274a4);})[_0x62b3('0x24')](function(_0x2ee581){_0x5c3298[_0x62b3('0x45')]=_0x2ee581;return _0x5c3298;})[_0x62b3('0x24')](respondWithFilteredResult(_0x3db0fb,_0x1274a4))['catch'](handleError(_0x3db0fb,null));};exports[_0x62b3('0x46')]=function(_0x3b6153,_0x10111b){var _0x2c49b2={'raw':!![],'where':{'id':_0x3b6153[_0x62b3('0x47')]['id']}},_0x5f344c={};_0x5f344c[_0x62b3('0x2f')]=_[_0x62b3('0x30')](db['VoiceTransferReport'][_0x62b3('0x2c')]);_0x5f344c['query']=_[_0x62b3('0x30')](_0x3b6153['query']);_0x5f344c[_0x62b3('0x31')]=_['intersection'](_0x5f344c[_0x62b3('0x2f')],_0x5f344c[_0x62b3('0x32')]);_0x2c49b2['attributes']=_[_0x62b3('0x34')](_0x5f344c[_0x62b3('0x2f')],qs['fields'](_0x3b6153[_0x62b3('0x32')][_0x62b3('0x35')]));_0x2c49b2['attributes']=_0x2c49b2[_0x62b3('0x33')]['length']?_0x2c49b2['attributes']:_0x5f344c['model'];if(_0x3b6153[_0x62b3('0x32')][_0x62b3('0x43')]){_0x2c49b2[_0x62b3('0x48')]=[{'all':!![]}];}_0x2c49b2=_[_0x62b3('0x3f')]({},_0x2c49b2,_0x3b6153['options']);return db[_0x62b3('0x42')][_0x62b3('0x49')](_0x2c49b2)[_0x62b3('0x24')](handleEntityNotFound(_0x10111b,null))[_0x62b3('0x24')](respondWithResult(_0x10111b,null))[_0x62b3('0x4a')](handleError(_0x10111b,null));};exports['create']=function(_0x1a272c,_0x490dd9){return db[_0x62b3('0x42')][_0x62b3('0x4b')](_0x1a272c['body'],{})[_0x62b3('0x24')](respondWithResult(_0x490dd9,0xc9))[_0x62b3('0x4a')](handleError(_0x490dd9,null));};exports[_0x62b3('0x22')]=function(_0x562682,_0x104746){if(_0x562682[_0x62b3('0x4c')]['id']){delete _0x562682[_0x62b3('0x4c')]['id'];}return db[_0x62b3('0x42')][_0x62b3('0x49')]({'where':{'id':_0x562682['params']['id']}})[_0x62b3('0x24')](handleEntityNotFound(_0x104746,null))[_0x62b3('0x24')](saveUpdates(_0x562682[_0x62b3('0x4c')],null))['then'](respondWithResult(_0x104746,null))[_0x62b3('0x4a')](handleError(_0x104746,null));};exports[_0x62b3('0x23')]=function(_0x6b41d9,_0x56b4f3){return db[_0x62b3('0x42')][_0x62b3('0x49')]({'where':{'id':_0x6b41d9['params']['id']}})[_0x62b3('0x24')](handleEntityNotFound(_0x56b4f3,null))[_0x62b3('0x24')](removeEntity(_0x56b4f3,null))[_0x62b3('0x4a')](handleError(_0x56b4f3,null));};exports[_0x62b3('0x4d')]=function(_0x54ccbd,_0x470f67){return db[_0x62b3('0x42')][_0x62b3('0x4d')]()['then'](respondWithResult(_0x470f67,null))[_0x62b3('0x4a')](handleError(_0x470f67,null));};
\ No newline at end of file
index b7bb2e7..4243373 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6707=['util','../../config/logger','api','moment','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','report_call_transfer','lodash'];(function(_0x2c5e3b,_0x237fb9){var _0xfd6239=function(_0x57c2f5){while(--_0x57c2f5){_0x2c5e3b['push'](_0x2c5e3b['shift']());}};_0xfd6239(++_0x237fb9);}(_0x6707,0xc5));var _0x7670=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x6707[_0x24f31b];return _0x488401;};'use strict';var _=require(_0x7670('0x0'));var util=require(_0x7670('0x1'));var logger=require(_0x7670('0x2'))(_0x7670('0x3'));var moment=require(_0x7670('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7670('0x5'));var rimraf=require(_0x7670('0x6'));var config=require(_0x7670('0x7'));var attributes=require(_0x7670('0x8'));module[_0x7670('0x9')]=function(_0xad6fa1,_0x562196){return _0xad6fa1['define']('VoiceTransferReport',attributes,{'tableName':_0x7670('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7d56=['path','rimraf','../../config/environment','exports','define','VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x7d56,0xe4));var _0x67d5=function(_0x43115e,_0x1ed9d2){_0x43115e=_0x43115e-0x0;var _0x3ddd74=_0x7d56[_0x43115e];return _0x3ddd74;};'use strict';var _=require(_0x67d5('0x0'));var util=require(_0x67d5('0x1'));var logger=require(_0x67d5('0x2'))(_0x67d5('0x3'));var moment=require(_0x67d5('0x4'));var BPromise=require('bluebird');var rp=require(_0x67d5('0x5'));var fs=require('fs');var path=require(_0x67d5('0x6'));var rimraf=require(_0x67d5('0x7'));var config=require(_0x67d5('0x8'));var attributes=require('./voiceTransferReport.attributes');module[_0x67d5('0x9')]=function(_0x5bc09a,_0x4fba0e){return _0x5bc09a[_0x67d5('0xa')](_0x67d5('0xb'),attributes,{'tableName':_0x67d5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c8a0f8f..93d7442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3f9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','body','options','raw','then','lodash','util'];(function(_0x377b66,_0x4bbfe7){var _0x19a8c6=function(_0x567a3f){while(--_0x567a3f){_0x377b66['push'](_0x377b66['shift']());}};_0x19a8c6(++_0x4bbfe7);}(_0xe3f9,0xc2));var _0x9e3f=function(_0x59eb02,_0xdba397){_0x59eb02=_0x59eb02-0x0;var _0x259391=_0xe3f9[_0x59eb02];return _0x259391;};'use strict';var _=require(_0x9e3f('0x0'));var util=require(_0x9e3f('0x1'));var moment=require(_0x9e3f('0x2'));var BPromise=require(_0x9e3f('0x3'));var rs=require(_0x9e3f('0x4'));var fs=require('fs');var Redis=require(_0x9e3f('0x5'));var db=require(_0x9e3f('0x6'))['db'];var utils=require(_0x9e3f('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x9e3f('0x8'));var jayson=require(_0x9e3f('0x9'));var client=jayson['client'][_0x9e3f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4cd95a,_0x8c579d,_0x271224){return new BPromise(function(_0x46f8aa,_0xea488){return client[_0x9e3f('0xb')](_0x4cd95a,_0x271224)['then'](function(_0x40f3b7){logger[_0x9e3f('0xc')](_0x9e3f('0xd'),_0x8c579d,_0x9e3f('0xe'));logger[_0x9e3f('0xf')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x8c579d,_0x9e3f('0xe'),JSON[_0x9e3f('0x10')](_0x40f3b7));if(_0x40f3b7[_0x9e3f('0x11')]){if(_0x40f3b7[_0x9e3f('0x11')][_0x9e3f('0x12')]===0x1f4){logger['error'](_0x9e3f('0xd'),_0x8c579d,_0x40f3b7[_0x9e3f('0x11')][_0x9e3f('0x13')]);return _0xea488(_0x40f3b7[_0x9e3f('0x11')][_0x9e3f('0x13')]);}logger[_0x9e3f('0x11')](_0x9e3f('0xd'),_0x8c579d,_0x40f3b7[_0x9e3f('0x11')]['message']);return _0x46f8aa(_0x40f3b7[_0x9e3f('0x11')][_0x9e3f('0x13')]);}else{logger['info'](_0x9e3f('0xd'),_0x8c579d,_0x9e3f('0xe'));_0x46f8aa(_0x40f3b7[_0x9e3f('0x14')][_0x9e3f('0x13')]);}})[_0x9e3f('0x15')](function(_0x4ed549){logger[_0x9e3f('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x8c579d,_0x4ed549);_0xea488(_0x4ed549);});});}exports[_0x9e3f('0x16')]=function(_0x255cd4){var _0x1727cd=this;return new Promise(function(_0x47b3d8,_0x49e776){return db[_0x9e3f('0x17')]['create'](_0x255cd4[_0x9e3f('0x18')],{'raw':_0x255cd4[_0x9e3f('0x19')]?_0x255cd4['options'][_0x9e3f('0x1a')]===undefined?!![]:![]:!![]})[_0x9e3f('0x1b')](function(_0x3d81a0){logger['info'](_0x9e3f('0x16'),_0x255cd4);logger[_0x9e3f('0xf')](_0x9e3f('0x16'),_0x255cd4,JSON[_0x9e3f('0x10')](_0x3d81a0));_0x47b3d8(_0x3d81a0);})[_0x9e3f('0x15')](function(_0x3fd2e5){logger[_0x9e3f('0x11')]('CreateVoiceTransferReport',_0x3fd2e5['message'],_0x255cd4);_0x49e776(_0x1727cd[_0x9e3f('0x11')](0x1f4,_0x3fd2e5['message']));});});};
\ No newline at end of file
+var _0x253c=['client','http','request','then','VoiceTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','VoiceTransferReport','create','body','options','raw','info','CreateVoiceTransferReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0xa183d9,_0x22e449){var _0x4cff67=function(_0x4cfdf5){while(--_0x4cfdf5){_0xa183d9['push'](_0xa183d9['shift']());}};_0x4cff67(++_0x22e449);}(_0x253c,0x13f));var _0xc253=function(_0x55bf2a,_0x4d41e6){_0x55bf2a=_0x55bf2a-0x0;var _0x2d3b1e=_0x253c[_0x55bf2a];return _0x2d3b1e;};'use strict';var _=require(_0xc253('0x0'));var util=require(_0xc253('0x1'));var moment=require(_0xc253('0x2'));var BPromise=require(_0xc253('0x3'));var rs=require(_0xc253('0x4'));var fs=require('fs');var Redis=require(_0xc253('0x5'));var db=require(_0xc253('0x6'))['db'];var utils=require(_0xc253('0x7'));var logger=require(_0xc253('0x8'))(_0xc253('0x9'));var config=require(_0xc253('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xc253('0xb')][_0xc253('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x52b88f,_0x1e84f4,_0x3c60c8){return new BPromise(function(_0x51ba94,_0x2aab04){return client[_0xc253('0xd')](_0x52b88f,_0x3c60c8)[_0xc253('0xe')](function(_0x1b207b){logger['info'](_0xc253('0xf'),_0x1e84f4,'request\x20sent');logger[_0xc253('0x10')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x1e84f4,_0xc253('0x11'),JSON[_0xc253('0x12')](_0x1b207b));if(_0x1b207b['error']){if(_0x1b207b[_0xc253('0x13')][_0xc253('0x14')]===0x1f4){logger[_0xc253('0x13')](_0xc253('0xf'),_0x1e84f4,_0x1b207b[_0xc253('0x13')][_0xc253('0x15')]);return _0x2aab04(_0x1b207b[_0xc253('0x13')][_0xc253('0x15')]);}logger[_0xc253('0x13')]('VoiceTransferReport,\x20%s,\x20%s',_0x1e84f4,_0x1b207b[_0xc253('0x13')][_0xc253('0x15')]);return _0x51ba94(_0x1b207b[_0xc253('0x13')]['message']);}else{logger['info'](_0xc253('0xf'),_0x1e84f4,_0xc253('0x11'));_0x51ba94(_0x1b207b[_0xc253('0x16')][_0xc253('0x15')]);}})['catch'](function(_0x4ca357){logger[_0xc253('0x13')](_0xc253('0xf'),_0x1e84f4,_0x4ca357);_0x2aab04(_0x4ca357);});});}exports['CreateVoiceTransferReport']=function(_0x48e147){var _0x3a4738=this;return new Promise(function(_0x982b88,_0x43f739){return db[_0xc253('0x17')][_0xc253('0x18')](_0x48e147[_0xc253('0x19')],{'raw':_0x48e147[_0xc253('0x1a')]?_0x48e147[_0xc253('0x1a')][_0xc253('0x1b')]===undefined?!![]:![]:!![]})[_0xc253('0xe')](function(_0x21f329){logger[_0xc253('0x1c')](_0xc253('0x1d'),_0x48e147);logger[_0xc253('0x10')](_0xc253('0x1d'),_0x48e147,JSON['stringify'](_0x21f329));_0x982b88(_0x21f329);})['catch'](function(_0xf28750){logger[_0xc253('0x13')](_0xc253('0x1d'),_0xf28750['message'],_0x48e147);_0x43f739(_0x3a4738[_0xc253('0x13')](0x1f4,_0xf28750[_0xc253('0x15')]));});});};
\ No newline at end of file
index f2aefe8..7d70925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['/unhold','unhold','/calls','calls','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','/originate','isAuthenticated','isWebrtcLicence','originate','post','/hangup','hangup','/answer','answer','/hold','hold'];(function(_0x5becd6,_0x13e651){var _0x3b7b78=function(_0x2193b3){while(--_0x2193b3){_0x5becd6['push'](_0x5becd6['shift']());}};_0x3b7b78(++_0x13e651);}(_0x34e8,0x12c));var _0x834e=function(_0x2a2c13,_0x320f5d){_0x2a2c13=_0x2a2c13-0x0;var _0x1aff40=_0x34e8[_0x2a2c13];return _0x1aff40;};'use strict';var express=require(_0x834e('0x0'));var router=express[_0x834e('0x1')]();var auth=require(_0x834e('0x2'));var controller=require(_0x834e('0x3'));router['post'](_0x834e('0x4'),auth[_0x834e('0x5')](),auth[_0x834e('0x6')](),controller[_0x834e('0x7')]);router[_0x834e('0x8')](_0x834e('0x9'),auth[_0x834e('0x5')](),auth['isWebrtcLicence'](),controller[_0x834e('0xa')]);router['post'](_0x834e('0xb'),auth[_0x834e('0x5')](),auth[_0x834e('0x6')](),controller[_0x834e('0xc')]);router[_0x834e('0x8')](_0x834e('0xd'),auth[_0x834e('0x5')](),auth[_0x834e('0x6')](),controller[_0x834e('0xe')]);router[_0x834e('0x8')](_0x834e('0xf'),auth[_0x834e('0x5')](),auth[_0x834e('0x6')](),controller[_0x834e('0x10')]);router[_0x834e('0x8')](_0x834e('0x11'),auth[_0x834e('0x5')](),auth['isWebrtcLicence'](),controller[_0x834e('0x12')]);router[_0x834e('0x8')]('/transfer',auth[_0x834e('0x5')](),auth[_0x834e('0x6')](),controller[_0x834e('0x13')]);module[_0x834e('0x14')]=router;
\ No newline at end of file
+var _0xdace=['unhold','calls','/transfer','transfer','exports','express','../../components/auth/service','./webbar.controller','post','isAuthenticated','isWebrtcLicence','originate','hangup','/answer','/hold','/unhold'];(function(_0x269f14,_0x38df6a){var _0x373158=function(_0x364ebf){while(--_0x364ebf){_0x269f14['push'](_0x269f14['shift']());}};_0x373158(++_0x38df6a);}(_0xdace,0xc5));var _0xedac=function(_0x234ae1,_0x42bdd6){_0x234ae1=_0x234ae1-0x0;var _0x227ba0=_0xdace[_0x234ae1];return _0x227ba0;};'use strict';var express=require(_0xedac('0x0'));var router=express['Router']();var auth=require(_0xedac('0x1'));var controller=require(_0xedac('0x2'));router[_0xedac('0x3')]('/originate',auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller[_0xedac('0x6')]);router[_0xedac('0x3')]('/hangup',auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller[_0xedac('0x7')]);router['post'](_0xedac('0x8'),auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller['answer']);router[_0xedac('0x3')](_0xedac('0x9'),auth[_0xedac('0x4')](),auth['isWebrtcLicence'](),controller['hold']);router[_0xedac('0x3')](_0xedac('0xa'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xedac('0xb')]);router[_0xedac('0x3')]('/calls',auth[_0xedac('0x4')](),auth['isWebrtcLicence'](),controller[_0xedac('0xc')]);router[_0xedac('0x3')](_0xedac('0xd'),auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller[_0xedac('0xe')]);module[_0xedac('0xf')]=router;
\ No newline at end of file
index cce969b..91df124 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa75b=['handleError:','error','stack','name','status','send','then','code','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','sessionId','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','length','json','userId','callerId','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','hangup','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','UserId','conference','webbar:conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','transfer\x20executed!','path','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','validate','string','number','userId\x20is\x20required','sessionId\x20is\x20required','info','stringify','emit','log'];(function(_0x49876e,_0x52dfde){var _0x33f4d4=function(_0x42c022){while(--_0x42c022){_0x49876e['push'](_0x49876e['shift']());}};_0x33f4d4(++_0x52dfde);}(_0xa75b,0x170));var _0xba75=function(_0x3f508b,_0x415b89){_0x3f508b=_0x3f508b-0x0;var _0x57aa3d=_0xa75b[_0x3f508b];return _0x57aa3d;};'use strict';var path=require(_0xba75('0x0'));var fs=require('fs');var _=require('lodash');var db=require('../../mysqldb')['db'];var config=require(_0xba75('0x1'));var util=require(_0xba75('0x2'));var BPromise=require(_0xba75('0x3'));var jayson=require(_0xba75('0x4'));var amiClient=jayson[_0xba75('0x5')][_0xba75('0x6')]({'port':0x232a});var logger=require(_0xba75('0x7'))(_0xba75('0x8'));var Redis=require(_0xba75('0x9'));config[_0xba75('0xa')]=_[_0xba75('0xb')](config[_0xba75('0xa')],{'host':_0xba75('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require(_0xba75('0xd'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xba75('0xe'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0xba75('0xe')},'callbackUrl':{'type':_0xba75('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0xba75('0xf'),'required':[!![],_0xba75('0x10')]},'sessionId':{'type':_0xba75('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xba75('0xf'),'required':[!![],_0xba75('0x10')]},'sessionId':{'type':_0xba75('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xba75('0xf'),'required':[!![],_0xba75('0x10')]},'sessionId':{'type':_0xba75('0xe'),'required':[!![],_0xba75('0x11')]},'transferNumber':{'type':'string','required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0xba75('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xba75('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xba75('0xf'),'required':[!![],_0xba75('0x10')]},'sessionId':{'type':_0xba75('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xba75('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0xba75('0xf'),'required':[!![],_0xba75('0x10')]}});function emit(_0x4028f9,_0x41c9e5,_0x51112b){logger[_0xba75('0x12')](_0x4028f9,_0x41c9e5,JSON[_0xba75('0x13')](_0x51112b));io['to'](_0x4028f9)[_0xba75('0x14')](_0x41c9e5,_0x51112b);}function handleError(_0x47be93){return function(_0x2822af){console[_0xba75('0x15')](_0xba75('0x16'),_0x2822af,_0x2822af instanceof RangeError);logger[_0xba75('0x17')](_0x2822af[_0xba75('0x18')]);if(_0x2822af instanceof RangeError){if(_0x2822af[_0xba75('0x19')]){delete _0x2822af['name'];}_0x47be93[_0xba75('0x1a')](0x194)[_0xba75('0x1b')](_0x2822af);}else{if(_0x2822af['name']){delete _0x2822af['name'];}_0x47be93[_0xba75('0x1a')](0x1f4)[_0xba75('0x1b')](_0x2822af);}};}function checkError(){return function(_0x496cfc){if(!_0x496cfc){throw new RangeError('NotFound');}return _0x496cfc;};}function respondWithRpcPromise(_0x30f482,_0x4e79a9){return new BPromise(function(_0x1b8a36,_0x2ece41){var _0x19b2d7=amiClient;return _0x19b2d7['request'](_0x30f482,_0x4e79a9)[_0xba75('0x1c')](function(_0x221d5e){if(_0x221d5e[_0xba75('0x17')]){if(_0x221d5e[_0xba75('0x17')][_0xba75('0x1d')]===0x1f4){return _0x2ece41(_0x221d5e[_0xba75('0x17')]['message']);}return _0x1b8a36(_0x221d5e[_0xba75('0x17')][_0xba75('0x1e')]);}else{_0x1b8a36(_0x221d5e[_0xba75('0x1f')]);}})[_0xba75('0x20')](function(_0x1caa6){_0x2ece41(_0x1caa6);});});}function getAgent(_0x44b1d4){return db[_0xba75('0x21')][_0xba75('0x22')]({'where':{'id':_0x44b1d4,'role':_0xba75('0x23')}})[_0xba75('0x1c')](checkError());}function getAgentCheckSession(_0x47ddff,_0x4c8d02){return new BPromise(function(_0x4e1987,_0x240522){var _0x4856be=respondWithRpcPromise(_0xba75('0x24'));var _0x58ea2d=getAgent(_0x47ddff);Promise[_0xba75('0x25')]([_0x4856be,_0x58ea2d])[_0xba75('0x1c')](function(_0x20ac78){var _0x4edc2e=_0x20ac78[0x0];var _0x3a1fd3=_0x20ac78[0x1];var _0x62cf49=_[_0xba75('0x26')](_0x4edc2e[_0xba75('0x27')],function(_0x5d9f78){return _0x5d9f78['UserId']==_0x3a1fd3['id']&&_0x5d9f78[_0xba75('0x28')]==_0x4c8d02;});if(_0x62cf49['length']==0x1){_0x4e1987(_0x3a1fd3);}else{_0x240522(new RangeError(_0xba75('0x29')+_0x4c8d02+_0xba75('0x2a')));}});});}exports[_0xba75('0x2b')]=function(_0x32166a,_0x4b4d69){logger[_0xba75('0x12')](_0xba75('0x2c'),_0x32166a['body']);var _0x33a732=originateValidation[_0xba75('0xd')](_0x32166a[_0xba75('0x2d')]);if(_0x33a732[_0xba75('0x2e')]>0x0){return _0x4b4d69['status'](0x190)[_0xba75('0x2f')](_0x33a732);}var _0x3a1610=_0x32166a['body'][_0xba75('0x30')];var _0x6ea4fc=_0x32166a[_0xba75('0x2d')]['callNumber'];var _0x29334a=_0x32166a[_0xba75('0x2d')][_0xba75('0x31')];var _0x381cb=_0x32166a[_0xba75('0x2d')][_0xba75('0x32')];return getAgent(_0x3a1610)[_0xba75('0x1c')](function(_0x4c9fb2){logger['info'](_0xba75('0x33'),_0x4c9fb2[_0xba75('0x19')]);emit(util[_0xba75('0x34')]('user:%s',_0x4c9fb2[_0xba75('0x19')]),_0xba75('0x35'),{'callNumber':_0x6ea4fc,'callerId':_0x29334a,'callbackUrl':_0x381cb});return _0x4b4d69['status'](0xc8)['json']({'error':![],'message':_0xba75('0x36')});})[_0xba75('0x20')](handleError(_0x4b4d69));};exports[_0xba75('0x37')]=function(_0x1243e8,_0x92882d){logger['info']('hangup\x20fired:',_0x1243e8[_0xba75('0x2d')]);var _0x22b335=hangupValidation[_0xba75('0xd')](_0x1243e8[_0xba75('0x2d')]);if(_0x22b335[_0xba75('0x2e')]>0x0){return _0x92882d[_0xba75('0x1a')](0x190)[_0xba75('0x2f')](_0x22b335);}var _0x5dad31=_0x1243e8[_0xba75('0x2d')][_0xba75('0x30')];var _0x5bec5f=_0x1243e8[_0xba75('0x2d')][_0xba75('0x28')];return getAgent(_0x5dad31)[_0xba75('0x1c')](function(_0x45d8cd){logger[_0xba75('0x12')](_0xba75('0x33'),_0x45d8cd[_0xba75('0x19')]);emit(util['format'](_0xba75('0x38'),_0x45d8cd['name']),_0xba75('0x39'),{'sessionId':_0x5bec5f});return _0x92882d['status'](0xc8)[_0xba75('0x2f')]({'error':![],'message':_0xba75('0x3a')});})[_0xba75('0x20')](handleError(_0x92882d));};exports[_0xba75('0x3b')]=function(_0x24d80b,_0x30338c){logger[_0xba75('0x12')](_0xba75('0x3c'),_0x24d80b[_0xba75('0x2d')]);var _0x5c7c7f=answerValidation[_0xba75('0xd')](_0x24d80b[_0xba75('0x2d')]);if(_0x5c7c7f['length']>0x0){return _0x30338c[_0xba75('0x1a')](0x190)[_0xba75('0x2f')](_0x5c7c7f);}var _0x1130ac=_0x24d80b['body']['userId'];var _0x5c6491=_0x24d80b['body'][_0xba75('0x28')];return getAgent(_0x1130ac)['then'](function(_0x46e9b9){logger[_0xba75('0x12')](_0xba75('0x33'),_0x46e9b9[_0xba75('0x19')]);emit(util[_0xba75('0x34')]('user:%s',_0x46e9b9['name']),_0xba75('0x3d'),{'sessionId':_0x5c6491});return _0x30338c['status'](0xc8)[_0xba75('0x2f')]({'error':![],'message':'answer\x20executed!'});})[_0xba75('0x20')](handleError(_0x30338c));};exports[_0xba75('0x3e')]=function(_0x22e5b4,_0x3983dc){logger['info'](_0xba75('0x3f'),_0x22e5b4[_0xba75('0x2d')]);var _0x254dc7=holdValidation[_0xba75('0xd')](_0x22e5b4[_0xba75('0x2d')]);if(_0x254dc7[_0xba75('0x2e')]>0x0){return _0x3983dc[_0xba75('0x1a')](0x190)[_0xba75('0x2f')](_0x254dc7);}var _0x51cd22=_0x22e5b4[_0xba75('0x2d')][_0xba75('0x30')];var _0x7c297b=_0x22e5b4[_0xba75('0x2d')][_0xba75('0x28')];return getAgent(_0x51cd22)['then'](function(_0x2a1f84){logger[_0xba75('0x12')](_0xba75('0x33'),_0x2a1f84[_0xba75('0x19')]);emit(util[_0xba75('0x34')](_0xba75('0x38'),_0x2a1f84[_0xba75('0x19')]),'webbar:hold',{'sessionId':_0x7c297b});return _0x3983dc[_0xba75('0x1a')](0xc8)[_0xba75('0x2f')]({'error':![],'message':_0xba75('0x40')});})['catch'](handleError(_0x3983dc));};exports[_0xba75('0x41')]=function(_0x29b4fc,_0x559f6f){logger['info'](_0xba75('0x42'),_0x29b4fc['body']);var _0x49a4df=unholdValidation[_0xba75('0xd')](_0x29b4fc['body']);if(_0x49a4df[_0xba75('0x2e')]>0x0){return _0x559f6f[_0xba75('0x1a')](0x190)[_0xba75('0x2f')](_0x49a4df);}var _0x70474=_0x29b4fc[_0xba75('0x2d')]['userId'];var _0xfa79e6=_0x29b4fc[_0xba75('0x2d')]['sessionId'];return getAgent(_0x70474)[_0xba75('0x1c')](function(_0x19a08f){logger[_0xba75('0x12')](_0xba75('0x33'),_0x19a08f[_0xba75('0x19')]);emit(util['format'](_0xba75('0x38'),_0x19a08f[_0xba75('0x19')]),'webbar:unhold',{'sessionId':_0xfa79e6});return _0x559f6f[_0xba75('0x1a')](0xc8)[_0xba75('0x2f')]({'error':![],'message':_0xba75('0x43')});})[_0xba75('0x20')](handleError(_0x559f6f));};exports[_0xba75('0x44')]=function(_0x3b6490,_0x49fb61){logger[_0xba75('0x12')](_0xba75('0x45'),_0x49fb61[_0xba75('0x2d')]);var _0x429e26=callsValidation[_0xba75('0xd')](_0x3b6490[_0xba75('0x2d')]);if(_0x429e26['length']>0x0){return _0x49fb61['status'](0x190)['json'](_0x429e26);}var _0x4cda26=_0x3b6490[_0xba75('0x2d')][_0xba75('0x30')];var _0x2991e5=respondWithRpcPromise(_0xba75('0x24'));var _0x3716c6=getAgent(_0x4cda26);return Promise[_0xba75('0x25')]([_0x2991e5,_0x3716c6])[_0xba75('0x1c')](function(_0x5cfedd){var _0x1c4707=_0x5cfedd[0x0];var _0x1e7500=_0x5cfedd[0x1];var _0x287f30=_[_0xba75('0x26')](_0x1c4707['rows'],function(_0xb7b3a4){return _0xb7b3a4[_0xba75('0x46')]==_0x1e7500['id'];});return _0x49fb61['status'](0xc8)[_0xba75('0x2f')]({'count':_0x287f30['length'],'rows':_0x287f30});})[_0xba75('0x20')](handleError(_0x49fb61));};exports[_0xba75('0x47')]=function(_0x57eceb,_0x276757){logger[_0xba75('0x12')]('conference\x20fired:',_0x57eceb['body']);var _0x3d9420=conferenceValidation['validate'](_0x57eceb[_0xba75('0x2d')]);if(_0x3d9420['length']>0x0){return _0x276757[_0xba75('0x1a')](0x190)[_0xba75('0x2f')](_0x3d9420);}var _0x46c43c=_0x57eceb[_0xba75('0x2d')][_0xba75('0x30')];return getAgent(_0x46c43c)['then'](function(_0xf02890){logger[_0xba75('0x12')]('entityFound:',_0xf02890[_0xba75('0x19')]);emit(util[_0xba75('0x34')](_0xba75('0x38'),_0xf02890[_0xba75('0x19')]),_0xba75('0x48'));return _0x276757[_0xba75('0x1a')](0xc8)[_0xba75('0x2f')]({'error':![],'message':_0xba75('0x49')});})[_0xba75('0x20')](handleError(_0x276757));};exports[_0xba75('0x4a')]=function(_0xa0a92,_0x9da35c){logger['info']('transfer\x20fired:',_0xa0a92[_0xba75('0x2d')]);var _0x31e3b6=transferValidation[_0xba75('0xd')](_0xa0a92[_0xba75('0x2d')]);if(_0x31e3b6[_0xba75('0x2e')]>0x0){return _0x9da35c[_0xba75('0x1a')](0x190)[_0xba75('0x2f')](_0x31e3b6);}var _0x115798=_0xa0a92[_0xba75('0x2d')][_0xba75('0x30')];var _0x2b686e=_0xa0a92['body'][_0xba75('0x28')];var _0x5c1e1d=_0xa0a92[_0xba75('0x2d')][_0xba75('0x4b')];return getAgent(_0x115798)[_0xba75('0x1c')](function(_0x43b73b){logger[_0xba75('0x12')](_0xba75('0x33'),_0x43b73b['name']);emit(util[_0xba75('0x34')]('user:%s',_0x43b73b[_0xba75('0x19')]),_0xba75('0x4c'),{'sessionId':_0x2b686e,'transferNumber':_0x5c1e1d});return _0x9da35c['status'](0xc8)['json']({'error':![],'message':_0xba75('0x4d')});})[_0xba75('0x20')](handleError(_0x9da35c));};
\ No newline at end of file
+var _0x1306=['name','status','send','code','catch','User','agent','VoiceChannels','all','then','filter','rows','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callbackUrl','entityFound:','user:%s','originate\x20executed!','hangup','hangup\x20fired:','sessionId','format','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','transferNumber\x20is\x20required','info','log','handleError:','error','stack'];(function(_0xc2c6fb,_0x1f8589){var _0x3450fb=function(_0x2ca94d){while(--_0x2ca94d){_0xc2c6fb['push'](_0xc2c6fb['shift']());}};_0x3450fb(++_0x1f8589);}(_0x1306,0x17a));var _0x6130=function(_0x1179c9,_0x3db642){_0x1179c9=_0x1179c9-0x0;var _0x2027f1=_0x1306[_0x1179c9];return _0x2027f1;};'use strict';var path=require(_0x6130('0x0'));var fs=require('fs');var _=require(_0x6130('0x1'));var db=require(_0x6130('0x2'))['db'];var config=require(_0x6130('0x3'));var util=require(_0x6130('0x4'));var BPromise=require(_0x6130('0x5'));var jayson=require(_0x6130('0x6'));var amiClient=jayson[_0x6130('0x7')][_0x6130('0x8')]({'port':0x232a});var logger=require(_0x6130('0x9'))(_0x6130('0xa'));var Redis=require(_0x6130('0xb'));config[_0x6130('0xc')]=_[_0x6130('0xd')](config[_0x6130('0xc')],{'host':_0x6130('0xe'),'port':0x18eb});var io=require(_0x6130('0xf'))(new Redis(config[_0x6130('0xc')]));var Schema=require(_0x6130('0x10'));var originateValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'callNumber':{'type':_0x6130('0x13'),'required':[!![],_0x6130('0x14')]},'callerId':{'type':_0x6130('0x13')},'callbackUrl':{'type':_0x6130('0x13')}});var hangupValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x6130('0x13'),'required':[!![],_0x6130('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]}});var conferenceValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]}});function emit(_0x39b444,_0x274659,_0x3298f0){logger[_0x6130('0x16')](_0x39b444,_0x274659,JSON['stringify'](_0x3298f0));io['to'](_0x39b444)['emit'](_0x274659,_0x3298f0);}function handleError(_0x1f80e0){return function(_0x49803e){console[_0x6130('0x17')](_0x6130('0x18'),_0x49803e,_0x49803e instanceof RangeError);logger[_0x6130('0x19')](_0x49803e[_0x6130('0x1a')]);if(_0x49803e instanceof RangeError){if(_0x49803e[_0x6130('0x1b')]){delete _0x49803e['name'];}_0x1f80e0[_0x6130('0x1c')](0x194)['send'](_0x49803e);}else{if(_0x49803e[_0x6130('0x1b')]){delete _0x49803e[_0x6130('0x1b')];}_0x1f80e0[_0x6130('0x1c')](0x1f4)[_0x6130('0x1d')](_0x49803e);}};}function checkError(){return function(_0x42f498){if(!_0x42f498){throw new RangeError('NotFound');}return _0x42f498;};}function respondWithRpcPromise(_0x5be413,_0x2c01cd){return new BPromise(function(_0x534390,_0x30b4f2){var _0x289c7b=amiClient;return _0x289c7b['request'](_0x5be413,_0x2c01cd)['then'](function(_0x54fc67){if(_0x54fc67[_0x6130('0x19')]){if(_0x54fc67['error'][_0x6130('0x1e')]===0x1f4){return _0x30b4f2(_0x54fc67['error']['message']);}return _0x534390(_0x54fc67['error']['message']);}else{_0x534390(_0x54fc67['result']);}})[_0x6130('0x1f')](function(_0x1ba07d){_0x30b4f2(_0x1ba07d);});});}function getAgent(_0x4d7442){return db[_0x6130('0x20')]['findOne']({'where':{'id':_0x4d7442,'role':_0x6130('0x21')}})['then'](checkError());}function getAgentCheckSession(_0x5787a6,_0x9196d1){return new BPromise(function(_0x456231,_0x401a31){var _0x2997fd=respondWithRpcPromise(_0x6130('0x22'));var _0x392386=getAgent(_0x5787a6);Promise[_0x6130('0x23')]([_0x2997fd,_0x392386])[_0x6130('0x24')](function(_0x14dff0){var _0x5809e4=_0x14dff0[0x0];var _0x5363cc=_0x14dff0[0x1];var _0x383c56=_[_0x6130('0x25')](_0x5809e4[_0x6130('0x26')],function(_0x4345ac){return _0x4345ac[_0x6130('0x27')]==_0x5363cc['id']&&_0x4345ac['sessionId']==_0x9196d1;});if(_0x383c56[_0x6130('0x28')]==0x1){_0x456231(_0x5363cc);}else{_0x401a31(new RangeError(_0x6130('0x29')+_0x9196d1+_0x6130('0x2a')));}});});}exports[_0x6130('0x2b')]=function(_0x76dfa6,_0x4cf1d3){logger[_0x6130('0x16')](_0x6130('0x2c'),_0x76dfa6[_0x6130('0x2d')]);var _0x4b0c9c=originateValidation[_0x6130('0x10')](_0x76dfa6[_0x6130('0x2d')]);if(_0x4b0c9c[_0x6130('0x28')]>0x0){return _0x4cf1d3[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x4b0c9c);}var _0x6389a3=_0x76dfa6[_0x6130('0x2d')][_0x6130('0x2f')];var _0x25fabf=_0x76dfa6['body'][_0x6130('0x30')];var _0x4df5ed=_0x76dfa6['body']['callerId'];var _0x1ffc85=_0x76dfa6[_0x6130('0x2d')][_0x6130('0x31')];return getAgent(_0x6389a3)[_0x6130('0x24')](function(_0x438cde){logger[_0x6130('0x16')](_0x6130('0x32'),_0x438cde[_0x6130('0x1b')]);emit(util['format'](_0x6130('0x33'),_0x438cde[_0x6130('0x1b')]),'webbar:originate',{'callNumber':_0x25fabf,'callerId':_0x4df5ed,'callbackUrl':_0x1ffc85});return _0x4cf1d3[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x34')});})['catch'](handleError(_0x4cf1d3));};exports[_0x6130('0x35')]=function(_0x147663,_0x501630){logger['info'](_0x6130('0x36'),_0x147663[_0x6130('0x2d')]);var _0x3b1f14=hangupValidation['validate'](_0x147663['body']);if(_0x3b1f14[_0x6130('0x28')]>0x0){return _0x501630[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x3b1f14);}var _0x7d3014=_0x147663[_0x6130('0x2d')][_0x6130('0x2f')];var _0x167b31=_0x147663['body'][_0x6130('0x37')];return getAgent(_0x7d3014)[_0x6130('0x24')](function(_0x101aab){logger[_0x6130('0x16')](_0x6130('0x32'),_0x101aab[_0x6130('0x1b')]);emit(util[_0x6130('0x38')]('user:%s',_0x101aab[_0x6130('0x1b')]),_0x6130('0x39'),{'sessionId':_0x167b31});return _0x501630[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x3a')});})[_0x6130('0x1f')](handleError(_0x501630));};exports[_0x6130('0x3b')]=function(_0x7e02ef,_0x566e43){logger[_0x6130('0x16')](_0x6130('0x3c'),_0x7e02ef[_0x6130('0x2d')]);var _0x4c727b=answerValidation[_0x6130('0x10')](_0x7e02ef[_0x6130('0x2d')]);if(_0x4c727b[_0x6130('0x28')]>0x0){return _0x566e43['status'](0x190)['json'](_0x4c727b);}var _0x3ee3f8=_0x7e02ef[_0x6130('0x2d')][_0x6130('0x2f')];var _0xd87943=_0x7e02ef[_0x6130('0x2d')]['sessionId'];return getAgent(_0x3ee3f8)[_0x6130('0x24')](function(_0xef11b5){logger['info'](_0x6130('0x32'),_0xef11b5[_0x6130('0x1b')]);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0xef11b5[_0x6130('0x1b')]),_0x6130('0x3d'),{'sessionId':_0xd87943});return _0x566e43[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':'answer\x20executed!'});})['catch'](handleError(_0x566e43));};exports[_0x6130('0x3e')]=function(_0x534a67,_0x28fb1f){logger[_0x6130('0x16')](_0x6130('0x3f'),_0x534a67[_0x6130('0x2d')]);var _0x15adfd=holdValidation[_0x6130('0x10')](_0x534a67[_0x6130('0x2d')]);if(_0x15adfd[_0x6130('0x28')]>0x0){return _0x28fb1f[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x15adfd);}var _0x3936a8=_0x534a67['body'][_0x6130('0x2f')];var _0x134198=_0x534a67[_0x6130('0x2d')][_0x6130('0x37')];return getAgent(_0x3936a8)[_0x6130('0x24')](function(_0x13f591){logger[_0x6130('0x16')](_0x6130('0x32'),_0x13f591[_0x6130('0x1b')]);emit(util[_0x6130('0x38')]('user:%s',_0x13f591[_0x6130('0x1b')]),_0x6130('0x40'),{'sessionId':_0x134198});return _0x28fb1f[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x41')});})[_0x6130('0x1f')](handleError(_0x28fb1f));};exports[_0x6130('0x42')]=function(_0x37ee0c,_0x3a64ef){logger['info'](_0x6130('0x43'),_0x37ee0c[_0x6130('0x2d')]);var _0x1d0240=unholdValidation[_0x6130('0x10')](_0x37ee0c[_0x6130('0x2d')]);if(_0x1d0240[_0x6130('0x28')]>0x0){return _0x3a64ef['status'](0x190)[_0x6130('0x2e')](_0x1d0240);}var _0x1cbd0e=_0x37ee0c[_0x6130('0x2d')]['userId'];var _0x4f5207=_0x37ee0c['body']['sessionId'];return getAgent(_0x1cbd0e)[_0x6130('0x24')](function(_0xa9b10a){logger[_0x6130('0x16')]('entityFound:',_0xa9b10a['name']);emit(util['format']('user:%s',_0xa9b10a[_0x6130('0x1b')]),_0x6130('0x44'),{'sessionId':_0x4f5207});return _0x3a64ef[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x45')});})['catch'](handleError(_0x3a64ef));};exports[_0x6130('0x46')]=function(_0x305d99,_0x49e3cf){logger[_0x6130('0x16')](_0x6130('0x47'),_0x49e3cf[_0x6130('0x2d')]);var _0x32bf20=callsValidation[_0x6130('0x10')](_0x305d99[_0x6130('0x2d')]);if(_0x32bf20[_0x6130('0x28')]>0x0){return _0x49e3cf[_0x6130('0x1c')](0x190)['json'](_0x32bf20);}var _0x159ff8=_0x305d99[_0x6130('0x2d')][_0x6130('0x2f')];var _0x4934ca=respondWithRpcPromise('VoiceChannels');var _0x1b4f82=getAgent(_0x159ff8);return Promise[_0x6130('0x23')]([_0x4934ca,_0x1b4f82])[_0x6130('0x24')](function(_0xc253f){var _0x37b89b=_0xc253f[0x0];var _0x519a0c=_0xc253f[0x1];var _0x29630a=_[_0x6130('0x25')](_0x37b89b[_0x6130('0x26')],function(_0x372c53){return _0x372c53[_0x6130('0x27')]==_0x519a0c['id'];});return _0x49e3cf[_0x6130('0x1c')](0xc8)['json']({'count':_0x29630a['length'],'rows':_0x29630a});})[_0x6130('0x1f')](handleError(_0x49e3cf));};exports[_0x6130('0x48')]=function(_0x5c55cf,_0x442fee){logger[_0x6130('0x16')](_0x6130('0x49'),_0x5c55cf[_0x6130('0x2d')]);var _0x54c565=conferenceValidation[_0x6130('0x10')](_0x5c55cf[_0x6130('0x2d')]);if(_0x54c565[_0x6130('0x28')]>0x0){return _0x442fee[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x54c565);}var _0x198da8=_0x5c55cf[_0x6130('0x2d')][_0x6130('0x2f')];return getAgent(_0x198da8)['then'](function(_0x46f586){logger[_0x6130('0x16')](_0x6130('0x32'),_0x46f586[_0x6130('0x1b')]);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0x46f586['name']),_0x6130('0x4a'));return _0x442fee[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x4b')});})[_0x6130('0x1f')](handleError(_0x442fee));};exports[_0x6130('0x4c')]=function(_0x2d27e6,_0x31d20d){logger[_0x6130('0x16')](_0x6130('0x4d'),_0x2d27e6[_0x6130('0x2d')]);var _0x3a5876=transferValidation['validate'](_0x2d27e6['body']);if(_0x3a5876['length']>0x0){return _0x31d20d['status'](0x190)['json'](_0x3a5876);}var _0x101894=_0x2d27e6[_0x6130('0x2d')]['userId'];var _0x1d8286=_0x2d27e6['body'][_0x6130('0x37')];var _0xf82ecf=_0x2d27e6[_0x6130('0x2d')][_0x6130('0x4e')];return getAgent(_0x101894)[_0x6130('0x24')](function(_0x35f2df){logger[_0x6130('0x16')](_0x6130('0x32'),_0x35f2df['name']);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0x35f2df['name']),_0x6130('0x4f'),{'sessionId':_0x1d8286,'transferNumber':_0xf82ecf});return _0x31d20d[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x50')});})['catch'](handleError(_0x31d20d));};
\ No newline at end of file
index a6f06a3..e6ab8e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd212=['/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getAgents','/:id/applications','create','post','addDisposition','/:id/users','addAgents','addApplications','/:id/notify','notify','send','/:id','update','delete','destroy','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','show'];(function(_0x2a5447,_0x3780e6){var _0x186508=function(_0x68e312){while(--_0x68e312){_0x2a5447['push'](_0x2a5447['shift']());}};_0x186508(++_0x3780e6);}(_0xd212,0xfb));var _0x2d21=function(_0x25d386,_0x108d0d){_0x25d386=_0x25d386-0x0;var _0x857f4a=_0xd212[_0x25d386];return _0x857f4a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2d21('0x0'));var timeout=require('connect-timeout');var express=require(_0x2d21('0x1'));var router=express[_0x2d21('0x2')]();var fs_extra=require(_0x2d21('0x3'));var auth=require(_0x2d21('0x4'));var interaction=require(_0x2d21('0x5'));var config=require('../../config/environment');var controller=require(_0x2d21('0x6'));router[_0x2d21('0x7')]('/',auth[_0x2d21('0x8')](),controller[_0x2d21('0x9')]);router[_0x2d21('0x7')](_0x2d21('0xa'),auth['isAuthenticated'](),controller[_0x2d21('0xb')]);router[_0x2d21('0x7')]('/:id',auth[_0x2d21('0x8')](),controller[_0x2d21('0xc')]);router[_0x2d21('0x7')](_0x2d21('0xd'),auth[_0x2d21('0x8')](),controller[_0x2d21('0xe')]);router[_0x2d21('0x7')](_0x2d21('0xf'),auth[_0x2d21('0x8')](),controller[_0x2d21('0x10')]);router[_0x2d21('0x7')]('/:id/users',auth['isAuthenticated'](),controller[_0x2d21('0x11')]);router[_0x2d21('0x7')](_0x2d21('0x12'),auth[_0x2d21('0x8')](),controller['getApplications']);router['post']('/',auth['isAuthenticated'](),controller[_0x2d21('0x13')]);router[_0x2d21('0x14')](_0x2d21('0xd'),auth[_0x2d21('0x8')](),controller[_0x2d21('0x15')]);router[_0x2d21('0x14')]('/:id/canned_answers',auth[_0x2d21('0x8')](),controller['addAnswer']);router[_0x2d21('0x14')](_0x2d21('0x16'),auth[_0x2d21('0x8')](),controller[_0x2d21('0x17')]);router[_0x2d21('0x14')]('/:id/applications',auth['isAuthenticated'](),controller[_0x2d21('0x18')]);router['post'](_0x2d21('0x19'),controller[_0x2d21('0x1a')]);router[_0x2d21('0x14')]('/:id/send',auth[_0x2d21('0x8')](),controller[_0x2d21('0x1b')]);router['put'](_0x2d21('0x1c'),auth[_0x2d21('0x8')](),controller[_0x2d21('0x1d')]);router[_0x2d21('0x1e')](_0x2d21('0x1c'),auth[_0x2d21('0x8')](),controller[_0x2d21('0x1f')]);router[_0x2d21('0x1e')](_0x2d21('0xd'),auth[_0x2d21('0x8')](),controller['removeDispositions']);router[_0x2d21('0x1e')](_0x2d21('0xf'),auth['isAuthenticated'](),controller['removeAnswers']);router['delete']('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x2d21('0x20')]=router;
\ No newline at end of file
+var _0x39f5=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','/describe','describe','get','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/users','getAgents','/:id/applications','getApplications','post','create','addAnswer','addAgents','addApplications','notify','send','put','update','delete','removeDispositions','removeAnswers','removeAgents'];(function(_0x5184ae,_0x520830){var _0x3b2fdc=function(_0x42ec74){while(--_0x42ec74){_0x5184ae['push'](_0x5184ae['shift']());}};_0x3b2fdc(++_0x520830);}(_0x39f5,0x110));var _0x539f=function(_0x5212c9,_0x30b896){_0x5212c9=_0x5212c9-0x0;var _0x447a7f=_0x39f5[_0x5212c9];return _0x447a7f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x539f('0x0'));var timeout=require(_0x539f('0x1'));var express=require(_0x539f('0x2'));var router=express[_0x539f('0x3')]();var fs_extra=require(_0x539f('0x4'));var auth=require(_0x539f('0x5'));var interaction=require(_0x539f('0x6'));var config=require(_0x539f('0x7'));var controller=require('./whatsappAccount.controller');router['get']('/',auth[_0x539f('0x8')](),controller['index']);router['get'](_0x539f('0x9'),auth[_0x539f('0x8')](),controller[_0x539f('0xa')]);router[_0x539f('0xb')](_0x539f('0xc'),auth[_0x539f('0x8')](),controller[_0x539f('0xd')]);router[_0x539f('0xb')](_0x539f('0xe'),auth['isAuthenticated'](),controller[_0x539f('0xf')]);router[_0x539f('0xb')](_0x539f('0x10'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x539f('0xb')](_0x539f('0x11'),auth[_0x539f('0x8')](),controller[_0x539f('0x12')]);router[_0x539f('0xb')](_0x539f('0x13'),auth[_0x539f('0x8')](),controller[_0x539f('0x14')]);router[_0x539f('0x15')]('/',auth[_0x539f('0x8')](),controller[_0x539f('0x16')]);router[_0x539f('0x15')](_0x539f('0xe'),auth[_0x539f('0x8')](),controller['addDisposition']);router[_0x539f('0x15')](_0x539f('0x10'),auth['isAuthenticated'](),controller[_0x539f('0x17')]);router[_0x539f('0x15')]('/:id/users',auth[_0x539f('0x8')](),controller[_0x539f('0x18')]);router[_0x539f('0x15')](_0x539f('0x13'),auth[_0x539f('0x8')](),controller[_0x539f('0x19')]);router[_0x539f('0x15')]('/:id/notify',controller[_0x539f('0x1a')]);router[_0x539f('0x15')]('/:id/send',auth[_0x539f('0x8')](),controller[_0x539f('0x1b')]);router[_0x539f('0x1c')](_0x539f('0xc'),auth[_0x539f('0x8')](),controller[_0x539f('0x1d')]);router[_0x539f('0x1e')](_0x539f('0xc'),auth[_0x539f('0x8')](),controller['destroy']);router[_0x539f('0x1e')]('/:id/dispositions',auth[_0x539f('0x8')](),controller[_0x539f('0x1f')]);router['delete'](_0x539f('0x10'),auth[_0x539f('0x8')](),controller[_0x539f('0x20')]);router[_0x539f('0x1e')](_0x539f('0x11'),auth[_0x539f('0x8')](),controller[_0x539f('0x21')]);module['exports']=router;
\ No newline at end of file
index f027a1d..7a074e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cff=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','twilio','sinch','TEXT'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0x2cff,0xa7));var _0xf2cf=function(_0x554651,_0x33b329){_0x554651=_0x554651-0x0;var _0x53fb5a=_0x2cff[_0x554651];return _0x53fb5a;};'use strict';var Sequelize=require(_0xf2cf('0x0'));var rs=require(_0xf2cf('0x1'));module[_0xf2cf('0x2')]={'name':{'type':Sequelize[_0xf2cf('0x3')],'unique':_0xf2cf('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xf2cf('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xf2cf('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xf2cf('0x3')],'defaultValue':function(){return rs[_0xf2cf('0x5')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0xf2cf('0x6'),_0xf2cf('0x7'))},'accountSid':{'type':Sequelize[_0xf2cf('0x3')]},'baseUrl':{'type':Sequelize[_0xf2cf('0x3')]},'authToken':{'type':Sequelize[_0xf2cf('0x3')]},'notificationTemplate':{'type':Sequelize[_0xf2cf('0x8')],'defaultValue':function(){return _0xf2cf('0x9');}},'notificationSound':{'type':Sequelize[_0xf2cf('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xf2cf('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf2cf('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0xf2cf('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf2cf('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf2cf('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf2cf('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf2cf('0xb')],'comment':_0xf2cf('0xc')},'mandatoryDisposition':{'type':Sequelize[_0xf2cf('0xa')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xde0271){if(!_0xde0271){this[_0xf2cf('0xd')](_0xf2cf('0xe'),null);}this[_0xf2cf('0xd')](_0xf2cf('0xf'),_0xde0271);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4c00=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','ENUM','twilio','sinch','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x176b6c,_0x1c8db3){var _0x24aa00=function(_0x39c91d){while(--_0x39c91d){_0x176b6c['push'](_0x176b6c['shift']());}};_0x24aa00(++_0x1c8db3);}(_0x4c00,0x1c2));var _0x04c0=function(_0x39941c,_0x4ad1bb){_0x39941c=_0x39941c-0x0;var _0x52d9c7=_0x4c00[_0x39941c];return _0x52d9c7;};'use strict';var Sequelize=require(_0x04c0('0x0'));var rs=require(_0x04c0('0x1'));module['exports']={'name':{'type':Sequelize[_0x04c0('0x2')],'unique':_0x04c0('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x04c0('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x04c0('0x2')],'defaultValue':function(){return rs[_0x04c0('0x4')]();}},'phone':{'type':Sequelize[_0x04c0('0x2')]},'type':{'type':Sequelize[_0x04c0('0x5')](_0x04c0('0x6'),_0x04c0('0x7'))},'accountSid':{'type':Sequelize[_0x04c0('0x2')]},'baseUrl':{'type':Sequelize[_0x04c0('0x2')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x04c0('0x8');}},'notificationSound':{'type':Sequelize[_0x04c0('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x04c0('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x04c0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x04c0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x04c0('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x04c0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x04c0('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x04c0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x04c0('0xa')],'comment':_0x04c0('0xb')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x04c0('0xc'),'set':function(_0x2702c3){if(!_0x2702c3){this[_0x04c0('0xd')](_0x04c0('0xe'),null);}this[_0x04c0('0xd')](_0x04c0('0xf'),_0x2702c3);}},'description':{'type':Sequelize[_0x04c0('0x2')]}};
\ No newline at end of file
index f746a47..2110502 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f4=['Pause','mandatoryDispositionPause','WhatsappAccount','rawAttributes','fieldName','model','map','keys','query','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','params','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','describe','findOne','Disposition','nolimit','order','pick','WhatsappAccountId','options','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addAgents','omit','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','notify','account','sinch','statuses','state','read','WhatsappMessage','timestamp','orderBy','Applications','asc','CmContact','Sequelize','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','twilio','From','whatsapp:','messageId','from','notifications','message_id','isNil','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','Contacts','DESC','list','defaults','contact','WhatsappInteraction','spread','interaction','applications','push','close','created','ContactId','AttachmentId','UserId','waitForTheAssignedAgent','*,*,*,*','queueId','WhatsappQueue','unshift','queue','waitForTheAssignedQueue','Start','startRouting','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','to\x20is\x20mandatory','List','out','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','./whatsappAccount.socket','register','client','http','then','request\x20sent','stringify','error','WhatsappAccount,\x20%s,\x20%s','message','info','result','sendStatus','status','end','json','offset','undefined','count','limit','set','save','update','destroy','get','WhatsappAccounts','UserProfileResource','name','send','index'];(function(_0x208c6a,_0x2c5b5a){var _0x3843cb=function(_0x14a279){while(--_0x14a279){_0x208c6a['push'](_0x208c6a['shift']());}};_0x3843cb(++_0x2c5b5a);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x310f53,_0x391588){_0x310f53=_0x310f53-0x0;var _0x2a9621=_0xd4f4[_0x310f53];return _0x2a9621;};'use strict';var emlformat=require(_0x4d4f('0x0'));var rimraf=require(_0x4d4f('0x1'));var zipdir=require(_0x4d4f('0x2'));var jsonpatch=require(_0x4d4f('0x3'));var rp=require(_0x4d4f('0x4'));var moment=require(_0x4d4f('0x5'));var BPromise=require(_0x4d4f('0x6'));var Mustache=require(_0x4d4f('0x7'));var util=require(_0x4d4f('0x8'));var path=require(_0x4d4f('0x9'));var sox=require(_0x4d4f('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4d4f('0xb'));var squel=require(_0x4d4f('0xc'));var crypto=require(_0x4d4f('0xd'));var jsforce=require(_0x4d4f('0xe'));var deskjs=require(_0x4d4f('0xf'));var toCsv=require(_0x4d4f('0x10'));var querystring=require(_0x4d4f('0x11'));var Papa=require(_0x4d4f('0x12'));var Redis=require(_0x4d4f('0x13'));var authService=require(_0x4d4f('0x14'));var qs=require(_0x4d4f('0x15'));var as=require(_0x4d4f('0x16'));var hardwareService=require(_0x4d4f('0x17'));var logger=require(_0x4d4f('0x18'))(_0x4d4f('0x19'));var utils=require(_0x4d4f('0x1a'));var config=require(_0x4d4f('0x1b'));var licenseUtil=require(_0x4d4f('0x1c'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x4d4f('0x1d')],{'host':_0x4d4f('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4d4f('0x1d')]));require(_0x4d4f('0x1f'))[_0x4d4f('0x20')](socket);var jayson=require('jayson/promise');var client=jayson[_0x4d4f('0x21')][_0x4d4f('0x22')]({'port':0x232c});function respondWithRpcPromise(_0x1a9173,_0x4a3364,_0x59bfb5,_0x5e4ff5){return new BPromise(function(_0x18a528,_0x16f8e7){var _0x4170ca=_0x5e4ff5||client;return _0x4170ca['request'](_0x1a9173,_0x59bfb5)[_0x4d4f('0x23')](function(_0x17a437){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x4a3364,'request\x20sent');logger['debug']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x4a3364,_0x4d4f('0x24'),JSON[_0x4d4f('0x25')](_0x17a437));if(_0x17a437[_0x4d4f('0x26')]){if(_0x17a437[_0x4d4f('0x26')]['code']===0x1f4){logger['error'](_0x4d4f('0x27'),_0x4a3364,_0x17a437['error'][_0x4d4f('0x28')]);return _0x16f8e7(_0x17a437[_0x4d4f('0x26')][_0x4d4f('0x28')]);}logger[_0x4d4f('0x26')](_0x4d4f('0x27'),_0x4a3364,_0x17a437['error']['message']);return _0x18a528(_0x17a437[_0x4d4f('0x26')]['message']);}else{logger[_0x4d4f('0x29')](_0x4d4f('0x27'),_0x4a3364,_0x4d4f('0x24'));_0x18a528(_0x17a437[_0x4d4f('0x2a')][_0x4d4f('0x28')]);}})['catch'](function(_0x44bd2f){logger[_0x4d4f('0x26')](_0x4d4f('0x27'),_0x4a3364,_0x44bd2f);_0x16f8e7(_0x44bd2f);});});}function respondWithStatusCode(_0x28443b,_0x5cf9e7){_0x5cf9e7=_0x5cf9e7||0xcc;return function(_0x51a7c5){if(_0x51a7c5){return _0x28443b[_0x4d4f('0x2b')](_0x5cf9e7);}return _0x28443b[_0x4d4f('0x2c')](_0x5cf9e7)[_0x4d4f('0x2d')]();};}function respondWithResult(_0x1f79f9,_0x58acbe){_0x58acbe=_0x58acbe||0xc8;return function(_0x671c87){if(_0x671c87){return _0x1f79f9[_0x4d4f('0x2c')](_0x58acbe)[_0x4d4f('0x2e')](_0x671c87);}};}function respondWithFilteredResult(_0x2e91b2,_0x4effb1){return function(_0x338ba2){if(_0x338ba2){var _0x51cb3d=typeof _0x4effb1[_0x4d4f('0x2f')]===_0x4d4f('0x30')&&typeof _0x4effb1['limit']===_0x4d4f('0x30');var _0x123383=_0x338ba2[_0x4d4f('0x31')];var _0x3d7f14=_0x51cb3d?0x0:_0x4effb1[_0x4d4f('0x2f')];var _0x43a704=_0x51cb3d?_0x338ba2['count']:_0x4effb1[_0x4d4f('0x2f')]+_0x4effb1[_0x4d4f('0x32')];var _0x3894db;if(_0x43a704>=_0x123383){_0x43a704=_0x123383;_0x3894db=0xc8;}else{_0x3894db=0xce;}_0x2e91b2[_0x4d4f('0x2c')](_0x3894db);return _0x2e91b2[_0x4d4f('0x33')]('Content-Range',_0x3d7f14+'-'+_0x43a704+'/'+_0x123383)[_0x4d4f('0x2e')](_0x338ba2);}return null;};}function patchUpdates(_0x486e33){return function(_0x35f9e2){try{jsonpatch['apply'](_0x35f9e2,_0x486e33,!![]);}catch(_0x4c706b){return BPromise['reject'](_0x4c706b);}return _0x35f9e2[_0x4d4f('0x34')]();};}function saveUpdates(_0x57fc2b,_0x16ccd2){return function(_0x151132){if(_0x151132){return _0x151132[_0x4d4f('0x35')](_0x57fc2b)['then'](function(_0x8d18dc){return _0x8d18dc;});}return null;};}function removeEntity(_0x1ab7c4,_0x6baae8){return function(_0x4cac5d){if(_0x4cac5d){return _0x4cac5d[_0x4d4f('0x36')]()['then'](function(){var _0x3f9618=_0x4cac5d[_0x4d4f('0x37')]({'plain':!![]});var _0x1a7cb3=_0x4d4f('0x38');return db[_0x4d4f('0x39')][_0x4d4f('0x36')]({'where':{'type':_0x1a7cb3,'resourceId':_0x3f9618['id']}})[_0x4d4f('0x23')](function(){return _0x4cac5d;});})[_0x4d4f('0x23')](function(){_0x1ab7c4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ea027,_0x559441){return function(_0x4e2f63){if(!_0x4e2f63){_0x2ea027[_0x4d4f('0x2b')](0x194);}return _0x4e2f63;};}function handleError(_0x3317b5,_0x2be655){_0x2be655=_0x2be655||0x1f4;return function(_0x18ef52){logger[_0x4d4f('0x26')](_0x18ef52['stack']);if(_0x18ef52[_0x4d4f('0x3a')]){delete _0x18ef52[_0x4d4f('0x3a')];}_0x3317b5['status'](_0x2be655)[_0x4d4f('0x3b')](_0x18ef52);};}exports[_0x4d4f('0x3c')]=function(_0x336625,_0x42f9ed){var _0x18800e={'include':[{'model':db[_0x4d4f('0x3d')],'as':_0x4d4f('0x3e')}]},_0x19ebfe={},_0x20290e={'count':0x0,'rows':[]};var _0x4e54aa=_['map'](db[_0x4d4f('0x3f')][_0x4d4f('0x40')],function(_0x4b3ba1){return{'name':_0x4b3ba1[_0x4d4f('0x41')],'type':_0x4b3ba1['type']['key']};});_0x19ebfe[_0x4d4f('0x42')]=_[_0x4d4f('0x43')](_0x4e54aa,'name');_0x19ebfe['query']=_[_0x4d4f('0x44')](_0x336625[_0x4d4f('0x45')]);_0x19ebfe['filters']=_[_0x4d4f('0x46')](_0x19ebfe[_0x4d4f('0x42')],_0x19ebfe[_0x4d4f('0x45')]);_0x18800e[_0x4d4f('0x47')]=_[_0x4d4f('0x46')](_0x19ebfe['model'],qs[_0x4d4f('0x48')](_0x336625['query'][_0x4d4f('0x48')]));_0x18800e[_0x4d4f('0x47')]=_0x18800e['attributes'][_0x4d4f('0x49')]?_0x18800e[_0x4d4f('0x47')]:_0x19ebfe[_0x4d4f('0x42')];if(!_0x336625['query'][_0x4d4f('0x4a')]('nolimit')){_0x18800e[_0x4d4f('0x32')]=qs['limit'](_0x336625[_0x4d4f('0x45')][_0x4d4f('0x32')]);_0x18800e[_0x4d4f('0x2f')]=qs[_0x4d4f('0x2f')](_0x336625[_0x4d4f('0x45')]['offset']);}_0x18800e['order']=qs[_0x4d4f('0x4b')](_0x336625[_0x4d4f('0x45')][_0x4d4f('0x4b')]);_0x18800e[_0x4d4f('0x4c')]=qs['filters'](_['pick'](_0x336625['query'],_0x19ebfe[_0x4d4f('0x4d')]),_0x4e54aa);if(_0x336625[_0x4d4f('0x45')][_0x4d4f('0x4e')]){_0x18800e[_0x4d4f('0x4c')]=_[_0x4d4f('0x4f')](_0x18800e[_0x4d4f('0x4c')],{'$or':_[_0x4d4f('0x43')](_0x4e54aa,function(_0x437da9){if(_0x437da9[_0x4d4f('0x50')]!==_0x4d4f('0x51')){var _0x37745d={};_0x37745d[_0x437da9[_0x4d4f('0x3a')]]={'$like':'%'+_0x336625['query'][_0x4d4f('0x4e')]+'%'};return _0x37745d;}})});}_0x18800e=_[_0x4d4f('0x4f')]({},_0x18800e,_0x336625['options']);var _0xb0d5e8={'where':_0x18800e['where']};return db[_0x4d4f('0x3f')][_0x4d4f('0x31')](_0xb0d5e8)['then'](function(_0x67fc4b){_0x20290e[_0x4d4f('0x31')]=_0x67fc4b;if(_0x336625[_0x4d4f('0x45')][_0x4d4f('0x52')]){_0x18800e[_0x4d4f('0x53')]=[{'all':!![]}];}return db[_0x4d4f('0x3f')][_0x4d4f('0x54')](_0x18800e);})[_0x4d4f('0x23')](function(_0x27655c){_0x20290e[_0x4d4f('0x55')]=_0x27655c;return _0x20290e;})[_0x4d4f('0x23')](respondWithFilteredResult(_0x42f9ed,_0x18800e))[_0x4d4f('0x56')](handleError(_0x42f9ed,null));};exports['show']=function(_0x309ec2,_0x539088){var _0x59d245={'raw':![],'where':{'id':_0x309ec2[_0x4d4f('0x57')]['id']},'include':[{'model':db[_0x4d4f('0x3d')],'as':'mandatoryDispositionPause'}]},_0x57af44={};_0x57af44['model']=_[_0x4d4f('0x44')](db[_0x4d4f('0x3f')]['rawAttributes']);_0x57af44[_0x4d4f('0x45')]=_['keys'](_0x309ec2[_0x4d4f('0x45')]);_0x57af44[_0x4d4f('0x4d')]=_[_0x4d4f('0x46')](_0x57af44[_0x4d4f('0x42')],_0x57af44['query']);_0x59d245[_0x4d4f('0x47')]=_[_0x4d4f('0x46')](_0x57af44[_0x4d4f('0x42')],qs[_0x4d4f('0x48')](_0x309ec2[_0x4d4f('0x45')]['fields']));_0x59d245[_0x4d4f('0x47')]=_0x59d245['attributes'][_0x4d4f('0x49')]?_0x59d245['attributes']:_0x57af44[_0x4d4f('0x42')];if(_0x309ec2[_0x4d4f('0x45')]['includeAll']){_0x59d245[_0x4d4f('0x53')]=[{'all':!![]}];}_0x59d245=_[_0x4d4f('0x4f')]({},_0x59d245,_0x309ec2['options']);return db[_0x4d4f('0x3f')]['find'](_0x59d245)[_0x4d4f('0x23')](handleEntityNotFound(_0x539088,null))['then'](respondWithResult(_0x539088,null))['catch'](handleError(_0x539088,null));};exports[_0x4d4f('0x58')]=function(_0x333a24,_0x23bf8e){return db[_0x4d4f('0x3f')][_0x4d4f('0x58')](_0x333a24['body'],{})['then'](function(_0xeaccdd){var _0x52641a=_0x333a24[_0x4d4f('0x59')][_0x4d4f('0x37')]({'plain':!![]});if(!_0x52641a)throw new Error(_0x4d4f('0x5a'));if(_0x52641a[_0x4d4f('0x5b')]===_0x4d4f('0x59')){var _0x39ae15=_0xeaccdd['get']({'plain':!![]});var _0x1266ce=_0x4d4f('0x38');return db[_0x4d4f('0x5c')]['find']({'where':{'name':_0x1266ce,'userProfileId':_0x52641a[_0x4d4f('0x5d')]},'raw':!![]})[_0x4d4f('0x23')](function(_0x217ece){if(_0x217ece&&_0x217ece['autoAssociation']===0x0){return db[_0x4d4f('0x39')]['create']({'name':_0x39ae15[_0x4d4f('0x3a')],'resourceId':_0x39ae15['id'],'type':_0x217ece[_0x4d4f('0x3a')],'sectionId':_0x217ece['id']},{})[_0x4d4f('0x23')](function(){return _0xeaccdd;});}else{return _0xeaccdd;}})[_0x4d4f('0x56')](function(_0x1edb3d){logger[_0x4d4f('0x26')](_0x4d4f('0x5e'),_0x1edb3d);throw _0x1edb3d;});}return _0xeaccdd;})[_0x4d4f('0x23')](respondWithResult(_0x23bf8e,0xc9))[_0x4d4f('0x56')](handleError(_0x23bf8e,null));};exports['update']=function(_0x2f6e40,_0x255771){if(_0x2f6e40['body']['id']){delete _0x2f6e40[_0x4d4f('0x5f')]['id'];}return db[_0x4d4f('0x3f')][_0x4d4f('0x60')]({'where':{'id':_0x2f6e40[_0x4d4f('0x57')]['id']},'include':[{'model':db['Pause'],'as':_0x4d4f('0x3e')}]})[_0x4d4f('0x23')](handleEntityNotFound(_0x255771,null))['then'](saveUpdates(_0x2f6e40['body'],null))[_0x4d4f('0x23')](respondWithResult(_0x255771,null))[_0x4d4f('0x56')](handleError(_0x255771,null));};exports['destroy']=function(_0x4b9b15,_0x4d34fc){return db[_0x4d4f('0x3f')][_0x4d4f('0x60')]({'where':{'id':_0x4b9b15['params']['id']}})[_0x4d4f('0x23')](handleEntityNotFound(_0x4d34fc,null))[_0x4d4f('0x23')](removeEntity(_0x4d34fc,null))[_0x4d4f('0x56')](handleError(_0x4d34fc,null));};exports[_0x4d4f('0x61')]=function(_0x1d9552,_0x3a0394){return db[_0x4d4f('0x3f')][_0x4d4f('0x61')]()['then'](respondWithResult(_0x3a0394,null))[_0x4d4f('0x56')](handleError(_0x3a0394,null));};exports['addDisposition']=function(_0x403cb2,_0x289653,_0x1567c3){if(_0x403cb2['body']['id']){delete _0x403cb2[_0x4d4f('0x5f')]['id'];}return db[_0x4d4f('0x3f')][_0x4d4f('0x60')]({'where':{'id':_0x403cb2[_0x4d4f('0x57')]['id']}})['then'](handleEntityNotFound(_0x289653,null))[_0x4d4f('0x23')](function(_0x4bf7bd){if(_0x4bf7bd){_0x403cb2[_0x4d4f('0x5f')]['WhatsappAccountId']=_0x4bf7bd['id'];return db['Disposition'][_0x4d4f('0x58')](_0x403cb2[_0x4d4f('0x5f')]);}})['then'](respondWithResult(_0x289653,null))[_0x4d4f('0x56')](handleError(_0x289653,null));};exports['getDispositions']=function(_0x41ffe7,_0x4420f0,_0x111c01){var _0x3ce5d8={'raw':![],'where':{}};var _0x575ad6={};var _0x4952f0={'count':0x0,'rows':[]};return db[_0x4d4f('0x3f')][_0x4d4f('0x62')]({'where':{'id':_0x41ffe7['params']['id']}})[_0x4d4f('0x23')](handleEntityNotFound(_0x4420f0,null))[_0x4d4f('0x23')](function(_0x21046c){if(_0x21046c){_0x575ad6[_0x4d4f('0x42')]=_[_0x4d4f('0x44')](db[_0x4d4f('0x63')]['rawAttributes']);_0x575ad6['query']=_[_0x4d4f('0x44')](_0x41ffe7[_0x4d4f('0x45')]);_0x575ad6['filters']=_[_0x4d4f('0x46')](_0x575ad6[_0x4d4f('0x42')],_0x575ad6[_0x4d4f('0x45')]);_0x3ce5d8[_0x4d4f('0x47')]=_[_0x4d4f('0x46')](_0x575ad6[_0x4d4f('0x42')],qs[_0x4d4f('0x48')](_0x41ffe7[_0x4d4f('0x45')][_0x4d4f('0x48')]));_0x3ce5d8[_0x4d4f('0x47')]=_0x3ce5d8[_0x4d4f('0x47')][_0x4d4f('0x49')]?_0x3ce5d8[_0x4d4f('0x47')]:_0x575ad6[_0x4d4f('0x42')];if(!_0x41ffe7[_0x4d4f('0x45')]['hasOwnProperty'](_0x4d4f('0x64'))){_0x3ce5d8[_0x4d4f('0x32')]=qs[_0x4d4f('0x32')](_0x41ffe7[_0x4d4f('0x45')]['limit']);_0x3ce5d8['offset']=qs[_0x4d4f('0x2f')](_0x41ffe7[_0x4d4f('0x45')][_0x4d4f('0x2f')]);}_0x3ce5d8[_0x4d4f('0x65')]=qs[_0x4d4f('0x4b')](_0x41ffe7[_0x4d4f('0x45')][_0x4d4f('0x4b')]);_0x3ce5d8[_0x4d4f('0x4c')]=qs[_0x4d4f('0x4d')](_[_0x4d4f('0x66')](_0x41ffe7['query'],_0x575ad6[_0x4d4f('0x4d')]));_0x3ce5d8[_0x4d4f('0x4c')][_0x4d4f('0x67')]=_0x21046c['id'];if(_0x41ffe7[_0x4d4f('0x45')]['filter']){_0x3ce5d8['where']=_['merge'](_0x3ce5d8[_0x4d4f('0x4c')],{'$or':_['map'](_0x3ce5d8[_0x4d4f('0x47')],function(_0xb72faf){var _0xa63721={};_0xa63721[_0xb72faf]={'$like':'%'+_0x41ffe7[_0x4d4f('0x45')][_0x4d4f('0x4e')]+'%'};return _0xa63721;})});}_0x3ce5d8=_[_0x4d4f('0x4f')]({},_0x3ce5d8,_0x41ffe7[_0x4d4f('0x68')]);return db[_0x4d4f('0x63')]['count']({'where':_0x3ce5d8['where']})[_0x4d4f('0x23')](function(_0x59a813){_0x4952f0[_0x4d4f('0x31')]=_0x59a813;if(_0x41ffe7[_0x4d4f('0x45')][_0x4d4f('0x52')]){_0x3ce5d8['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x3ce5d8);})[_0x4d4f('0x23')](function(_0x519779){_0x4952f0[_0x4d4f('0x55')]=_0x519779;return _0x4952f0;});}})['then'](respondWithFilteredResult(_0x4420f0,_0x3ce5d8))[_0x4d4f('0x56')](handleError(_0x4420f0,null));};exports[_0x4d4f('0x69')]=function(_0x1e8b6f,_0x251614,_0x348438){return db[_0x4d4f('0x3f')]['find']({'where':{'id':_0x1e8b6f[_0x4d4f('0x57')]['id']}})[_0x4d4f('0x23')](handleEntityNotFound(_0x251614,null))[_0x4d4f('0x23')](function(_0x1f62e0){if(_0x1f62e0){return _0x1f62e0[_0x4d4f('0x69')](_0x1e8b6f['query'][_0x4d4f('0x6a')]);}})['then'](respondWithStatusCode(_0x251614,null))[_0x4d4f('0x56')](handleError(_0x251614,null));};exports[_0x4d4f('0x6b')]=function(_0x2511c8,_0x1b4c7a,_0x46fd1a){if(_0x2511c8[_0x4d4f('0x5f')]['id']){delete _0x2511c8[_0x4d4f('0x5f')]['id'];}return db['WhatsappAccount'][_0x4d4f('0x60')]({'where':{'id':_0x2511c8[_0x4d4f('0x57')]['id']}})[_0x4d4f('0x23')](handleEntityNotFound(_0x1b4c7a,null))['then'](function(_0x16ad7a){if(_0x16ad7a){_0x2511c8['body'][_0x4d4f('0x67')]=_0x16ad7a['id'];return db['CannedAnswer'][_0x4d4f('0x58')](_0x2511c8[_0x4d4f('0x5f')]);}})[_0x4d4f('0x23')](respondWithResult(_0x1b4c7a,null))['catch'](handleError(_0x1b4c7a,null));};exports[_0x4d4f('0x6c')]=function(_0x1067a5,_0x26b157,_0x521d24){var _0x4d2b81={'raw':![],'where':{}};var _0x3d3697={};var _0x40e725={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x4d4f('0x62')]({'where':{'id':_0x1067a5[_0x4d4f('0x57')]['id']}})[_0x4d4f('0x23')](handleEntityNotFound(_0x26b157,null))[_0x4d4f('0x23')](function(_0x4de18a){if(_0x4de18a){_0x3d3697[_0x4d4f('0x42')]=_['keys'](db[_0x4d4f('0x6d')][_0x4d4f('0x40')]);_0x3d3697['query']=_[_0x4d4f('0x44')](_0x1067a5[_0x4d4f('0x45')]);_0x3d3697[_0x4d4f('0x4d')]=_[_0x4d4f('0x46')](_0x3d3697[_0x4d4f('0x42')],_0x3d3697[_0x4d4f('0x45')]);_0x4d2b81[_0x4d4f('0x47')]=_[_0x4d4f('0x46')](_0x3d3697['model'],qs[_0x4d4f('0x48')](_0x1067a5[_0x4d4f('0x45')]['fields']));_0x4d2b81[_0x4d4f('0x47')]=_0x4d2b81['attributes'][_0x4d4f('0x49')]?_0x4d2b81['attributes']:_0x3d3697[_0x4d4f('0x42')];if(!_0x1067a5[_0x4d4f('0x45')][_0x4d4f('0x4a')](_0x4d4f('0x64'))){_0x4d2b81[_0x4d4f('0x32')]=qs[_0x4d4f('0x32')](_0x1067a5[_0x4d4f('0x45')][_0x4d4f('0x32')]);_0x4d2b81[_0x4d4f('0x2f')]=qs[_0x4d4f('0x2f')](_0x1067a5[_0x4d4f('0x45')][_0x4d4f('0x2f')]);}_0x4d2b81['order']=qs['sort'](_0x1067a5[_0x4d4f('0x45')]['sort']);_0x4d2b81[_0x4d4f('0x4c')]=qs[_0x4d4f('0x4d')](_['pick'](_0x1067a5['query'],_0x3d3697[_0x4d4f('0x4d')]));_0x4d2b81[_0x4d4f('0x4c')][_0x4d4f('0x67')]=_0x4de18a['id'];if(_0x1067a5['query']['filter']){_0x4d2b81[_0x4d4f('0x4c')]=_[_0x4d4f('0x4f')](_0x4d2b81[_0x4d4f('0x4c')],{'$or':_[_0x4d4f('0x43')](_0x4d2b81['attributes'],function(_0x165d86){var _0x35fb03={};_0x35fb03[_0x165d86]={'$like':'%'+_0x1067a5[_0x4d4f('0x45')]['filter']+'%'};return _0x35fb03;})});}_0x4d2b81=_['merge']({},_0x4d2b81,_0x1067a5[_0x4d4f('0x68')]);return db[_0x4d4f('0x6d')][_0x4d4f('0x31')]({'where':_0x4d2b81[_0x4d4f('0x4c')]})[_0x4d4f('0x23')](function(_0x5580ef){_0x40e725[_0x4d4f('0x31')]=_0x5580ef;if(_0x1067a5[_0x4d4f('0x45')][_0x4d4f('0x52')]){_0x4d2b81['include']=[{'all':!![]}];}return db[_0x4d4f('0x6d')]['findAll'](_0x4d2b81);})[_0x4d4f('0x23')](function(_0x2e4015){_0x40e725[_0x4d4f('0x55')]=_0x2e4015;return _0x40e725;});}})[_0x4d4f('0x23')](respondWithFilteredResult(_0x26b157,_0x4d2b81))[_0x4d4f('0x56')](handleError(_0x26b157,null));};exports['removeAnswers']=function(_0x45f38c,_0x3603b7,_0x3f0fc4){return db[_0x4d4f('0x3f')]['find']({'where':{'id':_0x45f38c[_0x4d4f('0x57')]['id']}})['then'](handleEntityNotFound(_0x3603b7,null))['then'](function(_0x2c4c00){if(_0x2c4c00){return _0x2c4c00[_0x4d4f('0x6e')](_0x45f38c['query'][_0x4d4f('0x6a')]);}})['then'](respondWithStatusCode(_0x3603b7,null))[_0x4d4f('0x56')](handleError(_0x3603b7,null));};exports[_0x4d4f('0x6f')]=function(_0x2b403b,_0x1c96ee,_0x144c00){return db[_0x4d4f('0x3f')][_0x4d4f('0x60')]({'where':{'id':_0x2b403b[_0x4d4f('0x57')]['id']}})['then'](handleEntityNotFound(_0x1c96ee,null))[_0x4d4f('0x23')](function(_0x166615){if(_0x166615){return _0x166615['addAgents'](_0x2b403b[_0x4d4f('0x5f')]['ids'],_[_0x4d4f('0x70')](_0x2b403b[_0x4d4f('0x5f')],[_0x4d4f('0x6a'),'id'])||{})['spread'](function(_0x5825bf){for(var _0x482735=0x0;_0x482735<_0x2b403b[_0x4d4f('0x5f')]['ids'][_0x4d4f('0x49')];_0x482735+=0x1){socket[_0x4d4f('0x71')](_0x4d4f('0x72'),{'UserId':Number(_0x2b403b['body']['ids'][_0x482735]),'WhatsappAccountId':Number(_0x2b403b[_0x4d4f('0x57')]['id'])});}return _0x5825bf;});}})[_0x4d4f('0x23')](respondWithResult(_0x1c96ee,null))[_0x4d4f('0x56')](handleError(_0x1c96ee,null));};exports[_0x4d4f('0x73')]=function(_0x3f437c,_0x13279e,_0x576769){return db[_0x4d4f('0x3f')][_0x4d4f('0x60')]({'where':{'id':_0x3f437c[_0x4d4f('0x57')]['id']}})[_0x4d4f('0x23')](handleEntityNotFound(_0x13279e,null))[_0x4d4f('0x23')](function(_0x1b8083){if(_0x1b8083){return _0x1b8083[_0x4d4f('0x73')](_0x3f437c[_0x4d4f('0x45')][_0x4d4f('0x6a')])[_0x4d4f('0x23')](function(){if(_[_0x4d4f('0x74')](_0x3f437c[_0x4d4f('0x45')][_0x4d4f('0x6a')])){for(var _0x175d1a=0x0;_0x175d1a<_0x3f437c['query'][_0x4d4f('0x6a')][_0x4d4f('0x49')];_0x175d1a+=0x1){socket[_0x4d4f('0x71')](_0x4d4f('0x75'),{'UserId':Number(_0x3f437c[_0x4d4f('0x45')][_0x4d4f('0x6a')][_0x175d1a]),'WhatsappAccountId':Number(_0x3f437c[_0x4d4f('0x57')]['id'])});}}else{socket[_0x4d4f('0x71')](_0x4d4f('0x75'),{'UserId':Number(_0x3f437c['query'][_0x4d4f('0x6a')]),'WhatsappAccountId':Number(_0x3f437c[_0x4d4f('0x57')]['id'])});}});}})[_0x4d4f('0x23')](respondWithStatusCode(_0x13279e,null))[_0x4d4f('0x56')](handleError(_0x13279e,null));};exports[_0x4d4f('0x76')]=function(_0xd22d78,_0x28c128,_0x28fd35){var _0x18206d={};var _0x2536e0={};var _0x5c3e11;var _0x5ea69b;return db[_0x4d4f('0x3f')][_0x4d4f('0x62')]({'where':{'id':_0xd22d78['params']['id']}})[_0x4d4f('0x23')](handleEntityNotFound(_0x28c128,null))[_0x4d4f('0x23')](function(_0x61d008){if(_0x61d008){_0x5c3e11=_0x61d008;_0x2536e0[_0x4d4f('0x42')]=_[_0x4d4f('0x44')](db[_0x4d4f('0x77')][_0x4d4f('0x40')]);_0x2536e0[_0x4d4f('0x45')]=_[_0x4d4f('0x44')](_0xd22d78[_0x4d4f('0x45')]);_0x2536e0[_0x4d4f('0x4d')]=_[_0x4d4f('0x46')](_0x2536e0[_0x4d4f('0x42')],_0x2536e0[_0x4d4f('0x45')]);_0x18206d['attributes']=_[_0x4d4f('0x46')](_0x2536e0['model'],qs[_0x4d4f('0x48')](_0xd22d78[_0x4d4f('0x45')][_0x4d4f('0x48')]));_0x18206d[_0x4d4f('0x47')]=_0x18206d['attributes'][_0x4d4f('0x49')]?_0x18206d[_0x4d4f('0x47')]:_0x2536e0[_0x4d4f('0x42')];_0x18206d[_0x4d4f('0x65')]=qs[_0x4d4f('0x4b')](_0xd22d78[_0x4d4f('0x45')][_0x4d4f('0x4b')]);_0x18206d['where']=qs[_0x4d4f('0x4d')](_[_0x4d4f('0x66')](_0xd22d78[_0x4d4f('0x45')],_0x2536e0[_0x4d4f('0x4d')]));if(_0xd22d78[_0x4d4f('0x45')][_0x4d4f('0x4e')]){_0x18206d['where']=_['merge'](_0x18206d[_0x4d4f('0x4c')],{'$or':_['map'](_0x18206d[_0x4d4f('0x47')],function(_0x8be4b2){var _0x5df38e={};_0x5df38e[_0x8be4b2]={'$like':'%'+_0xd22d78[_0x4d4f('0x45')][_0x4d4f('0x4e')]+'%'};return _0x5df38e;})});}_0x18206d=_[_0x4d4f('0x4f')]({},_0x18206d,_0xd22d78[_0x4d4f('0x68')]);return _0x5c3e11[_0x4d4f('0x76')](_0x18206d);}})[_0x4d4f('0x23')](function(_0x94c7db){if(_0x94c7db){_0x5ea69b=_0x94c7db['length'];if(!_0xd22d78[_0x4d4f('0x45')]['hasOwnProperty'](_0x4d4f('0x64'))){_0x18206d[_0x4d4f('0x32')]=qs['limit'](_0xd22d78['query'][_0x4d4f('0x32')]);_0x18206d[_0x4d4f('0x2f')]=qs[_0x4d4f('0x2f')](_0xd22d78['query'][_0x4d4f('0x2f')]);}return _0x5c3e11[_0x4d4f('0x76')](_0x18206d);}})[_0x4d4f('0x23')](function(_0x3f21e7){if(_0x3f21e7){return _0x3f21e7?{'count':_0x5ea69b,'rows':_0x3f21e7}:null;}})[_0x4d4f('0x23')](respondWithResult(_0x28c128,null))[_0x4d4f('0x56')](handleError(_0x28c128,null));};exports[_0x4d4f('0x78')]=function(_0x175011,_0x27fd1e){var _0x51e70f=_0x175011[_0x4d4f('0x57')]['id'];var _0x46f316=_0x175011[_0x4d4f('0x5f')];var _0x148ecd=0xc8;var _0x501118=null;return db[_0x4d4f('0x79')]['transaction']({'isolationLevel':db['sequelize'][_0x4d4f('0x7a')][_0x4d4f('0x7b')][_0x4d4f('0x7c')]},function(_0x3de9b3){return db[_0x4d4f('0x3f')][_0x4d4f('0x62')]({'where':{'id':_0x51e70f},'transaction':_0x3de9b3})[_0x4d4f('0x23')](function(_0x16001e){if(_0x16001e){return db[_0x4d4f('0x7d')]['destroy']({'where':{'WhatsappAccountId':_0x51e70f},'transaction':_0x3de9b3})[_0x4d4f('0x23')](function(){var _0x5683a0=_[_0x4d4f('0x43')](_0x46f316,function(_0x1a6e96){_0x1a6e96[_0x4d4f('0x67')]=_0x51e70f;return _0x1a6e96;});return db[_0x4d4f('0x7d')][_0x4d4f('0x7e')](_0x5683a0,{'transaction':_0x3de9b3});});}else{_0x148ecd=0x194;_0x501118=[];}});})[_0x4d4f('0x23')](function(){if(_0x148ecd!==0x194){return db[_0x4d4f('0x7d')][_0x4d4f('0x7f')]({'where':{'WhatsappAccountId':_0x51e70f},'order':_0x4d4f('0x80')})[_0x4d4f('0x23')](function(_0x1f30c8){_0x501118=_0x1f30c8;});}})['catch'](function(_0x1dad7e){_0x148ecd=0x1f4;logger[_0x4d4f('0x26')](_0x1dad7e['stack']);if(_0x1dad7e[_0x4d4f('0x3a')]){delete _0x1dad7e[_0x4d4f('0x3a')];}_0x501118=_0x1dad7e;})[_0x4d4f('0x81')](function(){if(_0x501118===null){_0x27fd1e[_0x4d4f('0x2b')](_0x148ecd);}else{if(_0x148ecd===0x1f4){_0x27fd1e[_0x4d4f('0x2c')](_0x148ecd)[_0x4d4f('0x3b')](_0x501118);}else{_0x27fd1e['status'](_0x148ecd)[_0x4d4f('0x2e')](_0x501118);}}});};exports[_0x4d4f('0x82')]=function(_0x25dde9,_0x4dc09d,_0x122b70){var _0x4306d2={};var _0x4b9102={};var _0x4f84f5;var _0x35768e;return db['WhatsappAccount'][_0x4d4f('0x62')]({'where':{'id':_0x25dde9[_0x4d4f('0x57')]['id']}})[_0x4d4f('0x23')](handleEntityNotFound(_0x4dc09d,null))[_0x4d4f('0x23')](function(_0x361da6){if(_0x361da6){_0x4f84f5=_0x361da6;_0x4b9102[_0x4d4f('0x42')]=_[_0x4d4f('0x44')](db['WhatsappApplication'][_0x4d4f('0x40')]);_0x4b9102['query']=_[_0x4d4f('0x44')](_0x25dde9[_0x4d4f('0x45')]);_0x4b9102['filters']=_['intersection'](_0x4b9102[_0x4d4f('0x42')],_0x4b9102['query']);_0x4306d2['attributes']=_['intersection'](_0x4b9102[_0x4d4f('0x42')],qs[_0x4d4f('0x48')](_0x25dde9['query']['fields']));_0x4306d2[_0x4d4f('0x47')]=_0x4306d2[_0x4d4f('0x47')][_0x4d4f('0x49')]?_0x4306d2[_0x4d4f('0x47')]:_0x4b9102[_0x4d4f('0x42')];_0x4306d2[_0x4d4f('0x65')]=qs[_0x4d4f('0x4b')](_0x25dde9[_0x4d4f('0x45')][_0x4d4f('0x4b')]);_0x4306d2[_0x4d4f('0x4c')]=qs[_0x4d4f('0x4d')](_[_0x4d4f('0x66')](_0x25dde9['query'],_0x4b9102[_0x4d4f('0x4d')]));if(_0x25dde9[_0x4d4f('0x45')][_0x4d4f('0x4e')]){_0x4306d2[_0x4d4f('0x4c')]=_[_0x4d4f('0x4f')](_0x4306d2['where'],{'$or':_['map'](_0x4306d2['attributes'],function(_0x1d34b9){var _0x57fb0d={};_0x57fb0d[_0x1d34b9]={'$like':'%'+_0x25dde9[_0x4d4f('0x45')][_0x4d4f('0x4e')]+'%'};return _0x57fb0d;})});}_0x4306d2=_[_0x4d4f('0x4f')]({},_0x4306d2,_0x25dde9[_0x4d4f('0x68')]);return _0x4f84f5[_0x4d4f('0x82')](_0x4306d2);}})[_0x4d4f('0x23')](function(_0x53f116){if(_0x53f116){_0x35768e=_0x53f116[_0x4d4f('0x49')];if(!_0x25dde9[_0x4d4f('0x45')][_0x4d4f('0x4a')](_0x4d4f('0x64'))){_0x4306d2[_0x4d4f('0x32')]=qs[_0x4d4f('0x32')](_0x25dde9['query']['limit']);_0x4306d2[_0x4d4f('0x2f')]=qs['offset'](_0x25dde9[_0x4d4f('0x45')][_0x4d4f('0x2f')]);}return _0x4f84f5[_0x4d4f('0x82')](_0x4306d2);}})[_0x4d4f('0x23')](function(_0x52996d){if(_0x52996d){return _0x52996d?{'count':_0x35768e,'rows':_0x52996d}:null;}})['then'](respondWithResult(_0x4dc09d,null))['catch'](handleError(_0x4dc09d,null));};exports[_0x4d4f('0x83')]=function(_0x5bd0fb,_0x3684ab,_0x42e132){var _0x5d9453={'channel':'whatsapp'};var _0x151346=[];var _0x33c4dd=[];var _0xfce03b={};return db[_0x4d4f('0x3f')]['find']({'where':{'id':_0x5bd0fb[_0x4d4f('0x57')]['id']},'include':[{'model':db[_0x4d4f('0x7d')],'as':'Applications'}]})[_0x4d4f('0x23')](handleEntityNotFound(_0x3684ab,null))[_0x4d4f('0x23')](function(_0x283a1a){_0x5d9453[_0x4d4f('0x84')]=_0x283a1a;if(_0x5d9453[_0x4d4f('0x84')]&&_0x5d9453[_0x4d4f('0x84')][_0x4d4f('0x50')]===_0x4d4f('0x85')&&_0x5bd0fb['body']['statuses']){if(_0x5bd0fb[_0x4d4f('0x5f')][_0x4d4f('0x86')][_0x4d4f('0x49')]===0x0)return;if(_0x5bd0fb[_0x4d4f('0x5f')][_0x4d4f('0x86')][0x0][_0x4d4f('0x87')]!==_0x4d4f('0x88'))return;return db[_0x4d4f('0x89')][_0x4d4f('0x35')]({'read':!![],'readAt':_0x5bd0fb[_0x4d4f('0x5f')][_0x4d4f('0x86')][0x0][_0x4d4f('0x8a')]},{'where':{'messageId':_0x5bd0fb['body'][_0x4d4f('0x86')][0x0]['message_id']},'individualHooks':!![]})[_0x4d4f('0x23')](function(_0x169767){return _0x3684ab[_0x4d4f('0x2c')](0xc8)[_0x4d4f('0x2e')](_0x169767);});}_0x5d9453['applications']=_[_0x4d4f('0x8b')](_0x283a1a[_0x4d4f('0x8c')],['priority'],[_0x4d4f('0x8d')]);if(_0x5d9453['account'][_0x4d4f('0x8c')]){delete _0x5d9453[_0x4d4f('0x84')]['Applications'];}return db[_0x4d4f('0x8e')][_0x4d4f('0x61')]()[_0x4d4f('0x23')](function(_0x3cdc9f){if(!_0x3cdc9f){throw new db[(_0x4d4f('0x8f'))]['ValidationError'](_0x4d4f('0x90'));}_0x151346=_['difference'](_[_0x4d4f('0x44')](_0x3cdc9f),[_0x4d4f('0x91'),_0x4d4f('0x92')]);_0x33c4dd=_[_0x4d4f('0x93')](_[_0x4d4f('0x44')](_0x3cdc9f),[_0x4d4f('0x91'),'updatedAt',_0x4d4f('0x94'),'ListId']);_0x5d9453['body']={'mapKey':'mobile'};if(_0x5d9453[_0x4d4f('0x84')]&&_0x5d9453[_0x4d4f('0x84')][_0x4d4f('0x50')]===_0x4d4f('0x95')){_0x5d9453['body']['from']=_0x5bd0fb['body'][_0x4d4f('0x96')]['replace'](_0x4d4f('0x97'),'');_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0x5f')]=_0x5bd0fb['body']['Body'];_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0x98')]=_0x5bd0fb[_0x4d4f('0x5f')]['MessageSid'];}if(_0x5d9453[_0x4d4f('0x84')]&&_0x5d9453[_0x4d4f('0x84')][_0x4d4f('0x50')]===_0x4d4f('0x85')){_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0x99')]=_0x5bd0fb['body'][_0x4d4f('0x9a')][0x0]['from'];_0x5d9453['body']['body']=_0x5bd0fb[_0x4d4f('0x5f')][_0x4d4f('0x9a')][0x0]['message'][_0x4d4f('0x5f')];_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0x98')]=_0x5bd0fb[_0x4d4f('0x5f')][_0x4d4f('0x9a')][0x0][_0x4d4f('0x9b')];}if(_0x5d9453[_0x4d4f('0x5f')]['id']){delete _0x5d9453['body']['id'];}if(_[_0x4d4f('0x9c')](_0x5d9453[_0x4d4f('0x5f')]['from'])){throw new db[(_0x4d4f('0x8f'))][(_0x4d4f('0x9d'))](_0x4d4f('0x9e'));}if(_[_0x4d4f('0x9c')](_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0x5f')])||_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0x5f')]===''){throw new db['Sequelize'][(_0x4d4f('0x9d'))](_0x4d4f('0x9f'));}if(_[_0x4d4f('0x9c')](_0x5d9453[_0x4d4f('0x5f')]['mapKey'])){throw new db[(_0x4d4f('0x8f'))][(_0x4d4f('0x9d'))](_0x4d4f('0xa0')+_0x33c4dd);}if(!_[_0x4d4f('0xa1')](_0x33c4dd,_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0xa2')])){throw new db[(_0x4d4f('0x8f'))][(_0x4d4f('0x9d'))](_0x4d4f('0xa3')+_0x33c4dd);}_0xfce03b[_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0xa2')]]=_0x5d9453['body'][_0x4d4f('0x99')];return db[_0x4d4f('0xa4')][_0x4d4f('0x60')]({'where':{'id':_0x5d9453[_0x4d4f('0x84')][_0x4d4f('0xa5')]},'include':[{'model':db[_0x4d4f('0x8e')],'as':_0x4d4f('0xa6'),'where':_0xfce03b,'limit':0x1,'order':[[_0x4d4f('0x92'),_0x4d4f('0xa7')]]}]});})[_0x4d4f('0x23')](handleEntityNotFound(_0x3684ab,null))[_0x4d4f('0x23')](function(_0x54b8c5){if(_0x54b8c5){_0x5d9453[_0x4d4f('0xa8')]=_[_0x4d4f('0x70')](_0x54b8c5,[_0x4d4f('0xa6')]);if(_0x54b8c5[_0x4d4f('0xa6')][_0x4d4f('0x49')]){return _0x54b8c5[_0x4d4f('0xa6')][0x0];}var _0x3a9b0f=_[_0x4d4f('0xa9')](_0x5d9453[_0x4d4f('0x5f')],{'firstName':_0x5d9453[_0x4d4f('0x5f')]['from'],'ListId':_0x54b8c5['id']});_0x3a9b0f[_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0xa2')]]=_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0x99')];return db[_0x4d4f('0x8e')][_0x4d4f('0x58')](_0x3a9b0f,{'fields':_0x151346,'raw':!![]});}})['then'](handleEntityNotFound(_0x3684ab,null))[_0x4d4f('0x23')](function(_0x1dcfb5){if(_0x1dcfb5){_0x5d9453[_0x4d4f('0xaa')]=_0x1dcfb5;var _0x3109fe={'ContactId':_0x1dcfb5['id'],'phone':_0x5d9453[_0x4d4f('0x5f')]['from'],'WhatsappAccountId':_0x5bd0fb[_0x4d4f('0x57')]['id']};var _0x32a519={'ContactId':_0x1dcfb5['id'],'WhatsappAccountId':_0x5bd0fb[_0x4d4f('0x57')]['id'],'closed':![]};return db[_0x4d4f('0xab')][_0x4d4f('0x60')]({'where':_0x32a519})[_0x4d4f('0x23')](function(_0x3369fe){if(_0x3369fe){return[_0x3369fe,![]];}return db['WhatsappInteraction'][_0x4d4f('0x58')](_0x3109fe)[_0x4d4f('0x23')](function(_0x1e7cca){return[_0x1e7cca,!![]];});});}})[_0x4d4f('0xac')](function(_0x399c91,_0x314578){_0x5d9453[_0x4d4f('0xad')]=_0x399c91['get']({'plain':!![]});_0x5d9453[_0x4d4f('0xad')]['created']=![];if(_0x314578){if(_0x5d9453[_0x4d4f('0x84')]['autoclose']){_0x5d9453[_0x4d4f('0xae')][_0x4d4f('0xaf')]({'id':0x0,'priority':_0x5d9453[_0x4d4f('0xae')][_0x4d4f('0x49')]+0x1,'app':_0x4d4f('0xb0'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x5d9453[_0x4d4f('0xad')][_0x4d4f('0xb1')]=!![];}return db[_0x4d4f('0x89')][_0x4d4f('0x58')]({'phone':_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0x99')],'messageId':_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0x98')],'body':_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0x5f')],'WhatsappAccountId':_0x5bd0fb[_0x4d4f('0x57')]['id'],'WhatsappInteractionId':_0x399c91['id'],'direction':'in','ContactId':_0x399c91[_0x4d4f('0xb2')],'AttachmentId':_0x5d9453[_0x4d4f('0x5f')][_0x4d4f('0xb3')]});})['then'](function(_0x2127aa){_0x5d9453[_0x4d4f('0x28')]=_0x2127aa;if(!_0x5d9453[_0x4d4f('0xad')][_0x4d4f('0xb4')])return;return db[_0x4d4f('0x77')]['find']({'attributes':['id',_0x4d4f('0x3a')],'where':{'id':_0x5d9453['interaction']['UserId']}});})[_0x4d4f('0x23')](function(_0x16f456){if(_0x16f456){_0x5d9453[_0x4d4f('0xae')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x16f456[_0x4d4f('0x3a')]+','+(_0x5d9453[_0x4d4f('0x84')][_0x4d4f('0xb5')]||0xa),'interval':_0x4d4f('0xb6')});}if(!_0x5d9453[_0x4d4f('0xad')][_0x4d4f('0xb7')])return;return db[_0x4d4f('0xb8')][_0x4d4f('0x60')]({'attributes':['id',_0x4d4f('0x3a')],'where':{'id':_0x5d9453[_0x4d4f('0xad')][_0x4d4f('0xb7')]}});})['then'](function(_0x2298c5){if(_0x2298c5){_0x5d9453[_0x4d4f('0xae')][_0x4d4f('0xb9')]({'id':0x0,'priority':0x1,'app':_0x4d4f('0xba'),'appdata':_0x2298c5[_0x4d4f('0x3a')]+','+(_0x5d9453[_0x4d4f('0x84')][_0x4d4f('0xbb')]||0x12c),'interval':_0x4d4f('0xb6')});}return respondWithRpcPromise(_0x4d4f('0xbc'),_0x4d4f('0xbd'),_0x5d9453);})[_0x4d4f('0x23')](function(_0xbc16fd){if(_0xbc16fd){var _0x3951d6=0xc8;var _0x59b209='receiveMessage';logger[_0x4d4f('0x29')](_0x4d4f('0xbe'),_0x59b209,_0x3951d6,_0x4d4f('0xbf'));logger['debug'](_0x4d4f('0xc0'),_0x59b209,_0x3951d6,_0x4d4f('0xbf'),JSON[_0x4d4f('0x25')](_0xbc16fd));if(_0x5d9453[_0x4d4f('0x84')][_0x4d4f('0x50')]===_0x4d4f('0x95')){return _0x3684ab['status'](_0x3951d6)[_0x4d4f('0x33')](_0x4d4f('0xc1'),_0x4d4f('0xc2'))['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x3684ab[_0x4d4f('0x2c')](_0x3951d6)[_0x4d4f('0x2e')](_0xbc16fd);}}});})['catch'](handleError(_0x3684ab,null));};exports['send']=function(_0x5d84b6,_0x17c57e,_0x314c4c){var _0x44ab3f,_0x115433,_0x59d897;if(_[_0x4d4f('0x9c')](_0x5d84b6['body'][_0x4d4f('0x5f')])||_0x5d84b6['body']['body']===''){throw new db[(_0x4d4f('0x8f'))]['ValidationError'](_0x4d4f('0x9f'));}if(_[_0x4d4f('0x9c')](_0x5d84b6[_0x4d4f('0x5f')]['to'])){throw new db[(_0x4d4f('0x8f'))][(_0x4d4f('0x9d'))](_0x4d4f('0xc3'));}_0x44ab3f=_0x5d84b6[_0x4d4f('0x5f')]['to'];return db[_0x4d4f('0x3f')]['find']({'where':{'id':_0x5d84b6[_0x4d4f('0x57')]['id']},'include':[{'model':db['CmList'],'as':_0x4d4f('0xc4'),'include':[{'model':db[_0x4d4f('0x8e')],'as':_0x4d4f('0xa6'),'where':{'mobile':_0x44ab3f},'limit':0x1,'order':[[_0x4d4f('0x92'),_0x4d4f('0xa7')]]}]}]})[_0x4d4f('0x23')](handleEntityNotFound(_0x17c57e,null))['then'](function(_0x47991d){if(_0x47991d&&_0x47991d[_0x4d4f('0xc4')]){_0x115433=_0x47991d[_0x4d4f('0x37')]({'plain':!![]});if(_0x115433[_0x4d4f('0xc4')]&&_0x115433[_0x4d4f('0xc4')]['Contacts'][_0x4d4f('0x49')]){return _0x115433[_0x4d4f('0xc4')][_0x4d4f('0xa6')][0x0];}return db['CmContact']['create'](_[_0x4d4f('0xa9')](_0x5d84b6[_0x4d4f('0x5f')],{'firstName':_0x44ab3f,'mobile':_0x44ab3f,'phone':_0x44ab3f,'ListId':_0x115433[_0x4d4f('0xa5')]}));}})[_0x4d4f('0x23')](handleEntityNotFound(_0x17c57e,null))['then'](function(_0x538cd7){if(_0x538cd7){_0x59d897=_0x538cd7;return db[_0x4d4f('0xab')]['find']({'where':{'ContactId':_0x59d897['id'],'closed':![],'WhatsappAccountId':_0x115433['id']}})[_0x4d4f('0x23')](function(_0x3f233c){if(_0x3f233c){return[_0x3f233c,![]];}return db[_0x4d4f('0xab')][_0x4d4f('0x58')]({'UserId':_0x5d84b6[_0x4d4f('0x59')]['id'],'ContactId':_0x59d897['id'],'WhatsappAccountId':_0x115433['id'],'phone':_0x44ab3f,'firstMsgDirection':_0x4d4f('0xc5'),'Messages':[_['merge'](_0x5d84b6[_0x4d4f('0x5f')],{'read':![],'body':_0x5d84b6[_0x4d4f('0x5f')]['body'],'phone':_0x44ab3f,'WhatsappAccountId':_0x115433['id'],'UserId':_0x5d84b6[_0x4d4f('0x59')]['id'],'ContactId':_0x59d897['id']})]},{'include':[{'model':db[_0x4d4f('0x89')],'as':'Messages'}]})[_0x4d4f('0x23')](function(_0x585842){return[_0x585842,!![]];});});}})[_0x4d4f('0xac')](function(_0x1b6539,_0x4cd4ac){if(_0x4cd4ac){return _0x1b6539;}return db[_0x4d4f('0x89')]['create'](_[_0x4d4f('0x4f')](_0x5d84b6[_0x4d4f('0x5f')],{'read':![],'body':_0x5d84b6['body'][_0x4d4f('0x5f')],'phone':_0x44ab3f,'WhatsappAccountId':_0x115433['id'],'WhatsappInteractionId':_0x1b6539['id'],'UserId':_0x5d84b6[_0x4d4f('0x59')]['id'],'ContactId':_0x59d897['id']}))['then'](function(_0x5ea5f9){_0x1b6539[_0x4d4f('0xc6')][_0x4d4f('0xc7')]=[];_0x1b6539[_0x4d4f('0xc6')]['Messages'][_0x4d4f('0xaf')](_0x5ea5f9[_0x4d4f('0xc6')]);return _0x1b6539;});})[_0x4d4f('0x23')](respondWithResult(_0x17c57e,null))[_0x4d4f('0x56')](handleError(_0x17c57e,null));};
\ No newline at end of file
+var _0x8aad=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','options','include','findAll','rows','show','params','includeAll','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','order','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addAgents','spread','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','bulkCreate','findAndCountAll','priority','finally','send','getApplications','notify','whatsapp','Applications','account','type','statuses','read','WhatsappMessage','timestamp','message_id','applications','orderBy','Sequelize','ValidationError','difference','updatedAt','CompanyId','ListId','mobile','twilio','from','From','replace','whatsapp:','Body','MessageSid','sinch','notifications','messageId','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','DESC','list','contact','WhatsappInteraction','interaction','created','close','unmanaged','*,*,*,*','ContactId','UserId','unshift','queueId','WhatsappQueue','queue','waitForTheAssignedQueue','startRouting','receiveMessage','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','dataValues','Messages','push','eml-format','rimraf','fast-json-patch','moment','bluebird','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','save','update','destroy','WhatsappAccounts','UserProfileResource','stack','name','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','key','model'];(function(_0x36926b,_0x57b997){var _0x537652=function(_0x549445){while(--_0x549445){_0x36926b['push'](_0x36926b['shift']());}};_0x537652(++_0x57b997);}(_0x8aad,0x146));var _0xd8aa=function(_0x35ab83,_0x54ed7a){_0x35ab83=_0x35ab83-0x0;var _0x29261c=_0x8aad[_0x35ab83];return _0x29261c;};'use strict';var emlformat=require(_0xd8aa('0x0'));var rimraf=require(_0xd8aa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8aa('0x2'));var rp=require('request-promise');var moment=require(_0xd8aa('0x3'));var BPromise=require(_0xd8aa('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd8aa('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd8aa('0x6'));var fs=require('fs');var fs_extra=require(_0xd8aa('0x7'));var _=require(_0xd8aa('0x8'));var squel=require('squel');var crypto=require(_0xd8aa('0x9'));var jsforce=require(_0xd8aa('0xa'));var deskjs=require(_0xd8aa('0xb'));var toCsv=require(_0xd8aa('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd8aa('0xd'));var authService=require(_0xd8aa('0xe'));var qs=require(_0xd8aa('0xf'));var as=require(_0xd8aa('0x10'));var hardwareService=require(_0xd8aa('0x11'));var logger=require('../../config/logger')(_0xd8aa('0x12'));var utils=require(_0xd8aa('0x13'));var config=require(_0xd8aa('0x14'));var licenseUtil=require(_0xd8aa('0x15'));var db=require(_0xd8aa('0x16'))['db'];config[_0xd8aa('0x17')]=_[_0xd8aa('0x18')](config[_0xd8aa('0x17')],{'host':_0xd8aa('0x19'),'port':0x18eb});var socket=require(_0xd8aa('0x1a'))(new Redis(config['redis']));require('./whatsappAccount.socket')[_0xd8aa('0x1b')](socket);var jayson=require(_0xd8aa('0x1c'));var client=jayson[_0xd8aa('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0x2678ed,_0x180c56,_0x39b5bc,_0x404ed6){return new BPromise(function(_0x47a0e3,_0x476930){var _0xa9ba1b=_0x404ed6||client;return _0xa9ba1b['request'](_0x2678ed,_0x39b5bc)[_0xd8aa('0x1e')](function(_0x223a34){logger[_0xd8aa('0x1f')](_0xd8aa('0x20'),_0x180c56,_0xd8aa('0x21'));logger['debug'](_0xd8aa('0x22'),_0x180c56,_0xd8aa('0x21'),JSON[_0xd8aa('0x23')](_0x223a34));if(_0x223a34[_0xd8aa('0x24')]){if(_0x223a34['error'][_0xd8aa('0x25')]===0x1f4){logger[_0xd8aa('0x24')](_0xd8aa('0x20'),_0x180c56,_0x223a34[_0xd8aa('0x24')][_0xd8aa('0x26')]);return _0x476930(_0x223a34['error'][_0xd8aa('0x26')]);}logger[_0xd8aa('0x24')](_0xd8aa('0x20'),_0x180c56,_0x223a34['error'][_0xd8aa('0x26')]);return _0x47a0e3(_0x223a34[_0xd8aa('0x24')][_0xd8aa('0x26')]);}else{logger[_0xd8aa('0x1f')](_0xd8aa('0x20'),_0x180c56,_0xd8aa('0x21'));_0x47a0e3(_0x223a34[_0xd8aa('0x27')][_0xd8aa('0x26')]);}})[_0xd8aa('0x28')](function(_0x210176){logger[_0xd8aa('0x24')](_0xd8aa('0x20'),_0x180c56,_0x210176);_0x476930(_0x210176);});});}function respondWithStatusCode(_0x26cc66,_0x5f1027){_0x5f1027=_0x5f1027||0xcc;return function(_0x1f066a){if(_0x1f066a){return _0x26cc66[_0xd8aa('0x29')](_0x5f1027);}return _0x26cc66[_0xd8aa('0x2a')](_0x5f1027)[_0xd8aa('0x2b')]();};}function respondWithResult(_0x26cff3,_0x3696fd){_0x3696fd=_0x3696fd||0xc8;return function(_0x26ab06){if(_0x26ab06){return _0x26cff3[_0xd8aa('0x2a')](_0x3696fd)[_0xd8aa('0x2c')](_0x26ab06);}};}function respondWithFilteredResult(_0xbe531,_0x4cdb90){return function(_0x1f2a28){if(_0x1f2a28){var _0x34b792=typeof _0x4cdb90[_0xd8aa('0x2d')]==='undefined'&&typeof _0x4cdb90[_0xd8aa('0x2e')]==='undefined';var _0x3052c6=_0x1f2a28[_0xd8aa('0x2f')];var _0x37902c=_0x34b792?0x0:_0x4cdb90[_0xd8aa('0x2d')];var _0x44f783=_0x34b792?_0x1f2a28[_0xd8aa('0x2f')]:_0x4cdb90[_0xd8aa('0x2d')]+_0x4cdb90[_0xd8aa('0x2e')];var _0x5e41e6;if(_0x44f783>=_0x3052c6){_0x44f783=_0x3052c6;_0x5e41e6=0xc8;}else{_0x5e41e6=0xce;}_0xbe531[_0xd8aa('0x2a')](_0x5e41e6);return _0xbe531[_0xd8aa('0x30')](_0xd8aa('0x31'),_0x37902c+'-'+_0x44f783+'/'+_0x3052c6)[_0xd8aa('0x2c')](_0x1f2a28);}return null;};}function patchUpdates(_0x1b475a){return function(_0x3b8476){try{jsonpatch[_0xd8aa('0x32')](_0x3b8476,_0x1b475a,!![]);}catch(_0x3133fb){return BPromise['reject'](_0x3133fb);}return _0x3b8476[_0xd8aa('0x33')]();};}function saveUpdates(_0x172673,_0x47401e){return function(_0x511b4a){if(_0x511b4a){return _0x511b4a[_0xd8aa('0x34')](_0x172673)[_0xd8aa('0x1e')](function(_0x21f550){return _0x21f550;});}return null;};}function removeEntity(_0x45c216,_0x249564){return function(_0x25672a){if(_0x25672a){return _0x25672a[_0xd8aa('0x35')]()[_0xd8aa('0x1e')](function(){var _0x980091=_0x25672a['get']({'plain':!![]});var _0xc35d92=_0xd8aa('0x36');return db[_0xd8aa('0x37')][_0xd8aa('0x35')]({'where':{'type':_0xc35d92,'resourceId':_0x980091['id']}})[_0xd8aa('0x1e')](function(){return _0x25672a;});})[_0xd8aa('0x1e')](function(){_0x45c216[_0xd8aa('0x2a')](0xcc)[_0xd8aa('0x2b')]();});}};}function handleEntityNotFound(_0xb8bfe6,_0x5983f6){return function(_0x1df47c){if(!_0x1df47c){_0xb8bfe6['sendStatus'](0x194);}return _0x1df47c;};}function handleError(_0x18d7fe,_0x1bb798){_0x1bb798=_0x1bb798||0x1f4;return function(_0x4ed01e){logger[_0xd8aa('0x24')](_0x4ed01e[_0xd8aa('0x38')]);if(_0x4ed01e[_0xd8aa('0x39')]){delete _0x4ed01e[_0xd8aa('0x39')];}_0x18d7fe[_0xd8aa('0x2a')](_0x1bb798)['send'](_0x4ed01e);};}exports['index']=function(_0x25145c,_0x4debd0){var _0x25f091={'include':[{'model':db[_0xd8aa('0x3a')],'as':_0xd8aa('0x3b')}]},_0x7a6df2={},_0x8ffbe1={'count':0x0,'rows':[]};var _0x3430ae=_[_0xd8aa('0x3c')](db[_0xd8aa('0x3d')][_0xd8aa('0x3e')],function(_0xa34bea){return{'name':_0xa34bea[_0xd8aa('0x3f')],'type':_0xa34bea['type'][_0xd8aa('0x40')]};});_0x7a6df2[_0xd8aa('0x41')]=_[_0xd8aa('0x3c')](_0x3430ae,'name');_0x7a6df2[_0xd8aa('0x42')]=_[_0xd8aa('0x43')](_0x25145c[_0xd8aa('0x42')]);_0x7a6df2[_0xd8aa('0x44')]=_[_0xd8aa('0x45')](_0x7a6df2[_0xd8aa('0x41')],_0x7a6df2[_0xd8aa('0x42')]);_0x25f091[_0xd8aa('0x46')]=_[_0xd8aa('0x45')](_0x7a6df2[_0xd8aa('0x41')],qs[_0xd8aa('0x47')](_0x25145c[_0xd8aa('0x42')][_0xd8aa('0x47')]));_0x25f091[_0xd8aa('0x46')]=_0x25f091[_0xd8aa('0x46')][_0xd8aa('0x48')]?_0x25f091[_0xd8aa('0x46')]:_0x7a6df2[_0xd8aa('0x41')];if(!_0x25145c['query'][_0xd8aa('0x49')](_0xd8aa('0x4a'))){_0x25f091[_0xd8aa('0x2e')]=qs[_0xd8aa('0x2e')](_0x25145c[_0xd8aa('0x42')][_0xd8aa('0x2e')]);_0x25f091['offset']=qs[_0xd8aa('0x2d')](_0x25145c['query'][_0xd8aa('0x2d')]);}_0x25f091['order']=qs[_0xd8aa('0x4b')](_0x25145c['query']['sort']);_0x25f091[_0xd8aa('0x4c')]=qs[_0xd8aa('0x44')](_[_0xd8aa('0x4d')](_0x25145c[_0xd8aa('0x42')],_0x7a6df2[_0xd8aa('0x44')]),_0x3430ae);if(_0x25145c[_0xd8aa('0x42')]['filter']){_0x25f091[_0xd8aa('0x4c')]=_[_0xd8aa('0x4e')](_0x25f091[_0xd8aa('0x4c')],{'$or':_[_0xd8aa('0x3c')](_0x3430ae,function(_0x269395){if(_0x269395['type']!=='VIRTUAL'){var _0x58cf42={};_0x58cf42[_0x269395[_0xd8aa('0x39')]]={'$like':'%'+_0x25145c[_0xd8aa('0x42')][_0xd8aa('0x4f')]+'%'};return _0x58cf42;}})});}_0x25f091=_[_0xd8aa('0x4e')]({},_0x25f091,_0x25145c[_0xd8aa('0x50')]);var _0xabc36d={'where':_0x25f091['where']};return db[_0xd8aa('0x3d')][_0xd8aa('0x2f')](_0xabc36d)['then'](function(_0x2ad21f){_0x8ffbe1[_0xd8aa('0x2f')]=_0x2ad21f;if(_0x25145c[_0xd8aa('0x42')]['includeAll']){_0x25f091[_0xd8aa('0x51')]=[{'all':!![]}];}return db[_0xd8aa('0x3d')][_0xd8aa('0x52')](_0x25f091);})[_0xd8aa('0x1e')](function(_0x1c6a21){_0x8ffbe1[_0xd8aa('0x53')]=_0x1c6a21;return _0x8ffbe1;})['then'](respondWithFilteredResult(_0x4debd0,_0x25f091))['catch'](handleError(_0x4debd0,null));};exports[_0xd8aa('0x54')]=function(_0x2b5a82,_0x361d5d){var _0x1ea58a={'raw':![],'where':{'id':_0x2b5a82[_0xd8aa('0x55')]['id']},'include':[{'model':db[_0xd8aa('0x3a')],'as':'mandatoryDispositionPause'}]},_0xe810a1={};_0xe810a1[_0xd8aa('0x41')]=_[_0xd8aa('0x43')](db['WhatsappAccount'][_0xd8aa('0x3e')]);_0xe810a1['query']=_[_0xd8aa('0x43')](_0x2b5a82[_0xd8aa('0x42')]);_0xe810a1[_0xd8aa('0x44')]=_['intersection'](_0xe810a1['model'],_0xe810a1['query']);_0x1ea58a['attributes']=_[_0xd8aa('0x45')](_0xe810a1[_0xd8aa('0x41')],qs[_0xd8aa('0x47')](_0x2b5a82['query']['fields']));_0x1ea58a['attributes']=_0x1ea58a[_0xd8aa('0x46')][_0xd8aa('0x48')]?_0x1ea58a[_0xd8aa('0x46')]:_0xe810a1[_0xd8aa('0x41')];if(_0x2b5a82[_0xd8aa('0x42')][_0xd8aa('0x56')]){_0x1ea58a[_0xd8aa('0x51')]=[{'all':!![]}];}_0x1ea58a=_[_0xd8aa('0x4e')]({},_0x1ea58a,_0x2b5a82[_0xd8aa('0x50')]);return db[_0xd8aa('0x3d')][_0xd8aa('0x57')](_0x1ea58a)[_0xd8aa('0x1e')](handleEntityNotFound(_0x361d5d,null))[_0xd8aa('0x1e')](respondWithResult(_0x361d5d,null))['catch'](handleError(_0x361d5d,null));};exports['create']=function(_0x46eaeb,_0x361118){return db[_0xd8aa('0x3d')][_0xd8aa('0x58')](_0x46eaeb['body'],{})[_0xd8aa('0x1e')](function(_0x34efde){var _0x5875df=_0x46eaeb['user'][_0xd8aa('0x59')]({'plain':!![]});if(!_0x5875df)throw new Error(_0xd8aa('0x5a'));if(_0x5875df[_0xd8aa('0x5b')]===_0xd8aa('0x5c')){var _0x54aaef=_0x34efde['get']({'plain':!![]});var _0x38780f='WhatsappAccounts';return db[_0xd8aa('0x5d')][_0xd8aa('0x57')]({'where':{'name':_0x38780f,'userProfileId':_0x5875df[_0xd8aa('0x5e')]},'raw':!![]})[_0xd8aa('0x1e')](function(_0x158eee){if(_0x158eee&&_0x158eee[_0xd8aa('0x5f')]===0x0){return db['UserProfileResource'][_0xd8aa('0x58')]({'name':_0x54aaef[_0xd8aa('0x39')],'resourceId':_0x54aaef['id'],'type':_0x158eee[_0xd8aa('0x39')],'sectionId':_0x158eee['id']},{})[_0xd8aa('0x1e')](function(){return _0x34efde;});}else{return _0x34efde;}})[_0xd8aa('0x28')](function(_0x170954){logger[_0xd8aa('0x24')](_0xd8aa('0x60'),_0x170954);throw _0x170954;});}return _0x34efde;})[_0xd8aa('0x1e')](respondWithResult(_0x361118,0xc9))[_0xd8aa('0x28')](handleError(_0x361118,null));};exports[_0xd8aa('0x34')]=function(_0x447c75,_0x167532){if(_0x447c75[_0xd8aa('0x61')]['id']){delete _0x447c75[_0xd8aa('0x61')]['id'];}return db[_0xd8aa('0x3d')][_0xd8aa('0x57')]({'where':{'id':_0x447c75[_0xd8aa('0x55')]['id']},'include':[{'model':db[_0xd8aa('0x3a')],'as':_0xd8aa('0x3b')}]})[_0xd8aa('0x1e')](handleEntityNotFound(_0x167532,null))['then'](saveUpdates(_0x447c75['body'],null))['then'](respondWithResult(_0x167532,null))[_0xd8aa('0x28')](handleError(_0x167532,null));};exports['destroy']=function(_0xee4dc2,_0xcda805){return db[_0xd8aa('0x3d')][_0xd8aa('0x57')]({'where':{'id':_0xee4dc2[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0xcda805,null))[_0xd8aa('0x1e')](removeEntity(_0xcda805,null))[_0xd8aa('0x28')](handleError(_0xcda805,null));};exports[_0xd8aa('0x62')]=function(_0x3ef3c8,_0x1824fa){return db['WhatsappAccount']['describe']()[_0xd8aa('0x1e')](respondWithResult(_0x1824fa,null))['catch'](handleError(_0x1824fa,null));};exports[_0xd8aa('0x63')]=function(_0x57d1c3,_0x532db9,_0x288740){if(_0x57d1c3[_0xd8aa('0x61')]['id']){delete _0x57d1c3[_0xd8aa('0x61')]['id'];}return db[_0xd8aa('0x3d')]['find']({'where':{'id':_0x57d1c3[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x532db9,null))[_0xd8aa('0x1e')](function(_0x9f73cf){if(_0x9f73cf){_0x57d1c3[_0xd8aa('0x61')][_0xd8aa('0x64')]=_0x9f73cf['id'];return db[_0xd8aa('0x65')][_0xd8aa('0x58')](_0x57d1c3[_0xd8aa('0x61')]);}})[_0xd8aa('0x1e')](respondWithResult(_0x532db9,null))['catch'](handleError(_0x532db9,null));};exports[_0xd8aa('0x66')]=function(_0x4102a3,_0x19651c,_0x588880){var _0x54574c={'raw':![],'where':{}};var _0x6a8bb1={};var _0xeb3f52={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xd8aa('0x67')]({'where':{'id':_0x4102a3[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x19651c,null))[_0xd8aa('0x1e')](function(_0x425524){if(_0x425524){_0x6a8bb1[_0xd8aa('0x41')]=_[_0xd8aa('0x43')](db['Disposition'][_0xd8aa('0x3e')]);_0x6a8bb1[_0xd8aa('0x42')]=_[_0xd8aa('0x43')](_0x4102a3[_0xd8aa('0x42')]);_0x6a8bb1[_0xd8aa('0x44')]=_[_0xd8aa('0x45')](_0x6a8bb1[_0xd8aa('0x41')],_0x6a8bb1[_0xd8aa('0x42')]);_0x54574c['attributes']=_[_0xd8aa('0x45')](_0x6a8bb1[_0xd8aa('0x41')],qs[_0xd8aa('0x47')](_0x4102a3['query'][_0xd8aa('0x47')]));_0x54574c[_0xd8aa('0x46')]=_0x54574c[_0xd8aa('0x46')][_0xd8aa('0x48')]?_0x54574c[_0xd8aa('0x46')]:_0x6a8bb1[_0xd8aa('0x41')];if(!_0x4102a3[_0xd8aa('0x42')][_0xd8aa('0x49')](_0xd8aa('0x4a'))){_0x54574c[_0xd8aa('0x2e')]=qs[_0xd8aa('0x2e')](_0x4102a3[_0xd8aa('0x42')][_0xd8aa('0x2e')]);_0x54574c[_0xd8aa('0x2d')]=qs[_0xd8aa('0x2d')](_0x4102a3[_0xd8aa('0x42')][_0xd8aa('0x2d')]);}_0x54574c[_0xd8aa('0x68')]=qs['sort'](_0x4102a3[_0xd8aa('0x42')][_0xd8aa('0x4b')]);_0x54574c[_0xd8aa('0x4c')]=qs[_0xd8aa('0x44')](_['pick'](_0x4102a3[_0xd8aa('0x42')],_0x6a8bb1[_0xd8aa('0x44')]));_0x54574c[_0xd8aa('0x4c')][_0xd8aa('0x64')]=_0x425524['id'];if(_0x4102a3['query'][_0xd8aa('0x4f')]){_0x54574c['where']=_[_0xd8aa('0x4e')](_0x54574c[_0xd8aa('0x4c')],{'$or':_[_0xd8aa('0x3c')](_0x54574c[_0xd8aa('0x46')],function(_0xd02eb6){var _0xabf19e={};_0xabf19e[_0xd02eb6]={'$like':'%'+_0x4102a3[_0xd8aa('0x42')]['filter']+'%'};return _0xabf19e;})});}_0x54574c=_['merge']({},_0x54574c,_0x4102a3[_0xd8aa('0x50')]);return db[_0xd8aa('0x65')][_0xd8aa('0x2f')]({'where':_0x54574c['where']})[_0xd8aa('0x1e')](function(_0x4215b8){_0xeb3f52[_0xd8aa('0x2f')]=_0x4215b8;if(_0x4102a3[_0xd8aa('0x42')][_0xd8aa('0x56')]){_0x54574c['include']=[{'all':!![]}];}return db['Disposition'][_0xd8aa('0x52')](_0x54574c);})['then'](function(_0x2870e9){_0xeb3f52[_0xd8aa('0x53')]=_0x2870e9;return _0xeb3f52;});}})[_0xd8aa('0x1e')](respondWithFilteredResult(_0x19651c,_0x54574c))[_0xd8aa('0x28')](handleError(_0x19651c,null));};exports[_0xd8aa('0x69')]=function(_0x29bfd6,_0x49d5ab,_0xd23e6b){return db[_0xd8aa('0x3d')][_0xd8aa('0x57')]({'where':{'id':_0x29bfd6['params']['id']}})['then'](handleEntityNotFound(_0x49d5ab,null))['then'](function(_0x5133c2){if(_0x5133c2){return _0x5133c2[_0xd8aa('0x69')](_0x29bfd6[_0xd8aa('0x42')]['ids']);}})['then'](respondWithStatusCode(_0x49d5ab,null))[_0xd8aa('0x28')](handleError(_0x49d5ab,null));};exports[_0xd8aa('0x6a')]=function(_0x5f0700,_0x52ffaf,_0x29d8de){if(_0x5f0700[_0xd8aa('0x61')]['id']){delete _0x5f0700[_0xd8aa('0x61')]['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x5f0700[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x52ffaf,null))[_0xd8aa('0x1e')](function(_0x205bf6){if(_0x205bf6){_0x5f0700[_0xd8aa('0x61')][_0xd8aa('0x64')]=_0x205bf6['id'];return db[_0xd8aa('0x6b')][_0xd8aa('0x58')](_0x5f0700[_0xd8aa('0x61')]);}})[_0xd8aa('0x1e')](respondWithResult(_0x52ffaf,null))[_0xd8aa('0x28')](handleError(_0x52ffaf,null));};exports[_0xd8aa('0x6c')]=function(_0x1c6e62,_0x3bb8f6,_0x3b2958){var _0x3a37bf={'raw':![],'where':{}};var _0x522d5c={};var _0x262913={'count':0x0,'rows':[]};return db[_0xd8aa('0x3d')]['findOne']({'where':{'id':_0x1c6e62[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x3bb8f6,null))[_0xd8aa('0x1e')](function(_0x141043){if(_0x141043){_0x522d5c[_0xd8aa('0x41')]=_['keys'](db[_0xd8aa('0x6b')][_0xd8aa('0x3e')]);_0x522d5c['query']=_[_0xd8aa('0x43')](_0x1c6e62[_0xd8aa('0x42')]);_0x522d5c['filters']=_[_0xd8aa('0x45')](_0x522d5c[_0xd8aa('0x41')],_0x522d5c[_0xd8aa('0x42')]);_0x3a37bf[_0xd8aa('0x46')]=_[_0xd8aa('0x45')](_0x522d5c[_0xd8aa('0x41')],qs['fields'](_0x1c6e62[_0xd8aa('0x42')][_0xd8aa('0x47')]));_0x3a37bf[_0xd8aa('0x46')]=_0x3a37bf[_0xd8aa('0x46')][_0xd8aa('0x48')]?_0x3a37bf['attributes']:_0x522d5c[_0xd8aa('0x41')];if(!_0x1c6e62['query'][_0xd8aa('0x49')](_0xd8aa('0x4a'))){_0x3a37bf[_0xd8aa('0x2e')]=qs[_0xd8aa('0x2e')](_0x1c6e62['query'][_0xd8aa('0x2e')]);_0x3a37bf[_0xd8aa('0x2d')]=qs[_0xd8aa('0x2d')](_0x1c6e62[_0xd8aa('0x42')]['offset']);}_0x3a37bf[_0xd8aa('0x68')]=qs[_0xd8aa('0x4b')](_0x1c6e62[_0xd8aa('0x42')][_0xd8aa('0x4b')]);_0x3a37bf[_0xd8aa('0x4c')]=qs['filters'](_['pick'](_0x1c6e62[_0xd8aa('0x42')],_0x522d5c[_0xd8aa('0x44')]));_0x3a37bf[_0xd8aa('0x4c')][_0xd8aa('0x64')]=_0x141043['id'];if(_0x1c6e62[_0xd8aa('0x42')][_0xd8aa('0x4f')]){_0x3a37bf[_0xd8aa('0x4c')]=_['merge'](_0x3a37bf[_0xd8aa('0x4c')],{'$or':_[_0xd8aa('0x3c')](_0x3a37bf['attributes'],function(_0x5027aa){var _0x1add1f={};_0x1add1f[_0x5027aa]={'$like':'%'+_0x1c6e62['query'][_0xd8aa('0x4f')]+'%'};return _0x1add1f;})});}_0x3a37bf=_[_0xd8aa('0x4e')]({},_0x3a37bf,_0x1c6e62[_0xd8aa('0x50')]);return db[_0xd8aa('0x6b')][_0xd8aa('0x2f')]({'where':_0x3a37bf[_0xd8aa('0x4c')]})['then'](function(_0x5e6075){_0x262913['count']=_0x5e6075;if(_0x1c6e62[_0xd8aa('0x42')][_0xd8aa('0x56')]){_0x3a37bf[_0xd8aa('0x51')]=[{'all':!![]}];}return db[_0xd8aa('0x6b')]['findAll'](_0x3a37bf);})[_0xd8aa('0x1e')](function(_0x3c58fc){_0x262913['rows']=_0x3c58fc;return _0x262913;});}})[_0xd8aa('0x1e')](respondWithFilteredResult(_0x3bb8f6,_0x3a37bf))[_0xd8aa('0x28')](handleError(_0x3bb8f6,null));};exports[_0xd8aa('0x6d')]=function(_0x46b9d1,_0x149dc5,_0x3808ef){return db[_0xd8aa('0x3d')]['find']({'where':{'id':_0x46b9d1[_0xd8aa('0x55')]['id']}})['then'](handleEntityNotFound(_0x149dc5,null))[_0xd8aa('0x1e')](function(_0x214976){if(_0x214976){return _0x214976['removeAnswers'](_0x46b9d1[_0xd8aa('0x42')][_0xd8aa('0x6e')]);}})[_0xd8aa('0x1e')](respondWithStatusCode(_0x149dc5,null))[_0xd8aa('0x28')](handleError(_0x149dc5,null));};exports[_0xd8aa('0x6f')]=function(_0x1cd8aa,_0x3bce66,_0x48f833){return db[_0xd8aa('0x3d')][_0xd8aa('0x57')]({'where':{'id':_0x1cd8aa[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x3bce66,null))['then'](function(_0xdad00e){if(_0xdad00e){return _0xdad00e[_0xd8aa('0x6f')](_0x1cd8aa['body']['ids'],_['omit'](_0x1cd8aa['body'],[_0xd8aa('0x6e'),'id'])||{})[_0xd8aa('0x70')](function(_0xe8b39e){for(var _0x47954e=0x0;_0x47954e<_0x1cd8aa[_0xd8aa('0x61')]['ids'][_0xd8aa('0x48')];_0x47954e+=0x1){socket['emit']('userWhatsappAccount:save',{'UserId':Number(_0x1cd8aa['body'][_0xd8aa('0x6e')][_0x47954e]),'WhatsappAccountId':Number(_0x1cd8aa['params']['id'])});}return _0xe8b39e;});}})[_0xd8aa('0x1e')](respondWithResult(_0x3bce66,null))[_0xd8aa('0x28')](handleError(_0x3bce66,null));};exports[_0xd8aa('0x71')]=function(_0x101553,_0x161aaa,_0x4c164e){return db[_0xd8aa('0x3d')]['find']({'where':{'id':_0x101553['params']['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x161aaa,null))[_0xd8aa('0x1e')](function(_0x2b06e4){if(_0x2b06e4){return _0x2b06e4[_0xd8aa('0x71')](_0x101553['query'][_0xd8aa('0x6e')])[_0xd8aa('0x1e')](function(){if(_[_0xd8aa('0x72')](_0x101553[_0xd8aa('0x42')]['ids'])){for(var _0x161143=0x0;_0x161143<_0x101553[_0xd8aa('0x42')][_0xd8aa('0x6e')][_0xd8aa('0x48')];_0x161143+=0x1){socket[_0xd8aa('0x73')](_0xd8aa('0x74'),{'UserId':Number(_0x101553[_0xd8aa('0x42')][_0xd8aa('0x6e')][_0x161143]),'WhatsappAccountId':Number(_0x101553[_0xd8aa('0x55')]['id'])});}}else{socket['emit'](_0xd8aa('0x74'),{'UserId':Number(_0x101553['query'][_0xd8aa('0x6e')]),'WhatsappAccountId':Number(_0x101553['params']['id'])});}});}})[_0xd8aa('0x1e')](respondWithStatusCode(_0x161aaa,null))['catch'](handleError(_0x161aaa,null));};exports[_0xd8aa('0x75')]=function(_0x41baf2,_0x160df9,_0xa55a54){var _0x49649f={};var _0x4ed415={};var _0x51a4d1;var _0x3a78a8;return db[_0xd8aa('0x3d')][_0xd8aa('0x67')]({'where':{'id':_0x41baf2[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x160df9,null))[_0xd8aa('0x1e')](function(_0x24f73a){if(_0x24f73a){_0x51a4d1=_0x24f73a;_0x4ed415['model']=_['keys'](db[_0xd8aa('0x76')][_0xd8aa('0x3e')]);_0x4ed415[_0xd8aa('0x42')]=_['keys'](_0x41baf2[_0xd8aa('0x42')]);_0x4ed415[_0xd8aa('0x44')]=_[_0xd8aa('0x45')](_0x4ed415['model'],_0x4ed415[_0xd8aa('0x42')]);_0x49649f[_0xd8aa('0x46')]=_[_0xd8aa('0x45')](_0x4ed415[_0xd8aa('0x41')],qs[_0xd8aa('0x47')](_0x41baf2[_0xd8aa('0x42')][_0xd8aa('0x47')]));_0x49649f[_0xd8aa('0x46')]=_0x49649f[_0xd8aa('0x46')][_0xd8aa('0x48')]?_0x49649f[_0xd8aa('0x46')]:_0x4ed415['model'];_0x49649f['order']=qs[_0xd8aa('0x4b')](_0x41baf2[_0xd8aa('0x42')][_0xd8aa('0x4b')]);_0x49649f['where']=qs['filters'](_[_0xd8aa('0x4d')](_0x41baf2[_0xd8aa('0x42')],_0x4ed415[_0xd8aa('0x44')]));if(_0x41baf2[_0xd8aa('0x42')]['filter']){_0x49649f[_0xd8aa('0x4c')]=_[_0xd8aa('0x4e')](_0x49649f['where'],{'$or':_[_0xd8aa('0x3c')](_0x49649f[_0xd8aa('0x46')],function(_0x5efa78){var _0x40decb={};_0x40decb[_0x5efa78]={'$like':'%'+_0x41baf2[_0xd8aa('0x42')]['filter']+'%'};return _0x40decb;})});}_0x49649f=_[_0xd8aa('0x4e')]({},_0x49649f,_0x41baf2[_0xd8aa('0x50')]);return _0x51a4d1[_0xd8aa('0x75')](_0x49649f);}})[_0xd8aa('0x1e')](function(_0x14db0c){if(_0x14db0c){_0x3a78a8=_0x14db0c[_0xd8aa('0x48')];if(!_0x41baf2['query'][_0xd8aa('0x49')](_0xd8aa('0x4a'))){_0x49649f[_0xd8aa('0x2e')]=qs[_0xd8aa('0x2e')](_0x41baf2[_0xd8aa('0x42')][_0xd8aa('0x2e')]);_0x49649f[_0xd8aa('0x2d')]=qs[_0xd8aa('0x2d')](_0x41baf2['query'][_0xd8aa('0x2d')]);}return _0x51a4d1[_0xd8aa('0x75')](_0x49649f);}})[_0xd8aa('0x1e')](function(_0x118894){if(_0x118894){return _0x118894?{'count':_0x3a78a8,'rows':_0x118894}:null;}})['then'](respondWithResult(_0x160df9,null))[_0xd8aa('0x28')](handleError(_0x160df9,null));};exports['addApplications']=function(_0x4de1cc,_0x21ed12){var _0x1cae55=_0x4de1cc[_0xd8aa('0x55')]['id'];var _0x2ae20f=_0x4de1cc[_0xd8aa('0x61')];var _0x2a6f19=0xc8;var _0x1c58b3=null;return db[_0xd8aa('0x77')]['transaction']({'isolationLevel':db[_0xd8aa('0x77')][_0xd8aa('0x78')][_0xd8aa('0x79')][_0xd8aa('0x7a')]},function(_0x32998c){return db[_0xd8aa('0x3d')][_0xd8aa('0x67')]({'where':{'id':_0x1cae55},'transaction':_0x32998c})[_0xd8aa('0x1e')](function(_0x3e9bba){if(_0x3e9bba){return db[_0xd8aa('0x7b')][_0xd8aa('0x35')]({'where':{'WhatsappAccountId':_0x1cae55},'transaction':_0x32998c})[_0xd8aa('0x1e')](function(){var _0x55ad96=_[_0xd8aa('0x3c')](_0x2ae20f,function(_0x39baf6){_0x39baf6['WhatsappAccountId']=_0x1cae55;return _0x39baf6;});return db[_0xd8aa('0x7b')][_0xd8aa('0x7c')](_0x55ad96,{'transaction':_0x32998c});});}else{_0x2a6f19=0x194;_0x1c58b3=[];}});})[_0xd8aa('0x1e')](function(){if(_0x2a6f19!==0x194){return db[_0xd8aa('0x7b')][_0xd8aa('0x7d')]({'where':{'WhatsappAccountId':_0x1cae55},'order':_0xd8aa('0x7e')})[_0xd8aa('0x1e')](function(_0x572d5c){_0x1c58b3=_0x572d5c;});}})['catch'](function(_0x5d0bb9){_0x2a6f19=0x1f4;logger[_0xd8aa('0x24')](_0x5d0bb9['stack']);if(_0x5d0bb9[_0xd8aa('0x39')]){delete _0x5d0bb9[_0xd8aa('0x39')];}_0x1c58b3=_0x5d0bb9;})[_0xd8aa('0x7f')](function(){if(_0x1c58b3===null){_0x21ed12[_0xd8aa('0x29')](_0x2a6f19);}else{if(_0x2a6f19===0x1f4){_0x21ed12[_0xd8aa('0x2a')](_0x2a6f19)[_0xd8aa('0x80')](_0x1c58b3);}else{_0x21ed12['status'](_0x2a6f19)[_0xd8aa('0x2c')](_0x1c58b3);}}});};exports['getApplications']=function(_0xf7ac5,_0x216f52,_0x362392){var _0x28a284={};var _0x14f994={};var _0x4a9d3d;var _0x36bab6;return db[_0xd8aa('0x3d')][_0xd8aa('0x67')]({'where':{'id':_0xf7ac5[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x216f52,null))[_0xd8aa('0x1e')](function(_0x4adb75){if(_0x4adb75){_0x4a9d3d=_0x4adb75;_0x14f994[_0xd8aa('0x41')]=_['keys'](db[_0xd8aa('0x7b')][_0xd8aa('0x3e')]);_0x14f994[_0xd8aa('0x42')]=_[_0xd8aa('0x43')](_0xf7ac5[_0xd8aa('0x42')]);_0x14f994[_0xd8aa('0x44')]=_[_0xd8aa('0x45')](_0x14f994[_0xd8aa('0x41')],_0x14f994[_0xd8aa('0x42')]);_0x28a284[_0xd8aa('0x46')]=_['intersection'](_0x14f994[_0xd8aa('0x41')],qs['fields'](_0xf7ac5['query']['fields']));_0x28a284[_0xd8aa('0x46')]=_0x28a284['attributes'][_0xd8aa('0x48')]?_0x28a284[_0xd8aa('0x46')]:_0x14f994[_0xd8aa('0x41')];_0x28a284[_0xd8aa('0x68')]=qs[_0xd8aa('0x4b')](_0xf7ac5['query'][_0xd8aa('0x4b')]);_0x28a284[_0xd8aa('0x4c')]=qs[_0xd8aa('0x44')](_[_0xd8aa('0x4d')](_0xf7ac5[_0xd8aa('0x42')],_0x14f994[_0xd8aa('0x44')]));if(_0xf7ac5[_0xd8aa('0x42')][_0xd8aa('0x4f')]){_0x28a284[_0xd8aa('0x4c')]=_[_0xd8aa('0x4e')](_0x28a284[_0xd8aa('0x4c')],{'$or':_[_0xd8aa('0x3c')](_0x28a284[_0xd8aa('0x46')],function(_0x1bbabd){var _0xa1622b={};_0xa1622b[_0x1bbabd]={'$like':'%'+_0xf7ac5[_0xd8aa('0x42')][_0xd8aa('0x4f')]+'%'};return _0xa1622b;})});}_0x28a284=_[_0xd8aa('0x4e')]({},_0x28a284,_0xf7ac5[_0xd8aa('0x50')]);return _0x4a9d3d[_0xd8aa('0x81')](_0x28a284);}})[_0xd8aa('0x1e')](function(_0x12f314){if(_0x12f314){_0x36bab6=_0x12f314[_0xd8aa('0x48')];if(!_0xf7ac5[_0xd8aa('0x42')]['hasOwnProperty'](_0xd8aa('0x4a'))){_0x28a284['limit']=qs[_0xd8aa('0x2e')](_0xf7ac5[_0xd8aa('0x42')]['limit']);_0x28a284['offset']=qs[_0xd8aa('0x2d')](_0xf7ac5[_0xd8aa('0x42')][_0xd8aa('0x2d')]);}return _0x4a9d3d[_0xd8aa('0x81')](_0x28a284);}})['then'](function(_0x2a74c7){if(_0x2a74c7){return _0x2a74c7?{'count':_0x36bab6,'rows':_0x2a74c7}:null;}})[_0xd8aa('0x1e')](respondWithResult(_0x216f52,null))['catch'](handleError(_0x216f52,null));};exports[_0xd8aa('0x82')]=function(_0x26bf11,_0x38e91c,_0x1c58ff){var _0x4bc45f={'channel':_0xd8aa('0x83')};var _0x27ae48=[];var _0x4d216e=[];var _0x3862cc={};return db['WhatsappAccount'][_0xd8aa('0x57')]({'where':{'id':_0x26bf11[_0xd8aa('0x55')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0xd8aa('0x84')}]})[_0xd8aa('0x1e')](handleEntityNotFound(_0x38e91c,null))[_0xd8aa('0x1e')](function(_0x4afd5e){_0x4bc45f['account']=_0x4afd5e;if(_0x4bc45f[_0xd8aa('0x85')]&&_0x4bc45f[_0xd8aa('0x85')][_0xd8aa('0x86')]==='sinch'&&_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x87')]){if(_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x87')][_0xd8aa('0x48')]===0x0)return;if(_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x87')][0x0]['state']!==_0xd8aa('0x88'))return;return db[_0xd8aa('0x89')][_0xd8aa('0x34')]({'read':!![],'readAt':_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x87')][0x0][_0xd8aa('0x8a')]},{'where':{'messageId':_0x26bf11[_0xd8aa('0x61')]['statuses'][0x0][_0xd8aa('0x8b')]},'individualHooks':!![]})['then'](function(_0x5b4f3c){return _0x38e91c[_0xd8aa('0x2a')](0xc8)[_0xd8aa('0x2c')](_0x5b4f3c);});}_0x4bc45f[_0xd8aa('0x8c')]=_[_0xd8aa('0x8d')](_0x4afd5e[_0xd8aa('0x84')],[_0xd8aa('0x7e')],['asc']);if(_0x4bc45f[_0xd8aa('0x85')]['Applications']){delete _0x4bc45f[_0xd8aa('0x85')][_0xd8aa('0x84')];}return db['CmContact'][_0xd8aa('0x62')]()[_0xd8aa('0x1e')](function(_0x3e1996){if(!_0x3e1996){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))]('no\x20available\x20attributes');}_0x27ae48=_[_0xd8aa('0x90')](_[_0xd8aa('0x43')](_0x3e1996),['createdAt',_0xd8aa('0x91')]);_0x4d216e=_[_0xd8aa('0x90')](_['keys'](_0x3e1996),['createdAt',_0xd8aa('0x91'),_0xd8aa('0x92'),_0xd8aa('0x93')]);_0x4bc45f[_0xd8aa('0x61')]={'mapKey':_0xd8aa('0x94')};if(_0x4bc45f['account']&&_0x4bc45f[_0xd8aa('0x85')][_0xd8aa('0x86')]===_0xd8aa('0x95')){_0x4bc45f['body'][_0xd8aa('0x96')]=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x97')][_0xd8aa('0x98')](_0xd8aa('0x99'),'');_0x4bc45f['body'][_0xd8aa('0x61')]=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x9a')];_0x4bc45f[_0xd8aa('0x61')]['messageId']=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x9b')];}if(_0x4bc45f['account']&&_0x4bc45f['account'][_0xd8aa('0x86')]===_0xd8aa('0x9c')){_0x4bc45f[_0xd8aa('0x61')]['from']=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x9d')][0x0][_0xd8aa('0x96')];_0x4bc45f['body'][_0xd8aa('0x61')]=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x9d')][0x0][_0xd8aa('0x26')][_0xd8aa('0x61')];_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x9e')]=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x9d')][0x0]['message_id'];}if(_0x4bc45f[_0xd8aa('0x61')]['id']){delete _0x4bc45f[_0xd8aa('0x61')]['id'];}if(_['isNil'](_0x4bc45f['body'][_0xd8aa('0x96')])){throw new db['Sequelize'][(_0xd8aa('0x8f'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x61')])||_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x61')]===''){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xd8aa('0x9f')](_0x4bc45f[_0xd8aa('0x61')]['mapKey'])){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))](_0xd8aa('0xa0')+_0x4d216e);}if(!_[_0xd8aa('0xa1')](_0x4d216e,_0x4bc45f['body'][_0xd8aa('0xa2')])){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))](_0xd8aa('0xa3')+_0x4d216e);}_0x3862cc[_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0xa2')]]=_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x96')];return db[_0xd8aa('0xa4')][_0xd8aa('0x57')]({'where':{'id':_0x4bc45f[_0xd8aa('0x85')][_0xd8aa('0x93')]},'include':[{'model':db[_0xd8aa('0xa5')],'as':_0xd8aa('0xa6'),'where':_0x3862cc,'limit':0x1,'order':[[_0xd8aa('0x91'),_0xd8aa('0xa7')]]}]});})[_0xd8aa('0x1e')](handleEntityNotFound(_0x38e91c,null))[_0xd8aa('0x1e')](function(_0x1bb8c0){if(_0x1bb8c0){_0x4bc45f[_0xd8aa('0xa8')]=_['omit'](_0x1bb8c0,[_0xd8aa('0xa6')]);if(_0x1bb8c0['Contacts'][_0xd8aa('0x48')]){return _0x1bb8c0['Contacts'][0x0];}var _0x902198=_[_0xd8aa('0x18')](_0x4bc45f[_0xd8aa('0x61')],{'firstName':_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x96')],'ListId':_0x1bb8c0['id']});_0x902198[_0x4bc45f['body']['mapKey']]=_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x96')];return db[_0xd8aa('0xa5')]['create'](_0x902198,{'fields':_0x27ae48,'raw':!![]});}})['then'](handleEntityNotFound(_0x38e91c,null))[_0xd8aa('0x1e')](function(_0x52b3d5){if(_0x52b3d5){_0x4bc45f[_0xd8aa('0xa9')]=_0x52b3d5;var _0x43355f={'ContactId':_0x52b3d5['id'],'phone':_0x4bc45f['body'][_0xd8aa('0x96')],'WhatsappAccountId':_0x26bf11['params']['id']};var _0x355879={'ContactId':_0x52b3d5['id'],'WhatsappAccountId':_0x26bf11[_0xd8aa('0x55')]['id'],'closed':![]};return db[_0xd8aa('0xaa')]['find']({'where':_0x355879})[_0xd8aa('0x1e')](function(_0x51b787){if(_0x51b787){return[_0x51b787,![]];}return db[_0xd8aa('0xaa')][_0xd8aa('0x58')](_0x43355f)[_0xd8aa('0x1e')](function(_0x37645){return[_0x37645,!![]];});});}})[_0xd8aa('0x70')](function(_0x1d0748,_0x566cd4){_0x4bc45f[_0xd8aa('0xab')]=_0x1d0748[_0xd8aa('0x59')]({'plain':!![]});_0x4bc45f[_0xd8aa('0xab')][_0xd8aa('0xac')]=![];if(_0x566cd4){if(_0x4bc45f['account']['autoclose']){_0x4bc45f[_0xd8aa('0x8c')]['push']({'id':0x0,'priority':_0x4bc45f[_0xd8aa('0x8c')][_0xd8aa('0x48')]+0x1,'app':_0xd8aa('0xad'),'appdata':_0xd8aa('0xae'),'interval':_0xd8aa('0xaf')});}_0x4bc45f[_0xd8aa('0xab')][_0xd8aa('0xac')]=!![];}return db[_0xd8aa('0x89')][_0xd8aa('0x58')]({'phone':_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x96')],'messageId':_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x9e')],'body':_0x4bc45f[_0xd8aa('0x61')]['body'],'WhatsappAccountId':_0x26bf11[_0xd8aa('0x55')]['id'],'WhatsappInteractionId':_0x1d0748['id'],'direction':'in','ContactId':_0x1d0748[_0xd8aa('0xb0')],'AttachmentId':_0x4bc45f['body']['AttachmentId']});})[_0xd8aa('0x1e')](function(_0x3a9332){_0x4bc45f[_0xd8aa('0x26')]=_0x3a9332;if(!_0x4bc45f[_0xd8aa('0xab')][_0xd8aa('0xb1')])return;return db['User'][_0xd8aa('0x57')]({'attributes':['id',_0xd8aa('0x39')],'where':{'id':_0x4bc45f['interaction'][_0xd8aa('0xb1')]}});})[_0xd8aa('0x1e')](function(_0x5d9f0e){if(_0x5d9f0e){_0x4bc45f[_0xd8aa('0x8c')][_0xd8aa('0xb2')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x5d9f0e[_0xd8aa('0x39')]+','+(_0x4bc45f[_0xd8aa('0x85')]['waitForTheAssignedAgent']||0xa),'interval':_0xd8aa('0xaf')});}if(!_0x4bc45f['interaction'][_0xd8aa('0xb3')])return;return db[_0xd8aa('0xb4')]['find']({'attributes':['id',_0xd8aa('0x39')],'where':{'id':_0x4bc45f[_0xd8aa('0xab')][_0xd8aa('0xb3')]}});})[_0xd8aa('0x1e')](function(_0x4f728a){if(_0x4f728a){_0x4bc45f['applications'][_0xd8aa('0xb2')]({'id':0x0,'priority':0x1,'app':_0xd8aa('0xb5'),'appdata':_0x4f728a[_0xd8aa('0x39')]+','+(_0x4bc45f[_0xd8aa('0x85')][_0xd8aa('0xb6')]||0x12c),'interval':_0xd8aa('0xaf')});}return respondWithRpcPromise('Start',_0xd8aa('0xb7'),_0x4bc45f);})[_0xd8aa('0x1e')](function(_0x42ff3c){if(_0x42ff3c){var _0x1141c1=0xc8;var _0x29d3c8=_0xd8aa('0xb8');logger['info'](_0xd8aa('0x22'),_0x29d3c8,_0x1141c1,'entity\x20found');logger[_0xd8aa('0xb9')](_0xd8aa('0xba'),_0x29d3c8,_0x1141c1,_0xd8aa('0xbb'),JSON[_0xd8aa('0x23')](_0x42ff3c));if(_0x4bc45f['account'][_0xd8aa('0x86')]===_0xd8aa('0x95')){return _0x38e91c['status'](_0x1141c1)[_0xd8aa('0x30')]('Content-Type',_0xd8aa('0xbc'))['send'](_0xd8aa('0xbd'));}else{return _0x38e91c[_0xd8aa('0x2a')](_0x1141c1)['json'](_0x42ff3c);}}});})[_0xd8aa('0x28')](handleError(_0x38e91c,null));};exports['send']=function(_0x139d6a,_0x3bc36e,_0xab4f4a){var _0x887d64,_0x25a35a,_0x1bda6a;if(_[_0xd8aa('0x9f')](_0x139d6a[_0xd8aa('0x61')][_0xd8aa('0x61')])||_0x139d6a[_0xd8aa('0x61')][_0xd8aa('0x61')]===''){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))](_0xd8aa('0xbe'));}if(_[_0xd8aa('0x9f')](_0x139d6a[_0xd8aa('0x61')]['to'])){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))](_0xd8aa('0xbf'));}_0x887d64=_0x139d6a['body']['to'];return db[_0xd8aa('0x3d')][_0xd8aa('0x57')]({'where':{'id':_0x139d6a[_0xd8aa('0x55')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xd8aa('0xa5')],'as':_0xd8aa('0xa6'),'where':{'mobile':_0x887d64},'limit':0x1,'order':[['updatedAt',_0xd8aa('0xa7')]]}]}]})['then'](handleEntityNotFound(_0x3bc36e,null))[_0xd8aa('0x1e')](function(_0x51ebb0){if(_0x51ebb0&&_0x51ebb0['List']){_0x25a35a=_0x51ebb0[_0xd8aa('0x59')]({'plain':!![]});if(_0x25a35a['List']&&_0x25a35a['List'][_0xd8aa('0xa6')][_0xd8aa('0x48')]){return _0x25a35a[_0xd8aa('0xc0')][_0xd8aa('0xa6')][0x0];}return db['CmContact'][_0xd8aa('0x58')](_[_0xd8aa('0x18')](_0x139d6a[_0xd8aa('0x61')],{'firstName':_0x887d64,'mobile':_0x887d64,'phone':_0x887d64,'ListId':_0x25a35a[_0xd8aa('0x93')]}));}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x3bc36e,null))[_0xd8aa('0x1e')](function(_0x284db7){if(_0x284db7){_0x1bda6a=_0x284db7;return db[_0xd8aa('0xaa')][_0xd8aa('0x57')]({'where':{'ContactId':_0x1bda6a['id'],'closed':![],'WhatsappAccountId':_0x25a35a['id']}})['then'](function(_0x42aaff){if(_0x42aaff){return[_0x42aaff,![]];}return db[_0xd8aa('0xaa')][_0xd8aa('0x58')]({'UserId':_0x139d6a[_0xd8aa('0x5c')]['id'],'ContactId':_0x1bda6a['id'],'WhatsappAccountId':_0x25a35a['id'],'phone':_0x887d64,'firstMsgDirection':'out','Messages':[_[_0xd8aa('0x4e')](_0x139d6a[_0xd8aa('0x61')],{'read':![],'body':_0x139d6a[_0xd8aa('0x61')][_0xd8aa('0x61')],'phone':_0x887d64,'WhatsappAccountId':_0x25a35a['id'],'UserId':_0x139d6a['user']['id'],'ContactId':_0x1bda6a['id']})]},{'include':[{'model':db[_0xd8aa('0x89')],'as':'Messages'}]})[_0xd8aa('0x1e')](function(_0x508571){return[_0x508571,!![]];});});}})[_0xd8aa('0x70')](function(_0x2d4aa0,_0x438b92){if(_0x438b92){return _0x2d4aa0;}return db[_0xd8aa('0x89')][_0xd8aa('0x58')](_[_0xd8aa('0x4e')](_0x139d6a[_0xd8aa('0x61')],{'read':![],'body':_0x139d6a[_0xd8aa('0x61')][_0xd8aa('0x61')],'phone':_0x887d64,'WhatsappAccountId':_0x25a35a['id'],'WhatsappInteractionId':_0x2d4aa0['id'],'UserId':_0x139d6a['user']['id'],'ContactId':_0x1bda6a['id']}))['then'](function(_0x54a72c){_0x2d4aa0[_0xd8aa('0xc1')][_0xd8aa('0xc2')]=[];_0x2d4aa0[_0xd8aa('0xc1')][_0xd8aa('0xc2')][_0xd8aa('0xc3')](_0x54a72c[_0xd8aa('0xc1')]);return _0x2d4aa0;});})[_0xd8aa('0x1e')](respondWithResult(_0x3bc36e,null))[_0xd8aa('0x28')](handleError(_0x3bc36e,null));};
\ No newline at end of file
index 64a55fb..65efb94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15e2=['hasOwnProperty','hook','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove'];(function(_0x525308,_0x5898c9){var _0x5a6e40=function(_0x113c37){while(--_0x113c37){_0x525308['push'](_0x525308['shift']());}};_0x5a6e40(++_0x5898c9);}(_0x15e2,0xa2));var _0x215e=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0x15e2[_0x710815];return _0x5b3b89;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0x215e('0x0'))['db'][_0x215e('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x215e('0x2')](0x0);var events={'afterCreate':_0x215e('0x3'),'afterUpdate':_0x215e('0x4'),'afterDestroy':_0x215e('0x5')};function emitEvent(_0x45c1de){return function(_0x29f9fd,_0x17c4f2,_0x2138f5){WhatsappAccountEvents['emit'](_0x45c1de+':'+_0x29f9fd['id'],_0x29f9fd);WhatsappAccountEvents['emit'](_0x45c1de,_0x29f9fd);_0x2138f5(null);};}for(var e in events){if(events[_0x215e('0x6')](e)){var event=events[e];WhatsappAccount[_0x215e('0x7')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0x6d61=['hasOwnProperty','hook','events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove','emit'];(function(_0x2ec02f,_0x3aacf6){var _0x5dac31=function(_0xbc3a42){while(--_0xbc3a42){_0x2ec02f['push'](_0x2ec02f['shift']());}};_0x5dac31(++_0x3aacf6);}(_0x6d61,0x160));var _0x16d6=function(_0x45b1ba,_0x5a6a21){_0x45b1ba=_0x45b1ba-0x0;var _0x145ddb=_0x6d61[_0x45b1ba];return _0x145ddb;};'use strict';var EventEmitter=require(_0x16d6('0x0'));var WhatsappAccount=require(_0x16d6('0x1'))['db'][_0x16d6('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x16d6('0x3')](0x0);var events={'afterCreate':_0x16d6('0x4'),'afterUpdate':_0x16d6('0x5'),'afterDestroy':_0x16d6('0x6')};function emitEvent(_0x3ffa00){return function(_0x55c614,_0x2cf0fe,_0x4da292){WhatsappAccountEvents[_0x16d6('0x7')](_0x3ffa00+':'+_0x55c614['id'],_0x55c614);WhatsappAccountEvents['emit'](_0x3ffa00,_0x55c614);_0x4da292(null);};}for(var e in events){if(events[_0x16d6('0x8')](e)){var event=events[e];WhatsappAccount[_0x16d6('0x9')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index 6d06ddc..58344dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c18=['path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','whatsapp_accounts','api','moment','bluebird','request-promise'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x4c18,0x146));var _0x84c1=function(_0x51f405,_0x1dfde2){_0x51f405=_0x51f405-0x0;var _0x21a247=_0x4c18[_0x51f405];return _0x21a247;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x84c1('0x0'));var moment=require(_0x84c1('0x1'));var BPromise=require(_0x84c1('0x2'));var rp=require(_0x84c1('0x3'));var fs=require('fs');var path=require(_0x84c1('0x4'));var rimraf=require(_0x84c1('0x5'));var config=require(_0x84c1('0x6'));var attributes=require(_0x84c1('0x7'));module[_0x84c1('0x8')]=function(_0x147e90,_0x198b29){return _0x147e90[_0x84c1('0x9')]('WhatsappAccount',attributes,{'tableName':_0x84c1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x074d=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','WhatsappAccount','lodash','../../config/logger'];(function(_0x15ab05,_0x2acb8f){var _0x5231fb=function(_0x67f0f7){while(--_0x67f0f7){_0x15ab05['push'](_0x15ab05['shift']());}};_0x5231fb(++_0x2acb8f);}(_0x074d,0xd6));var _0xd074=function(_0xa184f,_0x33d0c9){_0xa184f=_0xa184f-0x0;var _0x466167=_0x074d[_0xa184f];return _0x466167;};'use strict';var _=require(_0xd074('0x0'));var util=require('util');var logger=require(_0xd074('0x1'))(_0xd074('0x2'));var moment=require(_0xd074('0x3'));var BPromise=require(_0xd074('0x4'));var rp=require(_0xd074('0x5'));var fs=require('fs');var path=require(_0xd074('0x6'));var rimraf=require(_0xd074('0x7'));var config=require(_0xd074('0x8'));var attributes=require(_0xd074('0x9'));module[_0xd074('0xa')]=function(_0x7d7a60,_0x3b9c44){return _0x7d7a60['define'](_0xd074('0xb'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 38ab6c4..51033d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc90c=['attributes','include','map','model','lodash','util','moment','bluebird','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','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','find','options','raw','where'];(function(_0x142a3a,_0x1a38de){var _0x162388=function(_0x9c7868){while(--_0x9c7868){_0x142a3a['push'](_0x142a3a['shift']());}};_0x162388(++_0x1a38de);}(_0xc90c,0x1a6));var _0xcc90=function(_0x48fc87,_0x86d924){_0x48fc87=_0x48fc87-0x0;var _0x3f873e=_0xc90c[_0x48fc87];return _0x3f873e;};'use strict';var _=require(_0xcc90('0x0'));var util=require(_0xcc90('0x1'));var moment=require(_0xcc90('0x2'));var BPromise=require(_0xcc90('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(_0xcc90('0x4'))(_0xcc90('0x5'));var config=require(_0xcc90('0x6'));var jayson=require(_0xcc90('0x7'));var client=jayson[_0xcc90('0x8')][_0xcc90('0x9')]({'port':0x232a});config[_0xcc90('0xa')]=_[_0xcc90('0xb')](config[_0xcc90('0xa')],{'host':_0xcc90('0xc'),'port':0x18eb});var socket=require(_0xcc90('0xd'))(new Redis(config[_0xcc90('0xa')]));require(_0xcc90('0xe'))['register'](socket);function respondWithRpcPromise(_0x4122d1,_0x1b07af,_0x2f8cbd){return new BPromise(function(_0x2e8116,_0x11a559){return client[_0xcc90('0xf')](_0x4122d1,_0x2f8cbd)[_0xcc90('0x10')](function(_0x27e717){logger[_0xcc90('0x11')](_0xcc90('0x12'),_0x1b07af,_0xcc90('0x13'));logger[_0xcc90('0x14')](_0xcc90('0x15'),_0x1b07af,_0xcc90('0x13'),JSON[_0xcc90('0x16')](_0x27e717));if(_0x27e717[_0xcc90('0x17')]){if(_0x27e717['error'][_0xcc90('0x18')]===0x1f4){logger['error'](_0xcc90('0x12'),_0x1b07af,_0x27e717[_0xcc90('0x17')]['message']);return _0x11a559(_0x27e717[_0xcc90('0x17')]['message']);}logger[_0xcc90('0x17')](_0xcc90('0x12'),_0x1b07af,_0x27e717['error']['message']);return _0x2e8116(_0x27e717[_0xcc90('0x17')][_0xcc90('0x19')]);}else{logger['info'](_0xcc90('0x12'),_0x1b07af,_0xcc90('0x13'));_0x2e8116(_0x27e717[_0xcc90('0x1a')]['message']);}})[_0xcc90('0x1b')](function(_0x3c6853){logger[_0xcc90('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x1b07af,_0x3c6853);_0x11a559(_0x3c6853);});});}exports[_0xcc90('0x1c')]=function(_0x35c24e){var _0x43661c=this;return new Promise(function(_0x3180e9,_0x1510d0){return db[_0xcc90('0x1d')][_0xcc90('0x1e')]({'raw':_0x35c24e[_0xcc90('0x1f')]?_0x35c24e[_0xcc90('0x1f')][_0xcc90('0x20')]===undefined?!![]:![]:!![],'where':_0x35c24e[_0xcc90('0x1f')]?_0x35c24e[_0xcc90('0x1f')][_0xcc90('0x21')]||null:null,'attributes':_0x35c24e[_0xcc90('0x1f')]?_0x35c24e['options'][_0xcc90('0x22')]||null:null,'include':_0x35c24e[_0xcc90('0x1f')]?_0x35c24e[_0xcc90('0x1f')][_0xcc90('0x23')]?_[_0xcc90('0x24')](_0x35c24e[_0xcc90('0x1f')]['include'],function(_0x592956){return{'model':db[_0x592956[_0xcc90('0x25')]],'as':_0x592956['as'],'attributes':_0x592956['attributes'],'include':_0x592956[_0xcc90('0x23')]?_['map'](_0x592956[_0xcc90('0x23')],function(_0x49bdcc){return{'model':db[_0x49bdcc['model']],'as':_0x49bdcc['as'],'attributes':_0x49bdcc[_0xcc90('0x22')],'include':_0x49bdcc[_0xcc90('0x23')]?_[_0xcc90('0x24')](_0x49bdcc[_0xcc90('0x23')],function(_0x145c88){return{'model':db[_0x145c88['model']],'as':_0x145c88['as'],'attributes':_0x145c88[_0xcc90('0x22')]};}):[]};}):[]};}):[]:[]})[_0xcc90('0x10')](function(_0x2cc917){logger[_0xcc90('0x11')](_0xcc90('0x1c'),_0x35c24e);logger['debug'](_0xcc90('0x1c'),_0x35c24e,JSON[_0xcc90('0x16')](_0x2cc917));_0x3180e9(_0x2cc917);})['catch'](function(_0x2e297c){logger['error'](_0xcc90('0x1c'),_0x2e297c[_0xcc90('0x19')],_0x35c24e);_0x1510d0(_0x43661c[_0xcc90('0x17')](0x1f4,_0x2e297c[_0xcc90('0x19')]));});});};
\ No newline at end of file
+var _0xb3b7=['http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','include','map','model','attributes','debug','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x15d23b,_0x24bfb2){var _0x52e4fe=function(_0x52efe5){while(--_0x52efe5){_0x15d23b['push'](_0x15d23b['shift']());}};_0x52e4fe(++_0x24bfb2);}(_0xb3b7,0x6c));var _0x7b3b=function(_0x5b0dbb,_0x2ac87f){_0x5b0dbb=_0x5b0dbb-0x0;var _0xd0901=_0xb3b7[_0x5b0dbb];return _0xd0901;};'use strict';var _=require('lodash');var util=require(_0x7b3b('0x0'));var moment=require(_0x7b3b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7b3b('0x2'));var db=require(_0x7b3b('0x3'))['db'];var utils=require(_0x7b3b('0x4'));var logger=require(_0x7b3b('0x5'))(_0x7b3b('0x6'));var config=require('../../config/environment');var jayson=require(_0x7b3b('0x7'));var client=jayson[_0x7b3b('0x8')][_0x7b3b('0x9')]({'port':0x232a});config[_0x7b3b('0xa')]=_[_0x7b3b('0xb')](config[_0x7b3b('0xa')],{'host':_0x7b3b('0xc'),'port':0x18eb});var socket=require(_0x7b3b('0xd'))(new Redis(config[_0x7b3b('0xa')]));require(_0x7b3b('0xe'))[_0x7b3b('0xf')](socket);function respondWithRpcPromise(_0x3e077f,_0x701fce,_0x479951){return new BPromise(function(_0x482c72,_0xc89e70){return client[_0x7b3b('0x10')](_0x3e077f,_0x479951)[_0x7b3b('0x11')](function(_0x54b447){logger[_0x7b3b('0x12')](_0x7b3b('0x13'),_0x701fce,_0x7b3b('0x14'));logger['debug'](_0x7b3b('0x15'),_0x701fce,'request\x20sent',JSON[_0x7b3b('0x16')](_0x54b447));if(_0x54b447[_0x7b3b('0x17')]){if(_0x54b447[_0x7b3b('0x17')][_0x7b3b('0x18')]===0x1f4){logger[_0x7b3b('0x17')](_0x7b3b('0x13'),_0x701fce,_0x54b447[_0x7b3b('0x17')][_0x7b3b('0x19')]);return _0xc89e70(_0x54b447[_0x7b3b('0x17')]['message']);}logger['error'](_0x7b3b('0x13'),_0x701fce,_0x54b447['error'][_0x7b3b('0x19')]);return _0x482c72(_0x54b447[_0x7b3b('0x17')][_0x7b3b('0x19')]);}else{logger[_0x7b3b('0x12')](_0x7b3b('0x13'),_0x701fce,'request\x20sent');_0x482c72(_0x54b447[_0x7b3b('0x1a')]['message']);}})[_0x7b3b('0x1b')](function(_0x10c82b){logger[_0x7b3b('0x17')](_0x7b3b('0x13'),_0x701fce,_0x10c82b);_0xc89e70(_0x10c82b);});});}exports[_0x7b3b('0x1c')]=function(_0x391348){var _0x468f11=this;return new Promise(function(_0x402008,_0x574e78){return db[_0x7b3b('0x1d')][_0x7b3b('0x1e')]({'raw':_0x391348[_0x7b3b('0x1f')]?_0x391348[_0x7b3b('0x1f')][_0x7b3b('0x20')]===undefined?!![]:![]:!![],'where':_0x391348[_0x7b3b('0x1f')]?_0x391348[_0x7b3b('0x1f')][_0x7b3b('0x21')]||null:null,'attributes':_0x391348[_0x7b3b('0x1f')]?_0x391348[_0x7b3b('0x1f')]['attributes']||null:null,'include':_0x391348['options']?_0x391348[_0x7b3b('0x1f')][_0x7b3b('0x22')]?_[_0x7b3b('0x23')](_0x391348[_0x7b3b('0x1f')]['include'],function(_0x4ac096){return{'model':db[_0x4ac096[_0x7b3b('0x24')]],'as':_0x4ac096['as'],'attributes':_0x4ac096[_0x7b3b('0x25')],'include':_0x4ac096['include']?_[_0x7b3b('0x23')](_0x4ac096['include'],function(_0x2c2431){return{'model':db[_0x2c2431[_0x7b3b('0x24')]],'as':_0x2c2431['as'],'attributes':_0x2c2431[_0x7b3b('0x25')],'include':_0x2c2431[_0x7b3b('0x22')]?_[_0x7b3b('0x23')](_0x2c2431[_0x7b3b('0x22')],function(_0x5580e5){return{'model':db[_0x5580e5['model']],'as':_0x5580e5['as'],'attributes':_0x5580e5[_0x7b3b('0x25')]};}):[]};}):[]};}):[]:[]})[_0x7b3b('0x11')](function(_0x476e3f){logger[_0x7b3b('0x12')](_0x7b3b('0x1c'),_0x391348);logger[_0x7b3b('0x26')](_0x7b3b('0x1c'),_0x391348,JSON[_0x7b3b('0x16')](_0x476e3f));_0x402008(_0x476e3f);})[_0x7b3b('0x1b')](function(_0x46bdf6){logger[_0x7b3b('0x17')](_0x7b3b('0x1c'),_0x46bdf6[_0x7b3b('0x19')],_0x391348);_0x574e78(_0x468f11['error'](0x1f4,_0x46bdf6[_0x7b3b('0x19')]));});});};
\ No newline at end of file
index 781d986..67ebdd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26f8=['removeListener','length','whatsappAccount:','./whatsappAccount.events','save','remove','update','emit'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x26f8,0x7b));var _0x826f=function(_0x46f62c,_0x49eb41){_0x46f62c=_0x46f62c-0x0;var _0x46d994=_0x26f8[_0x46f62c];return _0x46d994;};'use strict';var WhatsappAccountEvents=require(_0x826f('0x0'));var events=[_0x826f('0x1'),_0x826f('0x2'),_0x826f('0x3')];function createListener(_0x1e7785,_0x218c31){return function(_0x2dcc81){_0x218c31[_0x826f('0x4')](_0x1e7785,_0x2dcc81);};}function removeListener(_0x21bc21,_0x38b63a){return function(){WhatsappAccountEvents[_0x826f('0x5')](_0x21bc21,_0x38b63a);};}exports['register']=function(_0x12a02a){for(var _0x5bdf87=0x0,_0x5cc0a3=events[_0x826f('0x6')];_0x5bdf87<_0x5cc0a3;_0x5bdf87++){var _0x36b7f9=events[_0x5bdf87];var _0x4e8d15=createListener(_0x826f('0x7')+_0x36b7f9,_0x12a02a);WhatsappAccountEvents['on'](_0x36b7f9,_0x4e8d15);}};
\ No newline at end of file
+var _0xc0aa=['removeListener','register','length','whatsappAccount:','./whatsappAccount.events','save','remove','update'];(function(_0x438912,_0x3f7f74){var _0x18112f=function(_0x1b8ac9){while(--_0x1b8ac9){_0x438912['push'](_0x438912['shift']());}};_0x18112f(++_0x3f7f74);}(_0xc0aa,0x64));var _0xac0a=function(_0x5a6681,_0x554a87){_0x5a6681=_0x5a6681-0x0;var _0x20abae=_0xc0aa[_0x5a6681];return _0x20abae;};'use strict';var WhatsappAccountEvents=require(_0xac0a('0x0'));var events=[_0xac0a('0x1'),_0xac0a('0x2'),_0xac0a('0x3')];function createListener(_0x19f5f6,_0x3bb217){return function(_0x3f960f){_0x3bb217['emit'](_0x19f5f6,_0x3f960f);};}function removeListener(_0x4de31a,_0x36dc47){return function(){WhatsappAccountEvents[_0xac0a('0x4')](_0x4de31a,_0x36dc47);};}exports[_0xac0a('0x5')]=function(_0x344600){for(var _0x54b72f=0x0,_0x53d877=events[_0xac0a('0x6')];_0x54b72f<_0x53d877;_0x54b72f++){var _0x469929=events[_0x54b72f];var _0x2fa0cc=createListener(_0xac0a('0x7')+_0x469929,_0x344600);WhatsappAccountEvents['on'](_0x469929,_0x2fa0cc);}};
\ No newline at end of file
index 14d2e3d..5a69342 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0103=['get','/:id','post','isAuthenticated','put','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','index'];(function(_0x439dea,_0x18f457){var _0x1e1192=function(_0x1ed100){while(--_0x1ed100){_0x439dea['push'](_0x439dea['shift']());}};_0x1e1192(++_0x18f457);}(_0x0103,0xb1));var _0x3010=function(_0x215e65,_0x183f97){_0x215e65=_0x215e65-0x0;var _0xa85842=_0x0103[_0x215e65];return _0xa85842;};'use strict';var multer=require('multer');var util=require(_0x3010('0x0'));var path=require(_0x3010('0x1'));var timeout=require(_0x3010('0x2'));var express=require(_0x3010('0x3'));var router=express[_0x3010('0x4')]();var fs_extra=require(_0x3010('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3010('0x6'));var config=require(_0x3010('0x7'));var controller=require(_0x3010('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x3010('0x9')]);router[_0x3010('0xa')](_0x3010('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x3010('0xc')]('/',auth[_0x3010('0xd')](),controller['create']);router[_0x3010('0xe')](_0x3010('0xb'),auth[_0x3010('0xd')](),controller['update']);router[_0x3010('0xf')](_0x3010('0xb'),auth[_0x3010('0xd')](),controller['destroy']);module[_0x3010('0x10')]=router;
\ No newline at end of file
+var _0xc445=['isAuthenticated','index','/:id','show','create','put','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./whatsappApplication.controller','get'];(function(_0x1b828b,_0x344400){var _0x98da1a=function(_0x1a0f5b){while(--_0x1a0f5b){_0x1b828b['push'](_0x1b828b['shift']());}};_0x98da1a(++_0x344400);}(_0xc445,0x117));var _0x5c44=function(_0x390a19,_0x5dd137){_0x390a19=_0x390a19-0x0;var _0x5d8230=_0xc445[_0x390a19];return _0x5d8230;};'use strict';var multer=require(_0x5c44('0x0'));var util=require(_0x5c44('0x1'));var path=require(_0x5c44('0x2'));var timeout=require('connect-timeout');var express=require(_0x5c44('0x3'));var router=express['Router']();var fs_extra=require(_0x5c44('0x4'));var auth=require(_0x5c44('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5c44('0x6'));var controller=require(_0x5c44('0x7'));router[_0x5c44('0x8')]('/',auth[_0x5c44('0x9')](),controller[_0x5c44('0xa')]);router[_0x5c44('0x8')](_0x5c44('0xb'),auth[_0x5c44('0x9')](),controller[_0x5c44('0xc')]);router['post']('/',auth[_0x5c44('0x9')](),controller[_0x5c44('0xd')]);router[_0x5c44('0xe')](_0x5c44('0xb'),auth[_0x5c44('0x9')](),controller['update']);router[_0x5c44('0xf')](_0x5c44('0xb'),auth[_0x5c44('0x9')](),controller[_0x5c44('0x10')]);module[_0x5c44('0x11')]=router;
\ No newline at end of file
index bfb45c1..bdf5684 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x315b=['STRING','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x28d990,_0xada35d){var _0x19180b=function(_0x153a81){while(--_0x153a81){_0x28d990['push'](_0x28d990['shift']());}};_0x19180b(++_0xada35d);}(_0x315b,0x14d));var _0xb315=function(_0x164be4,_0x38600b){_0x164be4=_0x164be4-0x0;var _0x51e0a4=_0x315b[_0x164be4];return _0x51e0a4;};'use strict';var Sequelize=require(_0xb315('0x0'));module[_0xb315('0x1')]={'priority':{'type':Sequelize[_0xb315('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xb315('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xb315('0x4')]()},'description':{'type':Sequelize[_0xb315('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xb315('0x5')}};
\ No newline at end of file
+var _0x8959=['noop','TEXT','exports','INTEGER'];(function(_0x37064f,_0x1d70e0){var _0x276426=function(_0x131752){while(--_0x131752){_0x37064f['push'](_0x37064f['shift']());}};_0x276426(++_0x1d70e0);}(_0x8959,0x196));var _0x9895=function(_0x4667b2,_0x135b67){_0x4667b2=_0x4667b2-0x0;var _0x1070f2=_0x8959[_0x4667b2];return _0x1070f2;};'use strict';var Sequelize=require('sequelize');module[_0x9895('0x0')]={'priority':{'type':Sequelize[_0x9895('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9895('0x2')},'appdata':{'type':Sequelize[_0x9895('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index a396256..d643cdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8814=['name','send','index','WhatsappApplication','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','count','includeAll','catch','show','params','keys','options','find','create','body','eml-format','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','limit','undefined','json','apply','reject','save','destroy','then','sendStatus','stack'];(function(_0x2335a5,_0x3b2daa){var _0x335ed2=function(_0x2b2c1e){while(--_0x2b2c1e){_0x2335a5['push'](_0x2335a5['shift']());}};_0x335ed2(++_0x3b2daa);}(_0x8814,0x1b8));var _0x4881=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0x8814[_0x1b2ff7];return _0x31656a;};'use strict';var emlformat=require(_0x4881('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4881('0x1'));var rp=require('request-promise');var moment=require(_0x4881('0x2'));var BPromise=require(_0x4881('0x3'));var Mustache=require(_0x4881('0x4'));var util=require(_0x4881('0x5'));var path=require('path');var sox=require(_0x4881('0x6'));var csv=require(_0x4881('0x7'));var ejs=require(_0x4881('0x8'));var fs=require('fs');var fs_extra=require(_0x4881('0x9'));var _=require('lodash');var squel=require(_0x4881('0xa'));var crypto=require('crypto');var jsforce=require(_0x4881('0xb'));var deskjs=require(_0x4881('0xc'));var toCsv=require(_0x4881('0x7'));var querystring=require(_0x4881('0xd'));var Papa=require('papaparse');var Redis=require(_0x4881('0xe'));var authService=require(_0x4881('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x4881('0x10'));var hardwareService=require(_0x4881('0x11'));var logger=require(_0x4881('0x12'))(_0x4881('0x13'));var utils=require(_0x4881('0x14'));var config=require(_0x4881('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4881('0x16'))['db'];function respondWithStatusCode(_0x1aa300,_0x42454b){_0x42454b=_0x42454b||0xcc;return function(_0x2794fe){if(_0x2794fe){return _0x1aa300['sendStatus'](_0x42454b);}return _0x1aa300[_0x4881('0x17')](_0x42454b)[_0x4881('0x18')]();};}function respondWithResult(_0x20357a,_0x44b25b){_0x44b25b=_0x44b25b||0xc8;return function(_0x1b409f){if(_0x1b409f){return _0x20357a[_0x4881('0x17')](_0x44b25b)['json'](_0x1b409f);}};}function respondWithFilteredResult(_0x4bdffa,_0x527762){return function(_0x5ad538){if(_0x5ad538){var _0x22df92=typeof _0x527762[_0x4881('0x19')]==='undefined'&&typeof _0x527762[_0x4881('0x1a')]===_0x4881('0x1b');var _0x3e1b6c=_0x5ad538['count'];var _0x4f7f4e=_0x22df92?0x0:_0x527762['offset'];var _0x333305=_0x22df92?_0x5ad538['count']:_0x527762[_0x4881('0x19')]+_0x527762[_0x4881('0x1a')];var _0x513bd1;if(_0x333305>=_0x3e1b6c){_0x333305=_0x3e1b6c;_0x513bd1=0xc8;}else{_0x513bd1=0xce;}_0x4bdffa['status'](_0x513bd1);return _0x4bdffa['set']('Content-Range',_0x4f7f4e+'-'+_0x333305+'/'+_0x3e1b6c)[_0x4881('0x1c')](_0x5ad538);}return null;};}function patchUpdates(_0x543c5e){return function(_0x4dc126){try{jsonpatch[_0x4881('0x1d')](_0x4dc126,_0x543c5e,!![]);}catch(_0x20bc72){return BPromise[_0x4881('0x1e')](_0x20bc72);}return _0x4dc126[_0x4881('0x1f')]();};}function saveUpdates(_0x347b35,_0x33b74a){return function(_0x5a514d){if(_0x5a514d){return _0x5a514d['update'](_0x347b35)['then'](function(_0x15aebc){return _0x15aebc;});}return null;};}function removeEntity(_0x2727c4,_0xb965c9){return function(_0x470df9){if(_0x470df9){return _0x470df9[_0x4881('0x20')]()[_0x4881('0x21')](function(){_0x2727c4['status'](0xcc)[_0x4881('0x18')]();});}};}function handleEntityNotFound(_0x383c70,_0x588578){return function(_0x221836){if(!_0x221836){_0x383c70[_0x4881('0x22')](0x194);}return _0x221836;};}function handleError(_0x2ca33e,_0x1cc477){_0x1cc477=_0x1cc477||0x1f4;return function(_0x1d3a30){logger['error'](_0x1d3a30[_0x4881('0x23')]);if(_0x1d3a30[_0x4881('0x24')]){delete _0x1d3a30[_0x4881('0x24')];}_0x2ca33e['status'](_0x1cc477)[_0x4881('0x25')](_0x1d3a30);};}exports[_0x4881('0x26')]=function(_0x5bcb74,_0x273995){var _0x1e61a={},_0x3096d1={},_0xe66a47={'count':0x0,'rows':[]};var _0x3889e8=_['map'](db[_0x4881('0x27')][_0x4881('0x28')],function(_0x373c7e){return{'name':_0x373c7e[_0x4881('0x29')],'type':_0x373c7e[_0x4881('0x2a')][_0x4881('0x2b')]};});_0x3096d1[_0x4881('0x2c')]=_[_0x4881('0x2d')](_0x3889e8,_0x4881('0x24'));_0x3096d1['query']=_['keys'](_0x5bcb74[_0x4881('0x2e')]);_0x3096d1[_0x4881('0x2f')]=_['intersection'](_0x3096d1[_0x4881('0x2c')],_0x3096d1[_0x4881('0x2e')]);_0x1e61a['attributes']=_[_0x4881('0x30')](_0x3096d1[_0x4881('0x2c')],qs[_0x4881('0x31')](_0x5bcb74['query']['fields']));_0x1e61a[_0x4881('0x32')]=_0x1e61a[_0x4881('0x32')][_0x4881('0x33')]?_0x1e61a['attributes']:_0x3096d1[_0x4881('0x2c')];if(!_0x5bcb74[_0x4881('0x2e')][_0x4881('0x34')]('nolimit')){_0x1e61a[_0x4881('0x1a')]=qs[_0x4881('0x1a')](_0x5bcb74[_0x4881('0x2e')][_0x4881('0x1a')]);_0x1e61a[_0x4881('0x19')]=qs['offset'](_0x5bcb74[_0x4881('0x2e')][_0x4881('0x19')]);}_0x1e61a['order']=qs[_0x4881('0x35')](_0x5bcb74[_0x4881('0x2e')][_0x4881('0x35')]);_0x1e61a[_0x4881('0x36')]=qs[_0x4881('0x2f')](_['pick'](_0x5bcb74[_0x4881('0x2e')],_0x3096d1[_0x4881('0x2f')]),_0x3889e8);if(_0x5bcb74['query'][_0x4881('0x37')]){_0x1e61a[_0x4881('0x36')]=_[_0x4881('0x38')](_0x1e61a['where'],{'$or':_[_0x4881('0x2d')](_0x3889e8,function(_0x24c61c){if(_0x24c61c[_0x4881('0x2a')]!==_0x4881('0x39')){var _0x2a84fd={};_0x2a84fd[_0x24c61c['name']]={'$like':'%'+_0x5bcb74[_0x4881('0x2e')][_0x4881('0x37')]+'%'};return _0x2a84fd;}})});}_0x1e61a=_['merge']({},_0x1e61a,_0x5bcb74['options']);var _0x571cde={'where':_0x1e61a[_0x4881('0x36')]};return db['WhatsappApplication'][_0x4881('0x3a')](_0x571cde)['then'](function(_0x2aecef){_0xe66a47[_0x4881('0x3a')]=_0x2aecef;if(_0x5bcb74[_0x4881('0x2e')][_0x4881('0x3b')]){_0x1e61a['include']=[{'all':!![]}];}return db[_0x4881('0x27')]['findAll'](_0x1e61a);})[_0x4881('0x21')](function(_0x497baa){_0xe66a47['rows']=_0x497baa;return _0xe66a47;})[_0x4881('0x21')](respondWithFilteredResult(_0x273995,_0x1e61a))[_0x4881('0x3c')](handleError(_0x273995,null));};exports[_0x4881('0x3d')]=function(_0x2003c9,_0x262fd1){var _0x3f26c9={'raw':!![],'where':{'id':_0x2003c9[_0x4881('0x3e')]['id']}},_0x3b06ad={};_0x3b06ad[_0x4881('0x2c')]=_['keys'](db[_0x4881('0x27')][_0x4881('0x28')]);_0x3b06ad[_0x4881('0x2e')]=_[_0x4881('0x3f')](_0x2003c9[_0x4881('0x2e')]);_0x3b06ad['filters']=_[_0x4881('0x30')](_0x3b06ad['model'],_0x3b06ad[_0x4881('0x2e')]);_0x3f26c9['attributes']=_['intersection'](_0x3b06ad[_0x4881('0x2c')],qs[_0x4881('0x31')](_0x2003c9[_0x4881('0x2e')][_0x4881('0x31')]));_0x3f26c9[_0x4881('0x32')]=_0x3f26c9[_0x4881('0x32')][_0x4881('0x33')]?_0x3f26c9['attributes']:_0x3b06ad['model'];if(_0x2003c9[_0x4881('0x2e')]['includeAll']){_0x3f26c9['include']=[{'all':!![]}];}_0x3f26c9=_[_0x4881('0x38')]({},_0x3f26c9,_0x2003c9[_0x4881('0x40')]);return db['WhatsappApplication'][_0x4881('0x41')](_0x3f26c9)[_0x4881('0x21')](handleEntityNotFound(_0x262fd1,null))[_0x4881('0x21')](respondWithResult(_0x262fd1,null))[_0x4881('0x3c')](handleError(_0x262fd1,null));};exports[_0x4881('0x42')]=function(_0x1b1024,_0x515e9d){return db[_0x4881('0x27')]['create'](_0x1b1024[_0x4881('0x43')],{})[_0x4881('0x21')](respondWithResult(_0x515e9d,0xc9))['catch'](handleError(_0x515e9d,null));};exports['update']=function(_0x18bb78,_0x58f9ac){if(_0x18bb78[_0x4881('0x43')]['id']){delete _0x18bb78[_0x4881('0x43')]['id'];}return db[_0x4881('0x27')][_0x4881('0x41')]({'where':{'id':_0x18bb78[_0x4881('0x3e')]['id']}})[_0x4881('0x21')](handleEntityNotFound(_0x58f9ac,null))[_0x4881('0x21')](saveUpdates(_0x18bb78[_0x4881('0x43')],null))[_0x4881('0x21')](respondWithResult(_0x58f9ac,null))[_0x4881('0x3c')](handleError(_0x58f9ac,null));};exports[_0x4881('0x20')]=function(_0x4186bb,_0x3b0bda){return db[_0x4881('0x27')][_0x4881('0x41')]({'where':{'id':_0x4186bb['params']['id']}})[_0x4881('0x21')](handleEntityNotFound(_0x3b0bda,null))[_0x4881('0x21')](removeEntity(_0x3b0bda,null))['catch'](handleError(_0x3b0bda,null));};
\ No newline at end of file
+var _0x94ff=['papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','reject','update','then','destroy','error','name','index','map','WhatsappApplication','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','eml-format','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce','querystring'];(function(_0x4dcee9,_0x72ad1a){var _0x40e2ec=function(_0x25a667){while(--_0x25a667){_0x4dcee9['push'](_0x4dcee9['shift']());}};_0x40e2ec(++_0x72ad1a);}(_0x94ff,0xc3));var _0xf94f=function(_0x4c9d1f,_0x4f5389){_0x4c9d1f=_0x4c9d1f-0x0;var _0x131d82=_0x94ff[_0x4c9d1f];return _0x131d82;};'use strict';var emlformat=require(_0xf94f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf94f('0x1'));var moment=require(_0xf94f('0x2'));var BPromise=require(_0xf94f('0x3'));var Mustache=require('mustache');var util=require(_0xf94f('0x4'));var path=require(_0xf94f('0x5'));var sox=require('sox');var csv=require(_0xf94f('0x6'));var ejs=require(_0xf94f('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf94f('0x8'));var squel=require('squel');var crypto=require(_0xf94f('0x9'));var jsforce=require(_0xf94f('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xf94f('0x6'));var querystring=require(_0xf94f('0xb'));var Papa=require(_0xf94f('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf94f('0xd'));var as=require(_0xf94f('0xe'));var hardwareService=require(_0xf94f('0xf'));var logger=require(_0xf94f('0x10'))(_0xf94f('0x11'));var utils=require(_0xf94f('0x12'));var config=require(_0xf94f('0x13'));var licenseUtil=require(_0xf94f('0x14'));var db=require(_0xf94f('0x15'))['db'];function respondWithStatusCode(_0x5db310,_0x75ff98){_0x75ff98=_0x75ff98||0xcc;return function(_0xb02dc4){if(_0xb02dc4){return _0x5db310[_0xf94f('0x16')](_0x75ff98);}return _0x5db310[_0xf94f('0x17')](_0x75ff98)['end']();};}function respondWithResult(_0x16766e,_0x2f5125){_0x2f5125=_0x2f5125||0xc8;return function(_0x1dc133){if(_0x1dc133){return _0x16766e[_0xf94f('0x17')](_0x2f5125)[_0xf94f('0x18')](_0x1dc133);}};}function respondWithFilteredResult(_0x127253,_0x4909ab){return function(_0x275e3c){if(_0x275e3c){var _0x5924da=typeof _0x4909ab[_0xf94f('0x19')]===_0xf94f('0x1a')&&typeof _0x4909ab['limit']==='undefined';var _0x55944e=_0x275e3c[_0xf94f('0x1b')];var _0x4fa016=_0x5924da?0x0:_0x4909ab['offset'];var _0x3ccfb4=_0x5924da?_0x275e3c['count']:_0x4909ab[_0xf94f('0x19')]+_0x4909ab['limit'];var _0x3cf285;if(_0x3ccfb4>=_0x55944e){_0x3ccfb4=_0x55944e;_0x3cf285=0xc8;}else{_0x3cf285=0xce;}_0x127253['status'](_0x3cf285);return _0x127253[_0xf94f('0x1c')](_0xf94f('0x1d'),_0x4fa016+'-'+_0x3ccfb4+'/'+_0x55944e)['json'](_0x275e3c);}return null;};}function patchUpdates(_0x412de1){return function(_0x25531d){try{jsonpatch['apply'](_0x25531d,_0x412de1,!![]);}catch(_0x3c275b){return BPromise[_0xf94f('0x1e')](_0x3c275b);}return _0x25531d['save']();};}function saveUpdates(_0x15db29,_0x3aa34b){return function(_0x5beb9c){if(_0x5beb9c){return _0x5beb9c[_0xf94f('0x1f')](_0x15db29)[_0xf94f('0x20')](function(_0x115637){return _0x115637;});}return null;};}function removeEntity(_0x18d1c4,_0x1c6eab){return function(_0x4c9ec5){if(_0x4c9ec5){return _0x4c9ec5[_0xf94f('0x21')]()[_0xf94f('0x20')](function(){_0x18d1c4[_0xf94f('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26b0dd,_0x2f1bd5){return function(_0x4d87ef){if(!_0x4d87ef){_0x26b0dd[_0xf94f('0x16')](0x194);}return _0x4d87ef;};}function handleError(_0x56eca2,_0x494a9d){_0x494a9d=_0x494a9d||0x1f4;return function(_0x281d5a){logger[_0xf94f('0x22')](_0x281d5a['stack']);if(_0x281d5a['name']){delete _0x281d5a[_0xf94f('0x23')];}_0x56eca2[_0xf94f('0x17')](_0x494a9d)['send'](_0x281d5a);};}exports[_0xf94f('0x24')]=function(_0x2be1e1,_0x341cac){var _0x5939dd={},_0x18b013={},_0x5b97f0={'count':0x0,'rows':[]};var _0x2f3471=_[_0xf94f('0x25')](db[_0xf94f('0x26')]['rawAttributes'],function(_0x1175fc){return{'name':_0x1175fc[_0xf94f('0x27')],'type':_0x1175fc[_0xf94f('0x28')][_0xf94f('0x29')]};});_0x18b013[_0xf94f('0x2a')]=_[_0xf94f('0x25')](_0x2f3471,_0xf94f('0x23'));_0x18b013['query']=_[_0xf94f('0x2b')](_0x2be1e1[_0xf94f('0x2c')]);_0x18b013[_0xf94f('0x2d')]=_[_0xf94f('0x2e')](_0x18b013[_0xf94f('0x2a')],_0x18b013[_0xf94f('0x2c')]);_0x5939dd[_0xf94f('0x2f')]=_[_0xf94f('0x2e')](_0x18b013[_0xf94f('0x2a')],qs[_0xf94f('0x30')](_0x2be1e1[_0xf94f('0x2c')]['fields']));_0x5939dd[_0xf94f('0x2f')]=_0x5939dd[_0xf94f('0x2f')][_0xf94f('0x31')]?_0x5939dd['attributes']:_0x18b013[_0xf94f('0x2a')];if(!_0x2be1e1[_0xf94f('0x2c')][_0xf94f('0x32')](_0xf94f('0x33'))){_0x5939dd[_0xf94f('0x34')]=qs[_0xf94f('0x34')](_0x2be1e1[_0xf94f('0x2c')][_0xf94f('0x34')]);_0x5939dd[_0xf94f('0x19')]=qs[_0xf94f('0x19')](_0x2be1e1['query']['offset']);}_0x5939dd[_0xf94f('0x35')]=qs[_0xf94f('0x36')](_0x2be1e1[_0xf94f('0x2c')][_0xf94f('0x36')]);_0x5939dd[_0xf94f('0x37')]=qs[_0xf94f('0x2d')](_['pick'](_0x2be1e1[_0xf94f('0x2c')],_0x18b013['filters']),_0x2f3471);if(_0x2be1e1['query'][_0xf94f('0x38')]){_0x5939dd[_0xf94f('0x37')]=_[_0xf94f('0x39')](_0x5939dd[_0xf94f('0x37')],{'$or':_['map'](_0x2f3471,function(_0x4e0bc1){if(_0x4e0bc1[_0xf94f('0x28')]!==_0xf94f('0x3a')){var _0x441235={};_0x441235[_0x4e0bc1['name']]={'$like':'%'+_0x2be1e1[_0xf94f('0x2c')]['filter']+'%'};return _0x441235;}})});}_0x5939dd=_['merge']({},_0x5939dd,_0x2be1e1[_0xf94f('0x3b')]);var _0x35720b={'where':_0x5939dd[_0xf94f('0x37')]};return db['WhatsappApplication']['count'](_0x35720b)[_0xf94f('0x20')](function(_0x425903){_0x5b97f0[_0xf94f('0x1b')]=_0x425903;if(_0x2be1e1[_0xf94f('0x2c')][_0xf94f('0x3c')]){_0x5939dd[_0xf94f('0x3d')]=[{'all':!![]}];}return db['WhatsappApplication']['findAll'](_0x5939dd);})[_0xf94f('0x20')](function(_0x590772){_0x5b97f0[_0xf94f('0x3e')]=_0x590772;return _0x5b97f0;})[_0xf94f('0x20')](respondWithFilteredResult(_0x341cac,_0x5939dd))[_0xf94f('0x3f')](handleError(_0x341cac,null));};exports[_0xf94f('0x40')]=function(_0x5974cb,_0xef17a7){var _0x160fe6={'raw':!![],'where':{'id':_0x5974cb[_0xf94f('0x41')]['id']}},_0x124f77={};_0x124f77[_0xf94f('0x2a')]=_[_0xf94f('0x2b')](db[_0xf94f('0x26')]['rawAttributes']);_0x124f77['query']=_[_0xf94f('0x2b')](_0x5974cb[_0xf94f('0x2c')]);_0x124f77[_0xf94f('0x2d')]=_[_0xf94f('0x2e')](_0x124f77[_0xf94f('0x2a')],_0x124f77[_0xf94f('0x2c')]);_0x160fe6['attributes']=_[_0xf94f('0x2e')](_0x124f77[_0xf94f('0x2a')],qs['fields'](_0x5974cb[_0xf94f('0x2c')][_0xf94f('0x30')]));_0x160fe6[_0xf94f('0x2f')]=_0x160fe6[_0xf94f('0x2f')][_0xf94f('0x31')]?_0x160fe6[_0xf94f('0x2f')]:_0x124f77[_0xf94f('0x2a')];if(_0x5974cb[_0xf94f('0x2c')][_0xf94f('0x3c')]){_0x160fe6['include']=[{'all':!![]}];}_0x160fe6=_['merge']({},_0x160fe6,_0x5974cb[_0xf94f('0x3b')]);return db[_0xf94f('0x26')][_0xf94f('0x42')](_0x160fe6)[_0xf94f('0x20')](handleEntityNotFound(_0xef17a7,null))['then'](respondWithResult(_0xef17a7,null))[_0xf94f('0x3f')](handleError(_0xef17a7,null));};exports[_0xf94f('0x43')]=function(_0x2802ad,_0x54e40c){return db[_0xf94f('0x26')][_0xf94f('0x43')](_0x2802ad['body'],{})[_0xf94f('0x20')](respondWithResult(_0x54e40c,0xc9))[_0xf94f('0x3f')](handleError(_0x54e40c,null));};exports[_0xf94f('0x1f')]=function(_0x2e6441,_0x4e5074){if(_0x2e6441[_0xf94f('0x44')]['id']){delete _0x2e6441['body']['id'];}return db[_0xf94f('0x26')][_0xf94f('0x42')]({'where':{'id':_0x2e6441['params']['id']}})[_0xf94f('0x20')](handleEntityNotFound(_0x4e5074,null))[_0xf94f('0x20')](saveUpdates(_0x2e6441['body'],null))['then'](respondWithResult(_0x4e5074,null))['catch'](handleError(_0x4e5074,null));};exports[_0xf94f('0x21')]=function(_0x2ea829,_0x4724d3){return db[_0xf94f('0x26')][_0xf94f('0x42')]({'where':{'id':_0x2ea829[_0xf94f('0x41')]['id']}})[_0xf94f('0x20')](handleEntityNotFound(_0x4724d3,null))[_0xf94f('0x20')](removeEntity(_0x4724d3,null))[_0xf94f('0x3f')](handleError(_0x4724d3,null));};
\ No newline at end of file
index fa359e2..96f9687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a8f=['request-promise','exports','WhatsappApplication','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird'];(function(_0x3ba10f,_0x12be2e){var _0xcbaec2=function(_0x393436){while(--_0x393436){_0x3ba10f['push'](_0x3ba10f['shift']());}};_0xcbaec2(++_0x12be2e);}(_0x1a8f,0x87));var _0xf1a8=function(_0x1cb825,_0x909dc6){_0x1cb825=_0x1cb825-0x0;var _0x596088=_0x1a8f[_0x1cb825];return _0x596088;};'use strict';var _=require(_0xf1a8('0x0'));var util=require('util');var logger=require(_0xf1a8('0x1'))(_0xf1a8('0x2'));var moment=require(_0xf1a8('0x3'));var BPromise=require(_0xf1a8('0x4'));var rp=require(_0xf1a8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module[_0xf1a8('0x6')]=function(_0x515ff3,_0x29dc33){return _0x515ff3['define'](_0xf1a8('0x7'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf1a8('0x8'),'collate':_0xf1a8('0x9')});};
\ No newline at end of file
+var _0x0f9f=['./whatsappApplication.attributes','exports','define','whatsapp_applications','utf8mb4','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3ebda1,_0x529d6b){var _0x5d93df=function(_0x398e56){while(--_0x398e56){_0x3ebda1['push'](_0x3ebda1['shift']());}};_0x5d93df(++_0x529d6b);}(_0x0f9f,0x1cc));var _0xf0f9=function(_0x2d3040,_0x129c56){_0x2d3040=_0x2d3040-0x0;var _0x4c85b6=_0x0f9f[_0x2d3040];return _0x4c85b6;};'use strict';var _=require('lodash');var util=require(_0xf0f9('0x0'));var logger=require(_0xf0f9('0x1'))(_0xf0f9('0x2'));var moment=require('moment');var BPromise=require(_0xf0f9('0x3'));var rp=require(_0xf0f9('0x4'));var fs=require('fs');var path=require(_0xf0f9('0x5'));var rimraf=require(_0xf0f9('0x6'));var config=require(_0xf0f9('0x7'));var attributes=require(_0xf0f9('0x8'));module[_0xf0f9('0x9')]=function(_0x3eaff3,_0x425fbe){return _0x3eaff3[_0xf0f9('0xa')]('WhatsappApplication',attributes,{'tableName':_0xf0f9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf0f9('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index cededec..d72d3c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5636=['code','WhatsappApplication,\x20%s,\x20%s','message','info','result','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','error'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x5636,0x102));var _0x6563=function(_0x4c5956,_0x336679){_0x4c5956=_0x4c5956-0x0;var _0x36b634=_0x5636[_0x4c5956];return _0x36b634;};'use strict';var _=require(_0x6563('0x0'));var util=require(_0x6563('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6563('0x2'));var db=require(_0x6563('0x3'))['db'];var utils=require(_0x6563('0x4'));var logger=require('../../config/logger')(_0x6563('0x5'));var config=require(_0x6563('0x6'));var jayson=require(_0x6563('0x7'));var client=jayson[_0x6563('0x8')][_0x6563('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x193942,_0x9884a9,_0x2d57d5){return new BPromise(function(_0x2d0d5b,_0x98fcd4){return client[_0x6563('0xa')](_0x193942,_0x2d57d5)[_0x6563('0xb')](function(_0x3ccb4e){logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x9884a9,_0x6563('0xc'));logger[_0x6563('0xd')]('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x9884a9,'request\x20sent',JSON['stringify'](_0x3ccb4e));if(_0x3ccb4e[_0x6563('0xe')]){if(_0x3ccb4e[_0x6563('0xe')][_0x6563('0xf')]===0x1f4){logger[_0x6563('0xe')](_0x6563('0x10'),_0x9884a9,_0x3ccb4e[_0x6563('0xe')][_0x6563('0x11')]);return _0x98fcd4(_0x3ccb4e[_0x6563('0xe')][_0x6563('0x11')]);}logger['error'](_0x6563('0x10'),_0x9884a9,_0x3ccb4e['error'][_0x6563('0x11')]);return _0x2d0d5b(_0x3ccb4e[_0x6563('0xe')][_0x6563('0x11')]);}else{logger[_0x6563('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x9884a9,_0x6563('0xc'));_0x2d0d5b(_0x3ccb4e[_0x6563('0x13')][_0x6563('0x11')]);}})[_0x6563('0x14')](function(_0x4e7282){logger[_0x6563('0xe')]('WhatsappApplication,\x20%s,\x20%s',_0x9884a9,_0x4e7282);_0x98fcd4(_0x4e7282);});});}
\ No newline at end of file
+var _0xfd28=['error','code','message','info','result','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','WhatsappApplication,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x2ec101,_0x292b58){var _0x1a1e51=function(_0x3d5fd3){while(--_0x3d5fd3){_0x2ec101['push'](_0x2ec101['shift']());}};_0x1a1e51(++_0x292b58);}(_0xfd28,0x148));var _0x8fd2=function(_0x4e7d25,_0x58285f){_0x4e7d25=_0x4e7d25-0x0;var _0x526fe6=_0xfd28[_0x4e7d25];return _0x526fe6;};'use strict';var _=require('lodash');var util=require(_0x8fd2('0x0'));var moment=require(_0x8fd2('0x1'));var BPromise=require('bluebird');var rs=require(_0x8fd2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8fd2('0x3'))['db'];var utils=require(_0x8fd2('0x4'));var logger=require(_0x8fd2('0x5'))('rpc');var config=require(_0x8fd2('0x6'));var jayson=require(_0x8fd2('0x7'));var client=jayson[_0x8fd2('0x8')][_0x8fd2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f0afc,_0x4bdc1a,_0x53d938){return new BPromise(function(_0x10fccf,_0x466c3d){return client[_0x8fd2('0xa')](_0x2f0afc,_0x53d938)['then'](function(_0x13cc69){logger['info'](_0x8fd2('0xb'),_0x4bdc1a,'request\x20sent');logger[_0x8fd2('0xc')]('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x4bdc1a,_0x8fd2('0xd'),JSON['stringify'](_0x13cc69));if(_0x13cc69[_0x8fd2('0xe')]){if(_0x13cc69['error'][_0x8fd2('0xf')]===0x1f4){logger[_0x8fd2('0xe')](_0x8fd2('0xb'),_0x4bdc1a,_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);return _0x466c3d(_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);}logger[_0x8fd2('0xe')](_0x8fd2('0xb'),_0x4bdc1a,_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);return _0x10fccf(_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);}else{logger[_0x8fd2('0x11')](_0x8fd2('0xb'),_0x4bdc1a,'request\x20sent');_0x10fccf(_0x13cc69[_0x8fd2('0x12')]['message']);}})['catch'](function(_0x56f75d){logger[_0x8fd2('0xe')](_0x8fd2('0xb'),_0x4bdc1a,_0x56f75d);_0x466c3d(_0x56f75d);});});}
\ No newline at end of file
index 5ee028b..1cdd636 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d0=['../../components/interaction/service','../../config/environment','get','index','/describe','describe','/:id','isAuthenticated','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','whatsapp','put','update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','express','Router','fs-extra','../../components/auth/service'];(function(_0x32a228,_0x2fc322){var _0x5da9ba=function(_0x42c8bb){while(--_0x42c8bb){_0x32a228['push'](_0x32a228['shift']());}};_0x5da9ba(++_0x2fc322);}(_0x85d0,0x164));var _0x085d=function(_0x30160c,_0x2c6abd){_0x30160c=_0x30160c-0x0;var _0x56a4d4=_0x85d0[_0x30160c];return _0x56a4d4;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x085d('0x0'));var router=express[_0x085d('0x1')]();var fs_extra=require(_0x085d('0x2'));var auth=require(_0x085d('0x3'));var interaction=require(_0x085d('0x4'));var config=require(_0x085d('0x5'));var controller=require('./whatsappInteraction.controller');router[_0x085d('0x6')]('/',auth['isAuthenticated'](),controller[_0x085d('0x7')]);router[_0x085d('0x6')](_0x085d('0x8'),auth['isAuthenticated'](),controller[_0x085d('0x9')]);router[_0x085d('0x6')](_0x085d('0xa'),auth[_0x085d('0xb')](),controller[_0x085d('0xc')]);router[_0x085d('0x6')](_0x085d('0xd'),auth[_0x085d('0xb')](),controller[_0x085d('0xe')]);router['get'](_0x085d('0xf'),auth[_0x085d('0xb')](),controller[_0x085d('0x10')]);router[_0x085d('0x11')]('/',auth['isAuthenticated'](),controller[_0x085d('0x12')]);router[_0x085d('0x11')]('/:id/messages',auth[_0x085d('0xb')](),controller[_0x085d('0x13')]);router[_0x085d('0x11')](_0x085d('0x14'),auth['isAuthenticated'](),interaction[_0x085d('0x15')](_0x085d('0x16'),'whatsappinteraction:addtags'),controller['addTags']);router[_0x085d('0x17')](_0x085d('0xa'),auth[_0x085d('0xb')](),interaction[_0x085d('0x15')](_0x085d('0x16'),'whatsappinteraction:update'),controller[_0x085d('0x18')]);router[_0x085d('0x19')](_0x085d('0xa'),auth[_0x085d('0xb')](),interaction[_0x085d('0x15')](_0x085d('0x16'),_0x085d('0x1a')),controller[_0x085d('0x1b')]);router[_0x085d('0x19')]('/:id/tags',auth[_0x085d('0xb')](),controller[_0x085d('0x1c')]);module[_0x085d('0x1d')]=router;
\ No newline at end of file
+var _0x7fbe=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','tracked','whatsappinteraction:addtags','addTags','whatsapp','whatsappinteraction:update','update','whatsappinteraction:destroy','destroy','delete','/:id/tags','removeTags','path','connect-timeout','express'];(function(_0x3ba566,_0x5e009d){var _0x480317=function(_0x2fc8de){while(--_0x2fc8de){_0x3ba566['push'](_0x3ba566['shift']());}};_0x480317(++_0x5e009d);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x58feb8,_0x599bd4){_0x58feb8=_0x58feb8-0x0;var _0x5754dd=_0x7fbe[_0x58feb8];return _0x5754dd;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xb')]);router[_0xe7fb('0x9')](_0xe7fb('0xc'),auth['isAuthenticated'](),controller[_0xe7fb('0xd')]);router[_0xe7fb('0x9')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller['show']);router['get'](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x10')]);router[_0xe7fb('0x9')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x12')]);router[_0xe7fb('0x13')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x14')]);router[_0xe7fb('0x13')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x15')]);router[_0xe7fb('0x13')]('/:id/tags',auth[_0xe7fb('0xa')](),interaction[_0xe7fb('0x16')]('whatsapp',_0xe7fb('0x17')),controller[_0xe7fb('0x18')]);router['put'](_0xe7fb('0xe'),auth['isAuthenticated'](),interaction[_0xe7fb('0x16')](_0xe7fb('0x19'),_0xe7fb('0x1a')),controller[_0xe7fb('0x1b')]);router['delete'](_0xe7fb('0xe'),auth['isAuthenticated'](),interaction[_0xe7fb('0x16')]('whatsapp',_0xe7fb('0x1c')),controller[_0xe7fb('0x1d')]);router[_0xe7fb('0x1e')](_0xe7fb('0x1f'),auth['isAuthenticated'](),controller[_0xe7fb('0x20')]);module['exports']=router;
\ No newline at end of file
index c717b2b..520f27d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be1=['DATE','STRING','out','BOOLEAN','INTEGER','sequelize','moment','exports'];(function(_0x1a27c9,_0x36595a){var _0x2b1015=function(_0x31454a){while(--_0x31454a){_0x1a27c9['push'](_0x1a27c9['shift']());}};_0x2b1015(++_0x36595a);}(_0x7be1,0x165));var _0x17be=function(_0x203451,_0x36cdd9){_0x203451=_0x203451-0x0;var _0x23dc34=_0x7be1[_0x203451];return _0x23dc34;};'use strict';var Sequelize=require(_0x17be('0x0'));var moment=require(_0x17be('0x1'));module[_0x17be('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x17be('0x3')]},'disposition':{'type':Sequelize[_0x17be('0x4')]},'secondDisposition':{'type':Sequelize[_0x17be('0x4')]},'thirdDisposition':{'type':Sequelize[_0x17be('0x4')]},'note':{'type':Sequelize[_0x17be('0x4')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x17be('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x17be('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x17be('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x17be('0x6')],'defaultValue':![]},'queueId':{'type':Sequelize[_0x17be('0x7')]}};
\ No newline at end of file
+var _0xa3db=['exports','BOOLEAN','DATE','STRING','out','ENUM','INTEGER','sequelize','moment'];(function(_0x3c3fa0,_0x4224be){var _0x4eaa8d=function(_0x239f34){while(--_0x239f34){_0x3c3fa0['push'](_0x3c3fa0['shift']());}};_0x4eaa8d(++_0x4224be);}(_0xa3db,0x10c));var _0xba3d=function(_0x33374c,_0x24612a){_0x33374c=_0x33374c-0x0;var _0x20809b=_0xa3db[_0x33374c];return _0x20809b;};'use strict';var Sequelize=require(_0xba3d('0x0'));var moment=require(_0xba3d('0x1'));module[_0xba3d('0x2')]={'closed':{'type':Sequelize[_0xba3d('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xba3d('0x4')]},'disposition':{'type':Sequelize[_0xba3d('0x5')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xba3d('0x5')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xba3d('0x4')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xba3d('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xba3d('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xba3d('0x7')]('in',_0xba3d('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xba3d('0x3')],'defaultValue':![]},'queueId':{'type':Sequelize[_0xba3d('0x8')]}};
\ No newline at end of file
index 65ad4b8..e2fe2d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7caa=['stack','name','send','map','key','getOptions','findAll','query','user','then','catch','show','params','model','rawAttributes','filters','intersection','attributes','fields','length','includeAll','merge','WhatsappInteraction','find','create','body','describe','addMessage','WhatsappMessage','ids','findOne','keys','hasOwnProperty','nolimit','order','sort','WhatsappInteractionId','filter','where','$gte','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','omit','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','unix','toString','join','root','server','files','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','firstName','lastName','Attachment','Messages','createdAt','secret','read','WhatsappAccount','Owner','get','mkdirSync','Whatsapp','Account','format','closed','closedAt','basename','existsSync','createReadStream','pipe','direction','out','System','Contact','renderFile','views','.pdf','createPdfFromHTML','download','log','err','unlinkSync','rimraf','zip-dir','bluebird','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','update','destroy','error'];(function(_0x59df15,_0x3637e7){var _0x1e79ad=function(_0x2047da){while(--_0x2047da){_0x59df15['push'](_0x59df15['shift']());}};_0x1e79ad(++_0x3637e7);}(_0x7caa,0xdc));var _0xa7ca=function(_0x1f3739,_0x3db463){_0x1f3739=_0x1f3739-0x0;var _0x37f487=_0x7caa[_0x1f3739];return _0x37f487;};'use strict';var rimraf=require(_0xa7ca('0x0'));var zipdir=require(_0xa7ca('0x1'));var moment=require('moment');var BPromise=require(_0xa7ca('0x2'));var util=require(_0xa7ca('0x3'));var path=require(_0xa7ca('0x4'));var ejs=require(_0xa7ca('0x5'));var fs=require('fs');var _=require(_0xa7ca('0x6'));var Redis=require(_0xa7ca('0x7'));var interaction=require(_0xa7ca('0x8'));var qs=require(_0xa7ca('0x9'));var pdf=require(_0xa7ca('0xa'));var logger=require('../../config/logger')('api');var config=require('../../config/environment');var db=require(_0xa7ca('0xb'))['db'];config[_0xa7ca('0xc')]=_[_0xa7ca('0xd')](config[_0xa7ca('0xc')],{'host':_0xa7ca('0xe'),'port':0x18eb});var socket=require(_0xa7ca('0xf'))(new Redis(config[_0xa7ca('0xc')]));require(_0xa7ca('0x10'))['register'](socket);function respondWithStatusCode(_0x480f9a,_0x23493f){_0x23493f=_0x23493f||0xcc;return function(_0x31bb49){if(_0x31bb49){return _0x480f9a[_0xa7ca('0x11')](_0x23493f);}return _0x480f9a[_0xa7ca('0x12')](_0x23493f)[_0xa7ca('0x13')]();};}function respondWithResult(_0x4e4ce4,_0x1e8ce7){_0x1e8ce7=_0x1e8ce7||0xc8;return function(_0x5928df){if(_0x5928df){return _0x4e4ce4[_0xa7ca('0x12')](_0x1e8ce7)[_0xa7ca('0x14')](_0x5928df);}};}function respondWithFilteredResult(_0x4f2df8,_0x135f14){return function(_0x401820){if(_0x401820){var _0x4cf47e=typeof _0x135f14[_0xa7ca('0x15')]===_0xa7ca('0x16')&&typeof _0x135f14['limit']===_0xa7ca('0x16');var _0x22e65e=_0x401820[_0xa7ca('0x17')];var _0x2c7195=_0x4cf47e?0x0:_0x135f14[_0xa7ca('0x15')];var _0x43e480=_0x4cf47e?_0x401820[_0xa7ca('0x17')]:_0x135f14[_0xa7ca('0x15')]+_0x135f14[_0xa7ca('0x18')];var _0x1ef9ac;if(_0x43e480>=_0x22e65e){_0x43e480=_0x22e65e;_0x1ef9ac=0xc8;}else{_0x1ef9ac=0xce;}_0x4f2df8[_0xa7ca('0x12')](_0x1ef9ac);return _0x4f2df8[_0xa7ca('0x19')](_0xa7ca('0x1a'),_0x2c7195+'-'+_0x43e480+'/'+_0x22e65e)[_0xa7ca('0x14')](_0x401820);}return null;};}function saveUpdates(_0x31f281){return function(_0x2b3442){if(_0x2b3442){return _0x2b3442[_0xa7ca('0x1b')](_0x31f281)['then'](function(_0x120d71){return _0x120d71;});}return null;};}function removeEntity(_0x3a72bc){return function(_0x2535d1){if(_0x2535d1){return _0x2535d1[_0xa7ca('0x1c')]()['then'](function(){_0x3a72bc['status'](0xcc)[_0xa7ca('0x13')]();});}};}function handleEntityNotFound(_0x50911f){return function(_0xc14a7){if(!_0xc14a7){_0x50911f['sendStatus'](0x194);}return _0xc14a7;};}function handleError(_0x32c247,_0x10cc8f){_0x10cc8f=_0x10cc8f||0x1f4;return function(_0x521a0f){logger[_0xa7ca('0x1d')](_0x521a0f[_0xa7ca('0x1e')]);if(_0x521a0f[_0xa7ca('0x1f')]){delete _0x521a0f[_0xa7ca('0x1f')];}_0x32c247['status'](_0x10cc8f)[_0xa7ca('0x20')](_0x521a0f);};}exports['index']=function(_0x48057a,_0x27bc3c){var _0x23e338={};var _0x18e803=_[_0xa7ca('0x21')](db['WhatsappInteraction']['rawAttributes'],function(_0x411390){return{'name':_0x411390['fieldName'],'type':_0x411390['type'][_0xa7ca('0x22')]};});_0x23e338=qs[_0xa7ca('0x23')](_0x18e803,_0x48057a);return interaction[_0xa7ca('0x24')]('whatsapp',_0x48057a[_0xa7ca('0x25')],_0x48057a[_0xa7ca('0x26')],_0x23e338,_0x18e803)[_0xa7ca('0x27')](respondWithFilteredResult(_0x27bc3c,_0x23e338))[_0xa7ca('0x28')](handleError(_0x27bc3c,null));};exports[_0xa7ca('0x29')]=function(_0x2eecfc,_0x1ea31f){var _0x13f93f={'raw':![],'where':{'id':_0x2eecfc[_0xa7ca('0x2a')]['id']}},_0x3ac6f3={};_0x3ac6f3[_0xa7ca('0x2b')]=_['keys'](db['WhatsappInteraction'][_0xa7ca('0x2c')]);_0x3ac6f3['query']=_['keys'](_0x2eecfc[_0xa7ca('0x25')]);_0x3ac6f3[_0xa7ca('0x2d')]=_[_0xa7ca('0x2e')](_0x3ac6f3[_0xa7ca('0x2b')],_0x3ac6f3[_0xa7ca('0x25')]);_0x13f93f[_0xa7ca('0x2f')]=_[_0xa7ca('0x2e')](_0x3ac6f3[_0xa7ca('0x2b')],qs['fields'](_0x2eecfc[_0xa7ca('0x25')][_0xa7ca('0x30')]));_0x13f93f[_0xa7ca('0x2f')]=_0x13f93f['attributes'][_0xa7ca('0x31')]?_0x13f93f[_0xa7ca('0x2f')]:_0x3ac6f3[_0xa7ca('0x2b')];if(_0x2eecfc[_0xa7ca('0x25')][_0xa7ca('0x32')]){_0x13f93f['include']=[{'all':!![]}];}_0x13f93f=_[_0xa7ca('0x33')]({},_0x13f93f,_0x2eecfc['options']);return db[_0xa7ca('0x34')][_0xa7ca('0x35')](_0x13f93f)[_0xa7ca('0x27')](handleEntityNotFound(_0x1ea31f,null))[_0xa7ca('0x27')](respondWithResult(_0x1ea31f,null))[_0xa7ca('0x28')](handleError(_0x1ea31f,null));};exports['create']=function(_0x5407c3,_0xa645a2){return db[_0xa7ca('0x34')][_0xa7ca('0x36')](_0x5407c3[_0xa7ca('0x37')],{})[_0xa7ca('0x27')](respondWithResult(_0xa645a2,0xc9))[_0xa7ca('0x28')](handleError(_0xa645a2,null));};exports[_0xa7ca('0x1b')]=function(_0x371191,_0x1d215b){if(_0x371191[_0xa7ca('0x37')]['id']){delete _0x371191[_0xa7ca('0x37')]['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x371191[_0xa7ca('0x2a')]['id']}})['then'](handleEntityNotFound(_0x1d215b,null))[_0xa7ca('0x27')](saveUpdates(_0x371191[_0xa7ca('0x37')],null))[_0xa7ca('0x27')](respondWithResult(_0x1d215b,null))[_0xa7ca('0x28')](handleError(_0x1d215b,null));};exports[_0xa7ca('0x1c')]=function(_0xaf1706,_0x3fa799){return db['WhatsappInteraction'][_0xa7ca('0x35')]({'where':{'id':_0xaf1706[_0xa7ca('0x2a')]['id']}})[_0xa7ca('0x27')](handleEntityNotFound(_0x3fa799,null))[_0xa7ca('0x27')](removeEntity(_0x3fa799,null))[_0xa7ca('0x28')](handleError(_0x3fa799,null));};exports[_0xa7ca('0x38')]=function(_0x2f7305,_0x1eacdc){return db[_0xa7ca('0x34')][_0xa7ca('0x38')]()['then'](respondWithResult(_0x1eacdc,null))[_0xa7ca('0x28')](handleError(_0x1eacdc,null));};exports[_0xa7ca('0x39')]=function(_0x93e1c9,_0x23a7a9){return db[_0xa7ca('0x3a')]['find']({'where':{'id':_0x93e1c9['params']['id']}})[_0xa7ca('0x27')](handleEntityNotFound(_0x23a7a9,null))[_0xa7ca('0x27')](function(_0xf9a52d){if(_0xf9a52d){return _0xf9a52d[_0xa7ca('0x39')](_0x93e1c9[_0xa7ca('0x37')][_0xa7ca('0x3b')],_['omit'](_0x93e1c9['body'],[_0xa7ca('0x3b'),'id'])||{});}})['then'](respondWithResult(_0x23a7a9,null))[_0xa7ca('0x28')](handleError(_0x23a7a9,null));};exports['getMessages']=function(_0xcd055f,_0x29f9be){var _0x2e0994={'raw':![],'where':{}};var _0x94d549={};var _0x4fc6ac={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xa7ca('0x3c')]({'where':{'id':_0xcd055f['params']['id']}})[_0xa7ca('0x27')](handleEntityNotFound(_0x29f9be,null))[_0xa7ca('0x27')](function(_0x1ada96){if(_0x1ada96){_0x94d549[_0xa7ca('0x2b')]=_['keys'](db[_0xa7ca('0x3a')][_0xa7ca('0x2c')]);_0x94d549[_0xa7ca('0x25')]=_[_0xa7ca('0x3d')](_0xcd055f['query']);_0x94d549[_0xa7ca('0x2d')]=_['intersection'](_0x94d549[_0xa7ca('0x2b')],_0x94d549[_0xa7ca('0x25')]);_0x2e0994[_0xa7ca('0x2f')]=_[_0xa7ca('0x2e')](_0x94d549[_0xa7ca('0x2b')],qs[_0xa7ca('0x30')](_0xcd055f[_0xa7ca('0x25')][_0xa7ca('0x30')]));_0x2e0994['attributes']=_0x2e0994['attributes'][_0xa7ca('0x31')]?_0x2e0994[_0xa7ca('0x2f')]:_0x94d549[_0xa7ca('0x2b')];if(!_0xcd055f[_0xa7ca('0x25')][_0xa7ca('0x3e')](_0xa7ca('0x3f'))){_0x2e0994[_0xa7ca('0x18')]=qs[_0xa7ca('0x18')](_0xcd055f[_0xa7ca('0x25')][_0xa7ca('0x18')]);_0x2e0994[_0xa7ca('0x15')]=qs[_0xa7ca('0x15')](_0xcd055f['query']['offset']);}_0x2e0994[_0xa7ca('0x40')]=qs['sort'](_0xcd055f[_0xa7ca('0x25')][_0xa7ca('0x41')]);_0x2e0994['where']=qs[_0xa7ca('0x2d')](_['pick'](_0xcd055f[_0xa7ca('0x25')],_0x94d549[_0xa7ca('0x2d')]));_0x2e0994['where'][_0xa7ca('0x42')]=_0x1ada96['id'];if(_0xcd055f[_0xa7ca('0x25')][_0xa7ca('0x43')]){_0x2e0994['where']=_['merge'](_0x2e0994[_0xa7ca('0x44')],{'$or':_[_0xa7ca('0x21')](_0x2e0994[_0xa7ca('0x2f')],function(_0x55e98f){var _0xe1ff73={};_0xe1ff73[_0x55e98f]={'$like':'%'+_0xcd055f[_0xa7ca('0x25')][_0xa7ca('0x43')]+'%'};return _0xe1ff73;})});}if(_0xcd055f[_0xa7ca('0x25')][_0xa7ca('0x45')]){var _0x1c9710=_0xcd055f[_0xa7ca('0x25')]['$gte']['split'](',');var _0x15b985={};_0x15b985[_0x1c9710[0x0]]={'$gte':moment(_0x1c9710[0x1])['format'](_0xa7ca('0x46'))};_0x2e0994['where']=_[_0xa7ca('0x33')](_0x2e0994[_0xa7ca('0x44')],_0x15b985);}_0x2e0994=_['merge']({},_0x2e0994,_0xcd055f['options']);return db[_0xa7ca('0x3a')]['count']({'where':_0x2e0994[_0xa7ca('0x44')]})[_0xa7ca('0x27')](function(_0x238724){_0x4fc6ac[_0xa7ca('0x17')]=_0x238724;if(_0xcd055f['query']['includeAll']){_0x2e0994[_0xa7ca('0x47')]=[{'all':!![]}];}return db[_0xa7ca('0x3a')][_0xa7ca('0x24')](_0x2e0994);})[_0xa7ca('0x27')](function(_0x288fc2){_0x4fc6ac[_0xa7ca('0x48')]=_0x288fc2;return _0x4fc6ac;});}})[_0xa7ca('0x27')](respondWithFilteredResult(_0x29f9be,_0x2e0994))[_0xa7ca('0x28')](handleError(_0x29f9be,null));};exports[_0xa7ca('0x49')]=function(_0x580c94,_0x1530ef){return db[_0xa7ca('0x34')][_0xa7ca('0x35')]({'where':{'id':_0x580c94[_0xa7ca('0x2a')]['id']}})[_0xa7ca('0x27')](handleEntityNotFound(_0x1530ef,null))[_0xa7ca('0x27')](function(_0x4ee80d){if(_0x4ee80d){return _0x4ee80d['setTags'](_0x580c94[_0xa7ca('0x37')][_0xa7ca('0x3b')],_[_0xa7ca('0x4a')](_0x580c94[_0xa7ca('0x37')],[_0xa7ca('0x3b'),'id'])||{})[_0xa7ca('0x4b')](function(){return db[_0xa7ca('0x4c')][_0xa7ca('0x24')]({'attributes':['id',_0xa7ca('0x1f'),_0xa7ca('0x4d')],'where':{'id':_0x580c94['body'][_0xa7ca('0x3b')]}});})[_0xa7ca('0x27')](function(_0x361f4e){socket[_0xa7ca('0x4e')](_0xa7ca('0x4f'),{'id':Number(_0x580c94['params']['id']),'tags':_0x361f4e||[]});return{'id':Number(_0x580c94[_0xa7ca('0x2a')]['id']),'tags':_0x361f4e||[]};});}})[_0xa7ca('0x27')](respondWithResult(_0x1530ef,null))[_0xa7ca('0x28')](handleError(_0x1530ef,null));};exports[_0xa7ca('0x50')]=function(_0x5b70e8,_0x5179e1){return db[_0xa7ca('0x34')][_0xa7ca('0x35')]({'where':{'id':_0x5b70e8['params']['id']}})[_0xa7ca('0x27')](handleEntityNotFound(_0x5179e1,null))[_0xa7ca('0x27')](function(_0x3b8697){if(_0x3b8697){return _0x3b8697[_0xa7ca('0x50')](_0x5b70e8['query'][_0xa7ca('0x3b')]);}})[_0xa7ca('0x27')](respondWithStatusCode(_0x5179e1,null))[_0xa7ca('0x28')](handleError(_0x5179e1,null));};exports['download']=function(_0xbf3c83,_0x176439){var _0x486bbd=moment()[_0xa7ca('0x51')]()[_0xa7ca('0x52')]();var _0xd47033=path[_0xa7ca('0x53')](config[_0xa7ca('0x54')],_0xa7ca('0x55'),'files','tmp');var _0x55c652=path['join'](config[_0xa7ca('0x54')],_0xa7ca('0x55'),_0xa7ca('0x56'),_0xa7ca('0x57'));var _0x195b9d=path[_0xa7ca('0x53')](_0xd47033,_0x486bbd);var _0x4e1b1a=util['format'](_0xa7ca('0x58'),_0xbf3c83[_0xa7ca('0x2a')]['id'],_0x486bbd);var _0x346a29=path[_0xa7ca('0x53')](_0xd47033,_0x4e1b1a);var _0x463c85=[];_0x463c85[_0xa7ca('0x59')]({'model':db['User'],'as':_0xa7ca('0x5a'),'attributes':['id',_0xa7ca('0x5b')],'raw':!![]});_0x463c85[_0xa7ca('0x59')]({'model':db[_0xa7ca('0x5c')],'as':'Contact','attributes':['id',_0xa7ca('0x5d'),_0xa7ca('0x5e')],'raw':!![]});if(_0xbf3c83[_0xa7ca('0x25')][_0xa7ca('0x57')]){_0x463c85[_0xa7ca('0x59')]({'model':db[_0xa7ca('0x5f')],'as':_0xa7ca('0x5f'),'raw':!![]});}var _0x24c8f2=[{'model':db[_0xa7ca('0x3a')],'as':_0xa7ca('0x60'),'attributes':['id',_0xa7ca('0x37'),_0xa7ca('0x61'),'direction',_0xa7ca('0x62'),_0xa7ca('0x63')],'include':_0x463c85}];_0x24c8f2['push']({'model':db[_0xa7ca('0x64')],'as':'Account','attributes':['id',_0xa7ca('0x1f')]});_0x24c8f2[_0xa7ca('0x59')]({'model':db[_0xa7ca('0x5a')],'as':_0xa7ca('0x65'),'attributes':['id','fullname']});return db[_0xa7ca('0x34')]['find']({'where':{'id':_0xbf3c83[_0xa7ca('0x2a')]['id']},'include':_0x24c8f2})[_0xa7ca('0x27')](handleEntityNotFound(_0x176439,null))[_0xa7ca('0x27')](function(_0x5946a0){if(_0x5946a0){var _0x314ded=_0x5946a0[_0xa7ca('0x66')]({'plain':!![]});fs[_0xa7ca('0x67')](_0x195b9d);var _0x242fd2={'channel':_0xa7ca('0x68'),'account':_0x314ded[_0xa7ca('0x69')][_0xa7ca('0x1f')],'agent':_0x314ded[_0xa7ca('0x65')]?_0x314ded[_0xa7ca('0x65')][_0xa7ca('0x5b')]:'N.A.','createdAt':moment(_0x314ded[_0xa7ca('0x61')])[_0xa7ca('0x6a')](_0xa7ca('0x46'))[_0xa7ca('0x52')](),'closedAt':_0x314ded[_0xa7ca('0x6b')]?moment(_0x314ded[_0xa7ca('0x6c')])[_0xa7ca('0x6a')](_0xa7ca('0x46'))[_0xa7ca('0x52')]():'','disposition':_0x314ded['disposition'],'messages':_(_0x314ded[_0xa7ca('0x60')])[_0xa7ca('0x43')]({'secret':![]})[_0xa7ca('0x21')](function(_0x110f5d){if(_0x110f5d['Attachment']){var _0x25dc43=path['join'](_0x55c652,_0x110f5d[_0xa7ca('0x5f')][_0xa7ca('0x6d')]);if(fs[_0xa7ca('0x6e')](_0x25dc43)){fs[_0xa7ca('0x6f')](_0x25dc43)[_0xa7ca('0x70')](fs['createWriteStream'](path[_0xa7ca('0x53')](_0x195b9d,_0x110f5d['Attachment'][_0xa7ca('0x6d')])));}}return{'date':moment(_0x110f5d['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xa7ca('0x52')](),'sender':_0x110f5d[_0xa7ca('0x71')]===_0xa7ca('0x72')?_0x110f5d['User']?_0x110f5d[_0xa7ca('0x5a')][_0xa7ca('0x5b')]:_0xa7ca('0x73'):_0x110f5d[_0xa7ca('0x74')][_0xa7ca('0x5d')]+(_0x110f5d[_0xa7ca('0x74')][_0xa7ca('0x5e')]?'\x20'+_0x110f5d[_0xa7ca('0x74')]['lastName']:''),'body':_0x110f5d[_0xa7ca('0x5f')]?_0x110f5d[_0xa7ca('0x5f')][_0xa7ca('0x6d')]:_0x110f5d[_0xa7ca('0x37')],'direction':_0x110f5d['direction']===_0xa7ca('0x72')?'A':'C','secret':_0x110f5d[_0xa7ca('0x62')],'read':_0x110f5d[_0xa7ca('0x63')],'attachment':_0x110f5d[_0xa7ca('0x5f')]};})['value']()};return ejs[_0xa7ca('0x75')](path[_0xa7ca('0x53')](config[_0xa7ca('0x54')],_0xa7ca('0x55'),_0xa7ca('0x76'),'downloadInteraction.ejs'),{'interaction':_0x242fd2})[_0xa7ca('0x27')](function(_0x2a60e2){var _0x1f65a1=path['join'](_0x195b9d,'transcript-'+_0x314ded['id']+'-'+_0x486bbd+_0xa7ca('0x77'));var _0x2d9dd1={'path':_0x1f65a1,'channel':_0xa7ca('0x68'),'interactionId':_0x314ded['id']};return pdf[_0xa7ca('0x78')](_0x2a60e2,_0x2d9dd1);})['then'](function(){return new BPromise(function(_0x4b9fc1,_0xb4a612){zipdir(_0x195b9d,{'saveTo':_0x346a29},function(_0x3588fb,_0x185430){if(_0x3588fb)return _0xb4a612(_0x3588fb);return _0x4b9fc1(_0x185430);});})['then'](function(){return new BPromise(function(_0x4fcd1e,_0x1c6b68){rimraf(_0x195b9d,function(_0x20694f){if(_0x20694f)_0x1c6b68(_0x20694f);return _0x4fcd1e();});});})[_0xa7ca('0x27')](function(){return _0x176439[_0xa7ca('0x79')](_0x346a29,_0x4e1b1a,function(_0x48bfd7){if(_0x48bfd7){console[_0xa7ca('0x7a')](_0xa7ca('0x7b'),_0x48bfd7);}else{fs[_0xa7ca('0x7c')](_0x346a29);}});});});}else{return _0x176439[_0xa7ca('0x11')](0xc8);}})['catch'](handleError(_0x176439,null));};
\ No newline at end of file
+var _0x521b=['moment','bluebird','util','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','register','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','WhatsappInteraction','rawAttributes','type','key','getOptions','findAll','query','user','catch','show','params','model','keys','filters','intersection','attributes','fields','includeAll','include','options','create','body','find','describe','addMessage','WhatsappMessage','omit','ids','getMessages','findOne','length','hasOwnProperty','nolimit','order','sort','where','WhatsappInteractionId','filter','merge','$gte','split','format','rows','addTags','setTags','spread','color','emit','removeTags','unix','toString','root','server','files','tmp','join','attachments','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','direction','read','Account','Owner','get','mkdirSync','Whatsapp','N.A.','YYYY-MM-DD\x20HH:mm:ss','disposition','basename','existsSync','pipe','createWriteStream','createdAt','out','System','secret','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','unlinkSync','zip-dir'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x521b,0xfd));var _0xb521=function(_0x25e812,_0x1342a2){_0x25e812=_0x25e812-0x0;var _0x727c56=_0x521b[_0x25e812];return _0x727c56;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xb521('0x0'));var moment=require(_0xb521('0x1'));var BPromise=require(_0xb521('0x2'));var util=require(_0xb521('0x3'));var path=require('path');var ejs=require(_0xb521('0x4'));var fs=require('fs');var _=require(_0xb521('0x5'));var Redis=require(_0xb521('0x6'));var interaction=require(_0xb521('0x7'));var qs=require(_0xb521('0x8'));var pdf=require('../../components/export/pdf');var logger=require(_0xb521('0x9'))(_0xb521('0xa'));var config=require(_0xb521('0xb'));var db=require(_0xb521('0xc'))['db'];config['redis']=_['defaults'](config[_0xb521('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./whatsappInteraction.socket')[_0xb521('0xe')](socket);function respondWithStatusCode(_0xe8d55f,_0x1bd573){_0x1bd573=_0x1bd573||0xcc;return function(_0xb1e8fd){if(_0xb1e8fd){return _0xe8d55f[_0xb521('0xf')](_0x1bd573);}return _0xe8d55f['status'](_0x1bd573)[_0xb521('0x10')]();};}function respondWithResult(_0x605469,_0x396e09){_0x396e09=_0x396e09||0xc8;return function(_0x219ad4){if(_0x219ad4){return _0x605469[_0xb521('0x11')](_0x396e09)[_0xb521('0x12')](_0x219ad4);}};}function respondWithFilteredResult(_0x2c2c7a,_0x491c78){return function(_0x588279){if(_0x588279){var _0x2353a7=typeof _0x491c78[_0xb521('0x13')]==='undefined'&&typeof _0x491c78[_0xb521('0x14')]===_0xb521('0x15');var _0x44285=_0x588279[_0xb521('0x16')];var _0x16766c=_0x2353a7?0x0:_0x491c78[_0xb521('0x13')];var _0x1ab31b=_0x2353a7?_0x588279['count']:_0x491c78[_0xb521('0x13')]+_0x491c78['limit'];var _0x344818;if(_0x1ab31b>=_0x44285){_0x1ab31b=_0x44285;_0x344818=0xc8;}else{_0x344818=0xce;}_0x2c2c7a[_0xb521('0x11')](_0x344818);return _0x2c2c7a[_0xb521('0x17')](_0xb521('0x18'),_0x16766c+'-'+_0x1ab31b+'/'+_0x44285)['json'](_0x588279);}return null;};}function saveUpdates(_0xea0b12){return function(_0x223aab){if(_0x223aab){return _0x223aab[_0xb521('0x19')](_0xea0b12)[_0xb521('0x1a')](function(_0x47e452){return _0x47e452;});}return null;};}function removeEntity(_0x187409){return function(_0x50ef1f){if(_0x50ef1f){return _0x50ef1f[_0xb521('0x1b')]()[_0xb521('0x1a')](function(){_0x187409[_0xb521('0x11')](0xcc)[_0xb521('0x10')]();});}};}function handleEntityNotFound(_0x43b26b){return function(_0x539fff){if(!_0x539fff){_0x43b26b[_0xb521('0xf')](0x194);}return _0x539fff;};}function handleError(_0x4bddfc,_0x469b24){_0x469b24=_0x469b24||0x1f4;return function(_0x49f440){logger[_0xb521('0x1c')](_0x49f440[_0xb521('0x1d')]);if(_0x49f440[_0xb521('0x1e')]){delete _0x49f440['name'];}_0x4bddfc[_0xb521('0x11')](_0x469b24)[_0xb521('0x1f')](_0x49f440);};}exports[_0xb521('0x20')]=function(_0xec700b,_0x214125){var _0x2135f1={};var _0x201eb7=_[_0xb521('0x21')](db[_0xb521('0x22')][_0xb521('0x23')],function(_0x23b19a){return{'name':_0x23b19a['fieldName'],'type':_0x23b19a[_0xb521('0x24')][_0xb521('0x25')]};});_0x2135f1=qs[_0xb521('0x26')](_0x201eb7,_0xec700b);return interaction[_0xb521('0x27')]('whatsapp',_0xec700b[_0xb521('0x28')],_0xec700b[_0xb521('0x29')],_0x2135f1,_0x201eb7)['then'](respondWithFilteredResult(_0x214125,_0x2135f1))[_0xb521('0x2a')](handleError(_0x214125,null));};exports[_0xb521('0x2b')]=function(_0x46a121,_0x2b3110){var _0x388f13={'raw':![],'where':{'id':_0x46a121[_0xb521('0x2c')]['id']}},_0x413532={};_0x413532[_0xb521('0x2d')]=_[_0xb521('0x2e')](db[_0xb521('0x22')]['rawAttributes']);_0x413532[_0xb521('0x28')]=_[_0xb521('0x2e')](_0x46a121[_0xb521('0x28')]);_0x413532[_0xb521('0x2f')]=_[_0xb521('0x30')](_0x413532[_0xb521('0x2d')],_0x413532[_0xb521('0x28')]);_0x388f13[_0xb521('0x31')]=_[_0xb521('0x30')](_0x413532[_0xb521('0x2d')],qs[_0xb521('0x32')](_0x46a121[_0xb521('0x28')]['fields']));_0x388f13[_0xb521('0x31')]=_0x388f13['attributes']['length']?_0x388f13['attributes']:_0x413532[_0xb521('0x2d')];if(_0x46a121[_0xb521('0x28')][_0xb521('0x33')]){_0x388f13[_0xb521('0x34')]=[{'all':!![]}];}_0x388f13=_['merge']({},_0x388f13,_0x46a121[_0xb521('0x35')]);return db['WhatsappInteraction']['find'](_0x388f13)['then'](handleEntityNotFound(_0x2b3110,null))[_0xb521('0x1a')](respondWithResult(_0x2b3110,null))['catch'](handleError(_0x2b3110,null));};exports[_0xb521('0x36')]=function(_0x2ca3bd,_0x5332d7){return db[_0xb521('0x22')]['create'](_0x2ca3bd[_0xb521('0x37')],{})[_0xb521('0x1a')](respondWithResult(_0x5332d7,0xc9))[_0xb521('0x2a')](handleError(_0x5332d7,null));};exports['update']=function(_0x103099,_0x40a355){if(_0x103099[_0xb521('0x37')]['id']){delete _0x103099[_0xb521('0x37')]['id'];}return db[_0xb521('0x22')][_0xb521('0x38')]({'where':{'id':_0x103099[_0xb521('0x2c')]['id']}})[_0xb521('0x1a')](handleEntityNotFound(_0x40a355,null))[_0xb521('0x1a')](saveUpdates(_0x103099[_0xb521('0x37')],null))[_0xb521('0x1a')](respondWithResult(_0x40a355,null))[_0xb521('0x2a')](handleError(_0x40a355,null));};exports[_0xb521('0x1b')]=function(_0x4da17c,_0x6abf22){return db[_0xb521('0x22')][_0xb521('0x38')]({'where':{'id':_0x4da17c[_0xb521('0x2c')]['id']}})[_0xb521('0x1a')](handleEntityNotFound(_0x6abf22,null))['then'](removeEntity(_0x6abf22,null))[_0xb521('0x2a')](handleError(_0x6abf22,null));};exports[_0xb521('0x39')]=function(_0x511c7a,_0x279d2f){return db[_0xb521('0x22')][_0xb521('0x39')]()[_0xb521('0x1a')](respondWithResult(_0x279d2f,null))[_0xb521('0x2a')](handleError(_0x279d2f,null));};exports[_0xb521('0x3a')]=function(_0x294931,_0x1c8924){return db[_0xb521('0x3b')][_0xb521('0x38')]({'where':{'id':_0x294931[_0xb521('0x2c')]['id']}})[_0xb521('0x1a')](handleEntityNotFound(_0x1c8924,null))['then'](function(_0x46fd14){if(_0x46fd14){return _0x46fd14[_0xb521('0x3a')](_0x294931[_0xb521('0x37')]['ids'],_[_0xb521('0x3c')](_0x294931[_0xb521('0x37')],[_0xb521('0x3d'),'id'])||{});}})[_0xb521('0x1a')](respondWithResult(_0x1c8924,null))[_0xb521('0x2a')](handleError(_0x1c8924,null));};exports[_0xb521('0x3e')]=function(_0x2c5266,_0xea977){var _0x5aaf0c={'raw':![],'where':{}};var _0x592709={};var _0x47156d={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xb521('0x3f')]({'where':{'id':_0x2c5266[_0xb521('0x2c')]['id']}})[_0xb521('0x1a')](handleEntityNotFound(_0xea977,null))['then'](function(_0x3dce4b){if(_0x3dce4b){_0x592709[_0xb521('0x2d')]=_[_0xb521('0x2e')](db['WhatsappMessage']['rawAttributes']);_0x592709[_0xb521('0x28')]=_[_0xb521('0x2e')](_0x2c5266[_0xb521('0x28')]);_0x592709[_0xb521('0x2f')]=_[_0xb521('0x30')](_0x592709[_0xb521('0x2d')],_0x592709['query']);_0x5aaf0c['attributes']=_[_0xb521('0x30')](_0x592709[_0xb521('0x2d')],qs['fields'](_0x2c5266[_0xb521('0x28')][_0xb521('0x32')]));_0x5aaf0c[_0xb521('0x31')]=_0x5aaf0c[_0xb521('0x31')][_0xb521('0x40')]?_0x5aaf0c['attributes']:_0x592709[_0xb521('0x2d')];if(!_0x2c5266[_0xb521('0x28')][_0xb521('0x41')](_0xb521('0x42'))){_0x5aaf0c[_0xb521('0x14')]=qs[_0xb521('0x14')](_0x2c5266[_0xb521('0x28')][_0xb521('0x14')]);_0x5aaf0c[_0xb521('0x13')]=qs[_0xb521('0x13')](_0x2c5266[_0xb521('0x28')][_0xb521('0x13')]);}_0x5aaf0c[_0xb521('0x43')]=qs[_0xb521('0x44')](_0x2c5266[_0xb521('0x28')][_0xb521('0x44')]);_0x5aaf0c[_0xb521('0x45')]=qs[_0xb521('0x2f')](_['pick'](_0x2c5266[_0xb521('0x28')],_0x592709[_0xb521('0x2f')]));_0x5aaf0c['where'][_0xb521('0x46')]=_0x3dce4b['id'];if(_0x2c5266[_0xb521('0x28')][_0xb521('0x47')]){_0x5aaf0c[_0xb521('0x45')]=_[_0xb521('0x48')](_0x5aaf0c['where'],{'$or':_[_0xb521('0x21')](_0x5aaf0c[_0xb521('0x31')],function(_0x5c7c90){var _0x20a496={};_0x20a496[_0x5c7c90]={'$like':'%'+_0x2c5266['query'][_0xb521('0x47')]+'%'};return _0x20a496;})});}if(_0x2c5266[_0xb521('0x28')]['$gte']){var _0x32ef73=_0x2c5266['query'][_0xb521('0x49')][_0xb521('0x4a')](',');var _0x26cee0={};_0x26cee0[_0x32ef73[0x0]]={'$gte':moment(_0x32ef73[0x1])[_0xb521('0x4b')]('YYYY-MM-DD\x20HH:mm:ss')};_0x5aaf0c[_0xb521('0x45')]=_[_0xb521('0x48')](_0x5aaf0c[_0xb521('0x45')],_0x26cee0);}_0x5aaf0c=_['merge']({},_0x5aaf0c,_0x2c5266[_0xb521('0x35')]);return db[_0xb521('0x3b')]['count']({'where':_0x5aaf0c[_0xb521('0x45')]})[_0xb521('0x1a')](function(_0x3fd35d){_0x47156d['count']=_0x3fd35d;if(_0x2c5266['query'][_0xb521('0x33')]){_0x5aaf0c[_0xb521('0x34')]=[{'all':!![]}];}return db[_0xb521('0x3b')][_0xb521('0x27')](_0x5aaf0c);})[_0xb521('0x1a')](function(_0x4bfb30){_0x47156d[_0xb521('0x4c')]=_0x4bfb30;return _0x47156d;});}})[_0xb521('0x1a')](respondWithFilteredResult(_0xea977,_0x5aaf0c))[_0xb521('0x2a')](handleError(_0xea977,null));};exports[_0xb521('0x4d')]=function(_0x549252,_0x2b1af7){return db[_0xb521('0x22')][_0xb521('0x38')]({'where':{'id':_0x549252[_0xb521('0x2c')]['id']}})[_0xb521('0x1a')](handleEntityNotFound(_0x2b1af7,null))[_0xb521('0x1a')](function(_0x370996){if(_0x370996){return _0x370996[_0xb521('0x4e')](_0x549252[_0xb521('0x37')][_0xb521('0x3d')],_[_0xb521('0x3c')](_0x549252[_0xb521('0x37')],[_0xb521('0x3d'),'id'])||{})[_0xb521('0x4f')](function(){return db['Tag'][_0xb521('0x27')]({'attributes':['id',_0xb521('0x1e'),_0xb521('0x50')],'where':{'id':_0x549252['body']['ids']}});})[_0xb521('0x1a')](function(_0x46d43a){socket[_0xb521('0x51')]('whatsappInteractionTags:save',{'id':Number(_0x549252['params']['id']),'tags':_0x46d43a||[]});return{'id':Number(_0x549252[_0xb521('0x2c')]['id']),'tags':_0x46d43a||[]};});}})[_0xb521('0x1a')](respondWithResult(_0x2b1af7,null))['catch'](handleError(_0x2b1af7,null));};exports[_0xb521('0x52')]=function(_0x144b46,_0x27732e){return db[_0xb521('0x22')][_0xb521('0x38')]({'where':{'id':_0x144b46['params']['id']}})['then'](handleEntityNotFound(_0x27732e,null))[_0xb521('0x1a')](function(_0x5878f1){if(_0x5878f1){return _0x5878f1['removeTags'](_0x144b46[_0xb521('0x28')][_0xb521('0x3d')]);}})[_0xb521('0x1a')](respondWithStatusCode(_0x27732e,null))['catch'](handleError(_0x27732e,null));};exports['download']=function(_0x40961e,_0x48c82f){var _0x2b1934=moment()[_0xb521('0x53')]()[_0xb521('0x54')]();var _0x58a0af=path['join'](config[_0xb521('0x55')],_0xb521('0x56'),_0xb521('0x57'),_0xb521('0x58'));var _0x1f4b52=path[_0xb521('0x59')](config[_0xb521('0x55')],_0xb521('0x56'),_0xb521('0x57'),_0xb521('0x5a'));var _0x409a18=path[_0xb521('0x59')](_0x58a0af,_0x2b1934);var _0x28b00f=util[_0xb521('0x4b')]('transcript-%d-%s.zip',_0x40961e[_0xb521('0x2c')]['id'],_0x2b1934);var _0x367a0d=path[_0xb521('0x59')](_0x58a0af,_0x28b00f);var _0x34eb43=[];_0x34eb43[_0xb521('0x5b')]({'model':db['User'],'as':_0xb521('0x5c'),'attributes':['id',_0xb521('0x5d')],'raw':!![]});_0x34eb43[_0xb521('0x5b')]({'model':db[_0xb521('0x5e')],'as':_0xb521('0x5f'),'attributes':['id',_0xb521('0x60'),_0xb521('0x61')],'raw':!![]});if(_0x40961e[_0xb521('0x28')][_0xb521('0x5a')]){_0x34eb43[_0xb521('0x5b')]({'model':db['Attachment'],'as':_0xb521('0x62'),'raw':!![]});}var _0x44f6b4=[{'model':db['WhatsappMessage'],'as':_0xb521('0x63'),'attributes':['id',_0xb521('0x37'),'createdAt',_0xb521('0x64'),'secret',_0xb521('0x65')],'include':_0x34eb43}];_0x44f6b4['push']({'model':db['WhatsappAccount'],'as':_0xb521('0x66'),'attributes':['id',_0xb521('0x1e')]});_0x44f6b4[_0xb521('0x5b')]({'model':db['User'],'as':_0xb521('0x67'),'attributes':['id',_0xb521('0x5d')]});return db[_0xb521('0x22')][_0xb521('0x38')]({'where':{'id':_0x40961e['params']['id']},'include':_0x44f6b4})[_0xb521('0x1a')](handleEntityNotFound(_0x48c82f,null))['then'](function(_0x4261b8){if(_0x4261b8){var _0x4344ab=_0x4261b8[_0xb521('0x68')]({'plain':!![]});fs[_0xb521('0x69')](_0x409a18);var _0x464675={'channel':_0xb521('0x6a'),'account':_0x4344ab[_0xb521('0x66')][_0xb521('0x1e')],'agent':_0x4344ab['Owner']?_0x4344ab[_0xb521('0x67')][_0xb521('0x5d')]:_0xb521('0x6b'),'createdAt':moment(_0x4344ab['createdAt'])[_0xb521('0x4b')](_0xb521('0x6c'))[_0xb521('0x54')](),'closedAt':_0x4344ab['closed']?moment(_0x4344ab['closedAt'])[_0xb521('0x4b')](_0xb521('0x6c'))[_0xb521('0x54')]():'','disposition':_0x4344ab[_0xb521('0x6d')],'messages':_(_0x4344ab[_0xb521('0x63')])['filter']({'secret':![]})[_0xb521('0x21')](function(_0xbd8274){if(_0xbd8274[_0xb521('0x62')]){var _0x3af877=path[_0xb521('0x59')](_0x1f4b52,_0xbd8274[_0xb521('0x62')][_0xb521('0x6e')]);if(fs[_0xb521('0x6f')](_0x3af877)){fs['createReadStream'](_0x3af877)[_0xb521('0x70')](fs[_0xb521('0x71')](path[_0xb521('0x59')](_0x409a18,_0xbd8274['Attachment'][_0xb521('0x6e')])));}}return{'date':moment(_0xbd8274[_0xb521('0x72')])[_0xb521('0x4b')](_0xb521('0x6c'))['toString'](),'sender':_0xbd8274['direction']===_0xb521('0x73')?_0xbd8274[_0xb521('0x5c')]?_0xbd8274[_0xb521('0x5c')][_0xb521('0x5d')]:_0xb521('0x74'):_0xbd8274[_0xb521('0x5f')][_0xb521('0x60')]+(_0xbd8274[_0xb521('0x5f')][_0xb521('0x61')]?'\x20'+_0xbd8274[_0xb521('0x5f')][_0xb521('0x61')]:''),'body':_0xbd8274[_0xb521('0x62')]?_0xbd8274['Attachment'][_0xb521('0x6e')]:_0xbd8274['body'],'direction':_0xbd8274[_0xb521('0x64')]===_0xb521('0x73')?'A':'C','secret':_0xbd8274[_0xb521('0x75')],'read':_0xbd8274[_0xb521('0x65')],'attachment':_0xbd8274[_0xb521('0x62')]};})[_0xb521('0x76')]()};return ejs[_0xb521('0x77')](path[_0xb521('0x59')](config[_0xb521('0x55')],'server',_0xb521('0x78'),_0xb521('0x79')),{'interaction':_0x464675})[_0xb521('0x1a')](function(_0x2d3a28){var _0x3dd8ad=path['join'](_0x409a18,_0xb521('0x7a')+_0x4344ab['id']+'-'+_0x2b1934+_0xb521('0x7b'));var _0x25b21e={'path':_0x3dd8ad,'channel':_0xb521('0x6a'),'interactionId':_0x4344ab['id']};return pdf[_0xb521('0x7c')](_0x2d3a28,_0x25b21e);})[_0xb521('0x1a')](function(){return new BPromise(function(_0x181624,_0x5859bb){zipdir(_0x409a18,{'saveTo':_0x367a0d},function(_0x5a297a,_0x11390e){if(_0x5a297a)return _0x5859bb(_0x5a297a);return _0x181624(_0x11390e);});})[_0xb521('0x1a')](function(){return new BPromise(function(_0x5db2e1,_0x387b26){rimraf(_0x409a18,function(_0x2bdd67){if(_0x2bdd67)_0x387b26(_0x2bdd67);return _0x5db2e1();});});})[_0xb521('0x1a')](function(){return _0x48c82f[_0xb521('0x7d')](_0x367a0d,_0x28b00f,function(_0x3ac38f){if(_0x3ac38f){console['log']('err',_0x3ac38f);}else{fs[_0xb521('0x7e')](_0x367a0d);}});});});}else{return _0x48c82f[_0xb521('0xf')](0xc8);}})['catch'](handleError(_0x48c82f,null));};
\ No newline at end of file
index 6954315..a963099 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4584=['unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','WhatsappInteraction','../../mysqldb','WhatsappMessage','update','remove','getUsers','then','Users','map','findAll','setDataValue'];(function(_0x1428d9,_0xded63c){var _0x438019=function(_0x31c37d){while(--_0x31c37d){_0x1428d9['push'](_0x1428d9['shift']());}};_0x438019(++_0xded63c);}(_0x4584,0x1cf));var _0x4458=function(_0x1ee04b,_0x554b3d){_0x1ee04b=_0x1ee04b-0x0;var _0x412848=_0x4584[_0x1ee04b];return _0x412848;};'use strict';var EventEmitter=require(_0x4458('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0x4458('0x1')];var WhatsappMessage=require(_0x4458('0x2'))['db'][_0x4458('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x4458('0x4'),'afterDestroy':_0x4458('0x5')};function emitEvent(_0x37118c){return function(_0x3d12ec,_0x380085,_0xbf85ca){_0x3d12ec[_0x4458('0x6')]({'attributes':['id'],'raw':!![]})[_0x4458('0x7')](function(_0x102b5f){_0x3d12ec['setDataValue'](_0x4458('0x8'),_0x102b5f[_0x4458('0x9')](function(_0x107f1c){return{'id':_0x107f1c['id']};}));return WhatsappMessage[_0x4458('0xa')]({'where':{'WhatsappInteractionId':_0x3d12ec['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4458('0x7')](function(_0xfccdb6){_0x3d12ec[_0x4458('0xb')](_0x4458('0xc'),_0xfccdb6[_0x4458('0xd')]);WhatsappInteractionEvents['emit'](_0x37118c+':'+_0x3d12ec['id'],_0x3d12ec);WhatsappInteractionEvents[_0x4458('0xe')](_0x37118c,_0x3d12ec);_0xbf85ca(null);})[_0x4458('0xf')](_0xbf85ca(null));};}for(var e in events){if(events[_0x4458('0x10')](e)){var event=events[e];WhatsappInteraction[_0x4458('0x11')](e,emitEvent(event));}}module[_0x4458('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xf2a6=['update','remove','getUsers','then','Users','map','findAll','unreadMessages','length','emit','catch','hook','exports','events','WhatsappMessage','save'];(function(_0x11f37a,_0x73cf3){var _0x14f364=function(_0x3c9b1b){while(--_0x3c9b1b){_0x11f37a['push'](_0x11f37a['shift']());}};_0x14f364(++_0x73cf3);}(_0xf2a6,0x13d));var _0x6f2a=function(_0x36ed36,_0x375b9b){_0x36ed36=_0x36ed36-0x0;var _0x234b51=_0xf2a6[_0x36ed36];return _0x234b51;};'use strict';var EventEmitter=require(_0x6f2a('0x0'));var WhatsappInteraction=require('../../mysqldb')['db']['WhatsappInteraction'];var WhatsappMessage=require('../../mysqldb')['db'][_0x6f2a('0x1')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6f2a('0x2'),'afterUpdate':_0x6f2a('0x3'),'afterDestroy':_0x6f2a('0x4')};function emitEvent(_0x32ddb6){return function(_0x1b4af5,_0x21a7db,_0x4684f4){_0x1b4af5[_0x6f2a('0x5')]({'attributes':['id'],'raw':!![]})[_0x6f2a('0x6')](function(_0x424ebd){_0x1b4af5['setDataValue'](_0x6f2a('0x7'),_0x424ebd[_0x6f2a('0x8')](function(_0x372663){return{'id':_0x372663['id']};}));return WhatsappMessage[_0x6f2a('0x9')]({'where':{'WhatsappInteractionId':_0x1b4af5['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2fabc5){_0x1b4af5['setDataValue'](_0x6f2a('0xa'),_0x2fabc5[_0x6f2a('0xb')]);WhatsappInteractionEvents[_0x6f2a('0xc')](_0x32ddb6+':'+_0x1b4af5['id'],_0x1b4af5);WhatsappInteractionEvents['emit'](_0x32ddb6,_0x1b4af5);_0x4684f4(null);})[_0x6f2a('0xd')](_0x4684f4(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction[_0x6f2a('0xe')](e,emitEvent(event));}}module[_0x6f2a('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
index 5011ddd..89d17ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeae4=['request-promise','path','rimraf','../../config/environment','exports','define','WhatsappInteraction','whatsapp_interactions','changed','closed','format','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x46fd1f,_0x488f41){var _0x53d507=function(_0x27ebc5){while(--_0x27ebc5){_0x46fd1f['push'](_0x46fd1f['shift']());}};_0x53d507(++_0x488f41);}(_0xeae4,0xe8));var _0x4eae=function(_0x5e14cc,_0x2f0ae2){_0x5e14cc=_0x5e14cc-0x0;var _0x4cb34c=_0xeae4[_0x5e14cc];return _0x4cb34c;};'use strict';var _=require(_0x4eae('0x0'));var util=require(_0x4eae('0x1'));var logger=require(_0x4eae('0x2'))(_0x4eae('0x3'));var moment=require(_0x4eae('0x4'));var BPromise=require(_0x4eae('0x5'));var rp=require(_0x4eae('0x6'));var fs=require('fs');var path=require(_0x4eae('0x7'));var rimraf=require(_0x4eae('0x8'));var config=require(_0x4eae('0x9'));var attributes=require('./whatsappInteraction.attributes');module[_0x4eae('0xa')]=function(_0x59cc97,_0x2e5d79){return _0x59cc97[_0x4eae('0xb')](_0x4eae('0xc'),attributes,{'tableName':_0x4eae('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4c8b35,_0x1c8370,_0x4f7adc){if(_0x4c8b35[_0x4eae('0xe')](_0x4eae('0xf'))){_0x4c8b35['closedAt']=moment()[_0x4eae('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x4f7adc(null,_0x4c8b35);}}});};
\ No newline at end of file
+var _0x5b2a=['bluebird','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','whatsapp_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment'];(function(_0x3e3ac9,_0x403f3a){var _0x285f73=function(_0x26242c){while(--_0x26242c){_0x3e3ac9['push'](_0x3e3ac9['shift']());}};_0x285f73(++_0x403f3a);}(_0x5b2a,0x1bd));var _0xa5b2=function(_0x45ae0d,_0x1ea3b9){_0x45ae0d=_0x45ae0d-0x0;var _0x371826=_0x5b2a[_0x45ae0d];return _0x371826;};'use strict';var _=require(_0xa5b2('0x0'));var util=require(_0xa5b2('0x1'));var logger=require(_0xa5b2('0x2'))(_0xa5b2('0x3'));var moment=require(_0xa5b2('0x4'));var BPromise=require(_0xa5b2('0x5'));var rp=require(_0xa5b2('0x6'));var fs=require('fs');var path=require(_0xa5b2('0x7'));var rimraf=require(_0xa5b2('0x8'));var config=require(_0xa5b2('0x9'));var attributes=require(_0xa5b2('0xa'));module[_0xa5b2('0xb')]=function(_0x221ccd,_0x299b16){return _0x221ccd[_0xa5b2('0xc')]('WhatsappInteraction',attributes,{'tableName':_0xa5b2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x49f2e7,_0x14b66e,_0x33fd3e){if(_0x49f2e7['changed'](_0xa5b2('0xe'))){_0x49f2e7[_0xa5b2('0xf')]=moment()[_0xa5b2('0x10')](_0xa5b2('0x11'));}_0x33fd3e(null,_0x49f2e7);}}});};
\ No newline at end of file
index 8c40a02..7a20ed4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae6=['./whatsappInteraction.socket','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','body','raw','options','attributes','limit','find','where','addTags','ids','omit','spread','AddTags','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter'];(function(_0x157085,_0x59346a){var _0x3180c8=function(_0x25a0a0){while(--_0x25a0a0){_0x157085['push'](_0x157085['shift']());}};_0x3180c8(++_0x59346a);}(_0x6ae6,0x1c0));var _0x66ae=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x6ae6[_0x4243a3];return _0x1b2a33;};'use strict';var _=require('lodash');var util=require(_0x66ae('0x0'));var moment=require(_0x66ae('0x1'));var BPromise=require('bluebird');var rs=require(_0x66ae('0x2'));var fs=require('fs');var Redis=require(_0x66ae('0x3'));var db=require(_0x66ae('0x4'))['db'];var utils=require(_0x66ae('0x5'));var logger=require(_0x66ae('0x6'))('rpc');var config=require(_0x66ae('0x7'));var jayson=require(_0x66ae('0x8'));var client=jayson[_0x66ae('0x9')][_0x66ae('0xa')]({'port':0x232a});config[_0x66ae('0xb')]=_[_0x66ae('0xc')](config[_0x66ae('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x66ae('0xd'))(new Redis(config[_0x66ae('0xb')]));require(_0x66ae('0xe'))['register'](socket);function respondWithRpcPromise(_0x32a029,_0x1743e1,_0x1ddfd9){return new BPromise(function(_0x412531,_0x2af4ff){return client[_0x66ae('0xf')](_0x32a029,_0x1ddfd9)[_0x66ae('0x10')](function(_0x4f47e3){logger[_0x66ae('0x11')](_0x66ae('0x12'),_0x1743e1,_0x66ae('0x13'));logger[_0x66ae('0x14')](_0x66ae('0x15'),_0x1743e1,_0x66ae('0x13'),JSON[_0x66ae('0x16')](_0x4f47e3));if(_0x4f47e3[_0x66ae('0x17')]){if(_0x4f47e3[_0x66ae('0x17')][_0x66ae('0x18')]===0x1f4){logger['error'](_0x66ae('0x12'),_0x1743e1,_0x4f47e3[_0x66ae('0x17')]['message']);return _0x2af4ff(_0x4f47e3['error'][_0x66ae('0x19')]);}logger[_0x66ae('0x17')](_0x66ae('0x12'),_0x1743e1,_0x4f47e3[_0x66ae('0x17')][_0x66ae('0x19')]);return _0x412531(_0x4f47e3['error'][_0x66ae('0x19')]);}else{logger[_0x66ae('0x11')](_0x66ae('0x12'),_0x1743e1,_0x66ae('0x13'));_0x412531(_0x4f47e3[_0x66ae('0x1a')][_0x66ae('0x19')]);}})[_0x66ae('0x1b')](function(_0x46b6ae){logger[_0x66ae('0x17')](_0x66ae('0x12'),_0x1743e1,_0x46b6ae);_0x2af4ff(_0x46b6ae);});});}exports[_0x66ae('0x1c')]=function(_0x1e121f){var _0x5e746e=this;return new Promise(function(_0x5a9ab3,_0x2ac3b7){return db[_0x66ae('0x1d')]['update'](_0x1e121f[_0x66ae('0x1e')],{'raw':_0x1e121f['options']?_0x1e121f['options'][_0x66ae('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e121f[_0x66ae('0x20')]?_0x1e121f[_0x66ae('0x20')]['where']||null:null,'attributes':_0x1e121f['options']?_0x1e121f[_0x66ae('0x20')][_0x66ae('0x21')]||null:null,'limit':_0x1e121f[_0x66ae('0x20')]?_0x1e121f[_0x66ae('0x20')][_0x66ae('0x22')]||null:null})[_0x66ae('0x10')](function(_0x37c5e4){logger[_0x66ae('0x11')]('UpdateWhatsappInteraction',_0x1e121f);logger[_0x66ae('0x14')](_0x66ae('0x1c'),_0x1e121f,JSON[_0x66ae('0x16')](_0x37c5e4));_0x5a9ab3(_0x37c5e4);})[_0x66ae('0x1b')](function(_0x41f512){logger[_0x66ae('0x17')](_0x66ae('0x1c'),_0x41f512[_0x66ae('0x19')],_0x1e121f);_0x2ac3b7(_0x5e746e[_0x66ae('0x17')](0x1f4,_0x41f512[_0x66ae('0x19')]));});});};exports['AddTagsToWhatsappInteraction']=function(_0x12753e){return new Promise(function(_0xf480e4,_0x21e88f){return db[_0x66ae('0x1d')][_0x66ae('0x23')]({'where':_0x12753e[_0x66ae('0x20')]?_0x12753e[_0x66ae('0x20')][_0x66ae('0x24')]||null:null})['then'](function(_0x45234d){if(_0x45234d){return _0x45234d[_0x66ae('0x25')](_0x12753e[_0x66ae('0x1e')][_0x66ae('0x26')],_[_0x66ae('0x27')](_0x12753e['body'],[_0x66ae('0x26'),'id'])||{});}})[_0x66ae('0x28')](function(_0x3a4630){logger[_0x66ae('0x11')](_0x66ae('0x29'),_0x12753e);logger[_0x66ae('0x14')]('AddTags',_0x12753e,JSON[_0x66ae('0x16')](_0x3a4630));_0xf480e4(_0x3a4630);})[_0x66ae('0x1b')](function(_0x355486){logger[_0x66ae('0x17')](_0x66ae('0x29'),_0x355486['message'],_0x12753e);_0x21e88f(_this[_0x66ae('0x17')](0x1f4,_0x355486[_0x66ae('0x19')]));});});};
\ No newline at end of file
+var _0x6529=['stringify','error','code','WhatsappInteraction,\x20%s,\x20%s','message','info','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','options','raw','where','attributes','then','AddTagsToWhatsappInteraction','addTags','body','spread','AddTags','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x577f71,_0x3a8951){var _0xfec7c2=function(_0x440797){while(--_0x440797){_0x577f71['push'](_0x577f71['shift']());}};_0xfec7c2(++_0x3a8951);}(_0x6529,0x17d));var _0x9652=function(_0x16438c,_0x35d747){_0x16438c=_0x16438c-0x0;var _0x1eb905=_0x6529[_0x16438c];return _0x1eb905;};'use strict';var _=require('lodash');var util=require(_0x9652('0x0'));var moment=require(_0x9652('0x1'));var BPromise=require('bluebird');var rs=require(_0x9652('0x2'));var fs=require('fs');var Redis=require(_0x9652('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9652('0x4'));var logger=require(_0x9652('0x5'))(_0x9652('0x6'));var config=require(_0x9652('0x7'));var jayson=require(_0x9652('0x8'));var client=jayson['client'][_0x9652('0x9')]({'port':0x232a});config[_0x9652('0xa')]=_[_0x9652('0xb')](config['redis'],{'host':_0x9652('0xc'),'port':0x18eb});var socket=require(_0x9652('0xd'))(new Redis(config[_0x9652('0xa')]));require(_0x9652('0xe'))[_0x9652('0xf')](socket);function respondWithRpcPromise(_0x3489c7,_0x7799c3,_0xf5abec){return new BPromise(function(_0x164907,_0x179e27){return client['request'](_0x3489c7,_0xf5abec)['then'](function(_0x1cc5f0){logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x7799c3,_0x9652('0x10'));logger[_0x9652('0x11')](_0x9652('0x12'),_0x7799c3,'request\x20sent',JSON[_0x9652('0x13')](_0x1cc5f0));if(_0x1cc5f0[_0x9652('0x14')]){if(_0x1cc5f0[_0x9652('0x14')][_0x9652('0x15')]===0x1f4){logger[_0x9652('0x14')](_0x9652('0x16'),_0x7799c3,_0x1cc5f0['error']['message']);return _0x179e27(_0x1cc5f0['error']['message']);}logger[_0x9652('0x14')](_0x9652('0x16'),_0x7799c3,_0x1cc5f0['error'][_0x9652('0x17')]);return _0x164907(_0x1cc5f0[_0x9652('0x14')][_0x9652('0x17')]);}else{logger[_0x9652('0x18')](_0x9652('0x16'),_0x7799c3,'request\x20sent');_0x164907(_0x1cc5f0[_0x9652('0x19')][_0x9652('0x17')]);}})[_0x9652('0x1a')](function(_0x37e7ee){logger[_0x9652('0x14')](_0x9652('0x16'),_0x7799c3,_0x37e7ee);_0x179e27(_0x37e7ee);});});}exports[_0x9652('0x1b')]=function(_0x3a8ef8){var _0x2b7c9f=this;return new Promise(function(_0x1f3437,_0x3657de){return db[_0x9652('0x1c')][_0x9652('0x1d')](_0x3a8ef8['body'],{'raw':_0x3a8ef8[_0x9652('0x1e')]?_0x3a8ef8[_0x9652('0x1e')][_0x9652('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a8ef8[_0x9652('0x1e')]?_0x3a8ef8[_0x9652('0x1e')][_0x9652('0x20')]||null:null,'attributes':_0x3a8ef8[_0x9652('0x1e')]?_0x3a8ef8[_0x9652('0x1e')][_0x9652('0x21')]||null:null,'limit':_0x3a8ef8[_0x9652('0x1e')]?_0x3a8ef8[_0x9652('0x1e')]['limit']||null:null})[_0x9652('0x22')](function(_0xa6eafa){logger[_0x9652('0x18')]('UpdateWhatsappInteraction',_0x3a8ef8);logger['debug'](_0x9652('0x1b'),_0x3a8ef8,JSON[_0x9652('0x13')](_0xa6eafa));_0x1f3437(_0xa6eafa);})['catch'](function(_0x12fbc2){logger[_0x9652('0x14')](_0x9652('0x1b'),_0x12fbc2[_0x9652('0x17')],_0x3a8ef8);_0x3657de(_0x2b7c9f[_0x9652('0x14')](0x1f4,_0x12fbc2[_0x9652('0x17')]));});});};exports[_0x9652('0x23')]=function(_0x139f9a){return new Promise(function(_0x33bd09,_0x193b67){return db[_0x9652('0x1c')]['find']({'where':_0x139f9a[_0x9652('0x1e')]?_0x139f9a[_0x9652('0x1e')][_0x9652('0x20')]||null:null})[_0x9652('0x22')](function(_0x19e726){if(_0x19e726){return _0x19e726[_0x9652('0x24')](_0x139f9a[_0x9652('0x25')]['ids'],_['omit'](_0x139f9a[_0x9652('0x25')],['ids','id'])||{});}})[_0x9652('0x26')](function(_0x45eee5){logger[_0x9652('0x18')](_0x9652('0x27'),_0x139f9a);logger[_0x9652('0x11')](_0x9652('0x27'),_0x139f9a,JSON[_0x9652('0x13')](_0x45eee5));_0x33bd09(_0x45eee5);})[_0x9652('0x1a')](function(_0x41d6d5){logger[_0x9652('0x14')]('AddTags',_0x41d6d5[_0x9652('0x17')],_0x139f9a);_0x193b67(_this[_0x9652('0x14')](0x1f4,_0x41d6d5[_0x9652('0x17')]));});});};
\ No newline at end of file
index 660846e..b680adf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['whatsappInteraction:','./whatsappInteraction.events','save','remove','update','emit','removeListener','register'];(function(_0x5e59c2,_0x2ec577){var _0x56625f=function(_0x27c50d){while(--_0x27c50d){_0x5e59c2['push'](_0x5e59c2['shift']());}};_0x56625f(++_0x2ec577);}(_0x55ca,0xe1));var _0xa55c=function(_0x9cbfe0,_0x56aada){_0x9cbfe0=_0x9cbfe0-0x0;var _0x1f1534=_0x55ca[_0x9cbfe0];return _0x1f1534;};'use strict';var WhatsappInteractionEvents=require(_0xa55c('0x0'));var events=[_0xa55c('0x1'),_0xa55c('0x2'),_0xa55c('0x3')];function createListener(_0x50a011,_0x2febec){return function(_0x1a2186){_0x2febec[_0xa55c('0x4')](_0x50a011,_0x1a2186);};}function removeListener(_0x133bb2,_0xb2f47a){return function(){WhatsappInteractionEvents[_0xa55c('0x5')](_0x133bb2,_0xb2f47a);};}exports[_0xa55c('0x6')]=function(_0x18a251){for(var _0x46d179=0x0,_0x2af7e7=events['length'];_0x46d179<_0x2af7e7;_0x46d179++){var _0x287272=events[_0x46d179];var _0x6d61fc=createListener(_0xa55c('0x7')+_0x287272,_0x18a251);WhatsappInteractionEvents['on'](_0x287272,_0x6d61fc);}};
\ No newline at end of file
+var _0x25a0=['emit','removeListener','length','whatsappInteraction:','save','remove','update'];(function(_0x4d7379,_0x4b4e63){var _0x46d7cf=function(_0x53f5f0){while(--_0x53f5f0){_0x4d7379['push'](_0x4d7379['shift']());}};_0x46d7cf(++_0x4b4e63);}(_0x25a0,0x74));var _0x025a=function(_0x254634,_0x171c94){_0x254634=_0x254634-0x0;var _0x1e1063=_0x25a0[_0x254634];return _0x1e1063;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x025a('0x0'),_0x025a('0x1'),_0x025a('0x2')];function createListener(_0x26ea57,_0x3ddbdc){return function(_0x39923d){_0x3ddbdc[_0x025a('0x3')](_0x26ea57,_0x39923d);};}function removeListener(_0x3d0691,_0x2df1db){return function(){WhatsappInteractionEvents[_0x025a('0x4')](_0x3d0691,_0x2df1db);};}exports['register']=function(_0x3f7e01){for(var _0x47160e=0x0,_0x442dec=events[_0x025a('0x5')];_0x47160e<_0x442dec;_0x47160e++){var _0x240119=events[_0x47160e];var _0x30e542=createListener(_0x025a('0x6')+_0x240119,_0x3f7e01);WhatsappInteractionEvents['on'](_0x240119,_0x30e542);}};
\ No newline at end of file
index b4ac6f4..a2bc0f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46e=['/:id','show','tracked','whatsapp','create','post','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','describe'];(function(_0x1118f2,_0x5ca780){var _0xa34d18=function(_0x780911){while(--_0x780911){_0x1118f2['push'](_0x1118f2['shift']());}};_0xa34d18(++_0x5ca780);}(_0xa46e,0x65));var _0xea46=function(_0x3cf4d3,_0x48065e){_0x3cf4d3=_0x3cf4d3-0x0;var _0x4e547b=_0xa46e[_0x3cf4d3];return _0x4e547b;};'use strict';var multer=require(_0xea46('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xea46('0x1'));var express=require(_0xea46('0x2'));var router=express[_0xea46('0x3')]();var fs_extra=require(_0xea46('0x4'));var auth=require(_0xea46('0x5'));var interaction=require(_0xea46('0x6'));var config=require('../../config/environment');var controller=require('./whatsappMessage.controller');router[_0xea46('0x7')]('/',auth[_0xea46('0x8')](),controller['index']);router[_0xea46('0x7')](_0xea46('0x9'),auth[_0xea46('0x8')](),controller[_0xea46('0xa')]);router[_0xea46('0x7')](_0xea46('0xb'),auth[_0xea46('0x8')](),controller[_0xea46('0xc')]);router['post']('/',auth['isAuthenticated'](),interaction[_0xea46('0xd')](_0xea46('0xe'),'whatsappmessage:create'),controller[_0xea46('0xf')]);router[_0xea46('0x10')](_0xea46('0x11'),controller[_0xea46('0x12')]);router[_0xea46('0x13')](_0xea46('0xb'),auth[_0xea46('0x8')](),controller[_0xea46('0x14')]);router['put'](_0xea46('0x15'),auth['isAuthenticated'](),controller[_0xea46('0x16')]);router[_0xea46('0x13')](_0xea46('0x17'),auth[_0xea46('0x8')](),controller[_0xea46('0x18')]);router[_0xea46('0x19')](_0xea46('0xb'),auth[_0xea46('0x8')](),controller[_0xea46('0x1a')]);module[_0xea46('0x1b')]=router;
\ No newline at end of file
+var _0x4117=['isAuthenticated','describe','/:id','show','whatsapp','create','/:id/status','status','put','update','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','index','/describe'];(function(_0x132f91,_0xd5579e){var _0x1217b3=function(_0x1cc92d){while(--_0x1cc92d){_0x132f91['push'](_0x132f91['shift']());}};_0x1217b3(++_0xd5579e);}(_0x4117,0x14f));var _0x7411=function(_0x1a72b8,_0x23e189){_0x1a72b8=_0x1a72b8-0x0;var _0x908eae=_0x4117[_0x1a72b8];return _0x908eae;};'use strict';var multer=require(_0x7411('0x0'));var util=require(_0x7411('0x1'));var path=require(_0x7411('0x2'));var timeout=require(_0x7411('0x3'));var express=require(_0x7411('0x4'));var router=express['Router']();var fs_extra=require(_0x7411('0x5'));var auth=require(_0x7411('0x6'));var interaction=require(_0x7411('0x7'));var config=require(_0x7411('0x8'));var controller=require(_0x7411('0x9'));router[_0x7411('0xa')]('/',auth['isAuthenticated'](),controller[_0x7411('0xb')]);router[_0x7411('0xa')](_0x7411('0xc'),auth[_0x7411('0xd')](),controller[_0x7411('0xe')]);router[_0x7411('0xa')](_0x7411('0xf'),auth[_0x7411('0xd')](),controller[_0x7411('0x10')]);router['post']('/',auth[_0x7411('0xd')](),interaction['tracked'](_0x7411('0x11'),'whatsappmessage:create'),controller[_0x7411('0x12')]);router['post'](_0x7411('0x13'),controller[_0x7411('0x14')]);router[_0x7411('0x15')](_0x7411('0xf'),auth[_0x7411('0xd')](),controller[_0x7411('0x16')]);router['put']('/:id/accept',auth['isAuthenticated'](),controller[_0x7411('0x17')]);router[_0x7411('0x15')](_0x7411('0x18'),auth[_0x7411('0xd')](),controller[_0x7411('0x19')]);router[_0x7411('0x1a')](_0x7411('0xf'),auth[_0x7411('0xd')](),controller[_0x7411('0x1b')]);module[_0x7411('0x1c')]=router;
\ No newline at end of file
index bcd23fa..89a63c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa600=['exports','TEXT','BOOLEAN','ENUM','out','STRING','DATE','sequelize'];(function(_0x8ccd7f,_0x34e1ff){var _0x44a3c6=function(_0x154647){while(--_0x154647){_0x8ccd7f['push'](_0x8ccd7f['shift']());}};_0x44a3c6(++_0x34e1ff);}(_0xa600,0x1c7));var _0x0a60=function(_0x5ecadc,_0x1cf9f1){_0x5ecadc=_0x5ecadc-0x0;var _0x565037=_0xa600[_0x5ecadc];return _0x565037;};'use strict';var Sequelize=require(_0x0a60('0x0'));module[_0x0a60('0x1')]={'body':{'type':Sequelize[_0x0a60('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x0a60('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0a60('0x4')]('in',_0x0a60('0x5')),'defaultValue':_0x0a60('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x0a60('0x6')]},'readAt':{'type':Sequelize[_0x0a60('0x7')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x0a60('0x6')]},'providerResponse':{'type':Sequelize[_0x0a60('0x2')]}};
\ No newline at end of file
+var _0x5b1d=['ENUM','out','STRING','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x5b1d,0xc3));var _0xd5b1=function(_0x61b499,_0x20ea34){_0x61b499=_0x61b499-0x0;var _0x21a834=_0x5b1d[_0x61b499];return _0x21a834;};'use strict';var Sequelize=require(_0xd5b1('0x0'));module[_0xd5b1('0x1')]={'body':{'type':Sequelize[_0xd5b1('0x2')](_0xd5b1('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xd5b1('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xd5b1('0x5')]('in',_0xd5b1('0x6')),'defaultValue':_0xd5b1('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0xd5b1('0x7')](0xbe)},'phone':{'type':Sequelize[_0xd5b1('0x7')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0xd5b1('0x7')]},'providerResponse':{'type':Sequelize[_0xd5b1('0x2')]}};
\ No newline at end of file
index d57b897..cc6b6e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3d6=['WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','stack','name','send','index','WhatsappMessage','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','create','body','destroy','find','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','WhatsappInteraction','WhatsappInteractionId','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','interaction','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','fullname','email','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','contact','User','WhatsappAccount','WhatsappAccountId','debug'];(function(_0x116e08,_0x2d12f1){var _0x2eb229=function(_0x579c4e){while(--_0x579c4e){_0x116e08['push'](_0x116e08['shift']());}};_0x2eb229(++_0x2d12f1);}(_0xe3d6,0x12b));var _0x6e3d=function(_0x3cd293,_0x46a982){_0x3cd293=_0x3cd293-0x0;var _0x3ef69f=_0xe3d6[_0x3cd293];return _0x3ef69f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6e3d('0x0'));var zipdir=require(_0x6e3d('0x1'));var jsonpatch=require(_0x6e3d('0x2'));var rp=require(_0x6e3d('0x3'));var moment=require(_0x6e3d('0x4'));var BPromise=require(_0x6e3d('0x5'));var Mustache=require(_0x6e3d('0x6'));var util=require(_0x6e3d('0x7'));var path=require('path');var sox=require(_0x6e3d('0x8'));var csv=require(_0x6e3d('0x9'));var ejs=require(_0x6e3d('0xa'));var fs=require('fs');var fs_extra=require(_0x6e3d('0xb'));var _=require(_0x6e3d('0xc'));var squel=require('squel');var crypto=require(_0x6e3d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6e3d('0xe'));var toCsv=require(_0x6e3d('0x9'));var querystring=require(_0x6e3d('0xf'));var Papa=require(_0x6e3d('0x10'));var Redis=require(_0x6e3d('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6e3d('0x12'));var hardwareService=require(_0x6e3d('0x13'));var logger=require(_0x6e3d('0x14'))(_0x6e3d('0x15'));var utils=require(_0x6e3d('0x16'));var config=require(_0x6e3d('0x17'));var licenseUtil=require(_0x6e3d('0x18'));var db=require(_0x6e3d('0x19'))['db'];config[_0x6e3d('0x1a')]=_[_0x6e3d('0x1b')](config[_0x6e3d('0x1a')],{'host':_0x6e3d('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6e3d('0x1a')]));require(_0x6e3d('0x1d'))[_0x6e3d('0x1e')](socket);var jayson=require(_0x6e3d('0x1f'));var client=jayson[_0x6e3d('0x20')][_0x6e3d('0x21')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x273a5c,_0x3cdc6d,_0x1c5660,_0x45aee8){return new BPromise(function(_0x4f2dda,_0x2880e7){var _0x2ea6d8=_0x45aee8||client;return _0x2ea6d8[_0x6e3d('0x22')](_0x273a5c,_0x1c5660)[_0x6e3d('0x23')](function(_0x40eda0){logger[_0x6e3d('0x24')](_0x6e3d('0x25'),_0x3cdc6d,_0x6e3d('0x26'));logger['debug'](_0x6e3d('0x27'),_0x3cdc6d,_0x6e3d('0x26'),JSON[_0x6e3d('0x28')](_0x40eda0));if(_0x40eda0[_0x6e3d('0x29')]){if(_0x40eda0[_0x6e3d('0x29')][_0x6e3d('0x2a')]===0x1f4){logger[_0x6e3d('0x29')]('WhatsappMessage,\x20%s,\x20%s',_0x3cdc6d,_0x40eda0['error'][_0x6e3d('0x2b')]);return _0x2880e7(_0x40eda0[_0x6e3d('0x29')]['message']);}logger[_0x6e3d('0x29')]('WhatsappMessage,\x20%s,\x20%s',_0x3cdc6d,_0x40eda0[_0x6e3d('0x29')]['message']);return _0x4f2dda(_0x40eda0[_0x6e3d('0x29')][_0x6e3d('0x2b')]);}else{logger[_0x6e3d('0x24')](_0x6e3d('0x25'),_0x3cdc6d,_0x6e3d('0x26'));_0x4f2dda(_0x40eda0['result'][_0x6e3d('0x2b')]);}})[_0x6e3d('0x2c')](function(_0x46b709){logger[_0x6e3d('0x29')](_0x6e3d('0x25'),_0x3cdc6d,_0x46b709);_0x2880e7(_0x46b709);});});}function respondWithStatusCode(_0x3aa64a,_0x57c2aa){_0x57c2aa=_0x57c2aa||0xcc;return function(_0x59ef51){if(_0x59ef51){return _0x3aa64a[_0x6e3d('0x2d')](_0x57c2aa);}return _0x3aa64a[_0x6e3d('0x2e')](_0x57c2aa)[_0x6e3d('0x2f')]();};}function respondWithResult(_0x430178,_0x211d43){_0x211d43=_0x211d43||0xc8;return function(_0x434165){if(_0x434165){return _0x430178[_0x6e3d('0x2e')](_0x211d43)['json'](_0x434165);}};}function respondWithFilteredResult(_0x56e757,_0xb19e0e){return function(_0x13f4b3){if(_0x13f4b3){var _0x1862f7=typeof _0xb19e0e[_0x6e3d('0x30')]===_0x6e3d('0x31')&&typeof _0xb19e0e[_0x6e3d('0x32')]===_0x6e3d('0x31');var _0x352b34=_0x13f4b3[_0x6e3d('0x33')];var _0xfd2ffe=_0x1862f7?0x0:_0xb19e0e[_0x6e3d('0x30')];var _0x3fe1ce=_0x1862f7?_0x13f4b3[_0x6e3d('0x33')]:_0xb19e0e[_0x6e3d('0x30')]+_0xb19e0e['limit'];var _0x24aeed;if(_0x3fe1ce>=_0x352b34){_0x3fe1ce=_0x352b34;_0x24aeed=0xc8;}else{_0x24aeed=0xce;}_0x56e757[_0x6e3d('0x2e')](_0x24aeed);return _0x56e757[_0x6e3d('0x34')](_0x6e3d('0x35'),_0xfd2ffe+'-'+_0x3fe1ce+'/'+_0x352b34)[_0x6e3d('0x36')](_0x13f4b3);}return null;};}function patchUpdates(_0x24af7f){return function(_0x37e630){try{jsonpatch[_0x6e3d('0x37')](_0x37e630,_0x24af7f,!![]);}catch(_0xc0320e){return BPromise['reject'](_0xc0320e);}return _0x37e630[_0x6e3d('0x38')]();};}function saveUpdates(_0x18d658,_0x29ae11){return function(_0x991f3d){if(_0x991f3d){return _0x991f3d[_0x6e3d('0x39')](_0x18d658)[_0x6e3d('0x23')](function(_0x2f2827){return _0x2f2827;});}return null;};}function removeEntity(_0x2e6ffd,_0xd23c7a){return function(_0x2fe52d){if(_0x2fe52d){return _0x2fe52d['destroy']()[_0x6e3d('0x23')](function(){_0x2e6ffd['status'](0xcc)[_0x6e3d('0x2f')]();});}};}function handleEntityNotFound(_0x5379fd,_0x1632e7){return function(_0xb9dd74){if(!_0xb9dd74){_0x5379fd[_0x6e3d('0x2d')](0x194);}return _0xb9dd74;};}function handleError(_0x222780,_0x400a7d){_0x400a7d=_0x400a7d||0x1f4;return function(_0x232dc6){logger[_0x6e3d('0x29')](_0x232dc6[_0x6e3d('0x3a')]);if(_0x232dc6[_0x6e3d('0x3b')]){delete _0x232dc6[_0x6e3d('0x3b')];}_0x222780[_0x6e3d('0x2e')](_0x400a7d)[_0x6e3d('0x3c')](_0x232dc6);};}exports[_0x6e3d('0x3d')]=function(_0x2238ae,_0x1eda4f){var _0xe94c9={},_0x6f4f0b={},_0x50b92c={'count':0x0,'rows':[]};var _0x1a7719=_['map'](db[_0x6e3d('0x3e')][_0x6e3d('0x3f')],function(_0x394ba3){return{'name':_0x394ba3[_0x6e3d('0x40')],'type':_0x394ba3[_0x6e3d('0x41')][_0x6e3d('0x42')]};});_0x6f4f0b[_0x6e3d('0x43')]=_[_0x6e3d('0x44')](_0x1a7719,_0x6e3d('0x3b'));_0x6f4f0b[_0x6e3d('0x45')]=_[_0x6e3d('0x46')](_0x2238ae['query']);_0x6f4f0b[_0x6e3d('0x47')]=_[_0x6e3d('0x48')](_0x6f4f0b[_0x6e3d('0x43')],_0x6f4f0b['query']);_0xe94c9[_0x6e3d('0x49')]=_['intersection'](_0x6f4f0b[_0x6e3d('0x43')],qs[_0x6e3d('0x4a')](_0x2238ae['query'][_0x6e3d('0x4a')]));_0xe94c9[_0x6e3d('0x49')]=_0xe94c9[_0x6e3d('0x49')][_0x6e3d('0x4b')]?_0xe94c9['attributes']:_0x6f4f0b[_0x6e3d('0x43')];if(!_0x2238ae[_0x6e3d('0x45')][_0x6e3d('0x4c')](_0x6e3d('0x4d'))){_0xe94c9[_0x6e3d('0x32')]=qs[_0x6e3d('0x32')](_0x2238ae[_0x6e3d('0x45')]['limit']);_0xe94c9[_0x6e3d('0x30')]=qs['offset'](_0x2238ae[_0x6e3d('0x45')][_0x6e3d('0x30')]);}_0xe94c9['order']=qs[_0x6e3d('0x4e')](_0x2238ae[_0x6e3d('0x45')][_0x6e3d('0x4e')]);_0xe94c9[_0x6e3d('0x4f')]=qs[_0x6e3d('0x47')](_[_0x6e3d('0x50')](_0x2238ae[_0x6e3d('0x45')],_0x6f4f0b[_0x6e3d('0x47')]),_0x1a7719);if(_0x2238ae[_0x6e3d('0x45')][_0x6e3d('0x51')]){_0xe94c9[_0x6e3d('0x4f')]=_[_0x6e3d('0x52')](_0xe94c9[_0x6e3d('0x4f')],{'$or':_['map'](_0x1a7719,function(_0x2ece3c){if(_0x2ece3c[_0x6e3d('0x41')]!==_0x6e3d('0x53')){var _0x4e8f62={};_0x4e8f62[_0x2ece3c[_0x6e3d('0x3b')]]={'$like':'%'+_0x2238ae['query'][_0x6e3d('0x51')]+'%'};return _0x4e8f62;}})});}_0xe94c9=_['merge']({},_0xe94c9,_0x2238ae[_0x6e3d('0x54')]);var _0x535272={'where':_0xe94c9['where']};return db[_0x6e3d('0x3e')][_0x6e3d('0x33')](_0x535272)[_0x6e3d('0x23')](function(_0x350883){_0x50b92c[_0x6e3d('0x33')]=_0x350883;if(_0x2238ae[_0x6e3d('0x45')][_0x6e3d('0x55')]){_0xe94c9[_0x6e3d('0x56')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x6e3d('0x57')](_0xe94c9);})[_0x6e3d('0x23')](function(_0x193eed){_0x50b92c[_0x6e3d('0x58')]=_0x193eed;return _0x50b92c;})['then'](respondWithFilteredResult(_0x1eda4f,_0xe94c9))[_0x6e3d('0x2c')](handleError(_0x1eda4f,null));};exports[_0x6e3d('0x59')]=function(_0x3bee82,_0x4459f3){var _0x178d03={'raw':!![],'where':{'id':_0x3bee82[_0x6e3d('0x5a')]['id']}},_0x8b86cf={};_0x8b86cf[_0x6e3d('0x43')]=_[_0x6e3d('0x46')](db[_0x6e3d('0x3e')][_0x6e3d('0x3f')]);_0x8b86cf[_0x6e3d('0x45')]=_[_0x6e3d('0x46')](_0x3bee82[_0x6e3d('0x45')]);_0x8b86cf[_0x6e3d('0x47')]=_['intersection'](_0x8b86cf[_0x6e3d('0x43')],_0x8b86cf[_0x6e3d('0x45')]);_0x178d03[_0x6e3d('0x49')]=_['intersection'](_0x8b86cf[_0x6e3d('0x43')],qs['fields'](_0x3bee82[_0x6e3d('0x45')][_0x6e3d('0x4a')]));_0x178d03[_0x6e3d('0x49')]=_0x178d03[_0x6e3d('0x49')][_0x6e3d('0x4b')]?_0x178d03[_0x6e3d('0x49')]:_0x8b86cf[_0x6e3d('0x43')];if(_0x3bee82['query'][_0x6e3d('0x55')]){_0x178d03[_0x6e3d('0x56')]=[{'all':!![]}];}_0x178d03=_[_0x6e3d('0x52')]({},_0x178d03,_0x3bee82[_0x6e3d('0x54')]);return db[_0x6e3d('0x3e')]['find'](_0x178d03)[_0x6e3d('0x23')](handleEntityNotFound(_0x4459f3,null))['then'](respondWithResult(_0x4459f3,null))[_0x6e3d('0x2c')](handleError(_0x4459f3,null));};exports[_0x6e3d('0x5b')]=function(_0x56b978,_0x285585){return db[_0x6e3d('0x3e')][_0x6e3d('0x5b')](_0x56b978[_0x6e3d('0x5c')],{})[_0x6e3d('0x23')](respondWithResult(_0x285585,0xc9))[_0x6e3d('0x2c')](handleError(_0x285585,null));};exports[_0x6e3d('0x39')]=function(_0x544d5d,_0xde8b52){if(_0x544d5d[_0x6e3d('0x5c')]['id']){delete _0x544d5d[_0x6e3d('0x5c')]['id'];}return db[_0x6e3d('0x3e')]['find']({'where':{'id':_0x544d5d[_0x6e3d('0x5a')]['id']}})[_0x6e3d('0x23')](handleEntityNotFound(_0xde8b52,null))[_0x6e3d('0x23')](saveUpdates(_0x544d5d[_0x6e3d('0x5c')],null))['then'](respondWithResult(_0xde8b52,null))['catch'](handleError(_0xde8b52,null));};exports[_0x6e3d('0x5d')]=function(_0x4a8535,_0x149ea0){return db[_0x6e3d('0x3e')][_0x6e3d('0x5e')]({'where':{'id':_0x4a8535[_0x6e3d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x149ea0,null))['then'](removeEntity(_0x149ea0,null))[_0x6e3d('0x2c')](handleError(_0x149ea0,null));};exports[_0x6e3d('0x5f')]=function(_0x324dff,_0xe638c0){return db[_0x6e3d('0x3e')]['describe']()[_0x6e3d('0x23')](respondWithResult(_0xe638c0,null))['catch'](handleError(_0xe638c0,null));};var interaction_log=require('../../config/logger')(_0x6e3d('0x60'));exports[_0x6e3d('0x61')]=function(_0x316b65,_0x276046,_0x14e820){var _0x218574={'agent':{},'channel':_0x6e3d('0x62')};if(_0x316b65[_0x6e3d('0x5c')]['id']){delete _0x316b65[_0x6e3d('0x5c')]['id'];}_0x316b65['body'][_0x6e3d('0x63')]=!![];_0x316b65[_0x6e3d('0x5c')][_0x6e3d('0x64')]=moment()[_0x6e3d('0x65')](_0x6e3d('0x66'));_0x316b65[_0x6e3d('0x5c')][_0x6e3d('0x67')]=_0x316b65[_0x6e3d('0x5c')][_0x6e3d('0x67')]||_0x316b65['user']['id'];_0x218574[_0x6e3d('0x68')]['id']=_0x316b65[_0x6e3d('0x5c')][_0x6e3d('0x67')];return db[_0x6e3d('0x3e')][_0x6e3d('0x5e')]({'where':{'id':_0x316b65[_0x6e3d('0x5a')]['id'],'UserId':null}})[_0x6e3d('0x23')](handleEntityNotFound(_0x276046,null))['then'](saveUpdates(_0x316b65[_0x6e3d('0x5c')],null))[_0x6e3d('0x23')](function(_0x4d1003){if(_0x4d1003){_0x218574['message']=_0x4d1003[_0x6e3d('0x69')]({'plain':!![]});return db[_0x6e3d('0x6a')][_0x6e3d('0x5e')]({'where':{'id':_0x4d1003[_0x6e3d('0x6b')]}});}return null;})['then'](handleEntityNotFound(_0x276046,null))['then'](function(_0x23a3e1){if(_0x23a3e1){return _0x23a3e1[_0x6e3d('0x39')]({'UserId':_0x316b65['body']['UserId'],'read1stAt':_['isNil'](_0x23a3e1['read1stAt'])?moment()[_0x6e3d('0x65')](_0x6e3d('0x66')):undefined});}return null;})[_0x6e3d('0x23')](function(_0x3074f3){if(_0x3074f3){_0x218574['interaction']=_0x3074f3['get']({'plain':!![]});interaction_log[_0x6e3d('0x24')](_0x6e3d('0x6c'),_0x316b65['user']['id'],_0x316b65[_0x6e3d('0x6d')][_0x6e3d('0x3b')],_0x316b65[_0x6e3d('0x6d')][_0x6e3d('0x6e')],_0x218574[_0x6e3d('0x6f')]['id'],_0x316b65[_0x6e3d('0x5c')]?JSON['stringify'](_0x316b65[_0x6e3d('0x5c')]):'null');return respondWithRpcPromise(_0x6e3d('0x70'),_0x6e3d('0x71'),_0x218574);}return null;})[_0x6e3d('0x23')](function(_0x104a44){var _0x40a985=_0x6e3d('0x72')+_0x104a44[_0x6e3d('0x2b')][_0x6e3d('0x73')];return db[_0x6e3d('0x74')]['query'](_0x40a985,{'type':db[_0x6e3d('0x75')][_0x6e3d('0x76')][_0x6e3d('0x77')],'raw':!![]})[_0x6e3d('0x23')](function(_0x26f46b){return _0x26f46b;});})[_0x6e3d('0x23')](function(_0x9d8cb8){if(_0x9d8cb8){_0x218574[_0x6e3d('0x2b')]['contact']=_0x9d8cb8[0x0];if(!_0x316b65[_0x6e3d('0x5c')][_0x6e3d('0x67')])return;return db['User'][_0x6e3d('0x5e')]({'where':{'id':_0x316b65['body'][_0x6e3d('0x67')],'role':_0x6e3d('0x68')},'attributes':['id',_0x6e3d('0x3b'),_0x6e3d('0x78'),_0x6e3d('0x79'),'internal'],'raw':!![]});}return null;})[_0x6e3d('0x23')](function(_0xab2eee){if(!_0xab2eee)return null;_0x218574['message']['agent']=_0xab2eee;return _0x218574;})['then'](function(_0x1d9fca){if(_0x1d9fca){if(_0x316b65[_0x6e3d('0x5c')]['manual']){_0x218574['message'][_0x6e3d('0x7a')]=util[_0x6e3d('0x65')](_0x6e3d('0x7b'),_0x316b65[_0x6e3d('0x6d')]['name']);_0x218574['message'][_0x6e3d('0x7c')]=_0x218574[_0x6e3d('0x7c')];_0x218574['message'][_0x6e3d('0x7d')]=_0x218574['channel'];_0x218574[_0x6e3d('0x2b')][_0x6e3d('0x7e')]=_0x6e3d('0x61');return respondWithRpcPromise(_0x6e3d('0x7f'),'EventManager',{'event':_0x6e3d('0x80'),'message':_0x218574['message']},client9002)[_0x6e3d('0x23')](function(){return _0x218574;});}return _0x218574;}return null;})['then'](respondWithResult(_0x276046,null))['catch'](handleError(_0x276046,null));};var interaction_log=require(_0x6e3d('0x14'))(_0x6e3d('0x60'));exports[_0x6e3d('0x81')]=function(_0x1087fb,_0x45c983,_0x34fa2c){var _0x56d31e={'agent':{},'channel':_0x6e3d('0x62')};if(_0x1087fb[_0x6e3d('0x5c')]['id']){delete _0x1087fb[_0x6e3d('0x5c')]['id'];}_0x1087fb[_0x6e3d('0x5c')][_0x6e3d('0x67')]=_0x1087fb['body'][_0x6e3d('0x67')]||_0x1087fb[_0x6e3d('0x6d')]['id'];_0x56d31e[_0x6e3d('0x68')]['id']=_0x1087fb[_0x6e3d('0x5c')][_0x6e3d('0x67')];return db[_0x6e3d('0x3e')][_0x6e3d('0x5e')]({'where':{'id':_0x1087fb[_0x6e3d('0x5a')]['id'],'UserId':null}})[_0x6e3d('0x23')](handleEntityNotFound(_0x45c983,null))[_0x6e3d('0x23')](function(_0x30daf3){if(_0x30daf3){_0x56d31e[_0x6e3d('0x2b')]=_0x30daf3[_0x6e3d('0x69')]({'plain':!![]});return db[_0x6e3d('0x6a')]['find']({'where':{'id':_0x30daf3[_0x6e3d('0x6b')]}});}return null;})[_0x6e3d('0x23')](handleEntityNotFound(_0x45c983,null))[_0x6e3d('0x23')](function(_0x2a4fc5){if(_0x2a4fc5){_0x56d31e[_0x6e3d('0x6f')]=_0x2a4fc5[_0x6e3d('0x69')]({'plain':!![]});interaction_log[_0x6e3d('0x24')](_0x6e3d('0x82'),_0x1087fb[_0x6e3d('0x6d')]['id'],_0x1087fb[_0x6e3d('0x6d')][_0x6e3d('0x3b')],_0x1087fb['user'][_0x6e3d('0x6e')],_0x56d31e['interaction']['id'],_0x1087fb['body']?JSON[_0x6e3d('0x28')](_0x1087fb[_0x6e3d('0x5c')]):_0x6e3d('0x83'));return respondWithRpcPromise(_0x6e3d('0x84'),_0x6e3d('0x85'),_0x56d31e);}return null;})[_0x6e3d('0x23')](function(_0x1315f7){var _0x32cf5f='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1315f7['message'][_0x6e3d('0x73')];return db[_0x6e3d('0x74')][_0x6e3d('0x45')](_0x32cf5f,{'type':db['Sequelize'][_0x6e3d('0x76')][_0x6e3d('0x77')],'raw':!![]})[_0x6e3d('0x23')](function(_0x368bba){return _0x368bba;});})[_0x6e3d('0x23')](function(_0x581b12){if(_0x581b12){_0x56d31e[_0x6e3d('0x2b')][_0x6e3d('0x86')]=_0x581b12[0x0];if(!_0x1087fb[_0x6e3d('0x5c')][_0x6e3d('0x67')])return;return db[_0x6e3d('0x87')]['find']({'where':{'id':_0x1087fb[_0x6e3d('0x5c')][_0x6e3d('0x67')],'role':_0x6e3d('0x68')},'attributes':['id',_0x6e3d('0x3b'),_0x6e3d('0x78'),_0x6e3d('0x79'),'internal'],'raw':!![]});}return null;})[_0x6e3d('0x23')](function(_0x3299be){if(!_0x3299be)return null;_0x56d31e[_0x6e3d('0x2b')][_0x6e3d('0x68')]=_0x3299be;return _0x56d31e;})['then'](function(_0x2a31a4){if(_0x2a31a4){_0x2a31a4[_0x6e3d('0x2b')][_0x6e3d('0x7a')]=util[_0x6e3d('0x65')](_0x6e3d('0x7b'),_0x1087fb[_0x6e3d('0x6d')]['name']);_0x2a31a4[_0x6e3d('0x2b')][_0x6e3d('0x7c')]=_0x56d31e['channel'];_0x2a31a4[_0x6e3d('0x2b')][_0x6e3d('0x7d')]=_0x56d31e[_0x6e3d('0x7c')];_0x2a31a4['message'][_0x6e3d('0x7e')]=_0x6e3d('0x81');respondWithRpcPromise(_0x6e3d('0x7f'),'EventManager',{'event':'rejectmessage','message':_0x2a31a4[_0x6e3d('0x2b')]},client9002);return _0x56d31e;}return null;})[_0x6e3d('0x23')](respondWithResult(_0x45c983,null))[_0x6e3d('0x2c')](handleError(_0x45c983,null));};exports[_0x6e3d('0x2e')]=function(_0x193018,_0x4b67cf,_0x2efde2){if(_0x193018[_0x6e3d('0x5c')]['id']){delete _0x193018[_0x6e3d('0x5c')]['id'];}var _0x1db4c1;return db['WhatsappMessage'][_0x6e3d('0x5e')]({'where':{'id':_0x193018[_0x6e3d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4b67cf,null))[_0x6e3d('0x23')](function(_0x5a284b){if(_0x5a284b){_0x1db4c1=_0x5a284b;return db[_0x6e3d('0x88')][_0x6e3d('0x5e')]({'where':{'id':_0x5a284b[_0x6e3d('0x89')]}});}})[_0x6e3d('0x23')](handleEntityNotFound(_0x4b67cf,null))[_0x6e3d('0x23')](function(_0x228487){if(_0x228487){logger[_0x6e3d('0x8a')](_0x6e3d('0x8b'),'status',_0x6e3d('0x8c'),_0x228487['type'],util[_0x6e3d('0x8d')](_0x193018[_0x6e3d('0x5c')],{'showHidden':![],'depth':null}));switch(_0x228487[_0x6e3d('0x41')]){case _0x6e3d('0x8e'):if(_0x193018['body']['MessageSid']&&_0x193018[_0x6e3d('0x5c')][_0x6e3d('0x8f')]===_0x1db4c1[_0x6e3d('0x90')]&&_0x193018[_0x6e3d('0x5c')][_0x6e3d('0x91')]&&_0x193018[_0x6e3d('0x5c')]['MessageStatus']===_0x6e3d('0x63')){return _0x1db4c1['update']({'read':!![]});}else{logger[_0x6e3d('0x29')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x6e3d('0x2e'),_0x6e3d('0x8e'),util[_0x6e3d('0x8d')](_0x193018[_0x6e3d('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x1db4c1;}})[_0x6e3d('0x23')](respondWithResult(_0x4b67cf,null))[_0x6e3d('0x2c')](handleError(_0x4b67cf,null));};
\ No newline at end of file
+var _0x2194=['email','internal','agent','manual','interface','SIP/%s','channel','motionChannel','EventManager','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','format','event','rejectmessage','WhatsappAccount','debug','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappMessage.socket','jayson/promise','client','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','map','WhatsappMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','length','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','rows','params','intersection','include','find','create','body','describe','whatsapp-interactions','accept','whatsapp','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteraction','read1stAt','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','acceptMessage','ContactId','sequelize','Sequelize','SELECT','contact','User','fullname'];(function(_0x135892,_0x203263){var _0x1351d4=function(_0x40bfd8){while(--_0x40bfd8){_0x135892['push'](_0x135892['shift']());}};_0x1351d4(++_0x203263);}(_0x2194,0x12d));var _0x4219=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x2194[_0xf71120];return _0xbe2fd3;};'use strict';var emlformat=require(_0x4219('0x0'));var rimraf=require(_0x4219('0x1'));var zipdir=require(_0x4219('0x2'));var jsonpatch=require(_0x4219('0x3'));var rp=require(_0x4219('0x4'));var moment=require(_0x4219('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4219('0x6'));var util=require(_0x4219('0x7'));var path=require('path');var sox=require(_0x4219('0x8'));var csv=require(_0x4219('0x9'));var ejs=require(_0x4219('0xa'));var fs=require('fs');var fs_extra=require(_0x4219('0xb'));var _=require(_0x4219('0xc'));var squel=require(_0x4219('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4219('0x9'));var querystring=require('querystring');var Papa=require(_0x4219('0xe'));var Redis=require(_0x4219('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4219('0x10'));var hardwareService=require(_0x4219('0x11'));var logger=require(_0x4219('0x12'))(_0x4219('0x13'));var utils=require(_0x4219('0x14'));var config=require(_0x4219('0x15'));var licenseUtil=require(_0x4219('0x16'));var db=require(_0x4219('0x17'))['db'];config[_0x4219('0x18')]=_['defaults'](config[_0x4219('0x18')],{'host':_0x4219('0x19'),'port':0x18eb});var socket=require(_0x4219('0x1a'))(new Redis(config[_0x4219('0x18')]));require(_0x4219('0x1b'))['register'](socket);var jayson=require(_0x4219('0x1c'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x4219('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x497e7e,_0x12b922,_0x42e402,_0x3a17d9){return new BPromise(function(_0x3f7ebb,_0x4ec32c){var _0x576806=_0x3a17d9||client;return _0x576806['request'](_0x497e7e,_0x42e402)[_0x4219('0x1e')](function(_0x48f70f){logger[_0x4219('0x1f')](_0x4219('0x20'),_0x12b922,_0x4219('0x21'));logger['debug'](_0x4219('0x22'),_0x12b922,_0x4219('0x21'),JSON[_0x4219('0x23')](_0x48f70f));if(_0x48f70f['error']){if(_0x48f70f['error'][_0x4219('0x24')]===0x1f4){logger[_0x4219('0x25')](_0x4219('0x20'),_0x12b922,_0x48f70f[_0x4219('0x25')][_0x4219('0x26')]);return _0x4ec32c(_0x48f70f[_0x4219('0x25')][_0x4219('0x26')]);}logger['error'](_0x4219('0x20'),_0x12b922,_0x48f70f[_0x4219('0x25')][_0x4219('0x26')]);return _0x3f7ebb(_0x48f70f[_0x4219('0x25')][_0x4219('0x26')]);}else{logger[_0x4219('0x1f')]('WhatsappMessage,\x20%s,\x20%s',_0x12b922,'request\x20sent');_0x3f7ebb(_0x48f70f[_0x4219('0x27')]['message']);}})[_0x4219('0x28')](function(_0x306856){logger[_0x4219('0x25')]('WhatsappMessage,\x20%s,\x20%s',_0x12b922,_0x306856);_0x4ec32c(_0x306856);});});}function respondWithStatusCode(_0x431160,_0x222d74){_0x222d74=_0x222d74||0xcc;return function(_0x53f3c5){if(_0x53f3c5){return _0x431160['sendStatus'](_0x222d74);}return _0x431160[_0x4219('0x29')](_0x222d74)[_0x4219('0x2a')]();};}function respondWithResult(_0x4f4769,_0x71600f){_0x71600f=_0x71600f||0xc8;return function(_0x252f11){if(_0x252f11){return _0x4f4769['status'](_0x71600f)['json'](_0x252f11);}};}function respondWithFilteredResult(_0x420e0a,_0x11c731){return function(_0x1e9cad){if(_0x1e9cad){var _0x34adb7=typeof _0x11c731['offset']===_0x4219('0x2b')&&typeof _0x11c731[_0x4219('0x2c')]===_0x4219('0x2b');var _0xc7e2ce=_0x1e9cad[_0x4219('0x2d')];var _0x40315a=_0x34adb7?0x0:_0x11c731[_0x4219('0x2e')];var _0x181959=_0x34adb7?_0x1e9cad[_0x4219('0x2d')]:_0x11c731[_0x4219('0x2e')]+_0x11c731[_0x4219('0x2c')];var _0x489588;if(_0x181959>=_0xc7e2ce){_0x181959=_0xc7e2ce;_0x489588=0xc8;}else{_0x489588=0xce;}_0x420e0a[_0x4219('0x29')](_0x489588);return _0x420e0a[_0x4219('0x2f')](_0x4219('0x30'),_0x40315a+'-'+_0x181959+'/'+_0xc7e2ce)['json'](_0x1e9cad);}return null;};}function patchUpdates(_0x168c0f){return function(_0x236edb){try{jsonpatch[_0x4219('0x31')](_0x236edb,_0x168c0f,!![]);}catch(_0x591eb2){return BPromise[_0x4219('0x32')](_0x591eb2);}return _0x236edb[_0x4219('0x33')]();};}function saveUpdates(_0x32c6ff,_0x2d670e){return function(_0x57feef){if(_0x57feef){return _0x57feef[_0x4219('0x34')](_0x32c6ff)[_0x4219('0x1e')](function(_0x276ae1){return _0x276ae1;});}return null;};}function removeEntity(_0x52c11e,_0x5153f7){return function(_0x3989ab){if(_0x3989ab){return _0x3989ab[_0x4219('0x35')]()[_0x4219('0x1e')](function(){_0x52c11e[_0x4219('0x29')](0xcc)[_0x4219('0x2a')]();});}};}function handleEntityNotFound(_0x3251ae,_0x5c18ab){return function(_0xed4ded){if(!_0xed4ded){_0x3251ae[_0x4219('0x36')](0x194);}return _0xed4ded;};}function handleError(_0x25c0dc,_0x46588f){_0x46588f=_0x46588f||0x1f4;return function(_0x2f084c){logger[_0x4219('0x25')](_0x2f084c[_0x4219('0x37')]);if(_0x2f084c[_0x4219('0x38')]){delete _0x2f084c[_0x4219('0x38')];}_0x25c0dc[_0x4219('0x29')](_0x46588f)[_0x4219('0x39')](_0x2f084c);};}exports['index']=function(_0x391674,_0x2386d5){var _0x296552={},_0xbcdf8c={},_0x3b6d0e={'count':0x0,'rows':[]};var _0xa96a8a=_[_0x4219('0x3a')](db[_0x4219('0x3b')][_0x4219('0x3c')],function(_0x182134){return{'name':_0x182134[_0x4219('0x3d')],'type':_0x182134[_0x4219('0x3e')][_0x4219('0x3f')]};});_0xbcdf8c[_0x4219('0x40')]=_[_0x4219('0x3a')](_0xa96a8a,_0x4219('0x38'));_0xbcdf8c[_0x4219('0x41')]=_[_0x4219('0x42')](_0x391674['query']);_0xbcdf8c[_0x4219('0x43')]=_['intersection'](_0xbcdf8c[_0x4219('0x40')],_0xbcdf8c[_0x4219('0x41')]);_0x296552['attributes']=_['intersection'](_0xbcdf8c[_0x4219('0x40')],qs['fields'](_0x391674[_0x4219('0x41')][_0x4219('0x44')]));_0x296552['attributes']=_0x296552[_0x4219('0x45')][_0x4219('0x46')]?_0x296552['attributes']:_0xbcdf8c[_0x4219('0x40')];if(!_0x391674[_0x4219('0x41')]['hasOwnProperty'](_0x4219('0x47'))){_0x296552[_0x4219('0x2c')]=qs[_0x4219('0x2c')](_0x391674[_0x4219('0x41')][_0x4219('0x2c')]);_0x296552[_0x4219('0x2e')]=qs[_0x4219('0x2e')](_0x391674[_0x4219('0x41')][_0x4219('0x2e')]);}_0x296552['order']=qs[_0x4219('0x48')](_0x391674['query'][_0x4219('0x48')]);_0x296552[_0x4219('0x49')]=qs[_0x4219('0x43')](_['pick'](_0x391674[_0x4219('0x41')],_0xbcdf8c[_0x4219('0x43')]),_0xa96a8a);if(_0x391674[_0x4219('0x41')]['filter']){_0x296552[_0x4219('0x49')]=_[_0x4219('0x4a')](_0x296552[_0x4219('0x49')],{'$or':_['map'](_0xa96a8a,function(_0x8adea7){if(_0x8adea7[_0x4219('0x3e')]!==_0x4219('0x4b')){var _0x2edcde={};_0x2edcde[_0x8adea7['name']]={'$like':'%'+_0x391674['query'][_0x4219('0x4c')]+'%'};return _0x2edcde;}})});}_0x296552=_['merge']({},_0x296552,_0x391674[_0x4219('0x4d')]);var _0x58b605={'where':_0x296552[_0x4219('0x49')]};return db[_0x4219('0x3b')][_0x4219('0x2d')](_0x58b605)[_0x4219('0x1e')](function(_0x116fd9){_0x3b6d0e[_0x4219('0x2d')]=_0x116fd9;if(_0x391674['query'][_0x4219('0x4e')]){_0x296552['include']=[{'all':!![]}];}return db[_0x4219('0x3b')]['findAll'](_0x296552);})['then'](function(_0xa96fdd){_0x3b6d0e[_0x4219('0x4f')]=_0xa96fdd;return _0x3b6d0e;})[_0x4219('0x1e')](respondWithFilteredResult(_0x2386d5,_0x296552))['catch'](handleError(_0x2386d5,null));};exports['show']=function(_0x12dc0f,_0x3437d4){var _0x400cf7={'raw':!![],'where':{'id':_0x12dc0f[_0x4219('0x50')]['id']}},_0x26d415={};_0x26d415[_0x4219('0x40')]=_[_0x4219('0x42')](db[_0x4219('0x3b')][_0x4219('0x3c')]);_0x26d415['query']=_['keys'](_0x12dc0f[_0x4219('0x41')]);_0x26d415[_0x4219('0x43')]=_[_0x4219('0x51')](_0x26d415[_0x4219('0x40')],_0x26d415['query']);_0x400cf7['attributes']=_[_0x4219('0x51')](_0x26d415[_0x4219('0x40')],qs[_0x4219('0x44')](_0x12dc0f[_0x4219('0x41')]['fields']));_0x400cf7[_0x4219('0x45')]=_0x400cf7['attributes']['length']?_0x400cf7['attributes']:_0x26d415['model'];if(_0x12dc0f[_0x4219('0x41')]['includeAll']){_0x400cf7[_0x4219('0x52')]=[{'all':!![]}];}_0x400cf7=_[_0x4219('0x4a')]({},_0x400cf7,_0x12dc0f['options']);return db[_0x4219('0x3b')][_0x4219('0x53')](_0x400cf7)[_0x4219('0x1e')](handleEntityNotFound(_0x3437d4,null))['then'](respondWithResult(_0x3437d4,null))[_0x4219('0x28')](handleError(_0x3437d4,null));};exports[_0x4219('0x54')]=function(_0x49d039,_0x168fa2){return db[_0x4219('0x3b')][_0x4219('0x54')](_0x49d039['body'],{})[_0x4219('0x1e')](respondWithResult(_0x168fa2,0xc9))[_0x4219('0x28')](handleError(_0x168fa2,null));};exports[_0x4219('0x34')]=function(_0x2cb6ca,_0x31d5f3){if(_0x2cb6ca[_0x4219('0x55')]['id']){delete _0x2cb6ca[_0x4219('0x55')]['id'];}return db['WhatsappMessage'][_0x4219('0x53')]({'where':{'id':_0x2cb6ca[_0x4219('0x50')]['id']}})[_0x4219('0x1e')](handleEntityNotFound(_0x31d5f3,null))[_0x4219('0x1e')](saveUpdates(_0x2cb6ca['body'],null))[_0x4219('0x1e')](respondWithResult(_0x31d5f3,null))[_0x4219('0x28')](handleError(_0x31d5f3,null));};exports[_0x4219('0x35')]=function(_0x6fdfb,_0x33e65f){return db['WhatsappMessage'][_0x4219('0x53')]({'where':{'id':_0x6fdfb['params']['id']}})['then'](handleEntityNotFound(_0x33e65f,null))[_0x4219('0x1e')](removeEntity(_0x33e65f,null))[_0x4219('0x28')](handleError(_0x33e65f,null));};exports[_0x4219('0x56')]=function(_0x350c39,_0x2cb5cd){return db['WhatsappMessage'][_0x4219('0x56')]()['then'](respondWithResult(_0x2cb5cd,null))['catch'](handleError(_0x2cb5cd,null));};var interaction_log=require(_0x4219('0x12'))(_0x4219('0x57'));exports[_0x4219('0x58')]=function(_0x29646c,_0xc58703,_0x54d585){var _0xd77d43={'agent':{},'channel':_0x4219('0x59')};if(_0x29646c[_0x4219('0x55')]['id']){delete _0x29646c[_0x4219('0x55')]['id'];}_0x29646c[_0x4219('0x55')]['read']=!![];_0x29646c[_0x4219('0x55')][_0x4219('0x5a')]=moment()['format'](_0x4219('0x5b'));_0x29646c[_0x4219('0x55')]['UserId']=_0x29646c[_0x4219('0x55')][_0x4219('0x5c')]||_0x29646c[_0x4219('0x5d')]['id'];_0xd77d43['agent']['id']=_0x29646c[_0x4219('0x55')][_0x4219('0x5c')];return db[_0x4219('0x3b')][_0x4219('0x53')]({'where':{'id':_0x29646c[_0x4219('0x50')]['id'],'UserId':null}})[_0x4219('0x1e')](handleEntityNotFound(_0xc58703,null))[_0x4219('0x1e')](saveUpdates(_0x29646c['body'],null))[_0x4219('0x1e')](function(_0x1da9e4){if(_0x1da9e4){_0xd77d43[_0x4219('0x26')]=_0x1da9e4[_0x4219('0x5e')]({'plain':!![]});return db[_0x4219('0x5f')][_0x4219('0x53')]({'where':{'id':_0x1da9e4['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0xc58703,null))[_0x4219('0x1e')](function(_0x3e66a0){if(_0x3e66a0){return _0x3e66a0[_0x4219('0x34')]({'UserId':_0x29646c['body']['UserId'],'read1stAt':_['isNil'](_0x3e66a0[_0x4219('0x60')])?moment()['format'](_0x4219('0x5b')):undefined});}return null;})[_0x4219('0x1e')](function(_0xe73a45){if(_0xe73a45){_0xd77d43['interaction']=_0xe73a45[_0x4219('0x5e')]({'plain':!![]});interaction_log[_0x4219('0x1f')](_0x4219('0x61'),_0x29646c[_0x4219('0x5d')]['id'],_0x29646c['user'][_0x4219('0x38')],_0x29646c[_0x4219('0x5d')][_0x4219('0x62')],_0xd77d43['interaction']['id'],_0x29646c[_0x4219('0x55')]?JSON[_0x4219('0x23')](_0x29646c[_0x4219('0x55')]):'null');return respondWithRpcPromise('AcceptMessage',_0x4219('0x63'),_0xd77d43);}return null;})[_0x4219('0x1e')](function(_0x4d26cc){var _0x1fe6e='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4d26cc[_0x4219('0x26')][_0x4219('0x64')];return db[_0x4219('0x65')][_0x4219('0x41')](_0x1fe6e,{'type':db[_0x4219('0x66')]['QueryTypes'][_0x4219('0x67')],'raw':!![]})[_0x4219('0x1e')](function(_0x2889ef){return _0x2889ef;});})[_0x4219('0x1e')](function(_0x2d8ce7){if(_0x2d8ce7){_0xd77d43[_0x4219('0x26')][_0x4219('0x68')]=_0x2d8ce7[0x0];if(!_0x29646c[_0x4219('0x55')]['UserId'])return;return db[_0x4219('0x69')][_0x4219('0x53')]({'where':{'id':_0x29646c[_0x4219('0x55')][_0x4219('0x5c')],'role':'agent'},'attributes':['id',_0x4219('0x38'),_0x4219('0x6a'),_0x4219('0x6b'),_0x4219('0x6c')],'raw':!![]});}return null;})[_0x4219('0x1e')](function(_0x4309e8){if(!_0x4309e8)return null;_0xd77d43[_0x4219('0x26')][_0x4219('0x6d')]=_0x4309e8;return _0xd77d43;})['then'](function(_0x40e315){if(_0x40e315){if(_0x29646c[_0x4219('0x55')][_0x4219('0x6e')]){_0xd77d43['message'][_0x4219('0x6f')]=util['format'](_0x4219('0x70'),_0x29646c[_0x4219('0x5d')]['name']);_0xd77d43[_0x4219('0x26')][_0x4219('0x71')]=_0xd77d43['channel'];_0xd77d43[_0x4219('0x26')][_0x4219('0x72')]=_0xd77d43[_0x4219('0x71')];_0xd77d43['message']['event']='accept';return respondWithRpcPromise(_0x4219('0x73'),'EventManager',{'event':'acceptmessage','message':_0xd77d43[_0x4219('0x26')]},client9002)['then'](function(){return _0xd77d43;});}return _0xd77d43;}return null;})['then'](respondWithResult(_0xc58703,null))[_0x4219('0x28')](handleError(_0xc58703,null));};var interaction_log=require(_0x4219('0x12'))('whatsapp-interactions');exports[_0x4219('0x32')]=function(_0x5b0a11,_0x17e731,_0x2ae4a9){var _0x555610={'agent':{},'channel':_0x4219('0x59')};if(_0x5b0a11['body']['id']){delete _0x5b0a11[_0x4219('0x55')]['id'];}_0x5b0a11[_0x4219('0x55')][_0x4219('0x5c')]=_0x5b0a11[_0x4219('0x55')][_0x4219('0x5c')]||_0x5b0a11[_0x4219('0x5d')]['id'];_0x555610['agent']['id']=_0x5b0a11[_0x4219('0x55')][_0x4219('0x5c')];return db[_0x4219('0x3b')][_0x4219('0x53')]({'where':{'id':_0x5b0a11[_0x4219('0x50')]['id'],'UserId':null}})[_0x4219('0x1e')](handleEntityNotFound(_0x17e731,null))['then'](function(_0x12ca33){if(_0x12ca33){_0x555610['message']=_0x12ca33['get']({'plain':!![]});return db[_0x4219('0x5f')]['find']({'where':{'id':_0x12ca33['WhatsappInteractionId']}});}return null;})[_0x4219('0x1e')](handleEntityNotFound(_0x17e731,null))['then'](function(_0x2b2082){if(_0x2b2082){_0x555610['interaction']=_0x2b2082[_0x4219('0x5e')]({'plain':!![]});interaction_log[_0x4219('0x1f')](_0x4219('0x74'),_0x5b0a11[_0x4219('0x5d')]['id'],_0x5b0a11['user'][_0x4219('0x38')],_0x5b0a11[_0x4219('0x5d')][_0x4219('0x62')],_0x555610[_0x4219('0x75')]['id'],_0x5b0a11[_0x4219('0x55')]?JSON[_0x4219('0x23')](_0x5b0a11['body']):_0x4219('0x76'));return respondWithRpcPromise(_0x4219('0x77'),_0x4219('0x78'),_0x555610);}return null;})[_0x4219('0x1e')](function(_0x26c97f){var _0x130297=_0x4219('0x79')+_0x26c97f[_0x4219('0x26')][_0x4219('0x64')];return db[_0x4219('0x65')]['query'](_0x130297,{'type':db[_0x4219('0x66')][_0x4219('0x7a')][_0x4219('0x67')],'raw':!![]})['then'](function(_0x123b88){return _0x123b88;});})[_0x4219('0x1e')](function(_0x32685e){if(_0x32685e){_0x555610[_0x4219('0x26')][_0x4219('0x68')]=_0x32685e[0x0];if(!_0x5b0a11[_0x4219('0x55')][_0x4219('0x5c')])return;return db[_0x4219('0x69')][_0x4219('0x53')]({'where':{'id':_0x5b0a11['body']['UserId'],'role':_0x4219('0x6d')},'attributes':['id','name',_0x4219('0x6a'),_0x4219('0x6b'),_0x4219('0x6c')],'raw':!![]});}return null;})[_0x4219('0x1e')](function(_0x7d958c){if(!_0x7d958c)return null;_0x555610[_0x4219('0x26')][_0x4219('0x6d')]=_0x7d958c;return _0x555610;})['then'](function(_0x23d6e2){if(_0x23d6e2){_0x23d6e2[_0x4219('0x26')][_0x4219('0x6f')]=util[_0x4219('0x7b')](_0x4219('0x70'),_0x5b0a11[_0x4219('0x5d')][_0x4219('0x38')]);_0x23d6e2[_0x4219('0x26')]['channel']=_0x555610['channel'];_0x23d6e2[_0x4219('0x26')][_0x4219('0x72')]=_0x555610[_0x4219('0x71')];_0x23d6e2[_0x4219('0x26')][_0x4219('0x7c')]=_0x4219('0x32');respondWithRpcPromise(_0x4219('0x73'),'EventManager',{'event':_0x4219('0x7d'),'message':_0x23d6e2[_0x4219('0x26')]},client9002);return _0x555610;}return null;})['then'](respondWithResult(_0x17e731,null))[_0x4219('0x28')](handleError(_0x17e731,null));};exports[_0x4219('0x29')]=function(_0x430c59,_0x387187,_0x4de3c7){if(_0x430c59[_0x4219('0x55')]['id']){delete _0x430c59[_0x4219('0x55')]['id'];}var _0x5c4f0d;return db[_0x4219('0x3b')][_0x4219('0x53')]({'where':{'id':_0x430c59['params']['id']}})[_0x4219('0x1e')](handleEntityNotFound(_0x387187,null))[_0x4219('0x1e')](function(_0x5b38c5){if(_0x5b38c5){_0x5c4f0d=_0x5b38c5;return db[_0x4219('0x7e')][_0x4219('0x53')]({'where':{'id':_0x5b38c5['WhatsappAccountId']}});}})[_0x4219('0x1e')](handleEntityNotFound(_0x387187,null))[_0x4219('0x1e')](function(_0x49b18d){if(_0x49b18d){logger[_0x4219('0x7f')](_0x4219('0x80'),_0x4219('0x29'),_0x4219('0x81'),_0x49b18d[_0x4219('0x3e')],util['inspect'](_0x430c59[_0x4219('0x55')],{'showHidden':![],'depth':null}));switch(_0x49b18d[_0x4219('0x3e')]){case _0x4219('0x82'):if(_0x430c59[_0x4219('0x55')]['MessageSid']&&_0x430c59[_0x4219('0x55')][_0x4219('0x83')]===_0x5c4f0d['messageId']&&_0x430c59[_0x4219('0x55')][_0x4219('0x84')]&&_0x430c59[_0x4219('0x55')][_0x4219('0x84')]===_0x4219('0x85')){return _0x5c4f0d[_0x4219('0x34')]({'read':!![]});}else{logger[_0x4219('0x25')](_0x4219('0x86'),'status',_0x4219('0x82'),util[_0x4219('0x87')](_0x430c59['body'],{'showHidden':![],'depth':null}));}break;}return _0x5c4f0d;}})['then'](respondWithResult(_0x387187,null))[_0x4219('0x28')](handleError(_0x387187,null));};
\ No newline at end of file
index 3481a0b..cceae05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04b8=['exports','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x3480f2,_0x4947fa){var _0x1e4899=function(_0x4a884f){while(--_0x4a884f){_0x3480f2['push'](_0x3480f2['shift']());}};_0x1e4899(++_0x4947fa);}(_0x04b8,0x159));var _0x804b=function(_0x294c42,_0xbd23ad){_0x294c42=_0x294c42-0x0;var _0x4c73d9=_0x04b8[_0x294c42];return _0x4c73d9;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x804b('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x804b('0x1')](0x0);var events={'afterCreate':_0x804b('0x2'),'afterUpdate':'update','afterDestroy':_0x804b('0x3')};function emitEvent(_0x1cd188){return function(_0x5857dc,_0x3530f6,_0x1c3474){WhatsappMessageEvents[_0x804b('0x4')](_0x1cd188+':'+_0x5857dc['id'],_0x5857dc);WhatsappMessageEvents['emit'](_0x1cd188,_0x5857dc);_0x1c3474(null);};}for(var e in events){if(events[_0x804b('0x5')](e)){var event=events[e];WhatsappMessage[_0x804b('0x6')](e,emitEvent(event));}}module[_0x804b('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x065e=['emit','hasOwnProperty','hook','events','save','update','remove'];(function(_0x594901,_0x2c8115){var _0x116c16=function(_0xcf6432){while(--_0xcf6432){_0x594901['push'](_0x594901['shift']());}};_0x116c16(++_0x2c8115);}(_0x065e,0x1a7));var _0xe065=function(_0x165277,_0x1f5fca){_0x165277=_0x165277-0x0;var _0x5eed91=_0x065e[_0x165277];return _0x5eed91;};'use strict';var EventEmitter=require(_0xe065('0x0'));var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe065('0x1'),'afterUpdate':_0xe065('0x2'),'afterDestroy':_0xe065('0x3')};function emitEvent(_0x4d35bf){return function(_0x4964fa,_0x4610a3,_0x2f90aa){WhatsappMessageEvents['emit'](_0x4d35bf+':'+_0x4964fa['id'],_0x4964fa);WhatsappMessageEvents[_0xe065('0x4')](_0x4d35bf,_0x4964fa);_0x2f90aa(null);};}for(var e in events){if(events[_0xe065('0x5')](e)){var event=events[e];WhatsappMessage[_0xe065('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 2c15a1c..7320f2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd720=['whatsapp:','remote','/api/whatsapp/messages/','token','sid','update','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','baseUrl','/whatsapp/v1/','/messages/','text','POST','Bearer\x20','application/json','statuses','err','finally','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','models','direction','toLowerCase','out','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','createdAt','catch','error','secret','WhatsappAccount','find','WhatsappAccountId','then','type','twilio','authToken','phone','accountSid','create'];(function(_0x3996b6,_0x5862a3){var _0x5c9807=function(_0x364549){while(--_0x364549){_0x3996b6['push'](_0x3996b6['shift']());}};_0x5c9807(++_0x5862a3);}(_0xd720,0x8f));var _0x0d72=function(_0x1c1798,_0x24812b){_0x1c1798=_0x1c1798-0x0;var _0x4f235e=_0xd720[_0x1c1798];return _0x4f235e;};'use strict';var _=require('lodash');var util=require(_0x0d72('0x0'));var logger=require(_0x0d72('0x1'))(_0x0d72('0x2'));var moment=require(_0x0d72('0x3'));var BPromise=require(_0x0d72('0x4'));var rp=require('request-promise');var fetch=require(_0x0d72('0x5'));var fs=require('fs');var path=require(_0x0d72('0x6'));var rimraf=require(_0x0d72('0x7'));var config=require(_0x0d72('0x8'));var attributes=require(_0x0d72('0x9'));module[_0x0d72('0xa')]=function(_0x5035ea,_0x203605){return _0x5035ea[_0x0d72('0xb')](_0x0d72('0xc'),attributes,{'tableName':_0x0d72('0xd'),'paranoid':![],'indexes':[{'name':_0x0d72('0xe'),'fields':[_0x0d72('0xe')]},{'name':_0x0d72('0xf'),'fields':[_0x0d72('0x10')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x59e501,_0x31fcda,_0x1fa3cf){var _0x36ce1a=_0x5035ea[_0x0d72('0x11')];var _0x13ab54=_0x59e501['get']({'plain':!![]});if(_0x13ab54[_0x0d72('0x12')]['toLowerCase']()==='in'||_0x13ab54[_0x0d72('0x12')][_0x0d72('0x13')]()===_0x0d72('0x14')&&!_0x13ab54['secret']&&!_[_0x0d72('0x15')](_0x13ab54[_0x0d72('0x16')])){_0x36ce1a[_0x0d72('0x17')][_0x0d72('0x18')]({'where':{'id':_0x13ab54[_0x0d72('0x19')]}})['then'](function(_0x3947a7){if(_0x3947a7){_0x3947a7['update']({'lastMsgAt':_0x13ab54[_0x0d72('0x1a')],'lastMsgDirection':_0x13ab54[_0x0d72('0x12')]['toLowerCase']()});}})[_0x0d72('0x1b')](function(_0x276a21){console[_0x0d72('0x1c')](_0x276a21);});}if(_0x13ab54[_0x0d72('0x12')]==='out'&&!_0x13ab54[_0x0d72('0x1d')]){var _0x1a76a6;_0x36ce1a[_0x0d72('0x1e')][_0x0d72('0x1f')]({'where':{'id':_0x13ab54[_0x0d72('0x20')]},'raw':!![]})[_0x0d72('0x21')](function(_0x92142f){_0x1a76a6=_0x92142f;if(_0x1a76a6&&_0x1a76a6['type']){switch(_0x1a76a6[_0x0d72('0x22')]){case _0x0d72('0x23'):var _0x59b850=require('twilio');if(_0x1a76a6['accountSid']&&_0x1a76a6[_0x0d72('0x24')]&&_0x1a76a6[_0x0d72('0x25')]){var _0x537a4f=new _0x59b850(_0x1a76a6[_0x0d72('0x26')],_0x1a76a6['authToken']);_0x537a4f['messages'][_0x0d72('0x27')]({'body':_0x13ab54['body'],'to':_0x0d72('0x28')+_0x13ab54[_0x0d72('0x25')],'from':_0x0d72('0x28')+_0x1a76a6[_0x0d72('0x25')],'statusCallback':_0x1a76a6[_0x0d72('0x29')]+_0x0d72('0x2a')+_0x13ab54['id']+'/status?token='+_0x1a76a6[_0x0d72('0x2b')]})[_0x0d72('0x21')](function(_0x442c9a){if(_0x442c9a[_0x0d72('0x2c')]){return _0x59e501[_0x0d72('0x2d')]({'messageId':_0x442c9a[_0x0d72('0x2c')]});}})['catch'](function(_0x16f1ac){logger[_0x0d72('0x1c')](_0x0d72('0x2e'),_0x0d72('0x2f'),_0x0d72('0x23'),util[_0x0d72('0x30')](_0x16f1ac,{'showHidden':![],'depth':null}));});}else{logger[_0x0d72('0x1c')](_0x0d72('0x2e'),_0x0d72('0x2f'),_0x0d72('0x23'),_0x0d72('0x31'));}break;case'sinch':var _0x1b70f0=_0x1a76a6[_0x0d72('0x26')];var _0x35dd49=_0x1a76a6[_0x0d72('0x24')];var _0x4a674b=_0x1a76a6[_0x0d72('0x32')]+_0x0d72('0x33')+_0x1b70f0+_0x0d72('0x34');var _0x453126={'to':[_0x13ab54[_0x0d72('0x25')]],'message':{'type':_0x0d72('0x35'),'text':_0x13ab54['body']}};var _0x1e6b43={'method':_0x0d72('0x36'),'uri':_0x4a674b,'headers':{'Authorization':_0x0d72('0x37')+_0x35dd49,'Content-Type':_0x0d72('0x38')},'body':_0x453126,'json':!![]};rp(_0x1e6b43)[_0x0d72('0x21')](function(_0x41fb6d){if(_0x41fb6d[_0x0d72('0x39')][0x0]['message_id']){return _0x59e501[_0x0d72('0x2d')]({'messageId':_0x41fb6d[_0x0d72('0x39')][0x0]['message_id']});}})[_0x0d72('0x1b')](function(_0x23c93d){logger[_0x0d72('0x3a')]('WhatsappMessage,\x20%s',_0x23c93d);});break;}}})[_0x0d72('0x3b')](function(){_0x1fa3cf();});}else{_0x1fa3cf();}}},'charset':'utf8mb4','collate':_0x0d72('0x3c')});};
\ No newline at end of file
+var _0x810c=['afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','text','POST','application/json','statuses','message_id','err','WhatsappMessage,\x20%s','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','catch','error','WhatsappAccount','find','type','twilio','accountSid','phone','authToken','messages','create','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid'];(function(_0x5f5497,_0x50803a){var _0x10e943=function(_0x2f5faa){while(--_0x2f5faa){_0x5f5497['push'](_0x5f5497['shift']());}};_0x10e943(++_0x50803a);}(_0x810c,0x1a5));var _0xc810=function(_0x35387d,_0x1ba72f){_0x35387d=_0x35387d-0x0;var _0x3aba56=_0x810c[_0x35387d];return _0x3aba56;};'use strict';var _=require(_0xc810('0x0'));var util=require(_0xc810('0x1'));var logger=require('../../config/logger')(_0xc810('0x2'));var moment=require(_0xc810('0x3'));var BPromise=require('bluebird');var rp=require(_0xc810('0x4'));var fetch=require('node-fetch');var fs=require('fs');var path=require(_0xc810('0x5'));var rimraf=require(_0xc810('0x6'));var config=require(_0xc810('0x7'));var attributes=require(_0xc810('0x8'));module[_0xc810('0x9')]=function(_0x3c5bb8,_0x38a729){return _0x3c5bb8['define'](_0xc810('0xa'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xc810('0xb'),'fields':[_0xc810('0xb')]},{'name':_0xc810('0xc'),'fields':[_0xc810('0xd')],'type':_0xc810('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x458ebd,_0x2ec487,_0x2244ae){var _0x428072=_0x3c5bb8['models'];var _0x1bfea9=_0x458ebd[_0xc810('0xf')]({'plain':!![]});if(_0x1bfea9[_0xc810('0x10')][_0xc810('0x11')]()==='in'||_0x1bfea9[_0xc810('0x10')][_0xc810('0x11')]()===_0xc810('0x12')&&!_0x1bfea9[_0xc810('0x13')]&&!_[_0xc810('0x14')](_0x1bfea9['UserId'])){_0x428072[_0xc810('0x15')][_0xc810('0x16')]({'where':{'id':_0x1bfea9[_0xc810('0x17')]}})[_0xc810('0x18')](function(_0xc76c4){if(_0xc76c4){_0xc76c4[_0xc810('0x19')]({'lastMsgAt':_0x1bfea9['createdAt'],'lastMsgDirection':_0x1bfea9[_0xc810('0x10')]['toLowerCase']()});}})[_0xc810('0x1a')](function(_0xd5eac3){console[_0xc810('0x1b')](_0xd5eac3);});}if(_0x1bfea9[_0xc810('0x10')]==='out'&&!_0x1bfea9[_0xc810('0x13')]){var _0x43e192;_0x428072[_0xc810('0x1c')][_0xc810('0x1d')]({'where':{'id':_0x1bfea9['WhatsappAccountId']},'raw':!![]})['then'](function(_0x5cace4){_0x43e192=_0x5cace4;if(_0x43e192&&_0x43e192[_0xc810('0x1e')]){switch(_0x43e192[_0xc810('0x1e')]){case _0xc810('0x1f'):var _0x285cbe=require(_0xc810('0x1f'));if(_0x43e192[_0xc810('0x20')]&&_0x43e192['authToken']&&_0x43e192[_0xc810('0x21')]){var _0x48f335=new _0x285cbe(_0x43e192[_0xc810('0x20')],_0x43e192[_0xc810('0x22')]);_0x48f335[_0xc810('0x23')][_0xc810('0x24')]({'body':_0x1bfea9[_0xc810('0xd')],'to':_0xc810('0x25')+_0x1bfea9[_0xc810('0x21')],'from':_0xc810('0x25')+_0x43e192['phone'],'statusCallback':_0x43e192[_0xc810('0x26')]+_0xc810('0x27')+_0x1bfea9['id']+_0xc810('0x28')+_0x43e192[_0xc810('0x29')]})[_0xc810('0x18')](function(_0x5e9d54){if(_0x5e9d54['sid']){return _0x458ebd[_0xc810('0x19')]({'messageId':_0x5e9d54[_0xc810('0x2a')]});}})[_0xc810('0x1a')](function(_0x46e4ba){logger[_0xc810('0x1b')]('WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xc810('0x1f'),util['inspect'](_0x46e4ba,{'showHidden':![],'depth':null}));});}else{logger[_0xc810('0x1b')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xc810('0x2b'),_0xc810('0x1f'),_0xc810('0x2c'));}break;case _0xc810('0x2d'):var _0x273576=_0x43e192[_0xc810('0x20')];var _0x1a427e=_0x43e192[_0xc810('0x22')];var _0x39e5a8=_0x43e192[_0xc810('0x2e')]+_0xc810('0x2f')+_0x273576+_0xc810('0x30');var _0x1e9c06={'to':[_0x1bfea9[_0xc810('0x21')]],'message':{'type':_0xc810('0x31'),'text':_0x1bfea9[_0xc810('0xd')]}};var _0x1d3dd4={'method':_0xc810('0x32'),'uri':_0x39e5a8,'headers':{'Authorization':'Bearer\x20'+_0x1a427e,'Content-Type':_0xc810('0x33')},'body':_0x1e9c06,'json':!![]};rp(_0x1d3dd4)[_0xc810('0x18')](function(_0x27d7a7){if(_0x27d7a7['statuses'][0x0]['message_id']){return _0x458ebd[_0xc810('0x19')]({'messageId':_0x27d7a7[_0xc810('0x34')][0x0][_0xc810('0x35')]});}})[_0xc810('0x1a')](function(_0x257191){logger[_0xc810('0x36')](_0xc810('0x37'),_0x257191);});break;}}})['finally'](function(){_0x2244ae();});}else{_0x2244ae();}}},'charset':_0xc810('0x38'),'collate':_0xc810('0x39')});};
\ No newline at end of file
index fba39fd..1e44a00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd584=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','body','options','CreateWhatsappMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2d93c9,_0x444c92){var _0x636d5f=function(_0x1efb83){while(--_0x1efb83){_0x2d93c9['push'](_0x2d93c9['shift']());}};_0x636d5f(++_0x444c92);}(_0xd584,0xe1));var _0x4d58=function(_0x3d3647,_0x42ed9f){_0x3d3647=_0x3d3647-0x0;var _0x404cc7=_0xd584[_0x3d3647];return _0x404cc7;};'use strict';var _=require('lodash');var util=require(_0x4d58('0x0'));var moment=require(_0x4d58('0x1'));var BPromise=require(_0x4d58('0x2'));var rs=require(_0x4d58('0x3'));var fs=require('fs');var Redis=require(_0x4d58('0x4'));var db=require(_0x4d58('0x5'))['db'];var utils=require(_0x4d58('0x6'));var logger=require(_0x4d58('0x7'))(_0x4d58('0x8'));var config=require(_0x4d58('0x9'));var jayson=require(_0x4d58('0xa'));var client=jayson['client'][_0x4d58('0xb')]({'port':0x232a});config[_0x4d58('0xc')]=_[_0x4d58('0xd')](config['redis'],{'host':_0x4d58('0xe'),'port':0x18eb});var socket=require(_0x4d58('0xf'))(new Redis(config[_0x4d58('0xc')]));require(_0x4d58('0x10'))[_0x4d58('0x11')](socket);function respondWithRpcPromise(_0x185688,_0x4976d8,_0x3ed3af){return new BPromise(function(_0x301cec,_0x3b5b75){return client[_0x4d58('0x12')](_0x185688,_0x3ed3af)[_0x4d58('0x13')](function(_0x5c92df){logger[_0x4d58('0x14')](_0x4d58('0x15'),_0x4976d8,_0x4d58('0x16'));logger[_0x4d58('0x17')](_0x4d58('0x18'),_0x4976d8,_0x4d58('0x16'),JSON[_0x4d58('0x19')](_0x5c92df));if(_0x5c92df[_0x4d58('0x1a')]){if(_0x5c92df[_0x4d58('0x1a')]['code']===0x1f4){logger['error'](_0x4d58('0x15'),_0x4976d8,_0x5c92df[_0x4d58('0x1a')]['message']);return _0x3b5b75(_0x5c92df[_0x4d58('0x1a')][_0x4d58('0x1b')]);}logger[_0x4d58('0x1a')]('WhatsappMessage,\x20%s,\x20%s',_0x4976d8,_0x5c92df['error'][_0x4d58('0x1b')]);return _0x301cec(_0x5c92df[_0x4d58('0x1a')]['message']);}else{logger[_0x4d58('0x14')](_0x4d58('0x15'),_0x4976d8,'request\x20sent');_0x301cec(_0x5c92df[_0x4d58('0x1c')][_0x4d58('0x1b')]);}})[_0x4d58('0x1d')](function(_0x4127e5){logger[_0x4d58('0x1a')]('WhatsappMessage,\x20%s,\x20%s',_0x4976d8,_0x4127e5);_0x3b5b75(_0x4127e5);});});}exports['CreateWhatsappMessage']=function(_0xbef87d){var _0x42db14=this;return new Promise(function(_0x9abe63,_0x4b1be3){return db['WhatsappMessage']['create'](_0xbef87d[_0x4d58('0x1e')],{'raw':_0xbef87d[_0x4d58('0x1f')]?_0xbef87d[_0x4d58('0x1f')]['raw']===undefined?!![]:![]:!![]})[_0x4d58('0x13')](function(_0x3e9c44){logger['info'](_0x4d58('0x20'),_0xbef87d);logger[_0x4d58('0x17')](_0x4d58('0x20'),_0xbef87d,JSON[_0x4d58('0x19')](_0x3e9c44));_0x9abe63(_0x3e9c44);})['catch'](function(_0x4d9414){logger[_0x4d58('0x1a')](_0x4d58('0x20'),_0x4d9414['message'],_0xbef87d);_0x4b1be3(_0x42db14['error'](0x1f4,_0x4d9414[_0x4d58('0x1b')]));});});};
\ No newline at end of file
+var _0x55dc=['catch','CreateWhatsappMessage','create','body','options','raw','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x11d7b5,_0x4272c3){var _0x2ce311=function(_0x3a0c51){while(--_0x3a0c51){_0x11d7b5['push'](_0x11d7b5['shift']());}};_0x2ce311(++_0x4272c3);}(_0x55dc,0x17a));var _0xc55d=function(_0x1ddaf2,_0x247b5d){_0x1ddaf2=_0x1ddaf2-0x0;var _0x3c1eaa=_0x55dc[_0x1ddaf2];return _0x3c1eaa;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc55d('0x0'));var BPromise=require(_0xc55d('0x1'));var rs=require(_0xc55d('0x2'));var fs=require('fs');var Redis=require(_0xc55d('0x3'));var db=require(_0xc55d('0x4'))['db'];var utils=require(_0xc55d('0x5'));var logger=require(_0xc55d('0x6'))(_0xc55d('0x7'));var config=require(_0xc55d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc55d('0x9')][_0xc55d('0xa')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xc55d('0xb'),'port':0x18eb});var socket=require(_0xc55d('0xc'))(new Redis(config['redis']));require(_0xc55d('0xd'))[_0xc55d('0xe')](socket);function respondWithRpcPromise(_0x101843,_0xd6142b,_0x461261){return new BPromise(function(_0x1e19b9,_0x47e88d){return client[_0xc55d('0xf')](_0x101843,_0x461261)[_0xc55d('0x10')](function(_0x36fb21){logger[_0xc55d('0x11')](_0xc55d('0x12'),_0xd6142b,_0xc55d('0x13'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xd6142b,'request\x20sent',JSON[_0xc55d('0x14')](_0x36fb21));if(_0x36fb21[_0xc55d('0x15')]){if(_0x36fb21[_0xc55d('0x15')][_0xc55d('0x16')]===0x1f4){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0xd6142b,_0x36fb21[_0xc55d('0x15')]['message']);return _0x47e88d(_0x36fb21['error'][_0xc55d('0x17')]);}logger[_0xc55d('0x15')](_0xc55d('0x12'),_0xd6142b,_0x36fb21[_0xc55d('0x15')][_0xc55d('0x17')]);return _0x1e19b9(_0x36fb21[_0xc55d('0x15')][_0xc55d('0x17')]);}else{logger[_0xc55d('0x11')](_0xc55d('0x12'),_0xd6142b,_0xc55d('0x13'));_0x1e19b9(_0x36fb21[_0xc55d('0x18')][_0xc55d('0x17')]);}})[_0xc55d('0x19')](function(_0x1d1c03){logger[_0xc55d('0x15')]('WhatsappMessage,\x20%s,\x20%s',_0xd6142b,_0x1d1c03);_0x47e88d(_0x1d1c03);});});}exports[_0xc55d('0x1a')]=function(_0xd7b479){var _0x137291=this;return new Promise(function(_0x59b853,_0x1c6896){return db['WhatsappMessage'][_0xc55d('0x1b')](_0xd7b479[_0xc55d('0x1c')],{'raw':_0xd7b479[_0xc55d('0x1d')]?_0xd7b479[_0xc55d('0x1d')][_0xc55d('0x1e')]===undefined?!![]:![]:!![]})[_0xc55d('0x10')](function(_0x34930c){logger[_0xc55d('0x11')](_0xc55d('0x1a'),_0xd7b479);logger['debug'](_0xc55d('0x1a'),_0xd7b479,JSON[_0xc55d('0x14')](_0x34930c));_0x59b853(_0x34930c);})[_0xc55d('0x19')](function(_0x3b2bca){logger[_0xc55d('0x15')](_0xc55d('0x1a'),_0x3b2bca[_0xc55d('0x17')],_0xd7b479);_0x1c6896(_0x137291['error'](0x1f4,_0x3b2bca[_0xc55d('0x17')]));});});};
\ No newline at end of file
index 10d0710..938fd14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc57=['length','whatsappMessage:','./whatsappMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdc57,0xfe));var _0x7dc5=function(_0x2c59a6,_0x106f5d){_0x2c59a6=_0x2c59a6-0x0;var _0x5b543f=_0xdc57[_0x2c59a6];return _0x5b543f;};'use strict';var WhatsappMessageEvents=require(_0x7dc5('0x0'));var events=[_0x7dc5('0x1'),_0x7dc5('0x2'),_0x7dc5('0x3')];function createListener(_0x4e1b56,_0x479d99){return function(_0xfac14f){_0x479d99[_0x7dc5('0x4')](_0x4e1b56,_0xfac14f);};}function removeListener(_0x5170e0,_0x529270){return function(){WhatsappMessageEvents[_0x7dc5('0x5')](_0x5170e0,_0x529270);};}exports[_0x7dc5('0x6')]=function(_0x459d89){for(var _0x5ae5fb=0x0,_0x5c9a65=events[_0x7dc5('0x7')];_0x5ae5fb<_0x5c9a65;_0x5ae5fb++){var _0x4389d7=events[_0x5ae5fb];var _0x1b1270=createListener(_0x7dc5('0x8')+_0x4389d7,_0x459d89);WhatsappMessageEvents['on'](_0x4389d7,_0x1b1270);}};
\ No newline at end of file
+var _0x1b21=['save','remove','update','emit','removeListener','register','length','whatsappMessage:'];(function(_0x1bbcc2,_0x35795d){var _0x126e83=function(_0x430b2c){while(--_0x430b2c){_0x1bbcc2['push'](_0x1bbcc2['shift']());}};_0x126e83(++_0x35795d);}(_0x1b21,0x108));var _0x11b2=function(_0x2d715f,_0x172e0e){_0x2d715f=_0x2d715f-0x0;var _0x3c812b=_0x1b21[_0x2d715f];return _0x3c812b;};'use strict';var WhatsappMessageEvents=require('./whatsappMessage.events');var events=[_0x11b2('0x0'),_0x11b2('0x1'),_0x11b2('0x2')];function createListener(_0x5d1762,_0x33a0d3){return function(_0x479d88){_0x33a0d3[_0x11b2('0x3')](_0x5d1762,_0x479d88);};}function removeListener(_0x578c6a,_0x11b097){return function(){WhatsappMessageEvents[_0x11b2('0x4')](_0x578c6a,_0x11b097);};}exports[_0x11b2('0x5')]=function(_0x495aef){for(var _0x8429d5=0x0,_0x497d04=events[_0x11b2('0x6')];_0x8429d5<_0x497d04;_0x8429d5++){var _0x1a8d5a=events[_0x8429d5];var _0x23dac2=createListener(_0x11b2('0x7')+_0x1a8d5a,_0x495aef);WhatsappMessageEvents['on'](_0x1a8d5a,_0x23dac2);}};
\ No newline at end of file
index f6f495c..016dad6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a82=['addAgents','update','delete','destroy','removeAgents','exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post'];(function(_0x1d219c,_0x50820a){var _0x3d9fde=function(_0x2e5b62){while(--_0x2e5b62){_0x1d219c['push'](_0x1d219c['shift']());}};_0x3d9fde(++_0x50820a);}(_0x7a82,0x17d));var _0x27a8=function(_0x93ba08,_0x3fc6a5){_0x93ba08=_0x93ba08-0x0;var _0x50df7c=_0x7a82[_0x93ba08];return _0x50df7c;};'use strict';var multer=require('multer');var util=require(_0x27a8('0x0'));var path=require(_0x27a8('0x1'));var timeout=require(_0x27a8('0x2'));var express=require(_0x27a8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x27a8('0x4'));var interaction=require(_0x27a8('0x5'));var config=require(_0x27a8('0x6'));var controller=require('./whatsappQueue.controller');router[_0x27a8('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x27a8('0x7')]('/describe',auth[_0x27a8('0x8')](),controller['describe']);router['get'](_0x27a8('0x9'),auth['isAuthenticated'](),controller[_0x27a8('0xa')]);router[_0x27a8('0x7')](_0x27a8('0xb'),auth[_0x27a8('0x8')](),controller[_0x27a8('0xc')]);router[_0x27a8('0x7')](_0x27a8('0xd'),auth[_0x27a8('0x8')](),controller[_0x27a8('0xe')]);router[_0x27a8('0x7')](_0x27a8('0xf'),auth['isAuthenticated'](),controller[_0x27a8('0x10')]);router['post']('/',auth[_0x27a8('0x8')](),controller[_0x27a8('0x11')]);router[_0x27a8('0x12')](_0x27a8('0xd'),auth[_0x27a8('0x8')](),controller['addTeams']);router[_0x27a8('0x12')](_0x27a8('0xf'),auth[_0x27a8('0x8')](),controller[_0x27a8('0x13')]);router['put']('/:id',auth[_0x27a8('0x8')](),controller[_0x27a8('0x14')]);router[_0x27a8('0x15')]('/:id',auth[_0x27a8('0x8')](),controller[_0x27a8('0x16')]);router['delete'](_0x27a8('0xd'),auth[_0x27a8('0x8')](),controller['removeTeams']);router['delete'](_0x27a8('0xf'),auth[_0x27a8('0x8')](),controller[_0x27a8('0x17')]);module[_0x27a8('0x18')]=router;
\ No newline at end of file
+var _0x030e=['Router','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','/describe','isAuthenticated','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','addTeams','put','update','delete','/:id/teams','removeTeams','exports','multer','path','express'];(function(_0x25699c,_0x3973fc){var _0x1fbe02=function(_0x542b9d){while(--_0x542b9d){_0x25699c['push'](_0x25699c['shift']());}};_0x1fbe02(++_0x3973fc);}(_0x030e,0xac));var _0xe030=function(_0x546a8f,_0x2bb120){_0x546a8f=_0x546a8f-0x0;var _0x213cba=_0x030e[_0x546a8f];return _0x213cba;};'use strict';var multer=require(_0xe030('0x0'));var util=require('util');var path=require(_0xe030('0x1'));var timeout=require('connect-timeout');var express=require(_0xe030('0x2'));var router=express[_0xe030('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe030('0x4'));var config=require(_0xe030('0x5'));var controller=require(_0xe030('0x6'));router[_0xe030('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe030('0x7')](_0xe030('0x8'),auth[_0xe030('0x9')](),controller['describe']);router['get'](_0xe030('0xa'),auth[_0xe030('0x9')](),controller[_0xe030('0xb')]);router['get'](_0xe030('0xc'),auth[_0xe030('0x9')](),controller[_0xe030('0xd')]);router[_0xe030('0x7')]('/:id/teams',auth[_0xe030('0x9')](),controller[_0xe030('0xe')]);router[_0xe030('0x7')](_0xe030('0xf'),auth[_0xe030('0x9')](),controller[_0xe030('0x10')]);router[_0xe030('0x11')]('/',auth[_0xe030('0x9')](),controller['create']);router[_0xe030('0x11')]('/:id/teams',auth[_0xe030('0x9')](),controller[_0xe030('0x12')]);router[_0xe030('0x11')]('/:id/users',auth[_0xe030('0x9')](),controller['addAgents']);router[_0xe030('0x13')](_0xe030('0xa'),auth[_0xe030('0x9')](),controller[_0xe030('0x14')]);router[_0xe030('0x15')](_0xe030('0xa'),auth[_0xe030('0x9')](),controller['destroy']);router['delete'](_0xe030('0x16'),auth[_0xe030('0x9')](),controller[_0xe030('0x17')]);router[_0xe030('0x15')](_0xe030('0xf'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xe030('0x18')]=router;
\ No newline at end of file
index 27f09df..c1f52d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0b9=['beepall','roundrobin','STRING','sequelize','name','INTEGER','ENUM','rrmemory'];(function(_0x1c321e,_0x250d74){var _0x3b4359=function(_0xfbb33){while(--_0xfbb33){_0x1c321e['push'](_0x1c321e['shift']());}};_0x3b4359(++_0x250d74);}(_0xb0b9,0x1f3));var _0x9b0b=function(_0x4d09ca,_0x300adc){_0x4d09ca=_0x4d09ca-0x0;var _0x2d7d77=_0xb0b9[_0x4d09ca];return _0x2d7d77;};'use strict';var Sequelize=require(_0x9b0b('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x9b0b('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x9b0b('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9b0b('0x3')](_0x9b0b('0x4'),_0x9b0b('0x5'),_0x9b0b('0x6'))},'description':{'type':Sequelize[_0x9b0b('0x7')]}};
\ No newline at end of file
+var _0x35a9=['exports','STRING','name','INTEGER','beepall'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0x35a9,0x73));var _0x935a=function(_0x54ea66,_0x13871e){_0x54ea66=_0x54ea66-0x0;var _0xdfc373=_0x35a9[_0x54ea66];return _0xdfc373;};'use strict';var Sequelize=require('sequelize');module[_0x935a('0x0')]={'name':{'type':Sequelize[_0x935a('0x1')],'unique':_0x935a('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x935a('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x935a('0x4'),'roundrobin')},'description':{'type':Sequelize[_0x935a('0x1')]}};
\ No newline at end of file
index c749351..9a1912c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd540=['ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','end','json','offset','undefined','limit','count','status','Content-Range','update','then','get','WhatsappQueues','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','WhatsappQueue','type','getOptions','where','include','query','findAll','rows','catch','show','model','rawAttributes','keys','filters','intersection','attributes','fields','options','create','body','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','findOne','UserWhatsappQueue','nolimit','order','sort','pick','WhatsappQueueId','filter','merge','User','findAndCountAll','UserId','whatsappPause','createdAt','format','SIP','Team','length','getTeams','hasOwnProperty','addTeams','ids','Agents','online','voicePause','interface','sequelize','transaction','findOrCreate','forEach','emit','select','field','tq.TeamId','team_has_whatsapp_queues','user_has_teams','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','SELECT','every','TeamId','union','compact','removeTeams','removeAgents','addAgents','isArray','userWhatsappQueue:remove','getAgents','util'];(function(_0x24a6df,_0x9a121c){var _0x3a730b=function(_0x4c8e2a){while(--_0x4c8e2a){_0x24a6df['push'](_0x24a6df['shift']());}};_0x3a730b(++_0x9a121c);}(_0xd540,0xdd));var _0x0d54=function(_0x4e0a44,_0xbadb96){_0x4e0a44=_0x4e0a44-0x0;var _0x45ed17=_0xd540[_0x4e0a44];return _0x45ed17;};'use strict';var BPromise=require('bluebird');var util=require(_0x0d54('0x0'));var _=require('lodash');var squel=require('squel');var Redis=require(_0x0d54('0x1'));var qs=require(_0x0d54('0x2'));var logger=require(_0x0d54('0x3'))(_0x0d54('0x4'));var config=require(_0x0d54('0x5'));var db=require(_0x0d54('0x6'))['db'];config[_0x0d54('0x7')]=_['defaults'](config[_0x0d54('0x7')],{'host':_0x0d54('0x8'),'port':0x18eb});var socket=require(_0x0d54('0x9'))(new Redis(config[_0x0d54('0x7')]));require('./whatsappQueue.socket')[_0x0d54('0xa')](socket);function respondWithStatusCode(_0x4f6582,_0x73bc40){_0x73bc40=_0x73bc40||0xcc;return function(_0x1e1cab){if(_0x1e1cab){return _0x4f6582['sendStatus'](_0x73bc40);}return _0x4f6582['status'](_0x73bc40)[_0x0d54('0xb')]();};}function respondWithResult(_0xc1a36d,_0xf5fa4a){_0xf5fa4a=_0xf5fa4a||0xc8;return function(_0x4d28cb){if(_0x4d28cb){return _0xc1a36d['status'](_0xf5fa4a)[_0x0d54('0xc')](_0x4d28cb);}};}function respondWithFilteredResult(_0x4e9134,_0xbc3775){return function(_0x347a90){if(_0x347a90){var _0x3fef9b=typeof _0xbc3775[_0x0d54('0xd')]===_0x0d54('0xe')&&typeof _0xbc3775[_0x0d54('0xf')]===_0x0d54('0xe');var _0x2aaa34=_0x347a90[_0x0d54('0x10')];var _0xceec33=_0x3fef9b?0x0:_0xbc3775[_0x0d54('0xd')];var _0xf2a2d=_0x3fef9b?_0x347a90[_0x0d54('0x10')]:_0xbc3775[_0x0d54('0xd')]+_0xbc3775[_0x0d54('0xf')];var _0x18d766;if(_0xf2a2d>=_0x2aaa34){_0xf2a2d=_0x2aaa34;_0x18d766=0xc8;}else{_0x18d766=0xce;}_0x4e9134[_0x0d54('0x11')](_0x18d766);return _0x4e9134['set'](_0x0d54('0x12'),_0xceec33+'-'+_0xf2a2d+'/'+_0x2aaa34)[_0x0d54('0xc')](_0x347a90);}return null;};}function saveUpdates(_0x22ff8b){return function(_0x311f00){if(_0x311f00){return _0x311f00[_0x0d54('0x13')](_0x22ff8b)[_0x0d54('0x14')](function(_0x21fc0f){return _0x21fc0f;});}return null;};}function removeEntity(_0x35d620){return function(_0x4bd494){if(_0x4bd494){return _0x4bd494['destroy']()[_0x0d54('0x14')](function(){var _0x4400f5=_0x4bd494[_0x0d54('0x15')]({'plain':!![]});var _0x351dd6=_0x0d54('0x16');return db[_0x0d54('0x17')][_0x0d54('0x18')]({'where':{'type':_0x351dd6,'resourceId':_0x4400f5['id']}})[_0x0d54('0x14')](function(){return _0x4bd494;});})[_0x0d54('0x14')](function(){_0x35d620[_0x0d54('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e91ee){return function(_0x5eeb8b){if(!_0x5eeb8b){_0x2e91ee[_0x0d54('0x19')](0x194);}return _0x5eeb8b;};}function handleError(_0x39bade,_0x694209){_0x694209=_0x694209||0x1f4;return function(_0x5c6a29){logger[_0x0d54('0x1a')](_0x5c6a29[_0x0d54('0x1b')]);if(_0x5c6a29[_0x0d54('0x1c')]){delete _0x5c6a29[_0x0d54('0x1c')];}_0x39bade[_0x0d54('0x11')](_0x694209)[_0x0d54('0x1d')](_0x5c6a29);};}exports[_0x0d54('0x1e')]=function(_0x382a4e,_0x5ecd06){var _0x41d965={};var _0x632ac6={'count':0x0,'rows':[]};var _0x15c7f3=_[_0x0d54('0x1f')](db[_0x0d54('0x20')]['rawAttributes'],function(_0x2c3763){return{'name':_0x2c3763['fieldName'],'type':_0x2c3763[_0x0d54('0x21')]['key']};});_0x41d965=qs[_0x0d54('0x22')](_0x15c7f3,_0x382a4e);var _0x331aac={'where':_0x41d965[_0x0d54('0x23')]};return db[_0x0d54('0x20')]['count'](_0x331aac)[_0x0d54('0x14')](function(_0x183813){_0x632ac6['count']=_0x183813;_0x41d965[_0x0d54('0x24')]=qs[_0x0d54('0x24')](_0x382a4e[_0x0d54('0x25')]);return db[_0x0d54('0x20')][_0x0d54('0x26')](_0x41d965);})['then'](function(_0x4fc568){_0x632ac6[_0x0d54('0x27')]=_0x4fc568;return _0x632ac6;})['then'](respondWithFilteredResult(_0x5ecd06,_0x41d965))[_0x0d54('0x28')](handleError(_0x5ecd06,null));};exports[_0x0d54('0x29')]=function(_0x25733a,_0x32db73){var _0x35d17a={'raw':!![],'where':{'id':_0x25733a['params']['id']}},_0x55921f={};_0x55921f[_0x0d54('0x2a')]=_['keys'](db['WhatsappQueue'][_0x0d54('0x2b')]);_0x55921f[_0x0d54('0x25')]=_[_0x0d54('0x2c')](_0x25733a['query']);_0x55921f[_0x0d54('0x2d')]=_[_0x0d54('0x2e')](_0x55921f['model'],_0x55921f['query']);_0x35d17a[_0x0d54('0x2f')]=_[_0x0d54('0x2e')](_0x55921f['model'],qs[_0x0d54('0x30')](_0x25733a[_0x0d54('0x25')][_0x0d54('0x30')]));_0x35d17a[_0x0d54('0x2f')]=_0x35d17a['attributes']['length']?_0x35d17a[_0x0d54('0x2f')]:_0x55921f[_0x0d54('0x2a')];if(_0x25733a[_0x0d54('0x25')]['includeAll']){_0x35d17a['include']=[{'all':!![]}];}_0x35d17a=_['merge']({},_0x35d17a,_0x25733a[_0x0d54('0x31')]);return db[_0x0d54('0x20')]['find'](_0x35d17a)[_0x0d54('0x14')](handleEntityNotFound(_0x32db73,null))[_0x0d54('0x14')](respondWithResult(_0x32db73,null))[_0x0d54('0x28')](handleError(_0x32db73,null));};exports[_0x0d54('0x32')]=function(_0x6fbd21,_0x5c5061){return db[_0x0d54('0x20')][_0x0d54('0x32')](_0x6fbd21[_0x0d54('0x33')],{})[_0x0d54('0x14')](function(_0x195429){var _0x232e0f=_0x6fbd21[_0x0d54('0x34')][_0x0d54('0x15')]({'plain':!![]});if(!_0x232e0f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x232e0f['role']===_0x0d54('0x34')){var _0x4128df=_0x195429[_0x0d54('0x15')]({'plain':!![]});var _0xc4cc4f=_0x0d54('0x16');return db[_0x0d54('0x35')][_0x0d54('0x36')]({'where':{'name':_0xc4cc4f,'userProfileId':_0x232e0f[_0x0d54('0x37')]},'raw':!![]})[_0x0d54('0x14')](function(_0x89388c){if(_0x89388c&&_0x89388c[_0x0d54('0x38')]===0x0){return db[_0x0d54('0x17')][_0x0d54('0x32')]({'name':_0x4128df[_0x0d54('0x1c')],'resourceId':_0x4128df['id'],'type':_0x89388c['name'],'sectionId':_0x89388c['id']},{})['then'](function(){return _0x195429;});}else{return _0x195429;}})[_0x0d54('0x28')](function(_0x2798d3){logger[_0x0d54('0x1a')](_0x0d54('0x39'),_0x2798d3);throw _0x2798d3;});}return _0x195429;})[_0x0d54('0x14')](respondWithResult(_0x5c5061,0xc9))[_0x0d54('0x28')](handleError(_0x5c5061,null));};exports[_0x0d54('0x13')]=function(_0xb11f74,_0x3d924b){if(_0xb11f74[_0x0d54('0x33')]['id']){delete _0xb11f74[_0x0d54('0x33')]['id'];}return db[_0x0d54('0x20')][_0x0d54('0x36')]({'where':{'id':_0xb11f74['params']['id']}})[_0x0d54('0x14')](handleEntityNotFound(_0x3d924b,null))[_0x0d54('0x14')](saveUpdates(_0xb11f74[_0x0d54('0x33')],null))['then'](respondWithResult(_0x3d924b,null))[_0x0d54('0x28')](handleError(_0x3d924b,null));};exports['destroy']=function(_0x336efc,_0x51757d){return db['WhatsappQueue']['find']({'where':{'id':_0x336efc[_0x0d54('0x3a')]['id']}})[_0x0d54('0x14')](handleEntityNotFound(_0x51757d,null))['then'](removeEntity(_0x51757d,null))['catch'](handleError(_0x51757d,null));};exports[_0x0d54('0x3b')]=function(_0x2f5901,_0x1d45c4){return db[_0x0d54('0x20')][_0x0d54('0x3b')]()[_0x0d54('0x14')](respondWithResult(_0x1d45c4,null))['catch'](handleError(_0x1d45c4,null));};exports['getMembers']=function(_0x1c9c02,_0x47ffe0){var _0x71cd5e={'raw':!![],'where':{}},_0x1e5f97={},_0x2242c4;return db['WhatsappQueue'][_0x0d54('0x3c')]({'where':{'id':_0x1c9c02[_0x0d54('0x3a')]['id']}})[_0x0d54('0x14')](handleEntityNotFound(_0x47ffe0,null))['then'](function(_0x3dfe89){if(_0x3dfe89){_0x2242c4=_0x3dfe89[_0x0d54('0x15')]({'plain':!![]});_0x1e5f97['model']=_[_0x0d54('0x2c')](db[_0x0d54('0x3d')][_0x0d54('0x2b')]);_0x1e5f97[_0x0d54('0x25')]=_[_0x0d54('0x2c')](_0x1c9c02[_0x0d54('0x25')]);_0x1e5f97[_0x0d54('0x2d')]=_[_0x0d54('0x2e')](_0x1e5f97[_0x0d54('0x2a')],_0x1e5f97[_0x0d54('0x25')]);_0x71cd5e[_0x0d54('0x2f')]=_[_0x0d54('0x2e')](_0x1e5f97[_0x0d54('0x2a')],qs[_0x0d54('0x30')](_0x1c9c02[_0x0d54('0x25')][_0x0d54('0x30')]));_0x71cd5e[_0x0d54('0x2f')]=_0x71cd5e[_0x0d54('0x2f')]['length']?_0x71cd5e[_0x0d54('0x2f')]:_0x1e5f97[_0x0d54('0x2a')];if(!_0x1c9c02[_0x0d54('0x25')]['hasOwnProperty'](_0x0d54('0x3e'))){_0x71cd5e[_0x0d54('0xf')]=qs[_0x0d54('0xf')](_0x1c9c02[_0x0d54('0x25')][_0x0d54('0xf')]);_0x71cd5e[_0x0d54('0xd')]=qs[_0x0d54('0xd')](_0x1c9c02[_0x0d54('0x25')][_0x0d54('0xd')]);}_0x71cd5e[_0x0d54('0x3f')]=qs[_0x0d54('0x40')](_0x1c9c02[_0x0d54('0x25')]['sort']);_0x71cd5e[_0x0d54('0x23')]=qs[_0x0d54('0x2d')](_[_0x0d54('0x41')](_0x1c9c02[_0x0d54('0x25')],_0x1e5f97[_0x0d54('0x2d')]));_0x71cd5e[_0x0d54('0x23')][_0x0d54('0x42')]=_0x3dfe89['id'];if(_0x1c9c02[_0x0d54('0x25')][_0x0d54('0x43')]){_0x71cd5e[_0x0d54('0x23')]=_[_0x0d54('0x44')](_0x71cd5e['where'],{'$or':_[_0x0d54('0x1f')](_0x71cd5e[_0x0d54('0x2f')],function(_0x5a3fc6){var _0x5bf8d4={};_0x5bf8d4[_0x5a3fc6]={'$like':'%'+_0x1c9c02[_0x0d54('0x25')][_0x0d54('0x43')]+'%'};return _0x5bf8d4;})});}_0x71cd5e=_[_0x0d54('0x44')]({},_0x71cd5e,_0x1c9c02['options']);return db['UserWhatsappQueue']['findAll'](_0x71cd5e);}})[_0x0d54('0x14')](function(_0x231b7b){if(_0x231b7b){return db[_0x0d54('0x45')][_0x0d54('0x46')]({'where':{'id':_[_0x0d54('0x1f')](_0x231b7b,_0x0d54('0x47')),'role':'agent'},'attributes':['id',_0x0d54('0x1c'),_0x0d54('0x48'),'updatedAt',_0x0d54('0x49')]});}})[_0x0d54('0x14')](function(_0x3fe713){if(_0x3fe713){return{'count':_0x3fe713[_0x0d54('0x10')],'rows':_['map'](_0x3fe713['rows'],function(_0x39cecd){return{'membername':_0x39cecd[_0x0d54('0x1c')],'UserId':_0x39cecd['id'],'queue_name':_0x2242c4[_0x0d54('0x1c')],'WhatsappQueueId':_0x2242c4['id'],'interface':util[_0x0d54('0x4a')]('%s/%s',_0x0d54('0x4b'),_0x39cecd['name']),'penalty':0x0,'paused':_0x39cecd[_0x0d54('0x48')],'createdAt':_0x39cecd[_0x0d54('0x49')],'updatedAt':_0x39cecd['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x0d54('0x14')](respondWithFilteredResult(_0x47ffe0,_0x71cd5e))['catch'](handleError(_0x47ffe0,null));};exports['getTeams']=function(_0x18f237,_0x4da476){var _0xd4c7b9={};var _0x145d70={};var _0x5c1c46;var _0x5d0dcf;return db[_0x0d54('0x20')]['findOne']({'where':{'id':_0x18f237[_0x0d54('0x3a')]['id']}})['then'](handleEntityNotFound(_0x4da476,null))[_0x0d54('0x14')](function(_0x3fc679){if(_0x3fc679){_0x5c1c46=_0x3fc679;_0x145d70[_0x0d54('0x2a')]=_[_0x0d54('0x2c')](db[_0x0d54('0x4c')]['rawAttributes']);_0x145d70['query']=_[_0x0d54('0x2c')](_0x18f237[_0x0d54('0x25')]);_0x145d70[_0x0d54('0x2d')]=_[_0x0d54('0x2e')](_0x145d70['model'],_0x145d70['query']);_0xd4c7b9['attributes']=_[_0x0d54('0x2e')](_0x145d70['model'],qs['fields'](_0x18f237[_0x0d54('0x25')][_0x0d54('0x30')]));_0xd4c7b9['attributes']=_0xd4c7b9['attributes'][_0x0d54('0x4d')]?_0xd4c7b9[_0x0d54('0x2f')]:_0x145d70[_0x0d54('0x2a')];_0xd4c7b9[_0x0d54('0x3f')]=qs[_0x0d54('0x40')](_0x18f237['query']['sort']);_0xd4c7b9[_0x0d54('0x23')]=qs[_0x0d54('0x2d')](_[_0x0d54('0x41')](_0x18f237[_0x0d54('0x25')],_0x145d70[_0x0d54('0x2d')]));if(_0x18f237['query'][_0x0d54('0x43')]){_0xd4c7b9[_0x0d54('0x23')]=_['merge'](_0xd4c7b9[_0x0d54('0x23')],{'$or':_[_0x0d54('0x1f')](_0xd4c7b9[_0x0d54('0x2f')],function(_0x8a4110){var _0x355ef3={};_0x355ef3[_0x8a4110]={'$like':'%'+_0x18f237[_0x0d54('0x25')][_0x0d54('0x43')]+'%'};return _0x355ef3;})});}_0xd4c7b9=_[_0x0d54('0x44')]({},_0xd4c7b9,_0x18f237['options']);return _0x5c1c46[_0x0d54('0x4e')](_0xd4c7b9);}})[_0x0d54('0x14')](function(_0x55092e){if(_0x55092e){_0x5d0dcf=_0x55092e[_0x0d54('0x4d')];if(!_0x18f237[_0x0d54('0x25')][_0x0d54('0x4f')](_0x0d54('0x3e'))){_0xd4c7b9['limit']=qs[_0x0d54('0xf')](_0x18f237['query']['limit']);_0xd4c7b9['offset']=qs[_0x0d54('0xd')](_0x18f237[_0x0d54('0x25')][_0x0d54('0xd')]);}return _0x5c1c46[_0x0d54('0x4e')](_0xd4c7b9);}})['then'](function(_0x41b80a){if(_0x41b80a){return _0x41b80a?{'count':_0x5d0dcf,'rows':_0x41b80a}:null;}})[_0x0d54('0x14')](respondWithResult(_0x4da476,null))[_0x0d54('0x28')](handleError(_0x4da476,null));};exports[_0x0d54('0x50')]=function(_0x2a5f4a,_0x2edf6e){var _0x31f338=_0x2a5f4a['body'][_0x0d54('0x51')];return db[_0x0d54('0x4c')][_0x0d54('0x26')]({'where':{'id':_0x31f338},'attributes':['id'],'include':[{'model':db['User'],'as':_0x0d54('0x52'),'attributes':['id',_0x0d54('0x1c'),_0x0d54('0x53'),_0x0d54('0x54'),_0x0d54('0x55')],'raw':!![]}]})[_0x0d54('0x14')](function(_0x2cd861){if(_0x2cd861){var _0x255f26=_['flatMap'](_0x2cd861,function(_0x1a951f){var _0x1a7208=_0x1a951f[_0x0d54('0x15')]({'plain':!![]});return _0x1a7208[_0x0d54('0x52')];});return db[_0x0d54('0x20')][_0x0d54('0x36')]({'where':{'id':_0x2a5f4a[_0x0d54('0x3a')]['id']}})[_0x0d54('0x14')](function(_0xaeced2){return db[_0x0d54('0x56')][_0x0d54('0x57')](function(_0xdfaa34){return _0xaeced2[_0x0d54('0x50')](_0x31f338,{'transaction':_0xdfaa34})[_0x0d54('0x14')](function(){return BPromise['each'](_0x255f26,function(_0x1a7269){return db[_0x0d54('0x3d')][_0x0d54('0x58')]({'where':{'UserId':_0x1a7269['id'],'WhatsappQueueId':_0x2a5f4a['params']['id']},'transaction':_0xdfaa34});});})[_0x0d54('0x14')](function(){_0x255f26[_0x0d54('0x59')](function(_0x264f09){socket[_0x0d54('0x5a')]('userWhatsappQueue:save',{'UserId':_0x264f09['id'],'WhatsappQueueId':_0xaeced2['id']});});});});});}})[_0x0d54('0x14')](respondWithStatusCode(_0x2edf6e,null))['catch'](handleError(_0x2edf6e,null));};exports['removeTeams']=function(_0x1d4548,_0x3c17d6){return db['Team'][_0x0d54('0x26')]({'where':{'id':_0x1d4548[_0x0d54('0x25')][_0x0d54('0x51')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x0d54('0x52'),'attributes':['id'],'raw':!![]}]})[_0x0d54('0x14')](handleEntityNotFound(_0x3c17d6,null))[_0x0d54('0x14')](function(_0x4614e9){var _0x5276ef=_[_0x0d54('0x1f')](_0x4614e9,'id');var _0x57f53e=[];var _0x303d60=[];var _0x58db37=squel[_0x0d54('0x5b')]();_0x58db37[_0x0d54('0x5c')](_0x0d54('0x5d'))['from'](_0x0d54('0x5e'),'tq')['join'](_0x0d54('0x5f'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x0d54('0x23')](_0x0d54('0x60'),_0x1d4548[_0x0d54('0x3a')]['id']);for(var _0x31deff=0x0;_0x31deff<_0x4614e9[_0x0d54('0x4d')];_0x31deff+=0x1){let _0x5cd57d=_0x4614e9[_0x31deff];for(var _0x3c7ed1=0x0;_0x3c7ed1<_0x5cd57d[_0x0d54('0x52')][_0x0d54('0x4d')];_0x3c7ed1+=0x1){let _0x134f00=_0x5cd57d['Agents'][_0x3c7ed1];var _0x1c42ab=_0x58db37[_0x0d54('0x61')]();_0x1c42ab[_0x0d54('0x23')](_0x0d54('0x62'),_0x134f00['id']);_0x303d60[_0x0d54('0x63')](db[_0x0d54('0x56')][_0x0d54('0x25')](_0x1c42ab['toString'](),{'type':db['sequelize']['QueryTypes'][_0x0d54('0x64')]})[_0x0d54('0x14')](function(_0x4ca566){if(_0x4ca566[_0x0d54('0x4d')]===0x1){return _0x134f00['id'];}else{var _0x35446a=_[_0x0d54('0x65')](_['map'](_0x4ca566,_0x0d54('0x66')),function(_0x422077){return _['includes'](_0x5276ef,_0x422077);});if(_0x35446a){return _0x134f00['id'];}}}));}}return BPromise['all'](_0x303d60)[_0x0d54('0x14')](function(_0x3b634e){_0x57f53e=_(_0x57f53e)[_0x0d54('0x67')](_0x3b634e)[_0x0d54('0x68')]()['value']();return db[_0x0d54('0x20')][_0x0d54('0x36')]({'where':{'id':_0x1d4548[_0x0d54('0x3a')]['id']}})[_0x0d54('0x14')](function(_0x3298fd){return db[_0x0d54('0x56')]['transaction'](function(_0x180ed0){return _0x3298fd[_0x0d54('0x69')](_0x1d4548[_0x0d54('0x25')][_0x0d54('0x51')],{'transaction':_0x180ed0})[_0x0d54('0x14')](function(){if(!_['isEmpty'](_0x57f53e)){return _0x3298fd[_0x0d54('0x6a')](_0x57f53e,{'transaction':_0x180ed0});}})['then'](function(){_0x57f53e[_0x0d54('0x59')](function(_0x21b59e){socket[_0x0d54('0x5a')]('userWhatsappQueue:remove',{'UserId':_0x21b59e,'WhatsappQueueId':_0x3298fd['id']});});});});});});})[_0x0d54('0x14')](respondWithStatusCode(_0x3c17d6,null))['catch'](handleError(_0x3c17d6,null));};exports['addAgents']=function(_0x119e2a,_0x465809){return db[_0x0d54('0x20')]['find']({'where':{'id':_0x119e2a[_0x0d54('0x3a')]['id']}})['then'](handleEntityNotFound(_0x465809,null))[_0x0d54('0x14')](function(_0x1bbcaf){if(_0x1bbcaf){return _0x1bbcaf[_0x0d54('0x6b')](_0x119e2a[_0x0d54('0x33')][_0x0d54('0x51')],_['omit'](_0x119e2a[_0x0d54('0x33')],[_0x0d54('0x51'),'id'])||{})['spread'](function(_0x207d77){for(var _0x309786=0x0;_0x309786<_0x119e2a[_0x0d54('0x33')][_0x0d54('0x51')]['length'];_0x309786+=0x1){socket[_0x0d54('0x5a')]('userWhatsappQueue:save',{'UserId':Number(_0x119e2a[_0x0d54('0x33')][_0x0d54('0x51')][_0x309786]),'WhatsappQueueId':Number(_0x119e2a[_0x0d54('0x3a')]['id'])});}return _0x207d77;});}})[_0x0d54('0x14')](respondWithResult(_0x465809,null))[_0x0d54('0x28')](handleError(_0x465809,null));};exports[_0x0d54('0x6a')]=function(_0x988ac4,_0x57092e){return db[_0x0d54('0x20')][_0x0d54('0x36')]({'where':{'id':_0x988ac4[_0x0d54('0x3a')]['id']}})[_0x0d54('0x14')](handleEntityNotFound(_0x57092e,null))[_0x0d54('0x14')](function(_0x19365d){if(_0x19365d){return _0x19365d[_0x0d54('0x6a')](_0x988ac4['query'][_0x0d54('0x51')])['then'](function(){if(_[_0x0d54('0x6c')](_0x988ac4[_0x0d54('0x25')][_0x0d54('0x51')])){for(var _0x11029b=0x0;_0x11029b<_0x988ac4[_0x0d54('0x25')][_0x0d54('0x51')][_0x0d54('0x4d')];_0x11029b+=0x1){socket[_0x0d54('0x5a')](_0x0d54('0x6d'),{'UserId':Number(_0x988ac4[_0x0d54('0x25')][_0x0d54('0x51')][_0x11029b]),'WhatsappQueueId':Number(_0x988ac4[_0x0d54('0x3a')]['id'])});}}else{socket[_0x0d54('0x5a')]('userWhatsappQueue:remove',{'UserId':Number(_0x988ac4[_0x0d54('0x25')]['ids']),'WhatsappQueueId':Number(_0x988ac4[_0x0d54('0x3a')]['id'])});}});}})[_0x0d54('0x14')](respondWithStatusCode(_0x57092e,null))['catch'](handleError(_0x57092e,null));};exports[_0x0d54('0x6e')]=function(_0x3e7b3c,_0x305997){var _0x4a334b={};var _0x2e9f12={};var _0x4eb471;var _0x1ed9eb;return db['WhatsappQueue'][_0x0d54('0x3c')]({'where':{'id':_0x3e7b3c[_0x0d54('0x3a')]['id']}})['then'](handleEntityNotFound(_0x305997,null))['then'](function(_0x4ab58f){if(_0x4ab58f){_0x4eb471=_0x4ab58f;_0x2e9f12[_0x0d54('0x2a')]=_['keys'](db['User'][_0x0d54('0x2b')]);_0x2e9f12[_0x0d54('0x25')]=_[_0x0d54('0x2c')](_0x3e7b3c[_0x0d54('0x25')]);_0x2e9f12['filters']=_[_0x0d54('0x2e')](_0x2e9f12[_0x0d54('0x2a')],_0x2e9f12[_0x0d54('0x25')]);_0x4a334b[_0x0d54('0x2f')]=_['intersection'](_0x2e9f12[_0x0d54('0x2a')],qs[_0x0d54('0x30')](_0x3e7b3c[_0x0d54('0x25')]['fields']));_0x4a334b[_0x0d54('0x2f')]=_0x4a334b[_0x0d54('0x2f')]['length']?_0x4a334b[_0x0d54('0x2f')]:_0x2e9f12[_0x0d54('0x2a')];_0x4a334b[_0x0d54('0x3f')]=qs[_0x0d54('0x40')](_0x3e7b3c[_0x0d54('0x25')]['sort']);_0x4a334b[_0x0d54('0x23')]=qs['filters'](_[_0x0d54('0x41')](_0x3e7b3c[_0x0d54('0x25')],_0x2e9f12[_0x0d54('0x2d')]));if(_0x3e7b3c['query'][_0x0d54('0x43')]){_0x4a334b[_0x0d54('0x23')]=_[_0x0d54('0x44')](_0x4a334b['where'],{'$or':_['map'](_0x4a334b[_0x0d54('0x2f')],function(_0x38410a){var _0x21bf61={};_0x21bf61[_0x38410a]={'$like':'%'+_0x3e7b3c[_0x0d54('0x25')][_0x0d54('0x43')]+'%'};return _0x21bf61;})});}_0x4a334b=_[_0x0d54('0x44')]({},_0x4a334b,_0x3e7b3c[_0x0d54('0x31')]);return _0x4eb471[_0x0d54('0x6e')](_0x4a334b);}})[_0x0d54('0x14')](function(_0xba82fe){if(_0xba82fe){_0x1ed9eb=_0xba82fe[_0x0d54('0x4d')];if(!_0x3e7b3c[_0x0d54('0x25')]['hasOwnProperty'](_0x0d54('0x3e'))){_0x4a334b[_0x0d54('0xf')]=qs[_0x0d54('0xf')](_0x3e7b3c['query'][_0x0d54('0xf')]);_0x4a334b[_0x0d54('0xd')]=qs['offset'](_0x3e7b3c[_0x0d54('0x25')][_0x0d54('0xd')]);}return _0x4eb471[_0x0d54('0x6e')](_0x4a334b);}})[_0x0d54('0x14')](function(_0x2848eb){if(_0x2848eb){return _0x2848eb?{'count':_0x1ed9eb,'rows':_0x2848eb}:null;}})[_0x0d54('0x14')](respondWithResult(_0x305997,null))['catch'](handleError(_0x305997,null));};
\ No newline at end of file
+var _0x2fc9=['each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','Agents','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','push','sequelize','toString','QueryTypes','every','includes','all','union','compact','value','transaction','removeAgents','addAgents','omit','spread','userWhatsappQueue:remove','getAgents','lodash','squel','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappQueue.socket','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','get','WhatsappQueues','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','getOptions','WhatsappQueue','include','query','findAll','rows','show','model','keys','filters','intersection','attributes','fields','length','includeAll','options','find','catch','create','user','role','UserProfileSection','autoAssociation','body','describe','getMembers','UserWhatsappQueue','hasOwnProperty','nolimit','order','sort','pick','where','WhatsappQueueId','filter','merge','User','agent','updatedAt','createdAt','format','%s/%s','whatsappPause','findOne','params','Team','getTeams','addTeams','ids','online','interface'];(function(_0x4b9b52,_0x511229){var _0x2fbc99=function(_0x251070){while(--_0x251070){_0x4b9b52['push'](_0x4b9b52['shift']());}};_0x2fbc99(++_0x511229);}(_0x2fc9,0x104));var _0x92fc=function(_0x145b3c,_0x31ea4a){_0x145b3c=_0x145b3c-0x0;var _0x1b6e36=_0x2fc9[_0x145b3c];return _0x1b6e36;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0x92fc('0x0'));var squel=require(_0x92fc('0x1'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x92fc('0x2'));var config=require(_0x92fc('0x3'));var db=require(_0x92fc('0x4'))['db'];config[_0x92fc('0x5')]=_['defaults'](config[_0x92fc('0x5')],{'host':_0x92fc('0x6'),'port':0x18eb});var socket=require(_0x92fc('0x7'))(new Redis(config['redis']));require(_0x92fc('0x8'))['register'](socket);function respondWithStatusCode(_0x1ac55a,_0x57b9ab){_0x57b9ab=_0x57b9ab||0xcc;return function(_0xab8b53){if(_0xab8b53){return _0x1ac55a[_0x92fc('0x9')](_0x57b9ab);}return _0x1ac55a[_0x92fc('0xa')](_0x57b9ab)[_0x92fc('0xb')]();};}function respondWithResult(_0x286068,_0x5c05ab){_0x5c05ab=_0x5c05ab||0xc8;return function(_0x9e7db8){if(_0x9e7db8){return _0x286068[_0x92fc('0xa')](_0x5c05ab)['json'](_0x9e7db8);}};}function respondWithFilteredResult(_0x1088a0,_0x217b9b){return function(_0x1b500d){if(_0x1b500d){var _0x694df1=typeof _0x217b9b[_0x92fc('0xc')]===_0x92fc('0xd')&&typeof _0x217b9b[_0x92fc('0xe')]===_0x92fc('0xd');var _0x46bcf4=_0x1b500d[_0x92fc('0xf')];var _0x233c2c=_0x694df1?0x0:_0x217b9b[_0x92fc('0xc')];var _0x39acc9=_0x694df1?_0x1b500d['count']:_0x217b9b[_0x92fc('0xc')]+_0x217b9b[_0x92fc('0xe')];var _0x293eb1;if(_0x39acc9>=_0x46bcf4){_0x39acc9=_0x46bcf4;_0x293eb1=0xc8;}else{_0x293eb1=0xce;}_0x1088a0[_0x92fc('0xa')](_0x293eb1);return _0x1088a0[_0x92fc('0x10')](_0x92fc('0x11'),_0x233c2c+'-'+_0x39acc9+'/'+_0x46bcf4)[_0x92fc('0x12')](_0x1b500d);}return null;};}function saveUpdates(_0x387091){return function(_0xa5e72e){if(_0xa5e72e){return _0xa5e72e[_0x92fc('0x13')](_0x387091)[_0x92fc('0x14')](function(_0x1b2bbc){return _0x1b2bbc;});}return null;};}function removeEntity(_0x3b1a31){return function(_0x3d0a27){if(_0x3d0a27){return _0x3d0a27[_0x92fc('0x15')]()['then'](function(){var _0x1714e6=_0x3d0a27[_0x92fc('0x16')]({'plain':!![]});var _0x389c8b=_0x92fc('0x17');return db['UserProfileResource'][_0x92fc('0x15')]({'where':{'type':_0x389c8b,'resourceId':_0x1714e6['id']}})['then'](function(){return _0x3d0a27;});})[_0x92fc('0x14')](function(){_0x3b1a31[_0x92fc('0xa')](0xcc)[_0x92fc('0xb')]();});}};}function handleEntityNotFound(_0x1e3626){return function(_0x521b72){if(!_0x521b72){_0x1e3626[_0x92fc('0x9')](0x194);}return _0x521b72;};}function handleError(_0x5458d6,_0x1709cf){_0x1709cf=_0x1709cf||0x1f4;return function(_0x4c7b11){logger[_0x92fc('0x18')](_0x4c7b11[_0x92fc('0x19')]);if(_0x4c7b11[_0x92fc('0x1a')]){delete _0x4c7b11['name'];}_0x5458d6[_0x92fc('0xa')](_0x1709cf)[_0x92fc('0x1b')](_0x4c7b11);};}exports[_0x92fc('0x1c')]=function(_0xd1fa3c,_0x1f2ff0){var _0x35ee02={};var _0x1bf144={'count':0x0,'rows':[]};var _0x5a7ee8=_[_0x92fc('0x1d')](db['WhatsappQueue'][_0x92fc('0x1e')],function(_0x477463){return{'name':_0x477463[_0x92fc('0x1f')],'type':_0x477463[_0x92fc('0x20')][_0x92fc('0x21')]};});_0x35ee02=qs[_0x92fc('0x22')](_0x5a7ee8,_0xd1fa3c);var _0x2c8434={'where':_0x35ee02['where']};return db[_0x92fc('0x23')][_0x92fc('0xf')](_0x2c8434)[_0x92fc('0x14')](function(_0x4298f1){_0x1bf144[_0x92fc('0xf')]=_0x4298f1;_0x35ee02['include']=qs[_0x92fc('0x24')](_0xd1fa3c[_0x92fc('0x25')]);return db[_0x92fc('0x23')][_0x92fc('0x26')](_0x35ee02);})['then'](function(_0x302874){_0x1bf144[_0x92fc('0x27')]=_0x302874;return _0x1bf144;})[_0x92fc('0x14')](respondWithFilteredResult(_0x1f2ff0,_0x35ee02))['catch'](handleError(_0x1f2ff0,null));};exports[_0x92fc('0x28')]=function(_0x435eec,_0x6bb771){var _0x2f14b9={'raw':!![],'where':{'id':_0x435eec['params']['id']}},_0x578f96={};_0x578f96[_0x92fc('0x29')]=_[_0x92fc('0x2a')](db['WhatsappQueue']['rawAttributes']);_0x578f96[_0x92fc('0x25')]=_['keys'](_0x435eec['query']);_0x578f96[_0x92fc('0x2b')]=_[_0x92fc('0x2c')](_0x578f96[_0x92fc('0x29')],_0x578f96[_0x92fc('0x25')]);_0x2f14b9[_0x92fc('0x2d')]=_[_0x92fc('0x2c')](_0x578f96[_0x92fc('0x29')],qs[_0x92fc('0x2e')](_0x435eec[_0x92fc('0x25')][_0x92fc('0x2e')]));_0x2f14b9[_0x92fc('0x2d')]=_0x2f14b9['attributes'][_0x92fc('0x2f')]?_0x2f14b9[_0x92fc('0x2d')]:_0x578f96['model'];if(_0x435eec['query'][_0x92fc('0x30')]){_0x2f14b9[_0x92fc('0x24')]=[{'all':!![]}];}_0x2f14b9=_['merge']({},_0x2f14b9,_0x435eec[_0x92fc('0x31')]);return db[_0x92fc('0x23')][_0x92fc('0x32')](_0x2f14b9)[_0x92fc('0x14')](handleEntityNotFound(_0x6bb771,null))[_0x92fc('0x14')](respondWithResult(_0x6bb771,null))[_0x92fc('0x33')](handleError(_0x6bb771,null));};exports[_0x92fc('0x34')]=function(_0x91fdaf,_0x49dbab){return db[_0x92fc('0x23')][_0x92fc('0x34')](_0x91fdaf['body'],{})[_0x92fc('0x14')](function(_0xd52c15){var _0x54eb2d=_0x91fdaf[_0x92fc('0x35')][_0x92fc('0x16')]({'plain':!![]});if(!_0x54eb2d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x54eb2d[_0x92fc('0x36')]==='user'){var _0x2ba05=_0xd52c15[_0x92fc('0x16')]({'plain':!![]});var _0x53a946=_0x92fc('0x17');return db[_0x92fc('0x37')]['find']({'where':{'name':_0x53a946,'userProfileId':_0x54eb2d['userProfileId']},'raw':!![]})[_0x92fc('0x14')](function(_0x50f44e){if(_0x50f44e&&_0x50f44e[_0x92fc('0x38')]===0x0){return db['UserProfileResource'][_0x92fc('0x34')]({'name':_0x2ba05[_0x92fc('0x1a')],'resourceId':_0x2ba05['id'],'type':_0x50f44e[_0x92fc('0x1a')],'sectionId':_0x50f44e['id']},{})[_0x92fc('0x14')](function(){return _0xd52c15;});}else{return _0xd52c15;}})['catch'](function(_0x577d25){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x577d25);throw _0x577d25;});}return _0xd52c15;})[_0x92fc('0x14')](respondWithResult(_0x49dbab,0xc9))[_0x92fc('0x33')](handleError(_0x49dbab,null));};exports['update']=function(_0x5ab469,_0x557576){if(_0x5ab469['body']['id']){delete _0x5ab469[_0x92fc('0x39')]['id'];}return db[_0x92fc('0x23')]['find']({'where':{'id':_0x5ab469['params']['id']}})[_0x92fc('0x14')](handleEntityNotFound(_0x557576,null))[_0x92fc('0x14')](saveUpdates(_0x5ab469[_0x92fc('0x39')],null))['then'](respondWithResult(_0x557576,null))[_0x92fc('0x33')](handleError(_0x557576,null));};exports[_0x92fc('0x15')]=function(_0x272518,_0x578368){return db[_0x92fc('0x23')][_0x92fc('0x32')]({'where':{'id':_0x272518['params']['id']}})['then'](handleEntityNotFound(_0x578368,null))[_0x92fc('0x14')](removeEntity(_0x578368,null))['catch'](handleError(_0x578368,null));};exports[_0x92fc('0x3a')]=function(_0x38e377,_0x1b4d73){return db['WhatsappQueue'][_0x92fc('0x3a')]()[_0x92fc('0x14')](respondWithResult(_0x1b4d73,null))[_0x92fc('0x33')](handleError(_0x1b4d73,null));};exports[_0x92fc('0x3b')]=function(_0x350d39,_0x4dc3a9){var _0x569694={'raw':!![],'where':{}},_0x4fa098={},_0x436693;return db[_0x92fc('0x23')]['findOne']({'where':{'id':_0x350d39['params']['id']}})['then'](handleEntityNotFound(_0x4dc3a9,null))[_0x92fc('0x14')](function(_0x14ef8e){if(_0x14ef8e){_0x436693=_0x14ef8e['get']({'plain':!![]});_0x4fa098[_0x92fc('0x29')]=_['keys'](db[_0x92fc('0x3c')][_0x92fc('0x1e')]);_0x4fa098[_0x92fc('0x25')]=_[_0x92fc('0x2a')](_0x350d39[_0x92fc('0x25')]);_0x4fa098['filters']=_['intersection'](_0x4fa098[_0x92fc('0x29')],_0x4fa098[_0x92fc('0x25')]);_0x569694['attributes']=_[_0x92fc('0x2c')](_0x4fa098[_0x92fc('0x29')],qs[_0x92fc('0x2e')](_0x350d39['query'][_0x92fc('0x2e')]));_0x569694[_0x92fc('0x2d')]=_0x569694['attributes'][_0x92fc('0x2f')]?_0x569694[_0x92fc('0x2d')]:_0x4fa098['model'];if(!_0x350d39[_0x92fc('0x25')][_0x92fc('0x3d')](_0x92fc('0x3e'))){_0x569694[_0x92fc('0xe')]=qs[_0x92fc('0xe')](_0x350d39[_0x92fc('0x25')]['limit']);_0x569694[_0x92fc('0xc')]=qs['offset'](_0x350d39[_0x92fc('0x25')][_0x92fc('0xc')]);}_0x569694[_0x92fc('0x3f')]=qs[_0x92fc('0x40')](_0x350d39[_0x92fc('0x25')]['sort']);_0x569694['where']=qs[_0x92fc('0x2b')](_[_0x92fc('0x41')](_0x350d39[_0x92fc('0x25')],_0x4fa098[_0x92fc('0x2b')]));_0x569694[_0x92fc('0x42')][_0x92fc('0x43')]=_0x14ef8e['id'];if(_0x350d39[_0x92fc('0x25')][_0x92fc('0x44')]){_0x569694[_0x92fc('0x42')]=_[_0x92fc('0x45')](_0x569694[_0x92fc('0x42')],{'$or':_[_0x92fc('0x1d')](_0x569694[_0x92fc('0x2d')],function(_0x1c6d86){var _0x3002f8={};_0x3002f8[_0x1c6d86]={'$like':'%'+_0x350d39[_0x92fc('0x25')][_0x92fc('0x44')]+'%'};return _0x3002f8;})});}_0x569694=_[_0x92fc('0x45')]({},_0x569694,_0x350d39['options']);return db['UserWhatsappQueue']['findAll'](_0x569694);}})[_0x92fc('0x14')](function(_0x1a371e){if(_0x1a371e){return db[_0x92fc('0x46')]['findAndCountAll']({'where':{'id':_['map'](_0x1a371e,'UserId'),'role':_0x92fc('0x47')},'attributes':['id',_0x92fc('0x1a'),'whatsappPause',_0x92fc('0x48'),_0x92fc('0x49')]});}})['then'](function(_0x4740c8){if(_0x4740c8){return{'count':_0x4740c8[_0x92fc('0xf')],'rows':_[_0x92fc('0x1d')](_0x4740c8[_0x92fc('0x27')],function(_0x1a3798){return{'membername':_0x1a3798[_0x92fc('0x1a')],'UserId':_0x1a3798['id'],'queue_name':_0x436693[_0x92fc('0x1a')],'WhatsappQueueId':_0x436693['id'],'interface':util[_0x92fc('0x4a')](_0x92fc('0x4b'),'SIP',_0x1a3798[_0x92fc('0x1a')]),'penalty':0x0,'paused':_0x1a3798[_0x92fc('0x4c')],'createdAt':_0x1a3798[_0x92fc('0x49')],'updatedAt':_0x1a3798[_0x92fc('0x48')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4dc3a9,_0x569694))[_0x92fc('0x33')](handleError(_0x4dc3a9,null));};exports['getTeams']=function(_0x48f575,_0x90c0fe){var _0x4d7ec9={};var _0x21bf53={};var _0x5d46f8;var _0x34ccbb;return db['WhatsappQueue'][_0x92fc('0x4d')]({'where':{'id':_0x48f575[_0x92fc('0x4e')]['id']}})[_0x92fc('0x14')](handleEntityNotFound(_0x90c0fe,null))[_0x92fc('0x14')](function(_0x41c2ca){if(_0x41c2ca){_0x5d46f8=_0x41c2ca;_0x21bf53[_0x92fc('0x29')]=_['keys'](db[_0x92fc('0x4f')]['rawAttributes']);_0x21bf53[_0x92fc('0x25')]=_[_0x92fc('0x2a')](_0x48f575[_0x92fc('0x25')]);_0x21bf53[_0x92fc('0x2b')]=_['intersection'](_0x21bf53[_0x92fc('0x29')],_0x21bf53[_0x92fc('0x25')]);_0x4d7ec9[_0x92fc('0x2d')]=_[_0x92fc('0x2c')](_0x21bf53[_0x92fc('0x29')],qs[_0x92fc('0x2e')](_0x48f575[_0x92fc('0x25')][_0x92fc('0x2e')]));_0x4d7ec9[_0x92fc('0x2d')]=_0x4d7ec9[_0x92fc('0x2d')][_0x92fc('0x2f')]?_0x4d7ec9['attributes']:_0x21bf53[_0x92fc('0x29')];_0x4d7ec9['order']=qs[_0x92fc('0x40')](_0x48f575[_0x92fc('0x25')][_0x92fc('0x40')]);_0x4d7ec9['where']=qs['filters'](_['pick'](_0x48f575[_0x92fc('0x25')],_0x21bf53['filters']));if(_0x48f575['query'][_0x92fc('0x44')]){_0x4d7ec9[_0x92fc('0x42')]=_['merge'](_0x4d7ec9[_0x92fc('0x42')],{'$or':_['map'](_0x4d7ec9['attributes'],function(_0x34e7eb){var _0x3fa999={};_0x3fa999[_0x34e7eb]={'$like':'%'+_0x48f575['query'][_0x92fc('0x44')]+'%'};return _0x3fa999;})});}_0x4d7ec9=_['merge']({},_0x4d7ec9,_0x48f575['options']);return _0x5d46f8[_0x92fc('0x50')](_0x4d7ec9);}})[_0x92fc('0x14')](function(_0x38c19d){if(_0x38c19d){_0x34ccbb=_0x38c19d['length'];if(!_0x48f575[_0x92fc('0x25')]['hasOwnProperty']('nolimit')){_0x4d7ec9[_0x92fc('0xe')]=qs['limit'](_0x48f575[_0x92fc('0x25')][_0x92fc('0xe')]);_0x4d7ec9['offset']=qs[_0x92fc('0xc')](_0x48f575[_0x92fc('0x25')]['offset']);}return _0x5d46f8[_0x92fc('0x50')](_0x4d7ec9);}})[_0x92fc('0x14')](function(_0x29a6f3){if(_0x29a6f3){return _0x29a6f3?{'count':_0x34ccbb,'rows':_0x29a6f3}:null;}})[_0x92fc('0x14')](respondWithResult(_0x90c0fe,null))[_0x92fc('0x33')](handleError(_0x90c0fe,null));};exports[_0x92fc('0x51')]=function(_0x1e9aa1,_0x580b39){var _0x77970f=_0x1e9aa1['body'][_0x92fc('0x52')];return db['Team'][_0x92fc('0x26')]({'where':{'id':_0x77970f},'attributes':['id'],'include':[{'model':db[_0x92fc('0x46')],'as':'Agents','attributes':['id','name',_0x92fc('0x53'),'voicePause',_0x92fc('0x54')],'raw':!![]}]})[_0x92fc('0x14')](function(_0x5b0bdd){if(_0x5b0bdd){var _0x31c185=_['flatMap'](_0x5b0bdd,function(_0x43182f){var _0x5d498a=_0x43182f[_0x92fc('0x16')]({'plain':!![]});return _0x5d498a['Agents'];});return db['WhatsappQueue']['find']({'where':{'id':_0x1e9aa1[_0x92fc('0x4e')]['id']}})[_0x92fc('0x14')](function(_0x2421d0){return db['sequelize']['transaction'](function(_0x1a0023){return _0x2421d0[_0x92fc('0x51')](_0x77970f,{'transaction':_0x1a0023})['then'](function(){return BPromise[_0x92fc('0x55')](_0x31c185,function(_0x343d65){return db[_0x92fc('0x3c')][_0x92fc('0x56')]({'where':{'UserId':_0x343d65['id'],'WhatsappQueueId':_0x1e9aa1[_0x92fc('0x4e')]['id']},'transaction':_0x1a0023});});})[_0x92fc('0x14')](function(){_0x31c185[_0x92fc('0x57')](function(_0x1638a2){socket[_0x92fc('0x58')](_0x92fc('0x59'),{'UserId':_0x1638a2['id'],'WhatsappQueueId':_0x2421d0['id']});});});});});}})[_0x92fc('0x14')](respondWithStatusCode(_0x580b39,null))[_0x92fc('0x33')](handleError(_0x580b39,null));};exports[_0x92fc('0x5a')]=function(_0x3fbc3c,_0x117183){return db[_0x92fc('0x4f')][_0x92fc('0x26')]({'where':{'id':_0x3fbc3c[_0x92fc('0x25')]['ids']},'attributes':['id'],'include':[{'model':db[_0x92fc('0x46')],'as':_0x92fc('0x5b'),'attributes':['id'],'raw':!![]}]})[_0x92fc('0x14')](handleEntityNotFound(_0x117183,null))[_0x92fc('0x14')](function(_0x41b004){var _0x50a04e=_[_0x92fc('0x1d')](_0x41b004,'id');var _0x50c66e=[];var _0x1cff09=[];var _0x3030f5=squel['select']();_0x3030f5[_0x92fc('0x5c')](_0x92fc('0x5d'))[_0x92fc('0x5e')]('team_has_whatsapp_queues','tq')[_0x92fc('0x5f')]('user_has_teams','ut',_0x92fc('0x60'))['where'](_0x92fc('0x61'),_0x3fbc3c[_0x92fc('0x4e')]['id']);for(var _0x12b6b7=0x0;_0x12b6b7<_0x41b004['length'];_0x12b6b7+=0x1){let _0x3ab62d=_0x41b004[_0x12b6b7];for(var _0x3b6b4e=0x0;_0x3b6b4e<_0x3ab62d[_0x92fc('0x5b')][_0x92fc('0x2f')];_0x3b6b4e+=0x1){let _0x4647e6=_0x3ab62d['Agents'][_0x3b6b4e];var _0x45fd16=_0x3030f5['clone']();_0x45fd16[_0x92fc('0x42')]('ut.UserId\x20=\x20?',_0x4647e6['id']);_0x1cff09[_0x92fc('0x62')](db[_0x92fc('0x63')][_0x92fc('0x25')](_0x45fd16[_0x92fc('0x64')](),{'type':db['sequelize'][_0x92fc('0x65')]['SELECT']})['then'](function(_0x3cb9a2){if(_0x3cb9a2['length']===0x1){return _0x4647e6['id'];}else{var _0x560b92=_[_0x92fc('0x66')](_[_0x92fc('0x1d')](_0x3cb9a2,'TeamId'),function(_0x51a544){return _[_0x92fc('0x67')](_0x50a04e,_0x51a544);});if(_0x560b92){return _0x4647e6['id'];}}}));}}return BPromise[_0x92fc('0x68')](_0x1cff09)[_0x92fc('0x14')](function(_0x5387f4){_0x50c66e=_(_0x50c66e)[_0x92fc('0x69')](_0x5387f4)[_0x92fc('0x6a')]()[_0x92fc('0x6b')]();return db['WhatsappQueue'][_0x92fc('0x32')]({'where':{'id':_0x3fbc3c[_0x92fc('0x4e')]['id']}})[_0x92fc('0x14')](function(_0xebd763){return db[_0x92fc('0x63')][_0x92fc('0x6c')](function(_0x9fee3d){return _0xebd763[_0x92fc('0x5a')](_0x3fbc3c[_0x92fc('0x25')]['ids'],{'transaction':_0x9fee3d})[_0x92fc('0x14')](function(){if(!_['isEmpty'](_0x50c66e)){return _0xebd763[_0x92fc('0x6d')](_0x50c66e,{'transaction':_0x9fee3d});}})[_0x92fc('0x14')](function(){_0x50c66e[_0x92fc('0x57')](function(_0x33b990){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x33b990,'WhatsappQueueId':_0xebd763['id']});});});});});});})[_0x92fc('0x14')](respondWithStatusCode(_0x117183,null))[_0x92fc('0x33')](handleError(_0x117183,null));};exports[_0x92fc('0x6e')]=function(_0x38febe,_0x5d9b9b){return db[_0x92fc('0x23')]['find']({'where':{'id':_0x38febe[_0x92fc('0x4e')]['id']}})[_0x92fc('0x14')](handleEntityNotFound(_0x5d9b9b,null))[_0x92fc('0x14')](function(_0x43f669){if(_0x43f669){return _0x43f669['addAgents'](_0x38febe[_0x92fc('0x39')][_0x92fc('0x52')],_[_0x92fc('0x6f')](_0x38febe[_0x92fc('0x39')],['ids','id'])||{})[_0x92fc('0x70')](function(_0x7383f9){for(var _0x3bd74a=0x0;_0x3bd74a<_0x38febe[_0x92fc('0x39')][_0x92fc('0x52')][_0x92fc('0x2f')];_0x3bd74a+=0x1){socket[_0x92fc('0x58')](_0x92fc('0x59'),{'UserId':Number(_0x38febe[_0x92fc('0x39')][_0x92fc('0x52')][_0x3bd74a]),'WhatsappQueueId':Number(_0x38febe[_0x92fc('0x4e')]['id'])});}return _0x7383f9;});}})[_0x92fc('0x14')](respondWithResult(_0x5d9b9b,null))[_0x92fc('0x33')](handleError(_0x5d9b9b,null));};exports['removeAgents']=function(_0x431dd5,_0x5f26a4){return db['WhatsappQueue'][_0x92fc('0x32')]({'where':{'id':_0x431dd5[_0x92fc('0x4e')]['id']}})[_0x92fc('0x14')](handleEntityNotFound(_0x5f26a4,null))[_0x92fc('0x14')](function(_0x1b4dbb){if(_0x1b4dbb){return _0x1b4dbb[_0x92fc('0x6d')](_0x431dd5[_0x92fc('0x25')]['ids'])[_0x92fc('0x14')](function(){if(_['isArray'](_0x431dd5[_0x92fc('0x25')][_0x92fc('0x52')])){for(var _0x5a8f47=0x0;_0x5a8f47<_0x431dd5['query']['ids'][_0x92fc('0x2f')];_0x5a8f47+=0x1){socket['emit'](_0x92fc('0x71'),{'UserId':Number(_0x431dd5[_0x92fc('0x25')][_0x92fc('0x52')][_0x5a8f47]),'WhatsappQueueId':Number(_0x431dd5['params']['id'])});}}else{socket[_0x92fc('0x58')](_0x92fc('0x71'),{'UserId':Number(_0x431dd5[_0x92fc('0x25')][_0x92fc('0x52')]),'WhatsappQueueId':Number(_0x431dd5[_0x92fc('0x4e')]['id'])});}});}})[_0x92fc('0x14')](respondWithStatusCode(_0x5f26a4,null))[_0x92fc('0x33')](handleError(_0x5f26a4,null));};exports['getAgents']=function(_0x5725f9,_0x2351ff){var _0x53e9b4={};var _0x14365d={};var _0x52a20d;var _0x227a7f;return db[_0x92fc('0x23')][_0x92fc('0x4d')]({'where':{'id':_0x5725f9['params']['id']}})['then'](handleEntityNotFound(_0x2351ff,null))['then'](function(_0xb9bfea){if(_0xb9bfea){_0x52a20d=_0xb9bfea;_0x14365d['model']=_['keys'](db[_0x92fc('0x46')][_0x92fc('0x1e')]);_0x14365d[_0x92fc('0x25')]=_['keys'](_0x5725f9['query']);_0x14365d[_0x92fc('0x2b')]=_['intersection'](_0x14365d[_0x92fc('0x29')],_0x14365d[_0x92fc('0x25')]);_0x53e9b4[_0x92fc('0x2d')]=_[_0x92fc('0x2c')](_0x14365d['model'],qs[_0x92fc('0x2e')](_0x5725f9['query'][_0x92fc('0x2e')]));_0x53e9b4['attributes']=_0x53e9b4['attributes']['length']?_0x53e9b4[_0x92fc('0x2d')]:_0x14365d['model'];_0x53e9b4['order']=qs[_0x92fc('0x40')](_0x5725f9['query'][_0x92fc('0x40')]);_0x53e9b4[_0x92fc('0x42')]=qs[_0x92fc('0x2b')](_[_0x92fc('0x41')](_0x5725f9[_0x92fc('0x25')],_0x14365d['filters']));if(_0x5725f9[_0x92fc('0x25')][_0x92fc('0x44')]){_0x53e9b4[_0x92fc('0x42')]=_[_0x92fc('0x45')](_0x53e9b4['where'],{'$or':_['map'](_0x53e9b4[_0x92fc('0x2d')],function(_0x46a38e){var _0x5d968b={};_0x5d968b[_0x46a38e]={'$like':'%'+_0x5725f9[_0x92fc('0x25')][_0x92fc('0x44')]+'%'};return _0x5d968b;})});}_0x53e9b4=_[_0x92fc('0x45')]({},_0x53e9b4,_0x5725f9[_0x92fc('0x31')]);return _0x52a20d[_0x92fc('0x72')](_0x53e9b4);}})[_0x92fc('0x14')](function(_0x471646){if(_0x471646){_0x227a7f=_0x471646[_0x92fc('0x2f')];if(!_0x5725f9[_0x92fc('0x25')]['hasOwnProperty']('nolimit')){_0x53e9b4[_0x92fc('0xe')]=qs[_0x92fc('0xe')](_0x5725f9[_0x92fc('0x25')]['limit']);_0x53e9b4[_0x92fc('0xc')]=qs[_0x92fc('0xc')](_0x5725f9[_0x92fc('0x25')][_0x92fc('0xc')]);}return _0x52a20d[_0x92fc('0x72')](_0x53e9b4);}})['then'](function(_0x4d7c01){if(_0x4d7c01){return _0x4d7c01?{'count':_0x227a7f,'rows':_0x4d7c01}:null;}})['then'](respondWithResult(_0x2351ff,null))[_0x92fc('0x33')](handleError(_0x2351ff,null));};
\ No newline at end of file
index 3bde229..db38b78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x100b=['hook','exports','events','WhatsappQueue','save','update','emit','hasOwnProperty'];(function(_0x5c0950,_0x397d43){var _0x642db9=function(_0x357952){while(--_0x357952){_0x5c0950['push'](_0x5c0950['shift']());}};_0x642db9(++_0x397d43);}(_0x100b,0x19a));var _0xb100=function(_0x451352,_0x2b585c){_0x451352=_0x451352-0x0;var _0x443373=_0x100b[_0x451352];return _0x443373;};'use strict';var EventEmitter=require(_0xb100('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0xb100('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb100('0x2'),'afterUpdate':_0xb100('0x3'),'afterDestroy':'remove'};function emitEvent(_0x22bcc2){return function(_0x312fc3,_0xa29598,_0x224901){WhatsappQueueEvents[_0xb100('0x4')](_0x22bcc2+':'+_0x312fc3['id'],_0x312fc3);WhatsappQueueEvents['emit'](_0x22bcc2,_0x312fc3);_0x224901(null);};}for(var e in events){if(events[_0xb100('0x5')](e)){var event=events[e];WhatsappQueue[_0xb100('0x6')](e,emitEvent(event));}}module[_0xb100('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x8e6f=['update','remove','emit','hook','exports','events','WhatsappQueue','setMaxListeners','save'];(function(_0xf65eb3,_0x1e68ce){var _0x5a4024=function(_0x2962fc){while(--_0x2962fc){_0xf65eb3['push'](_0xf65eb3['shift']());}};_0x5a4024(++_0x1e68ce);}(_0x8e6f,0x1c7));var _0xf8e6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8e6f[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xf8e6('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0xf8e6('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xf8e6('0x2')](0x0);var events={'afterCreate':_0xf8e6('0x3'),'afterUpdate':_0xf8e6('0x4'),'afterDestroy':_0xf8e6('0x5')};function emitEvent(_0x1ee861){return function(_0x463ddc,_0x3a0f24,_0x4020bb){WhatsappQueueEvents[_0xf8e6('0x6')](_0x1ee861+':'+_0x463ddc['id'],_0x463ddc);WhatsappQueueEvents['emit'](_0x1ee861,_0x463ddc);_0x4020bb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xf8e6('0x7')](e,emitEvent(event));}}module[_0xf8e6('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
index 9dce56b..3d2fec4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83f6=['./whatsappQueue.attributes','exports','define','WhatsappQueue','lodash','util','api','bluebird','request-promise','path','rimraf'];(function(_0x1ba07c,_0x5dff4f){var _0x2c0a4b=function(_0x4abbb3){while(--_0x4abbb3){_0x1ba07c['push'](_0x1ba07c['shift']());}};_0x2c0a4b(++_0x5dff4f);}(_0x83f6,0x1e8));var _0x683f=function(_0x57da0a,_0x284aed){_0x57da0a=_0x57da0a-0x0;var _0x3145d5=_0x83f6[_0x57da0a];return _0x3145d5;};'use strict';var _=require(_0x683f('0x0'));var util=require(_0x683f('0x1'));var logger=require('../../config/logger')(_0x683f('0x2'));var moment=require('moment');var BPromise=require(_0x683f('0x3'));var rp=require(_0x683f('0x4'));var fs=require('fs');var path=require(_0x683f('0x5'));var rimraf=require(_0x683f('0x6'));var config=require('../../config/environment');var attributes=require(_0x683f('0x7'));module[_0x683f('0x8')]=function(_0x556c95,_0xbdea52){return _0x556c95[_0x683f('0x9')](_0x683f('0xa'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9623=['path','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x59f0dc,_0x1e2497){var _0x5b5445=function(_0x57ca91){while(--_0x57ca91){_0x59f0dc['push'](_0x59f0dc['shift']());}};_0x5b5445(++_0x1e2497);}(_0x9623,0xb0));var _0x3962=function(_0x277b25,_0x2bf168){_0x277b25=_0x277b25-0x0;var _0x31f861=_0x9623[_0x277b25];return _0x31f861;};'use strict';var _=require(_0x3962('0x0'));var util=require(_0x3962('0x1'));var logger=require(_0x3962('0x2'))(_0x3962('0x3'));var moment=require(_0x3962('0x4'));var BPromise=require('bluebird');var rp=require(_0x3962('0x5'));var fs=require('fs');var path=require(_0x3962('0x6'));var rimraf=require('rimraf');var config=require(_0x3962('0x7'));var attributes=require(_0x3962('0x8'));module[_0x3962('0x9')]=function(_0x1d34f4,_0x9f4a0){return _0x1d34f4[_0x3962('0xa')](_0x3962('0xb'),attributes,{'tableName':_0x3962('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4351863..62bed28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b44=['../../config/logger','rpc','jayson/promise','http','redis','defaults','socket.io-emitter','./whatsappQueue.socket','register','request','then','info','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappQueue,\x20%s,\x20%s','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','attributes','limit','map','include','model','ShowWhatsappQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x19a423,_0xa2bc5a){var _0x7ad695=function(_0x1c1773){while(--_0x1c1773){_0x19a423['push'](_0x19a423['shift']());}};_0x7ad695(++_0xa2bc5a);}(_0x0b44,0x17b));var _0x40b4=function(_0x58dfda,_0x1b4a1c){_0x58dfda=_0x58dfda-0x0;var _0x305e00=_0x0b44[_0x58dfda];return _0x305e00;};'use strict';var _=require(_0x40b4('0x0'));var util=require(_0x40b4('0x1'));var moment=require(_0x40b4('0x2'));var BPromise=require(_0x40b4('0x3'));var rs=require(_0x40b4('0x4'));var fs=require('fs');var Redis=require(_0x40b4('0x5'));var db=require(_0x40b4('0x6'))['db'];var utils=require(_0x40b4('0x7'));var logger=require(_0x40b4('0x8'))(_0x40b4('0x9'));var config=require('../../config/environment');var jayson=require(_0x40b4('0xa'));var client=jayson['client'][_0x40b4('0xb')]({'port':0x232a});config[_0x40b4('0xc')]=_[_0x40b4('0xd')](config[_0x40b4('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x40b4('0xe'))(new Redis(config[_0x40b4('0xc')]));require(_0x40b4('0xf'))[_0x40b4('0x10')](socket);function respondWithRpcPromise(_0x5c202f,_0x40f8a1,_0x3a09dc){return new BPromise(function(_0x495ea9,_0xf329b2){return client[_0x40b4('0x11')](_0x5c202f,_0x3a09dc)[_0x40b4('0x12')](function(_0x599d87){logger[_0x40b4('0x13')]('WhatsappQueue,\x20%s,\x20%s',_0x40f8a1,_0x40b4('0x14'));logger[_0x40b4('0x15')](_0x40b4('0x16'),_0x40f8a1,_0x40b4('0x14'),JSON[_0x40b4('0x17')](_0x599d87));if(_0x599d87[_0x40b4('0x18')]){if(_0x599d87[_0x40b4('0x18')][_0x40b4('0x19')]===0x1f4){logger[_0x40b4('0x18')]('WhatsappQueue,\x20%s,\x20%s',_0x40f8a1,_0x599d87['error'][_0x40b4('0x1a')]);return _0xf329b2(_0x599d87[_0x40b4('0x18')]['message']);}logger[_0x40b4('0x18')]('WhatsappQueue,\x20%s,\x20%s',_0x40f8a1,_0x599d87[_0x40b4('0x18')]['message']);return _0x495ea9(_0x599d87[_0x40b4('0x18')][_0x40b4('0x1a')]);}else{logger[_0x40b4('0x13')](_0x40b4('0x1b'),_0x40f8a1,_0x40b4('0x14'));_0x495ea9(_0x599d87[_0x40b4('0x1c')][_0x40b4('0x1a')]);}})[_0x40b4('0x1d')](function(_0x580dfa){logger[_0x40b4('0x18')]('WhatsappQueue,\x20%s,\x20%s',_0x40f8a1,_0x580dfa);_0xf329b2(_0x580dfa);});});}exports[_0x40b4('0x1e')]=function(_0x6de1d1){var _0x569181=this;return new Promise(function(_0x4e0706,_0x8048e1){return db[_0x40b4('0x1f')][_0x40b4('0x20')]({'raw':_0x6de1d1[_0x40b4('0x21')]?_0x6de1d1[_0x40b4('0x21')][_0x40b4('0x22')]===undefined?!![]:![]:!![],'where':_0x6de1d1['options']?_0x6de1d1['options'][_0x40b4('0x23')]||null:null,'attributes':_0x6de1d1[_0x40b4('0x21')]?_0x6de1d1[_0x40b4('0x21')][_0x40b4('0x24')]||null:null,'limit':_0x6de1d1[_0x40b4('0x21')]?_0x6de1d1[_0x40b4('0x21')][_0x40b4('0x25')]||null:null,'include':_0x6de1d1[_0x40b4('0x21')]?_0x6de1d1[_0x40b4('0x21')]['include']?_[_0x40b4('0x26')](_0x6de1d1[_0x40b4('0x21')][_0x40b4('0x27')],function(_0x57593d){return{'model':db[_0x57593d[_0x40b4('0x28')]],'as':_0x57593d['as'],'attributes':_0x57593d['attributes'],'include':_0x57593d[_0x40b4('0x27')]?_[_0x40b4('0x26')](_0x57593d[_0x40b4('0x27')],function(_0x53d243){return{'model':db[_0x53d243['model']],'as':_0x53d243['as'],'attributes':_0x53d243[_0x40b4('0x24')],'include':_0x53d243[_0x40b4('0x27')]?_[_0x40b4('0x26')](_0x53d243[_0x40b4('0x27')],function(_0x369ff0){return{'model':db[_0x369ff0[_0x40b4('0x28')]],'as':_0x369ff0['as'],'attributes':_0x369ff0[_0x40b4('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x191c12){logger[_0x40b4('0x13')](_0x40b4('0x1e'),_0x6de1d1);logger['debug'](_0x40b4('0x1e'),_0x6de1d1,JSON[_0x40b4('0x17')](_0x191c12));_0x4e0706(_0x191c12);})[_0x40b4('0x1d')](function(_0x21b816){logger['error']('GetWhatsappQueue',_0x21b816['message'],_0x6de1d1);_0x8048e1(_0x569181[_0x40b4('0x18')](0x1f4,_0x21b816[_0x40b4('0x1a')]));});});};exports[_0x40b4('0x29')]=function(_0x2a2a5f){var _0x4a3e87=this;return new Promise(function(_0xca0fdf,_0x3a11df){return db[_0x40b4('0x1f')][_0x40b4('0x2a')]({'raw':_0x2a2a5f[_0x40b4('0x21')]?_0x2a2a5f['options']['raw']===undefined?!![]:![]:!![],'where':_0x2a2a5f['options']?_0x2a2a5f[_0x40b4('0x21')][_0x40b4('0x23')]||null:null,'attributes':_0x2a2a5f[_0x40b4('0x21')]?_0x2a2a5f[_0x40b4('0x21')][_0x40b4('0x24')]||null:null,'include':_0x2a2a5f[_0x40b4('0x21')]?_0x2a2a5f[_0x40b4('0x21')][_0x40b4('0x27')]?_['map'](_0x2a2a5f['options']['include'],function(_0x348193){return{'model':db[_0x348193[_0x40b4('0x28')]],'as':_0x348193['as'],'attributes':_0x348193[_0x40b4('0x24')],'include':_0x348193[_0x40b4('0x27')]?_[_0x40b4('0x26')](_0x348193[_0x40b4('0x27')],function(_0x572076){return{'model':db[_0x572076[_0x40b4('0x28')]],'as':_0x572076['as'],'attributes':_0x572076[_0x40b4('0x24')],'include':_0x572076[_0x40b4('0x27')]?_[_0x40b4('0x26')](_0x572076[_0x40b4('0x27')],function(_0x572187){return{'model':db[_0x572187[_0x40b4('0x28')]],'as':_0x572187['as'],'attributes':_0x572187[_0x40b4('0x24')]};}):[]};}):[]};}):[]:[]})[_0x40b4('0x12')](function(_0x1c8675){logger[_0x40b4('0x13')](_0x40b4('0x29'),_0x2a2a5f);logger[_0x40b4('0x15')]('ShowWhatsappQueue',_0x2a2a5f,JSON['stringify'](_0x1c8675));_0xca0fdf(_0x1c8675);})[_0x40b4('0x1d')](function(_0x205a46){logger[_0x40b4('0x18')](_0x40b4('0x29'),_0x205a46[_0x40b4('0x1a')],_0x2a2a5f);_0x3a11df(_0x4a3e87['error'](0x1f4,_0x205a46[_0x40b4('0x1a')]));});});};
\ No newline at end of file
+var _0x7726=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowWhatsappQueue','find','debug','lodash','util','bluebird','randomstring'];(function(_0x2d0fdf,_0x39672d){var _0x56749c=function(_0x73c663){while(--_0x73c663){_0x2d0fdf['push'](_0x2d0fdf['shift']());}};_0x56749c(++_0x39672d);}(_0x7726,0x1dc));var _0x6772=function(_0x2f8598,_0x5566ba){_0x2f8598=_0x2f8598-0x0;var _0x12a10d=_0x7726[_0x2f8598];return _0x12a10d;};'use strict';var _=require(_0x6772('0x0'));var util=require(_0x6772('0x1'));var moment=require('moment');var BPromise=require(_0x6772('0x2'));var rs=require(_0x6772('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6772('0x4'));var logger=require(_0x6772('0x5'))('rpc');var config=require(_0x6772('0x6'));var jayson=require(_0x6772('0x7'));var client=jayson[_0x6772('0x8')][_0x6772('0x9')]({'port':0x232a});config[_0x6772('0xa')]=_[_0x6772('0xb')](config[_0x6772('0xa')],{'host':_0x6772('0xc'),'port':0x18eb});var socket=require(_0x6772('0xd'))(new Redis(config[_0x6772('0xa')]));require('./whatsappQueue.socket')[_0x6772('0xe')](socket);function respondWithRpcPromise(_0x4d79f3,_0x45b684,_0x18873e){return new BPromise(function(_0x245fec,_0x2ae96a){return client[_0x6772('0xf')](_0x4d79f3,_0x18873e)[_0x6772('0x10')](function(_0x12a3b8){logger['info'](_0x6772('0x11'),_0x45b684,_0x6772('0x12'));logger['debug'](_0x6772('0x13'),_0x45b684,'request\x20sent',JSON[_0x6772('0x14')](_0x12a3b8));if(_0x12a3b8[_0x6772('0x15')]){if(_0x12a3b8[_0x6772('0x15')][_0x6772('0x16')]===0x1f4){logger[_0x6772('0x15')](_0x6772('0x11'),_0x45b684,_0x12a3b8[_0x6772('0x15')][_0x6772('0x17')]);return _0x2ae96a(_0x12a3b8[_0x6772('0x15')]['message']);}logger[_0x6772('0x15')](_0x6772('0x11'),_0x45b684,_0x12a3b8[_0x6772('0x15')][_0x6772('0x17')]);return _0x245fec(_0x12a3b8[_0x6772('0x15')]['message']);}else{logger[_0x6772('0x18')](_0x6772('0x11'),_0x45b684,'request\x20sent');_0x245fec(_0x12a3b8['result'][_0x6772('0x17')]);}})[_0x6772('0x19')](function(_0x31366d){logger['error'](_0x6772('0x11'),_0x45b684,_0x31366d);_0x2ae96a(_0x31366d);});});}exports[_0x6772('0x1a')]=function(_0x1629c1){var _0x89f28=this;return new Promise(function(_0x1ce848,_0x3f0fc9){return db[_0x6772('0x1b')][_0x6772('0x1c')]({'raw':_0x1629c1['options']?_0x1629c1[_0x6772('0x1d')][_0x6772('0x1e')]===undefined?!![]:![]:!![],'where':_0x1629c1['options']?_0x1629c1[_0x6772('0x1d')][_0x6772('0x1f')]||null:null,'attributes':_0x1629c1[_0x6772('0x1d')]?_0x1629c1['options'][_0x6772('0x20')]||null:null,'limit':_0x1629c1[_0x6772('0x1d')]?_0x1629c1[_0x6772('0x1d')][_0x6772('0x21')]||null:null,'include':_0x1629c1['options']?_0x1629c1[_0x6772('0x1d')][_0x6772('0x22')]?_[_0x6772('0x23')](_0x1629c1[_0x6772('0x1d')][_0x6772('0x22')],function(_0x5c6a0b){return{'model':db[_0x5c6a0b[_0x6772('0x24')]],'as':_0x5c6a0b['as'],'attributes':_0x5c6a0b[_0x6772('0x20')],'include':_0x5c6a0b[_0x6772('0x22')]?_['map'](_0x5c6a0b[_0x6772('0x22')],function(_0x2c4023){return{'model':db[_0x2c4023['model']],'as':_0x2c4023['as'],'attributes':_0x2c4023[_0x6772('0x20')],'include':_0x2c4023[_0x6772('0x22')]?_['map'](_0x2c4023[_0x6772('0x22')],function(_0x55af15){return{'model':db[_0x55af15[_0x6772('0x24')]],'as':_0x55af15['as'],'attributes':_0x55af15[_0x6772('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x124576){logger[_0x6772('0x18')](_0x6772('0x1a'),_0x1629c1);logger['debug'](_0x6772('0x1a'),_0x1629c1,JSON[_0x6772('0x14')](_0x124576));_0x1ce848(_0x124576);})[_0x6772('0x19')](function(_0x273232){logger[_0x6772('0x15')]('GetWhatsappQueue',_0x273232[_0x6772('0x17')],_0x1629c1);_0x3f0fc9(_0x89f28[_0x6772('0x15')](0x1f4,_0x273232[_0x6772('0x17')]));});});};exports[_0x6772('0x25')]=function(_0x567103){var _0x4bccb7=this;return new Promise(function(_0x364208,_0x23cad8){return db[_0x6772('0x1b')][_0x6772('0x26')]({'raw':_0x567103[_0x6772('0x1d')]?_0x567103[_0x6772('0x1d')][_0x6772('0x1e')]===undefined?!![]:![]:!![],'where':_0x567103[_0x6772('0x1d')]?_0x567103[_0x6772('0x1d')][_0x6772('0x1f')]||null:null,'attributes':_0x567103[_0x6772('0x1d')]?_0x567103[_0x6772('0x1d')][_0x6772('0x20')]||null:null,'include':_0x567103[_0x6772('0x1d')]?_0x567103[_0x6772('0x1d')][_0x6772('0x22')]?_[_0x6772('0x23')](_0x567103[_0x6772('0x1d')][_0x6772('0x22')],function(_0x3866df){return{'model':db[_0x3866df['model']],'as':_0x3866df['as'],'attributes':_0x3866df[_0x6772('0x20')],'include':_0x3866df['include']?_[_0x6772('0x23')](_0x3866df['include'],function(_0x3a6e4a){return{'model':db[_0x3a6e4a[_0x6772('0x24')]],'as':_0x3a6e4a['as'],'attributes':_0x3a6e4a[_0x6772('0x20')],'include':_0x3a6e4a[_0x6772('0x22')]?_['map'](_0x3a6e4a[_0x6772('0x22')],function(_0xa99a56){return{'model':db[_0xa99a56[_0x6772('0x24')]],'as':_0xa99a56['as'],'attributes':_0xa99a56[_0x6772('0x20')]};}):[]};}):[]};}):[]:[]})[_0x6772('0x10')](function(_0x2a2620){logger[_0x6772('0x18')](_0x6772('0x25'),_0x567103);logger[_0x6772('0x27')](_0x6772('0x25'),_0x567103,JSON[_0x6772('0x14')](_0x2a2620));_0x364208(_0x2a2620);})[_0x6772('0x19')](function(_0x4ecbdc){logger[_0x6772('0x15')](_0x6772('0x25'),_0x4ecbdc[_0x6772('0x17')],_0x567103);_0x23cad8(_0x4bccb7[_0x6772('0x15')](0x1f4,_0x4ecbdc['message']));});});};
\ No newline at end of file
index b702658..3f49611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8120=['whatsappQueue:','./whatsappQueue.events','remove','update','emit','removeListener','register','length'];(function(_0x26ba8c,_0x5c3dc9){var _0x5dc5a7=function(_0x5b0721){while(--_0x5b0721){_0x26ba8c['push'](_0x26ba8c['shift']());}};_0x5dc5a7(++_0x5c3dc9);}(_0x8120,0x81));var _0x0812=function(_0x344931,_0x524b6c){_0x344931=_0x344931-0x0;var _0x5baf73=_0x8120[_0x344931];return _0x5baf73;};'use strict';var WhatsappQueueEvents=require(_0x0812('0x0'));var events=['save',_0x0812('0x1'),_0x0812('0x2')];function createListener(_0x2415c1,_0x1db65f){return function(_0x58f41f){_0x1db65f[_0x0812('0x3')](_0x2415c1,_0x58f41f);};}function removeListener(_0x552c58,_0x3ebe9b){return function(){WhatsappQueueEvents[_0x0812('0x4')](_0x552c58,_0x3ebe9b);};}exports[_0x0812('0x5')]=function(_0x4ce0cb){for(var _0x44142e=0x0,_0xdaeb1a=events[_0x0812('0x6')];_0x44142e<_0xdaeb1a;_0x44142e++){var _0x34111f=events[_0x44142e];var _0x3af460=createListener(_0x0812('0x7')+_0x34111f,_0x4ce0cb);WhatsappQueueEvents['on'](_0x34111f,_0x3af460);}};
\ No newline at end of file
+var _0x6712=['length','whatsappQueue:','./whatsappQueue.events','remove'];(function(_0x500909,_0x21a57a){var _0x16f32d=function(_0xaea696){while(--_0xaea696){_0x500909['push'](_0x500909['shift']());}};_0x16f32d(++_0x21a57a);}(_0x6712,0x162));var _0x2671=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x6712[_0x209941];return _0x1e8729;};'use strict';var WhatsappQueueEvents=require(_0x2671('0x0'));var events=['save',_0x2671('0x1'),'update'];function createListener(_0x2f940f,_0x2cad78){return function(_0x49e84d){_0x2cad78['emit'](_0x2f940f,_0x49e84d);};}function removeListener(_0x8ddd0b,_0x12fa14){return function(){WhatsappQueueEvents['removeListener'](_0x8ddd0b,_0x12fa14);};}exports['register']=function(_0x591425){for(var _0x578b79=0x0,_0x38780d=events[_0x2671('0x2')];_0x578b79<_0x38780d;_0x578b79++){var _0xb76274=events[_0x578b79];var _0x3db0ec=createListener(_0x2671('0x3')+_0xb76274,_0x591425);WhatsappQueueEvents['on'](_0xb76274,_0x3db0ec);}};
\ No newline at end of file
index 3a9694a..edbfa8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a44=['show','post','create','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','isAuthenticated','/describe','describe','/:id'];(function(_0x525af9,_0x4edd23){var _0x129fbf=function(_0x4f44fe){while(--_0x4f44fe){_0x525af9['push'](_0x525af9['shift']());}};_0x129fbf(++_0x4edd23);}(_0x9a44,0x196));var _0x49a4=function(_0x59ad79,_0x3b5c5d){_0x59ad79=_0x59ad79-0x0;var _0x1324a6=_0x9a44[_0x59ad79];return _0x1324a6;};'use strict';var multer=require(_0x49a4('0x0'));var util=require(_0x49a4('0x1'));var path=require(_0x49a4('0x2'));var timeout=require(_0x49a4('0x3'));var express=require(_0x49a4('0x4'));var router=express[_0x49a4('0x5')]();var fs_extra=require(_0x49a4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x49a4('0x7'));var config=require(_0x49a4('0x8'));var controller=require(_0x49a4('0x9'));router['get']('/',auth[_0x49a4('0xa')](),controller['index']);router['get'](_0x49a4('0xb'),auth['isAuthenticated'](),controller[_0x49a4('0xc')]);router['get'](_0x49a4('0xd'),auth['isAuthenticated'](),controller[_0x49a4('0xe')]);router[_0x49a4('0xf')]('/',auth[_0x49a4('0xa')](),controller[_0x49a4('0x10')]);router[_0x49a4('0x11')](_0x49a4('0xd'),auth[_0x49a4('0xa')](),controller['update']);router[_0x49a4('0x12')](_0x49a4('0xd'),auth[_0x49a4('0xa')](),controller['destroy']);module[_0x49a4('0x13')]=router;
\ No newline at end of file
+var _0xce15=['/:id','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','/describe','isAuthenticated'];(function(_0x12efd7,_0x14202f){var _0x4bb9b2=function(_0x57e640){while(--_0x57e640){_0x12efd7['push'](_0x12efd7['shift']());}};_0x4bb9b2(++_0x14202f);}(_0xce15,0x1e2));var _0x5ce1=function(_0x30cf8d,_0x286354){_0x30cf8d=_0x30cf8d-0x0;var _0x92e924=_0xce15[_0x30cf8d];return _0x92e924;};'use strict';var multer=require(_0x5ce1('0x0'));var util=require('util');var path=require(_0x5ce1('0x1'));var timeout=require(_0x5ce1('0x2'));var express=require(_0x5ce1('0x3'));var router=express[_0x5ce1('0x4')]();var fs_extra=require(_0x5ce1('0x5'));var auth=require(_0x5ce1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5ce1('0x7'));var controller=require(_0x5ce1('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x5ce1('0x9')](_0x5ce1('0xa'),auth[_0x5ce1('0xb')](),controller['describe']);router[_0x5ce1('0x9')](_0x5ce1('0xc'),auth[_0x5ce1('0xb')](),controller['show']);router[_0x5ce1('0xd')]('/',auth[_0x5ce1('0xb')](),controller[_0x5ce1('0xe')]);router[_0x5ce1('0xf')]('/:id',auth[_0x5ce1('0xb')](),controller['update']);router[_0x5ce1('0x10')](_0x5ce1('0xc'),auth[_0x5ce1('0xb')](),controller[_0x5ce1('0x11')]);module[_0x5ce1('0x12')]=router;
\ No newline at end of file
index 5d0248e..b14f4c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x1ad36d,_0x2ba53b){var _0x3aafc1=function(_0x6511b5){while(--_0x6511b5){_0x1ad36d['push'](_0x1ad36d['shift']());}};_0x3aafc1(++_0x2ba53b);}(_0x7a54,0x106));var _0x47a5=function(_0x344d7b,_0x4293fb){_0x344d7b=_0x344d7b-0x0;var _0x376c40=_0x7a54[_0x344d7b];return _0x376c40;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x4e0acf,_0x304563){var _0x12258f=function(_0x304319){while(--_0x304319){_0x4e0acf['push'](_0x4e0acf['shift']());}};_0x12258f(++_0x304563);}(_0x7a54,0x106));var _0x47a5=function(_0x3222da,_0xce252e){_0x3222da=_0x3222da-0x0;var _0x165bfa=_0x7a54[_0x3222da];return _0x165bfa;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
index b8e7ad8..6177d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5423=['params','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','then','rows','catch','show','WhatsappQueueReport','find','create','body','update'];(function(_0x16d490,_0x144575){var _0x44f384=function(_0x554768){while(--_0x554768){_0x16d490['push'](_0x16d490['shift']());}};_0x44f384(++_0x144575);}(_0x5423,0xe3));var _0x3542=function(_0x49fbbd,_0x4e92cd){_0x49fbbd=_0x49fbbd-0x0;var _0x109918=_0x5423[_0x49fbbd];return _0x109918;};'use strict';var emlformat=require(_0x3542('0x0'));var rimraf=require(_0x3542('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3542('0x2'));var rp=require(_0x3542('0x3'));var moment=require('moment');var BPromise=require(_0x3542('0x4'));var Mustache=require(_0x3542('0x5'));var util=require(_0x3542('0x6'));var path=require(_0x3542('0x7'));var sox=require('sox');var csv=require(_0x3542('0x8'));var ejs=require(_0x3542('0x9'));var fs=require('fs');var fs_extra=require(_0x3542('0xa'));var _=require(_0x3542('0xb'));var squel=require(_0x3542('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3542('0xd'));var toCsv=require(_0x3542('0x8'));var querystring=require('querystring');var Papa=require(_0x3542('0xe'));var Redis=require(_0x3542('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x3542('0x10'));var as=require(_0x3542('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3542('0x12'))(_0x3542('0x13'));var utils=require(_0x3542('0x14'));var config=require(_0x3542('0x15'));var licenseUtil=require(_0x3542('0x16'));var db=require(_0x3542('0x17'))['db'];function respondWithStatusCode(_0x1cf710,_0x43e977){_0x43e977=_0x43e977||0xcc;return function(_0x4ee86){if(_0x4ee86){return _0x1cf710[_0x3542('0x18')](_0x43e977);}return _0x1cf710[_0x3542('0x19')](_0x43e977)[_0x3542('0x1a')]();};}function respondWithResult(_0x15863d,_0x4bac5b){_0x4bac5b=_0x4bac5b||0xc8;return function(_0x14fe57){if(_0x14fe57){return _0x15863d['status'](_0x4bac5b)[_0x3542('0x1b')](_0x14fe57);}};}function respondWithFilteredResult(_0x13fe0b,_0xc33d42){return function(_0x546fbd){if(_0x546fbd){var _0x270312=typeof _0xc33d42[_0x3542('0x1c')]===_0x3542('0x1d')&&typeof _0xc33d42['limit']===_0x3542('0x1d');var _0x23b0de=_0x546fbd[_0x3542('0x1e')];var _0x3d5199=_0x270312?0x0:_0xc33d42['offset'];var _0x32df3f=_0x270312?_0x546fbd['count']:_0xc33d42[_0x3542('0x1c')]+_0xc33d42[_0x3542('0x1f')];var _0x4d93bc;if(_0x32df3f>=_0x23b0de){_0x32df3f=_0x23b0de;_0x4d93bc=0xc8;}else{_0x4d93bc=0xce;}_0x13fe0b[_0x3542('0x19')](_0x4d93bc);return _0x13fe0b[_0x3542('0x20')](_0x3542('0x21'),_0x3d5199+'-'+_0x32df3f+'/'+_0x23b0de)[_0x3542('0x1b')](_0x546fbd);}return null;};}function patchUpdates(_0x212950){return function(_0x4a7695){try{jsonpatch['apply'](_0x4a7695,_0x212950,!![]);}catch(_0x4c58f1){return BPromise[_0x3542('0x22')](_0x4c58f1);}return _0x4a7695['save']();};}function saveUpdates(_0x1d5488,_0x551645){return function(_0x1d5f1e){if(_0x1d5f1e){return _0x1d5f1e['update'](_0x1d5488)['then'](function(_0x3eacd0){return _0x3eacd0;});}return null;};}function removeEntity(_0xe3f983,_0x5ae097){return function(_0x5d05b2){if(_0x5d05b2){return _0x5d05b2[_0x3542('0x23')]()['then'](function(){_0xe3f983[_0x3542('0x19')](0xcc)[_0x3542('0x1a')]();});}};}function handleEntityNotFound(_0x1e0723,_0x2f2e63){return function(_0x298763){if(!_0x298763){_0x1e0723[_0x3542('0x18')](0x194);}return _0x298763;};}function handleError(_0x412184,_0x1e156e){_0x1e156e=_0x1e156e||0x1f4;return function(_0x18dc6c){logger[_0x3542('0x24')](_0x18dc6c[_0x3542('0x25')]);if(_0x18dc6c[_0x3542('0x26')]){delete _0x18dc6c[_0x3542('0x26')];}_0x412184[_0x3542('0x19')](_0x1e156e)[_0x3542('0x27')](_0x18dc6c);};}exports[_0x3542('0x28')]=function(_0x303412,_0x20eda1){var _0x3bd666={},_0x5590a2={},_0x31ad47={'count':0x0,'rows':[]};var _0x35bbc9=_[_0x3542('0x29')](db['WhatsappQueueReport'][_0x3542('0x2a')],function(_0xc6f23b){return{'name':_0xc6f23b[_0x3542('0x2b')],'type':_0xc6f23b[_0x3542('0x2c')]['key']};});_0x5590a2['model']=_[_0x3542('0x29')](_0x35bbc9,_0x3542('0x26'));_0x5590a2[_0x3542('0x2d')]=_[_0x3542('0x2e')](_0x303412[_0x3542('0x2d')]);_0x5590a2[_0x3542('0x2f')]=_[_0x3542('0x30')](_0x5590a2['model'],_0x5590a2['query']);_0x3bd666[_0x3542('0x31')]=_['intersection'](_0x5590a2['model'],qs[_0x3542('0x32')](_0x303412['query']['fields']));_0x3bd666[_0x3542('0x31')]=_0x3bd666[_0x3542('0x31')][_0x3542('0x33')]?_0x3bd666['attributes']:_0x5590a2[_0x3542('0x34')];if(!_0x303412['query'][_0x3542('0x35')](_0x3542('0x36'))){_0x3bd666['limit']=qs[_0x3542('0x1f')](_0x303412['query'][_0x3542('0x1f')]);_0x3bd666[_0x3542('0x1c')]=qs[_0x3542('0x1c')](_0x303412['query'][_0x3542('0x1c')]);}_0x3bd666['order']=qs[_0x3542('0x37')](_0x303412[_0x3542('0x2d')][_0x3542('0x37')]);_0x3bd666[_0x3542('0x38')]=qs[_0x3542('0x2f')](_[_0x3542('0x39')](_0x303412[_0x3542('0x2d')],_0x5590a2[_0x3542('0x2f')]),_0x35bbc9);if(_0x303412[_0x3542('0x2d')][_0x3542('0x3a')]){_0x3bd666[_0x3542('0x38')]=_[_0x3542('0x3b')](_0x3bd666[_0x3542('0x38')],{'$or':_['map'](_0x35bbc9,function(_0x62429){if(_0x62429['type']!=='VIRTUAL'){var _0x2782f2={};_0x2782f2[_0x62429[_0x3542('0x26')]]={'$like':'%'+_0x303412[_0x3542('0x2d')][_0x3542('0x3a')]+'%'};return _0x2782f2;}})});}_0x3bd666=_[_0x3542('0x3b')]({},_0x3bd666,_0x303412[_0x3542('0x3c')]);var _0xc7f13c={'where':_0x3bd666[_0x3542('0x38')]};return db['WhatsappQueueReport'][_0x3542('0x1e')](_0xc7f13c)['then'](function(_0x1c8855){_0x31ad47[_0x3542('0x1e')]=_0x1c8855;if(_0x303412['query'][_0x3542('0x3d')]){_0x3bd666[_0x3542('0x3e')]=[{'all':!![]}];}return db['WhatsappQueueReport'][_0x3542('0x3f')](_0x3bd666);})[_0x3542('0x40')](function(_0x5e1b29){_0x31ad47[_0x3542('0x41')]=_0x5e1b29;return _0x31ad47;})[_0x3542('0x40')](respondWithFilteredResult(_0x20eda1,_0x3bd666))[_0x3542('0x42')](handleError(_0x20eda1,null));};exports[_0x3542('0x43')]=function(_0x290c7c,_0xb12441){var _0x2b54b9={'raw':!![],'where':{'id':_0x290c7c['params']['id']}},_0x4bf45a={};_0x4bf45a[_0x3542('0x34')]=_[_0x3542('0x2e')](db[_0x3542('0x44')][_0x3542('0x2a')]);_0x4bf45a[_0x3542('0x2d')]=_['keys'](_0x290c7c[_0x3542('0x2d')]);_0x4bf45a['filters']=_[_0x3542('0x30')](_0x4bf45a[_0x3542('0x34')],_0x4bf45a[_0x3542('0x2d')]);_0x2b54b9['attributes']=_[_0x3542('0x30')](_0x4bf45a[_0x3542('0x34')],qs['fields'](_0x290c7c[_0x3542('0x2d')][_0x3542('0x32')]));_0x2b54b9[_0x3542('0x31')]=_0x2b54b9[_0x3542('0x31')][_0x3542('0x33')]?_0x2b54b9[_0x3542('0x31')]:_0x4bf45a[_0x3542('0x34')];if(_0x290c7c[_0x3542('0x2d')]['includeAll']){_0x2b54b9['include']=[{'all':!![]}];}_0x2b54b9=_['merge']({},_0x2b54b9,_0x290c7c[_0x3542('0x3c')]);return db[_0x3542('0x44')][_0x3542('0x45')](_0x2b54b9)[_0x3542('0x40')](handleEntityNotFound(_0xb12441,null))[_0x3542('0x40')](respondWithResult(_0xb12441,null))[_0x3542('0x42')](handleError(_0xb12441,null));};exports[_0x3542('0x46')]=function(_0x5adf34,_0x157683){return db[_0x3542('0x44')][_0x3542('0x46')](_0x5adf34[_0x3542('0x47')],{})['then'](respondWithResult(_0x157683,0xc9))[_0x3542('0x42')](handleError(_0x157683,null));};exports[_0x3542('0x48')]=function(_0x55b43a,_0x528f8c){if(_0x55b43a[_0x3542('0x47')]['id']){delete _0x55b43a[_0x3542('0x47')]['id'];}return db[_0x3542('0x44')][_0x3542('0x45')]({'where':{'id':_0x55b43a[_0x3542('0x49')]['id']}})[_0x3542('0x40')](handleEntityNotFound(_0x528f8c,null))[_0x3542('0x40')](saveUpdates(_0x55b43a['body'],null))[_0x3542('0x40')](respondWithResult(_0x528f8c,null))[_0x3542('0x42')](handleError(_0x528f8c,null));};exports[_0x3542('0x23')]=function(_0x392c6e,_0x1ebc82){return db[_0x3542('0x44')][_0x3542('0x45')]({'where':{'id':_0x392c6e[_0x3542('0x49')]['id']}})[_0x3542('0x40')](handleEntityNotFound(_0x1ebc82,null))['then'](removeEntity(_0x1ebc82,null))['catch'](handleError(_0x1ebc82,null));};exports[_0x3542('0x4a')]=function(_0x4b406b,_0x5a798a){return db['WhatsappQueueReport'][_0x3542('0x4a')]()[_0x3542('0x40')](respondWithResult(_0x5a798a,null))[_0x3542('0x42')](handleError(_0x5a798a,null));};
\ No newline at end of file
+var _0x6324=['options','WhatsappQueueReport','includeAll','rows','show','keys','intersection','include','find','catch','create','body','params','describe','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','rawAttributes','fieldName','model','name','query','filters','attributes','fields','length','hasOwnProperty','order','sort','pick','merge','where','type','VIRTUAL','filter'];(function(_0x3497af,_0x5ae31a){var _0xc71807=function(_0x3306e7){while(--_0x3306e7){_0x3497af['push'](_0x3497af['shift']());}};_0xc71807(++_0x5ae31a);}(_0x6324,0x142));var _0x4632=function(_0x55de53,_0x5da3e7){_0x55de53=_0x55de53-0x0;var _0x362fbe=_0x6324[_0x55de53];return _0x362fbe;};'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'];function respondWithStatusCode(_0x2b3f0f,_0x499d88){_0x499d88=_0x499d88||0xcc;return function(_0x4719f7){if(_0x4719f7){return _0x2b3f0f[_0x4632('0x18')](_0x499d88);}return _0x2b3f0f[_0x4632('0x19')](_0x499d88)[_0x4632('0x1a')]();};}function respondWithResult(_0x51ee37,_0x3ba361){_0x3ba361=_0x3ba361||0xc8;return function(_0x255882){if(_0x255882){return _0x51ee37[_0x4632('0x19')](_0x3ba361)[_0x4632('0x1b')](_0x255882);}};}function respondWithFilteredResult(_0x1c1be0,_0x5438ab){return function(_0x47b349){if(_0x47b349){var _0x2fd7ae=typeof _0x5438ab[_0x4632('0x1c')]===_0x4632('0x1d')&&typeof _0x5438ab[_0x4632('0x1e')]==='undefined';var _0x158831=_0x47b349[_0x4632('0x1f')];var _0x1a94c0=_0x2fd7ae?0x0:_0x5438ab['offset'];var _0x3cddfa=_0x2fd7ae?_0x47b349[_0x4632('0x1f')]:_0x5438ab['offset']+_0x5438ab['limit'];var _0x1c0523;if(_0x3cddfa>=_0x158831){_0x3cddfa=_0x158831;_0x1c0523=0xc8;}else{_0x1c0523=0xce;}_0x1c1be0[_0x4632('0x19')](_0x1c0523);return _0x1c1be0[_0x4632('0x20')](_0x4632('0x21'),_0x1a94c0+'-'+_0x3cddfa+'/'+_0x158831)[_0x4632('0x1b')](_0x47b349);}return null;};}function patchUpdates(_0x3d2d23){return function(_0x9ab826){try{jsonpatch[_0x4632('0x22')](_0x9ab826,_0x3d2d23,!![]);}catch(_0x29f875){return BPromise[_0x4632('0x23')](_0x29f875);}return _0x9ab826[_0x4632('0x24')]();};}function saveUpdates(_0x2d656a,_0x2ca6a5){return function(_0x263907){if(_0x263907){return _0x263907[_0x4632('0x25')](_0x2d656a)[_0x4632('0x26')](function(_0x4264d5){return _0x4264d5;});}return null;};}function removeEntity(_0x3537ed,_0x380a9f){return function(_0x1e1b86){if(_0x1e1b86){return _0x1e1b86[_0x4632('0x27')]()[_0x4632('0x26')](function(){_0x3537ed[_0x4632('0x19')](0xcc)[_0x4632('0x1a')]();});}};}function handleEntityNotFound(_0xb074d,_0x1b8de0){return function(_0x4af026){if(!_0x4af026){_0xb074d[_0x4632('0x18')](0x194);}return _0x4af026;};}function handleError(_0x21118c,_0x372679){_0x372679=_0x372679||0x1f4;return function(_0x22d0f5){logger[_0x4632('0x28')](_0x22d0f5[_0x4632('0x29')]);if(_0x22d0f5['name']){delete _0x22d0f5['name'];}_0x21118c[_0x4632('0x19')](_0x372679)[_0x4632('0x2a')](_0x22d0f5);};}exports[_0x4632('0x2b')]=function(_0x35a533,_0x34079f){var _0x119d1b={},_0x3570b2={},_0x5e2ee4={'count':0x0,'rows':[]};var _0x42d505=_[_0x4632('0x2c')](db['WhatsappQueueReport'][_0x4632('0x2d')],function(_0x5316f7){return{'name':_0x5316f7[_0x4632('0x2e')],'type':_0x5316f7['type']['key']};});_0x3570b2[_0x4632('0x2f')]=_[_0x4632('0x2c')](_0x42d505,_0x4632('0x30'));_0x3570b2['query']=_['keys'](_0x35a533[_0x4632('0x31')]);_0x3570b2[_0x4632('0x32')]=_['intersection'](_0x3570b2['model'],_0x3570b2[_0x4632('0x31')]);_0x119d1b[_0x4632('0x33')]=_['intersection'](_0x3570b2[_0x4632('0x2f')],qs[_0x4632('0x34')](_0x35a533[_0x4632('0x31')][_0x4632('0x34')]));_0x119d1b[_0x4632('0x33')]=_0x119d1b['attributes'][_0x4632('0x35')]?_0x119d1b[_0x4632('0x33')]:_0x3570b2['model'];if(!_0x35a533['query'][_0x4632('0x36')]('nolimit')){_0x119d1b['limit']=qs[_0x4632('0x1e')](_0x35a533['query'][_0x4632('0x1e')]);_0x119d1b[_0x4632('0x1c')]=qs[_0x4632('0x1c')](_0x35a533['query'][_0x4632('0x1c')]);}_0x119d1b[_0x4632('0x37')]=qs[_0x4632('0x38')](_0x35a533[_0x4632('0x31')][_0x4632('0x38')]);_0x119d1b['where']=qs['filters'](_[_0x4632('0x39')](_0x35a533[_0x4632('0x31')],_0x3570b2[_0x4632('0x32')]),_0x42d505);if(_0x35a533['query']['filter']){_0x119d1b['where']=_[_0x4632('0x3a')](_0x119d1b[_0x4632('0x3b')],{'$or':_['map'](_0x42d505,function(_0x3809aa){if(_0x3809aa[_0x4632('0x3c')]!==_0x4632('0x3d')){var _0x3adf41={};_0x3adf41[_0x3809aa[_0x4632('0x30')]]={'$like':'%'+_0x35a533[_0x4632('0x31')][_0x4632('0x3e')]+'%'};return _0x3adf41;}})});}_0x119d1b=_[_0x4632('0x3a')]({},_0x119d1b,_0x35a533[_0x4632('0x3f')]);var _0x2c04a8={'where':_0x119d1b[_0x4632('0x3b')]};return db[_0x4632('0x40')]['count'](_0x2c04a8)[_0x4632('0x26')](function(_0x45bff6){_0x5e2ee4['count']=_0x45bff6;if(_0x35a533[_0x4632('0x31')][_0x4632('0x41')]){_0x119d1b['include']=[{'all':!![]}];}return db[_0x4632('0x40')]['findAll'](_0x119d1b);})[_0x4632('0x26')](function(_0x28df3b){_0x5e2ee4[_0x4632('0x42')]=_0x28df3b;return _0x5e2ee4;})[_0x4632('0x26')](respondWithFilteredResult(_0x34079f,_0x119d1b))['catch'](handleError(_0x34079f,null));};exports[_0x4632('0x43')]=function(_0x29381a,_0x23ef38){var _0x279298={'raw':!![],'where':{'id':_0x29381a['params']['id']}},_0x5cc716={};_0x5cc716[_0x4632('0x2f')]=_[_0x4632('0x44')](db[_0x4632('0x40')]['rawAttributes']);_0x5cc716[_0x4632('0x31')]=_[_0x4632('0x44')](_0x29381a[_0x4632('0x31')]);_0x5cc716[_0x4632('0x32')]=_[_0x4632('0x45')](_0x5cc716[_0x4632('0x2f')],_0x5cc716[_0x4632('0x31')]);_0x279298['attributes']=_[_0x4632('0x45')](_0x5cc716[_0x4632('0x2f')],qs[_0x4632('0x34')](_0x29381a[_0x4632('0x31')][_0x4632('0x34')]));_0x279298['attributes']=_0x279298['attributes'][_0x4632('0x35')]?_0x279298[_0x4632('0x33')]:_0x5cc716[_0x4632('0x2f')];if(_0x29381a[_0x4632('0x31')]['includeAll']){_0x279298[_0x4632('0x46')]=[{'all':!![]}];}_0x279298=_[_0x4632('0x3a')]({},_0x279298,_0x29381a[_0x4632('0x3f')]);return db[_0x4632('0x40')][_0x4632('0x47')](_0x279298)['then'](handleEntityNotFound(_0x23ef38,null))[_0x4632('0x26')](respondWithResult(_0x23ef38,null))[_0x4632('0x48')](handleError(_0x23ef38,null));};exports[_0x4632('0x49')]=function(_0xcce5db,_0x3676fa){return db[_0x4632('0x40')][_0x4632('0x49')](_0xcce5db[_0x4632('0x4a')],{})[_0x4632('0x26')](respondWithResult(_0x3676fa,0xc9))[_0x4632('0x48')](handleError(_0x3676fa,null));};exports[_0x4632('0x25')]=function(_0x517584,_0xc3ffd0){if(_0x517584[_0x4632('0x4a')]['id']){delete _0x517584[_0x4632('0x4a')]['id'];}return db['WhatsappQueueReport'][_0x4632('0x47')]({'where':{'id':_0x517584[_0x4632('0x4b')]['id']}})[_0x4632('0x26')](handleEntityNotFound(_0xc3ffd0,null))[_0x4632('0x26')](saveUpdates(_0x517584[_0x4632('0x4a')],null))[_0x4632('0x26')](respondWithResult(_0xc3ffd0,null))[_0x4632('0x48')](handleError(_0xc3ffd0,null));};exports[_0x4632('0x27')]=function(_0x1f43b6,_0x1aa831){return db['WhatsappQueueReport'][_0x4632('0x47')]({'where':{'id':_0x1f43b6[_0x4632('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1aa831,null))[_0x4632('0x26')](removeEntity(_0x1aa831,null))[_0x4632('0x48')](handleError(_0x1aa831,null));};exports[_0x4632('0x4c')]=function(_0x28e7fb,_0x2c59f5){return db[_0x4632('0x40')][_0x4632('0x4c')]()[_0x4632('0x26')](respondWithResult(_0x2c59f5,null))[_0x4632('0x48')](handleError(_0x2c59f5,null));};
\ No newline at end of file
index d3df047..2fbd100 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f30=['../../config/environment','define','WhatsappQueueReport','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2064a1,_0x4023e1){var _0x38aa5a=function(_0x342abc){while(--_0x342abc){_0x2064a1['push'](_0x2064a1['shift']());}};_0x38aa5a(++_0x4023e1);}(_0x6f30,0x1a8));var _0x06f3=function(_0x59b533,_0x59fdcc){_0x59b533=_0x59b533-0x0;var _0x2beced=_0x6f30[_0x59b533];return _0x2beced;};'use strict';var _=require('lodash');var util=require(_0x06f3('0x0'));var logger=require(_0x06f3('0x1'))(_0x06f3('0x2'));var moment=require(_0x06f3('0x3'));var BPromise=require(_0x06f3('0x4'));var rp=require(_0x06f3('0x5'));var fs=require('fs');var path=require(_0x06f3('0x6'));var rimraf=require(_0x06f3('0x7'));var config=require(_0x06f3('0x8'));var attributes=require('./whatsappQueueReport.attributes');module['exports']=function(_0x502539,_0x2fc7a9){return _0x502539[_0x06f3('0x9')](_0x06f3('0xa'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x06f3('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5f6=['uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','./whatsappQueueReport.attributes','exports','WhatsappQueueReport','report_whatsapp_queue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa5f6,0x9d));var _0x6a5f=function(_0x2c162c,_0x11f662){_0x2c162c=_0x2c162c-0x0;var _0x5cb605=_0xa5f6[_0x2c162c];return _0x5cb605;};'use strict';var _=require(_0x6a5f('0x0'));var util=require(_0x6a5f('0x1'));var logger=require(_0x6a5f('0x2'))('api');var moment=require(_0x6a5f('0x3'));var BPromise=require(_0x6a5f('0x4'));var rp=require(_0x6a5f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6a5f('0x6'));var config=require('../../config/environment');var attributes=require(_0x6a5f('0x7'));module[_0x6a5f('0x8')]=function(_0x1024c7,_0x346c36){return _0x1024c7['define'](_0x6a5f('0x9'),attributes,{'tableName':_0x6a5f('0xa'),'paranoid':![],'indexes':[{'name':_0x6a5f('0xb'),'fields':[_0x6a5f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 7c3b866..a4e46a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a11=['catch','update','where','attributes','limit','UpdateWhatsappQueueReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','WhatsappQueueReport,\x20%s,\x20%s','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','WhatsappQueueReport','options','raw','CreateWhatsappQueueReport'];(function(_0x50c0e2,_0x375c07){var _0x4e13a0=function(_0x1600a6){while(--_0x1600a6){_0x50c0e2['push'](_0x50c0e2['shift']());}};_0x4e13a0(++_0x375c07);}(_0x6a11,0xc0));var _0x16a1=function(_0x14a241,_0x32451a){_0x14a241=_0x14a241-0x0;var _0x397aad=_0x6a11[_0x14a241];return _0x397aad;};'use strict';var _=require(_0x16a1('0x0'));var util=require('util');var moment=require(_0x16a1('0x1'));var BPromise=require(_0x16a1('0x2'));var rs=require(_0x16a1('0x3'));var fs=require('fs');var Redis=require(_0x16a1('0x4'));var db=require(_0x16a1('0x5'))['db'];var utils=require(_0x16a1('0x6'));var logger=require(_0x16a1('0x7'))(_0x16a1('0x8'));var config=require('../../config/environment');var jayson=require(_0x16a1('0x9'));var client=jayson[_0x16a1('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2037b7,_0x330a11,_0xa32296){return new BPromise(function(_0x2f8f51,_0x3835e9){return client['request'](_0x2037b7,_0xa32296)[_0x16a1('0xb')](function(_0x593fe){logger[_0x16a1('0xc')](_0x16a1('0xd'),_0x330a11,'request\x20sent');logger[_0x16a1('0xe')](_0x16a1('0xf'),_0x330a11,_0x16a1('0x10'),JSON[_0x16a1('0x11')](_0x593fe));if(_0x593fe['error']){if(_0x593fe['error'][_0x16a1('0x12')]===0x1f4){logger[_0x16a1('0x13')]('WhatsappQueueReport,\x20%s,\x20%s',_0x330a11,_0x593fe[_0x16a1('0x13')][_0x16a1('0x14')]);return _0x3835e9(_0x593fe[_0x16a1('0x13')][_0x16a1('0x14')]);}logger['error'](_0x16a1('0xd'),_0x330a11,_0x593fe[_0x16a1('0x13')][_0x16a1('0x14')]);return _0x2f8f51(_0x593fe['error'][_0x16a1('0x14')]);}else{logger[_0x16a1('0xc')]('WhatsappQueueReport,\x20%s,\x20%s',_0x330a11,_0x16a1('0x10'));_0x2f8f51(_0x593fe['result']['message']);}})['catch'](function(_0x4f2dd7){logger[_0x16a1('0x13')](_0x16a1('0xd'),_0x330a11,_0x4f2dd7);_0x3835e9(_0x4f2dd7);});});}exports['CreateWhatsappQueueReport']=function(_0x4d4ee6){var _0x1b9d4b=this;return new Promise(function(_0x3513d0,_0x1982d5){return db[_0x16a1('0x15')]['create'](_0x4d4ee6['body'],{'raw':_0x4d4ee6['options']?_0x4d4ee6[_0x16a1('0x16')][_0x16a1('0x17')]===undefined?!![]:![]:!![]})[_0x16a1('0xb')](function(_0x4a9a94){logger[_0x16a1('0xc')]('CreateWhatsappQueueReport',_0x4d4ee6);logger[_0x16a1('0xe')](_0x16a1('0x18'),_0x4d4ee6,JSON['stringify'](_0x4a9a94));_0x3513d0(_0x4a9a94);})[_0x16a1('0x19')](function(_0x380710){logger[_0x16a1('0x13')](_0x16a1('0x18'),_0x380710['message'],_0x4d4ee6);_0x1982d5(_0x1b9d4b[_0x16a1('0x13')](0x1f4,_0x380710[_0x16a1('0x14')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x4a0514){var _0x50dba8=this;return new Promise(function(_0x10fa42,_0x87a268){return db[_0x16a1('0x15')][_0x16a1('0x1a')](_0x4a0514['body'],{'raw':_0x4a0514['options']?_0x4a0514[_0x16a1('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a0514['options']?_0x4a0514['options'][_0x16a1('0x1b')]||null:null,'attributes':_0x4a0514[_0x16a1('0x16')]?_0x4a0514[_0x16a1('0x16')][_0x16a1('0x1c')]||null:null,'limit':_0x4a0514[_0x16a1('0x16')]?_0x4a0514[_0x16a1('0x16')][_0x16a1('0x1d')]||null:null})[_0x16a1('0xb')](function(_0x4c53e7){logger[_0x16a1('0xc')](_0x16a1('0x1e'),_0x4a0514);logger[_0x16a1('0xe')](_0x16a1('0x1e'),_0x4a0514,JSON[_0x16a1('0x11')](_0x4c53e7));_0x10fa42(_0x4c53e7);})[_0x16a1('0x19')](function(_0x247035){logger[_0x16a1('0x13')]('UpdateWhatsappQueueReport',_0x247035[_0x16a1('0x14')],_0x4a0514);_0x87a268(_0x50dba8['error'](0x1f4,_0x247035[_0x16a1('0x14')]));});});};
\ No newline at end of file
+var _0xfdf4=['raw','update','attributes','limit','stringify','UpdateWhatsappQueueReport','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','WhatsappQueueReport,\x20%s,\x20%s','debug','request\x20sent','error','message','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options'];(function(_0x35cb03,_0x578e9d){var _0x696377=function(_0x318fa3){while(--_0x318fa3){_0x35cb03['push'](_0x35cb03['shift']());}};_0x696377(++_0x578e9d);}(_0xfdf4,0x1c6));var _0x4fdf=function(_0x3ad6f8,_0x6344e8){_0x3ad6f8=_0x3ad6f8-0x0;var _0x5dae5f=_0xfdf4[_0x3ad6f8];return _0x5dae5f;};'use strict';var _=require(_0x4fdf('0x0'));var util=require(_0x4fdf('0x1'));var moment=require('moment');var BPromise=require(_0x4fdf('0x2'));var rs=require(_0x4fdf('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4fdf('0x4'))['db'];var utils=require(_0x4fdf('0x5'));var logger=require(_0x4fdf('0x6'))('rpc');var config=require(_0x4fdf('0x7'));var jayson=require(_0x4fdf('0x8'));var client=jayson[_0x4fdf('0x9')][_0x4fdf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a52eb,_0x494a1f,_0x332033){return new BPromise(function(_0x5c2ebb,_0x275a26){return client['request'](_0x4a52eb,_0x332033)['then'](function(_0x442849){logger[_0x4fdf('0xb')](_0x4fdf('0xc'),_0x494a1f,'request\x20sent');logger[_0x4fdf('0xd')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x494a1f,_0x4fdf('0xe'),JSON['stringify'](_0x442849));if(_0x442849[_0x4fdf('0xf')]){if(_0x442849[_0x4fdf('0xf')]['code']===0x1f4){logger[_0x4fdf('0xf')](_0x4fdf('0xc'),_0x494a1f,_0x442849[_0x4fdf('0xf')][_0x4fdf('0x10')]);return _0x275a26(_0x442849[_0x4fdf('0xf')]['message']);}logger[_0x4fdf('0xf')]('WhatsappQueueReport,\x20%s,\x20%s',_0x494a1f,_0x442849[_0x4fdf('0xf')][_0x4fdf('0x10')]);return _0x5c2ebb(_0x442849['error'][_0x4fdf('0x10')]);}else{logger[_0x4fdf('0xb')](_0x4fdf('0xc'),_0x494a1f,_0x4fdf('0xe'));_0x5c2ebb(_0x442849['result'][_0x4fdf('0x10')]);}})[_0x4fdf('0x11')](function(_0x58e9d0){logger[_0x4fdf('0xf')]('WhatsappQueueReport,\x20%s,\x20%s',_0x494a1f,_0x58e9d0);_0x275a26(_0x58e9d0);});});}exports[_0x4fdf('0x12')]=function(_0x18a940){var _0x335ff5=this;return new Promise(function(_0x121250,_0x134ddd){return db[_0x4fdf('0x13')]['create'](_0x18a940[_0x4fdf('0x14')],{'raw':_0x18a940['options']?_0x18a940[_0x4fdf('0x15')][_0x4fdf('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0xda8403){logger[_0x4fdf('0xb')](_0x4fdf('0x12'),_0x18a940);logger[_0x4fdf('0xd')]('CreateWhatsappQueueReport',_0x18a940,JSON['stringify'](_0xda8403));_0x121250(_0xda8403);})['catch'](function(_0x332596){logger[_0x4fdf('0xf')](_0x4fdf('0x12'),_0x332596[_0x4fdf('0x10')],_0x18a940);_0x134ddd(_0x335ff5[_0x4fdf('0xf')](0x1f4,_0x332596[_0x4fdf('0x10')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x1416b9){var _0x25b06e=this;return new Promise(function(_0x3e9a51,_0x29f8d8){return db[_0x4fdf('0x13')][_0x4fdf('0x17')](_0x1416b9[_0x4fdf('0x14')],{'raw':_0x1416b9[_0x4fdf('0x15')]?_0x1416b9[_0x4fdf('0x15')][_0x4fdf('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1416b9[_0x4fdf('0x15')]?_0x1416b9[_0x4fdf('0x15')]['where']||null:null,'attributes':_0x1416b9[_0x4fdf('0x15')]?_0x1416b9['options'][_0x4fdf('0x18')]||null:null,'limit':_0x1416b9[_0x4fdf('0x15')]?_0x1416b9[_0x4fdf('0x15')][_0x4fdf('0x19')]||null:null})['then'](function(_0x31f6e8){logger['info']('UpdateWhatsappQueueReport',_0x1416b9);logger[_0x4fdf('0xd')]('UpdateWhatsappQueueReport',_0x1416b9,JSON[_0x4fdf('0x1a')](_0x31f6e8));_0x3e9a51(_0x31f6e8);})['catch'](function(_0x45dcef){logger['error'](_0x4fdf('0x1b'),_0x45dcef[_0x4fdf('0x10')],_0x1416b9);_0x29f8d8(_0x25b06e[_0x4fdf('0xf')](0x1f4,_0x45dcef['message']));});});};
\ No newline at end of file
index d94bb6b..0d4bf24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fb3=['../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3f7013,_0x538582){var _0x1f86e9=function(_0x5c64cd){while(--_0x5c64cd){_0x3f7013['push'](_0x3f7013['shift']());}};_0x1f86e9(++_0x538582);}(_0x0fb3,0x175));var _0x30fb=function(_0x57805e,_0x41acc9){_0x57805e=_0x57805e-0x0;var _0x1c7c04=_0x0fb3[_0x57805e];return _0x1c7c04;};'use strict';var multer=require(_0x30fb('0x0'));var util=require('util');var path=require(_0x30fb('0x1'));var timeout=require(_0x30fb('0x2'));var express=require('express');var router=express[_0x30fb('0x3')]();var fs_extra=require(_0x30fb('0x4'));var auth=require(_0x30fb('0x5'));var interaction=require(_0x30fb('0x6'));var config=require(_0x30fb('0x7'));var controller=require('./whatsappTransferReport.controller');router[_0x30fb('0x8')]('/',auth[_0x30fb('0x9')](),controller[_0x30fb('0xa')]);router[_0x30fb('0x8')]('/describe',auth[_0x30fb('0x9')](),controller['describe']);router['get'](_0x30fb('0xb'),auth['isAuthenticated'](),controller[_0x30fb('0xc')]);router[_0x30fb('0xd')]('/',auth[_0x30fb('0x9')](),controller[_0x30fb('0xe')]);router[_0x30fb('0xf')](_0x30fb('0xb'),auth[_0x30fb('0x9')](),controller['update']);router[_0x30fb('0x10')](_0x30fb('0xb'),auth[_0x30fb('0x9')](),controller[_0x30fb('0x11')]);module[_0x30fb('0x12')]=router;
\ No newline at end of file
+var _0xfef4=['multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','index','get','describe','/:id','show','create','put','update','delete','exports'];(function(_0x549278,_0x450754){var _0x1ea9a1=function(_0x2e559d){while(--_0x2e559d){_0x549278['push'](_0x549278['shift']());}};_0x1ea9a1(++_0x450754);}(_0xfef4,0xf7));var _0x4fef=function(_0x391c55,_0x168617){_0x391c55=_0x391c55-0x0;var _0xa434e0=_0xfef4[_0x391c55];return _0xa434e0;};'use strict';var multer=require(_0x4fef('0x0'));var util=require('util');var path=require(_0x4fef('0x1'));var timeout=require(_0x4fef('0x2'));var express=require(_0x4fef('0x3'));var router=express['Router']();var fs_extra=require(_0x4fef('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4fef('0x5'));var config=require(_0x4fef('0x6'));var controller=require(_0x4fef('0x7'));router['get']('/',auth[_0x4fef('0x8')](),controller[_0x4fef('0x9')]);router[_0x4fef('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x4fef('0xb')]);router[_0x4fef('0xa')](_0x4fef('0xc'),auth['isAuthenticated'](),controller[_0x4fef('0xd')]);router['post']('/',auth[_0x4fef('0x8')](),controller[_0x4fef('0xe')]);router[_0x4fef('0xf')](_0x4fef('0xc'),auth[_0x4fef('0x8')](),controller[_0x4fef('0x10')]);router[_0x4fef('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x4fef('0x12')]=router;
\ No newline at end of file
index fb4fbb4..b62153d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eed=['queue','DATE','sequelize','exports','STRING','ENUM','account','agent'];(function(_0x2109a8,_0x3a7797){var _0x522094=function(_0x545aa1){while(--_0x545aa1){_0x2109a8['push'](_0x2109a8['shift']());}};_0x522094(++_0x3a7797);}(_0x5eed,0x10a));var _0xd5ee=function(_0x5a9a4d,_0x2cd678){_0x5a9a4d=_0x5a9a4d-0x0;var _0x23947e=_0x5eed[_0x5a9a4d];return _0x23947e;};'use strict';var Sequelize=require(_0xd5ee('0x0'));module[_0xd5ee('0x1')]={'uniqueid':{'type':Sequelize[_0xd5ee('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xd5ee('0x3')](_0xd5ee('0x4'),_0xd5ee('0x5'),_0xd5ee('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xd5ee('0x7')]}};
\ No newline at end of file
+var _0x6df9=['sequelize','exports','ENUM','queue'];(function(_0x23c3b4,_0x31b916){var _0x1eddc8=function(_0x4199dd){while(--_0x4199dd){_0x23c3b4['push'](_0x23c3b4['shift']());}};_0x1eddc8(++_0x31b916);}(_0x6df9,0x84));var _0x96df=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6df9[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require(_0x96df('0x0'));module[_0x96df('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x96df('0x2')]('account','agent',_0x96df('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index 2b3ef15..c5b19c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec0=['params','intersection','find','create','body','describe','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','name','send','index','map','WhatsappTransferReport','rawAttributes','type','key','query','keys','filters','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch'];(function(_0x536d9b,_0x133726){var _0x28f6a6=function(_0x3449d1){while(--_0x3449d1){_0x536d9b['push'](_0x536d9b['shift']());}};_0x28f6a6(++_0x133726);}(_0xeec0,0x98));var _0x0eec=function(_0x5621d9,_0x19650b){_0x5621d9=_0x5621d9-0x0;var _0x1c8cfb=_0xeec0[_0x5621d9];return _0x1c8cfb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0eec('0x0'));var zipdir=require(_0x0eec('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0eec('0x2'));var BPromise=require(_0x0eec('0x3'));var Mustache=require(_0x0eec('0x4'));var util=require(_0x0eec('0x5'));var path=require(_0x0eec('0x6'));var sox=require('sox');var csv=require(_0x0eec('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0eec('0x8'));var _=require(_0x0eec('0x9'));var squel=require(_0x0eec('0xa'));var crypto=require(_0x0eec('0xb'));var jsforce=require(_0x0eec('0xc'));var deskjs=require(_0x0eec('0xd'));var toCsv=require(_0x0eec('0x7'));var querystring=require(_0x0eec('0xe'));var Papa=require(_0x0eec('0xf'));var Redis=require(_0x0eec('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0eec('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0eec('0x12'))(_0x0eec('0x13'));var utils=require(_0x0eec('0x14'));var config=require(_0x0eec('0x15'));var licenseUtil=require(_0x0eec('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x207513,_0x6b29a6){_0x6b29a6=_0x6b29a6||0xcc;return function(_0x464661){if(_0x464661){return _0x207513[_0x0eec('0x17')](_0x6b29a6);}return _0x207513['status'](_0x6b29a6)['end']();};}function respondWithResult(_0x5f0d3f,_0x376e02){_0x376e02=_0x376e02||0xc8;return function(_0xb45dbe){if(_0xb45dbe){return _0x5f0d3f[_0x0eec('0x18')](_0x376e02)[_0x0eec('0x19')](_0xb45dbe);}};}function respondWithFilteredResult(_0x1e14bc,_0x5d5b82){return function(_0x33896d){if(_0x33896d){var _0x2f0c16=typeof _0x5d5b82[_0x0eec('0x1a')]===_0x0eec('0x1b')&&typeof _0x5d5b82[_0x0eec('0x1c')]===_0x0eec('0x1b');var _0xed3eca=_0x33896d[_0x0eec('0x1d')];var _0x1712fc=_0x2f0c16?0x0:_0x5d5b82[_0x0eec('0x1a')];var _0x54a481=_0x2f0c16?_0x33896d[_0x0eec('0x1d')]:_0x5d5b82[_0x0eec('0x1a')]+_0x5d5b82[_0x0eec('0x1c')];var _0x56722b;if(_0x54a481>=_0xed3eca){_0x54a481=_0xed3eca;_0x56722b=0xc8;}else{_0x56722b=0xce;}_0x1e14bc[_0x0eec('0x18')](_0x56722b);return _0x1e14bc['set'](_0x0eec('0x1e'),_0x1712fc+'-'+_0x54a481+'/'+_0xed3eca)[_0x0eec('0x19')](_0x33896d);}return null;};}function patchUpdates(_0x130f05){return function(_0xc49c57){try{jsonpatch[_0x0eec('0x1f')](_0xc49c57,_0x130f05,!![]);}catch(_0x38f3f4){return BPromise[_0x0eec('0x20')](_0x38f3f4);}return _0xc49c57[_0x0eec('0x21')]();};}function saveUpdates(_0x155c70,_0x3ae7ed){return function(_0x255b8e){if(_0x255b8e){return _0x255b8e[_0x0eec('0x22')](_0x155c70)[_0x0eec('0x23')](function(_0x22bada){return _0x22bada;});}return null;};}function removeEntity(_0x16d1c0,_0x175e3d){return function(_0x2aa446){if(_0x2aa446){return _0x2aa446[_0x0eec('0x24')]()['then'](function(){_0x16d1c0[_0x0eec('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x448707,_0x56c82d){return function(_0x133c65){if(!_0x133c65){_0x448707[_0x0eec('0x17')](0x194);}return _0x133c65;};}function handleError(_0x56388d,_0x383d6a){_0x383d6a=_0x383d6a||0x1f4;return function(_0x129f74){logger['error'](_0x129f74['stack']);if(_0x129f74[_0x0eec('0x25')]){delete _0x129f74[_0x0eec('0x25')];}_0x56388d['status'](_0x383d6a)[_0x0eec('0x26')](_0x129f74);};}exports[_0x0eec('0x27')]=function(_0x33f647,_0x31d293){var _0x254da9={},_0x196502={},_0xe47e96={'count':0x0,'rows':[]};var _0x55fc81=_[_0x0eec('0x28')](db[_0x0eec('0x29')][_0x0eec('0x2a')],function(_0x337107){return{'name':_0x337107['fieldName'],'type':_0x337107[_0x0eec('0x2b')][_0x0eec('0x2c')]};});_0x196502['model']=_['map'](_0x55fc81,'name');_0x196502[_0x0eec('0x2d')]=_[_0x0eec('0x2e')](_0x33f647[_0x0eec('0x2d')]);_0x196502[_0x0eec('0x2f')]=_['intersection'](_0x196502['model'],_0x196502[_0x0eec('0x2d')]);_0x254da9[_0x0eec('0x30')]=_['intersection'](_0x196502['model'],qs[_0x0eec('0x31')](_0x33f647[_0x0eec('0x2d')][_0x0eec('0x31')]));_0x254da9[_0x0eec('0x30')]=_0x254da9[_0x0eec('0x30')][_0x0eec('0x32')]?_0x254da9['attributes']:_0x196502[_0x0eec('0x33')];if(!_0x33f647[_0x0eec('0x2d')][_0x0eec('0x34')](_0x0eec('0x35'))){_0x254da9[_0x0eec('0x1c')]=qs[_0x0eec('0x1c')](_0x33f647[_0x0eec('0x2d')]['limit']);_0x254da9[_0x0eec('0x1a')]=qs[_0x0eec('0x1a')](_0x33f647['query'][_0x0eec('0x1a')]);}_0x254da9[_0x0eec('0x36')]=qs[_0x0eec('0x37')](_0x33f647[_0x0eec('0x2d')]['sort']);_0x254da9['where']=qs[_0x0eec('0x2f')](_[_0x0eec('0x38')](_0x33f647['query'],_0x196502[_0x0eec('0x2f')]),_0x55fc81);if(_0x33f647[_0x0eec('0x2d')][_0x0eec('0x39')]){_0x254da9[_0x0eec('0x3a')]=_[_0x0eec('0x3b')](_0x254da9[_0x0eec('0x3a')],{'$or':_[_0x0eec('0x28')](_0x55fc81,function(_0x44ce84){if(_0x44ce84[_0x0eec('0x2b')]!==_0x0eec('0x3c')){var _0x45669={};_0x45669[_0x44ce84[_0x0eec('0x25')]]={'$like':'%'+_0x33f647[_0x0eec('0x2d')]['filter']+'%'};return _0x45669;}})});}_0x254da9=_['merge']({},_0x254da9,_0x33f647[_0x0eec('0x3d')]);var _0x139672={'where':_0x254da9[_0x0eec('0x3a')]};return db[_0x0eec('0x29')]['count'](_0x139672)[_0x0eec('0x23')](function(_0x19128e){_0xe47e96['count']=_0x19128e;if(_0x33f647['query'][_0x0eec('0x3e')]){_0x254da9[_0x0eec('0x3f')]=[{'all':!![]}];}return db[_0x0eec('0x29')][_0x0eec('0x40')](_0x254da9);})['then'](function(_0x26f9eb){_0xe47e96[_0x0eec('0x41')]=_0x26f9eb;return _0xe47e96;})[_0x0eec('0x23')](respondWithFilteredResult(_0x31d293,_0x254da9))[_0x0eec('0x42')](handleError(_0x31d293,null));};exports['show']=function(_0x531737,_0x2dd9be){var _0x51acb1={'raw':!![],'where':{'id':_0x531737[_0x0eec('0x43')]['id']}},_0x1682a9={};_0x1682a9[_0x0eec('0x33')]=_['keys'](db[_0x0eec('0x29')][_0x0eec('0x2a')]);_0x1682a9[_0x0eec('0x2d')]=_[_0x0eec('0x2e')](_0x531737[_0x0eec('0x2d')]);_0x1682a9[_0x0eec('0x2f')]=_[_0x0eec('0x44')](_0x1682a9[_0x0eec('0x33')],_0x1682a9[_0x0eec('0x2d')]);_0x51acb1['attributes']=_[_0x0eec('0x44')](_0x1682a9[_0x0eec('0x33')],qs[_0x0eec('0x31')](_0x531737[_0x0eec('0x2d')][_0x0eec('0x31')]));_0x51acb1[_0x0eec('0x30')]=_0x51acb1['attributes'][_0x0eec('0x32')]?_0x51acb1['attributes']:_0x1682a9[_0x0eec('0x33')];if(_0x531737[_0x0eec('0x2d')][_0x0eec('0x3e')]){_0x51acb1[_0x0eec('0x3f')]=[{'all':!![]}];}_0x51acb1=_[_0x0eec('0x3b')]({},_0x51acb1,_0x531737['options']);return db['WhatsappTransferReport'][_0x0eec('0x45')](_0x51acb1)['then'](handleEntityNotFound(_0x2dd9be,null))['then'](respondWithResult(_0x2dd9be,null))[_0x0eec('0x42')](handleError(_0x2dd9be,null));};exports[_0x0eec('0x46')]=function(_0x29ebf5,_0x4d1671){return db[_0x0eec('0x29')][_0x0eec('0x46')](_0x29ebf5['body'],{})[_0x0eec('0x23')](respondWithResult(_0x4d1671,0xc9))[_0x0eec('0x42')](handleError(_0x4d1671,null));};exports[_0x0eec('0x22')]=function(_0x45cdc5,_0x26c112){if(_0x45cdc5[_0x0eec('0x47')]['id']){delete _0x45cdc5[_0x0eec('0x47')]['id'];}return db[_0x0eec('0x29')][_0x0eec('0x45')]({'where':{'id':_0x45cdc5['params']['id']}})['then'](handleEntityNotFound(_0x26c112,null))[_0x0eec('0x23')](saveUpdates(_0x45cdc5[_0x0eec('0x47')],null))[_0x0eec('0x23')](respondWithResult(_0x26c112,null))[_0x0eec('0x42')](handleError(_0x26c112,null));};exports['destroy']=function(_0x4e0e49,_0x3620c0){return db[_0x0eec('0x29')][_0x0eec('0x45')]({'where':{'id':_0x4e0e49[_0x0eec('0x43')]['id']}})[_0x0eec('0x23')](handleEntityNotFound(_0x3620c0,null))[_0x0eec('0x23')](removeEntity(_0x3620c0,null))[_0x0eec('0x42')](handleError(_0x3620c0,null));};exports[_0x0eec('0x48')]=function(_0x125c8e,_0x277edb){return db[_0x0eec('0x29')][_0x0eec('0x48')]()['then'](respondWithResult(_0x277edb,null))['catch'](handleError(_0x277edb,null));};
\ No newline at end of file
+var _0x13ae=['show','params','catch','create','body','find','destroy','describe','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','name','send','WhatsappTransferReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','map','VIRTUAL','filter','options','includeAll','include','findAll','rows'];(function(_0x8c1005,_0x1f3f16){var _0x175354=function(_0xd0e9c4){while(--_0xd0e9c4){_0x8c1005['push'](_0x8c1005['shift']());}};_0x175354(++_0x1f3f16);}(_0x13ae,0xe6));var _0xe13a=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x13ae[_0x502c7d];return _0x30b7ed;};'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(_0xe13a('0x0'));var moment=require(_0xe13a('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe13a('0x2'));var path=require('path');var sox=require(_0xe13a('0x3'));var csv=require(_0xe13a('0x4'));var ejs=require(_0xe13a('0x5'));var fs=require('fs');var fs_extra=require(_0xe13a('0x6'));var _=require(_0xe13a('0x7'));var squel=require(_0xe13a('0x8'));var crypto=require(_0xe13a('0x9'));var jsforce=require(_0xe13a('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe13a('0xb'));var Papa=require(_0xe13a('0xc'));var Redis=require(_0xe13a('0xd'));var authService=require(_0xe13a('0xe'));var qs=require(_0xe13a('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe13a('0x10'));var logger=require(_0xe13a('0x11'))(_0xe13a('0x12'));var utils=require(_0xe13a('0x13'));var config=require(_0xe13a('0x14'));var licenseUtil=require(_0xe13a('0x15'));var db=require(_0xe13a('0x16'))['db'];function respondWithStatusCode(_0x5e715,_0x54ea66){_0x54ea66=_0x54ea66||0xcc;return function(_0x2ab471){if(_0x2ab471){return _0x5e715[_0xe13a('0x17')](_0x54ea66);}return _0x5e715[_0xe13a('0x18')](_0x54ea66)[_0xe13a('0x19')]();};}function respondWithResult(_0x12f6f9,_0x19dc18){_0x19dc18=_0x19dc18||0xc8;return function(_0x462d0e){if(_0x462d0e){return _0x12f6f9['status'](_0x19dc18)['json'](_0x462d0e);}};}function respondWithFilteredResult(_0x463c25,_0x2fca0f){return function(_0x128986){if(_0x128986){var _0x20d162=typeof _0x2fca0f[_0xe13a('0x1a')]===_0xe13a('0x1b')&&typeof _0x2fca0f[_0xe13a('0x1c')]===_0xe13a('0x1b');var _0x165195=_0x128986[_0xe13a('0x1d')];var _0xc6f6d3=_0x20d162?0x0:_0x2fca0f['offset'];var _0x3c8f4f=_0x20d162?_0x128986[_0xe13a('0x1d')]:_0x2fca0f['offset']+_0x2fca0f[_0xe13a('0x1c')];var _0x12a8b9;if(_0x3c8f4f>=_0x165195){_0x3c8f4f=_0x165195;_0x12a8b9=0xc8;}else{_0x12a8b9=0xce;}_0x463c25['status'](_0x12a8b9);return _0x463c25[_0xe13a('0x1e')](_0xe13a('0x1f'),_0xc6f6d3+'-'+_0x3c8f4f+'/'+_0x165195)[_0xe13a('0x20')](_0x128986);}return null;};}function patchUpdates(_0x4489bd){return function(_0xeff2be){try{jsonpatch[_0xe13a('0x21')](_0xeff2be,_0x4489bd,!![]);}catch(_0x2c88bd){return BPromise[_0xe13a('0x22')](_0x2c88bd);}return _0xeff2be['save']();};}function saveUpdates(_0x5e8dea,_0x192240){return function(_0x48cdb8){if(_0x48cdb8){return _0x48cdb8[_0xe13a('0x23')](_0x5e8dea)[_0xe13a('0x24')](function(_0x3a5d29){return _0x3a5d29;});}return null;};}function removeEntity(_0x1d303c,_0x810633){return function(_0xd26093){if(_0xd26093){return _0xd26093['destroy']()[_0xe13a('0x24')](function(){_0x1d303c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ed1f7,_0x3d6cb5){return function(_0x43b238){if(!_0x43b238){_0x3ed1f7[_0xe13a('0x17')](0x194);}return _0x43b238;};}function handleError(_0x11a40c,_0x4323f5){_0x4323f5=_0x4323f5||0x1f4;return function(_0x4b8442){logger['error'](_0x4b8442['stack']);if(_0x4b8442[_0xe13a('0x25')]){delete _0x4b8442[_0xe13a('0x25')];}_0x11a40c[_0xe13a('0x18')](_0x4323f5)[_0xe13a('0x26')](_0x4b8442);};}exports['index']=function(_0x502bff,_0x475819){var _0x3498ed={},_0x40a5b0={},_0x55e77d={'count':0x0,'rows':[]};var _0x1e551e=_['map'](db[_0xe13a('0x27')][_0xe13a('0x28')],function(_0xd1fdb5){return{'name':_0xd1fdb5[_0xe13a('0x29')],'type':_0xd1fdb5[_0xe13a('0x2a')][_0xe13a('0x2b')]};});_0x40a5b0['model']=_['map'](_0x1e551e,'name');_0x40a5b0[_0xe13a('0x2c')]=_[_0xe13a('0x2d')](_0x502bff['query']);_0x40a5b0[_0xe13a('0x2e')]=_[_0xe13a('0x2f')](_0x40a5b0[_0xe13a('0x30')],_0x40a5b0['query']);_0x3498ed[_0xe13a('0x31')]=_[_0xe13a('0x2f')](_0x40a5b0[_0xe13a('0x30')],qs[_0xe13a('0x32')](_0x502bff[_0xe13a('0x2c')][_0xe13a('0x32')]));_0x3498ed[_0xe13a('0x31')]=_0x3498ed[_0xe13a('0x31')][_0xe13a('0x33')]?_0x3498ed[_0xe13a('0x31')]:_0x40a5b0[_0xe13a('0x30')];if(!_0x502bff[_0xe13a('0x2c')][_0xe13a('0x34')](_0xe13a('0x35'))){_0x3498ed[_0xe13a('0x1c')]=qs[_0xe13a('0x1c')](_0x502bff[_0xe13a('0x2c')][_0xe13a('0x1c')]);_0x3498ed['offset']=qs[_0xe13a('0x1a')](_0x502bff[_0xe13a('0x2c')][_0xe13a('0x1a')]);}_0x3498ed[_0xe13a('0x36')]=qs['sort'](_0x502bff[_0xe13a('0x2c')][_0xe13a('0x37')]);_0x3498ed[_0xe13a('0x38')]=qs[_0xe13a('0x2e')](_['pick'](_0x502bff[_0xe13a('0x2c')],_0x40a5b0[_0xe13a('0x2e')]),_0x1e551e);if(_0x502bff['query']['filter']){_0x3498ed[_0xe13a('0x38')]=_[_0xe13a('0x39')](_0x3498ed[_0xe13a('0x38')],{'$or':_[_0xe13a('0x3a')](_0x1e551e,function(_0x202348){if(_0x202348[_0xe13a('0x2a')]!==_0xe13a('0x3b')){var _0x365b73={};_0x365b73[_0x202348['name']]={'$like':'%'+_0x502bff['query'][_0xe13a('0x3c')]+'%'};return _0x365b73;}})});}_0x3498ed=_[_0xe13a('0x39')]({},_0x3498ed,_0x502bff[_0xe13a('0x3d')]);var _0x319c6a={'where':_0x3498ed[_0xe13a('0x38')]};return db[_0xe13a('0x27')][_0xe13a('0x1d')](_0x319c6a)['then'](function(_0xb811d5){_0x55e77d[_0xe13a('0x1d')]=_0xb811d5;if(_0x502bff[_0xe13a('0x2c')][_0xe13a('0x3e')]){_0x3498ed[_0xe13a('0x3f')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xe13a('0x40')](_0x3498ed);})[_0xe13a('0x24')](function(_0x348216){_0x55e77d[_0xe13a('0x41')]=_0x348216;return _0x55e77d;})[_0xe13a('0x24')](respondWithFilteredResult(_0x475819,_0x3498ed))['catch'](handleError(_0x475819,null));};exports[_0xe13a('0x42')]=function(_0x3bca3e,_0x11a9cf){var _0x513cb0={'raw':!![],'where':{'id':_0x3bca3e[_0xe13a('0x43')]['id']}},_0x3c047b={};_0x3c047b[_0xe13a('0x30')]=_[_0xe13a('0x2d')](db['WhatsappTransferReport']['rawAttributes']);_0x3c047b[_0xe13a('0x2c')]=_[_0xe13a('0x2d')](_0x3bca3e[_0xe13a('0x2c')]);_0x3c047b['filters']=_['intersection'](_0x3c047b[_0xe13a('0x30')],_0x3c047b[_0xe13a('0x2c')]);_0x513cb0[_0xe13a('0x31')]=_[_0xe13a('0x2f')](_0x3c047b[_0xe13a('0x30')],qs['fields'](_0x3bca3e[_0xe13a('0x2c')][_0xe13a('0x32')]));_0x513cb0[_0xe13a('0x31')]=_0x513cb0[_0xe13a('0x31')][_0xe13a('0x33')]?_0x513cb0[_0xe13a('0x31')]:_0x3c047b[_0xe13a('0x30')];if(_0x3bca3e[_0xe13a('0x2c')][_0xe13a('0x3e')]){_0x513cb0['include']=[{'all':!![]}];}_0x513cb0=_['merge']({},_0x513cb0,_0x3bca3e[_0xe13a('0x3d')]);return db[_0xe13a('0x27')]['find'](_0x513cb0)['then'](handleEntityNotFound(_0x11a9cf,null))[_0xe13a('0x24')](respondWithResult(_0x11a9cf,null))[_0xe13a('0x44')](handleError(_0x11a9cf,null));};exports[_0xe13a('0x45')]=function(_0x17accd,_0x45a230){return db[_0xe13a('0x27')]['create'](_0x17accd[_0xe13a('0x46')],{})[_0xe13a('0x24')](respondWithResult(_0x45a230,0xc9))[_0xe13a('0x44')](handleError(_0x45a230,null));};exports[_0xe13a('0x23')]=function(_0x569da6,_0x55e08e){if(_0x569da6['body']['id']){delete _0x569da6[_0xe13a('0x46')]['id'];}return db['WhatsappTransferReport'][_0xe13a('0x47')]({'where':{'id':_0x569da6[_0xe13a('0x43')]['id']}})[_0xe13a('0x24')](handleEntityNotFound(_0x55e08e,null))[_0xe13a('0x24')](saveUpdates(_0x569da6[_0xe13a('0x46')],null))['then'](respondWithResult(_0x55e08e,null))[_0xe13a('0x44')](handleError(_0x55e08e,null));};exports[_0xe13a('0x48')]=function(_0x198210,_0x12314d){return db['WhatsappTransferReport'][_0xe13a('0x47')]({'where':{'id':_0x198210[_0xe13a('0x43')]['id']}})[_0xe13a('0x24')](handleEntityNotFound(_0x12314d,null))[_0xe13a('0x24')](removeEntity(_0x12314d,null))[_0xe13a('0x44')](handleError(_0x12314d,null));};exports[_0xe13a('0x49')]=function(_0x16e185,_0x5a3a11){return db[_0xe13a('0x27')][_0xe13a('0x49')]()['then'](respondWithResult(_0x5a3a11,null))[_0xe13a('0x44')](handleError(_0x5a3a11,null));};
\ No newline at end of file
index 2a595fb..4f3a08b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fe4=['exports','define','WhatsappTransferReport','uniqueid','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x362cdb,_0x51f87c){var _0x363637=function(_0xe6afcc){while(--_0xe6afcc){_0x362cdb['push'](_0x362cdb['shift']());}};_0x363637(++_0x51f87c);}(_0x6fe4,0x90));var _0x46fe=function(_0x370fac,_0xde950){_0x370fac=_0x370fac-0x0;var _0x4792b3=_0x6fe4[_0x370fac];return _0x4792b3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x46fe('0x0'))('api');var moment=require(_0x46fe('0x1'));var BPromise=require(_0x46fe('0x2'));var rp=require(_0x46fe('0x3'));var fs=require('fs');var path=require(_0x46fe('0x4'));var rimraf=require(_0x46fe('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappTransferReport.attributes');module[_0x46fe('0x6')]=function(_0x519c27,_0x23e693){return _0x519c27[_0x46fe('0x7')](_0x46fe('0x8'),attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0x46fe('0x9'),'fields':[_0x46fe('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc11e=['rimraf','../../config/environment','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','api','moment','request-promise','path'];(function(_0x35401b,_0x175e80){var _0x295a97=function(_0x4df4cf){while(--_0x4df4cf){_0x35401b['push'](_0x35401b['shift']());}};_0x295a97(++_0x175e80);}(_0xc11e,0x89));var _0xec11=function(_0x582246,_0xa45179){_0x582246=_0x582246-0x0;var _0x2bcbcd=_0xc11e[_0x582246];return _0x2bcbcd;};'use strict';var _=require(_0xec11('0x0'));var util=require(_0xec11('0x1'));var logger=require('../../config/logger')(_0xec11('0x2'));var moment=require(_0xec11('0x3'));var BPromise=require('bluebird');var rp=require(_0xec11('0x4'));var fs=require('fs');var path=require(_0xec11('0x5'));var rimraf=require(_0xec11('0x6'));var config=require(_0xec11('0x7'));var attributes=require('./whatsappTransferReport.attributes');module[_0xec11('0x8')]=function(_0x5c9829,_0x2a2436){return _0x5c9829[_0xec11('0x9')](_0xec11('0xa'),attributes,{'tableName':_0xec11('0xb'),'paranoid':![],'indexes':[{'name':_0xec11('0xc'),'fields':[_0xec11('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 23c8fe3..91e409b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f6=['rpc','../../config/environment','http','request','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x38c632,_0x14e8e6){var _0x12737e=function(_0x3e0fe4){while(--_0x3e0fe4){_0x38c632['push'](_0x38c632['shift']());}};_0x12737e(++_0x14e8e6);}(_0x14f6,0xa4));var _0x614f=function(_0x125186,_0x241937){_0x125186=_0x125186-0x0;var _0x3a79e3=_0x14f6[_0x125186];return _0x3a79e3;};'use strict';var _=require(_0x614f('0x0'));var util=require(_0x614f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x614f('0x2'));var fs=require('fs');var Redis=require(_0x614f('0x3'));var db=require(_0x614f('0x4'))['db'];var utils=require(_0x614f('0x5'));var logger=require(_0x614f('0x6'))(_0x614f('0x7'));var config=require(_0x614f('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x614f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2eefe7,_0x26ade8,_0x31adb0){return new BPromise(function(_0x4a4aa9,_0x3c2f1a){return client[_0x614f('0xa')](_0x2eefe7,_0x31adb0)['then'](function(_0x8197c1){logger[_0x614f('0xb')](_0x614f('0xc'),_0x26ade8,_0x614f('0xd'));logger['debug']('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x26ade8,'request\x20sent',JSON[_0x614f('0xe')](_0x8197c1));if(_0x8197c1['error']){if(_0x8197c1[_0x614f('0xf')][_0x614f('0x10')]===0x1f4){logger[_0x614f('0xf')]('WhatsappTransferReport,\x20%s,\x20%s',_0x26ade8,_0x8197c1[_0x614f('0xf')]['message']);return _0x3c2f1a(_0x8197c1['error'][_0x614f('0x11')]);}logger[_0x614f('0xf')](_0x614f('0xc'),_0x26ade8,_0x8197c1[_0x614f('0xf')][_0x614f('0x11')]);return _0x4a4aa9(_0x8197c1['error']['message']);}else{logger['info'](_0x614f('0xc'),_0x26ade8,_0x614f('0xd'));_0x4a4aa9(_0x8197c1[_0x614f('0x12')][_0x614f('0x11')]);}})['catch'](function(_0x75b6e5){logger[_0x614f('0xf')](_0x614f('0xc'),_0x26ade8,_0x75b6e5);_0x3c2f1a(_0x75b6e5);});});}
\ No newline at end of file
+var _0x2b52=['code','message','result','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x135d90,_0x554c72){var _0x37975e=function(_0x465981){while(--_0x465981){_0x135d90['push'](_0x135d90['shift']());}};_0x37975e(++_0x554c72);}(_0x2b52,0xd4));var _0x22b5=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x2b52[_0x1e4360];return _0x31e6b4;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x22b5('0x0'));var rs=require(_0x22b5('0x1'));var fs=require('fs');var Redis=require(_0x22b5('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x22b5('0x3'));var logger=require(_0x22b5('0x4'))(_0x22b5('0x5'));var config=require(_0x22b5('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x22b5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3eef67,_0x9bbc26,_0x5977dc){return new BPromise(function(_0xb48459,_0x4f1753){return client[_0x22b5('0x8')](_0x3eef67,_0x5977dc)[_0x22b5('0x9')](function(_0xaf308a){logger[_0x22b5('0xa')](_0x22b5('0xb'),_0x9bbc26,_0x22b5('0xc'));logger[_0x22b5('0xd')](_0x22b5('0xe'),_0x9bbc26,'request\x20sent',JSON['stringify'](_0xaf308a));if(_0xaf308a[_0x22b5('0xf')]){if(_0xaf308a['error'][_0x22b5('0x10')]===0x1f4){logger[_0x22b5('0xf')]('WhatsappTransferReport,\x20%s,\x20%s',_0x9bbc26,_0xaf308a['error'][_0x22b5('0x11')]);return _0x4f1753(_0xaf308a[_0x22b5('0xf')][_0x22b5('0x11')]);}logger[_0x22b5('0xf')](_0x22b5('0xb'),_0x9bbc26,_0xaf308a['error'][_0x22b5('0x11')]);return _0xb48459(_0xaf308a[_0x22b5('0xf')]['message']);}else{logger[_0x22b5('0xa')](_0x22b5('0xb'),_0x9bbc26,_0x22b5('0xc'));_0xb48459(_0xaf308a[_0x22b5('0x12')][_0x22b5('0x11')]);}})['catch'](function(_0x27c384){logger['error'](_0x22b5('0xb'),_0x9bbc26,_0x27c384);_0x4f1753(_0x27c384);});});}
\ No newline at end of file
index 90c4a84..381e20c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa647=['status','join','None','log','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/transcribe','./config/schedule/cloud-provider','sync','then','seedDB','default','listen','info','start','filter','exitCode','number','length','\x20processes\x20failed\x20at\x20startup:\x20','name','Online\x20apps:','online','Offline\x20apps:','map'];(function(_0x375072,_0x1ad2ed){var _0x3e82e7=function(_0x2a03ec){while(--_0x2a03ec){_0x375072['push'](_0x375072['shift']());}};_0x3e82e7(++_0x1ad2ed);}(_0xa647,0x81));var _0x7a64=function(_0x49fe23,_0x2d0612){_0x49fe23=_0x49fe23-0x0;var _0x14ea5f=_0xa647[_0x49fe23];return _0x14ea5f;};'use strict';var _=require(_0x7a64('0x0'));var db=require(_0x7a64('0x1'))['db'];var seedDb=require(_0x7a64('0x2'));var checkLicense=require(_0x7a64('0x3'));var rpc=require(_0x7a64('0x4'));var config=require(_0x7a64('0x5'));var logger=require(_0x7a64('0x6'))(_0x7a64('0x7'));var pm2=require(_0x7a64('0x8'));var pm2Config=require(_0x7a64('0x9'));var schedule=require(_0x7a64('0xa'));var chat=require(_0x7a64('0xb'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x7a64('0xc'));var provider=require(_0x7a64('0xd'));function main(){return db['sequelize'][_0x7a64('0xe')]()[_0x7a64('0xf')](function(){if(config[_0x7a64('0x10')]){return seedDb[_0x7a64('0x11')]();}})[_0x7a64('0xf')](function(){return checkLicense[_0x7a64('0x11')]();})[_0x7a64('0xf')](function(){return rpc[_0x7a64('0x12')]();})[_0x7a64('0xf')](function(_0x2896c4){logger[_0x7a64('0x13')](_0x2896c4);return chat[_0x7a64('0x14')]();})[_0x7a64('0xf')](function(){return whatsapp['start']();})[_0x7a64('0xf')](function(){return schedule[_0x7a64('0x14')]();})['then'](function(){return transcribe[_0x7a64('0x14')]();})[_0x7a64('0xf')](function(){return provider[_0x7a64('0x14')]();})['then'](function(_0x20fb93){logger[_0x7a64('0x13')](_0x20fb93);return pm2[_0x7a64('0x14')](pm2Config);})[_0x7a64('0xf')](function(_0x24f0e3){var _0x105010=_0x24f0e3[_0x7a64('0x15')](function(_0x4829f8){return typeof _0x4829f8[_0x7a64('0x16')]===_0x7a64('0x17')&&_0x4829f8['exitCode']>=0x0;});if(_0x105010[_0x7a64('0x18')]>0x0){throw new Error(_0x105010[_0x7a64('0x18')]+_0x7a64('0x19')+_['map'](_0x105010,function(_0x126eef){return'\x22'+_0x126eef['pm2_env'][_0x7a64('0x1a')]+'\x22';}));}logger['info'](_0x7a64('0x1b'),_['map'](_[_0x7a64('0x15')](_0x24f0e3,{'status':_0x7a64('0x1c')}),'name')['join']());logger['info'](_0x7a64('0x1d'),_[_0x7a64('0x1e')](_['filter'](_0x24f0e3,function(_0x57fa06){return _0x57fa06[_0x7a64('0x1f')]!=='online';}),_0x7a64('0x1a'))[_0x7a64('0x20')]()||_0x7a64('0x21'));console[_0x7a64('0x22')]('App\x20Ready!');})[_0x7a64('0x23')](function(_0x895b5b){console['log'](_0x7a64('0x24'),_0x895b5b);logger[_0x7a64('0x25')](_0x7a64('0x26'),_0x895b5b);process[_0x7a64('0x27')](0x1);});}main();
\ No newline at end of file
+var _0xfc91=['pm2_env','name','Online\x20apps:','map','online','join','Offline\x20apps:','None','catch','error','exit','./mysqldb','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sync','default','then','listen','info','start','filter','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20'];(function(_0xa3400,_0x3a980a){var _0x33dba2=function(_0x5e988b){while(--_0x5e988b){_0xa3400['push'](_0xa3400['shift']());}};_0x33dba2(++_0x3a980a);}(_0xfc91,0xb5));var _0x1fc9=function(_0xa42329,_0x54f90d){_0xa42329=_0xa42329-0x0;var _0x1a800a=_0xfc91[_0xa42329];return _0x1a800a;};'use strict';var _=require('lodash');var db=require(_0x1fc9('0x0'))['db'];var seedDb=require('./config/seedDB');var checkLicense=require(_0x1fc9('0x1'));var rpc=require(_0x1fc9('0x2'));var config=require(_0x1fc9('0x3'));var logger=require(_0x1fc9('0x4'))(_0x1fc9('0x5'));var pm2=require(_0x1fc9('0x6'));var pm2Config=require(_0x1fc9('0x7'));var schedule=require(_0x1fc9('0x8'));var chat=require(_0x1fc9('0x9'));var whatsapp=require(_0x1fc9('0xa'));var transcribe=require(_0x1fc9('0xb'));var provider=require(_0x1fc9('0xc'));function main(){return db['sequelize'][_0x1fc9('0xd')]()['then'](function(){if(config['seedDB']){return seedDb[_0x1fc9('0xe')]();}})[_0x1fc9('0xf')](function(){return checkLicense[_0x1fc9('0xe')]();})[_0x1fc9('0xf')](function(){return rpc[_0x1fc9('0x10')]();})[_0x1fc9('0xf')](function(_0x43e0f0){logger[_0x1fc9('0x11')](_0x43e0f0);return chat[_0x1fc9('0x12')]();})[_0x1fc9('0xf')](function(){return whatsapp[_0x1fc9('0x12')]();})[_0x1fc9('0xf')](function(){return schedule[_0x1fc9('0x12')]();})[_0x1fc9('0xf')](function(){return transcribe[_0x1fc9('0x12')]();})[_0x1fc9('0xf')](function(){return provider[_0x1fc9('0x12')]();})['then'](function(_0xeafb47){logger[_0x1fc9('0x11')](_0xeafb47);return pm2['start'](pm2Config);})[_0x1fc9('0xf')](function(_0x39fe61){var _0x2d55ae=_0x39fe61[_0x1fc9('0x13')](function(_0x3e0c75){return typeof _0x3e0c75[_0x1fc9('0x14')]==='number'&&_0x3e0c75['exitCode']>=0x0;});if(_0x2d55ae[_0x1fc9('0x15')]>0x0){throw new Error(_0x2d55ae['length']+_0x1fc9('0x16')+_['map'](_0x2d55ae,function(_0x533635){return'\x22'+_0x533635[_0x1fc9('0x17')][_0x1fc9('0x18')]+'\x22';}));}logger[_0x1fc9('0x11')](_0x1fc9('0x19'),_[_0x1fc9('0x1a')](_[_0x1fc9('0x13')](_0x39fe61,{'status':_0x1fc9('0x1b')}),_0x1fc9('0x18'))[_0x1fc9('0x1c')]());logger[_0x1fc9('0x11')](_0x1fc9('0x1d'),_[_0x1fc9('0x1a')](_[_0x1fc9('0x13')](_0x39fe61,function(_0x19d9bd){return _0x19d9bd['status']!=='online';}),_0x1fc9('0x18'))[_0x1fc9('0x1c')]()||_0x1fc9('0x1e'));console['log']('App\x20Ready!');})[_0x1fc9('0x1f')](function(_0x4f8493){console['log']('Server\x20failed\x20to\x20start\x20due\x20to\x20error!',_0x4f8493);logger[_0x1fc9('0x20')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x4f8493);process[_0x1fc9('0x21')](0x1);});}main();
\ No newline at end of file
index 51d9995..6a4a76f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3f=['blockedAt','add','minutes','Invalid\x20API\x20access\x20key','User\x20not\x20found.','canUpdate','getLicense','update','isWebrtcLicence','webrtc','Forbidden','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyNonce','apiKeyIat','generateApiKey','regenerateApiKey','test','validatePasswordHistory','decryptString','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.','Sequelize','ValidationError','updatePasswordsHistory','split','length','splice','encryptString','join','promisify','sign','secret','payload','options','session','randomBytes','toString','hex','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../encryptor','lodash','jsonwebtoken','composable-middleware','basic-auth','bluebird','util','moment','secrets','role','fullname','name','internal','email','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','openchannelPause','pauseType','showWebBar','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','whatsappAutoanswer','whatsappAutoanswerDelay','messengerSoundNotification','isChatInteractionAuthorized','use','user','ChatInteraction','findOne','params','disposition','then','closed','status','unmanaged','json','Unmanaged.','Forbidden.','catch','isAuthenticated','headers','startsWith','authorization','Basic','User','find','authenticate','Wrong\x20credentials.','Unknown\x20authorization\x20format','query','apikey','getUuid','Setting','allowedLoginAttempts','blockDuration','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','blocked'];(function(_0x47c5bf,_0x45977e){var _0x11b779=function(_0x1bd585){while(--_0x1bd585){_0x47c5bf['push'](_0x47c5bf['shift']());}};_0x11b779(++_0x45977e);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x8e3f[_0x4a9fb1];return _0x348672;};'use strict';var db=require(_0xf8e3('0x0'))['db'];var config=require(_0xf8e3('0x1'));var hardwareConf=require(_0xf8e3('0x2'));var licenseUtil=require('../../config/license/util');var encryptor=require(_0xf8e3('0x3'));var _=require(_0xf8e3('0x4'));var jwt=require(_0xf8e3('0x5'));var expressJwt=require('express-jwt');var compose=require(_0xf8e3('0x6'));var basicAuth=require(_0xf8e3('0x7'));var crypto=require('crypto');var BPromise=require(_0xf8e3('0x8'));var util=require(_0xf8e3('0x9'));var moment=require(_0xf8e3('0xa'));var validateJwt=expressJwt({'secret':config[_0xf8e3('0xb')]['session']});var userAttributes=['id',_0xf8e3('0xc'),_0xf8e3('0xd'),_0xf8e3('0xe'),_0xf8e3('0xf'),_0xf8e3('0x10'),_0xf8e3('0x11'),_0xf8e3('0x12'),_0xf8e3('0x13'),_0xf8e3('0x14'),_0xf8e3('0x15'),_0xf8e3('0x16'),_0xf8e3('0x17'),'smsPause',_0xf8e3('0x18'),_0xf8e3('0x19'),_0xf8e3('0x1a'),'lastLoginAt',_0xf8e3('0x1b'),_0xf8e3('0x1c'),_0xf8e3('0x1d'),_0xf8e3('0x1e'),'alias',_0xf8e3('0x1f'),_0xf8e3('0x20'),_0xf8e3('0x21'),'phoneBarEnableRecording',_0xf8e3('0x22'),'phoneBarEnableSettings',_0xf8e3('0x23'),_0xf8e3('0x24'),_0xf8e3('0x25'),'phoneBarRemoteControlPort','hotdesk',_0xf8e3('0x26'),_0xf8e3('0x27'),_0xf8e3('0x28'),_0xf8e3('0x29'),_0xf8e3('0x2a'),_0xf8e3('0x2b'),_0xf8e3('0x2c'),_0xf8e3('0x2d'),_0xf8e3('0x2e'),_0xf8e3('0x2f'),'chatAutoanswer',_0xf8e3('0x30'),_0xf8e3('0x31'),_0xf8e3('0x32'),_0xf8e3('0x33'),_0xf8e3('0x34'),_0xf8e3('0x35'),_0xf8e3('0x36'),_0xf8e3('0x37'),'faxAutoanswerDelay',_0xf8e3('0x38'),_0xf8e3('0x39'),_0xf8e3('0x3a')];exports[_0xf8e3('0x3b')]=function(){return this['isAuthenticated'](!![])[_0xf8e3('0x3c')](function(_0x4b3705,_0x286059,_0x225a1b){if(_0x4b3705[_0xf8e3('0x3d')]){_0x225a1b();}else{return db[_0xf8e3('0x3e')][_0xf8e3('0x3f')]({'where':{'id':_0x4b3705[_0xf8e3('0x40')]['id']},'attributes':['id','closed',_0xf8e3('0x41')],'raw':!![]})[_0xf8e3('0x42')](function(_0x3373ca){if(_0x3373ca&&_0x3373ca[_0xf8e3('0x43')]){return _0x286059[_0xf8e3('0x44')](_0x3373ca[_0xf8e3('0x41')]===_0xf8e3('0x45')?0x195:0x193)[_0xf8e3('0x46')]({'message':_0x3373ca['disposition']===_0xf8e3('0x45')?_0xf8e3('0x47'):_0xf8e3('0x48')});}else{_0x225a1b();}})[_0xf8e3('0x49')](function(_0x15b28c){_0x225a1b(_0x15b28c);});}});};exports[_0xf8e3('0x4a')]=function isAuthenticated(_0x16485e){return compose()[_0xf8e3('0x3c')](function(_0x4f2ae9,_0x21e1c0,_0x243e28){var _0x492694;if(_0x4f2ae9[_0xf8e3('0x4b')]['authorization']){if(_[_0xf8e3('0x4c')](_0x4f2ae9[_0xf8e3('0x4b')][_0xf8e3('0x4d')],_0xf8e3('0x4e'))){var _0x33f208=basicAuth(_0x4f2ae9);db[_0xf8e3('0x4f')][_0xf8e3('0x50')]({'where':{'name':_0x33f208[_0xf8e3('0xe')]}})['then'](function(_0x2c07bf){if(!_0x2c07bf||!_0x2c07bf[_0xf8e3('0x51')](_0x33f208['pass'])){return _0x21e1c0['status'](0x191)['json']({'message':_0xf8e3('0x52')});}_0x4f2ae9['user']={'id':_0x2c07bf['id']};_0x243e28();})[_0xf8e3('0x49')](function(_0x41faaa){_0x243e28(_0x41faaa);});}else if(_[_0xf8e3('0x4c')](_0x4f2ae9[_0xf8e3('0x4b')]['authorization'],'Bearer')){validateJwt(_0x4f2ae9,_0x21e1c0,_0x243e28);}else{if(_0x16485e){_0x243e28();}else{return _0x21e1c0[_0xf8e3('0x44')](0x193)[_0xf8e3('0x46')]({'message':_0xf8e3('0x53')});}}}else if(_0x4f2ae9[_0xf8e3('0x54')][_0xf8e3('0x55')]){try{var _0x24a037={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xf8e3('0x56')]()};verifyJwt(_0x4f2ae9['query']['apikey'],_0x24a037)[_0xf8e3('0x42')](function(_0x1e8878){return db[_0xf8e3('0x4f')][_0xf8e3('0x50')]({'where':{'id':_0x1e8878['sub']}})['then'](function(_0x41138f){_0x492694=_0x41138f;return db[_0xf8e3('0x57')]['findOne']({'where':{'id':0x1},'attributes':[_0xf8e3('0x58'),_0xf8e3('0x59')],'raw':!![]});})[_0xf8e3('0x42')](function(_0x18303e){if(!_0x492694||!_['isEqual'](_0x492694['apiKeyNonce'],_0x1e8878['nonce'])){return _0x21e1c0[_0xf8e3('0x44')](0x191)[_0xf8e3('0x46')]({'message':_0xf8e3('0x5a')});}if(_0x492694[_0xf8e3('0x5b')]){return _0x21e1c0['status'](0x191)[_0xf8e3('0x46')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x492694[_0xf8e3('0x5c')]){if(_0x18303e[_0xf8e3('0x59')]>0x0){if(moment(_0x492694[_0xf8e3('0x5d')])[_0xf8e3('0x5e')](_0x18303e[_0xf8e3('0x59')],_0xf8e3('0x5f'))>moment()){return _0x21e1c0[_0xf8e3('0x44')](0x191)[_0xf8e3('0x46')]({'message':_0xf8e3('0x60')});}}else{return _0x21e1c0['status'](0x191)[_0xf8e3('0x46')]({'message':'Invalid\x20API\x20access\x20key'});}}_0x4f2ae9[_0xf8e3('0x3d')]={'id':_0x492694['id']};_0x243e28();});})[_0xf8e3('0x49')](function(){return _0x21e1c0[_0xf8e3('0x44')](0x191)[_0xf8e3('0x46')]({'message':_0xf8e3('0x60')});});}catch(_0x114a31){_0x243e28(_0x114a31);}}else if(_0x16485e){_0x243e28();}else{return _0x21e1c0[_0xf8e3('0x44')](0x193)[_0xf8e3('0x46')]({'message':'Unknown\x20authorization\x20format'});}})[_0xf8e3('0x3c')](function(_0x108b81,_0x403173,_0x382dbb){if(_0x108b81[_0xf8e3('0x3d')]){db[_0xf8e3('0x4f')][_0xf8e3('0x50')]({'where':{'id':_0x108b81[_0xf8e3('0x3d')]['id']},'attributes':userAttributes})['then'](function(_0x57bba5){if(!_0x57bba5){return _0x403173['status'](0x194)[_0xf8e3('0x46')]({'message':_0xf8e3('0x61')});}_0x108b81['user']=_0x57bba5;_0x382dbb();})[_0xf8e3('0x49')](function(_0x489f20){_0x382dbb(_0x489f20);});}else if(_0x16485e){_0x382dbb();}else{return _0x403173[_0xf8e3('0x44')](0x194)[_0xf8e3('0x46')]({'message':'User\x20object\x20not\x20found.'});}});};exports[_0xf8e3('0x62')]=function canUpdate(){return compose()['use'](function(_0x679519,_0x6875a6,_0x4b873e){return licenseUtil[_0xf8e3('0x63')]()[_0xf8e3('0x42')](function(_0x38e3d5){if(_0x38e3d5[_0xf8e3('0x64')]){_0x4b873e();}else{return _0x6875a6['status'](0x193)['json']({'message':'Forbidden'});}})[_0xf8e3('0x49')](function(_0xc1f803){_0x4b873e(_0xc1f803);});});};exports[_0xf8e3('0x65')]=function isWebrtcLicence(){return compose()['use'](function(_0x3258ef,_0x4bced6,_0x173b2b){return licenseUtil[_0xf8e3('0x63')]()['then'](function(_0x4a5aff){if(_0x4a5aff[_0xf8e3('0x66')]){_0x173b2b();}else{return _0x4bced6[_0xf8e3('0x44')](0x193)[_0xf8e3('0x46')]({'message':_0xf8e3('0x67')});}})[_0xf8e3('0x49')](function(_0x1fc2a6){_0x173b2b(_0x1fc2a6);});});};exports[_0xf8e3('0x68')]=function(_0x2a58e2,_0xdc2430,_0x81898e){_0x2a58e2[_0xf8e3('0x68')]=!![];return _0x81898e();};exports['signToken']=function signToken(_0x2104ea){return signJwt(_0x2104ea);};exports[_0xf8e3('0x69')]=function(_0x20195b,_0x458188){if(!_0x20195b[_0xf8e3('0x3d')]){return _0x458188[_0xf8e3('0x44')](0x194)['json']({'message':_0xf8e3('0x6a')});}var _0x3534f0={'payload':{'id':_0x20195b[_0xf8e3('0x3d')]['id'],'role':_0x20195b[_0xf8e3('0x3d')][_0xf8e3('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x3534f0)[_0xf8e3('0x42')](function(_0x5855f2){_0x458188[_0xf8e3('0x6b')](_0xf8e3('0x6c'),_0x5855f2);_0x458188[_0xf8e3('0x6d')](_0xf8e3('0x6e'));})[_0xf8e3('0x49')](function(_0x2fef16){return _0x458188['status'](0x1f4)[_0xf8e3('0x6f')](_0x2fef16);});};exports[_0xf8e3('0x70')]=function(_0x1bb0c1){if(_[_0xf8e3('0x71')](_0x1bb0c1[_0xf8e3('0x72')])||_['isNil'](_0x1bb0c1[_0xf8e3('0x73')])){return null;}else{return createJwt(_0x1bb0c1);}};exports[_0xf8e3('0x74')]=function(_0x40561e){_0x40561e['apiKeyNonce']=generateNonce();_0x40561e['apiKeyIat']=generateIssuedAt();return createJwt(_0x40561e);};exports[_0xf8e3('0x75')]=function(_0x3886dc,_0x2a0c85){var _0x3ad7f1=_0x3886dc['query'][_0xf8e3('0x55')];if(_0x3ad7f1){var _0x16bddb={'nonce':_0x2a0c85['apiKeyNonce'],'iat':_0x2a0c85['apiKeyIat'],'audience':hardwareConf[_0xf8e3('0x56')](),'issuer':hardwareConf[_0xf8e3('0x56')]()};return verifyJwt(_0x3ad7f1,_0x16bddb)[_0xf8e3('0x42')](function(){return generateApiKey(_0x2a0c85);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports['validatePasswordPattern']=function(_0x4892e9){var _0x182e9b=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x182e9b[_0xf8e3('0x76')](_0x4892e9))throw new db['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~!@#$%^&-_=+[{]}.');return;};exports[_0xf8e3('0x77')]=function(_0x51ff7c,_0x5368a8,_0x3c3775){var _0x21cd28=encryptor[_0xf8e3('0x78')](_0x5368a8)['split'](',');for(var _0x57561f=0x0;_0x57561f<_0x3c3775;_0x57561f++){if(!_0x21cd28[_0x57561f])break;if(_0x51ff7c['toLowerCase']()===_0x21cd28[_0x57561f]['toLowerCase']()){var _0x3390a1=util[_0xf8e3('0x79')](_0xf8e3('0x7a'),_0x3c3775);if(_0x3c3775===0x1){_0x3390a1=_0xf8e3('0x7b');}throw new db[(_0xf8e3('0x7c'))][(_0xf8e3('0x7d'))](_0x3390a1);}}return;};exports[_0xf8e3('0x7e')]=function(_0x5f5ee4,_0x1ffcaa){var _0x5d5d91=_0x1ffcaa?encryptor['decryptString'](_0x1ffcaa)[_0xf8e3('0x7f')](','):[];if(_0x5d5d91[_0xf8e3('0x80')]===0x5){_0x5d5d91[_0xf8e3('0x81')](-0x1,0x1);}_0x5d5d91['unshift'](_0x5f5ee4);return encryptor[_0xf8e3('0x82')](_0x5d5d91[_0xf8e3('0x83')](','));};function signJwt(_0x4879c7){var _0x48bb3f=BPromise[_0xf8e3('0x84')](jwt[_0xf8e3('0x85')],{'context':jwt});var _0x2c2aa6=_0x4879c7[_0xf8e3('0x86')]||config['secrets']['session'];return new BPromise(function(_0x37751e,_0x3276f3){_0x48bb3f(_0x4879c7[_0xf8e3('0x87')],_0x2c2aa6,_0x4879c7[_0xf8e3('0x88')])['then'](function(_0x572c15){_0x37751e(_0x572c15);})[_0xf8e3('0x49')](function(_0x413073){_0x3276f3(_0x413073);});});}function verifyJwt(_0x56a07e,_0x266f16,_0x263eb6){var _0x44282b=BPromise[_0xf8e3('0x84')](jwt['verify'],{'context':jwt});var _0x11ebb2=_0x263eb6||config['secrets'][_0xf8e3('0x89')];return new BPromise(function(_0x1cad38,_0x5cbdc6){_0x44282b(_0x56a07e,_0x11ebb2,_0x266f16)[_0xf8e3('0x42')](function(_0x31568b){_0x1cad38(_0x31568b);})['catch'](function(_0x232d83){_0x5cbdc6(_0x232d83);});});}function generateNonce(){return crypto[_0xf8e3('0x8a')](0x10)[_0xf8e3('0x8b')](_0xf8e3('0x8c'));}function generateIssuedAt(){return Math['floor'](Date[_0xf8e3('0x8d')]()/0x3e8)[_0xf8e3('0x8b')]();}function createJwt(_0x76033b){var _0x3c214f={'payload':{'iat':_0x76033b[_0xf8e3('0x73')],'nonce':_0x76033b[_0xf8e3('0x72')]},'options':{'algorithm':_0xf8e3('0x8e'),'subject':_0x76033b['id'][_0xf8e3('0x8b')](),'issuer':hardwareConf[_0xf8e3('0x56')](),'audience':hardwareConf[_0xf8e3('0x56')]()}};return signJwt(_0x3c214f)[_0xf8e3('0x42')](function(_0x21d922){return{'iat':_0x76033b['apiKeyIat'],'nonce':_0x76033b['apiKeyNonce'],'token':_0x21d922};});}
\ No newline at end of file
+var _0xbaf0=['randomBytes','toString','hex','floor','now','HS512','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','composable-middleware','basic-auth','crypto','bluebird','util','moment','secrets','session','role','name','email','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','chatAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','whatsappAutoanswerDelay','messengerSoundNotification','isChatInteractionAuthorized','use','ChatInteraction','closed','disposition','then','unmanaged','json','Unmanaged.','Forbidden.','isAuthenticated','headers','authorization','startsWith','Basic','find','authenticate','pass','status','Wrong\x20credentials.','user','catch','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','User','sub','findOne','allowedLoginAttempts','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockDuration','blockedAt','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','send','retrieveApiKey','apiKeyIat','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','join','sign','secret','payload','options','promisify','verify'];(function(_0x4a747c,_0x4e0be3){var _0x57a6dc=function(_0x2b7a29){while(--_0x2b7a29){_0x4a747c['push'](_0x4a747c['shift']());}};_0x57a6dc(++_0x4e0be3);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xbaf0[_0x6131cd];return _0x47e916;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0x0baf('0x0'));var hardwareConf=require(_0x0baf('0x1'));var licenseUtil=require(_0x0baf('0x2'));var encryptor=require(_0x0baf('0x3'));var _=require(_0x0baf('0x4'));var jwt=require(_0x0baf('0x5'));var expressJwt=require('express-jwt');var compose=require(_0x0baf('0x6'));var basicAuth=require(_0x0baf('0x7'));var crypto=require(_0x0baf('0x8'));var BPromise=require(_0x0baf('0x9'));var util=require(_0x0baf('0xa'));var moment=require(_0x0baf('0xb'));var validateJwt=expressJwt({'secret':config[_0x0baf('0xc')][_0x0baf('0xd')]});var userAttributes=['id',_0x0baf('0xe'),'fullname',_0x0baf('0xf'),'internal',_0x0baf('0x10'),_0x0baf('0x11'),_0x0baf('0x12'),_0x0baf('0x13'),_0x0baf('0x14'),_0x0baf('0x15'),_0x0baf('0x16'),_0x0baf('0x17'),_0x0baf('0x18'),_0x0baf('0x19'),_0x0baf('0x1a'),'showWebBar','lastLoginAt',_0x0baf('0x1b'),_0x0baf('0x1c'),_0x0baf('0x1d'),_0x0baf('0x1e'),'alias',_0x0baf('0x1f'),'phoneBarAutoAnswerDelay',_0x0baf('0x20'),_0x0baf('0x21'),_0x0baf('0x22'),_0x0baf('0x23'),_0x0baf('0x24'),_0x0baf('0x25'),'phoneBarRemoteControl','phoneBarRemoteControlPort',_0x0baf('0x26'),_0x0baf('0x27'),_0x0baf('0x28'),_0x0baf('0x29'),_0x0baf('0x2a'),_0x0baf('0x2b'),'downloadVoiceRecordings',_0x0baf('0x2c'),_0x0baf('0x2d'),_0x0baf('0x2e'),_0x0baf('0x2f'),_0x0baf('0x30'),_0x0baf('0x31'),'emailAutoanswer','emailAutoanswerDelay',_0x0baf('0x32'),_0x0baf('0x33'),_0x0baf('0x34'),_0x0baf('0x35'),_0x0baf('0x36'),_0x0baf('0x37'),_0x0baf('0x38'),_0x0baf('0x39'),_0x0baf('0x3a')];exports[_0x0baf('0x3b')]=function(){return this['isAuthenticated'](!![])[_0x0baf('0x3c')](function(_0x482522,_0xf6c158,_0x5dbf00){if(_0x482522['user']){_0x5dbf00();}else{return db[_0x0baf('0x3d')]['findOne']({'where':{'id':_0x482522['params']['id']},'attributes':['id',_0x0baf('0x3e'),_0x0baf('0x3f')],'raw':!![]})[_0x0baf('0x40')](function(_0x19d9fd){if(_0x19d9fd&&_0x19d9fd[_0x0baf('0x3e')]){return _0xf6c158['status'](_0x19d9fd[_0x0baf('0x3f')]===_0x0baf('0x41')?0x195:0x193)[_0x0baf('0x42')]({'message':_0x19d9fd[_0x0baf('0x3f')]===_0x0baf('0x41')?_0x0baf('0x43'):_0x0baf('0x44')});}else{_0x5dbf00();}})['catch'](function(_0x1590b4){_0x5dbf00(_0x1590b4);});}});};exports[_0x0baf('0x45')]=function isAuthenticated(_0xcaf13d){return compose()[_0x0baf('0x3c')](function(_0x55c715,_0x29dbdf,_0x34a58a){var _0x5d9d7f;if(_0x55c715[_0x0baf('0x46')][_0x0baf('0x47')]){if(_[_0x0baf('0x48')](_0x55c715[_0x0baf('0x46')][_0x0baf('0x47')],_0x0baf('0x49'))){var _0x213a6a=basicAuth(_0x55c715);db['User'][_0x0baf('0x4a')]({'where':{'name':_0x213a6a[_0x0baf('0xf')]}})[_0x0baf('0x40')](function(_0x3ed995){if(!_0x3ed995||!_0x3ed995[_0x0baf('0x4b')](_0x213a6a[_0x0baf('0x4c')])){return _0x29dbdf[_0x0baf('0x4d')](0x191)[_0x0baf('0x42')]({'message':_0x0baf('0x4e')});}_0x55c715[_0x0baf('0x4f')]={'id':_0x3ed995['id']};_0x34a58a();})[_0x0baf('0x50')](function(_0x165d14){_0x34a58a(_0x165d14);});}else if(_[_0x0baf('0x48')](_0x55c715[_0x0baf('0x46')]['authorization'],_0x0baf('0x51'))){validateJwt(_0x55c715,_0x29dbdf,_0x34a58a);}else{if(_0xcaf13d){_0x34a58a();}else{return _0x29dbdf['status'](0x193)[_0x0baf('0x42')]({'message':_0x0baf('0x52')});}}}else if(_0x55c715[_0x0baf('0x53')][_0x0baf('0x54')]){try{var _0x5300a5={'audience':hardwareConf[_0x0baf('0x55')](),'issuer':hardwareConf[_0x0baf('0x55')]()};verifyJwt(_0x55c715['query'][_0x0baf('0x54')],_0x5300a5)[_0x0baf('0x40')](function(_0x62a2ed){return db[_0x0baf('0x56')][_0x0baf('0x4a')]({'where':{'id':_0x62a2ed[_0x0baf('0x57')]}})[_0x0baf('0x40')](function(_0x675461){_0x5d9d7f=_0x675461;return db['Setting'][_0x0baf('0x58')]({'where':{'id':0x1},'attributes':[_0x0baf('0x59'),'blockDuration'],'raw':!![]});})[_0x0baf('0x40')](function(_0x57783c){if(!_0x5d9d7f||!_['isEqual'](_0x5d9d7f[_0x0baf('0x5a')],_0x62a2ed[_0x0baf('0x5b')])){return _0x29dbdf['status'](0x191)['json']({'message':_0x0baf('0x5c')});}if(_0x5d9d7f[_0x0baf('0x5d')]){return _0x29dbdf[_0x0baf('0x4d')](0x191)[_0x0baf('0x42')]({'message':_0x0baf('0x5e')});}if(_0x5d9d7f[_0x0baf('0x5f')]){if(_0x57783c[_0x0baf('0x60')]>0x0){if(moment(_0x5d9d7f[_0x0baf('0x61')])[_0x0baf('0x62')](_0x57783c[_0x0baf('0x60')],_0x0baf('0x63'))>moment()){return _0x29dbdf[_0x0baf('0x4d')](0x191)[_0x0baf('0x42')]({'message':_0x0baf('0x5e')});}}else{return _0x29dbdf['status'](0x191)[_0x0baf('0x42')]({'message':_0x0baf('0x5e')});}}_0x55c715['user']={'id':_0x5d9d7f['id']};_0x34a58a();});})[_0x0baf('0x50')](function(){return _0x29dbdf[_0x0baf('0x4d')](0x191)[_0x0baf('0x42')]({'message':_0x0baf('0x5e')});});}catch(_0x2e20c8){_0x34a58a(_0x2e20c8);}}else if(_0xcaf13d){_0x34a58a();}else{return _0x29dbdf[_0x0baf('0x4d')](0x193)['json']({'message':_0x0baf('0x52')});}})[_0x0baf('0x3c')](function(_0x540c41,_0x35d442,_0x412e6f){if(_0x540c41[_0x0baf('0x4f')]){db[_0x0baf('0x56')]['find']({'where':{'id':_0x540c41[_0x0baf('0x4f')]['id']},'attributes':userAttributes})[_0x0baf('0x40')](function(_0x301412){if(!_0x301412){return _0x35d442[_0x0baf('0x4d')](0x194)[_0x0baf('0x42')]({'message':_0x0baf('0x64')});}_0x540c41[_0x0baf('0x4f')]=_0x301412;_0x412e6f();})[_0x0baf('0x50')](function(_0xce1bf0){_0x412e6f(_0xce1bf0);});}else if(_0xcaf13d){_0x412e6f();}else{return _0x35d442[_0x0baf('0x4d')](0x194)['json']({'message':_0x0baf('0x65')});}});};exports[_0x0baf('0x66')]=function canUpdate(){return compose()[_0x0baf('0x3c')](function(_0x339aff,_0x22207a,_0x55f4f8){return licenseUtil[_0x0baf('0x67')]()[_0x0baf('0x40')](function(_0x27c3ee){if(_0x27c3ee[_0x0baf('0x68')]){_0x55f4f8();}else{return _0x22207a[_0x0baf('0x4d')](0x193)['json']({'message':_0x0baf('0x69')});}})[_0x0baf('0x50')](function(_0x2fd9bb){_0x55f4f8(_0x2fd9bb);});});};exports[_0x0baf('0x6a')]=function isWebrtcLicence(){return compose()[_0x0baf('0x3c')](function(_0x22d10f,_0x178995,_0x5679d9){return licenseUtil[_0x0baf('0x67')]()[_0x0baf('0x40')](function(_0x3a6489){if(_0x3a6489['webrtc']){_0x5679d9();}else{return _0x178995[_0x0baf('0x4d')](0x193)[_0x0baf('0x42')]({'message':_0x0baf('0x69')});}})[_0x0baf('0x50')](function(_0x204d77){_0x5679d9(_0x204d77);});});};exports[_0x0baf('0x6b')]=function(_0x8905fe,_0x5a54bb,_0x22c451){_0x8905fe[_0x0baf('0x6b')]=!![];return _0x22c451();};exports[_0x0baf('0x6c')]=function signToken(_0x2676eb){return signJwt(_0x2676eb);};exports[_0x0baf('0x6d')]=function(_0xc427b2,_0x40d4a6){if(!_0xc427b2[_0x0baf('0x4f')]){return _0x40d4a6[_0x0baf('0x4d')](0x194)[_0x0baf('0x42')]({'message':_0x0baf('0x6e')});}var _0x58c33f={'payload':{'id':_0xc427b2['user']['id'],'role':_0xc427b2[_0x0baf('0x4f')][_0x0baf('0xe')]},'options':{'expiresIn':0x15180}};return signJwt(_0x58c33f)[_0x0baf('0x40')](function(_0xb8fa28){_0x40d4a6[_0x0baf('0x6f')](_0x0baf('0x70'),_0xb8fa28);_0x40d4a6[_0x0baf('0x71')]('/dashboards/general');})[_0x0baf('0x50')](function(_0x2ef4c1){return _0x40d4a6[_0x0baf('0x4d')](0x1f4)[_0x0baf('0x72')](_0x2ef4c1);});};exports[_0x0baf('0x73')]=function(_0x1e2671){if(_['isNil'](_0x1e2671[_0x0baf('0x5a')])||_['isNil'](_0x1e2671[_0x0baf('0x74')])){return null;}else{return createJwt(_0x1e2671);}};exports['generateApiKey']=function(_0x25a1b2){_0x25a1b2['apiKeyNonce']=generateNonce();_0x25a1b2[_0x0baf('0x74')]=generateIssuedAt();return createJwt(_0x25a1b2);};exports['regenerateApiKey']=function(_0x1b66fa,_0xcf7b8d){var _0x411c1f=_0x1b66fa[_0x0baf('0x53')][_0x0baf('0x54')];if(_0x411c1f){var _0x576475={'nonce':_0xcf7b8d[_0x0baf('0x5a')],'iat':_0xcf7b8d[_0x0baf('0x74')],'audience':hardwareConf[_0x0baf('0x55')](),'issuer':hardwareConf[_0x0baf('0x55')]()};return verifyJwt(_0x411c1f,_0x576475)[_0x0baf('0x40')](function(){return generateApiKey(_0xcf7b8d);});}else{throw{'message':_0x0baf('0x75')};}};exports['validatePasswordPattern']=function(_0x402f4d){var _0x2771a2=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x2771a2[_0x0baf('0x76')](_0x402f4d))throw new db[(_0x0baf('0x77'))][(_0x0baf('0x78'))](_0x0baf('0x79'));return;};exports[_0x0baf('0x7a')]=function(_0x565292,_0x48e855,_0x23f6ea){var _0x11e18a=encryptor[_0x0baf('0x7b')](_0x48e855)[_0x0baf('0x7c')](',');for(var _0x3128aa=0x0;_0x3128aa<_0x23f6ea;_0x3128aa++){if(!_0x11e18a[_0x3128aa])break;if(_0x565292[_0x0baf('0x7d')]()===_0x11e18a[_0x3128aa][_0x0baf('0x7d')]()){var _0x14a667=util[_0x0baf('0x7e')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x23f6ea);if(_0x23f6ea===0x1){_0x14a667=_0x0baf('0x7f');}throw new db[(_0x0baf('0x77'))][(_0x0baf('0x78'))](_0x14a667);}}return;};exports[_0x0baf('0x80')]=function(_0x2024e2,_0xebfc0c){var _0x26f5c9=_0xebfc0c?encryptor['decryptString'](_0xebfc0c)[_0x0baf('0x7c')](','):[];if(_0x26f5c9[_0x0baf('0x81')]===0x5){_0x26f5c9[_0x0baf('0x82')](-0x1,0x1);}_0x26f5c9[_0x0baf('0x83')](_0x2024e2);return encryptor[_0x0baf('0x84')](_0x26f5c9[_0x0baf('0x85')](','));};function signJwt(_0x14e6d0){var _0x12543e=BPromise['promisify'](jwt[_0x0baf('0x86')],{'context':jwt});var _0x5dc434=_0x14e6d0[_0x0baf('0x87')]||config['secrets']['session'];return new BPromise(function(_0x25a0c4,_0x4a2cb0){_0x12543e(_0x14e6d0[_0x0baf('0x88')],_0x5dc434,_0x14e6d0[_0x0baf('0x89')])['then'](function(_0x7fc9ae){_0x25a0c4(_0x7fc9ae);})[_0x0baf('0x50')](function(_0x156572){_0x4a2cb0(_0x156572);});});}function verifyJwt(_0x5b3c1d,_0x4d89f4,_0x2438df){var _0x7e8946=BPromise[_0x0baf('0x8a')](jwt[_0x0baf('0x8b')],{'context':jwt});var _0x784e1a=_0x2438df||config['secrets'][_0x0baf('0xd')];return new BPromise(function(_0x4c02ca,_0x5d5751){_0x7e8946(_0x5b3c1d,_0x784e1a,_0x4d89f4)['then'](function(_0x427ed1){_0x4c02ca(_0x427ed1);})['catch'](function(_0x4946d4){_0x5d5751(_0x4946d4);});});}function generateNonce(){return crypto[_0x0baf('0x8c')](0x10)[_0x0baf('0x8d')](_0x0baf('0x8e'));}function generateIssuedAt(){return Math[_0x0baf('0x8f')](Date[_0x0baf('0x90')]()/0x3e8)[_0x0baf('0x8d')]();}function createJwt(_0x4c05d6){var _0xec3b32={'payload':{'iat':_0x4c05d6[_0x0baf('0x74')],'nonce':_0x4c05d6[_0x0baf('0x5a')]},'options':{'algorithm':_0x0baf('0x91'),'subject':_0x4c05d6['id'][_0x0baf('0x8d')](),'issuer':hardwareConf[_0x0baf('0x55')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0xec3b32)[_0x0baf('0x40')](function(_0x468363){return{'iat':_0x4c05d6[_0x0baf('0x74')],'nonce':_0x4c05d6['apiKeyNonce'],'token':_0x468363};});}
\ No newline at end of file
index ef9674f..b3e128c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f6e=['resolve','getContactsSubquery','then','search','parseQueryParameters','where','fields','filter','user','clause','tags','skip','checkListsRestrictions','ids','tag','countFilteredContacts','count','getFilteredContacts','CmContact','describe','keys','startsWith','cf_','CmCustomField','findOne','slice','all','length','fieldType','type','map','catch','./sql-utils','findAll','skipContactsQuery'];(function(_0x47b67e,_0x50181a){var _0xe3b207=function(_0x4c9665){while(--_0x4c9665){_0x47b67e['push'](_0x47b67e['shift']());}};_0xe3b207(++_0x50181a);}(_0x7f6e,0xcf));var _0xe7f6=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x7f6e[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require('lodash');var sqlUtils=require(_0xe7f6('0x0'));var db=require('../../mysqldb')['db'];exports[_0xe7f6('0x1')]=function(_0x4883bb,_0x1c5fe2,_0x33f298,_0x5829ce){var _0x4340f2={'count':0x0,'rows':[]};var _0x12f079=sqlUtils[_0xe7f6('0x2')](_0x1c5fe2,_0x4883bb);if(_0x12f079){return Promise[_0xe7f6('0x3')](_0x4340f2);}var _0x58b027=sqlUtils[_0xe7f6('0x4')]();var _0x46a3a9={};var _0x1d6571=![];var _0x3cbc52=![];return Promise[_0xe7f6('0x3')]()[_0xe7f6('0x5')](function(){if(_0x4883bb[_0xe7f6('0x6')]){return sqlUtils['parseAdvancedSearchFilter'](_0x4883bb[_0xe7f6('0x6')],_0x5829ce);}else{return sqlUtils[_0xe7f6('0x7')](_0x4883bb,_0x5829ce);}})[_0xe7f6('0x5')](function(_0xc627f2){_0x58b027['where'](_0xc627f2['default']);_0x58b027[_0xe7f6('0x8')](_0xc627f2[_0xe7f6('0x9')]);_0x58b027[_0xe7f6('0x8')](_0xc627f2[_0xe7f6('0xa')]);_0x58b027[_0xe7f6('0x8')](_0xc627f2[_0xe7f6('0xb')][_0xe7f6('0xc')]);_0x46a3a9=_0xc627f2[_0xe7f6('0xd')];_0x3cbc52=_0xc627f2['user'][_0xe7f6('0xe')];return sqlUtils[_0xe7f6('0xf')](_0x1c5fe2,_0x4883bb,_0x3cbc52);})[_0xe7f6('0x5')](function(_0x12fb5c){_0x58b027[_0xe7f6('0x8')](_0x12fb5c);var _0x1bf907=_0x4883bb[_0xe7f6('0x6')]?_0x46a3a9[_0xe7f6('0x10')]:_0x4883bb[_0xe7f6('0x11')];_0x1d6571=_0x1bf907?!![]:![];return sqlUtils[_0xe7f6('0x12')](_0x58b027,_0x1bf907);})[_0xe7f6('0x5')](function(_0x185f3c){_0x4340f2[_0xe7f6('0x13')]=_0x185f3c;if(_0x4340f2[_0xe7f6('0x13')]===0x0){return;}if(_0x4883bb['User']){_0x3cbc52=!![];}return sqlUtils['buildContactsQuery'](_0x58b027,_0x4883bb[_0xe7f6('0x9')],_0x33f298,_0x1d6571,_0x46a3a9['clause'],_0x3cbc52);})[_0xe7f6('0x5')](function(_0x53b620){if(!_0x53b620){return[];}return sqlUtils[_0xe7f6('0x14')](_0x53b620,_0x4883bb,_0x33f298);})[_0xe7f6('0x5')](function(_0x5cdd53){_0x4340f2['rows']=_0x5cdd53;return _0x4340f2;})['catch'](function(_0x361214){throw _0x361214;});};exports['describe']=function(){var _0x21897e={};var _0x53c74f=[];return db[_0xe7f6('0x15')][_0xe7f6('0x16')]()['then'](function(_0x4fc536){_0x21897e=_0x4fc536;var _0x1ed62d=Object[_0xe7f6('0x17')](_0x21897e)['filter'](function(_0x130748){return _[_0xe7f6('0x18')](_0x130748,_0xe7f6('0x19'))?_0x130748:undefined;});var _0x5b7576=_0x1ed62d['map'](function(_0x225536){return db[_0xe7f6('0x1a')][_0xe7f6('0x1b')]({'where':{'id':_0x225536[_0xe7f6('0x1c')](0x3)},'raw':!![]});});return Promise[_0xe7f6('0x1d')](_0x5b7576);})['then'](function(_0x9ff81d){for(var _0xcbc364=0x0;_0xcbc364<_0x9ff81d[_0xe7f6('0x1e')];_0xcbc364++){if(_0x9ff81d[_0xcbc364]){var _0x352457=_0xe7f6('0x19')+_0x9ff81d[_0xcbc364]['id'];_0x21897e[_0x352457][_0xe7f6('0x1f')]=_0x9ff81d[_0xcbc364][_0xe7f6('0x20')];}}_0x53c74f=_[_0xe7f6('0x21')](Object[_0xe7f6('0x17')](_0x21897e),function(_0x38e8ef){return{'name':_0x38e8ef,'type':_0x21897e[_0x38e8ef]['type']};});return _0x53c74f;})[_0xe7f6('0x22')](function(_0x4fbfd7){throw _0x4fbfd7;});};
\ No newline at end of file
+var _0xa691=['resolve','then','search','parseQueryParameters','where','default','fields','filter','user','tags','skip','checkListsRestrictions','tag','count','User','buildContactsQuery','clause','getFilteredContacts','rows','catch','describe','keys','startsWith','cf_','map','CmCustomField','slice','all','length','fieldType','type','lodash','./sql-utils','../../mysqldb','findAll','skipContactsQuery','getContactsSubquery'];(function(_0x54c156,_0x740785){var _0x5d21d1=function(_0x3afb66){while(--_0x3afb66){_0x54c156['push'](_0x54c156['shift']());}};_0x5d21d1(++_0x740785);}(_0xa691,0xd8));var _0x1a69=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xa691[_0x465028];return _0xb783d4;};'use strict';var _=require(_0x1a69('0x0'));var sqlUtils=require(_0x1a69('0x1'));var db=require(_0x1a69('0x2'))['db'];exports[_0x1a69('0x3')]=function(_0x27c55d,_0x1c1245,_0x3dbb53,_0x50a057){var _0x167af2={'count':0x0,'rows':[]};var _0x3f3b16=sqlUtils[_0x1a69('0x4')](_0x1c1245,_0x27c55d);if(_0x3f3b16){return Promise['resolve'](_0x167af2);}var _0xe1c1d6=sqlUtils[_0x1a69('0x5')]();var _0xf1ba36={};var _0x956852=![];var _0x3c7f15=![];return Promise[_0x1a69('0x6')]()[_0x1a69('0x7')](function(){if(_0x27c55d[_0x1a69('0x8')]){return sqlUtils['parseAdvancedSearchFilter'](_0x27c55d[_0x1a69('0x8')],_0x50a057);}else{return sqlUtils[_0x1a69('0x9')](_0x27c55d,_0x50a057);}})[_0x1a69('0x7')](function(_0x573174){_0xe1c1d6[_0x1a69('0xa')](_0x573174[_0x1a69('0xb')]);_0xe1c1d6[_0x1a69('0xa')](_0x573174[_0x1a69('0xc')]);_0xe1c1d6['where'](_0x573174[_0x1a69('0xd')]);_0xe1c1d6[_0x1a69('0xa')](_0x573174[_0x1a69('0xe')]['clause']);_0xf1ba36=_0x573174[_0x1a69('0xf')];_0x3c7f15=_0x573174['user'][_0x1a69('0x10')];return sqlUtils[_0x1a69('0x11')](_0x1c1245,_0x27c55d,_0x3c7f15);})['then'](function(_0x5c74ed){_0xe1c1d6['where'](_0x5c74ed);var _0x2569a8=_0x27c55d[_0x1a69('0x8')]?_0xf1ba36['ids']:_0x27c55d[_0x1a69('0x12')];_0x956852=_0x2569a8?!![]:![];return sqlUtils['countFilteredContacts'](_0xe1c1d6,_0x2569a8);})[_0x1a69('0x7')](function(_0x13ecd2){_0x167af2[_0x1a69('0x13')]=_0x13ecd2;if(_0x167af2['count']===0x0){return;}if(_0x27c55d[_0x1a69('0x14')]){_0x3c7f15=!![];}return sqlUtils[_0x1a69('0x15')](_0xe1c1d6,_0x27c55d[_0x1a69('0xc')],_0x3dbb53,_0x956852,_0xf1ba36[_0x1a69('0x16')],_0x3c7f15);})['then'](function(_0x49446f){if(!_0x49446f){return[];}return sqlUtils[_0x1a69('0x17')](_0x49446f,_0x27c55d,_0x3dbb53);})['then'](function(_0x44172c){_0x167af2[_0x1a69('0x18')]=_0x44172c;return _0x167af2;})[_0x1a69('0x19')](function(_0x115c43){throw _0x115c43;});};exports[_0x1a69('0x1a')]=function(){var _0x52a2cb={};var _0x141639=[];return db['CmContact'][_0x1a69('0x1a')]()['then'](function(_0x3f907c){_0x52a2cb=_0x3f907c;var _0x5a0515=Object[_0x1a69('0x1b')](_0x52a2cb)[_0x1a69('0xd')](function(_0xf730ac){return _[_0x1a69('0x1c')](_0xf730ac,_0x1a69('0x1d'))?_0xf730ac:undefined;});var _0x54ebbe=_0x5a0515[_0x1a69('0x1e')](function(_0x39561a){return db[_0x1a69('0x1f')]['findOne']({'where':{'id':_0x39561a[_0x1a69('0x20')](0x3)},'raw':!![]});});return Promise[_0x1a69('0x21')](_0x54ebbe);})[_0x1a69('0x7')](function(_0x40fcc7){for(var _0x132186=0x0;_0x132186<_0x40fcc7[_0x1a69('0x22')];_0x132186++){if(_0x40fcc7[_0x132186]){var _0x5e14ee='cf_'+_0x40fcc7[_0x132186]['id'];_0x52a2cb[_0x5e14ee][_0x1a69('0x23')]=_0x40fcc7[_0x132186][_0x1a69('0x24')];}}_0x141639=_[_0x1a69('0x1e')](Object[_0x1a69('0x1b')](_0x52a2cb),function(_0x30dc84){return{'name':_0x30dc84,'type':_0x52a2cb[_0x30dc84][_0x1a69('0x24')]};});return _0x141639;})['catch'](function(_0x1535df){throw _0x1535df;});};
\ No newline at end of file
index 683fb29..917f7c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd247=['getSelectedTags','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)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','parseSearch','conditions','find','name','dateOfBirth','fieldType','datetime','buildExpression','type','text','value','start','end','Tag','clause','ids','User','user','and','uc.UserId\x20=\x20?','skip','map','Contact','c.ListId\x20IN\x20?','\x20=\x20?','resolve','then','fields','tags','getLists','c.ListId\x20IS\x20NULL','attributes','group','c.id','limit','offset','subqry.id','having','order','DESC','color','keyBy','Sequelize','SELECT','CmContact','sequelize','query','toString','Tags','clone','COUNT(*)','isEmpty','QueryTypes','exports','squel','../parsers/advancedSearch','../interaction/utils','../../mysqldb','agent','search','ListId','select','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','lastName','phone','mobile','email','createdAt','updatedAt','includes','push','forEach','TagIds','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xd247,0x173));var _0x7d24=function(_0x4c4a8b,_0x402020){_0x4c4a8b=_0x4c4a8b-0x0;var _0x20fa14=_0xd247[_0x4c4a8b];return _0x20fa14;};'use strict';var _=require('lodash');var squel=require(_0x7d24('0x0'));var as=require(_0x7d24('0x1'));var qs=require('../parsers/qs');var utils=require(_0x7d24('0x2'));var db=require(_0x7d24('0x3'))['db'];function skipContactsQuery(_0x5b5e14,_0xe517e1){var _0x54b9fe=![];if(_0x5b5e14['role']===_0x7d24('0x4')&&!_0xe517e1[_0x7d24('0x5')]&&!_0xe517e1[_0x7d24('0x6')]&&_0xe517e1['autocomplete']!=='true'){_0x54b9fe=!![];}return _0x54b9fe;}function getContactsSubquery(){return squel[_0x7d24('0x7')]()['from'](_0x7d24('0x8'),'c')[_0x7d24('0x9')](_0x7d24('0xa'));}function applyJoinClauses(_0x5ea173,_0x352de6){var _0x487458=_0x352de6?'c':_0x7d24('0xb');_0x5ea173[_0x7d24('0xc')](_0x7d24('0xd'),'uc',_0x7d24('0xe')+_0x487458+_0x7d24('0xf'))['left_join'](_0x7d24('0x10'),'ct',_0x7d24('0x11')+_0x487458+'.id')[_0x7d24('0xc')](_0x7d24('0x12'),'t',_0x7d24('0x13'));return _0x5ea173;}function addFieldsToQuery(_0x5e0e61,_0x3b484b,_0x2c53e9,_0x51eb80,_0x1fc31e){var _0x32bef9=_0x1fc31e?'c':_0x7d24('0xb');if(!_0x3b484b){_0x3b484b=['id','firstName',_0x7d24('0x14'),_0x7d24('0x15'),_0x7d24('0x16'),'fax',_0x7d24('0x17'),_0x7d24('0x6'),'CompanyId',_0x7d24('0x18'),_0x7d24('0x19'),'deletedAt','TagIds'];}else if(!_0x3b484b[_0x7d24('0x1a')]('id')){_0x3b484b[_0x7d24('0x1b')]('id');}var _0xbf13ca=_0x2c53e9&&_0x1fc31e||!_0x2c53e9&&!_0x1fc31e;if(_0x51eb80){_0xbf13ca=_0x51eb80&&_0x1fc31e||!_0x51eb80&&!_0x1fc31e;}_0x3b484b[_0x7d24('0x1c')](function(_0x1fc619){if(_0x1fc619===_0x7d24('0x1d')){if(_0xbf13ca){_0x5e0e61[_0x7d24('0x1e')](_0x7d24('0x1f'),_0x1fc619);}else if(_0x2c53e9||_0x51eb80){_0x5e0e61[_0x7d24('0x1e')](_0x32bef9+'.'+_0x1fc619);}}else{_0x5e0e61[_0x7d24('0x1e')](_0x32bef9+'.'+_0x1fc619);}});return _0x5e0e61;}function getSqlClauses(){var _0x134a84={'default':squel[_0x7d24('0x20')](),'fields':squel[_0x7d24('0x20')](),'filter':squel[_0x7d24('0x20')](),'tags':{'clause':squel[_0x7d24('0x20')](),'ids':null},'user':{'clause':squel[_0x7d24('0x20')](),'skip':![]}};return _0x134a84;}function parseTagParameter(_0x5cef07){var _0x44eea1=squel[_0x7d24('0x20')]();if(_0x5cef07){var _0x494cf3=utils[_0x7d24('0x21')](_0x5cef07);_0x494cf3['forEach'](function(_0x3e5c36){_0x44eea1['or'](_0x7d24('0x22'),'%,'+_0x3e5c36+',%');});}return _0x44eea1;}function parseSearchFilter(_0x55ea5f){var _0x4db6d0=squel[_0x7d24('0x20')]();if(_0x55ea5f){var _0x34e8c5=_0x55ea5f[_0x7d24('0x23')]('\x5c','\x5c\x5c')[_0x7d24('0x23')](/'/g,'\x27\x27');if(_0x34e8c5[_0x7d24('0x24')]('\x20')[_0x7d24('0x25')]>0x1){_0x4db6d0['or'](_0x7d24('0x26'),qs[_0x7d24('0x27')](_0x34e8c5,!![]),null);}else{if(qs[_0x7d24('0x28')](_0x34e8c5)){_0x4db6d0['or'](_0x7d24('0x29'),_0x34e8c5+'%');_0x4db6d0['or'](_0x7d24('0x2a'),_0x34e8c5+'%');_0x4db6d0['or'](_0x7d24('0x2b'),_0x34e8c5+'%');_0x4db6d0['or']('c.fax\x20LIKE\x20?',_0x34e8c5+'%');}else if(qs[_0x7d24('0x2c')](_0x34e8c5)){_0x4db6d0['or'](_0x7d24('0x2d'),_0x34e8c5+'%');}else{_0x4db6d0['or'](_0x7d24('0x2e'),'%'+_0x34e8c5+'%');_0x4db6d0['or']('c.lastName\x20LIKE\x20?','%'+_0x34e8c5+'%');_0x4db6d0['or'](_0x7d24('0x2d'),'%'+_0x34e8c5+'%');}}}return _0x4db6d0;}function parseAdvancedSearchFilter(_0x4e3e8d,_0x125cdb){var _0x1300ca=getSqlClauses();var _0x33e78d=as[_0x7d24('0x2f')](_0x4e3e8d);var _0x350302=_0x33e78d['sqlOperator'];for(var _0x42676b=0x0;_0x42676b<_0x33e78d[_0x7d24('0x30')]['length'];_0x42676b++){var _0x15830c=_0x33e78d['conditions'][_0x42676b];var _0x1e6bef='c';var _0x2f00bd=_[_0x7d24('0x31')](_0x125cdb,[_0x7d24('0x32'),_0x15830c[_0x7d24('0x1e')]]);if(_0x2f00bd){if(_0x15830c[_0x7d24('0x1e')]===_0x7d24('0x33')||_0x2f00bd[_0x7d24('0x34')]===_0x7d24('0x35')){_0x15830c['castTo']='DATE';}var _0x5b8db2=as[_0x7d24('0x36')](_0x1e6bef,_0x2f00bd[_0x7d24('0x37')],_0x15830c);_0x1300ca['default'][_0x350302](_0x5b8db2[_0x7d24('0x38')],_0x5b8db2[_0x7d24('0x39')][_0x7d24('0x3a')],_0x5b8db2[_0x7d24('0x39')][_0x7d24('0x3b')]);}else{if(_0x15830c[_0x7d24('0x1e')]===_0x7d24('0x3c')){var _0x365a59=_0x15830c['value'][_0x7d24('0x24')](',')['map'](function(_0xb24b23){return Number(_0xb24b23);});var _0x18885d=parseTagParameter(_0x365a59);_0x1300ca['tags'][_0x7d24('0x3d')]['and'](_0x18885d);_0x1300ca['tags'][_0x7d24('0x3e')]=_0x365a59;}else if(_0x15830c['field']===_0x7d24('0x3f')){_0x1300ca[_0x7d24('0x40')][_0x7d24('0x3d')][_0x7d24('0x41')](_0x7d24('0x42'),_0x15830c[_0x7d24('0x39')]);_0x1300ca[_0x7d24('0x40')][_0x7d24('0x43')]=!![];}}}return _0x1300ca;}function parseModelFields(_0xa9b599,_0xdc38a0){var _0x454ddd=squel['expr']();var _0x831b64=_(_0xa9b599)['keys']()[_0x7d24('0x44')](function(_0x5bfb37){return _['some'](_0xdc38a0,[_0x7d24('0x32'),_0x5bfb37])?_0x5bfb37:undefined;})['compact']()[_0x7d24('0x39')]();if(_0xa9b599[_0x7d24('0x45')]){_0x831b64[_0x7d24('0x1b')]('Contact');}if(_0xa9b599['User']){_0x831b64[_0x7d24('0x1b')](_0x7d24('0x3f'));}if(_0x831b64[_0x7d24('0x25')]>0x0){_0x831b64[_0x7d24('0x1c')](function(_0x307eb8){if(_0x307eb8===_0x7d24('0x6')){_0x454ddd[_0x7d24('0x41')](_0x7d24('0x46'),[]['concat'](_0xa9b599[_0x307eb8]));}else if(_0x307eb8===_0x7d24('0x45')){var _0x5873a5='%'+_0xa9b599[_0x307eb8]+'%';_0x454ddd[_0x7d24('0x41')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x5873a5);}else if(_0x307eb8===_0x7d24('0x3f')){_0x454ddd[_0x7d24('0x41')](_0x7d24('0x42'),_0xa9b599[_0x307eb8]);}else{_0x454ddd['and']('c.'+_0x307eb8+_0x7d24('0x47'),_0xa9b599[_0x307eb8]);}});}return _0x454ddd;}function parseQueryParameters(_0x59c072,_0x454c4d){var _0x474e68=getSqlClauses();return Promise[_0x7d24('0x48')]()[_0x7d24('0x49')](function(){return parseModelFields(_0x59c072,_0x454c4d);})[_0x7d24('0x49')](function(_0x21aba4){_0x474e68[_0x7d24('0x4a')][_0x7d24('0x41')](_0x21aba4);return parseTagParameter(_0x59c072['tag']);})[_0x7d24('0x49')](function(_0xec60db){_0x474e68[_0x7d24('0x4b')][_0x7d24('0x3d')][_0x7d24('0x41')](_0xec60db);return parseSearchFilter(_0x59c072['filter']);})['then'](function(_0x20c40e){_0x474e68['filter']=_0x20c40e;return _0x474e68;});}function checkListsRestrictions(_0x34eec9,_0x2f0bde,_0x46f10a){var _0x4697f0=squel[_0x7d24('0x20')]();return Promise['resolve']()[_0x7d24('0x49')](function(){if(_0x2f0bde[_0x7d24('0x5')]&&_0x34eec9['role']===_0x7d24('0x4')&&!_0x46f10a){return _0x34eec9[_0x7d24('0x4c')]({'attributes':['id'],'raw':!![]});}})[_0x7d24('0x49')](function(_0xb5dd68){if(_0xb5dd68){if(_0xb5dd68[_0x7d24('0x25')]===0x0){_0x4697f0['and'](_0x7d24('0x4d'));}else{_0x4697f0['and']('c.ListId\x20IN\x20?',_[_0x7d24('0x44')](_0xb5dd68,'id'));}}})[_0x7d24('0x49')](function(){return _0x4697f0;});}function buildContactsQuery(_0x361267,_0x13e152,_0x259ed8,_0x406a5a,_0x3ef3f4,_0x5cd35c){if(_0x13e152){_0x13e152=_0x259ed8[_0x7d24('0x4e')];}_0x361267=addFieldsToQuery(_0x361267,_0x13e152,_0x406a5a,_0x5cd35c,!![]);var _0xf4a912=squel[_0x7d24('0x7')]();_0xf4a912=addFieldsToQuery(_0xf4a912,_0x13e152,_0x406a5a,_0x5cd35c,![]);if(_0x406a5a||_0x5cd35c){_0x361267=applyJoinClauses(_0x361267,!![]);_0x361267[_0x7d24('0x4f')](_0x7d24('0x50'));if(_0x259ed8[_0x7d24('0x51')]){_0xf4a912['limit'](_0x259ed8[_0x7d24('0x51')]);}if(_0x259ed8['offset']){_0xf4a912[_0x7d24('0x52')](_0x259ed8[_0x7d24('0x52')]);}}else{_0xf4a912=applyJoinClauses(_0xf4a912,![]);_0xf4a912['group'](_0x7d24('0x53'));if(_0x259ed8[_0x7d24('0x51')]){_0x361267[_0x7d24('0x51')](_0x259ed8[_0x7d24('0x51')]);}if(_0x259ed8['offset']){_0x361267[_0x7d24('0x52')](_0x259ed8[_0x7d24('0x52')]);}}_0xf4a912[_0x7d24('0x54')](_0x3ef3f4);if(_0x259ed8[_0x7d24('0x55')]){_0x259ed8[_0x7d24('0x55')][_0x7d24('0x1c')](function(_0x2986de){_0x361267['order']('c.'+_0x2986de[0x0],_0x2986de[0x1]===_0x7d24('0x56')?![]:!![]);_0xf4a912[_0x7d24('0x55')]('subqry.'+_0x2986de[0x0],_0x2986de[0x1]===_0x7d24('0x56')?![]:!![]);});}_0xf4a912['from'](_0x361267,_0x7d24('0xb'));return _0xf4a912;}function getFilteredContacts(_0x3185ad){var _0x24c64c=[];return db[_0x7d24('0x3c')]['findAll']({'attributes':['id',_0x7d24('0x32'),_0x7d24('0x57')],'raw':!![]})[_0x7d24('0x49')](function(_0x7c4785){_0x24c64c=_[_0x7d24('0x58')](_0x7c4785,'id');var _0x2dfa50={'type':db[_0x7d24('0x59')]['QueryTypes'][_0x7d24('0x5a')],'model':db[_0x7d24('0x5b')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x7d24('0x5c')][_0x7d24('0x5d')](_0x3185ad[_0x7d24('0x5e')](),_0x2dfa50);})[_0x7d24('0x49')](function(_0x32780){_0x32780['forEach'](function(_0x42cff7){if(_0x42cff7[_0x7d24('0x1d')]){_0x42cff7[_0x7d24('0x5f')]=[];_0x42cff7[_0x7d24('0x1d')][_0x7d24('0x24')](',')['forEach'](function(_0x30829f){_0x42cff7[_0x7d24('0x5f')][_0x7d24('0x1b')](_0x24c64c[_0x30829f]);});}delete _0x42cff7[_0x7d24('0x1d')];});return _0x32780;});}function countFilteredContacts(_0x4619e7,_0x582a93){var _0x182532=_0x4619e7[_0x7d24('0x60')]();_0x182532['field'](_0x7d24('0x61'));_0x182532=applyJoinClauses(_0x182532,!![]);_0x4619e7['group'](_0x7d24('0x50'));var _0x2214c3=utils[_0x7d24('0x21')](_0x582a93);if(!_[_0x7d24('0x62')](_0x2214c3)){_0x182532['where']('t.id\x20IN\x20?',_0x2214c3);}var _0x2fa726={'type':db[_0x7d24('0x59')][_0x7d24('0x63')][_0x7d24('0x5a')],'raw':!![]};return db[_0x7d24('0x5c')][_0x7d24('0x5d')](_0x182532[_0x7d24('0x5e')](),_0x2fa726)['then'](function(_0x270fed){return _0x270fed[0x0][_0x7d24('0x61')];});}module[_0x7d24('0x64')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0xf7a6=['tag','filter','getLists','c.ListId\x20IS\x20NULL','group','limit','offset','subqry.id','having','order','forEach','DESC','subqry.','Tag','findAll','color','keyBy','Sequelize','QueryTypes','CmContact','sequelize','toString','Tags','clone','COUNT(*)','c.id','isEmpty','t.id\x20IN\x20?','SELECT','query','squel','../parsers/advancedSearch','../parsers/qs','../../mysqldb','agent','search','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','fax','email','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes','push','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','name','dateOfBirth','datetime','castTo','DATE','buildExpression','type','default','text','value','start','map','tags','clause','and','ids','User','user','uc.UserId\x20=\x20?','skip','keys','some','Contact','ListId','c.ListId\x20IN\x20?','concat','\x20=\x20?','resolve','then'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xf7a6,0xf6));var _0x6f7a=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xf7a6[_0x36ed48];return _0x51c63a;};'use strict';var _=require('lodash');var squel=require(_0x6f7a('0x0'));var as=require(_0x6f7a('0x1'));var qs=require(_0x6f7a('0x2'));var utils=require('../interaction/utils');var db=require(_0x6f7a('0x3'))['db'];function skipContactsQuery(_0x2ad299,_0x5a575c){var _0x26c357=![];if(_0x2ad299['role']===_0x6f7a('0x4')&&!_0x5a575c[_0x6f7a('0x5')]&&!_0x5a575c['ListId']&&_0x5a575c['autocomplete']!==_0x6f7a('0x6')){_0x26c357=!![];}return _0x26c357;}function getContactsSubquery(){return squel[_0x6f7a('0x7')]()[_0x6f7a('0x8')](_0x6f7a('0x9'),'c')[_0x6f7a('0xa')](_0x6f7a('0xb'));}function applyJoinClauses(_0x468bff,_0xbf4528){var _0x5b755c=_0xbf4528?'c':_0x6f7a('0xc');_0x468bff[_0x6f7a('0xd')](_0x6f7a('0xe'),'uc',_0x6f7a('0xf')+_0x5b755c+_0x6f7a('0x10'))[_0x6f7a('0xd')]('cm_contact_has_tags','ct',_0x6f7a('0x11')+_0x5b755c+_0x6f7a('0x10'))[_0x6f7a('0xd')](_0x6f7a('0x12'),'t',_0x6f7a('0x13'));return _0x468bff;}function addFieldsToQuery(_0x4a04e5,_0x4d2a0f,_0x2ee018,_0xbca0f6,_0x3789bc){var _0x2e1cc6=_0x3789bc?'c':'subqry';if(!_0x4d2a0f){_0x4d2a0f=['id','firstName','lastName','phone','mobile',_0x6f7a('0x14'),_0x6f7a('0x15'),'ListId',_0x6f7a('0x16'),_0x6f7a('0x17'),_0x6f7a('0x18'),_0x6f7a('0x19'),_0x6f7a('0x1a')];}else if(!_0x4d2a0f[_0x6f7a('0x1b')]('id')){_0x4d2a0f[_0x6f7a('0x1c')]('id');}var _0x1be995=_0x2ee018&&_0x3789bc||!_0x2ee018&&!_0x3789bc;if(_0xbca0f6){_0x1be995=_0xbca0f6&&_0x3789bc||!_0xbca0f6&&!_0x3789bc;}_0x4d2a0f['forEach'](function(_0x2645e5){if(_0x2645e5===_0x6f7a('0x1a')){if(_0x1be995){_0x4a04e5[_0x6f7a('0x1d')](_0x6f7a('0x1e'),_0x2645e5);}else if(_0x2ee018||_0xbca0f6){_0x4a04e5[_0x6f7a('0x1d')](_0x2e1cc6+'.'+_0x2645e5);}}else{_0x4a04e5[_0x6f7a('0x1d')](_0x2e1cc6+'.'+_0x2645e5);}});return _0x4a04e5;}function getSqlClauses(){var _0x5a1d2a={'default':squel[_0x6f7a('0x1f')](),'fields':squel['expr'](),'filter':squel[_0x6f7a('0x1f')](),'tags':{'clause':squel[_0x6f7a('0x1f')](),'ids':null},'user':{'clause':squel[_0x6f7a('0x1f')](),'skip':![]}};return _0x5a1d2a;}function parseTagParameter(_0x23c4f8){var _0xa57f2c=squel['expr']();if(_0x23c4f8){var _0x3c55ea=utils[_0x6f7a('0x20')](_0x23c4f8);_0x3c55ea['forEach'](function(_0x1228e2){_0xa57f2c['or'](_0x6f7a('0x21'),'%,'+_0x1228e2+',%');});}return _0xa57f2c;}function parseSearchFilter(_0x16cda6){var _0x59357f=squel[_0x6f7a('0x1f')]();if(_0x16cda6){var _0x3d65fb=_0x16cda6[_0x6f7a('0x22')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x3d65fb[_0x6f7a('0x23')]('\x20')[_0x6f7a('0x24')]>0x1){_0x59357f['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x6f7a('0x25')](_0x3d65fb,!![]),null);}else{if(qs[_0x6f7a('0x26')](_0x3d65fb)){_0x59357f['or'](_0x6f7a('0x27'),_0x3d65fb+'%');_0x59357f['or']('c.phone\x20LIKE\x20?',_0x3d65fb+'%');_0x59357f['or'](_0x6f7a('0x28'),_0x3d65fb+'%');_0x59357f['or'](_0x6f7a('0x29'),_0x3d65fb+'%');}else if(qs[_0x6f7a('0x2a')](_0x3d65fb)){_0x59357f['or'](_0x6f7a('0x2b'),_0x3d65fb+'%');}else{_0x59357f['or']('c.firstName\x20LIKE\x20?','%'+_0x3d65fb+'%');_0x59357f['or'](_0x6f7a('0x2c'),'%'+_0x3d65fb+'%');_0x59357f['or'](_0x6f7a('0x2b'),'%'+_0x3d65fb+'%');}}}return _0x59357f;}function parseAdvancedSearchFilter(_0xca4cba,_0x76d633){var _0x2288f7=getSqlClauses();var _0xc46b6=as[_0x6f7a('0x2d')](_0xca4cba);var _0x22fa49=_0xc46b6[_0x6f7a('0x2e')];for(var _0x9c1de3=0x0;_0x9c1de3<_0xc46b6[_0x6f7a('0x2f')][_0x6f7a('0x24')];_0x9c1de3++){var _0x1272c8=_0xc46b6[_0x6f7a('0x2f')][_0x9c1de3];var _0x36c806='c';var _0x424287=_[_0x6f7a('0x30')](_0x76d633,[_0x6f7a('0x31'),_0x1272c8[_0x6f7a('0x1d')]]);if(_0x424287){if(_0x1272c8[_0x6f7a('0x1d')]===_0x6f7a('0x32')||_0x424287['fieldType']===_0x6f7a('0x33')){_0x1272c8[_0x6f7a('0x34')]=_0x6f7a('0x35');}var _0x3fff14=as[_0x6f7a('0x36')](_0x36c806,_0x424287[_0x6f7a('0x37')],_0x1272c8);_0x2288f7[_0x6f7a('0x38')][_0x22fa49](_0x3fff14[_0x6f7a('0x39')],_0x3fff14[_0x6f7a('0x3a')][_0x6f7a('0x3b')],_0x3fff14[_0x6f7a('0x3a')]['end']);}else{if(_0x1272c8[_0x6f7a('0x1d')]==='Tag'){var _0x385282=_0x1272c8[_0x6f7a('0x3a')][_0x6f7a('0x23')](',')[_0x6f7a('0x3c')](function(_0x6a43e8){return Number(_0x6a43e8);});var _0x3588f7=parseTagParameter(_0x385282);_0x2288f7[_0x6f7a('0x3d')][_0x6f7a('0x3e')][_0x6f7a('0x3f')](_0x3588f7);_0x2288f7[_0x6f7a('0x3d')][_0x6f7a('0x40')]=_0x385282;}else if(_0x1272c8[_0x6f7a('0x1d')]===_0x6f7a('0x41')){_0x2288f7[_0x6f7a('0x42')]['clause'][_0x6f7a('0x3f')](_0x6f7a('0x43'),_0x1272c8['value']);_0x2288f7[_0x6f7a('0x42')][_0x6f7a('0x44')]=!![];}}}return _0x2288f7;}function parseModelFields(_0x4015c0,_0x3d9072){var _0x98f3b8=squel['expr']();var _0x4eef8f=_(_0x4015c0)[_0x6f7a('0x45')]()['map'](function(_0x3e3e1f){return _[_0x6f7a('0x46')](_0x3d9072,[_0x6f7a('0x31'),_0x3e3e1f])?_0x3e3e1f:undefined;})['compact']()['value']();if(_0x4015c0[_0x6f7a('0x47')]){_0x4eef8f[_0x6f7a('0x1c')]('Contact');}if(_0x4015c0['User']){_0x4eef8f[_0x6f7a('0x1c')](_0x6f7a('0x41'));}if(_0x4eef8f[_0x6f7a('0x24')]>0x0){_0x4eef8f['forEach'](function(_0x4a9c06){if(_0x4a9c06===_0x6f7a('0x48')){_0x98f3b8[_0x6f7a('0x3f')](_0x6f7a('0x49'),[][_0x6f7a('0x4a')](_0x4015c0[_0x4a9c06]));}else if(_0x4a9c06===_0x6f7a('0x47')){var _0x12fc06='%'+_0x4015c0[_0x4a9c06]+'%';_0x98f3b8[_0x6f7a('0x3f')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x12fc06);}else if(_0x4a9c06===_0x6f7a('0x41')){_0x98f3b8[_0x6f7a('0x3f')](_0x6f7a('0x43'),_0x4015c0[_0x4a9c06]);}else{_0x98f3b8[_0x6f7a('0x3f')]('c.'+_0x4a9c06+_0x6f7a('0x4b'),_0x4015c0[_0x4a9c06]);}});}return _0x98f3b8;}function parseQueryParameters(_0x4db964,_0x4c6edd){var _0x4996ce=getSqlClauses();return Promise[_0x6f7a('0x4c')]()['then'](function(){return parseModelFields(_0x4db964,_0x4c6edd);})[_0x6f7a('0x4d')](function(_0xb71221){_0x4996ce['fields'][_0x6f7a('0x3f')](_0xb71221);return parseTagParameter(_0x4db964[_0x6f7a('0x4e')]);})['then'](function(_0x3e3d13){_0x4996ce[_0x6f7a('0x3d')]['clause'][_0x6f7a('0x3f')](_0x3e3d13);return parseSearchFilter(_0x4db964[_0x6f7a('0x4f')]);})[_0x6f7a('0x4d')](function(_0x48d1e6){_0x4996ce['filter']=_0x48d1e6;return _0x4996ce;});}function checkListsRestrictions(_0x56c9e2,_0x31eb2c,_0x1d9588){var _0x796a2c=squel[_0x6f7a('0x1f')]();return Promise[_0x6f7a('0x4c')]()[_0x6f7a('0x4d')](function(){if(_0x31eb2c[_0x6f7a('0x5')]&&_0x56c9e2['role']==='agent'&&!_0x1d9588){return _0x56c9e2[_0x6f7a('0x50')]({'attributes':['id'],'raw':!![]});}})[_0x6f7a('0x4d')](function(_0x5dc322){if(_0x5dc322){if(_0x5dc322[_0x6f7a('0x24')]===0x0){_0x796a2c[_0x6f7a('0x3f')](_0x6f7a('0x51'));}else{_0x796a2c[_0x6f7a('0x3f')](_0x6f7a('0x49'),_[_0x6f7a('0x3c')](_0x5dc322,'id'));}}})[_0x6f7a('0x4d')](function(){return _0x796a2c;});}function buildContactsQuery(_0x5c5e7f,_0x1448f1,_0x3da663,_0x51e7af,_0xbd3a03,_0x1bf088){if(_0x1448f1){_0x1448f1=_0x3da663['attributes'];}_0x5c5e7f=addFieldsToQuery(_0x5c5e7f,_0x1448f1,_0x51e7af,_0x1bf088,!![]);var _0x1772e0=squel[_0x6f7a('0x7')]();_0x1772e0=addFieldsToQuery(_0x1772e0,_0x1448f1,_0x51e7af,_0x1bf088,![]);if(_0x51e7af||_0x1bf088){_0x5c5e7f=applyJoinClauses(_0x5c5e7f,!![]);_0x5c5e7f[_0x6f7a('0x52')]('c.id');if(_0x3da663[_0x6f7a('0x53')]){_0x1772e0[_0x6f7a('0x53')](_0x3da663[_0x6f7a('0x53')]);}if(_0x3da663[_0x6f7a('0x54')]){_0x1772e0[_0x6f7a('0x54')](_0x3da663['offset']);}}else{_0x1772e0=applyJoinClauses(_0x1772e0,![]);_0x1772e0[_0x6f7a('0x52')](_0x6f7a('0x55'));if(_0x3da663['limit']){_0x5c5e7f['limit'](_0x3da663[_0x6f7a('0x53')]);}if(_0x3da663[_0x6f7a('0x54')]){_0x5c5e7f[_0x6f7a('0x54')](_0x3da663[_0x6f7a('0x54')]);}}_0x1772e0[_0x6f7a('0x56')](_0xbd3a03);if(_0x3da663['order']){_0x3da663[_0x6f7a('0x57')][_0x6f7a('0x58')](function(_0x1d4d26){_0x5c5e7f[_0x6f7a('0x57')]('c.'+_0x1d4d26[0x0],_0x1d4d26[0x1]===_0x6f7a('0x59')?![]:!![]);_0x1772e0[_0x6f7a('0x57')](_0x6f7a('0x5a')+_0x1d4d26[0x0],_0x1d4d26[0x1]===_0x6f7a('0x59')?![]:!![]);});}_0x1772e0['from'](_0x5c5e7f,_0x6f7a('0xc'));return _0x1772e0;}function getFilteredContacts(_0x36b7d6){var _0x456f31=[];return db[_0x6f7a('0x5b')][_0x6f7a('0x5c')]({'attributes':['id',_0x6f7a('0x31'),_0x6f7a('0x5d')],'raw':!![]})['then'](function(_0x3cc8ae){_0x456f31=_[_0x6f7a('0x5e')](_0x3cc8ae,'id');var _0x2ca6b2={'type':db[_0x6f7a('0x5f')][_0x6f7a('0x60')]['SELECT'],'model':db[_0x6f7a('0x61')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x6f7a('0x62')]['query'](_0x36b7d6[_0x6f7a('0x63')](),_0x2ca6b2);})[_0x6f7a('0x4d')](function(_0x510837){_0x510837['forEach'](function(_0x348c30){if(_0x348c30[_0x6f7a('0x1a')]){_0x348c30[_0x6f7a('0x64')]=[];_0x348c30[_0x6f7a('0x1a')][_0x6f7a('0x23')](',')[_0x6f7a('0x58')](function(_0x3650ef){_0x348c30[_0x6f7a('0x64')][_0x6f7a('0x1c')](_0x456f31[_0x3650ef]);});}delete _0x348c30['TagIds'];});return _0x510837;});}function countFilteredContacts(_0x3a4325,_0x5e3c86){var _0xb1a520=_0x3a4325[_0x6f7a('0x65')]();_0xb1a520['field'](_0x6f7a('0x66'));_0xb1a520=applyJoinClauses(_0xb1a520,!![]);_0x3a4325[_0x6f7a('0x52')](_0x6f7a('0x67'));var _0x5b08de=utils['getSelectedTags'](_0x5e3c86);if(!_[_0x6f7a('0x68')](_0x5b08de)){_0xb1a520['where'](_0x6f7a('0x69'),_0x5b08de);}var _0x1015d8={'type':db[_0x6f7a('0x5f')][_0x6f7a('0x60')][_0x6f7a('0x6a')],'raw':!![]};return db['sequelize'][_0x6f7a('0x6b')](_0xb1a520[_0x6f7a('0x63')](),_0x1015d8)[_0x6f7a('0x4d')](function(_0x1a366a){return _0x1a366a[0x0][_0x6f7a('0x66')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index 4f1759d..8e38bb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ac9=['binary','write','end','final','close','unlink','decryptFile','createDecipher','data','encryptString','utf8','base64','decryptString','crypto','lodash','../../config/environment','../../config/logger','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createWriteStream','update'];(function(_0x31d5ef,_0x1ee41a){var _0x50e022=function(_0x49362e){while(--_0x49362e){_0x31d5ef['push'](_0x31d5ef['shift']());}};_0x50e022(++_0x1ee41a);}(_0x7ac9,0x13f));var _0x97ac=function(_0x5ef6e0,_0x523f9a){_0x5ef6e0=_0x5ef6e0-0x0;var _0x531094=_0x7ac9[_0x5ef6e0];return _0x531094;};'use strict';var crypto=require(_0x97ac('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x97ac('0x1'));var config=require(_0x97ac('0x2'));var logger=require(_0x97ac('0x3'))('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0x97ac('0x4')],'algorithm':_0x97ac('0x5')};const fileOptions={'algorithm':_0x97ac('0x6')};if(config['encrypt']&&config[_0x97ac('0x7')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0x97ac('0x7')]['algorithm']);if(isSupported){fileOptions['algorithm']=config['encrypt'][_0x97ac('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x97ac('0x9')](',\x20');logger[_0x97ac('0xa')](config[_0x97ac('0x7')][_0x97ac('0x8')],_0x97ac('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x422bce){return AES_SUPPORTED_RX[_0x97ac('0xc')](_0x422bce);}function getSupportedCiphers(){return crypto[_0x97ac('0xd')]()[_0x97ac('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x31f071){return getSupportedCiphers()[_0x97ac('0xf')](_0x31f071)>-0x1;}function combineOptions(_0x30dd05){var _0x259665={};for(var _0x3a4187 in fileOptions){if(fileOptions[_0x97ac('0x10')](_0x3a4187)){_0x259665[_0x3a4187]=fileOptions[_0x3a4187];}}if(_0x30dd05){for(var _0x585049 in _0x30dd05){if(_0x30dd05[_0x97ac('0x10')](_0x585049)){_0x259665[_0x585049]=_0x30dd05[_0x585049];}}}return _0x259665;}exports[_0x97ac('0x11')]=function(_0x368894,_0x1853c9,_0x4a2504,_0x4328d6){return new BPromise(function(_0x2f5e40,_0x5d4016){_0x4328d6=combineOptions(_0x4328d6);var _0x4b6a53=new Buffer(_0x4a2504);var _0x211a9a=fs[_0x97ac('0x12')](_0x368894);var _0x181cb8=fs[_0x97ac('0x13')](_0x1853c9);var _0x5146da=crypto['createCipher'](_0x4328d6['algorithm'],_0x4b6a53);_0x211a9a['on']('data',function(_0x9c5155){var _0x496c66=new Buffer(_0x5146da[_0x97ac('0x14')](_0x9c5155),_0x97ac('0x15'));_0x181cb8[_0x97ac('0x16')](_0x496c66);});_0x211a9a['on'](_0x97ac('0x17'),function(){try{var _0x56260c=new Buffer(_0x5146da[_0x97ac('0x18')](_0x97ac('0x15')),_0x97ac('0x15'));_0x181cb8[_0x97ac('0x16')](_0x56260c);_0x181cb8['end']();_0x181cb8['on'](_0x97ac('0x19'),function(){return _0x2f5e40(_0x1853c9);});}catch(_0x30c6ad){fs[_0x97ac('0x1a')](_0x1853c9);return _0x5d4016(_0x30c6ad);}});});};exports[_0x97ac('0x1b')]=function(_0x19bc54,_0x2793bc,_0x12043f,_0x2bf0ef){return new BPromise(function(_0x3cff07,_0x363c75){_0x2bf0ef=combineOptions(_0x2bf0ef);var _0x284a77=new Buffer(_0x12043f);var _0x6bb5f9=fs['createReadStream'](_0x19bc54);var _0x498ea7=fs[_0x97ac('0x13')](_0x2793bc);var _0x160681=crypto[_0x97ac('0x1c')](_0x2bf0ef[_0x97ac('0x8')],_0x284a77);_0x6bb5f9['on'](_0x97ac('0x1d'),function(_0x2bb29d){var _0x392bf5=new Buffer(_0x160681[_0x97ac('0x14')](_0x2bb29d),_0x97ac('0x15'));_0x498ea7[_0x97ac('0x16')](_0x392bf5);});_0x6bb5f9['on'](_0x97ac('0x17'),function(){try{var _0x169c07=new Buffer(_0x160681[_0x97ac('0x18')]('binary'),_0x97ac('0x15'));_0x498ea7[_0x97ac('0x16')](_0x169c07);_0x498ea7[_0x97ac('0x17')]();_0x498ea7['on']('close',function(){return _0x3cff07(_0x2793bc);});}catch(_0x2d101c){fs[_0x97ac('0x1a')](_0x2793bc);return _0x363c75(_0x2d101c);}});});};exports[_0x97ac('0x1e')]=function(_0x401b65,_0x717a8d,_0x5e0e2e){var _0x4012c8=_0x5e0e2e||stringOptions[_0x97ac('0x8')];var _0x83af29=_0x717a8d||stringOptions['secret'];var _0x395cc3=crypto['createCipher'](_0x4012c8,_0x83af29);var _0x150f74=_0x395cc3[_0x97ac('0x14')](_0x401b65,_0x97ac('0x1f'),'base64');_0x150f74+=_0x395cc3[_0x97ac('0x18')](_0x97ac('0x20'));return _0x150f74;};exports[_0x97ac('0x21')]=function(_0x24a2bd,_0x54b4e8,_0x396545){var _0x5a5c7e=_0x396545||stringOptions[_0x97ac('0x8')];var _0x520ebd=_0x54b4e8||stringOptions['secret'];var _0x574fd1=crypto[_0x97ac('0x1c')](_0x5a5c7e,_0x520ebd);var _0xcc6712=_0x574fd1[_0x97ac('0x14')](_0x24a2bd,'base64',_0x97ac('0x1f'));_0xcc6712+=_0x574fd1['final']('utf8');return _0xcc6712;};
\ No newline at end of file
+var _0xda59=['data','update','binary','write','end','final','close','unlink','decryptFile','createWriteStream','createDecipher','encryptString','secret','base64','decryptString','crypto','lodash','../../config/environment','../../config/logger','secrets','session','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createCipher'];(function(_0x2ab4dc,_0x1fea4e){var _0x230724=function(_0x2975e5){while(--_0x2975e5){_0x2ab4dc['push'](_0x2ab4dc['shift']());}};_0x230724(++_0x1fea4e);}(_0xda59,0x1a7));var _0x9da5=function(_0x14980b,_0x5a244d){_0x14980b=_0x14980b-0x0;var _0x2fa455=_0xda59[_0x14980b];return _0x2fa455;};'use strict';var crypto=require(_0x9da5('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x9da5('0x1'));var config=require(_0x9da5('0x2'));var logger=require(_0x9da5('0x3'))('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x9da5('0x4')][_0x9da5('0x5')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0x9da5('0x6')};if(config[_0x9da5('0x7')]&&config['encrypt'][_0x9da5('0x8')]){var isSupported=isAlgorithmSupported(config[_0x9da5('0x7')]['algorithm']);if(isSupported){fileOptions['algorithm']=config[_0x9da5('0x7')][_0x9da5('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x9da5('0x9')](',\x20');logger[_0x9da5('0xa')](config[_0x9da5('0x7')][_0x9da5('0x8')],_0x9da5('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x54dbd1){return AES_SUPPORTED_RX['test'](_0x54dbd1);}function getSupportedCiphers(){return crypto[_0x9da5('0xc')]()[_0x9da5('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x5354f0){return getSupportedCiphers()[_0x9da5('0xe')](_0x5354f0)>-0x1;}function combineOptions(_0x231974){var _0x135592={};for(var _0x4826cb in fileOptions){if(fileOptions[_0x9da5('0xf')](_0x4826cb)){_0x135592[_0x4826cb]=fileOptions[_0x4826cb];}}if(_0x231974){for(var _0x2523b9 in _0x231974){if(_0x231974['hasOwnProperty'](_0x2523b9)){_0x135592[_0x2523b9]=_0x231974[_0x2523b9];}}}return _0x135592;}exports[_0x9da5('0x10')]=function(_0x57e47f,_0x46a1aa,_0x2a030f,_0x179f03){return new BPromise(function(_0x4b3d95,_0x4f9577){_0x179f03=combineOptions(_0x179f03);var _0x47cef3=new Buffer(_0x2a030f);var _0x485aaa=fs[_0x9da5('0x11')](_0x57e47f);var _0xbe556a=fs['createWriteStream'](_0x46a1aa);var _0xd3d313=crypto[_0x9da5('0x12')](_0x179f03['algorithm'],_0x47cef3);_0x485aaa['on'](_0x9da5('0x13'),function(_0x1505c9){var _0x2b33f8=new Buffer(_0xd3d313[_0x9da5('0x14')](_0x1505c9),_0x9da5('0x15'));_0xbe556a[_0x9da5('0x16')](_0x2b33f8);});_0x485aaa['on'](_0x9da5('0x17'),function(){try{var _0x5eb384=new Buffer(_0xd3d313[_0x9da5('0x18')]('binary'),_0x9da5('0x15'));_0xbe556a[_0x9da5('0x16')](_0x5eb384);_0xbe556a[_0x9da5('0x17')]();_0xbe556a['on'](_0x9da5('0x19'),function(){return _0x4b3d95(_0x46a1aa);});}catch(_0x78b4b5){fs[_0x9da5('0x1a')](_0x46a1aa);return _0x4f9577(_0x78b4b5);}});});};exports[_0x9da5('0x1b')]=function(_0x298fbb,_0x341b7d,_0x279c8d,_0x30b102){return new BPromise(function(_0x53735d,_0x296af5){_0x30b102=combineOptions(_0x30b102);var _0x3169ba=new Buffer(_0x279c8d);var _0x21c305=fs[_0x9da5('0x11')](_0x298fbb);var _0x408017=fs[_0x9da5('0x1c')](_0x341b7d);var _0x430955=crypto[_0x9da5('0x1d')](_0x30b102[_0x9da5('0x8')],_0x3169ba);_0x21c305['on'](_0x9da5('0x13'),function(_0x4718e7){var _0x142f98=new Buffer(_0x430955['update'](_0x4718e7),'binary');_0x408017[_0x9da5('0x16')](_0x142f98);});_0x21c305['on']('end',function(){try{var _0x1cfc0f=new Buffer(_0x430955['final']('binary'),'binary');_0x408017[_0x9da5('0x16')](_0x1cfc0f);_0x408017[_0x9da5('0x17')]();_0x408017['on'](_0x9da5('0x19'),function(){return _0x53735d(_0x341b7d);});}catch(_0x3c9ef7){fs[_0x9da5('0x1a')](_0x341b7d);return _0x296af5(_0x3c9ef7);}});});};exports[_0x9da5('0x1e')]=function(_0x5ed244,_0xa297fc,_0x412bb5){var _0xd21e41=_0x412bb5||stringOptions[_0x9da5('0x8')];var _0x1fff31=_0xa297fc||stringOptions[_0x9da5('0x1f')];var _0x2c84b8=crypto[_0x9da5('0x12')](_0xd21e41,_0x1fff31);var _0x438653=_0x2c84b8[_0x9da5('0x14')](_0x5ed244,'utf8',_0x9da5('0x20'));_0x438653+=_0x2c84b8['final'](_0x9da5('0x20'));return _0x438653;};exports[_0x9da5('0x21')]=function(_0x19c27f,_0x190d52,_0x3426e4){var _0x562a23=_0x3426e4||stringOptions[_0x9da5('0x8')];var _0x2e33cf=_0x190d52||stringOptions[_0x9da5('0x1f')];var _0x117638=crypto[_0x9da5('0x1d')](_0x562a23,_0x2e33cf);var _0x365c11=_0x117638[_0x9da5('0x14')](_0x19c27f,_0x9da5('0x20'),'utf8');_0x365c11+=_0x117638[_0x9da5('0x18')]('utf8');return _0x365c11;};
\ No newline at end of file
index af7b55d..d0665f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17d3=['Setting','find','split','splitSizeCsv','then','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','range','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','length','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','lodash','to-csv','bluebird','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','info'];(function(_0x3b0a84,_0x418c04){var _0x3099dd=function(_0x393ff6){while(--_0x393ff6){_0x3b0a84['push'](_0x3b0a84['shift']());}};_0x3099dd(++_0x418c04);}(_0x17d3,0xb9));var _0x317d=function(_0x49e02a,_0xd68211){_0x49e02a=_0x49e02a-0x0;var _0x1b923d=_0x17d3[_0x49e02a];return _0x1b923d;};'use strict';var util=require('util');var path=require('path');var _=require(_0x317d('0x0'));var csv=require(_0x317d('0x1'));var fs=require('fs');var BPromise=require(_0x317d('0x2'));var zipdir=require('zip-dir');var rimraf=require(_0x317d('0x3'));var db=require(_0x317d('0x4'))['db'];var dbH=require(_0x317d('0x4'))[_0x317d('0x5')];var logger=require(_0x317d('0x6'))(_0x317d('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x317d('0x8')][0x2]);var QUERY=process[_0x317d('0x8')][0x3];var PATH=process[_0x317d('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x18a950,_0x2718a6){var _0x317ad1={'status':_0x18a950};var _0x38a5e1={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2718a6){_0x317ad1['savename']=_0x2718a6;}return db[_0x317d('0x9')]['update'](_0x317ad1,_0x38a5e1);}function main(){var _0x474da6=0x1388;var _0x4be897;logger[_0x317d('0xa')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'));return db[_0x317d('0xb')][_0x317d('0xc')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x317d('0xd'),_0x317d('0xe')]})[_0x317d('0xf')](function(_0x5540e4){if(_0x5540e4){_0x4be897=_0x5540e4;_0x474da6=_0x4be897[_0x317d('0xe')]||0x1388;}})[_0x317d('0xf')](function(){return dbH['sequelize'][_0x317d('0x10')](util[_0x317d('0x11')](_0x317d('0x12'),QUERY),{'type':dbH[_0x317d('0x13')][_0x317d('0x14')][_0x317d('0x15')]});})[_0x317d('0xf')](function(_0x153b2f){if(!_0x153b2f[0x0][_0x317d('0x16')]){return analyticExtractedReport('Empty');}var _0x2e96ba=[];var _0x5ab7a8=0x0;if(_0x4be897['split']){if(_0x153b2f&&_0x153b2f['length']){var _0x2abced=_[_0x317d('0x17')](_0x153b2f[0x0][_0x317d('0x16')]/_0x474da6);var _0x9b4c1a=Number[_0x317d('0x18')](_0x153b2f[0x0][_0x317d('0x16')]/_0x474da6)?_0x153b2f[0x0][_0x317d('0x16')]%_0x474da6:0x0;_0x2abced[_0x317d('0x19')](function(_0x35d8de){if(_0x35d8de>0x0){_0x5ab7a8+=_0x474da6;}_0x2e96ba[_0x317d('0x1a')](dbH['sequelize'][_0x317d('0x10')](util[_0x317d('0x11')](_0x317d('0x1b'),QUERY,_0x474da6,_0x5ab7a8),{'type':dbH[_0x317d('0x13')]['QueryTypes'][_0x317d('0x15')]}));});if(_0x9b4c1a>0x0){_0x5ab7a8+=_0x474da6;_0x2e96ba['push'](dbH['sequelize'][_0x317d('0x10')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x9b4c1a,_0x5ab7a8),{'type':dbH[_0x317d('0x13')][_0x317d('0x14')][_0x317d('0x15')]}));}}}else{_0x2e96ba['push'](dbH[_0x317d('0x13')][_0x317d('0x10')](QUERY,{'type':dbH[_0x317d('0x13')][_0x317d('0x14')][_0x317d('0x15')]}));}var _0x539f92=path[_0x317d('0x1c')](PATH);var _0x2593f9=path[_0x317d('0x1d')](PATH,_0x317d('0x1e'));var _0x2eb005=_0x4be897[_0x317d('0xd')]&&_0x2e96ba[_0x317d('0x1f')]>0x1;var _0x177569=[];if(!fs[_0x317d('0x20')](path[_0x317d('0x21')](_0x539f92,_0x2593f9))&&_0x2eb005){fs[_0x317d('0x22')](path[_0x317d('0x21')](_0x539f92,_0x2593f9));}return BPromise[_0x317d('0x23')](_0x2e96ba,function(_0x15ee3f){_0x177569[_0x317d('0x1a')](_0x15ee3f);})['then'](function(){for(var _0x522eab=0x0;_0x522eab<_0x177569['length'];_0x522eab+=0x1){var _0x421b4e;var _0x1cc78b=_0x177569[_0x522eab];if(_0x2eb005){_0x421b4e=path[_0x317d('0x21')](_0x539f92,_0x2593f9,util[_0x317d('0x11')](_0x317d('0x24'),_0x2593f9,_0x522eab,_0x317d('0x25')));}else{_0x421b4e=path[_0x317d('0x21')](_0x539f92,util[_0x317d('0x11')](_0x317d('0x26'),_0x2593f9,'csv'));}fs[_0x317d('0x27')](_0x421b4e,csv(_0x1cc78b));}})['then'](function(){if(_0x2eb005){return new Promise(function(_0xad6148){zipdir(path[_0x317d('0x21')](_0x539f92,_0x2593f9),{'saveTo':path[_0x317d('0x21')](_0x539f92,util[_0x317d('0x11')](_0x317d('0x26'),_0x2593f9,_0x317d('0x28')))},function(_0x1c8a5c,_0x15844a){rimraf(path[_0x317d('0x21')](_0x539f92,_0x2593f9),function(){});_0xad6148(_0x317d('0x29'));});});}})[_0x317d('0xf')](function(){logger[_0x317d('0xa')](util['format'](_0x317d('0x2a'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x317d('0x2b'),_0x2eb005?util[_0x317d('0x11')]('%s.%s',_0x2593f9,_0x2eb005?_0x317d('0x28'):_0x317d('0x25')):null);});})[_0x317d('0x2c')](function(_0x1f770c){logger[_0x317d('0xa')](util[_0x317d('0x11')](_0x317d('0x2d'),EXTRACTED_REPORT_ID,'CSV'),util[_0x317d('0x2e')](_0x1f770c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x317d('0x2f'));})[_0x317d('0x30')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x08f5=['SELECT','num','Empty','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','.csv','length','existsSync','join','mkdirSync','%s%d.%s','csv','writeFileSync','zip','Completed','%s.%s','catch','inspect','finally','exit','util','lodash','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','AnalyticExtractedReport','update','info','format','Setting','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t'];(function(_0x2af47e,_0x1d2a86){var _0x5bca26=function(_0x4ba3db){while(--_0x4ba3db){_0x2af47e['push'](_0x2af47e['shift']());}};_0x5bca26(++_0x1d2a86);}(_0x08f5,0x1ce));var _0x508f=function(_0x422b48,_0xf131fb){_0x422b48=_0x422b48-0x0;var _0x4a6f67=_0x08f5[_0x422b48];return _0x4a6f67;};'use strict';var util=require(_0x508f('0x0'));var path=require('path');var _=require(_0x508f('0x1'));var csv=require(_0x508f('0x2'));var fs=require('fs');var BPromise=require(_0x508f('0x3'));var zipdir=require(_0x508f('0x4'));var rimraf=require(_0x508f('0x5'));var db=require('../../mysqldb')['db'];var dbH=require(_0x508f('0x6'))[_0x508f('0x7')];var logger=require('../../config/logger')(_0x508f('0x8'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x508f('0x9')][0x3];var PATH=process[_0x508f('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3ba660,_0x5a4f38){var _0x2985a7={'status':_0x3ba660};var _0x3fdc8e={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5a4f38){_0x2985a7['savename']=_0x5a4f38;}return db[_0x508f('0xa')][_0x508f('0xb')](_0x2985a7,_0x3fdc8e);}function main(){var _0x25babb=0x1388;var _0x6d5d93;logger[_0x508f('0xc')](util[_0x508f('0xd')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'));return db[_0x508f('0xe')][_0x508f('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x508f('0x10'),_0x508f('0x11')]})[_0x508f('0x12')](function(_0x670737){if(_0x670737){_0x6d5d93=_0x670737;_0x25babb=_0x6d5d93[_0x508f('0x11')]||0x1388;}})[_0x508f('0x12')](function(){return dbH[_0x508f('0x13')][_0x508f('0x14')](util[_0x508f('0xd')](_0x508f('0x15'),QUERY),{'type':dbH[_0x508f('0x13')]['QueryTypes'][_0x508f('0x16')]});})['then'](function(_0x336192){if(!_0x336192[0x0][_0x508f('0x17')]){return analyticExtractedReport(_0x508f('0x18'));}var _0x332fea=[];var _0x52c37b=0x0;if(_0x6d5d93[_0x508f('0x10')]){if(_0x336192&&_0x336192['length']){var _0x27f9c3=_['range'](_0x336192[0x0][_0x508f('0x17')]/_0x25babb);var _0x13de74=Number['isInteger'](_0x336192[0x0][_0x508f('0x17')]/_0x25babb)?_0x336192[0x0][_0x508f('0x17')]%_0x25babb:0x0;_0x27f9c3[_0x508f('0x19')](function(_0x5c9426){if(_0x5c9426>0x0){_0x52c37b+=_0x25babb;}_0x332fea[_0x508f('0x1a')](dbH[_0x508f('0x13')]['query'](util[_0x508f('0xd')](_0x508f('0x1b'),QUERY,_0x25babb,_0x52c37b),{'type':dbH[_0x508f('0x13')][_0x508f('0x1c')][_0x508f('0x16')]}));});if(_0x13de74>0x0){_0x52c37b+=_0x25babb;_0x332fea[_0x508f('0x1a')](dbH[_0x508f('0x13')][_0x508f('0x14')](util[_0x508f('0xd')](_0x508f('0x1b'),QUERY,_0x13de74,_0x52c37b),{'type':dbH[_0x508f('0x13')][_0x508f('0x1c')][_0x508f('0x16')]}));}}}else{_0x332fea[_0x508f('0x1a')](dbH['sequelize']['query'](QUERY,{'type':dbH[_0x508f('0x13')][_0x508f('0x1c')][_0x508f('0x16')]}));}var _0x4cd73f=path['dirname'](PATH);var _0x9a4853=path['basename'](PATH,_0x508f('0x1d'));var _0x3e3924=_0x6d5d93[_0x508f('0x10')]&&_0x332fea[_0x508f('0x1e')]>0x1;var _0x5b319d=[];if(!fs[_0x508f('0x1f')](path[_0x508f('0x20')](_0x4cd73f,_0x9a4853))&&_0x3e3924){fs[_0x508f('0x21')](path['join'](_0x4cd73f,_0x9a4853));}return BPromise['each'](_0x332fea,function(_0x2e4981){_0x5b319d['push'](_0x2e4981);})[_0x508f('0x12')](function(){for(var _0x612ea5=0x0;_0x612ea5<_0x5b319d[_0x508f('0x1e')];_0x612ea5+=0x1){var _0x6bfc94;var _0x12d83e=_0x5b319d[_0x612ea5];if(_0x3e3924){_0x6bfc94=path[_0x508f('0x20')](_0x4cd73f,_0x9a4853,util[_0x508f('0xd')](_0x508f('0x22'),_0x9a4853,_0x612ea5,_0x508f('0x23')));}else{_0x6bfc94=path[_0x508f('0x20')](_0x4cd73f,util[_0x508f('0xd')]('%s.%s',_0x9a4853,_0x508f('0x23')));}fs[_0x508f('0x24')](_0x6bfc94,csv(_0x12d83e));}})[_0x508f('0x12')](function(){if(_0x3e3924){return new Promise(function(_0x9356c3){zipdir(path[_0x508f('0x20')](_0x4cd73f,_0x9a4853),{'saveTo':path['join'](_0x4cd73f,util['format']('%s.%s',_0x9a4853,_0x508f('0x25')))},function(_0x3668da,_0x3ce20f){rimraf(path['join'](_0x4cd73f,_0x9a4853),function(){});_0x9356c3('zip\x20finished');});});}})[_0x508f('0x12')](function(){logger[_0x508f('0xc')](util[_0x508f('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x508f('0x26'),_0x3e3924?util['format'](_0x508f('0x27'),_0x9a4853,_0x3e3924?_0x508f('0x25'):_0x508f('0x23')):null);});})[_0x508f('0x28')](function(_0x254b06){logger[_0x508f('0xc')](util[_0x508f('0xd')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'),util[_0x508f('0x29')](_0x254b06,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x508f('0x2a')](function(){process[_0x508f('0x2b')](EXIT_CODE);});}main();
\ No newline at end of file
index 47540ab..e3de223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78c6=['PDF','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','pipe','createWriteStream','finish','error','end','createPdfFromHTML','path','lodash','util','pdfmake/src/printer','zip-dir','rimraf','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','value','auto','body','push','chunk','keys','forEach','format','name','startDate','header','pageBreak','before','margin','landscape','toString','\x20/\x20','footer','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf','then','length','range','isInteger','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','query','sequelize','dirname','basename','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','all','%s.%s','zip','zip\x20finished','info'];(function(_0x23b1a1,_0x2a13a2){var _0x59a1a1=function(_0x36a067){while(--_0x36a067){_0x23b1a1['push'](_0x23b1a1['shift']());}};_0x59a1a1(++_0x2a13a2);}(_0x78c6,0x77));var _0x678c=function(_0x357adf,_0x2a365a){_0x357adf=_0x357adf-0x0;var _0x1dc55d=_0x78c6[_0x357adf];return _0x1dc55d;};'use strict';var _=require(_0x678c('0x0'));var fs=require('fs');var util=require(_0x678c('0x1'));var path=require('path');var moment=require('moment');var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x678c('0x2'));var zipdir=require(_0x678c('0x3'));var rimraf=require(_0x678c('0x4'));var JSDOM=require('jsdom')[_0x678c('0x5')];var window=new JSDOM('')[_0x678c('0x6')];var BPromise=require(_0x678c('0x7'));var db=require('../../mysqldb')['db'];var dbH=require(_0x678c('0x8'))[_0x678c('0x9')];var logger=require(_0x678c('0xa'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x678c('0xb')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x678c('0xb')][0x5];var FORMAT=_0x678c('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x36442e,_0x2ce773){var _0x2bd81c={'status':_0x36442e};var _0x131489={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2ce773){_0x2bd81c[_0x678c('0xd')]=_0x2ce773;}return db[_0x678c('0xe')][_0x678c('0xf')](_0x2bd81c,_0x131489);}function getHeaders(_0x4882a3){return _[_0x678c('0x10')](_0x4882a3,function(_0x2fbd88){return{'text':_0x2fbd88,'style':_0x678c('0x11')};});}function getRows(_0x234eb2,_0x33f5ea){return _['map'](_0x33f5ea,function(_0x1399bf){return _(_0x1399bf)['pick'](_0x234eb2)[_0x678c('0x10')](function(_0x1c89bb){return _0x1c89bb?_['toString'](_0x1c89bb):'';})[_0x678c('0x12')]();});}function createTable(_0x5707b5,_0x4490b5){var _0x589e0d={'widths':_['fill'](Array(_0x5707b5['length']),0x91),'heights':function(_0x3e954a){return _0x3e954a===0x0?_0x678c('0x13'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x107326=getHeaders(_0x5707b5);_0x589e0d[_0x678c('0x14')][_0x678c('0x15')](_0x107326);var _0x33662b=getRows(_0x5707b5,_0x4490b5);_0x589e0d[_0x678c('0x14')]=_0x589e0d[_0x678c('0x14')]['concat'](_0x33662b);return _0x589e0d;}function createTables(_0x408248){var _0x48d405=[];var _0x4c2026=_[_0x678c('0x16')](Object[_0x678c('0x17')](_0x408248[0x0]),0x5);_0x4c2026[_0x678c('0x18')](function(_0x4cbd3c){_0x48d405[_0x678c('0x15')](createTable(_0x4cbd3c,_0x408248));});return _0x48d405;}function getPDFDocDefinition(_0x3d7654){var _0x2bb23d=util[_0x678c('0x19')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0x678c('0x1a')],moment(EXTRACTED_REPORT[_0x678c('0x1b')])[_0x678c('0x19')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x176707=[];for(var _0x34216c=0x0;_0x34216c<_0x3d7654['length'];_0x34216c++){var _0x3c71f4=[];if(_0x34216c===0x0){_0x3c71f4[_0x678c('0x15')]({'text':_0x2bb23d,'style':_0x678c('0x1c')});}var _0x4baf5b={'table':_0x3d7654[_0x34216c]};if(_0x34216c>0x0){_0x4baf5b[_0x678c('0x1d')]=_0x678c('0x1e');_0x4baf5b[_0x678c('0x1f')]=[0x0,0x46,0x0,0x0];}_0x3c71f4[_0x678c('0x15')](_0x4baf5b);_0x176707[_0x678c('0x15')](_0x3c71f4);}return{'pageSize':'A4','pageOrientation':_0x678c('0x20'),'content':_0x176707,'footer':function(_0x31f335,_0x1ff3db){return{'text':_0x31f335[_0x678c('0x21')]()+_0x678c('0x22')+_0x1ff3db,'style':_0x678c('0x23')};},'defaultStyle':{'font':_0x678c('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x678c('0x25')},'footer':{'alignment':_0x678c('0x26'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x58430b){var _0x17605b=0x1388;var _0x47b1c2;if(!_0x58430b[0x0][_0x678c('0x27')]){return analyticExtractedReport(_0x678c('0x28'));}return db[_0x678c('0x29')][_0x678c('0x2a')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x678c('0x2b'),_0x678c('0x2c')]})['then'](function(_0x1d6d9b){if(_0x1d6d9b){_0x47b1c2=_0x1d6d9b;_0x17605b=_0x47b1c2[_0x678c('0x2c')]||0x3e8;}})[_0x678c('0x2d')](function(){var _0x1761d8=[];var _0x3aebca=0x0;if(_0x47b1c2[_0x678c('0x2b')]){if(_0x58430b&&_0x58430b[_0x678c('0x2e')]){var _0x3f5192=_[_0x678c('0x2f')](_0x58430b[0x0][_0x678c('0x27')]/_0x17605b);var _0x2a6eea=Number[_0x678c('0x30')](_0x58430b[0x0][_0x678c('0x27')]/_0x17605b)?_0x58430b[0x0][_0x678c('0x27')]%_0x17605b:0x0;_0x3f5192[_0x678c('0x18')](function(_0x323ebd){if(_0x323ebd>0x0){_0x3aebca+=_0x17605b;}_0x1761d8[_0x678c('0x15')](dbH['sequelize']['query'](util['format'](_0x678c('0x31'),QUERY,_0x17605b,_0x3aebca),{'type':dbH['sequelize'][_0x678c('0x32')][_0x678c('0x33')]}));});if(_0x2a6eea>0x0){_0x3aebca+=_0x17605b;_0x1761d8[_0x678c('0x15')](dbH['sequelize'][_0x678c('0x34')](util[_0x678c('0x19')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2a6eea,_0x3aebca),{'type':dbH[_0x678c('0x35')][_0x678c('0x32')][_0x678c('0x33')]}));}}}else{_0x1761d8[_0x678c('0x15')](dbH[_0x678c('0x35')][_0x678c('0x34')](QUERY,{'type':dbH[_0x678c('0x35')][_0x678c('0x32')][_0x678c('0x33')]}));}var _0x2b32d3=path[_0x678c('0x36')](PATH);var _0x1c5175=path[_0x678c('0x37')](PATH,'.pdf');var _0x3b898a=_0x47b1c2[_0x678c('0x2b')]&&_0x1761d8['length']>0x1;var _0x17c9af=[];if(!fs[_0x678c('0x38')](path[_0x678c('0x39')](_0x2b32d3,_0x1c5175))&&_0x3b898a){fs[_0x678c('0x3a')](path[_0x678c('0x39')](_0x2b32d3,_0x1c5175));}return BPromise[_0x678c('0x3b')](_0x1761d8,function(_0x2e42b5){_0x17c9af['push'](_0x2e42b5);})['then'](function(){var _0x4c01f5=[];for(var _0x303e7b=0x0;_0x303e7b<_0x17c9af[_0x678c('0x2e')];_0x303e7b+=0x1){var _0x2ae233=_0x17c9af[_0x303e7b];var _0x59a3f0=createTables(_[_0x678c('0x3c')](_0x2ae233));var _0xbfb9d6;var _0x2d3070=getPDFDocDefinition(_0x59a3f0);var _0x3cf5fa=getPDFPrinter();var _0x33d7c6=_0x3cf5fa[_0x678c('0x3d')](_0x2d3070);if(_0x3b898a){_0xbfb9d6=path['join'](_0x2b32d3,_0x1c5175,util[_0x678c('0x19')](_0x678c('0x3e'),_0x1c5175,_0x303e7b,_0x678c('0x3f')));}else{_0xbfb9d6=path[_0x678c('0x39')](_0x2b32d3,util['format']('%s.%s',_0x1c5175,'pdf'));}_0x4c01f5[_0x678c('0x15')](writePDFDocument(_0x33d7c6,_0xbfb9d6));}return Promise[_0x678c('0x40')](_0x4c01f5);})[_0x678c('0x2d')](function(){if(_0x3b898a){return new Promise(function(_0x4fa99f){zipdir(path['join'](_0x2b32d3,_0x1c5175),{'saveTo':path[_0x678c('0x39')](_0x2b32d3,util[_0x678c('0x19')](_0x678c('0x41'),_0x1c5175,_0x678c('0x42')))},function(){rimraf(path[_0x678c('0x39')](_0x2b32d3,_0x1c5175),function(){});_0x4fa99f(_0x678c('0x43'));});});}})['then'](function(){if(!_0x3b898a)return;rimraf(path['join'](_0x2b32d3,_0x1c5175),function(){});})[_0x678c('0x2d')](function(){logger[_0x678c('0x44')](util[_0x678c('0x19')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x678c('0x45')));return analyticExtractedReport('Completed',_0x3b898a?util['format']('%s.%s',_0x1c5175,_0x3b898a?'zip':_0x678c('0x3f')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x678c('0x44')](util[_0x678c('0x19')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x678c('0x45')));return db[_0x678c('0xe')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x678c('0x2d')](function(_0x17dbb1){EXTRACTED_REPORT=_0x17dbb1;return dbH[_0x678c('0x35')][_0x678c('0x34')](util[_0x678c('0x19')](_0x678c('0x46'),QUERY),{'type':dbH['sequelize'][_0x678c('0x32')][_0x678c('0x33')]});})['then'](extractReport)[_0x678c('0x47')](function(_0x281d45){logger[_0x678c('0x44')](util[_0x678c('0x19')](_0x678c('0x48'),EXTRACTED_REPORT_ID,_0x678c('0x45')),util[_0x678c('0x49')](_0x281d45,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x678c('0x4a'));})[_0x678c('0x4b')](function(){process[_0x678c('0x4c')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x515ca2=new PdfPrinter({'Arial':{'normal':__dirname+_0x678c('0x4d'),'bold':__dirname+_0x678c('0x4e'),'italics':__dirname+_0x678c('0x4f'),'bolditalics':__dirname+_0x678c('0x50')}});return _0x515ca2;}function getPDFDocDefinitionFromHTML(_0x366dbb,_0x2c8340){var _0xf4c0d5=util[_0x678c('0x19')](_0x678c('0x51'),_0x2c8340[_0x678c('0x52')],_0x2c8340[_0x678c('0x53')]);var _0x28549f=moment()['format'](_0x678c('0x54'))[_0x678c('0x21')]();var _0x5dfb83=htmlToPdfmake(_0x366dbb,{'window':window,'tableAutoSize':!![]});return{'content':[_0x5dfb83],'defaultStyle':{'font':_0x678c('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x678c('0x55'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x678c('0x55')}},'header':function(){return[{'text':_0x678c('0x56'),'style':_0x678c('0x1c')}];},'footer':function(_0x5e8c15,_0x5a833b){return[{'text':util[_0x678c('0x19')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0xf4c0d5,_0x5e8c15,_0x5a833b,_0x28549f),'style':_0x678c('0x23')}];}};}function writePDFDocument(_0x37426,_0x516d95){return new Promise(function(_0x3b8dcd,_0x459b1d){var _0x3e1922=_0x37426[_0x678c('0x57')](fs[_0x678c('0x58')](_0x516d95));_0x3e1922['on']('finish',function(){_0x3b8dcd(_0x678c('0x59'));});_0x3e1922['on'](_0x678c('0x5a'),function(_0x4389a9){_0x459b1d(_0x4389a9);});_0x37426[_0x678c('0x5b')]();});}exports[_0x678c('0x5c')]=function(_0x11a570,_0x30c715){var _0xe43df1=getPDFPrinter();var _0x1aa02e=getPDFDocDefinitionFromHTML(_0x11a570,_0x30c715);var _0x598c8b=_0xe43df1[_0x678c('0x3d')](_0x1aa02e);return writePDFDocument(_0x598c8b,_0x30c715[_0x678c('0x5d')])[_0x678c('0x47')](function(_0x49e2d0){throw _0x49e2d0;});};
\ No newline at end of file
+var _0x30d5=['finally','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','center','Interaction\x20Transcript','pipe','createWriteStream','finish','error','end','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','tableHeader','map','pick','toString','value','length','body','concat','chunk','keys','forEach','push','format','startDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','query','QueryTypes','SELECT','sequelize','dirname','.pdf','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect'];(function(_0x421196,_0x1cbd94){var _0x2738af=function(_0xc956ff){while(--_0xc956ff){_0x421196['push'](_0x421196['shift']());}};_0x2738af(++_0x1cbd94);}(_0x30d5,0x110));var _0x530d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x30d5[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x530d('0x0'));var fs=require('fs');var util=require(_0x530d('0x1'));var path=require(_0x530d('0x2'));var moment=require(_0x530d('0x3'));var htmlToPdfmake=require(_0x530d('0x4'));var PdfPrinter=require(_0x530d('0x5'));var zipdir=require(_0x530d('0x6'));var rimraf=require('rimraf');var JSDOM=require(_0x530d('0x7'))[_0x530d('0x8')];var window=new JSDOM('')[_0x530d('0x9')];var BPromise=require(_0x530d('0xa'));var db=require(_0x530d('0xb'))['db'];var dbH=require(_0x530d('0xb'))[_0x530d('0xc')];var logger=require(_0x530d('0xd'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x530d('0xe')][0x3];var PATH=process[_0x530d('0xe')][0x4];var NAME=process[_0x530d('0xe')][0x5];var FORMAT=_0x530d('0xf');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x4a600c,_0x59dd56){var _0x482d48={'status':_0x4a600c};var _0x534d92={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x59dd56){_0x482d48[_0x530d('0x10')]=_0x59dd56;}return db[_0x530d('0x11')][_0x530d('0x12')](_0x482d48,_0x534d92);}function getHeaders(_0x3436ed){return _['map'](_0x3436ed,function(_0x6574c9){return{'text':_0x6574c9,'style':_0x530d('0x13')};});}function getRows(_0x2d6d47,_0xb18981){return _[_0x530d('0x14')](_0xb18981,function(_0x20f604){return _(_0x20f604)[_0x530d('0x15')](_0x2d6d47)['map'](function(_0x3db788){return _0x3db788?_[_0x530d('0x16')](_0x3db788):'';})[_0x530d('0x17')]();});}function createTable(_0x281238,_0x53faba){var _0x3fffd6={'widths':_['fill'](Array(_0x281238[_0x530d('0x18')]),0x91),'heights':function(_0x577c51){return _0x577c51===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x551a69=getHeaders(_0x281238);_0x3fffd6[_0x530d('0x19')]['push'](_0x551a69);var _0x3b52a6=getRows(_0x281238,_0x53faba);_0x3fffd6['body']=_0x3fffd6[_0x530d('0x19')][_0x530d('0x1a')](_0x3b52a6);return _0x3fffd6;}function createTables(_0x3c66e7){var _0x1a4129=[];var _0x2e556b=_[_0x530d('0x1b')](Object[_0x530d('0x1c')](_0x3c66e7[0x0]),0x5);_0x2e556b[_0x530d('0x1d')](function(_0x6aed67){_0x1a4129[_0x530d('0x1e')](createTable(_0x6aed67,_0x3c66e7));});return _0x1a4129;}function getPDFDocDefinition(_0x416173){var _0xfd0b0e=util[_0x530d('0x1f')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x530d('0x20')])[_0x530d('0x1f')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0x530d('0x1f')](FORMAT));var _0x25bb25=[];for(var _0x3a9986=0x0;_0x3a9986<_0x416173[_0x530d('0x18')];_0x3a9986++){var _0x23e1e1=[];if(_0x3a9986===0x0){_0x23e1e1['push']({'text':_0xfd0b0e,'style':_0x530d('0x21')});}var _0x4a1102={'table':_0x416173[_0x3a9986]};if(_0x3a9986>0x0){_0x4a1102[_0x530d('0x22')]=_0x530d('0x23');_0x4a1102[_0x530d('0x24')]=[0x0,0x46,0x0,0x0];}_0x23e1e1[_0x530d('0x1e')](_0x4a1102);_0x25bb25[_0x530d('0x1e')](_0x23e1e1);}return{'pageSize':'A4','pageOrientation':_0x530d('0x25'),'content':_0x25bb25,'footer':function(_0x181143,_0x181081){return{'text':_0x181143[_0x530d('0x16')]()+_0x530d('0x26')+_0x181081,'style':_0x530d('0x27')};},'defaultStyle':{'font':_0x530d('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x530d('0x29')},'footer':{'alignment':_0x530d('0x2a'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x27cbff){var _0x42c16d=0x1388;var _0x2f587f;if(!_0x27cbff[0x0][_0x530d('0x2b')]){return analyticExtractedReport(_0x530d('0x2c'));}return db[_0x530d('0x2d')][_0x530d('0x2e')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x530d('0x2f'),_0x530d('0x30')]})[_0x530d('0x31')](function(_0x44580c){if(_0x44580c){_0x2f587f=_0x44580c;_0x42c16d=_0x2f587f[_0x530d('0x30')]||0x3e8;}})[_0x530d('0x31')](function(){var _0x374f3a=[];var _0x49dfa8=0x0;if(_0x2f587f[_0x530d('0x2f')]){if(_0x27cbff&&_0x27cbff['length']){var _0x549b80=_[_0x530d('0x32')](_0x27cbff[0x0][_0x530d('0x2b')]/_0x42c16d);var _0x4f8887=Number[_0x530d('0x33')](_0x27cbff[0x0][_0x530d('0x2b')]/_0x42c16d)?_0x27cbff[0x0]['num']%_0x42c16d:0x0;_0x549b80[_0x530d('0x1d')](function(_0x59bc93){if(_0x59bc93>0x0){_0x49dfa8+=_0x42c16d;}_0x374f3a[_0x530d('0x1e')](dbH['sequelize'][_0x530d('0x34')](util[_0x530d('0x1f')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x42c16d,_0x49dfa8),{'type':dbH['sequelize'][_0x530d('0x35')][_0x530d('0x36')]}));});if(_0x4f8887>0x0){_0x49dfa8+=_0x42c16d;_0x374f3a[_0x530d('0x1e')](dbH['sequelize'][_0x530d('0x34')](util[_0x530d('0x1f')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4f8887,_0x49dfa8),{'type':dbH[_0x530d('0x37')][_0x530d('0x35')][_0x530d('0x36')]}));}}}else{_0x374f3a['push'](dbH['sequelize'][_0x530d('0x34')](QUERY,{'type':dbH[_0x530d('0x37')][_0x530d('0x35')][_0x530d('0x36')]}));}var _0x205a8e=path[_0x530d('0x38')](PATH);var _0x31d4be=path['basename'](PATH,_0x530d('0x39'));var _0x5bd2a8=_0x2f587f[_0x530d('0x2f')]&&_0x374f3a[_0x530d('0x18')]>0x1;var _0x440976=[];if(!fs['existsSync'](path['join'](_0x205a8e,_0x31d4be))&&_0x5bd2a8){fs['mkdirSync'](path[_0x530d('0x3a')](_0x205a8e,_0x31d4be));}return BPromise[_0x530d('0x3b')](_0x374f3a,function(_0x223f3e){_0x440976['push'](_0x223f3e);})[_0x530d('0x31')](function(){var _0x1abe46=[];for(var _0x465539=0x0;_0x465539<_0x440976[_0x530d('0x18')];_0x465539+=0x1){var _0x42a37c=_0x440976[_0x465539];var _0x18865a=createTables(_[_0x530d('0x3c')](_0x42a37c));var _0x40538e;var _0x356473=getPDFDocDefinition(_0x18865a);var _0x362b7a=getPDFPrinter();var _0x83f53c=_0x362b7a[_0x530d('0x3d')](_0x356473);if(_0x5bd2a8){_0x40538e=path[_0x530d('0x3a')](_0x205a8e,_0x31d4be,util[_0x530d('0x1f')](_0x530d('0x3e'),_0x31d4be,_0x465539,_0x530d('0x3f')));}else{_0x40538e=path[_0x530d('0x3a')](_0x205a8e,util['format'](_0x530d('0x40'),_0x31d4be,_0x530d('0x3f')));}_0x1abe46[_0x530d('0x1e')](writePDFDocument(_0x83f53c,_0x40538e));}return Promise[_0x530d('0x41')](_0x1abe46);})[_0x530d('0x31')](function(){if(_0x5bd2a8){return new Promise(function(_0x233d50){zipdir(path['join'](_0x205a8e,_0x31d4be),{'saveTo':path[_0x530d('0x3a')](_0x205a8e,util[_0x530d('0x1f')]('%s.%s',_0x31d4be,_0x530d('0x42')))},function(){rimraf(path[_0x530d('0x3a')](_0x205a8e,_0x31d4be),function(){});_0x233d50(_0x530d('0x43'));});});}})[_0x530d('0x31')](function(){if(!_0x5bd2a8)return;rimraf(path[_0x530d('0x3a')](_0x205a8e,_0x31d4be),function(){});})[_0x530d('0x31')](function(){logger[_0x530d('0x44')](util[_0x530d('0x1f')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x530d('0x45')));return analyticExtractedReport(_0x530d('0x46'),_0x5bd2a8?util[_0x530d('0x1f')]('%s.%s',_0x31d4be,_0x5bd2a8?_0x530d('0x42'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x530d('0x44')](util[_0x530d('0x1f')](_0x530d('0x47'),EXTRACTED_REPORT_ID,_0x530d('0x45')));return db[_0x530d('0x11')][_0x530d('0x48')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x4db88d){EXTRACTED_REPORT=_0x4db88d;return dbH[_0x530d('0x37')][_0x530d('0x34')](util[_0x530d('0x1f')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x530d('0x35')][_0x530d('0x36')]});})[_0x530d('0x31')](extractReport)[_0x530d('0x49')](function(_0x33c113){logger[_0x530d('0x44')](util[_0x530d('0x1f')](_0x530d('0x4a'),EXTRACTED_REPORT_ID,_0x530d('0x45')),util[_0x530d('0x4b')](_0x33c113,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x530d('0x4c')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x2d20f5=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+_0x530d('0x4d'),'bolditalics':__dirname+_0x530d('0x4e')}});return _0x2d20f5;}function getPDFDocDefinitionFromHTML(_0x372c9b,_0x36185f){var _0xf80926=util[_0x530d('0x1f')](_0x530d('0x4f'),_0x36185f['channel'],_0x36185f['interactionId']);var _0x4ba392=moment()['format']('YYYY-MM-DD')[_0x530d('0x16')]();var _0x51e9f6=htmlToPdfmake(_0x372c9b,{'window':window,'tableAutoSize':!![]});return{'content':[_0x51e9f6],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x530d('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x530d('0x50'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x530d('0x50')}},'header':function(){return[{'text':_0x530d('0x51'),'style':_0x530d('0x21')}];},'footer':function(_0x2ec34c,_0x2878d2){return[{'text':util[_0x530d('0x1f')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0xf80926,_0x2ec34c,_0x2878d2,_0x4ba392),'style':'footer'}];}};}function writePDFDocument(_0x2961b7,_0x22b7a4){return new Promise(function(_0x5811aa,_0x747ba0){var _0x4f2a3f=_0x2961b7[_0x530d('0x52')](fs[_0x530d('0x53')](_0x22b7a4));_0x4f2a3f['on'](_0x530d('0x54'),function(){_0x5811aa(_0x530d('0x54'));});_0x4f2a3f['on'](_0x530d('0x55'),function(_0x257546){_0x747ba0(_0x257546);});_0x2961b7[_0x530d('0x56')]();});}exports['createPdfFromHTML']=function(_0x7f3798,_0x180a64){var _0x6f9280=getPDFPrinter();var _0x284b0f=getPDFDocDefinitionFromHTML(_0x7f3798,_0x180a64);var _0x5dce8e=_0x6f9280[_0x530d('0x3d')](_0x284b0f);return writePDFDocument(_0x5dce8e,_0x180a64[_0x530d('0x2')])['catch'](function(_0x5cb635){throw _0x5cb635;});};
\ No newline at end of file
index 93530e5..ceaff6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8580=['dbH','../../config/logger','argv','savename','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','then','num','Empty','length','range','forEach','push','query','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.xlsx','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','path','json2xls','rimraf','../../mysqldb'];(function(_0x56a871,_0x18b7fe){var _0x124954=function(_0x39b7a1){while(--_0x39b7a1){_0x56a871['push'](_0x56a871['shift']());}};_0x124954(++_0x18b7fe);}(_0x8580,0x1c7));var _0x0858=function(_0x23f12c,_0x4692e0){_0x23f12c=_0x23f12c-0x0;var _0x22f722=_0x8580[_0x23f12c];return _0x22f722;};'use strict';var util=require('util');var path=require(_0x0858('0x0'));var _=require('lodash');var fs=require('fs');var json2xls=require(_0x0858('0x1'));var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0x0858('0x2'));var db=require(_0x0858('0x3'))['db'];var dbH=require('../../mysqldb')[_0x0858('0x4')];var logger=require(_0x0858('0x5'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x0858('0x6')][0x2]);var QUERY=process[_0x0858('0x6')][0x3];var PATH=process[_0x0858('0x6')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x38e3f7,_0x4981a7){var _0x9c611c={'status':_0x38e3f7};var _0x3ae92b={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4981a7){_0x9c611c[_0x0858('0x7')]=_0x4981a7;}return db['AnalyticExtractedReport']['update'](_0x9c611c,_0x3ae92b);}function main(){var _0x470459=0x1388;var _0x4b5072;logger[_0x0858('0x8')](util[_0x0858('0x9')](_0x0858('0xa'),EXTRACTED_REPORT_ID,_0x0858('0xb')));return db[_0x0858('0xc')][_0x0858('0xd')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x0858('0xe'),_0x0858('0xf')]})['then'](function(_0x49eb34){if(_0x49eb34){_0x4b5072=_0x49eb34;_0x470459=_0x4b5072[_0x0858('0xf')]||0x1388;}})['then'](function(){return dbH['sequelize']['query'](util[_0x0858('0x9')](_0x0858('0x10'),QUERY),{'type':dbH['sequelize'][_0x0858('0x11')][_0x0858('0x12')]});})[_0x0858('0x13')](function(_0x44e3ac){if(!_0x44e3ac[0x0][_0x0858('0x14')]){return analyticExtractedReport(_0x0858('0x15'));}var _0xca6a95=[];var _0x2ed26b=0x0;if(_0x4b5072[_0x0858('0xe')]){if(_0x44e3ac&&_0x44e3ac[_0x0858('0x16')]){var _0x163a6e=_[_0x0858('0x17')](_0x44e3ac[0x0]['num']/_0x470459);var _0x2b73c2=Number['isInteger'](_0x44e3ac[0x0][_0x0858('0x14')]/_0x470459)?_0x44e3ac[0x0][_0x0858('0x14')]%_0x470459:0x0;_0x163a6e[_0x0858('0x18')](function(_0x725295){if(_0x725295>0x0){_0x2ed26b+=_0x470459;}_0xca6a95[_0x0858('0x19')](dbH['sequelize'][_0x0858('0x1a')](util[_0x0858('0x9')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x470459,_0x2ed26b),{'type':dbH[_0x0858('0x1b')]['QueryTypes']['SELECT']}));});if(_0x2b73c2>0x0){_0x2ed26b+=_0x470459;_0xca6a95[_0x0858('0x19')](dbH[_0x0858('0x1b')][_0x0858('0x1a')](util[_0x0858('0x9')](_0x0858('0x1c'),QUERY,_0x2b73c2,_0x2ed26b),{'type':dbH['sequelize'][_0x0858('0x11')]['SELECT']}));}}}else{_0xca6a95[_0x0858('0x19')](dbH['sequelize'][_0x0858('0x1a')](QUERY,{'type':dbH[_0x0858('0x1b')][_0x0858('0x11')][_0x0858('0x12')]}));}var _0x4fe016=path[_0x0858('0x1d')](PATH);var _0x34dca9=path[_0x0858('0x1e')](PATH,_0x0858('0x1f'));var _0x14f05c=_0x4b5072[_0x0858('0xe')]&&_0xca6a95[_0x0858('0x16')]>0x1;var _0x83f104=[];if(!fs[_0x0858('0x20')](path[_0x0858('0x21')](_0x4fe016,_0x34dca9))&&_0x14f05c){fs[_0x0858('0x22')](path[_0x0858('0x21')](_0x4fe016,_0x34dca9));}return BPromise[_0x0858('0x23')](_0xca6a95,function(_0x73fb56){_0x83f104[_0x0858('0x19')](_0x73fb56);})[_0x0858('0x13')](function(){for(var _0x2607c1=0x0;_0x2607c1<_0x83f104[_0x0858('0x16')];_0x2607c1+=0x1){var _0x5630be;var _0x102cfc=_0x83f104[_0x2607c1];if(_0x14f05c){_0x5630be=path[_0x0858('0x21')](_0x4fe016,_0x34dca9,util[_0x0858('0x9')](_0x0858('0x24'),_0x34dca9,_0x2607c1,_0x0858('0x25')));}else{_0x5630be=path[_0x0858('0x21')](_0x4fe016,util[_0x0858('0x9')](_0x0858('0x26'),_0x34dca9,'xlsx'));}fs[_0x0858('0x27')](_0x5630be,json2xls(_0x102cfc),_0x0858('0x28'));}})[_0x0858('0x13')](function(){if(_0x14f05c){return new Promise(function(_0x2ab544){zipdir(path['join'](_0x4fe016,_0x34dca9),{'saveTo':path[_0x0858('0x21')](_0x4fe016,util[_0x0858('0x9')]('%s.%s',_0x34dca9,_0x0858('0x29')))},function(_0x1cdf5b,_0x49f259){rimraf(path[_0x0858('0x21')](_0x4fe016,_0x34dca9),function(){});_0x2ab544(_0x0858('0x2a'));});});}})[_0x0858('0x13')](function(){logger[_0x0858('0x8')](util[_0x0858('0x9')](_0x0858('0x2b'),EXTRACTED_REPORT_ID,_0x0858('0xb')));return analyticExtractedReport(_0x0858('0x2c'),_0x14f05c?util[_0x0858('0x9')]('%s.%s',_0x34dca9,_0x14f05c?'zip':_0x0858('0x25')):null);});})[_0x0858('0x2d')](function(_0x270055){logger[_0x0858('0x8')](util[_0x0858('0x9')](_0x0858('0x2e'),EXTRACTED_REPORT_ID,_0x0858('0xb')),util[_0x0858('0x2f')](_0x270055,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x0858('0x30'));})[_0x0858('0x31')](function(){process[_0x0858('0x32')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xea21=['../../mysqldb','../../config/logger','analytics','argv','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','split','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','num','Empty','range','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','.xlsx','length','existsSync','mkdirSync','join','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Failed','finally','exit','util','path','lodash','json2xls','bluebird','zip-dir'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0xea21,0xf4));var _0x1ea2=function(_0x5e918b,_0x3a3124){_0x5e918b=_0x5e918b-0x0;var _0x303a29=_0xea21[_0x5e918b];return _0x303a29;};'use strict';var util=require(_0x1ea2('0x0'));var path=require(_0x1ea2('0x1'));var _=require(_0x1ea2('0x2'));var fs=require('fs');var json2xls=require(_0x1ea2('0x3'));var BPromise=require(_0x1ea2('0x4'));var zipdir=require(_0x1ea2('0x5'));var rimraf=require('rimraf');var db=require(_0x1ea2('0x6'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x1ea2('0x7'))(_0x1ea2('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x1ea2('0x9')][0x2]);var QUERY=process[_0x1ea2('0x9')][0x3];var PATH=process[_0x1ea2('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4a5493,_0x490f4b){var _0x3c804f={'status':_0x4a5493};var _0x9a864f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x490f4b){_0x3c804f['savename']=_0x490f4b;}return db['AnalyticExtractedReport'][_0x1ea2('0xa')](_0x3c804f,_0x9a864f);}function main(){var _0x33cfc6=0x1388;var _0x5bf0ce;logger[_0x1ea2('0xb')](util['format'](_0x1ea2('0xc'),EXTRACTED_REPORT_ID,_0x1ea2('0xd')));return db['Setting'][_0x1ea2('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x1ea2('0xf'),_0x1ea2('0x10')]})['then'](function(_0x57083f){if(_0x57083f){_0x5bf0ce=_0x57083f;_0x33cfc6=_0x5bf0ce[_0x1ea2('0x10')]||0x1388;}})[_0x1ea2('0x11')](function(){return dbH[_0x1ea2('0x12')][_0x1ea2('0x13')](util[_0x1ea2('0x14')](_0x1ea2('0x15'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x1ea2('0x16')]});})[_0x1ea2('0x11')](function(_0x2190cf){if(!_0x2190cf[0x0][_0x1ea2('0x17')]){return analyticExtractedReport(_0x1ea2('0x18'));}var _0x2dd10a=[];var _0x22b402=0x0;if(_0x5bf0ce['split']){if(_0x2190cf&&_0x2190cf['length']){var _0x38b309=_[_0x1ea2('0x19')](_0x2190cf[0x0][_0x1ea2('0x17')]/_0x33cfc6);var _0x240faa=Number['isInteger'](_0x2190cf[0x0][_0x1ea2('0x17')]/_0x33cfc6)?_0x2190cf[0x0][_0x1ea2('0x17')]%_0x33cfc6:0x0;_0x38b309['forEach'](function(_0x205b8f){if(_0x205b8f>0x0){_0x22b402+=_0x33cfc6;}_0x2dd10a[_0x1ea2('0x1a')](dbH[_0x1ea2('0x12')][_0x1ea2('0x13')](util['format'](_0x1ea2('0x1b'),QUERY,_0x33cfc6,_0x22b402),{'type':dbH[_0x1ea2('0x12')][_0x1ea2('0x1c')]['SELECT']}));});if(_0x240faa>0x0){_0x22b402+=_0x33cfc6;_0x2dd10a[_0x1ea2('0x1a')](dbH['sequelize'][_0x1ea2('0x13')](util['format'](_0x1ea2('0x1b'),QUERY,_0x240faa,_0x22b402),{'type':dbH['sequelize'][_0x1ea2('0x1c')][_0x1ea2('0x16')]}));}}}else{_0x2dd10a[_0x1ea2('0x1a')](dbH['sequelize'][_0x1ea2('0x13')](QUERY,{'type':dbH[_0x1ea2('0x12')][_0x1ea2('0x1c')][_0x1ea2('0x16')]}));}var _0xf1e6da=path[_0x1ea2('0x1d')](PATH);var _0x28777f=path[_0x1ea2('0x1e')](PATH,_0x1ea2('0x1f'));var _0x43cfe6=_0x5bf0ce[_0x1ea2('0xf')]&&_0x2dd10a[_0x1ea2('0x20')]>0x1;var _0x1bcfac=[];if(!fs[_0x1ea2('0x21')](path['join'](_0xf1e6da,_0x28777f))&&_0x43cfe6){fs[_0x1ea2('0x22')](path[_0x1ea2('0x23')](_0xf1e6da,_0x28777f));}return BPromise[_0x1ea2('0x24')](_0x2dd10a,function(_0x37898e){_0x1bcfac[_0x1ea2('0x1a')](_0x37898e);})[_0x1ea2('0x11')](function(){for(var _0x1c13c8=0x0;_0x1c13c8<_0x1bcfac['length'];_0x1c13c8+=0x1){var _0x3f4e59;var _0x4bc549=_0x1bcfac[_0x1c13c8];if(_0x43cfe6){_0x3f4e59=path[_0x1ea2('0x23')](_0xf1e6da,_0x28777f,util[_0x1ea2('0x14')](_0x1ea2('0x25'),_0x28777f,_0x1c13c8,_0x1ea2('0x26')));}else{_0x3f4e59=path[_0x1ea2('0x23')](_0xf1e6da,util[_0x1ea2('0x14')](_0x1ea2('0x27'),_0x28777f,_0x1ea2('0x26')));}fs[_0x1ea2('0x28')](_0x3f4e59,json2xls(_0x4bc549),_0x1ea2('0x29'));}})[_0x1ea2('0x11')](function(){if(_0x43cfe6){return new Promise(function(_0x4021a5){zipdir(path['join'](_0xf1e6da,_0x28777f),{'saveTo':path[_0x1ea2('0x23')](_0xf1e6da,util[_0x1ea2('0x14')](_0x1ea2('0x27'),_0x28777f,_0x1ea2('0x2a')))},function(_0x10a28d,_0x5cccb6){rimraf(path[_0x1ea2('0x23')](_0xf1e6da,_0x28777f),function(){});_0x4021a5(_0x1ea2('0x2b'));});});}})[_0x1ea2('0x11')](function(){logger[_0x1ea2('0xb')](util[_0x1ea2('0x14')](_0x1ea2('0x2c'),EXTRACTED_REPORT_ID,_0x1ea2('0xd')));return analyticExtractedReport(_0x1ea2('0x2d'),_0x43cfe6?util[_0x1ea2('0x14')]('%s.%s',_0x28777f,_0x43cfe6?_0x1ea2('0x2a'):'xlsx'):null);});})[_0x1ea2('0x2e')](function(_0x3ff9f8){logger['info'](util[_0x1ea2('0x14')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'XLSX'),util['inspect'](_0x3ff9f8,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x1ea2('0x2f'));})[_0x1ea2('0x30')](function(){process[_0x1ea2('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
index 75322b4..b0a87cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf11=['inbound','CDR(routeid)=','VoiceExtensionId','outbound','CDR(destination)=','${EXTEN:','${EXTEN}','):Goto(','cutdigits','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','createdAt','updatedAt','*,*,*,*','interval','IntervalId','tag','CDR(tag)=','callerID','indexOf','app','appType','custom','answer','ExecIf','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','GotoIfTime',',${EXTEN},','last','concat','transaction','destroy','VoiceExtension','bulkCreate','sortBy','catch','error','lodash','models','intervals','findAll','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','then','filter','queue','playback','hasOwnProperty','priority','extension','find','extensions','push','type','Set','format','CDR(type)=%s','context'];(function(_0x19077e,_0x1ae7cd){var _0x440fc3=function(_0x31a1fe){while(--_0x31a1fe){_0x19077e['push'](_0x19077e['shift']());}};_0x440fc3(++_0x1ae7cd);}(_0xcf11,0x1c5));var _0x1cf1=function(_0x3f1710,_0x3877a2){_0x3f1710=_0x3f1710-0x0;var _0x528458=_0xcf11[_0x3f1710];return _0x528458;};'use strict';var _=require(_0x1cf1('0x0'));var util=require('util');function rewrite(_0x1b22ac,_0x558a25){var _0x5ccec6=this;return _0x1b22ac[_0x1cf1('0x1')]['Interval']['findAll']({'raw':!![]})['then'](function(_0x5b1029){_0x5ccec6[_0x1cf1('0x2')]=_0x5b1029;return _0x1b22ac[_0x1cf1('0x1')]['VoiceExtension'][_0x1cf1('0x3')]({'where':{'IntervalId':_0x558a25['IntervalId']},'raw':!![]});})['then'](function(_0x5b30a0){return _0x1b22ac[_0x1cf1('0x1')]['VoiceExtension'][_0x1cf1('0x3')]({'where':{'exten':{'$in':_[_0x1cf1('0x4')](_[_0x1cf1('0x5')](_0x5b30a0,_0x1cf1('0x6')))}},'order':[{'raw':_0x1cf1('0x7')}],'raw':!![]});})[_0x1cf1('0x8')](function(_0x180d3e){var _0x41c640=_['filter'](_0x180d3e,{'priority':'1'});var _0xbdadb6=_[_0x1cf1('0x9')](_0x180d3e,{'isApp':0x1});var _0x5067fa=_['groupBy'](_0xbdadb6,_0x1cf1('0x6'));var _0x465b63=[_0x1cf1('0xa'),_0x1cf1('0xb')];var _0x5b4d6a=[];var _0x86918e=[];for(var _0x3d1e62 in _0x5067fa){if(_0x5067fa[_0x1cf1('0xc')](_0x3d1e62)){_0x5ccec6[_0x1cf1('0xd')]=0x2;_0x5ccec6['extensions']=[];_0x5ccec6[_0x1cf1('0xe')]=_[_0x1cf1('0xf')](_0x41c640,{'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')]});_0x5ccec6[_0x1cf1('0x10')][_0x1cf1('0x11')]({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':_0x1cf1('0x13'),'appdata':util[_0x1cf1('0x14')](_0x1cf1('0x15'),_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')]),'context':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x16')],'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'priority':_0x5ccec6['priority']++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0]['VoiceExtensionId']});if(_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')]===_0x1cf1('0x17')){_0x5ccec6[_0x1cf1('0x10')][_0x1cf1('0x11')]({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':_0x1cf1('0x13'),'appdata':_0x1cf1('0x18')+_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')],'context':_0x5067fa[_0x3d1e62][0x0]['context'],'exten':_0x5067fa[_0x3d1e62][0x0]['exten'],'priority':_0x5ccec6[_0x1cf1('0xd')]++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0]['VoiceExtensionId']});}else if(_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')]===_0x1cf1('0x1a')){if(_0x5ccec6[_0x1cf1('0xe')]){_0x5ccec6['extensions'][_0x1cf1('0x11')]({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':'Set','appdata':_0x1cf1('0x1b')+(_0x5ccec6[_0x1cf1('0xe')]['cutdigits']?_0x1cf1('0x1c')+_0x5ccec6[_0x1cf1('0xe')]['cutdigits']+'}':_0x1cf1('0x1d')),'context':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x16')],'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'priority':_0x5ccec6['priority']++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')]});}_0x5ccec6[_0x1cf1('0x10')]['push']({'type':_0x5067fa[_0x3d1e62][0x0]['type'],'app':_0x1cf1('0x13'),'appdata':_0x1cf1('0x18')+_0x5067fa[_0x3d1e62][0x0]['VoiceExtensionId'],'context':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x16')],'exten':_0x5067fa[_0x3d1e62][0x0]['exten'],'priority':_0x5ccec6[_0x1cf1('0xd')]++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')]});var _0x47e256=_0x5ccec6[_0x1cf1('0xd')]++;_0x5ccec6[_0x1cf1('0x10')]['push']({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x47e256+0x2)+_0x1cf1('0x1e')+(_0x47e256+0x1)+')','context':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x16')],'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'priority':_0x47e256,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0]['VoiceExtensionId']});if(_0x5ccec6[_0x1cf1('0xe')]){_0x5ccec6['extensions'][_0x1cf1('0x11')]({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':_0x1cf1('0x13'),'appdata':_0x5ccec6[_0x1cf1('0xe')][_0x1cf1('0x1f')]?'CDR(prefix)=${EXTEN:0:'+_0x5ccec6['extension'][_0x1cf1('0x1f')]+'}':_0x1cf1('0x20'),'context':_0x5067fa[_0x3d1e62][0x0]['context'],'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'priority':_0x5ccec6[_0x1cf1('0xd')]++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')]});}_0x5ccec6[_0x1cf1('0x10')][_0x1cf1('0x11')]({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':_0x1cf1('0x13'),'appdata':_0x1cf1('0x21')+_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')],'context':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x16')],'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'priority':_0x5ccec6[_0x1cf1('0xd')]++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0]['VoiceExtensionId']});if(_0x5ccec6[_0x1cf1('0xe')]&&_0x5ccec6[_0x1cf1('0xe')][_0x1cf1('0xc')](_0x1cf1('0x22'))&&_0x5ccec6[_0x1cf1('0xe')][_0x1cf1('0x22')]!=='none'){_0x5ccec6['extensions'][_0x1cf1('0x11')]({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':_0x1cf1('0x13'),'appdata':_0x1cf1('0x23'),'context':_0x5067fa[_0x3d1e62][0x0]['context'],'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'priority':_0x5ccec6['priority']++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0]['VoiceExtensionId']});_0x5ccec6[_0x1cf1('0x10')][_0x1cf1('0x11')]({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':_0x1cf1('0x13'),'appdata':_0x1cf1('0x24')+_0x5ccec6[_0x1cf1('0xe')][_0x1cf1('0x22')]||'wav','context':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x16')],'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'priority':_0x5ccec6[_0x1cf1('0xd')]++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')]});}}_0x5ccec6[_0x1cf1('0x10')]['push']({'type':_0x5067fa[_0x3d1e62][0x0]['type'],'app':_0x1cf1('0x13'),'appdata':_0x1cf1('0x25'),'context':_0x5067fa[_0x3d1e62][0x0]['context'],'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'priority':_0x5ccec6[_0x1cf1('0xd')]++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')]});_0x5ccec6[_0x1cf1('0x10')]['push']({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':_0x1cf1('0x13'),'appdata':_0x1cf1('0x26'),'context':_0x5067fa[_0x3d1e62][0x0]['context'],'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'priority':_0x5ccec6[_0x1cf1('0xd')]++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')]});_0x5ccec6[_0x1cf1('0x10')][_0x1cf1('0x11')]({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':_0x1cf1('0x13'),'appdata':_0x1cf1('0x27'),'context':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x16')],'exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'priority':_0x5ccec6[_0x1cf1('0xd')]++,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')]});for(var _0x8bd793=0x0,_0x244c26=0x0;_0x8bd793<_0x5067fa[_0x3d1e62][_0x1cf1('0x28')];_0x8bd793+=0x1,_0x244c26=0x0){var _0x53895e=_0x5067fa[_0x3d1e62][_0x8bd793];if(_0x53895e[_0x1cf1('0x12')]){_0x53895e['type']=_0x53895e[_0x1cf1('0x12')]['toLowerCase']();}var _0x4fd0ef=[];var _0x1cd58e=[];delete _0x53895e['id'];delete _0x53895e[_0x1cf1('0x29')];delete _0x53895e[_0x1cf1('0x2a')];var _0x365a3e=_0x53895e['interval']!==_0x1cf1('0x2b')?[_0x53895e[_0x1cf1('0x2c')]]:_0x53895e[_0x1cf1('0x2d')]?_[_0x1cf1('0x5')](_[_0x1cf1('0x9')](_0x5ccec6[_0x1cf1('0x2')],{'IntervalId':_0x53895e['IntervalId']}),_0x1cf1('0x2c')):[];if(_0x53895e['hasOwnProperty']('tag')){if(_0x53895e[_0x1cf1('0x2e')]&&_0x53895e[_0x1cf1('0x2e')]!=='--'){_0x4fd0ef[_0x1cf1('0x11')]({'type':_0x53895e[_0x1cf1('0x12')],'app':'Set','appdata':_0x1cf1('0x2f')+_0x53895e['tag'],'context':_0x53895e['context'],'exten':_0x53895e['exten'],'priority':_0x365a3e[_0x1cf1('0x28')]+_0x5ccec6[_0x1cf1('0xd')]+_0x244c26++,'VoiceExtensionId':_0x53895e[_0x1cf1('0x19')]});}}if(_0x53895e[_0x1cf1('0x12')]===_0x1cf1('0x1a')&&_0x53895e[_0x1cf1('0xc')]('callerID')){if(_0x53895e[_0x1cf1('0x30')]){_0x4fd0ef[_0x1cf1('0x11')]({'type':_0x53895e[_0x1cf1('0x12')],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x53895e[_0x1cf1('0x30')]+')','context':_0x53895e['context'],'exten':_0x53895e[_0x1cf1('0x6')],'priority':_0x365a3e[_0x1cf1('0x28')]+_0x5ccec6['priority']+_0x244c26++,'VoiceExtensionId':_0x53895e[_0x1cf1('0x19')]});}else{_0x4fd0ef[_0x1cf1('0x11')]({'type':_0x53895e['type'],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x53895e[_0x1cf1('0x16')],'exten':_0x53895e[_0x1cf1('0x6')],'priority':_0x365a3e[_0x1cf1('0x28')]+_0x5ccec6[_0x1cf1('0xd')]+_0x244c26++,'VoiceExtensionId':_0x53895e[_0x1cf1('0x19')]});}}if(_0x53895e[_0x1cf1('0xc')]('answer')){if(_0x465b63[_0x1cf1('0x31')](_0x53895e[_0x1cf1('0x32')]['toLowerCase']())>=0x0&&_0x53895e[_0x1cf1('0x33')]!==_0x1cf1('0x34')){if(_0x53895e[_0x1cf1('0x35')]){_0x4fd0ef[_0x1cf1('0x11')]({'type':_0x53895e['type'],'app':_0x1cf1('0x36'),'appdata':_0x1cf1('0x37'),'context':_0x53895e['context'],'exten':_0x53895e['exten'],'priority':_0x365a3e[_0x1cf1('0x28')]+_0x5ccec6[_0x1cf1('0xd')]+_0x244c26++,'VoiceExtensionId':_0x53895e[_0x1cf1('0x19')]});_0x4fd0ef['push']({'type':_0x53895e['type'],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x53895e[_0x1cf1('0x16')],'exten':_0x53895e[_0x1cf1('0x6')],'priority':_0x365a3e[_0x1cf1('0x28')]+_0x5ccec6[_0x1cf1('0xd')]+_0x244c26++,'VoiceExtensionId':_0x53895e[_0x1cf1('0x19')]});}else{_0x4fd0ef[_0x1cf1('0x11')]({'type':_0x53895e[_0x1cf1('0x12')],'app':_0x1cf1('0x36'),'appdata':_0x1cf1('0x38'),'context':_0x53895e[_0x1cf1('0x16')],'exten':_0x53895e[_0x1cf1('0x6')],'priority':_0x365a3e[_0x1cf1('0x28')]+_0x5ccec6[_0x1cf1('0xd')]+_0x244c26++,'VoiceExtensionId':_0x53895e[_0x1cf1('0x19')]});_0x4fd0ef[_0x1cf1('0x11')]({'type':_0x53895e[_0x1cf1('0x12')],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x53895e[_0x1cf1('0x16')],'exten':_0x53895e[_0x1cf1('0x6')],'priority':_0x365a3e[_0x1cf1('0x28')]+_0x5ccec6[_0x1cf1('0xd')]+_0x244c26++,'VoiceExtensionId':_0x53895e[_0x1cf1('0x19')]});}}}for(var _0x8e7cdd=0x0;_0x8e7cdd<_0x365a3e['length'];_0x8e7cdd+=0x1){var _0x55e480=_0x5ccec6[_0x1cf1('0xd')]+_0x365a3e[_0x1cf1('0x28')];var _0x577a45=_0x8e7cdd===_0x365a3e[_0x1cf1('0x28')]-0x1?_0x5ccec6['priority']+_0x4fd0ef['length']+_0x1cd58e[_0x1cf1('0x28')]+0x2:_0x5ccec6[_0x1cf1('0xd')]+_0x8e7cdd+0x1;_0x4fd0ef['splice'](_0x8e7cdd,0x0,{'type':_0x53895e[_0x1cf1('0x12')],'app':_0x1cf1('0x39'),'appdata':_0x365a3e[_0x8e7cdd]+'?'+_0x53895e[_0x1cf1('0x16')]+',${EXTEN},'+_0x55e480+':'+_0x53895e[_0x1cf1('0x16')]+_0x1cf1('0x3a')+_0x577a45,'exten':_0x53895e['exten'],'context':_0x53895e[_0x1cf1('0x16')],'priority':_0x5ccec6[_0x1cf1('0xd')]+_0x8e7cdd,'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')]});}_0x53895e[_0x1cf1('0xd')]=_0x4fd0ef['length']?_[_0x1cf1('0x3b')](_0x4fd0ef)[_0x1cf1('0xd')]+0x1:_0x5ccec6[_0x1cf1('0xd')];_0x5ccec6[_0x1cf1('0xd')]=(_0x1cd58e[_0x1cf1('0x28')]?_[_0x1cf1('0x3b')](_0x1cd58e)[_0x1cf1('0xd')]:_0x53895e[_0x1cf1('0xd')])+0x1;_0x5ccec6[_0x1cf1('0x10')]=_[_0x1cf1('0x3c')](_0x5ccec6['extensions'],_0x4fd0ef,[_0x53895e],_0x1cd58e);}_0x5ccec6[_0x1cf1('0x10')][_0x1cf1('0x11')]({'type':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x12')],'app':'Hangup','exten':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x6')],'context':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x16')],'priority':_0x5ccec6[_0x1cf1('0xd')],'VoiceExtensionId':_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')]});_0x5b4d6a['push'](_0x5067fa[_0x3d1e62][0x0][_0x1cf1('0x19')]);_0x86918e=_[_0x1cf1('0x3c')](_0x86918e,_0x5ccec6[_0x1cf1('0x10')]);}}return _0x1b22ac[_0x1cf1('0x3d')](function(_0x5ced72){return _0x1b22ac[_0x1cf1('0x1')]['VoiceExtension'][_0x1cf1('0x3e')]({'where':{'VoiceExtensionId':{'$in':_0x5b4d6a}},'transaction':_0x5ced72})[_0x1cf1('0x8')](function(_0x215f86){return _0x1b22ac[_0x1cf1('0x1')][_0x1cf1('0x3f')][_0x1cf1('0x40')](_[_0x1cf1('0x41')](_0x86918e,'priority'),{'transaction':_0x5ced72});});});})[_0x1cf1('0x42')](function(_0x1fb9d1){console[_0x1cf1('0x43')](_0x1fb9d1);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0x4770=['inbound','push','Set','CDR(routeid)=','VoiceExtensionId','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','IntervalId','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','appType','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1',',${EXTEN},','last','concat','Hangup','transaction','destroy','sortBy','catch','error','rewrite','models','Interval','then','intervals','VoiceExtension','findAll','map','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','priority','extension','exten','extensions','type','context'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x4770,0x1d1));var _0x0477=function(_0x1fa4d9,_0x8e174a){_0x1fa4d9=_0x1fa4d9-0x0;var _0x34de1c=_0x4770[_0x1fa4d9];return _0x34de1c;};'use strict';var _=require('lodash');var util=require('util');function rewrite(_0x26e57f,_0x4edcdd){var _0x72bb1f=this;return _0x26e57f[_0x0477('0x0')][_0x0477('0x1')]['findAll']({'raw':!![]})[_0x0477('0x2')](function(_0x3a9a1d){_0x72bb1f[_0x0477('0x3')]=_0x3a9a1d;return _0x26e57f[_0x0477('0x0')][_0x0477('0x4')][_0x0477('0x5')]({'where':{'IntervalId':_0x4edcdd['IntervalId']},'raw':!![]});})[_0x0477('0x2')](function(_0x3a14f0){return _0x26e57f['models'][_0x0477('0x4')][_0x0477('0x5')]({'where':{'exten':{'$in':_['uniq'](_[_0x0477('0x6')](_0x3a14f0,'exten'))}},'order':[{'raw':_0x0477('0x7')}],'raw':!![]});})['then'](function(_0x306d87){var _0x5b0b61=_['filter'](_0x306d87,{'priority':'1'});var _0x9fcf47=_[_0x0477('0x8')](_0x306d87,{'isApp':0x1});var _0x1f7a0f=_[_0x0477('0x9')](_0x9fcf47,'exten');var _0x46f7eb=[_0x0477('0xa'),_0x0477('0xb')];var _0x228126=[];var _0x5b2e38=[];for(var _0x3c1a47 in _0x1f7a0f){if(_0x1f7a0f['hasOwnProperty'](_0x3c1a47)){_0x72bb1f[_0x0477('0xc')]=0x2;_0x72bb1f['extensions']=[];_0x72bb1f[_0x0477('0xd')]=_['find'](_0x5b0b61,{'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')]});_0x72bb1f[_0x0477('0xf')]['push']({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':'Set','appdata':util['format']('CDR(type)=%s',_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')]),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f['priority']++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0]['VoiceExtensionId']});if(_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')]===_0x0477('0x12')){_0x72bb1f['extensions'][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0]['type'],'app':_0x0477('0x14'),'appdata':_0x0477('0x15')+_0x1f7a0f[_0x3c1a47][0x0]['VoiceExtensionId'],'context':_0x1f7a0f[_0x3c1a47][0x0]['context'],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});}else if(_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')]===_0x0477('0x17')){if(_0x72bb1f[_0x0477('0xd')]){_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x18')+(_0x72bb1f[_0x0477('0xd')][_0x0477('0x19')]?_0x0477('0x1a')+_0x72bb1f[_0x0477('0xd')][_0x0477('0x19')]+'}':_0x0477('0x1b')),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0]['VoiceExtensionId']});}_0x72bb1f['extensions'][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x15')+_0x1f7a0f[_0x3c1a47][0x0]['VoiceExtensionId'],'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x72bb1f['priority']++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});var _0x221052=_0x72bb1f[_0x0477('0xc')]++;_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x1c'),'appdata':_0x0477('0x1d')+(_0x221052+0x2)+'):Goto('+(_0x221052+0x1)+')','context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x221052,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});if(_0x72bb1f[_0x0477('0xd')]){_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':'Set','appdata':_0x72bb1f['extension'][_0x0477('0x19')]?_0x0477('0x1e')+_0x72bb1f[_0x0477('0xd')][_0x0477('0x19')]+'}':_0x0477('0x1f'),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f['priority']++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0]['VoiceExtensionId']});}_0x72bb1f['extensions'][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':'outboundrouteid='+_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')],'context':_0x1f7a0f[_0x3c1a47][0x0]['context'],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});if(_0x72bb1f[_0x0477('0xd')]&&_0x72bb1f[_0x0477('0xd')][_0x0477('0x20')](_0x0477('0x21'))&&_0x72bb1f['extension'][_0x0477('0x21')]!==_0x0477('0x22')){_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x23'),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x24')+_0x72bb1f[_0x0477('0xd')][_0x0477('0x21')]||_0x0477('0x25'),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});}}_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x26'),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0]['type'],'app':_0x0477('0x14'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1f7a0f[_0x3c1a47][0x0]['context'],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':'Set','appdata':_0x0477('0x27'),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});for(var _0x3e94b1=0x0,_0x2712fb=0x0;_0x3e94b1<_0x1f7a0f[_0x3c1a47][_0x0477('0x28')];_0x3e94b1+=0x1,_0x2712fb=0x0){var _0x297157=_0x1f7a0f[_0x3c1a47][_0x3e94b1];if(_0x297157[_0x0477('0x10')]){_0x297157[_0x0477('0x10')]=_0x297157[_0x0477('0x10')][_0x0477('0x29')]();}var _0x132a35=[];var _0x23e100=[];delete _0x297157['id'];delete _0x297157[_0x0477('0x2a')];delete _0x297157[_0x0477('0x2b')];var _0x557cf2=_0x297157[_0x0477('0x2c')]!==_0x0477('0x2d')?[_0x297157[_0x0477('0x2c')]]:_0x297157[_0x0477('0x2e')]?_[_0x0477('0x6')](_[_0x0477('0x8')](_0x72bb1f[_0x0477('0x3')],{'IntervalId':_0x297157[_0x0477('0x2e')]}),_0x0477('0x2c')):[];if(_0x297157[_0x0477('0x20')](_0x0477('0x2f'))){if(_0x297157[_0x0477('0x2f')]&&_0x297157[_0x0477('0x2f')]!=='--'){_0x132a35['push']({'type':_0x297157[_0x0477('0x10')],'app':'Set','appdata':_0x0477('0x30')+_0x297157['tag'],'context':_0x297157[_0x0477('0x11')],'exten':_0x297157['exten'],'priority':_0x557cf2['length']+_0x72bb1f[_0x0477('0xc')]+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});}}if(_0x297157[_0x0477('0x10')]===_0x0477('0x17')&&_0x297157[_0x0477('0x20')]('callerID')){if(_0x297157[_0x0477('0x31')]){_0x132a35[_0x0477('0x13')]({'type':_0x297157[_0x0477('0x10')],'app':_0x0477('0x1c'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x297157[_0x0477('0x31')]+')','context':_0x297157['context'],'exten':_0x297157['exten'],'priority':_0x557cf2['length']+_0x72bb1f['priority']+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});}else{_0x132a35[_0x0477('0x13')]({'type':_0x297157[_0x0477('0x10')],'app':'ExecIf','appdata':_0x0477('0x32'),'context':_0x297157[_0x0477('0x11')],'exten':_0x297157[_0x0477('0xe')],'priority':_0x557cf2[_0x0477('0x28')]+_0x72bb1f['priority']+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});}}if(_0x297157[_0x0477('0x20')](_0x0477('0x33'))){if(_0x46f7eb[_0x0477('0x34')](_0x297157[_0x0477('0x35')]['toLowerCase']())>=0x0&&_0x297157[_0x0477('0x36')]!==_0x0477('0x37')){if(_0x297157[_0x0477('0x33')]){_0x132a35[_0x0477('0x13')]({'type':_0x297157[_0x0477('0x10')],'app':_0x0477('0x1c'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x297157[_0x0477('0x11')],'exten':_0x297157[_0x0477('0xe')],'priority':_0x557cf2[_0x0477('0x28')]+_0x72bb1f[_0x0477('0xc')]+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});_0x132a35[_0x0477('0x13')]({'type':_0x297157[_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x38'),'context':_0x297157[_0x0477('0x11')],'exten':_0x297157[_0x0477('0xe')],'priority':_0x557cf2[_0x0477('0x28')]+_0x72bb1f[_0x0477('0xc')]+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});}else{_0x132a35['push']({'type':_0x297157['type'],'app':_0x0477('0x1c'),'appdata':_0x0477('0x39'),'context':_0x297157[_0x0477('0x11')],'exten':_0x297157[_0x0477('0xe')],'priority':_0x557cf2[_0x0477('0x28')]+_0x72bb1f[_0x0477('0xc')]+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});_0x132a35[_0x0477('0x13')]({'type':_0x297157[_0x0477('0x10')],'app':'Set','appdata':_0x0477('0x3a'),'context':_0x297157[_0x0477('0x11')],'exten':_0x297157[_0x0477('0xe')],'priority':_0x557cf2[_0x0477('0x28')]+_0x72bb1f[_0x0477('0xc')]+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});}}}for(var _0x4562a2=0x0;_0x4562a2<_0x557cf2[_0x0477('0x28')];_0x4562a2+=0x1){var _0x44831e=_0x72bb1f[_0x0477('0xc')]+_0x557cf2[_0x0477('0x28')];var _0x45f8f6=_0x4562a2===_0x557cf2[_0x0477('0x28')]-0x1?_0x72bb1f[_0x0477('0xc')]+_0x132a35[_0x0477('0x28')]+_0x23e100[_0x0477('0x28')]+0x2:_0x72bb1f['priority']+_0x4562a2+0x1;_0x132a35['splice'](_0x4562a2,0x0,{'type':_0x297157['type'],'app':'GotoIfTime','appdata':_0x557cf2[_0x4562a2]+'?'+_0x297157[_0x0477('0x11')]+',${EXTEN},'+_0x44831e+':'+_0x297157[_0x0477('0x11')]+_0x0477('0x3b')+_0x45f8f6,'exten':_0x297157['exten'],'context':_0x297157[_0x0477('0x11')],'priority':_0x72bb1f[_0x0477('0xc')]+_0x4562a2,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});}_0x297157[_0x0477('0xc')]=_0x132a35[_0x0477('0x28')]?_[_0x0477('0x3c')](_0x132a35)[_0x0477('0xc')]+0x1:_0x72bb1f['priority'];_0x72bb1f[_0x0477('0xc')]=(_0x23e100['length']?_['last'](_0x23e100)['priority']:_0x297157[_0x0477('0xc')])+0x1;_0x72bb1f[_0x0477('0xf')]=_[_0x0477('0x3d')](_0x72bb1f['extensions'],_0x132a35,[_0x297157],_0x23e100);}_0x72bb1f['extensions'][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x3e'),'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'context':_0x1f7a0f[_0x3c1a47][0x0]['context'],'priority':_0x72bb1f[_0x0477('0xc')],'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});_0x228126[_0x0477('0x13')](_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]);_0x5b2e38=_[_0x0477('0x3d')](_0x5b2e38,_0x72bb1f[_0x0477('0xf')]);}}return _0x26e57f[_0x0477('0x3f')](function(_0x39be9c){return _0x26e57f[_0x0477('0x0')][_0x0477('0x4')][_0x0477('0x40')]({'where':{'VoiceExtensionId':{'$in':_0x228126}},'transaction':_0x39be9c})[_0x0477('0x2')](function(_0x134b07){return _0x26e57f[_0x0477('0x0')][_0x0477('0x4')]['bulkCreate'](_[_0x0477('0x41')](_0x5b2e38,_0x0477('0xc')),{'transaction':_0x39be9c});});});})[_0x0477('0x42')](function(_0xedeaef){console[_0x0477('0x43')](_0xedeaef);});}exports[_0x0477('0x44')]=rewrite;
\ No newline at end of file
index e421077..eb42620 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65c6=['id\x20IN\x20?','str','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','\x20=\x20?','cm_hopper_black','ListId\x20=\x20?','VoiceQueue','findAll','Lists','get','dialCheckDuplicateType','always','sequelize','query','VoiceQueueId','onlyIfOpen','outbound','CmList','BlackLists','all','Campaign','CampaignId','cmContact,\x20%s,\x20%s','emit','contact:csv_','resolve','Unable\x20to\x20delete\x20temp\x20file:','SIGINT','info','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','Error\x20executing\x20contact\x20csv\x20import:','bluebird','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','redis','defaults','localhost','register','undefined','argv','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20socket_timestamp\x20parameter!','error','contact','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','ListId','CompanyId','find','duplicate','CmContact','create','then','push','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','inspect','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','insert'];(function(_0x22ab0c,_0x3f3645){var _0x614230=function(_0x563f4f){while(--_0x563f4f){_0x22ab0c['push'](_0x22ab0c['shift']());}};_0x614230(++_0x3f3645);}(_0x65c6,0xed));var _0x665c=function(_0x2bd6f3,_0x40d5f1){_0x2bd6f3=_0x2bd6f3-0x0;var _0x2a0bc3=_0x65c6[_0x2bd6f3];return _0x2a0bc3;};'use strict';var BPromise=require(_0x665c('0x0'));var util=require('util');var _=require(_0x665c('0x1'));var fs=require('fs');var squel=require(_0x665c('0x2'));var Papa=require(_0x665c('0x3'));var Redis=require(_0x665c('0x4'));var db=require(_0x665c('0x5'))['db'];var config=require(_0x665c('0x6'));var logger=require(_0x665c('0x7'))('api');config[_0x665c('0x8')]=_[_0x665c('0x9')](config[_0x665c('0x8')],{'host':_0x665c('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('../../../api/cmContact/cmContact.socket')[_0x665c('0xb')](socket);try{if(!process['argv'][0x2]||process['argv'][0x2]===_0x665c('0xc')||process[_0x665c('0xd')][0x2]===_0x665c('0xe')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x665c('0xd')][0x2];if(!process['argv'][0x3]||process[_0x665c('0xd')][0x3]===_0x665c('0xc')||process[_0x665c('0xd')][0x3]===_0x665c('0xe')||!process[_0x665c('0xd')][0x4]||process['argv'][0x4]===_0x665c('0xc')||process[_0x665c('0xd')][0x4]==='null'){throw new Error(_0x665c('0xf'));}var FIELDS=_[_0x665c('0x10')](process[_0x665c('0xd')][0x3]['split'](','),process[_0x665c('0xd')][0x4][_0x665c('0x11')](','));if(!process[_0x665c('0xd')][0x5]||process[_0x665c('0xd')][0x5]===_0x665c('0xc')||process[_0x665c('0xd')][0x5]===_0x665c('0xe')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process['argv'][0x5];var COMPANYID=process['argv'][0x6]&&process['argv'][0x6]!==_0x665c('0xc')&&process[_0x665c('0xd')][0x6]!==_0x665c('0xe')?process['argv'][0x6]:null;var DUPLICATES=process[_0x665c('0xd')][0x7]&&process[_0x665c('0xd')][0x7]!==_0x665c('0xc')&&process['argv'][0x7]!==_0x665c('0xe')?process['argv'][0x7]:null;if(!process['argv'][0x8]||process['argv'][0x8]===_0x665c('0xc')||process[_0x665c('0xd')][0x8]===_0x665c('0xe')){throw new Error(_0x665c('0x12'));}var SOCKET_TIMESTAMP=process[_0x665c('0xd')][0x8];}catch(_0x1835c7){logger[_0x665c('0x13')](_0x1835c7);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(_0x25e04c,_0x469ca0,_0x40f80e,_0x4cd17b){var _0xd33265={'message':_0x469ca0};_0xd33265[_0x25e04c]=!![];if(_0x40f80e){_0xd33265[_0x665c('0x14')]=_0x40f80e;}if(_0x4cd17b){_0xd33265['index']=_0x4cd17b;}return _0xd33265;}function isEmail(_0x9fb1e6){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'](_0x9fb1e6);}function checkRow(_0x332fac,_0x4eb1a6,_0x59ed2f){return new BPromise(function(_0x3cecc3,_0x2f465c){if(_['isNil'](_0x332fac)){return _0x2f465c(handleCheckRowError(_0x665c('0x13'),_0x665c('0x15'),null,_0x59ed2f));}if(_0x332fac[_0x665c('0x16')]&&_0x332fac[_0x665c('0x16')][_0x665c('0x17')]){var _0x1208ed=_[_0x665c('0x18')](_0x332fac[_0x665c('0x16')],_0x665c('0x19'))['join'](';');return _0x2f465c(handleCheckRowError(_0x665c('0x13'),_0x1208ed,null,_0x59ed2f));}var _0x402f7c={};for(var _0x5d9838 in FIELDS){if(FIELDS[_0x665c('0x1a')](_0x5d9838)&&FIELDS[_0x5d9838]){_0x402f7c[_0x5d9838]=_0x332fac[_0x665c('0x1b')][0x0][FIELDS[_0x5d9838]]||_0x332fac[_0x665c('0x1b')][0x0]['\ufeff'+FIELDS[_0x5d9838]];}}if(!_0x402f7c[_0x665c('0x1c')]){return _0x2f465c(handleCheckRowError(_0x665c('0x13'),_0x665c('0x1d'),null,_0x59ed2f));}if(!_0x402f7c[_0x665c('0x1e')]){return _0x2f465c(handleCheckRowError(_0x665c('0x13'),_0x665c('0x1f'),null,_0x59ed2f));}if(_0x402f7c[_0x665c('0x20')]){var _0x51ef9e=moment(_0x402f7c[_0x665c('0x20')],_0x665c('0x21'));if(!_0x51ef9e[_0x665c('0x22')]()){return _0x2f465c(handleCheckRowError(_0x665c('0x13'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x59ed2f));}}if(_0x402f7c[_0x665c('0x23')]){if(!isEmail(_0x402f7c[_0x665c('0x23')])){return _0x2f465c(handleCheckRowError(_0x665c('0x13'),'email\x20format\x20is\x20not\x20valid!',null,_0x59ed2f));}}_0x402f7c[_0x665c('0x24')]=LISTID;_0x402f7c[_0x665c('0x25')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x4eb1a6){var _0x4a80c2={};for(var _0xe33e92=0x0,_0x32d47c=DUPLICATES[_0x665c('0x17')];_0xe33e92<_0x32d47c;_0xe33e92+=0x1){_0x4a80c2[DUPLICATES[_0xe33e92]]=_0x402f7c[DUPLICATES[_0xe33e92]];}var _0x2eed3c=_[_0x665c('0x26')](_0x4eb1a6,_0x4a80c2);if(_0x2eed3c){return _0x2f465c(handleCheckRowError(_0x665c('0x27'),'Duplicate\x20Contact',_0x2eed3c,_0x59ed2f));}}return db[_0x665c('0x28')][_0x665c('0x29')](_0x402f7c,{'raw':!![],'hooks':![],'fields':_['keys'](_0x402f7c)})[_0x665c('0x2a')](function(_0x1f3a76){if(DUPLICATES&&DUPLICATES['length']&&_0x4eb1a6){_0x4eb1a6[_0x665c('0x2b')](_['pick'](_0x402f7c,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x1f3a76['id'];return _0x3cecc3();})[_0x665c('0x2c')](function(_0x2d5eb5){return _0x2f465c(handleCheckRowError(_0x665c('0x13'),_0x665c('0x2d')+(_0x2d5eb5['message']||JSON[_0x665c('0x2e')](_0x2d5eb5)),null,_0x59ed2f));});});}function checkHopper(){function _0x5e82b6(){return function(_0x3e1c0b){logger[_0x665c('0x13')](_0x665c('0x2f'),'checkHopper',util[_0x665c('0x30')](_0x3e1c0b,{'showHidden':![],'depth':null}));};}var _0xe52377=function(_0x318a31,_0xd41054){var _0x666e79=squel['insert']()[_0x665c('0x31')](_0x665c('0x32'))[_0x665c('0x33')](['phone',_0x665c('0x34'),_0x665c('0x35'),_0x665c('0x24'),_0xd41054,_0x665c('0x36'),_0x665c('0x37')],squel[_0x665c('0x38')]()['field'](_0x665c('0x1e'),_0x665c('0x1e'))[_0x665c('0x39')](_0x665c('0x3a'),_0x665c('0x34'))[_0x665c('0x39')]('id',_0x665c('0x35'))[_0x665c('0x39')](LISTID['toString'](),_0x665c('0x24'))[_0x665c('0x39')](_0x318a31['id'][_0x665c('0x3b')](),_0xd41054)[_0x665c('0x39')](_0x665c('0x3a'),_0x665c('0x36'))[_0x665c('0x39')](_0x665c('0x3a'),_0x665c('0x37'))[_0x665c('0x3c')](_0x665c('0x3d'))[_0x665c('0x3e')](_0x665c('0x3f'))[_0x665c('0x3e')]('ListId\x20=\x20?',LISTID[_0x665c('0x3b')]())[_0x665c('0x3e')](_0x665c('0x40'))[_0x665c('0x3e')]('phone\x20NOT\x20IN\x20(?)',squel[_0x665c('0x38')]()[_0x665c('0x39')]('phone')[_0x665c('0x3c')](_0x665c('0x32'))[_0x665c('0x3e')](_0xd41054+'\x20=\x20?',_0x318a31['id'][_0x665c('0x3b')]())))['toString']();return _0x666e79;};var _0x3d3c43=function(_0x13c5db,_0x57bd96){var _0x54cb45=squel[_0x665c('0x41')]()['into'](_0x665c('0x32'))[_0x665c('0x33')]([_0x665c('0x1e'),_0x665c('0x34'),_0x665c('0x35'),_0x665c('0x24'),_0x57bd96,_0x665c('0x36'),_0x665c('0x37')],squel[_0x665c('0x38')]()[_0x665c('0x39')](_0x665c('0x1e'),_0x665c('0x1e'))['field']('NOW()',_0x665c('0x34'))[_0x665c('0x39')]('id',_0x665c('0x35'))[_0x665c('0x39')](LISTID[_0x665c('0x3b')](),_0x665c('0x24'))['field'](_0x13c5db['id'][_0x665c('0x3b')](),_0x57bd96)[_0x665c('0x39')](_0x665c('0x3a'),'createdAt')['field']('NOW()',_0x665c('0x37'))[_0x665c('0x3c')]('cm_contacts')['where'](_0x665c('0x3f'))[_0x665c('0x3e')]('ListId\x20=\x20?',LISTID[_0x665c('0x3b')]())[_0x665c('0x3e')](_0x665c('0x42'),squel[_0x665c('0x43')](hopperContacts))[_0x665c('0x3e')](_0x665c('0x40'))[_0x665c('0x3e')](_0x665c('0x44'),squel[_0x665c('0x38')]()[_0x665c('0x39')]('calleridnum')[_0x665c('0x3c')](_0x665c('0x45'))['where'](_0x57bd96+_0x665c('0x46'),_0x13c5db['id'][_0x665c('0x3b')]()))[_0x665c('0x3e')](_0x665c('0x44'),squel[_0x665c('0x38')]()['field'](_0x665c('0x1e'))[_0x665c('0x3c')](_0x665c('0x32'))['where'](_0x57bd96+_0x665c('0x46'),_0x13c5db['id']['toString']())))[_0x665c('0x3b')]();return _0x54cb45;};function _0x32109b(_0x1ecb6b,_0x572f6d){var _0x19dfe6=squel[_0x665c('0x41')]()[_0x665c('0x31')]('cm_hopper')[_0x665c('0x33')]([_0x665c('0x1e'),_0x665c('0x34'),_0x665c('0x35'),_0x665c('0x24'),_0x572f6d,'createdAt',_0x665c('0x37')],squel[_0x665c('0x38')]()['field']('phone',_0x665c('0x1e'))[_0x665c('0x39')](_0x665c('0x3a'),_0x665c('0x34'))[_0x665c('0x39')]('id',_0x665c('0x35'))[_0x665c('0x39')](LISTID['toString'](),_0x665c('0x24'))[_0x665c('0x39')](_0x1ecb6b['id']['toString'](),_0x572f6d)[_0x665c('0x39')](_0x665c('0x3a'),'createdAt')[_0x665c('0x39')](_0x665c('0x3a'),_0x665c('0x37'))[_0x665c('0x3c')](_0x665c('0x3d'))[_0x665c('0x3e')](_0x665c('0x3f'))[_0x665c('0x3e')]('ListId\x20=\x20?',LISTID[_0x665c('0x3b')]())[_0x665c('0x3e')]('id\x20IN\x20?',squel[_0x665c('0x43')](hopperContacts))[_0x665c('0x3e')](_0x665c('0x40')))[_0x665c('0x3b')]();return _0x19dfe6;}function _0x55162f(_0x2dbac2,_0x21d444){var _0x443659=squel[_0x665c('0x41')]()[_0x665c('0x31')](_0x665c('0x47'))[_0x665c('0x33')]([_0x665c('0x1e'),_0x665c('0x35'),'ListId',_0x21d444,'createdAt',_0x665c('0x37')],squel[_0x665c('0x38')]()[_0x665c('0x39')](_0x665c('0x1e'),'phone')[_0x665c('0x39')]('id',_0x665c('0x35'))['field'](LISTID[_0x665c('0x3b')](),_0x665c('0x24'))[_0x665c('0x39')](_0x2dbac2['id'][_0x665c('0x3b')](),_0x21d444)['field'](_0x665c('0x3a'),_0x665c('0x36'))[_0x665c('0x39')]('NOW()',_0x665c('0x37'))[_0x665c('0x3c')](_0x665c('0x3d'))['where'](_0x665c('0x3f'))[_0x665c('0x3e')](_0x665c('0x48'),LISTID[_0x665c('0x3b')]())[_0x665c('0x3e')](_0x665c('0x42'),squel['str'](hopperContacts))[_0x665c('0x3e')](_0x665c('0x40')))[_0x665c('0x3b')]();return _0x443659;}return db[_0x665c('0x49')][_0x665c('0x4a')]({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0x665c('0x4b'),'where':{'id':LISTID}}]})[_0x665c('0x2a')](function(_0x369a7e){var _0x376e22=[];if(_0x369a7e){var _0x45d90b;for(var _0x1e344b=0x0,_0x4a4bfe;_0x1e344b<_0x369a7e['length'];_0x1e344b+=0x1){_0x4a4bfe=_0x369a7e[_0x1e344b][_0x665c('0x4c')]({'plain':!![]});switch(_0x4a4bfe[_0x665c('0x4d')]){case _0x665c('0x4e'):_0x376e22[_0x665c('0x2b')](db[_0x665c('0x4f')][_0x665c('0x50')](_0x3d3c43(_0x4a4bfe,_0x665c('0x51')))[_0x665c('0x2a')](function(){})[_0x665c('0x2c')](_0x5e82b6()));break;case _0x665c('0x52'):_0x376e22[_0x665c('0x2b')](db[_0x665c('0x4f')]['query'](_0xe52377(_0x4a4bfe,_0x665c('0x51')))[_0x665c('0x2a')](function(){})[_0x665c('0x2c')](_0x5e82b6()));break;default:_0x376e22[_0x665c('0x2b')](db[_0x665c('0x4f')]['query'](_0x32109b(_0x4a4bfe,'VoiceQueueId'))[_0x665c('0x2a')](function(){})[_0x665c('0x2c')](_0x5e82b6()));}}}return _0x376e22;})['all']()[_0x665c('0x2a')](function(){return db[_0x665c('0x49')][_0x665c('0x4a')]({'where':{'type':_0x665c('0x53')},'attributes':['id'],'include':[{'model':db[_0x665c('0x54')],'as':_0x665c('0x55'),'where':{'id':LISTID}}]})[_0x665c('0x2a')](function(_0x2b452f){var _0x47eb9b=[];if(_0x2b452f){var _0x11ffd1;for(var _0x3158ba=0x0,_0x10e4fc;_0x3158ba<_0x2b452f[_0x665c('0x17')];_0x3158ba+=0x1){_0x10e4fc=_0x2b452f[_0x3158ba][_0x665c('0x4c')]({'plain':!![]});_0x47eb9b['push'](db[_0x665c('0x4f')][_0x665c('0x50')](_0x55162f(_0x10e4fc,_0x665c('0x51')))['then'](function(){})[_0x665c('0x2c')](_0x5e82b6()));}}return _0x47eb9b;})[_0x665c('0x56')]();})['then'](function(){return db[_0x665c('0x57')]['findAll']({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x665c('0x54')],'as':_0x665c('0x4b'),'where':{'id':LISTID}}]})[_0x665c('0x2a')](function(_0x17764c){var _0x78715f=[];if(_0x17764c){for(var _0x24103c=0x0,_0x380490;_0x24103c<_0x17764c[_0x665c('0x17')];_0x24103c+=0x1){_0x380490=_0x17764c[_0x24103c][_0x665c('0x4c')]({'plain':!![]});switch(_0x380490[_0x665c('0x4d')]){case'always':_0x78715f[_0x665c('0x2b')](db['sequelize'][_0x665c('0x50')](_0x3d3c43(_0x380490,_0x665c('0x58')))['then'](function(){})[_0x665c('0x2c')](_0x5e82b6()));break;case'onlyIfOpen':_0x78715f[_0x665c('0x2b')](db[_0x665c('0x4f')][_0x665c('0x50')](_0xe52377(_0x380490,'CampaignId'))[_0x665c('0x2a')](function(){})['catch'](_0x5e82b6()));break;default:_0x78715f['push'](db[_0x665c('0x4f')][_0x665c('0x50')](_0x32109b(_0x380490,'CampaignId'))[_0x665c('0x2a')](function(){})['catch'](_0x5e82b6()));}}}return _0x78715f;})[_0x665c('0x56')]();})[_0x665c('0x2a')](function(){return db[_0x665c('0x57')][_0x665c('0x4a')]({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x665c('0x55'),'where':{'id':LISTID}}]})[_0x665c('0x2a')](function(_0x4cca59){var _0x10c201=[];if(_0x4cca59){for(var _0x4f01bc=0x0,_0x2284cc;_0x4f01bc<_0x4cca59['length'];_0x4f01bc+=0x1){_0x2284cc=_0x4cca59[_0x4f01bc][_0x665c('0x4c')]({'plain':!![]});_0x10c201[_0x665c('0x2b')](db['sequelize'][_0x665c('0x50')](_0x55162f(_0x2284cc,_0x665c('0x58')))[_0x665c('0x2a')](function(){})[_0x665c('0x2c')](_0x5e82b6()));}}return _0x10c201;})[_0x665c('0x56')]();})[_0x665c('0x2c')](function(_0x3911b4){logger[_0x665c('0x13')](_0x665c('0x59'),'generalCheckHopper',_0x3911b4[_0x665c('0x19')]);});}var processPromises=function(_0x3cccb4){return BPromise[_0x665c('0x56')](promises)[_0x665c('0x2a')](function(_0x5dfffc){})[_0x665c('0x2c')](function(_0x478f78){logger['error']('Error\x20processing\x20rows\x20block:',JSON[_0x665c('0x2e')](_0x478f78));})['finally'](function(){socket[_0x665c('0x5a')](_0x665c('0x5b')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x3cccb4){return _0x3cccb4['resume']();}});};var endCsv=function(){return BPromise[_0x665c('0x5c')]()[_0x665c('0x2a')](function(){if(hopperContacts){return checkHopper();}})[_0x665c('0x2a')](function(){socket[_0x665c('0x5a')](_0x665c('0x5b')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x3fdad0){logger['error'](_0x665c('0x5d'),JSON[_0x665c('0x2e')](_0x3fdad0));}finally{process['exit'](0x0);}});};process['on'](_0x665c('0x5e'),function(){logger[_0x665c('0x5f')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0x665c('0x5c')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x665c('0x11')](',');return db[_0x665c('0x28')][_0x665c('0x4a')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x665c('0x2a')](function(_0x109af1){var _0x3302f8=fs[_0x665c('0x60')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x665c('0x61')](_0x3302f8,{'header':!![],'skipEmptyLines':!![],'step':function(_0x149ff6,_0x1dccd3){total+=0x1;var _0x168a6b=total;promises[_0x665c('0x2b')](checkRow(_0x149ff6,_0x109af1,_0x168a6b)[_0x665c('0x2a')](function(){success+=0x1;})[_0x665c('0x2c')](function(_0x31e534){if(_0x31e534[_0x665c('0x13')]){errors+=0x1;delete _0x31e534[_0x665c('0x13')];}else if(_0x31e534[_0x665c('0x27')]){duplicates+=0x1;delete _0x31e534[_0x665c('0x27')];}rows[_0x665c('0x2b')](_0x31e534);}));if(total%0xc8===0x0){_0x1dccd3[_0x665c('0x62')]();return processPromises(_0x1dccd3);}},'complete':function(){return processPromises()[_0x665c('0x2a')](function(){logger[_0x665c('0x5f')](_0x665c('0x63'));endCsv();});},'error':function(_0x57e7be,_0x317b7b){logger[_0x665c('0x5f')]('CSV\x20parse\x20error',JSON[_0x665c('0x2e')](_0x57e7be));endCsv();}});})[_0x665c('0x2c')](function(_0x757d5a){logger[_0x665c('0x13')](_0x665c('0x64'),JSON['stringify'](_0x757d5a));});}main();
\ No newline at end of file
+var _0x1042=['Lists','get','dialCheckDuplicateType','always','sequelize','query','onlyIfOpen','VoiceQueueId','all','findAll','outbound','BlackLists','Campaign','CampaignId','generalCheckHopper','emit','contact:csv_','resume','resolve','unlinkSync','exit','SIGINT','CSV\x20import\x20process\x20stopped!','CmContact','createReadStream','parse','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','ioredis','../../../config/logger','redis','defaults','localhost','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','error','contact','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','create','then','push','pick','catch','stringify','cmContact','inspect','insert','into','cm_hopper','createdAt','select','field','NOW()','scheduledAt','ContactId','toString','updatedAt','from','cm_contacts','ListId\x20=\x20?','where','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','fromQuery','deletedAt\x20IS\x20NULL','id\x20IN\x20?','calleridnum','str','CmList'];(function(_0x5235af,_0x428a33){var _0x3469c6=function(_0x2d7e93){while(--_0x2d7e93){_0x5235af['push'](_0x5235af['shift']());}};_0x3469c6(++_0x428a33);}(_0x1042,0xf4));var _0x2104=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1042[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x2104('0x0'));var util=require(_0x2104('0x1'));var _=require(_0x2104('0x2'));var fs=require('fs');var squel=require(_0x2104('0x3'));var Papa=require('papaparse');var Redis=require(_0x2104('0x4'));var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var logger=require(_0x2104('0x5'))('api');config[_0x2104('0x6')]=_[_0x2104('0x7')](config[_0x2104('0x6')],{'host':_0x2104('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2104('0x6')]));require(_0x2104('0x9'))[_0x2104('0xa')](socket);try{if(!process[_0x2104('0xb')][0x2]||process['argv'][0x2]===_0x2104('0xc')||process['argv'][0x2]===_0x2104('0xd')){throw new Error(_0x2104('0xe'));}var FILEPATH=process[_0x2104('0xb')][0x2];if(!process['argv'][0x3]||process[_0x2104('0xb')][0x3]===_0x2104('0xc')||process['argv'][0x3]==='null'||!process[_0x2104('0xb')][0x4]||process[_0x2104('0xb')][0x4]===_0x2104('0xc')||process['argv'][0x4]==='null'){throw new Error(_0x2104('0xf'));}var FIELDS=_[_0x2104('0x10')](process['argv'][0x3][_0x2104('0x11')](','),process[_0x2104('0xb')][0x4][_0x2104('0x11')](','));if(!process['argv'][0x5]||process['argv'][0x5]===_0x2104('0xc')||process[_0x2104('0xb')][0x5]===_0x2104('0xd')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0x2104('0xb')][0x5];var COMPANYID=process[_0x2104('0xb')][0x6]&&process[_0x2104('0xb')][0x6]!=='undefined'&&process[_0x2104('0xb')][0x6]!==_0x2104('0xd')?process['argv'][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x2104('0xb')][0x7]!=='undefined'&&process[_0x2104('0xb')][0x7]!==_0x2104('0xd')?process[_0x2104('0xb')][0x7]:null;if(!process[_0x2104('0xb')][0x8]||process[_0x2104('0xb')][0x8]===_0x2104('0xc')||process[_0x2104('0xb')][0x8]===_0x2104('0xd')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0x2104('0xb')][0x8];}catch(_0x2e2dfe){logger[_0x2104('0x12')](_0x2e2dfe);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(_0x2ebe5b,_0x32966c,_0x36fda7,_0x504400){var _0x2610a9={'message':_0x32966c};_0x2610a9[_0x2ebe5b]=!![];if(_0x36fda7){_0x2610a9[_0x2104('0x13')]=_0x36fda7;}if(_0x504400){_0x2610a9['index']=_0x504400;}return _0x2610a9;}function isEmail(_0x48ecb8){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))*$/[_0x2104('0x14')](_0x48ecb8);}function checkRow(_0x319d41,_0x2da1e8,_0x12ec54){return new BPromise(function(_0x4d0504,_0x3cb5a2){if(_[_0x2104('0x15')](_0x319d41)){return _0x3cb5a2(handleCheckRowError('error',_0x2104('0x16'),null,_0x12ec54));}if(_0x319d41['errors']&&_0x319d41[_0x2104('0x17')][_0x2104('0x18')]){var _0x445c3=_[_0x2104('0x19')](_0x319d41[_0x2104('0x17')],_0x2104('0x1a'))[_0x2104('0x1b')](';');return _0x3cb5a2(handleCheckRowError(_0x2104('0x12'),_0x445c3,null,_0x12ec54));}var _0x2e9a87={};for(var _0x240063 in FIELDS){if(FIELDS[_0x2104('0x1c')](_0x240063)&&FIELDS[_0x240063]){_0x2e9a87[_0x240063]=_0x319d41[_0x2104('0x1d')][0x0][FIELDS[_0x240063]]||_0x319d41['data'][0x0]['\ufeff'+FIELDS[_0x240063]];}}if(!_0x2e9a87[_0x2104('0x1e')]){return _0x3cb5a2(handleCheckRowError('error',_0x2104('0x1f'),null,_0x12ec54));}if(!_0x2e9a87[_0x2104('0x20')]){return _0x3cb5a2(handleCheckRowError(_0x2104('0x12'),_0x2104('0x21'),null,_0x12ec54));}if(_0x2e9a87[_0x2104('0x22')]){var _0x30f9c6=moment(_0x2e9a87[_0x2104('0x22')],_0x2104('0x23'));if(!_0x30f9c6[_0x2104('0x24')]()){return _0x3cb5a2(handleCheckRowError(_0x2104('0x12'),_0x2104('0x25'),null,_0x12ec54));}}if(_0x2e9a87[_0x2104('0x26')]){if(!isEmail(_0x2e9a87[_0x2104('0x26')])){return _0x3cb5a2(handleCheckRowError(_0x2104('0x12'),_0x2104('0x27'),null,_0x12ec54));}}_0x2e9a87[_0x2104('0x28')]=LISTID;_0x2e9a87[_0x2104('0x29')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x2da1e8){var _0x49c381={};for(var _0x10a6a0=0x0,_0x33f571=DUPLICATES[_0x2104('0x18')];_0x10a6a0<_0x33f571;_0x10a6a0+=0x1){_0x49c381[DUPLICATES[_0x10a6a0]]=_0x2e9a87[DUPLICATES[_0x10a6a0]];}var _0x280950=_[_0x2104('0x2a')](_0x2da1e8,_0x49c381);if(_0x280950){return _0x3cb5a2(handleCheckRowError(_0x2104('0x2b'),_0x2104('0x2c'),_0x280950,_0x12ec54));}}return db['CmContact'][_0x2104('0x2d')](_0x2e9a87,{'raw':!![],'hooks':![],'fields':_['keys'](_0x2e9a87)})[_0x2104('0x2e')](function(_0x5e5009){if(DUPLICATES&&DUPLICATES[_0x2104('0x18')]&&_0x2da1e8){_0x2da1e8[_0x2104('0x2f')](_[_0x2104('0x30')](_0x2e9a87,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x5e5009['id'];return _0x4d0504();})[_0x2104('0x31')](function(_0x4f831e){return _0x3cb5a2(handleCheckRowError(_0x2104('0x12'),'Error\x20while\x20creating\x20contact:\x20'+(_0x4f831e['message']||JSON[_0x2104('0x32')](_0x4f831e)),null,_0x12ec54));});});}function checkHopper(){function _0x595ac5(){return function(_0x2511b8){logger[_0x2104('0x12')](_0x2104('0x33'),'checkHopper',util[_0x2104('0x34')](_0x2511b8,{'showHidden':![],'depth':null}));};}var _0x55a72c=function(_0x25073a,_0x6fa4a4){var _0x22f32a=squel[_0x2104('0x35')]()[_0x2104('0x36')](_0x2104('0x37'))['fromQuery']([_0x2104('0x20'),'scheduledAt','ContactId',_0x2104('0x28'),_0x6fa4a4,_0x2104('0x38'),'updatedAt'],squel[_0x2104('0x39')]()[_0x2104('0x3a')]('phone',_0x2104('0x20'))[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x3c'))[_0x2104('0x3a')]('id',_0x2104('0x3d'))[_0x2104('0x3a')](LISTID[_0x2104('0x3e')](),'ListId')['field'](_0x25073a['id'][_0x2104('0x3e')](),_0x6fa4a4)[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x38'))[_0x2104('0x3a')]('NOW()',_0x2104('0x3f'))[_0x2104('0x40')](_0x2104('0x41'))['where']('deletedAt\x20IS\x20NULL')['where'](_0x2104('0x42'),LISTID[_0x2104('0x3e')]())[_0x2104('0x43')](_0x2104('0x44'))[_0x2104('0x43')](_0x2104('0x45'),squel[_0x2104('0x39')]()[_0x2104('0x3a')](_0x2104('0x20'))['from'](_0x2104('0x37'))['where'](_0x6fa4a4+_0x2104('0x46'),_0x25073a['id']['toString']())))[_0x2104('0x3e')]();return _0x22f32a;};var _0x53f93e=function(_0x1e7eb4,_0x42777d){var _0x5a5d7b=squel['insert']()[_0x2104('0x36')](_0x2104('0x37'))[_0x2104('0x47')](['phone','scheduledAt',_0x2104('0x3d'),'ListId',_0x42777d,'createdAt',_0x2104('0x3f')],squel['select']()['field'](_0x2104('0x20'),_0x2104('0x20'))[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x3c'))[_0x2104('0x3a')]('id','ContactId')['field'](LISTID[_0x2104('0x3e')](),'ListId')[_0x2104('0x3a')](_0x1e7eb4['id'][_0x2104('0x3e')](),_0x42777d)[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x38'))['field'](_0x2104('0x3b'),'updatedAt')[_0x2104('0x40')]('cm_contacts')['where'](_0x2104('0x48'))[_0x2104('0x43')](_0x2104('0x42'),LISTID['toString']())[_0x2104('0x43')](_0x2104('0x49'),squel['str'](hopperContacts))[_0x2104('0x43')](_0x2104('0x44'))['where'](_0x2104('0x45'),squel[_0x2104('0x39')]()['field'](_0x2104('0x4a'))[_0x2104('0x40')]('cm_hopper_final')[_0x2104('0x43')](_0x42777d+'\x20=\x20?',_0x1e7eb4['id'][_0x2104('0x3e')]()))[_0x2104('0x43')](_0x2104('0x45'),squel[_0x2104('0x39')]()['field']('phone')[_0x2104('0x40')]('cm_hopper')['where'](_0x42777d+_0x2104('0x46'),_0x1e7eb4['id'][_0x2104('0x3e')]())))[_0x2104('0x3e')]();return _0x5a5d7b;};function _0x2671ff(_0x21130f,_0x2f945e){var _0x17d93b=squel[_0x2104('0x35')]()[_0x2104('0x36')](_0x2104('0x37'))[_0x2104('0x47')](['phone',_0x2104('0x3c'),_0x2104('0x3d'),_0x2104('0x28'),_0x2f945e,'createdAt',_0x2104('0x3f')],squel[_0x2104('0x39')]()[_0x2104('0x3a')]('phone',_0x2104('0x20'))[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x3c'))[_0x2104('0x3a')]('id','ContactId')[_0x2104('0x3a')](LISTID[_0x2104('0x3e')](),_0x2104('0x28'))[_0x2104('0x3a')](_0x21130f['id'][_0x2104('0x3e')](),_0x2f945e)[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x38'))[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x3f'))[_0x2104('0x40')](_0x2104('0x41'))['where'](_0x2104('0x48'))[_0x2104('0x43')]('ListId\x20=\x20?',LISTID[_0x2104('0x3e')]())[_0x2104('0x43')](_0x2104('0x49'),squel[_0x2104('0x4b')](hopperContacts))[_0x2104('0x43')](_0x2104('0x44')))['toString']();return _0x17d93b;}function _0x46d173(_0x447b30,_0x52485b){var _0x3b2427=squel[_0x2104('0x35')]()[_0x2104('0x36')]('cm_hopper_black')[_0x2104('0x47')]([_0x2104('0x20'),_0x2104('0x3d'),_0x2104('0x28'),_0x52485b,'createdAt',_0x2104('0x3f')],squel[_0x2104('0x39')]()[_0x2104('0x3a')](_0x2104('0x20'),_0x2104('0x20'))[_0x2104('0x3a')]('id','ContactId')['field'](LISTID[_0x2104('0x3e')](),_0x2104('0x28'))['field'](_0x447b30['id']['toString'](),_0x52485b)[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x38'))[_0x2104('0x3a')](_0x2104('0x3b'),'updatedAt')[_0x2104('0x40')](_0x2104('0x41'))[_0x2104('0x43')](_0x2104('0x48'))[_0x2104('0x43')](_0x2104('0x42'),LISTID[_0x2104('0x3e')]())[_0x2104('0x43')](_0x2104('0x49'),squel[_0x2104('0x4b')](hopperContacts))[_0x2104('0x43')](_0x2104('0x44')))[_0x2104('0x3e')]();return _0x3b2427;}return db['VoiceQueue']['findAll']({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x2104('0x4c')],'as':_0x2104('0x4d'),'where':{'id':LISTID}}]})[_0x2104('0x2e')](function(_0x5a56f7){var _0x2389cc=[];if(_0x5a56f7){var _0x5a4dd1;for(var _0x28b9ca=0x0,_0x1a70bc;_0x28b9ca<_0x5a56f7['length'];_0x28b9ca+=0x1){_0x1a70bc=_0x5a56f7[_0x28b9ca][_0x2104('0x4e')]({'plain':!![]});switch(_0x1a70bc[_0x2104('0x4f')]){case _0x2104('0x50'):_0x2389cc['push'](db[_0x2104('0x51')][_0x2104('0x52')](_0x53f93e(_0x1a70bc,'VoiceQueueId'))[_0x2104('0x2e')](function(){})[_0x2104('0x31')](_0x595ac5()));break;case _0x2104('0x53'):_0x2389cc[_0x2104('0x2f')](db[_0x2104('0x51')]['query'](_0x55a72c(_0x1a70bc,_0x2104('0x54')))[_0x2104('0x2e')](function(){})[_0x2104('0x31')](_0x595ac5()));break;default:_0x2389cc[_0x2104('0x2f')](db['sequelize'][_0x2104('0x52')](_0x2671ff(_0x1a70bc,_0x2104('0x54')))['then'](function(){})[_0x2104('0x31')](_0x595ac5()));}}}return _0x2389cc;})[_0x2104('0x55')]()['then'](function(){return db['VoiceQueue'][_0x2104('0x56')]({'where':{'type':_0x2104('0x57')},'attributes':['id'],'include':[{'model':db[_0x2104('0x4c')],'as':_0x2104('0x58'),'where':{'id':LISTID}}]})[_0x2104('0x2e')](function(_0x5c361a){var _0x355d54=[];if(_0x5c361a){var _0x603900;for(var _0x4bfd31=0x0,_0x508072;_0x4bfd31<_0x5c361a['length'];_0x4bfd31+=0x1){_0x508072=_0x5c361a[_0x4bfd31]['get']({'plain':!![]});_0x355d54['push'](db[_0x2104('0x51')]['query'](_0x46d173(_0x508072,_0x2104('0x54')))[_0x2104('0x2e')](function(){})[_0x2104('0x31')](_0x595ac5()));}}return _0x355d54;})[_0x2104('0x55')]();})[_0x2104('0x2e')](function(){return db[_0x2104('0x59')][_0x2104('0x56')]({'attributes':['id',_0x2104('0x4f')],'include':[{'model':db['CmList'],'as':_0x2104('0x4d'),'where':{'id':LISTID}}]})[_0x2104('0x2e')](function(_0x297b0b){var _0x3ad0e7=[];if(_0x297b0b){for(var _0x383893=0x0,_0x4769ad;_0x383893<_0x297b0b[_0x2104('0x18')];_0x383893+=0x1){_0x4769ad=_0x297b0b[_0x383893][_0x2104('0x4e')]({'plain':!![]});switch(_0x4769ad[_0x2104('0x4f')]){case _0x2104('0x50'):_0x3ad0e7[_0x2104('0x2f')](db['sequelize'][_0x2104('0x52')](_0x53f93e(_0x4769ad,_0x2104('0x5a')))['then'](function(){})[_0x2104('0x31')](_0x595ac5()));break;case'onlyIfOpen':_0x3ad0e7[_0x2104('0x2f')](db['sequelize']['query'](_0x55a72c(_0x4769ad,_0x2104('0x5a')))[_0x2104('0x2e')](function(){})['catch'](_0x595ac5()));break;default:_0x3ad0e7[_0x2104('0x2f')](db[_0x2104('0x51')]['query'](_0x2671ff(_0x4769ad,'CampaignId'))['then'](function(){})[_0x2104('0x31')](_0x595ac5()));}}}return _0x3ad0e7;})[_0x2104('0x55')]();})['then'](function(){return db['Campaign'][_0x2104('0x56')]({'attributes':['id'],'include':[{'model':db[_0x2104('0x4c')],'as':_0x2104('0x58'),'where':{'id':LISTID}}]})['then'](function(_0x2c8fcf){var _0x147ce5=[];if(_0x2c8fcf){for(var _0x8b09b8=0x0,_0x182b60;_0x8b09b8<_0x2c8fcf['length'];_0x8b09b8+=0x1){_0x182b60=_0x2c8fcf[_0x8b09b8][_0x2104('0x4e')]({'plain':!![]});_0x147ce5['push'](db[_0x2104('0x51')]['query'](_0x46d173(_0x182b60,'CampaignId'))[_0x2104('0x2e')](function(){})[_0x2104('0x31')](_0x595ac5()));}}return _0x147ce5;})[_0x2104('0x55')]();})['catch'](function(_0x7ec033){logger[_0x2104('0x12')]('cmContact,\x20%s,\x20%s',_0x2104('0x5b'),_0x7ec033[_0x2104('0x1a')]);});}var processPromises=function(_0x296d6e){return BPromise[_0x2104('0x55')](promises)[_0x2104('0x2e')](function(_0x4ec00c){})[_0x2104('0x31')](function(_0xd49d87){logger[_0x2104('0x12')]('Error\x20processing\x20rows\x20block:',JSON['stringify'](_0xd49d87));})['finally'](function(){socket[_0x2104('0x5c')](_0x2104('0x5d')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x296d6e){return _0x296d6e[_0x2104('0x5e')]();}});};var endCsv=function(){return BPromise[_0x2104('0x5f')]()[_0x2104('0x2e')](function(){if(hopperContacts){return checkHopper();}})[_0x2104('0x2e')](function(){socket['emit'](_0x2104('0x5d')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x2104('0x60')](FILEPATH);}catch(_0x15290e){logger['error']('Unable\x20to\x20delete\x20temp\x20file:',JSON['stringify'](_0x15290e));}finally{process[_0x2104('0x61')](0x0);}});};process['on'](_0x2104('0x62'),function(){logger['info'](_0x2104('0x63'));endCsv();});function main(){return BPromise[_0x2104('0x5f')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x2104('0x11')](',');return db[_0x2104('0x64')][_0x2104('0x56')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x2104('0x2e')](function(_0x2eea67){var _0x3a2f83=fs[_0x2104('0x65')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x2104('0x66')](_0x3a2f83,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3317fd,_0x12d7c0){total+=0x1;var _0x17d1af=total;promises[_0x2104('0x2f')](checkRow(_0x3317fd,_0x2eea67,_0x17d1af)[_0x2104('0x2e')](function(){success+=0x1;})[_0x2104('0x31')](function(_0x444097){if(_0x444097[_0x2104('0x12')]){errors+=0x1;delete _0x444097[_0x2104('0x12')];}else if(_0x444097[_0x2104('0x2b')]){duplicates+=0x1;delete _0x444097[_0x2104('0x2b')];}rows['push'](_0x444097);}));if(total%0xc8===0x0){_0x12d7c0['pause']();return processPromises(_0x12d7c0);}},'complete':function(){return processPromises()['then'](function(){logger[_0x2104('0x67')](_0x2104('0x68'));endCsv();});},'error':function(_0x3afd24,_0x9b0c83){logger[_0x2104('0x67')](_0x2104('0x69'),JSON[_0x2104('0x32')](_0x3afd24));endCsv();}});})[_0x2104('0x31')](function(_0xbf26d9){logger[_0x2104('0x12')](_0x2104('0x6a'),JSON[_0x2104('0x32')](_0xbf26d9));});}main();
\ No newline at end of file
index 64d8dd2..2cff23c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe531=['select','field','from','join','.id\x20=\x20','where','\x20=\x20','findAll','AdditionalPhones','length','push','all','then','split','isNil','CmContactHasItem','findOne','update','updated','create','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','phone','scheduledat','ContactId','ListId','createdAt','updatedAt','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.id','cm_contacts.ListId','insert','cm_hopper_black','.CmListId','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.createdAt','cm_contacts.createdAt\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','message','exit','errors','code','sequelize','query','spread','catch','campaigns.dialTimezone','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','timezones','dialTimezone','utcOffset','set','offset','info','main','stringify','send','start','binding','clone','socket_timestamp','root','server/files/tmp','.csv','includes','header','ContactItemType','name','_description','rows','data','find','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','email','dateOfBirth','YYYY-MM-DD','firstName','\x20not\x20specified','hasOwnProperty','itemTypeId','description','appendFileSync','emit','contact:import:','Abort\x20parser','SystemError','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','DROP\x20TABLE\x20','contactId','contactTypeId','orderBy','voice_queues','VoiceQueueId','campaigns','campaigns_has_cm_blacklists','CampaignId','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','util','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','../../../config/logger','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test'];(function(_0x1adea2,_0x301398){var _0x3e4b85=function(_0x1c3c68){while(--_0x1c3c68){_0x1adea2['push'](_0x1adea2['shift']());}};_0x3e4b85(++_0x301398);}(_0xe531,0x155));var _0x1e53=function(_0x8a2dae,_0x2a21a7){_0x8a2dae=_0x8a2dae-0x0;var _0x308f20=_0xe531[_0x8a2dae];return _0x308f20;};'use strict';var fs=require('fs');var path=require(_0x1e53('0x0'));var _=require(_0x1e53('0x1'));var Papa=require('papaparse');var util=require(_0x1e53('0x2'));var BPromise=require('bluebird');var moment=require(_0x1e53('0x3'));var squel=require(_0x1e53('0x4'));var Redis=require(_0x1e53('0x5'));var db=require(_0x1e53('0x6'))['db'];var config=require(_0x1e53('0x7'));var shared=require(_0x1e53('0x8'));var logger=require(_0x1e53('0x9'))('import');config[_0x1e53('0xa')]=_[_0x1e53('0xb')](config[_0x1e53('0xa')],{'host':_0x1e53('0xc'),'port':0x18eb});var socket=require(_0x1e53('0xd'))(new Redis(config[_0x1e53('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x1e53('0xe')](_0x1e53('0xf'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x1e53('0xe')](_0x1e53('0xf'));function isEmail(_0x557973){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))*$/[_0x1e53('0x10')](_0x557973);}function selectNotIn(_0x39f6dd,_0x228a42,_0x5436e2,_0x3bb8df,_0xed5b4d){return squel[_0x1e53('0x11')]()[_0x1e53('0x12')]('phone')[_0x1e53('0x13')](_0x3bb8df)[_0x1e53('0x14')](_0x228a42,null,_0x228a42+_0x1e53('0x15')+_0x3bb8df+'.'+_0x5436e2)[_0x1e53('0x16')](_0x3bb8df+'.'+_0x5436e2+_0x1e53('0x17')+_0x39f6dd+'.'+_0x5436e2)[_0x1e53('0x16')](_0x228a42+'.dialCheckDuplicateType\x20IN\x20('+_0xed5b4d[_0x1e53('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0xdc2223,_0x4ae574){promisesAdditionalPhones=[];return db['CmContact'][_0x1e53('0x18')]({'raw':!![],'attributes':['id',_0x1e53('0x19')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0x816c06){if(_0x816c06!==null){var _0x385472=[];for(var _0x3fd947=0x0;_0x3fd947<_0x816c06[_0x1e53('0x1a')];_0x3fd947++){var _0x3d504c=_0x816c06[_0x3fd947];_0x385472[_0x1e53('0x1b')](insertAdditionalPhones(_0x3d504c));}}Promise[_0x1e53('0x1c')](_0x385472)[_0x1e53('0x1d')](function(){_0xdc2223({'val':0x1});});});});}function insertAdditionalPhones(_0x3f42ab){return new Promise(function(_0x1bf03f,_0x4ae716){var _0x1be8fa=_0x3f42ab[_0x1e53('0x19')];var _0x2e5fc7=_0x1be8fa[_0x1e53('0x1e')](';');var _0x13ee70=[];orderBy=0x0;for(var _0x2aef1c=0x0;_0x2aef1c<_0x2e5fc7['length'];_0x2aef1c++){_0x13ee70[_0x1e53('0x1b')](splitAdditionalPhone(_0x3f42ab['id'],_0x2e5fc7[_0x2aef1c]));}Promise['all'](_0x13ee70)['then'](function(){_0x1bf03f({'val':_0x2e5fc7[_0x1e53('0x1a')]});});});}function splitAdditionalPhone(_0x32ef88,_0x255ac0){return new Promise(function(_0x3c9c35,_0x2333d2){var _0x2b5692=_0x255ac0[_0x1e53('0x1e')](':');var _0x3be56a=_0x2b5692[0x0];var _0x12da13=_0x2b5692[0x1];if(!_[_0x1e53('0x1f')](_0x12da13)){var _0x45e782=_0x12da13[_0x1e53('0x1e')]('|');var _0x234ee2=[];for(var _0x5019a0=0x0;_0x5019a0<_0x45e782['length'];_0x5019a0++){if(_0x45e782[_0x5019a0]!==''){var _0x3f02a7=_['filter'](promisesAdditionalPhones,{'contactId':_0x32ef88,'phone':_0x45e782[_0x5019a0]});if(_0x3f02a7[_0x1e53('0x1a')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x32ef88,'contactTypeId':_0x3be56a,'phone':_0x45e782[_0x5019a0],'orderBy':orderBy});}}}_0x3c9c35({'ok':0x1});}else _0x3c9c35({'res':0x0});});}function createAdditionalPhone(_0x2bda1a,_0x27ebce,_0x52bacd,_0x118829){var _0x156e2c='';var _0x2574ce='';var _0x3230ab=_0x52bacd[_0x1e53('0x1e')]('§');_0x156e2c=_0x3230ab[0x0];if(_0x3230ab['length']==0x2)_0x2574ce=_0x3230ab[0x1];return new Promise(function(_0x12a9c4,_0x34bd78){return db[_0x1e53('0x20')][_0x1e53('0x21')]({'where':{'CmContactId':_0x2bda1a,'item':_0x156e2c}})[_0x1e53('0x1d')](function(_0x21c069){if(_0x21c069){return db[_0x1e53('0x20')][_0x1e53('0x22')]({'ItemTypeId':_0x27ebce,'description':_0x2574ce,'OrderBy':_0x118829},{'where':{'CmContactId':_0x2bda1a,'item':_0x156e2c}})['then'](function(_0x5148d0){_0x12a9c4({'res':_0x1e53('0x23')});});}else{return db[_0x1e53('0x20')][_0x1e53('0x24')]({'CmContactId':_0x2bda1a,'item':_0x156e2c,'description':_0x2574ce,'ItemTypeId':_0x27ebce,'OrderBy':_0x118829,'ItemClass':'PHONE'})[_0x1e53('0x1d')](function(_0xe9be19){_0x12a9c4({'res':'inserted'});});}});});}function insertCmHopper(_0x4bb487,_0x357055,_0x62f1b7,_0x31b0c9,_0x529189){var _0x10efc7=[_0x1e53('0x25'),_0x1e53('0x26'),'cm_contacts.id','cm_contacts.ListId',_0x357055+'.'+_0x31b0c9,'cm_contacts.createdAt',_0x1e53('0x27'),_0x1e53('0x28'),_0x1e53('0x29'),'\x22'+_0x529189+'\x22'];return squel['insert']()[_0x1e53('0x2a')](_0x1e53('0x2b'))[_0x1e53('0x2c')]([_0x1e53('0x2d'),_0x1e53('0x2e'),_0x1e53('0x2f'),_0x1e53('0x30'),_0x31b0c9,_0x1e53('0x31'),_0x1e53('0x32'),'priority',_0x1e53('0x33'),_0x1e53('0x34')],squel[_0x1e53('0x11')]()[_0x1e53('0x35')](_0x10efc7)[_0x1e53('0x13')](_0x357055)[_0x1e53('0x14')](_0x1e53('0x36'),null,_0x1e53('0x37')+_0x357055+'.CmListId')['join'](_0x62f1b7,null,_0x62f1b7+'.id\x20=\x20'+_0x357055+'.'+_0x31b0c9)[_0x1e53('0x16')](_0x357055+_0x1e53('0x38'),_0x4bb487)[_0x1e53('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x1e53('0x39'),selectNotIn(_0x357055,_0x62f1b7,_0x31b0c9,_0x1e53('0x2b'),[_0x1e53('0x3a'),_0x1e53('0x3b')]))[_0x1e53('0x16')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x357055,_0x62f1b7,_0x31b0c9,_0x1e53('0x2b'),[_0x1e53('0x3a')])))[_0x1e53('0x3c')]();}function insertCmHopperBlack(_0x43c273,_0x392564,_0x3d9b05,_0x1125e1){var _0x5614e4=[_0x1e53('0x25'),_0x1e53('0x3d'),_0x1e53('0x3e'),_0x392564+'.'+_0x1125e1,'cm_contacts.createdAt',_0x1e53('0x27')];return squel[_0x1e53('0x3f')]()[_0x1e53('0x2a')](_0x1e53('0x40'))[_0x1e53('0x2c')]([_0x1e53('0x2d'),'ContactId','ListId',_0x1125e1,_0x1e53('0x31'),_0x1e53('0x32')],squel[_0x1e53('0x11')]()['fields'](_0x5614e4)[_0x1e53('0x13')](_0x392564)['join'](_0x1e53('0x36'),null,_0x1e53('0x37')+_0x392564+_0x1e53('0x41'))['join'](_0x3d9b05,null,_0x3d9b05+'.id\x20=\x20'+_0x392564+'.'+_0x1125e1)[_0x1e53('0x16')](_0x392564+'.CmListId\x20=\x20?',_0x43c273)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x1e53('0x16')](_0x1e53('0x39'),squel[_0x1e53('0x11')]()[_0x1e53('0x12')](_0x1e53('0x2d'))[_0x1e53('0x13')](_0x1e53('0x40'))[_0x1e53('0x16')](_0x1e53('0x42'),_0x43c273)[_0x1e53('0x16')](_0x1125e1+_0x1e53('0x17')+_0x392564+'.'+_0x1125e1)))['toString']();}function insertTzCmHopper(_0x21a570,_0x49d020,_0x2fdffc,_0x19b4a8,_0x3b200b,_0x1d8b2f){var _0x408128=[_0x1e53('0x25'),_0x1e53('0x43')+_0x1d8b2f+_0x1e53('0x44'),_0x1e53('0x3d'),'cm_contacts.ListId',_0x49d020+'.'+_0x19b4a8,_0x1e53('0x45'),_0x1e53('0x27'),_0x1e53('0x28'),_0x1e53('0x29'),'\x22'+_0x3b200b+'\x22'];var _0x297898=squel[_0x1e53('0x3f')]()[_0x1e53('0x2a')](_0x1e53('0x2b'))[_0x1e53('0x2c')]([_0x1e53('0x2d'),_0x1e53('0x2e'),_0x1e53('0x2f'),_0x1e53('0x30'),_0x19b4a8,_0x1e53('0x31'),_0x1e53('0x32'),'priority',_0x1e53('0x33'),_0x1e53('0x34')],squel[_0x1e53('0x11')]()[_0x1e53('0x35')](_0x408128)['from'](_0x49d020)[_0x1e53('0x14')]('cm_contacts',null,_0x1e53('0x37')+_0x49d020+'.CmListId')[_0x1e53('0x14')](_0x2fdffc,null,_0x2fdffc+'.id\x20=\x20'+_0x49d020+'.'+_0x19b4a8)[_0x1e53('0x14')](_0x1d8b2f,null,_0x1d8b2f+'.id\x20=\x20'+_0x49d020+'.'+_0x19b4a8)[_0x1e53('0x16')](_0x49d020+_0x1e53('0x38'),_0x21a570)[_0x1e53('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x1e53('0x16')](_0x1e53('0x39'),selectNotIn(_0x49d020,_0x2fdffc,_0x19b4a8,'cm_hopper',['\x22always\x22',_0x1e53('0x3b')]))[_0x1e53('0x16')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x49d020,_0x2fdffc,_0x19b4a8,_0x1e53('0x2b'),[_0x1e53('0x3a')])))[_0x1e53('0x3c')]();return _0x297898;}function insertTzCmHopperBlack(_0x5ebe62,_0x374c29,_0x11c6f1,_0x5c9bf4){var _0x252851=[_0x1e53('0x25'),'cm_contacts.id',_0x1e53('0x3e'),_0x374c29+'.'+_0x5c9bf4,_0x1e53('0x45'),_0x1e53('0x27')];return squel[_0x1e53('0x3f')]()[_0x1e53('0x2a')](_0x1e53('0x40'))[_0x1e53('0x2c')](['phone','ContactId',_0x1e53('0x30'),_0x5c9bf4,_0x1e53('0x31'),_0x1e53('0x32')],squel[_0x1e53('0x11')]()[_0x1e53('0x35')](_0x252851)[_0x1e53('0x13')](_0x374c29)[_0x1e53('0x14')]('cm_contacts',null,_0x1e53('0x37')+_0x374c29+_0x1e53('0x41'))['join'](_0x11c6f1,null,_0x11c6f1+_0x1e53('0x15')+_0x374c29+'.'+_0x5c9bf4)[_0x1e53('0x16')](_0x374c29+_0x1e53('0x38'),_0x5ebe62)[_0x1e53('0x16')](_0x1e53('0x46'),NOW)['where'](_0x1e53('0x39'),squel[_0x1e53('0x11')]()[_0x1e53('0x12')](_0x1e53('0x2d'))[_0x1e53('0x13')](_0x1e53('0x40'))[_0x1e53('0x16')](_0x1e53('0x42'),_0x5ebe62)[_0x1e53('0x16')](_0x5c9bf4+_0x1e53('0x17')+_0x374c29+'.'+_0x5c9bf4)))[_0x1e53('0x3c')]();}function insertCmHopperAdditionalPhones(_0x2df4db){var _0x58b879=[_0x1e53('0x47'),_0x1e53('0x48'),_0x1e53('0x49'),'cm_contact_has_items.createdAt',_0x1e53('0x4a')];return squel[_0x1e53('0x3f')]()[_0x1e53('0x2a')](_0x1e53('0x4b'))[_0x1e53('0x2c')](['CmHopperId','phone',_0x1e53('0x4c'),_0x1e53('0x31'),_0x1e53('0x32')],squel[_0x1e53('0x11')]()[_0x1e53('0x35')](_0x58b879)[_0x1e53('0x13')]('cm_hopper')[_0x1e53('0x14')](_0x1e53('0x36'),null,_0x1e53('0x4d'))[_0x1e53('0x14')](_0x1e53('0x4e'),null,_0x1e53('0x4f'))[_0x1e53('0x16')](_0x1e53('0x50'),_0x2df4db)[_0x1e53('0x16')](_0x1e53('0x46'),NOW))[_0x1e53('0x3c')]();}function insertCmContact(_0xcdb569,_0x17a956,_0x4929d0,_0x5c0fe5){var _0x19978e=_[_0x1e53('0x51')](_[_0x1e53('0x52')](_0x5c0fe5),[_0x1e53('0x30'),_0x1e53('0x53'),'createdAt','updatedAt','scheduledAt']);return squel[_0x1e53('0x3f')]()[_0x1e53('0x2a')]('cm_contacts')['fromQuery'](_0x19978e,squel[_0x1e53('0x11')]()[_0x1e53('0x35')](_0x19978e)[_0x1e53('0x13')](_0x17a956)['where']('('+_0x4929d0['join'](',')+_0x1e53('0x54'),squel[_0x1e53('0x11')]()[_0x1e53('0x35')](_0x4929d0)[_0x1e53('0x13')](_0x1e53('0x36'))[_0x1e53('0x16')]('ListId\x20=\x20?',_0xcdb569)['where'](_0x1e53('0x55')))['where'](_0x1e53('0x56'),squel[_0x1e53('0x11')]()[_0x1e53('0x12')](_0x1e53('0x57'),_0x1e53('0x58'))['from'](_0x17a956)[_0x1e53('0x59')](_0x4929d0[_0x1e53('0x14')](','))))['toString']();}function handleStop(){logger['info'](_0x1e53('0x5a'));stopped=!![];}function handleUncaughtException(_0x1d5c0a){logger[_0x1e53('0x5b')](_0x1d5c0a[_0x1e53('0x5c')]);process[_0x1e53('0x5d')](0x1);}function handleError(_0x54d3f9,_0x345ab5){stats[_0x1e53('0x5e')][_0x1e53('0x1b')]({'name':_0x345ab5[_0x1e53('0x5f')],'message':_0x345ab5[_0x1e53('0x5c')],'row':_0x54d3f9});}function handleQuery(_0x237beb){logger['info'](_0x237beb);return db[_0x1e53('0x60')][_0x1e53('0x61')](_0x237beb)[_0x1e53('0x62')](function(_0x6c0352){results[_0x1e53('0x1b')](_0x6c0352);})[_0x1e53('0x63')](function(_0x598ff8){logger[_0x1e53('0x5b')](_0x598ff8[_0x1e53('0x5c')]);});}function updateTzCampaigns(_0xc53441){return new Promise(function(_0x5a65cf,_0x202d80){var _0xfa2037=squel[_0x1e53('0x11')]()[_0x1e53('0x35')](['campaigns.id',_0x1e53('0x64')])[_0x1e53('0x13')]('campaigns')['join'](_0x1e53('0x65'),null,_0x1e53('0x66'))[_0x1e53('0x16')](_0x1e53('0x67')+_0xc53441);db[_0x1e53('0x60')][_0x1e53('0x61')](_0xfa2037[_0x1e53('0x3c')]())['spread'](function(_0x586b19){var _0x580a81=[];for(var _0xe877fa=0x0;_0xe877fa<_0x586b19[_0x1e53('0x1a')];_0xe877fa++){_0x580a81['push'](getTimezoneData(_0x586b19[_0xe877fa],tmp_campaigns));}BPromise['all'](_0x580a81)['then'](function(){_0x5a65cf({'val':0x1});});})[_0x1e53('0x63')](function(_0x243e7a){logger[_0x1e53('0x5b')](_0x243e7a[_0x1e53('0x5c')]);_0x5a65cf({'val':0x0});});});}function updateTzVoiceQueues(_0x42fb9f){return new Promise(function(_0x59d81d,_0x34ce23){var _0x5597b4=squel[_0x1e53('0x11')]()[_0x1e53('0x35')]([_0x1e53('0x68'),'voice_queues.dialTimezone'])['from']('voice_queues')['join'](_0x1e53('0x69'),null,_0x1e53('0x6a'))[_0x1e53('0x16')]('voice_queues_has_cm_lists.CmListId='+_0x42fb9f);db[_0x1e53('0x60')][_0x1e53('0x61')](_0x5597b4['toString']())['spread'](function(_0x40eaab){var _0x129c9f=[];for(var _0x3ce4dd=0x0;_0x3ce4dd<_0x40eaab[_0x1e53('0x1a')];_0x3ce4dd++){_0x129c9f[_0x1e53('0x1b')](getTimezoneData(_0x40eaab[_0x3ce4dd],tmp_voice_queues));}BPromise['all'](_0x129c9f)[_0x1e53('0x1d')](function(){_0x59d81d({'val':0x1});});})[_0x1e53('0x63')](function(_0x1b2d0e){logger[_0x1e53('0x5b')](_0x1b2d0e[_0x1e53('0x5c')]);_0x59d81d({'val':0x0});});});}function getTimezoneData(_0x52ba16,_0x28c5f7){return new Promise(function(_0x10193e,_0x348479){var _0xe0cb66=shared[_0x1e53('0x6b')];var _0x299bc1=_0xe0cb66[_0x52ba16[_0x1e53('0x6c')]];if(_['isNil'](_0x299bc1)){_0x10193e({'ret':0x1});}else{var _0x476e31=_0x299bc1[_0x1e53('0x6d')];var _0x56c8f5=squel[_0x1e53('0x3f')]()[_0x1e53('0x2a')](_0x28c5f7)[_0x1e53('0x6e')]('id',_0x52ba16['id'])[_0x1e53('0x6e')](_0x1e53('0x6f'),_0x476e31)[_0x1e53('0x6e')](_0x1e53('0x6c'),_0x52ba16[_0x1e53('0x6c')])['toString']();return db[_0x1e53('0x60')][_0x1e53('0x61')](_0x56c8f5)[_0x1e53('0x62')](function(_0x4762db){_0x10193e({'ret':0x1});})['catch'](function(_0x167e6d){logger[_0x1e53('0x5b')](_0x167e6d[_0x1e53('0x5c')]);_0x348479({'ret':0x1});});}});}function handleTZQuery(_0x5061ce){logger[_0x1e53('0x70')](_0x5061ce);return db[_0x1e53('0x60')][_0x1e53('0x61')](_0x5061ce)[_0x1e53('0x62')](function(_0xc61c22){})['catch'](function(_0x5b88dd){logger['error'](_0x5b88dd['message']);});}function main(_0x3b5204,_0x414c20,_0x54ddc3,_0x41ff7c){logger[_0x1e53('0x70')](_0x1e53('0x71'),_0x3b5204,JSON[_0x1e53('0x72')](_0x414c20));process[_0x1e53('0x73')](_0x1e53('0x74'));var _0x443db1=_0x414c20[_0x1e53('0x75')];var _0xeaad60=_[_0x1e53('0x76')](_0x443db1);var _0xd10349=_0x414c20[_0x1e53('0x77')];var _0x28098e=path[_0x1e53('0x14')](config[_0x1e53('0x78')],_0x1e53('0x79'),_0xd10349+_0x1e53('0x7a'));hasTZ=_[_0x1e53('0x52')](_0x443db1)[_0x1e53('0x7b')](_0x1e53('0x6c'));var _0x4420ac=_['keys'](_0x443db1)[_0x1e53('0x14')]();logger[_0x1e53('0x70')](_0x1e53('0x7c'),_0x4420ac);db[_0x1e53('0x7d')][_0x1e53('0x18')]({'raw':!![],'attributes':['id','name']})[_0x1e53('0x1d')](function(_0x408f4c){for(var _0x3dc673=0x0;_0x3dc673<_0x408f4c[_0x1e53('0x1a')];_0x3dc673++){if(_0x408f4c[_0x3dc673][_0x1e53('0x7e')]in _0x443db1){contactItemTypes[_0x1e53('0x1b')](_0x408f4c[_0x3dc673]);delete _0xeaad60[_0x408f4c[_0x3dc673][_0x1e53('0x7e')]];hasAdditionalPhones=!![];}for(var _0x37f709 in _0x443db1){if(_0x408f4c[_0x3dc673]['name']+_0x1e53('0x7f')===_0x37f709){phoneDescriptions[_0x1e53('0x1b')]({'itemTypeId':_0x408f4c[_0x3dc673]['id'],'description':_0x37f709});delete _0xeaad60[_0x37f709];}}}if(hasAdditionalPhones)_0xeaad60[_0x1e53('0x19')]='';var _0x2c97ff=_[_0x1e53('0x52')](_0xeaad60)[_0x1e53('0x14')]();logger[_0x1e53('0x70')](_0x1e53('0x7c'),_0x2c97ff);fs['writeFileSync'](_0x28098e,_0x2c97ff+'\x0a');Papa['parse'](fs['createReadStream'](_0x3b5204),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3a3f61,_0x495576){try{for(var _0x139d95=0x0,_0x5d5ec7=[];_0x139d95<_0x3a3f61['data'][_0x1e53('0x1a')];_0x139d95++){stats[_0x1e53('0x80')]+=0x1;if(_0x3a3f61[_0x1e53('0x5e')][_0x139d95]){handleError(_0x3a3f61[_0x1e53('0x81')][_0x139d95],_0x3a3f61['errors'][_0x139d95]);}else{var _0x5f24de=[];var _0x335d4e=[];var _0x1ace75={};for(var _0x4e8f23 in _0x443db1){let _0x92da55=contactItemTypes[_0x1e53('0x82')](_0x55c78a=>_0x55c78a[_0x1e53('0x7e')]===_0x4e8f23);let _0xb0e1f4=contactItemTypes[_0x1e53('0x82')](_0x22dbe4=>_0x22dbe4[_0x1e53('0x7e')]+_0x1e53('0x7f')===_0x4e8f23);if(_[_0x1e53('0x1f')](_0x92da55)&&_[_0x1e53('0x1f')](_0xb0e1f4)){if(_0x443db1['hasOwnProperty'](_0x4e8f23)){if(_0x3a3f61[_0x1e53('0x81')][_0x139d95][_0x443db1[_0x4e8f23]]){var _0x11285f=_[_0x1e53('0x83')](_0x3a3f61[_0x1e53('0x81')][_0x139d95][_0x443db1[_0x4e8f23]][_0x1e53('0x84')](/"/g,'\x27'));switch(_0x4e8f23){case'scheduledat':var _0x3ac30d=moment(_0x11285f,_0x1e53('0xf'),!![]);if(_0x3ac30d[_0x1e53('0x85')]()){_0x5d5ec7[_0x1e53('0x1b')]('\x22'+_0x11285f+'\x22');}else{_0x5f24de[_0x1e53('0x1b')](_0x1e53('0x86'));}break;case _0x1e53('0x87'):var _0x4eca84=parseInt(_0x11285f);_0x11285f=_['isNaN'](_0x4eca84)||_0x4eca84<0x0||_0x4eca84>0x4?_0x41ff7c?0x3:0x2:_0x4eca84;_0x5d5ec7[_0x1e53('0x1b')]('\x22'+_0x11285f+'\x22');break;case _0x1e53('0x33'):var _0x3bb35f=parseInt(_0x11285f);if(_['isNumber'](_0x3bb35f)&&_['includes'](_0x54ddc3,_0x3bb35f)){_0x5d5ec7[_0x1e53('0x1b')]('\x22'+_0x3bb35f+'\x22');}else{_0x5f24de['push']('agent\x20not\x20exists');}break;case _0x1e53('0x88'):if(isEmail(_0x11285f)){_0x5d5ec7[_0x1e53('0x1b')]('\x22'+_0x11285f+'\x22');}else{_0x5f24de[_0x1e53('0x1b')]('email\x20wrong\x20format');}break;case _0x1e53('0x89'):var _0x415105=moment(_0x11285f,_0x1e53('0x8a'),!![]);if(_0x415105[_0x1e53('0x85')]()){_0x5d5ec7[_0x1e53('0x1b')]('\x22'+_0x11285f+'\x22');}else{_0x5f24de[_0x1e53('0x1b')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;case _0x1e53('0x6c'):var _0x5b33c6=shared[_0x1e53('0x6b')];var _0x2cb69f=_0x5b33c6[_0x11285f];if(!_[_0x1e53('0x1f')](_0x2cb69f)){var _0x1b8b7c=_0x2cb69f['utcOffset'];_0x5d5ec7[_0x1e53('0x1b')]('\x22'+_0x11285f+'\x22');_0x5d5ec7[_0x1e53('0x1b')]('\x22'+_0x1b8b7c+'\x22');}break;default:_0x5d5ec7[_0x1e53('0x1b')]('\x22'+_0x11285f+'\x22');}}else{switch(_0x4e8f23){case _0x1e53('0x8b'):case'phone':_0x5f24de[_0x1e53('0x1b')](_0x4e8f23+_0x1e53('0x8c'));break;default:_0x5d5ec7[_0x1e53('0x1b')]('\x22\x22');}}}}else{var _0x39d8fa='';if(!_[_0x1e53('0x1f')](_0x92da55)){if(!_0x1ace75[_0x1e53('0x8d')](_0x92da55['id'])){if(!_[_0x1e53('0x1f')](_0x3a3f61[_0x1e53('0x81')][_0x139d95][_0x443db1[_0x4e8f23]])){var _0x11285f=_[_0x1e53('0x83')](_0x3a3f61[_0x1e53('0x81')][_0x139d95][_0x443db1[_0x4e8f23]][_0x1e53('0x84')](/"/g,'\x27'));var _0x36aa48=phoneDescriptions[_0x1e53('0x82')](_0x1615ba=>_0x1615ba[_0x1e53('0x8e')]===_0x92da55['id']);if(!_[_0x1e53('0x1f')](_0x36aa48)){var _0x5c77ee=_[_0x1e53('0x83')](_0x3a3f61[_0x1e53('0x81')][_0x139d95][_0x443db1[_0x36aa48[_0x1e53('0x8f')]]][_0x1e53('0x84')](/"/g,'\x27'));if(!_['isNil'](_0x5c77ee))_0x11285f=_0x11285f+'§'+_0x5c77ee;}if(_0x39d8fa=='')_0x39d8fa=_0x11285f;else _0x39d8fa+='|'+_0x11285f;}_0x335d4e[_0x1e53('0x1b')](_0x92da55['id']+':'+_0x39d8fa);_0x1ace75[_0x92da55['id']]=0x1;}}}}if(hasAdditionalPhones){_0x5d5ec7[_0x1e53('0x1b')]('\x22'+_0x335d4e[_0x1e53('0x14')](';')+'\x22');}if(_0x5f24de[_0x1e53('0x1a')]){handleError(_0x3a3f61[_0x1e53('0x81')][_0x139d95],{'code':'SystemRow','message':_0x5f24de[_0x1e53('0x14')]()});}else{fs[_0x1e53('0x90')](_0x28098e,_0x5d5ec7[_0x1e53('0x14')]()+'\x0a');}_0x5d5ec7=[];}if(!(stats['rows']%0xc8)){socket[_0x1e53('0x91')](_0x1e53('0x92')+_0xd10349,stats);stats['errors']=[];}}if(stopped){logger[_0x1e53('0x70')](_0x1e53('0x93'));_0x495576['abort']();}}catch(_0x2d5be8){handleError(_0x3a3f61['data'][_0x139d95],{'code':_0x1e53('0x94'),'message':_0x2d5be8[_0x1e53('0x5c')]});logger[_0x1e53('0x5b')]('step',_0x2d5be8[_0x1e53('0x5c')]);}},'complete':function(){try{var _0x151874=[];var _0x38a3a8=[];var _0x4424c5=_0x1e53('0x36');if(_0x414c20[_0x1e53('0x95')]&&_0x414c20[_0x1e53('0x95')][_0x1e53('0x1a')]){_0x4424c5='cm_contacts_'+_0xd10349;_0x151874[_0x1e53('0x1b')](_0x1e53('0x96')+_0x4424c5+_0x1e53('0x97'));}tmp_campaigns=_0x1e53('0x98')+_0xd10349;tmp_voice_queues='voice_queues_'+_0xd10349;_0x38a3a8[_0x1e53('0x1b')](_0x1e53('0x96')+tmp_campaigns+_0x1e53('0x99'));_0x38a3a8['push'](_0x1e53('0x96')+tmp_voice_queues+_0x1e53('0x99'));BPromise[_0x1e53('0x9a')](_0x38a3a8,handleTZQuery)[_0x1e53('0x1d')](function(_0xaf1179){updateTzCampaigns(_0x414c20[_0x1e53('0x30')])[_0x1e53('0x1d')](function(_0x149508){updateTzVoiceQueues(_0x414c20[_0x1e53('0x30')])[_0x1e53('0x1d')](function(_0x1a55ba){if(hasTZ)_0x2c97ff=_0x2c97ff['replace']('dialTimezone','dialTimezone,utcOffset');var _0x85e7d7=util[_0x1e53('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',_0x28098e,_0x4424c5,_0x2c97ff,_0x414c20[_0x1e53('0x30')],_0x414c20[_0x1e53('0x53')]||null,NOW,NOW);if(_['isNil'](_0x443db1[_0x1e53('0x2e')])){_0x85e7d7+=',\x20scheduledAt\x20=\x20NOW()';}_0x151874[_0x1e53('0x1b')](_0x85e7d7);if(_0x414c20[_0x1e53('0x95')]&&_0x414c20[_0x1e53('0x95')][_0x1e53('0x1a')]){_0x151874[_0x1e53('0x1b')](insertCmContact(_0x414c20[_0x1e53('0x30')],_0x4424c5,_0x414c20[_0x1e53('0x95')],_0x443db1));_0x151874[_0x1e53('0x1b')](_0x1e53('0x9b')+_0x4424c5+';');}BPromise['each'](_0x151874,handleQuery)[_0x1e53('0x1d')](function(_0x1c7358){BPromise[_0x1e53('0x1c')]([handleAdditionalPhones()])[_0x1e53('0x1d')](function(){_0x151874=[];for(var _0xae3fc=0x0;_0xae3fc<promisesAdditionalPhones[_0x1e53('0x1a')];_0xae3fc++){if(promisesAdditionalPhones[_0xae3fc][_0x1e53('0x2d')]!='§'){_0x151874[_0x1e53('0x1b')](createAdditionalPhone(promisesAdditionalPhones[_0xae3fc][_0x1e53('0x9c')],promisesAdditionalPhones[_0xae3fc][_0x1e53('0x9d')],promisesAdditionalPhones[_0xae3fc][_0x1e53('0x2d')],promisesAdditionalPhones[_0xae3fc][_0x1e53('0x9e')]));}}BPromise[_0x1e53('0x1c')](_0x151874)[_0x1e53('0x1d')](function(){_0x151874=[];if(hasTZ){_0x151874[_0x1e53('0x1b')](insertTzCmHopper(_0x414c20['ListId'],'voice_queues_has_cm_lists',_0x1e53('0x9f'),_0x1e53('0xa0'),_0x41ff7c,tmp_voice_queues));_0x151874['push'](insertTzCmHopperBlack(_0x414c20['ListId'],'voice_queues_has_cm_blacklists',_0x1e53('0x9f'),_0x1e53('0xa0')));_0x151874[_0x1e53('0x1b')](insertTzCmHopper(_0x414c20[_0x1e53('0x30')],'campaigns_has_cm_lists',_0x1e53('0xa1'),'CampaignId',_0x41ff7c,tmp_campaigns));_0x151874[_0x1e53('0x1b')](insertTzCmHopperBlack(_0x414c20['ListId'],_0x1e53('0xa2'),_0x1e53('0xa1'),_0x1e53('0xa3')));_0x151874['push'](insertCmHopperAdditionalPhones(_0x414c20[_0x1e53('0x30')]));}else{_0x151874[_0x1e53('0x1b')](insertCmHopper(_0x414c20[_0x1e53('0x30')],_0x1e53('0x69'),'voice_queues',_0x1e53('0xa0'),_0x41ff7c));_0x151874[_0x1e53('0x1b')](insertCmHopperBlack(_0x414c20['ListId'],'voice_queues_has_cm_blacklists',_0x1e53('0x9f'),_0x1e53('0xa0')));_0x151874[_0x1e53('0x1b')](insertCmHopper(_0x414c20[_0x1e53('0x30')],_0x1e53('0x65'),'campaigns',_0x1e53('0xa3'),_0x41ff7c));_0x151874[_0x1e53('0x1b')](insertCmHopperBlack(_0x414c20[_0x1e53('0x30')],_0x1e53('0xa2'),_0x1e53('0xa1'),_0x1e53('0xa3')));_0x151874['push'](insertCmHopperAdditionalPhones(_0x414c20[_0x1e53('0x30')]));}_0x151874['push'](_0x1e53('0x9b')+tmp_campaigns+';');_0x151874[_0x1e53('0x1b')]('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0x1e53('0x9a')](_0x151874,handleQuery)['then'](function(_0xe5c804){stats['finish']=!![];stats[_0x1e53('0xa4')]=_0x414c20[_0x1e53('0x95')]&&_0x414c20[_0x1e53('0x95')][_0x1e53('0x1a')]?results[0x2]['affectedRows']:results[0x0][_0x1e53('0xa4')];socket[_0x1e53('0x91')](_0x1e53('0x92')+_0xd10349,stats);fs[_0x1e53('0xa5')](_0x3b5204);fs[_0x1e53('0xa5')](_0x28098e);process[_0x1e53('0x5d')](0x0);})['catch'](function(_0xc3d12f){logger[_0x1e53('0x5b')](_0xc3d12f[_0x1e53('0x5c')]);process['exit'](0x1);});});});})[_0x1e53('0x63')](function(_0x4fbd7a){logger[_0x1e53('0x5b')](_0x4fbd7a[_0x1e53('0x5c')]);process[_0x1e53('0x5d')](0x1);});});});});}catch(_0x15a445){logger[_0x1e53('0x5b')](_0x1e53('0xa6'),_0x15a445[_0x1e53('0x5c')]);process[_0x1e53('0x5d')](0x1);}},'error':function(_0x79920a,_0xd5234a,_0x2cd40d,_0x450e02){throw new Error(_0x450e02);}});});}function validate(){if(process[_0x1e53('0xa7')]&&process['argv'][_0x1e53('0x1a')]<0x4){throw new Error(_0x1e53('0xa8'));}var _0x4c4eb7=path['join'](config['root'],_0x1e53('0x79'),process[_0x1e53('0xa7')][0x2]);if(!fs[_0x1e53('0xa9')](_0x4c4eb7)){throw new Error(_0x1e53('0xaa'));}var _0x559d2e={};try{_0x559d2e=JSON[_0x1e53('0xab')](process[_0x1e53('0xa7')][0x3]);if(!_0x559d2e[_0x1e53('0x75')]){throw new Error(_0x1e53('0xac'));}if(!_0x559d2e['binding']['phone']){throw new Error(_0x1e53('0xad'));}if(!_0x559d2e[_0x1e53('0x75')][_0x1e53('0x8b')]){throw new Error(_0x1e53('0xae'));}var _0x5918c4=0x0;if(_0x559d2e[_0x1e53('0x75')][_0x1e53('0x33')]){_0x5918c4=0x1;}if(!_0x559d2e[_0x1e53('0x30')]){throw new Error(_0x1e53('0xaf'));}}catch(_0x21cc9d){throw new Error('body\x20id\x20mandatory');}var _0x1f829d=[];try{_0x1f829d=_['map'](JSON[_0x1e53('0xab')](process[_0x1e53('0xa7')][0x4]),'id');}catch(_0x5dc82c){logger[_0x1e53('0x70')](_0x1e53('0xb0'));}main(_0x4c4eb7,_0x559d2e,_0x1f829d,_0x5918c4);}validate();process['on'](_0x1e53('0xb1'),handleStop);process['on'](_0x1e53('0xb2'),handleUncaughtException);
\ No newline at end of file
+var _0x64f3=['binding','clone','socket_timestamp','root','.csv','keys','includes','header','ContactItemType','findAll','name','_description','writeFileSync','parse','createReadStream','data','rows','find','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','itemTypeId','description','SystemRow','appendFileSync','emit','abort','SystemError','step','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','CREATE\x20TABLE\x20','(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','each','contactId','contactTypeId','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','voice_queues','campaigns','CampaignId','campaigns_has_cm_blacklists','DROP\x20TABLE\x20','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','path','lodash','papaparse','util','bluebird','moment','ioredis','../../../config/environment','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','phone','.id\x20=\x20','\x20=\x20','where','join','CmContact','length','push','all','then','AdditionalPhones','split','CmContactHasItem','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','insert','into','cm_hopper','fromQuery','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','cm_hopper_black','.CmListId\x20=\x20?','field','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','scheduledat','\x22onlyIfOpen\x22','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','CompanyId','scheduledAt',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','group','info','message','exit','errors','code','sequelize','spread','catch','error','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','query','timezones','dialTimezone','isNil','utcOffset','set','offset','stringify','start'];(function(_0xade573,_0x7381fb){var _0x33ee47=function(_0x13ec05){while(--_0x13ec05){_0xade573['push'](_0xade573['shift']());}};_0x33ee47(++_0x7381fb);}(_0x64f3,0x107));var _0x364f=function(_0x1f7141,_0x280b75){_0x1f7141=_0x1f7141-0x0;var _0x50bb46=_0x64f3[_0x1f7141];return _0x50bb46;};'use strict';var fs=require('fs');var path=require(_0x364f('0x0'));var _=require(_0x364f('0x1'));var Papa=require(_0x364f('0x2'));var util=require(_0x364f('0x3'));var BPromise=require(_0x364f('0x4'));var moment=require(_0x364f('0x5'));var squel=require('squel');var Redis=require(_0x364f('0x6'));var db=require('../../../mysqldb')['db'];var config=require(_0x364f('0x7'));var shared=require('../../../config/environment/shared');var logger=require('../../../config/logger')('import');config['redis']=_[_0x364f('0x8')](config[_0x364f('0x9')],{'host':_0x364f('0xa'),'port':0x18eb});var socket=require(_0x364f('0xb'))(new Redis(config[_0x364f('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x364f('0xc')](_0x364f('0xd'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x364f('0xc')](_0x364f('0xd'));function isEmail(_0x310d8b){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))*$/[_0x364f('0xe')](_0x310d8b);}function selectNotIn(_0x4476b0,_0x1e0ee9,_0x20dc51,_0x48879f,_0x442f89){return squel[_0x364f('0xf')]()['field'](_0x364f('0x10'))['from'](_0x48879f)['join'](_0x1e0ee9,null,_0x1e0ee9+_0x364f('0x11')+_0x48879f+'.'+_0x20dc51)['where'](_0x48879f+'.'+_0x20dc51+_0x364f('0x12')+_0x4476b0+'.'+_0x20dc51)[_0x364f('0x13')](_0x1e0ee9+'.dialCheckDuplicateType\x20IN\x20('+_0x442f89[_0x364f('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x209fcb,_0x113347){promisesAdditionalPhones=[];return db[_0x364f('0x15')]['findAll']({'raw':!![],'attributes':['id','AdditionalPhones'],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0x59eb51){if(_0x59eb51!==null){var _0x279078=[];for(var _0xde76e5=0x0;_0xde76e5<_0x59eb51[_0x364f('0x16')];_0xde76e5++){var _0x267ebb=_0x59eb51[_0xde76e5];_0x279078[_0x364f('0x17')](insertAdditionalPhones(_0x267ebb));}}Promise[_0x364f('0x18')](_0x279078)[_0x364f('0x19')](function(){_0x209fcb({'val':0x1});});});});}function insertAdditionalPhones(_0x5e2ec9){return new Promise(function(_0x1205e2,_0x24aef3){var _0x50e5fb=_0x5e2ec9[_0x364f('0x1a')];var _0x235555=_0x50e5fb[_0x364f('0x1b')](';');var _0xd25318=[];orderBy=0x0;for(var _0x29da67=0x0;_0x29da67<_0x235555['length'];_0x29da67++){_0xd25318[_0x364f('0x17')](splitAdditionalPhone(_0x5e2ec9['id'],_0x235555[_0x29da67]));}Promise[_0x364f('0x18')](_0xd25318)[_0x364f('0x19')](function(){_0x1205e2({'val':_0x235555[_0x364f('0x16')]});});});}function splitAdditionalPhone(_0x10042f,_0x35f464){return new Promise(function(_0x40fa0e,_0x5a6764){var _0x4eb322=_0x35f464[_0x364f('0x1b')](':');var _0xd7d4a8=_0x4eb322[0x0];var _0x5cc2be=_0x4eb322[0x1];if(!_['isNil'](_0x5cc2be)){var _0x44b2bc=_0x5cc2be[_0x364f('0x1b')]('|');var _0x21498a=[];for(var _0x2f0d46=0x0;_0x2f0d46<_0x44b2bc[_0x364f('0x16')];_0x2f0d46++){if(_0x44b2bc[_0x2f0d46]!==''){var _0x1139de=_['filter'](promisesAdditionalPhones,{'contactId':_0x10042f,'phone':_0x44b2bc[_0x2f0d46]});if(_0x1139de[_0x364f('0x16')]==0x0){orderBy++;promisesAdditionalPhones[_0x364f('0x17')]({'contactId':_0x10042f,'contactTypeId':_0xd7d4a8,'phone':_0x44b2bc[_0x2f0d46],'orderBy':orderBy});}}}_0x40fa0e({'ok':0x1});}else _0x40fa0e({'res':0x0});});}function createAdditionalPhone(_0x142858,_0x309975,_0x5ed21a,_0x3497ac){var _0x1f77a9='';var _0x566db9='';var _0x1c2124=_0x5ed21a[_0x364f('0x1b')]('§');_0x1f77a9=_0x1c2124[0x0];if(_0x1c2124[_0x364f('0x16')]==0x2)_0x566db9=_0x1c2124[0x1];return new Promise(function(_0x2c9596,_0x35090f){return db[_0x364f('0x1c')]['findOne']({'where':{'CmContactId':_0x142858,'item':_0x1f77a9}})[_0x364f('0x19')](function(_0x15e63a){if(_0x15e63a){return db[_0x364f('0x1c')][_0x364f('0x1d')]({'ItemTypeId':_0x309975,'description':_0x566db9,'OrderBy':_0x3497ac},{'where':{'CmContactId':_0x142858,'item':_0x1f77a9}})[_0x364f('0x19')](function(_0x57435b){_0x2c9596({'res':_0x364f('0x1e')});});}else{return db['CmContactHasItem'][_0x364f('0x1f')]({'CmContactId':_0x142858,'item':_0x1f77a9,'description':_0x566db9,'ItemTypeId':_0x309975,'OrderBy':_0x3497ac,'ItemClass':_0x364f('0x20')})[_0x364f('0x19')](function(_0x33aca2){_0x2c9596({'res':_0x364f('0x21')});});}});});}function insertCmHopper(_0x509d69,_0x36aed2,_0x1b538c,_0x288688,_0x56f690){var _0x26ef6c=[_0x364f('0x22'),_0x364f('0x23'),_0x364f('0x24'),_0x364f('0x25'),_0x36aed2+'.'+_0x288688,_0x364f('0x26'),_0x364f('0x27'),_0x364f('0x28'),_0x364f('0x29'),'\x22'+_0x56f690+'\x22'];return squel[_0x364f('0x2a')]()[_0x364f('0x2b')](_0x364f('0x2c'))[_0x364f('0x2d')](['phone','scheduledat',_0x364f('0x2e'),_0x364f('0x2f'),_0x288688,_0x364f('0x30'),_0x364f('0x31'),_0x364f('0x32'),_0x364f('0x33'),_0x364f('0x34')],squel[_0x364f('0xf')]()[_0x364f('0x35')](_0x26ef6c)[_0x364f('0x36')](_0x36aed2)['join'](_0x364f('0x37'),null,_0x364f('0x38')+_0x36aed2+_0x364f('0x39'))['join'](_0x1b538c,null,_0x1b538c+'.id\x20=\x20'+_0x36aed2+'.'+_0x288688)[_0x364f('0x13')](_0x36aed2+'.CmListId\x20=\x20?',_0x509d69)['where'](_0x364f('0x3a'),NOW)[_0x364f('0x13')](_0x364f('0x3b'),selectNotIn(_0x36aed2,_0x1b538c,_0x288688,_0x364f('0x2c'),['\x22always\x22','\x22onlyIfOpen\x22']))[_0x364f('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x36aed2,_0x1b538c,_0x288688,_0x364f('0x2c'),[_0x364f('0x3c')])))[_0x364f('0x3d')]();}function insertCmHopperBlack(_0x29ad29,_0x26aad2,_0x13f528,_0x58b7b7){var _0x1cdee2=['cm_contacts.phone',_0x364f('0x24'),_0x364f('0x25'),_0x26aad2+'.'+_0x58b7b7,'cm_contacts.createdAt',_0x364f('0x27')];return squel[_0x364f('0x2a')]()[_0x364f('0x2b')](_0x364f('0x3e'))[_0x364f('0x2d')]([_0x364f('0x10'),_0x364f('0x2e'),'ListId',_0x58b7b7,_0x364f('0x30'),_0x364f('0x31')],squel['select']()[_0x364f('0x35')](_0x1cdee2)[_0x364f('0x36')](_0x26aad2)['join'](_0x364f('0x37'),null,_0x364f('0x38')+_0x26aad2+_0x364f('0x39'))[_0x364f('0x14')](_0x13f528,null,_0x13f528+'.id\x20=\x20'+_0x26aad2+'.'+_0x58b7b7)[_0x364f('0x13')](_0x26aad2+_0x364f('0x3f'),_0x29ad29)[_0x364f('0x13')](_0x364f('0x3a'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x364f('0xf')]()[_0x364f('0x40')](_0x364f('0x10'))[_0x364f('0x36')](_0x364f('0x3e'))[_0x364f('0x13')](_0x364f('0x41'),_0x29ad29)['where'](_0x58b7b7+_0x364f('0x12')+_0x26aad2+'.'+_0x58b7b7)))[_0x364f('0x3d')]();}function insertTzCmHopper(_0x27cd17,_0x30ee35,_0x2ff330,_0x57de71,_0x429281,_0x19e384){var _0x24ba83=[_0x364f('0x22'),_0x364f('0x42')+_0x19e384+_0x364f('0x43'),_0x364f('0x24'),_0x364f('0x25'),_0x30ee35+'.'+_0x57de71,'cm_contacts.createdAt',_0x364f('0x27'),_0x364f('0x28'),_0x364f('0x29'),'\x22'+_0x429281+'\x22'];var _0x4154fc=squel['insert']()[_0x364f('0x2b')]('cm_hopper')[_0x364f('0x2d')]([_0x364f('0x10'),_0x364f('0x44'),'ContactId',_0x364f('0x2f'),_0x57de71,_0x364f('0x30'),_0x364f('0x31'),'priority',_0x364f('0x33'),_0x364f('0x34')],squel[_0x364f('0xf')]()[_0x364f('0x35')](_0x24ba83)[_0x364f('0x36')](_0x30ee35)[_0x364f('0x14')](_0x364f('0x37'),null,'cm_contacts.ListId\x20=\x20'+_0x30ee35+_0x364f('0x39'))[_0x364f('0x14')](_0x2ff330,null,_0x2ff330+'.id\x20=\x20'+_0x30ee35+'.'+_0x57de71)[_0x364f('0x14')](_0x19e384,null,_0x19e384+'.id\x20=\x20'+_0x30ee35+'.'+_0x57de71)[_0x364f('0x13')](_0x30ee35+'.CmListId\x20=\x20?',_0x27cd17)[_0x364f('0x13')](_0x364f('0x3a'),NOW)[_0x364f('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x30ee35,_0x2ff330,_0x57de71,_0x364f('0x2c'),['\x22always\x22',_0x364f('0x45')]))['where'](_0x364f('0x3b'),selectNotIn(_0x30ee35,_0x2ff330,_0x57de71,_0x364f('0x2c'),[_0x364f('0x3c')])))[_0x364f('0x3d')]();return _0x4154fc;}function insertTzCmHopperBlack(_0x6139d,_0x5aca2f,_0x2d35d0,_0xaf0dbd){var _0x4628ac=['cm_contacts.phone',_0x364f('0x24'),_0x364f('0x25'),_0x5aca2f+'.'+_0xaf0dbd,'cm_contacts.createdAt',_0x364f('0x27')];return squel[_0x364f('0x2a')]()['into']('cm_hopper_black')[_0x364f('0x2d')](['phone','ContactId','ListId',_0xaf0dbd,_0x364f('0x30'),_0x364f('0x31')],squel['select']()[_0x364f('0x35')](_0x4628ac)[_0x364f('0x36')](_0x5aca2f)['join'](_0x364f('0x37'),null,'cm_contacts.ListId\x20=\x20'+_0x5aca2f+'.CmListId')[_0x364f('0x14')](_0x2d35d0,null,_0x2d35d0+_0x364f('0x11')+_0x5aca2f+'.'+_0xaf0dbd)[_0x364f('0x13')](_0x5aca2f+'.CmListId\x20=\x20?',_0x6139d)['where'](_0x364f('0x3a'),NOW)[_0x364f('0x13')](_0x364f('0x3b'),squel[_0x364f('0xf')]()[_0x364f('0x40')](_0x364f('0x10'))[_0x364f('0x36')](_0x364f('0x3e'))[_0x364f('0x13')](_0x364f('0x41'),_0x6139d)[_0x364f('0x13')](_0xaf0dbd+'\x20=\x20'+_0x5aca2f+'.'+_0xaf0dbd)))[_0x364f('0x3d')]();}function insertCmHopperAdditionalPhones(_0x56428a){var _0x581190=[_0x364f('0x46'),_0x364f('0x47'),'cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt',_0x364f('0x48')];return squel['insert']()['into'](_0x364f('0x49'))[_0x364f('0x2d')]([_0x364f('0x4a'),_0x364f('0x10'),_0x364f('0x4b'),_0x364f('0x30'),'updatedAt'],squel['select']()['fields'](_0x581190)[_0x364f('0x36')](_0x364f('0x2c'))[_0x364f('0x14')](_0x364f('0x37'),null,_0x364f('0x4c'))[_0x364f('0x14')](_0x364f('0x4d'),null,_0x364f('0x4e'))['where'](_0x364f('0x4f'),_0x56428a)[_0x364f('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0x364f('0x3d')]();}function insertCmContact(_0x2619f0,_0x335f00,_0xa00ca3,_0x1cf3c4){var _0x9599b2=_[_0x364f('0x50')](_['keys'](_0x1cf3c4),['ListId',_0x364f('0x51'),_0x364f('0x30'),_0x364f('0x31'),_0x364f('0x52')]);return squel[_0x364f('0x2a')]()[_0x364f('0x2b')](_0x364f('0x37'))[_0x364f('0x2d')](_0x9599b2,squel[_0x364f('0xf')]()[_0x364f('0x35')](_0x9599b2)['from'](_0x335f00)[_0x364f('0x13')]('('+_0xa00ca3['join'](',')+_0x364f('0x53'),squel[_0x364f('0xf')]()['fields'](_0xa00ca3)[_0x364f('0x36')]('cm_contacts')[_0x364f('0x13')](_0x364f('0x41'),_0x2619f0)[_0x364f('0x13')]('deletedAt\x20IS\x20NULL'))[_0x364f('0x13')](_0x364f('0x54'),squel[_0x364f('0xf')]()['field'](_0x364f('0x55'),_0x364f('0x56'))['from'](_0x335f00)[_0x364f('0x57')](_0xa00ca3[_0x364f('0x14')](','))))[_0x364f('0x3d')]();}function handleStop(){logger[_0x364f('0x58')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x563d14){logger['error'](_0x563d14[_0x364f('0x59')]);process[_0x364f('0x5a')](0x1);}function handleError(_0x555dd1,_0xfd0c2a){stats[_0x364f('0x5b')][_0x364f('0x17')]({'name':_0xfd0c2a[_0x364f('0x5c')],'message':_0xfd0c2a[_0x364f('0x59')],'row':_0x555dd1});}function handleQuery(_0x1b12e1){logger['info'](_0x1b12e1);return db[_0x364f('0x5d')]['query'](_0x1b12e1)[_0x364f('0x5e')](function(_0x2f6091){results[_0x364f('0x17')](_0x2f6091);})[_0x364f('0x5f')](function(_0x3baf05){logger[_0x364f('0x60')](_0x3baf05['message']);});}function updateTzCampaigns(_0x4d0baa){return new Promise(function(_0x2f9062,_0x1b8db3){var _0x106ee6=squel[_0x364f('0xf')]()[_0x364f('0x35')](['campaigns.id','campaigns.dialTimezone'])[_0x364f('0x36')]('campaigns')[_0x364f('0x14')](_0x364f('0x61'),null,_0x364f('0x62'))['where'](_0x364f('0x63')+_0x4d0baa);db[_0x364f('0x5d')]['query'](_0x106ee6[_0x364f('0x3d')]())[_0x364f('0x5e')](function(_0x37164f){var _0x582d3c=[];for(var _0x43e03a=0x0;_0x43e03a<_0x37164f[_0x364f('0x16')];_0x43e03a++){_0x582d3c[_0x364f('0x17')](getTimezoneData(_0x37164f[_0x43e03a],tmp_campaigns));}BPromise['all'](_0x582d3c)[_0x364f('0x19')](function(){_0x2f9062({'val':0x1});});})[_0x364f('0x5f')](function(_0x35dfd4){logger[_0x364f('0x60')](_0x35dfd4[_0x364f('0x59')]);_0x2f9062({'val':0x0});});});}function updateTzVoiceQueues(_0x59aabb){return new Promise(function(_0xc0b607,_0x2d390e){var _0x551b3f=squel['select']()['fields']([_0x364f('0x64'),'voice_queues.dialTimezone'])[_0x364f('0x36')]('voice_queues')[_0x364f('0x14')](_0x364f('0x65'),null,_0x364f('0x66'))[_0x364f('0x13')](_0x364f('0x67')+_0x59aabb);db[_0x364f('0x5d')][_0x364f('0x68')](_0x551b3f[_0x364f('0x3d')]())['spread'](function(_0x5dcf2d){var _0x4a1103=[];for(var _0x59c110=0x0;_0x59c110<_0x5dcf2d[_0x364f('0x16')];_0x59c110++){_0x4a1103[_0x364f('0x17')](getTimezoneData(_0x5dcf2d[_0x59c110],tmp_voice_queues));}BPromise['all'](_0x4a1103)['then'](function(){_0xc0b607({'val':0x1});});})[_0x364f('0x5f')](function(_0x29b0f0){logger[_0x364f('0x60')](_0x29b0f0['message']);_0xc0b607({'val':0x0});});});}function getTimezoneData(_0x2d5727,_0x26c7a4){return new Promise(function(_0x3d108a,_0x351f18){var _0x5a1151=shared[_0x364f('0x69')];var _0x74bdbb=_0x5a1151[_0x2d5727[_0x364f('0x6a')]];if(_[_0x364f('0x6b')](_0x74bdbb)){_0x3d108a({'ret':0x1});}else{var _0x4f54cb=_0x74bdbb[_0x364f('0x6c')];var _0x2611dc=squel[_0x364f('0x2a')]()['into'](_0x26c7a4)[_0x364f('0x6d')]('id',_0x2d5727['id'])[_0x364f('0x6d')](_0x364f('0x6e'),_0x4f54cb)['set'](_0x364f('0x6a'),_0x2d5727[_0x364f('0x6a')])['toString']();return db['sequelize']['query'](_0x2611dc)[_0x364f('0x5e')](function(_0x390fe8){_0x3d108a({'ret':0x1});})['catch'](function(_0x235d60){logger[_0x364f('0x60')](_0x235d60[_0x364f('0x59')]);_0x351f18({'ret':0x1});});}});}function handleTZQuery(_0x4e1e47){logger[_0x364f('0x58')](_0x4e1e47);return db[_0x364f('0x5d')][_0x364f('0x68')](_0x4e1e47)['spread'](function(_0x4d3528){})['catch'](function(_0x2f8c00){logger[_0x364f('0x60')](_0x2f8c00[_0x364f('0x59')]);});}function main(_0x3b05ac,_0x4b5411,_0x50b96b,_0x4388eb){logger[_0x364f('0x58')]('main',_0x3b05ac,JSON[_0x364f('0x6f')](_0x4b5411));process['send'](_0x364f('0x70'));var _0x5ddd4b=_0x4b5411[_0x364f('0x71')];var _0x83b458=_[_0x364f('0x72')](_0x5ddd4b);var _0x5db48d=_0x4b5411[_0x364f('0x73')];var _0x2fc90e=path[_0x364f('0x14')](config[_0x364f('0x74')],'server/files/tmp',_0x5db48d+_0x364f('0x75'));hasTZ=_[_0x364f('0x76')](_0x5ddd4b)[_0x364f('0x77')](_0x364f('0x6a'));var _0x372287=_['keys'](_0x5ddd4b)[_0x364f('0x14')]();logger['info'](_0x364f('0x78'),_0x372287);db[_0x364f('0x79')][_0x364f('0x7a')]({'raw':!![],'attributes':['id',_0x364f('0x7b')]})[_0x364f('0x19')](function(_0x53989b){for(var _0x4e41ab=0x0;_0x4e41ab<_0x53989b[_0x364f('0x16')];_0x4e41ab++){if(_0x53989b[_0x4e41ab][_0x364f('0x7b')]in _0x5ddd4b){contactItemTypes[_0x364f('0x17')](_0x53989b[_0x4e41ab]);delete _0x83b458[_0x53989b[_0x4e41ab]['name']];hasAdditionalPhones=!![];}for(var _0x36bb48 in _0x5ddd4b){if(_0x53989b[_0x4e41ab][_0x364f('0x7b')]+_0x364f('0x7c')===_0x36bb48){phoneDescriptions[_0x364f('0x17')]({'itemTypeId':_0x53989b[_0x4e41ab]['id'],'description':_0x36bb48});delete _0x83b458[_0x36bb48];}}}if(hasAdditionalPhones)_0x83b458[_0x364f('0x1a')]='';var _0x222dcd=_['keys'](_0x83b458)[_0x364f('0x14')]();logger['info'](_0x364f('0x78'),_0x222dcd);fs[_0x364f('0x7d')](_0x2fc90e,_0x222dcd+'\x0a');Papa[_0x364f('0x7e')](fs[_0x364f('0x7f')](_0x3b05ac),{'header':!![],'skipEmptyLines':!![],'step':function(_0x27463c,_0x30f1a8){try{for(var _0x77b350=0x0,_0x11632a=[];_0x77b350<_0x27463c[_0x364f('0x80')]['length'];_0x77b350++){stats[_0x364f('0x81')]+=0x1;if(_0x27463c[_0x364f('0x5b')][_0x77b350]){handleError(_0x27463c['data'][_0x77b350],_0x27463c[_0x364f('0x5b')][_0x77b350]);}else{var _0x582d86=[];var _0x1318ff=[];var _0x4a2f2e={};for(var _0x3ab7db in _0x5ddd4b){let _0xc592f3=contactItemTypes['find'](_0x1e5ae1=>_0x1e5ae1[_0x364f('0x7b')]===_0x3ab7db);let _0x6ad45a=contactItemTypes[_0x364f('0x82')](_0x200c1f=>_0x200c1f['name']+_0x364f('0x7c')===_0x3ab7db);if(_[_0x364f('0x6b')](_0xc592f3)&&_[_0x364f('0x6b')](_0x6ad45a)){if(_0x5ddd4b[_0x364f('0x83')](_0x3ab7db)){if(_0x27463c[_0x364f('0x80')][_0x77b350][_0x5ddd4b[_0x3ab7db]]){var _0x1d2158=_[_0x364f('0x84')](_0x27463c[_0x364f('0x80')][_0x77b350][_0x5ddd4b[_0x3ab7db]][_0x364f('0x85')](/"/g,'\x27'));switch(_0x3ab7db){case _0x364f('0x44'):var _0x26ba5e=moment(_0x1d2158,_0x364f('0xd'),!![]);if(_0x26ba5e[_0x364f('0x86')]()){_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');}else{_0x582d86[_0x364f('0x17')](_0x364f('0x87'));}break;case _0x364f('0x32'):var _0x12e85e=parseInt(_0x1d2158);_0x1d2158=_[_0x364f('0x88')](_0x12e85e)||_0x12e85e<0x0||_0x12e85e>0x4?_0x4388eb?0x3:0x2:_0x12e85e;_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');break;case _0x364f('0x33'):var _0x53b0e2=parseInt(_0x1d2158);if(_[_0x364f('0x89')](_0x53b0e2)&&_[_0x364f('0x77')](_0x50b96b,_0x53b0e2)){_0x11632a[_0x364f('0x17')]('\x22'+_0x53b0e2+'\x22');}else{_0x582d86[_0x364f('0x17')](_0x364f('0x8a'));}break;case _0x364f('0x8b'):if(isEmail(_0x1d2158)){_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');}else{_0x582d86[_0x364f('0x17')](_0x364f('0x8c'));}break;case _0x364f('0x8d'):var _0x53730f=moment(_0x1d2158,_0x364f('0x8e'),!![]);if(_0x53730f[_0x364f('0x86')]()){_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');}else{_0x582d86[_0x364f('0x17')](_0x364f('0x8f'));}break;case'dialTimezone':var _0x21c924=shared[_0x364f('0x69')];var _0x44e347=_0x21c924[_0x1d2158];if(!_[_0x364f('0x6b')](_0x44e347)){var _0xb3f937=_0x44e347['utcOffset'];_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');_0x11632a[_0x364f('0x17')]('\x22'+_0xb3f937+'\x22');}break;default:_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');}}else{switch(_0x3ab7db){case _0x364f('0x90'):case'phone':_0x582d86[_0x364f('0x17')](_0x3ab7db+'\x20not\x20specified');break;default:_0x11632a[_0x364f('0x17')]('\x22\x22');}}}}else{var _0x92204d='';if(!_[_0x364f('0x6b')](_0xc592f3)){if(!_0x4a2f2e['hasOwnProperty'](_0xc592f3['id'])){if(!_[_0x364f('0x6b')](_0x27463c['data'][_0x77b350][_0x5ddd4b[_0x3ab7db]])){var _0x1d2158=_['trim'](_0x27463c[_0x364f('0x80')][_0x77b350][_0x5ddd4b[_0x3ab7db]][_0x364f('0x85')](/"/g,'\x27'));var _0x5aebd8=phoneDescriptions[_0x364f('0x82')](_0x2386e6=>_0x2386e6[_0x364f('0x91')]===_0xc592f3['id']);if(!_[_0x364f('0x6b')](_0x5aebd8)){var _0x11c715=_[_0x364f('0x84')](_0x27463c['data'][_0x77b350][_0x5ddd4b[_0x5aebd8[_0x364f('0x92')]]][_0x364f('0x85')](/"/g,'\x27'));if(!_[_0x364f('0x6b')](_0x11c715))_0x1d2158=_0x1d2158+'§'+_0x11c715;}if(_0x92204d=='')_0x92204d=_0x1d2158;else _0x92204d+='|'+_0x1d2158;}_0x1318ff['push'](_0xc592f3['id']+':'+_0x92204d);_0x4a2f2e[_0xc592f3['id']]=0x1;}}}}if(hasAdditionalPhones){_0x11632a[_0x364f('0x17')]('\x22'+_0x1318ff['join'](';')+'\x22');}if(_0x582d86[_0x364f('0x16')]){handleError(_0x27463c[_0x364f('0x80')][_0x77b350],{'code':_0x364f('0x93'),'message':_0x582d86[_0x364f('0x14')]()});}else{fs[_0x364f('0x94')](_0x2fc90e,_0x11632a[_0x364f('0x14')]()+'\x0a');}_0x11632a=[];}if(!(stats[_0x364f('0x81')]%0xc8)){socket[_0x364f('0x95')]('contact:import:'+_0x5db48d,stats);stats[_0x364f('0x5b')]=[];}}if(stopped){logger[_0x364f('0x58')]('Abort\x20parser');_0x30f1a8[_0x364f('0x96')]();}}catch(_0x1f674e){handleError(_0x27463c[_0x364f('0x80')][_0x77b350],{'code':_0x364f('0x97'),'message':_0x1f674e[_0x364f('0x59')]});logger[_0x364f('0x60')](_0x364f('0x98'),_0x1f674e[_0x364f('0x59')]);}},'complete':function(){try{var _0x1561e8=[];var _0x59b67b=[];var _0x30dfcd='cm_contacts';if(_0x4b5411[_0x364f('0x99')]&&_0x4b5411[_0x364f('0x99')]['length']){_0x30dfcd=_0x364f('0x9a')+_0x5db48d;_0x1561e8[_0x364f('0x17')]('CREATE\x20TABLE\x20'+_0x30dfcd+_0x364f('0x9b'));}tmp_campaigns=_0x364f('0x9c')+_0x5db48d;tmp_voice_queues=_0x364f('0x9d')+_0x5db48d;_0x59b67b[_0x364f('0x17')](_0x364f('0x9e')+tmp_campaigns+_0x364f('0x9f'));_0x59b67b['push'](_0x364f('0x9e')+tmp_voice_queues+_0x364f('0x9f'));BPromise['each'](_0x59b67b,handleTZQuery)[_0x364f('0x19')](function(_0x186944){updateTzCampaigns(_0x4b5411[_0x364f('0x2f')])[_0x364f('0x19')](function(_0x568d60){updateTzVoiceQueues(_0x4b5411[_0x364f('0x2f')])[_0x364f('0x19')](function(_0x3cea3b){if(hasTZ)_0x222dcd=_0x222dcd[_0x364f('0x85')](_0x364f('0x6a'),_0x364f('0xa0'));var _0x4b0a7b=util['format'](_0x364f('0xa1'),_0x2fc90e,_0x30dfcd,_0x222dcd,_0x4b5411[_0x364f('0x2f')],_0x4b5411[_0x364f('0x51')]||null,NOW,NOW);if(_[_0x364f('0x6b')](_0x5ddd4b[_0x364f('0x44')])){_0x4b0a7b+=',\x20scheduledAt\x20=\x20NOW()';}_0x1561e8[_0x364f('0x17')](_0x4b0a7b);if(_0x4b5411[_0x364f('0x99')]&&_0x4b5411['duplicates'][_0x364f('0x16')]){_0x1561e8[_0x364f('0x17')](insertCmContact(_0x4b5411['ListId'],_0x30dfcd,_0x4b5411['duplicates'],_0x5ddd4b));_0x1561e8[_0x364f('0x17')]('DROP\x20TABLE\x20'+_0x30dfcd+';');}BPromise[_0x364f('0xa2')](_0x1561e8,handleQuery)[_0x364f('0x19')](function(_0x5c6d43){BPromise['all']([handleAdditionalPhones()])[_0x364f('0x19')](function(){_0x1561e8=[];for(var _0x46dfd8=0x0;_0x46dfd8<promisesAdditionalPhones[_0x364f('0x16')];_0x46dfd8++){if(promisesAdditionalPhones[_0x46dfd8][_0x364f('0x10')]!='§'){_0x1561e8[_0x364f('0x17')](createAdditionalPhone(promisesAdditionalPhones[_0x46dfd8][_0x364f('0xa3')],promisesAdditionalPhones[_0x46dfd8][_0x364f('0xa4')],promisesAdditionalPhones[_0x46dfd8][_0x364f('0x10')],promisesAdditionalPhones[_0x46dfd8][_0x364f('0xa5')]));}}BPromise[_0x364f('0x18')](_0x1561e8)[_0x364f('0x19')](function(){_0x1561e8=[];if(hasTZ){_0x1561e8[_0x364f('0x17')](insertTzCmHopper(_0x4b5411[_0x364f('0x2f')],'voice_queues_has_cm_lists','voice_queues',_0x364f('0xa6'),_0x4388eb,tmp_voice_queues));_0x1561e8[_0x364f('0x17')](insertTzCmHopperBlack(_0x4b5411[_0x364f('0x2f')],_0x364f('0xa7'),_0x364f('0xa8'),_0x364f('0xa6')));_0x1561e8[_0x364f('0x17')](insertTzCmHopper(_0x4b5411['ListId'],_0x364f('0x61'),_0x364f('0xa9'),_0x364f('0xaa'),_0x4388eb,tmp_campaigns));_0x1561e8[_0x364f('0x17')](insertTzCmHopperBlack(_0x4b5411[_0x364f('0x2f')],'campaigns_has_cm_blacklists',_0x364f('0xa9'),_0x364f('0xaa')));_0x1561e8[_0x364f('0x17')](insertCmHopperAdditionalPhones(_0x4b5411['ListId']));}else{_0x1561e8[_0x364f('0x17')](insertCmHopper(_0x4b5411[_0x364f('0x2f')],_0x364f('0x65'),'voice_queues','VoiceQueueId',_0x4388eb));_0x1561e8[_0x364f('0x17')](insertCmHopperBlack(_0x4b5411[_0x364f('0x2f')],'voice_queues_has_cm_blacklists','voice_queues',_0x364f('0xa6')));_0x1561e8['push'](insertCmHopper(_0x4b5411[_0x364f('0x2f')],_0x364f('0x61'),_0x364f('0xa9'),_0x364f('0xaa'),_0x4388eb));_0x1561e8['push'](insertCmHopperBlack(_0x4b5411[_0x364f('0x2f')],_0x364f('0xab'),_0x364f('0xa9'),_0x364f('0xaa')));_0x1561e8[_0x364f('0x17')](insertCmHopperAdditionalPhones(_0x4b5411[_0x364f('0x2f')]));}_0x1561e8[_0x364f('0x17')](_0x364f('0xac')+tmp_campaigns+';');_0x1561e8['push'](_0x364f('0xac')+tmp_voice_queues+';');BPromise[_0x364f('0xa2')](_0x1561e8,handleQuery)[_0x364f('0x19')](function(_0x2e4791){stats['finish']=!![];stats['affectedRows']=_0x4b5411['duplicates']&&_0x4b5411[_0x364f('0x99')][_0x364f('0x16')]?results[0x2]['affectedRows']:results[0x0][_0x364f('0xad')];socket['emit']('contact:import:'+_0x5db48d,stats);fs[_0x364f('0xae')](_0x3b05ac);fs[_0x364f('0xae')](_0x2fc90e);process[_0x364f('0x5a')](0x0);})[_0x364f('0x5f')](function(_0x5d9a6f){logger['error'](_0x5d9a6f['message']);process[_0x364f('0x5a')](0x1);});});});})[_0x364f('0x5f')](function(_0x508ec3){logger[_0x364f('0x60')](_0x508ec3['message']);process[_0x364f('0x5a')](0x1);});});});});}catch(_0x2dc7ed){logger['error'](_0x364f('0xaf'),_0x2dc7ed[_0x364f('0x59')]);process['exit'](0x1);}},'error':function(_0x2c53df,_0x47b291,_0x291d56,_0x306811){throw new Error(_0x306811);}});});}function validate(){if(process[_0x364f('0xb0')]&&process['argv']['length']<0x4){throw new Error(_0x364f('0xb1'));}var _0x40f1d3=path[_0x364f('0x14')](config[_0x364f('0x74')],_0x364f('0xb2'),process[_0x364f('0xb0')][0x2]);if(!fs[_0x364f('0xb3')](_0x40f1d3)){throw new Error(_0x364f('0xb4'));}var _0x28eafe={};try{_0x28eafe=JSON[_0x364f('0x7e')](process[_0x364f('0xb0')][0x3]);if(!_0x28eafe[_0x364f('0x71')]){throw new Error(_0x364f('0xb5'));}if(!_0x28eafe[_0x364f('0x71')]['phone']){throw new Error(_0x364f('0xb6'));}if(!_0x28eafe[_0x364f('0x71')]['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0x31251c=0x0;if(_0x28eafe[_0x364f('0x71')][_0x364f('0x33')]){_0x31251c=0x1;}if(!_0x28eafe[_0x364f('0x2f')]){throw new Error(_0x364f('0xb7'));}}catch(_0x1a1c80){throw new Error(_0x364f('0xb8'));}var _0x14331d=[];try{_0x14331d=_[_0x364f('0xb9')](JSON[_0x364f('0x7e')](process[_0x364f('0xb0')][0x4]),'id');}catch(_0x5d6d3c){logger[_0x364f('0x58')](_0x364f('0xba'));}main(_0x40f1d3,_0x28eafe,_0x14331d,_0x31251c);}validate();process['on'](_0x364f('0xbb'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index e47b256..91d430d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45d8=['code','info','sequelize','stringify','send','start','binding','clone','socket_timestamp','root','server/files/tmp','.csv','ContactItemType','findAll','name','_description','writeFileSync','parse','createReadStream','data','find','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','UserId','isNumber','includes','agent\x20not\x20exists','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','itemTypeId','description','SystemRow','rows','contact:import:','Abort\x20parser','abort','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','contactId','contactTypeId','orderBy','DROP\x20TABLE\x20','each','finish','affectedRows','emit','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','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','ioredis','../../../config/environment','../../../config/logger','defaults','localhost','socket.io-emitter','redis','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','YYYYMMDDHHmmss','select','phone','from','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','query','spread','length','isNil','AdditionalPhones','push','then','catch','error','message','all','split','CmContactHasItem','findOne','update','updated','inserted','CmHopper','cm_contacts.phone','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','priority','fields','cm_contacts','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','insert','cm_hopper_black','updatedAt','cm_contacts.ListId\x20=\x20','.CmListId','\x20=\x20?','cm_hopper.id','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_hopper_additional_phones','CmHopperId','OrderBy','createdAt','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','concat','CompanyId',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','id\x20IN\x20?','field','MIN(id)','min_id','Received\x20SIGINT','exit','errors'];(function(_0x3fd3de,_0x573a06){var _0x4f9c2a=function(_0x256184){while(--_0x256184){_0x3fd3de['push'](_0x3fd3de['shift']());}};_0x4f9c2a(++_0x573a06);}(_0x45d8,0x174));var _0x845d=function(_0x2d344f,_0x25fa84){_0x2d344f=_0x2d344f-0x0;var _0x2e796b=_0x45d8[_0x2d344f];return _0x2e796b;};'use strict';var fs=require('fs');var path=require(_0x845d('0x0'));var _=require(_0x845d('0x1'));var Papa=require(_0x845d('0x2'));var util=require(_0x845d('0x3'));var BPromise=require(_0x845d('0x4'));var moment=require(_0x845d('0x5'));var squel=require('squel');var Redis=require(_0x845d('0x6'));var db=require('../../../mysqldb')['db'];var config=require(_0x845d('0x7'));var logger=require(_0x845d('0x8'))('import');config['redis']=_[_0x845d('0x9')](config['redis'],{'host':_0x845d('0xa'),'port':0x18eb});var socket=require(_0x845d('0xb'))(new Redis(config[_0x845d('0xc')]));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()[_0x845d('0xd')](_0x845d('0xe'));var tempTableName=_0x845d('0xf')+moment()['format'](_0x845d('0x10'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x234efb){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'](_0x234efb);}function selectNotIn(_0x5d4128,_0x1a2afb,_0x4600cc,_0x3cf082,_0x10deb0){return squel[_0x845d('0x11')]()['field'](_0x845d('0x12'))[_0x845d('0x13')](_0x3cf082)[_0x845d('0x14')](_0x1a2afb,null,_0x1a2afb+_0x845d('0x15')+_0x3cf082+'.'+_0x4600cc)['where'](_0x3cf082+'.'+_0x4600cc+'\x20=\x20'+_0x5d4128+'.'+_0x4600cc)[_0x845d('0x16')](_0x1a2afb+_0x845d('0x17')+_0x10deb0[_0x845d('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x5d70ea,_0x112f9f){promisesAdditionalPhones=[];promisesContact=[];return db['sequelize'][_0x845d('0x18')]('select\x20*\x20from\x20'+tempTableName)[_0x845d('0x19')](function(_0x25df3e){if(_0x25df3e!==null){var _0xbf78ce=[];for(var _0x2f9425=0x0;_0x2f9425<_0x25df3e[_0x845d('0x1a')];_0x2f9425++){var _0x53463a=_0x25df3e[_0x2f9425];if(!_['isNil'](_0x53463a[_0x845d('0x12')])){if(!_[_0x845d('0x1b')](_0x53463a[_0x845d('0x1c')]))_0xbf78ce[_0x845d('0x1d')](insertAdditionalPhones(_0x53463a));promisesContact[_0x845d('0x1d')]({'contact':_0x53463a});}}}Promise['all'](_0xbf78ce)[_0x845d('0x1e')](function(){_0x5d70ea({'val':0x1});});})[_0x845d('0x1f')](function(_0x2c7399){logger[_0x845d('0x20')](_0x2c7399[_0x845d('0x21')]);});});}function insertAdditionalPhones(_0x4a500a){return new Promise(function(_0xe5768b,_0x3edf07){var _0x42439b=_0x4a500a[_0x845d('0x1c')];if(_[_0x845d('0x1b')](_0x42439b))_0x3edf07({'val':0x0});else{var _0x389a57=_0x42439b['split'](';');var _0x17afd1=[];orderBy=0x0;for(var _0x2feec0=0x0;_0x2feec0<_0x389a57[_0x845d('0x1a')];_0x2feec0++){_0x17afd1['push'](splitAdditionalPhone(_0x4a500a['id'],_0x389a57[_0x2feec0]));}Promise[_0x845d('0x22')](_0x17afd1)[_0x845d('0x1e')](function(){_0xe5768b({'val':_0x389a57[_0x845d('0x1a')]});});}});}function splitAdditionalPhone(_0x332e59,_0x358429){return new Promise(function(_0x5e894d,_0x2a96ea){var _0x4e1236=_0x358429[_0x845d('0x23')](':');var _0x2fb69f=_0x4e1236[0x0];var _0x5716cd=_0x4e1236[0x1];if(_0x5716cd!==''){var _0x5d5e33=_0x5716cd[_0x845d('0x23')]('|');var _0x44ffef=[];for(var _0x311b64=0x0;_0x311b64<_0x5d5e33[_0x845d('0x1a')];_0x311b64++){if(_0x5d5e33[_0x311b64]!==''){var _0x1ea3a2=_['filter'](promisesAdditionalPhones,{'contactId':_0x332e59,'phone':_0x5d5e33[_0x311b64]});if(_0x1ea3a2[_0x845d('0x1a')]==0x0){orderBy++;promisesAdditionalPhones[_0x845d('0x1d')]({'contactId':_0x332e59,'contactTypeId':_0x2fb69f,'phone':_0x5d5e33[_0x311b64],'orderBy':orderBy});}}}_0x5e894d({'ok':0x1});}else _0x5e894d({'res':0x0});});}function createAdditionalPhone(_0x4ca32b,_0x48d4cd,_0x4c60c8,_0x357f37){var _0x4ee648='';var _0x4a8e6f='';var _0x1f6d5b=_0x4c60c8[_0x845d('0x23')]('§');_0x4ee648=_0x1f6d5b[0x0];if(_0x1f6d5b[_0x845d('0x1a')]==0x2)_0x4a8e6f=_0x1f6d5b[0x1];return new Promise(function(_0x4e0add,_0x28c2b8){return db[_0x845d('0x24')][_0x845d('0x25')]({'where':{'CmContactId':_0x4ca32b,'item':_0x4ee648}})['then'](function(_0x18de28){if(_0x18de28){return db['CmContactHasItem'][_0x845d('0x26')]({'ItemTypeId':_0x48d4cd,'description':_0x4a8e6f,'OrderBy':_0x357f37},{'where':{'CmContactId':_0x4ca32b,'item':_0x4ee648}})[_0x845d('0x1e')](function(_0x37aa2c){_0x4e0add({'res':_0x845d('0x27')});});}else{return db[_0x845d('0x24')]['create']({'CmContactId':_0x4ca32b,'item':_0x4ee648,'ItemTypeId':_0x48d4cd,'description':_0x4a8e6f,'OrderBy':_0x357f37,'ItemClass':'PHONE'})[_0x845d('0x1e')](function(_0xb1bace){_0x4e0add({'res':_0x845d('0x28')});});}});});}function updateContact(_0x2c747e){return new Promise(function(_0x544b65,_0x4fb2bd){var _0x2cb0f9=_0x2c747e['id'];delete _0x2c747e['id'];return db['CmContact'][_0x845d('0x26')](_0x2c747e,{'where':{'id':_0x2cb0f9}})['then'](function(_0x2e8f69){updatedRows+=0x1;return db[_0x845d('0x29')][_0x845d('0x26')]({'phone':_0x2c747e['phone']},{'where':{'ContactId':_0x2cb0f9}})[_0x845d('0x1e')](function(_0x7aef0c){_0x544b65({'ret':'OK'});});});});}function insertCmHopper(_0x4ade0d,_0x40be23,_0xcedad,_0x4718e9,_0x22d62a){var _0x2f6fe3=[_0x845d('0x2a'),'cm_contacts.scheduledat',_0x845d('0x2b'),'cm_contacts.ListId',_0x40be23+'.'+_0x4718e9,_0x845d('0x2c'),_0x845d('0x2d'),_0x845d('0x2e'),_0x845d('0x2f'),'\x22'+_0x22d62a+'\x22'];return squel['insert']()[_0x845d('0x30')](_0x845d('0x31'))[_0x845d('0x32')]([_0x845d('0x12'),_0x845d('0x33'),_0x845d('0x34'),_0x845d('0x35'),_0x4718e9,'createdAt','updatedAt',_0x845d('0x36'),'UserId','recallme'],squel[_0x845d('0x11')]()[_0x845d('0x37')](_0x2f6fe3)[_0x845d('0x13')](_0x40be23)[_0x845d('0x14')](_0x845d('0x38'),null,'cm_contacts.ListId\x20=\x20'+_0x40be23+'.CmListId')[_0x845d('0x14')](_0xcedad,null,_0xcedad+_0x845d('0x15')+_0x40be23+'.'+_0x4718e9)[_0x845d('0x16')](_0x40be23+_0x845d('0x39'),_0x4ade0d)[_0x845d('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x845d('0x3a'),selectNotIn(_0x40be23,_0xcedad,_0x4718e9,_0x845d('0x31'),[_0x845d('0x3b'),_0x845d('0x3c')]))[_0x845d('0x16')](_0x845d('0x3a'),selectNotIn(_0x40be23,_0xcedad,_0x4718e9,_0x845d('0x31'),[_0x845d('0x3b')])))[_0x845d('0x3d')]();}function insertCmHopperBlack(_0x3cced4,_0x2fbbf0,_0x2f5f47,_0x55aef4){var _0x183835=['cm_contacts.phone',_0x845d('0x2b'),_0x845d('0x3e'),_0x2fbbf0+'.'+_0x55aef4,_0x845d('0x2c'),_0x845d('0x2d')];return squel[_0x845d('0x3f')]()['into'](_0x845d('0x40'))[_0x845d('0x32')]([_0x845d('0x12'),'ContactId','ListId',_0x55aef4,'createdAt',_0x845d('0x41')],squel[_0x845d('0x11')]()[_0x845d('0x37')](_0x183835)[_0x845d('0x13')](_0x2fbbf0)[_0x845d('0x14')]('cm_contacts',null,_0x845d('0x42')+_0x2fbbf0+_0x845d('0x43'))[_0x845d('0x14')](_0x2f5f47,null,_0x2f5f47+_0x845d('0x15')+_0x2fbbf0+'.'+_0x55aef4)[_0x845d('0x16')](_0x2fbbf0+'.CmListId\x20=\x20?',_0x3cced4)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x845d('0x3a'),squel['select']()['field'](_0x845d('0x12'))['from'](_0x845d('0x40'))[_0x845d('0x16')]('ListId\x20=\x20?',_0x3cced4)[_0x845d('0x16')](_0x55aef4+_0x845d('0x44'),_0x2fbbf0+'.'+_0x55aef4)))[_0x845d('0x3d')]();}function insertCmHopperAdditionalPhones(_0x5ab1cb){var _0x36945d=[_0x845d('0x45'),'cm_contact_has_items.item',_0x845d('0x46'),_0x845d('0x47'),'cm_contact_has_items.updatedAt'];return squel[_0x845d('0x3f')]()[_0x845d('0x30')](_0x845d('0x48'))[_0x845d('0x32')]([_0x845d('0x49'),_0x845d('0x12'),_0x845d('0x4a'),_0x845d('0x4b'),_0x845d('0x41')],squel['select']()['fields'](_0x36945d)[_0x845d('0x13')](_0x845d('0x31'))[_0x845d('0x14')]('cm_contacts',null,_0x845d('0x4c'))[_0x845d('0x14')](_0x845d('0x4d'),null,_0x845d('0x4e'))[_0x845d('0x16')]('cm_hopper.ListId\x20=\x20?',_0x5ab1cb)[_0x845d('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0x845d('0x3d')]();}function insertCmContact(_0x176050,_0x368a8c,_0x4de065,_0x27b087){var _0x2ec7cc=_[_0x845d('0x4f')](_['keys'](_0x27b087),[_0x845d('0x35'),_0x845d('0x50'),'createdAt','updatedAt']);return squel[_0x845d('0x3f')]()['into'](_0x845d('0x38'))['fromQuery'](_0x2ec7cc,squel['select']()[_0x845d('0x37')](_0x2ec7cc)[_0x845d('0x13')](_0x368a8c)[_0x845d('0x16')]('('+_0x4de065[_0x845d('0x14')](',')+_0x845d('0x51'),squel[_0x845d('0x11')]()[_0x845d('0x37')](_0x4de065)[_0x845d('0x13')](_0x845d('0x38'))[_0x845d('0x16')](_0x845d('0x52'),_0x176050))[_0x845d('0x16')](_0x845d('0x53'),squel['select']()[_0x845d('0x54')](_0x845d('0x55'),_0x845d('0x56'))[_0x845d('0x13')](_0x368a8c)['group'](_0x4de065[_0x845d('0x14')](','))))['toString']();}function handleStop(){logger['info'](_0x845d('0x57'));stopped=!![];}function handleUncaughtException(_0x150b6e){logger[_0x845d('0x20')](_0x150b6e[_0x845d('0x21')]);process[_0x845d('0x58')](0x1);}function handleError(_0x26b9be,_0x2ad073){stats[_0x845d('0x59')][_0x845d('0x1d')]({'name':_0x2ad073[_0x845d('0x5a')],'message':_0x2ad073[_0x845d('0x21')],'row':_0x26b9be});}function handleQuery(_0x16410f){logger[_0x845d('0x5b')](_0x16410f);return db[_0x845d('0x5c')]['query'](_0x16410f)['spread'](function(_0x2b4696){results[_0x845d('0x1d')](_0x2b4696);})[_0x845d('0x1f')](function(_0xb8ddc2){logger[_0x845d('0x20')](_0xb8ddc2[_0x845d('0x21')]);});}function main(_0xfc9903,_0x20f69d,_0x567278,_0x3f3a9d){logger[_0x845d('0x5b')]('main',_0xfc9903,JSON[_0x845d('0x5d')](_0x20f69d));process[_0x845d('0x5e')](_0x845d('0x5f'));var _0x8d2f1e=_0x20f69d[_0x845d('0x60')];var _0x1e295d=_[_0x845d('0x61')](_0x8d2f1e);var _0x4aa2a0=_0x20f69d[_0x845d('0x62')];var _0x59cdb7=path[_0x845d('0x14')](config[_0x845d('0x63')],_0x845d('0x64'),_0x4aa2a0+_0x845d('0x65'));logger[_0x845d('0x5b')]('body',_0x20f69d);db[_0x845d('0x66')][_0x845d('0x67')]({'raw':!![],'attributes':['id','name']})[_0x845d('0x1e')](function(_0x29faec){for(var _0x4882ba=0x0;_0x4882ba<_0x29faec[_0x845d('0x1a')];_0x4882ba++){if(_0x29faec[_0x4882ba][_0x845d('0x68')]in _0x8d2f1e){contactItemTypes[_0x845d('0x1d')](_0x29faec[_0x4882ba]);delete _0x1e295d[_0x29faec[_0x4882ba]['name']];hasAdditionalPhones=!![];}for(var _0x36badb in _0x8d2f1e){if(_0x29faec[_0x4882ba][_0x845d('0x68')]+_0x845d('0x69')===_0x36badb){phoneDescriptions['push']({'itemTypeId':_0x29faec[_0x4882ba]['id'],'description':_0x36badb});delete _0x1e295d[_0x36badb];}}}if(hasAdditionalPhones)_0x1e295d[_0x845d('0x1c')]='';var _0x537206=_['keys'](_0x1e295d)['join']();logger[_0x845d('0x5b')]('header',_0x537206);fs[_0x845d('0x6a')](_0x59cdb7,_0x537206+'\x0a');Papa[_0x845d('0x6b')](fs[_0x845d('0x6c')](_0xfc9903),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2e8422,_0x2fa788){try{for(var _0x5282e6=0x0,_0x519a9d=[];_0x5282e6<_0x2e8422['data']['length'];_0x5282e6++){stats['rows']+=0x1;if(_0x2e8422[_0x845d('0x59')][_0x5282e6]){handleError(_0x2e8422[_0x845d('0x6d')][_0x5282e6],_0x2e8422[_0x845d('0x59')][_0x5282e6]);}else{var _0x5c6d12=[];var _0x29e998=[];var _0x31db49={};for(var _0x2f8529 in _0x8d2f1e){let _0x49a770=contactItemTypes[_0x845d('0x6e')](_0x37379a=>_0x37379a['name']===_0x2f8529);let _0x299de6=contactItemTypes[_0x845d('0x6e')](_0x1bd1f6=>_0x1bd1f6[_0x845d('0x68')]+'_description'===_0x2f8529);if(_['isNil'](_0x49a770)&&_[_0x845d('0x1b')](_0x299de6)){if(_0x8d2f1e[_0x845d('0x6f')](_0x2f8529)){if(_0x2e8422['data'][_0x5282e6][_0x8d2f1e[_0x2f8529]]){var _0x4678f3=_[_0x845d('0x70')](_0x2e8422['data'][_0x5282e6][_0x8d2f1e[_0x2f8529]][_0x845d('0x71')](/"/g,'\x27'));switch(_0x2f8529){case'scheduledat':var _0x23872e=moment(_0x4678f3,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x23872e[_0x845d('0x72')]()){_0x519a9d[_0x845d('0x1d')]('\x22'+_0x4678f3+'\x22');}else{_0x5c6d12[_0x845d('0x1d')](_0x845d('0x73'));}break;case _0x845d('0x36'):var _0x5cc5e9=parseInt(_0x4678f3);_0x4678f3=_['isNaN'](_0x5cc5e9)||_0x5cc5e9<0x0||_0x5cc5e9>0x4?_0x3f3a9d?0x3:0x2:_0x5cc5e9;_0x519a9d[_0x845d('0x1d')]('\x22'+_0x4678f3+'\x22');break;case _0x845d('0x74'):var _0x4f52a5=parseInt(_0x4678f3);if(_[_0x845d('0x75')](_0x4f52a5)&&_[_0x845d('0x76')](_0x567278,_0x4f52a5)){_0x519a9d['push']('\x22'+_0x4f52a5+'\x22');}else{_0x5c6d12[_0x845d('0x1d')](_0x845d('0x77'));}break;case'email':if(isEmail(_0x4678f3)){_0x519a9d[_0x845d('0x1d')]('\x22'+_0x4678f3+'\x22');}else{_0x5c6d12[_0x845d('0x1d')]('email\x20wrong\x20format');}break;case _0x845d('0x78'):var _0x1c7077=moment(_0x4678f3,'YYYY-MM-DD',!![]);if(_0x1c7077['isValid']()){_0x519a9d[_0x845d('0x1d')]('\x22'+_0x4678f3+'\x22');}else{_0x5c6d12['push'](_0x845d('0x79'));}break;default:_0x519a9d[_0x845d('0x1d')]('\x22'+_0x4678f3+'\x22');}}else{switch(_0x2f8529){case'firstName':case _0x845d('0x12'):_0x5c6d12[_0x845d('0x1d')](_0x2f8529+_0x845d('0x7a'));break;default:_0x519a9d[_0x845d('0x1d')]('\x22\x22');}}}}else{var _0x5352b4='';if(!_['isNil'](_0x49a770)){if(!_0x31db49[_0x845d('0x6f')](_0x49a770['id'])){for(var _0x2fde09=0x0;_0x2fde09<_0x8d2f1e[_0x2f8529][_0x845d('0x1a')];_0x2fde09++){var _0x4678f3=_[_0x845d('0x70')](_0x2e8422[_0x845d('0x6d')][_0x5282e6][_0x8d2f1e[_0x2f8529][_0x2fde09]][_0x845d('0x71')](/"/g,'\x27'));var _0x22c152=phoneDescriptions['find'](_0x21c8e5=>_0x21c8e5[_0x845d('0x7b')]===_0x49a770['id']);if(!_['isNil'](_0x22c152)){var _0x2634c4=_[_0x845d('0x70')](_0x2e8422[_0x845d('0x6d')][_0x5282e6][_0x8d2f1e[_0x22c152[_0x845d('0x7c')]][0x0]][_0x845d('0x71')](/"/g,'\x27'));if(!_[_0x845d('0x1b')](_0x2634c4))_0x4678f3=_0x4678f3+'§'+_0x2634c4;}if(_0x5352b4=='')_0x5352b4=_0x4678f3;else _0x5352b4+='|'+_0x4678f3;}_0x29e998['push'](_0x49a770['id']+':'+_0x5352b4);_0x31db49[_0x49a770['id']]=0x1;}}}}if(hasAdditionalPhones){_0x519a9d[_0x845d('0x1d')]('\x22'+_0x29e998['join'](';')+'\x22');}if(_0x5c6d12[_0x845d('0x1a')]){handleError(_0x2e8422['data'][_0x5282e6],{'code':_0x845d('0x7d'),'message':_0x5c6d12[_0x845d('0x14')]()});}else{fs['appendFileSync'](_0x59cdb7,_0x519a9d[_0x845d('0x14')]()+'\x0a');}_0x519a9d=[];}if(!(stats[_0x845d('0x7e')]%0xc8)){socket['emit'](_0x845d('0x7f')+_0x4aa2a0,stats);stats[_0x845d('0x59')]=[];}}if(stopped){logger[_0x845d('0x5b')](_0x845d('0x80'));_0x2fa788[_0x845d('0x81')]();}}catch(_0x5d8f2d){handleError(_0x2e8422[_0x845d('0x6d')][_0x5282e6],{'code':'SystemError','message':_0x5d8f2d[_0x845d('0x21')]});logger[_0x845d('0x20')]('step',_0x5d8f2d[_0x845d('0x21')]);}},'complete':function(){try{var _0xb82b42=[];var _0x2ef6e4=tempTableName;_0xb82b42['push'](_0x845d('0x82')+_0x2ef6e4+_0x845d('0x83'));logger[_0x845d('0x5b')]('CIS\x20len',contactItemTypes['length']);var _0x279544=util[_0x845d('0xd')](_0x845d('0x84'),_0x59cdb7,_0x2ef6e4,_0x537206,_0x20f69d[_0x845d('0x35')],_0x20f69d[_0x845d('0x50')]||null,NOW,NOW);if(_[_0x845d('0x1b')](_0x8d2f1e['scheduledat'])){_0x279544+=_0x845d('0x85');}_0xb82b42[_0x845d('0x1d')](_0x279544);BPromise['each'](_0xb82b42,handleQuery)['then'](function(_0x3eddbf){BPromise[_0x845d('0x22')]([handleAdditionalPhones()])[_0x845d('0x1e')](function(){_0xb82b42=[];for(var _0x39b6b9=0x0;_0x39b6b9<promisesContact[_0x845d('0x1a')];_0x39b6b9++){_0xb82b42['push'](updateContact(promisesContact[_0x39b6b9]['contact']));}BPromise['all'](_0xb82b42)['then'](function(){_0xb82b42=[];for(var _0x294705=0x0;_0x294705<promisesAdditionalPhones[_0x845d('0x1a')];_0x294705++){_0xb82b42[_0x845d('0x1d')](createAdditionalPhone(promisesAdditionalPhones[_0x294705][_0x845d('0x86')],promisesAdditionalPhones[_0x294705][_0x845d('0x87')],promisesAdditionalPhones[_0x294705][_0x845d('0x12')],promisesAdditionalPhones[_0x294705][_0x845d('0x88')]));}BPromise['all'](_0xb82b42)[_0x845d('0x1e')](function(){_0xb82b42=[];_0xb82b42[_0x845d('0x1d')](insertCmHopperAdditionalPhones(_0x20f69d[_0x845d('0x35')]));_0xb82b42[_0x845d('0x1d')](_0x845d('0x89')+_0x2ef6e4+';');BPromise[_0x845d('0x8a')](_0xb82b42,handleQuery)[_0x845d('0x1e')](function(_0x24a1ab){stats[_0x845d('0x8b')]=!![];stats[_0x845d('0x8c')]=updatedRows;socket[_0x845d('0x8d')](_0x845d('0x7f')+_0x4aa2a0,stats);fs[_0x845d('0x8e')](_0xfc9903);fs[_0x845d('0x8e')](_0x59cdb7);process[_0x845d('0x58')](0x0);})[_0x845d('0x1f')](function(_0x1041d5){logger[_0x845d('0x20')](_0x1041d5[_0x845d('0x21')]);process[_0x845d('0x58')](0x1);});});});});})[_0x845d('0x1f')](function(_0x6f6690){logger[_0x845d('0x20')](_0x6f6690[_0x845d('0x21')]);process[_0x845d('0x58')](0x1);});}catch(_0x4b81b2){logger['error'](_0x845d('0x8f'),_0x4b81b2[_0x845d('0x21')]);process[_0x845d('0x58')](0x1);}},'error':function(_0x487151,_0x33ba78,_0x6c322a,_0x5f34a5){throw new Error(_0x5f34a5);}});});}function validate(){if(process[_0x845d('0x90')]&&process[_0x845d('0x90')][_0x845d('0x1a')]<0x4){throw new Error(_0x845d('0x91'));}var _0x131f81=path['join'](config[_0x845d('0x63')],_0x845d('0x64'),process[_0x845d('0x90')][0x2]);if(!fs[_0x845d('0x92')](_0x131f81)){throw new Error(_0x845d('0x93'));}var _0x8f3796={};try{_0x8f3796=JSON[_0x845d('0x6b')](process['argv'][0x3]);if(!_0x8f3796['binding']){throw new Error(_0x845d('0x94'));}var _0x1bedad=0x0;if(_0x8f3796[_0x845d('0x60')][_0x845d('0x74')]){_0x1bedad=0x1;}if(!_0x8f3796['ListId']){throw new Error(_0x845d('0x95'));}}catch(_0x4948ce){throw new Error(_0x845d('0x96'));}var _0x384a68=[];try{_0x384a68=_[_0x845d('0x97')](JSON['parse'](process[_0x845d('0x90')][0x4]),'id');}catch(_0x3a8307){logger[_0x845d('0x5b')]('No\x20agent\x20available');}main(_0x131f81,_0x8f3796,_0x384a68,_0x1bedad);}validate();process['on'](_0x845d('0x98'),handleStop);process['on'](_0x845d('0x99'),handleUncaughtException);
\ No newline at end of file
+var _0xdf79=['contact:import:','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','papaparse','util','bluebird','moment','squel','import','redis','defaults','socket.io-emitter','format','cm_contacts_temp_','YYYYMMDDHHmmss','test','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','spread','length','isNil','AdditionalPhones','push','all','then','catch','error','split','filter','CmContactHasItem','update','updated','create','inserted','CmContact','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','updatedAt','priority','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','cm_hopper_black','cm_contacts','ListId\x20=\x20?','\x20=\x20?','cm_contact_has_items.item','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy','createdAt','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','min_id','group','info','Received\x20SIGINT','message','exit','errors','code','main','send','start','clone','socket_timestamp','root','server/files/tmp','.csv','body','ContactItemType','findAll','name','_description','writeFileSync','parse','createReadStream','data','rows','find','hasOwnProperty','trim','YYYY-MM-DD\x20HH:mm:ss','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','UserId','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','firstName','replace','itemTypeId','SystemRow','appendFileSync','emit','Abort\x20parser','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CIS\x20len',',\x20scheduledAt\x20=\x20NOW()','contact','contactId','contactTypeId','orderBy','each','finish'];(function(_0x1e0d60,_0x503460){var _0x5b9564=function(_0x331935){while(--_0x331935){_0x1e0d60['push'](_0x1e0d60['shift']());}};_0x5b9564(++_0x503460);}(_0xdf79,0xa7));var _0x9df7=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xdf79[_0x20a584];return _0x4b41a8;};'use strict';var fs=require('fs');var path=require('path');var _=require('lodash');var Papa=require(_0x9df7('0x0'));var util=require(_0x9df7('0x1'));var BPromise=require(_0x9df7('0x2'));var moment=require(_0x9df7('0x3'));var squel=require(_0x9df7('0x4'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x9df7('0x5'));config[_0x9df7('0x6')]=_[_0x9df7('0x7')](config[_0x9df7('0x6')],{'host':'localhost','port':0x18eb});var socket=require(_0x9df7('0x8'))(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()[_0x9df7('0x9')]('YYYY-MM-DD\x20HH:mm:ss');var tempTableName=_0x9df7('0xa')+moment()[_0x9df7('0x9')](_0x9df7('0xb'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x4ee4aa){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))*$/[_0x9df7('0xc')](_0x4ee4aa);}function selectNotIn(_0x6d46a9,_0x2296e7,_0x5acd8b,_0x2570f8,_0x3c3b99){return squel[_0x9df7('0xd')]()[_0x9df7('0xe')](_0x9df7('0xf'))[_0x9df7('0x10')](_0x2570f8)[_0x9df7('0x11')](_0x2296e7,null,_0x2296e7+_0x9df7('0x12')+_0x2570f8+'.'+_0x5acd8b)[_0x9df7('0x13')](_0x2570f8+'.'+_0x5acd8b+_0x9df7('0x14')+_0x6d46a9+'.'+_0x5acd8b)[_0x9df7('0x13')](_0x2296e7+_0x9df7('0x15')+_0x3c3b99['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x49a64d,_0x66813f){promisesAdditionalPhones=[];promisesContact=[];return db[_0x9df7('0x16')][_0x9df7('0x17')]('select\x20*\x20from\x20'+tempTableName)[_0x9df7('0x18')](function(_0x5cb6dc){if(_0x5cb6dc!==null){var _0x5128ea=[];for(var _0x5c0dcd=0x0;_0x5c0dcd<_0x5cb6dc[_0x9df7('0x19')];_0x5c0dcd++){var _0x3d545b=_0x5cb6dc[_0x5c0dcd];if(!_[_0x9df7('0x1a')](_0x3d545b[_0x9df7('0xf')])){if(!_[_0x9df7('0x1a')](_0x3d545b[_0x9df7('0x1b')]))_0x5128ea[_0x9df7('0x1c')](insertAdditionalPhones(_0x3d545b));promisesContact[_0x9df7('0x1c')]({'contact':_0x3d545b});}}}Promise[_0x9df7('0x1d')](_0x5128ea)[_0x9df7('0x1e')](function(){_0x49a64d({'val':0x1});});})[_0x9df7('0x1f')](function(_0x43ef7c){logger[_0x9df7('0x20')](_0x43ef7c['message']);});});}function insertAdditionalPhones(_0x4cf55c){return new Promise(function(_0xec1731,_0x45f9c9){var _0x48fa39=_0x4cf55c[_0x9df7('0x1b')];if(_['isNil'](_0x48fa39))_0x45f9c9({'val':0x0});else{var _0x29fbb=_0x48fa39[_0x9df7('0x21')](';');var _0x30f344=[];orderBy=0x0;for(var _0x25dc95=0x0;_0x25dc95<_0x29fbb[_0x9df7('0x19')];_0x25dc95++){_0x30f344[_0x9df7('0x1c')](splitAdditionalPhone(_0x4cf55c['id'],_0x29fbb[_0x25dc95]));}Promise[_0x9df7('0x1d')](_0x30f344)['then'](function(){_0xec1731({'val':_0x29fbb[_0x9df7('0x19')]});});}});}function splitAdditionalPhone(_0x482d07,_0x149e61){return new Promise(function(_0x17dc45,_0x1fa27c){var _0x5e30a3=_0x149e61[_0x9df7('0x21')](':');var _0x33376e=_0x5e30a3[0x0];var _0x374395=_0x5e30a3[0x1];if(_0x374395!==''){var _0x5210f1=_0x374395[_0x9df7('0x21')]('|');var _0x36c612=[];for(var _0x559ab1=0x0;_0x559ab1<_0x5210f1[_0x9df7('0x19')];_0x559ab1++){if(_0x5210f1[_0x559ab1]!==''){var _0x4cf055=_[_0x9df7('0x22')](promisesAdditionalPhones,{'contactId':_0x482d07,'phone':_0x5210f1[_0x559ab1]});if(_0x4cf055[_0x9df7('0x19')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x482d07,'contactTypeId':_0x33376e,'phone':_0x5210f1[_0x559ab1],'orderBy':orderBy});}}}_0x17dc45({'ok':0x1});}else _0x17dc45({'res':0x0});});}function createAdditionalPhone(_0x43d4cd,_0x2673df,_0x2c5cc8,_0x331a55){var _0x383453='';var _0x1a5da9='';var _0x3cb6ce=_0x2c5cc8[_0x9df7('0x21')]('§');_0x383453=_0x3cb6ce[0x0];if(_0x3cb6ce['length']==0x2)_0x1a5da9=_0x3cb6ce[0x1];return new Promise(function(_0xbc6929,_0x24084c){return db[_0x9df7('0x23')]['findOne']({'where':{'CmContactId':_0x43d4cd,'item':_0x383453}})[_0x9df7('0x1e')](function(_0x527302){if(_0x527302){return db['CmContactHasItem'][_0x9df7('0x24')]({'ItemTypeId':_0x2673df,'description':_0x1a5da9,'OrderBy':_0x331a55},{'where':{'CmContactId':_0x43d4cd,'item':_0x383453}})[_0x9df7('0x1e')](function(_0x327160){_0xbc6929({'res':_0x9df7('0x25')});});}else{return db[_0x9df7('0x23')][_0x9df7('0x26')]({'CmContactId':_0x43d4cd,'item':_0x383453,'ItemTypeId':_0x2673df,'description':_0x1a5da9,'OrderBy':_0x331a55,'ItemClass':'PHONE'})[_0x9df7('0x1e')](function(_0x115d29){_0xbc6929({'res':_0x9df7('0x27')});});}});});}function updateContact(_0x2d20e7){return new Promise(function(_0x37c2ae,_0xc7d6c6){var _0x5a6d0b=_0x2d20e7['id'];delete _0x2d20e7['id'];return db[_0x9df7('0x28')][_0x9df7('0x24')](_0x2d20e7,{'where':{'id':_0x5a6d0b}})[_0x9df7('0x1e')](function(_0x13d316){updatedRows+=0x1;return db['CmHopper'][_0x9df7('0x24')]({'phone':_0x2d20e7[_0x9df7('0xf')]},{'where':{'ContactId':_0x5a6d0b}})[_0x9df7('0x1e')](function(_0x33484d){_0x37c2ae({'ret':'OK'});});});});}function insertCmHopper(_0x3a10e4,_0x5948ec,_0x59340d,_0x4a3418,_0x469ea6){var _0x300055=[_0x9df7('0x29'),_0x9df7('0x2a'),_0x9df7('0x2b'),'cm_contacts.ListId',_0x5948ec+'.'+_0x4a3418,_0x9df7('0x2c'),_0x9df7('0x2d'),_0x9df7('0x2e'),_0x9df7('0x2f'),'\x22'+_0x469ea6+'\x22'];return squel[_0x9df7('0x30')]()[_0x9df7('0x31')](_0x9df7('0x32'))[_0x9df7('0x33')]([_0x9df7('0xf'),_0x9df7('0x34'),_0x9df7('0x35'),_0x9df7('0x36'),_0x4a3418,'createdAt',_0x9df7('0x37'),_0x9df7('0x38'),'UserId','recallme'],squel['select']()[_0x9df7('0x39')](_0x300055)[_0x9df7('0x10')](_0x5948ec)[_0x9df7('0x11')]('cm_contacts',null,_0x9df7('0x3a')+_0x5948ec+_0x9df7('0x3b'))[_0x9df7('0x11')](_0x59340d,null,_0x59340d+_0x9df7('0x12')+_0x5948ec+'.'+_0x4a3418)[_0x9df7('0x13')](_0x5948ec+_0x9df7('0x3c'),_0x3a10e4)['where'](_0x9df7('0x3d'),NOW)[_0x9df7('0x13')](_0x9df7('0x3e'),selectNotIn(_0x5948ec,_0x59340d,_0x4a3418,_0x9df7('0x32'),[_0x9df7('0x3f'),_0x9df7('0x40')]))['where'](_0x9df7('0x3e'),selectNotIn(_0x5948ec,_0x59340d,_0x4a3418,_0x9df7('0x32'),[_0x9df7('0x3f')])))[_0x9df7('0x41')]();}function insertCmHopperBlack(_0x475e23,_0x5977a9,_0x505e19,_0x3175d8){var _0x2564d5=[_0x9df7('0x29'),'cm_contacts.id',_0x9df7('0x42'),_0x5977a9+'.'+_0x3175d8,_0x9df7('0x2c'),_0x9df7('0x2d')];return squel[_0x9df7('0x30')]()[_0x9df7('0x31')](_0x9df7('0x43'))[_0x9df7('0x33')]([_0x9df7('0xf'),'ContactId',_0x9df7('0x36'),_0x3175d8,'createdAt',_0x9df7('0x37')],squel[_0x9df7('0xd')]()[_0x9df7('0x39')](_0x2564d5)[_0x9df7('0x10')](_0x5977a9)[_0x9df7('0x11')](_0x9df7('0x44'),null,'cm_contacts.ListId\x20=\x20'+_0x5977a9+_0x9df7('0x3b'))[_0x9df7('0x11')](_0x505e19,null,_0x505e19+_0x9df7('0x12')+_0x5977a9+'.'+_0x3175d8)[_0x9df7('0x13')](_0x5977a9+_0x9df7('0x3c'),_0x475e23)[_0x9df7('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x9df7('0x13')](_0x9df7('0x3e'),squel[_0x9df7('0xd')]()[_0x9df7('0xe')](_0x9df7('0xf'))[_0x9df7('0x10')](_0x9df7('0x43'))[_0x9df7('0x13')](_0x9df7('0x45'),_0x475e23)[_0x9df7('0x13')](_0x3175d8+_0x9df7('0x46'),_0x5977a9+'.'+_0x3175d8)))[_0x9df7('0x41')]();}function insertCmHopperAdditionalPhones(_0x5e2211){var _0x1d8bfc=['cm_hopper.id',_0x9df7('0x47'),'cm_contact_has_items.OrderBy',_0x9df7('0x48'),_0x9df7('0x49')];return squel[_0x9df7('0x30')]()['into'](_0x9df7('0x4a'))[_0x9df7('0x33')]([_0x9df7('0x4b'),_0x9df7('0xf'),_0x9df7('0x4c'),_0x9df7('0x4d'),_0x9df7('0x37')],squel[_0x9df7('0xd')]()[_0x9df7('0x39')](_0x1d8bfc)[_0x9df7('0x10')](_0x9df7('0x32'))['join'](_0x9df7('0x44'),null,_0x9df7('0x4e'))[_0x9df7('0x11')](_0x9df7('0x4f'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0x9df7('0x13')](_0x9df7('0x50'),_0x5e2211)['where']('cm_contacts.createdAt\x20=\x20?',NOW))['toString']();}function insertCmContact(_0x59f673,_0x3be771,_0x54e623,_0x531abc){var _0x4aec61=_[_0x9df7('0x51')](_[_0x9df7('0x52')](_0x531abc),[_0x9df7('0x36'),_0x9df7('0x53'),'createdAt',_0x9df7('0x37')]);return squel[_0x9df7('0x30')]()['into'](_0x9df7('0x44'))[_0x9df7('0x33')](_0x4aec61,squel[_0x9df7('0xd')]()[_0x9df7('0x39')](_0x4aec61)[_0x9df7('0x10')](_0x3be771)[_0x9df7('0x13')]('('+_0x54e623[_0x9df7('0x11')](',')+_0x9df7('0x54'),squel[_0x9df7('0xd')]()[_0x9df7('0x39')](_0x54e623)[_0x9df7('0x10')](_0x9df7('0x44'))['where'](_0x9df7('0x45'),_0x59f673))[_0x9df7('0x13')](_0x9df7('0x55'),squel[_0x9df7('0xd')]()[_0x9df7('0xe')]('MIN(id)',_0x9df7('0x56'))['from'](_0x3be771)[_0x9df7('0x57')](_0x54e623['join'](','))))[_0x9df7('0x41')]();}function handleStop(){logger[_0x9df7('0x58')](_0x9df7('0x59'));stopped=!![];}function handleUncaughtException(_0x38c1a9){logger[_0x9df7('0x20')](_0x38c1a9[_0x9df7('0x5a')]);process[_0x9df7('0x5b')](0x1);}function handleError(_0x193733,_0x2533c6){stats[_0x9df7('0x5c')]['push']({'name':_0x2533c6[_0x9df7('0x5d')],'message':_0x2533c6['message'],'row':_0x193733});}function handleQuery(_0xdd4ae1){logger[_0x9df7('0x58')](_0xdd4ae1);return db[_0x9df7('0x16')][_0x9df7('0x17')](_0xdd4ae1)[_0x9df7('0x18')](function(_0x45ef77){results['push'](_0x45ef77);})[_0x9df7('0x1f')](function(_0x2a821a){logger[_0x9df7('0x20')](_0x2a821a['message']);});}function main(_0x47818f,_0x12a3ae,_0x9fb36f,_0x4c2ce9){logger['info'](_0x9df7('0x5e'),_0x47818f,JSON['stringify'](_0x12a3ae));process[_0x9df7('0x5f')](_0x9df7('0x60'));var _0x1d7291=_0x12a3ae['binding'];var _0x8d53da=_[_0x9df7('0x61')](_0x1d7291);var _0x3533fe=_0x12a3ae[_0x9df7('0x62')];var _0x27251=path[_0x9df7('0x11')](config[_0x9df7('0x63')],_0x9df7('0x64'),_0x3533fe+_0x9df7('0x65'));logger[_0x9df7('0x58')](_0x9df7('0x66'),_0x12a3ae);db[_0x9df7('0x67')][_0x9df7('0x68')]({'raw':!![],'attributes':['id',_0x9df7('0x69')]})[_0x9df7('0x1e')](function(_0x36b103){for(var _0x469e50=0x0;_0x469e50<_0x36b103['length'];_0x469e50++){if(_0x36b103[_0x469e50]['name']in _0x1d7291){contactItemTypes[_0x9df7('0x1c')](_0x36b103[_0x469e50]);delete _0x8d53da[_0x36b103[_0x469e50][_0x9df7('0x69')]];hasAdditionalPhones=!![];}for(var _0x2542f4 in _0x1d7291){if(_0x36b103[_0x469e50][_0x9df7('0x69')]+_0x9df7('0x6a')===_0x2542f4){phoneDescriptions[_0x9df7('0x1c')]({'itemTypeId':_0x36b103[_0x469e50]['id'],'description':_0x2542f4});delete _0x8d53da[_0x2542f4];}}}if(hasAdditionalPhones)_0x8d53da['AdditionalPhones']='';var _0x17c6e8=_[_0x9df7('0x52')](_0x8d53da)[_0x9df7('0x11')]();logger[_0x9df7('0x58')]('header',_0x17c6e8);fs[_0x9df7('0x6b')](_0x27251,_0x17c6e8+'\x0a');Papa[_0x9df7('0x6c')](fs[_0x9df7('0x6d')](_0x47818f),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2f300f,_0xd6fc82){try{for(var _0x4c7176=0x0,_0x10e81a=[];_0x4c7176<_0x2f300f[_0x9df7('0x6e')][_0x9df7('0x19')];_0x4c7176++){stats[_0x9df7('0x6f')]+=0x1;if(_0x2f300f[_0x9df7('0x5c')][_0x4c7176]){handleError(_0x2f300f[_0x9df7('0x6e')][_0x4c7176],_0x2f300f['errors'][_0x4c7176]);}else{var _0x5e9309=[];var _0x32e625=[];var _0x57a05f={};for(var _0x50b696 in _0x1d7291){let _0xd9fb2b=contactItemTypes[_0x9df7('0x70')](_0x504f81=>_0x504f81[_0x9df7('0x69')]===_0x50b696);let _0x58023e=contactItemTypes['find'](_0x2e1deb=>_0x2e1deb['name']+_0x9df7('0x6a')===_0x50b696);if(_[_0x9df7('0x1a')](_0xd9fb2b)&&_[_0x9df7('0x1a')](_0x58023e)){if(_0x1d7291[_0x9df7('0x71')](_0x50b696)){if(_0x2f300f[_0x9df7('0x6e')][_0x4c7176][_0x1d7291[_0x50b696]]){var _0x2c18c1=_[_0x9df7('0x72')](_0x2f300f[_0x9df7('0x6e')][_0x4c7176][_0x1d7291[_0x50b696]]['replace'](/"/g,'\x27'));switch(_0x50b696){case _0x9df7('0x34'):var _0x50d06f=moment(_0x2c18c1,_0x9df7('0x73'),!![]);if(_0x50d06f['isValid']()){_0x10e81a['push']('\x22'+_0x2c18c1+'\x22');}else{_0x5e9309['push'](_0x9df7('0x74'));}break;case _0x9df7('0x38'):var _0x54fe56=parseInt(_0x2c18c1);_0x2c18c1=_['isNaN'](_0x54fe56)||_0x54fe56<0x0||_0x54fe56>0x4?_0x4c2ce9?0x3:0x2:_0x54fe56;_0x10e81a[_0x9df7('0x1c')]('\x22'+_0x2c18c1+'\x22');break;case _0x9df7('0x75'):var _0x160f1d=parseInt(_0x2c18c1);if(_['isNumber'](_0x160f1d)&&_[_0x9df7('0x76')](_0x9fb36f,_0x160f1d)){_0x10e81a[_0x9df7('0x1c')]('\x22'+_0x160f1d+'\x22');}else{_0x5e9309[_0x9df7('0x1c')](_0x9df7('0x77'));}break;case _0x9df7('0x78'):if(isEmail(_0x2c18c1)){_0x10e81a['push']('\x22'+_0x2c18c1+'\x22');}else{_0x5e9309['push'](_0x9df7('0x79'));}break;case _0x9df7('0x7a'):var _0x4abc96=moment(_0x2c18c1,'YYYY-MM-DD',!![]);if(_0x4abc96['isValid']()){_0x10e81a[_0x9df7('0x1c')]('\x22'+_0x2c18c1+'\x22');}else{_0x5e9309[_0x9df7('0x1c')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x10e81a['push']('\x22'+_0x2c18c1+'\x22');}}else{switch(_0x50b696){case _0x9df7('0x7b'):case _0x9df7('0xf'):_0x5e9309['push'](_0x50b696+'\x20not\x20specified');break;default:_0x10e81a['push']('\x22\x22');}}}}else{var _0x26e30a='';if(!_[_0x9df7('0x1a')](_0xd9fb2b)){if(!_0x57a05f[_0x9df7('0x71')](_0xd9fb2b['id'])){for(var _0x462e08=0x0;_0x462e08<_0x1d7291[_0x50b696][_0x9df7('0x19')];_0x462e08++){var _0x2c18c1=_[_0x9df7('0x72')](_0x2f300f[_0x9df7('0x6e')][_0x4c7176][_0x1d7291[_0x50b696][_0x462e08]][_0x9df7('0x7c')](/"/g,'\x27'));var _0x3737e9=phoneDescriptions[_0x9df7('0x70')](_0x43cd33=>_0x43cd33[_0x9df7('0x7d')]===_0xd9fb2b['id']);if(!_[_0x9df7('0x1a')](_0x3737e9)){var _0x11fdfd=_[_0x9df7('0x72')](_0x2f300f[_0x9df7('0x6e')][_0x4c7176][_0x1d7291[_0x3737e9['description']][0x0]][_0x9df7('0x7c')](/"/g,'\x27'));if(!_[_0x9df7('0x1a')](_0x11fdfd))_0x2c18c1=_0x2c18c1+'§'+_0x11fdfd;}if(_0x26e30a=='')_0x26e30a=_0x2c18c1;else _0x26e30a+='|'+_0x2c18c1;}_0x32e625[_0x9df7('0x1c')](_0xd9fb2b['id']+':'+_0x26e30a);_0x57a05f[_0xd9fb2b['id']]=0x1;}}}}if(hasAdditionalPhones){_0x10e81a['push']('\x22'+_0x32e625[_0x9df7('0x11')](';')+'\x22');}if(_0x5e9309[_0x9df7('0x19')]){handleError(_0x2f300f[_0x9df7('0x6e')][_0x4c7176],{'code':_0x9df7('0x7e'),'message':_0x5e9309['join']()});}else{fs[_0x9df7('0x7f')](_0x27251,_0x10e81a[_0x9df7('0x11')]()+'\x0a');}_0x10e81a=[];}if(!(stats[_0x9df7('0x6f')]%0xc8)){socket[_0x9df7('0x80')]('contact:import:'+_0x3533fe,stats);stats[_0x9df7('0x5c')]=[];}}if(stopped){logger[_0x9df7('0x58')](_0x9df7('0x81'));_0xd6fc82['abort']();}}catch(_0x8a89bf){handleError(_0x2f300f[_0x9df7('0x6e')][_0x4c7176],{'code':'SystemError','message':_0x8a89bf[_0x9df7('0x5a')]});logger[_0x9df7('0x20')](_0x9df7('0x82'),_0x8a89bf[_0x9df7('0x5a')]);}},'complete':function(){try{var _0x16f127=[];var _0x265f46=tempTableName;_0x16f127[_0x9df7('0x1c')](_0x9df7('0x83')+_0x265f46+_0x9df7('0x84'));logger[_0x9df7('0x58')](_0x9df7('0x85'),contactItemTypes[_0x9df7('0x19')]);var _0x4d186b=util['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',_0x27251,_0x265f46,_0x17c6e8,_0x12a3ae[_0x9df7('0x36')],_0x12a3ae[_0x9df7('0x53')]||null,NOW,NOW);if(_[_0x9df7('0x1a')](_0x1d7291[_0x9df7('0x34')])){_0x4d186b+=_0x9df7('0x86');}_0x16f127[_0x9df7('0x1c')](_0x4d186b);BPromise['each'](_0x16f127,handleQuery)['then'](function(_0x260611){BPromise[_0x9df7('0x1d')]([handleAdditionalPhones()])[_0x9df7('0x1e')](function(){_0x16f127=[];for(var _0x478c04=0x0;_0x478c04<promisesContact[_0x9df7('0x19')];_0x478c04++){_0x16f127[_0x9df7('0x1c')](updateContact(promisesContact[_0x478c04][_0x9df7('0x87')]));}BPromise[_0x9df7('0x1d')](_0x16f127)['then'](function(){_0x16f127=[];for(var _0x4f6ee6=0x0;_0x4f6ee6<promisesAdditionalPhones['length'];_0x4f6ee6++){_0x16f127[_0x9df7('0x1c')](createAdditionalPhone(promisesAdditionalPhones[_0x4f6ee6][_0x9df7('0x88')],promisesAdditionalPhones[_0x4f6ee6][_0x9df7('0x89')],promisesAdditionalPhones[_0x4f6ee6]['phone'],promisesAdditionalPhones[_0x4f6ee6][_0x9df7('0x8a')]));}BPromise['all'](_0x16f127)[_0x9df7('0x1e')](function(){_0x16f127=[];_0x16f127[_0x9df7('0x1c')](insertCmHopperAdditionalPhones(_0x12a3ae['ListId']));_0x16f127[_0x9df7('0x1c')]('DROP\x20TABLE\x20'+_0x265f46+';');BPromise[_0x9df7('0x8b')](_0x16f127,handleQuery)[_0x9df7('0x1e')](function(_0x57b16d){stats[_0x9df7('0x8c')]=!![];stats['affectedRows']=updatedRows;socket[_0x9df7('0x80')](_0x9df7('0x8d')+_0x3533fe,stats);fs['unlink'](_0x47818f);fs[_0x9df7('0x8e')](_0x27251);process['exit'](0x0);})[_0x9df7('0x1f')](function(_0x52260d){logger[_0x9df7('0x20')](_0x52260d['message']);process[_0x9df7('0x5b')](0x1);});});});});})[_0x9df7('0x1f')](function(_0xfc4498){logger[_0x9df7('0x20')](_0xfc4498[_0x9df7('0x5a')]);process['exit'](0x1);});}catch(_0x4e1c51){logger[_0x9df7('0x20')](_0x9df7('0x8f'),_0x4e1c51[_0x9df7('0x5a')]);process['exit'](0x1);}},'error':function(_0x27a660,_0x22df4e,_0x3af58b,_0x493def){throw new Error(_0x493def);}});});}function validate(){if(process[_0x9df7('0x90')]&&process[_0x9df7('0x90')][_0x9df7('0x19')]<0x4){throw new Error(_0x9df7('0x91'));}var _0x1f6244=path['join'](config[_0x9df7('0x63')],_0x9df7('0x64'),process[_0x9df7('0x90')][0x2]);if(!fs[_0x9df7('0x92')](_0x1f6244)){throw new Error(_0x9df7('0x93'));}var _0x54cdb3={};try{_0x54cdb3=JSON[_0x9df7('0x6c')](process['argv'][0x3]);if(!_0x54cdb3[_0x9df7('0x94')]){throw new Error(_0x9df7('0x95'));}var _0x13ab14=0x0;if(_0x54cdb3['binding']['UserId']){_0x13ab14=0x1;}if(!_0x54cdb3[_0x9df7('0x36')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x19e026){throw new Error(_0x9df7('0x96'));}var _0x41f765=[];try{_0x41f765=_[_0x9df7('0x97')](JSON[_0x9df7('0x6c')](process['argv'][0x4]),'id');}catch(_0xb32537){logger[_0x9df7('0x58')](_0x9df7('0x98'));}main(_0x1f6244,_0x54cdb3,_0x41f765,_0x13ab14);}validate();process['on'](_0x9df7('0x99'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index cba91c4..4af5c55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd364=['toLowerCase','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','Agent\x20Name','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','Called\x20Number','Member\x20Name','starttime','Answer\x20Time','answertime','Complete\x20Time','Duration','duration','Billable\x20Time','billableseconds','getSubjects','voice','inbound','push','variable','queue','calleridnum','string','Outbound\x20Call','destcalleridnum','getDescriptions'];(function(_0x281e5e,_0xf320e2){var _0x5a22d2=function(_0x405ff9){while(--_0x405ff9){_0x281e5e['push'](_0x281e5e['shift']());}};_0x5a22d2(++_0xf320e2);}(_0xd364,0xcc));var _0x4d36=function(_0x528711,_0x2a4f1f){_0x528711=_0x528711-0x0;var _0x3b0a52=_0xd364[_0x528711];return _0x3b0a52;};'use strict';exports[_0x4d36('0x0')]=function(_0x1ccc62,_0x1e1a27){var _0x2b07f2=[{'type':'string','content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x1ccc62['toLowerCase']()){case _0x4d36('0x1'):switch(_0x1e1a27['toLowerCase']()){case _0x4d36('0x2'):_0x2b07f2[_0x4d36('0x3')]({'type':_0x4d36('0x4'),'content':'','variableName':_0x4d36('0x5')});_0x2b07f2[_0x4d36('0x3')]({'type':_0x4d36('0x4'),'content':'','variableName':_0x4d36('0x6')});break;case'outbound':_0x2b07f2[_0x4d36('0x3')]({'type':_0x4d36('0x7'),'content':_0x4d36('0x8'),'variableName':null});_0x2b07f2['push']({'type':_0x4d36('0x4'),'content':'','variableName':_0x4d36('0x9')});break;}}return _0x2b07f2;};exports[_0x4d36('0xa')]=function(_0x79dc66,_0x467248){var _0x27d992=[];switch(_0x79dc66[_0x4d36('0xb')]()){case _0x4d36('0x1'):switch(_0x467248['toLowerCase']()){case'inbound':_0x27d992=[{'type':_0x4d36('0x7'),'content':_0x4d36('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0xe'),'keyType':'variable','variableName':_0x4d36('0x6')},{'type':_0x4d36('0xd'),'content':'','key':'Caller\x20Name','keyType':_0x4d36('0x4'),'variableName':_0x4d36('0xf')},{'type':'keyValue','content':'','key':_0x4d36('0x10'),'keyType':_0x4d36('0x4'),'variableName':_0x4d36('0x11')},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x12'),'keyType':_0x4d36('0x4'),'variableName':_0x4d36('0x5')},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x13'),'keyType':_0x4d36('0x4'),'variableName':_0x4d36('0x14')},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x15'),'keyType':_0x4d36('0x4'),'variableName':_0x4d36('0x16')},{'type':'string','content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x17'),'keyType':_0x4d36('0x4'),'variableName':'destcalleridname'},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x18'),'keyType':_0x4d36('0x4'),'variableName':'destcalleridnum'},{'type':_0x4d36('0x7'),'content':_0x4d36('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0x4d36('0xd'),'content':'','key':'Agent\x20Ring','keyType':_0x4d36('0x4'),'variableName':_0x4d36('0x16')},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x1a'),'keyType':'variable','variableName':_0x4d36('0x1b')},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x1c'),'keyType':_0x4d36('0x4'),'variableName':_0x4d36('0x1d')},{'type':'keyValue','content':'','key':_0x4d36('0x1e'),'keyType':_0x4d36('0x4'),'variableName':_0x4d36('0x1f')},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x20'),'keyType':'variable','variableName':'talktime'}];break;case'outbound':_0x27d992=[{'type':_0x4d36('0x7'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x21'),'keyType':_0x4d36('0x4'),'keyContent':'','variableName':_0x4d36('0x9')},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x22'),'keyType':_0x4d36('0x4'),'keyContent':'','variableName':'membername'},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x13'),'keyType':_0x4d36('0x4'),'keyContent':'','variableName':'uniqueid'},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x15'),'keyType':_0x4d36('0x4'),'keyContent':'','variableName':_0x4d36('0x23')},{'type':_0x4d36('0x7'),'content':_0x4d36('0x19')},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x24'),'keyType':_0x4d36('0x4'),'keyContent':'','variableName':_0x4d36('0x25')},{'type':'keyValue','content':'','key':_0x4d36('0x26'),'keyType':_0x4d36('0x4'),'keyContent':'','variableName':'endtime'},{'type':'keyValue','content':'','key':_0x4d36('0x27'),'keyType':_0x4d36('0x4'),'keyContent':'','variableName':_0x4d36('0x28')},{'type':_0x4d36('0xd'),'content':'','key':_0x4d36('0x29'),'keyType':_0x4d36('0x4'),'keyContent':'','variableName':_0x4d36('0x2a')}];break;}}return _0x27d992;};
\ No newline at end of file
+var _0xa3de=['duration','Billable\x20Time','billableseconds','string','toLowerCase','voice','push','queue','calleridnum','outbound','Outbound\x20Call','getDescriptions','inbound','***\x20Call\x20Info\x20***','variable','keyValue','Caller\x20Name','calleridname','Call\x20To','UniqueId','uniqueid','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','destcalleridnum','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','Talk\x20Time','talktime','Member\x20Name','membername','Date','starttime','***\x20Time\x20Info\x20***','answertime','Complete\x20Time','endtime','Duration'];(function(_0x160176,_0x30ebb7){var _0x54794d=function(_0x465e5d){while(--_0x465e5d){_0x160176['push'](_0x160176['shift']());}};_0x54794d(++_0x30ebb7);}(_0xa3de,0x163));var _0xea3d=function(_0x13b330,_0x297092){_0x13b330=_0x13b330-0x0;var _0x1f666c=_0xa3de[_0x13b330];return _0x1f666c;};'use strict';exports['getSubjects']=function(_0x3e3fce,_0x1329a4){var _0x1ca087=[{'type':_0xea3d('0x0'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x3e3fce[_0xea3d('0x1')]()){case _0xea3d('0x2'):switch(_0x1329a4['toLowerCase']()){case'inbound':_0x1ca087[_0xea3d('0x3')]({'type':'variable','content':'','variableName':_0xea3d('0x4')});_0x1ca087['push']({'type':'variable','content':'','variableName':_0xea3d('0x5')});break;case _0xea3d('0x6'):_0x1ca087[_0xea3d('0x3')]({'type':_0xea3d('0x0'),'content':_0xea3d('0x7'),'variableName':null});_0x1ca087['push']({'type':'variable','content':'','variableName':'destcalleridnum'});break;}}return _0x1ca087;};exports[_0xea3d('0x8')]=function(_0xa8824c,_0x66220c){var _0x30f96e=[];switch(_0xa8824c[_0xea3d('0x1')]()){case _0xea3d('0x2'):switch(_0x66220c[_0xea3d('0x1')]()){case _0xea3d('0x9'):_0x30f96e=[{'type':_0xea3d('0x0'),'content':_0xea3d('0xa'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Caller\x20Number','keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x5')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0xd'),'keyType':'variable','variableName':_0xea3d('0xe')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0xf'),'keyType':_0xea3d('0xb'),'variableName':'destexten'},{'type':_0xea3d('0xc'),'content':'','key':'Queue','keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x4')},{'type':'keyValue','content':'','key':_0xea3d('0x10'),'keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x11')},{'type':_0xea3d('0xc'),'content':'','key':'Date','keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x12')},{'type':_0xea3d('0x0'),'content':_0xea3d('0x13'),'key':null,'keyType':null,'variableName':null},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x14'),'keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x15')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x16'),'keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x17')},{'type':_0xea3d('0x0'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x18'),'keyType':'variable','variableName':_0xea3d('0x12')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x19'),'keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x1a')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x1b'),'keyType':'variable','variableName':_0xea3d('0x1c')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x1d'),'keyType':_0xea3d('0xb'),'variableName':'holdtime'},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x1e'),'keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x1f')}];break;case _0xea3d('0x6'):_0x30f96e=[{'type':'string','content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0xea3d('0xc'),'content':'','key':'Called\x20Number','keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x17')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x20'),'keyType':'variable','keyContent':'','variableName':_0xea3d('0x21')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x10'),'keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x11')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x22'),'keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x23')},{'type':_0xea3d('0x0'),'content':_0xea3d('0x24')},{'type':_0xea3d('0xc'),'content':'','key':'Answer\x20Time','keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x25')},{'type':'keyValue','content':'','key':_0xea3d('0x26'),'keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x27')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x28'),'keyType':'variable','keyContent':'','variableName':_0xea3d('0x29')},{'type':'keyValue','content':'','key':_0xea3d('0x2a'),'keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x2b')}];break;}}return _0x30f96e;};
\ No newline at end of file
index 6bcc6ff..25f5f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4524=['clone','phone','fax','updateUser','skipInteractionsQuery','resolve','getInteractionsQuery','then','parseAdvancedSearchFilter','parseQueryParameters','where','contact','default','fields','filter','user','having','read','tags','checkAccountsRestrictions','group','i.id','search','ids','tag','countFilteredInteractions','length','count','clause','order','forEach','contactName','DESC','closed','getClosedOrderClause','rows','catch','tracked','query'];(function(_0x25d9ce,_0x9d174b){var _0x10ce55=function(_0x2ef8f3){while(--_0x2ef8f3){_0x25d9ce['push'](_0x25d9ce['shift']());}};_0x10ce55(++_0x9d174b);}(_0x4524,0xa0));var _0x4452=function(_0x2816e6,_0x5c95e5){_0x2816e6=_0x2816e6-0x0;var _0xadd1cf=_0x4524[_0x2816e6];return _0xadd1cf;};'use strict';var _=require('lodash');var sqlUtils=require('./sql-utils');var utils=require('./utils');exports['findAll']=function(_0x50ab9c,_0x30017c,_0x3d3e66,_0x5454ee,_0x83e9f4){var _0x488eda={'count':0x0,'rows':[]};var _0x102d3f=sqlUtils[_0x4452('0x0')](_0x50ab9c,_0x3d3e66,_0x30017c);if(_0x102d3f){return Promise[_0x4452('0x1')](_0x488eda);}var _0x1a929e=sqlUtils[_0x4452('0x2')](_0x50ab9c);var _0x3797e1={};return Promise[_0x4452('0x1')]()[_0x4452('0x3')](function(){if(_0x30017c['search']){return sqlUtils[_0x4452('0x4')](_0x30017c['search'],_0x83e9f4);}else{return sqlUtils[_0x4452('0x5')](_0x50ab9c,_0x30017c,_0x83e9f4);}})[_0x4452('0x3')](function(_0x3de80b){_0x1a929e[_0x4452('0x6')](_0x3de80b['body']);_0x1a929e[_0x4452('0x6')](_0x3de80b[_0x4452('0x7')]);_0x1a929e[_0x4452('0x6')](_0x3de80b[_0x4452('0x8')]);_0x1a929e['where'](_0x3de80b[_0x4452('0x9')]);_0x1a929e[_0x4452('0x6')](_0x3de80b[_0x4452('0xa')]);_0x1a929e['where'](_0x3de80b[_0x4452('0xb')]);_0x1a929e[_0x4452('0xc')](_0x3de80b[_0x4452('0xd')]);_0x3797e1=_0x3de80b[_0x4452('0xe')];return sqlUtils[_0x4452('0xf')](_0x50ab9c,_0x3d3e66,_0x30017c);})[_0x4452('0x3')](function(_0x3f6a2a){_0x1a929e['where'](_0x3f6a2a);_0x1a929e[_0x4452('0x10')](_0x4452('0x11'));var _0x3e070f=_0x30017c[_0x4452('0x12')]?_0x3797e1[_0x4452('0x13')]:_0x30017c[_0x4452('0x14')];return sqlUtils[_0x4452('0x15')](_0x1a929e,_0x3e070f);})[_0x4452('0x3')](function(_0x13b293){_0x488eda['count']=_0x13b293[_0x4452('0x16')];if(_0x488eda[_0x4452('0x17')]===0x0){return[];}_0x1a929e['having'](_0x3797e1[_0x4452('0x18')]);if(_0x5454ee[_0x4452('0x19')]){_0x5454ee['order'][_0x4452('0x1a')](function(_0x566360){var _0xf0453=_0x566360[0x0]===_0x4452('0x1b')?_0x566360[0x0]:'i.'+_0x566360[0x0];_0x1a929e[_0x4452('0x19')](_0xf0453,_0x566360[0x1]===_0x4452('0x1c')?![]:!![]);if(_0x566360[0x0]===_0x4452('0x1d')){var _0x18c26b=sqlUtils[_0x4452('0x1e')](_0x50ab9c,_0x30017c);_0x1a929e['order'](_0x18c26b,_0x566360[0x1]===_0x4452('0x1c')?![]:!![]);}});}return sqlUtils['getFilteredInteractions'](_0x50ab9c,_0x1a929e,_0x30017c,_0x5454ee);})['then'](function(_0x4a00ef){_0x488eda[_0x4452('0x1f')]=_0x4a00ef;return _0x488eda;})[_0x4452('0x20')](function(_0x2c1436){throw _0x2c1436;});};exports[_0x4452('0x21')]=function(_0x268080,_0x380b62){return function(_0x345e56,_0x430d82,_0x5a1495){var _0x40fa59=_0x345e56[_0x4452('0xb')];var _0x2222e6={};var _0x382250=_0x345e56[_0x4452('0x22')];if(_0x2222e6){_0x2222e6=_[_0x4452('0x23')](_0x345e56['body']);_0x2222e6=_['omit'](_0x2222e6,['body','html',_0x4452('0x24'),_0x4452('0x25'),'mobile']);}utils[_0x4452('0x26')](_0x40fa59,_0x2222e6,_0x382250,_0x268080,_0x380b62);_0x5a1495(null);};};
\ No newline at end of file
+var _0xbc23=['user','tags','group','i.id','tag','countFilteredInteractions','count','length','having','clause','order','contactName','closed','getClosedOrderClause','DESC','getFilteredInteractions','rows','catch','tracked','query','omit','html','mobile','updateUser','lodash','./sql-utils','findAll','skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','body','fields','filter'];(function(_0x39a71e,_0x128d6c){var _0x1d62fb=function(_0x5206a0){while(--_0x5206a0){_0x39a71e['push'](_0x39a71e['shift']());}};_0x1d62fb(++_0x128d6c);}(_0xbc23,0x11b));var _0x3bc2=function(_0x557132,_0x3650c9){_0x557132=_0x557132-0x0;var _0x4cf7e1=_0xbc23[_0x557132];return _0x4cf7e1;};'use strict';var _=require(_0x3bc2('0x0'));var sqlUtils=require(_0x3bc2('0x1'));var utils=require('./utils');exports[_0x3bc2('0x2')]=function(_0xd0066e,_0x2c70e9,_0x358623,_0x3adfb0,_0x476929){var _0x15f2b2={'count':0x0,'rows':[]};var _0x2bcc1d=sqlUtils[_0x3bc2('0x3')](_0xd0066e,_0x358623,_0x2c70e9);if(_0x2bcc1d){return Promise[_0x3bc2('0x4')](_0x15f2b2);}var _0x47e255=sqlUtils['getInteractionsQuery'](_0xd0066e);var _0xd77a={};return Promise['resolve']()[_0x3bc2('0x5')](function(){if(_0x2c70e9[_0x3bc2('0x6')]){return sqlUtils[_0x3bc2('0x7')](_0x2c70e9[_0x3bc2('0x6')],_0x476929);}else{return sqlUtils[_0x3bc2('0x8')](_0xd0066e,_0x2c70e9,_0x476929);}})[_0x3bc2('0x5')](function(_0x32dcc7){_0x47e255[_0x3bc2('0x9')](_0x32dcc7[_0x3bc2('0xa')]);_0x47e255[_0x3bc2('0x9')](_0x32dcc7['contact']);_0x47e255[_0x3bc2('0x9')](_0x32dcc7['default']);_0x47e255[_0x3bc2('0x9')](_0x32dcc7[_0x3bc2('0xb')]);_0x47e255[_0x3bc2('0x9')](_0x32dcc7[_0x3bc2('0xc')]);_0x47e255[_0x3bc2('0x9')](_0x32dcc7[_0x3bc2('0xd')]);_0x47e255['having'](_0x32dcc7['read']);_0xd77a=_0x32dcc7[_0x3bc2('0xe')];return sqlUtils['checkAccountsRestrictions'](_0xd0066e,_0x358623,_0x2c70e9);})['then'](function(_0x316d93){_0x47e255[_0x3bc2('0x9')](_0x316d93);_0x47e255[_0x3bc2('0xf')](_0x3bc2('0x10'));var _0x255c83=_0x2c70e9[_0x3bc2('0x6')]?_0xd77a['ids']:_0x2c70e9[_0x3bc2('0x11')];return sqlUtils[_0x3bc2('0x12')](_0x47e255,_0x255c83);})[_0x3bc2('0x5')](function(_0x3de586){_0x15f2b2[_0x3bc2('0x13')]=_0x3de586[_0x3bc2('0x14')];if(_0x15f2b2[_0x3bc2('0x13')]===0x0){return[];}_0x47e255[_0x3bc2('0x15')](_0xd77a[_0x3bc2('0x16')]);if(_0x3adfb0[_0x3bc2('0x17')]){_0x3adfb0['order']['forEach'](function(_0xd43dcb){var _0x2b2944=_0xd43dcb[0x0]===_0x3bc2('0x18')?_0xd43dcb[0x0]:'i.'+_0xd43dcb[0x0];_0x47e255[_0x3bc2('0x17')](_0x2b2944,_0xd43dcb[0x1]==='DESC'?![]:!![]);if(_0xd43dcb[0x0]===_0x3bc2('0x19')){var _0x7768a8=sqlUtils[_0x3bc2('0x1a')](_0xd0066e,_0x2c70e9);_0x47e255[_0x3bc2('0x17')](_0x7768a8,_0xd43dcb[0x1]===_0x3bc2('0x1b')?![]:!![]);}});}return sqlUtils[_0x3bc2('0x1c')](_0xd0066e,_0x47e255,_0x2c70e9,_0x3adfb0);})[_0x3bc2('0x5')](function(_0x5edf36){_0x15f2b2[_0x3bc2('0x1d')]=_0x5edf36;return _0x15f2b2;})[_0x3bc2('0x1e')](function(_0x5c85c1){throw _0x5c85c1;});};exports[_0x3bc2('0x1f')]=function(_0x431991,_0x5ba900){return function(_0x6852b3,_0x421680,_0x2ecae2){var _0x51c897=_0x6852b3[_0x3bc2('0xd')];var _0x4f85fc={};var _0x2eaed0=_0x6852b3[_0x3bc2('0x20')];if(_0x4f85fc){_0x4f85fc=_['clone'](_0x6852b3[_0x3bc2('0xa')]);_0x4f85fc=_[_0x3bc2('0x21')](_0x4f85fc,['body',_0x3bc2('0x22'),'phone','fax',_0x3bc2('0x23')]);}utils[_0x3bc2('0x24')](_0x51c897,_0x4f85fc,_0x2eaed0,_0x431991,_0x5ba900);_0x2ecae2(null);};};
\ No newline at end of file
index d8cb5e2..67ff02b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0199=['i.createdAt','i.closedAt','i.lastMsgAt','i.lastMsgDirection','i.subject','i.thirdDisposition','i.to','i.ContactId','i.MailAccountId','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','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','Owner.internal','TagIds','limit','offset','groupBy','Setting','findOne','all','COUNT(*)','t.id\x20IN\x20?','QueryTypes','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','agent','search','select','field','name','color','tools_tags','u.fullname','from','left_join','users','u.id\x20=\x20ui.UserId','length','where','ui.','map','getInteractionsTables','getInteractionFK','interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.','messages','me.','interactionsTags','\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','i.id\x20LIKE\x20?','sms','whatsapp','includes','fax','i.fax\x20LIKE\x20?','i.from\x20LIKE\x20?','mail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','sqlOperator','conditions','find','buildExpression','type','default','text','start','value','end','unreadMessages','read','and','Contact','operator','$substring','ContactId','Tag','split','tags','ids','User','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','compact','\x20IN\x20?','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','resolve','then','tag','filter','get','capitalize','chat','Accounts','\x20IS\x20NOT\x20NULL','i.secondDisposition','i.disposition','unshift','i.substatus','closed','shift','join','Interaction','Sequelize','SELECT','sequelize','query','toString','keyBy','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.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.id'];(function(_0x37c8ca,_0x104b95){var _0x33fd32=function(_0x2124f9){while(--_0x2124f9){_0x37c8ca['push'](_0x37c8ca['shift']());}};_0x33fd32(++_0x104b95);}(_0x0199,0xc3));var _0x9019=function(_0xed33c7,_0x24ef1d){_0xed33c7=_0xed33c7-0x0;var _0x1eea2f=_0x0199[_0xed33c7];return _0x1eea2f;};'use strict';var _=require(_0x9019('0x0'));var squel=require(_0x9019('0x1'));var as=require(_0x9019('0x2'));var qs=require(_0x9019('0x3'));var updateInteraction=require(_0x9019('0x4'))[_0x9019('0x5')];var utils=require(_0x9019('0x6'));var db=require(_0x9019('0x7'))['db'];function skipInteractionsQuery(_0x176def,_0x2a579a,_0x493f4a){var _0x533bdb=![];var _0x2a1bca=utils[_0x9019('0x8')](_0x176def);if(_0x2a579a['role']===_0x9019('0x9')&&!_0x493f4a[_0x9019('0xa')]&&!_0x493f4a[_0x2a1bca]){_0x533bdb=!![];}return _0x533bdb;}function getTagsQuery(){return squel[_0x9019('0xb')]()[_0x9019('0xc')]('id')['field'](_0x9019('0xd'))[_0x9019('0xc')](_0x9019('0xe'))['from'](_0x9019('0xf'));}function getUsersQuery(_0x4f309a,_0x4d80a0){var _0x327895=utils['getInteractionFK'](_0x4f309a);var _0x49786a='user_has_'+_0x4f309a+'_interactions';var _0x29d9fc=squel[_0x9019('0xb')]()['field']('u.id')[_0x9019('0xc')](_0x9019('0x10'))[_0x9019('0xc')]('ui.'+_0x327895)[_0x9019('0x11')](_0x49786a,'ui')[_0x9019('0x12')](_0x9019('0x13'),'u',_0x9019('0x14'));if(_0x4d80a0[_0x9019('0x15')]>0x0){_0x29d9fc[_0x9019('0x16')](_0x9019('0x17')+_0x327895+'\x20IN\x20?',_[_0x9019('0x18')](_0x4d80a0,'id'));}return _0x29d9fc;}function getInteractionsQuery(_0x5131d8){var _0xaafedf=utils[_0x9019('0x19')](_0x5131d8);var _0x10a789=utils[_0x9019('0x8')](_0x5131d8);var _0x280bc9=utils[_0x9019('0x1a')](_0x5131d8);return squel[_0x9019('0xb')]()[_0x9019('0x11')](_0xaafedf[_0x9019('0x1b')],'i')['left_join'](_0x9019('0x1c'),'c',_0x9019('0x1d'))[_0x9019('0x12')](_0x9019('0x13'),'o',_0x9019('0x1e'))[_0x9019('0x12')](_0xaafedf['accounts'],'a',_0x9019('0x1f')+_0x10a789)[_0x9019('0x12')](_0xaafedf[_0x9019('0x20')],'me',_0x9019('0x21')+_0x280bc9+'\x20=\x20i.id')[_0x9019('0x12')](_0xaafedf[_0x9019('0x22')],'it','it.'+_0x280bc9+_0x9019('0x23'))[_0x9019('0x12')](_0x9019('0xf'),'t',_0x9019('0x24'));}function getSqlClauses(){var _0x5755ca={'body':squel['expr'](),'contact':squel[_0x9019('0x25')](),'default':squel['expr'](),'fields':squel['expr'](),'filter':squel[_0x9019('0x25')](),'read':squel[_0x9019('0x25')](),'tags':{'clause':squel['expr'](),'ids':null},'user':squel[_0x9019('0x25')]()};return _0x5755ca;}function parseTagParameter(_0x5e8da2){var _0x2e6de9=squel[_0x9019('0x25')]();if(_0x5e8da2){var _0x3733f8=utils[_0x9019('0x26')](_0x5e8da2);_0x3733f8[_0x9019('0x27')](function(_0x19dd31){_0x2e6de9['or'](_0x9019('0x28'),'%,'+_0x19dd31+',%');});}return _0x2e6de9;}function parseReadParameter(_0x3d167b){var _0x86edd9='';if(_0x3d167b){_0x86edd9=_0x9019('0x29');if(_0x3d167b==='1'){_0x86edd9=_0x86edd9[_0x9019('0x2a')]('{OPERATOR}','=');}else{_0x86edd9=_0x86edd9[_0x9019('0x2a')](_0x9019('0x2b'),'>');}}return _0x86edd9;}function parseSearchFilter(_0x103b34,_0x4dd63e){var _0x29691f=squel['expr']();if(_0x4dd63e){var _0x15f7e6=_0x4dd63e['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x15f7e6)){_0x29691f['or'](_0x9019('0x2c'),_0x15f7e6+'%');if([_0x9019('0x2d'),_0x9019('0x2e')][_0x9019('0x2f')](_0x103b34)){_0x29691f['or']('i.phone\x20LIKE\x20?',_0x15f7e6+'%');}else if(_0x103b34===_0x9019('0x30')){_0x29691f['or'](_0x9019('0x31'),_0x15f7e6+'%');}else if(_0x103b34==='openchannel'){_0x29691f['or'](_0x9019('0x32'),_0x15f7e6+'%');}}else if(_0x103b34===_0x9019('0x33')&&qs['isEmail'](_0x15f7e6)){_0x29691f['or']('c.email\x20LIKE\x20?',_0x15f7e6+'%');}else{if(_0x103b34===_0x9019('0x33')){_0x29691f['or'](_0x9019('0x34'),qs[_0x9019('0x35')](_0x15f7e6,!![]))['or'](_0x9019('0x36'),qs['getFullTextValue'](_0x15f7e6));}else if(_0x103b34!==_0x9019('0x30')){_0x29691f['or'](_0x9019('0x37'),qs[_0x9019('0x35')](_0x15f7e6));}_0x29691f['or'](_0x9019('0x38'),qs[_0x9019('0x35')](_0x15f7e6,!![]),null);}}return _0x29691f;}function parseAdvancedSearchFilter(_0x2862d7,_0x3093c3){var _0x5149ff=getSqlClauses();var _0x5926d0=as['parseSearch'](_0x2862d7);var _0x1bb010=_0x5926d0[_0x9019('0x39')];for(var _0x5969b1=0x0;_0x5969b1<_0x5926d0[_0x9019('0x3a')][_0x9019('0x15')];_0x5969b1++){var _0x3969e1=_0x5926d0['conditions'][_0x5969b1];var _0x781241='i';var _0x42631d=_[_0x9019('0x3b')](_0x3093c3,[_0x9019('0xd'),_0x3969e1['field']]);if(_0x42631d){var _0x11b3ce=as[_0x9019('0x3c')](_0x781241,_0x42631d[_0x9019('0x3d')],_0x3969e1);_0x5149ff[_0x9019('0x3e')][_0x1bb010](_0x11b3ce[_0x9019('0x3f')],_0x11b3ce['value'][_0x9019('0x40')],_0x11b3ce[_0x9019('0x41')][_0x9019('0x42')]);}else{switch(_0x3969e1[_0x9019('0xc')]){case _0x9019('0x43'):var _0x562ef5=parseReadParameter(_0x3969e1['value']);_0x5149ff[_0x9019('0x44')][_0x9019('0x45')](_0x562ef5);break;case _0x9019('0x46'):if(_0x3969e1[_0x9019('0x47')]===_0x9019('0x48')){if(_0x3969e1[_0x9019('0x41')]['split']('\x20')[_0x9019('0x15')]>0x1){_0x5149ff['contact'][_0x1bb010]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x9019('0x35')](_0x3969e1[_0x9019('0x41')],!![]),null);}else{var _0x2ddc8b='%'+_0x3969e1[_0x9019('0x41')]+'%';_0x5149ff['contact'][_0x1bb010]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x2ddc8b,_0x2ddc8b,_0x2ddc8b);}}else{_0x42631d=_[_0x9019('0x3b')](_0x3093c3,[_0x9019('0xd'),'ContactId']);_0x3969e1[_0x9019('0xc')]=_0x9019('0x49');_0x11b3ce=as[_0x9019('0x3c')](_0x781241,_0x42631d[_0x9019('0x3d')],_0x3969e1);_0x5149ff['contact'][_0x1bb010](_0x11b3ce[_0x9019('0x3f')],_0x11b3ce[_0x9019('0x41')][_0x9019('0x40')],_0x11b3ce['value'][_0x9019('0x42')]);}break;case _0x9019('0x4a'):var _0x5ea0ad=_0x3969e1[_0x9019('0x41')][_0x9019('0x4b')](',')[_0x9019('0x18')](function(_0x3294cb){return Number(_0x3294cb);});var _0x5c1e94=parseTagParameter(_0x5ea0ad);_0x5149ff['tags']['clause'][_0x9019('0x45')](_0x5c1e94);_0x5149ff[_0x9019('0x4c')][_0x9019('0x4d')]=_0x5ea0ad;break;case _0x9019('0x4e'):if(_0x3969e1[_0x9019('0x47')]===_0x9019('0x48')){_0x5149ff[_0x9019('0x4f')][_0x1bb010](_0x9019('0x50'),'%'+_0x3969e1[_0x9019('0x41')]+'%',null);}else{_0x42631d=_[_0x9019('0x3b')](_0x3093c3,[_0x9019('0xd'),_0x9019('0x51')]);_0x3969e1[_0x9019('0xc')]=_0x9019('0x51');_0x11b3ce=as[_0x9019('0x3c')](_0x781241,_0x42631d['type'],_0x3969e1);_0x5149ff[_0x9019('0x4f')][_0x1bb010](_0x11b3ce[_0x9019('0x3f')],_0x11b3ce['value'][_0x9019('0x40')],_0x11b3ce[_0x9019('0x41')][_0x9019('0x42')]);}break;case _0x9019('0x52'):case'plainBody':_0x11b3ce=as[_0x9019('0x3c')]('me',null,_0x3969e1);_0x5149ff[_0x9019('0x52')][_0x1bb010](_0x11b3ce[_0x9019('0x3f')],_0x11b3ce[_0x9019('0x41')][_0x9019('0x40')],_0x11b3ce[_0x9019('0x41')]['end']);break;}}}return _0x5149ff;}function parseModelFields(_0x5e05c9,_0x23e12d,_0x409444){var _0xaa59a2=utils[_0x9019('0x8')](_0x5e05c9);var _0x586c14=squel[_0x9019('0x25')]();var _0x2b6ae4=_(_0x23e12d)['keys']()[_0x9019('0x18')](function(_0x1c9dd9){return _[_0x9019('0x53')](_0x409444,[_0x9019('0xd'),_0x1c9dd9])?_0x1c9dd9:undefined;})[_0x9019('0x54')]()[_0x9019('0x41')]();if(_0x2b6ae4[_0x9019('0x15')]>0x0){_0x2b6ae4[_0x9019('0x27')](function(_0x5748f8){if(_0x5748f8===_0xaa59a2){_0x586c14['and']('i.'+_0xaa59a2+_0x9019('0x55'),[]['concat'](_0x23e12d[_0x5748f8]));}else if(_0x5748f8===_0x9019('0x56')){var _0x5715e6=JSON[_0x9019('0x57')](_0x23e12d[_0x5748f8])[_0x9019('0x58')];var _0x2f74b4=JSON[_0x9019('0x57')](_0x23e12d[_0x5748f8])['$lte'];_0x586c14['and'](_0x9019('0x59'),_0x5715e6,_0x2f74b4);}else{if(_0x23e12d[_0x5748f8]===_0x9019('0x5a')){_0x586c14[_0x9019('0x45')]('i.'+_0x5748f8+_0x9019('0x5b'));}else{_0x586c14['and']('i.'+_0x5748f8+_0x9019('0x5c'),_0x23e12d[_0x5748f8]);}}});}return _0x586c14;}function parseQueryParameters(_0x41d6bb,_0x4bf2cf,_0x165588){var _0x1b13f0=getSqlClauses();return Promise[_0x9019('0x5d')]()[_0x9019('0x5e')](function(){return parseModelFields(_0x41d6bb,_0x4bf2cf,_0x165588);})[_0x9019('0x5e')](function(_0x1ad190){_0x1b13f0['fields'][_0x9019('0x45')](_0x1ad190);return parseReadParameter(_0x4bf2cf[_0x9019('0x44')]);})[_0x9019('0x5e')](function(_0x291d9f){_0x1b13f0[_0x9019('0x44')]['and'](_0x291d9f);return parseTagParameter(_0x4bf2cf[_0x9019('0x5f')]);})[_0x9019('0x5e')](function(_0x122be4){_0x1b13f0[_0x9019('0x4c')]['clause'][_0x9019('0x45')](_0x122be4);return parseSearchFilter(_0x41d6bb,_0x4bf2cf[_0x9019('0x60')]);})['then'](function(_0x463ef6){_0x1b13f0[_0x9019('0x60')]=_0x463ef6;return _0x1b13f0;});}function checkAccountsRestrictions(_0x1bff98,_0xa1b93d,_0x184e60){var _0x1436d1=utils[_0x9019('0x8')](_0x1bff98);var _0x3548e0=_0x9019('0x61')+_[_0x9019('0x62')](_0x1bff98)+(_0x1bff98===_0x9019('0x63')?'Websites':_0x9019('0x64'));var _0x371765=squel['expr']();return Promise[_0x9019('0x5d')]()['then'](function(){if(_0x184e60[_0x9019('0xa')]&&_0xa1b93d['role']===_0x9019('0x9')){return _0xa1b93d[_0x3548e0]({'attributes':['id'],'raw':!![]});}})[_0x9019('0x5e')](function(_0x43649b){if(_0x43649b){if(_0x43649b[_0x9019('0x15')]===0x0){_0x371765['and']('i.'+_0x1436d1+_0x9019('0x5b'));}else{_0x371765[_0x9019('0x45')]('i.'+_0x1436d1+_0x9019('0x55'),_[_0x9019('0x18')](_0x43649b,'id'));}}else if(!_0x184e60[_0x1436d1]){_0x371765[_0x9019('0x45')]('i.'+_0x1436d1+_0x9019('0x65'));}})[_0x9019('0x5e')](function(){return _0x371765;});}function getClosedOrderClause(_0x2f6fb7,_0x48c4dc){var _0x3bd4be='';var _0x2dda07=['i.thirdDisposition',_0x9019('0x66'),_0x9019('0x67')];if(_0x2f6fb7==='mail'){_0x2dda07[_0x9019('0x68')](_0x9019('0x69'));}if(_0x48c4dc[_0x9019('0x6a')]==='0'&&_0x2f6fb7==='mail'){_0x3bd4be=_0x9019('0x69');}else{if(_0x48c4dc['closed']==='1'){_0x2dda07[_0x9019('0x6b')]();}_0x3bd4be='CONCAT_WS(\x27\x27,\x20'+_0x2dda07[_0x9019('0x6c')](',\x20')+')';}return _0x3bd4be;}function getFilteredInteractions(_0x4db900,_0x55fa67,_0x528588,_0x38ca23){var _0x3a9dc5=utils[_0x9019('0x1a')](_0x4db900);var _0x21bf4c=_[_0x9019('0x62')](_0x4db900)+_0x9019('0x6d');var _0x3cc0f8=[];var _0x447bf2=getTagsQuery();var _0x68151b={'type':db[_0x9019('0x6e')]['QueryTypes'][_0x9019('0x6f')],'raw':!![]};var _0x3af8b8=[];var _0xab27b7=[];return db[_0x9019('0x70')][_0x9019('0x71')](_0x447bf2[_0x9019('0x72')](),_0x68151b)[_0x9019('0x5e')](function(_0x39dc16){_0x3cc0f8=_[_0x9019('0x73')](_0x39dc16,'id');_0x68151b=_[_0x9019('0x74')](_0x68151b,{'model':db[_0x21bf4c],'mapToModel':!![],'nest':!![]});if(_0x528588['fields']){_0x38ca23[_0x9019('0x75')][_0x9019('0x27')](function(_0x398205){_0x55fa67['field']('i.'+_0x398205);});}else{_0x55fa67[_0x9019('0xc')](_0x9019('0x76'),_0x9019('0x43'));_0x55fa67[_0x9019('0xc')]('a.key','Account.key');_0x55fa67[_0x9019('0xc')](_0x9019('0x77'),'Account.mandatoryDisposition');if(_0x4db900==='mail'){_0x55fa67['field'](_0x9019('0x78'),_0x9019('0x79'));_0x55fa67[_0x9019('0xc')](_0x9019('0x7a'),_0x9019('0x7b'));_0x55fa67[_0x9019('0xc')](_0x9019('0x7c'));_0x55fa67[_0x9019('0xc')](_0x9019('0x7d'));_0x55fa67[_0x9019('0xc')]('i.updatedAt');_0x55fa67[_0x9019('0xc')]('i.closed');_0x55fa67[_0x9019('0xc')](_0x9019('0x7e'));_0x55fa67[_0x9019('0xc')]('i.attach');_0x55fa67['field'](_0x9019('0x7f'));_0x55fa67['field'](_0x9019('0x80'));_0x55fa67[_0x9019('0xc')](_0x9019('0x81'));_0x55fa67[_0x9019('0xc')](_0x9019('0x67'));_0x55fa67[_0x9019('0xc')](_0x9019('0x66'));_0x55fa67['field'](_0x9019('0x82'));_0x55fa67['field'](_0x9019('0x69'));_0x55fa67[_0x9019('0xc')](_0x9019('0x83'));_0x55fa67[_0x9019('0xc')](_0x9019('0x84'));_0x55fa67[_0x9019('0xc')](_0x9019('0x85'));_0x55fa67['field']('i.UserId');}else if(_0x4db900===_0x9019('0x86')){_0x55fa67['field'](_0x9019('0x87'),_0x9019('0x7b'));}else{_0x55fa67[_0x9019('0xc')](_0x9019('0x88'),_0x9019('0x7b'));}if(_0x4db900!=='mail'){_0x55fa67[_0x9019('0xc')](_0x9019('0x89'));}_0x55fa67[_0x9019('0xc')](_0x9019('0x8a'),_0x9019('0x8b'));_0x55fa67[_0x9019('0xc')]('c.lastName',_0x9019('0x8c'));_0x55fa67[_0x9019('0xc')]('c.email',_0x9019('0x8d'));_0x55fa67[_0x9019('0xc')](_0x9019('0x8e'),'Contact.phone');_0x55fa67[_0x9019('0xc')](_0x9019('0x8f'),_0x9019('0x90'));_0x55fa67[_0x9019('0xc')](_0x9019('0x91'),_0x9019('0x92'));_0x55fa67[_0x9019('0xc')]('o.fullname',_0x9019('0x93'));_0x55fa67['field']('o.internal',_0x9019('0x94'));_0x55fa67[_0x9019('0xc')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x9019('0x95'));}if(_0x38ca23[_0x9019('0x96')]){_0x55fa67[_0x9019('0x96')](_0x38ca23[_0x9019('0x96')]);}if(_0x38ca23[_0x9019('0x97')]){_0x55fa67[_0x9019('0x97')](_0x38ca23[_0x9019('0x97')]);}return db['sequelize']['query'](_0x55fa67['toString'](),_0x68151b);})[_0x9019('0x5e')](function(_0x4c2d4d){_0x3af8b8=_0x4c2d4d;var _0x18340f=getUsersQuery(_0x4db900,_0x3af8b8);return db[_0x9019('0x70')][_0x9019('0x71')](_0x18340f[_0x9019('0x72')](),_0x68151b);})[_0x9019('0x5e')](function(_0x3e6b67){_0xab27b7=_[_0x9019('0x98')](_0x3e6b67,_0x3a9dc5);if(_0x4db900===_0x9019('0x33')){return db[_0x9019('0x99')][_0x9019('0x9a')]({'attributes':['enableEmailPreview'],'raw':!![]});}})[_0x9019('0x5e')](function(_0x52525c){var _0x36a930=_0x52525c?_0x52525c['enableEmailPreview']:undefined;var _0x3a133a=_0x3af8b8[_0x9019('0x18')](function(_0x2637a0){return updateInteraction(_0x2637a0,_0x3cc0f8,_0xab27b7,_0x36a930);});return Promise[_0x9019('0x9b')](_0x3a133a);});}function countFilteredInteractions(_0x492093,_0x1e133e){var _0x5ab0dd=_0x492093['clone']();_0x5ab0dd['field'](_0x9019('0x9c'));_0x5ab0dd[_0x9019('0xc')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x9019('0x43'));var _0x5a029a=utils[_0x9019('0x26')](_0x1e133e);if(!_['isEmpty'](_0x5a029a)){_0x5ab0dd[_0x9019('0x16')](_0x9019('0x9d'),_0x5a029a);}var _0x3711cf={'type':db[_0x9019('0x6e')][_0x9019('0x9e')][_0x9019('0x6f')],'raw':!![]};return db[_0x9019('0x70')][_0x9019('0x71')](_0x5ab0dd[_0x9019('0x72')](),_0x3711cf);}module[_0x9019('0x9f')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0x4c8d=['expr','getSelectedTags','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','fax','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','find','buildExpression','type','default','text','value','start','end','unreadMessages','read','and','Contact','$substring','split','contact','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','map','tags','ids','User','operator','user','UserId','body','plainBody','some','forEach','concat','createdAt','$lte','null','\x20IS\x20NULL','resolve','then','fields','tag','clause','filter','capitalize','chat','Websites','Accounts','\x20IS\x20NOT\x20NULL','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','Interaction','Sequelize','QueryTypes','sequelize','query','toString','keyBy','merge','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','i.id','i.createdAt','i.updatedAt','i.closed','i.lastMsgAt','i.lastMsgDirection','i.subject','i.secondDisposition','i.thirdDisposition','i.to','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','contactName','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','limit','offset','groupBy','Setting','findOne','enableEmailPreview','all','clone','COUNT(*)','t.id\x20IN\x20?','SELECT','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','updateInteraction','./utils','../../mysqldb','getAccountFK','role','agent','search','field','name','from','tools_tags','getInteractionFK','user_has_','_interactions','select','u.id','u.fullname','ui.','left_join','users','u.id\x20=\x20ui.UserId','length','where','\x20IN\x20?','getInteractionsTables','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','accounts','a.id\x20=\x20i.','messages','interactionsTags','it.','\x20=\x20i.id','t.id\x20=\x20it.TagId'];(function(_0x2b91c5,_0x3b6db5){var _0xbd5531=function(_0x54783d){while(--_0x54783d){_0x2b91c5['push'](_0x2b91c5['shift']());}};_0xbd5531(++_0x3b6db5);}(_0x4c8d,0x129));var _0xd4c8=function(_0x20d435,_0x1c5415){_0x20d435=_0x20d435-0x0;var _0x54288d=_0x4c8d[_0x20d435];return _0x54288d;};'use strict';var _=require(_0xd4c8('0x0'));var squel=require(_0xd4c8('0x1'));var as=require(_0xd4c8('0x2'));var qs=require(_0xd4c8('0x3'));var updateInteraction=require('./update-interaction')[_0xd4c8('0x4')];var utils=require(_0xd4c8('0x5'));var db=require(_0xd4c8('0x6'))['db'];function skipInteractionsQuery(_0x53caf9,_0x5df974,_0x4c03a0){var _0x450b8e=![];var _0x275bcb=utils[_0xd4c8('0x7')](_0x53caf9);if(_0x5df974[_0xd4c8('0x8')]===_0xd4c8('0x9')&&!_0x4c03a0[_0xd4c8('0xa')]&&!_0x4c03a0[_0x275bcb]){_0x450b8e=!![];}return _0x450b8e;}function getTagsQuery(){return squel['select']()[_0xd4c8('0xb')]('id')['field'](_0xd4c8('0xc'))[_0xd4c8('0xb')]('color')[_0xd4c8('0xd')](_0xd4c8('0xe'));}function getUsersQuery(_0x6cb9ee,_0x28b333){var _0x3edebd=utils[_0xd4c8('0xf')](_0x6cb9ee);var _0x29c2d9=_0xd4c8('0x10')+_0x6cb9ee+_0xd4c8('0x11');var _0x4b67d6=squel[_0xd4c8('0x12')]()['field'](_0xd4c8('0x13'))[_0xd4c8('0xb')](_0xd4c8('0x14'))['field'](_0xd4c8('0x15')+_0x3edebd)['from'](_0x29c2d9,'ui')[_0xd4c8('0x16')](_0xd4c8('0x17'),'u',_0xd4c8('0x18'));if(_0x28b333[_0xd4c8('0x19')]>0x0){_0x4b67d6[_0xd4c8('0x1a')](_0xd4c8('0x15')+_0x3edebd+_0xd4c8('0x1b'),_['map'](_0x28b333,'id'));}return _0x4b67d6;}function getInteractionsQuery(_0x45d604){var _0x2e27d0=utils[_0xd4c8('0x1c')](_0x45d604);var _0x420ffb=utils[_0xd4c8('0x7')](_0x45d604);var _0x5ce9ee=utils['getInteractionFK'](_0x45d604);return squel[_0xd4c8('0x12')]()[_0xd4c8('0xd')](_0x2e27d0['interactions'],'i')['left_join'](_0xd4c8('0x1d'),'c',_0xd4c8('0x1e'))[_0xd4c8('0x16')]('users','o',_0xd4c8('0x1f'))[_0xd4c8('0x16')](_0x2e27d0[_0xd4c8('0x20')],'a',_0xd4c8('0x21')+_0x420ffb)[_0xd4c8('0x16')](_0x2e27d0[_0xd4c8('0x22')],'me','me.'+_0x5ce9ee+'\x20=\x20i.id')[_0xd4c8('0x16')](_0x2e27d0[_0xd4c8('0x23')],'it',_0xd4c8('0x24')+_0x5ce9ee+_0xd4c8('0x25'))[_0xd4c8('0x16')](_0xd4c8('0xe'),'t',_0xd4c8('0x26'));}function getSqlClauses(){var _0xd2cac7={'body':squel['expr'](),'contact':squel[_0xd4c8('0x27')](),'default':squel[_0xd4c8('0x27')](),'fields':squel[_0xd4c8('0x27')](),'filter':squel['expr'](),'read':squel[_0xd4c8('0x27')](),'tags':{'clause':squel['expr'](),'ids':null},'user':squel[_0xd4c8('0x27')]()};return _0xd2cac7;}function parseTagParameter(_0x3d1458){var _0x1d2014=squel[_0xd4c8('0x27')]();if(_0x3d1458){var _0x1d9a64=utils[_0xd4c8('0x28')](_0x3d1458);_0x1d9a64['forEach'](function(_0x7ad81d){_0x1d2014['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x7ad81d+',%');});}return _0x1d2014;}function parseReadParameter(_0x5e2be1){var _0x3a2e1c='';if(_0x5e2be1){_0x3a2e1c=_0xd4c8('0x29');if(_0x5e2be1==='1'){_0x3a2e1c=_0x3a2e1c[_0xd4c8('0x2a')]('{OPERATOR}','=');}else{_0x3a2e1c=_0x3a2e1c[_0xd4c8('0x2a')](_0xd4c8('0x2b'),'>');}}return _0x3a2e1c;}function parseSearchFilter(_0x277db2,_0x246432){var _0x216d7=squel[_0xd4c8('0x27')]();if(_0x246432){var _0x1e3f0d=_0x246432['replace']('\x5c','\x5c\x5c')[_0xd4c8('0x2a')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x1e3f0d)){_0x216d7['or'](_0xd4c8('0x2c'),_0x1e3f0d+'%');if([_0xd4c8('0x2d'),_0xd4c8('0x2e')][_0xd4c8('0x2f')](_0x277db2)){_0x216d7['or'](_0xd4c8('0x30'),_0x1e3f0d+'%');}else if(_0x277db2==='fax'){_0x216d7['or']('i.fax\x20LIKE\x20?',_0x1e3f0d+'%');}else if(_0x277db2===_0xd4c8('0x31')){_0x216d7['or'](_0xd4c8('0x32'),_0x1e3f0d+'%');}}else if(_0x277db2===_0xd4c8('0x33')&&qs[_0xd4c8('0x34')](_0x1e3f0d)){_0x216d7['or'](_0xd4c8('0x35'),_0x1e3f0d+'%');}else{if(_0x277db2===_0xd4c8('0x33')){_0x216d7['or'](_0xd4c8('0x36'),qs[_0xd4c8('0x37')](_0x1e3f0d,!![]))['or'](_0xd4c8('0x38'),qs[_0xd4c8('0x37')](_0x1e3f0d));}else if(_0x277db2!==_0xd4c8('0x39')){_0x216d7['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x1e3f0d));}_0x216d7['or'](_0xd4c8('0x3a'),qs['getFullTextValue'](_0x1e3f0d,!![]),null);}}return _0x216d7;}function parseAdvancedSearchFilter(_0x59133e,_0x1a9d60){var _0x2c5a50=getSqlClauses();var _0x448b19=as[_0xd4c8('0x3b')](_0x59133e);var _0x3f206d=_0x448b19[_0xd4c8('0x3c')];for(var _0x39f61c=0x0;_0x39f61c<_0x448b19['conditions'][_0xd4c8('0x19')];_0x39f61c++){var _0xac7dd=_0x448b19['conditions'][_0x39f61c];var _0x547f38='i';var _0x3c7668=_[_0xd4c8('0x3d')](_0x1a9d60,[_0xd4c8('0xc'),_0xac7dd[_0xd4c8('0xb')]]);if(_0x3c7668){var _0x370a09=as[_0xd4c8('0x3e')](_0x547f38,_0x3c7668[_0xd4c8('0x3f')],_0xac7dd);_0x2c5a50[_0xd4c8('0x40')][_0x3f206d](_0x370a09[_0xd4c8('0x41')],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x43')],_0x370a09['value'][_0xd4c8('0x44')]);}else{switch(_0xac7dd['field']){case _0xd4c8('0x45'):var _0x1cf534=parseReadParameter(_0xac7dd[_0xd4c8('0x42')]);_0x2c5a50[_0xd4c8('0x46')][_0xd4c8('0x47')](_0x1cf534);break;case _0xd4c8('0x48'):if(_0xac7dd['operator']===_0xd4c8('0x49')){if(_0xac7dd['value'][_0xd4c8('0x4a')]('\x20')[_0xd4c8('0x19')]>0x1){_0x2c5a50[_0xd4c8('0x4b')][_0x3f206d](_0xd4c8('0x3a'),qs[_0xd4c8('0x37')](_0xac7dd[_0xd4c8('0x42')],!![]),null);}else{var _0x6cf6d7='%'+_0xac7dd[_0xd4c8('0x42')]+'%';_0x2c5a50[_0xd4c8('0x4b')][_0x3f206d](_0xd4c8('0x4c'),_0x6cf6d7,_0x6cf6d7,_0x6cf6d7);}}else{_0x3c7668=_[_0xd4c8('0x3d')](_0x1a9d60,[_0xd4c8('0xc'),_0xd4c8('0x4d')]);_0xac7dd[_0xd4c8('0xb')]='ContactId';_0x370a09=as[_0xd4c8('0x3e')](_0x547f38,_0x3c7668[_0xd4c8('0x3f')],_0xac7dd);_0x2c5a50[_0xd4c8('0x4b')][_0x3f206d](_0x370a09[_0xd4c8('0x41')],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x43')],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x44')]);}break;case'Tag':var _0x5c5902=_0xac7dd[_0xd4c8('0x42')][_0xd4c8('0x4a')](',')[_0xd4c8('0x4e')](function(_0x32a927){return Number(_0x32a927);});var _0x515a9b=parseTagParameter(_0x5c5902);_0x2c5a50[_0xd4c8('0x4f')]['clause'][_0xd4c8('0x47')](_0x515a9b);_0x2c5a50['tags'][_0xd4c8('0x50')]=_0x5c5902;break;case _0xd4c8('0x51'):if(_0xac7dd[_0xd4c8('0x52')]===_0xd4c8('0x49')){_0x2c5a50[_0xd4c8('0x53')][_0x3f206d]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0xac7dd[_0xd4c8('0x42')]+'%',null);}else{_0x3c7668=_['find'](_0x1a9d60,[_0xd4c8('0xc'),_0xd4c8('0x54')]);_0xac7dd[_0xd4c8('0xb')]=_0xd4c8('0x54');_0x370a09=as[_0xd4c8('0x3e')](_0x547f38,_0x3c7668[_0xd4c8('0x3f')],_0xac7dd);_0x2c5a50[_0xd4c8('0x53')][_0x3f206d](_0x370a09[_0xd4c8('0x41')],_0x370a09[_0xd4c8('0x42')]['start'],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x44')]);}break;case _0xd4c8('0x55'):case _0xd4c8('0x56'):_0x370a09=as[_0xd4c8('0x3e')]('me',null,_0xac7dd);_0x2c5a50[_0xd4c8('0x55')][_0x3f206d](_0x370a09[_0xd4c8('0x41')],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x43')],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x44')]);break;}}}return _0x2c5a50;}function parseModelFields(_0x23aa1a,_0x5d70c3,_0x5053dc){var _0x4d1d6c=utils['getAccountFK'](_0x23aa1a);var _0x318108=squel['expr']();var _0x326af8=_(_0x5d70c3)['keys']()['map'](function(_0x4f3918){return _[_0xd4c8('0x57')](_0x5053dc,['name',_0x4f3918])?_0x4f3918:undefined;})['compact']()[_0xd4c8('0x42')]();if(_0x326af8['length']>0x0){_0x326af8[_0xd4c8('0x58')](function(_0x31415b){if(_0x31415b===_0x4d1d6c){_0x318108[_0xd4c8('0x47')]('i.'+_0x4d1d6c+'\x20IN\x20?',[][_0xd4c8('0x59')](_0x5d70c3[_0x31415b]));}else if(_0x31415b===_0xd4c8('0x5a')){var _0x119b7e=JSON['parse'](_0x5d70c3[_0x31415b])['$gte'];var _0x533519=JSON['parse'](_0x5d70c3[_0x31415b])[_0xd4c8('0x5b')];_0x318108[_0xd4c8('0x47')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x119b7e,_0x533519);}else{if(_0x5d70c3[_0x31415b]===_0xd4c8('0x5c')){_0x318108[_0xd4c8('0x47')]('i.'+_0x31415b+_0xd4c8('0x5d'));}else{_0x318108['and']('i.'+_0x31415b+'\x20=\x20?',_0x5d70c3[_0x31415b]);}}});}return _0x318108;}function parseQueryParameters(_0x4aea69,_0x128a08,_0x48827f){var _0x367c9f=getSqlClauses();return Promise[_0xd4c8('0x5e')]()[_0xd4c8('0x5f')](function(){return parseModelFields(_0x4aea69,_0x128a08,_0x48827f);})[_0xd4c8('0x5f')](function(_0x58f272){_0x367c9f[_0xd4c8('0x60')][_0xd4c8('0x47')](_0x58f272);return parseReadParameter(_0x128a08[_0xd4c8('0x46')]);})[_0xd4c8('0x5f')](function(_0x3d8d91){_0x367c9f[_0xd4c8('0x46')][_0xd4c8('0x47')](_0x3d8d91);return parseTagParameter(_0x128a08[_0xd4c8('0x61')]);})[_0xd4c8('0x5f')](function(_0x3307a5){_0x367c9f[_0xd4c8('0x4f')][_0xd4c8('0x62')][_0xd4c8('0x47')](_0x3307a5);return parseSearchFilter(_0x4aea69,_0x128a08[_0xd4c8('0x63')]);})['then'](function(_0x22bff8){_0x367c9f['filter']=_0x22bff8;return _0x367c9f;});}function checkAccountsRestrictions(_0x1c03f9,_0x9f230c,_0x407e5c){var _0x28118a=utils['getAccountFK'](_0x1c03f9);var _0x3d3312='get'+_[_0xd4c8('0x64')](_0x1c03f9)+(_0x1c03f9===_0xd4c8('0x65')?_0xd4c8('0x66'):_0xd4c8('0x67'));var _0x3eeda3=squel['expr']();return Promise['resolve']()[_0xd4c8('0x5f')](function(){if(_0x407e5c[_0xd4c8('0xa')]&&_0x9f230c[_0xd4c8('0x8')]==='agent'){return _0x9f230c[_0x3d3312]({'attributes':['id'],'raw':!![]});}})[_0xd4c8('0x5f')](function(_0x392a5e){if(_0x392a5e){if(_0x392a5e[_0xd4c8('0x19')]===0x0){_0x3eeda3[_0xd4c8('0x47')]('i.'+_0x28118a+_0xd4c8('0x5d'));}else{_0x3eeda3[_0xd4c8('0x47')]('i.'+_0x28118a+_0xd4c8('0x1b'),_[_0xd4c8('0x4e')](_0x392a5e,'id'));}}else if(!_0x407e5c[_0x28118a]){_0x3eeda3[_0xd4c8('0x47')]('i.'+_0x28118a+_0xd4c8('0x68'));}})[_0xd4c8('0x5f')](function(){return _0x3eeda3;});}function getClosedOrderClause(_0x27219e,_0x9e3383){var _0x1dc221='';var _0x5c13bf=['i.thirdDisposition','i.secondDisposition','i.disposition'];if(_0x27219e===_0xd4c8('0x33')){_0x5c13bf[_0xd4c8('0x69')](_0xd4c8('0x6a'));}if(_0x9e3383['closed']==='0'&&_0x27219e==='mail'){_0x1dc221=_0xd4c8('0x6a');}else{if(_0x9e3383[_0xd4c8('0x6b')]==='1'){_0x5c13bf[_0xd4c8('0x6c')]();}_0x1dc221=_0xd4c8('0x6d')+_0x5c13bf[_0xd4c8('0x6e')](',\x20')+')';}return _0x1dc221;}function getFilteredInteractions(_0x4ab251,_0x420e61,_0x23270e,_0x19811b){var _0x525f52=utils['getInteractionFK'](_0x4ab251);var _0x490b9c=_[_0xd4c8('0x64')](_0x4ab251)+_0xd4c8('0x6f');var _0x511dd9=[];var _0x450343=getTagsQuery();var _0x41c7cb={'type':db[_0xd4c8('0x70')][_0xd4c8('0x71')]['SELECT'],'raw':!![]};var _0x52e58f=[];var _0x4b7a98=[];return db[_0xd4c8('0x72')][_0xd4c8('0x73')](_0x450343[_0xd4c8('0x74')](),_0x41c7cb)[_0xd4c8('0x5f')](function(_0x271d84){_0x511dd9=_[_0xd4c8('0x75')](_0x271d84,'id');_0x41c7cb=_[_0xd4c8('0x76')](_0x41c7cb,{'model':db[_0x490b9c],'mapToModel':!![],'nest':!![]});if(_0x23270e[_0xd4c8('0x60')]){_0x19811b['attributes'][_0xd4c8('0x58')](function(_0x19f639){_0x420e61[_0xd4c8('0xb')]('i.'+_0x19f639);});}else{_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x77'),_0xd4c8('0x45'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x78'),_0xd4c8('0x79'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x7a'),_0xd4c8('0x7b'));if(_0x4ab251===_0xd4c8('0x33')){_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x7c'),_0xd4c8('0x7d'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x7e'),'contactName');_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x7f'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x80'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x81'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x82'));_0x420e61[_0xd4c8('0xb')]('i.closedAt');_0x420e61['field']('i.attach');_0x420e61['field'](_0xd4c8('0x83'));_0x420e61['field'](_0xd4c8('0x84'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x85'));_0x420e61[_0xd4c8('0xb')]('i.disposition');_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x86'));_0x420e61['field'](_0xd4c8('0x87'));_0x420e61['field']('i.substatus');_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x88'));_0x420e61['field'](_0xd4c8('0x89'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x8a'));_0x420e61[_0xd4c8('0xb')]('i.UserId');}else if(_0x4ab251==='openchannel'){_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x8b'),_0xd4c8('0x8c'));}else{_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x8d'),_0xd4c8('0x8c'));}if(_0x4ab251!=='mail'){_0x420e61[_0xd4c8('0xb')]('i.*');}_0x420e61['field'](_0xd4c8('0x8e'),_0xd4c8('0x8f'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x90'),_0xd4c8('0x91'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x92'),_0xd4c8('0x93'));_0x420e61[_0xd4c8('0xb')]('c.phone',_0xd4c8('0x94'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x95'),_0xd4c8('0x96'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x97'),_0xd4c8('0x98'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x99'),_0xd4c8('0x9a'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x9b'),'Owner.internal');_0x420e61[_0xd4c8('0xb')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x19811b[_0xd4c8('0x9c')]){_0x420e61['limit'](_0x19811b[_0xd4c8('0x9c')]);}if(_0x19811b[_0xd4c8('0x9d')]){_0x420e61[_0xd4c8('0x9d')](_0x19811b['offset']);}return db[_0xd4c8('0x72')][_0xd4c8('0x73')](_0x420e61[_0xd4c8('0x74')](),_0x41c7cb);})[_0xd4c8('0x5f')](function(_0x567acb){_0x52e58f=_0x567acb;var _0x3072da=getUsersQuery(_0x4ab251,_0x52e58f);return db[_0xd4c8('0x72')][_0xd4c8('0x73')](_0x3072da['toString'](),_0x41c7cb);})['then'](function(_0x3db159){_0x4b7a98=_[_0xd4c8('0x9e')](_0x3db159,_0x525f52);if(_0x4ab251==='mail'){return db[_0xd4c8('0x9f')][_0xd4c8('0xa0')]({'attributes':[_0xd4c8('0xa1')],'raw':!![]});}})[_0xd4c8('0x5f')](function(_0x3d7083){var _0x91ade3=_0x3d7083?_0x3d7083[_0xd4c8('0xa1')]:undefined;var _0x39e1ec=_0x52e58f['map'](function(_0x27be14){return updateInteraction(_0x27be14,_0x511dd9,_0x4b7a98,_0x91ade3);});return Promise[_0xd4c8('0xa2')](_0x39e1ec);});}function countFilteredInteractions(_0x5b1d96,_0x113279){var _0x3a2586=_0x5b1d96[_0xd4c8('0xa3')]();_0x3a2586[_0xd4c8('0xb')](_0xd4c8('0xa4'));_0x3a2586[_0xd4c8('0xb')](_0xd4c8('0x77'),_0xd4c8('0x45'));var _0x244673=utils[_0xd4c8('0x28')](_0x113279);if(!_['isEmpty'](_0x244673)){_0x3a2586['where'](_0xd4c8('0xa5'),_0x244673);}var _0x45c8b4={'type':db[_0xd4c8('0x70')][_0xd4c8('0x71')][_0xd4c8('0xa6')],'raw':!![]};return db[_0xd4c8('0x72')][_0xd4c8('0x73')](_0x3a2586['toString'](),_0x45c8b4);}module[_0xd4c8('0xa7')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index 4e2d743..bbd1c0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46d8=['disposition','UserId','talking','MailMessage','findOne','out','plainBody','-id','then','lastMsgText','trimStart','catch','TagIds','lodash','../../mysqldb','map','fullname','split','push','waiting','answered','unmanaged','abandoned','total','closed'];(function(_0xa9b067,_0x2047eb){var _0x492156=function(_0x32a056){while(--_0x32a056){_0xa9b067['push'](_0xa9b067['shift']());}};_0x492156(++_0x2047eb);}(_0x46d8,0xee));var _0x846d=function(_0x51472d,_0x592b0b){_0x51472d=_0x51472d-0x0;var _0x5f00f1=_0x46d8[_0x51472d];return _0x5f00f1;};'use strict';var _=require(_0x846d('0x0'));var db=require(_0x846d('0x1'))['db'];function getInteractionUsers(_0x5f1e78,_0x355c52){return new Promise(function(_0x2db092,_0x24d9a6){try{var _0x1aacc8=[];if(_0x355c52[_0x5f1e78]){_0x1aacc8=_0x355c52[_0x5f1e78][_0x846d('0x2')](function(_0x56a8df){return{'id':_0x56a8df['id'],'fullname':_0x56a8df[_0x846d('0x3')]};});}return _0x2db092(_0x1aacc8);}catch(_0x12048c){_0x24d9a6(_0x12048c);}});}function getInteractionTags(_0x3161a1,_0x23b7d0){var _0x27767f=[];if(_0x3161a1){_0x3161a1[_0x846d('0x4')](',')['forEach'](function(_0x408eec){_0x27767f[_0x846d('0x5')](_0x23b7d0[_0x408eec]);});}return _0x27767f;}function updateWaitingCounter(_0x401694){if(_0x401694['waiting']){_0x401694[_0x846d('0x6')]-=0x1;}}function updateInteractionCounters(_0x3fb4c8){_0x3fb4c8['waiting']=0x0;_0x3fb4c8['talking']=0x0;_0x3fb4c8[_0x846d('0x7')]=0x0;_0x3fb4c8[_0x846d('0x8')]=0x0;_0x3fb4c8[_0x846d('0x9')]=0x0;_0x3fb4c8[_0x846d('0xa')]=0x0;if(_0x3fb4c8[_0x846d('0xb')]){if(_0x3fb4c8[_0x846d('0xc')]==='abandoned'){_0x3fb4c8[_0x846d('0x9')]+=0x1;updateWaitingCounter(_0x3fb4c8);}if(_0x3fb4c8[_0x846d('0xd')]){_0x3fb4c8[_0x846d('0x7')]+=0x1;if(_0x3fb4c8['talking']){_0x3fb4c8[_0x846d('0xe')]-=0x1;}}else{if(_0x3fb4c8['disposition']){_0x3fb4c8[_0x846d('0x8')]+=0x1;updateWaitingCounter(_0x3fb4c8);}}}else{if(!_0x3fb4c8[_0x846d('0xd')]){_0x3fb4c8[_0x846d('0x6')]+=0x1;}if(_0x3fb4c8['UserId']){_0x3fb4c8[_0x846d('0xe')]+=0x1;updateWaitingCounter(_0x3fb4c8);}}_0x3fb4c8['total']+=0x1;return _0x3fb4c8;}function getLastMessageText(_0x50a387){return db[_0x846d('0xf')][_0x846d('0x10')]({'where':{'$and':[{'MailInteractionId':_0x50a387['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x846d('0x11')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x846d('0x12')],'order':_0x846d('0x13'),'raw':!![]})[_0x846d('0x14')](function(_0x1213a4){if(_0x1213a4&&_0x1213a4[_0x846d('0x12')]){_0x50a387[_0x846d('0x15')]=_[_0x846d('0x16')](_0x1213a4[_0x846d('0x12')]);}return _0x50a387;})[_0x846d('0x17')](function(_0x5a55c6){throw _0x5a55c6;});}exports['updateInteraction']=function(_0x388c14,_0x46a80f,_0x30bd84,_0x4c8190){return new Promise(function(_0x4454e2,_0x1d0e82){return getInteractionUsers(_0x388c14['id'],_0x30bd84)['then'](function(_0x5687a4){_0x388c14['Users']=_0x5687a4;return getInteractionTags(_0x388c14[_0x846d('0x18')],_0x46a80f);})[_0x846d('0x14')](function(_0x390cc7){_0x388c14['Tags']=_0x390cc7;delete _0x388c14[_0x846d('0x18')];return updateInteractionCounters(_0x388c14);})[_0x846d('0x14')](function(_0x35a218){if(_0x4c8190){return getLastMessageText(_0x35a218);}else{return _0x35a218;}})[_0x846d('0x14')](function(_0x5746b9){_0x4454e2(_0x5746b9);})[_0x846d('0x17')](function(_0x12807e){_0x1d0e82(_0x12807e);});});};
\ No newline at end of file
+var _0xfa15=['disposition','abandoned','UserId','MailMessage','findOne','plainBody','then','lastMsgText','trimStart','catch','Users','TagIds','Tags','lodash','../../mysqldb','map','fullname','split','forEach','waiting','talking','answered','unmanaged','total','closed'];(function(_0x1c5cde,_0x1311e5){var _0x4eafb6=function(_0x2069bf){while(--_0x2069bf){_0x1c5cde['push'](_0x1c5cde['shift']());}};_0x4eafb6(++_0x1311e5);}(_0xfa15,0x120));var _0x5fa1=function(_0x9b9234,_0x3b8f3b){_0x9b9234=_0x9b9234-0x0;var _0x89e7c2=_0xfa15[_0x9b9234];return _0x89e7c2;};'use strict';var _=require(_0x5fa1('0x0'));var db=require(_0x5fa1('0x1'))['db'];function getInteractionUsers(_0x294b63,_0x60a33){return new Promise(function(_0x520d42,_0x1e6f0d){try{var _0xf8b5e8=[];if(_0x60a33[_0x294b63]){_0xf8b5e8=_0x60a33[_0x294b63][_0x5fa1('0x2')](function(_0x45db4a){return{'id':_0x45db4a['id'],'fullname':_0x45db4a[_0x5fa1('0x3')]};});}return _0x520d42(_0xf8b5e8);}catch(_0x522fa3){_0x1e6f0d(_0x522fa3);}});}function getInteractionTags(_0x3eed36,_0x1fbb56){var _0x3d332d=[];if(_0x3eed36){_0x3eed36[_0x5fa1('0x4')](',')[_0x5fa1('0x5')](function(_0x359828){_0x3d332d['push'](_0x1fbb56[_0x359828]);});}return _0x3d332d;}function updateWaitingCounter(_0x4067ab){if(_0x4067ab[_0x5fa1('0x6')]){_0x4067ab[_0x5fa1('0x6')]-=0x1;}}function updateInteractionCounters(_0x385015){_0x385015[_0x5fa1('0x6')]=0x0;_0x385015[_0x5fa1('0x7')]=0x0;_0x385015[_0x5fa1('0x8')]=0x0;_0x385015[_0x5fa1('0x9')]=0x0;_0x385015['abandoned']=0x0;_0x385015[_0x5fa1('0xa')]=0x0;if(_0x385015[_0x5fa1('0xb')]){if(_0x385015[_0x5fa1('0xc')]===_0x5fa1('0xd')){_0x385015['abandoned']+=0x1;updateWaitingCounter(_0x385015);}if(_0x385015['UserId']){_0x385015[_0x5fa1('0x8')]+=0x1;if(_0x385015['talking']){_0x385015[_0x5fa1('0x7')]-=0x1;}}else{if(_0x385015[_0x5fa1('0xc')]){_0x385015['unmanaged']+=0x1;updateWaitingCounter(_0x385015);}}}else{if(!_0x385015[_0x5fa1('0xe')]){_0x385015[_0x5fa1('0x6')]+=0x1;}if(_0x385015[_0x5fa1('0xe')]){_0x385015[_0x5fa1('0x7')]+=0x1;updateWaitingCounter(_0x385015);}}_0x385015[_0x5fa1('0xa')]+=0x1;return _0x385015;}function getLastMessageText(_0x1d2478){return db[_0x5fa1('0xf')][_0x5fa1('0x10')]({'where':{'$and':[{'MailInteractionId':_0x1d2478['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x5fa1('0x11')],'order':'-id','raw':!![]})[_0x5fa1('0x12')](function(_0x1a69d5){if(_0x1a69d5&&_0x1a69d5[_0x5fa1('0x11')]){_0x1d2478[_0x5fa1('0x13')]=_[_0x5fa1('0x14')](_0x1a69d5[_0x5fa1('0x11')]);}return _0x1d2478;})[_0x5fa1('0x15')](function(_0x5f2230){throw _0x5f2230;});}exports['updateInteraction']=function(_0x42de0c,_0x226874,_0x194124,_0x336662){return new Promise(function(_0x19fca2,_0x14cb3e){return getInteractionUsers(_0x42de0c['id'],_0x194124)[_0x5fa1('0x12')](function(_0x244828){_0x42de0c[_0x5fa1('0x16')]=_0x244828;return getInteractionTags(_0x42de0c[_0x5fa1('0x17')],_0x226874);})[_0x5fa1('0x12')](function(_0x493bd1){_0x42de0c[_0x5fa1('0x18')]=_0x493bd1;delete _0x42de0c[_0x5fa1('0x17')];return updateInteractionCounters(_0x42de0c);})[_0x5fa1('0x12')](function(_0x140ef9){if(_0x336662){return getLastMessageText(_0x140ef9);}else{return _0x140ef9;}})[_0x5fa1('0x12')](function(_0x2ad8fa){_0x19fca2(_0x2ad8fa);})['catch'](function(_0x69e90e){_0x14cb3e(_0x69e90e);});});};
\ No newline at end of file
index 18ca75e..e6e381c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ae1=['isArray','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','null','Interaction','findOne','then','update','info','catch','exports','../../mysqldb','../../config/logger','mail-interactions','sms-interactions','chat-interactions','whatsapp-interactions','capitalize','chat','Website','Account','InteractionId','upperFirst','unknown','websites','accounts','_interaction_has_tags','_messages','_interactions'];(function(_0x2bd104,_0xa585f2){var _0x223e88=function(_0x10b7d9){while(--_0x10b7d9){_0x2bd104['push'](_0x2bd104['shift']());}};_0x223e88(++_0xa585f2);}(_0x2ae1,0x138));var _0x12ae=function(_0xf90e07,_0x133b5c){_0xf90e07=_0xf90e07-0x0;var _0x4376bd=_0x2ae1[_0xf90e07];return _0x4376bd;};'use strict';var _=require('lodash');var db=require(_0x12ae('0x0'))['db'];var loggers={'openchannel':require(_0x12ae('0x1'))('openchannel-interactions'),'mail':require('../../config/logger')(_0x12ae('0x2')),'fax':require(_0x12ae('0x1'))('fax-interactions'),'sms':require(_0x12ae('0x1'))(_0x12ae('0x3')),'chat':require(_0x12ae('0x1'))(_0x12ae('0x4')),'whatsapp':require(_0x12ae('0x1'))(_0x12ae('0x5'))};function getAccountFK(_0x43661f){return _[_0x12ae('0x6')](_0x43661f)+(_0x43661f===_0x12ae('0x7')?_0x12ae('0x8'):_0x12ae('0x9'))+'Id';}function getInteractionFK(_0xe6c322){return _['capitalize'](_0xe6c322)+_0x12ae('0xa');}function getInteractionId(_0x515441,_0x4fe021,_0xbb95){if(_0x515441&&_0x515441[_[_0x12ae('0xb')](_0xbb95)+'InteractionId']){return _0x515441[_[_0x12ae('0xb')](_0xbb95)+_0x12ae('0xa')];}else if(_0x515441&&_0x515441['id']){return _0x515441['id'];}else if(_0x4fe021&&_0x4fe021['id']){return _0x4fe021['id'];}else{return _0x12ae('0xc');}}function getInteractionsTables(_0x3b7264){return{'accounts':_0x3b7264+'_'+(_0x3b7264===_0x12ae('0x7')?_0x12ae('0xd'):_0x12ae('0xe')),'interactions':_0x3b7264+'_interactions','interactionsTags':_0x3b7264+_0x12ae('0xf'),'messages':_0x3b7264+_0x12ae('0x10'),'userInteractions':'user_has_'+_0x3b7264+_0x12ae('0x11')};}function getSelectedTags(_0x2055d4){var _0x595875=[];if(_0x2055d4){_0x595875=Array[_0x12ae('0x12')](_0x2055d4)?_0x2055d4:[_0x2055d4];}return _0x595875;}function log(_0x18449a,_0x143bfe,_0x2575c4,_0x5abc5d,_0x5483c9,_0x2123b9){loggers[_0x5483c9[_0x12ae('0x13')]()][_0x18449a](_0x12ae('0x14'),_0x2123b9['toUpperCase'](),_0x143bfe?_0x143bfe['id']:null,_0x143bfe?_0x143bfe['name']:null,_0x143bfe?_0x143bfe['role']:null,getInteractionId(_0x2575c4,_0x5abc5d,_0x5483c9),_0x2575c4?JSON[_0x12ae('0x15')](_0x2575c4):_0x12ae('0x16'));}function updateUser(_0xe40dd7,_0x4f6806,_0x59ad47,_0x1ae555,_0x3b5c78){db[_[_0x12ae('0xb')](_0x1ae555)+_0x12ae('0x17')][_0x12ae('0x18')]({'where':{'id':getInteractionId(_0x4f6806,_0x59ad47,_0x1ae555)}})[_0x12ae('0x19')](function(_0xe59494){if(_0xe59494){return _0xe59494[_0x12ae('0x1a')]({'UserId':_0xe40dd7?_0xe40dd7['id']:null});}})[_0x12ae('0x19')](function(_0x16eb10){if(_0x16eb10){log(_0x12ae('0x1b'),_0xe40dd7,_0x4f6806,_0x59ad47,_0x1ae555,_0x3b5c78);}})[_0x12ae('0x1c')](function(){log('error',_0xe40dd7,_0x4f6806,_0x59ad47,_0x1ae555,_0x3b5c78);});}module[_0x12ae('0x1d')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0x3a25=['sms-interactions','chat','Website','capitalize','InteractionId','upperFirst','websites','accounts','_interaction_has_tags','_messages','_interactions','isArray','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','role','stringify','Interaction','findOne','then','update','info','catch','error','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions'];(function(_0x58fa86,_0x2806ce){var _0x237582=function(_0xd9abba){while(--_0xd9abba){_0x58fa86['push'](_0x58fa86['shift']());}};_0x237582(++_0x2806ce);}(_0x3a25,0xff));var _0x53a2=function(_0x34a7d2,_0x23a319){_0x34a7d2=_0x34a7d2-0x0;var _0x444ce5=_0x3a25[_0x34a7d2];return _0x444ce5;};'use strict';var _=require(_0x53a2('0x0'));var db=require(_0x53a2('0x1'))['db'];var loggers={'openchannel':require(_0x53a2('0x2'))(_0x53a2('0x3')),'mail':require(_0x53a2('0x2'))(_0x53a2('0x4')),'fax':require('../../config/logger')(_0x53a2('0x5')),'sms':require(_0x53a2('0x2'))(_0x53a2('0x6')),'chat':require(_0x53a2('0x2'))('chat-interactions'),'whatsapp':require(_0x53a2('0x2'))('whatsapp-interactions')};function getAccountFK(_0x484c8e){return _['capitalize'](_0x484c8e)+(_0x484c8e===_0x53a2('0x7')?_0x53a2('0x8'):'Account')+'Id';}function getInteractionFK(_0x30725a){return _[_0x53a2('0x9')](_0x30725a)+_0x53a2('0xa');}function getInteractionId(_0x386ab1,_0x56a52c,_0x561b6e){if(_0x386ab1&&_0x386ab1[_[_0x53a2('0xb')](_0x561b6e)+_0x53a2('0xa')]){return _0x386ab1[_[_0x53a2('0xb')](_0x561b6e)+_0x53a2('0xa')];}else if(_0x386ab1&&_0x386ab1['id']){return _0x386ab1['id'];}else if(_0x56a52c&&_0x56a52c['id']){return _0x56a52c['id'];}else{return'unknown';}}function getInteractionsTables(_0x2ea189){return{'accounts':_0x2ea189+'_'+(_0x2ea189===_0x53a2('0x7')?_0x53a2('0xc'):_0x53a2('0xd')),'interactions':_0x2ea189+'_interactions','interactionsTags':_0x2ea189+_0x53a2('0xe'),'messages':_0x2ea189+_0x53a2('0xf'),'userInteractions':'user_has_'+_0x2ea189+_0x53a2('0x10')};}function getSelectedTags(_0x3e06cb){var _0x6747c9=[];if(_0x3e06cb){_0x6747c9=Array[_0x53a2('0x11')](_0x3e06cb)?_0x3e06cb:[_0x3e06cb];}return _0x6747c9;}function log(_0x48f6b4,_0x5530c2,_0x36136c,_0x1036a1,_0x455f83,_0x410466){loggers[_0x455f83['toLowerCase']()][_0x48f6b4](_0x53a2('0x12'),_0x410466[_0x53a2('0x13')](),_0x5530c2?_0x5530c2['id']:null,_0x5530c2?_0x5530c2['name']:null,_0x5530c2?_0x5530c2[_0x53a2('0x14')]:null,getInteractionId(_0x36136c,_0x1036a1,_0x455f83),_0x36136c?JSON[_0x53a2('0x15')](_0x36136c):'null');}function updateUser(_0x377c39,_0x321fad,_0x51769d,_0x493cfc,_0x245dd9){db[_[_0x53a2('0xb')](_0x493cfc)+_0x53a2('0x16')][_0x53a2('0x17')]({'where':{'id':getInteractionId(_0x321fad,_0x51769d,_0x493cfc)}})[_0x53a2('0x18')](function(_0x38a326){if(_0x38a326){return _0x38a326[_0x53a2('0x19')]({'UserId':_0x377c39?_0x377c39['id']:null});}})[_0x53a2('0x18')](function(_0x1b9a3d){if(_0x1b9a3d){log(_0x53a2('0x1a'),_0x377c39,_0x321fad,_0x51769d,_0x493cfc,_0x245dd9);}})[_0x53a2('0x1b')](function(){log(_0x53a2('0x1c'),_0x377c39,_0x321fad,_0x51769d,_0x493cfc,_0x245dd9);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 545447f..3b43c25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80f5=['util','composable-middleware','../../mysqldb','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','parse','License','findOne','then','count','status','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','User','admin','isUserLimit','crypto'];(function(_0x2a8999,_0x54ad7d){var _0x800974=function(_0x477e42){while(--_0x477e42){_0x2a8999['push'](_0x2a8999['shift']());}};_0x800974(++_0x54ad7d);}(_0x80f5,0x95));var _0x580f=function(_0x2064c8,_0x168039){_0x2064c8=_0x2064c8-0x0;var _0x23af73=_0x80f5[_0x2064c8];return _0x23af73;};'use strict';var crypto=require(_0x580f('0x0'));var util=require(_0x580f('0x1'));var compose=require(_0x580f('0x2'));var db=require(_0x580f('0x3'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x469475,_0x111e7f){if(_0x469475&&_0x111e7f){if(_0x111e7f[_0x580f('0x4')]&&_0x111e7f[_0x580f('0x5')]){var _0x5b02ec=_0x111e7f[_0x580f('0x4')];var _0x45e5b9=_0x111e7f[_0x580f('0x5')];var _0x18eb26=_0x5b02ec[_0x580f('0x6')]('-')[0x4];var _0x3b4df2=_0x5b02ec['split']('-')[0x0];var _0x319d2=crypto[_0x580f('0x7')](_0x580f('0x8'),util[_0x580f('0x9')](_0x580f('0xa'),_0x18eb26,_0x5b02ec,_0x3b4df2));var _0x3379e5=_0x319d2[_0x580f('0xb')](_0x45e5b9,_0x580f('0xc'),_0x580f('0xd'));_0x3379e5+=_0x319d2['final'](_0x580f('0xd'));var _0x3880c4=JSON[_0x580f('0xe')](_0x3379e5);return _0x3880c4['hasOwnProperty'](_0x469475)?_0x3880c4[_0x469475]:null;}}return null;}function isLimit(_0x1b7811,_0x18c95c,_0x5c51f3,_0x17bc4f){var _0x29367c=_0x18c95c;return compose()['use'](function(_0x1e664a,_0x3977d1,_0xeef296){return db[_0x580f('0xf')][_0x580f('0x10')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x1af93f){var _0x3f8773=getValueFromLicense(_0x1b7811,_0x1af93f);return _0x3f8773?_0x3f8773:_0x29367c;})[_0x580f('0x11')](function(_0x357096){_0x29367c=_0x357096;return _0x5c51f3[_0x580f('0x12')](_0x17bc4f);})['then'](function(_0x164540){if(_0x164540>=_0x29367c){return _0x3977d1[_0x580f('0x13')](0x193)['json']({'message':util[_0x580f('0x9')](_0x580f('0x14'),_0x1b7811)});}_0xeef296();})['catch'](function(_0x547e2e){_0xeef296(_0x547e2e);});});}function isUserLimit(){return isLimit(_0x580f('0x15'),0x1,db[_0x580f('0x16')],{'where':{'$or':[{'role':_0x580f('0x17')},{'role':'user'}]}});}exports[_0x580f('0x18')]=isUserLimit;
\ No newline at end of file
+var _0x25ec=['composable-middleware','../../config/environment','data1','license','createDecipher','format','update','base64','utf8','parse','hasOwnProperty','use','License','then','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','User','admin','user','isUserLimit','crypto'];(function(_0x2f90ec,_0x21e06b){var _0xaf6eb7=function(_0x2e0ff3){while(--_0x2e0ff3){_0x2f90ec['push'](_0x2f90ec['shift']());}};_0xaf6eb7(++_0x21e06b);}(_0x25ec,0x1b4));var _0xc25e=function(_0x2d75f7,_0x5bf19){_0x2d75f7=_0x2d75f7-0x0;var _0x5030e9=_0x25ec[_0x2d75f7];return _0x5030e9;};'use strict';var crypto=require(_0xc25e('0x0'));var util=require('util');var compose=require(_0xc25e('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xc25e('0x2'));function getValueFromLicense(_0x1b6d5b,_0x10d66a){if(_0x1b6d5b&&_0x10d66a){if(_0x10d66a[_0xc25e('0x3')]&&_0x10d66a[_0xc25e('0x4')]){var _0x39a3f8=_0x10d66a[_0xc25e('0x3')];var _0x2cf747=_0x10d66a[_0xc25e('0x4')];var _0xf6184f=_0x39a3f8['split']('-')[0x4];var _0x232068=_0x39a3f8['split']('-')[0x0];var _0x1e39cb=crypto[_0xc25e('0x5')]('aes-256-ctr',util[_0xc25e('0x6')]('%s:%s:%s',_0xf6184f,_0x39a3f8,_0x232068));var _0x1c0082=_0x1e39cb[_0xc25e('0x7')](_0x2cf747,_0xc25e('0x8'),_0xc25e('0x9'));_0x1c0082+=_0x1e39cb['final'](_0xc25e('0x9'));var _0x2bc2ec=JSON[_0xc25e('0xa')](_0x1c0082);return _0x2bc2ec[_0xc25e('0xb')](_0x1b6d5b)?_0x2bc2ec[_0x1b6d5b]:null;}}return null;}function isLimit(_0x92ccc2,_0xa1525c,_0x999f67,_0x572fe1){var _0x32e5ae=_0xa1525c;return compose()[_0xc25e('0xc')](function(_0x44c939,_0x27436a,_0x4da293){return db[_0xc25e('0xd')]['findOne']({'where':{'id':0x1},'raw':!![]})['then'](function(_0x27de51){var _0x1b2b32=getValueFromLicense(_0x92ccc2,_0x27de51);return _0x1b2b32?_0x1b2b32:_0x32e5ae;})[_0xc25e('0xe')](function(_0x1d7669){_0x32e5ae=_0x1d7669;return _0x999f67['count'](_0x572fe1);})['then'](function(_0xa83c0d){if(_0xa83c0d>=_0x32e5ae){return _0x27436a[_0xc25e('0xf')](0x193)[_0xc25e('0x10')]({'message':util[_0xc25e('0x6')](_0xc25e('0x11'),_0x92ccc2)});}_0x4da293();})[_0xc25e('0x12')](function(_0x589a90){_0x4da293(_0x589a90);});});}function isUserLimit(){return isLimit('users',0x1,db[_0xc25e('0x13')],{'where':{'$or':[{'role':_0xc25e('0x14')},{'role':_0xc25e('0x15')}]}});}exports[_0xc25e('0x16')]=isUserLimit;
\ No newline at end of file
index c33d6dc..6aa6297 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4105=['split','slice','forEach','match','filter','indexOf','map','conditions','buildExpression','DATE','$eq','value','includes','$gt','$lte','operator','add','days','format','castTo','CAST(','\x20AS\x20','text','field','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','>\x20?','$between','BETWEEN\x20?\x20AND\x20?','$in','start','shift','pop','utcOffset','minutes','seconds','lodash','parseSearch','sqlOperator','[$or]','and','[$and]','replace'];(function(_0x1cb27a,_0x3d24cd){var _0x2fefe6=function(_0x4f5b11){while(--_0x4f5b11){_0x1cb27a['push'](_0x1cb27a['shift']());}};_0x2fefe6(++_0x3d24cd);}(_0x4105,0x9b));var _0x5410=function(_0xb4e458,_0x57952c){_0xb4e458=_0xb4e458-0x0;var _0x57b35e=_0x4105[_0xb4e458];return _0x57b35e;};'use strict';var _=require(_0x5410('0x0'));var moment=require('moment');exports[_0x5410('0x1')]=function(_0x5ee771){var _0x56657c={'conditions':[]};_0x56657c[_0x5410('0x2')]=_['startsWith'](_0x5ee771,_0x5410('0x3'))?'or':_0x5410('0x4');var _0x48af13=_0x5ee771['replace'](_0x5410('0x5'),'')[_0x5410('0x6')](_0x5410('0x3'),'')[_0x5410('0x7')]('||');for(var _0x4211b0=0x0;_0x4211b0<_0x48af13['length'];_0x4211b0++){var _0x3b0321=_0x48af13[_0x4211b0][_0x5410('0x7')](':=');var _0x5cf655=_0x3b0321[0x0];var _0x299764=_0x3b0321[_0x5410('0x8')](0x1);_0x299764[_0x5410('0x9')](function(_0x56a6e5){var _0x3cfc90=_0x56a6e5[_0x5410('0x7')]('[')['shift']();var _0x7fb829=_0x56a6e5[_0x5410('0xa')](/\[(.*?)\]/g);_0x7fb829[_0x5410('0x9')](function(_0x28a61a){var _0xc75387=_0x28a61a['split']('[')[_0x5410('0xb')](function(_0x413f02){return _0x413f02[_0x5410('0xc')](']')>-0x1;})[_0x5410('0xd')](function(_0x5bc335){return _0x5bc335[_0x5410('0x7')](']')[0x0];})[0x0];_0x56657c[_0x5410('0xe')]['push']({'field':_0x5cf655,'operator':_0x3cfc90,'value':_0xc75387});});});}return _0x56657c;};exports[_0x5410('0xf')]=function(_0x467231,_0x1b178a,_0x37db00){var _0xb63177={};if(_0x1b178a===_0x5410('0x10')){if(_0x37db00['operator']===_0x5410('0x11')){_0x37db00['operator']='$between';_0x37db00['value']+=','+_0x37db00[_0x5410('0x12')];}else if(_[_0x5410('0x13')]([_0x5410('0x14'),_0x5410('0x15')],_0x37db00[_0x5410('0x16')])){_0x37db00[_0x5410('0x12')]=moment(_0x37db00[_0x5410('0x12')])[_0x5410('0x17')](0x1,_0x5410('0x18'))[_0x5410('0x19')]('YYYY-MM-DD');}}if(_0x37db00['castTo']){_0x1b178a=_0x37db00[_0x5410('0x1a')];_0xb63177['text']=_0x5410('0x1b')+_0x467231+'.'+_0x37db00['field']+_0x5410('0x1c')+_0x37db00[_0x5410('0x1a')]+')\x20'+parseOperator(_0x37db00[_0x5410('0x16')]);}else{_0xb63177[_0x5410('0x1d')]=_0x467231+'.'+_0x37db00[_0x5410('0x1e')]+'\x20'+parseOperator(_0x37db00[_0x5410('0x16')]);}if(_['includes']([_0x5410('0x1f'),_0x5410('0x20')],_0x37db00[_0x5410('0x16')]))_0xb63177[_0x5410('0x1d')]='('+_0xb63177[_0x5410('0x1d')]+_0x5410('0x21')+_0x467231+'.'+_0x37db00[_0x5410('0x1e')]+_0x5410('0x22');_0xb63177[_0x5410('0x12')]=parseValue(_0x1b178a,_0x37db00['operator'],_0x37db00[_0x5410('0x12')]);return _0xb63177;};function parseOperator(_0x107eb0){var _0x4ab42e;switch(_0x107eb0){case'$in':_0x4ab42e=_0x5410('0x23');break;case _0x5410('0x20'):_0x4ab42e=_0x5410('0x24');break;case _0x5410('0x11'):_0x4ab42e=_0x5410('0x25');break;case _0x5410('0x1f'):_0x4ab42e=_0x5410('0x26');break;case _0x5410('0x27'):case _0x5410('0x28'):case _0x5410('0x29'):_0x4ab42e=_0x5410('0x2a');break;case _0x5410('0x2b'):_0x4ab42e='<\x20?';break;case _0x5410('0x14'):_0x4ab42e=_0x5410('0x2c');break;case _0x5410('0x15'):_0x4ab42e='<=\x20?';break;case'$gte':_0x4ab42e='>=\x20?';break;case _0x5410('0x2d'):_0x4ab42e=_0x5410('0x2e');break;}return _0x4ab42e;}function parseValue(_0x39d71e,_0x402d17,_0x24166c){var _0x1932d5={'start':undefined,'end':undefined};switch(_0x402d17){case _0x5410('0x2f'):case'$notIn':_0x1932d5[_0x5410('0x30')]=_0x24166c[_0x5410('0x7')](',');break;case _0x5410('0x27'):_0x1932d5['start']='%'+_0x24166c+'%';break;case'$startsWith':_0x1932d5[_0x5410('0x30')]=_0x24166c+'%';break;case _0x5410('0x29'):_0x1932d5[_0x5410('0x30')]='%'+_0x24166c;break;case _0x5410('0x2d'):var _0x46d950=_0x24166c[_0x5410('0x7')](',');var _0x24166c=_0x46d950[_0x5410('0x31')]();var _0x177572=_0x46d950[_0x5410('0x32')]();if(_0x39d71e==='DATE'){_0x24166c=moment(_0x24166c)[_0x5410('0x33')](0x0,!![])[_0x5410('0x19')]();_0x177572=moment(_0x177572)[_0x5410('0x33')](0x0,!![])[_0x5410('0x17')](0x17,'hours')[_0x5410('0x17')](0x3b,_0x5410('0x34'))[_0x5410('0x17')](0x3b,_0x5410('0x35'))[_0x5410('0x19')]();}_0x1932d5={'start':_0x24166c,'end':_0x177572};break;default:_0x1932d5[_0x5410('0x30')]=_0x24166c;break;}return _0x1932d5;}
\ No newline at end of file
+var _0xeec6=['utcOffset','minutes','seconds','moment','parseSearch','startsWith','[$or]','and','[$and]','split','length','slice','forEach','shift','match','filter','indexOf','map','conditions','push','buildExpression','DATE','operator','$between','value','includes','$gt','add','days','format','YYYY-MM-DD','castTo','text','field','\x20AS\x20','$ne','\x20OR\x20','$in','IN\x20?','$eq','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','$lte','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','$notIn','start'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xeec6,0xdb));var _0x6eec=function(_0xae9024,_0x17f58e){_0xae9024=_0xae9024-0x0;var _0x23e7d3=_0xeec6[_0xae9024];return _0x23e7d3;};'use strict';var _=require('lodash');var moment=require(_0x6eec('0x0'));exports[_0x6eec('0x1')]=function(_0x1a35e6){var _0x8e44e3={'conditions':[]};_0x8e44e3['sqlOperator']=_[_0x6eec('0x2')](_0x1a35e6,_0x6eec('0x3'))?'or':_0x6eec('0x4');var _0x1947b8=_0x1a35e6['replace'](_0x6eec('0x5'),'')['replace'](_0x6eec('0x3'),'')[_0x6eec('0x6')]('||');for(var _0x38eda3=0x0;_0x38eda3<_0x1947b8[_0x6eec('0x7')];_0x38eda3++){var _0x4792fd=_0x1947b8[_0x38eda3][_0x6eec('0x6')](':=');var _0x3bac83=_0x4792fd[0x0];var _0x24671e=_0x4792fd[_0x6eec('0x8')](0x1);_0x24671e[_0x6eec('0x9')](function(_0x205c68){var _0x282af8=_0x205c68[_0x6eec('0x6')]('[')[_0x6eec('0xa')]();var _0x4664fe=_0x205c68[_0x6eec('0xb')](/\[(.*?)\]/g);_0x4664fe[_0x6eec('0x9')](function(_0xeca727){var _0x3dc8cf=_0xeca727[_0x6eec('0x6')]('[')[_0x6eec('0xc')](function(_0x373bf7){return _0x373bf7[_0x6eec('0xd')](']')>-0x1;})[_0x6eec('0xe')](function(_0x592b19){return _0x592b19[_0x6eec('0x6')](']')[0x0];})[0x0];_0x8e44e3[_0x6eec('0xf')][_0x6eec('0x10')]({'field':_0x3bac83,'operator':_0x282af8,'value':_0x3dc8cf});});});}return _0x8e44e3;};exports[_0x6eec('0x11')]=function(_0x324516,_0x234e52,_0x5738e0){var _0x10d147={};if(_0x234e52===_0x6eec('0x12')){if(_0x5738e0[_0x6eec('0x13')]==='$eq'){_0x5738e0[_0x6eec('0x13')]=_0x6eec('0x14');_0x5738e0['value']+=','+_0x5738e0[_0x6eec('0x15')];}else if(_[_0x6eec('0x16')]([_0x6eec('0x17'),'$lte'],_0x5738e0['operator'])){_0x5738e0[_0x6eec('0x15')]=moment(_0x5738e0['value'])[_0x6eec('0x18')](0x1,_0x6eec('0x19'))[_0x6eec('0x1a')](_0x6eec('0x1b'));}}if(_0x5738e0['castTo']){_0x234e52=_0x5738e0[_0x6eec('0x1c')];_0x10d147[_0x6eec('0x1d')]='CAST('+_0x324516+'.'+_0x5738e0[_0x6eec('0x1e')]+_0x6eec('0x1f')+_0x5738e0[_0x6eec('0x1c')]+')\x20'+parseOperator(_0x5738e0['operator']);}else{_0x10d147['text']=_0x324516+'.'+_0x5738e0['field']+'\x20'+parseOperator(_0x5738e0[_0x6eec('0x13')]);}if(_[_0x6eec('0x16')]([_0x6eec('0x20'),'$notIn'],_0x5738e0[_0x6eec('0x13')]))_0x10d147['text']='('+_0x10d147[_0x6eec('0x1d')]+_0x6eec('0x21')+_0x324516+'.'+_0x5738e0[_0x6eec('0x1e')]+'\x20IS\x20NULL)';_0x10d147[_0x6eec('0x15')]=parseValue(_0x234e52,_0x5738e0[_0x6eec('0x13')],_0x5738e0[_0x6eec('0x15')]);return _0x10d147;};function parseOperator(_0x19a90d){var _0x5ef6e3;switch(_0x19a90d){case _0x6eec('0x22'):_0x5ef6e3=_0x6eec('0x23');break;case'$notIn':_0x5ef6e3='NOT\x20IN\x20?';break;case _0x6eec('0x24'):_0x5ef6e3='=\x20?';break;case _0x6eec('0x20'):_0x5ef6e3='<>\x20?';break;case _0x6eec('0x25'):case _0x6eec('0x26'):case _0x6eec('0x27'):_0x5ef6e3=_0x6eec('0x28');break;case _0x6eec('0x29'):_0x5ef6e3=_0x6eec('0x2a');break;case _0x6eec('0x17'):_0x5ef6e3=_0x6eec('0x2b');break;case _0x6eec('0x2c'):_0x5ef6e3=_0x6eec('0x2d');break;case _0x6eec('0x2e'):_0x5ef6e3=_0x6eec('0x2f');break;case _0x6eec('0x14'):_0x5ef6e3=_0x6eec('0x30');break;}return _0x5ef6e3;}function parseValue(_0x21396b,_0x19be0f,_0x3ec79b){var _0xec45ac={'start':undefined,'end':undefined};switch(_0x19be0f){case'$in':case _0x6eec('0x31'):_0xec45ac['start']=_0x3ec79b['split'](',');break;case _0x6eec('0x25'):_0xec45ac['start']='%'+_0x3ec79b+'%';break;case _0x6eec('0x26'):_0xec45ac[_0x6eec('0x32')]=_0x3ec79b+'%';break;case _0x6eec('0x27'):_0xec45ac[_0x6eec('0x32')]='%'+_0x3ec79b;break;case _0x6eec('0x14'):var _0x366c46=_0x3ec79b['split'](',');var _0x3ec79b=_0x366c46[_0x6eec('0xa')]();var _0x56655e=_0x366c46['pop']();if(_0x21396b==='DATE'){_0x3ec79b=moment(_0x3ec79b)[_0x6eec('0x33')](0x0,!![])[_0x6eec('0x1a')]();_0x56655e=moment(_0x56655e)[_0x6eec('0x33')](0x0,!![])[_0x6eec('0x18')](0x17,'hours')[_0x6eec('0x18')](0x3b,_0x6eec('0x34'))['add'](0x3b,_0x6eec('0x35'))[_0x6eec('0x1a')]();}_0xec45ac={'start':_0x3ec79b,'end':_0x56655e};break;default:_0xec45ac[_0x6eec('0x32')]=_0x3ec79b;break;}return _0xec45ac;}
\ No newline at end of file
index 90a3e89..f68a43a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa210=['omit','isString','hasOwnProperty','match','getFullTextValue','\x22{EXPR}\x22','{EXPR}','forEach','replace','push','join','getOptions','query','$id','intersection','attributes','length','nolimit','offset','order','sort','pick','filter','columns','value','where','merge','VIRTUAL','lower','options','include','lodash','../../mysqldb','parse','keys','includes','model','alias','fields','filters','forOwn','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','subtract','name','uniqueid','isArray','split','limit','map','indexOf','priority','cast','col','unsigned','substr','ASC','isEmpty'];(function(_0xe0e53,_0x581f2a){var _0x4ebb51=function(_0x3a696e){while(--_0x3a696e){_0xe0e53['push'](_0xe0e53['shift']());}};_0x4ebb51(++_0x581f2a);}(_0xa210,0x1d8));var _0x0a21=function(_0x512065,_0x69a4d4){_0x512065=_0x512065-0x0;var _0x39ad9e=_0xa210[_0x512065];return _0x39ad9e;};'use strict';var _=require(_0x0a21('0x0'));var sequelize=require('sequelize');var moment=require('moment');var db=require(_0x0a21('0x1'))['db'];var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x100064){var _0x2ead70=['ne'];try{var _0x51e7cc=JSON[_0x0a21('0x2')](_0x100064);var _0x47618f=Object[_0x0a21('0x3')](_0x51e7cc)[0x0];return _0x2ead70[_0x0a21('0x4')](_0x47618f);}catch(_0x16b4f8){return![];}}function getOperatorValue(_0xe5fd91){var _0x39c1c7=JSON['parse'](_0xe5fd91);var _0x53138f=Object[_0x0a21('0x3')](_0x39c1c7)[0x0];var _0x422223=_0x39c1c7[_0x53138f];return{['$'+_0x53138f]:_0x422223};}function parseIncludeModel(_0x22cfb2){var _0x1b7ec5=JSON[_0x0a21('0x2')](_0x22cfb2);return{'model':db[_0x1b7ec5[_0x0a21('0x5')]],'as':_0x1b7ec5[_0x0a21('0x6')],'attributes':_0x1b7ec5[_0x0a21('0x7')],'raw':_0x1b7ec5['raw']};}exports[_0x0a21('0x7')]=function(_0x27eaeb){var _0x14168c=null;if(_0x27eaeb){_0x14168c=_0x27eaeb['split'](',');}return _0x14168c;};exports[_0x0a21('0x8')]=function(_0x2b1a5d,_0x7fc550){var _0xdd84de={};if(!_['isEmpty'](_0x2b1a5d)){_[_0x0a21('0x9')](_0x2b1a5d,function(_0x1a05a2,_0x347dc5){try{if(_0x7fc550){var _0xbe9a3e=_['find'](_0x7fc550,{'name':_0x347dc5})||{};if(hasSequelizeOperator(_0x1a05a2)){_0xdd84de[_0x347dc5]=getOperatorValue(_0x1a05a2);}else if(_0xbe9a3e[_0x0a21('0xa')]===_0x0a21('0xb')&&_[_0x0a21('0xc')](_0x1a05a2)){var _0x200181=JSON['parse'](_0x1a05a2);var _0x16347f={'$gte':moment(moment(_0x200181[_0x0a21('0xd')])[_0x0a21('0xe')](_0x0a21('0xf')))[_0x0a21('0x10')]()[_0x0a21('0xe')](),'$lte':moment(moment(_0x200181['$lte'])[_0x0a21('0xe')](_0x0a21('0xf')))['utc']()[_0x0a21('0x11')](0x1,'s')[_0x0a21('0xe')]()};_0xdd84de[_0x347dc5]=_0x16347f;}else if(_0xbe9a3e[_0x0a21('0x12')]===_0x0a21('0x13')){_0xdd84de[_0x347dc5]=_0x1a05a2;}else{_0xdd84de[_0x347dc5]=_[_0x0a21('0x14')](_0x1a05a2)?_0x1a05a2:JSON[_0x0a21('0x2')](_0x1a05a2);}}else{_0xdd84de[_0x347dc5]=_['isArray'](_0x1a05a2)?_0x1a05a2:JSON[_0x0a21('0x2')](_0x1a05a2);}}catch(_0x3fab9b){_0xdd84de[_0x347dc5]=_0x1a05a2[_0x0a21('0x15')](',');}});}return _0xdd84de;};exports[_0x0a21('0x16')]=function(_0x4cfd97){_0x4cfd97=parseInt(_0x4cfd97,0xa);if(!_0x4cfd97||_0x4cfd97<0x0){_0x4cfd97=LIMIT_VALUE;}return _0x4cfd97;};exports['offset']=function(_0x34b118){_0x34b118=parseInt(_0x34b118,0xa);if(!_0x34b118||_0x34b118<0x0){_0x34b118=0x0;}return _0x34b118;};exports['sort']=function(_0x2a393f){var _0x176cb6,_0x34a8f4=null;if(_0x2a393f){_0x176cb6=_0x2a393f['split'](',');_0x34a8f4=_[_0x0a21('0x17')](_0x176cb6,function(_0x5bd5cd){if(_0x5bd5cd[_0x0a21('0x18')]('-')===0x0){return[_0x5bd5cd===_0x0a21('0x19')?sequelize[_0x0a21('0x1a')](sequelize[_0x0a21('0x1b')]('priority'),_0x0a21('0x1c')):_0x5bd5cd[_0x0a21('0x1d')](0x1),'DESC'];}else{return[_0x5bd5cd===_0x0a21('0x19')?sequelize[_0x0a21('0x1a')](sequelize['col'](_0x0a21('0x19')),'unsigned'):_0x5bd5cd,_0x0a21('0x1e')];}});}return _0x34a8f4;};exports['omit']=function(_0x466cc7,_0x4a13c6){if(_[_0x0a21('0x1f')](_0x466cc7)){return _0x466cc7;}if(_[_0x0a21('0x14')](_0x466cc7)){for(var _0x3e101f=0x0;_0x3e101f<_0x466cc7['length'];_0x3e101f+=0x1){_0x466cc7[_0x3e101f]=this[_0x0a21('0x20')](_0x466cc7[_0x3e101f],_0x4a13c6);}return _0x466cc7;}if(!_['isObject'](_0x466cc7)){return _0x466cc7;}if(_[_0x0a21('0x21')](_0x4a13c6)){_0x4a13c6=[_0x4a13c6];}if(!_['isArray'](_0x4a13c6)){return _0x466cc7;}for(var _0x954120=0x0;_0x954120<_0x4a13c6['length'];_0x954120+=0x1){_['unset'](_0x466cc7,_0x4a13c6[_0x954120]);}for(var _0x32aa2a in _0x466cc7){if(_0x466cc7[_0x0a21('0x22')](_0x32aa2a)){_0x466cc7[_0x32aa2a]=this[_0x0a21('0x20')](_0x466cc7[_0x32aa2a],_0x4a13c6);}}return _0x466cc7;};exports['isNumeric']=function(_0x457f2a){return _0x457f2a[_0x0a21('0x23')](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports['isEmail']=function(_0x240b15){return _0x240b15['match'](/^\S+@\S+$/)?!![]:![];};exports[_0x0a21('0x24')]=function(_0x30b220,_0x2e1f53){var _0x21668f=[];var _0x2c1030=/[ `!@#$%^&*()_\-?~]/;var _0x311afd=_0x2e1f53?_0x0a21('0x25'):_0x0a21('0x26');_0x30b220[_0x0a21('0x15')](/[ ,]+/)[_0x0a21('0x27')](function(_0x251f91){_0x251f91=_0x251f91[_0x0a21('0x28')](/([^:]")"+/g,'$1');_0x251f91='+'+_0x251f91+'*';var _0x3e36c0=_0x251f91[_0x0a21('0x23')](_0x2c1030);if(_0x3e36c0){_0x251f91='\x22'+_0x251f91+'\x22';}_0x21668f[_0x0a21('0x29')](_0x251f91);});_0x311afd=_0x311afd[_0x0a21('0x28')](_0x0a21('0x26'),_0x21668f[_0x0a21('0x2a')]('\x20'));return _0x311afd;};exports[_0x0a21('0x2b')]=function(_0x1e0916,_0x131877,_0x2c8c60){var _0x533302={},_0x52140c={};if(_0x131877[_0x0a21('0x2c')][_0x0a21('0x2d')]){_0x131877[_0x0a21('0x2c')]['id']=_0x131877['query'][_0x0a21('0x2d')];delete _0x131877[_0x0a21('0x2c')][_0x0a21('0x2d')];}_0x533302[_0x0a21('0x5')]=_[_0x0a21('0x17')](_0x1e0916,_0x0a21('0x12'));_0x533302[_0x0a21('0x2c')]=_[_0x0a21('0x3')](_0x131877['query']);_0x533302[_0x0a21('0x8')]=_[_0x0a21('0x2e')](_0x533302[_0x0a21('0x5')],_0x533302['query']);_0x52140c[_0x0a21('0x2f')]=_['intersection'](_0x533302['model'],this[_0x0a21('0x7')](_0x131877['query'][_0x0a21('0x7')]));_0x52140c['attributes']=_0x52140c[_0x0a21('0x2f')][_0x0a21('0x30')]?_0x52140c[_0x0a21('0x2f')]:_0x533302['model'];if(!_0x131877['query'][_0x0a21('0x22')](_0x0a21('0x31'))){_0x52140c[_0x0a21('0x16')]=this['limit'](_0x131877[_0x0a21('0x2c')][_0x0a21('0x16')]);_0x52140c[_0x0a21('0x32')]=this[_0x0a21('0x32')](_0x131877[_0x0a21('0x2c')]['offset']);}_0x52140c[_0x0a21('0x33')]=this[_0x0a21('0x34')](_0x131877[_0x0a21('0x2c')][_0x0a21('0x34')]);_0x52140c['where']=this[_0x0a21('0x8')](_[_0x0a21('0x35')](_0x131877['query'],_0x533302[_0x0a21('0x8')]),_0x1e0916);if(_0x131877['query'][_0x0a21('0x36')]){var _0x23f6ec=_0x1e0916;var _0x4ac85b=_0x131877[_0x0a21('0x2c')][_0x0a21('0x36')];if(typeof _0x4ac85b==='object'){_0x23f6ec=_[_0x0a21('0x36')](_0x1e0916,function(_0x37e14c){return _[_0x0a21('0x4')](_0x4ac85b[_0x0a21('0x37')],_0x37e14c['name']);});_0x4ac85b=_0x4ac85b[_0x0a21('0x38')];}_0x52140c[_0x0a21('0x39')]=_[_0x0a21('0x3a')](_0x52140c[_0x0a21('0x39')],{'$or':_['map'](_0x23f6ec,function(_0x533884){if(_0x533884['type']!==_0x0a21('0x3b')){if(_0x2c8c60){return sequelize['where'](sequelize['fn'](_0x0a21('0x3c'),sequelize[_0x0a21('0x1b')](_0x533884[_0x0a21('0x12')])),{'$like':sequelize['fn'](_0x0a21('0x3c'),'%'+_0x131877[_0x0a21('0x2c')][_0x0a21('0x36')]+'%')});}else{var _0x396b5f={};_0x396b5f[_0x533884['name']]={'$like':'%'+_0x131877[_0x0a21('0x2c')][_0x0a21('0x36')]+'%'};return _0x396b5f;}}})});}_0x52140c=_[_0x0a21('0x3a')]({},_0x52140c,_0x131877[_0x0a21('0x3d')]);return _0x52140c;};exports[_0x0a21('0x3e')]=function(_0x119583){var _0x543dd1=[];if(_0x119583['includeAll']){_0x543dd1[_0x0a21('0x29')]({'all':!![]});}else if(_0x119583[_0x0a21('0x3e')]){if(Array[_0x0a21('0x14')](_0x119583['include'])){_0x543dd1=Object['keys'](_0x119583['include'])[_0x0a21('0x17')](function(_0x5182c3){return parseIncludeModel(_0x119583[_0x0a21('0x3e')][_0x5182c3]);});}else{var _0x44849f=parseIncludeModel(_0x119583[_0x0a21('0x3e')]);_0x543dd1['push'](_0x44849f);}}return _0x543dd1;};
\ No newline at end of file
+var _0x23ea=['fields','filters','isEmpty','forOwn','find','type','isPlainObject','$gte','format','utc','$lte','subtract','uniqueid','isArray','split','limit','sort','map','indexOf','priority','cast','col','unsigned','substr','DESC','omit','length','isObject','unset','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','getFullTextValue','\x22{EXPR}\x22','{EXPR}','forEach','replace','join','getOptions','query','$id','name','intersection','attributes','offset','order','where','pick','filter','object','columns','value','merge','VIRTUAL','lower','include','includeAll','push','lodash','sequelize','moment','../../mysqldb','parse','keys','includes','model','alias'];(function(_0x199391,_0x525c67){var _0x13c9bd=function(_0x20aef7){while(--_0x20aef7){_0x199391['push'](_0x199391['shift']());}};_0x13c9bd(++_0x525c67);}(_0x23ea,0xc3));var _0xa23e=function(_0x2d120a,_0x5e4d33){_0x2d120a=_0x2d120a-0x0;var _0x205747=_0x23ea[_0x2d120a];return _0x205747;};'use strict';var _=require(_0xa23e('0x0'));var sequelize=require(_0xa23e('0x1'));var moment=require(_0xa23e('0x2'));var db=require(_0xa23e('0x3'))['db'];var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x38f303){var _0x168c22=['ne'];try{var _0x434cbd=JSON[_0xa23e('0x4')](_0x38f303);var _0xf8cea8=Object[_0xa23e('0x5')](_0x434cbd)[0x0];return _0x168c22[_0xa23e('0x6')](_0xf8cea8);}catch(_0x582593){return![];}}function getOperatorValue(_0x3baf3d){var _0x423454=JSON[_0xa23e('0x4')](_0x3baf3d);var _0x90bd9a=Object[_0xa23e('0x5')](_0x423454)[0x0];var _0x1d2a99=_0x423454[_0x90bd9a];return{['$'+_0x90bd9a]:_0x1d2a99};}function parseIncludeModel(_0x4e5680){var _0x57dd55=JSON[_0xa23e('0x4')](_0x4e5680);return{'model':db[_0x57dd55[_0xa23e('0x7')]],'as':_0x57dd55[_0xa23e('0x8')],'attributes':_0x57dd55[_0xa23e('0x9')],'raw':_0x57dd55['raw']};}exports['fields']=function(_0x1d4a1f){var _0x33732b=null;if(_0x1d4a1f){_0x33732b=_0x1d4a1f['split'](',');}return _0x33732b;};exports[_0xa23e('0xa')]=function(_0x547bc0,_0x4c7ab0){var _0x1c9da1={};if(!_[_0xa23e('0xb')](_0x547bc0)){_[_0xa23e('0xc')](_0x547bc0,function(_0x2bc00f,_0x59e043){try{if(_0x4c7ab0){var _0x13aec1=_[_0xa23e('0xd')](_0x4c7ab0,{'name':_0x59e043})||{};if(hasSequelizeOperator(_0x2bc00f)){_0x1c9da1[_0x59e043]=getOperatorValue(_0x2bc00f);}else if(_0x13aec1[_0xa23e('0xe')]==='DATE'&&_[_0xa23e('0xf')](_0x2bc00f)){var _0x3bba28=JSON[_0xa23e('0x4')](_0x2bc00f);var _0x56a9e7={'$gte':moment(moment(_0x3bba28[_0xa23e('0x10')])[_0xa23e('0x11')]('YYYY-MM-DD'))[_0xa23e('0x12')]()['format'](),'$lte':moment(moment(_0x3bba28[_0xa23e('0x13')])[_0xa23e('0x11')]('YYYY-MM-DD'))[_0xa23e('0x12')]()[_0xa23e('0x14')](0x1,'s')[_0xa23e('0x11')]()};_0x1c9da1[_0x59e043]=_0x56a9e7;}else if(_0x13aec1['name']===_0xa23e('0x15')){_0x1c9da1[_0x59e043]=_0x2bc00f;}else{_0x1c9da1[_0x59e043]=_[_0xa23e('0x16')](_0x2bc00f)?_0x2bc00f:JSON[_0xa23e('0x4')](_0x2bc00f);}}else{_0x1c9da1[_0x59e043]=_[_0xa23e('0x16')](_0x2bc00f)?_0x2bc00f:JSON[_0xa23e('0x4')](_0x2bc00f);}}catch(_0x7783bc){_0x1c9da1[_0x59e043]=_0x2bc00f[_0xa23e('0x17')](',');}});}return _0x1c9da1;};exports[_0xa23e('0x18')]=function(_0x455325){_0x455325=parseInt(_0x455325,0xa);if(!_0x455325||_0x455325<0x0){_0x455325=LIMIT_VALUE;}return _0x455325;};exports['offset']=function(_0x18a9ff){_0x18a9ff=parseInt(_0x18a9ff,0xa);if(!_0x18a9ff||_0x18a9ff<0x0){_0x18a9ff=0x0;}return _0x18a9ff;};exports[_0xa23e('0x19')]=function(_0x366a22){var _0x2f6069,_0x4b44e1=null;if(_0x366a22){_0x2f6069=_0x366a22[_0xa23e('0x17')](',');_0x4b44e1=_[_0xa23e('0x1a')](_0x2f6069,function(_0x54b029){if(_0x54b029[_0xa23e('0x1b')]('-')===0x0){return[_0x54b029===_0xa23e('0x1c')?sequelize[_0xa23e('0x1d')](sequelize[_0xa23e('0x1e')](_0xa23e('0x1c')),_0xa23e('0x1f')):_0x54b029[_0xa23e('0x20')](0x1),_0xa23e('0x21')];}else{return[_0x54b029==='priority'?sequelize[_0xa23e('0x1d')](sequelize['col'](_0xa23e('0x1c')),_0xa23e('0x1f')):_0x54b029,'ASC'];}});}return _0x4b44e1;};exports[_0xa23e('0x22')]=function(_0x17bbf4,_0x343958){if(_['isEmpty'](_0x17bbf4)){return _0x17bbf4;}if(_[_0xa23e('0x16')](_0x17bbf4)){for(var _0x43f96b=0x0;_0x43f96b<_0x17bbf4[_0xa23e('0x23')];_0x43f96b+=0x1){_0x17bbf4[_0x43f96b]=this[_0xa23e('0x22')](_0x17bbf4[_0x43f96b],_0x343958);}return _0x17bbf4;}if(!_[_0xa23e('0x24')](_0x17bbf4)){return _0x17bbf4;}if(_['isString'](_0x343958)){_0x343958=[_0x343958];}if(!_[_0xa23e('0x16')](_0x343958)){return _0x17bbf4;}for(var _0x1b1032=0x0;_0x1b1032<_0x343958[_0xa23e('0x23')];_0x1b1032+=0x1){_[_0xa23e('0x25')](_0x17bbf4,_0x343958[_0x1b1032]);}for(var _0x54a8c8 in _0x17bbf4){if(_0x17bbf4[_0xa23e('0x26')](_0x54a8c8)){_0x17bbf4[_0x54a8c8]=this[_0xa23e('0x22')](_0x17bbf4[_0x54a8c8],_0x343958);}}return _0x17bbf4;};exports['isNumeric']=function(_0x11b009){return _0x11b009[_0xa23e('0x27')](RegExp(_0xa23e('0x28')))?!![]:![];};exports[_0xa23e('0x29')]=function(_0x3df53a){return _0x3df53a['match'](/^\S+@\S+$/)?!![]:![];};exports[_0xa23e('0x2a')]=function(_0x3eee6c,_0x1bc7be){var _0x3b08b2=[];var _0x311b11=/[ `!@#$%^&*()_\-?~]/;var _0xd679df=_0x1bc7be?_0xa23e('0x2b'):_0xa23e('0x2c');_0x3eee6c[_0xa23e('0x17')](/[ ,]+/)[_0xa23e('0x2d')](function(_0x4a27e5){_0x4a27e5=_0x4a27e5[_0xa23e('0x2e')](/([^:]")"+/g,'$1');_0x4a27e5='+'+_0x4a27e5+'*';var _0x1596b0=_0x4a27e5[_0xa23e('0x27')](_0x311b11);if(_0x1596b0){_0x4a27e5='\x22'+_0x4a27e5+'\x22';}_0x3b08b2['push'](_0x4a27e5);});_0xd679df=_0xd679df[_0xa23e('0x2e')](_0xa23e('0x2c'),_0x3b08b2[_0xa23e('0x2f')]('\x20'));return _0xd679df;};exports[_0xa23e('0x30')]=function(_0x24212c,_0x1a627e,_0x1585a8){var _0x428e05={},_0x46235b={};if(_0x1a627e[_0xa23e('0x31')][_0xa23e('0x32')]){_0x1a627e[_0xa23e('0x31')]['id']=_0x1a627e[_0xa23e('0x31')]['$id'];delete _0x1a627e[_0xa23e('0x31')]['$id'];}_0x428e05[_0xa23e('0x7')]=_['map'](_0x24212c,_0xa23e('0x33'));_0x428e05[_0xa23e('0x31')]=_[_0xa23e('0x5')](_0x1a627e[_0xa23e('0x31')]);_0x428e05[_0xa23e('0xa')]=_[_0xa23e('0x34')](_0x428e05[_0xa23e('0x7')],_0x428e05[_0xa23e('0x31')]);_0x46235b['attributes']=_[_0xa23e('0x34')](_0x428e05[_0xa23e('0x7')],this['fields'](_0x1a627e[_0xa23e('0x31')][_0xa23e('0x9')]));_0x46235b[_0xa23e('0x35')]=_0x46235b[_0xa23e('0x35')][_0xa23e('0x23')]?_0x46235b[_0xa23e('0x35')]:_0x428e05[_0xa23e('0x7')];if(!_0x1a627e[_0xa23e('0x31')][_0xa23e('0x26')]('nolimit')){_0x46235b[_0xa23e('0x18')]=this[_0xa23e('0x18')](_0x1a627e['query'][_0xa23e('0x18')]);_0x46235b[_0xa23e('0x36')]=this[_0xa23e('0x36')](_0x1a627e[_0xa23e('0x31')][_0xa23e('0x36')]);}_0x46235b[_0xa23e('0x37')]=this['sort'](_0x1a627e[_0xa23e('0x31')]['sort']);_0x46235b[_0xa23e('0x38')]=this['filters'](_[_0xa23e('0x39')](_0x1a627e[_0xa23e('0x31')],_0x428e05[_0xa23e('0xa')]),_0x24212c);if(_0x1a627e[_0xa23e('0x31')]['filter']){var _0x3fbd17=_0x24212c;var _0x8a282d=_0x1a627e['query'][_0xa23e('0x3a')];if(typeof _0x8a282d===_0xa23e('0x3b')){_0x3fbd17=_[_0xa23e('0x3a')](_0x24212c,function(_0x52ba99){return _[_0xa23e('0x6')](_0x8a282d[_0xa23e('0x3c')],_0x52ba99[_0xa23e('0x33')]);});_0x8a282d=_0x8a282d[_0xa23e('0x3d')];}_0x46235b['where']=_[_0xa23e('0x3e')](_0x46235b[_0xa23e('0x38')],{'$or':_['map'](_0x3fbd17,function(_0x3e4cea){if(_0x3e4cea[_0xa23e('0xe')]!==_0xa23e('0x3f')){if(_0x1585a8){return sequelize[_0xa23e('0x38')](sequelize['fn'](_0xa23e('0x40'),sequelize[_0xa23e('0x1e')](_0x3e4cea[_0xa23e('0x33')])),{'$like':sequelize['fn'](_0xa23e('0x40'),'%'+_0x1a627e[_0xa23e('0x31')][_0xa23e('0x3a')]+'%')});}else{var _0x130dad={};_0x130dad[_0x3e4cea[_0xa23e('0x33')]]={'$like':'%'+_0x1a627e[_0xa23e('0x31')][_0xa23e('0x3a')]+'%'};return _0x130dad;}}})});}_0x46235b=_[_0xa23e('0x3e')]({},_0x46235b,_0x1a627e['options']);return _0x46235b;};exports[_0xa23e('0x41')]=function(_0x19b9aa){var _0x334cff=[];if(_0x19b9aa[_0xa23e('0x42')]){_0x334cff[_0xa23e('0x43')]({'all':!![]});}else if(_0x19b9aa[_0xa23e('0x41')]){if(Array[_0xa23e('0x16')](_0x19b9aa['include'])){_0x334cff=Object[_0xa23e('0x5')](_0x19b9aa['include'])[_0xa23e('0x1a')](function(_0x47afce){return parseIncludeModel(_0x19b9aa[_0xa23e('0x41')][_0x47afce]);});}else{var _0x27290b=parseIncludeModel(_0x19b9aa[_0xa23e('0x41')]);_0x334cff[_0xa23e('0x43')](_0x27290b);}}return _0x334cff;};
\ No newline at end of file
index 4c930d0..b94176d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatusTime','mailStatusTime','whatsappStatusTime','faxStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableAutomaticScreenRecording','omit','filterAgentAttributes','openchannelStatusTime','voiceStatusTime','faxCapacity','chatCurrentCapacity','phoneBarEnableScreenRecordingByAgent','onhold','routealias','getRealtimeAgentsQueryFields','lodash','jayson/promise','../../mysqldb','client','http','chatPause','faxPause','mailPause','smsPause','voicePause','every','filter','length','idle','unknown','unavailable','ringing','voiceStatus','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','catch','*pause','busy','getAgentStatus','isArray','Queue','map','findOne','getAgents','all','flatten','uniq','value','getAgentIdsByQueues','includes','resolve','findAll','name','fullname','openchannelPause','whatsappPause','pauseType','find','globalStatus','getSortedAgentsIdsByStatus','fields','order','fullname,internal','indexOf','internal','validateSortParameter','sort','DESC','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','openchannelCurrentCapacity'];(function(_0x14b708,_0x62c81c){var _0x6d280=function(_0x5c5a24){while(--_0x5c5a24){_0x14b708['push'](_0x14b708['shift']());}};_0x6d280(++_0x62c81c);}(_0x814b,0x1a2));var _0xb814=function(_0x300860,_0x509371){_0x300860=_0x300860-0x0;var _0x2094ad=_0x814b[_0x300860];return _0x2094ad;};'use strict';var _=require(_0xb814('0x0'));var jayson=require(_0xb814('0x1'));var db=require(_0xb814('0x2'))['db'];var amiClient=jayson[_0xb814('0x3')][_0xb814('0x4')]({'port':0x232a});var routingClient=jayson[_0xb814('0x3')]['http']({'port':0x232c});function isAgentPaused(_0x38c21a,_0x3e1e9){var _0x258866=[_0x38c21a[_0xb814('0x5')],_0x38c21a[_0xb814('0x6')],_0x38c21a[_0xb814('0x7')],_0x38c21a['openchannelPause'],_0x38c21a[_0xb814('0x8')],_0x38c21a[_0xb814('0x9')],_0x38c21a['whatsappPause']];if(!_0x3e1e9)return _[_0xb814('0xa')](_0x258866);var _0x2913a6=_[_0xb814('0xb')](_0x258866);return _0x2913a6[_0xb814('0xc')]>0x0&&_0x2913a6[_0xb814('0xc')]<_0x258866[_0xb814('0xc')]?!![]:![];}function isIdle(_0x1086f8){return _0x1086f8===_0xb814('0xd')||_0x1086f8===_0xb814('0xe')||_0x1086f8===_0xb814('0xf')||_0x1086f8===_0xb814('0x10')||_['isNil'](_0x1086f8);}function isAgentIdle(_0x43dfe6){if(_0x43dfe6['voiceStatus']!==_0xb814('0xd')&&_0x43dfe6[_0xb814('0x9')]){_0x43dfe6[_0xb814('0x11')]=_0xb814('0x12');return![];}return _[_0xb814('0xa')]([_0x43dfe6[_0xb814('0x13')],_0x43dfe6[_0xb814('0x14')],_0x43dfe6[_0xb814('0x15')],_0x43dfe6[_0xb814('0x16')],_0x43dfe6[_0xb814('0x17')],_0x43dfe6[_0xb814('0x11')],_0x43dfe6[_0xb814('0x18')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xb814('0x19')](_0xb814('0x1a'),{})[_0xb814('0x1b')](function(_0x3a71d6){if(_0x3a71d6[_0xb814('0x1c')]){throw new Error(_0xb814('0x1d'));}var _0x125ce2=_0x3a71d6[_0xb814('0x1e')];return routingClient[_0xb814('0x19')]('Agents',{})[_0xb814('0x1b')](function(_0x55ba16){if(_0x55ba16[_0xb814('0x1c')]){throw new Error(_0xb814('0x1f'));}var _0x4c3007=_0x55ba16['result'];return _['merge']({},_0x125ce2,_0x4c3007);});})[_0xb814('0x20')](function(_0x4d5276){throw _0x4d5276;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0xb684ea){var _0x24211d=_0xb814('0xe');if(isAgentPaused(_0xb684ea))_0x24211d='pause';else if(isAgentPaused(_0xb684ea,!![]))_0x24211d=_0xb814('0x21');else if(isAgentIdle(_0xb684ea))_0x24211d='idle';else _0x24211d=_0xb814('0x22');return _0x24211d;}exports[_0xb814('0x23')]=getAgentStatus;function getAgentIdsByQueues(_0x3b267e,_0x470e81){var _0x27352e=_[_0xb814('0x24')](_0x3b267e)?_0x3b267e:[_0x3b267e];var _0x1f5d40=_['startCase'](_0x470e81)+_0xb814('0x25');var _0x52b7a3=_[_0xb814('0x26')](_0x27352e,function(_0x457dac){return db[_0x1f5d40][_0xb814('0x27')]({'where':{'id':_0x457dac}})[_0xb814('0x1b')](function(_0x1c8a2e){if(!_0x1c8a2e)return[];return _0x1c8a2e[_0xb814('0x28')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xb814('0x29')](_0x52b7a3)['then'](function(_0x392222){var _0xc0ef66=_(_0x392222)[_0xb814('0x2a')]()[_0xb814('0x26')]('id')[_0xb814('0x2b')]()[_0xb814('0x2c')]();return _0xc0ef66;});}exports[_0xb814('0x2d')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x1e4e89,_0x5a6291,_0x271aa8){try{if(_0x5a6291[_0xb814('0xc')]>0x0){_0x1e4e89=_0x1e4e89['filter'](function(_0x9008b2){return _0x5a6291[_0xb814('0x2e')](_0x9008b2['id']);});}var _0x530744=_0x1e4e89['filter'](function(_0x20577b){var _0x2051d0='busy';if(isAgentIdle(_0x20577b)){_0x2051d0=_0xb814('0xd');}return _0x2051d0===_0x271aa8;});return _['map'](_0x530744,'id');}catch(_0x6efe9a){throw _0x6efe9a;}}exports['getAgentIdsByStatus']=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x4cfc58,_0x419cd9,_0x4a4f27){return Promise[_0xb814('0x2f')]()[_0xb814('0x1b')](function(){if(_0x419cd9[_0xb814('0xc')]>0x0){_0x4cfc58=_0x4cfc58['filter'](function(_0x51d5ae){return _0x419cd9[_0xb814('0x2e')](_0x51d5ae['id']);});}return _0x4cfc58;})[_0xb814('0x1b')](function(){return db['User'][_0xb814('0x30')]({'attributes':['id',_0xb814('0x31'),_0xb814('0x32'),_0xb814('0x5'),_0xb814('0x6'),_0xb814('0x7'),_0xb814('0x33'),'smsPause',_0xb814('0x9'),_0xb814('0x34'),_0xb814('0x35')],'where':{'id':{'$in':_[_0xb814('0x26')](_0x4cfc58,'id')}},'raw':!![]});})[_0xb814('0x1b')](function(_0x4ff31a){return _0x4ff31a[_0xb814('0x26')](function(_0x57e6e6){var _0x43db67=_[_0xb814('0x36')](_0x4cfc58,['id',_0x57e6e6['id']]);var _0xe0f509=filterAgentAttributes(_0x43db67);_['merge'](_0x57e6e6,_0xe0f509);_0x57e6e6[_0xb814('0x37')]=getAgentStatus(_0x57e6e6);return _0x57e6e6;});})[_0xb814('0x1b')](function(_0x4ea6f8){var _0x2fcd92=sortAgentsByStatus(_0x4ea6f8,_0x4a4f27);return _[_0xb814('0x26')](_0x2fcd92,'id');})[_0xb814('0x20')](function(_0x1f7cd8){throw _0x1f7cd8;});}exports[_0xb814('0x38')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x467cf9){var _0x4d81eb={'fields':[],'order':null};var _0xa6ce87=_0x467cf9['split'](',');_0x4d81eb[_0xb814('0x39')]=_['filter'](_0xa6ce87,function(_0x4492ef){if(!_0x4492ef['includes'](_0xb814('0x37'))){return!![];}_0x4d81eb[_0xb814('0x3a')]=_['startsWith'](_0x4492ef,'-')?'DESC':'ASC';return![];});return _0x4d81eb;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x17549e){if(!_0x17549e){_0x17549e=_0xb814('0x3b');}if(_0x17549e[_0xb814('0x2e')](_0xb814('0x32'))&&!_0x17549e['includes']('internal')){var _0x6f15d3=_0x17549e['substring'](0x0,_0x17549e[_0xb814('0x3c')](_0xb814('0x32')));_0x17549e+=','+_0x6f15d3+_0xb814('0x3d');}return _0x17549e;}exports[_0xb814('0x3e')]=validateSortParameter;function sortAgentsByStatus(_0x42653f,_0x37369f){var _0x3b7f5a=_0x42653f[_0xb814('0x3f')](function(_0x31989d,_0x4b6ff8){if(_0x31989d['globalStatus']===_0x4b6ff8['globalStatus']){if(_0x31989d[_0xb814('0x37')]==='pause'){if(_0x37369f===_0xb814('0x40')){return(_0x31989d['pauseType']||'')<(_0x4b6ff8[_0xb814('0x35')]||'')||_0x31989d[_0xb814('0x32')][_0xb814('0x41')]()>_0x4b6ff8[_0xb814('0x32')]['toLowerCase']()?0x1:-0x1;}else{return(_0x31989d[_0xb814('0x35')]||'')<(_0x4b6ff8[_0xb814('0x35')]||'')||_0x31989d[_0xb814('0x32')][_0xb814('0x41')]()>_0x4b6ff8[_0xb814('0x32')][_0xb814('0x41')]()?-0x1:0x1;}}else{if(_0x37369f==='DESC'){return _0x31989d[_0xb814('0x32')][_0xb814('0x41')]()<_0x4b6ff8[_0xb814('0x32')][_0xb814('0x41')]()?0x1:-0x1;}else{return _0x31989d[_0xb814('0x32')][_0xb814('0x41')]()<_0x4b6ff8[_0xb814('0x32')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x37369f==='DESC'){return _0x31989d[_0xb814('0x37')]<_0x4b6ff8[_0xb814('0x37')]?0x1:-0x1;}else{return _0x31989d[_0xb814('0x37')]<_0x4b6ff8[_0xb814('0x37')]?-0x1:0x1;}}});return _0x3b7f5a;}exports[_0xb814('0x42')]=sortAgentsByStatus;function filterAgentAttributes(_0x40e627){var _0x24b697=[_0xb814('0x43'),_0xb814('0x44'),_0xb814('0x45'),_0xb814('0x46'),'pauseType',_0xb814('0x46'),_0xb814('0x3d'),'address',_0xb814('0x5'),'openchannelPause',_0xb814('0x7'),_0xb814('0x8'),_0xb814('0x34'),_0xb814('0x6'),_0xb814('0x9'),_0xb814('0x47'),_0xb814('0x48'),_0xb814('0x49'),_0xb814('0x4a'),_0xb814('0x4b'),'faxCapacity','chatCurrentCapacity',_0xb814('0x4c'),_0xb814('0x4d'),_0xb814('0x4e'),_0xb814('0x4f'),_0xb814('0x50'),_0xb814('0x13'),_0xb814('0x16'),'mailStatus',_0xb814('0x17'),_0xb814('0x18'),_0xb814('0x14'),'voiceStatus',_0xb814('0x51'),'openchannelStatusTime',_0xb814('0x52'),'smsStatusTime',_0xb814('0x53'),_0xb814('0x54'),'voiceStatusTime',_0xb814('0x55'),_0xb814('0x56'),_0xb814('0x57'),'phoneBarEnableScreenRecordingByAgent',_0xb814('0x58'),'routealias'];var _0x13bdcf=[_0xb814('0x5'),'openchannelPause',_0xb814('0x7'),'smsPause','whatsappPause',_0xb814('0x6'),_0xb814('0x9'),_0xb814('0x44')];var _0x47a814=_(_0x40e627)[_0xb814('0x59')](_0x13bdcf)['pick'](_0x24b697)[_0xb814('0x2c')]();return _0x47a814;}exports[_0xb814('0x5a')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id','name',_0xb814('0x32'),'role',_0xb814('0x3d'),_0xb814('0x44'),_0xb814('0x37'),_0xb814('0x43'),_0xb814('0x45'),_0xb814('0x35'),_0xb814('0x46'),_0xb814('0x6'),'chatPause',_0xb814('0x7'),_0xb814('0x33'),'smsPause',_0xb814('0x9'),_0xb814('0x34'),'chatStatus',_0xb814('0x14'),'mailStatus','openchannelStatus',_0xb814('0x17'),'voiceStatus',_0xb814('0x18'),_0xb814('0x51'),_0xb814('0x54'),'mailStatusTime',_0xb814('0x5b'),'smsStatusTime',_0xb814('0x5c'),_0xb814('0x53'),_0xb814('0x47'),_0xb814('0x5d'),_0xb814('0x49'),_0xb814('0x48'),_0xb814('0x4a'),_0xb814('0x4b'),_0xb814('0x5e'),'faxCurrentCapacity',_0xb814('0x4d'),_0xb814('0x4c'),_0xb814('0x4e'),_0xb814('0x4f'),_0xb814('0x5f'),_0xb814('0x58'),'destconnectedlinenum',_0xb814('0x60'),'queue',_0xb814('0x61'),_0xb814('0x57')];}exports[_0xb814('0x62')]=getRealtimeAgentsQueryFields;
\ No newline at end of file
+var _0x31f0=['mailStatus','openchannelStatus','smsStatus','whatsappStatus','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','getRealtimeAgents','*pause','busy','isArray','map','findOne','all','flatten','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','resolve','User','findAll','name','fullname','faxPause','mailPause','openchannelPause','find','globalStatus','getSortedAgentsIdsByStatus','split','fields','startsWith','DESC','ASC','getUpdatedSortOptions','fullname,internal','internal','indexOf','sort','pauseType','toLowerCase','sortAgentsByStatus','userpic','lastPauseAt','address','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','chatCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','faxCurrentCapacity','chatStatusTime','mailStatusTime','smsStatusTime','faxStatusTime','queue','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','online','omit','pick','role','lastLoginAt','faxStatus','openchannelStatusTime','voiceStatusTime','whatsappStatusTime','faxCapacity','openchannelCurrentCapacity','destconnectedlinenum','onhold','getRealtimeAgentsQueryFields','lodash','../../mysqldb','http','client','chatPause','smsPause','whatsappPause','every','filter','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','voicePause','pause','chatStatus'];(function(_0x5d9867,_0x5e9030){var _0x7d2118=function(_0x2e5149){while(--_0x2e5149){_0x5d9867['push'](_0x5d9867['shift']());}};_0x7d2118(++_0x5e9030);}(_0x31f0,0xb7));var _0x031f=function(_0x1fe9a4,_0xba8fb){_0x1fe9a4=_0x1fe9a4-0x0;var _0x2750be=_0x31f0[_0x1fe9a4];return _0x2750be;};'use strict';var _=require(_0x031f('0x0'));var jayson=require('jayson/promise');var db=require(_0x031f('0x1'))['db'];var amiClient=jayson['client'][_0x031f('0x2')]({'port':0x232a});var routingClient=jayson[_0x031f('0x3')][_0x031f('0x2')]({'port':0x232c});function isAgentPaused(_0xf20620,_0x526a45){var _0x3c0612=[_0xf20620[_0x031f('0x4')],_0xf20620['faxPause'],_0xf20620['mailPause'],_0xf20620['openchannelPause'],_0xf20620[_0x031f('0x5')],_0xf20620['voicePause'],_0xf20620[_0x031f('0x6')]];if(!_0x526a45)return _[_0x031f('0x7')](_0x3c0612);var _0x2569b6=_[_0x031f('0x8')](_0x3c0612);return _0x2569b6['length']>0x0&&_0x2569b6[_0x031f('0x9')]<_0x3c0612[_0x031f('0x9')]?!![]:![];}function isIdle(_0x327f11){return _0x327f11===_0x031f('0xa')||_0x327f11===_0x031f('0xb')||_0x327f11===_0x031f('0xc')||_0x327f11===_0x031f('0xd')||_[_0x031f('0xe')](_0x327f11);}function isAgentIdle(_0x4df318){if(_0x4df318[_0x031f('0xf')]!==_0x031f('0xa')&&_0x4df318[_0x031f('0x10')]){_0x4df318[_0x031f('0xf')]=_0x031f('0x11');return![];}return _[_0x031f('0x7')]([_0x4df318[_0x031f('0x12')],_0x4df318['faxStatus'],_0x4df318[_0x031f('0x13')],_0x4df318[_0x031f('0x14')],_0x4df318[_0x031f('0x15')],_0x4df318[_0x031f('0xf')],_0x4df318[_0x031f('0x16')]],isIdle);}function getRealtimeAgents(){return amiClient['request']('Agents',{})[_0x031f('0x17')](function(_0x3a10aa){if(_0x3a10aa[_0x031f('0x18')]){throw new Error(_0x031f('0x19'));}var _0x5196b1=_0x3a10aa[_0x031f('0x1a')];return routingClient[_0x031f('0x1b')]('Agents',{})[_0x031f('0x17')](function(_0x535e70){if(_0x535e70[_0x031f('0x18')]){throw new Error(_0x031f('0x1c'));}var _0x563bc8=_0x535e70[_0x031f('0x1a')];return _[_0x031f('0x1d')]({},_0x5196b1,_0x563bc8);});})[_0x031f('0x1e')](function(_0x1b76d6){throw _0x1b76d6;});}exports[_0x031f('0x1f')]=getRealtimeAgents;function getAgentStatus(_0xf76f1b){var _0x345bde=_0x031f('0xb');if(isAgentPaused(_0xf76f1b))_0x345bde='pause';else if(isAgentPaused(_0xf76f1b,!![]))_0x345bde=_0x031f('0x20');else if(isAgentIdle(_0xf76f1b))_0x345bde=_0x031f('0xa');else _0x345bde=_0x031f('0x21');return _0x345bde;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x5c4184,_0xa11a2b){var _0x4d0f92=_[_0x031f('0x22')](_0x5c4184)?_0x5c4184:[_0x5c4184];var _0x57f6c4=_['startCase'](_0xa11a2b)+'Queue';var _0x971691=_[_0x031f('0x23')](_0x4d0f92,function(_0x2920cd){return db[_0x57f6c4][_0x031f('0x24')]({'where':{'id':_0x2920cd}})['then'](function(_0x374b65){if(!_0x374b65)return[];return _0x374b65['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0x031f('0x25')](_0x971691)[_0x031f('0x17')](function(_0xfa77b1){var _0x567666=_(_0xfa77b1)[_0x031f('0x26')]()[_0x031f('0x23')]('id')['uniq']()[_0x031f('0x27')]();return _0x567666;});}exports[_0x031f('0x28')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x2403e9,_0x5395ea,_0xa308b){try{if(_0x5395ea[_0x031f('0x9')]>0x0){_0x2403e9=_0x2403e9[_0x031f('0x8')](function(_0xaf5bea){return _0x5395ea[_0x031f('0x29')](_0xaf5bea['id']);});}var _0x301bd2=_0x2403e9['filter'](function(_0x1f62eb){var _0xab24ad=_0x031f('0x21');if(isAgentIdle(_0x1f62eb)){_0xab24ad=_0x031f('0xa');}return _0xab24ad===_0xa308b;});return _[_0x031f('0x23')](_0x301bd2,'id');}catch(_0x2d24f0){throw _0x2d24f0;}}exports[_0x031f('0x2a')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x87dc07,_0x2034ac,_0xfc4a89){return Promise[_0x031f('0x2b')]()['then'](function(){if(_0x2034ac[_0x031f('0x9')]>0x0){_0x87dc07=_0x87dc07[_0x031f('0x8')](function(_0xb3a6bd){return _0x2034ac[_0x031f('0x29')](_0xb3a6bd['id']);});}return _0x87dc07;})[_0x031f('0x17')](function(){return db[_0x031f('0x2c')][_0x031f('0x2d')]({'attributes':['id',_0x031f('0x2e'),_0x031f('0x2f'),_0x031f('0x4'),_0x031f('0x30'),_0x031f('0x31'),_0x031f('0x32'),'smsPause',_0x031f('0x10'),_0x031f('0x6'),'pauseType'],'where':{'id':{'$in':_[_0x031f('0x23')](_0x87dc07,'id')}},'raw':!![]});})[_0x031f('0x17')](function(_0x4ec696){return _0x4ec696[_0x031f('0x23')](function(_0x22e486){var _0x41750a=_[_0x031f('0x33')](_0x87dc07,['id',_0x22e486['id']]);var _0x4b5c42=filterAgentAttributes(_0x41750a);_['merge'](_0x22e486,_0x4b5c42);_0x22e486[_0x031f('0x34')]=getAgentStatus(_0x22e486);return _0x22e486;});})['then'](function(_0x43ab76){var _0x2aa0aa=sortAgentsByStatus(_0x43ab76,_0xfc4a89);return _[_0x031f('0x23')](_0x2aa0aa,'id');})['catch'](function(_0x5c33c5){throw _0x5c33c5;});}exports[_0x031f('0x35')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x5ed480){var _0x57b9c8={'fields':[],'order':null};var _0x2d489a=_0x5ed480[_0x031f('0x36')](',');_0x57b9c8[_0x031f('0x37')]=_[_0x031f('0x8')](_0x2d489a,function(_0x11c03c){if(!_0x11c03c[_0x031f('0x29')](_0x031f('0x34'))){return!![];}_0x57b9c8['order']=_[_0x031f('0x38')](_0x11c03c,'-')?_0x031f('0x39'):_0x031f('0x3a');return![];});return _0x57b9c8;}exports[_0x031f('0x3b')]=getUpdatedSortOptions;function validateSortParameter(_0x58daa2){if(!_0x58daa2){_0x58daa2=_0x031f('0x3c');}if(_0x58daa2[_0x031f('0x29')](_0x031f('0x2f'))&&!_0x58daa2['includes'](_0x031f('0x3d'))){var _0x3b504c=_0x58daa2['substring'](0x0,_0x58daa2[_0x031f('0x3e')](_0x031f('0x2f')));_0x58daa2+=','+_0x3b504c+'internal';}return _0x58daa2;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x178135,_0x1d85bb){var _0x9efbc4=_0x178135[_0x031f('0x3f')](function(_0x2691b7,_0xf0fb95){if(_0x2691b7[_0x031f('0x34')]===_0xf0fb95['globalStatus']){if(_0x2691b7[_0x031f('0x34')]===_0x031f('0x11')){if(_0x1d85bb==='DESC'){return(_0x2691b7[_0x031f('0x40')]||'')<(_0xf0fb95['pauseType']||'')||_0x2691b7[_0x031f('0x2f')][_0x031f('0x41')]()>_0xf0fb95['fullname'][_0x031f('0x41')]()?0x1:-0x1;}else{return(_0x2691b7[_0x031f('0x40')]||'')<(_0xf0fb95[_0x031f('0x40')]||'')||_0x2691b7['fullname'][_0x031f('0x41')]()>_0xf0fb95[_0x031f('0x2f')][_0x031f('0x41')]()?-0x1:0x1;}}else{if(_0x1d85bb===_0x031f('0x39')){return _0x2691b7[_0x031f('0x2f')][_0x031f('0x41')]()<_0xf0fb95[_0x031f('0x2f')][_0x031f('0x41')]()?0x1:-0x1;}else{return _0x2691b7[_0x031f('0x2f')]['toLowerCase']()<_0xf0fb95[_0x031f('0x2f')][_0x031f('0x41')]()?-0x1:0x1;}}}else{if(_0x1d85bb===_0x031f('0x39')){return _0x2691b7[_0x031f('0x34')]<_0xf0fb95[_0x031f('0x34')]?0x1:-0x1;}else{return _0x2691b7[_0x031f('0x34')]<_0xf0fb95[_0x031f('0x34')]?-0x1:0x1;}}});return _0x9efbc4;}exports[_0x031f('0x42')]=sortAgentsByStatus;function filterAgentAttributes(_0x3411f1){var _0x5f033b=[_0x031f('0x43'),'online','lastLoginAt',_0x031f('0x44'),_0x031f('0x40'),_0x031f('0x44'),_0x031f('0x3d'),_0x031f('0x45'),'chatPause',_0x031f('0x32'),_0x031f('0x31'),_0x031f('0x5'),'whatsappPause',_0x031f('0x30'),_0x031f('0x10'),_0x031f('0x46'),_0x031f('0x47'),_0x031f('0x48'),_0x031f('0x49'),'whatsappCapacity','faxCapacity',_0x031f('0x4a'),'openchannelCurrentCapacity',_0x031f('0x4b'),_0x031f('0x4c'),'whatsappCurrentCapacity',_0x031f('0x4d'),'chatStatus','openchannelStatus',_0x031f('0x13'),'smsStatus',_0x031f('0x16'),'faxStatus',_0x031f('0xf'),_0x031f('0x4e'),'openchannelStatusTime',_0x031f('0x4f'),_0x031f('0x50'),'whatsappStatusTime',_0x031f('0x51'),'voiceStatusTime',_0x031f('0x52'),'destconnectedlinenum',_0x031f('0x53'),_0x031f('0x54'),_0x031f('0x55'),_0x031f('0x56')];var _0x691a68=['chatPause',_0x031f('0x32'),'mailPause',_0x031f('0x5'),_0x031f('0x6'),'faxPause',_0x031f('0x10'),_0x031f('0x57')];var _0x510d17=_(_0x3411f1)[_0x031f('0x58')](_0x691a68)[_0x031f('0x59')](_0x5f033b)[_0x031f('0x27')]();return _0x510d17;}exports['filterAgentAttributes']=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0x031f('0x2e'),'fullname',_0x031f('0x5a'),'internal',_0x031f('0x57'),'globalStatus',_0x031f('0x43'),_0x031f('0x5b'),'pauseType','lastPauseAt',_0x031f('0x30'),_0x031f('0x4'),'mailPause',_0x031f('0x32'),_0x031f('0x5'),_0x031f('0x10'),_0x031f('0x6'),_0x031f('0x12'),_0x031f('0x5c'),_0x031f('0x13'),_0x031f('0x14'),'smsStatus',_0x031f('0xf'),_0x031f('0x16'),_0x031f('0x4e'),'faxStatusTime',_0x031f('0x4f'),_0x031f('0x5d'),'smsStatusTime',_0x031f('0x5e'),_0x031f('0x5f'),_0x031f('0x46'),_0x031f('0x60'),'mailCapacity','openchannelCapacity','smsCapacity','whatsappCapacity',_0x031f('0x4a'),_0x031f('0x4d'),'mailCurrentCapacity',_0x031f('0x61'),_0x031f('0x4c'),'whatsappCurrentCapacity',_0x031f('0x54'),_0x031f('0x55'),_0x031f('0x62'),_0x031f('0x63'),_0x031f('0x52'),_0x031f('0x56'),_0x031f('0x53')];}exports[_0x031f('0x64')]=getRealtimeAgentsQueryFields;
\ No newline at end of file
index cea784d..02968df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c5f=['request','Queues','error','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','getRealtimeQueues','voice','inbound','concat','map','talking','outbound','find','merge','pick','initializeQueues','lodash','jayson/promise','util','client','http','loggedIn','paused','waiting','busy','loggedInDb','notInUse','onHold','ringing','unavailable','unknown','pTalking','originated','message','statusMessage','dialActive','dialMethod','Trunk','startPredictive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime'];(function(_0x5a3d49,_0x24b21a){var _0x4d5c23=function(_0x4f62b0){while(--_0x4f62b0){_0x5a3d49['push'](_0x5a3d49['shift']());}};_0x4d5c23(++_0x24b21a);}(_0x8c5f,0xaa));var _0xf8c5=function(_0x6053e6,_0x5467ed){_0x6053e6=_0x6053e6-0x0;var _0xd0824b=_0x8c5f[_0x6053e6];return _0xd0824b;};'use strict';var _=require(_0xf8c5('0x0'));var jayson=require(_0xf8c5('0x1'));var util=require(_0xf8c5('0x2'));var amiClient=jayson[_0xf8c5('0x3')]['http']({'port':0x232a});var routingClient=jayson['client'][_0xf8c5('0x4')]({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=['available',_0xf8c5('0x5'),_0xf8c5('0x6'),_0xf8c5('0x7')];var VOICE_QUEUE_ATTRIBUTES=[_0xf8c5('0x8'),'inUse','invalid',_0xf8c5('0x9'),_0xf8c5('0xa'),_0xf8c5('0xb'),_0xf8c5('0xc'),'ringInUse','talking',_0xf8c5('0xd'),_0xf8c5('0xe')];var OUTBOUND_QUEUE_ATTRIBUTES=[_0xf8c5('0xf'),_0xf8c5('0x10'),_0xf8c5('0x11'),_0xf8c5('0x12'),_0xf8c5('0x13'),_0xf8c5('0x14'),_0xf8c5('0x15'),_0xf8c5('0x16'),'startProgressive',_0xf8c5('0x17'),_0xf8c5('0x18'),_0xf8c5('0x19'),'erlangBusyFactor',_0xf8c5('0x1a'),_0xf8c5('0x1b'),_0xf8c5('0x1c'),_0xf8c5('0x1d'),'predictiveIntervalTotalCalls',_0xf8c5('0x1e'),_0xf8c5('0x1f'),_0xf8c5('0x20'),_0xf8c5('0x21'),'predictiveIntervalAvgTalktime'];function getRealtimeQueues(_0x16911f,_0x3596c3){var _0x15822c=_0x3596c3==='voice'?amiClient:routingClient;return _0x15822c[_0xf8c5('0x22')](_['startCase'](_0x3596c3)+_0xf8c5('0x23'),_0x16911f)['then'](function(_0x2fdfc4){if(_0x2fdfc4[_0xf8c5('0x24')])throw new Error(util[_0xf8c5('0x25')](_0xf8c5('0x26'),_0x3596c3));return _0x2fdfc4[_0xf8c5('0x27')];})['catch'](function(_0x3f1a75){throw _0x3f1a75;});}exports[_0xf8c5('0x28')]=getRealtimeQueues;function initializeQueues(_0x8805e3,_0x35fcb2,_0x180240,_0x7b294){var _0x404e07=DEFAULT_QUEUE_ATTRIBUTES;if(_0x180240===_0xf8c5('0x29')){if(_0x7b294===_0xf8c5('0x2a')){_0x404e07=_0x404e07[_0xf8c5('0x2b')](VOICE_QUEUE_ATTRIBUTES);}else if(_0x7b294==='outbound'){_0x404e07=_0x404e07[_0xf8c5('0x2b')](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x8805e3[_0xf8c5('0x2c')](function(_0x2a9a7d){var _0x43d9ae=_0x2a9a7d['get']({'plain':!![]});_0x43d9ae[_0xf8c5('0x6')]=0x0;_0x43d9ae[_0xf8c5('0x9')]=0x0;_0x43d9ae['loggedIn']=0x0;_0x43d9ae['available']=0x0;_0x43d9ae['waiting']=0x0;if(_0x180240==='voice'){_0x43d9ae[_0xf8c5('0x2d')]=0x0;_0x43d9ae['busy']=0x0;if(_0x7b294===_0xf8c5('0x2e')){_0x43d9ae['pTalking']=0x0;_0x43d9ae[_0xf8c5('0x10')]=0x0;}}var _0x5bb534=_[_0xf8c5('0x2f')](_0x35fcb2,['id',_0x43d9ae['id']]);if(_0x5bb534){_[_0xf8c5('0x30')](_0x43d9ae,_[_0xf8c5('0x31')](_0x5bb534,_0x404e07));}return _0x43d9ae;});}exports[_0xf8c5('0x32')]=initializeQueues;
\ No newline at end of file
+var _0x9870=['error','format','catch','inbound','concat','get','available','originated','merge','pick','lodash','jayson/promise','util','client','http','loggedIn','paused','waiting','busy','inUse','invalid','loggedInDb','notInUse','onHold','ringing','talking','unavailable','unknown','pTalking','statusMessage','dialActive','dialMethod','Trunk','startPredictive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','voice','Queues','then'];(function(_0x2346c8,_0x49bb5f){var _0x237a1f=function(_0x47958d){while(--_0x47958d){_0x2346c8['push'](_0x2346c8['shift']());}};_0x237a1f(++_0x49bb5f);}(_0x9870,0x94));var _0x0987=function(_0x4264cd,_0x1772f5){_0x4264cd=_0x4264cd-0x0;var _0x1075f8=_0x9870[_0x4264cd];return _0x1075f8;};'use strict';var _=require(_0x0987('0x0'));var jayson=require(_0x0987('0x1'));var util=require(_0x0987('0x2'));var amiClient=jayson[_0x0987('0x3')][_0x0987('0x4')]({'port':0x232a});var routingClient=jayson['client'][_0x0987('0x4')]({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=['available',_0x0987('0x5'),_0x0987('0x6'),_0x0987('0x7')];var VOICE_QUEUE_ATTRIBUTES=[_0x0987('0x8'),_0x0987('0x9'),_0x0987('0xa'),_0x0987('0xb'),_0x0987('0xc'),_0x0987('0xd'),_0x0987('0xe'),'ringInUse',_0x0987('0xf'),_0x0987('0x10'),_0x0987('0x11')];var OUTBOUND_QUEUE_ATTRIBUTES=[_0x0987('0x12'),'originated','message',_0x0987('0x13'),_0x0987('0x14'),_0x0987('0x15'),_0x0987('0x16'),_0x0987('0x17'),'startProgressive',_0x0987('0x18'),_0x0987('0x19'),_0x0987('0x1a'),'erlangBusyFactor',_0x0987('0x1b'),'dialPredictiveIntervalMaxThreshold',_0x0987('0x1c'),_0x0987('0x1d'),'predictiveIntervalTotalCalls',_0x0987('0x1e'),_0x0987('0x1f'),'predictiveIntervalDroppedCallsCallersExit',_0x0987('0x20'),'predictiveIntervalAvgTalktime'];function getRealtimeQueues(_0x1f1a66,_0x48433a){var _0xd8cf83=_0x48433a===_0x0987('0x21')?amiClient:routingClient;return _0xd8cf83['request'](_['startCase'](_0x48433a)+_0x0987('0x22'),_0x1f1a66)[_0x0987('0x23')](function(_0x25262c){if(_0x25262c[_0x0987('0x24')])throw new Error(util[_0x0987('0x25')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x48433a));return _0x25262c['result'];})[_0x0987('0x26')](function(_0x3118ef){throw _0x3118ef;});}exports['getRealtimeQueues']=getRealtimeQueues;function initializeQueues(_0x21445e,_0x5c27b4,_0x36d287,_0x42843f){var _0x42526e=DEFAULT_QUEUE_ATTRIBUTES;if(_0x36d287===_0x0987('0x21')){if(_0x42843f===_0x0987('0x27')){_0x42526e=_0x42526e[_0x0987('0x28')](VOICE_QUEUE_ATTRIBUTES);}else if(_0x42843f==='outbound'){_0x42526e=_0x42526e[_0x0987('0x28')](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x21445e['map'](function(_0x4f741c){var _0x3f3006=_0x4f741c[_0x0987('0x29')]({'plain':!![]});_0x3f3006['paused']=0x0;_0x3f3006[_0x0987('0xb')]=0x0;_0x3f3006['loggedIn']=0x0;_0x3f3006[_0x0987('0x2a')]=0x0;_0x3f3006['waiting']=0x0;if(_0x36d287===_0x0987('0x21')){_0x3f3006[_0x0987('0xf')]=0x0;_0x3f3006[_0x0987('0x8')]=0x0;if(_0x42843f==='outbound'){_0x3f3006[_0x0987('0x12')]=0x0;_0x3f3006[_0x0987('0x2b')]=0x0;}}var _0x2da432=_['find'](_0x5c27b4,['id',_0x3f3006['id']]);if(_0x2da432){_[_0x0987('0x2c')](_0x3f3006,_[_0x0987('0x2d')](_0x2da432,_0x42526e));}return _0x3f3006;});}exports['initializeQueues']=initializeQueues;
\ No newline at end of file
index dc37e1a..10c11b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x708c47,_0x6eaa1f){var _0x52a470=function(_0x14a750){while(--_0x14a750){_0x708c47['push'](_0x708c47['shift']());}};_0x52a470(++_0x6eaa1f);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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
+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(_0x4471c2,_0x531995){var _0x15361c=function(_0x371d9b){while(--_0x371d9b){_0x4471c2['push'](_0x4471c2['shift']());}};_0x15361c(++_0x531995);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
index 180377f..233b270 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f9e=['macAddress','hex','substring','crypto','bimedia-machine-uuid','execSync','../environment','networkInterfaces','orderBy','length','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','cpus','model','join','createHash','md5','update','digest','test','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x9f9e,0x1d4));var _0xe9f9=function(_0x3d34da,_0x3abcc1){_0x3d34da=_0x3d34da-0x0;var _0xcf6af8=_0x9f9e[_0x3d34da];return _0xcf6af8;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0xe9f9('0x0'));var machine=require(_0xe9f9('0x1'));var exec=require('child_process')[_0xe9f9('0x2')];var config=require(_0xe9f9('0x3'));function getInterfaces(){var _0x541afc=[];var _0x28e984=os[_0xe9f9('0x4')]();var _0x344d0a=_[_0xe9f9('0x5')](_['keys'](_0x28e984));for(var _0x2063e2=0x0;_0x2063e2<_0x344d0a[_0xe9f9('0x6')];_0x2063e2++){var _0x47999c=_0x28e984[_0x344d0a[_0x2063e2]][_0xe9f9('0x7')](function(_0x27ac7e){return _0x27ac7e[_0xe9f9('0x8')]===_0xe9f9('0x9')&&_0x27ac7e[_0xe9f9('0xa')]===![];});_0x541afc=_0x541afc[_0xe9f9('0xb')](_0x47999c);}return _0x541afc;}function getFirstInterface(){var _0x158eed=_[_0xe9f9('0xc')](getInterfaces());return{'macAddress':_0x158eed&&_0x158eed[_0xe9f9('0xd')]?_0x158eed[_0xe9f9('0xd')]:_0xe9f9('0xe'),'ipAddress':_0x158eed&&_0x158eed[_0xe9f9('0xf')]?_0x158eed[_0xe9f9('0xf')]:'127.0.0.1'};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x2032a6=_[_0xe9f9('0x5')](os[_0xe9f9('0x10')]()['map'](function(_0x3ea02d){return _0x3ea02d[_0xe9f9('0x11')];}))[_0xe9f9('0x12')](':');return crypto[_0xe9f9('0x13')](_0xe9f9('0x14'))[_0xe9f9('0x15')](_0x2032a6)[_0xe9f9('0x16')]('hex');}exports['getUuid']=function(){var _0x57a9d0=os['platform']();var _0x2cd50f=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x2cd50f[_0xe9f9('0x17')](config['licenseToken'])){return config['licenseToken'];}else if(_0x57a9d0==='win32'){return exec(_0xe9f9('0x18'),{'encoding':_0xe9f9('0x19')})[_0xe9f9('0x1a')]('\x0d\x0a','');}else{var _0x4536b8=getFirstInterface();var _0x2bc8ea=getCPUhash();var _0x7bc655=_0x2bc8ea+'|'+os[_0xe9f9('0x1b')]()+'|'+_0x4536b8[_0xe9f9('0x1c')]+'|'+_0x4536b8['ipAddress'];var _0x1274e5=crypto['createHash'](_0xe9f9('0x14'))['update'](_0x7bc655)[_0xe9f9('0x16')](_0xe9f9('0x1d'));return _0x1274e5['substring'](0x0,0x8)+'-'+_0x1274e5[_0xe9f9('0x1e')](0x8,0xc)+'-'+_0x1274e5['substring'](0xc,0x10)+'-'+_0x1274e5['substring'](0x10,0x14)+'-'+_0x1274e5[_0xe9f9('0x1e')](0x14);}};
\ No newline at end of file
+var _0xe9d6=['update','digest','hex','getUuid','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','hostname','macAddress','ipAddress','substring','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','internal','concat','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','map','model','join','createHash','md5'];(function(_0x493fc9,_0x597cf9){var _0x3a90c3=function(_0x4f9ca2){while(--_0x4f9ca2){_0x493fc9['push'](_0x493fc9['shift']());}};_0x3a90c3(++_0x597cf9);}(_0xe9d6,0x103));var _0x6e9d=function(_0x2d28b1,_0x1f4a94){_0x2d28b1=_0x2d28b1-0x0;var _0x1d9f89=_0xe9d6[_0x2d28b1];return _0x1d9f89;};'use strict';var _=require('lodash');var os=require('os');var crypto=require('crypto');var machine=require(_0x6e9d('0x0'));var exec=require(_0x6e9d('0x1'))[_0x6e9d('0x2')];var config=require(_0x6e9d('0x3'));function getInterfaces(){var _0x14a04d=[];var _0x3b8795=os[_0x6e9d('0x4')]();var _0x3fdfa6=_[_0x6e9d('0x5')](_[_0x6e9d('0x6')](_0x3b8795));for(var _0x2cf948=0x0;_0x2cf948<_0x3fdfa6[_0x6e9d('0x7')];_0x2cf948++){var _0x313cc9=_0x3b8795[_0x3fdfa6[_0x2cf948]][_0x6e9d('0x8')](function(_0x4e2741){return _0x4e2741['family']==='IPv4'&&_0x4e2741[_0x6e9d('0x9')]===![];});_0x14a04d=_0x14a04d[_0x6e9d('0xa')](_0x313cc9);}return _0x14a04d;}function getFirstInterface(){var _0x4574ee=_['head'](getInterfaces());return{'macAddress':_0x4574ee&&_0x4574ee[_0x6e9d('0xb')]?_0x4574ee['mac']:_0x6e9d('0xc'),'ipAddress':_0x4574ee&&_0x4574ee[_0x6e9d('0xd')]?_0x4574ee[_0x6e9d('0xd')]:_0x6e9d('0xe')};}exports[_0x6e9d('0xf')]=getFirstInterface;function getCPUhash(){var _0x4ab2f4=_[_0x6e9d('0x5')](os['cpus']()[_0x6e9d('0x10')](function(_0x3a0636){return _0x3a0636[_0x6e9d('0x11')];}))[_0x6e9d('0x12')](':');return crypto[_0x6e9d('0x13')](_0x6e9d('0x14'))[_0x6e9d('0x15')](_0x4ab2f4)[_0x6e9d('0x16')](_0x6e9d('0x17'));}exports[_0x6e9d('0x18')]=function(){var _0x2d93c4=os[_0x6e9d('0x19')]();var _0x584325=/[0-9a-f-]{36}/;if(config[_0x6e9d('0x1a')]&&_0x584325[_0x6e9d('0x1b')](config[_0x6e9d('0x1a')])){return config[_0x6e9d('0x1a')];}else if(_0x2d93c4===_0x6e9d('0x1c')){return exec(_0x6e9d('0x1d'),{'encoding':_0x6e9d('0x1e')})['replace']('\x0d\x0a','');}else{var _0x218e77=getFirstInterface();var _0x42c409=getCPUhash();var _0x382993=_0x42c409+'|'+os[_0x6e9d('0x1f')]()+'|'+_0x218e77[_0x6e9d('0x20')]+'|'+_0x218e77[_0x6e9d('0x21')];var _0x3e4a87=crypto[_0x6e9d('0x13')](_0x6e9d('0x14'))[_0x6e9d('0x15')](_0x382993)[_0x6e9d('0x16')]('hex');return _0x3e4a87[_0x6e9d('0x22')](0x0,0x8)+'-'+_0x3e4a87['substring'](0x8,0xc)+'-'+_0x3e4a87[_0x6e9d('0x22')](0xc,0x10)+'-'+_0x3e4a87[_0x6e9d('0x22')](0x10,0x14)+'-'+_0x3e4a87['substring'](0x14);}};
\ No newline at end of file
index 6ebbaf1..f554096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe76=['active','license','data2','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','update','info','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','encryptString','YYYY-MM-DD\x20HH:mm','days','DEMO\x20START\x20AT\x20%s','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error','default','moment','request-promise','bluebird','pkginfo','../../components/encryptor','./hardware','../logger','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','version','%s/api/servers/%s/check?version=%s&oldtoken=%s','then','catch','get','data1'];(function(_0x9bc911,_0x41b12a){var _0x1464be=function(_0x3a7b40){while(--_0x3a7b40){_0x9bc911['push'](_0x9bc911['shift']());}};_0x1464be(++_0x41b12a);}(_0xfe76,0x1b2));var _0x6fe7=function(_0x2bcddb,_0x3eaf37){_0x2bcddb=_0x2bcddb-0x0;var _0x12a9e8=_0xfe76[_0x2bcddb];return _0x12a9e8;};'use strict';var util=require('util');var moment=require(_0x6fe7('0x0'));var rp=require(_0x6fe7('0x1'));var BPromise=require(_0x6fe7('0x2'));var pkginfo=require(_0x6fe7('0x3'))(module,'version');var db=require('../../mysqldb')['db'];var encryptor=require(_0x6fe7('0x4'));var hardware=require(_0x6fe7('0x5'));var logger=require(_0x6fe7('0x6'))('license');var HOST=_0x6fe7('0x7');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x4587eb){return new BPromise(function(_0x31a621,_0x1af27e){var _0x1b35ef=util[_0x6fe7('0x8')](_0x6fe7('0x9'),HOST,_0x4587eb,module[_0x6fe7('0xa')][_0x6fe7('0xb')]);if(oldToken){_0x1b35ef=util[_0x6fe7('0x8')](_0x6fe7('0xc'),HOST,_0x4587eb,module[_0x6fe7('0xa')][_0x6fe7('0xb')],oldToken);}var _0x4d0107={'uri':_0x1b35ef,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x4d0107)[_0x6fe7('0xd')](function(_0x153c2f){_0x31a621(_0x153c2f);})[_0x6fe7('0xe')](function(_0x4f945c){_0x1af27e(_0x4f945c);});});}function manageLicense(_0x4b0524,_0x3f3757){var _0x16bf2c=_0x3f3757[_0x6fe7('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x16bf2c[_0x6fe7('0x10')]!==_0x4b0524&&!_0x16bf2c['data2']){oldToken=_0x16bf2c[_0x6fe7('0x10')];}httpRequest(_0x4b0524)[_0x6fe7('0xd')](function(_0x258e7f){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x258e7f[_0x6fe7('0x11')]){isOldTokenSent=![];if(!_0x16bf2c['license']&&_0x16bf2c[_0x6fe7('0x12')]!=_0x258e7f[_0x6fe7('0x12')]||_0x16bf2c[_0x6fe7('0x12')]&&_0x16bf2c[_0x6fe7('0x13')]){logger['info'](_0x6fe7('0x14'));}if(_0x16bf2c[_0x6fe7('0x12')]&&!_0x16bf2c[_0x6fe7('0x13')]&&_0x16bf2c[_0x6fe7('0x12')]!=_0x258e7f[_0x6fe7('0x12')]){logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x16bf2c[_0x6fe7('0x12')]&&!_0x16bf2c[_0x6fe7('0x13')]&&_0x16bf2c[_0x6fe7('0x12')]==_0x258e7f[_0x6fe7('0x12')]){return _0x3f3757;}return _0x3f3757[_0x6fe7('0x15')]({'data1':_0x4b0524,'data2':null,'license':_0x258e7f[_0x6fe7('0x12')]});}else{if(_0x258e7f[_0x6fe7('0x12')]||_0x16bf2c[_0x6fe7('0x12')]){if(!_0x16bf2c['data2']){if(_0x16bf2c[_0x6fe7('0x10')]==_0x4b0524){GRAY_PERIOD_REASON='Disabled';logger[_0x6fe7('0x16')](_0x6fe7('0x17'));}else{GRAY_PERIOD_REASON=_0x6fe7('0x18');logger['info'](_0x6fe7('0x19'),_0x16bf2c['data1'],_0x4b0524);}logger[_0x6fe7('0x16')](_0x6fe7('0x1a'),GRAY_PERIOD_REASON[_0x6fe7('0x1b')](),moment()[_0x6fe7('0x8')]('YYYY-MM-DD\x20HH:mm'));return _0x3f3757[_0x6fe7('0x15')]({'data2':encryptor[_0x6fe7('0x1c')](moment()['format'](_0x6fe7('0x1d')))});}else{if(moment()['diff'](encryptor['decryptString'](_0x16bf2c[_0x6fe7('0x13')]),_0x6fe7('0x1e'))>DAYS){logger['info'](_0x6fe7('0x1f'),moment()[_0x6fe7('0x8')](_0x6fe7('0x1d')));isOldTokenSent=![];return _0x3f3757[_0x6fe7('0x15')]({'data1':_0x4b0524,'data2':null,'license':null});}}}else{if(_0x16bf2c[_0x6fe7('0x10')]!=_0x4b0524){logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x16bf2c[_0x6fe7('0x10')],_0x4b0524);return _0x3f3757[_0x6fe7('0x15')]({'data1':_0x4b0524,'data2':null,'license':null});}}}return _0x3f3757;})['then'](function(_0x28040a){_0x3f3757=_0x28040a;})[_0x6fe7('0xe')](function(_0x239aa1){logger['error'](_0x239aa1[_0x6fe7('0x20')]);})[_0x6fe7('0x21')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x3f3757);},TIME);});}function defaultLicense(){var _0x5d858f=hardware[_0x6fe7('0x22')]();if(_0x5d858f){return db[_0x6fe7('0x23')][_0x6fe7('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x5d858f}})[_0x6fe7('0x25')](function(_0x21d584,_0xc052fd){logger['info'](_0x6fe7('0x26'),_0x5d858f);manageLicense(_0x5d858f,_0x21d584);})[_0x6fe7('0xe')](function(_0x2a0945){logger[_0x6fe7('0x27')](_0x2a0945[_0x6fe7('0x20')]);});}}exports[_0x6fe7('0x28')]=defaultLicense;
\ No newline at end of file
+var _0x3147=['request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','catch','error','message','finally','getUuid','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x3147,0x198));var _0x7314=function(_0x5510df,_0x3a6fad){_0x5510df=_0x5510df-0x0;var _0x5c1998=_0x3147[_0x5510df];return _0x5c1998;};'use strict';var util=require(_0x7314('0x0'));var moment=require(_0x7314('0x1'));var rp=require(_0x7314('0x2'));var BPromise=require(_0x7314('0x3'));var pkginfo=require(_0x7314('0x4'))(module,_0x7314('0x5'));var db=require(_0x7314('0x6'))['db'];var encryptor=require(_0x7314('0x7'));var hardware=require(_0x7314('0x8'));var logger=require(_0x7314('0x9'))(_0x7314('0xa'));var HOST=_0x7314('0xb');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x14fd2b){return new BPromise(function(_0x4b4b0a,_0x25ac10){var _0x2dc59c=util[_0x7314('0xc')](_0x7314('0xd'),HOST,_0x14fd2b,module['exports'][_0x7314('0x5')]);if(oldToken){_0x2dc59c=util[_0x7314('0xc')](_0x7314('0xe'),HOST,_0x14fd2b,module['exports'][_0x7314('0x5')],oldToken);}var _0x2f305f={'uri':_0x2dc59c,'method':_0x7314('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x2f305f)[_0x7314('0x10')](function(_0x1baf76){_0x4b4b0a(_0x1baf76);})['catch'](function(_0x22161f){_0x25ac10(_0x22161f);});});}function manageLicense(_0x3e240d,_0x40f619){var _0xfc8e25=_0x40f619[_0x7314('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0xfc8e25[_0x7314('0x12')]!==_0x3e240d&&!_0xfc8e25[_0x7314('0x13')]){oldToken=_0xfc8e25[_0x7314('0x12')];}httpRequest(_0x3e240d)[_0x7314('0x10')](function(_0x2b6524){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x2b6524[_0x7314('0x14')]){isOldTokenSent=![];if(!_0xfc8e25['license']&&_0xfc8e25[_0x7314('0xa')]!=_0x2b6524['license']||_0xfc8e25['license']&&_0xfc8e25[_0x7314('0x13')]){logger[_0x7314('0x15')](_0x7314('0x16'));}if(_0xfc8e25[_0x7314('0xa')]&&!_0xfc8e25[_0x7314('0x13')]&&_0xfc8e25[_0x7314('0xa')]!=_0x2b6524['license']){logger['info'](_0x7314('0x17'));}if(_0xfc8e25[_0x7314('0xa')]&&!_0xfc8e25[_0x7314('0x13')]&&_0xfc8e25[_0x7314('0xa')]==_0x2b6524[_0x7314('0xa')]){return _0x40f619;}return _0x40f619[_0x7314('0x18')]({'data1':_0x3e240d,'data2':null,'license':_0x2b6524[_0x7314('0xa')]});}else{if(_0x2b6524[_0x7314('0xa')]||_0xfc8e25['license']){if(!_0xfc8e25[_0x7314('0x13')]){if(_0xfc8e25[_0x7314('0x12')]==_0x3e240d){GRAY_PERIOD_REASON='Disabled';logger[_0x7314('0x15')](_0x7314('0x19'));}else{GRAY_PERIOD_REASON=_0x7314('0x1a');logger[_0x7314('0x15')](_0x7314('0x1b'),_0xfc8e25[_0x7314('0x12')],_0x3e240d);}logger['info']('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x7314('0x1c')](),moment()[_0x7314('0xc')](_0x7314('0x1d')));return _0x40f619[_0x7314('0x18')]({'data2':encryptor[_0x7314('0x1e')](moment()[_0x7314('0xc')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x7314('0x1f')](encryptor[_0x7314('0x20')](_0xfc8e25[_0x7314('0x13')]),'days')>DAYS){logger[_0x7314('0x15')]('DEMO\x20START\x20AT\x20%s',moment()[_0x7314('0xc')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x40f619['update']({'data1':_0x3e240d,'data2':null,'license':null});}}}else{if(_0xfc8e25['data1']!=_0x3e240d){logger[_0x7314('0x15')](_0x7314('0x1b'),_0xfc8e25[_0x7314('0x12')],_0x3e240d);return _0x40f619[_0x7314('0x18')]({'data1':_0x3e240d,'data2':null,'license':null});}}}return _0x40f619;})[_0x7314('0x10')](function(_0x30386a){_0x40f619=_0x30386a;})[_0x7314('0x21')](function(_0x3c318a){logger[_0x7314('0x22')](_0x3c318a[_0x7314('0x23')]);})[_0x7314('0x24')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x40f619);},TIME);});}function defaultLicense(){var _0x3ec884=hardware[_0x7314('0x25')]();if(_0x3ec884){return db['License']['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x3ec884}})[_0x7314('0x26')](function(_0x5570fb,_0x5f9dd6){logger[_0x7314('0x15')](_0x7314('0x27'),_0x3ec884);manageLicense(_0x3ec884,_0x5570fb);})[_0x7314('0x21')](function(_0x50b56e){logger['error'](_0x50b56e[_0x7314('0x23')]);});}}exports[_0x7314('0x28')]=defaultLicense;
\ No newline at end of file
index 590b32e..3bd4b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac1e=['lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','License','find','defaults','then','uuid','data1','license','License\x20key\x20value\x20not\x20found','split','format','%s:%s:%s','parse','demo','gray','deadline','add','days','machineUuid','changed','disabled','message','sequelize','COUNT','col','role','count','admin','user','telephone','users','telephones','forEach','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','catch','exports','util'];(function(_0x497967,_0x104711){var _0x2fc6f1=function(_0xc180fb){while(--_0xc180fb){_0x497967['push'](_0x497967['shift']());}};_0x2fc6f1(++_0x104711);}(_0xac1e,0x113));var _0xeac1=function(_0x9e541,_0x11053c){_0x9e541=_0x9e541-0x0;var _0x92caab=_0xac1e[_0x9e541];return _0x92caab;};'use strict';var util=require(_0xeac1('0x0'));var _=require(_0xeac1('0x1'));var moment=require(_0xeac1('0x2'));var BPromise=require(_0xeac1('0x3'));var hardware=require(_0xeac1('0x4'));var encryptor=require(_0xeac1('0x5'));var db=require(_0xeac1('0x6'))['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':_0xeac1('0x7'),'machineUuid':hardware[_0xeac1('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2801be){return new BPromise(function(_0x2c10b6,_0x21acd5){return db[_0xeac1('0x9')][_0xeac1('0xa')](_[_0xeac1('0xb')](_0x2801be,{'raw':!![],'where':{'id':0x1}}))[_0xeac1('0xc')](function(_0x582d05){return checkLicense(_0x582d05,null);})[_0xeac1('0xc')](function(_0x6c5450){_0x2c10b6(_0x6c5450);return;})['catch'](function(_0x25c66d){_0x21acd5(_0x25c66d);});});}function checkLicense(_0x524700,_0x4cf76f){if(!_0x524700){demoLicense[_0xeac1('0xd')]=_0x524700[_0xeac1('0xe')];return demoLicense;}try{var _0x43a730=_0x4cf76f||_0x524700[_0xeac1('0xf')];if(_['isEmpty'](_0x43a730)){throw new Error(_0xeac1('0x10'));}var _0x7b3c5=_0x524700[_0xeac1('0xe')];var _0x413705=_0x524700['data2'];var _0x2df7ff=_0x7b3c5[_0xeac1('0x11')]('-')[0x4];var _0x2d4374=_0x7b3c5[_0xeac1('0x11')]('-')[0x0];var _0x3e8b6e=encryptor['decryptString'](_0x43a730,util[_0xeac1('0x12')](_0xeac1('0x13'),_0x2df7ff,_0x7b3c5,_0x2d4374));var _0x4683f4=JSON[_0xeac1('0x14')](_0x3e8b6e);_0x4683f4[_0xeac1('0x15')]=![];_0x4683f4[_0xeac1('0xd')]=_0x7b3c5;_0x4683f4['machineUuid']=hardware[_0xeac1('0x8')]();if(_0x413705){var _0x404f72=encryptor['decryptString'](_0x413705);_0x4683f4[_0xeac1('0x16')]=_0x404f72;_0x4683f4[_0xeac1('0x17')]=moment(_0x404f72)[_0xeac1('0x18')](0x7,_0xeac1('0x19'))[_0xeac1('0x12')]();_0x4683f4['grayReason']=_0x4683f4[_0xeac1('0xd')]!=_0x4683f4[_0xeac1('0x1a')]?_0xeac1('0x1b'):_0xeac1('0x1c');}return _0x4683f4;}catch(_0x2e0997){breakingLicense[_0xeac1('0xd')]=_0x524700[_0xeac1('0xe')];breakingLicense[_0xeac1('0x1d')]=_0x2e0997[_0xeac1('0x1d')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0xbeadcd,_0x4f4031){getLicense()[_0xeac1('0xc')](function(_0x4109a9){return db['User']['findAll']({'attributes':['role',[db[_0xeac1('0x1e')]['fn'](_0xeac1('0x1f'),db[_0xeac1('0x1e')][_0xeac1('0x20')](_0xeac1('0x21'))),_0xeac1('0x22')]],'group':_0xeac1('0x21'),'where':{'role':{'$or':[_0xeac1('0x23'),_0xeac1('0x24'),_0xeac1('0x25')]}},'raw':!![]})[_0xeac1('0xc')](function(_0x175c40){var _0xedb9b9={'user':_0x4109a9[_0xeac1('0x26')]||0x0,'telephone':_0x4109a9[_0xeac1('0x27')]||0x0};_0x175c40[_0xeac1('0x28')](function(_0x1a0976){var _0xb55080=_0x1a0976[_0xeac1('0x21')]==='admin'?'user':_0x1a0976[_0xeac1('0x21')];_0xedb9b9[_0xb55080]-=_0x1a0976[_0xeac1('0x22')];if(_0xedb9b9[_0xb55080]<0x0)_0xedb9b9[_0xb55080]=0x0;});_0xbeadcd(_0xedb9b9);return;});})['catch'](function(_0x3af788){_0x4f4031(_0x3af788);});});}function checkUserLimits(_0x2dc1b9){return new BPromise(function(_0x27c52b,_0x3c1cb8){getLimits()[_0xeac1('0xc')](function(_0x261ed2){var _0x1a0a1d=_['pick'](_[_0xeac1('0x29')](_0x2dc1b9,_0xeac1('0x21')),[_0xeac1('0x23'),_0xeac1('0x24'),_0xeac1('0x25')]);var _0xcd9a4b=(_0x1a0a1d[_0xeac1('0x23')]||0x0)+(_0x1a0a1d[_0xeac1('0x24')]||0x0);var _0x3aa889=_0x1a0a1d[_0xeac1('0x25')]||0x0;if(_0xcd9a4b>_0x261ed2[_0xeac1('0x24')])return _0x3c1cb8(_0xeac1('0x2a'));if(_0x3aa889>_0x261ed2['telephone'])return _0x3c1cb8(_0xeac1('0x2b'));return _0x27c52b();})[_0xeac1('0x2c')](function(_0x537a18){_0x3c1cb8(_0x537a18);});});}module[_0xeac1('0x2d')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0xfb58=['add','format','grayReason','changed','message','role','COUNT','col','admin','telephone','users','telephones','user','then','countBy','exports','util','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','License','find','defaults','catch','uuid','data1','license','License\x20key\x20value\x20not\x20found','split','decryptString','%s:%s:%s','parse','demo','machineUuid','gray','deadline'];(function(_0x1d08f3,_0x3acdd7){var _0x465c79=function(_0x2486a7){while(--_0x2486a7){_0x1d08f3['push'](_0x1d08f3['shift']());}};_0x465c79(++_0x3acdd7);}(_0xfb58,0x136));var _0x8fb5=function(_0x176496,_0x36ca67){_0x176496=_0x176496-0x0;var _0x281ea0=_0xfb58[_0x176496];return _0x281ea0;};'use strict';var util=require(_0x8fb5('0x0'));var _=require(_0x8fb5('0x1'));var moment=require(_0x8fb5('0x2'));var BPromise=require(_0x8fb5('0x3'));var hardware=require(_0x8fb5('0x4'));var encryptor=require(_0x8fb5('0x5'));var db=require(_0x8fb5('0x6'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x8fb5('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x8fb5('0x8'),'machineUuid':hardware[_0x8fb5('0x9')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x8fb5('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0x8fb5('0x9')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x455d37){return new BPromise(function(_0x5f0180,_0x51e16c){return db[_0x8fb5('0xa')][_0x8fb5('0xb')](_[_0x8fb5('0xc')](_0x455d37,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x406755){return checkLicense(_0x406755,null);})['then'](function(_0x1d39b8){_0x5f0180(_0x1d39b8);return;})[_0x8fb5('0xd')](function(_0x2b6d4a){_0x51e16c(_0x2b6d4a);});});}function checkLicense(_0x1da942,_0x29c048){if(!_0x1da942){demoLicense[_0x8fb5('0xe')]=_0x1da942[_0x8fb5('0xf')];return demoLicense;}try{var _0x2a2340=_0x29c048||_0x1da942[_0x8fb5('0x10')];if(_['isEmpty'](_0x2a2340)){throw new Error(_0x8fb5('0x11'));}var _0x5d8cd4=_0x1da942[_0x8fb5('0xf')];var _0x414110=_0x1da942['data2'];var _0x4e2aad=_0x5d8cd4[_0x8fb5('0x12')]('-')[0x4];var _0x13b0cd=_0x5d8cd4[_0x8fb5('0x12')]('-')[0x0];var _0x34bce6=encryptor[_0x8fb5('0x13')](_0x2a2340,util['format'](_0x8fb5('0x14'),_0x4e2aad,_0x5d8cd4,_0x13b0cd));var _0x51e820=JSON[_0x8fb5('0x15')](_0x34bce6);_0x51e820[_0x8fb5('0x16')]=![];_0x51e820[_0x8fb5('0xe')]=_0x5d8cd4;_0x51e820[_0x8fb5('0x17')]=hardware[_0x8fb5('0x9')]();if(_0x414110){var _0x24a2e1=encryptor['decryptString'](_0x414110);_0x51e820[_0x8fb5('0x18')]=_0x24a2e1;_0x51e820[_0x8fb5('0x19')]=moment(_0x24a2e1)[_0x8fb5('0x1a')](0x7,'days')[_0x8fb5('0x1b')]();_0x51e820[_0x8fb5('0x1c')]=_0x51e820[_0x8fb5('0xe')]!=_0x51e820[_0x8fb5('0x17')]?_0x8fb5('0x1d'):'disabled';}return _0x51e820;}catch(_0x584bbb){breakingLicense[_0x8fb5('0xe')]=_0x1da942['data1'];breakingLicense[_0x8fb5('0x1e')]=_0x584bbb['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x427f7d,_0x5d52be){getLicense()['then'](function(_0x4f35f7){return db['User']['findAll']({'attributes':[_0x8fb5('0x1f'),[db['sequelize']['fn'](_0x8fb5('0x20'),db['sequelize'][_0x8fb5('0x21')]('role')),'count']],'group':_0x8fb5('0x1f'),'where':{'role':{'$or':[_0x8fb5('0x22'),'user',_0x8fb5('0x23')]}},'raw':!![]})['then'](function(_0x211874){var _0x8f8f54={'user':_0x4f35f7[_0x8fb5('0x24')]||0x0,'telephone':_0x4f35f7[_0x8fb5('0x25')]||0x0};_0x211874['forEach'](function(_0x29ef31){var _0x1891a4=_0x29ef31[_0x8fb5('0x1f')]===_0x8fb5('0x22')?_0x8fb5('0x26'):_0x29ef31['role'];_0x8f8f54[_0x1891a4]-=_0x29ef31['count'];if(_0x8f8f54[_0x1891a4]<0x0)_0x8f8f54[_0x1891a4]=0x0;});_0x427f7d(_0x8f8f54);return;});})[_0x8fb5('0xd')](function(_0x20e4a4){_0x5d52be(_0x20e4a4);});});}function checkUserLimits(_0x474013){return new BPromise(function(_0x3248cd,_0x486cfe){getLimits()[_0x8fb5('0x27')](function(_0x461def){var _0x376403=_['pick'](_[_0x8fb5('0x28')](_0x474013,_0x8fb5('0x1f')),['admin',_0x8fb5('0x26'),_0x8fb5('0x23')]);var _0x31de32=(_0x376403[_0x8fb5('0x22')]||0x0)+(_0x376403[_0x8fb5('0x26')]||0x0);var _0x3a9d68=_0x376403[_0x8fb5('0x23')]||0x0;if(_0x31de32>_0x461def[_0x8fb5('0x26')])return _0x486cfe('License\x20limit\x20reached\x20for\x20users');if(_0x3a9d68>_0x461def[_0x8fb5('0x23')])return _0x486cfe('License\x20limit\x20reached\x20for\x20telephones');return _0x3248cd();})[_0x8fb5('0xd')](function(_0x3d4313){_0x486cfe(_0x3d4313);});});}module[_0x8fb5('0x29')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index c18f6d8..0e22624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef3=['secret','exports','myappanuglar-secret'];(function(_0x127f21,_0xc7f762){var _0x270ffb=function(_0xe0f1d){while(--_0xe0f1d){_0x127f21['push'](_0x127f21['shift']());}};_0x270ffb(++_0xc7f762);}(_0xfef3,0x118));var _0x3fef=function(_0x3ccc5f,_0x17ba72){_0x3ccc5f=_0x3ccc5f-0x0;var _0x15de37=_0xfef3[_0x3ccc5f];return _0x15de37;};'use strict';module[_0x3fef('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x3fef('0x1'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0x3fef('0x2'),'DEBUG':''};
\ No newline at end of file
+var _0x2272=['secret','exports','http://localhost:9000','myappanuglar-secret','app-id'];(function(_0x402125,_0x3546a9){var _0x183c8b=function(_0x732136){while(--_0x732136){_0x402125['push'](_0x402125['shift']());}};_0x183c8b(++_0x3546a9);}(_0x2272,0xd8));var _0x2227=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2272[_0x17d9e3];return _0x14192d;};'use strict';module[_0x2227('0x0')]={'DOMAIN':_0x2227('0x1'),'SESSION_SECRET':_0x2227('0x2'),'GOOGLE_ID':_0x2227('0x3'),'GOOGLE_SECRET':_0x2227('0x4'),'DEBUG':''};
\ No newline at end of file
index f6a6966..e27a1be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x118e=['fileLogger','exports','../utils/loggers'];(function(_0x21a08c,_0x5272f2){var _0x2da17a=function(_0x3173d6){while(--_0x3173d6){_0x21a08c['push'](_0x21a08c['shift']());}};_0x2da17a(++_0x5272f2);}(_0x118e,0xe0));var _0xe118=function(_0x3a0ebd,_0x47f368){_0x3a0ebd=_0x3a0ebd-0x0;var _0x51a660=_0x118e[_0x3a0ebd];return _0x51a660;};'use strict';var fileLogger=require(_0xe118('0x0'))[_0xe118('0x1')];module[_0xe118('0x2')]=fileLogger;
\ No newline at end of file
+var _0x054f=['../utils/loggers','fileLogger','exports'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x054f,0x11a));var _0xf054=function(_0x3eef97,_0xd423df){_0x3eef97=_0x3eef97-0x0;var _0x1d41a7=_0x054f[_0x3eef97];return _0x1d41a7;};'use strict';var fileLogger=require(_0xf054('0x0'))[_0xf054('0x1')];module[_0xf054('0x2')]=fileLogger;
\ No newline at end of file
index 60025bf..d49d9ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa9f=['../../services/xdr/index.js','exports','../../config/environment','resolve','join','root','express','../../services/express/index.js','ami','../../services/ami/index.js','agi','../../services/agi/index.js','email','routing','../../services/routing/index.js'];(function(_0x3bca4d,_0x2cd671){var _0x3487db=function(_0x2cb883){while(--_0x2cb883){_0x3bca4d['push'](_0x3bca4d['shift']());}};_0x3487db(++_0x2cd671);}(_0xaa9f,0x16a));var _0xfaa9=function(_0x9307ea,_0x38968a){_0x9307ea=_0x9307ea-0x0;var _0x295554=_0xaa9f[_0x9307ea];return _0x295554;};'use strict';var path=require('path');var cfg=require(_0xfaa9('0x0'));var env={'NODE_PATH':path[_0xfaa9('0x1')](path[_0xfaa9('0x2')](cfg[_0xfaa9('0x3')],'legacy-libs'))};var pm2config={'apps':[{'name':_0xfaa9('0x4'),'script':path[_0xfaa9('0x2')](__dirname,_0xfaa9('0x5')),'env':env},{'name':_0xfaa9('0x6'),'script':path[_0xfaa9('0x2')](__dirname,_0xfaa9('0x7')),'env':env},{'name':_0xfaa9('0x8'),'script':path[_0xfaa9('0x2')](__dirname,_0xfaa9('0x9')),'env':env},{'name':_0xfaa9('0xa'),'script':path[_0xfaa9('0x2')](__dirname,'../../services/email/index.js'),'env':env},{'name':_0xfaa9('0xb'),'script':path[_0xfaa9('0x2')](__dirname,_0xfaa9('0xc')),'env':env},{'name':'xdr','script':path['join'](__dirname,_0xfaa9('0xd')),'env':env}]};module[_0xfaa9('0xe')]=pm2config;
\ No newline at end of file
+var _0x33bf=['resolve','join','legacy-libs','express','../../services/express/index.js','ami','../../services/ami/index.js','agi','email','../../services/email/index.js','routing','xdr','../../services/xdr/index.js'];(function(_0x18f6a1,_0x2a9d48){var _0x494d42=function(_0x11c950){while(--_0x11c950){_0x18f6a1['push'](_0x18f6a1['shift']());}};_0x494d42(++_0x2a9d48);}(_0x33bf,0x11e));var _0xf33b=function(_0x2b9e8a,_0x7b21d4){_0x2b9e8a=_0x2b9e8a-0x0;var _0x520e67=_0x33bf[_0x2b9e8a];return _0x520e67;};'use strict';var path=require('path');var cfg=require('../../config/environment');var env={'NODE_PATH':path[_0xf33b('0x0')](path[_0xf33b('0x1')](cfg['root'],_0xf33b('0x2')))};var pm2config={'apps':[{'name':_0xf33b('0x3'),'script':path[_0xf33b('0x1')](__dirname,_0xf33b('0x4')),'env':env},{'name':_0xf33b('0x5'),'script':path[_0xf33b('0x1')](__dirname,_0xf33b('0x6')),'env':env},{'name':_0xf33b('0x7'),'script':path['join'](__dirname,'../../services/agi/index.js'),'env':env},{'name':_0xf33b('0x8'),'script':path[_0xf33b('0x1')](__dirname,_0xf33b('0x9')),'env':env},{'name':_0xf33b('0xa'),'script':path[_0xf33b('0x1')](__dirname,'../../services/routing/index.js'),'env':env},{'name':_0xf33b('0xb'),'script':path[_0xf33b('0x1')](__dirname,_0xf33b('0xc')),'env':env}]};module['exports']=pm2config;
\ No newline at end of file
index 71be61e..a676916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0c2=['bluebird','./config','connected','start','then','disconnect','stop','restart','list','describe','delete','dump','saved','pm2'];(function(_0x50b30c,_0x559df3){var _0x450521=function(_0x46d094){while(--_0x46d094){_0x50b30c['push'](_0x50b30c['shift']());}};_0x450521(++_0x559df3);}(_0xd0c2,0x7d));var _0x2d0c=function(_0x7f1405,_0x30610b){_0x7f1405=_0x7f1405-0x0;var _0x1093b5=_0xd0c2[_0x7f1405];return _0x1093b5;};'use strict';var pm2=require(_0x2d0c('0x0'));var BPromise=require(_0x2d0c('0x1'));var config=require(_0x2d0c('0x2'));function connect(){return new BPromise(function(_0x11adae,_0x1eb62e){return pm2['connect'](function(_0x1177d9){if(_0x1177d9){return _0x1eb62e(_0x1177d9);}return _0x11adae(_0x2d0c('0x3'));});});};exports[_0x2d0c('0x4')]=function(_0x2f6ec3){return connect()[_0x2d0c('0x5')](function(){return new BPromise(function(_0x452248,_0xc11db4){return pm2[_0x2d0c('0x4')](_0x2f6ec3,function(_0x4cba65,_0x281330){if(_0x4cba65){return _0xc11db4(_0x4cba65);}pm2[_0x2d0c('0x6')]();return _0x452248(_0x281330);});});});};exports[_0x2d0c('0x7')]=function(_0x8b897d){return connect()[_0x2d0c('0x5')](function(){return new BPromise(function(_0x13bff3,_0x1b1ff0){return pm2['stop'](_0x8b897d,function(_0x599cdd,_0x4301f7){if(_0x599cdd){return _0x1b1ff0(_0x599cdd);}pm2[_0x2d0c('0x6')]();return _0x13bff3(_0x4301f7);});});});};exports['restart']=function(_0x461b02){return connect()[_0x2d0c('0x5')](function(){return new BPromise(function(_0x324aef,_0x39dcf8){return pm2[_0x2d0c('0x8')](_0x461b02,function(_0x57d532,_0x4687c){if(_0x57d532){return _0x39dcf8(_0x57d532);}pm2[_0x2d0c('0x6')]();return _0x324aef(_0x4687c);});});});};exports[_0x2d0c('0x9')]=function(){return connect()['then'](function(){return new BPromise(function(_0x565618,_0x2a749c){return pm2['list'](function(_0x858821,_0x90338e){if(_0x858821){return _0x2a749c(_0x858821);}pm2[_0x2d0c('0x6')]();return _0x565618(_0x90338e);});});});};exports[_0x2d0c('0xa')]=function(_0x4924fa){return connect()[_0x2d0c('0x5')](function(){return new BPromise(function(_0x4caa8d,_0x524995){return pm2[_0x2d0c('0xa')](_0x4924fa,function(_0x114b4f,_0x462f64){if(_0x114b4f){return _0x524995(_0x114b4f);}pm2[_0x2d0c('0x6')]();return _0x4caa8d(_0x462f64);});});});};exports[_0x2d0c('0xb')]=function(_0x44a751){return connect()[_0x2d0c('0x5')](function(){return new BPromise(function(_0x25aff7,_0x44e397){return pm2[_0x2d0c('0xb')](_0x44a751,function(_0x53fa8a,_0x2af2c7){if(_0x53fa8a){return _0x44e397(_0x53fa8a);}pm2[_0x2d0c('0x6')]();return _0x25aff7(_0x2af2c7);});});});};exports[_0x2d0c('0xc')]=function(){return connect()['then'](function(){return new BPromise(function(_0x6115d2,_0x27fc08){return pm2[_0x2d0c('0xc')](function(_0x23c44b){if(_0x23c44b){return _0x27fc08(_0x23c44b);}return _0x6115d2(_0x2d0c('0xd'));});});});};
\ No newline at end of file
+var _0xdfec=['connect','connected','then','start','stop','disconnect','restart','list','delete','dump','saved','./config'];(function(_0x216a00,_0x4916b5){var _0x104560=function(_0x2a5faa){while(--_0x2a5faa){_0x216a00['push'](_0x216a00['shift']());}};_0x104560(++_0x4916b5);}(_0xdfec,0xe3));var _0xcdfe=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xdfec[_0x321bb2];return _0x9c12ed;};'use strict';var pm2=require('pm2');var BPromise=require('bluebird');var config=require(_0xcdfe('0x0'));function connect(){return new BPromise(function(_0x4bf59a,_0x5ed864){return pm2[_0xcdfe('0x1')](function(_0x15d6df){if(_0x15d6df){return _0x5ed864(_0x15d6df);}return _0x4bf59a(_0xcdfe('0x2'));});});};exports['start']=function(_0x1c277e){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x15e382,_0x20dda4){return pm2[_0xcdfe('0x4')](_0x1c277e,function(_0x2793ca,_0x570315){if(_0x2793ca){return _0x20dda4(_0x2793ca);}pm2['disconnect']();return _0x15e382(_0x570315);});});});};exports[_0xcdfe('0x5')]=function(_0x5561fb){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x11001b,_0x294975){return pm2[_0xcdfe('0x5')](_0x5561fb,function(_0x3c628f,_0x1f1443){if(_0x3c628f){return _0x294975(_0x3c628f);}pm2[_0xcdfe('0x6')]();return _0x11001b(_0x1f1443);});});});};exports[_0xcdfe('0x7')]=function(_0x3ae00c){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x3eeef0,_0x2c9fa1){return pm2[_0xcdfe('0x7')](_0x3ae00c,function(_0x4f3856,_0x8a9ba6){if(_0x4f3856){return _0x2c9fa1(_0x4f3856);}pm2[_0xcdfe('0x6')]();return _0x3eeef0(_0x8a9ba6);});});});};exports['list']=function(){return connect()['then'](function(){return new BPromise(function(_0x3a3f01,_0x3a201e){return pm2[_0xcdfe('0x8')](function(_0x3eeb53,_0x1a1c5e){if(_0x3eeb53){return _0x3a201e(_0x3eeb53);}pm2[_0xcdfe('0x6')]();return _0x3a3f01(_0x1a1c5e);});});});};exports['describe']=function(_0x3e780b){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x2145fc,_0x5df049){return pm2['describe'](_0x3e780b,function(_0x58b3f2,_0x48ba4e){if(_0x58b3f2){return _0x5df049(_0x58b3f2);}pm2[_0xcdfe('0x6')]();return _0x2145fc(_0x48ba4e);});});});};exports[_0xcdfe('0x9')]=function(_0x2973fa){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x4813b3,_0x2118f0){return pm2[_0xcdfe('0x9')](_0x2973fa,function(_0x16ae40,_0x4e9ade){if(_0x16ae40){return _0x2118f0(_0x16ae40);}pm2[_0xcdfe('0x6')]();return _0x4813b3(_0x4e9ade);});});});};exports['dump']=function(){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x2a7ca1,_0x4ae84a){return pm2[_0xcdfe('0xa')](function(_0x51d38f){if(_0x51d38f){return _0x4ae84a(_0x51d38f);}return _0x2a7ca1(_0xcdfe('0xb'));});});});};
\ No newline at end of file
index 5aac550..53a264c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3537=['defaults','find','then','chatTimeout','lastMsgAt','minutes','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','update','format','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','join','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','util','../../config/environment','schedule','redis'];(function(_0x4dfead,_0x54db03){var _0x5da818=function(_0x217ce3){while(--_0x217ce3){_0x4dfead['push'](_0x4dfead['shift']());}};_0x5da818(++_0x54db03);}(_0x3537,0x1df));var _0x7353=function(_0x3e6729,_0x16d4af){_0x3e6729=_0x3e6729-0x0;var _0x535bcd=_0x3537[_0x3e6729];return _0x535bcd;};'use strict';var _=require(_0x7353('0x0'));var moment=require(_0x7353('0x1'));var Redis=require(_0x7353('0x2'));var util=require(_0x7353('0x3'));var config=require(_0x7353('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0x7353('0x5'));config[_0x7353('0x6')]=_[_0x7353('0x7')](config[_0x7353('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x44af72=0x0;var _0x3e9bc3=[];return db['Setting'][_0x7353('0x8')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0x7353('0x9')](function(_0x425331){_0x44af72=_0x425331[_0x7353('0xa')];if(_0x44af72){return db['ChatInteraction']['findAll']({'raw':!![],'attributes':['id',_0x7353('0xb')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x425331[_0x7353('0xa')],_0x7353('0xc'))}}});}else{return[];}})['then'](function(_0x518b6d){if(_0x518b6d&&_0x518b6d[_0x7353('0xd')]){_0x3e9bc3=_[_0x7353('0xe')](_0x518b6d||[],'id');logger[_0x7353('0xf')](_0x7353('0x10'),_0x3e9bc3['join']());return db['ChatInteraction'][_0x7353('0x11')]({'closeReason':'system','disposition':'timeout','closed':!![],'closedAt':moment()[_0x7353('0x12')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x3e9bc3}});}})[_0x7353('0x9')](function(){if(_0x3e9bc3&&_0x3e9bc3['length']){logger[_0x7353('0xf')](_0x7353('0x13'),_0x3e9bc3[_0x7353('0x14')]());for(var _0x311db1=0x0;_0x311db1<_0x3e9bc3[_0x7353('0xd')];_0x311db1++){io[_0x7353('0x15')](_0x7353('0x16'),{'id':_0x3e9bc3[_0x311db1],'closed':!![]});}}})[_0x7353('0x17')](function(_0x446e8f){logger[_0x7353('0x18')](_0x7353('0x19'),_0x446e8f?util[_0x7353('0x1a')](_0x446e8f,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x4d0c=['lodash','ioredis','util','../../config/environment','schedule','redis','socket.io-emitter','find','chatTimeout','then','ChatInteraction','subtract','length','map','[CHAT]\x20Interactions\x20to\x20close:','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','join','emit','chatInteraction:update','error','inspect','start'];(function(_0x236a40,_0x473b57){var _0x417113=function(_0x1bdd82){while(--_0x1bdd82){_0x236a40['push'](_0x236a40['shift']());}};_0x417113(++_0x473b57);}(_0x4d0c,0x104));var _0xc4d0=function(_0x31b63a,_0x5aadd1){_0x31b63a=_0x31b63a-0x0;var _0x5892ea=_0x4d0c[_0x31b63a];return _0x5892ea;};'use strict';var _=require(_0xc4d0('0x0'));var moment=require('moment');var Redis=require(_0xc4d0('0x1'));var util=require(_0xc4d0('0x2'));var config=require(_0xc4d0('0x3'));var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0xc4d0('0x4'));config[_0xc4d0('0x5')]=_['defaults'](config[_0xc4d0('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xc4d0('0x6'))(new Redis(config[_0xc4d0('0x5')]));function closeInteractions(){var _0x3c00b4=0x0;var _0x3350e6=[];return db['Setting'][_0xc4d0('0x7')]({'raw':!![],'attributes':['id',_0xc4d0('0x8')],'where':{'id':0x1}})[_0xc4d0('0x9')](function(_0x17b3e2){_0x3c00b4=_0x17b3e2[_0xc4d0('0x8')];if(_0x3c00b4){return db[_0xc4d0('0xa')]['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xc4d0('0xb')](_0x17b3e2[_0xc4d0('0x8')],'minutes')}}});}else{return[];}})[_0xc4d0('0x9')](function(_0x517ae2){if(_0x517ae2&&_0x517ae2[_0xc4d0('0xc')]){_0x3350e6=_[_0xc4d0('0xd')](_0x517ae2||[],'id');logger['info'](_0xc4d0('0xe'),_0x3350e6['join']());return db[_0xc4d0('0xa')][_0xc4d0('0xf')]({'closeReason':_0xc4d0('0x10'),'disposition':_0xc4d0('0x11'),'closed':!![],'closedAt':moment()[_0xc4d0('0x12')](_0xc4d0('0x13'))},{'where':{'id':_0x3350e6}});}})['then'](function(){if(_0x3350e6&&_0x3350e6[_0xc4d0('0xc')]){logger['info']('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x3350e6[_0xc4d0('0x14')]());for(var _0x379537=0x0;_0x379537<_0x3350e6['length'];_0x379537++){io[_0xc4d0('0x15')](_0xc4d0('0x16'),{'id':_0x3350e6[_0x379537],'closed':!![]});}}})['catch'](function(_0x581497){logger[_0xc4d0('0x17')]('[CHAT]\x20Error\x20closing\x20interactions',_0x581497?util[_0xc4d0('0x18')](_0x581497,{'showHidden':![],'depth':null}):'');});}exports[_0xc4d0('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 47b22b3..f719c0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd737=['../../api/cloudProvider/cloudProvider.oauth.js','exports'];(function(_0x160eb5,_0x191ca9){var _0x33d9f5=function(_0x349d40){while(--_0x349d40){_0x160eb5['push'](_0x160eb5['shift']());}};_0x33d9f5(++_0x191ca9);}(_0xd737,0x144));var _0x7d73=function(_0xe6f4ef,_0x4e34cc){_0xe6f4ef=_0xe6f4ef-0x0;var _0x4f3447=_0xd737[_0xe6f4ef];return _0x4f3447;};'use strict';function start(){var _0x5957e0=require(_0x7d73('0x0'));return _0x5957e0['startAllRefreshIntervals']();}module[_0x7d73('0x1')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0x2594=['exports','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x5994bc,_0x1b5111){var _0x49f3b1=function(_0x4d4b0d){while(--_0x4d4b0d){_0x5994bc['push'](_0x5994bc['shift']());}};_0x49f3b1(++_0x1b5111);}(_0x2594,0x9f));var _0x4259=function(_0x4c3864,_0x3a9325){_0x4c3864=_0x4c3864-0x0;var _0x270321=_0x2594[_0x4c3864];return _0x270321;};'use strict';function start(){var _0x539cc0=require(_0x4259('0x0'));return _0x539cc0['startAllRefreshIntervals']();}module[_0x4259('0x1')]={'intervals':{},'start':start};
\ No newline at end of file
index a882c5f..83269b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6005=['MailAccount','getSmtpOptions','format','name','Smtp','user','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','Sent','attachments','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','status','sendIfEmpty','request','SendMail','then','error','catch','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','no\x20report\x20id','findAll','MailServerOut','CloudProvider','keys','jobs','map','toString','keyBy','difference','length','stop','delete\x20cron','toRun','index','my\x20id','run\x20job','cron','active','startAt','endAt','add','start','exists','isBetween','update\x20cron','deleteJob','stop\x20cron','run','path','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email'];(function(_0x132d12,_0x2c9799){var _0x1c3163=function(_0x7d9136){while(--_0x7d9136){_0x132d12['push'](_0x132d12['shift']());}};_0x1c3163(++_0x2c9799);}(_0x6005,0xee));var _0x5600=function(_0x281f90,_0x1b6082){_0x281f90=_0x281f90-0x0;var _0x1fc23c=_0x6005[_0x281f90];return _0x1fc23c;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x5600('0x0'));var _=require('lodash');var moment=require('moment');var CronJobManager=require('cron-job-manager');var jayson=require(_0x5600('0x1'));var BPromise=require(_0x5600('0x2'));var logger=require(_0x5600('0x3'))(_0x5600('0x4'));var db=require(_0x5600('0x5'))['db'];var analyticCustomReportController=require(_0x5600('0x6'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson['client'][_0x5600('0x7')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x23f92f,_0x1a4518){return function(){logger[_0x5600('0x8')](_0x5600('0x9'),_0x23f92f[_0x5600('0xa')]);var _0x4caed3=!![];var _0x275586=_0x23f92f[_0x5600('0xb')][_0x5600('0xc')]();var _0x538a2a={'account':_0x275586,'message':{'from':util[_0x5600('0xd')]('\x22%s\x22\x20<%s>',_0x23f92f[_0x5600('0xb')][_0x5600('0xe')],_0x23f92f['MailAccount'][_0x5600('0xa')]||_0x23f92f[_0x5600('0xb')][_0x5600('0xf')][_0x5600('0x10')]),'to':_0x23f92f[_0x5600('0xa')],'cc':_0x23f92f['cc'],'bcc':_0x23f92f['bcc'],'subject':util[_0x5600('0xd')](_0x5600('0x11'),_0x1a4518[_0x5600('0xe')],_0x23f92f[_0x5600('0x12')],_0x23f92f[_0x5600('0x13')])}};var _0x4e2164=path[_0x5600('0x14')](__dirname,_0x5600('0x15'));var _0x23adbf=_0x1a4518[_0x5600('0x16')];var _0x2f8640=util['format'](_0x5600('0x17'),path[_0x5600('0x18')](_0x1a4518[_0x5600('0x16')],path[_0x5600('0x19')](_0x1a4518[_0x5600('0x16')])),_0x5600('0x1a'));var _0x425502=path[_0x5600('0x14')](_0x4e2164,_0x23adbf);var _0x48cca0=path[_0x5600('0x14')](_0x4e2164,_0x2f8640);if(fs[_0x5600('0x1b')](_0x425502)){_0x1a4518['status']=_0x5600('0x1c');_0x538a2a['message'][_0x5600('0x1d')]=[{'filename':_0x23adbf,'path':_0x425502}];_0x538a2a[_0x5600('0x1e')][_0x5600('0x1f')]=util[_0x5600('0xd')](_0x5600('0x20'),JSON[_0x5600('0x21')](_0x1a4518,null,0x2));}else if(fs[_0x5600('0x1b')](_0x48cca0)){_0x1a4518[_0x5600('0x22')]='Sent';_0x538a2a['message'][_0x5600('0x1d')]=[{'filename':_0x2f8640,'path':_0x48cca0}];}else{_0x538a2a[_0x5600('0x1e')]['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x23f92f[_0x5600('0x23')]){_0x4caed3=![];logger[_0x5600('0x8')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x4caed3){return client[_0x5600('0x24')](_0x5600('0x25'),_0x538a2a)[_0x5600('0x26')](function(_0x53fca7){if(_0x53fca7[_0x5600('0x27')]){return logger[_0x5600('0x27')]('error\x20mail',JSON[_0x5600('0x21')](_0x53fca7));}return logger[_0x5600('0x8')]('email\x20sent');})[_0x5600('0x28')](function(_0x475f00){return logger[_0x5600('0x27')](_0x5600('0x29'),JSON[_0x5600('0x21')](_0x475f00));});}};}function handleError(){return function(_0x400ba5){return logger[_0x5600('0x27')](JSON['stringify'](_0x400ba5));};}function handleResult(_0x4467d6){return function(_0xccb6a1){logger[_0x5600('0x8')](_0x5600('0x2a'),JSON[_0x5600('0x21')](_0xccb6a1));if(_0x4467d6[_0x5600('0xb')]&&_0x4467d6['MailAccount'][_0x5600('0xf')]&&!_['isNil'](_0x4467d6[_0x5600('0xa')])){setTimeout(handleSendEmail(_0x4467d6,_0xccb6a1),0x3c*0x3e8);}};}function handleJob(_0x30185b){return function(){try{if(_[_0x5600('0x2b')](_0x30185b[_0x5600('0x12')])){return logger[_0x5600('0x8')](_0x5600('0x2c'));}if(_[_0x5600('0x2b')](_0x30185b[_0x5600('0x13')])){return logger[_0x5600('0x8')](_0x5600('0x2d'));}var _0x39977b={'startDate':moment()[_0x5600('0x2e')](_0x30185b[_0x5600('0x12')],_0x30185b[_0x5600('0x13')])[_0x5600('0xd')](_0x5600('0x2f')),'endDate':moment()[_0x5600('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x5600('0x30'),'output':_0x30185b[_0x5600('0x31')],'name':_0x30185b[_0x5600('0xe')]};if(!_[_0x5600('0x2b')](_0x30185b[_0x5600('0x32')])){logger[_0x5600('0x8')](_0x5600('0x33'),_0x30185b[_0x5600('0x32')]);return analyticDefaultReportController[_0x5600('0x34')]({'id':_0x30185b[_0x5600('0x32')]},_0x39977b)['then'](handleResult(_0x30185b))[_0x5600('0x28')](handleError());}if(!_[_0x5600('0x2b')](_0x30185b[_0x5600('0x35')])){logger['info']('exec\x20custom\x20report\x20id:%s',_0x30185b[_0x5600('0x35')]);return analyticCustomReportController[_0x5600('0x34')]({'id':_0x30185b[_0x5600('0x35')]},_0x39977b)[_0x5600('0x26')](handleResult(_0x30185b))['catch'](handleError());}}catch(_0x515b37){logger[_0x5600('0x27')](JSON[_0x5600('0x21')](_0x515b37));}return logger[_0x5600('0x8')](_0x5600('0x36'));};}function getJobs(_0x2aa2e7){var _0x3f87dd={};if(_0x2aa2e7){_0x3f87dd['id']=_0x2aa2e7;}return db['Schedule'][_0x5600('0x37')]({'where':_0x3f87dd,'include':[{'model':db['MailAccount'],'attributes':['id',_0x5600('0xe'),'email'],'include':[{'model':db[_0x5600('0x38')],'as':_0x5600('0xf'),'include':[{'model':db['CloudProvider'],'as':_0x5600('0x39')}]}]}]})[_0x5600('0x26')](function(_0x303cd8){var _0x240ed7=_[_0x5600('0x3a')](manager[_0x5600('0x3b')]);var _0x38e7de=_[_0x5600('0x3c')](_0x303cd8,function(_0x130797){return _0x130797['id'][_0x5600('0x3d')]();});var _0x309c17=_[_0x5600('0x3e')](_0x303cd8,function(_0x2499e1){return _0x2499e1['id'][_0x5600('0x3d')]();});var _0x3bf855=_0x2aa2e7?_0x38e7de:_['difference'](_0x38e7de,_0x240ed7);var _0x1128e0=_['intersection'](_0x38e7de,_0x240ed7);var _0x440dc8=_[_0x5600('0x3f')](_0x240ed7,_0x38e7de);var _0x4c862a;var _0x55c526;for(_0x4c862a=0x0;_0x4c862a<_0x440dc8[_0x5600('0x40')]&&!_0x2aa2e7;_0x4c862a+=0x1){_0x55c526=_0x440dc8[_0x4c862a][_0x5600('0x3d')]();if(manager['exists'](_0x55c526)){manager[_0x5600('0x41')](_0x55c526);manager['deleteJob'](_0x55c526);logger[_0x5600('0x8')](_0x5600('0x42'),_0x55c526);}}logger[_0x5600('0x8')](_0x5600('0x43'),JSON[_0x5600('0x21')](_0x3bf855));for(_0x4c862a=0x0;_0x4c862a<_0x3bf855['length'];_0x4c862a+=0x1){_0x55c526=_0x3bf855[_0x4c862a]['toString']();logger[_0x5600('0x8')](_0x5600('0x44'),_0x55c526);if(_0x2aa2e7){logger['info'](_0x5600('0x45'),_0x2aa2e7);logger[_0x5600('0x8')](JSON['stringify'](_0x309c17[_0x55c526]));BPromise['resolve']()[_0x5600('0x26')](handleJob(_0x309c17[_0x55c526]));logger[_0x5600('0x8')](_0x5600('0x46'),_0x309c17[_0x55c526][_0x5600('0xe')],_0x309c17[_0x55c526][_0x5600('0x47')]);}else if(_0x309c17[_0x55c526][_0x5600('0x47')]&&_0x309c17[_0x55c526][_0x5600('0x48')]&&moment()['isBetween'](_0x309c17[_0x55c526][_0x5600('0x49')],_0x309c17[_0x55c526][_0x5600('0x4a')])){manager[_0x5600('0x4b')](_0x55c526,_0x309c17[_0x55c526][_0x5600('0x47')],handleJob(_0x309c17[_0x55c526]));manager[_0x5600('0x4c')](_0x55c526);logger[_0x5600('0x8')]('add\x20cron',_0x309c17[_0x55c526][_0x5600('0xe')],_0x309c17[_0x55c526]['cron']);}else if(manager[_0x5600('0x4d')](_0x55c526)){manager['stop'](_0x55c526);manager['deleteJob'](_0x55c526);logger[_0x5600('0x8')]('stop\x20cron',_0x309c17[_0x55c526]['name'],_0x309c17[_0x55c526][_0x5600('0x47')]);}}for(_0x4c862a=0x0,_0x55c526;_0x4c862a<_0x1128e0[_0x5600('0x40')]&&!_0x2aa2e7;_0x4c862a+=0x1){_0x55c526=_0x1128e0[_0x4c862a][_0x5600('0x3d')]();if(manager[_0x5600('0x4d')](_0x55c526)){if(_0x309c17[_0x55c526][_0x5600('0x47')]&&_0x309c17[_0x55c526][_0x5600('0x48')]&&moment()[_0x5600('0x4e')](_0x309c17[_0x55c526][_0x5600('0x49')],_0x309c17[_0x55c526]['endAt'])){manager['update'](_0x55c526,_0x309c17[_0x55c526][_0x5600('0x47')],handleJob(_0x309c17[_0x55c526]));logger[_0x5600('0x8')](_0x5600('0x4f'),_0x309c17[_0x55c526][_0x5600('0xe')],_0x309c17[_0x55c526][_0x5600('0x47')]);}else{manager[_0x5600('0x41')](_0x55c526);manager[_0x5600('0x50')](_0x55c526);logger['info'](_0x5600('0x51'),_0x309c17[_0x55c526][_0x5600('0xe')],_0x309c17[_0x55c526]['cron']);}}}})[_0x5600('0x28')](function(_0x3c71c6){logger[_0x5600('0x27')](JSON['stringify'](_0x3c71c6));});}exports[_0x5600('0x52')]=function(_0x4510fe){return getJobs(_0x4510fe);};exports[_0x5600('0x4c')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x748b=['stringify','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','catch','data','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','subtractUnit','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','CloudProvider','keys','jobs','map','keyBy','toString','intersection','length','exists','stop','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','add\x20cron','deleteJob','stop\x20cron','update','update\x20cron','run','start','util','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','info','email','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','Smtp','user','bcc','format','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','join','../../files/reports','savename','basename','extname','zip','existsSync','status','Sent','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a'];(function(_0x504e0a,_0x119280){var _0x1e9ed4=function(_0xd915b1){while(--_0xd915b1){_0x504e0a['push'](_0x504e0a['shift']());}};_0x1e9ed4(++_0x119280);}(_0x748b,0x18f));var _0xb748=function(_0xcf99a0,_0x26561a){_0xcf99a0=_0xcf99a0-0x0;var _0xe51196=_0x748b[_0xcf99a0];return _0xe51196;};'use strict';var fs=require('fs');var util=require(_0xb748('0x0'));var path=require('path');var _=require(_0xb748('0x1'));var moment=require(_0xb748('0x2'));var CronJobManager=require(_0xb748('0x3'));var jayson=require(_0xb748('0x4'));var BPromise=require(_0xb748('0x5'));var logger=require(_0xb748('0x6'))(_0xb748('0x7'));var db=require(_0xb748('0x8'))['db'];var analyticCustomReportController=require(_0xb748('0x9'));var analyticDefaultReportController=require(_0xb748('0xa'));var client=jayson['client']['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x31c5f8,_0x4de301){return function(){logger[_0xb748('0xb')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x31c5f8[_0xb748('0xc')]);var _0x515573=!![];var _0x4a6aa3=_0x31c5f8[_0xb748('0xd')][_0xb748('0xe')]();var _0x3438ba={'account':_0x4a6aa3,'message':{'from':util['format'](_0xb748('0xf'),_0x31c5f8[_0xb748('0xd')]['name'],_0x31c5f8[_0xb748('0xd')][_0xb748('0xc')]||_0x31c5f8[_0xb748('0xd')][_0xb748('0x10')][_0xb748('0x11')]),'to':_0x31c5f8[_0xb748('0xc')],'cc':_0x31c5f8['cc'],'bcc':_0x31c5f8[_0xb748('0x12')],'subject':util[_0xb748('0x13')](_0xb748('0x14'),_0x4de301[_0xb748('0x15')],_0x31c5f8[_0xb748('0x16')],_0x31c5f8['subtractUnit'])}};var _0x3a2395=path[_0xb748('0x17')](__dirname,_0xb748('0x18'));var _0x1e5d40=_0x4de301[_0xb748('0x19')];var _0x5eb3de=util['format']('%s.%s',path[_0xb748('0x1a')](_0x4de301[_0xb748('0x19')],path[_0xb748('0x1b')](_0x4de301[_0xb748('0x19')])),_0xb748('0x1c'));var _0xde90d6=path[_0xb748('0x17')](_0x3a2395,_0x1e5d40);var _0x204dc6=path[_0xb748('0x17')](_0x3a2395,_0x5eb3de);if(fs[_0xb748('0x1d')](_0xde90d6)){_0x4de301[_0xb748('0x1e')]=_0xb748('0x1f');_0x3438ba[_0xb748('0x20')][_0xb748('0x21')]=[{'filename':_0x1e5d40,'path':_0xde90d6}];_0x3438ba[_0xb748('0x20')][_0xb748('0x22')]=util[_0xb748('0x13')](_0xb748('0x23'),JSON[_0xb748('0x24')](_0x4de301,null,0x2));}else if(fs[_0xb748('0x1d')](_0x204dc6)){_0x4de301[_0xb748('0x1e')]='Sent';_0x3438ba[_0xb748('0x20')][_0xb748('0x21')]=[{'filename':_0x5eb3de,'path':_0x204dc6}];}else{_0x3438ba[_0xb748('0x20')]['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x31c5f8[_0xb748('0x25')]){_0x515573=![];logger[_0xb748('0xb')](_0xb748('0x26'));}}if(_0x515573){return client[_0xb748('0x27')](_0xb748('0x28'),_0x3438ba)[_0xb748('0x29')](function(_0x1bf924){if(_0x1bf924[_0xb748('0x2a')]){return logger[_0xb748('0x2a')](_0xb748('0x2b'),JSON[_0xb748('0x24')](_0x1bf924));}return logger['info'](_0xb748('0x2c'));})[_0xb748('0x2d')](function(_0x524445){return logger[_0xb748('0x2a')](_0xb748('0x2b'),JSON[_0xb748('0x24')](_0x524445));});}};}function handleError(){return function(_0xb5f224){return logger[_0xb748('0x2a')](JSON['stringify'](_0xb5f224));};}function handleResult(_0x9d84ad){return function(_0x1c461f){logger['info'](_0xb748('0x2e'),JSON[_0xb748('0x24')](_0x1c461f));if(_0x9d84ad[_0xb748('0xd')]&&_0x9d84ad[_0xb748('0xd')]['Smtp']&&!_['isNil'](_0x9d84ad[_0xb748('0xc')])){setTimeout(handleSendEmail(_0x9d84ad,_0x1c461f),0x3c*0x3e8);}};}function handleJob(_0x23b5ce){return function(){try{if(_[_0xb748('0x2f')](_0x23b5ce['subtractNumber'])){return logger[_0xb748('0xb')]('subtractNumber\x20null\x20or\x20undefined');}if(_['isNil'](_0x23b5ce['subtractUnit'])){return logger[_0xb748('0xb')](_0xb748('0x30'));}var _0x17c3c0={'startDate':moment()[_0xb748('0x31')](_0x23b5ce[_0xb748('0x16')],_0x23b5ce[_0xb748('0x32')])[_0xb748('0x13')](_0xb748('0x33')),'endDate':moment()['format'](_0xb748('0x33')),'type':_0xb748('0x34'),'output':_0x23b5ce[_0xb748('0x35')],'name':_0x23b5ce[_0xb748('0x15')]};if(!_[_0xb748('0x2f')](_0x23b5ce[_0xb748('0x36')])){logger[_0xb748('0xb')](_0xb748('0x37'),_0x23b5ce[_0xb748('0x36')]);return analyticDefaultReportController[_0xb748('0x38')]({'id':_0x23b5ce[_0xb748('0x36')]},_0x17c3c0)['then'](handleResult(_0x23b5ce))[_0xb748('0x2d')](handleError());}if(!_[_0xb748('0x2f')](_0x23b5ce[_0xb748('0x39')])){logger[_0xb748('0xb')](_0xb748('0x3a'),_0x23b5ce['CustomReportId']);return analyticCustomReportController[_0xb748('0x38')]({'id':_0x23b5ce[_0xb748('0x39')]},_0x17c3c0)[_0xb748('0x29')](handleResult(_0x23b5ce))[_0xb748('0x2d')](handleError());}}catch(_0x510ea4){logger['error'](JSON[_0xb748('0x24')](_0x510ea4));}return logger[_0xb748('0xb')](_0xb748('0x3b'));};}function getJobs(_0x145146){var _0x57f62f={};if(_0x145146){_0x57f62f['id']=_0x145146;}return db[_0xb748('0x3c')][_0xb748('0x3d')]({'where':_0x57f62f,'include':[{'model':db[_0xb748('0xd')],'attributes':['id',_0xb748('0x15'),_0xb748('0xc')],'include':[{'model':db['MailServerOut'],'as':_0xb748('0x10'),'include':[{'model':db[_0xb748('0x3e')],'as':_0xb748('0x3e')}]}]}]})['then'](function(_0x1b702d){var _0x538d7b=_[_0xb748('0x3f')](manager[_0xb748('0x40')]);var _0x20b42e=_[_0xb748('0x41')](_0x1b702d,function(_0x223186){return _0x223186['id']['toString']();});var _0x2df54c=_[_0xb748('0x42')](_0x1b702d,function(_0x1936f9){return _0x1936f9['id'][_0xb748('0x43')]();});var _0x5bc9fe=_0x145146?_0x20b42e:_['difference'](_0x20b42e,_0x538d7b);var _0x11bea8=_[_0xb748('0x44')](_0x20b42e,_0x538d7b);var _0x4adff4=_['difference'](_0x538d7b,_0x20b42e);var _0x4f839b;var _0xfdaed3;for(_0x4f839b=0x0;_0x4f839b<_0x4adff4[_0xb748('0x45')]&&!_0x145146;_0x4f839b+=0x1){_0xfdaed3=_0x4adff4[_0x4f839b]['toString']();if(manager[_0xb748('0x46')](_0xfdaed3)){manager[_0xb748('0x47')](_0xfdaed3);manager['deleteJob'](_0xfdaed3);logger[_0xb748('0xb')]('delete\x20cron',_0xfdaed3);}}logger['info']('toRun',JSON['stringify'](_0x5bc9fe));for(_0x4f839b=0x0;_0x4f839b<_0x5bc9fe['length'];_0x4f839b+=0x1){_0xfdaed3=_0x5bc9fe[_0x4f839b][_0xb748('0x43')]();logger[_0xb748('0xb')]('index',_0xfdaed3);if(_0x145146){logger['info']('my\x20id',_0x145146);logger[_0xb748('0xb')](JSON['stringify'](_0x2df54c[_0xfdaed3]));BPromise[_0xb748('0x48')]()[_0xb748('0x29')](handleJob(_0x2df54c[_0xfdaed3]));logger['info'](_0xb748('0x49'),_0x2df54c[_0xfdaed3]['name'],_0x2df54c[_0xfdaed3][_0xb748('0x4a')]);}else if(_0x2df54c[_0xfdaed3]['cron']&&_0x2df54c[_0xfdaed3][_0xb748('0x4b')]&&moment()[_0xb748('0x4c')](_0x2df54c[_0xfdaed3][_0xb748('0x4d')],_0x2df54c[_0xfdaed3][_0xb748('0x4e')])){manager[_0xb748('0x4f')](_0xfdaed3,_0x2df54c[_0xfdaed3][_0xb748('0x4a')],handleJob(_0x2df54c[_0xfdaed3]));manager['start'](_0xfdaed3);logger['info'](_0xb748('0x50'),_0x2df54c[_0xfdaed3]['name'],_0x2df54c[_0xfdaed3][_0xb748('0x4a')]);}else if(manager[_0xb748('0x46')](_0xfdaed3)){manager[_0xb748('0x47')](_0xfdaed3);manager[_0xb748('0x51')](_0xfdaed3);logger[_0xb748('0xb')](_0xb748('0x52'),_0x2df54c[_0xfdaed3][_0xb748('0x15')],_0x2df54c[_0xfdaed3][_0xb748('0x4a')]);}}for(_0x4f839b=0x0,_0xfdaed3;_0x4f839b<_0x11bea8[_0xb748('0x45')]&&!_0x145146;_0x4f839b+=0x1){_0xfdaed3=_0x11bea8[_0x4f839b][_0xb748('0x43')]();if(manager[_0xb748('0x46')](_0xfdaed3)){if(_0x2df54c[_0xfdaed3]['cron']&&_0x2df54c[_0xfdaed3][_0xb748('0x4b')]&&moment()['isBetween'](_0x2df54c[_0xfdaed3][_0xb748('0x4d')],_0x2df54c[_0xfdaed3][_0xb748('0x4e')])){manager[_0xb748('0x53')](_0xfdaed3,_0x2df54c[_0xfdaed3][_0xb748('0x4a')],handleJob(_0x2df54c[_0xfdaed3]));logger['info'](_0xb748('0x54'),_0x2df54c[_0xfdaed3][_0xb748('0x15')],_0x2df54c[_0xfdaed3]['cron']);}else{manager[_0xb748('0x47')](_0xfdaed3);manager[_0xb748('0x51')](_0xfdaed3);logger[_0xb748('0xb')](_0xb748('0x52'),_0x2df54c[_0xfdaed3][_0xb748('0x15')],_0x2df54c[_0xfdaed3][_0xb748('0x4a')]);}}}})[_0xb748('0x2d')](function(_0x17a831){logger['error'](JSON['stringify'](_0x17a831));});}exports[_0xb748('0x55')]=function(_0x1bfa75){return getJobs(_0x1bfa75);};exports[_0xb748('0x56')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 42a1055..3cf6f88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e0d=['Sentiment\x20Analysis\x20not\x20requested','sentiment','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Negative','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment','Positive','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','push','start','lodash','aws-sdk','request-promise','util','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','substring','format','transcribeName','data1','data2','transcribeRegion','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','COMPLETED','Transcript','info','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','then','results','length','transcripts','transcript','update','tempSentiment','Sequelize','ValidationError'];(function(_0x1a8ff0,_0x20788d){var _0x3588bf=function(_0x3b5499){while(--_0x3b5499){_0x1a8ff0['push'](_0x1a8ff0['shift']());}};_0x3588bf(++_0x20788d);}(_0x9e0d,0xf7));var _0xd9e0=function(_0x4961d6,_0x597061){_0x4961d6=_0x4961d6-0x0;var _0x56409e=_0x9e0d[_0x4961d6];return _0x56409e;};var _=require(_0xd9e0('0x0'));var AWS=require(_0xd9e0('0x1'));var rp=require(_0xd9e0('0x2'));var util=require(_0xd9e0('0x3'));var BPromise=require('bluebird');var db=require(_0xd9e0('0x4'))['db'];var logger=require(_0xd9e0('0x5'))(_0xd9e0('0x6'));function getTranscriptionJob(_0x1c83df,_0x296774,_0x36a691,_0x4d2247){return new Promise(function(_0x570a07,_0x22e726){var _0x28ce1e=new AWS[(_0xd9e0('0x7'))]({'accessKeyId':_0x296774,'secretAccessKey':_0x1c83df,'region':_0x36a691});_0x28ce1e[_0xd9e0('0x8')]({'TranscriptionJobName':_0x4d2247},function(_0x256df0,_0x3315d8){if(_0x256df0){return _0x22e726(_0x256df0);}else{return _0x570a07(_0x3315d8);}});});}function sentiment(_0x5747eb,_0x312d21,_0x36e6e7,_0x57763b,_0x5bd6ad){return new Promise(function(_0x1fc11b,_0x912d1e){var _0x28f8be=new AWS['Comprehend']({'accessKeyId':_0x312d21,'secretAccessKey':_0x5747eb,'region':_0x36e6e7});_0x28f8be[_0xd9e0('0x9')]({'Text':_0x57763b,'LanguageCode':_0x5bd6ad[_0xd9e0('0xa')](0x0,0x2)},function(_0x4b8f8d,_0x7dfd11){if(_0x4b8f8d){return _0x912d1e(_0x4b8f8d);}else{return _0x1fc11b(_0x7dfd11);}});});}function checkTranscribeJob(_0x2b0528,_0x418d84,_0x1fb454){var _0x18fdf2;return new BPromise(function(_0x555652,_0x3ab6e2){logger['info'](util[_0xd9e0('0xb')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x2b0528['id'],_0x2b0528[_0xd9e0('0xc')]));return getTranscriptionJob(_0x1fb454[_0xd9e0('0xd')],_0x1fb454[_0xd9e0('0xe')],_0x418d84[_0xd9e0('0xf')],_0x2b0528[_0xd9e0('0xc')])['then'](function(_0x58d44c){logger['info'](util[_0xd9e0('0xb')](_0xd9e0('0x10'),_0x2b0528['id'],_0x2b0528[_0xd9e0('0xc')],_0x58d44c[_0xd9e0('0x11')]['TranscriptionJobStatus']));if(!_0x2b0528[_0xd9e0('0x12')]){switch(_0x58d44c['TranscriptionJob']['TranscriptionJobStatus']){case _0xd9e0('0x13'):var _0x30a342={'transcribeStatus':_0x58d44c['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x58d44c[_0xd9e0('0x11')][_0xd9e0('0x14')]['TranscriptFileUri']};logger[_0xd9e0('0x15')](util[_0xd9e0('0xb')](_0xd9e0('0x16'),_0x2b0528['id']));return rp({'uri':_0x58d44c[_0xd9e0('0x11')][_0xd9e0('0x14')][_0xd9e0('0x17')],'json':!![]})[_0xd9e0('0x18')](function(_0x5711a1){logger[_0xd9e0('0x15')](util[_0xd9e0('0xb')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x2b0528['id']));if(_0x5711a1&&_0x5711a1[_0xd9e0('0x19')]&&_0x5711a1[_0xd9e0('0x19')]['transcripts']&&_0x5711a1[_0xd9e0('0x19')]['transcripts'][_0xd9e0('0x1a')]){_0x30a342[_0xd9e0('0x12')]='';for(var _0x48dbf9=0x0;_0x48dbf9<_0x5711a1[_0xd9e0('0x19')]['transcripts']['length'];_0x48dbf9++){_0x30a342['fileText']+=_0x5711a1[_0xd9e0('0x19')][_0xd9e0('0x1b')][_0x48dbf9][_0xd9e0('0x1c')]+'';}}return _0x2b0528[_0xd9e0('0x1d')](_0x30a342);})[_0xd9e0('0x18')](function(){logger[_0xd9e0('0x15')](util[_0xd9e0('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2b0528['id']));if(!_0x2b0528[_0xd9e0('0x1e')]){throw new db[(_0xd9e0('0x1f'))][(_0xd9e0('0x20'))](_0xd9e0('0x21'));}if(!_0x418d84[_0xd9e0('0x22')]||!_0x418d84['sentimentAccountId']||!_0x418d84['sentimentRegion']||!_0x418d84['language']||!_0x418d84[_0xd9e0('0x23')]){throw new db[(_0xd9e0('0x1f'))]['ValidationError'](_0xd9e0('0x24'));}if(!_0x30a342[_0xd9e0('0x12')]){throw new Error(_0xd9e0('0x25'));}if(_0x418d84[_0xd9e0('0x26')]===_0x1fb454['id']){return _0x1fb454;}else{return db[_0xd9e0('0x27')][_0xd9e0('0x28')]({'where':{'id':_settings[_0xd9e0('0x26')]}});}})['then'](function(_0x189c6a){if(!_0x189c6a){throw new db[(_0xd9e0('0x1f'))][(_0xd9e0('0x20'))](_0xd9e0('0x29'));}if(!_0x189c6a[_0xd9e0('0xd')]||!_0x189c6a[_0xd9e0('0xe')]){throw new db[(_0xd9e0('0x1f'))][(_0xd9e0('0x20'))](_0xd9e0('0x2a'));}_0x18fdf2=_0x189c6a;logger[_0xd9e0('0x15')](util[_0xd9e0('0xb')](_0xd9e0('0x2b'),_0x2b0528['id']));return sentiment(_0x18fdf2['data1'],_0x18fdf2[_0xd9e0('0xe')],_0x418d84[_0xd9e0('0x2c')],_0x30a342[_0xd9e0('0x12')],_0x418d84[_0xd9e0('0x2d')]);})[_0xd9e0('0x18')](function(_0x514069){logger[_0xd9e0('0x15')](util[_0xd9e0('0xb')](_0xd9e0('0x2e'),_0x2b0528['id']));return _0x2b0528[_0xd9e0('0x1d')]({'sentiment':_0x514069['Sentiment'],'sPositive':_0x514069[_0xd9e0('0x2f')]['Positive'],'sNegative':_0x514069[_0xd9e0('0x2f')][_0xd9e0('0x30')],'sMixed':_0x514069[_0xd9e0('0x2f')][_0xd9e0('0x31')],'sNeutral':_0x514069[_0xd9e0('0x2f')][_0xd9e0('0x32')]});})[_0xd9e0('0x18')](function(){logger[_0xd9e0('0x15')](util[_0xd9e0('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2b0528['id']));_0x555652();});case _0xd9e0('0x33'):return _0x2b0528[_0xd9e0('0x1d')]({'transcribeStatus':_0xd9e0('0x33'),'failureReason':_0x58d44c[_0xd9e0('0x11')]['FailureReason']})[_0xd9e0('0x18')](function(){logger[_0xd9e0('0x15')](util[_0xd9e0('0xb')](_0xd9e0('0x34'),_0x2b0528['id']));_0x555652();});default:logger[_0xd9e0('0x15')](util[_0xd9e0('0xb')](_0xd9e0('0x35'),_0x2b0528['id']));break;}}else{return BPromise[_0xd9e0('0x36')]()[_0xd9e0('0x18')](function(){if(!_0x2b0528[_0xd9e0('0x1e')]){throw new db[(_0xd9e0('0x1f'))][(_0xd9e0('0x20'))](_0xd9e0('0x21'));}if(!_0x418d84[_0xd9e0('0x22')]||!_0x418d84[_0xd9e0('0x26')]||!_0x418d84[_0xd9e0('0x2c')]||!_0x418d84['language']||!_0x418d84[_0xd9e0('0x23')]){throw new db[(_0xd9e0('0x1f'))]['ValidationError'](_0xd9e0('0x24'));}if(!_0x2b0528['fileText']){throw new Error(_0xd9e0('0x25'));}if(_0x418d84[_0xd9e0('0x26')]===_0x1fb454['id']){return _0x1fb454;}else{return db[_0xd9e0('0x27')][_0xd9e0('0x28')]({'where':{'id':_settings[_0xd9e0('0x26')]}});}})[_0xd9e0('0x18')](function(_0x51a616){if(!_0x51a616){throw new db['Sequelize'][(_0xd9e0('0x20'))](_0xd9e0('0x29'));}if(!_0x51a616[_0xd9e0('0xd')]||!_0x51a616[_0xd9e0('0xe')]){throw new db[(_0xd9e0('0x1f'))]['ValidationError'](_0xd9e0('0x2a'));}_0x18fdf2=_0x51a616;logger[_0xd9e0('0x15')](util[_0xd9e0('0xb')](_0xd9e0('0x2b'),_0x2b0528['id']));return sentiment(_0x18fdf2['data1'],_0x18fdf2[_0xd9e0('0xe')],_0x418d84[_0xd9e0('0x2c')],_0x2b0528[_0xd9e0('0x12')],_0x418d84['language']);})['then'](function(_0xc28075){logger[_0xd9e0('0x15')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x2b0528['id']));return _0x2b0528[_0xd9e0('0x1d')]({'sentiment':_0xc28075[_0xd9e0('0x37')],'sPositive':_0xc28075[_0xd9e0('0x2f')][_0xd9e0('0x38')],'sNegative':_0xc28075[_0xd9e0('0x2f')][_0xd9e0('0x30')],'sMixed':_0xc28075[_0xd9e0('0x2f')][_0xd9e0('0x31')],'sNeutral':_0xc28075['SentimentScore'][_0xd9e0('0x32')],'transcribeStatus':_0xd9e0('0x13')});})['then'](function(){logger[_0xd9e0('0x15')](util[_0xd9e0('0xb')](_0xd9e0('0x34'),_0x2b0528['id']));_0x555652();});}})[_0xd9e0('0x39')](function(_0x2a1a1e){if(_0x2a1a1e){if(!_0x2a1a1e[_0xd9e0('0x3a')]||_0x2a1a1e[_0xd9e0('0x3a')]!==_0xd9e0('0x3b')){logger[_0xd9e0('0x3c')](util[_0xd9e0('0xb')](_0xd9e0('0x3d'),_0x2b0528['id']),util[_0xd9e0('0x3e')](_0x2a1a1e,{'showHidden':![],'depth':null}));}}_0x555652();});});}function checkTranscribe(){var _0x5c2927;var _0x373663;var _0x23d7fb;return db['VoiceRecording'][_0xd9e0('0x3f')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xd9e0('0x18')](function(_0x1de37a){if(!_0x1de37a||!_0x1de37a[_0xd9e0('0x1a')]){throw new db[(_0xd9e0('0x1f'))][(_0xd9e0('0x20'))](_0xd9e0('0x40'));}_0x5c2927=_0x1de37a;return db[_0xd9e0('0x41')]['findOne']({'where':{'id':0x1}});})[_0xd9e0('0x18')](function(_0xc2b731){if(!_0xc2b731){throw new db[(_0xd9e0('0x1f'))][(_0xd9e0('0x20'))](_0xd9e0('0x42'));}_0x373663=_0xc2b731;if(!_0x373663['transcribe']||!_0x373663['transcribeAccountId']||!_0x373663[_0xd9e0('0xf')]||!_0x373663['language']||!_0x373663[_0xd9e0('0x23')]){throw new db[(_0xd9e0('0x1f'))]['ValidationError']('Transcribe\x20not\x20configured');}return db[_0xd9e0('0x27')][_0xd9e0('0x28')]({'where':{'id':_0x373663[_0xd9e0('0x43')]}});})['then'](function(_0x328d1a){if(!_0x328d1a){throw new db['Sequelize'][(_0xd9e0('0x20'))](_0xd9e0('0x29'));}if(!_0x328d1a[_0xd9e0('0xd')]||!_0x328d1a['data2']){throw new db[(_0xd9e0('0x1f'))]['ValidationError'](_0xd9e0('0x2a'));}_0x23d7fb=_0x328d1a;var _0x84b71d=[];_0x5c2927['forEach'](function(_0x38af96){_0x84b71d[_0xd9e0('0x44')](checkTranscribeJob(_0x38af96,_0x373663,_0x23d7fb));});return BPromise['all'](_0x84b71d);})[_0xd9e0('0x39')](function(_0x35247f){if(_0x35247f){if(!_0x35247f['name']||_0x35247f[_0xd9e0('0x3a')]!==_0xd9e0('0x3b')){logger['error'](util[_0xd9e0('0x3e')](_0x35247f,{'showHidden':![],'depth':null}));}}});}exports[_0xd9e0('0x45')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xae2b=['[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','FailureReason','resolve','tempSentiment','bucket','COMPLETED','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','start','lodash','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','transcribe','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','TranscriptionJob','fileText','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','transcripts','results','length','transcript','update'];(function(_0x3f3b7d,_0x1c16b9){var _0x22cd3b=function(_0x5a0e24){while(--_0x5a0e24){_0x3f3b7d['push'](_0x3f3b7d['shift']());}};_0x22cd3b(++_0x1c16b9);}(_0xae2b,0xb3));var _0xbae2=function(_0x1b23de,_0x5db20a){_0x1b23de=_0x1b23de-0x0;var _0x31633c=_0xae2b[_0x1b23de];return _0x31633c;};var _=require(_0xbae2('0x0'));var AWS=require(_0xbae2('0x1'));var rp=require('request-promise');var util=require(_0xbae2('0x2'));var BPromise=require(_0xbae2('0x3'));var db=require(_0xbae2('0x4'))['db'];var logger=require(_0xbae2('0x5'))(_0xbae2('0x6'));function getTranscriptionJob(_0x11edb2,_0x564f86,_0x18db49,_0x59b6a7){return new Promise(function(_0x365175,_0xbfd83a){var _0x18bc03=new AWS['TranscribeService']({'accessKeyId':_0x564f86,'secretAccessKey':_0x11edb2,'region':_0x18db49});_0x18bc03['getTranscriptionJob']({'TranscriptionJobName':_0x59b6a7},function(_0x57f2ca,_0x54d696){if(_0x57f2ca){return _0xbfd83a(_0x57f2ca);}else{return _0x365175(_0x54d696);}});});}function sentiment(_0x323eda,_0x417d6b,_0x15c84a,_0xf470fd,_0x27ea94){return new Promise(function(_0x193185,_0x843207){var _0x5a6d1f=new AWS['Comprehend']({'accessKeyId':_0x417d6b,'secretAccessKey':_0x323eda,'region':_0x15c84a});_0x5a6d1f['detectSentiment']({'Text':_0xf470fd,'LanguageCode':_0x27ea94[_0xbae2('0x7')](0x0,0x2)},function(_0x5d6940,_0x3212c3){if(_0x5d6940){return _0x843207(_0x5d6940);}else{return _0x193185(_0x3212c3);}});});}function checkTranscribeJob(_0x1f899a,_0x1b28ce,_0x4c39ef){var _0x381f69;return new BPromise(function(_0x7de704,_0x5b5222){logger[_0xbae2('0x8')](util[_0xbae2('0x9')](_0xbae2('0xa'),_0x1f899a['id'],_0x1f899a[_0xbae2('0xb')]));return getTranscriptionJob(_0x4c39ef[_0xbae2('0xc')],_0x4c39ef[_0xbae2('0xd')],_0x1b28ce[_0xbae2('0xe')],_0x1f899a['transcribeName'])[_0xbae2('0xf')](function(_0x523e23){logger[_0xbae2('0x8')](util[_0xbae2('0x9')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x1f899a['id'],_0x1f899a[_0xbae2('0xb')],_0x523e23[_0xbae2('0x10')]['TranscriptionJobStatus']));if(!_0x1f899a[_0xbae2('0x11')]){switch(_0x523e23[_0xbae2('0x10')][_0xbae2('0x12')]){case'COMPLETED':var _0x21c9fa={'transcribeStatus':_0x523e23['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x523e23[_0xbae2('0x10')][_0xbae2('0x13')][_0xbae2('0x14')]};logger[_0xbae2('0x8')](util['format'](_0xbae2('0x15'),_0x1f899a['id']));return rp({'uri':_0x523e23[_0xbae2('0x10')]['Transcript']['TranscriptFileUri'],'json':!![]})[_0xbae2('0xf')](function(_0x3f1e04){logger[_0xbae2('0x8')](util[_0xbae2('0x9')](_0xbae2('0x16'),_0x1f899a['id']));if(_0x3f1e04&&_0x3f1e04['results']&&_0x3f1e04['results'][_0xbae2('0x17')]&&_0x3f1e04[_0xbae2('0x18')]['transcripts'][_0xbae2('0x19')]){_0x21c9fa[_0xbae2('0x11')]='';for(var _0x4154fd=0x0;_0x4154fd<_0x3f1e04[_0xbae2('0x18')]['transcripts'][_0xbae2('0x19')];_0x4154fd++){_0x21c9fa['fileText']+=_0x3f1e04[_0xbae2('0x18')][_0xbae2('0x17')][_0x4154fd][_0xbae2('0x1a')]+'';}}return _0x1f899a[_0xbae2('0x1b')](_0x21c9fa);})[_0xbae2('0xf')](function(){logger['info'](util[_0xbae2('0x9')](_0xbae2('0x1c'),_0x1f899a['id']));if(!_0x1f899a['tempSentiment']){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x1f'));}if(!_0x1b28ce[_0xbae2('0x20')]||!_0x1b28ce[_0xbae2('0x21')]||!_0x1b28ce['sentimentRegion']||!_0x1b28ce[_0xbae2('0x22')]||!_0x1b28ce['bucket']){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x23'));}if(!_0x21c9fa[_0xbae2('0x11')]){throw new Error(_0xbae2('0x24'));}if(_0x1b28ce[_0xbae2('0x21')]===_0x4c39ef['id']){return _0x4c39ef;}else{return db[_0xbae2('0x25')][_0xbae2('0x26')]({'where':{'id':_settings[_0xbae2('0x21')]}});}})[_0xbae2('0xf')](function(_0x4021c9){if(!_0x4021c9){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x27'));}if(!_0x4021c9[_0xbae2('0xc')]||!_0x4021c9[_0xbae2('0xd')]){throw new db['Sequelize'][(_0xbae2('0x1e'))](_0xbae2('0x28'));}_0x381f69=_0x4021c9;logger['info'](util['format'](_0xbae2('0x29'),_0x1f899a['id']));return sentiment(_0x381f69[_0xbae2('0xc')],_0x381f69[_0xbae2('0xd')],_0x1b28ce[_0xbae2('0x2a')],_0x21c9fa['fileText'],_0x1b28ce[_0xbae2('0x22')]);})[_0xbae2('0xf')](function(_0x35c929){logger[_0xbae2('0x8')](util[_0xbae2('0x9')](_0xbae2('0x2b'),_0x1f899a['id']));return _0x1f899a[_0xbae2('0x1b')]({'sentiment':_0x35c929[_0xbae2('0x2c')],'sPositive':_0x35c929[_0xbae2('0x2d')]['Positive'],'sNegative':_0x35c929[_0xbae2('0x2d')][_0xbae2('0x2e')],'sMixed':_0x35c929[_0xbae2('0x2d')][_0xbae2('0x2f')],'sNeutral':_0x35c929['SentimentScore'][_0xbae2('0x30')]});})[_0xbae2('0xf')](function(){logger[_0xbae2('0x8')](util[_0xbae2('0x9')](_0xbae2('0x1c'),_0x1f899a['id']));_0x7de704();});case'FAILED':return _0x1f899a[_0xbae2('0x1b')]({'transcribeStatus':'FAILED','failureReason':_0x523e23[_0xbae2('0x10')][_0xbae2('0x31')]})[_0xbae2('0xf')](function(){logger[_0xbae2('0x8')](util['format'](_0xbae2('0x1c'),_0x1f899a['id']));_0x7de704();});default:logger['info'](util['format']('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x1f899a['id']));break;}}else{return BPromise[_0xbae2('0x32')]()[_0xbae2('0xf')](function(){if(!_0x1f899a[_0xbae2('0x33')]){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x1b28ce['sentiment']||!_0x1b28ce[_0xbae2('0x21')]||!_0x1b28ce['sentimentRegion']||!_0x1b28ce[_0xbae2('0x22')]||!_0x1b28ce[_0xbae2('0x34')]){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x23'));}if(!_0x1f899a[_0xbae2('0x11')]){throw new Error(_0xbae2('0x24'));}if(_0x1b28ce[_0xbae2('0x21')]===_0x4c39ef['id']){return _0x4c39ef;}else{return db[_0xbae2('0x25')][_0xbae2('0x26')]({'where':{'id':_settings[_0xbae2('0x21')]}});}})[_0xbae2('0xf')](function(_0x566db5){if(!_0x566db5){throw new db['Sequelize']['ValidationError'](_0xbae2('0x27'));}if(!_0x566db5[_0xbae2('0xc')]||!_0x566db5['data2']){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x28'));}_0x381f69=_0x566db5;logger[_0xbae2('0x8')](util[_0xbae2('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x1f899a['id']));return sentiment(_0x381f69['data1'],_0x381f69[_0xbae2('0xd')],_0x1b28ce['sentimentRegion'],_0x1f899a[_0xbae2('0x11')],_0x1b28ce[_0xbae2('0x22')]);})[_0xbae2('0xf')](function(_0x22d925){logger[_0xbae2('0x8')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x1f899a['id']));return _0x1f899a['update']({'sentiment':_0x22d925[_0xbae2('0x2c')],'sPositive':_0x22d925['SentimentScore']['Positive'],'sNegative':_0x22d925[_0xbae2('0x2d')][_0xbae2('0x2e')],'sMixed':_0x22d925['SentimentScore']['Mixed'],'sNeutral':_0x22d925['SentimentScore']['Neutral'],'transcribeStatus':_0xbae2('0x35')});})[_0xbae2('0xf')](function(){logger['info'](util[_0xbae2('0x9')](_0xbae2('0x1c'),_0x1f899a['id']));_0x7de704();});}})[_0xbae2('0x36')](function(_0x133285){if(_0x133285){if(!_0x133285[_0xbae2('0x37')]||_0x133285[_0xbae2('0x37')]!==_0xbae2('0x38')){logger[_0xbae2('0x39')](util[_0xbae2('0x9')](_0xbae2('0x3a'),_0x1f899a['id']),util[_0xbae2('0x3b')](_0x133285,{'showHidden':![],'depth':null}));}}_0x7de704();});});}function checkTranscribe(){var _0x2514d4;var _0x4a2973;var _0x105d8b;return db['VoiceRecording'][_0xbae2('0x3c')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xbae2('0xf')](function(_0x20fffa){if(!_0x20fffa||!_0x20fffa['length']){throw new db['Sequelize'][(_0xbae2('0x1e'))](_0xbae2('0x3d'));}_0x2514d4=_0x20fffa;return db[_0xbae2('0x3e')][_0xbae2('0x26')]({'where':{'id':0x1}});})[_0xbae2('0xf')](function(_0x426866){if(!_0x426866){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))]('Settings\x20not\x20available');}_0x4a2973=_0x426866;if(!_0x4a2973[_0xbae2('0x6')]||!_0x4a2973[_0xbae2('0x3f')]||!_0x4a2973['transcribeRegion']||!_0x4a2973[_0xbae2('0x22')]||!_0x4a2973[_0xbae2('0x34')]){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x40'));}return db[_0xbae2('0x25')][_0xbae2('0x26')]({'where':{'id':_0x4a2973['transcribeAccountId']}});})[_0xbae2('0xf')](function(_0x4303cc){if(!_0x4303cc){throw new db[(_0xbae2('0x1d'))]['ValidationError'](_0xbae2('0x27'));}if(!_0x4303cc['data1']||!_0x4303cc[_0xbae2('0xd')]){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x28'));}_0x105d8b=_0x4303cc;var _0x185e7e=[];_0x2514d4[_0xbae2('0x41')](function(_0x51fff){_0x185e7e[_0xbae2('0x42')](checkTranscribeJob(_0x51fff,_0x4a2973,_0x105d8b));});return BPromise[_0xbae2('0x43')](_0x185e7e);})[_0xbae2('0x36')](function(_0x5a8471){if(_0x5a8471){if(!_0x5a8471[_0xbae2('0x37')]||_0x5a8471[_0xbae2('0x37')]!==_0xbae2('0x38')){logger[_0xbae2('0x39')](util[_0xbae2('0x3b')](_0x5a8471,{'showHidden':![],'depth':null}));}}});}exports[_0xbae2('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index e640d4c..01fe497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcac2=['util','../../config/environment','../logger','schedule','redis','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','system','format','YYYY-MM-DD\x20HH:mm:ss','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','start','lodash','moment','ioredis'];(function(_0x53260f,_0x533d76){var _0x19e85b=function(_0x4ae9f4){while(--_0x4ae9f4){_0x53260f['push'](_0x53260f['shift']());}};_0x19e85b(++_0x533d76);}(_0xcac2,0x8e));var _0x2cac=function(_0x17e0a0,_0x39b799){_0x17e0a0=_0x17e0a0-0x0;var _0x1baa60=_0xcac2[_0x17e0a0];return _0x1baa60;};'use strict';var _=require(_0x2cac('0x0'));var moment=require(_0x2cac('0x1'));var Redis=require(_0x2cac('0x2'));var util=require(_0x2cac('0x3'));var config=require(_0x2cac('0x4'));var db=require('../../mysqldb')['db'];var logger=require(_0x2cac('0x5'))(_0x2cac('0x6'));config['redis']=_['defaults'](config[_0x2cac('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x2cac('0x8'))(new Redis(config[_0x2cac('0x7')]));function closeInteractions(){var _0x4a60d0=[];return db[_0x2cac('0x9')][_0x2cac('0xa')]({'raw':!![],'attributes':['id',_0x2cac('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x2cac('0xc')](0x18,_0x2cac('0xd'))}}})[_0x2cac('0xe')](function(_0x2671e2){if(_0x2671e2&&_0x2671e2[_0x2cac('0xf')]){_0x4a60d0=_[_0x2cac('0x10')](_0x2671e2||[],'id');logger[_0x2cac('0x11')](_0x2cac('0x12'),_0x4a60d0[_0x2cac('0x13')]());return db[_0x2cac('0x9')]['update']({'closeReason':_0x2cac('0x14'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x2cac('0x15')](_0x2cac('0x16'))},{'where':{'id':_0x4a60d0}});}})['then'](function(){if(_0x4a60d0&&_0x4a60d0[_0x2cac('0xf')]){logger[_0x2cac('0x11')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x4a60d0[_0x2cac('0x13')]());for(var _0x4ffd5c=0x0;_0x4ffd5c<_0x4a60d0[_0x2cac('0xf')];_0x4ffd5c++){io[_0x2cac('0x17')](_0x2cac('0x18'),{'id':_0x4a60d0[_0x4ffd5c],'closed':!![]});}}})[_0x2cac('0x19')](function(_0x694d60){logger[_0x2cac('0x1a')](_0x2cac('0x1b'),_0x694d60?util['inspect'](_0x694d60,{'showHidden':![],'depth':null}):'');});}exports[_0x2cac('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xd96d=['lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','subtract','hours','then','length','map','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','info','emit','[WHATSAPP]\x20Error\x20closing\x20interactions','start'];(function(_0x28e8d9,_0x3db8b5){var _0x307a06=function(_0x33b01a){while(--_0x33b01a){_0x28e8d9['push'](_0x28e8d9['shift']());}};_0x307a06(++_0x3db8b5);}(_0xd96d,0x1d4));var _0xdd96=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xd96d[_0x2160a9];return _0xa88cf7;};'use strict';var _=require(_0xdd96('0x0'));var moment=require(_0xdd96('0x1'));var Redis=require(_0xdd96('0x2'));var util=require(_0xdd96('0x3'));var config=require(_0xdd96('0x4'));var db=require(_0xdd96('0x5'))['db'];var logger=require(_0xdd96('0x6'))(_0xdd96('0x7'));config[_0xdd96('0x8')]=_[_0xdd96('0x9')](config[_0xdd96('0x8')],{'host':_0xdd96('0xa'),'port':0x18eb});var io=require(_0xdd96('0xb'))(new Redis(config[_0xdd96('0x8')]));function closeInteractions(){var _0x2cf9d0=[];return db[_0xdd96('0xc')]['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xdd96('0xd')](0x18,_0xdd96('0xe'))}}})[_0xdd96('0xf')](function(_0x49473a){if(_0x49473a&&_0x49473a[_0xdd96('0x10')]){_0x2cf9d0=_[_0xdd96('0x11')](_0x49473a||[],'id');logger['info'](_0xdd96('0x12'),_0x2cf9d0[_0xdd96('0x13')]());return db[_0xdd96('0xc')][_0xdd96('0x14')]({'closeReason':_0xdd96('0x15'),'disposition':'timeout','closed':!![],'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x2cf9d0}});}})[_0xdd96('0xf')](function(){if(_0x2cf9d0&&_0x2cf9d0['length']){logger[_0xdd96('0x16')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x2cf9d0[_0xdd96('0x13')]());for(var _0x18c3a7=0x0;_0x18c3a7<_0x2cf9d0['length'];_0x18c3a7++){io[_0xdd96('0x17')]('whatsappInteraction:update',{'id':_0x2cf9d0[_0x18c3a7],'closed':!![]});}}})['catch'](function(_0x6542e6){logger['error'](_0xdd96('0x18'),_0x6542e6?util['inspect'](_0x6542e6,{'showHidden':![],'depth':null}):'');});}exports[_0xdd96('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 0f96a85..fcc5f79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98da=['contacts2','hopper2','catch','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','destroy','then','bulkCreate','log','finished\x20populating','contacts1','CmHopper','CmContact'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x98da,0xd4));var _0xa98d=function(_0x704f7d,_0x380ba3){_0x704f7d=_0x704f7d-0x0;var _0x58d47e=_0x98da[_0x704f7d];return _0x58d47e;};'use strict';var util=require(_0xa98d('0x0'));var db=require(_0xa98d('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xa98d('0x2')]({'id':i,'firstName':_0xa98d('0x3')+i,'lastName':_0xa98d('0x4')+i,'phone':0xf879fb460+i,'email':_0xa98d('0x5')+i+_0xa98d('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xa98d('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xa98d('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0xa98d('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xa98d('0x2')]({'id':i,'firstName':_0xa98d('0x3')+i,'lastName':_0xa98d('0x4')+i,'phone':0xf879fb460+i,'email':_0xa98d('0x5')+i+_0xa98d('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xa98d('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xa98d('0x7')](),'updatedAt':Date['now']()});}db['CmContact'][_0xa98d('0x8')]({'where':{}})[_0xa98d('0x9')](function(){return db['CmContact'][_0xa98d('0xa')](contacts);})[_0xa98d('0x9')](function(){console[_0xa98d('0xb')](_0xa98d('0xc'),_0xa98d('0xd'));return db['CmHopper'][_0xa98d('0x8')]({'where':{}});})['then'](function(){return db[_0xa98d('0xe')][_0xa98d('0xa')](hopper);})[_0xa98d('0x9')](function(){console[_0xa98d('0xb')](_0xa98d('0xc'),'hopper1');return db[_0xa98d('0xf')][_0xa98d('0xa')](contacts2);})[_0xa98d('0x9')](function(){console['log'](_0xa98d('0xc'),_0xa98d('0x10'));return db['CmHopper'][_0xa98d('0xa')](hopper2);})[_0xa98d('0x9')](function(){console[_0xa98d('0xb')](_0xa98d('0xc'),_0xa98d('0x11'));})[_0xa98d('0x12')](function(_0x15d51f){console[_0xa98d('0xb')](_0x15d51f);});
\ No newline at end of file
+var _0xc9fa=['CmContact','destroy','then','bulkCreate','log','finished\x20populating','contacts1','CmHopper','hopper1','contacts2','catch','push','Biondo','innocenzo.biondo','@xcally.com','now'];(function(_0x162739,_0x2f5faa){var _0x97a9b=function(_0xddf869){while(--_0xddf869){_0x162739['push'](_0x162739['shift']());}};_0x97a9b(++_0x2f5faa);}(_0xc9fa,0x18b));var _0xac9f=function(_0x53a11c,_0x393441){_0x53a11c=_0x53a11c-0x0;var _0x2680d5=_0xc9fa[_0x53a11c];return _0x2680d5;};'use strict';var util=require('util');var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xac9f('0x0')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xac9f('0x1')+i,'phone':0xf879fb460+i,'email':_0xac9f('0x2')+i+_0xac9f('0x3')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xac9f('0x4')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0xac9f('0x3')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xac9f('0x0')]({'id':i,'active':![],'scheduledat':Date[_0xac9f('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xac9f('0x4')](),'updatedAt':Date[_0xac9f('0x4')]()});}db[_0xac9f('0x5')][_0xac9f('0x6')]({'where':{}})[_0xac9f('0x7')](function(){return db['CmContact'][_0xac9f('0x8')](contacts);})['then'](function(){console[_0xac9f('0x9')](_0xac9f('0xa'),_0xac9f('0xb'));return db[_0xac9f('0xc')][_0xac9f('0x6')]({'where':{}});})[_0xac9f('0x7')](function(){return db[_0xac9f('0xc')][_0xac9f('0x8')](hopper);})[_0xac9f('0x7')](function(){console[_0xac9f('0x9')]('finished\x20populating',_0xac9f('0xd'));return db[_0xac9f('0x5')][_0xac9f('0x8')](contacts2);})[_0xac9f('0x7')](function(){console[_0xac9f('0x9')](_0xac9f('0xa'),_0xac9f('0xe'));return db[_0xac9f('0xc')][_0xac9f('0x8')](hopper2);})[_0xac9f('0x7')](function(){console['log'](_0xac9f('0xa'),'hopper2');})[_0xac9f('0xf')](function(_0x414fb2){console[_0xac9f('0x9')](_0x414fb2);});
\ No newline at end of file
index 3293dce..aecc39b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4ff=['format','%s%s','agent','udp','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','then','log','catch','util','../mysqldb','push'];(function(_0x38183a,_0x333650){var _0x51ab39=function(_0x1ee955){while(--_0x1ee955){_0x38183a['push'](_0x38183a['shift']());}};_0x51ab39(++_0x333650);}(_0xc4ff,0xda));var _0xfc4f=function(_0x561b98,_0x418921){_0x561b98=_0x561b98-0x0;var _0x522c16=_0xc4ff[_0x561b98];return _0x522c16;};'use strict';var util=require(_0xfc4f('0x0'));var db=require(_0xfc4f('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xfc4f('0x2')]({'name':util[_0xfc4f('0x3')](_0xfc4f('0x4'),_0xfc4f('0x5'),i),'fullname':util['format']('%s%s','agent',i),'email':util[_0xfc4f('0x3')]('%s%s@xcally.com','agent',i),'role':_0xfc4f('0x5'),'password':'password','internal':0xfa0+i,'type':'friend','transport':[_0xfc4f('0x6'),'ws','wss'],'disallow':[_0xfc4f('0x7')],'allow':[_0xfc4f('0x8')],'defaultuser':util[_0xfc4f('0x3')](_0xfc4f('0x4'),'agent',i),'encryption':'yes','avpf':_0xfc4f('0x9'),'force_avp':'yes','icesupport':'yes','dtlsenable':_0xfc4f('0x9'),'dtlsverify':'no','dtlscertfile':_0xfc4f('0xa'),'dtlsprivatekey':_0xfc4f('0xb'),'dtlssetup':_0xfc4f('0xc'),'callerid':util['format'](_0xfc4f('0xd'),util[_0xfc4f('0x3')]('%s%s',_0xfc4f('0x5'),i),0xfa0+i)});}db['User']['bulkCreate'](users)[_0xfc4f('0xe')](function(){console[_0xfc4f('0xf')]('add\x20user');})[_0xfc4f('0x10')](function(_0xd8a3c2){console['log'](_0xd8a3c2);});
\ No newline at end of file
+var _0x2d78=['util','../mysqldb','format','%s%s','agent','friend','wss','all','ulaw','yes','/etc/pki/tls/private/motion.key','actpass','User','bulkCreate','then','log','catch'];(function(_0x16ae8e,_0xd935ea){var _0x5a7b3b=function(_0x5a4e0e){while(--_0x5a4e0e){_0x16ae8e['push'](_0x16ae8e['shift']());}};_0x5a7b3b(++_0xd935ea);}(_0x2d78,0x132));var _0x82d7=function(_0x58547b,_0x4b89c2){_0x58547b=_0x58547b-0x0;var _0x1d3fd2=_0x2d78[_0x58547b];return _0x1d3fd2;};'use strict';var util=require(_0x82d7('0x0'));var db=require(_0x82d7('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0x82d7('0x2')](_0x82d7('0x3'),'agent',i),'fullname':util[_0x82d7('0x2')]('%s%s',_0x82d7('0x4'),i),'email':util['format']('%s%s@xcally.com',_0x82d7('0x4'),i),'role':_0x82d7('0x4'),'password':'password','internal':0xfa0+i,'type':_0x82d7('0x5'),'transport':['udp','ws',_0x82d7('0x6')],'disallow':[_0x82d7('0x7')],'allow':[_0x82d7('0x8')],'defaultuser':util[_0x82d7('0x2')](_0x82d7('0x3'),'agent',i),'encryption':_0x82d7('0x9'),'avpf':_0x82d7('0x9'),'force_avp':_0x82d7('0x9'),'icesupport':_0x82d7('0x9'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0x82d7('0xa'),'dtlssetup':_0x82d7('0xb'),'callerid':util[_0x82d7('0x2')]('\x22%s\x22\x20<%s>',util[_0x82d7('0x2')](_0x82d7('0x3'),_0x82d7('0x4'),i),0xfa0+i)});}db[_0x82d7('0xc')][_0x82d7('0xd')](users)[_0x82d7('0xe')](function(){console[_0x82d7('0xf')]('add\x20user');})[_0x82d7('0x10')](function(_0x256871){console[_0x82d7('0xf')](_0x256871);});
\ No newline at end of file
index c6b27d6..7e80397 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c04=['role','agent','type','UserProfileSection','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','ivr','then','format','%s:queue:%s','length','user:%s','handshake','query','find','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','admin','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','WhatsappQueue','Campaign','user','voice:inbound','userProfileId','SmsQueues','SmsQueue','OpenchannelQueue','Trunk','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','util','../mysqldb','./environment','name','Agents','User'];(function(_0x1578a6,_0x5da5f5){var _0x5c5ff2=function(_0x33a033){while(--_0x33a033){_0x1578a6['push'](_0x1578a6['shift']());}};_0x5c5ff2(++_0x5da5f5);}(_0x3c04,0x192));var _0x43c0=function(_0x54bdf6,_0xb6273){_0x54bdf6=_0x54bdf6-0x0;var _0x10eae6=_0x3c04[_0x54bdf6];return _0x10eae6;};'use strict';var _=require('lodash');var util=require(_0x43c0('0x0'));var BPromise=require('bluebird');var db=require(_0x43c0('0x1'))['db'];var config=require(_0x43c0('0x2'));var queryQueues={'attributes':['id',_0x43c0('0x3')],'include':[{'as':_0x43c0('0x4'),'model':db[_0x43c0('0x5')],'attributes':['id',_0x43c0('0x3'),_0x43c0('0x6')],'raw':!![],'where':{'role':_0x43c0('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x43c0('0x3')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x43c0('0x3')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x43c0('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x43c0('0x8')],'where':{'type':'ivr'}};function getAssociatedResources(_0x100fb8,_0x3efc14,_0x1b54f2){return db[_0x43c0('0x9')]['findOne']({'where':{'name':_0x100fb8,'userProfileId':_0x3efc14},'raw':!![]})['then'](function(_0x2c4153){if(_0x2c4153){if(_0x2c4153['autoAssociation']){switch(_0x100fb8){case _0x43c0('0xa'):case _0x43c0('0xb'):case _0x43c0('0xc'):case'SmsQueues':case _0x43c0('0xd'):case _0x43c0('0xe'):case _0x43c0('0xf'):return db[_0x1b54f2][_0x43c0('0x10')](queryQueues);case _0x43c0('0x11'):return db[_0x1b54f2]['findAll'](queryTelephones);case _0x43c0('0x12'):return db[_0x1b54f2][_0x43c0('0x10')](queryTrunks);case _0x43c0('0x13'):return db[_0x1b54f2][_0x43c0('0x10')](queryCampaigns);}}else{return db[_0x43c0('0x14')]['findAll']({'attributes':[_0x43c0('0x15')],'where':{'sectionId':_0x2c4153['id']},'raw':!![]})['then'](function(_0x1e35d0){if(_0x1e35d0){var _0x47aade={'where':{'id':_[_0x43c0('0x16')](_0x1e35d0,_0x43c0('0x15'))},'raw':!![]};switch(_0x1b54f2){case _0x43c0('0x5'):_0x47aade[_0x43c0('0x17')][_0x43c0('0x6')]='telephone';break;case'Campaign':_0x47aade['where'][_0x43c0('0x8')]=_0x43c0('0x18');break;}return db[_0x1b54f2][_0x43c0('0x10')](_0x47aade);}else{return[];}});}}else{return[];}})[_0x43c0('0x19')](function(_0x333f60){return _0x333f60;});}function joinOrLeaveQueues(_0x31aa65,_0x5c3c68,_0xe1e717,_0x2aed3d){_0x31aa65[_0x5c3c68](util[_0x43c0('0x1a')](_0x43c0('0x1b'),_0xe1e717,_0x2aed3d[_0x43c0('0x3')]));if(_0x2aed3d[_0x43c0('0x4')]){for(var _0x3d5aad=0x0;_0x3d5aad<_0x2aed3d[_0x43c0('0x4')][_0x43c0('0x1c')];_0x3d5aad+=0x1){_0x31aa65[_0x5c3c68](util[_0x43c0('0x1a')](_0x43c0('0x1d'),_0x2aed3d[_0x43c0('0x4')][_0x3d5aad][_0x43c0('0x3')]));}}}function joinOrLeave(_0x115395,_0x4a3723,_0xf3ff3e){var _0x4aab88;if(_0x115395[_0x43c0('0x1e')][_0x43c0('0x1f')]['id']){db[_0x43c0('0x5')][_0x43c0('0x20')]({'attributes':['id','name',_0x43c0('0x6'),'userProfileId'],'where':{'id':_0x115395[_0x43c0('0x1e')][_0x43c0('0x1f')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x43c0('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x43c0('0x22')],'as':_0x43c0('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x43c0('0x24')],'as':_0x43c0('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x43c0('0x26')],'as':_0x43c0('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x43c0('0x28')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x43c0('0x29')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x43c0('0x19')](function(_0x34530e){if(_0x34530e){_0x4aab88=_0x34530e;_0x115395[_0x4a3723](util[_0x43c0('0x1a')](_0x43c0('0x1d'),_0x34530e[_0x43c0('0x3')]));var _0x7dfd38=[];switch(_0x34530e['role']){case _0x43c0('0x2a'):_0x115395[_0x4a3723]('voice:inbound');_0x115395[_0x4a3723](_0x43c0('0x2b'));if(queryQueues[_0x43c0('0x2c')](_0x43c0('0x2d'))){delete queryQueues['include'];}_0x7dfd38[_0x43c0('0x2e')](db[_0x43c0('0x2f')]['findAll'](queryQueues));_0x7dfd38['push'](db[_0x43c0('0x30')][_0x43c0('0x10')](queryQueues));_0x7dfd38[_0x43c0('0x2e')](db[_0x43c0('0x31')][_0x43c0('0x10')](queryQueues));_0x7dfd38[_0x43c0('0x2e')](db['SmsQueue'][_0x43c0('0x10')](queryQueues));_0x7dfd38[_0x43c0('0x2e')](db[_0x43c0('0x32')][_0x43c0('0x10')](queryQueues));_0x7dfd38['push'](db['OpenchannelQueue'][_0x43c0('0x10')](queryQueues));_0x7dfd38['push'](db[_0x43c0('0x33')]['findAll'](queryQueues));_0x7dfd38[_0x43c0('0x2e')](db[_0x43c0('0x5')][_0x43c0('0x10')](queryTelephones));_0x7dfd38['push'](db['Trunk'][_0x43c0('0x10')](queryTrunks));_0x7dfd38[_0x43c0('0x2e')](db[_0x43c0('0x34')][_0x43c0('0x10')](queryCampaigns));_0x7dfd38['push'](db[_0x43c0('0x5')][_0x43c0('0x10')](queryAgents));break;case _0x43c0('0x35'):_0x115395[_0x4a3723](_0x43c0('0x36'));_0x115395[_0x4a3723](_0x43c0('0x2b'));_0x7dfd38['push'](getAssociatedResources(_0x43c0('0xa'),_0x34530e[_0x43c0('0x37')],_0x43c0('0x2f')));_0x7dfd38[_0x43c0('0x2e')](getAssociatedResources(_0x43c0('0xb'),_0x34530e[_0x43c0('0x37')],_0x43c0('0x30')));_0x7dfd38['push'](getAssociatedResources(_0x43c0('0xc'),_0x34530e['userProfileId'],_0x43c0('0x31')));_0x7dfd38['push'](getAssociatedResources(_0x43c0('0x38'),_0x34530e['userProfileId'],_0x43c0('0x39')));_0x7dfd38[_0x43c0('0x2e')](getAssociatedResources(_0x43c0('0xd'),_0x34530e[_0x43c0('0x37')],_0x43c0('0x32')));_0x7dfd38[_0x43c0('0x2e')](getAssociatedResources(_0x43c0('0xe'),_0x34530e[_0x43c0('0x37')],_0x43c0('0x3a')));_0x7dfd38[_0x43c0('0x2e')](getAssociatedResources('WhatsappQueues',_0x34530e['userProfileId'],_0x43c0('0x33')));_0x7dfd38['push'](getAssociatedResources('Telephones',_0x34530e[_0x43c0('0x37')],_0x43c0('0x5')));_0x7dfd38['push'](getAssociatedResources(_0x43c0('0x12'),_0x34530e['userProfileId'],_0x43c0('0x3b')));_0x7dfd38[_0x43c0('0x2e')](getAssociatedResources(_0x43c0('0x13'),_0x34530e[_0x43c0('0x37')],_0x43c0('0x34')));_0x7dfd38[_0x43c0('0x2e')](db[_0x43c0('0x5')][_0x43c0('0x10')](queryAgents));break;case _0x43c0('0x7'):_0x115395[_0x4a3723](_0x43c0('0x36'));_0x115395[_0x4a3723](_0x43c0('0x2b'));_0x7dfd38[_0x43c0('0x2e')](_0x34530e[_0x43c0('0x3c')]({'attributes':['id','name']}));_0x7dfd38[_0x43c0('0x2e')](_0x34530e[_0x43c0('0x3d')]({'attributes':['id',_0x43c0('0x3')]}));_0x7dfd38[_0x43c0('0x2e')](_0x34530e['getFaxQueues']({'attributes':['id',_0x43c0('0x3')]}));_0x7dfd38['push'](_0x34530e[_0x43c0('0x3e')]({'attributes':['id','name']}));_0x7dfd38[_0x43c0('0x2e')](_0x34530e[_0x43c0('0x3f')]({'attributes':['id',_0x43c0('0x3')]}));_0x7dfd38['push'](_0x34530e[_0x43c0('0x40')]({'attributes':['id',_0x43c0('0x3')]}));_0x7dfd38[_0x43c0('0x2e')](_0x34530e[_0x43c0('0x41')]({'attributes':['id','name']}));break;}return BPromise[_0x43c0('0x42')](_0x7dfd38);}})[_0x43c0('0x19')](function(_0xea2cc2){if(_0xea2cc2&&_0xea2cc2['length']){for(var _0x195961=0x0;_0x195961<_0xea2cc2[_0x43c0('0x1c')];_0x195961+=0x1){for(var _0x496f84=0x0;_0x496f84<_0xea2cc2[_0x195961][_0x43c0('0x1c')];_0x496f84+=0x1){switch(_0x195961){case 0x0:joinOrLeaveQueues(_0x115395,_0x4a3723,_0x43c0('0x43'),_0xea2cc2[_0x195961][_0x496f84]);break;case 0x1:joinOrLeaveQueues(_0x115395,_0x4a3723,'chat',_0xea2cc2[_0x195961][_0x496f84]);break;case 0x2:joinOrLeaveQueues(_0x115395,_0x4a3723,'fax',_0xea2cc2[_0x195961][_0x496f84]);break;case 0x3:joinOrLeaveQueues(_0x115395,_0x4a3723,'sms',_0xea2cc2[_0x195961][_0x496f84]);break;case 0x4:joinOrLeaveQueues(_0x115395,_0x4a3723,_0x43c0('0x44'),_0xea2cc2[_0x195961][_0x496f84]);break;case 0x5:joinOrLeaveQueues(_0x115395,_0x4a3723,_0x43c0('0x45'),_0xea2cc2[_0x195961][_0x496f84]);break;case 0x6:joinOrLeaveQueues(_0x115395,_0x4a3723,_0x43c0('0x46'),_0xea2cc2[_0x195961][_0x496f84]);break;case 0x7:if(_0x4aab88['role']!==_0x43c0('0x7'))_0x115395[_0x4a3723](util[_0x43c0('0x1a')](_0x43c0('0x47'),_0xea2cc2[_0x195961][_0x496f84][_0x43c0('0x3')]));break;case 0x8:if(_0x4aab88[_0x43c0('0x6')]!==_0x43c0('0x7'))_0x115395[_0x4a3723](util[_0x43c0('0x1a')](_0x43c0('0x48'),_0xea2cc2[_0x195961][_0x496f84][_0x43c0('0x3')]));break;case 0x9:if(_0x4aab88[_0x43c0('0x6')]!==_0x43c0('0x7'))_0x115395[_0x4a3723](util[_0x43c0('0x1a')](_0x43c0('0x49'),_0xea2cc2[_0x195961][_0x496f84][_0x43c0('0x8')],_0xea2cc2[_0x195961][_0x496f84]['name']));break;case 0xa:_0x115395[_0x4a3723](util[_0x43c0('0x1a')](_0x43c0('0x1d'),_0xea2cc2[_0x195961][_0x496f84]['name']));break;}}}}})['then'](function(){if(_0x4a3723===_0x43c0('0x4a')){var _0x54fe69=_[_0x43c0('0x16')](_0x4aab88[_0x43c0('0x21')],'id');return _0x4aab88[_0x43c0('0x4b')](_0x54fe69)['then'](function(){for(var _0x5aa2c3=0x0;_0x5aa2c3<_0x54fe69[_0x43c0('0x1c')];_0x5aa2c3+=0x1){_0xf3ff3e[_0x43c0('0x4c')](_0x43c0('0x4d'),{'ChatInteractionId':Number(_0x54fe69[_0x5aa2c3]),'UserId':Number(_0x4aab88['id'])});}});}})[_0x43c0('0x19')](function(){if(_0x4a3723===_0x43c0('0x4a')){var _0xc2fdfc=_[_0x43c0('0x16')](_0x4aab88['MailInteractions'],'id');return _0x4aab88['removeMailInteractions'](_0xc2fdfc)[_0x43c0('0x19')](function(){for(var _0x516680=0x0;_0x516680<_0xc2fdfc[_0x43c0('0x1c')];_0x516680+=0x1){_0xf3ff3e[_0x43c0('0x4c')](_0x43c0('0x4e'),{'MailInteractionId':Number(_0xc2fdfc[_0x516680]),'UserId':Number(_0x4aab88['id'])});}});}})[_0x43c0('0x19')](function(){if(_0x4a3723===_0x43c0('0x4a')){var _0x4689da=_[_0x43c0('0x16')](_0x4aab88[_0x43c0('0x25')],'id');return _0x4aab88[_0x43c0('0x4f')](_0x4689da)[_0x43c0('0x19')](function(){for(var _0x5954b5=0x0;_0x5954b5<_0x4689da[_0x43c0('0x1c')];_0x5954b5+=0x1){_0xf3ff3e[_0x43c0('0x4c')](_0x43c0('0x50'),{'FaxInteractionId':Number(_0x4689da[_0x5954b5]),'UserId':Number(_0x4aab88['id'])});}});}})[_0x43c0('0x19')](function(){if(_0x4a3723===_0x43c0('0x4a')){var _0x34344d=_[_0x43c0('0x16')](_0x4aab88[_0x43c0('0x27')],'id');return _0x4aab88[_0x43c0('0x51')](_0x34344d)[_0x43c0('0x19')](function(){for(var _0x523c25=0x0;_0x523c25<_0x34344d['length'];_0x523c25+=0x1){_0xf3ff3e[_0x43c0('0x4c')](_0x43c0('0x52'),{'SmsInteractionId':Number(_0x34344d[_0x523c25]),'UserId':Number(_0x4aab88['id'])});}});}})[_0x43c0('0x19')](function(){if(_0x4a3723===_0x43c0('0x4a')){var _0x551ed5=_['map'](_0x4aab88[_0x43c0('0x53')],'id');return _0x4aab88[_0x43c0('0x54')](_0x551ed5)[_0x43c0('0x19')](function(){for(var _0x12f98e=0x0;_0x12f98e<_0x551ed5[_0x43c0('0x1c')];_0x12f98e+=0x1){_0xf3ff3e[_0x43c0('0x4c')](_0x43c0('0x55'),{'OpenchannelInteractionId':Number(_0x551ed5[_0x12f98e]),'UserId':Number(_0x4aab88['id'])});}});}})[_0x43c0('0x19')](function(){if(_0x4a3723===_0x43c0('0x4a')){var _0x54e773=_[_0x43c0('0x16')](_0x4aab88['WhatsappInteractions'],'id');return _0x4aab88[_0x43c0('0x56')](_0x54e773)[_0x43c0('0x19')](function(){for(var _0x43d9c2=0x0;_0x43d9c2<_0x54e773[_0x43c0('0x1c')];_0x43d9c2+=0x1){_0xf3ff3e[_0x43c0('0x4c')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x54e773[_0x43d9c2]),'UserId':Number(_0x4aab88['id'])});}});}})[_0x43c0('0x57')](function(_0x27b84a){_0x115395[_0x43c0('0x58')](_0x27b84a);});}}function onDisconnect(_0x2b0545,_0x3599de){joinOrLeave(_0x2b0545,'leave',_0x3599de);}function onConnect(_0x3b174a){joinOrLeave(_0x3b174a,_0x43c0('0x59'));}exports[_0x43c0('0x5a')]=function(_0xca6361){_0xca6361['on'](_0x43c0('0x5b'),function(_0x222a93){_0x222a93[_0x43c0('0x5c')](0x0);_0x222a93[_0x43c0('0x5d')]=_0x222a93[_0x43c0('0x5e')][_0x43c0('0x5b')][_0x43c0('0x5f')]+':'+_0x222a93['request'][_0x43c0('0x5b')][_0x43c0('0x60')];_0x222a93['connectedAt']=new Date();_0x222a93['log']=function(_0x480886){console[_0x43c0('0x58')](_0x43c0('0x61')+_0x222a93[_0x43c0('0x62')][_0x43c0('0x3')]+'['+_0x222a93[_0x43c0('0x5d')]+']',_0x480886);};_0x222a93['on'](_0x43c0('0x63'),function(){onDisconnect(_0x222a93,_0xca6361);_0x222a93[_0x43c0('0x58')](_0x43c0('0x64'));});onConnect(_0x222a93);_0x222a93['log'](_0x43c0('0x65'));});};
\ No newline at end of file
+var _0x8710=['connectedAt','SocketIO\x20','nsp','CONNECTED','lodash','util','../mysqldb','./environment','name','User','agent','telephone','type','UserProfileSection','findOne','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','UserProfileResource','resourceId','then','map','role','Campaign','where','ivr','format','%s:queue:%s','Agents','length','user:%s','handshake','find','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','userProfileId','ChatQueue','FaxQueue','SmsQueues','Trunk','IvrCampaigns','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','sms','openchannel','whatsapp','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','address','remoteAddress'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x8710,0x68));var _0x0871=function(_0x45f697,_0x534ff9){_0x45f697=_0x45f697-0x0;var _0x19608a=_0x8710[_0x45f697];return _0x19608a;};'use strict';var _=require(_0x0871('0x0'));var util=require(_0x0871('0x1'));var BPromise=require('bluebird');var db=require(_0x0871('0x2'))['db'];var config=require(_0x0871('0x3'));var queryQueues={'attributes':['id',_0x0871('0x4')],'include':[{'as':'Agents','model':db[_0x0871('0x5')],'attributes':['id',_0x0871('0x4'),'role'],'raw':!![],'where':{'role':_0x0871('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x0871('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x0871('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x0871('0x4')],'where':{'role':_0x0871('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x0871('0x4'),_0x0871('0x8')],'where':{'type':'ivr'}};function getAssociatedResources(_0x111b05,_0x9a7961,_0x5e9ef){return db[_0x0871('0x9')][_0x0871('0xa')]({'where':{'name':_0x111b05,'userProfileId':_0x9a7961},'raw':!![]})['then'](function(_0x8488f2){if(_0x8488f2){if(_0x8488f2[_0x0871('0xb')]){switch(_0x111b05){case _0x0871('0xc'):case _0x0871('0xd'):case _0x0871('0xe'):case'SmsQueues':case _0x0871('0xf'):case _0x0871('0x10'):case _0x0871('0x11'):return db[_0x5e9ef][_0x0871('0x12')](queryQueues);case _0x0871('0x13'):return db[_0x5e9ef][_0x0871('0x12')](queryTelephones);case _0x0871('0x14'):return db[_0x5e9ef][_0x0871('0x12')](queryTrunks);case'IvrCampaigns':return db[_0x5e9ef]['findAll'](queryCampaigns);}}else{return db[_0x0871('0x15')][_0x0871('0x12')]({'attributes':[_0x0871('0x16')],'where':{'sectionId':_0x8488f2['id']},'raw':!![]})[_0x0871('0x17')](function(_0x153f30){if(_0x153f30){var _0x2dde49={'where':{'id':_[_0x0871('0x18')](_0x153f30,_0x0871('0x16'))},'raw':!![]};switch(_0x5e9ef){case _0x0871('0x5'):_0x2dde49['where'][_0x0871('0x19')]='telephone';break;case _0x0871('0x1a'):_0x2dde49[_0x0871('0x1b')]['type']=_0x0871('0x1c');break;}return db[_0x5e9ef][_0x0871('0x12')](_0x2dde49);}else{return[];}});}}else{return[];}})[_0x0871('0x17')](function(_0x1abdbc){return _0x1abdbc;});}function joinOrLeaveQueues(_0x4d2033,_0x4a3115,_0x401afa,_0x440ac1){_0x4d2033[_0x4a3115](util[_0x0871('0x1d')](_0x0871('0x1e'),_0x401afa,_0x440ac1[_0x0871('0x4')]));if(_0x440ac1[_0x0871('0x1f')]){for(var _0x360dd2=0x0;_0x360dd2<_0x440ac1[_0x0871('0x1f')][_0x0871('0x20')];_0x360dd2+=0x1){_0x4d2033[_0x4a3115](util[_0x0871('0x1d')](_0x0871('0x21'),_0x440ac1[_0x0871('0x1f')][_0x360dd2][_0x0871('0x4')]));}}}function joinOrLeave(_0x48f5b7,_0x292e57,_0xe92246){var _0x20ca39;if(_0x48f5b7[_0x0871('0x22')]['query']['id']){db[_0x0871('0x5')][_0x0871('0x23')]({'attributes':['id',_0x0871('0x4'),_0x0871('0x19'),'userProfileId'],'where':{'id':_0x48f5b7[_0x0871('0x22')]['query']['id']},'include':[{'model':db[_0x0871('0x24')],'as':_0x0871('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x0871('0x26')],'as':_0x0871('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x0871('0x28')],'as':_0x0871('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x0871('0x2a')],'as':_0x0871('0x2b'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x0871('0x2c'),'attributes':['id'],'raw':!![]},{'model':db[_0x0871('0x2d')],'as':_0x0871('0x2e'),'attributes':['id'],'raw':!![]}]})[_0x0871('0x17')](function(_0x35d1f9){if(_0x35d1f9){_0x20ca39=_0x35d1f9;_0x48f5b7[_0x292e57](util[_0x0871('0x1d')](_0x0871('0x21'),_0x35d1f9[_0x0871('0x4')]));var _0x3c1aab=[];switch(_0x35d1f9[_0x0871('0x19')]){case'admin':_0x48f5b7[_0x292e57](_0x0871('0x2f'));_0x48f5b7[_0x292e57](_0x0871('0x30'));if(queryQueues[_0x0871('0x31')](_0x0871('0x32'))){delete queryQueues['include'];}_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x34')][_0x0871('0x12')](queryQueues));_0x3c1aab[_0x0871('0x33')](db['ChatQueue']['findAll'](queryQueues));_0x3c1aab[_0x0871('0x33')](db['FaxQueue'][_0x0871('0x12')](queryQueues));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x35')][_0x0871('0x12')](queryQueues));_0x3c1aab['push'](db[_0x0871('0x36')][_0x0871('0x12')](queryQueues));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x37')][_0x0871('0x12')](queryQueues));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x38')][_0x0871('0x12')](queryQueues));_0x3c1aab[_0x0871('0x33')](db['User'][_0x0871('0x12')](queryTelephones));_0x3c1aab[_0x0871('0x33')](db['Trunk'][_0x0871('0x12')](queryTrunks));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x1a')][_0x0871('0x12')](queryCampaigns));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x5')][_0x0871('0x12')](queryAgents));break;case _0x0871('0x39'):_0x48f5b7[_0x292e57](_0x0871('0x2f'));_0x48f5b7[_0x292e57](_0x0871('0x30'));_0x3c1aab[_0x0871('0x33')](getAssociatedResources(_0x0871('0xc'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x34')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources(_0x0871('0xd'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x3b')));_0x3c1aab['push'](getAssociatedResources(_0x0871('0xe'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x3c')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources(_0x0871('0x3d'),_0x35d1f9['userProfileId'],_0x0871('0x35')));_0x3c1aab['push'](getAssociatedResources(_0x0871('0xf'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x36')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources('OpenchannelQueues',_0x35d1f9[_0x0871('0x3a')],_0x0871('0x37')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources('WhatsappQueues',_0x35d1f9[_0x0871('0x3a')],_0x0871('0x38')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources(_0x0871('0x13'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x5')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources('Trunks',_0x35d1f9[_0x0871('0x3a')],_0x0871('0x3e')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources(_0x0871('0x3f'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x1a')));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x5')][_0x0871('0x12')](queryAgents));break;case _0x0871('0x6'):_0x48f5b7[_0x292e57](_0x0871('0x2f'));_0x48f5b7[_0x292e57](_0x0871('0x30'));_0x3c1aab['push'](_0x35d1f9[_0x0871('0x40')]({'attributes':['id','name']}));_0x3c1aab[_0x0871('0x33')](_0x35d1f9['getChatQueues']({'attributes':['id','name']}));_0x3c1aab[_0x0871('0x33')](_0x35d1f9[_0x0871('0x41')]({'attributes':['id',_0x0871('0x4')]}));_0x3c1aab[_0x0871('0x33')](_0x35d1f9[_0x0871('0x42')]({'attributes':['id',_0x0871('0x4')]}));_0x3c1aab[_0x0871('0x33')](_0x35d1f9[_0x0871('0x43')]({'attributes':['id',_0x0871('0x4')]}));_0x3c1aab[_0x0871('0x33')](_0x35d1f9[_0x0871('0x44')]({'attributes':['id','name']}));_0x3c1aab['push'](_0x35d1f9[_0x0871('0x45')]({'attributes':['id',_0x0871('0x4')]}));break;}return BPromise[_0x0871('0x46')](_0x3c1aab);}})[_0x0871('0x17')](function(_0x5f2f41){if(_0x5f2f41&&_0x5f2f41[_0x0871('0x20')]){for(var _0x4a3253=0x0;_0x4a3253<_0x5f2f41[_0x0871('0x20')];_0x4a3253+=0x1){for(var _0x46bdf1=0x0;_0x46bdf1<_0x5f2f41[_0x4a3253]['length'];_0x46bdf1+=0x1){switch(_0x4a3253){case 0x0:joinOrLeaveQueues(_0x48f5b7,_0x292e57,_0x0871('0x47'),_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x1:joinOrLeaveQueues(_0x48f5b7,_0x292e57,_0x0871('0x48'),_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x2:joinOrLeaveQueues(_0x48f5b7,_0x292e57,'fax',_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x3:joinOrLeaveQueues(_0x48f5b7,_0x292e57,_0x0871('0x49'),_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x4:joinOrLeaveQueues(_0x48f5b7,_0x292e57,'mail',_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x5:joinOrLeaveQueues(_0x48f5b7,_0x292e57,_0x0871('0x4a'),_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x6:joinOrLeaveQueues(_0x48f5b7,_0x292e57,_0x0871('0x4b'),_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x7:if(_0x20ca39[_0x0871('0x19')]!==_0x0871('0x6'))_0x48f5b7[_0x292e57](util[_0x0871('0x1d')]('telephone:%s',_0x5f2f41[_0x4a3253][_0x46bdf1][_0x0871('0x4')]));break;case 0x8:if(_0x20ca39['role']!=='agent')_0x48f5b7[_0x292e57](util[_0x0871('0x1d')](_0x0871('0x4c'),_0x5f2f41[_0x4a3253][_0x46bdf1][_0x0871('0x4')]));break;case 0x9:if(_0x20ca39[_0x0871('0x19')]!==_0x0871('0x6'))_0x48f5b7[_0x292e57](util['format'](_0x0871('0x4d'),_0x5f2f41[_0x4a3253][_0x46bdf1][_0x0871('0x8')],_0x5f2f41[_0x4a3253][_0x46bdf1][_0x0871('0x4')]));break;case 0xa:_0x48f5b7[_0x292e57](util[_0x0871('0x1d')](_0x0871('0x21'),_0x5f2f41[_0x4a3253][_0x46bdf1][_0x0871('0x4')]));break;}}}}})[_0x0871('0x17')](function(){if(_0x292e57===_0x0871('0x4e')){var _0x445df2=_[_0x0871('0x18')](_0x20ca39[_0x0871('0x25')],'id');return _0x20ca39[_0x0871('0x4f')](_0x445df2)[_0x0871('0x17')](function(){for(var _0x46c067=0x0;_0x46c067<_0x445df2[_0x0871('0x20')];_0x46c067+=0x1){_0xe92246[_0x0871('0x50')](_0x0871('0x51'),{'ChatInteractionId':Number(_0x445df2[_0x46c067]),'UserId':Number(_0x20ca39['id'])});}});}})['then'](function(){if(_0x292e57===_0x0871('0x4e')){var _0x14db2a=_['map'](_0x20ca39[_0x0871('0x27')],'id');return _0x20ca39[_0x0871('0x52')](_0x14db2a)[_0x0871('0x17')](function(){for(var _0x3c047d=0x0;_0x3c047d<_0x14db2a[_0x0871('0x20')];_0x3c047d+=0x1){_0xe92246['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x14db2a[_0x3c047d]),'UserId':Number(_0x20ca39['id'])});}});}})['then'](function(){if(_0x292e57===_0x0871('0x4e')){var _0x3d4533=_['map'](_0x20ca39['FaxInteractions'],'id');return _0x20ca39[_0x0871('0x53')](_0x3d4533)[_0x0871('0x17')](function(){for(var _0x574f01=0x0;_0x574f01<_0x3d4533[_0x0871('0x20')];_0x574f01+=0x1){_0xe92246['emit'](_0x0871('0x54'),{'FaxInteractionId':Number(_0x3d4533[_0x574f01]),'UserId':Number(_0x20ca39['id'])});}});}})[_0x0871('0x17')](function(){if(_0x292e57===_0x0871('0x4e')){var _0x27863a=_[_0x0871('0x18')](_0x20ca39[_0x0871('0x2b')],'id');return _0x20ca39['removeSmsInteractions'](_0x27863a)['then'](function(){for(var _0x5a03ed=0x0;_0x5a03ed<_0x27863a[_0x0871('0x20')];_0x5a03ed+=0x1){_0xe92246[_0x0871('0x50')](_0x0871('0x55'),{'SmsInteractionId':Number(_0x27863a[_0x5a03ed]),'UserId':Number(_0x20ca39['id'])});}});}})['then'](function(){if(_0x292e57===_0x0871('0x4e')){var _0xcf4a8=_['map'](_0x20ca39['OpenchannelInteractions'],'id');return _0x20ca39[_0x0871('0x56')](_0xcf4a8)[_0x0871('0x17')](function(){for(var _0x230eda=0x0;_0x230eda<_0xcf4a8[_0x0871('0x20')];_0x230eda+=0x1){_0xe92246[_0x0871('0x50')](_0x0871('0x57'),{'OpenchannelInteractionId':Number(_0xcf4a8[_0x230eda]),'UserId':Number(_0x20ca39['id'])});}});}})[_0x0871('0x17')](function(){if(_0x292e57===_0x0871('0x4e')){var _0x55e715=_['map'](_0x20ca39[_0x0871('0x2e')],'id');return _0x20ca39['removeWhatsappInteractions'](_0x55e715)[_0x0871('0x17')](function(){for(var _0x346009=0x0;_0x346009<_0x55e715[_0x0871('0x20')];_0x346009+=0x1){_0xe92246[_0x0871('0x50')](_0x0871('0x58'),{'WhatsappInteractionId':Number(_0x55e715[_0x346009]),'UserId':Number(_0x20ca39['id'])});}});}})[_0x0871('0x59')](function(_0x2f96bb){_0x48f5b7[_0x0871('0x5a')](_0x2f96bb);});}}function onDisconnect(_0x562d84,_0x430af8){joinOrLeave(_0x562d84,'leave',_0x430af8);}function onConnect(_0x47a347){joinOrLeave(_0x47a347,_0x0871('0x5b'));}exports[_0x0871('0x5c')]=function(_0x564afb){_0x564afb['on'](_0x0871('0x5d'),function(_0xe3cc2e){_0xe3cc2e['setMaxListeners'](0x0);_0xe3cc2e[_0x0871('0x5e')]=_0xe3cc2e['request'][_0x0871('0x5d')][_0x0871('0x5f')]+':'+_0xe3cc2e['request'][_0x0871('0x5d')]['remotePort'];_0xe3cc2e[_0x0871('0x60')]=new Date();_0xe3cc2e[_0x0871('0x5a')]=function(_0x2d271b){console['log'](_0x0871('0x61')+_0xe3cc2e[_0x0871('0x62')][_0x0871('0x4')]+'['+_0xe3cc2e[_0x0871('0x5e')]+']',_0x2d271b);};_0xe3cc2e['on']('disconnect',function(){onDisconnect(_0xe3cc2e,_0x564afb);_0xe3cc2e[_0x0871('0x5a')]('DISCONNECTED');});onConnect(_0xe3cc2e);_0xe3cc2e[_0x0871('0x5a')](_0x0871('0x63'));});};
\ No newline at end of file
index 1e04dfe..175911f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9816=['contact','agent','AfterCreate','changed','closed','substatus','Sequelize','find','fullname','email','internal','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','client','Chat','afterCreate','newinteraction','ChatInteraction','closedinteraction','ChatMessage','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','newmessage','Whatsapp','afterUpdate','WhatsappMessage','Fax','Mail','MailInteraction','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s','error','code','catch','get','channel','motionChannel','event','direction','resolve','undefined','ContactId','sequelize','query','QueryTypes','SELECT','UserId','format','name','outgoingmessage','opened'];(function(_0x257b0e,_0x563d7e){var _0x27ac2a=function(_0x3a4bbc){while(--_0x3a4bbc){_0x257b0e['push'](_0x257b0e['shift']());}};_0x27ac2a(++_0x563d7e);}(_0x9816,0x1e7));var _0x6981=function(_0x3d7fe9,_0x123897){_0x3d7fe9=_0x3d7fe9-0x0;var _0x2c8177=_0x9816[_0x3d7fe9];return _0x2c8177;};'use strict';var util=require(_0x6981('0x0'));var db=require(_0x6981('0x1'))['db'];var jayson=require(_0x6981('0x2'));var logger=require('../logger')('triggers');var client=jayson[_0x6981('0x3')]['http']({'port':0x232a});var triggers=[{'channel':_0x6981('0x4'),'model':'ChatInteraction','event':_0x6981('0x5'),'condition':_0x6981('0x6'),'callback':afterCreate},{'channel':_0x6981('0x4'),'model':_0x6981('0x7'),'event':'afterUpdate','condition':_0x6981('0x8'),'callback':afterUpdate},{'channel':'Chat','model':_0x6981('0x9'),'event':_0x6981('0x5'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x6981('0x4'),'model':_0x6981('0xa'),'event':_0x6981('0x5'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0x6981('0xb'),'model':_0x6981('0xc'),'event':_0x6981('0x5'),'condition':_0x6981('0x6'),'callback':afterCreate},{'channel':_0x6981('0xb'),'model':_0x6981('0xc'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x6981('0xb'),'model':_0x6981('0xd'),'event':_0x6981('0x5'),'condition':_0x6981('0xe'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':'WhatsappInteraction','event':'afterCreate','condition':_0x6981('0x6'),'callback':afterCreate},{'channel':_0x6981('0xf'),'model':'WhatsappInteraction','event':_0x6981('0x10'),'condition':_0x6981('0x8'),'callback':afterUpdate},{'channel':_0x6981('0xf'),'model':_0x6981('0x11'),'event':'afterCreate','condition':_0x6981('0xe'),'callback':afterCreateMessage},{'channel':_0x6981('0x12'),'model':'FaxInteraction','event':_0x6981('0x5'),'condition':_0x6981('0x6'),'callback':afterCreate},{'channel':_0x6981('0x12'),'model':'FaxInteraction','event':_0x6981('0x10'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':'FaxMessage','event':_0x6981('0x5'),'condition':_0x6981('0xe'),'callback':afterCreateMessage},{'channel':_0x6981('0x13'),'model':'MailInteraction','event':_0x6981('0x5'),'condition':_0x6981('0x6'),'callback':afterCreate},{'channel':'Mail','model':_0x6981('0x14'),'event':_0x6981('0x10'),'condition':_0x6981('0x8'),'callback':afterUpdate},{'channel':_0x6981('0x13'),'model':'MailMessage','event':'afterCreate','condition':_0x6981('0xe'),'callback':afterCreateMessage},{'channel':_0x6981('0x15'),'model':_0x6981('0x16'),'event':_0x6981('0x5'),'condition':_0x6981('0x6'),'callback':afterCreate},{'channel':'Openchannel','model':_0x6981('0x16'),'event':_0x6981('0x10'),'condition':_0x6981('0x8'),'callback':afterUpdate},{'channel':_0x6981('0x15'),'model':_0x6981('0x17'),'event':'afterCreate','condition':_0x6981('0xe'),'callback':afterCreateMessage}];function request(_0x41c4d6){return client[_0x6981('0x18')](_0x6981('0x19'),_0x41c4d6)[_0x6981('0x1a')](function(_0x3f88b8){logger[_0x6981('0x1b')](_0x6981('0x1c'),_0x6981('0x19'),_0x3f88b8);if(_0x3f88b8[_0x6981('0x1d')]){if(_0x3f88b8[_0x6981('0x1d')][_0x6981('0x1e')]===0x1f4){logger[_0x6981('0x1d')](_0x6981('0x1c'),_0x6981('0x19'),_0x3f88b8[_0x6981('0x1d')]);}}})[_0x6981('0x1f')](function(_0x178357){logger[_0x6981('0x1d')](_0x6981('0x1c'),_0x6981('0x19'),_0x178357);});}function afterCreateMessage(_0x1e0628){return function(_0x4a0776){_0x4a0776=_0x4a0776[_0x6981('0x20')]({'plain':!![]});_0x4a0776[_0x6981('0x21')]=_0x1e0628;_0x4a0776[_0x6981('0x22')]=_0x1e0628;_0x4a0776[_0x6981('0x23')]=_0x4a0776[_0x6981('0x24')];Promise[_0x6981('0x25')]()[_0x6981('0x1a')](function(){if(typeof _0x4a0776['ContactId']===_0x6981('0x26'))return null;var _0x27724f='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4a0776[_0x6981('0x27')];return db[_0x6981('0x28')][_0x6981('0x29')](_0x27724f,{'type':db['Sequelize'][_0x6981('0x2a')][_0x6981('0x2b')],'raw':!![]});})[_0x6981('0x1a')](function(_0x2a83c9){if(_0x2a83c9){_0x4a0776['contact']=_0x2a83c9[0x0];}if(typeof _0x4a0776[_0x6981('0x2c')]==='undefined')return;return getAgent(_0x4a0776['UserId']);})['then'](function(_0x5796bd){if(_0x5796bd){_0x4a0776['interface']=util[_0x6981('0x2d')]('SIP/%s',_0x5796bd[_0x6981('0x2e')]);_0x4a0776['agent']=_0x5796bd;_0x4a0776['channel']=_0x1e0628;return request({'event':'incomingmessage','message':_0x4a0776});}else{return request({'event':_0x6981('0x2f'),'message':_0x4a0776});}})[_0x6981('0x1f')](function(_0x5a46bc){logger['error'](_0x6981('0x1c'),'AfterCreateMessage',_0x5a46bc);});};}function afterCreateOfflineMessage(_0x36401c){return function(_0x45f506){_0x45f506=_0x45f506[_0x6981('0x20')]({'plain':!![]});_0x45f506[_0x6981('0x21')]=_0x36401c;_0x45f506[_0x6981('0x22')]=_0x36401c;_0x45f506[_0x6981('0x23')]='offlineMessage';return request({'event':_0x45f506['event'],'message':_0x45f506});};}function afterCreate(_0x1feb70,_0x19dff4){return function(_0x4851e1){_0x4851e1=_0x4851e1[_0x6981('0x20')]({'plain':!![]});_0x4851e1[_0x6981('0x21')]=_0x1feb70;_0x4851e1['motionChannel']=_0x1feb70;_0x4851e1[_0x6981('0x23')]=_0x6981('0x30');Promise[_0x6981('0x25')]()[_0x6981('0x1a')](function(){var _0xe6f965='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4851e1['ContactId'];return db['sequelize'][_0x6981('0x29')](_0xe6f965,{'type':db['Sequelize'][_0x6981('0x2a')][_0x6981('0x2b')],'raw':!![]});})['then'](function(_0x102a6d){if(_0x102a6d){_0x4851e1[_0x6981('0x31')]=_0x102a6d[0x0];}if(typeof _0x4851e1[_0x6981('0x2c')]===_0x6981('0x26'))return;return getAgent(_0x4851e1[_0x6981('0x2c')]);})[_0x6981('0x1a')](function(_0x4e68b3){if(_0x4e68b3){_0x4851e1['interface']=util[_0x6981('0x2d')]('SIP/%s',_0x4e68b3[_0x6981('0x2e')]);_0x4851e1[_0x6981('0x32')]=_0x4e68b3;}return request({'event':_0x19dff4,'message':_0x4851e1});})[_0x6981('0x1f')](function(_0x1ef7dd){logger['error']('Trigger,\x20%s',_0x6981('0x33'),_0x1ef7dd);});};}function afterUpdate(_0x188cdc){return function(_0x16f245){var _0x4971a6=_0x16f245[_0x6981('0x34')](_0x6981('0x35'))&&_0x16f245[_0x6981('0x35')];var _0x864db1=_0x16f245[_0x6981('0x34')](_0x6981('0x36'));if(_0x4971a6||_0x864db1){var _0x3b6543=_0x4971a6?_0x6981('0x8'):_0x6981('0x36');var _0x35666b=_0x16f245[_0x6981('0x20')]({'plain':!![]});_0x35666b[_0x6981('0x21')]=_0x188cdc;_0x35666b[_0x6981('0x22')]=_0x188cdc;_0x35666b[_0x6981('0x23')]=_0x4971a6?'closed':_0x6981('0x36');var _0x114a1b='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x35666b['ContactId'];return db[_0x6981('0x28')][_0x6981('0x29')](_0x114a1b,{'type':db[_0x6981('0x37')][_0x6981('0x2a')][_0x6981('0x2b')],'raw':!![]})[_0x6981('0x1a')](function(_0xadcdf0){if(_0xadcdf0){_0x35666b['contact']=_0xadcdf0[0x0];}if(typeof _0x35666b[_0x6981('0x2c')]===_0x6981('0x26'))return;return getAgent(_0x35666b[_0x6981('0x2c')]);})['then'](function(_0x131f95){if(_0x131f95){_0x35666b['interface']=util[_0x6981('0x2d')]('SIP/%s',_0x131f95[_0x6981('0x2e')]);_0x35666b['agent']=_0x131f95;}return request({'event':_0x3b6543,'message':_0x35666b});})[_0x6981('0x1f')](function(_0x46d86e){logger[_0x6981('0x1d')](_0x6981('0x1c'),'AfterUpdate',_0x46d86e);});}};}function getAgent(_0x2d69b9){return db['User'][_0x6981('0x38')]({'where':{'id':_0x2d69b9},'attributes':['id',_0x6981('0x2e'),_0x6981('0x39'),_0x6981('0x3a'),_0x6981('0x3b')],'raw':!![]})[_0x6981('0x1a')](function(_0x5164bb){return _0x5164bb;});}exports['default']=function(){for(var _0x4fd38e=0x0;_0x4fd38e<triggers[_0x6981('0x3c')];_0x4fd38e+=0x1){if(db[_0x6981('0x3d')](triggers[_0x4fd38e][_0x6981('0x3e')])){db[triggers[_0x4fd38e][_0x6981('0x3e')]][_0x6981('0x3f')](triggers[_0x4fd38e][_0x6981('0x23')],triggers[_0x4fd38e][_0x6981('0x40')](triggers[_0x4fd38e]['channel'][_0x6981('0x41')](),triggers[_0x4fd38e][_0x6981('0x42')]));}}};
\ No newline at end of file
+var _0x8d25=['contact','UserId','interface','SIP/%s','name','outgoingmessage','AfterCreateMessage','offlineMessage','undefined','format','agent','AfterCreate','changed','closed','substatus','AfterUpdate','User','find','fullname','internal','default','length','hasOwnProperty','model','callback','toLowerCase','condition','../../mysqldb','jayson/promise','../logger','triggers','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','Whatsapp','WhatsappInteraction','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','EventManager','info','Trigger,\x20%s','error','code','catch','get','channel','motionChannel','event','direction','resolve','then','ContactId','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes','SELECT'];(function(_0x2344c8,_0x138928){var _0x307902=function(_0x566ac7){while(--_0x566ac7){_0x2344c8['push'](_0x2344c8['shift']());}};_0x307902(++_0x138928);}(_0x8d25,0x192));var _0x58d2=function(_0x44916a,_0x47d076){_0x44916a=_0x44916a-0x0;var _0x10499a=_0x8d25[_0x44916a];return _0x10499a;};'use strict';var util=require('util');var db=require(_0x58d2('0x0'))['db'];var jayson=require(_0x58d2('0x1'));var logger=require(_0x58d2('0x2'))(_0x58d2('0x3'));var client=jayson[_0x58d2('0x4')][_0x58d2('0x5')]({'port':0x232a});var triggers=[{'channel':_0x58d2('0x6'),'model':_0x58d2('0x7'),'event':_0x58d2('0x8'),'condition':_0x58d2('0x9'),'callback':afterCreate},{'channel':_0x58d2('0x6'),'model':'ChatInteraction','event':_0x58d2('0xa'),'condition':_0x58d2('0xb'),'callback':afterUpdate},{'channel':'Chat','model':_0x58d2('0xc'),'event':'afterCreate','condition':_0x58d2('0xd'),'callback':afterCreateMessage},{'channel':_0x58d2('0x6'),'model':_0x58d2('0xe'),'event':_0x58d2('0x8'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0x58d2('0xf'),'model':'SmsInteraction','event':_0x58d2('0x8'),'condition':_0x58d2('0x9'),'callback':afterCreate},{'channel':'Sms','model':_0x58d2('0x10'),'event':_0x58d2('0xa'),'condition':_0x58d2('0xb'),'callback':afterUpdate},{'channel':_0x58d2('0xf'),'model':'SmsMessage','event':_0x58d2('0x8'),'condition':_0x58d2('0xd'),'callback':afterCreateMessage},{'channel':_0x58d2('0x11'),'model':_0x58d2('0x12'),'event':_0x58d2('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x58d2('0x11'),'model':'WhatsappInteraction','event':_0x58d2('0xa'),'condition':_0x58d2('0xb'),'callback':afterUpdate},{'channel':'Whatsapp','model':'WhatsappMessage','event':_0x58d2('0x8'),'condition':_0x58d2('0xd'),'callback':afterCreateMessage},{'channel':_0x58d2('0x13'),'model':_0x58d2('0x14'),'event':_0x58d2('0x8'),'condition':_0x58d2('0x9'),'callback':afterCreate},{'channel':_0x58d2('0x13'),'model':_0x58d2('0x14'),'event':_0x58d2('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':_0x58d2('0x15'),'event':_0x58d2('0x8'),'condition':_0x58d2('0xd'),'callback':afterCreateMessage},{'channel':_0x58d2('0x16'),'model':_0x58d2('0x17'),'event':_0x58d2('0x8'),'condition':_0x58d2('0x9'),'callback':afterCreate},{'channel':_0x58d2('0x16'),'model':_0x58d2('0x17'),'event':'afterUpdate','condition':_0x58d2('0xb'),'callback':afterUpdate},{'channel':_0x58d2('0x16'),'model':'MailMessage','event':_0x58d2('0x8'),'condition':_0x58d2('0xd'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x58d2('0x18'),'event':_0x58d2('0x8'),'condition':_0x58d2('0x9'),'callback':afterCreate},{'channel':_0x58d2('0x19'),'model':_0x58d2('0x18'),'event':_0x58d2('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x58d2('0x19'),'model':_0x58d2('0x1a'),'event':_0x58d2('0x8'),'condition':_0x58d2('0xd'),'callback':afterCreateMessage}];function request(_0x4b73e8){return client[_0x58d2('0x1b')](_0x58d2('0x1c'),_0x4b73e8)['then'](function(_0x4a90ad){logger[_0x58d2('0x1d')](_0x58d2('0x1e'),'EventManager',_0x4a90ad);if(_0x4a90ad[_0x58d2('0x1f')]){if(_0x4a90ad['error'][_0x58d2('0x20')]===0x1f4){logger[_0x58d2('0x1f')](_0x58d2('0x1e'),_0x58d2('0x1c'),_0x4a90ad[_0x58d2('0x1f')]);}}})[_0x58d2('0x21')](function(_0x246c4f){logger[_0x58d2('0x1f')](_0x58d2('0x1e'),_0x58d2('0x1c'),_0x246c4f);});}function afterCreateMessage(_0x16cc7d){return function(_0x52c224){_0x52c224=_0x52c224[_0x58d2('0x22')]({'plain':!![]});_0x52c224[_0x58d2('0x23')]=_0x16cc7d;_0x52c224[_0x58d2('0x24')]=_0x16cc7d;_0x52c224[_0x58d2('0x25')]=_0x52c224[_0x58d2('0x26')];Promise[_0x58d2('0x27')]()[_0x58d2('0x28')](function(){if(typeof _0x52c224[_0x58d2('0x29')]==='undefined')return null;var _0x106519=_0x58d2('0x2a')+_0x52c224['ContactId'];return db[_0x58d2('0x2b')][_0x58d2('0x2c')](_0x106519,{'type':db[_0x58d2('0x2d')][_0x58d2('0x2e')][_0x58d2('0x2f')],'raw':!![]});})['then'](function(_0xbbf235){if(_0xbbf235){_0x52c224[_0x58d2('0x30')]=_0xbbf235[0x0];}if(typeof _0x52c224[_0x58d2('0x31')]==='undefined')return;return getAgent(_0x52c224[_0x58d2('0x31')]);})[_0x58d2('0x28')](function(_0x3d30a8){if(_0x3d30a8){_0x52c224[_0x58d2('0x32')]=util['format'](_0x58d2('0x33'),_0x3d30a8[_0x58d2('0x34')]);_0x52c224['agent']=_0x3d30a8;_0x52c224[_0x58d2('0x23')]=_0x16cc7d;return request({'event':'incomingmessage','message':_0x52c224});}else{return request({'event':_0x58d2('0x35'),'message':_0x52c224});}})[_0x58d2('0x21')](function(_0x1d8234){logger[_0x58d2('0x1f')](_0x58d2('0x1e'),_0x58d2('0x36'),_0x1d8234);});};}function afterCreateOfflineMessage(_0x1467a0){return function(_0x567893){_0x567893=_0x567893['get']({'plain':!![]});_0x567893['channel']=_0x1467a0;_0x567893[_0x58d2('0x24')]=_0x1467a0;_0x567893[_0x58d2('0x25')]=_0x58d2('0x37');return request({'event':_0x567893[_0x58d2('0x25')],'message':_0x567893});};}function afterCreate(_0x2e5c5c,_0x59b00b){return function(_0x2766b0){_0x2766b0=_0x2766b0[_0x58d2('0x22')]({'plain':!![]});_0x2766b0['channel']=_0x2e5c5c;_0x2766b0['motionChannel']=_0x2e5c5c;_0x2766b0[_0x58d2('0x25')]='opened';Promise[_0x58d2('0x27')]()[_0x58d2('0x28')](function(){var _0x313ab1=_0x58d2('0x2a')+_0x2766b0[_0x58d2('0x29')];return db[_0x58d2('0x2b')][_0x58d2('0x2c')](_0x313ab1,{'type':db['Sequelize'][_0x58d2('0x2e')][_0x58d2('0x2f')],'raw':!![]});})[_0x58d2('0x28')](function(_0x8c0194){if(_0x8c0194){_0x2766b0['contact']=_0x8c0194[0x0];}if(typeof _0x2766b0['UserId']===_0x58d2('0x38'))return;return getAgent(_0x2766b0[_0x58d2('0x31')]);})[_0x58d2('0x28')](function(_0x1231dd){if(_0x1231dd){_0x2766b0[_0x58d2('0x32')]=util[_0x58d2('0x39')](_0x58d2('0x33'),_0x1231dd['name']);_0x2766b0[_0x58d2('0x3a')]=_0x1231dd;}return request({'event':_0x59b00b,'message':_0x2766b0});})['catch'](function(_0x1e3364){logger[_0x58d2('0x1f')](_0x58d2('0x1e'),_0x58d2('0x3b'),_0x1e3364);});};}function afterUpdate(_0x84cb93){return function(_0x22e468){var _0x56368a=_0x22e468[_0x58d2('0x3c')](_0x58d2('0x3d'))&&_0x22e468['closed'];var _0x4ce1c6=_0x22e468[_0x58d2('0x3c')](_0x58d2('0x3e'));if(_0x56368a||_0x4ce1c6){var _0x5ad85e=_0x56368a?_0x58d2('0xb'):_0x58d2('0x3e');var _0x386fb6=_0x22e468['get']({'plain':!![]});_0x386fb6['channel']=_0x84cb93;_0x386fb6[_0x58d2('0x24')]=_0x84cb93;_0x386fb6[_0x58d2('0x25')]=_0x56368a?'closed':_0x58d2('0x3e');var _0x2259e0=_0x58d2('0x2a')+_0x386fb6[_0x58d2('0x29')];return db[_0x58d2('0x2b')][_0x58d2('0x2c')](_0x2259e0,{'type':db[_0x58d2('0x2d')][_0x58d2('0x2e')]['SELECT'],'raw':!![]})['then'](function(_0x497e9f){if(_0x497e9f){_0x386fb6[_0x58d2('0x30')]=_0x497e9f[0x0];}if(typeof _0x386fb6[_0x58d2('0x31')]===_0x58d2('0x38'))return;return getAgent(_0x386fb6['UserId']);})[_0x58d2('0x28')](function(_0x165fbb){if(_0x165fbb){_0x386fb6[_0x58d2('0x32')]=util[_0x58d2('0x39')]('SIP/%s',_0x165fbb['name']);_0x386fb6[_0x58d2('0x3a')]=_0x165fbb;}return request({'event':_0x5ad85e,'message':_0x386fb6});})[_0x58d2('0x21')](function(_0x2bf7ce){logger[_0x58d2('0x1f')]('Trigger,\x20%s',_0x58d2('0x3f'),_0x2bf7ce);});}};}function getAgent(_0x3a21b2){return db[_0x58d2('0x40')][_0x58d2('0x41')]({'where':{'id':_0x3a21b2},'attributes':['id',_0x58d2('0x34'),_0x58d2('0x42'),'email',_0x58d2('0x43')],'raw':!![]})[_0x58d2('0x28')](function(_0x37aebb){return _0x37aebb;});}exports[_0x58d2('0x44')]=function(){for(var _0x5378bc=0x0;_0x5378bc<triggers[_0x58d2('0x45')];_0x5378bc+=0x1){if(db[_0x58d2('0x46')](triggers[_0x5378bc][_0x58d2('0x47')])){db[triggers[_0x5378bc][_0x58d2('0x47')]]['hook'](triggers[_0x5378bc][_0x58d2('0x25')],triggers[_0x5378bc][_0x58d2('0x48')](triggers[_0x5378bc][_0x58d2('0x23')][_0x58d2('0x49')](),triggers[_0x5378bc][_0x58d2('0x4a')]));}}};
\ No newline at end of file
index ffc8f57..e1faeda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d4=['catch','lodash','bluebird','./license/util','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','agent','User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached'];(function(_0x207057,_0x23081d){var _0x1e9a2d=function(_0x4d5c4a){while(--_0x4d5c4a){_0x207057['push'](_0x207057['shift']());}};_0x1e9a2d(++_0x23081d);}(_0x85d4,0x12d));var _0x485d=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x85d4[_0x1694f5];return _0x5b4321;};'use strict';var _=require(_0x485d('0x0'));var BPromise=require(_0x485d('0x1'));var db=require('../mysqldb')['db'];var util=require(_0x485d('0x2'));var channels=['voice','mail',_0x485d('0x3'),_0x485d('0x4'),_0x485d('0x5'),_0x485d('0x6'),_0x485d('0x7')];exports[_0x485d('0x8')]=function(){return channels;};exports[_0x485d('0x9')]=function(_0x44507f){_0x44507f=_0x44507f[_0x485d('0xa')]();return _[_0x485d('0xb')](channels,_0x44507f);};exports[_0x485d('0xc')]=function(_0x2713fe,_0x133f9e,_0x8ff355,_0xece4ce){var _0x44f25f={'loginAttempts':_0x133f9e,'blocked':_0x8ff355};if(!_[_0x485d('0xd')](_0xece4ce)){_0x44f25f[_0x485d('0xe')]=_0xece4ce;}return _0x2713fe[_0x485d('0xf')](_0x44f25f);};exports[_0x485d('0x10')]=function(_0x51ec6d){return new BPromise(function(_0xa91511,_0x339087){var _0x439603=0x0;if(_0x51ec6d[_0x485d('0x11')]!==_0x485d('0x12')){_0xa91511(_0x51ec6d);}db[_0x485d('0x13')][_0x485d('0x14')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x51ec6d['id']}}})[_0x485d('0x15')](function(_0x26b546){_0x439603=_0x26b546;return util[_0x485d('0x10')]();})[_0x485d('0x15')](function(_0x14433e){if(_0x14433e&&_0x14433e['agents']&&_0x439603>=_0x14433e[_0x485d('0x16')]){throw Error(_0x485d('0x17'));}_0xa91511(_0x51ec6d);})[_0x485d('0x18')](function(_0x26e018){_0x339087(_0x26e018);});});};
\ No newline at end of file
+var _0x367d=['toLowerCase','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','agent','User','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','./license/util','voice','mail','chat','sms','whatsapp','openchannel','getChannels','isValidChannel'];(function(_0x258530,_0xbf9d9b){var _0x4dd0c8=function(_0x23d58c){while(--_0x23d58c){_0x258530['push'](_0x258530['shift']());}};_0x4dd0c8(++_0xbf9d9b);}(_0x367d,0xe9));var _0xd367=function(_0x5187a9,_0x265a3f){_0x5187a9=_0x5187a9-0x0;var _0x483672=_0x367d[_0x5187a9];return _0x483672;};'use strict';var _=require('lodash');var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var util=require(_0xd367('0x0'));var channels=[_0xd367('0x1'),_0xd367('0x2'),_0xd367('0x3'),'fax',_0xd367('0x4'),_0xd367('0x5'),_0xd367('0x6')];exports[_0xd367('0x7')]=function(){return channels;};exports[_0xd367('0x8')]=function(_0xa2cf49){_0xa2cf49=_0xa2cf49[_0xd367('0x9')]();return _['includes'](channels,_0xa2cf49);};exports[_0xd367('0xa')]=function(_0x17ea83,_0x460287,_0x42fded,_0x5b2dec){var _0x237a4e={'loginAttempts':_0x460287,'blocked':_0x42fded};if(!_[_0xd367('0xb')](_0x5b2dec)){_0x237a4e[_0xd367('0xc')]=_0x5b2dec;}return _0x17ea83[_0xd367('0xd')](_0x237a4e);};exports[_0xd367('0xe')]=function(_0x1e8307){return new BPromise(function(_0x34c20c,_0x3ed0d3){var _0xcfdc13=0x0;if(_0x1e8307[_0xd367('0xf')]!==_0xd367('0x10')){_0x34c20c(_0x1e8307);}db[_0xd367('0x11')]['count']({'where':{'role':_0xd367('0x10'),'online':!![],'id':{'$ne':_0x1e8307['id']}}})[_0xd367('0x12')](function(_0x12c1d6){_0xcfdc13=_0x12c1d6;return util[_0xd367('0xe')]();})[_0xd367('0x12')](function(_0x4c5cc7){if(_0x4c5cc7&&_0x4c5cc7['agents']&&_0xcfdc13>=_0x4c5cc7[_0xd367('0x13')]){throw Error(_0xd367('0x14'));}_0x34c20c(_0x1e8307);})[_0xd367('0x15')](function(_0x1feafb){_0x3ed0d3(_0x1feafb);});});};
\ No newline at end of file
index 4336a2e..bff97fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc0=['name','inherits','Bad\x20Request','Entity\x20not\x20found','Out\x20Of\x20Interval','code','details','error','stack','status','send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error'];(function(_0x4e7e31,_0x4018ba){var _0x56fcca=function(_0x1d6e67){while(--_0x1d6e67){_0x4e7e31['push'](_0x4e7e31['shift']());}};_0x56fcca(++_0x4018ba);}(_0x6dc0,0xb6));var _0x06dc=function(_0x43371b,_0x1cb4cf){_0x43371b=_0x43371b-0x0;var _0x19cd26=_0x6dc0[_0x43371b];return _0x19cd26;};'use strict';var util=require(_0x06dc('0x0'));var logger=require(_0x06dc('0x1'))(_0x06dc('0x2'));var APIError=function(_0x4aec20,_0x2277fa){this[_0x06dc('0x3')]=_0x4aec20||_0x06dc('0x4');this[_0x06dc('0x5')]=_0x2277fa||'Error';util[_0x06dc('0x6')](APIError,Error);};var APIBadRequestError=function(_0x30437f){this['message']=_0x30437f||_0x06dc('0x7');this['name']=_0x06dc('0x7');util[_0x06dc('0x6')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x14c15b){this[_0x06dc('0x3')]=_0x14c15b||_0x06dc('0x8');this['name']='Not\x20Found';util['inherits'](APINotFoundError,APIError);};var APIOutOfIntervalError=function(_0x128ea7){this[_0x06dc('0x3')]=_0x128ea7||'Message\x20sent\x20outside\x20a\x20valid\x20interval';this[_0x06dc('0x5')]=_0x06dc('0x9');this[_0x06dc('0xa')]=0x193;this[_0x06dc('0xb')]={'type':'OutOfInterval'};util[_0x06dc('0x6')](APIOutOfIntervalError,APIError);};function getStatusCode(_0x2f6fb2){switch(_0x2f6fb2){case'Bad\x20Request':return 0x190;case'Forbidden','Out\x20Of\x20Interval':return 0x193;case'Not\x20Found':return 0x194;default:return 0x1f4;}}function getCustomStatusMessage(_0x1888ed){if(_0x1888ed==='Out\x20Of\x20Interval')return _0x1888ed;return null;}function handleError(_0x57d3e3){return function(_0x4874ce){logger[_0x06dc('0xc')](_0x4874ce[_0x06dc('0xd')]);var _0x165d1e=getStatusCode(_0x4874ce['name']);var _0x183302=getCustomStatusMessage(_0x4874ce[_0x06dc('0x5')]);if(_0x4874ce[_0x06dc('0x5')]){delete _0x4874ce[_0x06dc('0x5')];}if(_0x183302){_0x57d3e3['statusMessage']=_0x183302;}return _0x57d3e3[_0x06dc('0xe')](_0x165d1e)[_0x06dc('0xf')](_0x4874ce);};}module[_0x06dc('0x10')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'APIOutOfIntervalError':APIOutOfIntervalError,'handleError':handleError};
\ No newline at end of file
+var _0xc4aa=['stack','statusMessage','status','exports','util','../config/logger','api','message','inherits','Bad\x20Request','name','Not\x20Found','Message\x20sent\x20outside\x20a\x20valid\x20interval','Out\x20Of\x20Interval','error'];(function(_0xafebd3,_0x304588){var _0x3e06a7=function(_0x13bb3c){while(--_0x13bb3c){_0xafebd3['push'](_0xafebd3['shift']());}};_0x3e06a7(++_0x304588);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xc4aa[_0x1caf6a];return _0x1bf493;};'use strict';var util=require(_0xac4a('0x0'));var logger=require(_0xac4a('0x1'))(_0xac4a('0x2'));var APIError=function(_0x351dd5,_0x275161){this[_0xac4a('0x3')]=_0x351dd5||'Internal\x20Server\x20Error';this['name']=_0x275161||'Error';util[_0xac4a('0x4')](APIError,Error);};var APIBadRequestError=function(_0x15b967){this[_0xac4a('0x3')]=_0x15b967||_0xac4a('0x5');this[_0xac4a('0x6')]=_0xac4a('0x5');util[_0xac4a('0x4')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x10525b){this['message']=_0x10525b||'Entity\x20not\x20found';this[_0xac4a('0x6')]=_0xac4a('0x7');util[_0xac4a('0x4')](APINotFoundError,APIError);};var APIOutOfIntervalError=function(_0x4f4146){this[_0xac4a('0x3')]=_0x4f4146||_0xac4a('0x8');this[_0xac4a('0x6')]='Out\x20Of\x20Interval';util[_0xac4a('0x4')](APIOutOfIntervalError,APIError);};function getStatusCode(_0x488e3c){switch(_0x488e3c){case _0xac4a('0x5'):return 0x190;case'Forbidden',_0xac4a('0x9'):return 0x193;case _0xac4a('0x7'):return 0x194;default:return 0x1f4;}}function getCustomStatusMessage(_0x24291d){if(_0x24291d==='Out\x20Of\x20Interval')return _0x24291d;return null;}function handleError(_0x21a79){return function(_0x68424a){logger[_0xac4a('0xa')](_0x68424a[_0xac4a('0xb')]);var _0x1b4313=getStatusCode(_0x68424a[_0xac4a('0x6')]);var _0x34bc01=getCustomStatusMessage(_0x68424a[_0xac4a('0x6')]);if(_0x68424a[_0xac4a('0x6')])delete _0x68424a[_0xac4a('0x6')];if(_0x34bc01)_0x21a79[_0xac4a('0xc')]=_0x34bc01;return _0x21a79[_0xac4a('0xd')](_0x1b4313)['send'](_0x68424a);};}module[_0xac4a('0xe')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APIOutOfIntervalError':APIOutOfIntervalError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 5d75f44..d262ce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7f1=['status','json','send','404'];(function(_0x37f0f5,_0xcc3e59){var _0x42932f=function(_0x41f229){while(--_0x41f229){_0x37f0f5['push'](_0x37f0f5['shift']());}};_0x42932f(++_0xcc3e59);}(_0xb7f1,0xa3));var _0x1b7f=function(_0xfbc535,_0x5229c3){_0xfbc535=_0xfbc535-0x0;var _0x359ccb=_0xb7f1[_0xfbc535];return _0x359ccb;};'use strict';module['exports'][0x194]=function pageNotFound(_0x490829,_0x2b1613){var _0x17fa45=_0x1b7f('0x0');var _0x52aaf0=0x194;var _0x340fed={'status':_0x52aaf0};_0x2b1613['status'](_0x340fed['status']);_0x2b1613['render'](_0x17fa45,{},function(_0x534ebb,_0x4c49e5){if(_0x534ebb){return _0x2b1613[_0x1b7f('0x1')](_0x340fed['status'])[_0x1b7f('0x2')](_0x340fed);}_0x2b1613[_0x1b7f('0x3')](_0x4c49e5);});};
\ No newline at end of file
+var _0xf5ab=['404','render','status','exports'];(function(_0x915a4c,_0x4ef567){var _0x1d0280=function(_0xb47f60){while(--_0xb47f60){_0x915a4c['push'](_0x915a4c['shift']());}};_0x1d0280(++_0x4ef567);}(_0xf5ab,0x117));var _0xbf5a=function(_0x488e29,_0x19a611){_0x488e29=_0x488e29-0x0;var _0x278d12=_0xf5ab[_0x488e29];return _0x278d12;};'use strict';module[_0xbf5a('0x0')][0x194]=function pageNotFound(_0xa4a39d,_0x59e500){var _0x325b66=_0xbf5a('0x1');var _0x1b90a3=0x194;var _0x14ac9e={'status':_0x1b90a3};_0x59e500['status'](_0x14ac9e['status']);_0x59e500[_0xbf5a('0x2')](_0x325b66,{},function(_0x467b58,_0x118fb4){if(_0x467b58){return _0x59e500['status'](_0x14ac9e[_0xbf5a('0x3')])['json'](_0x14ac9e);}_0x59e500['send'](_0x118fb4);});};
\ No newline at end of file
index 9587eec..3128dca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','userSetting','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueue','WhatsappQueues','CmList','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','Interval','MailQueueReport','Dashboard','CannedAnswer','FaxAccountId','Exntensions','TagId','FaxInteractionId','Account','Owner','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmContactId','HopperHistories','CmCompany','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','OneAll','OneAny','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','CmContactHasItem','ItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','AnalyticCustomReport','Fields','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','Subject','SubjectId','Description','Field','SugarcrmField','Descriptions','VariableId','DeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowField','ToId','JscriptyQuestionReport','JscriptyProject','ProjectId','MailQueues','OpenchannelQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','FromSmsAccountId','CmCustomField','CustomFields','voice_queues_has_cm_lists','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','UserSetting','user','../config/environment','sequelize','lodash','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','defaultsDeep','mysql','username','password','options','database','sequelizeHistory','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject'];(function(_0x47b15f,_0x103e93){var _0x55bf25=function(_0x51fe7f){while(--_0x51fe7f){_0x47b15f['push'](_0x47b15f['shift']());}};_0x55bf25(++_0x103e93);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'use strict';var config=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x0a9e('0x1')]=_['defaultsDeep'](config[_0x0a9e('0x1')],{'database':_0x0a9e('0x3'),'username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':_0x0a9e('0x9'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_[_0x0a9e('0xa')](config['sequelizeHistory'],{'database':'motion2','username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':_0x0a9e('0xb'),'dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x0a9e('0x1')][_0x0a9e('0xc')],config[_0x0a9e('0x1')][_0x0a9e('0xd')],config[_0x0a9e('0x1')][_0x0a9e('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x0a9e('0xf')],config[_0x0a9e('0x10')][_0x0a9e('0xc')],config[_0x0a9e('0x10')][_0x0a9e('0xd')],config[_0x0a9e('0x10')]['options'])};db[_0x0a9e('0x11')]=db['sequelize'][_0x0a9e('0x12')]('../api/user/user.model');db[_0x0a9e('0x13')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x14'));db['VoiceContext']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x15'));db[_0x0a9e('0x16')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x17'));db[_0x0a9e('0x18')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x19'));db[_0x0a9e('0x1a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x1b'));db['VoiceRecording']=db[_0x0a9e('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0a9e('0x1c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1d'));db['VoiceMail']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1e'));db[_0x0a9e('0x1f')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x20'));db['VoiceCallReport']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x21'));db[_0x0a9e('0x22')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x23'));db['VoiceAgentReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x24'));db[_0x0a9e('0x25')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x26'));db[_0x0a9e('0x27')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/memberReport/memberReport.model');db[_0x0a9e('0x28')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x29'));db['VoiceTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2a'));db[_0x0a9e('0x2b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2c'));db[_0x0a9e('0x2d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x2e'));db['UserChatQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2f'));db[_0x0a9e('0x30')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x31'));db[_0x0a9e('0x32')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x33'));db[_0x0a9e('0x34')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0a9e('0x35')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x36'));db[_0x0a9e('0x37')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x38'));db[_0x0a9e('0x39')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x3a'));db[_0x0a9e('0x3b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailAccount/mailAccount.model');db[_0x0a9e('0x3c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailQueue/mailQueue.model');db[_0x0a9e('0x3d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0x0a9e('0x3e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x3f'));db['MailApplication']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x40'));db['MailQueueReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x41'));db['Dashboard']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x42'));db[_0x0a9e('0x43')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x44'));db[_0x0a9e('0x45')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x46'));db[_0x0a9e('0x47')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x48'));db['FaxInteraction']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x49'));db[_0x0a9e('0x4a')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4b'));db[_0x0a9e('0x4c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4d'));db[_0x0a9e('0x4e')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x4f'));db[_0x0a9e('0x50')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x51'));db[_0x0a9e('0x52')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/smsApplication/smsApplication.model');db[_0x0a9e('0x53')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x54'));db[_0x0a9e('0x55')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x56'));db[_0x0a9e('0x57')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x58'));db[_0x0a9e('0x59')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x5a'));db[_0x0a9e('0x5b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5c'));db[_0x0a9e('0x5d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x0a9e('0x5e')]=db[_0x0a9e('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5f'));db[_0x0a9e('0x60')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x61'));db[_0x0a9e('0x62')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a9e('0x63')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatApplication/chatApplication.model');db[_0x0a9e('0x64')]=db[_0x0a9e('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x0a9e('0x65')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatMessage/chatMessage.model');db[_0x0a9e('0x66')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0a9e('0x67')]=db[_0x0a9e('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x0a9e('0x68')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x69'));db['ChatProactiveAction']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x6a'));db['CmCompany']=db['sequelize']['import'](_0x0a9e('0x6b'));db['CmContact']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6c'));db[_0x0a9e('0x6d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6e'));db[_0x0a9e('0x6f')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x70'));db[_0x0a9e('0x71')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x72'));db['CmHopperHistory']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x0a9e('0x73')]=db['sequelize'][_0x0a9e('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x0a9e('0x12')]('../api/cmCustomField/cmCustomField.model');db[_0x0a9e('0x74')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x75'));db[_0x0a9e('0x76')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x77'));db['CannedAnswer']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x78'));db['Disposition']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x79'));db[_0x0a9e('0x7a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x7b'));db['Interval']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x7c'));db[_0x0a9e('0x7d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x7e'));db[_0x0a9e('0x7f')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x80'));db['VoiceQueuesLog']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x81'));db[_0x0a9e('0x82')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x83'));db[_0x0a9e('0x84')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x85'));db[_0x0a9e('0x86')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x87'));db[_0x0a9e('0x88')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x89'));db['CmContactHasItem']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8a'));db['CmHopperAdditionalPhone']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a9e('0x8b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8c'));db[_0x0a9e('0x8d')]=db['sequelize']['import']('../api/trigger/trigger.model');db[_0x0a9e('0x8e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8f'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['IntegrationReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x92'));db['AnalyticCustomReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x93'));db[_0x0a9e('0x94')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x95'));db[_0x0a9e('0x96')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x97'));db[_0x0a9e('0x98')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/analyticMetric/analyticMetric.model');db[_0x0a9e('0x99')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9a'));db['AnalyticTreeReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9b'));db[_0x0a9e('0x9c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9d'));db[_0x0a9e('0x9e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9f'));db[_0x0a9e('0xa0')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSalesforceField/intSalesforceField.model');db[_0x0a9e('0xa1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0a9e('0xa2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa3'));db['SugarcrmField']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa4'));db['DeskAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xa5'));db[_0x0a9e('0xa6')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa7'));db[_0x0a9e('0xa8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa9'));db[_0x0a9e('0xaa')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xab'));db[_0x0a9e('0xac')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xad'));db[_0x0a9e('0xae')]=db['sequelize'][_0x0a9e('0x12')]('../api/intZohoField/intZohoField.model');db[_0x0a9e('0xaf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb0'));db['ZendeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb1'));db[_0x0a9e('0xb2')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb3'));db['FreshdeskAccount']=db['sequelize'][_0x0a9e('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb4'));db[_0x0a9e('0xb5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb6'));db['VtigerAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xb7'));db[_0x0a9e('0xb8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x0a9e('0xb9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0x0a9e('0xba')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbb'));db[_0x0a9e('0xbc')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbd'));db['ServicenowField']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intServicenowField/intServicenowField.model');db[_0x0a9e('0xbe')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x0a9e('0xbf')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xc0'));db[_0x0a9e('0xc1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc2'));db[_0x0a9e('0xc3')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xc4'));db[_0x0a9e('0xc5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc6'));db[_0x0a9e('0xc7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc8'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['Network']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc9'));db[_0x0a9e('0xca')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcb'));db[_0x0a9e('0xcc')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x0a9e('0xcd')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xce'));db['JscriptyQuestionReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcf'));db[_0x0a9e('0xd0')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xd1'));db[_0x0a9e('0xd2')]=db['sequelize']['import'](_0x0a9e('0xd3'));db[_0x0a9e('0xd4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd5'));db[_0x0a9e('0xd6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd7'));db['JscriptyProject']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xd8'));db[_0x0a9e('0xd9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xda'));db['SquareOdbc']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xdb'));db[_0x0a9e('0xdc')]=db[_0x0a9e('0x1')]['import']('../api/squareProject/squareProject.model');db[_0x0a9e('0xdd')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xde'));db[_0x0a9e('0xdf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe0'));db['Team']=db['sequelize'][_0x0a9e('0x12')]('../api/team/team.model');db[_0x0a9e('0xe1')]=db['sequelize'][_0x0a9e('0x12')]('../api/license/license.model');db['Campaign']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/campaign/campaign.model');db[_0x0a9e('0xe2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe3'));db[_0x0a9e('0xe4')]=db['sequelize']['import'](_0x0a9e('0xe5'));db[_0x0a9e('0xe6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe7'));db['MailTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0a9e('0xe8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe9'));db[_0x0a9e('0xea')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xeb'));db[_0x0a9e('0xec')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xed'));db[_0x0a9e('0xee')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xef'));db['CmList']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf0'));db[_0x0a9e('0xf1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0x0a9e('0xf2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfile/userProfile.model');db[_0x0a9e('0xf3')]=db['sequelize'][_0x0a9e('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x0a9e('0xf4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x0a9e('0xf5')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf6'));db[_0x0a9e('0xf7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xf8'));db[_0x0a9e('0xf9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfa'));db[_0x0a9e('0xfb')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfc'));db[_0x0a9e('0xfd')]=db[_0x0a9e('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0a9e('0xfe')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xff'));db['WhatsappTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x100'));db[_0x0a9e('0x101')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x102'));db[_0x0a9e('0x103')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x104'));db[_0x0a9e('0x105')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x106'));db[_0x0a9e('0x107')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x108'));db[_0x0a9e('0x109')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x10a'));db['UserSetting']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/user-setting/user-setting.model');db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db[_0x0a9e('0x10c')],{'as':'VoiceMail','onDelete':'cascade','foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db['UserSetting'],{'as':_0x0a9e('0x10d'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x111')],{'as':_0x0a9e('0x112'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x113'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x117'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x118'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x11a'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xfb')],{'as':_0x0a9e('0x11e'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xf5')],{'as':_0x0a9e('0x11f'),'foreignKey':_0x0a9e('0x120')});db[_0x0a9e('0x11')]['belongsTo'](db[_0x0a9e('0xf2')],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x68')],{'as':_0x0a9e('0x122'),'through':_0x0a9e('0x123')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x125'),'through':_0x0a9e('0x126')});db[_0x0a9e('0x11')]['belongsToMany'](db['CmList'],{'as':_0x0a9e('0x127'),'through':_0x0a9e('0x128')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x12a')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'through':_0x0a9e('0x12b')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x12c'),'through':_0x0a9e('0x12d')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x53')],{'as':'SmsInteractions','through':_0x0a9e('0x12e')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'as':_0x0a9e('0x118'),'through':_0x0a9e('0x12f')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0xfb')],{'as':'WhatsappInteractions','through':_0x0a9e('0x130')});db['User'][_0x0a9e('0x121')](db['VoiceQueue'],{'as':_0x0a9e('0x131'),'through':_0x0a9e('0x2d'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0xf1')],{'as':_0x0a9e('0x132'),'through':_0x0a9e('0x109'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x3c')],{'as':'MailQueues','through':_0x0a9e('0x30'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x133'),'through':_0x0a9e('0x134'),'required':![],'hooks':!![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x4c')],{'as':_0x0a9e('0x135'),'through':_0x0a9e('0x32'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'as':_0x0a9e('0x136'),'through':_0x0a9e('0x34'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x137')],{'as':'OpenchannelQueues','through':_0x0a9e('0x35'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'as':_0x0a9e('0x138'),'through':_0x0a9e('0x37'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'through':_0x0a9e('0x128')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x13a'),'through':_0x0a9e('0x13b')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x45')],{'as':'FaxAccounts','through':_0x0a9e('0x13c')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x13d'),'through':_0x0a9e('0x13e')});db[_0x0a9e('0x11')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x0a9e('0x13f'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x141'),'through':_0x0a9e('0x142')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x143'),'through':_0x0a9e('0x144')});db[_0x0a9e('0x13')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':'SpiedAgents','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x145')});db[_0x0a9e('0x146')]['hasMany'](db[_0x0a9e('0x16')],{'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x16')][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x147'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x18')][_0x0a9e('0x121')](db[_0x0a9e('0x84')],{'as':_0x0a9e('0x148'),'through':_0x0a9e('0x149')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x14a'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db['CmHopper'],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'VoiceQueueId'});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x116')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db['CmHopperBlack'],{'as':_0x0a9e('0x14d'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':_0x0a9e('0x14e'),'foreignKey':_0x0a9e('0x14b')});db['VoiceQueue']['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a')][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':_0x0a9e('0x151'),'foreignKey':_0x0a9e('0x152')});db['VoiceQueue'][_0x0a9e('0x150')](db['Interval'],{'as':'Interval','foreignKey':_0x0a9e('0x153')});db['VoiceQueue'][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db['VoiceQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x127'),'through':'voice_queues_has_cm_lists'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'as':_0x0a9e('0x155'),'through':_0x0a9e('0x105')});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x157')});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x1c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x10c')]['hasMany'](db['VoiceMailMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'mailboxuser','sourceKey':_0x0a9e('0x159')});db[_0x0a9e('0x1f')][_0x0a9e('0x150')](db[_0x0a9e('0x10c')],{'foreignKey':_0x0a9e('0x15a'),'targetKey':_0x0a9e('0x159')});db[_0x0a9e('0x15b')][_0x0a9e('0x110')](db[_0x0a9e('0x25')],{'as':_0x0a9e('0x15c'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')]['hasMany'](db[_0x0a9e('0x15e')],{'as':_0x0a9e('0x15f'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x39')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':'CloudProvider','foreignKey':_0x0a9e('0x162'),'onDelete':'restrict'});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':_0x0a9e('0x103'),'foreignKey':_0x0a9e('0x162'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x3b')][_0x0a9e('0x10b')](db[_0x0a9e('0x39')],{'as':_0x0a9e('0x165'),'onDelete':_0x0a9e('0x10e')});db['MailAccount']['hasOne'](db[_0x0a9e('0x163')],{'as':_0x0a9e('0x166'),'onDelete':'cascade'});db['MailAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'MailAccountId','onDelete':_0x0a9e('0x10e')});db['MailAccount'][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':'MailAccountId'});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x3e')],{'as':'Messages','foreignKey':_0x0a9e('0x161')});db['MailAccount']['hasMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x161'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x8b')],{'as':_0x0a9e('0x8b'),'foreignKey':_0x0a9e('0x16e')});db[_0x0a9e('0x3b')]['belongsTo'](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x3b')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x0a9e('0x13e')});db['MailQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x30')});db[_0x0a9e('0x3c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x11c')]['hasMany'](db[_0x0a9e('0x3e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':'MailInteractionId'});db[_0x0a9e('0x11c')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x11c')]['belongsTo'](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11c')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12b'),'foreignKey':_0x0a9e('0x177')});db[_0x0a9e('0x3e')]['hasMany'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0x178'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':'User'});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x179'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x60')],{'as':'ChatWebsite','foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')]['belongsTo'](db[_0x0a9e('0x3b')],{'onDelete':_0x0a9e('0x164')});db['MailApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db['MailQueueReport']['belongsTo'](db['MailAccount'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':_0x0a9e('0x16d')});db['MailQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailInteraction'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailMessage'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{});db[_0x0a9e('0x17d')]['hasMany'](db[_0x0a9e('0x43')],{'as':'Items','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')]['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':'Answers','foreignKey':_0x0a9e('0x17f')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x147'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x180'),'onDelete':'cascade'});db[_0x0a9e('0x45')]['hasMany'](db['FaxMessage'],{'as':_0x0a9e('0x158')});db['FaxAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':'Trunk'});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a9e('0x45')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_fax_accounts'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'restrict'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x4c')],{'onDelete':'restrict'});db[_0x0a9e('0x47')]['belongsTo'](db[_0x0a9e('0x45')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['FaxInteraction'][_0x0a9e('0x110')](db[_0x0a9e('0x4a')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':'fax_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x185'),'as':'ThroughTags'});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12d'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x11')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x179'),'foreignKey':'FaxInteractionId'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':'Contact'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':'Account','foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db['User'],{'as':'Agents','through':_0x0a9e('0x32')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x187'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['FaxAccount'],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxInteraction'],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x4a')],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxQueue'],{});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x188'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db['SmsMessage'],{'as':_0x0a9e('0x158'),'foreignKey':_0x0a9e('0x188')});db['SmsAccount']['hasMany'](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x147'),'foreignKey':'SmsAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x50')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x142')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db['SmsApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{'onDelete':_0x0a9e('0x164')});db['SmsApplication']['belongsTo'](db[_0x0a9e('0x50')],{'onDelete':'restrict'});db[_0x0a9e('0x52')]['belongsTo'](db['Interval'],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x53')][_0x0a9e('0x110')](db[_0x0a9e('0x55')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x189')});db['SmsInteraction']['belongsTo'](db[_0x0a9e('0x50')],{'as':'Account','foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'sms_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x18a'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x53')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Users','through':_0x0a9e('0x12e'),'foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x55')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x57')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x34'),'foreignKey':_0x0a9e('0x18b')});db[_0x0a9e('0x57')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x59')]['hasMany'](db['Disposition'],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x59')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','foreignKey':_0x0a9e('0x18d')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5b')],{'as':'Applications','foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x59')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x59')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x5b')]['belongsTo'](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0x0a9e('0x18e')});db['OpenchannelApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db['OpenchannelApplication']['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x5d')][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x18f')});db[_0x0a9e('0x5d')]['belongsTo'](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db['OpenchannelInteraction'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x5d')][_0x0a9e('0x150')](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x175')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':'user_has_openchannel_interactions','foreignKey':_0x0a9e('0x18f')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0x5d')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x179'),'foreignKey':'OpenchannelInteractionId'});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x35'),'foreignKey':_0x0a9e('0x18e')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x155')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x17a')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x191')],{'as':_0x0a9e('0x192')});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x63')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x65')],{'as':_0x0a9e('0x158')});db['ChatWebsite'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x60')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db['ChatWebsite'][_0x0a9e('0x150')](db['MailAccount'],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db['ChatWebsite'][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db['ChatWebsite'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x13b')});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelAccount'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x5d')],{});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db['OpenchannelMessage'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{});db['ChatApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x193'),'foreignKey':'UserId','onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x194'),'foreignKey':_0x0a9e('0x195'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':_0x0a9e('0x17a'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x64')][_0x0a9e('0x110')](db['ChatMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x64')]['belongsTo'](db['User'],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x199'),'foreignKey':_0x0a9e('0x197')});db['ChatMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x66')][_0x0a9e('0x110')](db['Attachment'],{'as':_0x0a9e('0x178'),'foreignKey':_0x0a9e('0x19a'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0x66')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x0a9e('0x67')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0x0a9e('0x67')]['belongsToMany'](db['Team'],{'through':_0x0a9e('0x19b'),'as':'Teams'});db[_0x0a9e('0x68')][_0x0a9e('0x110')](db[_0x0a9e('0xcc')],{'as':'Messages','foreignKey':_0x0a9e('0x19c'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x68')]['belongsToMany'](db['User'],{'as':_0x0a9e('0x14a'),'through':_0x0a9e('0x123')});db[_0x0a9e('0x191')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x0a9e('0x110')](db[_0x0a9e('0x124')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact']['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x0a9e('0x19d')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':'HopperFinals','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':'JscriptySessions','foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db['MailInteraction'],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x172'),'onDelete':'restrict'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x19f')],{'as':_0x0a9e('0x1a0'),'foreignKey':'CompanyId'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':'cascade'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':'cm_user_has_contacts'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'as':_0x0a9e('0x174'),'through':_0x0a9e('0x1a1')});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1a1'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x6d')][_0x0a9e('0x110')](db[_0x0a9e('0x1a2')],{'as':_0x0a9e('0x1a3'),'foreignKey':_0x0a9e('0x1a4')});db['CmHopper'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x0a9e('0x150')](db['User'],{'as':'Agent','foreignKey':'UserId'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':_0x0a9e('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':'CampaignId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x1a6')});db['CmHopperBlack'][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172'),'onDelete':'cascade'});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':'Queue','foreignKey':_0x0a9e('0x14b'),'onDelete':_0x0a9e('0x10e')});db['CmHopperBlack'][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':_0x0a9e('0x1a7'),'onDelete':'cascade'});db[_0x0a9e('0x76')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1a8'),'singular':_0x0a9e('0x1a9')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x76')]['hasMany'](db[_0x0a9e('0x7a')],{'as':{'plural':'Any','singular':_0x0a9e('0x1aa')},'foreignKey':'AutomationAnyId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['Automation'][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x167')]['hasMany'](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1ac'),'onDelete':'cascade'});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db['Interval'],{'as':_0x0a9e('0x1ad'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x10e'),'hooks':!![],'required':![]});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x164')});db['Interval'][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x1ae'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')]['hasMany'](db['ChatApplication'],{'as':_0x0a9e('0x1af'),'foreignKey':'IntervalId'});db[_0x0a9e('0x17b')]['hasMany'](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x1b0'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x1b1'),'foreignKey':'IntervalId'});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x94')],{'foreignKey':_0x0a9e('0x1b2')});db['Schedule']['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x0a9e('0x1b3')});db[_0x0a9e('0x84')][_0x0a9e('0x121')](db[_0x0a9e('0x18')],{'as':'Mohs','through':_0x0a9e('0x149'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0x124')],{'through':'cm_contact_has_tags'});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x0a9e('0x121')](db['MailInteraction'],{'through':_0x0a9e('0x173')});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x53')],{'through':_0x0a9e('0x18a')});db['Tag']['belongsToMany'](db[_0x0a9e('0x11b')],{'through':_0x0a9e('0x185')});db[_0x0a9e('0x86')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'through':_0x0a9e('0x1b4')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0xfb')],{'through':_0x0a9e('0x1b5')});db[_0x0a9e('0x1b6')]['belongsTo'](db[_0x0a9e('0x88')],{'as':_0x0a9e('0x1b7'),'foreignKey':_0x0a9e('0x1b8')});db[_0x0a9e('0x1a2')][_0x0a9e('0x150')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x1b9'),'foreignKey':_0x0a9e('0x1a4')});db[_0x0a9e('0x1b6')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x19d')});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1ba'),'singular':_0x0a9e('0x1bb')},'foreignKey':_0x0a9e('0x1bc'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db['Condition'],{'as':{'plural':_0x0a9e('0x1bd'),'singular':_0x0a9e('0x1be')},'foreignKey':_0x0a9e('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'TriggerId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x1c0')]['hasMany'](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x0a9e('0x98')][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c2')});db['AnalyticFieldReport']['belongsTo'](db[_0x0a9e('0x98')],{'foreignKey':_0x0a9e('0x1c2')});db[_0x0a9e('0x9c')]['hasMany'](db[_0x0a9e('0x9e')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['SalesforceConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0x9e')]['hasMany'](db['SalesforceField'],{'as':'Descriptions','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x9e')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db['SalesforceConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x9c')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa0')][_0x0a9e('0x110')](db['SalesforceField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa0')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['SalesforceField'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa0')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xa1')][_0x0a9e('0x110')](db[_0x0a9e('0xa2')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa2')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa2')][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['SugarcrmConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0xa1')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db['SugarcrmField'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1cc')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmField'][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1cf')]['hasMany'](db[_0x0a9e('0xa6')],{'as':'Configurations','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa6')]['hasMany'](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':'FieldId'});db[_0x0a9e('0xa6')][_0x0a9e('0x150')](db[_0x0a9e('0x1cf')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x0a9e('0x110')](db['DeskField'],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xa8')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['DeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':'Field','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa8')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xaa')][_0x0a9e('0x110')](db[_0x0a9e('0xac')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Subjects','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db['ZohoConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xac')][_0x0a9e('0x150')](db[_0x0a9e('0xaa')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xae')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xaf')][_0x0a9e('0x110')](db['ZendeskConfiguration'],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d0')]['hasMany'](db[_0x0a9e('0xb2')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x0a9e('0x1d0')][_0x0a9e('0x150')](db[_0x0a9e('0xaf')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0x1d0')]['belongsToMany'](db['Tag'],{'through':_0x0a9e('0x1d1')});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['ZendeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb2')][_0x0a9e('0x150')](db['Variable'],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d2')][_0x0a9e('0x110')](db[_0x0a9e('0x1d3')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d3')]['hasMany'](db['FreshdeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['FreshdeskConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x1d2')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['FreshdeskConfiguration'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1d4')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb5')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d5')]['hasMany'](db[_0x0a9e('0xb8')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xb8')]['hasMany'](db[_0x0a9e('0xb9')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db['VtigerConfiguration'][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb8')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Fields','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb8')][_0x0a9e('0x150')](db[_0x0a9e('0x1d5')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db['VtigerField']['hasMany'](db[_0x0a9e('0xb9')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb9')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xba')]['hasMany'](db[_0x0a9e('0xbc')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbc')]['hasMany'](db['ServicenowField'],{'as':_0x0a9e('0x1c4'),'foreignKey':'SubjectId'});db[_0x0a9e('0xbc')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xbc')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c1'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbc')][_0x0a9e('0x150')](db[_0x0a9e('0xba')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['ServicenowField'][_0x0a9e('0x110')](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d6')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d6')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cb'),'foreignKey':'FieldId'});db[_0x0a9e('0x1d6')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xbe')]['hasMany'](db[_0x0a9e('0xbf')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbe')][_0x0a9e('0x150')](db['CloudProvider'],{'as':_0x0a9e('0x103'),'foreignKey':'CloudProviderId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['Dynamics365Configuration'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbf')][_0x0a9e('0x150')](db[_0x0a9e('0xbe')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['Dynamics365Field'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xc1')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['FreshsalesAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xc5')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db['FreshsalesField'],{'as':'Subjects','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cd'),'foreignKey':'DescriptionId'});db[_0x0a9e('0xc5')]['hasMany'](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1c1'),'foreignKey':'FieldId'});db[_0x0a9e('0xc5')]['belongsTo'](db[_0x0a9e('0xc3')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['FreshsalesField'][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['FreshsalesField']['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x60')],{});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':'ListId'});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{});db['ChatInternalMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1d7')});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0x1d8')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0xcd')],{'foreignKey':'SessionId','onDelete':_0x0a9e('0x10e')});db['SmsQueueReport']['belongsTo'](db[_0x0a9e('0x50')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0xd2')]['belongsTo'](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xd2')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0x1d8')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_teams'});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0x1a')],{'through':'TeamVoiceQueue','as':_0x0a9e('0x131')});db['Team']['belongsToMany'](db[_0x0a9e('0x3c')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x1db')});db[_0x0a9e('0x129')]['belongsToMany'](db['ChatQueue'],{'through':_0x0a9e('0x19b'),'as':'ChatQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db['FaxQueue'],{'through':_0x0a9e('0x187'),'as':'FaxQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x136')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x137')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x1dc')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'through':_0x0a9e('0x1dd'),'as':_0x0a9e('0x138')});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0xf1')],{'through':_0x0a9e('0x107'),'as':_0x0a9e('0x132')});db['Campaign'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db['CmHopperHistory'],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')]['hasMany'](db[_0x0a9e('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0a9e('0x1a5')]['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['Trunk'],{'as':_0x0a9e('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['SquareProject'],{'as':_0x0a9e('0xdc'),'foreignKey':_0x0a9e('0x1de')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':'Lists','through':_0x0a9e('0x1df')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x1e0')});db[_0x0a9e('0xe4')][_0x0a9e('0x150')](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':_0x0a9e('0x19a')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db['MailMessage'],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e2'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0x1e1')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e7'),'as':_0x0a9e('0x1e8')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['ChatInteraction'],{});db[_0x0a9e('0xe8')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1e9'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xe8')]['belongsTo'](db[_0x0a9e('0x67')],{'foreignKey':_0x0a9e('0x1eb'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1ec'),'as':_0x0a9e('0x1e8')});db['FaxTransferReport'][_0x0a9e('0x150')](db['FaxMessage'],{});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{});db['FaxTransferReport']['belongsTo'](db[_0x0a9e('0x45')],{'foreignKey':_0x0a9e('0x1ed'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xea')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a9e('0x1ee'),'as':_0x0a9e('0x1ef')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'foreignKey':'ToFaxAccountId','as':_0x0a9e('0x1e8')});db[_0x0a9e('0xec')]['belongsTo'](db[_0x0a9e('0x5e')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x0a9e('0x1e3')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db['SmsTransferReport']['belongsTo'](db[_0x0a9e('0x55')],{});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':_0x0a9e('0x1f0'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xee')]['belongsTo'](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a9e('0x1ef')});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList']['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x1f1')],{'as':_0x0a9e('0x1f2'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db['CmContact'],{'as':_0x0a9e('0x125'),'onDelete':'cascade','foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':'ListId'});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x1a')],{'as':'Queues','through':_0x0a9e('0x1f3')});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x128')});db[_0x0a9e('0xf1')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf1')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserVoicePrefix'});db[_0x0a9e('0xf1')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':'TeamVoicePrefix','as':_0x0a9e('0x155')});db[_0x0a9e('0xf2')][_0x0a9e('0x110')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'foreignKey':_0x0a9e('0x1f4')});db['UserProfile'][_0x0a9e('0x110')](db['UserProfileSection'],{'as':_0x0a9e('0x1f5'),'foreignKey':_0x0a9e('0x1f4'),'onDelete':_0x0a9e('0x10e')});db['UserProfileSection']['hasMany'](db['UserProfileResource'],{'as':_0x0a9e('0x1f6'),'foreignKey':_0x0a9e('0x1f7'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x1f8')});db['WhatsappAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xfd')],{'as':_0x0a9e('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x0a9e('0xf7')]['hasMany'](db[_0x0a9e('0xfb')],{'as':'Interactions'});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['WhatsappApplication'],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db['WhatsappAccount'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xf7')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0xf7')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x144')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x101')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db['WhatsappAccount'],{'onDelete':_0x0a9e('0x164')});db['WhatsappApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0xf9')]['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['WhatsappInteraction'][_0x0a9e('0x110')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0xfb')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x174')});db['WhatsappInteraction'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x175')});db[_0x0a9e('0xfb')]['belongsToMany'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x130'),'foreignKey':'WhatsappInteractionId'});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':_0x0a9e('0x160')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfd')]['belongsTo'](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{});db['WhatsappQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a9e('0x101')],{});db[_0x0a9e('0xfe')]['belongsTo'](db['WhatsappMessage'],{});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['User'],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfd')],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfb')],{});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x0a9e('0x1fb'),'as':_0x0a9e('0x1e3')});db['WhatsappTransferReport']['belongsTo'](db[_0x0a9e('0xf7')],{'foreignKey':_0x0a9e('0x1fc'),'as':'ToAccount'});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0a9e('0x1fd'),'as':_0x0a9e('0x1ef')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':'FromAgent'});db[_0x0a9e('0x1fa')][_0x0a9e('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x1dd'),'as':'Teams'});db[_0x0a9e('0x1fe')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x1ff'),'foreignKey':_0x0a9e('0x10f'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x103')][_0x0a9e('0x10b')](db['Dynamics365Account'],{'as':_0x0a9e('0xbe'),'onDelete':_0x0a9e('0x164')});db['CloudProvider'][_0x0a9e('0x10b')](db['MailServerIn'],{'as':'Imap','onDelete':_0x0a9e('0x164')});db['CloudProvider']['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x0a9e('0x164')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xa9e0=['SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','userSetting','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueue','WhatsappQueues','CmList','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','Interval','MailQueueReport','Dashboard','CannedAnswer','FaxAccountId','Exntensions','TagId','FaxInteractionId','Account','Owner','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmContactId','HopperHistories','CmCompany','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','OneAll','OneAny','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','CmContactHasItem','ItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','AnalyticCustomReport','Fields','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','Subject','SubjectId','Description','Field','SugarcrmField','Descriptions','VariableId','DeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowField','ToId','JscriptyQuestionReport','JscriptyProject','ProjectId','MailQueues','OpenchannelQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','FromSmsAccountId','CmCustomField','CustomFields','voice_queues_has_cm_lists','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','UserSetting','user','../config/environment','sequelize','lodash','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','defaultsDeep','mysql','username','password','options','database','sequelizeHistory','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var config=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x0a9e('0x1')]=_['defaultsDeep'](config[_0x0a9e('0x1')],{'database':_0x0a9e('0x3'),'username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':_0x0a9e('0x9'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_[_0x0a9e('0xa')](config['sequelizeHistory'],{'database':'motion2','username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':_0x0a9e('0xb'),'dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x0a9e('0x1')][_0x0a9e('0xc')],config[_0x0a9e('0x1')][_0x0a9e('0xd')],config[_0x0a9e('0x1')][_0x0a9e('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x0a9e('0xf')],config[_0x0a9e('0x10')][_0x0a9e('0xc')],config[_0x0a9e('0x10')][_0x0a9e('0xd')],config[_0x0a9e('0x10')]['options'])};db[_0x0a9e('0x11')]=db['sequelize'][_0x0a9e('0x12')]('../api/user/user.model');db[_0x0a9e('0x13')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x14'));db['VoiceContext']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x15'));db[_0x0a9e('0x16')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x17'));db[_0x0a9e('0x18')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x19'));db[_0x0a9e('0x1a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x1b'));db['VoiceRecording']=db[_0x0a9e('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0a9e('0x1c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1d'));db['VoiceMail']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1e'));db[_0x0a9e('0x1f')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x20'));db['VoiceCallReport']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x21'));db[_0x0a9e('0x22')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x23'));db['VoiceAgentReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x24'));db[_0x0a9e('0x25')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x26'));db[_0x0a9e('0x27')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/memberReport/memberReport.model');db[_0x0a9e('0x28')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x29'));db['VoiceTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2a'));db[_0x0a9e('0x2b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2c'));db[_0x0a9e('0x2d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x2e'));db['UserChatQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2f'));db[_0x0a9e('0x30')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x31'));db[_0x0a9e('0x32')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x33'));db[_0x0a9e('0x34')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0a9e('0x35')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x36'));db[_0x0a9e('0x37')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x38'));db[_0x0a9e('0x39')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x3a'));db[_0x0a9e('0x3b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailAccount/mailAccount.model');db[_0x0a9e('0x3c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailQueue/mailQueue.model');db[_0x0a9e('0x3d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0x0a9e('0x3e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x3f'));db['MailApplication']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x40'));db['MailQueueReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x41'));db['Dashboard']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x42'));db[_0x0a9e('0x43')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x44'));db[_0x0a9e('0x45')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x46'));db[_0x0a9e('0x47')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x48'));db['FaxInteraction']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x49'));db[_0x0a9e('0x4a')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4b'));db[_0x0a9e('0x4c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4d'));db[_0x0a9e('0x4e')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x4f'));db[_0x0a9e('0x50')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x51'));db[_0x0a9e('0x52')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/smsApplication/smsApplication.model');db[_0x0a9e('0x53')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x54'));db[_0x0a9e('0x55')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x56'));db[_0x0a9e('0x57')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x58'));db[_0x0a9e('0x59')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x5a'));db[_0x0a9e('0x5b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5c'));db[_0x0a9e('0x5d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x0a9e('0x5e')]=db[_0x0a9e('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5f'));db[_0x0a9e('0x60')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x61'));db[_0x0a9e('0x62')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a9e('0x63')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatApplication/chatApplication.model');db[_0x0a9e('0x64')]=db[_0x0a9e('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x0a9e('0x65')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatMessage/chatMessage.model');db[_0x0a9e('0x66')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0a9e('0x67')]=db[_0x0a9e('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x0a9e('0x68')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x69'));db['ChatProactiveAction']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x6a'));db['CmCompany']=db['sequelize']['import'](_0x0a9e('0x6b'));db['CmContact']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6c'));db[_0x0a9e('0x6d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6e'));db[_0x0a9e('0x6f')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x70'));db[_0x0a9e('0x71')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x72'));db['CmHopperHistory']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x0a9e('0x73')]=db['sequelize'][_0x0a9e('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x0a9e('0x12')]('../api/cmCustomField/cmCustomField.model');db[_0x0a9e('0x74')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x75'));db[_0x0a9e('0x76')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x77'));db['CannedAnswer']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x78'));db['Disposition']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x79'));db[_0x0a9e('0x7a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x7b'));db['Interval']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x7c'));db[_0x0a9e('0x7d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x7e'));db[_0x0a9e('0x7f')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x80'));db['VoiceQueuesLog']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x81'));db[_0x0a9e('0x82')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x83'));db[_0x0a9e('0x84')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x85'));db[_0x0a9e('0x86')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x87'));db[_0x0a9e('0x88')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x89'));db['CmContactHasItem']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8a'));db['CmHopperAdditionalPhone']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a9e('0x8b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8c'));db[_0x0a9e('0x8d')]=db['sequelize']['import']('../api/trigger/trigger.model');db[_0x0a9e('0x8e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8f'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['IntegrationReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x92'));db['AnalyticCustomReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x93'));db[_0x0a9e('0x94')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x95'));db[_0x0a9e('0x96')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x97'));db[_0x0a9e('0x98')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/analyticMetric/analyticMetric.model');db[_0x0a9e('0x99')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9a'));db['AnalyticTreeReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9b'));db[_0x0a9e('0x9c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9d'));db[_0x0a9e('0x9e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9f'));db[_0x0a9e('0xa0')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSalesforceField/intSalesforceField.model');db[_0x0a9e('0xa1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0a9e('0xa2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa3'));db['SugarcrmField']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa4'));db['DeskAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xa5'));db[_0x0a9e('0xa6')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa7'));db[_0x0a9e('0xa8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa9'));db[_0x0a9e('0xaa')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xab'));db[_0x0a9e('0xac')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xad'));db[_0x0a9e('0xae')]=db['sequelize'][_0x0a9e('0x12')]('../api/intZohoField/intZohoField.model');db[_0x0a9e('0xaf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb0'));db['ZendeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb1'));db[_0x0a9e('0xb2')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb3'));db['FreshdeskAccount']=db['sequelize'][_0x0a9e('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb4'));db[_0x0a9e('0xb5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb6'));db['VtigerAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xb7'));db[_0x0a9e('0xb8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x0a9e('0xb9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0x0a9e('0xba')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbb'));db[_0x0a9e('0xbc')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbd'));db['ServicenowField']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intServicenowField/intServicenowField.model');db[_0x0a9e('0xbe')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x0a9e('0xbf')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xc0'));db[_0x0a9e('0xc1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc2'));db[_0x0a9e('0xc3')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xc4'));db[_0x0a9e('0xc5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc6'));db[_0x0a9e('0xc7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc8'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['Network']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc9'));db[_0x0a9e('0xca')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcb'));db[_0x0a9e('0xcc')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x0a9e('0xcd')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xce'));db['JscriptyQuestionReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcf'));db[_0x0a9e('0xd0')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xd1'));db[_0x0a9e('0xd2')]=db['sequelize']['import'](_0x0a9e('0xd3'));db[_0x0a9e('0xd4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd5'));db[_0x0a9e('0xd6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd7'));db['JscriptyProject']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xd8'));db[_0x0a9e('0xd9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xda'));db['SquareOdbc']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xdb'));db[_0x0a9e('0xdc')]=db[_0x0a9e('0x1')]['import']('../api/squareProject/squareProject.model');db[_0x0a9e('0xdd')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xde'));db[_0x0a9e('0xdf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe0'));db['Team']=db['sequelize'][_0x0a9e('0x12')]('../api/team/team.model');db[_0x0a9e('0xe1')]=db['sequelize'][_0x0a9e('0x12')]('../api/license/license.model');db['Campaign']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/campaign/campaign.model');db[_0x0a9e('0xe2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe3'));db[_0x0a9e('0xe4')]=db['sequelize']['import'](_0x0a9e('0xe5'));db[_0x0a9e('0xe6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe7'));db['MailTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0a9e('0xe8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe9'));db[_0x0a9e('0xea')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xeb'));db[_0x0a9e('0xec')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xed'));db[_0x0a9e('0xee')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xef'));db['CmList']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf0'));db[_0x0a9e('0xf1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0x0a9e('0xf2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfile/userProfile.model');db[_0x0a9e('0xf3')]=db['sequelize'][_0x0a9e('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x0a9e('0xf4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x0a9e('0xf5')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf6'));db[_0x0a9e('0xf7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xf8'));db[_0x0a9e('0xf9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfa'));db[_0x0a9e('0xfb')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfc'));db[_0x0a9e('0xfd')]=db[_0x0a9e('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0a9e('0xfe')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xff'));db['WhatsappTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x100'));db[_0x0a9e('0x101')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x102'));db[_0x0a9e('0x103')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x104'));db[_0x0a9e('0x105')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x106'));db[_0x0a9e('0x107')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x108'));db[_0x0a9e('0x109')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x10a'));db['UserSetting']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/user-setting/user-setting.model');db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db[_0x0a9e('0x10c')],{'as':'VoiceMail','onDelete':'cascade','foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db['UserSetting'],{'as':_0x0a9e('0x10d'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x111')],{'as':_0x0a9e('0x112'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x113'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x117'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x118'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x11a'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xfb')],{'as':_0x0a9e('0x11e'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xf5')],{'as':_0x0a9e('0x11f'),'foreignKey':_0x0a9e('0x120')});db[_0x0a9e('0x11')]['belongsTo'](db[_0x0a9e('0xf2')],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x68')],{'as':_0x0a9e('0x122'),'through':_0x0a9e('0x123')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x125'),'through':_0x0a9e('0x126')});db[_0x0a9e('0x11')]['belongsToMany'](db['CmList'],{'as':_0x0a9e('0x127'),'through':_0x0a9e('0x128')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x12a')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'through':_0x0a9e('0x12b')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x12c'),'through':_0x0a9e('0x12d')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x53')],{'as':'SmsInteractions','through':_0x0a9e('0x12e')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'as':_0x0a9e('0x118'),'through':_0x0a9e('0x12f')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0xfb')],{'as':'WhatsappInteractions','through':_0x0a9e('0x130')});db['User'][_0x0a9e('0x121')](db['VoiceQueue'],{'as':_0x0a9e('0x131'),'through':_0x0a9e('0x2d'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0xf1')],{'as':_0x0a9e('0x132'),'through':_0x0a9e('0x109'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x3c')],{'as':'MailQueues','through':_0x0a9e('0x30'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x133'),'through':_0x0a9e('0x134'),'required':![],'hooks':!![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x4c')],{'as':_0x0a9e('0x135'),'through':_0x0a9e('0x32'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'as':_0x0a9e('0x136'),'through':_0x0a9e('0x34'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x137')],{'as':'OpenchannelQueues','through':_0x0a9e('0x35'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'as':_0x0a9e('0x138'),'through':_0x0a9e('0x37'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'through':_0x0a9e('0x128')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x13a'),'through':_0x0a9e('0x13b')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x45')],{'as':'FaxAccounts','through':_0x0a9e('0x13c')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x13d'),'through':_0x0a9e('0x13e')});db[_0x0a9e('0x11')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x0a9e('0x13f'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x141'),'through':_0x0a9e('0x142')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x143'),'through':_0x0a9e('0x144')});db[_0x0a9e('0x13')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':'SpiedAgents','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x145')});db[_0x0a9e('0x146')]['hasMany'](db[_0x0a9e('0x16')],{'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x16')][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x147'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x18')][_0x0a9e('0x121')](db[_0x0a9e('0x84')],{'as':_0x0a9e('0x148'),'through':_0x0a9e('0x149')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x14a'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db['CmHopper'],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'VoiceQueueId'});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x116')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db['CmHopperBlack'],{'as':_0x0a9e('0x14d'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':_0x0a9e('0x14e'),'foreignKey':_0x0a9e('0x14b')});db['VoiceQueue']['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a')][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':_0x0a9e('0x151'),'foreignKey':_0x0a9e('0x152')});db['VoiceQueue'][_0x0a9e('0x150')](db['Interval'],{'as':'Interval','foreignKey':_0x0a9e('0x153')});db['VoiceQueue'][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db['VoiceQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x127'),'through':'voice_queues_has_cm_lists'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'as':_0x0a9e('0x155'),'through':_0x0a9e('0x105')});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x157')});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x1c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x10c')]['hasMany'](db['VoiceMailMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'mailboxuser','sourceKey':_0x0a9e('0x159')});db[_0x0a9e('0x1f')][_0x0a9e('0x150')](db[_0x0a9e('0x10c')],{'foreignKey':_0x0a9e('0x15a'),'targetKey':_0x0a9e('0x159')});db[_0x0a9e('0x15b')][_0x0a9e('0x110')](db[_0x0a9e('0x25')],{'as':_0x0a9e('0x15c'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')]['hasMany'](db[_0x0a9e('0x15e')],{'as':_0x0a9e('0x15f'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x39')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':'CloudProvider','foreignKey':_0x0a9e('0x162'),'onDelete':'restrict'});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':_0x0a9e('0x103'),'foreignKey':_0x0a9e('0x162'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x3b')][_0x0a9e('0x10b')](db[_0x0a9e('0x39')],{'as':_0x0a9e('0x165'),'onDelete':_0x0a9e('0x10e')});db['MailAccount']['hasOne'](db[_0x0a9e('0x163')],{'as':_0x0a9e('0x166'),'onDelete':'cascade'});db['MailAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'MailAccountId','onDelete':_0x0a9e('0x10e')});db['MailAccount'][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':'MailAccountId'});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x3e')],{'as':'Messages','foreignKey':_0x0a9e('0x161')});db['MailAccount']['hasMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x161'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x8b')],{'as':_0x0a9e('0x8b'),'foreignKey':_0x0a9e('0x16e')});db[_0x0a9e('0x3b')]['belongsTo'](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x3b')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x0a9e('0x13e')});db['MailQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x30')});db[_0x0a9e('0x3c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x11c')]['hasMany'](db[_0x0a9e('0x3e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':'MailInteractionId'});db[_0x0a9e('0x11c')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x11c')]['belongsTo'](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11c')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12b'),'foreignKey':_0x0a9e('0x177')});db[_0x0a9e('0x3e')]['hasMany'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0x178'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':'User'});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x179'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x60')],{'as':'ChatWebsite','foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')]['belongsTo'](db[_0x0a9e('0x3b')],{'onDelete':_0x0a9e('0x164')});db['MailApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db['MailQueueReport']['belongsTo'](db['MailAccount'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':_0x0a9e('0x16d')});db['MailQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailInteraction'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailMessage'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{});db[_0x0a9e('0x17d')]['hasMany'](db[_0x0a9e('0x43')],{'as':'Items','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')]['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':'Answers','foreignKey':_0x0a9e('0x17f')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x147'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x180'),'onDelete':'cascade'});db[_0x0a9e('0x45')]['hasMany'](db['FaxMessage'],{'as':_0x0a9e('0x158')});db['FaxAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':'Trunk'});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a9e('0x45')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_fax_accounts'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'restrict'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x4c')],{'onDelete':'restrict'});db[_0x0a9e('0x47')]['belongsTo'](db[_0x0a9e('0x45')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['FaxInteraction'][_0x0a9e('0x110')](db[_0x0a9e('0x4a')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':'fax_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x185'),'as':'ThroughTags'});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12d'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x11')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x179'),'foreignKey':'FaxInteractionId'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':'Contact'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':'Account','foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db['User'],{'as':'Agents','through':_0x0a9e('0x32')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x187'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['FaxAccount'],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxInteraction'],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x4a')],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxQueue'],{});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x188'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db['SmsMessage'],{'as':_0x0a9e('0x158'),'foreignKey':_0x0a9e('0x188')});db['SmsAccount']['hasMany'](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x147'),'foreignKey':'SmsAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x50')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x142')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db['SmsApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{'onDelete':_0x0a9e('0x164')});db['SmsApplication']['belongsTo'](db[_0x0a9e('0x50')],{'onDelete':'restrict'});db[_0x0a9e('0x52')]['belongsTo'](db['Interval'],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x53')][_0x0a9e('0x110')](db[_0x0a9e('0x55')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x189')});db['SmsInteraction']['belongsTo'](db[_0x0a9e('0x50')],{'as':'Account','foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'sms_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x18a'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x53')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Users','through':_0x0a9e('0x12e'),'foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x55')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x57')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x34'),'foreignKey':_0x0a9e('0x18b')});db[_0x0a9e('0x57')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x59')]['hasMany'](db['Disposition'],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x59')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','foreignKey':_0x0a9e('0x18d')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5b')],{'as':'Applications','foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x59')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x59')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x5b')]['belongsTo'](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0x0a9e('0x18e')});db['OpenchannelApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db['OpenchannelApplication']['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x5d')][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x18f')});db[_0x0a9e('0x5d')]['belongsTo'](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db['OpenchannelInteraction'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x5d')][_0x0a9e('0x150')](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x175')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':'user_has_openchannel_interactions','foreignKey':_0x0a9e('0x18f')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0x5d')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x179'),'foreignKey':'OpenchannelInteractionId'});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x35'),'foreignKey':_0x0a9e('0x18e')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x155')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x17a')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x191')],{'as':_0x0a9e('0x192')});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x63')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x65')],{'as':_0x0a9e('0x158')});db['ChatWebsite'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x60')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db['ChatWebsite'][_0x0a9e('0x150')](db['MailAccount'],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db['ChatWebsite'][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db['ChatWebsite'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x13b')});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelAccount'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x5d')],{});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db['OpenchannelMessage'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{});db['ChatApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x193'),'foreignKey':'UserId','onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x194'),'foreignKey':_0x0a9e('0x195'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':_0x0a9e('0x17a'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x64')][_0x0a9e('0x110')](db['ChatMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x64')]['belongsTo'](db['User'],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x199'),'foreignKey':_0x0a9e('0x197')});db['ChatMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x66')][_0x0a9e('0x110')](db['Attachment'],{'as':_0x0a9e('0x178'),'foreignKey':_0x0a9e('0x19a'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0x66')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x0a9e('0x67')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0x0a9e('0x67')]['belongsToMany'](db['Team'],{'through':_0x0a9e('0x19b'),'as':'Teams'});db[_0x0a9e('0x68')][_0x0a9e('0x110')](db[_0x0a9e('0xcc')],{'as':'Messages','foreignKey':_0x0a9e('0x19c'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x68')]['belongsToMany'](db['User'],{'as':_0x0a9e('0x14a'),'through':_0x0a9e('0x123')});db[_0x0a9e('0x191')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x0a9e('0x110')](db[_0x0a9e('0x124')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact']['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x0a9e('0x19d')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':'HopperFinals','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':'JscriptySessions','foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db['MailInteraction'],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x172'),'onDelete':'restrict'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x19f')],{'as':_0x0a9e('0x1a0'),'foreignKey':'CompanyId'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':'cascade'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':'cm_user_has_contacts'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'as':_0x0a9e('0x174'),'through':_0x0a9e('0x1a1')});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1a1'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x6d')][_0x0a9e('0x110')](db[_0x0a9e('0x1a2')],{'as':_0x0a9e('0x1a3'),'foreignKey':_0x0a9e('0x1a4')});db['CmHopper'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x0a9e('0x150')](db['User'],{'as':'Agent','foreignKey':'UserId'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':_0x0a9e('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':'CampaignId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x1a6')});db['CmHopperBlack'][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172'),'onDelete':'cascade'});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':'Queue','foreignKey':_0x0a9e('0x14b'),'onDelete':_0x0a9e('0x10e')});db['CmHopperBlack'][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':_0x0a9e('0x1a7'),'onDelete':'cascade'});db[_0x0a9e('0x76')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1a8'),'singular':_0x0a9e('0x1a9')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x76')]['hasMany'](db[_0x0a9e('0x7a')],{'as':{'plural':'Any','singular':_0x0a9e('0x1aa')},'foreignKey':'AutomationAnyId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['Automation'][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x167')]['hasMany'](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1ac'),'onDelete':'cascade'});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db['Interval'],{'as':_0x0a9e('0x1ad'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x10e'),'hooks':!![],'required':![]});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x164')});db['Interval'][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x1ae'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')]['hasMany'](db['ChatApplication'],{'as':_0x0a9e('0x1af'),'foreignKey':'IntervalId'});db[_0x0a9e('0x17b')]['hasMany'](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x1b0'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x1b1'),'foreignKey':'IntervalId'});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x94')],{'foreignKey':_0x0a9e('0x1b2')});db['Schedule']['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x0a9e('0x1b3')});db[_0x0a9e('0x84')][_0x0a9e('0x121')](db[_0x0a9e('0x18')],{'as':'Mohs','through':_0x0a9e('0x149'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0x124')],{'through':'cm_contact_has_tags'});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x0a9e('0x121')](db['MailInteraction'],{'through':_0x0a9e('0x173')});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x53')],{'through':_0x0a9e('0x18a')});db['Tag']['belongsToMany'](db[_0x0a9e('0x11b')],{'through':_0x0a9e('0x185')});db[_0x0a9e('0x86')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'through':_0x0a9e('0x1b4')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0xfb')],{'through':_0x0a9e('0x1b5')});db[_0x0a9e('0x1b6')]['belongsTo'](db[_0x0a9e('0x88')],{'as':_0x0a9e('0x1b7'),'foreignKey':_0x0a9e('0x1b8')});db[_0x0a9e('0x1a2')][_0x0a9e('0x150')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x1b9'),'foreignKey':_0x0a9e('0x1a4')});db[_0x0a9e('0x1b6')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x19d')});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1ba'),'singular':_0x0a9e('0x1bb')},'foreignKey':_0x0a9e('0x1bc'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db['Condition'],{'as':{'plural':_0x0a9e('0x1bd'),'singular':_0x0a9e('0x1be')},'foreignKey':_0x0a9e('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'TriggerId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x1c0')]['hasMany'](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x0a9e('0x98')][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c2')});db['AnalyticFieldReport']['belongsTo'](db[_0x0a9e('0x98')],{'foreignKey':_0x0a9e('0x1c2')});db[_0x0a9e('0x9c')]['hasMany'](db[_0x0a9e('0x9e')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['SalesforceConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0x9e')]['hasMany'](db['SalesforceField'],{'as':'Descriptions','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x9e')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db['SalesforceConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x9c')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa0')][_0x0a9e('0x110')](db['SalesforceField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa0')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['SalesforceField'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa0')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xa1')][_0x0a9e('0x110')](db[_0x0a9e('0xa2')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa2')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa2')][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['SugarcrmConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0xa1')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db['SugarcrmField'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1cc')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmField'][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1cf')]['hasMany'](db[_0x0a9e('0xa6')],{'as':'Configurations','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa6')]['hasMany'](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':'FieldId'});db[_0x0a9e('0xa6')][_0x0a9e('0x150')](db[_0x0a9e('0x1cf')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x0a9e('0x110')](db['DeskField'],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xa8')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['DeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':'Field','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa8')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xaa')][_0x0a9e('0x110')](db[_0x0a9e('0xac')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Subjects','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db['ZohoConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xac')][_0x0a9e('0x150')](db[_0x0a9e('0xaa')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xae')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xaf')][_0x0a9e('0x110')](db['ZendeskConfiguration'],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d0')]['hasMany'](db[_0x0a9e('0xb2')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x0a9e('0x1d0')][_0x0a9e('0x150')](db[_0x0a9e('0xaf')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0x1d0')]['belongsToMany'](db['Tag'],{'through':_0x0a9e('0x1d1')});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['ZendeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb2')][_0x0a9e('0x150')](db['Variable'],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d2')][_0x0a9e('0x110')](db[_0x0a9e('0x1d3')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d3')]['hasMany'](db['FreshdeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['FreshdeskConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x1d2')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['FreshdeskConfiguration'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1d4')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb5')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d5')]['hasMany'](db[_0x0a9e('0xb8')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xb8')]['hasMany'](db[_0x0a9e('0xb9')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db['VtigerConfiguration'][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb8')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Fields','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb8')][_0x0a9e('0x150')](db[_0x0a9e('0x1d5')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db['VtigerField']['hasMany'](db[_0x0a9e('0xb9')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb9')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xba')]['hasMany'](db[_0x0a9e('0xbc')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbc')]['hasMany'](db['ServicenowField'],{'as':_0x0a9e('0x1c4'),'foreignKey':'SubjectId'});db[_0x0a9e('0xbc')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xbc')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c1'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbc')][_0x0a9e('0x150')](db[_0x0a9e('0xba')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['ServicenowField'][_0x0a9e('0x110')](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d6')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d6')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cb'),'foreignKey':'FieldId'});db[_0x0a9e('0x1d6')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xbe')]['hasMany'](db[_0x0a9e('0xbf')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbe')][_0x0a9e('0x150')](db['CloudProvider'],{'as':_0x0a9e('0x103'),'foreignKey':'CloudProviderId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['Dynamics365Configuration'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbf')][_0x0a9e('0x150')](db[_0x0a9e('0xbe')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['Dynamics365Field'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xc1')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['FreshsalesAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xc5')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db['FreshsalesField'],{'as':'Subjects','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cd'),'foreignKey':'DescriptionId'});db[_0x0a9e('0xc5')]['hasMany'](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1c1'),'foreignKey':'FieldId'});db[_0x0a9e('0xc5')]['belongsTo'](db[_0x0a9e('0xc3')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['FreshsalesField'][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['FreshsalesField']['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x60')],{});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':'ListId'});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{});db['ChatInternalMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1d7')});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0x1d8')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0xcd')],{'foreignKey':'SessionId','onDelete':_0x0a9e('0x10e')});db['SmsQueueReport']['belongsTo'](db[_0x0a9e('0x50')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0xd2')]['belongsTo'](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xd2')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0x1d8')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_teams'});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0x1a')],{'through':'TeamVoiceQueue','as':_0x0a9e('0x131')});db['Team']['belongsToMany'](db[_0x0a9e('0x3c')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x1db')});db[_0x0a9e('0x129')]['belongsToMany'](db['ChatQueue'],{'through':_0x0a9e('0x19b'),'as':'ChatQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db['FaxQueue'],{'through':_0x0a9e('0x187'),'as':'FaxQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x136')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x137')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x1dc')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'through':_0x0a9e('0x1dd'),'as':_0x0a9e('0x138')});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0xf1')],{'through':_0x0a9e('0x107'),'as':_0x0a9e('0x132')});db['Campaign'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db['CmHopperHistory'],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')]['hasMany'](db[_0x0a9e('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0a9e('0x1a5')]['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['Trunk'],{'as':_0x0a9e('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['SquareProject'],{'as':_0x0a9e('0xdc'),'foreignKey':_0x0a9e('0x1de')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':'Lists','through':_0x0a9e('0x1df')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x1e0')});db[_0x0a9e('0xe4')][_0x0a9e('0x150')](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':_0x0a9e('0x19a')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db['MailMessage'],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e2'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0x1e1')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e7'),'as':_0x0a9e('0x1e8')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['ChatInteraction'],{});db[_0x0a9e('0xe8')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1e9'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xe8')]['belongsTo'](db[_0x0a9e('0x67')],{'foreignKey':_0x0a9e('0x1eb'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1ec'),'as':_0x0a9e('0x1e8')});db['FaxTransferReport'][_0x0a9e('0x150')](db['FaxMessage'],{});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{});db['FaxTransferReport']['belongsTo'](db[_0x0a9e('0x45')],{'foreignKey':_0x0a9e('0x1ed'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xea')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a9e('0x1ee'),'as':_0x0a9e('0x1ef')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'foreignKey':'ToFaxAccountId','as':_0x0a9e('0x1e8')});db[_0x0a9e('0xec')]['belongsTo'](db[_0x0a9e('0x5e')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x0a9e('0x1e3')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db['SmsTransferReport']['belongsTo'](db[_0x0a9e('0x55')],{});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':_0x0a9e('0x1f0'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xee')]['belongsTo'](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a9e('0x1ef')});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList']['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x1f1')],{'as':_0x0a9e('0x1f2'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db['CmContact'],{'as':_0x0a9e('0x125'),'onDelete':'cascade','foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':'ListId'});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x1a')],{'as':'Queues','through':_0x0a9e('0x1f3')});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x128')});db[_0x0a9e('0xf1')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf1')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserVoicePrefix'});db[_0x0a9e('0xf1')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':'TeamVoicePrefix','as':_0x0a9e('0x155')});db[_0x0a9e('0xf2')][_0x0a9e('0x110')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'foreignKey':_0x0a9e('0x1f4')});db['UserProfile'][_0x0a9e('0x110')](db['UserProfileSection'],{'as':_0x0a9e('0x1f5'),'foreignKey':_0x0a9e('0x1f4'),'onDelete':_0x0a9e('0x10e')});db['UserProfileSection']['hasMany'](db['UserProfileResource'],{'as':_0x0a9e('0x1f6'),'foreignKey':_0x0a9e('0x1f7'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x1f8')});db['WhatsappAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xfd')],{'as':_0x0a9e('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x0a9e('0xf7')]['hasMany'](db[_0x0a9e('0xfb')],{'as':'Interactions'});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['WhatsappApplication'],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db['WhatsappAccount'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xf7')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0xf7')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x144')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x101')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db['WhatsappAccount'],{'onDelete':_0x0a9e('0x164')});db['WhatsappApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0xf9')]['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['WhatsappInteraction'][_0x0a9e('0x110')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0xfb')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x174')});db['WhatsappInteraction'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x175')});db[_0x0a9e('0xfb')]['belongsToMany'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x130'),'foreignKey':'WhatsappInteractionId'});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':_0x0a9e('0x160')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfd')]['belongsTo'](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{});db['WhatsappQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a9e('0x101')],{});db[_0x0a9e('0xfe')]['belongsTo'](db['WhatsappMessage'],{});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['User'],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfd')],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfb')],{});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x0a9e('0x1fb'),'as':_0x0a9e('0x1e3')});db['WhatsappTransferReport']['belongsTo'](db[_0x0a9e('0xf7')],{'foreignKey':_0x0a9e('0x1fc'),'as':'ToAccount'});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0a9e('0x1fd'),'as':_0x0a9e('0x1ef')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':'FromAgent'});db[_0x0a9e('0x1fa')][_0x0a9e('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x1dd'),'as':'Teams'});db[_0x0a9e('0x1fe')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x1ff'),'foreignKey':_0x0a9e('0x10f'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x103')][_0x0a9e('0x10b')](db['Dynamics365Account'],{'as':_0x0a9e('0xbe'),'onDelete':_0x0a9e('0x164')});db['CloudProvider'][_0x0a9e('0x10b')](db['MailServerIn'],{'as':'Imap','onDelete':_0x0a9e('0x164')});db['CloudProvider']['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x0a9e('0x164')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index c5ddb5d..a41578e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0205=['/api/voice/agents/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','./api/voiceTransferReport','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/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/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','./api/chatMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','/api/pauses','./api/pause','/api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/contact_item_types','/api/cm_hopper_additional_phones','/api/templates','./api/variable','/api/integrations','./api/integration','./api/integrationReport','/api/analytics/custom_reports','/api/analytics/extracted_reports','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmField','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','./api/intZohoField','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/networks','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/questions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','/api/settings','./api/squareOdbc','/api/square/projects','/api/square/recordings','./api/squareRecording','./api/squareMessage','./api/team','/api/license','./api/license','./api/campaign','./api/migration','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','/api/whatsapp/reports/transfer','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','./api/jira','/api/rpc','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','join','root','/apidoc','/www','/snippet','static','snippet','3.8.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','./errors','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','then','./api/user','use','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport'];(function(_0x487110,_0x4803d4){var _0x48531c=function(_0x37f3b0){while(--_0x37f3b0){_0x487110['push'](_0x487110['shift']());}};_0x48531c(++_0x4803d4);}(_0x0205,0xf8));var _0x5020=function(_0x1ec552,_0x380a41){_0x1ec552=_0x1ec552-0x0;var _0x38b552=_0x0205[_0x1ec552];return _0x38b552;};'use strict';var path=require('path');var express=require('express');var errors=require(_0x5020('0x0'));var config=require(_0x5020('0x1'));var setupLoggers=require(_0x5020('0x2'))[_0x5020('0x3')];var clientSideLogs=require(_0x5020('0x4'));exports['default']=function(_0x105d09){return setupLoggers(_0x105d09)[_0x5020('0x5')](function(){_0x105d09['use']('/api/users',require(_0x5020('0x6')));_0x105d09[_0x5020('0x7')](_0x5020('0x8'),require(_0x5020('0x9')));_0x105d09[_0x5020('0x7')](_0x5020('0xa'),require(_0x5020('0xb')));_0x105d09['use'](_0x5020('0xc'),require('./api/voiceExtension'));_0x105d09[_0x5020('0x7')]('/api/voice/mohs',require('./api/voiceMusicOnHold'));_0x105d09['use'](_0x5020('0xd'),require(_0x5020('0xe')));_0x105d09[_0x5020('0x7')](_0x5020('0xf'),require(_0x5020('0x10')));_0x105d09[_0x5020('0x7')](_0x5020('0x11'),require(_0x5020('0x12')));_0x105d09['use'](_0x5020('0x13'),require(_0x5020('0x14')));_0x105d09[_0x5020('0x7')]('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x105d09[_0x5020('0x7')](_0x5020('0x15'),require(_0x5020('0x16')));_0x105d09['use'](_0x5020('0x17'),require(_0x5020('0x18')));_0x105d09[_0x5020('0x7')](_0x5020('0x19'),require('./api/voiceAgentReport'));_0x105d09[_0x5020('0x7')]('/api/voice/queues/reports',require(_0x5020('0x1a')));_0x105d09[_0x5020('0x7')](_0x5020('0x1b'),require(_0x5020('0x1c')));_0x105d09['use'](_0x5020('0x1d'),require(_0x5020('0x1e')));_0x105d09[_0x5020('0x7')]('/api/voice/transfers/reports',require(_0x5020('0x1f')));_0x105d09[_0x5020('0x7')]('/api/mail/out_servers',require(_0x5020('0x20')));_0x105d09[_0x5020('0x7')](_0x5020('0x21'),require(_0x5020('0x22')));_0x105d09[_0x5020('0x7')]('/api/mail/queues',require('./api/mailQueue'));_0x105d09[_0x5020('0x7')](_0x5020('0x23'),require(_0x5020('0x24')));_0x105d09[_0x5020('0x7')](_0x5020('0x25'),require(_0x5020('0x26')));_0x105d09[_0x5020('0x7')](_0x5020('0x27'),require(_0x5020('0x28')));_0x105d09[_0x5020('0x7')](_0x5020('0x29'),require(_0x5020('0x2a')));_0x105d09['use'](_0x5020('0x2b'),require('./api/mailQueueReport'));_0x105d09[_0x5020('0x7')]('/api/dashboards',require(_0x5020('0x2c')));_0x105d09['use'](_0x5020('0x2d'),require(_0x5020('0x2e')));_0x105d09[_0x5020('0x7')](_0x5020('0x2f'),require(_0x5020('0x30')));_0x105d09[_0x5020('0x7')](_0x5020('0x31'),require(_0x5020('0x32')));_0x105d09[_0x5020('0x7')](_0x5020('0x33'),require(_0x5020('0x34')));_0x105d09[_0x5020('0x7')](_0x5020('0x35'),require(_0x5020('0x36')));_0x105d09['use'](_0x5020('0x37'),require(_0x5020('0x38')));_0x105d09[_0x5020('0x7')]('/api/fax/reports/queue',require(_0x5020('0x39')));_0x105d09[_0x5020('0x7')](_0x5020('0x3a'),require(_0x5020('0x3b')));_0x105d09['use']('/api/sms/applications',require(_0x5020('0x3c')));_0x105d09['use'](_0x5020('0x3d'),require(_0x5020('0x3e')));_0x105d09[_0x5020('0x7')](_0x5020('0x3f'),require('./api/smsMessage'));_0x105d09[_0x5020('0x7')](_0x5020('0x40'),require(_0x5020('0x41')));_0x105d09[_0x5020('0x7')](_0x5020('0x42'),require(_0x5020('0x43')));_0x105d09[_0x5020('0x7')](_0x5020('0x44'),require('./api/openchannelApplication'));_0x105d09[_0x5020('0x7')](_0x5020('0x45'),require(_0x5020('0x46')));_0x105d09[_0x5020('0x7')](_0x5020('0x47'),require(_0x5020('0x48')));_0x105d09[_0x5020('0x7')](_0x5020('0x49'),require(_0x5020('0x4a')));_0x105d09['use'](_0x5020('0x4b'),require('./api/chatWebsite'));_0x105d09[_0x5020('0x7')]('/api/openchannel/reports/queue',require(_0x5020('0x4c')));_0x105d09['use'](_0x5020('0x4d'),require(_0x5020('0x4e')));_0x105d09[_0x5020('0x7')](_0x5020('0x4f'),require(_0x5020('0x50')));_0x105d09[_0x5020('0x7')]('/api/chat/messages',require(_0x5020('0x51')));_0x105d09[_0x5020('0x7')]('/api/chat/offline_messages',require('./api/chatOfflineMessage'));_0x105d09[_0x5020('0x7')](_0x5020('0x52'),require(_0x5020('0x53')));_0x105d09['use'](_0x5020('0x54'),require(_0x5020('0x55')));_0x105d09[_0x5020('0x7')](_0x5020('0x56'),require(_0x5020('0x57')));_0x105d09[_0x5020('0x7')](_0x5020('0x58'),require(_0x5020('0x59')));_0x105d09[_0x5020('0x7')](_0x5020('0x5a'),require(_0x5020('0x5b')));_0x105d09[_0x5020('0x7')](_0x5020('0x5c'),require('./api/cmHopper'));_0x105d09[_0x5020('0x7')]('/api/cm/hopper_black',require(_0x5020('0x5d')));_0x105d09[_0x5020('0x7')](_0x5020('0x5e'),require(_0x5020('0x5f')));_0x105d09['use'](_0x5020('0x60'),require(_0x5020('0x61')));_0x105d09[_0x5020('0x7')](_0x5020('0x62'),require(_0x5020('0x63')));_0x105d09[_0x5020('0x7')](_0x5020('0x64'),require(_0x5020('0x65')));_0x105d09[_0x5020('0x7')](_0x5020('0x66'),require(_0x5020('0x67')));_0x105d09[_0x5020('0x7')](_0x5020('0x68'),require(_0x5020('0x69')));_0x105d09[_0x5020('0x7')](_0x5020('0x6a'),require(_0x5020('0x6b')));_0x105d09[_0x5020('0x7')](_0x5020('0x6c'),require(_0x5020('0x6d')));_0x105d09[_0x5020('0x7')](_0x5020('0x6e'),require('./api/interval'));_0x105d09[_0x5020('0x7')](_0x5020('0x6f'),require(_0x5020('0x70')));_0x105d09['use'](_0x5020('0x71'),require('./api/cdr'));_0x105d09[_0x5020('0x7')](_0x5020('0x72'),require(_0x5020('0x73')));_0x105d09[_0x5020('0x7')](_0x5020('0x74'),require(_0x5020('0x75')));_0x105d09['use'](_0x5020('0x76'),require(_0x5020('0x77')));_0x105d09[_0x5020('0x7')](_0x5020('0x78'),require(_0x5020('0x79')));_0x105d09[_0x5020('0x7')](_0x5020('0x7a'),require('./api/contactItemType'));_0x105d09[_0x5020('0x7')]('/api/cm_contact_has_items',require('./api/cmContactHasItem'));_0x105d09['use'](_0x5020('0x7b'),require('./api/cmHopperAdditionalPhone'));_0x105d09['use'](_0x5020('0x7c'),require('./api/template'));_0x105d09[_0x5020('0x7')]('/api/triggers',require('./api/trigger'));_0x105d09[_0x5020('0x7')]('/api/variables',require(_0x5020('0x7d')));_0x105d09[_0x5020('0x7')](_0x5020('0x7e'),require(_0x5020('0x7f')));_0x105d09[_0x5020('0x7')]('/api/integrations/reports',require(_0x5020('0x80')));_0x105d09[_0x5020('0x7')](_0x5020('0x81'),require('./api/analyticCustomReport'));_0x105d09[_0x5020('0x7')]('/api/analytics/default_reports',require('./api/analyticDefaultReport'));_0x105d09['use'](_0x5020('0x82'),require('./api/analyticExtractedReport'));_0x105d09[_0x5020('0x7')](_0x5020('0x83'),require(_0x5020('0x84')));_0x105d09[_0x5020('0x7')](_0x5020('0x85'),require(_0x5020('0x86')));_0x105d09['use'](_0x5020('0x87'),require(_0x5020('0x88')));_0x105d09[_0x5020('0x7')]('/api/integrations/salesforce/accounts',require('./api/intSalesforceAccount'));_0x105d09['use']('/api/integrations/salesforce/configurations',require(_0x5020('0x89')));_0x105d09[_0x5020('0x7')](_0x5020('0x8a'),require(_0x5020('0x8b')));_0x105d09[_0x5020('0x7')](_0x5020('0x8c'),require(_0x5020('0x8d')));_0x105d09[_0x5020('0x7')](_0x5020('0x8e'),require('./api/intSugarcrmConfiguration'));_0x105d09[_0x5020('0x7')]('/api/integrations/sugarcrm/fields',require(_0x5020('0x8f')));_0x105d09[_0x5020('0x7')]('/api/integrations/desk/accounts',require(_0x5020('0x90')));_0x105d09[_0x5020('0x7')](_0x5020('0x91'),require(_0x5020('0x92')));_0x105d09[_0x5020('0x7')]('/api/integrations/desk/fields',require(_0x5020('0x93')));_0x105d09['use'](_0x5020('0x94'),require(_0x5020('0x95')));_0x105d09[_0x5020('0x7')](_0x5020('0x96'),require(_0x5020('0x97')));_0x105d09[_0x5020('0x7')]('/api/integrations/zoho/fields',require(_0x5020('0x98')));_0x105d09['use'](_0x5020('0x99'),require('./api/intZendeskAccount'));_0x105d09[_0x5020('0x7')](_0x5020('0x9a'),require(_0x5020('0x9b')));_0x105d09['use'](_0x5020('0x9c'),require(_0x5020('0x9d')));_0x105d09[_0x5020('0x7')](_0x5020('0x9e'),require(_0x5020('0x9f')));_0x105d09[_0x5020('0x7')](_0x5020('0xa0'),require('./api/intFreshdeskConfiguration'));_0x105d09[_0x5020('0x7')](_0x5020('0xa1'),require(_0x5020('0xa2')));_0x105d09[_0x5020('0x7')](_0x5020('0xa3'),require(_0x5020('0xa4')));_0x105d09[_0x5020('0x7')]('/api/integrations/vtiger/configurations',require(_0x5020('0xa5')));_0x105d09[_0x5020('0x7')](_0x5020('0xa6'),require('./api/intVtigerField'));_0x105d09['use'](_0x5020('0xa7'),require(_0x5020('0xa8')));_0x105d09['use'](_0x5020('0xa9'),require(_0x5020('0xaa')));_0x105d09[_0x5020('0x7')]('/api/integrations/servicenow/fields',require(_0x5020('0xab')));_0x105d09['use'](_0x5020('0xac'),require(_0x5020('0xad')));_0x105d09[_0x5020('0x7')](_0x5020('0xae'),require(_0x5020('0xaf')));_0x105d09[_0x5020('0x7')](_0x5020('0xb0'),require(_0x5020('0xb1')));_0x105d09[_0x5020('0x7')](_0x5020('0xb2'),require('./api/intFreshsalesAccount'));_0x105d09[_0x5020('0x7')](_0x5020('0xb3'),require(_0x5020('0xb4')));_0x105d09['use']('/api/integrations/freshsales/fields',require('./api/intFreshsalesField'));_0x105d09['use'](_0x5020('0xb5'),require('./api/network'));_0x105d09[_0x5020('0x7')](_0x5020('0xb6'),require(_0x5020('0xb7')));_0x105d09['use'](_0x5020('0xb8'),require(_0x5020('0xb9')));_0x105d09[_0x5020('0x7')]('/api/jscripty/answers/reports',require('./api/jscriptyAnswerReport'));_0x105d09['use'](_0x5020('0xba'),require('./api/jscriptyQuestionReport'));_0x105d09[_0x5020('0x7')]('/api/jscripty/sessions/reports',require(_0x5020('0xbb')));_0x105d09[_0x5020('0x7')](_0x5020('0xbc'),require(_0x5020('0xbd')));_0x105d09[_0x5020('0x7')]('/api/square/reports',require(_0x5020('0xbe')));_0x105d09[_0x5020('0x7')](_0x5020('0xbf'),require(_0x5020('0xc0')));_0x105d09[_0x5020('0x7')](_0x5020('0xc1'),require('./api/jscriptyProject'));_0x105d09[_0x5020('0x7')](_0x5020('0xc2'),require('./api/setting'));_0x105d09[_0x5020('0x7')]('/api/square/odbc',require(_0x5020('0xc3')));_0x105d09[_0x5020('0x7')](_0x5020('0xc4'),require('./api/squareProject'));_0x105d09[_0x5020('0x7')](_0x5020('0xc5'),require(_0x5020('0xc6')));_0x105d09[_0x5020('0x7')]('/api/square/messages',require(_0x5020('0xc7')));_0x105d09[_0x5020('0x7')]('/api/teams',require(_0x5020('0xc8')));_0x105d09['use'](_0x5020('0xc9'),require(_0x5020('0xca')));_0x105d09['use']('/api/campaigns',require(_0x5020('0xcb')));_0x105d09[_0x5020('0x7')]('/api/migrations',require(_0x5020('0xcc')));_0x105d09[_0x5020('0x7')]('/api/attachments',require('./api/attachment'));_0x105d09['use'](_0x5020('0xcd'),require(_0x5020('0xce')));_0x105d09['use'](_0x5020('0xcf'),require(_0x5020('0xd0')));_0x105d09[_0x5020('0x7')](_0x5020('0xd1'),require(_0x5020('0xd2')));_0x105d09[_0x5020('0x7')](_0x5020('0xd3'),require('./api/faxTransferReport'));_0x105d09[_0x5020('0x7')](_0x5020('0xd4'),require('./api/openchannelTransferReport'));_0x105d09[_0x5020('0x7')](_0x5020('0xd5'),require(_0x5020('0xd6')));_0x105d09['use']('/api/cm/lists',require(_0x5020('0xd7')));_0x105d09[_0x5020('0x7')](_0x5020('0xd8'),require(_0x5020('0xd9')));_0x105d09[_0x5020('0x7')](_0x5020('0xda'),require(_0x5020('0xdb')));_0x105d09[_0x5020('0x7')](_0x5020('0xdc'),require('./api/userProfileSection'));_0x105d09['use'](_0x5020('0xdd'),require(_0x5020('0xde')));_0x105d09['use'](_0x5020('0xdf'),require(_0x5020('0xe0')));_0x105d09['use'](_0x5020('0xe1'),require('./api/whatsappAccount'));_0x105d09[_0x5020('0x7')](_0x5020('0xe2'),require(_0x5020('0xe3')));_0x105d09[_0x5020('0x7')](_0x5020('0xe4'),require(_0x5020('0xe5')));_0x105d09[_0x5020('0x7')](_0x5020('0xe6'),require(_0x5020('0xe7')));_0x105d09[_0x5020('0x7')](_0x5020('0xe8'),require('./api/whatsappQueueReport'));_0x105d09[_0x5020('0x7')](_0x5020('0xe9'),require('./api/whatsappTransferReport'));_0x105d09[_0x5020('0x7')]('/api/whatsapp/queues',require(_0x5020('0xea')));_0x105d09[_0x5020('0x7')](_0x5020('0xeb'),require(_0x5020('0xec')));_0x105d09['use'](_0x5020('0xed'),require('./api/realtime'));_0x105d09[_0x5020('0x7')](_0x5020('0xee'),require(_0x5020('0xef')));_0x105d09[_0x5020('0x7')](_0x5020('0xf0'),require(_0x5020('0xf1')));_0x105d09[_0x5020('0x7')](_0x5020('0xf2'),require(_0x5020('0xf3')));_0x105d09['use'](_0x5020('0xf4'),require(_0x5020('0xf5')));_0x105d09[_0x5020('0x7')]('/api/jira',require(_0x5020('0xf6')));_0x105d09['use'](_0x5020('0xf7'),require('./api/rpc'));_0x105d09[_0x5020('0x7')]('/api/version',require(_0x5020('0xf8')));_0x105d09[_0x5020('0x7')](_0x5020('0xf9'),require(_0x5020('0xfa')));_0x105d09[_0x5020('0x7')](_0x5020('0xfb'),require(_0x5020('0xfc')));_0x105d09[_0x5020('0x7')](_0x5020('0xfd'),require(_0x5020('0xfe')));_0x105d09[_0x5020('0x7')](_0x5020('0xff'),clientSideLogs);_0x105d09[_0x5020('0x7')]('/apidoc',express['static'](path[_0x5020('0x100')](config[_0x5020('0x101')],_0x5020('0x102'))));_0x105d09[_0x5020('0x7')](_0x5020('0x103'),express['static'](path['join'](config[_0x5020('0x101')],_0x5020('0x103'))));_0x105d09[_0x5020('0x7')]('/demo',express['static'](path[_0x5020('0x100')](config[_0x5020('0x101')],'/demo')));_0x105d09[_0x5020('0x7')](_0x5020('0x104'),express[_0x5020('0x105')](path[_0x5020('0x100')](config[_0x5020('0x101')],_0x5020('0x106'),_0x5020('0x107'))));_0x105d09[_0x5020('0x7')](_0x5020('0x108'),express['static'](path[_0x5020('0x100')](config['root'],_0x5020('0x109'))));_0x105d09[_0x5020('0x10a')](_0x5020('0x10b'))[_0x5020('0x10c')](errors[0x194]);_0x105d09[_0x5020('0x10a')]('/*')['get'](function(_0x3ecdff,_0x9b3c96){_0x9b3c96[_0x5020('0x10d')](path[_0x5020('0x10e')](_0x105d09[_0x5020('0x10c')](_0x5020('0x10f'))+_0x5020('0x110')));});return _0x105d09;});};
\ No newline at end of file
+var _0x581a=['3.5.0','/server/files/plugins','route','get','resolve','appPath','/index.html','path','express','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','default','use','./api/user','/api/voice/chanspy','./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/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/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/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/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','./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/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopperBlack','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/actions','/api/automations','./api/automation','./api/cannedAnswer','/api/dispositions','./api/disposition','./api/condition','/api/intervals','./api/interval','./api/pause','/api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','/api/sounds','./api/sound','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/template','/api/triggers','/api/variables','./api/variable','/api/integrations','./api/integration','./api/integrationReport','./api/analyticCustomReport','/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/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','/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/integrations/freshsales/accounts','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./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/square/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/migration','/api/attachments','./api/attachment','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappMessage','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','/api/whatsapp/queues','./api/whatsappQueue','./api/cloudProvider','/api/realtime','/api/user-settings','./api/user-setting','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','./api/jira','/api/rpc','./api/rpc','/api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','root','join','/www','/demo','/snippet','snippet'];(function(_0x34743d,_0x10e4ff){var _0x305ca0=function(_0x87a4df){while(--_0x87a4df){_0x34743d['push'](_0x34743d['shift']());}};_0x305ca0(++_0x10e4ff);}(_0x581a,0x127));var _0xa581=function(_0x36aa74,_0x57eb63){_0x36aa74=_0x36aa74-0x0;var _0x3627e1=_0x581a[_0x36aa74];return _0x3627e1;};'use strict';var path=require(_0xa581('0x0'));var express=require(_0xa581('0x1'));var errors=require('./errors');var config=require(_0xa581('0x2'));var setupLoggers=require(_0xa581('0x3'))[_0xa581('0x4')];var clientSideLogs=require(_0xa581('0x5'));exports[_0xa581('0x6')]=function(_0x4e64cc){return setupLoggers(_0x4e64cc)['then'](function(){_0x4e64cc[_0xa581('0x7')]('/api/users',require(_0xa581('0x8')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x9'),require(_0xa581('0xa')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb'),require(_0xa581('0xc')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd'),require(_0xa581('0xe')));_0x4e64cc[_0xa581('0x7')]('/api/voice/mohs',require(_0xa581('0xf')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x10'),require(_0xa581('0x11')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x12'),require(_0xa581('0x13')));_0x4e64cc['use'](_0xa581('0x14'),require(_0xa581('0x15')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x16'),require(_0xa581('0x17')));_0x4e64cc['use'](_0xa581('0x18'),require(_0xa581('0x19')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x1a'),require('./api/voiceCallReport'));_0x4e64cc['use'](_0xa581('0x1b'),require(_0xa581('0x1c')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x1d'),require(_0xa581('0x1e')));_0x4e64cc['use'](_0xa581('0x1f'),require(_0xa581('0x20')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x21'),require(_0xa581('0x22')));_0x4e64cc[_0xa581('0x7')]('/api/trunks',require('./api/trunk'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x23'),require(_0xa581('0x24')));_0x4e64cc['use'](_0xa581('0x25'),require(_0xa581('0x26')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x27'),require(_0xa581('0x28')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x29'),require(_0xa581('0x2a')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x2b'),require(_0xa581('0x2c')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x2d'),require('./api/mailInteraction'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x2e'),require(_0xa581('0x2f')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x30'),require(_0xa581('0x31')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x32'),require(_0xa581('0x33')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x34'),require(_0xa581('0x35')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x36'),require(_0xa581('0x37')));_0x4e64cc[_0xa581('0x7')]('/api/fax/accounts',require(_0xa581('0x38')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x39'),require('./api/faxApplication'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x3a'),require(_0xa581('0x3b')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x3c'),require('./api/faxMessage'));_0x4e64cc[_0xa581('0x7')]('/api/fax/queues',require(_0xa581('0x3d')));_0x4e64cc['use'](_0xa581('0x3e'),require(_0xa581('0x3f')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x40'),require('./api/smsAccount'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x41'),require(_0xa581('0x42')));_0x4e64cc['use'](_0xa581('0x43'),require(_0xa581('0x44')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x45'),require(_0xa581('0x46')));_0x4e64cc['use'](_0xa581('0x47'),require(_0xa581('0x48')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x49'),require(_0xa581('0x4a')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x4b'),require(_0xa581('0x4c')));_0x4e64cc[_0xa581('0x7')]('/api/openchannel/interactions',require(_0xa581('0x4d')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x4e'),require('./api/openchannelMessage'));_0x4e64cc['use'](_0xa581('0x4f'),require(_0xa581('0x50')));_0x4e64cc['use']('/api/chat/websites',require(_0xa581('0x51')));_0x4e64cc[_0xa581('0x7')]('/api/openchannel/reports/queue',require(_0xa581('0x52')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x53'),require('./api/chatApplication'));_0x4e64cc['use'](_0xa581('0x54'),require(_0xa581('0x55')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x56'),require(_0xa581('0x57')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x58'),require(_0xa581('0x59')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x5a'),require(_0xa581('0x5b')));_0x4e64cc[_0xa581('0x7')]('/api/chat/groups',require(_0xa581('0x5c')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x5d'),require(_0xa581('0x5e')));_0x4e64cc[_0xa581('0x7')]('/api/cm/companies',require(_0xa581('0x5f')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x60'),require(_0xa581('0x61')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x62'),require('./api/cmHopper'));_0x4e64cc[_0xa581('0x7')]('/api/cm/hopper_black',require(_0xa581('0x63')));_0x4e64cc['use']('/api/cm/hopper_final',require(_0xa581('0x64')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x65'),require(_0xa581('0x66')));_0x4e64cc['use']('/api/cm/custom_fields',require('./api/cmCustomField'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x67'),require('./api/action'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x68'),require(_0xa581('0x69')));_0x4e64cc[_0xa581('0x7')]('/api/canned_answers',require(_0xa581('0x6a')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x6b'),require(_0xa581('0x6c')));_0x4e64cc[_0xa581('0x7')]('/api/conditions',require(_0xa581('0x6d')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x6e'),require(_0xa581('0x6f')));_0x4e64cc['use']('/api/pauses',require(_0xa581('0x70')));_0x4e64cc['use'](_0xa581('0x71'),require('./api/cdr'));_0x4e64cc['use'](_0xa581('0x72'),require(_0xa581('0x73')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x74'),require('./api/schedule'));_0x4e64cc['use'](_0xa581('0x75'),require(_0xa581('0x76')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x77'),require(_0xa581('0x78')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x79'),require(_0xa581('0x7a')));_0x4e64cc['use'](_0xa581('0x7b'),require(_0xa581('0x7c')));_0x4e64cc['use'](_0xa581('0x7d'),require(_0xa581('0x7e')));_0x4e64cc['use'](_0xa581('0x7f'),require(_0xa581('0x80')));_0x4e64cc['use'](_0xa581('0x81'),require('./api/trigger'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x82'),require(_0xa581('0x83')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x84'),require(_0xa581('0x85')));_0x4e64cc[_0xa581('0x7')]('/api/integrations/reports',require(_0xa581('0x86')));_0x4e64cc[_0xa581('0x7')]('/api/analytics/custom_reports',require(_0xa581('0x87')));_0x4e64cc['use'](_0xa581('0x88'),require(_0xa581('0x89')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x8a'),require(_0xa581('0x8b')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x8c'),require('./api/analyticMetric'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x8d'),require(_0xa581('0x8e')));_0x4e64cc['use'](_0xa581('0x8f'),require(_0xa581('0x90')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x91'),require(_0xa581('0x92')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x93'),require('./api/intSalesforceConfiguration'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x94'),require(_0xa581('0x95')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x96'),require(_0xa581('0x97')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x98'),require(_0xa581('0x99')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x9a'),require('./api/intSugarcrmField'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x9b'),require(_0xa581('0x9c')));_0x4e64cc[_0xa581('0x7')]('/api/integrations/desk/configurations',require(_0xa581('0x9d')));_0x4e64cc['use'](_0xa581('0x9e'),require(_0xa581('0x9f')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xa0'),require(_0xa581('0xa1')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xa2'),require(_0xa581('0xa3')));_0x4e64cc[_0xa581('0x7')]('/api/integrations/zoho/fields',require(_0xa581('0xa4')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xa5'),require(_0xa581('0xa6')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xa7'),require(_0xa581('0xa8')));_0x4e64cc['use'](_0xa581('0xa9'),require('./api/intZendeskField'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xaa'),require(_0xa581('0xab')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xac'),require(_0xa581('0xad')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xae'),require(_0xa581('0xaf')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb0'),require(_0xa581('0xb1')));_0x4e64cc[_0xa581('0x7')]('/api/integrations/vtiger/configurations',require(_0xa581('0xb2')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb3'),require('./api/intVtigerField'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb4'),require('./api/intServicenowAccount'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb5'),require(_0xa581('0xb6')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb7'),require(_0xa581('0xb8')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb9'),require(_0xa581('0xba')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xbb'),require('./api/intDynamics365Configuration'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xbc'),require('./api/intDynamics365Field'));_0x4e64cc['use'](_0xa581('0xbd'),require(_0xa581('0xbe')));_0x4e64cc['use']('/api/integrations/freshsales/configurations',require(_0xa581('0xbf')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xc0'),require(_0xa581('0xc1')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xc2'),require(_0xa581('0xc3')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xc4'),require(_0xa581('0xc5')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xc6'),require(_0xa581('0xc7')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xc8'),require(_0xa581('0xc9')));_0x4e64cc['use'](_0xa581('0xca'),require(_0xa581('0xcb')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xcc'),require(_0xa581('0xcd')));_0x4e64cc[_0xa581('0x7')]('/api/sms/reports/queue',require('./api/smsQueueReport'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xce'),require('./api/squareReport'));_0x4e64cc[_0xa581('0x7')]('/api/square/details/reports',require(_0xa581('0xcf')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd0'),require(_0xa581('0xd1')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd2'),require(_0xa581('0xd3')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd4'),require(_0xa581('0xd5')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd6'),require(_0xa581('0xd7')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd8'),require(_0xa581('0xd9')));_0x4e64cc['use'](_0xa581('0xda'),require(_0xa581('0xdb')));_0x4e64cc['use'](_0xa581('0xdc'),require(_0xa581('0xdd')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xde'),require(_0xa581('0xdf')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xe0'),require('./api/campaign'));_0x4e64cc[_0xa581('0x7')]('/api/migrations',require(_0xa581('0xe1')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xe2'),require(_0xa581('0xe3')));_0x4e64cc[_0xa581('0x7')]('/api/plugins',require(_0xa581('0xe4')));_0x4e64cc['use'](_0xa581('0xe5'),require(_0xa581('0xe6')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xe7'),require('./api/chatTransferReport'));_0x4e64cc['use']('/api/fax/reports/transfer',require(_0xa581('0xe8')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xe9'),require('./api/openchannelTransferReport'));_0x4e64cc['use'](_0xa581('0xea'),require(_0xa581('0xeb')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xec'),require(_0xa581('0xed')));_0x4e64cc['use'](_0xa581('0xee'),require('./api/voicePrefix'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xef'),require(_0xa581('0xf0')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xf1'),require(_0xa581('0xf2')));_0x4e64cc['use']('/api/userProfile/resources',require('./api/userProfileResource'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xf3'),require(_0xa581('0xf4')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xf5'),require('./api/whatsappAccount'));_0x4e64cc['use'](_0xa581('0xf6'),require('./api/whatsappApplication'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xf7'),require('./api/whatsappInteraction'));_0x4e64cc[_0xa581('0x7')]('/api/whatsapp/messages',require(_0xa581('0xf8')));_0x4e64cc[_0xa581('0x7')]('/api/whatsapp/reports/queue',require(_0xa581('0xf9')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xfa'),require('./api/whatsappTransferReport'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xfb'),require(_0xa581('0xfc')));_0x4e64cc[_0xa581('0x7')]('/api/cloudProviders',require(_0xa581('0xfd')));_0x4e64cc['use'](_0xa581('0xfe'),require('./api/realtime'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xff'),require(_0xa581('0x100')));_0x4e64cc[_0xa581('0x7')]('/api/auth/local',require(_0xa581('0x101')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x102'),require(_0xa581('0x103')));_0x4e64cc['use'](_0xa581('0x104'),require(_0xa581('0x105')));_0x4e64cc['use']('/api/jira',require(_0xa581('0x106')));_0x4e64cc['use'](_0xa581('0x107'),require(_0xa581('0x108')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x109'),require('./api/version'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x10a'),require(_0xa581('0x10b')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x10c'),require(_0xa581('0x10d')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x10e'),require(_0xa581('0x10f')));_0x4e64cc['use'](_0xa581('0x110'),clientSideLogs);_0x4e64cc['use'](_0xa581('0x111'),express[_0xa581('0x112')](path['join'](config[_0xa581('0x113')],_0xa581('0x111'))));_0x4e64cc[_0xa581('0x7')]('/www',express[_0xa581('0x112')](path[_0xa581('0x114')](config['root'],_0xa581('0x115'))));_0x4e64cc[_0xa581('0x7')](_0xa581('0x116'),express[_0xa581('0x112')](path[_0xa581('0x114')](config[_0xa581('0x113')],_0xa581('0x116'))));_0x4e64cc[_0xa581('0x7')](_0xa581('0x117'),express[_0xa581('0x112')](path[_0xa581('0x114')](config[_0xa581('0x113')],_0xa581('0x118'),_0xa581('0x119'))));_0x4e64cc['use']('/plugins',express[_0xa581('0x112')](path[_0xa581('0x114')](config[_0xa581('0x113')],_0xa581('0x11a'))));_0x4e64cc[_0xa581('0x11b')]('/:url(api|auth|components|app|bower_components|assets)/*')['get'](errors[0x194]);_0x4e64cc[_0xa581('0x11b')]('/*')[_0xa581('0x11c')](function(_0xa3d8f,_0x160beb){_0x160beb['sendFile'](path[_0xa581('0x11d')](_0x4e64cc[_0xa581('0x11c')](_0xa581('0x11e'))+_0xa581('0x11f')));});return _0x4e64cc;});};
\ No newline at end of file
index d95af1a..19edf1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6916=['../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxMessage/faxMessage.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/chatInteraction/chatInteraction.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc'];(function(_0x5b7a4a,_0x54c362){var _0x5feaf9=function(_0x221637){while(--_0x221637){_0x5b7a4a['push'](_0x5b7a4a['shift']());}};_0x5feaf9(++_0x54c362);}(_0x6916,0x1bb));var _0x6691=function(_0x1007cd,_0x158405){_0x1007cd=_0x1007cd-0x0;var _0x58551e=_0x6916[_0x1007cd];return _0x58551e;};'use strict';var jayson=require('jayson/promise');var _=require(_0x6691('0x0'));var config=require(_0x6691('0x1'));exports[_0x6691('0x2')]=function(){return new Promise(function(_0x5dda90,_0x4cf519){var _0x5c6e7b={};_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x4')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/voiceExtension/voiceExtension.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/voiceQueue/voiceQueue.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x5')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x6')));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x7')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x8')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x9')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0xa')));_0x5c6e7b=_['merge'](_0x5c6e7b,require('../api/trunk/trunk.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0xb')));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0xc')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0xd')));_0x5c6e7b=_['merge'](_0x5c6e7b,require('../api/mailAccount/mailAccount.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0xe')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0xf')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/mailMessage/mailMessage.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x10')));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x11')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x12')));_0x5c6e7b=_['merge'](_0x5c6e7b,require('../api/faxApplication/faxApplication.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/faxInteraction/faxInteraction.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x13')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/faxQueue/faxQueue.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/faxQueueReport/faxQueueReport.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x14')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x15')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x16')));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x17')));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x18')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x19')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x1a')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x1b')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/chatMessage/chatMessage.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require('../api/chatQueue/chatQueue.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x1c')));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x1d')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x1e')));_0x5c6e7b=_['merge'](_0x5c6e7b,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x1f')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x20')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/pause/pause.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x21')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x22')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x23')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x24')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/variable/variable.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x25')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x26')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x27')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x28')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x29')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x2a')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x2b')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/squareReport/squareReport.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x2c')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x2d')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x2e')));_0x5c6e7b=_['merge'](_0x5c6e7b,require('../api/squareProject/squareProject.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x2f')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x30')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/campaign/campaign.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/attachment/attachment.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/plugin/plugin.rpc'));_0x5c6e7b=_['merge'](_0x5c6e7b,require(_0x6691('0x31')));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x32')));_0x5c6e7b=_['merge'](_0x5c6e7b,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x5c6e7b=_[_0x6691('0x3')](_0x5c6e7b,require(_0x6691('0x33')));var _0x40bcfa=jayson['server'](_0x5c6e7b)['http']();var _0x3a5ac7=config[_0x6691('0x34')][_0x6691('0x35')]||config[_0x6691('0x35')]+0x1;var _0x33b89d=config[_0x6691('0x34')]['ip']||_0x6691('0x36');_0x40bcfa['on'](_0x6691('0x37'),function(_0x34a509){return _0x4cf519(_0x34a509);});_0x40bcfa[_0x6691('0x2')](_0x3a5ac7,_0x33b89d,function(){console[_0x6691('0x38')](_0x6691('0x39'),_0x33b89d,_0x3a5ac7);require(_0x6691('0x3a'))[_0x6691('0x3b')]();return _0x5dda90(_0x6691('0x3c')+_0x33b89d+':'+_0x3a5ac7);});});};
\ No newline at end of file
+var _0x1067=['../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','port','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/memberReport/memberReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc'];(function(_0x53b41e,_0x1a738d){var _0xa12883=function(_0x3b7693){while(--_0x3b7693){_0x53b41e['push'](_0x53b41e['shift']());}};_0xa12883(++_0x1a738d);}(_0x1067,0xa8));var _0x7106=function(_0x403be8,_0x2eccc5){_0x403be8=_0x403be8-0x0;var _0x467f57=_0x1067[_0x403be8];return _0x467f57;};'use strict';var jayson=require('jayson/promise');var _=require(_0x7106('0x0'));var config=require(_0x7106('0x1'));exports[_0x7106('0x2')]=function(){return new Promise(function(_0x48a7f2,_0x5da5b3){var _0x362025={};_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x4')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x5')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x6')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/voiceRecording/voiceRecording.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x7')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x8')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x9')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x362025=_['merge'](_0x362025,require(_0x7106('0xa')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/trunk/trunk.rpc'));_0x362025=_['merge'](_0x362025,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x362025=_['merge'](_0x362025,require(_0x7106('0xb')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/mailServerIn/mailServerIn.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0xc')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0xd')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0xe')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0xf')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x10')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x11')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x12')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x13')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x14')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/faxMessage/faxMessage.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/faxQueue/faxQueue.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x15')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x16')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/smsInteraction/smsInteraction.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x17')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/smsQueue/smsQueue.rpc'));_0x362025=_['merge'](_0x362025,require(_0x7106('0x18')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x19')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x1a')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x1b')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/chatInteraction/chatInteraction.rpc'));_0x362025=_['merge'](_0x362025,require(_0x7106('0x1c')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x1d')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x1e')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x1f')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x20')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x21')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x22')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x23')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/interval/interval.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x24')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x25')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x26')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x27')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x28')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x29')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2a')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2b')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2c')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2d')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2e')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2f')));_0x362025=_['merge'](_0x362025,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x30')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x31')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/squareReport/squareReport.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x32')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/setting/setting.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x33')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x34')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x35')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x36')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x37')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/attachment/attachment.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x38')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x362025=_['merge'](_0x362025,require(_0x7106('0x39')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x3a')));var _0x4fc08e=jayson['server'](_0x362025)[_0x7106('0x3b')]();var _0x3f98b8=config[_0x7106('0x3c')]['port']||config[_0x7106('0x3d')]+0x1;var _0x165118=config[_0x7106('0x3c')]['ip']||'localhost';_0x4fc08e['on'](_0x7106('0x3e'),function(_0x44848b){return _0x5da5b3(_0x44848b);});_0x4fc08e[_0x7106('0x2')](_0x3f98b8,_0x165118,function(){console[_0x7106('0x3f')](_0x7106('0x40'),_0x165118,_0x3f98b8);require(_0x7106('0x41'))['default']();return _0x48a7f2(_0x7106('0x42')+_0x165118+':'+_0x3f98b8);});});};
\ No newline at end of file
index 310fedf..8a49750 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9261=['sayPhonetic','continueAt','setExtension','setPriority','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','AGI','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','EventEmitter','./reply','./error','call','utf8','setEncoding','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','indexOf','substr','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','destroy','pipe','command','write','sync','prototype','answer','getData','beep','sendRequest','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','SET\x20EXTENSION\x20%s','HANGUP','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s'];(function(_0x5caebe,_0x477a11){var _0x346dc4=function(_0x1dae1a){while(--_0x1dae1a){_0x5caebe['push'](_0x5caebe['shift']());}};_0x346dc4(++_0x477a11);}(_0x9261,0x1de));var _0x1926=function(_0x446f11,_0x95cf21){_0x446f11=_0x446f11-0x0;var _0x385cb5=_0x9261[_0x446f11];return _0x385cb5;};'use strict';var util=require(_0x1926('0x0'));var _=require(_0x1926('0x1'));var EventEmitter=require('events')[_0x1926('0x2')];var AGIReply=require(_0x1926('0x3'));var AGIError=require(_0x1926('0x4'));function AGIChannel(_0x585b7e){var _0x1b2b33=this,_0x2fb805=new AGIReply(),_0x269cb1=![],_0x31eef2={};EventEmitter[_0x1926('0x5')](_0x1b2b33);_0x585b7e['setEncoding'](_0x1926('0x6'));_0x585b7e['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x2fb805[_0x1926('0x7')](_0x1926('0x6'));_0x2fb805['on']('headers',function(_0x37affe){for(var _0x2fb92c in _0x37affe){_0x1b2b33[_0x2fb92c]=_0x37affe[_0x2fb92c];}_0x1b2b33[_0x1926('0x8')](_0x1926('0x9'));});_0x2fb805['on'](_0x1926('0xa'),function(_0x3231ba){if(_0x3231ba[_0x1926('0xb')]()==_0x1926('0xc')){_0x1b2b33[_0x1926('0x8')](_0x1926('0xc'));return;}if(_0x3231ba[_0x1926('0xd')](0x0,0xb)==_0x1926('0xe')){_0x269cb1=!![];}if(_0x269cb1){_0x31eef2['rx']+=_0x3231ba+'\x0a';if(_0x3231ba[_0x1926('0xf')](_0x1926('0x10'))!=-0x1){_0x269cb1=![];}}else{_0x31eef2['rx']=_0x3231ba;}if(_0x269cb1){return;}if(typeof _0x31eef2['cb']==_0x1926('0x11')){var _0x3d4817=_0x31eef2['rx'][_0x1926('0xd')](0x0,0x3),_0x10a758=null,_0x41f84d=null;_0x3d4817=parseInt(_0x3d4817);if(isNaN(_0x3d4817)){_0x31eef2['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x1926('0x12')});return;}if(_0x3d4817!=0xc8){_0x31eef2['cb'](null,{'code':_0x3d4817,'result':-0x1,'extra':'KO'});return;}_0x10a758=_0x31eef2['rx'][_0x1926('0xd')](0x4)[_0x1926('0x13')](_0x1926('0x14'),'');if(_0x10a758[_0x1926('0x15')]('\x20')!=-0x1){_0x10a758=_0x10a758[_0x1926('0x16')](0x0,_0x10a758[_0x1926('0x15')]('\x20'));}if(_['startsWith'](_0x10a758,'-1')){_0x10a758=parseInt(_0x10a758);}_0x41f84d=_0x31eef2['rx'][_0x1926('0x17')]('\x20');if(_0x41f84d[_0x1926('0x18')]==0x3){_0x41f84d=_0x41f84d[0x2][_0x1926('0xd')](0x1,_0x41f84d[0x2]['length']-0x1);}else if(_0x41f84d[_0x1926('0x18')]>0x3){var _0x202e33=/\((.+)\)/;var _0x50da1e=_0x31eef2['rx'][_0x1926('0x19')](_0x202e33);if(_0x50da1e){_0x41f84d=_0x50da1e[0x1];}else{_0x41f84d=null;}}else{_0x41f84d=null;}_0x31eef2['cb'](null,{'code':_0x3d4817,'result':_0x10a758,'extra':_0x41f84d});}});_0x585b7e['on'](_0x1926('0x1a'),function(_0xdfa757){_0x1b2b33[_0x1926('0x8')](_0x1926('0x1a'),new AGIError(_0x1926('0x1b'),_0xdfa757[_0x1926('0x1c')]));});_0x585b7e['on'](_0x1926('0x1d'),function(){_0x1b2b33[_0x1926('0x8')](_0x1926('0x1d'),new AGIError(_0x1926('0x1e')));});_0x585b7e['on'](_0x1926('0x1f'),function(){_0x1b2b33[_0x1926('0x8')]('timeout',new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x585b7e[_0x1926('0x20')]();});_0x585b7e[_0x1926('0x21')](_0x2fb805);this[_0x1926('0x22')]=function(_0x3ba584,_0x2361e2){var _0x3ba584=_0x3ba584||'',_0x2361e2=typeof _0x2361e2==_0x1926('0x11')?_0x2361e2:new Function();_0x31eef2={'tx':_0x3ba584,'rx':'','cb':_0x2361e2};_0x585b7e[_0x1926('0x23')](_0x3ba584+'\x0a');},this[_0x1926('0x1d')]=function(){_0x585b7e[_0x1926('0x20')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel['prototype']['sendRequest']=function(_0x5634a9){return this[_0x1926('0x22')][_0x1926('0x24')](this,_0x5634a9);};AGIChannel[_0x1926('0x25')][_0x1926('0x26')]=function(){return this['sendRequest']('ANSWER');};AGIChannel['prototype'][_0x1926('0x27')]=function(_0x142f45,_0x55385a,_0x1c0d63){_0x142f45=_0x142f45===undefined?_0x1926('0x28'):_0x142f45;_0x55385a=_0x55385a===undefined?'5':_0x55385a;_0x1c0d63=_0x1c0d63===undefined?'1':_0x1c0d63;return this[_0x1926('0x29')](util[_0x1926('0x2a')](_0x1926('0x2b'),_0x142f45,_0x55385a*0x3e8,_0x1c0d63));};AGIChannel[_0x1926('0x25')][_0x1926('0x2c')]=function(_0xd60129){_0xd60129=_0xd60129||_0x1926('0x2d');return this['sendRequest'](util[_0x1926('0x2a')](_0x1926('0x2e'),_0xd60129));};AGIChannel[_0x1926('0x25')][_0x1926('0x2f')]=function(_0x486a2e,_0x391915){if(_[_0x1926('0x30')](_0x391915)){return this[_0x1926('0x29')](util[_0x1926('0x2a')](_0x1926('0x31'),_0x486a2e,_0x391915['join'](',')));}return this[_0x1926('0x29')](util['format'](_0x1926('0x31'),_0x486a2e,_0x391915));};AGIChannel[_0x1926('0x25')][_0x1926('0x32')]=function(_0x33d4a4){return this['sendRequest'](util[_0x1926('0x2a')](_0x1926('0x33'),_0x33d4a4));};AGIChannel[_0x1926('0x25')]['setExtension']=function(_0x9495cd){return this[_0x1926('0x29')](util[_0x1926('0x2a')](_0x1926('0x34'),_0x9495cd));};AGIChannel[_0x1926('0x25')]['setPriority']=function(_0x51cdce){return this[_0x1926('0x29')](util['format']('SET\x20PRIORITY\x20%s',_0x51cdce));};AGIChannel[_0x1926('0x25')]['hangup']=function(){return this[_0x1926('0x29')](_0x1926('0x35'));};AGIChannel[_0x1926('0x25')]['setVariable']=function(_0x6502b,_0x318945){var _0x514886=_['isBoolean'](_0x318945)||_[_0x1926('0x36')](_0x318945)?_0x318945[_0x1926('0x37')]():_0x318945;return this[_0x1926('0x29')](util[_0x1926('0x2a')](_0x1926('0x38'),_0x6502b,_0x514886?_0x514886['toString']()[_0x1926('0x13')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x1926('0x25')][_0x1926('0x39')]=function(_0x5bb3c0,_0x3b1be0){return this[_0x1926('0x29')](util[_0x1926('0x2a')](_0x1926('0x3a'),_0x5bb3c0,_0x3b1be0));};AGIChannel[_0x1926('0x25')][_0x1926('0x3b')]=function(_0x3535fc,_0x436ed7){return this[_0x1926('0x29')](util[_0x1926('0x2a')](_0x1926('0x3c'),_0x3535fc,_0x436ed7));};AGIChannel[_0x1926('0x25')][_0x1926('0x3d')]=function(_0x372204,_0x2018ae){return this[_0x1926('0x29')](util[_0x1926('0x2a')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x372204,_0x2018ae));};AGIChannel[_0x1926('0x25')][_0x1926('0x3e')]=function(_0x514674,_0xd36832,_0x2fc34c){_0xd36832=_0xd36832||this['extension'];_0x2fc34c=_0x2fc34c||0x1;this[_0x1926('0x32')](_0x514674);this[_0x1926('0x3f')](_0xd36832);this[_0x1926('0x40')](_0x2fc34c);return this[_0x1926('0x2c')](util[_0x1926('0x2a')]('GOTO\x20%s\x20%s\x20%s',_0x514674,_0xd36832,_0x2fc34c));};AGIChannel[_0x1926('0x25')][_0x1926('0x41')]=function(_0x54efec){return this[_0x1926('0x29')](util['format'](_0x1926('0x42'),_0x54efec));};AGIChannel['prototype'][_0x1926('0x43')]=function(_0x2a5c8c,_0x5249b2,_0x3ca2a3,_0x45b072,_0x492d33,_0x3f601e){_0x5249b2=_0x5249b2||_0x1926('0x44');_0x3ca2a3=_0x3ca2a3||'';_0x45b072=_0x45b072===undefined?-0x1:_0x45b072==='-1'?-0x1:_0x45b072*0x3e8;_0x492d33=_0x492d33===undefined?'':'s='+_0x492d33;_0x3f601e=_0x3f601e?_0x1926('0x45'):'';return this[_0x1926('0x29')](util[_0x1926('0x2a')](_0x1926('0x46'),_0x2a5c8c,_0x5249b2,_0x3ca2a3,_0x45b072,_0x3f601e,_0x492d33));};AGIChannel[_0x1926('0x25')][_0x1926('0x47')]=function(_0x3397ae,_0x5cdba8){_0x5cdba8=_0x5cdba8||'';return this['sendRequest'](util[_0x1926('0x2a')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x3397ae,_0x5cdba8));};AGIChannel[_0x1926('0x25')]['agi']=function(_0x3bfd0a){return this[_0x1926('0x2f')](_0x1926('0x48'),_0x3bfd0a);};AGIChannel[_0x1926('0x25')]['wait']=function(_0x26f47b){return this[_0x1926('0x2f')](_0x1926('0x49'),_0x26f47b);};AGIChannel[_0x1926('0x25')][_0x1926('0x1a')]=function(_0x16ed18,_0x503e40){this[_0x1926('0x2c')](util['format'](_0x1926('0x4a'),_0x16ed18['id'],_0x16ed18[_0x1926('0x4b')],_0x503e40));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x1926('0x4c')]=AGIChannel;
\ No newline at end of file
+var _0xee87=['close','timeout','E_AGI_SOCKET_TIMEOUT','destroy','command','write','inherits','prototype','sendRequest','sync','ANSWER','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','setVariable','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','GOTO\x20%s\x20%s\x20%s','GET\x20VARIABLE\x20\x22%s\x22','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','lodash','events','EventEmitter','./reply','./error','setEncoding','setTimeout','utf8','headers','ready','toLowerCase','hangup','emit','substring','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','indexOf','substr','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR'];(function(_0x441db3,_0x10f359){var _0x16c05d=function(_0x4c0d4e){while(--_0x4c0d4e){_0x441db3['push'](_0x441db3['shift']());}};_0x16c05d(++_0x10f359);}(_0xee87,0x10d));var _0x7ee8=function(_0x451b12,_0x20d74b){_0x451b12=_0x451b12-0x0;var _0x3d884d=_0xee87[_0x451b12];return _0x3d884d;};'use strict';var util=require('util');var _=require(_0x7ee8('0x0'));var EventEmitter=require(_0x7ee8('0x1'))[_0x7ee8('0x2')];var AGIReply=require(_0x7ee8('0x3'));var AGIError=require(_0x7ee8('0x4'));function AGIChannel(_0x3c3176){var _0x41c2cc=this,_0x2f1867=new AGIReply(),_0x32466c=![],_0x23a89c={};EventEmitter['call'](_0x41c2cc);_0x3c3176[_0x7ee8('0x5')]('utf8');_0x3c3176[_0x7ee8('0x6')](0x8*0x3c*0x3c*0x3e8);_0x2f1867[_0x7ee8('0x5')](_0x7ee8('0x7'));_0x2f1867['on'](_0x7ee8('0x8'),function(_0x287224){for(var _0x5e8a72 in _0x287224){_0x41c2cc[_0x5e8a72]=_0x287224[_0x5e8a72];}_0x41c2cc['emit'](_0x7ee8('0x9'));});_0x2f1867['on']('line',function(_0x511d54){if(_0x511d54[_0x7ee8('0xa')]()==_0x7ee8('0xb')){_0x41c2cc[_0x7ee8('0xc')](_0x7ee8('0xb'));return;}if(_0x511d54[_0x7ee8('0xd')](0x0,0xb)=='520-Invalid'){_0x32466c=!![];}if(_0x32466c){_0x23a89c['rx']+=_0x511d54+'\x0a';if(_0x511d54['search'](_0x7ee8('0xe'))!=-0x1){_0x32466c=![];}}else{_0x23a89c['rx']=_0x511d54;}if(_0x32466c){return;}if(typeof _0x23a89c['cb']==_0x7ee8('0xf')){var _0x39a4cd=_0x23a89c['rx'][_0x7ee8('0xd')](0x0,0x3),_0x36e82a=null,_0xb4a1bc=null;_0x39a4cd=parseInt(_0x39a4cd);if(isNaN(_0x39a4cd)){_0x23a89c['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x7ee8('0x10')});return;}if(_0x39a4cd!=0xc8){_0x23a89c['cb'](null,{'code':_0x39a4cd,'result':-0x1,'extra':'KO'});return;}_0x36e82a=_0x23a89c['rx'][_0x7ee8('0xd')](0x4)[_0x7ee8('0x11')](_0x7ee8('0x12'),'');if(_0x36e82a[_0x7ee8('0x13')]('\x20')!=-0x1){_0x36e82a=_0x36e82a[_0x7ee8('0x14')](0x0,_0x36e82a[_0x7ee8('0x13')]('\x20'));}if(_[_0x7ee8('0x15')](_0x36e82a,'-1')){_0x36e82a=parseInt(_0x36e82a);}_0xb4a1bc=_0x23a89c['rx'][_0x7ee8('0x16')]('\x20');if(_0xb4a1bc[_0x7ee8('0x17')]==0x3){_0xb4a1bc=_0xb4a1bc[0x2][_0x7ee8('0xd')](0x1,_0xb4a1bc[0x2][_0x7ee8('0x17')]-0x1);}else if(_0xb4a1bc[_0x7ee8('0x17')]>0x3){var _0x3de0b8=/\((.+)\)/;var _0x459f0e=_0x23a89c['rx'][_0x7ee8('0x18')](_0x3de0b8);if(_0x459f0e){_0xb4a1bc=_0x459f0e[0x1];}else{_0xb4a1bc=null;}}else{_0xb4a1bc=null;}_0x23a89c['cb'](null,{'code':_0x39a4cd,'result':_0x36e82a,'extra':_0xb4a1bc});}});_0x3c3176['on'](_0x7ee8('0x19'),function(_0x4028a7){_0x41c2cc[_0x7ee8('0xc')]('error',new AGIError(_0x7ee8('0x1a'),_0x4028a7['code']));});_0x3c3176['on'](_0x7ee8('0x1b'),function(){_0x41c2cc[_0x7ee8('0xc')]('close',new AGIError('E_AGI_SOCKET_CLOSE'));});_0x3c3176['on'](_0x7ee8('0x1c'),function(){_0x41c2cc[_0x7ee8('0xc')](_0x7ee8('0x1c'),new AGIError(_0x7ee8('0x1d')));_0x3c3176[_0x7ee8('0x1e')]();});_0x3c3176['pipe'](_0x2f1867);this[_0x7ee8('0x1f')]=function(_0x43485e,_0x334b46){var _0x43485e=_0x43485e||'',_0x334b46=typeof _0x334b46==_0x7ee8('0xf')?_0x334b46:new Function();_0x23a89c={'tx':_0x43485e,'rx':'','cb':_0x334b46};_0x3c3176[_0x7ee8('0x20')](_0x43485e+'\x0a');},this[_0x7ee8('0x1b')]=function(){_0x3c3176['destroy']();};}util[_0x7ee8('0x21')](AGIChannel,EventEmitter);AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x23')]=function(_0x5568cb){return this[_0x7ee8('0x1f')][_0x7ee8('0x24')](this,_0x5568cb);};AGIChannel[_0x7ee8('0x22')]['answer']=function(){return this[_0x7ee8('0x23')](_0x7ee8('0x25'));};AGIChannel[_0x7ee8('0x22')]['getData']=function(_0x27c94c,_0x4c360d,_0x4d23fb){_0x27c94c=_0x27c94c===undefined?_0x7ee8('0x26'):_0x27c94c;_0x4c360d=_0x4c360d===undefined?'5':_0x4c360d;_0x4d23fb=_0x4d23fb===undefined?'1':_0x4d23fb;return this[_0x7ee8('0x23')](util['format'](_0x7ee8('0x27'),_0x27c94c,_0x4c360d*0x3e8,_0x4d23fb));};AGIChannel['prototype'][_0x7ee8('0x28')]=function(_0x5e81d7){_0x5e81d7=_0x5e81d7||_0x7ee8('0x29');return this['sendRequest'](util[_0x7ee8('0x2a')](_0x7ee8('0x2b'),_0x5e81d7));};AGIChannel['prototype'][_0x7ee8('0x2c')]=function(_0x1f34c5,_0x2d8809){if(_[_0x7ee8('0x2d')](_0x2d8809)){return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x2e'),_0x1f34c5,_0x2d8809['join'](',')));}return this[_0x7ee8('0x23')](util['format'](_0x7ee8('0x2e'),_0x1f34c5,_0x2d8809));};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x2f')]=function(_0x344796){return this['sendRequest'](util[_0x7ee8('0x2a')](_0x7ee8('0x30'),_0x344796));};AGIChannel['prototype'][_0x7ee8('0x31')]=function(_0x279f88){return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x32'),_0x279f88));};AGIChannel['prototype'][_0x7ee8('0x33')]=function(_0x340852){return this[_0x7ee8('0x23')](util['format'](_0x7ee8('0x34'),_0x340852));};AGIChannel['prototype'][_0x7ee8('0xb')]=function(){return this[_0x7ee8('0x23')]('HANGUP');};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x35')]=function(_0x2105f2,_0x5d5b62){var _0x3004e7=_['isBoolean'](_0x5d5b62)||_[_0x7ee8('0x36')](_0x5d5b62)?_0x5d5b62[_0x7ee8('0x37')]():_0x5d5b62;return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x38'),_0x2105f2,_0x3004e7?_0x3004e7[_0x7ee8('0x37')]()[_0x7ee8('0x11')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x39')]=function(_0x465ab0,_0x33fd9b){return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x3a'),_0x465ab0,_0x33fd9b));};AGIChannel['prototype']['sayDigits']=function(_0x3442e7,_0x4d095f){return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x3b'),_0x3442e7,_0x4d095f));};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x3c')]=function(_0x1c996b,_0x28b493){return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x3d'),_0x1c996b,_0x28b493));};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x3e')]=function(_0x11f352,_0x3ef618,_0x23c3c2){_0x3ef618=_0x3ef618||this[_0x7ee8('0x3f')];_0x23c3c2=_0x23c3c2||0x1;this[_0x7ee8('0x2f')](_0x11f352);this[_0x7ee8('0x31')](_0x3ef618);this[_0x7ee8('0x33')](_0x23c3c2);return this[_0x7ee8('0x28')](util['format'](_0x7ee8('0x40'),_0x11f352,_0x3ef618,_0x23c3c2));};AGIChannel[_0x7ee8('0x22')]['getVariable']=function(_0x16bd01){return this[_0x7ee8('0x23')](util['format'](_0x7ee8('0x41'),_0x16bd01));};AGIChannel[_0x7ee8('0x22')]['recordFile']=function(_0x2f00de,_0x533cb3,_0x56abcc,_0x4cee21,_0x52e167,_0x274aa4){_0x533cb3=_0x533cb3||_0x7ee8('0x42');_0x56abcc=_0x56abcc||'';_0x4cee21=_0x4cee21===undefined?-0x1:_0x4cee21==='-1'?-0x1:_0x4cee21*0x3e8;_0x52e167=_0x52e167===undefined?'':'s='+_0x52e167;_0x274aa4=_0x274aa4?'BEEP':'';return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x43'),_0x2f00de,_0x533cb3,_0x56abcc,_0x4cee21,_0x274aa4,_0x52e167));};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x44')]=function(_0x9dc270,_0x183fae){_0x183fae=_0x183fae||'';return this[_0x7ee8('0x23')](util['format'](_0x7ee8('0x45'),_0x9dc270,_0x183fae));};AGIChannel[_0x7ee8('0x22')]['agi']=function(_0xd5d48a){return this['exec']('AGI',_0xd5d48a);};AGIChannel[_0x7ee8('0x22')]['wait']=function(_0xdd4aa5){return this[_0x7ee8('0x2c')](_0x7ee8('0x46'),_0xdd4aa5);};AGIChannel['prototype'][_0x7ee8('0x19')]=function(_0x58bc66,_0xf0d68e){this[_0x7ee8('0x28')](util['format'](_0x7ee8('0x47'),_0x58bc66['id'],_0x58bc66[_0x7ee8('0x48')],_0xf0d68e));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x7ee8('0x49')]=AGIChannel;
\ No newline at end of file
index f07d7ea..ac1e834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9893=['Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','name','util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.'];(function(_0x5bdbfd,_0x3aaf24){var _0x5711c0=function(_0x14b3ac){while(--_0x14b3ac){_0x5bdbfd['push'](_0x5bdbfd['shift']());}};_0x5711c0(++_0x3aaf24);}(_0x9893,0x1cd));var _0x3989=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9893[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0x3989('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0x3989('0x1'),'E_AGI_SERVER_ERROR':_0x3989('0x2'),'E_AGI_SERVER_CLOSE':_0x3989('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0x3989('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0x3989('0x5'),'E_AGI_SOCKET_ERROR':_0x3989('0x6'),'E_AGI_SOCKET_CLOSE':_0x3989('0x7'),'E_AGI_SOCKET_TIMEOUT':_0x3989('0x8'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x3989('0x9'),'E_AGI_IVR_ENTRY':_0x3989('0xa')};function AGIError(_0x4ba7d2){var _0x4ba7d2=_0x4ba7d2||null,_0x21ffcc=_0x21ffcc||[],_0xfb4b97=0x1,_0x198dd7='';if(!error[_0x4ba7d2]){_0x4ba7d2=_0x3989('0xb');}_0x21ffcc[_0x3989('0xc')](error[_0x4ba7d2]);while(arguments[_0xfb4b97]){_0x21ffcc['push'](arguments[_0xfb4b97]);_0xfb4b97++;}_0x198dd7=util[_0x3989('0xd')][_0x3989('0xe')](util,_0x21ffcc);this['message']=_0x198dd7;this[_0x3989('0xf')]=_0x4ba7d2;}module['exports']=AGIError;
\ No newline at end of file
+var _0xee70=['name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message'];(function(_0x42601,_0x5b7123){var _0x2c722b=function(_0x3dc2d4){while(--_0x3dc2d4){_0x42601['push'](_0x42601['shift']());}};_0x2c722b(++_0x5b7123);}(_0xee70,0x134));var _0x0ee7=function(_0xb4881c,_0x106be3){_0xb4881c=_0xb4881c-0x0;var _0x181cdd=_0xee70[_0xb4881c];return _0x181cdd;};'use strict';var util=require(_0x0ee7('0x0'));var error={'E_AGI_UNDEFINED':_0x0ee7('0x1'),'E_AGI_ARGUMENT_PORT':_0x0ee7('0x2'),'E_AGI_SERVER_ERROR':_0x0ee7('0x3'),'E_AGI_SERVER_CLOSE':_0x0ee7('0x4'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x0ee7('0x5'),'E_AGI_SOCKET_ERROR':_0x0ee7('0x6'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0x0ee7('0x7'),'E_AGI_COMMAND_EMPTY':_0x0ee7('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x0ee7('0x9'),'E_AGI_IVR_ENTRY':_0x0ee7('0xa')};function AGIError(_0x5a9fc6){var _0x5a9fc6=_0x5a9fc6||null,_0x296229=_0x296229||[],_0x53f058=0x1,_0x40b4ce='';if(!error[_0x5a9fc6]){_0x5a9fc6=_0x0ee7('0xb');}_0x296229[_0x0ee7('0xc')](error[_0x5a9fc6]);while(arguments[_0x53f058]){_0x296229[_0x0ee7('0xc')](arguments[_0x53f058]);_0x53f058++;}_0x40b4ce=util[_0x0ee7('0xd')][_0x0ee7('0xe')](util,_0x296229);this[_0x0ee7('0xf')]=_0x40b4ce;this[_0x0ee7('0x10')]=_0x5a9fc6;}module[_0x0ee7('0x11')]=AGIError;
\ No newline at end of file
index ff2f030..1a61f15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b1d=['../../config/environment','redis','subscribe','error','E_AGI_SERVER_ERROR','message','parse','projectUpdate','emit','exports','lodash','ioredis','./error'];(function(_0x10dfdf,_0xd11233){var _0x2ff0c7=function(_0x3b3d32){while(--_0x3b3d32){_0x10dfdf['push'](_0x10dfdf['shift']());}};_0x2ff0c7(++_0xd11233);}(_0x0b1d,0x19d));var _0xd0b1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0b1d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd0b1('0x0'));var EventEmitter=require('events')['EventEmitter'];var Redis=require(_0xd0b1('0x1'));var AGIError=require(_0xd0b1('0x2'));var config=require(_0xd0b1('0x3'));config[_0xd0b1('0x4')]=_['defaults'](config[_0xd0b1('0x4')],{'host':'localhost','port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0xd0b1('0x4')]);sub[_0xd0b1('0x5')]('agi',function(_0x48e8c8){if(_0x48e8c8)return eventEmitter['emit'](_0xd0b1('0x6'),new AGIError(_0xd0b1('0x7'),_0x48e8c8));});sub['on'](_0xd0b1('0x8'),function(_0x337aa6,_0x33adab){if(_0x337aa6!=='agi')return;try{var _0xb0d16=JSON[_0xd0b1('0x9')](_0x33adab);eventEmitter['emit'](_0xd0b1('0xa'),_0xb0d16);}catch(_0xd1b06c){eventEmitter[_0xd0b1('0xb')](_0xd0b1('0x6'),new AGIError(_0xd0b1('0x7'),_0xd1b06c));}});module[_0xd0b1('0xc')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0xdca3=['localhost','subscribe','agi','emit','error','parse','projectUpdate','exports','events','./error','../../config/environment','redis'];(function(_0x34ddc1,_0x38aeda){var _0x44aa1c=function(_0xac01be){while(--_0xac01be){_0x34ddc1['push'](_0x34ddc1['shift']());}};_0x44aa1c(++_0x38aeda);}(_0xdca3,0xf8));var _0x3dca=function(_0x10e18f,_0x58c2d3){_0x10e18f=_0x10e18f-0x0;var _0x2372cd=_0xdca3[_0x10e18f];return _0x2372cd;};'use strict';var _=require('lodash');var EventEmitter=require(_0x3dca('0x0'))['EventEmitter'];var Redis=require('ioredis');var AGIError=require(_0x3dca('0x1'));var config=require(_0x3dca('0x2'));config[_0x3dca('0x3')]=_['defaults'](config[_0x3dca('0x3')],{'host':_0x3dca('0x4'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x3dca('0x3')]);sub[_0x3dca('0x5')](_0x3dca('0x6'),function(_0x54c34c){if(_0x54c34c)return eventEmitter[_0x3dca('0x7')](_0x3dca('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0x54c34c));});sub['on']('message',function(_0x3b4af2,_0x4ae475){if(_0x3b4af2!==_0x3dca('0x6'))return;try{var _0x2fcf50=JSON[_0x3dca('0x9')](_0x4ae475);eventEmitter[_0x3dca('0x7')](_0x3dca('0xa'),_0x2fcf50);}catch(_0x64e562){eventEmitter[_0x3dca('0x7')](_0x3dca('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0x64e562));}});module[_0x3dca('0xb')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 2743778..2b20664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec68=['lodash','../../../config/logger','agi','menu','getsecretdigits','vertices','numberOfEdges','edges','prototype','addEdge','push','size','getVertex','traverseBFS','no\x20vertex\x20found','stop\x20traverse','length','info','condition','split','agicommand','default','target','invalid','vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','exports'];(function(_0x2fc357,_0x45ec4b){var _0x4de14f=function(_0x316f63){while(--_0x316f63){_0x2fc357['push'](_0x2fc357['shift']());}};_0x4de14f(++_0x45ec4b);}(_0xec68,0x13f));var _0x8ec6=function(_0x2a720b,_0x209a25){_0x2a720b=_0x2a720b-0x0;var _0x31ebde=_0xec68[_0x2a720b];return _0x31ebde;};'use strict';var _=require(_0x8ec6('0x0'));var logger=require(_0x8ec6('0x1'))(_0x8ec6('0x2'));var verticesWithRetry=[_0x8ec6('0x3'),'getdigits',_0x8ec6('0x4')];var Graph=function(){this[_0x8ec6('0x5')]={};this['edges']={};this[_0x8ec6('0x6')]=0x0;};Graph['prototype']['addVertex']=function(_0x519028){this[_0x8ec6('0x5')][_0x519028['id']]=_0x519028;this[_0x8ec6('0x7')][_0x519028['id']]=[];};Graph[_0x8ec6('0x8')][_0x8ec6('0x9')]=function(_0x4bcb70,_0x4eaca9,_0x4bfc46){this[_0x8ec6('0x7')][_0x4bcb70][_0x8ec6('0xa')]({'target':_0x4eaca9,'condition':_0x4bfc46});this[_0x8ec6('0x6')]+=0x1;};Graph[_0x8ec6('0x8')][_0x8ec6('0xb')]=function(){return _['size'](this[_0x8ec6('0x5')]);};Graph[_0x8ec6('0x8')]['relations']=function(){return this[_0x8ec6('0x6')];};Graph[_0x8ec6('0x8')][_0x8ec6('0xc')]=function(_0x2bc7a9){return this[_0x8ec6('0x5')][_0x2bc7a9];};Graph[_0x8ec6('0x8')][_0x8ec6('0xd')]=function(_0x233429,_0x242f59){if(!this['vertices'][_0x233429]){return logger['info'](_0x8ec6('0xe'));}var _0x4d2f79=_0x242f59(this['vertices'][_0x233429]);if(!_0x4d2f79){return logger['info'](_0x8ec6('0xf'));}if(this[_0x8ec6('0x7')][_0x233429][_0x8ec6('0x10')]===0x0){return logger[_0x8ec6('0x11')]('no\x20edge/s\x20available');}for(var _0x231564=0x0,_0x49c06e=[],_0x34ba3d=![];_0x231564<this[_0x8ec6('0x7')][_0x233429]['length'];_0x231564+=0x1){if(this[_0x8ec6('0x7')][_0x233429][_0x231564]['condition']){_0x49c06e=this[_0x8ec6('0x7')][_0x233429][_0x231564][_0x8ec6('0x12')][_0x8ec6('0x13')](',');for(var _0x262ed0=0x0;_0x262ed0<_0x49c06e[_0x8ec6('0x10')];_0x262ed0+=0x1){if(this[_0x8ec6('0x5')][_0x233429][_0x8ec6('0x14')]==='vswitch'&&_0x49c06e[_0x262ed0]==='-'){_0x34ba3d=this[_0x8ec6('0x7')][_0x233429][_0x231564]['target'];logger['info'](_0x8ec6('0x15'),_0x49c06e[_0x262ed0],this[_0x8ec6('0x7')][_0x233429][_0x231564][_0x8ec6('0x16')]);}else if(this['vertices'][_0x233429][_0x8ec6('0x14')]==='menu'&&_0x49c06e[_0x262ed0]==='i'){_0x34ba3d=this[_0x8ec6('0x7')][_0x233429][_0x231564][_0x8ec6('0x16')];logger[_0x8ec6('0x11')](_0x8ec6('0x17'),_0x49c06e[_0x262ed0],this[_0x8ec6('0x7')][_0x233429][_0x231564]['target']);}if(_0x49c06e[_0x262ed0]===_0x4d2f79){return this['traverseBFS'](this[_0x8ec6('0x7')][_0x233429][_0x231564][_0x8ec6('0x16')],_0x242f59);}}}else{return this['traverseBFS'](this['edges'][_0x233429][_0x231564]['target'],_0x242f59);}}if(_0x49c06e[_0x8ec6('0x10')]){if(this[_0x8ec6('0x5')][_0x233429][_0x8ec6('0x14')]===_0x8ec6('0x18')){if(_0x34ba3d){return this[_0x8ec6('0xd')](_0x34ba3d,_0x242f59);}return logger['info'](_0x8ec6('0x19'));}else if(_[_0x8ec6('0x1a')](verticesWithRetry,this[_0x8ec6('0x5')][_0x233429][_0x8ec6('0x14')])){if(_0x4d2f79==='-'){return logger[_0x8ec6('0x11')](_0x8ec6('0x1b'));}if(_0x34ba3d&&_0x4d2f79!=='t'){return this[_0x8ec6('0xd')](_0x34ba3d,_0x242f59);}return this[_0x8ec6('0xd')](_0x233429,_0x242f59);}return logger[_0x8ec6('0x11')]('condition\x20not\x20found');}};module[_0x8ec6('0x1c')]=Graph;
\ No newline at end of file
+var _0x6266=['no\x20edge/s\x20available','condition','agicommand','vswitch','target','default','invalid','default\x20on\x20switch\x20not\x20found','includes','lodash','../../../config/logger','agi','menu','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','addEdge','push','size','relations','traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length'];(function(_0x3fabc0,_0x12033e){var _0x5c4484=function(_0x3dd427){while(--_0x3dd427){_0x3fabc0['push'](_0x3fabc0['shift']());}};_0x5c4484(++_0x12033e);}(_0x6266,0x1e5));var _0x6626=function(_0x5041a2,_0x2cbc56){_0x5041a2=_0x5041a2-0x0;var _0xa6aeef=_0x6266[_0x5041a2];return _0xa6aeef;};'use strict';var _=require(_0x6626('0x0'));var logger=require(_0x6626('0x1'))(_0x6626('0x2'));var verticesWithRetry=[_0x6626('0x3'),'getdigits',_0x6626('0x4')];var Graph=function(){this[_0x6626('0x5')]={};this[_0x6626('0x6')]={};this[_0x6626('0x7')]=0x0;};Graph[_0x6626('0x8')][_0x6626('0x9')]=function(_0xb5e38e){this['vertices'][_0xb5e38e['id']]=_0xb5e38e;this['edges'][_0xb5e38e['id']]=[];};Graph['prototype'][_0x6626('0xa')]=function(_0x5aa2e0,_0x3daf24,_0x4badc5){this[_0x6626('0x6')][_0x5aa2e0][_0x6626('0xb')]({'target':_0x3daf24,'condition':_0x4badc5});this[_0x6626('0x7')]+=0x1;};Graph[_0x6626('0x8')][_0x6626('0xc')]=function(){return _[_0x6626('0xc')](this['vertices']);};Graph[_0x6626('0x8')][_0x6626('0xd')]=function(){return this[_0x6626('0x7')];};Graph[_0x6626('0x8')]['getVertex']=function(_0x386965){return this[_0x6626('0x5')][_0x386965];};Graph[_0x6626('0x8')][_0x6626('0xe')]=function(_0x9610a3,_0x51957d){if(!this[_0x6626('0x5')][_0x9610a3]){return logger['info'](_0x6626('0xf'));}var _0x288fd7=_0x51957d(this['vertices'][_0x9610a3]);if(!_0x288fd7){return logger[_0x6626('0x10')](_0x6626('0x11'));}if(this[_0x6626('0x6')][_0x9610a3][_0x6626('0x12')]===0x0){return logger[_0x6626('0x10')](_0x6626('0x13'));}for(var _0x2e6763=0x0,_0x26c1bf=[],_0x33b5d8=![];_0x2e6763<this['edges'][_0x9610a3]['length'];_0x2e6763+=0x1){if(this['edges'][_0x9610a3][_0x2e6763][_0x6626('0x14')]){_0x26c1bf=this[_0x6626('0x6')][_0x9610a3][_0x2e6763][_0x6626('0x14')]['split'](',');for(var _0x47e889=0x0;_0x47e889<_0x26c1bf[_0x6626('0x12')];_0x47e889+=0x1){if(this[_0x6626('0x5')][_0x9610a3][_0x6626('0x15')]===_0x6626('0x16')&&_0x26c1bf[_0x47e889]==='-'){_0x33b5d8=this['edges'][_0x9610a3][_0x2e6763][_0x6626('0x17')];logger['info'](_0x6626('0x18'),_0x26c1bf[_0x47e889],this[_0x6626('0x6')][_0x9610a3][_0x2e6763][_0x6626('0x17')]);}else if(this[_0x6626('0x5')][_0x9610a3][_0x6626('0x15')]===_0x6626('0x3')&&_0x26c1bf[_0x47e889]==='i'){_0x33b5d8=this[_0x6626('0x6')][_0x9610a3][_0x2e6763][_0x6626('0x17')];logger[_0x6626('0x10')](_0x6626('0x19'),_0x26c1bf[_0x47e889],this['edges'][_0x9610a3][_0x2e6763][_0x6626('0x17')]);}if(_0x26c1bf[_0x47e889]===_0x288fd7){return this[_0x6626('0xe')](this[_0x6626('0x6')][_0x9610a3][_0x2e6763]['target'],_0x51957d);}}}else{return this['traverseBFS'](this[_0x6626('0x6')][_0x9610a3][_0x2e6763]['target'],_0x51957d);}}if(_0x26c1bf[_0x6626('0x12')]){if(this[_0x6626('0x5')][_0x9610a3][_0x6626('0x15')]===_0x6626('0x16')){if(_0x33b5d8){return this[_0x6626('0xe')](_0x33b5d8,_0x51957d);}return logger[_0x6626('0x10')](_0x6626('0x1a'));}else if(_[_0x6626('0x1b')](verticesWithRetry,this[_0x6626('0x5')][_0x9610a3][_0x6626('0x15')])){if(_0x288fd7==='-'){return logger[_0x6626('0x10')]('max\x20retry\x20reach');}if(_0x33b5d8&&_0x288fd7!=='t'){return this['traverseBFS'](_0x33b5d8,_0x51957d);}return this[_0x6626('0xe')](_0x9610a3,_0x51957d);}return logger[_0x6626('0x10')]('condition\x20not\x20found');}};module['exports']=Graph;
\ No newline at end of file
index b65289e..9d83d3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8449=['handleNotFound','production','initialize','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','finally','./server','port','connection','lodash','syncho','util','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./project','./events','EventEmitter','defaults','127.0.0.1','nextTick','error','stack','findIndex','deleted','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','createSquareReport','then','substring','debug','variables','evtHangup','find'];(function(_0x2ceba7,_0x451ce4){var _0x5348eb=function(_0x3596fc){while(--_0x3596fc){_0x2ceba7['push'](_0x2ceba7['shift']());}};_0x5348eb(++_0x451ce4);}(_0x8449,0x170));var _0x9844=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x8449[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0x9844('0x0'));var syncho=require(_0x9844('0x1'));var util=require(_0x9844('0x2'));var config=require(_0x9844('0x3'));var logger=require(_0x9844('0x4'))(_0x9844('0x5'));var utilLicense=require(_0x9844('0x6'));var rpc=require(_0x9844('0x7'));var Project=require(_0x9844('0x8'));var AGIEmitter=require(_0x9844('0x9'))[_0x9844('0xa')];var projects=[];config['agi']=_[_0x9844('0xb')](config[_0x9844('0x5')],{'ip':_0x9844('0xc'),'port':0x11dd});AGIEmitter['on']('projectUpdate',projectUpdateHandler);function connectionHandler(_0x2d8277){process[_0x9844('0xd')](function(){syncho(function(){try{setChannelVariables(_0x2d8277);agiHandler(_0x2d8277);}catch(_0x163898){logger[_0x9844('0xe')](_0x163898[_0x9844('0xf')]);}});});}function projectUpdateHandler(_0x2f1eb4){try{var _0x2fc7e1=_[_0x9844('0x10')](projects,['id',_0x2f1eb4['id']]);if(_0x2fc7e1>-0x1){if(_0x2f1eb4[_0x9844('0x11')]===!![]){projects['splice'](_0x2fc7e1,0x1);}else{projects[_0x2fc7e1]=_0x2f1eb4;}}else{projects['push'](_0x2f1eb4);}}catch(_0xfb393c){logger[_0x9844('0xe')](_0xfb393c['stack']);}}function listeningHandler(){console['log']('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x9844('0x5')]['port']);logger[_0x9844('0x12')](util[_0x9844('0x13')](_0x9844('0x14'),config[_0x9844('0x5')]['ip'],config['agi']['port']));}function errorHandler(_0x54d07a){if(_0x54d07a&&_0x54d07a[_0x9844('0x15')]&&_0x54d07a[_0x9844('0x16')]){logger[_0x9844('0xe')](util['format'](_0x9844('0x17'),_0x54d07a[_0x9844('0x15')],_0x54d07a['message']));}else{logger[_0x9844('0xe')](util[_0x9844('0x13')](_0x9844('0x18'),_0x54d07a[_0x9844('0xf')]));}}function closeHandler(){logger[_0x9844('0x12')](util[_0x9844('0x13')](_0x9844('0x19'),this[_0x9844('0x1a')],this[_0x9844('0x1b')],this[_0x9844('0x1c')],this[_0x9844('0x1d')],this[_0x9844('0x1e')]));try{createSquareReport(this);}catch(_0x2588d0){logger['error'](_0x2588d0[_0x9844('0xf')]);}}function timeoutHandler(){logger[_0x9844('0x12')](util[_0x9844('0x13')](_0x9844('0x1f'),this[_0x9844('0x1a')],this[_0x9844('0x1b')],this[_0x9844('0x1c')],this['dnid'],this[_0x9844('0x1e')]));}function hangupHandler(){logger[_0x9844('0x12')](util['format'](_0x9844('0x20'),this['arg_1'],this[_0x9844('0x1b')],this['callerid'],this[_0x9844('0x1d')],this[_0x9844('0x1e')]));this['evtHangup']=!![];}function createSquareReport(_0x2f68a7,_0x3097d8){rpc[_0x9844('0x21')](_0x2f68a7)[_0x9844('0x22')](function(_0x1a7fbf){if(_0x3097d8){_0x3097d8(null,_0x1a7fbf);}})['catch'](function(_0x1239ef){if(_0x3097d8){_0x3097d8(null,_0x1239ef);}});}function setChannelVariables(_0x3da72a){for(var _0x2c9faa in _0x3da72a){if(_0x3da72a['hasOwnProperty'](_0x2c9faa)){if(_0x2c9faa['indexOf']('agi_')===0x0){_0x3da72a[_0x2c9faa[_0x9844('0x23')](0x4)]=_0x3da72a[_0x2c9faa];delete _0x3da72a[_0x2c9faa];}}}}function agiHandler(_0x1ee68d){logger[_0x9844('0x24')](_0x9844('0x25'),JSON['stringify'](_0x1ee68d,null,0x2));logger[_0x9844('0x12')](util[_0x9844('0x13')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x1ee68d[_0x9844('0x1a')],_0x1ee68d['calleridname'],_0x1ee68d[_0x9844('0x1c')],_0x1ee68d[_0x9844('0x1d')],_0x1ee68d[_0x9844('0x1e')]));_0x1ee68d['on']('error',errorHandler);_0x1ee68d['on']('close',closeHandler);_0x1ee68d['on']('timeout',timeoutHandler);_0x1ee68d[_0x9844('0x26')]=![];_0x1ee68d['on']('hangup',hangupHandler);var _0xc1f1af=_[_0x9844('0x27')](projects,[_0x9844('0x15'),_0x1ee68d['arg_1']]);if(!_0xc1f1af)return Project[_0x9844('0x28')](_0x1ee68d);if(!_0xc1f1af[_0x9844('0x29')])return Project['handleUnpublished'](_0x1ee68d);return Project[_0x9844('0x2a')](_0xc1f1af,_0x1ee68d);}function main(){var _0x486a6e;return utilLicense['getLicense']()[_0x9844('0x22')](function(_0x415981){if(!_0x415981)return;if(_0x415981[_0x9844('0x2b')]){if(_0x415981[_0x9844('0x2c')]&&_0x415981[_0x9844('0x2c')]>0x0){logger[_0x9844('0x12')](util['format'](_0x9844('0x2d'),_0x415981[_0x9844('0x2c')]));_0x486a6e=_0x415981['callysquare'];}else{logger[_0x9844('0x12')](_0x9844('0x2e'));}}else{logger['info']('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x486a6e=-0x1;}})[_0x9844('0x22')](function(){return Project['getAll']();})[_0x9844('0x22')](function(_0x20c285){projects=_0x20c285;return;})['catch'](function(_0x33ae64){logger[_0x9844('0xe')]('[LICENSE]',_0x33ae64[_0x9844('0xf')]);})[_0x9844('0x2f')](function(){var _0x84898=require(_0x9844('0x30'))(config[_0x9844('0x5')][_0x9844('0x31')],config[_0x9844('0x5')]['ip'],_0x486a6e);_0x84898['on'](_0x9844('0xe'),errorHandler);_0x84898['on']('listening',listeningHandler);_0x84898['on'](_0x9844('0x32'),connectionHandler);_0x84898['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0x50ff=['splice','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[ERROR]\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','agi_','substring','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','find','production','handleUnpublished','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','catch','[LICENSE]','finally','./server','listening','connection','syncho','util','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','EventEmitter','defaults','127.0.0.1','error','findIndex','deleted'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x50ff,0xdb));var _0xf50f=function(_0x52cf9b,_0x854ca0){_0x52cf9b=_0x52cf9b-0x0;var _0x36b498=_0x50ff[_0x52cf9b];return _0x36b498;};'use strict';var _=require('lodash');var syncho=require(_0xf50f('0x0'));var util=require(_0xf50f('0x1'));var config=require(_0xf50f('0x2'));var logger=require(_0xf50f('0x3'))(_0xf50f('0x4'));var utilLicense=require(_0xf50f('0x5'));var rpc=require(_0xf50f('0x6'));var Project=require('./project');var AGIEmitter=require('./events')[_0xf50f('0x7')];var projects=[];config[_0xf50f('0x4')]=_[_0xf50f('0x8')](config[_0xf50f('0x4')],{'ip':_0xf50f('0x9'),'port':0x11dd});AGIEmitter['on']('projectUpdate',projectUpdateHandler);function connectionHandler(_0x4c7fa0){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x4c7fa0);agiHandler(_0x4c7fa0);}catch(_0x56c537){logger[_0xf50f('0xa')](_0x56c537['stack']);}});});}function projectUpdateHandler(_0x18969){try{var _0x4b7bbd=_[_0xf50f('0xb')](projects,['id',_0x18969['id']]);if(_0x4b7bbd>-0x1){if(_0x18969[_0xf50f('0xc')]===!![]){projects[_0xf50f('0xd')](_0x4b7bbd,0x1);}else{projects[_0x4b7bbd]=_0x18969;}}else{projects['push'](_0x18969);}}catch(_0x1c7212){logger[_0xf50f('0xa')](_0x1c7212[_0xf50f('0xe')]);}}function listeningHandler(){console[_0xf50f('0xf')](_0xf50f('0x10'),config[_0xf50f('0x4')][_0xf50f('0x11')]);logger[_0xf50f('0x12')](util[_0xf50f('0x13')](_0xf50f('0x14'),config['agi']['ip'],config[_0xf50f('0x4')][_0xf50f('0x11')]));}function errorHandler(_0x54b0be){if(_0x54b0be&&_0x54b0be[_0xf50f('0x15')]&&_0x54b0be[_0xf50f('0x16')]){logger[_0xf50f('0xa')](util[_0xf50f('0x13')]('[%s]\x20%s',_0x54b0be[_0xf50f('0x15')],_0x54b0be[_0xf50f('0x16')]));}else{logger[_0xf50f('0xa')](util[_0xf50f('0x13')](_0xf50f('0x17'),_0x54b0be[_0xf50f('0xe')]));}}function closeHandler(){logger[_0xf50f('0x12')](util[_0xf50f('0x13')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xf50f('0x18')],this[_0xf50f('0x19')],this[_0xf50f('0x1a')],this[_0xf50f('0x1b')],this[_0xf50f('0x1c')]));try{createSquareReport(this);}catch(_0x1d65bf){logger[_0xf50f('0xa')](_0x1d65bf[_0xf50f('0xe')]);}}function timeoutHandler(){logger[_0xf50f('0x12')](util['format'](_0xf50f('0x1d'),this[_0xf50f('0x18')],this[_0xf50f('0x19')],this[_0xf50f('0x1a')],this[_0xf50f('0x1b')],this[_0xf50f('0x1c')]));}function hangupHandler(){logger[_0xf50f('0x12')](util[_0xf50f('0x13')](_0xf50f('0x1e'),this[_0xf50f('0x18')],this['calleridname'],this[_0xf50f('0x1a')],this[_0xf50f('0x1b')],this[_0xf50f('0x1c')]));this[_0xf50f('0x1f')]=!![];}function createSquareReport(_0x2a1b12,_0x1e3f19){rpc[_0xf50f('0x20')](_0x2a1b12)[_0xf50f('0x21')](function(_0x447f56){if(_0x1e3f19){_0x1e3f19(null,_0x447f56);}})['catch'](function(_0x793ac4){if(_0x1e3f19){_0x1e3f19(null,_0x793ac4);}});}function setChannelVariables(_0x56eb0f){for(var _0x22ef00 in _0x56eb0f){if(_0x56eb0f[_0xf50f('0x22')](_0x22ef00)){if(_0x22ef00['indexOf'](_0xf50f('0x23'))===0x0){_0x56eb0f[_0x22ef00[_0xf50f('0x24')](0x4)]=_0x56eb0f[_0x22ef00];delete _0x56eb0f[_0x22ef00];}}}}function agiHandler(_0x5c6adc){logger['debug'](_0xf50f('0x25'),JSON[_0xf50f('0x26')](_0x5c6adc,null,0x2));logger[_0xf50f('0x12')](util[_0xf50f('0x13')](_0xf50f('0x27'),_0x5c6adc[_0xf50f('0x18')],_0x5c6adc['calleridname'],_0x5c6adc[_0xf50f('0x1a')],_0x5c6adc[_0xf50f('0x1b')],_0x5c6adc[_0xf50f('0x1c')]));_0x5c6adc['on'](_0xf50f('0xa'),errorHandler);_0x5c6adc['on'](_0xf50f('0x28'),closeHandler);_0x5c6adc['on'](_0xf50f('0x29'),timeoutHandler);_0x5c6adc[_0xf50f('0x1f')]=![];_0x5c6adc['on'](_0xf50f('0x2a'),hangupHandler);var _0x4c8d5f=_[_0xf50f('0x2b')](projects,['name',_0x5c6adc[_0xf50f('0x18')]]);if(!_0x4c8d5f)return Project['handleNotFound'](_0x5c6adc);if(!_0x4c8d5f[_0xf50f('0x2c')])return Project[_0xf50f('0x2d')](_0x5c6adc);return Project['initialize'](_0x4c8d5f,_0x5c6adc);}function main(){var _0x8ba57e;return utilLicense[_0xf50f('0x2e')]()[_0xf50f('0x21')](function(_0x18fcf2){if(!_0x18fcf2)return;if(_0x18fcf2[_0xf50f('0x2f')]){if(_0x18fcf2[_0xf50f('0x30')]&&_0x18fcf2['callysquare']>0x0){logger[_0xf50f('0x12')](util[_0xf50f('0x13')]('[LICENSE]\x20CHANNELS:\x20%s',_0x18fcf2[_0xf50f('0x30')]));_0x8ba57e=_0x18fcf2[_0xf50f('0x30')];}else{logger['info'](_0xf50f('0x31'));}}else{logger[_0xf50f('0x12')](_0xf50f('0x32'));_0x8ba57e=-0x1;}})[_0xf50f('0x21')](function(){return Project[_0xf50f('0x33')]();})[_0xf50f('0x21')](function(_0x192ffb){projects=_0x192ffb;return;})[_0xf50f('0x34')](function(_0x4c0332){logger[_0xf50f('0xa')](_0xf50f('0x35'),_0x4c0332['stack']);})[_0xf50f('0x36')](function(){var _0x5213bc=require(_0xf50f('0x37'))(config[_0xf50f('0x4')][_0xf50f('0x11')],config[_0xf50f('0x4')]['ip'],_0x8ba57e);_0x5213bc['on'](_0xf50f('0xa'),errorHandler);_0x5213bc['on'](_0xf50f('0x38'),listeningHandler);_0x5213bc['on'](_0xf50f('0x39'),connectionHandler);_0x5213bc['on'](_0xf50f('0x28'),closeHandler);});}main();
\ No newline at end of file
index 9f2168a..41727ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5410=['catch','sendMailMessage','SendMail','bluebird','jayson/promise','http','then','error','message','result'];(function(_0x5b70e6,_0x266e34){var _0xb4f734=function(_0x532fad){while(--_0x532fad){_0x5b70e6['push'](_0x5b70e6['shift']());}};_0xb4f734(++_0x266e34);}(_0x5410,0x175));var _0x0541=function(_0x357308,_0x5d488d){_0x357308=_0x357308-0x0;var _0x84b112=_0x5410[_0x357308];return _0x84b112;};'use strict';var BPromise=require(_0x0541('0x0'));var jayson=require(_0x0541('0x1'));var client=jayson['client'][_0x0541('0x2')]({'port':0x232b});function request(_0x3c795f,_0x22707b){return new BPromise(function(_0x2e00ed,_0x4e5f0f){return client['request'](_0x3c795f,_0x22707b)[_0x0541('0x3')](function(_0x3d3513){if(_0x3d3513[_0x0541('0x4')]){return _0x4e5f0f(_0x3d3513['error'][_0x0541('0x5')]);}else{return _0x2e00ed(_0x3d3513[_0x0541('0x6')]);}})[_0x0541('0x7')](function(_0x1b6811){return _0x4e5f0f(_0x1b6811);});});}exports[_0x0541('0x8')]=function(_0x26f08c,_0x3978c0){return request(_0x0541('0x9'),{'account':_0x26f08c,'message':_0x3978c0});};
\ No newline at end of file
+var _0xcae9=['catch','sendMailMessage','SendMail','bluebird','jayson/promise','http','then','error','result'];(function(_0x1ef85e,_0x4e431a){var _0x2ff8fa=function(_0x855afb){while(--_0x855afb){_0x1ef85e['push'](_0x1ef85e['shift']());}};_0x2ff8fa(++_0x4e431a);}(_0xcae9,0x1f2));var _0x9cae=function(_0x25efdf,_0x521462){_0x25efdf=_0x25efdf-0x0;var _0x22c495=_0xcae9[_0x25efdf];return _0x22c495;};'use strict';var BPromise=require(_0x9cae('0x0'));var jayson=require(_0x9cae('0x1'));var client=jayson['client'][_0x9cae('0x2')]({'port':0x232b});function request(_0x8d579,_0x1bc8e0){return new BPromise(function(_0x5e57b8,_0x5d143c){return client['request'](_0x8d579,_0x1bc8e0)[_0x9cae('0x3')](function(_0x3e3623){if(_0x3e3623['error']){return _0x5d143c(_0x3e3623[_0x9cae('0x4')]['message']);}else{return _0x5e57b8(_0x3e3623[_0x9cae('0x5')]);}})[_0x9cae('0x6')](function(_0x4129d3){return _0x5d143c(_0x4129d3);});});}exports[_0x9cae('0x7')]=function(_0x817ab5,_0x5ea064){return request(_0x9cae('0x8'),{'account':_0x817ab5,'message':_0x5ea064});};
\ No newline at end of file
index 84677bf..0fae371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x768e=['length','source','target','addEdge','value','mxGraphModel','root','inspect','production','start','stringify','joinAt','format','info','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','uniqueid','traverseBFS','clear','debug','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','evtHangup','isUndefined','toString','agicommand\x20not\x20found','stack','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','dnid','vertex','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','exports','lodash','moment','xml2json','../../config/logger','agi','./rpc','./mailRpc','./graph','error','Unable\x20to\x20download\x20CallySquare\x20projects','agicommand','hasOwnProperty','maxRetry','retry','omit','mxCell','isArray'];(function(_0x191f7e,_0x424162){var _0x33572a=function(_0x1ec94a){while(--_0x1ec94a){_0x191f7e['push'](_0x191f7e['shift']());}};_0x33572a(++_0x424162);}(_0x768e,0x12a));var _0xe768=function(_0x467606,_0xf67815){_0x467606=_0x467606-0x0;var _0x32987e=_0x768e[_0x467606];return _0x32987e;};'use strict';var _=require(_0xe768('0x0'));var moment=require(_0xe768('0x1'));var parser=require(_0xe768('0x2'));var util=require('util');var logger=require(_0xe768('0x3'))(_0xe768('0x4'));var rpc=require(_0xe768('0x5'));var mailRpc=require(_0xe768('0x6'));var Graph=require(_0xe768('0x7'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc['getSquareProjects']()['catch'](function(_0x2430ce){logger[_0xe768('0x8')](_0xe768('0x9'),_0x2430ce['stack']);return[];});}function addVertex(_0x2debc0,_0x1c9c80,_0x4957cf){_0x1c9c80[_0xe768('0xa')]=_0x4957cf;if(_0x1c9c80[_0xe768('0xb')]('retry')){_0x1c9c80[_0xe768('0xc')]=parseInt(_0x1c9c80[_0xe768('0xd')],0xa);}_0x2debc0['addVertex'](_[_0xe768('0xe')](_0x1c9c80,_0xe768('0xf')));}function initGraph(_0x2d342d,_0x26e569){var _0x1ed8e0=new Graph();for(var _0x377506 in _0x2d342d){if(_0x2d342d[_0xe768('0xb')](_0x377506)){if(_[_0xe768('0x10')](_0x2d342d[_0x377506])){for(var _0x448cb2=0x0;_0x448cb2<_0x2d342d[_0x377506][_0xe768('0x11')];_0x448cb2+=0x1){addVertex(_0x1ed8e0,_0x2d342d[_0x377506][_0x448cb2],_0x377506);}}else{addVertex(_0x1ed8e0,_0x2d342d[_0x377506],_0x377506);}}}for(var _0x263621=0x0;_0x263621<_0x26e569[_0xe768('0x11')];_0x263621+=0x1){if(_0x26e569[_0x263621][_0xe768('0x12')]&&_0x26e569[_0x263621][_0xe768('0x13')]){_0x1ed8e0[_0xe768('0x14')](_0x26e569[_0x263621][_0xe768('0x12')],_0x26e569[_0x263621][_0xe768('0x13')],_0x26e569[_0x263621][_0xe768('0x15')]);}}return _0x1ed8e0;}function getRoot(_0x217f17){return parser['toJson'](_0x217f17,{'object':!![]})[_0xe768('0x16')][_0xe768('0x17')];}function inspect(_0x569049){return util[_0xe768('0x18')](_0x569049,{'showHidden':![],'depth':null});}function initialize(_0x239dd1,_0x18c1da){var _0x562056=getRoot(_0x239dd1[_0xe768('0x19')]);if(!_0x562056||!_0x562056[_0xe768('0x1a')])return;var _0x13f12f,_0x2b7b4d,_0x12560e;logger['debug']('root',JSON[_0xe768('0x1b')](_0x562056,null,0x2));_0x18c1da[_0xe768('0x1c')]=moment()[_0xe768('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');_0x13f12f=initGraph(_[_0xe768('0xe')](_0x562056,_0xe768('0xf')),_0x562056['mxCell']);_0x2b7b4d=new Vertices(_0x18c1da,rpc,mailRpc);logger[_0xe768('0x1e')](util[_0xe768('0x1d')](_0xe768('0x1f'),_0x18c1da['arg_1'],_0x18c1da['calleridname'],_0x18c1da[_0xe768('0x20')],_0x18c1da['dnid'],_0x18c1da[_0xe768('0x21')]));_0x13f12f[_0xe768('0x22')](_0x562056[_0xe768('0x1a')]['id'],function(_0x4d63e6){try{_0x4d63e6=_0x2b7b4d[_0xe768('0x23')](_0x4d63e6);logger[_0xe768('0x24')]('vertex',JSON[_0xe768('0x1b')](_0x4d63e6,null,0x2));if(_0x4d63e6[_0xe768('0xa')]===_0xe768('0x25')){logger[_0xe768('0x1e')](_0xe768('0x26'));_0x18c1da[_0xe768('0x27')]=_0x4d63e6[_0xe768('0x27')]||_0x18c1da[_0xe768('0x27')];_0x18c1da['extension']=_0x4d63e6[_0xe768('0x28')];_0x18c1da[_0xe768('0x29')]=_0x4d63e6[_0xe768('0x29')]?_0x4d63e6[_0xe768('0x29')]-0x1:0x1;return null;}else if(_0x4d63e6&&_0x2b7b4d[_0x4d63e6['agicommand']]){_0x12560e=_0x2b7b4d[_0x4d63e6['agicommand']](_0x4d63e6);logger[_0xe768('0x1e')](_0xe768('0x2a'),JSON[_0xe768('0x1b')](_0x12560e,null,0x2));if(_0x12560e&&_0x12560e[_0xe768('0x2b')]===AGI_CODE_SUCCESS&&_0x12560e[_0xe768('0x2c')]!==AGI_RESULT_ERROR&&!_0x18c1da[_0xe768('0x2d')]){logger['debug'](_0xe768('0x2a'),inspect(_0x12560e));return _[_0xe768('0x2e')](_0x12560e[_0xe768('0x2c')])?null:_0x12560e[_0xe768('0x2c')][_0xe768('0x2f')]();}else{logger[_0xe768('0x8')](_0xe768('0x2a'),inspect(_0x12560e));return null;}}else{logger['error'](_0xe768('0x30'));return null;}}catch(_0x4d6603){logger['error'](_0x4d6603[_0xe768('0x31')]);return null;}});if(_0x562056[_0xe768('0x32')]){logger[_0xe768('0x1e')](util[_0xe768('0x1d')](_0xe768('0x33'),_0x18c1da[_0xe768('0x34')],_0x18c1da[_0xe768('0x35')],_0x18c1da[_0xe768('0x20')],_0x18c1da[_0xe768('0x36')],_0x18c1da[_0xe768('0x21')]));_0x13f12f[_0xe768('0x22')](_0x562056[_0xe768('0x32')]['id'],function(_0xc453cb){try{_0xc453cb=_0x2b7b4d[_0xe768('0x23')](_0xc453cb);logger[_0xe768('0x24')](_0xe768('0x37'),JSON['stringify'](_0xc453cb,null,0x2));if(_0xc453cb&&_0x2b7b4d[_0xc453cb[_0xe768('0xa')]]){_0x12560e=_0x2b7b4d[_0xc453cb['agicommand']](_0xc453cb);if(_0x12560e){logger['debug'](_0xe768('0x2a'),inspect(_0x12560e));return _['isUndefined'](_0x12560e[_0xe768('0x2c')])?null:_0x12560e['result'][_0xe768('0x2f')]();}else{logger[_0xe768('0x8')](_0xe768('0x2a'),inspect(_0x12560e));return null;}}else{logger[_0xe768('0x8')](_0xe768('0x30'));return null;}}catch(_0x4b4ab7){logger['error'](_0x4b4ab7[_0xe768('0x31')]);return null;}});}logger[_0xe768('0x1e')](util[_0xe768('0x1d')](_0xe768('0x38'),_0x18c1da[_0xe768('0x34')],_0x18c1da[_0xe768('0x35')],_0x18c1da[_0xe768('0x20')],_0x18c1da[_0xe768('0x36')],_0x18c1da[_0xe768('0x21')]));logger[_0xe768('0x1e')](util['format'](_0xe768('0x39'),_0x18c1da[_0xe768('0x27')],_0x18c1da['extension'],parseInt(_0x18c1da['priority'],0xa)+0x1));_0x18c1da[_0xe768('0x3a')](_0x18c1da['context'],_0x18c1da['extension'],parseInt(_0x18c1da[_0xe768('0x29')],0xa)+0x1);_0x18c1da[_0xe768('0x3b')]();}function handleNotFound(_0x36f636){logger[_0xe768('0x8')](util[_0xe768('0x1d')](_0xe768('0x3c'),_0x36f636['arg_1']));_0x36f636[_0xe768('0x3a')](_0x36f636['context'],_0x36f636[_0xe768('0x28')],parseInt(_0x36f636[_0xe768('0x29')],0xa)+0x1);_0x36f636[_0xe768('0x3b')]();}function handleUnpublished(_0xff5937){logger[_0xe768('0x8')](util[_0xe768('0x1d')](_0xe768('0x3d'),_0xff5937[_0xe768('0x34')]));_0xff5937[_0xe768('0x3a')](_0xff5937[_0xe768('0x27')],_0xff5937[_0xe768('0x28')],parseInt(_0xff5937[_0xe768('0x29')],0xa)+0x1);_0xff5937[_0xe768('0x3b')]();}module[_0xe768('0x3e')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x0e1f=['YYYY-MM-DD\x20HH:mm:ss','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','uniqueid','clear','vertex','stringify','agicommand','gotoc','info','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','result','isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','debug','calleridname','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','close','lodash','moment','xml2json','util','../../config/logger','agi','./rpc','./mailRpc','./graph','./vertices','getSquareProjects','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','hasOwnProperty','maxRetry','retry','omit','isArray','length','source','target','value','mxGraphModel','root','inspect','production','start','joinAt','format'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0e1f,0xdd));var _0xf0e1=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x0e1f[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0xf0e1('0x0'));var moment=require(_0xf0e1('0x1'));var parser=require(_0xf0e1('0x2'));var util=require(_0xf0e1('0x3'));var logger=require(_0xf0e1('0x4'))(_0xf0e1('0x5'));var rpc=require(_0xf0e1('0x6'));var mailRpc=require(_0xf0e1('0x7'));var Graph=require(_0xf0e1('0x8'));var Vertices=require(_0xf0e1('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0xf0e1('0xa')]()[_0xf0e1('0xb')](function(_0x59ea5f){logger[_0xf0e1('0xc')](_0xf0e1('0xd'),_0x59ea5f[_0xf0e1('0xe')]);return[];});}function addVertex(_0x2892ad,_0x1ee1ce,_0x587a49){_0x1ee1ce['agicommand']=_0x587a49;if(_0x1ee1ce[_0xf0e1('0xf')]('retry')){_0x1ee1ce[_0xf0e1('0x10')]=parseInt(_0x1ee1ce[_0xf0e1('0x11')],0xa);}_0x2892ad['addVertex'](_[_0xf0e1('0x12')](_0x1ee1ce,'mxCell'));}function initGraph(_0x31a251,_0x1a5136){var _0x4c4bd3=new Graph();for(var _0x5d4e46 in _0x31a251){if(_0x31a251[_0xf0e1('0xf')](_0x5d4e46)){if(_[_0xf0e1('0x13')](_0x31a251[_0x5d4e46])){for(var _0x3949b5=0x0;_0x3949b5<_0x31a251[_0x5d4e46][_0xf0e1('0x14')];_0x3949b5+=0x1){addVertex(_0x4c4bd3,_0x31a251[_0x5d4e46][_0x3949b5],_0x5d4e46);}}else{addVertex(_0x4c4bd3,_0x31a251[_0x5d4e46],_0x5d4e46);}}}for(var _0x39b3a0=0x0;_0x39b3a0<_0x1a5136['length'];_0x39b3a0+=0x1){if(_0x1a5136[_0x39b3a0]['source']&&_0x1a5136[_0x39b3a0]['target']){_0x4c4bd3['addEdge'](_0x1a5136[_0x39b3a0][_0xf0e1('0x15')],_0x1a5136[_0x39b3a0][_0xf0e1('0x16')],_0x1a5136[_0x39b3a0][_0xf0e1('0x17')]);}}return _0x4c4bd3;}function getRoot(_0x198b65){return parser['toJson'](_0x198b65,{'object':!![]})[_0xf0e1('0x18')][_0xf0e1('0x19')];}function inspect(_0x15ba92){return util[_0xf0e1('0x1a')](_0x15ba92,{'showHidden':![],'depth':null});}function initialize(_0x24516a,_0x550369){var _0x5c9766=getRoot(_0x24516a[_0xf0e1('0x1b')]);if(!_0x5c9766||!_0x5c9766[_0xf0e1('0x1c')])return;var _0x4ad1eb,_0x48e51c,_0x352092;logger['debug'](_0xf0e1('0x19'),JSON['stringify'](_0x5c9766,null,0x2));_0x550369[_0xf0e1('0x1d')]=moment()[_0xf0e1('0x1e')](_0xf0e1('0x1f'));_0x4ad1eb=initGraph(_[_0xf0e1('0x12')](_0x5c9766,_0xf0e1('0x20')),_0x5c9766[_0xf0e1('0x20')]);_0x48e51c=new Vertices(_0x550369,rpc,mailRpc);logger['info'](util[_0xf0e1('0x1e')](_0xf0e1('0x21'),_0x550369[_0xf0e1('0x22')],_0x550369['calleridname'],_0x550369[_0xf0e1('0x23')],_0x550369[_0xf0e1('0x24')],_0x550369[_0xf0e1('0x25')]));_0x4ad1eb['traverseBFS'](_0x5c9766[_0xf0e1('0x1c')]['id'],function(_0x178fa2){try{_0x178fa2=_0x48e51c[_0xf0e1('0x26')](_0x178fa2);logger['debug'](_0xf0e1('0x27'),JSON[_0xf0e1('0x28')](_0x178fa2,null,0x2));if(_0x178fa2[_0xf0e1('0x29')]===_0xf0e1('0x2a')){logger[_0xf0e1('0x2b')](_0xf0e1('0x2c'));_0x550369[_0xf0e1('0x2d')]=_0x178fa2[_0xf0e1('0x2d')]||_0x550369['context'];_0x550369[_0xf0e1('0x2e')]=_0x178fa2[_0xf0e1('0x2e')];_0x550369['priority']=_0x178fa2[_0xf0e1('0x2f')]?_0x178fa2[_0xf0e1('0x2f')]-0x1:0x1;return null;}else if(_0x178fa2&&_0x48e51c[_0x178fa2[_0xf0e1('0x29')]]){_0x352092=_0x48e51c[_0x178fa2[_0xf0e1('0x29')]](_0x178fa2);logger[_0xf0e1('0x2b')](_0xf0e1('0x30'),JSON[_0xf0e1('0x28')](_0x352092,null,0x2));if(_0x352092&&_0x352092['code']===AGI_CODE_SUCCESS&&_0x352092[_0xf0e1('0x31')]!==AGI_RESULT_ERROR&&!_0x550369['evtHangup']){logger['debug'](_0xf0e1('0x30'),inspect(_0x352092));return _[_0xf0e1('0x32')](_0x352092[_0xf0e1('0x31')])?null:_0x352092['result'][_0xf0e1('0x33')]();}else{logger[_0xf0e1('0xc')]('response',inspect(_0x352092));return null;}}else{logger[_0xf0e1('0xc')](_0xf0e1('0x34'));return null;}}catch(_0xb380e8){logger['error'](_0xb380e8[_0xf0e1('0xe')]);return null;}});if(_0x5c9766[_0xf0e1('0x35')]){logger['info'](util[_0xf0e1('0x1e')](_0xf0e1('0x36'),_0x550369[_0xf0e1('0x22')],_0x550369['calleridname'],_0x550369[_0xf0e1('0x23')],_0x550369[_0xf0e1('0x24')],_0x550369[_0xf0e1('0x25')]));_0x4ad1eb[_0xf0e1('0x37')](_0x5c9766['finally']['id'],function(_0x412848){try{_0x412848=_0x48e51c[_0xf0e1('0x26')](_0x412848);logger[_0xf0e1('0x38')](_0xf0e1('0x27'),JSON[_0xf0e1('0x28')](_0x412848,null,0x2));if(_0x412848&&_0x48e51c[_0x412848[_0xf0e1('0x29')]]){_0x352092=_0x48e51c[_0x412848[_0xf0e1('0x29')]](_0x412848);if(_0x352092){logger['debug']('response',inspect(_0x352092));return _[_0xf0e1('0x32')](_0x352092[_0xf0e1('0x31')])?null:_0x352092['result'][_0xf0e1('0x33')]();}else{logger[_0xf0e1('0xc')](_0xf0e1('0x30'),inspect(_0x352092));return null;}}else{logger[_0xf0e1('0xc')](_0xf0e1('0x34'));return null;}}catch(_0x325e68){logger[_0xf0e1('0xc')](_0x325e68[_0xf0e1('0xe')]);return null;}});}logger[_0xf0e1('0x2b')](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x550369[_0xf0e1('0x22')],_0x550369[_0xf0e1('0x39')],_0x550369[_0xf0e1('0x23')],_0x550369['dnid'],_0x550369[_0xf0e1('0x25')]));logger[_0xf0e1('0x2b')](util[_0xf0e1('0x1e')](_0xf0e1('0x3a'),_0x550369[_0xf0e1('0x2d')],_0x550369[_0xf0e1('0x2e')],parseInt(_0x550369[_0xf0e1('0x2f')],0xa)+0x1));_0x550369[_0xf0e1('0x3b')](_0x550369[_0xf0e1('0x2d')],_0x550369[_0xf0e1('0x2e')],parseInt(_0x550369['priority'],0xa)+0x1);_0x550369['close']();}function handleNotFound(_0x207ae6){logger[_0xf0e1('0xc')](util[_0xf0e1('0x1e')](_0xf0e1('0x3c'),_0x207ae6['arg_1']));_0x207ae6[_0xf0e1('0x3b')](_0x207ae6[_0xf0e1('0x2d')],_0x207ae6['extension'],parseInt(_0x207ae6[_0xf0e1('0x2f')],0xa)+0x1);_0x207ae6['close']();}function handleUnpublished(_0x1ec473){logger[_0xf0e1('0xc')](util[_0xf0e1('0x1e')](_0xf0e1('0x3d'),_0x1ec473[_0xf0e1('0x22')]));_0x1ec473[_0xf0e1('0x3b')](_0x1ec473[_0xf0e1('0x2d')],_0x1ec473[_0xf0e1('0x2e')],parseInt(_0x1ec473[_0xf0e1('0x2f')],0xa)+0x1);_0x1ec473[_0xf0e1('0x3e')]();}module['exports']={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index 575238e..da9b6d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fee=['_inBody','inherits','_transform','\x0d\x0a\x0d\x0a','toString','_localBuffer','indexOf','substring','length','trim','slice','headers','util','Transform','call'];(function(_0x146750,_0x1f8532){var _0x477c26=function(_0x4baa68){while(--_0x4baa68){_0x146750['push'](_0x146750['shift']());}};_0x477c26(++_0x1f8532);}(_0x2fee,0x11a));var _0xe2fe=function(_0x1ae8ab,_0x6e5c2a){_0x1ae8ab=_0x1ae8ab-0x0;var _0x1ad705=_0x2fee[_0x1ae8ab];return _0x1ad705;};'use strict';var util=require(_0xe2fe('0x0'));var Transform=require('stream')[_0xe2fe('0x1')];function AGIReply(_0x527fbd){Transform[_0xe2fe('0x2')](this,_0x527fbd);this['_localBuffer']='';this[_0xe2fe('0x3')]=![];}util[_0xe2fe('0x4')](AGIReply,Transform);AGIReply['prototype'][_0xe2fe('0x5')]=function(_0x2676cd,_0x128ac4,_0x4d4ac4){var _0x20d031='\x0a',_0x361d40=['\x0a\x0a',_0xe2fe('0x6')],_0x1a103d=-0x1,_0xe0f512=-0x1,_0x39a31c='',_0x2e0fc1=0x0,_0x51d97f='',_0x2168c8='';this['_localBuffer']+=_0x2676cd[_0xe2fe('0x7')]();_0x51d97f=this[_0xe2fe('0x8')];if(!this[_0xe2fe('0x3')]){_0x2e0fc1=0x0;while(_0x361d40[_0x2e0fc1]){while((_0xe0f512=_0x51d97f[_0xe2fe('0x9')](_0x361d40[_0x2e0fc1]))!=-0x1){_0x39a31c=_0x361d40[_0x2e0fc1];_0x2168c8=_0x51d97f[_0xe2fe('0xa')](0x0,_0xe0f512);_0x51d97f=_0x51d97f[_0xe2fe('0xa')](_0xe0f512+_0x39a31c[_0xe2fe('0xb')]);var _0x42a6c0=_0x2168c8['split'](_0x20d031),_0xaf14b1=0x0,_0x5713de={},_0x2d4b18='',_0x580e98='',_0x3b2753=-0x1;while(_0x42a6c0[_0xaf14b1]){_0x3b2753=_0x42a6c0[_0xaf14b1][_0xe2fe('0x9')](':');if(_0x3b2753!=-0x1){_0x2d4b18=_0x42a6c0[_0xaf14b1]['slice'](0x0,_0x3b2753)[_0xe2fe('0xc')]();_0x580e98=_0x42a6c0[_0xaf14b1][_0xe2fe('0xd')](_0x3b2753+0x1)[_0xe2fe('0xc')]();if(_0x2d4b18[_0xe2fe('0xb')]>0x0){_0x5713de[_0x2d4b18]=_0x580e98;}}else{}_0xaf14b1++;}this['emit'](_0xe2fe('0xe'),_0x5713de);this[_0xe2fe('0x3')]=!![];}_0x2e0fc1++;}this['_localBuffer']=_0x51d97f;}else{while((_0x1a103d=_0x51d97f['indexOf'](_0x20d031))!=-0x1){_0x2168c8=_0x51d97f[_0xe2fe('0xa')](0x0,_0x1a103d);this['emit']('line',_0x2168c8);_0x51d97f=_0x51d97f[_0xe2fe('0xa')](_0x1a103d+_0x20d031['length']);}this[_0xe2fe('0x8')]=_0x51d97f;}_0x4d4ac4();};module['exports']=AGIReply;
\ No newline at end of file
+var _0x97f4=['line','util','stream','Transform','_localBuffer','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','indexOf','substring','length','slice','trim','emit','headers'];(function(_0x2ba3fd,_0x132ae7){var _0xe72d5f=function(_0x4ebd1e){while(--_0x4ebd1e){_0x2ba3fd['push'](_0x2ba3fd['shift']());}};_0xe72d5f(++_0x132ae7);}(_0x97f4,0x166));var _0x497f=function(_0x2239f8,_0xe2601a){_0x2239f8=_0x2239f8-0x0;var _0x283894=_0x97f4[_0x2239f8];return _0x283894;};'use strict';var util=require(_0x497f('0x0'));var Transform=require(_0x497f('0x1'))[_0x497f('0x2')];function AGIReply(_0x40bd65){Transform['call'](this,_0x40bd65);this[_0x497f('0x3')]='';this[_0x497f('0x4')]=![];}util[_0x497f('0x5')](AGIReply,Transform);AGIReply[_0x497f('0x6')][_0x497f('0x7')]=function(_0x5295dc,_0x54892d,_0x3bf9b6){var _0x37a074='\x0a',_0x19b15d=['\x0a\x0a',_0x497f('0x8')],_0x3b23df=-0x1,_0x134614=-0x1,_0x1b5224='',_0x2e6ad0=0x0,_0x534706='',_0x34cec1='';this['_localBuffer']+=_0x5295dc['toString']();_0x534706=this[_0x497f('0x3')];if(!this[_0x497f('0x4')]){_0x2e6ad0=0x0;while(_0x19b15d[_0x2e6ad0]){while((_0x134614=_0x534706[_0x497f('0x9')](_0x19b15d[_0x2e6ad0]))!=-0x1){_0x1b5224=_0x19b15d[_0x2e6ad0];_0x34cec1=_0x534706[_0x497f('0xa')](0x0,_0x134614);_0x534706=_0x534706[_0x497f('0xa')](_0x134614+_0x1b5224[_0x497f('0xb')]);var _0x7bb881=_0x34cec1['split'](_0x37a074),_0x21cf2a=0x0,_0x30579e={},_0x3c769f='',_0x3a82c2='',_0x33771b=-0x1;while(_0x7bb881[_0x21cf2a]){_0x33771b=_0x7bb881[_0x21cf2a][_0x497f('0x9')](':');if(_0x33771b!=-0x1){_0x3c769f=_0x7bb881[_0x21cf2a][_0x497f('0xc')](0x0,_0x33771b)[_0x497f('0xd')]();_0x3a82c2=_0x7bb881[_0x21cf2a][_0x497f('0xc')](_0x33771b+0x1)['trim']();if(_0x3c769f[_0x497f('0xb')]>0x0){_0x30579e[_0x3c769f]=_0x3a82c2;}}else{}_0x21cf2a++;}this[_0x497f('0xe')](_0x497f('0xf'),_0x30579e);this[_0x497f('0x4')]=!![];}_0x2e6ad0++;}this['_localBuffer']=_0x534706;}else{while((_0x3b23df=_0x534706[_0x497f('0x9')](_0x37a074))!=-0x1){_0x34cec1=_0x534706[_0x497f('0xa')](0x0,_0x3b23df);this[_0x497f('0xe')](_0x497f('0x10'),_0x34cec1);_0x534706=_0x534706['substring'](_0x3b23df+_0x37a074[_0x497f('0xb')]);}this['_localBuffer']=_0x534706;}_0x3bf9b6();};module['exports']=AGIReply;
\ No newline at end of file
index 3aa17ff..1928313 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fec=['CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','then','CreateCmContact','getPauseById','ShowPause','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','lodash','client','http','request','error','message','result','catch','getSquareProjects','GetSquareProjects','name','production','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','CloudProvider','email','getSquareProjectById','getVoiceQueueById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getContactByPhone','GetContactByPhone','phone','ShowTrunk','ShowSound','ShowInterval','Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','format','createSquareRecording'];(function(_0x47d6dc,_0xc036cc){var _0x1a1c93=function(_0x18ec96){while(--_0x18ec96){_0x47d6dc['push'](_0x47d6dc['shift']());}};_0x1a1c93(++_0xc036cc);}(_0x3fec,0x1ba));var _0xc3fe=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3fec[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc3fe('0x0'));var moment=require('moment');var jayson=require('jayson/promise');var client=jayson[_0xc3fe('0x1')][_0xc3fe('0x2')]({'port':0x2329});function request(_0x5adb4c,_0x3e2547){return new Promise(function(_0x4f85a4,_0x53a208){return client[_0xc3fe('0x3')](_0x5adb4c,_0x3e2547)['then'](function(_0x2157db){if(_0x2157db[_0xc3fe('0x4')]){return _0x53a208(_0x2157db[_0xc3fe('0x4')][_0xc3fe('0x5')]);}else{return _0x4f85a4(_0x2157db[_0xc3fe('0x6')]);}})[_0xc3fe('0x7')](function(_0x1e532e){return _0x53a208(_0x1e532e);});});}exports[_0xc3fe('0x8')]=function(){return request(_0xc3fe('0x9'),{'options':{'raw':![],'attributes':['id',_0xc3fe('0xa'),_0xc3fe('0xb')]}});};exports[_0xc3fe('0xc')]=function(_0x2852c9){return request(_0xc3fe('0xd'),{'options':{'raw':![],'where':{'name':_0x2852c9},'attributes':[_0xc3fe('0xb')]}});};exports[_0xc3fe('0xe')]=function(_0x5b166d){return request(_0xc3fe('0xf'),{'options':{'raw':![],'where':{'id':_0x5b166d},'include':[{'model':_0xc3fe('0x10'),'as':'Smtp','include':[{'model':_0xc3fe('0x11'),'as':_0xc3fe('0x11')}]}],'attributes':['id',_0xc3fe('0xa'),_0xc3fe('0x12')],'smtp':!![]}});};exports[_0xc3fe('0x13')]=function(_0x1b560f){return request(_0xc3fe('0xd'),{'options':{'where':{'id':_0x1b560f},'attributes':[_0xc3fe('0xa')]}});};exports[_0xc3fe('0x14')]=function(_0x432539){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x432539},'attributes':[_0xc3fe('0xa')]}});};exports['getVariableById']=function(_0x10091c){return request(_0xc3fe('0x15'),{'options':{'where':{'id':_0x10091c},'attributes':[_0xc3fe('0xa')]}});};exports[_0xc3fe('0x16')]=function(_0x17edb6){return request(_0xc3fe('0x17'),{'options':{'where':{'id':_0x17edb6},'attributes':[_0xc3fe('0x18')]}});};exports[_0xc3fe('0x19')]=function(_0x3405dc){return request(_0xc3fe('0x1a'),{'options':{'where':{'id':_0x3405dc},'attributes':[_0xc3fe('0xa')]}});};exports[_0xc3fe('0x1b')]=function(_0x423447){return request(_0xc3fe('0x1c'),{'options':{'where':{'phone':_0x423447[_0xc3fe('0x1d')]},'attributes':['id']}});};exports['getTrunkById']=function(_0x2ce44e){return request(_0xc3fe('0x1e'),{'options':{'where':{'id':_0x2ce44e},'attributes':[_0xc3fe('0xa')]}});};exports['getSoundById']=function(_0x1e3242){return request(_0xc3fe('0x1f'),{'options':{'where':{'id':_0x1e3242},'attributes':['save_name']}});};exports['getIntervalById']=function(_0x3333ad){return request(_0xc3fe('0x20'),{'options':{'raw':![],'where':{'id':_0x3333ad},'include':[{'model':_0xc3fe('0x21'),'as':'Intervals'}]}});};exports[_0xc3fe('0x22')]=function(_0x15706a){return request(_0xc3fe('0x23'),{'options':{'where':{'id':_0x15706a},'attributes':['id',_0xc3fe('0xa')]}});};exports[_0xc3fe('0x24')]=function(_0x474195){return request(_0xc3fe('0x25'),{'body':_0x474195});};exports[_0xc3fe('0x26')]=function(_0x2c4727){return request(_0xc3fe('0x27'),{'body':_0x2c4727});};exports[_0xc3fe('0x28')]=function(_0x2999e7){return request('CreateSquareReport',{'body':_[_0xc3fe('0x29')](_0x2999e7,{'project_name':_0x2999e7[_0xc3fe('0x2a')],'prev_project_name':_0x2999e7[_0xc3fe('0x2b')]||'','is_subproject':_0x2999e7[_0xc3fe('0x2b')]?!![]:![],'leaveAt':moment()[_0xc3fe('0x2c')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0xc3fe('0x2d')]=function(_0x431594){return request(_0xc3fe('0x2e'),{'body':_0x431594});};exports[_0xc3fe('0x2f')]=function(_0x820b7f){return request(_0xc3fe('0x30'),{'body':_0x820b7f});};exports[_0xc3fe('0x31')]=function(_0x267b89){return request(_0xc3fe('0x32'),{'options':{'raw':![],'where':{'phone':_0x267b89[_0xc3fe('0x1d')],'ListId':_0x267b89[_0xc3fe('0x33')]}}})[_0xc3fe('0x34')](function(_0x18dbc0){if(_0x18dbc0){return _0x18dbc0;}return request(_0xc3fe('0x35'),{'body':_0x267b89});});};exports[_0xc3fe('0x36')]=function(_0x1339e7){return request(_0xc3fe('0x37'),{'options':{'where':{'id':_0x1339e7},'attributes':[_0xc3fe('0xa')]}});};exports['agentLogin']=function(_0x1e8a38,_0x19d353){return request(_0xc3fe('0x38'),{'body':{'interface':_0x19d353},'options':{'where':_0x1e8a38}});};exports[_0xc3fe('0x39')]=function(_0x11a44e,_0x293999,_0x3f4573){return request(_0xc3fe('0x3a'),{'body':{'type':_0x293999,'uniqueid':_0x3f4573},'options':{'where':_0x11a44e}});};exports[_0xc3fe('0x3b')]=function(_0x357db9){return request(_0xc3fe('0x3c'),{'body':{},'options':{'where':_0x357db9}});};exports['agentLogout']=function(_0x5b6151){return request('LogoutUser',{'body':{},'options':{'where':_0x5b6151}});};
\ No newline at end of file
+var _0x40b5=['getPauseById','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','lodash','moment','jayson/promise','client','http','request','then','error','message','result','catch','GetSquareProjects','production','ShowMailAccount','MailServerOut','CloudProvider','name','email','ShowSquareProject','getVoiceQueueById','ShowVoiceQueue','ShowVariable','getSquareOdbcById','dsn','getUserById','ShowUser','getContactByPhone','GetContactByPhone','phone','ShowTrunk','getSoundById','ShowSound','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','CreateCmContact'];(function(_0x55609e,_0x55fb56){var _0x316b00=function(_0x3b5349){while(--_0x3b5349){_0x55609e['push'](_0x55609e['shift']());}};_0x316b00(++_0x55fb56);}(_0x40b5,0x1d7));var _0x540b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x40b5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x540b('0x0'));var moment=require(_0x540b('0x1'));var jayson=require(_0x540b('0x2'));var client=jayson[_0x540b('0x3')][_0x540b('0x4')]({'port':0x2329});function request(_0x273ac6,_0x424c68){return new Promise(function(_0x4bfe55,_0x39da2c){return client[_0x540b('0x5')](_0x273ac6,_0x424c68)[_0x540b('0x6')](function(_0x239467){if(_0x239467[_0x540b('0x7')]){return _0x39da2c(_0x239467['error'][_0x540b('0x8')]);}else{return _0x4bfe55(_0x239467[_0x540b('0x9')]);}})[_0x540b('0xa')](function(_0x5aeb5f){return _0x39da2c(_0x5aeb5f);});});}exports['getSquareProjects']=function(){return request(_0x540b('0xb'),{'options':{'raw':![],'attributes':['id','name','production']}});};exports['getSquareProject']=function(_0x13dc02){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x13dc02},'attributes':[_0x540b('0xc')]}});};exports['getMailAccountById']=function(_0x5f23ae){return request(_0x540b('0xd'),{'options':{'raw':![],'where':{'id':_0x5f23ae},'include':[{'model':_0x540b('0xe'),'as':'Smtp','include':[{'model':_0x540b('0xf'),'as':_0x540b('0xf')}]}],'attributes':['id',_0x540b('0x10'),_0x540b('0x11')],'smtp':!![]}});};exports['getSquareProjectById']=function(_0xdf0923){return request(_0x540b('0x12'),{'options':{'where':{'id':_0xdf0923},'attributes':[_0x540b('0x10')]}});};exports[_0x540b('0x13')]=function(_0x498616){return request(_0x540b('0x14'),{'options':{'where':{'id':_0x498616},'attributes':['name']}});};exports['getVariableById']=function(_0x2ab462){return request(_0x540b('0x15'),{'options':{'where':{'id':_0x2ab462},'attributes':[_0x540b('0x10')]}});};exports[_0x540b('0x16')]=function(_0x1efac9){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x1efac9},'attributes':[_0x540b('0x17')]}});};exports[_0x540b('0x18')]=function(_0x118e5d){return request(_0x540b('0x19'),{'options':{'where':{'id':_0x118e5d},'attributes':[_0x540b('0x10')]}});};exports[_0x540b('0x1a')]=function(_0x2a3265){return request(_0x540b('0x1b'),{'options':{'where':{'phone':_0x2a3265[_0x540b('0x1c')]},'attributes':['id']}});};exports['getTrunkById']=function(_0x1b9401){return request(_0x540b('0x1d'),{'options':{'where':{'id':_0x1b9401},'attributes':['name']}});};exports[_0x540b('0x1e')]=function(_0x4b3ec6){return request(_0x540b('0x1f'),{'options':{'where':{'id':_0x4b3ec6},'attributes':['save_name']}});};exports['getIntervalById']=function(_0x17674c){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x17674c},'include':[{'model':_0x540b('0x20'),'as':_0x540b('0x21')}]}});};exports[_0x540b('0x22')]=function(_0x4d7422){return request(_0x540b('0x23'),{'options':{'where':{'id':_0x4d7422},'attributes':['id',_0x540b('0x10')]}});};exports[_0x540b('0x24')]=function(_0x1f69d4){return request(_0x540b('0x25'),{'body':_0x1f69d4});};exports[_0x540b('0x26')]=function(_0x3acfef){return request(_0x540b('0x27'),{'body':_0x3acfef});};exports[_0x540b('0x28')]=function(_0xc967f6){return request('CreateSquareReport',{'body':_[_0x540b('0x29')](_0xc967f6,{'project_name':_0xc967f6[_0x540b('0x2a')],'prev_project_name':_0xc967f6['arg_2']||'','is_subproject':_0xc967f6['arg_2']?!![]:![],'leaveAt':moment()[_0x540b('0x2b')](_0x540b('0x2c'))})});};exports[_0x540b('0x2d')]=function(_0x341b22){return request('CreateSquareRecording',{'body':_0x341b22});};exports[_0x540b('0x2e')]=function(_0x399a6e){return request(_0x540b('0x2f'),{'body':_0x399a6e});};exports[_0x540b('0x30')]=function(_0xd3f5f6){return request(_0x540b('0x31'),{'options':{'raw':![],'where':{'phone':_0xd3f5f6[_0x540b('0x1c')],'ListId':_0xd3f5f6['ListId']}}})['then'](function(_0x491eca){if(_0x491eca){return _0x491eca;}return request(_0x540b('0x32'),{'body':_0xd3f5f6});});};exports[_0x540b('0x33')]=function(_0x3eb220){return request('ShowPause',{'options':{'where':{'id':_0x3eb220},'attributes':['name']}});};exports[_0x540b('0x34')]=function(_0x3a9fe4,_0x541b72){return request(_0x540b('0x35'),{'body':{'interface':_0x541b72},'options':{'where':_0x3a9fe4}});};exports[_0x540b('0x36')]=function(_0x2d4922,_0x3179bb,_0x3735ca){return request(_0x540b('0x37'),{'body':{'type':_0x3179bb,'uniqueid':_0x3735ca},'options':{'where':_0x2d4922}});};exports[_0x540b('0x38')]=function(_0x113a93){return request(_0x540b('0x39'),{'body':{},'options':{'where':_0x113a93}});};exports['agentLogout']=function(_0x45a054){return request('LogoutUser',{'body':{},'options':{'where':_0x45a054}});};
\ No newline at end of file
index 3b8fd69..b5eb6c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44e8=['./polly'];(function(_0x1c3c71,_0x34015a){var _0x1a759a=function(_0x3fa435){while(--_0x3fa435){_0x1c3c71['push'](_0x1c3c71['shift']());}};_0x1a759a(++_0x34015a);}(_0x44e8,0xd7));var _0x844e=function(_0x103e66,_0x249ed3){_0x103e66=_0x103e66-0x0;var _0x15d641=_0x44e8[_0x103e66];return _0x15d641;};var polly=require(_0x844e('0x0'));var lex=require('./lex');module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xc492=['./lex','exports','./polly'];(function(_0x35e124,_0x1d85e2){var _0x53c482=function(_0x5afd39){while(--_0x5afd39){_0x35e124['push'](_0x35e124['shift']());}};_0x53c482(++_0x1d85e2);}(_0xc492,0xd7));var _0x2c49=function(_0x2491a0,_0x5840aa){_0x2491a0=_0x2491a0-0x0;var _0x5bd41e=_0xc492[_0x2491a0];return _0x5bd41e;};var polly=require(_0x2c49('0x0'));var lex=require(_0x2c49('0x1'));module[_0x2c49('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index ea65b42..e51d885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['exports','./lib/api'];(function(_0x37b112,_0x48bead){var _0x7425be=function(_0x2d5105){while(--_0x2d5105){_0x37b112['push'](_0x37b112['shift']());}};_0x7425be(++_0x48bead);}(_0xe706,0xa3));var _0x6e70=function(_0x5da048,_0xca5c85){_0x5da048=_0x5da048-0x0;var _0x13dfc5=_0xe706[_0x5da048];return _0x13dfc5;};'use strict';var lex=require(_0x6e70('0x0'));module[_0x6e70('0x1')]=function(_0x311951,_0x5e8446,_0x2cae77,_0x315629,_0x2ca810,_0x7dfbc3){return lex(_0x311951,_0x5e8446,_0x2cae77,_0x315629,_0x2ca810,_0x7dfbc3);};
\ No newline at end of file
+var _0x3c81=['./lib/api','exports'];(function(_0x1fa059,_0x563a20){var _0x4b2d58=function(_0x5e1aeb){while(--_0x5e1aeb){_0x1fa059['push'](_0x1fa059['shift']());}};_0x4b2d58(++_0x563a20);}(_0x3c81,0x102));var _0x13c8=function(_0x8e2ad0,_0x49e52b){_0x8e2ad0=_0x8e2ad0-0x0;var _0x5c43e5=_0x3c81[_0x8e2ad0];return _0x5c43e5;};'use strict';var lex=require(_0x13c8('0x0'));module[_0x13c8('0x1')]=function(_0x48c35b,_0x252f26,_0x131d0b,_0x4954c2,_0x5913e9,_0x5c3ba4){return lex(_0x48c35b,_0x252f26,_0x131d0b,_0x4954c2,_0x5913e9,_0x5c3ba4);};
\ No newline at end of file
index 2e91b87..4e30c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x38ea85,_0x44112e){var _0x31b7dc=function(_0x8df24e){while(--_0x8df24e){_0x38ea85['push'](_0x38ea85['shift']());}};_0x31b7dc(++_0x44112e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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(_0xdb6e6b,_0x28d173){var _0x4f9c73=function(_0x11db22){while(--_0x11db22){_0xdb6e6b['push'](_0xdb6e6b['shift']());}};_0x4f9c73(++_0x28d173);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
index 1aebc28..641be4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f28=['exports','./lib/api'];(function(_0x386cb0,_0x597bfe){var _0x3d8379=function(_0x12cc6b){while(--_0x12cc6b){_0x386cb0['push'](_0x386cb0['shift']());}};_0x3d8379(++_0x597bfe);}(_0x2f28,0x15f));var _0x82f2=function(_0x2c1c4a,_0x26b5b2){_0x2c1c4a=_0x2c1c4a-0x0;var _0x2b7391=_0x2f28[_0x2c1c4a];return _0x2b7391;};'use strict';var polly=require(_0x82f2('0x0'));module[_0x82f2('0x1')]=function(_0x3613db,_0x59938d,_0xd30ae5,_0x5b21d7,_0xc6cd80,_0x30629a,_0x4e4ae0){return polly(_0x3613db,_0x59938d,_0xd30ae5,_0x5b21d7,_0xc6cd80,_0x30629a,_0x4e4ae0);};
\ No newline at end of file
+var _0x8603=['exports','./lib/api'];(function(_0x1eed52,_0x1bb3c1){var _0x57782a=function(_0x2cb894){while(--_0x2cb894){_0x1eed52['push'](_0x1eed52['shift']());}};_0x57782a(++_0x1bb3c1);}(_0x8603,0xcb));var _0x3860=function(_0x1a6c94,_0x445053){_0x1a6c94=_0x1a6c94-0x0;var _0x4a2d59=_0x8603[_0x1a6c94];return _0x4a2d59;};'use strict';var polly=require(_0x3860('0x0'));module[_0x3860('0x1')]=function(_0x5e2f76,_0x4f547f,_0x2868aa,_0x2ce627,_0x328141,_0x4c3444,_0xe8ff99){return polly(_0x5e2f76,_0x4f547f,_0x2868aa,_0x2ce627,_0x328141,_0x4c3444,_0xe8ff99);};
\ No newline at end of file
index 419ac48..37af1cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1432=['writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','mp3','path','aws-sdk','synthesizeSpeech','AudioStream'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x1432,0x1be));var _0x2143=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x1432[_0x2be8c2];return _0x97f531;};'use strict';var fs=require('fs');var path=require(_0x2143('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var AWS=require(_0x2143('0x1'));function pollyResult(_0x43079b,_0x20dc83,_0x68a3b0){return new BPromise(function(_0x26b2a0,_0x42560a){_0x43079b[_0x2143('0x2')](_0x20dc83,function(_0x54e3d8,_0x48c050){if(_0x54e3d8){_0x42560a(_0x54e3d8);}else if(_0x48c050){if(_0x48c050[_0x2143('0x3')]instanceof Buffer){fs[_0x2143('0x4')](_0x68a3b0,_0x48c050['AudioStream'],function(_0x26eedb){if(_0x26eedb){_0x42560a(_0x26eedb);}else{_0x26b2a0();}});}else{_0x42560a(new Error(_0x2143('0x5')));}}else{_0x42560a(new Error(_0x2143('0x6')));}});});}module[_0x2143('0x7')]=function(_0xcaae24,_0x3712c6,_0x1d6103,_0x195083,_0x3d6fa8,_0x56f9de,_0x55c3b6){var _0x3703e3=new AWS['Polly']({'accessKeyId':_0xcaae24,'secretAccessKey':_0x3712c6,'region':_0x1d6103});var _0x1122f3={'Text':_0x3d6fa8,'TextType':_0x56f9de||_0x2143('0x8'),'OutputFormat':_0x2143('0x9'),'VoiceId':_0x195083};return pollyResult(_0x3703e3,_0x1122f3,_0x55c3b6);};
\ No newline at end of file
+var _0x61fb=['aws-sdk','synthesizeSpeech','AudioStream','writeFile','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','bluebird','randomstring'];(function(_0x53daae,_0x51a400){var _0x12be55=function(_0x312d46){while(--_0x312d46){_0x53daae['push'](_0x53daae['shift']());}};_0x12be55(++_0x51a400);}(_0x61fb,0x129));var _0xb61f=function(_0x5ad37c,_0x48985a){_0x5ad37c=_0x5ad37c-0x0;var _0x322c6a=_0x61fb[_0x5ad37c];return _0x322c6a;};'use strict';var fs=require('fs');var path=require(_0xb61f('0x0'));var BPromise=require(_0xb61f('0x1'));var rs=require(_0xb61f('0x2'));var AWS=require(_0xb61f('0x3'));function pollyResult(_0x51c179,_0x1981bd,_0x5a86c9){return new BPromise(function(_0x4248dd,_0x90528b){_0x51c179[_0xb61f('0x4')](_0x1981bd,function(_0x4b71ac,_0x2e97a1){if(_0x4b71ac){_0x90528b(_0x4b71ac);}else if(_0x2e97a1){if(_0x2e97a1[_0xb61f('0x5')]instanceof Buffer){fs[_0xb61f('0x6')](_0x5a86c9,_0x2e97a1[_0xb61f('0x5')],function(_0x332bb7){if(_0x332bb7){_0x90528b(_0x332bb7);}else{_0x4248dd();}});}else{_0x90528b(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x90528b(new Error(_0xb61f('0x7')));}});});}module[_0xb61f('0x8')]=function(_0x454ee4,_0x1394ab,_0x518fa7,_0x20b2c3,_0x238b0b,_0xeb923f,_0x4b511e){var _0x6faad2=new AWS[(_0xb61f('0x9'))]({'accessKeyId':_0x454ee4,'secretAccessKey':_0x1394ab,'region':_0x518fa7});var _0x424a8d={'Text':_0x238b0b,'TextType':_0xeb923f||_0xb61f('0xa'),'OutputFormat':_0xb61f('0xb'),'VoiceId':_0x20b2c3};return pollyResult(_0x6faad2,_0x424a8d,_0x4b511e);};
\ No newline at end of file
index 3defc7f..31843b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e75=['./lib/api','exports'];(function(_0x3bf40f,_0x429f3a){var _0x1377a3=function(_0x54bf68){while(--_0x54bf68){_0x3bf40f['push'](_0x3bf40f['shift']());}};_0x1377a3(++_0x429f3a);}(_0x0e75,0x140));var _0x50e7=function(_0x452901,_0x1e2e7d){_0x452901=_0x452901-0x0;var _0x5639c6=_0x0e75[_0x452901];return _0x5639c6;};'use strict';var asr=require(_0x50e7('0x0'));module[_0x50e7('0x1')]=function(_0x312c72,_0x571ae6,_0x4541bc,_0x2a2351){return asr(_0x312c72,_0x571ae6,_0x4541bc);};
\ No newline at end of file
+var _0x8eb6=['./lib/api'];(function(_0x501e26,_0x1acb7b){var _0x568e27=function(_0x4d0c81){while(--_0x4d0c81){_0x501e26['push'](_0x501e26['shift']());}};_0x568e27(++_0x1acb7b);}(_0x8eb6,0x12e));var _0x68eb=function(_0x18e978,_0x13ad9c){_0x18e978=_0x18e978-0x0;var _0x33f249=_0x8eb6[_0x18e978];return _0x33f249;};'use strict';var asr=require(_0x68eb('0x0'));module['exports']=function(_0x78931f,_0x1046a9,_0xe3b055,_0x5833e7){return asr(_0x78931f,_0x1046a9,_0xe3b055);};
\ No newline at end of file
index 11104ed..b44c16b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x544a=['undefined','lang\x20should\x20be\x20a\x20string','toString','base64','POST','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','string','length','filepath\x20should\x20be\x20a\x20string'];(function(_0x21b94c,_0xb98409){var _0x549792=function(_0x27de0){while(--_0x27de0){_0x21b94c['push'](_0x21b94c['shift']());}};_0x549792(++_0xb98409);}(_0x544a,0xbd));var _0xa544=function(_0x4d24ea,_0x21cd57){_0x4d24ea=_0x4d24ea-0x0;var _0x48bb37=_0x544a[_0x4d24ea];return _0x48bb37;};'use strict';var url=require(_0xa544('0x0'));var BPromise=require(_0xa544('0x1'));var fs=require('fs');var host=_0xa544('0x2');module['exports']=function(_0x544b38,_0x46d7b6,_0x5026f6){return new BPromise(function(_0x42b8f1,_0xdca212){var _0x556528;if(typeof _0x544b38!==_0xa544('0x3')||_0x544b38[_0xa544('0x4')]===0x0){return _0xdca212(_0xa544('0x5'));}if(typeof _0x46d7b6!==_0xa544('0x3')||_0x46d7b6[_0xa544('0x4')]===0x0){return _0xdca212('key\x20should\x20be\x20a\x20string');}if(typeof _0x5026f6!==_0xa544('0x6')&&(typeof _0x5026f6!=='string'||_0x5026f6[_0xa544('0x4')]===0x0)){return _0xdca212(_0xa544('0x7'));}try{_0x556528=fs['readFileSync'](_0x544b38)[_0xa544('0x8')](_0xa544('0x9'));}catch(_0x4766a8){return _0xdca212(_0x4766a8);}return _0x42b8f1({'method':_0xa544('0xa'),'uri':host+'/v1/speech:recognize?key='+_0x46d7b6,'body':{'config':{'encoding':_0xa544('0xb'),'sampleRateHertz':_0xa544('0xc'),'languageCode':_0x5026f6},'audio':{'content':_0x556528}},'json':!![]});});};
\ No newline at end of file
+var _0x99e9=['bluebird','https://speech.googleapis.com','exports','string','filepath\x20should\x20be\x20a\x20string','length','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x99e9,0xb4));var _0x999e=function(_0x508c10,_0x5a15f0){_0x508c10=_0x508c10-0x0;var _0x3108b5=_0x99e9[_0x508c10];return _0x3108b5;};'use strict';var url=require('url');var BPromise=require(_0x999e('0x0'));var fs=require('fs');var host=_0x999e('0x1');module[_0x999e('0x2')]=function(_0x1c6fa0,_0x4aaeb4,_0x19a818){return new BPromise(function(_0x2f803e,_0x3aac27){var _0x4e2112;if(typeof _0x1c6fa0!==_0x999e('0x3')||_0x1c6fa0['length']===0x0){return _0x3aac27(_0x999e('0x4'));}if(typeof _0x4aaeb4!==_0x999e('0x3')||_0x4aaeb4[_0x999e('0x5')]===0x0){return _0x3aac27(_0x999e('0x6'));}if(typeof _0x19a818!=='undefined'&&(typeof _0x19a818!==_0x999e('0x3')||_0x19a818[_0x999e('0x5')]===0x0)){return _0x3aac27(_0x999e('0x7'));}try{_0x4e2112=fs[_0x999e('0x8')](_0x1c6fa0)[_0x999e('0x9')](_0x999e('0xa'));}catch(_0x3f2c24){return _0x3aac27(_0x3f2c24);}return _0x2f803e({'method':_0x999e('0xb'),'uri':host+_0x999e('0xc')+_0x4aaeb4,'body':{'config':{'encoding':_0x999e('0xd'),'sampleRateHertz':_0x999e('0xe'),'languageCode':_0x19a818},'audio':{'content':_0x4e2112}},'json':!![]});});};
\ No newline at end of file
index 911c043..fd11709 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3656=['exports'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x3656,0xda));var _0x6365=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x3656[_0x4a9fb1];return _0x348672;};var asr=require('./asr');module[_0x6365('0x0')]={'asr':asr};
\ No newline at end of file
+var _0xf63a=['./asr','exports'];(function(_0x12e9ef,_0x2897ca){var _0x563da8=function(_0x25a219){while(--_0x25a219){_0x12e9ef['push'](_0x12e9ef['shift']());}};_0x563da8(++_0x2897ca);}(_0xf63a,0x130));var _0xaf63=function(_0x1fd8b3,_0x3bd29a){_0x1fd8b3=_0x1fd8b3-0x0;var _0x1f461f=_0xf63a[_0x1fd8b3];return _0x1f461f;};var asr=require(_0xaf63('0x0'));module[_0xaf63('0x1')]={'asr':asr};
\ No newline at end of file
index 63f941c..389accf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc3e=['result','source','resolvedQuery','action','fulfillment','speech','code','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','parse','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','http','https','md5','path','querystring','randomstring','sox','google-tts-api','url','util','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','get','statusCode','error','request\x20to\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','download\x20error','pipe','end','\x20failed,\x20status\x20code\x20=\x20','data','error\x20convert','finish\x20to\x20convert','start','tmp','generate','writeFileSync','then','unlink','chmodSync','777','split','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','MP3','text:synthesize','POST','.mp3','audioContent','resolve','.wav','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','null','generic','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','googleASR','asr','uri','results','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','name','message','googleDialogflow'];(function(_0x40c7b5,_0x50720d){var _0x2fa6bd=function(_0xd067f1){while(--_0xd067f1){_0x40c7b5['push'](_0x40c7b5['shift']());}};_0x2fa6bd(++_0x50720d);}(_0xbc3e,0x1c1));var _0xebc3=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xbc3e[_0x53ccf2];return _0x5a2964;};'use strict';var apiai=require(_0xebc3('0x0'));var BPromise=require(_0xebc3('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0xebc3('0x2'));var https=require(_0xebc3('0x3'));var md5=require(_0xebc3('0x4'));var path=require(_0xebc3('0x5'));var querystring=require(_0xebc3('0x6'));var rp=require('request-promise');var rs=require(_0xebc3('0x7'));var sox=require(_0xebc3('0x8'));var tts=require(_0xebc3('0x9'));var urlParse=require(_0xebc3('0xa'))['parse'];var util=require(_0xebc3('0xb'));var aws=require('./aws');var google=require('./google');var sestek=require(_0xebc3('0xc'));var tilde=require('./tilde');var logger=require(_0xebc3('0xd'))(_0xebc3('0xe'));var ISPEECH_API=_0xebc3('0xf');function downloadFile(_0x322f37,_0x5ce2c8){return new BPromise(function(_0x300182,_0x2b7f14){var _0x556963=urlParse(_0x322f37);var _0x39bb42=_0x556963[_0xebc3('0x10')]===_0xebc3('0x11')?https:http;var _0x13b565={'host':_0x556963['host'],'path':_0x556963['path'],'headers':{'user-agent':_0xebc3('0x12')}};_0x39bb42[_0xebc3('0x13')](_0x13b565,function(_0x55b4fb){if(_0x55b4fb[_0xebc3('0x14')]!==0xc8){logger[_0xebc3('0x15')](_0xebc3('0x16')+_0x322f37+'\x20failed,\x20status\x20code\x20=\x20'+_0x55b4fb[_0xebc3('0x14')]+'\x20('+_0x55b4fb[_0xebc3('0x17')]+')');_0x2b7f14(new Error(_0xebc3('0x16')+_0x322f37+'\x20failed,\x20status\x20code\x20=\x20'+_0x55b4fb[_0xebc3('0x14')]+'\x20('+_0x55b4fb[_0xebc3('0x17')]+')'));return;}var _0x559f07=fs[_0xebc3('0x18')](_0x5ce2c8);_0x559f07['on'](_0xebc3('0x19'),function(){logger[_0xebc3('0x1a')](_0xebc3('0x1b'));_0x559f07[_0xebc3('0x1c')](_0x300182);});_0x559f07['on'](_0xebc3('0x15'),function(_0x29a4dd){fs['unlink'](_0x5ce2c8);logger[_0xebc3('0x15')](_0xebc3('0x1d'),_0x29a4dd);_0x2b7f14(_0x29a4dd);});_0x55b4fb[_0xebc3('0x1e')](_0x559f07);})['on'](_0xebc3('0x15'),function(_0x3d95bc){logger[_0xebc3('0x15')](_0x3d95bc);_0x2b7f14(_0x3d95bc);})[_0xebc3('0x1f')]();});}function uploadFile(_0x5b2de3){return new BPromise(function(_0x47dd8c,_0x1419d6){var _0xa6f74c=urlParse(_0x5b2de3);var _0xf80eac=_0xa6f74c['protocol']===_0xebc3('0x11')?https:http;var _0x39e5c7={'host':_0xa6f74c['host'],'path':_0xa6f74c[_0xebc3('0x5')],'headers':{'user-agent':_0xebc3('0x12')}};_0xf80eac['get'](_0x39e5c7,function(_0x2ca054){if(_0x2ca054['statusCode']!==0xc8){_0x1419d6(new Error('request\x20to\x20'+_0x5b2de3+_0xebc3('0x20')+_0x2ca054[_0xebc3('0x14')]+'\x20('+_0x2ca054[_0xebc3('0x17')]+')'));return;}var _0x309722='';_0x2ca054['on'](_0xebc3('0x21'),function(_0x4d07a3){_0x309722+=_0x4d07a3;});_0x2ca054['on']('end',function(){_0x47dd8c(_0x309722);});})['on'](_0xebc3('0x15'),function(_0xa2e894){_0x1419d6(_0xa2e894);})[_0xebc3('0x1f')]();});}function convertFile(_0x316bc8,_0x14c3a4){return new BPromise(function(_0x5e527f,_0x294a88){var _0x2b01e6=sox['transcode'](_0x316bc8,_0x14c3a4,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2b01e6['on'](_0xebc3('0x15'),function(_0x42c076){logger[_0xebc3('0x15')](_0xebc3('0x22'),_0x42c076);_0x294a88(_0x42c076);});_0x2b01e6['on'](_0xebc3('0x1f'),function(){logger['info'](_0xebc3('0x23'));_0x5e527f();});_0x2b01e6[_0xebc3('0x24')]();});}function base64Decode(_0x1876fc,_0x17ca58){var _0xec78e1=path['resolve'](__dirname,_0xebc3('0x25'),rs[_0xebc3('0x26')](0x4)+'.wav');fs[_0xebc3('0x27')](_0xec78e1,_0x1876fc,'base64');return convertFile(_0xec78e1,_0x17ca58)[_0xebc3('0x28')](function(){try{fs[_0xebc3('0x29')](_0xec78e1);fs[_0xebc3('0x2a')](_0x17ca58,_0xebc3('0x2b'));}catch(_0x402ff4){logger['error'](_0x402ff4);}return _0x17ca58[_0xebc3('0x2c')]('.')[0x0];});}function base64Encode(_0x5ea3ea){var _0x2f6a8d=fs['readFileSync'](_0x5ea3ea);return new Buffer(_0x2f6a8d)[_0xebc3('0x2d')](_0xebc3('0x2e'));}exports[_0xebc3('0x2f')]=function(_0x16efdc,_0x505881,_0x35279f,_0x4e9d4e,_0xf080b7,_0x7a02c1){var _0x46e14d,_0x4f44e5;var _0x101f85=_0xebc3('0x30');var _0x4cabe2=_0xebc3('0x31')+_0x16efdc;var _0xbae5c6={};if(_0x505881===_0xebc3('0x32')){_0xbae5c6[_0xebc3('0x33')]={'ssml':_0x35279f};}else{_0xbae5c6['input']={'text':_0x35279f};};_0xbae5c6['voice']={'languageCode':_0x4e9d4e,'ssmlGender':_0xf080b7};_0xbae5c6['audioConfig']={'audioEncoding':_0xebc3('0x34'),'sampleRateHertz':0x1f40};var _0x492e8f={'url':_0x101f85+_0xebc3('0x35')+_0x4cabe2,'method':_0xebc3('0x36'),'json':!![],'body':_0xbae5c6};return rp(_0x492e8f)[_0xebc3('0x28')](function(_0x422c89){return new BPromise(function(_0x4e79dc,_0x5d17b0){_0x46e14d=path['resolve'](__dirname,_0xebc3('0x25'),rs['generate'](0x4)+_0xebc3('0x37'));var _0x26e247=Buffer['from'](_0x422c89[_0xebc3('0x38')],'base64');return fs['writeFile'](_0x46e14d,_0x26e247,function(_0x3be531){_0x5d17b0(_0x3be531);},function(_0x59b63a){fs['chmodSync'](_0x46e14d,_0xebc3('0x2b'));_0x4e79dc(_0x59b63a);});});})[_0xebc3('0x28')](function(_0x11b34c){_0x4f44e5=path[_0xebc3('0x39')](__dirname,_0xebc3('0x25'),rs[_0xebc3('0x26')](0x4)+_0xebc3('0x3a'));return convertFile(_0x46e14d,_0x4f44e5);})[_0xebc3('0x28')](function(){try{fs['unlink'](_0x46e14d);fs[_0xebc3('0x2a')](_0x4f44e5,'777');}catch(_0x8e353e){logger['error'](_0x8e353e);}logger[_0xebc3('0x1a')](_0xebc3('0x3b'),_0x4f44e5[_0xebc3('0x2c')]('.')[0x0]);return _0x4f44e5[_0xebc3('0x2c')]('.')[0x0];});};exports[_0xebc3('0x3c')]=function(_0x2aaea5,_0x34cade){var _0x2496d0=_0xebc3('0x3d');var _0x183051,_0x8d70e1;var _0x4e8a05;var _0x8e7f2a={'encoding':_0xebc3('0x3e'),'method':'POST','timeout':0x2710,'url':_0x2496d0,'headers':{'Content-Type':_0xebc3('0x3f')},'body':_0xebc3('0x40')+encodeURIComponent(JSON['stringify']([[[_0xebc3('0x41'),JSON[_0xebc3('0x42')]([_0x2aaea5,_0x34cade||'en',![],_0xebc3('0x43')]),null,_0xebc3('0x44')]]]))};return rp(_0x8e7f2a)[_0xebc3('0x28')](function(_0x3755fa){try{_0x4e8a05=eval(_0x3755fa['slice'](0x5))[0x0][0x2];}catch(_0x39c0bb){throw new Error(_0xebc3('0x45')+_0x3755fa[_0xebc3('0x21')]);}if(!_0x4e8a05){if(_0x2aaea5[_0xebc3('0x46')]>0xc8){throw new Error(_0xebc3('0x47'));}else{throw new Error('lang\x20\x22'+_0x34cade+_0xebc3('0x48'));}}try{_0x4e8a05=eval(_0x4e8a05)[0x0];}catch(_0x490ac6){throw new Error(_0xebc3('0x45')+res[_0xebc3('0x21')]);}const _0x3c0b8f=_0x4e8a05;_0x183051=path[_0xebc3('0x39')](__dirname,_0xebc3('0x25'),rs[_0xebc3('0x26')](0x4)+_0xebc3('0x37'));fs[_0xebc3('0x27')](_0x183051,_0x4e8a05,{'encoding':_0xebc3('0x2e')});_0x8d70e1=path[_0xebc3('0x39')](__dirname,_0xebc3('0x25'),rs[_0xebc3('0x26')](0x4)+_0xebc3('0x3a'));return convertFile(_0x183051,_0x8d70e1);})[_0xebc3('0x28')](function(){try{fs[_0xebc3('0x29')](_0x183051);fs[_0xebc3('0x2a')](_0x8d70e1,'777');}catch(_0x4b5809){logger[_0xebc3('0x15')](_0x4b5809);}logger[_0xebc3('0x1a')]('goggleTTS\x20path',_0x8d70e1[_0xebc3('0x2c')]('.')[0x0]);return _0x8d70e1[_0xebc3('0x2c')]('.')[0x0];});};exports[_0xebc3('0x49')]=function(_0x5955b1,_0x353951,_0x493da5){return google[_0xebc3('0x4a')](_0x5955b1,_0x353951,_0x493da5)['then'](function(_0x1e4633){logger['info'](_0x1e4633[_0xebc3('0x4b')]);return rp(_0x1e4633);})[_0xebc3('0x28')](function(_0x3ffa04){var _0x3f61c5='';var _0x2ebabc=0x0;try{fs['unlink'](_0x5955b1);}catch(_0x1dc6ed){logger['error'](_0x1dc6ed);}if(_0x3ffa04&&_0x3ffa04['results']){_0x3f61c5=_0x3ffa04[_0xebc3('0x4c')]['map'](function(_0x4d1177){return _0x4d1177&&_0x4d1177[_0xebc3('0x4d')][0x0]&&_0x4d1177['alternatives'][0x0][_0xebc3('0x4e')]?_0x4d1177[_0xebc3('0x4d')][0x0][_0xebc3('0x4e')]:'';})[_0xebc3('0x4f')]('\x0a');_0x2ebabc=_0x3ffa04[_0xebc3('0x4c')]['map'](function(_0x6a2e58){return _0x6a2e58&&_0x6a2e58[_0xebc3('0x4d')][0x0]&&_0x6a2e58[_0xebc3('0x4d')][0x0][_0xebc3('0x50')]?_0x6a2e58['alternatives'][0x0][_0xebc3('0x50')]:0x0;})[_0xebc3('0x4f')]('\x0a');}logger[_0xebc3('0x1a')](_0xebc3('0x51'),_0x3f61c5);logger[_0xebc3('0x1a')](_0xebc3('0x52'),_0x2ebabc);return{'transcript':_0x3f61c5,'confidence':_0x2ebabc};})[_0xebc3('0x53')](function(_0xa91427){logger[_0xebc3('0x15')]('[%s]\x20%s:%s',_0xa91427[_0xebc3('0x14')],_0xa91427[_0xebc3('0x54')],_0xa91427[_0xebc3('0x55')]);});};exports[_0xebc3('0x56')]=function(_0x171eac,_0x286e54,_0x1c65b8,_0x1a2b2b){var _0x202d86=apiai(_0x286e54,{'language':_0x1a2b2b||'en'});return _0x202d86['textRequest'](_0x1c65b8,{'sessionId':md5(_0x171eac)})[_0xebc3('0x28')](function(_0x5d5db3){logger[_0xebc3('0x1a')](JSON['stringify'](_0x5d5db3));return{'source':_0x5d5db3[_0xebc3('0x57')][_0xebc3('0x58')],'resolvedQuery':_0x5d5db3[_0xebc3('0x57')][_0xebc3('0x59')],'action':_0x5d5db3[_0xebc3('0x57')][_0xebc3('0x5a')],'actionIncomplete':_0x5d5db3[_0xebc3('0x57')]['actionIncomplete'],'speech':_0x5d5db3[_0xebc3('0x57')][_0xebc3('0x5b')][_0xebc3('0x5c')],'score':_0x5d5db3[_0xebc3('0x57')]['score'],'statusCode':_0x5d5db3['status'][_0xebc3('0x5d')],'endConversation':_0x5d5db3[_0xebc3('0x57')][_0xebc3('0x5e')][_0xebc3('0x5f')]||![],'isFallbackIntent':_0x5d5db3[_0xebc3('0x57')]['metadata'][_0xebc3('0x60')]};});};exports['googleDialogflowV2']=function(_0x53cf3c,_0x7100c3,_0x50bcf5,_0x1d2780,_0x3891d8,_0x3d3a64){var _0x3028c8=_0x1d2780[_0xebc3('0x61')](/\\n/g,'\x0a');var _0xddfca7={'credentials':{'private_key':_0x3028c8,'client_email':_0x50bcf5}};var _0xe76f38=new dialogflow[(_0xebc3('0x62'))](_0xddfca7);var _0x4d7282=_0xe76f38[_0xebc3('0x63')](_0x7100c3,md5(_0x53cf3c));var _0x4666a2={'session':_0x4d7282,'queryInput':{'text':{'text':_0x3891d8,'languageCode':_0x3d3a64}}};return _0xe76f38[_0xebc3('0x64')](_0x4666a2)[_0xebc3('0x28')](function(_0x54f7aa){if(_0x54f7aa&&_0x54f7aa[_0xebc3('0x46')]){logger[_0xebc3('0x1a')](_0xebc3('0x65'),JSON['stringify'](_0x54f7aa));var _0x4f6379=_0x54f7aa[0x0];if(_0x4f6379){var _0x26bfaf={'action':_0x4f6379[_0xebc3('0x66')][_0xebc3('0x5a')],'allRequiredParamsPresent':_0x4f6379[_0xebc3('0x66')]['allRequiredParamsPresent'],'endConversation':_0x4f6379[_0xebc3('0x66')]['diagnosticInfo']&&_0x4f6379[_0xebc3('0x66')][_0xebc3('0x67')][_0xebc3('0x68')]?_0x4f6379['queryResult'][_0xebc3('0x67')][_0xebc3('0x68')][_0xebc3('0x69')]['boolValue']:![],'fulfillmentText':_0x4f6379['queryResult'][_0xebc3('0x6a')],'intentName':_0x4f6379['queryResult'][_0xebc3('0x6b')][_0xebc3('0x54')],'intentDisplayName':_0x4f6379['queryResult'][_0xebc3('0x6b')][_0xebc3('0x6c')],'isFallbackIntent':_0x4f6379[_0xebc3('0x66')]['intent']['isFallback'],'languageCode':_0x4f6379[_0xebc3('0x66')]['languageCode'],'queryText':_0x4f6379[_0xebc3('0x66')][_0xebc3('0x6d')],'responseId':_0x4f6379[_0xebc3('0x6e')],'score':_0x4f6379['queryResult'][_0xebc3('0x6f')],'speech':_0x4f6379[_0xebc3('0x66')][_0xebc3('0x6a')],'providerResponse':JSON['stringify'](_0x54f7aa)};return _0x26bfaf;}}});};exports[_0xebc3('0x70')]=function(_0x5f4492,_0x36316a,_0x25c144,_0x14367c){return tilde[_0xebc3('0x4a')](_0x5f4492,_0x36316a,_0x25c144,_0x14367c)[_0xebc3('0x28')](function(_0x84ab54){try{fs['unlink'](_0x5f4492);}catch(_0x1a8ecb){logger['error'](_0x1a8ecb);}logger['info'](_0xebc3('0x71'),_0x84ab54[_0xebc3('0x4e')]);logger[_0xebc3('0x1a')](_0xebc3('0x72'),_0x84ab54[_0xebc3('0x50')]);return _0x84ab54;});};exports[_0xebc3('0x73')]=function(_0x1e4c13,_0x31594c,_0xf7bdcc,_0x268738,_0x43530a,_0x2e30a9){var _0x2dd96b=path[_0xebc3('0x39')](__dirname,_0xebc3('0x25'),rs['generate'](0x4)+_0xebc3('0x37'));var _0x461f23;return aws['polly'](_0x1e4c13,_0x31594c,_0xf7bdcc,_0x268738,_0x43530a,_0x2e30a9,_0x2dd96b)['then'](function(){_0x461f23=path['resolve'](__dirname,'tmp',rs[_0xebc3('0x26')](0x4)+_0xebc3('0x3a'));return convertFile(_0x2dd96b,_0x461f23);})['then'](function(){try{fs[_0xebc3('0x29')](_0x2dd96b);fs['chmodSync'](_0x461f23,_0xebc3('0x2b'));}catch(_0x20525a){logger[_0xebc3('0x15')](_0x20525a);}return _0x461f23['split']('.')[0x0];});};exports[_0xebc3('0x74')]=function(_0x2d5b80,_0x591b64,_0x5d6243,_0x5d95ee,_0xc10323,_0x31a330){return aws[_0xebc3('0x75')](_0x2d5b80,_0x591b64,_0x5d6243,_0x5d95ee,_0xc10323,_0x31a330)[_0xebc3('0x28')](function(_0x8bf10c){logger[_0xebc3('0x1a')](JSON['stringify'](_0x8bf10c));return _0x8bf10c;});};exports[_0xebc3('0x76')]=function(_0x223606,_0x5c8d15,_0x10a8f8,_0x355541){var _0x114b02=util[_0xebc3('0x77')](_0xebc3('0x78'),ISPEECH_API,_0x223606,encodeURIComponent(_0x5c8d15),_0x10a8f8,_0x355541);var _0xcec51b=path[_0xebc3('0x39')](__dirname,'tmp',rs['generate'](0x4)+_0xebc3('0x37'));var _0x21d0bb;return downloadFile(_0x114b02,_0xcec51b)[_0xebc3('0x28')](function(){_0x21d0bb=path[_0xebc3('0x39')](__dirname,_0xebc3('0x25'),rs[_0xebc3('0x26')](0x4)+_0xebc3('0x3a'));return convertFile(_0xcec51b,_0x21d0bb);})[_0xebc3('0x28')](function(){try{fs[_0xebc3('0x29')](_0xcec51b);fs[_0xebc3('0x2a')](_0x21d0bb,_0xebc3('0x2b'));}catch(_0x282593){logger[_0xebc3('0x15')](_0x282593);}return _0x21d0bb[_0xebc3('0x2c')]('.')[0x0];});};exports[_0xebc3('0x79')]=function(_0x3d57f8,_0x3d5b1c,_0xaf7080,_0x464d07){var _0x214745=util[_0xebc3('0x77')](_0xebc3('0x7a'),ISPEECH_API,_0x3d5b1c,_0xaf7080,base64Encode(_0x3d57f8),_0x464d07?util[_0xebc3('0x77')]('model=%s',encodeURIComponent(_0x464d07)):_0xebc3('0x7b'));return uploadFile(_0x214745)[_0xebc3('0x28')](function(_0x30a2dd){return querystring[_0xebc3('0x7c')](_0x30a2dd);});};exports[_0xebc3('0x7d')]=function(_0x26aedb,_0x88ed38){return sestek[_0xebc3('0x7e')](_0x26aedb,_0x88ed38)[_0xebc3('0x28')](function(_0x2d2759){logger[_0xebc3('0x1a')](JSON[_0xebc3('0x42')](_0x2d2759));var _0x3ebc3a={'speech':_0x2d2759[_0xebc3('0x7f')],'action':_0x2d2759[_0xebc3('0x80')]?_0x2d2759[_0xebc3('0x80')][_0xebc3('0x81')]:undefined,'actiondata':_0x2d2759[_0xebc3('0x80')]?_0x2d2759[_0xebc3('0x80')][_0xebc3('0x82')]:undefined};if(_0x2d2759[_0xebc3('0x80')]&&_0x2d2759[_0xebc3('0x80')]['AudioFromTts']){return base64Decode(_0x2d2759[_0xebc3('0x80')][_0xebc3('0x83')]['Data'],path[_0xebc3('0x39')](__dirname,'tmp',rs[_0xebc3('0x26')](0x4)+_0xebc3('0x3a')))['then'](function(_0x4e13df){_0x3ebc3a[_0xebc3('0x84')]=_0x4e13df;return _0x3ebc3a;});}return _0x3ebc3a;});};exports[_0xebc3('0x85')]=function(){return __dirname;};
\ No newline at end of file
+var _0x6799=['download\x20error','pipe','end','protocol','data','error\x20convert','info','finish\x20to\x20convert','start','resolve','tmp','generate','writeFileSync','base64','then','unlink','chmodSync','split','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','MP3','text:synthesize','POST','.mp3','audioContent','writeFile','777','.wav','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','stringify','jQ1olc','null','generic','slice','length','text\x20length\x20limit\x20reached','parse\x20response\x20failed:\x0a','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','status','code','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','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','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','finish\x20download\x20file'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6799,0x6e));var _0x9679=function(_0x9b3c59,_0x3a014e){_0x9b3c59=_0x9b3c59-0x0;var _0x2b41d6=_0x6799[_0x9b3c59];return _0x2b41d6;};'use strict';var apiai=require(_0x9679('0x0'));var BPromise=require(_0x9679('0x1'));var dialogflow=require(_0x9679('0x2'));var fs=require('fs');var http=require(_0x9679('0x3'));var https=require('https');var md5=require(_0x9679('0x4'));var path=require(_0x9679('0x5'));var querystring=require(_0x9679('0x6'));var rp=require(_0x9679('0x7'));var rs=require(_0x9679('0x8'));var sox=require(_0x9679('0x9'));var tts=require(_0x9679('0xa'));var urlParse=require(_0x9679('0xb'))[_0x9679('0xc')];var util=require(_0x9679('0xd'));var aws=require(_0x9679('0xe'));var google=require(_0x9679('0xf'));var sestek=require(_0x9679('0x10'));var tilde=require(_0x9679('0x11'));var logger=require(_0x9679('0x12'))(_0x9679('0x13'));var ISPEECH_API=_0x9679('0x14');function downloadFile(_0x1d7002,_0x384ba8){return new BPromise(function(_0x3f0868,_0xde048f){var _0x2a6479=urlParse(_0x1d7002);var _0x3a3400=_0x2a6479['protocol']===_0x9679('0x15')?https:http;var _0x930d1f={'host':_0x2a6479[_0x9679('0x16')],'path':_0x2a6479[_0x9679('0x5')],'headers':{'user-agent':_0x9679('0x17')}};_0x3a3400[_0x9679('0x18')](_0x930d1f,function(_0xe950f4){if(_0xe950f4[_0x9679('0x19')]!==0xc8){logger[_0x9679('0x1a')](_0x9679('0x1b')+_0x1d7002+_0x9679('0x1c')+_0xe950f4['statusCode']+'\x20('+_0xe950f4[_0x9679('0x1d')]+')');_0xde048f(new Error(_0x9679('0x1b')+_0x1d7002+_0x9679('0x1c')+_0xe950f4['statusCode']+'\x20('+_0xe950f4['statusMessage']+')'));return;}var _0x2ac02e=fs[_0x9679('0x1e')](_0x384ba8);_0x2ac02e['on'](_0x9679('0x1f'),function(){logger['info'](_0x9679('0x20'));_0x2ac02e['close'](_0x3f0868);});_0x2ac02e['on'](_0x9679('0x1a'),function(_0x3efc36){fs['unlink'](_0x384ba8);logger['error'](_0x9679('0x21'),_0x3efc36);_0xde048f(_0x3efc36);});_0xe950f4[_0x9679('0x22')](_0x2ac02e);})['on'](_0x9679('0x1a'),function(_0x476ac3){logger[_0x9679('0x1a')](_0x476ac3);_0xde048f(_0x476ac3);})[_0x9679('0x23')]();});}function uploadFile(_0x5a40d3){return new BPromise(function(_0x4c8a01,_0x232fbb){var _0x45cd1a=urlParse(_0x5a40d3);var _0xbcd33=_0x45cd1a[_0x9679('0x24')]==='https:'?https:http;var _0x430c0e={'host':_0x45cd1a[_0x9679('0x16')],'path':_0x45cd1a[_0x9679('0x5')],'headers':{'user-agent':_0x9679('0x17')}};_0xbcd33['get'](_0x430c0e,function(_0x191592){if(_0x191592[_0x9679('0x19')]!==0xc8){_0x232fbb(new Error(_0x9679('0x1b')+_0x5a40d3+_0x9679('0x1c')+_0x191592['statusCode']+'\x20('+_0x191592[_0x9679('0x1d')]+')'));return;}var _0x215ae9='';_0x191592['on'](_0x9679('0x25'),function(_0x5afb0b){_0x215ae9+=_0x5afb0b;});_0x191592['on']('end',function(){_0x4c8a01(_0x215ae9);});})['on'](_0x9679('0x1a'),function(_0x310e48){_0x232fbb(_0x310e48);})[_0x9679('0x23')]();});}function convertFile(_0x5826fc,_0x16d501){return new BPromise(function(_0x49d695,_0x203743){var _0x569018=sox['transcode'](_0x5826fc,_0x16d501,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x569018['on']('error',function(_0x5423c7){logger[_0x9679('0x1a')](_0x9679('0x26'),_0x5423c7);_0x203743(_0x5423c7);});_0x569018['on'](_0x9679('0x23'),function(){logger[_0x9679('0x27')](_0x9679('0x28'));_0x49d695();});_0x569018[_0x9679('0x29')]();});}function base64Decode(_0x26982e,_0x302ca6){var _0x4679e5=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+'.wav');fs[_0x9679('0x2d')](_0x4679e5,_0x26982e,_0x9679('0x2e'));return convertFile(_0x4679e5,_0x302ca6)[_0x9679('0x2f')](function(){try{fs[_0x9679('0x30')](_0x4679e5);fs[_0x9679('0x31')](_0x302ca6,'777');}catch(_0x350058){logger['error'](_0x350058);}return _0x302ca6[_0x9679('0x32')]('.')[0x0];});}function base64Encode(_0x4aa1ec){var _0x1bf8bb=fs['readFileSync'](_0x4aa1ec);return new Buffer(_0x1bf8bb)['toString']('base64');}exports[_0x9679('0x33')]=function(_0x5f0e19,_0x53c5a5,_0x44a3c8,_0x37e743,_0x4ea828,_0x4d36c2){var _0x1ec0b0,_0xb1a34c;var _0x348416=_0x9679('0x34');var _0xdd061b=_0x9679('0x35')+_0x5f0e19;var _0x4d04d9={};if(_0x53c5a5===_0x9679('0x36')){_0x4d04d9[_0x9679('0x37')]={'ssml':_0x44a3c8};}else{_0x4d04d9[_0x9679('0x37')]={'text':_0x44a3c8};};_0x4d04d9[_0x9679('0x38')]={'languageCode':_0x37e743,'ssmlGender':_0x4ea828};_0x4d04d9['audioConfig']={'audioEncoding':_0x9679('0x39'),'sampleRateHertz':0x1f40};var _0x2badfc={'url':_0x348416+_0x9679('0x3a')+_0xdd061b,'method':_0x9679('0x3b'),'json':!![],'body':_0x4d04d9};return rp(_0x2badfc)['then'](function(_0x50fa2f){return new BPromise(function(_0x481097,_0x4aa310){_0x1ec0b0=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x3c'));var _0x35187d=Buffer['from'](_0x50fa2f[_0x9679('0x3d')],'base64');return fs[_0x9679('0x3e')](_0x1ec0b0,_0x35187d,function(_0x55ad26){_0x4aa310(_0x55ad26);},function(_0xdb285c){fs[_0x9679('0x31')](_0x1ec0b0,_0x9679('0x3f'));_0x481097(_0xdb285c);});});})[_0x9679('0x2f')](function(_0x166df2){_0xb1a34c=path[_0x9679('0x2a')](__dirname,'tmp',rs['generate'](0x4)+_0x9679('0x40'));return convertFile(_0x1ec0b0,_0xb1a34c);})['then'](function(){try{fs[_0x9679('0x30')](_0x1ec0b0);fs[_0x9679('0x31')](_0xb1a34c,_0x9679('0x3f'));}catch(_0x40958b){logger[_0x9679('0x1a')](_0x40958b);}logger[_0x9679('0x27')](_0x9679('0x41'),_0xb1a34c[_0x9679('0x32')]('.')[0x0]);return _0xb1a34c[_0x9679('0x32')]('.')[0x0];});};exports[_0x9679('0x42')]=function(_0x3c1ab8,_0x1d5c69){var _0x5a9a77=_0x9679('0x43');var _0x58c0d0,_0xdf9f9b;var _0x307d46;var _0x48fd94={'encoding':_0x9679('0x44'),'method':_0x9679('0x3b'),'timeout':0x2710,'url':_0x5a9a77,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x9679('0x45')+encodeURIComponent(JSON[_0x9679('0x46')]([[[_0x9679('0x47'),JSON['stringify']([_0x3c1ab8,_0x1d5c69||'en',![],_0x9679('0x48')]),null,_0x9679('0x49')]]]))};return rp(_0x48fd94)[_0x9679('0x2f')](function(_0x12e6f1){try{_0x307d46=eval(_0x12e6f1[_0x9679('0x4a')](0x5))[0x0][0x2];}catch(_0x49bb01){throw new Error('parse\x20response\x20failed:\x0a'+_0x12e6f1['data']);}if(!_0x307d46){if(_0x3c1ab8[_0x9679('0x4b')]>0xc8){throw new Error(_0x9679('0x4c'));}else{throw new Error('lang\x20\x22'+_0x1d5c69+'\x22\x20might\x20not\x20exist');}}try{_0x307d46=eval(_0x307d46)[0x0];}catch(_0x869f79){throw new Error(_0x9679('0x4d')+res[_0x9679('0x25')]);}const _0xdbc169=_0x307d46;_0x58c0d0=path['resolve'](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x3c'));fs['writeFileSync'](_0x58c0d0,_0x307d46,{'encoding':_0x9679('0x2e')});_0xdf9f9b=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs['generate'](0x4)+_0x9679('0x40'));return convertFile(_0x58c0d0,_0xdf9f9b);})['then'](function(){try{fs['unlink'](_0x58c0d0);fs[_0x9679('0x31')](_0xdf9f9b,_0x9679('0x3f'));}catch(_0x296044){logger['error'](_0x296044);}logger['info'](_0x9679('0x4e'),_0xdf9f9b[_0x9679('0x32')]('.')[0x0]);return _0xdf9f9b['split']('.')[0x0];});};exports[_0x9679('0x4f')]=function(_0x210bee,_0x590d05,_0x1c72a9){return google[_0x9679('0x50')](_0x210bee,_0x590d05,_0x1c72a9)[_0x9679('0x2f')](function(_0x8e649e){logger[_0x9679('0x27')](_0x8e649e[_0x9679('0x51')]);return rp(_0x8e649e);})[_0x9679('0x2f')](function(_0x9f823f){var _0x471821='';var _0x10bae0=0x0;try{fs[_0x9679('0x30')](_0x210bee);}catch(_0x87cef0){logger[_0x9679('0x1a')](_0x87cef0);}if(_0x9f823f&&_0x9f823f[_0x9679('0x52')]){_0x471821=_0x9f823f[_0x9679('0x52')][_0x9679('0x53')](function(_0x12cb6a){return _0x12cb6a&&_0x12cb6a[_0x9679('0x54')][0x0]&&_0x12cb6a[_0x9679('0x54')][0x0][_0x9679('0x55')]?_0x12cb6a[_0x9679('0x54')][0x0][_0x9679('0x55')]:'';})[_0x9679('0x56')]('\x0a');_0x10bae0=_0x9f823f[_0x9679('0x52')][_0x9679('0x53')](function(_0x2a1dee){return _0x2a1dee&&_0x2a1dee[_0x9679('0x54')][0x0]&&_0x2a1dee[_0x9679('0x54')][0x0]['confidence']?_0x2a1dee[_0x9679('0x54')][0x0][_0x9679('0x57')]:0x0;})[_0x9679('0x56')]('\x0a');}logger[_0x9679('0x27')](_0x9679('0x58'),_0x471821);logger[_0x9679('0x27')](_0x9679('0x59'),_0x10bae0);return{'transcript':_0x471821,'confidence':_0x10bae0};})[_0x9679('0x5a')](function(_0x4ff2d7){logger[_0x9679('0x1a')](_0x9679('0x5b'),_0x4ff2d7[_0x9679('0x19')],_0x4ff2d7[_0x9679('0x5c')],_0x4ff2d7[_0x9679('0x5d')]);});};exports[_0x9679('0x5e')]=function(_0x4b41d4,_0x17b473,_0x1a4e99,_0x30765f){var _0x560d5a=apiai(_0x17b473,{'language':_0x30765f||'en'});return _0x560d5a[_0x9679('0x5f')](_0x1a4e99,{'sessionId':md5(_0x4b41d4)})[_0x9679('0x2f')](function(_0x944d31){logger[_0x9679('0x27')](JSON[_0x9679('0x46')](_0x944d31));return{'source':_0x944d31[_0x9679('0x60')][_0x9679('0x61')],'resolvedQuery':_0x944d31['result'][_0x9679('0x62')],'action':_0x944d31[_0x9679('0x60')][_0x9679('0x63')],'actionIncomplete':_0x944d31[_0x9679('0x60')][_0x9679('0x64')],'speech':_0x944d31['result'][_0x9679('0x65')]['speech'],'score':_0x944d31[_0x9679('0x60')]['score'],'statusCode':_0x944d31[_0x9679('0x66')][_0x9679('0x67')],'endConversation':_0x944d31[_0x9679('0x60')]['metadata'][_0x9679('0x68')]||![],'isFallbackIntent':_0x944d31[_0x9679('0x60')]['metadata'][_0x9679('0x69')]};});};exports[_0x9679('0x6a')]=function(_0x511d01,_0x312d15,_0x4561e3,_0x3b98d0,_0xff677,_0x26560a){var _0x458302=_0x3b98d0[_0x9679('0x6b')](/\\n/g,'\x0a');var _0x5bc66a={'credentials':{'private_key':_0x458302,'client_email':_0x4561e3}};var _0xae1a7=new dialogflow[(_0x9679('0x6c'))](_0x5bc66a);var _0x242a5e=_0xae1a7[_0x9679('0x6d')](_0x312d15,md5(_0x511d01));var _0x50c321={'session':_0x242a5e,'queryInput':{'text':{'text':_0xff677,'languageCode':_0x26560a}}};return _0xae1a7[_0x9679('0x6e')](_0x50c321)[_0x9679('0x2f')](function(_0x54a128){if(_0x54a128&&_0x54a128['length']){logger['info'](_0x9679('0x6f'),JSON['stringify'](_0x54a128));var _0x311823=_0x54a128[0x0];if(_0x311823){var _0x1ec69f={'action':_0x311823[_0x9679('0x70')][_0x9679('0x63')],'allRequiredParamsPresent':_0x311823['queryResult'][_0x9679('0x71')],'endConversation':_0x311823[_0x9679('0x70')][_0x9679('0x72')]&&_0x311823[_0x9679('0x70')]['diagnosticInfo']['fields']?_0x311823['queryResult'][_0x9679('0x72')][_0x9679('0x73')]['end_conversation']['boolValue']:![],'fulfillmentText':_0x311823[_0x9679('0x70')][_0x9679('0x74')],'intentName':_0x311823['queryResult']['intent']['name'],'intentDisplayName':_0x311823['queryResult'][_0x9679('0x75')][_0x9679('0x76')],'isFallbackIntent':_0x311823['queryResult'][_0x9679('0x75')][_0x9679('0x77')],'languageCode':_0x311823['queryResult'][_0x9679('0x78')],'queryText':_0x311823[_0x9679('0x70')][_0x9679('0x79')],'responseId':_0x311823[_0x9679('0x7a')],'score':_0x311823[_0x9679('0x70')][_0x9679('0x7b')],'speech':_0x311823[_0x9679('0x70')]['fulfillmentText'],'providerResponse':JSON[_0x9679('0x46')](_0x54a128)};return _0x1ec69f;}}});};exports[_0x9679('0x7c')]=function(_0x54bd4d,_0x1c9e0f,_0x4f9989,_0x33f53d){return tilde['asr'](_0x54bd4d,_0x1c9e0f,_0x4f9989,_0x33f53d)[_0x9679('0x2f')](function(_0x50c22a){try{fs[_0x9679('0x30')](_0x54bd4d);}catch(_0x1d081e){logger['error'](_0x1d081e);}logger['info'](_0x9679('0x7d'),_0x50c22a[_0x9679('0x55')]);logger[_0x9679('0x27')](_0x9679('0x7e'),_0x50c22a[_0x9679('0x57')]);return _0x50c22a;});};exports[_0x9679('0x7f')]=function(_0x707389,_0x4bdcd2,_0x239fb8,_0x4af5da,_0x5c6df3,_0x22ba0f){var _0xb12e2=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x3c'));var _0x1ecdf2;return aws[_0x9679('0x80')](_0x707389,_0x4bdcd2,_0x239fb8,_0x4af5da,_0x5c6df3,_0x22ba0f,_0xb12e2)[_0x9679('0x2f')](function(){_0x1ecdf2=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x40'));return convertFile(_0xb12e2,_0x1ecdf2);})[_0x9679('0x2f')](function(){try{fs[_0x9679('0x30')](_0xb12e2);fs['chmodSync'](_0x1ecdf2,_0x9679('0x3f'));}catch(_0x388346){logger[_0x9679('0x1a')](_0x388346);}return _0x1ecdf2['split']('.')[0x0];});};exports['awsLex']=function(_0x225bfd,_0xebc313,_0x49ef82,_0x4f668a,_0x417b8f,_0x524e6c){return aws['lex'](_0x225bfd,_0xebc313,_0x49ef82,_0x4f668a,_0x417b8f,_0x524e6c)[_0x9679('0x2f')](function(_0x341676){logger[_0x9679('0x27')](JSON[_0x9679('0x46')](_0x341676));return _0x341676;});};exports['ispeechTTS']=function(_0x2f34aa,_0x58e4c7,_0x5dd3a2,_0x4bdd81){var _0x1c1f1c=util[_0x9679('0x81')](_0x9679('0x82'),ISPEECH_API,_0x2f34aa,encodeURIComponent(_0x58e4c7),_0x5dd3a2,_0x4bdd81);var _0x1b0366=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x3c'));var _0x4b5c8c;return downloadFile(_0x1c1f1c,_0x1b0366)[_0x9679('0x2f')](function(){_0x4b5c8c=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x40'));return convertFile(_0x1b0366,_0x4b5c8c);})[_0x9679('0x2f')](function(){try{fs[_0x9679('0x30')](_0x1b0366);fs['chmodSync'](_0x4b5c8c,_0x9679('0x3f'));}catch(_0x37dd94){logger['error'](_0x37dd94);}return _0x4b5c8c[_0x9679('0x32')]('.')[0x0];});};exports[_0x9679('0x83')]=function(_0x58b847,_0x288b78,_0x4452ea,_0x1781dd){var _0x1cba1b=util['format'](_0x9679('0x84'),ISPEECH_API,_0x288b78,_0x4452ea,base64Encode(_0x58b847),_0x1781dd?util['format']('model=%s',encodeURIComponent(_0x1781dd)):_0x9679('0x85'));return uploadFile(_0x1cba1b)['then'](function(_0x2d629e){return querystring[_0x9679('0xc')](_0x2d629e);});};exports['sestekNDA']=function(_0x257fa6,_0x5cf83f){return sestek[_0x9679('0x86')](_0x257fa6,_0x5cf83f)[_0x9679('0x2f')](function(_0x2e3688){logger['info'](JSON['stringify'](_0x2e3688));var _0x59efa8={'speech':_0x2e3688[_0x9679('0x87')],'action':_0x2e3688[_0x9679('0x88')]?_0x2e3688['channelData'][_0x9679('0x89')]:undefined,'actiondata':_0x2e3688[_0x9679('0x88')]?_0x2e3688['channelData'][_0x9679('0x8a')]:undefined};if(_0x2e3688[_0x9679('0x88')]&&_0x2e3688[_0x9679('0x88')][_0x9679('0x8b')]){return base64Decode(_0x2e3688['channelData'][_0x9679('0x8b')][_0x9679('0x8c')],path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x40')))[_0x9679('0x2f')](function(_0x5ec133){_0x59efa8[_0x9679('0x8d')]=_0x5ec133;return _0x59efa8;});}return _0x59efa8;});};exports[_0x9679('0x8e')]=function(){return __dirname;};
\ No newline at end of file
index aafd8bd..b5fa9d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56fc=['./nda','exports'];(function(_0x56f3d4,_0xfc65dd){var _0x2c7ef0=function(_0x587024){while(--_0x587024){_0x56f3d4['push'](_0x56f3d4['shift']());}};_0x2c7ef0(++_0xfc65dd);}(_0x56fc,0x1be));var _0xc56f=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x56fc[_0x42245d];return _0x4b211a;};var nda=require(_0xc56f('0x0'));module[_0xc56f('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x8861=['exports'];(function(_0x2ed2d1,_0xf1f32b){var _0x5ac086=function(_0x426c2f){while(--_0x426c2f){_0x2ed2d1['push'](_0x2ed2d1['shift']());}};_0x5ac086(++_0xf1f32b);}(_0x8861,0xd8));var _0x1886=function(_0x1621dd,_0x172229){_0x1621dd=_0x1621dd-0x0;var _0x3b0046=_0x8861[_0x1621dd];return _0x3b0046;};var nda=require('./nda');module[_0x1886('0x0')]={'nda':nda};
\ No newline at end of file
index 143e236..cfde7e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdeb=['project','ndagenerate_audio','channelData','AudioOutputSettings','audio/wav','custom_action_data','info','url','agi','POST','/token','password','username','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','dnid','extension','access_token','body','ProjectName'];(function(_0x5539af,_0x34c417){var _0x4f3952=function(_0xc8d93b){while(--_0xc8d93b){_0x5539af['push'](_0x5539af['shift']());}};_0x4f3952(++_0x34c417);}(_0xbdeb,0x6f));var _0xbbde=function(_0x4c39f8,_0x46242e){_0x4c39f8=_0x4c39f8-0x0;var _0x5a9aad=_0xbdeb[_0x4c39f8];return _0x5a9aad;};'use strict';var rp=require('request-promise');var url=require(_0xbbde('0x0'));var logger=require('../../../../../config/logger')(_0xbbde('0x1'));module['exports']=function(_0x1279b0,_0x365857){var _0x20d4f0={'method':_0xbbde('0x2'),'uri':url['resolve'](_0x365857['ndauth_url'],_0xbbde('0x3')),'form':{'grant_type':_0xbbde('0x4'),'username':_0x365857[_0xbbde('0x5')],'password':_0x365857[_0xbbde('0x4')]},'json':!![]};return rp(_0x20d4f0)['then'](function(_0x49966c){var _0x3215c9={'method':_0xbbde('0x2'),'uri':url['resolve'](_0x365857[_0xbbde('0x6')],_0xbbde('0x7')),'body':{'type':_0x365857[_0xbbde('0x8')]||_0xbbde('0x9'),'channelId':_0xbbde('0xa'),'conversation':{'id':_0x1279b0[_0xbbde('0xb')]},'from':{'id':_0x1279b0[_0xbbde('0xc')],'name':_0x1279b0[_0xbbde('0xd')]},'recipient':{'id':_0x1279b0[_0xbbde('0xe')],'name':_0x1279b0[_0xbbde('0xf')]},'text':_0x365857['text'],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x49966c[_0xbbde('0x10')]},'json':!![]};if(_0x365857['project']){_0x3215c9[_0xbbde('0x11')]['channelData'][_0xbbde('0x12')]=_0x365857[_0xbbde('0x13')];}if(_0x365857[_0xbbde('0x14')]=='1'){_0x3215c9[_0xbbde('0x11')][_0xbbde('0x15')][_0xbbde('0x16')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xbbde('0x17')};}if(_0x365857['custom_action']){_0x3215c9[_0xbbde('0x11')][_0xbbde('0x15')]['CustomAction']=_0x365857['custom_action'];if(_0x365857[_0xbbde('0x18')]){_0x3215c9['body'][_0xbbde('0x15')]['CustomActionData']=_0x365857[_0xbbde('0x18')];}}logger[_0xbbde('0x19')](JSON['stringify'](_0x3215c9));return rp(_0x3215c9);});};
\ No newline at end of file
+var _0xd139=['calleridname','dnid','extension','access_token','project','body','channelData','ProjectName','AudioOutputSettings','audio/wav','custom_action','custom_action_data','CustomActionData','info','stringify','request-promise','url','exports','POST','resolve','ndauth_url','password','username','then','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid'];(function(_0x388cd7,_0x5cd067){var _0x8cd2f0=function(_0x595452){while(--_0x595452){_0x388cd7['push'](_0x388cd7['shift']());}};_0x8cd2f0(++_0x5cd067);}(_0xd139,0x14e));var _0x9d13=function(_0x369bf2,_0x427fb7){_0x369bf2=_0x369bf2-0x0;var _0x27bb2f=_0xd139[_0x369bf2];return _0x27bb2f;};'use strict';var rp=require(_0x9d13('0x0'));var url=require(_0x9d13('0x1'));var logger=require('../../../../../config/logger')('agi');module[_0x9d13('0x2')]=function(_0x477215,_0x3d392a){var _0x1994e8={'method':_0x9d13('0x3'),'uri':url[_0x9d13('0x4')](_0x3d392a[_0x9d13('0x5')],'/token'),'form':{'grant_type':_0x9d13('0x6'),'username':_0x3d392a[_0x9d13('0x7')],'password':_0x3d392a['password']},'json':!![]};return rp(_0x1994e8)[_0x9d13('0x8')](function(_0x4b3db0){var _0x434ef6={'method':'POST','uri':url['resolve'](_0x3d392a['ndassistant_url'],_0x9d13('0x9')),'body':{'type':_0x3d392a[_0x9d13('0xa')]||_0x9d13('0xb'),'channelId':_0x9d13('0xc'),'conversation':{'id':_0x477215[_0x9d13('0xd')]},'from':{'id':_0x477215['callerid'],'name':_0x477215[_0x9d13('0xe')]},'recipient':{'id':_0x477215[_0x9d13('0xf')],'name':_0x477215[_0x9d13('0x10')]},'text':_0x3d392a['text'],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x4b3db0[_0x9d13('0x11')]},'json':!![]};if(_0x3d392a[_0x9d13('0x12')]){_0x434ef6[_0x9d13('0x13')][_0x9d13('0x14')][_0x9d13('0x15')]=_0x3d392a['project'];}if(_0x3d392a['ndagenerate_audio']=='1'){_0x434ef6[_0x9d13('0x13')][_0x9d13('0x14')][_0x9d13('0x16')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x9d13('0x17')};}if(_0x3d392a[_0x9d13('0x18')]){_0x434ef6[_0x9d13('0x13')][_0x9d13('0x14')]['CustomAction']=_0x3d392a[_0x9d13('0x18')];if(_0x3d392a[_0x9d13('0x19')]){_0x434ef6[_0x9d13('0x13')][_0x9d13('0x14')][_0x9d13('0x1a')]=_0x3d392a[_0x9d13('0x19')];}}logger[_0x9d13('0x1b')](JSON[_0x9d13('0x1c')](_0x434ef6));return rp(_0x434ef6);});};
\ No newline at end of file
index c53a863..687e5b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd446=['./lib/api','exports'];(function(_0x20738b,_0x1f3b41){var _0x5326ba=function(_0x532039){while(--_0x532039){_0x20738b['push'](_0x20738b['shift']());}};_0x5326ba(++_0x1f3b41);}(_0xd446,0x80));var _0x6d44=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd446[_0x3dd15e];return _0x231fd0;};'use strict';var asr=require(_0x6d44('0x0'));module[_0x6d44('0x1')]=function(_0x4e5939,_0x3390ee,_0x3356b5,_0x359998){return asr(_0x4e5939,_0x3390ee,_0x3356b5,_0x359998);};
\ No newline at end of file
+var _0x9cf8=['exports'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x9cf8,0x75));var _0x89cf=function(_0x1740a6,_0x397086){_0x1740a6=_0x1740a6-0x0;var _0x4d35ca=_0x9cf8[_0x1740a6];return _0x4d35ca;};'use strict';var asr=require('./lib/api');module[_0x89cf('0x0')]=function(_0x1eadac,_0x4443d0,_0xc91f82,_0xf3c023){return asr(_0x1eadac,_0x4443d0,_0xc91f82,_0xf3c023);};
\ No newline at end of file
index a47d1f8..9716dbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x547a=['bluebird','lodash','moment','crypto','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','update','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','data','close','EOS','Tilde\x20ASR\x20send\x20error','terminate','parse','status','final','Tilde\x20ASR\x20hypoteses','hypotheses','result','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','error','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x547a,0x171));var _0xa547=function(_0xa142ba,_0x18a88e){_0xa142ba=_0xa142ba-0x0;var _0x5c2c30=_0x547a[_0xa142ba];return _0x5c2c30;};'use strict';var BPromise=require(_0xa547('0x0'));var _=require(_0xa547('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xa547('0x2'));var crypto=require(_0xa547('0x3'));var logger=require('../../../../../../config/logger')('agi');module[_0xa547('0x4')]=function(_0x1c66c6,_0x402a00,_0x470ffb,_0x160a49){return new BPromise(function(_0x281e93,_0x430ab){logger[_0xa547('0x5')](_0xa547('0x6'),_0x160a49||_0xa547('0x7'));var _0x18c35c=new WebSocket(_0x160a49||_0xa547('0x7'),{'perMessageDeflate':![]});var _0xb007e1='';var _0x5de19a='0';var _0x1a7c6c='1';var _0x184ed4=_0xa547('0x8');function _0x1afc60(_0x263519){var _0x4e4bd2=crypto[_0xa547('0x9')]('sha1');_0x4e4bd2[_0xa547('0xa')](_0x263519);return _0x4e4bd2['digest'](_0xa547('0xb'));}function _0x45e0e7(){try{logger[_0xa547('0x5')](_0xa547('0xc'));var _0x40e1a4=moment()[_0xa547('0xd')]();var _0x51e605=_0x1afc60(_0x40e1a4+_0x402a00+_0x470ffb);_0x18c35c[_0xa547('0xe')](JSON[_0xa547('0xf')]({'appID':_0x402a00,'timestamp':_0x40e1a4,'appKey':_0x51e605}));var _0x61131c=fs['createReadStream'](_0x1c66c6);_0x61131c['on'](_0xa547('0x10'),function(_0x200b9d){_0x18c35c['send'](_0x200b9d);});_0x61131c['on'](_0xa547('0x11'),function(){_0x18c35c[_0xa547('0xe')](_0xa547('0x12'));});}catch(_0x122cea){logger['error'](_0xa547('0x13'),JSON[_0xa547('0xf')](_0x122cea));_0x18c35c[_0xa547('0x14')]();}}function _0x2eb930(_0x27583a){try{if(_0x27583a){var _0x490335=JSON[_0xa547('0x15')](_0x27583a);switch(_0x490335[_0xa547('0x16')]){case 0x0:if(_0x490335['result']){if(_0x490335['result'][_0xa547('0x17')]){logger[_0xa547('0x5')](_0xa547('0x18'),JSON[_0xa547('0xf')](_0x490335['result'][_0xa547('0x19')]));_0xb007e1=_0x490335[_0xa547('0x1a')][_0xa547('0x19')][0x0]['transcript'];_0x5de19a=_0x490335[_0xa547('0x1a')][_0xa547('0x19')][0x0][_0xa547('0x1b')];_0x1a7c6c='0';_0x184ed4=_0xa547('0x1c');_0x18c35c[_0xa547('0x14')]();}}break;case 0x1:logger['info']('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x1a7c6c='1';_0x184ed4=_0xa547('0x8');break;case 0x2:logger[_0xa547('0x5')](_0xa547('0x1d'));_0x1a7c6c='2';_0x184ed4=_0xa547('0x1d');break;case 0x9:logger[_0xa547('0x5')](_0xa547('0x1e'));_0x1a7c6c='9';_0x184ed4=_0xa547('0x1e');break;case 0xa:logger[_0xa547('0x5')](_0xa547('0x1f'));_0x1a7c6c='10';_0x184ed4='Authentication\x20failed.';break;case 0xb:logger[_0xa547('0x5')](_0xa547('0x20'));_0x1a7c6c='11';_0x184ed4='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x418719){logger['error'](_0xa547('0x21'),JSON['stringify'](_0x418719));_0x18c35c[_0xa547('0x14')]();}}function _0xf03b68(){logger['info'](_0xa547('0x22'));_0x281e93({'transcript':_0xb007e1,'confidence':_0x5de19a,'status':_0x1a7c6c,'status_message':_0x184ed4});}function _0x137764(_0x36fd4b){logger[_0xa547('0x23')](_0xa547('0x24'));if(!_[_0xa547('0x25')](_0x36fd4b)){logger['error'](_[_0xa547('0x26')](_0x36fd4b)?JSON[_0xa547('0xf')](_0x36fd4b):_0x36fd4b);}}_0x18c35c['on'](_0xa547('0x27'),_0x45e0e7);_0x18c35c['on'](_0xa547('0x28'),_0x2eb930);_0x18c35c['on'](_0xa547('0x11'),_0xf03b68);_0x18c35c['on'](_0xa547('0x23'),_0x137764);});};
\ No newline at end of file
+var _0xced0=['info','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','sha1','update','digest','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','send','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','message','close','bluebird','lodash','moment','crypto','agi'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xced0,0x8f));var _0x0ced=function(_0x50357d,_0x55b4eb){_0x50357d=_0x50357d-0x0;var _0x12b140=_0xced0[_0x50357d];return _0x12b140;};'use strict';var BPromise=require(_0x0ced('0x0'));var _=require(_0x0ced('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x0ced('0x2'));var crypto=require(_0x0ced('0x3'));var logger=require('../../../../../../config/logger')(_0x0ced('0x4'));module['exports']=function(_0x1df2fe,_0x2e8258,_0x1cee35,_0x55cee7){return new BPromise(function(_0x5dc029,_0x12322d){logger[_0x0ced('0x5')]('Tilde\x20URI',_0x55cee7||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x290a27=new WebSocket(_0x55cee7||_0x0ced('0x6'),{'perMessageDeflate':![]});var _0x31a985='';var _0x1b63c5='0';var _0x3deac2='1';var _0x3ee8aa=_0x0ced('0x7');function _0x46d302(_0x183d03){var _0x14f94b=crypto['createHash'](_0x0ced('0x8'));_0x14f94b[_0x0ced('0x9')](_0x183d03);return _0x14f94b[_0x0ced('0xa')]('hex');}function _0x230bc0(){try{logger[_0x0ced('0x5')](_0x0ced('0xb'));var _0xb94d7a=moment()[_0x0ced('0xc')]();var _0x595037=_0x46d302(_0xb94d7a+_0x2e8258+_0x1cee35);_0x290a27['send'](JSON[_0x0ced('0xd')]({'appID':_0x2e8258,'timestamp':_0xb94d7a,'appKey':_0x595037}));var _0x1c229f=fs[_0x0ced('0xe')](_0x1df2fe);_0x1c229f['on']('data',function(_0x466f7f){_0x290a27['send'](_0x466f7f);});_0x1c229f['on']('close',function(){_0x290a27[_0x0ced('0xf')]('EOS');});}catch(_0x51dfc9){logger[_0x0ced('0x10')](_0x0ced('0x11'),JSON[_0x0ced('0xd')](_0x51dfc9));_0x290a27[_0x0ced('0x12')]();}}function _0x410f9b(_0x4938e5){try{if(_0x4938e5){var _0xe8856f=JSON['parse'](_0x4938e5);switch(_0xe8856f[_0x0ced('0x13')]){case 0x0:if(_0xe8856f[_0x0ced('0x14')]){if(_0xe8856f[_0x0ced('0x14')][_0x0ced('0x15')]){logger[_0x0ced('0x5')](_0x0ced('0x16'),JSON[_0x0ced('0xd')](_0xe8856f['result'][_0x0ced('0x17')]));_0x31a985=_0xe8856f[_0x0ced('0x14')][_0x0ced('0x17')][0x0][_0x0ced('0x18')];_0x1b63c5=_0xe8856f[_0x0ced('0x14')][_0x0ced('0x17')][0x0]['likelihood'];_0x3deac2='0';_0x3ee8aa=_0x0ced('0x19');_0x290a27[_0x0ced('0x12')]();}}break;case 0x1:logger['info'](_0x0ced('0x7'));_0x3deac2='1';_0x3ee8aa=_0x0ced('0x7');break;case 0x2:logger[_0x0ced('0x5')](_0x0ced('0x1a'));_0x3deac2='2';_0x3ee8aa='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x0ced('0x5')](_0x0ced('0x1b'));_0x3deac2='9';_0x3ee8aa=_0x0ced('0x1b');break;case 0xa:logger[_0x0ced('0x5')]('Authentication\x20failed.');_0x3deac2='10';_0x3ee8aa=_0x0ced('0x1c');break;case 0xb:logger[_0x0ced('0x5')](_0x0ced('0x1d'));_0x3deac2='11';_0x3ee8aa=_0x0ced('0x1d');}}}catch(_0x1f203b){logger[_0x0ced('0x10')](_0x0ced('0x1e'),JSON[_0x0ced('0xd')](_0x1f203b));_0x290a27[_0x0ced('0x12')]();}}function _0x1fa202(){logger[_0x0ced('0x5')](_0x0ced('0x1f'));_0x5dc029({'transcript':_0x31a985,'confidence':_0x1b63c5,'status':_0x3deac2,'status_message':_0x3ee8aa});}function _0x132ba4(_0x1bdb2a){logger['error'](_0x0ced('0x20'));if(!_[_0x0ced('0x21')](_0x1bdb2a)){logger[_0x0ced('0x10')](_[_0x0ced('0x22')](_0x1bdb2a)?JSON[_0x0ced('0xd')](_0x1bdb2a):_0x1bdb2a);}}_0x290a27['on']('open',_0x230bc0);_0x290a27['on'](_0x0ced('0x23'),_0x410f9b);_0x290a27['on'](_0x0ced('0x24'),_0x1fa202);_0x290a27['on'](_0x0ced('0x10'),_0x132ba4);});};
\ No newline at end of file
index 903d087..6be6544 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6299=['exports'];(function(_0x8460f5,_0x161340){var _0x3fd88f=function(_0x2b085e){while(--_0x2b085e){_0x8460f5['push'](_0x8460f5['shift']());}};_0x3fd88f(++_0x161340);}(_0x6299,0x1ef));var _0x9629=function(_0xf55b9d,_0x34c660){_0xf55b9d=_0xf55b9d-0x0;var _0x258e22=_0x6299[_0xf55b9d];return _0x258e22;};var asr=require('./asr');module[_0x9629('0x0')]={'asr':asr};
\ No newline at end of file
+var _0xd193=['exports'];(function(_0x4a7595,_0x31ebca){var _0x5ebbce=function(_0x18769b){while(--_0x18769b){_0x4a7595['push'](_0x4a7595['shift']());}};_0x5ebbce(++_0x31ebca);}(_0xd193,0x125));var _0x3d19=function(_0x4fb87e,_0x1740df){_0x4fb87e=_0x4fb87e-0x0;var _0x53ef38=_0xd193[_0x4fb87e];return _0x53ef38;};var asr=require('./asr');module[_0x3d19('0x0')]={'asr':asr};
\ No newline at end of file
index 1f49fd8..d2ba749 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','close','nextTick','exports','util','net','events','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x3825a8,_0x2ce1a2){var _0xabc9bc=function(_0x101073){while(--_0x101073){_0x3825a8['push'](_0x3825a8['shift']());}};_0xabc9bc(++_0x2ce1a2);}(_0xe706,0xa3));var _0x6e70=function(_0x631aa1,_0x2f7d83){_0x631aa1=_0x631aa1-0x0;var _0x319a1b=_0xe706[_0x631aa1];return _0x319a1b;};'use strict';var util=require(_0x6e70('0x0'));var net=require(_0x6e70('0x1'));var EventEmitter=require(_0x6e70('0x2'))['EventEmitter'];var AGIError=require(_0x6e70('0x3'));var AGIChannel=require(_0x6e70('0x4'));var AGIServer=function(_0x2ca810,_0x7dfbc3,_0x142c27){var _0x2164a4=this;var _0x376a8d=null;var _0x506db9=0x0;if(!_0x2ca810)_0x2ca810=0x11dd;if(!_0x7dfbc3)_0x7dfbc3=_0x6e70('0x5');EventEmitter[_0x6e70('0x6')](_0x2164a4);function _0x36357b(){if(!_0x2ca810){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x9')));return![];}_0x376a8d=net[_0x6e70('0xa')]();_0x376a8d[_0x6e70('0xb')](_0x2ca810,_0x7dfbc3);_0x376a8d['on'](_0x6e70('0xc'),function(){_0x2164a4[_0x6e70('0x7')](_0x6e70('0xc'));});_0x376a8d['on'](_0x6e70('0xd'),function(_0x743eb5){_0x376a8d[_0x6e70('0xe')](function(_0x37b3e0,_0x4600f9){if(_0x37b3e0){_0x2164a4['emit']('error',new AGIError(_0x6e70('0xf'),_0x37b3e0));}else if(_0x142c27&&_0x142c27<0x0){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x10')));_0x743eb5[_0x6e70('0x11')]();}else if(_0x142c27&&_0x142c27>0x0&&_0x142c27<_0x4600f9){_0x506db9+=0x1;_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x12'),_0x506db9));_0x743eb5['destroy']();}else{var _0x52737e=new AGIChannel(_0x743eb5);_0x52737e['on']('ready',function(){_0x2164a4[_0x6e70('0x7')]('connection',_0x52737e);});}});});_0x376a8d['on']('error',function(_0x304716){_0x2164a4[_0x6e70('0x7')]('error',new AGIError(_0x6e70('0xf'),_0x304716['code']));});_0x376a8d['on'](_0x6e70('0x13'),function(){_0x2164a4[_0x6e70('0x7')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x6e70('0x14')](function(){_0x36357b();});};util['inherits'](AGIServer,EventEmitter);module[_0x6e70('0x15')]=function(_0x173afe,_0x53acdc,_0x497d61){return new AGIServer(_0x173afe,_0x53acdc,_0x497d61);};
\ No newline at end of file
+var _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(_0x3c8e9a,_0x384306){var _0x2d4c57=function(_0x43d408){while(--_0x43d408){_0x3c8e9a['push'](_0x3c8e9a['shift']());}};_0x2d4c57(++_0x384306);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'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
index 2bb6a8a..a14715a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7e6=['success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','FIND\x20AGENT\x20%s\x20BY\x20%s','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','no\x20file\x20audio\x20found','response','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','inspect','%s_STATUS_CODE','200','variable\x20%s\x20set','saydigits','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','subject','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','sendSMS','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','XMCS-UNIQUEID','Answer','Skipped\x20Answer','subproject','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','shellCommand','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','replaceAll','join','util','lodash','shelljs','odbc','randomstring','moment','request-promise','../../config/logger','agi','../../config/environment','./scripts','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','getVariableById','then','name','catch','getVoiceQueue','getSquareProject','getSquareOdbcById','dsn','getUser','getUserById','prototype','getTrunkById','getSound','getSoundPath','save_name','getMailAccount','sendMailMessage','mailRpc','IntervalId','interval','map','Intervals','getQueryOdbc','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','agicommand','arg_1','callerid','createSquareRecording','uniqueid','calleridname','context','priority','accountcode','dnid','file','createCmContact','isEmpty','isNil','lastName','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','format','%s/%s@from-sip/n','LOCAL','agentLogin','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','googleTTS','google_tts_language','restAPI','url','method','timeout','number','includes','POST','PUT','toUpperCase','body','parse','computedVariables','sync','uri','headers','render','stringify','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','sestekNDA','ispeechTTS','ispeech_tts_language','ispeechASR','ispeech_asr_language','isConfigured','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','google_asr_language','appid','appsecret','clear','clone','isString','replaceObjectAllVariables','hasOwnProperty','isPlainObject','recursiveNodeIndex','isArray','length','replaceAllVariables','saveRestApiResult','%s.%s','setVariable','split','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','no\x20text\x20configured','result','noop','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','callback','no\x20list\x20selected','delay','add','minutes','custom_app','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','MRCPSynth','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_TRANSCRIPT','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_TRANSCRIPT','database','getSquareOdbc','odbc_id','no\x20odbc\x20database\x20found','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','dial','debug','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','Executed\x20command\x20%s','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','createSquareMessage','speech','out','dialogflow','Dialogflow\x20is\x20unreachable','dialogflowV2','no\x20project_id\x20configured','client_email','no\x20client_email\x20configured','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','password','no\x20password\x20configured','ndassistant_url','SESTEK_NDA_%s','sesteknda','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','trunk_id','no\x20trunk\x20selected','getTrunk','no\x20trunk\x20found','trunk_name','SIP/%s/%s','opts','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','getData','maxdigit','test','mindigit','getVariable','no\x20variable\x20found','hiddendigitsnum','substr','generate','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','GOAL\x20%s','goalname','awspolly','Trying\x20aws\x20Polly\x20%s','streamFile','awslex','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20is\x20unreachable','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','googleASR','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','wav','tilde\x20%s\x20file\x20created','tildeASR','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','interval_id','no\x20interval\x20configured','getIntervals','no\x20intervals\x20found','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa7e6,0x74));var _0x6a7e=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xa7e6[_0x2c91e9];return _0x13f0ff;};'use strict';var fs=require('fs');var util=require(_0x6a7e('0x0'));var _=require(_0x6a7e('0x1'));var sh=require(_0x6a7e('0x2'));var odbc=require(_0x6a7e('0x3'))();var rs=require(_0x6a7e('0x4'));var moment=require(_0x6a7e('0x5'));var Mustache=require('mustache');var rp=require(_0x6a7e('0x6'));var logger=require(_0x6a7e('0x7'))(_0x6a7e('0x8'));var config=require(_0x6a7e('0x9'));var scripts=require(_0x6a7e('0xa'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0x6a7e('0xb'),_0x6a7e('0xc')];var verticesWithRetry=[_0x6a7e('0xd'),_0x6a7e('0xe'),_0x6a7e('0xf')];var AGIVertices=function(_0x3f3f2f,_0x23b5d6,_0x403962){this[_0x6a7e('0x10')]=_0x3f3f2f;this['rpc']=_0x23b5d6;this['mailRpc']=_0x403962;};AGIVertices['prototype']['getVariable']=function(_0x40d60f,_0x19ea13){this[_0x6a7e('0x11')][_0x6a7e('0x12')](_0x40d60f)[_0x6a7e('0x13')](function(_0x546ac8){_0x19ea13(null,_0x546ac8?_0x546ac8[_0x6a7e('0x14')]:![]);})[_0x6a7e('0x15')](function(_0x5c0c74){_0x19ea13(_0x5c0c74);});};AGIVertices['prototype'][_0x6a7e('0x16')]=function(_0x122b35,_0x1ac6da){this[_0x6a7e('0x11')]['getVoiceQueueById'](_0x122b35)[_0x6a7e('0x13')](function(_0x21369e){_0x1ac6da(null,_0x21369e?_0x21369e[_0x6a7e('0x14')]:![]);})[_0x6a7e('0x15')](function(_0x465566){_0x1ac6da(_0x465566);});};AGIVertices['prototype'][_0x6a7e('0x17')]=function(_0x49ee02,_0x5c757f){this[_0x6a7e('0x11')]['getSquareProjectById'](_0x49ee02)[_0x6a7e('0x13')](function(_0x195761){_0x5c757f(null,_0x195761?_0x195761[_0x6a7e('0x14')]:![]);})[_0x6a7e('0x15')](function(_0x20e90a){_0x5c757f(_0x20e90a);});};AGIVertices['prototype']['getSquareOdbc']=function(_0x5254ff,_0x102e83){this[_0x6a7e('0x11')][_0x6a7e('0x18')](_0x5254ff)[_0x6a7e('0x13')](function(_0x300957){_0x102e83(null,_0x300957?_0x300957[_0x6a7e('0x19')]:![]);})[_0x6a7e('0x15')](function(_0x3f8279){_0x102e83(_0x3f8279);});};AGIVertices['prototype'][_0x6a7e('0x1a')]=function(_0x35c94d,_0x4f53c5){this[_0x6a7e('0x11')][_0x6a7e('0x1b')](_0x35c94d)[_0x6a7e('0x13')](function(_0x5e2fa3){_0x4f53c5(null,_0x5e2fa3?_0x5e2fa3[_0x6a7e('0x14')]:![]);})[_0x6a7e('0x15')](function(_0x4ee914){_0x4f53c5(_0x4ee914);});};AGIVertices[_0x6a7e('0x1c')]['getTrunk']=function(_0x1c4b77,_0x277949){this['rpc'][_0x6a7e('0x1d')](_0x1c4b77)[_0x6a7e('0x13')](function(_0x46a15f){_0x277949(null,_0x46a15f?_0x46a15f[_0x6a7e('0x14')]:![]);})[_0x6a7e('0x15')](function(_0x380f2f){_0x277949(_0x380f2f);});};AGIVertices['prototype'][_0x6a7e('0x1e')]=function(_0x1089b3,_0x43b214){var _0x31b3ca=this;this[_0x6a7e('0x11')]['getSoundById'](_0x1089b3)['then'](function(_0x8b0439){_0x43b214(null,_0x8b0439?_0x31b3ca[_0x6a7e('0x1f')](_0x8b0439[_0x6a7e('0x20')]):![]);})['catch'](function(_0xa324d0){_0x43b214(_0xa324d0);});};AGIVertices['prototype'][_0x6a7e('0x21')]=function(_0x48f5ac,_0x55e347){this[_0x6a7e('0x11')]['getMailAccountById'](_0x48f5ac)[_0x6a7e('0x13')](function(_0x4a18c7){_0x55e347(null,_0x4a18c7?_0x4a18c7:![]);})['catch'](function(_0x25783c){_0x55e347(_0x25783c);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x22')]=function(_0x106af8,_0x2b1788,_0x2f5deb){this[_0x6a7e('0x23')][_0x6a7e('0x22')](_0x106af8,_0x2b1788)[_0x6a7e('0x13')](function(){_0x2f5deb(null);})[_0x6a7e('0x15')](function(_0x16c05c){_0x2f5deb(_0x16c05c);});};AGIVertices[_0x6a7e('0x1c')]['getIntervals']=function(_0x1d5bc1,_0x3f4764){this[_0x6a7e('0x11')]['getIntervalById'](_0x1d5bc1)[_0x6a7e('0x13')](function(_0x3b7678){if(_0x3b7678){if(_0x3b7678[_0x6a7e('0x24')]){_0x3f4764(null,[_0x3b7678[_0x6a7e('0x25')]]);}else{_0x3f4764(null,_[_0x6a7e('0x26')](_0x3b7678[_0x6a7e('0x27')],'interval'));}}else{_0x3f4764(null,![]);}})['catch'](function(_0x292f43){_0x3f4764(_0x292f43);});};AGIVertices['prototype'][_0x6a7e('0x1f')]=function(_0x3d29fb){return util['format']('%s/sounds/converted/%s',FILES_PATH,_0x3d29fb);};AGIVertices['prototype'][_0x6a7e('0x28')]=function(_0x58066a,_0x575a79,_0x512430){odbc['open'](_0x58066a,function(_0x46c48c){if(_0x46c48c){logger['error'](_0x6a7e('0x29'),_0x46c48c);_0x512430(_0x46c48c);}else{logger[_0x6a7e('0x2a')](_0x6a7e('0x2b'));odbc[_0x6a7e('0x2c')](_0x575a79,function(_0x243126,_0x50bcf7){if(_0x243126){logger[_0x6a7e('0x2a')](_0x6a7e('0x2d'),_0x575a79);_0x512430(_0x243126);}else{logger['info'](_0x6a7e('0x2e'),_0x575a79);odbc[_0x6a7e('0x2f')](function(_0x4a2523){if(_0x4a2523){logger[_0x6a7e('0x30')](_0x6a7e('0x31'),_0x4a2523);}_0x512430(null,_0x50bcf7);});}});}});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x32')]=function(_0x2827f7,_0x28a62e){this[_0x6a7e('0x11')][_0x6a7e('0x33')](_0x2827f7)[_0x6a7e('0x13')](function(_0x27434a){_0x28a62e(null,_0x27434a?_0x27434a:![]);})[_0x6a7e('0x15')](function(_0x5c0d31){_0x28a62e(_0x5c0d31);});};AGIVertices['prototype'][_0x6a7e('0x34')]=function(_0x733cbe,_0x4f1119){this[_0x6a7e('0x11')][_0x6a7e('0x34')](_0x733cbe)[_0x6a7e('0x13')](function(_0x361c9e){_0x4f1119(null,_0x361c9e);})[_0x6a7e('0x15')](function(_0x475ac9){_0x4f1119(_0x475ac9);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x35')]=function(_0x2a3d31,_0x247efb,_0x114d53){this[_0x6a7e('0x11')][_0x6a7e('0x35')]({'uniqueid':this[_0x6a7e('0x10')]['uniqueid'],'node':_0x2a3d31['label'],'application':_0x2a3d31[_0x6a7e('0x36')],'data':_0x247efb||null,'project_name':this[_0x6a7e('0x10')][_0x6a7e('0x37')],'callerid':this[_0x6a7e('0x10')][_0x6a7e('0x38')]})[_0x6a7e('0x13')](function(_0x30b55c){if(_0x114d53){_0x114d53(null,_0x30b55c);}})[_0x6a7e('0x15')](function(_0x5cdd48){if(_0x114d53){_0x114d53(_0x5cdd48);}});};AGIVertices[_0x6a7e('0x1c')]['createSquareRecording']=function(_0x247a4b,_0x2f87ea,_0x2b15d9,_0x3f4f40){this['rpc'][_0x6a7e('0x39')]({'uniqueid':this[_0x6a7e('0x10')][_0x6a7e('0x3a')],'callerid':this['channel'][_0x6a7e('0x38')],'calleridname':this['channel'][_0x6a7e('0x3b')],'context':this[_0x6a7e('0x10')][_0x6a7e('0x3c')],'extension':this[_0x6a7e('0x10')]['extension'],'priority':this[_0x6a7e('0x10')][_0x6a7e('0x3d')],'accountcode':this[_0x6a7e('0x10')][_0x6a7e('0x3e')],'dnid':this['channel'][_0x6a7e('0x3f')],'projectName':this['channel'][_0x6a7e('0x37')],'saveName':_0x2f87ea,'filename':_0x247a4b[_0x6a7e('0x40')]||_0x2f87ea,'savePath':_0x2b15d9})[_0x6a7e('0x13')](function(_0x4a7465){_0x3f4f40(null,_0x4a7465);})[_0x6a7e('0x15')](function(_0x58f58b){_0x3f4f40(_0x58f58b);});};AGIVertices[_0x6a7e('0x1c')]['createSquareMessage']=function(_0xf124ce,_0x22e4f7,_0x2887d9,_0x1dd8c3,_0x2f2874){this[_0x6a7e('0x11')]['createSquareMessage']({'uniqueid':this[_0x6a7e('0x10')][_0x6a7e('0x3a')],'body':_0xf124ce,'direction':_0x22e4f7,'providerName':_0x2887d9,'providerResponse':_0x1dd8c3})[_0x6a7e('0x13')](function(_0x22965d){if(_0x2f2874){_0x2f2874(null,_0x22965d);}})['catch'](function(_0x4aecc8){if(_0x2f2874){_0x2f2874(_0x4aecc8);}});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x41')]=function(_0x231114,_0x251076){this[_0x6a7e('0x11')]['createCmContact']({'firstName':_[_0x6a7e('0x42')](_0x231114[_0x6a7e('0x14')])||_[_0x6a7e('0x43')](_0x231114[_0x6a7e('0x14')])?'callback_'+Math['random']():_0x231114[_0x6a7e('0x14')],'lastName':_[_0x6a7e('0x42')](_0x231114['lastName'])||_[_0x6a7e('0x43')](_0x231114[_0x6a7e('0x44')])?null:_0x231114[_0x6a7e('0x44')],'phone':_0x231114[_0x6a7e('0x45')],'ListId':_0x231114[_0x6a7e('0x46')],'scheduledat':_0x231114[_0x6a7e('0x47')],'callbackUniqueid':this[_0x6a7e('0x10')][_0x6a7e('0x3a')],'tags':'callback','description':_0x6a7e('0x48')+_0x231114[_0x6a7e('0x47')][_0x6a7e('0x49')](),'priority':_0x231114[_0x6a7e('0x4a')]})[_0x6a7e('0x13')](function(_0x563995){_0x251076(null,_0x563995);})[_0x6a7e('0x15')](function(_0xee25e0){_0x251076(_0xee25e0);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x4b')]=function(_0x338a58,_0x4fb944){this[_0x6a7e('0x11')][_0x6a7e('0x4c')](_0x338a58)[_0x6a7e('0x13')](function(_0x3fe7a1){_0x4fb944(null,_0x3fe7a1?_0x3fe7a1['name']:![]);})[_0x6a7e('0x15')](function(_0x240abe){_0x4fb944(_0x240abe);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x4d')]=function(_0x3e2cb8,_0x3a0c9d,_0x5ce7d9){var _0x13209f={'role':_0x6a7e('0x4e')};_0x13209f[_0x3e2cb8]=this[_0x6a7e('0x10')][_0x6a7e('0x38')];this[_0x6a7e('0x11')]['agentPause'](_0x13209f,_0x3a0c9d,this[_0x6a7e('0x10')][_0x6a7e('0x3a')])[_0x6a7e('0x13')](function(_0x37b7aa){_0x5ce7d9(null,_['isNil'](_0x37b7aa)?![]:!![]);})[_0x6a7e('0x15')](function(_0x4a47b7){logger['error'](_0x4a47b7);_0x5ce7d9(null,![]);});};AGIVertices['prototype'][_0x6a7e('0x4f')]=function(_0x3374c7,_0x5dc96c){var _0x330366={'role':_0x6a7e('0x4e')};_0x330366[_0x3374c7]=this[_0x6a7e('0x10')]['callerid'];this[_0x6a7e('0x11')][_0x6a7e('0x4f')](_0x330366)[_0x6a7e('0x13')](function(_0x8a9bd2){_0x5dc96c(null,_[_0x6a7e('0x43')](_0x8a9bd2)?![]:!![]);})[_0x6a7e('0x15')](function(_0x4b84c5){logger[_0x6a7e('0x30')](_0x4b84c5);_0x5dc96c(null,![]);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x50')]=function(_0x50cd4d,_0x5559e6){var _0x13e653={'role':_0x6a7e('0x4e')};_0x13e653[_0x50cd4d]=this[_0x6a7e('0x10')]['callerid'];this['rpc'][_0x6a7e('0x50')](_0x13e653)[_0x6a7e('0x13')](function(_0x3e166d){_0x5559e6(null,_[_0x6a7e('0x43')](_0x3e166d)?![]:!![]);})[_0x6a7e('0x15')](function(_0x1afd39){logger[_0x6a7e('0x30')](_0x1afd39);_0x5559e6(null,![]);});};AGIVertices[_0x6a7e('0x1c')]['agentLogin']=function(_0xaafc4a,_0x5340e9){var _0x20c47c={'role':'agent'};_0x20c47c[_0xaafc4a]=this['channel']['callerid'];var _0x3a4aa2=_0xaafc4a!='internal'?util[_0x6a7e('0x51')](_0x6a7e('0x52'),_0x6a7e('0x53'),this[_0x6a7e('0x10')][_0x6a7e('0x38')]):undefined;this[_0x6a7e('0x11')][_0x6a7e('0x54')](_0x20c47c,_0x3a4aa2)[_0x6a7e('0x13')](function(_0x36c556){_0x5340e9(null,_['isNil'](_0x36c556)?![]:!![]);})[_0x6a7e('0x15')](function(_0x5cae08){logger[_0x6a7e('0x30')](_0x5cae08);_0x5340e9(null,![]);});};AGIVertices['prototype']['shellCommand']=function(_0x1d98be,_0xa859f5){sh[_0x6a7e('0x55')](_[_0x6a7e('0x56')](_0x1d98be),function(_0x26a11b,_0x434dae){var _0x1fb019=_0x434dae[_0x6a7e('0x57')](/(\r\n|\n|\r)/gm,'');_0xa859f5(null,_0x1fb019);});};AGIVertices['prototype'][_0x6a7e('0x58')]=function(_0x5ba94e,_0x15d83b){scripts['googleCloudTTS'](_0x5ba94e[_0x6a7e('0x59')],_0x5ba94e[_0x6a7e('0x5a')]||_0x6a7e('0x5b'),_0x5ba94e[_0x6a7e('0x5b')],_0x5ba94e[_0x6a7e('0x5c')]||_0x6a7e('0x5d'),_0x5ba94e[_0x6a7e('0x5e')]||_0x6a7e('0x5f'),_0x5ba94e[_0x6a7e('0x60')]||'MP3')['then'](function(_0x533a78){_0x15d83b(null,_0x533a78);})[_0x6a7e('0x15')](function(_0x21efe8){_0x15d83b(_0x21efe8);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x61')]=function(_0x262ca5,_0x5e72){scripts[_0x6a7e('0x61')](_0x262ca5[_0x6a7e('0x5b')],_0x262ca5[_0x6a7e('0x62')]||'en',0x1)[_0x6a7e('0x13')](function(_0x5533b1){_0x5e72(null,_0x5533b1);})[_0x6a7e('0x15')](function(_0x12edd8){_0x5e72(_0x12edd8);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x63')]=function(_0x1e278b,_0x51bc53){var _0x1d4a2d={'uri':_0x1e278b[_0x6a7e('0x64')],'method':_0x1e278b[_0x6a7e('0x65')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x1e278b[_0x6a7e('0x66')])===_0x6a7e('0x67')&&parseInt(_0x1e278b[_0x6a7e('0x66')])>=0x1?parseInt(_0x1e278b['timeout'])*0x3e8:0x5*0x3e8};if(_[_0x6a7e('0x68')]([_0x6a7e('0x69'),_0x6a7e('0x6a')],_0x1d4a2d[_0x6a7e('0x65')][_0x6a7e('0x6b')]())){try{_0x1d4a2d[_0x6a7e('0x6c')]=_0x1e278b['rawBody']?JSON[_0x6a7e('0x6d')](_0x1e278b[_0x6a7e('0xc')]):{};}catch(_0x46686e){logger[_0x6a7e('0x30')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x46686e);}}try{_0x1d4a2d['headers']=_0x1e278b[_0x6a7e('0xb')]?JSON['parse'](_0x1e278b[_0x6a7e('0xb')]):{};}catch(_0x6a5c27){logger[_0x6a7e('0x30')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x6a5c27);}if(_0x1e278b[_0x6a7e('0x6e')]){try{var _0x11fbb1=require(_0x1e278b[_0x6a7e('0x6e')])[_0x6a7e('0x6f')](this,_0x1d4a2d);_0x1d4a2d[_0x6a7e('0x70')]=Mustache['render'](_0x1e278b[_0x6a7e('0x64')],_0x11fbb1,{},['$$','$$']);if(_0x1d4a2d['headers']){_0x1d4a2d[_0x6a7e('0x71')]=JSON[_0x6a7e('0x6d')](Mustache[_0x6a7e('0x72')](JSON[_0x6a7e('0x73')](_0x1d4a2d['headers']),_0x11fbb1,{},['$$','$$']));}if(_0x1d4a2d[_0x6a7e('0x6c')]){_0x1d4a2d[_0x6a7e('0x6c')]=JSON[_0x6a7e('0x6d')](Mustache['render'](JSON['stringify'](_0x1d4a2d[_0x6a7e('0x6c')]),_0x11fbb1,{},['$$','$$']));}}catch(_0xcf4ba4){logger[_0x6a7e('0x30')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0xcf4ba4);}}rp(_0x1d4a2d)['then'](function(_0x53de09){var _0x2d11ee={'statusCode':_0x53de09[_0x6a7e('0x74')]||0xc8,'statusMessage':_0x53de09[_0x6a7e('0x75')]||'OK','headers':_0x53de09[_0x6a7e('0x71')]||{},'body':_0x53de09[_0x6a7e('0x6c')]||{}};_0x51bc53(null,_0x2d11ee);})[_0x6a7e('0x15')](function(_0x24ebae){var _0x129542={'statusCode':_0x24ebae[_0x6a7e('0x74')]||0x1f4,'statusMessage':_0x24ebae[_0x6a7e('0x76')]||_0x6a7e('0x77'),'headers':_0x24ebae['options'][_0x6a7e('0x71')]||{},'body':_0x24ebae[_0x6a7e('0x78')][_0x6a7e('0x6c')]||{}};_0x51bc53(null,_0x129542);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x79')]=function(_0x540998,_0x340e63){scripts['googleDialogflow'](this[_0x6a7e('0x10')]['uniqueid'],_0x540998[_0x6a7e('0x7a')],_0x540998[_0x6a7e('0x5b')],_0x540998[_0x6a7e('0x7b')]||'en')[_0x6a7e('0x13')](function(_0x80e68b){_0x340e63(null,_0x80e68b);})[_0x6a7e('0x15')](function(_0x5f3e7a){_0x340e63(_0x5f3e7a);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x7c')]=function(_0x4ee0de,_0x481c8b){scripts[_0x6a7e('0x7c')](this[_0x6a7e('0x10')][_0x6a7e('0x3a')],_0x4ee0de[_0x6a7e('0x7d')],_0x4ee0de['client_email'],_0x4ee0de[_0x6a7e('0x7e')],_0x4ee0de['text'],_0x4ee0de['dialogflowV2_language']||'en')[_0x6a7e('0x13')](function(_0x78abd7){_0x481c8b(null,_0x78abd7);})['catch'](function(_0x1db7af){_0x481c8b(_0x1db7af);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x7f')]=function(_0x283a75,_0x4b45d0){scripts['sestekNDA'](this[_0x6a7e('0x10')],_0x283a75)[_0x6a7e('0x13')](function(_0xcc8f32){_0x4b45d0(null,_0xcc8f32);})[_0x6a7e('0x15')](function(_0x39352d){_0x4b45d0(_0x39352d);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x80')]=function(_0x162baf,_0x5d0921){scripts[_0x6a7e('0x80')](_0x162baf[_0x6a7e('0x7a')],_0x162baf[_0x6a7e('0x5b')],_0x162baf[_0x6a7e('0x81')]||'en-US',_0x162baf['speed'])['then'](function(_0x20b7e8){_0x5d0921(null,_0x20b7e8);})['catch'](function(_0x5a7196){_0x5d0921(_0x5a7196);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x82')]=function(_0x1d63e9,_0x672bd7,_0x350c56){scripts['ispeechASR'](_0x672bd7,_0x1d63e9[_0x6a7e('0x7a')],_0x1d63e9[_0x6a7e('0x83')]||_0x6a7e('0x5d'),this[_0x6a7e('0x84')](_0x1d63e9['model'])?_0x1d63e9['model']:undefined)['then'](function(_0x2b8f1b){_0x350c56(null,_0x2b8f1b);})[_0x6a7e('0x15')](function(_0x132c2f){_0x350c56(_0x132c2f);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x85')]=function(_0x1c38b0,_0x55e10e){scripts['awsPolly'](_0x1c38b0[_0x6a7e('0x86')],_0x1c38b0['aws_secret_access_key'],_0x1c38b0[_0x6a7e('0x87')],_0x1c38b0[_0x6a7e('0x88')]||_0x6a7e('0x89'),_0x1c38b0[_0x6a7e('0x5b')],_0x1c38b0[_0x6a7e('0x8a')]||'text')['then'](function(_0x1313e6){_0x55e10e(null,_0x1313e6);})[_0x6a7e('0x15')](function(_0x199737){_0x55e10e(_0x199737);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x8b')]=function(_0xa8ca22,_0x284f5a){scripts['awsLex'](this[_0x6a7e('0x10')]['uniqueid'],_0xa8ca22[_0x6a7e('0x86')],_0xa8ca22[_0x6a7e('0x8c')],_0xa8ca22[_0x6a7e('0x8d')],_0xa8ca22[_0x6a7e('0x5b')],_0xa8ca22[_0x6a7e('0x8e')])[_0x6a7e('0x13')](function(_0x508219){_0x284f5a(null,_0x508219);})[_0x6a7e('0x15')](function(_0x59315b){_0x284f5a(_0x59315b);});};AGIVertices['prototype']['googleASR']=function(_0x41178c,_0x589d8b,_0x8aec8){scripts['googleASR'](_0x589d8b,_0x41178c[_0x6a7e('0x7a')],_0x41178c[_0x6a7e('0x8f')]||_0x6a7e('0x5d'))[_0x6a7e('0x13')](function(_0x40f9b7){_0x8aec8(null,_0x40f9b7);})[_0x6a7e('0x15')](function(_0x2bf02d){_0x8aec8(_0x2bf02d);});};AGIVertices[_0x6a7e('0x1c')]['tildeASR']=function(_0x24312f,_0x13dccc,_0x22c68b){scripts['tildeASR'](_0x13dccc,_0x24312f[_0x6a7e('0x90')],_0x24312f[_0x6a7e('0x91')],_0x24312f[_0x6a7e('0x70')])[_0x6a7e('0x13')](function(_0x49f138){_0x22c68b(null,_0x49f138);})[_0x6a7e('0x15')](function(_0x1059f3){_0x22c68b(_0x1059f3);});};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x92')]=function(_0x466fb1){var _0x3cedd0=_['includes'](verticesWithRetry,_0x466fb1['agicommand'])?_0x466fb1:_[_0x6a7e('0x93')](_0x466fb1);for(var _0x3d8c6e in _0x3cedd0){if(_0x3cedd0['hasOwnProperty'](_0x3d8c6e)){if(_0x3cedd0[_0x3d8c6e]&&_[_0x6a7e('0x94')](_0x3cedd0[_0x3d8c6e])){if(_[_0x6a7e('0x68')](recursiveMapAttributes,_0x3d8c6e)){_0x3cedd0[_0x3d8c6e]=this[_0x6a7e('0x95')](_0x3cedd0[_0x3d8c6e]);}else{_0x3cedd0[_0x3d8c6e]=this['replaceAllVariables'](_0x3cedd0[_0x3d8c6e]);}}}}return _0x3cedd0;};AGIVertices[_0x6a7e('0x1c')]['recursiveNodeIndex']=function(_0x139bf2){for(var _0x3e14ed in _0x139bf2){if(_0x139bf2[_0x6a7e('0x96')](_0x3e14ed)){if(_[_0x6a7e('0x97')](_0x139bf2[_0x3e14ed])){this[_0x6a7e('0x98')](_0x139bf2[_0x3e14ed]);}else if(_[_0x6a7e('0x99')](_0x139bf2[_0x3e14ed])){for(var _0x2ddc8d=0x0;_0x2ddc8d<_0x139bf2[_0x3e14ed][_0x6a7e('0x9a')];_0x2ddc8d++){this[_0x6a7e('0x98')](_0x139bf2[_0x3e14ed][_0x2ddc8d]);}}else if(_[_0x6a7e('0x94')](_0x139bf2[_0x3e14ed])){_0x139bf2[_0x3e14ed]=this[_0x6a7e('0x9b')](_0x139bf2[_0x3e14ed]);}}}};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x9c')]=function(_0x495080,_0x545147){for(var _0x57f5e2 in _0x495080){if(_0x495080[_0x6a7e('0x96')](_0x57f5e2)){if(_[_0x6a7e('0x97')](_0x495080[_0x57f5e2])){if(!_[_0x6a7e('0x42')](_0x495080[_0x57f5e2])){this[_0x6a7e('0x9c')](_0x495080[_0x57f5e2],util[_0x6a7e('0x51')](_0x6a7e('0x9d'),_0x545147,_0x57f5e2));}}else if(_[_0x6a7e('0x99')](_0x495080[_0x57f5e2])){for(var _0xc3f843=0x0;_0xc3f843<_0x495080[_0x57f5e2][_0x6a7e('0x9a')];_0xc3f843++){this[_0x6a7e('0x9c')](_0x495080[_0x57f5e2][_0xc3f843],util[_0x6a7e('0x51')](_0x6a7e('0x9d'),_0x545147,_0x57f5e2+'['+_0xc3f843+']'));}}else{if(!_[_0x6a7e('0x43')](_0x495080[_0x57f5e2])){this[_0x6a7e('0x10')][_0x6a7e('0x9e')](util[_0x6a7e('0x51')](_0x6a7e('0x9d'),_0x545147,_0x57f5e2),_0x495080[_0x57f5e2]);}}}}};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x95')]=function(_0x3936f3){try{var _0x99ac36=JSON['parse'](_0x3936f3);this[_0x6a7e('0x98')](_0x99ac36);return JSON[_0x6a7e('0x73')](_0x99ac36);}catch(_0x32aab6){return this[_0x6a7e('0x9b')](_0x3936f3);}};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x9b')]=function(_0x1fcf47){var _0x298d57=_0x1fcf47[_0x6a7e('0x9f')]('{');for(var _0x11e160=0x1;_0x11e160<_0x298d57[_0x6a7e('0x9a')];_0x11e160+=0x1){var _0x1230f8=_0x298d57[_0x11e160][_0x6a7e('0x9f')]('}');if(_0x1230f8['length']>0x1){_0x1fcf47=_0x1fcf47['replaceAll']('{'+_0x1230f8[0x0]+'}',this[_0x6a7e('0x10')]['getVariable'](_0x1230f8[0x0])[_0x6a7e('0xa0')]||_0x1230f8[0x0]);}}if(_0x298d57[_0x6a7e('0x9a')]===0x1){return _0x1fcf47[_0x6a7e('0x49')]();}return this[_0x6a7e('0x9b')](_0x1fcf47);};AGIVertices['prototype'][_0x6a7e('0xa1')]=function(_0x35753b,_0x1f737e){var _0x1482fb=this[_0x6a7e('0x10')]['getVariable'](_0x35753b);if(_0x1482fb['result']===-0x1){return _0x1482fb;}logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0xa2'),_0x1f737e,_0x1482fb[_0x6a7e('0xa0')]));return this[_0x6a7e('0x10')]['setVariable'](_0x1f737e,_0x1482fb[_0x6a7e('0xa0')]);};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x84')]=function(_0x3d49d9){return _0x3d49d9&&_0x3d49d9!=='0'&&_0x3d49d9!=='-1'&&_0x3d49d9!=='';};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xa3')]=function(_0x47fcf5){this[_0x6a7e('0x35')][_0x6a7e('0x6f')](this,_0x47fcf5,'-');_0x47fcf5[_0x6a7e('0xa4')]=_0x47fcf5['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices['prototype']['mrcpsynth']=function(_0x6fd887){logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0xa5'),_0x6fd887[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x6fd887[_0x6a7e('0x5b')])){return this[_0x6a7e('0x10')]['noop'](_0x6a7e('0xa7'));}var _0x39f519='\x22'+_0x6fd887[_0x6a7e('0x5b')]+'\x22';if(this[_0x6a7e('0x84')](_0x6fd887['options'])){_0x39f519+=','+_0x6fd887['options'];}var _0x47736f=this[_0x6a7e('0x10')][_0x6a7e('0x55')]('MRCPSynth',_0x39f519);if(_0x47736f[_0x6a7e('0xa8')]===-0x1){return _0x47736f;}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')]('Executed\x20command\x20MRCPSynth\x20%s',_0x39f519));};AGIVertices['prototype'][_0x6a7e('0xaa')]=function(_0x4367b9){logger['info'](util['format'](_0x6a7e('0xab'),_0x4367b9[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x4367b9['grammar'])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0xac'));}var _0x5208a0=_0x4367b9[_0x6a7e('0xad')];if(this[_0x6a7e('0x84')](_0x4367b9[_0x6a7e('0x78')])){_0x5208a0+=','+_0x4367b9[_0x6a7e('0x78')];}var _0x92b076=this[_0x6a7e('0x10')]['exec'](_0x6a7e('0xae'),_0x5208a0);if(_0x92b076[_0x6a7e('0xa8')]===-0x1){return _0x92b076;}var _0x196fb4=this[_0x6a7e('0xa1')](_0x6a7e('0xaf'),_0x6a7e('0xb0'));if(_0x196fb4['result']===-0x1){return _0x196fb4;}var _0xf7129b=this[_0x6a7e('0xa1')](_0x6a7e('0xb1'),'MRCP_RECOG_TRANSCRIPT');if(_0xf7129b[_0x6a7e('0xa8')]===-0x1){return _0xf7129b;}var _0x336af2=this['getAndSetVariable'](_0x6a7e('0xb2'),_0x6a7e('0xb3'));if(_0x336af2[_0x6a7e('0xa8')]===-0x1){return _0x336af2;}return this['channel'][_0x6a7e('0xa9')](util['format'](_0x6a7e('0xb4'),_0x5208a0));};AGIVertices['prototype'][_0x6a7e('0x8')]=function(_0x33b64f){logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0xb5'),_0x33b64f[_0x6a7e('0xa6')]));return this[_0x6a7e('0x10')]['agi']([_0x33b64f['command'],_0x33b64f[_0x6a7e('0xb6')]]);};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xb7')]=function(_0x22c997){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0xb8'),_0x22c997['label']));if(this[_0x6a7e('0x84')](_0x22c997['timeout'])){logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0xb9'),_0x22c997['timeout']));var _0x27e636=this['channel'][_0x6a7e('0xba')](_0x22c997[_0x6a7e('0x66')]);if(_0x27e636['result']===-0x1){return _0x27e636;}}return this[_0x6a7e('0x10')][_0x6a7e('0xb7')]();};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xbb')]=function(_0x2b9cca){logger['info'](util[_0x6a7e('0x51')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x2b9cca[_0x6a7e('0xa6')]));if(!this['isConfigured'](_0x2b9cca[_0x6a7e('0x46')])){return this['channel'][_0x6a7e('0x30')](_0x2b9cca,_0x6a7e('0xbc'));}_0x2b9cca[_0x6a7e('0x47')]=moment();if(this[_0x6a7e('0x84')](_0x2b9cca[_0x6a7e('0xbd')])){_0x2b9cca[_0x6a7e('0x47')]=moment()[_0x6a7e('0xbe')](_0x2b9cca[_0x6a7e('0xbd')],_0x6a7e('0xbf'));}if(!this['isConfigured'](_0x2b9cca[_0x6a7e('0x4a')])){_0x2b9cca[_0x6a7e('0x4a')]=0x2;}this[_0x6a7e('0x41')][_0x6a7e('0x6f')](this,_0x2b9cca);return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x2b9cca[_0x6a7e('0x45')],_0x2b9cca[_0x6a7e('0x46')],_0x2b9cca[_0x6a7e('0x47')]));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xc0')]=function(_0x406052){logger['info'](util['format']('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x406052[_0x6a7e('0xa6')]));var _0xd3f2d=this[_0x6a7e('0x10')][_0x6a7e('0x55')](_0x406052[_0x6a7e('0xc1')],_0x406052['options']);if(_0xd3f2d[_0x6a7e('0xa8')]===-0x1){return _0xd3f2d;}return this[_0x6a7e('0x10')]['noop'](util['format'](_0x6a7e('0xc2'),_0x406052[_0x6a7e('0xc1')],_0x406052[_0x6a7e('0x78')]));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xc3')]=function(_0x34c17e){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0xc4'),_0x34c17e[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x34c17e[_0x6a7e('0x5b')])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0xa7'));}var _0x416cf1='\x22'+_0x34c17e[_0x6a7e('0x5b')]+'\x22';if(this[_0x6a7e('0x84')](_0x34c17e[_0x6a7e('0x78')])){_0x416cf1+=','+_0x34c17e[_0x6a7e('0x78')];}var _0x8401ef=this['channel'][_0x6a7e('0x55')]('MRCPSynth',_0x416cf1);if(_0x8401ef[_0x6a7e('0xa8')]===-0x1){return _0x8401ef;}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x416cf1));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xc5')]=function(_0x6cb27c){logger['info'](util[_0x6a7e('0x51')]('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x6cb27c[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x6cb27c[_0x6a7e('0x5b')])){return this['channel'][_0x6a7e('0xa9')](_0x6a7e('0xa7'));}var _0x4c4f5c='\x22'+_0x6cb27c['text']+'\x22';if(this[_0x6a7e('0x84')](_0x6cb27c[_0x6a7e('0x78')])){_0x4c4f5c+=','+_0x6cb27c[_0x6a7e('0x78')];}var _0x1cd448=this['channel'][_0x6a7e('0x55')](_0x6a7e('0xc6'),_0x4c4f5c);if(_0x1cd448['result']===-0x1){return _0x1cd448;}return this[_0x6a7e('0x10')]['noop'](util[_0x6a7e('0x51')]('Executed\x20command\x20MRCPSynth\x20%s',_0x4c4f5c));};AGIVertices[_0x6a7e('0x1c')]['lumenvoxasr']=function(_0x460199){logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0xc7'),_0x460199[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x460199[_0x6a7e('0xad')])){return this['channel'][_0x6a7e('0xa9')]('no\x20grammar\x20configured');}var _0x288136=_0x460199[_0x6a7e('0xad')];if(this['isConfigured'](_0x460199[_0x6a7e('0x78')])){_0x288136+=','+_0x460199[_0x6a7e('0x78')];}var _0x343dd5=this[_0x6a7e('0x10')]['exec']('MRCPRecog',_0x288136);if(_0x343dd5['result']===-0x1){return _0x343dd5;}var _0xb82632=this['getAndSetVariable'](_0x6a7e('0xaf'),'LUMENVOX_ASR_CONFIDENCE');if(_0xb82632[_0x6a7e('0xa8')]===-0x1){return _0xb82632;}var _0x3867df=this[_0x6a7e('0xa1')](_0x6a7e('0xb1'),_0x6a7e('0xc8'));if(_0x3867df[_0x6a7e('0xa8')]===-0x1){return _0x3867df;}var _0x43795d=this[_0x6a7e('0xa1')](_0x6a7e('0xb2'),'LUMENVOX_ASR_INSTANCE');if(_0x43795d[_0x6a7e('0xa8')]===-0x1){return _0x43795d;}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0xb4'),_0x288136));};AGIVertices[_0x6a7e('0x1c')]['sestekasr']=function(_0x51cbfb){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0xc9'),_0x51cbfb[_0x6a7e('0xa6')]));if(!this['isConfigured'](_0x51cbfb[_0x6a7e('0xad')])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0xac'));}var _0x3d1100=_0x51cbfb[_0x6a7e('0xad')];if(this[_0x6a7e('0x84')](_0x51cbfb['options'])){_0x3d1100+=','+_0x51cbfb['options'];}var _0x19dc67=this['channel']['exec'](_0x6a7e('0xae'),_0x3d1100);if(_0x19dc67[_0x6a7e('0xa8')]===-0x1){return _0x19dc67;}var _0x462dc7=this[_0x6a7e('0xa1')]('RECOG_CONFIDENCE()','SESTEK_ASR_CONFIDENCE');if(_0x462dc7['result']===-0x1){return _0x462dc7;}var _0x3ee192=this[_0x6a7e('0xa1')]('RECOG_INPUT()',_0x6a7e('0xca'));if(_0x3ee192['result']===-0x1){return _0x3ee192;}var _0x23b7b4=this[_0x6a7e('0xa1')](_0x6a7e('0xb2'),'SESTEK_ASR_INSTANCE');if(_0x23b7b4[_0x6a7e('0xa8')]===-0x1){return _0x23b7b4;}return this['channel']['noop'](util[_0x6a7e('0x51')](_0x6a7e('0xb4'),_0x3d1100));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xcb')]=function(_0x412ade){logger[_0x6a7e('0x2a')](util['format']('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x412ade[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x412ade['odbc_id'])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x412ade,'no\x20database\x20selected');}var _0x24ca62=this[_0x6a7e('0xcc')][_0x6a7e('0x6f')](this,_0x412ade[_0x6a7e('0xcd')]);if(!_0x24ca62){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x412ade,_0x6a7e('0xce'));}if(!this[_0x6a7e('0x84')](_0x412ade['query'])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x412ade,'no\x20query\x20configured');}var _0x4ac896=_0x412ade[_0x6a7e('0x2c')][_0x6a7e('0x57')](/(\r\n|\n|\r)/gm,'\x20');this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0xcf'),_0x4ac896));var _0x58f304=this[_0x6a7e('0x28')][_0x6a7e('0x6f')](this,_0x24ca62,_0x4ac896);this[_0x6a7e('0x35')][_0x6a7e('0x6f')](this,_0x412ade,_0x4ac896);if(!this[_0x6a7e('0x84')](_0x412ade[_0x6a7e('0xd0')])){return this[_0x6a7e('0x10')]['noop'](_0x6a7e('0xd1'));}var _0x22e6d7=this['getVariable'][_0x6a7e('0x6f')](this,_0x412ade[_0x6a7e('0xd0')]);if(!_0x22e6d7){return this['channel']['error'](_0x412ade,'no\x20variable\x20found');}var _0xc896c1=this;_0x58f304[_0x6a7e('0xd2')](function(_0x3f001e,_0x251b21){Object[_0x6a7e('0xd3')](_0x3f001e)[_0x6a7e('0xd2')](function(_0x1643a9){_0xc896c1[_0x6a7e('0x10')][_0x6a7e('0x9e')](util['format'](_0x6a7e('0xd4'),_0x22e6d7,_0x251b21,_0x1643a9),_0x3f001e[_0x1643a9]);});});this[_0x6a7e('0x10')]['setVariable'](util[_0x6a7e('0x51')](_0x6a7e('0xd5'),_0x22e6d7),_0x58f304[_0x6a7e('0x9a')]);return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util['format']('variable\x20%s\x20set',_0x22e6d7));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xd6')]=function(_0x49c933){logger[_0x6a7e('0xd7')](util['format']('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x49c933[_0x6a7e('0xa6')]));if(!this['isConfigured'](_0x49c933[_0x6a7e('0xd8')])){return this['channel'][_0x6a7e('0x30')](_0x49c933,_0x6a7e('0xd9'));}var _0x387cff=this[_0x6a7e('0x1a')][_0x6a7e('0x6f')](this,_0x49c933[_0x6a7e('0xd8')]);if(!_0x387cff){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x49c933,_0x6a7e('0xda'));}var _0x1389d8=this[_0x6a7e('0x10')][_0x6a7e('0x55')](_0x6a7e('0xdb'),[util[_0x6a7e('0x51')](_0x6a7e('0xdc'),_0x387cff),_0x49c933[_0x6a7e('0x66')],_0x49c933['opts'],_0x49c933['url']]);if(_0x1389d8[_0x6a7e('0xa8')]===-0x1){return _0x1389d8;}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0xdd'),_0x6a7e('0xdb')));};AGIVertices[_0x6a7e('0x1c')]['dialogflow']=function(_0x49f02a){logger['info'](util['format'](_0x6a7e('0xde'),_0x49f02a[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x49f02a['key'])){return this['channel'][_0x6a7e('0xa9')]('no\x20key\x20configured');}if(!this['isConfigured'](_0x49f02a['text'])){return this['channel'][_0x6a7e('0xa9')](_0x6a7e('0xa7'));}this[_0x6a7e('0x10')]['bot']=!![];this[_0x6a7e('0x35')](_0x49f02a);this['createSquareMessage'](_0x49f02a['text'],'in','','');this[_0x6a7e('0x10')]['noop'](util['format'](_0x6a7e('0xdf'),_0x49f02a[_0x6a7e('0x5b')]));var _0x1ad781=this[_0x6a7e('0x79')][_0x6a7e('0x6f')](this,_0x49f02a);if(_0x1ad781){for(var _0x56f7e2 in _0x1ad781){if(_0x1ad781['hasOwnProperty'](_0x56f7e2)){this['channel'][_0x6a7e('0x9e')](util[_0x6a7e('0x51')](_0x6a7e('0xe0'),_0x56f7e2[_0x6a7e('0x6b')]()),_0x1ad781[_0x56f7e2]);}}this[_0x6a7e('0xe1')](_0x1ad781[_0x6a7e('0xe2')],_0x6a7e('0xe3'),_0x6a7e('0xe4'),'');return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')]('Dialogflow\x20Result\x20%s',_0x1ad781['speech']));}return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x49f02a,_0x6a7e('0xe5'));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xe6')]=function(_0xcf1abd){logger['info'](util['format']('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0xcf1abd['label']));if(!this[_0x6a7e('0x84')](_0xcf1abd[_0x6a7e('0x7d')])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0xe7'));}if(!this[_0x6a7e('0x84')](_0xcf1abd[_0x6a7e('0xe8')])){return this[_0x6a7e('0x10')]['noop'](_0x6a7e('0xe9'));}if(!this[_0x6a7e('0x84')](_0xcf1abd['private_key'])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0xea'));}if(!this[_0x6a7e('0x84')](_0xcf1abd[_0x6a7e('0xeb')])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0xec'));}if(!this[_0x6a7e('0x84')](_0xcf1abd[_0x6a7e('0x5b')])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0xa7'));}this[_0x6a7e('0x10')][_0x6a7e('0xed')]=!![];this[_0x6a7e('0x35')](_0xcf1abd);this['createSquareMessage'](_0xcf1abd['text'],'in','','');this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util['format'](_0x6a7e('0xee'),_0xcf1abd[_0x6a7e('0x5b')]));var _0x219f7d=this[_0x6a7e('0x7c')][_0x6a7e('0x6f')](this,_0xcf1abd);if(_0x219f7d){for(var _0x3d5c4c in _0x219f7d){if(_0x219f7d[_0x6a7e('0x96')](_0x3d5c4c)){if(_0x3d5c4c!=='providerResponse'){this['channel'][_0x6a7e('0x9e')](util['format'](_0x6a7e('0xe0'),_0x3d5c4c[_0x6a7e('0x6b')]()),_0x219f7d[_0x3d5c4c]);}}}this['createSquareMessage'](_0x219f7d['speech'],_0x6a7e('0xe3'),'dialogflowV2',_0x219f7d[_0x6a7e('0xef')]);return this['channel'][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0xf0'),_0x219f7d[_0x6a7e('0xe2')]));}return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0xcf1abd,_0x6a7e('0xf1'));};AGIVertices[_0x6a7e('0x1c')]['sesteknda']=function(_0x1300be){logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0xf2'),_0x1300be[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x1300be[_0x6a7e('0xf3')])){return this['channel']['noop'](_0x6a7e('0xf4'));}if(!this['isConfigured'](_0x1300be['username'])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')]('no\x20username\x20configured');}if(!this[_0x6a7e('0x84')](_0x1300be[_0x6a7e('0xf5')])){return this[_0x6a7e('0x10')]['noop'](_0x6a7e('0xf6'));}if(!this[_0x6a7e('0x84')](_0x1300be[_0x6a7e('0xf7')])){return this['channel']['noop'](_0x6a7e('0xa7'));}this[_0x6a7e('0x10')]['bot']=!![];this[_0x6a7e('0x35')](_0x1300be);this[_0x6a7e('0xe1')](_0x1300be[_0x6a7e('0x5b')],'in','','');this['channel'][_0x6a7e('0xa9')](util[_0x6a7e('0x51')]('Trying\x20SestekNDA:\x20%s',_0x1300be[_0x6a7e('0x5b')]));var _0x1be1bc=this['sestekNDA']['sync'](this,_0x1300be);if(_0x1be1bc){for(var _0x18ebfd in _0x1be1bc){if(_0x1be1bc[_0x6a7e('0x96')](_0x18ebfd)){this['channel'][_0x6a7e('0x9e')](util[_0x6a7e('0x51')](_0x6a7e('0xf8'),_0x18ebfd[_0x6a7e('0x6b')]()),_0x1be1bc[_0x18ebfd]);}}this[_0x6a7e('0xe1')](_0x1be1bc[_0x6a7e('0xe2')],_0x6a7e('0xe3'),_0x6a7e('0xf9'),'');if(_0x1be1bc[_0x6a7e('0xfa')]){this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0xfb'),_0x1be1bc[_0x6a7e('0xfa')]));var _0x263284=this[_0x6a7e('0x10')]['streamFile'](_0x1be1bc[_0x6a7e('0xfa')]);try{fs[_0x6a7e('0xfc')](_0x1be1bc[_0x6a7e('0xfa')]+_0x6a7e('0xfd'));}catch(_0x43629f){logger[_0x6a7e('0x30')](_0x43629f);}return _0x263284;}else{return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0xfe'),_0x1be1bc[_0x6a7e('0xe2')]));}}return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x1300be,_0x6a7e('0xff'));};AGIVertices['prototype'][_0x6a7e('0x100')]=function(_0x39b8e7){logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x101'),_0x39b8e7['label']));return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0x100'));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x102')]=function(_0x4b8060){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x4b8060[_0x6a7e('0xa6')]));var _0x4520a1='';if(_0x4b8060[_0x6a7e('0x103')]){if(!this['isConfigured'](_0x4b8060[_0x6a7e('0x103')])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x4b8060,_0x6a7e('0x104'));}else{var _0x43c7fb=parseInt(_0x4b8060[_0x6a7e('0x103')],0xa);if(isNaN(_0x43c7fb)){_0x4520a1=_0x4b8060['trunk_id'];}else{_0x4520a1=this[_0x6a7e('0x105')][_0x6a7e('0x6f')](this,_0x4b8060[_0x6a7e('0x103')]);if(!_0x4520a1){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x4b8060,_0x6a7e('0x106'));}}}}else if(_0x4b8060[_0x6a7e('0x107')]){_0x4520a1=_0x4b8060[_0x6a7e('0x107')];}else{return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x4b8060,'no\x20trunk\x20selected');}var _0x51556d=this[_0x6a7e('0x10')][_0x6a7e('0x55')]('DIAL',[util[_0x6a7e('0x51')](_0x6a7e('0x108'),_0x4520a1,_0x4b8060[_0x6a7e('0x45')]),_0x4b8060[_0x6a7e('0x66')],_0x4b8060[_0x6a7e('0x109')],_0x4b8060[_0x6a7e('0x64')]]);if(_0x51556d[_0x6a7e('0xa8')]===-0x1){return _0x51556d;}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0xdd'),_0x6a7e('0xdb')));};AGIVertices['prototype'][_0x6a7e('0x10a')]=function(_0x37de2d){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x10b'),_0x37de2d[_0x6a7e('0xa6')]));return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0x10a'));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xe')]=function(_0x1a1a86){logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0x10c'),_0x1a1a86['label']));if(_0x1a1a86['retry']===0x0){return this[_0x6a7e('0xa3')](_0x1a1a86);}_0x1a1a86[_0x6a7e('0xa4')]-=0x1;if(!this[_0x6a7e('0x84')](_0x1a1a86[_0x6a7e('0x10d')])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x1a1a86,_0x6a7e('0x10e'));}var _0x349050=this[_0x6a7e('0x1e')][_0x6a7e('0x6f')](this,_0x1a1a86[_0x6a7e('0x10d')]);if(!_0x349050){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x1a1a86,'no\x20file\x20audio\x20found');}if(!this[_0x6a7e('0x84')](_0x1a1a86['variable_id'])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x6a7e('0xd1'));}var _0x55c6aa=this[_0x6a7e('0x10')][_0x6a7e('0x10f')](_0x349050,_0x1a1a86['response'],_0x1a1a86[_0x6a7e('0x110')]);var _0xf15fab=_0x55c6aa[_0x6a7e('0xa8')]?_0x55c6aa[_0x6a7e('0xa8')]['toString']():'';logger[_0x6a7e('0x2a')](_0x6a7e('0x111'),JSON[_0x6a7e('0x73')](_0x55c6aa));if(_0x55c6aa[_0x6a7e('0xa8')]===-0x1){this[_0x6a7e('0x35')][_0x6a7e('0x6f')](this,_0x1a1a86,_0xf15fab);return _0x55c6aa;}else if(_0x55c6aa['extra']==='timeout'){_0x55c6aa[_0x6a7e('0xa8')]=_0xf15fab[_0x6a7e('0x9a')]>=parseInt(_0x1a1a86[_0x6a7e('0x112')])?'x':'i';}else{_0x55c6aa[_0x6a7e('0xa8')]=_0xf15fab[_0x6a7e('0x9a')]>=parseInt(_0x1a1a86[_0x6a7e('0x112')])&&_0xf15fab['length']<=parseInt(_0x1a1a86['maxdigit'])?'x':'i';}var _0x102f08=this[_0x6a7e('0x113')][_0x6a7e('0x6f')](this,_0x1a1a86[_0x6a7e('0xd0')]);if(!_0x102f08){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x1a1a86,_0x6a7e('0x114'));}this[_0x6a7e('0x10')][_0x6a7e('0x9e')](_0x102f08,_0xf15fab);if(this[_0x6a7e('0x84')](_0x1a1a86['hiddendigitsnum'])){var _0x24edee=parseInt(_0x1a1a86[_0x6a7e('0x115')],0xa);var _0x1bb007=rs['generate']({'charset':'*','length':_0x24edee});var _0x53fb06=_0xf15fab[_0x6a7e('0x9a')];if(_0x53fb06>0x0){if(_0x53fb06>_0x24edee){this[_0x6a7e('0x35')][_0x6a7e('0x6f')](this,_0x1a1a86,_0x1a1a86['hiddendigitspos']==='first'?_0x1bb007+_0xf15fab[_0x6a7e('0x116')](_0x24edee):_0xf15fab[_0x6a7e('0x116')](0x0,_0x53fb06-_0x24edee)+_0x1bb007);}else{this[_0x6a7e('0x35')][_0x6a7e('0x6f')](this,_0x1a1a86,rs[_0x6a7e('0x117')]({'charset':'*','length':_0x53fb06}));}}else{this['createSquareDetailsReport'][_0x6a7e('0x6f')](this,_0x1a1a86,'');}}else{this[_0x6a7e('0x35')]['sync'](this,_0x1a1a86,_0xf15fab);}return _0x55c6aa;};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xf')]=function(_0xdd0c0c){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x118'),_0xdd0c0c['label']));return this['getdigits'](_0xdd0c0c);};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x119')]=function(_0x5b0532){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x5b0532[_0x6a7e('0xa6')]));this[_0x6a7e('0x35')]['sync'](this,_0x5b0532,_0x5b0532['goalname']);return this[_0x6a7e('0x10')]['noop'](util['format'](_0x6a7e('0x11a'),_0x5b0532[_0x6a7e('0x11b')]));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x11c')]=function(_0x5a59d7){logger[_0x6a7e('0x2a')](util['format']('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x5a59d7['label']));if(!this[_0x6a7e('0x84')](_0x5a59d7[_0x6a7e('0x86')])||!this[_0x6a7e('0x84')](_0x5a59d7[_0x6a7e('0x8c')])){return this['channel'][_0x6a7e('0xa9')]('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x5a59d7['text'])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')]('no\x20text\x20configured');}this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x11d'),_0x5a59d7[_0x6a7e('0x5b')]));var _0x10789c=this[_0x6a7e('0x85')][_0x6a7e('0x6f')](this,_0x5a59d7);if(_0x10789c){this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util['format']('aws\x20Polly\x20%s\x20file\x20created',_0x10789c));var _0x146a53=this[_0x6a7e('0x10')][_0x6a7e('0x11e')](_0x10789c);try{fs[_0x6a7e('0xfc')](_0x10789c+_0x6a7e('0xfd'));}catch(_0x5829f9){logger[_0x6a7e('0x30')](_0x5829f9);}return _0x146a53;}return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x5a59d7,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x11f')]=function(_0x539150){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')]('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x539150['label']));if(!this[_0x6a7e('0x84')](_0x539150[_0x6a7e('0x86')])||!this[_0x6a7e('0x84')](_0x539150[_0x6a7e('0x8c')])){return this[_0x6a7e('0x10')]['noop'](_0x6a7e('0x120'));}if(!this[_0x6a7e('0x84')](_0x539150[_0x6a7e('0x8e')])){return this[_0x6a7e('0x10')]['noop'](_0x6a7e('0x121'));}if(!this[_0x6a7e('0x84')](_0x539150[_0x6a7e('0x5b')])){return this['channel'][_0x6a7e('0xa9')](_0x6a7e('0xa7'));}this[_0x6a7e('0x10')][_0x6a7e('0xed')]=!![];this[_0x6a7e('0x35')](_0x539150);this[_0x6a7e('0xe1')](_0x539150[_0x6a7e('0x5b')],'in','','');this['channel'][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x122'),_0x539150[_0x6a7e('0x5b')]));var _0x443030=this[_0x6a7e('0x8b')][_0x6a7e('0x6f')](this,_0x539150);if(_0x443030){for(var _0x2ddb90 in _0x443030){if(_0x443030['hasOwnProperty'](_0x2ddb90)&&_[_0x6a7e('0x94')](_0x443030[_0x2ddb90])){this[_0x6a7e('0x10')][_0x6a7e('0x9e')](util[_0x6a7e('0x51')](_0x6a7e('0x123'),_0x2ddb90[_0x6a7e('0x6b')]()),_0x443030[_0x2ddb90]);}}if(_[_0x6a7e('0x43')](_0x443030[_0x6a7e('0x76')])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0x124'));}else{this[_0x6a7e('0xe1')](_0x443030[_0x6a7e('0x76')],_0x6a7e('0xe3'),'amazonlex','');return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')]('Amazon\x20Lex\x20Result\x20%s',_0x443030[_0x6a7e('0x76')]));}}return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x539150,_0x6a7e('0x125'));};AGIVertices[_0x6a7e('0x1c')]['googleasr']=function(_0x2d3291){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x126'),_0x2d3291[_0x6a7e('0xa6')],_0x2d3291[_0x6a7e('0x66')]));if(!this[_0x6a7e('0x84')](_0x2d3291[_0x6a7e('0x7a')])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0x127'));}var _0x82320e='wav';var _0x1af7c5=util[_0x6a7e('0x51')](_0x6a7e('0x128'),FILES_PATH,rs[_0x6a7e('0x117')](0x4));var _0xd8d25e=util[_0x6a7e('0x51')]('%s.%s',_0x1af7c5,_0x82320e);var _0x48af61=!![];if(_0x2d3291[_0x6a7e('0x129')]===_0x6a7e('0x12a')){_0x48af61=![];}var _0x53932f=this[_0x6a7e('0x10')][_0x6a7e('0x12b')](_0x1af7c5,_0x82320e,_0x2d3291[_0x6a7e('0x12c')],_0x2d3291['timeout'],undefined,_0x48af61);if(_0x53932f[_0x6a7e('0xa8')]!==-0x1){this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util['format'](_0x6a7e('0x12d'),_0xd8d25e));var _0x586384=this[_0x6a7e('0x12e')][_0x6a7e('0x6f')](this,_0x2d3291,_0xd8d25e);if(_0x586384){for(var _0x3180b8 in _0x586384){if(_0x586384[_0x6a7e('0x96')](_0x3180b8)){this[_0x6a7e('0x10')][_0x6a7e('0x9e')](util['format'](_0x6a7e('0x12f'),_0x3180b8[_0x6a7e('0x6b')]()),_0x586384[_0x3180b8]);}}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x130'),JSON['stringify'](_0x586384)));}}return _0x53932f;};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x131')]=function(_0x23274a){logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x132'),_0x23274a[_0x6a7e('0xa6')]));if(!this['isConfigured'](_0x23274a['appid'])){return this[_0x6a7e('0x10')]['noop'](_0x6a7e('0x133'));}if(!this[_0x6a7e('0x84')](_0x23274a[_0x6a7e('0x91')])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0x134'));}var _0x21c6db=_0x6a7e('0x135');var _0x5145c9=util[_0x6a7e('0x51')](_0x6a7e('0x128'),FILES_PATH,rs[_0x6a7e('0x117')](0x4));var _0x2568f7=util[_0x6a7e('0x51')](_0x6a7e('0x9d'),_0x5145c9,_0x21c6db);var _0x18a132=!![];if(_0x23274a[_0x6a7e('0x129')]===_0x6a7e('0x12a')){_0x18a132=![];}var _0x4b03e6=this[_0x6a7e('0x10')][_0x6a7e('0x12b')](_0x5145c9,_0x21c6db,_0x23274a[_0x6a7e('0x12c')],_0x23274a['timeout'],undefined,_0x18a132);if(_0x4b03e6['result']!==-0x1){this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x136'),_0x2568f7));var _0x4b04c=this[_0x6a7e('0x137')][_0x6a7e('0x6f')](this,_0x23274a,_0x2568f7);if(_0x4b04c){for(var _0x2bfd95 in _0x4b04c){if(_0x4b04c[_0x6a7e('0x96')](_0x2bfd95)){this[_0x6a7e('0x10')][_0x6a7e('0x9e')](util[_0x6a7e('0x51')](_0x6a7e('0x138'),_0x2bfd95['toUpperCase']()),_0x4b04c[_0x2bfd95]);}}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x139'),JSON[_0x6a7e('0x73')](_0x4b04c)));}}return _0x4b03e6;};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x13a')]=function(_0x4cbe8f){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x13b'),_0x4cbe8f[_0x6a7e('0xa6')]));return this[_0x6a7e('0x10')][_0x6a7e('0x13c')](_0x4cbe8f[_0x6a7e('0x3c')],_0x4cbe8f[_0x6a7e('0x13d')],_0x4cbe8f[_0x6a7e('0x3d')]);};AGIVertices['prototype'][_0x6a7e('0x13e')]=function(_0x1b4c41){logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x13f'),_0x1b4c41[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x1b4c41['condition'])){return this[_0x6a7e('0x10')]['error'](_0x1b4c41,'no\x20condition\x20configured');}try{var _0x4d348b=eval(_0x1b4c41[_0x6a7e('0x140')])?_0x6a7e('0x141'):_0x6a7e('0x142');this['channel']['noop'](util['format'](_0x6a7e('0x143'),_0x1b4c41['condition'],_0x4d348b));return{'code':0xc8,'result':_0x4d348b};}catch(_0x4f440c){return{'code':0xc8,'result':_0x6a7e('0x142')};}};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x144')]=function(_0x558157){logger[_0x6a7e('0x2a')](util['format']('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x558157['label']));if(!this[_0x6a7e('0x84')](_0x558157[_0x6a7e('0x145')])){return this['channel'][_0x6a7e('0x30')](_0x558157,_0x6a7e('0x146'));}var _0x48f9b6=this[_0x6a7e('0x147')][_0x6a7e('0x6f')](this,_0x558157[_0x6a7e('0x145')]);if(!_0x48f9b6){return this['channel']['error'](_0x558157,_0x6a7e('0x148'));}for(var _0x1356b4=0x0;_0x1356b4<_0x48f9b6[_0x6a7e('0x9a')];_0x1356b4+=0x1){var _0x1235ec=this['channel'][_0x6a7e('0x113')](util['format']('IFTIME(%s?true:false)',_0x48f9b6[_0x1356b4]));if(_0x1235ec[_0x6a7e('0xa8')]===-0x1){return _0x1235ec;}logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x149'),_0x48f9b6[_0x1356b4],_0x1235ec[_0x6a7e('0xa0')]));if(_0x1235ec['extra']===_0x6a7e('0x141')){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x149'),_0x48f9b6[_0x1356b4],_0x6a7e('0x141')));this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')]('IFTIME\x20%s\x20%s',_0x48f9b6[_0x1356b4],_0x6a7e('0x141')));return{'code':0xc8,'result':_0x6a7e('0x141')};}else{logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')]('IFTIME\x20%s\x20%s',_0x48f9b6[_0x1356b4],_0x6a7e('0x142')));this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util['format'](_0x6a7e('0x149'),_0x48f9b6[_0x1356b4],_0x6a7e('0x142')));}}return{'code':0xc8,'result':_0x6a7e('0x142')};};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x14a')]=function(_0xd6b47a){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x14b'),_0xd6b47a[_0x6a7e('0xa6')]));return this['channel'][_0x6a7e('0x14a')]();};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x14c')]=function(_0x459cf5){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x14d'),_0x459cf5[_0x6a7e('0xa6')]));if(!this['isConfigured'](_0x459cf5[_0x6a7e('0x7a')])){return this[_0x6a7e('0x10')]['noop']('no\x20key\x20configured');}var _0xf94e9d=_0x6a7e('0x135');var _0x15ae8b=util[_0x6a7e('0x51')]('%s/recordings/%s',FILES_PATH,rs[_0x6a7e('0x117')](0x4));var _0x23e33b=util['format']('%s.%s',_0x15ae8b,_0xf94e9d);var _0x2db8d7=!![];if(_0x459cf5[_0x6a7e('0x129')]===_0x6a7e('0x12a')){_0x2db8d7=![];}var _0x1a4516=this['channel'][_0x6a7e('0x12b')](_0x15ae8b,_0xf94e9d,_0x459cf5[_0x6a7e('0x12c')],_0x459cf5[_0x6a7e('0x66')],undefined,_0x2db8d7);if(_0x1a4516[_0x6a7e('0xa8')]!==-0x1){this['channel'][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x14e'),_0x23e33b));var _0x180bb1=this[_0x6a7e('0x82')]['sync'](this,_0x459cf5,_0x23e33b);if(_0x180bb1){for(var _0xdcadc0 in _0x180bb1){if(_0x180bb1[_0x6a7e('0x96')](_0xdcadc0)){this[_0x6a7e('0x10')][_0x6a7e('0x9e')](util[_0x6a7e('0x51')](_0x6a7e('0x14f'),_0xdcadc0[_0x6a7e('0x6b')]()),_0x180bb1[_0xdcadc0]);}}return this['channel']['noop'](util[_0x6a7e('0x51')](_0x6a7e('0x150'),JSON[_0x6a7e('0x73')](_0x180bb1)));}}return _0x1a4516;};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x151')]=function(_0x3cef12){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x3cef12[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x3cef12[_0x6a7e('0x7a')])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')]('no\x20key\x20configured');}if(!this[_0x6a7e('0x84')](_0x3cef12[_0x6a7e('0x5b')])){return this[_0x6a7e('0x10')]['noop']('no\x20text\x20configured');}this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util['format'](_0x6a7e('0x152'),_0x3cef12[_0x6a7e('0x5b')]));var _0x495574=this[_0x6a7e('0x80')][_0x6a7e('0x6f')](this,_0x3cef12);if(_0x495574){this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x14e'),_0x495574));var _0x3d8c3b=this[_0x6a7e('0x10')][_0x6a7e('0x11e')](_0x495574,_0x3cef12[_0x6a7e('0x12c')]);try{fs['unlink'](_0x495574+'.wav');}catch(_0x3e68ef){logger[_0x6a7e('0x30')](_0x3e68ef);}return _0x3d8c3b;}return this[_0x6a7e('0x10')]['error'](_0x3cef12,_0x6a7e('0x153'));};AGIVertices['prototype'][_0x6a7e('0x154')]=function(_0x3fc67a){logger['info'](util['format'](_0x6a7e('0x155'),_0x3fc67a[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x3fc67a[_0x6a7e('0x156')])){return this['channel']['error'](_0x3fc67a,_0x6a7e('0x157'));}logger['info'](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x6a7e('0x10')][_0x6a7e('0x38')],_0x3fc67a['findBy']));var _0x523c62=this[_0x6a7e('0x54')][_0x6a7e('0x6f')](this,_0x3fc67a[_0x6a7e('0x156')]);if(_0x523c62){logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x158'),this[_0x6a7e('0x10')][_0x6a7e('0x38')],_0x3fc67a[_0x6a7e('0x156')]));this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x158'),this['channel'][_0x6a7e('0x38')],_0x3fc67a['findBy']));return{'code':0xc8,'result':_0x6a7e('0x159')};}else{logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x15a'),this[_0x6a7e('0x10')]['callerid'],_0x3fc67a[_0x6a7e('0x156')]));this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x15a'),this[_0x6a7e('0x10')][_0x6a7e('0x38')],_0x3fc67a[_0x6a7e('0x156')]));return{'code':0xc8,'result':_0x6a7e('0x15b')};}};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x15c')]=function(_0x533b28){logger['info'](util[_0x6a7e('0x51')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x533b28[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x533b28['findBy'])){return this[_0x6a7e('0x10')]['error'](_0x533b28,_0x6a7e('0x157'));}logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x15d'),this[_0x6a7e('0x10')][_0x6a7e('0x38')],_0x533b28[_0x6a7e('0x156')]));var _0x238b06=this['agentLogout'][_0x6a7e('0x6f')](this,_0x533b28[_0x6a7e('0x156')]);if(_0x238b06){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x6a7e('0x10')]['callerid'],_0x533b28['findBy']));this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x158'),this[_0x6a7e('0x10')]['callerid'],_0x533b28[_0x6a7e('0x156')]));return{'code':0xc8,'result':'success'};}else{logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x15a'),this[_0x6a7e('0x10')][_0x6a7e('0x38')],_0x533b28[_0x6a7e('0x156')]));this['channel'][_0x6a7e('0xa9')](util['format'](_0x6a7e('0x15a'),this[_0x6a7e('0x10')]['callerid'],_0x533b28[_0x6a7e('0x156')]));return{'code':0xc8,'result':_0x6a7e('0x15b')};}};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x15e')]=function(_0x52f42c){logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0x15f'),_0x52f42c[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x52f42c[_0x6a7e('0x160')])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x52f42c,_0x6a7e('0x161'));}this[_0x6a7e('0x10')]['noop'](util[_0x6a7e('0x51')](_0x6a7e('0x162'),_0x52f42c['operation']));var _0x274e42=eval(_0x52f42c[_0x6a7e('0x160')]);if(!this['isConfigured'](_0x52f42c[_0x6a7e('0xd0')])){return this['channel'][_0x6a7e('0xa9')](_0x6a7e('0xd1'));}var _0x5c0bec=this[_0x6a7e('0x113')]['sync'](this,_0x52f42c[_0x6a7e('0xd0')]);if(!_0x5c0bec){return this['channel'][_0x6a7e('0x30')](_0x52f42c,'no\x20variable\x20found');}if(_[_0x6a7e('0x99')](_0x274e42)){var _0x5b2e22=this;_0x274e42[_0x6a7e('0xd2')](function(_0x660086,_0x9f46aa){_0x5b2e22['channel']['setVariable'](util[_0x6a7e('0x51')](_0x6a7e('0x163'),_0x5c0bec,_0x9f46aa),_0x660086);});return this[_0x6a7e('0x10')]['noop'](util[_0x6a7e('0x51')](_0x6a7e('0x164'),_0x5c0bec));}else{return this[_0x6a7e('0x10')]['setVariable'](_0x5c0bec,_0x274e42);}};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xd')]=function(_0x1540b9){logger['info'](util[_0x6a7e('0x51')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x1540b9['label']));if(_0x1540b9[_0x6a7e('0xa4')]===0x0){return this[_0x6a7e('0xa3')](_0x1540b9);}_0x1540b9[_0x6a7e('0xa4')]-=0x1;if(!this[_0x6a7e('0x84')](_0x1540b9[_0x6a7e('0x10d')])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x1540b9,_0x6a7e('0x10e'));}var _0xe1d6d4=this[_0x6a7e('0x1e')][_0x6a7e('0x6f')](this,_0x1540b9[_0x6a7e('0x10d')]);if(!_0xe1d6d4){return this[_0x6a7e('0x10')]['error'](_0x1540b9,_0x6a7e('0x165'));}var _0x5f02d3=this[_0x6a7e('0x10')][_0x6a7e('0x10f')](_0xe1d6d4,_0x1540b9[_0x6a7e('0x166')],_0x1540b9[_0x6a7e('0x167')]);var _0x4f90f9=_0x5f02d3[_0x6a7e('0xa8')];if(_0x5f02d3[_0x6a7e('0xa8')]===-0x1){this[_0x6a7e('0x35')][_0x6a7e('0x6f')](this,_0x1540b9,'-1');return _0x5f02d3;}else if(_0x5f02d3[_0x6a7e('0xa0')]===_0x6a7e('0x66')){_0x5f02d3[_0x6a7e('0xa8')]=_0x5f02d3['result'][_0x6a7e('0x9a')]>0x0?_0x5f02d3[_0x6a7e('0xa8')]:'t';}else if(_['isEmpty'](_0x5f02d3[_0x6a7e('0xa8')])){_0x5f02d3[_0x6a7e('0xa8')]='#';_0x4f90f9='#';}if(!this[_0x6a7e('0x84')](_0x1540b9[_0x6a7e('0xd0')])){this[_0x6a7e('0x10')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x38e8ff=this[_0x6a7e('0x113')]['sync'](this,_0x1540b9[_0x6a7e('0xd0')]);if(!_0x38e8ff){return this['channel']['error'](_0x1540b9,_0x6a7e('0x114'));}this[_0x6a7e('0x10')][_0x6a7e('0x9e')](_0x38e8ff,_0x4f90f9);}this['createSquareDetailsReport'][_0x6a7e('0x6f')](this,_0x1540b9,_0x4f90f9);return _0x5f02d3;};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0xa9')]=function(_0x548bd0){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x168'),_0x548bd0[_0x6a7e('0xa6')]));return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x548bd0[_0x6a7e('0x169')]||_0x548bd0['label']);};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x16a')]=function(_0x47958c){logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x16b'),_0x47958c['label']));if(!this[_0x6a7e('0x84')](_0x47958c['findBy'])){return this[_0x6a7e('0x10')]['error'](_0x47958c,_0x6a7e('0x157'));}logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x15d'),this[_0x6a7e('0x10')][_0x6a7e('0x38')],_0x47958c[_0x6a7e('0x156')]));var _0xfdb437=this[_0x6a7e('0x4b')][_0x6a7e('0x6f')](this,_0x47958c[_0x6a7e('0x16c')]);var _0x11ddff=this[_0x6a7e('0x4d')][_0x6a7e('0x6f')](this,_0x47958c[_0x6a7e('0x156')],_0xfdb437);if(_0x11ddff){logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0x158'),this['channel']['callerid'],_0x47958c[_0x6a7e('0x156')]));this['channel']['noop'](util[_0x6a7e('0x51')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x6a7e('0x10')]['callerid'],_0x47958c[_0x6a7e('0x156')]));return{'code':0xc8,'result':_0x6a7e('0x159')};}else{logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0x15a'),this[_0x6a7e('0x10')][_0x6a7e('0x38')],_0x47958c['findBy']));this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x158'),this['channel'][_0x6a7e('0x38')],_0x47958c[_0x6a7e('0x156')]));return{'code':0xc8,'result':_0x6a7e('0x15b')};}};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x16d')]=function(_0x45daff){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x16e'),_0x45daff[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x45daff[_0x6a7e('0x10d')])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x45daff,_0x6a7e('0x10e'));}var _0x4897fd=this['getSound'][_0x6a7e('0x6f')](this,_0x45daff['file_id']);if(!_0x4897fd){return this['channel'][_0x6a7e('0x30')](_0x45daff,'no\x20file\x20audio\x20found');}var _0x5ed6fb=this[_0x6a7e('0x10')]['exec'](_0x6a7e('0x16f'),[_0x4897fd,_0x45daff[_0x6a7e('0x109')]]);if(_0x5ed6fb[_0x6a7e('0xa8')]===-0x1){return _0x5ed6fb;}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0xc2'),_0x6a7e('0x16f'),_0x4897fd));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x170')]=function(_0xeb7224){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x171'),_0xeb7224[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0xeb7224[_0x6a7e('0x172')])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0xeb7224,_0x6a7e('0x173'));}var _0x8e2df0='';var _0x58de25=parseInt(_0xeb7224[_0x6a7e('0x172')],0xa);if(isNaN(_0x58de25)){_0x8e2df0=_0xeb7224[_0x6a7e('0x172')];}else{_0x8e2df0=this[_0x6a7e('0x16')][_0x6a7e('0x6f')](this,_0xeb7224[_0x6a7e('0x172')]);if(!_0x8e2df0){return this['channel'][_0x6a7e('0x30')](_0xeb7224,'no\x20queue\x20found');}}var _0x1ee507='';if(this['isConfigured'](_0xeb7224[_0x6a7e('0x10d')])){var _0x2dadba=this[_0x6a7e('0x1e')][_0x6a7e('0x6f')](this,_0xeb7224[_0x6a7e('0x10d')]);if(_0x2dadba){_0x1ee507=_0x2dadba;}}this[_0x6a7e('0x35')]['sync'](this,_0xeb7224,_0x8e2df0);if(_0xeb7224[_0x6a7e('0x109')][_0x6a7e('0x174')]('x')<0x0){_0xeb7224[_0x6a7e('0x109')]+='x';}if(_0xeb7224['opts'][_0x6a7e('0x174')]('X')<0x0){_0xeb7224[_0x6a7e('0x109')]+='X';}this[_0x6a7e('0x10')][_0x6a7e('0x9e')](_0x6a7e('0x175'),_0x8e2df0?_0x8e2df0[_0x6a7e('0x176')]():'');var _0x169a5c=this[_0x6a7e('0x10')]['exec'](_0x6a7e('0x177'),[_0x8e2df0,_0xeb7224[_0x6a7e('0x109')],_0xeb7224[_0x6a7e('0x64')],_0x1ee507,_0xeb7224[_0x6a7e('0x66')],_0xeb7224[_0x6a7e('0x8')],_0xeb7224[_0x6a7e('0x178')],_0xeb7224[_0x6a7e('0x179')],'',_0xeb7224[_0x6a7e('0x17a')]]);if(_0x169a5c[_0x6a7e('0xa8')]===-0x1){return _0x169a5c;}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0xc2'),_0x6a7e('0x177'),_0x8e2df0));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x17b')]=function(_0x48c4f0){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x17c'),_0x48c4f0[_0x6a7e('0xa6')]));var _0x2fc87b=_0x48c4f0[_0x6a7e('0x17d')]||_0x6a7e('0x135');var _0x1c4ed5=util['format'](_0x6a7e('0x17e'),this[_0x6a7e('0x10')]['uniqueid'],rs[_0x6a7e('0x117')](0x5));var _0x353256=util[_0x6a7e('0x51')](_0x6a7e('0x17f'),FILES_PATH,_0x1c4ed5,_0x2fc87b);var _0x4cbb6a=util[_0x6a7e('0x51')]('%s/recordings/%s',FILES_PATH,_0x1c4ed5);this[_0x6a7e('0x39')][_0x6a7e('0x6f')](this,_0x48c4f0,_0x1c4ed5,_0x353256);this[_0x6a7e('0x10')][_0x6a7e('0x9e')](_0x6a7e('0x180'),_0x1c4ed5);logger['info'](_0x6a7e('0x181'),_0x4cbb6a,_0x2fc87b,_0x48c4f0[_0x6a7e('0x182')],_0x48c4f0[_0x6a7e('0x66')]);return this[_0x6a7e('0x10')][_0x6a7e('0x12b')](_0x4cbb6a,_0x2fc87b,_0x48c4f0['escape_digits'],_0x48c4f0[_0x6a7e('0x66')],undefined,!![]);};AGIVertices[_0x6a7e('0x1c')]['restapi']=function(_0x3dc183){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x183'),_0x3dc183[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x3dc183[_0x6a7e('0x64')])){return this['channel'][_0x6a7e('0xa9')](_0x6a7e('0x184'));}var _0x5e35b4=this[_0x6a7e('0x63')][_0x6a7e('0x6f')](this,_0x3dc183);logger['info'](util[_0x6a7e('0x51')]('Response:',util[_0x6a7e('0x185')](_0x5e35b4,{'showHidden':![],'depth':null})));if(!this[_0x6a7e('0x84')](_0x3dc183['variable_id'])){return this['channel'][_0x6a7e('0xa9')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x2bbe3a=this[_0x6a7e('0x113')][_0x6a7e('0x6f')](this,_0x3dc183[_0x6a7e('0xd0')]);if(!_0x2bbe3a){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x3dc183,_0x6a7e('0x114'));}this[_0x6a7e('0x10')][_0x6a7e('0x9e')](util['format'](_0x6a7e('0x186'),_0x2bbe3a),_0x5e35b4['statusCode']?_0x5e35b4['statusCode']:_0x6a7e('0x187'));this[_0x6a7e('0x10')][_0x6a7e('0x9e')](util[_0x6a7e('0x51')]('%s_STATUS_MESSAGE',_0x2bbe3a),_0x5e35b4[_0x6a7e('0x75')]?_0x5e35b4['statusMessage']:'OK');if(_0x5e35b4[_0x6a7e('0x6c')]){try{this[_0x6a7e('0x9c')](_0x5e35b4[_0x6a7e('0x6c')],_0x2bbe3a);}catch(_0x5b8217){logger[_0x6a7e('0x30')](util[_0x6a7e('0x51')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x2bbe3a));}}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x188'),_0x2bbe3a));};AGIVertices['prototype'][_0x6a7e('0x189')]=function(_0x201e5c){logger['info'](util[_0x6a7e('0x51')]('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x201e5c[_0x6a7e('0xa6')]));return this[_0x6a7e('0x10')][_0x6a7e('0x18a')](_0x201e5c[_0x6a7e('0x18b')][_0x6a7e('0x57')](/\s+/g,''),_0x201e5c['escape_digits']);};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x18c')]=function(_0x283fbc){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x18d'),_0x283fbc[_0x6a7e('0xa6')]));return this['channel'][_0x6a7e('0x18e')](_0x283fbc[_0x6a7e('0x67')]['replace'](/\s+/g,''),_0x283fbc[_0x6a7e('0x182')]);};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x18f')]=function(_0x29dc24){logger[_0x6a7e('0x2a')](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x29dc24[_0x6a7e('0xa6')]));return this[_0x6a7e('0x10')]['sayPhonetic'](_0x29dc24[_0x6a7e('0x5b')],_0x29dc24[_0x6a7e('0x182')]);};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x190')]=function(_0x24cd52){logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0x191'),_0x24cd52['label']));if(!this[_0x6a7e('0x84')](_0x24cd52[_0x6a7e('0x192')])){return this[_0x6a7e('0x10')]['noop']('no\x20mail\x20account\x20configured');}var _0x5af9d7=this[_0x6a7e('0x21')]['sync'](this,_0x24cd52[_0x6a7e('0x192')]);if(!_0x5af9d7||!_0x5af9d7[_0x6a7e('0x193')]){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x24cd52,_0x6a7e('0x194'));}var _0x54bfc4={'from':util[_0x6a7e('0x51')](_0x6a7e('0x195'),_0x5af9d7[_0x6a7e('0x14')],_0x5af9d7[_0x6a7e('0x196')]||_0x5af9d7[_0x6a7e('0x193')]['user']),'to':_0x24cd52['to']||'','cc':_0x24cd52['cc']||'','bcc':_0x24cd52[_0x6a7e('0x197')]||'','subject':_0x24cd52[_0x6a7e('0x198')],'html':_0x24cd52['text'],'text':_0x24cd52[_0x6a7e('0x5b')]};if(this['isConfigured'](_0x24cd52['template_id'])){}logger[_0x6a7e('0xd7')]('sendMail\x20message',JSON[_0x6a7e('0x73')](_0x54bfc4));this[_0x6a7e('0x35')][_0x6a7e('0x6f')](this,_0x24cd52,_0x24cd52[_0x6a7e('0x192')]);this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x199'),_0x5af9d7[_0x6a7e('0x14')]));this['sendMailMessage'][_0x6a7e('0x6f')](this,_0x5af9d7['smtpOptions'],_0x54bfc4);return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0x19a'));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x19b')]=function(_0x31eaef){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x19c'),_0x31eaef[_0x6a7e('0xa6')]));return this[_0x6a7e('0x10')][_0x6a7e('0xa9')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x19d')]=function(_0x4b8dbc){logger[_0x6a7e('0x2a')](util['format']('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0x4b8dbc[_0x6a7e('0xa6')]));if(!this['isConfigured'](_0x4b8dbc[_0x6a7e('0x19e')])){return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0x19f'));}var _0x124700=this['getSmsAccount'][_0x6a7e('0x6f')](this,_0x4b8dbc[_0x6a7e('0x19e')]);if(!_0x124700){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x4b8dbc,_0x6a7e('0x1a0'));}var _0x4604df={'body':_0x4b8dbc[_0x6a7e('0x1a1')],'phone':_0x4b8dbc['to']||'','SmsAccountId':_0x124700['id']};logger[_0x6a7e('0xd7')](_0x6a7e('0x1a2'),JSON[_0x6a7e('0x73')](_0x4604df));this[_0x6a7e('0x35')][_0x6a7e('0x6f')](this,_0x4b8dbc,_0x4b8dbc[_0x6a7e('0x19e')]);this['channel'][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x1a3'),_0x124700[_0x6a7e('0x14')]));this[_0x6a7e('0x34')][_0x6a7e('0x6f')](this,_0x4604df);return this[_0x6a7e('0x10')][_0x6a7e('0xa9')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype'][_0x6a7e('0x1a4')]=function(_0x327604){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x1a5'),_0x327604[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x327604[_0x6a7e('0xd0')])){return this['channel'][_0x6a7e('0x30')](_0x327604,_0x6a7e('0x1a6'));}var _0x5a5f76=this['getVariable']['sync'](this,_0x327604['variable_id']);if(!_0x5a5f76){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x327604,_0x6a7e('0x114'));}return this[_0x6a7e('0x10')][_0x6a7e('0x9e')](_0x5a5f76,_0x327604[_0x6a7e('0x1a7')]);};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x1a8')]=function(_0x20c355){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x1a9'),_0x20c355[_0x6a7e('0xa6')]));this[_0x6a7e('0x10')]['noop'](_0x6a7e('0x1aa'));var _0x4c8f5e=this[_0x6a7e('0x10')][_0x6a7e('0x113')](_0x6a7e('0x1ab'));if(!_[_0x6a7e('0x42')](_0x4c8f5e['extra'])){this[_0x6a7e('0x10')]['uniqueid']=_0x4c8f5e[_0x6a7e('0xa0')];}if(_0x20c355[_0x6a7e('0xb7')]==='yes'){this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0x1ac'));return this[_0x6a7e('0x10')][_0x6a7e('0xb7')]();}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](_0x6a7e('0x1ad'));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x1ae')]=function(_0x2f63de){logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0x1af'),_0x2f63de['label']));if(!this[_0x6a7e('0x84')](_0x2f63de[_0x6a7e('0x1b0')])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x2f63de,_0x6a7e('0x1b1'));}var _0x4782b9=this['getSquareProject'][_0x6a7e('0x6f')](this,_0x2f63de['project_id']);if(!this[_0x6a7e('0x84')](_0x4782b9)){return this[_0x6a7e('0x10')]['error'](_0x2f63de,util[_0x6a7e('0x51')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x2f63de['project_id']));}if(_0x4782b9===this['channel'][_0x6a7e('0x37')]){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x2f63de,_0x6a7e('0x1b2'));}this[_0x6a7e('0x35')][_0x6a7e('0x6f')](this,_0x2f63de,_0x4782b9);var _0x177433=this[_0x6a7e('0x10')][_0x6a7e('0x55')](_0x6a7e('0x1b3'),util[_0x6a7e('0x51')](_0x6a7e('0x1b4'),config[_0x6a7e('0x8')][_0x6a7e('0x1b5')]||_0x6a7e('0x1b6'),_0x4782b9,this[_0x6a7e('0x10')]['arg_1']));if(_0x177433[_0x6a7e('0xa8')]===-0x1){return _0x177433;}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util['format'](_0x6a7e('0xc2'),'AGI',_0x4782b9));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x1b7')]=function(_0x27b369){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')]('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x27b369[_0x6a7e('0xa6')]));var _0x7156a6=this[_0x6a7e('0x1b8')][_0x6a7e('0x6f')](this,_0x27b369[_0x6a7e('0x1b9')]);this[_0x6a7e('0x35')][_0x6a7e('0x6f')](this,_0x27b369,_0x27b369[_0x6a7e('0x1b9')]);if(this[_0x6a7e('0x84')](_0x27b369[_0x6a7e('0xd0')])){var _0x1217d9=this[_0x6a7e('0x113')][_0x6a7e('0x6f')](this,_0x27b369[_0x6a7e('0xd0')]);if(_0x1217d9){this[_0x6a7e('0x10')][_0x6a7e('0x9e')](_0x1217d9,_0x7156a6);return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x1ba'),_0x27b369[_0x6a7e('0x1b9')],_0x1217d9));}}return this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')](_0x6a7e('0x1bb'),_0x27b369['command']));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x1bc')]=function(_0x80a549){logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x1bd'),_0x80a549[_0x6a7e('0xa6')]));_0x80a549[_0x6a7e('0x5b')]=_0x80a549[_0x6a7e('0x5b')][_0x6a7e('0x57')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x6a7e('0x84')](_0x80a549['apiKey'])){return this['channel'][_0x6a7e('0xa9')](_0x6a7e('0x1be'));}if(!this['isConfigured'](_0x80a549[_0x6a7e('0x5b')])){return this['channel'][_0x6a7e('0xa9')](_0x6a7e('0xa7'));}this[_0x6a7e('0x10')]['noop'](util[_0x6a7e('0x51')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x80a549[_0x6a7e('0x5b')]));var _0xcf8e76=this[_0x6a7e('0x58')]['sync'](this,_0x80a549);if(_0xcf8e76){this[_0x6a7e('0x10')][_0x6a7e('0xa9')](util[_0x6a7e('0x51')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0xcf8e76));var _0x5c4638=this[_0x6a7e('0x10')]['streamFile'](_0xcf8e76);try{fs[_0x6a7e('0xfc')](_0xcf8e76+_0x6a7e('0xfd'));}catch(_0x26fd71){logger[_0x6a7e('0x30')](_0x26fd71);}return _0x5c4638;}return this['channel'][_0x6a7e('0x30')](_0x80a549,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x1bf')]=function(_0x3b5aa2){logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x1c0'),_0x3b5aa2['label']));_0x3b5aa2[_0x6a7e('0x5b')]=_0x3b5aa2[_0x6a7e('0x5b')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x6a7e('0x84')](_0x3b5aa2[_0x6a7e('0x5b')])){return this['channel'][_0x6a7e('0xa9')](_0x6a7e('0xa7'));}this[_0x6a7e('0x10')]['noop'](util[_0x6a7e('0x51')](_0x6a7e('0x1c1'),_0x3b5aa2[_0x6a7e('0x5b')]));var _0x4afcd0=this[_0x6a7e('0x61')][_0x6a7e('0x6f')](this,_0x3b5aa2);if(_0x4afcd0){this['channel']['noop'](util[_0x6a7e('0x51')]('Google\x20TTS\x20%s\x20file\x20created',_0x4afcd0));var _0x27fd60=this[_0x6a7e('0x10')][_0x6a7e('0x11e')](_0x4afcd0);try{fs[_0x6a7e('0xfc')](_0x4afcd0+_0x6a7e('0xfd'));}catch(_0x3c5ff8){logger[_0x6a7e('0x30')](_0x3c5ff8);}return _0x27fd60;}return this['channel'][_0x6a7e('0x30')](_0x3b5aa2,_0x6a7e('0x1c2'));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x1c3')]=function(_0x5111){logger['info'](util['format'](_0x6a7e('0x1c4'),_0x5111[_0x6a7e('0xa6')]));if(!this[_0x6a7e('0x84')](_0x5111[_0x6a7e('0x156')])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0x5111,_0x6a7e('0x157'));}logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x15d'),this['channel'][_0x6a7e('0x38')],_0x5111[_0x6a7e('0x156')]));var _0x5736a4=this['agentUnpause'][_0x6a7e('0x6f')](this,_0x5111[_0x6a7e('0x156')]);if(_0x5736a4){logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0x158'),this['channel'][_0x6a7e('0x38')],_0x5111['findBy']));this['channel'][_0x6a7e('0xa9')](util['format'](_0x6a7e('0x158'),this['channel'][_0x6a7e('0x38')],_0x5111[_0x6a7e('0x156')]));return{'code':0xc8,'result':_0x6a7e('0x159')};}else{logger[_0x6a7e('0x2a')](util['format'](_0x6a7e('0x15a'),this[_0x6a7e('0x10')][_0x6a7e('0x38')],_0x5111['findBy']));this[_0x6a7e('0x10')]['noop'](util[_0x6a7e('0x51')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x6a7e('0x38')],_0x5111[_0x6a7e('0x156')]));return{'code':0xc8,'result':_0x6a7e('0x15b')};}};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x1c5')]=function(_0x1d6691){logger[_0x6a7e('0x2a')](util[_0x6a7e('0x51')](_0x6a7e('0x1c6'),_0x1d6691[_0x6a7e('0xa6')]));var _0x2517d8=this[_0x6a7e('0x10')]['exec'](_0x6a7e('0x1c7'),[_0x1d6691[_0x6a7e('0x1c8')],_0x1d6691[_0x6a7e('0x78')]]);if(_0x2517d8[_0x6a7e('0xa8')]===-0x1){return _0x2517d8;}return this['channel'][_0x6a7e('0xa9')](util['format']('Executed\x20command\x20%s\x20%s','VOICEMAIL',_0x1d6691['mailbox']));};AGIVertices[_0x6a7e('0x1c')][_0x6a7e('0x1c9')]=function(_0xfe7599){logger['info'](util[_0x6a7e('0x51')](_0x6a7e('0x1ca'),_0xfe7599[_0x6a7e('0xa6')]));if(!this['isConfigured'](_0xfe7599['variable_id'])){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0xfe7599,_0x6a7e('0x1a6'));}var _0x5e945d=this[_0x6a7e('0x113')]['sync'](this,_0xfe7599[_0x6a7e('0xd0')]);if(!_0x5e945d){return this[_0x6a7e('0x10')][_0x6a7e('0x30')](_0xfe7599,'no\x20variable\x20found');}var _0x591657=this['channel'][_0x6a7e('0x113')](_0x5e945d);return{'code':0xc8,'result':_0x591657[_0x6a7e('0xa0')]?_0x591657[_0x6a7e('0xa0')]:'-'};};String[_0x6a7e('0x1c')][_0x6a7e('0x1cb')]=function(_0x12599a,_0x52d8b3){return this[_0x6a7e('0x9f')](_0x12599a)[_0x6a7e('0x1cc')](_0x52d8b3);};module['exports']=AGIVertices;
\ No newline at end of file
+var _0x4d9e=['agentUnpause','agentLogout','%s/%s@from-sip/n','LOCAL','shellCommand','exec','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','ssmlGender','audioEncoding','MP3','googleTTS','google_tts_language','url','method','number','timeout','includes','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','en-US','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','aws_text_type','awsLex','aws_lex_region','googleASR','google_asr_language','tildeASR','appid','clear','clone','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','isArray','isString','saveRestApiResult','%s.%s','length','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','retry','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','grammar','MRCPRecog','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','answer','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','delay','minutes','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Executed\x20command\x20MRCPSynth\x20%s','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','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','no\x20key\x20configured','bot','googleDialogflow','speech','out','dialogflow','Dialogflow\x20Result\x20%s','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','private_key','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','dialogflowV2','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','sesteknda','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','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','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','file_id','no\x20file\x20audio\x20selected','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','.wav','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws_bot_name','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20is\x20unreachable','googleasr','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','appsecret','NOBEEP','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','false','gotoiftime','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','beep','ispeech\x20%s\x20file\x20created','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','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','operation','no\x20operation\x20configured','no\x20variable\x20found','%s[%s]','Enter\x20in\x20MENU\x20(%s)\x20block','getSound','no\x20file\x20audio\x20found','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','pause_id','agentPause','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','QUEUE','macro','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','Response:','inspect','200','%s_STATUS_MESSAGE','variable\x20%s\x20set','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','subject','template_id','sendMail\x20message','account_id','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','XMCS-UNIQUEID','yes','Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','no\x20subproject\x20selected','getSquareProject','project_id','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','host','127.0.0.1','system','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','util','odbc','moment','request-promise','../../config/logger','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getsecretdigits','channel','rpc','prototype','getVariable','getVariableById','then','getVoiceQueueById','name','catch','getSquareOdbc','dsn','getUser','getUserById','getTrunkById','getSoundPath','getMailAccount','getMailAccountById','sendMailMessage','mailRpc','getIntervals','IntervalId','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','open','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','callback_','random','lastName','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','agent','isNil'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x5e1112,_0x1e1977){_0x5e1112=_0x5e1112-0x0;var _0x2e4156=_0x4d9e[_0x5e1112];return _0x2e4156;};'use strict';var fs=require('fs');var util=require(_0xe4d9('0x0'));var _=require('lodash');var sh=require('shelljs');var odbc=require(_0xe4d9('0x1'))();var rs=require('randomstring');var moment=require(_0xe4d9('0x2'));var Mustache=require('mustache');var rp=require(_0xe4d9('0x3'));var logger=require(_0xe4d9('0x4'))('agi');var config=require(_0xe4d9('0x5'));var scripts=require(_0xe4d9('0x6'));var FILES_PATH=_0xe4d9('0x7');var recursiveMapAttributes=[_0xe4d9('0x8'),_0xe4d9('0x9')];var verticesWithRetry=[_0xe4d9('0xa'),'getdigits',_0xe4d9('0xb')];var AGIVertices=function(_0x1d3810,_0x2a7eee,_0x18ab9d){this[_0xe4d9('0xc')]=_0x1d3810;this[_0xe4d9('0xd')]=_0x2a7eee;this['mailRpc']=_0x18ab9d;};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xf')]=function(_0x32eb8a,_0x3575ac){this[_0xe4d9('0xd')][_0xe4d9('0x10')](_0x32eb8a)[_0xe4d9('0x11')](function(_0x4a4107){_0x3575ac(null,_0x4a4107?_0x4a4107['name']:![]);})['catch'](function(_0x4e0d15){_0x3575ac(_0x4e0d15);});};AGIVertices['prototype']['getVoiceQueue']=function(_0x4a6c60,_0x5649e1){this[_0xe4d9('0xd')][_0xe4d9('0x12')](_0x4a6c60)[_0xe4d9('0x11')](function(_0x4bfbd5){_0x5649e1(null,_0x4bfbd5?_0x4bfbd5[_0xe4d9('0x13')]:![]);})[_0xe4d9('0x14')](function(_0xe4f133){_0x5649e1(_0xe4f133);});};AGIVertices[_0xe4d9('0xe')]['getSquareProject']=function(_0x331ef3,_0x35cbc2){this[_0xe4d9('0xd')]['getSquareProjectById'](_0x331ef3)['then'](function(_0x7abb80){_0x35cbc2(null,_0x7abb80?_0x7abb80[_0xe4d9('0x13')]:![]);})['catch'](function(_0x2e1490){_0x35cbc2(_0x2e1490);});};AGIVertices['prototype'][_0xe4d9('0x15')]=function(_0x19f8ce,_0x1ea096){this[_0xe4d9('0xd')]['getSquareOdbcById'](_0x19f8ce)[_0xe4d9('0x11')](function(_0x3c2017){_0x1ea096(null,_0x3c2017?_0x3c2017[_0xe4d9('0x16')]:![]);})[_0xe4d9('0x14')](function(_0x2c6b89){_0x1ea096(_0x2c6b89);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x17')]=function(_0x29e0c9,_0x562bab){this['rpc'][_0xe4d9('0x18')](_0x29e0c9)[_0xe4d9('0x11')](function(_0x4f2143){_0x562bab(null,_0x4f2143?_0x4f2143[_0xe4d9('0x13')]:![]);})['catch'](function(_0x14f3d7){_0x562bab(_0x14f3d7);});};AGIVertices[_0xe4d9('0xe')]['getTrunk']=function(_0xfacee3,_0x32e7da){this['rpc'][_0xe4d9('0x19')](_0xfacee3)[_0xe4d9('0x11')](function(_0x36444c){_0x32e7da(null,_0x36444c?_0x36444c['name']:![]);})['catch'](function(_0x42e6a0){_0x32e7da(_0x42e6a0);});};AGIVertices[_0xe4d9('0xe')]['getSound']=function(_0x5dddd2,_0x4954b5){var _0x529e2b=this;this[_0xe4d9('0xd')]['getSoundById'](_0x5dddd2)[_0xe4d9('0x11')](function(_0x1f3d90){_0x4954b5(null,_0x1f3d90?_0x529e2b[_0xe4d9('0x1a')](_0x1f3d90['save_name']):![]);})[_0xe4d9('0x14')](function(_0x2a0d1f){_0x4954b5(_0x2a0d1f);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1b')]=function(_0x34bdd9,_0x1904d1){this[_0xe4d9('0xd')][_0xe4d9('0x1c')](_0x34bdd9)[_0xe4d9('0x11')](function(_0x3e6ea7){_0x1904d1(null,_0x3e6ea7?_0x3e6ea7:![]);})[_0xe4d9('0x14')](function(_0x29a121){_0x1904d1(_0x29a121);});};AGIVertices['prototype'][_0xe4d9('0x1d')]=function(_0x349be3,_0x2b716b,_0x3721a0){this[_0xe4d9('0x1e')][_0xe4d9('0x1d')](_0x349be3,_0x2b716b)['then'](function(){_0x3721a0(null);})['catch'](function(_0x4d7f17){_0x3721a0(_0x4d7f17);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1f')]=function(_0x9f1acf,_0x4f8abf){this['rpc']['getIntervalById'](_0x9f1acf)['then'](function(_0x2740e0){if(_0x2740e0){if(_0x2740e0[_0xe4d9('0x20')]){_0x4f8abf(null,[_0x2740e0['interval']]);}else{_0x4f8abf(null,_[_0xe4d9('0x21')](_0x2740e0[_0xe4d9('0x22')],'interval'));}}else{_0x4f8abf(null,![]);}})[_0xe4d9('0x14')](function(_0x20e78a){_0x4f8abf(_0x20e78a);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1a')]=function(_0x3321f8){return util[_0xe4d9('0x23')](_0xe4d9('0x24'),FILES_PATH,_0x3321f8);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x25')]=function(_0x20cc89,_0x179618,_0x517f24){odbc[_0xe4d9('0x26')](_0x20cc89,function(_0x34f72f){if(_0x34f72f){logger['error'](_0xe4d9('0x27'),_0x34f72f);_0x517f24(_0x34f72f);}else{logger[_0xe4d9('0x28')](_0xe4d9('0x29'));odbc[_0xe4d9('0x2a')](_0x179618,function(_0x26a721,_0x331161){if(_0x26a721){logger[_0xe4d9('0x28')](_0xe4d9('0x2b'),_0x179618);_0x517f24(_0x26a721);}else{logger[_0xe4d9('0x28')]('Query\x20executed\x20correctly\x20%s',_0x179618);odbc['close'](function(_0x5f5bc5){if(_0x5f5bc5){logger[_0xe4d9('0x2c')](_0xe4d9('0x2d'),_0x5f5bc5);}_0x517f24(null,_0x331161);});}});}});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x2e')]=function(_0xd0e919,_0x324679){this[_0xe4d9('0xd')]['getSmsAccountById'](_0xd0e919)['then'](function(_0x51824f){_0x324679(null,_0x51824f?_0x51824f:![]);})[_0xe4d9('0x14')](function(_0x19fdb0){_0x324679(_0x19fdb0);});};AGIVertices['prototype'][_0xe4d9('0x2f')]=function(_0x43a5e6,_0x3544ea){this[_0xe4d9('0xd')]['createSmsMessage'](_0x43a5e6)[_0xe4d9('0x11')](function(_0x348667){_0x3544ea(null,_0x348667);})[_0xe4d9('0x14')](function(_0x17de1e){_0x3544ea(_0x17de1e);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x30')]=function(_0x25b1f0,_0x3e9653,_0x86bc71){this[_0xe4d9('0xd')][_0xe4d9('0x30')]({'uniqueid':this['channel'][_0xe4d9('0x31')],'node':_0x25b1f0[_0xe4d9('0x32')],'application':_0x25b1f0[_0xe4d9('0x33')],'data':_0x3e9653||null,'project_name':this[_0xe4d9('0xc')][_0xe4d9('0x34')],'callerid':this['channel'][_0xe4d9('0x35')]})[_0xe4d9('0x11')](function(_0x658510){if(_0x86bc71){_0x86bc71(null,_0x658510);}})[_0xe4d9('0x14')](function(_0xc107fc){if(_0x86bc71){_0x86bc71(_0xc107fc);}});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x36')]=function(_0x11971a,_0x42744d,_0x5a09fa,_0x5510e7){this[_0xe4d9('0xd')][_0xe4d9('0x36')]({'uniqueid':this[_0xe4d9('0xc')]['uniqueid'],'callerid':this[_0xe4d9('0xc')][_0xe4d9('0x35')],'calleridname':this[_0xe4d9('0xc')][_0xe4d9('0x37')],'context':this[_0xe4d9('0xc')][_0xe4d9('0x38')],'extension':this[_0xe4d9('0xc')]['extension'],'priority':this[_0xe4d9('0xc')][_0xe4d9('0x39')],'accountcode':this[_0xe4d9('0xc')][_0xe4d9('0x3a')],'dnid':this[_0xe4d9('0xc')][_0xe4d9('0x3b')],'projectName':this['channel'][_0xe4d9('0x34')],'saveName':_0x42744d,'filename':_0x11971a[_0xe4d9('0x3c')]||_0x42744d,'savePath':_0x5a09fa})[_0xe4d9('0x11')](function(_0x38468c){_0x5510e7(null,_0x38468c);})[_0xe4d9('0x14')](function(_0x19ae72){_0x5510e7(_0x19ae72);});};AGIVertices['prototype'][_0xe4d9('0x3d')]=function(_0x29e038,_0x53e7c4,_0x3eccd4,_0x4c913d,_0x17b46b){this[_0xe4d9('0xd')]['createSquareMessage']({'uniqueid':this[_0xe4d9('0xc')]['uniqueid'],'body':_0x29e038,'direction':_0x53e7c4,'providerName':_0x3eccd4,'providerResponse':_0x4c913d})[_0xe4d9('0x11')](function(_0x298139){if(_0x17b46b){_0x17b46b(null,_0x298139);}})[_0xe4d9('0x14')](function(_0x48b9fa){if(_0x17b46b){_0x17b46b(_0x48b9fa);}});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x3e')]=function(_0x4d5ff9,_0x11ca7d){this[_0xe4d9('0xd')][_0xe4d9('0x3e')]({'firstName':_[_0xe4d9('0x3f')](_0x4d5ff9['name'])||_['isNil'](_0x4d5ff9[_0xe4d9('0x13')])?_0xe4d9('0x40')+Math[_0xe4d9('0x41')]():_0x4d5ff9[_0xe4d9('0x13')],'lastName':_[_0xe4d9('0x3f')](_0x4d5ff9[_0xe4d9('0x42')])||_['isNil'](_0x4d5ff9['lastName'])?null:_0x4d5ff9[_0xe4d9('0x42')],'phone':_0x4d5ff9[_0xe4d9('0x43')],'ListId':_0x4d5ff9[_0xe4d9('0x44')],'scheduledat':_0x4d5ff9[_0xe4d9('0x45')],'callbackUniqueid':this[_0xe4d9('0xc')][_0xe4d9('0x31')],'tags':'callback','description':_0xe4d9('0x46')+_0x4d5ff9[_0xe4d9('0x45')][_0xe4d9('0x47')](),'priority':_0x4d5ff9['callback_priority']})[_0xe4d9('0x11')](function(_0x2b6d70){_0x11ca7d(null,_0x2b6d70);})[_0xe4d9('0x14')](function(_0x5ec4bc){_0x11ca7d(_0x5ec4bc);});};AGIVertices[_0xe4d9('0xe')]['getPause']=function(_0x29ee71,_0x13b008){this[_0xe4d9('0xd')]['getPauseById'](_0x29ee71)['then'](function(_0x5bd06b){_0x13b008(null,_0x5bd06b?_0x5bd06b[_0xe4d9('0x13')]:![]);})['catch'](function(_0x29c51b){_0x13b008(_0x29c51b);});};AGIVertices['prototype']['agentPause']=function(_0x3c2196,_0x2a4428,_0x467c29){var _0x1469b8={'role':_0xe4d9('0x48')};_0x1469b8[_0x3c2196]=this['channel']['callerid'];this['rpc']['agentPause'](_0x1469b8,_0x2a4428,this[_0xe4d9('0xc')][_0xe4d9('0x31')])[_0xe4d9('0x11')](function(_0x39e74a){_0x467c29(null,_[_0xe4d9('0x49')](_0x39e74a)?![]:!![]);})[_0xe4d9('0x14')](function(_0x2e6c84){logger['error'](_0x2e6c84);_0x467c29(null,![]);});};AGIVertices['prototype'][_0xe4d9('0x4a')]=function(_0xf4d401,_0x1e2eb9){var _0x1ab736={'role':_0xe4d9('0x48')};_0x1ab736[_0xf4d401]=this[_0xe4d9('0xc')][_0xe4d9('0x35')];this[_0xe4d9('0xd')][_0xe4d9('0x4a')](_0x1ab736)[_0xe4d9('0x11')](function(_0x1f686c){_0x1e2eb9(null,_[_0xe4d9('0x49')](_0x1f686c)?![]:!![]);})['catch'](function(_0x2f3396){logger[_0xe4d9('0x2c')](_0x2f3396);_0x1e2eb9(null,![]);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x4b')]=function(_0x57aa9b,_0x50a00b){var _0x5c67a1={'role':_0xe4d9('0x48')};_0x5c67a1[_0x57aa9b]=this[_0xe4d9('0xc')][_0xe4d9('0x35')];this[_0xe4d9('0xd')]['agentLogout'](_0x5c67a1)['then'](function(_0x383cd4){_0x50a00b(null,_[_0xe4d9('0x49')](_0x383cd4)?![]:!![]);})[_0xe4d9('0x14')](function(_0x2a576b){logger[_0xe4d9('0x2c')](_0x2a576b);_0x50a00b(null,![]);});};AGIVertices[_0xe4d9('0xe')]['agentLogin']=function(_0x348c8d,_0x4a09b3){var _0x376a0b={'role':_0xe4d9('0x48')};_0x376a0b[_0x348c8d]=this['channel'][_0xe4d9('0x35')];var _0xc31086=_0x348c8d!='internal'?util[_0xe4d9('0x23')](_0xe4d9('0x4c'),_0xe4d9('0x4d'),this[_0xe4d9('0xc')][_0xe4d9('0x35')]):undefined;this[_0xe4d9('0xd')]['agentLogin'](_0x376a0b,_0xc31086)['then'](function(_0x3473ad){_0x4a09b3(null,_['isNil'](_0x3473ad)?![]:!![]);})[_0xe4d9('0x14')](function(_0x59f0c7){logger['error'](_0x59f0c7);_0x4a09b3(null,![]);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x4e')]=function(_0x12e656,_0x5b0471){sh[_0xe4d9('0x4f')](_['trim'](_0x12e656),function(_0xfa28c5,_0x1b658b){var _0xf7fc1d=_0x1b658b[_0xe4d9('0x50')](/(\r\n|\n|\r)/gm,'');_0x5b0471(null,_0xf7fc1d);});};AGIVertices['prototype'][_0xe4d9('0x51')]=function(_0x3ab549,_0x1a2335){scripts[_0xe4d9('0x51')](_0x3ab549[_0xe4d9('0x52')],_0x3ab549[_0xe4d9('0x53')]||_0xe4d9('0x54'),_0x3ab549[_0xe4d9('0x54')],_0x3ab549[_0xe4d9('0x55')]||'en-US',_0x3ab549[_0xe4d9('0x56')]||'MALE',_0x3ab549[_0xe4d9('0x57')]||_0xe4d9('0x58'))[_0xe4d9('0x11')](function(_0x16760e){_0x1a2335(null,_0x16760e);})['catch'](function(_0x5d8656){_0x1a2335(_0x5d8656);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x59')]=function(_0x21624b,_0x40efe3){scripts[_0xe4d9('0x59')](_0x21624b[_0xe4d9('0x54')],_0x21624b[_0xe4d9('0x5a')]||'en',0x1)[_0xe4d9('0x11')](function(_0x2f0bc1){_0x40efe3(null,_0x2f0bc1);})['catch'](function(_0x460911){_0x40efe3(_0x460911);});};AGIVertices[_0xe4d9('0xe')]['restAPI']=function(_0x2f4f3b,_0x440457){var _0x1b5c79={'uri':_0x2f4f3b[_0xe4d9('0x5b')],'method':_0x2f4f3b[_0xe4d9('0x5c')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x2f4f3b['timeout'])===_0xe4d9('0x5d')&&parseInt(_0x2f4f3b[_0xe4d9('0x5e')])>=0x1?parseInt(_0x2f4f3b[_0xe4d9('0x5e')])*0x3e8:0x5*0x3e8};if(_[_0xe4d9('0x5f')]([_0xe4d9('0x60'),_0xe4d9('0x61')],_0x1b5c79[_0xe4d9('0x5c')][_0xe4d9('0x62')]())){try{_0x1b5c79[_0xe4d9('0x63')]=_0x2f4f3b['rawBody']?JSON[_0xe4d9('0x64')](_0x2f4f3b['rawBody']):{};}catch(_0x28fb7d){logger[_0xe4d9('0x2c')](_0xe4d9('0x65'),_0x28fb7d);}}try{_0x1b5c79[_0xe4d9('0x66')]=_0x2f4f3b['rawHeaders']?JSON[_0xe4d9('0x64')](_0x2f4f3b[_0xe4d9('0x8')]):{};}catch(_0x5bea39){logger[_0xe4d9('0x2c')](_0xe4d9('0x67'),_0x5bea39);}if(_0x2f4f3b['computedVariables']){try{var _0x345d4b=require(_0x2f4f3b[_0xe4d9('0x68')])[_0xe4d9('0x69')](this,_0x1b5c79);_0x1b5c79[_0xe4d9('0x6a')]=Mustache[_0xe4d9('0x6b')](_0x2f4f3b[_0xe4d9('0x5b')],_0x345d4b,{},['$$','$$']);if(_0x1b5c79[_0xe4d9('0x66')]){_0x1b5c79[_0xe4d9('0x66')]=JSON[_0xe4d9('0x64')](Mustache['render'](JSON[_0xe4d9('0x6c')](_0x1b5c79['headers']),_0x345d4b,{},['$$','$$']));}if(_0x1b5c79[_0xe4d9('0x63')]){_0x1b5c79['body']=JSON[_0xe4d9('0x64')](Mustache[_0xe4d9('0x6b')](JSON[_0xe4d9('0x6c')](_0x1b5c79[_0xe4d9('0x63')]),_0x345d4b,{},['$$','$$']));}}catch(_0x19845a){logger[_0xe4d9('0x2c')](_0xe4d9('0x6d'),_0x19845a);}}rp(_0x1b5c79)[_0xe4d9('0x11')](function(_0x5750e2){var _0x2033fe={'statusCode':_0x5750e2[_0xe4d9('0x6e')]||0xc8,'statusMessage':_0x5750e2[_0xe4d9('0x6f')]||'OK','headers':_0x5750e2[_0xe4d9('0x66')]||{},'body':_0x5750e2[_0xe4d9('0x63')]||{}};_0x440457(null,_0x2033fe);})[_0xe4d9('0x14')](function(_0x429587){var _0x26a3f4={'statusCode':_0x429587[_0xe4d9('0x6e')]||0x1f4,'statusMessage':_0x429587[_0xe4d9('0x70')]||_0xe4d9('0x71'),'headers':_0x429587[_0xe4d9('0x72')][_0xe4d9('0x66')]||{},'body':_0x429587['options'][_0xe4d9('0x63')]||{}};_0x440457(null,_0x26a3f4);});};AGIVertices[_0xe4d9('0xe')]['googleDialogflow']=function(_0x9ff93d,_0xacd1e1){scripts['googleDialogflow'](this[_0xe4d9('0xc')][_0xe4d9('0x31')],_0x9ff93d[_0xe4d9('0x73')],_0x9ff93d[_0xe4d9('0x54')],_0x9ff93d[_0xe4d9('0x74')]||'en')[_0xe4d9('0x11')](function(_0x12aa9a){_0xacd1e1(null,_0x12aa9a);})[_0xe4d9('0x14')](function(_0x13cc7b){_0xacd1e1(_0x13cc7b);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x75')]=function(_0x32dfa0,_0x463762){scripts['googleDialogflowV2'](this['channel']['uniqueid'],_0x32dfa0[_0xe4d9('0x76')],_0x32dfa0[_0xe4d9('0x77')],_0x32dfa0['private_key'],_0x32dfa0['text'],_0x32dfa0[_0xe4d9('0x78')]||'en')['then'](function(_0x456401){_0x463762(null,_0x456401);})['catch'](function(_0x401128){_0x463762(_0x401128);});};AGIVertices[_0xe4d9('0xe')]['sestekNDA']=function(_0x100cbd,_0x29ae02){scripts[_0xe4d9('0x79')](this['channel'],_0x100cbd)[_0xe4d9('0x11')](function(_0x285be8){_0x29ae02(null,_0x285be8);})[_0xe4d9('0x14')](function(_0x37ffa4){_0x29ae02(_0x37ffa4);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x7a')]=function(_0x13ac34,_0x20ba37){scripts[_0xe4d9('0x7a')](_0x13ac34[_0xe4d9('0x73')],_0x13ac34[_0xe4d9('0x54')],_0x13ac34[_0xe4d9('0x7b')]||_0xe4d9('0x7c'),_0x13ac34[_0xe4d9('0x7d')])[_0xe4d9('0x11')](function(_0x2e5384){_0x20ba37(null,_0x2e5384);})[_0xe4d9('0x14')](function(_0x35af23){_0x20ba37(_0x35af23);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x7e')]=function(_0x103296,_0x2b4848,_0x2a1a74){scripts[_0xe4d9('0x7e')](_0x2b4848,_0x103296['key'],_0x103296[_0xe4d9('0x7f')]||_0xe4d9('0x7c'),this[_0xe4d9('0x80')](_0x103296[_0xe4d9('0x81')])?_0x103296[_0xe4d9('0x81')]:undefined)['then'](function(_0x2dcdf9){_0x2a1a74(null,_0x2dcdf9);})['catch'](function(_0x14e4f5){_0x2a1a74(_0x14e4f5);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x82')]=function(_0xfa39a5,_0x12ac81){scripts['awsPolly'](_0xfa39a5[_0xe4d9('0x83')],_0xfa39a5[_0xe4d9('0x84')],_0xfa39a5[_0xe4d9('0x85')],_0xfa39a5[_0xe4d9('0x86')]||'Amy',_0xfa39a5['text'],_0xfa39a5[_0xe4d9('0x87')]||_0xe4d9('0x54'))['then'](function(_0xb5cc78){_0x12ac81(null,_0xb5cc78);})[_0xe4d9('0x14')](function(_0x312699){_0x12ac81(_0x312699);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x88')]=function(_0x28c84a,_0x42f7f6){scripts[_0xe4d9('0x88')](this[_0xe4d9('0xc')][_0xe4d9('0x31')],_0x28c84a[_0xe4d9('0x83')],_0x28c84a['aws_secret_access_key'],_0x28c84a[_0xe4d9('0x89')],_0x28c84a['text'],_0x28c84a['aws_bot_name'])['then'](function(_0x217dac){_0x42f7f6(null,_0x217dac);})[_0xe4d9('0x14')](function(_0x1cc980){_0x42f7f6(_0x1cc980);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x8a')]=function(_0x44fa8b,_0x35b866,_0x52b830){scripts[_0xe4d9('0x8a')](_0x35b866,_0x44fa8b[_0xe4d9('0x73')],_0x44fa8b[_0xe4d9('0x8b')]||_0xe4d9('0x7c'))[_0xe4d9('0x11')](function(_0x5d77c4){_0x52b830(null,_0x5d77c4);})[_0xe4d9('0x14')](function(_0x8c4f35){_0x52b830(_0x8c4f35);});};AGIVertices['prototype'][_0xe4d9('0x8c')]=function(_0x14ee8c,_0x3c4f82,_0x35ec86){scripts['tildeASR'](_0x3c4f82,_0x14ee8c[_0xe4d9('0x8d')],_0x14ee8c['appsecret'],_0x14ee8c[_0xe4d9('0x6a')])[_0xe4d9('0x11')](function(_0x26f81e){_0x35ec86(null,_0x26f81e);})[_0xe4d9('0x14')](function(_0x1f2123){_0x35ec86(_0x1f2123);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x8e')]=function(_0x5398ee){var _0x5a3944=_[_0xe4d9('0x5f')](verticesWithRetry,_0x5398ee[_0xe4d9('0x33')])?_0x5398ee:_[_0xe4d9('0x8f')](_0x5398ee);for(var _0x42a5f2 in _0x5a3944){if(_0x5a3944['hasOwnProperty'](_0x42a5f2)){if(_0x5a3944[_0x42a5f2]&&_['isString'](_0x5a3944[_0x42a5f2])){if(_['includes'](recursiveMapAttributes,_0x42a5f2)){_0x5a3944[_0x42a5f2]=this[_0xe4d9('0x90')](_0x5a3944[_0x42a5f2]);}else{_0x5a3944[_0x42a5f2]=this[_0xe4d9('0x91')](_0x5a3944[_0x42a5f2]);}}}}return _0x5a3944;};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x92')]=function(_0x3b5bbc){for(var _0x39a7eb in _0x3b5bbc){if(_0x3b5bbc[_0xe4d9('0x93')](_0x39a7eb)){if(_[_0xe4d9('0x94')](_0x3b5bbc[_0x39a7eb])){this['recursiveNodeIndex'](_0x3b5bbc[_0x39a7eb]);}else if(_[_0xe4d9('0x95')](_0x3b5bbc[_0x39a7eb])){for(var _0xef250d=0x0;_0xef250d<_0x3b5bbc[_0x39a7eb]['length'];_0xef250d++){this['recursiveNodeIndex'](_0x3b5bbc[_0x39a7eb][_0xef250d]);}}else if(_[_0xe4d9('0x96')](_0x3b5bbc[_0x39a7eb])){_0x3b5bbc[_0x39a7eb]=this[_0xe4d9('0x91')](_0x3b5bbc[_0x39a7eb]);}}}};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x97')]=function(_0x5bf730,_0x187eba){for(var _0x2a474a in _0x5bf730){if(_0x5bf730['hasOwnProperty'](_0x2a474a)){if(_[_0xe4d9('0x94')](_0x5bf730[_0x2a474a])){if(!_['isEmpty'](_0x5bf730[_0x2a474a])){this[_0xe4d9('0x97')](_0x5bf730[_0x2a474a],util['format'](_0xe4d9('0x98'),_0x187eba,_0x2a474a));}}else if(_['isArray'](_0x5bf730[_0x2a474a])){for(var _0x8eb345=0x0;_0x8eb345<_0x5bf730[_0x2a474a][_0xe4d9('0x99')];_0x8eb345++){this[_0xe4d9('0x97')](_0x5bf730[_0x2a474a][_0x8eb345],util[_0xe4d9('0x23')](_0xe4d9('0x98'),_0x187eba,_0x2a474a+'['+_0x8eb345+']'));}}else{if(!_[_0xe4d9('0x49')](_0x5bf730[_0x2a474a])){this[_0xe4d9('0xc')][_0xe4d9('0x9a')](util['format'](_0xe4d9('0x98'),_0x187eba,_0x2a474a),_0x5bf730[_0x2a474a]);}}}}};AGIVertices['prototype'][_0xe4d9('0x90')]=function(_0x19800b){try{var _0x23e26a=JSON[_0xe4d9('0x64')](_0x19800b);this[_0xe4d9('0x92')](_0x23e26a);return JSON[_0xe4d9('0x6c')](_0x23e26a);}catch(_0x543c7b){return this[_0xe4d9('0x91')](_0x19800b);}};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x91')]=function(_0x40b387){var _0x37cf18=_0x40b387[_0xe4d9('0x9b')]('{');for(var _0x11569f=0x1;_0x11569f<_0x37cf18[_0xe4d9('0x99')];_0x11569f+=0x1){var _0x2bec86=_0x37cf18[_0x11569f]['split']('}');if(_0x2bec86['length']>0x1){_0x40b387=_0x40b387[_0xe4d9('0x9c')]('{'+_0x2bec86[0x0]+'}',this[_0xe4d9('0xc')][_0xe4d9('0xf')](_0x2bec86[0x0])[_0xe4d9('0x9d')]||_0x2bec86[0x0]);}}if(_0x37cf18['length']===0x1){return _0x40b387[_0xe4d9('0x47')]();}return this['replaceAllVariables'](_0x40b387);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x9e')]=function(_0x51e730,_0x4db2d0){var _0x4272c3=this[_0xe4d9('0xc')][_0xe4d9('0xf')](_0x51e730);if(_0x4272c3[_0xe4d9('0x9f')]===-0x1){return _0x4272c3;}logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xa0'),_0x4db2d0,_0x4272c3[_0xe4d9('0x9d')]));return this['channel'][_0xe4d9('0x9a')](_0x4db2d0,_0x4272c3[_0xe4d9('0x9d')]);};AGIVertices[_0xe4d9('0xe')]['isConfigured']=function(_0x2142f7){return _0x2142f7&&_0x2142f7!=='0'&&_0x2142f7!=='-1'&&_0x2142f7!=='';};AGIVertices[_0xe4d9('0xe')]['maxRetry']=function(_0x15c7d0){this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x15c7d0,'-');_0x15c7d0[_0xe4d9('0xa1')]=_0x15c7d0[_0xe4d9('0xa2')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0xe4d9('0xa3')]=function(_0x53aa65){logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0xa4'),_0x53aa65['label']));if(!this['isConfigured'](_0x53aa65[_0xe4d9('0x54')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}var _0x30e04f='\x22'+_0x53aa65[_0xe4d9('0x54')]+'\x22';if(this[_0xe4d9('0x80')](_0x53aa65[_0xe4d9('0x72')])){_0x30e04f+=','+_0x53aa65[_0xe4d9('0x72')];}var _0x59dcff=this[_0xe4d9('0xc')]['exec']('MRCPSynth',_0x30e04f);if(_0x59dcff[_0xe4d9('0x9f')]===-0x1){return _0x59dcff;}return this[_0xe4d9('0xc')]['noop'](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x30e04f));};AGIVertices[_0xe4d9('0xe')]['mrcprecog']=function(_0x2941d3){logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0xa7'),_0x2941d3[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x2941d3['grammar'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa8'));}var _0x119d5b=_0x2941d3[_0xe4d9('0xa9')];if(this['isConfigured'](_0x2941d3['options'])){_0x119d5b+=','+_0x2941d3[_0xe4d9('0x72')];}var _0x235d13=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0xaa'),_0x119d5b);if(_0x235d13[_0xe4d9('0x9f')]===-0x1){return _0x235d13;}var _0x5bb2c1=this[_0xe4d9('0x9e')]('RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE');if(_0x5bb2c1[_0xe4d9('0x9f')]===-0x1){return _0x5bb2c1;}var _0x446551=this[_0xe4d9('0x9e')](_0xe4d9('0xab'),_0xe4d9('0xac'));if(_0x446551['result']===-0x1){return _0x446551;}var _0x3d08ac=this['getAndSetVariable'](_0xe4d9('0xad'),_0xe4d9('0xae'));if(_0x3d08ac[_0xe4d9('0x9f')]===-0x1){return _0x3d08ac;}return this['channel'][_0xe4d9('0xa5')](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x119d5b));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xaf')]=function(_0x56a2ab){logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0xb0'),_0x56a2ab[_0xe4d9('0x32')]));return this[_0xe4d9('0xc')][_0xe4d9('0xaf')]([_0x56a2ab[_0xe4d9('0xb1')],_0x56a2ab[_0xe4d9('0xb2')]]);};AGIVertices['prototype']['answer']=function(_0x704678){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xb3'),_0x704678['label']));if(this[_0xe4d9('0x80')](_0x704678[_0xe4d9('0x5e')])){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xb4'),_0x704678[_0xe4d9('0x5e')]));var _0x10f7eb=this[_0xe4d9('0xc')][_0xe4d9('0xb5')](_0x704678[_0xe4d9('0x5e')]);if(_0x10f7eb['result']===-0x1){return _0x10f7eb;}}return this[_0xe4d9('0xc')][_0xe4d9('0xb6')]();};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xb7')]=function(_0x3f72f5){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xb8'),_0x3f72f5[_0xe4d9('0x32')]));if(!this['isConfigured'](_0x3f72f5[_0xe4d9('0x44')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x3f72f5,'no\x20list\x20selected');}_0x3f72f5[_0xe4d9('0x45')]=moment();if(this['isConfigured'](_0x3f72f5[_0xe4d9('0xb9')])){_0x3f72f5['scheduledAt']=moment()['add'](_0x3f72f5['delay'],_0xe4d9('0xba'));}if(!this['isConfigured'](_0x3f72f5['callback_priority'])){_0x3f72f5[_0xe4d9('0xbb')]=0x2;}this[_0xe4d9('0x3e')][_0xe4d9('0x69')](this,_0x3f72f5);return this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xbc'),_0x3f72f5['phone'],_0x3f72f5[_0xe4d9('0x44')],_0x3f72f5[_0xe4d9('0x45')]));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xbd')]=function(_0x5e76f2){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x5e76f2[_0xe4d9('0x32')]));var _0x46c5c4=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0x5e76f2[_0xe4d9('0xbe')],_0x5e76f2[_0xe4d9('0x72')]);if(_0x46c5c4[_0xe4d9('0x9f')]===-0x1){return _0x46c5c4;}return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')](_0xe4d9('0xbf'),_0x5e76f2[_0xe4d9('0xbe')],_0x5e76f2[_0xe4d9('0x72')]));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xc0')]=function(_0x3cc9e1){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xc1'),_0x3cc9e1['label']));if(!this[_0xe4d9('0x80')](_0x3cc9e1[_0xe4d9('0x54')])){return this['channel']['noop'](_0xe4d9('0xa6'));}var _0x1722b6='\x22'+_0x3cc9e1[_0xe4d9('0x54')]+'\x22';if(this['isConfigured'](_0x3cc9e1[_0xe4d9('0x72')])){_0x1722b6+=','+_0x3cc9e1[_0xe4d9('0x72')];}var _0x578724=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0xc2'),_0x1722b6);if(_0x578724[_0xe4d9('0x9f')]===-0x1){return _0x578724;}return this['channel'][_0xe4d9('0xa5')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x1722b6));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xc3')]=function(_0x5a152e){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0xc4'),_0x5a152e['label']));if(!this[_0xe4d9('0x80')](_0x5a152e[_0xe4d9('0x54')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xa6'));}var _0x55d72b='\x22'+_0x5a152e[_0xe4d9('0x54')]+'\x22';if(this[_0xe4d9('0x80')](_0x5a152e['options'])){_0x55d72b+=','+_0x5a152e[_0xe4d9('0x72')];}var _0x58f6a1=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0xc2'),_0x55d72b);if(_0x58f6a1[_0xe4d9('0x9f')]===-0x1){return _0x58f6a1;}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xc5'),_0x55d72b));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xc6')]=function(_0x339fe8){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xc7'),_0x339fe8['label']));if(!this[_0xe4d9('0x80')](_0x339fe8[_0xe4d9('0xa9')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa8'));}var _0xdeb1e7=_0x339fe8[_0xe4d9('0xa9')];if(this['isConfigured'](_0x339fe8[_0xe4d9('0x72')])){_0xdeb1e7+=','+_0x339fe8[_0xe4d9('0x72')];}var _0x44e404=this['channel'][_0xe4d9('0x4f')](_0xe4d9('0xaa'),_0xdeb1e7);if(_0x44e404[_0xe4d9('0x9f')]===-0x1){return _0x44e404;}var _0x34fe21=this[_0xe4d9('0x9e')](_0xe4d9('0xc8'),_0xe4d9('0xc9'));if(_0x34fe21[_0xe4d9('0x9f')]===-0x1){return _0x34fe21;}var _0x23b31f=this[_0xe4d9('0x9e')](_0xe4d9('0xab'),_0xe4d9('0xca'));if(_0x23b31f[_0xe4d9('0x9f')]===-0x1){return _0x23b31f;}var _0x2d7a68=this[_0xe4d9('0x9e')](_0xe4d9('0xad'),_0xe4d9('0xcb'));if(_0x2d7a68['result']===-0x1){return _0x2d7a68;}return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')]('Executed\x20command\x20MRCPRecog\x20%s',_0xdeb1e7));};AGIVertices['prototype'][_0xe4d9('0xcc')]=function(_0x4b77ac){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xcd'),_0x4b77ac[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x4b77ac[_0xe4d9('0xa9')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xa8'));}var _0x31b6c0=_0x4b77ac['grammar'];if(this['isConfigured'](_0x4b77ac['options'])){_0x31b6c0+=','+_0x4b77ac[_0xe4d9('0x72')];}var _0x383dcf=this['channel'][_0xe4d9('0x4f')](_0xe4d9('0xaa'),_0x31b6c0);if(_0x383dcf[_0xe4d9('0x9f')]===-0x1){return _0x383dcf;}var _0x2d3c9a=this[_0xe4d9('0x9e')](_0xe4d9('0xc8'),_0xe4d9('0xce'));if(_0x2d3c9a[_0xe4d9('0x9f')]===-0x1){return _0x2d3c9a;}var _0x5d760b=this[_0xe4d9('0x9e')](_0xe4d9('0xab'),_0xe4d9('0xcf'));if(_0x5d760b[_0xe4d9('0x9f')]===-0x1){return _0x5d760b;}var _0x3141ca=this['getAndSetVariable'](_0xe4d9('0xad'),_0xe4d9('0xd0'));if(_0x3141ca['result']===-0x1){return _0x3141ca;}return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')](_0xe4d9('0xd1'),_0x31b6c0));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xd2')]=function(_0x419955){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xd3'),_0x419955[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x419955[_0xe4d9('0xd4')])){return this[_0xe4d9('0xc')]['error'](_0x419955,_0xe4d9('0xd5'));}var _0x2a556b=this[_0xe4d9('0x15')][_0xe4d9('0x69')](this,_0x419955[_0xe4d9('0xd4')]);if(!_0x2a556b){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x419955,_0xe4d9('0xd6'));}if(!this[_0xe4d9('0x80')](_0x419955[_0xe4d9('0x2a')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x419955,_0xe4d9('0xd7'));}var _0x1c7b9e=_0x419955['query'][_0xe4d9('0x50')](/(\r\n|\n|\r)/gm,'\x20');this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xd8'),_0x1c7b9e));var _0x1de0de=this[_0xe4d9('0x25')][_0xe4d9('0x69')](this,_0x2a556b,_0x1c7b9e);this['createSquareDetailsReport']['sync'](this,_0x419955,_0x1c7b9e);if(!this[_0xe4d9('0x80')](_0x419955['variable_id'])){return this['channel'][_0xe4d9('0xa5')](_0xe4d9('0xd9'));}var _0x42ef68=this['getVariable']['sync'](this,_0x419955[_0xe4d9('0xda')]);if(!_0x42ef68){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x419955,'no\x20variable\x20found');}var _0x15193d=this;_0x1de0de[_0xe4d9('0xdb')](function(_0x49a576,_0x4e384c){Object[_0xe4d9('0xdc')](_0x49a576)['forEach'](function(_0x277f57){_0x15193d[_0xe4d9('0xc')][_0xe4d9('0x9a')](util[_0xe4d9('0x23')](_0xe4d9('0xdd'),_0x42ef68,_0x4e384c,_0x277f57),_0x49a576[_0x277f57]);});});this['channel'][_0xe4d9('0x9a')](util['format'](_0xe4d9('0xde'),_0x42ef68),_0x1de0de[_0xe4d9('0x99')]);return this['channel']['noop'](util[_0xe4d9('0x23')]('variable\x20%s\x20set',_0x42ef68));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xdf')]=function(_0xaf7ca){logger[_0xe4d9('0xe0')](util[_0xe4d9('0x23')](_0xe4d9('0xe1'),_0xaf7ca['label']));if(!this[_0xe4d9('0x80')](_0xaf7ca['sip_id'])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0xaf7ca,_0xe4d9('0xe2'));}var _0x5104cb=this[_0xe4d9('0x17')][_0xe4d9('0x69')](this,_0xaf7ca[_0xe4d9('0xe3')]);if(!_0x5104cb){return this['channel'][_0xe4d9('0x2c')](_0xaf7ca,_0xe4d9('0xe4'));}var _0x460508=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0xe5'),[util[_0xe4d9('0x23')](_0xe4d9('0xe6'),_0x5104cb),_0xaf7ca[_0xe4d9('0x5e')],_0xaf7ca[_0xe4d9('0xe7')],_0xaf7ca[_0xe4d9('0x5b')]]);if(_0x460508[_0xe4d9('0x9f')]===-0x1){return _0x460508;}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xe8'),_0xe4d9('0xe5')));};AGIVertices[_0xe4d9('0xe')]['dialogflow']=function(_0x29e129){logger['info'](util['format']('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x29e129[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x29e129[_0xe4d9('0x73')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xe9'));}if(!this[_0xe4d9('0x80')](_0x29e129[_0xe4d9('0x54')])){return this[_0xe4d9('0xc')]['noop']('no\x20text\x20configured');}this['channel'][_0xe4d9('0xea')]=!![];this['createSquareDetailsReport'](_0x29e129);this[_0xe4d9('0x3d')](_0x29e129['text'],'in','','');this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format']('Trying\x20Dialogflow:\x20%s',_0x29e129['text']));var _0x5b8385=this[_0xe4d9('0xeb')]['sync'](this,_0x29e129);if(_0x5b8385){for(var _0x117972 in _0x5b8385){if(_0x5b8385[_0xe4d9('0x93')](_0x117972)){this['channel'][_0xe4d9('0x9a')](util[_0xe4d9('0x23')]('DIALOGFLOW_%s',_0x117972['toUpperCase']()),_0x5b8385[_0x117972]);}}this['createSquareMessage'](_0x5b8385[_0xe4d9('0xec')],_0xe4d9('0xed'),_0xe4d9('0xee'),'');return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xef'),_0x5b8385[_0xe4d9('0xec')]));}return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x29e129,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0xe4d9('0xe')]['dialogflowV2']=function(_0x30dbfa){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xf0'),_0x30dbfa[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x30dbfa[_0xe4d9('0x76')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xf1'));}if(!this['isConfigured'](_0x30dbfa[_0xe4d9('0x77')])){return this[_0xe4d9('0xc')]['noop']('no\x20client_email\x20configured');}if(!this['isConfigured'](_0x30dbfa[_0xe4d9('0xf2')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xf3'));}if(!this[_0xe4d9('0x80')](_0x30dbfa[_0xe4d9('0x78')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xf4'));}if(!this[_0xe4d9('0x80')](_0x30dbfa['text'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}this['channel']['bot']=!![];this['createSquareDetailsReport'](_0x30dbfa);this[_0xe4d9('0x3d')](_0x30dbfa[_0xe4d9('0x54')],'in','','');this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xf5'),_0x30dbfa['text']));var _0x1491a8=this['googleDialogflowV2'][_0xe4d9('0x69')](this,_0x30dbfa);if(_0x1491a8){for(var _0x2fdcf0 in _0x1491a8){if(_0x1491a8[_0xe4d9('0x93')](_0x2fdcf0)){if(_0x2fdcf0!=='providerResponse'){this[_0xe4d9('0xc')][_0xe4d9('0x9a')](util[_0xe4d9('0x23')]('DIALOGFLOW_%s',_0x2fdcf0[_0xe4d9('0x62')]()),_0x1491a8[_0x2fdcf0]);}}}this[_0xe4d9('0x3d')](_0x1491a8['speech'],'out',_0xe4d9('0xf6'),_0x1491a8[_0xe4d9('0xf7')]);return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xf8'),_0x1491a8['speech']));}return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x30dbfa,_0xe4d9('0xf9'));};AGIVertices['prototype']['sesteknda']=function(_0x4b3324){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0xfa'),_0x4b3324[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x4b3324[_0xe4d9('0xfb')])){return this['channel']['noop'](_0xe4d9('0xfc'));}if(!this[_0xe4d9('0x80')](_0x4b3324[_0xe4d9('0xfd')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xfe'));}if(!this[_0xe4d9('0x80')](_0x4b3324[_0xe4d9('0xff')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x100'));}if(!this[_0xe4d9('0x80')](_0x4b3324[_0xe4d9('0x101')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')][_0xe4d9('0xea')]=!![];this[_0xe4d9('0x30')](_0x4b3324);this['createSquareMessage'](_0x4b3324[_0xe4d9('0x54')],'in','','');this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x102'),_0x4b3324[_0xe4d9('0x54')]));var _0x3721b7=this[_0xe4d9('0x79')][_0xe4d9('0x69')](this,_0x4b3324);if(_0x3721b7){for(var _0x4634f5 in _0x3721b7){if(_0x3721b7[_0xe4d9('0x93')](_0x4634f5)){this['channel'][_0xe4d9('0x9a')](util['format'](_0xe4d9('0x103'),_0x4634f5[_0xe4d9('0x62')]()),_0x3721b7[_0x4634f5]);}}this[_0xe4d9('0x3d')](_0x3721b7[_0xe4d9('0xec')],'out',_0xe4d9('0x104'),'');if(_0x3721b7[_0xe4d9('0x105')]){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x106'),_0x3721b7[_0xe4d9('0x105')]));var _0x3a0a28=this[_0xe4d9('0xc')][_0xe4d9('0x107')](_0x3721b7[_0xe4d9('0x105')]);try{fs[_0xe4d9('0x108')](_0x3721b7[_0xe4d9('0x105')]+'.wav');}catch(_0x33252b){logger['error'](_0x33252b);}return _0x3a0a28;}else{return this[_0xe4d9('0xc')]['noop'](util['format'](_0xe4d9('0x109'),_0x3721b7['speech']));}}return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x4b3324,_0xe4d9('0x10a'));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x10b')]=function(_0x16f465){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x10c'),_0x16f465[_0xe4d9('0x32')]));return this['channel'][_0xe4d9('0xa5')](_0xe4d9('0x10b'));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x10d')]=function(_0xd278ee){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x10e'),_0xd278ee[_0xe4d9('0x32')]));var _0x9a2de3='';if(_0xd278ee[_0xe4d9('0x10f')]){if(!this[_0xe4d9('0x80')](_0xd278ee[_0xe4d9('0x10f')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0xd278ee,_0xe4d9('0x110'));}else{var _0x23a724=parseInt(_0xd278ee[_0xe4d9('0x10f')],0xa);if(isNaN(_0x23a724)){_0x9a2de3=_0xd278ee[_0xe4d9('0x10f')];}else{_0x9a2de3=this['getTrunk'][_0xe4d9('0x69')](this,_0xd278ee[_0xe4d9('0x10f')]);if(!_0x9a2de3){return this['channel']['error'](_0xd278ee,_0xe4d9('0x111'));}}}}else if(_0xd278ee[_0xe4d9('0x112')]){_0x9a2de3=_0xd278ee['trunk_name'];}else{return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0xd278ee,_0xe4d9('0x110'));}var _0x18d059=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0xe5'),[util[_0xe4d9('0x23')](_0xe4d9('0x113'),_0x9a2de3,_0xd278ee[_0xe4d9('0x43')]),_0xd278ee[_0xe4d9('0x5e')],_0xd278ee[_0xe4d9('0xe7')],_0xd278ee[_0xe4d9('0x5b')]]);if(_0x18d059[_0xe4d9('0x9f')]===-0x1){return _0x18d059;}return this[_0xe4d9('0xc')]['noop'](util['format']('Executed\x20command\x20%s',_0xe4d9('0xe5')));};AGIVertices[_0xe4d9('0xe')]['finally']=function(_0x2a3a2c){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x114'),_0x2a3a2c['label']));return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('finally');};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x115')]=function(_0x371ce4){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x371ce4[_0xe4d9('0x32')]));if(_0x371ce4['retry']===0x0){return this['maxRetry'](_0x371ce4);}_0x371ce4[_0xe4d9('0xa1')]-=0x1;if(!this[_0xe4d9('0x80')](_0x371ce4[_0xe4d9('0x116')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x371ce4,_0xe4d9('0x117'));}var _0x1c7685=this['getSound']['sync'](this,_0x371ce4['file_id']);if(!_0x1c7685){return this['channel'][_0xe4d9('0x2c')](_0x371ce4,'no\x20file\x20audio\x20found');}if(!this['isConfigured'](_0x371ce4[_0xe4d9('0xda')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0xa16cc4=this[_0xe4d9('0xc')][_0xe4d9('0x118')](_0x1c7685,_0x371ce4[_0xe4d9('0x119')],_0x371ce4[_0xe4d9('0x11a')]);var _0x347f4d=_0xa16cc4[_0xe4d9('0x9f')]?_0xa16cc4[_0xe4d9('0x9f')]['toString']():'';logger[_0xe4d9('0x28')](_0xe4d9('0x11b'),JSON[_0xe4d9('0x6c')](_0xa16cc4));if(_0xa16cc4[_0xe4d9('0x9f')]===-0x1){this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x371ce4,_0x347f4d);return _0xa16cc4;}else if(_0xa16cc4['extra']===_0xe4d9('0x5e')){_0xa16cc4[_0xe4d9('0x9f')]=_0x347f4d[_0xe4d9('0x99')]>=parseInt(_0x371ce4[_0xe4d9('0x11c')])?'x':'i';}else{_0xa16cc4[_0xe4d9('0x9f')]=_0x347f4d[_0xe4d9('0x99')]>=parseInt(_0x371ce4[_0xe4d9('0x11c')])&&_0x347f4d['length']<=parseInt(_0x371ce4[_0xe4d9('0x11a')])?'x':'i';}var _0x443c5d=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x371ce4['variable_id']);if(!_0x443c5d){return this[_0xe4d9('0xc')]['error'](_0x371ce4,'no\x20variable\x20found');}this[_0xe4d9('0xc')][_0xe4d9('0x9a')](_0x443c5d,_0x347f4d);if(this['isConfigured'](_0x371ce4[_0xe4d9('0x11d')])){var _0x3d9719=parseInt(_0x371ce4['hiddendigitsnum'],0xa);var _0x4436e9=rs[_0xe4d9('0x11e')]({'charset':'*','length':_0x3d9719});var _0x29f536=_0x347f4d['length'];if(_0x29f536>0x0){if(_0x29f536>_0x3d9719){this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x371ce4,_0x371ce4[_0xe4d9('0x11f')]===_0xe4d9('0x120')?_0x4436e9+_0x347f4d[_0xe4d9('0x121')](_0x3d9719):_0x347f4d['substr'](0x0,_0x29f536-_0x3d9719)+_0x4436e9);}else{this[_0xe4d9('0x30')]['sync'](this,_0x371ce4,rs[_0xe4d9('0x11e')]({'charset':'*','length':_0x29f536}));}}else{this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x371ce4,'');}}else{this['createSquareDetailsReport'][_0xe4d9('0x69')](this,_0x371ce4,_0x347f4d);}return _0xa16cc4;};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xb')]=function(_0x539f99){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x122'),_0x539f99[_0xe4d9('0x32')]));return this[_0xe4d9('0x115')](_0x539f99);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x123')]=function(_0x3f5d7c){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x3f5d7c[_0xe4d9('0x32')]));this[_0xe4d9('0x30')]['sync'](this,_0x3f5d7c,_0x3f5d7c[_0xe4d9('0x124')]);return this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('GOAL\x20%s',_0x3f5d7c[_0xe4d9('0x124')]));};AGIVertices[_0xe4d9('0xe')]['awspolly']=function(_0x226d54){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x125'),_0x226d54['label']));if(!this[_0xe4d9('0x80')](_0x226d54['aws_access_key_id'])||!this[_0xe4d9('0x80')](_0x226d54['aws_secret_access_key'])){return this[_0xe4d9('0xc')]['noop']('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x226d54['text'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x126'),_0x226d54[_0xe4d9('0x54')]));var _0x5b1059=this[_0xe4d9('0x82')]['sync'](this,_0x226d54);if(_0x5b1059){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('aws\x20Polly\x20%s\x20file\x20created',_0x5b1059));var _0x298917=this[_0xe4d9('0xc')][_0xe4d9('0x107')](_0x5b1059);try{fs[_0xe4d9('0x108')](_0x5b1059+_0xe4d9('0x127'));}catch(_0x2241b6){logger['error'](_0x2241b6);}return _0x298917;}return this[_0xe4d9('0xc')]['error'](_0x226d54,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x128')]=function(_0x1c53c1){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x129'),_0x1c53c1[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x1c53c1[_0xe4d9('0x83')])||!this['isConfigured'](_0x1c53c1[_0xe4d9('0x84')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0x12a'));}if(!this[_0xe4d9('0x80')](_0x1c53c1[_0xe4d9('0x12b')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('no\x20bot\x20name\x20configured');}if(!this['isConfigured'](_0x1c53c1['text'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')]['bot']=!![];this[_0xe4d9('0x30')](_0x1c53c1);this[_0xe4d9('0x3d')](_0x1c53c1[_0xe4d9('0x54')],'in','','');this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x12c'),_0x1c53c1[_0xe4d9('0x54')]));var _0x492e3a=this[_0xe4d9('0x88')][_0xe4d9('0x69')](this,_0x1c53c1);if(_0x492e3a){for(var _0x182b98 in _0x492e3a){if(_0x492e3a['hasOwnProperty'](_0x182b98)&&_[_0xe4d9('0x96')](_0x492e3a[_0x182b98])){this['channel'][_0xe4d9('0x9a')](util[_0xe4d9('0x23')](_0xe4d9('0x12d'),_0x182b98[_0xe4d9('0x62')]()),_0x492e3a[_0x182b98]);}}if(_[_0xe4d9('0x49')](_0x492e3a[_0xe4d9('0x70')])){return this['channel']['noop'](_0xe4d9('0x12e'));}else{this[_0xe4d9('0x3d')](_0x492e3a[_0xe4d9('0x70')],_0xe4d9('0xed'),'amazonlex','');return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('Amazon\x20Lex\x20Result\x20%s',_0x492e3a[_0xe4d9('0x70')]));}}return this['channel']['error'](_0x1c53c1,_0xe4d9('0x12f'));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x130')]=function(_0x556466){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x131'),_0x556466[_0xe4d9('0x32')],_0x556466[_0xe4d9('0x5e')]));if(!this[_0xe4d9('0x80')](_0x556466[_0xe4d9('0x73')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xe9'));}var _0x19b531=_0xe4d9('0x132');var _0x4b9b00=util[_0xe4d9('0x23')](_0xe4d9('0x133'),FILES_PATH,rs[_0xe4d9('0x11e')](0x4));var _0x4d44a8=util[_0xe4d9('0x23')]('%s.%s',_0x4b9b00,_0x19b531);var _0x42395f=!![];if(_0x556466['beep']==='NOBEEP'){_0x42395f=![];}var _0x4130b4=this[_0xe4d9('0xc')][_0xe4d9('0x134')](_0x4b9b00,_0x19b531,_0x556466[_0xe4d9('0x135')],_0x556466['timeout'],undefined,_0x42395f);if(_0x4130b4[_0xe4d9('0x9f')]!==-0x1){this[_0xe4d9('0xc')]['noop'](util['format'](_0xe4d9('0x136'),_0x4d44a8));var _0x2aaabf=this[_0xe4d9('0x8a')][_0xe4d9('0x69')](this,_0x556466,_0x4d44a8);if(_0x2aaabf){for(var _0x466c44 in _0x2aaabf){if(_0x2aaabf[_0xe4d9('0x93')](_0x466c44)){this[_0xe4d9('0xc')]['setVariable'](util[_0xe4d9('0x23')](_0xe4d9('0x137'),_0x466c44[_0xe4d9('0x62')]()),_0x2aaabf[_0x466c44]);}}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x138'),JSON['stringify'](_0x2aaabf)));}}return _0x4130b4;};AGIVertices[_0xe4d9('0xe')]['tildeasr']=function(_0x2fc75a){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x139'),_0x2fc75a[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x2fc75a['appid'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('no\x20appid\x20configured');}if(!this[_0xe4d9('0x80')](_0x2fc75a[_0xe4d9('0x13a')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('no\x20appsecret\x20configured');}var _0x12e1c6=_0xe4d9('0x132');var _0x509308=util[_0xe4d9('0x23')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x540e89=util['format'](_0xe4d9('0x98'),_0x509308,_0x12e1c6);var _0x1ea330=!![];if(_0x2fc75a['beep']===_0xe4d9('0x13b')){_0x1ea330=![];}var _0x4bd3ab=this['channel'][_0xe4d9('0x134')](_0x509308,_0x12e1c6,_0x2fc75a[_0xe4d9('0x135')],_0x2fc75a['timeout'],undefined,_0x1ea330);if(_0x4bd3ab[_0xe4d9('0x9f')]!==-0x1){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x13c'),_0x540e89));var _0x4aba7a=this[_0xe4d9('0x8c')][_0xe4d9('0x69')](this,_0x2fc75a,_0x540e89);if(_0x4aba7a){for(var _0xb9cd50 in _0x4aba7a){if(_0x4aba7a[_0xe4d9('0x93')](_0xb9cd50)){this[_0xe4d9('0xc')][_0xe4d9('0x9a')](util['format'](_0xe4d9('0x13d'),_0xb9cd50[_0xe4d9('0x62')]()),_0x4aba7a[_0xb9cd50]);}}return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')](_0xe4d9('0x13e'),JSON[_0xe4d9('0x6c')](_0x4aba7a)));}}return _0x4bd3ab;};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x13f')]=function(_0x74ec26){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x140'),_0x74ec26[_0xe4d9('0x32')]));return this[_0xe4d9('0xc')][_0xe4d9('0x141')](_0x74ec26[_0xe4d9('0x38')],_0x74ec26[_0xe4d9('0x142')],_0x74ec26[_0xe4d9('0x39')]);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x143')]=function(_0x1c4f06){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x144'),_0x1c4f06[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x1c4f06[_0xe4d9('0x145')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x1c4f06,'no\x20condition\x20configured');}try{var _0x1aa0e4=eval(_0x1c4f06['condition'])?_0xe4d9('0x146'):'false';this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')]('EVAL\x20CONDITION\x20%s\x20%s',_0x1c4f06[_0xe4d9('0x145')],_0x1aa0e4));return{'code':0xc8,'result':_0x1aa0e4};}catch(_0x3dfb73){return{'code':0xc8,'result':_0xe4d9('0x147')};}};AGIVertices['prototype'][_0xe4d9('0x148')]=function(_0x541d2b){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x541d2b[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x541d2b['interval_id'])){return this['channel']['error'](_0x541d2b,_0xe4d9('0x149'));}var _0x3dbd36=this[_0xe4d9('0x1f')][_0xe4d9('0x69')](this,_0x541d2b['interval_id']);if(!_0x3dbd36){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x541d2b,_0xe4d9('0x14a'));}for(var _0x3617b3=0x0;_0x3617b3<_0x3dbd36[_0xe4d9('0x99')];_0x3617b3+=0x1){var _0x2a649f=this[_0xe4d9('0xc')]['getVariable'](util['format']('IFTIME(%s?true:false)',_0x3dbd36[_0x3617b3]));if(_0x2a649f[_0xe4d9('0x9f')]===-0x1){return _0x2a649f;}logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('IFTIME\x20%s\x20%s',_0x3dbd36[_0x3617b3],_0x2a649f[_0xe4d9('0x9d')]));if(_0x2a649f[_0xe4d9('0x9d')]==='true'){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x14b'),_0x3dbd36[_0x3617b3],_0xe4d9('0x146')));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format']('IFTIME\x20%s\x20%s',_0x3dbd36[_0x3617b3],_0xe4d9('0x146')));return{'code':0xc8,'result':_0xe4d9('0x146')};}else{logger['info'](util['format'](_0xe4d9('0x14b'),_0x3dbd36[_0x3617b3],'false'));this['channel'][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x14b'),_0x3dbd36[_0x3617b3],'false'));}}return{'code':0xc8,'result':_0xe4d9('0x147')};};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x14c')]=function(_0x5b71e0){logger['info'](util['format'](_0xe4d9('0x14d'),_0x5b71e0[_0xe4d9('0x32')]));return this[_0xe4d9('0xc')][_0xe4d9('0x14c')]();};AGIVertices['prototype'][_0xe4d9('0x14e')]=function(_0x46ea37){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x14f'),_0x46ea37[_0xe4d9('0x32')]));if(!this['isConfigured'](_0x46ea37[_0xe4d9('0x73')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('no\x20key\x20configured');}var _0x3c0c3d=_0xe4d9('0x132');var _0x595588=util['format'](_0xe4d9('0x133'),FILES_PATH,rs[_0xe4d9('0x11e')](0x4));var _0x2b0faa=util[_0xe4d9('0x23')]('%s.%s',_0x595588,_0x3c0c3d);var _0x4d3952=!![];if(_0x46ea37[_0xe4d9('0x150')]===_0xe4d9('0x13b')){_0x4d3952=![];}var _0x3ed55d=this['channel']['recordFile'](_0x595588,_0x3c0c3d,_0x46ea37[_0xe4d9('0x135')],_0x46ea37[_0xe4d9('0x5e')],undefined,_0x4d3952);if(_0x3ed55d[_0xe4d9('0x9f')]!==-0x1){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x151'),_0x2b0faa));var _0xd83538=this[_0xe4d9('0x7e')][_0xe4d9('0x69')](this,_0x46ea37,_0x2b0faa);if(_0xd83538){for(var _0x4b339d in _0xd83538){if(_0xd83538[_0xe4d9('0x93')](_0x4b339d)){this[_0xe4d9('0xc')]['setVariable'](util[_0xe4d9('0x23')]('ISPEECH_ASR_%s',_0x4b339d[_0xe4d9('0x62')]()),_0xd83538[_0x4b339d]);}}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x152'),JSON[_0xe4d9('0x6c')](_0xd83538)));}}return _0x3ed55d;};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x153')]=function(_0x30510b){logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0x154'),_0x30510b[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x30510b[_0xe4d9('0x73')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xe9'));}if(!this[_0xe4d9('0x80')](_0x30510b['text'])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')](_0xe4d9('0x155'),_0x30510b[_0xe4d9('0x54')]));var _0x4b8a2b=this['ispeechTTS'][_0xe4d9('0x69')](this,_0x30510b);if(_0x4b8a2b){this['channel'][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x151'),_0x4b8a2b));var _0x27206d=this[_0xe4d9('0xc')]['streamFile'](_0x4b8a2b,_0x30510b['intKey']);try{fs[_0xe4d9('0x108')](_0x4b8a2b+'.wav');}catch(_0x1c25ec){logger[_0xe4d9('0x2c')](_0x1c25ec);}return _0x27206d;}return this[_0xe4d9('0xc')]['error'](_0x30510b,_0xe4d9('0x156'));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x157')]=function(_0x1de350){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x158'),_0x1de350['label']));if(!this[_0xe4d9('0x80')](_0x1de350[_0xe4d9('0x159')])){return this[_0xe4d9('0xc')]['error'](_0x1de350,_0xe4d9('0x15a'));}logger['info'](util[_0xe4d9('0x23')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x1de350[_0xe4d9('0x159')]));var _0x21607c=this['agentLogin'][_0xe4d9('0x69')](this,_0x1de350[_0xe4d9('0x159')]);if(_0x21607c){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x15b'),this['channel'][_0xe4d9('0x35')],_0x1de350[_0xe4d9('0x159')]));this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x15b'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x1de350['findBy']));return{'code':0xc8,'result':_0xe4d9('0x15c')};}else{logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xe4d9('0x35')],_0x1de350[_0xe4d9('0x159')]));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x15d'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x1de350[_0xe4d9('0x159')]));return{'code':0xc8,'result':_0xe4d9('0x15e')};}};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x15f')]=function(_0xecb7e8){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x160'),_0xecb7e8['label']));if(!this[_0xe4d9('0x80')](_0xecb7e8['findBy'])){return this['channel'][_0xe4d9('0x2c')](_0xecb7e8,_0xe4d9('0x15a'));}logger['info'](util[_0xe4d9('0x23')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0xecb7e8[_0xe4d9('0x159')]));var _0x15f432=this[_0xe4d9('0x4b')][_0xe4d9('0x69')](this,_0xecb7e8['findBy']);if(_0x15f432){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x15b'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0xecb7e8[_0xe4d9('0x159')]));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x15b'),this['channel']['callerid'],_0xecb7e8['findBy']));return{'code':0xc8,'result':_0xe4d9('0x15c')};}else{logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x15d'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0xecb7e8['findBy']));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x15d'),this['channel']['callerid'],_0xecb7e8[_0xe4d9('0x159')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x161')]=function(_0x215873){logger['info'](util[_0xe4d9('0x23')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x215873[_0xe4d9('0x32')]));if(!this['isConfigured'](_0x215873[_0xe4d9('0x162')])){return this[_0xe4d9('0xc')]['error'](_0x215873,_0xe4d9('0x163'));}this[_0xe4d9('0xc')]['noop'](util['format']('math\x20%s',_0x215873[_0xe4d9('0x162')]));var _0x57226d=eval(_0x215873[_0xe4d9('0x162')]);if(!this[_0xe4d9('0x80')](_0x215873[_0xe4d9('0xda')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xd9'));}var _0x5335fc=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x215873['variable_id']);if(!_0x5335fc){return this[_0xe4d9('0xc')]['error'](_0x215873,_0xe4d9('0x164'));}if(_[_0xe4d9('0x95')](_0x57226d)){var _0x684f26=this;_0x57226d[_0xe4d9('0xdb')](function(_0x125719,_0x305dac){_0x684f26[_0xe4d9('0xc')][_0xe4d9('0x9a')](util[_0xe4d9('0x23')](_0xe4d9('0x165'),_0x5335fc,_0x305dac),_0x125719);});return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')]('variable\x20%s[key]\x20set',_0x5335fc));}else{return this[_0xe4d9('0xc')][_0xe4d9('0x9a')](_0x5335fc,_0x57226d);}};AGIVertices[_0xe4d9('0xe')]['menu']=function(_0x24d781){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x166'),_0x24d781[_0xe4d9('0x32')]));if(_0x24d781[_0xe4d9('0xa1')]===0x0){return this[_0xe4d9('0xa2')](_0x24d781);}_0x24d781[_0xe4d9('0xa1')]-=0x1;if(!this[_0xe4d9('0x80')](_0x24d781[_0xe4d9('0x116')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x24d781,_0xe4d9('0x117'));}var _0x535525=this[_0xe4d9('0x167')]['sync'](this,_0x24d781[_0xe4d9('0x116')]);if(!_0x535525){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x24d781,_0xe4d9('0x168'));}var _0x3b2017=this[_0xe4d9('0xc')][_0xe4d9('0x118')](_0x535525,_0x24d781[_0xe4d9('0x119')],_0x24d781[_0xe4d9('0x169')]);var _0x143958=_0x3b2017[_0xe4d9('0x9f')];if(_0x3b2017[_0xe4d9('0x9f')]===-0x1){this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x24d781,'-1');return _0x3b2017;}else if(_0x3b2017[_0xe4d9('0x9d')]==='timeout'){_0x3b2017['result']=_0x3b2017['result']['length']>0x0?_0x3b2017[_0xe4d9('0x9f')]:'t';}else if(_[_0xe4d9('0x3f')](_0x3b2017['result'])){_0x3b2017[_0xe4d9('0x9f')]='#';_0x143958='#';}if(!this[_0xe4d9('0x80')](_0x24d781[_0xe4d9('0xda')])){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xd9'));}else{var _0x11c6a9=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x24d781[_0xe4d9('0xda')]);if(!_0x11c6a9){return this['channel'][_0xe4d9('0x2c')](_0x24d781,_0xe4d9('0x164'));}this[_0xe4d9('0xc')][_0xe4d9('0x9a')](_0x11c6a9,_0x143958);}this['createSquareDetailsReport']['sync'](this,_0x24d781,_0x143958);return _0x3b2017;};AGIVertices['prototype'][_0xe4d9('0xa5')]=function(_0x32fdbf){logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0x16a'),_0x32fdbf['label']));return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0x32fdbf[_0xe4d9('0x16b')]||_0x32fdbf['label']);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x16c')]=function(_0x16294b){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x16d'),_0x16294b[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x16294b[_0xe4d9('0x159')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x16294b,_0xe4d9('0x15a'));}logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x16e'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x16294b[_0xe4d9('0x159')]));var _0x2c452b=this['getPause']['sync'](this,_0x16294b[_0xe4d9('0x16f')]);var _0x438c0b=this[_0xe4d9('0x170')][_0xe4d9('0x69')](this,_0x16294b[_0xe4d9('0x159')],_0x2c452b);if(_0x438c0b){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x15b'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x16294b[_0xe4d9('0x159')]));this['channel']['noop'](util[_0xe4d9('0x23')](_0xe4d9('0x15b'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x16294b[_0xe4d9('0x159')]));return{'code':0xc8,'result':_0xe4d9('0x15c')};}else{logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xe4d9('0xc')]['callerid'],_0x16294b[_0xe4d9('0x159')]));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x16294b[_0xe4d9('0x159')]));return{'code':0xc8,'result':_0xe4d9('0x15e')};}};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x171')]=function(_0x45abb1){logger['info'](util['format'](_0xe4d9('0x172'),_0x45abb1['label']));if(!this[_0xe4d9('0x80')](_0x45abb1['file_id'])){return this['channel']['error'](_0x45abb1,_0xe4d9('0x117'));}var _0x34a1a9=this[_0xe4d9('0x167')][_0xe4d9('0x69')](this,_0x45abb1[_0xe4d9('0x116')]);if(!_0x34a1a9){return this[_0xe4d9('0xc')]['error'](_0x45abb1,_0xe4d9('0x168'));}var _0x57c0ee=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0x173'),[_0x34a1a9,_0x45abb1[_0xe4d9('0xe7')]]);if(_0x57c0ee[_0xe4d9('0x9f')]===-0x1){return _0x57c0ee;}return this['channel']['noop'](util[_0xe4d9('0x23')](_0xe4d9('0xbf'),_0xe4d9('0x173'),_0x34a1a9));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x174')]=function(_0x228496){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x175'),_0x228496[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x228496[_0xe4d9('0x176')])){return this['channel'][_0xe4d9('0x2c')](_0x228496,_0xe4d9('0x177'));}var _0xf6ca9f='';var _0x55476b=parseInt(_0x228496[_0xe4d9('0x176')],0xa);if(isNaN(_0x55476b)){_0xf6ca9f=_0x228496[_0xe4d9('0x176')];}else{_0xf6ca9f=this['getVoiceQueue'][_0xe4d9('0x69')](this,_0x228496[_0xe4d9('0x176')]);if(!_0xf6ca9f){return this['channel'][_0xe4d9('0x2c')](_0x228496,_0xe4d9('0x178'));}}var _0x5201ee='';if(this[_0xe4d9('0x80')](_0x228496[_0xe4d9('0x116')])){var _0x71df18=this[_0xe4d9('0x167')][_0xe4d9('0x69')](this,_0x228496[_0xe4d9('0x116')]);if(_0x71df18){_0x5201ee=_0x71df18;}}this['createSquareDetailsReport'][_0xe4d9('0x69')](this,_0x228496,_0xf6ca9f);if(_0x228496['opts'][_0xe4d9('0x179')]('x')<0x0){_0x228496['opts']+='x';}if(_0x228496[_0xe4d9('0xe7')][_0xe4d9('0x179')]('X')<0x0){_0x228496[_0xe4d9('0xe7')]+='X';}this['channel']['setVariable'](_0xe4d9('0x17a'),_0xf6ca9f?_0xf6ca9f['toLowerCase']():'');var _0x570951=this['channel']['exec'](_0xe4d9('0x17b'),[_0xf6ca9f,_0x228496[_0xe4d9('0xe7')],_0x228496[_0xe4d9('0x5b')],_0x5201ee,_0x228496[_0xe4d9('0x5e')],_0x228496[_0xe4d9('0xaf')],_0x228496[_0xe4d9('0x17c')],_0x228496['gosub'],'',_0x228496[_0xe4d9('0x17d')]]);if(_0x570951['result']===-0x1){return _0x570951;}return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')](_0xe4d9('0xbf'),'QUEUE',_0xf6ca9f));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x17e')]=function(_0x6f4042){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x17f'),_0x6f4042[_0xe4d9('0x32')]));var _0x3095b1=_0x6f4042[_0xe4d9('0x180')]||'wav';var _0x4f5c7c=util[_0xe4d9('0x23')](_0xe4d9('0x181'),this[_0xe4d9('0xc')]['uniqueid'],rs[_0xe4d9('0x11e')](0x5));var _0x37b90c=util['format'](_0xe4d9('0x182'),FILES_PATH,_0x4f5c7c,_0x3095b1);var _0xdf0458=util['format'](_0xe4d9('0x133'),FILES_PATH,_0x4f5c7c);this['createSquareRecording'][_0xe4d9('0x69')](this,_0x6f4042,_0x4f5c7c,_0x37b90c);this['channel'][_0xe4d9('0x9a')](_0xe4d9('0x183'),_0x4f5c7c);logger[_0xe4d9('0x28')](_0xe4d9('0x184'),_0xdf0458,_0x3095b1,_0x6f4042[_0xe4d9('0x185')],_0x6f4042[_0xe4d9('0x5e')]);return this['channel'][_0xe4d9('0x134')](_0xdf0458,_0x3095b1,_0x6f4042[_0xe4d9('0x185')],_0x6f4042[_0xe4d9('0x5e')],undefined,!![]);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x186')]=function(_0x4d785b){logger['info'](util['format'](_0xe4d9('0x187'),_0x4d785b[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x4d785b[_0xe4d9('0x5b')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x188'));}var _0x17f23a=this[_0xe4d9('0x189')][_0xe4d9('0x69')](this,_0x4d785b);logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0x18a'),util[_0xe4d9('0x18b')](_0x17f23a,{'showHidden':![],'depth':null})));if(!this[_0xe4d9('0x80')](_0x4d785b[_0xe4d9('0xda')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x2decad=this['getVariable']['sync'](this,_0x4d785b[_0xe4d9('0xda')]);if(!_0x2decad){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x4d785b,_0xe4d9('0x164'));}this[_0xe4d9('0xc')][_0xe4d9('0x9a')](util['format']('%s_STATUS_CODE',_0x2decad),_0x17f23a['statusCode']?_0x17f23a[_0xe4d9('0x6e')]:_0xe4d9('0x18c'));this[_0xe4d9('0xc')][_0xe4d9('0x9a')](util['format'](_0xe4d9('0x18d'),_0x2decad),_0x17f23a[_0xe4d9('0x6f')]?_0x17f23a[_0xe4d9('0x6f')]:'OK');if(_0x17f23a[_0xe4d9('0x63')]){try{this[_0xe4d9('0x97')](_0x17f23a[_0xe4d9('0x63')],_0x2decad);}catch(_0x1df1a8){logger[_0xe4d9('0x2c')](util['format']('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x2decad));}}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x18e'),_0x2decad));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x18f')]=function(_0x445df9){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x190'),_0x445df9['label']));return this[_0xe4d9('0xc')]['sayDigits'](_0x445df9[_0xe4d9('0x191')][_0xe4d9('0x50')](/\s+/g,''),_0x445df9[_0xe4d9('0x185')]);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x192')]=function(_0x5d23fa){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x193'),_0x5d23fa['label']));return this[_0xe4d9('0xc')][_0xe4d9('0x194')](_0x5d23fa[_0xe4d9('0x5d')][_0xe4d9('0x50')](/\s+/g,''),_0x5d23fa[_0xe4d9('0x185')]);};AGIVertices[_0xe4d9('0xe')]['sayphonetic']=function(_0x20045e){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x20045e[_0xe4d9('0x32')]));return this[_0xe4d9('0xc')][_0xe4d9('0x195')](_0x20045e['text'],_0x20045e[_0xe4d9('0x185')]);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x196')]=function(_0x38994e){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x197'),_0x38994e[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x38994e['account_id'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x198'));}var _0x4a4cca=this[_0xe4d9('0x1b')][_0xe4d9('0x69')](this,_0x38994e['account_id']);if(!_0x4a4cca||!_0x4a4cca[_0xe4d9('0x199')]){return this[_0xe4d9('0xc')]['error'](_0x38994e,_0xe4d9('0x19a'));}var _0x22d7a4={'from':util[_0xe4d9('0x23')](_0xe4d9('0x19b'),_0x4a4cca['name'],_0x4a4cca[_0xe4d9('0x19c')]||_0x4a4cca[_0xe4d9('0x199')]['user']),'to':_0x38994e['to']||'','cc':_0x38994e['cc']||'','bcc':_0x38994e[_0xe4d9('0x19d')]||'','subject':_0x38994e[_0xe4d9('0x19e')],'html':_0x38994e['text'],'text':_0x38994e[_0xe4d9('0x54')]};if(this[_0xe4d9('0x80')](_0x38994e[_0xe4d9('0x19f')])){}logger[_0xe4d9('0xe0')](_0xe4d9('0x1a0'),JSON['stringify'](_0x22d7a4));this['createSquareDetailsReport'][_0xe4d9('0x69')](this,_0x38994e,_0x38994e[_0xe4d9('0x1a1')]);this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x1a2'),_0x4a4cca[_0xe4d9('0x13')]));this[_0xe4d9('0x1d')][_0xe4d9('0x69')](this,_0x4a4cca[_0xe4d9('0x1a3')],_0x22d7a4);return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x1a4'));};AGIVertices['prototype'][_0xe4d9('0x1a5')]=function(_0x510ed9){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x1a6'),_0x510ed9[_0xe4d9('0x32')]));return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x1a7'));};AGIVertices[_0xe4d9('0xe')]['sendSMS']=function(_0x7dd42c){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1a8'),_0x7dd42c[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x7dd42c['sms_account_id'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x1a9'));}var _0x2210e9=this['getSmsAccount'][_0xe4d9('0x69')](this,_0x7dd42c[_0xe4d9('0x1aa')]);if(!_0x2210e9){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x7dd42c,_0xe4d9('0x1ab'));}var _0x483340={'body':_0x7dd42c[_0xe4d9('0x1ac')],'phone':_0x7dd42c['to']||'','SmsAccountId':_0x2210e9['id']};logger['debug'](_0xe4d9('0x1ad'),JSON[_0xe4d9('0x6c')](_0x483340));this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x7dd42c,_0x7dd42c[_0xe4d9('0x1aa')]);this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x1ae'),_0x2210e9[_0xe4d9('0x13')]));this[_0xe4d9('0x2f')]['sync'](this,_0x483340);return this['channel'][_0xe4d9('0xa5')](_0xe4d9('0x1af'));};AGIVertices[_0xe4d9('0xe')]['set']=function(_0x46b42c){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1b0'),_0x46b42c[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x46b42c[_0xe4d9('0xda')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x46b42c,'no\x20variable\x20selected');}var _0x5dccea=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x46b42c[_0xe4d9('0xda')]);if(!_0x5dccea){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x46b42c,'no\x20variable\x20found');}return this[_0xe4d9('0xc')]['setVariable'](_0x5dccea,_0x46b42c[_0xe4d9('0x1b1')]);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1b2')]=function(_0x2e2a6d){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1b3'),_0x2e2a6d[_0xe4d9('0x32')]));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x1b4'));var _0x2fae76=this[_0xe4d9('0xc')][_0xe4d9('0xf')](_0xe4d9('0x1b5'));if(!_[_0xe4d9('0x3f')](_0x2fae76[_0xe4d9('0x9d')])){this[_0xe4d9('0xc')][_0xe4d9('0x31')]=_0x2fae76[_0xe4d9('0x9d')];}if(_0x2e2a6d[_0xe4d9('0xb6')]===_0xe4d9('0x1b6')){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x1b7'));return this[_0xe4d9('0xc')][_0xe4d9('0xb6')]();}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('Skipped\x20Answer');};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1b8')]=function(_0x5e0b49){logger['info'](util['format'](_0xe4d9('0x1b9'),_0x5e0b49['label']));if(!this[_0xe4d9('0x80')](_0x5e0b49['project_id'])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x5e0b49,_0xe4d9('0x1ba'));}var _0x38cfcb=this[_0xe4d9('0x1bb')][_0xe4d9('0x69')](this,_0x5e0b49[_0xe4d9('0x1bc')]);if(!this[_0xe4d9('0x80')](_0x38cfcb)){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x5e0b49,util[_0xe4d9('0x23')](_0xe4d9('0x1bd'),_0x5e0b49['project_id']));}if(_0x38cfcb===this['channel'][_0xe4d9('0x34')]){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x5e0b49,_0xe4d9('0x1be'));}this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x5e0b49,_0x38cfcb);var _0x48bc09=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0x1bf'),util['format']('agi://%s/square,\x22%s\x22,\x22%s\x22',config['agi'][_0xe4d9('0x1c0')]||_0xe4d9('0x1c1'),_0x38cfcb,this[_0xe4d9('0xc')][_0xe4d9('0x34')]));if(_0x48bc09[_0xe4d9('0x9f')]===-0x1){return _0x48bc09;}return this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xbf'),_0xe4d9('0x1bf'),_0x38cfcb));};AGIVertices['prototype'][_0xe4d9('0x1c2')]=function(_0x4df273){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x4df273['label']));var _0x58bff8=this[_0xe4d9('0x4e')]['sync'](this,_0x4df273[_0xe4d9('0xb1')]);this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x4df273,_0x4df273[_0xe4d9('0xb1')]);if(this[_0xe4d9('0x80')](_0x4df273[_0xe4d9('0xda')])){var _0x3c3c46=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x4df273['variable_id']);if(_0x3c3c46){this[_0xe4d9('0xc')][_0xe4d9('0x9a')](_0x3c3c46,_0x58bff8);return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x4df273['command'],_0x3c3c46));}}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x1c3'),_0x4df273['command']));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1c4')]=function(_0x26a72c){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1c5'),_0x26a72c[_0xe4d9('0x32')]));_0x26a72c[_0xe4d9('0x54')]=_0x26a72c['text'][_0xe4d9('0x50')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x26a72c['apiKey'])){return this['channel']['noop'](_0xe4d9('0x1c6'));}if(!this[_0xe4d9('0x80')](_0x26a72c[_0xe4d9('0x54')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x1c7'),_0x26a72c[_0xe4d9('0x54')]));var _0x50b51b=this['googleCloudTTS'][_0xe4d9('0x69')](this,_0x26a72c);if(_0x50b51b){this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x1c8'),_0x50b51b));var _0x5292=this['channel']['streamFile'](_0x50b51b);try{fs[_0xe4d9('0x108')](_0x50b51b+'.wav');}catch(_0x454d2a){logger[_0xe4d9('0x2c')](_0x454d2a);}return _0x5292;}return this[_0xe4d9('0xc')]['error'](_0x26a72c,_0xe4d9('0x1c9'));};AGIVertices['prototype'][_0xe4d9('0x1ca')]=function(_0x1a447e){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x1cb'),_0x1a447e[_0xe4d9('0x32')]));_0x1a447e[_0xe4d9('0x54')]=_0x1a447e[_0xe4d9('0x54')][_0xe4d9('0x50')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x1a447e[_0xe4d9('0x54')])){return this['channel']['noop'](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('Trying\x20Google\x20TTS\x20%s',_0x1a447e[_0xe4d9('0x54')]));var _0x3a4c21=this['googleTTS'][_0xe4d9('0x69')](this,_0x1a447e);if(_0x3a4c21){this['channel'][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x1cc'),_0x3a4c21));var _0x20d2c7=this[_0xe4d9('0xc')][_0xe4d9('0x107')](_0x3a4c21);try{fs['unlink'](_0x3a4c21+_0xe4d9('0x127'));}catch(_0x45189a){logger[_0xe4d9('0x2c')](_0x45189a);}return _0x20d2c7;}return this['channel'][_0xe4d9('0x2c')](_0x1a447e,_0xe4d9('0x1cd'));};AGIVertices[_0xe4d9('0xe')]['unpause']=function(_0x5b26df){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x1ce'),_0x5b26df[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x5b26df[_0xe4d9('0x159')])){return this[_0xe4d9('0xc')]['error'](_0x5b26df,'no\x20find\x20by\x20configured');}logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x16e'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x5b26df['findBy']));var _0x4c9c19=this[_0xe4d9('0x4a')][_0xe4d9('0x69')](this,_0x5b26df[_0xe4d9('0x159')]);if(_0x4c9c19){logger['info'](util[_0xe4d9('0x23')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xe4d9('0x35')],_0x5b26df['findBy']));this['channel'][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x15b'),this[_0xe4d9('0xc')]['callerid'],_0x5b26df[_0xe4d9('0x159')]));return{'code':0xc8,'result':_0xe4d9('0x15c')};}else{logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x15d'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x5b26df['findBy']));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x15d'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x5b26df[_0xe4d9('0x159')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype']['voicemail']=function(_0x1aeadd){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1cf'),_0x1aeadd[_0xe4d9('0x32')]));var _0x11da36=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0x1d0'),[_0x1aeadd[_0xe4d9('0x1d1')],_0x1aeadd['options']]);if(_0x11da36[_0xe4d9('0x9f')]===-0x1){return _0x11da36;}return this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xbf'),_0xe4d9('0x1d0'),_0x1aeadd['mailbox']));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1d2')]=function(_0x318e97){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1d3'),_0x318e97[_0xe4d9('0x32')]));if(!this['isConfigured'](_0x318e97[_0xe4d9('0xda')])){return this[_0xe4d9('0xc')]['error'](_0x318e97,'no\x20variable\x20selected');}var _0x5240fe=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x318e97['variable_id']);if(!_0x5240fe){return this['channel'][_0xe4d9('0x2c')](_0x318e97,'no\x20variable\x20found');}var _0x18bc6d=this[_0xe4d9('0xc')][_0xe4d9('0xf')](_0x5240fe);return{'code':0xc8,'result':_0x18bc6d['extra']?_0x18bc6d[_0xe4d9('0x9d')]:'-'};};String['prototype'][_0xe4d9('0x9c')]=function(_0x5db165,_0x2e807d){return this[_0xe4d9('0x9b')](_0x5db165)[_0xe4d9('0x1d4')](_0x2e807d);};module[_0xe4d9('0x1d5')]=AGIVertices;
\ No newline at end of file
index 265e0b5..65ad1cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa90a=['[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','prototype','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','available','paused','acwTimeout','stopAcw','YYYY-MM-DD\x20HH:mm:ss','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','syncAgentConnect','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','linkedid','attended','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','bind','syncHangup','agentringnoanswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','milliseconds','diff','seconds','updateAcw','lastPauseAt','timer','uniqueid','then','info'];(function(_0x2e2fd8,_0x130a97){var _0x1c5dbf=function(_0x502b5a){while(--_0x502b5a){_0x2e2fd8['push'](_0x2e2fd8['shift']());}};_0x1c5dbf(++_0x130a97);}(_0xa90a,0x1f4));var _0xaa90=function(_0x127f4a,_0x396d33){_0x127f4a=_0x127f4a-0x0;var _0x338fcd=_0xa90a[_0x127f4a];return _0x338fcd;};'use strict';var _=require(_0xaa90('0x0'));var moment=require(_0xaa90('0x1'));var ami=require(_0xaa90('0x2'));var logger=require(_0xaa90('0x3'))(_0xaa90('0x4'));var RpcUser=require(_0xaa90('0x5'));var RpcVoiceAgentReport=require(_0xaa90('0x6'));function Acw(_0x465e95){this[_0xaa90('0x7')]=_0x465e95[_0xaa90('0x7')];this[_0xaa90('0x8')]=_0x465e95[_0xaa90('0x8')];this[_0xaa90('0x9')]=_0x465e95[_0xaa90('0x9')];this[_0xaa90('0xa')]={};ami['on'](_0xaa90('0xb'),this['syncAgentConnect']['bind'](this));ami['on']('hanguprequest',this['syncHangupRequest'][_0xaa90('0xc')](this));ami['on']('hangup',this[_0xaa90('0xd')]['bind'](this));ami['on'](_0xaa90('0xe'),this['syncAgentRingNoAnswer'][_0xaa90('0xc')](this));ami['on'](_0xaa90('0xf'),this[_0xaa90('0x10')][_0xaa90('0xc')](this));ami['on'](_0xaa90('0x11'),this['syncBlindTransfer'][_0xaa90('0xc')](this));ami['on'](_0xaa90('0x12'),this['syncAgentConnectPreview'][_0xaa90('0xc')](this));}function getDiff(_0x213874){var _0x2c12ad=moment()['milliseconds'](0x0);var _0x35a353=moment(_0x213874)[_0xaa90('0x13')](0x0);return _0x2c12ad[_0xaa90('0x14')](_0x35a353,_0xaa90('0x15'));}Acw['prototype'][_0xaa90('0x16')]=function(_0x1c5a95,_0x82ff6f){var _0x409e57=this;var _0x15a62e=getDiff(_0x409e57['timers'][_0x1c5a95][_0xaa90('0x17')]);clearTimeout(_0x409e57[_0xaa90('0x9')][_0x1c5a95][_0xaa90('0x18')]);_0x409e57[_0xaa90('0x9')][_0x1c5a95][_0xaa90('0x18')]=![];return RpcVoiceAgentReport['update']({'acwtime':_0x15a62e},_0x409e57['timers'][_0x1c5a95][_0xaa90('0x19')],_0x1c5a95)[_0xaa90('0x1a')](function(_0x1b6cc8){logger[_0xaa90('0x1b')](_0xaa90('0x1c'),_0x82ff6f,_0x15a62e,_0x1b6cc8);})[_0xaa90('0x1d')](function(_0x4ec77b){logger[_0xaa90('0x1e')](_0xaa90('0x1f'),_0x82ff6f,_0x4ec77b);})[_0xaa90('0x20')](function(){delete _0x409e57['timers'][_0x1c5a95];});};Acw[_0xaa90('0x21')][_0xaa90('0x22')]=function(_0x53bfc1){try{var _0x2709f9=this;var _0x319b3a=this[_0xaa90('0xa')][_0x53bfc1][_0xaa90('0x23')];var _0x3a5209=this[_0xaa90('0xa')][_0x53bfc1][_0xaa90('0x24')];var _0x46de74=this['voiceQueues'][_0x3a5209];var _0x2843f3=![];var _0x37e46d=_0xaa90('0x25');if(_0x46de74[_0xaa90('0x26')]&&_0x46de74[_0xaa90('0x27')][_0xaa90('0x28')]){_0x2843f3=!![];_0x37e46d=_0x46de74[_0xaa90('0x27')][_0xaa90('0x28')];}if(!_0x2709f9[_0xaa90('0x8')][_0x319b3a]){return Promise['resolve']();}return RpcUser[_0xaa90('0x29')](_0x2709f9[_0xaa90('0x8')][_0x319b3a]['id'])['then'](function(_0x4e98c3){if(!_0x4e98c3||_0x4e98c3[_0xaa90('0x2a')]){logger[_0xaa90('0x1b')](_0xaa90('0x2b'),_0x53bfc1,_0x319b3a,_0x3a5209);return;}logger[_0xaa90('0x1b')](_0xaa90('0x2c'),_0x53bfc1,_0x319b3a,_0x3a5209);var _0x3d2c54=_0x2709f9[_0xaa90('0xa')][_0x53bfc1]['attended']&&_0x2709f9[_0xaa90('0xa')][_0x53bfc1][_0xaa90('0x2d')]?_0x2709f9['channels'][_0x53bfc1]['destlinkedid']:_0x53bfc1;return RpcUser['savePause'](_0x2709f9[_0xaa90('0x8')][_0x319b3a],_0x37e46d,_0x3d2c54)[_0xaa90('0x1a')](function(_0x4cc4d2){_0x2709f9['voiceQueues'][_0x3a5209][_0xaa90('0x2e')]-=0x1;_0x2709f9['voiceQueues'][_0x3a5209][_0xaa90('0x2f')]+=0x1;return _0x4cc4d2;});})[_0xaa90('0x1a')](function(_0x308778){if(_0x2843f3||!_0x308778){return;}_0x2709f9['timers'][_0x319b3a]={};logger[_0xaa90('0x1b')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x53bfc1,_0x2709f9['voiceQueues'][_0x3a5209][_0xaa90('0x30')],_0x319b3a,_0x3a5209);_0x2709f9[_0xaa90('0x9')][_0x319b3a][_0xaa90('0x18')]=setTimeout(_0x2709f9[_0xaa90('0x31')][_0xaa90('0xc')](_0x2709f9,_0x319b3a),_0x2709f9[_0xaa90('0x7')][_0x3a5209][_0xaa90('0x30')]*0x3e8);_0x2709f9[_0xaa90('0x9')][_0x319b3a]['lastPauseAt']=moment()['format'](_0xaa90('0x32'));_0x2709f9[_0xaa90('0x9')][_0x319b3a][_0xaa90('0x19')]=_0x53bfc1;_0x2709f9[_0xaa90('0x9')][_0x319b3a][_0xaa90('0x24')]=_0x3a5209;_0x2709f9[_0xaa90('0x9')][_0x319b3a][_0xaa90('0x16')]=_0x2709f9[_0xaa90('0x16')][_0xaa90('0xc')](_0x2709f9,_0x319b3a,_0x53bfc1);})['catch'](function(){logger[_0xaa90('0x1e')](_0xaa90('0x33'),_0x53bfc1,_0x2709f9[_0xaa90('0x7')][_0x3a5209][_0xaa90('0x30')],_0x319b3a,_0x3a5209);})[_0xaa90('0x20')](function(){delete _0x2709f9[_0xaa90('0xa')][_0x53bfc1];});}catch(_0x1d74ff){logger[_0xaa90('0x1e')](_0xaa90('0x34'),_0x1d74ff[_0xaa90('0x35')]);}};Acw['prototype'][_0xaa90('0x31')]=function(_0x37bbd2){try{var _0xa1788f=this;if(_0xa1788f[_0xaa90('0x9')][_0x37bbd2]){_0xa1788f[_0xaa90('0x9')][_0x37bbd2][_0xaa90('0x18')]=![];var _0x23c9f6=_0xa1788f[_0xaa90('0x9')][_0x37bbd2][_0xaa90('0x19')];var _0x56daa3=_0xa1788f[_0xaa90('0x9')][_0x37bbd2]['queue'];var _0x1fb39b=_0xa1788f[_0xaa90('0x7')][_0x56daa3][_0xaa90('0x30')];logger['info'](_0xaa90('0x36'),_0x23c9f6,_0x37bbd2);RpcUser[_0xaa90('0x29')](this['agents'][_0x37bbd2]['id'])[_0xaa90('0x1a')](function(_0x2d62f6){if(_0x2d62f6['pauseType']===_0xaa90('0x25')){return RpcUser['saveUnpause'](_0xa1788f['agents'][_0x37bbd2]);}});RpcVoiceAgentReport[_0xaa90('0x37')]({'acwtime':_0x1fb39b,'agentacw':!![]},_0x23c9f6,_0x37bbd2)[_0xaa90('0x1a')](function(_0x3f74bc){logger[_0xaa90('0x1b')](_0xaa90('0x1c'),_0x23c9f6,_0x1fb39b,_0x3f74bc);})[_0xaa90('0x1d')](function(_0x5e657a){logger[_0xaa90('0x1e')]('[%s][UPDATE][ERRORS:%s]',_0x23c9f6,_0x5e657a);});}else{logger[_0xaa90('0x1e')](_0xaa90('0x38'),_0x37bbd2);if(_0xa1788f[_0xaa90('0x9')]){logger['info'](_0xaa90('0x39'),JSON[_0xaa90('0x3a')](_0xa1788f[_0xaa90('0x9')]));}}}catch(_0x59eaf9){logger[_0xaa90('0x1e')](_0xaa90('0x3b'),_0x59eaf9[_0xaa90('0x35')]);}};Acw['prototype'][_0xaa90('0x3c')]=function(_0x496420){try{if(this['voiceQueues'][_0x496420[_0xaa90('0x24')]]&&(this['voiceQueues'][_0x496420[_0xaa90('0x24')]][_0xaa90('0x4')]||this[_0xaa90('0x7')][_0x496420[_0xaa90('0x24')]][_0xaa90('0x26')])){if(this[_0xaa90('0x8')][_0x496420[_0xaa90('0x23')]]){this[_0xaa90('0xa')][_0x496420[_0xaa90('0x19')]]={'queue':_0x496420[_0xaa90('0x24')],'interface':_0x496420[_0xaa90('0x23')],'destlinkedid':_0x496420[_0xaa90('0x2d')]};}}}catch(_0x9d87de){logger[_0xaa90('0x1e')](_0xaa90('0x3d'),_0x9d87de[_0xaa90('0x35')]);}};Acw['prototype'][_0xaa90('0x3e')]=function(_0xe291a9){try{if(this['voiceQueues'][_0xe291a9[_0xaa90('0x24')]]&&(this[_0xaa90('0x7')][_0xe291a9['queue']]['acw']||this[_0xaa90('0x7')][_0xe291a9[_0xaa90('0x24')]][_0xaa90('0x26')])){if(this[_0xaa90('0x8')][_0xe291a9[_0xaa90('0x23')]]){this['channels'][_0xe291a9[_0xaa90('0x19')]]={'queue':_0xe291a9[_0xaa90('0x24')],'interface':_0xe291a9[_0xaa90('0x23')]};}}}catch(_0x4aed04){logger[_0xaa90('0x1e')](_0xaa90('0x3f'),_0x4aed04['message']);}};Acw[_0xaa90('0x21')][_0xaa90('0x40')]=function(_0x3a1f59){try{if(this[_0xaa90('0xa')][_0x3a1f59[_0xaa90('0x19')]]&&_[_0xaa90('0x41')](this[_0xaa90('0xa')][_0x3a1f59[_0xaa90('0x19')]]['attended'])){logger['info']('[%s][HANGUP:UNIQUEID]',_0x3a1f59[_0xaa90('0x19')]);this[_0xaa90('0x22')](_0x3a1f59[_0xaa90('0x19')]);}else if(this[_0xaa90('0xa')][_0x3a1f59[_0xaa90('0x42')]]&&_['isUndefined'](this[_0xaa90('0xa')][_0x3a1f59[_0xaa90('0x42')]][_0xaa90('0x43')])){logger[_0xaa90('0x1b')](_0xaa90('0x44'),_0x3a1f59[_0xaa90('0x42')]);this[_0xaa90('0x22')](_0x3a1f59[_0xaa90('0x42')]);}}catch(_0x32bd09){logger[_0xaa90('0x1e')]('[ACW][syncHangupRequest]\x20%s',_0x32bd09['message']);}};Acw[_0xaa90('0x21')][_0xaa90('0xd')]=function(_0x1adb8f){try{if(this['channels'][_0x1adb8f[_0xaa90('0x19')]]&&this[_0xaa90('0xa')][_0x1adb8f['uniqueid']][_0xaa90('0x43')]){logger[_0xaa90('0x1b')](_0xaa90('0x45'),_0x1adb8f[_0xaa90('0x19')]);this[_0xaa90('0x22')](_0x1adb8f[_0xaa90('0x19')]);}else if(this[_0xaa90('0xa')][_0x1adb8f[_0xaa90('0x42')]]&&this['channels'][_0x1adb8f[_0xaa90('0x42')]][_0xaa90('0x43')]){logger[_0xaa90('0x1b')](_0xaa90('0x46'),_0x1adb8f[_0xaa90('0x42')]);this['startAcw'](_0x1adb8f[_0xaa90('0x42')]);}}catch(_0x16f7b1){logger['error'](_0xaa90('0x47'),_0x16f7b1[_0xaa90('0x35')]);}};Acw[_0xaa90('0x21')][_0xaa90('0x10')]=function(_0x5a281a){try{if(!_[_0xaa90('0x48')](this['channels'][_0x5a281a[_0xaa90('0x49')]])){this[_0xaa90('0x22')](_0x5a281a[_0xaa90('0x49')]);if(this[_0xaa90('0xa')][_0x5a281a['secondtransfereruniqueid']]){this[_0xaa90('0xa')][_0x5a281a[_0xaa90('0x4a')]]['attended']=!![];this[_0xaa90('0xa')][_0x5a281a['transfertargetuniqueid']]=this['channels'][_0x5a281a['secondtransfereruniqueid']];delete this[_0xaa90('0xa')][_0x5a281a[_0xaa90('0x4a')]];}}else if(!_['isNil'](this[_0xaa90('0xa')][_0x5a281a[_0xaa90('0x4b')]])){this[_0xaa90('0x22')](_0x5a281a['transfertargetuniqueid']);if(this['channels'][_0x5a281a[_0xaa90('0x4c')]]){this[_0xaa90('0xa')][_0x5a281a[_0xaa90('0x4c')]][_0xaa90('0x43')]=!![];this[_0xaa90('0xa')][_0x5a281a['transfereeuniqueid']]=this[_0xaa90('0xa')][_0x5a281a['origtransfereruniqueid']];delete this[_0xaa90('0xa')][_0x5a281a[_0xaa90('0x4c')]];}}}catch(_0x768fc7){logger['error'](_0xaa90('0x4d'),_0x768fc7[_0xaa90('0x35')]);}};Acw[_0xaa90('0x21')]['syncBlindTransfer']=function(_0x401721){try{if(this['channels'][_0x401721[_0xaa90('0x4e')]]){logger['info'](_0xaa90('0x4f'),JSON[_0xaa90('0x3a')](_0x401721['transfereruniqueid']));this[_0xaa90('0x22')](_0x401721[_0xaa90('0x4e')]);}else if(this[_0xaa90('0xa')][_0x401721['transfererlinkedid']]){logger[_0xaa90('0x1b')](_0xaa90('0x50'),JSON[_0xaa90('0x3a')](_0x401721[_0xaa90('0x51')]));this[_0xaa90('0x22')](_0x401721[_0xaa90('0x51')]);}}catch(_0x4e7b01){logger[_0xaa90('0x1e')](_0xaa90('0x52'),_0x4e7b01[_0xaa90('0x35')]);}};Acw['prototype'][_0xaa90('0x53')]=function(_0x5db8d2){try{if(this[_0xaa90('0x7')][_0x5db8d2[_0xaa90('0x24')]]&&this['voiceQueues'][_0x5db8d2[_0xaa90('0x24')]][_0xaa90('0x54')]==='all'){if(this[_0xaa90('0x8')][_0x5db8d2[_0xaa90('0x23')]]){logger[_0xaa90('0x1b')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x5db8d2[_0xaa90('0x19')],_0x5db8d2[_0xaa90('0x23')],_0x5db8d2[_0xaa90('0x24')]);return RpcUser[_0xaa90('0x55')](this[_0xaa90('0x8')][_0x5db8d2[_0xaa90('0x23')]],_0xaa90('0x56'),_0x5db8d2[_0xaa90('0x19')]);}}}catch(_0x3c0eb3){logger[_0xaa90('0x1e')](_0xaa90('0x57'),_0x3c0eb3[_0xaa90('0x35')]);}};module['exports']=Acw;
\ No newline at end of file
+var _0xed1c=['hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','seconds','prototype','updateAcw','lastPauseAt','timer','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','startAcw','channels','interface','queue','mandatoryDisposition','mandatoryDispositionPause','name','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','acw','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','bind'];(function(_0x336ca2,_0x1a813a){var _0xda59a6=function(_0x47caa6){while(--_0x47caa6){_0x336ca2['push'](_0x336ca2['shift']());}};_0xda59a6(++_0x1a813a);}(_0xed1c,0xe4));var _0xced1=function(_0x22af22,_0x5b5c55){_0x22af22=_0x22af22-0x0;var _0x4c94b8=_0xed1c[_0x22af22];return _0x4c94b8;};'use strict';var _=require(_0xced1('0x0'));var moment=require(_0xced1('0x1'));var ami=require('../ami');var logger=require('../../../config/logger')('acw');var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xced1('0x2'));function Acw(_0x329a0a){this[_0xced1('0x3')]=_0x329a0a['voiceQueues'];this[_0xced1('0x4')]=_0x329a0a[_0xced1('0x4')];this[_0xced1('0x5')]=_0x329a0a[_0xced1('0x5')];this['channels']={};ami['on'](_0xced1('0x6'),this[_0xced1('0x7')][_0xced1('0x8')](this));ami['on'](_0xced1('0x9'),this[_0xced1('0xa')][_0xced1('0x8')](this));ami['on'](_0xced1('0xb'),this[_0xced1('0xc')]['bind'](this));ami['on'](_0xced1('0xd'),this['syncAgentRingNoAnswer'][_0xced1('0x8')](this));ami['on'](_0xced1('0xe'),this[_0xced1('0xf')][_0xced1('0x8')](this));ami['on'](_0xced1('0x10'),this[_0xced1('0x11')][_0xced1('0x8')](this));ami['on']('custom:agentConnectPreview',this[_0xced1('0x12')][_0xced1('0x8')](this));}function getDiff(_0x1b7a33){var _0x52d96a=moment()['milliseconds'](0x0);var _0xdaaea7=moment(_0x1b7a33)[_0xced1('0x13')](0x0);return _0x52d96a['diff'](_0xdaaea7,_0xced1('0x14'));}Acw[_0xced1('0x15')][_0xced1('0x16')]=function(_0x32100b,_0x47baec){var _0x5560af=this;var _0x3eb3ac=getDiff(_0x5560af[_0xced1('0x5')][_0x32100b][_0xced1('0x17')]);clearTimeout(_0x5560af[_0xced1('0x5')][_0x32100b][_0xced1('0x18')]);_0x5560af[_0xced1('0x5')][_0x32100b]['timer']=![];return RpcVoiceAgentReport['update']({'acwtime':_0x3eb3ac},_0x5560af[_0xced1('0x5')][_0x32100b][_0xced1('0x19')],_0x32100b)[_0xced1('0x1a')](function(_0x5257e7){logger[_0xced1('0x1b')](_0xced1('0x1c'),_0x47baec,_0x3eb3ac,_0x5257e7);})[_0xced1('0x1d')](function(_0x4eed16){logger[_0xced1('0x1e')](_0xced1('0x1f'),_0x47baec,_0x4eed16);})[_0xced1('0x20')](function(){delete _0x5560af['timers'][_0x32100b];});};Acw[_0xced1('0x15')][_0xced1('0x21')]=function(_0xc1bd39){try{var _0x5f1474=this;var _0x4dab56=this[_0xced1('0x22')][_0xc1bd39][_0xced1('0x23')];var _0x2a6248=this[_0xced1('0x22')][_0xc1bd39][_0xced1('0x24')];var _0x49c8b9=this[_0xced1('0x3')][_0x2a6248];var _0xdd5a47=![];var _0x4ea85e='ACW';if(_0x49c8b9[_0xced1('0x25')]&&_0x49c8b9[_0xced1('0x26')][_0xced1('0x27')]){_0xdd5a47=!![];_0x4ea85e=_0x49c8b9[_0xced1('0x26')][_0xced1('0x27')];}if(!_0x5f1474[_0xced1('0x4')][_0x4dab56]){return Promise['resolve']();}return RpcUser[_0xced1('0x28')](_0x5f1474[_0xced1('0x4')][_0x4dab56]['id'])[_0xced1('0x1a')](function(_0x351afc){if(!_0x351afc||_0x351afc[_0xced1('0x29')]){logger[_0xced1('0x1b')](_0xced1('0x2a'),_0xc1bd39,_0x4dab56,_0x2a6248);return;}logger['info'](_0xced1('0x2b'),_0xc1bd39,_0x4dab56,_0x2a6248);var _0x4ef64e=_0x5f1474[_0xced1('0x22')][_0xc1bd39][_0xced1('0x2c')]&&_0x5f1474[_0xced1('0x22')][_0xc1bd39][_0xced1('0x2d')]?_0x5f1474['channels'][_0xc1bd39]['destlinkedid']:_0xc1bd39;return RpcUser[_0xced1('0x2e')](_0x5f1474[_0xced1('0x4')][_0x4dab56],_0x4ea85e,_0x4ef64e);})[_0xced1('0x1a')](function(_0x4ea07e){if(_0xdd5a47||!_0x4ea07e){return;}_0x5f1474['timers'][_0x4dab56]={};logger['info'](_0xced1('0x2f'),_0xc1bd39,_0x5f1474[_0xced1('0x3')][_0x2a6248][_0xced1('0x30')],_0x4dab56,_0x2a6248);_0x5f1474[_0xced1('0x5')][_0x4dab56]['timer']=setTimeout(_0x5f1474[_0xced1('0x31')][_0xced1('0x8')](_0x5f1474,_0x4dab56),_0x5f1474[_0xced1('0x3')][_0x2a6248][_0xced1('0x30')]*0x3e8);_0x5f1474[_0xced1('0x5')][_0x4dab56][_0xced1('0x17')]=moment()[_0xced1('0x32')]('YYYY-MM-DD\x20HH:mm:ss');_0x5f1474['timers'][_0x4dab56][_0xced1('0x19')]=_0xc1bd39;_0x5f1474[_0xced1('0x5')][_0x4dab56][_0xced1('0x24')]=_0x2a6248;_0x5f1474[_0xced1('0x5')][_0x4dab56][_0xced1('0x16')]=_0x5f1474[_0xced1('0x16')]['bind'](_0x5f1474,_0x4dab56,_0xc1bd39);})['catch'](function(){logger['error']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0xc1bd39,_0x5f1474[_0xced1('0x3')][_0x2a6248][_0xced1('0x30')],_0x4dab56,_0x2a6248);})[_0xced1('0x20')](function(){delete _0x5f1474[_0xced1('0x22')][_0xc1bd39];});}catch(_0x5c76bb){logger[_0xced1('0x1e')](_0xced1('0x33'),_0x5c76bb[_0xced1('0x34')]);}};Acw[_0xced1('0x15')][_0xced1('0x31')]=function(_0x306e19){try{var _0x1db647=this;if(_0x1db647[_0xced1('0x5')][_0x306e19]){_0x1db647['timers'][_0x306e19][_0xced1('0x18')]=![];var _0x23db06=_0x1db647[_0xced1('0x5')][_0x306e19][_0xced1('0x19')];var _0x3bdc6f=_0x1db647[_0xced1('0x5')][_0x306e19]['queue'];var _0xc7afa1=_0x1db647[_0xced1('0x3')][_0x3bdc6f][_0xced1('0x30')];logger[_0xced1('0x1b')](_0xced1('0x35'),_0x23db06,_0x306e19);RpcUser[_0xced1('0x36')](this[_0xced1('0x4')][_0x306e19]);RpcVoiceAgentReport[_0xced1('0x37')]({'acwtime':_0xc7afa1,'agentacw':!![]},_0x23db06,_0x306e19)[_0xced1('0x1a')](function(_0x359a10){logger[_0xced1('0x1b')]('[%s][UPDATE][ACWTIME:%s]',_0x23db06,_0xc7afa1,_0x359a10);})['catch'](function(_0x26b74b){logger[_0xced1('0x1e')](_0xced1('0x1f'),_0x23db06,_0x26b74b);});}else{logger['error'](_0xced1('0x38'),_0x306e19);if(_0x1db647[_0xced1('0x5')]){logger[_0xced1('0x1b')]('[ACW][TIMERS]',JSON[_0xced1('0x39')](_0x1db647[_0xced1('0x5')]));}}}catch(_0x5a01f6){logger[_0xced1('0x1e')]('[ACW][STOP]\x20%s',_0x5a01f6[_0xced1('0x34')]);}};Acw[_0xced1('0x15')]['syncAgentConnect']=function(_0x1ddaea){try{if(this[_0xced1('0x3')][_0x1ddaea[_0xced1('0x24')]]&&(this['voiceQueues'][_0x1ddaea[_0xced1('0x24')]][_0xced1('0x3a')]||this['voiceQueues'][_0x1ddaea[_0xced1('0x24')]]['mandatoryDisposition'])){if(this['agents'][_0x1ddaea[_0xced1('0x23')]]){this['channels'][_0x1ddaea[_0xced1('0x19')]]={'queue':_0x1ddaea[_0xced1('0x24')],'interface':_0x1ddaea[_0xced1('0x23')],'destlinkedid':_0x1ddaea['destlinkedid']};}}}catch(_0x1809c7){logger['error'](_0xced1('0x3b'),_0x1809c7[_0xced1('0x34')]);}};Acw[_0xced1('0x15')][_0xced1('0x12')]=function(_0x5e20a5){try{if(this[_0xced1('0x3')][_0x5e20a5[_0xced1('0x24')]]&&(this['voiceQueues'][_0x5e20a5[_0xced1('0x24')]][_0xced1('0x3a')]||this['voiceQueues'][_0x5e20a5[_0xced1('0x24')]][_0xced1('0x25')])){if(this[_0xced1('0x4')][_0x5e20a5['interface']]){this[_0xced1('0x22')][_0x5e20a5[_0xced1('0x19')]]={'queue':_0x5e20a5[_0xced1('0x24')],'interface':_0x5e20a5[_0xced1('0x23')]};}}}catch(_0x376619){logger['error'](_0xced1('0x3c'),_0x376619['message']);}};Acw[_0xced1('0x15')][_0xced1('0xa')]=function(_0xf06f87){try{if(this[_0xced1('0x22')][_0xf06f87[_0xced1('0x19')]]&&_[_0xced1('0x3d')](this['channels'][_0xf06f87[_0xced1('0x19')]][_0xced1('0x2c')])){logger['info'](_0xced1('0x3e'),_0xf06f87['uniqueid']);this['startAcw'](_0xf06f87[_0xced1('0x19')]);}else if(this[_0xced1('0x22')][_0xf06f87[_0xced1('0x3f')]]&&_[_0xced1('0x3d')](this['channels'][_0xf06f87[_0xced1('0x3f')]][_0xced1('0x2c')])){logger[_0xced1('0x1b')]('[%s][HANGUP:LINKEDID]',_0xf06f87['linkedid']);this[_0xced1('0x21')](_0xf06f87[_0xced1('0x3f')]);}}catch(_0xad1d9f){logger[_0xced1('0x1e')]('[ACW][syncHangupRequest]\x20%s',_0xad1d9f['message']);}};Acw['prototype'][_0xced1('0xc')]=function(_0x14fcc0){try{if(this[_0xced1('0x22')][_0x14fcc0[_0xced1('0x19')]]&&this[_0xced1('0x22')][_0x14fcc0[_0xced1('0x19')]][_0xced1('0x2c')]){logger[_0xced1('0x1b')](_0xced1('0x40'),_0x14fcc0['uniqueid']);this[_0xced1('0x21')](_0x14fcc0[_0xced1('0x19')]);}else if(this[_0xced1('0x22')][_0x14fcc0['linkedid']]&&this[_0xced1('0x22')][_0x14fcc0[_0xced1('0x3f')]][_0xced1('0x2c')]){logger[_0xced1('0x1b')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x14fcc0[_0xced1('0x3f')]);this['startAcw'](_0x14fcc0['linkedid']);}}catch(_0x1a2b65){logger[_0xced1('0x1e')]('[ACW][syncHangup]\x20%s',_0x1a2b65['message']);}};Acw['prototype'][_0xced1('0xf')]=function(_0x5dfcf4){try{if(!_[_0xced1('0x41')](this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x42')]])){this[_0xced1('0x21')](_0x5dfcf4[_0xced1('0x42')]);if(this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x43')]]){this[_0xced1('0x22')][_0x5dfcf4['secondtransfereruniqueid']]['attended']=!![];this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x44')]]=this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x43')]];delete this['channels'][_0x5dfcf4[_0xced1('0x43')]];}}else if(!_[_0xced1('0x41')](this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x44')]])){this['startAcw'](_0x5dfcf4[_0xced1('0x44')]);if(this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x45')]]){this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x45')]][_0xced1('0x2c')]=!![];this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x42')]]=this['channels'][_0x5dfcf4['origtransfereruniqueid']];delete this['channels'][_0x5dfcf4[_0xced1('0x45')]];}}}catch(_0x52e873){logger[_0xced1('0x1e')]('[ACW][syncAttendedTransfer]\x20%s',_0x52e873['message']);}};Acw[_0xced1('0x15')][_0xced1('0x11')]=function(_0x3265c1){try{if(this[_0xced1('0x22')][_0x3265c1[_0xced1('0x46')]]){logger[_0xced1('0x1b')](_0xced1('0x47'),JSON[_0xced1('0x39')](_0x3265c1[_0xced1('0x46')]));this[_0xced1('0x21')](_0x3265c1[_0xced1('0x46')]);}else if(this['channels'][_0x3265c1[_0xced1('0x48')]]){logger[_0xced1('0x1b')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xced1('0x39')](_0x3265c1[_0xced1('0x48')]));this['startAcw'](_0x3265c1[_0xced1('0x48')]);}}catch(_0x2c6369){logger[_0xced1('0x1e')](_0xced1('0x49'),_0x2c6369[_0xced1('0x34')]);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x487094){try{if(this[_0xced1('0x3')][_0x487094[_0xced1('0x24')]]&&this['voiceQueues'][_0x487094[_0xced1('0x24')]][_0xced1('0x4a')]===_0xced1('0x4b')){if(this['agents'][_0x487094[_0xced1('0x23')]]){logger[_0xced1('0x1b')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x487094[_0xced1('0x19')],_0x487094['interface'],_0x487094[_0xced1('0x24')]);return RpcUser[_0xced1('0x2e')](this[_0xced1('0x4')][_0x487094[_0xced1('0x23')]],_0xced1('0x4c'),_0x487094[_0xced1('0x19')]);}}}catch(_0x2459cd){logger['error'](_0xced1('0x4d'),_0x2459cd[_0xced1('0x34')]);}};module[_0xced1('0x4e')]=Acw;
\ No newline at end of file
index 8687738..c3e46b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62f2=['promisify','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','actionSipShowRegistry','actionDeviceStateList','devicestatelist','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','username','once','close','fullybooted','resolve','then','actionSipPeerStatus','actionQueueSummary','catch','exports','asterisk-manager','util','ami','../../config/environment','asterisk','port','password','Action'];(function(_0xb6878a,_0x53d104){var _0xf11fd9=function(_0x193926){while(--_0x193926){_0xb6878a['push'](_0xb6878a['shift']());}};_0xf11fd9(++_0x53d104);}(_0x62f2,0x93));var _0x262f=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x62f2[_0x4cf98e];return _0x1623ac;};'use strict';var Manager=require(_0x262f('0x0'));var BPromise=require('bluebird');var util=require(_0x262f('0x1'));var logger=require('../../config/logger')(_0x262f('0x2'));var config=require(_0x262f('0x3'));var ami=new Manager(config[_0x262f('0x4')][_0x262f('0x5')],config[_0x262f('0x4')]['ip'],config[_0x262f('0x4')]['username'],config[_0x262f('0x4')][_0x262f('0x6')],!![]);ami['keepConnected']();ami[_0x262f('0x7')]=BPromise[_0x262f('0x8')](ami['action']);function error(_0x2d61d3){logger[_0x262f('0x9')](util[_0x262f('0xa')](_0x262f('0xb'),config[_0x262f('0x4')]['username'],config[_0x262f('0x4')]['ip'],config[_0x262f('0x4')][_0x262f('0x5')],util[_0x262f('0xc')](_0x2d61d3,![],null)));}function close(){logger['error'](util[_0x262f('0xa')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0x262f('0x4')]['username'],config[_0x262f('0x4')]['ip'],config['asterisk'][_0x262f('0x5')]));}ami[_0x262f('0xd')]=function(){return function(){return ami[_0x262f('0x7')]({'action':'sipshowregistry'});};};ami[_0x262f('0xe')]=function(){return function(){return ami[_0x262f('0x7')]({'action':_0x262f('0xf')});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0x262f('0x7')]({'action':_0x262f('0x10')});};};ami['actionQueueSummary']=function(){return function(){return ami[_0x262f('0x7')]({'action':_0x262f('0x11')});};};ami[_0x262f('0x12')]=function(){return function(){return ami[_0x262f('0x7')]({'action':_0x262f('0x13')});};};function connect(){logger[_0x262f('0x14')](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0x262f('0x4')][_0x262f('0x15')],config['asterisk']['ip'],config[_0x262f('0x4')][_0x262f('0x5')]));ami[_0x262f('0x16')](_0x262f('0x9'),error);ami[_0x262f('0x16')](_0x262f('0x17'),close);}ami['on']('connect',connect);ami['on']('shutdown',function(_0x49b524){logger[_0x262f('0x14')](util[_0x262f('0xa')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0x262f('0x4')][_0x262f('0x15')],config[_0x262f('0x4')]['ip'],config[_0x262f('0x4')][_0x262f('0x5')],util[_0x262f('0xc')](_0x49b524,![],null)));});ami['on'](_0x262f('0x18'),function(){logger['info'](util['format']('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0x262f('0x4')][_0x262f('0x15')],config[_0x262f('0x4')]['ip'],config[_0x262f('0x4')][_0x262f('0x5')]));return Promise[_0x262f('0x19')]()[_0x262f('0x1a')](ami[_0x262f('0xd')]())[_0x262f('0x1a')](ami[_0x262f('0xe')]())[_0x262f('0x1a')](ami[_0x262f('0x1b')]())[_0x262f('0x1a')](ami[_0x262f('0x1c')]())[_0x262f('0x1a')](ami[_0x262f('0x12')]())[_0x262f('0x1d')](function(_0x458a82){logger[_0x262f('0x9')]('[ami.js][fullybooted]',util[_0x262f('0xc')](_0x458a82,{'showHidden':![],'depth':null}));});});ami[_0x262f('0x16')](_0x262f('0x9'),error);ami[_0x262f('0x16')]('close',close);module[_0x262f('0x1e')]=ami;
\ No newline at end of file
+var _0x581b=['actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','inspect','fullybooted','resolve','then','catch','asterisk-manager','bluebird','util','../../config/logger','ami','asterisk','port','username','password','keepConnected','Action','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x581b,0x178));var _0xb581=function(_0x124298,_0x542004){_0x124298=_0x124298-0x0;var _0x35ac24=_0x581b[_0x124298];return _0x35ac24;};'use strict';var Manager=require(_0xb581('0x0'));var BPromise=require(_0xb581('0x1'));var util=require(_0xb581('0x2'));var logger=require(_0xb581('0x3'))(_0xb581('0x4'));var config=require('../../config/environment');var ami=new Manager(config[_0xb581('0x5')][_0xb581('0x6')],config['asterisk']['ip'],config[_0xb581('0x5')][_0xb581('0x7')],config['asterisk'][_0xb581('0x8')],!![]);ami[_0xb581('0x9')]();ami[_0xb581('0xa')]=BPromise[_0xb581('0xb')](ami[_0xb581('0xc')]);function error(_0x5af131){logger[_0xb581('0xd')](util[_0xb581('0xe')](_0xb581('0xf'),config[_0xb581('0x5')][_0xb581('0x7')],config[_0xb581('0x5')]['ip'],config[_0xb581('0x5')]['port'],util['inspect'](_0x5af131,![],null)));}function close(){logger['error'](util[_0xb581('0xe')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config['asterisk'][_0xb581('0x7')],config[_0xb581('0x5')]['ip'],config[_0xb581('0x5')][_0xb581('0x6')]));}ami[_0xb581('0x10')]=function(){return function(){return ami[_0xb581('0xa')]({'action':_0xb581('0x11')});};};ami[_0xb581('0x12')]=function(){return function(){return ami[_0xb581('0xa')]({'action':_0xb581('0x13')});};};ami[_0xb581('0x14')]=function(){return function(){return ami[_0xb581('0xa')]({'action':_0xb581('0x15')});};};ami[_0xb581('0x16')]=function(){return function(){return ami[_0xb581('0xa')]({'action':_0xb581('0x17')});};};ami[_0xb581('0x18')]=function(){return function(){return ami['Action']({'action':_0xb581('0x19')});};};function connect(){logger[_0xb581('0x1a')](util['format'](_0xb581('0x1b'),config[_0xb581('0x5')]['username'],config[_0xb581('0x5')]['ip'],config[_0xb581('0x5')][_0xb581('0x6')]));ami[_0xb581('0x1c')](_0xb581('0xd'),error);ami[_0xb581('0x1c')](_0xb581('0x1d'),close);}ami['on'](_0xb581('0x1e'),connect);ami['on']('shutdown',function(_0x2e27de){logger[_0xb581('0x1a')](util[_0xb581('0xe')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk'][_0xb581('0x7')],config['asterisk']['ip'],config[_0xb581('0x5')][_0xb581('0x6')],util[_0xb581('0x1f')](_0x2e27de,![],null)));});ami['on'](_0xb581('0x20'),function(){logger[_0xb581('0x1a')](util['format']('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0xb581('0x5')]['username'],config['asterisk']['ip'],config['asterisk']['port']));return Promise[_0xb581('0x21')]()[_0xb581('0x22')](ami[_0xb581('0x10')]())['then'](ami['actionDeviceStateList']())[_0xb581('0x22')](ami[_0xb581('0x14')]())['then'](ami['actionQueueSummary']())[_0xb581('0x22')](ami['actionCoreShowChannels']())[_0xb581('0x23')](function(_0xa802a7){logger[_0xb581('0xd')]('[ami.js][fullybooted]',util[_0xb581('0x1f')](_0xa802a7,{'showHidden':![],'depth':null}));});});ami[_0xb581('0x1c')](_0xb581('0xd'),error);ami[_0xb581('0x1c')]('close',close);module['exports']=ami;
\ No newline at end of file
index ba8cf3f..c6a27a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['exports','jayson/promise','../../config/logger','client','Request','debug','rpc','error','memberReport','message','result','catch'];(function(_0x3598bb,_0x24befa){var _0x13c837=function(_0x3de578){while(--_0x3de578){_0x3598bb['push'](_0x3598bb['shift']());}};_0x13c837(++_0x24befa);}(_0xb7e7,0x121));var _0x7b7e=function(_0x342700,_0x569f75){_0x342700=_0x342700-0x0;var _0x53406f=_0xb7e7[_0x342700];return _0x53406f;};'use strict';var jayson=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var logger=require(_0x7b7e('0x1'))('ami');var client=jayson[_0x7b7e('0x2')]['http']({'port':0x2329});client[_0x7b7e('0x3')]=function(_0x556d68,_0x31d0ed){return new BPromise(function(_0x118577,_0x1d9384){return client['request'](_0x556d68,_0x31d0ed)['then'](function(_0x333fa4){logger[_0x7b7e('0x4')](_0x7b7e('0x5'),'memberReport',_0x556d68,_0x31d0ed,_0x333fa4);if(_0x333fa4[_0x7b7e('0x6')]){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x333fa4[_0x7b7e('0x6')][_0x7b7e('0x8')],_0x31d0ed);return _0x1d9384(_0x333fa4[_0x7b7e('0x6')]['message']);}else{return _0x118577(_0x333fa4[_0x7b7e('0x9')]);}})[_0x7b7e('0xa')](function(_0x10a666){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x10a666,_0x31d0ed);return _0x1d9384(_0x10a666);});});};module[_0x7b7e('0xb')]=client;
\ No newline at end of file
+var _0x9c44=['ami','client','http','Request','then','debug','rpc','memberReport','error','message','result','exports','../../config/logger'];(function(_0x536128,_0x57ba8d){var _0x2dc941=function(_0x58dffe){while(--_0x58dffe){_0x536128['push'](_0x536128['shift']());}};_0x2dc941(++_0x57ba8d);}(_0x9c44,0x178));var _0x49c4=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9c44[_0x4b055c];return _0x4b62bb;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var client=jayson[_0x49c4('0x2')][_0x49c4('0x3')]({'port':0x2329});client[_0x49c4('0x4')]=function(_0x2ad237,_0x4e0313){return new BPromise(function(_0x4941f1,_0x41a183){return client['request'](_0x2ad237,_0x4e0313)[_0x49c4('0x5')](function(_0x6030ae){logger[_0x49c4('0x6')](_0x49c4('0x7'),_0x49c4('0x8'),_0x2ad237,_0x4e0313,_0x6030ae);if(_0x6030ae['error']){logger[_0x49c4('0x9')](_0x49c4('0x7'),_0x49c4('0x8'),_0x2ad237,_0x6030ae[_0x49c4('0x9')]['message'],_0x4e0313);return _0x41a183(_0x6030ae['error'][_0x49c4('0xa')]);}else{return _0x4941f1(_0x6030ae[_0x49c4('0xb')]);}})['catch'](function(_0xb611a1){logger[_0x49c4('0x9')]('rpc','memberReport',_0x2ad237,_0xb611a1,_0x4e0313);return _0x41a183(_0xb611a1);});});};module[_0x49c4('0xc')]=client;
\ No newline at end of file
index 6c0f09a..51dd90e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x074c=['dialTimezone','dialGlobalInterval','silly','Dialer::ifTime()','Voice\x20Queue\x20%s\x20$s','intervalIftime','Timezone:\x20','Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:','isGlobal','AMI\x20IfTime','queue','uniqueid','type','ivr','updateOriginated','answertime','YYYY-MM-DD\x20HH:mm:ss','outboundAnswerCallsDay','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','moveContactManagedDialer','droptime','dialQueueTimeout','outboundDropCallsDayTimeout','dropreason','callAdditionalPhoneAfterMin','countdropretry','queueCallerAbandonCreateState','add','dialDropRetryFrequency','ContactId','ListId','VoiceQueueId','CampaignId','Drop','endtime','calleridname','calleridnum','createHistory','swapAdditionalPhones','outboundDropCallsDayCallersExit','Abandoned','countabandonedretry','countglobal','verifyAdditionalPhones','voiceQueue','dialAbandonedMaxRetry','additional','dialAbandonedRetryFrequency','minutes','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','channel','actionid','roundrobin','isNil','locked','paused','stateinterface','rrmemory','queueBooked','idHopper','preview','run','rescheduleContact','[unlock][syncQueueStatusComplete]','_rr','unlockRR','Agent:\x20','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','contactAgent-idHopper:\x20','[booked][unlock]','[booked][unlock2]','[unlock3][syncQueueStatusComplete]','syncOriginateResponse','responsetime','getQueue','response','Success','callProgressDetecting','[callProgressDetecting]\x20','syncVarSet','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','outboundAnswerAgiCallsDay','HangupInAMD','AMD','buildObj','amd','saveInDb','[syncHangupInAMD]','MACHINE','Machine','countmachineretry','custom:amd','countbusyretry','countcongestionretry','countnosuchnumberretry','countagentrejectretry','dialGlobalMaxRetry','reason19\x20machine....','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','HANGUP','[syncHangupInAMDIvr]','[syncAgentComplete][createHistory][0]','stateGlobal','dialMachineMaxRetry','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AGI','cause-txt','Unknow','queuesSummary','running','isPreviewCampaign','statusMessage','getQueueCampaignStatusMessage','available','inUse','talking','ACTIVE','[syncQueueSummary]','compareToOutboundQueue','queueSummaryCountersUpdated','updateReportFromOutboundQueue','assign','dialPreviewRecallmeReminder','filter','online','handlePreviewRecallNotifications','map','Agent','checkPreviewRecallReminder','clearZombieChannels','No\x20such\x20channel','[Dialer][checkChannel]','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','notFound','UserId','[emptyContact][createHistory]','user:dialPreviewRecallReminder','launchHandleIvr','handleIvr','actionOriginate','object','voiceQueue\x20is\x20undefine','phone','originate','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueProject2','isOutboundQueue','dialQueueOptions','dialer','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','setXMDContactVariables','Contact','getCallerId','Trunk','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','from-sip','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','checkRetriveMax','countnoanswerretry','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropMaxRetry','[rescheduleContact][Drop]','[rescheduleContact][Machine]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','entity\x20is\x20undefine','[callProgressDetecting]','evt\x20is\x20undefine','reason','outboundNoSuchCallsDay','custom:agentnosuchnumber','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','dialNoAnswerRetryFrequency','dialNoAnswerMaxRetry','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','busy','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','custom:agentcongestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','outboundUnknownCallsDay','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','predictiveIntervalErlangCallsDroppedCalls','dialPredictiveOptimization','dropRate','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','started\x20in\x20predictive\x20at','avgHandleTime','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','startMethodPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(','getDataPredictive','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','loggedIn','outboundQueuePauses','predictiveIntervalPauses','[CatchErlangB]','one\x20call\x20every:','milliseconds','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','scheduledat','dialRecallMeTimeout','outboundReCallsDay','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','QUEUE_RECALL','RecallInQueue','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','limitCalls','getContactDialerIvr','[getContactCampaign2][Empty]','RUNNING','emptyContact','[actionOriginate]\x20','checkIsBlackListIvr','[getContactCampaign2]','dialLimitQueue','pTalking','not_inuse','getContactDialer','checkContactEmpty','tryOriginatePredictive','[handlePredictive][limitChannel]','dialOrderByScheduledAt','countReScheduled','[countReScheduled]\x20','checkIsBlackList','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','Ts\x20=\x20','p\x20=\x20','erlangb','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','m\x20=\x20','interval\x20=\x20','exports','util','lodash','uuid','ioredis','./utils','./utils/hopper','../preview/util/util','../../../config/environment/','../../../config/logger','booked','predictive','predictiveCalls','syncQueueSummary','redis','defaults','socket.io-emitter','../rpc/cmHopper','../rpc/interval','./models/action','./models/history','./models/final','./models/queueCallerAbandon','./models/hangup','env','127.0.0.1','enqueue','tail','finally','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','queueBookedRR','agentconnect','syncAgentConnect','bind','syncQueueCallerAbandon','originateresponse','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncHangup','newexten','syncNewExten','queuemember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','previewRecallmeReminderInterval','isUndefined','emit','outbound','debug','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','voice:queue:%s','voice_queue:save','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','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','predictiveIntervalAvgTalktime','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','---------\x20ErlangB\x20---------','erlangCalls','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','erlangBusyFactor','merge','getSeconds','name','startProgressive\x20value\x20cleared','handlePredictive','handlePredictive\x20interval\x20cleared','error','checkContactLowerLimitOriginate','temp','inspect','contactsRescheduled','message','CAMPAIGN_STATUS','CONTACTS_RESCHEDULED','[getContactDialer2][ReScheduled]','contacts','NO_AVAILABLE_CONTACTS','state','statedesc','starttime','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','stringify','pick','NULL_INTERVAL','\x20INTERVAL_IS_NULL','Interval','Intervals','INACTIVE','\x20NOT\x20Active','isIVRCampaign','format','campaign:ivr:%s','campaign:save','originated','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','[ifTime][Action]','Error','isTrunkReachable','active','status','reachable','SIP/%s','unmonitored','prototype','checkIsTrunkReachable','TrunkBackup','TRUNK_NOT_REACHABLE','checkIfTime','checkIfTimeIntervals','ifTime','Failure','\x20Intervals\x20is\x20null\x20','EMPTY_INTERVAL','timezones','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','isArray','length','push','Action','iftime\x20%s,%s','then','true','command','content','indexOf','catch','all','some','OVERTIME_GLOBAL_INTERVAL','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','syncCampaigns','undefined','isIVRCampaignActive','resolve','[syncCampaigns]','dialMethod','progressive','power','handlePower','dialPowerLevel','method\x20not\x20recognized'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x074c,0x164));var _0xc074=function(_0x4bdd56,_0x219c46){_0x4bdd56=_0x4bdd56-0x0;var _0x5c1151=_0x074c[_0x4bdd56];return _0x5c1151;};'use strict';var util=require(_0xc074('0x0'));var _=require(_0xc074('0x1'));var uuid=require(_0xc074('0x2'));var moment=require('moment');var rr=require('rr');var Redis=require(_0xc074('0x3'));var utils=require(_0xc074('0x4'));var hopperUtils=require(_0xc074('0x5'));var ut=require(_0xc074('0x6'));var config=require(_0xc074('0x7'));var logger=require('../../../config/logger')('dialer');var loggerBooked=require(_0xc074('0x8'))(_0xc074('0x9'));var loggerPredictive=require(_0xc074('0x8'))(_0xc074('0xa'));var loggerPredictiveCalls=require(_0xc074('0x8'))(_0xc074('0xb'));var loggerSyncQueueSummary=require(_0xc074('0x8'))(_0xc074('0xc'));var ami=require('../ami');config[_0xc074('0xd')]=_[_0xc074('0xe')](config[_0xc074('0xd')],{'host':'localhost','port':0x18eb});var io=require(_0xc074('0xf'))(new Redis(config[_0xc074('0xd')]));var cmHopper=require(_0xc074('0x10'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require('../rpc/setting');var Interval=require(_0xc074('0x11'));var Action=require(_0xc074('0x12'));var History=require(_0xc074('0x13'));var Final=require(_0xc074('0x14'));var AgentComplete=require('./models/agentComplete');var QueueCallerAbandon=require(_0xc074('0x15'));var Hangup=require(_0xc074('0x16'));var ipAgi=process[_0xc074('0x17')]['XCALLY_IP_AGI']||_0xc074('0x18');var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence['prototype'][_0xc074('0x19')]=function(_0x11d0c){this[_0xc074('0x1a')]=this[_0xc074('0x1a')]?this[_0xc074('0x1a')][_0xc074('0x1b')](_0x11d0c):_0x11d0c();};function Dialer(_0x3a17a4,_0x267db6){this[_0xc074('0x1c')]=new Sequence();this['preview']=_0x267db6;this[_0xc074('0x1d')]=_0x3a17a4[_0xc074('0x1d')];this[_0xc074('0x1e')]=_0x3a17a4[_0xc074('0x1e')];this[_0xc074('0x1f')]=_0x3a17a4[_0xc074('0x1f')];this[_0xc074('0x20')]=_0x3a17a4['trunks'];this[_0xc074('0x21')]=config[_0xc074('0x21')]||0x2;this[_0xc074('0x22')]={};this[_0xc074('0x23')]={};this[_0xc074('0x24')]={};this[_0xc074('0x25')]={};this[_0xc074('0x26')]={};this[_0xc074('0x27')]={};this[_0xc074('0x28')]={};this['ivrOriginated']={};this['queueBooked']={};this[_0xc074('0x29')]={};this['queuesSummary']={};ami['on'](_0xc074('0x2a'),this[_0xc074('0x2b')][_0xc074('0x2c')](this));ami['on']('queuecallerabandon',this[_0xc074('0x2d')]['bind'](this));ami['on'](_0xc074('0x2e'),this['syncOriginateResponse'][_0xc074('0x2c')](this));ami['on']('agentcomplete',this[_0xc074('0x2f')][_0xc074('0x2c')](this));ami['on'](_0xc074('0x30'),this[_0xc074('0xc')][_0xc074('0x2c')](this));ami['on'](_0xc074('0x31'),this['syncQueueSummaryComplete'][_0xc074('0x2c')](this));ami['on']('hangup',this[_0xc074('0x32')][_0xc074('0x2c')](this));ami['on'](_0xc074('0x33'),this[_0xc074('0x34')][_0xc074('0x2c')](this));ami['on']('varset',this['syncVarSet']['bind'](this));ami['on'](_0xc074('0x35'),this['syncQueueMember']['bind'](this));ami['on'](_0xc074('0x36'),this[_0xc074('0x37')][_0xc074('0x2c')](this));this[_0xc074('0x38')]();this[_0xc074('0x39')]();RpcSetting[_0xc074('0x3a')]()['then'](function(_0x386267){previewRecallmeReminderInterval=_0x386267[_0xc074('0x3b')];});}function isNotNull(_0x27ea85){return _0x27ea85!==null&&!_[_0xc074('0x3c')](_0x27ea85);}function msgResponse(_0x3e099a,_0xb1894d,_0x49a7d1){return{'action':_0x3e099a,'response':_0xb1894d,'message':_0x49a7d1,'stack':_0x49a7d1};}function emit(_0x3ad4f7,_0x454446,_0x3f7f9d){io['to'](_0x3ad4f7)[_0xc074('0x3d')](_0x454446,_0x3f7f9d);}function emitOutboundVoiceQueueSummary(_0x2d1f47){if(_0x2d1f47['type']===_0xc074('0x3e')){logger[_0xc074('0x3f')](_0xc074('0x40'),util['inspect'](_0x2d1f47,{'showHidden':![],'depth':null}));emit(util['format'](_0xc074('0x41'),_0x2d1f47['name']),_0xc074('0x42'),_0x2d1f47);}}function checkGetDataPredictive(_0x2aeca7){if(isNotNull(_0x2aeca7)&&!_[_0xc074('0x43')](_0x2aeca7)){loggerPredictive[_0xc074('0x44')](_0xc074('0x45'));loggerPredictive[_0xc074('0x44')](_0xc074('0x46'),_0x2aeca7[_0xc074('0x47')]);loggerPredictive[_0xc074('0x44')](_0xc074('0x48'),_0x2aeca7[_0xc074('0x49')]);loggerPredictive[_0xc074('0x44')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2aeca7[_0xc074('0x4a')]);loggerPredictive[_0xc074('0x44')](_0xc074('0x4b'),_0x2aeca7[_0xc074('0x4c')]);loggerPredictive[_0xc074('0x44')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2aeca7[_0xc074('0x4d')]);loggerPredictive[_0xc074('0x44')](_0xc074('0x4e'),_0x2aeca7['predictiveIntervalAvgTalktime']);loggerPredictive[_0xc074('0x44')](_0xc074('0x4f'));if(_0x2aeca7[_0xc074('0x47')]>0x0){if(!_[_0xc074('0x3c')](_0x2aeca7['predictiveIntervalAvgTalktime'])&&_0x2aeca7[_0xc074('0x50')]>0x0){return!![];}loggerPredictive['info']('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_[_0xc074('0x3c')](_0x2aeca7[_0xc074('0x4d')])&&_0x2aeca7['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0xc074('0x44')](_0xc074('0x51'));}else{loggerPredictive[_0xc074('0x44')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0xc074('0x44')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x46e776){return function(_0x53faa2){loggerPredictive[_0xc074('0x44')](_0xc074('0x52'));loggerPredictive[_0xc074('0x44')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x53faa2[_0xc074('0x53')]);loggerPredictive['info']('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x53faa2[_0xc074('0x54')]);loggerPredictive[_0xc074('0x44')](_0xc074('0x55'),_0x53faa2[_0xc074('0x56')]);loggerPredictive[_0xc074('0x44')]('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x53faa2[_0xc074('0x57')]);loggerPredictive[_0xc074('0x44')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x53faa2[_0xc074('0x56')]);loggerPredictive['info'](_0xc074('0x4f'));_[_0xc074('0x58')](_0x46e776,_0x53faa2);};}function ifInterval(_0x4fe396,_0x4249b7){if(_[_0xc074('0x3c')](_0x4249b7)){return![];}return utils[_0xc074('0x59')](undefined,_0x4249b7)<_0x4fe396*0x3c;}function clearPredictiveAttributes(_0x1bce8f){if(_0x1bce8f[_0xc074('0x28')]){_0x1bce8f[_0xc074('0x28')]=undefined;loggerPredictive[_0xc074('0x3f')](_0x1bce8f[_0xc074('0x5a')],_0xc074('0x5b'));}if(_0x1bce8f['startPredictive']){_0x1bce8f[_0xc074('0x27')]=undefined;loggerPredictive[_0xc074('0x3f')](_0x1bce8f['name'],'startPredictive\x20value\x20cleared');}if(_0x1bce8f[_0xc074('0x5c')]){clearInterval(_0x1bce8f['handlePredictive']);_0x1bce8f[_0xc074('0x5c')]=undefined;loggerPredictive['debug'](_0x1bce8f[_0xc074('0x5a')],_0xc074('0x5d'));}}function loggerCatchPredictive(_0x5f57e9,_0x217fbe){return function(_0x2904a7){loggerPredictive['error'](_0x217fbe[_0xc074('0x5a')],_0x5f57e9);loggerPredictive[_0xc074('0x5e')](_0x2904a7['stack']);clearPredictiveAttributes(_0x217fbe);};}function loggerCatch(_0x466ad5){return function(_0x1c7eca){logger[_0xc074('0x5e')](_0x466ad5,util['inspect'](_0x1c7eca,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x4ee832,_0x568bd5,_0x523882){return function(_0x3c7db8){utils[_0xc074('0x5f')](_0x568bd5,_0x523882,0x0);_0x568bd5[_0xc074('0x60')]=0x0;logger[_0xc074('0x5e')](_0x4ee832,util[_0xc074('0x61')](_0x3c7db8,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x233f1f){return function(_0x5ce9c6){if(isNotNull(_0x5ce9c6)&&isNotNull(_0x5ce9c6[0x0])){if(_0x5ce9c6[0x0][_0xc074('0x62')]>0x0){_0x233f1f[_0xc074('0x63')]=utils[_0xc074('0x64')][_0xc074('0x65')];logger[_0xc074('0x44')](_0xc074('0x66')+_0x233f1f['name'],_0x5ce9c6[0x0][_0xc074('0x62')],_0xc074('0x67'));}else{_0x233f1f['message']=utils[_0xc074('0x64')][_0xc074('0x68')];logger[_0xc074('0x44')]('[getContactDialer2][Empty]'+_0x233f1f[_0xc074('0x5a')]);}}};}function createObjHistory(_0x1cceea,_0x386e36,_0x558481,_0x4d222f,_0x3faab3){_0x1cceea[_0xc074('0x63')]=_0x558481;var _0xa4cc3=new Action(_0x1cceea,_0x386e36);var _0x4c6881=new History(_0xa4cc3);_0x4c6881[_0xc074('0x69')]=_0x4d222f;_0x4c6881[_0xc074('0x6a')]=_0x3faab3;_0x4c6881['endtime']=_0xa4cc3[_0xc074('0x6b')];return _0x4c6881;}function unlockQueueStatus(_0x28deab,_0x55e141){setTimeout(function(){if(_['isUndefined'](_0x28deab[_0xc074('0x6c')])){loggerBooked[_0xc074('0x5e')](_0xc074('0x6d'),_0x55e141);}_0x28deab[_0xc074('0x6c')]=!![];loggerBooked[_0xc074('0x44')](_0xc074('0x6e'),_0x55e141,JSON[_0xc074('0x6f')](_[_0xc074('0x70')](_0x28deab,[_0xc074('0x5a'),_0xc074('0x6c')])));},0x1f3);}function checkInterval(_0x2a613a){return function(){if(!isNotNull(_0x2a613a['Interval'])){_0x2a613a[_0xc074('0x63')]=utils[_0xc074('0x64')][_0xc074('0x71')];throw _0x2a613a[_0xc074('0x5a')]+_0xc074('0x72');}if(!isNotNull(_0x2a613a[_0xc074('0x73')][_0xc074('0x74')])){_0x2a613a[_0xc074('0x63')]=utils[_0xc074('0x64')][_0xc074('0x71')];throw _0x2a613a['name']+_0xc074('0x72');}if(!isNotNull(_['isEmpty'](_0x2a613a['Interval'][_0xc074('0x74')]))){_0x2a613a['message']=utils[_0xc074('0x64')]['NULL_INTERVAL'];throw _0x2a613a['name']+_0xc074('0x72');}};}function checkIsIVRCampaignActive(_0x4e7755){return function(){if(!utils['isIVRCampaignActive'](_0x4e7755)){_0x4e7755[_0xc074('0x63')]=utils[_0xc074('0x64')][_0xc074('0x75')];throw _0x4e7755[_0xc074('0x5a')]+_0xc074('0x76');}};}function emitCampaignSummary(_0x2f0f12){if(utils[_0xc074('0x77')](_0x2f0f12)){emit(util[_0xc074('0x78')](_0xc074('0x79'),_0x2f0f12['name']),_0xc074('0x7a'),_0x2f0f12);}}function loggerCatchQueueSummary(_0x41ebcf,_0x16311e){return function(_0x8cc421){clearPredictiveAttributes(_0x16311e);emitCampaignSummary(_0x16311e);loggerSyncQueueSummary['debug'](_0x41ebcf,util['inspect'](_0x8cc421,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0x21172a){if(_0x21172a['sendMessageOneNotActive']){if(_0x21172a[_0xc074('0x7b')]===0x0){_0x21172a[_0xc074('0x7c')]=![];_0x21172a[_0xc074('0x63')]=utils['CAMPAIGN_STATUS'][_0xc074('0x75')];loggerSyncQueueSummary[_0xc074('0x3f')](_0xc074('0x7d'),_0x21172a[_0xc074('0x5a')],'is\x20not\x20active');}else{_0x21172a[_0xc074('0x63')]=utils['CAMPAIGN_STATUS']['DISACTIVED'];loggerSyncQueueSummary[_0xc074('0x3f')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x21172a[_0xc074('0x5a')],_0xc074('0x7e'));}emitCampaignSummary(_0x21172a);}}function myreject(_0x18b71a){return function(_0x11bd8a){return _0x18b71a(msgResponse(_0xc074('0x7f'),_0xc074('0x80'),JSON['stringify'](_0x11bd8a)));};}Dialer['prototype'][_0xc074('0x81')]=function(_0x583c07){return!_[_0xc074('0x3c')](_0x583c07)&&_0x583c07&&!_[_0xc074('0x3c')](_0x583c07[_0xc074('0x5a')])&&!_['isUndefined'](_0x583c07[_0xc074('0x82')])&&_0x583c07[_0xc074('0x82')]&&(this[_0xc074('0x20')][util[_0xc074('0x78')]('SIP/%s',_0x583c07[_0xc074('0x5a')])][_0xc074('0x83')]===_0xc074('0x84')||this[_0xc074('0x20')][util[_0xc074('0x78')](_0xc074('0x85'),_0x583c07[_0xc074('0x5a')])][_0xc074('0x83')]===_0xc074('0x86'));};Dialer[_0xc074('0x87')][_0xc074('0x88')]=function(_0x2f4f3a){var _0x281340=this;return function(){if(!_0x281340[_0xc074('0x81')](_0x2f4f3a['Trunk'])){if(!_0x281340[_0xc074('0x81')](_0x2f4f3a[_0xc074('0x89')])){_0x2f4f3a[_0xc074('0x63')]=utils['CAMPAIGN_STATUS'][_0xc074('0x8a')];throw _0x2f4f3a[_0xc074('0x5a')]+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer[_0xc074('0x87')][_0xc074('0x8b')]=function(_0x4c5b6f,_0xada509,_0x54ea82,_0x1880aa){var _0x361dc0=this;return function(){var _0x1ca0ca=!![];return _0x361dc0['ifTimeIvr'](_0x4c5b6f,_0xada509,_0x54ea82,_0x1880aa,_0x1ca0ca);};};Dialer[_0xc074('0x87')][_0xc074('0x8c')]=function(_0x49f29f,_0x5fc0df,_0x15ca28,_0x42af1f){var _0x56643f=this;return function(){var _0x435219=![];return _0x56643f['ifTimeIvr'](_0x49f29f[_0xc074('0x74')],_0x5fc0df,_0x15ca28,_0x42af1f,_0x435219);};};Dialer[_0xc074('0x87')]['ifTimeIvr']=function(_0x2558fc,_0x13e857,_0x5044c,_0x2a8ae2,_0x48c2ef){var _0x3a0712=[];return new Promise(function(_0x5f14e8,_0x5a626b){if(!isNotNull(_0x2558fc)){_0x2a8ae2[_0xc074('0x63')]=utils[_0xc074('0x64')][_0xc074('0x71')];return _0x5a626b(msgResponse(_0xc074('0x8d'),_0xc074('0x8e'),_0x5044c+_0xc074('0x8f')));}if(_[_0xc074('0x43')](_0x2558fc)){_0x2a8ae2[_0xc074('0x63')]=utils[_0xc074('0x64')][_0xc074('0x90')];return _0x5a626b(msgResponse(_0xc074('0x8d'),_0xc074('0x8e'),_0x5044c+'\x20Intervals\x20is\x20empty\x20'));}if(_0x13e857&&_[_0xc074('0x3c')](config[_0xc074('0x91')][_0x13e857])){_0x2a8ae2[_0xc074('0x63')]=utils[_0xc074('0x64')][_0xc074('0x92')];return _0x5a626b(msgResponse(_0xc074('0x8d'),'Failure',_0x5044c+_0xc074('0x93')+_0x13e857));}if(_[_0xc074('0x94')](_0x2558fc)){for(var _0x349696=0x0;_0x349696<_0x2558fc[_0xc074('0x95')];_0x349696+=0x1){_0x3a0712[_0xc074('0x96')](ami[_0xc074('0x97')]({'action':'command','command':util[_0xc074('0x78')](_0xc074('0x98'),_0x2558fc[_0x349696]['interval'],!_[_0xc074('0x3c')](config[_0xc074('0x91')][_0x13e857])?_0x13e857:'')})[_0xc074('0x99')](function(_0x2a1b9b){return _0x2a1b9b['content']['indexOf'](_0xc074('0x9a'))>=0x0;})['catch'](myreject(_0x5a626b)));}}else{_0x3a0712['push'](ami[_0xc074('0x97')]({'action':_0xc074('0x9b'),'command':util[_0xc074('0x78')](_0xc074('0x98'),_0x2558fc,!_[_0xc074('0x3c')](config[_0xc074('0x91')][_0x13e857])?_0x13e857:'')})[_0xc074('0x99')](function(_0x3ec5af){return _0x3ec5af[_0xc074('0x9c')][_0xc074('0x9d')]('true')>=0x0;})[_0xc074('0x9e')](myreject(_0x5a626b)));}Promise[_0xc074('0x9f')](_0x3a0712)[_0xc074('0x99')](function(_0x1a5082){var _0x47fa0b=_[_0xc074('0xa0')](_0x1a5082);if(_0x47fa0b){return _0x5f14e8(_0x47fa0b);}else{_0x2a8ae2[_0xc074('0x63')]=_0x48c2ef?utils['CAMPAIGN_STATUS'][_0xc074('0xa1')]:utils[_0xc074('0x64')]['OVERTIME_INTERVAL'];return _0x5a626b(msgResponse(_0xc074('0xa2'),_0xc074('0x8e'),_0xc074('0xa3')+_0x48c2ef+'\x20'+_0x5044c+_0xc074('0xa4')+util[_0xc074('0x61')](_0x2558fc,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x13e857));}})[_0xc074('0x9e')](function(_0x2e9fe0){return _0x5a626b(msgResponse(_0xc074('0x8d'),_0xc074('0x8e'),JSON[_0xc074('0x6f')](_0x2e9fe0)));});});};Dialer[_0xc074('0x87')][_0xc074('0x38')]=function(){var _0x2cf293=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})['then'](function(){setInterval(function(){_0x2cf293[_0xc074('0xa5')]();},0x3e8);});};Dialer[_0xc074('0x87')][_0xc074('0xa5')]=function(){var _0x4e97fa=this;var _0x2aa98b;for(var _0x26d334 in this[_0xc074('0x1e')]){if(typeof this[_0xc074('0x1e')][_0x26d334]!==_0xc074('0xa6')){_0x2aa98b=this[_0xc074('0x1e')][_0x26d334];if(utils['isIVRCampaign'](_0x2aa98b)&&utils[_0xc074('0xa7')](_0x2aa98b)){_0x2aa98b[_0xc074('0x7c')]=!![];Promise[_0xc074('0xa8')]()[_0xc074('0x99')](checkIsIVRCampaignActive(_0x2aa98b))['then'](checkInterval(_0x2aa98b))['then'](_0x4e97fa[_0xc074('0x88')](_0x2aa98b))[_0xc074('0x99')](_0x4e97fa[_0xc074('0x8b')](_0x2aa98b['dialGlobalInterval'],_0x2aa98b['dialTimezone'],_0x2aa98b[_0xc074('0x5a')],_0x2aa98b))['then'](_0x4e97fa[_0xc074('0x8c')](_0x2aa98b['Interval'],_0x2aa98b['dialTimezone'],_0x2aa98b[_0xc074('0x5a')],_0x2aa98b))[_0xc074('0x99')](_0x4e97fa['launchHandleIvr'](_0x2aa98b))[_0xc074('0x9e')](loggerCatchQueueSummary(_0xc074('0xa9'),_0x2aa98b));}else{notSendMessagesCampaign(_0x2aa98b);}}}};Dialer['prototype']['checkDialMethod']=function(_0x354cd5){if(_0x354cd5[_0xc074('0xaa')]!=='predictive'){clearPredictiveAttributes(_0x354cd5);}switch(_0x354cd5[_0xc074('0xaa')]){case _0xc074('0xab'):this['handlePower'](_0x354cd5,0x1);break;case _0xc074('0xac'):this[_0xc074('0xad')](_0x354cd5,_0x354cd5[_0xc074('0xae')]);break;case _0xc074('0xa'):this[_0xc074('0xa')](_0x354cd5);break;case _0xc074('0x9'):this['handlePower'](_0x354cd5,0x1);break;default:logger[_0xc074('0x5e')]('Queue',_0x354cd5['name'],_0xc074('0xaf'));}};Dialer[_0xc074('0x87')]['ifTime']=function(_0x3a95a0,_0x16df9c){var _0x18144c=_0x3a95a0[_0xc074('0xb0')];var _0x56559a=_0x16df9c?_0x3a95a0[_0xc074('0xb1')]:_0x3a95a0[_0xc074('0x73')][_0xc074('0x74')];logger[_0xc074('0xb2')](_0xc074('0xb3'),_0x56559a,_0x18144c,_0x3a95a0[_0xc074('0x5a')],util['format'](_0xc074('0xb4'),_0x3a95a0[_0xc074('0x5a')],_0x3a95a0['id']));var _0x17b091=null;return Interval[_0xc074('0xb5')](_0x56559a,_0x18144c)[_0xc074('0x99')](function(_0x2a16af){if(_0x2a16af===!![]){return _0x2a16af;}else{_0x3a95a0[_0xc074('0x63')]=_0x16df9c?utils[_0xc074('0x64')]['OVERTIME_GLOBAL_INTERVAL']:utils[_0xc074('0x64')]['OVERTIME_INTERVAL'];_0x17b091=msgResponse(_0xc074('0xa2'),_0xc074('0x8e'),'Global:\x20'+_0x16df9c+'\x20'+_0x3a95a0['name']+_0xc074('0xa4')+util['inspect'](_0x56559a,{'showHidden':![],'depth':null})+_0xc074('0xb6')+_0x18144c);}if(_0x17b091!==null){logger[_0xc074('0xb2')](_0xc074('0xb7'),_0x17b091);_0x17b091[_0xc074('0xb8')]=_0x16df9c;throw _0x17b091;}})[_0xc074('0x9e')](function(_0x55471a){logger['error'](_0xc074('0xb9'),_0x55471a);throw msgResponse(_0xc074('0x7f'),_0xc074('0x80'),util[_0xc074('0x61')](_0x55471a,{'showHidden':![],'depth':null}));});};Dialer[_0xc074('0x87')][_0xc074('0x2b')]=function(_0x1ffb1c){if(this[_0xc074('0x1d')][_0x1ffb1c[_0xc074('0xba')]]){if(this[_0xc074('0x25')][_0x1ffb1c[_0xc074('0xbb')]]&&this[_0xc074('0x25')][_0x1ffb1c[_0xc074('0xbb')]][_0xc074('0xbc')]!==_0xc074('0xbd')){this[_0xc074('0xbe')](this['voiceQueues'][_0x1ffb1c[_0xc074('0xba')]]);this[_0xc074('0x25')][_0x1ffb1c[_0xc074('0xbb')]][_0xc074('0xbf')]=moment()[_0xc074('0x78')](_0xc074('0xc0'));}}};Dialer[_0xc074('0x87')][_0xc074('0x2f')]=function(_0x5111db){var _0x56e0a2=this[_0xc074('0x25')][_0x5111db[_0xc074('0xbb')]];if(this[_0xc074('0x1d')][_0x5111db[_0xc074('0xba')]]){if(_0x56e0a2&&_0x56e0a2[_0xc074('0xbc')]!==_0xc074('0xbd')){delete this[_0xc074('0x25')][_0x5111db['uniqueid']];this[_0xc074('0x1d')][_0x5111db['queue']][_0xc074('0xc1')]+=0x1;var _0x569f3f=new AgentComplete(_0x56e0a2,_0x5111db);if(_0x5111db['reason']===_0xc074('0xc2')){_0x569f3f[_0xc074('0xc3')]=this[_0xc074('0x1d')][_0x5111db[_0xc074('0xba')]]['dialQueueProject2']&&this[_0xc074('0x1d')][_0x5111db[_0xc074('0xba')]][_0xc074('0xc4')]?moment()[_0xc074('0x78')](_0xc074('0xc0')):undefined;}hopperUtils['createHistory'](_0x569f3f)[_0xc074('0x9e')](loggerCatch(_0xc074('0xc5')));hopperUtils[_0xc074('0xc6')](_0x569f3f)['catch'](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0xc074('0x87')][_0xc074('0x2d')]=function(_0x2c0f6b){var _0x3e90d7=this[_0xc074('0x25')][_0x2c0f6b[_0xc074('0xbb')]];var _0x330536=this;var _0x192056=![];var _0x308a73;var _0x4dd727;if(this[_0xc074('0x1d')][_0x2c0f6b['queue']]){if(_0x3e90d7&&_0x3e90d7[_0xc074('0xbc')]!==_0xc074('0xbd')){delete this[_0xc074('0x25')][_0x2c0f6b[_0xc074('0xbb')]];this[_0xc074('0xbe')](this[_0xc074('0x1d')][_0x2c0f6b[_0xc074('0xba')]]);_0x3e90d7[_0xc074('0xc7')]=moment()['format'](_0xc074('0xc0'));var _0x1ae168=new QueueCallerAbandon(_0x3e90d7,_0x2c0f6b);if(utils[_0xc074('0x59')](_0x3e90d7[_0xc074('0xc7')],_0x3e90d7['responsetime'])>=_0x3e90d7[_0xc074('0xc8')]){this['voiceQueues'][_0x2c0f6b[_0xc074('0xba')]][_0xc074('0x4a')]+=0x1;this[_0xc074('0x1d')][_0x2c0f6b['queue']][_0xc074('0xc9')]+=0x1;this[_0xc074('0x1d')][_0x2c0f6b[_0xc074('0xba')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x1ae168[_0xc074('0x69')]=0xa;_0x1ae168[_0xc074('0x6a')]='Drop';_0x1ae168[_0xc074('0xca')]='TIMEOUT';_0x1ae168['agiafterat']=this['voiceQueues'][_0x2c0f6b[_0xc074('0xba')]]['dialQueueProject2']?moment()[_0xc074('0x78')](_0xc074('0xc0')):undefined;_0x1ae168['countdropretry']+=0x1;_0x1ae168['countglobal']+=0x1;_0x308a73=this[_0xc074('0x1d')][_0x2c0f6b[_0xc074('0xba')]]['dialDropRetryFrequency'];_0x4dd727=this['voiceQueues'][_0x2c0f6b[_0xc074('0xba')]][_0xc074('0xcb')];hopperUtils['verifyAdditionalPhones'](_0x1ae168,_0x1ae168[_0xc074('0x69')],_0x3e90d7['voiceQueue'])[_0xc074('0x99')](function(_0x7addf9){_0x192056=_0x7addf9['additional']==0x1;if(_0x1ae168[_0xc074('0xcc')]>=_0x330536['voiceQueues'][_0x2c0f6b[_0xc074('0xba')]]['dialDropMaxRetry']){_0x330536[_0xc074('0xcd')](_0x1ae168,_0x7addf9['additional']);}else{hopperUtils['rescheduleContact']({'active':![],'countdropretry':_0x1ae168[_0xc074('0xcc')],'scheduledat':moment()[_0xc074('0xce')](_0x330536['voiceQueues'][_0x2c0f6b[_0xc074('0xba')]][_0xc074('0xcf')],'minutes')[_0xc074('0x78')](_0xc074('0xc0')),'ContactId':_0x3e90d7[_0xc074('0xd0')],'ListId':_0x3e90d7[_0xc074('0xd1')],'VoiceQueueId':_0x3e90d7[_0xc074('0xd2')]||undefined,'CampaignId':_0x3e90d7[_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch('[rescheduleContact][Drop]'));var _0x19f3a9=new History(_0x1ae168);_0x19f3a9['state']=0xa;_0x19f3a9[_0xc074('0x6a')]=_0xc074('0xd4');_0x19f3a9[_0xc074('0x6b')]=moment()['format'](_0xc074('0xc0'));_0x19f3a9[_0xc074('0xd5')]=_0x19f3a9[_0xc074('0x6b')];_0x19f3a9[_0xc074('0xd6')]=_0x1ae168[_0xc074('0xd6')];_0x19f3a9['calleridnum']=_0x1ae168[_0xc074('0xd7')];hopperUtils[_0xc074('0xd8')](_0x19f3a9)['catch'](loggerCatch('[syncAgentComplete][createHistory][10]'));}})[_0xc074('0x99')](function(){if(_0x192056)hopperUtils[_0xc074('0xd9')](_0x1ae168,_0x308a73,_0x4dd727)[_0xc074('0x99')](function(){return 0x1;});});}else{this[_0xc074('0x1d')][_0x2c0f6b[_0xc074('0xba')]][_0xc074('0x4c')]+=0x1;this[_0xc074('0x1d')][_0x2c0f6b[_0xc074('0xba')]][_0xc074('0xda')]+=0x1;_0x1ae168[_0xc074('0x69')]=0xb;_0x1ae168['statedesc']=_0xc074('0xdb');_0x1ae168[_0xc074('0xca')]='CALLEREXIT';_0x1ae168[_0xc074('0xdc')]+=0x1;_0x1ae168[_0xc074('0xdd')]+=0x1;_0x308a73=this['voiceQueues'][_0x2c0f6b['queue']]['dialAbandonedRetryFrequency'];_0x4dd727=this[_0xc074('0x1d')][_0x2c0f6b[_0xc074('0xba')]]['callAdditionalPhoneAfterMin'];hopperUtils[_0xc074('0xde')](_0x1ae168,_0x1ae168[_0xc074('0x69')],_0x3e90d7[_0xc074('0xdf')])[_0xc074('0x99')](function(_0x3d0a69){if(_0x1ae168[_0xc074('0xdc')]>=_0x330536[_0xc074('0x1d')][_0x2c0f6b[_0xc074('0xba')]][_0xc074('0xe0')]){_0x330536[_0xc074('0xcd')](_0x1ae168,_0x3d0a69[_0xc074('0xe1')]);}else{hopperUtils['rescheduleContact']({'active':![],'countabandonedretry':_0x1ae168[_0xc074('0xdc')],'scheduledat':moment()[_0xc074('0xce')](_0x330536[_0xc074('0x1d')][_0x2c0f6b['queue']][_0xc074('0xe2')],_0xc074('0xe3'))[_0xc074('0x78')](_0xc074('0xc0')),'ContactId':_0x3e90d7[_0xc074('0xd0')],'ListId':_0x3e90d7[_0xc074('0xd1')],'VoiceQueueId':_0x3e90d7['VoiceQueueId']||undefined,'CampaignId':_0x3e90d7['CampaignId']||undefined})[_0xc074('0x9e')](loggerCatch(_0xc074('0xe4')));var _0x20b337=new History(_0x1ae168);_0x20b337[_0xc074('0x69')]=0xb;_0x20b337[_0xc074('0x6a')]=_0xc074('0xdb');_0x20b337['starttime']=moment()[_0xc074('0x78')]('YYYY-MM-DD\x20HH:mm:ss');_0x20b337[_0xc074('0xd5')]=_0x20b337[_0xc074('0x6b')];_0x20b337['calleridname']=_0x1ae168['calleridname'];_0x20b337[_0xc074('0xd7')]=_0x1ae168[_0xc074('0xd7')];hopperUtils[_0xc074('0xd8')](_0x20b337)['catch'](loggerCatch(_0xc074('0xe5')));}})[_0xc074('0x99')](function(){if(_0x192056)hopperUtils['swapAdditionalPhones'](_0x1ae168,_0x308a73,_0x4dd727)['then'](function(){return 0x1;});});}}}};Dialer[_0xc074('0x87')][_0xc074('0x34')]=function(_0x43f68d){if(this['actions'][_0x43f68d[_0xc074('0xbb')]]){this[_0xc074('0x23')][_0x43f68d['uniqueid']][_0xc074('0xe6')]=_0x43f68d[_0xc074('0xe6')];}if(this['uniqueId'][_0x43f68d['uniqueid']]){this[_0xc074('0x25')][_0x43f68d[_0xc074('0xbb')]][_0xc074('0xe6')]=_0x43f68d[_0xc074('0xe6')];}};Dialer['prototype']['syncQueueMember']=function(_0x3c3f58){if(!this['actions'][_0x3c3f58[_0xc074('0xe7')]]){return;}var _0x21ed75=this[_0xc074('0x1d')][this[_0xc074('0x23')][_0x3c3f58[_0xc074('0xe7')]]['queue']]['strategy']||'rrmemory';if(_0x21ed75===_0xc074('0xe8')){if(this[_0xc074('0x23')][_0x3c3f58[_0xc074('0xe7')]]&&_[_0xc074('0xe9')](this[_0xc074('0x23')][_0x3c3f58[_0xc074('0xe7')]][_0xc074('0xea')])&&_0x3c3f58[_0xc074('0x83')]==='1'&&_0x3c3f58[_0xc074('0xeb')]==='0'){if(this[_0xc074('0x1f')][_0x3c3f58['stateinterface']]){if(!this[_0xc074('0x1f')][_0x3c3f58[_0xc074('0xec')]][_0xc074('0xea')]){this[_0xc074('0x1f')][_0x3c3f58[_0xc074('0xec')]][_0xc074('0xea')]=!![];this[_0xc074('0x23')][_0x3c3f58[_0xc074('0xe7')]][_0xc074('0xea')]=!![];this[_0xc074('0x23')][_0x3c3f58['actionid']][_0xc074('0xec')]=_0x3c3f58[_0xc074('0xec')];}}}}else if(_0x21ed75===_0xc074('0xed')){if(this[_0xc074('0x23')][_0x3c3f58['actionid']]){if(this[_0xc074('0x1f')][_0x3c3f58[_0xc074('0xec')]]){this[_0xc074('0x23')][_0x3c3f58[_0xc074('0xe7')]]['stateinterface']=_0x3c3f58['stateinterface'];if(_[_0xc074('0xe9')](this[_0xc074('0xee')][this['actions'][_0x3c3f58['actionid']][_0xc074('0xba')]])){this[_0xc074('0xee')][this[_0xc074('0x23')][_0x3c3f58[_0xc074('0xe7')]][_0xc074('0xba')]]=[];}this['queueBooked'][this['actions'][_0x3c3f58[_0xc074('0xe7')]][_0xc074('0xba')]][_0xc074('0x96')](_[_0xc074('0x58')](_[_0xc074('0x70')](this[_0xc074('0x23')][_0x3c3f58[_0xc074('0xe7')]],[_0xc074('0xef'),'stateinterface']),{'status':_0x3c3f58[_0xc074('0x83')],'paused':_0x3c3f58[_0xc074('0xeb')]}));}}}};Dialer[_0xc074('0x87')][_0xc074('0x37')]=function(_0x591c60){if(!this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]]){return;}var _0x375256=this;var _0x31a62e=this['voiceQueues'][this[_0xc074('0x23')][_0x591c60['actionid']][_0xc074('0xba')]];var _0x1e3e1a=_0x31a62e['strategy']||'rrmemory';if(_0x1e3e1a===_0xc074('0xe8')){if(this['actions'][_0x591c60['actionid']]&&this['actions'][_0x591c60[_0xc074('0xe7')]][_0xc074('0xec')]){this[_0xc074('0xf0')][_0xc074('0xf1')](this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xef')],this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]]['stateinterface'])[_0xc074('0x9e')](function(_0x7dd0c0){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util[_0xc074('0x61')](_0x7dd0c0,{'showHidden':![],'depth':null}));})[_0xc074('0x1b')](function(){_0x375256[_0xc074('0xbe')](_0x375256['voiceQueues'][_0x375256[_0xc074('0x23')][_0x591c60['actionid']][_0xc074('0xba')]]);_0x375256[_0xc074('0x1f')][_0x375256[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xec')]][_0xc074('0xea')]=![];delete _0x375256['actions'][_0x591c60[_0xc074('0xe7')]];unlockQueueStatus(_0x31a62e);});}else{this[_0xc074('0xbe')](this[_0xc074('0x1d')][this['actions'][_0x591c60[_0xc074('0xe7')]]['queue']]);hopperUtils[_0xc074('0xf2')]({'active':![],'ContactId':this['actions'][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd0')],'ListId':this['actions'][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd1')],'VoiceQueueId':this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd3')]||undefined})['catch'](loggerCatch(_0xc074('0xf3')));delete this['actions'][_0x591c60[_0xc074('0xe7')]];unlockQueueStatus(_0x31a62e);}}else if(_0x1e3e1a===_0xc074('0xed')){var _0x4a3a8a;if(this['actions'][_0x591c60[_0xc074('0xe7')]]&&!_[_0xc074('0x43')](this[_0xc074('0xee')][this['actions'][_0x591c60[_0xc074('0xe7')]][_0xc074('0xba')]])){if(this[_0xc074('0x29')][_0x375256[_0xc074('0x23')][_0x591c60['actionid']][_0xc074('0xba')]]){this[_0xc074('0x29')][_0x375256[_0xc074('0x23')][_0x591c60['actionid']][_0xc074('0xba')]]=this[_0xc074('0x29')][this['actions'][_0x591c60[_0xc074('0xe7')]][_0xc074('0xba')]]?this[_0xc074('0x29')][this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xba')]]:this['queueBooked'][this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]]['queue']]?this[_0xc074('0xee')][this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xba')]][_0xc074('0xf4')]||0x0:0x0;}this['queueBooked'][this[_0xc074('0x23')][_0x591c60['actionid']][_0xc074('0xba')]][_0xc074('0xf4')]=this['queueBookedRR'][this['actions'][_0x591c60['actionid']][_0xc074('0xba')]];for(var _0x416bdc=0x0;_0x416bdc<this['queueBooked'][this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xba')]]['length'];_0x416bdc+=0x1){_0x4a3a8a=rr(this[_0xc074('0xee')][this['actions'][_0x591c60[_0xc074('0xe7')]][_0xc074('0xba')]]);this[_0xc074('0x29')][_0x375256[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xba')]]=this[_0xc074('0xee')][this[_0xc074('0x23')][_0x591c60['actionid']]['queue']][_0xc074('0xf4')];if(_0x4a3a8a[_0xc074('0x83')]==='1'&&_0x4a3a8a[_0xc074('0xeb')]==='0'){break;}}if(!_[_0xc074('0xe9')](_0x4a3a8a)){this[_0xc074('0x1f')][_0x4a3a8a[_0xc074('0xec')]][_0xc074('0xf5')]=_[_0xc074('0x3c')](this[_0xc074('0x1f')][_0x4a3a8a[_0xc074('0xec')]][_0xc074('0xf5')])?!![]:this[_0xc074('0x1f')][_0x4a3a8a[_0xc074('0xec')]][_0xc074('0xf5')];}loggerBooked['info']('[booked][RR]',_0x591c60['actionid'],_0xc074('0xf6'),JSON[_0xc074('0x6f')](_[_0xc074('0x70')](this[_0xc074('0x1f')][_0x4a3a8a[_0xc074('0xec')]],[_0xc074('0x5a'),_0xc074('0xf5')])),'contactAgent-idHopper:\x20',JSON[_0xc074('0x6f')](_0x4a3a8a[_0xc074('0xef')]));if(!_[_0xc074('0xe9')](_0x4a3a8a)&&_0x4a3a8a[_0xc074('0x83')]==='1'&&_0x4a3a8a[_0xc074('0xeb')]==='0'&&this['agents'][_0x4a3a8a[_0xc074('0xec')]]['unlockRR']){this[_0xc074('0x1f')][_0x4a3a8a[_0xc074('0xec')]]['unlockRR']=![];this[_0xc074('0xee')][_0x375256['actions'][_0x591c60[_0xc074('0xe7')]][_0xc074('0xba')]]=[];this['preview']['run'](_0x4a3a8a[_0xc074('0xef')],_0x4a3a8a[_0xc074('0xec')])['catch'](function(_0x251522){logger[_0xc074('0x5e')](_0xc074('0xf7'),util['inspect'](_0x251522,{'showHidden':![],'depth':null}));})[_0xc074('0x1b')](function(){_0x375256[_0xc074('0xbe')](_0x375256[_0xc074('0x1d')][_0x375256[_0xc074('0x23')][_0x591c60['actionid']][_0xc074('0xba')]]);setTimeout(function(){_0x375256[_0xc074('0x1f')][_0x4a3a8a[_0xc074('0xec')]][_0xc074('0xf5')]=!![];loggerBooked[_0xc074('0x44')](_0xc074('0xf8'),_0x591c60[_0xc074('0xe7')],_0xc074('0xf6'),JSON[_0xc074('0x6f')](_[_0xc074('0x70')](_0x375256[_0xc074('0x1f')][_0x4a3a8a[_0xc074('0xec')]],['name',_0xc074('0xf5')])),_0xc074('0xf9'),JSON['stringify'](_0x4a3a8a[_0xc074('0xef')]));},0xc7);delete _0x375256[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]];unlockQueueStatus(_0x31a62e,_0x591c60['actionid']);});}else{loggerBooked[_0xc074('0x44')](_0xc074('0xfa'));this[_0xc074('0xbe')](this[_0xc074('0x1d')][this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]]['queue']]);hopperUtils[_0xc074('0xf2')]({'active':![],'ContactId':this['actions'][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd0')],'ListId':this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd1')],'VoiceQueueId':this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x591c60[_0xc074('0xe7')]]['CampaignId']||undefined})[_0xc074('0x9e')](loggerCatch(_0xc074('0xf3')));delete this['actions'][_0x591c60['actionid']];unlockQueueStatus(_0x31a62e);}}else{loggerBooked[_0xc074('0x44')](_0xc074('0xfb'));this[_0xc074('0xbe')](this[_0xc074('0x1d')][this[_0xc074('0x23')][_0x591c60['actionid']][_0xc074('0xba')]]);hopperUtils[_0xc074('0xf2')]({'active':![],'ContactId':this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd0')],'ListId':this[_0xc074('0x23')][_0x591c60['actionid']][_0xc074('0xd1')],'VoiceQueueId':this['actions'][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd2')]||undefined,'CampaignId':this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0xc074('0x23')][_0x591c60['actionid']];unlockQueueStatus(_0x31a62e);}}else{loggerBooked[_0xc074('0x44')]('[booked][unlock3]');this['updateOriginated'](this[_0xc074('0x1d')][this['actions'][_0x591c60[_0xc074('0xe7')]][_0xc074('0xba')]]);hopperUtils['rescheduleContact']({'active':![],'ContactId':this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd0')],'ListId':this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd1')],'VoiceQueueId':this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]][_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch(_0xc074('0xfc')));delete this[_0xc074('0x23')][_0x591c60[_0xc074('0xe7')]];unlockQueueStatus(_0x31a62e);}};Dialer[_0xc074('0x87')][_0xc074('0xfd')]=function(_0x323821){var _0x1f5360=this['actions'][_0x323821[_0xc074('0xe7')]];if(_0x1f5360){delete this[_0xc074('0x23')][_0x323821[_0xc074('0xe7')]];_0x1f5360[_0xc074('0xfe')]=moment()['format'](_0xc074('0xc0'));var _0x24389f=_0x1f5360[_0xc074('0xbc')]===_0xc074('0xbd')?this[_0xc074('0x1e')][_0x1f5360[_0xc074('0xba')]]:this[_0xc074('0x1d')][_0x1f5360[_0xc074('0xff')]()];if(_0x323821[_0xc074('0x100')]!==_0xc074('0x101')){this[_0xc074('0xbe')](_0x24389f);return this[_0xc074('0x102')](_0x1f5360,_0x24389f,_0x323821)[_0xc074('0x9e')](loggerCatch(_0xc074('0x103')));}this[_0xc074('0x25')][_0x323821['uniqueid']]=_0x1f5360;}};Dialer[_0xc074('0x87')][_0xc074('0x104')]=function(_0x59e46a){var _0x545986=this;var _0x311b4a=this[_0xc074('0x25')][_0x59e46a[_0xc074('0xbb')]];var _0x7b7f05;if(!_[_0xc074('0xe9')](_0x59e46a)&&!_['isNil'](_0x59e46a['variable'])&&!_[_0xc074('0xe9')](_0x59e46a[_0xc074('0x105')][_0xc074('0x106')])&&_0x59e46a[_0xc074('0x107')]===_0xc074('0x108')&&_0x311b4a){if(_0x311b4a['type']!==_0xc074('0xbd')&&this[_0xc074('0x1d')][_0x311b4a['queue']][_0xc074('0x109')]&&_0x59e46a[_0xc074('0x10a')]==='HANGUP'){delete this[_0xc074('0x25')][_0x59e46a[_0xc074('0xbb')]];this[_0xc074('0xbe')](this['voiceQueues'][_0x311b4a[_0xc074('0xba')]]);this['voiceQueues'][_0x311b4a['queue']][_0xc074('0xc1')]+=0x1;this[_0xc074('0x1d')][_0x311b4a['queue']][_0xc074('0x10b')]+=0x1;_0x7b7f05=new Hangup(_0x311b4a,_0x59e46a);_0x7b7f05[_0xc074('0x69')]=0x12;_0x7b7f05['statedesc']=_0xc074('0x10c');_0x7b7f05['membername']=_0xc074('0x10d');ami[_0xc074('0x3d')]('custom:amd',ut[_0xc074('0x10e')](_0x7b7f05,_0xc074('0x10f')));this[_0xc074('0x110')](_0x7b7f05,'[syncHangupInAMD][createHistory]',_0xc074('0x111'));}if(_0x311b4a['type']!==_0xc074('0xbd')&&this['voiceQueues'][_0x311b4a['queue']][_0xc074('0x109')]&&_0x59e46a['value']===_0xc074('0x112')){return new Promise(function(_0x5ebca2,_0x2d6c05){delete _0x545986['uniqueId'][_0x59e46a[_0xc074('0xbb')]];_0x545986[_0xc074('0xbe')](_0x545986[_0xc074('0x1d')][_0x311b4a['queue']]);_0x545986['voiceQueues'][_0x311b4a[_0xc074('0xba')]][_0xc074('0xc1')]+=0x1;_0x545986[_0xc074('0x1d')][_0x311b4a[_0xc074('0xba')]][_0xc074('0x10b')]+=0x1;var _0x2fdcf8=_0x545986[_0xc074('0x1d')][_0x311b4a[_0xc074('0xba')]];var _0x16a7ee=new Hangup(_0x311b4a,_0x59e46a);_0x16a7ee[_0xc074('0x69')]=0x13;_0x16a7ee[_0xc074('0x6a')]=_0xc074('0x113');_0x16a7ee['membername']=_0xc074('0x10d');_0x16a7ee[_0xc074('0x114')]+=0x1;_0x16a7ee['countglobal']+=0x1;_0x16a7ee[_0xc074('0x10f')]=!![];ami[_0xc074('0x3d')](_0xc074('0x115'),ut['buildObj'](_0x16a7ee,_0xc074('0x10f')));hopperUtils[_0xc074('0xd8')](_0x16a7ee)[_0xc074('0x9e')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x16a7ee[_0xc074('0x116')]+_0x16a7ee[_0xc074('0x117')]+_0x16a7ee['countnoanswerretry']+_0x16a7ee[_0xc074('0x118')]+_0x16a7ee[_0xc074('0xcc')]+_0x16a7ee[_0xc074('0xdc')]+_0x16a7ee[_0xc074('0x114')]+_0x16a7ee[_0xc074('0x119')]>=_0x2fdcf8[_0xc074('0x11a')]){_0x545986['stateGlobal'](_0x16a7ee,_0x5ebca2,_0x2d6c05,_0xc074('0x11b'));}else{if(_0x16a7ee[_0xc074('0x114')]>=_0x2fdcf8['dialMachineMaxRetry']){_0x545986[_0xc074('0x11c')](_0x16a7ee,_0x5ebca2,_0x2d6c05,_0xc074('0x11d'));}else{hopperUtils['rescheduleContact']({'active':![],'countmachineretry':_0x16a7ee['countmachineretry'],'scheduledat':moment()[_0xc074('0xce')](_0x2fdcf8[_0xc074('0x11e')],_0xc074('0xe3'))[_0xc074('0x78')](_0xc074('0xc0')),'ContactId':_0x16a7ee[_0xc074('0xd0')],'ListId':_0x16a7ee[_0xc074('0xd1')],'VoiceQueueId':_0x16a7ee[_0xc074('0xd2')]||undefined,'CampaignId':_0x16a7ee[_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch('[rescheduleContact][Machine]'));_0x5ebca2({'reschedule':0x1});}}});}if(_0x311b4a[_0xc074('0xbc')]==='ivr'&&this[_0xc074('0x1e')][_0x311b4a[_0xc074('0xba')]][_0xc074('0x109')]&&_0x59e46a[_0xc074('0x10a')]===_0xc074('0x11f')){delete this[_0xc074('0x25')][_0x59e46a[_0xc074('0xbb')]];this[_0xc074('0xbe')](this[_0xc074('0x1e')][_0x311b4a[_0xc074('0xba')]]);_0x7b7f05=new Hangup(_0x311b4a,_0x59e46a);_0x7b7f05[_0xc074('0x69')]=0x12;_0x7b7f05[_0xc074('0x6a')]=_0xc074('0x10c');_0x7b7f05['membername']=_0xc074('0x10d');ami[_0xc074('0x3d')](_0xc074('0x115'),ut[_0xc074('0x10e')](_0x7b7f05,_0xc074('0x10f')));this[_0xc074('0x110')](_0x7b7f05,'[syncHangupInAMDIvr][createHistory]',_0xc074('0x120'));}if(_0x311b4a[_0xc074('0xbc')]===_0xc074('0xbd')&&this['campaigns'][_0x311b4a[_0xc074('0xba')]]['dialAMDActive']&&_0x59e46a['value']==='MACHINE'){return new Promise(function(_0x4f55dd,_0x2182f6){delete _0x545986[_0xc074('0x25')][_0x59e46a[_0xc074('0xbb')]];_0x545986[_0xc074('0xbe')](_0x545986[_0xc074('0x1e')][_0x311b4a[_0xc074('0xba')]]);_0x545986[_0xc074('0x1e')][_0x311b4a['queue']]['outboundAnswerCallsDay']+=0x1;_0x545986['campaigns'][_0x311b4a['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x43fcd5=_0x545986['campaigns'][_0x311b4a[_0xc074('0xba')]];var _0x1a4578=new Hangup(_0x311b4a,_0x59e46a);_0x1a4578['state']=0x13;_0x1a4578[_0xc074('0x6a')]=_0xc074('0x113');_0x1a4578['membername']=_0xc074('0x10d');_0x1a4578[_0xc074('0x114')]+=0x1;_0x1a4578[_0xc074('0xdd')]+=0x1;_0x1a4578[_0xc074('0x10f')]=!![];ami['emit'](_0xc074('0x115'),ut[_0xc074('0x10e')](_0x1a4578,'amd'));hopperUtils[_0xc074('0xd8')](_0x1a4578)[_0xc074('0x9e')](loggerCatch(_0xc074('0x121')));if(_0x1a4578[_0xc074('0x116')]+_0x1a4578['countcongestionretry']+_0x1a4578['countnoanswerretry']+_0x1a4578['countnosuchnumberretry']+_0x1a4578['countdropretry']+_0x1a4578[_0xc074('0xdc')]+_0x1a4578['countmachineretry']+_0x1a4578[_0xc074('0x119')]>=_0x43fcd5[_0xc074('0x11a')]){_0x545986[_0xc074('0x122')](_0x1a4578,_0x4f55dd,_0x2182f6,_0xc074('0x11b'));}else{if(_0x1a4578['countmachineretry']>=_0x43fcd5[_0xc074('0x123')]){_0x545986[_0xc074('0x11c')](_0x1a4578,_0x4f55dd,_0x2182f6,'reason\x2019\x20machine....');}else{hopperUtils[_0xc074('0xf2')]({'active':![],'countmachineretry':_0x1a4578[_0xc074('0x114')],'scheduledat':moment()[_0xc074('0xce')](_0x43fcd5[_0xc074('0x11e')],'minutes')[_0xc074('0x78')](_0xc074('0xc0')),'ContactId':_0x1a4578['ContactId'],'ListId':_0x1a4578['ListId'],'VoiceQueueId':_0x1a4578[_0xc074('0xd2')]||undefined,'CampaignId':_0x1a4578['CampaignId']||undefined})[_0xc074('0x9e')](loggerCatch('[rescheduleContact][Machine]'));_0x4f55dd({'reschedule':0x1});}}});}}};Dialer[_0xc074('0x87')][_0xc074('0x32')]=function(_0x218615){var _0x444a79=this['uniqueId'][_0x218615[_0xc074('0xbb')]];var _0x486768;if(_0x444a79&&_0x444a79['type']===_0xc074('0xbd')){delete this['uniqueId'][_0x218615[_0xc074('0xbb')]];this[_0xc074('0xbe')](this[_0xc074('0x1e')][_0x444a79[_0xc074('0xba')]]);this[_0xc074('0x1e')][_0x444a79['queue']]['ivrAnswerCallsDay']+=0x1;_0x486768=new Hangup(_0x444a79,_0x218615);hopperUtils[_0xc074('0xd8')](_0x486768)[_0xc074('0x9e')](loggerCatch(_0xc074('0x124')));hopperUtils['moveContactManagedDialer'](_0x486768)['catch'](loggerCatch(_0xc074('0x125')));}if(_0x444a79&&_0x444a79['type']!=='ivr'&&isNotNull(this[_0xc074('0x1d')][_0x444a79['queue']][_0xc074('0x126')])){delete this[_0xc074('0x25')][_0x218615[_0xc074('0xbb')]];this[_0xc074('0xbe')](this['voiceQueues'][_0x444a79[_0xc074('0xba')]]);this[_0xc074('0x1d')][_0x444a79[_0xc074('0xba')]][_0xc074('0xc1')]+=0x1;this[_0xc074('0x1d')][_0x444a79['queue']][_0xc074('0x10b')]+=0x1;_0x486768=new Hangup(_0x444a79,_0x218615);_0x486768[_0xc074('0x69')]=0x10;_0x486768[_0xc074('0x6a')]='AnswerAGI';_0x486768['membername']=_0xc074('0x127');hopperUtils['createHistory'](_0x486768)[_0xc074('0x9e')](loggerCatch(_0xc074('0x124')));hopperUtils[_0xc074('0xc6')](_0x486768)[_0xc074('0x9e')](loggerCatch(_0xc074('0x125')));}if(_0x444a79&&_0x444a79[_0xc074('0xbc')]!=='ivr'&&!isNotNull(this['voiceQueues'][_0x444a79[_0xc074('0xba')]][_0xc074('0x126')])){delete this[_0xc074('0x25')][_0x218615[_0xc074('0xbb')]];this[_0xc074('0xbe')](this[_0xc074('0x1d')][_0x444a79[_0xc074('0xba')]]);this[_0xc074('0x1d')][_0x444a79[_0xc074('0xba')]]['outboundUnknownCallsDay']+=0x1;_0x486768=new Hangup(_0x444a79,_0x218615);_0x486768[_0xc074('0x69')]=0xc;_0x486768['statedesc']=_0x218615[_0xc074('0x128')];_0x486768['membername']=_0xc074('0x129');hopperUtils[_0xc074('0xd8')](_0x486768)['catch'](loggerCatch(_0xc074('0x124')));hopperUtils[_0xc074('0xc6')](_0x486768)[_0xc074('0x9e')](loggerCatch(_0xc074('0x125')));}};Dialer[_0xc074('0x87')]['syncQueueSummary']=function(_0x23a1c2){var _0xcec23a=this;if(!_0xcec23a['queuesSummary'][_0x23a1c2['name']]){_0xcec23a[_0xc074('0x12a')][_0x23a1c2[_0xc074('0x5a')]]={'running':![]};}else if(_0xcec23a[_0xc074('0x12a')][_0x23a1c2[_0xc074('0x5a')]][_0xc074('0x12b')]===!![]){return;}else if(_0xcec23a[_0xc074('0x12a')][_0x23a1c2[_0xc074('0x5a')]][_0xc074('0x12b')]===![]){_0xcec23a['queuesSummary'][_0x23a1c2['name']]['running']=!![];}var _0x472198=_0xcec23a[_0xc074('0x1d')][_0x23a1c2[_0xc074('0x5a')]];var _0x9697b7=_0x472198[_0xc074('0x63')]!==utils[_0xc074('0x64')][_0xc074('0x75')];var _0x59a2d9=utils[_0xc074('0x12c')](_0x472198);_0x472198[_0xc074('0x12d')]=utils[_0xc074('0x12e')](_0x472198,_0xcec23a[_0xc074('0x20')]);Promise[_0xc074('0xa8')]()['then'](function(){if(_0x472198[_0xc074('0x12d')]===utils[_0xc074('0x64')][_0xc074('0x75')]){if(_0x9697b7){clearPredictiveAttributes(_0x472198);_0x23a1c2[_0xc074('0x27')]=undefined;_0x23a1c2[_0xc074('0x28')]=undefined;}if(_0x472198[_0xc074('0x12d')]===utils[_0xc074('0x64')][_0xc074('0x75')]){_0x23a1c2[_0xc074('0x12f')]=0x0;_0x23a1c2[_0xc074('0xeb')]=0x0;_0x23a1c2[_0xc074('0x130')]=0x0;_0x23a1c2[_0xc074('0x131')]=0x0;_0x23a1c2['pTalking']=0x0;}}else if(_0x472198['statusMessage']===utils[_0xc074('0x64')][_0xc074('0x132')]&&!_0x59a2d9){return _0xcec23a[_0xc074('0x8d')](_0x472198,!![])['then'](function(){return _0xcec23a[_0xc074('0x8d')](_0x472198,![]);})[_0xc074('0x99')](function(){return _0xcec23a['checkDialMethod'](_0x472198);})[_0xc074('0x9e')](function(_0x2cb698){loggerSyncQueueSummary[_0xc074('0x3f')](_0xc074('0x133'),util['inspect'](_0x2cb698,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x472198);});}else{clearPredictiveAttributes(_0x472198);}})[_0xc074('0x99')](function(){var _0x9e5c7b=_0x23a1c2[_0xc074('0x134')](_0x472198);if(_0x9e5c7b||_0x472198[_0xc074('0x135')]){_0x472198[_0xc074('0x135')]=![];_0x23a1c2[_0xc074('0x136')](_0x472198);Object[_0xc074('0x137')](_0x472198,_0x23a1c2);emitOutboundVoiceQueueSummary(_0x23a1c2);}_0xcec23a[_0xc074('0x12a')][_0x472198['name']][_0xc074('0x12b')]=![];})[_0xc074('0x9e')](function(_0x260eac){logger[_0xc074('0x5e')](_0xc074('0x133'),util[_0xc074('0x61')](_0x260eac,{'showHidden':![],'depth':null}));_0xcec23a[_0xc074('0x12a')][_0x472198[_0xc074('0x5a')]][_0xc074('0x12b')]=![];});};Dialer[_0xc074('0x87')]['syncQueueSummaryComplete']=_['throttle'](function(){var _0x3e6794=_['filter'](this[_0xc074('0x1d')],function(_0x395c23){return _0x395c23[_0xc074('0x138')];});var _0x5f436=_[_0xc074('0x139')](this[_0xc074('0x1f')],function(_0x87e589){return _0x87e589[_0xc074('0x13a')]&&_0x87e589[_0xc074('0x83')]===_0xc074('0x84');});if(_0x3e6794[_0xc074('0x95')]>0x0&&_0x5f436[_0xc074('0x95')]>0x0){return Promise['resolve']()[_0xc074('0x99')](cmHopper[_0xc074('0x13b')](_[_0xc074('0x13c')](_0x3e6794,'id'),previewRecallmeReminderInterval,_['map'](_0x5f436,'id')))[_0xc074('0x99')](function(_0x538803){for(var _0x57f04a=0x0;_0x57f04a<_0x538803[_0xc074('0x95')];_0x57f04a++){var _0x120a92=_0x538803[_0x57f04a][_0xc074('0x13d')]['name'];if(_0x120a92)io['to'](util[_0xc074('0x78')]('user:%s',_0x120a92))[_0xc074('0x3d')]('user:dialPreviewRecallReminder',{'hopper':_0x538803[_0x57f04a]});}})[_0xc074('0x9e')](function(_0x15bdcb){logger[_0xc074('0x5e')](_0xc074('0x13e'),_0x15bdcb);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0xc074('0x87')][_0xc074('0x39')]=function(){var _0x268c76=this;setInterval(function(){_0x268c76[_0xc074('0x13f')](_0x268c76[_0xc074('0x25')],'[uniqueid]');_0x268c76['clearZombieChannels'](_0x268c76[_0xc074('0x23')],'[actions]');},0x32c8);};Dialer['prototype'][_0xc074('0x13f')]=function(_0x3264f3,_0x4dbbad){var _0x397452=this;for(var _0x32c4a6 in _0x3264f3){if(typeof _0x3264f3[_0x32c4a6]!==_0xc074('0xa6')){this['sequence'][_0xc074('0x19')](function(){if(!_[_0xc074('0xe9')](_0x3264f3[_0x32c4a6])){return ami['Action']({'action':_0xc074('0x83'),'channel':_0x3264f3[_0x32c4a6]['channel']})[_0xc074('0x9e')](function(_0x11bbd7){if(_0x11bbd7[_0xc074('0x63')]===_0xc074('0x140')){setTimeout(function(){if(_0x3264f3[_0x32c4a6]&&_0x3264f3[_0x32c4a6]['type']!==_0xc074('0xbd')){_0x397452[_0xc074('0xbe')](_0x397452[_0xc074('0x1d')][_0x3264f3[_0x32c4a6]['queue']]);logger[_0xc074('0x5e')](_0xc074('0x141'),_0x4dbbad,_0x32c4a6,_0x3264f3[_0x32c4a6]['queue']);delete _0x3264f3[_0x32c4a6];}if(_0x3264f3[_0x32c4a6]&&_0x3264f3[_0x32c4a6][_0xc074('0xbc')]==='ivr'){_0x397452[_0xc074('0xbe')](_0x397452['campaigns'][_0x3264f3[_0x32c4a6][_0xc074('0xba')]]);logger[_0xc074('0x5e')]('[Dialer][checkChannel][ivr]',_0x4dbbad,_0x32c4a6,_0x3264f3[_0x32c4a6][_0xc074('0xba')]);delete _0x3264f3[_0x32c4a6];}},0x2328);}});}});}}};Dialer['prototype'][_0xc074('0x142')]=function(_0x2b5881){return Promise[_0xc074('0xa8')]()['then'](voiceQueueRt['getVoiceQueueRtPauses'](_0x2b5881))['catch'](loggerCatch(_0xc074('0x143')));};Dialer[_0xc074('0x87')]['updateOriginated']=function(_0x3d09b7){if(!_['isUndefined'](_0x3d09b7)&&_0x3d09b7!==null){if(typeof _0x3d09b7[_0xc074('0x7b')]!==_0xc074('0xa6')){if(_0x3d09b7[_0xc074('0x7b')]>0x0){_0x3d09b7[_0xc074('0x7b')]-=0x1;}else{logger['error'](_0xc074('0x144'));}}}else{logger[_0xc074('0x5e')](_0xc074('0x145'));}};Dialer[_0xc074('0x87')][_0xc074('0x146')]=function(_0xd81664,_0x18c726){var _0x35ecfe=this;return function(_0x5bab47){_0x35ecfe[_0xc074('0xbe')](_0x18c726);logger['error'](_0xd81664,util[_0xc074('0x61')](_0x5bab47,{'showHidden':![],'depth':null}));};};Dialer['prototype']['emptyContact']=function(_0x20ad3c,_0x48a989,_0x59a3c4){var _0xc131e={'state':0x19,'statedesc':_0xc074('0x147')};this[_0xc074('0xbe')](_0x48a989);this['saveInDb'](_[_0xc074('0x58')](_0xc131e,_[_0xc074('0x70')](_0x59a3c4,['ContactId','ListId',_0xc074('0x148'),_0xc074('0xd2'),_0xc074('0xd3')])),_0xc074('0x149'),'[emptyContact]');logger[_0xc074('0x5e')](_0x20ad3c);};Dialer[_0xc074('0x87')][_0xc074('0x110')]=function(_0xb736c8,_0x14dd67,_0x33888a){hopperUtils[_0xc074('0xd8')](_0xb736c8)[_0xc074('0x9e')](loggerCatch(_0x14dd67));hopperUtils[_0xc074('0xc6')](_0xb736c8)[_0xc074('0x9e')](loggerCatch(_0x33888a));};Dialer[_0xc074('0x87')]['queueCallerAbandonCreateState']=function(_0x38a589,_0xa0b9e4){hopperUtils['createHistory'](_0x38a589)[_0xc074('0x9e')](loggerCatch('[syncAgentComplete][createHistory]'));if(_0xa0b9e4==0x0){hopperUtils[_0xc074('0xc6')](_0x38a589)['catch'](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer[_0xc074('0x87')][_0xc074('0x13e')]=function(_0x43cf3b){return Promise[_0xc074('0xa8')]()[_0xc074('0x99')](cmHopper[_0xc074('0x13b')](_0x43cf3b['id'],previewRecallmeReminderInterval))['then'](function(_0x388e2c){for(var _0x46787e=0x0;_0x46787e<_0x388e2c[_0xc074('0x95')];_0x46787e++){var _0x1a2238=_0x388e2c[_0x46787e][_0xc074('0x13d')][_0xc074('0x5a')];if(_0x1a2238)io['to'](util[_0xc074('0x78')]('user:%s',_0x1a2238))[_0xc074('0x3d')](_0xc074('0x14a'),{'hopper':_0x388e2c[_0x46787e]});}})[_0xc074('0x9e')](function(){});};Dialer['prototype'][_0xc074('0x14b')]=function(_0x1a2a2c){var _0x18f094=this;return function(){_0x18f094[_0xc074('0x14c')](_0x1a2a2c);};};Dialer[_0xc074('0x87')][_0xc074('0x14d')]=function(_0x4f92cc,_0x5e75b6){var _0x3e3ee6=this;var _0x6e462f=uuid['v4']();this[_0xc074('0x23')][_0x6e462f]=new Action(_0x4f92cc,_0x5e75b6,_0x6e462f);return new Promise(function(_0x235be3,_0x56dbc7){if(_[_0xc074('0x3c')](_0x4f92cc)&&typeof _0x4f92cc!==_0xc074('0x14e')){return _0x56dbc7(msgResponse('originate',_0xc074('0x8e'),_0xc074('0x14f')));}if(_[_0xc074('0x3c')](_0x5e75b6['phone'])||_0x5e75b6[_0xc074('0x150')]===null){return _0x56dbc7(msgResponse(_0xc074('0x151'),_0xc074('0x8e'),_0xc074('0x152')));}var _0x77c91={'XMD-CALLERID':_0x3e3ee6['actions'][_0x6e462f][_0xc074('0x153')](),'XMD-AGI':_0x4f92cc[_0xc074('0x126')]?util['format'](_0xc074('0x154'),ipAgi,_0x4f92cc[_0xc074('0x126')]):_0xc074('0x155'),'XMD-AGIAFTER':_0x4f92cc[_0xc074('0x156')]?util['format'](_0xc074('0x154'),ipAgi,_0x4f92cc['dialQueueProject2']):_0xc074('0x155'),'XMD-QUEUE':utils[_0xc074('0x157')](_0x4f92cc)?util[_0xc074('0x78')]('\x22%s,%s%s,,,%s\x22',_0x4f92cc['name'],_0x4f92cc[_0xc074('0x158')]||'',_0x4f92cc[_0xc074('0xc4')]?'c':'',_0x4f92cc[_0xc074('0xc8')]||0x3):_0xc074('0x155'),'XMD-CONTACTID':_0x5e75b6['ContactId'],'XMD-CDRTYPE':_0xc074('0x159'),'CALLERID(all)':_0x3e3ee6[_0xc074('0x23')][_0x6e462f][_0xc074('0x153')](),'XMD-AMD':_0x4f92cc[_0xc074('0x109')]?'ACTIVE':_0xc074('0x155'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x4f92cc[_0xc074('0x109')]){_0x77c91[_0xc074('0x15a')]=_0x4f92cc[_0xc074('0x15b')]||0x9c4;_0x77c91['XMD-AMDGREETING']=_0x4f92cc[_0xc074('0x15c')]||0x5dc;_0x77c91['XMD-AMDAFTERGREETINGSILENCE']=_0x4f92cc[_0xc074('0x15d')]||0x320;_0x77c91[_0xc074('0x15e')]=_0x4f92cc[_0xc074('0x15f')]||0x1388;_0x77c91[_0xc074('0x160')]=_0x4f92cc[_0xc074('0x161')]||0x64;_0x77c91['XMD-AMDBETWEENWORDSSILENCE']=_0x4f92cc[_0xc074('0x162')]||0x32;_0x77c91[_0xc074('0x163')]=_0x4f92cc[_0xc074('0x164')]||0x3;_0x77c91[_0xc074('0x165')]=_0x4f92cc[_0xc074('0x166')]||0x100;_0x77c91[_0xc074('0x167')]=_0x4f92cc[_0xc074('0x168')]||0x1388;}if(utils[_0xc074('0x157')](_0x4f92cc)){_0x77c91[_0xc074('0x169')]=_0x5e75b6[_0xc074('0xd2')];}else{_0x77c91['XMD-CAMPAIGNID']=_0x5e75b6[_0xc074('0xd3')];}var _0x304cbb=utils[_0xc074('0x16a')](_0x5e75b6[_0xc074('0x16b')]);Object[_0xc074('0x137')](_0x77c91,_0x304cbb);var _0x29d093=_0x3e3ee6[_0xc074('0x81')](_0x4f92cc['Trunk'])?utils[_0xc074('0x16c')](_0x4f92cc[_0xc074('0x16d')][_0xc074('0x16e')],_0x4f92cc[_0xc074('0x16f')],_0x4f92cc[_0xc074('0x170')]>0x0?utils['getCallerIdRandom'](_0x4f92cc[_0xc074('0x171')],_0x4f92cc[_0xc074('0x170')]):_0x4f92cc['dialOriginateCallerIdNumber']):utils[_0xc074('0x16c')](_[_0xc074('0xe9')](_0x4f92cc['TrunkBackup'])?_0x4f92cc[_0xc074('0x16d')][_0xc074('0x16e')]:_0x4f92cc[_0xc074('0x89')][_0xc074('0x16e')],_0x4f92cc[_0xc074('0x16f')],_0x4f92cc[_0xc074('0x170')]>0x0?utils[_0xc074('0x172')](_0x4f92cc[_0xc074('0x171')],_0x4f92cc[_0xc074('0x170')]):_0x4f92cc[_0xc074('0x171')]);if(_0x29d093){_0x77c91['XMD-ORIGINATECALLERIDNAME']=_0x3e3ee6[_0xc074('0x23')][_0x6e462f][_0xc074('0x173')]=utils[_0xc074('0x174')](_0x29d093);_0x77c91[_0xc074('0x175')]=_0x5e75b6[_0xc074('0x150')];}_0x4f92cc[_0xc074('0x176')]=_0x77c91;return ami[_0xc074('0x97')]({'actionid':_0x6e462f,'action':'originate','channel':_0x3e3ee6[_0xc074('0x81')](_0x4f92cc[_0xc074('0x16d')])?util[_0xc074('0x78')](_0xc074('0x177'),_0x4f92cc[_0xc074('0x16d')][_0xc074('0x5a')],isNotNull(_0x4f92cc[_0xc074('0x178')])?_0x4f92cc['dialPrefix'][_0xc074('0x179')]()||'':'',_0x4f92cc[_0xc074('0x17a')]>0x0?_0x5e75b6['phone']['substring'](_0x4f92cc[_0xc074('0x17a')]):_0x5e75b6[_0xc074('0x150')]):util[_0xc074('0x78')]('SIP/%s/%s%s',_[_0xc074('0xe9')](_0x4f92cc[_0xc074('0x89')])?_0x4f92cc['Trunk'][_0xc074('0x5a')]:_0x4f92cc['TrunkBackup']['name'],isNotNull(_0x4f92cc[_0xc074('0x178')])?_0x4f92cc[_0xc074('0x178')][_0xc074('0x179')]()||'':'',_0x4f92cc[_0xc074('0x17a')]>0x0?_0x5e75b6[_0xc074('0x150')]['substring'](_0x4f92cc[_0xc074('0x17a')]):_0x5e75b6['phone']),'callerid':_0x29d093,'Exten':_0xc074('0x108'),'Context':_0xc074('0x17b'),'Priority':'1','variable':_0x77c91,'timeout':(_0x4f92cc[_0xc074('0x17c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x6e462f})['then'](function(_0x3e956f){return _0x235be3(_0x3e956f);})[_0xc074('0x9e')](function(_0x29a35c){_0x4f92cc[_0xc074('0x17d')]+=0x1;var _0x339ffa=new History(_0x3e3ee6[_0xc074('0x23')][_0x6e462f]);logger['error'](util[_0xc074('0x78')](_0xc074('0x17e'),JSON[_0xc074('0x6f')](_0x29a35c)));_0x339ffa[_0xc074('0x69')]=0xe;_0x339ffa[_0xc074('0x6a')]=_0xc074('0x17f');_0x339ffa['starttime']=moment()[_0xc074('0x78')](_0xc074('0xc0'));_0x339ffa[_0xc074('0xd5')]=_0x339ffa[_0xc074('0x6b')];hopperUtils[_0xc074('0xd8')](_0x339ffa)[_0xc074('0x9e')](loggerCatch(_0xc074('0x180')));_0x3e3ee6['moveContactManagedDialer'](_0x339ffa)[_0xc074('0x9e')](loggerCatch('[originate][error]'))[_0xc074('0x1b')](function(){delete _0x3e3ee6[_0xc074('0x23')][_0x6e462f];return _0x56dbc7(msgResponse(_0xc074('0x151'),_0xc074('0x80'),_0xc074('0x181')));});});});};Dialer[_0xc074('0x87')][_0xc074('0x182')]=function(_0x11fe48,_0x255e2f,_0x498cbd){var _0x518149=new History(_0x255e2f);if(_0x518149[_0xc074('0x116')]+_0x518149[_0xc074('0x117')]+_0x518149['countnoanswerretry']+_0x518149[_0xc074('0x118')]+_0x518149[_0xc074('0xcc')]+_0x518149[_0xc074('0xdc')]+_0x518149[_0xc074('0x114')]+_0x518149['countagentrejectretry']>=_0x498cbd[_0xc074('0x11a')]-0x1){return!![];}switch(_0x11fe48){case 0x3:if(_0x518149[_0xc074('0x183')]>=_0x498cbd['dialNoAnswerMaxRetry']-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countnoanswerretry':_0x518149[_0xc074('0x183')]+=0x1,'scheduledat':moment()[_0xc074('0xce')](_0x498cbd['dialNoAnswerRetryFrequency'],'minutes')[_0xc074('0x78')](_0xc074('0xc0')),'ContactId':_0x518149[_0xc074('0xd0')],'ListId':_0x518149[_0xc074('0xd1')],'VoiceQueueId':_0x518149['VoiceQueueId']||undefined,'CampaignId':_0x518149[_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch(_0xc074('0x184')));break;case 0x5:if(_0x518149[_0xc074('0x116')]>=_0x498cbd[_0xc074('0x185')]-0x1){return!![];}hopperUtils[_0xc074('0xf2')]({'active':![],'countbusyretry':_0x518149['countbusyretry']+=0x1,'scheduledat':moment()[_0xc074('0xce')](_0x498cbd[_0xc074('0x186')],_0xc074('0xe3'))[_0xc074('0x78')](_0xc074('0xc0')),'ContactId':_0x518149[_0xc074('0xd0')],'ListId':_0x518149[_0xc074('0xd1')],'VoiceQueueId':_0x518149[_0xc074('0xd2')]||undefined,'CampaignId':_0x518149[_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch(_0xc074('0x187')));break;case 0x8:if(_0x518149[_0xc074('0x117')]>=_0x498cbd['dialCongestionMaxRetry']-0x1){return!![];}hopperUtils[_0xc074('0xf2')]({'active':![],'countcongestionretry':_0x518149['countcongestionretry']+=0x1,'scheduledat':moment()[_0xc074('0xce')](_0x498cbd[_0xc074('0x188')],_0xc074('0xe3'))[_0xc074('0x78')](_0xc074('0xc0')),'ContactId':_0x518149['ContactId'],'ListId':_0x518149[_0xc074('0xd1')],'VoiceQueueId':_0x518149[_0xc074('0xd2')]||undefined,'CampaignId':_0x518149[_0xc074('0xd3')]||undefined})['catch'](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x518149[_0xc074('0x118')]>=_0x498cbd[_0xc074('0x189')]-0x1){return!![];}else{hopperUtils[_0xc074('0xf2')]({'active':![],'countnosuchnumberretry':_0x518149['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0xc074('0xce')](_0x498cbd[_0xc074('0x18a')],_0xc074('0xe3'))[_0xc074('0x78')](_0xc074('0xc0')),'ContactId':_0x518149[_0xc074('0xd0')],'ListId':_0x518149['ListId'],'VoiceQueueId':_0x518149[_0xc074('0xd2')]||undefined,'CampaignId':_0x518149[_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch(_0xc074('0x18b')));}break;case 0xa:if(_0x518149[_0xc074('0xcc')]>=_0x498cbd[_0xc074('0x18c')]-0x1){return!![];}hopperUtils[_0xc074('0xf2')]({'active':![],'countdropretry':_0x518149['countdropretry']+=0x1,'scheduledat':moment()[_0xc074('0xce')](_0x498cbd[_0xc074('0xcf')],_0xc074('0xe3'))[_0xc074('0x78')](_0xc074('0xc0')),'ContactId':_0x518149[_0xc074('0xd0')],'ListId':_0x518149['ListId'],'VoiceQueueId':_0x518149['VoiceQueueId']||undefined,'CampaignId':_0x518149[_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch(_0xc074('0x18d')));break;case 0xb:if(_0x518149[_0xc074('0xdc')]>=_0x498cbd[_0xc074('0xe0')]-0x1){return!![];}hopperUtils[_0xc074('0xf2')]({'active':![],'countabandonedretry':_0x518149[_0xc074('0xdc')]+=0x1,'scheduledat':moment()[_0xc074('0xce')](_0x498cbd[_0xc074('0xe2')],'minutes')['format'](_0xc074('0xc0')),'ContactId':_0x518149[_0xc074('0xd0')],'ListId':_0x518149[_0xc074('0xd1')],'VoiceQueueId':_0x518149['VoiceQueueId']||undefined,'CampaignId':_0x518149[_0xc074('0xd3')]||undefined})['catch'](loggerCatch(_0xc074('0xe4')));break;case 0x13:if(_0x518149['countmachineretry']>=_0x498cbd[_0xc074('0x123')]-0x1){return!![];}hopperUtils[_0xc074('0xf2')]({'active':![],'countmachineretry':_0x518149['countmachineretry']+=0x1,'scheduledat':moment()['add'](_0x498cbd['dialMachineRetryFrequency'],_0xc074('0xe3'))['format'](_0xc074('0xc0')),'ContactId':_0x518149['ContactId'],'ListId':_0x518149[_0xc074('0xd1')],'VoiceQueueId':_0x518149[_0xc074('0xd2')]||undefined,'CampaignId':_0x518149[_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch(_0xc074('0x18e')));break;case 0x14:if(_0x518149[_0xc074('0x119')]>=_0x498cbd[_0xc074('0x18f')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countagentrejectretry':_0x518149[_0xc074('0x119')]+=0x1,'scheduledat':moment()[_0xc074('0xce')](_0x498cbd[_0xc074('0x190')],'minutes')[_0xc074('0x78')](_0xc074('0xc0')),'ContactId':_0x518149[_0xc074('0xd0')],'ListId':_0x518149[_0xc074('0xd1')],'VoiceQueueId':_0x518149[_0xc074('0xd2')]||undefined,'CampaignId':_0x518149[_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0xc074('0x87')][_0xc074('0x102')]=function(_0x50ad87,_0x3659cb,_0xde037f){var _0x1ad068=this;var _0x577343=new History(_0x50ad87);var _0x1e394f=![];var _0x2b176f;var _0x3aaf86;return new Promise(function(_0x334215,_0x2625e4){if(_[_0xc074('0x3c')](_0x3659cb)&&typeof _0x3659cb!=='object'){return _0x2625e4(msgResponse('[callProgressDetecting]',_0xc074('0x8e'),_0xc074('0x191')));}if(_[_0xc074('0x3c')](_0xde037f)&&typeof _0xde037f!==_0xc074('0x14e')){return _0x2625e4(msgResponse(_0xc074('0x192'),_0xc074('0x8e'),_0xc074('0x193')));}hopperUtils['verifyAdditionalPhones'](_0x577343,_0xde037f[_0xc074('0x194')],_0x3659cb)['then'](function(_0x1d3be5){if(_0x1d3be5[_0xc074('0xe1')]==0x1)_0x1e394f=!![];switch(_0xde037f[_0xc074('0x194')]){case'0':_0x3659cb[_0xc074('0x195')]+=0x1;_0x577343[_0xc074('0x69')]=0x0;_0x577343['statedesc']='NoSuchNumber';_0x577343[_0xc074('0x118')]+=0x1;_0x577343[_0xc074('0xdd')]+=0x1;ami[_0xc074('0x3d')](_0xc074('0x196'),ut[_0xc074('0x10e')](_0x50ad87,'nosuchnumber'));_0x2b176f=_0x3659cb['dialNoSuchNumberRetryFrequency'];_0x3aaf86=_0x3659cb[_0xc074('0xcb')];hopperUtils[_0xc074('0xd8')](_0x577343)[_0xc074('0x9e')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x1ad068[_0xc074('0x182')](0x0,_0x50ad87,_0x3659cb)&&!_0x1e394f){if(_0x577343[_0xc074('0x118')]>=_0x3659cb['dialNoSuchNumberMaxRetry']){_0x1ad068['createStateFinal'](_0x577343,_0x334215,_0x2625e4,_0xc074('0x197'));}else{_0x1ad068[_0xc074('0x122')](_0x577343,_0x334215,_0x2625e4,_0xc074('0x197'));}}break;case'3':_0x3659cb[_0xc074('0x198')]+=0x1;_0x577343[_0xc074('0x69')]=0x3;_0x577343[_0xc074('0x6a')]='NoAnswer';_0x577343[_0xc074('0x183')]+=0x1;_0x577343[_0xc074('0xdd')]+=0x1;var _0x2b9717=ut['buildNoAnswerEventPayload'](_0x50ad87,_0x3659cb);ami[_0xc074('0x3d')]('custom:agentnoanswer',_0x2b9717);_0x2b176f=_0x3659cb[_0xc074('0x199')];_0x3aaf86=_0x3659cb[_0xc074('0xcb')];hopperUtils['createHistory'](_0x577343)[_0xc074('0x9e')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x1ad068[_0xc074('0x182')](0x3,_0x50ad87,_0x3659cb)&&!_0x1e394f){if(_0x577343[_0xc074('0x183')]>=_0x3659cb[_0xc074('0x19a')]){_0x1ad068['createStateFinal'](_0x577343,_0x334215,_0x2625e4,_0xc074('0x19b'));}else{_0x1ad068[_0xc074('0x122')](_0x577343,_0x334215,_0x2625e4,_0xc074('0x19b'));}}break;case'5':_0x3659cb[_0xc074('0x19c')]+=0x1;_0x577343[_0xc074('0x69')]=0x5;_0x577343[_0xc074('0x6a')]=_0xc074('0x19d');_0x577343[_0xc074('0x116')]+=0x1;_0x577343[_0xc074('0xdd')]+=0x1;ami[_0xc074('0x3d')]('custom:agentbusy',ut['buildObj'](_0x50ad87,_0xc074('0x19e')));_0x2b176f=_0x3659cb[_0xc074('0x186')];_0x3aaf86=_0x3659cb[_0xc074('0xcb')];hopperUtils[_0xc074('0xd8')](_0x577343)['catch'](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x1ad068['checkRetriveMax'](0x5,_0x50ad87,_0x3659cb)&&!_0x1e394f){if(_0x577343['countbusyretry']>=_0x3659cb[_0xc074('0x185')]){_0x1ad068[_0xc074('0x11c')](_0x577343,_0x334215,_0x2625e4,_0xc074('0x19f'));}else{_0x1ad068[_0xc074('0x122')](_0x577343,_0x334215,_0x2625e4,_0xc074('0x19f'));}}break;case'8':_0x3659cb[_0xc074('0x1a0')]+=0x1;_0x577343[_0xc074('0x69')]=0x8;_0x577343[_0xc074('0x6a')]=_0xc074('0x1a1');_0x577343['countcongestionretry']+=0x1;_0x577343[_0xc074('0xdd')]+=0x1;_0x2b176f=_0x3659cb[_0xc074('0x188')];_0x3aaf86=_0x3659cb[_0xc074('0xcb')];ami[_0xc074('0x3d')](_0xc074('0x1a2'),ut[_0xc074('0x10e')](_0x50ad87,'congestion'));hopperUtils['createHistory'](_0x577343)[_0xc074('0x9e')](loggerCatch(_0xc074('0x1a3')));if(_0x1ad068[_0xc074('0x182')](0x8,_0x50ad87,_0x3659cb)&&!_0x1e394f){if(_0x577343[_0xc074('0x117')]>=_0x3659cb[_0xc074('0x1a4')]){_0x1ad068[_0xc074('0x11c')](_0x577343,_0x334215,_0x2625e4,'reason\x208\x20congestion');}else{_0x1ad068['stateGlobal'](_0x577343,_0x334215,_0x2625e4,_0xc074('0x1a5'));}}break;case'11':_0x3659cb[_0xc074('0x1a6')]+=0x1;_0x577343[_0xc074('0x69')]=0xb;_0x577343[_0xc074('0x6a')]=_0xc074('0xdb');_0x577343[_0xc074('0xdc')]+=0x1;_0x577343[_0xc074('0xdd')]+=0x1;_0x2b176f=_0x3659cb[_0xc074('0xe2')];_0x3aaf86=_0x3659cb[_0xc074('0xcb')];hopperUtils[_0xc074('0xd8')](_0x577343)[_0xc074('0x9e')](loggerCatch(_0xc074('0xe5')));if(_0x1ad068[_0xc074('0x182')](0xb,_0x50ad87,_0x3659cb)&&!_0x1e394f){if(_0x577343[_0xc074('0xdc')]>=_0x3659cb[_0xc074('0xe0')]){_0x1ad068['createStateFinal'](_0x577343,_0x334215,_0x2625e4,_0xc074('0x1a7'));}else{_0x1ad068[_0xc074('0x122')](_0x577343,_0x334215,_0x2625e4,_0xc074('0x1a7'));}}break;case'20':_0x3659cb[_0xc074('0x1a8')]+=0x1;_0x577343[_0xc074('0x69')]=0x14;_0x577343[_0xc074('0x6a')]=_0xc074('0x1a9');_0x577343[_0xc074('0x119')]+=0x1;_0x577343[_0xc074('0xdd')]+=0x1;_0x2b176f=_0x3659cb[_0xc074('0x190')];_0x3aaf86=_0x3659cb[_0xc074('0xcb')];ami[_0xc074('0x3d')](_0xc074('0x1aa'),ut[_0xc074('0x10e')](_0x50ad87,_0xc074('0x1ab')));hopperUtils[_0xc074('0xd8')](_0x577343)['catch'](loggerCatch(_0xc074('0x1ac')));if(_0x1ad068[_0xc074('0x182')](0x14,_0x50ad87,_0x3659cb)&&!_0x1e394f){if(_0x577343[_0xc074('0x119')]>=_0x3659cb[_0xc074('0x18f')]){_0x1ad068[_0xc074('0x11c')](_0x577343,_0x334215,_0x2625e4,'reason\x2020\x20agentreject');}else{_0x1ad068['stateGlobal'](_0x577343,_0x334215,_0x2625e4,_0xc074('0x1ad'));}}break;default:_0x3659cb[_0xc074('0x1ae')]+=0x1;_0x577343[_0xc074('0x69')]=0xc;_0x577343[_0xc074('0x6a')]=_0xde037f[_0xc074('0x194')];_0x2b176f=_0x3659cb[_0xc074('0x190')];_0x3aaf86=_0x3659cb[_0xc074('0xcb')];hopperUtils['createHistory'](_0x577343)['catch'](loggerCatch(_0xc074('0x1af')));if(_0x1ad068['checkRetriveMax'](_0xde037f[_0xc074('0x194')],_0x50ad87,_0x3659cb)&&!_0x1e394f){if(_0x577343[_0xc074('0x116')]+_0x577343[_0xc074('0x117')]+_0x577343[_0xc074('0x183')]+_0x577343['countnosuchnumberretry']+_0x577343[_0xc074('0xcc')]+_0x577343[_0xc074('0xdc')]+_0x577343[_0xc074('0x114')]+_0x577343[_0xc074('0x119')]>=_0x3659cb[_0xc074('0x11a')]){_0x1ad068[_0xc074('0x122')](_0x577343,_0x334215,_0x2625e4,_0xde037f['reason']);}else{_0x1ad068[_0xc074('0x11c')](_0x577343,_0x334215,_0x2625e4,_0xde037f[_0xc074('0x194')]);}}}})[_0xc074('0x99')](function(){if(_0x1e394f){hopperUtils[_0xc074('0xd9')](_0x577343,_0x2b176f,_0x3aaf86)[_0xc074('0x99')](function(){return _0x334215(0x1);});}});});};Dialer[_0xc074('0x87')][_0xc074('0x122')]=function(_0x28d8ac,_0xfb6702,_0x4ff1cb,_0x2b5855){var _0xb1d775=new Final(_0x28d8ac);_0xb1d775['state']=0xf;_0xb1d775[_0xc074('0x6a')]=_0xc074('0x1b0');this[_0xc074('0x11c')](_0xb1d775,_0xfb6702,_0x4ff1cb,_0x2b5855);};Dialer[_0xc074('0x87')][_0xc074('0x11c')]=function(_0x59fb0b,_0x391018,_0x6b3755,_0xc4941){hopperUtils[_0xc074('0xc6')](_0x59fb0b)[_0xc074('0x99')](function(){return _0x391018(msgResponse(_0xc074('0x192'),_0xc074('0x101'),_0xc4941));})[_0xc074('0x9e')](function(){return _0x6b3755(msgResponse(_0xc074('0x1b1'),_0xc074('0x8e'),_0xc074('0x1b2')));});};Dialer[_0xc074('0x87')][_0xc074('0xa')]=function(_0x2d8818){var _0x47613f=_0x2d8818[_0xc074('0x1b3')]/0x64;var _0x3032f1=_0x2d8818[_0xc074('0xc9')]/(_0x2d8818['outboundDropCallsDayTimeout']+_0x2d8818[_0xc074('0xc1')]);var _0x2c4747=Math[_0xc074('0x1b4')](_0x2d8818[_0xc074('0x1b5')]*(_0x2d8818[_0xc074('0x1b6')]/0x64));var _0x280c98=Math[_0xc074('0x1b4')](_0x2d8818['predictiveIntervalAvailable']*(_0x2d8818[_0xc074('0x1b7')]/0x64));var _0x31547a=_0x2d8818[_0xc074('0x12f')]+_0x2d8818[_0xc074('0x131')];var _0x1c77d4=Math['floor'](_0x2d8818[_0xc074('0x53')]*_0x2d8818[_0xc074('0x56')]*_0x2d8818[_0xc074('0x1b8')]*_0x2d8818['predictiveIntervalMultiplicativeFactor']);if(_[_0xc074('0x3c')](_0x2d8818[_0xc074('0x28')])){if(!_[_0xc074('0x3c')](_0x2d8818['startPredictive'])){_0x2d8818[_0xc074('0x27')]=undefined;loggerPredictive[_0xc074('0x5e')](_0xc074('0x1b9'),_0xc074('0x1ba'));}if(!_[_0xc074('0x3c')](_0x2d8818[_0xc074('0x5c')])){loggerPredictive[_0xc074('0x5e')](_0xc074('0x1b9'),_0xc074('0x1bb'));clearInterval(_0x2d8818[_0xc074('0x5c')]);_0x2d8818['handlePredictive']=undefined;}_0x2d8818[_0xc074('0x28')]=moment()[_0xc074('0x78')](_0xc074('0xc0'));loggerPredictive[_0xc074('0x44')](_0x2d8818[_0xc074('0x5a')],_0xc074('0x1bc'),_0x2d8818['startProgressive']);this[_0xc074('0xad')](_0x2d8818,0x1);}else if(ifInterval(_0x2d8818[_0xc074('0x1bd')],_0x2d8818['startProgressive'])){this[_0xc074('0xad')](_0x2d8818,0x1);loggerPredictiveCalls['info'](_0xc074('0x1be'),_0x2d8818['startProgressive'],_0x2d8818['name']);_0x2d8818[_0xc074('0x53')]=0x0;_0x2d8818[_0xc074('0x1bf')]=0x0;}else if(_0x47613f<_0x3032f1&&_0x2d8818[_0xc074('0x1c0')]===_0xc074('0x1c1')){clearPredictiveAttributes(_0x2d8818);loggerPredictive[_0xc074('0x44')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0xc074('0x1c2'),_0x3032f1,_0xc074('0x28'),_0x2d8818[_0xc074('0x5a')]);}else if(_0x1c77d4<_0x2d8818[_0xc074('0x1bf')]&&_0x2d8818[_0xc074('0x1c0')]===_0xc074('0x1c1')){clearPredictiveAttributes(_0x2d8818);loggerPredictive[_0xc074('0x44')](_0xc074('0x1c3'),_0xc074('0x1c4'),_0x1c77d4,'Drop\x20in\x20this\x20interval',_0x2d8818[_0xc074('0x1bf')],_0xc074('0x28'),_0x2d8818['name']);}else if(!ifInterval(_0x2d8818[_0xc074('0x1bd')],_0x2d8818['startProgressive'])&&_[_0xc074('0x3c')](_0x2d8818[_0xc074('0x27')])&&!_[_0xc074('0x3c')](_0x2d8818[_0xc074('0x28')])){_0x2d8818[_0xc074('0x27')]=moment()[_0xc074('0x78')](_0xc074('0xc0'));loggerPredictive[_0xc074('0x44')](_0x2d8818[_0xc074('0x5a')],_0xc074('0x1c5'),_0x2d8818[_0xc074('0x27')]);hopperUtils[_0xc074('0x1c6')](_0x2d8818[_0xc074('0x1bd')])['then'](this['getDataPredictive'](_0x2d8818))[_0xc074('0x99')](mergeDataErlangB(_0x2d8818))[_0xc074('0x99')](this['startMethodPredictive'](_0x2d8818))[_0xc074('0x9e')](loggerCatchPredictive(_0xc074('0x1c7'),_0x2d8818));}else if(!ifInterval(_0x2d8818['dialPredictiveInterval'],_0x2d8818[_0xc074('0x27')])){_0x2d8818['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x2d8818[_0xc074('0x27')]=moment()[_0xc074('0x78')](_0xc074('0xc0'));loggerPredictive['info'](_0x2d8818[_0xc074('0x5a')],_0xc074('0x1c8'),_0x2d8818['startPredictive']);clearInterval(_0x2d8818['handlePredictive']);_0x2d8818[_0xc074('0x5c')]=undefined;hopperUtils[_0xc074('0x1c6')](_0x2d8818['dialPredictiveInterval'])[_0xc074('0x99')](this['getDataPredictive'](_0x2d8818))[_0xc074('0x99')](mergeDataErlangB(_0x2d8818))[_0xc074('0x99')](this[_0xc074('0x1c9')](_0x2d8818))['catch'](loggerCatchPredictive(_0xc074('0x1ca'),_0x2d8818));}else if(_0x2d8818[_0xc074('0x1b5')]&&_0x31547a<_0x2d8818['predictiveIntervalAvailable']-_0x280c98){clearPredictiveAttributes(_0x2d8818);loggerPredictive['info'](_0x2d8818['name'],_0xc074('0x1cb'),_0x31547a,')\x20are\x20less\x20than\x20threshold\x20(',_0x2d8818[_0xc074('0x1b5')],'-',_0x280c98,'=',_0x2d8818[_0xc074('0x1b5')]-_0x280c98,')');}else if(_0x2d8818[_0xc074('0x1b5')]&&_0x31547a>_0x2d8818[_0xc074('0x1b5')]+_0x2c4747){clearPredictiveAttributes(_0x2d8818);loggerPredictive[_0xc074('0x44')](_0x2d8818['name'],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x31547a,')\x20are\x20more\x20than\x20threshold\x20(',_0x2d8818[_0xc074('0x1b5')],'+',_0x2c4747,'=',_0x2d8818[_0xc074('0x1b5')]+_0x2c4747,')');}};Dialer[_0xc074('0x87')][_0xc074('0x1cc')]=function(_0x11d5cc){var _0xf7ebfd=this;return function(_0x18b2d2){return new Promise(function(_0x58cbcc,_0x9d3269){_[_0xc074('0x58')](_0x11d5cc,_0x18b2d2[0x0]);if(checkGetDataPredictive(_0x18b2d2[0x0])){var _0x21c283=_0x11d5cc[_0xc074('0x1b5')]=_0x11d5cc[_0xc074('0x131')]+_0x11d5cc[_0xc074('0x12f')];var _0x3b3914=_0x11d5cc[_0xc074('0x1bd')]*0x3c;var _0x3f7f4c=_0x18b2d2[0x0][_0xc074('0x50')]+_0x18b2d2[0x0]['predictiveIntervalAvgHoldtime'];var _0xcfc30c=(_0x18b2d2[0x0]['predictiveIntervalAnsweredCalls']+_0x18b2d2[0x0][_0xc074('0x4a')]+_0x18b2d2[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x18b2d2[0x0][_0xc074('0x47')];_0x11d5cc[_0xc074('0x1b8')]=_0xcfc30c>0x0?_0xcfc30c:0x1;switch(_0x11d5cc[_0xc074('0x1c0')]){case _0xc074('0x1c1'):var _0x5aef0b=_0x11d5cc['dialPredictiveOptimizationPercentage']/0x64;return _0xf7ebfd[_0xc074('0x1cd')](_0x21c283,_0x3b3914,_0x3f7f4c,_0xcfc30c,_0x5aef0b)[_0xc074('0x99')](function(_0x48d948){return _0x58cbcc(_0x48d948);});case _0xc074('0x1ce'):var _0x153532=_0x11d5cc[_0xc074('0x1b3')]/0x64;return _0xf7ebfd[_0xc074('0x1cf')](_0x21c283,_0x3b3914,_0x3f7f4c,_0xcfc30c,_0x153532)[_0xc074('0x99')](function(_0x110421){return _0x58cbcc(_0x110421);});default:return _0x9d3269(msgResponse(_0xc074('0x1d0'),_0xc074('0x8e'),_0xc074('0x1d1')));}}else{return _0x9d3269(msgResponse(_0xc074('0x1d0'),_0xc074('0x8e'),_0xc074('0x1d2')));}});};};Dialer[_0xc074('0x87')][_0xc074('0x1d3')]=function(_0x4497ef){var _0x30d572=this;return function(_0x1878c6){return new Promise(function(_0x5e97f8,_0x456cb3){_[_0xc074('0x58')](_0x4497ef,_0x1878c6[0x0]);if(checkGetDataPredictive(_0x1878c6[0x0])){loggerPredictive[_0xc074('0x44')](JSON[_0xc074('0x6f')](_0x1878c6[0x0]));if(_0x4497ef[_0xc074('0x1c0')]==='dropRate'){return _0x30d572[_0xc074('0x142')](_0x4497ef['id'])[_0xc074('0x99')](function(_0x3b872c){var _0x540c90=_0x4497ef[_0xc074('0x1d4')]-_0x3b872c[0x0][_0xc074('0x1d5')];var _0x34097c=_0x4497ef[_0xc074('0x1bd')]*0x3c;var _0x2a41cf=_0x1878c6[0x0][_0xc074('0x50')]+_0x1878c6[0x0][_0xc074('0x4d')];var _0x49f5ba=(_0x1878c6[0x0][_0xc074('0x49')]+_0x1878c6[0x0][_0xc074('0x4a')]+_0x1878c6[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x1878c6[0x0][_0xc074('0x47')];var _0x5286d8=_0x4497ef[_0xc074('0x1b3')]/0x64;_0x4497ef[_0xc074('0x1d6')]=_0x3b872c[0x0][_0xc074('0x1d5')]||0x0;_0x4497ef['predictiveIntervalHitRate']=_0x49f5ba>0x0?_0x49f5ba:0x1;return _0x30d572[_0xc074('0x1cd')](_0x540c90,_0x34097c,_0x2a41cf,_0x49f5ba,_0x5286d8);})[_0xc074('0x99')](function(_0x55c86d){return _0x5e97f8(_0x55c86d);})[_0xc074('0x9e')](function(_0x2fd6bc){return _0x456cb3(msgResponse(_0xc074('0x1d7'),_0xc074('0x8e'),JSON[_0xc074('0x6f')](_0x2fd6bc)));});}if(_0x4497ef['dialPredictiveOptimization']===_0xc074('0x1ce')){return _0x30d572['getVoiceQueueRtPauses'](_0x4497ef['id'])['then'](function(_0x3b8ea8){var _0x240fe5=_0x4497ef[_0xc074('0x1d4')]-_0x3b8ea8[0x0][_0xc074('0x1d5')];var _0x5a531b=_0x4497ef[_0xc074('0x1bd')]*0x3c;var _0x1ed7d1=_0x1878c6[0x0][_0xc074('0x50')]+_0x1878c6[0x0][_0xc074('0x4d')];var _0xb52570=(_0x1878c6[0x0]['predictiveIntervalAnsweredCalls']+_0x1878c6[0x0][_0xc074('0x4a')]+_0x1878c6[0x0][_0xc074('0x4c')])/_0x1878c6[0x0][_0xc074('0x47')];var _0x42c303=_0x4497ef[_0xc074('0x1b3')]/0x64;_0x4497ef['predictiveIntervalPauses']=_0x3b8ea8[0x0][_0xc074('0x1d5')]||0x0;_0x4497ef['predictiveIntervalHitRate']=_0xb52570>0x0?_0xb52570:0x1;return _0x30d572[_0xc074('0x1cf')](_0x240fe5,_0x5a531b,_0x1ed7d1,_0xb52570,_0x42c303);})['then'](function(_0x386e1d){return _0x5e97f8(_0x386e1d);})[_0xc074('0x9e')](function(_0x1cb4de){return _0x456cb3(msgResponse('[CatchErlangB]',_0xc074('0x8e'),JSON[_0xc074('0x6f')](_0x1cb4de)));});}}else{return _0x456cb3(msgResponse(_0xc074('0x1d0'),_0xc074('0x8e'),_0xc074('0x1d2')));}});};};Dialer[_0xc074('0x87')][_0xc074('0x1c9')]=function(_0x4a49e9){var _0xf8e449=this;return function(){var _0x2b0b1b=0x0;var _0x2be968=Math['floor'](_0x4a49e9[_0xc074('0x54')]*0x3e8);if(_0x2be968>0x0){_0x2be968=_0x2be968<0x64?0x64:_0x2be968;loggerPredictive[_0xc074('0x44')](_0x4a49e9[_0xc074('0x5a')],_0xc074('0x1d8'),_0x2be968,_0xc074('0x1d9'));_0x4a49e9[_0xc074('0x5c')]=setInterval(function(){_0xf8e449[_0xc074('0x5c')](_0x4a49e9);loggerPredictiveCalls[_0xc074('0x44')](_0xc074('0x1da'),_0x2b0b1b+=0x1);},_0x2be968);}else{loggerPredictive['info'](_0x4a49e9[_0xc074('0x5a')],_0xc074('0x1db'));}};};Dialer[_0xc074('0x87')][_0xc074('0x1dc')]=function(_0x52ae80,_0x5e8f4a){var _0xf3be01=this;return function(_0xab50e1){if(_['isEmpty'](_0xab50e1)){if(_['isNil'](_0x5e8f4a['UserId'])||!_0x5e8f4a[_0xc074('0x1dd')]){if(_0x52ae80[_0xc074('0xaa')]==='booked'){_0x52ae80[_0xc074('0x6c')]=_[_0xc074('0x3c')](_0x52ae80[_0xc074('0x6c')])?!![]:_0x52ae80['queueStatusComplete'];var _0x5a6930=uuid['v4']();_0xf3be01[_0xc074('0x23')][_0x5a6930]=new Action(_0x52ae80,_0x5e8f4a,_0x5a6930);loggerBooked[_0xc074('0x44')](_0xc074('0x1de'),_0x5a6930,_0xc074('0x1df'),JSON[_0xc074('0x6f')](_0x52ae80['queueStatusComplete']),'Queue:\x20',_0x52ae80[_0xc074('0x5a')]);if(_0x52ae80[_0xc074('0x6c')]){_0x52ae80[_0xc074('0x6c')]=![];_0xf3be01[_0xc074('0xee')][_0xf3be01[_0xc074('0x23')][_0x5a6930][_0xc074('0xba')]]=[];ami[_0xc074('0x97')]({'actionid':_0x5a6930,'action':_0xc074('0x1e0'),'queue':_0x52ae80[_0xc074('0x5a')]})[_0xc074('0x9e')](function(){_0xf3be01[_0xc074('0xbe')](_0x52ae80);hopperUtils['rescheduleContact']({'active':![],'ContactId':_0xf3be01['actions'][_0x5a6930][_0xc074('0xd0')],'ListId':_0xf3be01[_0xc074('0x23')][_0x5a6930][_0xc074('0xd1')],'VoiceQueueId':_0xf3be01[_0xc074('0x23')][_0x5a6930][_0xc074('0xd2')]||undefined,'CampaignId':_0xf3be01[_0xc074('0x23')][_0x5a6930][_0xc074('0xd3')]||undefined})['catch'](loggerCatch(_0xc074('0x1e1')));delete _0xf3be01[_0xc074('0x23')][_0x5a6930];});}else{loggerBooked['info'](_0xc074('0x1e2'),JSON[_0xc074('0x6f')](_0x52ae80[_0xc074('0x6c')]),_0xc074('0x1e3'),_0x52ae80['name']);_0xf3be01[_0xc074('0xbe')](_0x52ae80);hopperUtils[_0xc074('0xf2')]({'active':![],'ContactId':_0xf3be01[_0xc074('0x23')][_0x5a6930][_0xc074('0xd0')],'ListId':_0xf3be01['actions'][_0x5a6930]['ListId'],'VoiceQueueId':_0xf3be01[_0xc074('0x23')][_0x5a6930][_0xc074('0xd2')]||undefined,'CampaignId':_0xf3be01[_0xc074('0x23')][_0x5a6930]['CampaignId']||undefined})['catch'](loggerCatch(_0xc074('0x1e1')));delete _0xf3be01[_0xc074('0x23')][_0x5a6930];}}else{return _0xf3be01[_0xc074('0x14d')](_0x52ae80,_0x5e8f4a);}}else{if(utils[_0xc074('0x59')](undefined,_0x5e8f4a[_0xc074('0x1e4')])<_0x52ae80[_0xc074('0x1e5')]*0x3c){if(_0x5e8f4a['Agent']&&!_0x5e8f4a[_0xc074('0x13d')]['voicePause']){_0xf3be01[_0xc074('0xf0')]['run'](_0x5e8f4a['id'])[_0xc074('0x1b')](function(){_0xf3be01[_0xc074('0xbe')](_0x52ae80);});}else{hopperUtils['unlockContact']({'active':![]},_0x5e8f4a['id'],0x1)[_0xc074('0x1b')](function(){_0xf3be01['updateOriginated'](_0x52ae80);});}}else{_0x52ae80[_0xc074('0x1e6')]+=0x1;_0xf3be01[_0xc074('0xbe')](_0x52ae80);if(_0x52ae80[_0xc074('0x1e7')]){hopperUtils['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x5e8f4a[_0xc074('0xd0')],'ListId':_0x5e8f4a[_0xc074('0xd1')],'VoiceQueueId':_0x5e8f4a['VoiceQueueId']||undefined,'CampaignId':_0x5e8f4a[_0xc074('0xd3')]||undefined})[_0xc074('0x9e')](loggerCatch(_0xc074('0x1e8')));hopperUtils[_0xc074('0xd8')](createObjHistory(_0x52ae80,_0x5e8f4a,utils[_0xc074('0x64')][_0xc074('0x1e9')],0x17,_0xc074('0x1ea')))[_0xc074('0x9e')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0xf3be01[_0xc074('0x110')](createObjHistory(_0x52ae80,_0x5e8f4a,utils[_0xc074('0x64')]['RECALL_TIMEOUT'],0x16,'RecallFailedTimeout'),_0xc074('0x1eb'),_0xc074('0x1ec'));}}}}else{_0x52ae80[_0xc074('0x1ed')]+=0x1;_0xf3be01[_0xc074('0x110')](createObjHistory(_0x52ae80,_0x5e8f4a,utils[_0xc074('0x64')][_0xc074('0x1ee')],0xd,_0xc074('0x1ef')),_0xc074('0x1f0'),_0xc074('0x1f1'));throw'inBlackList';}};};Dialer['prototype'][_0xc074('0x14c')]=function(_0xaa2344){var _0x221aba=this;var _0x101ab3=_0xaa2344[_0xc074('0x1f2')]-_0xaa2344[_0xc074('0x7b')];emitCampaignSummary(_0xaa2344);if(_0x101ab3>0x0&&_0xaa2344[_0xc074('0x60')]==0x0){if(_0x101ab3>this[_0xc074('0x21')]){_0x101ab3=this[_0xc074('0x21')];}_0xaa2344[_0xc074('0x60')]=0x1;hopperUtils[_0xc074('0x1f3')](_0xaa2344,_0x101ab3)[_0xc074('0x99')](function(_0x48c639){_0xaa2344['temp']=0x0;if(_0x48c639){if(!utils['checkContactEmpty'](_0x48c639)){_0xaa2344['message']=utils['CAMPAIGN_STATUS'][_0xc074('0x68')];logger[_0xc074('0x44')](_0xc074('0x1f4')+_0xaa2344[_0xc074('0x5a')]);}else{_0xaa2344[_0xc074('0x7b')]+=_0x48c639['length'];_0xaa2344[_0xc074('0x63')]=utils['CAMPAIGN_STATUS'][_0xc074('0x1f5')];for(var _0x3395fd=0x0;_0x3395fd<_0x48c639[_0xc074('0x95')];_0x3395fd+=0x1){_0xaa2344['ivrTotalCallsDays']+=0x1;if(_[_0xc074('0xe9')](_0x48c639[_0x3395fd])||_['isNil'](_0x48c639[_0x3395fd]['Contact'])||_['isNil'](_0x48c639[_0x3395fd][_0xc074('0x150')])){_0x221aba[_0xc074('0x1f6')](_0xc074('0x1f7'),_0xaa2344,_0x48c639[_0x3395fd]);}else{hopperUtils[_0xc074('0x1f8')](_[_0xc074('0x70')](_0x48c639[_0x3395fd],['CampaignId','phone']))[_0xc074('0x99')](_0x221aba['checkContactBlack'](_0xaa2344,_0x48c639[_0x3395fd]))['catch'](_0x221aba[_0xc074('0x146')]('[actionOriginateIvr]\x20',_0xaa2344));}}}}})['catch'](loggerGetContactDialer(_0xc074('0x1f9'),_0xaa2344,_0x101ab3));}};Dialer[_0xc074('0x87')]['handlePower']=function(_0x4abec1,_0x3c1622){var _0x1556ba=this;var _0x2cc190=[];if(_0x3c1622<0x1||_0x4abec1['dialMethod']===_0xc074('0x9')){_0x3c1622=0x1;}var _0x2f56b7=Math['floor'](_0x4abec1[_0xc074('0x12f')]*_0x3c1622)-_0x4abec1[_0xc074('0x7b')];if(_0x4abec1[_0xc074('0x1fa')]>0x0){var _0x386ab1=_0x4abec1[_0xc074('0x1fa')]-_0x4abec1[_0xc074('0x7b')]-_0x4abec1[_0xc074('0x131')]-_0x4abec1[_0xc074('0x1fb')];if(_0x2f56b7>_0x386ab1){_0x2f56b7=_0x386ab1;}}if(_0x2f56b7>0x0&&_0x4abec1[_0xc074('0x60')]==0x0){if(_0x4abec1[_0xc074('0xaa')]===_0xc074('0x9')){_0x2f56b7=0x1;}if(_0x2f56b7>this['maxNumberOriginate']){_0x2f56b7=this[_0xc074('0x21')];}for(var _0x14b803 in this['agents']){if(typeof this[_0xc074('0x1f')][_0x14b803]!=='undefined'){if(this[_0xc074('0x1f')][_0x14b803]['state']===_0xc074('0x1fc')&&this[_0xc074('0x1f')][_0x14b803][_0xc074('0x83')]===_0xc074('0x84')){_0x2cc190[_0xc074('0x96')](this[_0xc074('0x1f')][_0x14b803]['id']);}}}_0x4abec1['temp']=0x1;hopperUtils[_0xc074('0x1fd')](_0x4abec1,_0x2cc190,_0x2f56b7)['then'](function(_0x234cf7){_0x4abec1[_0xc074('0x60')]=0x0;if(_0x234cf7){if(!utils[_0xc074('0x1fe')](_0x234cf7)){hopperUtils['countReScheduled'](_0x4abec1)[_0xc074('0x99')](sendMessageReschedule(_0x4abec1))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x4abec1[_0xc074('0x7b')]+=_0x234cf7[_0xc074('0x95')];_0x4abec1[_0xc074('0x63')]=_0x4abec1[_0xc074('0xaa')]===_0xc074('0x9')?utils['CAMPAIGN_STATUS'][_0xc074('0x132')]:utils[_0xc074('0x64')]['RUNNING'];for(var _0x3165bc=0x0;_0x3165bc<_0x234cf7[_0xc074('0x95')];_0x3165bc+=0x1){if(_[_0xc074('0xe9')](_0x234cf7[_0x3165bc])||_[_0xc074('0xe9')](_0x234cf7[_0x3165bc][_0xc074('0x16b')])||_[_0xc074('0xe9')](_0x234cf7[_0x3165bc][_0xc074('0x150')])){_0x1556ba[_0xc074('0x1f6')](_0xc074('0x1f7'),_0x4abec1,_0x234cf7[_0x3165bc]);}else{hopperUtils['checkIsBlackList'](_[_0xc074('0x70')](_0x234cf7[_0x3165bc],['VoiceQueueId',_0xc074('0x150')]))[_0xc074('0x99')](_0x1556ba[_0xc074('0x1dc')](_0x4abec1,_0x234cf7[_0x3165bc]))[_0xc074('0x9e')](_0x1556ba[_0xc074('0x146')](_0xc074('0x1f7'),_0x4abec1));}}}}})[_0xc074('0x9e')](loggerGetContactDialer('[getContactDialer2]',_0x4abec1,_0x2f56b7));}};Dialer[_0xc074('0x87')]['handlePredictive']=function(_0x2098aa){if(_0x2098aa[_0xc074('0x1fa')]>0x0){var _0x5f2eb3=_0x2098aa[_0xc074('0x1fa')]-_0x2098aa['originated']-_0x2098aa[_0xc074('0x131')];if(_0x5f2eb3>0x0&&_0x2098aa[_0xc074('0x60')]==0x0){this[_0xc074('0x1ff')](_0x2098aa);}else{loggerPredictiveCalls[_0xc074('0x44')](_0xc074('0x200'));}}else{this['tryOriginatePredictive'](_0x2098aa);}};Dialer[_0xc074('0x87')][_0xc074('0x1ff')]=function(_0x5cd5d0){var _0x1fffae=this;var _0x6214b5=[];_0x5cd5d0[_0xc074('0x7b')]+=0x1;for(var _0x102b11 in this[_0xc074('0x1f')]){if(typeof this[_0xc074('0x1f')][_0x102b11]!==_0xc074('0xa6')){if(this[_0xc074('0x1f')][_0x102b11][_0xc074('0x69')]==='not_inuse'&&this[_0xc074('0x1f')][_0x102b11]['status']===_0xc074('0x84')){_0x6214b5[_0xc074('0x96')](this[_0xc074('0x1f')][_0x102b11]['id']);}}}_0x5cd5d0[_0xc074('0x60')]=0x1;return this[_0xc074('0x1fd')](_0x5cd5d0['id'],_0x6214b5,0x1,_0x5cd5d0[_0xc074('0x201')],_0x5cd5d0)[_0xc074('0x99')](function(_0x32cfce){_0x5cd5d0[_0xc074('0x60')]=0x1;if(_0x32cfce){if(!utils[_0xc074('0x1fe')](_0x32cfce)){utils['checkContactLowerLimitOriginate'](_0x5cd5d0,0x1,0x0);return hopperUtils[_0xc074('0x202')](_0x5cd5d0)[_0xc074('0x99')](sendMessageReschedule(_0x5cd5d0))[_0xc074('0x9e')](loggerCatch(_0xc074('0x203')));}else{_0x5cd5d0[_0xc074('0x63')]=utils[_0xc074('0x64')][_0xc074('0x1f5')];if(_[_0xc074('0xe9')](_0x32cfce[0x0])||_[_0xc074('0xe9')](_0x32cfce[0x0][_0xc074('0x16b')])||_[_0xc074('0xe9')](_0x32cfce[0x0][_0xc074('0x150')])){_0x1fffae[_0xc074('0x1f6')](_0xc074('0x1f7'),_0x5cd5d0,_0x32cfce[0x0]);}else{return hopperUtils[_0xc074('0x204')](_['pick'](_0x32cfce[0x0],[_0xc074('0xd2'),'phone']))['then'](_0x1fffae[_0xc074('0x1dc')](_0x5cd5d0,_0x32cfce[0x0]))[_0xc074('0x9e')](_0x1fffae[_0xc074('0x146')]('[actionOriginatePredictive]\x20',_0x5cd5d0));}}}})[_0xc074('0x9e')](loggerGetContactDialer(_0xc074('0x205'),_0x5cd5d0,0x1));};Dialer[_0xc074('0x87')][_0xc074('0x1cd')]=function(_0x2a67eb,_0x1a0dc1,_0x2b956c,_0x767c0e,_0x50848a,_0x547d6f){loggerPredictive['info'](_0xc074('0x206'));loggerPredictive[_0xc074('0x44')](_0xc074('0x207'),_0x2a67eb);loggerPredictive[_0xc074('0x44')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1a0dc1);loggerPredictive[_0xc074('0x44')]('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',_0x2b956c);loggerPredictive['info'](_0xc074('0x208'),_0x767c0e);loggerPredictive[_0xc074('0x44')](_0xc074('0x209'),_0x50848a);loggerPredictive['info'](_0xc074('0x4f'));return new Promise(function(_0x2e2277,_0x29d68a){if(_0x2a67eb<=0x0||isNaN(_0x2a67eb)){return _0x29d68a(msgResponse(_0xc074('0x20a'),_0xc074('0x80'),'m\x20=\x20'+_0x2a67eb));}if(_0x2b956c<=0x0||isNaN(_0x2b956c)){return _0x29d68a(msgResponse(_0xc074('0x20a'),'Error',_0xc074('0x20b')+_0x2b956c));}if(_0x767c0e<=0x0||isNaN(_0x767c0e)){return _0x29d68a(msgResponse('[abandonmentRate]',_0xc074('0x80'),_0xc074('0x20c')+_0x767c0e));}if(_0x1a0dc1<=0x0||isNaN(_0x1a0dc1)){return _0x29d68a(msgResponse('[abandonmentRate]','Error','interval\x20=\x20'+_0x1a0dc1));}if(_0x50848a<=0x0||isNaN(_0x50848a)){return _0x29d68a(msgResponse(_0xc074('0x20a'),_0xc074('0x80'),'Amax\x20=\x20'+_0x50848a));}_0x547d6f=_0x547d6f||0x0;var _0x12a360=0x1/_0x2b956c;var _0x456af2=0x0;var _0x4c51c6=0x0;var _0x5907ab=0x0;var _0x48c672=0x0;for(var _0x456c9c=0x0;_0x5907ab<_0x50848a;_0x456c9c+=0x1){_0x4c51c6=_0x456c9c/_0x1a0dc1;_0x456af2=(_0x767c0e*_0x4c51c6+_0x547d6f)/_0x12a360;_0x5907ab=utils['erlangb'](_0x456af2,_0x2a67eb);_0x48c672=_0x456af2/_0x2a67eb*(0x1-utils[_0xc074('0x20d')](_0x456af2,_0x2a67eb));}return _0x2e2277({'erlangCalls':_0x456c9c,'erlangCallToSecond':_0x1a0dc1/_0x456c9c,'erlangAbandonmentRate':_0x5907ab,'erlangBusyFactor':_0x48c672});});};Dialer[_0xc074('0x87')][_0xc074('0x1cf')]=function(_0x34adb8,_0x505961,_0x5eab89,_0x14e13b,_0x3c72cf,_0x1042af){loggerPredictive[_0xc074('0x44')](_0xc074('0x20e'));loggerPredictive['info'](_0xc074('0x207'),_0x34adb8);loggerPredictive[_0xc074('0x44')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x505961);loggerPredictive[_0xc074('0x44')]('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',_0x5eab89);loggerPredictive[_0xc074('0x44')](_0xc074('0x208'),_0x14e13b);loggerPredictive['info'](_0xc074('0x20f'),_0x3c72cf);loggerPredictive[_0xc074('0x44')](_0xc074('0x4f'));return new Promise(function(_0x4bb542,_0x5c807d){if(_0x34adb8<=0x0||isNaN(_0x34adb8)){return _0x5c807d(msgResponse(_0xc074('0x210'),_0xc074('0x80'),_0xc074('0x211')+_0x34adb8));}if(_0x5eab89<=0x0||isNaN(_0x5eab89)){return _0x5c807d(msgResponse(_0xc074('0x210'),_0xc074('0x80'),_0xc074('0x20b')+_0x5eab89));}if(_0x14e13b<=0x0||isNaN(_0x14e13b)){return _0x5c807d(msgResponse(_0xc074('0x210'),_0xc074('0x80'),_0xc074('0x20c')+_0x14e13b));}if(_0x505961<=0x0||isNaN(_0x505961)){return _0x5c807d(msgResponse(_0xc074('0x210'),'Error',_0xc074('0x212')+_0x505961));}if(_0x3c72cf<=0x0||isNaN(_0x3c72cf)){return _0x5c807d(msgResponse(_0xc074('0x210'),_0xc074('0x80'),'Umin\x20=\x20'+_0x3c72cf));}_0x1042af=_0x1042af||0x0;var _0x30023c=0x1/_0x5eab89;var _0xd3bbb1=0x0;var _0x689603=0x0;var _0x252e58=0x0;var _0x3ce747=0x0;for(var _0x44b98f=0x0;_0x3ce747<_0x3c72cf;_0x44b98f+=0x1){_0x689603=_0x44b98f/_0x505961;_0xd3bbb1=(_0x14e13b*_0x689603+_0x1042af)/_0x30023c;_0x252e58=utils[_0xc074('0x20d')](_0xd3bbb1,_0x34adb8);_0x3ce747=_0xd3bbb1/_0x34adb8*(0x1-utils[_0xc074('0x20d')](_0xd3bbb1,_0x34adb8));}return _0x4bb542({'erlangCalls':_0x44b98f,'erlangCallToSecond':_0x505961/_0x44b98f,'erlangAbandonmentRate':_0x252e58,'erlangBusyFactor':_0x3ce747});});};module[_0xc074('0x213')]=Dialer;
\ No newline at end of file
+var _0x9a36=['YYYY-MM-DD\x20HH:mm:ss','outboundAnswerCallsDay','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','createHistory','[syncAgentComplete][createHistory]','moveContactManagedDialer','[syncAgentComplete]','updateOriginated','droptime','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','statedesc','dropreason','TIMEOUT','countdropretry','countglobal','dialDropRetryFrequency','callAdditionalPhoneAfterMin','verifyAdditionalPhones','voiceQueue','additional','dialDropMaxRetry','queueCallerAbandonCreateState','rescheduleContact','add','minutes','ContactId','CampaignId','[rescheduleContact][Drop]','Drop','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','outboundDropCallsDayCallersExit','Abandoned','countabandonedretry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','swapAdditionalPhones','channel','actionid','strategy','rrmemory','roundrobin','isNil','paused','stateinterface','locked','idHopper','run','[Catch][Preview][syncQueueStatusComplete]','ListId','queueBookedRR','_rr','length','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','VoiceQueueId','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncOriginateResponse','responsetime','getQueue','Success','callProgressDetecting','[callProgressDetecting]\x20','variable','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','custom:amd','saveInDb','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','countmachineretry','amd','buildObj','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','[rescheduleContact][Machine]','[syncHangupInAMDIvr]','Machine','dialGlobalMaxRetry','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','AnswerAGI','[syncHangupIvr][createHistory]','outboundUnknownCallsDay','cause-txt','Unknow','running','isPreviewCampaign','statusMessage','getQueueCampaignStatusMessage','inUse','talking','ACTIVE','[syncQueueSummary]','compareToOutboundQueue','queueSummaryCountersUpdated','updateReportFromOutboundQueue','assign','filter','dialPreviewRecallmeReminder','online','handlePreviewRecallNotifications','map','Agent','user:%s','user:dialPreviewRecallReminder','checkPreviewRecallReminder','clearZombieChannels','[uniqueid]','[actions]','No\x20such\x20channel','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','emptyContact','notFound','UserId','[emptyContact][createHistory]','[emptyContact]','[syncQueueCallerAbandon]\x20[Drop]','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialQueueTimeout','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','setXMDContactVariables','Contact','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','XMD-ORIGINATECALLERIDNUM','variables','dialPrefix','substring','dialCutDigit','SIP/%s/%s%s','trim','from-sip','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','Error','originate\x20action\x20Error','checkRetriveMax','countagentrejectretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','reason','outboundNoSuchCallsDay','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','buildNoAnswerEventPayload','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','custom:agentbusy','reason\x205\x20busy','outboundCongestionCallsDay','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','available','floor','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','avgHandleTime','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','predictiveIntervalAnsweredCalls','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','loggedIn','outboundQueuePauses','predictiveIntervalPauses','[CatchErlangB]','one\x20call\x20every:','milliseconds','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','scheduledat','dialRecallMeTimeout','voicePause','unlockContact','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','QUEUE_RECALL','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALL_TIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','Blacklist','[Originate][historyBlacklist]','inBlackList','handleIvr','limitCalls','NO_AVAILABLE_CONTACTS','[getContactCampaign2][Empty]','ivrTotalCallsDays','checkIsBlackListIvr','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','pTalking','checkContactEmpty','countReScheduled','RUNNING','[actionOriginate]\x20','loggerHandler','[getContactDialer2]','[handlePredictive][limitChannel]','tryOriginatePredictive','getContactDialer','dialOrderByScheduledAt','checkIsBlackList','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','[abandonmentRate]','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','erlangb','----\x20Agent\x20Busy\x20Factor\x20----','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Ts\x20=\x20','Umin\x20=\x20','exports','util','lodash','uuid','moment','./utils','dialer','../../../config/logger','predictive','syncQueueSummary','../ami','redis','defaults','socket.io-emitter','../rpc/cmHopper','../rpc/setting','./models/action','./models/history','./models/final','./models/agentComplete','./models/queueCallerAbandon','./models/hangup','env','XCALLY_IP_AGI','127.0.0.1','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','maxNumberOriginate','channels','actions','uniqueId','optionPredictive','startPredictive','queueBooked','queuesSummary','agentconnect','syncAgentConnect','bind','syncQueueCallerAbandon','originateresponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','previewRecallmeReminderInterval','isUndefined','emit','type','debug','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','inspect','format','voice:queue:%s','name','voice_queue:save','-----\x20Stats\x20Predictive\x20---','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','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','predictiveIntervalAvgTalktime','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','---------\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','erlangCallToSecond','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','erlangBusyFactor','merge','getSeconds','startProgressive','startProgressive\x20value\x20cleared','handlePredictive','handlePredictive\x20interval\x20cleared','error','stack','checkContactLowerLimitOriginate','temp','contactsRescheduled','message','CAMPAIGN_STATUS','CONTACTS_RESCHEDULED','contacts','state','endtime','starttime','queueStatusComplete','[unlockQueueStatus][undefined]','stringify','pick','Interval','NULL_INTERVAL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','isIVRCampaignActive','INACTIVE','\x20NOT\x20Active','campaign:ivr:%s','campaign:save','sendMessageOneNotActive','originated','DISACTIVED','prototype','isTrunkReachable','active','trunks','status','reachable','SIP/%s','Trunk','TrunkBackup','TRUNK_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTimeIvr','Failure','\x20Intervals\x20is\x20null\x20','EMPTY_INTERVAL','ifTime','timezones','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','isArray','push','Action','iftime\x20%s,%s','interval','then','content','indexOf','true','catch','command','all','some','OVERTIME_GLOBAL_INTERVAL','OVERTIME_INTERVAL','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','resetActiveCalls','syncCampaigns','undefined','isIVRCampaign','resolve','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','launchHandleIvr','[syncCampaigns]','dialMethod','handlePower','power','booked','Queue','silly','Voice\x20Queue\x20%s\x20$s','intervalIftime','Global:\x20','Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:','isGlobal','AMI\x20IfTime','[ifTime][Action]','queue','uniqueid','ivr','answertime'];(function(_0x162dea,_0x418e88){var _0x418872=function(_0x46e00d){while(--_0x46e00d){_0x162dea['push'](_0x162dea['shift']());}};_0x418872(++_0x418e88);}(_0x9a36,0x15e));var _0x69a3=function(_0x295299,_0x5071f9){_0x295299=_0x295299-0x0;var _0xeacd13=_0x9a36[_0x295299];return _0xeacd13;};'use strict';var util=require(_0x69a3('0x0'));var _=require(_0x69a3('0x1'));var uuid=require(_0x69a3('0x2'));var moment=require(_0x69a3('0x3'));var rr=require('rr');var Redis=require('ioredis');var utils=require(_0x69a3('0x4'));var hopperUtils=require('./utils/hopper');var ut=require('../preview/util/util');var config=require('../../../config/environment/');var logger=require('../../../config/logger')(_0x69a3('0x5'));var loggerBooked=require('../../../config/logger')('booked');var loggerPredictive=require(_0x69a3('0x6'))(_0x69a3('0x7'));var loggerPredictiveCalls=require(_0x69a3('0x6'))('predictiveCalls');var loggerSyncQueueSummary=require(_0x69a3('0x6'))(_0x69a3('0x8'));var ami=require(_0x69a3('0x9'));config[_0x69a3('0xa')]=_[_0x69a3('0xb')](config[_0x69a3('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x69a3('0xc'))(new Redis(config[_0x69a3('0xa')]));var cmHopper=require(_0x69a3('0xd'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require(_0x69a3('0xe'));var Interval=require('../rpc/interval');var Action=require(_0x69a3('0xf'));var History=require(_0x69a3('0x10'));var Final=require(_0x69a3('0x11'));var AgentComplete=require(_0x69a3('0x12'));var QueueCallerAbandon=require(_0x69a3('0x13'));var Hangup=require(_0x69a3('0x14'));var ipAgi=process[_0x69a3('0x15')][_0x69a3('0x16')]||_0x69a3('0x17');var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence['prototype'][_0x69a3('0x18')]=function(_0x336061){this[_0x69a3('0x19')]=this['tail']?this[_0x69a3('0x19')][_0x69a3('0x1a')](_0x336061):_0x336061();};function Dialer(_0x430a8d,_0x4096f2){this[_0x69a3('0x1b')]=new Sequence();this[_0x69a3('0x1c')]=_0x4096f2;this[_0x69a3('0x1d')]=_0x430a8d[_0x69a3('0x1d')];this[_0x69a3('0x1e')]=_0x430a8d['campaigns'];this[_0x69a3('0x1f')]=_0x430a8d[_0x69a3('0x1f')];this['trunks']=_0x430a8d['trunks'];this[_0x69a3('0x20')]=config[_0x69a3('0x20')]||0x2;this[_0x69a3('0x21')]={};this[_0x69a3('0x22')]={};this['contactsId']={};this[_0x69a3('0x23')]={};this[_0x69a3('0x24')]={};this[_0x69a3('0x25')]={};this['startProgressive']={};this['ivrOriginated']={};this[_0x69a3('0x26')]={};this['queueBookedRR']={};this[_0x69a3('0x27')]={};ami['on'](_0x69a3('0x28'),this[_0x69a3('0x29')][_0x69a3('0x2a')](this));ami['on']('queuecallerabandon',this[_0x69a3('0x2b')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x2c'),this['syncOriginateResponse']['bind'](this));ami['on'](_0x69a3('0x2d'),this[_0x69a3('0x2e')]['bind'](this));ami['on'](_0x69a3('0x2f'),this[_0x69a3('0x8')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x30'),this[_0x69a3('0x31')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x32'),this['syncHangup']['bind'](this));ami['on'](_0x69a3('0x33'),this[_0x69a3('0x34')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x35'),this[_0x69a3('0x36')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x37'),this[_0x69a3('0x38')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x39'),this[_0x69a3('0x3a')][_0x69a3('0x2a')](this));this[_0x69a3('0x3b')]();this[_0x69a3('0x3c')]();RpcSetting[_0x69a3('0x3d')]()['then'](function(_0x596498){previewRecallmeReminderInterval=_0x596498[_0x69a3('0x3e')];});}function isNotNull(_0x36ab0c){return _0x36ab0c!==null&&!_[_0x69a3('0x3f')](_0x36ab0c);}function msgResponse(_0x3b0040,_0x1451fe,_0xde094d){return{'action':_0x3b0040,'response':_0x1451fe,'message':_0xde094d,'stack':_0xde094d};}function emit(_0x157685,_0x560424,_0x2dde8a){io['to'](_0x157685)[_0x69a3('0x40')](_0x560424,_0x2dde8a);}function emitOutboundVoiceQueueSummary(_0x54ca39){if(_0x54ca39[_0x69a3('0x41')]==='outbound'){logger[_0x69a3('0x42')](_0x69a3('0x43'),util[_0x69a3('0x44')](_0x54ca39,{'showHidden':![],'depth':null}));emit(util[_0x69a3('0x45')](_0x69a3('0x46'),_0x54ca39[_0x69a3('0x47')]),_0x69a3('0x48'),_0x54ca39);}}function checkGetDataPredictive(_0x39e31b){if(isNotNull(_0x39e31b)&&!_['isEmpty'](_0x39e31b)){loggerPredictive['info'](_0x69a3('0x49'));loggerPredictive[_0x69a3('0x4a')]('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x39e31b[_0x69a3('0x4b')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x4c'),_0x39e31b['predictiveIntervalAnsweredCalls']);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x4d'),_0x39e31b[_0x69a3('0x4e')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x4f'),_0x39e31b[_0x69a3('0x50')]);loggerPredictive['info'](_0x69a3('0x51'),_0x39e31b[_0x69a3('0x52')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x53'),_0x39e31b['predictiveIntervalAvgTalktime']);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x54'));if(_0x39e31b[_0x69a3('0x4b')]>0x0){if(!_[_0x69a3('0x3f')](_0x39e31b[_0x69a3('0x55')])&&_0x39e31b[_0x69a3('0x55')]>0x0){return!![];}loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x56'));if(!_[_0x69a3('0x3f')](_0x39e31b['predictiveIntervalAvgHoldtime'])&&_0x39e31b['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive['info'](_0x69a3('0x57'));}else{loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x58'));}}else{loggerPredictive[_0x69a3('0x4a')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x257e1c){return function(_0x3e7149){loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x59'));loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x5a'),_0x3e7149[_0x69a3('0x5b')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x5c'),_0x3e7149[_0x69a3('0x5d')]);loggerPredictive['info'](_0x69a3('0x5e'),_0x3e7149[_0x69a3('0x5f')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x60'),_0x3e7149[_0x69a3('0x61')]);loggerPredictive[_0x69a3('0x4a')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3e7149[_0x69a3('0x5f')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x54'));_[_0x69a3('0x62')](_0x257e1c,_0x3e7149);};}function ifInterval(_0x275731,_0x3455a5){if(_[_0x69a3('0x3f')](_0x3455a5)){return![];}return utils[_0x69a3('0x63')](undefined,_0x3455a5)<_0x275731*0x3c;}function clearPredictiveAttributes(_0x4faac5){if(_0x4faac5[_0x69a3('0x64')]){_0x4faac5[_0x69a3('0x64')]=undefined;loggerPredictive['debug'](_0x4faac5[_0x69a3('0x47')],_0x69a3('0x65'));}if(_0x4faac5[_0x69a3('0x25')]){_0x4faac5[_0x69a3('0x25')]=undefined;loggerPredictive[_0x69a3('0x42')](_0x4faac5['name'],'startPredictive\x20value\x20cleared');}if(_0x4faac5[_0x69a3('0x66')]){clearInterval(_0x4faac5[_0x69a3('0x66')]);_0x4faac5[_0x69a3('0x66')]=undefined;loggerPredictive[_0x69a3('0x42')](_0x4faac5[_0x69a3('0x47')],_0x69a3('0x67'));}}function loggerCatchPredictive(_0x58d444,_0x51c9e7){return function(_0x12ffba){loggerPredictive[_0x69a3('0x68')](_0x51c9e7[_0x69a3('0x47')],_0x58d444);loggerPredictive[_0x69a3('0x68')](_0x12ffba[_0x69a3('0x69')]);clearPredictiveAttributes(_0x51c9e7);};}function loggerCatch(_0x27fcc8){return function(_0x18016d){logger['error'](_0x27fcc8,util[_0x69a3('0x44')](_0x18016d,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x2718af,_0x342c3e,_0xee3b17){return function(_0x5231be){utils[_0x69a3('0x6a')](_0x342c3e,_0xee3b17,0x0);_0x342c3e[_0x69a3('0x6b')]=0x0;logger[_0x69a3('0x68')](_0x2718af,util[_0x69a3('0x44')](_0x5231be,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x512e49){return function(_0x1e0ca6){if(isNotNull(_0x1e0ca6)&&isNotNull(_0x1e0ca6[0x0])){if(_0x1e0ca6[0x0][_0x69a3('0x6c')]>0x0){_0x512e49[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x6f')];logger[_0x69a3('0x4a')]('[getContactDialer2][ReScheduled]'+_0x512e49[_0x69a3('0x47')],_0x1e0ca6[0x0][_0x69a3('0x6c')],_0x69a3('0x70'));}else{_0x512e49[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')]['NO_AVAILABLE_CONTACTS'];logger[_0x69a3('0x4a')]('[getContactDialer2][Empty]'+_0x512e49[_0x69a3('0x47')]);}}};}function createObjHistory(_0x3a99f1,_0x1c412e,_0x5cca5e,_0x2aa421,_0x10bc6a){_0x3a99f1[_0x69a3('0x6d')]=_0x5cca5e;var _0x40d048=new Action(_0x3a99f1,_0x1c412e);var _0x4bd825=new History(_0x40d048);_0x4bd825[_0x69a3('0x71')]=_0x2aa421;_0x4bd825['statedesc']=_0x10bc6a;_0x4bd825[_0x69a3('0x72')]=_0x40d048[_0x69a3('0x73')];return _0x4bd825;}function unlockQueueStatus(_0x10755c,_0x4a0e64){setTimeout(function(){if(_[_0x69a3('0x3f')](_0x10755c[_0x69a3('0x74')])){loggerBooked[_0x69a3('0x68')](_0x69a3('0x75'),_0x4a0e64);}_0x10755c[_0x69a3('0x74')]=!![];loggerBooked[_0x69a3('0x4a')]('[booked][unlockQueueStatus]',_0x4a0e64,JSON[_0x69a3('0x76')](_[_0x69a3('0x77')](_0x10755c,['name','queueStatusComplete'])));},0x1f3);}function checkInterval(_0x36f7a5){return function(){if(!isNotNull(_0x36f7a5[_0x69a3('0x78')])){_0x36f7a5[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x79')];throw _0x36f7a5['name']+_0x69a3('0x7a');}if(!isNotNull(_0x36f7a5[_0x69a3('0x78')][_0x69a3('0x7b')])){_0x36f7a5[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')]['NULL_INTERVAL'];throw _0x36f7a5[_0x69a3('0x47')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0x69a3('0x7c')](_0x36f7a5[_0x69a3('0x78')]['Intervals']))){_0x36f7a5[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x79')];throw _0x36f7a5[_0x69a3('0x47')]+_0x69a3('0x7a');}};}function checkIsIVRCampaignActive(_0x3bca89){return function(){if(!utils[_0x69a3('0x7d')](_0x3bca89)){_0x3bca89['message']=utils[_0x69a3('0x6e')][_0x69a3('0x7e')];throw _0x3bca89[_0x69a3('0x47')]+_0x69a3('0x7f');}};}function emitCampaignSummary(_0x36266b){if(utils['isIVRCampaign'](_0x36266b)){emit(util[_0x69a3('0x45')](_0x69a3('0x80'),_0x36266b[_0x69a3('0x47')]),_0x69a3('0x81'),_0x36266b);}}function loggerCatchQueueSummary(_0x264c4d,_0x4a0c83){return function(_0x19ff3b){clearPredictiveAttributes(_0x4a0c83);emitCampaignSummary(_0x4a0c83);loggerSyncQueueSummary[_0x69a3('0x42')](_0x264c4d,util[_0x69a3('0x44')](_0x19ff3b,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0x3d9b0d){if(_0x3d9b0d[_0x69a3('0x82')]){if(_0x3d9b0d[_0x69a3('0x83')]===0x0){_0x3d9b0d['sendMessageOneNotActive']=![];_0x3d9b0d[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x7e')];loggerSyncQueueSummary[_0x69a3('0x42')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3d9b0d[_0x69a3('0x47')],'is\x20not\x20active');}else{_0x3d9b0d['message']=utils[_0x69a3('0x6e')][_0x69a3('0x84')];loggerSyncQueueSummary[_0x69a3('0x42')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3d9b0d[_0x69a3('0x47')],'is\x20disactive');}emitCampaignSummary(_0x3d9b0d);}}function myreject(_0x4871c0){return function(_0x14bc3d){return _0x4871c0(msgResponse('[ifTime][Action]','Error',JSON[_0x69a3('0x76')](_0x14bc3d)));};}Dialer[_0x69a3('0x85')][_0x69a3('0x86')]=function(_0x5ab0d7){return!_[_0x69a3('0x3f')](_0x5ab0d7)&&_0x5ab0d7&&!_[_0x69a3('0x3f')](_0x5ab0d7['name'])&&!_[_0x69a3('0x3f')](_0x5ab0d7[_0x69a3('0x87')])&&_0x5ab0d7[_0x69a3('0x87')]&&(this[_0x69a3('0x88')][util['format']('SIP/%s',_0x5ab0d7[_0x69a3('0x47')])][_0x69a3('0x89')]===_0x69a3('0x8a')||this['trunks'][util['format'](_0x69a3('0x8b'),_0x5ab0d7[_0x69a3('0x47')])][_0x69a3('0x89')]==='unmonitored');};Dialer[_0x69a3('0x85')]['checkIsTrunkReachable']=function(_0x2a59ba){var _0x3e04a0=this;return function(){if(!_0x3e04a0[_0x69a3('0x86')](_0x2a59ba[_0x69a3('0x8c')])){if(!_0x3e04a0[_0x69a3('0x86')](_0x2a59ba[_0x69a3('0x8d')])){_0x2a59ba['message']=utils[_0x69a3('0x6e')][_0x69a3('0x8e')];throw _0x2a59ba[_0x69a3('0x47')]+_0x69a3('0x8f');}}};};Dialer[_0x69a3('0x85')][_0x69a3('0x90')]=function(_0x436305,_0x4d8fca,_0x46fa70,_0x162af2){var _0x276f3b=this;return function(){var _0x2dc57f=!![];return _0x276f3b[_0x69a3('0x91')](_0x436305,_0x4d8fca,_0x46fa70,_0x162af2,_0x2dc57f);};};Dialer[_0x69a3('0x85')]['checkIfTimeIntervals']=function(_0x95e18f,_0x12fe97,_0x22dbb7,_0x208f97){var _0x4a5d91=this;return function(){var _0x3f05ce=![];return _0x4a5d91['ifTimeIvr'](_0x95e18f['Intervals'],_0x12fe97,_0x22dbb7,_0x208f97,_0x3f05ce);};};Dialer[_0x69a3('0x85')][_0x69a3('0x91')]=function(_0x3eb561,_0x5d83b0,_0xb15adc,_0x8ab981,_0x2a8f2c){var _0x8c2eab=[];return new Promise(function(_0xaa7986,_0x2a69f6){if(!isNotNull(_0x3eb561)){_0x8ab981[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x79')];return _0x2a69f6(msgResponse('ifTime',_0x69a3('0x92'),_0xb15adc+_0x69a3('0x93')));}if(_['isEmpty'](_0x3eb561)){_0x8ab981[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x94')];return _0x2a69f6(msgResponse(_0x69a3('0x95'),'Failure',_0xb15adc+'\x20Intervals\x20is\x20empty\x20'));}if(_0x5d83b0&&_[_0x69a3('0x3f')](config[_0x69a3('0x96')][_0x5d83b0])){_0x8ab981[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x97')];return _0x2a69f6(msgResponse(_0x69a3('0x95'),'Failure',_0xb15adc+_0x69a3('0x98')+_0x5d83b0));}if(_[_0x69a3('0x99')](_0x3eb561)){for(var _0x3fe6b8=0x0;_0x3fe6b8<_0x3eb561['length'];_0x3fe6b8+=0x1){_0x8c2eab[_0x69a3('0x9a')](ami[_0x69a3('0x9b')]({'action':'command','command':util[_0x69a3('0x45')](_0x69a3('0x9c'),_0x3eb561[_0x3fe6b8][_0x69a3('0x9d')],!_[_0x69a3('0x3f')](config[_0x69a3('0x96')][_0x5d83b0])?_0x5d83b0:'')})[_0x69a3('0x9e')](function(_0x222625){return _0x222625[_0x69a3('0x9f')][_0x69a3('0xa0')](_0x69a3('0xa1'))>=0x0;})[_0x69a3('0xa2')](myreject(_0x2a69f6)));}}else{_0x8c2eab[_0x69a3('0x9a')](ami[_0x69a3('0x9b')]({'action':_0x69a3('0xa3'),'command':util[_0x69a3('0x45')](_0x69a3('0x9c'),_0x3eb561,!_[_0x69a3('0x3f')](config[_0x69a3('0x96')][_0x5d83b0])?_0x5d83b0:'')})[_0x69a3('0x9e')](function(_0x504c0a){return _0x504c0a['content']['indexOf'](_0x69a3('0xa1'))>=0x0;})[_0x69a3('0xa2')](myreject(_0x2a69f6)));}Promise[_0x69a3('0xa4')](_0x8c2eab)[_0x69a3('0x9e')](function(_0x4a5f28){var _0x45149e=_[_0x69a3('0xa5')](_0x4a5f28);if(_0x45149e){return _0xaa7986(_0x45149e);}else{_0x8ab981[_0x69a3('0x6d')]=_0x2a8f2c?utils[_0x69a3('0x6e')][_0x69a3('0xa6')]:utils[_0x69a3('0x6e')][_0x69a3('0xa7')];return _0x2a69f6(msgResponse(_0x69a3('0xa8'),'Failure','Global:\x20'+_0x2a8f2c+'\x20'+_0xb15adc+_0x69a3('0xa9')+util[_0x69a3('0x44')](_0x3eb561,{'showHidden':![],'depth':null})+_0x69a3('0xaa')+_0x5d83b0));}})[_0x69a3('0xa2')](function(_0x440ba8){return _0x2a69f6(msgResponse(_0x69a3('0x95'),_0x69a3('0x92'),JSON[_0x69a3('0x76')](_0x440ba8)));});});};Dialer[_0x69a3('0x85')][_0x69a3('0x3b')]=function(){var _0x1922c3=this;return cmHopper[_0x69a3('0xab')]({'active':![]},{'where':{'active':!![]}})[_0x69a3('0x9e')](function(){setInterval(function(){_0x1922c3[_0x69a3('0xac')]();},0x3e8);});};Dialer[_0x69a3('0x85')][_0x69a3('0xac')]=function(){var _0x108a76=this;var _0x271060;for(var _0x552218 in this[_0x69a3('0x1e')]){if(typeof this[_0x69a3('0x1e')][_0x552218]!==_0x69a3('0xad')){_0x271060=this[_0x69a3('0x1e')][_0x552218];if(utils[_0x69a3('0xae')](_0x271060)&&utils[_0x69a3('0x7d')](_0x271060)){_0x271060[_0x69a3('0x82')]=!![];Promise[_0x69a3('0xaf')]()[_0x69a3('0x9e')](checkIsIVRCampaignActive(_0x271060))[_0x69a3('0x9e')](checkInterval(_0x271060))[_0x69a3('0x9e')](_0x108a76[_0x69a3('0xb0')](_0x271060))[_0x69a3('0x9e')](_0x108a76[_0x69a3('0x90')](_0x271060[_0x69a3('0xb1')],_0x271060[_0x69a3('0xb2')],_0x271060['name'],_0x271060))['then'](_0x108a76[_0x69a3('0xb3')](_0x271060[_0x69a3('0x78')],_0x271060[_0x69a3('0xb2')],_0x271060[_0x69a3('0x47')],_0x271060))[_0x69a3('0x9e')](_0x108a76[_0x69a3('0xb4')](_0x271060))[_0x69a3('0xa2')](loggerCatchQueueSummary(_0x69a3('0xb5'),_0x271060));}else{notSendMessagesCampaign(_0x271060);}}}};Dialer[_0x69a3('0x85')]['checkDialMethod']=function(_0x22caf2){if(_0x22caf2[_0x69a3('0xb6')]!==_0x69a3('0x7')){clearPredictiveAttributes(_0x22caf2);}switch(_0x22caf2['dialMethod']){case'progressive':this[_0x69a3('0xb7')](_0x22caf2,0x1);break;case _0x69a3('0xb8'):this[_0x69a3('0xb7')](_0x22caf2,_0x22caf2['dialPowerLevel']);break;case'predictive':this['predictive'](_0x22caf2);break;case _0x69a3('0xb9'):this['handlePower'](_0x22caf2,0x1);break;default:logger[_0x69a3('0x68')](_0x69a3('0xba'),_0x22caf2[_0x69a3('0x47')],'method\x20not\x20recognized');}};Dialer[_0x69a3('0x85')][_0x69a3('0x95')]=function(_0x1796a5,_0x142d33){var _0x5b904e=_0x1796a5[_0x69a3('0xb2')];var _0x4715ae=_0x142d33?_0x1796a5[_0x69a3('0xb1')]:_0x1796a5[_0x69a3('0x78')]['Intervals'];logger[_0x69a3('0xbb')]('Dialer::ifTime()',_0x4715ae,_0x5b904e,_0x1796a5['name'],util['format'](_0x69a3('0xbc'),_0x1796a5[_0x69a3('0x47')],_0x1796a5['id']));var _0x114942=null;return Interval[_0x69a3('0xbd')](_0x4715ae,_0x5b904e)[_0x69a3('0x9e')](function(_0x55d6bf){if(_0x55d6bf===!![]){return _0x55d6bf;}else{_0x1796a5['message']=_0x142d33?utils[_0x69a3('0x6e')][_0x69a3('0xa6')]:utils[_0x69a3('0x6e')][_0x69a3('0xa7')];_0x114942=msgResponse(_0x69a3('0xa8'),_0x69a3('0x92'),_0x69a3('0xbe')+_0x142d33+'\x20'+_0x1796a5['name']+_0x69a3('0xa9')+util[_0x69a3('0x44')](_0x4715ae,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x5b904e);}if(_0x114942!==null){logger[_0x69a3('0xbb')](_0x69a3('0xbf'),_0x114942);_0x114942[_0x69a3('0xc0')]=_0x142d33;throw _0x114942;}})['catch'](function(_0x435cb9){logger['error'](_0x69a3('0xc1'),_0x435cb9);throw msgResponse(_0x69a3('0xc2'),'Error',util[_0x69a3('0x44')](_0x435cb9,{'showHidden':![],'depth':null}));});};Dialer[_0x69a3('0x85')][_0x69a3('0x29')]=function(_0x567494){if(this['voiceQueues'][_0x567494[_0x69a3('0xc3')]]){if(this[_0x69a3('0x23')][_0x567494['uniqueid']]&&this[_0x69a3('0x23')][_0x567494[_0x69a3('0xc4')]][_0x69a3('0x41')]!==_0x69a3('0xc5')){this['updateOriginated'](this[_0x69a3('0x1d')][_0x567494[_0x69a3('0xc3')]]);this[_0x69a3('0x23')][_0x567494[_0x69a3('0xc4')]][_0x69a3('0xc6')]=moment()['format'](_0x69a3('0xc7'));}}};Dialer[_0x69a3('0x85')][_0x69a3('0x2e')]=function(_0x3dd3bd){var _0x529345=this['uniqueId'][_0x3dd3bd[_0x69a3('0xc4')]];if(this['voiceQueues'][_0x3dd3bd[_0x69a3('0xc3')]]){if(_0x529345&&_0x529345[_0x69a3('0x41')]!==_0x69a3('0xc5')){delete this[_0x69a3('0x23')][_0x3dd3bd[_0x69a3('0xc4')]];this[_0x69a3('0x1d')][_0x3dd3bd['queue']][_0x69a3('0xc8')]+=0x1;var _0x87a928=new AgentComplete(_0x529345,_0x3dd3bd);if(_0x3dd3bd['reason']===_0x69a3('0xc9')){_0x87a928[_0x69a3('0xca')]=this[_0x69a3('0x1d')][_0x3dd3bd[_0x69a3('0xc3')]][_0x69a3('0xcb')]&&this[_0x69a3('0x1d')][_0x3dd3bd[_0x69a3('0xc3')]][_0x69a3('0xcc')]?moment()['format'](_0x69a3('0xc7')):undefined;}hopperUtils[_0x69a3('0xcd')](_0x87a928)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xce')));hopperUtils[_0x69a3('0xcf')](_0x87a928)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xd0')));}}};Dialer[_0x69a3('0x85')][_0x69a3('0x2b')]=function(_0x51bfef){var _0x5a21a7=this[_0x69a3('0x23')][_0x51bfef['uniqueid']];var _0x3f2173=this;var _0x514831=![];var _0x4427ad;var _0x53d5bb;if(this[_0x69a3('0x1d')][_0x51bfef['queue']]){if(_0x5a21a7&&_0x5a21a7[_0x69a3('0x41')]!==_0x69a3('0xc5')){delete this[_0x69a3('0x23')][_0x51bfef[_0x69a3('0xc4')]];this[_0x69a3('0xd1')](this[_0x69a3('0x1d')][_0x51bfef['queue']]);_0x5a21a7[_0x69a3('0xd2')]=moment()[_0x69a3('0x45')](_0x69a3('0xc7'));var _0x3098d3=new QueueCallerAbandon(_0x5a21a7,_0x51bfef);if(utils[_0x69a3('0x63')](_0x5a21a7[_0x69a3('0xd2')],_0x5a21a7['responsetime'])>=_0x5a21a7['dialQueueTimeout']){this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0x4e')]+=0x1;this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xd3')]+=0x1;this[_0x69a3('0x1d')][_0x51bfef['queue']][_0x69a3('0xd4')]+=0x1;_0x3098d3[_0x69a3('0x71')]=0xa;_0x3098d3[_0x69a3('0xd5')]='Drop';_0x3098d3[_0x69a3('0xd6')]=_0x69a3('0xd7');_0x3098d3[_0x69a3('0xca')]=this[_0x69a3('0x1d')][_0x51bfef['queue']][_0x69a3('0xcb')]?moment()[_0x69a3('0x45')](_0x69a3('0xc7')):undefined;_0x3098d3[_0x69a3('0xd8')]+=0x1;_0x3098d3[_0x69a3('0xd9')]+=0x1;_0x4427ad=this['voiceQueues'][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xda')];_0x53d5bb=this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xdb')];hopperUtils[_0x69a3('0xdc')](_0x3098d3,_0x3098d3[_0x69a3('0x71')],_0x5a21a7[_0x69a3('0xdd')])[_0x69a3('0x9e')](function(_0x584843){_0x514831=_0x584843[_0x69a3('0xde')]==0x1;if(_0x3098d3[_0x69a3('0xd8')]>=_0x3f2173[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xdf')]){_0x3f2173[_0x69a3('0xe0')](_0x3098d3,_0x584843[_0x69a3('0xde')]);}else{hopperUtils[_0x69a3('0xe1')]({'active':![],'countdropretry':_0x3098d3[_0x69a3('0xd8')],'scheduledat':moment()[_0x69a3('0xe2')](_0x3f2173[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]]['dialDropRetryFrequency'],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x5a21a7[_0x69a3('0xe4')],'ListId':_0x5a21a7['ListId'],'VoiceQueueId':_0x5a21a7['VoiceQueueId']||undefined,'CampaignId':_0x5a21a7[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xe6')));var _0xf65df0=new History(_0x3098d3);_0xf65df0[_0x69a3('0x71')]=0xa;_0xf65df0['statedesc']=_0x69a3('0xe7');_0xf65df0[_0x69a3('0x73')]=moment()[_0x69a3('0x45')](_0x69a3('0xc7'));_0xf65df0[_0x69a3('0x72')]=_0xf65df0[_0x69a3('0x73')];_0xf65df0[_0x69a3('0xe8')]=_0x3098d3['calleridname'];_0xf65df0['calleridnum']=_0x3098d3[_0x69a3('0xe9')];hopperUtils[_0x69a3('0xcd')](_0xf65df0)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xea')));}})[_0x69a3('0x9e')](function(){if(_0x514831)hopperUtils['swapAdditionalPhones'](_0x3098d3,_0x4427ad,_0x53d5bb)[_0x69a3('0x9e')](function(){return 0x1;});});}else{this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0x50')]+=0x1;this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xeb')]+=0x1;_0x3098d3[_0x69a3('0x71')]=0xb;_0x3098d3['statedesc']=_0x69a3('0xec');_0x3098d3[_0x69a3('0xd6')]='CALLEREXIT';_0x3098d3[_0x69a3('0xed')]+=0x1;_0x3098d3['countglobal']+=0x1;_0x4427ad=this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xee')];_0x53d5bb=this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xdb')];hopperUtils[_0x69a3('0xdc')](_0x3098d3,_0x3098d3[_0x69a3('0x71')],_0x5a21a7['voiceQueue'])[_0x69a3('0x9e')](function(_0x2683eb){if(_0x3098d3['countabandonedretry']>=_0x3f2173[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]]['dialAbandonedMaxRetry']){_0x3f2173[_0x69a3('0xe0')](_0x3098d3,_0x2683eb[_0x69a3('0xde')]);}else{hopperUtils[_0x69a3('0xe1')]({'active':![],'countabandonedretry':_0x3098d3[_0x69a3('0xed')],'scheduledat':moment()['add'](_0x3f2173[_0x69a3('0x1d')][_0x51bfef['queue']][_0x69a3('0xee')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x5a21a7['ContactId'],'ListId':_0x5a21a7['ListId'],'VoiceQueueId':_0x5a21a7['VoiceQueueId']||undefined,'CampaignId':_0x5a21a7['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xef')));var _0x418a75=new History(_0x3098d3);_0x418a75['state']=0xb;_0x418a75[_0x69a3('0xd5')]=_0x69a3('0xec');_0x418a75[_0x69a3('0x73')]=moment()[_0x69a3('0x45')]('YYYY-MM-DD\x20HH:mm:ss');_0x418a75[_0x69a3('0x72')]=_0x418a75['starttime'];_0x418a75[_0x69a3('0xe8')]=_0x3098d3[_0x69a3('0xe8')];_0x418a75[_0x69a3('0xe9')]=_0x3098d3['calleridnum'];hopperUtils[_0x69a3('0xcd')](_0x418a75)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xf0')));}})[_0x69a3('0x9e')](function(){if(_0x514831)hopperUtils[_0x69a3('0xf1')](_0x3098d3,_0x4427ad,_0x53d5bb)['then'](function(){return 0x1;});});}}}};Dialer[_0x69a3('0x85')][_0x69a3('0x34')]=function(_0x3f8a30){if(this[_0x69a3('0x22')][_0x3f8a30[_0x69a3('0xc4')]]){this[_0x69a3('0x22')][_0x3f8a30[_0x69a3('0xc4')]][_0x69a3('0xf2')]=_0x3f8a30[_0x69a3('0xf2')];}if(this[_0x69a3('0x23')][_0x3f8a30[_0x69a3('0xc4')]]){this['uniqueId'][_0x3f8a30[_0x69a3('0xc4')]][_0x69a3('0xf2')]=_0x3f8a30[_0x69a3('0xf2')];}};Dialer['prototype'][_0x69a3('0x38')]=function(_0x306f63){if(!this['actions'][_0x306f63[_0x69a3('0xf3')]]){return;}var _0x215805=this[_0x69a3('0x1d')][this['actions'][_0x306f63[_0x69a3('0xf3')]][_0x69a3('0xc3')]][_0x69a3('0xf4')]||_0x69a3('0xf5');if(_0x215805===_0x69a3('0xf6')){if(this[_0x69a3('0x22')][_0x306f63['actionid']]&&_[_0x69a3('0xf7')](this[_0x69a3('0x22')][_0x306f63['actionid']]['locked'])&&_0x306f63[_0x69a3('0x89')]==='1'&&_0x306f63[_0x69a3('0xf8')]==='0'){if(this['agents'][_0x306f63['stateinterface']]){if(!this[_0x69a3('0x1f')][_0x306f63[_0x69a3('0xf9')]][_0x69a3('0xfa')]){this[_0x69a3('0x1f')][_0x306f63['stateinterface']][_0x69a3('0xfa')]=!![];this[_0x69a3('0x22')][_0x306f63[_0x69a3('0xf3')]]['locked']=!![];this[_0x69a3('0x22')][_0x306f63['actionid']]['stateinterface']=_0x306f63[_0x69a3('0xf9')];}}}}else if(_0x215805==='rrmemory'){if(this[_0x69a3('0x22')][_0x306f63[_0x69a3('0xf3')]]){if(this[_0x69a3('0x1f')][_0x306f63[_0x69a3('0xf9')]]){this[_0x69a3('0x22')][_0x306f63[_0x69a3('0xf3')]][_0x69a3('0xf9')]=_0x306f63[_0x69a3('0xf9')];if(_['isNil'](this['queueBooked'][this['actions'][_0x306f63[_0x69a3('0xf3')]][_0x69a3('0xc3')]])){this['queueBooked'][this['actions'][_0x306f63['actionid']]['queue']]=[];}this[_0x69a3('0x26')][this[_0x69a3('0x22')][_0x306f63[_0x69a3('0xf3')]][_0x69a3('0xc3')]][_0x69a3('0x9a')](_[_0x69a3('0x62')](_[_0x69a3('0x77')](this[_0x69a3('0x22')][_0x306f63[_0x69a3('0xf3')]],[_0x69a3('0xfb'),_0x69a3('0xf9')]),{'status':_0x306f63[_0x69a3('0x89')],'paused':_0x306f63['paused']}));}}}};Dialer['prototype']['syncQueueStatusComplete']=function(_0x44b437){if(!this['actions'][_0x44b437['actionid']]){return;}var _0x2b4636=this;var _0x1e53b9=this[_0x69a3('0x1d')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['queue']];var _0x5cde3d=_0x1e53b9[_0x69a3('0xf4')]||'rrmemory';if(_0x5cde3d===_0x69a3('0xf6')){if(this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]&&this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xf9')]){this[_0x69a3('0x1c')][_0x69a3('0xfc')](this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['idHopper'],this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xf9')])[_0x69a3('0xa2')](function(_0x56d523){logger[_0x69a3('0x68')](_0x69a3('0xfd'),util[_0x69a3('0x44')](_0x56d523,{'showHidden':![],'depth':null}));})[_0x69a3('0x1a')](function(){_0x2b4636[_0x69a3('0xd1')](_0x2b4636[_0x69a3('0x1d')][_0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['queue']]);_0x2b4636[_0x69a3('0x1f')][_0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xf9')]][_0x69a3('0xfa')]=![];delete _0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]];unlockQueueStatus(_0x1e53b9);});}else{this[_0x69a3('0xd1')](this[_0x69a3('0x1d')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]);hopperUtils['rescheduleContact']({'active':![],'ContactId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xe4')],'ListId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xfe')],'VoiceQueueId':this['actions'][_0x44b437[_0x69a3('0xf3')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x44b437['actionid']][_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x44b437[_0x69a3('0xf3')]];unlockQueueStatus(_0x1e53b9);}}else if(_0x5cde3d===_0x69a3('0xf5')){var _0x1968ee;if(this['actions'][_0x44b437[_0x69a3('0xf3')]]&&!_[_0x69a3('0x7c')](this[_0x69a3('0x26')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]])){if(this[_0x69a3('0xff')][_0x2b4636['actions'][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]){this[_0x69a3('0xff')][_0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['queue']]=this[_0x69a3('0xff')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]?this[_0x69a3('0xff')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]:this[_0x69a3('0x26')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['queue']]?this[_0x69a3('0x26')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]][_0x69a3('0x100')]||0x0:0x0;}this[_0x69a3('0x26')][this[_0x69a3('0x22')][_0x44b437['actionid']]['queue']][_0x69a3('0x100')]=this[_0x69a3('0xff')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['queue']];for(var _0x1b4f20=0x0;_0x1b4f20<this[_0x69a3('0x26')][this['actions'][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]][_0x69a3('0x101')];_0x1b4f20+=0x1){_0x1968ee=rr(this['queueBooked'][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]);this[_0x69a3('0xff')][_0x2b4636[_0x69a3('0x22')][_0x44b437['actionid']][_0x69a3('0xc3')]]=this[_0x69a3('0x26')][this['actions'][_0x44b437['actionid']][_0x69a3('0xc3')]][_0x69a3('0x100')];if(_0x1968ee[_0x69a3('0x89')]==='1'&&_0x1968ee[_0x69a3('0xf8')]==='0'){break;}}if(!_['isNil'](_0x1968ee)){this[_0x69a3('0x1f')][_0x1968ee[_0x69a3('0xf9')]][_0x69a3('0x102')]=_['isUndefined'](this[_0x69a3('0x1f')][_0x1968ee[_0x69a3('0xf9')]]['unlockRR'])?!![]:this[_0x69a3('0x1f')][_0x1968ee[_0x69a3('0xf9')]]['unlockRR'];}loggerBooked[_0x69a3('0x4a')](_0x69a3('0x103'),_0x44b437[_0x69a3('0xf3')],_0x69a3('0x104'),JSON[_0x69a3('0x76')](_['pick'](this[_0x69a3('0x1f')][_0x1968ee['stateinterface']],[_0x69a3('0x47'),_0x69a3('0x102')])),_0x69a3('0x105'),JSON[_0x69a3('0x76')](_0x1968ee[_0x69a3('0xfb')]));if(!_[_0x69a3('0xf7')](_0x1968ee)&&_0x1968ee['status']==='1'&&_0x1968ee[_0x69a3('0xf8')]==='0'&&this[_0x69a3('0x1f')][_0x1968ee['stateinterface']][_0x69a3('0x102')]){this[_0x69a3('0x1f')][_0x1968ee[_0x69a3('0xf9')]]['unlockRR']=![];this[_0x69a3('0x26')][_0x2b4636['actions'][_0x44b437['actionid']]['queue']]=[];this[_0x69a3('0x1c')][_0x69a3('0xfc')](_0x1968ee[_0x69a3('0xfb')],_0x1968ee[_0x69a3('0xf9')])[_0x69a3('0xa2')](function(_0x5091ef){logger[_0x69a3('0x68')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x69a3('0x44')](_0x5091ef,{'showHidden':![],'depth':null}));})[_0x69a3('0x1a')](function(){_0x2b4636[_0x69a3('0xd1')](_0x2b4636[_0x69a3('0x1d')][_0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]);setTimeout(function(){_0x2b4636['agents'][_0x1968ee['stateinterface']][_0x69a3('0x102')]=!![];loggerBooked[_0x69a3('0x4a')](_0x69a3('0x106'),_0x44b437[_0x69a3('0xf3')],'Agent:\x20',JSON['stringify'](_[_0x69a3('0x77')](_0x2b4636[_0x69a3('0x1f')][_0x1968ee['stateinterface']],[_0x69a3('0x47'),'unlockRR'])),_0x69a3('0x105'),JSON['stringify'](_0x1968ee[_0x69a3('0xfb')]));},0xc7);delete _0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]];unlockQueueStatus(_0x1e53b9,_0x44b437['actionid']);});}else{loggerBooked[_0x69a3('0x4a')](_0x69a3('0x107'));this[_0x69a3('0xd1')](this[_0x69a3('0x1d')][this['actions'][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]);hopperUtils[_0x69a3('0xe1')]({'active':![],'ContactId':this[_0x69a3('0x22')][_0x44b437['actionid']][_0x69a3('0xe4')],'ListId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xfe')],'VoiceQueueId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0x108')]||undefined,'CampaignId':this[_0x69a3('0x22')][_0x44b437['actionid']]['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x69a3('0x22')][_0x44b437['actionid']];unlockQueueStatus(_0x1e53b9);}}else{loggerBooked[_0x69a3('0x4a')](_0x69a3('0x109'));this['updateOriginated'](this['voiceQueues'][this['actions'][_0x44b437['actionid']][_0x69a3('0xc3')]]);hopperUtils[_0x69a3('0xe1')]({'active':![],'ContactId':this[_0x69a3('0x22')][_0x44b437['actionid']][_0x69a3('0xe4')],'ListId':this['actions'][_0x44b437[_0x69a3('0xf3')]]['ListId'],'VoiceQueueId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0x108')]||undefined,'CampaignId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x10a')));delete this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]];unlockQueueStatus(_0x1e53b9);}}else{loggerBooked[_0x69a3('0x4a')](_0x69a3('0x10b'));this[_0x69a3('0xd1')](this[_0x69a3('0x1d')][this['actions'][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]);hopperUtils[_0x69a3('0xe1')]({'active':![],'ContactId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xe4')],'ListId':this['actions'][_0x44b437['actionid']][_0x69a3('0xfe')],'VoiceQueueId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x10c')));delete this[_0x69a3('0x22')][_0x44b437['actionid']];unlockQueueStatus(_0x1e53b9);}};Dialer[_0x69a3('0x85')][_0x69a3('0x10d')]=function(_0x4c9f6f){var _0x2d9f46=this['actions'][_0x4c9f6f[_0x69a3('0xf3')]];if(_0x2d9f46){delete this[_0x69a3('0x22')][_0x4c9f6f[_0x69a3('0xf3')]];_0x2d9f46[_0x69a3('0x10e')]=moment()[_0x69a3('0x45')](_0x69a3('0xc7'));var _0x5520e1=_0x2d9f46[_0x69a3('0x41')]===_0x69a3('0xc5')?this[_0x69a3('0x1e')][_0x2d9f46[_0x69a3('0xc3')]]:this[_0x69a3('0x1d')][_0x2d9f46[_0x69a3('0x10f')]()];if(_0x4c9f6f['response']!==_0x69a3('0x110')){this[_0x69a3('0xd1')](_0x5520e1);return this[_0x69a3('0x111')](_0x2d9f46,_0x5520e1,_0x4c9f6f)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x112')));}this['uniqueId'][_0x4c9f6f[_0x69a3('0xc4')]]=_0x2d9f46;}};Dialer[_0x69a3('0x85')][_0x69a3('0x36')]=function(_0x3a8c5c){var _0x3eb441=this;var _0x4e38a4=this['uniqueId'][_0x3a8c5c[_0x69a3('0xc4')]];var _0x3621f0;if(!_[_0x69a3('0xf7')](_0x3a8c5c)&&!_[_0x69a3('0xf7')](_0x3a8c5c[_0x69a3('0x113')])&&!_[_0x69a3('0xf7')](_0x3a8c5c[_0x69a3('0x113')]['amdstatus'])&&_0x3a8c5c[_0x69a3('0x114')]===_0x69a3('0x115')&&_0x4e38a4){if(_0x4e38a4[_0x69a3('0x41')]!==_0x69a3('0xc5')&&this['voiceQueues'][_0x4e38a4['queue']][_0x69a3('0x116')]&&_0x3a8c5c[_0x69a3('0x117')]===_0x69a3('0x118')){delete this[_0x69a3('0x23')][_0x3a8c5c['uniqueid']];this[_0x69a3('0xd1')](this['voiceQueues'][_0x4e38a4[_0x69a3('0xc3')]]);this[_0x69a3('0x1d')][_0x4e38a4['queue']][_0x69a3('0xc8')]+=0x1;this[_0x69a3('0x1d')][_0x4e38a4[_0x69a3('0xc3')]][_0x69a3('0x119')]+=0x1;_0x3621f0=new Hangup(_0x4e38a4,_0x3a8c5c);_0x3621f0[_0x69a3('0x71')]=0x12;_0x3621f0[_0x69a3('0xd5')]=_0x69a3('0x11a');_0x3621f0[_0x69a3('0x11b')]=_0x69a3('0x11c');ami[_0x69a3('0x40')](_0x69a3('0x11d'),ut['buildObj'](_0x3621f0,'amd'));this[_0x69a3('0x11e')](_0x3621f0,_0x69a3('0x11f'),_0x69a3('0x120'));}if(_0x4e38a4[_0x69a3('0x41')]!=='ivr'&&this['voiceQueues'][_0x4e38a4['queue']][_0x69a3('0x116')]&&_0x3a8c5c[_0x69a3('0x117')]===_0x69a3('0x121')){return new Promise(function(_0xa6d922,_0x1e6653){delete _0x3eb441[_0x69a3('0x23')][_0x3a8c5c['uniqueid']];_0x3eb441[_0x69a3('0xd1')](_0x3eb441[_0x69a3('0x1d')][_0x4e38a4[_0x69a3('0xc3')]]);_0x3eb441[_0x69a3('0x1d')][_0x4e38a4[_0x69a3('0xc3')]][_0x69a3('0xc8')]+=0x1;_0x3eb441[_0x69a3('0x1d')][_0x4e38a4['queue']][_0x69a3('0x119')]+=0x1;var _0x2ca574=_0x3eb441['voiceQueues'][_0x4e38a4['queue']];var _0x993348=new Hangup(_0x4e38a4,_0x3a8c5c);_0x993348[_0x69a3('0x71')]=0x13;_0x993348[_0x69a3('0xd5')]='Machine';_0x993348['membername']=_0x69a3('0x11c');_0x993348[_0x69a3('0x122')]+=0x1;_0x993348['countglobal']+=0x1;_0x993348[_0x69a3('0x123')]=!![];ami[_0x69a3('0x40')]('custom:amd',ut[_0x69a3('0x124')](_0x993348,_0x69a3('0x123')));hopperUtils[_0x69a3('0xcd')](_0x993348)['catch'](loggerCatch(_0x69a3('0x125')));if(_0x993348[_0x69a3('0x126')]+_0x993348[_0x69a3('0x127')]+_0x993348[_0x69a3('0x128')]+_0x993348[_0x69a3('0x129')]+_0x993348['countdropretry']+_0x993348[_0x69a3('0xed')]+_0x993348[_0x69a3('0x122')]+_0x993348['countagentrejectretry']>=_0x2ca574['dialGlobalMaxRetry']){_0x3eb441[_0x69a3('0x12a')](_0x993348,_0xa6d922,_0x1e6653,_0x69a3('0x12b'));}else{if(_0x993348[_0x69a3('0x122')]>=_0x2ca574[_0x69a3('0x12c')]){_0x3eb441[_0x69a3('0x12d')](_0x993348,_0xa6d922,_0x1e6653,_0x69a3('0x12e'));}else{hopperUtils[_0x69a3('0xe1')]({'active':![],'countmachineretry':_0x993348[_0x69a3('0x122')],'scheduledat':moment()['add'](_0x2ca574[_0x69a3('0x12f')],_0x69a3('0xe3'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x993348[_0x69a3('0xe4')],'ListId':_0x993348[_0x69a3('0xfe')],'VoiceQueueId':_0x993348[_0x69a3('0x108')]||undefined,'CampaignId':_0x993348[_0x69a3('0xe5')]||undefined})['catch'](loggerCatch(_0x69a3('0x130')));_0xa6d922({'reschedule':0x1});}}});}if(_0x4e38a4[_0x69a3('0x41')]===_0x69a3('0xc5')&&this['campaigns'][_0x4e38a4[_0x69a3('0xc3')]][_0x69a3('0x116')]&&_0x3a8c5c[_0x69a3('0x117')]===_0x69a3('0x118')){delete this[_0x69a3('0x23')][_0x3a8c5c[_0x69a3('0xc4')]];this[_0x69a3('0xd1')](this[_0x69a3('0x1e')][_0x4e38a4['queue']]);_0x3621f0=new Hangup(_0x4e38a4,_0x3a8c5c);_0x3621f0[_0x69a3('0x71')]=0x12;_0x3621f0[_0x69a3('0xd5')]=_0x69a3('0x11a');_0x3621f0['membername']='AMD';ami[_0x69a3('0x40')](_0x69a3('0x11d'),ut[_0x69a3('0x124')](_0x3621f0,_0x69a3('0x123')));this['saveInDb'](_0x3621f0,'[syncHangupInAMDIvr][createHistory]',_0x69a3('0x131'));}if(_0x4e38a4['type']===_0x69a3('0xc5')&&this[_0x69a3('0x1e')][_0x4e38a4['queue']][_0x69a3('0x116')]&&_0x3a8c5c[_0x69a3('0x117')]===_0x69a3('0x121')){return new Promise(function(_0x72a0bc,_0x30aa94){delete _0x3eb441[_0x69a3('0x23')][_0x3a8c5c[_0x69a3('0xc4')]];_0x3eb441[_0x69a3('0xd1')](_0x3eb441[_0x69a3('0x1e')][_0x4e38a4['queue']]);_0x3eb441[_0x69a3('0x1e')][_0x4e38a4[_0x69a3('0xc3')]]['outboundAnswerCallsDay']+=0x1;_0x3eb441[_0x69a3('0x1e')][_0x4e38a4[_0x69a3('0xc3')]][_0x69a3('0x119')]+=0x1;var _0x5422c5=_0x3eb441[_0x69a3('0x1e')][_0x4e38a4[_0x69a3('0xc3')]];var _0x4ba030=new Hangup(_0x4e38a4,_0x3a8c5c);_0x4ba030['state']=0x13;_0x4ba030[_0x69a3('0xd5')]=_0x69a3('0x132');_0x4ba030[_0x69a3('0x11b')]=_0x69a3('0x11c');_0x4ba030[_0x69a3('0x122')]+=0x1;_0x4ba030[_0x69a3('0xd9')]+=0x1;_0x4ba030['amd']=!![];ami[_0x69a3('0x40')](_0x69a3('0x11d'),ut[_0x69a3('0x124')](_0x4ba030,_0x69a3('0x123')));hopperUtils[_0x69a3('0xcd')](_0x4ba030)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x125')));if(_0x4ba030['countbusyretry']+_0x4ba030[_0x69a3('0x127')]+_0x4ba030[_0x69a3('0x128')]+_0x4ba030[_0x69a3('0x129')]+_0x4ba030['countdropretry']+_0x4ba030[_0x69a3('0xed')]+_0x4ba030[_0x69a3('0x122')]+_0x4ba030['countagentrejectretry']>=_0x5422c5[_0x69a3('0x133')]){_0x3eb441[_0x69a3('0x12a')](_0x4ba030,_0x72a0bc,_0x30aa94,_0x69a3('0x12b'));}else{if(_0x4ba030[_0x69a3('0x122')]>=_0x5422c5[_0x69a3('0x12c')]){_0x3eb441['createStateFinal'](_0x4ba030,_0x72a0bc,_0x30aa94,_0x69a3('0x12e'));}else{hopperUtils[_0x69a3('0xe1')]({'active':![],'countmachineretry':_0x4ba030[_0x69a3('0x122')],'scheduledat':moment()['add'](_0x5422c5[_0x69a3('0x12f')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x4ba030[_0x69a3('0xe4')],'ListId':_0x4ba030[_0x69a3('0xfe')],'VoiceQueueId':_0x4ba030[_0x69a3('0x108')]||undefined,'CampaignId':_0x4ba030[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x130')));_0x72a0bc({'reschedule':0x1});}}});}}};Dialer[_0x69a3('0x85')]['syncHangup']=function(_0x5728be){var _0xcf36e6=this[_0x69a3('0x23')][_0x5728be[_0x69a3('0xc4')]];var _0x214272;if(_0xcf36e6&&_0xcf36e6[_0x69a3('0x41')]===_0x69a3('0xc5')){delete this[_0x69a3('0x23')][_0x5728be[_0x69a3('0xc4')]];this[_0x69a3('0xd1')](this[_0x69a3('0x1e')][_0xcf36e6[_0x69a3('0xc3')]]);this[_0x69a3('0x1e')][_0xcf36e6[_0x69a3('0xc3')]][_0x69a3('0x134')]+=0x1;_0x214272=new Hangup(_0xcf36e6,_0x5728be);hopperUtils[_0x69a3('0xcd')](_0x214272)[_0x69a3('0xa2')](loggerCatch('[syncHangupIvr][createHistory]'));hopperUtils[_0x69a3('0xcf')](_0x214272)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x135')));}if(_0xcf36e6&&_0xcf36e6[_0x69a3('0x41')]!==_0x69a3('0xc5')&&isNotNull(this[_0x69a3('0x1d')][_0xcf36e6['queue']][_0x69a3('0x136')])){delete this[_0x69a3('0x23')][_0x5728be[_0x69a3('0xc4')]];this['updateOriginated'](this[_0x69a3('0x1d')][_0xcf36e6[_0x69a3('0xc3')]]);this['voiceQueues'][_0xcf36e6[_0x69a3('0xc3')]][_0x69a3('0xc8')]+=0x1;this[_0x69a3('0x1d')][_0xcf36e6[_0x69a3('0xc3')]]['outboundAnswerAgiCallsDay']+=0x1;_0x214272=new Hangup(_0xcf36e6,_0x5728be);_0x214272['state']=0x10;_0x214272[_0x69a3('0xd5')]=_0x69a3('0x137');_0x214272['membername']='AGI';hopperUtils[_0x69a3('0xcd')](_0x214272)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x138')));hopperUtils['moveContactManagedDialer'](_0x214272)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x135')));}if(_0xcf36e6&&_0xcf36e6[_0x69a3('0x41')]!=='ivr'&&!isNotNull(this[_0x69a3('0x1d')][_0xcf36e6[_0x69a3('0xc3')]][_0x69a3('0x136')])){delete this['uniqueId'][_0x5728be['uniqueid']];this['updateOriginated'](this['voiceQueues'][_0xcf36e6['queue']]);this[_0x69a3('0x1d')][_0xcf36e6[_0x69a3('0xc3')]][_0x69a3('0x139')]+=0x1;_0x214272=new Hangup(_0xcf36e6,_0x5728be);_0x214272[_0x69a3('0x71')]=0xc;_0x214272[_0x69a3('0xd5')]=_0x5728be[_0x69a3('0x13a')];_0x214272[_0x69a3('0x11b')]=_0x69a3('0x13b');hopperUtils['createHistory'](_0x214272)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x138')));hopperUtils['moveContactManagedDialer'](_0x214272)['catch'](loggerCatch(_0x69a3('0x135')));}};Dialer[_0x69a3('0x85')]['syncQueueSummary']=function(_0x1b7c58){var _0x50bf3c=this;if(!_0x50bf3c[_0x69a3('0x27')][_0x1b7c58[_0x69a3('0x47')]]){_0x50bf3c['queuesSummary'][_0x1b7c58[_0x69a3('0x47')]]={'running':![]};}else if(_0x50bf3c['queuesSummary'][_0x1b7c58['name']][_0x69a3('0x13c')]===!![]){return;}else if(_0x50bf3c[_0x69a3('0x27')][_0x1b7c58[_0x69a3('0x47')]]['running']===![]){_0x50bf3c[_0x69a3('0x27')][_0x1b7c58[_0x69a3('0x47')]][_0x69a3('0x13c')]=!![];}var _0x13f157=_0x50bf3c[_0x69a3('0x1d')][_0x1b7c58[_0x69a3('0x47')]];var _0x6fe2bf=_0x13f157[_0x69a3('0x6d')]!==utils['CAMPAIGN_STATUS'][_0x69a3('0x7e')];var _0x1958d9=utils[_0x69a3('0x13d')](_0x13f157);_0x13f157[_0x69a3('0x13e')]=utils[_0x69a3('0x13f')](_0x13f157,_0x50bf3c[_0x69a3('0x88')]);Promise[_0x69a3('0xaf')]()[_0x69a3('0x9e')](function(){if(_0x13f157[_0x69a3('0x13e')]===utils[_0x69a3('0x6e')][_0x69a3('0x7e')]){if(_0x6fe2bf){clearPredictiveAttributes(_0x13f157);_0x1b7c58['startPredictive']=undefined;_0x1b7c58[_0x69a3('0x64')]=undefined;}if(_0x13f157[_0x69a3('0x13e')]===utils[_0x69a3('0x6e')]['INACTIVE']){_0x1b7c58['available']=0x0;_0x1b7c58[_0x69a3('0xf8')]=0x0;_0x1b7c58[_0x69a3('0x140')]=0x0;_0x1b7c58[_0x69a3('0x141')]=0x0;_0x1b7c58['pTalking']=0x0;}}else if(_0x13f157[_0x69a3('0x13e')]===utils[_0x69a3('0x6e')][_0x69a3('0x142')]&&!_0x1958d9){return _0x50bf3c[_0x69a3('0x95')](_0x13f157,!![])[_0x69a3('0x9e')](function(){return _0x50bf3c[_0x69a3('0x95')](_0x13f157,![]);})[_0x69a3('0x9e')](function(){return _0x50bf3c['checkDialMethod'](_0x13f157);})[_0x69a3('0xa2')](function(_0x5cfa64){loggerSyncQueueSummary['debug'](_0x69a3('0x143'),util[_0x69a3('0x44')](_0x5cfa64,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x13f157);});}else{clearPredictiveAttributes(_0x13f157);}})[_0x69a3('0x9e')](function(){var _0x35e40d=_0x1b7c58[_0x69a3('0x144')](_0x13f157);if(_0x35e40d||_0x13f157[_0x69a3('0x145')]){_0x13f157['queueSummaryCountersUpdated']=![];_0x1b7c58[_0x69a3('0x146')](_0x13f157);Object[_0x69a3('0x147')](_0x13f157,_0x1b7c58);emitOutboundVoiceQueueSummary(_0x1b7c58);}_0x50bf3c['queuesSummary'][_0x13f157['name']][_0x69a3('0x13c')]=![];})[_0x69a3('0xa2')](function(_0x36fbdb){logger[_0x69a3('0x68')](_0x69a3('0x143'),util[_0x69a3('0x44')](_0x36fbdb,{'showHidden':![],'depth':null}));_0x50bf3c['queuesSummary'][_0x13f157[_0x69a3('0x47')]][_0x69a3('0x13c')]=![];});};Dialer[_0x69a3('0x85')][_0x69a3('0x31')]=_['throttle'](function(){var _0x5eb2e9=_[_0x69a3('0x148')](this[_0x69a3('0x1d')],function(_0x46016e){return _0x46016e[_0x69a3('0x149')];});var _0x4c7418=_[_0x69a3('0x148')](this[_0x69a3('0x1f')],function(_0x9ca67f){return _0x9ca67f[_0x69a3('0x14a')]&&_0x9ca67f[_0x69a3('0x89')]===_0x69a3('0x8a');});if(_0x5eb2e9[_0x69a3('0x101')]>0x0&&_0x4c7418[_0x69a3('0x101')]>0x0){return Promise['resolve']()[_0x69a3('0x9e')](cmHopper[_0x69a3('0x14b')](_[_0x69a3('0x14c')](_0x5eb2e9,'id'),previewRecallmeReminderInterval,_[_0x69a3('0x14c')](_0x4c7418,'id')))['then'](function(_0x25ad1e){for(var _0x6984aa=0x0;_0x6984aa<_0x25ad1e[_0x69a3('0x101')];_0x6984aa++){var _0x3d7d97=_0x25ad1e[_0x6984aa][_0x69a3('0x14d')][_0x69a3('0x47')];if(_0x3d7d97)io['to'](util[_0x69a3('0x45')](_0x69a3('0x14e'),_0x3d7d97))[_0x69a3('0x40')](_0x69a3('0x14f'),{'hopper':_0x25ad1e[_0x6984aa]});}})[_0x69a3('0xa2')](function(_0x36d336){logger[_0x69a3('0x68')](_0x69a3('0x150'),_0x36d336);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x69a3('0x85')]['loopClearZombieChannels']=function(){var _0x5d6919=this;setInterval(function(){_0x5d6919[_0x69a3('0x151')](_0x5d6919[_0x69a3('0x23')],_0x69a3('0x152'));_0x5d6919[_0x69a3('0x151')](_0x5d6919[_0x69a3('0x22')],_0x69a3('0x153'));},0x32c8);};Dialer[_0x69a3('0x85')][_0x69a3('0x151')]=function(_0xc30be6,_0x42d6e2){var _0x29128f=this;for(var _0x27f9a7 in _0xc30be6){if(typeof _0xc30be6[_0x27f9a7]!==_0x69a3('0xad')){this[_0x69a3('0x1b')][_0x69a3('0x18')](function(){if(!_['isNil'](_0xc30be6[_0x27f9a7])){return ami[_0x69a3('0x9b')]({'action':_0x69a3('0x89'),'channel':_0xc30be6[_0x27f9a7][_0x69a3('0xf2')]})[_0x69a3('0xa2')](function(_0x218712){if(_0x218712[_0x69a3('0x6d')]===_0x69a3('0x154')){setTimeout(function(){if(_0xc30be6[_0x27f9a7]&&_0xc30be6[_0x27f9a7][_0x69a3('0x41')]!==_0x69a3('0xc5')){_0x29128f[_0x69a3('0xd1')](_0x29128f[_0x69a3('0x1d')][_0xc30be6[_0x27f9a7]['queue']]);logger[_0x69a3('0x68')](_0x69a3('0x155'),_0x42d6e2,_0x27f9a7,_0xc30be6[_0x27f9a7][_0x69a3('0xc3')]);delete _0xc30be6[_0x27f9a7];}if(_0xc30be6[_0x27f9a7]&&_0xc30be6[_0x27f9a7]['type']===_0x69a3('0xc5')){_0x29128f['updateOriginated'](_0x29128f[_0x69a3('0x1e')][_0xc30be6[_0x27f9a7][_0x69a3('0xc3')]]);logger[_0x69a3('0x68')](_0x69a3('0x156'),_0x42d6e2,_0x27f9a7,_0xc30be6[_0x27f9a7][_0x69a3('0xc3')]);delete _0xc30be6[_0x27f9a7];}},0x2328);}});}});}}};Dialer[_0x69a3('0x85')][_0x69a3('0x157')]=function(_0x22d5aa){return Promise[_0x69a3('0xaf')]()[_0x69a3('0x9e')](voiceQueueRt[_0x69a3('0x157')](_0x22d5aa))[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x158')));};Dialer['prototype'][_0x69a3('0xd1')]=function(_0x22e171){if(!_[_0x69a3('0x3f')](_0x22e171)&&_0x22e171!==null){if(typeof _0x22e171['originated']!==_0x69a3('0xad')){if(_0x22e171['originated']>0x0){_0x22e171['originated']-=0x1;}else{logger[_0x69a3('0x68')](_0x69a3('0x159'));}}}else{logger[_0x69a3('0x68')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x69a3('0x85')]['loggerHandler']=function(_0x4b3714,_0x2f3772){var _0x460e2b=this;return function(_0x11466d){_0x460e2b[_0x69a3('0xd1')](_0x2f3772);logger[_0x69a3('0x68')](_0x4b3714,util[_0x69a3('0x44')](_0x11466d,{'showHidden':![],'depth':null}));};};Dialer[_0x69a3('0x85')][_0x69a3('0x15a')]=function(_0x340365,_0x95e4ac,_0x19beed){var _0x486cd8={'state':0x19,'statedesc':_0x69a3('0x15b')};this[_0x69a3('0xd1')](_0x95e4ac);this[_0x69a3('0x11e')](_['merge'](_0x486cd8,_[_0x69a3('0x77')](_0x19beed,[_0x69a3('0xe4'),_0x69a3('0xfe'),_0x69a3('0x15c'),_0x69a3('0x108'),_0x69a3('0xe5')])),_0x69a3('0x15d'),_0x69a3('0x15e'));logger['error'](_0x340365);};Dialer['prototype'][_0x69a3('0x11e')]=function(_0x4aed9a,_0x411dae,_0x8e527a){hopperUtils[_0x69a3('0xcd')](_0x4aed9a)['catch'](loggerCatch(_0x411dae));hopperUtils[_0x69a3('0xcf')](_0x4aed9a)['catch'](loggerCatch(_0x8e527a));};Dialer[_0x69a3('0x85')]['queueCallerAbandonCreateState']=function(_0x3ddead,_0x360721){hopperUtils[_0x69a3('0xcd')](_0x3ddead)[_0x69a3('0xa2')](loggerCatch('[syncAgentComplete][createHistory]'));if(_0x360721==0x0){hopperUtils[_0x69a3('0xcf')](_0x3ddead)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x15f')));}};Dialer['prototype'][_0x69a3('0x150')]=function(_0x11e4b7){return Promise['resolve']()[_0x69a3('0x9e')](cmHopper['handlePreviewRecallNotifications'](_0x11e4b7['id'],previewRecallmeReminderInterval))[_0x69a3('0x9e')](function(_0x3539f2){for(var _0x5cae71=0x0;_0x5cae71<_0x3539f2[_0x69a3('0x101')];_0x5cae71++){var _0x334615=_0x3539f2[_0x5cae71][_0x69a3('0x14d')][_0x69a3('0x47')];if(_0x334615)io['to'](util[_0x69a3('0x45')](_0x69a3('0x14e'),_0x334615))[_0x69a3('0x40')](_0x69a3('0x14f'),{'hopper':_0x3539f2[_0x5cae71]});}})['catch'](function(){});};Dialer[_0x69a3('0x85')][_0x69a3('0xb4')]=function(_0x486f21){var _0x258eb6=this;return function(){_0x258eb6['handleIvr'](_0x486f21);};};Dialer[_0x69a3('0x85')][_0x69a3('0x160')]=function(_0xd03f3d,_0x5c99b7){var _0x43c88b=this;var _0x5f0e47=uuid['v4']();this[_0x69a3('0x22')][_0x5f0e47]=new Action(_0xd03f3d,_0x5c99b7,_0x5f0e47);return new Promise(function(_0x18eb9e,_0x4426f6){if(_[_0x69a3('0x3f')](_0xd03f3d)&&typeof _0xd03f3d!==_0x69a3('0x161')){return _0x4426f6(msgResponse(_0x69a3('0x162'),_0x69a3('0x92'),_0x69a3('0x163')));}if(_['isUndefined'](_0x5c99b7[_0x69a3('0x164')])||_0x5c99b7[_0x69a3('0x164')]===null){return _0x4426f6(msgResponse(_0x69a3('0x162'),_0x69a3('0x92'),_0x69a3('0x165')));}var _0x2e8441={'XMD-CALLERID':_0x43c88b[_0x69a3('0x22')][_0x5f0e47][_0x69a3('0x166')](),'XMD-AGI':_0xd03f3d[_0x69a3('0x136')]?util[_0x69a3('0x45')](_0x69a3('0x167'),ipAgi,_0xd03f3d['dialQueueProject']):'NONE','XMD-AGIAFTER':_0xd03f3d[_0x69a3('0xcb')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0xd03f3d[_0x69a3('0xcb')]):_0x69a3('0x168'),'XMD-QUEUE':utils['isOutboundQueue'](_0xd03f3d)?util[_0x69a3('0x45')](_0x69a3('0x169'),_0xd03f3d['name'],_0xd03f3d[_0x69a3('0x16a')]||'',_0xd03f3d['dialAgiAfterHangupAgent']?'c':'',_0xd03f3d[_0x69a3('0x16b')]||0x3):_0x69a3('0x168'),'XMD-CONTACTID':_0x5c99b7['ContactId'],'XMD-CDRTYPE':_0x69a3('0x5'),'CALLERID(all)':_0x43c88b[_0x69a3('0x22')][_0x5f0e47][_0x69a3('0x166')](),'XMD-AMD':_0xd03f3d[_0x69a3('0x116')]?_0x69a3('0x142'):_0x69a3('0x168'),'XMD-DESTINATION':_0x69a3('0x115')};if(_0xd03f3d[_0x69a3('0x116')]){_0x2e8441[_0x69a3('0x16c')]=_0xd03f3d[_0x69a3('0x16d')]||0x9c4;_0x2e8441['XMD-AMDGREETING']=_0xd03f3d['dialAMDGreeting']||0x5dc;_0x2e8441[_0x69a3('0x16e')]=_0xd03f3d['dialAMDAfterGreetingSilence']||0x320;_0x2e8441['XMD-AMDTOTALANALYSISTIME']=_0xd03f3d['dialAMDTotalAnalysisTime']||0x1388;_0x2e8441[_0x69a3('0x16f')]=_0xd03f3d[_0x69a3('0x170')]||0x64;_0x2e8441[_0x69a3('0x171')]=_0xd03f3d[_0x69a3('0x172')]||0x32;_0x2e8441[_0x69a3('0x173')]=_0xd03f3d[_0x69a3('0x174')]||0x3;_0x2e8441[_0x69a3('0x175')]=_0xd03f3d[_0x69a3('0x176')]||0x100;_0x2e8441[_0x69a3('0x177')]=_0xd03f3d['dialAMDMaximumWordLength']||0x1388;}if(utils['isOutboundQueue'](_0xd03f3d)){_0x2e8441[_0x69a3('0x178')]=_0x5c99b7[_0x69a3('0x108')];}else{_0x2e8441['XMD-CAMPAIGNID']=_0x5c99b7[_0x69a3('0xe5')];}var _0x1fcffd=utils[_0x69a3('0x179')](_0x5c99b7[_0x69a3('0x17a')]);Object['assign'](_0x2e8441,_0x1fcffd);var _0x2065c0=_0x43c88b['isTrunkReachable'](_0xd03f3d['Trunk'])?utils[_0x69a3('0x17b')](_0xd03f3d['Trunk'][_0x69a3('0x17c')],_0xd03f3d[_0x69a3('0x17d')],_0xd03f3d[_0x69a3('0x17e')]>0x0?utils[_0x69a3('0x17f')](_0xd03f3d['dialOriginateCallerIdNumber'],_0xd03f3d[_0x69a3('0x17e')]):_0xd03f3d[_0x69a3('0x180')]):utils[_0x69a3('0x17b')](_[_0x69a3('0xf7')](_0xd03f3d[_0x69a3('0x8d')])?_0xd03f3d['Trunk']['callerid']:_0xd03f3d['TrunkBackup'][_0x69a3('0x17c')],_0xd03f3d[_0x69a3('0x17d')],_0xd03f3d[_0x69a3('0x17e')]>0x0?utils[_0x69a3('0x17f')](_0xd03f3d[_0x69a3('0x180')],_0xd03f3d[_0x69a3('0x17e')]):_0xd03f3d[_0x69a3('0x180')]);if(_0x2065c0){_0x2e8441['XMD-ORIGINATECALLERIDNAME']=_0x43c88b[_0x69a3('0x22')][_0x5f0e47][_0x69a3('0x181')]=utils['extractCalleridName'](_0x2065c0);_0x2e8441[_0x69a3('0x182')]=_0x5c99b7[_0x69a3('0x164')];}_0xd03f3d[_0x69a3('0x183')]=_0x2e8441;return ami[_0x69a3('0x9b')]({'actionid':_0x5f0e47,'action':'originate','channel':_0x43c88b[_0x69a3('0x86')](_0xd03f3d[_0x69a3('0x8c')])?util['format']('SIP/%s/%s%s',_0xd03f3d[_0x69a3('0x8c')]['name'],isNotNull(_0xd03f3d[_0x69a3('0x184')])?_0xd03f3d[_0x69a3('0x184')]['trim']()||'':'',_0xd03f3d['dialCutDigit']>0x0?_0x5c99b7[_0x69a3('0x164')][_0x69a3('0x185')](_0xd03f3d[_0x69a3('0x186')]):_0x5c99b7[_0x69a3('0x164')]):util[_0x69a3('0x45')](_0x69a3('0x187'),_[_0x69a3('0xf7')](_0xd03f3d[_0x69a3('0x8d')])?_0xd03f3d[_0x69a3('0x8c')][_0x69a3('0x47')]:_0xd03f3d['TrunkBackup'][_0x69a3('0x47')],isNotNull(_0xd03f3d[_0x69a3('0x184')])?_0xd03f3d[_0x69a3('0x184')][_0x69a3('0x188')]()||'':'',_0xd03f3d[_0x69a3('0x186')]>0x0?_0x5c99b7[_0x69a3('0x164')][_0x69a3('0x185')](_0xd03f3d['dialCutDigit']):_0x5c99b7[_0x69a3('0x164')]),'callerid':_0x2065c0,'Exten':_0x69a3('0x115'),'Context':_0x69a3('0x189'),'Priority':'1','variable':_0x2e8441,'timeout':(_0xd03f3d[_0x69a3('0x18a')]||0x1e)*0x3e8,'async':!![],'channelid':_0x5f0e47})['then'](function(_0x2d3f25){return _0x18eb9e(_0x2d3f25);})[_0x69a3('0xa2')](function(_0x57759b){_0xd03f3d[_0x69a3('0x18b')]+=0x1;var _0x11eb2d=new History(_0x43c88b[_0x69a3('0x22')][_0x5f0e47]);logger[_0x69a3('0x68')](util[_0x69a3('0x45')](_0x69a3('0x18c'),JSON['stringify'](_0x57759b)));_0x11eb2d[_0x69a3('0x71')]=0xe;_0x11eb2d[_0x69a3('0xd5')]=_0x69a3('0x18d');_0x11eb2d[_0x69a3('0x73')]=moment()[_0x69a3('0x45')](_0x69a3('0xc7'));_0x11eb2d['endtime']=_0x11eb2d[_0x69a3('0x73')];hopperUtils[_0x69a3('0xcd')](_0x11eb2d)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x18e')));_0x43c88b[_0x69a3('0xcf')](_0x11eb2d)['catch'](loggerCatch(_0x69a3('0x18e')))[_0x69a3('0x1a')](function(){delete _0x43c88b['actions'][_0x5f0e47];return _0x4426f6(msgResponse(_0x69a3('0x162'),_0x69a3('0x18f'),_0x69a3('0x190')));});});});};Dialer[_0x69a3('0x85')][_0x69a3('0x191')]=function(_0x723d13,_0x5b86f9,_0x1e79e4){var _0x360da0=new History(_0x5b86f9);if(_0x360da0['countbusyretry']+_0x360da0[_0x69a3('0x127')]+_0x360da0[_0x69a3('0x128')]+_0x360da0['countnosuchnumberretry']+_0x360da0[_0x69a3('0xd8')]+_0x360da0[_0x69a3('0xed')]+_0x360da0[_0x69a3('0x122')]+_0x360da0[_0x69a3('0x192')]>=_0x1e79e4[_0x69a3('0x133')]-0x1){return!![];}switch(_0x723d13){case 0x3:if(_0x360da0[_0x69a3('0x128')]>=_0x1e79e4[_0x69a3('0x193')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countnoanswerretry':_0x360da0[_0x69a3('0x128')]+=0x1,'scheduledat':moment()['add'](_0x1e79e4[_0x69a3('0x194')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x360da0['ContactId'],'ListId':_0x360da0[_0x69a3('0xfe')],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x195')));break;case 0x5:if(_0x360da0['countbusyretry']>=_0x1e79e4[_0x69a3('0x196')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countbusyretry':_0x360da0[_0x69a3('0x126')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4[_0x69a3('0x197')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x360da0[_0x69a3('0xe4')],'ListId':_0x360da0['ListId'],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x360da0['countcongestionretry']>=_0x1e79e4[_0x69a3('0x198')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countcongestionretry':_0x360da0[_0x69a3('0x127')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4[_0x69a3('0x199')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x360da0[_0x69a3('0xe4')],'ListId':_0x360da0['ListId'],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x360da0['countnosuchnumberretry']>=_0x1e79e4[_0x69a3('0x19a')]-0x1){return!![];}else{hopperUtils['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x360da0[_0x69a3('0x129')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4[_0x69a3('0x19b')],'minutes')[_0x69a3('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x360da0['ContactId'],'ListId':_0x360da0[_0x69a3('0xfe')],'VoiceQueueId':_0x360da0[_0x69a3('0x108')]||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x19c')));}break;case 0xa:if(_0x360da0[_0x69a3('0xd8')]>=_0x1e79e4[_0x69a3('0xdf')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countdropretry':_0x360da0[_0x69a3('0xd8')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4[_0x69a3('0xda')],_0x69a3('0xe3'))[_0x69a3('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x360da0['ContactId'],'ListId':_0x360da0['ListId'],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xe6')));break;case 0xb:if(_0x360da0[_0x69a3('0xed')]>=_0x1e79e4[_0x69a3('0x19d')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countabandonedretry':_0x360da0[_0x69a3('0xed')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4[_0x69a3('0xee')],_0x69a3('0xe3'))[_0x69a3('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x360da0[_0x69a3('0xe4')],'ListId':_0x360da0[_0x69a3('0xfe')],'VoiceQueueId':_0x360da0[_0x69a3('0x108')]||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xef')));break;case 0x13:if(_0x360da0[_0x69a3('0x122')]>=_0x1e79e4[_0x69a3('0x12c')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countmachineretry':_0x360da0[_0x69a3('0x122')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4['dialMachineRetryFrequency'],_0x69a3('0xe3'))[_0x69a3('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x360da0[_0x69a3('0xe4')],'ListId':_0x360da0['ListId'],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})['catch'](loggerCatch(_0x69a3('0x130')));break;case 0x14:if(_0x360da0[_0x69a3('0x192')]>=_0x1e79e4[_0x69a3('0x19e')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countagentrejectretry':_0x360da0[_0x69a3('0x192')]+=0x1,'scheduledat':moment()['add'](_0x1e79e4[_0x69a3('0x19f')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x360da0[_0x69a3('0xe4')],'ListId':_0x360da0[_0x69a3('0xfe')],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1a0')));break;default:return!![];}};Dialer[_0x69a3('0x85')][_0x69a3('0x111')]=function(_0x30763c,_0x521b87,_0x4af1e9){var _0x26351d=this;var _0x21e8e6=new History(_0x30763c);var _0xae7b7e=![];var _0x46c24e;var _0x128857;return new Promise(function(_0x23d6f1,_0x57134e){if(_[_0x69a3('0x3f')](_0x521b87)&&typeof _0x521b87!==_0x69a3('0x161')){return _0x57134e(msgResponse(_0x69a3('0x1a1'),_0x69a3('0x92'),_0x69a3('0x1a2')));}if(_['isUndefined'](_0x4af1e9)&&typeof _0x4af1e9!==_0x69a3('0x161')){return _0x57134e(msgResponse(_0x69a3('0x1a1'),_0x69a3('0x92'),'evt\x20is\x20undefine'));}hopperUtils[_0x69a3('0xdc')](_0x21e8e6,_0x4af1e9[_0x69a3('0x1a3')],_0x521b87)[_0x69a3('0x9e')](function(_0x22d81d){if(_0x22d81d[_0x69a3('0xde')]==0x1)_0xae7b7e=!![];switch(_0x4af1e9['reason']){case'0':_0x521b87[_0x69a3('0x1a4')]+=0x1;_0x21e8e6[_0x69a3('0x71')]=0x0;_0x21e8e6[_0x69a3('0xd5')]=_0x69a3('0x1a5');_0x21e8e6[_0x69a3('0x129')]+=0x1;_0x21e8e6[_0x69a3('0xd9')]+=0x1;ami[_0x69a3('0x40')](_0x69a3('0x1a6'),ut['buildObj'](_0x30763c,_0x69a3('0x1a7')));_0x46c24e=_0x521b87[_0x69a3('0x19b')];_0x128857=_0x521b87['callAdditionalPhoneAfterMin'];hopperUtils[_0x69a3('0xcd')](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x125')));if(_0x26351d[_0x69a3('0x191')](0x0,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x129')]>=_0x521b87[_0x69a3('0x19a')]){_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,'reason\x200\x20no\x20such\x20number....');}else{_0x26351d['stateGlobal'](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1a8'));}}break;case'3':_0x521b87['outboundNoAnswerCallsDay']+=0x1;_0x21e8e6[_0x69a3('0x71')]=0x3;_0x21e8e6[_0x69a3('0xd5')]='NoAnswer';_0x21e8e6[_0x69a3('0x128')]+=0x1;_0x21e8e6[_0x69a3('0xd9')]+=0x1;var _0x2482fa=ut[_0x69a3('0x1a9')](_0x30763c,_0x521b87);ami[_0x69a3('0x40')]('custom:agentnoanswer',_0x2482fa);_0x46c24e=_0x521b87['dialNoAnswerRetryFrequency'];_0x128857=_0x521b87[_0x69a3('0xdb')];hopperUtils[_0x69a3('0xcd')](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1aa')));if(_0x26351d[_0x69a3('0x191')](0x3,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x128')]>=_0x521b87['dialNoAnswerMaxRetry']){_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1ab'));}else{_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x521b87[_0x69a3('0x1ac')]+=0x1;_0x21e8e6[_0x69a3('0x71')]=0x5;_0x21e8e6[_0x69a3('0xd5')]='Busy';_0x21e8e6['countbusyretry']+=0x1;_0x21e8e6[_0x69a3('0xd9')]+=0x1;ami[_0x69a3('0x40')](_0x69a3('0x1ad'),ut[_0x69a3('0x124')](_0x30763c,'busy'));_0x46c24e=_0x521b87[_0x69a3('0x197')];_0x128857=_0x521b87[_0x69a3('0xdb')];hopperUtils['createHistory'](_0x21e8e6)['catch'](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x26351d[_0x69a3('0x191')](0x5,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x126')]>=_0x521b87[_0x69a3('0x196')]){_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1ae'));}else{_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1ae'));}}break;case'8':_0x521b87[_0x69a3('0x1af')]+=0x1;_0x21e8e6[_0x69a3('0x71')]=0x8;_0x21e8e6[_0x69a3('0xd5')]='Congestion';_0x21e8e6[_0x69a3('0x127')]+=0x1;_0x21e8e6[_0x69a3('0xd9')]+=0x1;_0x46c24e=_0x521b87[_0x69a3('0x199')];_0x128857=_0x521b87[_0x69a3('0xdb')];ami[_0x69a3('0x40')](_0x69a3('0x1b0'),ut[_0x69a3('0x124')](_0x30763c,_0x69a3('0x1b1')));hopperUtils[_0x69a3('0xcd')](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1b2')));if(_0x26351d[_0x69a3('0x191')](0x8,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x127')]>=_0x521b87[_0x69a3('0x198')]){_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b3'));}else{_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b3'));}}break;case'11':_0x521b87[_0x69a3('0x1b4')]+=0x1;_0x21e8e6[_0x69a3('0x71')]=0xb;_0x21e8e6['statedesc']=_0x69a3('0xec');_0x21e8e6[_0x69a3('0xed')]+=0x1;_0x21e8e6['countglobal']+=0x1;_0x46c24e=_0x521b87[_0x69a3('0xee')];_0x128857=_0x521b87['callAdditionalPhoneAfterMin'];hopperUtils[_0x69a3('0xcd')](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xf0')));if(_0x26351d[_0x69a3('0x191')](0xb,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0xed')]>=_0x521b87[_0x69a3('0x19d')]){_0x26351d['createStateFinal'](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b5'));}else{_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b5'));}}break;case'20':_0x521b87[_0x69a3('0x1b6')]+=0x1;_0x21e8e6[_0x69a3('0x71')]=0x14;_0x21e8e6[_0x69a3('0xd5')]=_0x69a3('0x1b7');_0x21e8e6['countagentrejectretry']+=0x1;_0x21e8e6[_0x69a3('0xd9')]+=0x1;_0x46c24e=_0x521b87[_0x69a3('0x19f')];_0x128857=_0x521b87[_0x69a3('0xdb')];ami[_0x69a3('0x40')]('custom:agentreject',ut['buildObj'](_0x30763c,'agentreject'));hopperUtils['createHistory'](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1b8')));if(_0x26351d[_0x69a3('0x191')](0x14,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x192')]>=_0x521b87[_0x69a3('0x19e')]){_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b9'));}else{_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b9'));}}break;default:_0x521b87['outboundUnknownCallsDay']+=0x1;_0x21e8e6['state']=0xc;_0x21e8e6[_0x69a3('0xd5')]=_0x4af1e9[_0x69a3('0x1a3')];_0x46c24e=_0x521b87[_0x69a3('0x19f')];_0x128857=_0x521b87[_0x69a3('0xdb')];hopperUtils[_0x69a3('0xcd')](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1ba')));if(_0x26351d[_0x69a3('0x191')](_0x4af1e9['reason'],_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x126')]+_0x21e8e6[_0x69a3('0x127')]+_0x21e8e6[_0x69a3('0x128')]+_0x21e8e6['countnosuchnumberretry']+_0x21e8e6[_0x69a3('0xd8')]+_0x21e8e6['countabandonedretry']+_0x21e8e6[_0x69a3('0x122')]+_0x21e8e6[_0x69a3('0x192')]>=_0x521b87[_0x69a3('0x133')]){_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x4af1e9[_0x69a3('0x1a3')]);}else{_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x4af1e9[_0x69a3('0x1a3')]);}}}})['then'](function(){if(_0xae7b7e){hopperUtils[_0x69a3('0xf1')](_0x21e8e6,_0x46c24e,_0x128857)[_0x69a3('0x9e')](function(){return _0x23d6f1(0x1);});}});});};Dialer[_0x69a3('0x85')][_0x69a3('0x12a')]=function(_0x209da7,_0x2e4fce,_0xb45b24,_0x92d572){var _0x412f18=new Final(_0x209da7);_0x412f18[_0x69a3('0x71')]=0xf;_0x412f18[_0x69a3('0xd5')]='Global';this[_0x69a3('0x12d')](_0x412f18,_0x2e4fce,_0xb45b24,_0x92d572);};Dialer[_0x69a3('0x85')]['createStateFinal']=function(_0x4a2b75,_0x3a7ea1,_0x1c9a55,_0x507b9a){hopperUtils[_0x69a3('0xcf')](_0x4a2b75)[_0x69a3('0x9e')](function(){return _0x3a7ea1(msgResponse(_0x69a3('0x1a1'),_0x69a3('0x110'),_0x507b9a));})[_0x69a3('0xa2')](function(){return _0x1c9a55(msgResponse('[moveContactManagedDialer][0]',_0x69a3('0x92'),_0x69a3('0x1bb')));});};Dialer[_0x69a3('0x85')][_0x69a3('0x7')]=function(_0x1b6a39){var _0x5b8b7e=_0x1b6a39[_0x69a3('0x1bc')]/0x64;var _0x6545b=_0x1b6a39[_0x69a3('0xd3')]/(_0x1b6a39[_0x69a3('0xd3')]+_0x1b6a39[_0x69a3('0xc8')]);var _0x280c41=Math['round'](_0x1b6a39[_0x69a3('0x1bd')]*(_0x1b6a39[_0x69a3('0x1be')]/0x64));var _0x1ee3cb=Math[_0x69a3('0x1bf')](_0x1b6a39['predictiveIntervalAvailable']*(_0x1b6a39[_0x69a3('0x1c0')]/0x64));var _0x5d1596=_0x1b6a39[_0x69a3('0x1c1')]+_0x1b6a39[_0x69a3('0x141')];var _0x393329=Math[_0x69a3('0x1c2')](_0x1b6a39[_0x69a3('0x5b')]*_0x1b6a39[_0x69a3('0x5f')]*_0x1b6a39[_0x69a3('0x1c3')]*_0x1b6a39['predictiveIntervalMultiplicativeFactor']);if(_[_0x69a3('0x3f')](_0x1b6a39[_0x69a3('0x64')])){if(!_[_0x69a3('0x3f')](_0x1b6a39[_0x69a3('0x25')])){_0x1b6a39[_0x69a3('0x25')]=undefined;loggerPredictive[_0x69a3('0x68')](_0x69a3('0x1c4'),_0x69a3('0x1c5'));}if(!_[_0x69a3('0x3f')](_0x1b6a39[_0x69a3('0x66')])){loggerPredictive[_0x69a3('0x68')](_0x69a3('0x1c4'),_0x69a3('0x1c6'));clearInterval(_0x1b6a39[_0x69a3('0x66')]);_0x1b6a39['handlePredictive']=undefined;}_0x1b6a39[_0x69a3('0x64')]=moment()['format'](_0x69a3('0xc7'));loggerPredictive[_0x69a3('0x4a')](_0x1b6a39[_0x69a3('0x47')],'collection\x20data\x20in\x20progressive\x20at',_0x1b6a39[_0x69a3('0x64')]);this[_0x69a3('0xb7')](_0x1b6a39,0x1);}else if(ifInterval(_0x1b6a39[_0x69a3('0x1c7')],_0x1b6a39[_0x69a3('0x64')])){this[_0x69a3('0xb7')](_0x1b6a39,0x1);loggerPredictiveCalls[_0x69a3('0x4a')]('[startMethodPredictive][StartProgressive][Loop]',_0x1b6a39[_0x69a3('0x64')],_0x1b6a39[_0x69a3('0x47')]);_0x1b6a39[_0x69a3('0x5b')]=0x0;_0x1b6a39[_0x69a3('0xd4')]=0x0;}else if(_0x5b8b7e<_0x6545b&&_0x1b6a39[_0x69a3('0x1c8')]===_0x69a3('0x1c9')){clearPredictiveAttributes(_0x1b6a39);loggerPredictive['info'](_0x69a3('0x1ca'),_0x69a3('0x1cb'),_0x6545b,_0x69a3('0x64'),_0x1b6a39[_0x69a3('0x47')]);}else if(_0x393329<_0x1b6a39[_0x69a3('0xd4')]&&_0x1b6a39[_0x69a3('0x1c8')]==='dropRate'){clearPredictiveAttributes(_0x1b6a39);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x1cc'),'Max\x20Drop\x20',_0x393329,_0x69a3('0x1cd'),_0x1b6a39[_0x69a3('0xd4')],_0x69a3('0x64'),_0x1b6a39[_0x69a3('0x47')]);}else if(!ifInterval(_0x1b6a39[_0x69a3('0x1c7')],_0x1b6a39[_0x69a3('0x64')])&&_[_0x69a3('0x3f')](_0x1b6a39['startPredictive'])&&!_[_0x69a3('0x3f')](_0x1b6a39[_0x69a3('0x64')])){_0x1b6a39['startPredictive']=moment()['format'](_0x69a3('0xc7'));loggerPredictive[_0x69a3('0x4a')](_0x1b6a39[_0x69a3('0x47')],_0x69a3('0x1ce'),_0x1b6a39[_0x69a3('0x25')]);hopperUtils[_0x69a3('0x1cf')](_0x1b6a39['dialPredictiveInterval'])[_0x69a3('0x9e')](this[_0x69a3('0x1d0')](_0x1b6a39))[_0x69a3('0x9e')](mergeDataErlangB(_0x1b6a39))[_0x69a3('0x9e')](this[_0x69a3('0x1d1')](_0x1b6a39))[_0x69a3('0xa2')](loggerCatchPredictive(_0x69a3('0x1d2'),_0x1b6a39));}else if(!ifInterval(_0x1b6a39[_0x69a3('0x1c7')],_0x1b6a39['startPredictive'])){_0x1b6a39['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x1b6a39[_0x69a3('0x25')]=moment()[_0x69a3('0x45')](_0x69a3('0xc7'));loggerPredictive['info'](_0x1b6a39[_0x69a3('0x47')],'recalculate\x20predictive\x20at',_0x1b6a39[_0x69a3('0x25')]);clearInterval(_0x1b6a39['handlePredictive']);_0x1b6a39[_0x69a3('0x66')]=undefined;hopperUtils[_0x69a3('0x1cf')](_0x1b6a39['dialPredictiveInterval'])['then'](this['getDataPredictive'](_0x1b6a39))[_0x69a3('0x9e')](mergeDataErlangB(_0x1b6a39))[_0x69a3('0x9e')](this[_0x69a3('0x1d1')](_0x1b6a39))[_0x69a3('0xa2')](loggerCatchPredictive(_0x69a3('0x1d3'),_0x1b6a39));}else if(_0x1b6a39[_0x69a3('0x1bd')]&&_0x5d1596<_0x1b6a39[_0x69a3('0x1bd')]-_0x1ee3cb){clearPredictiveAttributes(_0x1b6a39);loggerPredictive[_0x69a3('0x4a')](_0x1b6a39[_0x69a3('0x47')],_0x69a3('0x1d4'),_0x5d1596,')\x20are\x20less\x20than\x20threshold\x20(',_0x1b6a39[_0x69a3('0x1bd')],'-',_0x1ee3cb,'=',_0x1b6a39[_0x69a3('0x1bd')]-_0x1ee3cb,')');}else if(_0x1b6a39[_0x69a3('0x1bd')]&&_0x5d1596>_0x1b6a39[_0x69a3('0x1bd')]+_0x280c41){clearPredictiveAttributes(_0x1b6a39);loggerPredictive[_0x69a3('0x4a')](_0x1b6a39[_0x69a3('0x47')],_0x69a3('0x1d4'),_0x5d1596,_0x69a3('0x1d5'),_0x1b6a39[_0x69a3('0x1bd')],'+',_0x280c41,'=',_0x1b6a39['predictiveIntervalAvailable']+_0x280c41,')');}};Dialer[_0x69a3('0x85')]['getDataPredictive']=function(_0x2bf3b5){var _0x189af2=this;return function(_0x2c02e9){return new Promise(function(_0x48f03d,_0x38cbd9){_[_0x69a3('0x62')](_0x2bf3b5,_0x2c02e9[0x0]);if(checkGetDataPredictive(_0x2c02e9[0x0])){var _0x4a1084=_0x2bf3b5[_0x69a3('0x1bd')]=_0x2bf3b5['talking']+_0x2bf3b5[_0x69a3('0x1c1')];var _0x30d036=_0x2bf3b5[_0x69a3('0x1c7')]*0x3c;var _0x1ff964=_0x2c02e9[0x0][_0x69a3('0x55')]+_0x2c02e9[0x0][_0x69a3('0x52')];var _0x538e58=(_0x2c02e9[0x0][_0x69a3('0x1d6')]+_0x2c02e9[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x2c02e9[0x0][_0x69a3('0x50')])/_0x2c02e9[0x0][_0x69a3('0x4b')];_0x2bf3b5['predictiveIntervalHitRate']=_0x538e58>0x0?_0x538e58:0x1;switch(_0x2bf3b5[_0x69a3('0x1c8')]){case _0x69a3('0x1c9'):var _0x5f2ed9=_0x2bf3b5['dialPredictiveOptimizationPercentage']/0x64;return _0x189af2[_0x69a3('0x1d7')](_0x4a1084,_0x30d036,_0x1ff964,_0x538e58,_0x5f2ed9)[_0x69a3('0x9e')](function(_0x1338e2){return _0x48f03d(_0x1338e2);});case _0x69a3('0x1d8'):var _0x747997=_0x2bf3b5[_0x69a3('0x1bc')]/0x64;return _0x189af2[_0x69a3('0x1d9')](_0x4a1084,_0x30d036,_0x1ff964,_0x538e58,_0x747997)[_0x69a3('0x9e')](function(_0x3290ea){return _0x48f03d(_0x3290ea);});default:return _0x38cbd9(msgResponse(_0x69a3('0x1da'),'Failure',_0x69a3('0x1db')));}}else{return _0x38cbd9(msgResponse(_0x69a3('0x1da'),_0x69a3('0x92'),_0x69a3('0x1dc')));}});};};Dialer[_0x69a3('0x85')][_0x69a3('0x1dd')]=function(_0x810793){var _0x15dd3a=this;return function(_0x306539){return new Promise(function(_0x25401d,_0x3fd5c5){_['merge'](_0x810793,_0x306539[0x0]);if(checkGetDataPredictive(_0x306539[0x0])){loggerPredictive[_0x69a3('0x4a')](JSON[_0x69a3('0x76')](_0x306539[0x0]));if(_0x810793[_0x69a3('0x1c8')]===_0x69a3('0x1c9')){return _0x15dd3a[_0x69a3('0x157')](_0x810793['id'])['then'](function(_0x785cbe){var _0x49b155=_0x810793[_0x69a3('0x1de')]-_0x785cbe[0x0][_0x69a3('0x1df')];var _0x5356f6=_0x810793[_0x69a3('0x1c7')]*0x3c;var _0x35042e=_0x306539[0x0]['predictiveIntervalAvgTalktime']+_0x306539[0x0][_0x69a3('0x52')];var _0x5f3d94=(_0x306539[0x0][_0x69a3('0x1d6')]+_0x306539[0x0][_0x69a3('0x4e')]+_0x306539[0x0][_0x69a3('0x50')])/_0x306539[0x0][_0x69a3('0x4b')];var _0x18a6e0=_0x810793[_0x69a3('0x1bc')]/0x64;_0x810793[_0x69a3('0x1e0')]=_0x785cbe[0x0][_0x69a3('0x1df')]||0x0;_0x810793[_0x69a3('0x1c3')]=_0x5f3d94>0x0?_0x5f3d94:0x1;return _0x15dd3a[_0x69a3('0x1d7')](_0x49b155,_0x5356f6,_0x35042e,_0x5f3d94,_0x18a6e0);})[_0x69a3('0x9e')](function(_0x48b498){return _0x25401d(_0x48b498);})[_0x69a3('0xa2')](function(_0x2ca0c5){return _0x3fd5c5(msgResponse(_0x69a3('0x1e1'),'Failure',JSON[_0x69a3('0x76')](_0x2ca0c5)));});}if(_0x810793[_0x69a3('0x1c8')]==='agentBusyFactor'){return _0x15dd3a['getVoiceQueueRtPauses'](_0x810793['id'])[_0x69a3('0x9e')](function(_0x22082b){var _0x59fb4e=_0x810793[_0x69a3('0x1de')]-_0x22082b[0x0][_0x69a3('0x1df')];var _0x59eb72=_0x810793[_0x69a3('0x1c7')]*0x3c;var _0x175f85=_0x306539[0x0][_0x69a3('0x55')]+_0x306539[0x0][_0x69a3('0x52')];var _0x164fd0=(_0x306539[0x0]['predictiveIntervalAnsweredCalls']+_0x306539[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x306539[0x0][_0x69a3('0x50')])/_0x306539[0x0][_0x69a3('0x4b')];var _0x192ef5=_0x810793['dialPredictiveOptimizationPercentage']/0x64;_0x810793[_0x69a3('0x1e0')]=_0x22082b[0x0][_0x69a3('0x1df')]||0x0;_0x810793[_0x69a3('0x1c3')]=_0x164fd0>0x0?_0x164fd0:0x1;return _0x15dd3a['busyFactor'](_0x59fb4e,_0x59eb72,_0x175f85,_0x164fd0,_0x192ef5);})[_0x69a3('0x9e')](function(_0x5d03c0){return _0x25401d(_0x5d03c0);})[_0x69a3('0xa2')](function(_0x3c7d4b){return _0x3fd5c5(msgResponse(_0x69a3('0x1e1'),_0x69a3('0x92'),JSON[_0x69a3('0x76')](_0x3c7d4b)));});}}else{return _0x3fd5c5(msgResponse(_0x69a3('0x1da'),_0x69a3('0x92'),_0x69a3('0x1dc')));}});};};Dialer[_0x69a3('0x85')][_0x69a3('0x1d1')]=function(_0x125753){var _0x4049f7=this;return function(){var _0x4cd026=0x0;var _0x439c99=Math[_0x69a3('0x1c2')](_0x125753[_0x69a3('0x5d')]*0x3e8);if(_0x439c99>0x0){_0x439c99=_0x439c99<0x64?0x64:_0x439c99;loggerPredictive[_0x69a3('0x4a')](_0x125753[_0x69a3('0x47')],_0x69a3('0x1e2'),_0x439c99,_0x69a3('0x1e3'));_0x125753[_0x69a3('0x66')]=setInterval(function(){_0x4049f7[_0x69a3('0x66')](_0x125753);loggerPredictiveCalls[_0x69a3('0x4a')](_0x69a3('0x1e4'),_0x4cd026+=0x1);},_0x439c99);}else{loggerPredictive[_0x69a3('0x4a')](_0x125753[_0x69a3('0x47')],_0x69a3('0x1e5'));}};};Dialer[_0x69a3('0x85')][_0x69a3('0x1e6')]=function(_0x1c97fc,_0x1f9b79){var _0x21e23b=this;return function(_0x192dee){if(_[_0x69a3('0x7c')](_0x192dee)){if(_[_0x69a3('0xf7')](_0x1f9b79['UserId'])||!_0x1f9b79[_0x69a3('0x1e7')]){if(_0x1c97fc[_0x69a3('0xb6')]===_0x69a3('0xb9')){_0x1c97fc[_0x69a3('0x74')]=_[_0x69a3('0x3f')](_0x1c97fc[_0x69a3('0x74')])?!![]:_0x1c97fc['queueStatusComplete'];var _0x54e784=uuid['v4']();_0x21e23b[_0x69a3('0x22')][_0x54e784]=new Action(_0x1c97fc,_0x1f9b79,_0x54e784);loggerBooked[_0x69a3('0x4a')](_0x69a3('0x1e8'),_0x54e784,_0x69a3('0x1e9'),JSON[_0x69a3('0x76')](_0x1c97fc['queueStatusComplete']),'Queue:\x20',_0x1c97fc[_0x69a3('0x47')]);if(_0x1c97fc['queueStatusComplete']){_0x1c97fc[_0x69a3('0x74')]=![];_0x21e23b['queueBooked'][_0x21e23b['actions'][_0x54e784][_0x69a3('0xc3')]]=[];ami[_0x69a3('0x9b')]({'actionid':_0x54e784,'action':'queuestatus','queue':_0x1c97fc[_0x69a3('0x47')]})[_0x69a3('0xa2')](function(){_0x21e23b[_0x69a3('0xd1')](_0x1c97fc);hopperUtils[_0x69a3('0xe1')]({'active':![],'ContactId':_0x21e23b[_0x69a3('0x22')][_0x54e784][_0x69a3('0xe4')],'ListId':_0x21e23b[_0x69a3('0x22')][_0x54e784][_0x69a3('0xfe')],'VoiceQueueId':_0x21e23b['actions'][_0x54e784]['VoiceQueueId']||undefined,'CampaignId':_0x21e23b['actions'][_0x54e784][_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1ea')));delete _0x21e23b['actions'][_0x54e784];});}else{loggerBooked[_0x69a3('0x4a')](_0x69a3('0x1eb'),JSON[_0x69a3('0x76')](_0x1c97fc['queueStatusComplete']),_0x69a3('0x1ec'),_0x1c97fc[_0x69a3('0x47')]);_0x21e23b[_0x69a3('0xd1')](_0x1c97fc);hopperUtils['rescheduleContact']({'active':![],'ContactId':_0x21e23b[_0x69a3('0x22')][_0x54e784][_0x69a3('0xe4')],'ListId':_0x21e23b[_0x69a3('0x22')][_0x54e784][_0x69a3('0xfe')],'VoiceQueueId':_0x21e23b[_0x69a3('0x22')][_0x54e784][_0x69a3('0x108')]||undefined,'CampaignId':_0x21e23b['actions'][_0x54e784]['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x21e23b[_0x69a3('0x22')][_0x54e784];}}else{return _0x21e23b[_0x69a3('0x160')](_0x1c97fc,_0x1f9b79);}}else{if(utils['getSeconds'](undefined,_0x1f9b79[_0x69a3('0x1ed')])<_0x1c97fc[_0x69a3('0x1ee')]*0x3c){if(_0x1f9b79[_0x69a3('0x14d')]&&!_0x1f9b79[_0x69a3('0x14d')][_0x69a3('0x1ef')]){_0x21e23b[_0x69a3('0x1c')]['run'](_0x1f9b79['id'])[_0x69a3('0x1a')](function(){_0x21e23b[_0x69a3('0xd1')](_0x1c97fc);});}else{hopperUtils[_0x69a3('0x1f0')]({'active':![]},_0x1f9b79['id'],0x1)[_0x69a3('0x1a')](function(){_0x21e23b[_0x69a3('0xd1')](_0x1c97fc);});}}else{_0x1c97fc['outboundReCallsDay']+=0x1;_0x21e23b[_0x69a3('0xd1')](_0x1c97fc);if(_0x1c97fc[_0x69a3('0x1f1')]){hopperUtils['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1f9b79[_0x69a3('0xe4')],'ListId':_0x1f9b79[_0x69a3('0xfe')],'VoiceQueueId':_0x1f9b79[_0x69a3('0x108')]||undefined,'CampaignId':_0x1f9b79[_0x69a3('0xe5')]||undefined})['catch'](loggerCatch(_0x69a3('0x1f2')));hopperUtils[_0x69a3('0xcd')](createObjHistory(_0x1c97fc,_0x1f9b79,utils[_0x69a3('0x6e')][_0x69a3('0x1f3')],0x17,_0x69a3('0x1f4')))[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1f5')));}else{_0x21e23b[_0x69a3('0x11e')](createObjHistory(_0x1c97fc,_0x1f9b79,utils['CAMPAIGN_STATUS'][_0x69a3('0x1f6')],0x16,_0x69a3('0x1f7')),_0x69a3('0x1f8'),_0x69a3('0x1f9'));}}}}else{_0x1c97fc['outboundBlacklistCallsDay']+=0x1;_0x21e23b[_0x69a3('0x11e')](createObjHistory(_0x1c97fc,_0x1f9b79,utils[_0x69a3('0x6e')]['BLACKLIST'],0xd,_0x69a3('0x1fa')),_0x69a3('0x1fb'),'[Originate][MoveBlacklist]');throw _0x69a3('0x1fc');}};};Dialer['prototype'][_0x69a3('0x1fd')]=function(_0x204653){var _0x416738=this;var _0x51a158=_0x204653[_0x69a3('0x1fe')]-_0x204653[_0x69a3('0x83')];emitCampaignSummary(_0x204653);if(_0x51a158>0x0&&_0x204653[_0x69a3('0x6b')]==0x0){if(_0x51a158>this[_0x69a3('0x20')]){_0x51a158=this['maxNumberOriginate'];}_0x204653[_0x69a3('0x6b')]=0x1;hopperUtils['getContactDialerIvr'](_0x204653,_0x51a158)[_0x69a3('0x9e')](function(_0x13b03b){_0x204653[_0x69a3('0x6b')]=0x0;if(_0x13b03b){if(!utils['checkContactEmpty'](_0x13b03b)){_0x204653['message']=utils[_0x69a3('0x6e')][_0x69a3('0x1ff')];logger[_0x69a3('0x4a')](_0x69a3('0x200')+_0x204653[_0x69a3('0x47')]);}else{_0x204653[_0x69a3('0x83')]+=_0x13b03b[_0x69a3('0x101')];_0x204653[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')]['RUNNING'];for(var _0x250da9=0x0;_0x250da9<_0x13b03b[_0x69a3('0x101')];_0x250da9+=0x1){_0x204653[_0x69a3('0x201')]+=0x1;if(_[_0x69a3('0xf7')](_0x13b03b[_0x250da9])||_[_0x69a3('0xf7')](_0x13b03b[_0x250da9]['Contact'])||_['isNil'](_0x13b03b[_0x250da9][_0x69a3('0x164')])){_0x416738['emptyContact']('[actionOriginate]\x20',_0x204653,_0x13b03b[_0x250da9]);}else{hopperUtils[_0x69a3('0x202')](_[_0x69a3('0x77')](_0x13b03b[_0x250da9],['CampaignId','phone']))[_0x69a3('0x9e')](_0x416738['checkContactBlack'](_0x204653,_0x13b03b[_0x250da9]))[_0x69a3('0xa2')](_0x416738['loggerHandler'](_0x69a3('0x203'),_0x204653));}}}}})['catch'](loggerGetContactDialer(_0x69a3('0x204'),_0x204653,_0x51a158));}};Dialer['prototype'][_0x69a3('0xb7')]=function(_0x20a21d,_0x4d4b5f){var _0x5325de=this;var _0x540da7=[];if(_0x4d4b5f<0x1||_0x20a21d[_0x69a3('0xb6')]===_0x69a3('0xb9')){_0x4d4b5f=0x1;}var _0x31a35c=Math[_0x69a3('0x1c2')](_0x20a21d[_0x69a3('0x1c1')]*_0x4d4b5f)-_0x20a21d[_0x69a3('0x83')];if(_0x20a21d[_0x69a3('0x205')]>0x0){var _0x3068de=_0x20a21d['dialLimitQueue']-_0x20a21d[_0x69a3('0x83')]-_0x20a21d[_0x69a3('0x141')]-_0x20a21d[_0x69a3('0x206')];if(_0x31a35c>_0x3068de){_0x31a35c=_0x3068de;}}if(_0x31a35c>0x0&&_0x20a21d['temp']==0x0){if(_0x20a21d[_0x69a3('0xb6')]===_0x69a3('0xb9')){_0x31a35c=0x1;}if(_0x31a35c>this[_0x69a3('0x20')]){_0x31a35c=this[_0x69a3('0x20')];}for(var _0x42c686 in this[_0x69a3('0x1f')]){if(typeof this['agents'][_0x42c686]!=='undefined'){if(this[_0x69a3('0x1f')][_0x42c686]['state']==='not_inuse'&&this['agents'][_0x42c686][_0x69a3('0x89')]==='reachable'){_0x540da7[_0x69a3('0x9a')](this[_0x69a3('0x1f')][_0x42c686]['id']);}}}_0x20a21d[_0x69a3('0x6b')]=0x1;hopperUtils['getContactDialer'](_0x20a21d,_0x540da7,_0x31a35c)[_0x69a3('0x9e')](function(_0x3f2276){_0x20a21d[_0x69a3('0x6b')]=0x0;if(_0x3f2276){if(!utils[_0x69a3('0x207')](_0x3f2276)){hopperUtils[_0x69a3('0x208')](_0x20a21d)[_0x69a3('0x9e')](sendMessageReschedule(_0x20a21d))[_0x69a3('0xa2')](loggerCatch('[countReScheduled]\x20'));}else{_0x20a21d[_0x69a3('0x83')]+=_0x3f2276[_0x69a3('0x101')];_0x20a21d[_0x69a3('0x6d')]=_0x20a21d['dialMethod']===_0x69a3('0xb9')?utils['CAMPAIGN_STATUS'][_0x69a3('0x142')]:utils[_0x69a3('0x6e')][_0x69a3('0x209')];for(var _0x46259d=0x0;_0x46259d<_0x3f2276[_0x69a3('0x101')];_0x46259d+=0x1){if(_[_0x69a3('0xf7')](_0x3f2276[_0x46259d])||_['isNil'](_0x3f2276[_0x46259d][_0x69a3('0x17a')])||_[_0x69a3('0xf7')](_0x3f2276[_0x46259d]['phone'])){_0x5325de[_0x69a3('0x15a')](_0x69a3('0x20a'),_0x20a21d,_0x3f2276[_0x46259d]);}else{hopperUtils['checkIsBlackList'](_[_0x69a3('0x77')](_0x3f2276[_0x46259d],['VoiceQueueId','phone']))[_0x69a3('0x9e')](_0x5325de[_0x69a3('0x1e6')](_0x20a21d,_0x3f2276[_0x46259d]))[_0x69a3('0xa2')](_0x5325de[_0x69a3('0x20b')](_0x69a3('0x20a'),_0x20a21d));}}}}})[_0x69a3('0xa2')](loggerGetContactDialer(_0x69a3('0x20c'),_0x20a21d,_0x31a35c));}};Dialer['prototype'][_0x69a3('0x66')]=function(_0x209801){if(_0x209801[_0x69a3('0x205')]>0x0){var _0x46063f=_0x209801[_0x69a3('0x205')]-_0x209801[_0x69a3('0x83')]-_0x209801[_0x69a3('0x141')];if(_0x46063f>0x0&&_0x209801[_0x69a3('0x6b')]==0x0){this['tryOriginatePredictive'](_0x209801);}else{loggerPredictiveCalls[_0x69a3('0x4a')](_0x69a3('0x20d'));}}else{this['tryOriginatePredictive'](_0x209801);}};Dialer[_0x69a3('0x85')][_0x69a3('0x20e')]=function(_0x28bbc9){var _0x1f6f95=this;var _0x2fc9a7=[];_0x28bbc9[_0x69a3('0x83')]+=0x1;for(var _0x11937b in this[_0x69a3('0x1f')]){if(typeof this[_0x69a3('0x1f')][_0x11937b]!==_0x69a3('0xad')){if(this[_0x69a3('0x1f')][_0x11937b][_0x69a3('0x71')]==='not_inuse'&&this['agents'][_0x11937b][_0x69a3('0x89')]===_0x69a3('0x8a')){_0x2fc9a7[_0x69a3('0x9a')](this[_0x69a3('0x1f')][_0x11937b]['id']);}}}_0x28bbc9['temp']=0x1;return this[_0x69a3('0x20f')](_0x28bbc9['id'],_0x2fc9a7,0x1,_0x28bbc9[_0x69a3('0x210')],_0x28bbc9)[_0x69a3('0x9e')](function(_0xcac7ff){_0x28bbc9[_0x69a3('0x6b')]=0x1;if(_0xcac7ff){if(!utils[_0x69a3('0x207')](_0xcac7ff)){utils[_0x69a3('0x6a')](_0x28bbc9,0x1,0x0);return hopperUtils['countReScheduled'](_0x28bbc9)[_0x69a3('0x9e')](sendMessageReschedule(_0x28bbc9))[_0x69a3('0xa2')](loggerCatch('[countReScheduled]\x20'));}else{_0x28bbc9[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x209')];if(_[_0x69a3('0xf7')](_0xcac7ff[0x0])||_[_0x69a3('0xf7')](_0xcac7ff[0x0]['Contact'])||_['isNil'](_0xcac7ff[0x0]['phone'])){_0x1f6f95[_0x69a3('0x15a')](_0x69a3('0x20a'),_0x28bbc9,_0xcac7ff[0x0]);}else{return hopperUtils[_0x69a3('0x211')](_[_0x69a3('0x77')](_0xcac7ff[0x0],[_0x69a3('0x108'),'phone']))[_0x69a3('0x9e')](_0x1f6f95['checkContactBlack'](_0x28bbc9,_0xcac7ff[0x0]))[_0x69a3('0xa2')](_0x1f6f95[_0x69a3('0x20b')](_0x69a3('0x212'),_0x28bbc9));}}}})[_0x69a3('0xa2')](loggerGetContactDialer(_0x69a3('0x213'),_0x28bbc9,0x1));};Dialer[_0x69a3('0x85')]['abandonmentRate']=function(_0x1cf7f6,_0x194da3,_0x54ecaa,_0x2ecc54,_0xf5ca3b,_0x5c85a4){loggerPredictive['info'](_0x69a3('0x214'));loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x215'),_0x1cf7f6);loggerPredictive['info'](_0x69a3('0x216'),_0x194da3);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',_0x54ecaa);loggerPredictive['info']('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2ecc54);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x217'),_0xf5ca3b);loggerPredictive['info']('---------------------------');return new Promise(function(_0x151786,_0x5c4403){if(_0x1cf7f6<=0x0||isNaN(_0x1cf7f6)){return _0x5c4403(msgResponse('[abandonmentRate]',_0x69a3('0x18f'),_0x69a3('0x218')+_0x1cf7f6));}if(_0x54ecaa<=0x0||isNaN(_0x54ecaa)){return _0x5c4403(msgResponse(_0x69a3('0x219'),_0x69a3('0x18f'),'Ts\x20=\x20'+_0x54ecaa));}if(_0x2ecc54<=0x0||isNaN(_0x2ecc54)){return _0x5c4403(msgResponse('[abandonmentRate]',_0x69a3('0x18f'),_0x69a3('0x21a')+_0x2ecc54));}if(_0x194da3<=0x0||isNaN(_0x194da3)){return _0x5c4403(msgResponse(_0x69a3('0x219'),_0x69a3('0x18f'),_0x69a3('0x21b')+_0x194da3));}if(_0xf5ca3b<=0x0||isNaN(_0xf5ca3b)){return _0x5c4403(msgResponse(_0x69a3('0x219'),'Error',_0x69a3('0x21c')+_0xf5ca3b));}_0x5c85a4=_0x5c85a4||0x0;var _0x213530=0x1/_0x54ecaa;var _0x23d4ca=0x0;var _0x5eae6b=0x0;var _0x33150b=0x0;var _0x1ef0a3=0x0;for(var _0x108672=0x0;_0x33150b<_0xf5ca3b;_0x108672+=0x1){_0x5eae6b=_0x108672/_0x194da3;_0x23d4ca=(_0x2ecc54*_0x5eae6b+_0x5c85a4)/_0x213530;_0x33150b=utils[_0x69a3('0x21d')](_0x23d4ca,_0x1cf7f6);_0x1ef0a3=_0x23d4ca/_0x1cf7f6*(0x1-utils[_0x69a3('0x21d')](_0x23d4ca,_0x1cf7f6));}return _0x151786({'erlangCalls':_0x108672,'erlangCallToSecond':_0x194da3/_0x108672,'erlangAbandonmentRate':_0x33150b,'erlangBusyFactor':_0x1ef0a3});});};Dialer[_0x69a3('0x85')][_0x69a3('0x1d9')]=function(_0x514fc9,_0x12eca7,_0x36a713,_0x5d9045,_0x19d6f6,_0xbe9de4){loggerPredictive['info'](_0x69a3('0x21e'));loggerPredictive['info'](_0x69a3('0x215'),_0x514fc9);loggerPredictive['info'](_0x69a3('0x216'),_0x12eca7);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x21f'),_0x36a713);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x220'),_0x5d9045);loggerPredictive['info']('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x19d6f6);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x54'));return new Promise(function(_0x270e24,_0x15c78b){if(_0x514fc9<=0x0||isNaN(_0x514fc9)){return _0x15c78b(msgResponse(_0x69a3('0x221'),_0x69a3('0x18f'),_0x69a3('0x218')+_0x514fc9));}if(_0x36a713<=0x0||isNaN(_0x36a713)){return _0x15c78b(msgResponse('[busyFactor]',_0x69a3('0x18f'),_0x69a3('0x222')+_0x36a713));}if(_0x5d9045<=0x0||isNaN(_0x5d9045)){return _0x15c78b(msgResponse('[busyFactor]',_0x69a3('0x18f'),_0x69a3('0x21a')+_0x5d9045));}if(_0x12eca7<=0x0||isNaN(_0x12eca7)){return _0x15c78b(msgResponse(_0x69a3('0x221'),'Error',_0x69a3('0x21b')+_0x12eca7));}if(_0x19d6f6<=0x0||isNaN(_0x19d6f6)){return _0x15c78b(msgResponse('[busyFactor]',_0x69a3('0x18f'),_0x69a3('0x223')+_0x19d6f6));}_0xbe9de4=_0xbe9de4||0x0;var _0x19364c=0x1/_0x36a713;var _0x82a39f=0x0;var _0x5cdb34=0x0;var _0x5ad7eb=0x0;var _0x77c2fa=0x0;for(var _0x1ef70e=0x0;_0x77c2fa<_0x19d6f6;_0x1ef70e+=0x1){_0x5cdb34=_0x1ef70e/_0x12eca7;_0x82a39f=(_0x5d9045*_0x5cdb34+_0xbe9de4)/_0x19364c;_0x5ad7eb=utils[_0x69a3('0x21d')](_0x82a39f,_0x514fc9);_0x77c2fa=_0x82a39f/_0x514fc9*(0x1-utils[_0x69a3('0x21d')](_0x82a39f,_0x514fc9));}return _0x270e24({'erlangCalls':_0x1ef70e,'erlangCallToSecond':_0x12eca7/_0x1ef70e,'erlangAbandonmentRate':_0x5ad7eb,'erlangBusyFactor':_0x77c2fa});});};module[_0x69a3('0x224')]=Dialer;
\ No newline at end of file
index 82b59ef..97e81c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd192=['countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','voiceQueue','dialCutDigit','substring','getQueue','exports','lodash','moment','isNil','string','name','phone','Contact','firstName','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry'];(function(_0x3ce1e5,_0xe26af3){var _0x2740e6=function(_0x30e1bc){while(--_0x30e1bc){_0x3ce1e5['push'](_0x3ce1e5['shift']());}};_0x2740e6(++_0xe26af3);}(_0xd192,0x1ce));var _0x2d19=function(_0x2faae8,_0x1a4b74){_0x2faae8=_0x2faae8-0x0;var _0x18b35f=_0xd192[_0x2faae8];return _0x18b35f;};'use strict';var util=require('util');var _=require(_0x2d19('0x0'));var moment=require(_0x2d19('0x1'));function checkNameSurname(_0x1f1077,_0x1ea705,_0x162891){var _0x355ecb='';if(!_[_0x2d19('0x2')](_0x1ea705)&&_0x2d19('0x3')===typeof _0x1ea705){_0x355ecb+=_0x1ea705;}if(!_[_0x2d19('0x2')](_0x162891)&&_0x2d19('0x3')===typeof _0x162891){_0x355ecb+='\x20'+_0x162891;}if(_0x355ecb!==''){return _0x355ecb;}return _0x1f1077;}function Action(_0x2db803,_0x28d9ac,_0x4bd8a7){this['voiceQueue']=_0x2db803;this['uniqueid']=_0x4bd8a7||undefined;this[_0x2d19('0x4')]=checkNameSurname(_0x28d9ac['Contact'][_0x2d19('0x5')],_0x28d9ac[_0x2d19('0x6')][_0x2d19('0x7')],_0x28d9ac[_0x2d19('0x6')][_0x2d19('0x8')]);this[_0x2d19('0x9')]=_0x28d9ac[_0x2d19('0x5')];this[_0x2d19('0xa')]=_0x2db803[_0x2d19('0x4')];this[_0x2d19('0xb')]=_0x28d9ac[_0x2d19('0xb')]||![];this[_0x2d19('0xc')]=_0x2db803[_0x2d19('0xc')];this[_0x2d19('0xd')]=_0x2db803['dialQueueTimeout']||0x3;this[_0x2d19('0xe')]=_0x28d9ac['scheduledat'];this['countbusyretry']=_0x28d9ac[_0x2d19('0xf')];this[_0x2d19('0x10')]=_0x28d9ac[_0x2d19('0x10')];this['countnoanswerretry']=_0x28d9ac[_0x2d19('0x11')];this[_0x2d19('0x12')]=_0x28d9ac[_0x2d19('0x12')];this['countdropretry']=_0x28d9ac[_0x2d19('0x13')];this[_0x2d19('0x14')]=_0x28d9ac['countabandonedretry'];this['countmachineretry']=_0x28d9ac[_0x2d19('0x15')];this[_0x2d19('0x16')]=_0x28d9ac[_0x2d19('0x16')];this[_0x2d19('0x17')]=_0x28d9ac['ContactId'];this['ListId']=_0x28d9ac[_0x2d19('0x18')];this[_0x2d19('0x19')]=_0x28d9ac[_0x2d19('0x19')];this[_0x2d19('0x1a')]=_0x28d9ac[_0x2d19('0x1a')];this[_0x2d19('0x1b')]=_0x28d9ac['CampaignId'];this['idHopper']=_0x28d9ac['id'];this['ContactFirstName']=_0x28d9ac[_0x2d19('0x6')][_0x2d19('0x7')]||'';this[_0x2d19('0x1c')]=moment()[_0x2d19('0x1d')](_0x2d19('0x1e'));this[_0x2d19('0x1f')]=_0x28d9ac[_0x2d19('0x1f')];this[_0x2d19('0x20')]=_0x28d9ac[_0x2d19('0x20')];this[_0x2d19('0x21')]=_0x28d9ac[_0x2d19('0x21')];this[_0x2d19('0x22')]=_0x28d9ac['recallme'];this[_0x2d19('0x23')]='';this[_0x2d19('0x24')]='';}Action[_0x2d19('0x25')]['getCaller']=function(){return util['format'](_0x2d19('0x26'),this['name'],this[_0x2d19('0x27')][_0x2d19('0x28')]>0x0?this['number'][_0x2d19('0x29')](this['voiceQueue'][_0x2d19('0x28')]):this['number']);};Action[_0x2d19('0x25')][_0x2d19('0x2a')]=function(){return this[_0x2d19('0xa')];};module[_0x2d19('0x2b')]=Action;
\ No newline at end of file
+var _0x51b0=['type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','dialCutDigit','substring','exports','util','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','phone','firstName','number','queue','active'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x51b0,0x9a));var _0x051b=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x51b0[_0x1ac595];return _0x455fff;};'use strict';var util=require(_0x051b('0x0'));var _=require(_0x051b('0x1'));var moment=require(_0x051b('0x2'));function checkNameSurname(_0x2781bd,_0x24e35d,_0x118c89){var _0x12c0fe='';if(!_[_0x051b('0x3')](_0x24e35d)&&'string'===typeof _0x24e35d){_0x12c0fe+=_0x24e35d;}if(!_[_0x051b('0x3')](_0x118c89)&&_0x051b('0x4')===typeof _0x118c89){_0x12c0fe+='\x20'+_0x118c89;}if(_0x12c0fe!==''){return _0x12c0fe;}return _0x2781bd;}function Action(_0x542cb2,_0x447be4,_0x5dcc52){this[_0x051b('0x5')]=_0x542cb2;this[_0x051b('0x6')]=_0x5dcc52||undefined;this[_0x051b('0x7')]=checkNameSurname(_0x447be4[_0x051b('0x8')][_0x051b('0x9')],_0x447be4['Contact'][_0x051b('0xa')],_0x447be4[_0x051b('0x8')]['lastName']);this[_0x051b('0xb')]=_0x447be4[_0x051b('0x9')];this[_0x051b('0xc')]=_0x542cb2[_0x051b('0x7')];this[_0x051b('0xd')]=_0x447be4[_0x051b('0xd')]||![];this[_0x051b('0xe')]=_0x542cb2[_0x051b('0xe')];this[_0x051b('0xf')]=_0x542cb2[_0x051b('0xf')]||0x3;this[_0x051b('0x10')]=_0x447be4[_0x051b('0x10')];this[_0x051b('0x11')]=_0x447be4['countbusyretry'];this[_0x051b('0x12')]=_0x447be4[_0x051b('0x12')];this[_0x051b('0x13')]=_0x447be4[_0x051b('0x13')];this[_0x051b('0x14')]=_0x447be4[_0x051b('0x14')];this[_0x051b('0x15')]=_0x447be4['countdropretry'];this[_0x051b('0x16')]=_0x447be4[_0x051b('0x16')];this[_0x051b('0x17')]=_0x447be4[_0x051b('0x17')];this['countagentrejectretry']=_0x447be4['countagentrejectretry'];this['ContactId']=_0x447be4[_0x051b('0x18')];this[_0x051b('0x19')]=_0x447be4['ListId'];this[_0x051b('0x1a')]=_0x447be4[_0x051b('0x1a')];this[_0x051b('0x1b')]=_0x447be4[_0x051b('0x1b')];this[_0x051b('0x1c')]=_0x447be4['CampaignId'];this['idHopper']=_0x447be4['id'];this['ContactFirstName']=_0x447be4[_0x051b('0x8')][_0x051b('0xa')]||'';this['starttime']=moment()[_0x051b('0x1d')](_0x051b('0x1e'));this['callback']=_0x447be4[_0x051b('0x1f')];this[_0x051b('0x20')]=_0x447be4[_0x051b('0x20')];this[_0x051b('0x21')]=_0x447be4['callbackat'];this[_0x051b('0x22')]=_0x447be4[_0x051b('0x22')];this[_0x051b('0x23')]='';this[_0x051b('0x24')]='';}Action[_0x051b('0x25')]['getCaller']=function(){return util['format'](_0x051b('0x26'),this[_0x051b('0x7')],this[_0x051b('0x5')][_0x051b('0x27')]>0x0?this['number'][_0x051b('0x28')](this[_0x051b('0x5')]['dialCutDigit']):this[_0x051b('0xb')]);};Action[_0x051b('0x25')]['getQueue']=function(){return this[_0x051b('0xc')];};module[_0x051b('0x29')]=Action;
\ No newline at end of file
index 5e71222..9b8e435 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98cc=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','exports','moment','../utils','state','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','number','starttime','responsetime','format','ringtime','holdtime','getSeconds','answertime','talktime','endtime','membername','callback','callbackuniqueid'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0x98cc,0x1a0));var _0xc98c=function(_0x48b724,_0x5a8e26){_0x48b724=_0x48b724-0x0;var _0x4d38b3=_0x98cc[_0x48b724];return _0x4d38b3;};'use strict';var moment=require(_0xc98c('0x0'));var utils=require(_0xc98c('0x1'));function AgentComplete(_0x3b2895,_0x5e268b){this[_0xc98c('0x2')]=0x4;this['statedesc']=_0xc98c('0x3');this[_0xc98c('0x4')]=_0x3b2895[_0xc98c('0x4')];this[_0xc98c('0x5')]=_0x3b2895[_0xc98c('0x5')];this[_0xc98c('0x6')]=_0x3b2895[_0xc98c('0x5')]===_0xc98c('0x7')?_0xc98c('0x8'):_0x3b2895[_0xc98c('0x5')];this[_0xc98c('0x9')]=_0x3b2895[_0xc98c('0x9')];this[_0xc98c('0xa')]=_0x3b2895[_0xc98c('0xa')];this[_0xc98c('0xb')]=_0x3b2895[_0xc98c('0xb')];this[_0xc98c('0xc')]=_0x3b2895[_0xc98c('0x9')]+_0x3b2895[_0xc98c('0xa')]+_0x3b2895[_0xc98c('0xb')]+_0x3b2895[_0xc98c('0xd')]+_0x3b2895[_0xc98c('0xe')]+_0x3b2895[_0xc98c('0xf')]+_0x3b2895[_0xc98c('0x10')]+_0x3b2895[_0xc98c('0x11')];this[_0xc98c('0xd')]=_0x3b2895['countnosuchnumberretry'];this[_0xc98c('0xe')]=_0x3b2895[_0xc98c('0xe')];this[_0xc98c('0xf')]=_0x3b2895[_0xc98c('0xf')];this[_0xc98c('0x10')]=_0x3b2895[_0xc98c('0x10')];this[_0xc98c('0x11')]=_0x3b2895[_0xc98c('0x11')];this[_0xc98c('0x12')]=_0x5e268b[_0xc98c('0x12')];this[_0xc98c('0x13')]=_0x3b2895[_0xc98c('0x14')];this['calleridnum']=_0x3b2895[_0xc98c('0x15')];this[_0xc98c('0x16')]=_0x3b2895['starttime'];this[_0xc98c('0x17')]=_0x3b2895['responsetime'];this['answertime']=_0x3b2895['answertime'];this['endtime']=moment()[_0xc98c('0x18')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xc98c('0x19')]=utils['getSeconds'](_0x3b2895[_0xc98c('0x17')],_0x3b2895[_0xc98c('0x16')]);this[_0xc98c('0x1a')]=utils[_0xc98c('0x1b')](_0x3b2895[_0xc98c('0x1c')],_0x3b2895[_0xc98c('0x17')]);this[_0xc98c('0x1d')]=utils['getSeconds'](this[_0xc98c('0x1e')],_0x3b2895[_0xc98c('0x1c')]);this[_0xc98c('0x8')]=_0x5e268b[_0xc98c('0x8')];this['membername']=_0x5e268b[_0xc98c('0x1f')];this['reason']=_0x5e268b['reason'];this[_0xc98c('0x20')]=_0x3b2895[_0xc98c('0x20')];this[_0xc98c('0x21')]=_0x3b2895[_0xc98c('0x21')];this['callbackat']=_0x3b2895[_0xc98c('0x22')];this['recallme']=_0x3b2895[_0xc98c('0x23')];this[_0xc98c('0x24')]=_0x3b2895[_0xc98c('0x24')];this[_0xc98c('0x25')]=_0x3b2895[_0xc98c('0x25')];this[_0xc98c('0x26')]=_0x3b2895[_0xc98c('0x26')];this[_0xc98c('0x27')]=_0x3b2895[_0xc98c('0x27')];this[_0xc98c('0x28')]=_0x3b2895[_0xc98c('0x28')];this['originatecalleridnum']=_0x3b2895[_0xc98c('0x29')]||'';this[_0xc98c('0x2a')]=_0x3b2895['originatecalleridname']||'';this[_0xc98c('0x2b')]=_0x3b2895['agiafterat'];}module[_0xc98c('0x2c')]=AgentComplete;
\ No newline at end of file
+var _0x3f35=['reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','exports','../utils','statedesc','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','name','number','starttime','responsetime','answertime','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','getSeconds','membername'];(function(_0x4bc018,_0x529ee6){var _0x5e3a90=function(_0x2ed7f0){while(--_0x2ed7f0){_0x4bc018['push'](_0x4bc018['shift']());}};_0x5e3a90(++_0x529ee6);}(_0x3f35,0xd6));var _0x53f3=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x3f35[_0x164eca];return _0x2ce562;};'use strict';var moment=require('moment');var utils=require(_0x53f3('0x0'));function AgentComplete(_0x16e4a9,_0x5846ff){this['state']=0x4;this[_0x53f3('0x1')]='Answer';this['scheduledat']=_0x16e4a9[_0x53f3('0x2')];this[_0x53f3('0x3')]=_0x16e4a9['type'];this[_0x53f3('0x4')]=_0x16e4a9['type']==='outbound'?_0x53f3('0x5'):_0x16e4a9[_0x53f3('0x3')];this[_0x53f3('0x6')]=_0x16e4a9['countbusyretry'];this[_0x53f3('0x7')]=_0x16e4a9[_0x53f3('0x7')];this[_0x53f3('0x8')]=_0x16e4a9[_0x53f3('0x8')];this['countglobal']=_0x16e4a9['countbusyretry']+_0x16e4a9[_0x53f3('0x7')]+_0x16e4a9[_0x53f3('0x8')]+_0x16e4a9[_0x53f3('0x9')]+_0x16e4a9['countdropretry']+_0x16e4a9[_0x53f3('0xa')]+_0x16e4a9[_0x53f3('0xb')]+_0x16e4a9[_0x53f3('0xc')];this['countnosuchnumberretry']=_0x16e4a9['countnosuchnumberretry'];this[_0x53f3('0xd')]=_0x16e4a9[_0x53f3('0xd')];this['countabandonedretry']=_0x16e4a9[_0x53f3('0xa')];this[_0x53f3('0xb')]=_0x16e4a9[_0x53f3('0xb')];this[_0x53f3('0xc')]=_0x16e4a9[_0x53f3('0xc')];this['uniqueid']=_0x5846ff[_0x53f3('0xe')];this[_0x53f3('0xf')]=_0x16e4a9[_0x53f3('0x10')];this['calleridnum']=_0x16e4a9[_0x53f3('0x11')];this[_0x53f3('0x12')]=_0x16e4a9['starttime'];this['responsetime']=_0x16e4a9[_0x53f3('0x13')];this['answertime']=_0x16e4a9[_0x53f3('0x14')];this['endtime']=moment()['format'](_0x53f3('0x15'));this['ringtime']=utils['getSeconds'](_0x16e4a9[_0x53f3('0x13')],_0x16e4a9[_0x53f3('0x12')]);this[_0x53f3('0x16')]=utils['getSeconds'](_0x16e4a9[_0x53f3('0x14')],_0x16e4a9[_0x53f3('0x13')]);this[_0x53f3('0x17')]=utils[_0x53f3('0x18')](this['endtime'],_0x16e4a9[_0x53f3('0x14')]);this['queue']=_0x5846ff[_0x53f3('0x5')];this[_0x53f3('0x19')]=_0x5846ff[_0x53f3('0x19')];this[_0x53f3('0x1a')]=_0x5846ff['reason'];this[_0x53f3('0x1b')]=_0x16e4a9[_0x53f3('0x1b')];this[_0x53f3('0x1c')]=_0x16e4a9[_0x53f3('0x1c')];this['callbackat']=_0x16e4a9[_0x53f3('0x1d')];this[_0x53f3('0x1e')]=_0x16e4a9[_0x53f3('0x1e')];this['ContactId']=_0x16e4a9[_0x53f3('0x1f')];this[_0x53f3('0x20')]=_0x16e4a9[_0x53f3('0x20')];this['UserId']=_0x16e4a9[_0x53f3('0x21')];this['VoiceQueueId']=_0x16e4a9[_0x53f3('0x22')];this[_0x53f3('0x23')]=_0x16e4a9[_0x53f3('0x23')];this[_0x53f3('0x24')]=_0x16e4a9[_0x53f3('0x24')]||'';this[_0x53f3('0x25')]=_0x16e4a9[_0x53f3('0x25')]||'';this['agiafterat']=_0x16e4a9[_0x53f3('0x26')];}module[_0x53f3('0x27')]=AgentComplete;
\ No newline at end of file
index a919bf1..23d4f3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50f7=['countnosuchnumberretry','countabandonedretry','countdropretry','countmachineretry','countagentrejectretry','queue','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','state','statedesc','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0x50f7,0x1a5));var _0x750f=function(_0x8850fa,_0x488ebe){_0x8850fa=_0x8850fa-0x0;var _0x31ef8f=_0x50f7[_0x8850fa];return _0x31ef8f;};'use strict';function Final(_0x5c6724){this[_0x750f('0x0')]=_0x5c6724[_0x750f('0x0')];this[_0x750f('0x1')]=_0x5c6724['scheduledat'];this[_0x750f('0x2')]=_0x5c6724[_0x750f('0x2')];this[_0x750f('0x3')]=_0x5c6724['type']===_0x750f('0x4')?'queue':_0x5c6724[_0x750f('0x2')];this[_0x750f('0x5')]=_0x5c6724[_0x750f('0x5')];this[_0x750f('0x6')]=_0x5c6724['countcongestionretry'];this[_0x750f('0x7')]=_0x5c6724[_0x750f('0x7')];this['countglobal']=_0x5c6724[_0x750f('0x5')]+_0x5c6724[_0x750f('0x6')]+_0x5c6724[_0x750f('0x7')]+_0x5c6724[_0x750f('0x8')]+_0x5c6724['countdropretry']+_0x5c6724[_0x750f('0x9')]+_0x5c6724['countmachineretry']+_0x5c6724['countagentrejectretry'];this[_0x750f('0x8')]=_0x5c6724[_0x750f('0x8')];this[_0x750f('0xa')]=_0x5c6724[_0x750f('0xa')];this[_0x750f('0x9')]=_0x5c6724[_0x750f('0x9')];this[_0x750f('0xb')]=_0x5c6724[_0x750f('0xb')];this[_0x750f('0xc')]=_0x5c6724[_0x750f('0xc')];this[_0x750f('0xd')]=_0x5c6724['queue'];this[_0x750f('0xe')]=_0x5c6724['calleridname'];this[_0x750f('0xf')]=_0x5c6724[_0x750f('0xf')];this[_0x750f('0x10')]=_0x5c6724['starttime'];this[_0x750f('0x11')]=_0x5c6724['responsetime'];this['endtime']=_0x5c6724[_0x750f('0x11')];this[_0x750f('0x12')]=_0x5c6724[_0x750f('0x12')]||0x0;this['holdtime']=_0x5c6724[_0x750f('0x13')]||0x0;this[_0x750f('0x14')]=_0x5c6724[_0x750f('0x14')]||0x0;this['callback']=_0x5c6724[_0x750f('0x15')];this[_0x750f('0x16')]=_0x5c6724[_0x750f('0x16')];this[_0x750f('0x17')]=_0x5c6724[_0x750f('0x17')];this['recallme']=_0x5c6724[_0x750f('0x18')];this['ContactId']=_0x5c6724[_0x750f('0x19')];this[_0x750f('0x1a')]=_0x5c6724['ListId'];this['UserId']=_0x5c6724[_0x750f('0x1b')];this['VoiceQueueId']=_0x5c6724[_0x750f('0x1c')];this[_0x750f('0x1d')]=_0x5c6724[_0x750f('0x1d')];this['originatecalleridnum']=_0x5c6724['originatecalleridnum']||'';this[_0x750f('0x1e')]=_0x5c6724[_0x750f('0x1e')]||'';this[_0x750f('0x1f')]=_0x5c6724[_0x750f('0x1f')];this[_0x750f('0x20')]=_0x5c6724[_0x750f('0x20')];}module['exports']=Final;
\ No newline at end of file
+var _0xba03=['scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','uniqueid'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xba03,0x1c6));var _0x3ba0=function(_0x264032,_0x13fa04){_0x264032=_0x264032-0x0;var _0x1ee3db=_0xba03[_0x264032];return _0x1ee3db;};'use strict';function Final(_0x48f3ce){this[_0x3ba0('0x0')]=_0x48f3ce['uniqueid'];this[_0x3ba0('0x1')]=_0x48f3ce[_0x3ba0('0x1')];this[_0x3ba0('0x2')]=_0x48f3ce[_0x3ba0('0x2')];this[_0x3ba0('0x3')]=_0x48f3ce[_0x3ba0('0x2')]===_0x3ba0('0x4')?'queue':_0x48f3ce['type'];this['countbusyretry']=_0x48f3ce[_0x3ba0('0x5')];this['countcongestionretry']=_0x48f3ce[_0x3ba0('0x6')];this[_0x3ba0('0x7')]=_0x48f3ce[_0x3ba0('0x7')];this[_0x3ba0('0x8')]=_0x48f3ce[_0x3ba0('0x5')]+_0x48f3ce[_0x3ba0('0x6')]+_0x48f3ce[_0x3ba0('0x7')]+_0x48f3ce[_0x3ba0('0x9')]+_0x48f3ce[_0x3ba0('0xa')]+_0x48f3ce[_0x3ba0('0xb')]+_0x48f3ce[_0x3ba0('0xc')]+_0x48f3ce['countagentrejectretry'];this[_0x3ba0('0x9')]=_0x48f3ce[_0x3ba0('0x9')];this[_0x3ba0('0xa')]=_0x48f3ce[_0x3ba0('0xa')];this[_0x3ba0('0xb')]=_0x48f3ce[_0x3ba0('0xb')];this[_0x3ba0('0xc')]=_0x48f3ce[_0x3ba0('0xc')];this[_0x3ba0('0xd')]=_0x48f3ce[_0x3ba0('0xd')];this[_0x3ba0('0xe')]=_0x48f3ce[_0x3ba0('0xe')];this[_0x3ba0('0xf')]=_0x48f3ce[_0x3ba0('0xf')];this['calleridnum']=_0x48f3ce[_0x3ba0('0x10')];this[_0x3ba0('0x11')]=_0x48f3ce[_0x3ba0('0x11')];this[_0x3ba0('0x12')]=_0x48f3ce['responsetime'];this['endtime']=_0x48f3ce[_0x3ba0('0x12')];this[_0x3ba0('0x13')]=_0x48f3ce[_0x3ba0('0x13')]||0x0;this['holdtime']=_0x48f3ce[_0x3ba0('0x14')]||0x0;this[_0x3ba0('0x15')]=_0x48f3ce[_0x3ba0('0x15')]||0x0;this[_0x3ba0('0x16')]=_0x48f3ce[_0x3ba0('0x16')];this[_0x3ba0('0x17')]=_0x48f3ce[_0x3ba0('0x17')];this[_0x3ba0('0x18')]=_0x48f3ce[_0x3ba0('0x18')];this[_0x3ba0('0x19')]=_0x48f3ce['recallme'];this[_0x3ba0('0x1a')]=_0x48f3ce['ContactId'];this[_0x3ba0('0x1b')]=_0x48f3ce[_0x3ba0('0x1b')];this['UserId']=_0x48f3ce[_0x3ba0('0x1c')];this['VoiceQueueId']=_0x48f3ce[_0x3ba0('0x1d')];this[_0x3ba0('0x1e')]=_0x48f3ce['CampaignId'];this[_0x3ba0('0x1f')]=_0x48f3ce[_0x3ba0('0x1f')]||'';this[_0x3ba0('0x20')]=_0x48f3ce[_0x3ba0('0x20')]||'';this[_0x3ba0('0x21')]=_0x48f3ce[_0x3ba0('0x21')];this[_0x3ba0('0x22')]=_0x48f3ce[_0x3ba0('0x22')];}module['exports']=Final;
\ No newline at end of file
index 4ab6382..7a87d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8515=['membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','../utils','statedesc','Answer','scheduledat','type','campaigntype','outbound','amd','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','uniqueid','calleridname','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','getSeconds','holdtime','talktime','queue'];(function(_0x3bf4f0,_0x316456){var _0x2c6a5c=function(_0x412cf){while(--_0x412cf){_0x3bf4f0['push'](_0x3bf4f0['shift']());}};_0x2c6a5c(++_0x316456);}(_0x8515,0x95));var _0x5851=function(_0x172ed7,_0x3d08fd){_0x172ed7=_0x172ed7-0x0;var _0xfa8f61=_0x8515[_0x172ed7];return _0xfa8f61;};'use strict';var moment=require(_0x5851('0x0'));var utils=require(_0x5851('0x1'));function Hangup(_0x3ee09f,_0x5e2910){this['state']=0x4;this[_0x5851('0x2')]=_0x5851('0x3');this[_0x5851('0x4')]=_0x3ee09f['scheduledat'];this[_0x5851('0x5')]=_0x3ee09f[_0x5851('0x5')];this[_0x5851('0x6')]=_0x3ee09f[_0x5851('0x5')]===_0x5851('0x7')?'queue':_0x3ee09f[_0x5851('0x5')];this['amd']=_0x3ee09f[_0x5851('0x8')]||![];this[_0x5851('0x9')]=_0x3ee09f[_0x5851('0x9')];this['countcongestionretry']=_0x3ee09f[_0x5851('0xa')];this['countnoanswerretry']=_0x3ee09f[_0x5851('0xb')];this[_0x5851('0xc')]=_0x3ee09f[_0x5851('0x9')]+_0x3ee09f[_0x5851('0xa')]+_0x3ee09f[_0x5851('0xb')]+_0x3ee09f['countnosuchnumberretry']+_0x3ee09f[_0x5851('0xd')]+_0x3ee09f['countabandonedretry']+_0x3ee09f[_0x5851('0xe')]+_0x3ee09f[_0x5851('0xf')];this[_0x5851('0x10')]=_0x3ee09f['countnosuchnumberretry'];this['countdropretry']=_0x3ee09f[_0x5851('0xd')];this[_0x5851('0x11')]=_0x3ee09f[_0x5851('0x11')];this[_0x5851('0xe')]=_0x3ee09f[_0x5851('0xe')];this[_0x5851('0xf')]=_0x3ee09f[_0x5851('0xf')];this[_0x5851('0x12')]=_0x5e2910[_0x5851('0x12')];this[_0x5851('0x13')]=_0x3ee09f['name'];this[_0x5851('0x14')]=_0x3ee09f[_0x5851('0x15')];this['starttime']=_0x3ee09f[_0x5851('0x16')];this[_0x5851('0x17')]=_0x3ee09f[_0x5851('0x17')];this[_0x5851('0x18')]=moment()[_0x5851('0x19')](_0x5851('0x1a'));this['ringtime']=utils[_0x5851('0x1b')](_0x3ee09f[_0x5851('0x17')],_0x3ee09f[_0x5851('0x16')]);this[_0x5851('0x1c')]=0x0;this[_0x5851('0x1d')]=utils['getSeconds'](this[_0x5851('0x18')],_0x3ee09f[_0x5851('0x17')]);this[_0x5851('0x1e')]=_0x3ee09f[_0x5851('0x1e')];this[_0x5851('0x1f')]=_0x5851('0x20');this[_0x5851('0x21')]=_0x5e2910[_0x5851('0x22')];this[_0x5851('0x23')]=_0x3ee09f[_0x5851('0x23')];this[_0x5851('0x24')]=_0x3ee09f[_0x5851('0x24')];this['callbackat']=_0x3ee09f[_0x5851('0x25')];this[_0x5851('0x26')]=_0x3ee09f[_0x5851('0x26')];this['ContactId']=_0x3ee09f[_0x5851('0x27')];this[_0x5851('0x28')]=_0x3ee09f[_0x5851('0x28')];this[_0x5851('0x29')]=_0x3ee09f['UserId'];this['VoiceQueueId']=_0x3ee09f[_0x5851('0x2a')];this[_0x5851('0x2b')]=_0x3ee09f[_0x5851('0x2b')];}module[_0x5851('0x2c')]=Hangup;
\ No newline at end of file
+var _0xe255=['reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','../utils','state','statedesc','Answer','type','campaigntype','queue','amd','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','name','calleridnum','number','starttime','responsetime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','getSeconds','endtime','membername','IVR'];(function(_0x49d48b,_0x3f60ea){var _0x3b64dc=function(_0x4d877a){while(--_0x4d877a){_0x49d48b['push'](_0x49d48b['shift']());}};_0x3b64dc(++_0x3f60ea);}(_0xe255,0x114));var _0x5e25=function(_0x3d99c8,_0x5a87e4){_0x3d99c8=_0x3d99c8-0x0;var _0x1a9782=_0xe255[_0x3d99c8];return _0x1a9782;};'use strict';var moment=require(_0x5e25('0x0'));var utils=require(_0x5e25('0x1'));function Hangup(_0x539fa,_0x47ec68){this[_0x5e25('0x2')]=0x4;this[_0x5e25('0x3')]=_0x5e25('0x4');this['scheduledat']=_0x539fa['scheduledat'];this[_0x5e25('0x5')]=_0x539fa[_0x5e25('0x5')];this[_0x5e25('0x6')]=_0x539fa[_0x5e25('0x5')]==='outbound'?_0x5e25('0x7'):_0x539fa[_0x5e25('0x5')];this[_0x5e25('0x8')]=_0x539fa[_0x5e25('0x8')]||![];this[_0x5e25('0x9')]=_0x539fa[_0x5e25('0x9')];this[_0x5e25('0xa')]=_0x539fa[_0x5e25('0xa')];this[_0x5e25('0xb')]=_0x539fa[_0x5e25('0xb')];this[_0x5e25('0xc')]=_0x539fa[_0x5e25('0x9')]+_0x539fa[_0x5e25('0xa')]+_0x539fa[_0x5e25('0xb')]+_0x539fa[_0x5e25('0xd')]+_0x539fa[_0x5e25('0xe')]+_0x539fa[_0x5e25('0xf')]+_0x539fa[_0x5e25('0x10')]+_0x539fa['countagentrejectretry'];this['countnosuchnumberretry']=_0x539fa[_0x5e25('0xd')];this[_0x5e25('0xe')]=_0x539fa[_0x5e25('0xe')];this[_0x5e25('0xf')]=_0x539fa['countabandonedretry'];this[_0x5e25('0x10')]=_0x539fa[_0x5e25('0x10')];this[_0x5e25('0x11')]=_0x539fa['countagentrejectretry'];this['uniqueid']=_0x47ec68[_0x5e25('0x12')];this['calleridname']=_0x539fa[_0x5e25('0x13')];this[_0x5e25('0x14')]=_0x539fa[_0x5e25('0x15')];this[_0x5e25('0x16')]=_0x539fa[_0x5e25('0x16')];this['responsetime']=_0x539fa[_0x5e25('0x17')];this['endtime']=moment()[_0x5e25('0x18')](_0x5e25('0x19'));this['ringtime']=utils['getSeconds'](_0x539fa['responsetime'],_0x539fa[_0x5e25('0x16')]);this[_0x5e25('0x1a')]=0x0;this[_0x5e25('0x1b')]=utils[_0x5e25('0x1c')](this[_0x5e25('0x1d')],_0x539fa[_0x5e25('0x17')]);this[_0x5e25('0x7')]=_0x539fa[_0x5e25('0x7')];this[_0x5e25('0x1e')]=_0x5e25('0x1f');this[_0x5e25('0x20')]=_0x47ec68[_0x5e25('0x21')];this['callback']=_0x539fa[_0x5e25('0x22')];this['callbackuniqueid']=_0x539fa[_0x5e25('0x23')];this[_0x5e25('0x24')]=_0x539fa[_0x5e25('0x24')];this[_0x5e25('0x25')]=_0x539fa['recallme'];this[_0x5e25('0x26')]=_0x539fa['ContactId'];this[_0x5e25('0x27')]=_0x539fa[_0x5e25('0x27')];this[_0x5e25('0x28')]=_0x539fa['UserId'];this[_0x5e25('0x29')]=_0x539fa[_0x5e25('0x29')];this[_0x5e25('0x2a')]=_0x539fa[_0x5e25('0x2a')];}module[_0x5e25('0x2b')]=Hangup;
\ No newline at end of file
index e2f4fa8..4f8596d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe300=['number','starttime','responsetime','ringtime','getSeconds','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','state','statedesc','exports','uniqueid','type','campaigntype','outbound','queue','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countagentrejectretry','countdropretry','countmachineretry','name','calleridnum'];(function(_0x313fbe,_0x49e818){var _0x143e80=function(_0x29bfb7){while(--_0x29bfb7){_0x313fbe['push'](_0x313fbe['shift']());}};_0x143e80(++_0x49e818);}(_0xe300,0xdf));var _0x0e30=function(_0x126f2e,_0x52c090){_0x126f2e=_0x126f2e-0x0;var _0x1d68a0=_0xe300[_0x126f2e];return _0x1d68a0;};'use strict';var utils=require('../utils');function History(_0x2a155e){this[_0x0e30('0x0')]=_0x2a155e[_0x0e30('0x0')];this['scheduledat']=_0x2a155e['scheduledat']||undefined;this[_0x0e30('0x1')]=_0x2a155e[_0x0e30('0x1')];this[_0x0e30('0x2')]=_0x2a155e['type']===_0x0e30('0x3')?_0x0e30('0x4'):_0x2a155e['type'];this['countbusyretry']=_0x2a155e['countbusyretry'];this['countcongestionretry']=_0x2a155e[_0x0e30('0x5')];this['countnoanswerretry']=_0x2a155e[_0x0e30('0x6')];this[_0x0e30('0x7')]=_0x2a155e['countbusyretry']+_0x2a155e[_0x0e30('0x5')]+_0x2a155e[_0x0e30('0x6')]+_0x2a155e[_0x0e30('0x8')]+_0x2a155e['countdropretry']+_0x2a155e[_0x0e30('0x9')]+_0x2a155e['countmachineretry']+_0x2a155e[_0x0e30('0xa')];this[_0x0e30('0x8')]=_0x2a155e[_0x0e30('0x8')];this[_0x0e30('0xb')]=_0x2a155e[_0x0e30('0xb')];this[_0x0e30('0x9')]=_0x2a155e['countabandonedretry'];this[_0x0e30('0xc')]=_0x2a155e[_0x0e30('0xc')];this[_0x0e30('0xa')]=_0x2a155e[_0x0e30('0xa')];this['queue']=_0x2a155e[_0x0e30('0x4')];this['calleridname']=_0x2a155e[_0x0e30('0xd')];this[_0x0e30('0xe')]=_0x2a155e[_0x0e30('0xf')];this[_0x0e30('0x10')]=_0x2a155e['starttime'];this[_0x0e30('0x11')]=_0x2a155e[_0x0e30('0x11')];this['endtime']=_0x2a155e[_0x0e30('0x11')];this[_0x0e30('0x12')]=utils[_0x0e30('0x13')](_0x2a155e['responsetime'],_0x2a155e['starttime']);this[_0x0e30('0x14')]=0x0;this[_0x0e30('0x15')]=0x0;this[_0x0e30('0x16')]=_0x2a155e[_0x0e30('0x16')];this[_0x0e30('0x17')]=_0x2a155e[_0x0e30('0x17')];this[_0x0e30('0x18')]=_0x2a155e[_0x0e30('0x18')];this[_0x0e30('0x19')]=_0x2a155e[_0x0e30('0x19')];this['ContactId']=_0x2a155e['ContactId'];this['ListId']=_0x2a155e[_0x0e30('0x1a')];this[_0x0e30('0x1b')]=_0x2a155e[_0x0e30('0x1b')];this[_0x0e30('0x1c')]=_0x2a155e[_0x0e30('0x1c')];this[_0x0e30('0x1d')]=_0x2a155e[_0x0e30('0x1d')];this[_0x0e30('0x1e')]=_0x2a155e['originatecalleridnum']||'';this['originatecalleridname']=_0x2a155e['originatecalleridname']||'';this[_0x0e30('0x1f')]=_0x2a155e[_0x0e30('0x1f')];this[_0x0e30('0x20')]=_0x2a155e[_0x0e30('0x20')];}module[_0x0e30('0x21')]=History;
\ No newline at end of file
+var _0x0273=['CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','uniqueid','scheduledat','outbound','queue','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','name','number','starttime','responsetime','endtime','ringtime','getSeconds','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x1e94eb,_0x17c2d5){var _0x1f235d=function(_0x2ab2dd){while(--_0x2ab2dd){_0x1e94eb['push'](_0x1e94eb['shift']());}};_0x1f235d(++_0x17c2d5);}(_0x0273,0x1f4));var _0x3027=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0273[_0x14add3];return _0x4a174f;};'use strict';var utils=require('../utils');function History(_0x417355){this['uniqueid']=_0x417355[_0x3027('0x0')];this[_0x3027('0x1')]=_0x417355[_0x3027('0x1')]||undefined;this['type']=_0x417355['type'];this['campaigntype']=_0x417355['type']===_0x3027('0x2')?_0x3027('0x3'):_0x417355[_0x3027('0x4')];this['countbusyretry']=_0x417355[_0x3027('0x5')];this[_0x3027('0x6')]=_0x417355[_0x3027('0x6')];this[_0x3027('0x7')]=_0x417355[_0x3027('0x7')];this[_0x3027('0x8')]=_0x417355['countbusyretry']+_0x417355['countcongestionretry']+_0x417355['countnoanswerretry']+_0x417355[_0x3027('0x9')]+_0x417355['countdropretry']+_0x417355[_0x3027('0xa')]+_0x417355[_0x3027('0xb')]+_0x417355[_0x3027('0xc')];this['countnosuchnumberretry']=_0x417355['countnosuchnumberretry'];this[_0x3027('0xd')]=_0x417355[_0x3027('0xd')];this[_0x3027('0xa')]=_0x417355[_0x3027('0xa')];this['countmachineretry']=_0x417355['countmachineretry'];this[_0x3027('0xc')]=_0x417355[_0x3027('0xc')];this['queue']=_0x417355[_0x3027('0x3')];this[_0x3027('0xe')]=_0x417355[_0x3027('0xf')];this['calleridnum']=_0x417355[_0x3027('0x10')];this[_0x3027('0x11')]=_0x417355[_0x3027('0x11')];this[_0x3027('0x12')]=_0x417355[_0x3027('0x12')];this[_0x3027('0x13')]=_0x417355['responsetime'];this[_0x3027('0x14')]=utils[_0x3027('0x15')](_0x417355[_0x3027('0x12')],_0x417355[_0x3027('0x11')]);this[_0x3027('0x16')]=0x0;this[_0x3027('0x17')]=0x0;this[_0x3027('0x18')]=_0x417355[_0x3027('0x18')];this[_0x3027('0x19')]=_0x417355['callbackuniqueid'];this[_0x3027('0x1a')]=_0x417355[_0x3027('0x1a')];this['recallme']=_0x417355[_0x3027('0x1b')];this[_0x3027('0x1c')]=_0x417355['ContactId'];this[_0x3027('0x1d')]=_0x417355[_0x3027('0x1d')];this[_0x3027('0x1e')]=_0x417355['UserId'];this[_0x3027('0x1f')]=_0x417355[_0x3027('0x1f')];this[_0x3027('0x20')]=_0x417355[_0x3027('0x20')];this[_0x3027('0x21')]=_0x417355[_0x3027('0x21')]||'';this[_0x3027('0x22')]=_0x417355[_0x3027('0x22')]||'';this[_0x3027('0x23')]=_0x417355['state'];this['statedesc']=_0x417355[_0x3027('0x24')];}module[_0x3027('0x25')]=History;
\ No newline at end of file
index 5a5863a..6e5034a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c7b=['CampaignId','originatecalleridnum','agiafterat','state','statedesc','exports','../utils','scheduledat','type','campaigntype','queue','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countdropretry','countabandonedretry','countagentrejectretry','countnosuchnumberretry','countmachineretry','uniqueid','calleridname','name','number','starttime','responsetime','droptime','dropreason','endtime','ringtime','getSeconds','holdtime','talktime','membername','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x21fdc8,_0x644c4d){var _0x719c94=function(_0x8d1fca){while(--_0x8d1fca){_0x21fdc8['push'](_0x21fdc8['shift']());}};_0x719c94(++_0x644c4d);}(_0x0c7b,0x156));var _0xb0c7=function(_0x1e1f85,_0x2711e3){_0x1e1f85=_0x1e1f85-0x0;var _0x2ebda7=_0x0c7b[_0x1e1f85];return _0x2ebda7;};'use strict';var utils=require(_0xb0c7('0x0'));function QueueCallerAbandon(_0x46e2be,_0x1fb962){this[_0xb0c7('0x1')]=_0x46e2be[_0xb0c7('0x1')];this[_0xb0c7('0x2')]=_0x46e2be[_0xb0c7('0x2')];this[_0xb0c7('0x3')]=_0x46e2be[_0xb0c7('0x2')]==='outbound'?_0xb0c7('0x4'):_0x46e2be['type'];this['countbusyretry']=_0x46e2be['countbusyretry'];this['countcongestionretry']=_0x46e2be[_0xb0c7('0x5')];this[_0xb0c7('0x6')]=_0x46e2be[_0xb0c7('0x6')];this[_0xb0c7('0x7')]=_0x46e2be[_0xb0c7('0x8')]+_0x46e2be['countcongestionretry']+_0x46e2be[_0xb0c7('0x6')]+_0x46e2be['countnosuchnumberretry']+_0x46e2be[_0xb0c7('0x9')]+_0x46e2be[_0xb0c7('0xa')]+_0x46e2be['countmachineretry']+_0x46e2be[_0xb0c7('0xb')];this[_0xb0c7('0xc')]=_0x46e2be[_0xb0c7('0xc')];this[_0xb0c7('0x9')]=_0x46e2be['countdropretry'];this['countabandonedretry']=_0x46e2be[_0xb0c7('0xa')];this['countmachineretry']=_0x46e2be[_0xb0c7('0xd')];this['countagentrejectretry']=_0x46e2be[_0xb0c7('0xb')];this[_0xb0c7('0xe')]=_0x1fb962[_0xb0c7('0xe')];this[_0xb0c7('0xf')]=_0x46e2be[_0xb0c7('0x10')];this['calleridnum']=_0x46e2be[_0xb0c7('0x11')];this[_0xb0c7('0x12')]=_0x46e2be[_0xb0c7('0x12')];this[_0xb0c7('0x13')]=_0x46e2be[_0xb0c7('0x13')];this[_0xb0c7('0x14')]=_0x46e2be['droptime'];this[_0xb0c7('0x15')]=_0x46e2be[_0xb0c7('0x15')];this[_0xb0c7('0x16')]=this[_0xb0c7('0x14')];this[_0xb0c7('0x17')]=utils[_0xb0c7('0x18')](_0x46e2be['responsetime'],_0x46e2be['starttime']);this[_0xb0c7('0x19')]=utils[_0xb0c7('0x18')](this[_0xb0c7('0x14')],_0x46e2be[_0xb0c7('0x13')]);this[_0xb0c7('0x1a')]=0x0;this['queue']=_0x1fb962[_0xb0c7('0x4')];this[_0xb0c7('0x1b')]=_0x1fb962['connectedlinename'];this[_0xb0c7('0x1c')]=_0x1fb962['reason'];this[_0xb0c7('0x1d')]=_0x46e2be[_0xb0c7('0x1d')];this[_0xb0c7('0x1e')]=_0x46e2be[_0xb0c7('0x1e')];this['callbackat']=_0x46e2be['callbackat'];this[_0xb0c7('0x1f')]=_0x46e2be[_0xb0c7('0x1f')];this[_0xb0c7('0x20')]=_0x46e2be[_0xb0c7('0x20')];this[_0xb0c7('0x21')]=_0x46e2be['ListId'];this[_0xb0c7('0x22')]=_0x46e2be[_0xb0c7('0x22')];this[_0xb0c7('0x23')]=_0x46e2be[_0xb0c7('0x23')];this[_0xb0c7('0x24')]=_0x46e2be['CampaignId'];this['originatecalleridnum']=_0x46e2be[_0xb0c7('0x25')]||'';this['originatecalleridname']=_0x46e2be['originatecalleridname']||'';this[_0xb0c7('0x26')]=_0x46e2be[_0xb0c7('0x26')];this['state']=_0x46e2be[_0xb0c7('0x27')];this[_0xb0c7('0x28')]=_0x46e2be[_0xb0c7('0x28')];}module[_0xb0c7('0x29')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x2b79=['dropreason','endtime','ringtime','getSeconds','talktime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','exports','scheduledat','campaigntype','outbound','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','number','starttime','responsetime','droptime'];(function(_0xa60623,_0x2d4e4f){var _0x4a6487=function(_0xba6cbe){while(--_0xba6cbe){_0xa60623['push'](_0xa60623['shift']());}};_0x4a6487(++_0x2d4e4f);}(_0x2b79,0x187));var _0x92b7=function(_0x1e0d60,_0x503460){_0x1e0d60=_0x1e0d60-0x0;var _0x5b9564=_0x2b79[_0x1e0d60];return _0x5b9564;};'use strict';var utils=require('../utils');function QueueCallerAbandon(_0x4440e8,_0x1f59ab){this[_0x92b7('0x0')]=_0x4440e8[_0x92b7('0x0')];this['type']=_0x4440e8['type'];this[_0x92b7('0x1')]=_0x4440e8['type']===_0x92b7('0x2')?'queue':_0x4440e8[_0x92b7('0x3')];this[_0x92b7('0x4')]=_0x4440e8['countbusyretry'];this[_0x92b7('0x5')]=_0x4440e8['countcongestionretry'];this['countnoanswerretry']=_0x4440e8[_0x92b7('0x6')];this[_0x92b7('0x7')]=_0x4440e8[_0x92b7('0x4')]+_0x4440e8[_0x92b7('0x5')]+_0x4440e8[_0x92b7('0x6')]+_0x4440e8[_0x92b7('0x8')]+_0x4440e8[_0x92b7('0x9')]+_0x4440e8[_0x92b7('0xa')]+_0x4440e8[_0x92b7('0xb')]+_0x4440e8[_0x92b7('0xc')];this['countnosuchnumberretry']=_0x4440e8[_0x92b7('0x8')];this[_0x92b7('0x9')]=_0x4440e8[_0x92b7('0x9')];this[_0x92b7('0xa')]=_0x4440e8['countabandonedretry'];this[_0x92b7('0xb')]=_0x4440e8['countmachineretry'];this[_0x92b7('0xc')]=_0x4440e8[_0x92b7('0xc')];this['uniqueid']=_0x1f59ab['uniqueid'];this[_0x92b7('0xd')]=_0x4440e8[_0x92b7('0xe')];this['calleridnum']=_0x4440e8[_0x92b7('0xf')];this[_0x92b7('0x10')]=_0x4440e8['starttime'];this['responsetime']=_0x4440e8[_0x92b7('0x11')];this[_0x92b7('0x12')]=_0x4440e8[_0x92b7('0x12')];this[_0x92b7('0x13')]=_0x4440e8[_0x92b7('0x13')];this[_0x92b7('0x14')]=this[_0x92b7('0x12')];this[_0x92b7('0x15')]=utils[_0x92b7('0x16')](_0x4440e8[_0x92b7('0x11')],_0x4440e8[_0x92b7('0x10')]);this['holdtime']=utils[_0x92b7('0x16')](this[_0x92b7('0x12')],_0x4440e8[_0x92b7('0x11')]);this[_0x92b7('0x17')]=0x0;this[_0x92b7('0x18')]=_0x1f59ab[_0x92b7('0x18')];this[_0x92b7('0x19')]=_0x1f59ab['connectedlinename'];this['reason']=_0x1f59ab[_0x92b7('0x1a')];this[_0x92b7('0x1b')]=_0x4440e8[_0x92b7('0x1b')];this[_0x92b7('0x1c')]=_0x4440e8['callbackuniqueid'];this[_0x92b7('0x1d')]=_0x4440e8[_0x92b7('0x1d')];this[_0x92b7('0x1e')]=_0x4440e8[_0x92b7('0x1e')];this['ContactId']=_0x4440e8['ContactId'];this[_0x92b7('0x1f')]=_0x4440e8[_0x92b7('0x1f')];this[_0x92b7('0x20')]=_0x4440e8['UserId'];this['VoiceQueueId']=_0x4440e8[_0x92b7('0x21')];this[_0x92b7('0x22')]=_0x4440e8[_0x92b7('0x22')];this[_0x92b7('0x23')]=_0x4440e8[_0x92b7('0x23')]||'';this['originatecalleridname']=_0x4440e8[_0x92b7('0x24')]||'';this[_0x92b7('0x25')]=_0x4440e8[_0x92b7('0x25')];this[_0x92b7('0x26')]=_0x4440e8[_0x92b7('0x26')];this[_0x92b7('0x27')]=_0x4440e8[_0x92b7('0x27')];}module[_0x92b7('0x28')]=QueueCallerAbandon;
\ No newline at end of file
index ad2d441..b36b0f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd101=['createHistory','util','dialer','../../rpc/cmHopper','../../rpc/cmHopperAdditionalPhone','../../rpc/cmHopperBlack','../../rpc/cmHopperHistory','inspect','getContactDialer','dialOrderByScheduledAt','catch','temp','error','[getContactDialer]','getContactDialerIvr','countReScheduled','[countReScheduled]','rescheduleContact','[rescheduleContact]','unlockContact','[unlockContact]','[moveContactManagedDialer]','moveContactManagedDialer','checkIsBlackList','checkIsBlackListIvr','[checkIsBlackListIvr]','verifyAdditionalPhones','[verifyAdditionalPhone]','swapAdditionalPhones','[swapAdditionalPhone]','avgHandleTime','[createHistory]'];(function(_0x3a8fe5,_0x3194b5){var _0x525997=function(_0x5befef){while(--_0x5befef){_0x3a8fe5['push'](_0x3a8fe5['shift']());}};_0x525997(++_0x3194b5);}(_0xd101,0xc1));var _0x1d10=function(_0x17797f,_0x5d3b05){_0x17797f=_0x17797f-0x0;var _0x187a1f=_0xd101[_0x17797f];return _0x187a1f;};'use strict';var util=require(_0x1d10('0x0'));var logger=require('../../../../config/logger')(_0x1d10('0x1'));var cmHopper=require(_0x1d10('0x2'));var cmHopperAdditionalPhone=require(_0x1d10('0x3'));var cmHopperBlack=require(_0x1d10('0x4'));var cmHopperHistory=require(_0x1d10('0x5'));function inspectError(_0x25b425){return util[_0x1d10('0x6')](_0x25b425,{'showHidden':![],'depth':null});}function getContactDialer(_0x1e83e0,_0x5c5c42,_0x42b6d2){return cmHopper[_0x1d10('0x7')](_0x1e83e0['id'],_0x5c5c42,_0x42b6d2,_0x1e83e0[_0x1d10('0x8')])[_0x1d10('0x9')](function(_0xb9e08){_0x1e83e0[_0x1d10('0xa')]=0x0;logger[_0x1d10('0xb')](_0x1d10('0xc'),inspectError(_0xb9e08));});}exports[_0x1d10('0x7')]=getContactDialer;function getContactDialerIvr(_0x182c87,_0xf7926b){return cmHopper[_0x1d10('0xd')](_0x182c87['id'],_0xf7926b,_0x182c87[_0x1d10('0x8')])[_0x1d10('0x9')](function(_0x42efad){_0x182c87[_0x1d10('0xa')]=0x0;logger[_0x1d10('0xb')]('[getContactDialerIvr]',inspectError(_0x42efad));});}exports[_0x1d10('0xd')]=getContactDialerIvr;function countReScheduled(_0x93cb59){return cmHopper[_0x1d10('0xe')](_0x93cb59)[_0x1d10('0x9')](function(_0x268506){logger['error'](_0x1d10('0xf'),inspectError(_0x268506));});}exports[_0x1d10('0xe')]=countReScheduled;function rescheduleContact(_0x1a6586){return cmHopper[_0x1d10('0x10')](_0x1a6586)[_0x1d10('0x9')](function(_0x183bc4){logger['error'](_0x1d10('0x11'),inspectError(_0x183bc4));});}exports[_0x1d10('0x10')]=rescheduleContact;function unlockContact(_0x306953,_0x2ad3c0,_0x4f014a){return cmHopper[_0x1d10('0x12')](_0x306953,_0x2ad3c0,_0x4f014a)[_0x1d10('0x9')](function(_0x41152c){logger[_0x1d10('0xb')](_0x1d10('0x13'),inspectError(_0x41152c));});}exports[_0x1d10('0x12')]=unlockContact;function moveContactManagedDialer(_0x4528a6){return cmHopper['moveContactManagedDialer'](_0x4528a6)[_0x1d10('0x9')](function(_0x1163dd){logger[_0x1d10('0xb')](_0x1d10('0x14'),inspectError(_0x1163dd));});}exports[_0x1d10('0x15')]=moveContactManagedDialer;function checkIsBlackList(_0x5e61f8){return cmHopperBlack['checkIsBlackList'](_0x5e61f8)[_0x1d10('0x9')](function(_0x57ec1c){logger['error']('[checkIsBlackList]',inspectError(_0x57ec1c));});}exports[_0x1d10('0x16')]=checkIsBlackList;function checkIsBlackListIvr(_0x2496bc){return cmHopperBlack[_0x1d10('0x17')](_0x2496bc)[_0x1d10('0x9')](function(_0x4ce84a){logger['error'](_0x1d10('0x18'),inspectError(_0x4ce84a));});}exports['checkIsBlackListIvr']=checkIsBlackListIvr;function verifyAdditionalPhones(_0x68b09,_0x474321,_0x160802){return cmHopperAdditionalPhone[_0x1d10('0x19')](_0x68b09,_0x474321,_0x160802)[_0x1d10('0x9')](function(_0x3601ba){logger[_0x1d10('0xb')](_0x1d10('0x1a'),inspectError(_0x3601ba));});}exports[_0x1d10('0x19')]=verifyAdditionalPhones;function swapAdditionalPhones(_0x84055f,_0xf1e4c8,_0x5abc58){return cmHopperAdditionalPhone[_0x1d10('0x1b')](_0x84055f,_0xf1e4c8,_0x5abc58)[_0x1d10('0x9')](function(_0x475934){logger[_0x1d10('0xb')](_0x1d10('0x1c'),inspectError(_0x475934));});}exports[_0x1d10('0x1b')]=swapAdditionalPhones;function avgHandleTime(_0x38f583){return cmHopperHistory[_0x1d10('0x1d')](_0x38f583)['catch'](function(_0x355e10){logger[_0x1d10('0xb')]('[avgHandleTime]',inspectError(_0x355e10));});}exports[_0x1d10('0x1d')]=avgHandleTime;function createHistory(_0x52d514){return cmHopperHistory['createHistory'](_0x52d514)[_0x1d10('0x9')](function(_0x597aea){logger[_0x1d10('0xb')](_0x1d10('0x1e'),inspectError(_0x597aea));});}exports[_0x1d10('0x1f')]=createHistory;
\ No newline at end of file
+var _0xfb65=['../../../../config/logger','dialer','../../rpc/cmHopperAdditionalPhone','../../rpc/cmHopperHistory','inspect','catch','temp','error','getContactDialer','getContactDialerIvr','[getContactDialerIvr]','countReScheduled','[countReScheduled]','rescheduleContact','unlockContact','[unlockContact]','moveContactManagedDialer','checkIsBlackList','[checkIsBlackList]','checkIsBlackListIvr','[verifyAdditionalPhone]','verifyAdditionalPhones','swapAdditionalPhones','[swapAdditionalPhone]','avgHandleTime','[createHistory]'];(function(_0xa9eaa0,_0x4ba2b4){var _0x30897a=function(_0x2caa01){while(--_0x2caa01){_0xa9eaa0['push'](_0xa9eaa0['shift']());}};_0x30897a(++_0x4ba2b4);}(_0xfb65,0x82));var _0x5fb6=function(_0x15ddc9,_0x209223){_0x15ddc9=_0x15ddc9-0x0;var _0x2fc9e8=_0xfb65[_0x15ddc9];return _0x2fc9e8;};'use strict';var util=require('util');var logger=require(_0x5fb6('0x0'))(_0x5fb6('0x1'));var cmHopper=require('../../rpc/cmHopper');var cmHopperAdditionalPhone=require(_0x5fb6('0x2'));var cmHopperBlack=require('../../rpc/cmHopperBlack');var cmHopperHistory=require(_0x5fb6('0x3'));function inspectError(_0x15d15c){return util[_0x5fb6('0x4')](_0x15d15c,{'showHidden':![],'depth':null});}function getContactDialer(_0xb5f7c4,_0x3a3b1b,_0x1fefe3){return cmHopper['getContactDialer'](_0xb5f7c4['id'],_0x3a3b1b,_0x1fefe3,_0xb5f7c4['dialOrderByScheduledAt'])[_0x5fb6('0x5')](function(_0x1b586b){_0xb5f7c4[_0x5fb6('0x6')]=0x0;logger[_0x5fb6('0x7')]('[getContactDialer]',inspectError(_0x1b586b));});}exports[_0x5fb6('0x8')]=getContactDialer;function getContactDialerIvr(_0x29dd40,_0x46e061){return cmHopper[_0x5fb6('0x9')](_0x29dd40['id'],_0x46e061,_0x29dd40['dialOrderByScheduledAt'])[_0x5fb6('0x5')](function(_0xcf0402){_0x29dd40['temp']=0x0;logger[_0x5fb6('0x7')](_0x5fb6('0xa'),inspectError(_0xcf0402));});}exports[_0x5fb6('0x9')]=getContactDialerIvr;function countReScheduled(_0x41405c){return cmHopper[_0x5fb6('0xb')](_0x41405c)['catch'](function(_0x1927d0){logger[_0x5fb6('0x7')](_0x5fb6('0xc'),inspectError(_0x1927d0));});}exports[_0x5fb6('0xb')]=countReScheduled;function rescheduleContact(_0x6b58a2){return cmHopper[_0x5fb6('0xd')](_0x6b58a2)[_0x5fb6('0x5')](function(_0x1ded21){logger['error']('[rescheduleContact]',inspectError(_0x1ded21));});}exports[_0x5fb6('0xd')]=rescheduleContact;function unlockContact(_0xfaea56,_0x58febe,_0x1d57b1){return cmHopper[_0x5fb6('0xe')](_0xfaea56,_0x58febe,_0x1d57b1)[_0x5fb6('0x5')](function(_0x5d71c0){logger[_0x5fb6('0x7')](_0x5fb6('0xf'),inspectError(_0x5d71c0));});}exports[_0x5fb6('0xe')]=unlockContact;function moveContactManagedDialer(_0x182af5){return cmHopper[_0x5fb6('0x10')](_0x182af5)[_0x5fb6('0x5')](function(_0x50bca8){logger[_0x5fb6('0x7')]('[moveContactManagedDialer]',inspectError(_0x50bca8));});}exports[_0x5fb6('0x10')]=moveContactManagedDialer;function checkIsBlackList(_0x54c319){return cmHopperBlack[_0x5fb6('0x11')](_0x54c319)[_0x5fb6('0x5')](function(_0x402e8a){logger[_0x5fb6('0x7')](_0x5fb6('0x12'),inspectError(_0x402e8a));});}exports[_0x5fb6('0x11')]=checkIsBlackList;function checkIsBlackListIvr(_0x11c21b){return cmHopperBlack['checkIsBlackListIvr'](_0x11c21b)['catch'](function(_0xfd8d78){logger[_0x5fb6('0x7')]('[checkIsBlackListIvr]',inspectError(_0xfd8d78));});}exports[_0x5fb6('0x13')]=checkIsBlackListIvr;function verifyAdditionalPhones(_0xe58cb1,_0x331bba,_0x36457e){return cmHopperAdditionalPhone['verifyAdditionalPhones'](_0xe58cb1,_0x331bba,_0x36457e)[_0x5fb6('0x5')](function(_0x44aebe){logger[_0x5fb6('0x7')](_0x5fb6('0x14'),inspectError(_0x44aebe));});}exports[_0x5fb6('0x15')]=verifyAdditionalPhones;function swapAdditionalPhones(_0x1c1b96,_0x4e2bff,_0x4cbdaf){return cmHopperAdditionalPhone[_0x5fb6('0x16')](_0x1c1b96,_0x4e2bff,_0x4cbdaf)[_0x5fb6('0x5')](function(_0x92f94d){logger[_0x5fb6('0x7')](_0x5fb6('0x17'),inspectError(_0x92f94d));});}exports[_0x5fb6('0x16')]=swapAdditionalPhones;function avgHandleTime(_0x36ac58){return cmHopperHistory['avgHandleTime'](_0x36ac58)[_0x5fb6('0x5')](function(_0x3f9b86){logger[_0x5fb6('0x7')]('[avgHandleTime]',inspectError(_0x3f9b86));});}exports[_0x5fb6('0x18')]=avgHandleTime;function createHistory(_0x1b4ae4){return cmHopperHistory['createHistory'](_0x1b4ae4)[_0x5fb6('0x5')](function(_0x408fd9){logger['error'](_0x5fb6('0x19'),inspectError(_0x408fd9));});}exports['createHistory']=createHistory;
\ No newline at end of file
index 4d557ed..add004f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdba=['TrunkBackup','includes','INACTIVE','UNREACHABLE_TRUNK','getQueueCampaignActiveStatusMessage','match','extractCalleridName','isUndefined','string','format','\x22%s\x22\x20<%s>','getCallerId','\x5cw{0,','pow','replace','toString','error','[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative','length','checkContactEmpty','erlangb','checkContactLowerLimitOriginate','tags','updatedAt','undefined','%s%s','XMD-','moment','../../../../config/logger','dialer','../../../../config/environment/shared','ACTIVE','RESCHEDULED_CONTACTS','DEACTIVATED','IS_DISACTIVED','INTERVAL_IS_EMPTY','NOT_ACTIVE','AVAILABLE_CONTACTS_FINISHED','INTERVAL_IS_NULL','INTERVAL_IS_OVERTIME','RECALLINQUEUE','RECALLFAILEDTIMEOUT','RUNNING','dialMethod','preview','isPreviewCampaign','type','ivr','isIVRCampaign','outbound','dialActive','isQueueCampaignActive','active','isIVRCampaignActive','milliseconds','seconds','getSeconds','message','available','loggedIn','loggedInDb','paused','talking','pTalking','waiting','inUse','originated','name','Trunk','hasQueueCampaignDataChanged','dialTimezone','isNil','dialGlobalInterval','Interval','NULL_INTERVAL','isEmpty','Intervals','EMPTY_INTERVAL','SIP/','unmonitored','status'];(function(_0x51044d,_0x2e4ced){var _0x2badbb=function(_0x429b1e){while(--_0x429b1e){_0x51044d['push'](_0x51044d['shift']());}};_0x2badbb(++_0x2e4ced);}(_0xbdba,0x10e));var _0xabdb=function(_0x32a04a,_0x53a6f0){_0x32a04a=_0x32a04a-0x0;var _0x525cf8=_0xbdba[_0x32a04a];return _0x525cf8;};'use strict';var _=require('lodash');var moment=require(_0xabdb('0x0'));var util=require('util');var logger=require(_0xabdb('0x1'))(_0xabdb('0x2'));var timezones=require(_0xabdb('0x3'))['timezones'];var CAMPAIGN_STATUS={'ACTIVE':_0xabdb('0x4'),'BLACKLIST':'BLACKLIST','CONTACTS_RESCHEDULED':_0xabdb('0x5'),'DEACTIVATED':_0xabdb('0x6'),'DISACTIVED':_0xabdb('0x7'),'EMPTY_INTERVAL':_0xabdb('0x8'),'INACTIVE':_0xabdb('0x9'),'NO_AGENTS_LOGGED':'AGENTS_NOT_LOGGED','NO_AVAILABLE_CONTACTS':_0xabdb('0xa'),'NULL_INTERVAL':_0xabdb('0xb'),'OVERTIME_INTERVAL':_0xabdb('0xc'),'OVERTIME_GLOBAL_INTERVAL':'GLOBAL_INTERVAL_IS_OVERTIME','QUEUE_RECALL':_0xabdb('0xd'),'RECALL_TIMEOUT':_0xabdb('0xe'),'RUNNING':_0xabdb('0xf'),'UNKNOWN_TIMEZONE':'TIMEZONE_UNKNOW','UNREACHABLE_TRUNK':'TRUNK_IS_NOT_REACHABLE'};exports['CAMPAIGN_STATUS']=CAMPAIGN_STATUS;function isPreviewCampaign(_0x494d95){return _0x494d95[_0xabdb('0x10')]===_0xabdb('0x11');}exports[_0xabdb('0x12')]=isPreviewCampaign;function isIVRCampaign(_0x1c353b){return _0x1c353b[_0xabdb('0x13')]===_0xabdb('0x14');}exports[_0xabdb('0x15')]=isIVRCampaign;function isOutboundQueue(_0x2ff970){return _0x2ff970[_0xabdb('0x13')]===_0xabdb('0x16');}exports['isOutboundQueue']=isOutboundQueue;function isQueueCampaignActive(_0x4bf685){return _0x4bf685[_0xabdb('0x17')];}exports[_0xabdb('0x18')]=isQueueCampaignActive;function isIVRCampaignActive(_0x21a96a){return _0x21a96a[_0xabdb('0x19')];}exports[_0xabdb('0x1a')]=isIVRCampaignActive;function getSeconds(_0x557c23,_0x1c9ee9){var _0x5d221d=moment(_0x557c23)['milliseconds'](0x0);var _0x22ea4b=moment(_0x1c9ee9)[_0xabdb('0x1b')](0x0);return _0x5d221d['diff'](_0x22ea4b,_0xabdb('0x1c'));}exports[_0xabdb('0x1d')]=getSeconds;function hasQueueCampaignDataChanged(_0x554305,_0x91741c){var _0xca4de=![];var _0x186442=_0x554305['dialMethod']!==_0x91741c['dialMethod']||_0x554305['dialActive']!==_0x91741c['dialActive']||_0x554305[_0xabdb('0x1e')]!==_0x91741c['message'];var _0x2e2c3e=_0x554305[_0xabdb('0x1f')]!==_0x91741c[_0xabdb('0x1f')]||_0x554305['loggedIn']!==_0x91741c[_0xabdb('0x20')]||_0x554305[_0xabdb('0x21')]!==_0x91741c[_0xabdb('0x21')]||_0x554305[_0xabdb('0x22')]!==_0x91741c[_0xabdb('0x22')]||_0x554305[_0xabdb('0x23')]!==_0x91741c['talking']||_0x554305[_0xabdb('0x24')]!==_0x91741c[_0xabdb('0x24')]||_0x554305[_0xabdb('0x25')]!==_0x91741c['waiting']||_0x554305[_0xabdb('0x26')]!==_0x91741c['inUse']||_0x554305[_0xabdb('0x27')]!==_0x91741c[_0xabdb('0x27')];if(_0x554305['Trunk']&&_0x91741c['Trunk']){_0xca4de=_0x554305['Trunk'][_0xabdb('0x28')]!==_0x91741c[_0xabdb('0x29')][_0xabdb('0x28')]||_0x554305[_0xabdb('0x29')][_0xabdb('0x19')]!==_0x91741c['Trunk']['active'];}return _0x186442||_0x2e2c3e||_0xca4de;}exports[_0xabdb('0x2a')]=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x5ebed5){var _0x2247fd=null;var _0x50965c=_0x5ebed5[_0xabdb('0x2b')];if(_[_0xabdb('0x2c')](_0x5ebed5[_0xabdb('0x2d')])||_['isNil'](_0x5ebed5[_0xabdb('0x2e')])||_[_0xabdb('0x2c')](_0x5ebed5['Interval']['Intervals'])){_0x2247fd=CAMPAIGN_STATUS[_0xabdb('0x2f')];}else if(_[_0xabdb('0x30')](_0x5ebed5['dialGlobalInterval'])||_[_0xabdb('0x30')](_0x5ebed5['Interval'][_0xabdb('0x31')])){_0x2247fd=CAMPAIGN_STATUS[_0xabdb('0x32')];}else if(_0x50965c&&!timezones[_0x50965c]){_0x2247fd=CAMPAIGN_STATUS['UNKNOWN_TIMEZONE'];}return _0x2247fd;}function checkAnyValidTrunk(_0x5c8e22,_0x59c008){var _0x1b6fb4=null;var _0xd2137d=_0xabdb('0x33');var _0x46aca6=['reachable',_0xabdb('0x34')];var _0x46267b=!![];if(_0x5c8e22[_0xabdb('0x29')]&&_0x5c8e22[_0xabdb('0x29')][_0xabdb('0x19')]){_0xd2137d+=_0x5c8e22[_0xabdb('0x29')][_0xabdb('0x28')];_0x1b6fb4=_0x59c008[_0xd2137d];_0x46267b=_0x46aca6['includes'](_0x1b6fb4[_0xabdb('0x35')]);}else if(_0x5c8e22['TrunkBackup']&&_0x5c8e22['TrunkBackup'][_0xabdb('0x19')]){_0xd2137d+=_0x5c8e22[_0xabdb('0x36')]['name'];_0x1b6fb4=_0x59c008[_0xd2137d];_0x46267b=_0x46aca6[_0xabdb('0x37')](_0x1b6fb4['status']);}return _0x46267b;}function getQueueCampaignStatusMessage(_0x4fdfc3,_0x3fc594){var _0x1c064a=CAMPAIGN_STATUS[_0xabdb('0x4')];var _0x12bead=isPreviewCampaign(_0x4fdfc3);if(!isQueueCampaignActive(_0x4fdfc3)){if(_0x12bead){_0x1c064a=CAMPAIGN_STATUS[_0xabdb('0x38')];}else{if(_0x4fdfc3[_0xabdb('0x27')]===0x0&&_0x4fdfc3[_0xabdb('0x23')]===0x0&&_0x4fdfc3[_0xabdb('0x25')]===0x0&&(_0x4fdfc3['pTalking']||0x0)===0x0){_0x1c064a=CAMPAIGN_STATUS[_0xabdb('0x38')];}else{_0x1c064a=CAMPAIGN_STATUS['DISACTIVED'];}}}else if(_0x4fdfc3['loggedIn']===0x0){_0x1c064a=CAMPAIGN_STATUS['NO_AGENTS_LOGGED'];}else if(!checkAnyValidTrunk(_0x4fdfc3,_0x3fc594)){_0x1c064a=CAMPAIGN_STATUS[_0xabdb('0x39')];}else if(!isPreviewCampaign(_0x4fdfc3)){var _0x48cc9b=checkAnyValidQueueCampaignInterval(_0x4fdfc3);if(_0x48cc9b){_0x1c064a=_0x48cc9b;}}return _0x1c064a;}exports['getQueueCampaignStatusMessage']=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0xb4dc56){var _0x1947ed=CAMPAIGN_STATUS['DISACTIVED'];if(_0xb4dc56['originated']===0x0&&_0xb4dc56['talking']===0x0&&_0xb4dc56[_0xabdb('0x25')]===0x0&&(_0xb4dc56[_0xabdb('0x24')]||0x0)===0x0){_0x1947ed=CAMPAIGN_STATUS['INACTIVE'];}return _0x1947ed;}exports[_0xabdb('0x3a')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x220cb0){var _0x4effca=_0x220cb0[_0xabdb('0x3b')](/"(.*?)"/);return _0x4effca?_0x4effca[0x1]:_0x220cb0;}exports[_0xabdb('0x3c')]=extractCalleridName;function getCallerId(_0x2cace6,_0x4dd351,_0x5a9033){if(!_[_0xabdb('0x3d')](_0x5a9033)&&typeof _0x5a9033===_0xabdb('0x3e')&&!_[_0xabdb('0x30')](_0x5a9033)){if(!_[_0xabdb('0x3d')](_0x4dd351)&&typeof _0x4dd351===_0xabdb('0x3e')&&!_[_0xabdb('0x30')](_0x4dd351)){return util[_0xabdb('0x3f')](_0xabdb('0x40'),_0x4dd351,_0x5a9033);}return util['format'](_0xabdb('0x40'),_0x5a9033,_0x5a9033);}if(!_['isUndefined'](_0x2cace6)&&typeof _0x2cace6===_0xabdb('0x3e')&&!_['isEmpty'](_0x2cace6)){return _0x2cace6;}return'\x22\x22\x20<>';}exports[_0xabdb('0x41')]=getCallerId;function getCallerIdRandom(_0x101a7f,_0x3c5d70){var _0x18ed06;var _0x17df7d;var _0x2215c3;if(_0x3c5d70<=0x0){_0x3c5d70=0x1;}_0x18ed06=new RegExp(_0xabdb('0x42')+_0x3c5d70+'}$');_0x17df7d=Math[_0xabdb('0x43')](0xa,_0x3c5d70-0x1);_0x2215c3=Math['pow'](0xa,_0x3c5d70)-0x1;return util[_0xabdb('0x3f')]('%s',_[_0xabdb('0x44')](_0x101a7f,_0x18ed06,_['random'](_0x17df7d,_0x2215c3)[_0xabdb('0x45')]()));}exports['getCallerIdRandom']=getCallerIdRandom;function decrementOriginate(_0x52cd32){if(_0x52cd32[_0xabdb('0x27')]&&_0x52cd32[_0xabdb('0x27')]>0x0){_0x52cd32[_0xabdb('0x27')]-=0x1;}else{logger[_0xabdb('0x46')](_0xabdb('0x47'));}}exports['decrementOriginate']=decrementOriginate;function checkContactEmpty(_0x1c608c){return _0x1c608c&&_0x1c608c[_0xabdb('0x48')]>0x0;}exports[_0xabdb('0x49')]=checkContactEmpty;function erlangb(_0x1881ab,_0x3e6788){if(_0x3e6788===0x0){return 0x0;}var _0x4c80a0=0x1;for(var _0x33cff4=0x1;_0x33cff4<=_0x3e6788;_0x33cff4+=0x1){_0x4c80a0=0x1+_0x4c80a0*_0x33cff4/_0x1881ab;}return 0x1/_0x4c80a0;}exports[_0xabdb('0x4a')]=erlangb;function checkContactLowerLimitOriginate(_0x33ae42,_0x2c095d,_0x36ab81){if(_0x2c095d>_0x36ab81){for(var _0x32f84e=0x0;_0x32f84e<_0x2c095d-_0x36ab81;_0x32f84e+=0x1){decrementOriginate(_0x33ae42);}}}exports[_0xabdb('0x4b')]=checkContactLowerLimitOriginate;function setXMDContactVariables(_0x1b51b0){var _0x31040b={};var _0x1fcd77=['id','createdAt','description',_0xabdb('0x4c'),_0xabdb('0x4d')];if(_0x1b51b0){for(var _0x16a58a in _0x1b51b0){if(typeof _0x1b51b0[_0x16a58a]!==_0xabdb('0x4e')){if(!_[_0xabdb('0x2c')](_0x1b51b0[_0x16a58a])&&!_0x1fcd77[_0xabdb('0x37')](_0x16a58a)){_0x31040b[util[_0xabdb('0x3f')](_0xabdb('0x4f'),_0xabdb('0x50'),_0x16a58a['toUpperCase']())]=_0x1b51b0[_0x16a58a];}}}}return _0x31040b;}exports['setXMDContactVariables']=setXMDContactVariables;
\ No newline at end of file
+var _0x4095=['getQueueCampaignActiveStatusMessage','match','isUndefined','string','format','\x22%s\x22\x20<%s>','getCallerId','\x5cw{0,','pow','replace','random','toString','getCallerIdRandom','[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative','decrementOriginate','length','checkContactEmpty','checkContactLowerLimitOriginate','createdAt','tags','updatedAt','undefined','%s%s','XMD-','toUpperCase','setXMDContactVariables','lodash','util','../../../../config/logger','../../../../config/environment/shared','RESCHEDULED_CONTACTS','DEACTIVATED','INTERVAL_IS_EMPTY','NOT_ACTIVE','AGENTS_NOT_LOGGED','AVAILABLE_CONTACTS_FINISHED','INTERVAL_IS_OVERTIME','GLOBAL_INTERVAL_IS_OVERTIME','RUNNING','TIMEZONE_UNKNOW','TRUNK_IS_NOT_REACHABLE','dialMethod','type','outbound','dialActive','isQueueCampaignActive','active','isIVRCampaignActive','milliseconds','diff','seconds','message','available','loggedIn','loggedInDb','paused','talking','pTalking','waiting','inUse','originated','name','Trunk','hasQueueCampaignDataChanged','dialTimezone','isNil','Interval','NULL_INTERVAL','isEmpty','Intervals','EMPTY_INTERVAL','UNKNOWN_TIMEZONE','SIP/','reachable','unmonitored','status','TrunkBackup','includes','INACTIVE','DISACTIVED','NO_AGENTS_LOGGED','getQueueCampaignStatusMessage'];(function(_0x3ff332,_0x145564){var _0x5a2264=function(_0x36e730){while(--_0x36e730){_0x3ff332['push'](_0x3ff332['shift']());}};_0x5a2264(++_0x145564);}(_0x4095,0xbe));var _0x5409=function(_0x3de8a4,_0x289a5c){_0x3de8a4=_0x3de8a4-0x0;var _0x4635cf=_0x4095[_0x3de8a4];return _0x4635cf;};'use strict';var _=require(_0x5409('0x0'));var moment=require('moment');var util=require(_0x5409('0x1'));var logger=require(_0x5409('0x2'))('dialer');var timezones=require(_0x5409('0x3'))['timezones'];var CAMPAIGN_STATUS={'ACTIVE':'ACTIVE','BLACKLIST':'BLACKLIST','CONTACTS_RESCHEDULED':_0x5409('0x4'),'DEACTIVATED':_0x5409('0x5'),'DISACTIVED':'IS_DISACTIVED','EMPTY_INTERVAL':_0x5409('0x6'),'INACTIVE':_0x5409('0x7'),'NO_AGENTS_LOGGED':_0x5409('0x8'),'NO_AVAILABLE_CONTACTS':_0x5409('0x9'),'NULL_INTERVAL':'INTERVAL_IS_NULL','OVERTIME_INTERVAL':_0x5409('0xa'),'OVERTIME_GLOBAL_INTERVAL':_0x5409('0xb'),'QUEUE_RECALL':'RECALLINQUEUE','RECALL_TIMEOUT':'RECALLFAILEDTIMEOUT','RUNNING':_0x5409('0xc'),'UNKNOWN_TIMEZONE':_0x5409('0xd'),'UNREACHABLE_TRUNK':_0x5409('0xe')};exports['CAMPAIGN_STATUS']=CAMPAIGN_STATUS;function isPreviewCampaign(_0x4a451d){return _0x4a451d[_0x5409('0xf')]==='preview';}exports['isPreviewCampaign']=isPreviewCampaign;function isIVRCampaign(_0x3605df){return _0x3605df['type']==='ivr';}exports['isIVRCampaign']=isIVRCampaign;function isOutboundQueue(_0x16b506){return _0x16b506[_0x5409('0x10')]===_0x5409('0x11');}exports['isOutboundQueue']=isOutboundQueue;function isQueueCampaignActive(_0x32889a){return _0x32889a[_0x5409('0x12')];}exports[_0x5409('0x13')]=isQueueCampaignActive;function isIVRCampaignActive(_0x276d3d){return _0x276d3d[_0x5409('0x14')];}exports[_0x5409('0x15')]=isIVRCampaignActive;function getSeconds(_0x517ba2,_0x2735e0){var _0x153028=moment(_0x517ba2)['milliseconds'](0x0);var _0x1b95e5=moment(_0x2735e0)[_0x5409('0x16')](0x0);return _0x153028[_0x5409('0x17')](_0x1b95e5,_0x5409('0x18'));}exports['getSeconds']=getSeconds;function hasQueueCampaignDataChanged(_0x3c24e9,_0xaf5539){var _0x74a641=![];var _0xc78fba=_0x3c24e9[_0x5409('0xf')]!==_0xaf5539[_0x5409('0xf')]||_0x3c24e9['dialActive']!==_0xaf5539[_0x5409('0x12')]||_0x3c24e9['message']!==_0xaf5539[_0x5409('0x19')];var _0x449a28=_0x3c24e9[_0x5409('0x1a')]!==_0xaf5539['available']||_0x3c24e9[_0x5409('0x1b')]!==_0xaf5539[_0x5409('0x1b')]||_0x3c24e9[_0x5409('0x1c')]!==_0xaf5539[_0x5409('0x1c')]||_0x3c24e9[_0x5409('0x1d')]!==_0xaf5539[_0x5409('0x1d')]||_0x3c24e9[_0x5409('0x1e')]!==_0xaf5539['talking']||_0x3c24e9[_0x5409('0x1f')]!==_0xaf5539['pTalking']||_0x3c24e9[_0x5409('0x20')]!==_0xaf5539['waiting']||_0x3c24e9[_0x5409('0x21')]!==_0xaf5539['inUse']||_0x3c24e9[_0x5409('0x22')]!==_0xaf5539[_0x5409('0x22')];if(_0x3c24e9['Trunk']&&_0xaf5539['Trunk']){_0x74a641=_0x3c24e9['Trunk'][_0x5409('0x23')]!==_0xaf5539[_0x5409('0x24')][_0x5409('0x23')]||_0x3c24e9['Trunk'][_0x5409('0x14')]!==_0xaf5539[_0x5409('0x24')][_0x5409('0x14')];}return _0xc78fba||_0x449a28||_0x74a641;}exports[_0x5409('0x25')]=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x3c28c9){var _0x91f685=null;var _0x4a801c=_0x3c28c9[_0x5409('0x26')];if(_['isNil'](_0x3c28c9['dialGlobalInterval'])||_[_0x5409('0x27')](_0x3c28c9[_0x5409('0x28')])||_[_0x5409('0x27')](_0x3c28c9[_0x5409('0x28')]['Intervals'])){_0x91f685=CAMPAIGN_STATUS[_0x5409('0x29')];}else if(_[_0x5409('0x2a')](_0x3c28c9['dialGlobalInterval'])||_[_0x5409('0x2a')](_0x3c28c9[_0x5409('0x28')][_0x5409('0x2b')])){_0x91f685=CAMPAIGN_STATUS[_0x5409('0x2c')];}else if(_0x4a801c&&!timezones[_0x4a801c]){_0x91f685=CAMPAIGN_STATUS[_0x5409('0x2d')];}return _0x91f685;}function checkAnyValidTrunk(_0x115fd,_0x186b3b){var _0x2e0279=null;var _0x33c58e=_0x5409('0x2e');var _0x31276d=[_0x5409('0x2f'),_0x5409('0x30')];var _0x24782e=!![];if(_0x115fd[_0x5409('0x24')]&&_0x115fd[_0x5409('0x24')]['active']){_0x33c58e+=_0x115fd[_0x5409('0x24')][_0x5409('0x23')];_0x2e0279=_0x186b3b[_0x33c58e];_0x24782e=_0x31276d['includes'](_0x2e0279[_0x5409('0x31')]);}else if(_0x115fd[_0x5409('0x32')]&&_0x115fd[_0x5409('0x32')][_0x5409('0x14')]){_0x33c58e+=_0x115fd['TrunkBackup'][_0x5409('0x23')];_0x2e0279=_0x186b3b[_0x33c58e];_0x24782e=_0x31276d[_0x5409('0x33')](_0x2e0279['status']);}return _0x24782e;}function getQueueCampaignStatusMessage(_0x1ab03d,_0x1ccfaf){var _0x188985=CAMPAIGN_STATUS['ACTIVE'];var _0xe7e85f=isPreviewCampaign(_0x1ab03d);if(!isQueueCampaignActive(_0x1ab03d)){if(_0xe7e85f){_0x188985=CAMPAIGN_STATUS[_0x5409('0x34')];}else{if(_0x1ab03d[_0x5409('0x22')]===0x0&&_0x1ab03d[_0x5409('0x1e')]===0x0&&_0x1ab03d[_0x5409('0x20')]===0x0&&(_0x1ab03d[_0x5409('0x1f')]||0x0)===0x0){_0x188985=CAMPAIGN_STATUS[_0x5409('0x34')];}else{_0x188985=CAMPAIGN_STATUS[_0x5409('0x35')];}}}else if(_0x1ab03d['loggedIn']===0x0){_0x188985=CAMPAIGN_STATUS[_0x5409('0x36')];}else if(!checkAnyValidTrunk(_0x1ab03d,_0x1ccfaf)){_0x188985=CAMPAIGN_STATUS['UNREACHABLE_TRUNK'];}else if(!isPreviewCampaign(_0x1ab03d)){var _0xa2eae8=checkAnyValidQueueCampaignInterval(_0x1ab03d);if(_0xa2eae8){_0x188985=_0xa2eae8;}}return _0x188985;}exports[_0x5409('0x37')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0xa6faee){var _0x4a2874=CAMPAIGN_STATUS[_0x5409('0x35')];if(_0xa6faee[_0x5409('0x22')]===0x0&&_0xa6faee[_0x5409('0x1e')]===0x0&&_0xa6faee['waiting']===0x0&&(_0xa6faee[_0x5409('0x1f')]||0x0)===0x0){_0x4a2874=CAMPAIGN_STATUS[_0x5409('0x34')];}return _0x4a2874;}exports[_0x5409('0x38')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x266a81){var _0x55ad2d=_0x266a81[_0x5409('0x39')](/"(.*?)"/);return _0x55ad2d?_0x55ad2d[0x1]:_0x266a81;}exports['extractCalleridName']=extractCalleridName;function getCallerId(_0x502136,_0x393a40,_0x4b48c7){if(!_[_0x5409('0x3a')](_0x4b48c7)&&typeof _0x4b48c7==='string'&&!_[_0x5409('0x2a')](_0x4b48c7)){if(!_['isUndefined'](_0x393a40)&&typeof _0x393a40===_0x5409('0x3b')&&!_[_0x5409('0x2a')](_0x393a40)){return util[_0x5409('0x3c')](_0x5409('0x3d'),_0x393a40,_0x4b48c7);}return util[_0x5409('0x3c')]('\x22%s\x22\x20<%s>',_0x4b48c7,_0x4b48c7);}if(!_[_0x5409('0x3a')](_0x502136)&&typeof _0x502136===_0x5409('0x3b')&&!_['isEmpty'](_0x502136)){return _0x502136;}return'\x22\x22\x20<>';}exports[_0x5409('0x3e')]=getCallerId;function getCallerIdRandom(_0x27deb8,_0x30c6e9){var _0x24e8ef;var _0x2e023b;var _0x5c9505;if(_0x30c6e9<=0x0){_0x30c6e9=0x1;}_0x24e8ef=new RegExp(_0x5409('0x3f')+_0x30c6e9+'}$');_0x2e023b=Math[_0x5409('0x40')](0xa,_0x30c6e9-0x1);_0x5c9505=Math[_0x5409('0x40')](0xa,_0x30c6e9)-0x1;return util[_0x5409('0x3c')]('%s',_[_0x5409('0x41')](_0x27deb8,_0x24e8ef,_[_0x5409('0x42')](_0x2e023b,_0x5c9505)[_0x5409('0x43')]()));}exports[_0x5409('0x44')]=getCallerIdRandom;function decrementOriginate(_0x9db1b5){if(_0x9db1b5[_0x5409('0x22')]&&_0x9db1b5['originated']>0x0){_0x9db1b5[_0x5409('0x22')]-=0x1;}else{logger['error'](_0x5409('0x45'));}}exports[_0x5409('0x46')]=decrementOriginate;function checkContactEmpty(_0x42e132){return _0x42e132&&_0x42e132[_0x5409('0x47')]>0x0;}exports[_0x5409('0x48')]=checkContactEmpty;function erlangb(_0x4ed137,_0x42b0e5){if(_0x42b0e5===0x0){return 0x0;}var _0x513933=0x1;for(var _0x734546=0x1;_0x734546<=_0x42b0e5;_0x734546+=0x1){_0x513933=0x1+_0x513933*_0x734546/_0x4ed137;}return 0x1/_0x513933;}exports['erlangb']=erlangb;function checkContactLowerLimitOriginate(_0x4bdc23,_0x255a4a,_0x58e5a9){if(_0x255a4a>_0x58e5a9){for(var _0x1c61f7=0x0;_0x1c61f7<_0x255a4a-_0x58e5a9;_0x1c61f7+=0x1){decrementOriginate(_0x4bdc23);}}}exports[_0x5409('0x49')]=checkContactLowerLimitOriginate;function setXMDContactVariables(_0x3d6d60){var _0x167753={};var _0x40668e=['id',_0x5409('0x4a'),'description',_0x5409('0x4b'),_0x5409('0x4c')];if(_0x3d6d60){for(var _0x37abe9 in _0x3d6d60){if(typeof _0x3d6d60[_0x37abe9]!==_0x5409('0x4d')){if(!_[_0x5409('0x27')](_0x3d6d60[_0x37abe9])&&!_0x40668e[_0x5409('0x33')](_0x37abe9)){_0x167753[util[_0x5409('0x3c')](_0x5409('0x4e'),_0x5409('0x4f'),_0x37abe9[_0x5409('0x50')]())]=_0x3d6d60[_0x37abe9];}}}}return _0x167753;}exports[_0x5409('0x51')]=setXMDContactVariables;
\ No newline at end of file
index 5ffc68d..349f857 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(_0xa29023,_0x24a4d7){var _0x3ba311=function(_0x3f5d36){while(--_0x3f5d36){_0xa29023['push'](_0xa29023['shift']());}};_0x3ba311(++_0x24a4d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'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(_0x2969a1,_0x19f50f){var _0x19f57e=function(_0x402bcb){while(--_0x402bcb){_0x2969a1['push'](_0x2969a1['shift']());}};_0x19f57e(++_0x19f50f);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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 473ee64..1dd9a15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4133=['gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','uuid','moment','path','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','syncNewchannel','bind','newstate','syncNewState','syncFaxStatus','receivefax','syncReceiveFax','syncHangup','originateresponse','prototype','context','from-voip-provider','exten','localstationid','uniqueid','channel','info','\x20syncNewchannel\x20','syncVarSet','variable','hasOwnProperty','value','channelstate','channelstatedesc','syncNewExten','operation','status','filename','\x20syncFaxStatus\x20','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','name','.pdf','application/pdf','catch','error','\x20receiveFax\x20','merge','pick','response','reason','AttachmentId','then','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','updateStatus','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','stringify','faxpages','faxstatus','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','isValid','format'];(function(_0x30986c,_0x39ce58){var _0x57c209=function(_0x557c36){while(--_0x557c36){_0x30986c['push'](_0x30986c['shift']());}};_0x57c209(++_0x39ce58);}(_0x4133,0x17a));var _0x3413=function(_0x3e7a9c,_0x2585eb){_0x3e7a9c=_0x3e7a9c-0x0;var _0x250efc=_0x4133[_0x3e7a9c];return _0x250efc;};'use strict';var util=require(_0x3413('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require(_0x3413('0x1'));var moment=require(_0x3413('0x2'));var path=require(_0x3413('0x3'));var tiff2pdf=require('tiff2pdf');var gs=require(_0x3413('0x4'));var logger=require(_0x3413('0x5'))(_0x3413('0x6'));var ami=require(_0x3413('0x7'));var rpcDb=require(_0x3413('0x8'));var Channel=require(_0x3413('0x9'));var ut=require(_0x3413('0xa'));var Action=require(_0x3413('0xb'));var faxAccount=require(_0x3413('0xc'));var attachment=require(_0x3413('0xd'));var faxMessage=require(_0x3413('0xe'));function Fax(_0x10b6cd){this[_0x3413('0xf')]={};this[_0x3413('0x10')]=_0x10b6cd[_0x3413('0x10')];this[_0x3413('0x11')]=_0x10b6cd[_0x3413('0x11')];this[_0x3413('0x12')]={};ami['on']('newchannel',this[_0x3413('0x13')]['bind'](this));ami['on']('varset',this['syncVarSet'][_0x3413('0x14')](this));ami['on'](_0x3413('0x15'),this[_0x3413('0x16')][_0x3413('0x14')](this));ami['on']('newexten',this['syncNewExten']['bind'](this));ami['on']('faxstatus',this[_0x3413('0x17')][_0x3413('0x14')](this));ami['on'](_0x3413('0x18'),this[_0x3413('0x19')]['bind'](this));ami['on']('hangup',this[_0x3413('0x1a')]['bind'](this));ami['on'](_0x3413('0x1b'),this['syncOriginateResponse'][_0x3413('0x14')](this));}Fax[_0x3413('0x1c')][_0x3413('0x13')]=function(_0x336f6e){if(_0x336f6e[_0x3413('0x1d')]===_0x3413('0x1e')){for(var _0x2643c1 in this[_0x3413('0x10')]){if(this[_0x3413('0x10')]['hasOwnProperty'](_0x2643c1)){if(_0x336f6e[_0x3413('0x1f')]===this[_0x3413('0x10')][_0x2643c1][_0x3413('0x20')]){this[_0x3413('0xf')][_0x336f6e['uniqueid']]={};this['channels'][_0x336f6e[_0x3413('0x21')]][_0x3413('0x22')]=_0x336f6e['channel'];this[_0x3413('0xf')][_0x336f6e['uniqueid']]['id']=this['faxAccounts'][_0x2643c1]['id'];this[_0x3413('0xf')][_0x336f6e[_0x3413('0x21')]]['name']=this['faxAccounts'][_0x2643c1]['name'];logger[_0x3413('0x23')](_0x336f6e['uniqueid'],_0x3413('0x24'));}}}}if(this[_0x3413('0x12')][_0x336f6e[_0x3413('0x21')]]){this[_0x3413('0xf')][_0x336f6e['uniqueid']]={};this[_0x3413('0xf')][_0x336f6e[_0x3413('0x21')]][_0x3413('0x22')]=_0x336f6e[_0x3413('0x22')];logger[_0x3413('0x23')](_0x336f6e[_0x3413('0x21')],_0x3413('0x24'));}};Fax['prototype'][_0x3413('0x25')]=function(_0x52af1a){if(this[_0x3413('0xf')][_0x52af1a[_0x3413('0x21')]]){for(var _0x4cb8c7 in _0x52af1a[_0x3413('0x26')]){if(_0x52af1a[_0x3413('0x26')][_0x3413('0x27')](_0x4cb8c7)){this[_0x3413('0xf')][_0x52af1a[_0x3413('0x21')]][_0x4cb8c7]=_0x52af1a[_0x3413('0x28')];}}}};Fax[_0x3413('0x1c')]['syncNewState']=function(_0x4039aa){if(this[_0x3413('0xf')][_0x4039aa[_0x3413('0x21')]]){this[_0x3413('0xf')][_0x4039aa[_0x3413('0x21')]][_0x3413('0x29')]=_0x4039aa[_0x3413('0x29')];this[_0x3413('0xf')][_0x4039aa[_0x3413('0x21')]][_0x3413('0x2a')]=_0x4039aa[_0x3413('0x2a')];}};Fax[_0x3413('0x1c')][_0x3413('0x2b')]=function(_0x331151){if(this[_0x3413('0xf')][_0x331151[_0x3413('0x21')]]){for(var _0x405b10 in _0x331151[_0x3413('0x26')]){if(_0x331151[_0x3413('0x26')]['hasOwnProperty'](_0x405b10)){this[_0x3413('0xf')][_0x331151['uniqueid']][_0x405b10]=_0x331151['value'];}}}};Fax['prototype'][_0x3413('0x17')]=function(_0x5a8dbb){if(this[_0x3413('0xf')][_0x5a8dbb[_0x3413('0x21')]]){this['channels'][_0x5a8dbb[_0x3413('0x21')]]['operation']=_0x5a8dbb[_0x3413('0x2c')];this['channels'][_0x5a8dbb[_0x3413('0x21')]][_0x3413('0x2d')]=_0x5a8dbb[_0x3413('0x2d')];this['channels'][_0x5a8dbb['uniqueid']][_0x3413('0x20')]=_0x5a8dbb[_0x3413('0x20')];this['channels'][_0x5a8dbb[_0x3413('0x21')]][_0x3413('0x2e')]=_0x5a8dbb[_0x3413('0x2e')];logger[_0x3413('0x23')](_0x5a8dbb[_0x3413('0x21')],_0x3413('0x2f'));}};Fax[_0x3413('0x1c')][_0x3413('0x19')]=function(_0xf6560a){var _0x4da8ed=this;if(this['channels'][_0xf6560a['uniqueid']]){var _0x18f42a=this[_0x3413('0xf')][_0xf6560a['uniqueid']]['id'];this['channels'][_0xf6560a[_0x3413('0x21')]]['remotestationid']=_0xf6560a['remotestationid'];this[_0x3413('0xf')][_0xf6560a[_0x3413('0x21')]][_0x3413('0x30')]=_0xf6560a['pagestransferred'];this[_0x3413('0xf')][_0xf6560a[_0x3413('0x21')]]['localstationid']=_0xf6560a[_0x3413('0x20')];this[_0x3413('0xf')][_0xf6560a['uniqueid']][_0x3413('0x31')]=_0xf6560a['resolution'];this[_0x3413('0xf')][_0xf6560a[_0x3413('0x21')]][_0x3413('0x32')]=_0xf6560a[_0x3413('0x32')];this['channels'][_0xf6560a[_0x3413('0x21')]][_0x3413('0x2e')]=_0xf6560a[_0x3413('0x2e')];this[_0x3413('0xf')][_0xf6560a[_0x3413('0x21')]][_0x3413('0x33')]=_0xf6560a[_0x3413('0x33')];if(this[_0x3413('0xf')][_0xf6560a[_0x3413('0x21')]][_0x3413('0x30')]>0x0){tiff2pdf(_0xf6560a[_0x3413('0x2e')],_0x3413('0x34'),function(_0x28d652){logger[_0x3413('0x23')](_0xf6560a[_0x3413('0x21')],_0x3413('0x35'),_0x28d652[_0x3413('0x36')]);attachment[_0x3413('0x37')]({'name':path[_0x3413('0x38')](_0xf6560a['filename'])[_0x3413('0x39')],'basename':path[_0x3413('0x38')](_0xf6560a[_0x3413('0x2e')])['name']+_0x3413('0x3a'),'type':_0x3413('0x3b')})['then'](function(_0x395711){faxAccount['notify'](_0x18f42a,{'from':_0xf6560a[_0x3413('0x33')],'mapKey':_0x3413('0x6'),'body':path['parse'](_0xf6560a[_0x3413('0x2e')])[_0x3413('0x39')]+'.pdf','AttachmentId':_0x395711['id']})[_0x3413('0x3c')](function(_0xdd330c){logger['error'](_0xf6560a[_0x3413('0x21')],'\x20notify\x20',JSON['stringify'](_0xdd330c));});})[_0x3413('0x3c')](function(_0x3d015e){logger[_0x3413('0x3d')](_0xf6560a[_0x3413('0x21')],_0x3413('0x3e'),JSON['stringify'](_0x3d015e));});});}logger[_0x3413('0x23')](_0xf6560a[_0x3413('0x21')],_0x3413('0x3e'));}};Fax[_0x3413('0x1c')]['syncOriginateResponse']=function(_0xd3f0a1){if(this[_0x3413('0x12')][_0xd3f0a1[_0x3413('0x21')]]){_[_0x3413('0x3f')](this['channels'][_0xd3f0a1[_0x3413('0x21')]],_[_0x3413('0x40')](_0xd3f0a1,[_0x3413('0x41'),_0x3413('0x42')]));}};function updateStatus(_0x1e036f){if(_0x1e036f[_0x3413('0x43')]){faxMessage['update'](_0x1e036f['AttachmentId'],{'failMessage':'SENDING\x20FAILED\x20'})[_0x3413('0x44')](function(_0x56dbbd){ut[_0x3413('0x45')](_0x3413('0x46'),_0x56dbbd);})['catch'](function(_0x1be531){ut['logger']('[Fax][Message][Error][NoUpdate1]',_0x1be531);});}else{ut[_0x3413('0x45')](_0x3413('0x47'));}}Fax[_0x3413('0x1c')][_0x3413('0x48')]=function(_0x1bf34a,_0x1c3af8,_0xcc6a36){var _0x501710=this;var _0x48f146={};if(_0x1c3af8){_0x48f146={'read':_0x1c3af8};}else{_0x48f146={'failMessage':_0xcc6a36};}if(this[_0x3413('0x12')][_0x1bf34a][_0x3413('0x43')]){faxMessage[_0x3413('0x49')](this[_0x3413('0x12')][_0x1bf34a][_0x3413('0x43')],_0x48f146)[_0x3413('0x44')](function(_0x58cea7){ut[_0x3413('0x45')](_0x3413('0x4a'),_0x58cea7);})[_0x3413('0x3c')](function(_0x36e3e8){ut['logger'](_0x3413('0x4b'),_0x36e3e8);})[_0x3413('0x4c')](function(){delete _0x501710[_0x3413('0xf')][_0x1bf34a];delete _0x501710[_0x3413('0x12')][_0x1bf34a];});}else{ut[_0x3413('0x45')](_0x3413('0x4d'));delete this[_0x3413('0xf')][_0x1bf34a];delete this[_0x3413('0x12')][_0x1bf34a];}};Fax[_0x3413('0x1c')][_0x3413('0x1a')]=function(_0x14b951){var _0x3ff59a=this;if(this[_0x3413('0xf')][_0x14b951[_0x3413('0x21')]]){if(this[_0x3413('0x12')][_0x14b951[_0x3413('0x21')]]){this[_0x3413('0xf')][_0x14b951[_0x3413('0x21')]]['id']=this[_0x3413('0x12')][_0x14b951[_0x3413('0x21')]]['id'];this[_0x3413('0xf')][_0x14b951[_0x3413('0x21')]][_0x3413('0x39')]=this[_0x3413('0x12')][_0x14b951[_0x3413('0x21')]][_0x3413('0x39')];}logger[_0x3413('0x23')](_0x14b951['uniqueid'],this[_0x3413('0x12')][_0x14b951['uniqueid']]?_0x3413('0x4e'):'\x20hangup\x20faxRiceive\x20',JSON[_0x3413('0x4f')](this[_0x3413('0xf')][_0x14b951[_0x3413('0x21')]]));if(this[_0x3413('0x12')][_0x14b951[_0x3413('0x21')]]){if(this[_0x3413('0xf')][_0x14b951[_0x3413('0x21')]][_0x3413('0x50')]>0x0&&this[_0x3413('0xf')][_0x14b951[_0x3413('0x21')]][_0x3413('0x51')]===_0x3413('0x52')){this['updateStatus'](_0x14b951[_0x3413('0x21')],!![]);}else{this['updateStatus'](_0x14b951['uniqueid'],![],this[_0x3413('0xf')][_0x14b951[_0x3413('0x21')]][_0x3413('0x53')]?_0x3413('0x54')+this['channels'][_0x14b951[_0x3413('0x21')]][_0x3413('0x53')]:_0x3413('0x55'));}}}};Fax['prototype']['send']=function(_0x5580b9){var _0x325c73=this;return new BPromise(function(_0x5d819b,_0x50d8eb){_0x325c73['execOriginate'](_0x5580b9,_0x325c73[_0x3413('0x10')][_0x5580b9[_0x3413('0x56')]])[_0x3413('0x44')](function(_0x457efb){ut[_0x3413('0x45')]('[Fax][execOriginate][success]',_0x457efb);_0x5d819b(ut['message'](_0x3413('0x57')));})[_0x3413('0x3c')](function(_0x52ce63){ut[_0x3413('0x45')](_0x3413('0x58'),_0x52ce63);updateStatus(_0x5580b9);_0x50d8eb(ut[_0x3413('0x36')](_0x3413('0x59')));});});};Fax['prototype'][_0x3413('0x5a')]=function(_0xa1caea){var _0x7a6ecc=this;return new BPromise(function(_0x337573,_0x56a765){var _0x1ae1ba=_0x7a6ecc[_0x3413('0x5b')](_0x7a6ecc[_0x3413('0x10')][_0xa1caea[_0x3413('0x56')]]['Trunk'],_0xa1caea);if(_0x1ae1ba[_0x3413('0x5c')]){_0x337573(ut['message']('Trunk\x20Reachable'));}else{_0x56a765(ut[_0x3413('0x36')](_0x1ae1ba[_0x3413('0x36')]));}});};function originate(_0x2fb58c,_0x5e9344,_0x178d6c){return new BPromise(function(_0x1b13c8,_0x2c177d){if(_0x178d6c){var _0x11529e=util[_0x3413('0x5d')](_0x3413('0x5e'),path[_0x3413('0x38')](_0x2fb58c[_0x3413('0x3')])[_0x3413('0x39')],_0x2fb58c[_0x3413('0x3')]);gs[_0x3413('0x5f')](_0x11529e)['then'](function(){_0x2fb58c[_0x3413('0x3')]=util[_0x3413('0x5d')](_0x3413('0x60'),path['parse'](_0x2fb58c[_0x3413('0x3')])[_0x3413('0x61')],path['parse'](_0x2fb58c[_0x3413('0x3')])[_0x3413('0x39')]);_0x5e9344[_0x3413('0x62')]=_0x2fb58c[_0x3413('0x3')];ut[_0x3413('0x45')](_0x3413('0x63'),'');ami[_0x3413('0x64')](ut[_0x3413('0x65')](_0x2fb58c,_0x5e9344))[_0x3413('0x44')](function(_0x2300a2){_0x1b13c8(_0x2300a2);})[_0x3413('0x3c')](function(_0x3f228c){_0x2c177d(_0x3f228c);});})['catch'](function(_0x2edec5){_0x2c177d(_0x2edec5);});}else{ami['Action'](ut[_0x3413('0x65')](_0x2fb58c,_0x5e9344))[_0x3413('0x44')](function(_0x35d954){_0x1b13c8(_0x35d954);})[_0x3413('0x3c')](function(_0x3971b3){_0x2c177d(_0x3971b3);});}});}Fax[_0x3413('0x1c')][_0x3413('0x66')]=function(_0x47d2e1,_0x5382a5){var _0x327321=this;return new BPromise(function(_0x12fec1,_0x2a1a34){var _0x105943=uuid['v4']();var _0x549776=ut['addVariables'](_0x47d2e1,_0x5382a5);_0x327321[_0x3413('0x12')][_0x105943]=new Action(_0x105943,_0x5382a5,_0x47d2e1);var _0x5196c4=_0x327321[_0x3413('0x12')][_0x105943];if(path[_0x3413('0x38')](_0x47d2e1['path'])[_0x3413('0x67')]===_0x3413('0x3a')){originate(_0x5196c4,_0x549776,!![])['then'](function(_0x35d2ca){_0x12fec1(_0x35d2ca);})['catch'](function(_0x20ec6e){_0x2a1a34(_0x20ec6e);});}else{originate(_0x5196c4,_0x549776,![])[_0x3413('0x44')](function(_0x4164f2){_0x12fec1(_0x4164f2);})['catch'](function(_0x248fae){_0x2a1a34(_0x248fae);});}});};Fax[_0x3413('0x1c')][_0x3413('0x68')]=function(_0x382395){return!_['isNil'](_0x382395)&&!_[_0x3413('0x69')](_0x382395['name'])&&!_[_0x3413('0x69')](_0x382395[_0x3413('0x6a')])&&_0x382395[_0x3413('0x6a')]&&!_[_0x3413('0x69')](this[_0x3413('0x11')][util[_0x3413('0x5d')](_0x3413('0x6b'),_0x382395[_0x3413('0x39')])])&&!_['isNil'](this[_0x3413('0x11')][util[_0x3413('0x5d')](_0x3413('0x6b'),_0x382395[_0x3413('0x39')])][_0x3413('0x2d')])&&(this['trunks'][util[_0x3413('0x5d')]('SIP/%s',_0x382395[_0x3413('0x39')])][_0x3413('0x2d')]===_0x3413('0x6c')||this[_0x3413('0x11')][util[_0x3413('0x5d')](_0x3413('0x6b'),_0x382395['name'])][_0x3413('0x2d')]===_0x3413('0x6d'));};Fax[_0x3413('0x1c')][_0x3413('0x5b')]=function(_0x248b00,_0x3a4f8b){if(!this[_0x3413('0x68')](_0x248b00)){ut[_0x3413('0x45')](_0x3413('0x6e'),_[_0x3413('0x69')](_0x248b00)?'':_0x248b00[_0x3413('0x39')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0x3413('0x6f')};}if(_['isNil'](_0x3a4f8b['fax'])){ut[_0x3413('0x45')](_0x3413('0x70'),JSON[_0x3413('0x4f')](_0x3a4f8b));return{'isValid':![],'message':_0x3413('0x71')};}if(_['isNil'](_0x3a4f8b['path'])){ut[_0x3413('0x45')](_0x3413('0x72'),JSON[_0x3413('0x4f')](_0x3a4f8b));return{'isValid':![],'message':_0x3413('0x73')};}return{'isValid':!![],'message':_0x3413('0x74')};};module[_0x3413('0x75')]=Fax;
\ No newline at end of file
+var _0x2dae=['Action','variablesAction','execOriginate','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','uuid','moment','path','tiff2pdf','fax','../ami','./rpcDb','./util/util','./action','../rpc/faxAccount','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','syncNewState','syncNewExten','faxstatus','syncFaxStatus','receivefax','hangup','syncOriginateResponse','prototype','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','syncReceiveFax','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','name','.pdf','then','catch','stringify','\x20receiveFax\x20','merge','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','updateStatus','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxstatusstring','send','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','isValid','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif'];(function(_0x323367,_0x47d37a){var _0x59bd4f=function(_0x585823){while(--_0x585823){_0x323367['push'](_0x323367['shift']());}};_0x59bd4f(++_0x47d37a);}(_0x2dae,0xe7));var _0xe2da=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0x2dae[_0x2892da];return _0x28cff2;};'use strict';var util=require(_0xe2da('0x0'));var _=require(_0xe2da('0x1'));var BPromise=require(_0xe2da('0x2'));var uuid=require(_0xe2da('0x3'));var moment=require(_0xe2da('0x4'));var path=require(_0xe2da('0x5'));var tiff2pdf=require(_0xe2da('0x6'));var gs=require('./util/gs');var logger=require('../../../config/logger')(_0xe2da('0x7'));var ami=require(_0xe2da('0x8'));var rpcDb=require(_0xe2da('0x9'));var Channel=require('./channel');var ut=require(_0xe2da('0xa'));var Action=require(_0xe2da('0xb'));var faxAccount=require(_0xe2da('0xc'));var attachment=require('../rpc/attachment');var faxMessage=require('../rpc/faxMessage');function Fax(_0x4458d1){this[_0xe2da('0xd')]={};this[_0xe2da('0xe')]=_0x4458d1[_0xe2da('0xe')];this[_0xe2da('0xf')]=_0x4458d1[_0xe2da('0xf')];this[_0xe2da('0x10')]={};ami['on'](_0xe2da('0x11'),this[_0xe2da('0x12')][_0xe2da('0x13')](this));ami['on'](_0xe2da('0x14'),this[_0xe2da('0x15')][_0xe2da('0x13')](this));ami['on']('newstate',this[_0xe2da('0x16')]['bind'](this));ami['on']('newexten',this[_0xe2da('0x17')][_0xe2da('0x13')](this));ami['on'](_0xe2da('0x18'),this[_0xe2da('0x19')][_0xe2da('0x13')](this));ami['on'](_0xe2da('0x1a'),this['syncReceiveFax'][_0xe2da('0x13')](this));ami['on'](_0xe2da('0x1b'),this['syncHangup']['bind'](this));ami['on']('originateresponse',this[_0xe2da('0x1c')]['bind'](this));}Fax[_0xe2da('0x1d')][_0xe2da('0x12')]=function(_0x552042){if(_0x552042['context']===_0xe2da('0x1e')){for(var _0xac75a9 in this[_0xe2da('0xe')]){if(this[_0xe2da('0xe')][_0xe2da('0x1f')](_0xac75a9)){if(_0x552042[_0xe2da('0x20')]===this['faxAccounts'][_0xac75a9][_0xe2da('0x21')]){this['channels'][_0x552042[_0xe2da('0x22')]]={};this['channels'][_0x552042['uniqueid']][_0xe2da('0x23')]=_0x552042[_0xe2da('0x23')];this['channels'][_0x552042[_0xe2da('0x22')]]['id']=this[_0xe2da('0xe')][_0xac75a9]['id'];this[_0xe2da('0xd')][_0x552042[_0xe2da('0x22')]]['name']=this[_0xe2da('0xe')][_0xac75a9]['name'];logger[_0xe2da('0x24')](_0x552042[_0xe2da('0x22')],_0xe2da('0x25'));}}}}if(this['actions'][_0x552042[_0xe2da('0x22')]]){this[_0xe2da('0xd')][_0x552042['uniqueid']]={};this[_0xe2da('0xd')][_0x552042[_0xe2da('0x22')]][_0xe2da('0x23')]=_0x552042['channel'];logger[_0xe2da('0x24')](_0x552042['uniqueid'],_0xe2da('0x25'));}};Fax['prototype'][_0xe2da('0x15')]=function(_0x3d48b1){if(this['channels'][_0x3d48b1[_0xe2da('0x22')]]){for(var _0x574041 in _0x3d48b1[_0xe2da('0x26')]){if(_0x3d48b1[_0xe2da('0x26')][_0xe2da('0x1f')](_0x574041)){this[_0xe2da('0xd')][_0x3d48b1[_0xe2da('0x22')]][_0x574041]=_0x3d48b1[_0xe2da('0x27')];}}}};Fax['prototype'][_0xe2da('0x16')]=function(_0x4626e7){if(this[_0xe2da('0xd')][_0x4626e7['uniqueid']]){this[_0xe2da('0xd')][_0x4626e7[_0xe2da('0x22')]][_0xe2da('0x28')]=_0x4626e7[_0xe2da('0x28')];this['channels'][_0x4626e7[_0xe2da('0x22')]][_0xe2da('0x29')]=_0x4626e7[_0xe2da('0x29')];}};Fax[_0xe2da('0x1d')][_0xe2da('0x17')]=function(_0x34eebf){if(this[_0xe2da('0xd')][_0x34eebf[_0xe2da('0x22')]]){for(var _0x24ca4a in _0x34eebf[_0xe2da('0x26')]){if(_0x34eebf[_0xe2da('0x26')][_0xe2da('0x1f')](_0x24ca4a)){this['channels'][_0x34eebf[_0xe2da('0x22')]][_0x24ca4a]=_0x34eebf[_0xe2da('0x27')];}}}};Fax[_0xe2da('0x1d')][_0xe2da('0x19')]=function(_0x18cd4e){if(this[_0xe2da('0xd')][_0x18cd4e[_0xe2da('0x22')]]){this[_0xe2da('0xd')][_0x18cd4e[_0xe2da('0x22')]][_0xe2da('0x2a')]=_0x18cd4e['operation'];this['channels'][_0x18cd4e['uniqueid']][_0xe2da('0x2b')]=_0x18cd4e[_0xe2da('0x2b')];this[_0xe2da('0xd')][_0x18cd4e[_0xe2da('0x22')]][_0xe2da('0x21')]=_0x18cd4e[_0xe2da('0x21')];this[_0xe2da('0xd')][_0x18cd4e[_0xe2da('0x22')]][_0xe2da('0x2c')]=_0x18cd4e[_0xe2da('0x2c')];logger[_0xe2da('0x24')](_0x18cd4e[_0xe2da('0x22')],_0xe2da('0x2d'));}};Fax[_0xe2da('0x1d')][_0xe2da('0x2e')]=function(_0xbb670){var _0x777698=this;if(this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]]){var _0x5e60a5=this[_0xe2da('0xd')][_0xbb670['uniqueid']]['id'];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x2f')]=_0xbb670[_0xe2da('0x2f')];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]]['pagestransferred']=_0xbb670[_0xe2da('0x30')];this['channels'][_0xbb670['uniqueid']][_0xe2da('0x21')]=_0xbb670[_0xe2da('0x21')];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x31')]=_0xbb670[_0xe2da('0x31')];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x32')]=_0xbb670['transferrate'];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x2c')]=_0xbb670[_0xe2da('0x2c')];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x33')]=_0xbb670['calleridnum'];if(this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x30')]>0x0){tiff2pdf(_0xbb670[_0xe2da('0x2c')],_0xe2da('0x34'),function(_0x43476a){logger[_0xe2da('0x24')](_0xbb670[_0xe2da('0x22')],_0xe2da('0x35'),_0x43476a[_0xe2da('0x36')]);attachment[_0xe2da('0x37')]({'name':path[_0xe2da('0x38')](_0xbb670[_0xe2da('0x2c')])[_0xe2da('0x39')],'basename':path[_0xe2da('0x38')](_0xbb670['filename'])[_0xe2da('0x39')]+_0xe2da('0x3a'),'type':'application/pdf'})[_0xe2da('0x3b')](function(_0x57ec5d){faxAccount['notify'](_0x5e60a5,{'from':_0xbb670[_0xe2da('0x33')],'mapKey':_0xe2da('0x7'),'body':path[_0xe2da('0x38')](_0xbb670[_0xe2da('0x2c')])[_0xe2da('0x39')]+'.pdf','AttachmentId':_0x57ec5d['id']})[_0xe2da('0x3c')](function(_0x16a65c){logger['error'](_0xbb670['uniqueid'],'\x20notify\x20',JSON[_0xe2da('0x3d')](_0x16a65c));});})[_0xe2da('0x3c')](function(_0x421b83){logger['error'](_0xbb670[_0xe2da('0x22')],_0xe2da('0x3e'),JSON['stringify'](_0x421b83));});});}logger[_0xe2da('0x24')](_0xbb670['uniqueid'],_0xe2da('0x3e'));}};Fax['prototype'][_0xe2da('0x1c')]=function(_0x556d8d){if(this[_0xe2da('0x10')][_0x556d8d[_0xe2da('0x22')]]){_[_0xe2da('0x3f')](this[_0xe2da('0xd')][_0x556d8d[_0xe2da('0x22')]],_['pick'](_0x556d8d,[_0xe2da('0x40'),_0xe2da('0x41')]));}};function updateStatus(_0x746668){if(_0x746668[_0xe2da('0x42')]){faxMessage[_0xe2da('0x43')](_0x746668[_0xe2da('0x42')],{'failMessage':_0xe2da('0x44')})[_0xe2da('0x3b')](function(_0x22b13a){ut[_0xe2da('0x45')](_0xe2da('0x46'),_0x22b13a);})[_0xe2da('0x3c')](function(_0x33e2a5){ut[_0xe2da('0x45')]('[Fax][Message][Error][NoUpdate1]',_0x33e2a5);});}else{ut['logger'](_0xe2da('0x47'));}}Fax['prototype'][_0xe2da('0x48')]=function(_0x2b3d93,_0x4cde52,_0x213578){var _0x386e9e=this;var _0x124439={};if(_0x4cde52){_0x124439={'read':_0x4cde52};}else{_0x124439={'failMessage':_0x213578};}if(this[_0xe2da('0x10')][_0x2b3d93][_0xe2da('0x42')]){faxMessage[_0xe2da('0x43')](this[_0xe2da('0x10')][_0x2b3d93]['AttachmentId'],_0x124439)[_0xe2da('0x3b')](function(_0x304b22){ut['logger']('[Fax][Message][Updated]',_0x304b22);})[_0xe2da('0x3c')](function(_0x4477fc){ut['logger']('[Fax][Message][NoUpdate1]',_0x4477fc);})[_0xe2da('0x49')](function(){delete _0x386e9e[_0xe2da('0xd')][_0x2b3d93];delete _0x386e9e[_0xe2da('0x10')][_0x2b3d93];});}else{ut[_0xe2da('0x45')](_0xe2da('0x4a'));delete this[_0xe2da('0xd')][_0x2b3d93];delete this['actions'][_0x2b3d93];}};Fax[_0xe2da('0x1d')][_0xe2da('0x4b')]=function(_0x44121b){var _0x26e73e=this;if(this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]]){if(this[_0xe2da('0x10')][_0x44121b[_0xe2da('0x22')]]){this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]]['id']=this[_0xe2da('0x10')][_0x44121b['uniqueid']]['id'];this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]]['name']=this[_0xe2da('0x10')][_0x44121b['uniqueid']][_0xe2da('0x39')];}logger['info'](_0x44121b['uniqueid'],this[_0xe2da('0x10')][_0x44121b[_0xe2da('0x22')]]?_0xe2da('0x4c'):_0xe2da('0x4d'),JSON[_0xe2da('0x3d')](this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]]));if(this[_0xe2da('0x10')][_0x44121b[_0xe2da('0x22')]]){if(this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]]['faxpages']>0x0&&this[_0xe2da('0xd')][_0x44121b['uniqueid']]['faxstatus']==='SUCCESS'){this['updateStatus'](_0x44121b[_0xe2da('0x22')],!![]);}else{this[_0xe2da('0x48')](_0x44121b['uniqueid'],![],this['channels'][_0x44121b[_0xe2da('0x22')]][_0xe2da('0x4e')]?'SENDING\x20FAILED:\x20'+this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]][_0xe2da('0x4e')]:'SENDING\x20FAILED');}}}};Fax[_0xe2da('0x1d')][_0xe2da('0x4f')]=function(_0xa3c84){var _0x41e191=this;return new BPromise(function(_0x49f3bb,_0xe3cbbc){_0x41e191['execOriginate'](_0xa3c84,_0x41e191[_0xe2da('0xe')][_0xa3c84[_0xe2da('0x50')]])['then'](function(_0xa85491){ut[_0xe2da('0x45')]('[Fax][execOriginate][success]',_0xa85491);_0x49f3bb(ut[_0xe2da('0x36')](_0xe2da('0x51')));})[_0xe2da('0x3c')](function(_0x5c4f36){ut['logger'](_0xe2da('0x52'),_0x5c4f36);updateStatus(_0xa3c84);_0xe3cbbc(ut[_0xe2da('0x36')](_0xe2da('0x53')));});});};Fax[_0xe2da('0x1d')]['checkAfterSend']=function(_0xba4fc7){var _0x40dbc5=this;return new BPromise(function(_0x4610fd,_0x43ee87){var _0x5bc573=_0x40dbc5[_0xe2da('0x54')](_0x40dbc5['faxAccounts'][_0xba4fc7[_0xe2da('0x50')]]['Trunk'],_0xba4fc7);if(_0x5bc573[_0xe2da('0x55')]){_0x4610fd(ut['message']('Trunk\x20Reachable'));}else{_0x43ee87(ut[_0xe2da('0x36')](_0x5bc573[_0xe2da('0x36')]));}});};function originate(_0x34b0cd,_0xfed3fa,_0x1143f3){return new BPromise(function(_0x1cbab8,_0x21921b){if(_0x1143f3){var _0x22bcb1=util[_0xe2da('0x56')](_0xe2da('0x57'),path[_0xe2da('0x38')](_0x34b0cd[_0xe2da('0x5')])[_0xe2da('0x39')],_0x34b0cd[_0xe2da('0x5')]);gs[_0xe2da('0x58')](_0x22bcb1)[_0xe2da('0x3b')](function(){_0x34b0cd['path']=util[_0xe2da('0x56')](_0xe2da('0x59'),path[_0xe2da('0x38')](_0x34b0cd[_0xe2da('0x5')])['dir'],path[_0xe2da('0x38')](_0x34b0cd[_0xe2da('0x5')])[_0xe2da('0x39')]);_0xfed3fa['XMF-PATH']=_0x34b0cd[_0xe2da('0x5')];ut[_0xe2da('0x45')]('Convert\x20pdf\x20to\x20tif','');ami[_0xe2da('0x5a')](ut[_0xe2da('0x5b')](_0x34b0cd,_0xfed3fa))[_0xe2da('0x3b')](function(_0x2a5ff8){_0x1cbab8(_0x2a5ff8);})['catch'](function(_0x19b1a9){_0x21921b(_0x19b1a9);});})['catch'](function(_0x32133d){_0x21921b(_0x32133d);});}else{ami[_0xe2da('0x5a')](ut[_0xe2da('0x5b')](_0x34b0cd,_0xfed3fa))[_0xe2da('0x3b')](function(_0x282608){_0x1cbab8(_0x282608);})[_0xe2da('0x3c')](function(_0x21d8b0){_0x21921b(_0x21d8b0);});}});}Fax[_0xe2da('0x1d')][_0xe2da('0x5c')]=function(_0x281d7f,_0x3c4435){var _0x31918d=this;return new BPromise(function(_0x380894,_0x408080){var _0xa8a7e8=uuid['v4']();var _0x4e1a05=ut['addVariables'](_0x281d7f,_0x3c4435);_0x31918d[_0xe2da('0x10')][_0xa8a7e8]=new Action(_0xa8a7e8,_0x3c4435,_0x281d7f);var _0x1b3b3a=_0x31918d[_0xe2da('0x10')][_0xa8a7e8];if(path[_0xe2da('0x38')](_0x281d7f[_0xe2da('0x5')])[_0xe2da('0x5d')]==='.pdf'){originate(_0x1b3b3a,_0x4e1a05,!![])[_0xe2da('0x3b')](function(_0x28aa3b){_0x380894(_0x28aa3b);})['catch'](function(_0x281afd){_0x408080(_0x281afd);});}else{originate(_0x1b3b3a,_0x4e1a05,![])[_0xe2da('0x3b')](function(_0x57007f){_0x380894(_0x57007f);})['catch'](function(_0x349c49){_0x408080(_0x349c49);});}});};Fax['prototype'][_0xe2da('0x5e')]=function(_0x4cafba){return!_[_0xe2da('0x5f')](_0x4cafba)&&!_[_0xe2da('0x5f')](_0x4cafba['name'])&&!_[_0xe2da('0x5f')](_0x4cafba[_0xe2da('0x60')])&&_0x4cafba[_0xe2da('0x60')]&&!_['isNil'](this[_0xe2da('0xf')][util[_0xe2da('0x56')](_0xe2da('0x61'),_0x4cafba[_0xe2da('0x39')])])&&!_['isNil'](this[_0xe2da('0xf')][util['format'](_0xe2da('0x61'),_0x4cafba['name'])][_0xe2da('0x2b')])&&(this[_0xe2da('0xf')][util[_0xe2da('0x56')](_0xe2da('0x61'),_0x4cafba[_0xe2da('0x39')])][_0xe2da('0x2b')]===_0xe2da('0x62')||this[_0xe2da('0xf')][util[_0xe2da('0x56')](_0xe2da('0x61'),_0x4cafba['name'])][_0xe2da('0x2b')]==='unmonitored');};Fax[_0xe2da('0x1d')]['checkTrunk']=function(_0x52d940,_0x5f2b85){if(!this[_0xe2da('0x5e')](_0x52d940)){ut[_0xe2da('0x45')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_[_0xe2da('0x5f')](_0x52d940)?'':_0x52d940['name']+_0xe2da('0x63'));return{'isValid':![],'message':_0xe2da('0x64')};}if(_['isNil'](_0x5f2b85['fax'])){ut[_0xe2da('0x45')](_0xe2da('0x65'),JSON[_0xe2da('0x3d')](_0x5f2b85));return{'isValid':![],'message':_0xe2da('0x66')};}if(_[_0xe2da('0x5f')](_0x5f2b85['path'])){ut['logger'](_0xe2da('0x67'),JSON[_0xe2da('0x3d')](_0x5f2b85));return{'isValid':![],'message':_0xe2da('0x68')};}return{'isValid':!![],'message':_0xe2da('0x69')};};module[_0xe2da('0x6a')]=Fax;
\ No newline at end of file
index 4d1cab6..88a4f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7839=['util','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect','then','notify','catch','[Notify]\x20'];(function(_0x2bc956,_0x14ceed){var _0x537775=function(_0x50946f){while(--_0x50946f){_0x2bc956['push'](_0x2bc956['shift']());}};_0x537775(++_0x14ceed);}(_0x7839,0x1bc));var _0x9783=function(_0x367894,_0x480759){_0x367894=_0x367894-0x0;var _0x5db8ce=_0x7839[_0x367894];return _0x5db8ce;};'use strict';var util=require(_0x9783('0x0'));var BPromise=require(_0x9783('0x1'));var logger=require(_0x9783('0x2'))(_0x9783('0x3'));var _=require(_0x9783('0x4'));var faxAccount=require(_0x9783('0x5'));function loggerCatch(_0x1c01b4){return function(_0x140c55){logger[_0x9783('0x6')](_0x1c01b4,util[_0x9783('0x7')](_0x140c55,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x175888,_0x4f3684){return BPromise['resolve']()[_0x9783('0x8')](faxAccount[_0x9783('0x9')](_0x175888,_0x4f3684))[_0x9783('0xa')](loggerCatch(_0x9783('0xb')));};
\ No newline at end of file
+var _0x170e=['notify','resolve','catch','[Notify]\x20','util','bluebird','preview','lodash','../rpc/faxAccount','error'];(function(_0x57ebd7,_0x5644cc){var _0x528e9d=function(_0x44ff99){while(--_0x44ff99){_0x57ebd7['push'](_0x57ebd7['shift']());}};_0x528e9d(++_0x5644cc);}(_0x170e,0x9a));var _0xe170=function(_0x212dad,_0xb862ef){_0x212dad=_0x212dad-0x0;var _0x4fea3f=_0x170e[_0x212dad];return _0x4fea3f;};'use strict';var util=require(_0xe170('0x0'));var BPromise=require(_0xe170('0x1'));var logger=require('../../../config/logger')(_0xe170('0x2'));var _=require(_0xe170('0x3'));var faxAccount=require(_0xe170('0x4'));function loggerCatch(_0x398b8d){return function(_0x2cbe95){logger[_0xe170('0x5')](_0x398b8d,util['inspect'](_0x2cbe95,{'showHidden':![],'depth':null}));};}exports[_0xe170('0x6')]=function(_0x594720,_0x4f1c48){return BPromise[_0xe170('0x7')]()['then'](faxAccount[_0xe170('0x6')](_0x594720,_0x4f1c48))[_0xe170('0x8')](loggerCatch(_0xe170('0x9')));};
\ No newline at end of file
index d052444..7efc834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdead=['bluebird','child_process','execute','info','Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger','fax'];(function(_0xa099dc,_0x20f4d1){var _0x5db1cf=function(_0x16f249){while(--_0x16f249){_0xa099dc['push'](_0xa099dc['shift']());}};_0x5db1cf(++_0x20f4d1);}(_0xdead,0x11f));var _0xddea=function(_0x395361,_0x318b82){_0x395361=_0x395361-0x0;var _0x47d106=_0xdead[_0x395361];return _0x47d106;};'use strict';var util=require(_0xddea('0x0'));var logger=require(_0xddea('0x1'))(_0xddea('0x2'));var BPromise=require(_0xddea('0x3'));var exec=require(_0xddea('0x4'))['exec'];exports[_0xddea('0x5')]=function(_0x1e9a2a){return new BPromise(function(_0x4d091a,_0x4e3a46){exec(_0x1e9a2a,function(_0xb5268a,_0x36d913,_0x2e8bd4){logger[_0xddea('0x6')](_0xddea('0x7'),_0x36d913);if(_0xb5268a){logger[_0xddea('0x6')](_0xddea('0x7'),_0xddea('0x8'),util[_0xddea('0x9')](_0xb5268a,{'showHidden':![],'depth':null}),_0x36d913,_0x2e8bd4);_0x4e3a46(_0xb5268a);}_0x4d091a(_0x36d913);});});};
\ No newline at end of file
+var _0x6d71=['execute','info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','fax','bluebird'];(function(_0x53693d,_0x5c088d){var _0x1c2668=function(_0x8bd913){while(--_0x8bd913){_0x53693d['push'](_0x53693d['shift']());}};_0x1c2668(++_0x5c088d);}(_0x6d71,0x17d));var _0x16d7=function(_0x50205f,_0x4df9bc){_0x50205f=_0x50205f-0x0;var _0x8e1089=_0x6d71[_0x50205f];return _0x8e1089;};'use strict';var util=require('util');var logger=require(_0x16d7('0x0'))(_0x16d7('0x1'));var BPromise=require(_0x16d7('0x2'));var exec=require('child_process')['exec'];exports[_0x16d7('0x3')]=function(_0x4226d2){return new BPromise(function(_0x331a45,_0x55460d){exec(_0x4226d2,function(_0xf43d85,_0x2ac794,_0x186158){logger[_0x16d7('0x4')](_0x16d7('0x5'),_0x2ac794);if(_0xf43d85){logger[_0x16d7('0x4')](_0x16d7('0x5'),_0x16d7('0x6'),util[_0x16d7('0x7')](_0xf43d85,{'showHidden':![],'depth':null}),_0x2ac794,_0x186158);_0x55460d(_0xf43d85);}_0x331a45(_0x2ac794);});});};
\ No newline at end of file
index 417c02a..f686a97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea0=['addVariables','ecm','minrate','maxrate','format','gateway','faxdetect','t38timeout','path','variablesAction','originate','channel','from-sip','headerinfo','util','moment','../../../../config/logger','fax','message','info','inspect'];(function(_0x2c0a57,_0x14ea07){var _0x2936ee=function(_0x3a72f5){while(--_0x3a72f5){_0x2c0a57['push'](_0x2c0a57['shift']());}};_0x2936ee(++_0x14ea07);}(_0xcea0,0x11f));var _0x0cea=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0xcea0[_0xaa1b3e];return _0x454d7d;};'use strict';var util=require(_0x0cea('0x0'));var _=require('lodash');var moment=require(_0x0cea('0x1'));var logger=require(_0x0cea('0x2'))(_0x0cea('0x3'));exports[_0x0cea('0x4')]=function(_0x7b1c78){return{'message':_0x7b1c78};};exports['logger']=function(_0x4dc1ed,_0x4ebd5e){logger[_0x0cea('0x5')](_0x4dc1ed,util[_0x0cea('0x6')](_0x4ebd5e,{'showHidden':![],'depth':null}));};exports[_0x0cea('0x7')]=function(_0x2d2701,_0x1fddb2){var _0x5202c1={'XMF-ECM':_0x1fddb2[_0x0cea('0x8')],'XMF-HEADERINFO':_0x1fddb2['headerinfo'],'XMF-MINRATE':_0x1fddb2[_0x0cea('0x9')],'XMF-MAXRATE':_0x1fddb2[_0x0cea('0xa')],'XMF-MODEM':util[_0x0cea('0xb')]('\x22%s\x22',_0x1fddb2['modem']),'XMF-GATEWAY':_0x1fddb2[_0x0cea('0xc')],'XMF-FAXDETECT':_0x1fddb2[_0x0cea('0xd')],'XMF-T38TIMEOUT':_0x1fddb2[_0x0cea('0xe')],'XMF-LOCALSTATIONID':_0x1fddb2['localstationid'],'XMF-PATH':_0x2d2701[_0x0cea('0xf')]};return _0x5202c1;};exports[_0x0cea('0x10')]=function(_0x1fc31d,_0x1675ee){return{'actionid':_0x1fc31d['uniqueid'],'action':_0x0cea('0x11'),'channel':_0x1fc31d[_0x0cea('0x12')],'Exten':'xcally-motion-fax','Context':_0x0cea('0x13'),'Priority':'1','callerid':util[_0x0cea('0xb')]('\x22%s\x22\x20<%s>',_0x1fc31d[_0x0cea('0x14')]?_0x1fc31d[_0x0cea('0x14')]:'',_0x1fc31d['localstationid']),'variable':_0x1675ee,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x1fc31d['uniqueid']};};
\ No newline at end of file
+var _0x0260=['path','variablesAction','uniqueid','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','util','fax','message','logger','info','inspect','addVariables','ecm','headerinfo','minrate','format','\x22%s\x22','modem','t38timeout','localstationid'];(function(_0x31b5dc,_0x8e17d1){var _0x47871e=function(_0x3c319b){while(--_0x3c319b){_0x31b5dc['push'](_0x31b5dc['shift']());}};_0x47871e(++_0x8e17d1);}(_0x0260,0x178));var _0x0026=function(_0x1abb09,_0x18ee91){_0x1abb09=_0x1abb09-0x0;var _0xea1c07=_0x0260[_0x1abb09];return _0xea1c07;};'use strict';var util=require(_0x0026('0x0'));var _=require('lodash');var moment=require('moment');var logger=require('../../../../config/logger')(_0x0026('0x1'));exports[_0x0026('0x2')]=function(_0x36bd18){return{'message':_0x36bd18};};exports[_0x0026('0x3')]=function(_0x38d788,_0x4ccf0d){logger[_0x0026('0x4')](_0x38d788,util[_0x0026('0x5')](_0x4ccf0d,{'showHidden':![],'depth':null}));};exports[_0x0026('0x6')]=function(_0x257437,_0x50f077){var _0x190e30={'XMF-ECM':_0x50f077[_0x0026('0x7')],'XMF-HEADERINFO':_0x50f077[_0x0026('0x8')],'XMF-MINRATE':_0x50f077[_0x0026('0x9')],'XMF-MAXRATE':_0x50f077['maxrate'],'XMF-MODEM':util[_0x0026('0xa')](_0x0026('0xb'),_0x50f077[_0x0026('0xc')]),'XMF-GATEWAY':_0x50f077['gateway'],'XMF-FAXDETECT':_0x50f077['faxdetect'],'XMF-T38TIMEOUT':_0x50f077[_0x0026('0xd')],'XMF-LOCALSTATIONID':_0x50f077[_0x0026('0xe')],'XMF-PATH':_0x257437[_0x0026('0xf')]};return _0x190e30;};exports[_0x0026('0x10')]=function(_0x518ff2,_0x1adf91){return{'actionid':_0x518ff2[_0x0026('0x11')],'action':_0x0026('0x12'),'channel':_0x518ff2[_0x0026('0x13')],'Exten':_0x0026('0x14'),'Context':_0x0026('0x15'),'Priority':'1','callerid':util[_0x0026('0xa')](_0x0026('0x16'),_0x518ff2[_0x0026('0x8')]?_0x518ff2[_0x0026('0x8')]:'',_0x518ff2['localstationid']),'variable':_0x1adf91,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x518ff2[_0x0026('0x11')]};};
\ No newline at end of file
index 5b9c8b0..6ac9c28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x874f=['./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/dynamics365','ami','get','hour','resolve','then','getTelephones','getTrunks','getVoiceQueues','initVoiceQueues','getTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','initDynamics365Accounts','getCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','catch','[index.js][initParams]','inspect','listen','sync','error','util','./server','./realtime','./report','./trigger','./dialer','./preview','./fax','./rpc/voiceCallReport','./rpc/trunk','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/zendesk'];(function(_0x58ac9b,_0x34477f){var _0x523cfe=function(_0x2cdad4){while(--_0x2cdad4){_0x58ac9b['push'](_0x58ac9b['shift']());}};_0x523cfe(++_0x34477f);}(_0x874f,0x1ba));var _0xf874=function(_0x47d493,_0x3bedfb){_0x47d493=_0x47d493-0x0;var _0x50242a=_0x874f[_0x47d493];return _0x50242a;};'use strict';var util=require(_0xf874('0x0'));var moment=require('moment');var server=require(_0xf874('0x1'));var Realtime=require(_0xf874('0x2'));var Report=require(_0xf874('0x3'));var Acw=require('./acw');var Trigger=require(_0xf874('0x4'));var Dialer=require(_0xf874('0x5'));var Preview=require(_0xf874('0x6'));var Fax=require(_0xf874('0x7'));var user=require('./rpc/user');var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0xf874('0x8'));var trunk=require(_0xf874('0x9'));var trigger=require('./rpc/trigger');var template=require('./rpc/template');var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0xf874('0xa'));var voiceExtension=require(_0xf874('0xb'));var faxAccount=require('./rpc/faxAccount');var zendesk=require(_0xf874('0xc'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0xf874('0xd'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0xf874('0xe'));var zoho=require(_0xf874('0xf'));var vtiger=require(_0xf874('0x10'));var freshsales=require(_0xf874('0x11'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0xf874('0x12'));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')(_0xf874('0x13'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xf874('0x14')](_0xf874('0x15'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0xf874('0x15'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0xf874('0x16')]()[_0xf874('0x17')](user['getAgents']())[_0xf874('0x17')](realtime['initAgents']())[_0xf874('0x17')](user[_0xf874('0x18')]())[_0xf874('0x17')](realtime['initTelephones']())[_0xf874('0x17')](trunk[_0xf874('0x19')]())[_0xf874('0x17')](realtime['initTrunks']())['then'](voiceQueue[_0xf874('0x1a')]())['then'](realtime[_0xf874('0x1b')]())['then'](trigger[_0xf874('0x1c')]())[_0xf874('0x17')](realtime['initTriggers']())[_0xf874('0x17')](template[_0xf874('0x1d')]())['then'](realtime[_0xf874('0x1e')]())['then'](zendesk[_0xf874('0x1f')]())['then'](realtime[_0xf874('0x20')]())[_0xf874('0x17')](salesforce[_0xf874('0x21')]())[_0xf874('0x17')](realtime[_0xf874('0x22')]())[_0xf874('0x17')](sugarcrm[_0xf874('0x23')]())[_0xf874('0x17')](realtime[_0xf874('0x24')]())['then'](freshdesk[_0xf874('0x25')]())['then'](realtime[_0xf874('0x26')]())[_0xf874('0x17')](desk[_0xf874('0x27')]())['then'](realtime[_0xf874('0x28')]())['then'](zoho[_0xf874('0x29')]())[_0xf874('0x17')](realtime['initZohoAccounts']())[_0xf874('0x17')](vtiger[_0xf874('0x2a')]())[_0xf874('0x17')](realtime[_0xf874('0x2b')]())[_0xf874('0x17')](freshsales[_0xf874('0x2c')]())[_0xf874('0x17')](realtime[_0xf874('0x2d')]())[_0xf874('0x17')](servicenow[_0xf874('0x2e')]())['then'](realtime[_0xf874('0x2f')]())[_0xf874('0x17')](dynamics365['getDynamics365Accounts']())[_0xf874('0x17')](realtime[_0xf874('0x30')]())['then'](campaign[_0xf874('0x31')]())[_0xf874('0x17')](realtime['initCampaigns']())['then'](voiceExtension[_0xf874('0x32')]())[_0xf874('0x17')](realtime[_0xf874('0x33')]())[_0xf874('0x17')](faxAccount[_0xf874('0x34')]())[_0xf874('0x17')](realtime[_0xf874('0x35')]())['then'](function(){return realtime;});}function initParams(){return Promise[_0xf874('0x16')]()['then'](voiceQueueReport['getVoiceQueueReports']())['then'](realtime['initVoiceQueueReports']())[_0xf874('0x17')](cmHopperHistory[_0xf874('0x36')]())[_0xf874('0x17')](realtime[_0xf874('0x37')]())[_0xf874('0x17')](cmHopperHistory[_0xf874('0x38')]())[_0xf874('0x17')](realtime[_0xf874('0x39')]())[_0xf874('0x17')](voiceCallReport[_0xf874('0x3a')]())[_0xf874('0x17')](realtime['initVoiceCallReports']())[_0xf874('0x3b')](function(_0x49832d){logger['error'](_0xf874('0x3c'),util[_0xf874('0x3d')](_0x49832d,{'showHidden':![],'depth':null}));});}function main(){return server[_0xf874('0x3e')](realtime,preview,fax)[_0xf874('0x17')](function(){return initRealtime();})[_0xf874('0x17')](function(){return initParams();})[_0xf874('0x17')](function(){report[_0xf874('0x3f')]();setInterval(initRealtime,0x1388);})[_0xf874('0x3b')](function(_0x97507e){logger[_0xf874('0x40')]('[index.js][main]',util['inspect'](_0x97507e,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0xbfa4=['initTemplates','getZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','initFreshsalesAccounts','getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','getFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','[index.js][initParams]','inspect','listen','[index.js][main]','util','moment','./server','./realtime','./report','./acw','./trigger','./dialer','./fax','./rpc/user','./rpc/voiceQueueReport','./rpc/trunk','./rpc/cmHopperHistory','./rpc/campaign','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/freshsales','./rpc/integrations/dynamics365','ami','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','getTriggers','initTriggers'];(function(_0x3f8d72,_0x35ce7d){var _0x2c0e0b=function(_0x261910){while(--_0x261910){_0x3f8d72['push'](_0x3f8d72['shift']());}};_0x2c0e0b(++_0x35ce7d);}(_0xbfa4,0xb1));var _0x4bfa=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xbfa4[_0x220dbb];return _0x2b77de;};'use strict';var util=require(_0x4bfa('0x0'));var moment=require(_0x4bfa('0x1'));var server=require(_0x4bfa('0x2'));var Realtime=require(_0x4bfa('0x3'));var Report=require(_0x4bfa('0x4'));var Acw=require(_0x4bfa('0x5'));var Trigger=require(_0x4bfa('0x6'));var Dialer=require(_0x4bfa('0x7'));var Preview=require('./preview');var Fax=require(_0x4bfa('0x8'));var user=require(_0x4bfa('0x9'));var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require(_0x4bfa('0xa'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x4bfa('0xb'));var trigger=require('./rpc/trigger');var template=require('./rpc/template');var cmHopperHistory=require(_0x4bfa('0xc'));var campaign=require(_0x4bfa('0xd'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require(_0x4bfa('0xe'));var zendesk=require(_0x4bfa('0xf'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x4bfa('0x10'));var freshdesk=require(_0x4bfa('0x11'));var desk=require(_0x4bfa('0x12'));var zoho=require(_0x4bfa('0x13'));var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0x4bfa('0x14'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x4bfa('0x15'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require('../../config/logger')(_0x4bfa('0x16'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x4bfa('0x17')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x4bfa('0x17')](_0x4bfa('0x18'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0x4bfa('0x19')]()[_0x4bfa('0x1a')](user[_0x4bfa('0x1b')]())['then'](realtime[_0x4bfa('0x1c')]())[_0x4bfa('0x1a')](user[_0x4bfa('0x1d')]())['then'](realtime[_0x4bfa('0x1e')]())[_0x4bfa('0x1a')](trunk[_0x4bfa('0x1f')]())['then'](realtime[_0x4bfa('0x20')]())[_0x4bfa('0x1a')](voiceQueue[_0x4bfa('0x21')]())['then'](realtime['initVoiceQueues']())[_0x4bfa('0x1a')](trigger[_0x4bfa('0x22')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x23')]())[_0x4bfa('0x1a')](template['getTemplates']())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x24')]())['then'](zendesk[_0x4bfa('0x25')]())[_0x4bfa('0x1a')](realtime['initZendeskAccounts']())['then'](salesforce[_0x4bfa('0x26')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x27')]())[_0x4bfa('0x1a')](sugarcrm[_0x4bfa('0x28')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x29')]())[_0x4bfa('0x1a')](freshdesk[_0x4bfa('0x2a')]())['then'](realtime[_0x4bfa('0x2b')]())[_0x4bfa('0x1a')](desk['getDeskAccounts']())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x2c')]())['then'](zoho[_0x4bfa('0x2d')]())['then'](realtime[_0x4bfa('0x2e')]())['then'](vtiger[_0x4bfa('0x2f')]())['then'](realtime[_0x4bfa('0x30')]())[_0x4bfa('0x1a')](freshsales['getFreshsalesAccounts']())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x31')]())['then'](servicenow[_0x4bfa('0x32')]())['then'](realtime['initServicenowAccounts']())['then'](dynamics365[_0x4bfa('0x33')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x34')]())[_0x4bfa('0x1a')](campaign[_0x4bfa('0x35')]())['then'](realtime[_0x4bfa('0x36')]())['then'](voiceExtension[_0x4bfa('0x37')]())['then'](realtime['initVoiceExtensions']())[_0x4bfa('0x1a')](faxAccount[_0x4bfa('0x38')]())['then'](realtime['initFaxAccounts']())['then'](function(){return realtime;});}function initParams(){return Promise[_0x4bfa('0x19')]()[_0x4bfa('0x1a')](voiceQueueReport[_0x4bfa('0x39')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x3a')]())[_0x4bfa('0x1a')](cmHopperHistory[_0x4bfa('0x3b')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x3c')]())[_0x4bfa('0x1a')](cmHopperHistory[_0x4bfa('0x3d')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x3e')]())[_0x4bfa('0x1a')](voiceCallReport[_0x4bfa('0x3f')]())['then'](realtime[_0x4bfa('0x40')]())[_0x4bfa('0x41')](function(_0x20bb44){logger[_0x4bfa('0x42')](_0x4bfa('0x43'),util[_0x4bfa('0x44')](_0x20bb44,{'showHidden':![],'depth':null}));});}function main(){return server[_0x4bfa('0x45')](realtime,preview,fax)['then'](function(){return initRealtime();})['then'](function(){return initParams();})[_0x4bfa('0x1a')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x4bfa('0x41')](function(_0x319955){logger[_0x4bfa('0x42')](_0x4bfa('0x46'),util[_0x4bfa('0x44')](_0x319955,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 260e8d7..309e0ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aa6=['omit','exports','lodash','util','md5','ioredis','../../../config/environment','redis','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','status','phone','interface','online','voiceStatus','voiceStatusTime','onhold','local','prototype','toLowerCase','not_inuse','inuse','talking','statePause','toNumber','format','voiceStatusQueue','stringify','user:%s','user:ami:update'];(function(_0x414304,_0x4dd89d){var _0x153543=function(_0x5ae7fd){while(--_0x5ae7fd){_0x414304['push'](_0x414304['shift']());}};_0x153543(++_0x4dd89d);}(_0x1aa6,0x1b2));var _0x61aa=function(_0x1e500e,_0x2c9d74){_0x1e500e=_0x1e500e-0x0;var _0x10dc5e=_0x1aa6[_0x1e500e];return _0x10dc5e;};'use strict';var _=require(_0x61aa('0x0'));var util=require(_0x61aa('0x1'));var moment=require('moment');var md5=require(_0x61aa('0x2'));var Redis=require(_0x61aa('0x3'));var config=require(_0x61aa('0x4'));config[_0x61aa('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x61aa('0x6'))(new Redis(config[_0x61aa('0x5')]));function Agent(_0x477e59){this['id']=_0x477e59['id']||0x0;this[_0x61aa('0x7')]=_0x477e59[_0x61aa('0x7')]||'';this[_0x61aa('0x8')]=_0x477e59[_0x61aa('0x8')]||'';this[_0x61aa('0x9')]=_0x477e59[_0x61aa('0x9')]||'';this[_0x61aa('0xa')]=_0x477e59[_0x61aa('0xa')]||'';this[_0x61aa('0xb')]=_0x61aa('0xc');this[_0x61aa('0xd')]=0x0;this[_0x61aa('0xe')]=_0x61aa('0xc');this['address']='';this[_0x61aa('0xf')]='';this['mobile']='';this[_0x61aa('0x10')]='';this[_0x61aa('0x11')]=_0x477e59[_0x61aa('0x11')]||![];this[_0x61aa('0x12')]=_0x61aa('0xc');this[_0x61aa('0x13')]=0x0;this['voiceStatusCallerIdNumber']='';this['voiceStatusQueue']='';this[_0x61aa('0x14')]=![];this[_0x61aa('0x15')]=![];this['md5']='';}Agent[_0x61aa('0x16')]['updateStatusRealtime']=function(_0x46212a){var _0x35a07e;if(_0x46212a&&_0x46212a[_0x61aa('0xb')]){_0x35a07e=_0x46212a[_0x61aa('0xb')][_0x61aa('0x17')]();switch(_0x35a07e){case _0x61aa('0x18'):_0x35a07e='idle';break;case _0x61aa('0x19'):_0x35a07e=_0x61aa('0x1a');break;}}if(_0x35a07e&&this[_0x61aa('0x12')]!==_0x35a07e||_0x46212a[_0x61aa('0x1b')]){this[_0x61aa('0x13')]=_[_0x61aa('0x1c')](moment()[_0x61aa('0x1d')]('x'));}if(_0x35a07e){this[_0x61aa('0x12')]=_0x35a07e;}var _0x277975={'id':this['id'],'name':this[_0x61aa('0x7')],'email':this[_0x61aa('0x8')],'accountcode':this['accountcode'],'fullname':this[_0x61aa('0xa')],'state':this['state'],'stateTime':this[_0x61aa('0xd')],'status':this['status'],'address':this['address'],'online':this[_0x61aa('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x61aa('0x13')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x61aa('0x1e')],'interface':this[_0x61aa('0x10')],'onhold':this[_0x61aa('0x14')]};var _0x5f3942=md5(JSON[_0x61aa('0x1f')](_0x277975));if(this[_0x61aa('0x2')]!==_0x5f3942){this[_0x61aa('0x2')]=_0x5f3942;io['to'](util[_0x61aa('0x1d')](_0x61aa('0x20'),_0x277975[_0x61aa('0x7')]))['emit'](_0x61aa('0x21'),_[_0x61aa('0x22')](_0x277975,[_0x61aa('0x11')]));io['emit']('user:presence',_0x277975);}};module[_0x61aa('0x23')]=Agent;
\ No newline at end of file
+var _0x4884=['voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','prototype','idle','inuse','talking','format','onhold','stringify','user:%s','emit','user:ami:update','omit','user:presence','exports','lodash','util','moment','md5','../../../config/environment','redis','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','address','phone','mobile','online'];(function(_0x4e074e,_0x35a42e){var _0x1fb96a=function(_0x432263){while(--_0x432263){_0x4e074e['push'](_0x4e074e['shift']());}};_0x1fb96a(++_0x35a42e);}(_0x4884,0xea));var _0x4488=function(_0x22f041,_0x438230){_0x22f041=_0x22f041-0x0;var _0x3d58f0=_0x4884[_0x22f041];return _0x3d58f0;};'use strict';var _=require(_0x4488('0x0'));var util=require(_0x4488('0x1'));var moment=require(_0x4488('0x2'));var md5=require(_0x4488('0x3'));var Redis=require('ioredis');var config=require(_0x4488('0x4'));config['redis']=_['defaults'](config[_0x4488('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x4488('0x6'))(new Redis(config[_0x4488('0x5')]));function Agent(_0x368b57){this['id']=_0x368b57['id']||0x0;this[_0x4488('0x7')]=_0x368b57[_0x4488('0x7')]||'';this['email']=_0x368b57[_0x4488('0x8')]||'';this[_0x4488('0x9')]=_0x368b57[_0x4488('0x9')]||'';this['fullname']=_0x368b57[_0x4488('0xa')]||'';this[_0x4488('0xb')]=_0x4488('0xc');this[_0x4488('0xd')]=0x0;this['status']=_0x4488('0xc');this[_0x4488('0xe')]='';this[_0x4488('0xf')]='';this[_0x4488('0x10')]='';this['interface']='';this[_0x4488('0x11')]=_0x368b57[_0x4488('0x11')]||![];this[_0x4488('0x12')]=_0x4488('0xc');this[_0x4488('0x13')]=0x0;this[_0x4488('0x14')]='';this[_0x4488('0x15')]='';this['onhold']=![];this[_0x4488('0x16')]=![];this['md5']='';}Agent[_0x4488('0x17')]['updateStatusRealtime']=function(_0x55a462){var _0x5d63e2;if(_0x55a462&&_0x55a462[_0x4488('0xb')]){_0x5d63e2=_0x55a462[_0x4488('0xb')]['toLowerCase']();switch(_0x5d63e2){case'not_inuse':_0x5d63e2=_0x4488('0x18');break;case _0x4488('0x19'):_0x5d63e2=_0x4488('0x1a');break;}}if(_0x5d63e2&&this[_0x4488('0x12')]!==_0x5d63e2||_0x55a462['statePause']){this[_0x4488('0x13')]=_['toNumber'](moment()[_0x4488('0x1b')]('x'));}if(_0x5d63e2){this[_0x4488('0x12')]=_0x5d63e2;}var _0x4431fe={'id':this['id'],'name':this[_0x4488('0x7')],'email':this['email'],'accountcode':this[_0x4488('0x9')],'fullname':this[_0x4488('0xa')],'state':this['state'],'stateTime':this[_0x4488('0xd')],'status':this['status'],'address':this[_0x4488('0xe')],'online':this[_0x4488('0x11')],'voiceStatus':this[_0x4488('0x12')],'voiceStatusTime':this[_0x4488('0x13')],'voiceStatusCallerIdNumber':this[_0x4488('0x14')],'voiceStatusQueue':this[_0x4488('0x15')],'interface':this['interface'],'onhold':this[_0x4488('0x1c')]};var _0x7f500c=md5(JSON[_0x4488('0x1d')](_0x4431fe));if(this['md5']!==_0x7f500c){this['md5']=_0x7f500c;io['to'](util[_0x4488('0x1b')](_0x4488('0x1e'),_0x4431fe['name']))[_0x4488('0x1f')](_0x4488('0x20'),_[_0x4488('0x21')](_0x4431fe,[_0x4488('0x11')]));io[_0x4488('0x1f')](_0x4488('0x22'),_0x4431fe);}};module[_0x4488('0x23')]=Agent;
\ No newline at end of file
index 30becc4..33847a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bb3=['dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence'];(function(_0x34c027,_0x123688){var _0x47bff0=function(_0x19c4a9){while(--_0x19c4a9){_0x34c027['push'](_0x34c027['shift']());}};_0x47bff0(++_0x123688);}(_0x4bb3,0x126));var _0x34bb=function(_0x2e04ef,_0x31a596){_0x2e04ef=_0x2e04ef-0x0;var _0x5722b0=_0x4bb3[_0x2e04ef];return _0x5722b0;};'use strict';function Campaign(_0x4b8b4a){this['id']=_0x4b8b4a['id']||0x0;this[_0x34bb('0x0')]=_0x4b8b4a['name']||'';this[_0x34bb('0x1')]=_0x4b8b4a['type']||_0x34bb('0x2');this[_0x34bb('0x3')]=0x0;this['temp']=0x0;this[_0x34bb('0x4')]=0x0;this[_0x34bb('0x5')]=0x0;this[_0x34bb('0x6')]='';this[_0x34bb('0x7')]=!![];this['active']=_0x4b8b4a[_0x34bb('0x8')];this[_0x34bb('0x9')]=_0x4b8b4a[_0x34bb('0x9')];this[_0x34bb('0xa')]=_0x4b8b4a['dialTimezone']||null;this[_0x34bb('0xb')]=_0x4b8b4a['dialGlobalInterval']?_0x4b8b4a[_0x34bb('0xb')]:null;this[_0x34bb('0xc')]=_0x4b8b4a[_0x34bb('0xc')];this['dialOriginateCallerIdNumber']=_0x4b8b4a['dialOriginateCallerIdNumber'];this['dialOriginateTimeout']=_0x4b8b4a[_0x34bb('0xd')]||0x1e;this['dialCongestionMaxRetry']=_0x4b8b4a[_0x34bb('0xe')];this[_0x34bb('0xf')]=_0x4b8b4a[_0x34bb('0xf')];this[_0x34bb('0x10')]=_0x4b8b4a['dialBusyMaxRetry'];this[_0x34bb('0x11')]=_0x4b8b4a[_0x34bb('0x11')];this['dialNoAnswerMaxRetry']=_0x4b8b4a[_0x34bb('0x12')];this[_0x34bb('0x13')]=_0x4b8b4a['dialNoAnswerRetryFrequency'];this[_0x34bb('0x14')]=_0x4b8b4a[_0x34bb('0x14')];this['dialNoSuchNumberMaxRetry']=_0x4b8b4a[_0x34bb('0x15')]||0x3;this[_0x34bb('0x16')]=_0x4b8b4a[_0x34bb('0x16')]||0x96;this['dialDropMaxRetry']=_0x4b8b4a['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x4b8b4a[_0x34bb('0x17')]||0x96;this[_0x34bb('0x18')]=_0x4b8b4a['dialAbandonedMaxRetry']||0x3;this[_0x34bb('0x19')]=_0x4b8b4a[_0x34bb('0x19')]||0x96;this[_0x34bb('0x1a')]=_0x4b8b4a[_0x34bb('0x1a')]||0x3;this[_0x34bb('0x1b')]=_0x4b8b4a[_0x34bb('0x1b')]||0x96;this[_0x34bb('0x1c')]=_0x4b8b4a[_0x34bb('0x1c')]||0x3;this[_0x34bb('0x1d')]=_0x4b8b4a[_0x34bb('0x1d')]||0x96;this[_0x34bb('0x1e')]=_0x4b8b4a['dialOrderByScheduledAt']||'DESC';this[_0x34bb('0x1f')]=_0x4b8b4a[_0x34bb('0x1f')]||undefined;this[_0x34bb('0x20')]=_0x4b8b4a[_0x34bb('0x20')]||undefined;this[_0x34bb('0x21')]=_0x4b8b4a['dialCutDigit']||undefined;this['TrunkBackup']=_0x4b8b4a['TrunkBackup']?_0x4b8b4a[_0x34bb('0x22')]:undefined;this[_0x34bb('0x23')]=_0x4b8b4a[_0x34bb('0x23')]?_0x4b8b4a['Trunk']:undefined;this[_0x34bb('0x24')]=_0x4b8b4a['Interval']?_0x4b8b4a[_0x34bb('0x24')]:undefined;this[_0x34bb('0x25')]=_0x4b8b4a[_0x34bb('0x25')]?_0x4b8b4a[_0x34bb('0x25')]:undefined;this['dialQueueProject']=_0x4b8b4a[_0x34bb('0x25')]?_0x4b8b4a['SquareProject'][_0x34bb('0x0')]:undefined;this['dialAMDActive']=_0x4b8b4a[_0x34bb('0x26')]||![];this[_0x34bb('0x27')]=_0x4b8b4a['dialAMDInitialSilence'];this[_0x34bb('0x28')]=_0x4b8b4a[_0x34bb('0x28')];this[_0x34bb('0x29')]=_0x4b8b4a[_0x34bb('0x29')];this['dialAMDTotalAnalysisTime']=_0x4b8b4a[_0x34bb('0x2a')];this[_0x34bb('0x2b')]=_0x4b8b4a[_0x34bb('0x2b')];this['dialAMDBetweenWordsSilence']=_0x4b8b4a['dialAMDBetweenWordsSilence'];this[_0x34bb('0x2c')]=_0x4b8b4a[_0x34bb('0x2c')];this['dialAMDSilenceThreshold']=_0x4b8b4a[_0x34bb('0x2d')];this[_0x34bb('0x2e')]=_0x4b8b4a['dialAMDMaximumWordLength'];}module[_0x34bb('0x2f')]=Campaign;
\ No newline at end of file
+var _0xfaae=['dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry'];(function(_0x6deaa8,_0x56a27f){var _0x3342e1=function(_0x3f82a3){while(--_0x3f82a3){_0x6deaa8['push'](_0x6deaa8['shift']());}};_0x3342e1(++_0x56a27f);}(_0xfaae,0xe7));var _0xefaa=function(_0x41aa7f,_0x590db3){_0x41aa7f=_0x41aa7f-0x0;var _0x576042=_0xfaae[_0x41aa7f];return _0x576042;};'use strict';function Campaign(_0x3ba8bd){this['id']=_0x3ba8bd['id']||0x0;this[_0xefaa('0x0')]=_0x3ba8bd[_0xefaa('0x0')]||'';this['type']=_0x3ba8bd[_0xefaa('0x1')]||'campaign';this[_0xefaa('0x2')]=0x0;this['temp']=0x0;this[_0xefaa('0x3')]=0x0;this[_0xefaa('0x4')]=0x0;this[_0xefaa('0x5')]='';this[_0xefaa('0x6')]=!![];this[_0xefaa('0x7')]=_0x3ba8bd[_0xefaa('0x7')];this[_0xefaa('0x8')]=_0x3ba8bd[_0xefaa('0x8')];this[_0xefaa('0x9')]=_0x3ba8bd['dialTimezone']||null;this[_0xefaa('0xa')]=_0x3ba8bd['dialGlobalInterval']?_0x3ba8bd['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x3ba8bd[_0xefaa('0xb')];this[_0xefaa('0xc')]=_0x3ba8bd['dialOriginateCallerIdNumber'];this[_0xefaa('0xd')]=_0x3ba8bd[_0xefaa('0xd')]||0x1e;this[_0xefaa('0xe')]=_0x3ba8bd[_0xefaa('0xe')];this[_0xefaa('0xf')]=_0x3ba8bd[_0xefaa('0xf')];this[_0xefaa('0x10')]=_0x3ba8bd['dialBusyMaxRetry'];this[_0xefaa('0x11')]=_0x3ba8bd[_0xefaa('0x11')];this[_0xefaa('0x12')]=_0x3ba8bd[_0xefaa('0x12')];this[_0xefaa('0x13')]=_0x3ba8bd[_0xefaa('0x13')];this[_0xefaa('0x14')]=_0x3ba8bd[_0xefaa('0x14')];this[_0xefaa('0x15')]=_0x3ba8bd[_0xefaa('0x15')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x3ba8bd[_0xefaa('0x16')]||0x96;this[_0xefaa('0x17')]=_0x3ba8bd[_0xefaa('0x17')]||0x3;this['dialDropRetryFrequency']=_0x3ba8bd[_0xefaa('0x18')]||0x96;this[_0xefaa('0x19')]=_0x3ba8bd[_0xefaa('0x19')]||0x3;this['dialAbandonedRetryFrequency']=_0x3ba8bd[_0xefaa('0x1a')]||0x96;this[_0xefaa('0x1b')]=_0x3ba8bd[_0xefaa('0x1b')]||0x3;this['dialMachineRetryFrequency']=_0x3ba8bd[_0xefaa('0x1c')]||0x96;this[_0xefaa('0x1d')]=_0x3ba8bd[_0xefaa('0x1d')]||0x3;this[_0xefaa('0x1e')]=_0x3ba8bd['dialAgentRejectRetryFrequency']||0x96;this[_0xefaa('0x1f')]=_0x3ba8bd['dialOrderByScheduledAt']||_0xefaa('0x20');this['dialPrefix']=_0x3ba8bd[_0xefaa('0x21')]||undefined;this[_0xefaa('0x22')]=_0x3ba8bd['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x3ba8bd[_0xefaa('0x23')]||undefined;this['TrunkBackup']=_0x3ba8bd[_0xefaa('0x24')]?_0x3ba8bd[_0xefaa('0x24')]:undefined;this['Trunk']=_0x3ba8bd[_0xefaa('0x25')]?_0x3ba8bd[_0xefaa('0x25')]:undefined;this[_0xefaa('0x26')]=_0x3ba8bd['Interval']?_0x3ba8bd[_0xefaa('0x26')]:undefined;this[_0xefaa('0x27')]=_0x3ba8bd['SquareProject']?_0x3ba8bd[_0xefaa('0x27')]:undefined;this['dialQueueProject']=_0x3ba8bd['SquareProject']?_0x3ba8bd[_0xefaa('0x27')]['name']:undefined;this[_0xefaa('0x28')]=_0x3ba8bd['dialAMDActive']||![];this[_0xefaa('0x29')]=_0x3ba8bd[_0xefaa('0x29')];this['dialAMDGreeting']=_0x3ba8bd['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0x3ba8bd[_0xefaa('0x2a')];this[_0xefaa('0x2b')]=_0x3ba8bd[_0xefaa('0x2b')];this[_0xefaa('0x2c')]=_0x3ba8bd[_0xefaa('0x2c')];this[_0xefaa('0x2d')]=_0x3ba8bd[_0xefaa('0x2d')];this[_0xefaa('0x2e')]=_0x3ba8bd[_0xefaa('0x2e')];this['dialAMDSilenceThreshold']=_0x3ba8bd[_0xefaa('0x2f')];this['dialAMDMaximumWordLength']=_0x3ba8bd[_0xefaa('0x30')];}module[_0xefaa('0x31')]=Campaign;
\ No newline at end of file
index 6d1ccda..1431b3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b10=['endtime','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime','type','monitor','monitorFilename','queue','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','starttime','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','context','exten','answered','answertime'];(function(_0x221231,_0xb42a6a){var _0x22fd0b=function(_0x1ef4b2){while(--_0x1ef4b2){_0x221231['push'](_0x221231['shift']());}};_0x22fd0b(++_0xb42a6a);}(_0x2b10,0x114));var _0x02b1=function(_0x3b4fe1,_0x47059e){_0x3b4fe1=_0x3b4fe1-0x0;var _0x2f3a08=_0x2b10[_0x3b4fe1];return _0x2f3a08;};'use strict';function Channel(){this[_0x02b1('0x0')]=null;this['channel']='';this[_0x02b1('0x1')]='';this[_0x02b1('0x2')]=0x0;this[_0x02b1('0x3')]='';this[_0x02b1('0x4')]=undefined;this[_0x02b1('0x5')]=undefined;this['accountcode']=0x0;this[_0x02b1('0x6')]='';this['uniqueid']=0x0;this['linkedid']=0x0;this[_0x02b1('0x7')]=0x0;this[_0x02b1('0x8')]=![];this[_0x02b1('0x9')]=null;this[_0x02b1('0xa')]=null;this['unmanaged']=![];this[_0x02b1('0xb')]=![];this[_0x02b1('0xc')]='';this[_0x02b1('0xd')]='';this[_0x02b1('0xe')]=0x0;this[_0x02b1('0xf')]=0x0;this[_0x02b1('0x10')]=0x0;this[_0x02b1('0x11')]=null;this['tag']=null;this['disposition']=null;this[_0x02b1('0x12')]=![];this[_0x02b1('0x13')]=null;this[_0x02b1('0x14')]=null;this['monitors']=[];this[_0x02b1('0x15')]=undefined;this[_0x02b1('0x16')]=undefined;this[_0x02b1('0x17')]=undefined;this[_0x02b1('0x18')]=0x0;}module[_0x02b1('0x19')]=Channel;
\ No newline at end of file
+var _0xe6da=['accountcode','uniqueid','answered','endtime','unmanaged','lastapplication','duration','billableseconds','holdtime','type','disposition','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','channel','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename'];(function(_0x2ad0f8,_0x538693){var _0x26c3cb=function(_0x4a72a6){while(--_0x4a72a6){_0x2ad0f8['push'](_0x2ad0f8['shift']());}};_0x26c3cb(++_0x538693);}(_0xe6da,0x1ee));var _0xae6d=function(_0x267eaa,_0x10e7f5){_0x267eaa=_0x267eaa-0x0;var _0x567a81=_0xe6da[_0x267eaa];return _0x567a81;};'use strict';function Channel(){this['starttime']=null;this[_0xae6d('0x0')]='';this[_0xae6d('0x1')]='';this[_0xae6d('0x2')]=0x0;this[_0xae6d('0x3')]='';this[_0xae6d('0x4')]=undefined;this[_0xae6d('0x5')]=undefined;this[_0xae6d('0x6')]=0x0;this['context']='';this[_0xae6d('0x7')]=0x0;this['linkedid']=0x0;this['exten']=0x0;this[_0xae6d('0x8')]=![];this['answertime']=null;this[_0xae6d('0x9')]=null;this[_0xae6d('0xa')]=![];this['abandoned']=![];this[_0xae6d('0xb')]='';this['lastdata']='';this[_0xae6d('0xc')]=0x0;this[_0xae6d('0xd')]=0x0;this[_0xae6d('0xe')]=0x0;this[_0xae6d('0xf')]=null;this['tag']=null;this[_0xae6d('0x10')]=null;this['monitor']=![];this[_0xae6d('0x11')]=null;this[_0xae6d('0x12')]=null;this[_0xae6d('0x13')]=[];this[_0xae6d('0x14')]=undefined;this[_0xae6d('0x15')]=undefined;this[_0xae6d('0x16')]=undefined;this[_0xae6d('0x17')]=0x0;}module[_0xae6d('0x18')]=Channel;
\ No newline at end of file
index 3c3a624..b91bbcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a3a=['exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations'];(function(_0x4207d1,_0x451e8f){var _0xfc0422=function(_0x8e2d0d){while(--_0x8e2d0d){_0x4207d1['push'](_0x4207d1['shift']());}};_0xfc0422(++_0x451e8f);}(_0x0a3a,0x1d5));var _0xa0a3=function(_0x786e9,_0x1a029){_0x786e9=_0x786e9-0x0;var _0x1f891b=_0x0a3a[_0x786e9];return _0x1f891b;};'use strict';function DeskAccount(_0x2b4451){this['id']=_0x2b4451['id']||0x0;this[_0xa0a3('0x0')]=_0x2b4451[_0xa0a3('0x0')]||'';this[_0xa0a3('0x1')]=_0x2b4451[_0xa0a3('0x1')]||'';this['remoteUri']=_0x2b4451[_0xa0a3('0x2')]||'';this[_0xa0a3('0x3')]=_0x2b4451['authType']||'';this[_0xa0a3('0x4')]=_0x2b4451['password']||'';this[_0xa0a3('0x5')]=_0x2b4451[_0xa0a3('0x5')]||'';this[_0xa0a3('0x6')]=_0x2b4451['consumerSecret']||'';this['token']=_0x2b4451[_0xa0a3('0x7')]||'';this['tokenSecret']=_0x2b4451[_0xa0a3('0x8')]||'';this[_0xa0a3('0x9')]=_0x2b4451['type']||'';this[_0xa0a3('0xa')]=_0x2b4451[_0xa0a3('0xa')]||'';this[_0xa0a3('0xb')]=_0x2b4451[_0xa0a3('0xb')]||{};}module[_0xa0a3('0xc')]=DeskAccount;
\ No newline at end of file
+var _0x61c4=['consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType','consumerKey'];(function(_0x2a19cf,_0x3b64cb){var _0xcf810b=function(_0x237ffd){while(--_0x237ffd){_0x2a19cf['push'](_0x2a19cf['shift']());}};_0xcf810b(++_0x3b64cb);}(_0x61c4,0x193));var _0x461c=function(_0x5ba223,_0x23afbe){_0x5ba223=_0x5ba223-0x0;var _0x1a08ac=_0x61c4[_0x5ba223];return _0x1a08ac;};'use strict';function DeskAccount(_0x46b2c7){this['id']=_0x46b2c7['id']||0x0;this[_0x461c('0x0')]=_0x46b2c7[_0x461c('0x0')]||'';this[_0x461c('0x1')]=_0x46b2c7['username']||'';this[_0x461c('0x2')]=_0x46b2c7[_0x461c('0x2')]||'';this[_0x461c('0x3')]=_0x46b2c7['authType']||'';this['password']=_0x46b2c7['password']||'';this[_0x461c('0x4')]=_0x46b2c7[_0x461c('0x4')]||'';this['consumerSecret']=_0x46b2c7[_0x461c('0x5')]||'';this['token']=_0x46b2c7[_0x461c('0x6')]||'';this[_0x461c('0x7')]=_0x46b2c7[_0x461c('0x7')]||'';this[_0x461c('0x8')]=_0x46b2c7[_0x461c('0x8')]||'';this[_0x461c('0x9')]=_0x46b2c7[_0x461c('0x9')]||'';this[_0x461c('0xa')]=_0x46b2c7[_0x461c('0xa')]||{};}module[_0x461c('0xb')]=DeskAccount;
\ No newline at end of file
index 4b0ffe6..4435641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a82=['Configurations','CloudProvider','exports','name','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication'];(function(_0x141026,_0x5f5839){var _0x442a3f=function(_0x278a55){while(--_0x278a55){_0x141026['push'](_0x141026['shift']());}};_0x442a3f(++_0x5f5839);}(_0x6a82,0x1c6));var _0x26a8=function(_0x52206f,_0x3fa60e){_0x52206f=_0x52206f-0x0;var _0x3ab962=_0x6a82[_0x52206f];return _0x3ab962;};'use strict';function Dynamics365Account(_0x3048a3){this['id']=_0x3048a3['id']||0x0;this[_0x26a8('0x0')]=_0x3048a3[_0x26a8('0x0')]||'';this['username']=_0x3048a3['username']||'';this[_0x26a8('0x1')]=_0x3048a3[_0x26a8('0x1')]||'';this[_0x26a8('0x2')]=_0x3048a3[_0x26a8('0x2')]||'';this[_0x26a8('0x3')]=_0x3048a3['tenantId']||'';this[_0x26a8('0x4')]=_0x3048a3[_0x26a8('0x4')]||'';this[_0x26a8('0x5')]=_0x3048a3['clientSecret']||{};this[_0x26a8('0x6')]=_0x3048a3[_0x26a8('0x6')]||'';this[_0x26a8('0x7')]=_0x3048a3[_0x26a8('0x7')]||![];this[_0x26a8('0x8')]=_0x3048a3[_0x26a8('0x8')]||{};this[_0x26a8('0x9')]=_0x3048a3[_0x26a8('0x9')]||{};}module[_0x26a8('0xa')]=Dynamics365Account;
\ No newline at end of file
+var _0xb7c8=['modernAuthentication','Configurations','CloudProvider','exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl'];(function(_0x66f3d3,_0x340a35){var _0x161326=function(_0x4cde3c){while(--_0x4cde3c){_0x66f3d3['push'](_0x66f3d3['shift']());}};_0x161326(++_0x340a35);}(_0xb7c8,0x94));var _0x8b7c=function(_0x1ac772,_0x285d30){_0x1ac772=_0x1ac772-0x0;var _0x2da529=_0xb7c8[_0x1ac772];return _0x2da529;};'use strict';function Dynamics365Account(_0x3975fe){this['id']=_0x3975fe['id']||0x0;this[_0x8b7c('0x0')]=_0x3975fe['name']||'';this[_0x8b7c('0x1')]=_0x3975fe['username']||'';this[_0x8b7c('0x2')]=_0x3975fe[_0x8b7c('0x2')]||'';this[_0x8b7c('0x3')]=_0x3975fe[_0x8b7c('0x3')]||'';this[_0x8b7c('0x4')]=_0x3975fe['tenantId']||'';this[_0x8b7c('0x5')]=_0x3975fe['clientId']||'';this[_0x8b7c('0x6')]=_0x3975fe['clientSecret']||{};this[_0x8b7c('0x7')]=_0x3975fe[_0x8b7c('0x7')]||'';this[_0x8b7c('0x8')]=_0x3975fe['modernAuthentication']||![];this[_0x8b7c('0x9')]=_0x3975fe[_0x8b7c('0x9')]||{};this[_0x8b7c('0xa')]=_0x3975fe[_0x8b7c('0xa')]||{};}module[_0x8b7c('0xb')]=Dynamics365Account;
\ No newline at end of file
index a6d221d..eac69d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d7=['tech','SIP','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout'];(function(_0x57a5af,_0x360142){var _0x5287f6=function(_0x368327){while(--_0x368327){_0x57a5af['push'](_0x57a5af['shift']());}};_0x5287f6(++_0x360142);}(_0xf4d7,0x7c));var _0x7f4d=function(_0x595b4f,_0x48cd3a){_0x595b4f=_0x595b4f-0x0;var _0x54fab5=_0xf4d7[_0x595b4f];return _0x54fab5;};'use strict';function FaxAccount(_0x2151ab){this['id']=_0x2151ab['id']||0x0;this[_0x7f4d('0x0')]=_0x2151ab[_0x7f4d('0x0')]||'';this[_0x7f4d('0x1')]=_0x2151ab[_0x7f4d('0x1')];this[_0x7f4d('0x2')]=_0x2151ab['ecm'];this[_0x7f4d('0x3')]=_0x2151ab[_0x7f4d('0x3')];this[_0x7f4d('0x4')]=_0x2151ab['localstationid'];this[_0x7f4d('0x5')]=_0x2151ab['minrate']||0x960;this[_0x7f4d('0x6')]=_0x2151ab['maxrate']||0x3840;this[_0x7f4d('0x7')]=_0x2151ab['modem']||_0x7f4d('0x8');this[_0x7f4d('0x9')]=_0x2151ab[_0x7f4d('0x9')]||'no';this[_0x7f4d('0xa')]=_0x2151ab[_0x7f4d('0xa')]||'no';this['t38timeout']=_0x2151ab[_0x7f4d('0xb')]||0x1388;this[_0x7f4d('0xc')]=_0x2151ab[_0x7f4d('0xc')]||_0x7f4d('0xd');this['Trunk']=_0x2151ab['Trunk']?_0x2151ab['Trunk']:undefined;this['ListId']=_0x2151ab[_0x7f4d('0xe')];this[_0x7f4d('0xf')]=_0x2151ab['key'];}module[_0x7f4d('0x10')]=FaxAccount;
\ No newline at end of file
+var _0x13ac=['localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo'];(function(_0xd5cefc,_0x677c71){var _0x155997=function(_0x3059b4){while(--_0x3059b4){_0xd5cefc['push'](_0xd5cefc['shift']());}};_0x155997(++_0x677c71);}(_0x13ac,0xb0));var _0xc13a=function(_0x583d3a,_0x309eec){_0x583d3a=_0x583d3a-0x0;var _0x3a8d4c=_0x13ac[_0x583d3a];return _0x3a8d4c;};'use strict';function FaxAccount(_0x1839cb){this['id']=_0x1839cb['id']||0x0;this[_0xc13a('0x0')]=_0x1839cb[_0xc13a('0x0')]||'';this[_0xc13a('0x1')]=_0x1839cb[_0xc13a('0x1')];this['ecm']=_0x1839cb[_0xc13a('0x2')];this[_0xc13a('0x3')]=_0x1839cb[_0xc13a('0x3')];this['localstationid']=_0x1839cb[_0xc13a('0x4')];this['minrate']=_0x1839cb[_0xc13a('0x5')]||0x960;this[_0xc13a('0x6')]=_0x1839cb[_0xc13a('0x6')]||0x3840;this['modem']=_0x1839cb[_0xc13a('0x7')]||_0xc13a('0x8');this[_0xc13a('0x9')]=_0x1839cb[_0xc13a('0x9')]||'no';this[_0xc13a('0xa')]=_0x1839cb[_0xc13a('0xa')]||'no';this[_0xc13a('0xb')]=_0x1839cb[_0xc13a('0xb')]||0x1388;this['tech']=_0x1839cb[_0xc13a('0xc')]||_0xc13a('0xd');this[_0xc13a('0xe')]=_0x1839cb[_0xc13a('0xe')]?_0x1839cb['Trunk']:undefined;this[_0xc13a('0xf')]=_0x1839cb[_0xc13a('0xf')];this['key']=_0x1839cb[_0xc13a('0x10')];}module[_0xc13a('0x11')]=FaxAccount;
\ No newline at end of file
index 12e1e2d..3f5b1b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3f=['apiKey','token','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x1024f8,_0x2db966){var _0x59ce85=function(_0x168611){while(--_0x168611){_0x1024f8['push'](_0x1024f8['shift']());}};_0x59ce85(++_0x2db966);}(_0xeb3f,0xae));var _0xfeb3=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xeb3f[_0x17d9e3];return _0x14192d;};'use strict';function FreshdeskAccount(_0x7d20f5){this['id']=_0x7d20f5['id']||0x0;this['name']=_0x7d20f5[_0xfeb3('0x0')]||'';this['username']=_0x7d20f5[_0xfeb3('0x1')]||'';this[_0xfeb3('0x2')]=_0x7d20f5[_0xfeb3('0x3')]||'';this['remoteUri']=_0x7d20f5[_0xfeb3('0x4')]||'';this[_0xfeb3('0x5')]=_0x7d20f5['serverUrl']||'';this['Configurations']=_0x7d20f5[_0xfeb3('0x6')]||{};}module[_0xfeb3('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0x5c60=['serverUrl','Configurations','exports','username','token'];(function(_0x1b7780,_0x4b9c6b){var _0xc8b61d=function(_0x504686){while(--_0x504686){_0x1b7780['push'](_0x1b7780['shift']());}};_0xc8b61d(++_0x4b9c6b);}(_0x5c60,0x1ca));var _0x05c6=function(_0xbf781c,_0x44fed4){_0xbf781c=_0xbf781c-0x0;var _0x549862=_0x5c60[_0xbf781c];return _0x549862;};'use strict';function FreshdeskAccount(_0x3daf6d){this['id']=_0x3daf6d['id']||0x0;this['name']=_0x3daf6d['name']||'';this[_0x05c6('0x0')]=_0x3daf6d[_0x05c6('0x0')]||'';this['apiKey']=_0x3daf6d[_0x05c6('0x1')]||'';this['remoteUri']=_0x3daf6d['remoteUri']||'';this[_0x05c6('0x2')]=_0x3daf6d[_0x05c6('0x2')]||'';this[_0x05c6('0x3')]=_0x3daf6d[_0x05c6('0x3')]||{};}module[_0x05c6('0x4')]=FreshdeskAccount;
\ No newline at end of file
index b1e303c..433e500 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9305=['Configurations','exports','name','username','apiKey','token','remoteUri','serverUrl'];(function(_0xef4ef0,_0x3c72f9){var _0x39b60b=function(_0x1d824c){while(--_0x1d824c){_0xef4ef0['push'](_0xef4ef0['shift']());}};_0x39b60b(++_0x3c72f9);}(_0x9305,0x1e2));var _0x5930=function(_0x788c48,_0x5c0e5e){_0x788c48=_0x788c48-0x0;var _0x299c14=_0x9305[_0x788c48];return _0x299c14;};'use strict';function FreshsalesAccount(_0x2a1952){this['id']=_0x2a1952['id']||0x0;this[_0x5930('0x0')]=_0x2a1952[_0x5930('0x0')]||'';this[_0x5930('0x1')]=_0x2a1952['username']||'';this[_0x5930('0x2')]=_0x2a1952[_0x5930('0x3')]||'';this[_0x5930('0x4')]=_0x2a1952[_0x5930('0x4')]||'';this['serverUrl']=_0x2a1952[_0x5930('0x5')]||'';this[_0x5930('0x6')]=_0x2a1952[_0x5930('0x6')]||{};}module[_0x5930('0x7')]=FreshsalesAccount;
\ No newline at end of file
+var _0x18af=['exports','name','username','remoteUri','serverUrl','Configurations'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x18af,0x8b));var _0xf18a=function(_0x4ab396,_0x19d73c){_0x4ab396=_0x4ab396-0x0;var _0x219196=_0x18af[_0x4ab396];return _0x219196;};'use strict';function FreshsalesAccount(_0x211cc7){this['id']=_0x211cc7['id']||0x0;this['name']=_0x211cc7[_0xf18a('0x0')]||'';this['username']=_0x211cc7[_0xf18a('0x1')]||'';this['apiKey']=_0x211cc7['token']||'';this['remoteUri']=_0x211cc7[_0xf18a('0x2')]||'';this[_0xf18a('0x3')]=_0x211cc7[_0xf18a('0x3')]||'';this[_0xf18a('0x4')]=_0x211cc7['Configurations']||{};}module[_0xf18a('0x5')]=FreshsalesAccount;
\ No newline at end of file
index 42a22dd..0029178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83dc=['queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','priority','holdtime','lastAssignedTo','motionChannel','voice','routealias','mohtime','variables','type','inbound','uniqueid','calleridnum','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon'];(function(_0x2b5e59,_0xd3e0dc){var _0x2e759e=function(_0x508dcf){while(--_0x508dcf){_0x2b5e59['push'](_0x2b5e59['shift']());}};_0x2e759e(++_0xd3e0dc);}(_0x83dc,0x7d));var _0xc83d=function(_0x32c5bf,_0x4b2b6a){_0x32c5bf=_0x32c5bf-0x0;var _0x5c7c8a=_0x83dc[_0x32c5bf];return _0x5c7c8a;};'use strict';function QueueReport(){this[_0xc83d('0x0')]=_0xc83d('0x1');this[_0xc83d('0x2')]='';this[_0xc83d('0x3')]='';this['calleridname']='';this[_0xc83d('0x4')]='';this[_0xc83d('0x5')]=null;this[_0xc83d('0x6')]=null;this[_0xc83d('0x7')]=0x1;this[_0xc83d('0x8')]=0x1;this[_0xc83d('0x9')]=![];this['queuecallerabandonAt']=null;this['queuecallercomplete']=![];this[_0xc83d('0xa')]=null;this[_0xc83d('0xb')]=![];this[_0xc83d('0xc')]=null;this[_0xc83d('0xd')]=0x1;this[_0xc83d('0xe')]='';this[_0xc83d('0xf')]='';this[_0xc83d('0x10')]='';this[_0xc83d('0x11')]='';this[_0xc83d('0x12')]='';this['exten']='';this[_0xc83d('0x13')]='';this[_0xc83d('0x14')]=0x0;this['assigned']=![];this[_0xc83d('0x15')]='';this[_0xc83d('0x16')]=_0xc83d('0x17');this[_0xc83d('0x18')]=null;this[_0xc83d('0x19')]=0x0;this[_0xc83d('0x1a')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0x2313=['routealias','mohtime','variables','exports','type','inbound','uniqueid','calleridname','queue','queuecallerleaveAt','position','count','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','originalposition','channel','connectedlinenum','connectedlinename','context','exten','priority','holdtime','assigned','lastAssignedTo','motionChannel','voice'];(function(_0x5283c8,_0x284a19){var _0x221b39=function(_0x2b101e){while(--_0x2b101e){_0x5283c8['push'](_0x5283c8['shift']());}};_0x221b39(++_0x284a19);}(_0x2313,0x163));var _0x3231=function(_0x3911be,_0x3053a6){_0x3911be=_0x3911be-0x0;var _0x4a1b7a=_0x2313[_0x3911be];return _0x4a1b7a;};'use strict';function QueueReport(){this[_0x3231('0x0')]=_0x3231('0x1');this[_0x3231('0x2')]='';this['calleridnum']='';this[_0x3231('0x3')]='';this[_0x3231('0x4')]='';this['queuecallerjoinAt']=null;this[_0x3231('0x5')]=null;this[_0x3231('0x6')]=0x1;this[_0x3231('0x7')]=0x1;this['queuecallerabandon']=![];this[_0x3231('0x8')]=null;this[_0x3231('0x9')]=![];this[_0x3231('0xa')]=null;this['queuecallerexit']=![];this['queuecallerexitAt']=null;this[_0x3231('0xb')]=0x1;this[_0x3231('0xc')]='';this[_0x3231('0xd')]='';this[_0x3231('0xe')]='';this['accountcode']='';this[_0x3231('0xf')]='';this[_0x3231('0x10')]='';this[_0x3231('0x11')]='';this[_0x3231('0x12')]=0x0;this[_0x3231('0x13')]=![];this[_0x3231('0x14')]='';this[_0x3231('0x15')]=_0x3231('0x16');this[_0x3231('0x17')]=null;this[_0x3231('0x18')]=0x0;this[_0x3231('0x19')]={};}module[_0x3231('0x1a')]=QueueReport;
\ No newline at end of file
index 6f948fe..9a2dfa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85dd=['Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl'];(function(_0x972082,_0x193ff0){var _0x124db6=function(_0x34948c){while(--_0x34948c){_0x972082['push'](_0x972082['shift']());}};_0x124db6(++_0x193ff0);}(_0x85dd,0x122));var _0xd85d=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x85dd[_0x49ca18];return _0x145d54;};'use strict';function SalesforceAccount(_0x2ca735){this['id']=_0x2ca735['id']||0x0;this['name']=_0x2ca735[_0xd85d('0x0')]||'';this['username']=_0x2ca735[_0xd85d('0x1')]||'';this[_0xd85d('0x2')]=_0x2ca735[_0xd85d('0x2')]||'';this[_0xd85d('0x3')]=_0x2ca735[_0xd85d('0x3')]||'';this[_0xd85d('0x4')]=_0x2ca735[_0xd85d('0x4')]||'';this[_0xd85d('0x5')]=_0x2ca735['clientSecret']||'';this[_0xd85d('0x6')]=_0x2ca735['securityToken']||'';this[_0xd85d('0x7')]=_0x2ca735[_0xd85d('0x7')]||_0xd85d('0x8');this[_0xd85d('0x9')]=_0x2ca735[_0xd85d('0x9')]||'';this[_0xd85d('0xa')]=_0x2ca735[_0xd85d('0xa')]||{};}module[_0xd85d('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0xc247=['exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','serverUrl','Configurations'];(function(_0x355250,_0x46287f){var _0x5d3c8d=function(_0x596523){while(--_0x596523){_0x355250['push'](_0x355250['shift']());}};_0x5d3c8d(++_0x46287f);}(_0xc247,0xfe));var _0x7c24=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xc247[_0x3b380d];return _0x54502b;};'use strict';function SalesforceAccount(_0xec41fe){this['id']=_0xec41fe['id']||0x0;this[_0x7c24('0x0')]=_0xec41fe[_0x7c24('0x0')]||'';this['username']=_0xec41fe[_0x7c24('0x1')]||'';this[_0x7c24('0x2')]=_0xec41fe['remoteUri']||'';this['password']=_0xec41fe[_0x7c24('0x3')]||'';this[_0x7c24('0x4')]=_0xec41fe[_0x7c24('0x4')]||'';this[_0x7c24('0x5')]=_0xec41fe[_0x7c24('0x5')]||'';this[_0x7c24('0x6')]=_0xec41fe[_0x7c24('0x6')]||'';this[_0x7c24('0x7')]=_0xec41fe[_0x7c24('0x7')]||'integrationTab';this[_0x7c24('0x8')]=_0xec41fe['serverUrl']||'';this['Configurations']=_0xec41fe[_0x7c24('0x9')]||{};}module[_0x7c24('0xa')]=SalesforceAccount;
\ No newline at end of file
index 14d9231..a21c95d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2592=['password','remoteUri','serverUrl','Configurations','exports','username'];(function(_0x58fcda,_0x1c3d13){var _0x8e4b88=function(_0x1da88a){while(--_0x1da88a){_0x58fcda['push'](_0x58fcda['shift']());}};_0x8e4b88(++_0x1c3d13);}(_0x2592,0x119));var _0x2259=function(_0x2876a0,_0x5a09e3){_0x2876a0=_0x2876a0-0x0;var _0x5c4aae=_0x2592[_0x2876a0];return _0x5c4aae;};'use strict';function ServicenowAccount(_0x30132b){this['id']=_0x30132b['id']||0x0;this['name']=_0x30132b['name']||'';this[_0x2259('0x0')]=_0x30132b[_0x2259('0x0')]||'';this[_0x2259('0x1')]=_0x30132b[_0x2259('0x1')]||'';this[_0x2259('0x2')]=_0x30132b[_0x2259('0x2')]||'';this['serverUrl']=_0x30132b[_0x2259('0x3')]||'';this['Configurations']=_0x30132b[_0x2259('0x4')]||{};}module[_0x2259('0x5')]=ServicenowAccount;
\ No newline at end of file
+var _0x5a55=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x30a900,_0x37daf9){var _0x31d7f3=function(_0x41373a){while(--_0x41373a){_0x30a900['push'](_0x30a900['shift']());}};_0x31d7f3(++_0x37daf9);}(_0x5a55,0x17b));var _0x55a5=function(_0x590851,_0x496bee){_0x590851=_0x590851-0x0;var _0x3b0115=_0x5a55[_0x590851];return _0x3b0115;};'use strict';function ServicenowAccount(_0x20e301){this['id']=_0x20e301['id']||0x0;this[_0x55a5('0x0')]=_0x20e301['name']||'';this[_0x55a5('0x1')]=_0x20e301[_0x55a5('0x1')]||'';this[_0x55a5('0x2')]=_0x20e301[_0x55a5('0x2')]||'';this['remoteUri']=_0x20e301[_0x55a5('0x3')]||'';this[_0x55a5('0x4')]=_0x20e301[_0x55a5('0x4')]||'';this[_0x55a5('0x5')]=_0x20e301[_0x55a5('0x5')]||{};}module[_0x55a5('0x6')]=ServicenowAccount;
\ No newline at end of file
index 16a32a2..1d10b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf20d=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x453ff8,_0x11ff7d){var _0x22aa85=function(_0x344ecf){while(--_0x344ecf){_0x453ff8['push'](_0x453ff8['shift']());}};_0x22aa85(++_0x11ff7d);}(_0xf20d,0x193));var _0xdf20=function(_0x46f942,_0x55012b){_0x46f942=_0x46f942-0x0;var _0x3fafb5=_0xf20d[_0x46f942];return _0x3fafb5;};'use strict';function SugarcrmAccount(_0xf882c9){this['id']=_0xf882c9['id']||0x0;this[_0xdf20('0x0')]=_0xf882c9[_0xdf20('0x0')]||'';this[_0xdf20('0x1')]=_0xf882c9[_0xdf20('0x1')]||'';this[_0xdf20('0x2')]=_0xf882c9[_0xdf20('0x2')]||'';this[_0xdf20('0x3')]=_0xf882c9['remoteUri']||'';this['serverUrl']=_0xf882c9[_0xdf20('0x4')]||'';this[_0xdf20('0x5')]=_0xf882c9['Configurations']||{};}module[_0xdf20('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x3ac2=['name','username','remoteUri','serverUrl','exports'];(function(_0x263b35,_0x421508){var _0x48168e=function(_0x3bb3a6){while(--_0x3bb3a6){_0x263b35['push'](_0x263b35['shift']());}};_0x48168e(++_0x421508);}(_0x3ac2,0x159));var _0x23ac=function(_0x576b95,_0x4a3165){_0x576b95=_0x576b95-0x0;var _0x4b744b=_0x3ac2[_0x576b95];return _0x4b744b;};'use strict';function SugarcrmAccount(_0x4d4ae9){this['id']=_0x4d4ae9['id']||0x0;this[_0x23ac('0x0')]=_0x4d4ae9[_0x23ac('0x0')]||'';this[_0x23ac('0x1')]=_0x4d4ae9['username']||'';this['password']=_0x4d4ae9['password']||'';this['remoteUri']=_0x4d4ae9[_0x23ac('0x2')]||'';this[_0x23ac('0x3')]=_0x4d4ae9[_0x23ac('0x3')]||'';this['Configurations']=_0x4d4ae9['Configurations']||{};}module[_0x23ac('0x4')]=SugarcrmAccount;
\ No newline at end of file
index 348c1d8..fd1418e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40be=['exports','name','unknown','status'];(function(_0x40f3fc,_0x233d19){var _0x2d0aa2=function(_0x9bdcd3){while(--_0x9bdcd3){_0x40f3fc['push'](_0x40f3fc['shift']());}};_0x2d0aa2(++_0x233d19);}(_0x40be,0x14d));var _0xe40b=function(_0x3e8c42,_0x590fc4){_0x3e8c42=_0x3e8c42-0x0;var _0x356097=_0x40be[_0x3e8c42];return _0x356097;};'use strict';function Telephone(_0x64e207){this['id']=_0x64e207['id']||0x0;this['name']=_0x64e207[_0xe40b('0x0')]||'';this['accountcode']=_0x64e207['accountcode']||'';this['state']=_0xe40b('0x1');this['stateTime']=0x0;this[_0xe40b('0x2')]=_0xe40b('0x1');this['address']='';}module[_0xe40b('0x3')]=Telephone;
\ No newline at end of file
+var _0xf51f=['status','address','name','accountcode','state','unknown','stateTime'];(function(_0x3f27fb,_0x3d3bec){var _0x5abfd8=function(_0x339c27){while(--_0x339c27){_0x3f27fb['push'](_0x3f27fb['shift']());}};_0x5abfd8(++_0x3d3bec);}(_0xf51f,0x191));var _0xff51=function(_0x102b0c,_0x33dee4){_0x102b0c=_0x102b0c-0x0;var _0x9b15ca=_0xf51f[_0x102b0c];return _0x9b15ca;};'use strict';function Telephone(_0x219c46){this['id']=_0x219c46['id']||0x0;this[_0xff51('0x0')]=_0x219c46[_0xff51('0x0')]||'';this[_0xff51('0x1')]=_0x219c46[_0xff51('0x1')]||'';this[_0xff51('0x2')]=_0xff51('0x3');this[_0xff51('0x4')]=0x0;this[_0xff51('0x5')]=_0xff51('0x3');this[_0xff51('0x6')]='';}module['exports']=Telephone;
\ No newline at end of file
index 4ffa548..a8e2fec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x32c307,_0x128a7e){var _0x290b24=function(_0x5e2ac3){while(--_0x5e2ac3){_0x32c307['push'](_0x32c307['shift']());}};_0x290b24(++_0x128a7e);}(_0xb10b,0x12a));var _0xbb10=function(_0x5a123f,_0x14cb93){_0x5a123f=_0x5a123f-0x0;var _0x40f3e8=_0xb10b[_0x5a123f];return _0x40f3e8;};'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(_0xee82c3,_0x4c3196){var _0x4c1b05=function(_0x284023){while(--_0x284023){_0xee82c3['push'](_0xee82c3['shift']());}};_0x4c1b05(++_0x4c3196);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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 a02ca25..93e6b33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['AllConditions','AnyConditions','Actions','exports','name','channel','status'];(function(_0x34cd1e,_0xaab8c0){var _0x26fe59=function(_0x23acd6){while(--_0x23acd6){_0x34cd1e['push'](_0x34cd1e['shift']());}};_0x26fe59(++_0xaab8c0);}(_0xb10b,0x12a));var _0xbb10=function(_0x3bab09,_0x217c29){_0x3bab09=_0x3bab09-0x0;var _0x164376=_0xb10b[_0x3bab09];return _0x164376;};'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 _0x14a0=['voice','status','AnyConditions','Actions','name','channel'];(function(_0x46717b,_0x93c604){var _0x262f8d=function(_0x2522ad){while(--_0x2522ad){_0x46717b['push'](_0x46717b['shift']());}};_0x262f8d(++_0x93c604);}(_0x14a0,0x8e));var _0x014a=function(_0x864393,_0x1b9d2b){_0x864393=_0x864393-0x0;var _0x275730=_0x14a0[_0x864393];return _0x275730;};'use strict';function Trigger(_0x1ee939){this['id']=_0x1ee939['id']||0x0;this[_0x014a('0x0')]=_0x1ee939[_0x014a('0x0')]||'';this[_0x014a('0x1')]=_0x1ee939[_0x014a('0x1')]||_0x014a('0x2');this[_0x014a('0x3')]=_0x1ee939[_0x014a('0x3')]||![];this['AllConditions']=_0x1ee939['AllConditions']||[];this[_0x014a('0x4')]=_0x1ee939[_0x014a('0x4')]||[];this[_0x014a('0x5')]=_0x1ee939['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
index fbdc2de..9b31ffa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3137=['address','defaultuser','exports','active','name','unknown','status','registry','indexOf','split','host','port','domain','domainport','refresh'];(function(_0x1ca9e9,_0x1c4391){var _0x309f3c=function(_0x5ab318){while(--_0x5ab318){_0x1ca9e9['push'](_0x1ca9e9['shift']());}};_0x309f3c(++_0x1c4391);}(_0x3137,0xd5));var _0x7313=function(_0x44ccbb,_0x2ea95a){_0x44ccbb=_0x44ccbb-0x0;var _0x2121bd=_0x3137[_0x44ccbb];return _0x2121bd;};'use strict';function Trunk(_0x40737c){this['id']=_0x40737c['id']||0x0;this[_0x7313('0x0')]=_0x40737c[_0x7313('0x0')]||![];this['name']=_0x40737c[_0x7313('0x1')]||'';this['state']=_0x7313('0x2');this['stateTime']=0x0;this[_0x7313('0x3')]='unknown';this[_0x7313('0x4')]=_0x40737c['registry']&&_0x40737c[_0x7313('0x4')][_0x7313('0x5')](':')?_0x40737c[_0x7313('0x4')][_0x7313('0x6')](':')[0x0]:'';this[_0x7313('0x7')]='';this[_0x7313('0x8')]='';this[_0x7313('0x9')]='';this[_0x7313('0xa')]='';this[_0x7313('0xb')]='';this['stateRegistry']='unknown';this['registrationtime']='';this[_0x7313('0xc')]='';this[_0x7313('0xd')]=_0x40737c[_0x7313('0xd')]||'';}module[_0x7313('0xe')]=Trunk;
\ No newline at end of file
+var _0xca94=['exports','active','name','state','unknown','registry','indexOf','host','port','domainport','refresh','stateRegistry','address'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xca94,0xde));var _0x4ca9=function(_0x200aa5,_0x197802){_0x200aa5=_0x200aa5-0x0;var _0x458200=_0xca94[_0x200aa5];return _0x458200;};'use strict';function Trunk(_0x567777){this['id']=_0x567777['id']||0x0;this[_0x4ca9('0x0')]=_0x567777['active']||![];this[_0x4ca9('0x1')]=_0x567777['name']||'';this[_0x4ca9('0x2')]='unknown';this['stateTime']=0x0;this['status']=_0x4ca9('0x3');this['registry']=_0x567777[_0x4ca9('0x4')]&&_0x567777['registry'][_0x4ca9('0x5')](':')?_0x567777['registry']['split'](':')[0x0]:'';this[_0x4ca9('0x6')]='';this[_0x4ca9('0x7')]='';this['domain']='';this[_0x4ca9('0x8')]='';this[_0x4ca9('0x9')]='';this[_0x4ca9('0xa')]=_0x4ca9('0x3');this['registrationtime']='';this[_0x4ca9('0xb')]='';this['defaultuser']=_0x567777['defaultuser']||'';}module[_0x4ca9('0xc')]=Trunk;
\ No newline at end of file
index 9fa9f4f..b7cf388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a91=['recordingFormat','mandatoryDisposition','exten'];(function(_0x509273,_0x13fc9f){var _0x38ef40=function(_0xf8d4c9){while(--_0xf8d4c9){_0x509273['push'](_0x509273['shift']());}};_0x38ef40(++_0x13fc9f);}(_0x9a91,0x1df));var _0x19a9=function(_0x1ab0c3,_0x1b3507){_0x1ab0c3=_0x1ab0c3-0x0;var _0x413960=_0x9a91[_0x1ab0c3];return _0x413960;};'use strict';function voiceExtension(_0x1d7325){this['id']=_0x1d7325['id']||0x0;this['exten']=_0x1d7325[_0x19a9('0x0')]||'';this[_0x19a9('0x1')]=_0x1d7325[_0x19a9('0x1')]||'none';this['mandatoryDisposition']=_0x1d7325[_0x19a9('0x2')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0x6721=['exports','exten','none','mandatoryDisposition'];(function(_0x560434,_0x339ec1){var _0x24e61d=function(_0x14291c){while(--_0x14291c){_0x560434['push'](_0x560434['shift']());}};_0x24e61d(++_0x339ec1);}(_0x6721,0xe5));var _0x1672=function(_0x91829,_0x57edac){_0x91829=_0x91829-0x0;var _0x5e5f1f=_0x6721[_0x91829];return _0x5e5f1f;};'use strict';function voiceExtension(_0x479271){this['id']=_0x479271['id']||0x0;this[_0x1672('0x0')]=_0x479271[_0x1672('0x0')]||'';this['recordingFormat']=_0x479271['recordingFormat']||_0x1672('0x1');this[_0x1672('0x2')]=_0x479271[_0x1672('0x2')]||![];}module[_0x1672('0x3')]=voiceExtension;
\ No newline at end of file
index cea32cc..b11b304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0578=['TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','startPredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated','exports','wav','wav49','gsm','fewestcalls','leastrecent','random','ringall','rrmemory','rrordered','name','monitor_format','type','inbound','waiting','total','answered','unmanaged','abandoned','available','busy','inUse','invalid','notInUse','onHold','ringing','ringInUse','unavailable','unknown','acw','acwTimeout','autopause','sendMessageOneNotActive','message','statusMessage','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk'];(function(_0x8ca736,_0x3fc494){var _0x5f2e02=function(_0x295856){while(--_0x295856){_0x8ca736['push'](_0x8ca736['shift']());}};_0x5f2e02(++_0x3fc494);}(_0x0578,0x1b8));var _0x8057=function(_0x42facb,_0x168820){_0x42facb=_0x42facb-0x0;var _0x4d8c9e=_0x0578[_0x42facb];return _0x4d8c9e;};'use strict';var monitorFormat={'wav':_0x8057('0x0'),'wav49':_0x8057('0x1'),'gsm':_0x8057('0x2')};var strategy={'fewestcalls':_0x8057('0x3'),'leastrecent':_0x8057('0x4'),'linear':'linear','random':_0x8057('0x5'),'ringall':_0x8057('0x6'),'rr':'roundrobin','rrmemory':_0x8057('0x7'),'rrordered':_0x8057('0x8'),'wrandom':'wrandom'};function VoiceQueue(_0x1b142e){this['id']=_0x1b142e['id']||0x0;this['name']=_0x1b142e[_0x8057('0x9')]||'';this[_0x8057('0xa')]=_0x1b142e['monitor_format']||'';this[_0x8057('0xb')]=_0x1b142e['type']||_0x8057('0xc');this[_0x8057('0xd')]=0x0;this[_0x8057('0xe')]=0x0;this[_0x8057('0xf')]=0x0;this['sumDuration']=0x0;this['sumHoldTime']=0x0;this['sumBillable']=0x0;this[_0x8057('0x10')]=0x0;this[_0x8057('0x11')]=0x0;this[_0x8057('0x12')]=0x0;this[_0x8057('0x13')]=0x0;this[_0x8057('0x14')]=0x0;this[_0x8057('0x15')]=0x0;this['loggedIn']=0x0;this[_0x8057('0x16')]=0x0;this[_0x8057('0x17')]=0x0;this['paused']=0x0;this[_0x8057('0x18')]=0x0;this[_0x8057('0x19')]=0x0;this['talking']=0x0;this[_0x8057('0x1a')]=0x0;this[_0x8057('0x1b')]=0x0;this['acw']=_0x1b142e[_0x8057('0x1c')]||![];this[_0x8057('0x1d')]=_0x1b142e[_0x8057('0x1d')]||0xa;this['autopause']=_0x1b142e[_0x8057('0x1e')]||'no';this[_0x8057('0x1f')]=!![];this[_0x8057('0x20')]='';this[_0x8057('0x21')]='';this[_0x8057('0x22')]=0x0;this[_0x8057('0x23')]=0x0;this[_0x8057('0x24')]=_0x1b142e[_0x8057('0x24')]||null;this[_0x8057('0x25')]=_0x1b142e[_0x8057('0x25')]?_0x1b142e['dialGlobalInterval']:null;this[_0x8057('0x26')]=_0x1b142e[_0x8057('0x26')];this[_0x8057('0x27')]=_0x1b142e[_0x8057('0x27')]||'progressive';this[_0x8057('0x28')]=_0x1b142e[_0x8057('0x28')]||0x0;this[_0x8057('0x29')]=_0x1b142e[_0x8057('0x29')]||0x0;this[_0x8057('0x2a')]=_0x1b142e[_0x8057('0x2a')]||0x1;this[_0x8057('0x2b')]=_0x1b142e[_0x8057('0x2b')]||_0x8057('0x2c');this[_0x8057('0x2d')]=_0x1b142e[_0x8057('0x2d')]||0.03;this[_0x8057('0x2e')]=_0x1b142e['dialPredictiveInterval']||0x258;this[_0x8057('0x2f')]=_0x1b142e[_0x8057('0x2f')]||'anonymous';this[_0x8057('0x30')]=_0x1b142e[_0x8057('0x30')]||'anonymous';this[_0x8057('0x31')]=_0x1b142e[_0x8057('0x31')]||0x1e;this['dialQueueOptions']=_0x1b142e[_0x8057('0x32')]||_0x8057('0x33');this['dialQueueTimeout']=_0x1b142e[_0x8057('0x34')]||0x3;this[_0x8057('0x35')]=_0x1b142e[_0x8057('0x35')]||undefined;this[_0x8057('0x36')]=_0x1b142e[_0x8057('0x36')]||0x3;this[_0x8057('0x37')]=_0x1b142e['dialCongestionRetryFrequency']||0x96;this[_0x8057('0x38')]=_0x1b142e[_0x8057('0x38')]||0x3;this[_0x8057('0x39')]=_0x1b142e['dialBusyRetryFrequency']||0x96;this[_0x8057('0x3a')]=_0x1b142e[_0x8057('0x3a')]||0x3;this[_0x8057('0x3b')]=_0x1b142e['dialNoAnswerRetryFrequency']||0x96;this[_0x8057('0x3c')]=_0x1b142e['dialNoSuchNumberMaxRetry']||0x3;this['dialNoSuchNumberRetryFrequency']=_0x1b142e[_0x8057('0x3d')]||0x96;this['dialDropMaxRetry']=_0x1b142e['dialDropMaxRetry']||0x3;this[_0x8057('0x3e')]=_0x1b142e['dialDropRetryFrequency']||0x96;this[_0x8057('0x3f')]=_0x1b142e['dialAbandonedMaxRetry']||0x3;this[_0x8057('0x40')]=_0x1b142e['dialAbandonedRetryFrequency']||0x96;this[_0x8057('0x41')]=_0x1b142e[_0x8057('0x41')]||0x3;this[_0x8057('0x42')]=_0x1b142e[_0x8057('0x42')]||0x96;this[_0x8057('0x43')]=_0x1b142e[_0x8057('0x43')]||0x3;this['dialAgentRejectRetryFrequency']=_0x1b142e[_0x8057('0x44')]||0x96;this[_0x8057('0x45')]=_0x1b142e[_0x8057('0x45')]||0x3;this['dialGlobalMaxRetry']=_0x1b142e[_0x8057('0x46')]||0x4;this[_0x8057('0x47')]=_0x1b142e[_0x8057('0x47')]?_0x1b142e['Trunk']:undefined;this[_0x8057('0x48')]=_0x1b142e[_0x8057('0x48')]?_0x1b142e['TrunkBackup']:undefined;this['dialPrefix']=_0x1b142e[_0x8057('0x49')]||undefined;this[_0x8057('0x4a')]=_0x1b142e[_0x8057('0x4a')]?_0x1b142e[_0x8057('0x4a')]:undefined;this[_0x8057('0x4b')]=_0x1b142e[_0x8057('0x4b')]||_0x8057('0x4c');this[_0x8057('0x4d')]=_0x1b142e[_0x8057('0x4d')]||undefined;this[_0x8057('0x4e')]=_0x1b142e[_0x8057('0x4e')]||undefined;this[_0x8057('0x4f')]=strategy[_0x1b142e['strategy']];this[_0x8057('0x50')]=!![];this[_0x8057('0x51')]=_0x1b142e[_0x8057('0x51')]||![];this[_0x8057('0x52')]=_0x1b142e[_0x8057('0x52')];this[_0x8057('0x53')]=_0x1b142e[_0x8057('0x53')];this[_0x8057('0x54')]=_0x1b142e[_0x8057('0x54')];this[_0x8057('0x55')]=_0x1b142e[_0x8057('0x55')];this['dialAMDMinWordLength']=_0x1b142e[_0x8057('0x56')];this[_0x8057('0x57')]=_0x1b142e['dialAMDBetweenWordsSilence'];this[_0x8057('0x58')]=_0x1b142e[_0x8057('0x58')];this[_0x8057('0x59')]=_0x1b142e[_0x8057('0x59')];this[_0x8057('0x5a')]=_0x1b142e['dialAMDMaximumWordLength'];this[_0x8057('0x5b')]=0x0;this['pTalking']=0x0;this['timeout']=_0x1b142e['timeout'];this['outboundAnswerCallsDay']=0x0;this[_0x8057('0x5c')]=0x0;this[_0x8057('0x5d')]=0x0;this[_0x8057('0x5e')]=0x0;this[_0x8057('0x5f')]=0x0;this['outboundNoSuchCallsDay']=0x0;this['outboundUnknownCallsDay']=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0x8057('0x60')]=0x0;this[_0x8057('0x61')]=0x0;this[_0x8057('0x62')]=0x0;this[_0x8057('0x63')]=0x0;this[_0x8057('0x64')]=0x0;this['outboundAbandonedDay']=0x0;this[_0x8057('0x65')]=undefined;this[_0x8057('0x66')]=undefined;this['handlePredictive']=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x8057('0x67')]=0x0;this[_0x8057('0x68')]=0x0;this[_0x8057('0x69')]=0x0;this[_0x8057('0x6a')]=0x0;this[_0x8057('0x6b')]=0x0;this[_0x8057('0x6c')]=0x0;this[_0x8057('0x6d')]=0x0;this[_0x8057('0x6e')]=0x0;this[_0x8057('0x6f')]=_0x1b142e[_0x8057('0x70')]||0x14;this[_0x8057('0x71')]=_0x1b142e[_0x8057('0x70')]||0xa;this[_0x8057('0x72')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0x8057('0x73')]=0x1;this[_0x8057('0x74')]=0x0;this[_0x8057('0x75')]=0x0;this[_0x8057('0x76')]=0x0;this['erlangBusyFactor']=0x0;this['dialRecallMeTimeout']=_0x1b142e['dialRecallMeTimeout']||0x1e;this[_0x8057('0x77')]=_0x1b142e['dialRecallInQueue']||![];this[_0x8057('0x78')]=!!_0x1b142e['dialPreviewAutoRecallMe']||![];this['dialPreviewRecallmeReminder']=!!_0x1b142e[_0x8057('0x79')]||![];this[_0x8057('0x7a')]=_0x1b142e['dialQueueProject2']||undefined;this['dialAgiAfterHangupClient']=_0x1b142e[_0x8057('0x7b')]||![];this['dialAgiAfterHangupAgent']=_0x1b142e['dialAgiAfterHangupAgent']||![];this[_0x8057('0xa')]=monitorFormat[_0x1b142e[_0x8057('0xa')]]?monitorFormat[_0x1b142e['monitor_format']]:undefined;this[_0x8057('0x7c')]=_0x1b142e[_0x8057('0x7c')]||![];this[_0x8057('0x7d')]=_0x1b142e[_0x8057('0x7d')]?_0x1b142e[_0x8057('0x7d')]:undefined;this[_0x8057('0x7e')]=![];}module[_0x8057('0x7f')]=VoiceQueue;
\ No newline at end of file
+var _0x5bd7=['dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated','wav49','gsm','fewestcalls','linear','ringall','roundrobin','rrordered','wrandom','name','monitor_format','type','inbound','waiting','answered','sumBillable','unmanaged','abandoned','busy','inUse','invalid','loggedIn','notInUse','onHold','talking','unavailable','unknown','acw','acwTimeout','autopause','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5bd7,0x12a));var _0x75bd=function(_0x11c281,_0x7fe6f0){_0x11c281=_0x11c281-0x0;var _0x671947=_0x5bd7[_0x11c281];return _0x671947;};'use strict';var monitorFormat={'wav':'wav','wav49':_0x75bd('0x0'),'gsm':_0x75bd('0x1')};var strategy={'fewestcalls':_0x75bd('0x2'),'leastrecent':'leastrecent','linear':_0x75bd('0x3'),'random':'random','ringall':_0x75bd('0x4'),'rr':_0x75bd('0x5'),'rrmemory':'rrmemory','rrordered':_0x75bd('0x6'),'wrandom':_0x75bd('0x7')};function VoiceQueue(_0x2aaa6a){this['id']=_0x2aaa6a['id']||0x0;this['name']=_0x2aaa6a[_0x75bd('0x8')]||'';this[_0x75bd('0x9')]=_0x2aaa6a[_0x75bd('0x9')]||'';this[_0x75bd('0xa')]=_0x2aaa6a[_0x75bd('0xa')]||_0x75bd('0xb');this[_0x75bd('0xc')]=0x0;this['total']=0x0;this[_0x75bd('0xd')]=0x0;this['sumDuration']=0x0;this['sumHoldTime']=0x0;this[_0x75bd('0xe')]=0x0;this[_0x75bd('0xf')]=0x0;this[_0x75bd('0x10')]=0x0;this['available']=0x0;this[_0x75bd('0x11')]=0x0;this[_0x75bd('0x12')]=0x0;this[_0x75bd('0x13')]=0x0;this[_0x75bd('0x14')]=0x0;this[_0x75bd('0x15')]=0x0;this[_0x75bd('0x16')]=0x0;this['paused']=0x0;this['ringing']=0x0;this['ringInUse']=0x0;this[_0x75bd('0x17')]=0x0;this[_0x75bd('0x18')]=0x0;this[_0x75bd('0x19')]=0x0;this[_0x75bd('0x1a')]=_0x2aaa6a[_0x75bd('0x1a')]||![];this[_0x75bd('0x1b')]=_0x2aaa6a[_0x75bd('0x1b')]||0xa;this[_0x75bd('0x1c')]=_0x2aaa6a[_0x75bd('0x1c')]||'no';this['sendMessageOneNotActive']=!![];this['message']='';this['statusMessage']='';this['originated']=0x0;this[_0x75bd('0x1d')]=0x0;this[_0x75bd('0x1e')]=_0x2aaa6a['dialTimezone']||null;this['dialGlobalInterval']=_0x2aaa6a[_0x75bd('0x1f')]?_0x2aaa6a[_0x75bd('0x1f')]:null;this[_0x75bd('0x20')]=_0x2aaa6a['dialActive'];this['dialMethod']=_0x2aaa6a[_0x75bd('0x21')]||'progressive';this[_0x75bd('0x22')]=_0x2aaa6a[_0x75bd('0x22')]||0x0;this['dialLimitQueue']=_0x2aaa6a[_0x75bd('0x23')]||0x0;this['dialPowerLevel']=_0x2aaa6a['dialPowerLevel']||0x1;this[_0x75bd('0x24')]=_0x2aaa6a[_0x75bd('0x24')]||_0x75bd('0x25');this[_0x75bd('0x26')]=_0x2aaa6a[_0x75bd('0x26')]||0.03;this[_0x75bd('0x27')]=_0x2aaa6a[_0x75bd('0x27')]||0x258;this[_0x75bd('0x28')]=_0x2aaa6a['dialOriginateCallerIdName']||_0x75bd('0x29');this[_0x75bd('0x2a')]=_0x2aaa6a['dialOriginateCallerIdNumber']||_0x75bd('0x29');this[_0x75bd('0x2b')]=_0x2aaa6a['dialOriginateTimeout']||0x1e;this[_0x75bd('0x2c')]=_0x2aaa6a[_0x75bd('0x2c')]||'tTxX';this[_0x75bd('0x2d')]=_0x2aaa6a[_0x75bd('0x2d')]||0x3;this[_0x75bd('0x2e')]=_0x2aaa6a[_0x75bd('0x2e')]||undefined;this[_0x75bd('0x2f')]=_0x2aaa6a['dialCongestionMaxRetry']||0x3;this[_0x75bd('0x30')]=_0x2aaa6a[_0x75bd('0x30')]||0x96;this['dialBusyMaxRetry']=_0x2aaa6a['dialBusyMaxRetry']||0x3;this['dialBusyRetryFrequency']=_0x2aaa6a['dialBusyRetryFrequency']||0x96;this[_0x75bd('0x31')]=_0x2aaa6a[_0x75bd('0x31')]||0x3;this['dialNoAnswerRetryFrequency']=_0x2aaa6a['dialNoAnswerRetryFrequency']||0x96;this[_0x75bd('0x32')]=_0x2aaa6a[_0x75bd('0x32')]||0x3;this[_0x75bd('0x33')]=_0x2aaa6a['dialNoSuchNumberRetryFrequency']||0x96;this[_0x75bd('0x34')]=_0x2aaa6a[_0x75bd('0x34')]||0x3;this[_0x75bd('0x35')]=_0x2aaa6a[_0x75bd('0x35')]||0x96;this[_0x75bd('0x36')]=_0x2aaa6a[_0x75bd('0x36')]||0x3;this[_0x75bd('0x37')]=_0x2aaa6a[_0x75bd('0x37')]||0x96;this[_0x75bd('0x38')]=_0x2aaa6a[_0x75bd('0x38')]||0x3;this['dialMachineRetryFrequency']=_0x2aaa6a['dialMachineRetryFrequency']||0x96;this[_0x75bd('0x39')]=_0x2aaa6a[_0x75bd('0x39')]||0x3;this['dialAgentRejectRetryFrequency']=_0x2aaa6a['dialAgentRejectRetryFrequency']||0x96;this[_0x75bd('0x3a')]=_0x2aaa6a[_0x75bd('0x3a')]||0x3;this['dialGlobalMaxRetry']=_0x2aaa6a[_0x75bd('0x3b')]||0x4;this[_0x75bd('0x3c')]=_0x2aaa6a[_0x75bd('0x3c')]?_0x2aaa6a['Trunk']:undefined;this['TrunkBackup']=_0x2aaa6a[_0x75bd('0x3d')]?_0x2aaa6a[_0x75bd('0x3d')]:undefined;this[_0x75bd('0x3e')]=_0x2aaa6a[_0x75bd('0x3e')]||undefined;this['Interval']=_0x2aaa6a['Interval']?_0x2aaa6a[_0x75bd('0x3f')]:undefined;this['dialOrderByScheduledAt']=_0x2aaa6a[_0x75bd('0x40')]||_0x75bd('0x41');this['dialRandomLastDigitCallerIdNumber']=_0x2aaa6a[_0x75bd('0x42')]||undefined;this['dialCutDigit']=_0x2aaa6a[_0x75bd('0x43')]||undefined;this[_0x75bd('0x44')]=strategy[_0x2aaa6a[_0x75bd('0x44')]];this[_0x75bd('0x45')]=!![];this[_0x75bd('0x46')]=_0x2aaa6a[_0x75bd('0x46')]||![];this[_0x75bd('0x47')]=_0x2aaa6a[_0x75bd('0x47')];this[_0x75bd('0x48')]=_0x2aaa6a[_0x75bd('0x48')];this[_0x75bd('0x49')]=_0x2aaa6a[_0x75bd('0x49')];this[_0x75bd('0x4a')]=_0x2aaa6a[_0x75bd('0x4a')];this[_0x75bd('0x4b')]=_0x2aaa6a[_0x75bd('0x4b')];this[_0x75bd('0x4c')]=_0x2aaa6a[_0x75bd('0x4c')];this[_0x75bd('0x4d')]=_0x2aaa6a[_0x75bd('0x4d')];this[_0x75bd('0x4e')]=_0x2aaa6a[_0x75bd('0x4e')];this[_0x75bd('0x4f')]=_0x2aaa6a[_0x75bd('0x4f')];this[_0x75bd('0x50')]=0x0;this[_0x75bd('0x51')]=0x0;this[_0x75bd('0x52')]=_0x2aaa6a[_0x75bd('0x52')];this[_0x75bd('0x53')]=0x0;this[_0x75bd('0x54')]=0x0;this[_0x75bd('0x55')]=0x0;this[_0x75bd('0x56')]=0x0;this['outboundCongestionCallsDay']=0x0;this['outboundNoSuchCallsDay']=0x0;this['outboundUnknownCallsDay']=0x0;this[_0x75bd('0x57')]=0x0;this[_0x75bd('0x58')]=0x0;this[_0x75bd('0x59')]=0x0;this[_0x75bd('0x5a')]=0x0;this[_0x75bd('0x5b')]=0x0;this['outboundReCallsDay']=0x0;this[_0x75bd('0x5c')]=0x0;this[_0x75bd('0x5d')]=undefined;this[_0x75bd('0x5e')]=undefined;this[_0x75bd('0x5f')]=undefined;this[_0x75bd('0x60')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x75bd('0x61')]=0x0;this[_0x75bd('0x62')]=0x0;this[_0x75bd('0x63')]=0x0;this[_0x75bd('0x64')]=0x0;this[_0x75bd('0x65')]=0x0;this[_0x75bd('0x66')]=0x0;this[_0x75bd('0x67')]=0x0;this[_0x75bd('0x68')]=_0x2aaa6a[_0x75bd('0x69')]||0x14;this['predictiveIntervalMinThreshold']=_0x2aaa6a[_0x75bd('0x69')]||0xa;this[_0x75bd('0x6a')]=0x0;this[_0x75bd('0x6b')]=0x0;this[_0x75bd('0x6c')]=0x1;this['erlangCalls']=0x0;this['erlangCallToSecond']=0x0;this[_0x75bd('0x6d')]=0x0;this[_0x75bd('0x6e')]=0x0;this[_0x75bd('0x6f')]=_0x2aaa6a[_0x75bd('0x6f')]||0x1e;this[_0x75bd('0x70')]=_0x2aaa6a[_0x75bd('0x70')]||![];this[_0x75bd('0x71')]=!!_0x2aaa6a[_0x75bd('0x71')]||![];this[_0x75bd('0x72')]=!!_0x2aaa6a[_0x75bd('0x72')]||![];this[_0x75bd('0x73')]=_0x2aaa6a[_0x75bd('0x73')]||undefined;this[_0x75bd('0x74')]=_0x2aaa6a[_0x75bd('0x74')]||![];this['dialAgiAfterHangupAgent']=_0x2aaa6a['dialAgiAfterHangupAgent']||![];this[_0x75bd('0x9')]=monitorFormat[_0x2aaa6a[_0x75bd('0x9')]]?monitorFormat[_0x2aaa6a[_0x75bd('0x9')]]:undefined;this[_0x75bd('0x75')]=_0x2aaa6a[_0x75bd('0x75')]||![];this[_0x75bd('0x76')]=_0x2aaa6a[_0x75bd('0x76')]?_0x2aaa6a['mandatoryDispositionPause']:undefined;this[_0x75bd('0x77')]=![];}module['exports']=VoiceQueue;
\ No newline at end of file
index ef8e93b..01222f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b8e=['outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','pTalking','sumBillable','sumDuration','total','name','strategy','abandoned','invalid','loggedIn','onHold','notInUse','ringing','ringInUse','sumHoldTime','talking','type','unavailable','unknown','unmanaged','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startProgressive','message','statusMessage','Trunk','callerid','prototype','createReport','busy','callers','length','SIP/','online','incall','includes','status','booked','keys','dialer','exten','xcally-motion-preview','some','compareToOutboundQueue','active','updateReportFromOutboundQueue','preview','exports','available','loggedInDb','paused','waiting','answered','inUse','originated','outboundAbandonedCallsDay'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9b8e,0x158));var _0xe9b8=function(_0x568278,_0x683957){_0x568278=_0x568278-0x0;var _0x101437=_0x9b8e[_0x568278];return _0x101437;};'use strict';var INBOUND_COUNTERS=[_0xe9b8('0x0'),'loggedIn',_0xe9b8('0x1'),_0xe9b8('0x2'),'ringing','talking',_0xe9b8('0x3')];var OUTBOUND_COUNTERS=['available',_0xe9b8('0x4'),_0xe9b8('0x5'),'loggedIn',_0xe9b8('0x1'),_0xe9b8('0x6'),_0xe9b8('0x7'),_0xe9b8('0x8'),_0xe9b8('0x9'),_0xe9b8('0xa'),'outboundCongestionCallsDay','outboundNoAnswerCallsDay',_0xe9b8('0xb'),_0xe9b8('0xc'),_0xe9b8('0xd'),_0xe9b8('0xe'),'paused',_0xe9b8('0xf'),'talking',_0xe9b8('0x10'),_0xe9b8('0x11'),_0xe9b8('0x12'),_0xe9b8('0x3')];function VoiceQueueSummary(_0x1fa429){this['id']=_0x1fa429['id'];this[_0xe9b8('0x13')]=_0x1fa429[_0xe9b8('0x13')];this[_0xe9b8('0x14')]=_0x1fa429[_0xe9b8('0x14')];this[_0xe9b8('0x15')]=_0x1fa429[_0xe9b8('0x15')]||0x0;this[_0xe9b8('0x4')]=_0x1fa429[_0xe9b8('0x4')]||0x0;this['available']=_0x1fa429['available']||0x0;this['busy']=_0x1fa429['busy']||0x0;this[_0xe9b8('0x5')]=_0x1fa429['inUse']||0x0;this['invalid']=_0x1fa429[_0xe9b8('0x16')]||0x0;this[_0xe9b8('0x17')]=_0x1fa429[_0xe9b8('0x17')]||0x0;this[_0xe9b8('0x1')]=_0x1fa429[_0xe9b8('0x1')]||0x0;this[_0xe9b8('0x18')]=_0x1fa429['onHold']||0x0;this[_0xe9b8('0x19')]=_0x1fa429[_0xe9b8('0x19')]||0x0;this[_0xe9b8('0x2')]=_0x1fa429[_0xe9b8('0x2')]||0x0;this[_0xe9b8('0x1a')]=_0x1fa429[_0xe9b8('0x1a')]||0x0;this['ringInUse']=_0x1fa429[_0xe9b8('0x1b')];this['sumBillable']=_0x1fa429[_0xe9b8('0x10')];this[_0xe9b8('0x11')]=_0x1fa429[_0xe9b8('0x11')];this['sumHoldTime']=_0x1fa429[_0xe9b8('0x1c')]||0x0;this[_0xe9b8('0x1d')]=_0x1fa429[_0xe9b8('0x1d')]||0x0;this[_0xe9b8('0x12')]=_0x1fa429[_0xe9b8('0x12')]||0x0;this['type']=_0x1fa429[_0xe9b8('0x1e')];this['unavailable']=_0x1fa429[_0xe9b8('0x1f')]||0x0;this[_0xe9b8('0x20')]=_0x1fa429[_0xe9b8('0x20')]||0x0;this[_0xe9b8('0x21')]=_0x1fa429[_0xe9b8('0x21')]||0x0;this['waiting']=_0x1fa429['waiting']||0x0;if(_0x1fa429[_0xe9b8('0x1e')]===_0xe9b8('0x22')){this[_0xe9b8('0xf')]=_0x1fa429['pTalking']||0x0;this['dialActive']=_0x1fa429[_0xe9b8('0x23')];this['dialMethod']=_0x1fa429[_0xe9b8('0x24')];this['dialOriginateCallerIdName']=_0x1fa429[_0xe9b8('0x25')];this[_0xe9b8('0x26')]=_0x1fa429[_0xe9b8('0x26')];this['dialOriginateTimeout']=_0x1fa429[_0xe9b8('0x27')];this['dialPrefix']=_0x1fa429[_0xe9b8('0x28')];this['temp']=_0x1fa429[_0xe9b8('0x29')];this[_0xe9b8('0x2a')]=_0x1fa429[_0xe9b8('0x2a')];this[_0xe9b8('0x8')]=_0x1fa429[_0xe9b8('0x8')];this[_0xe9b8('0x9')]=_0x1fa429[_0xe9b8('0x9')];this[_0xe9b8('0xa')]=_0x1fa429['outboundBusyCallsDay'];this[_0xe9b8('0x2b')]=_0x1fa429[_0xe9b8('0x2b')];this[_0xe9b8('0x2c')]=_0x1fa429[_0xe9b8('0x2c')];this[_0xe9b8('0x2d')]=_0x1fa429['outboundDropCallsDayCallersExit'];this[_0xe9b8('0x2e')]=_0x1fa429[_0xe9b8('0x2e')];this[_0xe9b8('0x2f')]=_0x1fa429[_0xe9b8('0x2f')];this[_0xe9b8('0xb')]=_0x1fa429[_0xe9b8('0xb')];this['outboundOriginateFailureCallsDay']=_0x1fa429['outboundOriginateFailureCallsDay'];this['outboundReCallsDay']=_0x1fa429['outboundReCallsDay'];this[_0xe9b8('0xd')]=_0x1fa429[_0xe9b8('0xd')];this[_0xe9b8('0xe')]=_0x1fa429['outboundUnknownCallsDay'];this[_0xe9b8('0x30')]=_0x1fa429['predictiveIntervalAnsweredCalls'];this['predictiveIntervalAvgHoldtime']=_0x1fa429[_0xe9b8('0x31')];this[_0xe9b8('0x32')]=_0x1fa429['predictiveIntervalAvgTalktime'];this[_0xe9b8('0x33')]=_0x1fa429[_0xe9b8('0x33')];this[_0xe9b8('0x34')]=_0x1fa429[_0xe9b8('0x34')];this[_0xe9b8('0x35')]=_0x1fa429['predictiveIntervalErlangCalls'];this['predictiveIntervalErlangCallsDroppedCalls']=_0x1fa429[_0xe9b8('0x36')];this['predictiveIntervalHitRate']=_0x1fa429[_0xe9b8('0x37')];this['predictiveIntervalMultiplicativeFactor']=_0x1fa429['predictiveIntervalMultiplicativeFactor'];this['predictiveIntervalPauses']=_0x1fa429[_0xe9b8('0x38')];this['predictiveIntervalAvailable']=_0x1fa429[_0xe9b8('0x39')];this['predictiveIntervalTotalCalls']=_0x1fa429['predictiveIntervalTotalCalls'];this['originated']=_0x1fa429[_0xe9b8('0x6')];this[_0xe9b8('0x3a')]=_0x1fa429[_0xe9b8('0x3a')];this[_0xe9b8('0x3b')]=_0x1fa429[_0xe9b8('0x3b')];this[_0xe9b8('0x3c')]=_0x1fa429[_0xe9b8('0x3c')];this[_0xe9b8('0x3d')]=_0x1fa429[_0xe9b8('0x3d')];this['startPredictive']=_0x1fa429['startPredictive'];this[_0xe9b8('0x3e')]=_0x1fa429['startProgressive'];this[_0xe9b8('0x3f')]=_0x1fa429[_0xe9b8('0x3f')];this[_0xe9b8('0x40')]=_0x1fa429[_0xe9b8('0x40')];}if(_0x1fa429[_0xe9b8('0x41')]){this[_0xe9b8('0x41')]={'id':_0x1fa429[_0xe9b8('0x41')]['id'],'name':_0x1fa429[_0xe9b8('0x41')][_0xe9b8('0x13')],'active':_0x1fa429[_0xe9b8('0x41')]['active'],'callerid':_0x1fa429[_0xe9b8('0x41')][_0xe9b8('0x42')]};}}VoiceQueueSummary[_0xe9b8('0x43')][_0xe9b8('0x44')]=function(_0x2d7a6e,_0xef13b5,_0x4fa923,_0x5da168){this[_0xe9b8('0x1')]=0x0;this['talking']=0x0;this[_0xe9b8('0x2')]=0x0;this[_0xe9b8('0x20')]=0x0;this[_0xe9b8('0x19')]=0x0;this[_0xe9b8('0x5')]=0x0;this[_0xe9b8('0x45')]=0x0;this['invalid']=0x0;this[_0xe9b8('0x1f')]=0x0;this[_0xe9b8('0x1a')]=0x0;this['ringInUse']=0x0;this[_0xe9b8('0x18')]=0x0;if(_0x4fa923){if(_0x4fa923[_0xe9b8('0x0')]){this[_0xe9b8('0x0')]=Number(_0x4fa923['available']);}if(_0x4fa923['loggedin']){this[_0xe9b8('0x17')]=Number(_0x4fa923['loggedin']);}if(_0x4fa923[_0xe9b8('0x46')]){this['waiting']=Number(_0x4fa923[_0xe9b8('0x46')]);}}for(var _0x36ba36=0x0;_0x36ba36<_0x2d7a6e[_0xe9b8('0x47')];_0x36ba36++){var _0x56147c=_0xef13b5[_0xe9b8('0x48')+_0x2d7a6e[_0x36ba36]['name']];if(_0x56147c&&_0x56147c[_0xe9b8('0x49')]){this['loggedInDb']+=0x1;}if(_0x2d7a6e[_0x36ba36][_0xe9b8('0x4a')]==='1'){this[_0xe9b8('0x1d')]+=0x1;}if(_0x2d7a6e[_0x36ba36]['paused']==='1'&&!['2','7','8'][_0xe9b8('0x4b')](_0x2d7a6e[_0x36ba36][_0xe9b8('0x4c')])){this[_0xe9b8('0x2')]+=0x1;}switch(_0x2d7a6e[_0x36ba36][_0xe9b8('0x4c')]){case'0':this[_0xe9b8('0x20')]+=0x1;break;case'1':this[_0xe9b8('0x19')]+=0x1;break;case'2':this[_0xe9b8('0x5')]+=0x1;break;case'3':this['busy']+=0x1;break;case'4':this[_0xe9b8('0x16')]+=0x1;break;case'5':this[_0xe9b8('0x1f')]+=0x1;break;case'6':this[_0xe9b8('0x1a')]+=0x1;break;case'7':this[_0xe9b8('0x1b')]+=0x1;break;case'8':this['onHold']+=0x1;break;}}if(this[_0xe9b8('0x24')]===_0xe9b8('0x4d')){var _0x3459ab=Object[_0xe9b8('0x4e')](_0x5da168);for(var _0x30adfc=0x0;_0x30adfc<_0x3459ab[_0xe9b8('0x47')];_0x30adfc++){var _0x5dc32e=_0x3459ab[_0x30adfc];var _0x6a32ea=_0x5da168[_0x5dc32e];if(_0x6a32ea['queue']===this[_0xe9b8('0x13')]&&_0x6a32ea[_0xe9b8('0x1e')]===_0xe9b8('0x4f')&&_0x6a32ea[_0xe9b8('0x50')]===_0xe9b8('0x51')){this['talking']+=0x1;}}if(this[_0xe9b8('0x1d')]>this[_0xe9b8('0x5')]){this[_0xe9b8('0x1d')]=this[_0xe9b8('0x5')];}this['pTalking']=0x0;}return this;};VoiceQueueSummary[_0xe9b8('0x43')]['compareToInboundQueue']=function(_0x125306){var _0x390f90=![];if(_0x125306){_0x390f90=INBOUND_COUNTERS[_0xe9b8('0x52')](function(_0x399d57){return this[_0x399d57]!==_0x125306[_0x399d57];},this);}return _0x390f90;};VoiceQueueSummary[_0xe9b8('0x43')][_0xe9b8('0x53')]=function(_0x58bbcc){var _0x307fa8=![];var _0x18997a=![];var _0x4d208a=![];if(_0x58bbcc){_0x307fa8=this[_0xe9b8('0x24')]!==_0x58bbcc['dialMethod']||this[_0xe9b8('0x23')]!==_0x58bbcc['dialActive']||this[_0xe9b8('0x3f')]!==_0x58bbcc['message']||this[_0xe9b8('0x40')]!==_0x58bbcc[_0xe9b8('0x40')];_0x18997a=OUTBOUND_COUNTERS[_0xe9b8('0x52')](function(_0x1a600a){return this[_0x1a600a]!==_0x58bbcc[_0x1a600a];},this);if(this[_0xe9b8('0x41')]&&_0x58bbcc[_0xe9b8('0x41')]){_0x4d208a=this['Trunk']['name']!==_0x58bbcc[_0xe9b8('0x41')][_0xe9b8('0x13')]||this[_0xe9b8('0x41')][_0xe9b8('0x54')]!==_0x58bbcc[_0xe9b8('0x41')]['active'];}}return _0x307fa8||_0x18997a||_0x4d208a;};VoiceQueueSummary[_0xe9b8('0x43')][_0xe9b8('0x55')]=function(_0x5aa621){this[_0xe9b8('0x4')]=_0x5aa621['answered'];this[_0xe9b8('0x3f')]=_0x5aa621[_0xe9b8('0x3f')];this[_0xe9b8('0x40')]=_0x5aa621[_0xe9b8('0x40')];this[_0xe9b8('0x6')]=_0x5aa621['originated'];this['outboundAbandonedCallsDay']=_0x5aa621['outboundAbandonedCallsDay'];this[_0xe9b8('0x8')]=_0x5aa621[_0xe9b8('0x8')];this[_0xe9b8('0x9')]=_0x5aa621[_0xe9b8('0x9')];this['outboundBusyCallsDay']=_0x5aa621[_0xe9b8('0xa')];this[_0xe9b8('0x2b')]=_0x5aa621[_0xe9b8('0x2b')];this['outboundNoAnswerCallsDay']=_0x5aa621[_0xe9b8('0x2f')];this[_0xe9b8('0xb')]=_0x5aa621[_0xe9b8('0xb')];this[_0xe9b8('0xc')]=_0x5aa621['outboundReCallsDay'];this['outboundRejectCallsDay']=_0x5aa621[_0xe9b8('0xd')];this[_0xe9b8('0xe')]=_0x5aa621[_0xe9b8('0xe')];this[_0xe9b8('0x10')]=_0x5aa621[_0xe9b8('0x10')];this['sumDuration']=_0x5aa621[_0xe9b8('0x11')];this[_0xe9b8('0x12')]=_0x5aa621[_0xe9b8('0x12')];if(this['dialMethod']===_0xe9b8('0x56')){this['pTalking']=_0x5aa621[_0xe9b8('0xf')];}};module[_0xe9b8('0x57')]=VoiceQueueSummary;
\ No newline at end of file
+var _0x0845=['predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startProgressive','message','statusMessage','Trunk','active','callerid','prototype','unknown','loggedin','callers','length','SIP/','online','incall','includes','status','booked','keys','queue','dialer','exten','xcally-motion-preview','compareToInboundQueue','some','compareToOutboundQueue','outboundAbandonedCallsDay','available','paused','ringing','talking','waiting','answered','loggedIn','loggedInDb','originated','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoAnswerCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','sumBillable','sumDuration','name','strategy','abandoned','busy','inUse','invalid','onHold','notInUse','ringInUse','sumHoldTime','total','type','unavailable','unmanaged','pTalking','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundReCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls'];(function(_0x406cc8,_0x117c7f){var _0x385af1=function(_0xb0d137){while(--_0xb0d137){_0x406cc8['push'](_0x406cc8['shift']());}};_0x385af1(++_0x117c7f);}(_0x0845,0x125));var _0x5084=function(_0x146524,_0xc6c5ae){_0x146524=_0x146524-0x0;var _0x40300a=_0x0845[_0x146524];return _0x40300a;};'use strict';var INBOUND_COUNTERS=[_0x5084('0x0'),'loggedIn','loggedInDb',_0x5084('0x1'),_0x5084('0x2'),_0x5084('0x3'),_0x5084('0x4')];var OUTBOUND_COUNTERS=[_0x5084('0x0'),_0x5084('0x5'),'inUse',_0x5084('0x6'),_0x5084('0x7'),_0x5084('0x8'),'outboundAbandonedCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay',_0x5084('0x9'),_0x5084('0xa'),_0x5084('0xb'),'outboundNoSuchCallsDay','outboundReCallsDay',_0x5084('0xc'),_0x5084('0xd'),_0x5084('0x1'),'pTalking',_0x5084('0x3'),_0x5084('0xe'),_0x5084('0xf'),'total','waiting'];function VoiceQueueSummary(_0x1d650c){this['id']=_0x1d650c['id'];this[_0x5084('0x10')]=_0x1d650c[_0x5084('0x10')];this[_0x5084('0x11')]=_0x1d650c[_0x5084('0x11')];this[_0x5084('0x12')]=_0x1d650c[_0x5084('0x12')]||0x0;this[_0x5084('0x5')]=_0x1d650c['answered']||0x0;this[_0x5084('0x0')]=_0x1d650c[_0x5084('0x0')]||0x0;this[_0x5084('0x13')]=_0x1d650c['busy']||0x0;this[_0x5084('0x14')]=_0x1d650c[_0x5084('0x14')]||0x0;this[_0x5084('0x15')]=_0x1d650c[_0x5084('0x15')]||0x0;this['loggedIn']=_0x1d650c[_0x5084('0x6')]||0x0;this['loggedInDb']=_0x1d650c[_0x5084('0x7')]||0x0;this[_0x5084('0x16')]=_0x1d650c[_0x5084('0x16')]||0x0;this[_0x5084('0x17')]=_0x1d650c[_0x5084('0x17')]||0x0;this[_0x5084('0x1')]=_0x1d650c[_0x5084('0x1')]||0x0;this[_0x5084('0x2')]=_0x1d650c[_0x5084('0x2')]||0x0;this[_0x5084('0x18')]=_0x1d650c[_0x5084('0x18')];this[_0x5084('0xe')]=_0x1d650c[_0x5084('0xe')];this[_0x5084('0xf')]=_0x1d650c[_0x5084('0xf')];this[_0x5084('0x19')]=_0x1d650c[_0x5084('0x19')]||0x0;this[_0x5084('0x3')]=_0x1d650c[_0x5084('0x3')]||0x0;this[_0x5084('0x1a')]=_0x1d650c['total']||0x0;this[_0x5084('0x1b')]=_0x1d650c[_0x5084('0x1b')];this[_0x5084('0x1c')]=_0x1d650c['unavailable']||0x0;this['unknown']=_0x1d650c['unknown']||0x0;this[_0x5084('0x1d')]=_0x1d650c[_0x5084('0x1d')]||0x0;this['waiting']=_0x1d650c[_0x5084('0x4')]||0x0;if(_0x1d650c[_0x5084('0x1b')]==='outbound'){this[_0x5084('0x1e')]=_0x1d650c[_0x5084('0x1e')]||0x0;this[_0x5084('0x1f')]=_0x1d650c[_0x5084('0x1f')];this[_0x5084('0x20')]=_0x1d650c[_0x5084('0x20')];this['dialOriginateCallerIdName']=_0x1d650c[_0x5084('0x21')];this[_0x5084('0x22')]=_0x1d650c['dialOriginateCallerIdNumber'];this[_0x5084('0x23')]=_0x1d650c[_0x5084('0x23')];this['dialPrefix']=_0x1d650c['dialPrefix'];this['temp']=_0x1d650c[_0x5084('0x24')];this[_0x5084('0x25')]=_0x1d650c[_0x5084('0x25')];this['outboundAnswerCallsDay']=_0x1d650c[_0x5084('0x26')];this['outboundBlacklistCallsDay']=_0x1d650c[_0x5084('0x27')];this[_0x5084('0x9')]=_0x1d650c[_0x5084('0x9')];this[_0x5084('0xa')]=_0x1d650c[_0x5084('0xa')];this[_0x5084('0x28')]=_0x1d650c[_0x5084('0x28')];this[_0x5084('0x29')]=_0x1d650c[_0x5084('0x29')];this[_0x5084('0x2a')]=_0x1d650c[_0x5084('0x2a')];this[_0x5084('0xb')]=_0x1d650c['outboundNoAnswerCallsDay'];this[_0x5084('0x2b')]=_0x1d650c[_0x5084('0x2b')];this['outboundOriginateFailureCallsDay']=_0x1d650c['outboundOriginateFailureCallsDay'];this[_0x5084('0x2c')]=_0x1d650c[_0x5084('0x2c')];this[_0x5084('0xc')]=_0x1d650c['outboundRejectCallsDay'];this[_0x5084('0xd')]=_0x1d650c['outboundUnknownCallsDay'];this[_0x5084('0x2d')]=_0x1d650c[_0x5084('0x2d')];this['predictiveIntervalAvgHoldtime']=_0x1d650c[_0x5084('0x2e')];this[_0x5084('0x2f')]=_0x1d650c[_0x5084('0x2f')];this[_0x5084('0x30')]=_0x1d650c[_0x5084('0x30')];this['predictiveIntervalDroppedCallsTimeout']=_0x1d650c[_0x5084('0x31')];this[_0x5084('0x32')]=_0x1d650c[_0x5084('0x32')];this['predictiveIntervalErlangCallsDroppedCalls']=_0x1d650c[_0x5084('0x33')];this[_0x5084('0x34')]=_0x1d650c[_0x5084('0x34')];this[_0x5084('0x35')]=_0x1d650c[_0x5084('0x35')];this['predictiveIntervalPauses']=_0x1d650c[_0x5084('0x36')];this[_0x5084('0x37')]=_0x1d650c[_0x5084('0x37')];this['predictiveIntervalTotalCalls']=_0x1d650c[_0x5084('0x38')];this[_0x5084('0x8')]=_0x1d650c[_0x5084('0x8')];this[_0x5084('0x39')]=_0x1d650c[_0x5084('0x39')];this['erlangCallToSecond']=_0x1d650c['erlangCallToSecond'];this[_0x5084('0x3a')]=_0x1d650c['erlangAbandonmentRate'];this['erlangBusyFactor']=_0x1d650c[_0x5084('0x3b')];this['startPredictive']=_0x1d650c['startPredictive'];this[_0x5084('0x3c')]=_0x1d650c[_0x5084('0x3c')];this[_0x5084('0x3d')]=_0x1d650c[_0x5084('0x3d')];this[_0x5084('0x3e')]=_0x1d650c['statusMessage'];}if(_0x1d650c[_0x5084('0x3f')]){this[_0x5084('0x3f')]={'id':_0x1d650c['Trunk']['id'],'name':_0x1d650c[_0x5084('0x3f')][_0x5084('0x10')],'active':_0x1d650c[_0x5084('0x3f')][_0x5084('0x40')],'callerid':_0x1d650c['Trunk'][_0x5084('0x41')]};}}VoiceQueueSummary[_0x5084('0x42')]['createReport']=function(_0x569060,_0x4fba00,_0x1fa16f,_0x1dbabd){this[_0x5084('0x7')]=0x0;this[_0x5084('0x3')]=0x0;this[_0x5084('0x1')]=0x0;this[_0x5084('0x43')]=0x0;this['notInUse']=0x0;this['inUse']=0x0;this[_0x5084('0x13')]=0x0;this[_0x5084('0x15')]=0x0;this['unavailable']=0x0;this['ringing']=0x0;this[_0x5084('0x18')]=0x0;this['onHold']=0x0;if(_0x1fa16f){if(_0x1fa16f['available']){this[_0x5084('0x0')]=Number(_0x1fa16f[_0x5084('0x0')]);}if(_0x1fa16f[_0x5084('0x44')]){this['loggedIn']=Number(_0x1fa16f['loggedin']);}if(_0x1fa16f[_0x5084('0x45')]){this[_0x5084('0x4')]=Number(_0x1fa16f[_0x5084('0x45')]);}}for(var _0x171bf7=0x0;_0x171bf7<_0x569060[_0x5084('0x46')];_0x171bf7++){var _0x27db28=_0x4fba00[_0x5084('0x47')+_0x569060[_0x171bf7][_0x5084('0x10')]];if(_0x27db28&&_0x27db28[_0x5084('0x48')]){this[_0x5084('0x7')]+=0x1;}if(_0x569060[_0x171bf7][_0x5084('0x49')]==='1'){this[_0x5084('0x3')]+=0x1;}if(_0x569060[_0x171bf7][_0x5084('0x1')]==='1'&&!['2','7','8'][_0x5084('0x4a')](_0x569060[_0x171bf7]['status'])){this[_0x5084('0x1')]+=0x1;}switch(_0x569060[_0x171bf7][_0x5084('0x4b')]){case'0':this[_0x5084('0x43')]+=0x1;break;case'1':this[_0x5084('0x17')]+=0x1;break;case'2':this[_0x5084('0x14')]+=0x1;break;case'3':this[_0x5084('0x13')]+=0x1;break;case'4':this[_0x5084('0x15')]+=0x1;break;case'5':this['unavailable']+=0x1;break;case'6':this['ringing']+=0x1;break;case'7':this['ringInUse']+=0x1;break;case'8':this[_0x5084('0x16')]+=0x1;break;}}if(this[_0x5084('0x20')]===_0x5084('0x4c')){var _0x4e0346=Object[_0x5084('0x4d')](_0x1dbabd);for(var _0x2926e0=0x0;_0x2926e0<_0x4e0346[_0x5084('0x46')];_0x2926e0++){var _0xb44861=_0x4e0346[_0x2926e0];var _0x48beb1=_0x1dbabd[_0xb44861];if(_0x48beb1[_0x5084('0x4e')]===this[_0x5084('0x10')]&&_0x48beb1[_0x5084('0x1b')]===_0x5084('0x4f')&&_0x48beb1[_0x5084('0x50')]===_0x5084('0x51')){this[_0x5084('0x3')]+=0x1;}}if(this[_0x5084('0x3')]>this[_0x5084('0x14')]){this['talking']=this[_0x5084('0x14')];}this[_0x5084('0x1e')]=0x0;}return this;};VoiceQueueSummary[_0x5084('0x42')][_0x5084('0x52')]=function(_0x2e23b7){var _0x29524d=![];if(_0x2e23b7){_0x29524d=INBOUND_COUNTERS[_0x5084('0x53')](function(_0x2f382e){return this[_0x2f382e]!==_0x2e23b7[_0x2f382e];},this);}return _0x29524d;};VoiceQueueSummary['prototype'][_0x5084('0x54')]=function(_0x50bce5){var _0x407a11=![];var _0x2e12bb=![];var _0x115ff5=![];if(_0x50bce5){_0x407a11=this[_0x5084('0x20')]!==_0x50bce5[_0x5084('0x20')]||this[_0x5084('0x1f')]!==_0x50bce5[_0x5084('0x1f')]||this[_0x5084('0x3d')]!==_0x50bce5['message']||this[_0x5084('0x3e')]!==_0x50bce5[_0x5084('0x3e')];_0x2e12bb=OUTBOUND_COUNTERS['some'](function(_0x2510a3){return this[_0x2510a3]!==_0x50bce5[_0x2510a3];},this);if(this[_0x5084('0x3f')]&&_0x50bce5[_0x5084('0x3f')]){_0x115ff5=this[_0x5084('0x3f')]['name']!==_0x50bce5['Trunk'][_0x5084('0x10')]||this['Trunk'][_0x5084('0x40')]!==_0x50bce5[_0x5084('0x3f')][_0x5084('0x40')];}}return _0x407a11||_0x2e12bb||_0x115ff5;};VoiceQueueSummary[_0x5084('0x42')]['updateReportFromOutboundQueue']=function(_0x2d3b00){this[_0x5084('0x5')]=_0x2d3b00['answered'];this['message']=_0x2d3b00[_0x5084('0x3d')];this[_0x5084('0x3e')]=_0x2d3b00['statusMessage'];this[_0x5084('0x8')]=_0x2d3b00['originated'];this[_0x5084('0x55')]=_0x2d3b00[_0x5084('0x55')];this[_0x5084('0x26')]=_0x2d3b00['outboundAnswerCallsDay'];this[_0x5084('0x27')]=_0x2d3b00[_0x5084('0x27')];this[_0x5084('0x9')]=_0x2d3b00['outboundBusyCallsDay'];this[_0x5084('0xa')]=_0x2d3b00['outboundCongestionCallsDay'];this['outboundNoAnswerCallsDay']=_0x2d3b00[_0x5084('0xb')];this['outboundNoSuchCallsDay']=_0x2d3b00[_0x5084('0x2b')];this[_0x5084('0x2c')]=_0x2d3b00['outboundReCallsDay'];this[_0x5084('0xc')]=_0x2d3b00[_0x5084('0xc')];this['outboundUnknownCallsDay']=_0x2d3b00[_0x5084('0xd')];this['sumBillable']=_0x2d3b00['sumBillable'];this['sumDuration']=_0x2d3b00['sumDuration'];this['total']=_0x2d3b00[_0x5084('0x1a')];if(this[_0x5084('0x20')]==='preview'){this[_0x5084('0x1e')]=_0x2d3b00['pTalking'];}};module['exports']=VoiceQueueSummary;
\ No newline at end of file
index 8998017..847d4d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22c3=['remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x22c3,0xf4));var _0x322c=function(_0x2cc626,_0x5a5c33){_0x2cc626=_0x2cc626-0x0;var _0x3cb6fe=_0x22c3[_0x2cc626];return _0x3cb6fe;};'use strict';function VtigerAccount(_0x19157c){this['id']=_0x19157c['id']||0x0;this[_0x322c('0x0')]=_0x19157c['name']||'';this[_0x322c('0x1')]=_0x19157c[_0x322c('0x1')]||'';this['accessKey']=_0x19157c['accessKey']||'';this['remoteUri']=_0x19157c[_0x322c('0x2')]||'';this[_0x322c('0x3')]=_0x19157c['serverUrl']||'';this[_0x322c('0x4')]=_0x19157c['Configurations']||{};}module[_0x322c('0x5')]=VtigerAccount;
\ No newline at end of file
+var _0x6d93=['name','username','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x25292d,_0x3f0ac2){var _0x568b8b=function(_0x52d081){while(--_0x52d081){_0x25292d['push'](_0x25292d['shift']());}};_0x568b8b(++_0x3f0ac2);}(_0x6d93,0xa2));var _0x36d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6d93[_0x3dd15e];return _0x231fd0;};'use strict';function VtigerAccount(_0x4730b){this['id']=_0x4730b['id']||0x0;this[_0x36d9('0x0')]=_0x4730b[_0x36d9('0x0')]||'';this[_0x36d9('0x1')]=_0x4730b['username']||'';this['accessKey']=_0x4730b[_0x36d9('0x2')]||'';this[_0x36d9('0x3')]=_0x4730b['remoteUri']||'';this[_0x36d9('0x4')]=_0x4730b[_0x36d9('0x4')]||'';this[_0x36d9('0x5')]=_0x4730b[_0x36d9('0x5')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index a87c329..c84443d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x153d=['Configurations','exports','name','username','password','token','remoteUri','authType','type','integrationTab','serverUrl'];(function(_0xf4d05,_0x5e601f){var _0x47c971=function(_0x17aae3){while(--_0x17aae3){_0xf4d05['push'](_0xf4d05['shift']());}};_0x47c971(++_0x5e601f);}(_0x153d,0x136));var _0xd153=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x153d[_0x13b02f];return _0x12e9a6;};'use strict';function ZendeskAccount(_0x5100ae){this['id']=_0x5100ae['id']||0x0;this[_0xd153('0x0')]=_0x5100ae[_0xd153('0x0')]||'';this[_0xd153('0x1')]=_0x5100ae['username']||'';this[_0xd153('0x2')]=_0x5100ae[_0xd153('0x2')]||'';this['token']=_0x5100ae[_0xd153('0x3')]||'';this['remoteUri']=_0x5100ae[_0xd153('0x4')]||'';this[_0xd153('0x5')]=_0x5100ae[_0xd153('0x5')]||'';this[_0xd153('0x6')]=_0x5100ae[_0xd153('0x6')]||_0xd153('0x7');this[_0xd153('0x8')]=_0x5100ae[_0xd153('0x8')]||'';this[_0xd153('0x9')]=_0x5100ae[_0xd153('0x9')]||{};}module[_0xd153('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0xdb4c=['token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','name','username','password'];(function(_0x2fb31e,_0x199b64){var _0x32b921=function(_0x13f5d6){while(--_0x13f5d6){_0x2fb31e['push'](_0x2fb31e['shift']());}};_0x32b921(++_0x199b64);}(_0xdb4c,0x75));var _0xcdb4=function(_0x1368ac,_0x5a6a69){_0x1368ac=_0x1368ac-0x0;var _0x2a54e0=_0xdb4c[_0x1368ac];return _0x2a54e0;};'use strict';function ZendeskAccount(_0x21e2ae){this['id']=_0x21e2ae['id']||0x0;this[_0xcdb4('0x0')]=_0x21e2ae[_0xcdb4('0x0')]||'';this[_0xcdb4('0x1')]=_0x21e2ae[_0xcdb4('0x1')]||'';this['password']=_0x21e2ae[_0xcdb4('0x2')]||'';this[_0xcdb4('0x3')]=_0x21e2ae[_0xcdb4('0x3')]||'';this['remoteUri']=_0x21e2ae[_0xcdb4('0x4')]||'';this[_0xcdb4('0x5')]=_0x21e2ae[_0xcdb4('0x5')]||'';this[_0xcdb4('0x6')]=_0x21e2ae['type']||_0xcdb4('0x7');this[_0xcdb4('0x8')]=_0x21e2ae[_0xcdb4('0x8')]||'';this[_0xcdb4('0x9')]=_0x21e2ae[_0xcdb4('0x9')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index 90b6c6a..abeff1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2b9=['Configurations','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xc2b9,0x137));var _0x9c2b=function(_0x49f01b,_0x6b061){_0x49f01b=_0x49f01b-0x0;var _0x2d5820=_0xc2b9[_0x49f01b];return _0x2d5820;};'use strict';function ZohoAccount(_0x17422b){this['id']=_0x17422b['id']||0x0;this[_0x9c2b('0x0')]=_0x17422b[_0x9c2b('0x0')]||'';this[_0x9c2b('0x1')]=_0x17422b['description']||'';this[_0x9c2b('0x2')]=_0x17422b[_0x9c2b('0x2')]||'';this[_0x9c2b('0x3')]=_0x17422b[_0x9c2b('0x3')]||'';this[_0x9c2b('0x4')]=_0x17422b['clientId']||'';this[_0x9c2b('0x5')]=_0x17422b[_0x9c2b('0x5')]||'';this['serverUrl']=_0x17422b[_0x9c2b('0x6')]||'';this['code']=_0x17422b[_0x9c2b('0x7')]||'';this[_0x9c2b('0x8')]=_0x17422b[_0x9c2b('0x8')]||'';this['Configurations']=_0x17422b[_0x9c2b('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0x47b7=['name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations','exports'];(function(_0x49ed01,_0x3a7b58){var _0x2998c2=function(_0x4830d9){while(--_0x4830d9){_0x49ed01['push'](_0x49ed01['shift']());}};_0x2998c2(++_0x3a7b58);}(_0x47b7,0x6e));var _0x747b=function(_0x188a40,_0x1c2002){_0x188a40=_0x188a40-0x0;var _0xa4124b=_0x47b7[_0x188a40];return _0xa4124b;};'use strict';function ZohoAccount(_0x1331df){this['id']=_0x1331df['id']||0x0;this[_0x747b('0x0')]=_0x1331df[_0x747b('0x0')]||'';this[_0x747b('0x1')]=_0x1331df['description']||'';this[_0x747b('0x2')]=_0x1331df[_0x747b('0x2')]||'';this[_0x747b('0x3')]=_0x1331df[_0x747b('0x3')]||'';this[_0x747b('0x4')]=_0x1331df[_0x747b('0x4')]||'';this['clientSecret']=_0x1331df[_0x747b('0x5')]||'';this[_0x747b('0x6')]=_0x1331df[_0x747b('0x6')]||'';this[_0x747b('0x7')]=_0x1331df[_0x747b('0x7')]||'';this[_0x747b('0x8')]=_0x1331df[_0x747b('0x8')]||'';this[_0x747b('0x9')]=_0x1331df[_0x747b('0x9')]||{};}module[_0x747b('0xa')]=ZohoAccount;
\ No newline at end of file
index b2fb24e..628ce78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['prototype','getCaller','number','exports','lodash','moment','isNil','string','uniqueid','type','queue','dialAnswer','Agent','name','channelAgent','format','SIP/%s','membername','calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId','originatecalleridnum','originatecalleridname'];(function(_0xfcfb40,_0x47b9a0){var _0x16627c=function(_0x588e95){while(--_0x588e95){_0xfcfb40['push'](_0xfcfb40['shift']());}};_0x16627c(++_0x47b9a0);}(_0x8603,0x190));var _0x3860=function(_0x35b558,_0xeb7d5c){_0x35b558=_0x35b558-0x0;var _0x481909=_0x8603[_0x35b558];return _0x481909;};'use strict';var util=require('util');var _=require(_0x3860('0x0'));var moment=require(_0x3860('0x1'));function checkNameSurname(_0x96d2bc,_0x51bfda,_0x4961d6){var _0x2ebe8b='';if(!_[_0x3860('0x2')](_0x51bfda)&&_0x3860('0x3')===typeof _0x51bfda){_0x2ebe8b+=_0x51bfda;}if(!_['isNil'](_0x4961d6)&&_0x3860('0x3')===typeof _0x4961d6){_0x2ebe8b+='\x20'+_0x4961d6;}if(_0x2ebe8b!==''){return _0x2ebe8b;}return _0x96d2bc;}function Action(_0x56f8c5,_0xb0fc24,_0x40739b,_0x1eca44,_0xd3ce26){this[_0x3860('0x4')]=_0x40739b||undefined;this['idContact']=_0x56f8c5['id'];this['queue']=_0xb0fc24['name'];this[_0x3860('0x5')]=_0xb0fc24[_0x3860('0x5')];this['campaigntype']=_0x3860('0x6');this[_0x3860('0x7')]=![];this['membername']=_[_0x3860('0x2')](_0x56f8c5[_0x3860('0x8')])?undefined:_0x56f8c5['Agent'][_0x3860('0x9')];this[_0x3860('0xa')]=this['membername']?util[_0x3860('0xb')](_0x3860('0xc'),this[_0x3860('0xd')]):_0x1eca44||undefined;this[_0x3860('0xe')]=checkNameSurname(_0x56f8c5[_0x3860('0xf')][_0x3860('0x10')],_0x56f8c5[_0x3860('0xf')][_0x3860('0x11')],_0x56f8c5[_0x3860('0xf')][_0x3860('0x12')]);this['active']=_0x56f8c5[_0x3860('0x13')]||![];this[_0x3860('0x14')]=_0x56f8c5[_0x3860('0x10')];this[_0x3860('0x15')]=_0x56f8c5[_0x3860('0x15')];this[_0x3860('0x16')]=_0x56f8c5[_0x3860('0x16')]||0x0;this[_0x3860('0x17')]=_0x56f8c5[_0x3860('0x17')]||0x0;this[_0x3860('0x18')]=_0x56f8c5[_0x3860('0x18')]||0x0;this[_0x3860('0x19')]=(_0x56f8c5['countbusyretry']||0x0)+(_0x56f8c5['countcongestionretry']||0x0)+(_0x56f8c5[_0x3860('0x18')]||0x0)+(_0x56f8c5[_0x3860('0x1a')]||0x0)+(_0x56f8c5[_0x3860('0x1b')]||0x0)+(_0x56f8c5['countabandonedretry']||0x0)+(_0x56f8c5[_0x3860('0x1c')]||0x0)+(_0x56f8c5[_0x3860('0x1d')]||0x0);this[_0x3860('0x1a')]=_0x56f8c5[_0x3860('0x1a')]||0x0;this[_0x3860('0x1b')]=_0x56f8c5[_0x3860('0x1b')]||0x0;this[_0x3860('0x1e')]=_0x56f8c5[_0x3860('0x1e')]||0x0;this[_0x3860('0x1c')]=_0x56f8c5[_0x3860('0x1c')]||0x0;this[_0x3860('0x1d')]=_0x56f8c5[_0x3860('0x1d')]||0x0;this[_0x3860('0x1f')]=_0x56f8c5[_0x3860('0x1f')];this[_0x3860('0x20')]=_0x56f8c5['callbackuniqueid'];this[_0x3860('0x21')]=_0x56f8c5[_0x3860('0x21')];this[_0x3860('0x22')]=_0x56f8c5[_0x3860('0x22')];this[_0x3860('0x23')]=_0x56f8c5['ContactId'];this[_0x3860('0x24')]=_0x56f8c5['ListId'];this['UserId']=_[_0x3860('0x2')](_0x56f8c5[_0x3860('0x8')])?_0x56f8c5['UserId']:_0x56f8c5['Agent']['id'];this['VoiceQueueId']=_0x56f8c5[_0x3860('0x25')];this[_0x3860('0x26')]='';this[_0x3860('0x27')]='';}Action[_0x3860('0x28')][_0x3860('0x29')]=function(){return util[_0x3860('0xb')]('\x22%s\x22\x20<%s>',this['calleridname'],this[_0x3860('0x2a')]);};module[_0x3860('0x2b')]=Action;
\ No newline at end of file
+var _0xeb3b=['Contact','lastName','active','calleridnum','scheduledat','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','calleridname','number','util','lodash','moment','isNil','uniqueid','queue','name','type','campaigntype','dialAnswer','Agent','channelAgent','membername','format','SIP/%s','phone'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x1ac6ec,_0x1f81fc){_0x1ac6ec=_0x1ac6ec-0x0;var _0x48a489=_0xeb3b[_0x1ac6ec];return _0x48a489;};'use strict';var util=require(_0xbeb3('0x0'));var _=require(_0xbeb3('0x1'));var moment=require(_0xbeb3('0x2'));function checkNameSurname(_0x33e049,_0xba125a,_0x565c41){var _0x5df0cb='';if(!_[_0xbeb3('0x3')](_0xba125a)&&'string'===typeof _0xba125a){_0x5df0cb+=_0xba125a;}if(!_[_0xbeb3('0x3')](_0x565c41)&&'string'===typeof _0x565c41){_0x5df0cb+='\x20'+_0x565c41;}if(_0x5df0cb!==''){return _0x5df0cb;}return _0x33e049;}function Action(_0x2e8a69,_0x5ae6f9,_0x8d8cce,_0x294cc9,_0x406927){this[_0xbeb3('0x4')]=_0x8d8cce||undefined;this['idContact']=_0x2e8a69['id'];this[_0xbeb3('0x5')]=_0x5ae6f9[_0xbeb3('0x6')];this[_0xbeb3('0x7')]=_0x5ae6f9[_0xbeb3('0x7')];this[_0xbeb3('0x8')]=_0xbeb3('0x5');this[_0xbeb3('0x9')]=![];this['membername']=_[_0xbeb3('0x3')](_0x2e8a69[_0xbeb3('0xa')])?undefined:_0x2e8a69['Agent'][_0xbeb3('0x6')];this[_0xbeb3('0xb')]=this[_0xbeb3('0xc')]?util[_0xbeb3('0xd')](_0xbeb3('0xe'),this[_0xbeb3('0xc')]):_0x294cc9||undefined;this['calleridname']=checkNameSurname(_0x2e8a69['Contact'][_0xbeb3('0xf')],_0x2e8a69[_0xbeb3('0x10')]['firstName'],_0x2e8a69['Contact'][_0xbeb3('0x11')]);this[_0xbeb3('0x12')]=_0x2e8a69[_0xbeb3('0x12')]||![];this[_0xbeb3('0x13')]=_0x2e8a69[_0xbeb3('0xf')];this['scheduledat']=_0x2e8a69[_0xbeb3('0x14')];this['countbusyretry']=_0x2e8a69[_0xbeb3('0x15')]||0x0;this['countcongestionretry']=_0x2e8a69['countcongestionretry']||0x0;this['countnoanswerretry']=_0x2e8a69[_0xbeb3('0x16')]||0x0;this[_0xbeb3('0x17')]=(_0x2e8a69[_0xbeb3('0x15')]||0x0)+(_0x2e8a69[_0xbeb3('0x18')]||0x0)+(_0x2e8a69['countnoanswerretry']||0x0)+(_0x2e8a69[_0xbeb3('0x19')]||0x0)+(_0x2e8a69[_0xbeb3('0x1a')]||0x0)+(_0x2e8a69[_0xbeb3('0x1b')]||0x0)+(_0x2e8a69['countmachineretry']||0x0)+(_0x2e8a69['countagentrejectretry']||0x0);this[_0xbeb3('0x19')]=_0x2e8a69['countnosuchnumberretry']||0x0;this[_0xbeb3('0x1a')]=_0x2e8a69['countdropretry']||0x0;this['countabandonedretry']=_0x2e8a69[_0xbeb3('0x1b')]||0x0;this[_0xbeb3('0x1c')]=_0x2e8a69[_0xbeb3('0x1c')]||0x0;this['countagentrejectretry']=_0x2e8a69[_0xbeb3('0x1d')]||0x0;this[_0xbeb3('0x1e')]=_0x2e8a69['callback'];this[_0xbeb3('0x1f')]=_0x2e8a69[_0xbeb3('0x1f')];this['callbackat']=_0x2e8a69[_0xbeb3('0x20')];this[_0xbeb3('0x21')]=_0x2e8a69[_0xbeb3('0x21')];this[_0xbeb3('0x22')]=_0x2e8a69[_0xbeb3('0x22')];this[_0xbeb3('0x23')]=_0x2e8a69[_0xbeb3('0x23')];this[_0xbeb3('0x24')]=_[_0xbeb3('0x3')](_0x2e8a69['Agent'])?_0x2e8a69['UserId']:_0x2e8a69[_0xbeb3('0xa')]['id'];this['VoiceQueueId']=_0x2e8a69[_0xbeb3('0x25')];this[_0xbeb3('0x26')]='';this[_0xbeb3('0x27')]='';}Action[_0xbeb3('0x28')]['getCaller']=function(){return util[_0xbeb3('0xd')]('\x22%s\x22\x20<%s>',this[_0xbeb3('0x29')],this[_0xbeb3('0x2a')]);};module['exports']=Action;
\ No newline at end of file
index f59095b..d94205b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','info','format','voice:queue:%s','name','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','originated','pTalking','available','CAMPAIGN_STATUS','INACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','dialMethod','booked','type','outbound','dialActive','setMessage','recallMe','clearZombieChannel','sequence','isNil','Queue','queue','originated:\x20','stringify','pick','UserId','VoiceQueueId','ListId','channel','message','No\x20such\x20channel','dialAnswer','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannels','size','getContactRecallMe','then','length','getDiff','scheduledat','Agent','voicePause','run','[RecallMe]','catch','logger2','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[getContactRecallMe]','IsNotLoggedIn','NO_AGENTS_LOGGED','isActive','isTrunkReachable','UNREACHABLE_TRUNK','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','cloneAction','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','activeContact','linkedid','idContact','incrementPreviewCounters','ANSWER','answertime','[syncHangup][talking][increment]','pTalking:\x20','custom:agentconnect','connect','acw','mandatoryDisposition','custom:agentConnectPreview','channelAgent','uniqueid','custom:agentcomplete','complete','outboundAnswerCallsDay','answered','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','sumBillable','[syncHangup][talking][decrement]','\x20Queue','outboundBusyCallsDay','countbusyretry','Busy','dialBusyRetryFrequency','callAdditionalPhoneAfterMin','busy','[callProgressDetectingCustomer][logBusy]','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','unlockAgent','NOANSWER','countnoanswerretry','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','custom:agentnoanswer','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','outboundCongestionCallsDay','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','swapAdditionalPhones','CANCEL','outboundRejectCallsDay','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','countmachineretry','cause-txt','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','outboundUnknownCallsDay','dialstatus','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','object','isUndefined','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','NoAnswer','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','resolve','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','status','reachable','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','checkIsBlackList','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','Trunk','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','dialPrefix','trim','dialCutDigit','substring','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','variables','variablesAction','Action','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','responsetime','response','rejected','Answer','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','syncHangupRequest','addVariable','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','../../../config/environment','preview','../../../config/logger','actionPreview','../ami','./rpcDb','./action','./util/util','../dialer/utils','redis','prototype','enqueue','tail','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncDialEnd','syncNewExten'];(function(_0x45878e,_0x21e33d){var _0x3e490f=function(_0x48de4){while(--_0x48de4){_0x45878e['push'](_0x45878e['shift']());}};_0x3e490f(++_0x21e33d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xa9e0[_0x8de54f];return _0x14cba4;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var uuid=require(_0x0a9e('0x2'));var moment=require('moment');var Redis=require('ioredis');var config=require(_0x0a9e('0x3'));var logger=require('../../../config/logger')(_0x0a9e('0x4'));var loggerAction=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var ami=require(_0x0a9e('0x7'));var rpcDb=require(_0x0a9e('0x8'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var Action=require(_0x0a9e('0x9'));var ut=require(_0x0a9e('0xa'));var utils=require(_0x0a9e('0xb'));config['redis']=_['defaults'](config[_0x0a9e('0xc')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0xc')]));var Sequence=function(){};Sequence[_0x0a9e('0xd')][_0x0a9e('0xe')]=function(_0x3ab53f){this[_0x0a9e('0xf')]=this[_0x0a9e('0xf')]?this['tail']['finally'](_0x3ab53f):_0x3ab53f();};function Preview(_0x527cdd){this['sequence']=new Sequence();this[_0x0a9e('0x10')]=_0x527cdd[_0x0a9e('0x11')];this[_0x0a9e('0x12')]=_0x527cdd[_0x0a9e('0x12')];this[_0x0a9e('0x13')]={};this[_0x0a9e('0x14')]=_0x527cdd['agents'];this[_0x0a9e('0x15')]=0x0;ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x19'),this[_0x0a9e('0x1a')]['bind'](this));ami['on'](_0x0a9e('0x1b'),this['syncHangupRequest'][_0x0a9e('0x18')](this));ami['on']('dialend',this[_0x0a9e('0x1c')][_0x0a9e('0x18')](this));ami['on']('newexten',this[_0x0a9e('0x1d')]['bind'](this));ami['on'](_0x0a9e('0x1e'),this[_0x0a9e('0x1f')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x20'),this[_0x0a9e('0x21')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x22'),this[_0x0a9e('0x23')][_0x0a9e('0x18')](this));this[_0x0a9e('0x24')](this[_0x0a9e('0x10')]);}function emit(_0x105080,_0x4bb1e3,_0x2c3407){io['to'](_0x105080)[_0x0a9e('0x25')](_0x4bb1e3,_0x2c3407);}function emitVoiceQueueChannelRemove(_0x53682f){logger[_0x0a9e('0x26')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON['stringify'](_0x53682f));emit(util[_0x0a9e('0x27')](_0x0a9e('0x28'),_0x53682f[_0x0a9e('0x29')]),_0x0a9e('0x2a'),_0x53682f);io['emit'](_0x0a9e('0x2b'),_0x53682f);}function notSendMessagesQueue(_0x2fb0e4){if(_0x2fb0e4[_0x0a9e('0x2c')]){if(_0x2fb0e4[_0x0a9e('0x2d')]===0x0&&_0x2fb0e4[_0x0a9e('0x2e')]===0x0){_0x2fb0e4[_0x0a9e('0x2c')]=![];_0x2fb0e4[_0x0a9e('0x2f')]=0x0;_0x2fb0e4['paused']=0x0;_0x2fb0e4['message']=utils[_0x0a9e('0x30')][_0x0a9e('0x31')];ut[_0x0a9e('0x32')](_0x0a9e('0x33'),_0x2fb0e4['name']+_0x0a9e('0x34'));}else{_0x2fb0e4['message']=utils[_0x0a9e('0x30')]['DEACTIVATED'];ut[_0x0a9e('0x32')](_0x0a9e('0x33'),_0x2fb0e4[_0x0a9e('0x29')]+_0x0a9e('0x35'));}}}Preview[_0x0a9e('0xd')][_0x0a9e('0x24')]=function(){var _0x11c3b6=this;setInterval(function(){_0x11c3b6[_0x0a9e('0x36')]();},0x7cf);};Preview['prototype'][_0x0a9e('0x36')]=function(){var _0x468813=this[_0x0a9e('0x10')];this[_0x0a9e('0x15')]+=0x1;for(var _0x5c877d in _0x468813){if(_0x468813[_0x0a9e('0x37')](_0x5c877d)&&(_0x468813[_0x5c877d][_0x0a9e('0x38')]===_0x0a9e('0x4')||_0x468813[_0x5c877d][_0x0a9e('0x38')]===_0x0a9e('0x39'))&&_0x468813[_0x5c877d][_0x0a9e('0x3a')]===_0x0a9e('0x3b')){if(this[_0x0a9e('0x15')]>0x7){this[_0x0a9e('0x15')]=0x0;this['clearZombieChannels']();}}if(_0x468813[_0x0a9e('0x37')](_0x5c877d)&&_0x468813[_0x5c877d]['dialMethod']===_0x0a9e('0x4')&&_0x468813[_0x5c877d][_0x0a9e('0x3a')]===_0x0a9e('0x3b')){if(_0x468813[_0x5c877d][_0x0a9e('0x3c')]){this[_0x0a9e('0x3d')](_0x468813[_0x5c877d]);if(_0x468813[_0x5c877d]['dialPreviewAutoRecallMe'])this[_0x0a9e('0x3e')](_0x468813[_0x5c877d]);}else{notSendMessagesQueue(_0x468813[_0x5c877d]);}}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x3f')]=function(_0x2da5c0){var _0x2b45ea=this;this[_0x0a9e('0x40')][_0x0a9e('0xe')](function(){if(!_[_0x0a9e('0x41')](_0x2b45ea['actions'][_0x2da5c0])){loggerAction[_0x0a9e('0x26')]('[clearZombieChannels][talking]',_0x2da5c0,_0x0a9e('0x42'),_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')],_0x0a9e('0x44'),JSON['stringify'](_0x2b45ea[_0x0a9e('0x10')][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]][_0x0a9e('0x2d')]),'pTalking:\x20',JSON['stringify'](_0x2b45ea[_0x0a9e('0x10')][_0x2b45ea['actions'][_0x2da5c0][_0x0a9e('0x43')]][_0x0a9e('0x2e')]),JSON[_0x0a9e('0x45')](_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0]['dialAnswer']),JSON[_0x0a9e('0x45')](_[_0x0a9e('0x46')](_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0],['contactId',_0x0a9e('0x47'),_0x0a9e('0x48'),_0x0a9e('0x49')])));return ami['Action']({'action':'status','channel':_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x4a')]})['catch'](function(_0x2b814e){if(_0x2b814e[_0x0a9e('0x4b')]===_0x0a9e('0x4c')){setTimeout(function(){if(_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0]){ut['updateOriginated'](_0x2b45ea['campaignsPreview'][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]],'[clearZombieChannel]');if(_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x4d')]===!![]){ut[_0x0a9e('0x4e')](_0x2b45ea['campaignsPreview'][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]],_0x0a9e('0x4f'));ut[_0x0a9e('0x50')](_0x0a9e('0x51')+_0x2da5c0,_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]);}ut[_0x0a9e('0x50')](_0x0a9e('0x52')+_0x2da5c0,_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]);delete _0x2b45ea[_0x0a9e('0x13')][_0x2da5c0];}},0x2328);}});}});};Preview[_0x0a9e('0xd')][_0x0a9e('0x53')]=function(){var _0x37f6cc=this;loggerAction['info']('[action]',_[_0x0a9e('0x54')](this[_0x0a9e('0x13')]));for(var _0x405c8f in this[_0x0a9e('0x13')]){if(_0x37f6cc[_0x0a9e('0x13')][_0x0a9e('0x37')](_0x405c8f)){_0x37f6cc[_0x0a9e('0x3f')](_0x405c8f);}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x3e')]=function(_0x25c6e6){var _0x2c2cb0=this;rpcDb[_0x0a9e('0x55')](_0x25c6e6['id'],ut['agentReadyId'](this[_0x0a9e('0x14')]))[_0x0a9e('0x56')](function(_0xdd268f){if(!_[_0x0a9e('0x41')](_0xdd268f)){for(var _0x2e8caf=0x0;_0x2e8caf<_0xdd268f[_0x0a9e('0x57')];_0x2e8caf+=0x1){if(ut[_0x0a9e('0x58')](_0xdd268f[_0x2e8caf][_0x0a9e('0x59')])<_0x25c6e6['dialRecallMeTimeout']*0x3c){if(_0xdd268f[_0x2e8caf][_0x0a9e('0x5a')]&&!_0xdd268f[_0x2e8caf]['Agent'][_0x0a9e('0x5b')]){_0x2c2cb0[_0x0a9e('0x5c')](_0xdd268f[_0x2e8caf]['id'])[_0x0a9e('0x56')](ut['logger2'](_0x0a9e('0x5d')))[_0x0a9e('0x5e')](ut[_0x0a9e('0x5f')](_0x0a9e('0x5d')));}else{rpcDb[_0x0a9e('0x60')](_0xdd268f[_0x2e8caf]['id']);}}else{var _0x37be73=new Action(_0xdd268f[_0x2e8caf],_0x25c6e6);_0x37be73[_0x0a9e('0x61')]=moment()['format'](_0x0a9e('0x62'));_0x25c6e6[_0x0a9e('0x63')]+=0x1;ut[_0x0a9e('0x64')](_0x37be73,0x17,_0x0a9e('0x65'));if(_0x25c6e6[_0x0a9e('0x66')]){rpcDb[_0x0a9e('0x67')](ut[_0x0a9e('0x68')](_0xdd268f[_0x2e8caf]));rpcDb[_0x0a9e('0x69')](_0x37be73,_0x0a9e('0x6a'));}else{ut['logCustomer'](_0x37be73,0x16,_0x0a9e('0x6b'));rpcDb[_0x0a9e('0x69')](_0x37be73,'[HistoryRecallClose]');rpcDb['createCustomerFinal'](_0x37be73,'[HistoryRecallClose]');}}}}})[_0x0a9e('0x5e')](ut[_0x0a9e('0x5f')](_0x0a9e('0x6c')));};Preview[_0x0a9e('0xd')][_0x0a9e('0x3d')]=function(_0x30decb){_0x30decb[_0x0a9e('0x2c')]=!![];if(ut[_0x0a9e('0x6d')](_0x30decb['loggedIn'])){_0x30decb['message']=utils['CAMPAIGN_STATUS'][_0x0a9e('0x6e')];}else if(!ut[_0x0a9e('0x6f')](_0x30decb[_0x0a9e('0x3c')])){_0x30decb['message']=utils[_0x0a9e('0x30')][_0x0a9e('0x31')];}else if(!this['isTrunkReachable'](_0x30decb['Trunk'])){if(!this[_0x0a9e('0x70')](_0x30decb['TrunkBackup'])){_0x30decb[_0x0a9e('0x4b')]=utils['CAMPAIGN_STATUS'][_0x0a9e('0x71')];}else{_0x30decb[_0x0a9e('0x4b')]=utils[_0x0a9e('0x30')]['ACTIVE'];}}else{_0x30decb[_0x0a9e('0x4b')]=utils[_0x0a9e('0x30')]['ACTIVE'];}};Preview['prototype'][_0x0a9e('0x72')]=function(_0x3aedd0,_0x49c095,_0x145931){var _0x5ce9ac=this;var _0x211ef9=this['actions'][_0x49c095];var _0xe22ccc=this['campaignsPreview'][_0x211ef9['queue']];var _0x5df0ad;var _0x2da03c=![];var _0x47de4c=0x2;var _0x2f7092=0x3;if(_0xe22ccc){switch(_0x145931){case'1':_0xe22ccc[_0x0a9e('0x73')]+=0x1;_0x211ef9[_0x0a9e('0x74')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x0,_0x0a9e('0x77'));ami[_0x0a9e('0x25')]('custom:agentnosuchnumber',ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0x79')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0x7a'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'0',_0xe22ccc)[_0x0a9e('0x56')](function(_0x5d86e9){_0x2da03c=_0x5d86e9[_0x0a9e('0x7c')]==0x1;_0x47de4c=_0xe22ccc[_0x0a9e('0x7d')];_0x2f7092=_0xe22ccc['callAdditionalPhoneAfterMin'];if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc['dialGlobalMaxRetry']){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,'Global');rpcDb['createCustomerFinal'](_0x5df0ad,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x211ef9[_0x0a9e('0x74')]>=_0xe22ccc['dialNoSuchNumberMaxRetry']){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0x80'));}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,_0x0a9e('0x74'),_0xe22ccc[_0x0a9e('0x7d')]),_0x211ef9['unlockAgent'],_0x211ef9[_0x0a9e('0x83')]);}}delete this['actions'][_0x3aedd0[_0x0a9e('0x84')]];}else{_0x211ef9[_0x0a9e('0x74')]++;logger[_0x0a9e('0x26')]('actioncountonusuch',_0x211ef9[_0x0a9e('0x74')]);logger[_0x0a9e('0x26')]('id',_0x211ef9[_0x0a9e('0x85')]);_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9['idContact'],'field':{'countnosuchnumberretry':_0x211ef9[_0x0a9e('0x74')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0x87'):var _0x88dcbf=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));_0x211ef9['responsetime']=_0x88dcbf;_0x211ef9[_0x0a9e('0x88')]=_0x88dcbf;_0x211ef9[_0x0a9e('0x4d')]=!![];_0xe22ccc[_0x0a9e('0x2e')]+=0x1;logger['info'](_0x0a9e('0x89'),_0x211ef9['uniqueid'],'\x20Queue',_0xe22ccc[_0x0a9e('0x29')],_0x0a9e('0x8a'),_0xe22ccc[_0x0a9e('0x2e')]);ami[_0x0a9e('0x25')](_0x0a9e('0x8b'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0x8c'),this[_0x0a9e('0x10')][_0x211ef9[_0x0a9e('0x43')]]));if(_0xe22ccc[_0x0a9e('0x8d')]||_0xe22ccc[_0x0a9e('0x8e')]){ami[_0x0a9e('0x25')](_0x0a9e('0x8f'),{'queue':_0x211ef9[_0x0a9e('0x43')],'interface':_0x211ef9[_0x0a9e('0x90')],'uniqueid':_0x211ef9[_0x0a9e('0x91')]});}break;case'16':ami[_0x0a9e('0x25')](_0x0a9e('0x92'),ut['buildObj'](_0x211ef9,_0x0a9e('0x93'),this[_0x0a9e('0x10')][_0x211ef9[_0x0a9e('0x43')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x211ef9,_0x0a9e('0x93')));_0xe22ccc[_0x0a9e('0x94')]+=0x1;_0xe22ccc['total']+=0x1;_0xe22ccc[_0x0a9e('0x95')]+=0x1;ut[_0x0a9e('0x4e')](_0xe22ccc,_0x0a9e('0x96'));_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x4,'Answer');rpcDb['createCustomerHistory'](_0x211ef9,_0x0a9e('0x97'));rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0x98'));rpcDb[_0x0a9e('0x99')](_0x211ef9);_0xe22ccc[_0x0a9e('0x9a')]+=_0x211ef9[_0x0a9e('0x9b')];_0xe22ccc[_0x0a9e('0x9c')]+=_0x211ef9[_0x0a9e('0x9b')];logger['info'](_0x0a9e('0x9d'),_0x211ef9[_0x0a9e('0x91')],_0x0a9e('0x9e'),_0xe22ccc['name'],_0x0a9e('0x8a'),_0xe22ccc['pTalking']);delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;case'BUSY':_0xe22ccc[_0x0a9e('0x9f')]+=0x1;_0x211ef9[_0x0a9e('0xa0')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x5,_0x0a9e('0xa1'));_0x47de4c=_0xe22ccc[_0x0a9e('0xa2')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami[_0x0a9e('0x25')]('custom:agentbusy',ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xa4')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xa5'));_0x5ce9ac['verifyAdditionalPhones'](_0x211ef9,'5',_0xe22ccc)[_0x0a9e('0x56')](function(_0x3511c9){_0x2da03c=_0x3511c9[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xa8'));}else{if(_0x211ef9[_0x0a9e('0xa0')]>=_0xe22ccc[_0x0a9e('0xa9')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xa5'));}else{rpcDb[_0x0a9e('0x81')](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xa0'),_0xe22ccc[_0x0a9e('0xa2')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xa0')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countbusyretry':_0x211ef9[_0x0a9e('0xa0')]}})['then'](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0xab'):_0xe22ccc['outboundNoAnswerCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xac')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x3,'NoAnswer');_0x47de4c=_0xe22ccc[_0x0a9e('0xad')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];var _0x2d2286=ut[_0x0a9e('0xae')](_0x211ef9,_0xe22ccc);ami[_0x0a9e('0x25')](_0x0a9e('0xaf'),_0x2d2286);rpcDb[_0x0a9e('0x69')](_0x211ef9,'[callProgressDetectingCustomer][logNoAnswer]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'3',_0xe22ccc)[_0x0a9e('0x56')](function(_0x45c109){_0x2da03c=_0x45c109[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,'Global');rpcDb[_0x0a9e('0x7f')](_0x5df0ad,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x211ef9[_0x0a9e('0xac')]>=_0xe22ccc[_0x0a9e('0xb0')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xb1'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xac'),_0xe22ccc[_0x0a9e('0xad')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9['idContact'],'field':{'countnoanswerretry':_0x211ef9['countnoanswerretry']}})[_0x0a9e('0x56')](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});break;case'CONGESTION':_0xe22ccc[_0x0a9e('0xb2')]+=0x1;_0x211ef9[_0x0a9e('0xb3')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x8,_0x0a9e('0xb4'));_0x47de4c=_0xe22ccc['dialCongestionRetryFrequency'];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami['emit'](_0x0a9e('0xb5'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xb6')));rpcDb[_0x0a9e('0x69')](_0x211ef9,'[callProgressDetectingCustomer][logCongestion]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'8',_0xe22ccc)[_0x0a9e('0x56')](function(_0x1d4877){_0x2da03c=_0x1d4877['additional']==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xb7'));}else{if(_0x211ef9[_0x0a9e('0xb3')]>=_0xe22ccc[_0x0a9e('0xb8')]){rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xb9'));}else{rpcDb[_0x0a9e('0x81')](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xb3'),_0xe22ccc[_0x0a9e('0xa2')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xb3')]++;_0x5ce9ac['incrementPreviewCounters']({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countcongestionretry':_0x211ef9[_0x0a9e('0xb3')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0xbb'):_0xe22ccc[_0x0a9e('0xbc')]+=0x1;_0x211ef9[_0x0a9e('0xbd')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x14,_0x0a9e('0xbe'));_0x47de4c=_0xe22ccc[_0x0a9e('0xbf')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami[_0x0a9e('0x25')](_0x0a9e('0xc0'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xc1')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xc2'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'20',_0xe22ccc)[_0x0a9e('0x56')](function(_0x4989f9){_0x2da03c=_0x4989f9[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0x14,_0x0a9e('0xbe'));rpcDb['createCustomerFinal'](_0x5df0ad,_0x0a9e('0xc3'));}else{if(_0x211ef9[_0x0a9e('0xbd')]>=_0xe22ccc['dialAgentRejectMaxRetry']){rpcDb[_0x0a9e('0x7f')](_0x211ef9,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,_0x0a9e('0xbd'),_0xe22ccc[_0x0a9e('0xbf')]),_0x211ef9['unlockAgent'],_0x211ef9[_0x0a9e('0x83')]);}}}else{_0x211ef9['countnoanswerretry']++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9['countnoanswerretry']}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case'ABANDONED':_0xe22ccc['outboundAbandonedCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xc4')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0xb,_0x0a9e('0xc5'));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xc6'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'11',_0xe22ccc)[_0x0a9e('0x56')](function(_0x586510){_0x2da03c=_0x586510[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xc6'));}else{if(_0x211ef9['countabandonedetry']>=_0xe22ccc[_0x0a9e('0xc7')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xc6'));}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,'countabandonedretry',_0xe22ccc['dialAbandonedRetryFrequency']),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});break;case'18':_0xe22ccc['outboundUnknownCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xc8')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x12,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0['dialstatus']);ami['emit'](_0x0a9e('0xca'),ut[_0x0a9e('0x78')](_0x211ef9,'amd'));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xcb'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'18',_0xe22ccc)[_0x0a9e('0x56')](function(_0x2eb028){_0x2da03c=_0x2eb028['additional']==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0x12,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xcb'));}else{rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xcb'));}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac['incrementPreviewCounters']({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;case'19':_0xe22ccc[_0x0a9e('0xcc')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x13,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0[_0x0a9e('0xcd')]);ami[_0x0a9e('0x25')](_0x0a9e('0xca'),ut[_0x0a9e('0x78')](_0x211ef9,'amd'));rpcDb['createCustomerHistory'](_0x211ef9,_0x0a9e('0xce'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'18',_0xe22ccc)[_0x0a9e('0x56')](function(_0x2fea95){_0x2da03c=_0x2fea95[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb['createCustomerFinal'](_0x5df0ad,_0x0a9e('0xce'));}else{rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xce'));}}else{_0x211ef9['countnoanswerretry']++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})['then'](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;default:if(_0x211ef9[_0x0a9e('0x4d')]){ut[_0x0a9e('0x4e')](_0xe22ccc,_0x0a9e('0xcf'));ut[_0x0a9e('0x50')](_0x0a9e('0xd0')+_0xe22ccc[_0x0a9e('0x29')],_0x3aedd0);}_0xe22ccc[_0x0a9e('0xcc')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0xc,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0[_0x0a9e('0xcd')]);_0x47de4c=_0xe22ccc[_0x0a9e('0xbf')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];rpcDb['createCustomerHistory'](_0x211ef9,'[callProgressDetectingCustomer][logUnknown]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'20',_0xe22ccc)['then'](function(_0x1d999b){_0x2da03c=_0x1d999b[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xd1'));}delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];}else{_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});}});}if(!(_0x211ef9[_0x0a9e('0x4d')]&&_0x145931==='16')){ut[_0x0a9e('0xd2')](_0xe22ccc,'[callProgressDetectingCustomer]');logger[_0x0a9e('0x26')](_0x0a9e('0xd3'),_0x211ef9[_0x0a9e('0x91')],'\x20Queue',_0xe22ccc[_0x0a9e('0x29')],_0x0a9e('0x44'),_0xe22ccc[_0x0a9e('0x2d')]);}if(_0x145931!==_0x0a9e('0x87')){delete this[_0x0a9e('0x13')][_0x3aedd0['linkedid']];delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0xd4')]];}_0xe22ccc['queueSummaryCountersUpdated']=!![];}};Preview[_0x0a9e('0xd')][_0x0a9e('0xd5')]=function(_0x1f6f1c,_0x5822a7,_0x5c3b6f){if(_['isUndefined'](_0x5822a7)&&_0x0a9e('0xd6')!==typeof _0x5822a7){return;}if(_[_0x0a9e('0xd7')](_0x5c3b6f)&&'object'!==typeof _0x5c3b6f){return;}switch(_0x5c3b6f[_0x0a9e('0xd8')]){case'0':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x0,_0x0a9e('0x77'));rpcDb['createAgentHistory'](_0x1f6f1c,_0x0a9e('0xda'));break;case'3':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x3,_0x0a9e('0xdb'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xdd'));break;case'5':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x5,_0x0a9e('0xa1'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xde'));break;case'8':ut['logAgent'](_0x1f6f1c,0x8,_0x0a9e('0xb4'));rpcDb['createAgentHistory'](_0x1f6f1c,_0x0a9e('0xdf'));break;case'22':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x16,_0x0a9e('0xe0'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xe1'));break;default:ut[_0x0a9e('0xd9')](_0x1f6f1c,0xc,_0x5c3b6f['reason']);rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xdf'));}ut[_0x0a9e('0xd2')](_0x5822a7,_0x0a9e('0xe2'));logger['info'](_0x0a9e('0xe3'),_0x1f6f1c[_0x0a9e('0x91')],_0x0a9e('0x9e'),_0x5822a7[_0x0a9e('0x29')],_0x0a9e('0x44'),_0x5822a7[_0x0a9e('0x2d')]);delete this[_0x0a9e('0x13')][_0x1f6f1c[_0x0a9e('0x91')]];};Preview[_0x0a9e('0xd')][_0x0a9e('0x7b')]=function(_0x57f0ad,_0x2272bc,_0x88b25f){return cmHopperAdditionalPhone[_0x0a9e('0x7b')](_0x57f0ad,_0x2272bc,_0x88b25f)[_0x0a9e('0x5e')](logger[_0x0a9e('0x26')](_0x0a9e('0xe4')));};Preview[_0x0a9e('0xd')][_0x0a9e('0xba')]=function(_0x566b90,_0x3b581c,_0xd2391){return cmHopperAdditionalPhone[_0x0a9e('0xba')](_0x566b90,_0x3b581c,_0xd2391)['catch'](logger[_0x0a9e('0x26')](_0x0a9e('0xe5')));};Preview[_0x0a9e('0xd')][_0x0a9e('0x86')]=function(_0x370b5e){return Promise[_0x0a9e('0xe6')]()[_0x0a9e('0x56')](cmHopperAdditionalPhone[_0x0a9e('0x86')](_0x370b5e))[_0x0a9e('0x5e')](logger[_0x0a9e('0x26')]('[incrementPreviewCounters]\x20'));};Preview[_0x0a9e('0xd')][_0x0a9e('0xe7')]=function(_0x15a9ed,_0x3db98f,_0x2b624e,_0x3942fd,_0x5cb48d){var _0x382687=this;return new Promise(function(_0x4f854b,_0x5bd139){if(_['isNil'](_0x3db98f)||_[_0x0a9e('0x41')](_0x3db98f[_0x0a9e('0xe8')])||_[_0x0a9e('0x41')](_0x3db98f[_0x0a9e('0xe9')])||_['isNil'](_0x3db98f[_0x0a9e('0x48')])){_0x5bd139(ut[_0x0a9e('0x4b')](_0x0a9e('0xea'),_0x3942fd,_0x5cb48d));return;}var _0x1fdb10=uuid['v4']();var _0x2c8d1d=_0x382687['campaignsPreview'][_0x3db98f['Queue'][_0x0a9e('0x29')]];var _0x33bcb2=_0x2b624e?_0x382687[_0x0a9e('0x14')][_0x2b624e]['id']:undefined;_0x382687['actions'][_0x1fdb10]=new Action(_0x3db98f,_0x2c8d1d,_0x1fdb10,_0x2b624e,_0x33bcb2);var _0x319752=_0x382687[_0x0a9e('0x13')][_0x1fdb10];_0x319752[_0x0a9e('0xaa')]=_0x3942fd;_0x319752['activeContact']=_0x5cb48d;_0x319752[_0x0a9e('0xeb')]=_0x2b624e;if(_[_0x0a9e('0xec')](_0x15a9ed)){_0x382687[_0x0a9e('0xed')](_0x319752,_0x2c8d1d,_0x3db98f,_0x2b624e)['then'](function(_0x272291){logger[_0x0a9e('0x26')](_0x0a9e('0xee'),'Queue:\x20'+_0x319752['queue']+'\x20IdHopper:\x20'+_0x319752[_0x0a9e('0x85')],JSON[_0x0a9e('0x45')](_0x272291));ami[_0x0a9e('0x25')](_0x0a9e('0xef'),ut['buildObj'](_0x319752,_0x0a9e('0xf0'),_0x382687['campaignsPreview'][_0x319752[_0x0a9e('0x43')]]));_0x4f854b(ut[_0x0a9e('0x4b')](_0x0a9e('0xf1')));})['catch'](function(_0x33b4b3){ut[_0x0a9e('0x32')](_0x0a9e('0xf2'),_0x33b4b3);_0x5bd139(ut['message'](_0x0a9e('0xf3'),_0x3942fd,_0x5cb48d));});}else{_0x2c8d1d['outboundBlacklistCallsDay']+=0x1;ut[_0x0a9e('0xf4')](_0x319752);rpcDb['createHistory'](_0x319752,_0x0a9e('0xf5'));delete _0x382687['actions'][_0x1fdb10];_0x5bd139(ut[_0x0a9e('0x4b')](_0x0a9e('0xf6'),_0x3942fd,_0x5cb48d));}});};Preview[_0x0a9e('0xd')][_0x0a9e('0x70')]=function(_0x1e306c){return!_[_0x0a9e('0x41')](_0x1e306c)&&!_[_0x0a9e('0x41')](_0x1e306c['name'])&&!_[_0x0a9e('0x41')](_0x1e306c[_0x0a9e('0xf7')])&&_0x1e306c['active']&&!_[_0x0a9e('0x41')](this[_0x0a9e('0x12')][util['format'](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])])&&!_[_0x0a9e('0x41')](this['trunks'][util[_0x0a9e('0x27')](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')])&&(this[_0x0a9e('0x12')][util[_0x0a9e('0x27')](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')]===_0x0a9e('0xfa')||this['trunks'][util[_0x0a9e('0x27')]('SIP/%s',_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')]===_0x0a9e('0xfb'));};Preview[_0x0a9e('0xd')][_0x0a9e('0x5c')]=function(_0x2d45db,_0x5691ac){return this[_0x0a9e('0xfc')](_0x2d45db,_0x5691ac)[_0x0a9e('0x56')](function(_0x2977a7){return _['pick'](_0x2977a7,[_0x0a9e('0x4b')]);})[_0x0a9e('0x5e')](function(_0x4435d2){if(_0x4435d2[_0x0a9e('0xfd')]){rpcDb[_0x0a9e('0xfe')](_0x2d45db);}if(_0x4435d2[_0x0a9e('0xf7')]){rpcDb[_0x0a9e('0x60')](_0x2d45db);}throw _['pick'](_0x4435d2,[_0x0a9e('0x4b')]);});};Preview[_0x0a9e('0xd')][_0x0a9e('0xfc')]=function(_0x2ce3be,_0x3de77e){var _0x241404=this;var _0x8120e,_0x5d6a48;return rpcDb['getContactPreview'](_0x2ce3be)[_0x0a9e('0x56')](function(_0x3f507c){if(!_[_0x0a9e('0x41')](_0x3f507c[0x0])){_0x5d6a48=_0x3f507c[0x0][_0x0a9e('0xff')]?![]:!![];_0x8120e=_0x3f507c[0x0][_0x0a9e('0xff')]?!![]:![];_0x8120e=_0x3de77e?!![]:_0x8120e;}var _0x131da8=_0x241404[_0x0a9e('0x100')](_0x3f507c);if(_0x131da8['isValid']){rpcDb[_0x0a9e('0x101')](_[_0x0a9e('0x46')](_0x3f507c[0x0],[_0x0a9e('0x48'),_0x0a9e('0xe9')]))[_0x0a9e('0x56')](function(_0x3c6082){_0x241404[_0x0a9e('0xe7')](_0x3c6082,_0x3f507c[0x0],_0x3de77e,_0x5d6a48,_0x8120e)['then'](function(_0x311288){return _0x311288;})[_0x0a9e('0x5e')](function(_0x231826){throw _0x231826;});})['catch'](function(_0x2b8ad4){ut[_0x0a9e('0x32')](_0x0a9e('0x102'),_0x2b8ad4);throw ut[_0x0a9e('0x4b')]('Call\x20unsuccessful',_0x5d6a48,_0x8120e);});}else{throw ut[_0x0a9e('0x4b')](_0x131da8[_0x0a9e('0x4b')],_0x5d6a48,_0x8120e);}})[_0x0a9e('0x5e')](function(_0x93d953){ut[_0x0a9e('0x32')](_0x0a9e('0x103'),_0x93d953);throw ut[_0x0a9e('0x4b')](_0x0a9e('0x104'),![],!![]);});};Preview['prototype'][_0x0a9e('0x100')]=function(_0x266aa1){if(_[_0x0a9e('0x41')](_0x266aa1)||_[_0x0a9e('0xec')](_0x266aa1)||!_['isNil'](_0x266aa1[0x0]['Agent'])&&_[_0x0a9e('0x41')](_0x266aa1[0x0][_0x0a9e('0x5a')][_0x0a9e('0x29')])){ut['logger'](_0x0a9e('0x105'),_0x266aa1);return{'isValid':![],'message':_0x0a9e('0x106')};}var _0x4d8a67=this[_0x0a9e('0x10')][_0x266aa1[0x0]['Queue'][_0x0a9e('0x29')]];_0x4d8a67['message']=utils['CAMPAIGN_STATUS']['ACTIVE'];if(_[_0x0a9e('0x41')](_0x4d8a67)){ut[_0x0a9e('0x32')](_0x0a9e('0x107'),_0x4d8a67);return{'isValid':![],'message':_0x0a9e('0x108')};}if(!this[_0x0a9e('0x70')](_0x4d8a67[_0x0a9e('0x109')])){ut['logger'](_0x0a9e('0x10a'),_0x0a9e('0x10b')+_0x4d8a67[_0x0a9e('0x29')]+_0x0a9e('0x10c'));if(!this[_0x0a9e('0x70')](_0x4d8a67[_0x0a9e('0x10d')])){ut[_0x0a9e('0x32')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x4d8a67['name']+_0x0a9e('0x10e'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}}if(!ut[_0x0a9e('0x6f')](_0x4d8a67[_0x0a9e('0x3c')])){ut[_0x0a9e('0x32')](_0x0a9e('0x10f'),_0x4d8a67[_0x0a9e('0x29')]+_0x0a9e('0x110'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x4d8a67[_0x0a9e('0x29')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0x0a9e('0xd')]['execCall']=function(_0x38dceb,_0x5dc978,_0x550cbf,_0x26223f){var _0x4a7a3c=this;return new Promise(function(_0x24470a,_0x142e53){var _0xe1ab0d=_0x38dceb['uniqueid'];var _0x4152cd=_0x4a7a3c[_0x0a9e('0x70')](_0x5dc978[_0x0a9e('0x109')])?util['format']('SIP/%s/%s%s',_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x29')],_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x111')])?'':_0x5dc978[_0x0a9e('0x111')][_0x0a9e('0x112')]()||'',_0x5dc978[_0x0a9e('0x113')]>0x0?_0x550cbf[_0x0a9e('0xe9')][_0x0a9e('0x114')](_0x5dc978[_0x0a9e('0x113')]):_0x550cbf['phone']):util['format']('SIP/%s/%s%s',_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x10d')])?_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x29')]:_0x5dc978[_0x0a9e('0x10d')][_0x0a9e('0x29')],_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x111')])?'':_0x5dc978['dialPrefix']['trim']()||'',_0x5dc978[_0x0a9e('0x113')]>0x0?_0x550cbf[_0x0a9e('0xe9')]['substring'](_0x5dc978[_0x0a9e('0x113')]):_0x550cbf[_0x0a9e('0xe9')]);var _0x2e2280=_0x4a7a3c[_0x0a9e('0x70')](_0x5dc978[_0x0a9e('0x109')])?ut[_0x0a9e('0x115')](_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x116')],_0x5dc978[_0x0a9e('0x117')],_0x5dc978[_0x0a9e('0x118')]>0x0?ut[_0x0a9e('0x119')](_0x5dc978[_0x0a9e('0x11a')],_0x5dc978['dialRandomLastDigitCallerIdNumber']):_0x5dc978[_0x0a9e('0x11a')]):ut[_0x0a9e('0x115')](_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x10d')])?_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x116')]:_0x5dc978[_0x0a9e('0x10d')][_0x0a9e('0x116')],_0x5dc978[_0x0a9e('0x117')],_0x5dc978[_0x0a9e('0x118')]>0x0?ut[_0x0a9e('0x119')](_0x5dc978[_0x0a9e('0x11a')],_0x5dc978['dialRandomLastDigitCallerIdNumber']):_0x5dc978['dialOriginateCallerIdNumber']);if(_0x2e2280){_0x38dceb[_0x0a9e('0x11b')]=ut[_0x0a9e('0x11c')](_0x2e2280);_0x38dceb[_0x0a9e('0x11d')]=ut[_0x0a9e('0x11e')](_0x2e2280);}var _0x33359a=ut[_0x0a9e('0x11f')](_0x5dc978,_0x550cbf,_0x4152cd,_0x2e2280,_0xe1ab0d,_0x38dceb);var _0xa8b5de=utils['setXMDContactVariables'](_0x550cbf[_0x0a9e('0xe8')]);Object['assign'](_0x33359a,_0xa8b5de);_[_0x0a9e('0x120')](_0x38dceb,ut[_0x0a9e('0x121')](_0x33359a));_0x38dceb[_0x0a9e('0x61')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));_0x5dc978[_0x0a9e('0x122')]=_0x33359a;var _0x465003=ut[_0x0a9e('0x123')](_0x38dceb,_0x5dc978,_0x33359a,_0x38dceb[_0x0a9e('0x83')],_0x26223f);return ami[_0x0a9e('0x124')](_0x465003)[_0x0a9e('0x56')](function(_0x8231e5){_0x5dc978[_0x0a9e('0x2d')]+=0x1;logger[_0x0a9e('0x26')](_0x0a9e('0x125'),_0xe1ab0d,_0x0a9e('0x9e'),_0x5dc978['name'],'originated:\x20',_0x5dc978[_0x0a9e('0x2d')]);_0x24470a(_0x8231e5);})[_0x0a9e('0x5e')](function(_0x52b365){ut['logAgent'](_0x38dceb,0xe,_0x0a9e('0x126'));rpcDb[_0x0a9e('0xdc')](_0x38dceb,_0x0a9e('0x127'));_0x142e53(_0x52b365);});});};Preview['prototype'][_0x0a9e('0x1d')]=function(_0x5b6447){if(this[_0x0a9e('0x13')][_0x5b6447['linkedid']]){this[_0x0a9e('0x13')][_0x5b6447['linkedid']][_0x0a9e('0x4a')]=_0x5b6447[_0x0a9e('0x4a')];}};Preview[_0x0a9e('0xd')]['syncOriginateResponse']=function(_0x316b51){var _0x497fda=this;var _0x505ffd=this[_0x0a9e('0x13')][_0x316b51[_0x0a9e('0x128')]];if(_0x505ffd){if(_0x505ffd[_0x0a9e('0xeb')]&&this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]]){ut[_0x0a9e('0x129')](_0x505ffd,this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]][_0x0a9e('0x29')],this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]]['id']);}var _0x98bf26=_[_0x0a9e('0x12a')](_0x505ffd);_0x98bf26[_0x0a9e('0x12b')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));var _0x310026=_0x497fda[_0x0a9e('0x10')][_0x505ffd[_0x0a9e('0x43')]];if(ut['isFailure'](_0x316b51[_0x0a9e('0x12c')])){if(_0x505ffd[_0x0a9e('0xaa')]){rpcDb[_0x0a9e('0xfe')](_0x505ffd[_0x0a9e('0x85')]);}if(_0x505ffd['activeContact']){rpcDb['disableContact'](_0x505ffd['idContact']);}ami[_0x0a9e('0x25')]('custom:agentringnoanswer',ut[_0x0a9e('0x78')](_0x505ffd,_0x0a9e('0x12d'),this[_0x0a9e('0x10')][_0x505ffd[_0x0a9e('0x43')]]));this[_0x0a9e('0xd5')](_0x98bf26,_0x310026,_0x316b51);}else{_0x505ffd[_0x0a9e('0x61')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));ut[_0x0a9e('0xd9')](_0x98bf26,0x4,_0x0a9e('0x12e'));rpcDb['createAgentHistory'](_0x98bf26,_0x0a9e('0x12f'));}}};Preview['prototype'][_0x0a9e('0x1a')]=function(_0x586d2f){var _0xf4de86=this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]];var _0x556bb7;if(_0xf4de86){_0x556bb7=this[_0x0a9e('0x10')][_0xf4de86[_0x0a9e('0x43')]];logger['info']('[syncHangup][talking]',_0x586d2f[_0x0a9e('0x84')],_0x0a9e('0x9e'),_0x556bb7[_0x0a9e('0x29')],'pTalking:\x20',_0x556bb7['pTalking']);}if(this['actions'][_0x586d2f[_0x0a9e('0x84')]]&&_0x586d2f[_0x0a9e('0x84')]!==_0x586d2f[_0x0a9e('0x91')]){if(_0x586d2f[_0x0a9e('0x130')]==='16'&&this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]][_0x0a9e('0x4d')]){this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}else if(this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]][_0x0a9e('0x4d')]){logger[_0x0a9e('0x26')](_0x0a9e('0x131'),_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7['name'],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}}else if(_0xf4de86&&_[_0x0a9e('0x41')](_0xf4de86['statedesc'])&&_0x556bb7[_0x0a9e('0x132')]&&_0x586d2f[_0x0a9e('0x84')]===_0x586d2f[_0x0a9e('0x91')]&&_[_0x0a9e('0x41')](_0x586d2f[_0x0a9e('0xd8')])&&_0x586d2f[_0x0a9e('0x130')]==='16'&&_0x586d2f[_0x0a9e('0x133')]==='6'&&_[_0x0a9e('0xd7')](_0xf4de86[_0x0a9e('0x134')])){if(_0xf4de86['unlockAgent']){rpcDb['unlockContact'](_0xf4de86[_0x0a9e('0x85')]);}if(_0xf4de86[_0x0a9e('0x83')]){rpcDb['disableContact'](_0xf4de86[_0x0a9e('0x85')]);}_0x586d2f[_0x0a9e('0xd8')]='22';this['callProgressDetectingAgent'](_0xf4de86,_0x556bb7,_0x586d2f);}else if(_0xf4de86&&_0xf4de86[_0x0a9e('0x134')]){if(_0x586d2f['cause']==='16'&&this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]]['dialAnswer']){logger[_0x0a9e('0x26')](_0x0a9e('0x135'),_0x586d2f['linkedid'],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7['name'],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}else if(this[_0x0a9e('0x13')][_0x586d2f['linkedid']][_0x0a9e('0x4d')]){logger[_0x0a9e('0x26')]('[syncHangup][talking][cause]',_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7[_0x0a9e('0x29')],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f['linkedid'],_0x586d2f['cause']);}}};Preview['prototype']['syncDialEnd']=function(_0x5e9817){if(this[_0x0a9e('0x13')][_0x5e9817[_0x0a9e('0xd4')]]&&_0x5e9817['destlinkedid']!==_0x5e9817['destuniqueid']){this[_0x0a9e('0x72')](_0x5e9817,_0x5e9817['destlinkedid'],_0x5e9817[_0x0a9e('0xcd')]);}};Preview[_0x0a9e('0xd')][_0x0a9e('0x136')]=function(_0x175c97){if(this[_0x0a9e('0x13')][_0x175c97[_0x0a9e('0x84')]]&&_0x175c97['linkedid']!==_0x175c97[_0x0a9e('0x91')]&&!this[_0x0a9e('0x13')][_0x175c97['linkedid']][_0x0a9e('0x4d')]){if(_0x175c97[_0x0a9e('0x130')]==='1'){this[_0x0a9e('0x72')](_0x175c97,_0x175c97[_0x0a9e('0x84')],_0x175c97[_0x0a9e('0x130')]);}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x137')]=function(_0x4a36df,_0x331216,_0x508395){if(this[_0x0a9e('0x13')][_0x4a36df]){if(_[_0x0a9e('0x41')](this['actions'][_0x4a36df][_0x0a9e('0x122')])){this[_0x0a9e('0x13')][_0x4a36df]['variables']={};}this[_0x0a9e('0x13')][_0x4a36df]['variables'][_0x331216]=_0x508395;}};Preview[_0x0a9e('0xd')][_0x0a9e('0x1f')]=function(_0x5d0620){try{if(!_[_0x0a9e('0x41')](_0x5d0620)){if(ut['filterKey'](_[_0x0a9e('0x138')](_0x5d0620[_0x0a9e('0x139')])[0x0])){this[_0x0a9e('0x137')](_0x5d0620[_0x0a9e('0x91')],_[_0x0a9e('0x138')](_0x5d0620[_0x0a9e('0x139')])[0x0],_0x5d0620[_0x0a9e('0x13a')]);}}}catch(_0x53b5c2){logger[_0x0a9e('0x13b')](_0x0a9e('0x13c'),util[_0x0a9e('0x13d')](_0x53b5c2,{'showHidden':![],'depth':null}));}};Preview[_0x0a9e('0xd')][_0x0a9e('0x21')]=function(_0x5932ad){if(_0x5932ad){if(this[_0x0a9e('0x13')][_0x5932ad['transfertargetlinkedid']]){this['actions'][_0x5932ad[_0x0a9e('0x13e')]]['transfer']=!![];}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x23')]=function(_0x58d5fd){if(_0x58d5fd){if(this[_0x0a9e('0x13')][_0x58d5fd[_0x0a9e('0x13f')]]){this[_0x0a9e('0x13')][_0x58d5fd[_0x0a9e('0x13f')]][_0x0a9e('0x134')]=!![];}}};module[_0x0a9e('0x140')]=Preview;
\ No newline at end of file
+var _0x6a83=['nosuchnumber','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','scheduledAt','linkedid','actioncountonusuch','incrementPreviewCounters','idContact','swapAdditionalPhones','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','connect','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','buildObj','outboundAnswerCallsDay','total','answered','[16]','countglobal','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','sumBillable','talktime','[syncHangup][talking][decrement]','BUSY','outboundBusyCallsDay','countbusyretry','Busy','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logBusyGlobal]','rescheduleContact','unlockAgent','activeContact','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','outboundCongestionCallsDay','countcongestionretry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','cloneAction','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','CANCEL','outboundRejectCallsDay','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectMaxRetry','ABANDONED','outboundAbandonedCallsDay','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','outboundUnknownCallsDay','countmachineretry','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','cause-txt','[callProgressDetectingCustomer][machine]','[default]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','queueSummaryCountersUpdated','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[incrementPreviewCounters]\x20','checkInBlack','phone','Queue','lookAgent','isEmpty','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','execRun','unlock','unlockContact','disableContact','recallme','validateContact','isValid','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','Trunk','campaign\x20Name:\x20','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','assign','merge','toLowerVariables','variables','variablesAction','OriginateError','[originateFailure][logOriginateFailure]','channel','actionid','clone','isFailure','response','custom:agentringnoanswer','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','pTalking:\x20','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','addVariable','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','moment','ioredis','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','./util/util','../dialer/utils','redis','defaults','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','syncHangup','bind','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','syncVarSet','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','emit','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','voice:queue:%s','name','sendMessageOneNotActive','originated','pTalking','available','message','INACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','CAMPAIGN_STATUS','logger','loopCampaigns','syncCampaigns','hasOwnProperty','dialMethod','booked','type','outbound','clearZombieChannels','dialActive','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','[clearZombieChannels][talking]','originated:\x20','queue','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','[Dialer][checkChannel][pTalking][Preview]','loggerError','[action]','size','getContactRecallMe','agentReadyId','then','isNil','length','scheduledat','Agent','voicePause','run','logger2','[RecallMe]','starttime','format','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','catch','[getContactRecallMe]','loggedIn','isTrunkReachable','TrunkBackup','UNREACHABLE_TRUNK','callProgressDetectingCustomer','countnosuchnumberretry','totalGlobal','NoSuchNumber','custom:agentnosuchnumber'];(function(_0x533a7c,_0x263149){var _0x4f81c5=function(_0x272335){while(--_0x272335){_0x533a7c['push'](_0x533a7c['shift']());}};_0x4f81c5(++_0x263149);}(_0x6a83,0xd2));var _0x36a8=function(_0x397ad3,_0x13531f){_0x397ad3=_0x397ad3-0x0;var _0x16ef84=_0x6a83[_0x397ad3];return _0x16ef84;};'use strict';var util=require(_0x36a8('0x0'));var _=require(_0x36a8('0x1'));var uuid=require(_0x36a8('0x2'));var moment=require(_0x36a8('0x3'));var Redis=require(_0x36a8('0x4'));var config=require(_0x36a8('0x5'));var logger=require(_0x36a8('0x6'))(_0x36a8('0x7'));var loggerAction=require(_0x36a8('0x6'))(_0x36a8('0x8'));var ami=require(_0x36a8('0x9'));var rpcDb=require(_0x36a8('0xa'));var cmHopperAdditionalPhone=require(_0x36a8('0xb'));var Action=require(_0x36a8('0xc'));var ut=require(_0x36a8('0xd'));var utils=require(_0x36a8('0xe'));config[_0x36a8('0xf')]=_[_0x36a8('0x10')](config[_0x36a8('0xf')],{'host':'localhost','port':0x18eb});var io=require(_0x36a8('0x11'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x36a8('0x12')][_0x36a8('0x13')]=function(_0x48b0fc){this[_0x36a8('0x14')]=this[_0x36a8('0x14')]?this['tail'][_0x36a8('0x15')](_0x48b0fc):_0x48b0fc();};function Preview(_0x3c8c08){this[_0x36a8('0x16')]=new Sequence();this[_0x36a8('0x17')]=_0x3c8c08[_0x36a8('0x18')];this[_0x36a8('0x19')]=_0x3c8c08[_0x36a8('0x19')];this[_0x36a8('0x1a')]={};this['agents']=_0x3c8c08[_0x36a8('0x1b')];this[_0x36a8('0x1c')]=0x0;ami['on'](_0x36a8('0x1d'),this[_0x36a8('0x1e')]['bind'](this));ami['on']('hangup',this[_0x36a8('0x1f')][_0x36a8('0x20')](this));ami['on'](_0x36a8('0x21'),this[_0x36a8('0x22')][_0x36a8('0x20')](this));ami['on'](_0x36a8('0x23'),this[_0x36a8('0x24')]['bind'](this));ami['on'](_0x36a8('0x25'),this[_0x36a8('0x26')][_0x36a8('0x20')](this));ami['on']('varset',this[_0x36a8('0x27')]['bind'](this));ami['on'](_0x36a8('0x28'),this[_0x36a8('0x29')][_0x36a8('0x20')](this));ami['on']('blindtransfer',this[_0x36a8('0x2a')][_0x36a8('0x20')](this));this['loopCampaigns'](this[_0x36a8('0x17')]);}function emit(_0x218550,_0x5a6d98,_0xebd54){io['to'](_0x218550)[_0x36a8('0x2b')](_0x5a6d98,_0xebd54);}function emitVoiceQueueChannelRemove(_0x4775f8){logger[_0x36a8('0x2c')](_0x36a8('0x2d'),JSON[_0x36a8('0x2e')](_0x4775f8));emit(util['format'](_0x36a8('0x2f'),_0x4775f8[_0x36a8('0x30')]),'voice_queue_channel:remove',_0x4775f8);io['emit']('voice_queue_presence:remove',_0x4775f8);}function notSendMessagesQueue(_0xe56800){if(_0xe56800[_0x36a8('0x31')]){if(_0xe56800[_0x36a8('0x32')]===0x0&&_0xe56800[_0x36a8('0x33')]===0x0){_0xe56800['sendMessageOneNotActive']=![];_0xe56800[_0x36a8('0x34')]=0x0;_0xe56800['paused']=0x0;_0xe56800[_0x36a8('0x35')]=utils['CAMPAIGN_STATUS'][_0x36a8('0x36')];ut['logger'](_0x36a8('0x37'),_0xe56800[_0x36a8('0x30')]+_0x36a8('0x38'));}else{_0xe56800[_0x36a8('0x35')]=utils[_0x36a8('0x39')]['DEACTIVATED'];ut[_0x36a8('0x3a')](_0x36a8('0x37'),_0xe56800[_0x36a8('0x30')]+'\x20is\x20deactivated');}}}Preview[_0x36a8('0x12')][_0x36a8('0x3b')]=function(){var _0x3b6280=this;setInterval(function(){_0x3b6280['syncCampaigns']();},0x7cf);};Preview['prototype'][_0x36a8('0x3c')]=function(){var _0x70e42c=this[_0x36a8('0x17')];this[_0x36a8('0x1c')]+=0x1;for(var _0x460b47 in _0x70e42c){if(_0x70e42c[_0x36a8('0x3d')](_0x460b47)&&(_0x70e42c[_0x460b47]['dialMethod']===_0x36a8('0x7')||_0x70e42c[_0x460b47][_0x36a8('0x3e')]===_0x36a8('0x3f'))&&_0x70e42c[_0x460b47][_0x36a8('0x40')]===_0x36a8('0x41')){if(this[_0x36a8('0x1c')]>0x7){this[_0x36a8('0x1c')]=0x0;this[_0x36a8('0x42')]();}}if(_0x70e42c[_0x36a8('0x3d')](_0x460b47)&&_0x70e42c[_0x460b47][_0x36a8('0x3e')]===_0x36a8('0x7')&&_0x70e42c[_0x460b47][_0x36a8('0x40')]===_0x36a8('0x41')){if(_0x70e42c[_0x460b47][_0x36a8('0x43')]){this[_0x36a8('0x44')](_0x70e42c[_0x460b47]);if(_0x70e42c[_0x460b47][_0x36a8('0x45')])this[_0x36a8('0x46')](_0x70e42c[_0x460b47]);}else{notSendMessagesQueue(_0x70e42c[_0x460b47]);}}}};Preview[_0x36a8('0x12')][_0x36a8('0x47')]=function(_0x4aad01){var _0x463d8c=this;this['sequence'][_0x36a8('0x13')](function(){if(!_['isNil'](_0x463d8c['actions'][_0x4aad01])){loggerAction['info'](_0x36a8('0x48'),_0x4aad01,'Queue',_0x463d8c[_0x36a8('0x1a')][_0x4aad01]['queue'],_0x36a8('0x49'),JSON[_0x36a8('0x2e')](_0x463d8c[_0x36a8('0x17')][_0x463d8c[_0x36a8('0x1a')][_0x4aad01][_0x36a8('0x4a')]]['originated']),'pTalking:\x20',JSON[_0x36a8('0x2e')](_0x463d8c[_0x36a8('0x17')][_0x463d8c[_0x36a8('0x1a')][_0x4aad01]['queue']][_0x36a8('0x33')]),JSON[_0x36a8('0x2e')](_0x463d8c[_0x36a8('0x1a')][_0x4aad01][_0x36a8('0x4b')]),JSON[_0x36a8('0x2e')](_[_0x36a8('0x4c')](_0x463d8c['actions'][_0x4aad01],[_0x36a8('0x4d'),_0x36a8('0x4e'),_0x36a8('0x4f'),_0x36a8('0x50')])));return ami[_0x36a8('0x51')]({'action':_0x36a8('0x52'),'channel':_0x463d8c[_0x36a8('0x1a')][_0x4aad01]['channel']})['catch'](function(_0x50eff4){if(_0x50eff4[_0x36a8('0x35')]===_0x36a8('0x53')){setTimeout(function(){if(_0x463d8c['actions'][_0x4aad01]){ut[_0x36a8('0x54')](_0x463d8c[_0x36a8('0x17')][_0x463d8c[_0x36a8('0x1a')][_0x4aad01]['queue']],_0x36a8('0x55'));if(_0x463d8c[_0x36a8('0x1a')][_0x4aad01][_0x36a8('0x4b')]===!![]){ut[_0x36a8('0x56')](_0x463d8c['campaignsPreview'][_0x463d8c[_0x36a8('0x1a')][_0x4aad01][_0x36a8('0x4a')]],_0x36a8('0x55'));ut['loggerError'](_0x36a8('0x57')+_0x4aad01,_0x463d8c['actions'][_0x4aad01][_0x36a8('0x4a')]);}ut[_0x36a8('0x58')]('[Dialer][checkChannel][Preview]'+_0x4aad01,_0x463d8c[_0x36a8('0x1a')][_0x4aad01][_0x36a8('0x4a')]);delete _0x463d8c[_0x36a8('0x1a')][_0x4aad01];}},0x2328);}});}});};Preview[_0x36a8('0x12')][_0x36a8('0x42')]=function(){var _0x1ad270=this;loggerAction[_0x36a8('0x2c')](_0x36a8('0x59'),_[_0x36a8('0x5a')](this['actions']));for(var _0x153922 in this[_0x36a8('0x1a')]){if(_0x1ad270[_0x36a8('0x1a')][_0x36a8('0x3d')](_0x153922)){_0x1ad270[_0x36a8('0x47')](_0x153922);}}};Preview[_0x36a8('0x12')][_0x36a8('0x46')]=function(_0x347379){var _0x532004=this;rpcDb[_0x36a8('0x5b')](_0x347379['id'],ut[_0x36a8('0x5c')](this[_0x36a8('0x1b')]))[_0x36a8('0x5d')](function(_0xfa7036){if(!_[_0x36a8('0x5e')](_0xfa7036)){for(var _0x353804=0x0;_0x353804<_0xfa7036[_0x36a8('0x5f')];_0x353804+=0x1){if(ut['getDiff'](_0xfa7036[_0x353804][_0x36a8('0x60')])<_0x347379['dialRecallMeTimeout']*0x3c){if(_0xfa7036[_0x353804][_0x36a8('0x61')]&&!_0xfa7036[_0x353804]['Agent'][_0x36a8('0x62')]){_0x532004[_0x36a8('0x63')](_0xfa7036[_0x353804]['id'])[_0x36a8('0x5d')](ut[_0x36a8('0x64')](_0x36a8('0x65')))['catch'](ut['logger2'](_0x36a8('0x65')));}else{rpcDb['disableContact'](_0xfa7036[_0x353804]['id']);}}else{var _0x3abb71=new Action(_0xfa7036[_0x353804],_0x347379);_0x3abb71[_0x36a8('0x66')]=moment()[_0x36a8('0x67')](_0x36a8('0x68'));_0x347379[_0x36a8('0x69')]+=0x1;ut[_0x36a8('0x6a')](_0x3abb71,0x17,_0x36a8('0x6b'));if(_0x347379[_0x36a8('0x6c')]){rpcDb['rescheduleContactInQueue'](ut['createBody'](_0xfa7036[_0x353804]));rpcDb[_0x36a8('0x6d')](_0x3abb71,_0x36a8('0x6e'));}else{ut[_0x36a8('0x6a')](_0x3abb71,0x16,_0x36a8('0x6f'));rpcDb[_0x36a8('0x6d')](_0x3abb71,_0x36a8('0x70'));rpcDb[_0x36a8('0x71')](_0x3abb71,_0x36a8('0x70'));}}}}})[_0x36a8('0x72')](ut[_0x36a8('0x64')](_0x36a8('0x73')));};Preview[_0x36a8('0x12')][_0x36a8('0x44')]=function(_0x9c2c5){_0x9c2c5['sendMessageOneNotActive']=!![];if(ut['IsNotLoggedIn'](_0x9c2c5[_0x36a8('0x74')])){_0x9c2c5[_0x36a8('0x35')]=utils[_0x36a8('0x39')]['NO_AGENTS_LOGGED'];}else if(!ut['isActive'](_0x9c2c5[_0x36a8('0x43')])){_0x9c2c5[_0x36a8('0x35')]=utils[_0x36a8('0x39')][_0x36a8('0x36')];}else if(!this[_0x36a8('0x75')](_0x9c2c5['Trunk'])){if(!this[_0x36a8('0x75')](_0x9c2c5[_0x36a8('0x76')])){_0x9c2c5[_0x36a8('0x35')]=utils['CAMPAIGN_STATUS'][_0x36a8('0x77')];}else{_0x9c2c5[_0x36a8('0x35')]=utils[_0x36a8('0x39')]['ACTIVE'];}}else{_0x9c2c5[_0x36a8('0x35')]=utils['CAMPAIGN_STATUS']['ACTIVE'];}};Preview[_0x36a8('0x12')][_0x36a8('0x78')]=function(_0x1c4eb8,_0x5623c1,_0x3c24ca){var _0x223665=this;var _0x2c37d1=this[_0x36a8('0x1a')][_0x5623c1];var _0x51984c=this[_0x36a8('0x17')][_0x2c37d1['queue']];var _0x4e052e;var _0x2ca00e=![];var _0x228087=0x2;var _0x2daa86=0x3;if(_0x51984c){switch(_0x3c24ca){case'1':_0x51984c['outboundNoSuchCallsDay']+=0x1;_0x2c37d1[_0x36a8('0x79')]+=0x1;_0x2c37d1['countglobal']=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x0,_0x36a8('0x7b'));ami['emit'](_0x36a8('0x7c'),ut['buildObj'](_0x2c37d1,_0x36a8('0x7d')));rpcDb[_0x36a8('0x6d')](_0x2c37d1,'[callProgressDetectingCustomer][logNoSuch]');_0x223665[_0x36a8('0x7e')](_0x2c37d1,'0',_0x51984c)[_0x36a8('0x5d')](function(_0xc78bb6){_0x2ca00e=_0xc78bb6[_0x36a8('0x7f')]==0x1;_0x228087=_0x51984c[_0x36a8('0x80')];_0x2daa86=_0x51984c[_0x36a8('0x81')];if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c['dialGlobalMaxRetry']){_0x4e052e=ut['cloneAction'](_0x2c37d1,0xf,'Global');rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0x82'));}else{if(_0x2c37d1[_0x36a8('0x79')]>=_0x51984c[_0x36a8('0x83')]){rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0x82'));}else{rpcDb['rescheduleContact'](ut[_0x36a8('0x84')](_0x2c37d1,_0x36a8('0x79'),_0x51984c[_0x36a8('0x80')]),_0x2c37d1['unlockAgent'],_0x2c37d1['activeContact']);}}delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];}else{_0x2c37d1[_0x36a8('0x79')]++;logger[_0x36a8('0x2c')](_0x36a8('0x86'),_0x2c37d1['countnosuchnumberretry']);logger['info']('id',_0x2c37d1['idContact']);_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1[_0x36a8('0x88')],'field':{'countnosuchnumberretry':_0x2c37d1[_0x36a8('0x79')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)['then'](function(){});});}});break;case _0x36a8('0x8a'):var _0x489eac=moment()[_0x36a8('0x67')]('YYYY-MM-DD\x20HH:mm:ss');_0x2c37d1[_0x36a8('0x8b')]=_0x489eac;_0x2c37d1[_0x36a8('0x8c')]=_0x489eac;_0x2c37d1[_0x36a8('0x4b')]=!![];_0x51984c['pTalking']+=0x1;logger[_0x36a8('0x2c')](_0x36a8('0x8d'),_0x2c37d1[_0x36a8('0x8e')],_0x36a8('0x8f'),_0x51984c['name'],'pTalking:\x20',_0x51984c[_0x36a8('0x33')]);ami[_0x36a8('0x2b')]('custom:agentconnect',ut['buildObj'](_0x2c37d1,_0x36a8('0x90'),this[_0x36a8('0x17')][_0x2c37d1[_0x36a8('0x4a')]]));if(_0x51984c['acw']){ami[_0x36a8('0x2b')](_0x36a8('0x91'),ut[_0x36a8('0x92')](_0x2c37d1));}break;case'16':ami[_0x36a8('0x2b')](_0x36a8('0x93'),ut['buildObj'](_0x2c37d1,_0x36a8('0x94'),this['campaignsPreview'][_0x2c37d1[_0x36a8('0x4a')]]));emitVoiceQueueChannelRemove(ut[_0x36a8('0x95')](_0x2c37d1,'complete'));_0x51984c[_0x36a8('0x96')]+=0x1;_0x51984c[_0x36a8('0x97')]+=0x1;_0x51984c[_0x36a8('0x98')]+=0x1;ut['decrementTalkink'](_0x51984c,_0x36a8('0x99'));_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x4,'Answer');rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0x9b'));rpcDb['createCustomerFinal'](_0x2c37d1,_0x36a8('0x9c'));rpcDb[_0x36a8('0x9d')](_0x2c37d1);_0x51984c[_0x36a8('0x9e')]+=_0x2c37d1['talktime'];_0x51984c[_0x36a8('0x9f')]+=_0x2c37d1[_0x36a8('0xa0')];logger[_0x36a8('0x2c')](_0x36a8('0xa1'),_0x2c37d1[_0x36a8('0x8e')],'\x20Queue',_0x51984c[_0x36a8('0x30')],'pTalking:\x20',_0x51984c[_0x36a8('0x33')]);delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];break;case _0x36a8('0xa2'):_0x51984c[_0x36a8('0xa3')]+=0x1;_0x2c37d1[_0x36a8('0xa4')]+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x5,_0x36a8('0xa5'));_0x228087=_0x51984c[_0x36a8('0xa6')];_0x2daa86=_0x51984c[_0x36a8('0x81')];ami[_0x36a8('0x2b')](_0x36a8('0xa7'),ut['buildObj'](_0x2c37d1,_0x36a8('0xa8')));rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xa9'));_0x223665['verifyAdditionalPhones'](_0x2c37d1,'5',_0x51984c)[_0x36a8('0x5d')](function(_0x2409e5){_0x2ca00e=_0x2409e5['additional']==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut['cloneAction'](_0x2c37d1,0xf,_0x36a8('0xab'));rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0xac'));}else{if(_0x2c37d1[_0x36a8('0xa4')]>=_0x51984c['dialBusyMaxRetry']){rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0xa9'));}else{rpcDb[_0x36a8('0xad')](ut[_0x36a8('0x84')](_0x2c37d1,_0x36a8('0xa4'),_0x51984c[_0x36a8('0xa6')]),_0x2c37d1[_0x36a8('0xae')],_0x2c37d1[_0x36a8('0xaf')]);}}}else{_0x2c37d1[_0x36a8('0xa4')]++;_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1[_0x36a8('0x88')],'field':{'countbusyretry':_0x2c37d1[_0x36a8('0xa4')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)[_0x36a8('0x5d')](function(){});});}});break;case _0x36a8('0xb0'):_0x51984c[_0x36a8('0xb1')]+=0x1;_0x2c37d1[_0x36a8('0xb2')]+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x3,_0x36a8('0xb3'));_0x228087=_0x51984c['dialNoAnswerRetryFrequency'];_0x2daa86=_0x51984c[_0x36a8('0x81')];var _0x15f628=ut[_0x36a8('0xb4')](_0x2c37d1,_0x51984c);ami[_0x36a8('0x2b')](_0x36a8('0xb5'),_0x15f628);rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xb6'));_0x223665[_0x36a8('0x7e')](_0x2c37d1,'3',_0x51984c)[_0x36a8('0x5d')](function(_0x35529d){_0x2ca00e=_0x35529d['additional']==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut['cloneAction'](_0x2c37d1,0xf,_0x36a8('0xab'));rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0xb7'));}else{if(_0x2c37d1[_0x36a8('0xb2')]>=_0x51984c[_0x36a8('0xb8')]){rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0xb6'));}else{rpcDb[_0x36a8('0xad')](ut[_0x36a8('0x84')](_0x2c37d1,_0x36a8('0xb2'),_0x51984c[_0x36a8('0xb9')]),_0x2c37d1['unlockAgent'],_0x2c37d1[_0x36a8('0xaf')]);}}}else{_0x2c37d1['countnoanswerretry']++;_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1['idContact'],'field':{'countnoanswerretry':_0x2c37d1[_0x36a8('0xb2')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)[_0x36a8('0x5d')](function(){});});}});break;case'CONGESTION':_0x51984c[_0x36a8('0xba')]+=0x1;_0x2c37d1[_0x36a8('0xbb')]+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x8,_0x36a8('0xbc'));_0x228087=_0x51984c[_0x36a8('0xbd')];_0x2daa86=_0x51984c[_0x36a8('0x81')];ami['emit'](_0x36a8('0xbe'),ut[_0x36a8('0x95')](_0x2c37d1,_0x36a8('0xbf')));rpcDb[_0x36a8('0x6d')](_0x2c37d1,'[callProgressDetectingCustomer][logCongestion]');_0x223665[_0x36a8('0x7e')](_0x2c37d1,'8',_0x51984c)[_0x36a8('0x5d')](function(_0x520b6d){_0x2ca00e=_0x520b6d[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c['dialGlobalMaxRetry']){_0x4e052e=ut[_0x36a8('0xc0')](_0x2c37d1,0xf,'Global');rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0xc1'));}else{if(_0x2c37d1[_0x36a8('0xbb')]>=_0x51984c[_0x36a8('0xc2')]){rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0xc3'));}else{rpcDb[_0x36a8('0xad')](ut[_0x36a8('0x84')](_0x2c37d1,_0x36a8('0xbb'),_0x51984c[_0x36a8('0xa6')]),_0x2c37d1['unlockAgent'],_0x2c37d1[_0x36a8('0xaf')]);}}}else{_0x2c37d1[_0x36a8('0xbb')]++;_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1[_0x36a8('0x88')],'field':{'countcongestionretry':_0x2c37d1[_0x36a8('0xbb')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)[_0x36a8('0x5d')](function(){});});}});break;case _0x36a8('0xc4'):_0x51984c[_0x36a8('0xc5')]+=0x1;_0x2c37d1['countagentrejectretry']+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut['logCustomer'](_0x2c37d1,0x14,'AgentReject');_0x228087=_0x51984c[_0x36a8('0xc6')];_0x2daa86=_0x51984c[_0x36a8('0x81')];ami['emit'](_0x36a8('0xc7'),ut['buildObj'](_0x2c37d1,_0x36a8('0xc8')));rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xc9'));_0x223665[_0x36a8('0x7e')](_0x2c37d1,'20',_0x51984c)[_0x36a8('0x5d')](function(_0x494526){_0x2ca00e=_0x494526[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut[_0x36a8('0xc0')](_0x2c37d1,0x14,'AgentReject');rpcDb['createCustomerFinal'](_0x4e052e,_0x36a8('0xca'));}else{if(_0x2c37d1[_0x36a8('0xcb')]>=_0x51984c[_0x36a8('0xcc')]){rpcDb['createCustomerFinal'](_0x2c37d1,_0x36a8('0xca'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x2c37d1,_0x36a8('0xcb'),_0x51984c[_0x36a8('0xc6')]),_0x2c37d1['unlockAgent'],_0x2c37d1[_0x36a8('0xaf')]);}}}else{_0x2c37d1['countnoanswerretry']++;_0x223665['incrementPreviewCounters']({'id':_0x2c37d1['idContact'],'field':{'countnoanswerretry':_0x2c37d1[_0x36a8('0xb2')]}})[_0x36a8('0x5d')](function(){_0x223665['swapAdditionalPhones'](_0x2c37d1,_0x228087,_0x2daa86)['then'](function(){});});}});break;case _0x36a8('0xcd'):_0x51984c[_0x36a8('0xce')]+=0x1;_0x2c37d1[_0x36a8('0xcf')]+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0xb,_0x36a8('0xd0'));rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xd1'));_0x223665[_0x36a8('0x7e')](_0x2c37d1,'11',_0x51984c)[_0x36a8('0x5d')](function(_0x5d8885){_0x2ca00e=_0x5d8885[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut[_0x36a8('0xc0')](_0x2c37d1,0xf,'Global');rpcDb[_0x36a8('0x71')](_0x4e052e,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x2c37d1[_0x36a8('0xd2')]>=_0x51984c[_0x36a8('0xd3')]){rpcDb['createCustomerFinal'](_0x2c37d1,_0x36a8('0xd1'));}else{rpcDb['rescheduleContact'](ut[_0x36a8('0x84')](_0x2c37d1,_0x36a8('0xcf'),_0x51984c['dialAbandonedRetryFrequency']),_0x2c37d1['unlockAgent'],_0x2c37d1[_0x36a8('0xaf')]);}}}else{_0x2c37d1[_0x36a8('0xb2')]++;_0x223665['incrementPreviewCounters']({'id':_0x2c37d1[_0x36a8('0x88')],'field':{'countnoanswerretry':_0x2c37d1[_0x36a8('0xb2')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)[_0x36a8('0x5d')](function(){});});}});break;case'18':_0x51984c[_0x36a8('0xd4')]+=0x1;_0x2c37d1[_0x36a8('0xd5')]+=0x1;_0x2c37d1['countglobal']=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x12,_0x1c4eb8['cause-txt']||_0x1c4eb8[_0x36a8('0xd6')]);ami['emit'](_0x36a8('0xd7'),ut['buildObj'](_0x2c37d1,_0x36a8('0xd8')));rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xd9'));_0x223665[_0x36a8('0x7e')](_0x2c37d1,'18',_0x51984c)[_0x36a8('0x5d')](function(_0x40518d){_0x2ca00e=_0x40518d[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut['cloneAction'](_0x2c37d1,0x12,_0x36a8('0xab'));rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0xd9'));}else{rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0xd9'));}}else{_0x2c37d1[_0x36a8('0xb2')]++;_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1['idContact'],'field':{'countnoanswerretry':_0x2c37d1['countnoanswerretry']}})['then'](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)['then'](function(){});});}});delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];break;case'19':_0x51984c[_0x36a8('0xd4')]+=0x1;_0x2c37d1['countglobal']=ut['totalGlobal'](_0x2c37d1);ut['logCustomer'](_0x2c37d1,0x13,_0x1c4eb8[_0x36a8('0xda')]||_0x1c4eb8[_0x36a8('0xd6')]);ami['emit'](_0x36a8('0xd7'),ut[_0x36a8('0x95')](_0x2c37d1,'amd'));rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xdb'));_0x223665[_0x36a8('0x7e')](_0x2c37d1,'18',_0x51984c)['then'](function(_0x50a99d){_0x2ca00e=_0x50a99d[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut[_0x36a8('0x7a')](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut[_0x36a8('0xc0')](_0x2c37d1,0xf,_0x36a8('0xab'));rpcDb[_0x36a8('0x71')](_0x4e052e,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0xdb'));}}else{_0x2c37d1[_0x36a8('0xb2')]++;_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1[_0x36a8('0x88')],'field':{'countnoanswerretry':_0x2c37d1[_0x36a8('0xb2')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)['then'](function(){});});}});delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];break;default:if(_0x2c37d1[_0x36a8('0x4b')]){ut[_0x36a8('0x56')](_0x51984c,_0x36a8('0xdc'));ut['loggerError']('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x51984c[_0x36a8('0x30')],_0x1c4eb8);}_0x51984c[_0x36a8('0xd4')]+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0xc,_0x1c4eb8[_0x36a8('0xda')]||_0x1c4eb8['dialstatus']);_0x228087=_0x51984c[_0x36a8('0xc6')];_0x2daa86=_0x51984c[_0x36a8('0x81')];rpcDb[_0x36a8('0x6d')](_0x2c37d1,'[callProgressDetectingCustomer][logUnknown]');_0x223665['verifyAdditionalPhones'](_0x2c37d1,'20',_0x51984c)[_0x36a8('0x5d')](function(_0x43e006){_0x2ca00e=_0x43e006[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut[_0x36a8('0x7a')](_0x2c37d1)>=_0x51984c['dialGlobalMaxRetry']){_0x4e052e=ut[_0x36a8('0xc0')](_0x2c37d1,0xf,_0x36a8('0xab'));rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0xdd'));}else{rpcDb['createCustomerFinal'](_0x2c37d1,_0x36a8('0xdd'));}delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];}else{_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)[_0x36a8('0x5d')](function(){});}});}if(!(_0x2c37d1[_0x36a8('0x4b')]&&_0x3c24ca==='16')){ut[_0x36a8('0x54')](_0x51984c,_0x36a8('0xde'));logger[_0x36a8('0x2c')](_0x36a8('0xdf'),_0x2c37d1['uniqueid'],_0x36a8('0x8f'),_0x51984c[_0x36a8('0x30')],_0x36a8('0x49'),_0x51984c[_0x36a8('0x32')]);}if(_0x3c24ca!==_0x36a8('0x8a')){delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0xe0')]];}_0x51984c[_0x36a8('0xe1')]=!![];}};Preview[_0x36a8('0x12')][_0x36a8('0xe2')]=function(_0x1b2321,_0x275719,_0x54caa7){if(_[_0x36a8('0xe3')](_0x275719)&&_0x36a8('0xe4')!==typeof _0x275719){return;}if(_[_0x36a8('0xe3')](_0x54caa7)&&'object'!==typeof _0x54caa7){return;}switch(_0x54caa7[_0x36a8('0xe5')]){case'0':ut[_0x36a8('0xe6')](_0x1b2321,0x0,_0x36a8('0x7b'));rpcDb[_0x36a8('0xe7')](_0x1b2321,_0x36a8('0xe8'));break;case'3':ut[_0x36a8('0xe6')](_0x1b2321,0x3,'NoAnswer');rpcDb[_0x36a8('0xe7')](_0x1b2321,_0x36a8('0xe9'));break;case'5':ut[_0x36a8('0xe6')](_0x1b2321,0x5,'Busy');rpcDb['createAgentHistory'](_0x1b2321,_0x36a8('0xea'));break;case'8':ut[_0x36a8('0xe6')](_0x1b2321,0x8,_0x36a8('0xbc'));rpcDb['createAgentHistory'](_0x1b2321,_0x36a8('0xeb'));break;case'22':ut[_0x36a8('0xe6')](_0x1b2321,0x16,_0x36a8('0xec'));rpcDb['createAgentHistory'](_0x1b2321,_0x36a8('0xed'));break;default:ut[_0x36a8('0xe6')](_0x1b2321,0xc,_0x54caa7[_0x36a8('0xe5')]);rpcDb[_0x36a8('0xe7')](_0x1b2321,'[callProgressDetectingAgent][logCongestion]');}ut[_0x36a8('0x54')](_0x275719,_0x36a8('0xee'));logger['info'](_0x36a8('0xef'),_0x1b2321[_0x36a8('0x8e')],'\x20Queue',_0x275719[_0x36a8('0x30')],_0x36a8('0x49'),_0x275719[_0x36a8('0x32')]);delete this[_0x36a8('0x1a')][_0x1b2321[_0x36a8('0x8e')]];};Preview['prototype']['verifyAdditionalPhones']=function(_0x1aef1d,_0x2bcbb5,_0x243fd9){return cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x1aef1d,_0x2bcbb5,_0x243fd9)['catch'](logger[_0x36a8('0x2c')]('[verifyAdditionalPhone]\x20'));};Preview[_0x36a8('0x12')]['swapAdditionalPhones']=function(_0x12a173,_0x4212c0,_0x4fd086){return cmHopperAdditionalPhone['swapAdditionalPhones'](_0x12a173,_0x4212c0,_0x4fd086)[_0x36a8('0x72')](logger[_0x36a8('0x2c')]('[swapAdditionalPhone]\x20'));};Preview[_0x36a8('0x12')]['incrementPreviewCounters']=function(_0x474dc6){return Promise[_0x36a8('0xf0')]()[_0x36a8('0x5d')](cmHopperAdditionalPhone[_0x36a8('0x87')](_0x474dc6))[_0x36a8('0x72')](logger['info'](_0x36a8('0xf1')));};Preview['prototype'][_0x36a8('0xf2')]=function(_0x1e860e,_0x4313d2,_0x556949,_0x32d119,_0x3bac98){var _0x4123e7=this;return new Promise(function(_0x3cebbb,_0x44e4a2){if(_['isNil'](_0x4313d2)||_[_0x36a8('0x5e')](_0x4313d2['Contact'])||_[_0x36a8('0x5e')](_0x4313d2[_0x36a8('0xf3')])||_[_0x36a8('0x5e')](_0x4313d2[_0x36a8('0x4f')])){_0x44e4a2(ut[_0x36a8('0x35')]('Contact\x20is\x20undefined',_0x32d119,_0x3bac98));return;}var _0x36d9fb=uuid['v4']();var _0x4ed4fa=_0x4123e7[_0x36a8('0x17')][_0x4313d2[_0x36a8('0xf4')]['name']];var _0x38c4ae=_0x556949?_0x4123e7[_0x36a8('0x1b')][_0x556949]['id']:undefined;_0x4123e7['actions'][_0x36d9fb]=new Action(_0x4313d2,_0x4ed4fa,_0x36d9fb,_0x556949,_0x38c4ae);var _0x3bda44=_0x4123e7[_0x36a8('0x1a')][_0x36d9fb];_0x3bda44['unlockAgent']=_0x32d119;_0x3bda44['activeContact']=_0x3bac98;_0x3bda44[_0x36a8('0xf5')]=_0x556949;if(_[_0x36a8('0xf6')](_0x1e860e)){_0x4123e7['execCall'](_0x3bda44,_0x4ed4fa,_0x4313d2,_0x556949)[_0x36a8('0x5d')](function(_0x3fe498){logger['info'](_0x36a8('0xf7'),_0x36a8('0xf8')+_0x3bda44[_0x36a8('0x4a')]+_0x36a8('0xf9')+_0x3bda44[_0x36a8('0x88')],JSON['stringify'](_0x3fe498));ami[_0x36a8('0x2b')](_0x36a8('0xfa'),ut[_0x36a8('0x95')](_0x3bda44,_0x36a8('0xfb'),_0x4123e7['campaignsPreview'][_0x3bda44['queue']]));_0x3cebbb(ut[_0x36a8('0x35')](_0x36a8('0xfc')));})[_0x36a8('0x72')](function(_0x18b000){ut[_0x36a8('0x3a')](_0x36a8('0xfd'),_0x18b000);_0x44e4a2(ut[_0x36a8('0x35')](_0x36a8('0xfe'),_0x32d119,_0x3bac98));});}else{_0x4ed4fa['outboundBlacklistCallsDay']+=0x1;ut[_0x36a8('0xff')](_0x3bda44);rpcDb[_0x36a8('0x100')](_0x3bda44,_0x36a8('0x101'));delete _0x4123e7[_0x36a8('0x1a')][_0x36d9fb];_0x44e4a2(ut[_0x36a8('0x35')](_0x36a8('0x102'),_0x32d119,_0x3bac98));}});};Preview[_0x36a8('0x12')][_0x36a8('0x75')]=function(_0x3ff2ef){return!_[_0x36a8('0x5e')](_0x3ff2ef)&&!_[_0x36a8('0x5e')](_0x3ff2ef['name'])&&!_[_0x36a8('0x5e')](_0x3ff2ef[_0x36a8('0x103')])&&_0x3ff2ef[_0x36a8('0x103')]&&!_['isNil'](this[_0x36a8('0x19')][util[_0x36a8('0x67')](_0x36a8('0x104'),_0x3ff2ef['name'])])&&!_[_0x36a8('0x5e')](this[_0x36a8('0x19')][util[_0x36a8('0x67')](_0x36a8('0x104'),_0x3ff2ef[_0x36a8('0x30')])][_0x36a8('0x52')])&&(this[_0x36a8('0x19')][util['format'](_0x36a8('0x104'),_0x3ff2ef[_0x36a8('0x30')])][_0x36a8('0x52')]==='reachable'||this[_0x36a8('0x19')][util[_0x36a8('0x67')](_0x36a8('0x104'),_0x3ff2ef[_0x36a8('0x30')])][_0x36a8('0x52')]==='unmonitored');};Preview[_0x36a8('0x12')][_0x36a8('0x63')]=function(_0x593998,_0x55a67c){return this[_0x36a8('0x105')](_0x593998,_0x55a67c)['then'](function(_0x2777ca){return _[_0x36a8('0x4c')](_0x2777ca,[_0x36a8('0x35')]);})[_0x36a8('0x72')](function(_0xbe18da){if(_0xbe18da[_0x36a8('0x106')]){rpcDb[_0x36a8('0x107')](_0x593998);}if(_0xbe18da[_0x36a8('0x103')]){rpcDb[_0x36a8('0x108')](_0x593998);}throw _[_0x36a8('0x4c')](_0xbe18da,[_0x36a8('0x35')]);});};Preview[_0x36a8('0x12')][_0x36a8('0x105')]=function(_0x2aced1,_0x7e64f){var _0x3c814b=this;var _0x598c48,_0x45c4e6;return rpcDb['getContactPreview'](_0x2aced1)[_0x36a8('0x5d')](function(_0x5430c6){if(!_['isNil'](_0x5430c6[0x0])){_0x45c4e6=_0x5430c6[0x0][_0x36a8('0x109')]?![]:!![];_0x598c48=_0x5430c6[0x0][_0x36a8('0x109')]?!![]:![];_0x598c48=_0x7e64f?!![]:_0x598c48;}var _0x10195a=_0x3c814b[_0x36a8('0x10a')](_0x5430c6);if(_0x10195a[_0x36a8('0x10b')]){rpcDb['checkIsBlackList'](_[_0x36a8('0x4c')](_0x5430c6[0x0],['VoiceQueueId','phone']))[_0x36a8('0x5d')](function(_0x5375cc){_0x3c814b[_0x36a8('0xf2')](_0x5375cc,_0x5430c6[0x0],_0x7e64f,_0x45c4e6,_0x598c48)[_0x36a8('0x5d')](function(_0x2cfe4a){return _0x2cfe4a;})[_0x36a8('0x72')](function(_0x1795f0){throw _0x1795f0;});})['catch'](function(_0x11d472){ut[_0x36a8('0x3a')](_0x36a8('0x10c'),_0x11d472);throw ut['message'](_0x36a8('0x10d'),_0x45c4e6,_0x598c48);});}else{throw ut[_0x36a8('0x35')](_0x10195a[_0x36a8('0x35')],_0x45c4e6,_0x598c48);}})[_0x36a8('0x72')](function(_0xc4c00a){ut[_0x36a8('0x3a')](_0x36a8('0x10e'),_0xc4c00a);throw ut[_0x36a8('0x35')](_0x36a8('0x10d'),![],!![]);});};Preview['prototype']['validateContact']=function(_0x21e32c){if(_['isNil'](_0x21e32c)||_[_0x36a8('0xf6')](_0x21e32c)||!_['isNil'](_0x21e32c[0x0]['Agent'])&&_[_0x36a8('0x5e')](_0x21e32c[0x0][_0x36a8('0x61')][_0x36a8('0x30')])){ut[_0x36a8('0x3a')](_0x36a8('0x10f'),_0x21e32c);return{'isValid':![],'message':_0x36a8('0x110')};}var _0x472c60=this[_0x36a8('0x17')][_0x21e32c[0x0][_0x36a8('0xf4')][_0x36a8('0x30')]];_0x472c60[_0x36a8('0x35')]=utils[_0x36a8('0x39')]['ACTIVE'];if(_[_0x36a8('0x5e')](_0x472c60)){ut[_0x36a8('0x3a')](_0x36a8('0x111'),_0x472c60);return{'isValid':![],'message':_0x36a8('0x112')};}if(!this['isTrunkReachable'](_0x472c60[_0x36a8('0x113')])){ut[_0x36a8('0x3a')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x36a8('0x114')+_0x472c60[_0x36a8('0x30')]+'\x20Trunk\x20is\x20not\x20active');if(!this['isTrunkReachable'](_0x472c60[_0x36a8('0x76')])){ut['logger'](_0x36a8('0x115'),_0x472c60[_0x36a8('0x30')]+_0x36a8('0x116'));return{'isValid':![],'message':_0x36a8('0x117')};}}if(!ut[_0x36a8('0x118')](_0x472c60['dialActive'])){ut[_0x36a8('0x3a')](_0x36a8('0x119'),_0x472c60[_0x36a8('0x30')]+_0x36a8('0x11a'));return{'isValid':![],'message':_0x36a8('0x114')+_0x472c60[_0x36a8('0x30')]+_0x36a8('0x11a')};}return{'isValid':!![],'message':_0x36a8('0x11b')};};Preview[_0x36a8('0x12')][_0x36a8('0x11c')]=function(_0x11acae,_0x27e44b,_0x255ab8,_0x8b414d){var _0x197a45=this;return new Promise(function(_0x4ccec6,_0x119091){var _0x5c9f17=_0x11acae[_0x36a8('0x8e')];var _0x1298ba=_0x197a45[_0x36a8('0x75')](_0x27e44b['Trunk'])?util['format'](_0x36a8('0x11d'),_0x27e44b[_0x36a8('0x113')][_0x36a8('0x30')],_[_0x36a8('0x5e')](_0x27e44b[_0x36a8('0x11e')])?'':_0x27e44b['dialPrefix'][_0x36a8('0x11f')]()||'',_0x27e44b['dialCutDigit']>0x0?_0x255ab8[_0x36a8('0xf3')]['substring'](_0x27e44b[_0x36a8('0x120')]):_0x255ab8['phone']):util[_0x36a8('0x67')](_0x36a8('0x11d'),_[_0x36a8('0x5e')](_0x27e44b[_0x36a8('0x76')])?_0x27e44b[_0x36a8('0x113')][_0x36a8('0x30')]:_0x27e44b[_0x36a8('0x76')][_0x36a8('0x30')],_[_0x36a8('0x5e')](_0x27e44b[_0x36a8('0x11e')])?'':_0x27e44b['dialPrefix'][_0x36a8('0x11f')]()||'',_0x27e44b[_0x36a8('0x120')]>0x0?_0x255ab8[_0x36a8('0xf3')]['substring'](_0x27e44b['dialCutDigit']):_0x255ab8['phone']);var _0xd5a20e=_0x197a45[_0x36a8('0x75')](_0x27e44b[_0x36a8('0x113')])?ut[_0x36a8('0x121')](_0x27e44b[_0x36a8('0x113')][_0x36a8('0x122')],_0x27e44b[_0x36a8('0x123')],_0x27e44b[_0x36a8('0x124')]>0x0?ut['getCallerIdRandom'](_0x27e44b[_0x36a8('0x125')],_0x27e44b[_0x36a8('0x124')]):_0x27e44b[_0x36a8('0x125')]):ut[_0x36a8('0x121')](_['isNil'](_0x27e44b[_0x36a8('0x76')])?_0x27e44b['Trunk'][_0x36a8('0x122')]:_0x27e44b[_0x36a8('0x76')][_0x36a8('0x122')],_0x27e44b[_0x36a8('0x123')],_0x27e44b[_0x36a8('0x124')]>0x0?ut[_0x36a8('0x126')](_0x27e44b[_0x36a8('0x125')],_0x27e44b[_0x36a8('0x124')]):_0x27e44b[_0x36a8('0x125')]);if(_0xd5a20e){_0x11acae[_0x36a8('0x127')]=ut[_0x36a8('0x128')](_0xd5a20e);_0x11acae[_0x36a8('0x129')]=ut[_0x36a8('0x12a')](_0xd5a20e);}var _0x5c4720=ut['addVariables'](_0x27e44b,_0x255ab8,_0x1298ba,_0xd5a20e,_0x5c9f17,_0x11acae);var _0x1e394a=utils['setXMDContactVariables'](_0x255ab8['Contact']);Object[_0x36a8('0x12b')](_0x5c4720,_0x1e394a);_[_0x36a8('0x12c')](_0x11acae,ut[_0x36a8('0x12d')](_0x5c4720));_0x11acae['starttime']=moment()['format'](_0x36a8('0x68'));_0x27e44b[_0x36a8('0x12e')]=_0x5c4720;var _0x182865=ut[_0x36a8('0x12f')](_0x11acae,_0x27e44b,_0x5c4720,_0x11acae['activeContact'],_0x8b414d);return ami[_0x36a8('0x51')](_0x182865)[_0x36a8('0x5d')](function(_0x2e55d8){_0x27e44b[_0x36a8('0x32')]+=0x1;logger[_0x36a8('0x2c')]('[originated][increment]',_0x5c9f17,_0x36a8('0x8f'),_0x27e44b[_0x36a8('0x30')],_0x36a8('0x49'),_0x27e44b[_0x36a8('0x32')]);_0x4ccec6(_0x2e55d8);})[_0x36a8('0x72')](function(_0x26062a){ut[_0x36a8('0xe6')](_0x11acae,0xe,_0x36a8('0x130'));rpcDb['createAgentHistory'](_0x11acae,_0x36a8('0x131'));_0x119091(_0x26062a);});});};Preview[_0x36a8('0x12')]['syncNewExten']=function(_0x49a818){if(this[_0x36a8('0x1a')][_0x49a818['linkedid']]){this[_0x36a8('0x1a')][_0x49a818['linkedid']]['channel']=_0x49a818[_0x36a8('0x132')];}};Preview[_0x36a8('0x12')][_0x36a8('0x1e')]=function(_0x488f1d){var _0x29e458=this;var _0x575814=this[_0x36a8('0x1a')][_0x488f1d[_0x36a8('0x133')]];if(_0x575814){if(_0x575814[_0x36a8('0xf5')]&&this['agents'][_0x575814[_0x36a8('0xf5')]]){ut['logLookAgent'](_0x575814,this['agents'][_0x575814[_0x36a8('0xf5')]][_0x36a8('0x30')],this[_0x36a8('0x1b')][_0x575814[_0x36a8('0xf5')]]['id']);}var _0x30975a=_[_0x36a8('0x134')](_0x575814);_0x30975a[_0x36a8('0x8b')]=moment()['format'](_0x36a8('0x68'));var _0x41f691=_0x29e458[_0x36a8('0x17')][_0x575814['queue']];if(ut[_0x36a8('0x135')](_0x488f1d[_0x36a8('0x136')])){if(_0x575814[_0x36a8('0xae')]){rpcDb['unlockContact'](_0x575814['idContact']);}if(_0x575814[_0x36a8('0xaf')]){rpcDb[_0x36a8('0x108')](_0x575814[_0x36a8('0x88')]);}ami[_0x36a8('0x2b')](_0x36a8('0x137'),ut[_0x36a8('0x95')](_0x575814,'rejected',this[_0x36a8('0x17')][_0x575814[_0x36a8('0x4a')]]));this[_0x36a8('0xe2')](_0x30975a,_0x41f691,_0x488f1d);}else{_0x575814[_0x36a8('0x66')]=moment()[_0x36a8('0x67')](_0x36a8('0x68'));ut['logAgent'](_0x30975a,0x4,_0x36a8('0x138'));rpcDb[_0x36a8('0xe7')](_0x30975a,_0x36a8('0x139'));}}};Preview[_0x36a8('0x12')][_0x36a8('0x1f')]=function(_0x21daae){var _0x51a016=this[_0x36a8('0x1a')][_0x21daae['linkedid']];var _0x56eae9;if(_0x51a016){_0x56eae9=this['campaignsPreview'][_0x51a016[_0x36a8('0x4a')]];logger[_0x36a8('0x2c')](_0x36a8('0x13a'),_0x21daae[_0x36a8('0x85')],'\x20Queue',_0x56eae9[_0x36a8('0x30')],_0x36a8('0x13b'),_0x56eae9[_0x36a8('0x33')]);}if(this['actions'][_0x21daae[_0x36a8('0x85')]]&&_0x21daae[_0x36a8('0x85')]!==_0x21daae['uniqueid']){if(_0x21daae[_0x36a8('0x13c')]==='16'&&this[_0x36a8('0x1a')][_0x21daae[_0x36a8('0x85')]][_0x36a8('0x4b')]){this['callProgressDetectingCustomer'](_0x21daae,_0x21daae[_0x36a8('0x85')],_0x21daae[_0x36a8('0x13c')]);}else if(this['actions'][_0x21daae[_0x36a8('0x85')]][_0x36a8('0x4b')]){logger[_0x36a8('0x2c')](_0x36a8('0x13d'),_0x21daae[_0x36a8('0x85')],_0x21daae[_0x36a8('0x13c')],_0x36a8('0x8f'),_0x56eae9['name'],_0x36a8('0x13b'),_0x56eae9[_0x36a8('0x33')]);this['callProgressDetectingCustomer'](_0x21daae,_0x21daae['linkedid'],_0x21daae[_0x36a8('0x13c')]);}}else if(_0x51a016&&_['isNil'](_0x51a016[_0x36a8('0x13e')])&&_0x56eae9[_0x36a8('0x13f')]&&_0x21daae['linkedid']===_0x21daae[_0x36a8('0x8e')]&&_['isNil'](_0x21daae[_0x36a8('0xe5')])&&_0x21daae[_0x36a8('0x13c')]==='16'&&_0x21daae[_0x36a8('0x140')]==='6'&&_[_0x36a8('0xe3')](_0x51a016[_0x36a8('0x141')])){if(_0x51a016[_0x36a8('0xae')]){rpcDb[_0x36a8('0x107')](_0x51a016[_0x36a8('0x88')]);}if(_0x51a016[_0x36a8('0xaf')]){rpcDb[_0x36a8('0x108')](_0x51a016[_0x36a8('0x88')]);}_0x21daae[_0x36a8('0xe5')]='22';this[_0x36a8('0xe2')](_0x51a016,_0x56eae9,_0x21daae);}else if(_0x51a016&&_0x51a016['transfer']){if(_0x21daae[_0x36a8('0x13c')]==='16'&&this[_0x36a8('0x1a')][_0x21daae[_0x36a8('0x85')]][_0x36a8('0x4b')]){logger['info'](_0x36a8('0x142'),_0x21daae[_0x36a8('0x85')],_0x21daae['cause'],_0x36a8('0x8f'),_0x56eae9['name'],'pTalking:\x20',_0x56eae9[_0x36a8('0x33')]);this['callProgressDetectingCustomer'](_0x21daae,_0x21daae[_0x36a8('0x85')],_0x21daae[_0x36a8('0x13c')]);}else if(this[_0x36a8('0x1a')][_0x21daae[_0x36a8('0x85')]][_0x36a8('0x4b')]){logger[_0x36a8('0x2c')]('[syncHangup][talking][cause]',_0x21daae[_0x36a8('0x85')],_0x21daae[_0x36a8('0x13c')],_0x36a8('0x8f'),_0x56eae9[_0x36a8('0x30')],_0x36a8('0x13b'),_0x56eae9['pTalking']);this['callProgressDetectingCustomer'](_0x21daae,_0x21daae[_0x36a8('0x85')],_0x21daae[_0x36a8('0x13c')]);}}};Preview[_0x36a8('0x12')][_0x36a8('0x24')]=function(_0x30e9c9){if(this[_0x36a8('0x1a')][_0x30e9c9[_0x36a8('0xe0')]]&&_0x30e9c9['destlinkedid']!==_0x30e9c9[_0x36a8('0x143')]){this[_0x36a8('0x78')](_0x30e9c9,_0x30e9c9[_0x36a8('0xe0')],_0x30e9c9[_0x36a8('0xd6')]);}};Preview[_0x36a8('0x12')]['syncHangupRequest']=function(_0x2990a9){if(this[_0x36a8('0x1a')][_0x2990a9['linkedid']]&&_0x2990a9[_0x36a8('0x85')]!==_0x2990a9['uniqueid']&&!this[_0x36a8('0x1a')][_0x2990a9['linkedid']][_0x36a8('0x4b')]){if(_0x2990a9[_0x36a8('0x13c')]==='1'){this[_0x36a8('0x78')](_0x2990a9,_0x2990a9['linkedid'],_0x2990a9['cause']);}}};Preview['prototype'][_0x36a8('0x144')]=function(_0x15206d,_0x9f5685,_0x48d44d){if(this[_0x36a8('0x1a')][_0x15206d]){if(_[_0x36a8('0x5e')](this[_0x36a8('0x1a')][_0x15206d][_0x36a8('0x12e')])){this['actions'][_0x15206d][_0x36a8('0x12e')]={};}this['actions'][_0x15206d]['variables'][_0x9f5685]=_0x48d44d;}};Preview[_0x36a8('0x12')]['syncVarSet']=function(_0x29e2f8){try{if(!_[_0x36a8('0x5e')](_0x29e2f8)){if(ut[_0x36a8('0x145')](_[_0x36a8('0x146')](_0x29e2f8[_0x36a8('0x147')])[0x0])){this[_0x36a8('0x144')](_0x29e2f8[_0x36a8('0x8e')],_[_0x36a8('0x146')](_0x29e2f8[_0x36a8('0x147')])[0x0],_0x29e2f8[_0x36a8('0x148')]);}}}catch(_0x3d6744){logger[_0x36a8('0x149')](_0x36a8('0x14a'),util[_0x36a8('0x14b')](_0x3d6744,{'showHidden':![],'depth':null}));}};Preview[_0x36a8('0x12')][_0x36a8('0x29')]=function(_0x5a3a2b){if(_0x5a3a2b){if(this[_0x36a8('0x1a')][_0x5a3a2b[_0x36a8('0x14c')]]){this[_0x36a8('0x1a')][_0x5a3a2b[_0x36a8('0x14c')]][_0x36a8('0x141')]=!![];}}};Preview[_0x36a8('0x12')]['syncBlindTransfer']=function(_0xd5b6cd){if(_0xd5b6cd){if(this[_0x36a8('0x1a')][_0xd5b6cd[_0x36a8('0x14d')]]){this[_0x36a8('0x1a')][_0xd5b6cd['transfererlinkedid']][_0x36a8('0x141')]=!![];}}};module[_0x36a8('0x14e')]=Preview;
\ No newline at end of file
index 610e033..b33a860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f9b=['createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','countReScheduled','unlockContact','[unlockContact]\x20','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','lastAssignedTo','queuecallerexitreason','COMPLETED','then','create','[voiceQueueReport]\x20','getContactRecallMe','[rescheduleContactInQueue]\x20','util','../rpc/cmHopperHistory','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','createHistory','catch','[createHistory]\x20','moveContactManagedDialer','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory'];(function(_0x16e4a2,_0x448a3d){var _0x430bd8=function(_0x1112d1){while(--_0x1112d1){_0x16e4a2['push'](_0x16e4a2['shift']());}};_0x430bd8(++_0x448a3d);}(_0x6f9b,0x181));var _0xb6f9=function(_0x2ec6b2,_0x5c3288){_0x2ec6b2=_0x2ec6b2-0x0;var _0x52c5f8=_0x6f9b[_0x2ec6b2];return _0x52c5f8;};'use strict';var util=require(_0xb6f9('0x0'));var BPromise=require('bluebird');var logger=require('../../../config/logger')('preview');var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0xb6f9('0x1'));var cmHopperBlack=require('../rpc/cmHopperBlack');var agentReportPreview=require(_0xb6f9('0x2'));var voiceQueueReport=require(_0xb6f9('0x3'));function loggerCatch(_0x52ca4c){return function(_0xb50e6b){logger[_0xb6f9('0x4')](_0x52ca4c,util[_0xb6f9('0x5')](_0xb50e6b,{'showHidden':![],'depth':null}));};}function create(_0x66e516){return cmHopperHistory[_0xb6f9('0x6')](_0x66e516)[_0xb6f9('0x7')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x147344){return BPromise['resolve']()['then'](agentReportPreview[_0xb6f9('0x6')](_0x147344))[_0xb6f9('0x7')](loggerCatch(_0xb6f9('0x8')));}function moveContact(_0x9abf2a){return cmHopper[_0xb6f9('0x9')](_0x9abf2a,!![])[_0xb6f9('0x7')](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0xb6f9('0xa')]=function(_0x34d98b){return cmHopperBlack['checkIsBlackList'](_0x34d98b)[_0xb6f9('0x7')](loggerCatch(_0xb6f9('0xb')));};exports[_0xb6f9('0xc')]=function(_0x381fd2){return BPromise['resolve']()['then'](cmHopper[_0xb6f9('0xc')](_0x381fd2))['catch'](loggerCatch(_0xb6f9('0xd')));};exports[_0xb6f9('0x6')]=function(_0x305924,_0x1dba99){create(_0x305924)[_0xb6f9('0x7')](loggerCatch(_0x1dba99));moveContact(_0x305924)[_0xb6f9('0x7')](loggerCatch(_0x1dba99));};exports[_0xb6f9('0xe')]=function(_0x362d6b,_0x1c8728){createAgent(_0x362d6b)[_0xb6f9('0x7')](loggerCatch(_0x1c8728));};exports[_0xb6f9('0xf')]=function(_0x346efc,_0x43c7e9){create(_0x346efc)['catch'](loggerCatch(_0x43c7e9));};exports[_0xb6f9('0x10')]=function(_0x18a8cd,_0x2e1024){moveContact(_0x18a8cd)[_0xb6f9('0x7')](loggerCatch(_0x2e1024));};exports[_0xb6f9('0x11')]=function(_0x5dbfc2,_0x271d81,_0x7eba35){if(_0x271d81){_0x5dbfc2[_0xb6f9('0x12')]=null;}if(_0x7eba35){_0x5dbfc2[_0xb6f9('0x13')]=![];}return cmHopper[_0xb6f9('0x11')](_0x5dbfc2)[_0xb6f9('0x7')](loggerCatch('[rescheduleContact]\x20'));};exports['countReScheduled']=function(_0x4f1502){return cmHopper[_0xb6f9('0x14')](_0x4f1502)[_0xb6f9('0x7')](loggerCatch('[countReScheduled]\x20'));};exports[_0xb6f9('0x15')]=function(_0x241de1){return cmHopper[_0xb6f9('0x15')]({'UserId':null},_0x241de1,0x1)['catch'](loggerCatch(_0xb6f9('0x16')));};exports['disableContact']=function(_0x23dbb7){return cmHopper[_0xb6f9('0x15')]({'active':![]},_0x23dbb7,0x1)[_0xb6f9('0x7')](loggerCatch(_0xb6f9('0x17')));};exports[_0xb6f9('0x18')]=function(_0x2fcf99){var _0x1a0567={};_0x1a0567[_0xb6f9('0x19')]=_0x2fcf99[_0xb6f9('0x19')];_0x1a0567[_0xb6f9('0x1a')]=_0x2fcf99[_0xb6f9('0x1a')];_0x1a0567[_0xb6f9('0x1b')]=_0x2fcf99[_0xb6f9('0x1b')];_0x1a0567[_0xb6f9('0x1c')]=_0x2fcf99[_0xb6f9('0x1c')];_0x1a0567[_0xb6f9('0x1d')]=_0x2fcf99[_0xb6f9('0x1d')];_0x1a0567[_0xb6f9('0x1e')]=_0x2fcf99[_0xb6f9('0x1f')];_0x1a0567['queuecallerleaveAt']=_0x2fcf99[_0xb6f9('0x1f')];_0x1a0567[_0xb6f9('0x20')]=0x1;_0x1a0567[_0xb6f9('0x21')]=_0x2fcf99[_0xb6f9('0x22')];_0x1a0567[_0xb6f9('0x23')]=_0x2fcf99[_0xb6f9('0x24')];_0x1a0567[_0xb6f9('0x25')]=_0xb6f9('0x26');_0x1a0567[_0xb6f9('0x27')]=_0xb6f9('0x28');_0x1a0567[_0xb6f9('0x29')]=0x0;_0x1a0567['assigned']=0x1;_0x1a0567[_0xb6f9('0x2a')]=_0x2fcf99[_0xb6f9('0x24')];_0x1a0567[_0xb6f9('0x2b')]=_0xb6f9('0x2c');return BPromise['resolve']()[_0xb6f9('0x2d')](voiceQueueReport[_0xb6f9('0x2e')](_0x1a0567))[_0xb6f9('0x7')](loggerCatch(_0xb6f9('0x2f')));};exports[_0xb6f9('0x30')]=function(_0xa529aa,_0x2babda){return BPromise['resolve']()[_0xb6f9('0x2d')](cmHopper[_0xb6f9('0x30')](_0xa529aa,_0x2babda))[_0xb6f9('0x7')](loggerCatch('[GetContactRecallMe]\x20'));};exports['rescheduleContactInQueue']=function(_0x42b508){return cmHopper[_0xb6f9('0x11')](_0x42b508,!![],!![])['catch'](loggerCatch(_0xb6f9('0x31')));};
\ No newline at end of file
+var _0xc308=['connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','bluebird','preview','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','catch','[createHistory]\x20','resolve','then','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[unlockContact]\x20','disableContact','unlockContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0xc308,0xb4));var _0x8c30=function(_0x4330ab,_0x141abd){_0x4330ab=_0x4330ab-0x0;var _0x1d764d=_0xc308[_0x4330ab];return _0x1d764d;};'use strict';var util=require('util');var BPromise=require(_0x8c30('0x0'));var logger=require('../../../config/logger')(_0x8c30('0x1'));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x8c30('0x2'));var agentReportPreview=require(_0x8c30('0x3'));var voiceQueueReport=require(_0x8c30('0x4'));function loggerCatch(_0x3c0984){return function(_0x44bfe0){logger[_0x8c30('0x5')](_0x3c0984,util[_0x8c30('0x6')](_0x44bfe0,{'showHidden':![],'depth':null}));};}function create(_0x3498aa){return cmHopperHistory['createHistory'](_0x3498aa)[_0x8c30('0x7')](loggerCatch(_0x8c30('0x8')));}function createAgent(_0x5cbe90){return BPromise[_0x8c30('0x9')]()[_0x8c30('0xa')](agentReportPreview['createHistory'](_0x5cbe90))[_0x8c30('0x7')](loggerCatch(_0x8c30('0x8')));}function moveContact(_0x26cadb){return cmHopper[_0x8c30('0xb')](_0x26cadb,!![])['catch'](loggerCatch(_0x8c30('0xc')));}exports[_0x8c30('0xd')]=function(_0xecb750){return cmHopperBlack[_0x8c30('0xd')](_0xecb750)['catch'](loggerCatch(_0x8c30('0xe')));};exports[_0x8c30('0xf')]=function(_0x5c9523){return BPromise[_0x8c30('0x9')]()[_0x8c30('0xa')](cmHopper[_0x8c30('0xf')](_0x5c9523))[_0x8c30('0x7')](loggerCatch(_0x8c30('0x10')));};exports['createHistory']=function(_0x3a5e70,_0x5706d5){create(_0x3a5e70)[_0x8c30('0x7')](loggerCatch(_0x5706d5));moveContact(_0x3a5e70)[_0x8c30('0x7')](loggerCatch(_0x5706d5));};exports[_0x8c30('0x11')]=function(_0x15a0ee,_0x1fa94b){createAgent(_0x15a0ee)[_0x8c30('0x7')](loggerCatch(_0x1fa94b));};exports[_0x8c30('0x12')]=function(_0x59c382,_0x4a6b53){create(_0x59c382)[_0x8c30('0x7')](loggerCatch(_0x4a6b53));};exports[_0x8c30('0x13')]=function(_0xa512a7,_0x1e6572){moveContact(_0xa512a7)[_0x8c30('0x7')](loggerCatch(_0x1e6572));};exports[_0x8c30('0x14')]=function(_0x21bb67,_0x48ab50,_0x319b04){if(_0x48ab50){_0x21bb67[_0x8c30('0x15')]=null;}if(_0x319b04){_0x21bb67[_0x8c30('0x16')]=![];}return cmHopper['rescheduleContact'](_0x21bb67)[_0x8c30('0x7')](loggerCatch(_0x8c30('0x17')));};exports[_0x8c30('0x18')]=function(_0x3ff194){return cmHopper[_0x8c30('0x18')](_0x3ff194)[_0x8c30('0x7')](loggerCatch('[countReScheduled]\x20'));};exports['unlockContact']=function(_0x2a1fdc){return cmHopper['unlockContact']({'UserId':null},_0x2a1fdc,0x1)[_0x8c30('0x7')](loggerCatch(_0x8c30('0x19')));};exports[_0x8c30('0x1a')]=function(_0x2209ed){return cmHopper[_0x8c30('0x1b')]({'active':![]},_0x2209ed,0x1)[_0x8c30('0x7')](loggerCatch(_0x8c30('0x1c')));};exports[_0x8c30('0x1d')]=function(_0x4a8116){var _0x3096a3={};_0x3096a3['type']=_0x4a8116[_0x8c30('0x1e')];_0x3096a3[_0x8c30('0x1f')]=_0x4a8116[_0x8c30('0x1f')];_0x3096a3[_0x8c30('0x20')]=_0x4a8116[_0x8c30('0x20')];_0x3096a3['calleridname']=_0x4a8116[_0x8c30('0x21')];_0x3096a3['queue']=_0x4a8116['queue'];_0x3096a3[_0x8c30('0x22')]=_0x4a8116[_0x8c30('0x23')];_0x3096a3[_0x8c30('0x24')]=_0x4a8116['answertime'];_0x3096a3[_0x8c30('0x25')]=0x1;_0x3096a3[_0x8c30('0x26')]=_0x4a8116[_0x8c30('0x27')];_0x3096a3[_0x8c30('0x28')]=_0x4a8116[_0x8c30('0x29')];_0x3096a3[_0x8c30('0x2a')]=_0x8c30('0x2b');_0x3096a3[_0x8c30('0x2c')]=_0x8c30('0x2d');_0x3096a3[_0x8c30('0x2e')]=0x0;_0x3096a3[_0x8c30('0x2f')]=0x1;_0x3096a3['lastAssignedTo']=_0x4a8116['membername'];_0x3096a3['queuecallerexitreason']=_0x8c30('0x30');return BPromise[_0x8c30('0x9')]()['then'](voiceQueueReport[_0x8c30('0x31')](_0x3096a3))[_0x8c30('0x7')](loggerCatch(_0x8c30('0x32')));};exports[_0x8c30('0x33')]=function(_0x3703f0,_0x27f381){return BPromise['resolve']()[_0x8c30('0xa')](cmHopper[_0x8c30('0x33')](_0x3703f0,_0x27f381))['catch'](loggerCatch(_0x8c30('0x34')));};exports[_0x8c30('0x35')]=function(_0x56c67b){return cmHopper['rescheduleContact'](_0x56c67b,!![],!![])[_0x8c30('0x7')](loggerCatch(_0x8c30('0x36')));};
\ No newline at end of file
index fde8c00..9586616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f31=['getDiff','milliseconds','diff','seconds','CampaignId','idContact','campaigntype','dialAnswer','countglobal','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-contactid','xmd-cdrtype','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqosrtt','bridgepeer','getCallerIdRandom','\x5cw{0,','pow','replace','extractCalleridName','match','noanswer','variables','keys','forEach','toLowerCase','buildNoAnswerEventPayload','util','lodash','moment','../../../../config/logger','env','XCALLY_IP_AGI','127.0.0.1','../../dialer/utils','loggerCatch','error','info','inspect','loggerError','logger2','isUndefined','isEmpty','string','\x22%s\x22\x20<%s>','isNil','Queue','name','format','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','dialQueueProject2','monitor_format','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','toLowerVariables','hasOwnProperty','toLower','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','starttime','responsetime','endtime','statedesc','getSeconds','logLookAgent','membername','UserId','ringtime','talktime','answertime','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','from-sip','totalGlobal','countcongestionretry','countnoanswerretry','clone','scheduledAt','scheduledat','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','queue','mandatoryDisposition','not_inuse','status','reachable','push'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8f31,0x1b3));var _0x18f3=function(_0x41e8c4,_0x30d9ff){_0x41e8c4=_0x41e8c4-0x0;var _0x54ffbe=_0x8f31[_0x41e8c4];return _0x54ffbe;};'use strict';var util=require(_0x18f3('0x0'));var _=require(_0x18f3('0x1'));var moment=require(_0x18f3('0x2'));var logger=require(_0x18f3('0x3'))('preview');var ipAgi=process[_0x18f3('0x4')][_0x18f3('0x5')]||_0x18f3('0x6');var utils=require(_0x18f3('0x7'));exports[_0x18f3('0x8')]=function(_0x1bbe0e){return function(_0x306781){logger[_0x18f3('0x9')](_0x1bbe0e,util['inspect'](_0x306781,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x4e2f1d,_0x39681b){logger[_0x18f3('0xa')](_0x4e2f1d,util[_0x18f3('0xb')](_0x39681b,{'showHidden':![],'depth':null}));};exports[_0x18f3('0xc')]=function(_0x1b0b94,_0x178e8c){logger[_0x18f3('0x9')](_0x1b0b94,util['inspect'](_0x178e8c,{'showHidden':![],'depth':null}));};exports[_0x18f3('0xd')]=function(_0x40af96){return function(_0x82671f){logger['info'](_0x40af96,util[_0x18f3('0xb')](_0x82671f,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x290f19,_0x1dc732,_0x513d11){return{'message':_0x290f19,'unlock':_0x1dc732,'active':_0x513d11};};exports['getCallerId']=function(_0x330d2f,_0x38b7ff,_0xeba8ce){if(!_[_0x18f3('0xe')](_0xeba8ce)&&'string'===typeof _0xeba8ce&&!_[_0x18f3('0xf')](_0xeba8ce)){if(!_[_0x18f3('0xe')](_0x38b7ff)&&_0x18f3('0x10')===typeof _0x38b7ff&&!_[_0x18f3('0xf')](_0x38b7ff)){return util['format']('\x22%s\x22\x20<%s>',_0x38b7ff,_0xeba8ce);}return util['format'](_0x18f3('0x11'),_0xeba8ce,_0xeba8ce);}if(!_['isUndefined'](_0x330d2f)&&_0x18f3('0x10')===typeof _0x330d2f&&!_['isEmpty'](_0x330d2f)){return _0x330d2f;}return'\x22\x22\x20<>';};exports['isActive']=function(_0x140033){if(_[_0x18f3('0x12')](_0x140033)){return![];}return _0x140033;};exports['addVariables']=function(_0x322a88,_0x51a436,_0x2c984e,_0xca3af5,_0x2f2e47,_0x39db5c){var _0x3e411c={'XMD-QUEUE':_0x51a436[_0x18f3('0x13')]?_0x51a436[_0x18f3('0x13')][_0x18f3('0x14')]:'','XMD-CALLERID':_0xca3af5,'XMD-CALLERID-PREVIEW':_0x39db5c?util[_0x18f3('0x15')](_0x18f3('0x11'),_0x39db5c[_0x18f3('0x16')],_0x39db5c[_0x18f3('0x17')]):_0xca3af5,'XMD-DIALID':_0x2f2e47,'XMD-CONTACTID':_0x51a436[_0x18f3('0x18')],'XMD-CDRTYPE':_0x18f3('0x19'),'CALLERID(all)':_0xca3af5,'XMD-VOICEQUEUEID':_0x51a436[_0x18f3('0x1a')],'XMD-DIALCHANNEL':_0x2c984e,'XMD-DIALTIMEOUT':_0x322a88[_0x18f3('0x1b')]||0x1e,'XMD-DIALOPTIONS':util[_0x18f3('0x15')]('\x22rtTxX%s%s\x22',_0x322a88[_0x18f3('0x1c')]?'g':'',_['isEmpty'](_0x322a88[_0x18f3('0x1d')])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x322a88['dialPreviewUrl']||'','XMD-AGI':_0x322a88[_0x18f3('0x1e')]?util[_0x18f3('0x15')](_0x18f3('0x1f'),ipAgi,_0x322a88['dialQueueProject']):'NONE','XMD-AGIAFTER':_0x322a88['dialQueueProject2']?util[_0x18f3('0x15')]('\x22agi://%s/square,%s\x22',ipAgi,_0x322a88[_0x18f3('0x1c')]):_0x18f3('0x20'),'XMD-ORIGINATECALLERIDNUM':_0x39db5c?_0x39db5c['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x39db5c?_0x39db5c['originatecalleridname']:'','XMD-DESTINATION':_0x18f3('0x21'),'SIPADDHEADER':_0x18f3('0x22')};if(!_[_0x18f3('0xf')](_0x322a88[_0x18f3('0x1d')])){_0x3e411c[util[_0x18f3('0x15')]('%s',_0x18f3('0x23'))]=_0x322a88[_0x18f3('0x1d')];_0x3e411c[util[_0x18f3('0x15')]('%s',_0x18f3('0x24'))]=_0x2f2e47;}return _0x3e411c;};exports[_0x18f3('0x25')]=function(_0x440994){var _0xf373a3={};for(var _0x5d2b6d in _0x440994){if(_0x440994[_0x18f3('0x26')](_0x5d2b6d)){_0xf373a3[util[_0x18f3('0x15')]('%s',_[_0x18f3('0x27')](_0x5d2b6d))]=_0x440994[_0x5d2b6d];}}return{'variables':_0xf373a3};};exports['updateOriginated']=function(_0x104122,_0x442b79){if(!_[_0x18f3('0x12')](_0x104122)){if(_0x104122[_0x18f3('0x26')](_0x18f3('0x28'))){if(_0x104122[_0x18f3('0x28')]>0x0){_0x104122[_0x18f3('0x28')]-=0x1;}else{logger[_0x18f3('0x9')](_0x18f3('0x29'),_0x442b79);}}}else{logger[_0x18f3('0x9')](_0x18f3('0x2a'),_0x442b79);}};exports[_0x18f3('0x2b')]=function(_0x3bae03){var _0xd18c9=moment()['format'](_0x18f3('0x2c'));_0x3bae03[_0x18f3('0x2d')]=0xd;_0x3bae03['statedesc']='Blacklist';_0x3bae03[_0x18f3('0x2e')]=_0xd18c9;_0x3bae03[_0x18f3('0x2f')]=_0xd18c9;_0x3bae03[_0x18f3('0x30')]=_0xd18c9;};exports['logAgent']=function(_0x541c07,_0x5eeb88,_0x33719f){var _0x9009c8=moment()['format'](_0x18f3('0x2c'));_0x541c07[_0x18f3('0x2d')]=_0x5eeb88;_0x541c07[_0x18f3('0x31')]=_0x33719f;_0x541c07[_0x18f3('0x2f')]=_0x9009c8;_0x541c07['ringtime']=utils[_0x18f3('0x32')](_0x541c07[_0x18f3('0x2f')],_0x541c07[_0x18f3('0x2e')]);};exports[_0x18f3('0x33')]=function(_0x5ee1df,_0x3988af,_0x616995){_0x5ee1df[_0x18f3('0x34')]=_0x3988af;_0x5ee1df[_0x18f3('0x35')]=_0x616995;};exports['logCustomer']=function(_0x122f87,_0x18fb4c,_0x1780d8){var _0x10bb72=moment()[_0x18f3('0x15')](_0x18f3('0x2c'));_0x122f87[_0x18f3('0x2d')]=_0x18fb4c;_0x122f87[_0x18f3('0x31')]=_0x1780d8;_0x122f87[_0x18f3('0x2f')]=_0x122f87[_0x18f3('0x2f')]?_0x122f87[_0x18f3('0x2f')]:_0x10bb72;_0x122f87[_0x18f3('0x30')]=_0x122f87['endtime']?_0x122f87[_0x18f3('0x30')]:_0x10bb72;_0x122f87[_0x18f3('0x36')]=utils[_0x18f3('0x32')](_0x122f87[_0x18f3('0x2f')]||0x0,_0x122f87[_0x18f3('0x2e')]||0x0);_0x122f87[_0x18f3('0x37')]=_0x122f87['answertime']?utils[_0x18f3('0x32')](_0x122f87[_0x18f3('0x30')],_0x122f87[_0x18f3('0x38')]):0x0;};exports['isFailure']=function(_0x3c0293){return _0x3c0293===_0x18f3('0x39');};exports[_0x18f3('0x3a')]=function(_0x3753d7,_0x45ad22,_0x57c02e,_0x746675,_0x3b52d0){var _0x118e95=_0x746675?_0x18f3('0x3b'):_0x3753d7[_0x18f3('0x16')];_0x118e95=_0x3b52d0?_0x18f3('0x3c'):_0x118e95;return{'actionid':_0x3753d7[_0x18f3('0x3d')],'action':_0x18f3('0x3e'),'channel':_0x3753d7[_0x18f3('0x3f')],'callerid':util[_0x18f3('0x15')](_0x18f3('0x11'),_0x118e95,_0x3753d7[_0x18f3('0x17')]),'Exten':'xcally-motion-preview','Context':_0x18f3('0x40'),'Priority':'1','variable':_0x57c02e,'timeout':(_0x45ad22['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x3753d7[_0x18f3('0x3d')]};};exports[_0x18f3('0x41')]=function(_0x498863){return _0x498863['countbusyretry']+_0x498863[_0x18f3('0x42')]+_0x498863[_0x18f3('0x43')]+_0x498863['countagentrejectretry']+_0x498863['countnosuchnumberretry'];};exports['cloneAction']=function(_0x2d31d3){var _0x6bb3ec=_[_0x18f3('0x44')](_0x2d31d3);_0x6bb3ec[_0x18f3('0x2d')]=0xf;_0x6bb3ec[_0x18f3('0x31')]='Global';return _0x6bb3ec;};exports[_0x18f3('0x45')]=function(_0xf7a8c0,_0x1e3fcb,_0x47dc8e){var _0x3c7231={};_0x3c7231[_0x1e3fcb]=_0xf7a8c0[_0x1e3fcb];_0x3c7231['active']=![];_0x3c7231[_0x18f3('0x46')]=moment()['add'](_0x47dc8e,_0x18f3('0x47'))[_0x18f3('0x15')]('YYYY-MM-DD\x20HH:mm:ss');_0x3c7231[_0x18f3('0x18')]=_0xf7a8c0[_0x18f3('0x18')];_0x3c7231[_0x18f3('0x48')]=_0xf7a8c0[_0x18f3('0x48')];_0x3c7231['VoiceQueueId']=_0xf7a8c0['VoiceQueueId']||undefined;return _0x3c7231;};exports[_0x18f3('0x49')]=function(_0x173957,_0x542078){if(!_[_0x18f3('0x12')](_0x173957)){if(_0x173957[_0x18f3('0x4a')]>0x0){_0x173957[_0x18f3('0x4a')]-=0x1;}else{logger[_0x18f3('0x9')](_0x542078,_0x18f3('0x4b'));}}else{logger[_0x18f3('0x9')](_0x542078,_0x18f3('0x4c'));}};exports[_0x18f3('0x4d')]=function(_0x57a646){if(_0x57a646<=0x0){return!![];}return![];};function buildObj(_0x1f1567,_0x3ae1c8,_0x24a49d){_0x1f1567[_0x18f3('0x4e')]=_0x3ae1c8;_0x1f1567[_0x18f3('0x14')]=_0x1f1567[_0x18f3('0x4f')];_0x1f1567['interface']=_0x1f1567[_0x18f3('0x3f')];_0x1f1567['motionChannel']='voice';if(_0x24a49d){_0x1f1567[_0x18f3('0x50')]=_0x24a49d[_0x18f3('0x50')];}return _0x1f1567;}exports['buildObj']=buildObj;exports['agentReadyId']=function(_0x1c3de6){var _0x5220cc=[];for(var _0x27594d in _0x1c3de6){if(_0x1c3de6[_0x18f3('0x26')](_0x27594d)){if(!_[_0x18f3('0x12')](_0x1c3de6[_0x27594d])&&_0x1c3de6[_0x27594d]['state']===_0x18f3('0x51')&&_0x1c3de6[_0x27594d][_0x18f3('0x52')]===_0x18f3('0x53')){_0x5220cc[_0x18f3('0x54')](_0x1c3de6[_0x27594d]['id']);}}}return _0x5220cc;};exports[_0x18f3('0x55')]=function(_0xed1124){var _0x1ceef8=moment()[_0x18f3('0x56')](0x0);var _0x4ccbfa=moment(_0xed1124)['milliseconds'](0x0);return _0x1ceef8[_0x18f3('0x57')](_0x4ccbfa,_0x18f3('0x58'));};exports['createBody']=function(_0x4a5b78){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x4a5b78[_0x18f3('0x18')],'ListId':_0x4a5b78[_0x18f3('0x48')],'VoiceQueueId':_0x4a5b78[_0x18f3('0x1a')]||undefined,'CampaignId':_0x4a5b78[_0x18f3('0x59')]||undefined};};exports['filterKey']=function(_0x19e7dd){if(_0x19e7dd==='uniqueid'||_0x19e7dd===_0x18f3('0x5a')||_0x19e7dd===_0x18f3('0x4f')||_0x19e7dd==='type'||_0x19e7dd===_0x18f3('0x5b')||_0x19e7dd===_0x18f3('0x5c')||_0x19e7dd===_0x18f3('0x34')||_0x19e7dd==='channelAgent'||_0x19e7dd===_0x18f3('0x16')||_0x19e7dd==='active'||_0x19e7dd==='calleridnum'||_0x19e7dd===_0x18f3('0x46')||_0x19e7dd==='countbusyretry'||_0x19e7dd===_0x18f3('0x42')||_0x19e7dd===_0x18f3('0x43')||_0x19e7dd===_0x18f3('0x5d')||_0x19e7dd==='callback'||_0x19e7dd===_0x18f3('0x5e')||_0x19e7dd===_0x18f3('0x5f')||_0x19e7dd===_0x18f3('0x60')||_0x19e7dd===_0x18f3('0x18')||_0x19e7dd===_0x18f3('0x48')||_0x19e7dd===_0x18f3('0x35')||_0x19e7dd===_0x18f3('0x1a')||_0x19e7dd===_0x18f3('0x61')||_0x19e7dd===_0x18f3('0x62')||_0x19e7dd===_0x18f3('0x63')||_0x19e7dd===_0x18f3('0x64')||_0x19e7dd===_0x18f3('0x65')||_0x19e7dd===_0x18f3('0x66')||_0x19e7dd===_0x18f3('0x67')||_0x19e7dd===_0x18f3('0x68')||_0x19e7dd===_0x18f3('0x69')||_0x19e7dd==='xmd-dialchannel'||_0x19e7dd===_0x18f3('0x6a')||_0x19e7dd===_0x18f3('0x6b')||_0x19e7dd==='xmd-callerid'||_0x19e7dd===_0x18f3('0x6c')||_0x19e7dd===_0x18f3('0x6d')||_0x19e7dd==='rtpaudioqos'||_0x19e7dd===_0x18f3('0x6e')||_0x19e7dd===_0x18f3('0x6f')||_0x19e7dd===_0x18f3('0x70')||_0x19e7dd===_0x18f3('0x71')||_0x19e7dd===_0x18f3('0x72')||_0x19e7dd==='rtpaudioqosrtt'||_0x19e7dd===_0x18f3('0x73')||_0x19e7dd==='rtpaudioqos'||_0x19e7dd===_0x18f3('0x6e')||_0x19e7dd==='rtpaudioqosjitter'||_0x19e7dd===_0x18f3('0x70')||_0x19e7dd===_0x18f3('0x71')||_0x19e7dd===_0x18f3('0x72')||_0x19e7dd===_0x18f3('0x74')||_0x19e7dd==='rtpaudioqosrttbridged'||_0x19e7dd===_0x18f3('0x75')||_0x19e7dd==='bridgepvtcallid'||_0x19e7dd===_0x18f3('0x2d')||_0x19e7dd===_0x18f3('0x31')){return![];}return!![];};exports[_0x18f3('0x76')]=function(_0xb53619,_0x206320){var _0x4379a4,_0xba1d80,_0x4c141e;if(_0x206320<=0x0){_0x206320=0x1;}_0x4379a4=new RegExp(_0x18f3('0x77')+_0x206320+'}$');_0xba1d80=Math[_0x18f3('0x78')](0xa,_0x206320-0x1);_0x4c141e=Math[_0x18f3('0x78')](0xa,_0x206320)-0x1;return util['format']('%s',_[_0x18f3('0x79')](_0xb53619,_0x4379a4,_['random'](_0xba1d80,_0x4c141e)));};exports[_0x18f3('0x7a')]=function(_0x4277b9){var _0x4ff694=_0x4277b9[_0x18f3('0x7b')](/"(.*?)"/);return _0x4ff694?_0x4ff694[0x1]:_0x4277b9;};exports['extractCalleridNumber']=function(_0x18b2d9){var _0xadada=_0x18b2d9['match'](/<(.*?)>/);return _0xadada?_0xadada[0x1]:_0x18b2d9;};function buildNoAnswerEventPayload(_0x366725,_0x2c0300){var _0x24e35b=buildObj(_0x366725,_0x18f3('0x7c'));if(!_[_0x18f3('0xf')](_0x2c0300[_0x18f3('0x7d')])){Object[_0x18f3('0x7e')](_0x2c0300[_0x18f3('0x7d')])[_0x18f3('0x7f')](function(_0xe7ee31){_0x24e35b[_0xe7ee31[_0x18f3('0x80')]()]=_0x2c0300[_0x18f3('0x7d')][_0xe7ee31];});}return _0x24e35b;}exports[_0x18f3('0x81')]=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0x64d0=['xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','getCallerIdRandom','\x5cw{0,','pow','random','extractCalleridName','match','variables','keys','forEach','toLowerCase','buildNoAnswerEventPayload','util','lodash','../../../../config/logger','preview','env','loggerCatch','inspect','info','loggerError','error','logger2','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','calleridname','ContactId','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','dialQueueProject2','U(xcally-mixmonitor-context)','dialPreviewUrl','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','Call-Type:\x20PREVIEW','monitor_format','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','toLowerVariables','hasOwnProperty','toLower','updateOriginated','originated','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime','getSeconds','membername','UserId','talktime','answertime','variablesAction','BOOKED','uniqueid','originate','channelAgent','calleridnum','xcally-motion-preview','from-sip','timeout','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','cloneAction','clone','Global','active','scheduledat','add','ListId','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','name','queue','interface','voice','mandatoryDisposition','buildObj','agentReadyId','not_inuse','reachable','milliseconds','diff','seconds','createBody','CampaignId','filterKey','idContact','dialAnswer','countglobal','callbackuniqueid','callbackat','recallme','sipcallid'];(function(_0x4e8dfc,_0x448b97){var _0x3c47e0=function(_0x844a2b){while(--_0x844a2b){_0x4e8dfc['push'](_0x4e8dfc['shift']());}};_0x3c47e0(++_0x448b97);}(_0x64d0,0xab));var _0x064d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x64d0[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x064d('0x0'));var _=require(_0x064d('0x1'));var moment=require('moment');var logger=require(_0x064d('0x2'))(_0x064d('0x3'));var ipAgi=process[_0x064d('0x4')]['XCALLY_IP_AGI']||'127.0.0.1';var utils=require('../../dialer/utils');exports[_0x064d('0x5')]=function(_0x1e82ea){return function(_0x5bfe0d){logger['error'](_0x1e82ea,util[_0x064d('0x6')](_0x5bfe0d,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x95e9c7,_0x18a475){logger[_0x064d('0x7')](_0x95e9c7,util['inspect'](_0x18a475,{'showHidden':![],'depth':null}));};exports[_0x064d('0x8')]=function(_0x25091d,_0x545f88){logger[_0x064d('0x9')](_0x25091d,util[_0x064d('0x6')](_0x545f88,{'showHidden':![],'depth':null}));};exports[_0x064d('0xa')]=function(_0x5a7e63){return function(_0x582275){logger[_0x064d('0x7')](_0x5a7e63,util[_0x064d('0x6')](_0x582275,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x1d76d2,_0x2c0a63,_0x7a67c3){return{'message':_0x1d76d2,'unlock':_0x2c0a63,'active':_0x7a67c3};};exports[_0x064d('0xb')]=function(_0x5c9aef,_0xdae202,_0x5cf1e0){if(!_[_0x064d('0xc')](_0x5cf1e0)&&_0x064d('0xd')===typeof _0x5cf1e0&&!_[_0x064d('0xe')](_0x5cf1e0)){if(!_[_0x064d('0xc')](_0xdae202)&&_0x064d('0xd')===typeof _0xdae202&&!_[_0x064d('0xe')](_0xdae202)){return util[_0x064d('0xf')](_0x064d('0x10'),_0xdae202,_0x5cf1e0);}return util[_0x064d('0xf')](_0x064d('0x10'),_0x5cf1e0,_0x5cf1e0);}if(!_[_0x064d('0xc')](_0x5c9aef)&&_0x064d('0xd')===typeof _0x5c9aef&&!_['isEmpty'](_0x5c9aef)){return _0x5c9aef;}return _0x064d('0x11');};exports[_0x064d('0x12')]=function(_0x472898){if(_[_0x064d('0x13')](_0x472898)){return![];}return _0x472898;};exports[_0x064d('0x14')]=function(_0x56fbc4,_0x3b2ba6,_0x36f905,_0x346c95,_0x186195,_0x3c2395){var _0x4b6e8b={'XMD-QUEUE':_0x3b2ba6[_0x064d('0x15')]?_0x3b2ba6['Queue']['name']:'','XMD-CALLERID':_0x346c95,'XMD-CALLERID-PREVIEW':_0x3c2395?util[_0x064d('0xf')](_0x064d('0x10'),_0x3c2395[_0x064d('0x16')],_0x3c2395['calleridnum']):_0x346c95,'XMD-DIALID':_0x186195,'XMD-CONTACTID':_0x3b2ba6[_0x064d('0x17')],'XMD-CDRTYPE':_0x064d('0x18'),'CALLERID(all)':_0x346c95,'XMD-VOICEQUEUEID':_0x3b2ba6[_0x064d('0x19')],'XMD-DIALCHANNEL':_0x36f905,'XMD-DIALTIMEOUT':_0x56fbc4['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0x064d('0xf')](_0x064d('0x1a'),_0x56fbc4[_0x064d('0x1b')]?'g':'',_[_0x064d('0xe')](_0x56fbc4['monitor_format'])?'':_0x064d('0x1c')),'XMD-DIALURL':_0x56fbc4[_0x064d('0x1d')]||'','XMD-AGI':_0x56fbc4['dialQueueProject']?util[_0x064d('0xf')](_0x064d('0x1e'),ipAgi,_0x56fbc4['dialQueueProject']):_0x064d('0x1f'),'XMD-AGIAFTER':_0x56fbc4[_0x064d('0x1b')]?util[_0x064d('0xf')]('\x22agi://%s/square,%s\x22',ipAgi,_0x56fbc4[_0x064d('0x1b')]):_0x064d('0x1f'),'XMD-ORIGINATECALLERIDNUM':_0x3c2395?_0x3c2395[_0x064d('0x20')]:'','XMD-ORIGINATECALLERIDNAME':_0x3c2395?_0x3c2395[_0x064d('0x21')]:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0x064d('0x22')};if(!_[_0x064d('0xe')](_0x56fbc4[_0x064d('0x23')])){_0x4b6e8b[util[_0x064d('0xf')]('%s',_0x064d('0x24'))]=_0x56fbc4[_0x064d('0x23')];_0x4b6e8b[util[_0x064d('0xf')]('%s',_0x064d('0x25'))]=_0x186195;}return _0x4b6e8b;};exports[_0x064d('0x26')]=function(_0x58e76b){var _0x1121ef={};for(var _0x8fccb7 in _0x58e76b){if(_0x58e76b[_0x064d('0x27')](_0x8fccb7)){_0x1121ef[util[_0x064d('0xf')]('%s',_[_0x064d('0x28')](_0x8fccb7))]=_0x58e76b[_0x8fccb7];}}return{'variables':_0x1121ef};};exports[_0x064d('0x29')]=function(_0x48a145,_0x1d114d){if(!_[_0x064d('0x13')](_0x48a145)){if(_0x48a145[_0x064d('0x27')](_0x064d('0x2a'))){if(_0x48a145['originated']>0x0){_0x48a145[_0x064d('0x2a')]-=0x1;}else{logger[_0x064d('0x9')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x1d114d);}}}else{logger['error']('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x1d114d);}};exports[_0x064d('0x2b')]=function(_0x3d80c8){var _0x2b4ef9=moment()['format'](_0x064d('0x2c'));_0x3d80c8[_0x064d('0x2d')]=0xd;_0x3d80c8[_0x064d('0x2e')]=_0x064d('0x2f');_0x3d80c8[_0x064d('0x30')]=_0x2b4ef9;_0x3d80c8[_0x064d('0x31')]=_0x2b4ef9;_0x3d80c8[_0x064d('0x32')]=_0x2b4ef9;};exports[_0x064d('0x33')]=function(_0x5dd6a2,_0x51292,_0x30008e){var _0x2a9561=moment()['format'](_0x064d('0x2c'));_0x5dd6a2[_0x064d('0x2d')]=_0x51292;_0x5dd6a2[_0x064d('0x2e')]=_0x30008e;_0x5dd6a2['responsetime']=_0x2a9561;_0x5dd6a2[_0x064d('0x34')]=utils[_0x064d('0x35')](_0x5dd6a2[_0x064d('0x31')],_0x5dd6a2['starttime']);};exports['logLookAgent']=function(_0x279a2a,_0x241dd6,_0x1099c3){_0x279a2a[_0x064d('0x36')]=_0x241dd6;_0x279a2a[_0x064d('0x37')]=_0x1099c3;};exports['logCustomer']=function(_0x5ccd0a,_0x3c757b,_0x1b67b3){var _0x730fb8=moment()[_0x064d('0xf')](_0x064d('0x2c'));_0x5ccd0a[_0x064d('0x2d')]=_0x3c757b;_0x5ccd0a[_0x064d('0x2e')]=_0x1b67b3;_0x5ccd0a[_0x064d('0x31')]=_0x5ccd0a[_0x064d('0x31')]?_0x5ccd0a[_0x064d('0x31')]:_0x730fb8;_0x5ccd0a[_0x064d('0x32')]=_0x5ccd0a[_0x064d('0x32')]?_0x5ccd0a['endtime']:_0x730fb8;_0x5ccd0a[_0x064d('0x34')]=utils['getSeconds'](_0x5ccd0a[_0x064d('0x31')]||0x0,_0x5ccd0a[_0x064d('0x30')]||0x0);_0x5ccd0a[_0x064d('0x38')]=_0x5ccd0a[_0x064d('0x39')]?utils[_0x064d('0x35')](_0x5ccd0a['endtime'],_0x5ccd0a[_0x064d('0x39')]):0x0;};exports['isFailure']=function(_0x266469){return _0x266469==='Failure';};exports[_0x064d('0x3a')]=function(_0xab08df,_0x1549da,_0x5d7886,_0x2595cd,_0x37e6ec){var _0x34dbb8=_0x2595cd?'RECALL':_0xab08df[_0x064d('0x16')];_0x34dbb8=_0x37e6ec?_0x064d('0x3b'):_0x34dbb8;return{'actionid':_0xab08df[_0x064d('0x3c')],'action':_0x064d('0x3d'),'channel':_0xab08df[_0x064d('0x3e')],'callerid':util['format'](_0x064d('0x10'),_0x34dbb8,_0xab08df[_0x064d('0x3f')]),'Exten':_0x064d('0x40'),'Context':_0x064d('0x41'),'Priority':'1','variable':_0x5d7886,'timeout':(_0x1549da[_0x064d('0x42')]||0x1e)*0x3e8,'async':!![],'channelid':_0xab08df[_0x064d('0x3c')]};};exports['totalGlobal']=function(_0x289ccf){return _0x289ccf[_0x064d('0x43')]+_0x289ccf[_0x064d('0x44')]+_0x289ccf[_0x064d('0x45')]+_0x289ccf['countagentrejectretry']+_0x289ccf[_0x064d('0x46')];};exports[_0x064d('0x47')]=function(_0x9f0244){var _0x245257=_[_0x064d('0x48')](_0x9f0244);_0x245257[_0x064d('0x2d')]=0xf;_0x245257[_0x064d('0x2e')]=_0x064d('0x49');return _0x245257;};exports['scheduledAt']=function(_0x4407ba,_0x4bc29b,_0x2a6064){var _0x26f4cf={};_0x26f4cf[_0x4bc29b]=_0x4407ba[_0x4bc29b];_0x26f4cf[_0x064d('0x4a')]=![];_0x26f4cf[_0x064d('0x4b')]=moment()[_0x064d('0x4c')](_0x2a6064,'minutes')[_0x064d('0xf')]('YYYY-MM-DD\x20HH:mm:ss');_0x26f4cf[_0x064d('0x17')]=_0x4407ba[_0x064d('0x17')];_0x26f4cf[_0x064d('0x4d')]=_0x4407ba['ListId'];_0x26f4cf[_0x064d('0x19')]=_0x4407ba[_0x064d('0x19')]||undefined;return _0x26f4cf;};exports['decrementTalkink']=function(_0x5720fa,_0x3a9a46){if(!_['isNil'](_0x5720fa)){if(_0x5720fa[_0x064d('0x4e')]>0x0){_0x5720fa[_0x064d('0x4e')]-=0x1;}else{logger[_0x064d('0x9')](_0x3a9a46,_0x064d('0x4f'));}}else{logger[_0x064d('0x9')](_0x3a9a46,_0x064d('0x50'));}};exports[_0x064d('0x51')]=function(_0x37a980){if(_0x37a980<=0x0){return!![];}return![];};function buildObj(_0x356d5d,_0x5313e7,_0xd8a24f){_0x356d5d[_0x064d('0x52')]=_0x5313e7;_0x356d5d[_0x064d('0x53')]=_0x356d5d[_0x064d('0x54')];_0x356d5d[_0x064d('0x55')]=_0x356d5d['channelAgent'];_0x356d5d['motionChannel']=_0x064d('0x56');if(_0xd8a24f){_0x356d5d[_0x064d('0x57')]=_0xd8a24f['mandatoryDisposition'];}return _0x356d5d;}exports[_0x064d('0x58')]=buildObj;exports['buildAcw']=function(_0x19d086){var _0x136939={};_0x136939[_0x064d('0x54')]=_0x19d086['queue'];_0x136939[_0x064d('0x55')]=_0x19d086[_0x064d('0x3e')];_0x136939[_0x064d('0x3c')]=_0x19d086[_0x064d('0x3c')];return _0x136939;};exports[_0x064d('0x59')]=function(_0x46e922){var _0x4b25dd=[];for(var _0x240643 in _0x46e922){if(_0x46e922[_0x064d('0x27')](_0x240643)){if(!_[_0x064d('0x13')](_0x46e922[_0x240643])&&_0x46e922[_0x240643][_0x064d('0x2d')]===_0x064d('0x5a')&&_0x46e922[_0x240643]['status']===_0x064d('0x5b')){_0x4b25dd['push'](_0x46e922[_0x240643]['id']);}}}return _0x4b25dd;};exports['getDiff']=function(_0x370a38){var _0x53f52e=moment()[_0x064d('0x5c')](0x0);var _0x598ce8=moment(_0x370a38)['milliseconds'](0x0);return _0x53f52e[_0x064d('0x5d')](_0x598ce8,_0x064d('0x5e'));};exports[_0x064d('0x5f')]=function(_0x5a001a){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5a001a[_0x064d('0x17')],'ListId':_0x5a001a['ListId'],'VoiceQueueId':_0x5a001a[_0x064d('0x19')]||undefined,'CampaignId':_0x5a001a[_0x064d('0x60')]||undefined};};exports[_0x064d('0x61')]=function(_0x31837f){if(_0x31837f==='uniqueid'||_0x31837f===_0x064d('0x62')||_0x31837f===_0x064d('0x54')||_0x31837f==='type'||_0x31837f==='campaigntype'||_0x31837f===_0x064d('0x63')||_0x31837f==='membername'||_0x31837f===_0x064d('0x3e')||_0x31837f===_0x064d('0x16')||_0x31837f===_0x064d('0x4a')||_0x31837f===_0x064d('0x3f')||_0x31837f==='scheduledat'||_0x31837f===_0x064d('0x43')||_0x31837f===_0x064d('0x44')||_0x31837f===_0x064d('0x45')||_0x31837f===_0x064d('0x64')||_0x31837f==='callback'||_0x31837f===_0x064d('0x65')||_0x31837f===_0x064d('0x66')||_0x31837f===_0x064d('0x67')||_0x31837f===_0x064d('0x17')||_0x31837f===_0x064d('0x4d')||_0x31837f===_0x064d('0x37')||_0x31837f===_0x064d('0x19')||_0x31837f===_0x064d('0x68')||_0x31837f===_0x064d('0x69')||_0x31837f===_0x064d('0x6a')||_0x31837f===_0x064d('0x6b')||_0x31837f===_0x064d('0x6c')||_0x31837f===_0x064d('0x6d')||_0x31837f===_0x064d('0x6e')||_0x31837f===_0x064d('0x6f')||_0x31837f===_0x064d('0x70')||_0x31837f===_0x064d('0x71')||_0x31837f===_0x064d('0x72')||_0x31837f===_0x064d('0x73')||_0x31837f===_0x064d('0x74')||_0x31837f===_0x064d('0x75')||_0x31837f==='xmd-agi'||_0x31837f===_0x064d('0x76')||_0x31837f===_0x064d('0x77')||_0x31837f===_0x064d('0x78')||_0x31837f===_0x064d('0x79')||_0x31837f===_0x064d('0x7a')||_0x31837f===_0x064d('0x7b')||_0x31837f===_0x064d('0x7c')||_0x31837f===_0x064d('0x7d')||_0x31837f===_0x064d('0x76')||_0x31837f===_0x064d('0x77')||_0x31837f===_0x064d('0x78')||_0x31837f===_0x064d('0x79')||_0x31837f===_0x064d('0x7a')||_0x31837f===_0x064d('0x7b')||_0x31837f===_0x064d('0x7c')||_0x31837f===_0x064d('0x7d')||_0x31837f===_0x064d('0x7e')||_0x31837f==='bridgepvtcallid'||_0x31837f==='state'||_0x31837f===_0x064d('0x2e')){return![];}return!![];};exports[_0x064d('0x7f')]=function(_0x5ccbe1,_0x5d4b2c){var _0x575e6e,_0x2a2a6c,_0x385490;if(_0x5d4b2c<=0x0){_0x5d4b2c=0x1;}_0x575e6e=new RegExp(_0x064d('0x80')+_0x5d4b2c+'}$');_0x2a2a6c=Math['pow'](0xa,_0x5d4b2c-0x1);_0x385490=Math[_0x064d('0x81')](0xa,_0x5d4b2c)-0x1;return util[_0x064d('0xf')]('%s',_['replace'](_0x5ccbe1,_0x575e6e,_[_0x064d('0x82')](_0x2a2a6c,_0x385490)));};exports[_0x064d('0x83')]=function(_0x396254){var _0x1b310e=_0x396254[_0x064d('0x84')](/"(.*?)"/);return _0x1b310e?_0x1b310e[0x1]:_0x396254;};exports['extractCalleridNumber']=function(_0x14f565){var _0x54102a=_0x14f565[_0x064d('0x84')](/<(.*?)>/);return _0x54102a?_0x54102a[0x1]:_0x14f565;};function buildNoAnswerEventPayload(_0x5800f3,_0x4a0e62){var _0x51e356=buildObj(_0x5800f3,'noanswer');if(!_[_0x064d('0xe')](_0x4a0e62[_0x064d('0x85')])){Object[_0x064d('0x86')](_0x4a0e62[_0x064d('0x85')])[_0x064d('0x87')](function(_0x34e45f){_0x51e356[_0x34e45f[_0x064d('0x88')]()]=_0x4a0e62[_0x064d('0x85')][_0x34e45f];});}return _0x51e356;}exports[_0x064d('0x89')]=buildNoAnswerEventPayload;
\ No newline at end of file
index c746bf7..e51eb99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0cb=['reload','voicechannel','string','number','boolean','queuepause'];(function(_0x561a85,_0x36d66a){var _0x1520a3=function(_0x3e4b5c){while(--_0x3e4b5c){_0x561a85['push'](_0x561a85['shift']());}};_0x1520a3(++_0x36d66a);}(_0xd0cb,0x16a));var _0xbd0c=function(_0x10babf,_0x3cadc0){_0x10babf=_0x10babf-0x0;var _0x1d1fbd=_0xd0cb[_0x10babf];return _0x1d1fbd;};'use strict';exports['queueadd']={'queue':{'type':_0xbd0c('0x0'),'required':!![]},'interface':{'type':_0xbd0c('0x0'),'required':!![]},'membername':{'type':_0xbd0c('0x0'),'required':!![]},'penalty':{'type':_0xbd0c('0x1'),'required':![]},'paused':{'type':_0xbd0c('0x2'),'required':![]}};exports['queueremove']={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]}};exports[_0xbd0c('0x3')]={'interface':{'type':_0xbd0c('0x0'),'required':!![]},'paused':{'type':_0xbd0c('0x2')},'reason':{'type':'string','required':![]}};exports[_0xbd0c('0x4')]={'module':{'type':_0xbd0c('0x0'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xbd0c('0x0'),'required':!![]}};exports[_0xbd0c('0x5')]={'uniqueid':{'type':_0xbd0c('0x0'),'required':!![]},'filename':{'type':_0xbd0c('0x0')},'format':{'type':_0xbd0c('0x0')},'mixmonitorid':{'type':_0xbd0c('0x0')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0xbd0c('0x0'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xbd0c('0x0'),'required':!![]},'exten':{'type':_0xbd0c('0x0'),'required':!![]},'context':{'type':_0xbd0c('0x0')}};
\ No newline at end of file
+var _0xaab4=['queueadd','number','boolean','string','queuepause','reload','voicequeuechannel','voicechannel','voicequeuechannelredirect'];(function(_0x5141e0,_0x200c21){var _0x14e855=function(_0x5b53ec){while(--_0x5b53ec){_0x5141e0['push'](_0x5141e0['shift']());}};_0x14e855(++_0x200c21);}(_0xaab4,0x75));var _0x4aab=function(_0x25521f,_0x5f5100){_0x25521f=_0x25521f-0x0;var _0x38a12d=_0xaab4[_0x25521f];return _0x38a12d;};'use strict';exports[_0x4aab('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0x4aab('0x1'),'required':![]},'paused':{'type':_0x4aab('0x2'),'required':![]}};exports['queueremove']={'queue':{'type':_0x4aab('0x3'),'required':!![]},'interface':{'type':'string','required':!![]}};exports[_0x4aab('0x4')]={'interface':{'type':_0x4aab('0x3'),'required':!![]},'paused':{'type':_0x4aab('0x2')},'reason':{'type':_0x4aab('0x3'),'required':![]}};exports[_0x4aab('0x5')]={'module':{'type':_0x4aab('0x3'),'required':![]}};exports[_0x4aab('0x6')]={'uniqueid':{'type':_0x4aab('0x3'),'required':!![]}};exports[_0x4aab('0x7')]={'uniqueid':{'type':_0x4aab('0x3'),'required':!![]},'filename':{'type':_0x4aab('0x3')},'format':{'type':'string'},'mixmonitorid':{'type':_0x4aab('0x3')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':'string','required':!![]}};exports[_0x4aab('0x8')]={'uniqueid':{'type':_0x4aab('0x3'),'required':!![]},'exten':{'type':_0x4aab('0x3'),'required':!![]},'context':{'type':_0x4aab('0x3')}};
\ No newline at end of file
index 5dda014..8026b4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['diff','seconds','disposition','ANSWERED','outbound','duration','billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','initVoiceQueues','exports','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','telephones','trunks','voiceQueues','triggers','templates','channels','outboundChannels','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','mapKeys','hasOwnProperty','isNil','format','interface','total','answered','sumHoldTime','sumBillable','isEmpty','ivrAnswerCallsDay','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','agents','length','name','isUndefined','initTelephones','SIP/%s','initTriggers','initSalesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','initVoiceQueueReports','groupBy','queuecallerexit','queuecallerabandon','queuecallerleaveAt','queuecallerjoinAt','sumDuration','queuecallercompleteAt','queuecallerexitAt'];(function(_0x59df07,_0xfef2a8){var _0x4c796f=function(_0x1f378c){while(--_0x1f378c){_0x59df07['push'](_0x59df07['shift']());}};_0x4c796f(++_0xfef2a8);}(_0x5f66,0x1a0));var _0x65f6=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x5f66[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require('lodash');var moment=require(_0x65f6('0x0'));var util=require('util');var Agent=require(_0x65f6('0x1'));var Telephone=require(_0x65f6('0x2'));var Trunk=require(_0x65f6('0x3'));var VoiceQueue=require(_0x65f6('0x4'));var Trigger=require(_0x65f6('0x5'));var Template=require('../model/template');var Campaign=require(_0x65f6('0x6'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x65f6('0x7'));var SalesforceAccount=require(_0x65f6('0x8'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x65f6('0x9'));var DeskAccount=require(_0x65f6('0xa'));var VtigerAccount=require(_0x65f6('0xb'));var ServicenowAccount=require(_0x65f6('0xc'));var Dynamics365Account=require(_0x65f6('0xd'));var FreshsalesAccount=require(_0x65f6('0xe'));var FaxAccount=require('../model/faxAccount');function Realtime(){this['agents']={};this[_0x65f6('0xf')]={};this[_0x65f6('0x10')]={};this[_0x65f6('0x11')]={};this[_0x65f6('0x12')]={};this['campaigns']={};this[_0x65f6('0x13')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x65f6('0x14')]={};this['queueChannels']={};this[_0x65f6('0x15')]={};this['timers']={};this[_0x65f6('0x16')]={};this[_0x65f6('0x17')]={};this[_0x65f6('0x18')]={};this[_0x65f6('0x19')]={};this[_0x65f6('0x1a')]={};this[_0x65f6('0x1b')]={};this[_0x65f6('0x1c')]={};this[_0x65f6('0x1d')]={};this[_0x65f6('0x1e')]={};this[_0x65f6('0x1f')]={};this['freshsalesAccounts']={};this[_0x65f6('0x20')]={};}function freeIsNotKey(_0x49a913,_0x5dd324,_0x1693e6){var _0x5c69f8=_[_0x65f6('0x21')](_0x49a913,function(_0x1c955c){return _0x1c955c[_0x1693e6];});for(var _0x1b1cbb in _0x5dd324){if(_0x5dd324[_0x65f6('0x22')](_0x1b1cbb)){if(!_0x5c69f8[_0x1b1cbb]){delete _0x5dd324[_0x1b1cbb];}}}}function freeIsNotKeySip(_0xc8660c,_0x18380e){var _0x495dd6=_['mapKeys'](_0xc8660c,function(_0x2d538c){return util['format']('SIP/%s',_0x2d538c['name']);});for(var _0x365159 in _0x18380e){if(_0x18380e[_0x65f6('0x22')](_0x365159)){if(!_0x495dd6[_0x365159]){delete _0x18380e[_0x365159];}}}}function freeIsNotKeyAgent(_0x5114a4,_0x39e19f){var _0x270893=_[_0x65f6('0x21')](_0x5114a4,function(_0x3876ed){var _0x219ab2=_[_0x65f6('0x23')](_0x3876ed['interface'])?util[_0x65f6('0x24')]('SIP/%s',_0x3876ed['name']):_0x3876ed[_0x65f6('0x25')];return _0x219ab2;});for(var _0xd173f4 in _0x39e19f){if(_0x39e19f['hasOwnProperty'](_0xd173f4)){if(!_0x270893[_0xd173f4]){delete _0x39e19f[_0xd173f4];}}}}function clearVoiceCallReports(_0x1eeaaa){_0x1eeaaa[_0x65f6('0x26')]=0x0;_0x1eeaaa[_0x65f6('0x27')]=0x0;_0x1eeaaa[_0x65f6('0x28')]=0x0;_0x1eeaaa['sumDuration']=0x0;_0x1eeaaa[_0x65f6('0x29')]=0x0;}function clearCampaigns(_0x59ea32){if(!_[_0x65f6('0x2a')](_0x59ea32)){for(var _0x5963e0 in _0x59ea32){if(_0x59ea32['hasOwnProperty'](_0x5963e0)){_0x59ea32[_0x5963e0]['ivrTotalCallsDays']=0x0;_0x59ea32[_0x5963e0][_0x65f6('0x2b')]=0x0;}}}}function clearVoiceQueues(_0x16cde8){if(!_['isEmpty'](_0x16cde8)){for(var _0x296cd9 in _0x16cde8){if(_0x16cde8[_0x65f6('0x22')](_0x296cd9)){_0x16cde8[_0x296cd9]['total']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x27')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2c')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2d')]=0x0;_0x16cde8[_0x296cd9]['sumHoldTime']=0x0;_0x16cde8[_0x296cd9]['sumDuration']=0x0;_0x16cde8[_0x296cd9]['sumBillable']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2e')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2f')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x30')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x31')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x32')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x33')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x34')]=0x0;_0x16cde8[_0x296cd9]['outboundDropCallsDayCallersExit']=0x0;_0x16cde8[_0x296cd9]['outboundBlacklistCallsDay']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x35')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x36')]=0x0;_0x16cde8[_0x296cd9]['outboundReCallsDay']=0x0;_0x16cde8[_0x296cd9]['outboundAnswerAgiCallsDay']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x37')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x38')]=!![];}}}}Realtime[_0x65f6('0x39')][_0x65f6('0x3a')]=function(_0x1217fd,_0x2d32be){for(var _0x5792a0 in _0x2d32be){if(_0x1217fd[_0x65f6('0x22')](_0x5792a0)){_0x1217fd[_0x5792a0]=_0x2d32be[_0x5792a0];}}};Realtime[_0x65f6('0x39')][_0x65f6('0x3b')]=function(){var _0x4bc037=this;return function(_0x217f35){if(_0x217f35){freeIsNotKeyAgent(_0x217f35,_0x4bc037[_0x65f6('0x3c')]);for(var _0xbaed3c=0x0,_0x45510a={};_0xbaed3c<_0x217f35[_0x65f6('0x3d')];_0xbaed3c+=0x1){_0x45510a=_0x217f35[_0xbaed3c];var _0x2f054c=_['isNil'](_0x45510a[_0x65f6('0x25')])?util[_0x65f6('0x24')]('SIP/%s',_0x45510a[_0x65f6('0x3e')]):_0x45510a['interface'];if(_[_0x65f6('0x3f')](_0x4bc037['agents'][_0x2f054c])){_0x4bc037[_0x65f6('0x3c')][_0x2f054c]=new Agent(_0x45510a);}else{_0x4bc037[_0x65f6('0x3a')](_0x4bc037['agents'][_0x2f054c],_0x45510a);}}}return _0x4bc037[_0x65f6('0x3c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x40')]=function(){var _0x515648=this;return function(_0x582c7e){if(_0x582c7e){freeIsNotKeySip(_0x582c7e,_0x515648[_0x65f6('0xf')]);for(var _0x4c0df4=0x0,_0x26de30={};_0x4c0df4<_0x582c7e['length'];_0x4c0df4+=0x1){_0x26de30=_0x582c7e[_0x4c0df4];if(_[_0x65f6('0x3f')](_0x515648[_0x65f6('0xf')][util['format'](_0x65f6('0x41'),_0x26de30['name'])])){_0x515648['telephones'][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x26de30[_0x65f6('0x3e')])]=new Telephone(_0x26de30);}else{_0x515648[_0x65f6('0x3a')](_0x515648[_0x65f6('0xf')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x26de30[_0x65f6('0x3e')])],_0x26de30);}}}return _0x515648['telephones'];};};Realtime[_0x65f6('0x39')]['initTrunks']=function(){var _0x12a589=this;return function(_0xa4394a){if(_0xa4394a){freeIsNotKeySip(_0xa4394a,_0x12a589[_0x65f6('0x10')]);for(var _0x2ea7f7=0x0,_0x5ef5c2={};_0x2ea7f7<_0xa4394a[_0x65f6('0x3d')];_0x2ea7f7+=0x1){_0x5ef5c2=_0xa4394a[_0x2ea7f7];if(_[_0x65f6('0x3f')](_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2[_0x65f6('0x3e')])])){_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2['name'])]=new Trunk(_0x5ef5c2);}else{_0x12a589[_0x65f6('0x3a')](_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2[_0x65f6('0x3e')])],_0x5ef5c2);}}}return _0x12a589[_0x65f6('0x10')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x42')]=function(){var _0x461393=this;return function(_0x2abbed){if(_0x2abbed){freeIsNotKey(_0x2abbed,_0x461393[_0x65f6('0x12')],'id');for(var _0x2c008a=0x0,_0x6c4d94={};_0x2c008a<_0x2abbed[_0x65f6('0x3d')];_0x2c008a+=0x1){_0x6c4d94=_0x2abbed[_0x2c008a];if(_[_0x65f6('0x3f')](_0x461393[_0x65f6('0x12')][_0x6c4d94['id']])){_0x461393['triggers'][_0x6c4d94['id']]=new Trigger(_0x6c4d94);}else{_0x461393[_0x65f6('0x3a')](_0x461393[_0x65f6('0x12')][_0x6c4d94['id']],_0x6c4d94);}}}return _0x461393[_0x65f6('0x12')];};};Realtime[_0x65f6('0x39')]['initTemplates']=function(){var _0x1bf5bf=this;return function(_0x2d0dac){if(_0x2d0dac){freeIsNotKey(_0x2d0dac,_0x1bf5bf[_0x65f6('0x13')],'id');for(var _0x5e69b4=0x0,_0x2dbab3={};_0x5e69b4<_0x2d0dac[_0x65f6('0x3d')];_0x5e69b4+=0x1){_0x2dbab3=_0x2d0dac[_0x5e69b4];if(_[_0x65f6('0x3f')](_0x1bf5bf[_0x65f6('0x13')][_0x2dbab3['id']])){_0x1bf5bf['templates'][_0x2dbab3['id']]=new Template(_0x2dbab3);}else{_0x1bf5bf[_0x65f6('0x3a')](_0x1bf5bf['templates'][_0x2dbab3['id']],_0x2dbab3);}}}return _0x1bf5bf[_0x65f6('0x13')];};};Realtime[_0x65f6('0x39')]['initZendeskAccounts']=function(){var _0xf754ee=this;return function(_0x5085db){if(_0x5085db){freeIsNotKey(_0x5085db,_0xf754ee[_0x65f6('0x17')],'id');for(var _0x4d9b76=0x0,_0x2d1706={};_0x4d9b76<_0x5085db[_0x65f6('0x3d')];_0x4d9b76+=0x1){_0x2d1706=_0x5085db[_0x4d9b76];if(_[_0x65f6('0x3f')](_0xf754ee[_0x65f6('0x17')][_0x2d1706['id']])){_0xf754ee['zendeskAccounts'][_0x2d1706['id']]=new ZendeskAccount(_0x2d1706);}else{_0xf754ee['mergeFromDatabase'](_0xf754ee[_0x65f6('0x17')][_0x2d1706['id']],_0x2d1706);}}}return _0xf754ee[_0x65f6('0x17')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x43')]=function(){var _0x3b907c=this;return function(_0x2d6ab9){if(_0x2d6ab9){freeIsNotKey(_0x2d6ab9,_0x3b907c[_0x65f6('0x18')],'id');for(var _0x41690c=0x0,_0x414f49={};_0x41690c<_0x2d6ab9['length'];_0x41690c+=0x1){_0x414f49=_0x2d6ab9[_0x41690c];if(_[_0x65f6('0x3f')](_0x3b907c[_0x65f6('0x18')][_0x414f49['id']])){_0x3b907c[_0x65f6('0x18')][_0x414f49['id']]=new SalesforceAccount(_0x414f49);}else{_0x3b907c['mergeFromDatabase'](_0x3b907c[_0x65f6('0x18')][_0x414f49['id']],_0x414f49);}}}return _0x3b907c[_0x65f6('0x18')];};};Realtime['prototype'][_0x65f6('0x44')]=function(){var _0x253d52=this;return function(_0x57eb04){if(_0x57eb04){freeIsNotKey(_0x57eb04,_0x253d52[_0x65f6('0x1a')],'id');for(var _0x4f96c4=0x0,_0x247be3={};_0x4f96c4<_0x57eb04[_0x65f6('0x3d')];_0x4f96c4+=0x1){_0x247be3=_0x57eb04[_0x4f96c4];if(_[_0x65f6('0x3f')](_0x253d52['freshdeskAccounts'][_0x247be3['id']])){_0x253d52[_0x65f6('0x1a')][_0x247be3['id']]=new FreshdeskAccount(_0x247be3);}else{_0x253d52[_0x65f6('0x3a')](_0x253d52['freshdeskAccounts'][_0x247be3['id']],_0x247be3);}}}return _0x253d52[_0x65f6('0x1a')];};};Realtime[_0x65f6('0x39')]['initZohoAccounts']=function(){var _0x34d6a9=this;return function(_0x344c0e){if(_0x344c0e){freeIsNotKey(_0x344c0e,_0x34d6a9[_0x65f6('0x1b')],'id');for(var _0x25d504=0x0,_0x234fa7={};_0x25d504<_0x344c0e[_0x65f6('0x3d')];_0x25d504+=0x1){_0x234fa7=_0x344c0e[_0x25d504];if(_[_0x65f6('0x3f')](_0x34d6a9[_0x65f6('0x1b')][_0x234fa7['id']])){_0x34d6a9['zohoAccounts'][_0x234fa7['id']]=new ZohoAccount(_0x234fa7);}else{_0x34d6a9['mergeFromDatabase'](_0x34d6a9['zohoAccounts'][_0x234fa7['id']],_0x234fa7);}}}return _0x34d6a9[_0x65f6('0x1b')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x45')]=function(){var _0x20c322=this;return function(_0x545445){if(_0x545445){freeIsNotKey(_0x545445,_0x20c322[_0x65f6('0x1c')],'id');for(var _0x2032b9=0x0,_0x9ff849={};_0x2032b9<_0x545445['length'];_0x2032b9+=0x1){_0x9ff849=_0x545445[_0x2032b9];if(_[_0x65f6('0x3f')](_0x20c322[_0x65f6('0x1c')][_0x9ff849['id']])){_0x20c322[_0x65f6('0x1c')][_0x9ff849['id']]=new DeskAccount(_0x9ff849);}else{_0x20c322['mergeFromDatabase'](_0x20c322['deskAccounts'][_0x9ff849['id']],_0x9ff849);}}}return _0x20c322[_0x65f6('0x1c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x46')]=function(){var _0x39364f=this;return function(_0x2a76b3){if(_0x2a76b3){freeIsNotKey(_0x2a76b3,_0x39364f[_0x65f6('0x19')],'id');for(var _0x35d77f=0x0,_0x138334={};_0x35d77f<_0x2a76b3[_0x65f6('0x3d')];_0x35d77f+=0x1){_0x138334=_0x2a76b3[_0x35d77f];if(_[_0x65f6('0x3f')](_0x39364f[_0x65f6('0x19')][_0x138334['id']])){_0x39364f[_0x65f6('0x19')][_0x138334['id']]=new SugarcrmAccount(_0x138334);}else{_0x39364f[_0x65f6('0x3a')](_0x39364f[_0x65f6('0x19')][_0x138334['id']],_0x138334);}}}return _0x39364f['sugarcrmAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x47')]=function(){var _0x42a805=this;return function(_0x4b4efe){if(_0x4b4efe){freeIsNotKey(_0x4b4efe,_0x42a805[_0x65f6('0x1d')],'id');for(var _0x16dec0=0x0,_0x4638c9={};_0x16dec0<_0x4b4efe[_0x65f6('0x3d')];_0x16dec0+=0x1){_0x4638c9=_0x4b4efe[_0x16dec0];if(_['isUndefined'](_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']])){_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']]=new VtigerAccount(_0x4638c9);}else{_0x42a805[_0x65f6('0x3a')](_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']],_0x4638c9);}}}return _0x42a805['vtigerAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x48')]=function(){var _0x5c55e4=this;return function(_0x28682b){if(_0x28682b){freeIsNotKey(_0x28682b,_0x5c55e4[_0x65f6('0x1e')],'id');for(var _0x36c316=0x0,_0x51549d={};_0x36c316<_0x28682b[_0x65f6('0x3d')];_0x36c316+=0x1){_0x51549d=_0x28682b[_0x36c316];if(_[_0x65f6('0x3f')](_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']])){_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']]=new ServicenowAccount(_0x51549d);}else{_0x5c55e4[_0x65f6('0x3a')](_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']],_0x51549d);}}}return _0x5c55e4['servicenowAccounts'];};};Realtime['prototype']['initDynamics365Accounts']=function(){var _0x336a7d=this;return function(_0x367d95){if(_0x367d95){freeIsNotKey(_0x367d95,_0x336a7d[_0x65f6('0x1f')],'id');for(var _0x471bec=0x0,_0xab6f0={};_0x471bec<_0x367d95[_0x65f6('0x3d')];_0x471bec+=0x1){_0xab6f0=_0x367d95[_0x471bec];if(_['isUndefined'](_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']])){_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']]=new Dynamics365Account(_0xab6f0);}else{_0x336a7d['mergeFromDatabase'](_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']],_0xab6f0);}}}return _0x336a7d[_0x65f6('0x1f')];};};Realtime[_0x65f6('0x39')]['initFreshsalesAccounts']=function(){var _0x23c441=this;return function(_0x448c9a){if(_0x448c9a){freeIsNotKey(_0x448c9a,_0x23c441['freshsalesAccounts'],'id');for(var _0x271d76=0x0,_0x3edc6b={};_0x271d76<_0x448c9a[_0x65f6('0x3d')];_0x271d76+=0x1){_0x3edc6b=_0x448c9a[_0x271d76];if(_[_0x65f6('0x3f')](_0x23c441[_0x65f6('0x49')][_0x3edc6b['id']])){_0x23c441[_0x65f6('0x49')][_0x3edc6b['id']]=new FreshsalesAccount(_0x3edc6b);}else{_0x23c441[_0x65f6('0x3a')](_0x23c441['freshsalesAccounts'][_0x3edc6b['id']],_0x3edc6b);}}}return _0x23c441['freshsalesAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x4a')]=function(){var _0x4a9524=this;return function(_0x417ba5){for(var _0x5f3df9=0x0;_0x5f3df9<_0x417ba5[_0x65f6('0x3d')];_0x5f3df9+=0x1){_['merge'](_0x4a9524[_0x65f6('0x11')][_0x417ba5[_0x5f3df9][_0x65f6('0x3e')]],_0x417ba5[_0x5f3df9]);}return _0x4a9524[_0x65f6('0x11')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x4b')]=function(){var _0x264e6c=this;return function(_0x1aaf75){clearVoiceQueues(_0x264e6c[_0x65f6('0x11')]);if(_0x1aaf75){_0x1aaf75=_[_0x65f6('0x4c')](_0x1aaf75,'uniqueid');for(var _0x480190 in _0x1aaf75){if(_0x1aaf75[_0x65f6('0x22')](_0x480190)){for(var _0x13ee4b=0x0;_0x13ee4b<_0x1aaf75[_0x480190][_0x65f6('0x3d')];_0x13ee4b+=0x1){var _0x51497f=_0x1aaf75[_0x480190][_0x13ee4b]['queue'];if(_0x264e6c[_0x65f6('0x11')][_0x51497f]){if(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4d')]){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x2c')]+=0x1;}if(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4e')]){_0x264e6c[_0x65f6('0x11')][_0x51497f]['abandoned']+=0x1;}_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x28')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4f')])['diff'](moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x50')]),'seconds')||0x0;if(_0x13ee4b===_0x1aaf75[_0x480190][_0x65f6('0x3d')]-0x1){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x51')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x52')]||_0x1aaf75[_0x480190][_0x13ee4b]['queuecallerabandonAt']||_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x53')])[_0x65f6('0x54')](moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x50')]),'seconds')||0x0;_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x26')]+=0x1;if(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallercomplete']){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x27')]+=0x1;_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x29')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallercompleteAt'])['diff'](moment(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallerleaveAt']),_0x65f6('0x55'))||0x0;}}else{_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x51')]+=_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x28')]||0x0;}}}}}}return _0x264e6c[_0x65f6('0x11')];};};Realtime[_0x65f6('0x39')]['initVoiceCallReports']=function(){var _0x40d0f7=this;return function(_0x15809e){clearVoiceCallReports(_0x40d0f7['outbound']);if(_0x15809e){for(var _0x758e80=0x0;_0x758e80<_0x15809e[_0x65f6('0x3d')];_0x758e80+=0x1){_0x40d0f7['outbound'][_0x65f6('0x26')]+=0x1;_0x40d0f7['outbound'][_0x65f6('0x51')]+=_0x15809e[_0x758e80]['duration'];if(_0x15809e[_0x758e80][_0x65f6('0x56')]===_0x65f6('0x57')){_0x40d0f7['outbound'][_0x65f6('0x27')]+=0x1;_0x40d0f7[_0x65f6('0x58')][_0x65f6('0x28')]+=_0x15809e[_0x758e80][_0x65f6('0x59')]-_0x15809e[_0x758e80][_0x65f6('0x5a')]||0x0;_0x40d0f7[_0x65f6('0x58')][_0x65f6('0x29')]+=_0x15809e[_0x758e80][_0x65f6('0x5a')];}}}return _0x40d0f7[_0x65f6('0x58')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x5b')]=function(){var _0x574d84=this;return function(_0x10a661){if(_0x10a661){freeIsNotKey(_0x10a661,_0x574d84[_0x65f6('0x5c')],_0x65f6('0x3e'));for(var _0x219e42=0x0,_0x5694f9={};_0x219e42<_0x10a661[_0x65f6('0x3d')];_0x219e42+=0x1){_0x5694f9=_0x10a661[_0x219e42];if(_[_0x65f6('0x3f')](_0x574d84['campaigns'][_0x5694f9[_0x65f6('0x3e')]])){_0x574d84['campaigns'][_0x5694f9[_0x65f6('0x3e')]]=new Campaign(_0x5694f9);}else{_0x574d84['mergeFromDatabase'](_0x574d84[_0x65f6('0x5c')][_0x5694f9[_0x65f6('0x3e')]],_0x5694f9);_0x574d84['campaigns'][_0x5694f9['name']][_0x65f6('0x5d')]=_0x5694f9[_0x65f6('0x5e')]?_0x5694f9['SquareProject'][_0x65f6('0x3e')]:undefined;}}}return _0x574d84[_0x65f6('0x5c')];};};Realtime[_0x65f6('0x39')]['initVoiceExtensions']=function(){var _0x1348ec=this;return function(_0x246510){if(_0x246510){freeIsNotKey(_0x246510,_0x1348ec['voiceExtensions'],'id');for(var _0x36b8de=0x0,_0x504b39={};_0x36b8de<_0x246510[_0x65f6('0x3d')];_0x36b8de+=0x1){_0x504b39=_0x246510[_0x36b8de];if(_['isUndefined'](_0x1348ec['voiceExtensions'][_0x504b39['id']])){_0x1348ec[_0x65f6('0x5f')][_0x504b39['id']]=new VoiceExtension(_0x504b39);}else{_0x1348ec[_0x65f6('0x3a')](_0x1348ec[_0x65f6('0x5f')][_0x504b39['id']],_0x504b39);}}}return _0x1348ec[_0x65f6('0x5f')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x60')]=function(){var _0x1ac46f=this;return function(_0x1f4e2c){clearCampaigns(_0x1ac46f['campaigns']);for(var _0x494904=0x0;_0x494904<_0x1f4e2c[_0x65f6('0x3d')];_0x494904+=0x1){_['merge'](_0x1ac46f[_0x65f6('0x5c')][_0x1f4e2c[_0x494904][_0x65f6('0x3e')]],_0x1f4e2c[_0x494904]);}return _0x1ac46f[_0x65f6('0x5c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x61')]=function(){var _0x56bd9d=this;return function(_0x398cac){if(_0x398cac){freeIsNotKey(_0x398cac,_0x56bd9d[_0x65f6('0x20')],'id');for(var _0x14c908=0x0,_0x576ecd={};_0x14c908<_0x398cac[_0x65f6('0x3d')];_0x14c908+=0x1){_0x576ecd=_0x398cac[_0x14c908];if(_[_0x65f6('0x3f')](_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']])){_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']]=new FaxAccount(_0x576ecd);}else{_0x56bd9d[_0x65f6('0x3a')](_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']],_0x576ecd);}}}return _0x56bd9d['faxAccounts'];};};Realtime['prototype'][_0x65f6('0x62')]=function(){var _0x10d744=this;return function(_0x10c916){if(_0x10c916){freeIsNotKey(_0x10c916,_0x10d744[_0x65f6('0x11')],'name');for(var _0x4bda86=0x0,_0x336076={};_0x4bda86<_0x10c916[_0x65f6('0x3d')];_0x4bda86+=0x1){_0x336076=_0x10c916[_0x4bda86];if(_[_0x65f6('0x3f')](_0x10d744[_0x65f6('0x11')][_0x336076[_0x65f6('0x3e')]])){_0x10d744[_0x65f6('0x11')][_0x336076['name']]=new VoiceQueue(_0x336076);}else{_0x10d744['mergeFromDatabase'](_0x10d744['voiceQueues'][_0x336076[_0x65f6('0x3e')]],_0x336076);}}}return _0x10d744[_0x65f6('0x11')];};};module[_0x65f6('0x63')]=Realtime;
\ No newline at end of file
+var _0xdb28=['initTriggers','triggers','initTemplates','initZendeskAccounts','zendeskAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','groupBy','uniqueid','queuecallerexit','queuecallerabandon','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','diff','queuecallercomplete','queuecallerleaveAt','initVoiceCallReports','outbound','duration','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initVoiceQueues','exports','lodash','moment','util','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','telephones','trunks','voiceQueues','campaigns','templates','voiceExtensions','channels','queueChannels','outboundChannels','timers','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','sumDuration','sumBillable','isEmpty','ivrAnswerCallsDay','total','answered','unmanaged','abandoned','sumHoldTime','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','agents','length','isUndefined','mergeFromDatabase','initTelephones','initTrunks'];(function(_0x4e62c5,_0x4a4406){var _0x5e6d1d=function(_0x17e6ea){while(--_0x17e6ea){_0x4e62c5['push'](_0x4e62c5['shift']());}};_0x5e6d1d(++_0x4a4406);}(_0xdb28,0x106));var _0x8db2=function(_0x45e03c,_0x58c388){_0x45e03c=_0x45e03c-0x0;var _0x30eb78=_0xdb28[_0x45e03c];return _0x30eb78;};'use strict';var _=require(_0x8db2('0x0'));var moment=require(_0x8db2('0x1'));var util=require(_0x8db2('0x2'));var Agent=require(_0x8db2('0x3'));var Telephone=require('../model/telephone');var Trunk=require(_0x8db2('0x4'));var VoiceQueue=require(_0x8db2('0x5'));var Trigger=require(_0x8db2('0x6'));var Template=require(_0x8db2('0x7'));var Campaign=require(_0x8db2('0x8'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x8db2('0x9'));var SalesforceAccount=require(_0x8db2('0xa'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x8db2('0xb'));var DeskAccount=require(_0x8db2('0xc'));var VtigerAccount=require(_0x8db2('0xd'));var ServicenowAccount=require(_0x8db2('0xe'));var Dynamics365Account=require(_0x8db2('0xf'));var FreshsalesAccount=require(_0x8db2('0x10'));var FaxAccount=require(_0x8db2('0x11'));function Realtime(){this['agents']={};this[_0x8db2('0x12')]={};this[_0x8db2('0x13')]={};this[_0x8db2('0x14')]={};this['triggers']={};this[_0x8db2('0x15')]={};this[_0x8db2('0x16')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x8db2('0x17')]={};this[_0x8db2('0x18')]={};this[_0x8db2('0x19')]={};this[_0x8db2('0x1a')]={};this[_0x8db2('0x1b')]={};this['settings']={};this['zendeskAccounts']={};this[_0x8db2('0x1c')]={};this[_0x8db2('0x1d')]={};this[_0x8db2('0x1e')]={};this[_0x8db2('0x1f')]={};this[_0x8db2('0x20')]={};this[_0x8db2('0x21')]={};this[_0x8db2('0x22')]={};this[_0x8db2('0x23')]={};this[_0x8db2('0x24')]={};this[_0x8db2('0x25')]={};}function freeIsNotKey(_0x5489a9,_0x13b0f5,_0x24da1b){var _0x48101e=_[_0x8db2('0x26')](_0x5489a9,function(_0x44957d){return _0x44957d[_0x24da1b];});for(var _0x21db8c in _0x13b0f5){if(_0x13b0f5[_0x8db2('0x27')](_0x21db8c)){if(!_0x48101e[_0x21db8c]){delete _0x13b0f5[_0x21db8c];}}}}function freeIsNotKeySip(_0x2efd06,_0x46ce14){var _0x51d60d=_['mapKeys'](_0x2efd06,function(_0x77789){return util[_0x8db2('0x28')](_0x8db2('0x29'),_0x77789[_0x8db2('0x2a')]);});for(var _0x58562e in _0x46ce14){if(_0x46ce14[_0x8db2('0x27')](_0x58562e)){if(!_0x51d60d[_0x58562e]){delete _0x46ce14[_0x58562e];}}}}function freeIsNotKeyAgent(_0x36a9ff,_0x260940){var _0x297ba3=_[_0x8db2('0x26')](_0x36a9ff,function(_0x597260){var _0x124467=_[_0x8db2('0x2b')](_0x597260[_0x8db2('0x2c')])?util[_0x8db2('0x28')](_0x8db2('0x29'),_0x597260[_0x8db2('0x2a')]):_0x597260[_0x8db2('0x2c')];return _0x124467;});for(var _0x5c6614 in _0x260940){if(_0x260940[_0x8db2('0x27')](_0x5c6614)){if(!_0x297ba3[_0x5c6614]){delete _0x260940[_0x5c6614];}}}}function clearVoiceCallReports(_0x4f6516){_0x4f6516['total']=0x0;_0x4f6516['answered']=0x0;_0x4f6516['sumHoldTime']=0x0;_0x4f6516[_0x8db2('0x2d')]=0x0;_0x4f6516[_0x8db2('0x2e')]=0x0;}function clearCampaigns(_0x3be281){if(!_[_0x8db2('0x2f')](_0x3be281)){for(var _0x145328 in _0x3be281){if(_0x3be281[_0x8db2('0x27')](_0x145328)){_0x3be281[_0x145328]['ivrTotalCallsDays']=0x0;_0x3be281[_0x145328][_0x8db2('0x30')]=0x0;}}}}function clearVoiceQueues(_0x372311){if(!_[_0x8db2('0x2f')](_0x372311)){for(var _0x8b7cec in _0x372311){if(_0x372311['hasOwnProperty'](_0x8b7cec)){_0x372311[_0x8b7cec][_0x8db2('0x31')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x32')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x33')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x34')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x35')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x2d')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x2e')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x36')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x37')]=0x0;_0x372311[_0x8b7cec]['outboundBusyCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x38')]=0x0;_0x372311[_0x8b7cec]['outboundNoSuchCallsDay']=0x0;_0x372311[_0x8b7cec]['outboundUnknownCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x39')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3a')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3b')]=0x0;_0x372311[_0x8b7cec]['outboundOriginateFailureCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3c')]=0x0;_0x372311[_0x8b7cec]['outboundReCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x36')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3d')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3e')]=!![];}}}}Realtime['prototype']['mergeFromDatabase']=function(_0x35d337,_0x1a460b){for(var _0x4df530 in _0x1a460b){if(_0x35d337['hasOwnProperty'](_0x4df530)){_0x35d337[_0x4df530]=_0x1a460b[_0x4df530];}}};Realtime[_0x8db2('0x3f')][_0x8db2('0x40')]=function(){var _0xc884a=this;return function(_0x2a2d65){if(_0x2a2d65){freeIsNotKeyAgent(_0x2a2d65,_0xc884a[_0x8db2('0x41')]);for(var _0xd39848=0x0,_0x101711={};_0xd39848<_0x2a2d65[_0x8db2('0x42')];_0xd39848+=0x1){_0x101711=_0x2a2d65[_0xd39848];var _0x46e0c8=_[_0x8db2('0x2b')](_0x101711['interface'])?util[_0x8db2('0x28')](_0x8db2('0x29'),_0x101711['name']):_0x101711[_0x8db2('0x2c')];if(_[_0x8db2('0x43')](_0xc884a['agents'][_0x46e0c8])){_0xc884a['agents'][_0x46e0c8]=new Agent(_0x101711);}else{_0xc884a[_0x8db2('0x44')](_0xc884a['agents'][_0x46e0c8],_0x101711);}}}return _0xc884a[_0x8db2('0x41')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x45')]=function(){var _0x22c896=this;return function(_0x5cc419){if(_0x5cc419){freeIsNotKeySip(_0x5cc419,_0x22c896[_0x8db2('0x12')]);for(var _0x5e34e0=0x0,_0x227a08={};_0x5e34e0<_0x5cc419[_0x8db2('0x42')];_0x5e34e0+=0x1){_0x227a08=_0x5cc419[_0x5e34e0];if(_[_0x8db2('0x43')](_0x22c896[_0x8db2('0x12')][util['format']('SIP/%s',_0x227a08[_0x8db2('0x2a')])])){_0x22c896[_0x8db2('0x12')][util['format'](_0x8db2('0x29'),_0x227a08[_0x8db2('0x2a')])]=new Telephone(_0x227a08);}else{_0x22c896[_0x8db2('0x44')](_0x22c896['telephones'][util[_0x8db2('0x28')](_0x8db2('0x29'),_0x227a08[_0x8db2('0x2a')])],_0x227a08);}}}return _0x22c896[_0x8db2('0x12')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x46')]=function(){var _0x380046=this;return function(_0x1575ea){if(_0x1575ea){freeIsNotKeySip(_0x1575ea,_0x380046[_0x8db2('0x13')]);for(var _0x63c561=0x0,_0x21cf7c={};_0x63c561<_0x1575ea[_0x8db2('0x42')];_0x63c561+=0x1){_0x21cf7c=_0x1575ea[_0x63c561];if(_[_0x8db2('0x43')](_0x380046['trunks'][util[_0x8db2('0x28')](_0x8db2('0x29'),_0x21cf7c['name'])])){_0x380046['trunks'][util[_0x8db2('0x28')]('SIP/%s',_0x21cf7c[_0x8db2('0x2a')])]=new Trunk(_0x21cf7c);}else{_0x380046[_0x8db2('0x44')](_0x380046[_0x8db2('0x13')][util[_0x8db2('0x28')](_0x8db2('0x29'),_0x21cf7c[_0x8db2('0x2a')])],_0x21cf7c);}}}return _0x380046[_0x8db2('0x13')];};};Realtime['prototype'][_0x8db2('0x47')]=function(){var _0x3d44de=this;return function(_0x40c69e){if(_0x40c69e){freeIsNotKey(_0x40c69e,_0x3d44de[_0x8db2('0x48')],'id');for(var _0x482b26=0x0,_0x424c27={};_0x482b26<_0x40c69e[_0x8db2('0x42')];_0x482b26+=0x1){_0x424c27=_0x40c69e[_0x482b26];if(_[_0x8db2('0x43')](_0x3d44de[_0x8db2('0x48')][_0x424c27['id']])){_0x3d44de['triggers'][_0x424c27['id']]=new Trigger(_0x424c27);}else{_0x3d44de[_0x8db2('0x44')](_0x3d44de['triggers'][_0x424c27['id']],_0x424c27);}}}return _0x3d44de[_0x8db2('0x48')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x49')]=function(){var _0x4d2164=this;return function(_0x4b0e72){if(_0x4b0e72){freeIsNotKey(_0x4b0e72,_0x4d2164[_0x8db2('0x16')],'id');for(var _0x47c556=0x0,_0x173cc7={};_0x47c556<_0x4b0e72[_0x8db2('0x42')];_0x47c556+=0x1){_0x173cc7=_0x4b0e72[_0x47c556];if(_[_0x8db2('0x43')](_0x4d2164[_0x8db2('0x16')][_0x173cc7['id']])){_0x4d2164[_0x8db2('0x16')][_0x173cc7['id']]=new Template(_0x173cc7);}else{_0x4d2164[_0x8db2('0x44')](_0x4d2164[_0x8db2('0x16')][_0x173cc7['id']],_0x173cc7);}}}return _0x4d2164[_0x8db2('0x16')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4a')]=function(){var _0x1362ed=this;return function(_0x36f9d6){if(_0x36f9d6){freeIsNotKey(_0x36f9d6,_0x1362ed['zendeskAccounts'],'id');for(var _0x449109=0x0,_0x2ada52={};_0x449109<_0x36f9d6[_0x8db2('0x42')];_0x449109+=0x1){_0x2ada52=_0x36f9d6[_0x449109];if(_[_0x8db2('0x43')](_0x1362ed['zendeskAccounts'][_0x2ada52['id']])){_0x1362ed['zendeskAccounts'][_0x2ada52['id']]=new ZendeskAccount(_0x2ada52);}else{_0x1362ed[_0x8db2('0x44')](_0x1362ed[_0x8db2('0x4b')][_0x2ada52['id']],_0x2ada52);}}}return _0x1362ed[_0x8db2('0x4b')];};};Realtime['prototype']['initSalesforceAccounts']=function(){var _0x494d6e=this;return function(_0x44ac56){if(_0x44ac56){freeIsNotKey(_0x44ac56,_0x494d6e[_0x8db2('0x1c')],'id');for(var _0x55c7dd=0x0,_0x383fa1={};_0x55c7dd<_0x44ac56[_0x8db2('0x42')];_0x55c7dd+=0x1){_0x383fa1=_0x44ac56[_0x55c7dd];if(_[_0x8db2('0x43')](_0x494d6e[_0x8db2('0x1c')][_0x383fa1['id']])){_0x494d6e['salesforceAccounts'][_0x383fa1['id']]=new SalesforceAccount(_0x383fa1);}else{_0x494d6e['mergeFromDatabase'](_0x494d6e[_0x8db2('0x1c')][_0x383fa1['id']],_0x383fa1);}}}return _0x494d6e[_0x8db2('0x1c')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4c')]=function(){var _0x3daed6=this;return function(_0x2bf408){if(_0x2bf408){freeIsNotKey(_0x2bf408,_0x3daed6[_0x8db2('0x1e')],'id');for(var _0x3ca2a7=0x0,_0x4187d6={};_0x3ca2a7<_0x2bf408[_0x8db2('0x42')];_0x3ca2a7+=0x1){_0x4187d6=_0x2bf408[_0x3ca2a7];if(_[_0x8db2('0x43')](_0x3daed6[_0x8db2('0x1e')][_0x4187d6['id']])){_0x3daed6[_0x8db2('0x1e')][_0x4187d6['id']]=new FreshdeskAccount(_0x4187d6);}else{_0x3daed6[_0x8db2('0x44')](_0x3daed6[_0x8db2('0x1e')][_0x4187d6['id']],_0x4187d6);}}}return _0x3daed6['freshdeskAccounts'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4d')]=function(){var _0x579317=this;return function(_0x27b644){if(_0x27b644){freeIsNotKey(_0x27b644,_0x579317[_0x8db2('0x1f')],'id');for(var _0x3af298=0x0,_0x547215={};_0x3af298<_0x27b644[_0x8db2('0x42')];_0x3af298+=0x1){_0x547215=_0x27b644[_0x3af298];if(_[_0x8db2('0x43')](_0x579317[_0x8db2('0x1f')][_0x547215['id']])){_0x579317[_0x8db2('0x1f')][_0x547215['id']]=new ZohoAccount(_0x547215);}else{_0x579317[_0x8db2('0x44')](_0x579317['zohoAccounts'][_0x547215['id']],_0x547215);}}}return _0x579317[_0x8db2('0x1f')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4e')]=function(){var _0x58bb60=this;return function(_0x1e7d1a){if(_0x1e7d1a){freeIsNotKey(_0x1e7d1a,_0x58bb60[_0x8db2('0x20')],'id');for(var _0x33dddd=0x0,_0x7b0de8={};_0x33dddd<_0x1e7d1a[_0x8db2('0x42')];_0x33dddd+=0x1){_0x7b0de8=_0x1e7d1a[_0x33dddd];if(_[_0x8db2('0x43')](_0x58bb60[_0x8db2('0x20')][_0x7b0de8['id']])){_0x58bb60['deskAccounts'][_0x7b0de8['id']]=new DeskAccount(_0x7b0de8);}else{_0x58bb60[_0x8db2('0x44')](_0x58bb60[_0x8db2('0x20')][_0x7b0de8['id']],_0x7b0de8);}}}return _0x58bb60['deskAccounts'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4f')]=function(){var _0x533e41=this;return function(_0x107bbe){if(_0x107bbe){freeIsNotKey(_0x107bbe,_0x533e41[_0x8db2('0x1d')],'id');for(var _0x63e8f7=0x0,_0x30f4f3={};_0x63e8f7<_0x107bbe[_0x8db2('0x42')];_0x63e8f7+=0x1){_0x30f4f3=_0x107bbe[_0x63e8f7];if(_[_0x8db2('0x43')](_0x533e41[_0x8db2('0x1d')][_0x30f4f3['id']])){_0x533e41[_0x8db2('0x1d')][_0x30f4f3['id']]=new SugarcrmAccount(_0x30f4f3);}else{_0x533e41[_0x8db2('0x44')](_0x533e41[_0x8db2('0x1d')][_0x30f4f3['id']],_0x30f4f3);}}}return _0x533e41[_0x8db2('0x1d')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x50')]=function(){var _0x1ce89f=this;return function(_0x64ec90){if(_0x64ec90){freeIsNotKey(_0x64ec90,_0x1ce89f[_0x8db2('0x21')],'id');for(var _0x4a20a7=0x0,_0xe0c3e={};_0x4a20a7<_0x64ec90[_0x8db2('0x42')];_0x4a20a7+=0x1){_0xe0c3e=_0x64ec90[_0x4a20a7];if(_[_0x8db2('0x43')](_0x1ce89f[_0x8db2('0x21')][_0xe0c3e['id']])){_0x1ce89f[_0x8db2('0x21')][_0xe0c3e['id']]=new VtigerAccount(_0xe0c3e);}else{_0x1ce89f['mergeFromDatabase'](_0x1ce89f[_0x8db2('0x21')][_0xe0c3e['id']],_0xe0c3e);}}}return _0x1ce89f[_0x8db2('0x21')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x51')]=function(){var _0x2ad70f=this;return function(_0x348da8){if(_0x348da8){freeIsNotKey(_0x348da8,_0x2ad70f[_0x8db2('0x22')],'id');for(var _0x2c7b04=0x0,_0x24cfe9={};_0x2c7b04<_0x348da8[_0x8db2('0x42')];_0x2c7b04+=0x1){_0x24cfe9=_0x348da8[_0x2c7b04];if(_[_0x8db2('0x43')](_0x2ad70f[_0x8db2('0x22')][_0x24cfe9['id']])){_0x2ad70f[_0x8db2('0x22')][_0x24cfe9['id']]=new ServicenowAccount(_0x24cfe9);}else{_0x2ad70f[_0x8db2('0x44')](_0x2ad70f[_0x8db2('0x22')][_0x24cfe9['id']],_0x24cfe9);}}}return _0x2ad70f[_0x8db2('0x22')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x52')]=function(){var _0x5a719f=this;return function(_0x3273dd){if(_0x3273dd){freeIsNotKey(_0x3273dd,_0x5a719f['dynamics365Accounts'],'id');for(var _0x364176=0x0,_0x570c53={};_0x364176<_0x3273dd[_0x8db2('0x42')];_0x364176+=0x1){_0x570c53=_0x3273dd[_0x364176];if(_[_0x8db2('0x43')](_0x5a719f[_0x8db2('0x23')][_0x570c53['id']])){_0x5a719f[_0x8db2('0x23')][_0x570c53['id']]=new Dynamics365Account(_0x570c53);}else{_0x5a719f[_0x8db2('0x44')](_0x5a719f['dynamics365Accounts'][_0x570c53['id']],_0x570c53);}}}return _0x5a719f['dynamics365Accounts'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x53')]=function(){var _0x21ec87=this;return function(_0x3ba1d2){if(_0x3ba1d2){freeIsNotKey(_0x3ba1d2,_0x21ec87[_0x8db2('0x24')],'id');for(var _0x1f28d2=0x0,_0x3e3de3={};_0x1f28d2<_0x3ba1d2[_0x8db2('0x42')];_0x1f28d2+=0x1){_0x3e3de3=_0x3ba1d2[_0x1f28d2];if(_['isUndefined'](_0x21ec87[_0x8db2('0x24')][_0x3e3de3['id']])){_0x21ec87[_0x8db2('0x24')][_0x3e3de3['id']]=new FreshsalesAccount(_0x3e3de3);}else{_0x21ec87[_0x8db2('0x44')](_0x21ec87[_0x8db2('0x24')][_0x3e3de3['id']],_0x3e3de3);}}}return _0x21ec87[_0x8db2('0x24')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x54')]=function(){var _0x20caf0=this;return function(_0x4938bb){for(var _0x54318c=0x0;_0x54318c<_0x4938bb[_0x8db2('0x42')];_0x54318c+=0x1){_[_0x8db2('0x55')](_0x20caf0[_0x8db2('0x14')][_0x4938bb[_0x54318c][_0x8db2('0x2a')]],_0x4938bb[_0x54318c]);}return _0x20caf0[_0x8db2('0x14')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x3611da=this;return function(_0x364807){clearVoiceQueues(_0x3611da['voiceQueues']);if(_0x364807){_0x364807=_[_0x8db2('0x56')](_0x364807,_0x8db2('0x57'));for(var _0x1ab84c in _0x364807){if(_0x364807['hasOwnProperty'](_0x1ab84c)){for(var _0x26523b=0x0;_0x26523b<_0x364807[_0x1ab84c][_0x8db2('0x42')];_0x26523b+=0x1){var _0x2cf731=_0x364807[_0x1ab84c][_0x26523b]['queue'];if(_0x3611da[_0x8db2('0x14')][_0x2cf731]){if(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x58')]){_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x33')]+=0x1;}if(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x59')]){_0x3611da['voiceQueues'][_0x2cf731][_0x8db2('0x34')]+=0x1;}_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x35')]+=moment(_0x364807[_0x1ab84c][_0x26523b]['queuecallerleaveAt'])['diff'](moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5a')]),_0x8db2('0x5b'))||0x0;if(_0x26523b===_0x364807[_0x1ab84c]['length']-0x1){_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x2d')]+=moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5c')]||_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5d')]||_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5e')])[_0x8db2('0x5f')](moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5a')]),_0x8db2('0x5b'))||0x0;_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x31')]+=0x1;if(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x60')]){_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x32')]+=0x1;_0x3611da['voiceQueues'][_0x2cf731][_0x8db2('0x2e')]+=moment(_0x364807[_0x1ab84c][_0x26523b]['queuecallercompleteAt'])[_0x8db2('0x5f')](moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x61')]),'seconds')||0x0;}}else{_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x2d')]+=_0x3611da['voiceQueues'][_0x2cf731][_0x8db2('0x35')]||0x0;}}}}}}return _0x3611da[_0x8db2('0x14')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x62')]=function(){var _0x242379=this;return function(_0x31a095){clearVoiceCallReports(_0x242379[_0x8db2('0x63')]);if(_0x31a095){for(var _0x3ac0fa=0x0;_0x3ac0fa<_0x31a095[_0x8db2('0x42')];_0x3ac0fa+=0x1){_0x242379['outbound']['total']+=0x1;_0x242379[_0x8db2('0x63')]['sumDuration']+=_0x31a095[_0x3ac0fa][_0x8db2('0x64')];if(_0x31a095[_0x3ac0fa][_0x8db2('0x65')]===_0x8db2('0x66')){_0x242379['outbound'][_0x8db2('0x32')]+=0x1;_0x242379[_0x8db2('0x63')][_0x8db2('0x35')]+=_0x31a095[_0x3ac0fa]['duration']-_0x31a095[_0x3ac0fa][_0x8db2('0x67')]||0x0;_0x242379[_0x8db2('0x63')][_0x8db2('0x2e')]+=_0x31a095[_0x3ac0fa][_0x8db2('0x67')];}}}return _0x242379['outbound'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x68')]=function(){var _0x299640=this;return function(_0x1edb1a){if(_0x1edb1a){freeIsNotKey(_0x1edb1a,_0x299640[_0x8db2('0x15')],_0x8db2('0x2a'));for(var _0x1aadfb=0x0,_0x3682bf={};_0x1aadfb<_0x1edb1a[_0x8db2('0x42')];_0x1aadfb+=0x1){_0x3682bf=_0x1edb1a[_0x1aadfb];if(_[_0x8db2('0x43')](_0x299640[_0x8db2('0x15')][_0x3682bf['name']])){_0x299640[_0x8db2('0x15')][_0x3682bf[_0x8db2('0x2a')]]=new Campaign(_0x3682bf);}else{_0x299640[_0x8db2('0x44')](_0x299640['campaigns'][_0x3682bf['name']],_0x3682bf);_0x299640['campaigns'][_0x3682bf[_0x8db2('0x2a')]][_0x8db2('0x69')]=_0x3682bf[_0x8db2('0x6a')]?_0x3682bf[_0x8db2('0x6a')][_0x8db2('0x2a')]:undefined;}}}return _0x299640[_0x8db2('0x15')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x6b')]=function(){var _0x3b1929=this;return function(_0x37cf6d){if(_0x37cf6d){freeIsNotKey(_0x37cf6d,_0x3b1929[_0x8db2('0x17')],'id');for(var _0x4d0ff6=0x0,_0x360a06={};_0x4d0ff6<_0x37cf6d[_0x8db2('0x42')];_0x4d0ff6+=0x1){_0x360a06=_0x37cf6d[_0x4d0ff6];if(_[_0x8db2('0x43')](_0x3b1929[_0x8db2('0x17')][_0x360a06['id']])){_0x3b1929['voiceExtensions'][_0x360a06['id']]=new VoiceExtension(_0x360a06);}else{_0x3b1929['mergeFromDatabase'](_0x3b1929[_0x8db2('0x17')][_0x360a06['id']],_0x360a06);}}}return _0x3b1929[_0x8db2('0x17')];};};Realtime['prototype'][_0x8db2('0x6c')]=function(){var _0x121f31=this;return function(_0x9132b4){clearCampaigns(_0x121f31['campaigns']);for(var _0x5dc46c=0x0;_0x5dc46c<_0x9132b4['length'];_0x5dc46c+=0x1){_[_0x8db2('0x55')](_0x121f31[_0x8db2('0x15')][_0x9132b4[_0x5dc46c][_0x8db2('0x2a')]],_0x9132b4[_0x5dc46c]);}return _0x121f31[_0x8db2('0x15')];};};Realtime[_0x8db2('0x3f')]['initFaxAccounts']=function(){var _0x30930a=this;return function(_0x5e349c){if(_0x5e349c){freeIsNotKey(_0x5e349c,_0x30930a[_0x8db2('0x25')],'id');for(var _0x353101=0x0,_0xa083b1={};_0x353101<_0x5e349c[_0x8db2('0x42')];_0x353101+=0x1){_0xa083b1=_0x5e349c[_0x353101];if(_[_0x8db2('0x43')](_0x30930a['faxAccounts'][_0xa083b1['id']])){_0x30930a['faxAccounts'][_0xa083b1['id']]=new FaxAccount(_0xa083b1);}else{_0x30930a[_0x8db2('0x44')](_0x30930a['faxAccounts'][_0xa083b1['id']],_0xa083b1);}}}return _0x30930a[_0x8db2('0x25')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x6d')]=function(){var _0x1e7bc2=this;return function(_0x2b7224){if(_0x2b7224){freeIsNotKey(_0x2b7224,_0x1e7bc2[_0x8db2('0x14')],'name');for(var _0x19f9a0=0x0,_0x222ea2={};_0x19f9a0<_0x2b7224[_0x8db2('0x42')];_0x19f9a0+=0x1){_0x222ea2=_0x2b7224[_0x19f9a0];if(_['isUndefined'](_0x1e7bc2[_0x8db2('0x14')][_0x222ea2[_0x8db2('0x2a')]])){_0x1e7bc2['voiceQueues'][_0x222ea2[_0x8db2('0x2a')]]=new VoiceQueue(_0x222ea2);}else{_0x1e7bc2[_0x8db2('0x44')](_0x1e7bc2[_0x8db2('0x14')][_0x222ea2[_0x8db2('0x2a')]],_0x222ea2);}}}return _0x1e7bc2[_0x8db2('0x14')];};};module[_0x8db2('0x6e')]=Realtime;
\ No newline at end of file
index 42511a1..97f8d28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c6d=['assign','mergeDBDataToRealtime'];(function(_0x550500,_0x8dd443){var _0x113660=function(_0x4d97d3){while(--_0x4d97d3){_0x550500['push'](_0x550500['shift']());}};_0x113660(++_0x8dd443);}(_0x7c6d,0x18e));var _0xd7c6=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0x7c6d[_0x13ce0c];return _0x4388fb;};'use strict';function mergeDBDataToRealtime(_0x2c3bc0,_0xe655f0){var _0x4ce533=Object[_0xd7c6('0x0')]({},_0x2c3bc0);for(var _0x1bc7c9 in _0xe655f0){if(_0x4ce533['hasOwnProperty'](_0x1bc7c9)){_0x4ce533[_0x1bc7c9]=_0xe655f0[_0x1bc7c9];}}return _0x4ce533;}exports[_0xd7c6('0x1')]=mergeDBDataToRealtime;
\ No newline at end of file
+var _0xa9c7=['mergeDBDataToRealtime','assign','hasOwnProperty'];(function(_0x2bea59,_0x566e6a){var _0x17e885=function(_0x39bfcd){while(--_0x39bfcd){_0x2bea59['push'](_0x2bea59['shift']());}};_0x17e885(++_0x566e6a);}(_0xa9c7,0x13f));var _0x7a9c=function(_0x3740fe,_0x6c543c){_0x3740fe=_0x3740fe-0x0;var _0x55492b=_0xa9c7[_0x3740fe];return _0x55492b;};'use strict';function mergeDBDataToRealtime(_0x467650,_0xc6a620){var _0x4bb2ce=Object[_0x7a9c('0x0')]({},_0x467650);for(var _0x534322 in _0xc6a620){if(_0x4bb2ce[_0x7a9c('0x1')](_0x534322)){_0x4bb2ce[_0x534322]=_0xc6a620[_0x534322];}}return _0x4bb2ce;}exports[_0x7a9c('0x2')]=mergeDBDataToRealtime;
\ No newline at end of file
index c0cd3cd..fd7549a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x681c=['uniqueid','blindTransfer','getCallType','UserId','membername','monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','xcally-motion-dialer','isArray','startsWith','Local','indexOf','mobile','phone','substring','lastIndexOf','voiceDialReport','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','blindtransfer','attendedtransfer','attendedTransfer','find','accountcode','name','interface','format','SIP/%s','length','findAgent','connectedlinenum','assigned','lastAssignedTo','isNil','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','getAgentByInternal','keys','split','calleridnum','outbound','internal','destination','exten','type','dialer','queue','lastdata','context','from-voip-provider','from-sip','xcally-motion-preview','calleridpreview','channel','destinationchannel','originatecalleridnum','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid'];(function(_0x40a4ee,_0x515400){var _0x57c3cc=function(_0x4ba215){while(--_0x4ba215){_0x40a4ee['push'](_0x40a4ee['shift']());}};_0x57c3cc(++_0x515400);}(_0x681c,0x138));var _0xc681=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x681c[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require(_0xc681('0x0'));var moment=require(_0xc681('0x1'));var util=require(_0xc681('0x2'));var config=require(_0xc681('0x3'));var ami=require(_0xc681('0x4'));var RpcVoiceAgentReport=require(_0xc681('0x5'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0xc681('0x6'));var RpcMemberReport=require(_0xc681('0x7'));var RpcVoiceQueueReport=require(_0xc681('0x8'));var RpcVoiceRecording=require(_0xc681('0x9'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0xc681('0xa'));var VoiceCallReport=require(_0xc681('0xb'));var VoiceAgentReport=require(_0xc681('0xc'));var VoiceDialReport=require(_0xc681('0xd'));var UserReport=require(_0xc681('0xe'));function Report(_0x26d5e7){this[_0xc681('0xf')]=_0x26d5e7;this[_0xc681('0x10')]=_0x26d5e7[_0xc681('0x10')];this['telephones']=_0x26d5e7['telephones'];}Report[_0xc681('0x11')][_0xc681('0x12')]=function(_0x28b708){var _0x3cad5a=new VoiceQueueReport(this[_0xc681('0xf')]);var _0x5b3536=new VoiceAgentReport(this[_0xc681('0xf')]);var _0x11867f=new VoiceDialReport(this[_0xc681('0xf')]);var _0x18bbff=new VoiceCallReport(this['realtime']);var _0x3ae399=new UserReport(this[_0xc681('0xf')]);if(config[_0xc681('0x13')]&&config['xdr'][_0xc681('0x14')]){ami['on'](_0xc681('0x15'),this[_0xc681('0x16')][_0xc681('0x17')](this));ami['on']('custom:voiceCallReport',this[_0xc681('0x18')][_0xc681('0x17')](this));ami['on'](_0xc681('0x19'),this[_0xc681('0x1a')][_0xc681('0x17')](this));ami['on'](_0xc681('0x1b'),this['voiceDialReport']['bind'](this));ami['on'](_0xc681('0x1c'),this['blindTransfer'][_0xc681('0x17')](this));ami['on'](_0xc681('0x1d'),this[_0xc681('0x1e')][_0xc681('0x17')](this));}};Report[_0xc681('0x11')]['findAgent']=function(_0x31fca9){var _0x480461;_0x480461=_[_0xc681('0x1f')](this[_0xc681('0x10')],function(_0x3692f4){return _0x3692f4[_0xc681('0x20')]==_0x31fca9||_0x3692f4[_0xc681('0x21')]==_0x31fca9;});if(_['isNil'](_0x480461)){var _0x2d950f=_[_0xc681('0x1f')](this['telephones'],function(_0x5a4976){return _0x5a4976[_0xc681('0x20')]==_0x31fca9||_0x5a4976[_0xc681('0x21')]==_0x31fca9;});if(_0x2d950f){_0x480461=_['find'](this[_0xc681('0x10')],function(_0x5b82da){return _0x5b82da[_0xc681('0x22')]==util[_0xc681('0x23')](_0xc681('0x24'),_0x2d950f[_0xc681('0x21')]);});}}return _0x480461;};Report[_0xc681('0x11')]['voiceQueueReport']=function(_0x169da7){for(var _0x49110a=0x0;_0x49110a<_0x169da7[_0xc681('0x25')];_0x49110a+=0x1){var _0x2e71a0=this[_0xc681('0x26')](_0x169da7[_0x49110a][_0xc681('0x27')]);if(_0x2e71a0){_0x169da7[_0x49110a][_0xc681('0x20')]=_0x2e71a0['accountcode'];_0x169da7[_0x49110a][_0xc681('0x28')]=!![];_0x169da7[_0x49110a][_0xc681('0x29')]=_0x2e71a0[_0xc681('0x21')];_0x169da7[_0x49110a][_0xc681('0x22')]=_[_0xc681('0x2a')](_0x2e71a0[_0xc681('0x22')])?util[_0xc681('0x23')](_0xc681('0x24'),_0x2e71a0['name']):_0x2e71a0['interface'];if(_0x169da7[_0x49110a][_0xc681('0x2b')]){_0x169da7[_0x49110a][_0xc681('0x2c')]=moment()[_0xc681('0x23')](_0xc681('0x2d'));}if(_0x169da7[_0x49110a][_0xc681('0x2e')]){_0x169da7[_0x49110a][_0xc681('0x2f')]=moment()['format'](_0xc681('0x2d'));}RpcMemberReport[_0xc681('0x16')](_0x169da7[_0x49110a]);}RpcVoiceQueueReport[_0xc681('0x30')](_0x169da7[_0x49110a]);}};function extractCalleridNumber(_0x498b3d){var _0x137514=_0x498b3d[_0xc681('0x31')](/<(.*?)>/);return _0x137514?_0x137514[0x1]:_0x498b3d;}Report[_0xc681('0x11')][_0xc681('0x32')]=function(_0x45f2e7){for(var _0x24b09e=0x0;_0x24b09e<Object['keys'](this[_0xc681('0x10')])[_0xc681('0x25')];_0x24b09e++){var _0x7517cc=Object[_0xc681('0x33')](this[_0xc681('0x10')])[_0x24b09e];var _0x424ade=this['agents'][_0x7517cc];if(_0x424ade[_0xc681('0x20')]===Number(_0x45f2e7))return _0x424ade;}return null;};Report[_0xc681('0x11')]['getCallType']=function(_0x4d5316){var _0x70e766=_0x4d5316['channel'][_0xc681('0x34')]('-')[0x0];var _0x163611=this[_0xc681('0x10')][_0x70e766];if(!_0x163611)_0x163611=this['getAgentByInternal'](_0x4d5316[_0xc681('0x35')]);return!_0x163611?_0xc681('0x36'):_0xc681('0x37');};Report[_0xc681('0x11')]['voiceCallReport']=function(_0x4a5fbd){_0x4a5fbd[_0xc681('0x38')]=_0x4a5fbd[_0xc681('0x38')]||_0x4a5fbd[_0xc681('0x39')];if(_0x4a5fbd[_0xc681('0x3a')]==_0xc681('0x3b')){_0x4a5fbd['lastapplication']=_0xc681('0x3c');_0x4a5fbd[_0xc681('0x3d')]=_0x4a5fbd[_0xc681('0x3c')];if(_0x4a5fbd[_0xc681('0x3e')]==_0xc681('0x3f')){_0x4a5fbd[_0xc681('0x20')]='';_0x4a5fbd[_0xc681('0x38')]=extractCalleridNumber(_0x4a5fbd['callerid']);}else if(_0x4a5fbd[_0xc681('0x3e')]==_0xc681('0x40')){if(_0x4a5fbd[_0xc681('0x38')]==_0xc681('0x41')){_0x4a5fbd[_0xc681('0x38')]=extractCalleridNumber(_0x4a5fbd[_0xc681('0x42')]);_0x4a5fbd['calleridnum']=_0x4a5fbd['originatecalleridnum'];_0x4a5fbd['destinationchannel']=[_0x4a5fbd[_0xc681('0x43')],_0x4a5fbd['channel']=_0x4a5fbd[_0xc681('0x44')]][0x0];_0x4a5fbd['callerid']=_0x4a5fbd['calleridpreview'];}else{_0x4a5fbd['destination']=_0x4a5fbd[_0xc681('0x35')];_0x4a5fbd[_0xc681('0x35')]=_0x4a5fbd[_0xc681('0x45')];if(_0x4a5fbd['disposition']==_0xc681('0x46')){_0x4a5fbd[_0xc681('0x20')]=_0x4a5fbd[_0xc681('0x27')];}else{_0x4a5fbd[_0xc681('0x20')]='';}}}}else{_0x4a5fbd['callerid']=util[_0xc681('0x23')](_0xc681('0x47'),_0x4a5fbd[_0xc681('0x48')],_0x4a5fbd['calleridnum']);}if(RpcVoiceTransferReport[_0xc681('0x49')][_0x4a5fbd[_0xc681('0x4a')]]){var _0xc382d7=RpcVoiceTransferReport['transfers'][_0x4a5fbd['linkedid']];_0xc382d7[_0xc681('0x4b')]=_0x4a5fbd[_0xc681('0x4c')];RpcVoiceTransferReport[_0xc681('0x4d')](_0xc382d7);delete RpcVoiceTransferReport[_0xc681('0x49')][_0x4a5fbd[_0xc681('0x4a')]];}if(_[_0xc681('0x2a')](_0x4a5fbd[_0xc681('0x3a')])){_0x4a5fbd[_0xc681('0x3a')]=this[_0xc681('0x4e')](_0x4a5fbd);}if(_[_0xc681('0x2a')](_0x4a5fbd[_0xc681('0x4f')])){var _0x1c9235=_0x4a5fbd['channel'][_0xc681('0x34')]('-')[0x0];var _0x54e410=this[_0xc681('0x10')][_0x1c9235];if(!_0x54e410)_0x54e410=this['getAgentByInternal'](_0x4a5fbd[_0xc681('0x20')]);if(_0x54e410){_0x4a5fbd[_0xc681('0x4f')]=_0x54e410['id'];_0x4a5fbd[_0xc681('0x50')]=_0x54e410[_0xc681('0x21')];}}RpcVoiceCallReport[_0xc681('0x30')](_0x4a5fbd);if(_0x4a5fbd[_0xc681('0x51')]){for(var _0x151f93=0x0;_0x151f93<_0x4a5fbd[_0xc681('0x52')][_0xc681('0x25')];_0x151f93+=0x1){_0x4a5fbd[_0xc681('0x53')]=_0x4a5fbd['monitors'][_0x151f93][_0xc681('0x54')];_0x4a5fbd['createdAt']=_0x4a5fbd[_0xc681('0x52')][_0x151f93][_0xc681('0x55')];if(_0x4a5fbd[_0xc681('0x39')]==_0xc681('0x41')){_0x4a5fbd[_0xc681('0x35')]=_0x4a5fbd[_0xc681('0x27')];_0x4a5fbd[_0xc681('0x48')]=_0x4a5fbd[_0xc681('0x56')];_0x4a5fbd[_0xc681('0x27')]=_0x4a5fbd[_0xc681('0x20')];_0x4a5fbd['connectedlinename']=_0x4a5fbd[_0xc681('0x50')];_0x4a5fbd['exten']=_0x4a5fbd[_0xc681('0x45')];}else if(_0x4a5fbd[_0xc681('0x39')]==_0xc681('0x57')){_0x4a5fbd['calleridnum']=_0x4a5fbd[_0xc681('0x38')];_0x4a5fbd['exten']=_0x4a5fbd[_0xc681('0x45')];}RpcVoiceRecording[_0xc681('0x30')](_0x4a5fbd);}}};Report[_0xc681('0x11')][_0xc681('0x1a')]=function(_0x54ad03){if(_[_0xc681('0x58')](_0x54ad03)){_0x54ad03['forEach'](function(_0x36a264){RpcVoiceAgentReport[_0xc681('0x30')](_0x36a264);});}else{RpcVoiceAgentReport[_0xc681('0x30')](_0x54ad03);}};Report[_0xc681('0x11')]['voiceDialReport']=function(_0x2b4fb1){RpcVoiceDialReport[_0xc681('0x30')](_0x2b4fb1);var _0x219b90;var _0x150651;var _0x5590de=_0x2b4fb1[_0xc681('0x43')];if(_[_0xc681('0x59')](_0x5590de,_0xc681('0x5a'))){_0x150651=_0x5590de['substring'](_0x5590de[_0xc681('0x5b')]('/')+0x1,_0x5590de[_0xc681('0x5b')]('@'));_0x219b90=_['find'](this[_0xc681('0x10')],function(_0x2c665b){return _0x2c665b[_0xc681('0x5c')]==_0x150651||_0x2c665b[_0xc681('0x5d')]==_0x150651||_0x2c665b[_0xc681('0x20')]==_0x150651;});}else{_0x150651=_0x5590de[_0xc681('0x5e')](_0x5590de[_0xc681('0x5b')]('/')+0x1,_0x5590de[_0xc681('0x5f')]('-'));_0x219b90=this[_0xc681('0x26')](_0x150651);}if(_0x219b90){_0x2b4fb1[_0xc681('0x22')]=_['isNil'](_0x219b90[_0xc681('0x22')])?util[_0xc681('0x23')](_0xc681('0x24'),_0x219b90[_0xc681('0x21')]):_0x219b90[_0xc681('0x22')];_0x2b4fb1[_0xc681('0x50')]=_0x219b90[_0xc681('0x21')];_0x2b4fb1[_0xc681('0x20')]=_0x219b90[_0xc681('0x20')];RpcMemberReport[_0xc681('0x60')](_0x2b4fb1);}};Report[_0xc681('0x11')][_0xc681('0x4d')]=function(_0x230d8a){RpcVoiceTransferReport[_0xc681('0x49')][_0x230d8a['transfererlinkedid']]=_0x230d8a;};Report[_0xc681('0x11')]['attendedTransfer']=function(_0x5c2ac9){RpcVoiceTransferReport[_0xc681('0x1e')](_0x5c2ac9);};module['exports']=Report;
\ No newline at end of file
+var _0x6ef5=['findAgent','find','accountcode','name','isNil','interface','format','length','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','getAgentByInternal','keys','getCallType','channel','split','internal','exten','type','dialer','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','destination','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','UserId','membername','monitor','filename','createdAt','monitors','connectedlinename','xcally-motion-dialer','forEach','startsWith','Local','indexOf','substring','lastIndexOf','blindTransfer','transfererlinkedid','attendedTransfer','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','attendedtransfer'];(function(_0x16cc06,_0x4c8f27){var _0x41b802=function(_0x4af1f1){while(--_0x4af1f1){_0x16cc06['push'](_0x16cc06['shift']());}};_0x41b802(++_0x4c8f27);}(_0x6ef5,0x9d));var _0x56ef=function(_0x231bed,_0x10e7e5){_0x231bed=_0x231bed-0x0;var _0x3928fb=_0x6ef5[_0x231bed];return _0x3928fb;};'use strict';var _=require(_0x56ef('0x0'));var moment=require(_0x56ef('0x1'));var util=require(_0x56ef('0x2'));var config=require(_0x56ef('0x3'));var ami=require(_0x56ef('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x56ef('0x5'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x56ef('0x6'));var RpcVoiceQueueReport=require(_0x56ef('0x7'));var RpcVoiceRecording=require(_0x56ef('0x8'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x56ef('0x9'));var VoiceCallReport=require(_0x56ef('0xa'));var VoiceAgentReport=require(_0x56ef('0xb'));var VoiceDialReport=require(_0x56ef('0xc'));var UserReport=require(_0x56ef('0xd'));function Report(_0x406905){this[_0x56ef('0xe')]=_0x406905;this[_0x56ef('0xf')]=_0x406905[_0x56ef('0xf')];this['telephones']=_0x406905[_0x56ef('0x10')];}Report[_0x56ef('0x11')][_0x56ef('0x12')]=function(_0x215630){var _0xd05118=new VoiceQueueReport(this['realtime']);var _0x7a73e8=new VoiceAgentReport(this[_0x56ef('0xe')]);var _0x36dc1b=new VoiceDialReport(this[_0x56ef('0xe')]);var _0x4d8867=new VoiceCallReport(this['realtime']);var _0xc3486d=new UserReport(this[_0x56ef('0xe')]);if(config[_0x56ef('0x13')]&&config[_0x56ef('0x13')]['disabled']){ami['on'](_0x56ef('0x14'),this[_0x56ef('0x15')][_0x56ef('0x16')](this));ami['on']('custom:voiceCallReport',this[_0x56ef('0x17')][_0x56ef('0x16')](this));ami['on']('custom:voiceAgentReport',this[_0x56ef('0x18')][_0x56ef('0x16')](this));ami['on'](_0x56ef('0x19'),this[_0x56ef('0x1a')][_0x56ef('0x16')](this));ami['on'](_0x56ef('0x1b'),this['blindTransfer'][_0x56ef('0x16')](this));ami['on'](_0x56ef('0x1c'),this['attendedTransfer'][_0x56ef('0x16')](this));}};Report[_0x56ef('0x11')][_0x56ef('0x1d')]=function(_0x3c6002){var _0x4e15cc;_0x4e15cc=_[_0x56ef('0x1e')](this[_0x56ef('0xf')],function(_0x2dadb0){return _0x2dadb0[_0x56ef('0x1f')]==_0x3c6002||_0x2dadb0[_0x56ef('0x20')]==_0x3c6002;});if(_[_0x56ef('0x21')](_0x4e15cc)){var _0x405d1e=_[_0x56ef('0x1e')](this[_0x56ef('0x10')],function(_0x9af05b){return _0x9af05b[_0x56ef('0x1f')]==_0x3c6002||_0x9af05b[_0x56ef('0x20')]==_0x3c6002;});if(_0x405d1e){_0x4e15cc=_['find'](this['agents'],function(_0x4c1f8f){return _0x4c1f8f[_0x56ef('0x22')]==util[_0x56ef('0x23')]('SIP/%s',_0x405d1e[_0x56ef('0x20')]);});}}return _0x4e15cc;};Report[_0x56ef('0x11')][_0x56ef('0x15')]=function(_0x29f626){for(var _0x5460aa=0x0;_0x5460aa<_0x29f626[_0x56ef('0x24')];_0x5460aa+=0x1){var _0xaa762d=this['findAgent'](_0x29f626[_0x5460aa]['connectedlinenum']);if(_0xaa762d){_0x29f626[_0x5460aa]['accountcode']=_0xaa762d[_0x56ef('0x1f')];_0x29f626[_0x5460aa][_0x56ef('0x25')]=!![];_0x29f626[_0x5460aa][_0x56ef('0x26')]=_0xaa762d['name'];_0x29f626[_0x5460aa]['interface']=_[_0x56ef('0x21')](_0xaa762d[_0x56ef('0x22')])?util[_0x56ef('0x23')]('SIP/%s',_0xaa762d['name']):_0xaa762d[_0x56ef('0x22')];if(_0x29f626[_0x5460aa][_0x56ef('0x27')]){_0x29f626[_0x5460aa][_0x56ef('0x28')]=moment()['format'](_0x56ef('0x29'));}if(_0x29f626[_0x5460aa][_0x56ef('0x2a')]){_0x29f626[_0x5460aa][_0x56ef('0x2b')]=moment()[_0x56ef('0x23')](_0x56ef('0x29'));}RpcMemberReport[_0x56ef('0x15')](_0x29f626[_0x5460aa]);}RpcVoiceQueueReport[_0x56ef('0x2c')](_0x29f626[_0x5460aa]);}};function extractCalleridNumber(_0x5dcd4a){var _0x53a4d6=_0x5dcd4a['match'](/<(.*?)>/);return _0x53a4d6?_0x53a4d6[0x1]:_0x5dcd4a;}Report[_0x56ef('0x11')][_0x56ef('0x2d')]=function(_0x55f1d6){for(var _0x374cbc=0x0;_0x374cbc<Object['keys'](this['agents'])['length'];_0x374cbc++){var _0x41ba86=Object[_0x56ef('0x2e')](this[_0x56ef('0xf')])[_0x374cbc];var _0x50e450=this[_0x56ef('0xf')][_0x41ba86];if(_0x50e450[_0x56ef('0x1f')]===Number(_0x55f1d6))return _0x50e450;}return null;};Report['prototype'][_0x56ef('0x2f')]=function(_0x525d21){var _0x1f758f=_0x525d21[_0x56ef('0x30')][_0x56ef('0x31')]('-')[0x0];var _0x49159a=this[_0x56ef('0xf')][_0x1f758f];if(!_0x49159a)_0x49159a=this['getAgentByInternal'](_0x525d21['calleridnum']);return!_0x49159a?'outbound':_0x56ef('0x32');};Report[_0x56ef('0x11')][_0x56ef('0x17')]=function(_0x1290e3){_0x1290e3['destination']=_0x1290e3['destination']||_0x1290e3[_0x56ef('0x33')];if(_0x1290e3[_0x56ef('0x34')]==_0x56ef('0x35')){_0x1290e3[_0x56ef('0x36')]=_0x56ef('0x37');_0x1290e3[_0x56ef('0x38')]=_0x1290e3[_0x56ef('0x37')];if(_0x1290e3[_0x56ef('0x39')]==_0x56ef('0x3a')){_0x1290e3[_0x56ef('0x1f')]='';_0x1290e3['destination']=extractCalleridNumber(_0x1290e3[_0x56ef('0x3b')]);}else if(_0x1290e3[_0x56ef('0x39')]==_0x56ef('0x3c')){if(_0x1290e3[_0x56ef('0x3d')]==_0x56ef('0x3e')){_0x1290e3[_0x56ef('0x3d')]=extractCalleridNumber(_0x1290e3[_0x56ef('0x3f')]);_0x1290e3[_0x56ef('0x40')]=_0x1290e3[_0x56ef('0x41')];_0x1290e3[_0x56ef('0x42')]=[_0x1290e3['channel'],_0x1290e3[_0x56ef('0x30')]=_0x1290e3[_0x56ef('0x42')]][0x0];_0x1290e3[_0x56ef('0x3b')]=_0x1290e3[_0x56ef('0x3f')];}else{_0x1290e3[_0x56ef('0x3d')]=_0x1290e3[_0x56ef('0x40')];_0x1290e3[_0x56ef('0x40')]=_0x1290e3[_0x56ef('0x41')];if(_0x1290e3[_0x56ef('0x43')]==_0x56ef('0x44')){_0x1290e3['accountcode']=_0x1290e3[_0x56ef('0x45')];}else{_0x1290e3[_0x56ef('0x1f')]='';}}}}else{_0x1290e3['callerid']=util['format'](_0x56ef('0x46'),_0x1290e3[_0x56ef('0x47')],_0x1290e3['calleridnum']);}if(RpcVoiceTransferReport[_0x56ef('0x48')][_0x1290e3[_0x56ef('0x49')]]){var _0x2e4d58=RpcVoiceTransferReport[_0x56ef('0x48')][_0x1290e3[_0x56ef('0x49')]];_0x2e4d58[_0x56ef('0x4a')]=_0x1290e3['uniqueid'];RpcVoiceTransferReport['blindTransfer'](_0x2e4d58);delete RpcVoiceTransferReport[_0x56ef('0x48')][_0x1290e3[_0x56ef('0x49')]];}if(_[_0x56ef('0x21')](_0x1290e3[_0x56ef('0x34')])){_0x1290e3[_0x56ef('0x34')]=this[_0x56ef('0x2f')](_0x1290e3);}if(_[_0x56ef('0x21')](_0x1290e3['UserId'])){var _0x27432d=_0x1290e3[_0x56ef('0x30')]['split']('-')[0x0];var _0x4dbbbb=this[_0x56ef('0xf')][_0x27432d];if(!_0x4dbbbb)_0x4dbbbb=this[_0x56ef('0x2d')](_0x1290e3[_0x56ef('0x1f')]);if(_0x4dbbbb){_0x1290e3[_0x56ef('0x4b')]=_0x4dbbbb['id'];_0x1290e3[_0x56ef('0x4c')]=_0x4dbbbb[_0x56ef('0x20')];}}RpcVoiceCallReport[_0x56ef('0x2c')](_0x1290e3);if(_0x1290e3[_0x56ef('0x4d')]){for(var _0x294333=0x0;_0x294333<_0x1290e3['monitors'][_0x56ef('0x24')];_0x294333+=0x1){_0x1290e3['monitorFilename']=_0x1290e3['monitors'][_0x294333][_0x56ef('0x4e')];_0x1290e3[_0x56ef('0x4f')]=_0x1290e3[_0x56ef('0x50')][_0x294333][_0x56ef('0x4f')];if(_0x1290e3['exten']==_0x56ef('0x3e')){_0x1290e3['calleridnum']=_0x1290e3[_0x56ef('0x45')];_0x1290e3[_0x56ef('0x47')]=_0x1290e3[_0x56ef('0x51')];_0x1290e3[_0x56ef('0x45')]=_0x1290e3['accountcode'];_0x1290e3[_0x56ef('0x51')]=_0x1290e3['membername'];_0x1290e3[_0x56ef('0x33')]=_0x1290e3[_0x56ef('0x41')];}else if(_0x1290e3[_0x56ef('0x33')]==_0x56ef('0x52')){_0x1290e3['calleridnum']=_0x1290e3[_0x56ef('0x3d')];_0x1290e3[_0x56ef('0x33')]=_0x1290e3[_0x56ef('0x41')];}RpcVoiceRecording[_0x56ef('0x2c')](_0x1290e3);}}};Report[_0x56ef('0x11')][_0x56ef('0x18')]=function(_0x2bff5f){if(_['isArray'](_0x2bff5f)){_0x2bff5f[_0x56ef('0x53')](function(_0x36e43e){RpcVoiceAgentReport[_0x56ef('0x2c')](_0x36e43e);});}else{RpcVoiceAgentReport['create'](_0x2bff5f);}};Report[_0x56ef('0x11')]['voiceDialReport']=function(_0x4997a1){RpcVoiceDialReport['create'](_0x4997a1);var _0x3a532e;var _0x1bd65b;var _0x122d27=_0x4997a1[_0x56ef('0x30')];if(_[_0x56ef('0x54')](_0x122d27,_0x56ef('0x55'))){_0x1bd65b=_0x122d27['substring'](_0x122d27[_0x56ef('0x56')]('/')+0x1,_0x122d27[_0x56ef('0x56')]('@'));_0x3a532e=_[_0x56ef('0x1e')](this[_0x56ef('0xf')],function(_0xd1b352){return _0xd1b352['mobile']==_0x1bd65b||_0xd1b352['phone']==_0x1bd65b||_0xd1b352[_0x56ef('0x1f')]==_0x1bd65b;});}else{_0x1bd65b=_0x122d27[_0x56ef('0x57')](_0x122d27[_0x56ef('0x56')]('/')+0x1,_0x122d27[_0x56ef('0x58')]('-'));_0x3a532e=this[_0x56ef('0x1d')](_0x1bd65b);}if(_0x3a532e){_0x4997a1[_0x56ef('0x22')]=_[_0x56ef('0x21')](_0x3a532e['interface'])?util[_0x56ef('0x23')]('SIP/%s',_0x3a532e['name']):_0x3a532e[_0x56ef('0x22')];_0x4997a1[_0x56ef('0x4c')]=_0x3a532e[_0x56ef('0x20')];_0x4997a1[_0x56ef('0x1f')]=_0x3a532e['accountcode'];RpcMemberReport[_0x56ef('0x1a')](_0x4997a1);}};Report[_0x56ef('0x11')][_0x56ef('0x59')]=function(_0x8789d0){RpcVoiceTransferReport[_0x56ef('0x48')][_0x8789d0[_0x56ef('0x5a')]]=_0x8789d0;};Report['prototype'][_0x56ef('0x5b')]=function(_0xe231bd){RpcVoiceTransferReport[_0x56ef('0x5b')](_0xe231bd);};module[_0x56ef('0x5c')]=Report;
\ No newline at end of file
index 7683ad2..9cde0e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x364b=['[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','username','state','debug','trunks','merge','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','emit','trunk:%s','name','[userReport][registry]','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','local','toLowerCase','inuse','stateTime','toNumber','format','telephone:%s','telephone:save','startsWith','substring','indexOf','phone','accountcode','updateStatusRealtime','address','[userReport][peerstatus]','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:save','exports','lodash','moment','ioredis','../../../config/environment','ami','redis','defaults','localhost','socket.io-emitter','agents','telephones','registryentry','syncRegistry','bind','registry','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect'];(function(_0x43a65b,_0xf6f770){var _0x201e50=function(_0x8a9718){while(--_0x8a9718){_0x43a65b['push'](_0x43a65b['shift']());}};_0x201e50(++_0xf6f770);}(_0x364b,0x144));var _0xb364=function(_0x1a80da,_0x1b532b){_0x1a80da=_0x1a80da-0x0;var _0x1c1df0=_0x364b[_0x1a80da];return _0x1c1df0;};'use strict';var _=require(_0xb364('0x0'));var moment=require(_0xb364('0x1'));var util=require('util');var Redis=require(_0xb364('0x2'));var BPromise=require('bluebird');var config=require(_0xb364('0x3'));var logger=require('../../../config/logger')(_0xb364('0x4'));var ami=require('../ami');config[_0xb364('0x5')]=_[_0xb364('0x6')](config[_0xb364('0x5')],{'host':_0xb364('0x7'),'port':0x18eb});var io=require(_0xb364('0x8'))(new Redis(config['redis']));function UserReport(_0x5f551d){this['trunks']=_0x5f551d['trunks'];this[_0xb364('0x9')]=_0x5f551d[_0xb364('0x9')];this[_0xb364('0xa')]=_0x5f551d[_0xb364('0xa')];ami['on'](_0xb364('0xb'),this[_0xb364('0xc')][_0xb364('0xd')](this));ami['on'](_0xb364('0xe'),this[_0xb364('0xc')]['bind'](this));ami['on']('devicestatechange',this[_0xb364('0xf')][_0xb364('0xd')](this));ami['on'](_0xb364('0x10'),this[_0xb364('0x11')][_0xb364('0xd')](this));return this[_0xb364('0x12')]();}function showSipRegistrations(){Promise[_0xb364('0x13')]()[_0xb364('0x14')](ami[_0xb364('0x15')]())[_0xb364('0x16')](function(_0xe875d2){logger[_0xb364('0x17')](_0xb364('0x18'),util[_0xb364('0x19')](_0xe875d2,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xb364('0x13')]()[_0xb364('0x14')](ami['actionDeviceStateList']())[_0xb364('0x16')](function(_0x5d4b49){logger[_0xb364('0x17')](_0xb364('0x1a'),util[_0xb364('0x19')](_0x5d4b49,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xb364('0x13')]()[_0xb364('0x14')](ami[_0xb364('0x1b')]())['catch'](function(_0x1e1e20){logger[_0xb364('0x17')](_0xb364('0x1c'),util[_0xb364('0x19')](_0x1e1e20,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0xb364('0x12')]=function(){setInterval(function(){BPromise[_0xb364('0x13')]()['then'](showSipRegistrations())[_0xb364('0x14')](listDeviceStates())[_0xb364('0x14')](showPeersStatus());},0x32c8);};UserReport[_0xb364('0x1d')]['isNotNull']=function(_0x2edae2){return _0x2edae2!==null&&!_['isUndefined'](_0x2edae2);};UserReport['prototype']['emit']=function(_0x56c616,_0x54d1c4,_0x4abc94){io['to'](_0x56c616)['emit'](_0x54d1c4,_0x4abc94);};UserReport['prototype']['syncRegistry']=function(_0x14e4d0){try{if(this[_0xb364('0x1e')](_0x14e4d0)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x14e4d0[_0xb364('0x1f')],_0x14e4d0[_0xb364('0x20')]);logger[_0xb364('0x21')]('[userReport][registry]',util['inspect'](_0x14e4d0,{'showHidden':![],'depth':null}));var _0x5269cd=_['find'](this[_0xb364('0x22')],{'defaultuser':_0x14e4d0[_0xb364('0x1f')]});if(_0x5269cd){_0x14e4d0['stateRegistry']=_0x14e4d0[_0xb364('0x20')];_[_0xb364('0x23')](_0x5269cd,_['omit'](_0x14e4d0,[_0xb364('0x24'),_0xb364('0x25'),_0xb364('0x1f'),_0xb364('0x20')]));logger['debug'](_0xb364('0x26'),util[_0xb364('0x19')](_0x5269cd,{'showHidden':![],'depth':null}));this[_0xb364('0x27')](util['format'](_0xb364('0x28'),_0x5269cd[_0xb364('0x29')]),'trunk:save',_0x5269cd);}}}catch(_0x418dc3){logger[_0xb364('0x17')](_0xb364('0x2a'),util[_0xb364('0x19')](_0x418dc3,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x3c5750){try{if(this[_0xb364('0x1e')](_0x3c5750)){logger[_0xb364('0x2b')](_0xb364('0x2c'),_0x3c5750['device'],_0x3c5750['state']);logger[_0xb364('0x21')](_0xb364('0x2d'),util['inspect'](_0x3c5750,{'showHidden':![],'depth':null}));if(this['agents'][_0x3c5750[_0xb364('0x2e')]]){if(!this[_0xb364('0x9')][_0x3c5750[_0xb364('0x2e')]][_0xb364('0x2f')]||_0x3c5750['state'][_0xb364('0x30')]()==_0xb364('0x31')){this[_0xb364('0x9')][_0x3c5750[_0xb364('0x2e')]]['local']=![];if(this[_0xb364('0x9')][_0x3c5750[_0xb364('0x2e')]][_0xb364('0x20')]!==_0x3c5750[_0xb364('0x20')][_0xb364('0x30')]()){this['agents'][_0x3c5750[_0xb364('0x2e')]][_0xb364('0x32')]=_['toNumber'](moment()['format']('x'));}this[_0xb364('0x9')][_0x3c5750['device']][_0xb364('0x20')]=_0x3c5750['state'][_0xb364('0x30')]();this[_0xb364('0x9')][_0x3c5750[_0xb364('0x2e')]]['updateStatusRealtime'](_0x3c5750);}}else if(this['telephones'][_0x3c5750[_0xb364('0x2e')]]){if(this[_0xb364('0xa')][_0x3c5750['device']]['state']!==_0x3c5750[_0xb364('0x20')]['toLowerCase']()){this[_0xb364('0xa')][_0x3c5750[_0xb364('0x2e')]][_0xb364('0x32')]=_[_0xb364('0x33')](moment()[_0xb364('0x34')]('x'));}this[_0xb364('0xa')][_0x3c5750['device']][_0xb364('0x20')]=_0x3c5750['state'][_0xb364('0x30')]();logger[_0xb364('0x21')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0xb364('0xa')][_0x3c5750[_0xb364('0x2e')]],{'showHidden':![],'depth':null}));this[_0xb364('0x27')](util[_0xb364('0x34')](_0xb364('0x35'),this[_0xb364('0xa')][_0x3c5750[_0xb364('0x2e')]]['name']),_0xb364('0x36'),this[_0xb364('0xa')][_0x3c5750['device']]);}else if(this['trunks'][_0x3c5750['device']]){if(this[_0xb364('0x22')][_0x3c5750['device']][_0xb364('0x20')]!==_0x3c5750[_0xb364('0x20')]['toLowerCase']()){this[_0xb364('0x22')][_0x3c5750['device']][_0xb364('0x32')]=_[_0xb364('0x33')](moment()[_0xb364('0x34')]('x'));}this[_0xb364('0x22')][_0x3c5750[_0xb364('0x2e')]][_0xb364('0x20')]=_0x3c5750[_0xb364('0x20')][_0xb364('0x30')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0xb364('0x19')](this[_0xb364('0x22')][_0x3c5750[_0xb364('0x2e')]],{'showHidden':![],'depth':null}));this[_0xb364('0x27')](util[_0xb364('0x34')](_0xb364('0x28'),this[_0xb364('0x22')][_0x3c5750[_0xb364('0x2e')]][_0xb364('0x29')]),'trunk:save',this[_0xb364('0x22')][_0x3c5750['device']]);}else if(_[_0xb364('0x37')](_0x3c5750[_0xb364('0x2e')],'Local')){var _0x16d0b9=_0x3c5750['device'];var _0x295efb=_0x16d0b9[_0xb364('0x38')](_0x16d0b9['indexOf']('/')+0x1,_0x16d0b9[_0xb364('0x39')]('@'));var _0x327dbd=_['find'](this[_0xb364('0x9')],function(_0x580f17){return _0x580f17['mobile']==_0x295efb||_0x580f17[_0xb364('0x3a')]==_0x295efb||_0x580f17[_0xb364('0x3b')]==_0x295efb;});if(_0x327dbd){if(_0x327dbd[_0xb364('0x20')]!==_0x3c5750[_0xb364('0x20')][_0xb364('0x30')]()){_0x327dbd[_0xb364('0x32')]=_[_0xb364('0x33')](moment()[_0xb364('0x34')]('x'));}_0x327dbd[_0xb364('0x20')]=_0x3c5750['state'][_0xb364('0x30')]();_0x327dbd[_0xb364('0x2f')]=!![];_0x327dbd[_0xb364('0x3c')](_0x3c5750);}}}}catch(_0x39c9eb){logger[_0xb364('0x17')](_0xb364('0x2d'),util['inspect'](_0x39c9eb,{'showHidden':![],'depth':null}));}};UserReport[_0xb364('0x1d')][_0xb364('0x11')]=function(_0x61b6aa){try{if(this[_0xb364('0x1e')](_0x61b6aa)&&this[_0xb364('0x1e')](_0x61b6aa[_0xb364('0x10')])){logger['info']('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x61b6aa['peer'],_0x61b6aa[_0xb364('0x3d')],_0x61b6aa[_0xb364('0x10')]);logger[_0xb364('0x21')](_0xb364('0x3e'),util['inspect'](_0x61b6aa,{'showHidden':![],'depth':null}));if(this[_0xb364('0x9')][_0x61b6aa[_0xb364('0x3f')]]){if(!this['agents'][_0x61b6aa[_0xb364('0x3f')]][_0xb364('0x2f')]||_0x61b6aa['peerstatus'][_0xb364('0x30')]()==_0xb364('0x40')){this[_0xb364('0x9')][_0x61b6aa[_0xb364('0x3f')]][_0xb364('0x2f')]=![];this[_0xb364('0x9')][_0x61b6aa[_0xb364('0x3f')]][_0xb364('0x41')]=_0x61b6aa['peerstatus'][_0xb364('0x30')]();this['agents'][_0x61b6aa[_0xb364('0x3f')]]['address']=_0x61b6aa[_0xb364('0x3d')];this[_0xb364('0x9')][_0x61b6aa[_0xb364('0x3f')]]['updateStatusRealtime'](_0x61b6aa);}}else if(this[_0xb364('0xa')][_0x61b6aa[_0xb364('0x3f')]]){this[_0xb364('0xa')][_0x61b6aa[_0xb364('0x3f')]][_0xb364('0x41')]=_0x61b6aa[_0xb364('0x10')][_0xb364('0x30')]();this[_0xb364('0xa')][_0x61b6aa['peer']]['address']=_0x61b6aa[_0xb364('0x3d')];logger[_0xb364('0x21')](_0xb364('0x42'),util[_0xb364('0x19')](this[_0xb364('0xa')][_0x61b6aa[_0xb364('0x3f')]],{'showHidden':![],'depth':null}));this[_0xb364('0x27')](util[_0xb364('0x34')](_0xb364('0x35'),this[_0xb364('0xa')][_0x61b6aa[_0xb364('0x3f')]][_0xb364('0x29')]),'telephone:save',this[_0xb364('0xa')][_0x61b6aa['peer']]);}else if(this['trunks'][_0x61b6aa[_0xb364('0x3f')]]){this[_0xb364('0x22')][_0x61b6aa[_0xb364('0x3f')]][_0xb364('0x41')]=_0x61b6aa[_0xb364('0x10')][_0xb364('0x30')]();this[_0xb364('0x22')][_0x61b6aa[_0xb364('0x3f')]][_0xb364('0x3d')]=_0x61b6aa['address'];logger[_0xb364('0x21')](_0xb364('0x43'),util[_0xb364('0x19')](this[_0xb364('0x22')][_0x61b6aa[_0xb364('0x3f')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xb364('0x34')]('trunk:%s',this[_0xb364('0x22')][_0x61b6aa[_0xb364('0x3f')]][_0xb364('0x29')]),_0xb364('0x44'),this['trunks'][_0x61b6aa[_0xb364('0x3f')]]);}}}catch(_0x3b7b05){logger[_0xb364('0x17')](_0xb364('0x3e'),util[_0xb364('0x19')](_0x3b7b05,{'showHidden':![],'depth':null}));}};module[_0xb364('0x45')]=UserReport;
\ No newline at end of file
+var _0x0b16=['syncPeerStatus','peer','address','[userReport][peerstatus]','status','telephone:%s','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','bluebird','ami','redis','localhost','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','syncDeviceState','peerstatus','resolve','then','actionSipShowRegistry','catch','error','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','[userReport][registry]','find','username','stateRegistry','omit','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','debug','[userReport][devicestatechange]','local','toLowerCase','inuse','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','Local','substring','indexOf','mobile','phone','accountcode'];(function(_0x47c116,_0x4e6c53){var _0x34b734=function(_0x201bd4){while(--_0x201bd4){_0x47c116['push'](_0x47c116['shift']());}};_0x34b734(++_0x4e6c53);}(_0x0b16,0x95));var _0x60b1=function(_0x19c682,_0x221bcd){_0x19c682=_0x19c682-0x0;var _0x3de686=_0x0b16[_0x19c682];return _0x3de686;};'use strict';var _=require(_0x60b1('0x0'));var moment=require(_0x60b1('0x1'));var util=require('util');var Redis=require('ioredis');var BPromise=require(_0x60b1('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x60b1('0x3'));var ami=require('../ami');config[_0x60b1('0x4')]=_['defaults'](config['redis'],{'host':_0x60b1('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function UserReport(_0x42817b){this[_0x60b1('0x6')]=_0x42817b[_0x60b1('0x6')];this[_0x60b1('0x7')]=_0x42817b[_0x60b1('0x7')];this[_0x60b1('0x8')]=_0x42817b[_0x60b1('0x8')];ami['on'](_0x60b1('0x9'),this[_0x60b1('0xa')][_0x60b1('0xb')](this));ami['on'](_0x60b1('0xc'),this['syncRegistry'][_0x60b1('0xb')](this));ami['on']('devicestatechange',this[_0x60b1('0xd')][_0x60b1('0xb')](this));ami['on'](_0x60b1('0xe'),this['syncPeerStatus']['bind'](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x60b1('0xf')]()[_0x60b1('0x10')](ami[_0x60b1('0x11')]())[_0x60b1('0x12')](function(_0x46a2be){logger[_0x60b1('0x13')]('[userReport][sipshowregistry]',util[_0x60b1('0x14')](_0x46a2be,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x60b1('0xf')]()[_0x60b1('0x10')](ami[_0x60b1('0x15')]())['catch'](function(_0x42264e){logger[_0x60b1('0x13')](_0x60b1('0x16'),util['inspect'](_0x42264e,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x60b1('0xf')]()[_0x60b1('0x10')](ami[_0x60b1('0x17')]())[_0x60b1('0x12')](function(_0x5892fd){logger['error'](_0x60b1('0x18'),util[_0x60b1('0x14')](_0x5892fd,{'showHidden':![],'depth':null}));});}UserReport[_0x60b1('0x19')][_0x60b1('0x1a')]=function(){setInterval(function(){BPromise[_0x60b1('0xf')]()[_0x60b1('0x10')](showSipRegistrations())[_0x60b1('0x10')](listDeviceStates())[_0x60b1('0x10')](showPeersStatus());},0x32c8);};UserReport[_0x60b1('0x19')][_0x60b1('0x1b')]=function(_0x3c9c0c){return _0x3c9c0c!==null&&!_[_0x60b1('0x1c')](_0x3c9c0c);};UserReport[_0x60b1('0x19')][_0x60b1('0x1d')]=function(_0x316ba9,_0x443797,_0xc47740){io['to'](_0x316ba9)[_0x60b1('0x1d')](_0x443797,_0xc47740);};UserReport[_0x60b1('0x19')][_0x60b1('0xa')]=function(_0x3fa80a){try{if(this[_0x60b1('0x1b')](_0x3fa80a)){logger[_0x60b1('0x1e')](_0x60b1('0x1f'),_0x3fa80a['username'],_0x3fa80a[_0x60b1('0x20')]);logger['debug'](_0x60b1('0x21'),util[_0x60b1('0x14')](_0x3fa80a,{'showHidden':![],'depth':null}));var _0x3bf3b6=_[_0x60b1('0x22')](this['trunks'],{'defaultuser':_0x3fa80a[_0x60b1('0x23')]});if(_0x3bf3b6){_0x3fa80a[_0x60b1('0x24')]=_0x3fa80a[_0x60b1('0x20')];_['merge'](_0x3bf3b6,_[_0x60b1('0x25')](_0x3fa80a,['event','actionid',_0x60b1('0x23'),'state']));logger['debug'](_0x60b1('0x26'),util[_0x60b1('0x14')](_0x3bf3b6,{'showHidden':![],'depth':null}));this['emit'](util[_0x60b1('0x27')](_0x60b1('0x28'),_0x3bf3b6[_0x60b1('0x29')]),'trunk:save',_0x3bf3b6);}}}catch(_0x212765){logger[_0x60b1('0x13')](_0x60b1('0x21'),util[_0x60b1('0x14')](_0x212765,{'showHidden':![],'depth':null}));}};UserReport[_0x60b1('0x19')][_0x60b1('0xd')]=function(_0x3f23f3){try{if(this['isNotNull'](_0x3f23f3)){logger[_0x60b1('0x1e')](_0x60b1('0x2a'),_0x3f23f3[_0x60b1('0x2b')],_0x3f23f3[_0x60b1('0x20')]);logger[_0x60b1('0x2c')](_0x60b1('0x2d'),util[_0x60b1('0x14')](_0x3f23f3,{'showHidden':![],'depth':null}));if(this['agents'][_0x3f23f3['device']]){if(!this[_0x60b1('0x7')][_0x3f23f3[_0x60b1('0x2b')]][_0x60b1('0x2e')]||_0x3f23f3[_0x60b1('0x20')][_0x60b1('0x2f')]()==_0x60b1('0x30')){this[_0x60b1('0x7')][_0x3f23f3[_0x60b1('0x2b')]][_0x60b1('0x2e')]=![];if(this[_0x60b1('0x7')][_0x3f23f3[_0x60b1('0x2b')]]['state']!==_0x3f23f3[_0x60b1('0x20')]['toLowerCase']()){this[_0x60b1('0x7')][_0x3f23f3[_0x60b1('0x2b')]]['stateTime']=_[_0x60b1('0x31')](moment()[_0x60b1('0x27')]('x'));}this[_0x60b1('0x7')][_0x3f23f3['device']][_0x60b1('0x20')]=_0x3f23f3[_0x60b1('0x20')][_0x60b1('0x2f')]();this['agents'][_0x3f23f3[_0x60b1('0x2b')]][_0x60b1('0x32')](_0x3f23f3);}}else if(this[_0x60b1('0x8')][_0x3f23f3[_0x60b1('0x2b')]]){if(this[_0x60b1('0x8')][_0x3f23f3[_0x60b1('0x2b')]][_0x60b1('0x20')]!==_0x3f23f3['state'][_0x60b1('0x2f')]()){this[_0x60b1('0x8')][_0x3f23f3['device']]['stateTime']=_['toNumber'](moment()[_0x60b1('0x27')]('x'));}this[_0x60b1('0x8')][_0x3f23f3[_0x60b1('0x2b')]]['state']=_0x3f23f3['state'][_0x60b1('0x2f')]();logger['debug'](_0x60b1('0x33'),util[_0x60b1('0x14')](this['telephones'][_0x3f23f3[_0x60b1('0x2b')]],{'showHidden':![],'depth':null}));this[_0x60b1('0x1d')](util[_0x60b1('0x27')]('telephone:%s',this[_0x60b1('0x8')][_0x3f23f3[_0x60b1('0x2b')]][_0x60b1('0x29')]),'telephone:save',this[_0x60b1('0x8')][_0x3f23f3[_0x60b1('0x2b')]]);}else if(this['trunks'][_0x3f23f3[_0x60b1('0x2b')]]){if(this[_0x60b1('0x6')][_0x3f23f3['device']]['state']!==_0x3f23f3[_0x60b1('0x20')][_0x60b1('0x2f')]()){this[_0x60b1('0x6')][_0x3f23f3[_0x60b1('0x2b')]]['stateTime']=_['toNumber'](moment()[_0x60b1('0x27')]('x'));}this[_0x60b1('0x6')][_0x3f23f3[_0x60b1('0x2b')]]['state']=_0x3f23f3['state'][_0x60b1('0x2f')]();logger[_0x60b1('0x2c')](_0x60b1('0x34'),util[_0x60b1('0x14')](this['trunks'][_0x3f23f3[_0x60b1('0x2b')]],{'showHidden':![],'depth':null}));this[_0x60b1('0x1d')](util[_0x60b1('0x27')](_0x60b1('0x28'),this[_0x60b1('0x6')][_0x3f23f3['device']]['name']),_0x60b1('0x35'),this['trunks'][_0x3f23f3[_0x60b1('0x2b')]]);}else if(_[_0x60b1('0x36')](_0x3f23f3[_0x60b1('0x2b')],_0x60b1('0x37'))){var _0x5ad429=_0x3f23f3[_0x60b1('0x2b')];var _0x20714f=_0x5ad429[_0x60b1('0x38')](_0x5ad429[_0x60b1('0x39')]('/')+0x1,_0x5ad429[_0x60b1('0x39')]('@'));var _0x525386=_['find'](this[_0x60b1('0x7')],function(_0xa25ae1){return _0xa25ae1[_0x60b1('0x3a')]==_0x20714f||_0xa25ae1[_0x60b1('0x3b')]==_0x20714f||_0xa25ae1[_0x60b1('0x3c')]==_0x20714f;});if(_0x525386){if(_0x525386[_0x60b1('0x20')]!==_0x3f23f3[_0x60b1('0x20')][_0x60b1('0x2f')]()){_0x525386['stateTime']=_[_0x60b1('0x31')](moment()[_0x60b1('0x27')]('x'));}_0x525386[_0x60b1('0x20')]=_0x3f23f3[_0x60b1('0x20')][_0x60b1('0x2f')]();_0x525386['local']=!![];_0x525386['updateStatusRealtime'](_0x3f23f3);}}}}catch(_0x320eb1){logger[_0x60b1('0x13')]('[userReport][devicestatechange]',util[_0x60b1('0x14')](_0x320eb1,{'showHidden':![],'depth':null}));}};UserReport[_0x60b1('0x19')][_0x60b1('0x3d')]=function(_0x1234fb){try{if(this['isNotNull'](_0x1234fb)&&this[_0x60b1('0x1b')](_0x1234fb['peerstatus'])){logger[_0x60b1('0x1e')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x1234fb[_0x60b1('0x3e')],_0x1234fb[_0x60b1('0x3f')],_0x1234fb[_0x60b1('0xe')]);logger[_0x60b1('0x2c')](_0x60b1('0x40'),util[_0x60b1('0x14')](_0x1234fb,{'showHidden':![],'depth':null}));if(this['agents'][_0x1234fb[_0x60b1('0x3e')]]){if(!this[_0x60b1('0x7')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x2e')]||_0x1234fb[_0x60b1('0xe')][_0x60b1('0x2f')]()=='registered'){this[_0x60b1('0x7')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x2e')]=![];this['agents'][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x41')]=_0x1234fb['peerstatus']['toLowerCase']();this[_0x60b1('0x7')][_0x1234fb['peer']][_0x60b1('0x3f')]=_0x1234fb[_0x60b1('0x3f')];this[_0x60b1('0x7')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x32')](_0x1234fb);}}else if(this['telephones'][_0x1234fb[_0x60b1('0x3e')]]){this[_0x60b1('0x8')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x41')]=_0x1234fb['peerstatus'][_0x60b1('0x2f')]();this[_0x60b1('0x8')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x3f')]=_0x1234fb[_0x60b1('0x3f')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0x60b1('0x8')][_0x1234fb[_0x60b1('0x3e')]],{'showHidden':![],'depth':null}));this[_0x60b1('0x1d')](util[_0x60b1('0x27')](_0x60b1('0x42'),this[_0x60b1('0x8')][_0x1234fb['peer']]['name']),_0x60b1('0x43'),this[_0x60b1('0x8')][_0x1234fb[_0x60b1('0x3e')]]);}else if(this[_0x60b1('0x6')][_0x1234fb[_0x60b1('0x3e')]]){this[_0x60b1('0x6')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x41')]=_0x1234fb[_0x60b1('0xe')][_0x60b1('0x2f')]();this['trunks'][_0x1234fb['peer']][_0x60b1('0x3f')]=_0x1234fb['address'];logger[_0x60b1('0x2c')](_0x60b1('0x44'),util['inspect'](this['trunks'][_0x1234fb[_0x60b1('0x3e')]],{'showHidden':![],'depth':null}));this[_0x60b1('0x1d')](util['format']('trunk:%s',this['trunks'][_0x1234fb['peer']][_0x60b1('0x29')]),_0x60b1('0x35'),this[_0x60b1('0x6')][_0x1234fb[_0x60b1('0x3e')]]);}}}catch(_0x34d6f1){logger[_0x60b1('0x13')](_0x60b1('0x40'),util[_0x60b1('0x14')](_0x34d6f1,{'showHidden':![],'depth':null}));}};module[_0x60b1('0x45')]=UserReport;
\ No newline at end of file
index e7b1be9..6c19c04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52e4=['isNotNull','info','uniqueid','membername','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','channels','interface','queue','variables','format','YYYY-MM-DD\x20HH:mm:ss','called','mandatoryDisposition','type','inbound','voice','assign','event','privilege','destuniqueid','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:called','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','routealias','merge','pick','destconnectedlinenum','name','accountcode','exten','custom:agentconnect','user:%s','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','lastevent','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken','error','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20event:','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','syncQueueCallerAbandon','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','transfer','talktime','acwTimeout','agentacw','omit','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','variable','value','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberrealtime','includes','agentcompleteAt','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','lodash','util','ioredis','../../../config/environment','ami','../ami','defaults','redis','socket.io-emitter','voiceChannels','voiceQueues','agents','agentcalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','queuecallerabandon','agentcomplete','syncAgentComplete','syncVarSet','hangup','syncHangup','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isUndefined','syncAgentCalled'];(function(_0x460b67,_0x5b1203){var _0x5d1625=function(_0x374bf8){while(--_0x374bf8){_0x460b67['push'](_0x460b67['shift']());}};_0x5d1625(++_0x5b1203);}(_0x52e4,0x7d));var _0x452e=function(_0x1e24b1,_0x14ab30){_0x1e24b1=_0x1e24b1-0x0;var _0x212baf=_0x52e4[_0x1e24b1];return _0x212baf;};'use strict';var _=require(_0x452e('0x0'));var moment=require('moment');var util=require(_0x452e('0x1'));var Redis=require(_0x452e('0x2'));var config=require(_0x452e('0x3'));var logger=require('../../../config/logger')(_0x452e('0x4'));var ami=require(_0x452e('0x5'));config['redis']=_[_0x452e('0x6')](config[_0x452e('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x452e('0x8'))(new Redis(config[_0x452e('0x7')]));function VoiceAgentReport(_0x175cea){this['channels']={};this[_0x452e('0x9')]=_0x175cea['channels'];this[_0x452e('0xa')]=_0x175cea[_0x452e('0xa')];this[_0x452e('0xb')]=_0x175cea[_0x452e('0xb')];this['variables']={};ami['on'](_0x452e('0xc'),this['syncAgentCalled'][_0x452e('0xd')](this));ami['on'](_0x452e('0xe'),this[_0x452e('0xf')][_0x452e('0xd')](this));ami['on'](_0x452e('0x10'),this['syncAgentRingNoAnswer'][_0x452e('0xd')](this));ami['on'](_0x452e('0x11'),this['syncQueueCallerAbandon']['bind'](this));ami['on'](_0x452e('0x12'),this[_0x452e('0x13')][_0x452e('0xd')](this));ami['on']('varset',this[_0x452e('0x14')][_0x452e('0xd')](this));ami['on'](_0x452e('0x15'),this[_0x452e('0x16')][_0x452e('0xd')](this));ami['on'](_0x452e('0x17'),this['syncMusicOnHoldStart'][_0x452e('0xd')](this));ami['on'](_0x452e('0x18'),this[_0x452e('0x19')][_0x452e('0xd')](this));ami['on'](_0x452e('0x1a'),this[_0x452e('0x1b')]['bind'](this));ami['on'](_0x452e('0x1c'),this[_0x452e('0x1d')][_0x452e('0xd')](this));}VoiceAgentReport[_0x452e('0x1e')]['emit']=function(_0x250897,_0x255b88,_0x181d03){io['to'](_0x250897)[_0x452e('0x1f')](_0x255b88,_0x181d03);};VoiceAgentReport[_0x452e('0x1e')]['isNotNull']=function(_0x38d648){return _0x38d648!==null&&!_[_0x452e('0x20')](_0x38d648);};VoiceAgentReport[_0x452e('0x1e')][_0x452e('0x21')]=function(_0xf8edf3){try{if(this[_0x452e('0x22')](_0xf8edf3)){logger[_0x452e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0xf8edf3[_0x452e('0x24')],_0xf8edf3[_0x452e('0x25')],_0xf8edf3['destuniqueid']);logger[_0x452e('0x26')](_0x452e('0x27'),_0xf8edf3[_0x452e('0x24')],util[_0x452e('0x28')](_0xf8edf3,{'showHidden':![],'depth':null}));if(_[_0x452e('0x20')](this[_0x452e('0x29')][_0xf8edf3['uniqueid']])){this[_0x452e('0x29')][_0xf8edf3[_0x452e('0x24')]]={};}var _0x44d10d=this[_0x452e('0xb')][_0xf8edf3[_0x452e('0x2a')]];var _0x398470=this[_0x452e('0x29')][_0xf8edf3[_0x452e('0x24')]][_0xf8edf3['destuniqueid']];var _0x3e83b5=this[_0x452e('0xa')][_0xf8edf3[_0x452e('0x2b')]];var _0x2c1c52=this[_0x452e('0x2c')][_0xf8edf3[_0x452e('0x24')]];if(_['isUndefined'](_0x398470)){_0x398470={'agentcalledAt':moment()[_0x452e('0x2d')](_0x452e('0x2e')),'lastevent':_0x452e('0x2f'),'mandatoryDisposition':_0x3e83b5&&_0x3e83b5[_0x452e('0x30')]?_0x3e83b5[_0x452e('0x30')]:![],'type':_0x3e83b5&&_0x3e83b5[_0x452e('0x31')]?_0x3e83b5[_0x452e('0x31')]:_0x452e('0x32'),'variables':_0x2c1c52,'motionChannel':_0x452e('0x33')};}Object[_0x452e('0x34')](_0x398470,_['omit'](_0xf8edf3,[_0x452e('0x35'),_0x452e('0x36')]));this[_0x452e('0x29')][_0xf8edf3['uniqueid']][_0xf8edf3[_0x452e('0x37')]]=_0x398470;logger['debug'](_0x452e('0x38'),_0xf8edf3[_0x452e('0x24')],util[_0x452e('0x28')](_0x398470,{'showHidden':![],'depth':null}));ami[_0x452e('0x1f')]('custom:agentcalled',_0x398470);var _0x43b05a={'id':_0x44d10d['id'],'calleridnum':_0x398470[_0x452e('0x39')],'queue':_0x398470[_0x452e('0x2b')],'variables':_0x398470['variables'],'uniqueid':_0xf8edf3[_0x452e('0x24')]};logger['debug'](_0x452e('0x3a'),_0xf8edf3[_0x452e('0x24')],util[_0x452e('0x28')](_0x43b05a,{'showHidden':![],'depth':null}));this[_0x452e('0x1f')](util[_0x452e('0x2d')]('user:%s',_0xf8edf3[_0x452e('0x25')]),_0x452e('0x3b'),_0x43b05a);}}catch(_0x2ba127){logger['error'](_0x452e('0x3c'),_0xf8edf3['uniqueid'],util['inspect'](_0x2ba127,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x452e('0x1e')][_0x452e('0xf')]=function(_0x303d42){try{if(this[_0x452e('0x22')](_0x303d42)){if(this['channels'][_0x303d42['uniqueid']]){for(var _0x210d24 in this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]]){if(this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x452e('0x3d')](_0x210d24)){if(_0x303d42[_0x452e('0x37')]===_0x210d24){logger[_0x452e('0x23')](_0x452e('0x3e'),_0x303d42['uniqueid'],_0x303d42[_0x452e('0x25')],_0x303d42[_0x452e('0x37')]);this['channels'][_0x303d42[_0x452e('0x24')]][_0x210d24][_0x452e('0x3f')]=moment()[_0x452e('0x2d')](_0x452e('0x2e'));this['channels'][_0x303d42['uniqueid']][_0x210d24]['connectedlinename']=_0x303d42['connectedlinename'];this[_0x452e('0x29')][_0x303d42['uniqueid']][_0x210d24]['connectedlinenum']=_0x303d42[_0x452e('0x40')];this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24][_0x452e('0x41')]=_0x303d42[_0x452e('0x41')];this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24][_0x452e('0x42')]=_0x303d42['destchannelstatedesc'];this['channels'][_0x303d42['uniqueid']][_0x210d24][_0x452e('0x43')]=_0x303d42['holdtime'];this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24]['lastevent']=_0x452e('0x44');if(this[_0x452e('0x9')][this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24]['uniqueid']]){var _0x28c429=this[_0x452e('0x9')][this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24]['uniqueid']][_0x452e('0x45')];this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24][_0x452e('0x45')]=_0x28c429;_0x303d42[_0x452e('0x45')]=_0x28c429;}_[_0x452e('0x46')](this[_0x452e('0xb')][_0x303d42[_0x452e('0x2a')]],_[_0x452e('0x47')](_0x303d42,[_0x452e('0x2b'),_0x452e('0x48'),_0x452e('0x45')]));var _0x3110ff=this[_0x452e('0xb')][_0x303d42['interface']];var _0x5430b4={'id':_0x3110ff['id'],'name':_0x3110ff[_0x452e('0x49')],'agentconnected':!![],'destaccountcode':_0x3110ff[_0x452e('0x4a')],'destconnectedlinenum':this[_0x452e('0x29')][_0x303d42['uniqueid']][_0x303d42[_0x452e('0x37')]][_0x452e('0x4b')],'queue':this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x303d42[_0x452e('0x37')]][_0x452e('0x2b')],'routealias':this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x303d42['destuniqueid']][_0x452e('0x45')],'uniqueid':this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x303d42[_0x452e('0x37')]][_0x452e('0x24')]};ami[_0x452e('0x1f')](_0x452e('0x4c'),this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x303d42['destuniqueid']]);this[_0x452e('0x1f')](util[_0x452e('0x2d')](_0x452e('0x4d'),_0x303d42['membername']),_0x452e('0x4e'),_0x5430b4);}else if(!this['channels'][_0x303d42[_0x452e('0x24')]][_0x210d24][_0x452e('0x10')]&&!this[_0x452e('0x29')][_0x303d42['uniqueid']][_0x210d24][_0x452e('0x12')]){logger['info'](_0x452e('0x4f'),_0x303d42['uniqueid'],this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24][_0x452e('0x25')],_0x210d24);this['channels'][_0x303d42['uniqueid']][_0x210d24][_0x452e('0x10')]=!![];this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24][_0x452e('0x50')]=moment()['format'](_0x452e('0x2e'));this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24][_0x452e('0x51')]=_0x303d42[_0x452e('0x37')];this['channels'][_0x303d42['uniqueid']][_0x210d24][_0x452e('0x52')]=_0x303d42[_0x452e('0x25')];this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24][_0x452e('0x53')]=_0x452e('0x54');this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24][_0x452e('0x55')]=_0x452e('0x54');logger[_0x452e('0x26')](_0x452e('0x56'),_0x303d42[_0x452e('0x24')],util[_0x452e('0x28')](this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24],{'showHidden':![],'depth':null}));ami[_0x452e('0x1f')]('custom:agentansweredelsewhere',this[_0x452e('0x29')][_0x303d42[_0x452e('0x24')]][_0x210d24]);}else{logger['debug'](_0x452e('0x57'),_0x303d42[_0x452e('0x24')]);}}}}}}catch(_0x4159fb){logger[_0x452e('0x58')](_0x452e('0x59'),_0x303d42[_0x452e('0x24')],util['inspect'](_0x4159fb,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x452e('0x5a')]=function(_0x1516e3){try{if(this['isNotNull'](_0x1516e3)){logger[_0x452e('0x26')](_0x452e('0x5b'),_0x1516e3[_0x452e('0x24')],util[_0x452e('0x28')](_0x1516e3,{'showHidden':![],'depth':null}));if(this['channels'][_0x1516e3[_0x452e('0x24')]]&&this[_0x452e('0x29')][_0x1516e3[_0x452e('0x24')]][_0x1516e3[_0x452e('0x37')]]){logger[_0x452e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x1516e3[_0x452e('0x24')],_0x1516e3[_0x452e('0x25')],_0x1516e3[_0x452e('0x37')]);var _0x5b5653=this[_0x452e('0xb')][_0x1516e3['interface']];var _0x53cd71=this['channels'][_0x1516e3['uniqueid']][_0x1516e3[_0x452e('0x37')]];_0x53cd71[_0x452e('0x10')]=!![];_0x53cd71[_0x452e('0x50')]=moment()[_0x452e('0x2d')](_0x452e('0x2e'));_0x53cd71[_0x452e('0x53')]=_0x452e('0x5c');_0x53cd71['reason']=_0x452e('0x5c');var _0x16bc86={'id':_0x5b5653['id'],'name':_0x5b5653[_0x452e('0x49')],'queue':_0x53cd71['queue'],'uniqueid':_0x53cd71[_0x452e('0x24')]};logger[_0x452e('0x26')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x1516e3['uniqueid'],util[_0x452e('0x28')](_0x16bc86,{'showHidden':![],'depth':null}));this['emit'](util[_0x452e('0x2d')](_0x452e('0x4d'),_0x5b5653['name']),'user:agentringnoanswer',_0x16bc86);ami[_0x452e('0x1f')](_0x452e('0x5d'),_0x53cd71);this[_0x452e('0x29')][_0x1516e3[_0x452e('0x24')]][_0x1516e3[_0x452e('0x37')]]=Object[_0x452e('0x34')]({},_0x53cd71);}}}catch(_0x3801aa){logger[_0x452e('0x58')](_0x452e('0x5e'),_0x1516e3[_0x452e('0x24')],util[_0x452e('0x28')](_0x3801aa,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x452e('0x1e')][_0x452e('0x5f')]=function(_0x541fb5){try{if(this[_0x452e('0x22')](_0x541fb5)){logger['debug']('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x541fb5[_0x452e('0x24')],util['inspect'](_0x541fb5,{'showHidden':![],'depth':null}));if(this[_0x452e('0x29')][_0x541fb5['uniqueid']]){for(var _0x338dd5 in this[_0x452e('0x29')][_0x541fb5[_0x452e('0x24')]]){if(this[_0x452e('0x29')][_0x541fb5[_0x452e('0x24')]][_0x452e('0x3d')](_0x338dd5)&&!this[_0x452e('0x29')][_0x541fb5['uniqueid']][_0x338dd5][_0x452e('0x10')]&&!this[_0x452e('0x29')][_0x541fb5[_0x452e('0x24')]][_0x338dd5][_0x452e('0x12')]){logger[_0x452e('0x23')](_0x452e('0x60'),_0x541fb5[_0x452e('0x24')],this[_0x452e('0x29')][_0x541fb5[_0x452e('0x24')]][_0x338dd5][_0x452e('0x25')],_0x338dd5);this[_0x452e('0x29')][_0x541fb5['uniqueid']][_0x338dd5][_0x452e('0x10')]=!![];this[_0x452e('0x29')][_0x541fb5['uniqueid']][_0x338dd5][_0x452e('0x50')]=moment()['format'](_0x452e('0x2e'));this['channels'][_0x541fb5['uniqueid']][_0x338dd5]['lastevent']=_0x452e('0x61');this[_0x452e('0x29')][_0x541fb5['uniqueid']][_0x338dd5][_0x452e('0x55')]=_0x452e('0x61');logger['debug'](_0x452e('0x62'),_0x541fb5[_0x452e('0x24')],util['inspect'](this[_0x452e('0x29')][_0x541fb5[_0x452e('0x24')]][_0x338dd5],{'showHidden':![],'depth':null}));ami[_0x452e('0x1f')](_0x452e('0x63'),this['channels'][_0x541fb5[_0x452e('0x24')]][_0x338dd5]);}}}}}catch(_0x4b8384){logger[_0x452e('0x58')]('[%s][voiceAgentReport][queuecallerabandon]',_0x541fb5[_0x452e('0x24')],util['inspect'](_0x4b8384,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x452e('0x1e')][_0x452e('0x13')]=function(_0x16443e){try{if(this['isNotNull'](_0x16443e)){logger[_0x452e('0x26')](_0x452e('0x64'),_0x16443e[_0x452e('0x24')],util[_0x452e('0x28')](_0x16443e,{'showHidden':![],'depth':null}));if(this[_0x452e('0x29')][_0x16443e['uniqueid']]){for(var _0x3be9e2 in this['channels'][_0x16443e[_0x452e('0x24')]]){if(this[_0x452e('0x29')][_0x16443e[_0x452e('0x24')]]['hasOwnProperty'](_0x3be9e2)){if(this['channels'][_0x16443e[_0x452e('0x24')]][_0x3be9e2]['agentconnectAt']&&!this[_0x452e('0x29')][_0x16443e['uniqueid']][_0x3be9e2][_0x452e('0x12')]){logger[_0x452e('0x23')](_0x452e('0x65'),_0x16443e[_0x452e('0x24')],this[_0x452e('0x29')][_0x16443e[_0x452e('0x24')]][_0x3be9e2][_0x452e('0x25')],_0x3be9e2);this[_0x452e('0x29')][_0x16443e[_0x452e('0x24')]][_0x3be9e2][_0x452e('0x12')]=!![];this['channels'][_0x16443e['uniqueid']][_0x3be9e2]['agentcompleteAt']=moment()[_0x452e('0x2d')](_0x452e('0x2e'));this[_0x452e('0x29')][_0x16443e[_0x452e('0x24')]][_0x3be9e2][_0x452e('0x53')]=_0x452e('0x66');this['channels'][_0x16443e[_0x452e('0x24')]][_0x3be9e2][_0x452e('0x55')]=_0x16443e[_0x452e('0x55')]==_0x452e('0x67')?'agent':_0x16443e['reason'];this['channels'][_0x16443e[_0x452e('0x24')]][_0x3be9e2][_0x452e('0x68')]=_0x16443e[_0x452e('0x68')];if(this['voiceQueues'][_0x16443e[_0x452e('0x2b')]]&&this[_0x452e('0xa')][_0x16443e[_0x452e('0x2b')]]['acw']){this[_0x452e('0x29')][_0x16443e[_0x452e('0x24')]][_0x3be9e2]['acwtime']=this['voiceQueues'][_0x16443e[_0x452e('0x2b')]][_0x452e('0x69')];this[_0x452e('0x29')][_0x16443e[_0x452e('0x24')]][_0x3be9e2][_0x452e('0x6a')]=!![];}this[_0x452e('0xb')][_0x16443e['interface']]=_[_0x452e('0x6b')](this[_0x452e('0xb')][_0x16443e[_0x452e('0x2a')]],[_0x452e('0x2b'),_0x452e('0x48')]);logger[_0x452e('0x26')](_0x452e('0x6c'),_0x16443e['uniqueid'],util[_0x452e('0x28')](this[_0x452e('0x29')][_0x16443e[_0x452e('0x24')]][_0x3be9e2],{'showHidden':![],'depth':null}));ami[_0x452e('0x1f')](_0x452e('0x6d'),this[_0x452e('0x29')][_0x16443e[_0x452e('0x24')]][_0x3be9e2]);logger[_0x452e('0x26')](_0x452e('0x6e'),_0x16443e[_0x452e('0x24')],util[_0x452e('0x28')]({'id':this[_0x452e('0xb')][_0x16443e[_0x452e('0x2a')]]['id'],'destaccountcode':_0x16443e[_0x452e('0x6f')]},{'showHidden':![],'depth':null}));this['emit'](util['format']('user:%s',_0x16443e[_0x452e('0x25')]),_0x452e('0x70'),{'id':this[_0x452e('0xb')][_0x16443e[_0x452e('0x2a')]]['id'],'destaccountcode':Number(_0x16443e[_0x452e('0x6f')])});}}}}}}catch(_0x1efb75){logger[_0x452e('0x58')](_0x452e('0x71'),_0x16443e[_0x452e('0x24')],util[_0x452e('0x28')](_0x1efb75,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x452e('0x1e')]['syncVarSet']=function(_0x5a6bfc){try{if(this[_0x452e('0x22')](_0x5a6bfc)){logger['debug'](_0x452e('0x72'),_0x5a6bfc[_0x452e('0x24')],util[_0x452e('0x28')](_0x5a6bfc,{'showHidden':![],'depth':null}));this[_0x452e('0x73')](_0x5a6bfc['uniqueid'],_[_0x452e('0x74')](_0x5a6bfc['variable'])[0x0],_0x5a6bfc['value']);if(this[_0x452e('0x29')][_0x5a6bfc[_0x452e('0x24')]]){for(var _0x555d51 in this[_0x452e('0x29')][_0x5a6bfc['uniqueid']]){if(this[_0x452e('0x29')][_0x5a6bfc[_0x452e('0x24')]][_0x452e('0x3d')](_0x555d51)){logger[_0x452e('0x23')](_0x452e('0x75'),_0x5a6bfc[_0x452e('0x24')],_0x555d51,_[_0x452e('0x74')](_0x5a6bfc[_0x452e('0x76')])[0x0],_0x5a6bfc[_0x452e('0x77')]);if(_[_0x452e('0x20')](this['channels'][_0x5a6bfc['uniqueid']][_0x555d51][_0x452e('0x2c')])){this[_0x452e('0x29')][_0x5a6bfc[_0x452e('0x24')]][_0x555d51][_0x452e('0x2c')]={};}this[_0x452e('0x29')][_0x5a6bfc[_0x452e('0x24')]][_0x555d51][_0x452e('0x2c')]=this[_0x452e('0x2c')][_0x5a6bfc[_0x452e('0x24')]];}}}}}catch(_0x584947){logger[_0x452e('0x58')](_0x452e('0x78'),_0x5a6bfc['uniqueid'],util[_0x452e('0x28')](_0x584947,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x452e('0x1e')][_0x452e('0x73')]=function(_0x1ac181,_0x8ebf20,_0x50c751){var _0x46d8bf=[_0x452e('0x79'),_0x452e('0x7a'),_0x452e('0x7b'),'rtpaudioqosjitterbridged',_0x452e('0x7c'),_0x452e('0x7d'),_0x452e('0x7e'),_0x452e('0x7f'),_0x452e('0x80'),'sipuri',_0x452e('0x81'),_0x452e('0x82'),_0x452e('0x83'),_0x452e('0x84'),_0x452e('0x85'),'memberlastcall',_0x452e('0x25'),'memberpenalty',_0x452e('0x86')];if(!_['isNil'](_0x8ebf20)&&!_[_0x452e('0x87')](_0x46d8bf,_0x8ebf20)){if(_['isUndefined'](this[_0x452e('0x2c')][_0x1ac181])){this[_0x452e('0x2c')][_0x1ac181]={};}this['variables'][_0x1ac181][_0x8ebf20]=_0x50c751;}};VoiceAgentReport[_0x452e('0x1e')]['syncHangup']=function(_0x40fa24){try{if(this[_0x452e('0x22')](_0x40fa24)){logger[_0x452e('0x26')]('[%s][voiceAgentReport][hangup]\x20event:',_0x40fa24[_0x452e('0x24')],util[_0x452e('0x28')](_0x40fa24,{'showHidden':![],'depth':null}));if(this[_0x452e('0x29')][_0x40fa24['uniqueid']]){for(var _0x3e8cfc in this[_0x452e('0x29')][_0x40fa24[_0x452e('0x24')]]){if(this[_0x452e('0x29')][_0x40fa24['uniqueid']][_0x452e('0x3d')](_0x3e8cfc)){if(this[_0x452e('0x29')][_0x40fa24[_0x452e('0x24')]][_0x3e8cfc][_0x452e('0x55')]==_0x452e('0x67')&&this[_0x452e('0x29')][_0x40fa24[_0x452e('0x24')]][_0x3e8cfc][_0x452e('0x12')]){logger[_0x452e('0x23')]('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x40fa24[_0x452e('0x24')],_0x3e8cfc);this[_0x452e('0x29')][_0x40fa24[_0x452e('0x24')]][_0x3e8cfc][_0x452e('0x88')]=moment()[_0x452e('0x2d')](_0x452e('0x2e'));}}}logger[_0x452e('0x26')](_0x452e('0x89'),_0x40fa24[_0x452e('0x24')],util[_0x452e('0x28')](_[_0x452e('0x8a')](this[_0x452e('0x29')][_0x40fa24[_0x452e('0x24')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x452e('0x8b'),_[_0x452e('0x8a')](this[_0x452e('0x29')][_0x40fa24[_0x452e('0x24')]]));delete this['channels'][_0x40fa24[_0x452e('0x24')]];}if(this['variables'][_0x40fa24[_0x452e('0x24')]]){delete this[_0x452e('0x2c')][_0x40fa24[_0x452e('0x24')]];}}}catch(_0x2202a7){logger[_0x452e('0x58')](_0x452e('0x8c'),_0x40fa24[_0x452e('0x24')],util[_0x452e('0x28')](_0x2202a7,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x452e('0x1e')][_0x452e('0x1b')]=function(_0x4a14a0){try{if(this[_0x452e('0x22')](_0x4a14a0)){logger[_0x452e('0x26')]('[%s][voiceAgentReport][attendedtransfer]\x20event:',_0x4a14a0[_0x452e('0x24')],util[_0x452e('0x28')](_0x4a14a0,{'showHidden':![],'depth':null}));if(this[_0x452e('0x29')][_0x4a14a0[_0x452e('0x8d')]]){for(var _0x3ef0a8 in this[_0x452e('0x29')][_0x4a14a0[_0x452e('0x8d')]]){if(this[_0x452e('0x29')][_0x4a14a0['transfereeuniqueid']]['hasOwnProperty'](_0x3ef0a8)){if(_0x4a14a0[_0x452e('0x8e')]===_0x3ef0a8){logger[_0x452e('0x23')](_0x452e('0x8f'),_0x4a14a0[_0x452e('0x24')],this['channels'][_0x4a14a0[_0x452e('0x8d')]][_0x3ef0a8][_0x452e('0x25')],_0x3ef0a8);var _0x42d0af=moment();this[_0x452e('0x29')][_0x4a14a0[_0x452e('0x8d')]][_0x3ef0a8][_0x452e('0x12')]=!![];this['channels'][_0x4a14a0[_0x452e('0x8d')]][_0x3ef0a8]['agentcompleteAt']=moment()[_0x452e('0x2d')](_0x452e('0x2e'));this[_0x452e('0x29')][_0x4a14a0[_0x452e('0x8d')]][_0x3ef0a8][_0x452e('0x53')]=_0x452e('0x66');this['channels'][_0x4a14a0['transfereeuniqueid']][_0x3ef0a8][_0x452e('0x55')]=_0x452e('0x67');this[_0x452e('0x29')][_0x4a14a0[_0x452e('0x8d')]][_0x3ef0a8][_0x452e('0x68')]=_0x42d0af[_0x452e('0x90')](this[_0x452e('0x29')][_0x4a14a0[_0x452e('0x8d')]][_0x3ef0a8]['agentconnectAt'],_0x452e('0x91'));}}}}if(this[_0x452e('0x29')][_0x4a14a0[_0x452e('0x92')]]){var _0x1e5fe7=this['channels'][_0x4a14a0['secondtransfereruniqueid']];this[_0x452e('0x29')][_0x4a14a0[_0x452e('0x92')]]=this[_0x452e('0x29')][_0x4a14a0[_0x452e('0x8d')]];this[_0x452e('0x29')][_0x4a14a0[_0x452e('0x8d')]]=_0x1e5fe7;}}}catch(_0x739de3){logger[_0x452e('0x58')](_0x452e('0x93'),_0x4a14a0['uniqueid'],util[_0x452e('0x28')](_0x739de3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x452e('0x1e')][_0x452e('0x1d')]=function(_0x4eab12){try{if(this['isNotNull'](_0x4eab12)){logger[_0x452e('0x26')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x4eab12['uniqueid'],util[_0x452e('0x28')](_0x4eab12,{'showHidden':![],'depth':null}));if(this['channels'][_0x4eab12[_0x452e('0x8d')]]){for(var _0x29b539 in this['channels'][_0x4eab12[_0x452e('0x8d')]]){if(this[_0x452e('0x29')][_0x4eab12['transfereeuniqueid']][_0x452e('0x3d')](_0x29b539)){if(_0x4eab12[_0x452e('0x94')]===_0x29b539){logger[_0x452e('0x23')](_0x452e('0x95'),_0x4eab12[_0x452e('0x24')],this['channels'][_0x4eab12['transfereeuniqueid']][_0x29b539]['membername'],_0x29b539);var _0x367b28=moment();this[_0x452e('0x29')][_0x4eab12[_0x452e('0x8d')]][_0x29b539][_0x452e('0x12')]=!![];this[_0x452e('0x29')][_0x4eab12[_0x452e('0x8d')]][_0x29b539][_0x452e('0x88')]=_0x367b28;this[_0x452e('0x29')][_0x4eab12['transfereeuniqueid']][_0x29b539][_0x452e('0x53')]='complete';this['channels'][_0x4eab12[_0x452e('0x8d')]][_0x29b539][_0x452e('0x55')]=_0x452e('0x67');this['channels'][_0x4eab12[_0x452e('0x8d')]][_0x29b539]['talktime']=_0x367b28[_0x452e('0x90')](this[_0x452e('0x29')][_0x4eab12[_0x452e('0x8d')]][_0x29b539][_0x452e('0x3f')],_0x452e('0x91'));}}}}}}catch(_0x2fee6b){logger['error'](_0x452e('0x96'),_0x4eab12[_0x452e('0x24')],util['inspect'](_0x2fee6b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x452e('0x1e')][_0x452e('0x97')]=function(_0x106dc1){var _0x4e7a0d='';try{if(this[_0x452e('0x22')](_0x106dc1)){logger[_0x452e('0x26')](_0x452e('0x98'),_0x106dc1[_0x452e('0x24')],util[_0x452e('0x28')](_0x106dc1,{'showHidden':![],'depth':null}));if(_0x106dc1[_0x452e('0x99')]){_0x4e7a0d=_0x106dc1[_0x452e('0x99')][_0x452e('0x9a')](0x0,_0x106dc1[_0x452e('0x99')][_0x452e('0x9b')]('-'));if(this[_0x452e('0xb')][_0x4e7a0d]){logger[_0x452e('0x23')](_0x452e('0x9c'),_0x106dc1[_0x452e('0x24')],_0x4e7a0d);this[_0x452e('0xb')][_0x4e7a0d][_0x452e('0x9d')]=!![];}}}}catch(_0x465740){logger[_0x452e('0x58')](_0x452e('0x9e'),_0x106dc1['uniqueid'],util['inspect'](_0x465740,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x452e('0x1e')][_0x452e('0x19')]=function(_0x1c791a){var _0x5e4cf8='';try{if(this[_0x452e('0x22')](_0x1c791a)){logger['debug']('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x1c791a[_0x452e('0x24')],util[_0x452e('0x28')](_0x1c791a,{'showHidden':![],'depth':null}));if(_0x1c791a['channel']){_0x5e4cf8=_0x1c791a[_0x452e('0x99')][_0x452e('0x9a')](0x0,_0x1c791a[_0x452e('0x99')][_0x452e('0x9b')]('-'));if(this[_0x452e('0xb')][_0x5e4cf8]){logger['info']('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x1c791a['uniqueid'],_0x5e4cf8);this['agents'][_0x5e4cf8][_0x452e('0x9d')]=![];}}}}catch(_0x4c6dc6){logger[_0x452e('0x58')]('[%s][voiceAgentReport][musiconholdstop]',_0x1c791a[_0x452e('0x24')],util[_0x452e('0x28')](_0x4c6dc6,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
+var _0xe696=['reason','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','user:agentringnoanswer','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','transfer','talktime','acwtime','acwTimeout','agentacw','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','custom:voiceAgentReport','values','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','diff','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','syncAgentCalled','bind','agentconnect','syncAgentConnect','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','prototype','isNotNull','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','isUndefined','queue','YYYY-MM-DD\x20HH:mm:ss','mandatoryDisposition','type','inbound','voice','assign','omit','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','emit','custom:agentcalled','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','merge','interface','pick','destconnectedlinenum','name','accountcode','exten','custom:agentconnect','user:agentconnect','agentringnoanswer','info','agentringnoanswerAt','answeredelsewheremembername','answered_elsewhere'];(function(_0x3474c8,_0x433a13){var _0x41b56d=function(_0x44bf3a){while(--_0x44bf3a){_0x3474c8['push'](_0x3474c8['shift']());}};_0x41b56d(++_0x433a13);}(_0xe696,0x192));var _0x6e69=function(_0x527496,_0x5004a6){_0x527496=_0x527496-0x0;var _0x372684=_0xe696[_0x527496];return _0x372684;};'use strict';var _=require(_0x6e69('0x0'));var moment=require(_0x6e69('0x1'));var util=require(_0x6e69('0x2'));var Redis=require(_0x6e69('0x3'));var config=require('../../../config/environment');var logger=require(_0x6e69('0x4'))(_0x6e69('0x5'));var ami=require(_0x6e69('0x6'));config[_0x6e69('0x7')]=_[_0x6e69('0x8')](config[_0x6e69('0x7')],{'host':_0x6e69('0x9'),'port':0x18eb});var io=require(_0x6e69('0xa'))(new Redis(config[_0x6e69('0x7')]));function VoiceAgentReport(_0x5ba57c){this[_0x6e69('0xb')]={};this[_0x6e69('0xc')]=_0x5ba57c[_0x6e69('0xb')];this[_0x6e69('0xd')]=_0x5ba57c[_0x6e69('0xd')];this['agents']=_0x5ba57c[_0x6e69('0xe')];this[_0x6e69('0xf')]={};ami['on']('agentcalled',this[_0x6e69('0x10')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x12'),this[_0x6e69('0x13')]['bind'](this));ami['on']('agentringnoanswer',this[_0x6e69('0x14')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x15'),this[_0x6e69('0x16')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x17'),this[_0x6e69('0x18')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x19'),this[_0x6e69('0x1a')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x1b'),this[_0x6e69('0x1c')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x1d'),this[_0x6e69('0x1e')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x1f'),this[_0x6e69('0x20')]['bind'](this));ami['on'](_0x6e69('0x21'),this[_0x6e69('0x22')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x23'),this['syncBlindTransfer']['bind'](this));}VoiceAgentReport[_0x6e69('0x24')]['emit']=function(_0x331473,_0x3abaae,_0x3d0515){io['to'](_0x331473)['emit'](_0x3abaae,_0x3d0515);};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x25')]=function(_0x22f91b){return _0x22f91b!==null&&!_['isUndefined'](_0x22f91b);};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x10')]=function(_0x5ac5ca){try{if(this[_0x6e69('0x25')](_0x5ac5ca)){logger['info']('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x5ac5ca[_0x6e69('0x26')],_0x5ac5ca[_0x6e69('0x27')],_0x5ac5ca[_0x6e69('0x28')]);logger[_0x6e69('0x29')](_0x6e69('0x2a'),_0x5ac5ca[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x5ac5ca,{'showHidden':![],'depth':null}));if(_[_0x6e69('0x2c')](this[_0x6e69('0xb')][_0x5ac5ca['uniqueid']])){this[_0x6e69('0xb')][_0x5ac5ca['uniqueid']]={};}var _0x4f1193=this[_0x6e69('0xe')][_0x5ac5ca['interface']];var _0x14a350=this[_0x6e69('0xb')][_0x5ac5ca[_0x6e69('0x26')]][_0x5ac5ca[_0x6e69('0x28')]];var _0x17717b=this[_0x6e69('0xd')][_0x5ac5ca[_0x6e69('0x2d')]];var _0xca725a=this[_0x6e69('0xf')][_0x5ac5ca[_0x6e69('0x26')]];if(_[_0x6e69('0x2c')](_0x14a350)){_0x14a350={'agentcalledAt':moment()['format'](_0x6e69('0x2e')),'lastevent':'called','mandatoryDisposition':_0x17717b&&_0x17717b[_0x6e69('0x2f')]?_0x17717b['mandatoryDisposition']:![],'type':_0x17717b&&_0x17717b[_0x6e69('0x30')]?_0x17717b[_0x6e69('0x30')]:_0x6e69('0x31'),'variables':_0xca725a,'motionChannel':_0x6e69('0x32')};}Object[_0x6e69('0x33')](_0x14a350,_[_0x6e69('0x34')](_0x5ac5ca,['event','privilege']));this[_0x6e69('0xb')][_0x5ac5ca[_0x6e69('0x26')]][_0x5ac5ca[_0x6e69('0x28')]]=_0x14a350;logger[_0x6e69('0x29')](_0x6e69('0x35'),_0x5ac5ca[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x14a350,{'showHidden':![],'depth':null}));ami[_0x6e69('0x36')](_0x6e69('0x37'),_0x14a350);var _0x567dd9={'id':_0x4f1193['id'],'calleridnum':_0x14a350[_0x6e69('0x38')],'queue':_0x14a350[_0x6e69('0x2d')],'variables':_0x14a350['variables'],'uniqueid':_0x5ac5ca[_0x6e69('0x26')]};logger['debug'](_0x6e69('0x39'),_0x5ac5ca[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x567dd9,{'showHidden':![],'depth':null}));this[_0x6e69('0x36')](util[_0x6e69('0x3a')](_0x6e69('0x3b'),_0x5ac5ca[_0x6e69('0x27')]),_0x6e69('0x3c'),_0x567dd9);}}catch(_0x3b0b17){logger[_0x6e69('0x3d')](_0x6e69('0x3e'),_0x5ac5ca[_0x6e69('0x26')],util['inspect'](_0x3b0b17,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')]['syncAgentConnect']=function(_0x53da39){try{if(this[_0x6e69('0x25')](_0x53da39)){if(this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]]){for(var _0x84019 in this[_0x6e69('0xb')][_0x53da39['uniqueid']]){if(this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x6e69('0x3f')](_0x84019)){if(_0x53da39[_0x6e69('0x28')]===_0x84019){logger['info'](_0x6e69('0x40'),_0x53da39[_0x6e69('0x26')],_0x53da39['membername'],_0x53da39[_0x6e69('0x28')]);this['channels'][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x41')]=moment()['format'](_0x6e69('0x2e'));this[_0x6e69('0xb')][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x42')]=_0x53da39[_0x6e69('0x42')];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['connectedlinenum']=_0x53da39['connectedlinenum'];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x43')]=_0x53da39[_0x6e69('0x43')];this['channels'][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x44')]=_0x53da39['destchannelstatedesc'];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['holdtime']=_0x53da39[_0x6e69('0x45')];this[_0x6e69('0xb')][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x46')]=_0x6e69('0x47');if(this[_0x6e69('0xc')][this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x26')]]){var _0x175378=this[_0x6e69('0xc')][this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['uniqueid']][_0x6e69('0x48')];this[_0x6e69('0xb')][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x48')]=_0x175378;_0x53da39[_0x6e69('0x48')]=_0x175378;}_[_0x6e69('0x49')](this['agents'][_0x53da39[_0x6e69('0x4a')]],_[_0x6e69('0x4b')](_0x53da39,[_0x6e69('0x2d'),_0x6e69('0x4c'),_0x6e69('0x48')]));var _0xe431e8=this['agents'][_0x53da39[_0x6e69('0x4a')]];var _0x4d2728={'id':_0xe431e8['id'],'name':_0xe431e8[_0x6e69('0x4d')],'agentconnected':!![],'destaccountcode':_0xe431e8[_0x6e69('0x4e')],'destconnectedlinenum':this['channels'][_0x53da39[_0x6e69('0x26')]][_0x53da39[_0x6e69('0x28')]][_0x6e69('0x4f')],'queue':this['channels'][_0x53da39[_0x6e69('0x26')]][_0x53da39[_0x6e69('0x28')]][_0x6e69('0x2d')],'routealias':this['channels'][_0x53da39['uniqueid']][_0x53da39[_0x6e69('0x28')]][_0x6e69('0x48')],'uniqueid':this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x53da39[_0x6e69('0x28')]][_0x6e69('0x26')]};ami[_0x6e69('0x36')](_0x6e69('0x50'),this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x53da39['destuniqueid']]);this[_0x6e69('0x36')](util[_0x6e69('0x3a')](_0x6e69('0x3b'),_0x53da39['membername']),_0x6e69('0x51'),_0x4d2728);}else if(!this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x52')]&&!this['channels'][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x17')]){logger[_0x6e69('0x53')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x53da39[_0x6e69('0x26')],this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['membername'],_0x84019);this[_0x6e69('0xb')][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x52')]=!![];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x54')]=moment()[_0x6e69('0x3a')](_0x6e69('0x2e'));this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['answeredelsewheredestinationuniqueid']=_0x53da39['destuniqueid'];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x55')]=_0x53da39[_0x6e69('0x27')];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['lastevent']=_0x6e69('0x56');this[_0x6e69('0xb')][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x57')]=_0x6e69('0x56');logger[_0x6e69('0x29')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x53da39[_0x6e69('0x26')],util[_0x6e69('0x2b')](this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019],{'showHidden':![],'depth':null}));ami[_0x6e69('0x36')](_0x6e69('0x58'),this['channels'][_0x53da39[_0x6e69('0x26')]][_0x84019]);}else{logger[_0x6e69('0x29')]('[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken',_0x53da39[_0x6e69('0x26')]);}}}}}}catch(_0x26dd20){logger[_0x6e69('0x3d')]('[%s][voiceAgentReport][agentconnect]',_0x53da39[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x26dd20,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x14')]=function(_0xeba125){try{if(this[_0x6e69('0x25')](_0xeba125)){logger[_0x6e69('0x29')](_0x6e69('0x59'),_0xeba125[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0xeba125,{'showHidden':![],'depth':null}));if(this[_0x6e69('0xb')][_0xeba125[_0x6e69('0x26')]]&&this['channels'][_0xeba125['uniqueid']][_0xeba125['destuniqueid']]){logger[_0x6e69('0x53')](_0x6e69('0x5a'),_0xeba125[_0x6e69('0x26')],_0xeba125[_0x6e69('0x27')],_0xeba125[_0x6e69('0x28')]);var _0x282c3f=this['agents'][_0xeba125[_0x6e69('0x4a')]];var _0x223c51=this['channels'][_0xeba125[_0x6e69('0x26')]][_0xeba125[_0x6e69('0x28')]];_0x223c51['agentringnoanswer']=!![];_0x223c51['agentringnoanswerAt']=moment()[_0x6e69('0x3a')](_0x6e69('0x2e'));_0x223c51['lastevent']='rejected';_0x223c51['reason']=_0x6e69('0x5b');var _0x6be0a0={'id':_0x282c3f['id'],'name':_0x282c3f[_0x6e69('0x4d')],'queue':_0x223c51[_0x6e69('0x2d')],'uniqueid':_0x223c51[_0x6e69('0x26')]};logger[_0x6e69('0x29')](_0x6e69('0x5c'),_0xeba125[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x6be0a0,{'showHidden':![],'depth':null}));this[_0x6e69('0x36')](util[_0x6e69('0x3a')]('user:%s',_0x282c3f['name']),_0x6e69('0x5d'),_0x6be0a0);ami['emit'](_0x6e69('0x5e'),_0x223c51);this[_0x6e69('0xb')][_0xeba125[_0x6e69('0x26')]][_0xeba125[_0x6e69('0x28')]]=Object['assign']({},_0x223c51);}}}catch(_0x20cb67){logger[_0x6e69('0x3d')](_0x6e69('0x5f'),_0xeba125[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x20cb67,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x16')]=function(_0x58107c){try{if(this[_0x6e69('0x25')](_0x58107c)){logger[_0x6e69('0x29')]('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x58107c[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x58107c,{'showHidden':![],'depth':null}));if(this['channels'][_0x58107c[_0x6e69('0x26')]]){for(var _0x56db09 in this['channels'][_0x58107c['uniqueid']]){if(this[_0x6e69('0xb')][_0x58107c[_0x6e69('0x26')]][_0x6e69('0x3f')](_0x56db09)&&!this['channels'][_0x58107c['uniqueid']][_0x56db09][_0x6e69('0x52')]&&!this['channels'][_0x58107c[_0x6e69('0x26')]][_0x56db09][_0x6e69('0x17')]){logger['info'](_0x6e69('0x60'),_0x58107c[_0x6e69('0x26')],this['channels'][_0x58107c[_0x6e69('0x26')]][_0x56db09][_0x6e69('0x27')],_0x56db09);this[_0x6e69('0xb')][_0x58107c['uniqueid']][_0x56db09]['agentringnoanswer']=!![];this[_0x6e69('0xb')][_0x58107c[_0x6e69('0x26')]][_0x56db09][_0x6e69('0x54')]=moment()[_0x6e69('0x3a')](_0x6e69('0x2e'));this[_0x6e69('0xb')][_0x58107c[_0x6e69('0x26')]][_0x56db09]['lastevent']=_0x6e69('0x61');this[_0x6e69('0xb')][_0x58107c[_0x6e69('0x26')]][_0x56db09][_0x6e69('0x57')]=_0x6e69('0x61');logger[_0x6e69('0x29')](_0x6e69('0x62'),_0x58107c['uniqueid'],util['inspect'](this['channels'][_0x58107c[_0x6e69('0x26')]][_0x56db09],{'showHidden':![],'depth':null}));ami[_0x6e69('0x36')](_0x6e69('0x63'),this['channels'][_0x58107c[_0x6e69('0x26')]][_0x56db09]);}}}}}catch(_0x5727b5){logger[_0x6e69('0x3d')](_0x6e69('0x64'),_0x58107c[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x5727b5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x18')]=function(_0x124ba1){try{if(this[_0x6e69('0x25')](_0x124ba1)){logger[_0x6e69('0x29')](_0x6e69('0x65'),_0x124ba1[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x124ba1,{'showHidden':![],'depth':null}));if(this[_0x6e69('0xb')][_0x124ba1['uniqueid']]){for(var _0x53a2d1 in this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]]){if(this['channels'][_0x124ba1[_0x6e69('0x26')]][_0x6e69('0x3f')](_0x53a2d1)){if(this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x41')]&&!this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x17')]){logger[_0x6e69('0x53')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x124ba1[_0x6e69('0x26')],this[_0x6e69('0xb')][_0x124ba1['uniqueid']][_0x53a2d1][_0x6e69('0x27')],_0x53a2d1);this['channels'][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x17')]=!![];this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x66')]=moment()[_0x6e69('0x3a')](_0x6e69('0x2e'));this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x46')]='complete';this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x57')]=_0x124ba1[_0x6e69('0x57')]==_0x6e69('0x67')?'agent':_0x124ba1['reason'];this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x68')]=_0x124ba1[_0x6e69('0x68')];if(this['voiceQueues'][_0x124ba1['queue']]&&this[_0x6e69('0xd')][_0x124ba1['queue']]['acw']){this['channels'][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x69')]=this[_0x6e69('0xd')][_0x124ba1[_0x6e69('0x2d')]][_0x6e69('0x6a')];this['channels'][_0x124ba1['uniqueid']][_0x53a2d1][_0x6e69('0x6b')]=!![];}this['agents'][_0x124ba1[_0x6e69('0x4a')]]=_[_0x6e69('0x34')](this[_0x6e69('0xe')][_0x124ba1['interface']],[_0x6e69('0x2d'),_0x6e69('0x4c')]);logger[_0x6e69('0x29')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x124ba1['uniqueid'],util[_0x6e69('0x2b')](this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1],{'showHidden':![],'depth':null}));ami[_0x6e69('0x36')](_0x6e69('0x6c'),this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1]);logger[_0x6e69('0x29')](_0x6e69('0x6d'),_0x124ba1[_0x6e69('0x26')],util['inspect']({'id':this['agents'][_0x124ba1[_0x6e69('0x4a')]]['id'],'destaccountcode':_0x124ba1[_0x6e69('0x6e')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x6e69('0x3a')]('user:%s',_0x124ba1['membername']),'user:agentcomplete',{'id':this[_0x6e69('0xe')][_0x124ba1[_0x6e69('0x4a')]]['id'],'destaccountcode':Number(_0x124ba1['destaccountcode'])});}}}}}}catch(_0x5a66aa){logger[_0x6e69('0x3d')](_0x6e69('0x6f'),_0x124ba1['uniqueid'],util[_0x6e69('0x2b')](_0x5a66aa,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x6e69('0x1a')]=function(_0x3f3e08){try{if(this[_0x6e69('0x25')](_0x3f3e08)){logger[_0x6e69('0x29')](_0x6e69('0x70'),_0x3f3e08[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x3f3e08,{'showHidden':![],'depth':null}));this[_0x6e69('0x71')](_0x3f3e08[_0x6e69('0x26')],_[_0x6e69('0x72')](_0x3f3e08[_0x6e69('0x73')])[0x0],_0x3f3e08[_0x6e69('0x74')]);if(this['channels'][_0x3f3e08[_0x6e69('0x26')]]){for(var _0x529c02 in this[_0x6e69('0xb')][_0x3f3e08[_0x6e69('0x26')]]){if(this[_0x6e69('0xb')][_0x3f3e08[_0x6e69('0x26')]][_0x6e69('0x3f')](_0x529c02)){logger['info'](_0x6e69('0x75'),_0x3f3e08[_0x6e69('0x26')],_0x529c02,_[_0x6e69('0x72')](_0x3f3e08[_0x6e69('0x73')])[0x0],_0x3f3e08[_0x6e69('0x74')]);if(_[_0x6e69('0x2c')](this[_0x6e69('0xb')][_0x3f3e08[_0x6e69('0x26')]][_0x529c02][_0x6e69('0xf')])){this[_0x6e69('0xb')][_0x3f3e08[_0x6e69('0x26')]][_0x529c02][_0x6e69('0xf')]={};}this[_0x6e69('0xb')][_0x3f3e08[_0x6e69('0x26')]][_0x529c02][_0x6e69('0xf')]=this[_0x6e69('0xf')][_0x3f3e08[_0x6e69('0x26')]];}}}}}catch(_0x2022ac){logger['error'](_0x6e69('0x76'),_0x3f3e08[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x2022ac,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x6e69('0x71')]=function(_0x2dde59,_0x487b63,_0x16d380){var _0x24f1ea=[_0x6e69('0x77'),_0x6e69('0x78'),_0x6e69('0x79'),_0x6e69('0x7a'),_0x6e69('0x7b'),_0x6e69('0x7c'),_0x6e69('0x7d'),_0x6e69('0x7e'),_0x6e69('0x7f'),_0x6e69('0x80'),_0x6e69('0x81'),_0x6e69('0x82'),_0x6e69('0x83'),'memberdynamic',_0x6e69('0x84'),_0x6e69('0x85'),_0x6e69('0x27'),'memberpenalty',_0x6e69('0x86')];if(!_[_0x6e69('0x87')](_0x487b63)&&!_[_0x6e69('0x88')](_0x24f1ea,_0x487b63)){if(_[_0x6e69('0x2c')](this[_0x6e69('0xf')][_0x2dde59])){this[_0x6e69('0xf')][_0x2dde59]={};}this[_0x6e69('0xf')][_0x2dde59][_0x487b63]=_0x16d380;}};VoiceAgentReport['prototype']['syncHangup']=function(_0xfc531c){try{if(this['isNotNull'](_0xfc531c)){logger[_0x6e69('0x29')](_0x6e69('0x89'),_0xfc531c[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0xfc531c,{'showHidden':![],'depth':null}));if(this[_0x6e69('0xb')][_0xfc531c[_0x6e69('0x26')]]){for(var _0x4dd140 in this[_0x6e69('0xb')][_0xfc531c[_0x6e69('0x26')]]){if(this[_0x6e69('0xb')][_0xfc531c['uniqueid']]['hasOwnProperty'](_0x4dd140)){if(this['channels'][_0xfc531c[_0x6e69('0x26')]][_0x4dd140][_0x6e69('0x57')]==_0x6e69('0x67')&&this[_0x6e69('0xb')][_0xfc531c['uniqueid']][_0x4dd140][_0x6e69('0x17')]){logger[_0x6e69('0x53')](_0x6e69('0x8a'),_0xfc531c[_0x6e69('0x26')],_0x4dd140);this['channels'][_0xfc531c[_0x6e69('0x26')]][_0x4dd140][_0x6e69('0x66')]=moment()[_0x6e69('0x3a')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x6e69('0x29')](_0x6e69('0x8b'),_0xfc531c['uniqueid'],util[_0x6e69('0x2b')](_['values'](this[_0x6e69('0xb')][_0xfc531c['uniqueid']]),{'showHidden':![],'depth':null}));ami['emit'](_0x6e69('0x8c'),_[_0x6e69('0x8d')](this[_0x6e69('0xb')][_0xfc531c[_0x6e69('0x26')]]));delete this[_0x6e69('0xb')][_0xfc531c[_0x6e69('0x26')]];}if(this['variables'][_0xfc531c[_0x6e69('0x26')]]){delete this[_0x6e69('0xf')][_0xfc531c[_0x6e69('0x26')]];}}}catch(_0x41b154){logger[_0x6e69('0x3d')](_0x6e69('0x8e'),_0xfc531c['uniqueid'],util[_0x6e69('0x2b')](_0x41b154,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x22')]=function(_0x1cf889){try{if(this[_0x6e69('0x25')](_0x1cf889)){logger[_0x6e69('0x29')](_0x6e69('0x8f'),_0x1cf889['uniqueid'],util[_0x6e69('0x2b')](_0x1cf889,{'showHidden':![],'depth':null}));if(this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]]){for(var _0x45cee4 in this['channels'][_0x1cf889['transfereeuniqueid']]){if(this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]][_0x6e69('0x3f')](_0x45cee4)){if(_0x1cf889[_0x6e69('0x91')]===_0x45cee4){logger[_0x6e69('0x53')](_0x6e69('0x92'),_0x1cf889[_0x6e69('0x26')],this['channels'][_0x1cf889[_0x6e69('0x90')]][_0x45cee4][_0x6e69('0x27')],_0x45cee4);var _0x16baa2=moment();this['channels'][_0x1cf889['transfereeuniqueid']][_0x45cee4][_0x6e69('0x17')]=!![];this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]][_0x45cee4][_0x6e69('0x66')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]][_0x45cee4][_0x6e69('0x46')]=_0x6e69('0x93');this['channels'][_0x1cf889[_0x6e69('0x90')]][_0x45cee4]['reason']='transfer';this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]][_0x45cee4]['talktime']=_0x16baa2['diff'](this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]][_0x45cee4][_0x6e69('0x41')],_0x6e69('0x94'));}}}}if(this['channels'][_0x1cf889[_0x6e69('0x95')]]){var _0x49357c=this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x95')]];this[_0x6e69('0xb')][_0x1cf889['secondtransfereruniqueid']]=this['channels'][_0x1cf889[_0x6e69('0x90')]];this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]]=_0x49357c;}}}catch(_0xebb5e6){logger[_0x6e69('0x3d')]('[%s][voiceAgentReport][attendedtransfer]',_0x1cf889[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0xebb5e6,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')]['syncBlindTransfer']=function(_0x359bbf){try{if(this[_0x6e69('0x25')](_0x359bbf)){logger[_0x6e69('0x29')](_0x6e69('0x96'),_0x359bbf['uniqueid'],util[_0x6e69('0x2b')](_0x359bbf,{'showHidden':![],'depth':null}));if(this[_0x6e69('0xb')][_0x359bbf['transfereeuniqueid']]){for(var _0xf166b7 in this['channels'][_0x359bbf['transfereeuniqueid']]){if(this[_0x6e69('0xb')][_0x359bbf[_0x6e69('0x90')]][_0x6e69('0x3f')](_0xf166b7)){if(_0x359bbf[_0x6e69('0x97')]===_0xf166b7){logger[_0x6e69('0x53')]('[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x359bbf[_0x6e69('0x26')],this[_0x6e69('0xb')][_0x359bbf['transfereeuniqueid']][_0xf166b7]['membername'],_0xf166b7);var _0x34100d=moment();this[_0x6e69('0xb')][_0x359bbf[_0x6e69('0x90')]][_0xf166b7][_0x6e69('0x17')]=!![];this[_0x6e69('0xb')][_0x359bbf[_0x6e69('0x90')]][_0xf166b7]['agentcompleteAt']=_0x34100d;this[_0x6e69('0xb')][_0x359bbf['transfereeuniqueid']][_0xf166b7][_0x6e69('0x46')]=_0x6e69('0x93');this[_0x6e69('0xb')][_0x359bbf['transfereeuniqueid']][_0xf166b7][_0x6e69('0x57')]='transfer';this['channels'][_0x359bbf[_0x6e69('0x90')]][_0xf166b7]['talktime']=_0x34100d[_0x6e69('0x98')](this[_0x6e69('0xb')][_0x359bbf[_0x6e69('0x90')]][_0xf166b7][_0x6e69('0x41')],'seconds');}}}}}}catch(_0x168b18){logger['error'](_0x6e69('0x99'),_0x359bbf[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x168b18,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x1e')]=function(_0x28329e){var _0x4824d1='';try{if(this[_0x6e69('0x25')](_0x28329e)){logger[_0x6e69('0x29')](_0x6e69('0x9a'),_0x28329e[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x28329e,{'showHidden':![],'depth':null}));if(_0x28329e['channel']){_0x4824d1=_0x28329e[_0x6e69('0x9b')]['substring'](0x0,_0x28329e['channel']['lastIndexOf']('-'));if(this['agents'][_0x4824d1]){logger[_0x6e69('0x53')]('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0x28329e[_0x6e69('0x26')],_0x4824d1);this['agents'][_0x4824d1][_0x6e69('0x9c')]=!![];}}}}catch(_0x9e1691){logger['error'](_0x6e69('0x9d'),_0x28329e[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x9e1691,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x20')]=function(_0x16ec5f){var _0x26075b='';try{if(this[_0x6e69('0x25')](_0x16ec5f)){logger['debug'](_0x6e69('0x9e'),_0x16ec5f['uniqueid'],util[_0x6e69('0x2b')](_0x16ec5f,{'showHidden':![],'depth':null}));if(_0x16ec5f['channel']){_0x26075b=_0x16ec5f[_0x6e69('0x9b')][_0x6e69('0x9f')](0x0,_0x16ec5f[_0x6e69('0x9b')][_0x6e69('0xa0')]('-'));if(this[_0x6e69('0xe')][_0x26075b]){logger[_0x6e69('0x53')](_0x6e69('0xa1'),_0x16ec5f[_0x6e69('0x26')],_0x26075b);this[_0x6e69('0xe')][_0x26075b]['onhold']=![];}}}}catch(_0x208198){logger[_0x6e69('0x3d')]('[%s][voiceAgentReport][musiconholdstop]',_0x16ec5f['uniqueid'],util[_0x6e69('0x2b')](_0x208198,{'showHidden':![],'depth':null}));}};module[_0x6e69('0xa2')]=VoiceAgentReport;
\ No newline at end of file
index 7d2a5d8..3ea68a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcfc=['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','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcalluniqueid','parse','sipcallid','sipcalllinkedid','[%s][voiceCallReport][varset]','syncHangup','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','endtime','billableseconds','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','then','transferType','transferToInternal','isEmpty','getSettings','stopRecordingOnTransfer','resolve','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','BlindTransfer','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','outbound','routeid','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstop]\x20event:','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','util','path','../../../config/environment','../../../config/logger','ami','../model/channel','../rpc/setting','set','queue','agi','playback','voicemail','FAILED','NO\x20ANSWER','ANSWERED','defaults','redis','channels','agents','blindTransfers','coreshowchannel','bind','syncNewExten','syncNewChannel','newstate','varset','syncVarSet','newcallerid','syncNewCallerId','attendedtransfer','blindtransfer','syncBlindTransfer','syncMusicOnHoldStart','syncMusicOnHoldStop','[voiceCallReport][coreshowchannels]\x20started','error','inspect','isUndefined','prototype','emit','isNotNull','uniqueid','calleridname','calleridnum','linkedid','merge','pick','keys','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','name','user:agentconnect','accountcode','[%s][voiceCallReport][newchannel]\x20event:','info','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','context','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','from-sip','undefined','debug','application','applicationdata','appdata','startsWith','CDR(routeAlias)','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','subtract','duration','seconds','includes','lastapplication','lastdata','cdr(','match','type','isNil','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','answered','answertime','connectedlinename','destinationchannel','channelstate','UserId','membername','holdtime','diff','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','user:%s','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.WAV','find','monitors','rec','[%s][voiceCallReport][varset]\x20event:','OutgoingSpoolFailed','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%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'];(function(_0xb04cb1,_0x13b8e3){var _0x309445=function(_0x21422b){while(--_0x21422b){_0xb04cb1['push'](_0xb04cb1['shift']());}};_0x309445(++_0x13b8e3);}(_0xdcfc,0x10e));var _0xcdcf=function(_0x392ca0,_0x41916f){_0x392ca0=_0x392ca0-0x0;var _0x289124=_0xdcfc[_0x392ca0];return _0x289124;};'use strict';var _=require(_0xcdcf('0x0'));var moment=require(_0xcdcf('0x1'));var util=require(_0xcdcf('0x2'));var path=require(_0xcdcf('0x3'));var Redis=require('ioredis');var config=require(_0xcdcf('0x4'));var logger=require(_0xcdcf('0x5'))(_0xcdcf('0x6'));var ami=require('../ami');var Channel=require(_0xcdcf('0x7'));var RpcSetting=require(_0xcdcf('0x8'));var applications=[_0xcdcf('0x9'),_0xcdcf('0xa'),_0xcdcf('0xb'),'dial',_0xcdcf('0xc'),_0xcdcf('0xd')];var dispositions=['NO\x20ANSWER',_0xcdcf('0xe'),'FAILED',_0xcdcf('0xf'),'NO\x20ANSWER',_0xcdcf('0xf'),_0xcdcf('0x10'),'BUSY',_0xcdcf('0xe'),_0xcdcf('0xe'),_0xcdcf('0xe')];config['redis']=_[_0xcdcf('0x11')](config[_0xcdcf('0x12')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xcdcf('0x12')]));function VoiceCallReport(_0x424b06){this[_0xcdcf('0x13')]=_0x424b06[_0xcdcf('0x13')];this[_0xcdcf('0x14')]=_0x424b06[_0xcdcf('0x14')];this[_0xcdcf('0x15')]={};ami['on'](_0xcdcf('0x16'),this['syncNewExten'][_0xcdcf('0x17')](this));ami['on']('newexten',this[_0xcdcf('0x18')][_0xcdcf('0x17')](this));ami['on']('newchannel',this[_0xcdcf('0x19')][_0xcdcf('0x17')](this));ami['on'](_0xcdcf('0x1a'),this['syncNewState'][_0xcdcf('0x17')](this));ami['on'](_0xcdcf('0x1b'),this[_0xcdcf('0x1c')]['bind'](this));ami['on']('hangup',this['syncHangup'][_0xcdcf('0x17')](this));ami['on'](_0xcdcf('0x1d'),this[_0xcdcf('0x1e')][_0xcdcf('0x17')](this));ami['on'](_0xcdcf('0x1f'),this['syncAttendedTransfer'][_0xcdcf('0x17')](this));ami['on'](_0xcdcf('0x20'),this[_0xcdcf('0x21')][_0xcdcf('0x17')](this));ami['on']('musiconholdstart',this[_0xcdcf('0x22')][_0xcdcf('0x17')](this));ami['on']('musiconholdstop',this[_0xcdcf('0x23')][_0xcdcf('0x17')](this));try{logger['info'](_0xcdcf('0x24'));ami['actionCoreShowChannels']();}catch(_0x5f0559){logger[_0xcdcf('0x25')]('[voiceCallReport][coreshowchannels]',util[_0xcdcf('0x26')](_0x5f0559,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype']['isNotNull']=function(_0x20ddf6){return _0x20ddf6!==null&&!_[_0xcdcf('0x27')](_0x20ddf6);};VoiceCallReport[_0xcdcf('0x28')][_0xcdcf('0x29')]=function(_0x396aed,_0x5644e8,_0x651e73){io['to'](_0x396aed)[_0xcdcf('0x29')](_0x5644e8,_0x651e73);};VoiceCallReport[_0xcdcf('0x28')][_0xcdcf('0x1e')]=function(_0x40f723){try{if(this[_0xcdcf('0x2a')](_0x40f723)){logger['info']('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x40f723[_0xcdcf('0x2b')],_0x40f723[_0xcdcf('0x2c')],_0x40f723[_0xcdcf('0x2d')]);logger['debug']('[%s][voiceCallReport][newcallerid]\x20event:',_0x40f723[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x40f723,{'showHidden':![],'depth':null}));if(_0x40f723[_0xcdcf('0x2b')]===_0x40f723[_0xcdcf('0x2e')]){if(!_['isUndefined'](this[_0xcdcf('0x13')][_0x40f723[_0xcdcf('0x2b')]])){_[_0xcdcf('0x2f')](this[_0xcdcf('0x13')][_0x40f723[_0xcdcf('0x2b')]],_[_0xcdcf('0x30')](_0x40f723,_[_0xcdcf('0x31')](this[_0xcdcf('0x13')][_0x40f723[_0xcdcf('0x2b')]])));}}if(_0x40f723['context']==='from-sip'){var _0x4b044d=this[_0xcdcf('0x14')][_0x40f723[_0xcdcf('0x32')][_0xcdcf('0x33')]('-')[0x0]];if(_0x4b044d){if(_0x40f723[_0xcdcf('0x34')]==_0xcdcf('0x35')){_0x4b044d[_0xcdcf('0x36')]=_0x40f723[_0xcdcf('0x37')];this[_0xcdcf('0x29')](util[_0xcdcf('0x38')]('user:%s',_0x4b044d[_0xcdcf('0x39')]),_0xcdcf('0x3a'),{'id':_0x4b044d['id'],'destaccountcode':_0x4b044d[_0xcdcf('0x3b')],'destconnectedlinenum':_0x40f723['connectedlinenum']});}}}}}catch(_0x69109){logger[_0xcdcf('0x25')]('[%s][voiceCallReport][newcallerid]',_0x40f723[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x69109,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xcdcf('0x19')]=function(_0x26b9f9){try{if(this[_0xcdcf('0x2a')](_0x26b9f9)){logger['debug'](_0xcdcf('0x3c'),_0x26b9f9[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x26b9f9,{'showHidden':![],'depth':null}));if(this[_0xcdcf('0x13')][_0x26b9f9[_0xcdcf('0x2b')]]){return;}if(_0x26b9f9[_0xcdcf('0x32')]==='OutgoingSpoolFailed'){return;}if(_0x26b9f9[_0xcdcf('0x2b')]!==_0x26b9f9[_0xcdcf('0x2e')]&&!this[_0xcdcf('0x15')][_0x26b9f9[_0xcdcf('0x2e')]]){return;}logger[_0xcdcf('0x3d')](_0xcdcf('0x3e'),_0x26b9f9[_0xcdcf('0x2b')],_0x26b9f9[_0xcdcf('0x3f')],_0x26b9f9[_0xcdcf('0x34')]);this[_0xcdcf('0x13')][_0x26b9f9[_0xcdcf('0x2b')]]=new Channel();this[_0xcdcf('0x13')][_0x26b9f9[_0xcdcf('0x2b')]][_0xcdcf('0x40')]=moment()['format'](_0xcdcf('0x41'));this[_0xcdcf('0x13')][_0x26b9f9[_0xcdcf('0x2b')]][_0xcdcf('0x42')]=dispositions[_[_0xcdcf('0x43')](_0x26b9f9['channelstate'])];_['merge'](this['channels'][_0x26b9f9[_0xcdcf('0x2b')]],_[_0xcdcf('0x30')](_0x26b9f9,_[_0xcdcf('0x31')](this[_0xcdcf('0x13')][_0x26b9f9[_0xcdcf('0x2b')]])));if(_0x26b9f9['context']===_0xcdcf('0x44')){var _0x165b17=this['agents'][_0x26b9f9[_0xcdcf('0x32')]['split']('-')[0x0]];if(_0x165b17&&typeof _0x165b17[_0xcdcf('0x36')]===_0xcdcf('0x45')){_0x165b17['destconnectedlinenum']=_0x26b9f9['exten'];logger['debug']('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x26b9f9[_0xcdcf('0x2b')],util[_0xcdcf('0x26')]({'id':_0x165b17['id'],'destaccountcode':_0x165b17[_0xcdcf('0x3b')],'destconnectedlinenum':_0x26b9f9[_0xcdcf('0x34')]},{'showHidden':![],'depth':null}));this[_0xcdcf('0x29')](util[_0xcdcf('0x38')]('user:%s',_0x165b17[_0xcdcf('0x39')]),_0xcdcf('0x3a'),{'id':_0x165b17['id'],'destaccountcode':_0x165b17[_0xcdcf('0x3b')],'destconnectedlinenum':_0x26b9f9[_0xcdcf('0x34')]});}}}}catch(_0x28323e){logger['error']('[%s][voiceCallReport][newchannel]',_0x26b9f9[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x28323e,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncNewExten']=function(_0x256009){try{if(this['isNotNull'](_0x256009)){logger[_0xcdcf('0x46')]('[%s][voiceCallReport][newexten]\x20event:',_0x256009[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x256009,{'showHidden':![],'depth':null}));if(_0x256009[_0xcdcf('0x32')]==='OutgoingSpoolFailed'||_0x256009[_0xcdcf('0x34')]==='h')return;if(_0x256009[_0xcdcf('0x2b')]===_0x256009[_0xcdcf('0x2e')]||this[_0xcdcf('0x15')][_0x256009[_0xcdcf('0x2e')]]){_0x256009[_0xcdcf('0x47')]=_0x256009[_0xcdcf('0x47')]?_0x256009[_0xcdcf('0x47')]['toLowerCase']():undefined;_0x256009[_0xcdcf('0x48')]=_0x256009[_0xcdcf('0x49')]||_0x256009[_0xcdcf('0x48')];if(_0x256009[_0xcdcf('0x49')]&&!_0x256009[_0xcdcf('0x49')][_0xcdcf('0x4a')](_0xcdcf('0x4b'))&&_0x256009[_0xcdcf('0x47')]!==_0xcdcf('0xa')){_0x256009['applicationdata']=_0x256009[_0xcdcf('0x48')][_0xcdcf('0x4c')]();}logger['info'](_0xcdcf('0x4d'),_0x256009['uniqueid'],_0x256009['application'],_0x256009[_0xcdcf('0x48')]);if(_[_0xcdcf('0x27')](this[_0xcdcf('0x13')][_0x256009[_0xcdcf('0x2b')]])){this[_0xcdcf('0x13')][_0x256009['uniqueid']]=new Channel();this[_0xcdcf('0x13')][_0x256009[_0xcdcf('0x2b')]]['starttime']=_0x256009['duration']?moment()[_0xcdcf('0x4e')](moment[_0xcdcf('0x4f')](_0x256009[_0xcdcf('0x4f')])[_0xcdcf('0x50')](),_0xcdcf('0x50'))['format'](_0xcdcf('0x41')):moment()[_0xcdcf('0x38')](_0xcdcf('0x41'));this[_0xcdcf('0x13')][_0x256009[_0xcdcf('0x2b')]][_0xcdcf('0x42')]='NO\x20ANSWER';}_[_0xcdcf('0x2f')](this[_0xcdcf('0x13')][_0x256009[_0xcdcf('0x2b')]],_[_0xcdcf('0x30')](_0x256009,_['keys'](this['channels'][_0x256009[_0xcdcf('0x2b')]])));if(_[_0xcdcf('0x51')](applications,_0x256009[_0xcdcf('0x47')])){this[_0xcdcf('0x13')][_0x256009[_0xcdcf('0x2b')]][_0xcdcf('0x52')]=_0x256009['application'];this[_0xcdcf('0x13')][_0x256009[_0xcdcf('0x2b')]][_0xcdcf('0x53')]=_0x256009[_0xcdcf('0x48')];if(_0x256009[_0xcdcf('0x47')]===_0xcdcf('0x9')&&_['startsWith'](_0x256009[_0xcdcf('0x48')][_0xcdcf('0x4c')](),_0xcdcf('0x54'))){var _0x13b372=_0x256009[_0xcdcf('0x48')][_0xcdcf('0x33')]('=');var _0x5cf50c=_0x13b372[0x0][_0xcdcf('0x4c')]()[_0xcdcf('0x55')](/cdr\((.*)\)/);if(_0x5cf50c){if(_0x5cf50c[0x1]===_0xcdcf('0x56')&&!_[_0xcdcf('0x57')](this['channels'][_0x256009[_0xcdcf('0x2b')]][_0x5cf50c[0x1]]))return;this[_0xcdcf('0x13')][_0x256009['uniqueid']][_0x5cf50c[0x1]]=_0x13b372[0x1];}}else if(_0x256009[_0xcdcf('0x47')]===_0xcdcf('0xa')){this[_0xcdcf('0x13')][_0x256009['uniqueid']][_0xcdcf('0xa')]=_0x256009[_0xcdcf('0x48')][_0xcdcf('0x33')](',')[0x0];}}}}}catch(_0x235ae1){logger[_0xcdcf('0x25')](_0xcdcf('0x58'),_0x256009[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x235ae1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcdcf('0x28')][_0xcdcf('0x59')]=function(_0x2a89f3){try{if(this[_0xcdcf('0x2a')](_0x2a89f3)){logger[_0xcdcf('0x3d')](_0xcdcf('0x5a'),_0x2a89f3['uniqueid'],_0x2a89f3[_0xcdcf('0x2e')],_0x2a89f3[_0xcdcf('0x2c')],_0x2a89f3[_0xcdcf('0x2d')]);logger[_0xcdcf('0x46')]('[%s][voiceCallReport][newstate]\x20event:',_0x2a89f3[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x2a89f3,{'showHidden':![],'depth':null}));if(_0x2a89f3['channelstate']!=='6')return;var _0x16682d=this['agents'][_0x2a89f3[_0xcdcf('0x32')][_0xcdcf('0x33')]('-')[0x0]];if(_0x2a89f3[_0xcdcf('0x2b')]!==_0x2a89f3[_0xcdcf('0x2e')]){var _0x5c12fa=moment();if(this['channels'][_0x2a89f3[_0xcdcf('0x2e')]]){if(!this[_0xcdcf('0x13')][_0x2a89f3['linkedid']]['answered']){this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2e')]][_0xcdcf('0x5b')]=!![];this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2e')]][_0xcdcf('0x5c')]=_0x5c12fa[_0xcdcf('0x38')](_0xcdcf('0x41'));if(this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2e')]][_0xcdcf('0x40')]){this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2e')]]['holdtime']=_0x5c12fa['diff'](this[_0xcdcf('0x13')][_0x2a89f3['linkedid']]['starttime'],'seconds');}}this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2e')]][_0xcdcf('0x2e')]=_0x2a89f3[_0xcdcf('0x2b')];if(_0x2a89f3['calleridnum']!==_0xcdcf('0x35')){this['channels'][_0x2a89f3[_0xcdcf('0x2e')]][_0xcdcf('0x37')]=_0x2a89f3[_0xcdcf('0x2d')];}this['channels'][_0x2a89f3[_0xcdcf('0x2e')]][_0xcdcf('0x5d')]=_0x2a89f3[_0xcdcf('0x2c')];this['channels'][_0x2a89f3[_0xcdcf('0x2e')]][_0xcdcf('0x5e')]=_0x2a89f3[_0xcdcf('0x32')];this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2e')]][_0xcdcf('0x42')]=dispositions[_[_0xcdcf('0x43')](_0x2a89f3[_0xcdcf('0x5f')])];if(_0x16682d){this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2e')]][_0xcdcf('0x60')]=_0x16682d['id'];this[_0xcdcf('0x13')][_0x2a89f3['linkedid']][_0xcdcf('0x61')]=_0x16682d[_0xcdcf('0x39')];}}if(this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2b')]]){if(!this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2b')]]['answered']){this[_0xcdcf('0x13')][_0x2a89f3['uniqueid']][_0xcdcf('0x5b')]=!![];this[_0xcdcf('0x13')][_0x2a89f3['uniqueid']]['answertime']=_0x5c12fa[_0xcdcf('0x38')]('YYYY-MM-DD\x20HH:mm:ss');if(this['channels'][_0x2a89f3[_0xcdcf('0x2b')]]['starttime']){this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2b')]][_0xcdcf('0x62')]=_0x5c12fa[_0xcdcf('0x63')](this['channels'][_0x2a89f3['uniqueid']][_0xcdcf('0x40')],_0xcdcf('0x50'));}}if(_0x2a89f3[_0xcdcf('0x2d')]!==_0xcdcf('0x35')){this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2b')]][_0xcdcf('0x37')]=_0x2a89f3[_0xcdcf('0x2d')];}this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2b')]][_0xcdcf('0x5d')]=_0x2a89f3[_0xcdcf('0x2c')];this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2b')]][_0xcdcf('0x5e')]=_0x2a89f3[_0xcdcf('0x32')];this['channels'][_0x2a89f3[_0xcdcf('0x2b')]]['disposition']=dispositions[_[_0xcdcf('0x43')](_0x2a89f3['channelstate'])];}}else{if(this['channels'][_0x2a89f3[_0xcdcf('0x2b')]]){if(_0x16682d){this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2b')]]['UserId']=_0x16682d['id'];this[_0xcdcf('0x13')][_0x2a89f3['uniqueid']][_0xcdcf('0x61')]=_0x16682d[_0xcdcf('0x39')];}}}if(_0x2a89f3[_0xcdcf('0x3f')]===_0xcdcf('0x44')){if(_0x16682d){_0x16682d['destconnectedlinenum']=_0x2a89f3[_0xcdcf('0x34')];var _0x36f2c6,_0x4c4182;if(this[_0xcdcf('0x13')][_0x2a89f3['uniqueid']]){_0x36f2c6=this['channels'][_0x2a89f3[_0xcdcf('0x2b')]][_0xcdcf('0x64')];_0x4c4182=this[_0xcdcf('0x13')][_0x2a89f3['uniqueid']][_0xcdcf('0xa')];}else if(this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2e')]]){_0x36f2c6=this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2e')]][_0xcdcf('0x64')];_0x4c4182=this[_0xcdcf('0x13')][_0x2a89f3[_0xcdcf('0x2e')]]['queue'];}_0x16682d[_0xcdcf('0xa')]=_0x4c4182;_0x16682d[_0xcdcf('0x64')]=_0x36f2c6;var _0x2dbbf5={'id':_0x16682d['id'],'name':_0x16682d[_0xcdcf('0x39')],'agentconnected':!![],'destaccountcode':_0x16682d[_0xcdcf('0x3b')],'destconnectedlinenum':_0x2a89f3[_0xcdcf('0x34')],'queue':_0x4c4182||undefined,'routealias':_0x36f2c6,'uniqueid':_0x2a89f3[_0xcdcf('0x2e')]};logger['debug'](_0xcdcf('0x65'),_0x2a89f3[_0xcdcf('0x2b')],util['inspect'](_0x2dbbf5,{'showHidden':![],'depth':null}));this[_0xcdcf('0x29')](util[_0xcdcf('0x38')](_0xcdcf('0x66'),_0x16682d['name']),_0xcdcf('0x3a'),_0x2dbbf5);}}}}catch(_0x3d98a1){logger[_0xcdcf('0x25')](_0xcdcf('0x67'),_0x2a89f3['uniqueid'],util[_0xcdcf('0x26')](_0x3d98a1,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xcdcf('0x68')]=function(_0x55e354,_0xc77528){try{if(this[_0xcdcf('0x13')][_0x55e354]){logger[_0xcdcf('0x3d')](_0xcdcf('0x69'),_0x55e354,_0xc77528);this['channels'][_0x55e354][_0xcdcf('0x6a')]=!![];if(_[_0xcdcf('0x6b')](_0xc77528,_0xcdcf('0x6c'))){_0xc77528=_0xc77528[_0xcdcf('0x6d')](_0xcdcf('0x6c'),_0xcdcf('0x6e'));}this[_0xcdcf('0x13')][_0x55e354]['monitorFilename']=_0xc77528;var _0x43be44=_[_0xcdcf('0x6f')](this[_0xcdcf('0x13')][_0x55e354][_0xcdcf('0x70')],{'filename':_0xc77528});if(_['isNil'](_0x43be44)){this[_0xcdcf('0x13')][_0x55e354][_0xcdcf('0x70')]['push']({'filename':_0xc77528,'createdAt':moment()[_0xcdcf('0x38')](_0xcdcf('0x41')),'mixmonitorid':'','status':_0xcdcf('0x71')});}}}catch(_0xded576){logger[_0xcdcf('0x25')]('[%s][voiceCallReport][mixMonitorFilename]',_0x55e354,util[_0xcdcf('0x26')](_0xded576,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcdcf('0x28')][_0xcdcf('0x1c')]=function(_0x58516b){try{if(this['isNotNull'](_0x58516b)){logger[_0xcdcf('0x46')](_0xcdcf('0x72'),_0x58516b[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x58516b,{'showHidden':![],'depth':null}));if(this[_0xcdcf('0x13')][_0x58516b['uniqueid']]&&_0x58516b[_0xcdcf('0x32')]!=_0xcdcf('0x73')){if(this[_0xcdcf('0x2a')](_0x58516b[_0xcdcf('0x74')])){if(this[_0xcdcf('0x2a')](_0x58516b[_0xcdcf('0x74')][_0xcdcf('0x75')])){logger['info'](_0xcdcf('0x76'),_0x58516b[_0xcdcf('0x2b')],_0x58516b[_0xcdcf('0x77')]);this[_0xcdcf('0x68')](_0x58516b[_0xcdcf('0x2b')],_0x58516b['value']);}else if(this[_0xcdcf('0x2a')](_0x58516b[_0xcdcf('0x74')]['xmd-phone'])){logger[_0xcdcf('0x3d')](_0xcdcf('0x78'),_0x58516b['uniqueid'],_0x58516b[_0xcdcf('0x77')]);this[_0xcdcf('0x13')][_0x58516b[_0xcdcf('0x2b')]][_0xcdcf('0x2d')]=_0x58516b[_0xcdcf('0x77')];}else if(this[_0xcdcf('0x2a')](_0x58516b[_0xcdcf('0x74')][_0xcdcf('0x79')])){logger[_0xcdcf('0x3d')](_0xcdcf('0x7a'),_0x58516b[_0xcdcf('0x2b')],_0x58516b[_0xcdcf('0x77')]);this[_0xcdcf('0x13')][_0x58516b[_0xcdcf('0x2b')]][_0xcdcf('0x7b')]=_0x58516b[_0xcdcf('0x77')];}else if(this[_0xcdcf('0x2a')](_0x58516b['variable'][_0xcdcf('0x7c')])){logger[_0xcdcf('0x3d')](_0xcdcf('0x7d'),_0x58516b['uniqueid'],_0x58516b['value']);this[_0xcdcf('0x13')][_0x58516b[_0xcdcf('0x2b')]][_0xcdcf('0x56')]=_0x58516b['value'];}else if(this[_0xcdcf('0x2a')](_0x58516b['variable'][_0xcdcf('0x7e')])){logger[_0xcdcf('0x3d')](_0xcdcf('0x7f'),_0x58516b['uniqueid'],_0x58516b[_0xcdcf('0x77')][_0xcdcf('0x33')](',')[0x0]);this[_0xcdcf('0x13')][_0x58516b['uniqueid']][_0xcdcf('0xa')]=_0x58516b[_0xcdcf('0x77')]['split'](',')[0x0];}else if(this[_0xcdcf('0x2a')](_0x58516b['variable'][_0xcdcf('0x80')])){logger[_0xcdcf('0x3d')](_0xcdcf('0x81'),_0x58516b[_0xcdcf('0x2b')],_0x58516b[_0xcdcf('0x77')]);this[_0xcdcf('0x13')][_0x58516b[_0xcdcf('0x2b')]][_0xcdcf('0x82')]=_0x58516b[_0xcdcf('0x77')];}else if(this[_0xcdcf('0x2a')](_0x58516b[_0xcdcf('0x74')][_0xcdcf('0x83')])){logger['info'](_0xcdcf('0x84'),_0x58516b['uniqueid'],_0x58516b['value']);this[_0xcdcf('0x13')][_0x58516b[_0xcdcf('0x2b')]][_0xcdcf('0x85')]=_0x58516b[_0xcdcf('0x77')];}else if(this[_0xcdcf('0x2a')](_0x58516b[_0xcdcf('0x74')][_0xcdcf('0x86')])){logger[_0xcdcf('0x3d')](_0xcdcf('0x87'),_0x58516b['uniqueid'],_0x58516b['value']);this[_0xcdcf('0x13')][_0x58516b[_0xcdcf('0x2b')]][_0xcdcf('0x88')]=_0x58516b[_0xcdcf('0x77')];}else if(this[_0xcdcf('0x2a')](_0x58516b[_0xcdcf('0x74')][_0xcdcf('0x89')])){logger['info'](_0xcdcf('0x8a'),_0x58516b[_0xcdcf('0x2b')],_0x58516b[_0xcdcf('0x77')]);this[_0xcdcf('0x13')][_0x58516b[_0xcdcf('0x2b')]][_0xcdcf('0xa')]=_0x58516b[_0xcdcf('0x77')];}else if(this[_0xcdcf('0x2a')](_0x58516b[_0xcdcf('0x74')]['sipcallid'])){logger[_0xcdcf('0x3d')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x58516b[_0xcdcf('0x2b')],_0x58516b[_0xcdcf('0x77')]);this['channels'][_0x58516b[_0xcdcf('0x2b')]][_0xcdcf('0x8b')]=_0x58516b[_0xcdcf('0x77')];}}}else if(this['isNotNull'](_0x58516b[_0xcdcf('0x74')][_0xcdcf('0x75')])){if(_0x58516b[_0xcdcf('0x77')]){var _0x1d6076=path[_0xcdcf('0x8c')](_0x58516b[_0xcdcf('0x77')])[_0xcdcf('0x39')];logger[_0xcdcf('0x3d')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x1d6076,_0x58516b['value']);this[_0xcdcf('0x68')](_0x1d6076,_0x58516b[_0xcdcf('0x77')]);}}else if(this[_0xcdcf('0x13')][_0x58516b[_0xcdcf('0x2e')]]){if(this[_0xcdcf('0x2a')](_0x58516b[_0xcdcf('0x74')])){if(this[_0xcdcf('0x2a')](_0x58516b[_0xcdcf('0x74')][_0xcdcf('0x8d')])){logger[_0xcdcf('0x3d')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x58516b[_0xcdcf('0x2e')],_0x58516b[_0xcdcf('0x77')]);this['channels'][_0x58516b[_0xcdcf('0x2e')]][_0xcdcf('0x8e')]=_0x58516b[_0xcdcf('0x77')];}}}}}catch(_0x2cfb16){logger[_0xcdcf('0x25')](_0xcdcf('0x8f'),_0x58516b[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x2cfb16,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xcdcf('0x90')]=function(_0x239ac7){try{if(this[_0xcdcf('0x2a')](_0x239ac7)){logger[_0xcdcf('0x46')](_0xcdcf('0x91'),_0x239ac7['uniqueid'],util[_0xcdcf('0x26')](_0x239ac7,{'showHidden':![],'depth':null}));if(this[_0xcdcf('0x15')][_0x239ac7[_0xcdcf('0x2e')]]){if(this[_0xcdcf('0x13')][this[_0xcdcf('0x15')][_0x239ac7['linkedid']][_0xcdcf('0x2e')]]){this[_0xcdcf('0x13')][this[_0xcdcf('0x15')][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2e')]][_0xcdcf('0x2b')]=_0x239ac7[_0xcdcf('0x2b')];this[_0xcdcf('0x13')][this[_0xcdcf('0x15')][_0x239ac7['linkedid']][_0xcdcf('0x2e')]]['answered']=this['channels'][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x5b')];this[_0xcdcf('0x13')][this[_0xcdcf('0x15')][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2e')]][_0xcdcf('0x5c')]=this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x5c')];this[_0xcdcf('0x13')][this['blindTransfers'][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2e')]][_0xcdcf('0x5e')]=this['channels'][this[_0xcdcf('0x15')][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2e')]][_0xcdcf('0x32')];this['channels'][this[_0xcdcf('0x15')][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2e')]]['disposition']=this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x42')];this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]]=this[_0xcdcf('0x13')][this['blindTransfers'][_0x239ac7[_0xcdcf('0x2e')]]['linkedid']];delete this[_0xcdcf('0x13')][this[_0xcdcf('0x15')][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2e')]];}else if(this[_0xcdcf('0x13')][this['blindTransfers'][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2b')]]){this[_0xcdcf('0x13')][this['blindTransfers'][_0x239ac7['linkedid']]['uniqueid']]['uniqueid']=[this['channels'][this['blindTransfers'][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2b')]]['linkedid'],this['channels'][this[_0xcdcf('0x15')][_0x239ac7['linkedid']]['uniqueid']][_0xcdcf('0x2e')]=this[_0xcdcf('0x13')][this[_0xcdcf('0x15')][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2b')]][_0xcdcf('0x2b')]][0x0];this[_0xcdcf('0x13')][this['blindTransfers'][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2b')]]['answered']=this['channels'][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x5b')];this[_0xcdcf('0x13')][this[_0xcdcf('0x15')][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2b')]][_0xcdcf('0x5c')]=this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x5c')];this[_0xcdcf('0x13')][this['blindTransfers'][_0x239ac7['linkedid']]['uniqueid']][_0xcdcf('0x5e')]=this['channels'][this[_0xcdcf('0x15')][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2b')]][_0xcdcf('0x32')];this['channels'][this['blindTransfers'][_0x239ac7['linkedid']][_0xcdcf('0x2b')]][_0xcdcf('0x42')]=this[_0xcdcf('0x13')][_0x239ac7['uniqueid']][_0xcdcf('0x42')];this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]]=this[_0xcdcf('0x13')][this[_0xcdcf('0x15')][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2b')]];delete this[_0xcdcf('0x13')][this['blindTransfers'][_0x239ac7[_0xcdcf('0x2e')]][_0xcdcf('0x2b')]];}}if(this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]]){logger['info'](_0xcdcf('0x92'),_0x239ac7[_0xcdcf('0x2b')],_0x239ac7['cause-txt']);var _0x1f0cde=moment();this[_0xcdcf('0x13')][_0x239ac7['uniqueid']][_0xcdcf('0x93')]=_0x1f0cde[_0xcdcf('0x38')](_0xcdcf('0x41'));this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x4f')]=_0x1f0cde[_0xcdcf('0x63')](this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]]['starttime'],_0xcdcf('0x50'));if(this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x5b')]){this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x94')]=_0x1f0cde[_0xcdcf('0x63')](this[_0xcdcf('0x13')][_0x239ac7['uniqueid']][_0xcdcf('0x5c')],_0xcdcf('0x50'));this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x62')]=this['channels'][_0x239ac7['uniqueid']][_0xcdcf('0x4f')]-this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x94')];}if(_0x239ac7[_0xcdcf('0x3f')]===_0xcdcf('0x44')){if(this[_0xcdcf('0x14')][_0x239ac7['channel'][_0xcdcf('0x33')]('-')[0x0]]){this[_0xcdcf('0x14')][_0x239ac7['channel'][_0xcdcf('0x33')]('-')[0x0]]=_['omit'](this[_0xcdcf('0x14')][_0x239ac7[_0xcdcf('0x32')][_0xcdcf('0x33')]('-')[0x0]],[_0xcdcf('0x36')]);logger[_0xcdcf('0x46')](_0xcdcf('0x95'),_0x239ac7['uniqueid'],util[_0xcdcf('0x26')]({'id':this[_0xcdcf('0x14')][_0x239ac7[_0xcdcf('0x32')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xcdcf('0x14')][_0x239ac7['channel']['split']('-')[0x0]][_0xcdcf('0x3b')]},{'showHidden':![],'depth':null}));this[_0xcdcf('0x29')](util[_0xcdcf('0x38')](_0xcdcf('0x66'),this[_0xcdcf('0x14')][_0x239ac7[_0xcdcf('0x32')]['split']('-')[0x0]][_0xcdcf('0x39')]),_0xcdcf('0x96'),{'id':this[_0xcdcf('0x14')][_0x239ac7[_0xcdcf('0x32')][_0xcdcf('0x33')]('-')[0x0]]['id'],'destaccountcode':this[_0xcdcf('0x14')][_0x239ac7[_0xcdcf('0x32')][_0xcdcf('0x33')]('-')[0x0]][_0xcdcf('0x3b')]});for(var _0x581bd0=0x0;_0x581bd0<Object[_0xcdcf('0x31')](this['agents'])['length'];_0x581bd0++){var _0x30c607=Object[_0xcdcf('0x31')](this[_0xcdcf('0x14')])[_0x581bd0];var _0x199d23=this[_0xcdcf('0x14')][_0x30c607];if(_0x199d23[_0xcdcf('0x3b')]===Number(this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x37')])){this['emit'](util[_0xcdcf('0x38')](_0xcdcf('0x66'),_0x199d23[_0xcdcf('0x39')]),_0xcdcf('0x96'),{'id':_0x199d23['id'],'destaccountcode':_0x199d23[_0xcdcf('0x3b')],'transfer':this[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]]['transferType']});break;}}}}var _0x28bae0=this;Promise['resolve']()[_0xcdcf('0x97')](function(){var _0x52c63d=_0x28bae0[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]];if(typeof _0x52c63d[_0xcdcf('0x98')]==='undefined'){return;}if(_0x52c63d[_0xcdcf('0x99')]===!![]){return;}if(_[_0xcdcf('0x9a')](_0x52c63d[_0xcdcf('0x70')])){return;}return RpcSetting[_0xcdcf('0x9b')]()[_0xcdcf('0x97')](function(_0x28cfb0){if(!_0x28cfb0[_0xcdcf('0x9c')])return;return Promise[_0xcdcf('0x9d')]()[_0xcdcf('0x97')](function(){return ami[_0xcdcf('0x9e')]({'action':_0xcdcf('0x9f'),'channel':_0x52c63d[_0xcdcf('0x32')]})[_0xcdcf('0xa0')](function(){});})[_0xcdcf('0x97')](function(){return ami[_0xcdcf('0x9e')]({'action':'StopMixMonitor','channel':_0x52c63d['destinationchannel']})[_0xcdcf('0xa0')](function(){})[_0xcdcf('0xa1')](function(){var _0x32fcad=_0x28bae0[_0xcdcf('0x14')][_0x52c63d[_0xcdcf('0x5e')][_0xcdcf('0x33')]('-')[0x0]];if(!_0x32fcad)return;io['emit'](_0xcdcf('0xa2'),{'agentId':_0x32fcad['id'],'uniqueid':_0x52c63d[_0xcdcf('0x2b')]});});});});})[_0xcdcf('0x97')](function(){if(_0x239ac7[_0xcdcf('0xa3')]===_0xcdcf('0xa4')){_0x28bae0['blindTransfers'][_0x239ac7['uniqueid']]=_0x239ac7;}else{if(_0x28bae0[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]]&&_0x28bae0[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x56')]==='outbound'&&_0x28bae0['blindTransfers'][_0x239ac7[_0xcdcf('0x2b')]]){_0x28bae0['channels'][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x2b')]=[_0x28bae0['channels'][_0x239ac7[_0xcdcf('0x2b')]]['linkedid'],_0x28bae0[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x2e')]=_0x28bae0[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]][_0xcdcf('0x2b')]][0x0];delete _0x28bae0['blindTransfers'][_0x239ac7[_0xcdcf('0x2b')]];}}logger[_0xcdcf('0x46')](_0xcdcf('0xa5'),_0x239ac7[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x28bae0['channels'][_0x239ac7['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xcdcf('0x29')](_0xcdcf('0xa6'),_0x28bae0[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]]);delete _0x28bae0[_0xcdcf('0x13')][_0x239ac7[_0xcdcf('0x2b')]];});}}}catch(_0x175760){logger[_0xcdcf('0x25')](_0xcdcf('0xa7'),_0x239ac7['uniqueid'],util[_0xcdcf('0x26')](_0x175760,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncAttendedTransfer']=function(_0x3e316b){try{if(this[_0xcdcf('0x2a')](_0x3e316b)){logger[_0xcdcf('0x3d')](_0xcdcf('0xa8'),_0x3e316b[_0xcdcf('0x2b')],_0x3e316b['origtransferercalleridnum'],_0x3e316b[_0xcdcf('0xa9')]);logger[_0xcdcf('0x46')](_0xcdcf('0xaa'),_0x3e316b[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x3e316b,{'showHidden':![],'depth':null}));var _0x52fb2b;if(this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xab')]]){this['channels'][_0x3e316b['transfereeuniqueid']][_0xcdcf('0xac')]=_0x3e316b['origtransferercalleridnum'];this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xab')]][_0xcdcf('0xad')]=_0x3e316b[_0xcdcf('0xa9')];if(this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xae')]]){_0x52fb2b=this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xae')]];this[_0xcdcf('0x13')][_0x3e316b['secondtransfereruniqueid']]=this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xab')]];this[_0xcdcf('0x13')][_0x3e316b['transfereeuniqueid']]=_0x52fb2b;}this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xae')]]['transferType']=_0xcdcf('0xaf');}else if(this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xb0')]]){this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xb0')]]['transfercalleridnum']=_0x3e316b['origtransferercalleridnum'];this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xb0')]][_0xcdcf('0xad')]=_0x3e316b[_0xcdcf('0xa9')];if(this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xb1')]]){_0x52fb2b=this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xb1')]];this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xb1')]]=this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xb0')]];this[_0xcdcf('0x13')][_0x3e316b['transfertargetuniqueid']]=_0x52fb2b;}this['channels'][_0x3e316b['transfertargetuniqueid']][_0xcdcf('0x98')]='ATTENDED';}if((this['channels'][_0x3e316b[_0xcdcf('0xb1')]]||this['channels'][_0x3e316b[_0xcdcf('0xb2')]])&&this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xae')]]){var _0x51e576=_[_0xcdcf('0xb3')]([this['channels'][_0x3e316b[_0xcdcf('0xb1')]],this['channels'][_0x3e316b['origtransfererlinkedid']],this[_0xcdcf('0x13')][_0x3e316b['secondtransfereruniqueid']]],function(_0x2e041e){return _0x2e041e&&_0x2e041e[_0xcdcf('0x56')]===_0xcdcf('0xb4')&&_0x2e041e[_0xcdcf('0xb5')];});if(_0x51e576){if(this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xb1')]])this['channels'][_0x3e316b[_0xcdcf('0xb1')]][_0xcdcf('0x98')]=_0xcdcf('0xaf');if(this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xb2')]])this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xb2')]][_0xcdcf('0x98')]=_0xcdcf('0xaf');this[_0xcdcf('0x13')][_0x3e316b['secondtransfereruniqueid']]['transferType']=_0xcdcf('0xaf');}else{if(this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xab')]]){this[_0xcdcf('0x13')][_0x3e316b[_0xcdcf('0xae')]][_0xcdcf('0x99')]=!![];}if(this[_0xcdcf('0x13')][_0x3e316b['transfertargetuniqueid']]){this['channels'][_0x3e316b[_0xcdcf('0xb0')]][_0xcdcf('0x99')]=!![];}}}}}catch(_0x4e3a37){logger[_0xcdcf('0x25')]('[%s][voiceCallReport][attendedtransfer]',_0x3e316b[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x4e3a37,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncBlindTransfer']=function(_0x48174e){try{if(this[_0xcdcf('0x2a')](_0x48174e)){logger[_0xcdcf('0x3d')](_0xcdcf('0xb6'),_0x48174e[_0xcdcf('0x2b')],_0x48174e[_0xcdcf('0xb7')],_0x48174e[_0xcdcf('0xb8')]);logger[_0xcdcf('0x46')](_0xcdcf('0xb9'),_0x48174e[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x48174e,{'showHidden':![],'depth':null}));if(this[_0xcdcf('0x13')][_0x48174e[_0xcdcf('0xab')]]){this[_0xcdcf('0x13')][_0x48174e[_0xcdcf('0xab')]][_0xcdcf('0xac')]=_0x48174e['transfereecalleridnum'];this[_0xcdcf('0x13')][_0x48174e[_0xcdcf('0xab')]][_0xcdcf('0xad')]=_0x48174e['extension'];this['channels'][_0x48174e['transfereeuniqueid']][_0xcdcf('0x98')]=_0xcdcf('0xba');this[_0xcdcf('0x90')]({'event':_0xcdcf('0xa4'),'uniqueid':_0x48174e[_0xcdcf('0xab')],'linkedid':_0x48174e[_0xcdcf('0xbb')],'context':_0x48174e[_0xcdcf('0x3f')],'channel':_0x48174e[_0xcdcf('0xbc')]});}else{this[_0xcdcf('0x13')][_0x48174e[_0xcdcf('0xbb')]]['transferType']=_0xcdcf('0xba');this[_0xcdcf('0x90')]({'event':_0xcdcf('0xa4'),'uniqueid':_0x48174e[_0xcdcf('0xbb')],'linkedid':_0x48174e['transfereeuniqueid'],'context':_0x48174e['context'],'channel':_0x48174e['transfererchannel']});}}}catch(_0x432ae6){logger['error'](_0xcdcf('0xbd'),_0x48174e[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x432ae6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcdcf('0x28')]['syncMusicOnHoldStart']=function(_0x25d636){try{if(this[_0xcdcf('0x2a')](_0x25d636)){logger[_0xcdcf('0x46')](_0xcdcf('0xbe'),_0x25d636[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x25d636,{'showHidden':![],'depth':null}));if(this['channels'][_0x25d636[_0xcdcf('0x2b')]]){if(!_[_0xcdcf('0x57')](this[_0xcdcf('0x13')][_0x25d636[_0xcdcf('0x2b')]]['answertime'])){this['channels'][_0x25d636[_0xcdcf('0x2b')]][_0xcdcf('0xbf')]=moment()[_0xcdcf('0x38')](_0xcdcf('0x41'));logger[_0xcdcf('0x3d')](_0xcdcf('0xc0'),_0x25d636['uniqueid'],this[_0xcdcf('0x13')][_0x25d636['uniqueid']][_0xcdcf('0xbf')]);}}}}catch(_0x3a96f3){logger[_0xcdcf('0x25')]('[%s][voiceCallReport][musiconholdstart]',_0x25d636[_0xcdcf('0x2b')],util['inspect'](_0x3a96f3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcdcf('0x28')][_0xcdcf('0x23')]=function(_0x2d14b3){try{if(this['isNotNull'](_0x2d14b3)){logger[_0xcdcf('0x46')](_0xcdcf('0xc1'),_0x2d14b3['uniqueid'],util['inspect'](_0x2d14b3,{'showHidden':![],'depth':null}));if(this[_0xcdcf('0x13')][_0x2d14b3[_0xcdcf('0x2b')]]){if(!_['isNil'](this[_0xcdcf('0x13')][_0x2d14b3['uniqueid']][_0xcdcf('0xbf')])){this['channels'][_0x2d14b3[_0xcdcf('0x2b')]]['mohtime']+=moment()['milliseconds'](0x0)[_0xcdcf('0x63')](this[_0xcdcf('0x13')][_0x2d14b3[_0xcdcf('0x2b')]][_0xcdcf('0xbf')],_0xcdcf('0x50'));logger['info'](_0xcdcf('0xc2'),_0x2d14b3['uniqueid'],this[_0xcdcf('0x13')][_0x2d14b3[_0xcdcf('0x2b')]][_0xcdcf('0xc3')]);delete this['channels'][_0x2d14b3[_0xcdcf('0x2b')]][_0xcdcf('0xbf')];}}}}catch(_0x11ce23){logger[_0xcdcf('0x25')](_0xcdcf('0xc4'),_0x2d14b3[_0xcdcf('0x2b')],util[_0xcdcf('0x26')](_0x11ce23,{'showHidden':![],'depth':null}));}};module[_0xcdcf('0xc5')]=VoiceCallReport;
\ No newline at end of file
+var _0x416c=['callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','xmd-destination','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','destinationchannel','cause-txt','endtime','billableseconds','holdtime','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','ATTENDED','origtransfererlinkedid','some','routeid','transferToInternal','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','extension','BLIND','transfererchannel','transfereruniqueid','syncMusicOnHoldStart','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','moment','util','../../../config/environment','../../../config/logger','ami','../model/channel','../rpc/setting','set','agi','dial','playback','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','localhost','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','inspect','linkedid','merge','keys','context','from-sip','channel','split','exten','destconnectedlinenum','connectedlinenum','format','user:%s','name','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','disposition','channelstate','pick','undefined','user:agentconnect','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','queue','subtract','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','lastapplication','lastdata','cdr(','match','type','isNil','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','connectedlinename','UserId','membername','xcally-motion-preview','toNumber','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','.WAV','monitorFilename','find','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','syncMixMonitorFilename','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s'];(function(_0x38a7ac,_0x45514b){var _0x53061a=function(_0x1d2469){while(--_0x1d2469){_0x38a7ac['push'](_0x38a7ac['shift']());}};_0x53061a(++_0x45514b);}(_0x416c,0x116));var _0xc416=function(_0x358ccd,_0x310df7){_0x358ccd=_0x358ccd-0x0;var _0x4efe94=_0x416c[_0x358ccd];return _0x4efe94;};'use strict';var _=require('lodash');var moment=require(_0xc416('0x0'));var util=require(_0xc416('0x1'));var path=require('path');var Redis=require('ioredis');var config=require(_0xc416('0x2'));var logger=require(_0xc416('0x3'))(_0xc416('0x4'));var ami=require('../ami');var Channel=require(_0xc416('0x5'));var RpcSetting=require(_0xc416('0x6'));var applications=[_0xc416('0x7'),'queue',_0xc416('0x8'),_0xc416('0x9'),_0xc416('0xa'),'voicemail'];var dispositions=[_0xc416('0xb'),'FAILED',_0xc416('0xc'),'NO\x20ANSWER',_0xc416('0xb'),_0xc416('0xb'),_0xc416('0xd'),_0xc416('0xe'),'FAILED','FAILED',_0xc416('0xc')];config[_0xc416('0xf')]=_['defaults'](config[_0xc416('0xf')],{'host':_0xc416('0x10'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc416('0xf')]));function VoiceCallReport(_0x355182){this[_0xc416('0x11')]=_0x355182[_0xc416('0x11')];this[_0xc416('0x12')]=_0x355182['agents'];this[_0xc416('0x13')]={};ami['on'](_0xc416('0x14'),this[_0xc416('0x15')][_0xc416('0x16')](this));ami['on'](_0xc416('0x17'),this[_0xc416('0x15')][_0xc416('0x16')](this));ami['on'](_0xc416('0x18'),this[_0xc416('0x19')][_0xc416('0x16')](this));ami['on'](_0xc416('0x1a'),this['syncNewState']['bind'](this));ami['on'](_0xc416('0x1b'),this[_0xc416('0x1c')][_0xc416('0x16')](this));ami['on'](_0xc416('0x1d'),this[_0xc416('0x1e')][_0xc416('0x16')](this));ami['on'](_0xc416('0x1f'),this[_0xc416('0x20')][_0xc416('0x16')](this));ami['on'](_0xc416('0x21'),this[_0xc416('0x22')][_0xc416('0x16')](this));ami['on'](_0xc416('0x23'),this[_0xc416('0x24')][_0xc416('0x16')](this));ami['on'](_0xc416('0x25'),this['syncMusicOnHoldStart'][_0xc416('0x16')](this));ami['on'](_0xc416('0x26'),this[_0xc416('0x27')][_0xc416('0x16')](this));try{logger[_0xc416('0x28')](_0xc416('0x29'));ami[_0xc416('0x2a')]();}catch(_0x207136){logger[_0xc416('0x2b')](_0xc416('0x2c'),util['inspect'](_0x207136,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xc416('0x2d')][_0xc416('0x2e')]=function(_0x2d0f0e){return _0x2d0f0e!==null&&!_[_0xc416('0x2f')](_0x2d0f0e);};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x30')]=function(_0x595867,_0x5342c1,_0x43dc66){io['to'](_0x595867)[_0xc416('0x30')](_0x5342c1,_0x43dc66);};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x20')]=function(_0x39289f){try{if(this['isNotNull'](_0x39289f)){logger[_0xc416('0x28')](_0xc416('0x31'),_0x39289f[_0xc416('0x32')],_0x39289f[_0xc416('0x33')],_0x39289f[_0xc416('0x34')]);logger[_0xc416('0x35')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x39289f[_0xc416('0x32')],util[_0xc416('0x36')](_0x39289f,{'showHidden':![],'depth':null}));if(_0x39289f[_0xc416('0x32')]===_0x39289f[_0xc416('0x37')]){if(!_[_0xc416('0x2f')](this[_0xc416('0x11')][_0x39289f[_0xc416('0x32')]])){_[_0xc416('0x38')](this[_0xc416('0x11')][_0x39289f['uniqueid']],_['pick'](_0x39289f,_[_0xc416('0x39')](this[_0xc416('0x11')][_0x39289f['uniqueid']])));}}if(_0x39289f[_0xc416('0x3a')]===_0xc416('0x3b')){var _0x83c35=this['agents'][_0x39289f[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]];if(_0x83c35){if(_0x39289f[_0xc416('0x3e')]=='xcally-motion-preview'){_0x83c35[_0xc416('0x3f')]=_0x39289f[_0xc416('0x40')];this[_0xc416('0x30')](util[_0xc416('0x41')](_0xc416('0x42'),_0x83c35[_0xc416('0x43')]),'user:agentconnect',{'id':_0x83c35['id'],'destaccountcode':_0x83c35[_0xc416('0x44')],'destconnectedlinenum':_0x39289f['connectedlinenum']});}}}}}catch(_0x51d45b){logger[_0xc416('0x2b')](_0xc416('0x45'),_0x39289f[_0xc416('0x32')],util['inspect'](_0x51d45b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x19')]=function(_0x4e64b3){try{if(this[_0xc416('0x2e')](_0x4e64b3)){logger[_0xc416('0x35')](_0xc416('0x46'),_0x4e64b3[_0xc416('0x32')],util[_0xc416('0x36')](_0x4e64b3,{'showHidden':![],'depth':null}));if(this[_0xc416('0x11')][_0x4e64b3[_0xc416('0x32')]]){return;}if(_0x4e64b3[_0xc416('0x3c')]===_0xc416('0x47')){return;}if(_0x4e64b3[_0xc416('0x32')]!==_0x4e64b3[_0xc416('0x37')]&&!this[_0xc416('0x13')][_0x4e64b3[_0xc416('0x37')]]){return;}logger['info'](_0xc416('0x48'),_0x4e64b3[_0xc416('0x32')],_0x4e64b3[_0xc416('0x3a')],_0x4e64b3['exten']);this[_0xc416('0x11')][_0x4e64b3[_0xc416('0x32')]]=new Channel();this[_0xc416('0x11')][_0x4e64b3[_0xc416('0x32')]][_0xc416('0x49')]=moment()[_0xc416('0x41')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xc416('0x11')][_0x4e64b3[_0xc416('0x32')]][_0xc416('0x4a')]=dispositions[_['toNumber'](_0x4e64b3[_0xc416('0x4b')])];_[_0xc416('0x38')](this[_0xc416('0x11')][_0x4e64b3[_0xc416('0x32')]],_[_0xc416('0x4c')](_0x4e64b3,_['keys'](this['channels'][_0x4e64b3[_0xc416('0x32')]])));if(_0x4e64b3[_0xc416('0x3a')]===_0xc416('0x3b')){var _0x1ef0c6=this[_0xc416('0x12')][_0x4e64b3[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]];if(_0x1ef0c6&&typeof _0x1ef0c6['destconnectedlinenum']===_0xc416('0x4d')){_0x1ef0c6[_0xc416('0x3f')]=_0x4e64b3[_0xc416('0x3e')];logger[_0xc416('0x35')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x4e64b3[_0xc416('0x32')],util[_0xc416('0x36')]({'id':_0x1ef0c6['id'],'destaccountcode':_0x1ef0c6[_0xc416('0x44')],'destconnectedlinenum':_0x4e64b3[_0xc416('0x3e')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xc416('0x41')](_0xc416('0x42'),_0x1ef0c6['name']),_0xc416('0x4e'),{'id':_0x1ef0c6['id'],'destaccountcode':_0x1ef0c6[_0xc416('0x44')],'destconnectedlinenum':_0x4e64b3['exten']});}}}}catch(_0x180ff3){logger[_0xc416('0x2b')](_0xc416('0x4f'),_0x4e64b3[_0xc416('0x32')],util['inspect'](_0x180ff3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x15')]=function(_0x1c623d){try{if(this[_0xc416('0x2e')](_0x1c623d)){logger[_0xc416('0x35')](_0xc416('0x50'),_0x1c623d[_0xc416('0x32')],util[_0xc416('0x36')](_0x1c623d,{'showHidden':![],'depth':null}));if(_0x1c623d[_0xc416('0x3c')]===_0xc416('0x47')||_0x1c623d[_0xc416('0x3e')]==='h')return;if(_0x1c623d[_0xc416('0x32')]===_0x1c623d[_0xc416('0x37')]||this[_0xc416('0x13')][_0x1c623d[_0xc416('0x37')]]){_0x1c623d[_0xc416('0x51')]=_0x1c623d['application']?_0x1c623d[_0xc416('0x51')][_0xc416('0x52')]():undefined;_0x1c623d[_0xc416('0x53')]=_0x1c623d[_0xc416('0x54')]||_0x1c623d['applicationdata'];if(_0x1c623d[_0xc416('0x54')]&&!_0x1c623d[_0xc416('0x54')][_0xc416('0x55')](_0xc416('0x56'))&&_0x1c623d['application']!==_0xc416('0x57')){_0x1c623d[_0xc416('0x53')]=_0x1c623d[_0xc416('0x53')][_0xc416('0x52')]();}logger[_0xc416('0x28')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x1c623d[_0xc416('0x32')],_0x1c623d['application'],_0x1c623d[_0xc416('0x53')]);if(_[_0xc416('0x2f')](this[_0xc416('0x11')][_0x1c623d['uniqueid']])){this[_0xc416('0x11')][_0x1c623d[_0xc416('0x32')]]=new Channel();this[_0xc416('0x11')][_0x1c623d['uniqueid']][_0xc416('0x49')]=_0x1c623d['duration']?moment()[_0xc416('0x58')](moment[_0xc416('0x59')](_0x1c623d[_0xc416('0x59')])[_0xc416('0x5a')](),'seconds')[_0xc416('0x41')](_0xc416('0x5b')):moment()[_0xc416('0x41')](_0xc416('0x5b'));this[_0xc416('0x11')][_0x1c623d[_0xc416('0x32')]]['disposition']=_0xc416('0xb');}_['merge'](this['channels'][_0x1c623d[_0xc416('0x32')]],_['pick'](_0x1c623d,_[_0xc416('0x39')](this['channels'][_0x1c623d['uniqueid']])));if(_['includes'](applications,_0x1c623d[_0xc416('0x51')])){this[_0xc416('0x11')][_0x1c623d[_0xc416('0x32')]][_0xc416('0x5c')]=_0x1c623d['application'];this[_0xc416('0x11')][_0x1c623d[_0xc416('0x32')]][_0xc416('0x5d')]=_0x1c623d['applicationdata'];if(_0x1c623d[_0xc416('0x51')]==='set'&&_['startsWith'](_0x1c623d[_0xc416('0x53')]['toLowerCase'](),_0xc416('0x5e'))){var _0x763377=_0x1c623d['applicationdata'][_0xc416('0x3d')]('=');var _0x334965=_0x763377[0x0][_0xc416('0x52')]()[_0xc416('0x5f')](/cdr\((.*)\)/);if(_0x334965){if(_0x334965[0x1]===_0xc416('0x60')&&!_[_0xc416('0x61')](this[_0xc416('0x11')][_0x1c623d['uniqueid']][_0x334965[0x1]]))return;this[_0xc416('0x11')][_0x1c623d[_0xc416('0x32')]][_0x334965[0x1]]=_0x763377[0x1];}}else if(_0x1c623d[_0xc416('0x51')]===_0xc416('0x57')){this[_0xc416('0x11')][_0x1c623d['uniqueid']][_0xc416('0x57')]=_0x1c623d[_0xc416('0x53')][_0xc416('0x3d')](',')[0x0];}}}}}catch(_0x18cb54){logger[_0xc416('0x2b')](_0xc416('0x62'),_0x1c623d[_0xc416('0x32')],util[_0xc416('0x36')](_0x18cb54,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x63')]=function(_0x976a48){try{if(this[_0xc416('0x2e')](_0x976a48)){logger[_0xc416('0x28')](_0xc416('0x64'),_0x976a48['uniqueid'],_0x976a48['linkedid'],_0x976a48['calleridname'],_0x976a48[_0xc416('0x34')]);logger['debug'](_0xc416('0x65'),_0x976a48[_0xc416('0x32')],util[_0xc416('0x36')](_0x976a48,{'showHidden':![],'depth':null}));if(_0x976a48['channelstate']!=='6')return;var _0x47794d=this[_0xc416('0x12')][_0x976a48[_0xc416('0x3c')]['split']('-')[0x0]];if(_0x976a48[_0xc416('0x32')]!==_0x976a48['linkedid']){var _0x58701f=moment();if(this['channels'][_0x976a48[_0xc416('0x37')]]){if(!this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x66')]){this['channels'][_0x976a48[_0xc416('0x37')]][_0xc416('0x66')]=!![];this[_0xc416('0x11')][_0x976a48['linkedid']][_0xc416('0x67')]=_0x58701f[_0xc416('0x41')](_0xc416('0x5b'));if(this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x49')]){this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]]['holdtime']=_0x58701f[_0xc416('0x68')](this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x49')],_0xc416('0x5a'));}}this[_0xc416('0x11')][_0x976a48['linkedid']][_0xc416('0x37')]=_0x976a48['uniqueid'];if(_0x976a48[_0xc416('0x34')]!=='xcally-motion-preview'){this['channels'][_0x976a48[_0xc416('0x37')]][_0xc416('0x40')]=_0x976a48[_0xc416('0x34')];}this['channels'][_0x976a48[_0xc416('0x37')]][_0xc416('0x69')]=_0x976a48[_0xc416('0x33')];this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]]['destinationchannel']=_0x976a48['channel'];this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x4a')]=dispositions[_['toNumber'](_0x976a48[_0xc416('0x4b')])];if(_0x47794d){this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x6a')]=_0x47794d['id'];this[_0xc416('0x11')][_0x976a48['linkedid']][_0xc416('0x6b')]=_0x47794d[_0xc416('0x43')];}}if(this['channels'][_0x976a48[_0xc416('0x32')]]){if(!this['channels'][_0x976a48[_0xc416('0x32')]][_0xc416('0x66')]){this[_0xc416('0x11')][_0x976a48['uniqueid']][_0xc416('0x66')]=!![];this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x67')]=_0x58701f['format'](_0xc416('0x5b'));if(this['channels'][_0x976a48['uniqueid']]['starttime']){this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]]['holdtime']=_0x58701f[_0xc416('0x68')](this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]]['starttime'],_0xc416('0x5a'));}}if(_0x976a48[_0xc416('0x34')]!==_0xc416('0x6c')){this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x40')]=_0x976a48[_0xc416('0x34')];}this['channels'][_0x976a48[_0xc416('0x32')]]['connectedlinename']=_0x976a48['calleridname'];this[_0xc416('0x11')][_0x976a48['uniqueid']]['destinationchannel']=_0x976a48[_0xc416('0x3c')];this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x4a')]=dispositions[_[_0xc416('0x6d')](_0x976a48['channelstate'])];}}else{if(this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]]){if(_0x47794d){this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x6a')]=_0x47794d['id'];this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x6b')]=_0x47794d[_0xc416('0x43')];}}}if(_0x976a48[_0xc416('0x3a')]===_0xc416('0x3b')){if(_0x47794d){_0x47794d[_0xc416('0x3f')]=_0x976a48[_0xc416('0x3e')];var _0x18d903,_0x369bc0;if(this['channels'][_0x976a48[_0xc416('0x32')]]){_0x18d903=this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x6e')];_0x369bc0=this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x57')];}else if(this[_0xc416('0x11')][_0x976a48['linkedid']]){_0x18d903=this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x6e')];_0x369bc0=this[_0xc416('0x11')][_0x976a48['linkedid']][_0xc416('0x57')];}_0x47794d[_0xc416('0x57')]=_0x369bc0;_0x47794d['routealias']=_0x18d903;var _0x58af12={'id':_0x47794d['id'],'name':_0x47794d['name'],'agentconnected':!![],'destaccountcode':_0x47794d[_0xc416('0x44')],'destconnectedlinenum':_0x976a48['exten'],'queue':_0x369bc0||undefined,'routealias':_0x18d903,'uniqueid':_0x976a48[_0xc416('0x37')]};logger['debug'](_0xc416('0x6f'),_0x976a48[_0xc416('0x32')],util[_0xc416('0x36')](_0x58af12,{'showHidden':![],'depth':null}));this[_0xc416('0x30')](util['format'](_0xc416('0x42'),_0x47794d[_0xc416('0x43')]),_0xc416('0x4e'),_0x58af12);}}}}catch(_0x42a321){logger[_0xc416('0x2b')](_0xc416('0x70'),_0x976a48[_0xc416('0x32')],util[_0xc416('0x36')](_0x42a321,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')]['syncMixMonitorFilename']=function(_0x3873e4,_0x474024){try{if(this['channels'][_0x3873e4]){logger[_0xc416('0x28')](_0xc416('0x71'),_0x3873e4,_0x474024);this[_0xc416('0x11')][_0x3873e4][_0xc416('0x72')]=!![];if(_[_0xc416('0x73')](_0x474024,_0xc416('0x74'))){_0x474024=_0x474024['replace'](_0xc416('0x74'),_0xc416('0x75'));}this['channels'][_0x3873e4][_0xc416('0x76')]=_0x474024;var _0x3b5405=_[_0xc416('0x77')](this[_0xc416('0x11')][_0x3873e4][_0xc416('0x78')],{'filename':_0x474024});if(_[_0xc416('0x61')](_0x3b5405)){this[_0xc416('0x11')][_0x3873e4][_0xc416('0x78')][_0xc416('0x79')]({'filename':_0x474024,'createdAt':moment()[_0xc416('0x41')](_0xc416('0x5b')),'mixmonitorid':'','status':_0xc416('0x7a')});}}}catch(_0x3e2120){logger['error'](_0xc416('0x7b'),_0x3873e4,util[_0xc416('0x36')](_0x3e2120,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x1c')]=function(_0x4cada3){try{if(this['isNotNull'](_0x4cada3)){logger[_0xc416('0x35')](_0xc416('0x7c'),_0x4cada3['uniqueid'],util[_0xc416('0x36')](_0x4cada3,{'showHidden':![],'depth':null}));if(this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]]&&_0x4cada3[_0xc416('0x3c')]!='OutgoingSpoolFailed'){if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')])){if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x7e')])){logger[_0xc416('0x28')](_0xc416('0x7f'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x81')](_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x82')])){logger[_0xc416('0x28')](_0xc416('0x83'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]][_0xc416('0x34')]=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x84')])){logger['info'](_0xc416('0x85'),_0x4cada3[_0xc416('0x32')],_0x4cada3['value']);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]][_0xc416('0x86')]=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3['variable']['xmd-cdrtype'])){logger[_0xc416('0x28')](_0xc416('0x87'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]][_0xc416('0x60')]=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x88')])){logger[_0xc416('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x4cada3['uniqueid'],_0x4cada3[_0xc416('0x80')][_0xc416('0x3d')](',')[0x0]);this['channels'][_0x4cada3['uniqueid']]['queue']=_0x4cada3[_0xc416('0x80')][_0xc416('0x3d')](',')[0x0];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x89')])){logger[_0xc416('0x28')](_0xc416('0x8a'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]]['originatecalleridnum']=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x8b')])){logger[_0xc416('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x4cada3['uniqueid'],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]][_0xc416('0x8c')]=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x8d')])){logger['info'](_0xc416('0x8e'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this['channels'][_0x4cada3[_0xc416('0x32')]][_0xc416('0x8f')]=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x90')])){logger['info'](_0xc416('0x91'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]][_0xc416('0x57')]=_0x4cada3['value'];}else if(this[_0xc416('0x2e')](_0x4cada3['variable'][_0xc416('0x92')])){logger[_0xc416('0x28')](_0xc416('0x93'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]]['sipcalluniqueid']=_0x4cada3[_0xc416('0x80')];}}}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')]['mixmonitor_filename'])){if(_0x4cada3[_0xc416('0x80')]){var _0x414e24=path['parse'](_0x4cada3['value'])[_0xc416('0x43')];logger['info']('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x414e24,_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x81')](_0x414e24,_0x4cada3[_0xc416('0x80')]);}}else if(this[_0xc416('0x11')][_0x4cada3[_0xc416('0x37')]]){if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')])){if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x92')])){logger[_0xc416('0x28')](_0xc416('0x93'),_0x4cada3[_0xc416('0x37')],_0x4cada3[_0xc416('0x80')]);this['channels'][_0x4cada3[_0xc416('0x37')]][_0xc416('0x94')]=_0x4cada3[_0xc416('0x80')];}}}}}catch(_0x4bfc1c){logger[_0xc416('0x2b')](_0xc416('0x95'),_0x4cada3[_0xc416('0x32')],util['inspect'](_0x4bfc1c,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xc416('0x1e')]=function(_0x1dd6aa){try{if(this[_0xc416('0x2e')](_0x1dd6aa)){logger[_0xc416('0x35')]('[%s][voiceCallReport][hangup]\x20event:',_0x1dd6aa[_0xc416('0x32')],util[_0xc416('0x36')](_0x1dd6aa,{'showHidden':![],'depth':null}));if(this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]){if(this[_0xc416('0x11')][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]]){this[_0xc416('0x11')][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]][_0xc416('0x32')]=_0x1dd6aa[_0xc416('0x32')];this['channels'][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]['linkedid']][_0xc416('0x66')]=this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x66')];this[_0xc416('0x11')][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]]['answertime']=this[_0xc416('0x11')][_0x1dd6aa['uniqueid']]['answertime'];this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]]['destinationchannel']=this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]['linkedid']][_0xc416('0x3c')];this['channels'][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]][_0xc416('0x4a')]=this['channels'][_0x1dd6aa['uniqueid']]['disposition'];this[_0xc416('0x11')][_0x1dd6aa['uniqueid']]=this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]];delete this['channels'][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]];}else if(this[_0xc416('0x11')][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]]['uniqueid']]){this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]['uniqueid']][_0xc416('0x32')]=[this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa['linkedid']][_0xc416('0x32')]][_0xc416('0x37')],this['channels'][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x32')]][_0xc416('0x37')]=this['channels'][this['blindTransfers'][_0x1dd6aa['linkedid']][_0xc416('0x32')]][_0xc416('0x32')]][0x0];this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]['uniqueid']][_0xc416('0x66')]=this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x66')];this['channels'][this[_0xc416('0x13')][_0x1dd6aa['linkedid']][_0xc416('0x32')]]['answertime']=this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x67')];this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]['uniqueid']][_0xc416('0x96')]=this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa['linkedid']][_0xc416('0x32')]]['channel'];this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x32')]][_0xc416('0x4a')]=this['channels'][_0x1dd6aa[_0xc416('0x32')]]['disposition'];this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]]=this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x32')]];delete this['channels'][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x32')]];}}if(this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]]){logger['info']('[%s][voiceCallReport][hangup]\x20reason:%s',_0x1dd6aa[_0xc416('0x32')],_0x1dd6aa[_0xc416('0x97')]);var _0x327e67=moment();this['channels'][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x98')]=_0x327e67[_0xc416('0x41')](_0xc416('0x5b'));this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x59')]=_0x327e67[_0xc416('0x68')](this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x49')],_0xc416('0x5a'));if(this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x66')]){this[_0xc416('0x11')][_0x1dd6aa['uniqueid']][_0xc416('0x99')]=_0x327e67[_0xc416('0x68')](this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x67')],_0xc416('0x5a'));this[_0xc416('0x11')][_0x1dd6aa['uniqueid']][_0xc416('0x9a')]=this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x59')]-this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x99')];}if(_0x1dd6aa[_0xc416('0x3a')]===_0xc416('0x3b')){if(this['agents'][_0x1dd6aa[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]]){this['agents'][_0x1dd6aa['channel']['split']('-')[0x0]]=_['omit'](this[_0xc416('0x12')][_0x1dd6aa[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]],['destconnectedlinenum']);logger['debug'](_0xc416('0x9b'),_0x1dd6aa[_0xc416('0x32')],util[_0xc416('0x36')]({'id':this[_0xc416('0x12')][_0x1dd6aa[_0xc416('0x3c')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xc416('0x12')][_0x1dd6aa[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]][_0xc416('0x44')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xc416('0x41')](_0xc416('0x42'),this['agents'][_0x1dd6aa['channel'][_0xc416('0x3d')]('-')[0x0]][_0xc416('0x43')]),_0xc416('0x9c'),{'id':this[_0xc416('0x12')][_0x1dd6aa['channel'][_0xc416('0x3d')]('-')[0x0]]['id'],'destaccountcode':this[_0xc416('0x12')][_0x1dd6aa[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]][_0xc416('0x44')]});for(var _0x44566a=0x0;_0x44566a<Object[_0xc416('0x39')](this[_0xc416('0x12')])[_0xc416('0x9d')];_0x44566a++){var _0x1f95d1=Object[_0xc416('0x39')](this['agents'])[_0x44566a];var _0x3d8a6b=this[_0xc416('0x12')][_0x1f95d1];if(_0x3d8a6b[_0xc416('0x44')]===Number(this[_0xc416('0x11')][_0x1dd6aa['uniqueid']][_0xc416('0x40')])){this[_0xc416('0x30')](util[_0xc416('0x41')](_0xc416('0x42'),_0x3d8a6b['name']),_0xc416('0x9c'),{'id':_0x3d8a6b['id'],'destaccountcode':_0x3d8a6b[_0xc416('0x44')],'transfer':this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x9e')]});break;}}}}var _0x3b77cb=this;Promise[_0xc416('0x9f')]()[_0xc416('0xa0')](function(){var _0xa7670=_0x3b77cb['channels'][_0x1dd6aa[_0xc416('0x32')]];if(typeof _0xa7670['transferType']===_0xc416('0x4d')){return;}if(_0xa7670['transferToInternal']===!![]){return;}if(_[_0xc416('0xa1')](_0xa7670[_0xc416('0x78')])){return;}return RpcSetting[_0xc416('0xa2')]()[_0xc416('0xa0')](function(_0x350e2a){if(!_0x350e2a[_0xc416('0xa3')])return;return Promise[_0xc416('0x9f')]()[_0xc416('0xa0')](function(){return ami[_0xc416('0xa4')]({'action':_0xc416('0xa5'),'channel':_0xa7670[_0xc416('0x3c')]})[_0xc416('0xa6')](function(){});})[_0xc416('0xa0')](function(){return ami['Action']({'action':_0xc416('0xa5'),'channel':_0xa7670['destinationchannel']})[_0xc416('0xa6')](function(){})[_0xc416('0xa7')](function(){var _0x65a877=_0x3b77cb[_0xc416('0x12')][_0xa7670[_0xc416('0x96')]['split']('-')[0x0]];if(!_0x65a877)return;io[_0xc416('0x30')](_0xc416('0xa8'),{'agentId':_0x65a877['id'],'uniqueid':_0xa7670[_0xc416('0x32')]});});});});})[_0xc416('0xa0')](function(){if(_0x1dd6aa['event']===_0xc416('0xa9')){_0x3b77cb['blindTransfers'][_0x1dd6aa[_0xc416('0x32')]]=_0x1dd6aa;}else{if(_0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]]&&_0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x60')]===_0xc416('0xaa')&&_0x3b77cb[_0xc416('0x13')][_0x1dd6aa['uniqueid']]){_0x3b77cb[_0xc416('0x11')][_0x1dd6aa['uniqueid']][_0xc416('0x32')]=[_0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x37')],_0x3b77cb['channels'][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x37')]=_0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]]['uniqueid']][0x0];delete _0x3b77cb[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x32')]];}}logger[_0xc416('0x35')](_0xc416('0xab'),_0x1dd6aa['uniqueid'],util[_0xc416('0x36')](_0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]],{'showHidden':![],'depth':null}));ami[_0xc416('0x30')](_0xc416('0xac'),_0x3b77cb['channels'][_0x1dd6aa[_0xc416('0x32')]]);delete _0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]];});}}}catch(_0x5bd25e){logger[_0xc416('0x2b')](_0xc416('0xad'),_0x1dd6aa[_0xc416('0x32')],util[_0xc416('0x36')](_0x5bd25e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x22')]=function(_0x67f2d0){try{if(this[_0xc416('0x2e')](_0x67f2d0)){logger['info']('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x67f2d0[_0xc416('0x32')],_0x67f2d0[_0xc416('0xae')],_0x67f2d0[_0xc416('0xaf')]);logger[_0xc416('0x35')](_0xc416('0xb0'),_0x67f2d0[_0xc416('0x32')],util['inspect'](_0x67f2d0,{'showHidden':![],'depth':null}));var _0x3c7b25;if(this['channels'][_0x67f2d0[_0xc416('0xb1')]]){this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb1')]][_0xc416('0xb2')]=_0x67f2d0[_0xc416('0xae')];this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb1')]][_0xc416('0xb3')]=_0x67f2d0[_0xc416('0xaf')];if(this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb4')]]){_0x3c7b25=this['channels'][_0x67f2d0[_0xc416('0xb4')]];this['channels'][_0x67f2d0['secondtransfereruniqueid']]=this[_0xc416('0x11')][_0x67f2d0['transfereeuniqueid']];this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb1')]]=_0x3c7b25;}this[_0xc416('0x11')][_0x67f2d0['secondtransfereruniqueid']][_0xc416('0x9e')]='ATTENDED';}else if(this[_0xc416('0x11')][_0x67f2d0['transfertargetuniqueid']]){this['channels'][_0x67f2d0['transfertargetuniqueid']][_0xc416('0xb2')]=_0x67f2d0[_0xc416('0xae')];this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb5')]][_0xc416('0xb3')]=_0x67f2d0[_0xc416('0xaf')];if(this[_0xc416('0x11')][_0x67f2d0['origtransfereruniqueid']]){_0x3c7b25=this['channels'][_0x67f2d0[_0xc416('0xb6')]];this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb6')]]=this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb5')]];this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb5')]]=_0x3c7b25;}this['channels'][_0x67f2d0[_0xc416('0xb5')]][_0xc416('0x9e')]=_0xc416('0xb7');}if((this['channels'][_0x67f2d0['origtransfereruniqueid']]||this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb8')]])&&this['channels'][_0x67f2d0[_0xc416('0xb4')]]){var _0x33dbee=_[_0xc416('0xb9')]([this[_0xc416('0x11')][_0x67f2d0['origtransfereruniqueid']],this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb8')]],this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb4')]]],function(_0x3eb2b7){return _0x3eb2b7&&_0x3eb2b7[_0xc416('0x60')]===_0xc416('0xaa')&&_0x3eb2b7[_0xc416('0xba')];});if(_0x33dbee){if(this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb6')]])this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb6')]]['transferType']=_0xc416('0xb7');if(this['channels'][_0x67f2d0[_0xc416('0xb8')]])this['channels'][_0x67f2d0[_0xc416('0xb8')]][_0xc416('0x9e')]=_0xc416('0xb7');this[_0xc416('0x11')][_0x67f2d0['secondtransfereruniqueid']][_0xc416('0x9e')]=_0xc416('0xb7');}else{if(this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb1')]]){this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb4')]][_0xc416('0xbb')]=!![];}if(this['channels'][_0x67f2d0[_0xc416('0xb5')]]){this['channels'][_0x67f2d0[_0xc416('0xb5')]][_0xc416('0xbb')]=!![];}}}}}catch(_0x251a2a){logger[_0xc416('0x2b')](_0xc416('0xbc'),_0x67f2d0[_0xc416('0x32')],util[_0xc416('0x36')](_0x251a2a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')]['syncBlindTransfer']=function(_0x5c8a9c){try{if(this['isNotNull'](_0x5c8a9c)){logger[_0xc416('0x28')](_0xc416('0xbd'),_0x5c8a9c[_0xc416('0x32')],_0x5c8a9c[_0xc416('0xbe')],_0x5c8a9c['extension']);logger[_0xc416('0x35')](_0xc416('0xbf'),_0x5c8a9c[_0xc416('0x32')],util[_0xc416('0x36')](_0x5c8a9c,{'showHidden':![],'depth':null}));if(this[_0xc416('0x11')][_0x5c8a9c[_0xc416('0xb1')]]){this[_0xc416('0x11')][_0x5c8a9c['transfereeuniqueid']]['transfercalleridnum']=_0x5c8a9c[_0xc416('0xbe')];this[_0xc416('0x11')][_0x5c8a9c[_0xc416('0xb1')]][_0xc416('0xb3')]=_0x5c8a9c[_0xc416('0xc0')];this['channels'][_0x5c8a9c[_0xc416('0xb1')]][_0xc416('0x9e')]=_0xc416('0xc1');this[_0xc416('0x1e')]({'event':'BlindTransfer','uniqueid':_0x5c8a9c[_0xc416('0xb1')],'linkedid':_0x5c8a9c['transfereruniqueid'],'context':_0x5c8a9c[_0xc416('0x3a')],'channel':_0x5c8a9c[_0xc416('0xc2')]});}else{this[_0xc416('0x11')][_0x5c8a9c['transfereruniqueid']][_0xc416('0x9e')]=_0xc416('0xc1');this['syncHangup']({'event':_0xc416('0xa9'),'uniqueid':_0x5c8a9c[_0xc416('0xc3')],'linkedid':_0x5c8a9c[_0xc416('0xb1')],'context':_0x5c8a9c['context'],'channel':_0x5c8a9c[_0xc416('0xc2')]});}}}catch(_0x2d10bd){logger[_0xc416('0x2b')]('[%s][voiceCallReport][blindtransfer]',_0x5c8a9c[_0xc416('0x32')],util['inspect'](_0x2d10bd,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0xc4')]=function(_0x377ae0){try{if(this['isNotNull'](_0x377ae0)){logger[_0xc416('0x35')](_0xc416('0xc5'),_0x377ae0[_0xc416('0x32')],util[_0xc416('0x36')](_0x377ae0,{'showHidden':![],'depth':null}));if(this['channels'][_0x377ae0[_0xc416('0x32')]]){if(!_[_0xc416('0x61')](this[_0xc416('0x11')][_0x377ae0['uniqueid']]['answertime'])){this[_0xc416('0x11')][_0x377ae0[_0xc416('0x32')]][_0xc416('0xc6')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0xc416('0x28')](_0xc416('0xc7'),_0x377ae0[_0xc416('0x32')],this[_0xc416('0x11')][_0x377ae0[_0xc416('0x32')]]['mohstarttime']);}}}}catch(_0x16ab58){logger[_0xc416('0x2b')](_0xc416('0xc8'),_0x377ae0['uniqueid'],util[_0xc416('0x36')](_0x16ab58,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x27')]=function(_0x540cf2){try{if(this[_0xc416('0x2e')](_0x540cf2)){logger[_0xc416('0x35')](_0xc416('0xc9'),_0x540cf2[_0xc416('0x32')],util[_0xc416('0x36')](_0x540cf2,{'showHidden':![],'depth':null}));if(this[_0xc416('0x11')][_0x540cf2[_0xc416('0x32')]]){if(!_[_0xc416('0x61')](this[_0xc416('0x11')][_0x540cf2[_0xc416('0x32')]][_0xc416('0xc6')])){this['channels'][_0x540cf2[_0xc416('0x32')]][_0xc416('0xca')]+=moment()[_0xc416('0xcb')](0x0)[_0xc416('0x68')](this[_0xc416('0x11')][_0x540cf2['uniqueid']][_0xc416('0xc6')],_0xc416('0x5a'));logger[_0xc416('0x28')](_0xc416('0xcc'),_0x540cf2[_0xc416('0x32')],this['channels'][_0x540cf2['uniqueid']][_0xc416('0xca')]);delete this[_0xc416('0x11')][_0x540cf2[_0xc416('0x32')]][_0xc416('0xc6')];}}}}catch(_0x144663){logger['error'](_0xc416('0xcd'),_0x540cf2[_0xc416('0x32')],util[_0xc416('0x36')](_0x144663,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index d49e7ce..e6e15fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['outboundChannels','outbound','applications','variables','syncDialBegin','bind','dialend','syncHangup','prototype','isNotNull','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','substring','lastIndexOf','channel','omit','event','privilege','info','channels','membername','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','lastevent','connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','addVariable','value','variable','voice','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','answertime','holdtime','sumHoldTime','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','toLowerCase','set','appdata','applicationdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults'];(function(_0x33f96f,_0x1680b1){var _0x3156f2=function(_0x287639){while(--_0x287639){_0x33f96f['push'](_0x33f96f['shift']());}};_0x3156f2(++_0x1680b1);}(_0x1261,0x144));var _0x1126=function(_0x291d3f,_0x3ef99f){_0x291d3f=_0x291d3f-0x0;var _0x242080=_0x1261[_0x291d3f];return _0x242080;};'use strict';var _=require('lodash');var moment=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));var logger=require(_0x1126('0x4'))(_0x1126('0x5'));var ami=require(_0x1126('0x6'));config[_0x1126('0x7')]=_[_0x1126('0x8')](config[_0x1126('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1126('0x7')]));function VoiceDialReport(_0x907180){this['channels']=_0x907180[_0x1126('0x9')];this[_0x1126('0xa')]=_0x907180[_0x1126('0xa')];this[_0x1126('0xb')]={};this[_0x1126('0xc')]={};ami['on']('dialbegin',this[_0x1126('0xd')][_0x1126('0xe')](this));ami['on'](_0x1126('0xf'),this['syncDialEnd'][_0x1126('0xe')](this));ami['on']('varset',this['syncVarSet'][_0x1126('0xe')](this));ami['on']('hangup',this[_0x1126('0x10')][_0x1126('0xe')](this));}VoiceDialReport[_0x1126('0x11')][_0x1126('0x12')]=function(_0xca0355){return _0xca0355!==null&&!_[_0x1126('0x13')](_0xca0355);};VoiceDialReport[_0x1126('0x11')][_0x1126('0x14')]=function(_0x43850b,_0x53a8f0,_0x5de9a7){io['to'](_0x43850b)[_0x1126('0x14')](_0x53a8f0,_0x5de9a7);};VoiceDialReport[_0x1126('0x11')][_0x1126('0xd')]=function(_0x4be0c6){try{if(this[_0x1126('0x12')](_0x4be0c6)){logger['debug'](_0x1126('0x15'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](_0x4be0c6,{'showHidden':![],'depth':null}));if(this['channels'][_0x4be0c6[_0x1126('0x16')]]){_[_0x1126('0x18')](this['channels'][_0x4be0c6['uniqueid']],{'starttime':moment()[_0x1126('0x19')](_0x1126('0x1a')),'lastevent':'called','interface':_0x4be0c6['channel'][_0x1126('0x1b')](0x0,_0x4be0c6['channel'][_0x1126('0x1c')]('-')),'membername':_0x4be0c6[_0x1126('0x1d')][_0x1126('0x1b')](_0x4be0c6['channel'][_0x1126('0x1c')]('/')+0x1,_0x4be0c6['channel']['lastIndexOf']('-'))},_[_0x1126('0x1e')](_0x4be0c6,[_0x1126('0x1f'),_0x1126('0x20')]));logger[_0x1126('0x21')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x4be0c6[_0x1126('0x16')],this[_0x1126('0x22')][_0x4be0c6['uniqueid']][_0x1126('0x23')],this['channels'][_0x4be0c6['uniqueid']]['interface']);logger[_0x1126('0x24')](_0x1126('0x25'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x4be0c6[_0x1126('0x16')]],{'showHidden':![],'depth':null}));if(this[_0x1126('0xb')][_0x4be0c6[_0x1126('0x16')]])_['merge'](this[_0x1126('0x22')][_0x4be0c6[_0x1126('0x16')]],this[_0x1126('0xb')][_0x4be0c6['uniqueid']]);this['emit'](_0x1126('0x26'),_0x1126('0x27'),this['channels'][_0x4be0c6[_0x1126('0x16')]]);logger[_0x1126('0x24')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x4be0c6[_0x1126('0x16')],util['inspect'](this[_0x1126('0x22')][_0x4be0c6['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')]('custom:dialbegin',this[_0x1126('0x22')][_0x4be0c6['uniqueid']]);}}}catch(_0x5252e0){logger['error'](_0x1126('0x28'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](_0x5252e0,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x1126('0x29')]=function(_0x226afb){try{if(this['isNotNull'](_0x226afb)){logger[_0x1126('0x24')](_0x1126('0x2a'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](_0x226afb,{'showHidden':![],'depth':null}));if(this['channels'][_0x226afb['uniqueid']]){this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]][_0x1126('0x2b')]=_0x226afb[_0x1126('0x2b')];if(_0x226afb['dialstatus']===_0x1126('0x2c')){this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]][_0x1126('0x2d')]=_0x226afb[_0x1126('0x2d')];this['channels'][_0x226afb[_0x1126('0x16')]][_0x1126('0x2e')]=_0x226afb[_0x1126('0x2e')];this[_0x1126('0x22')][_0x226afb['uniqueid']]['answertime']=moment()[_0x1126('0x19')](_0x1126('0x1a'));this['channels'][_0x226afb[_0x1126('0x16')]][_0x1126('0x2f')]=_0x1126('0x30');logger['info']('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x226afb[_0x1126('0x16')],_0x226afb[_0x1126('0x1d')][_0x1126('0x1b')](_0x226afb[_0x1126('0x1d')]['lastIndexOf']('/')+0x1,_0x226afb[_0x1126('0x1d')]['lastIndexOf']('-')));logger[_0x1126('0x24')](_0x1126('0x31'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x226afb['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')](_0x1126('0x32'),this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]]);}logger[_0x1126('0x24')](_0x1126('0x33'),_0x226afb[_0x1126('0x16')],util['inspect'](this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')](_0x1126('0x26'),_0x1126('0x27'),this['channels'][_0x226afb['uniqueid']]);}}}catch(_0x1c4f06){logger[_0x1126('0x34')](_0x1126('0x35'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](_0x1c4f06,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')]['syncVarSet']=function(_0x497576){try{if(this['isNotNull'](_0x497576)){logger[_0x1126('0x24')]('[%s][voiceDialReport][varset]\x20event:',_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](_0x497576,{'showHidden':![],'depth':null}));this[_0x1126('0x36')](_0x497576[_0x1126('0x16')],_['keys'](_0x497576['variable'])[0x0],_0x497576[_0x1126('0x37')]);if(this[_0x1126('0x12')](_0x497576[_0x1126('0x38')])&&this['isNotNull'](_0x497576[_0x1126('0x38')]['outboundrouteid'])){if(_[_0x1126('0x13')](this['channels'][_0x497576[_0x1126('0x16')]])){this[_0x1126('0x22')][_0x497576[_0x1126('0x16')]]={'routeId':_0x497576['value'],'variables':this[_0x1126('0xc')][_0x497576[_0x1126('0x16')]],'motionChannel':_0x1126('0x39')};logger['info']('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x497576['uniqueid'],_0x497576[_0x1126('0x38')]['outboundrouteid'],_[_0x1126('0x3a')](_0x497576['variable'])[0x0],_0x497576[_0x1126('0x37')]);logger[_0x1126('0x24')](_0x1126('0x3b'),_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](this['channels'][_0x497576[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')]('voice:outbound',_0x1126('0x27'),this[_0x1126('0x22')][_0x497576['uniqueid']]);}}}}catch(_0x5f6d73){logger[_0x1126('0x34')]('[%s][voiceDialReport][varset]',_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](_0x5f6d73,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')]['addVariable']=function(_0x3fe7c1,_0x1c405c,_0x411c89){var _0x5878bb=[_0x1126('0x3c'),_0x1126('0x3d'),_0x1126('0x3e'),_0x1126('0x3f'),'rtpaudioqosloss',_0x1126('0x40'),'rtpaudioqosrtt',_0x1126('0x41'),_0x1126('0x42'),'sipuri','bridgepeer',_0x1126('0x43'),_0x1126('0x44'),_0x1126('0x45'),'memberinterface',_0x1126('0x46'),_0x1126('0x23'),_0x1126('0x47'),_0x1126('0x48')];if(!_['isNil'](_0x1c405c)&&!_[_0x1126('0x49')](_0x5878bb,_0x1c405c)){if(_[_0x1126('0x13')](this['variables'][_0x3fe7c1])){this['variables'][_0x3fe7c1]={};}this['variables'][_0x3fe7c1][_0x1c405c]=_0x411c89;}};VoiceDialReport['prototype'][_0x1126('0x10')]=function(_0x3bf090){try{if(this['isNotNull'](_0x3bf090)){logger[_0x1126('0x24')](_0x1126('0x4a'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](_0x3bf090,{'showHidden':![],'depth':null}));if(this[_0x1126('0x22')][_0x3bf090['uniqueid']]){logger[_0x1126('0x21')](_0x1126('0x4b'),_0x3bf090['uniqueid'],_0x3bf090[_0x1126('0x4c')]);this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x4d')]=moment()[_0x1126('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x4e')]=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['endtime'])[_0x1126('0x4f')](this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x50')],_0x1126('0x51'));this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x2f')]=_0x1126('0x52');this[_0x1126('0xa')][_0x1126('0x53')]+=0x1;if(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x54')]){this[_0x1126('0xa')]['answered']+=0x1;this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x55')]=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['answertime'])[_0x1126('0x4f')](this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x50')],'seconds');this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['billableseconds']=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x4d')])['diff'](this[_0x1126('0x22')][_0x3bf090['uniqueid']]['answertime'],_0x1126('0x51'));this[_0x1126('0xa')][_0x1126('0x56')]+=this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x55')]||0x0;this[_0x1126('0xa')]['sumBillable']+=this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x57')];}this[_0x1126('0xa')][_0x1126('0x58')]+=this[_0x1126('0x22')][_0x3bf090['uniqueid']]['duration'];logger[_0x1126('0x24')](_0x1126('0x59'),_0x3bf090['uniqueid'],util['inspect'](this['channels'][_0x3bf090['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')](_0x1126('0x5a'),this[_0x1126('0x22')][_0x3bf090['uniqueid']]);logger[_0x1126('0x24')](_0x1126('0x5b'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')]('custom:dialend',this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]);logger[_0x1126('0x24')](_0x1126('0x5c'),_0x3bf090[_0x1126('0x16')],util['inspect'](this['channels'][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')]('voice:outbound',_0x1126('0x5d'),this[_0x1126('0xa')]);logger[_0x1126('0x21')](_0x1126('0x5e'),JSON[_0x1126('0x5f')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]));logger[_0x1126('0x24')](_0x1126('0x60'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this['emit'](_0x1126('0x26'),_0x1126('0x61'),this[_0x1126('0x22')][_0x3bf090['uniqueid']]);delete this['channels'][_0x3bf090[_0x1126('0x16')]];}else if(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x62')]]){this[_0x1126('0x22')][_0x3bf090['linkedid']]['uniqueid']=this['channels'][_0x3bf090[_0x1126('0x62')]][_0x1126('0x63')];}if(this[_0x1126('0xc')][_0x3bf090[_0x1126('0x16')]]){delete this['variables'][_0x3bf090[_0x1126('0x16')]];}}}catch(_0x5d7014){logger[_0x1126('0x34')](_0x1126('0x64'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](_0x5d7014,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')][_0x1126('0x65')]=function(_0x9a61b1){try{if(this['isNotNull'](_0x9a61b1)){logger[_0x1126('0x24')]('[%s][voiceDialReport][newexten]\x20event:',_0x9a61b1[_0x1126('0x16')],util[_0x1126('0x17')](_0x9a61b1,{'showHidden':![],'depth':null}));if(_0x9a61b1['application'][_0x1126('0x66')]()===_0x1126('0x67')){_0x9a61b1['applicationdata']=(_0x9a61b1[_0x1126('0x68')]||_0x9a61b1[_0x1126('0x69')])['toLowerCase']();if(_['startsWith'](_0x9a61b1[_0x1126('0x69')],_0x1126('0x6a'))){if(_[_0x1126('0x13')](this['applications'][_0x9a61b1['uniqueid']]))this['applications'][_0x9a61b1[_0x1126('0x16')]]={};logger['info']('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x9a61b1[_0x1126('0x16')],_0x9a61b1['application'],_0x9a61b1[_0x1126('0x69')]);var _0x288a0c=_0x9a61b1['applicationdata'][_0x1126('0x6b')]('=');var _0x375728=_0x288a0c[0x0][_0x1126('0x6c')](/cdr\((.*)\)/);if(_0x375728)this[_0x1126('0xb')][_0x9a61b1[_0x1126('0x16')]][_0x375728[0x1]]=_0x288a0c[0x1];}}}}catch(_0x5e9872){logger[_0x1126('0x34')](_0x1126('0x6d'),_0x9a61b1['uniqueid'],util[_0x1126('0x17')](_0x5e9872,{'showHidden':![],'depth':null}));}};module[_0x1126('0x6e')]=VoiceDialReport;
\ No newline at end of file
+var _0x5496=['holdtime','answertime','starttime','billableseconds','sumHoldTime','sumBillable','sumDuration','duration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','application','toLowerCase','set','applicationdata','appdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','ami','redis','defaults','outboundChannels','outbound','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','syncVarSet','hangup','syncHangup','isUndefined','emit','prototype','isNotNull','debug','uniqueid','inspect','channels','merge','format','channel','substring','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','applications','voice:outbound','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','YYYY-MM-DD\x20HH:mm:ss','lastevent','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','diff','seconds','complete'];(function(_0x5659c9,_0x34759b){var _0x392f35=function(_0x420fe0){while(--_0x420fe0){_0x5659c9['push'](_0x5659c9['shift']());}};_0x392f35(++_0x34759b);}(_0x5496,0x175));var _0x6549=function(_0x492f49,_0x507390){_0x492f49=_0x492f49-0x0;var _0xffdb4e=_0x5496[_0x492f49];return _0xffdb4e;};'use strict';var _=require(_0x6549('0x0'));var moment=require(_0x6549('0x1'));var util=require(_0x6549('0x2'));var Redis=require(_0x6549('0x3'));var config=require(_0x6549('0x4'));var logger=require('../../../config/logger')(_0x6549('0x5'));var ami=require('../ami');config[_0x6549('0x6')]=_[_0x6549('0x7')](config[_0x6549('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6549('0x6')]));function VoiceDialReport(_0x1d8cea){this['channels']=_0x1d8cea[_0x6549('0x8')];this[_0x6549('0x9')]=_0x1d8cea[_0x6549('0x9')];this['applications']={};this[_0x6549('0xa')]={};ami['on'](_0x6549('0xb'),this[_0x6549('0xc')][_0x6549('0xd')](this));ami['on'](_0x6549('0xe'),this[_0x6549('0xf')]['bind'](this));ami['on']('varset',this[_0x6549('0x10')][_0x6549('0xd')](this));ami['on'](_0x6549('0x11'),this[_0x6549('0x12')][_0x6549('0xd')](this));}VoiceDialReport['prototype']['isNotNull']=function(_0x3f844f){return _0x3f844f!==null&&!_[_0x6549('0x13')](_0x3f844f);};VoiceDialReport['prototype'][_0x6549('0x14')]=function(_0x150fc8,_0x195d25,_0x12b068){io['to'](_0x150fc8)[_0x6549('0x14')](_0x195d25,_0x12b068);};VoiceDialReport[_0x6549('0x15')]['syncDialBegin']=function(_0x5db86d){try{if(this[_0x6549('0x16')](_0x5db86d)){logger[_0x6549('0x17')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x5db86d[_0x6549('0x18')],util[_0x6549('0x19')](_0x5db86d,{'showHidden':![],'depth':null}));if(this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]]){_[_0x6549('0x1b')](this['channels'][_0x5db86d['uniqueid']],{'starttime':moment()[_0x6549('0x1c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','interface':_0x5db86d[_0x6549('0x1d')][_0x6549('0x1e')](0x0,_0x5db86d[_0x6549('0x1d')][_0x6549('0x1f')]('-')),'membername':_0x5db86d[_0x6549('0x1d')]['substring'](_0x5db86d[_0x6549('0x1d')]['lastIndexOf']('/')+0x1,_0x5db86d[_0x6549('0x1d')][_0x6549('0x1f')]('-'))},_[_0x6549('0x20')](_0x5db86d,[_0x6549('0x21'),_0x6549('0x22')]));logger[_0x6549('0x23')](_0x6549('0x24'),_0x5db86d[_0x6549('0x18')],this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]][_0x6549('0x25')],this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]]['interface']);logger[_0x6549('0x17')](_0x6549('0x26'),_0x5db86d['uniqueid'],util[_0x6549('0x19')](this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x5db86d[_0x6549('0x18')]])_[_0x6549('0x1b')](this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]],this[_0x6549('0x27')][_0x5db86d[_0x6549('0x18')]]);this[_0x6549('0x14')](_0x6549('0x28'),'voice_outbound_channel:save',this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]]);logger[_0x6549('0x17')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x5db86d[_0x6549('0x18')],util['inspect'](this['channels'][_0x5db86d['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x6549('0x14')](_0x6549('0x29'),this['channels'][_0x5db86d[_0x6549('0x18')]]);}}}catch(_0x194ae7){logger[_0x6549('0x2a')](_0x6549('0x2b'),_0x5db86d[_0x6549('0x18')],util[_0x6549('0x19')](_0x194ae7,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6549('0x15')]['syncDialEnd']=function(_0x1b453c){try{if(this[_0x6549('0x16')](_0x1b453c)){logger[_0x6549('0x17')](_0x6549('0x2c'),_0x1b453c[_0x6549('0x18')],util[_0x6549('0x19')](_0x1b453c,{'showHidden':![],'depth':null}));if(this['channels'][_0x1b453c[_0x6549('0x18')]]){this['channels'][_0x1b453c[_0x6549('0x18')]]['dialstatus']=_0x1b453c[_0x6549('0x2d')];if(_0x1b453c[_0x6549('0x2d')]===_0x6549('0x2e')){this['channels'][_0x1b453c[_0x6549('0x18')]][_0x6549('0x2f')]=_0x1b453c[_0x6549('0x2f')];this[_0x6549('0x1a')][_0x1b453c['uniqueid']]['connectedlinename']=_0x1b453c['connectedlinename'];this[_0x6549('0x1a')][_0x1b453c[_0x6549('0x18')]]['answertime']=moment()[_0x6549('0x1c')](_0x6549('0x30'));this[_0x6549('0x1a')][_0x1b453c[_0x6549('0x18')]][_0x6549('0x31')]='connect';logger['info'](_0x6549('0x32'),_0x1b453c[_0x6549('0x18')],_0x1b453c[_0x6549('0x1d')][_0x6549('0x1e')](_0x1b453c[_0x6549('0x1d')][_0x6549('0x1f')]('/')+0x1,_0x1b453c[_0x6549('0x1d')][_0x6549('0x1f')]('-')));logger[_0x6549('0x17')](_0x6549('0x33'),_0x1b453c['uniqueid'],util[_0x6549('0x19')](this[_0x6549('0x1a')][_0x1b453c[_0x6549('0x18')]],{'showHidden':![],'depth':null}));ami[_0x6549('0x14')](_0x6549('0x34'),this['channels'][_0x1b453c['uniqueid']]);}logger['debug'](_0x6549('0x35'),_0x1b453c[_0x6549('0x18')],util[_0x6549('0x19')](this[_0x6549('0x1a')][_0x1b453c['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x6549('0x28'),_0x6549('0x36'),this[_0x6549('0x1a')][_0x1b453c['uniqueid']]);}}}catch(_0x973d2d){logger['error'](_0x6549('0x37'),_0x1b453c[_0x6549('0x18')],util[_0x6549('0x19')](_0x973d2d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6549('0x15')][_0x6549('0x10')]=function(_0xd525a5){try{if(this[_0x6549('0x16')](_0xd525a5)){logger['debug'](_0x6549('0x38'),_0xd525a5[_0x6549('0x18')],util[_0x6549('0x19')](_0xd525a5,{'showHidden':![],'depth':null}));this[_0x6549('0x39')](_0xd525a5[_0x6549('0x18')],_[_0x6549('0x3a')](_0xd525a5[_0x6549('0x3b')])[0x0],_0xd525a5[_0x6549('0x3c')]);if(this[_0x6549('0x16')](_0xd525a5[_0x6549('0x3b')])&&this[_0x6549('0x16')](_0xd525a5[_0x6549('0x3b')][_0x6549('0x3d')])){if(_[_0x6549('0x13')](this[_0x6549('0x1a')][_0xd525a5[_0x6549('0x18')]])){this['channels'][_0xd525a5[_0x6549('0x18')]]={'routeId':_0xd525a5[_0x6549('0x3c')],'variables':this[_0x6549('0xa')][_0xd525a5[_0x6549('0x18')]],'motionChannel':'voice'};logger[_0x6549('0x23')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0xd525a5[_0x6549('0x18')],_0xd525a5[_0x6549('0x3b')]['outboundrouteid'],_[_0x6549('0x3a')](_0xd525a5[_0x6549('0x3b')])[0x0],_0xd525a5[_0x6549('0x3c')]);logger[_0x6549('0x17')](_0x6549('0x3e'),_0xd525a5['uniqueid'],util['inspect'](this[_0x6549('0x1a')][_0xd525a5[_0x6549('0x18')]],{'showHidden':![],'depth':null}));this[_0x6549('0x14')](_0x6549('0x28'),_0x6549('0x36'),this['channels'][_0xd525a5[_0x6549('0x18')]]);}}}}catch(_0x17e691){logger[_0x6549('0x2a')](_0x6549('0x3f'),_0xd525a5[_0x6549('0x18')],util[_0x6549('0x19')](_0x17e691,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6549('0x15')][_0x6549('0x39')]=function(_0x5e6abf,_0x32b2d4,_0x58746c){var _0x2ed77c=[_0x6549('0x40'),_0x6549('0x41'),'rtpaudioqosjitter',_0x6549('0x42'),_0x6549('0x43'),_0x6549('0x44'),'rtpaudioqosrtt',_0x6549('0x45'),_0x6549('0x46'),_0x6549('0x47'),_0x6549('0x48'),_0x6549('0x49'),_0x6549('0x4a'),'memberdynamic',_0x6549('0x4b'),'memberlastcall',_0x6549('0x25'),_0x6549('0x4c'),_0x6549('0x4d')];if(!_[_0x6549('0x4e')](_0x32b2d4)&&!_[_0x6549('0x4f')](_0x2ed77c,_0x32b2d4)){if(_[_0x6549('0x13')](this[_0x6549('0xa')][_0x5e6abf])){this[_0x6549('0xa')][_0x5e6abf]={};}this[_0x6549('0xa')][_0x5e6abf][_0x32b2d4]=_0x58746c;}};VoiceDialReport[_0x6549('0x15')][_0x6549('0x12')]=function(_0x241201){try{if(this['isNotNull'](_0x241201)){logger[_0x6549('0x17')](_0x6549('0x50'),_0x241201[_0x6549('0x18')],util[_0x6549('0x19')](_0x241201,{'showHidden':![],'depth':null}));if(this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]){logger[_0x6549('0x23')](_0x6549('0x51'),_0x241201['uniqueid'],_0x241201[_0x6549('0x52')]);this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x53')]=moment()[_0x6549('0x1c')](_0x6549('0x30'));this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]['duration']=moment(this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x53')])[_0x6549('0x54')](this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]['starttime'],_0x6549('0x55'));this[_0x6549('0x1a')][_0x241201['uniqueid']][_0x6549('0x31')]=_0x6549('0x56');this[_0x6549('0x9')]['total']+=0x1;if(this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]['answertime']){this[_0x6549('0x9')]['answered']+=0x1;this[_0x6549('0x1a')][_0x241201['uniqueid']][_0x6549('0x57')]=moment(this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x58')])[_0x6549('0x54')](this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x59')],_0x6549('0x55'));this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x5a')]=moment(this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]['endtime'])[_0x6549('0x54')](this[_0x6549('0x1a')][_0x241201['uniqueid']][_0x6549('0x58')],_0x6549('0x55'));this[_0x6549('0x9')][_0x6549('0x5b')]+=this['channels'][_0x241201[_0x6549('0x18')]][_0x6549('0x57')]||0x0;this[_0x6549('0x9')][_0x6549('0x5c')]+=this['channels'][_0x241201[_0x6549('0x18')]]['billableseconds'];}this[_0x6549('0x9')][_0x6549('0x5d')]+=this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x5e')];logger[_0x6549('0x17')](_0x6549('0x5f'),_0x241201[_0x6549('0x18')],util[_0x6549('0x19')](this[_0x6549('0x1a')][_0x241201['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x6549('0x14')](_0x6549('0x60'),this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]);logger[_0x6549('0x17')](_0x6549('0x61'),_0x241201['uniqueid'],util['inspect'](this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]],{'showHidden':![],'depth':null}));ami[_0x6549('0x14')]('custom:dialend',this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]);logger['debug'](_0x6549('0x62'),_0x241201[_0x6549('0x18')],util[_0x6549('0x19')](this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]],{'showHidden':![],'depth':null}));this[_0x6549('0x14')](_0x6549('0x28'),_0x6549('0x63'),this['outbound']);logger[_0x6549('0x23')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0x6549('0x64')](this[_0x6549('0x1a')][_0x241201['uniqueid']]));logger[_0x6549('0x17')](_0x6549('0x65'),_0x241201[_0x6549('0x18')],util['inspect'](this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]],{'showHidden':![],'depth':null}));this[_0x6549('0x14')](_0x6549('0x28'),_0x6549('0x66'),this[_0x6549('0x1a')][_0x241201['uniqueid']]);delete this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]];}else if(this[_0x6549('0x1a')][_0x241201['linkedid']]){this['channels'][_0x241201['linkedid']][_0x6549('0x18')]=this[_0x6549('0x1a')][_0x241201[_0x6549('0x67')]]['destuniqueid'];}if(this['variables'][_0x241201[_0x6549('0x18')]]){delete this['variables'][_0x241201[_0x6549('0x18')]];}}}catch(_0x3e3f8c){logger[_0x6549('0x2a')](_0x6549('0x68'),_0x241201[_0x6549('0x18')],util[_0x6549('0x19')](_0x3e3f8c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6549('0x15')]['syncNewExten']=function(_0x2f8c3a){try{if(this[_0x6549('0x16')](_0x2f8c3a)){logger[_0x6549('0x17')]('[%s][voiceDialReport][newexten]\x20event:',_0x2f8c3a[_0x6549('0x18')],util[_0x6549('0x19')](_0x2f8c3a,{'showHidden':![],'depth':null}));if(_0x2f8c3a[_0x6549('0x69')][_0x6549('0x6a')]()===_0x6549('0x6b')){_0x2f8c3a[_0x6549('0x6c')]=(_0x2f8c3a[_0x6549('0x6d')]||_0x2f8c3a['applicationdata'])[_0x6549('0x6a')]();if(_['startsWith'](_0x2f8c3a[_0x6549('0x6c')],_0x6549('0x6e'))){if(_[_0x6549('0x13')](this[_0x6549('0x27')][_0x2f8c3a[_0x6549('0x18')]]))this[_0x6549('0x27')][_0x2f8c3a[_0x6549('0x18')]]={};logger[_0x6549('0x23')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x2f8c3a[_0x6549('0x18')],_0x2f8c3a[_0x6549('0x69')],_0x2f8c3a[_0x6549('0x6c')]);var _0x30214c=_0x2f8c3a[_0x6549('0x6c')][_0x6549('0x6f')]('=');var _0xc8645b=_0x30214c[0x0][_0x6549('0x70')](/cdr\((.*)\)/);if(_0xc8645b)this[_0x6549('0x27')][_0x2f8c3a[_0x6549('0x18')]][_0xc8645b[0x1]]=_0x30214c[0x1];}}}}catch(_0x51f479){logger[_0x6549('0x2a')](_0x6549('0x71'),_0x2f8c3a[_0x6549('0x18')],util[_0x6549('0x19')](_0x51f479,{'showHidden':![],'depth':null}));}};module[_0x6549('0x72')]=VoiceDialReport;
\ No newline at end of file
index a1ed7b3..9633d6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d94=['campaigns','summary','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncBlindTransfer','loopQueueSummary','originated','isEmpty','hasOwnProperty','talking','pTalking','queueStatusComplete','unlockRR','queuecallerexit','queuecallercomplete','switch','sequence','isNil','Action','status','catch','message','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','clearQueueReport','prototype','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','voice:queue:%s','voice_queue_channel:save',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','format','queue','voice_queue_channel:remove','emitInboundVoiceQueueSummary','type','inbound','name','voice_queue:save','isNotNull','isUndefined','loopQueueShow','clearZombieChannels','queues','then','actionid','isRunning','queuestatus','[voiceQueueReport][queuesummary]','createQueueSummaryReport','summaryEvent','handleInboundQueueSummaryReport','compareToInboundQueue','assign','outbound','statusRequests','syncQueueSummaryComplete','completeEvent','push','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','pick','keys','last','holdtime','originalposition','queuecallerexitreason','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','lastAssignedTo','membername','queuecallerexitAt','transfer','COMPLETED','toLowerCase','local/','linkedid','add','seconds','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][varset]','addVariable','variable','value','CONTINUE','lastevent','timeout','queuecallerleaveAt','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','handleHangup','length','sumHoldTime','diff','sumDuration','ATTENDEDTRANSFER','total','answered','milliseconds','queuecallercompleteAt','unmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','abandoned','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','info','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','[%s][voiceQueueReport][handleHangup]','[%s][voiceQueueReport][hangup]','cause-txt','transferid','[%s][voiceQueueReport][syncHangup]\x20No\x20available\x20data\x20in\x20queueReports\x20structure:\x20clear\x20action\x20in\x20variablea\x20and\x20channels\x20structures\x20needed','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','syncHangup','BlindTransfer','context','transfererchannel','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][musiconholdstop]','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','set','applicationdata','appdata','startsWith','CDR(routeAlias)','application','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','localhost','enqueue','tail','finally','queueReports','realtime','agents','channels','queueChannels','voiceQueues'];(function(_0x15ece6,_0x51a965){var _0x3dc05c=function(_0x43e0c1){while(--_0x43e0c1){_0x15ece6['push'](_0x15ece6['shift']());}};_0x3dc05c(++_0x51a965);}(_0x4d94,0x1d0));var _0x44d9=function(_0x116784,_0x10ecc7){_0x116784=_0x116784-0x0;var _0x1a5fcd=_0x4d94[_0x116784];return _0x1a5fcd;};'use strict';var _=require(_0x44d9('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0x44d9('0x1'));var config=require(_0x44d9('0x2'));var logger=require(_0x44d9('0x3'))(_0x44d9('0x4'));var ami=require(_0x44d9('0x5'));var QueueReport=require(_0x44d9('0x6'));var VoiceQueueSummary=require('../model/voiceQueueSummary');config[_0x44d9('0x7')]=_['defaults'](config[_0x44d9('0x7')],{'host':_0x44d9('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x44d9('0x7')]));var Sequence=function(){};Sequence['prototype'][_0x44d9('0x9')]=function(_0x2e4300){this[_0x44d9('0xa')]=this[_0x44d9('0xa')]?this[_0x44d9('0xa')][_0x44d9('0xb')](_0x2e4300):_0x2e4300();};function VoiceQueueReport(_0x5d4819){this['sequence']=new Sequence();this[_0x44d9('0xc')]={};this[_0x44d9('0xd')]=_0x5d4819;this['agents']=_0x5d4819[_0x44d9('0xe')];this[_0x44d9('0xf')]=_0x5d4819[_0x44d9('0x10')];this['voiceQueues']=_0x5d4819[_0x44d9('0x11')];this[_0x44d9('0x12')]=_0x5d4819['campaigns'];this[_0x44d9('0x13')]=initializeSummary();this[_0x44d9('0x14')]={};ami['on'](_0x44d9('0x15'),this[_0x44d9('0x16')][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x18'),this['syncQueueSummaryComplete'][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x19'),this[_0x44d9('0x1a')][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x1b'),this[_0x44d9('0x1c')][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x1d'),this[_0x44d9('0x1e')][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x1f'),this[_0x44d9('0x20')][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x21'),this[_0x44d9('0x22')][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x23'),this['syncAgentComplete'][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x24'),this[_0x44d9('0x25')][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x26'),this[_0x44d9('0x27')][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x28'),this['syncHangup'][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x29'),this[_0x44d9('0x2a')][_0x44d9('0x17')](this));ami['on']('musiconholdstart',this[_0x44d9('0x2b')][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x2c'),this[_0x44d9('0x2d')][_0x44d9('0x17')](this));ami['on'](_0x44d9('0x2e'),this['syncAttendedTransfer'][_0x44d9('0x17')](this));ami['on']('blindtransfer',this[_0x44d9('0x2f')][_0x44d9('0x17')](this));this[_0x44d9('0x30')]();this['loopQueueShow']();}function clearChannels(_0x5c946e){if(!_['isEmpty'](_0x5c946e)){for(var _0x4dc260 in _0x5c946e){if(_0x5c946e['hasOwnProperty'](_0x4dc260)){delete _0x5c946e[_0x4dc260];}}}}function clearCampaigns(_0x10e006){if(!_['isEmpty'](_0x10e006)){for(var _0x50bc7d in _0x10e006){if(_0x10e006['hasOwnProperty'](_0x50bc7d)){_0x10e006[_0x50bc7d][_0x44d9('0x31')]=0x0;}}}}function clearVoiceQueues(_0x417ff6){if(!_[_0x44d9('0x32')](_0x417ff6)){for(var _0x35b351 in _0x417ff6){if(_0x417ff6[_0x44d9('0x33')](_0x35b351)){_0x417ff6[_0x35b351][_0x44d9('0x31')]=0x0;_0x417ff6[_0x35b351][_0x44d9('0x34')]=0x0;_0x417ff6[_0x35b351][_0x44d9('0x35')]=0x0;_0x417ff6[_0x35b351]['waiting']=0x0;_0x417ff6[_0x35b351][_0x44d9('0x36')]=!![];}}}}function clearAgentBooked(_0x9f89cd){if(!_[_0x44d9('0x32')](_0x9f89cd)){for(var _0x165242 in _0x9f89cd){if(_0x9f89cd['hasOwnProperty'](_0x165242)){_0x9f89cd[_0x165242][_0x44d9('0x37')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasCallerLeftTheQueue(_0x27dc51){return _0x27dc51[_0x44d9('0x38')]||_0x27dc51[_0x44d9('0x1f')]||_0x27dc51[_0x44d9('0x39')];}VoiceQueueReport['prototype']['clearZombieChannels']=function(){var _0x56055e=this;for(var _0x5f2dcd in this[_0x44d9('0xf')]){if(this['channels'][_0x44d9('0x33')](_0x5f2dcd)&&!this[_0x44d9('0xf')][_0x5f2dcd][_0x44d9('0x3a')]){this[_0x44d9('0x3b')][_0x44d9('0x9')](function(){if(!_[_0x44d9('0x3c')](_0x56055e[_0x44d9('0xf')][_0x5f2dcd])){return ami[_0x44d9('0x3d')]({'action':_0x44d9('0x3e'),'channel':_0x56055e[_0x44d9('0xf')][_0x5f2dcd]['channel']})[_0x44d9('0x3f')](function(_0x14cabd){if(_0x14cabd[_0x44d9('0x40')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x56055e[_0x44d9('0xf')][_0x5f2dcd]){delete _0x56055e[_0x44d9('0xf')][_0x5f2dcd];logger[_0x44d9('0x41')](_0x44d9('0x42'),_0x5f2dcd,util[_0x44d9('0x43')](_0x14cabd,{'showHidden':![],'depth':null}));}if(_0x56055e['queueReports'][_0x5f2dcd]){delete _0x56055e[_0x44d9('0xc')][_0x5f2dcd];logger[_0x44d9('0x41')](_0x44d9('0x44'),_0x5f2dcd,util[_0x44d9('0x43')](_0x14cabd,{'showHidden':![],'depth':null}));}if(_0x56055e['variables'][_0x5f2dcd]){delete _0x56055e[_0x44d9('0x14')][_0x5f2dcd];logger[_0x44d9('0x41')](_0x44d9('0x45'),_0x5f2dcd,util['inspect'](_0x14cabd,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x44d9('0x2a')]=function(){logger[_0x44d9('0x41')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this['channels']);this[_0x44d9('0x46')](this[_0x44d9('0xc')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0x44d9('0x11')]);clearCampaigns(this[_0x44d9('0x12')]);this['summary']=initializeSummary();};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x46')]=function(_0x1e5687){var _0x26de3d=this;if(!_[_0x44d9('0x32')](_0x1e5687)){for(var _0x354052 in _0x1e5687){if(_0x1e5687[_0x44d9('0x33')](_0x354052)){_0x26de3d[_0x44d9('0x48')](_0x1e5687[_0x354052],_0x44d9('0x49'));delete _0x1e5687[_0x354052];}}}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x4a')]=function(_0x187db5,_0x45e961,_0x542bf1){io['to'](_0x187db5)[_0x44d9('0x4a')](_0x45e961,_0x542bf1);};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x4b')]=function(_0x11b2d7,_0x228dea){logger[_0x44d9('0x4c')](_0x44d9('0x4d')+_0x228dea+_0x44d9('0x4e'),_0x11b2d7['uniqueid'],util[_0x44d9('0x43')](_0x11b2d7,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x44d9('0x4f'),_0x11b2d7['queue']),_0x44d9('0x50'),_0x11b2d7);io[_0x44d9('0x4a')]('voice_queue_presence:save',_0x11b2d7);};VoiceQueueReport['prototype'][_0x44d9('0x48')]=function(_0x21ec8d,_0x46e6ba){logger[_0x44d9('0x4c')]('[%s][voiceQueueReport]['+_0x46e6ba+_0x44d9('0x51'),_0x21ec8d[_0x44d9('0x52')],util[_0x44d9('0x43')](_0x21ec8d,{'showHidden':![],'depth':null}));if(_0x21ec8d['queuecallerexitreason']==='ATTENDEDTRANSFER'){return;}this[_0x44d9('0x4a')](util[_0x44d9('0x53')](_0x44d9('0x4f'),_0x21ec8d[_0x44d9('0x54')]),_0x44d9('0x55'),_0x21ec8d);io['emit']('voice_queue_presence:remove',_0x21ec8d);};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x56')]=function(_0x3254e){if(_0x3254e[_0x44d9('0x57')]===_0x44d9('0x58')){logger[_0x44d9('0x4c')]('[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:',util['inspect'](_0x3254e,{'showHidden':![],'depth':null}));this[_0x44d9('0x4a')](util[_0x44d9('0x53')](_0x44d9('0x4f'),_0x3254e[_0x44d9('0x59')]),_0x44d9('0x5a'),_0x3254e);}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x5b')]=function(_0x3e98da){return _0x3e98da!==null&&!_[_0x44d9('0x5c')](_0x3e98da);};VoiceQueueReport['prototype'][_0x44d9('0x5d')]=function(){var _0x75583=this;setInterval(function(){_0x75583[_0x44d9('0x5e')]();ami[_0x44d9('0x3d')]({'action':_0x44d9('0x5f')})[_0x44d9('0x3f')](function(_0x2ce684){logger['error']('[voiceQueueReport][queues]',util[_0x44d9('0x43')](_0x2ce684,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype']['loopQueueSummary']=function(){var _0xefa44d=this;setInterval(function(){if(!_0xefa44d[_0x44d9('0x13')]['isRunning']){return ami[_0x44d9('0x3d')]({'action':'queuesummary'})[_0x44d9('0x60')](function(_0x1f68d0){_0xefa44d[_0x44d9('0x13')]['id']=_0x1f68d0[_0x44d9('0x61')];_0xefa44d[_0x44d9('0x13')][_0x44d9('0x62')]=!![];_0xefa44d['summary'][_0x44d9('0x63')][_0x1f68d0['actionid']]={};})[_0x44d9('0x3f')](function(_0x221f3d){logger['error'](_0x44d9('0x64'),util[_0x44d9('0x43')](_0x221f3d,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x65')]=function(_0x515f24,_0x397e52){var _0x23ceec;if(this[_0x44d9('0x13')]&&this[_0x44d9('0x13')][_0x44d9('0x5f')]&&this['summary']['queues'][_0x515f24[_0x44d9('0x59')]]){_0x23ceec=this[_0x44d9('0x13')][_0x44d9('0x5f')][_0x515f24['name']][_0x44d9('0x66')];}var _0x37a788=new VoiceQueueSummary(_0x515f24);return _0x37a788['createReport'](_0x397e52[_0x44d9('0xe')],this[_0x44d9('0xe')],_0x23ceec,this['realtime'][_0x44d9('0xf')]);};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x67')]=function(_0xcf8a7d,_0x509475){var _0x42b45f=this[_0x44d9('0x65')](_0xcf8a7d,_0x509475);var _0x2dc2ad=![];_0x2dc2ad=_0x42b45f[_0x44d9('0x68')](_0xcf8a7d);if(_0x2dc2ad){Object[_0x44d9('0x69')](_0xcf8a7d,_0x42b45f);this[_0x44d9('0xd')][_0x44d9('0x11')][_0xcf8a7d[_0x44d9('0x59')]]=_0xcf8a7d;this[_0x44d9('0x56')](_0x42b45f);}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x1c')]=function(_0x2eee01){var _0x39a18e=null;var _0x3e4119=this[_0x44d9('0x13')]['id'];if(this['summary'][_0x44d9('0x63')][_0x3e4119]){_0x39a18e=this[_0x44d9('0x13')]['queuestatus'][_0x3e4119][_0x2eee01[_0x44d9('0x61')]];}if(!_0x39a18e){this[_0x44d9('0x13')]=initializeSummary();return;}var _0x2afb43=this[_0x44d9('0x11')][_0x39a18e[_0x44d9('0x54')]];if(_0x2afb43[_0x44d9('0x57')]===_0x44d9('0x58')){this[_0x44d9('0x67')](_0x2afb43,_0x39a18e);}else if(_0x2afb43[_0x44d9('0x57')]===_0x44d9('0x6a')){var _0x4c83e2=this[_0x44d9('0x65')](_0x2afb43,_0x39a18e);ami[_0x44d9('0x4a')]('custom:queuesummary',_0x4c83e2);}this['summary'][_0x44d9('0x6b')]-=0x1;var _0x310299=this[_0x44d9('0x13')][_0x44d9('0x6b')]>0x0?!![]:![];if(!_0x310299){return this[_0x44d9('0x6c')](this[_0x44d9('0x13')][_0x44d9('0x6d')]);}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x1a')]=function(_0x20b217){var _0x3da919=this['summary']['id'];if(this[_0x44d9('0x13')][_0x44d9('0x63')][_0x3da919]&&this[_0x44d9('0x13')][_0x44d9('0x63')][_0x3da919][_0x20b217[_0x44d9('0x61')]]){this[_0x44d9('0x13')][_0x44d9('0x63')][_0x3da919][_0x20b217[_0x44d9('0x61')]][_0x44d9('0xe')][_0x44d9('0x6e')](_0x20b217);}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x16')]=function(_0x21b3de){var _0x240452=this;try{if(this[_0x44d9('0x5b')](_0x21b3de)&&this[_0x44d9('0x5b')](_0x21b3de['queue'])){logger[_0x44d9('0x4c')](_0x44d9('0x6f'),util['inspect'](_0x21b3de,{'showHidden':![],'depth':null}));var _0x54d9b8=this[_0x44d9('0x11')][_0x21b3de['queue']];if(_0x54d9b8){logger[_0x44d9('0x4c')](_0x44d9('0x70'),_0x54d9b8[_0x44d9('0x59')]);this[_0x44d9('0x13')][_0x44d9('0x5f')][_0x54d9b8[_0x44d9('0x59')]]={'summaryEvent':_0x21b3de};this[_0x44d9('0x13')]['statusRequests']+=0x1;return ami[_0x44d9('0x3d')]({'action':'queuestatus','queue':_0x54d9b8[_0x44d9('0x59')]})[_0x44d9('0x60')](function(_0x51d15e){if(!_0x240452[_0x44d9('0x13')][_0x44d9('0x63')][_0x21b3de[_0x44d9('0x61')]]){_0x240452[_0x44d9('0x13')][_0x44d9('0x63')][_0x21b3de[_0x44d9('0x61')]]={};}_0x240452[_0x44d9('0x13')][_0x44d9('0x63')][_0x21b3de[_0x44d9('0x61')]][_0x51d15e[_0x44d9('0x61')]]={'queue':_0x54d9b8[_0x44d9('0x59')],'agents':[]};})[_0x44d9('0x3f')](function(_0x5166cc){throw _0x5166cc;});}}}catch(_0x9865ec){logger[_0x44d9('0x41')]('[voiceQueueReport][queuesummary]',util[_0x44d9('0x43')](_0x9865ec,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x44d9('0x47')]['syncQueueSummaryComplete']=function(_0xf683b6){if(this[_0x44d9('0x13')][_0x44d9('0x6b')]>0x0){this[_0x44d9('0x13')][_0x44d9('0x6d')]=_0xf683b6;return;}logger[_0x44d9('0x4c')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x44d9('0x43')](_0xf683b6,{'showHidden':![],'depth':null}));this[_0x44d9('0x13')]=initializeSummary();ami[_0x44d9('0x4a')](_0x44d9('0x71'),{});};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x1e')]=function(_0x560122){try{if(this[_0x44d9('0x5b')](_0x560122)){logger[_0x44d9('0x4c')](_0x44d9('0x72'),_0x560122[_0x44d9('0x52')],util['inspect'](_0x560122,{'showHidden':![],'depth':null}));if(_[_0x44d9('0x5c')](this[_0x44d9('0xc')][_0x560122[_0x44d9('0x52')]])){this[_0x44d9('0xc')][_0x560122[_0x44d9('0x52')]]=[];}if(_[_0x44d9('0x5c')](this[_0x44d9('0xf')][_0x560122[_0x44d9('0x52')]])){this[_0x44d9('0xf')][_0x560122['uniqueid']]={};}var _0x2be749=new QueueReport();_0x2be749[_0x44d9('0x54')]=_0x560122['queue'];_0x2be749[_0x44d9('0x57')]=this[_0x44d9('0x11')][_0x2be749[_0x44d9('0x54')]]&&this[_0x44d9('0x11')][_0x2be749[_0x44d9('0x54')]]['type']?this['voiceQueues'][_0x2be749[_0x44d9('0x54')]][_0x44d9('0x57')]||_0x44d9('0x58'):_0x44d9('0x58');_0x2be749[_0x44d9('0x73')]=moment()['format'](_0x44d9('0x74'));_0x2be749[_0x44d9('0x75')]=_0x560122[_0x44d9('0x75')];_0x2be749[_0x44d9('0x76')]=_0x560122[_0x44d9('0x76')];_0x2be749[_0x44d9('0x52')]=_0x560122[_0x44d9('0x52')];_0x2be749[_0x44d9('0x77')]=this[_0x44d9('0xf')][_0x560122[_0x44d9('0x52')]][_0x44d9('0x77')];logger['info']('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x2be749[_0x44d9('0x54')],_0x2be749[_0x44d9('0x57')]);Object[_0x44d9('0x69')](_0x2be749,_[_0x44d9('0x78')](_0x560122,_[_0x44d9('0x79')](_0x2be749)));this[_0x44d9('0xc')][_0x560122[_0x44d9('0x52')]][_0x44d9('0x6e')](_0x2be749);this['channels'][_0x560122[_0x44d9('0x52')]]=_0x2be749;this[_0x44d9('0x4b')](_0x2be749,_0x44d9('0x1d'));}}catch(_0x3a535c){logger[_0x44d9('0x41')](_0x44d9('0x72'),_0x560122['uniqueid'],util[_0x44d9('0x43')](_0x3a535c,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x44d9('0x20')]=function(_0x583f69){try{if(this[_0x44d9('0x5b')](_0x583f69)){logger[_0x44d9('0x4c')]('[%s][voiceQueueReport][queuecallerabandon]',_0x583f69[_0x44d9('0x52')],util[_0x44d9('0x43')](_0x583f69,{'showHidden':![],'depth':null}));if(this[_0x44d9('0xc')][_0x583f69[_0x44d9('0x52')]]){var _0x9a22b3=_[_0x44d9('0x7a')](this[_0x44d9('0xc')][_0x583f69['uniqueid']]);_0x9a22b3['queuecallercomplete']=![];_0x9a22b3['queuecallercompleteAt']=null;_0x9a22b3[_0x44d9('0x7b')]=_0x583f69[_0x44d9('0x7b')];_0x9a22b3[_0x44d9('0x7c')]=_0x583f69['originalposition'];_0x9a22b3[_0x44d9('0x1f')]=!![];_0x9a22b3['queuecallerabandonAt']=moment()[_0x44d9('0x53')](_0x44d9('0x74'));_0x9a22b3[_0x44d9('0x7d')]='ABANDONED';_0x9a22b3['lastAssignedTo']=null;logger['info'](_0x44d9('0x7e'),_0x9a22b3['queue'],_0x9a22b3['type']);this['channels'][_0x583f69[_0x44d9('0x52')]]=_0x9a22b3;this[_0x44d9('0x48')](_0x9a22b3,'queuecallerabandon');}}}catch(_0xa42bfa){logger[_0x44d9('0x41')]('[%s][voiceQueueReport][queuecallerabandon]',_0x583f69['uniqueid'],util[_0x44d9('0x43')](_0xa42bfa,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x44d9('0x22')]=function(_0x56f039){try{if(this['isNotNull'](_0x56f039)){logger[_0x44d9('0x4c')](_0x44d9('0x7f'),_0x56f039[_0x44d9('0x52')],util['inspect'](_0x56f039,{'showHidden':![],'depth':null}));if(this[_0x44d9('0xc')][_0x56f039[_0x44d9('0x52')]]){var _0x4be4c9=_['last'](this[_0x44d9('0xc')][_0x56f039[_0x44d9('0x52')]]);_0x4be4c9['queuecallerleaveAt']=moment()[_0x44d9('0x53')](_0x44d9('0x74'));_0x4be4c9[_0x44d9('0x80')]=_0x56f039['connectedlinenum'];_0x4be4c9['connectedlinename']=_0x56f039[_0x44d9('0x81')];logger['info'](_0x44d9('0x82'),_0x4be4c9[_0x44d9('0x54')],_0x4be4c9[_0x44d9('0x57')],_0x56f039[_0x44d9('0x80')],_0x56f039[_0x44d9('0x81')]);this[_0x44d9('0xf')][_0x56f039['uniqueid']]=_0x4be4c9;this['emitVoiceQueueChannelSave'](_0x4be4c9,'queuecallerleave');}}}catch(_0x50129f){logger[_0x44d9('0x41')](_0x44d9('0x7f'),_0x56f039[_0x44d9('0x52')],util[_0x44d9('0x43')](_0x50129f,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x44d9('0x25')]=function(_0x5d2a57){try{if(this[_0x44d9('0x5b')](_0x5d2a57)){logger['debug'](_0x44d9('0x83'),_0x5d2a57[_0x44d9('0x52')],util[_0x44d9('0x43')](_0x5d2a57,{'showHidden':![],'depth':null}));if(this[_0x44d9('0xc')][_0x5d2a57['uniqueid']]){var _0x110bcd=_['last'](this[_0x44d9('0xc')][_0x5d2a57[_0x44d9('0x52')]]);_0x110bcd['queuecallercomplete']=!![];_0x110bcd[_0x44d9('0x7d')]=_0x44d9('0x84');logger['info'](_0x44d9('0x85'),_0x110bcd[_0x44d9('0x54')],_0x110bcd[_0x44d9('0x57')]);}}}catch(_0x12bd97){logger[_0x44d9('0x41')]('[%s][voiceQueueReport][agentconnect]',_0x5d2a57[_0x44d9('0x52')],util['inspect'](_0x12bd97,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x44d9('0x86')]=function(_0x18be2a){try{if(this[_0x44d9('0x5b')](_0x18be2a)){logger[_0x44d9('0x4c')](_0x44d9('0x87'),_0x18be2a[_0x44d9('0x52')],util[_0x44d9('0x43')](_0x18be2a,{'showHidden':![],'depth':null}));if(this[_0x44d9('0xc')][_0x18be2a[_0x44d9('0x52')]]){var _0x2aec72=_[_0x44d9('0x7a')](this['queueReports'][_0x18be2a['uniqueid']]);_0x2aec72[_0x44d9('0x1f')]=![];_0x2aec72[_0x44d9('0x88')]=null;_0x2aec72['assigned']=!![];_0x2aec72[_0x44d9('0x89')]=_0x18be2a[_0x44d9('0x8a')];_0x2aec72[_0x44d9('0x7b')]=_0x18be2a[_0x44d9('0x7b')];_0x2aec72[_0x44d9('0x39')]=!![];_0x2aec72[_0x44d9('0x38')]=![];_0x2aec72[_0x44d9('0x8b')]=null;if(!_0x2aec72[_0x44d9('0x8c')]){if(_0x18be2a['reason']=='transfer'){_0x2aec72[_0x44d9('0x7d')]=_0x44d9('0x8d');logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x2aec72['queue'],_0x2aec72['type']);}else{if(_['startsWith'](_0x18be2a['channel'][_0x44d9('0x8e')](),_0x44d9('0x8f'))){if(this[_0x44d9('0xc')][_0x18be2a[_0x44d9('0x90')]]){var _0x1f08fd=_[_0x44d9('0x7a')](this['queueReports'][_0x18be2a[_0x44d9('0x90')]]);_0x1f08fd[_0x44d9('0x39')]=![];_0x1f08fd[_0x44d9('0x38')]=!![];_0x1f08fd[_0x44d9('0x8b')]=moment(_0x2aec72[_0x44d9('0x73')])[_0x44d9('0x91')](_0x18be2a[_0x44d9('0x7b')],_0x44d9('0x92'))[_0x44d9('0x53')](_0x44d9('0x74'));_0x1f08fd['queuecallerexitreason']='FORWARDTRANSFER';_0x1f08fd[_0x44d9('0x8c')]=!![];_0x1f08fd[_0x44d9('0x93')]=_0x44d9('0x94');_0x1f08fd[_0x44d9('0x95')]=_0x18be2a[_0x44d9('0x96')];_0x1f08fd[_0x44d9('0x97')]=_0x18be2a[_0x44d9('0x52')];logger['info'](_0x44d9('0x98'),_0x1f08fd[_0x44d9('0x54')],_0x1f08fd[_0x44d9('0x57')]);var _0x5a25cd=this[_0x44d9('0xc')][_0x18be2a['linkedid']];this[_0x44d9('0xc')][_0x18be2a[_0x44d9('0x90')]]=this[_0x44d9('0xc')][_0x18be2a['uniqueid']];this['queueReports'][_0x18be2a[_0x44d9('0x52')]]=_0x5a25cd;}}else{_0x2aec72[_0x44d9('0x7d')]='COMPLETEDBY'+_0x18be2a[_0x44d9('0x99')][_0x44d9('0x9a')]();logger['info'](_0x44d9('0x9b'),_0x2aec72[_0x44d9('0x54')],_0x2aec72[_0x44d9('0x57')],_0x2aec72[_0x44d9('0x7d')]);}}}this['channels'][_0x18be2a[_0x44d9('0x52')]]=_0x2aec72;}}}catch(_0x575532){logger['error']('[%s][voiceQueueReport][agentcomplete]',_0x18be2a[_0x44d9('0x52')],util[_0x44d9('0x43')](_0x575532,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x27')]=function(_0x1b1136){try{if(this[_0x44d9('0x5b')](_0x1b1136)){logger[_0x44d9('0x4c')](_0x44d9('0x9c'),_0x1b1136[_0x44d9('0x52')],util[_0x44d9('0x43')](_0x1b1136,{'showHidden':![],'depth':null}));this[_0x44d9('0x9d')](_0x1b1136['uniqueid'],_[_0x44d9('0x79')](_0x1b1136[_0x44d9('0x9e')])[0x0],_0x1b1136[_0x44d9('0x9f')]);if(this[_0x44d9('0xc')][_0x1b1136[_0x44d9('0x52')]]){var _0x192234=_['last'](this[_0x44d9('0xc')][_0x1b1136[_0x44d9('0x52')]]);if(_0x192234){if(this[_0x44d9('0x5b')](_0x1b1136[_0x44d9('0x9e')])&&this['isNotNull'](_0x1b1136[_0x44d9('0x9e')][_0x44d9('0x63')])){switch(_0x1b1136['value']){case _0x44d9('0xa0'):_0x192234[_0x44d9('0x38')]=![];_0x192234[_0x44d9('0x8b')]=null;break;case'TIMEOUT':_0x192234[_0x44d9('0xa1')]=_0x44d9('0xa2');_0x192234['queuecallerexit']=!![];_0x192234[_0x44d9('0x8b')]=moment()[_0x44d9('0x53')](_0x44d9('0x74'));_0x192234[_0x44d9('0xa3')]=moment()[_0x44d9('0x53')](_0x44d9('0x74'));logger[_0x44d9('0x4c')](_0x44d9('0xa4'),_0x1b1136['uniqueid'],util['inspect'](_0x192234,{'showHidden':![],'depth':null}));ami[_0x44d9('0x4a')](_0x44d9('0xa5'),_0x192234);break;default:_0x192234[_0x44d9('0x38')]=!![];_0x192234[_0x44d9('0x8b')]=moment()[_0x44d9('0x53')](_0x44d9('0x74'));_0x192234[_0x44d9('0xa3')]=moment()['format'](_0x44d9('0x74'));}_0x192234[_0x44d9('0x1f')]=![];_0x192234['queuecallerabandonAt']=null;_0x192234[_0x44d9('0x7d')]=_0x1b1136['value'];this[_0x44d9('0xf')][_0x1b1136[_0x44d9('0x52')]]=_0x192234;this[_0x44d9('0x48')](_0x192234,_0x44d9('0x26'));}else if(this[_0x44d9('0x5b')](_0x1b1136[_0x44d9('0x9e')])&&this[_0x44d9('0x5b')](_0x1b1136['variable'][_0x44d9('0xa6')])){if(!_0x192234[_0x44d9('0x1f')]){_0x192234[_0x44d9('0x38')]=!![];_0x192234['queuecallerexitAt']=moment()['format'](_0x44d9('0x74'));_0x192234[_0x44d9('0x7d')]=_0x44d9('0xa7');_0x192234[_0x44d9('0xa3')]=moment()[_0x44d9('0x53')](_0x44d9('0x74'));this[_0x44d9('0xf')][_0x1b1136[_0x44d9('0x52')]]=_0x192234;}}logger['info'](_0x44d9('0xa8'),_0x1b1136[_0x44d9('0x52')],_0x192234[_0x44d9('0x54')],_0x192234[_0x44d9('0x57')],_[_0x44d9('0x79')](_0x1b1136[_0x44d9('0x9e')])[0x0],_0x1b1136[_0x44d9('0x9f')]);_0x192234[_0x44d9('0x14')]=this[_0x44d9('0x14')][_0x1b1136[_0x44d9('0x52')]];}}}}catch(_0x45407c){logger[_0x44d9('0x41')](_0x44d9('0x9c'),_0x1b1136['uniqueid'],util[_0x44d9('0x43')](_0x45407c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x9d')]=function(_0x497f9a,_0x3ef57c,_0x1e9a6e){var _0x4c9230=['rtpaudioqos',_0x44d9('0xa9'),_0x44d9('0xaa'),_0x44d9('0xab'),'rtpaudioqosloss',_0x44d9('0xac'),_0x44d9('0xad'),_0x44d9('0xae'),_0x44d9('0xaf'),_0x44d9('0xb0'),_0x44d9('0xb1'),_0x44d9('0xb2'),_0x44d9('0xb3'),_0x44d9('0xb4'),_0x44d9('0xb5'),_0x44d9('0xb6'),_0x44d9('0x8a'),_0x44d9('0xb7'),_0x44d9('0xb8')];if(!_[_0x44d9('0x3c')](_0x3ef57c)&&!_['includes'](_0x4c9230,_0x3ef57c)){if(_[_0x44d9('0x5c')](this[_0x44d9('0x14')][_0x497f9a])){this[_0x44d9('0x14')][_0x497f9a]={};}this['variables'][_0x497f9a][_0x3ef57c]=_0x1e9a6e;}};VoiceQueueReport['prototype'][_0x44d9('0xb9')]=function(_0x1130b6,_0x2dcc71,_0x3823b6){try{var _0x44be8f={};if(this[_0x44d9('0xc')][_0x1130b6]){for(var _0x21ed60=0x0;_0x21ed60<this[_0x44d9('0xc')][_0x1130b6][_0x44d9('0xba')];_0x21ed60+=0x1){_0x44be8f=this[_0x44d9('0xc')][_0x1130b6][_0x21ed60];var _0x1e70d5=this[_0x44d9('0x11')][_0x44be8f[_0x44d9('0x54')]];if(_0x1e70d5){_0x1e70d5[_0x44d9('0xbb')]+=moment(_0x44be8f[_0x44d9('0xa3')])[_0x44d9('0xbc')](_0x44be8f[_0x44d9('0x73')],'seconds')||0x0;if(_0x3823b6&&_0x44be8f[_0x44d9('0x7d')]==='ATTENDEDTRANSFER'){_0x44be8f[_0x44d9('0x7d')]=_0x44d9('0x84');}if(_0x21ed60===this[_0x44d9('0xc')][_0x1130b6][_0x44d9('0xba')]-0x1){_0x1e70d5[_0x44d9('0xbd')]+=moment()['milliseconds'](0x0)[_0x44d9('0xbc')](_0x44be8f['queuecallerjoinAt'],_0x44d9('0x92'));if(hasCallerLeftTheQueue(_0x44be8f)&&_0x44be8f['queuecallerexitreason']!==_0x44d9('0xbe')){_0x1e70d5[_0x44d9('0xbf')]+=0x1;}if(_0x44be8f[_0x44d9('0x39')]){_0x1e70d5[_0x44d9('0xc0')]+=0x1;_0x1e70d5['sumBillable']+=moment()[_0x44d9('0xc1')](0x0)[_0x44d9('0xbc')](_0x44be8f[_0x44d9('0xa3')],_0x44d9('0x92'));_0x44be8f[_0x44d9('0xc2')]=moment()['format'](_0x44d9('0x74'));_0x44be8f[_0x44d9('0x38')]=![];_0x44be8f[_0x44d9('0x8b')]=null;}if(_0x44be8f[_0x44d9('0x38')]&&_0x44be8f['transfer']!=!![]){_0x1e70d5[_0x44d9('0xc3')]+=0x1;_0x44be8f['lastevent']=_0x44d9('0xc3');logger[_0x44d9('0x4c')](_0x44d9('0xc4'),_0x1130b6,util[_0x44d9('0x43')](_0x44be8f,{'showHidden':![],'depth':null}));ami[_0x44d9('0x4a')]('custom:queuecallerunmanaged',_0x44be8f);}if(_0x44be8f['queuecallerabandon']){_0x1e70d5['abandoned']+=0x1;_0x44be8f[_0x44d9('0xa1')]=_0x44d9('0xc5');logger[_0x44d9('0x4c')](_0x44d9('0xc6'),_0x1130b6,util[_0x44d9('0x43')](_0x44be8f,{'showHidden':![],'depth':null}));ami['emit'](_0x44d9('0xc7'),_0x44be8f);}}else{_0x1e70d5[_0x44d9('0xbd')]+=_0x1e70d5[_0x44d9('0xbb')];}logger[_0x44d9('0xc8')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x1130b6,_0x44be8f[_0x44d9('0x54')],_0x44be8f['type'],_0x2dcc71);this[_0x44d9('0xf')][_0x1130b6]=_0x44be8f;Object[_0x44d9('0x69')](this[_0x44d9('0x11')][_0x44be8f[_0x44d9('0x54')]],_0x1e70d5);if(_0x44be8f['queuecallerleaveAt']){this[_0x44d9('0x48')](_0x44be8f,_0x44d9('0x28'));}}}logger[_0x44d9('0x4c')](_0x44d9('0xc9'),_0x1130b6,util[_0x44d9('0x43')](this[_0x44d9('0xc')][_0x1130b6],{'showHidden':![],'depth':null}));if(hasCallerLeftTheQueue(_0x44be8f)&&_0x44be8f[_0x44d9('0x7d')]!==_0x44d9('0xbe')){ami[_0x44d9('0x4a')]('custom:voiceQueueReport',this[_0x44d9('0xc')][_0x1130b6]);if(this[_0x44d9('0xc')][_0x1130b6]){delete this[_0x44d9('0xc')][_0x1130b6];}if(this[_0x44d9('0xf')][_0x1130b6]){delete this[_0x44d9('0xf')][_0x1130b6];}if(this[_0x44d9('0x14')][_0x1130b6]){delete this[_0x44d9('0x14')][_0x1130b6];}}}}catch(_0x5ddc09){logger[_0x44d9('0x41')](_0x44d9('0xca'),_0x1130b6,util[_0x44d9('0x43')](_0x5ddc09,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x44d9('0x47')]['syncHangup']=function(_0x1afeaf){try{if(this['isNotNull'](_0x1afeaf)){logger[_0x44d9('0x4c')](_0x44d9('0xcb'),_0x1afeaf['uniqueid'],util[_0x44d9('0x43')](_0x1afeaf,{'showHidden':![],'depth':null}));if(this[_0x44d9('0xc')][_0x1afeaf['uniqueid']]){return this[_0x44d9('0xb9')](_0x1afeaf['uniqueid'],_0x1afeaf[_0x44d9('0xcc')],![]);}if(this[_0x44d9('0xc')][_0x1afeaf[_0x44d9('0x90')]]){if(_0x1afeaf['cause']==='21'){return;}return this[_0x44d9('0xb9')](_0x1afeaf[_0x44d9('0x90')],_0x1afeaf[_0x44d9('0xcc')],!![]);}var _0x30f958=Object[_0x44d9('0x79')](this[_0x44d9('0xc')]);for(var _0x4830ad=0x0;_0x4830ad<_0x30f958[_0x44d9('0xba')];_0x4830ad++){var _0xb890c8=_[_0x44d9('0x7a')](this['queueReports'][_0x30f958[_0x4830ad]]);if(_0xb890c8&&_0xb890c8[_0x44d9('0xcd')]===_0x1afeaf['uniqueid']){return this[_0x44d9('0xb9')](_0xb890c8[_0x44d9('0x52')],_0x1afeaf[_0x44d9('0xcc')],!![]);}}if(!this['queueReports'][_0x1afeaf['uniqueid']]){logger['debug'](_0x44d9('0xce'),_0x1afeaf[_0x44d9('0x52')]);if(this[_0x44d9('0xf')][_0x1afeaf['uniqueid']]){delete this[_0x44d9('0xf')][_0x1afeaf['uniqueid']];}if(this[_0x44d9('0x14')][_0x1afeaf[_0x44d9('0x52')]]){delete this[_0x44d9('0x14')][_0x1afeaf['uniqueid']];}}}}catch(_0x558414){logger[_0x44d9('0x41')](_0x44d9('0xcb'),_0x1afeaf['uniqueid'],util[_0x44d9('0x43')](_0x558414,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAttendedTransfer']=function(_0x5cc9a5){try{if(this['isNotNull'](_0x5cc9a5)){logger['debug'](_0x44d9('0xcf'),_0x5cc9a5['uniqueid'],util[_0x44d9('0x43')](_0x5cc9a5,{'showHidden':![],'depth':null}));var _0x17ddd2;var _0x2920c1;var _0x2eb306;if(this['queueReports'][_0x5cc9a5[_0x44d9('0xd0')]]){_0x17ddd2=_['last'](this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd0')]]);_0x17ddd2['transferexten']=_0x5cc9a5[_0x44d9('0xd1')];_0x17ddd2['transferuniqueid']=_0x5cc9a5[_0x44d9('0xd2')];_0x17ddd2[_0x44d9('0x7d')]=_0x44d9('0xbe');_0x17ddd2[_0x44d9('0x8c')]=!![];_0x17ddd2[_0x44d9('0x93')]=_0x44d9('0xd3');if(this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd2')]]){_0x2eb306=this['queueReports'][_0x5cc9a5[_0x44d9('0xd2')]];this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd2')]]=this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd0')]];this[_0x44d9('0xc')][_0x5cc9a5['transfereeuniqueid']]=_0x2eb306;_0x2920c1=_[_0x44d9('0x7a')](this[_0x44d9('0xc')][_0x5cc9a5['transfereeuniqueid']]);_0x2920c1[_0x44d9('0x3a')]=!![];}logger[_0x44d9('0xc8')](_0x44d9('0xd4'),_0x5cc9a5['uniqueid'],_0x17ddd2['queue'],_0x17ddd2[_0x44d9('0x57')],_0x17ddd2['transferexten'],_0x17ddd2[_0x44d9('0x97')]);}else if(this['queueReports'][_0x5cc9a5[_0x44d9('0xd5')]]){_0x17ddd2=_[_0x44d9('0x7a')](this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd5')]]);_0x17ddd2[_0x44d9('0x95')]=_0x5cc9a5['origtransfererexten'];_0x17ddd2[_0x44d9('0x97')]=_0x5cc9a5['origtransfereruniqueid'];_0x17ddd2['queuecallerexitreason']=_0x44d9('0xbe');_0x17ddd2[_0x44d9('0x8c')]=!![];_0x17ddd2[_0x44d9('0x93')]=_0x44d9('0xd3');if(this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd6')]]){_0x2eb306=this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd6')]];this[_0x44d9('0xc')][_0x5cc9a5['origtransfereruniqueid']]=this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd5')]];this[_0x44d9('0xc')][_0x5cc9a5['transfertargetuniqueid']]=_0x2eb306;_0x2920c1=_[_0x44d9('0x7a')](this['queueReports'][_0x5cc9a5[_0x44d9('0xd5')]]);_0x2920c1['switch']=!![];}logger[_0x44d9('0xc8')](_0x44d9('0xd4'),_0x5cc9a5[_0x44d9('0x52')],_0x17ddd2['queue'],_0x17ddd2[_0x44d9('0x57')],_0x17ddd2[_0x44d9('0x95')],_0x17ddd2[_0x44d9('0x97')]);}else if(this['queueReports'][_0x5cc9a5[_0x44d9('0xd6')]]){_0x17ddd2=_[_0x44d9('0x7a')](this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd6')]]);_0x17ddd2[_0x44d9('0x95')]=_0x5cc9a5['origtransfererexten'];_0x17ddd2[_0x44d9('0x97')]=_0x5cc9a5[_0x44d9('0xd6')];_0x17ddd2[_0x44d9('0x7d')]='ATTENDEDTRANSFER';_0x17ddd2[_0x44d9('0x8c')]=!![];_0x17ddd2[_0x44d9('0x93')]='ATTENDED';_0x17ddd2[_0x44d9('0x3a')]=!![];_0x17ddd2[_0x44d9('0xcd')]=_0x5cc9a5[_0x44d9('0xd0')];}else if(this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd2')]]){_0x17ddd2=_[_0x44d9('0x7a')](this[_0x44d9('0xc')][_0x5cc9a5[_0x44d9('0xd2')]]);_0x17ddd2[_0x44d9('0x95')]=_0x5cc9a5[_0x44d9('0xd1')];_0x17ddd2[_0x44d9('0x97')]=_0x5cc9a5[_0x44d9('0xd2')];_0x17ddd2['queuecallerexitreason']=_0x44d9('0xbe');_0x17ddd2['transfer']=!![];_0x17ddd2[_0x44d9('0x93')]=_0x44d9('0xd3');_0x17ddd2['switch']=!![];_0x17ddd2[_0x44d9('0xcd')]=_0x5cc9a5['transfertargetuniqueid'];}}}catch(_0x19e1ae){logger[_0x44d9('0x41')](_0x44d9('0xcf'),_0x5cc9a5[_0x44d9('0x52')],util[_0x44d9('0x43')](_0x19e1ae,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x2f')]=function(_0x42555a){try{if(this['isNotNull'](_0x42555a)){logger[_0x44d9('0x4c')](_0x44d9('0xd7'),_0x42555a['uniqueid'],util[_0x44d9('0x43')](_0x42555a,{'showHidden':![],'depth':null}));if(this[_0x44d9('0xc')][_0x42555a[_0x44d9('0xd0')]]){var _0x49e3b7=_['last'](this[_0x44d9('0xc')][_0x42555a[_0x44d9('0xd0')]]);_0x49e3b7['queuecallerexitreason']=_0x44d9('0xd8');_0x49e3b7[_0x44d9('0x8c')]=!![];_0x49e3b7[_0x44d9('0x93')]=_0x44d9('0xd9');_0x49e3b7[_0x44d9('0x95')]=_0x42555a[_0x44d9('0xda')];_0x49e3b7[_0x44d9('0x97')]=_0x42555a[_0x44d9('0xd0')];logger['info'](_0x44d9('0xdb'),_0x42555a[_0x44d9('0x52')],_0x49e3b7[_0x44d9('0x54')],_0x49e3b7[_0x44d9('0x57')],_0x49e3b7[_0x44d9('0x95')],_0x49e3b7[_0x44d9('0x97')]);this[_0x44d9('0xdc')]({'event':_0x44d9('0xdd'),'uniqueid':_0x42555a[_0x44d9('0xd0')],'context':_0x42555a[_0x44d9('0xde')],'channel':_0x42555a[_0x44d9('0xdf')]});}}}catch(_0x2a3513){logger[_0x44d9('0x41')](_0x44d9('0xd7'),_0x42555a[_0x44d9('0x52')],util['inspect'](_0x2a3513,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x2b')]=function(_0x2e1825){try{if(this[_0x44d9('0x5b')](_0x2e1825)){logger[_0x44d9('0x4c')]('[%s][voiceQueueReport][musiconholdstart]',_0x2e1825[_0x44d9('0x52')],util[_0x44d9('0x43')](_0x2e1825,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2e1825['uniqueid']]){var _0x3eddd=_['last'](this[_0x44d9('0xc')][_0x2e1825[_0x44d9('0x52')]]);if(!_[_0x44d9('0x3c')](_0x3eddd['queuecallerleaveAt'])){_0x3eddd[_0x44d9('0xe0')]=moment()[_0x44d9('0x53')](_0x44d9('0x74'));logger[_0x44d9('0xc8')](_0x44d9('0xe1'),_0x2e1825[_0x44d9('0x52')],_0x3eddd[_0x44d9('0xe0')]);}}}}catch(_0xca854a){logger['error'](_0x44d9('0xe2'),_0x2e1825[_0x44d9('0x52')],util[_0x44d9('0x43')](_0xca854a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0x2d')]=function(_0x243a61){try{if(this[_0x44d9('0x5b')](_0x243a61)){logger[_0x44d9('0x4c')]('[%s][voiceQueueReport][musiconholdstop]',_0x243a61['uniqueid'],util[_0x44d9('0x43')](_0x243a61,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x243a61['uniqueid']]){var _0x23568e=_[_0x44d9('0x7a')](this['queueReports'][_0x243a61['uniqueid']]);if(!_[_0x44d9('0x3c')](_0x23568e[_0x44d9('0xe0')])){_0x23568e['mohtime']+=moment()[_0x44d9('0xc1')](0x0)['diff'](_0x23568e[_0x44d9('0xe0')],_0x44d9('0x92'));logger[_0x44d9('0xc8')](_0x44d9('0xe3'),_0x243a61['uniqueid'],_0x23568e['mohtime']);delete _0x23568e['mohstarttime'];}}}}catch(_0x251ef6){logger['error'](_0x44d9('0xe4'),_0x243a61[_0x44d9('0x52')],util[_0x44d9('0x43')](_0x251ef6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x44d9('0x47')][_0x44d9('0xe5')]=function(_0xf31680){try{if(this[_0x44d9('0x5b')](_0xf31680)){logger[_0x44d9('0x4c')](_0x44d9('0xe6'),_0xf31680[_0x44d9('0x52')],util[_0x44d9('0x43')](_0xf31680,{'showHidden':![],'depth':null}));if(_0xf31680['application'][_0x44d9('0x8e')]()===_0x44d9('0xe7')){_0xf31680[_0x44d9('0xe8')]=_0xf31680['appdata']&&_0xf31680[_0x44d9('0xe9')][_0x44d9('0xea')](_0x44d9('0xeb'))?_0xf31680['appdata']:(_0xf31680[_0x44d9('0xe9')]||_0xf31680['applicationdata'])['toLowerCase']();if(_['startsWith'](_0xf31680[_0x44d9('0xe8')][_0x44d9('0x8e')](),'cdr(')){logger['info']('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0xf31680['uniqueid'],_0xf31680[_0x44d9('0xec')],_0xf31680[_0x44d9('0xe8')]);if(_['isUndefined'](this[_0x44d9('0xf')][_0xf31680['uniqueid']]))this['channels'][_0xf31680['uniqueid']]={};var _0x173d45=_0xf31680['applicationdata'][_0x44d9('0xed')]('=');var _0x31713b=_0x173d45[0x0][_0x44d9('0x8e')]()[_0x44d9('0xee')](/cdr\((.*)\)/);if(_0x31713b)this[_0x44d9('0xf')][_0xf31680[_0x44d9('0x52')]][_0x31713b[0x1]]=_0x173d45[0x1];}}}}catch(_0x521d07){logger[_0x44d9('0x41')](_0x44d9('0xef'),_0xf31680[_0x44d9('0x52')],util['inspect'](_0x521d07,{'showHidden':![],'depth':null}));}};module[_0x44d9('0xf0')]=VoiceQueueReport;
\ No newline at end of file
+var _0xc8d7=['moment','util','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','queuesummary','syncQueueSummary','bind','syncQueueSummaryComplete','queuemember','syncQueueMember','queuestatuscomplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','syncAgentComplete','agentconnect','syncAgentConnect','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','syncAttendedTransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','unlockRR','queuecallerexit','queuecallercomplete','clearZombieChannels','isNil','channel','catch','message','No\x20such\x20channel','error','inspect','queueReports','[%s][voiceQueueReport][checkQueueReport]','variables','[%s][voiceQueueReport][checkVariables]','clearQueueReport','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','queue','voice_queue_channel:save','emitVoiceQueueChannelRemove',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','voice:queue:%s','voice_queue_presence:remove','emitInboundVoiceQueueSummary','type','name','isUndefined','Action','queues','[voiceQueueReport][queues]','isRunning','then','queuestatus','createQueueSummaryReport','createReport','compareToInboundQueue','syncQueueStatusComplete','actionid','inbound','outbound','custom:queuesummary','statusRequests','push','isNotNull','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','[voiceQueueReport][queuesummary]','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','assign','pick','keys','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','queuecallerleaveAt','YYYY-MM-DD\x20HH:mm:ss','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','lastAssignedTo','membername','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','add','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','value','variable','CONTINUE','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','addVariable','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberpenalty','includes','sumHoldTime','diff','seconds','sumDuration','milliseconds','total','answered','sumBillable','unmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][handleHangup]','[%s][voiceQueueReport][hangup]','handleHangup','cause-txt','cause','length','transferid','[%s][voiceQueueReport][attendedtransfer]','secondtransfererexten','secondtransfereruniqueid','ATTENDED','transfereeuniqueid','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','syncMusicOnHoldStart','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','applicationdata','appdata','cdr(','[%s][voiceQueueReport][newexten]','exports','lodash'];(function(_0x2e8bfe,_0x26b928){var _0x4a6a73=function(_0x3fdda6){while(--_0x3fdda6){_0x2e8bfe['push'](_0x2e8bfe['shift']());}};_0x4a6a73(++_0x26b928);}(_0xc8d7,0x1e7));var _0x7c8d=function(_0x47f76a,_0x2abb39){_0x47f76a=_0x47f76a-0x0;var _0x510186=_0xc8d7[_0x47f76a];return _0x510186;};'use strict';var _=require(_0x7c8d('0x0'));var moment=require(_0x7c8d('0x1'));var util=require(_0x7c8d('0x2'));var Redis=require(_0x7c8d('0x3'));var config=require(_0x7c8d('0x4'));var logger=require(_0x7c8d('0x5'))(_0x7c8d('0x6'));var ami=require(_0x7c8d('0x7'));var QueueReport=require(_0x7c8d('0x8'));var VoiceQueueSummary=require(_0x7c8d('0x9'));config[_0x7c8d('0xa')]=_[_0x7c8d('0xb')](config[_0x7c8d('0xa')],{'host':_0x7c8d('0xc'),'port':0x18eb});var io=require(_0x7c8d('0xd'))(new Redis(config[_0x7c8d('0xa')]));var Sequence=function(){};Sequence[_0x7c8d('0xe')][_0x7c8d('0xf')]=function(_0xb9cd97){this[_0x7c8d('0x10')]=this['tail']?this[_0x7c8d('0x10')][_0x7c8d('0x11')](_0xb9cd97):_0xb9cd97();};function VoiceQueueReport(_0x3cec73){this[_0x7c8d('0x12')]=new Sequence();this['queueReports']={};this[_0x7c8d('0x13')]=_0x3cec73;this['agents']=_0x3cec73[_0x7c8d('0x14')];this[_0x7c8d('0x15')]=_0x3cec73[_0x7c8d('0x16')];this[_0x7c8d('0x17')]=_0x3cec73['voiceQueues'];this['campaigns']=_0x3cec73[_0x7c8d('0x18')];this[_0x7c8d('0x19')]=initializeSummary();this['variables']={};ami['on'](_0x7c8d('0x1a'),this[_0x7c8d('0x1b')][_0x7c8d('0x1c')](this));ami['on']('queuesummarycomplete',this[_0x7c8d('0x1d')][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x1e'),this[_0x7c8d('0x1f')][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x20'),this['syncQueueStatusComplete'][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x21'),this[_0x7c8d('0x22')]['bind'](this));ami['on'](_0x7c8d('0x23'),this[_0x7c8d('0x24')][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x25'),this[_0x7c8d('0x26')]['bind'](this));ami['on']('agentcomplete',this[_0x7c8d('0x27')][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x28'),this[_0x7c8d('0x29')][_0x7c8d('0x1c')](this));ami['on']('varset',this['syncVarSet']['bind'](this));ami['on']('hangup',this[_0x7c8d('0x2a')]['bind'](this));ami['on'](_0x7c8d('0x2b'),this[_0x7c8d('0x2c')][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x2d'),this['syncMusicOnHoldStart']['bind'](this));ami['on'](_0x7c8d('0x2e'),this[_0x7c8d('0x2f')][_0x7c8d('0x1c')](this));ami['on']('attendedtransfer',this[_0x7c8d('0x30')]['bind'](this));ami['on']('blindtransfer',this[_0x7c8d('0x31')][_0x7c8d('0x1c')](this));this[_0x7c8d('0x32')]();this[_0x7c8d('0x33')]();}function clearChannels(_0x5b62de){if(!_[_0x7c8d('0x34')](_0x5b62de)){for(var _0x48cea1 in _0x5b62de){if(_0x5b62de[_0x7c8d('0x35')](_0x48cea1)){delete _0x5b62de[_0x48cea1];}}}}function clearCampaigns(_0x2899b8){if(!_[_0x7c8d('0x34')](_0x2899b8)){for(var _0x38c9d3 in _0x2899b8){if(_0x2899b8[_0x7c8d('0x35')](_0x38c9d3)){_0x2899b8[_0x38c9d3][_0x7c8d('0x36')]=0x0;}}}}function clearVoiceQueues(_0x5cf1c9){if(!_['isEmpty'](_0x5cf1c9)){for(var _0x1c8b54 in _0x5cf1c9){if(_0x5cf1c9[_0x7c8d('0x35')](_0x1c8b54)){_0x5cf1c9[_0x1c8b54][_0x7c8d('0x36')]=0x0;_0x5cf1c9[_0x1c8b54][_0x7c8d('0x37')]=0x0;_0x5cf1c9[_0x1c8b54][_0x7c8d('0x38')]=0x0;_0x5cf1c9[_0x1c8b54][_0x7c8d('0x39')]=0x0;_0x5cf1c9[_0x1c8b54][_0x7c8d('0x3a')]=!![];}}}}function clearAgentBooked(_0x29c123){if(!_['isEmpty'](_0x29c123)){for(var _0x5ca88a in _0x29c123){if(_0x29c123[_0x7c8d('0x35')](_0x5ca88a)){_0x29c123[_0x5ca88a][_0x7c8d('0x3b')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasCallerLeftTheQueue(_0x47cbed){return _0x47cbed[_0x7c8d('0x3c')]||_0x47cbed['queuecallerabandon']||_0x47cbed[_0x7c8d('0x3d')];}VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x3e')]=function(){var _0x41d8f1=this;for(var _0x426650 in this[_0x7c8d('0x15')]){if(this['channels'][_0x7c8d('0x35')](_0x426650)&&!this['channels'][_0x426650]['switch']){this['sequence']['enqueue'](function(){if(!_[_0x7c8d('0x3f')](_0x41d8f1['channels'][_0x426650])){return ami['Action']({'action':'status','channel':_0x41d8f1['channels'][_0x426650][_0x7c8d('0x40')]})[_0x7c8d('0x41')](function(_0x2fb897){if(_0x2fb897[_0x7c8d('0x42')]===_0x7c8d('0x43')){setTimeout(function(){if(_0x41d8f1[_0x7c8d('0x15')][_0x426650]){delete _0x41d8f1['channels'][_0x426650];logger[_0x7c8d('0x44')]('[%s][voiceQueueReport][checkChannel]',_0x426650,util[_0x7c8d('0x45')](_0x2fb897,{'showHidden':![],'depth':null}));}if(_0x41d8f1[_0x7c8d('0x46')][_0x426650]){delete _0x41d8f1['queueReports'][_0x426650];logger[_0x7c8d('0x44')](_0x7c8d('0x47'),_0x426650,util[_0x7c8d('0x45')](_0x2fb897,{'showHidden':![],'depth':null}));}if(_0x41d8f1[_0x7c8d('0x48')][_0x426650]){delete _0x41d8f1[_0x7c8d('0x48')][_0x426650];logger[_0x7c8d('0x44')](_0x7c8d('0x49'),_0x426650,util[_0x7c8d('0x45')](_0x2fb897,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x7c8d('0xe')]['syncFullyBooted']=function(){logger[_0x7c8d('0x44')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x7c8d('0x15')]);this['clearQueueReport'](this[_0x7c8d('0x46')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0x7c8d('0x17')]);clearCampaigns(this[_0x7c8d('0x18')]);this[_0x7c8d('0x19')]=initializeSummary();};VoiceQueueReport['prototype'][_0x7c8d('0x4a')]=function(_0x51ab77){var _0x1c7b47=this;if(!_['isEmpty'](_0x51ab77)){for(var _0x24ec39 in _0x51ab77){if(_0x51ab77[_0x7c8d('0x35')](_0x24ec39)){_0x1c7b47['emitVoiceQueueChannelRemove'](_0x51ab77[_0x24ec39],_0x7c8d('0x4b'));delete _0x51ab77[_0x24ec39];}}}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x4c')]=function(_0xbd251a,_0x22bf9c,_0x57a3d0){io['to'](_0xbd251a)[_0x7c8d('0x4c')](_0x22bf9c,_0x57a3d0);};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x4d')]=function(_0x31f741,_0x216553){logger[_0x7c8d('0x4e')](_0x7c8d('0x4f')+_0x216553+_0x7c8d('0x50'),_0x31f741[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x31f741,{'showHidden':![],'depth':null}));this[_0x7c8d('0x4c')](util[_0x7c8d('0x52')]('voice:queue:%s',_0x31f741[_0x7c8d('0x53')]),_0x7c8d('0x54'),_0x31f741);io[_0x7c8d('0x4c')]('voice_queue_presence:save',_0x31f741);};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x55')]=function(_0x3ec715,_0x1b4844){logger[_0x7c8d('0x4e')](_0x7c8d('0x4f')+_0x1b4844+_0x7c8d('0x56'),_0x3ec715['uniqueid'],util[_0x7c8d('0x45')](_0x3ec715,{'showHidden':![],'depth':null}));if(_0x3ec715[_0x7c8d('0x57')]===_0x7c8d('0x58')){return;}this[_0x7c8d('0x4c')](util[_0x7c8d('0x52')](_0x7c8d('0x59'),_0x3ec715[_0x7c8d('0x53')]),'voice_queue_channel:remove',_0x3ec715);io[_0x7c8d('0x4c')](_0x7c8d('0x5a'),_0x3ec715);};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x5b')]=function(_0x3e8b73){if(_0x3e8b73[_0x7c8d('0x5c')]==='inbound'){logger[_0x7c8d('0x4e')]('[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:',util[_0x7c8d('0x45')](_0x3e8b73,{'showHidden':![],'depth':null}));this[_0x7c8d('0x4c')](util[_0x7c8d('0x52')](_0x7c8d('0x59'),_0x3e8b73[_0x7c8d('0x5d')]),'voice_queue:save',_0x3e8b73);}};VoiceQueueReport[_0x7c8d('0xe')]['isNotNull']=function(_0x1851e3){return _0x1851e3!==null&&!_[_0x7c8d('0x5e')](_0x1851e3);};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x33')]=function(){var _0x50f6ed=this;setInterval(function(){_0x50f6ed[_0x7c8d('0x3e')]();ami[_0x7c8d('0x5f')]({'action':_0x7c8d('0x60')})[_0x7c8d('0x41')](function(_0x4133be){logger[_0x7c8d('0x44')](_0x7c8d('0x61'),util[_0x7c8d('0x45')](_0x4133be,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x7c8d('0xe')]['loopQueueSummary']=function(){var _0x1f4fe9=this;setInterval(function(){if(!_0x1f4fe9[_0x7c8d('0x19')][_0x7c8d('0x62')]){return ami[_0x7c8d('0x5f')]({'action':_0x7c8d('0x1a')})[_0x7c8d('0x63')](function(_0x125730){_0x1f4fe9[_0x7c8d('0x19')]['id']=_0x125730['actionid'];_0x1f4fe9[_0x7c8d('0x19')]['isRunning']=!![];_0x1f4fe9[_0x7c8d('0x19')][_0x7c8d('0x64')][_0x125730['actionid']]={};})[_0x7c8d('0x41')](function(_0x573c3f){logger['error']('[voiceQueueReport][queuesummary]',util['inspect'](_0x573c3f,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x7c8d('0x65')]=function(_0x150ccb,_0x5d006d){var _0x38a1c3;if(this['summary']&&this[_0x7c8d('0x19')][_0x7c8d('0x60')]&&this[_0x7c8d('0x19')]['queues'][_0x150ccb[_0x7c8d('0x5d')]]){_0x38a1c3=this[_0x7c8d('0x19')][_0x7c8d('0x60')][_0x150ccb[_0x7c8d('0x5d')]]['summaryEvent'];}var _0x46ee50=new VoiceQueueSummary(_0x150ccb);return _0x46ee50[_0x7c8d('0x66')](_0x5d006d[_0x7c8d('0x14')],this[_0x7c8d('0x14')],_0x38a1c3,this[_0x7c8d('0x13')][_0x7c8d('0x15')]);};VoiceQueueReport[_0x7c8d('0xe')]['handleInboundQueueSummaryReport']=function(_0x307efd,_0x5cb902){var _0x20c7f8=this[_0x7c8d('0x65')](_0x307efd,_0x5cb902);var _0x9fcb40=![];_0x9fcb40=_0x20c7f8[_0x7c8d('0x67')](_0x307efd);if(_0x9fcb40){Object['assign'](_0x307efd,_0x20c7f8);this[_0x7c8d('0x13')][_0x7c8d('0x17')][_0x307efd[_0x7c8d('0x5d')]]=_0x307efd;this[_0x7c8d('0x5b')](_0x20c7f8);}};VoiceQueueReport['prototype'][_0x7c8d('0x68')]=function(_0x53b565){var _0x1f209e=null;var _0x19fcc5=this['summary']['id'];if(this['summary'][_0x7c8d('0x64')][_0x19fcc5]){_0x1f209e=this['summary'][_0x7c8d('0x64')][_0x19fcc5][_0x53b565[_0x7c8d('0x69')]];}if(!_0x1f209e){this['summary']=initializeSummary();return;}var _0x3c3ad4=this[_0x7c8d('0x17')][_0x1f209e[_0x7c8d('0x53')]];if(_0x3c3ad4[_0x7c8d('0x5c')]===_0x7c8d('0x6a')){this['handleInboundQueueSummaryReport'](_0x3c3ad4,_0x1f209e);}else if(_0x3c3ad4[_0x7c8d('0x5c')]===_0x7c8d('0x6b')){var _0x46b147=this[_0x7c8d('0x65')](_0x3c3ad4,_0x1f209e);ami['emit'](_0x7c8d('0x6c'),_0x46b147);}this[_0x7c8d('0x19')]['statusRequests']-=0x1;var _0x3eb567=this[_0x7c8d('0x19')][_0x7c8d('0x6d')]>0x0?!![]:![];if(!_0x3eb567){return this[_0x7c8d('0x1d')](this[_0x7c8d('0x19')]['completeEvent']);}};VoiceQueueReport['prototype'][_0x7c8d('0x1f')]=function(_0x4e18e3){var _0x5ad017=this[_0x7c8d('0x19')]['id'];if(this[_0x7c8d('0x19')][_0x7c8d('0x64')][_0x5ad017]&&this[_0x7c8d('0x19')][_0x7c8d('0x64')][_0x5ad017][_0x4e18e3['actionid']]){this[_0x7c8d('0x19')]['queuestatus'][_0x5ad017][_0x4e18e3['actionid']][_0x7c8d('0x14')][_0x7c8d('0x6e')](_0x4e18e3);}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x1b')]=function(_0xbd0ca3){var _0x3d310b=this;try{if(this[_0x7c8d('0x6f')](_0xbd0ca3)&&this['isNotNull'](_0xbd0ca3[_0x7c8d('0x53')])){logger['debug'](_0x7c8d('0x70'),util[_0x7c8d('0x45')](_0xbd0ca3,{'showHidden':![],'depth':null}));var _0x41c37e=this[_0x7c8d('0x17')][_0xbd0ca3[_0x7c8d('0x53')]];if(_0x41c37e){logger['debug'](_0x7c8d('0x71'),_0x41c37e[_0x7c8d('0x5d')]);this[_0x7c8d('0x19')][_0x7c8d('0x60')][_0x41c37e[_0x7c8d('0x5d')]]={'summaryEvent':_0xbd0ca3};this[_0x7c8d('0x19')][_0x7c8d('0x6d')]+=0x1;return ami[_0x7c8d('0x5f')]({'action':_0x7c8d('0x64'),'queue':_0x41c37e[_0x7c8d('0x5d')]})[_0x7c8d('0x63')](function(_0x200ffc){if(!_0x3d310b[_0x7c8d('0x19')][_0x7c8d('0x64')][_0xbd0ca3['actionid']]){_0x3d310b[_0x7c8d('0x19')]['queuestatus'][_0xbd0ca3['actionid']]={};}_0x3d310b[_0x7c8d('0x19')]['queuestatus'][_0xbd0ca3['actionid']][_0x200ffc[_0x7c8d('0x69')]]={'queue':_0x41c37e[_0x7c8d('0x5d')],'agents':[]};})[_0x7c8d('0x41')](function(_0x53f7ce){throw _0x53f7ce;});}}}catch(_0x4f46ea){logger[_0x7c8d('0x44')](_0x7c8d('0x72'),util[_0x7c8d('0x45')](_0x4f46ea,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')]['syncQueueSummaryComplete']=function(_0x566bda){if(this[_0x7c8d('0x19')][_0x7c8d('0x6d')]>0x0){this[_0x7c8d('0x19')]['completeEvent']=_0x566bda;return;}logger[_0x7c8d('0x4e')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x7c8d('0x45')](_0x566bda,{'showHidden':![],'depth':null}));this[_0x7c8d('0x19')]=initializeSummary();ami[_0x7c8d('0x4c')](_0x7c8d('0x73'),{});};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x22')]=function(_0x3b9e4e){try{if(this['isNotNull'](_0x3b9e4e)){logger[_0x7c8d('0x4e')](_0x7c8d('0x74'),_0x3b9e4e[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x3b9e4e,{'showHidden':![],'depth':null}));if(_[_0x7c8d('0x5e')](this['queueReports'][_0x3b9e4e[_0x7c8d('0x51')]])){this[_0x7c8d('0x46')][_0x3b9e4e[_0x7c8d('0x51')]]=[];}if(_[_0x7c8d('0x5e')](this['channels'][_0x3b9e4e[_0x7c8d('0x51')]])){this['channels'][_0x3b9e4e[_0x7c8d('0x51')]]={};}var _0x20a778=new QueueReport();_0x20a778[_0x7c8d('0x53')]=_0x3b9e4e[_0x7c8d('0x53')];_0x20a778['type']=this[_0x7c8d('0x17')][_0x20a778[_0x7c8d('0x53')]]&&this[_0x7c8d('0x17')][_0x20a778[_0x7c8d('0x53')]][_0x7c8d('0x5c')]?this[_0x7c8d('0x17')][_0x20a778[_0x7c8d('0x53')]][_0x7c8d('0x5c')]||'inbound':_0x7c8d('0x6a');_0x20a778[_0x7c8d('0x75')]=moment()[_0x7c8d('0x52')]('YYYY-MM-DD\x20HH:mm:ss');_0x20a778['position']=_0x3b9e4e['position'];_0x20a778[_0x7c8d('0x76')]=_0x3b9e4e[_0x7c8d('0x76')];_0x20a778[_0x7c8d('0x51')]=_0x3b9e4e[_0x7c8d('0x51')];_0x20a778['routealias']=this[_0x7c8d('0x15')][_0x3b9e4e[_0x7c8d('0x51')]][_0x7c8d('0x77')];logger[_0x7c8d('0x78')](_0x7c8d('0x79'),_0x20a778[_0x7c8d('0x53')],_0x20a778[_0x7c8d('0x5c')]);Object[_0x7c8d('0x7a')](_0x20a778,_[_0x7c8d('0x7b')](_0x3b9e4e,_[_0x7c8d('0x7c')](_0x20a778)));this[_0x7c8d('0x46')][_0x3b9e4e[_0x7c8d('0x51')]][_0x7c8d('0x6e')](_0x20a778);this[_0x7c8d('0x15')][_0x3b9e4e[_0x7c8d('0x51')]]=_0x20a778;this[_0x7c8d('0x4d')](_0x20a778,_0x7c8d('0x21'));}}catch(_0x570c40){logger['error'](_0x7c8d('0x74'),_0x3b9e4e[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x570c40,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x24')]=function(_0x19cf86){try{if(this[_0x7c8d('0x6f')](_0x19cf86)){logger[_0x7c8d('0x4e')](_0x7c8d('0x7d'),_0x19cf86['uniqueid'],util['inspect'](_0x19cf86,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x19cf86[_0x7c8d('0x51')]]){var _0xbe575a=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0x19cf86[_0x7c8d('0x51')]]);_0xbe575a[_0x7c8d('0x3d')]=![];_0xbe575a[_0x7c8d('0x7f')]=null;_0xbe575a[_0x7c8d('0x80')]=_0x19cf86[_0x7c8d('0x80')];_0xbe575a['originalposition']=_0x19cf86[_0x7c8d('0x81')];_0xbe575a[_0x7c8d('0x23')]=!![];_0xbe575a['queuecallerabandonAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xbe575a[_0x7c8d('0x57')]=_0x7c8d('0x82');_0xbe575a['lastAssignedTo']=null;logger[_0x7c8d('0x78')](_0x7c8d('0x83'),_0xbe575a[_0x7c8d('0x53')],_0xbe575a['type']);this[_0x7c8d('0x15')][_0x19cf86[_0x7c8d('0x51')]]=_0xbe575a;this['emitVoiceQueueChannelRemove'](_0xbe575a,'queuecallerabandon');}}}catch(_0xbd9e77){logger[_0x7c8d('0x44')]('[%s][voiceQueueReport][queuecallerabandon]',_0x19cf86[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0xbd9e77,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')]['syncQueueCallerLeave']=function(_0x46ae49){try{if(this['isNotNull'](_0x46ae49)){logger[_0x7c8d('0x4e')]('[%s][voiceQueueReport][queuecallerleave]',_0x46ae49[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x46ae49,{'showHidden':![],'depth':null}));if(this[_0x7c8d('0x46')][_0x46ae49[_0x7c8d('0x51')]]){var _0x678213=_['last'](this[_0x7c8d('0x46')][_0x46ae49[_0x7c8d('0x51')]]);_0x678213[_0x7c8d('0x84')]=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));_0x678213[_0x7c8d('0x86')]=_0x46ae49[_0x7c8d('0x86')];_0x678213[_0x7c8d('0x87')]=_0x46ae49[_0x7c8d('0x87')];logger[_0x7c8d('0x78')](_0x7c8d('0x88'),_0x678213[_0x7c8d('0x53')],_0x678213[_0x7c8d('0x5c')],_0x46ae49[_0x7c8d('0x86')],_0x46ae49[_0x7c8d('0x87')]);this[_0x7c8d('0x15')][_0x46ae49[_0x7c8d('0x51')]]=_0x678213;this[_0x7c8d('0x4d')](_0x678213,_0x7c8d('0x25'));}}}catch(_0x446606){logger['error']('[%s][voiceQueueReport][queuecallerleave]',_0x46ae49['uniqueid'],util[_0x7c8d('0x45')](_0x446606,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x29')]=function(_0x208b63){try{if(this[_0x7c8d('0x6f')](_0x208b63)){logger[_0x7c8d('0x4e')](_0x7c8d('0x89'),_0x208b63['uniqueid'],util['inspect'](_0x208b63,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x208b63[_0x7c8d('0x51')]]){var _0x44eba6=_[_0x7c8d('0x7e')](this['queueReports'][_0x208b63[_0x7c8d('0x51')]]);_0x44eba6[_0x7c8d('0x3d')]=!![];_0x44eba6[_0x7c8d('0x57')]=_0x7c8d('0x8a');logger[_0x7c8d('0x78')](_0x7c8d('0x8b'),_0x44eba6[_0x7c8d('0x53')],_0x44eba6[_0x7c8d('0x5c')]);}}}catch(_0x26858c){logger['error'](_0x7c8d('0x89'),_0x208b63['uniqueid'],util[_0x7c8d('0x45')](_0x26858c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x27')]=function(_0x5b7ebf){try{if(this['isNotNull'](_0x5b7ebf)){logger[_0x7c8d('0x4e')](_0x7c8d('0x8c'),_0x5b7ebf['uniqueid'],util[_0x7c8d('0x45')](_0x5b7ebf,{'showHidden':![],'depth':null}));if(this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x51')]]){var _0x129e07=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x51')]]);_0x129e07[_0x7c8d('0x23')]=![];_0x129e07[_0x7c8d('0x8d')]=null;_0x129e07['assigned']=!![];_0x129e07[_0x7c8d('0x8e')]=_0x5b7ebf[_0x7c8d('0x8f')];_0x129e07[_0x7c8d('0x80')]=_0x5b7ebf[_0x7c8d('0x80')];_0x129e07[_0x7c8d('0x3d')]=!![];_0x129e07[_0x7c8d('0x3c')]=![];_0x129e07[_0x7c8d('0x90')]=null;if(!_0x129e07[_0x7c8d('0x91')]){if(_0x5b7ebf[_0x7c8d('0x92')]==_0x7c8d('0x91')){_0x129e07[_0x7c8d('0x57')]=_0x7c8d('0x93');logger[_0x7c8d('0x78')](_0x7c8d('0x94'),_0x129e07[_0x7c8d('0x53')],_0x129e07[_0x7c8d('0x5c')]);}else{if(_[_0x7c8d('0x95')](_0x5b7ebf[_0x7c8d('0x40')][_0x7c8d('0x96')](),_0x7c8d('0x97'))){if(this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x98')]]){var _0x740a35=_[_0x7c8d('0x7e')](this['queueReports'][_0x5b7ebf['linkedid']]);_0x740a35[_0x7c8d('0x3d')]=![];_0x740a35[_0x7c8d('0x3c')]=!![];_0x740a35['queuecallerexitAt']=moment(_0x129e07[_0x7c8d('0x75')])[_0x7c8d('0x99')](_0x5b7ebf[_0x7c8d('0x80')],'seconds')['format'](_0x7c8d('0x85'));_0x740a35['queuecallerexitreason']=_0x7c8d('0x9a');_0x740a35[_0x7c8d('0x91')]=!![];_0x740a35[_0x7c8d('0x9b')]=_0x7c8d('0x9c');_0x740a35[_0x7c8d('0x9d')]=_0x5b7ebf[_0x7c8d('0x9e')];_0x740a35[_0x7c8d('0x9f')]=_0x5b7ebf[_0x7c8d('0x51')];logger['info'](_0x7c8d('0xa0'),_0x740a35[_0x7c8d('0x53')],_0x740a35['type']);var _0x1f1965=this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x98')]];this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x98')]]=this['queueReports'][_0x5b7ebf['uniqueid']];this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x51')]]=_0x1f1965;}}else{_0x129e07[_0x7c8d('0x57')]='COMPLETEDBY'+_0x5b7ebf['reason'][_0x7c8d('0xa1')]();logger[_0x7c8d('0x78')](_0x7c8d('0xa2'),_0x129e07[_0x7c8d('0x53')],_0x129e07[_0x7c8d('0x5c')],_0x129e07[_0x7c8d('0x57')]);}}}this[_0x7c8d('0x15')][_0x5b7ebf[_0x7c8d('0x51')]]=_0x129e07;}}}catch(_0x535840){logger[_0x7c8d('0x44')](_0x7c8d('0x8c'),_0x5b7ebf[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x535840,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')]['syncVarSet']=function(_0x5f4c1a){try{if(this[_0x7c8d('0x6f')](_0x5f4c1a)){logger[_0x7c8d('0x4e')]('[%s][voiceQueueReport][varset]',_0x5f4c1a['uniqueid'],util[_0x7c8d('0x45')](_0x5f4c1a,{'showHidden':![],'depth':null}));this['addVariable'](_0x5f4c1a[_0x7c8d('0x51')],_['keys'](_0x5f4c1a['variable'])[0x0],_0x5f4c1a[_0x7c8d('0xa3')]);if(this[_0x7c8d('0x46')][_0x5f4c1a['uniqueid']]){var _0x10c974=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0x5f4c1a['uniqueid']]);if(_0x10c974){if(this[_0x7c8d('0x6f')](_0x5f4c1a[_0x7c8d('0xa4')])&&this[_0x7c8d('0x6f')](_0x5f4c1a['variable'][_0x7c8d('0x64')])){switch(_0x5f4c1a[_0x7c8d('0xa3')]){case _0x7c8d('0xa5'):_0x10c974[_0x7c8d('0x3c')]=![];_0x10c974[_0x7c8d('0x90')]=null;break;case'TIMEOUT':_0x10c974[_0x7c8d('0xa6')]=_0x7c8d('0xa7');_0x10c974[_0x7c8d('0x3c')]=!![];_0x10c974[_0x7c8d('0x90')]=moment()[_0x7c8d('0x52')]('YYYY-MM-DD\x20HH:mm:ss');_0x10c974[_0x7c8d('0x84')]=moment()[_0x7c8d('0x52')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x7c8d('0x4e')](_0x7c8d('0xa8'),_0x5f4c1a[_0x7c8d('0x51')],util['inspect'](_0x10c974,{'showHidden':![],'depth':null}));ami['emit'](_0x7c8d('0xa9'),_0x10c974);break;default:_0x10c974['queuecallerexit']=!![];_0x10c974[_0x7c8d('0x90')]=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));_0x10c974['queuecallerleaveAt']=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));}_0x10c974[_0x7c8d('0x23')]=![];_0x10c974[_0x7c8d('0x8d')]=null;_0x10c974['queuecallerexitreason']=_0x5f4c1a[_0x7c8d('0xa3')];this[_0x7c8d('0x15')][_0x5f4c1a[_0x7c8d('0x51')]]=_0x10c974;this[_0x7c8d('0x55')](_0x10c974,_0x7c8d('0xaa'));}else if(this[_0x7c8d('0x6f')](_0x5f4c1a[_0x7c8d('0xa4')])&&this[_0x7c8d('0x6f')](_0x5f4c1a[_0x7c8d('0xa4')][_0x7c8d('0xab')])){if(!_0x10c974[_0x7c8d('0x23')]){_0x10c974[_0x7c8d('0x3c')]=!![];_0x10c974['queuecallerexitAt']=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));_0x10c974['queuecallerexitreason']=_0x7c8d('0xac');_0x10c974[_0x7c8d('0x84')]=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));this[_0x7c8d('0x15')][_0x5f4c1a[_0x7c8d('0x51')]]=_0x10c974;}}logger[_0x7c8d('0x78')](_0x7c8d('0xad'),_0x5f4c1a[_0x7c8d('0x51')],_0x10c974['queue'],_0x10c974[_0x7c8d('0x5c')],_[_0x7c8d('0x7c')](_0x5f4c1a[_0x7c8d('0xa4')])[0x0],_0x5f4c1a[_0x7c8d('0xa3')]);_0x10c974[_0x7c8d('0x48')]=this[_0x7c8d('0x48')][_0x5f4c1a['uniqueid']];}}}}catch(_0x17f9ae){logger[_0x7c8d('0x44')]('[%s][voiceQueueReport][varset]',_0x5f4c1a[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x17f9ae,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0xae')]=function(_0x21e628,_0x42087c,_0x464b9c){var _0x2df25c=[_0x7c8d('0xaf'),'rtpaudioqosbridged',_0x7c8d('0xb0'),_0x7c8d('0xb1'),_0x7c8d('0xb2'),_0x7c8d('0xb3'),_0x7c8d('0xb4'),_0x7c8d('0xb5'),_0x7c8d('0xb6'),'sipuri','bridgepeer',_0x7c8d('0xb7'),_0x7c8d('0xb8'),'memberdynamic',_0x7c8d('0xb9'),_0x7c8d('0xba'),_0x7c8d('0x8f'),_0x7c8d('0xbb'),'memberrealtime'];if(!_['isNil'](_0x42087c)&&!_[_0x7c8d('0xbc')](_0x2df25c,_0x42087c)){if(_[_0x7c8d('0x5e')](this[_0x7c8d('0x48')][_0x21e628])){this[_0x7c8d('0x48')][_0x21e628]={};}this[_0x7c8d('0x48')][_0x21e628][_0x42087c]=_0x464b9c;}};VoiceQueueReport[_0x7c8d('0xe')]['handleHangup']=function(_0x1b4ea7,_0x1e8bae,_0x2656d6){try{var _0x522144={};if(this[_0x7c8d('0x46')][_0x1b4ea7]){for(var _0x3c70e6=0x0;_0x3c70e6<this[_0x7c8d('0x46')][_0x1b4ea7]['length'];_0x3c70e6+=0x1){_0x522144=this[_0x7c8d('0x46')][_0x1b4ea7][_0x3c70e6];var _0x5eb32b=this[_0x7c8d('0x17')][_0x522144[_0x7c8d('0x53')]];if(_0x5eb32b){_0x5eb32b[_0x7c8d('0xbd')]+=moment(_0x522144[_0x7c8d('0x84')])[_0x7c8d('0xbe')](_0x522144['queuecallerjoinAt'],_0x7c8d('0xbf'))||0x0;if(_0x2656d6&&_0x522144['queuecallerexitreason']===_0x7c8d('0x58')){_0x522144[_0x7c8d('0x57')]=_0x7c8d('0x8a');}if(_0x3c70e6===this[_0x7c8d('0x46')][_0x1b4ea7]['length']-0x1){_0x5eb32b[_0x7c8d('0xc0')]+=moment()[_0x7c8d('0xc1')](0x0)[_0x7c8d('0xbe')](_0x522144[_0x7c8d('0x75')],_0x7c8d('0xbf'));if(hasCallerLeftTheQueue(_0x522144)&&_0x522144[_0x7c8d('0x57')]!==_0x7c8d('0x58')){_0x5eb32b[_0x7c8d('0xc2')]+=0x1;}if(_0x522144[_0x7c8d('0x3d')]){_0x5eb32b[_0x7c8d('0xc3')]+=0x1;_0x5eb32b[_0x7c8d('0xc4')]+=moment()[_0x7c8d('0xc1')](0x0)[_0x7c8d('0xbe')](_0x522144[_0x7c8d('0x84')],_0x7c8d('0xbf'));_0x522144['queuecallercompleteAt']=moment()['format'](_0x7c8d('0x85'));_0x522144['queuecallerexit']=![];_0x522144[_0x7c8d('0x90')]=null;}if(_0x522144[_0x7c8d('0x3c')]&&_0x522144[_0x7c8d('0x91')]!=!![]){_0x5eb32b[_0x7c8d('0xc5')]+=0x1;_0x522144[_0x7c8d('0xa6')]='unmanaged';logger[_0x7c8d('0x4e')](_0x7c8d('0xc6'),_0x1b4ea7,util['inspect'](_0x522144,{'showHidden':![],'depth':null}));ami[_0x7c8d('0x4c')](_0x7c8d('0xc7'),_0x522144);}if(_0x522144[_0x7c8d('0x23')]){_0x5eb32b[_0x7c8d('0xc8')]+=0x1;_0x522144[_0x7c8d('0xa6')]=_0x7c8d('0xc8');logger[_0x7c8d('0x4e')](_0x7c8d('0xc9'),_0x1b4ea7,util[_0x7c8d('0x45')](_0x522144,{'showHidden':![],'depth':null}));ami['emit'](_0x7c8d('0xca'),_0x522144);}}else{_0x5eb32b[_0x7c8d('0xc0')]+=_0x5eb32b['sumHoldTime'];}logger['info'](_0x7c8d('0xcb'),_0x1b4ea7,_0x522144[_0x7c8d('0x53')],_0x522144[_0x7c8d('0x5c')],_0x1e8bae);this[_0x7c8d('0x15')][_0x1b4ea7]=_0x522144;Object[_0x7c8d('0x7a')](this['voiceQueues'][_0x522144[_0x7c8d('0x53')]],_0x5eb32b);if(_0x522144[_0x7c8d('0x84')]){this[_0x7c8d('0x55')](_0x522144,_0x7c8d('0xcc'));}}}logger[_0x7c8d('0x4e')](_0x7c8d('0xcd'),_0x1b4ea7,util['inspect'](this['queueReports'][_0x1b4ea7],{'showHidden':![],'depth':null}));if(hasCallerLeftTheQueue(_0x522144)&&_0x522144[_0x7c8d('0x57')]!==_0x7c8d('0x58')){ami[_0x7c8d('0x4c')](_0x7c8d('0xce'),this[_0x7c8d('0x46')][_0x1b4ea7]);if(this[_0x7c8d('0x46')][_0x1b4ea7]){delete this[_0x7c8d('0x46')][_0x1b4ea7];}if(this[_0x7c8d('0x15')][_0x1b4ea7]){delete this[_0x7c8d('0x15')][_0x1b4ea7];}if(this['variables'][_0x1b4ea7]){delete this['variables'][_0x1b4ea7];}}}}catch(_0x10a8dd){logger[_0x7c8d('0x44')](_0x7c8d('0xcf'),_0x1b4ea7,util[_0x7c8d('0x45')](_0x10a8dd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')]['syncHangup']=function(_0x2e5a7d){try{if(this[_0x7c8d('0x6f')](_0x2e5a7d)){logger['debug'](_0x7c8d('0xd0'),_0x2e5a7d[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x2e5a7d,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2e5a7d[_0x7c8d('0x51')]]){return this[_0x7c8d('0xd1')](_0x2e5a7d[_0x7c8d('0x51')],_0x2e5a7d[_0x7c8d('0xd2')],![]);}if(this[_0x7c8d('0x46')][_0x2e5a7d['linkedid']]){if(_0x2e5a7d[_0x7c8d('0xd3')]==='21'){return;}return this[_0x7c8d('0xd1')](_0x2e5a7d['linkedid'],_0x2e5a7d['cause-txt'],!![]);}var _0x2528fd=Object[_0x7c8d('0x7c')](this[_0x7c8d('0x46')]);for(var _0x4c903c=0x0;_0x4c903c<_0x2528fd[_0x7c8d('0xd4')];_0x4c903c++){var _0x1dcee0=_['last'](this[_0x7c8d('0x46')][_0x2528fd[_0x4c903c]]);if(_0x1dcee0&&_0x1dcee0[_0x7c8d('0xd5')]===_0x2e5a7d[_0x7c8d('0x51')]){return this[_0x7c8d('0xd1')](_0x1dcee0[_0x7c8d('0x51')],_0x2e5a7d[_0x7c8d('0xd2')],!![]);}}if(!this[_0x7c8d('0x46')][_0x2e5a7d[_0x7c8d('0x51')]]){logger['debug']('[%s][voiceQueueReport][syncHangup]\x20No\x20available\x20data\x20in\x20queueReports\x20structure:\x20clear\x20action\x20in\x20variablea\x20and\x20channels\x20structures\x20needed',_0x2e5a7d[_0x7c8d('0x51')]);if(this[_0x7c8d('0x15')][_0x2e5a7d['uniqueid']]){delete this[_0x7c8d('0x15')][_0x2e5a7d['uniqueid']];}if(this[_0x7c8d('0x48')][_0x2e5a7d[_0x7c8d('0x51')]]){delete this[_0x7c8d('0x48')][_0x2e5a7d['uniqueid']];}}}}catch(_0x3ca796){logger[_0x7c8d('0x44')](_0x7c8d('0xd0'),_0x2e5a7d[_0x7c8d('0x51')],util['inspect'](_0x3ca796,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x30')]=function(_0xb54034){try{if(this['isNotNull'](_0xb54034)){logger['debug'](_0x7c8d('0xd6'),_0xb54034[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0xb54034,{'showHidden':![],'depth':null}));var _0xa532d5;var _0x3a96c5;var _0x2b858e;if(this[_0x7c8d('0x46')][_0xb54034['transfereeuniqueid']]){_0xa532d5=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0xb54034['transfereeuniqueid']]);_0xa532d5[_0x7c8d('0x9d')]=_0xb54034[_0x7c8d('0xd7')];_0xa532d5[_0x7c8d('0x9f')]=_0xb54034[_0x7c8d('0xd8')];_0xa532d5['queuecallerexitreason']='ATTENDEDTRANSFER';_0xa532d5[_0x7c8d('0x91')]=!![];_0xa532d5[_0x7c8d('0x9b')]=_0x7c8d('0xd9');if(this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xd8')]]){_0x2b858e=this['queueReports'][_0xb54034['secondtransfereruniqueid']];this['queueReports'][_0xb54034[_0x7c8d('0xd8')]]=this['queueReports'][_0xb54034['transfereeuniqueid']];this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xda')]]=_0x2b858e;_0x3a96c5=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0xb54034['transfereeuniqueid']]);_0x3a96c5[_0x7c8d('0xdb')]=!![];}logger['info'](_0x7c8d('0xdc'),_0xb54034[_0x7c8d('0x51')],_0xa532d5[_0x7c8d('0x53')],_0xa532d5['type'],_0xa532d5[_0x7c8d('0x9d')],_0xa532d5[_0x7c8d('0x9f')]);}else if(this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdd')]]){_0xa532d5=_[_0x7c8d('0x7e')](this['queueReports'][_0xb54034[_0x7c8d('0xdd')]]);_0xa532d5['transferexten']=_0xb54034[_0x7c8d('0xde')];_0xa532d5[_0x7c8d('0x9f')]=_0xb54034[_0x7c8d('0xdf')];_0xa532d5[_0x7c8d('0x57')]='ATTENDEDTRANSFER';_0xa532d5[_0x7c8d('0x91')]=!![];_0xa532d5['transfertype']=_0x7c8d('0xd9');if(this['queueReports'][_0xb54034[_0x7c8d('0xdf')]]){_0x2b858e=this['queueReports'][_0xb54034['origtransfereruniqueid']];this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdf')]]=this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdd')]];this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdd')]]=_0x2b858e;_0x3a96c5=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdd')]]);_0x3a96c5[_0x7c8d('0xdb')]=!![];}logger['info'](_0x7c8d('0xdc'),_0xb54034['uniqueid'],_0xa532d5[_0x7c8d('0x53')],_0xa532d5['type'],_0xa532d5['transferexten'],_0xa532d5[_0x7c8d('0x9f')]);}else if(this[_0x7c8d('0x46')][_0xb54034['origtransfereruniqueid']]){_0xa532d5=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdf')]]);_0xa532d5[_0x7c8d('0x9d')]=_0xb54034[_0x7c8d('0xde')];_0xa532d5[_0x7c8d('0x9f')]=_0xb54034['origtransfereruniqueid'];_0xa532d5['queuecallerexitreason']=_0x7c8d('0x58');_0xa532d5[_0x7c8d('0x91')]=!![];_0xa532d5['transfertype']=_0x7c8d('0xd9');_0xa532d5['switch']=!![];_0xa532d5[_0x7c8d('0xd5')]=_0xb54034[_0x7c8d('0xda')];}else if(this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xd8')]]){_0xa532d5=_['last'](this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xd8')]]);_0xa532d5[_0x7c8d('0x9d')]=_0xb54034[_0x7c8d('0xd7')];_0xa532d5[_0x7c8d('0x9f')]=_0xb54034[_0x7c8d('0xd8')];_0xa532d5[_0x7c8d('0x57')]=_0x7c8d('0x58');_0xa532d5[_0x7c8d('0x91')]=!![];_0xa532d5[_0x7c8d('0x9b')]=_0x7c8d('0xd9');_0xa532d5[_0x7c8d('0xdb')]=!![];_0xa532d5[_0x7c8d('0xd5')]=_0xb54034['transfertargetuniqueid'];}}}catch(_0x14ad3c){logger[_0x7c8d('0x44')](_0x7c8d('0xd6'),_0xb54034[_0x7c8d('0x51')],util['inspect'](_0x14ad3c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x31')]=function(_0xadbf76){try{if(this[_0x7c8d('0x6f')](_0xadbf76)){logger[_0x7c8d('0x4e')](_0x7c8d('0xe0'),_0xadbf76['uniqueid'],util[_0x7c8d('0x45')](_0xadbf76,{'showHidden':![],'depth':null}));if(this[_0x7c8d('0x46')][_0xadbf76['transfereeuniqueid']]){var _0x56522f=_['last'](this['queueReports'][_0xadbf76['transfereeuniqueid']]);_0x56522f[_0x7c8d('0x57')]=_0x7c8d('0xe1');_0x56522f[_0x7c8d('0x91')]=!![];_0x56522f[_0x7c8d('0x9b')]='BLIND';_0x56522f[_0x7c8d('0x9d')]=_0xadbf76['extension'];_0x56522f[_0x7c8d('0x9f')]=_0xadbf76[_0x7c8d('0xda')];logger[_0x7c8d('0x78')](_0x7c8d('0xe2'),_0xadbf76['uniqueid'],_0x56522f[_0x7c8d('0x53')],_0x56522f[_0x7c8d('0x5c')],_0x56522f[_0x7c8d('0x9d')],_0x56522f[_0x7c8d('0x9f')]);this[_0x7c8d('0x2a')]({'event':_0x7c8d('0xe3'),'uniqueid':_0xadbf76[_0x7c8d('0xda')],'context':_0xadbf76[_0x7c8d('0xe4')],'channel':_0xadbf76[_0x7c8d('0xe5')]});}}}catch(_0x65aac9){logger[_0x7c8d('0x44')]('[%s][voiceQueueReport][blindtransfer]',_0xadbf76[_0x7c8d('0x51')],util['inspect'](_0x65aac9,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x7c8d('0xe6')]=function(_0x1abdd9){try{if(this[_0x7c8d('0x6f')](_0x1abdd9)){logger[_0x7c8d('0x4e')]('[%s][voiceQueueReport][musiconholdstart]',_0x1abdd9[_0x7c8d('0x51')],util['inspect'](_0x1abdd9,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x1abdd9[_0x7c8d('0x51')]]){var _0x51f671=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0x1abdd9[_0x7c8d('0x51')]]);if(!_['isNil'](_0x51f671[_0x7c8d('0x84')])){_0x51f671['mohstarttime']=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));logger[_0x7c8d('0x78')](_0x7c8d('0xe7'),_0x1abdd9[_0x7c8d('0x51')],_0x51f671[_0x7c8d('0xe8')]);}}}}catch(_0x467a6e){logger[_0x7c8d('0x44')](_0x7c8d('0xe9'),_0x1abdd9['uniqueid'],util['inspect'](_0x467a6e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x2f')]=function(_0x14aa02){try{if(this[_0x7c8d('0x6f')](_0x14aa02)){logger['debug'](_0x7c8d('0xea'),_0x14aa02[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x14aa02,{'showHidden':![],'depth':null}));if(this[_0x7c8d('0x46')][_0x14aa02[_0x7c8d('0x51')]]){var _0x27f019=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0x14aa02['uniqueid']]);if(!_[_0x7c8d('0x3f')](_0x27f019[_0x7c8d('0xe8')])){_0x27f019[_0x7c8d('0xeb')]+=moment()['milliseconds'](0x0)[_0x7c8d('0xbe')](_0x27f019[_0x7c8d('0xe8')],_0x7c8d('0xbf'));logger[_0x7c8d('0x78')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x14aa02[_0x7c8d('0x51')],_0x27f019[_0x7c8d('0xeb')]);delete _0x27f019['mohstarttime'];}}}}catch(_0x4708f1){logger[_0x7c8d('0x44')](_0x7c8d('0xea'),_0x14aa02['uniqueid'],util[_0x7c8d('0x45')](_0x4708f1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0xec')]=function(_0x1aeb0d){try{if(this[_0x7c8d('0x6f')](_0x1aeb0d)){logger['debug'](_0x7c8d('0xed'),_0x1aeb0d[_0x7c8d('0x51')],util['inspect'](_0x1aeb0d,{'showHidden':![],'depth':null}));if(_0x1aeb0d[_0x7c8d('0xee')]['toLowerCase']()==='set'){_0x1aeb0d[_0x7c8d('0xef')]=_0x1aeb0d[_0x7c8d('0xf0')]&&_0x1aeb0d[_0x7c8d('0xf0')]['startsWith']('CDR(routeAlias)')?_0x1aeb0d[_0x7c8d('0xf0')]:(_0x1aeb0d['appdata']||_0x1aeb0d[_0x7c8d('0xef')])[_0x7c8d('0x96')]();if(_[_0x7c8d('0x95')](_0x1aeb0d[_0x7c8d('0xef')][_0x7c8d('0x96')](),_0x7c8d('0xf1'))){logger[_0x7c8d('0x78')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x1aeb0d['uniqueid'],_0x1aeb0d[_0x7c8d('0xee')],_0x1aeb0d[_0x7c8d('0xef')]);if(_[_0x7c8d('0x5e')](this[_0x7c8d('0x15')][_0x1aeb0d[_0x7c8d('0x51')]]))this[_0x7c8d('0x15')][_0x1aeb0d[_0x7c8d('0x51')]]={};var _0x528fee=_0x1aeb0d[_0x7c8d('0xef')]['split']('=');var _0xe53a79=_0x528fee[0x0][_0x7c8d('0x96')]()['match'](/cdr\((.*)\)/);if(_0xe53a79)this['channels'][_0x1aeb0d[_0x7c8d('0x51')]][_0xe53a79[0x1]]=_0x528fee[0x1];}}}}catch(_0x1ac49c){logger[_0x7c8d('0x44')](_0x7c8d('0xf2'),_0x1aeb0d['uniqueid'],util[_0x7c8d('0x45')](_0x1ac49c,{'showHidden':![],'depth':null}));}};module[_0x7c8d('0xf3')]=VoiceQueueReport;
\ No newline at end of file
index f5117e4..9fe5da7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dc0=['Request','CreateReportAgentPreview','createHistory','campaign','queue'];(function(_0x38c3ec,_0x524fbb){var _0x173b52=function(_0x4417dd){while(--_0x4417dd){_0x38c3ec['push'](_0x38c3ec['shift']());}};_0x173b52(++_0x524fbb);}(_0x9dc0,0x1ba));var _0x09dc=function(_0x10316a,_0x125dc8){_0x10316a=_0x10316a-0x0;var _0x36ac2e=_0x9dc0[_0x10316a];return _0x36ac2e;};'use strict';var client=require('../client');exports[_0x09dc('0x0')]=function(_0x11c2fd){return function(){_0x11c2fd[_0x09dc('0x1')]=_0x11c2fd[_0x09dc('0x2')];return client[_0x09dc('0x3')](_0x09dc('0x4'),{'body':_0x11c2fd,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
+var _0x59a4=['Request','CreateReportAgentPreview','../client','createHistory','campaign','queue'];(function(_0x2e8889,_0xcd72f9){var _0x19dae6=function(_0x4a7100){while(--_0x4a7100){_0x2e8889['push'](_0x2e8889['shift']());}};_0x19dae6(++_0xcd72f9);}(_0x59a4,0x1e8));var _0x459a=function(_0x2e58c7,_0x23d092){_0x2e58c7=_0x2e58c7-0x0;var _0x26eb00=_0x59a4[_0x2e58c7];return _0x26eb00;};'use strict';var client=require(_0x459a('0x0'));exports[_0x459a('0x1')]=function(_0x306e6a){return function(){_0x306e6a[_0x459a('0x2')]=_0x306e6a[_0x459a('0x3')];return client[_0x459a('0x4')](_0x459a('0x5'),{'body':_0x306e6a,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index fecd27c..7962bbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3a2=['CreateAttachment','create'];(function(_0xc56c3,_0x3f6ba2){var _0x6fabbb=function(_0x376c96){while(--_0x376c96){_0xc56c3['push'](_0xc56c3['shift']());}};_0x6fabbb(++_0x3f6ba2);}(_0xb3a2,0x77));var _0x2b3a=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xb3a2[_0x53ccf2];return _0x5a2964;};'use strict';var client=require('../client');exports[_0x2b3a('0x0')]=function(_0x2f09b0){return client['Request'](_0x2b3a('0x1'),{'body':_0x2f09b0,'log':_0x2b3a('0x1')});};
\ No newline at end of file
+var _0xa150=['../client','Request','CreateAttachment'];(function(_0xd2e2ab,_0x2440cf){var _0x1703a2=function(_0x23deba){while(--_0x23deba){_0xd2e2ab['push'](_0xd2e2ab['shift']());}};_0x1703a2(++_0x2440cf);}(_0xa150,0x1ad));var _0x0a15=function(_0x47f6e2,_0x3de9e7){_0x47f6e2=_0x47f6e2-0x0;var _0x42be8e=_0xa150[_0x47f6e2];return _0x42be8e;};'use strict';var client=require(_0x0a15('0x0'));exports['create']=function(_0x5bfc63){return client[_0x0a15('0x1')](_0x0a15('0x2'),{'body':_0x5bfc63,'log':_0x0a15('0x2')});};
\ No newline at end of file
index f1e981f..cd5693e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumWordLength','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','active','TrunkBackup','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry'];(function(_0x3fd3a3,_0x36c863){var _0xa3e4d5=function(_0x1fd03b){while(--_0x1fd03b){_0x3fd3a3['push'](_0x3fd3a3['shift']());}};_0xa3e4d5(++_0x36c863);}(_0x2ef3,0xba));var _0x32ef=function(_0x58335c,_0x4566f7){_0x58335c=_0x58335c-0x0;var _0x4b43eb=_0x2ef3[_0x58335c];return _0x4b43eb;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(){return function(){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'options':{'raw':![],'attributes':['id',_0x32ef('0x4'),_0x32ef('0x5'),'active',_0x32ef('0x6'),_0x32ef('0x7'),'dialOriginateCallerIdNumber',_0x32ef('0x8'),_0x32ef('0x9'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'dialMachineMaxRetry','dialMachineRetryFrequency',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'dialAMDActive',_0x32ef('0x18'),'dialAMDGreeting',_0x32ef('0x19'),'dialAMDTotalAnalysisTime',_0x32ef('0x1a'),_0x32ef('0x1b'),'dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold',_0x32ef('0x1c'),'dialOrderByScheduledAt',_0x32ef('0x1d'),_0x32ef('0x1e'),_0x32ef('0x1f')],'include':[{'model':_0x32ef('0x20'),'as':'Trunk','attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x20'),'as':_0x32ef('0x22'),'attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x23'),'as':_0x32ef('0x23'),'attributes':['id','name'],'include':[{'model':_0x32ef('0x23'),'as':_0x32ef('0x24'),'attributes':['id','name',_0x32ef('0x25')]}]},{'model':_0x32ef('0x26'),'as':_0x32ef('0x26'),'attributes':['id',_0x32ef('0x4')]}]},'log':_0x32ef('0x27')});};};
\ No newline at end of file
+var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0xf52513,_0x28c4ce){var _0x2ba7a9=function(_0x543e06){while(--_0x543e06){_0xf52513['push'](_0xf52513['shift']());}};_0x2ba7a9(++_0x28c4ce);}(_0x1261,0x144));var _0x1126=function(_0x208bc9,_0x4f36f6){_0x208bc9=_0x208bc9-0x0;var _0x2675a8=_0x1261[_0x208bc9];return _0x2675a8;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
index 0a23b78..b102925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e83=['../client','createContact','Request','CreateCmContact','getContacts','GetCmContact'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x6e83,0x7e));var _0x36e8=function(_0x29a40a,_0x234214){_0x29a40a=_0x29a40a-0x0;var _0x6182e9=_0x6e83[_0x29a40a];return _0x6182e9;};'use strict';var client=require(_0x36e8('0x0'));exports[_0x36e8('0x1')]=function(_0x2a0b5a){return function(){return client[_0x36e8('0x2')](_0x36e8('0x3'),{'body':_0x2a0b5a,'log':_0x36e8('0x3')});};};exports[_0x36e8('0x4')]=function(_0x24087d){return function(){return client[_0x36e8('0x2')](_0x36e8('0x5'),{'options':_0x24087d,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0x140a=['getContacts','createContact','Request','CreateCmContact'];(function(_0x566ac0,_0x567cb3){var _0x1998b5=function(_0x836dac){while(--_0x836dac){_0x566ac0['push'](_0x566ac0['shift']());}};_0x1998b5(++_0x567cb3);}(_0x140a,0xa1));var _0xa140=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x140a[_0x6cf19c];return _0xce14f3;};'use strict';var client=require('../client');exports[_0xa140('0x0')]=function(_0x11e077){return function(){return client[_0xa140('0x1')](_0xa140('0x2'),{'body':_0x11e077,'log':_0xa140('0x2')});};};exports[_0xa140('0x3')]=function(_0x3749d0){return function(){return client[_0xa140('0x1')]('GetCmContact',{'options':_0x3749d0,'log':'GetCmContact'});};};
\ No newline at end of file
index 3de113a..134136d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x815b=['name','Queue','getContactRecallMe','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','getContacts','GetCmHopper','getCmHopper','updateContacts','Request','format','rescheduleContact','UpdateCmHopper','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','priority','DESC','scheduledat','ASC','getContactDialerIvr','CmContact','Contact','GetContactDialerIvr','campaign','queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent'];(function(_0x1597e2,_0x388d3e){var _0x4c8c0a=function(_0x3d4795){while(--_0x3d4795){_0x1597e2['push'](_0x1597e2['shift']());}};_0x4c8c0a(++_0x388d3e);}(_0x815b,0xb4));var _0xb815=function(_0x40ea7f,_0x67d16){_0x40ea7f=_0x40ea7f-0x0;var _0x119fee=_0x815b[_0x40ea7f];return _0x119fee;};'use strict';var client=require(_0xb815('0x0'));var moment=require(_0xb815('0x1'));exports[_0xb815('0x2')]=function(_0x43d273,_0x6314c){return function(){return client['Request'](_0xb815('0x3'),{'options':{'where':{'VoiceQueueId':_0x43d273},'include':[{'model':'CmContact','as':'Contact'}],'limit':_0x6314c,'raw':![]},'log':_0xb815('0x4')});};};exports[_0xb815('0x5')]=function(_0x93c8e8,_0x5a5c18,_0x466899){return function(){return client[_0xb815('0x6')]('UpdateCmHopper',{'body':_0x93c8e8,'options':{'where':{'VoiceQueueId':_0x5a5c18,'scheduledat':{'$lte':moment()[_0xb815('0x7')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x466899},'log':'UpdateCmHopper'});};};exports[_0xb815('0x8')]=function(_0x26d239){return client[_0xb815('0x6')](_0xb815('0x9'),{'body':_0x26d239,'options':{'where':{'ContactId':_0x26d239[_0xb815('0xa')],'ListId':_0x26d239[_0xb815('0xb')],'VoiceQueueId':_0x26d239[_0xb815('0xc')],'CampaignId':_0x26d239[_0xb815('0xd')]}},'log':'rescheduleContact'});};exports[_0xb815('0xe')]=function(_0x11abab,_0x22ed07,_0x3c9ebe){return function(){return client[_0xb815('0x6')](_0xb815('0xf'),{'options':{'where':{'VoiceQueueId':_0x11abab,'ListId':_0x22ed07,'ContactId':_0x3c9ebe}},'log':_0xb815('0xf')});};};exports['getContactDialer']=function(_0x5f360b,_0x471ccc,_0x81bd04,_0x13a09e){return client[_0xb815('0x6')](_0xb815('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5f360b,'active':![],'scheduledat':{'$lte':moment()[_0xb815('0x7')](_0xb815('0x11'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x471ccc}}]},'order':[[_0xb815('0x12'),_0xb815('0x13')],[_0xb815('0x14'),_0x13a09e],['id',_0xb815('0x15')]],'raw':!![],'limit':_0x81bd04},'log':_0xb815('0x10')});};exports[_0xb815('0x16')]=function(_0x52d8dd,_0x4bb666,_0x41445e){return client[_0xb815('0x6')](_0xb815('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x52d8dd,'active':![],'scheduledat':{'$lte':moment()[_0xb815('0x7')](_0xb815('0x11'))}},'include':[{'model':_0xb815('0x17'),'as':_0xb815('0x18')}],'order':[[_0xb815('0x12'),_0xb815('0x13')],['scheduledat',_0x41445e],['id','ASC']],'raw':!![],'limit':_0x4bb666},'log':_0xb815('0x19')});};exports['moveContactManagedDialer']=function(_0x261b8d,_0x1ebe78){_0x261b8d[_0xb815('0x1a')]=_0x261b8d[_0xb815('0x1b')];return client['Request'](_0xb815('0x1c'),{'body':_0x261b8d,'options':{'where':{'ContactId':_0x261b8d[_0xb815('0xa')],'ListId':_0x261b8d['ListId'],'VoiceQueueId':_0x261b8d[_0xb815('0xc')],'CampaignId':_0x261b8d[_0xb815('0xd')],'active':_0x1ebe78?undefined:!![]}},'log':_0xb815('0x1c')});};exports[_0xb815('0x1d')]=function(_0x2ecffe){return client[_0xb815('0x6')](_0xb815('0x1e'),{'options':{'where':{'VoiceQueueId':_0x2ecffe['id']?_0x2ecffe['id']||null:null}},'log':_0xb815('0x1d')});};exports[_0xb815('0x1f')]=function(_0x160f67){return function(){return client[_0xb815('0x6')](_0xb815('0x20'),{'options':{'where':{'id':_0x160f67},'include':[{'model':'CmContact','as':_0xb815('0x18')},{'model':_0xb815('0x21'),'as':_0xb815('0x22'),'attributes':['id',_0xb815('0x23')]},{'model':'VoiceQueue','as':_0xb815('0x24'),'attributes':['id',_0xb815('0x23')]}],'raw':!![]},'log':_0xb815('0x4')});};};exports['unlockContact']=function(_0x1bb3dc,_0x1e5beb,_0x3c6f50){return client[_0xb815('0x6')](_0xb815('0x9'),{'body':_0x1bb3dc,'options':{'where':{'id':_0x1e5beb},'limit':_0x3c6f50},'log':_0xb815('0x9')});};exports[_0xb815('0x25')]=function(_0xd22488,_0x46c545){return function(){return client['Request']('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xd22488,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0xb815('0x11'))},'UserId':{'$in':_0x46c545}},'order':[[_0xb815('0x12'),'DESC'],[_0xb815('0x14'),_0xb815('0x13')],['id',_0xb815('0x15')]],'include':[{'model':_0xb815('0x17'),'as':'Contact'},{'model':_0xb815('0x21'),'as':_0xb815('0x22'),'attributes':['id','name','voicePause']}],'group':_0xb815('0x26'),'raw':!![]},'log':'GetContactDialer'});};};exports[_0xb815('0x27')]=function(_0x5f12d0,_0x6573cd){return client['Request'](_0xb815('0x28'),{'body':_0x5f12d0,'options':_0x6573cd||{},'log':_0xb815('0x28')});};exports[_0xb815('0x29')]=function(_0x4dfea6,_0x2064bd,_0x36c081){return function(){return client['Request'](_0xb815('0x2a'),{'body':{'where':{'voiceQueueIds':_0x4dfea6,'interval':_0x2064bd,'availableAgentsIds':_0x36c081}},'log':_0xb815('0x29')});};};
\ No newline at end of file
+var _0xe55d=['UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','priority','scheduledat','ASC','GetContactDialer','getContactDialerIvr','DESC','GetContactDialerIvr','campaign','ContactId','ListId','MoveContactManagedDialer','countReScheduled','CountReScheduled','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','getCmHopper','unlockContact','getContactRecallMe','voicePause','db.CmHopper.UserId','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','Request','GetCmHopper','CmContact','Contact','updateContacts'];(function(_0x3f6825,_0xa348c8){var _0x324b3c=function(_0x3c77a1){while(--_0x3c77a1){_0x3f6825['push'](_0x3f6825['shift']());}};_0x324b3c(++_0xa348c8);}(_0xe55d,0x126));var _0xde55=function(_0x25b4e4,_0x5da42a){_0x25b4e4=_0x25b4e4-0x0;var _0x18df1a=_0xe55d[_0x25b4e4];return _0x18df1a;};'use strict';var client=require(_0xde55('0x0'));var moment=require(_0xde55('0x1'));exports['getContacts']=function(_0x2feb9d,_0x144148){return function(){return client[_0xde55('0x2')](_0xde55('0x3'),{'options':{'where':{'VoiceQueueId':_0x2feb9d},'include':[{'model':_0xde55('0x4'),'as':_0xde55('0x5')}],'limit':_0x144148,'raw':![]},'log':'getCmHopper'});};};exports[_0xde55('0x6')]=function(_0x295f54,_0x3b2c0a,_0x55d5fa){return function(){return client[_0xde55('0x2')](_0xde55('0x7'),{'body':_0x295f54,'options':{'where':{'VoiceQueueId':_0x3b2c0a,'scheduledat':{'$lte':moment()[_0xde55('0x8')](_0xde55('0x9'))}},'limit':_0x55d5fa},'log':_0xde55('0x7')});};};exports[_0xde55('0xa')]=function(_0x51f649){return client[_0xde55('0x2')](_0xde55('0x7'),{'body':_0x51f649,'options':{'where':{'ContactId':_0x51f649['ContactId'],'ListId':_0x51f649['ListId'],'VoiceQueueId':_0x51f649[_0xde55('0xb')],'CampaignId':_0x51f649[_0xde55('0xc')]}},'log':'rescheduleContact'});};exports[_0xde55('0xd')]=function(_0x23edbf,_0x49e5ae,_0x31c776){return function(){return client[_0xde55('0x2')](_0xde55('0xe'),{'options':{'where':{'VoiceQueueId':_0x23edbf,'ListId':_0x49e5ae,'ContactId':_0x31c776}},'log':'DestroyCmHopper'});};};exports[_0xde55('0xf')]=function(_0x1f756a,_0xe667a3,_0x3d3584,_0x81ea0f){return client[_0xde55('0x2')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x1f756a,'active':![],'scheduledat':{'$lte':moment()['format'](_0xde55('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0xe667a3}}]},'order':[[_0xde55('0x10'),'DESC'],[_0xde55('0x11'),_0x81ea0f],['id',_0xde55('0x12')]],'raw':!![],'limit':_0x3d3584},'log':_0xde55('0x13')});};exports[_0xde55('0x14')]=function(_0x2f4a77,_0x8bd0c8,_0x2411a4){return client[_0xde55('0x2')](_0xde55('0x13'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x2f4a77,'active':![],'scheduledat':{'$lte':moment()[_0xde55('0x8')](_0xde55('0x9'))}},'include':[{'model':_0xde55('0x4'),'as':_0xde55('0x5')}],'order':[['priority',_0xde55('0x15')],['scheduledat',_0x2411a4],['id',_0xde55('0x12')]],'raw':!![],'limit':_0x8bd0c8},'log':_0xde55('0x16')});};exports['moveContactManagedDialer']=function(_0x2dc9b9,_0x5c2991){_0x2dc9b9[_0xde55('0x17')]=_0x2dc9b9['queue'];return client[_0xde55('0x2')]('MoveContactManagedDialer',{'body':_0x2dc9b9,'options':{'where':{'ContactId':_0x2dc9b9[_0xde55('0x18')],'ListId':_0x2dc9b9[_0xde55('0x19')],'VoiceQueueId':_0x2dc9b9[_0xde55('0xb')],'CampaignId':_0x2dc9b9[_0xde55('0xc')],'active':_0x5c2991?undefined:!![]}},'log':_0xde55('0x1a')});};exports[_0xde55('0x1b')]=function(_0xbafeab){return client[_0xde55('0x2')](_0xde55('0x1c'),{'options':{'where':{'VoiceQueueId':_0xbafeab['id']?_0xbafeab['id']||null:null}},'log':'countReScheduled'});};exports['getContactPreview']=function(_0x409881){return function(){return client[_0xde55('0x2')](_0xde55('0x1d'),{'options':{'where':{'id':_0x409881},'include':[{'model':_0xde55('0x4'),'as':_0xde55('0x5')},{'model':_0xde55('0x1e'),'as':_0xde55('0x1f'),'attributes':['id',_0xde55('0x20')]},{'model':_0xde55('0x21'),'as':_0xde55('0x22'),'attributes':['id',_0xde55('0x20')]}],'raw':!![]},'log':_0xde55('0x23')});};};exports[_0xde55('0x24')]=function(_0x494f10,_0x498706,_0x2073c1){return client['Request'](_0xde55('0x7'),{'body':_0x494f10,'options':{'where':{'id':_0x498706},'limit':_0x2073c1},'log':_0xde55('0x7')});};exports[_0xde55('0x25')]=function(_0x5592e7,_0x408165){return function(){return client[_0xde55('0x2')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5592e7,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xde55('0x8')](_0xde55('0x9'))},'UserId':{'$in':_0x408165}},'order':[[_0xde55('0x10'),'DESC'],['scheduledat',_0xde55('0x15')],['id',_0xde55('0x12')]],'include':[{'model':_0xde55('0x4'),'as':_0xde55('0x5')},{'model':_0xde55('0x1e'),'as':_0xde55('0x1f'),'attributes':['id','name',_0xde55('0x26')]}],'group':_0xde55('0x27'),'raw':!![]},'log':_0xde55('0x13')});};};exports['resetActiveCalls']=function(_0x3ee702,_0xc52bbf){return client[_0xde55('0x2')](_0xde55('0x28'),{'body':_0x3ee702,'options':_0xc52bbf||{},'log':_0xde55('0x28')});};exports[_0xde55('0x29')]=function(_0x23e499,_0x58bac3,_0x43c8eb){return function(){return client[_0xde55('0x2')](_0xde55('0x2a'),{'body':{'where':{'voiceQueueIds':_0x23e499,'interval':_0x58bac3,'availableAgentsIds':_0x43c8eb}},'log':'handlePreviewRecallNotifications'});};};
\ No newline at end of file
index 4c0bff5..9cc47ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ae6=['verifyAdditionalPhones','VerifyAdditionalPhones','swapAdditionalPhones','Request','SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client'];(function(_0x2c03e1,_0x2be967){var _0x8efbc5=function(_0x32106b){while(--_0x32106b){_0x2c03e1['push'](_0x2c03e1['shift']());}};_0x8efbc5(++_0x2be967);}(_0x4ae6,0x1ef));var _0x64ae=function(_0x5dca14,_0x28d39a){_0x5dca14=_0x5dca14-0x0;var _0x42894b=_0x4ae6[_0x5dca14];return _0x42894b;};'use strict';var client=require(_0x64ae('0x0'));exports[_0x64ae('0x1')]=function(_0x280682,_0x1ebdb9,_0x5ed62f){return client['Request'](_0x64ae('0x2'),{'body':_0x280682,'reason':_0x1ebdb9,'entity':_0x5ed62f,'log':_0x64ae('0x2')});};exports[_0x64ae('0x3')]=function(_0x13c805,_0x3ccc02,_0x188928){return client[_0x64ae('0x4')](_0x64ae('0x5'),{'body':_0x13c805,'duration':_0x3ccc02,'waitTime':_0x188928,'log':_0x64ae('0x5')});};exports[_0x64ae('0x6')]=function(_0x5711f7){return function(){return client['Request'](_0x64ae('0x7'),{'body':_0x5711f7,'log':_0x64ae('0x7')});};};
\ No newline at end of file
+var _0x4d28=['SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4d28,0x1c3));var _0x84d2=function(_0x564dff,_0x32bdc5){_0x564dff=_0x564dff-0x0;var _0x283988=_0x4d28[_0x564dff];return _0x283988;};'use strict';var client=require(_0x84d2('0x0'));exports[_0x84d2('0x1')]=function(_0x8e863b,_0xf3c076,_0x414283){return client[_0x84d2('0x2')](_0x84d2('0x3'),{'body':_0x8e863b,'reason':_0xf3c076,'entity':_0x414283,'log':_0x84d2('0x3')});};exports[_0x84d2('0x4')]=function(_0x46f58f,_0x50a3f4,_0x339fac){return client[_0x84d2('0x2')]('SwapAdditionalPhones',{'body':_0x46f58f,'duration':_0x50a3f4,'waitTime':_0x339fac,'log':_0x84d2('0x5')});};exports[_0x84d2('0x6')]=function(_0x20985d){return function(){return client[_0x84d2('0x2')](_0x84d2('0x7'),{'body':_0x20985d,'log':'IncrementPreviewCounters'});};};
\ No newline at end of file
index 0cf0869..e0a30df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dd8=['Request','GetCmHopperBlack','phone','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList'];(function(_0xf88eff,_0x4e8b57){var _0x16ab7a=function(_0x324d45){while(--_0x324d45){_0xf88eff['push'](_0xf88eff['shift']());}};_0x16ab7a(++_0x4e8b57);}(_0x7dd8,0x1b0));var _0x87dd=function(_0x187399,_0x40c56d){_0x187399=_0x187399-0x0;var _0x40fa92=_0x7dd8[_0x187399];return _0x40fa92;};'use strict';var client=require(_0x87dd('0x0'));exports[_0x87dd('0x1')]=function(_0x57bb57){return client[_0x87dd('0x2')](_0x87dd('0x3'),{'options':{'where':{'VoiceQueueId':_0x57bb57['VoiceQueueId'],'phone':_0x57bb57[_0x87dd('0x4')]},'raw':![]},'log':_0x87dd('0x3')});};exports['checkIsBlackListIvr']=function(_0x1f0e6d){return client[_0x87dd('0x2')](_0x87dd('0x3'),{'options':{'where':{'CampaignId':_0x1f0e6d[_0x87dd('0x5')],'phone':_0x1f0e6d['phone']},'raw':![]},'log':_0x87dd('0x6')});};
\ No newline at end of file
+var _0xced9=['GetCmHopperBlack','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','phone','checkIsBlackListIvr'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xced9,0x6b));var _0x9ced=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xced9[_0x4baae2];return _0x1a2285;};'use strict';var client=require(_0x9ced('0x0'));exports[_0x9ced('0x1')]=function(_0x2c4d97){return client[_0x9ced('0x2')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x2c4d97['VoiceQueueId'],'phone':_0x2c4d97[_0x9ced('0x3')]},'raw':![]},'log':'GetCmHopperBlack'});};exports[_0x9ced('0x4')]=function(_0x221c98){return client[_0x9ced('0x2')](_0x9ced('0x5'),{'options':{'where':{'CampaignId':_0x221c98[_0x9ced('0x6')],'phone':_0x221c98[_0x9ced('0x3')]},'raw':![]},'log':_0x9ced('0x7')});};
\ No newline at end of file
index 830598e..ef0d72e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2811=['createContact','campaign','Request','CreateCmHopperFinal','../client'];(function(_0x569de8,_0x54b4ff){var _0x2f082e=function(_0xfb01e2){while(--_0xfb01e2){_0x569de8['push'](_0x569de8['shift']());}};_0x2f082e(++_0x54b4ff);}(_0x2811,0xdb));var _0x1281=function(_0x39b80d,_0x20d2a1){_0x39b80d=_0x39b80d-0x0;var _0x19fcea=_0x2811[_0x39b80d];return _0x19fcea;};'use strict';var client=require(_0x1281('0x0'));exports[_0x1281('0x1')]=function(_0x1ab45d){return function(){_0x1ab45d[_0x1281('0x2')]=_0x1ab45d['queue'];return client[_0x1281('0x3')]('CreateCmHopperFinal',{'body':_0x1ab45d,'log':_0x1281('0x4')});};};
\ No newline at end of file
+var _0x30d0=['createContact','campaign','queue','Request','CreateCmHopperFinal'];(function(_0x5ad757,_0x36fbc6){var _0x235969=function(_0x15e136){while(--_0x15e136){_0x5ad757['push'](_0x5ad757['shift']());}};_0x235969(++_0x36fbc6);}(_0x30d0,0x186));var _0x030d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x30d0[_0x19950b];return _0x3c6b41;};'use strict';var client=require('../client');exports[_0x030d('0x0')]=function(_0x14e9a2){return function(){_0x14e9a2[_0x030d('0x1')]=_0x14e9a2[_0x030d('0x2')];return client[_0x030d('0x3')](_0x030d('0x4'),{'body':_0x14e9a2,'log':_0x030d('0x4')});};};
\ No newline at end of file
index 67e5c1e..c26af8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9588=['format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','day','endOf','GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','startOf','ivr','moment','createHistory','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes'];(function(_0xe64089,_0xd09657){var _0x382441=function(_0x27ac60){while(--_0x27ac60){_0xe64089['push'](_0xe64089['shift']());}};_0x382441(++_0xd09657);}(_0x9588,0x15b));var _0x8958=function(_0x1a74e2,_0x4938c3){_0x1a74e2=_0x1a74e2-0x0;var _0x34338e=_0x9588[_0x1a74e2];return _0x34338e;};'use strict';var client=require('../client');var moment=require(_0x8958('0x0'));exports[_0x8958('0x1')]=function(_0x410a9b){_0x410a9b[_0x8958('0x2')]=_0x410a9b[_0x8958('0x3')];return client[_0x8958('0x4')](_0x8958('0x5'),{'body':_0x410a9b,'log':_0x8958('0x5')});};exports[_0x8958('0x6')]=function(_0x188692){return client[_0x8958('0x4')](_0x8958('0x7'),{'options':{'where':{'endtime':{'$between':[moment()[_0x8958('0x8')](_0x188692,_0x8958('0x9'))[_0x8958('0xa')](_0x8958('0xb')),moment()['format']('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':_0x8958('0xc')});};exports[_0x8958('0xd')]=function(){return function(){return client[_0x8958('0x4')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x8958('0xe'))[_0x8958('0xa')](_0x8958('0xb')),moment()[_0x8958('0xf')](_0x8958('0xe'))[_0x8958('0xa')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x8958('0x3')},'raw':![]},'log':_0x8958('0x10')});};};exports[_0x8958('0x11')]=function(){return function(){return client[_0x8958('0x4')](_0x8958('0x12'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x8958('0x13')](_0x8958('0xe'))[_0x8958('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf']('day')[_0x8958('0xa')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x8958('0x14')},'raw':![]},'log':_0x8958('0x12')});};};
\ No newline at end of file
+var _0x7cc1=['format','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','YYYY-MM-DD\x20HH:mm:ss','endOf','queue','GetCampaignHopperHistory','ivr','createHistory','campaign','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0x7cc1,0x118));var _0x17cc=function(_0x12ed5d,_0x3194b4){_0x12ed5d=_0x12ed5d-0x0;var _0x3fadd0=_0x7cc1[_0x12ed5d];return _0x3fadd0;};'use strict';var client=require('../client');var moment=require('moment');exports[_0x17cc('0x0')]=function(_0x3f1f9d){_0x3f1f9d[_0x17cc('0x1')]=_0x3f1f9d['queue'];return client[_0x17cc('0x2')](_0x17cc('0x3'),{'body':_0x3f1f9d,'log':'CreateCmHopperHistory'});};exports[_0x17cc('0x4')]=function(_0x49b938){return client[_0x17cc('0x2')](_0x17cc('0x5'),{'options':{'where':{'endtime':{'$between':[moment()[_0x17cc('0x6')](_0x49b938,_0x17cc('0x7'))[_0x17cc('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x17cc('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':'GetCmHopperHistory'});};exports[_0x17cc('0x9')]=function(){return function(){return client[_0x17cc('0x2')](_0x17cc('0xa'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x17cc('0xb')](_0x17cc('0xc'))[_0x17cc('0x8')](_0x17cc('0xd')),moment()[_0x17cc('0xe')](_0x17cc('0xc'))[_0x17cc('0x8')](_0x17cc('0xd'))]},'campaigntype':_0x17cc('0xf')},'raw':![]},'log':_0x17cc('0xa')});};};exports['getCampaignHopperHistory']=function(){return function(){return client[_0x17cc('0x2')](_0x17cc('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x17cc('0xb')]('day')[_0x17cc('0x8')](_0x17cc('0xd')),moment()[_0x17cc('0xe')](_0x17cc('0xc'))[_0x17cc('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x17cc('0x11')},'raw':![]},'log':_0x17cc('0x10')});};};
\ No newline at end of file
index 1f69a89..540335d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae8e=['description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','name'];(function(_0x416c24,_0x47fd8d){var _0x82297f=function(_0x37544a){while(--_0x37544a){_0x416c24['push'](_0x416c24['shift']());}};_0x82297f(++_0x47fd8d);}(_0xae8e,0xc3));var _0xeae8=function(_0x3fdb06,_0x2756aa){_0x3fdb06=_0x3fdb06-0x0;var _0x2b0467=_0xae8e[_0x3fdb06];return _0x2b0467;};'use strict';var client=require(_0xeae8('0x0'));exports[_0xeae8('0x1')]=function(){return function(){return client[_0xeae8('0x2')](_0xeae8('0x3'),{'options':{'raw':![],'attributes':['id',_0xeae8('0x4'),_0xeae8('0x5'),_0xeae8('0x6'),_0xeae8('0x7'),_0xeae8('0x8'),_0xeae8('0x9'),_0xeae8('0xa'),_0xeae8('0xb'),_0xeae8('0xc'),_0xeae8('0xd'),_0xeae8('0xe'),_0xeae8('0xf'),_0xeae8('0x10'),_0xeae8('0x11'),_0xeae8('0x12')],'include':[{'model':_0xeae8('0x13'),'as':_0xeae8('0x13'),'attributes':['id',_0xeae8('0x4'),_0xeae8('0x14'),_0xeae8('0x15')]}]},'log':_0xeae8('0x16')});};};exports[_0xeae8('0x17')]=function(_0x1c6e8a,_0x341438){return client[_0xeae8('0x2')](_0xeae8('0x18'),{'account':{'id':_0x1c6e8a},'body':_0x341438,'log':_0xeae8('0x18')});};
\ No newline at end of file
+var _0xe2cf=['NotifyFaxAccount','getFaxAccounts','GetFaxAccount','description','ecm','headerinfo','localstationid','maxrate','modem','t38timeout','tech','key','Trunk','active','getFaxAccount','Request'];(function(_0x5ce848,_0x4c8981){var _0x14bde2=function(_0x1137f3){while(--_0x1137f3){_0x5ce848['push'](_0x5ce848['shift']());}};_0x14bde2(++_0x4c8981);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x183256,_0x1a596d){_0x183256=_0x183256-0x0;var _0x5394a2=_0xe2cf[_0x183256];return _0x5394a2;};'use strict';var client=require('../client');exports[_0xfe2c('0x0')]=function(){return function(){return client['Request'](_0xfe2c('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xfe2c('0x2'),_0xfe2c('0x3'),_0xfe2c('0x4'),_0xfe2c('0x5'),'minrate',_0xfe2c('0x6'),_0xfe2c('0x7'),'gateway','faxdetect',_0xfe2c('0x8'),_0xfe2c('0x9'),'TrunkId','ListId',_0xfe2c('0xa')],'include':[{'model':_0xfe2c('0xb'),'as':_0xfe2c('0xb'),'attributes':['id','name','callerid',_0xfe2c('0xc')]}]},'log':_0xfe2c('0xd')});};};exports['notify']=function(_0x22278c,_0x5d752d){return client[_0xfe2c('0xe')](_0xfe2c('0xf'),{'account':{'id':_0x22278c},'body':_0x5d752d,'log':_0xfe2c('0xf')});};
\ No newline at end of file
index 0d7708a..6cc6009 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1571=['UpdateFaxMessage','../client','update','Request'];(function(_0x234ccb,_0x4c4cef){var _0x2e462e=function(_0xb53f13){while(--_0xb53f13){_0x234ccb['push'](_0x234ccb['shift']());}};_0x2e462e(++_0x4c4cef);}(_0x1571,0xe1));var _0x1157=function(_0x53afe9,_0x2c9f40){_0x53afe9=_0x53afe9-0x0;var _0x396396=_0x1571[_0x53afe9];return _0x396396;};'use strict';var client=require(_0x1157('0x0'));exports[_0x1157('0x1')]=function(_0x5038b9,_0x536e21){return client[_0x1157('0x2')](_0x1157('0x3'),{'body':_0x536e21,'options':{'where':{'AttachmentId':_0x5038b9}},'log':_0x1157('0x3')});};
\ No newline at end of file
+var _0xc63e=['Request','UpdateFaxMessage'];(function(_0x28a98a,_0x114ae0){var _0x1e4648=function(_0x3b8f71){while(--_0x3b8f71){_0x28a98a['push'](_0x28a98a['shift']());}};_0x1e4648(++_0x114ae0);}(_0xc63e,0x1de));var _0xec63=function(_0x8c1005,_0x1f3f16){_0x8c1005=_0x8c1005-0x0;var _0x175354=_0xc63e[_0x8c1005];return _0x175354;};'use strict';var client=require('../client');exports['update']=function(_0x487e60,_0x5599b5){return client[_0xec63('0x0')](_0xec63('0x1'),{'body':_0x5599b5,'options':{'where':{'AttachmentId':_0x487e60}},'log':_0xec63('0x1')});};
\ No newline at end of file
index 5315a7e..a3c7aa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a19=['Tag','Tags','Request','GetDeskAccount','name','description','password','remoteUri','authType','type','serverUrl','DeskConfiguration','DeskField','Subjects','variableName','Variable','Descriptions','key','keyType','content','idField','nameField','customField'];(function(_0x29aa45,_0x30e780){var _0x1562e6=function(_0x25a9bc){while(--_0x25a9bc){_0x29aa45['push'](_0x29aa45['shift']());}};_0x1562e6(++_0x30e780);}(_0x7a19,0x1e5));var _0x97a1=function(_0x167eb1,_0x102f03){_0x167eb1=_0x167eb1-0x0;var _0x36ce34=_0x7a19[_0x167eb1];return _0x36ce34;};'use strict';var client=require('../../client');exports['getDeskAccounts']=function(){return function(_0xd917ef){return client[_0x97a1('0x0')](_0x97a1('0x1'),{'options':{'raw':![],'attributes':['id',_0x97a1('0x2'),_0x97a1('0x3'),'username',_0x97a1('0x4'),_0x97a1('0x5'),_0x97a1('0x6'),_0x97a1('0x7'),_0x97a1('0x8')],'include':[{'model':_0x97a1('0x9'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x97a1('0xa'),'as':_0x97a1('0xb'),'attributes':['id','type','content',_0x97a1('0xc')],'include':[{'model':_0x97a1('0xd'),'as':_0x97a1('0xd'),'attributes':['id','name']}]},{'model':_0x97a1('0xa'),'as':_0x97a1('0xe'),'attributes':['id',_0x97a1('0x7'),'content',_0x97a1('0xf'),_0x97a1('0x10'),'keyContent',_0x97a1('0xc')],'include':[{'model':_0x97a1('0xd'),'as':'Variable','attributes':['id',_0x97a1('0x2')]}]},{'model':_0x97a1('0xa'),'as':'Fields','attributes':['id','type',_0x97a1('0x11'),_0x97a1('0x12'),_0x97a1('0x13'),_0x97a1('0x14'),_0x97a1('0xc')],'include':[{'model':_0x97a1('0xd'),'as':_0x97a1('0xd'),'attributes':['id',_0x97a1('0x2')]}]},{'model':_0x97a1('0x15'),'as':_0x97a1('0x16'),'attributes':['id',_0x97a1('0x2')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
+var _0x2bf6=['Tag','Tags','GetDeskAccount','getDeskAccounts','Request','name','description','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','customField'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x2bf6,0x198));var _0x62bf=function(_0xdb166b,_0x28ed75){_0xdb166b=_0xdb166b-0x0;var _0x30234d=_0x2bf6[_0xdb166b];return _0x30234d;};'use strict';var client=require('../../client');exports[_0x62bf('0x0')]=function(){return function(_0x949437){return client[_0x62bf('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0x62bf('0x2'),_0x62bf('0x3'),'username',_0x62bf('0x4'),_0x62bf('0x5'),_0x62bf('0x6'),_0x62bf('0x7'),_0x62bf('0x8')],'include':[{'model':_0x62bf('0x9'),'as':_0x62bf('0xa'),'attributes':['id','name'],'include':[{'model':_0x62bf('0xb'),'as':_0x62bf('0xc'),'attributes':['id',_0x62bf('0x7'),_0x62bf('0xd'),_0x62bf('0xe')],'include':[{'model':_0x62bf('0xf'),'as':_0x62bf('0xf'),'attributes':['id','name']}]},{'model':'DeskField','as':_0x62bf('0x10'),'attributes':['id','type',_0x62bf('0xd'),_0x62bf('0x11'),_0x62bf('0x12'),_0x62bf('0x13'),_0x62bf('0xe')],'include':[{'model':'Variable','as':_0x62bf('0xf'),'attributes':['id','name']}]},{'model':'DeskField','as':_0x62bf('0x14'),'attributes':['id',_0x62bf('0x7'),_0x62bf('0xd'),_0x62bf('0x15'),_0x62bf('0x16'),_0x62bf('0x17'),'variableName'],'include':[{'model':_0x62bf('0xf'),'as':_0x62bf('0xf'),'attributes':['id',_0x62bf('0x2')]}]},{'model':_0x62bf('0x18'),'as':_0x62bf('0x19'),'attributes':['id',_0x62bf('0x2')]}]}]},'log':_0x62bf('0x1a')});};};
\ No newline at end of file
index 52c5841..b38f929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x480c9c,_0xc59116){var _0xf01c58=function(_0x49b5da){while(--_0x49b5da){_0x480c9c['push'](_0x480c9c['shift']());}};_0xf01c58(++_0xc59116);}(_0xbc87,0x144));var _0x7bc8=function(_0x32dd97,_0x1643f5){_0x32dd97=_0x32dd97-0x0;var _0x42b5b5=_0xbc87[_0x32dd97];return _0x42b5b5;};'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
+var _0x8caf=['keyContent','Fields','idField','customField','CloudProvider','data2','data7','getDynamics365Accounts','Request','GetDynamics365Account','name','username','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','Dynamics365Configuration','Configurations','ticketType','openNewTab','Subjects','type','content','variableName','Variable','Dynamics365Field','Descriptions','key'];(function(_0x157cc7,_0x1a4089){var _0x4d71b3=function(_0x495352){while(--_0x495352){_0x157cc7['push'](_0x157cc7['shift']());}};_0x4d71b3(++_0x1a4089);}(_0x8caf,0x1ab));var _0xf8ca=function(_0x35ead7,_0x453d3a){_0x35ead7=_0x35ead7-0x0;var _0x33b761=_0x8caf[_0x35ead7];return _0x33b761;};'use strict';var client=require('../../client');exports[_0xf8ca('0x0')]=function(){return function(_0x215811){return client[_0xf8ca('0x1')](_0xf8ca('0x2'),{'options':{'raw':![],'attributes':['id',_0xf8ca('0x3'),_0xf8ca('0x4'),'password',_0xf8ca('0x5'),_0xf8ca('0x6'),_0xf8ca('0x7'),_0xf8ca('0x8'),_0xf8ca('0x9'),_0xf8ca('0xa'),'modernAuthentication'],'include':[{'model':_0xf8ca('0xb'),'as':_0xf8ca('0xc'),'attributes':['id',_0xf8ca('0x3'),_0xf8ca('0xd'),'moduleCreate','additionalSearchContact',_0xf8ca('0xe')],'include':[{'model':'Dynamics365Field','as':_0xf8ca('0xf'),'attributes':['id',_0xf8ca('0x10'),_0xf8ca('0x11'),_0xf8ca('0x12')],'include':[{'model':'Variable','as':_0xf8ca('0x13'),'attributes':['id',_0xf8ca('0x3')]}]},{'model':_0xf8ca('0x14'),'as':_0xf8ca('0x15'),'attributes':['id','type',_0xf8ca('0x11'),_0xf8ca('0x16'),'keyType',_0xf8ca('0x17'),_0xf8ca('0x12')],'include':[{'model':_0xf8ca('0x13'),'as':_0xf8ca('0x13'),'attributes':['id',_0xf8ca('0x3')]}]},{'model':_0xf8ca('0x14'),'as':_0xf8ca('0x18'),'attributes':['id',_0xf8ca('0x10'),_0xf8ca('0x11'),_0xf8ca('0x19'),'nameField',_0xf8ca('0x1a'),_0xf8ca('0x12')],'include':[{'model':_0xf8ca('0x13'),'as':_0xf8ca('0x13'),'attributes':['id',_0xf8ca('0x3')]}]}]},{'model':_0xf8ca('0x1b'),'as':_0xf8ca('0x1b'),'attributes':['id',_0xf8ca('0x1c'),'data5',_0xf8ca('0x1d')]}]},'log':_0xf8ca('0x2')});};};
\ No newline at end of file
index cf9ff67..7b69e5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6629=['content','variableName','Variable','FreshdeskField','Descriptions','type','key','keyType','Fields','customField','../../client','Request','GetFreshdeskAccount','name','username','remoteUri','serverUrl','FreshdeskConfiguration','Tag','Subjects'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x6629,0x1c2));var _0x9662=function(_0x4259d2,_0x3c0913){_0x4259d2=_0x4259d2-0x0;var _0x4ccc1e=_0x6629[_0x4259d2];return _0x4ccc1e;};'use strict';var client=require(_0x9662('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x5471a3){return client[_0x9662('0x1')](_0x9662('0x2'),{'options':{'raw':![],'attributes':['id',_0x9662('0x3'),_0x9662('0x4'),'apiKey',_0x9662('0x5'),_0x9662('0x6')],'include':[{'model':_0x9662('0x7'),'as':'Configurations','attributes':['id',_0x9662('0x3')],'include':[{'model':_0x9662('0x8'),'attributes':['id',_0x9662('0x3')]},{'model':'FreshdeskField','as':_0x9662('0x9'),'attributes':['id','type',_0x9662('0xa'),_0x9662('0xb')],'include':[{'model':_0x9662('0xc'),'as':_0x9662('0xc'),'attributes':['id',_0x9662('0x3')]}]},{'model':_0x9662('0xd'),'as':_0x9662('0xe'),'attributes':['id',_0x9662('0xf'),_0x9662('0xa'),_0x9662('0x10'),_0x9662('0x11'),'keyContent',_0x9662('0xb')],'include':[{'model':'Variable','as':_0x9662('0xc'),'attributes':['id',_0x9662('0x3')]}]},{'model':'FreshdeskField','as':_0x9662('0x12'),'attributes':['id',_0x9662('0xf'),_0x9662('0xa'),'idField','nameField',_0x9662('0x13'),'variableName'],'include':[{'model':_0x9662('0xc'),'as':_0x9662('0xc'),'attributes':['id',_0x9662('0x3')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
+var _0xee4e=['keyContent','idField','nameField','customField','../../client','getFreshdeskAccounts','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','type','content','variableName','Variable','key','keyType'];(function(_0x297d7a,_0x5b5e91){var _0x569563=function(_0x1bf17c){while(--_0x1bf17c){_0x297d7a['push'](_0x297d7a['shift']());}};_0x569563(++_0x5b5e91);}(_0xee4e,0x122));var _0xeee4=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xee4e[_0xf50820];return _0x2a9b10;};'use strict';var client=require(_0xeee4('0x0'));exports[_0xeee4('0x1')]=function(){return function(_0x6ba261){return client['Request'](_0xeee4('0x2'),{'options':{'raw':![],'attributes':['id',_0xeee4('0x3'),_0xeee4('0x4'),_0xeee4('0x5'),_0xeee4('0x6'),_0xeee4('0x7')],'include':[{'model':_0xeee4('0x8'),'as':_0xeee4('0x9'),'attributes':['id','name'],'include':[{'model':_0xeee4('0xa'),'attributes':['id',_0xeee4('0x3')]},{'model':_0xeee4('0xb'),'as':'Subjects','attributes':['id',_0xeee4('0xc'),_0xeee4('0xd'),_0xeee4('0xe')],'include':[{'model':'Variable','as':_0xeee4('0xf'),'attributes':['id',_0xeee4('0x3')]}]},{'model':_0xeee4('0xb'),'as':'Descriptions','attributes':['id',_0xeee4('0xc'),'content',_0xeee4('0x10'),_0xeee4('0x11'),_0xeee4('0x12'),'variableName'],'include':[{'model':_0xeee4('0xf'),'as':_0xeee4('0xf'),'attributes':['id',_0xeee4('0x3')]}]},{'model':_0xeee4('0xb'),'as':'Fields','attributes':['id','type',_0xeee4('0xd'),_0xeee4('0x13'),_0xeee4('0x14'),_0xeee4('0x15'),_0xeee4('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xeee4('0x3')]}]}]}]},'log':_0xeee4('0x2')});};};
\ No newline at end of file
index a621965..af7a3f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf69d=['keyContent','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','name','FreshsalesField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0xf69d,0xd3));var _0xdf69=function(_0x3116a2,_0x1d26bc){_0x3116a2=_0x3116a2-0x0;var _0x5863ac=_0xf69d[_0x3116a2];return _0x5863ac;};'use strict';var client=require(_0xdf69('0x0'));exports[_0xdf69('0x1')]=function(){return function(_0x32d6ba){return client[_0xdf69('0x2')](_0xdf69('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xdf69('0x4'),_0xdf69('0x5'),_0xdf69('0x6'),_0xdf69('0x7')],'include':[{'model':_0xdf69('0x8'),'as':_0xdf69('0x9'),'attributes':['id',_0xdf69('0xa')],'include':[{'model':_0xdf69('0xb'),'as':_0xdf69('0xc'),'attributes':['id',_0xdf69('0xd'),_0xdf69('0xe'),_0xdf69('0xf')],'include':[{'model':_0xdf69('0x10'),'as':_0xdf69('0x10'),'attributes':['id',_0xdf69('0xa')]}]},{'model':_0xdf69('0xb'),'as':_0xdf69('0x11'),'attributes':['id','type',_0xdf69('0xe'),_0xdf69('0x12'),_0xdf69('0x13'),_0xdf69('0x14'),_0xdf69('0xf')],'include':[{'model':_0xdf69('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0x71ab=['Variable','Descriptions','keyType','keyContent','GetFreshsalesccount','getFreshsalesAccounts','Request','name','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','content','variableName'];(function(_0x185ca8,_0x79bbcd){var _0x1198d7=function(_0x366cb2){while(--_0x366cb2){_0x185ca8['push'](_0x185ca8['shift']());}};_0x1198d7(++_0x79bbcd);}(_0x71ab,0x64));var _0xb71a=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x71ab[_0x432682];return _0x463d05;};'use strict';var client=require('../../client');exports[_0xb71a('0x0')]=function(){return function(_0x4d5607){return client[_0xb71a('0x1')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0xb71a('0x2'),_0xb71a('0x3'),_0xb71a('0x4'),_0xb71a('0x5'),_0xb71a('0x6')],'include':[{'model':_0xb71a('0x7'),'as':_0xb71a('0x8'),'attributes':['id',_0xb71a('0x2')],'include':[{'model':_0xb71a('0x9'),'as':_0xb71a('0xa'),'attributes':['id',_0xb71a('0xb'),_0xb71a('0xc'),_0xb71a('0xd')],'include':[{'model':_0xb71a('0xe'),'as':_0xb71a('0xe'),'attributes':['id',_0xb71a('0x2')]}]},{'model':_0xb71a('0x9'),'as':_0xb71a('0xf'),'attributes':['id','type',_0xb71a('0xc'),'key',_0xb71a('0x10'),_0xb71a('0x11'),_0xb71a('0xd')],'include':[{'model':'Variable','as':_0xb71a('0xe'),'attributes':['id','name']}]}]}]},'log':_0xb71a('0x12')});};};
\ No newline at end of file
index 0e25d57..ee230ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x337f=['moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','Fields','../../client','getSalesforceAccounts','GetSalesforceAccount','name','username','remoteUri','clientId','securityToken','type','Configurations'];(function(_0x6d3c81,_0x834f28){var _0x545157=function(_0x183a02){while(--_0x183a02){_0x6d3c81['push'](_0x6d3c81['shift']());}};_0x545157(++_0x834f28);}(_0x337f,0x11c));var _0xf337=function(_0x589c62,_0x136312){_0x589c62=_0x589c62-0x0;var _0x12c66a=_0x337f[_0x589c62];return _0x12c66a;};'use strict';var client=require(_0xf337('0x0'));exports[_0xf337('0x1')]=function(){return function(_0x1c771a){return client['Request'](_0xf337('0x2'),{'options':{'raw':![],'attributes':['id',_0xf337('0x3'),_0xf337('0x4'),'password',_0xf337('0x5'),_0xf337('0x6'),'clientSecret',_0xf337('0x7'),'serverUrl',_0xf337('0x8')],'include':[{'model':'SalesforceConfiguration','as':_0xf337('0x9'),'attributes':['id','name','moduleSearch',_0xf337('0xa'),_0xf337('0xb'),_0xf337('0xc'),_0xf337('0xd'),_0xf337('0xe'),_0xf337('0xf')],'include':[{'model':_0xf337('0x10'),'as':_0xf337('0x11'),'include':[{'model':'Variable','as':_0xf337('0x12'),'attributes':['id',_0xf337('0x3')]}]},{'model':_0xf337('0x10'),'as':_0xf337('0x13'),'include':[{'model':_0xf337('0x12'),'as':_0xf337('0x12'),'attributes':['id',_0xf337('0x3')]}]},{'model':_0xf337('0x10'),'as':_0xf337('0x14'),'include':[{'model':_0xf337('0x12'),'as':_0xf337('0x12'),'attributes':['id',_0xf337('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0xa596=['GetSalesforceAccount','name','username','password','remoteUri','clientId','clientSecret','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','ticketType','additionalSearchAccount','SalesforceField','Subjects','Variable','Fields','../../client','getSalesforceAccounts','Request'];(function(_0x58f9a8,_0x46cc13){var _0x551362=function(_0x4af943){while(--_0x4af943){_0x58f9a8['push'](_0x58f9a8['shift']());}};_0x551362(++_0x46cc13);}(_0xa596,0x7b));var _0x6a59=function(_0x4b2aef,_0x4254c5){_0x4b2aef=_0x4b2aef-0x0;var _0x40d1e7=_0xa596[_0x4b2aef];return _0x40d1e7;};'use strict';var client=require(_0x6a59('0x0'));exports[_0x6a59('0x1')]=function(){return function(_0x5b127f){return client[_0x6a59('0x2')](_0x6a59('0x3'),{'options':{'raw':![],'attributes':['id',_0x6a59('0x4'),_0x6a59('0x5'),_0x6a59('0x6'),_0x6a59('0x7'),_0x6a59('0x8'),_0x6a59('0x9'),'securityToken',_0x6a59('0xa'),_0x6a59('0xb')],'include':[{'model':_0x6a59('0xc'),'as':_0x6a59('0xd'),'attributes':['id',_0x6a59('0x4'),_0x6a59('0xe'),'moduleCreate',_0x6a59('0xf'),'leadId',_0x6a59('0x10'),'additionalSearchContact','additionalSearchLead'],'include':[{'model':_0x6a59('0x11'),'as':_0x6a59('0x12'),'include':[{'model':_0x6a59('0x13'),'as':'Variable','attributes':['id',_0x6a59('0x4')]}]},{'model':_0x6a59('0x11'),'as':'Descriptions','include':[{'model':_0x6a59('0x13'),'as':'Variable','attributes':['id',_0x6a59('0x4')]}]},{'model':_0x6a59('0x11'),'as':_0x6a59('0x14'),'include':[{'model':_0x6a59('0x13'),'as':_0x6a59('0x13'),'attributes':['id',_0x6a59('0x4')]}]}]}]},'log':_0x6a59('0x3')});};};
\ No newline at end of file
index bd4162d..413e185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['type','variableName','Variable','Descriptions','content','key','keyContent','Fields','nameField','customField','GetServicenowkAccount','getServicenowAccounts','GetServicenowAccount','name','description','username','password','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects'];(function(_0xae01dd,_0xbd8a3c){var _0x8c26df=function(_0x359827){while(--_0x359827){_0xae01dd['push'](_0xae01dd['shift']());}};_0x8c26df(++_0xbd8a3c);}(_0x57ca,0x108));var _0xa57c=function(_0x4b7175,_0x2c2dd6){_0x4b7175=_0x4b7175-0x0;var _0x3eeb4b=_0x57ca[_0x4b7175];return _0x3eeb4b;};'use strict';var client=require('../../client');exports[_0xa57c('0x0')]=function(){return function(_0x4ad696){return client['Request'](_0xa57c('0x1'),{'options':{'raw':![],'attributes':['id',_0xa57c('0x2'),_0xa57c('0x3'),_0xa57c('0x4'),_0xa57c('0x5'),'email',_0xa57c('0x6'),_0xa57c('0x7')],'include':[{'model':_0xa57c('0x8'),'as':_0xa57c('0x9'),'attributes':['id',_0xa57c('0x2')],'include':[{'model':_0xa57c('0xa'),'as':_0xa57c('0xb'),'attributes':['id',_0xa57c('0xc'),'content',_0xa57c('0xd')],'include':[{'model':'Variable','as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]},{'model':'ServicenowField','as':_0xa57c('0xf'),'attributes':['id','type',_0xa57c('0x10'),_0xa57c('0x11'),'keyType',_0xa57c('0x12'),'variableName'],'include':[{'model':_0xa57c('0xe'),'as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]},{'model':_0xa57c('0xa'),'as':_0xa57c('0x13'),'attributes':['id','type',_0xa57c('0x10'),'idField',_0xa57c('0x14'),_0xa57c('0x15'),_0xa57c('0xd')],'include':[{'model':_0xa57c('0xe'),'as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]}]}]},'log':_0xa57c('0x16')});};};
\ No newline at end of file
+var _0xe2fe=['type','variableName','Variable','keyType','Fields','content','nameField','GetServicenowkAccount','../../client','Request','name','description','username','password','email','serverUrl','ServicenowConfiguration','ServicenowField'];(function(_0x41684b,_0xdb047){var _0x384874=function(_0x78828c){while(--_0x78828c){_0x41684b['push'](_0x41684b['shift']());}};_0x384874(++_0xdb047);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xee2f('0x0'));exports['getServicenowAccounts']=function(){return function(_0x521787){return client[_0xee2f('0x1')]('GetServicenowAccount',{'options':{'raw':![],'attributes':['id',_0xee2f('0x2'),_0xee2f('0x3'),_0xee2f('0x4'),_0xee2f('0x5'),_0xee2f('0x6'),'remoteUri',_0xee2f('0x7')],'include':[{'model':_0xee2f('0x8'),'as':'Configurations','attributes':['id',_0xee2f('0x2')],'include':[{'model':_0xee2f('0x9'),'as':'Subjects','attributes':['id',_0xee2f('0xa'),'content',_0xee2f('0xb')],'include':[{'model':_0xee2f('0xc'),'as':'Variable','attributes':['id',_0xee2f('0x2')]}]},{'model':_0xee2f('0x9'),'as':'Descriptions','attributes':['id','type','content','key',_0xee2f('0xd'),'keyContent','variableName'],'include':[{'model':'Variable','as':_0xee2f('0xc'),'attributes':['id',_0xee2f('0x2')]}]},{'model':_0xee2f('0x9'),'as':_0xee2f('0xe'),'attributes':['id',_0xee2f('0xa'),_0xee2f('0xf'),'idField',_0xee2f('0x10'),'customField',_0xee2f('0xb')],'include':[{'model':_0xee2f('0xc'),'as':'Variable','attributes':['id',_0xee2f('0x2')]}]}]}]},'log':_0xee2f('0x11')});};};
\ No newline at end of file
index 200adaa..91849ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['Subjects','type','content','variableName','Variable','key','keyType','keyContent','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','serverUrl','SugarcrmConfiguration','Configurations','SugarcrmField'];(function(_0x47643e,_0x337374){var _0x2aa5db=function(_0x5dcbf2){while(--_0x5dcbf2){_0x47643e['push'](_0x47643e['shift']());}};_0x2aa5db(++_0x337374);}(_0xda2d,0x102));var _0xdda2=function(_0x1145a0,_0x20c24b){_0x1145a0=_0x1145a0-0x0;var _0x46bb64=_0xda2d[_0x1145a0];return _0x46bb64;};'use strict';var client=require('../../client');exports[_0xdda2('0x0')]=function(){return function(_0x35f029){return client[_0xdda2('0x1')](_0xdda2('0x2'),{'options':{'raw':![],'attributes':['id',_0xdda2('0x3'),'username','password','remoteUri',_0xdda2('0x4')],'include':[{'model':_0xdda2('0x5'),'as':_0xdda2('0x6'),'attributes':['id',_0xdda2('0x3')],'include':[{'model':_0xdda2('0x7'),'as':_0xdda2('0x8'),'attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':'Variable','attributes':['id',_0xdda2('0x3')]}]},{'model':_0xdda2('0x7'),'as':'Descriptions','attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0xd'),_0xdda2('0xe'),_0xdda2('0xf'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':_0xdda2('0xc'),'attributes':['id','name']}]},{'model':'SugarcrmField','as':'Fields','attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0x10'),_0xdda2('0x11'),_0xdda2('0x12'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':'Variable','attributes':['id',_0xdda2('0x3')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ No newline at end of file
+var _0x66fa=['password','remoteUri','serverUrl','SugarcrmField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','Fields','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username'];(function(_0x21009a,_0x5acd53){var _0x411a4c=function(_0x534486){while(--_0x534486){_0x21009a['push'](_0x21009a['shift']());}};_0x411a4c(++_0x5acd53);}(_0x66fa,0x117));var _0xa66f=function(_0x56194b,_0x20c7e4){_0x56194b=_0x56194b-0x0;var _0x5e9f9b=_0x66fa[_0x56194b];return _0x5e9f9b;};'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 6f2f792..36f3fa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1fb=['../../client','getVtigerAccounts','Request','GetVtigerAccount','name','username','remoteUri','VtigerConfiguration','Configurations','Subjects','content','Variable','key','keyContent','variableName','Fields'];(function(_0x2e1033,_0x27512e){var _0x180b87=function(_0x1ed229){while(--_0x1ed229){_0x2e1033['push'](_0x2e1033['shift']());}};_0x180b87(++_0x27512e);}(_0xd1fb,0x160));var _0xbd1f=function(_0x6440fd,_0xb864bd){_0x6440fd=_0x6440fd-0x0;var _0x96ba05=_0xd1fb[_0x6440fd];return _0x96ba05;};'use strict';var client=require(_0xbd1f('0x0'));exports[_0xbd1f('0x1')]=function(){return function(_0x14c5e0){return client[_0xbd1f('0x2')](_0xbd1f('0x3'),{'options':{'raw':![],'attributes':['id',_0xbd1f('0x4'),'description',_0xbd1f('0x5'),'accessKey',_0xbd1f('0x6'),'serverUrl'],'include':[{'model':_0xbd1f('0x7'),'as':_0xbd1f('0x8'),'attributes':['id',_0xbd1f('0x4')],'include':[{'model':'VtigerField','as':_0xbd1f('0x9'),'attributes':['id','type',_0xbd1f('0xa'),'variableName'],'include':[{'model':_0xbd1f('0xb'),'as':_0xbd1f('0xb'),'attributes':['id','name']}]},{'model':'VtigerField','as':'Descriptions','attributes':['id','type','content',_0xbd1f('0xc'),'keyType',_0xbd1f('0xd'),_0xbd1f('0xe')],'include':[{'model':_0xbd1f('0xb'),'as':'Variable','attributes':['id',_0xbd1f('0x4')]}]},{'model':'VtigerField','as':_0xbd1f('0xf'),'attributes':['id','type',_0xbd1f('0xa'),'idField','nameField','customField','variableName'],'include':[{'model':_0xbd1f('0xb'),'as':_0xbd1f('0xb'),'attributes':['id',_0xbd1f('0x4')]}]}]}]},'log':_0xbd1f('0x3')});};};
\ No newline at end of file
+var _0x10d0=['Descriptions','key','keyType','keyContent','VtigerField','idField','nameField','customField','../../client','getVtigerAccounts','Request','name','username','accessKey','remoteUri','VtigerConfiguration','Configurations','Subjects','type','content','variableName','Variable'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x10d0,0x13c));var _0x010d=function(_0x3f9b69,_0x3c87c0){_0x3f9b69=_0x3f9b69-0x0;var _0x4a4bb1=_0x10d0[_0x3f9b69];return _0x4a4bb1;};'use strict';var client=require(_0x010d('0x0'));exports[_0x010d('0x1')]=function(){return function(_0x4cc755){return client[_0x010d('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0x010d('0x3'),'description',_0x010d('0x4'),_0x010d('0x5'),_0x010d('0x6'),'serverUrl'],'include':[{'model':_0x010d('0x7'),'as':_0x010d('0x8'),'attributes':['id',_0x010d('0x3')],'include':[{'model':'VtigerField','as':_0x010d('0x9'),'attributes':['id',_0x010d('0xa'),_0x010d('0xb'),_0x010d('0xc')],'include':[{'model':_0x010d('0xd'),'as':_0x010d('0xd'),'attributes':['id',_0x010d('0x3')]}]},{'model':'VtigerField','as':_0x010d('0xe'),'attributes':['id','type',_0x010d('0xb'),_0x010d('0xf'),_0x010d('0x10'),_0x010d('0x11'),_0x010d('0xc')],'include':[{'model':_0x010d('0xd'),'as':_0x010d('0xd'),'attributes':['id','name']}]},{'model':_0x010d('0x12'),'as':'Fields','attributes':['id',_0x010d('0xa'),_0x010d('0xb'),_0x010d('0x13'),_0x010d('0x14'),_0x010d('0x15'),_0x010d('0xc')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x010d('0x3')]}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
index fa6f018..b251299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadf2=['name','password','token','remoteUri','authType','serverUrl','ZendeskConfiguration','Configurations','Tag','ZendeskField','content','variableName','Variable','type','key','keyType','keyContent','idField','nameField','customField','GetZendeskAccount','getZendeskAccounts','Request'];(function(_0x349367,_0x1cede2){var _0x14179b=function(_0x38a191){while(--_0x38a191){_0x349367['push'](_0x349367['shift']());}};_0x14179b(++_0x1cede2);}(_0xadf2,0x16e));var _0x2adf=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0xadf2[_0x4792c8];return _0x35edb1;};'use strict';var client=require('../../client');exports[_0x2adf('0x0')]=function(){return function(_0x5d4212){return client[_0x2adf('0x1')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0x2adf('0x2'),'username',_0x2adf('0x3'),_0x2adf('0x4'),_0x2adf('0x5'),_0x2adf('0x6'),_0x2adf('0x7'),'type'],'include':[{'model':_0x2adf('0x8'),'as':_0x2adf('0x9'),'attributes':['id',_0x2adf('0x2')],'include':[{'model':_0x2adf('0xa'),'attributes':['id',_0x2adf('0x2')]},{'model':_0x2adf('0xb'),'as':'Subjects','attributes':['id','type',_0x2adf('0xc'),_0x2adf('0xd')],'include':[{'model':'Variable','as':_0x2adf('0xe'),'attributes':['id',_0x2adf('0x2')]}]},{'model':_0x2adf('0xb'),'as':'Descriptions','attributes':['id',_0x2adf('0xf'),_0x2adf('0xc'),_0x2adf('0x10'),_0x2adf('0x11'),_0x2adf('0x12'),_0x2adf('0xd')],'include':[{'model':_0x2adf('0xe'),'as':_0x2adf('0xe'),'attributes':['id',_0x2adf('0x2')]}]},{'model':_0x2adf('0xb'),'as':'Fields','attributes':['id',_0x2adf('0xf'),'content',_0x2adf('0x13'),_0x2adf('0x14'),_0x2adf('0x15'),_0x2adf('0xd')],'include':[{'model':_0x2adf('0xe'),'as':_0x2adf('0xe'),'attributes':['id',_0x2adf('0x2')]}]}]}]},'log':_0x2adf('0x16')});};};
\ No newline at end of file
+var _0xee34=['Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField','customField','getZendeskAccounts','Request','GetZendeskAccount','username','password','authType','serverUrl','ZendeskConfiguration','Configurations','name','ZendeskField'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xee34,0x7f));var _0x4ee3=function(_0x575f6a,_0x2ac04f){_0x575f6a=_0x575f6a-0x0;var _0x2b856d=_0xee34[_0x575f6a];return _0x2b856d;};'use strict';var client=require('../../client');exports[_0x4ee3('0x0')]=function(){return function(_0x150642){return client[_0x4ee3('0x1')](_0x4ee3('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x4ee3('0x3'),_0x4ee3('0x4'),'token','remoteUri',_0x4ee3('0x5'),_0x4ee3('0x6'),'type'],'include':[{'model':_0x4ee3('0x7'),'as':_0x4ee3('0x8'),'attributes':['id',_0x4ee3('0x9')],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0x4ee3('0xa'),'as':_0x4ee3('0xb'),'attributes':['id',_0x4ee3('0xc'),_0x4ee3('0xd'),_0x4ee3('0xe')],'include':[{'model':_0x4ee3('0xf'),'as':_0x4ee3('0xf'),'attributes':['id',_0x4ee3('0x9')]}]},{'model':_0x4ee3('0xa'),'as':_0x4ee3('0x10'),'attributes':['id','type','content','key',_0x4ee3('0x11'),_0x4ee3('0x12'),_0x4ee3('0xe')],'include':[{'model':_0x4ee3('0xf'),'as':_0x4ee3('0xf'),'attributes':['id',_0x4ee3('0x9')]}]},{'model':_0x4ee3('0xa'),'as':_0x4ee3('0x13'),'attributes':['id',_0x4ee3('0xc'),_0x4ee3('0xd'),_0x4ee3('0x14'),_0x4ee3('0x15'),_0x4ee3('0x16'),_0x4ee3('0xe')],'include':[{'model':_0x4ee3('0xf'),'as':_0x4ee3('0xf'),'attributes':['id',_0x4ee3('0x9')]}]}]}]},'log':_0x4ee3('0x2')});};};
\ No newline at end of file
index 15ef834..e288ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73e2=['keyContent','variableName','idField','nameField','../../client','getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId','serverUrl','refreshToken','Configurations','moduleCreate','ZohoField','Subjects','content','Variable','key','keyType'];(function(_0x19454e,_0x436336){var _0x11e26e=function(_0x27b585){while(--_0x27b585){_0x19454e['push'](_0x19454e['shift']());}};_0x11e26e(++_0x436336);}(_0x73e2,0xea));var _0x273e=function(_0x8984fd,_0x4b659b){_0x8984fd=_0x8984fd-0x0;var _0x4f4ba6=_0x73e2[_0x8984fd];return _0x4f4ba6;};'use strict';var client=require(_0x273e('0x0'));exports[_0x273e('0x1')]=function(){return function(_0x2a85ff){return client[_0x273e('0x2')](_0x273e('0x3'),{'options':{'raw':![],'attributes':['id',_0x273e('0x4'),_0x273e('0x5'),_0x273e('0x6'),_0x273e('0x7'),_0x273e('0x8'),'clientSecret',_0x273e('0x9'),'code',_0x273e('0xa')],'include':[{'model':'ZohoConfiguration','as':_0x273e('0xb'),'attributes':['id',_0x273e('0x4'),_0x273e('0xc'),'moduleSearch','description'],'include':[{'model':_0x273e('0xd'),'as':_0x273e('0xe'),'attributes':['id','type',_0x273e('0xf'),'variableName'],'include':[{'model':_0x273e('0x10'),'as':_0x273e('0x10'),'attributes':['id',_0x273e('0x4')]}]},{'model':_0x273e('0xd'),'as':'Descriptions','attributes':['id','type','content',_0x273e('0x11'),_0x273e('0x12'),_0x273e('0x13'),_0x273e('0x14')],'include':[{'model':'Variable','as':_0x273e('0x10'),'attributes':['id',_0x273e('0x4')]}]},{'model':'ZohoField','as':'Fields','attributes':['id','type',_0x273e('0xf'),_0x273e('0x15'),_0x273e('0x16'),'customField','variableName'],'include':[{'model':_0x273e('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
+var _0x7c03=['host','clientId','clientSecret','serverUrl','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','Subjects','type','Variable','ZohoField','content','keyContent','variableName','Fields','idField','nameField','customField','GetZohoAccount','getZohoAccounts','Request','name','description'];(function(_0x41f55e,_0x264009){var _0x922b33=function(_0x510189){while(--_0x510189){_0x41f55e['push'](_0x41f55e['shift']());}};_0x922b33(++_0x264009);}(_0x7c03,0x173));var _0x37c0=function(_0x39e57f,_0x5eee1e){_0x39e57f=_0x39e57f-0x0;var _0x3e24cc=_0x7c03[_0x39e57f];return _0x3e24cc;};'use strict';var client=require('../../client');exports[_0x37c0('0x0')]=function(){return function(_0x4dfc04){return client[_0x37c0('0x1')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0x37c0('0x2'),_0x37c0('0x3'),_0x37c0('0x4'),'zone',_0x37c0('0x5'),_0x37c0('0x6'),_0x37c0('0x7'),'code',_0x37c0('0x8')],'include':[{'model':_0x37c0('0x9'),'as':_0x37c0('0xa'),'attributes':['id',_0x37c0('0x2'),_0x37c0('0xb'),_0x37c0('0xc'),'description'],'include':[{'model':'ZohoField','as':_0x37c0('0xd'),'attributes':['id',_0x37c0('0xe'),'content','variableName'],'include':[{'model':'Variable','as':_0x37c0('0xf'),'attributes':['id',_0x37c0('0x2')]}]},{'model':_0x37c0('0x10'),'as':'Descriptions','attributes':['id','type',_0x37c0('0x11'),'key','keyType',_0x37c0('0x12'),_0x37c0('0x13')],'include':[{'model':_0x37c0('0xf'),'as':_0x37c0('0xf'),'attributes':['id',_0x37c0('0x2')]}]},{'model':_0x37c0('0x10'),'as':_0x37c0('0x14'),'attributes':['id',_0x37c0('0xe'),_0x37c0('0x11'),_0x37c0('0x15'),_0x37c0('0x16'),_0x37c0('0x17'),_0x37c0('0x13')],'include':[{'model':_0x37c0('0xf'),'as':'Variable','attributes':['id',_0x37c0('0x2')]}]}]}]},'log':_0x37c0('0x18')});};};
\ No newline at end of file
index d99de28..b3cc2e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe252=['length','resolve','every','number','string','map','interval','concat','Request','IntervalIftime','../../../config/logger','../client','stack','replace','trim','silly','intervalIftime\x20called\x20with'];(function(_0x5ac5c7,_0x22d57f){var _0xaca016=function(_0x5e06c9){while(--_0x5e06c9){_0x5ac5c7['push'](_0x5ac5c7['shift']());}};_0xaca016(++_0x22d57f);}(_0xe252,0x1c4));var _0x2e25=function(_0x5e6cb8,_0x16cf56){_0x5e6cb8=_0x5e6cb8-0x0;var _0x3faeb3=_0xe252[_0x5e6cb8];return _0x3faeb3;};var logger=require(_0x2e25('0x0'))('dialer');var client=require(_0x2e25('0x1'));function intervalIftime(_0x4d3329,_0xa7891d){const _0x2a8dc0=new Error()[_0x2e25('0x2')][_0x2e25('0x3')](/^Error/,'')[_0x2e25('0x4')]();logger[_0x2e25('0x5')](_0x2e25('0x6'),_0x4d3329,_0xa7891d,_0x2a8dc0);const _0x454c78=Array['isArray'](_0x4d3329);if(!_0x4d3329||_0x454c78&&_0x4d3329[_0x2e25('0x7')]===0x0){return Promise[_0x2e25('0x8')](![]);}else{var _0x28467d=[];var _0x442044=[];var _0x34d7c7=_0x454c78?_0x4d3329:[_0x4d3329];var _0x32594c=_0x34d7c7[_0x2e25('0x9')](function(_0x37995c){return typeof _0x37995c===_0x2e25('0xa');});var _0x40836a=_0x34d7c7[_0x2e25('0x9')](function(_0x4325e9){return typeof _0x4325e9===_0x2e25('0xb');});if(!_0x32594c&&!_0x40836a){_0x28467d=_0x34d7c7[_0x2e25('0xc')](function(_0x279e27){return _0x279e27['id'];});if(_0x28467d[_0x2e25('0x7')]===0x0){_0x442044=_0x34d7c7[_0x2e25('0xc')](function(_0x1cdb4b){return _0x1cdb4b[_0x2e25('0xd')];});}}else{if(_0x32594c){_0x28467d=_0x28467d[_0x2e25('0xe')](_0x34d7c7);}if(_0x40836a){_0x442044=_0x442044[_0x2e25('0xe')](_0x34d7c7);}}return client[_0x2e25('0xf')](_0x2e25('0x10'),{'intervalIds':_0x28467d,'intervals':_0x442044,'timezone':_0xa7891d,'log':_0x2e25('0x10')});}}exports['intervalIftime']=intervalIftime;
\ No newline at end of file
+var _0x90e2=['resolve','every','string','map','interval','concat','Request','IntervalIftime','intervalIftime','dialer','../client','stack','trim','intervalIftime\x20called\x20with','isArray','length'];(function(_0x3936c4,_0x59b4bb){var _0x5c2e58=function(_0x35cd52){while(--_0x35cd52){_0x3936c4['push'](_0x3936c4['shift']());}};_0x5c2e58(++_0x59b4bb);}(_0x90e2,0x129));var _0x290e=function(_0x2835ff,_0x3ddfbb){_0x2835ff=_0x2835ff-0x0;var _0x5b8f8c=_0x90e2[_0x2835ff];return _0x5b8f8c;};var logger=require('../../../config/logger')(_0x290e('0x0'));var client=require(_0x290e('0x1'));function intervalIftime(_0x4979aa,_0x237fe0){const _0x36bd70=new Error()[_0x290e('0x2')]['replace'](/^Error/,'')[_0x290e('0x3')]();logger['silly'](_0x290e('0x4'),_0x4979aa,_0x237fe0,_0x36bd70);const _0xda6fbe=Array[_0x290e('0x5')](_0x4979aa);if(!_0x4979aa||_0xda6fbe&&_0x4979aa[_0x290e('0x6')]===0x0){return Promise[_0x290e('0x7')](![]);}else{var _0x378e1f=[];var _0x19ef67=[];var _0x5a2ce1=_0xda6fbe?_0x4979aa:[_0x4979aa];var _0x298229=_0x5a2ce1['every'](function(_0x2f3d93){return typeof _0x2f3d93==='number';});var _0x565efd=_0x5a2ce1[_0x290e('0x8')](function(_0x4b43da){return typeof _0x4b43da===_0x290e('0x9');});if(!_0x298229&&!_0x565efd){_0x378e1f=_0x5a2ce1[_0x290e('0xa')](function(_0x1e6528){return _0x1e6528['id'];});if(_0x378e1f['length']===0x0){_0x19ef67=_0x5a2ce1[_0x290e('0xa')](function(_0x324a1d){return _0x324a1d[_0x290e('0xb')];});}}else{if(_0x298229){_0x378e1f=_0x378e1f[_0x290e('0xc')](_0x5a2ce1);}if(_0x565efd){_0x19ef67=_0x19ef67[_0x290e('0xc')](_0x5a2ce1);}}return client[_0x290e('0xd')]('IntervalIftime',{'intervalIds':_0x378e1f,'intervals':_0x19ef67,'timezone':_0x237fe0,'log':_0x290e('0xe')});}}exports[_0x290e('0xf')]=intervalIftime;
\ No newline at end of file
index 013697a..1031f56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1a9=['lodash','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','lastAssignedTo','interface','format','SIP/%s','queuecallerleaveAt','diff','seconds','inbound','exten','agent','accountcode','toNumber','uniqueid','CreateMemberReport','voice','membername','TALKING','starttime','endtime','outbound','dialstring'];(function(_0x53b40d,_0x8d5ec5){var _0x4d5048=function(_0x5ab2e4){while(--_0x5ab2e4){_0x53b40d['push'](_0x53b40d['shift']());}};_0x4d5048(++_0x8d5ec5);}(_0xe1a9,0x195));var _0x9e1a=function(_0x54028e,_0x179cdc){_0x54028e=_0x54028e-0x0;var _0x13aafb=_0xe1a9[_0x54028e];return _0x13aafb;};'use strict';var moment=require('moment');var _=require(_0x9e1a('0x0'));var util=require('util');var client=require(_0x9e1a('0x1'));exports[_0x9e1a('0x2')]=function(_0x414757){var _0x2733b0=_0x414757[_0x9e1a('0x3')]||_0x414757[_0x9e1a('0x4')];return client[_0x9e1a('0x5')]('CreateMemberReport',{'body':{'channel':'voice','membername':_0x414757[_0x9e1a('0x6')],'interface':_['isNil'](_0x414757[_0x9e1a('0x7')])?util[_0x9e1a('0x8')](_0x9e1a('0x9'),_0x414757[_0x9e1a('0x6')]):_0x414757[_0x9e1a('0x7')],'type':'TALKING','enterAt':_0x414757[_0x9e1a('0xa')],'exitAt':_0x2733b0,'duration':moment(_0x2733b0)[_0x9e1a('0xb')](_0x414757[_0x9e1a('0xa')],_0x9e1a('0xc')),'data1':_0x9e1a('0xd'),'data2':_0x414757['calleridnum'],'data3':_0x414757[_0x9e1a('0xe')],'data4':null,'data5':_0x414757['queue'],'role':_0x9e1a('0xf'),'internal':_0x414757[_0x9e1a('0x10')]?_[_0x9e1a('0x11')](_0x414757[_0x9e1a('0x10')]):undefined,'uniqueid':_0x414757[_0x9e1a('0x12')]},'log':_0x9e1a('0x13')});};exports['voiceDialReport']=function(_0xe8b76c){return client[_0x9e1a('0x5')](_0x9e1a('0x13'),{'body':{'channel':_0x9e1a('0x14'),'membername':_0xe8b76c[_0x9e1a('0x15')],'interface':_0xe8b76c[_0x9e1a('0x7')],'type':_0x9e1a('0x16'),'enterAt':_0xe8b76c[_0x9e1a('0x17')],'exitAt':_0xe8b76c[_0x9e1a('0x18')],'duration':moment(_0xe8b76c['endtime'])[_0x9e1a('0xb')](_0xe8b76c[_0x9e1a('0x17')],_0x9e1a('0xc'))>=0x0?moment(_0xe8b76c[_0x9e1a('0x18')])[_0x9e1a('0xb')](_0xe8b76c[_0x9e1a('0x17')],_0x9e1a('0xc')):null,'data1':_0x9e1a('0x19'),'data2':_0xe8b76c[_0x9e1a('0x10')],'data3':_0xe8b76c['exten'],'data4':_0xe8b76c[_0x9e1a('0x1a')]||null,'role':_0x9e1a('0xf'),'internal':_0xe8b76c[_0x9e1a('0x10')]?_['toNumber'](_0xe8b76c[_0x9e1a('0x10')]):undefined,'uniqueid':_0xe8b76c['uniqueid']},'log':_0x9e1a('0x13')});};
\ No newline at end of file
+var _0xd281=['exten','agent','uniqueid','lodash','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','isNil','SIP/%s','interface','queuecallerleaveAt','diff','inbound','accountcode','toNumber','voice','membername','TALKING','endtime','starttime','seconds','outbound'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0xd281,0x161));var _0x1d28=function(_0x22f581,_0x180341){_0x22f581=_0x22f581-0x0;var _0x2dbdd5=_0xd281[_0x22f581];return _0x2dbdd5;};'use strict';var moment=require('moment');var _=require(_0x1d28('0x0'));var util=require('util');var client=require('../client');exports[_0x1d28('0x1')]=function(_0x3fdd36){var _0x42aaf8=_0x3fdd36[_0x1d28('0x2')]||_0x3fdd36[_0x1d28('0x3')];return client[_0x1d28('0x4')](_0x1d28('0x5'),{'body':{'channel':'voice','membername':_0x3fdd36[_0x1d28('0x6')],'interface':_[_0x1d28('0x7')](_0x3fdd36['interface'])?util['format'](_0x1d28('0x8'),_0x3fdd36['lastAssignedTo']):_0x3fdd36[_0x1d28('0x9')],'type':'TALKING','enterAt':_0x3fdd36[_0x1d28('0xa')],'exitAt':_0x42aaf8,'duration':moment(_0x42aaf8)[_0x1d28('0xb')](_0x3fdd36[_0x1d28('0xa')],'seconds'),'data1':_0x1d28('0xc'),'data2':_0x3fdd36['calleridnum'],'data3':_0x3fdd36['exten'],'data4':null,'data5':_0x3fdd36['queue'],'role':'agent','internal':_0x3fdd36[_0x1d28('0xd')]?_[_0x1d28('0xe')](_0x3fdd36[_0x1d28('0xd')]):undefined,'uniqueid':_0x3fdd36['uniqueid']},'log':'CreateMemberReport'});};exports['voiceDialReport']=function(_0x5cf6d6){return client[_0x1d28('0x4')](_0x1d28('0x5'),{'body':{'channel':_0x1d28('0xf'),'membername':_0x5cf6d6[_0x1d28('0x10')],'interface':_0x5cf6d6[_0x1d28('0x9')],'type':_0x1d28('0x11'),'enterAt':_0x5cf6d6['starttime'],'exitAt':_0x5cf6d6[_0x1d28('0x12')],'duration':moment(_0x5cf6d6['endtime'])[_0x1d28('0xb')](_0x5cf6d6[_0x1d28('0x13')],_0x1d28('0x14'))>=0x0?moment(_0x5cf6d6[_0x1d28('0x12')])[_0x1d28('0xb')](_0x5cf6d6['starttime'],'seconds'):null,'data1':_0x1d28('0x15'),'data2':_0x5cf6d6[_0x1d28('0xd')],'data3':_0x5cf6d6[_0x1d28('0x16')],'data4':_0x5cf6d6['dialstring']||null,'role':_0x1d28('0x17'),'internal':_0x5cf6d6[_0x1d28('0xd')]?_[_0x1d28('0xe')](_0x5cf6d6[_0x1d28('0xd')]):undefined,'uniqueid':_0x5cf6d6[_0x1d28('0x18')]},'log':_0x1d28('0x5')});};
\ No newline at end of file
index 78e8bcc..813a44f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b0e=['../client','getSettings','Request','ShowSetting','stopRecordingOnTransfer','previewRecallmeReminderInterval'];(function(_0x53741a,_0x1e6831){var _0x4c6e3d=function(_0x565310){while(--_0x565310){_0x53741a['push'](_0x53741a['shift']());}};_0x4c6e3d(++_0x1e6831);}(_0x1b0e,0x132));var _0xe1b0=function(_0x595d58,_0x125702){_0x595d58=_0x595d58-0x0;var _0xd8ced9=_0x1b0e[_0x595d58];return _0xd8ced9;};'use strict';var client=require(_0xe1b0('0x0'));exports[_0xe1b0('0x1')]=function(){return client[_0xe1b0('0x2')](_0xe1b0('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xe1b0('0x4'),_0xe1b0('0x5')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0xd61e=['getSettings','Request','ShowSetting','stopRecordingOnTransfer','previewRecallmeReminderInterval','../client'];(function(_0x23ba26,_0x110781){var _0xfeb1c7=function(_0xded30d){while(--_0xded30d){_0x23ba26['push'](_0x23ba26['shift']());}};_0xfeb1c7(++_0x110781);}(_0xd61e,0x13d));var _0xed61=function(_0x2f8c62,_0x5cd6b6){_0x2f8c62=_0x2f8c62-0x0;var _0x21cf48=_0xd61e[_0x2f8c62];return _0x21cf48;};'use strict';var client=require(_0xed61('0x0'));exports[_0xed61('0x1')]=function(){return client[_0xed61('0x2')](_0xed61('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xed61('0x4'),_0xed61('0x5')]},'log':'GetSettings'});};
\ No newline at end of file
index cc39eba..c1745f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x406f=['GetTemplate','name','html','../client','getTemplates','Request'];(function(_0x4064be,_0x1bdc00){var _0x4a28ca=function(_0x22e5a6){while(--_0x22e5a6){_0x4064be['push'](_0x4064be['shift']());}};_0x4a28ca(++_0x1bdc00);}(_0x406f,0x6f));var _0xf406=function(_0x9dfc10,_0x19c2d5){_0x9dfc10=_0x9dfc10-0x0;var _0x4f938a=_0x406f[_0x9dfc10];return _0x4f938a;};'use strict';var client=require(_0xf406('0x0'));exports[_0xf406('0x1')]=function(_0x4a30e5){return function(_0x34d7ff){return client[_0xf406('0x2')](_0xf406('0x3'),{'options':{'raw':!![],'attributes':['id',_0xf406('0x4'),_0xf406('0x5')]},'log':_0xf406('0x3')});};};
\ No newline at end of file
+var _0x74a4=['Request','name','html','GetTemplate','../client','getTemplates'];(function(_0x249e96,_0x3ea39d){var _0x17444c=function(_0x1221d0){while(--_0x1221d0){_0x249e96['push'](_0x249e96['shift']());}};_0x17444c(++_0x3ea39d);}(_0x74a4,0x166));var _0x474a=function(_0x2381a7,_0x12c8fa){_0x2381a7=_0x2381a7-0x0;var _0x1f4098=_0x74a4[_0x2381a7];return _0x1f4098;};'use strict';var client=require(_0x474a('0x0'));exports[_0x474a('0x1')]=function(_0x7b8333){return function(_0xd6e322){return client[_0x474a('0x2')]('GetTemplate',{'options':{'raw':!![],'attributes':['id',_0x474a('0x3'),_0x474a('0x4')]},'log':_0x474a('0x5')});};};
\ No newline at end of file
index 46b6508..a00c193 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a9=['AnyConditions','field','operator','Action','data1','data2','data3','data4','data7','../client','getTriggers','Request','GetTrigger','name','status','Condition','value'];(function(_0x21be3e,_0x4b68fa){var _0xe51680=function(_0x31ba21){while(--_0x31ba21){_0x21be3e['push'](_0x21be3e['shift']());}};_0xe51680(++_0x4b68fa);}(_0x27a9,0xc4));var _0x927a=function(_0x12fb2,_0xec17fa){_0x12fb2=_0x12fb2-0x0;var _0x3dd956=_0x27a9[_0x12fb2];return _0x3dd956;};'use strict';var client=require(_0x927a('0x0'));exports[_0x927a('0x1')]=function(_0x518b5c){return function(_0x2a86ca){return client[_0x927a('0x2')](_0x927a('0x3'),{'options':{'raw':![],'attributes':['id',_0x927a('0x4'),'channel',_0x927a('0x5')],'include':[{'model':_0x927a('0x6'),'as':'AllConditions','attributes':['id','field','operator',_0x927a('0x7')]},{'model':_0x927a('0x6'),'as':_0x927a('0x8'),'attributes':['id',_0x927a('0x9'),_0x927a('0xa'),_0x927a('0x7')]},{'model':_0x927a('0xb'),'as':'Actions','attributes':['id','action',_0x927a('0xc'),_0x927a('0xd'),_0x927a('0xe'),_0x927a('0xf'),'data5','data6',_0x927a('0x10')]}]},'log':_0x927a('0x3')});};};
\ No newline at end of file
+var _0xaf3f=['data4','data5','data6','data7','getTriggers','Request','GetTrigger','name','channel','status','field','operator','value','Condition','AnyConditions','Action','data2','data3'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xaf3f,0x190));var _0xfaf3=function(_0x212757,_0x170792){_0x212757=_0x212757-0x0;var _0x46acc7=_0xaf3f[_0x212757];return _0x46acc7;};'use strict';var client=require('../client');exports[_0xfaf3('0x0')]=function(_0x23d2d2){return function(_0x239cd0){return client[_0xfaf3('0x1')](_0xfaf3('0x2'),{'options':{'raw':![],'attributes':['id',_0xfaf3('0x3'),_0xfaf3('0x4'),_0xfaf3('0x5')],'include':[{'model':'Condition','as':'AllConditions','attributes':['id',_0xfaf3('0x6'),_0xfaf3('0x7'),_0xfaf3('0x8')]},{'model':_0xfaf3('0x9'),'as':_0xfaf3('0xa'),'attributes':['id',_0xfaf3('0x6'),_0xfaf3('0x7'),_0xfaf3('0x8')]},{'model':_0xfaf3('0xb'),'as':'Actions','attributes':['id','action','data1',_0xfaf3('0xc'),_0xfaf3('0xd'),_0xfaf3('0xe'),_0xfaf3('0xf'),_0xfaf3('0x10'),_0xfaf3('0x11')]}]},'log':_0xfaf3('0x2')});};};
\ No newline at end of file
index bf1e10d..add7d10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x756e=['Request','GetTrunk','name','registry','../client','getTrunks'];(function(_0x3fbbe9,_0x2e3107){var _0xa5d90=function(_0x19c9bb){while(--_0x19c9bb){_0x3fbbe9['push'](_0x3fbbe9['shift']());}};_0xa5d90(++_0x2e3107);}(_0x756e,0x94));var _0xe756=function(_0x39a477,_0x1516c0){_0x39a477=_0x39a477-0x0;var _0x4e0a09=_0x756e[_0x39a477];return _0x4e0a09;};'use strict';var client=require(_0xe756('0x0'));exports[_0xe756('0x1')]=function(_0x31ae8f){return function(_0x312fc2){return client[_0xe756('0x2')](_0xe756('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xe756('0x4'),_0xe756('0x5'),'defaultuser']},'log':'GetTrunk'});};};
\ No newline at end of file
+var _0xea63=['GetTrunk','defaultuser','getTrunks','Request'];(function(_0x43cb9e,_0x239aab){var _0x447ed2=function(_0x33958e){while(--_0x33958e){_0x43cb9e['push'](_0x43cb9e['shift']());}};_0x447ed2(++_0x239aab);}(_0xea63,0x1d6));var _0x3ea6=function(_0xa5f0d,_0x5ee027){_0xa5f0d=_0xa5f0d-0x0;var _0x5f16fd=_0xea63[_0xa5f0d];return _0x5f16fd;};'use strict';var client=require('../client');exports[_0x3ea6('0x0')]=function(_0x3ace54){return function(_0x2e97e6){return client[_0x3ea6('0x1')](_0x3ea6('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0x3ea6('0x3')]},'log':_0x3ea6('0x2')});};};
\ No newline at end of file
index e629e10..a0e9d25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['agent','lastPauseAt','interface','../client','getAgents','Request','name','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','phone','mobile','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'lastPauseAt',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'interface']},'log':'getAgents'});};};exports[_0x0a9e('0xc')]=function(){return function(){return client['Request']('GetUser',{'options':{'raw':!![],'where':{'role':_0x0a9e('0xd')},'attributes':['id',_0x0a9e('0x3'),_0x0a9e('0x4'),_0x0a9e('0xe')]},'log':_0x0a9e('0xc')});};};exports[_0x0a9e('0xf')]=function(_0x4a4c56,_0x50dfb2,_0x527cdd){return client['Request'](_0x0a9e('0x10'),{'body':{'type':_0x50dfb2,'uniqueid':_0x527cdd},'options':{'where':{'id':_0x4a4c56['id']}},'log':_0x0a9e('0xf')});};exports[_0x0a9e('0x11')]=function(_0x26d672){return client[_0x0a9e('0x2')](_0x0a9e('0x12'),{'body':{},'options':{'where':{'id':_0x26d672['id']}},'log':'savePause'});};exports[_0x0a9e('0x13')]=function(_0x239b12){return client[_0x0a9e('0x2')](_0x0a9e('0x14'),{'options':{'raw':![],'where':{'role':_0x0a9e('0x15'),'id':_0x239b12},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),'fullname',_0x0a9e('0x6'),'lastLoginAt',_0x0a9e('0x8'),_0x0a9e('0x16'),'voicePause',_0x0a9e('0x17')]},'log':'getAgent'});};
\ No newline at end of file
+var _0x70e0=['getAgents','Request','name','email','accountcode','fullname','lastLoginAt','lastPauseAt','interface','getTelephones','GetUser','telephone','savePause','PauseUser','saveUnpause','getAgent','agent','online','pauseType','../client'];(function(_0x23063e,_0x3be739){var _0x2b4006=function(_0x2e5d8e){while(--_0x2e5d8e){_0x23063e['push'](_0x23063e['shift']());}};_0x2b4006(++_0x3be739);}(_0x70e0,0x17b));var _0x070e=function(_0x13cae1,_0xb663b5){_0x13cae1=_0x13cae1-0x0;var _0x9ea344=_0x70e0[_0x13cae1];return _0x9ea344;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5'),_0x070e('0x6'),'online',_0x070e('0x7'),'pauseType',_0x070e('0x8'),'voicePause','phone','mobile',_0x070e('0x9')]},'log':_0x070e('0x1')});};};exports[_0x070e('0xa')]=function(){return function(){return client[_0x070e('0x2')](_0x070e('0xb'),{'options':{'raw':!![],'where':{'role':_0x070e('0xc')},'attributes':['id',_0x070e('0x3'),'accountcode','internal']},'log':_0x070e('0xa')});};};exports[_0x070e('0xd')]=function(_0x12bb37,_0xb8d819,_0xa927a2){return client[_0x070e('0x2')](_0x070e('0xe'),{'body':{'type':_0xb8d819,'uniqueid':_0xa927a2},'options':{'where':{'id':_0x12bb37['id']}},'log':_0x070e('0xd')});};exports[_0x070e('0xf')]=function(_0x5bf079){return client[_0x070e('0x2')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5bf079['id']}},'log':'savePause'});};exports[_0x070e('0x10')]=function(_0x56c7ba){return client['Request']('ShowUser',{'options':{'raw':![],'where':{'role':_0x070e('0x11'),'id':_0x56c7ba},'attributes':['id',_0x070e('0x3'),'email','accountcode',_0x070e('0x6'),_0x070e('0x12'),_0x070e('0x7'),_0x070e('0x13'),'lastPauseAt','voicePause',_0x070e('0x9')]},'log':_0x070e('0x10')});};
\ No newline at end of file
index 92c1fa1..54e56a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72c9=['UpdateVoiceAgentReport','../client','create','Request','CreateVoiceAgentReport','update'];(function(_0x3df9d1,_0x15ee66){var _0x52b480=function(_0xe0ad5c){while(--_0xe0ad5c){_0x3df9d1['push'](_0x3df9d1['shift']());}};_0x52b480(++_0x15ee66);}(_0x72c9,0xfd));var _0x972c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x72c9[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x972c('0x0'));exports[_0x972c('0x1')]=function(_0x51dbb0){return client[_0x972c('0x2')](_0x972c('0x3'),{'body':_0x51dbb0,'log':'CreateVoiceAgentReport'});};exports[_0x972c('0x4')]=function(_0x5d4b3a,_0x2bf1a,_0x1ba52c){return client[_0x972c('0x2')](_0x972c('0x5'),{'body':_0x5d4b3a,'options':{'where':{'uniqueid':_0x2bf1a,'interface':_0x1ba52c,'agentcomplete':!![]}},'log':_0x972c('0x5')});};
\ No newline at end of file
+var _0x17d6=['CreateVoiceAgentReport','update','create','Request'];(function(_0x34053b,_0x9098d6){var _0x18970d=function(_0x463068){while(--_0x463068){_0x34053b['push'](_0x34053b['shift']());}};_0x18970d(++_0x9098d6);}(_0x17d6,0xe6));var _0x617d=function(_0x309636,_0xcec7ea){_0x309636=_0x309636-0x0;var _0x51ba46=_0x17d6[_0x309636];return _0x51ba46;};'use strict';var client=require('../client');exports[_0x617d('0x0')]=function(_0x4cb27f){return client[_0x617d('0x1')](_0x617d('0x2'),{'body':_0x4cb27f,'log':_0x617d('0x2')});};exports[_0x617d('0x3')]=function(_0x315646,_0x1e6c1c,_0x500261){return client[_0x617d('0x1')]('UpdateVoiceAgentReport',{'body':_0x315646,'options':{'where':{'uniqueid':_0x1e6c1c,'interface':_0x500261,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
index c708439..fda024c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb65=['getVoiceCallReports','GetVoiceCallReport','YYYY-MM-DD\x20HH:mm:ss','endOf','day','disposition','duration','moment','util','create','Request','merge','calleridnum','context','callerid'];(function(_0x14482c,_0x2672cf){var _0x88ccdc=function(_0xc08c7f){while(--_0xc08c7f){_0x14482c['push'](_0x14482c['shift']());}};_0x88ccdc(++_0x2672cf);}(_0xcb65,0x18d));var _0x5cb6=function(_0x4b12ae,_0xf2b3b){_0x4b12ae=_0x4b12ae-0x0;var _0x16957b=_0xcb65[_0x4b12ae];return _0x16957b;};'use strict';var moment=require(_0x5cb6('0x0'));var util=require(_0x5cb6('0x1'));var _=require('lodash');var client=require('../client');exports[_0x5cb6('0x2')]=function(_0x46a041){return client[_0x5cb6('0x3')]('CreateVoiceCallReport',{'body':_[_0x5cb6('0x4')](_0x46a041,{'source':_0x46a041[_0x5cb6('0x5')],'destinationcontext':_0x46a041[_0x5cb6('0x6')],'callerid':_0x46a041[_0x5cb6('0x7')],'amaflags':'DOCUMENTATION'}),'log':'CreateVoiceCallReport'});};exports[_0x5cb6('0x8')]=function(){return function(){return client[_0x5cb6('0x3')](_0x5cb6('0x9'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()['startOf']('day')['format'](_0x5cb6('0xa')),moment()[_0x5cb6('0xb')](_0x5cb6('0xc'))['format']('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':['type',_0x5cb6('0xd'),_0x5cb6('0xe'),'billableseconds']},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
+var _0xe6d9=['moment','util','lodash','create','CreateVoiceCallReport','merge','calleridnum','context','DOCUMENTATION','getVoiceCallReports','Request','GetVoiceCallReport','format','endOf','YYYY-MM-DD\x20HH:mm:ss','duration','billableseconds','GetVoiceCallReports'];(function(_0xeeb852,_0x37287e){var _0x2c434d=function(_0x1f3da1){while(--_0x1f3da1){_0xeeb852['push'](_0xeeb852['shift']());}};_0x2c434d(++_0x37287e);}(_0xe6d9,0x1c2));var _0x9e6d=function(_0x48317f,_0x12895a){_0x48317f=_0x48317f-0x0;var _0x4d1cce=_0xe6d9[_0x48317f];return _0x4d1cce;};'use strict';var moment=require(_0x9e6d('0x0'));var util=require(_0x9e6d('0x1'));var _=require(_0x9e6d('0x2'));var client=require('../client');exports[_0x9e6d('0x3')]=function(_0x830971){return client['Request'](_0x9e6d('0x4'),{'body':_[_0x9e6d('0x5')](_0x830971,{'source':_0x830971[_0x9e6d('0x6')],'destinationcontext':_0x830971[_0x9e6d('0x7')],'callerid':_0x830971['callerid'],'amaflags':_0x9e6d('0x8')}),'log':'CreateVoiceCallReport'});};exports[_0x9e6d('0x9')]=function(){return function(){return client[_0x9e6d('0xa')](_0x9e6d('0xb'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()['startOf']('day')[_0x9e6d('0xc')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x9e6d('0xd')]('day')[_0x9e6d('0xc')](_0x9e6d('0xe'))]}},'attributes':['type','disposition',_0x9e6d('0xf'),_0x9e6d('0x10')]},'log':_0x9e6d('0x11')});};};
\ No newline at end of file
index 6b60506..b9b1b1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x482b=['Request','CreateVoiceDialReport','create'];(function(_0x77add,_0x2016b8){var _0xa1b62d=function(_0x2d3d57){while(--_0x2d3d57){_0x77add['push'](_0x77add['shift']());}};_0xa1b62d(++_0x2016b8);}(_0x482b,0x6e));var _0xb482=function(_0x25ddd6,_0x3785e2){_0x25ddd6=_0x25ddd6-0x0;var _0x49b1b1=_0x482b[_0x25ddd6];return _0x49b1b1;};'use strict';var client=require('../client');exports[_0xb482('0x0')]=function(_0x26b09a){return client[_0xb482('0x1')]('CreateVoiceDialReport',{'body':_0x26b09a,'log':_0xb482('0x2')});};
\ No newline at end of file
+var _0x78af=['../client','CreateVoiceDialReport'];(function(_0x449870,_0x555c4d){var _0x18555a=function(_0x4f7272){while(--_0x4f7272){_0x449870['push'](_0x449870['shift']());}};_0x18555a(++_0x555c4d);}(_0x78af,0x17a));var _0xf78a=function(_0x4a7631,_0x2c85b9){_0x4a7631=_0x4a7631-0x0;var _0x1a5a6f=_0x78af[_0x4a7631];return _0x1a5a6f;};'use strict';var client=require(_0xf78a('0x0'));exports['create']=function(_0x8dda99){return client['Request'](_0xf78a('0x1'),{'body':_0x8dda99,'log':_0xf78a('0x1')});};
\ No newline at end of file
index f9b2b3f..4ebf842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd60=['../client','getVoiceExtensions','Request','GetVoiceExtension','exten','recordingFormat'];(function(_0x38813c,_0x561563){var _0x52183e=function(_0x3fadb2){while(--_0x3fadb2){_0x38813c['push'](_0x38813c['shift']());}};_0x52183e(++_0x561563);}(_0xcd60,0xf0));var _0x0cd6=function(_0xd3b91b,_0xe6d0d8){_0xd3b91b=_0xd3b91b-0x0;var _0xa38119=_0xcd60[_0xd3b91b];return _0xa38119;};'use strict';var client=require(_0x0cd6('0x0'));exports[_0x0cd6('0x1')]=function(){return function(){return client[_0x0cd6('0x2')](_0x0cd6('0x3'),{'options':{'raw':!![],'attributes':['id',_0x0cd6('0x4'),_0x0cd6('0x5')],'where':{'VoiceExtensionId':null}},'log':_0x0cd6('0x1')});};};
\ No newline at end of file
+var _0xc125=['getVoiceExtensions','GetVoiceExtension','exten','recordingFormat'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc125,0x150));var _0x5c12=function(_0xcec345,_0x4ca677){_0xcec345=_0xcec345-0x0;var _0x479800=_0xc125[_0xcec345];return _0x479800;};'use strict';var client=require('../client');exports[_0x5c12('0x0')]=function(){return function(){return client['Request'](_0x5c12('0x1'),{'options':{'raw':!![],'attributes':['id',_0x5c12('0x2'),_0x5c12('0x3')],'where':{'VoiceExtensionId':null}},'log':_0x5c12('0x0')});};};
\ No newline at end of file
index a056a7d..79005a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x183c=['dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPreviewRecallmeReminder','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','getVoiceQueues','../client','Request','name','acw','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','dialCutDigit'];(function(_0x3816c2,_0xb221e1){var _0x144669=function(_0x149c29){while(--_0x149c29){_0x3816c2['push'](_0x3816c2['shift']());}};_0x144669(++_0xb221e1);}(_0x183c,0x9b));var _0xc183=function(_0x1207df,_0x4ecb5b){_0x1207df=_0x1207df-0x0;var _0x305c81=_0x183c[_0x1207df];return _0x305c81;};'use strict';var client=require(_0xc183('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0xc183('0x1')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0xc183('0x2'),_0xc183('0x3'),'acwTimeout',_0xc183('0x4'),_0xc183('0x5'),_0xc183('0x6'),_0xc183('0x7'),_0xc183('0x8'),_0xc183('0x9'),'dialLimitQueue',_0xc183('0xa'),_0xc183('0xb'),_0xc183('0xc'),_0xc183('0xd'),_0xc183('0xe'),_0xc183('0xf'),_0xc183('0x10'),_0xc183('0x11'),_0xc183('0x12'),_0xc183('0x13'),_0xc183('0x14'),_0xc183('0x15'),_0xc183('0x16'),_0xc183('0x17'),_0xc183('0x18'),_0xc183('0x19'),'dialGlobalMaxRetry',_0xc183('0x1a'),_0xc183('0x1b'),'dialPrefix','dialCheckDuplicateType',_0xc183('0x1c'),_0xc183('0x1d'),_0xc183('0x1e'),_0xc183('0x1f'),_0xc183('0x20'),_0xc183('0x21'),_0xc183('0x22'),_0xc183('0x23'),_0xc183('0x24'),_0xc183('0x25'),_0xc183('0x26'),_0xc183('0x27'),_0xc183('0x28'),_0xc183('0x29'),_0xc183('0x2a'),_0xc183('0x2b'),_0xc183('0x2c'),_0xc183('0x5'),'strategy','dialRandomLastDigitCallerIdNumber',_0xc183('0x2d'),_0xc183('0x2e'),_0xc183('0x2f'),_0xc183('0x30'),_0xc183('0x31'),_0xc183('0x32'),_0xc183('0x33'),_0xc183('0x34'),_0xc183('0x35'),_0xc183('0x36'),_0xc183('0x37'),_0xc183('0x38'),_0xc183('0x39'),'dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe',_0xc183('0x3a')],'include':[{'model':_0xc183('0x3b'),'as':'Trunk','attributes':['id',_0xc183('0x2'),_0xc183('0x3c'),_0xc183('0x3d')]},{'model':_0xc183('0x3e'),'as':_0xc183('0x3f'),'attributes':['id','name']},{'model':'Trunk','as':_0xc183('0x40'),'attributes':['id',_0xc183('0x2'),_0xc183('0x3c'),'active']},{'model':'Interval','as':_0xc183('0x41'),'attributes':['id','name'],'include':[{'model':_0xc183('0x41'),'as':'Intervals','attributes':['id','name','interval']}]}]},'log':_0xc183('0x42')});};};
\ No newline at end of file
+var _0x8509=['dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','dialCutDigit','dialNoSuchNumberRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','getVoiceQueues','Request','GetVoiceQueue','name','autopause','monitor_format','type','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8509,0x1c1));var _0x9850=function(_0x1f951b,_0x654997){_0x1f951b=_0x1f951b-0x0;var _0x503af0=_0x8509[_0x1f951b];return _0x503af0;};'use strict';var client=require('../client');exports[_0x9850('0x0')]=function(){return function(){return client[_0x9850('0x1')](_0x9850('0x2'),{'options':{'raw':![],'attributes':['id',_0x9850('0x3'),'acw','acwTimeout',_0x9850('0x4'),_0x9850('0x5'),_0x9850('0x6'),'dialActive',_0x9850('0x7'),_0x9850('0x8'),_0x9850('0x9'),_0x9850('0xa'),_0x9850('0xb'),_0x9850('0xc'),_0x9850('0xd'),_0x9850('0xe'),_0x9850('0xf'),'dialOriginateTimeout',_0x9850('0x10'),_0x9850('0x11'),_0x9850('0x12'),_0x9850('0x13'),_0x9850('0x14'),_0x9850('0x15'),_0x9850('0x16'),_0x9850('0x17'),'dialNoAnswerRetryFrequency',_0x9850('0x18'),_0x9850('0x19'),_0x9850('0x1a'),'dialPrefix',_0x9850('0x1b'),_0x9850('0x1c'),_0x9850('0x1d'),_0x9850('0x1e'),_0x9850('0x1f'),'dialAMDTotalAnalysisTime',_0x9850('0x20'),'dialAMDBetweenWordsSilence',_0x9850('0x21'),_0x9850('0x22'),_0x9850('0x23'),_0x9850('0x24'),_0x9850('0x25'),_0x9850('0x26'),_0x9850('0x27'),_0x9850('0x28'),_0x9850('0x29'),_0x9850('0x2a'),_0x9850('0x5'),'strategy','dialRandomLastDigitCallerIdNumber',_0x9850('0x2b'),'dialNoSuchNumberMaxRetry',_0x9850('0x2c'),'dialDropMaxRetry','dialDropRetryFrequency',_0x9850('0x2d'),'dialAbandonedRetryFrequency',_0x9850('0x2e'),_0x9850('0x2f'),_0x9850('0x30'),_0x9850('0x31'),'mandatoryDisposition','dialPredictiveIntervalMaxThreshold',_0x9850('0x32'),'dialPreviewAutoRecallMe',_0x9850('0x33')],'include':[{'model':_0x9850('0x34'),'as':_0x9850('0x34'),'attributes':['id',_0x9850('0x3'),_0x9850('0x35'),_0x9850('0x36')]},{'model':_0x9850('0x37'),'as':_0x9850('0x38'),'attributes':['id',_0x9850('0x3')]},{'model':_0x9850('0x34'),'as':_0x9850('0x39'),'attributes':['id','name',_0x9850('0x35'),'active']},{'model':'Interval','as':_0x9850('0x3a'),'attributes':['id',_0x9850('0x3')],'include':[{'model':'Interval','as':_0x9850('0x3b'),'attributes':['id',_0x9850('0x3'),'interval']}]}]},'log':_0x9850('0x0')});};};
\ No newline at end of file
index 18e2f9d..f338cbd 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(_0x23f32c,_0x5e10f3){var _0xc67f86=function(_0x51d4d3){while(--_0x51d4d3){_0x23f32c['push'](_0x23f32c['shift']());}};_0xc67f86(++_0x5e10f3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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(_0x4128fa,_0x21e02d){var _0x10ae44=function(_0x368dc4){while(--_0x368dc4){_0x4128fa['push'](_0x4128fa['shift']());}};_0x10ae44(++_0x21e02d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'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 03f429e..b168cc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbab4=['../client','getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0x294e1f,_0x13e987){var _0x580c6e=function(_0x2a3184){while(--_0x2a3184){_0x294e1f['push'](_0x294e1f['shift']());}};_0x580c6e(++_0x13e987);}(_0xbab4,0x148));var _0x4bab=function(_0x3c4e86,_0x55c4b8){_0x3c4e86=_0x3c4e86-0x0;var _0x5c5cd6=_0xbab4[_0x3c4e86];return _0x5c5cd6;};'use strict';var client=require(_0x4bab('0x0'));exports[_0x4bab('0x1')]=function(_0x329920){return function(){return client[_0x4bab('0x2')](_0x4bab('0x3'),{'options':{'where':{'VoiceQueueId':_0x329920,'paused':!![]},'raw':!![]},'log':_0x4bab('0x1')});};};
\ No newline at end of file
+var _0xed30=['../client','getVoiceQueueRtPauses','GetVoiceQueueRtPauses'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xed30,0x138));var _0x0ed3=function(_0x169b0f,_0x2432e6){_0x169b0f=_0x169b0f-0x0;var _0xefbdd1=_0xed30[_0x169b0f];return _0xefbdd1;};'use strict';var client=require(_0x0ed3('0x0'));exports[_0x0ed3('0x1')]=function(_0x96d48a){return function(){return client['Request'](_0x0ed3('0x2'),{'options':{'where':{'VoiceQueueId':_0x96d48a,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
index e0b73ab..213c434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0xffe753,_0x5288c7){var _0x28516c=function(_0x142b9c){while(--_0x142b9c){_0xffe753['push'](_0xffe753['shift']());}};_0x28516c(++_0x5288c7);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x35f172,_0x31cbb1){var _0x747d5d=function(_0x494b2b){while(--_0x494b2b){_0x35f172['push'](_0x35f172['shift']());}};_0x747d5d(++_0x31cbb1);}(_0x7a54,0x106));var _0x47a5=function(_0x5c0685,_0x3a7d06){_0x5c0685=_0x5c0685-0x0;var _0x30ac0c=_0x7a54[_0x5c0685];return _0x30ac0c;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index 19f39fc..20aeff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc672=['secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','blindTransfer','CreateVoiceTransferReport','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transferercontext','transfererexten','transfereecalleridnum','transfereeaccountcode','transfereecontext','transfereelinkedid','isexternal','extension','blind','attendedTransfer','Request','result','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename'];(function(_0x9aada2,_0xd2d349){var _0x196dff=function(_0x5ad061){while(--_0x5ad061){_0x9aada2['push'](_0x9aada2['shift']());}};_0x196dff(++_0xd2d349);}(_0xc672,0x6e));var _0x2c67=function(_0x2179d7,_0x291a0e){_0x2179d7=_0x2179d7-0x0;var _0x575901=_0xc672[_0x2179d7];return _0x575901;};'use strict';var client=require(_0x2c67('0x0'));exports['transfers']={};exports[_0x2c67('0x1')]=function(_0x384044){return client['Request'](_0x2c67('0x2'),{'body':{'result':_0x384044['result'],'transfererchannel':_0x384044['transfererchannel'],'transferercalleridnum':_0x384044[_0x2c67('0x3')],'transferercalleridname':_0x384044[_0x2c67('0x4')],'transfererconnectedlinenum':_0x384044['transfererconnectedlinenum'],'transfererconnectedlinename':_0x384044[_0x2c67('0x5')],'transfereraccountcode':_0x384044['transfereraccountcode'],'transferercontext':_0x384044[_0x2c67('0x6')],'transfererexten':_0x384044[_0x2c67('0x7')],'transfererlinkedid':_0x384044['transfererlinkedid'],'transfereechannel':_0x384044['transfereechannel'],'transfereecalleridnum':_0x384044[_0x2c67('0x8')],'transfereecalleridname':_0x384044['transfereecalleridname'],'transfereeconnectedlinenum':_0x384044['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x384044['transfereeconnectedlinename'],'transfereeaccountcode':_0x384044[_0x2c67('0x9')],'transfereecontext':_0x384044[_0x2c67('0xa')],'transfereeexten':_0x384044['transfereeexten'],'transfereelinkedid':_0x384044[_0x2c67('0xb')],'isexternal':_0x384044[_0x2c67('0xc')],'context':_0x384044['context'],'extension':_0x384044[_0x2c67('0xd')],'type':_0x2c67('0xe')},'log':'CreateVoiceTransferReport'});};exports[_0x2c67('0xf')]=function(_0x9861e2){return client[_0x2c67('0x10')](_0x2c67('0x2'),{'body':{'result':_0x9861e2[_0x2c67('0x11')],'transfererchannel':_0x9861e2[_0x2c67('0x12')],'transferercalleridnum':_0x9861e2[_0x2c67('0x13')],'transferercalleridname':_0x9861e2['origtransferercalleridname'],'transfererconnectedlinenum':_0x9861e2[_0x2c67('0x14')],'transfererconnectedlinename':_0x9861e2[_0x2c67('0x15')],'transfereraccountcode':_0x9861e2['origtransfereraccountcode'],'transferercontext':_0x9861e2['secondtransferercontext'],'transfererexten':_0x9861e2[_0x2c67('0x16')],'transfererlinkedid':_0x9861e2[_0x2c67('0x17')],'transfereechannel':_0x9861e2[_0x2c67('0x18')],'transfereecalleridnum':_0x9861e2[_0x2c67('0x19')],'transfereecalleridname':_0x9861e2[_0x2c67('0x1a')],'transfereeconnectedlinenum':_0x9861e2['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x9861e2[_0x2c67('0x1b')],'transfereeaccountcode':_0x9861e2[_0x2c67('0x1c')],'transfereecontext':_0x9861e2['transfertargetcontext'],'transfereeexten':_0x9861e2['transfertargetexten'],'transfereelinkedid':_0x9861e2[_0x2c67('0x1d')],'isexternal':_0x9861e2[_0x2c67('0xc')],'context':_0x9861e2[_0x2c67('0x1e')],'extension':_0x9861e2[_0x2c67('0x1f')],'type':_0x2c67('0x20')},'log':_0x2c67('0x2')});};
\ No newline at end of file
+var _0x3cd6=['Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeaccountcode','transfereelinkedid','isexternal','context','extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','transfertargetlinkedid','attended','../client','transfers'];(function(_0x3a2855,_0x3495e1){var _0x1fc9cc=function(_0x3265f3){while(--_0x3265f3){_0x3a2855['push'](_0x3a2855['shift']());}};_0x1fc9cc(++_0x3495e1);}(_0x3cd6,0x116));var _0x63cd=function(_0x4783ee,_0x4735d9){_0x4783ee=_0x4783ee-0x0;var _0xff9fbf=_0x3cd6[_0x4783ee];return _0xff9fbf;};'use strict';var client=require(_0x63cd('0x0'));exports[_0x63cd('0x1')]={};exports['blindTransfer']=function(_0x2ffb79){return client[_0x63cd('0x2')](_0x63cd('0x3'),{'body':{'result':_0x2ffb79[_0x63cd('0x4')],'transfererchannel':_0x2ffb79[_0x63cd('0x5')],'transferercalleridnum':_0x2ffb79[_0x63cd('0x6')],'transferercalleridname':_0x2ffb79[_0x63cd('0x7')],'transfererconnectedlinenum':_0x2ffb79[_0x63cd('0x8')],'transfererconnectedlinename':_0x2ffb79[_0x63cd('0x9')],'transfereraccountcode':_0x2ffb79[_0x63cd('0xa')],'transferercontext':_0x2ffb79[_0x63cd('0xb')],'transfererexten':_0x2ffb79[_0x63cd('0xc')],'transfererlinkedid':_0x2ffb79['transfererlinkedid'],'transfereechannel':_0x2ffb79[_0x63cd('0xd')],'transfereecalleridnum':_0x2ffb79[_0x63cd('0xe')],'transfereecalleridname':_0x2ffb79[_0x63cd('0xf')],'transfereeconnectedlinenum':_0x2ffb79[_0x63cd('0x10')],'transfereeconnectedlinename':_0x2ffb79['transfereeconnectedlinename'],'transfereeaccountcode':_0x2ffb79[_0x63cd('0x11')],'transfereecontext':_0x2ffb79['transfereecontext'],'transfereeexten':_0x2ffb79['transfereeexten'],'transfereelinkedid':_0x2ffb79[_0x63cd('0x12')],'isexternal':_0x2ffb79[_0x63cd('0x13')],'context':_0x2ffb79[_0x63cd('0x14')],'extension':_0x2ffb79[_0x63cd('0x15')],'type':_0x63cd('0x16')},'log':'CreateVoiceTransferReport'});};exports[_0x63cd('0x17')]=function(_0x193e17){return client[_0x63cd('0x2')](_0x63cd('0x3'),{'body':{'result':_0x193e17['result'],'transfererchannel':_0x193e17[_0x63cd('0x18')],'transferercalleridnum':_0x193e17[_0x63cd('0x19')],'transferercalleridname':_0x193e17[_0x63cd('0x1a')],'transfererconnectedlinenum':_0x193e17[_0x63cd('0x1b')],'transfererconnectedlinename':_0x193e17[_0x63cd('0x1c')],'transfereraccountcode':_0x193e17[_0x63cd('0x1d')],'transferercontext':_0x193e17[_0x63cd('0x1e')],'transfererexten':_0x193e17[_0x63cd('0x1f')],'transfererlinkedid':_0x193e17[_0x63cd('0x20')],'transfereechannel':_0x193e17['transfertargetchannel'],'transfereecalleridnum':_0x193e17['transfertargetcalleridnum'],'transfereecalleridname':_0x193e17[_0x63cd('0x21')],'transfereeconnectedlinenum':_0x193e17[_0x63cd('0x22')],'transfereeconnectedlinename':_0x193e17[_0x63cd('0x23')],'transfereeaccountcode':_0x193e17['transfertargetaccountcode'],'transfereecontext':_0x193e17[_0x63cd('0x24')],'transfereeexten':_0x193e17[_0x63cd('0x25')],'transfereelinkedid':_0x193e17[_0x63cd('0x26')],'isexternal':_0x193e17[_0x63cd('0x13')],'context':_0x193e17['origtransferercontext'],'extension':_0x193e17['origtransfererexten'],'type':_0x63cd('0x27')},'log':_0x63cd('0x3')});};
\ No newline at end of file
index eb637e1..163b145 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','moment','../../../config/environment','../ami','../model/voiceQueueSummary','listen','name','timers','updateAcw','agents','updateStatusRealtime','voiceStatus','pause','isConnected','error','asterisk','ami\x20disconnected','join','pick','keys','reload','Reload','message','catch','username','command','action','Command','then','voiceQueues','hasOwnProperty','push','length','find','omit','undefined','values','channels','validate','map','uniqueid','channel','format','wav','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','isNil','toLowerCase','mixmonitorid','rec','status','Channel\x20doesn\x27t\x20exist','Action','StopMixMonitor','destinationchannel','stop','filename','queueChannels','type','outbound','includes','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','filter','count','rows','voicequeuechannelhangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','outboundChannels','run','custom:','event','faxAccounts','send'];(function(_0x3ad1a9,_0x1c7d37){var _0x2e6c59=function(_0x29c25c){while(--_0x29c25c){_0x3ad1a9['push'](_0x3ad1a9['shift']());}};_0x2e6c59(++_0x1c7d37);}(_0x7a54,0x106));var _0x47a5=function(_0x304439,_0xbfec4a){_0x304439=_0x304439-0x0;var _0x29f84f=_0x7a54[_0x304439];return _0x29f84f;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var jayson=require(_0x47a5('0x2'));var schema=require('validate');var moment=require(_0x47a5('0x3'));var config=require(_0x47a5('0x4'));var properties=require('../properties');var ami=require(_0x47a5('0x5'));var VoiceQueueSummary=require(_0x47a5('0x6'));exports[_0x47a5('0x7')]=function(_0x3717e1,_0xfdf934,_0x545a97){return new Promise(function(_0x3d5629,_0x59199c){var _0x343372={'QueuePause':function(_0x30e405){return new Promise(function(_0x506eda){var _0x194fb0=util['format']('%s/%s','SIP',_0x30e405[_0x47a5('0x8')]);if(_0x3717e1[_0x47a5('0x9')]&&_0x3717e1['timers'][_0x194fb0]&&_0x3717e1[_0x47a5('0x9')][_0x194fb0]['timer']){_0x3717e1['timers'][_0x194fb0][_0x47a5('0xa')]();}if(_0x3717e1[_0x47a5('0xb')][_0x194fb0]){_0x3717e1[_0x47a5('0xb')][_0x194fb0][_0x47a5('0xc')]({'state':_0x3717e1[_0x47a5('0xb')][_0x194fb0][_0x47a5('0xd')],'statePause':_0x30e405[_0x47a5('0xe')]?!![]:![]});}_0x506eda({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x44bd3e){var _0x221b54=this;return new Promise(function(_0x1cf309,_0x711793){if(ami[_0x47a5('0xf')]()==![]){return _0x711793(_0x221b54[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}_0x44bd3e=_[_0x47a5('0x14')](_0x44bd3e,_[_0x47a5('0x15')](properties[_0x47a5('0x16')]['module']));_0x44bd3e['action']=_0x47a5('0x17');return ami['Action'](_0x44bd3e)['then'](function(_0x423a81){_0x1cf309({'code':0xc8,'message':_0x423a81[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x1ef371){_0x711793(_0x221b54[_0x47a5('0x10')](0x1f5,_0x1ef371[_0x47a5('0x18')]));});});},'Command':function(_0x2763d6){var _0xe3c618=this;return new Promise(function(_0x3aed38,_0x4a9fcb){if(ami[_0x47a5('0xf')]()==![]){return _0x4a9fcb(_0xe3c618[_0x47a5('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x47a5('0x11')][_0x47a5('0x1a')],_0x47a5('0x12')]['join']('\x20')));}_0x2763d6=_[_0x47a5('0x14')](_0x2763d6,_0x47a5('0x1b'));_0x2763d6[_0x47a5('0x1c')]=_0x47a5('0x1d');return ami['Action'](_0x2763d6)[_0x47a5('0x1e')](function(_0x385687){_0x3aed38({'code':0xc8,'message':_0x385687['content']});})[_0x47a5('0x19')](function(_0xc4cd63){_0x4a9fcb(_0xe3c618[_0x47a5('0x10')](0x1f5,_0xc4cd63[_0x47a5('0x18')]));});});},'VoiceQueues':function(){return new Promise(function(_0x3abd6a){var _0x50bf17=[];for(var _0x53078a in _0x3717e1[_0x47a5('0x1f')]){if(_0x3717e1['voiceQueues'][_0x47a5('0x20')](_0x53078a)){var _0x5b6c4e=_0x3717e1[_0x47a5('0x1f')][_0x53078a];var _0x378208=new VoiceQueueSummary(_0x5b6c4e);_0x50bf17[_0x47a5('0x21')](_0x378208);}}_0x3abd6a({'count':_0x50bf17[_0x47a5('0x22')],'rows':_0x50bf17});});},'UpdateVoiceQueue':function(_0x21f296){return new Promise(function(_0x3ba0b7,_0x24b162){var _0x136b14=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x1f')],{'id':parseInt(_0x21f296['id'])});var _0x1127f8=_[_0x47a5('0x24')](_0x21f296,['id']);if(_0x136b14){for(var _0x3ad507 in _0x1127f8){if(typeof _0x1127f8[_0x3ad507]!=='undefined'&&typeof _0x136b14[_0x3ad507]!==_0x47a5('0x25')){_0x136b14[_0x3ad507]=_0x1127f8[_0x3ad507];}}_0x3ba0b7(_0x136b14);}else{_0x24b162();}});},'VoiceChannels':function(){return new Promise(function(_0x51833b){var _0x2ef875=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x27')]);_0x51833b({'count':_0x2ef875['length'],'rows':_0x2ef875});});},'VoiceChannelMixMonitor':function(_0x256650){var _0x625952=this;return new Promise(function(_0x39b50b,_0x1f1c68){if(ami['isConnected']()==![]){return _0x1f1c68(_0x625952['error'](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],'ami\x20disconnected'][_0x47a5('0x13')]('\x20')));}var _0x51544e=schema(properties['voicechannel'])[_0x47a5('0x28')](_0x256650);if(_0x51544e['length']>0x0){return _0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x51544e,'message')['join'](',\x20')));}var _0x274e34=_['find'](_0x3717e1[_0x47a5('0x27')],{'uniqueid':_0x256650[_0x47a5('0x2a')]});if(_0x274e34&&_0x274e34[_0x47a5('0x2b')]){var _0x52749b=util[_0x47a5('0x2c')]('%s.%s',_0x256650['filename']||_0x256650[_0x47a5('0x2a')],_0x256650['format']||_0x47a5('0x2d'));return ami['Action']({'action':_0x47a5('0x2e'),'channel':_0x274e34[_0x47a5('0x2b')],'file':_0x52749b,'options':_0x47a5('0x2f')})[_0x47a5('0x1e')](function(_0x36add5){var _0xed6320=_[_0x47a5('0x23')](_0x274e34[_0x47a5('0x30')],{'filename':_0x47a5('0x31')+_0x52749b['toLowerCase']()});if(_[_0x47a5('0x32')](_0xed6320)){_0x274e34[_0x47a5('0x30')]['push']({'filename':_0x47a5('0x31')+_0x52749b[_0x47a5('0x33')](),'createdAt':moment()[_0x47a5('0x2c')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x36add5[_0x47a5('0x34')],'status':_0x47a5('0x35')});}else{_0xed6320['mixmonitorid']=_0x36add5[_0x47a5('0x34')];_0xed6320[_0x47a5('0x36')]='rec';}_0x39b50b({'code':0xc8,'message':[_0x256650['uniqueid'],'MixMonitor\x20Success',_0x36add5[_0x47a5('0x34')]]['join']('\x20'),'mixmonitorid':_0x36add5[_0x47a5('0x34')]});})[_0x47a5('0x19')](function(_0x301a85){_0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f5,[_0x256650[_0x47a5('0x2a')],_0x301a85[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f5,_0x47a5('0x37')));}});},'VoiceChannelStopMixMonitor':function(_0x280500){var _0x1658e8=this;return new Promise(function(_0x23d6d8,_0x56dbbd){if(ami[_0x47a5('0xf')]()==![]){return _0x56dbbd(_0x1658e8[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],_0x47a5('0x12')]['join']('\x20')));}var _0x47c7a2=schema(properties['voicechannel'])['validate'](_0x280500);if(_0x47c7a2[_0x47a5('0x22')]>0x0){return _0x56dbbd(_0x1658e8['error'](0x1f4,_[_0x47a5('0x29')](_0x47c7a2,_0x47a5('0x18'))[_0x47a5('0x13')](',\x20')));}var _0x494526=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x27')],{'uniqueid':_0x280500['uniqueid']});if(_0x494526){return Promise['resolve']()[_0x47a5('0x1e')](function(){if(_0x494526['channel']){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x39'),'channel':_0x494526[_0x47a5('0x2b')],'mixmonitorid':_0x280500[_0x47a5('0x34')]})[_0x47a5('0x19')](function(){});}})[_0x47a5('0x1e')](function(){if(_0x494526[_0x47a5('0x3a')]){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x39'),'channel':_0x494526[_0x47a5('0x3a')],'mixmonitorid':_0x280500[_0x47a5('0x34')]})[_0x47a5('0x19')](function(){});}})[_0x47a5('0x1e')](function(){var _0x3574d4=_[_0x47a5('0x23')](_0x494526[_0x47a5('0x30')],{'mixmonitorid':_0x280500['mixmonitorid']});if(_0x3574d4){_0x3574d4[_0x47a5('0x36')]=_0x47a5('0x3b');}})['then'](function(){var _0x52b3a8=util[_0x47a5('0x2c')]('%s.%s',_0x280500[_0x47a5('0x3c')]||_0x280500[_0x47a5('0x2a')],_0x280500['format']||'wav');var _0x3d85cc=_['find'](_0x494526[_0x47a5('0x30')],{'filename':_0x47a5('0x31')+_0x52b3a8[_0x47a5('0x33')]()});if(_0x3d85cc){_0x3d85cc[_0x47a5('0x36')]=_0x47a5('0x3b');}})[_0x47a5('0x1e')](function(){_0x23d6d8({'code':0xc8,'message':[_0x280500[_0x47a5('0x2a')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0x47a5('0x19')](function(_0x411230){_0x56dbbd(_0x1658e8[_0x47a5('0x10')](0x1f5,[_0x280500[_0x47a5('0x2a')],_0x411230[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x56dbbd(_0x1658e8['error'](0x1f5,_0x47a5('0x37')));}});},'VoiceQueuesChannels':function(_0x1c9a62){var _0x5f6a=this;return new Promise(function(_0x5c3c75){var _0x12ca40=_['values'](_0x3717e1[_0x47a5('0x3d')]);var _0xe31817={'count':_0x12ca40[_0x47a5('0x22')],'rows':_0x12ca40};if(_0x1c9a62&&_0x1c9a62[_0x47a5('0x3e')]){if(!['inbound',_0x47a5('0x3f')][_0x47a5('0x40')](_0x1c9a62[_0x47a5('0x3e')])){return _0x59199c(_0x5f6a[_0x47a5('0x10')](0x190,_0x47a5('0x41')));}var _0x6a53b3=_[_0x47a5('0x42')](_0x12ca40,function(_0x481089){return _0x481089[_0x47a5('0x3e')]===_0x1c9a62[_0x47a5('0x3e')];});_0xe31817[_0x47a5('0x43')]=_0x6a53b3[_0x47a5('0x22')];_0xe31817[_0x47a5('0x44')]=_0x6a53b3;}_0x5c3c75(_0xe31817);});},'VoiceQueuesChannel':function(_0x1ab0bf){var _0x572233=this;return new Promise(function(_0x1ad6a9,_0x245a15){var _0x1aa581=schema(properties['voicequeuechannel'])[_0x47a5('0x28')](_0x1ab0bf);if(_0x1aa581[_0x47a5('0x22')]>0x0){return _0x245a15(_0x572233[_0x47a5('0x10')](0x1f4,_['map'](_0x1aa581,'message')[_0x47a5('0x13')](',\x20')));}var _0x376e1d=_['find'](_0x3717e1['queueChannels'],{'uniqueid':_0x1ab0bf[_0x47a5('0x2a')]});if(_0x376e1d){_0x1ad6a9(_0x376e1d);}else{return _0x245a15(_0x572233['error'](0x1f5,_0x47a5('0x37')));}});},'VoiceQueuesChannelHangup':function(_0x5d383d){var _0x482de6=this;return new Promise(function(_0x389ed9,_0x46d2d3){if(ami['isConnected']()==![]){return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config['asterisk']['username'],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}var _0x867da0=schema(properties[_0x47a5('0x45')])['validate'](_0x5d383d);if(_0x867da0[_0x47a5('0x22')]>0x0){return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x867da0,'message')[_0x47a5('0x13')](',\x20')));}var _0x4db625=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x3d')],{'uniqueid':_0x5d383d[_0x47a5('0x2a')]});if(_0x4db625&&_0x4db625[_0x47a5('0x2b')]){return ami[_0x47a5('0x38')]({'action':'Hangup','channel':_0x4db625[_0x47a5('0x2b')]})['then'](function(_0x5cbe97){_0x389ed9({'code':0xc8,'message':[_0x5d383d['uniqueid'],_0x5cbe97['message'][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')});})[_0x47a5('0x19')](function(_0x52e3ee){_0x46d2d3(_0x482de6['error'](0x1f5,[_0x5d383d[_0x47a5('0x2a')],_0x52e3ee[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x3474b7){var _0x519e9e=this;return new Promise(function(_0x22c886,_0x274d31){if(ami['isConnected']()==![]){return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')][_0x47a5('0x1a')],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}var _0x35cca8=schema(properties[_0x47a5('0x46')])['validate'](_0x3474b7);if(_0x35cca8[_0x47a5('0x22')]>0x0){return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x35cca8,_0x47a5('0x18'))[_0x47a5('0x13')](',\x20')));}var _0x4bbe14=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x3d')],{'uniqueid':_0x3474b7[_0x47a5('0x2a')]});if(_0x4bbe14&&_0x4bbe14[_0x47a5('0x2b')]){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x47'),'channel':_0x4bbe14[_0x47a5('0x2b')],'exten':_0x3474b7[_0x47a5('0x48')],'context':_0x3474b7[_0x47a5('0x49')]||_0x4bbe14[_0x47a5('0x49')],'priority':0x1})[_0x47a5('0x1e')](function(_0x44fda9){_0x22c886({'code':0xc8,'message':[_0x3474b7[_0x47a5('0x2a')],_0x44fda9[_0x47a5('0x18')][_0x47a5('0x33')]()]['join']('\x20')});})[_0x47a5('0x19')](function(_0x284fb8){_0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f5,[_0x3474b7['uniqueid'],_0x284fb8[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x3ac402){return new Promise(function(_0x522ccf){var _0x2d5ee6=_['values'](_0x3717e1[_0x47a5('0xb')]);if(_0x3ac402&&_0x3ac402['id']){var _0x4cf7c5=_[_0x47a5('0x23')](_0x2d5ee6,function(_0x2f27c3){return _0x2f27c3['id']===_0x3ac402['id'];});_0x522ccf(_0x4cf7c5);}else{_0x522ccf({'count':_0x2d5ee6[_0x47a5('0x22')],'rows':_0x2d5ee6});}});},'Telephones':function(){return new Promise(function(_0x58473b){var _0x4af557=_['values'](_0x3717e1[_0x47a5('0x4a')]);_0x58473b({'count':_0x4af557[_0x47a5('0x22')],'rows':_0x4af557});});},'Trunks':function(){return new Promise(function(_0xe3c0a7){var _0x117510=_['values'](_0x3717e1[_0x47a5('0x4b')]);_0xe3c0a7({'count':_0x117510[_0x47a5('0x22')],'rows':_0x117510});});},'OutboundChannels':function(){return new Promise(function(_0x390bc0){var _0xd5b23f=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x4c')]);_0x390bc0({'count':_0xd5b23f[_0x47a5('0x22')],'rows':_0xd5b23f});});},'Outbound':function(){return new Promise(function(_0x39939a){_0x39939a(_0x3717e1[_0x47a5('0x3f')]);});},'Campaigns':function(){return new Promise(function(_0xc69a68){var _0x2e6fcc=_[_0x47a5('0x26')](_0x3717e1['campaigns']);_0xc69a68({'count':_0x2e6fcc[_0x47a5('0x22')],'rows':_0x2e6fcc});});},'VoiceQueuesPreview':function(_0x4833be){var _0x2ad00a=this;return new Promise(function(_0x2ac30f,_0x281e5f){_0xfdf934[_0x47a5('0x4d')](_0x4833be['id'])[_0x47a5('0x1e')](function(_0xa9c853){_0x2ac30f({'code':0xc8,'message':_0xa9c853[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x11c1db){_0x281e5f(_0x2ad00a[_0x47a5('0x10')](0x1f4,_0x11c1db[_0x47a5('0x18')]));});});},'EventManager':function(_0x1f07ac){var _0x8f0035=this;return new Promise(function(_0x2d434c,_0x441d64){if(!_0x1f07ac['event']){return _0x441d64(_0x8f0035['error'](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0x47a5('0x4e')+_0x1f07ac[_0x47a5('0x4f')],_0x1f07ac['message']);_0x2d434c({'code':0xc8,'message':_0x1f07ac});});},'FaxAccounts':function(){return new Promise(function(_0x732e00){var _0x44dda2=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x50')]);_0x732e00({'count':_0x44dda2[_0x47a5('0x22')],'rows':_0x44dda2});});},'SendFax':function(_0x930d25){var _0x218dfa=this;return new Promise(function(_0x1c7302,_0x2e9a96){_0x545a97[_0x47a5('0x51')](_0x930d25)[_0x47a5('0x1e')](function(_0x5e5f16){_0x1c7302({'code':0xc8,'message':_0x5e5f16[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x420671){_0x2e9a96(_0x218dfa['error'](0x1f4,_0x420671[_0x47a5('0x18')]));});});},'CheckAfterSend':function(_0x32f393){var _0x17b61d=this;return new Promise(function(_0x5d41d8,_0x19dc8c){_0x545a97['checkAfterSend'](_0x32f393)['then'](function(_0x356e16){_0x5d41d8({'code':0xc8,'message':_0x356e16[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x27333e){_0x19dc8c(_0x17b61d[_0x47a5('0x10')](0x1f4,_0x27333e[_0x47a5('0x18')]));});});}};var _0x479a82=jayson['server'](_0x343372)[_0x47a5('0x52')]();_0x479a82['on']('error',function(_0x24dbee){return _0x59199c(_0x24dbee);});_0x479a82[_0x47a5('0x7')](0x232a,_0x47a5('0x53'),function(){console[_0x47a5('0x54')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x3d5629(_0x47a5('0x55')+0x232a);});});};
\ No newline at end of file
+var _0x7a54=['http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','moment','../../../config/environment','../ami','../model/voiceQueueSummary','listen','name','timers','updateAcw','agents','updateStatusRealtime','voiceStatus','pause','isConnected','error','asterisk','ami\x20disconnected','join','pick','keys','reload','Reload','message','catch','username','command','action','Command','then','voiceQueues','hasOwnProperty','push','length','find','omit','undefined','values','channels','validate','map','uniqueid','channel','format','wav','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','isNil','toLowerCase','mixmonitorid','rec','status','Channel\x20doesn\x27t\x20exist','Action','StopMixMonitor','destinationchannel','stop','filename','queueChannels','type','outbound','includes','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','filter','count','rows','voicequeuechannelhangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','outboundChannels','run','custom:','event','faxAccounts','send'];(function(_0x1ab0bf,_0x132cd){var _0x25736b=function(_0x213174){while(--_0x213174){_0x1ab0bf['push'](_0x1ab0bf['shift']());}};_0x25736b(++_0x132cd);}(_0x7a54,0x106));var _0x47a5=function(_0x25ed94,_0x3cdc87){_0x25ed94=_0x25ed94-0x0;var _0x2061d5=_0x7a54[_0x25ed94];return _0x2061d5;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var jayson=require(_0x47a5('0x2'));var schema=require('validate');var moment=require(_0x47a5('0x3'));var config=require(_0x47a5('0x4'));var properties=require('../properties');var ami=require(_0x47a5('0x5'));var VoiceQueueSummary=require(_0x47a5('0x6'));exports[_0x47a5('0x7')]=function(_0x3717e1,_0xfdf934,_0x545a97){return new Promise(function(_0x3d5629,_0x59199c){var _0x343372={'QueuePause':function(_0x30e405){return new Promise(function(_0x506eda){var _0x194fb0=util['format']('%s/%s','SIP',_0x30e405[_0x47a5('0x8')]);if(_0x3717e1[_0x47a5('0x9')]&&_0x3717e1['timers'][_0x194fb0]&&_0x3717e1[_0x47a5('0x9')][_0x194fb0]['timer']){_0x3717e1['timers'][_0x194fb0][_0x47a5('0xa')]();}if(_0x3717e1[_0x47a5('0xb')][_0x194fb0]){_0x3717e1[_0x47a5('0xb')][_0x194fb0][_0x47a5('0xc')]({'state':_0x3717e1[_0x47a5('0xb')][_0x194fb0][_0x47a5('0xd')],'statePause':_0x30e405[_0x47a5('0xe')]?!![]:![]});}_0x506eda({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x44bd3e){var _0x221b54=this;return new Promise(function(_0x1cf309,_0x711793){if(ami[_0x47a5('0xf')]()==![]){return _0x711793(_0x221b54[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}_0x44bd3e=_[_0x47a5('0x14')](_0x44bd3e,_[_0x47a5('0x15')](properties[_0x47a5('0x16')]['module']));_0x44bd3e['action']=_0x47a5('0x17');return ami['Action'](_0x44bd3e)['then'](function(_0x423a81){_0x1cf309({'code':0xc8,'message':_0x423a81[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x1ef371){_0x711793(_0x221b54[_0x47a5('0x10')](0x1f5,_0x1ef371[_0x47a5('0x18')]));});});},'Command':function(_0x2763d6){var _0xe3c618=this;return new Promise(function(_0x3aed38,_0x4a9fcb){if(ami[_0x47a5('0xf')]()==![]){return _0x4a9fcb(_0xe3c618[_0x47a5('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x47a5('0x11')][_0x47a5('0x1a')],_0x47a5('0x12')]['join']('\x20')));}_0x2763d6=_[_0x47a5('0x14')](_0x2763d6,_0x47a5('0x1b'));_0x2763d6[_0x47a5('0x1c')]=_0x47a5('0x1d');return ami['Action'](_0x2763d6)[_0x47a5('0x1e')](function(_0x385687){_0x3aed38({'code':0xc8,'message':_0x385687['content']});})[_0x47a5('0x19')](function(_0xc4cd63){_0x4a9fcb(_0xe3c618[_0x47a5('0x10')](0x1f5,_0xc4cd63[_0x47a5('0x18')]));});});},'VoiceQueues':function(){return new Promise(function(_0x3abd6a){var _0x50bf17=[];for(var _0x53078a in _0x3717e1[_0x47a5('0x1f')]){if(_0x3717e1['voiceQueues'][_0x47a5('0x20')](_0x53078a)){var _0x5b6c4e=_0x3717e1[_0x47a5('0x1f')][_0x53078a];var _0x378208=new VoiceQueueSummary(_0x5b6c4e);_0x50bf17[_0x47a5('0x21')](_0x378208);}}_0x3abd6a({'count':_0x50bf17[_0x47a5('0x22')],'rows':_0x50bf17});});},'UpdateVoiceQueue':function(_0x21f296){return new Promise(function(_0x3ba0b7,_0x24b162){var _0x136b14=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x1f')],{'id':parseInt(_0x21f296['id'])});var _0x1127f8=_[_0x47a5('0x24')](_0x21f296,['id']);if(_0x136b14){for(var _0x3ad507 in _0x1127f8){if(typeof _0x1127f8[_0x3ad507]!=='undefined'&&typeof _0x136b14[_0x3ad507]!==_0x47a5('0x25')){_0x136b14[_0x3ad507]=_0x1127f8[_0x3ad507];}}_0x3ba0b7(_0x136b14);}else{_0x24b162();}});},'VoiceChannels':function(){return new Promise(function(_0x51833b){var _0x2ef875=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x27')]);_0x51833b({'count':_0x2ef875['length'],'rows':_0x2ef875});});},'VoiceChannelMixMonitor':function(_0x256650){var _0x625952=this;return new Promise(function(_0x39b50b,_0x1f1c68){if(ami['isConnected']()==![]){return _0x1f1c68(_0x625952['error'](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],'ami\x20disconnected'][_0x47a5('0x13')]('\x20')));}var _0x51544e=schema(properties['voicechannel'])[_0x47a5('0x28')](_0x256650);if(_0x51544e['length']>0x0){return _0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x51544e,'message')['join'](',\x20')));}var _0x274e34=_['find'](_0x3717e1[_0x47a5('0x27')],{'uniqueid':_0x256650[_0x47a5('0x2a')]});if(_0x274e34&&_0x274e34[_0x47a5('0x2b')]){var _0x52749b=util[_0x47a5('0x2c')]('%s.%s',_0x256650['filename']||_0x256650[_0x47a5('0x2a')],_0x256650['format']||_0x47a5('0x2d'));return ami['Action']({'action':_0x47a5('0x2e'),'channel':_0x274e34[_0x47a5('0x2b')],'file':_0x52749b,'options':_0x47a5('0x2f')})[_0x47a5('0x1e')](function(_0x36add5){var _0xed6320=_[_0x47a5('0x23')](_0x274e34[_0x47a5('0x30')],{'filename':_0x47a5('0x31')+_0x52749b['toLowerCase']()});if(_[_0x47a5('0x32')](_0xed6320)){_0x274e34[_0x47a5('0x30')]['push']({'filename':_0x47a5('0x31')+_0x52749b[_0x47a5('0x33')](),'createdAt':moment()[_0x47a5('0x2c')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x36add5[_0x47a5('0x34')],'status':_0x47a5('0x35')});}else{_0xed6320['mixmonitorid']=_0x36add5[_0x47a5('0x34')];_0xed6320[_0x47a5('0x36')]='rec';}_0x39b50b({'code':0xc8,'message':[_0x256650['uniqueid'],'MixMonitor\x20Success',_0x36add5[_0x47a5('0x34')]]['join']('\x20'),'mixmonitorid':_0x36add5[_0x47a5('0x34')]});})[_0x47a5('0x19')](function(_0x301a85){_0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f5,[_0x256650[_0x47a5('0x2a')],_0x301a85[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f5,_0x47a5('0x37')));}});},'VoiceChannelStopMixMonitor':function(_0x280500){var _0x1658e8=this;return new Promise(function(_0x23d6d8,_0x56dbbd){if(ami[_0x47a5('0xf')]()==![]){return _0x56dbbd(_0x1658e8[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],_0x47a5('0x12')]['join']('\x20')));}var _0x47c7a2=schema(properties['voicechannel'])['validate'](_0x280500);if(_0x47c7a2[_0x47a5('0x22')]>0x0){return _0x56dbbd(_0x1658e8['error'](0x1f4,_[_0x47a5('0x29')](_0x47c7a2,_0x47a5('0x18'))[_0x47a5('0x13')](',\x20')));}var _0x494526=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x27')],{'uniqueid':_0x280500['uniqueid']});if(_0x494526){return Promise['resolve']()[_0x47a5('0x1e')](function(){if(_0x494526['channel']){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x39'),'channel':_0x494526[_0x47a5('0x2b')],'mixmonitorid':_0x280500[_0x47a5('0x34')]})[_0x47a5('0x19')](function(){});}})[_0x47a5('0x1e')](function(){if(_0x494526[_0x47a5('0x3a')]){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x39'),'channel':_0x494526[_0x47a5('0x3a')],'mixmonitorid':_0x280500[_0x47a5('0x34')]})[_0x47a5('0x19')](function(){});}})[_0x47a5('0x1e')](function(){var _0x3574d4=_[_0x47a5('0x23')](_0x494526[_0x47a5('0x30')],{'mixmonitorid':_0x280500['mixmonitorid']});if(_0x3574d4){_0x3574d4[_0x47a5('0x36')]=_0x47a5('0x3b');}})['then'](function(){var _0x52b3a8=util[_0x47a5('0x2c')]('%s.%s',_0x280500[_0x47a5('0x3c')]||_0x280500[_0x47a5('0x2a')],_0x280500['format']||'wav');var _0x3d85cc=_['find'](_0x494526[_0x47a5('0x30')],{'filename':_0x47a5('0x31')+_0x52b3a8[_0x47a5('0x33')]()});if(_0x3d85cc){_0x3d85cc[_0x47a5('0x36')]=_0x47a5('0x3b');}})[_0x47a5('0x1e')](function(){_0x23d6d8({'code':0xc8,'message':[_0x280500[_0x47a5('0x2a')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0x47a5('0x19')](function(_0x411230){_0x56dbbd(_0x1658e8[_0x47a5('0x10')](0x1f5,[_0x280500[_0x47a5('0x2a')],_0x411230[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x56dbbd(_0x1658e8['error'](0x1f5,_0x47a5('0x37')));}});},'VoiceQueuesChannels':function(_0x1c9a62){var _0x5f6a=this;return new Promise(function(_0x5c3c75){var _0x12ca40=_['values'](_0x3717e1[_0x47a5('0x3d')]);var _0xe31817={'count':_0x12ca40[_0x47a5('0x22')],'rows':_0x12ca40};if(_0x1c9a62&&_0x1c9a62[_0x47a5('0x3e')]){if(!['inbound',_0x47a5('0x3f')][_0x47a5('0x40')](_0x1c9a62[_0x47a5('0x3e')])){return _0x59199c(_0x5f6a[_0x47a5('0x10')](0x190,_0x47a5('0x41')));}var _0x6a53b3=_[_0x47a5('0x42')](_0x12ca40,function(_0x481089){return _0x481089[_0x47a5('0x3e')]===_0x1c9a62[_0x47a5('0x3e')];});_0xe31817[_0x47a5('0x43')]=_0x6a53b3[_0x47a5('0x22')];_0xe31817[_0x47a5('0x44')]=_0x6a53b3;}_0x5c3c75(_0xe31817);});},'VoiceQueuesChannel':function(_0x1ab0bf){var _0x572233=this;return new Promise(function(_0x1ad6a9,_0x245a15){var _0x1aa581=schema(properties['voicequeuechannel'])[_0x47a5('0x28')](_0x1ab0bf);if(_0x1aa581[_0x47a5('0x22')]>0x0){return _0x245a15(_0x572233[_0x47a5('0x10')](0x1f4,_['map'](_0x1aa581,'message')[_0x47a5('0x13')](',\x20')));}var _0x376e1d=_['find'](_0x3717e1['queueChannels'],{'uniqueid':_0x1ab0bf[_0x47a5('0x2a')]});if(_0x376e1d){_0x1ad6a9(_0x376e1d);}else{return _0x245a15(_0x572233['error'](0x1f5,_0x47a5('0x37')));}});},'VoiceQueuesChannelHangup':function(_0x5d383d){var _0x482de6=this;return new Promise(function(_0x389ed9,_0x46d2d3){if(ami['isConnected']()==![]){return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config['asterisk']['username'],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}var _0x867da0=schema(properties[_0x47a5('0x45')])['validate'](_0x5d383d);if(_0x867da0[_0x47a5('0x22')]>0x0){return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x867da0,'message')[_0x47a5('0x13')](',\x20')));}var _0x4db625=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x3d')],{'uniqueid':_0x5d383d[_0x47a5('0x2a')]});if(_0x4db625&&_0x4db625[_0x47a5('0x2b')]){return ami[_0x47a5('0x38')]({'action':'Hangup','channel':_0x4db625[_0x47a5('0x2b')]})['then'](function(_0x5cbe97){_0x389ed9({'code':0xc8,'message':[_0x5d383d['uniqueid'],_0x5cbe97['message'][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')});})[_0x47a5('0x19')](function(_0x52e3ee){_0x46d2d3(_0x482de6['error'](0x1f5,[_0x5d383d[_0x47a5('0x2a')],_0x52e3ee[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x3474b7){var _0x519e9e=this;return new Promise(function(_0x22c886,_0x274d31){if(ami['isConnected']()==![]){return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')][_0x47a5('0x1a')],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}var _0x35cca8=schema(properties[_0x47a5('0x46')])['validate'](_0x3474b7);if(_0x35cca8[_0x47a5('0x22')]>0x0){return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x35cca8,_0x47a5('0x18'))[_0x47a5('0x13')](',\x20')));}var _0x4bbe14=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x3d')],{'uniqueid':_0x3474b7[_0x47a5('0x2a')]});if(_0x4bbe14&&_0x4bbe14[_0x47a5('0x2b')]){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x47'),'channel':_0x4bbe14[_0x47a5('0x2b')],'exten':_0x3474b7[_0x47a5('0x48')],'context':_0x3474b7[_0x47a5('0x49')]||_0x4bbe14[_0x47a5('0x49')],'priority':0x1})[_0x47a5('0x1e')](function(_0x44fda9){_0x22c886({'code':0xc8,'message':[_0x3474b7[_0x47a5('0x2a')],_0x44fda9[_0x47a5('0x18')][_0x47a5('0x33')]()]['join']('\x20')});})[_0x47a5('0x19')](function(_0x284fb8){_0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f5,[_0x3474b7['uniqueid'],_0x284fb8[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x3ac402){return new Promise(function(_0x522ccf){var _0x2d5ee6=_['values'](_0x3717e1[_0x47a5('0xb')]);if(_0x3ac402&&_0x3ac402['id']){var _0x4cf7c5=_[_0x47a5('0x23')](_0x2d5ee6,function(_0x2f27c3){return _0x2f27c3['id']===_0x3ac402['id'];});_0x522ccf(_0x4cf7c5);}else{_0x522ccf({'count':_0x2d5ee6[_0x47a5('0x22')],'rows':_0x2d5ee6});}});},'Telephones':function(){return new Promise(function(_0x58473b){var _0x4af557=_['values'](_0x3717e1[_0x47a5('0x4a')]);_0x58473b({'count':_0x4af557[_0x47a5('0x22')],'rows':_0x4af557});});},'Trunks':function(){return new Promise(function(_0xe3c0a7){var _0x117510=_['values'](_0x3717e1[_0x47a5('0x4b')]);_0xe3c0a7({'count':_0x117510[_0x47a5('0x22')],'rows':_0x117510});});},'OutboundChannels':function(){return new Promise(function(_0x390bc0){var _0xd5b23f=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x4c')]);_0x390bc0({'count':_0xd5b23f[_0x47a5('0x22')],'rows':_0xd5b23f});});},'Outbound':function(){return new Promise(function(_0x39939a){_0x39939a(_0x3717e1[_0x47a5('0x3f')]);});},'Campaigns':function(){return new Promise(function(_0xc69a68){var _0x2e6fcc=_[_0x47a5('0x26')](_0x3717e1['campaigns']);_0xc69a68({'count':_0x2e6fcc[_0x47a5('0x22')],'rows':_0x2e6fcc});});},'VoiceQueuesPreview':function(_0x4833be){var _0x2ad00a=this;return new Promise(function(_0x2ac30f,_0x281e5f){_0xfdf934[_0x47a5('0x4d')](_0x4833be['id'])[_0x47a5('0x1e')](function(_0xa9c853){_0x2ac30f({'code':0xc8,'message':_0xa9c853[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x11c1db){_0x281e5f(_0x2ad00a[_0x47a5('0x10')](0x1f4,_0x11c1db[_0x47a5('0x18')]));});});},'EventManager':function(_0x1f07ac){var _0x8f0035=this;return new Promise(function(_0x2d434c,_0x441d64){if(!_0x1f07ac['event']){return _0x441d64(_0x8f0035['error'](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0x47a5('0x4e')+_0x1f07ac[_0x47a5('0x4f')],_0x1f07ac['message']);_0x2d434c({'code':0xc8,'message':_0x1f07ac});});},'FaxAccounts':function(){return new Promise(function(_0x732e00){var _0x44dda2=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x50')]);_0x732e00({'count':_0x44dda2[_0x47a5('0x22')],'rows':_0x44dda2});});},'SendFax':function(_0x930d25){var _0x218dfa=this;return new Promise(function(_0x1c7302,_0x2e9a96){_0x545a97[_0x47a5('0x51')](_0x930d25)[_0x47a5('0x1e')](function(_0x5e5f16){_0x1c7302({'code':0xc8,'message':_0x5e5f16[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x420671){_0x2e9a96(_0x218dfa['error'](0x1f4,_0x420671[_0x47a5('0x18')]));});});},'CheckAfterSend':function(_0x32f393){var _0x17b61d=this;return new Promise(function(_0x5d41d8,_0x19dc8c){_0x545a97['checkAfterSend'](_0x32f393)['then'](function(_0x356e16){_0x5d41d8({'code':0xc8,'message':_0x356e16[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x27333e){_0x19dc8c(_0x17b61d[_0x47a5('0x10')](0x1f4,_0x27333e[_0x47a5('0x18')]));});});}};var _0x479a82=jayson['server'](_0x343372)[_0x47a5('0x52')]();_0x479a82['on']('error',function(_0x24dbee){return _0x59199c(_0x24dbee);});_0x479a82[_0x47a5('0x7')](0x232a,_0x47a5('0x53'),function(){console[_0x47a5('0x54')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x3d5629(_0x47a5('0x55')+0x232a);});});};
\ No newline at end of file
index e30315d..c4a4bc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabc8=['data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','calleridname','<unknown>','Unknown','destcalleridname','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','format','trigger:%s','action','toLowerCase','lodash','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','defaults','redis','localhost','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','data5','data3','split','phone','map','routeId','calleridnum','destcalleridnum','firstName','mobile','fax','ListId','scheduledAt','updatedAt','union','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found'];(function(_0x5dafbf,_0x217b99){var _0x158a49=function(_0x3abfa3){while(--_0x3abfa3){_0x5dafbf['push'](_0x5dafbf['shift']());}};_0x158a49(++_0x217b99);}(_0xabc8,0x7a));var _0x8abc=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0xabc8[_0x10004e];return _0x5af990;};'use strict';var _=require(_0x8abc('0x0'));var BPromise=require('bluebird');var Redis=require('ioredis');var util=require(_0x8abc('0x1'));var config=require(_0x8abc('0x2'));var logger=require(_0x8abc('0x3'))(_0x8abc('0x4'));var cmContactRpc=require(_0x8abc('0x5'));config['redis']=_[_0x8abc('0x6')](config[_0x8abc('0x7')],{'host':_0x8abc('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x36cb5c,_0x314245,_0x3eeea9,_0x42b1f2,_0x30fb10){logger[_0x8abc('0x9')](_0x8abc('0xa'),_0x36cb5c,_0x314245['id'],_0x3eeea9,_0x42b1f2,JSON[_0x8abc('0xb')](_0x30fb10));io['to'](_0x3eeea9)[_0x8abc('0xc')](_0x42b1f2,_0x30fb10);}exports[_0x8abc('0xd')]=function(_0x7c3a8d,_0x4db109,_0x306073,_0xb23a91){var _0x52a0bb,_0x34bdc4;var _0x3f0b82={};var _0x20a0e8;var _0x29b936=Number(_0x306073[_0x8abc('0xe')]);var _0x5cdc9a=_0x306073[_0x8abc('0xf')]?Boolean(Number(_0x306073[_0x8abc('0xf')])):![];var _0x3d719a;var _0x53e5d7=![];if(!_['isNil'](_0x306073['data5'])){if(_0x306073[_0x8abc('0x10')]=='1')_0x53e5d7=!![];}if(!_0x53e5d7){if(_0xb23a91['xmd-contactid']){_0x3f0b82['id']=_0xb23a91['xmd-contactid'];}}if(!_0x3f0b82['id']){_0x3f0b82['ListId']=_0x29b936;_0x3d719a=_0x306073['data3']&&_0x306073[_0x8abc('0x11')]!=='0'?_0x306073[_0x8abc('0x11')][_0x8abc('0x12')](','):[_0x8abc('0x13')];_0x3f0b82['$or']=_[_0x8abc('0x14')](_0x3d719a,function(_0x279bee){var _0x4ea9ae={};_0x4ea9ae[_0x279bee]=_0xb23a91[_0x8abc('0x15')]?_0xb23a91['destcalleridnum']:_0xb23a91[_0x8abc('0x16')];return _0x4ea9ae;});_0x20a0e8=_0xb23a91[_0x8abc('0x15')]?_0xb23a91[_0x8abc('0x17')]:_0xb23a91[_0x8abc('0x16')];}var _0x3f5e5a=['id',_0x8abc('0x18'),'lastName',_0x8abc('0x13'),_0x8abc('0x19'),_0x8abc('0x1a'),_0x8abc('0x1b'),'createdAt',_0x8abc('0x1c'),_0x8abc('0x1d')];var _0x1068de=_[_0x8abc('0x1e')](_0x3f5e5a,_0x3d719a);BPromise[_0x8abc('0x1f')]()[_0x8abc('0x20')](cmContactRpc[_0x8abc('0x21')]({'attributes':_0x1068de,'where':_0x3f0b82,'phone':_0x20a0e8}))[_0x8abc('0x20')](function(_0x49dff3){_0x34bdc4=_0x49dff3;if(!_[_0x8abc('0x22')](_0x34bdc4)){if(_0x34bdc4[_0x8abc('0x23')]===0x1){_0x52a0bb=_0x34bdc4[0x0];logger[_0x8abc('0x9')](_0x8abc('0x24'),_0xb23a91[_0x8abc('0x25')],_0x4db109['id'],_0x52a0bb['id']);}else{logger['info']('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0xb23a91['uniqueid'],_0x4db109['id'],_['map'](_0x34bdc4,'id')[_0x8abc('0x26')](','));}return;}else{logger[_0x8abc('0x9')](_0x8abc('0x27'),_0xb23a91[_0x8abc('0x25')],_0x4db109['id']);var _0x5d5811={'ListId':_0x29b936};var _0x4a6b69=_0x306073['data4']&&_0x306073[_0x8abc('0x28')]!=='0'?_0x306073[_0x8abc('0x28')]:_0x8abc('0x13');if(_0x5cdc9a){logger[_0x8abc('0x9')](_0x8abc('0x29'),_0xb23a91['uniqueid'],_0x4db109['id']);_0x5d5811[_0x4a6b69]=_[_0x8abc('0x2a')](_0xb23a91['routeId'])?_0xb23a91['calleridnum']:_0xb23a91[_0x8abc('0x17')];if(_['isNil'](_0xb23a91['routeId'])){_0x5d5811[_0x8abc('0x18')]=_0xb23a91[_0x8abc('0x2b')]&&_0xb23a91[_0x8abc('0x2b')]!==_0x8abc('0x2c')?_0xb23a91['calleridname']:_0x8abc('0x2d');}else{_0x5d5811[_0x8abc('0x18')]=_0xb23a91[_0x8abc('0x2e')]&&_0xb23a91[_0x8abc('0x2e')]!=='<unknown>'?_0xb23a91[_0x8abc('0x2e')]:'Unknown';}return BPromise['resolve']()[_0x8abc('0x20')](cmContactRpc[_0x8abc('0x2f')](_0x5d5811))[_0x8abc('0x20')](function(_0x363a21){_0x52a0bb=_0x363a21;_0x34bdc4[_0x8abc('0x30')](_0x363a21);if(_0x52a0bb){logger['info'](_0x8abc('0x31'),_0xb23a91[_0x8abc('0x25')],_0x4db109['id'],_0x52a0bb['id']);}return;});}else{logger[_0x8abc('0x9')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0xb23a91['uniqueid'],_0x4db109['id']);_0x5d5811[_0x4a6b69]=_[_0x8abc('0x2a')](_0xb23a91[_0x8abc('0x15')])?_0xb23a91[_0x8abc('0x16')]:_0xb23a91['destcalleridnum'];if(_['isNil'](_0xb23a91[_0x8abc('0x15')])){_0x5d5811[_0x8abc('0x18')]=_0xb23a91['calleridname']&&_0xb23a91[_0x8abc('0x2b')]!==_0x8abc('0x2c')?_0xb23a91['calleridname']:_0x8abc('0x2d');}else{_0x5d5811[_0x8abc('0x18')]=_0xb23a91[_0x8abc('0x2e')]&&_0xb23a91[_0x8abc('0x2e')]!=='<unknown>'?_0xb23a91[_0x8abc('0x2e')]:'Unknown';}_0x52a0bb=_0x5d5811;_0x34bdc4[_0x8abc('0x30')](_0x5d5811);return;}}})['then'](function(){if(_0x7c3a8d){emit(_0xb23a91[_0x8abc('0x25')],_0x4db109,util[_0x8abc('0x32')]('user:%s',_0x7c3a8d['name']),util[_0x8abc('0x32')](_0x8abc('0x33'),_0x306073[_0x8abc('0x34')][_0x8abc('0x35')]()),{'evt':_['merge'](_0xb23a91,{'autoCreate':_0x5cdc9a}),'contact':_0x52a0bb===undefined?{}:_0x52a0bb,'contacts':_0x34bdc4['length']===0x0?undefined:_0x34bdc4});}});};
\ No newline at end of file
+var _0xb5ea=['[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','Unknown','destcalleridname','resolve','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','trigger:%s','action','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','$or','destcalleridnum','calleridnum','routeId','firstName','mobile','fax','createdAt','updatedAt','getContacts','then','info','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid'];(function(_0x16bd44,_0x3c91ba){var _0x368a61=function(_0x1c68ab){while(--_0x1c68ab){_0x16bd44['push'](_0x16bd44['shift']());}};_0x368a61(++_0x3c91ba);}(_0xb5ea,0x1aa));var _0xab5e=function(_0x448aff,_0x57adc8){_0x448aff=_0x448aff-0x0;var _0x2b4e39=_0xb5ea[_0x448aff];return _0x2b4e39;};'use strict';var _=require(_0xab5e('0x0'));var BPromise=require(_0xab5e('0x1'));var Redis=require(_0xab5e('0x2'));var util=require(_0xab5e('0x3'));var config=require(_0xab5e('0x4'));var logger=require(_0xab5e('0x5'))(_0xab5e('0x6'));var cmContactRpc=require(_0xab5e('0x7'));config[_0xab5e('0x8')]=_[_0xab5e('0x9')](config[_0xab5e('0x8')],{'host':_0xab5e('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xab5e('0x8')]));function emit(_0x388b21,_0xf71a22,_0xbc521b,_0x5d5c41,_0x26910d){logger['info'](_0xab5e('0xb'),_0x388b21,_0xf71a22['id'],_0xbc521b,_0x5d5c41,JSON[_0xab5e('0xc')](_0x26910d));io['to'](_0xbc521b)[_0xab5e('0xd')](_0x5d5c41,_0x26910d);}exports[_0xab5e('0xe')]=function(_0x2f447d,_0x1380c6,_0x28d462,_0x5800ec){var _0x58ccf6,_0x4f08b2;var _0x3bbefd={};var _0x559fde;var _0x2d771d=Number(_0x28d462[_0xab5e('0xf')]);var _0x3beab4=_0x28d462[_0xab5e('0x10')]?Boolean(Number(_0x28d462[_0xab5e('0x10')])):![];var _0x95a013;var _0x15e4aa=![];if(!_[_0xab5e('0x11')](_0x28d462[_0xab5e('0x12')])){if(_0x28d462[_0xab5e('0x12')]=='1')_0x15e4aa=!![];}if(!_0x15e4aa){if(_0x5800ec[_0xab5e('0x13')]){_0x3bbefd['id']=_0x5800ec[_0xab5e('0x13')];}}if(!_0x3bbefd['id']){_0x3bbefd[_0xab5e('0x14')]=_0x2d771d;_0x95a013=_0x28d462[_0xab5e('0x15')]&&_0x28d462[_0xab5e('0x15')]!=='0'?_0x28d462[_0xab5e('0x15')][_0xab5e('0x16')](','):[_0xab5e('0x17')];_0x3bbefd[_0xab5e('0x18')]=_['map'](_0x95a013,function(_0x3156c2){var _0x3cecaa={};_0x3cecaa[_0x3156c2]=_0x5800ec['routeId']?_0x5800ec[_0xab5e('0x19')]:_0x5800ec[_0xab5e('0x1a')];return _0x3cecaa;});_0x559fde=_0x5800ec[_0xab5e('0x1b')]?_0x5800ec['destcalleridnum']:_0x5800ec[_0xab5e('0x1a')];}var _0x582820=['id',_0xab5e('0x1c'),'lastName','phone',_0xab5e('0x1d'),_0xab5e('0x1e'),'ListId',_0xab5e('0x1f'),'scheduledAt',_0xab5e('0x20')];var _0x1897fb=_['union'](_0x582820,_0x95a013);BPromise['resolve']()['then'](cmContactRpc[_0xab5e('0x21')]({'attributes':_0x1897fb,'where':_0x3bbefd,'phone':_0x559fde}))[_0xab5e('0x22')](function(_0x597293){_0x4f08b2=_0x597293;if(!_['isEmpty'](_0x4f08b2)){if(_0x4f08b2['length']===0x1){_0x58ccf6=_0x4f08b2[0x0];logger[_0xab5e('0x23')](_0xab5e('0x24'),_0x5800ec[_0xab5e('0x25')],_0x1380c6['id'],_0x58ccf6['id']);}else{logger['info'](_0xab5e('0x26'),_0x5800ec['uniqueid'],_0x1380c6['id'],_[_0xab5e('0x27')](_0x4f08b2,'id')[_0xab5e('0x28')](','));}return;}else{logger[_0xab5e('0x23')](_0xab5e('0x29'),_0x5800ec[_0xab5e('0x25')],_0x1380c6['id']);var _0x5566ba={'ListId':_0x2d771d};var _0x1adf91=_0x28d462['data4']&&_0x28d462[_0xab5e('0x2a')]!=='0'?_0x28d462['data4']:_0xab5e('0x17');if(_0x3beab4){logger['info']('[CM][%s][%s]\x20Autocreate\x20enabled',_0x5800ec['uniqueid'],_0x1380c6['id']);_0x5566ba[_0x1adf91]=_[_0xab5e('0x11')](_0x5800ec[_0xab5e('0x1b')])?_0x5800ec[_0xab5e('0x1a')]:_0x5800ec[_0xab5e('0x19')];if(_['isNil'](_0x5800ec['routeId'])){_0x5566ba[_0xab5e('0x1c')]=_0x5800ec[_0xab5e('0x2b')]&&_0x5800ec[_0xab5e('0x2b')]!==_0xab5e('0x2c')?_0x5800ec['calleridname']:_0xab5e('0x2d');}else{_0x5566ba[_0xab5e('0x1c')]=_0x5800ec[_0xab5e('0x2e')]&&_0x5800ec[_0xab5e('0x2e')]!=='<unknown>'?_0x5800ec['destcalleridname']:'Unknown';}return BPromise[_0xab5e('0x2f')]()['then'](cmContactRpc[_0xab5e('0x30')](_0x5566ba))['then'](function(_0x4ba699){_0x58ccf6=_0x4ba699;_0x4f08b2[_0xab5e('0x31')](_0x4ba699);if(_0x58ccf6){logger['info']('[CM][%s][%s]\x20Contact\x20created:%s',_0x5800ec[_0xab5e('0x25')],_0x1380c6['id'],_0x58ccf6['id']);}return;});}else{logger[_0xab5e('0x23')](_0xab5e('0x32'),_0x5800ec[_0xab5e('0x25')],_0x1380c6['id']);_0x5566ba[_0x1adf91]=_[_0xab5e('0x11')](_0x5800ec[_0xab5e('0x1b')])?_0x5800ec[_0xab5e('0x1a')]:_0x5800ec[_0xab5e('0x19')];if(_[_0xab5e('0x11')](_0x5800ec['routeId'])){_0x5566ba['firstName']=_0x5800ec[_0xab5e('0x2b')]&&_0x5800ec['calleridname']!=='<unknown>'?_0x5800ec[_0xab5e('0x2b')]:_0xab5e('0x2d');}else{_0x5566ba[_0xab5e('0x1c')]=_0x5800ec[_0xab5e('0x2e')]&&_0x5800ec[_0xab5e('0x2e')]!==_0xab5e('0x2c')?_0x5800ec[_0xab5e('0x2e')]:'Unknown';}_0x58ccf6=_0x5566ba;_0x4f08b2['push'](_0x5566ba);return;}}})[_0xab5e('0x22')](function(){if(_0x2f447d){emit(_0x5800ec[_0xab5e('0x25')],_0x1380c6,util[_0xab5e('0x33')](_0xab5e('0x34'),_0x2f447d[_0xab5e('0x35')]),util[_0xab5e('0x33')](_0xab5e('0x36'),_0x28d462[_0xab5e('0x37')][_0xab5e('0x38')]()),{'evt':_[_0xab5e('0x39')](_0x5800ec,{'autoCreate':_0x3beab4}),'contact':_0x58ccf6===undefined?{}:_0x58ccf6,'contacts':_0x4f08b2['length']===0x0?undefined:_0x4f08b2});}});};
\ No newline at end of file
index 154ae67..71c1201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aac=['data2','html','render','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','800','data5','windowHeight','winArguments','format','name','trigger:%s:%s','data1','user:%s','exec','integration','routeId','urlforward','script','parse','query','replace','channel','AllConditions','every','checkConditions','AnyConditions','some','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','queue','agent','membername','lastevent','mailSubstatus','null','substatus','offlineMessage','created','util','url','mustache','./urlforward','./cmContact','../../../config/environment','../../../config/logger','../ami','redis','defaults','localhost','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentcomplete','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','info','stringify','emit','motionChannel','undefined','voice','debug','inspect','checkTriggers','hasOwnProperty','status','checkTrigger','merge','Actions','length','interface','action','toLowerCase','contactmanager','motionbar','popup','TemplateId'];(function(_0x3ca877,_0x32e7d7){var _0x367071=function(_0x2c096f){while(--_0x2c096f){_0x3ca877['push'](_0x3ca877['shift']());}};_0x367071(++_0x32e7d7);}(_0x9aac,0x135));var _0xc9aa=function(_0x52858c,_0x44d15a){_0x52858c=_0x52858c-0x0;var _0x5f581f=_0x9aac[_0x52858c];return _0x5f581f;};'use strict';var util=require(_0xc9aa('0x0'));var _=require('lodash');var url=require(_0xc9aa('0x1'));var Mustache=require(_0xc9aa('0x2'));var Redis=require('ioredis');var urlforward=require(_0xc9aa('0x3'));var integration=require('./integration');var cmContact=require(_0xc9aa('0x4'));var script=require('./script');var config=require(_0xc9aa('0x5'));var logger=require(_0xc9aa('0x6'))('trigger');var ami=require(_0xc9aa('0x7'));config[_0xc9aa('0x8')]=_[_0xc9aa('0x9')](config['redis'],{'host':_0xc9aa('0xa'),'port':0x18eb});var io=require(_0xc9aa('0xb'))(new Redis(config[_0xc9aa('0x8')]));var operators={'equals':function(_0x4d8071,_0x16f8a2){return _0x4d8071==_0x16f8a2;},'not_equals':function(_0xda84e5,_0x39c4e3){return _0xda84e5!=_0x39c4e3;}};var barAndWebActions=['popup','url',_0xc9aa('0xc')];function Trigger(_0x5346e3){this[_0xc9aa('0xd')]=_0x5346e3[_0xc9aa('0xd')];this[_0xc9aa('0xe')]=_0x5346e3[_0xc9aa('0xe')];this[_0xc9aa('0xf')]=_0x5346e3[_0xc9aa('0xf')];this[_0xc9aa('0x10')]=_0x5346e3[_0xc9aa('0x10')];this[_0xc9aa('0x11')]=_0x5346e3[_0xc9aa('0x11')];this[_0xc9aa('0x12')]=_0x5346e3[_0xc9aa('0x12')];this[_0xc9aa('0x13')]=_0x5346e3[_0xc9aa('0x13')];this[_0xc9aa('0x14')]=_0x5346e3[_0xc9aa('0x14')];this[_0xc9aa('0x15')]=_0x5346e3['sugarcrmAccounts'];this[_0xc9aa('0x16')]=_0x5346e3['zohoAccounts'];this['deskAccounts']=_0x5346e3[_0xc9aa('0x17')];this[_0xc9aa('0x18')]=_0x5346e3[_0xc9aa('0x18')];this[_0xc9aa('0x19')]=_0x5346e3['servicenowAccounts'];this[_0xc9aa('0x1a')]=_0x5346e3[_0xc9aa('0x1a')];this[_0xc9aa('0x1b')]=_0x5346e3['freshsalesAccounts'];this[_0xc9aa('0x1c')]={'zendesk':this[_0xc9aa('0x12')],'salesforce':this[_0xc9aa('0x14')],'freshdesk':this[_0xc9aa('0x13')],'sugarcrm':this[_0xc9aa('0x15')],'zoho':this[_0xc9aa('0x16')],'desk':this['deskAccounts'],'vtiger':this[_0xc9aa('0x18')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0xc9aa('0x1b')],'servicenow':this['servicenowAccounts']};ami['on'](_0xc9aa('0x1d'),this['syncCustomEvent'][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x1f'),this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));ami['on']('custom:agentringnoanswer',this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x21'),this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));ami['on']('custom:agentnosuchnumber',this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x22'),this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x23'),this[_0xc9aa('0x20')]['bind'](this));ami['on'](_0xc9aa('0x24'),this[_0xc9aa('0x20')]['bind'](this));ami['on']('custom:agentreject',this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x25'),this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x26'),this[_0xc9aa('0x20')]['bind'](this));ami['on'](_0xc9aa('0x27'),this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x28'),this[_0xc9aa('0x29')][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x2a'),this['syncAgentDial'][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x2b'),this[_0xc9aa('0x29')][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x2c'),this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x2d'),this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x2e'),this['syncCustomEvent']['bind'](this));ami['on'](_0xc9aa('0x2f'),this['syncCustomEvent'][_0xc9aa('0x1e')](this));ami['on'](_0xc9aa('0x30'),this[_0xc9aa('0x20')]['bind'](this));ami['on'](_0xc9aa('0x31'),this[_0xc9aa('0x20')]['bind'](this));ami['on'](_0xc9aa('0x32'),this[_0xc9aa('0x20')]['bind'](this));ami['on'](_0xc9aa('0x33'),this[_0xc9aa('0x20')][_0xc9aa('0x1e')](this));}Trigger[_0xc9aa('0x34')]['emit']=function(_0x18c08d,_0x1b7656,_0x4fbae7){logger[_0xc9aa('0x35')](_0x18c08d,_0x1b7656,JSON[_0xc9aa('0x36')](_0x4fbae7));io['to'](_0x18c08d)[_0xc9aa('0x37')](_0x1b7656,_0x4fbae7);};Trigger[_0xc9aa('0x34')][_0xc9aa('0x20')]=function(_0x2766b2){var _0x52f747=_['clone'](_0x2766b2);if(typeof _0x52f747[_0xc9aa('0x38')]===_0xc9aa('0x39')){_0x52f747[_0xc9aa('0x38')]=_0xc9aa('0x3a');}logger[_0xc9aa('0x3b')](_0xc9aa('0x20'),util[_0xc9aa('0x3c')](_0x52f747,{'showHidden':!![],'depth':null}));this['checkTriggers'](_0x52f747);};Trigger[_0xc9aa('0x34')][_0xc9aa('0x29')]=function(_0x213e45){if(this[_0xc9aa('0xe')][_0x213e45['interface']]){this['syncCustomEvent'](_0x213e45);}};Trigger['prototype'][_0xc9aa('0x3d')]=function(_0x432b91){var _0x311a2c;for(var _0x79eb31 in this[_0xc9aa('0xd')]){if(this[_0xc9aa('0xd')][_0xc9aa('0x3e')](_0x79eb31)){if(this['triggers'][_0x79eb31][_0xc9aa('0x3f')]){_0x311a2c=this[_0xc9aa('0x40')](this[_0xc9aa('0xd')][_0x79eb31],_0x432b91);if(_0x311a2c){_[_0xc9aa('0x41')](_0x432b91,_0x432b91['variables']);for(var _0x5ba45d=0x0,_0x43d026,_0x5699c3,_0x20f1ca;_0x5ba45d<this[_0xc9aa('0xd')][_0x79eb31][_0xc9aa('0x42')][_0xc9aa('0x43')];_0x5ba45d+=0x1){_0x43d026=this['triggers'][_0x79eb31][_0xc9aa('0x42')][_0x5ba45d];if(this['agents'][_0x432b91[_0xc9aa('0x44')]]){switch(_0x43d026[_0xc9aa('0x45')][_0xc9aa('0x46')]()){case _0xc9aa('0x47'):break;case _0xc9aa('0x48'):case'browser':var _0x2faa10={};switch(barAndWebActions[_0x43d026['data1']]){case _0xc9aa('0x49'):_0x2faa10[_0xc9aa('0x4a')]=_0x43d026[_0xc9aa('0x4b')];_0x2faa10[_0xc9aa('0x4c')]=this[_0xc9aa('0x10')][_0x43d026[_0xc9aa('0x4b')]]?Mustache[_0xc9aa('0x4d')](this['templates'][_0x43d026['data2']][_0xc9aa('0x4c')],_0x432b91):'template\x20not\x20found';break;case _0xc9aa('0x1'):_0x2faa10['uri']=this[_0xc9aa('0x4e')](_0x43d026[_0xc9aa('0x4b')],_0x432b91,_[_0xc9aa('0x4f')](_0x43d026[_0xc9aa('0x50')])?!![]:parseInt(_0x43d026[_0xc9aa('0x50')],0xa));if(_[_0xc9aa('0x4f')](_0x43d026[_0xc9aa('0x51')])){_0x2faa10[_0xc9aa('0x52')]='0';}else{_0x2faa10[_0xc9aa('0x53')]=_0x43d026[_0xc9aa('0x51')];_0x2faa10[_0xc9aa('0x54')]=_[_0xc9aa('0x4f')](_0x43d026['data5'])?_0xc9aa('0x55'):_0x43d026[_0xc9aa('0x56')];_0x2faa10[_0xc9aa('0x57')]=_['isNil'](_0x43d026['data6'])?'600':_0x43d026['data6'];}break;case'winapp':_0x2faa10['winApplication']=_0x43d026['data2']?Mustache[_0xc9aa('0x4d')](_0x43d026[_0xc9aa('0x4b')],_0x432b91):'';_0x2faa10[_0xc9aa('0x58')]=_0x43d026[_0xc9aa('0x50')]?Mustache[_0xc9aa('0x4d')](_0x43d026[_0xc9aa('0x50')],_0x432b91):'';break;}this[_0xc9aa('0x37')](util[_0xc9aa('0x59')]('user:%s',this[_0xc9aa('0xe')][_0x432b91[_0xc9aa('0x44')]][_0xc9aa('0x5a')]),util['format'](_0xc9aa('0x5b'),_0x43d026[_0xc9aa('0x45')][_0xc9aa('0x46')](),barAndWebActions[_0x43d026[_0xc9aa('0x5c')]]),_['merge'](_0x2faa10,_0x432b91));break;case'jscripty':this[_0xc9aa('0x37')](util[_0xc9aa('0x59')](_0xc9aa('0x5d'),this[_0xc9aa('0xe')][_0x432b91[_0xc9aa('0x44')]][_0xc9aa('0x5a')]),util[_0xc9aa('0x59')]('trigger:%s',_0x43d026['action'][_0xc9aa('0x46')]()),_['merge']({'ProjectId':parseInt(_0x43d026[_0xc9aa('0x5c')],0xa)},_0x432b91));break;default:this[_0xc9aa('0x37')](util[_0xc9aa('0x59')](_0xc9aa('0x5d'),this['agents'][_0x432b91['interface']][_0xc9aa('0x5a')]),util[_0xc9aa('0x59')]('trigger:%s',_0x43d026[_0xc9aa('0x45')][_0xc9aa('0x46')]()),_[_0xc9aa('0x41')]({},_0x43d026,_0x432b91));}}switch(_0x43d026[_0xc9aa('0x45')]['toLowerCase']()){case'contactmanager':cmContact[_0xc9aa('0x5e')](this[_0xc9aa('0xe')][_0x432b91[_0xc9aa('0x44')]],this[_0xc9aa('0xd')][_0x79eb31],_0x43d026,_0x432b91);break;case _0xc9aa('0x5f'):integration[_0xc9aa('0x5e')](_0x43d026,_0x432b91,this[_0xc9aa('0x1c')],this[_0xc9aa('0xe')][_0x432b91[_0xc9aa('0x44')]],this[_0xc9aa('0xf')][_0x432b91['queue']],this[_0xc9aa('0x11')][_0x432b91[_0xc9aa('0x60')]]);break;case _0xc9aa('0x61'):urlforward[_0xc9aa('0x5e')](_0x43d026,_0x432b91);break;case _0xc9aa('0x62'):script[_0xc9aa('0x5e')](_0x43d026,_0x432b91);break;}}}}}}};Trigger[_0xc9aa('0x34')][_0xc9aa('0x4e')]=function(_0x947ad6,_0x1c1cd4,_0x495ce5){var _0x36b588=url[_0xc9aa('0x63')](Mustache[_0xc9aa('0x4d')](_0x947ad6,_0x1c1cd4),!![]);if(_0x495ce5){_[_0xc9aa('0x41')](_0x36b588[_0xc9aa('0x64')],_0x1c1cd4);}delete _0x36b588['search'];var _0x10fd17=url[_0xc9aa('0x59')](_0x36b588);_0x10fd17=_0x10fd17[_0xc9aa('0x65')](/\/\?/g,'?');return _0x10fd17;};Trigger[_0xc9aa('0x34')]['checkTrigger']=function(_0x4a4816,_0xbc766b){var _0x2ddbfb=!![];var _0x14361c=!![];var _0x31cf30=![];if(_0x4a4816[_0xc9aa('0x66')]===_0xbc766b[_0xc9aa('0x38')]){_0x31cf30=!![];}if(_0x4a4816[_0xc9aa('0x67')][_0xc9aa('0x43')]){_0x2ddbfb=_[_0xc9aa('0x68')](_0x4a4816[_0xc9aa('0x67')],this[_0xc9aa('0x69')](_0xbc766b,_0x4a4816[_0xc9aa('0x66')]));}if(_0x4a4816[_0xc9aa('0x6a')][_0xc9aa('0x43')]){_0x14361c=_[_0xc9aa('0x6b')](_0x4a4816[_0xc9aa('0x6a')],this[_0xc9aa('0x69')](_0xbc766b,_0x4a4816[_0xc9aa('0x66')]));}var _0x3f4a3f=_0x31cf30&&_0x2ddbfb&&_0x14361c;logger[_0xc9aa('0x3b')]('checkTrigger:\x20trigger',util['inspect'](_0x4a4816,{'showHidden':!![],'depth':null}),'evt',util[_0xc9aa('0x3c')](_0xbc766b,{'showHidden':!![],'depth':null}),_0x31cf30,_0x2ddbfb,_0x14361c);return _0x3f4a3f;};Trigger[_0xc9aa('0x34')][_0xc9aa('0x69')]=function(_0x252dc0,_0x2d8c59){return function(_0xadb7c2){switch(_0xadb7c2[_0xc9aa('0x6c')]){case _0xc9aa('0x6d'):if(_0x252dc0['channel']===_0x2d8c59){if(_0x2d8c59===_0xc9aa('0x6e')){return _0x252dc0[_0xc9aa('0x6f')]?operators[_0xadb7c2[_0xc9aa('0x70')]](Number(_0xadb7c2[_0xc9aa('0x71')]),_0x252dc0[_0xc9aa('0x6f')]):![];}else{return _0x252dc0[_[_0xc9aa('0x72')](_0x2d8c59)+_0xc9aa('0x73')]?operators[_0xadb7c2[_0xc9aa('0x70')]](Number(_0xadb7c2['value']),_0x252dc0[_['upperFirst'](_0x2d8c59)+_0xc9aa('0x73')]):![];}}break;case _0xc9aa('0x74'):case _0xc9aa('0x75'):if(_0x252dc0[_0xc9aa('0x66')]===_0x2d8c59){return _0x252dc0[_0xc9aa('0x76')]?operators[_0xadb7c2[_0xc9aa('0x70')]](_0xadb7c2[_0xc9aa('0x71')],_0x252dc0[_0xc9aa('0x76')]):![];}break;case _0xc9aa('0x77'):return _0x252dc0['queue']?operators[_0xadb7c2['operator']](_0xadb7c2[_0xc9aa('0x71')],_0x252dc0[_0xc9aa('0x77')]):![];case _0xc9aa('0x78'):return _0x252dc0['membername']?operators[_0xadb7c2['operator']](_0xadb7c2[_0xc9aa('0x71')],_0x252dc0[_0xc9aa('0x79')]):![];case'lastevent':return _0x252dc0[_0xc9aa('0x7a')]?operators[_0xadb7c2[_0xc9aa('0x70')]](_0xadb7c2[_0xc9aa('0x71')],_0x252dc0[_0xc9aa('0x7a')]):![];case'routeId':return _0x252dc0[_0xc9aa('0x60')]?operators[_0xadb7c2['operator']](_0xadb7c2['value'],_0x252dc0['routeId']):![];case _0xc9aa('0x7b'):if(_0xadb7c2[_0xc9aa('0x71')]===_0xc9aa('0x7c'))_0xadb7c2[_0xc9aa('0x71')]=null;return typeof _0x252dc0[_0xc9aa('0x7d')]!==_0xc9aa('0x39')?operators[_0xadb7c2[_0xc9aa('0x70')]](_0xadb7c2[_0xc9aa('0x71')],_0x252dc0[_0xc9aa('0x7d')]):![];case _0xc9aa('0x7e'):if(_0x252dc0[_0xc9aa('0x66')]===_0x2d8c59){return _0xadb7c2[_0xc9aa('0x71')]===_0xc9aa('0x7f')&&_0xadb7c2[_0xc9aa('0x70')]==='equals'?!![]:![];}break;}return![];};};module['exports']=Trigger;
\ No newline at end of file
+var _0x20b1=['name','data1','jscripty','trigger:%s','merge','exec','routeId','parse','query','search','replace','channel','every','AllConditions','checkConditions','some','AnyConditions','evt','operator','value','upperFirst','AccountId','interaction','message','event','queue','agent','membername','lastevent','mailSubstatus','null','substatus','created','equals','exports','lodash','url','mustache','./urlforward','./integration','./cmContact','../../../config/environment','trigger','../ami','redis','defaults','localhost','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentcomplete','custom:agentnosuchnumber','custom:agentbusy','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','info','stringify','emit','clone','motionChannel','undefined','voice','debug','inspect','checkTriggers','interface','hasOwnProperty','status','checkTrigger','variables','Actions','length','action','toLowerCase','contactmanager','motionbar','browser','popup','data2','html','render','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','windowWidth','data5','data6','600','winArguments','format','user:%s'];(function(_0x5834bc,_0x3d4801){var _0x3e183a=function(_0x18b023){while(--_0x18b023){_0x5834bc['push'](_0x5834bc['shift']());}};_0x3e183a(++_0x3d4801);}(_0x20b1,0x197));var _0x120b=function(_0x21e553,_0x456a2e){_0x21e553=_0x21e553-0x0;var _0x4f8482=_0x20b1[_0x21e553];return _0x4f8482;};'use strict';var util=require('util');var _=require(_0x120b('0x0'));var url=require(_0x120b('0x1'));var Mustache=require(_0x120b('0x2'));var Redis=require('ioredis');var urlforward=require(_0x120b('0x3'));var integration=require(_0x120b('0x4'));var cmContact=require(_0x120b('0x5'));var script=require('./script');var config=require(_0x120b('0x6'));var logger=require('../../../config/logger')(_0x120b('0x7'));var ami=require(_0x120b('0x8'));config[_0x120b('0x9')]=_[_0x120b('0xa')](config[_0x120b('0x9')],{'host':_0x120b('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x120b('0x9')]));var operators={'equals':function(_0x530c54,_0x5c2377){return _0x530c54==_0x5c2377;},'not_equals':function(_0x442546,_0x1c173a){return _0x442546!=_0x1c173a;}};var barAndWebActions=['popup',_0x120b('0x1'),_0x120b('0xc')];function Trigger(_0x2d81a3){this[_0x120b('0xd')]=_0x2d81a3[_0x120b('0xd')];this[_0x120b('0xe')]=_0x2d81a3[_0x120b('0xe')];this[_0x120b('0xf')]=_0x2d81a3[_0x120b('0xf')];this[_0x120b('0x10')]=_0x2d81a3[_0x120b('0x10')];this[_0x120b('0x11')]=_0x2d81a3[_0x120b('0x11')];this[_0x120b('0x12')]=_0x2d81a3[_0x120b('0x12')];this[_0x120b('0x13')]=_0x2d81a3[_0x120b('0x13')];this[_0x120b('0x14')]=_0x2d81a3['salesforceAccounts'];this[_0x120b('0x15')]=_0x2d81a3[_0x120b('0x15')];this[_0x120b('0x16')]=_0x2d81a3[_0x120b('0x16')];this['deskAccounts']=_0x2d81a3[_0x120b('0x17')];this['vtigerAccounts']=_0x2d81a3[_0x120b('0x18')];this[_0x120b('0x19')]=_0x2d81a3['servicenowAccounts'];this['dynamics365Accounts']=_0x2d81a3[_0x120b('0x1a')];this[_0x120b('0x1b')]=_0x2d81a3[_0x120b('0x1b')];this[_0x120b('0x1c')]={'zendesk':this[_0x120b('0x12')],'salesforce':this[_0x120b('0x14')],'freshdesk':this[_0x120b('0x13')],'sugarcrm':this[_0x120b('0x15')],'zoho':this[_0x120b('0x16')],'desk':this[_0x120b('0x17')],'vtiger':this[_0x120b('0x18')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0x120b('0x1b')],'servicenow':this['servicenowAccounts']};ami['on'](_0x120b('0x1d'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x1f'),this[_0x120b('0x20')]['bind'](this));ami['on']('custom:agentringnoanswer',this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x21'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x22'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on']('custom:agentnoanswer',this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x23'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on']('custom:agentcongestion',this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on']('custom:agentreject',this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x24'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on']('custom:queuecallerabandon',this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x25'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x26'),this[_0x120b('0x27')][_0x120b('0x1e')](this));ami['on']('custom:dialconnect',this['syncAgentDial'][_0x120b('0x1e')](this));ami['on']('custom:dialend',this[_0x120b('0x27')]['bind'](this));ami['on'](_0x120b('0x28'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x29'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x2a'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x2b'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x2c'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x2d'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x2e'),this[_0x120b('0x20')]['bind'](this));ami['on'](_0x120b('0x2f'),this[_0x120b('0x20')][_0x120b('0x1e')](this));}Trigger[_0x120b('0x30')]['emit']=function(_0x3a3008,_0x24dfde,_0x3ed043){logger[_0x120b('0x31')](_0x3a3008,_0x24dfde,JSON[_0x120b('0x32')](_0x3ed043));io['to'](_0x3a3008)[_0x120b('0x33')](_0x24dfde,_0x3ed043);};Trigger[_0x120b('0x30')][_0x120b('0x20')]=function(_0x3ddecd){var _0x324796=_[_0x120b('0x34')](_0x3ddecd);if(typeof _0x324796[_0x120b('0x35')]===_0x120b('0x36')){_0x324796[_0x120b('0x35')]=_0x120b('0x37');}logger[_0x120b('0x38')](_0x120b('0x20'),util[_0x120b('0x39')](_0x324796,{'showHidden':!![],'depth':null}));this[_0x120b('0x3a')](_0x324796);};Trigger[_0x120b('0x30')][_0x120b('0x27')]=function(_0x362d5f){if(this['agents'][_0x362d5f[_0x120b('0x3b')]]){this[_0x120b('0x20')](_0x362d5f);}};Trigger[_0x120b('0x30')][_0x120b('0x3a')]=function(_0xbd0293){var _0xf62a37;for(var _0x3bed6c in this['triggers']){if(this[_0x120b('0xd')][_0x120b('0x3c')](_0x3bed6c)){if(this['triggers'][_0x3bed6c][_0x120b('0x3d')]){_0xf62a37=this[_0x120b('0x3e')](this[_0x120b('0xd')][_0x3bed6c],_0xbd0293);if(_0xf62a37){_['merge'](_0xbd0293,_0xbd0293[_0x120b('0x3f')]);for(var _0x169914=0x0,_0x1bc1f1,_0x8662de,_0x4c78da;_0x169914<this[_0x120b('0xd')][_0x3bed6c][_0x120b('0x40')][_0x120b('0x41')];_0x169914+=0x1){_0x1bc1f1=this[_0x120b('0xd')][_0x3bed6c]['Actions'][_0x169914];if(this[_0x120b('0xe')][_0xbd0293[_0x120b('0x3b')]]){switch(_0x1bc1f1[_0x120b('0x42')][_0x120b('0x43')]()){case _0x120b('0x44'):break;case _0x120b('0x45'):case _0x120b('0x46'):var _0xa783f4={};switch(barAndWebActions[_0x1bc1f1['data1']]){case _0x120b('0x47'):_0xa783f4['TemplateId']=_0x1bc1f1[_0x120b('0x48')];_0xa783f4[_0x120b('0x49')]=this[_0x120b('0x10')][_0x1bc1f1[_0x120b('0x48')]]?Mustache[_0x120b('0x4a')](this[_0x120b('0x10')][_0x1bc1f1[_0x120b('0x48')]][_0x120b('0x49')],_0xbd0293):_0x120b('0x4b');break;case'url':_0xa783f4[_0x120b('0x4c')]=this[_0x120b('0x4d')](_0x1bc1f1['data2'],_0xbd0293,_[_0x120b('0x4e')](_0x1bc1f1[_0x120b('0x4f')])?!![]:parseInt(_0x1bc1f1[_0x120b('0x4f')],0xa));if(_[_0x120b('0x4e')](_0x1bc1f1[_0x120b('0x50')])){_0xa783f4[_0x120b('0x51')]='0';}else{_0xa783f4['uriLocation']=_0x1bc1f1[_0x120b('0x50')];_0xa783f4[_0x120b('0x52')]=_[_0x120b('0x4e')](_0x1bc1f1[_0x120b('0x53')])?'800':_0x1bc1f1[_0x120b('0x53')];_0xa783f4['windowHeight']=_[_0x120b('0x4e')](_0x1bc1f1[_0x120b('0x54')])?_0x120b('0x55'):_0x1bc1f1[_0x120b('0x54')];}break;case _0x120b('0xc'):_0xa783f4['winApplication']=_0x1bc1f1[_0x120b('0x48')]?Mustache[_0x120b('0x4a')](_0x1bc1f1[_0x120b('0x48')],_0xbd0293):'';_0xa783f4[_0x120b('0x56')]=_0x1bc1f1['data3']?Mustache[_0x120b('0x4a')](_0x1bc1f1[_0x120b('0x4f')],_0xbd0293):'';break;}this[_0x120b('0x33')](util[_0x120b('0x57')](_0x120b('0x58'),this[_0x120b('0xe')][_0xbd0293[_0x120b('0x3b')]][_0x120b('0x59')]),util[_0x120b('0x57')]('trigger:%s:%s',_0x1bc1f1[_0x120b('0x42')][_0x120b('0x43')](),barAndWebActions[_0x1bc1f1[_0x120b('0x5a')]]),_['merge'](_0xa783f4,_0xbd0293));break;case _0x120b('0x5b'):this[_0x120b('0x33')](util['format']('user:%s',this[_0x120b('0xe')][_0xbd0293[_0x120b('0x3b')]][_0x120b('0x59')]),util['format'](_0x120b('0x5c'),_0x1bc1f1[_0x120b('0x42')][_0x120b('0x43')]()),_[_0x120b('0x5d')]({'ProjectId':parseInt(_0x1bc1f1[_0x120b('0x5a')],0xa)},_0xbd0293));break;default:this[_0x120b('0x33')](util['format'](_0x120b('0x58'),this['agents'][_0xbd0293[_0x120b('0x3b')]]['name']),util[_0x120b('0x57')](_0x120b('0x5c'),_0x1bc1f1[_0x120b('0x42')][_0x120b('0x43')]()),_[_0x120b('0x5d')]({},_0x1bc1f1,_0xbd0293));}}switch(_0x1bc1f1['action'][_0x120b('0x43')]()){case _0x120b('0x44'):cmContact['exec'](this[_0x120b('0xe')][_0xbd0293['interface']],this[_0x120b('0xd')][_0x3bed6c],_0x1bc1f1,_0xbd0293);break;case'integration':integration[_0x120b('0x5e')](_0x1bc1f1,_0xbd0293,this['accounts'],this[_0x120b('0xe')][_0xbd0293[_0x120b('0x3b')]],this[_0x120b('0xf')][_0xbd0293['queue']],this['voiceExtensions'][_0xbd0293[_0x120b('0x5f')]]);break;case'urlforward':urlforward[_0x120b('0x5e')](_0x1bc1f1,_0xbd0293);break;case'script':script['exec'](_0x1bc1f1,_0xbd0293);break;}}}}}}};Trigger[_0x120b('0x30')][_0x120b('0x4d')]=function(_0x5c3afa,_0x13d19f,_0x5b4580){var _0x227fef=url[_0x120b('0x60')](Mustache['render'](_0x5c3afa,_0x13d19f),!![]);if(_0x5b4580){_[_0x120b('0x5d')](_0x227fef[_0x120b('0x61')],_0x13d19f);}delete _0x227fef[_0x120b('0x62')];var _0x12a014=url[_0x120b('0x57')](_0x227fef);_0x12a014=_0x12a014[_0x120b('0x63')](/\/\?/g,'?');return _0x12a014;};Trigger[_0x120b('0x30')][_0x120b('0x3e')]=function(_0x1d09b0,_0x2b0812){var _0x12f8e0=!![];var _0x4dfa0a=!![];var _0x2034c8=![];if(_0x1d09b0[_0x120b('0x64')]===_0x2b0812[_0x120b('0x35')]){_0x2034c8=!![];}if(_0x1d09b0['AllConditions'][_0x120b('0x41')]){_0x12f8e0=_[_0x120b('0x65')](_0x1d09b0[_0x120b('0x66')],this[_0x120b('0x67')](_0x2b0812,_0x1d09b0[_0x120b('0x64')]));}if(_0x1d09b0['AnyConditions'][_0x120b('0x41')]){_0x4dfa0a=_[_0x120b('0x68')](_0x1d09b0[_0x120b('0x69')],this[_0x120b('0x67')](_0x2b0812,_0x1d09b0['channel']));}var _0x59f670=_0x2034c8&&_0x12f8e0&&_0x4dfa0a;logger['debug']('checkTrigger:\x20trigger',util[_0x120b('0x39')](_0x1d09b0,{'showHidden':!![],'depth':null}),_0x120b('0x6a'),util[_0x120b('0x39')](_0x2b0812,{'showHidden':!![],'depth':null}),_0x2034c8,_0x12f8e0,_0x4dfa0a);return _0x59f670;};Trigger['prototype']['checkConditions']=function(_0x227b63,_0x4f660a){return function(_0x314d21){switch(_0x314d21['field']){case'account':if(_0x227b63['channel']===_0x4f660a){if(_0x4f660a==='chat'){return _0x227b63['ChatWebsiteId']?operators[_0x314d21[_0x120b('0x6b')]](Number(_0x314d21[_0x120b('0x6c')]),_0x227b63['ChatWebsiteId']):![];}else{return _0x227b63[_[_0x120b('0x6d')](_0x4f660a)+_0x120b('0x6e')]?operators[_0x314d21['operator']](Number(_0x314d21[_0x120b('0x6c')]),_0x227b63[_['upperFirst'](_0x4f660a)+_0x120b('0x6e')]):![];}}break;case _0x120b('0x6f'):case _0x120b('0x70'):if(_0x227b63[_0x120b('0x64')]===_0x4f660a){return _0x227b63[_0x120b('0x71')]?operators[_0x314d21[_0x120b('0x6b')]](_0x314d21[_0x120b('0x6c')],_0x227b63[_0x120b('0x71')]):![];}break;case _0x120b('0x72'):return _0x227b63[_0x120b('0x72')]?operators[_0x314d21[_0x120b('0x6b')]](_0x314d21[_0x120b('0x6c')],_0x227b63[_0x120b('0x72')]):![];case _0x120b('0x73'):return _0x227b63['membername']?operators[_0x314d21[_0x120b('0x6b')]](_0x314d21[_0x120b('0x6c')],_0x227b63[_0x120b('0x74')]):![];case'lastevent':return _0x227b63['lastevent']?operators[_0x314d21['operator']](_0x314d21[_0x120b('0x6c')],_0x227b63[_0x120b('0x75')]):![];case _0x120b('0x5f'):return _0x227b63[_0x120b('0x5f')]?operators[_0x314d21['operator']](_0x314d21[_0x120b('0x6c')],_0x227b63['routeId']):![];case _0x120b('0x76'):if(_0x314d21[_0x120b('0x6c')]===_0x120b('0x77'))_0x314d21['value']=null;return typeof _0x227b63[_0x120b('0x78')]!==_0x120b('0x36')?operators[_0x314d21[_0x120b('0x6b')]](_0x314d21['value'],_0x227b63[_0x120b('0x78')]):![];case'offlineMessage':if(_0x227b63[_0x120b('0x64')]===_0x4f660a){return _0x314d21[_0x120b('0x6c')]===_0x120b('0x79')&&_0x314d21[_0x120b('0x6b')]===_0x120b('0x7a')?!![]:![];}break;}return![];};};module[_0x120b('0x7b')]=Trigger;
\ No newline at end of file
index a491d15..fe7382f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['customField','content','idField','custom_fields','variable','variableName','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','stripTrailingSlash','serverUrl','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:desk:display','trigger:browser:url','%s/agent/tickets/%s','stringify','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','lodash','md5','util','ioredis','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','then','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','debug','[HTTP]','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','total_entries','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length','forEach','includes','string','picklist','type','nameField'];(function(_0x11969a,_0x36532f){var _0x30c243=function(_0x518195){while(--_0x518195){_0x11969a['push'](_0x11969a['shift']());}};_0x30c243(++_0x36532f);}(_0x3e74,0x175));var _0x43e7=function(_0xd5892c,_0x4abe7c){_0xd5892c=_0xd5892c-0x0;var _0x266bc7=_0x3e74[_0xd5892c];return _0x266bc7;};'use strict';var _=require(_0x43e7('0x0'));var rp=require('request-promise');var md5=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var Redis=require(_0x43e7('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x43e7('0x4'))('desk');config[_0x43e7('0x5')]=_[_0x43e7('0x6')](config[_0x43e7('0x5')],{'host':_0x43e7('0x7'),'port':0x18eb});var io=require(_0x43e7('0x8'))(new Redis(config['redis']));function emit(_0x45a0d1,_0x3491d6,_0x2ede2d){io['to'](_0x45a0d1)[_0x43e7('0x9')](_0x3491d6,_0x2ede2d);}var headers={'Content-Type':_0x43e7('0xa'),'Accept':'application/json'};function getUser(_0x212c6c,_0x554d44){if(intUtil['validateEmail'](_0x554d44)===!![]){logger[_0x43e7('0xb')](_0x43e7('0xc'),_0x554d44);return request({'uri':util['format'](_0x43e7('0xd'),_0x212c6c['remoteUri'])})[_0x43e7('0xe')](function(_0x37302c){if(_0x37302c['total_entries']){return _[_0x43e7('0xf')](_0x37302c[_0x43e7('0x10')][_0x43e7('0x11')],{'email':_0x554d44});}})[_0x43e7('0xe')](function(_0x4e008c){if(_0x4e008c){logger['info'](_0x43e7('0x12'));return _0x4e008c;}else{logger[_0x43e7('0xb')](_0x43e7('0x13'));return request({'uri':util['format']('%s/users/me',_0x212c6c[_0x43e7('0x14')])});}});}else{logger[_0x43e7('0xb')](_0x43e7('0x15'));return request({'uri':util[_0x43e7('0x16')]('%s/users/me',_0x212c6c['remoteUri'])});}}function request(_0xdf16c){logger[_0x43e7('0x17')](_0x43e7('0x18'),JSON['stringify'](_0xdf16c));return rp(_['defaults'](_0xdf16c,{'method':_0x43e7('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x1ca758){var _0x9037d3;if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1b')){_0x9037d3=util[_0x43e7('0x16')](_0x43e7('0x1c'),_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1e')]);}else if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1f')){_0x9037d3=util[_0x43e7('0x16')]('%s/token:%s',_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1f')]);}return util['format'](_0x43e7('0x20'),new Buffer(_0x9037d3)[_0x43e7('0x21')](_0x43e7('0x22')));}function getEndUser(_0x28aacc,_0x4077fb,_0x2f4cb4){logger['info'](_0x43e7('0x23'),_0x2f4cb4);return request({'uri':util['format']('%s/customers/search',_0x28aacc[_0x43e7('0x14')]),'qs':{'phone':_0x2f4cb4}})[_0x43e7('0xe')](function(_0x4b2b9f){if(_0x4b2b9f[_0x43e7('0x24')]){logger['info'](_0x43e7('0x25'));return _0x4b2b9f['_embedded'][_0x43e7('0x11')][0x0];}else{logger[_0x43e7('0xb')](_0x43e7('0x26'));return request({'uri':util[_0x43e7('0x16')]('%s/customers',_0x28aacc['remoteUri']),'method':_0x43e7('0x27'),'body':{'first_name':_0x4077fb,'title':_0x4077fb,'phone_numbers':[{'type':'work','value':_0x2f4cb4}]}});}});}function getTags(_0x2dd5f,_0x40dc8f){var _0x3565cf=[];if(_0x2dd5f&&_0x2dd5f[_0x43e7('0x28')]>0x0){_0x3565cf=_['map'](_0x2dd5f,_0x40dc8f);}return _0x3565cf;}function getCustomFields(_0x33a1a5,_0x4690a6){var _0x45b675=[];var _0x50f9f5={'custom_fields':{}};if(_0x33a1a5[_0x43e7('0x28')]>0x0){_[_0x43e7('0x29')](_0x33a1a5,function(_0x2b85a5){if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5[_0x43e7('0x2d')])&&_0x2b85a5[_0x43e7('0x2e')]&&!_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x2b85a5[_0x43e7('0x2e')]['toLowerCase']()]=_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x21')]();}else if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5['type'])&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x2b85a5['content']['toString']();}else if(_0x2b85a5['type']===_0x43e7('0x33')&&_0x2b85a5[_0x43e7('0x34')]&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x34')]]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5['idField']]=_0x4690a6[_0x2b85a5['variableName']]['toString']());}else if(_0x2b85a5['type']==='customVariable'&&_0x2b85a5['Variable']&&_0x2b85a5['Variable'][_0x43e7('0x35')]&&_0x2b85a5['idField']&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x36')][_0x43e7('0x35')][_0x43e7('0x37')]()]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x4690a6[_0x2b85a5[_0x43e7('0x36')]['name']['toLowerCase']()]['toString']());}});}if(_0x50f9f5[_0x43e7('0x38')]){_0x50f9f5[_0x43e7('0x38')]=Number(_0x50f9f5[_0x43e7('0x38')]);}return _0x50f9f5;}function getTicket(_0x16cdba,_0x1b1440,_0x1ed538,_0x1d4589,_0x2ffd43){logger['info'](_0x43e7('0x39'));var _0x2b0ffe=_['merge']({'subject':intUtil[_0x43e7('0x3a')](_0x1d4589['Subjects'],_0x2ffd43,'\x20'),'type':_0x43e7('0x3b'),'status':_0x43e7('0x3c'),'labels':[_0x43e7('0x3d'),_0x43e7('0x3e'),_0x43e7('0x3f')][_0x43e7('0x40')](getTags(_0x1d4589['Tags'],'name')),'description':intUtil[_0x43e7('0x3a')](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a'),'_links':{'assigned_user':{'href':util[_0x43e7('0x16')](_0x43e7('0x42'),_0x1b1440['id']),'class':_0x43e7('0x43')}},'message':{'direction':'in','body':intUtil['getString'](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a')}},getCustomFields(_0x1d4589[_0x43e7('0x44')],_0x2ffd43));return request({'uri':util['format'](_0x43e7('0x45'),_0x16cdba['remoteUri'],_0x1ed538['id']),'method':_0x43e7('0x27'),'body':_0x2b0ffe});}exports['queue']=function(_0x3d81ae,_0x3b4235,_0x3a5807,_0x1c2c6b,_0x49b866,_0x47d6a1){var _0x103393,_0x40c509;_0x47d6a1[_0x43e7('0x14')]=intUtil[_0x43e7('0x46')](_0x47d6a1['remoteUri']);_0x47d6a1['serverUrl']=intUtil['stripTrailingSlash'](_0x47d6a1[_0x43e7('0x47')]);if(_0x49b866&&_0x49b866['monitor_format']){logger[_0x43e7('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3b4235[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x47d6a1[_0x43e7('0x47')],_0x3b4235[_0x43e7('0x4a')],md5(_0x3b4235[_0x43e7('0x4a')]));}else{_0x3b4235['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x47d6a1);return getUser(_0x47d6a1,_0x1c2c6b[_0x43e7('0x4c')])[_0x43e7('0xe')](function(_0x1fd277){_0x103393=_0x1fd277;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x103393['id']);return getEndUser(_0x47d6a1,_0x3b4235['calleridname'],_0x3b4235['calleridnum']);})[_0x43e7('0xe')](function(_0x36a09e){_0x40c509=_0x36a09e;logger[_0x43e7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x40c509['id']);return getTicket(_0x47d6a1,_0x103393,_0x40c509,_0x3a5807,_0x3b4235);})['then'](function(_0x56489b){if(_0x56489b){logger[_0x43e7('0xb')](_0x43e7('0x4e'));logger['info'](_0x43e7('0x4f'),_0x56489b['id']);switch(_0x47d6a1[_0x43e7('0x2d')]){case _0x43e7('0x50'):logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0x43e7('0x51'),_0x1c2c6b[_0x43e7('0x35')]),'trigger:desk:display',{'recordId':_0x56489b['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')](_0x43e7('0x53'),_0x43e7('0x54'));emit(util['format'](_0x43e7('0x51'),_0x1c2c6b['name']),'trigger:browser:url',{'uri':util[_0x43e7('0x16')](_0x43e7('0x55'),_0x56489b['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x53'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x1cd87c){console[_0x43e7('0x56')](_0x1cd87c);logger[_0x43e7('0x56')](_0x43e7('0x53'),JSON['stringify'](_0x1cd87c));});};exports[_0x43e7('0x59')]=function(_0x46c910,_0x499c03,_0x39e3ca,_0x4e6f6d,_0x35b799,_0x520857,_0x34e2ec){var _0x1f561f,_0xfe13fa;_0x520857['remoteUri']=intUtil['stripTrailingSlash'](_0x520857[_0x43e7('0x14')]);_0x520857[_0x43e7('0x47')]=intUtil[_0x43e7('0x46')](_0x520857[_0x43e7('0x47')]);if(_0x34e2ec&&_0x34e2ec[_0x43e7('0x5a')]&&_0x34e2ec[_0x43e7('0x5a')]!==_0x43e7('0x5b')){logger[_0x43e7('0xb')](_0x43e7('0x5c'),_0x43e7('0x5d'));_0x499c03[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x520857[_0x43e7('0x47')],_0x499c03['uniqueid'],md5(_0x499c03[_0x43e7('0x4a')]));}headers[_0x43e7('0x4b')]=getAuth(_0x520857);return getUser(_0x520857,_0x4e6f6d[_0x43e7('0x4c')])['then'](function(_0x5d63c6){_0x1f561f=_0x5d63c6;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x1f561f['id']);return getEndUser(_0x520857,_0x499c03['destcalleridname'],_0x499c03[_0x43e7('0x5e')]);})['then'](function(_0x49a6ce){_0xfe13fa=_0x49a6ce;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xfe13fa['id']);return getTicket(_0x520857,_0x1f561f,_0xfe13fa,_0x39e3ca,_0x499c03);})[_0x43e7('0xe')](function(_0x40155c){if(_0x40155c){logger[_0x43e7('0xb')]('Ticket\x20created!');logger[_0x43e7('0xb')](_0x43e7('0x4f'),_0x40155c['id']);switch(_0x520857['type']){case _0x43e7('0x50'):logger[_0x43e7('0xb')](_0x43e7('0x53'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format']('user:%s',_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x60'),{'recordId':_0x40155c['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x43e7('0x16')](_0x43e7('0x51'),_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x61'),{'uri':util['format'](_0x43e7('0x62'),_0x520857[_0x43e7('0x14')],_0x40155c['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x5c'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x4665db){logger[_0x43e7('0x56')](_0x43e7('0x5c'),JSON[_0x43e7('0x63')](_0x4665db));});};exports[_0x43e7('0x64')]=function(_0x57fdfe,_0x5f3824,_0x2b0711,_0x58a3a8,_0x501616,_0x50edb2){var _0xb3e981,_0xe666b0;_0x50edb2['remoteUri']=intUtil[_0x43e7('0x46')](_0x50edb2[_0x43e7('0x14')]);_0x50edb2[_0x43e7('0x47')]=intUtil['stripTrailingSlash'](_0x50edb2[_0x43e7('0x47')]);if(_0x501616&&_0x501616[_0x43e7('0x65')]){logger[_0x43e7('0xb')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',_0x43e7('0x5d'));_0x5f3824[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x50edb2[_0x43e7('0x47')],_0x5f3824[_0x43e7('0x4a')],md5(_0x5f3824['uniqueid']));}else{_0x5f3824['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x50edb2);return getUser(_0x50edb2)['then'](function(_0x5cb26e){_0xb3e981=_0x5cb26e;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0xb3e981['id']);return getEndUser(_0x50edb2,_0x5f3824['calleridname'],_0x5f3824[_0x43e7('0x68')]);})[_0x43e7('0xe')](function(_0x1e2fed){_0xe666b0=_0x1e2fed;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xe666b0['id']);return getTicket(_0x50edb2,_0xb3e981,_0xe666b0,_0x2b0711,_0x5f3824);})[_0x43e7('0xe')](function(_0x398a78){if(_0x398a78){logger['info'](_0x43e7('0x4e'));logger[_0x43e7('0xb')]('The\x20Ticket\x20ID\x20is:',_0x398a78['id']);}})[_0x43e7('0x58')](function(_0x5c2c5f){logger[_0x43e7('0x56')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',JSON[_0x43e7('0x63')](_0x5c2c5f));});};
\ No newline at end of file
+var _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe14b,0x93));var _0xbe14=function(_0x182b04,_0x1da09c){_0x182b04=_0x182b04-0x0;var _0x45137c=_0xe14b[_0x182b04];return _0x45137c;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
index 721dc50..bd9a87c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc48=['ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','serverUrl','stripTrailingSlash','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','ioredis','../../../../config/logger','defaults','redis','socket.io-emitter','modernAuthentication','remoteUri','data7','tenantId','CloudProvider','data5','clientId','username','password','then','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','toLowerCase','outbound','destcalleridnum','calleridnum','POST','contacts','/systemusers(','body','odata-entityid','substring','enduserId','telephone1','contacts?$select=','&$filter=','replace','%2b','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','length','forEach','includes','picklist','type','nameField','customField','idField','indexOf','content','ticketType','incidents','assign','Subjects','getString','Descriptions','phonecall','queue','/contacts(','callDirection','phonecalls','Fields','headers','lastIndexOf'];(function(_0x191fde,_0x3fb6e8){var _0x3b2a6b=function(_0x140ae0){while(--_0x140ae0){_0x191fde['push'](_0x191fde['shift']());}};_0x3b2a6b(++_0x3fb6e8);}(_0xcc48,0x89));var _0x8cc4=function(_0x37306a,_0x435902){_0x37306a=_0x37306a-0x0;var _0x552039=_0xcc48[_0x37306a];return _0x552039;};'use strict';var _=require(_0x8cc4('0x0'));var rp=require(_0x8cc4('0x1'));var util=require(_0x8cc4('0x2'));var intUtil=require(_0x8cc4('0x3'));var md5=require(_0x8cc4('0x4'));var Redis=require(_0x8cc4('0x5'));var logger=require(_0x8cc4('0x6'))('dynamics365');var config=require('../../../../config/environment');config['redis']=_[_0x8cc4('0x7')](config[_0x8cc4('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x8cc4('0x9'))(new Redis(config[_0x8cc4('0x8')]));function getAuthToken(_0x4a9f41,_0x41e953,_0x9675d){if(_0x4a9f41[_0x8cc4('0xa')]){_0x4a9f41[_0x8cc4('0xb')]=_0x4a9f41['CloudProvider'][_0x8cc4('0xc')];_0x4a9f41[_0x8cc4('0xd')]=_0x4a9f41[_0x8cc4('0xe')]['data2'];return Promise['resolve'](_0x4a9f41[_0x8cc4('0xe')][_0x8cc4('0xf')]);}var _0x4d1e9d={'method':'POST','uri':_0x41e953,'form':{'client_id':_0x4a9f41[_0x8cc4('0x10')],'resource':_0x4a9f41[_0x8cc4('0xb')],'username':_0x4a9f41[_0x8cc4('0x11')],'password':_0x4a9f41['password'],'grant_type':_0x8cc4('0x12'),'client_secret':_0x4a9f41['clientSecret']},'json':!![]};return rp(_0x4d1e9d)[_0x8cc4('0x13')](function(_0x4672a5){return _0x4672a5['access_token'];})[_0x8cc4('0x14')](function(_0x4f218b){logger[_0x8cc4('0x15')]('['+[_0x9675d[_0x8cc4('0x16')]()]+_0x8cc4('0x17'));return _0x4f218b[_0x8cc4('0x18')];});}function getUser(_0x12178c,_0x49cc3a,_0x34a00e,_0x347d47,_0x2ee0a7,_0x313733){return new Promise(function(_0x4a95bb,_0x3e447e){return getAuthToken(_0x49cc3a,_0x347d47,_0x313733)['then'](function(_0x35a04d){var _0x3b6f07={'method':_0x8cc4('0x19'),'uri':_0x2ee0a7+_0x8cc4('0x1a'),'headers':{'Authorization':_0x8cc4('0x1b')+_0x35a04d,'OData-Version':_0x8cc4('0x1c')},'json':!![]};return rp(_0x3b6f07);})[_0x8cc4('0x13')](function(_0x786471){var _0x3d7f40=_0x786471[_0x8cc4('0x1d')];var _0x5e2902=![];var _0x27bc1d=null;if(!_[_0x8cc4('0x1e')](_0x34a00e)){if(intUtil[_0x8cc4('0x1f')](_0x34a00e[_0x8cc4('0x20')])){_0x12178c[_0x8cc4('0x21')]=_0x34a00e[_0x8cc4('0x20')];for(_0x27bc1d=0x0;_0x27bc1d<_0x3d7f40['length'];_0x27bc1d++){if(_0x3d7f40[_0x27bc1d][_0x8cc4('0x22')]===_0x34a00e[_0x8cc4('0x20')]&&!_0x3d7f40[_0x27bc1d][_0x8cc4('0x23')]){_0x5e2902=!![];logger[_0x8cc4('0x24')]('['+[_0x313733['toUpperCase']()]+_0x8cc4('0x25')+_0x3d7f40[_0x27bc1d][_0x8cc4('0x26')]+'!');_0x12178c['userId']=_0x3d7f40[_0x27bc1d][_0x8cc4('0x26')];}}}}if(!_0x5e2902){logger[_0x8cc4('0x24')]('['+[_0x313733[_0x8cc4('0x16')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x12178c['userEmail']=_0x49cc3a[_0x8cc4('0x11')];for(_0x27bc1d=0x0;_0x27bc1d<_0x3d7f40['length'];_0x27bc1d++){if(_0x3d7f40[_0x27bc1d][_0x8cc4('0x22')]===_0x49cc3a[_0x8cc4('0x11')]){_0x12178c[_0x8cc4('0x27')]=_0x3d7f40[_0x27bc1d][_0x8cc4('0x26')];}}}_0x4a95bb(_0x12178c);})['catch'](function(_0x41df5f){_0x3e447e(_0x41df5f[_0x8cc4('0x18')]);});});}function createEndUser(_0x20ee6f,_0x371b3a,_0x563b10,_0x362ecc,_0x5bbbfa,_0x1d81cc,_0x5767a3){return new Promise(function(_0xe74fa1,_0x50b03b){return getAuthToken(_0x371b3a,_0x563b10,_0x1d81cc)[_0x8cc4('0x13')](function(_0x9c68da){var _0x33b81b=_0x1d81cc[_0x8cc4('0x28')]()===_0x8cc4('0x29')?_0x5bbbfa[_0x8cc4('0x2a')]:_0x5bbbfa[_0x8cc4('0x2b')];var _0x35850d={'method':_0x8cc4('0x2c'),'uri':_0x362ecc+_0x8cc4('0x2d'),'body':{'fullname':_0x33b81b,'firstname':_0x33b81b,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x8cc4('0x2e')+_0x20ee6f[_0x8cc4('0x27')]+')'},'headers':{'Authorization':_0x8cc4('0x1b')+_0x9c68da,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x35850d[_0x8cc4('0x2f')][_0x5767a3]=_0x33b81b;return rp(_0x35850d);})['then'](function(_0x23d0c7){var _0x45c41b=_0x23d0c7['headers'][_0x8cc4('0x30')];var _0x4df812=_0x45c41b[_0x8cc4('0x31')](_0x45c41b['lastIndexOf']('(')+0x1,_0x45c41b['lastIndexOf'](')'));_0x20ee6f[_0x8cc4('0x32')]=_0x4df812;_0xe74fa1(_0x20ee6f);})[_0x8cc4('0x14')](function(_0x10725d){_0x50b03b(_0x10725d[_0x8cc4('0x18')]);});});}function getEndUser(_0x3fb1af,_0x1bfd8e,_0x284d1d,_0x33f581,_0x4fd99e,_0x1ac69d,_0x552992,_0x54cfc4){var _0x36f9b3=_0x1ac69d[_0x8cc4('0x28')]()==='outbound'?_0x4fd99e[_0x8cc4('0x2a')]:_0x4fd99e[_0x8cc4('0x2b')];return getAuthToken(_0x1bfd8e,_0x284d1d,_0x1ac69d)['then'](function(_0x58e9d7){_0x54cfc4=_0x54cfc4?_0x54cfc4:_0x8cc4('0x33');var _0x7b8544={'method':'GET','uri':_0x33f581+_0x8cc4('0x34')+_0x54cfc4+_0x8cc4('0x35')+_0x54cfc4+'\x20eq\x20\x27'+_0x36f9b3[_0x8cc4('0x36')]('+',_0x8cc4('0x37'))+'\x27','headers':{'Authorization':_0x8cc4('0x1b')+_0x58e9d7,'If-None-Match':null,'OData-Version':_0x8cc4('0x1c')},'json':!![]};return rp(_0x7b8544);})['then'](function(_0x79ea99){var _0x4f4cde=![];if(!_0x79ea99)return _0x4f4cde;var _0x2535ec=_0x79ea99[_0x8cc4('0x1d')];for(var _0x14aae1=0x0;_0x14aae1<_0x2535ec['length'];_0x14aae1++){if(_0x2535ec[_0x14aae1][_0x54cfc4]===_0x36f9b3){_0x4f4cde=!![];_0x3fb1af['enduserId']=_0x2535ec[_0x14aae1]['contactid'];}}return _0x4f4cde;})['then'](function(_0x464249){if(_0x464249)return _0x3fb1af;if(_0x552992===_0x8cc4('0x38')){logger['info']('['+[_0x1ac69d['toUpperCase']()]+_0x8cc4('0x39'));return _0x3fb1af;}return createEndUser(_0x3fb1af,_0x1bfd8e,_0x284d1d,_0x33f581,_0x4fd99e,_0x1ac69d,_0x54cfc4)['then'](function(_0x10650f){logger[_0x8cc4('0x24')]('['+[_0x1ac69d['toUpperCase']()]+_0x8cc4('0x3a'),_0x10650f['enduserId']);return _0x10650f;});});}function getCustomFields(_0x22a093,_0x1bb852,_0x21baf8){var _0x12b12e={};if(_0x22a093[_0x8cc4('0x3b')]>0x0){_[_0x8cc4('0x3c')](_0x22a093,function(_0x5529a5){if(_[_0x8cc4('0x3d')](['string',_0x8cc4('0x3e')],_0x5529a5[_0x8cc4('0x3f')])&&_0x5529a5[_0x8cc4('0x40')]&&!_0x5529a5[_0x8cc4('0x41')]){var _0x4f8a76=_0x5529a5[_0x8cc4('0x42')]['toLowerCase']();var _0x319883=_0x4f8a76[_0x8cc4('0x31')](0x0,_0x4f8a76[_0x8cc4('0x43')]('_'));var _0x170823=_0x4f8a76[_0x8cc4('0x31')](_0x4f8a76['indexOf']('_')+0x1);if(_0x319883===_0x21baf8){_0x12b12e[_0x170823]=_0x5529a5[_0x8cc4('0x44')];}}});}return _0x12b12e;}function getTicket(_0x20dd0d,_0x50f276,_0x48684b,_0x14b9a3,_0x436d53,_0x1ada2b,_0xb1761a){return new Promise(function(_0x3eda7b,_0x3f8aa1){var _0x261d10;return getAuthToken(_0x50f276,_0x48684b,_0xb1761a)[_0x8cc4('0x13')](function(_0x2a830e){if(_0x1ada2b[_0x8cc4('0x45')]==='incident'){_0x261d10={'method':_0x8cc4('0x2c'),'uri':_0x14b9a3+_0x8cc4('0x46'),'body':Object[_0x8cc4('0x47')]({},{'title':intUtil['getString'](_0x1ada2b[_0x8cc4('0x48')],_0x436d53,'\x20'),'description':intUtil[_0x8cc4('0x49')](_0x1ada2b[_0x8cc4('0x4a')],_0x436d53,'\x0a'),'customerid_contact@odata.bind':_0x20dd0d['enduserId']?'/contacts('+_0x20dd0d[_0x8cc4('0x32')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x20dd0d[_0x8cc4('0x27')]+')','caseorigincode':'1'},getCustomFields(_0x1ada2b['Fields'],_0x436d53,_0x1ada2b['ticketType'])),'headers':{'Authorization':_0x8cc4('0x1b')+_0x2a830e,'OData-Version':_0x8cc4('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x1ada2b[_0x8cc4('0x45')]===_0x8cc4('0x4b')){var _0x1574a1=_0x20dd0d[_0x8cc4('0x32')]?[{'partyid_systemuser@odata.bind':_0x8cc4('0x2e')+_0x20dd0d['userId']+')','participationtypemask':_0x20dd0d['callDirection']===_0x8cc4('0x4c')?0x2:0x1},{'partyid_contact@odata.bind':_0x8cc4('0x4d')+_0x20dd0d['enduserId']+')','participationtypemask':_0x20dd0d['callDirection']==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x20dd0d[_0x8cc4('0x27')]+')','participationtypemask':_0x20dd0d[_0x8cc4('0x4e')]==='queue'?0x2:0x1}];_0x261d10={'method':'POST','uri':_0x14b9a3+_0x8cc4('0x4f'),'body':Object[_0x8cc4('0x47')]({},{'subject':intUtil[_0x8cc4('0x49')](_0x1ada2b[_0x8cc4('0x48')],_0x436d53,'\x20'),'phonenumber':String(_0x436d53[_0x8cc4('0x2b')]),'description':intUtil[_0x8cc4('0x49')](_0x1ada2b[_0x8cc4('0x4a')],_0x436d53,'\x0a'),'regardingobjectid_contact@odata.bind':_0x20dd0d['enduserId']?_0x8cc4('0x4d')+_0x20dd0d[_0x8cc4('0x32')]+')':undefined,'ownerid@odata.bind':_0x8cc4('0x2e')+_0x20dd0d[_0x8cc4('0x27')]+')','directioncode':_0x20dd0d[_0x8cc4('0x4e')]==='queue'?![]:!![],'phonecall_activity_parties':_0x1574a1},getCustomFields(_0x1ada2b[_0x8cc4('0x50')],_0x436d53,_0x1ada2b[_0x8cc4('0x45')])),'headers':{'Authorization':'Bearer\x20'+_0x2a830e,'OData-Version':_0x8cc4('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x261d10);})['then'](function(_0x3d3e31){var _0x2174eb=_0x3d3e31[_0x8cc4('0x51')][_0x8cc4('0x30')];var _0x15a43b=_0x2174eb['substring'](_0x2174eb['lastIndexOf']('(')+0x1,_0x2174eb[_0x8cc4('0x52')](')'));_0x20dd0d[_0x8cc4('0x53')]=_0x15a43b;_0x3eda7b(_0x20dd0d);})[_0x8cc4('0x14')](function(_0x245960){_0x3f8aa1(_0x245960[_0x8cc4('0x18')]);});});}function emit(_0x32d2eb,_0xad0fe1,_0x1a25d5,_0xdec154){var _0x4e9c2c={'uri':util[_0x8cc4('0x54')](_0x8cc4('0x55'),_0x32d2eb,_0x1a25d5,_0xdec154)};io['to'](util[_0x8cc4('0x54')](_0x8cc4('0x56'),_0xad0fe1))[_0x8cc4('0x57')](_0x8cc4('0x58'),_0x4e9c2c);}exports['cs']=function(_0x1e9af,_0x32e644,_0x436711,_0xdf8234,_0x5e3e69,_0x588ed0,_0x52c4f8,_0x3d3451){var _0x23f8bb={};_0x588ed0['remoteUri']=_0x588ed0[_0x8cc4('0xa')]?intUtil['stripTrailingSlash'](_0x588ed0[_0x8cc4('0xe')][_0x8cc4('0xc')]):intUtil['stripTrailingSlash'](_0x588ed0[_0x8cc4('0xb')]);_0x588ed0[_0x8cc4('0x59')]=intUtil[_0x8cc4('0x5a')](_0x588ed0['serverUrl']);_0x23f8bb[_0x8cc4('0x4e')]=_0x3d3451==='queue'||_0x3d3451===_0x8cc4('0x5b')?_0x8cc4('0x4c'):_0x8cc4('0x29');var _0x12f2c2=_0x588ed0['modernAuthentication']?util[_0x8cc4('0x54')](_0x8cc4('0x5c'),_0x588ed0[_0x8cc4('0xe')][_0x8cc4('0xc')]):util[_0x8cc4('0x54')](_0x8cc4('0x5c'),_0x588ed0[_0x8cc4('0xb')]);var _0x1b98e4=util[_0x8cc4('0x54')](_0x8cc4('0x5d'),_0x588ed0[_0x8cc4('0xd')]);var _0x556f8b=util[_0x8cc4('0x54')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x588ed0[_0x8cc4('0x59')],_0x32e644[_0x8cc4('0x5e')],md5(_0x32e644[_0x8cc4('0x5e')]));if(_0x5e3e69&&_0x5e3e69[_0x8cc4('0x5f')]){logger[_0x8cc4('0x24')]('[QUEUE]',_0x8cc4('0x60'));_0x32e644[_0x8cc4('0x61')]=_0x556f8b;}else if(_0x52c4f8&&_0x52c4f8['recordingFormat']&&_0x52c4f8['recordingFormat']!==_0x8cc4('0x62')){logger[_0x8cc4('0x24')](_0x8cc4('0x63'),'Recording\x20is\x20enabled!');_0x32e644[_0x8cc4('0x61')]=_0x556f8b;}else{_0x32e644[_0x8cc4('0x61')]='';}return getUser(_0x23f8bb,_0x588ed0,_0xdf8234,_0x1b98e4,_0x12f2c2,_0x3d3451)[_0x8cc4('0x13')](function(_0x3e72c9){logger[_0x8cc4('0x24')]('['+_0x3d3451[_0x8cc4('0x16')]()+_0x8cc4('0x64'),_0x3e72c9[_0x8cc4('0x27')]);logger[_0x8cc4('0x24')]('['+_0x3d3451[_0x8cc4('0x16')]()+_0x8cc4('0x65'),_0x3e72c9['userEmail']);return getEndUser(_0x3e72c9,_0x588ed0,_0x1b98e4,_0x12f2c2,_0x32e644,_0x3d3451,_0x436711[_0x8cc4('0x66')],_0x436711[_0x8cc4('0x67')]);})['then'](function(_0x58b279){logger[_0x8cc4('0x24')]('['+_0x3d3451['toUpperCase']()+_0x8cc4('0x68'),_0x58b279[_0x8cc4('0x32')]);logger[_0x8cc4('0x24')]('['+_0x3d3451[_0x8cc4('0x16')]()+_0x8cc4('0x69'),_0x32e644[_0x8cc4('0x2b')]);return getTicket(_0x58b279,_0x588ed0,_0x1b98e4,_0x12f2c2,_0x32e644,_0x436711,_0x3d3451);})[_0x8cc4('0x13')](function(_0x454ed9){logger[_0x8cc4('0x24')](util['format']('['+_0x3d3451[_0x8cc4('0x16')]()+_0x8cc4('0x6a'),_0x436711[_0x8cc4('0x45')],_0x454ed9[_0x8cc4('0x53')]));logger[_0x8cc4('0x24')](util[_0x8cc4('0x54')]('['+_0x3d3451['toUpperCase']()+']\x20Call\x20direction:\x20%s',_0x3d3451));if(_0x3d3451!==_0x8cc4('0x5b')&&_0x436711[_0x8cc4('0x6b')]){logger['info']('['+_0x3d3451[_0x8cc4('0x16')]()+']',_0x8cc4('0x6c'));emit(_0x588ed0[_0x8cc4('0xb')],_0xdf8234['name'],_0x436711['ticketType'],_0x454ed9[_0x8cc4('0x53')]);}})[_0x8cc4('0x14')](function(_0x598ba3){logger[_0x8cc4('0x15')]('['+_0x3d3451['toUpperCase']()+_0x8cc4('0x6d'),_0x598ba3[_0x8cc4('0x18')]);console[_0x8cc4('0x15')]('Error\x20running\x20Dynamics365\x20integration',_0x598ba3);});};
\ No newline at end of file
+var _0x2578=['string','type','nameField','customField','idField','indexOf','substring','content','ticketType','incident','POST','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','callDirection','queue','phonecalls','assign','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','modernAuthentication','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','data7','CloudProvider','resolve','data5','remoteUri','username','password','clientSecret','access_token','catch','error','then','GET','4.0','value','isNil','validateEmail','email','length','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','internalemailaddress','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','Bearer\x20','body','headers','odata-entityid','lastIndexOf','enduserId','message','telephone1','contacts?$select=','&$filter=','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','forEach'];(function(_0x24bf11,_0x320ad8){var _0x20f05b=function(_0x175223){while(--_0x175223){_0x24bf11['push'](_0x24bf11['shift']());}};_0x20f05b(++_0x320ad8);}(_0x2578,0x117));var _0x8257=function(_0x1c9fc5,_0x3ca335){_0x1c9fc5=_0x1c9fc5-0x0;var _0x4eea03=_0x2578[_0x1c9fc5];return _0x4eea03;};'use strict';var _=require(_0x8257('0x0'));var rp=require(_0x8257('0x1'));var util=require(_0x8257('0x2'));var intUtil=require('./util');var md5=require(_0x8257('0x3'));var Redis=require('ioredis');var logger=require(_0x8257('0x4'))(_0x8257('0x5'));var config=require(_0x8257('0x6'));config[_0x8257('0x7')]=_[_0x8257('0x8')](config[_0x8257('0x7')],{'host':_0x8257('0x9'),'port':0x18eb});var io=require(_0x8257('0xa'))(new Redis(config[_0x8257('0x7')]));function getAuthToken(_0x353831,_0x419dad,_0x3130d8){if(_0x353831['modernAuthentication']){_0x353831['remoteUri']=_0x353831['CloudProvider'][_0x8257('0xb')];_0x353831['tenantId']=_0x353831[_0x8257('0xc')]['data2'];return Promise[_0x8257('0xd')](_0x353831[_0x8257('0xc')][_0x8257('0xe')]);}var _0x508a5a={'method':'POST','uri':_0x419dad,'form':{'client_id':_0x353831['clientId'],'resource':_0x353831[_0x8257('0xf')],'username':_0x353831[_0x8257('0x10')],'password':_0x353831[_0x8257('0x11')],'grant_type':'password','client_secret':_0x353831[_0x8257('0x12')]},'json':!![]};return rp(_0x508a5a)['then'](function(_0x5b7857){return _0x5b7857[_0x8257('0x13')];})[_0x8257('0x14')](function(_0x47811a){logger[_0x8257('0x15')]('['+[_0x3130d8['toUpperCase']()]+']\x20Wrong\x20credentials!');return _0x47811a['message'];});}function getUser(_0x5c7b5b,_0x2f3be9,_0x4cbde6,_0x445ead,_0x4cc5a2,_0x2633e2){return new Promise(function(_0x2dc485,_0x1aed37){return getAuthToken(_0x2f3be9,_0x445ead,_0x2633e2)[_0x8257('0x16')](function(_0x12bed5){var _0x2ace71={'method':_0x8257('0x17'),'uri':_0x4cc5a2+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':'Bearer\x20'+_0x12bed5,'OData-Version':_0x8257('0x18')},'json':!![]};return rp(_0x2ace71);})[_0x8257('0x16')](function(_0x4a82e5){var _0x2678da=_0x4a82e5[_0x8257('0x19')];var _0x1e2f79=![];var _0x3b8b0f=null;if(!_[_0x8257('0x1a')](_0x4cbde6)){if(intUtil[_0x8257('0x1b')](_0x4cbde6[_0x8257('0x1c')])){_0x5c7b5b['userEmail']=_0x4cbde6[_0x8257('0x1c')];for(_0x3b8b0f=0x0;_0x3b8b0f<_0x2678da[_0x8257('0x1d')];_0x3b8b0f++){if(_0x2678da[_0x3b8b0f]['internalemailaddress']===_0x4cbde6[_0x8257('0x1c')]&&!_0x2678da[_0x3b8b0f][_0x8257('0x1e')]){_0x1e2f79=!![];logger[_0x8257('0x1f')]('['+[_0x2633e2[_0x8257('0x20')]()]+_0x8257('0x21')+_0x2678da[_0x3b8b0f][_0x8257('0x22')]+'!');_0x5c7b5b[_0x8257('0x23')]=_0x2678da[_0x3b8b0f]['systemuserid'];}}}}if(!_0x1e2f79){logger['info']('['+[_0x2633e2['toUpperCase']()]+_0x8257('0x24'));_0x5c7b5b[_0x8257('0x25')]=_0x2f3be9['username'];for(_0x3b8b0f=0x0;_0x3b8b0f<_0x2678da['length'];_0x3b8b0f++){if(_0x2678da[_0x3b8b0f][_0x8257('0x26')]===_0x2f3be9['username']){_0x5c7b5b[_0x8257('0x23')]=_0x2678da[_0x3b8b0f][_0x8257('0x22')];}}}_0x2dc485(_0x5c7b5b);})[_0x8257('0x14')](function(_0x24d388){_0x1aed37(_0x24d388['message']);});});}function createEndUser(_0x391f9d,_0x15d567,_0x29871,_0x40b831,_0x3a2f74,_0x334197,_0x28e8ca){return new Promise(function(_0x1605d9,_0x25dbd4){return getAuthToken(_0x15d567,_0x29871,_0x334197)[_0x8257('0x16')](function(_0xd040d8){var _0x4091c0=_0x334197[_0x8257('0x27')]()===_0x8257('0x28')?_0x3a2f74[_0x8257('0x29')]:_0x3a2f74[_0x8257('0x2a')];var _0x2c929c={'method':'POST','uri':_0x40b831+_0x8257('0x2b'),'body':{'fullname':_0x4091c0,'firstname':_0x4091c0,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x8257('0x2c')+_0x391f9d[_0x8257('0x23')]+')'},'headers':{'Authorization':_0x8257('0x2d')+_0xd040d8,'OData-Version':_0x8257('0x18')},'json':!![],'resolveWithFullResponse':!![]};_0x2c929c[_0x8257('0x2e')][_0x28e8ca]=_0x4091c0;return rp(_0x2c929c);})[_0x8257('0x16')](function(_0x1ffcbd){var _0x5b146e=_0x1ffcbd[_0x8257('0x2f')][_0x8257('0x30')];var _0x11e92f=_0x5b146e['substring'](_0x5b146e[_0x8257('0x31')]('(')+0x1,_0x5b146e[_0x8257('0x31')](')'));_0x391f9d[_0x8257('0x32')]=_0x11e92f;_0x1605d9(_0x391f9d);})[_0x8257('0x14')](function(_0x1447ac){_0x25dbd4(_0x1447ac[_0x8257('0x33')]);});});}function getEndUser(_0x10c3ab,_0x2de910,_0xb4d5d2,_0x2e09e9,_0x5304fb,_0x56fdec,_0x5b3971,_0x4b6dda){var _0x1ae0c8=_0x56fdec['toLowerCase']()==='outbound'?_0x5304fb[_0x8257('0x29')]:_0x5304fb[_0x8257('0x2a')];return getAuthToken(_0x2de910,_0xb4d5d2,_0x56fdec)[_0x8257('0x16')](function(_0x46e905){_0x4b6dda=_0x4b6dda?_0x4b6dda:_0x8257('0x34');var _0x106bea={'method':_0x8257('0x17'),'uri':_0x2e09e9+_0x8257('0x35')+_0x4b6dda+_0x8257('0x36')+_0x4b6dda+'\x20eq\x20\x27'+_0x1ae0c8['replace']('+',_0x8257('0x37'))+'\x27','headers':{'Authorization':_0x8257('0x2d')+_0x46e905,'If-None-Match':null,'OData-Version':_0x8257('0x18')},'json':!![]};return rp(_0x106bea);})[_0x8257('0x16')](function(_0x256504){var _0x276186=![];if(!_0x256504)return _0x276186;var _0x371b81=_0x256504[_0x8257('0x19')];for(var _0x48eb88=0x0;_0x48eb88<_0x371b81[_0x8257('0x1d')];_0x48eb88++){if(_0x371b81[_0x48eb88][_0x4b6dda]===_0x1ae0c8){_0x276186=!![];_0x10c3ab[_0x8257('0x32')]=_0x371b81[_0x48eb88][_0x8257('0x38')];}}return _0x276186;})['then'](function(_0x1a42f7){if(_0x1a42f7)return _0x10c3ab;if(_0x5b3971===_0x8257('0x39')){logger[_0x8257('0x1f')]('['+[_0x56fdec[_0x8257('0x20')]()]+_0x8257('0x3a'));return _0x10c3ab;}return createEndUser(_0x10c3ab,_0x2de910,_0xb4d5d2,_0x2e09e9,_0x5304fb,_0x56fdec,_0x4b6dda)[_0x8257('0x16')](function(_0x14d04a){logger['info']('['+[_0x56fdec[_0x8257('0x20')]()]+']\x20Enduser\x20created!',_0x14d04a[_0x8257('0x32')]);return _0x14d04a;});});}function getCustomFields(_0x11040c,_0x4af6aa,_0x55af62){var _0xc5f23={};if(_0x11040c[_0x8257('0x1d')]>0x0){_[_0x8257('0x3b')](_0x11040c,function(_0x59f71a){if(_['includes']([_0x8257('0x3c'),'picklist'],_0x59f71a[_0x8257('0x3d')])&&_0x59f71a[_0x8257('0x3e')]&&!_0x59f71a[_0x8257('0x3f')]){var _0xf0ae4=_0x59f71a[_0x8257('0x40')][_0x8257('0x27')]();var _0x356dc9=_0xf0ae4['substring'](0x0,_0xf0ae4[_0x8257('0x41')]('_'));var _0x31caf9=_0xf0ae4[_0x8257('0x42')](_0xf0ae4[_0x8257('0x41')]('_')+0x1);if(_0x356dc9===_0x55af62){_0xc5f23[_0x31caf9]=_0x59f71a[_0x8257('0x43')];}}});}return _0xc5f23;}function getTicket(_0x55135a,_0x53ff0e,_0x4e2375,_0x3490ea,_0x1c46e1,_0x4e0d8c,_0x394cc5){return new Promise(function(_0x1a88e0,_0x4e7362){var _0x279bfa;return getAuthToken(_0x53ff0e,_0x4e2375,_0x394cc5)[_0x8257('0x16')](function(_0x462d08){if(_0x4e0d8c[_0x8257('0x44')]===_0x8257('0x45')){_0x279bfa={'method':_0x8257('0x46'),'uri':_0x3490ea+'incidents','body':Object['assign']({},{'title':intUtil[_0x8257('0x47')](_0x4e0d8c[_0x8257('0x48')],_0x1c46e1,'\x20'),'description':intUtil[_0x8257('0x47')](_0x4e0d8c[_0x8257('0x49')],_0x1c46e1,'\x0a'),'customerid_contact@odata.bind':_0x55135a[_0x8257('0x32')]?_0x8257('0x4a')+_0x55135a[_0x8257('0x32')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x55135a[_0x8257('0x23')]+')','caseorigincode':'1'},getCustomFields(_0x4e0d8c[_0x8257('0x4b')],_0x1c46e1,_0x4e0d8c[_0x8257('0x44')])),'headers':{'Authorization':_0x8257('0x2d')+_0x462d08,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x4e0d8c[_0x8257('0x44')]===_0x8257('0x4c')){var _0xf43616=_0x55135a[_0x8257('0x32')]?[{'partyid_systemuser@odata.bind':_0x8257('0x2c')+_0x55135a[_0x8257('0x23')]+')','participationtypemask':_0x55135a[_0x8257('0x4d')]===_0x8257('0x4e')?0x2:0x1},{'partyid_contact@odata.bind':_0x8257('0x4a')+_0x55135a['enduserId']+')','participationtypemask':_0x55135a[_0x8257('0x4d')]===_0x8257('0x4e')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x8257('0x2c')+_0x55135a['userId']+')','participationtypemask':_0x55135a[_0x8257('0x4d')]===_0x8257('0x4e')?0x2:0x1}];_0x279bfa={'method':_0x8257('0x46'),'uri':_0x3490ea+_0x8257('0x4f'),'body':Object[_0x8257('0x50')]({},{'subject':intUtil['getString'](_0x4e0d8c[_0x8257('0x48')],_0x1c46e1,'\x20'),'phonenumber':String(_0x1c46e1[_0x8257('0x2a')]),'description':intUtil['getString'](_0x4e0d8c['Descriptions'],_0x1c46e1,'\x0a'),'regardingobjectid_contact@odata.bind':_0x55135a['enduserId']?_0x8257('0x4a')+_0x55135a[_0x8257('0x32')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x55135a['userId']+')','directioncode':_0x55135a[_0x8257('0x4d')]===_0x8257('0x4e')?![]:!![],'phonecall_activity_parties':_0xf43616},getCustomFields(_0x4e0d8c[_0x8257('0x4b')],_0x1c46e1,_0x4e0d8c[_0x8257('0x44')])),'headers':{'Authorization':_0x8257('0x2d')+_0x462d08,'OData-Version':_0x8257('0x18')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x279bfa);})[_0x8257('0x16')](function(_0x5e5bc7){var _0x2ea073=_0x5e5bc7[_0x8257('0x2f')][_0x8257('0x30')];var _0x5c671e=_0x2ea073[_0x8257('0x42')](_0x2ea073['lastIndexOf']('(')+0x1,_0x2ea073[_0x8257('0x31')](')'));_0x55135a[_0x8257('0x51')]=_0x5c671e;_0x1a88e0(_0x55135a);})[_0x8257('0x14')](function(_0x5c608c){_0x4e7362(_0x5c608c[_0x8257('0x33')]);});});}function emit(_0x34aa96,_0x34b3b4,_0x100e84,_0x1515a6){var _0x2dd218={'uri':util[_0x8257('0x52')](_0x8257('0x53'),_0x34aa96,_0x100e84,_0x1515a6)};io['to'](util['format'](_0x8257('0x54'),_0x34b3b4))[_0x8257('0x55')](_0x8257('0x56'),_0x2dd218);}exports['cs']=function(_0x5a7621,_0x158130,_0xb08b21,_0x334a09,_0x4de810,_0x14ae6c,_0x2fae28,_0x17548a){var _0x5c77be={};_0x14ae6c[_0x8257('0xf')]=_0x14ae6c[_0x8257('0x57')]?intUtil[_0x8257('0x58')](_0x14ae6c[_0x8257('0xc')][_0x8257('0xb')]):intUtil[_0x8257('0x58')](_0x14ae6c[_0x8257('0xf')]);_0x14ae6c[_0x8257('0x59')]=intUtil[_0x8257('0x58')](_0x14ae6c[_0x8257('0x59')]);_0x5c77be['callDirection']=_0x17548a===_0x8257('0x4e')||_0x17548a===_0x8257('0x5a')?'queue':_0x8257('0x28');var _0x5372da=_0x14ae6c[_0x8257('0x57')]?util['format'](_0x8257('0x5b'),_0x14ae6c[_0x8257('0xc')]['data7']):util['format'](_0x8257('0x5b'),_0x14ae6c[_0x8257('0xf')]);var _0xce4d39=util['format'](_0x8257('0x5c'),_0x14ae6c['tenantId']);var _0x5993a7=util[_0x8257('0x52')](_0x8257('0x5d'),_0x14ae6c[_0x8257('0x59')],_0x158130[_0x8257('0x5e')],md5(_0x158130[_0x8257('0x5e')]));if(_0x4de810&&_0x4de810[_0x8257('0x5f')]){logger[_0x8257('0x1f')](_0x8257('0x60'),'Recording\x20is\x20enabled!');_0x158130[_0x8257('0x61')]=_0x5993a7;}else if(_0x2fae28&&_0x2fae28[_0x8257('0x62')]&&_0x2fae28[_0x8257('0x62')]!=='none'){logger[_0x8257('0x1f')](_0x8257('0x63'),_0x8257('0x64'));_0x158130[_0x8257('0x61')]=_0x5993a7;}else{_0x158130['recordingURL']='';}return getUser(_0x5c77be,_0x14ae6c,_0x334a09,_0xce4d39,_0x5372da,_0x17548a)[_0x8257('0x16')](function(_0xa3dbf8){logger['info']('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x65'),_0xa3dbf8[_0x8257('0x23')]);logger[_0x8257('0x1f')]('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x66'),_0xa3dbf8[_0x8257('0x25')]);return getEndUser(_0xa3dbf8,_0x14ae6c,_0xce4d39,_0x5372da,_0x158130,_0x17548a,_0xb08b21[_0x8257('0x67')],_0xb08b21[_0x8257('0x68')]);})[_0x8257('0x16')](function(_0x17693e){logger[_0x8257('0x1f')]('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x69'),_0x17693e['enduserId']);logger[_0x8257('0x1f')]('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x6a'),_0x158130[_0x8257('0x2a')]);return getTicket(_0x17693e,_0x14ae6c,_0xce4d39,_0x5372da,_0x158130,_0xb08b21,_0x17548a);})[_0x8257('0x16')](function(_0x4d7b50){logger[_0x8257('0x1f')](util['format']('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x6b'),_0xb08b21[_0x8257('0x44')],_0x4d7b50['ticketId']));logger[_0x8257('0x1f')](util[_0x8257('0x52')]('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x6c'),_0x17548a));if(_0x17548a!==_0x8257('0x5a')&&_0xb08b21[_0x8257('0x6d')]){logger[_0x8257('0x1f')]('['+_0x17548a[_0x8257('0x20')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x14ae6c[_0x8257('0xf')],_0x334a09[_0x8257('0x6e')],_0xb08b21[_0x8257('0x44')],_0x4d7b50[_0x8257('0x51')]);}})[_0x8257('0x14')](function(_0x5ebc51){logger['error']('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x6f'),_0x5ebc51[_0x8257('0x33')]);console[_0x8257('0x15')](_0x8257('0x70'),_0x5ebc51);});};
\ No newline at end of file
index 2f13336..3f9ce34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16bd=['%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!','Enduser\x20created.','Basic\x20%s','apiKey','base64','debug','[HTTP]','stringify','GET','length','map','includes','string','picklist','nameField','customField','toLowerCase','content','type','idField','push','toString','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','error','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Enduser\x20ID\x20is:','unmanaged','lastevent','toUpperCase','request-promise','md5','util','ioredis','./util','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Descriptions','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','find','contact','email'];(function(_0x2a56ad,_0x2b94bf){var _0x425175=function(_0x342f20){while(--_0x342f20){_0x2a56ad['push'](_0x2a56ad['shift']());}};_0x425175(++_0x2b94bf);}(_0x16bd,0x1ae));var _0xd16b=function(_0x45b29d,_0x44ce43){_0x45b29d=_0x45b29d-0x0;var _0x32d74=_0x16bd[_0x45b29d];return _0x32d74;};'use strict';var _=require('lodash');var rp=require(_0xd16b('0x0'));var md5=require(_0xd16b('0x1'));var util=require(_0xd16b('0x2'));var Redis=require(_0xd16b('0x3'));var intUtil=require(_0xd16b('0x4'));var config=require('../../../../config/environment');var logger=require(_0xd16b('0x5'))(_0xd16b('0x6'));config[_0xd16b('0x7')]=_[_0xd16b('0x8')](config[_0xd16b('0x7')],{'host':_0xd16b('0x9'),'port':0x18eb});var io=require(_0xd16b('0xa'))(new Redis(config['redis']));var headers={'Content-Type':_0xd16b('0xb'),'Accept':_0xd16b('0xb')};function emit(_0x393d72,_0x56a202,_0x3a5c89){io['to'](_0x393d72)[_0xd16b('0xc')](_0x56a202,_0x3a5c89);}function getTicket(_0xfde866,_0xc61dab,_0x4267b7,_0x8707f5,_0x55f8d0){logger[_0xd16b('0xd')](_0xd16b('0xe'));var _0x477605=_[_0xd16b('0xf')]({'responder_id':_0xc61dab['id'],'requester_id':_0x4267b7['id'],'name':util[_0xd16b('0x10')](_0xd16b('0x11'),_0x55f8d0[_0xd16b('0x12')]),'phone':_0x55f8d0[_0xd16b('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xd16b('0x14')](_0x8707f5['Subjects'],_0x55f8d0,'\x20'),'description':intUtil[_0xd16b('0x14')](_0x8707f5[_0xd16b('0x15')],_0x55f8d0,'<br>'),'tags':getTags(_0x8707f5['Tags'],_0xd16b('0x16'))},getCustomFields(_0x8707f5[_0xd16b('0x17')],_0x55f8d0));_0x477605[_0xd16b('0x18')]=_[_0xd16b('0x19')](_[_0xd16b('0x1a')](_0x477605[_0xd16b('0x18')],'id'),_0xd16b('0x1b'));return request({'uri':util[_0xd16b('0x10')](_0xd16b('0x1c'),_0xfde866[_0xd16b('0x1d')]),'method':_0xd16b('0x1e'),'body':_0x477605})[_0xd16b('0x1f')](function(_0x1d8fd2){logger[_0xd16b('0xd')]('Ticket\x20created!');return _0x1d8fd2;});}function getUser(_0x42ba48,_0x17796c){if(intUtil['validateEmail'](_0x17796c)){return request({'uri':util[_0xd16b('0x10')]('%s/api/v2/agents',_0x42ba48[_0xd16b('0x1d')]),'qs':{'email':_0x17796c}})[_0xd16b('0x1f')](function(_0x5b3b66){if(_0x5b3b66['length']){logger[_0xd16b('0xd')]('Agent\x20found!');return _[_0xd16b('0x20')](_0x5b3b66,function(_0x25ac73){return _0x25ac73[_0xd16b('0x21')][_0xd16b('0x22')]===_0x17796c;});}else{logger[_0xd16b('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xd16b('0x10')](_0xd16b('0x23'),_0x42ba48['remoteUri'])})['then'](function(_0x2bbe4c){logger[_0xd16b('0xd')](_0xd16b('0x24'));return _0x2bbe4c;});}});}else{logger[_0xd16b('0xd')](_0xd16b('0x25'));return request({'uri':util[_0xd16b('0x10')](_0xd16b('0x23'),_0x42ba48[_0xd16b('0x1d')])})[_0xd16b('0x1f')](function(_0x586b4c){logger['info'](_0xd16b('0x24'));return _0x586b4c;});}}function getEndUser(_0x38ad4f,_0x29c46b,_0x35c243){logger[_0xd16b('0xd')](_0xd16b('0x26'),_0x35c243);return request({'uri':util[_0xd16b('0x10')](_0xd16b('0x27'),_0x38ad4f[_0xd16b('0x1d')]),'qs':{'phone':_0x35c243}})['then'](function(_0x2a43ff){if(_0x2a43ff['length']){logger[_0xd16b('0xd')](_0xd16b('0x28'));return _[_0xd16b('0x20')](_0x2a43ff,{'phone':_0x35c243});}else{logger[_0xd16b('0xd')](_0xd16b('0x29'));return request({'uri':util[_0xd16b('0x10')]('%s/api/v2/contacts',_0x38ad4f[_0xd16b('0x1d')]),'method':_0xd16b('0x1e'),'body':{'name':_0x29c46b,'phone':_0x35c243}})[_0xd16b('0x1f')](function(_0x1e2e77){logger[_0xd16b('0xd')](_0xd16b('0x2a'));return _0x1e2e77;});}});}function getAuth(_0x1c215d){return util[_0xd16b('0x10')](_0xd16b('0x2b'),new Buffer(_0x1c215d[_0xd16b('0x2c')]+':X')['toString'](_0xd16b('0x2d')));}function request(_0x2d84c5){logger[_0xd16b('0x2e')](_0xd16b('0x2f'),JSON[_0xd16b('0x30')](_0x2d84c5));return rp(_[_0xd16b('0x8')](_0x2d84c5,{'method':_0xd16b('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x3b2481,_0x115529){var _0x27d017=[];if(_0x3b2481&&_0x3b2481[_0xd16b('0x32')]>0x0){_0x27d017=_[_0xd16b('0x33')](_0x3b2481,_0x115529);}return _0x27d017;}function getCustomFields(_0x466825,_0x35121c){var _0xef6d80=[];var _0x913c36={'custom_fields':[]};if(_0x466825[_0xd16b('0x32')]>0x0){_['forEach'](_0x466825,function(_0x2d1604){if(_[_0xd16b('0x34')]([_0xd16b('0x35'),_0xd16b('0x36')],_0x2d1604['type'])&&_0x2d1604[_0xd16b('0x37')]&&!_0x2d1604[_0xd16b('0x38')]){_0x913c36[_0x2d1604[_0xd16b('0x37')][_0xd16b('0x39')]()]=_0x2d1604[_0xd16b('0x3a')]['toString']();}else if(_[_0xd16b('0x34')]([_0xd16b('0x35'),_0xd16b('0x36')],_0x2d1604[_0xd16b('0x3b')])&&_0x2d1604[_0xd16b('0x3c')]&&_0x2d1604[_0xd16b('0x38')]){_0x913c36[_0xd16b('0x18')][_0xd16b('0x3d')]({'id':_0x2d1604[_0xd16b('0x3c')],'value':_0x2d1604[_0xd16b('0x3a')][_0xd16b('0x3e')]()});}else if(_0x2d1604[_0xd16b('0x3b')]===_0xd16b('0x3f')&&_0x2d1604[_0xd16b('0x40')]&&_0x2d1604['idField']&&_0x2d1604[_0xd16b('0x38')]){_0x35121c[_0x2d1604[_0xd16b('0x40')]]&&_0x913c36[_0xd16b('0x18')]['push']({'id':_0x2d1604[_0xd16b('0x3c')],'value':_0x35121c[_0x2d1604[_0xd16b('0x40')]]['toString']()});}else if(_0x2d1604[_0xd16b('0x3b')]===_0xd16b('0x41')&&_0x2d1604['Variable']&&_0x2d1604[_0xd16b('0x42')][_0xd16b('0x16')]&&_0x2d1604['idField']&&_0x2d1604[_0xd16b('0x38')]){_0x35121c[_0x2d1604[_0xd16b('0x42')][_0xd16b('0x16')][_0xd16b('0x39')]()]&&_0x913c36[_0xd16b('0x18')]['push']({'id':_0x2d1604[_0xd16b('0x3c')],'value':_0x35121c[_0x2d1604[_0xd16b('0x42')]['name'][_0xd16b('0x39')]()]['toString']()});}});}return _0x913c36;}exports[_0xd16b('0x43')]=function(_0x11dc37,_0x42797f,_0x4170ae,_0x2d6285,_0x56c0d8,_0x54ce3b){var _0x34a0b2,_0x263236;_0x54ce3b[_0xd16b('0x1d')]=intUtil[_0xd16b('0x44')](_0x54ce3b['remoteUri']);_0x54ce3b['serverUrl']=intUtil[_0xd16b('0x44')](_0x54ce3b[_0xd16b('0x45')]);if(_0x56c0d8&&_0x56c0d8[_0xd16b('0x46')]){logger[_0xd16b('0xd')](_0xd16b('0x47'),'Recording\x20is\x20enabled!');_0x42797f[_0xd16b('0x48')]=util[_0xd16b('0x10')](_0xd16b('0x49'),_0x54ce3b[_0xd16b('0x45')],_0x42797f[_0xd16b('0x4a')],md5(_0x42797f[_0xd16b('0x4a')]));}else{_0x42797f[_0xd16b('0x48')]='';}headers[_0xd16b('0x4b')]=getAuth(_0x54ce3b);return getUser(_0x54ce3b,_0x2d6285[_0xd16b('0x22')])[_0xd16b('0x1f')](function(_0x3c4794){_0x34a0b2=_0x3c4794;logger['info'](_0xd16b('0x4c'),_0x34a0b2['id']);return getEndUser(_0x54ce3b,_0x42797f[_0xd16b('0x12')],_0x42797f[_0xd16b('0x13')]);})[_0xd16b('0x1f')](function(_0x93dc4b){_0x263236=_0x93dc4b;logger[_0xd16b('0xd')]('The\x20Enduser\x20ID\x20is:',_0x263236['id']);return getTicket(_0x54ce3b,_0x34a0b2,_0x263236,_0x4170ae,_0x42797f);})[_0xd16b('0x1f')](function(_0x4ef0ba){if(_0x4ef0ba&&_0x4ef0ba['id']){logger['info'](_0xd16b('0x4d'));logger[_0xd16b('0xd')](_0xd16b('0x4e'),_0x4ef0ba['id']);logger[_0xd16b('0xd')](_0xd16b('0x47'),_0xd16b('0x4f'));emit(util[_0xd16b('0x10')](_0xd16b('0x50'),_0x2d6285['name']),'trigger:browser:url',{'uri':util[_0xd16b('0x10')]('%s/helpdesk/tickets/%d',_0x54ce3b['remoteUri'],_0x4ef0ba['id'])});}})[_0xd16b('0x51')](function(_0x2a5dac){logger[_0xd16b('0x52')](_0xd16b('0x47'),JSON[_0xd16b('0x30')](_0x2a5dac));});};exports[_0xd16b('0x53')]=function(_0x36a64c,_0x47a703,_0x2a4459,_0x360285,_0x3045a3,_0x4fb3c1,_0x1d36a3){var _0x1d620a,_0x41523a;_0x4fb3c1[_0xd16b('0x1d')]=intUtil[_0xd16b('0x44')](_0x4fb3c1['remoteUri']);_0x4fb3c1[_0xd16b('0x45')]=intUtil[_0xd16b('0x44')](_0x4fb3c1[_0xd16b('0x45')]);if(_0x1d36a3&&_0x1d36a3['recordingFormat']&&_0x1d36a3[_0xd16b('0x54')]!==_0xd16b('0x55')){logger[_0xd16b('0xd')](_0xd16b('0x56'),_0xd16b('0x57'));_0x47a703[_0xd16b('0x48')]=util[_0xd16b('0x10')](_0xd16b('0x49'),_0x4fb3c1[_0xd16b('0x45')],_0x47a703[_0xd16b('0x4a')],md5(_0x47a703[_0xd16b('0x4a')]));}headers[_0xd16b('0x4b')]=getAuth(_0x4fb3c1);return getUser(_0x4fb3c1,_0x360285['email'])[_0xd16b('0x1f')](function(_0x458da1){_0x1d620a=_0x458da1;logger[_0xd16b('0xd')](_0xd16b('0x4c'),_0x1d620a['id']);return getEndUser(_0x4fb3c1,_0x47a703['destcalleridname'],_0x47a703[_0xd16b('0x58')]);})[_0xd16b('0x1f')](function(_0x1ed2a8){_0x41523a=_0x1ed2a8;logger[_0xd16b('0xd')](_0xd16b('0x59'),_0x41523a['id']);return getTicket(_0x4fb3c1,_0x1d620a,_0x41523a,_0x2a4459,_0x47a703);})[_0xd16b('0x1f')](function(_0x337598){if(_0x337598&&_0x337598['id']){logger['info'](_0xd16b('0x4d'));logger[_0xd16b('0xd')]('The\x20Ticket\x20ID\x20is:',_0x337598['id']);logger['info'](_0xd16b('0x56'),_0xd16b('0x4f'));emit(util[_0xd16b('0x10')]('user:%s',_0x360285[_0xd16b('0x16')]),'trigger:browser:url',{'uri':util[_0xd16b('0x10')]('%s/helpdesk/tickets/%d',_0x4fb3c1[_0xd16b('0x1d')],_0x337598['id'])});}})[_0xd16b('0x51')](function(_0x2b9691){logger['error']('[OUTBOUND]',JSON[_0xd16b('0x30')](_0x2b9691));});};exports[_0xd16b('0x5a')]=function(_0x9284a0,_0x1b6f54,_0x722d5e,_0x401d8a,_0x1fb05a,_0x125c91){var _0x2d60f8,_0x36b147;_0x125c91[_0xd16b('0x1d')]=intUtil[_0xd16b('0x44')](_0x125c91[_0xd16b('0x1d')]);_0x125c91[_0xd16b('0x45')]=intUtil[_0xd16b('0x44')](_0x125c91[_0xd16b('0x45')]);if(_0x1fb05a&&_0x1fb05a[_0xd16b('0x46')]){logger[_0xd16b('0xd')]('['+_0x1b6f54['lastevent']['toUpperCase']()+']',_0xd16b('0x57'));_0x1b6f54[_0xd16b('0x48')]=util[_0xd16b('0x10')](_0xd16b('0x49'),_0x125c91['serverUrl'],_0x1b6f54[_0xd16b('0x4a')],md5(_0x1b6f54[_0xd16b('0x4a')]));}else{_0x1b6f54['recordingURL']='';}headers['Authorization']=getAuth(_0x125c91);return getUser(_0x125c91,'')[_0xd16b('0x1f')](function(_0x201b10){_0x2d60f8=_0x201b10;logger[_0xd16b('0xd')]('The\x20User\x20ID\x20is:',_0x2d60f8['id']);return getEndUser(_0x125c91,_0x1b6f54['calleridname'],_0x1b6f54['calleridnum']);})[_0xd16b('0x1f')](function(_0x2b5eac){_0x36b147=_0x2b5eac;logger[_0xd16b('0xd')]('The\x20Enduser\x20ID\x20is:',_0x36b147['id']);return getTicket(_0x125c91,_0x2d60f8,_0x36b147,_0x722d5e,_0x1b6f54);})['then'](function(_0x716fbd){if(_0x716fbd){logger[_0xd16b('0xd')](_0xd16b('0x4d'));logger[_0xd16b('0xd')](_0xd16b('0x4e'),_0x716fbd['id']);}})[_0xd16b('0x51')](function(_0xb71324){logger['error']('['+_0x1b6f54[_0xd16b('0x5b')][_0xd16b('0x5c')]()+']',JSON[_0xd16b('0x30')](_0xb71324));});};
\ No newline at end of file
+var _0x9fca=['contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','then','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','stringify','GET','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','user:%s','trigger:browser:url','error','unmanaged','toUpperCase','lastevent','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','getString','Descriptions','<br>','name','Fields','custom_fields','keyBy','value','remoteUri','POST','validateEmail','Agent\x20found!','find'];(function(_0x2d91c6,_0x10ae0e){var _0x3a8d19=function(_0x27a3ce){while(--_0x27a3ce){_0x2d91c6['push'](_0x2d91c6['shift']());}};_0x3a8d19(++_0x10ae0e);}(_0x9fca,0x1be));var _0xa9fc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9fca[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xa9fc('0x0'));var rp=require(_0xa9fc('0x1'));var md5=require(_0xa9fc('0x2'));var util=require('util');var Redis=require(_0xa9fc('0x3'));var intUtil=require(_0xa9fc('0x4'));var config=require(_0xa9fc('0x5'));var logger=require(_0xa9fc('0x6'))(_0xa9fc('0x7'));config[_0xa9fc('0x8')]=_[_0xa9fc('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xa9fc('0xa'))(new Redis(config[_0xa9fc('0x8')]));var headers={'Content-Type':_0xa9fc('0xb'),'Accept':_0xa9fc('0xb')};function emit(_0x3dd792,_0x45a14f,_0x4ced1d){io['to'](_0x3dd792)[_0xa9fc('0xc')](_0x45a14f,_0x4ced1d);}function getTicket(_0x5213e6,_0x5c131c,_0x249094,_0x540a53,_0x3562d9){logger[_0xa9fc('0xd')](_0xa9fc('0xe'));var _0x25fa0f=_[_0xa9fc('0xf')]({'responder_id':_0x5c131c['id'],'requester_id':_0x249094['id'],'name':util[_0xa9fc('0x10')](_0xa9fc('0x11'),_0x3562d9[_0xa9fc('0x12')]),'phone':_0x3562d9[_0xa9fc('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x540a53[_0xa9fc('0x14')],_0x3562d9,'\x20'),'description':intUtil[_0xa9fc('0x15')](_0x540a53[_0xa9fc('0x16')],_0x3562d9,_0xa9fc('0x17')),'tags':getTags(_0x540a53['Tags'],_0xa9fc('0x18'))},getCustomFields(_0x540a53[_0xa9fc('0x19')],_0x3562d9));_0x25fa0f[_0xa9fc('0x1a')]=_['mapValues'](_[_0xa9fc('0x1b')](_0x25fa0f[_0xa9fc('0x1a')],'id'),_0xa9fc('0x1c'));return request({'uri':util['format']('%s/api/v2/tickets',_0x5213e6[_0xa9fc('0x1d')]),'method':_0xa9fc('0x1e'),'body':_0x25fa0f})['then'](function(_0x34ccb7){logger[_0xa9fc('0xd')]('Ticket\x20created!');return _0x34ccb7;});}function getUser(_0x3c1980,_0x112b1f){if(intUtil[_0xa9fc('0x1f')](_0x112b1f)){return request({'uri':util[_0xa9fc('0x10')]('%s/api/v2/agents',_0x3c1980[_0xa9fc('0x1d')]),'qs':{'email':_0x112b1f}})['then'](function(_0x36ccd5){if(_0x36ccd5['length']){logger[_0xa9fc('0xd')](_0xa9fc('0x20'));return _[_0xa9fc('0x21')](_0x36ccd5,function(_0x2778ed){return _0x2778ed[_0xa9fc('0x22')]['email']===_0x112b1f;});}else{logger['info'](_0xa9fc('0x23'));return request({'uri':util[_0xa9fc('0x10')]('%s/api/v2/agents/me',_0x3c1980[_0xa9fc('0x1d')])})['then'](function(_0x151858){logger[_0xa9fc('0xd')]('Admin\x20account\x20selected.');return _0x151858;});}});}else{logger[_0xa9fc('0xd')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa9fc('0x10')](_0xa9fc('0x24'),_0x3c1980[_0xa9fc('0x1d')])})['then'](function(_0x455412){logger[_0xa9fc('0xd')](_0xa9fc('0x25'));return _0x455412;});}}function getEndUser(_0xc0961a,_0x58d62a,_0x3395ad){logger['info'](_0xa9fc('0x26'),_0x3395ad);return request({'uri':util[_0xa9fc('0x10')](_0xa9fc('0x27'),_0xc0961a[_0xa9fc('0x1d')]),'qs':{'phone':_0x3395ad}})['then'](function(_0x509fc0){if(_0x509fc0[_0xa9fc('0x28')]){logger['info'](_0xa9fc('0x29'));return _[_0xa9fc('0x21')](_0x509fc0,{'phone':_0x3395ad});}else{logger[_0xa9fc('0xd')](_0xa9fc('0x2a'));return request({'uri':util[_0xa9fc('0x10')](_0xa9fc('0x27'),_0xc0961a[_0xa9fc('0x1d')]),'method':'POST','body':{'name':_0x58d62a,'phone':_0x3395ad}})[_0xa9fc('0x2b')](function(_0x2e8269){logger['info'](_0xa9fc('0x2c'));return _0x2e8269;});}});}function getAuth(_0x1c8508){return util[_0xa9fc('0x10')](_0xa9fc('0x2d'),new Buffer(_0x1c8508[_0xa9fc('0x2e')]+':X')[_0xa9fc('0x2f')]('base64'));}function request(_0x2b2fea){logger[_0xa9fc('0x30')]('[HTTP]',JSON[_0xa9fc('0x31')](_0x2b2fea));return rp(_[_0xa9fc('0x9')](_0x2b2fea,{'method':_0xa9fc('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x560908,_0x52f7cb){var _0x65a36=[];if(_0x560908&&_0x560908[_0xa9fc('0x28')]>0x0){_0x65a36=_['map'](_0x560908,_0x52f7cb);}return _0x65a36;}function getCustomFields(_0x4803b0,_0x4ee452){var _0x33e359=[];var _0x473131={'custom_fields':[]};if(_0x4803b0[_0xa9fc('0x28')]>0x0){_[_0xa9fc('0x33')](_0x4803b0,function(_0x5c8e91){if(_[_0xa9fc('0x34')]([_0xa9fc('0x35'),_0xa9fc('0x36')],_0x5c8e91[_0xa9fc('0x37')])&&_0x5c8e91[_0xa9fc('0x38')]&&!_0x5c8e91[_0xa9fc('0x39')]){_0x473131[_0x5c8e91[_0xa9fc('0x38')][_0xa9fc('0x3a')]()]=_0x5c8e91[_0xa9fc('0x3b')][_0xa9fc('0x2f')]();}else if(_['includes']([_0xa9fc('0x35'),_0xa9fc('0x36')],_0x5c8e91[_0xa9fc('0x37')])&&_0x5c8e91[_0xa9fc('0x3c')]&&_0x5c8e91['customField']){_0x473131['custom_fields'][_0xa9fc('0x3d')]({'id':_0x5c8e91[_0xa9fc('0x3c')],'value':_0x5c8e91['content'][_0xa9fc('0x2f')]()});}else if(_0x5c8e91[_0xa9fc('0x37')]===_0xa9fc('0x3e')&&_0x5c8e91['variableName']&&_0x5c8e91[_0xa9fc('0x3c')]&&_0x5c8e91['customField']){_0x4ee452[_0x5c8e91[_0xa9fc('0x3f')]]&&_0x473131[_0xa9fc('0x1a')]['push']({'id':_0x5c8e91[_0xa9fc('0x3c')],'value':_0x4ee452[_0x5c8e91['variableName']]['toString']()});}else if(_0x5c8e91[_0xa9fc('0x37')]===_0xa9fc('0x40')&&_0x5c8e91['Variable']&&_0x5c8e91[_0xa9fc('0x41')][_0xa9fc('0x18')]&&_0x5c8e91[_0xa9fc('0x3c')]&&_0x5c8e91['customField']){_0x4ee452[_0x5c8e91[_0xa9fc('0x41')][_0xa9fc('0x18')][_0xa9fc('0x3a')]()]&&_0x473131[_0xa9fc('0x1a')][_0xa9fc('0x3d')]({'id':_0x5c8e91[_0xa9fc('0x3c')],'value':_0x4ee452[_0x5c8e91[_0xa9fc('0x41')][_0xa9fc('0x18')]['toLowerCase']()][_0xa9fc('0x2f')]()});}});}return _0x473131;}exports[_0xa9fc('0x42')]=function(_0x2fd53c,_0x4b6c5c,_0x2bd0e7,_0x54afb5,_0x25b404,_0x2e1151){var _0x47fc28,_0x1f58fc;_0x2e1151[_0xa9fc('0x1d')]=intUtil[_0xa9fc('0x43')](_0x2e1151['remoteUri']);_0x2e1151[_0xa9fc('0x44')]=intUtil[_0xa9fc('0x43')](_0x2e1151[_0xa9fc('0x44')]);if(_0x25b404&&_0x25b404[_0xa9fc('0x45')]){logger[_0xa9fc('0xd')](_0xa9fc('0x46'),_0xa9fc('0x47'));_0x4b6c5c[_0xa9fc('0x48')]=util[_0xa9fc('0x10')](_0xa9fc('0x49'),_0x2e1151[_0xa9fc('0x44')],_0x4b6c5c[_0xa9fc('0x4a')],md5(_0x4b6c5c[_0xa9fc('0x4a')]));}else{_0x4b6c5c['recordingURL']='';}headers[_0xa9fc('0x4b')]=getAuth(_0x2e1151);return getUser(_0x2e1151,_0x54afb5[_0xa9fc('0x4c')])['then'](function(_0x248475){_0x47fc28=_0x248475;logger[_0xa9fc('0xd')](_0xa9fc('0x4d'),_0x47fc28['id']);return getEndUser(_0x2e1151,_0x4b6c5c[_0xa9fc('0x12')],_0x4b6c5c[_0xa9fc('0x13')]);})[_0xa9fc('0x2b')](function(_0x46fc10){_0x1f58fc=_0x46fc10;logger['info']('The\x20Enduser\x20ID\x20is:',_0x1f58fc['id']);return getTicket(_0x2e1151,_0x47fc28,_0x1f58fc,_0x2bd0e7,_0x4b6c5c);})['then'](function(_0x2cdb78){if(_0x2cdb78&&_0x2cdb78['id']){logger[_0xa9fc('0xd')](_0xa9fc('0x4e'));logger[_0xa9fc('0xd')](_0xa9fc('0x4f'),_0x2cdb78['id']);logger[_0xa9fc('0xd')](_0xa9fc('0x46'),_0xa9fc('0x50'));emit(util[_0xa9fc('0x10')]('user:%s',_0x54afb5['name']),'trigger:browser:url',{'uri':util[_0xa9fc('0x10')](_0xa9fc('0x51'),_0x2e1151[_0xa9fc('0x1d')],_0x2cdb78['id'])});}})[_0xa9fc('0x52')](function(_0x350759){logger['error'](_0xa9fc('0x46'),JSON[_0xa9fc('0x31')](_0x350759));});};exports[_0xa9fc('0x53')]=function(_0xa9ebc6,_0x8240f2,_0x237571,_0x229898,_0x725751,_0x6c6168,_0x248120){var _0x54eebf,_0x57081d;_0x6c6168[_0xa9fc('0x1d')]=intUtil[_0xa9fc('0x43')](_0x6c6168[_0xa9fc('0x1d')]);_0x6c6168[_0xa9fc('0x44')]=intUtil[_0xa9fc('0x43')](_0x6c6168['serverUrl']);if(_0x248120&&_0x248120[_0xa9fc('0x54')]&&_0x248120[_0xa9fc('0x54')]!==_0xa9fc('0x55')){logger[_0xa9fc('0xd')](_0xa9fc('0x56'),_0xa9fc('0x47'));_0x8240f2[_0xa9fc('0x48')]=util[_0xa9fc('0x10')](_0xa9fc('0x49'),_0x6c6168[_0xa9fc('0x44')],_0x8240f2['uniqueid'],md5(_0x8240f2[_0xa9fc('0x4a')]));}headers[_0xa9fc('0x4b')]=getAuth(_0x6c6168);return getUser(_0x6c6168,_0x229898[_0xa9fc('0x4c')])[_0xa9fc('0x2b')](function(_0x52000d){_0x54eebf=_0x52000d;logger[_0xa9fc('0xd')](_0xa9fc('0x4d'),_0x54eebf['id']);return getEndUser(_0x6c6168,_0x8240f2[_0xa9fc('0x57')],_0x8240f2[_0xa9fc('0x58')]);})[_0xa9fc('0x2b')](function(_0x52689d){_0x57081d=_0x52689d;logger[_0xa9fc('0xd')](_0xa9fc('0x59'),_0x57081d['id']);return getTicket(_0x6c6168,_0x54eebf,_0x57081d,_0x237571,_0x8240f2);})[_0xa9fc('0x2b')](function(_0x7fe21e){if(_0x7fe21e&&_0x7fe21e['id']){logger['info'](_0xa9fc('0x4e'));logger[_0xa9fc('0xd')]('The\x20Ticket\x20ID\x20is:',_0x7fe21e['id']);logger[_0xa9fc('0xd')](_0xa9fc('0x56'),_0xa9fc('0x50'));emit(util['format'](_0xa9fc('0x5a'),_0x229898[_0xa9fc('0x18')]),_0xa9fc('0x5b'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x6c6168[_0xa9fc('0x1d')],_0x7fe21e['id'])});}})[_0xa9fc('0x52')](function(_0x150961){logger[_0xa9fc('0x5c')](_0xa9fc('0x56'),JSON['stringify'](_0x150961));});};exports[_0xa9fc('0x5d')]=function(_0x373477,_0x5caafe,_0x24f464,_0x483ef2,_0x5d32a1,_0x136620){var _0x3e3595,_0x4dfb63;_0x136620['remoteUri']=intUtil['stripTrailingSlash'](_0x136620[_0xa9fc('0x1d')]);_0x136620[_0xa9fc('0x44')]=intUtil[_0xa9fc('0x43')](_0x136620[_0xa9fc('0x44')]);if(_0x5d32a1&&_0x5d32a1[_0xa9fc('0x45')]){logger[_0xa9fc('0xd')]('['+_0x5caafe['lastevent'][_0xa9fc('0x5e')]()+']',_0xa9fc('0x47'));_0x5caafe[_0xa9fc('0x48')]=util['format'](_0xa9fc('0x49'),_0x136620['serverUrl'],_0x5caafe[_0xa9fc('0x4a')],md5(_0x5caafe['uniqueid']));}else{_0x5caafe[_0xa9fc('0x48')]='';}headers[_0xa9fc('0x4b')]=getAuth(_0x136620);return getUser(_0x136620,'')[_0xa9fc('0x2b')](function(_0x1c803a){_0x3e3595=_0x1c803a;logger[_0xa9fc('0xd')](_0xa9fc('0x4d'),_0x3e3595['id']);return getEndUser(_0x136620,_0x5caafe[_0xa9fc('0x12')],_0x5caafe['calleridnum']);})['then'](function(_0x5096b7){_0x4dfb63=_0x5096b7;logger[_0xa9fc('0xd')](_0xa9fc('0x59'),_0x4dfb63['id']);return getTicket(_0x136620,_0x3e3595,_0x4dfb63,_0x24f464,_0x5caafe);})[_0xa9fc('0x2b')](function(_0x495497){if(_0x495497){logger[_0xa9fc('0xd')](_0xa9fc('0x4e'));logger['info'](_0xa9fc('0x4f'),_0x495497['id']);}})[_0xa9fc('0x52')](function(_0x1c3494){logger['error']('['+_0x5caafe[_0xa9fc('0x5f')]['toUpperCase']()+']',JSON[_0xa9fc('0x31')](_0x1c3494));});};
\ No newline at end of file
index 9ee7f7f..8728fc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fbd=['userId','Admin\x20selected','error','/api/lookup?q=','&f=','&entities=contact','find','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','work_number','endUserId','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','/api/tasks','Subjects','getString','Descriptions','Contact','add','ticketId','task','Task\x20created:','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','adminEmail','toLowerCase','outbound','calleridnum','callDirection','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','GET','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail'];(function(_0x2e49d5,_0x4635b6){var _0x29b739=function(_0x399442){while(--_0x399442){_0x2e49d5['push'](_0x2e49d5['shift']());}};_0x29b739(++_0x4635b6);}(_0x6fbd,0xe3));var _0xd6fb=function(_0x4cce65,_0x40021e){_0x4cce65=_0x4cce65-0x0;var _0x4d1b45=_0x6fbd[_0x4cce65];return _0x4d1b45;};'use strict';var _=require(_0xd6fb('0x0'));var rp=require(_0xd6fb('0x1'));var md5=require('md5');var util=require(_0xd6fb('0x2'));var moment=require('moment');var Promise=require(_0xd6fb('0x3'));var Redis=require('ioredis');var intUtil=require(_0xd6fb('0x4'));var config=require(_0xd6fb('0x5'));var logger=require(_0xd6fb('0x6'))(_0xd6fb('0x7'));config[_0xd6fb('0x8')]=_[_0xd6fb('0x9')](config[_0xd6fb('0x8')],{'host':_0xd6fb('0xa'),'port':0x18eb});var io=require(_0xd6fb('0xb'))(new Redis(config[_0xd6fb('0x8')]));function getAdminId(_0x2e0ba2,_0x35a78c,_0x52f76e,_0x1982a0){return new Promise(function(_0x360f24,_0x5ba57a){var _0x543ac4=![];var _0x40d519={'method':'GET','uri':_0x1982a0+_0xd6fb('0xc'),'json':!![]};_0x40d519[_0xd6fb('0xd')]=_0x52f76e;logger[_0xd6fb('0xe')](_0xd6fb('0xf'));return rp(_0x40d519)[_0xd6fb('0x10')](function(_0x9b2339){if(_0x9b2339){var _0x32cad6=_0x9b2339[_0xd6fb('0x11')];var _0x5c7934=null;for(_0x5c7934=0x0;_0x5c7934<_0x32cad6[_0xd6fb('0x12')];_0x5c7934++){if(_0x32cad6[_0x5c7934][_0xd6fb('0x13')]===_0x2e0ba2['adminEmail']){_0x2e0ba2[_0xd6fb('0x14')]=_0x32cad6[_0x5c7934]['id'];_0x543ac4=!![];}}if(_0x543ac4){logger[_0xd6fb('0xe')](_0xd6fb('0x15'),_0x2e0ba2[_0xd6fb('0x14')]);_0x360f24(_0x2e0ba2);}else{_0x5ba57a({'statusCode':0x194,'message':_0xd6fb('0x16')});}}else{_0x5ba57a({'statusCode':0x194,'message':_0xd6fb('0x16')});}})[_0xd6fb('0x17')](function(_0x35ba45){logger['error']('['+[_0x35a78c[_0xd6fb('0x18')]()]+']',_0x35ba45[_0xd6fb('0x19')]);_0x5ba57a(_0x35ba45);});});}function getUser(_0x234cf0,_0x2a98a3,_0x3adacc){return function(_0x3a9944){return new Promise(function(_0xdf83c2,_0x497ff2){var _0x515663={'method':_0xd6fb('0x1a'),'uri':_0x3adacc+_0xd6fb('0xc'),'json':!![]};_0x515663[_0xd6fb('0xd')]=_0x2a98a3;logger[_0xd6fb('0xe')](_0xd6fb('0x1b'));return rp(_0x515663)['then'](function(_0x3aea8a){if(_0x3aea8a){var _0x3e3367=_0x3aea8a[_0xd6fb('0x11')];var _0x19bc2d=![];var _0x2ca38e=null;if(_0x3a9944[_0xd6fb('0x1c')]!==null){logger[_0xd6fb('0xe')](_0xd6fb('0x1d'),_0x3a9944[_0xd6fb('0x1c')]);_0x3a9944[_0xd6fb('0x1e')]=_0x3a9944[_0xd6fb('0x1c')];for(_0x2ca38e=0x0;_0x2ca38e<_0x3e3367[_0xd6fb('0x12')];_0x2ca38e++){if(_0x3e3367[_0x2ca38e]['email']===_0x3a9944[_0xd6fb('0x1c')]){_0x19bc2d=!![];_0x3a9944[_0xd6fb('0x1f')]=_0x3e3367[_0x2ca38e]['id'];logger[_0xd6fb('0xe')]('User\x20found:',_0x3a9944['userId']);}}}if(!_0x19bc2d){logger[_0xd6fb('0xe')](_0xd6fb('0x20'));_0x3a9944['userEmail']=_0x3a9944['adminEmail'];_0x3a9944[_0xd6fb('0x1f')]=_0x3a9944[_0xd6fb('0x14')];_0x19bc2d=!![];}if(_0x19bc2d){_0xdf83c2(_0x3a9944);}else{_0x497ff2({'statusCode':0x194,'message':_0xd6fb('0x16')});}}else{_0x497ff2({'statusCode':0x194,'message':_0xd6fb('0x16')});}})[_0xd6fb('0x17')](function(_0x1b9314){logger[_0xd6fb('0x21')]('['+[_0x234cf0[_0xd6fb('0x18')]()]+']',_0x1b9314[_0xd6fb('0x19')]);_0x497ff2(_0x1b9314);});});};}function searchContact(_0x2799f6,_0x5bcc7c,_0x4ba39e,_0x69d831){return new Promise(function(_0x5eeaab,_0x13b32d){var _0xffb3b7={'method':_0xd6fb('0x1a'),'headers':_0x5bcc7c,'uri':_0x2799f6+_0xd6fb('0x22')+_0x69d831+_0xd6fb('0x23')+_0x4ba39e+_0xd6fb('0x24'),'json':!![]};rp(_0xffb3b7)[_0xd6fb('0x10')](function(_0x18445b){var _0x56a0a8=_[_0xd6fb('0x25')](_0x18445b['contacts']['contacts'],[_0x4ba39e,_0x69d831]);_0x5eeaab(_0x56a0a8);})[_0xd6fb('0x17')](function(_0x13dc13){_0x13b32d(_0x13dc13);});});}function getEndUser(_0x4ca584,_0x1f644a,_0x229ae5){return function(_0x3e0a63){return new Promise(function(_0x22222e,_0x2d8768){logger['info'](util[_0xd6fb('0x26')](_0xd6fb('0x27'),_0x3e0a63[_0xd6fb('0x28')]));searchContact(_0x229ae5,_0x1f644a,_0xd6fb('0x29'),_0x3e0a63[_0xd6fb('0x28')])[_0xd6fb('0x10')](function(_0x46ed92){if(_0x46ed92){_0x3e0a63['endUserId']=_0x46ed92['id'];logger[_0xd6fb('0xe')](_0xd6fb('0x2a'),_0x3e0a63['endUserId']);return _0x22222e(_0x3e0a63);}searchContact(_0x229ae5,_0x1f644a,_0xd6fb('0x2b'),_0x3e0a63['contactNumber'])[_0xd6fb('0x10')](function(_0x5d930a){if(_0x5d930a){_0x3e0a63[_0xd6fb('0x2c')]=_0x5d930a['id'];logger[_0xd6fb('0xe')](_0xd6fb('0x2d'),_0x3e0a63[_0xd6fb('0x2c')]);return _0x22222e(_0x3e0a63);}createEndUser(_0x3e0a63,_0x4ca584,_0x1f644a,_0x229ae5)[_0xd6fb('0x10')](function(_0x5f4f3a){logger[_0xd6fb('0xe')](_0xd6fb('0x2e'),_0x5f4f3a['endUserId']);return _0x22222e(_0x5f4f3a);});});})[_0xd6fb('0x17')](function(_0x495223){_0x2d8768(_0x495223);});});};}function createEndUser(_0x21bc28,_0x91872b,_0x49eab4,_0x1ef92e){return new Promise(function(_0x139b3e,_0x141bfa){var _0x1342c2=moment();var _0x2eab22={'method':_0xd6fb('0x2f'),'uri':_0x1ef92e+_0xd6fb('0x30'),'body':{'contact':{'last_name':_0x21bc28['contactNumber'],'work_number':_0x21bc28['contactNumber'],'mobile_number':_0x21bc28[_0xd6fb('0x28')],'owner_id':_0x21bc28[_0xd6fb('0x1f')],'created_at':_0x1342c2[_0xd6fb('0x26')](_0xd6fb('0x31'))}},'json':!![]};_0x2eab22[_0xd6fb('0xd')]=_0x49eab4;logger[_0xd6fb('0xe')](_0xd6fb('0x32'));return rp(_0x2eab22)[_0xd6fb('0x10')](function(_0x320119){_0x21bc28[_0xd6fb('0x2c')]=_0x320119['contact']['id'];_0x139b3e(_0x21bc28);})[_0xd6fb('0x17')](function(_0x5ca792){logger[_0xd6fb('0x21')]('['+[_0x91872b['toUpperCase']()]+']',_0x5ca792[_0xd6fb('0x19')]);_0x141bfa(_0x5ca792[_0xd6fb('0x19')]);});});}function getTicket(_0x15255e,_0x55eb57,_0x457f52,_0x8b30f4,_0x51e5b9){return function(_0x1e5c91){logger['info']('Creating\x20new\x20task');return new Promise(function(_0x335eef,_0x3b6827){var _0x4f015e=moment();var _0x3a6869={'method':_0xd6fb('0x2f'),'uri':_0x457f52+_0xd6fb('0x33'),'body':{'title':intUtil['getString'](_0x8b30f4[_0xd6fb('0x34')],_0x51e5b9,'\x20'),'description':intUtil[_0xd6fb('0x35')](_0x8b30f4[_0xd6fb('0x36')],_0x51e5b9,'\x0a'),'owner_id':_0x1e5c91[_0xd6fb('0x1f')],'creater_id':_0x1e5c91[_0xd6fb('0x14')],'targetable_id':_0x1e5c91[_0xd6fb('0x2c')],'targetable_type':_0xd6fb('0x37'),'created_at':_0x4f015e[_0xd6fb('0x26')](_0xd6fb('0x31')),'due_date':_0x4f015e[_0xd6fb('0x38')](0x1e,'m')['format'](_0xd6fb('0x31'))},'json':!![]};_0x3a6869['headers']=_0x55eb57;return rp(_0x3a6869)['then'](function(_0x5da1e0){_0x1e5c91[_0xd6fb('0x39')]=_0x5da1e0[_0xd6fb('0x3a')]['id'];logger[_0xd6fb('0xe')](_0xd6fb('0x3b'),_0x1e5c91['ticketId']);_0x335eef(_0x1e5c91);})[_0xd6fb('0x17')](function(_0x3ad051){logger[_0xd6fb('0x21')]('['+[_0x15255e[_0xd6fb('0x18')]()]+']',_0x3ad051[_0xd6fb('0x19')]);_0x3b6827(_0x3ad051['message']);});});};}function emit(_0x487299,_0x5afd14,_0x169119){var _0xc57d96={'uri':_0x487299+'/contacts/'+_0x169119};io['to'](util[_0xd6fb('0x26')](_0xd6fb('0x3c'),_0x5afd14))[_0xd6fb('0x3d')](_0xd6fb('0x3e'),_0xc57d96);}exports['cs']=function(_0x493535,_0x55a74b,_0x9ab4e4,_0x6fb234,_0x11ea24,_0x31834e,_0x4e2b5f,_0x487b5e){var _0x432558={};var _0x1495d7={'Authorization':_0xd6fb('0x3f')+_0x31834e[_0xd6fb('0x40')]};_0x31834e[_0xd6fb('0x41')]=intUtil[_0xd6fb('0x42')](_0x31834e[_0xd6fb('0x41')]);_0x31834e[_0xd6fb('0x43')]=intUtil[_0xd6fb('0x42')](_0x31834e[_0xd6fb('0x43')]);var _0x41e962=_0x31834e[_0xd6fb('0x41')];_0x432558[_0xd6fb('0x44')]=_0x31834e['username'];_0x432558[_0xd6fb('0x28')]=_0x487b5e[_0xd6fb('0x45')]()===_0xd6fb('0x46')?_0x55a74b['destcalleridnum']:_0x55a74b[_0xd6fb('0x47')];_0x432558[_0xd6fb('0x48')]=_0x487b5e==='queue'||_0x487b5e===_0xd6fb('0x49')?'queue':_0xd6fb('0x46');if(_0x6fb234){_0x432558[_0xd6fb('0x1c')]=_0x6fb234[_0xd6fb('0x13')];}var _0x15da36=util[_0xd6fb('0x26')](_0xd6fb('0x4a'),_0x31834e[_0xd6fb('0x43')],_0x55a74b[_0xd6fb('0x4b')],md5(_0x55a74b[_0xd6fb('0x4b')]));if(_0x11ea24&&_0x11ea24[_0xd6fb('0x4c')]){logger['info'](_0xd6fb('0x4d'),_0xd6fb('0x4e'));_0x55a74b[_0xd6fb('0x4f')]=_0x15da36;}else if(_0x4e2b5f&&_0x4e2b5f[_0xd6fb('0x50')]&&_0x4e2b5f[_0xd6fb('0x50')]!=='none'){logger['info'](_0xd6fb('0x51'),_0xd6fb('0x4e'));_0x55a74b[_0xd6fb('0x4f')]=_0x15da36;}else{_0x55a74b['recordingURL']='';}return getAdminId(_0x432558,_0x487b5e,_0x1495d7,_0x41e962)['then'](getUser(_0x487b5e,_0x1495d7,_0x41e962))[_0xd6fb('0x10')](getEndUser(_0x487b5e,_0x1495d7,_0x41e962))['then'](getTicket(_0x487b5e,_0x1495d7,_0x41e962,_0x9ab4e4,_0x55a74b))[_0xd6fb('0x10')](function(_0x252cd7){logger[_0xd6fb('0xe')](util[_0xd6fb('0x26')](_0xd6fb('0x52'),_0x252cd7[_0xd6fb('0x39')]));if(_0x487b5e!==_0xd6fb('0x49')){logger[_0xd6fb('0xe')]('['+[_0x487b5e['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x41e962,_0x6fb234[_0xd6fb('0x53')],_0x252cd7[_0xd6fb('0x2c')]);}})[_0xd6fb('0x17')](function(_0x4c804){logger[_0xd6fb('0x21')]('['+[_0x487b5e[_0xd6fb('0x18')]()]+_0xd6fb('0x54'),util[_0xd6fb('0x55')](_0x4c804,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x1d35=['length','email','User\x20found:','userId','Admin\x20selected','catch','/api/lookup?q=','&f=','find','contacts','format','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','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','task','Task\x20created:','ticketId','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','[QUEUE]','recordingFormat','none','recordingURL','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','util','moment','bluebird','./util','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','GET','headers','info','Getting\x20admin\x20information','users','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','/api/selector/owners','Getting\x20user\x20list','then','agentEmail','userEmail'];(function(_0x45b034,_0x3a57dd){var _0x509cb0=function(_0x3a89d5){while(--_0x3a89d5){_0x45b034['push'](_0x45b034['shift']());}};_0x509cb0(++_0x3a57dd);}(_0x1d35,0x174));var _0x51d3=function(_0x56e083,_0x4605c8){_0x56e083=_0x56e083-0x0;var _0x2e89eb=_0x1d35[_0x56e083];return _0x2e89eb;};'use strict';var _=require(_0x51d3('0x0'));var rp=require(_0x51d3('0x1'));var md5=require(_0x51d3('0x2'));var util=require(_0x51d3('0x3'));var moment=require(_0x51d3('0x4'));var Promise=require(_0x51d3('0x5'));var Redis=require('ioredis');var intUtil=require(_0x51d3('0x6'));var config=require('../../../../config/environment');var logger=require(_0x51d3('0x7'))(_0x51d3('0x8'));config[_0x51d3('0x9')]=_[_0x51d3('0xa')](config[_0x51d3('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x51d3('0xb'))(new Redis(config[_0x51d3('0x9')]));function getAdminId(_0x41c82c,_0x3dddc9,_0x4833fe,_0x2ea9ee){return new Promise(function(_0x56905c,_0x312132){var _0x6b8ae8=![];var _0x19b787={'method':_0x51d3('0xc'),'uri':_0x2ea9ee+'/api/selector/owners','json':!![]};_0x19b787[_0x51d3('0xd')]=_0x4833fe;logger[_0x51d3('0xe')](_0x51d3('0xf'));return rp(_0x19b787)['then'](function(_0x18e81f){if(_0x18e81f){var _0x22f52e=_0x18e81f[_0x51d3('0x10')];var _0x45c767=null;for(_0x45c767=0x0;_0x45c767<_0x22f52e['length'];_0x45c767++){if(_0x22f52e[_0x45c767]['email']===_0x41c82c[_0x51d3('0x11')]){_0x41c82c[_0x51d3('0x12')]=_0x22f52e[_0x45c767]['id'];_0x6b8ae8=!![];}}if(_0x6b8ae8){logger[_0x51d3('0xe')]('Admin\x20found:',_0x41c82c[_0x51d3('0x12')]);_0x56905c(_0x41c82c);}else{_0x312132({'statusCode':0x194,'message':_0x51d3('0x13')});}}else{_0x312132({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x4d43b0){logger[_0x51d3('0x14')]('['+[_0x3dddc9[_0x51d3('0x15')]()]+']',_0x4d43b0[_0x51d3('0x16')]);_0x312132(_0x4d43b0);});});}function getUser(_0x38ea12,_0x46da32,_0x4ac82c){return function(_0x5331ac){return new Promise(function(_0x5427b4,_0x7c0fbd){var _0x124bd5={'method':_0x51d3('0xc'),'uri':_0x4ac82c+_0x51d3('0x17'),'json':!![]};_0x124bd5[_0x51d3('0xd')]=_0x46da32;logger['info'](_0x51d3('0x18'));return rp(_0x124bd5)[_0x51d3('0x19')](function(_0x1953c8){if(_0x1953c8){var _0x3a26f0=_0x1953c8[_0x51d3('0x10')];var _0x8006bb=![];var _0x1dcec2=null;if(_0x5331ac[_0x51d3('0x1a')]!==null){logger[_0x51d3('0xe')]('Getting\x20user\x20with\x20email',_0x5331ac[_0x51d3('0x1a')]);_0x5331ac[_0x51d3('0x1b')]=_0x5331ac['agentEmail'];for(_0x1dcec2=0x0;_0x1dcec2<_0x3a26f0[_0x51d3('0x1c')];_0x1dcec2++){if(_0x3a26f0[_0x1dcec2][_0x51d3('0x1d')]===_0x5331ac['agentEmail']){_0x8006bb=!![];_0x5331ac['userId']=_0x3a26f0[_0x1dcec2]['id'];logger[_0x51d3('0xe')](_0x51d3('0x1e'),_0x5331ac[_0x51d3('0x1f')]);}}}if(!_0x8006bb){logger[_0x51d3('0xe')](_0x51d3('0x20'));_0x5331ac['userEmail']=_0x5331ac['adminEmail'];_0x5331ac[_0x51d3('0x1f')]=_0x5331ac[_0x51d3('0x12')];_0x8006bb=!![];}if(_0x8006bb){_0x5427b4(_0x5331ac);}else{_0x7c0fbd({'statusCode':0x194,'message':_0x51d3('0x13')});}}else{_0x7c0fbd({'statusCode':0x194,'message':_0x51d3('0x13')});}})[_0x51d3('0x21')](function(_0x1a3a75){logger[_0x51d3('0x14')]('['+[_0x38ea12['toUpperCase']()]+']',_0x1a3a75['message']);_0x7c0fbd(_0x1a3a75);});});};}function searchContact(_0x4df848,_0xe5cc1b,_0x3458f3,_0x5f339e){return new Promise(function(_0x5e8d4d,_0x4108d7){var _0x505e41={'method':_0x51d3('0xc'),'headers':_0xe5cc1b,'uri':_0x4df848+_0x51d3('0x22')+_0x5f339e+_0x51d3('0x23')+_0x3458f3+'&entities=contact','json':!![]};rp(_0x505e41)[_0x51d3('0x19')](function(_0x47ee5f){var _0x1b9df5=_[_0x51d3('0x24')](_0x47ee5f['contacts'][_0x51d3('0x25')],[_0x3458f3,_0x5f339e]);_0x5e8d4d(_0x1b9df5);})[_0x51d3('0x21')](function(_0x27ecd3){_0x4108d7(_0x27ecd3);});});}function getEndUser(_0xcac30c,_0x4c1810,_0x359cd5){return function(_0x46ebe5){return new Promise(function(_0x5d7bec,_0x68a849){logger[_0x51d3('0xe')](util[_0x51d3('0x26')]('Searching\x20contact\x20with\x20phone\x20%s',_0x46ebe5[_0x51d3('0x27')]));searchContact(_0x359cd5,_0x4c1810,'mobile_number',_0x46ebe5[_0x51d3('0x27')])[_0x51d3('0x19')](function(_0x376d4c){if(_0x376d4c){_0x46ebe5[_0x51d3('0x28')]=_0x376d4c['id'];logger['info'](_0x51d3('0x29'),_0x46ebe5[_0x51d3('0x28')]);return _0x5d7bec(_0x46ebe5);}searchContact(_0x359cd5,_0x4c1810,_0x51d3('0x2a'),_0x46ebe5[_0x51d3('0x27')])[_0x51d3('0x19')](function(_0x4d96c0){if(_0x4d96c0){_0x46ebe5[_0x51d3('0x28')]=_0x4d96c0['id'];logger['info']('Contact\x20found\x20work_number:',_0x46ebe5[_0x51d3('0x28')]);return _0x5d7bec(_0x46ebe5);}createEndUser(_0x46ebe5,_0xcac30c,_0x4c1810,_0x359cd5)[_0x51d3('0x19')](function(_0x2e11fe){logger[_0x51d3('0xe')](_0x51d3('0x2b'),_0x2e11fe[_0x51d3('0x28')]);return _0x5d7bec(_0x2e11fe);});});})[_0x51d3('0x21')](function(_0x40556f){_0x68a849(_0x40556f);});});};}function createEndUser(_0x187cfa,_0xce19fb,_0xd3b9c7,_0x1fba9a){return new Promise(function(_0x5012c7,_0x2a6346){var _0x1dd94f=moment();var _0x20cb77={'method':_0x51d3('0x2c'),'uri':_0x1fba9a+_0x51d3('0x2d'),'body':{'contact':{'last_name':_0x187cfa[_0x51d3('0x27')],'work_number':_0x187cfa[_0x51d3('0x27')],'mobile_number':_0x187cfa[_0x51d3('0x27')],'owner_id':_0x187cfa[_0x51d3('0x1f')],'created_at':_0x1dd94f[_0x51d3('0x26')](_0x51d3('0x2e'))}},'json':!![]};_0x20cb77[_0x51d3('0xd')]=_0xd3b9c7;logger[_0x51d3('0xe')](_0x51d3('0x2f'));return rp(_0x20cb77)[_0x51d3('0x19')](function(_0x44afca){_0x187cfa[_0x51d3('0x28')]=_0x44afca[_0x51d3('0x30')]['id'];_0x5012c7(_0x187cfa);})[_0x51d3('0x21')](function(_0x131151){logger[_0x51d3('0x14')]('['+[_0xce19fb[_0x51d3('0x15')]()]+']',_0x131151[_0x51d3('0x16')]);_0x2a6346(_0x131151[_0x51d3('0x16')]);});});}function getTicket(_0x36b288,_0x2c8b45,_0x5c391c,_0xcd2214,_0x23f9ea){return function(_0x180aac){logger[_0x51d3('0xe')](_0x51d3('0x31'));return new Promise(function(_0x115fa7,_0x9ef6c2){var _0x5055ed=moment();var _0x254f6a={'method':'POST','uri':_0x5c391c+'/api/tasks','body':{'title':intUtil[_0x51d3('0x32')](_0xcd2214[_0x51d3('0x33')],_0x23f9ea,'\x20'),'description':intUtil[_0x51d3('0x32')](_0xcd2214[_0x51d3('0x34')],_0x23f9ea,'\x0a'),'owner_id':_0x180aac[_0x51d3('0x1f')],'creater_id':_0x180aac[_0x51d3('0x12')],'targetable_id':_0x180aac[_0x51d3('0x28')],'targetable_type':'Contact','created_at':_0x5055ed[_0x51d3('0x26')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x5055ed[_0x51d3('0x35')](0x1e,'m')[_0x51d3('0x26')](_0x51d3('0x2e'))},'json':!![]};_0x254f6a[_0x51d3('0xd')]=_0x2c8b45;return rp(_0x254f6a)[_0x51d3('0x19')](function(_0x5486b2){_0x180aac['ticketId']=_0x5486b2[_0x51d3('0x36')]['id'];logger['info'](_0x51d3('0x37'),_0x180aac[_0x51d3('0x38')]);_0x115fa7(_0x180aac);})[_0x51d3('0x21')](function(_0x5a779a){logger[_0x51d3('0x14')]('['+[_0x36b288[_0x51d3('0x15')]()]+']',_0x5a779a[_0x51d3('0x16')]);_0x9ef6c2(_0x5a779a[_0x51d3('0x16')]);});});};}function emit(_0x2785bc,_0x5b5aed,_0x1b4620){var _0x376ec9={'uri':_0x2785bc+'/contacts/'+_0x1b4620};io['to'](util[_0x51d3('0x26')](_0x51d3('0x39'),_0x5b5aed))[_0x51d3('0x3a')](_0x51d3('0x3b'),_0x376ec9);}exports['cs']=function(_0x4cb999,_0x5a8c85,_0x8dcdef,_0x3eb665,_0xfadd55,_0x17caec,_0x41a5cd,_0x2fe2ee){var _0x1a7484={};var _0x5bce29={'Authorization':'Token\x20token='+_0x17caec[_0x51d3('0x3c')]};_0x17caec[_0x51d3('0x3d')]=intUtil[_0x51d3('0x3e')](_0x17caec[_0x51d3('0x3d')]);_0x17caec[_0x51d3('0x3f')]=intUtil[_0x51d3('0x3e')](_0x17caec[_0x51d3('0x3f')]);var _0x11544b=_0x17caec[_0x51d3('0x3d')];_0x1a7484[_0x51d3('0x11')]=_0x17caec[_0x51d3('0x40')];_0x1a7484[_0x51d3('0x27')]=_0x2fe2ee[_0x51d3('0x41')]()===_0x51d3('0x42')?_0x5a8c85[_0x51d3('0x43')]:_0x5a8c85[_0x51d3('0x44')];_0x1a7484['callDirection']=_0x2fe2ee===_0x51d3('0x45')||_0x2fe2ee===_0x51d3('0x46')?'queue':_0x51d3('0x42');if(_0x3eb665){_0x1a7484['agentEmail']=_0x3eb665['email'];}var _0x493503=util[_0x51d3('0x26')](_0x51d3('0x47'),_0x17caec[_0x51d3('0x3f')],_0x5a8c85['uniqueid'],md5(_0x5a8c85['uniqueid']));if(_0xfadd55&&_0xfadd55[_0x51d3('0x48')]){logger[_0x51d3('0xe')](_0x51d3('0x49'),'Recording\x20is\x20enabled!');_0x5a8c85['recordingURL']=_0x493503;}else if(_0x41a5cd&&_0x41a5cd[_0x51d3('0x4a')]&&_0x41a5cd[_0x51d3('0x4a')]!==_0x51d3('0x4b')){logger[_0x51d3('0xe')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x5a8c85[_0x51d3('0x4c')]=_0x493503;}else{_0x5a8c85[_0x51d3('0x4c')]='';}return getAdminId(_0x1a7484,_0x2fe2ee,_0x5bce29,_0x11544b)[_0x51d3('0x19')](getUser(_0x2fe2ee,_0x5bce29,_0x11544b))[_0x51d3('0x19')](getEndUser(_0x2fe2ee,_0x5bce29,_0x11544b))[_0x51d3('0x19')](getTicket(_0x2fe2ee,_0x5bce29,_0x11544b,_0x8dcdef,_0x5a8c85))['then'](function(_0x361a8f){logger[_0x51d3('0xe')](util[_0x51d3('0x26')]('The\x20ticket\x20ID\x20is:\x20%s',_0x361a8f[_0x51d3('0x38')]));if(_0x2fe2ee!==_0x51d3('0x46')){logger[_0x51d3('0xe')]('['+[_0x2fe2ee[_0x51d3('0x15')]()]+']',_0x51d3('0x4d'));emit(_0x11544b,_0x3eb665[_0x51d3('0x4e')],_0x361a8f[_0x51d3('0x28')]);}})[_0x51d3('0x21')](function(_0x1b86d8){logger['error']('['+[_0x2fe2ee[_0x51d3('0x15')]()]+_0x51d3('0x4f'),util['inspect'](_0x1b86d8,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 2789e35..bb80612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4969=['./freshsales','zendesk','salesforce','sugarcrm','zoho','desk','freshsales','servicenow','exec','includes','toLowerCase','data2','find','Configurations','data3','queue','outbound','log','EVENT\x20UNKNOWN','freshdesk','vtiger','unknown\x20integration','data1','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','%s\x20account\x20#%s\x20not\x20found','lodash','./zendesk','./salesforce','./sugarcrm','./zoho','./desk','./vtiger','./servicenow','./dynamics365'];(function(_0x1c6045,_0x46d59f){var _0x257e28=function(_0x3b64d4){while(--_0x3b64d4){_0x1c6045['push'](_0x1c6045['shift']());}};_0x257e28(++_0x46d59f);}(_0x4969,0x69));var _0x9496=function(_0x53d9a7,_0x44c4a3){_0x53d9a7=_0x53d9a7-0x0;var _0x1c8958=_0x4969[_0x53d9a7];return _0x1c8958;};'use strict';var _=require(_0x9496('0x0'));var util=require('util');var zendesk=require(_0x9496('0x1'));var salesforce=require(_0x9496('0x2'));var sugarcrm=require(_0x9496('0x3'));var freshdesk=require('./freshdesk');var zoho=require(_0x9496('0x4'));var desk=require(_0x9496('0x5'));var vtiger=require(_0x9496('0x6'));var servicenow=require(_0x9496('0x7'));var dynamics365=require(_0x9496('0x8'));var freshsales=require(_0x9496('0x9'));var integrations=[_0x9496('0xa'),_0x9496('0xb'),_0x9496('0xc'),'freshdesk',_0x9496('0xd'),_0x9496('0xe'),'vtiger','dynamics365',_0x9496('0xf'),_0x9496('0x10')];exports[_0x9496('0x11')]=function(_0x517763,_0x1f55ca,_0x575f5c,_0x33347f,_0x4d68e9,_0x2a5cb8){if(_0x575f5c){if(_[_0x9496('0x12')](integrations,_0x517763['data1']['toLowerCase']())){try{var _0x34f7ca=null;var _0x255cc6='';var _0x3fb93f=_0x575f5c[_0x517763['data1'][_0x9496('0x13')]()];if(_0x3fb93f){var _0x23a6cb=_0x3fb93f[_0x517763[_0x9496('0x14')]];if(_0x23a6cb){var _0x5daf75=_[_0x9496('0x15')](_0x23a6cb[_0x9496('0x16')],{'id':parseInt(_0x517763[_0x9496('0x17')],0xa)});if(_0x5daf75){if(_0x33347f){if(_0x4d68e9&&_0x1f55ca[_0x9496('0x18')]){_0x255cc6=_0x9496('0x18');}else if(_0x1f55ca['routeId']){_0x255cc6=_0x9496('0x19');}else{console[_0x9496('0x1a')](_0x9496('0x1b'),_0x1f55ca);}}else{_0x255cc6='unmanaged';}switch(_0x517763['data1'][_0x9496('0x13')]()){case _0x9496('0xa'):zendesk[_0x255cc6](_0x517763,_0x1f55ca,_0x5daf75,_0x33347f,_0x4d68e9,_0x23a6cb,_0x2a5cb8);break;case _0x9496('0xb'):salesforce[_0x255cc6](_0x517763,_0x1f55ca,_0x5daf75,_0x33347f,_0x4d68e9,_0x23a6cb,_0x2a5cb8);break;case'sugarcrm':sugarcrm[_0x255cc6](_0x517763,_0x1f55ca,_0x5daf75,_0x33347f,_0x4d68e9,_0x23a6cb,_0x2a5cb8);break;case _0x9496('0x1c'):freshdesk[_0x255cc6](_0x517763,_0x1f55ca,_0x5daf75,_0x33347f,_0x4d68e9,_0x23a6cb,_0x2a5cb8);break;case _0x9496('0xd'):zoho[_0x255cc6](_0x517763,_0x1f55ca,_0x5daf75,_0x33347f,_0x4d68e9,_0x23a6cb,_0x2a5cb8);break;case _0x9496('0xe'):desk[_0x255cc6](_0x517763,_0x1f55ca,_0x5daf75,_0x33347f,_0x4d68e9,_0x23a6cb,_0x2a5cb8);break;case _0x9496('0x1d'):vtiger[_0x255cc6](_0x517763,_0x1f55ca,_0x5daf75,_0x33347f,_0x4d68e9,_0x23a6cb,_0x2a5cb8);break;case _0x9496('0xf'):freshsales['cs'](_0x517763,_0x1f55ca,_0x5daf75,_0x33347f,_0x4d68e9,_0x23a6cb,_0x2a5cb8,_0x255cc6);break;case _0x9496('0x10'):servicenow['cs'](_0x517763,_0x1f55ca,_0x5daf75,_0x33347f,_0x4d68e9,_0x23a6cb,_0x2a5cb8,_0x255cc6);break;case'dynamics365':dynamics365['cs'](_0x517763,_0x1f55ca,_0x5daf75,_0x33347f,_0x4d68e9,_0x23a6cb,_0x2a5cb8,_0x255cc6);break;default:console[_0x9496('0x1a')](_0x9496('0x1e'));}}else{_0x34f7ca=require('../../../../config/logger')(_0x517763[_0x9496('0x1f')][_0x9496('0x13')]());_0x34f7ca[_0x9496('0x20')](_0x9496('0x21'),util[_0x9496('0x22')](_0x9496('0x23'),_0x517763[_0x9496('0x1f')][_0x9496('0x13')](),_0x517763[_0x9496('0x17')]));}}else{_0x34f7ca=require(_0x9496('0x24'))(_0x517763['data1'][_0x9496('0x13')]());_0x34f7ca[_0x9496('0x20')]('[EXEC]',util[_0x9496('0x22')](_0x9496('0x25'),_0x517763[_0x9496('0x1f')]['toLowerCase'](),_0x517763[_0x9496('0x14')]));}}else{}}catch(_0x4c0853){console['error'](_0x4c0853);}}}};
\ No newline at end of file
+var _0xb580=['dynamics365','freshsales','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','desk','unknown\x20integration','format','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','error','[EXEC]','%s\x20account\x20#%s\x20not\x20found','util','./zendesk','./salesforce','./freshdesk','./zoho','./desk','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','zoho','vtiger'];(function(_0xc4aeb3,_0x545fbc){var _0x476d6a=function(_0x141d4f){while(--_0x141d4f){_0xc4aeb3['push'](_0xc4aeb3['shift']());}};_0x476d6a(++_0x545fbc);}(_0xb580,0xa7));var _0x0b58=function(_0x3d8332,_0x117b88){_0x3d8332=_0x3d8332-0x0;var _0xde40fa=_0xb580[_0x3d8332];return _0xde40fa;};'use strict';var _=require('lodash');var util=require(_0x0b58('0x0'));var zendesk=require(_0x0b58('0x1'));var salesforce=require(_0x0b58('0x2'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0x0b58('0x3'));var zoho=require(_0x0b58('0x4'));var desk=require(_0x0b58('0x5'));var vtiger=require('./vtiger');var servicenow=require('./servicenow');var dynamics365=require(_0x0b58('0x6'));var freshsales=require(_0x0b58('0x7'));var integrations=[_0x0b58('0x8'),_0x0b58('0x9'),_0x0b58('0xa'),'freshdesk',_0x0b58('0xb'),'desk',_0x0b58('0xc'),_0x0b58('0xd'),_0x0b58('0xe'),'servicenow'];exports['exec']=function(_0x2695a3,_0xe586a6,_0x20094f,_0x481a48,_0x10130d,_0x55ba14){if(_0x20094f){if(_[_0x0b58('0xf')](integrations,_0x2695a3[_0x0b58('0x10')]['toLowerCase']())){try{var _0x3bcf6b=null;var _0x534e7b='';var _0x1351d3=_0x20094f[_0x2695a3[_0x0b58('0x10')][_0x0b58('0x11')]()];if(_0x1351d3){var _0x404120=_0x1351d3[_0x2695a3[_0x0b58('0x12')]];if(_0x404120){var _0x5562bc=_[_0x0b58('0x13')](_0x404120[_0x0b58('0x14')],{'id':parseInt(_0x2695a3[_0x0b58('0x15')],0xa)});if(_0x5562bc){if(_0x481a48){if(_0x10130d&&_0xe586a6['queue']){_0x534e7b=_0x0b58('0x16');}else if(_0xe586a6[_0x0b58('0x17')]){_0x534e7b=_0x0b58('0x18');}else{console[_0x0b58('0x19')](_0x0b58('0x1a'),_0xe586a6);}}else{_0x534e7b=_0x0b58('0x1b');}switch(_0x2695a3[_0x0b58('0x10')]['toLowerCase']()){case _0x0b58('0x8'):zendesk[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case _0x0b58('0x9'):salesforce[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case _0x0b58('0xa'):sugarcrm[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case'freshdesk':freshdesk[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case'zoho':zoho[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case _0x0b58('0x1c'):desk[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case _0x0b58('0xc'):vtiger[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case _0x0b58('0xe'):freshsales['cs'](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14,_0x534e7b);break;case'servicenow':servicenow['cs'](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14,_0x534e7b);break;case'dynamics365':dynamics365['cs'](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14,_0x534e7b);break;default:console['log'](_0x0b58('0x1d'));}}else{_0x3bcf6b=require('../../../../config/logger')(_0x2695a3[_0x0b58('0x10')][_0x0b58('0x11')]());_0x3bcf6b['error']('[EXEC]',util[_0x0b58('0x1e')](_0x0b58('0x1f'),_0x2695a3[_0x0b58('0x10')][_0x0b58('0x11')](),_0x2695a3[_0x0b58('0x15')]));}}else{_0x3bcf6b=require(_0x0b58('0x20'))(_0x2695a3['data1']['toLowerCase']());_0x3bcf6b[_0x0b58('0x21')](_0x0b58('0x22'),util[_0x0b58('0x1e')](_0x0b58('0x23'),_0x2695a3[_0x0b58('0x10')][_0x0b58('0x11')](),_0x2695a3[_0x0b58('0x12')]));}}else{}}catch(_0x61386c){console[_0x0b58('0x21')](_0x61386c);}}}};
\ No newline at end of file
index 6dd23aa..0d26b63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa50=['type','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','format','Caller\x20-\x20%s','<unknown>','No\x20Company','forEach','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','password','securityToken','Connection','remoteUri','login','username','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridnum','integrationTab','user:%s','trigger:salesforce:display','trigger:browser:url','%s/%s/e','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','newTab','Salesforce\x20account\x20type\x20not\x20recognized','catch','unmanaged','toUpperCase','isNil','calleridname','lastevent',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','emit','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','contact','endUserType','lead','WhoId','WhatId','Case','ContactId','account','AccountId','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','find','execute','then','length','Email','info','Name','identity','display_name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','resolve','user_id','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','Contact','first','Phone','attributes'];(function(_0x171f91,_0x1a5d03){var _0x3d5650=function(_0x306458){while(--_0x306458){_0x171f91['push'](_0x171f91['shift']());}};_0x3d5650(++_0x1a5d03);}(_0xfa50,0x1b9));var _0x0fa5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfa50[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0fa5('0x0'));var rp=require(_0x0fa5('0x1'));var moment=require(_0x0fa5('0x2'));var BPromise=require(_0x0fa5('0x3'));var md5=require(_0x0fa5('0x4'));var jsforce=require(_0x0fa5('0x5'));var util=require('util');var Redis=require(_0x0fa5('0x6'));var intUtil=require(_0x0fa5('0x7'));var config=require(_0x0fa5('0x8'));var logger=require(_0x0fa5('0x9'))(_0x0fa5('0xa'));config[_0x0fa5('0xb')]=_[_0x0fa5('0xc')](config[_0x0fa5('0xb')],{'host':_0x0fa5('0xd'),'port':0x18eb});var io=require(_0x0fa5('0xe'))(new Redis(config[_0x0fa5('0xb')]));function emit(_0x1c306d,_0x1772cf,_0x28f22b){io['to'](_0x1c306d)[_0x0fa5('0xf')](_0x1772cf,_0x28f22b);}function getTicket(_0x255773,_0x1fd10a,_0x4a2aba,_0x3a12e6,_0x5e90be,_0xee468d,_0x2792bb,_0x527b71){var _0x2a8533=Object['assign']({},{'OwnerId':_0x1fd10a['id'],'Subject':intUtil[_0x0fa5('0x10')](_0x3a12e6['Subjects'],_0x5e90be,'\x20'),'Description':intUtil[_0x0fa5('0x10')](_0x3a12e6[_0x0fa5('0x11')],_0x5e90be,'\x0a')},getCustomFields(_0xee468d,_0x5e90be));if(_0x4a2aba){if(_0x3a12e6[_0x0fa5('0x12')]===_0x0fa5('0x13')){_0x2a8533[_0x0fa5('0x14')]=moment[_0x0fa5('0x15')]();_0x2a8533[_0x0fa5('0x16')]=![];_0x2a8533['IsRecurrence']=![];if(_0x4a2aba['endUserType']===_0x0fa5('0x17')||_0x4a2aba[_0x0fa5('0x18')]===_0x0fa5('0x19')){_0x2a8533[_0x0fa5('0x1a')]=_0x4a2aba['id'];}else if(_0x4a2aba[_0x0fa5('0x18')]==='account'){_0x2a8533[_0x0fa5('0x1b')]=_0x4a2aba['id'];}}else if(_0x3a12e6[_0x0fa5('0x12')]===_0x0fa5('0x1c')){if(_0x4a2aba[_0x0fa5('0x18')]===_0x0fa5('0x17')){_0x2a8533[_0x0fa5('0x1d')]=_0x4a2aba['id'];}else if(_0x4a2aba[_0x0fa5('0x18')]===_0x0fa5('0x1e')){_0x2a8533[_0x0fa5('0x1f')]=_0x4a2aba['id'];}else if(_0x4a2aba[_0x0fa5('0x18')]==='lead'&&_0x3a12e6[_0x0fa5('0x20')]){_0x2a8533[_0x3a12e6['leadId']]=_0x4a2aba['id'];}else{logger['info'](_0x0fa5('0x21'));}}}return _0x2792bb[_0x0fa5('0x22')](_0x3a12e6['ticketType'])[_0x0fa5('0x23')](_0x2a8533);}function getUser(_0x81708f,_0x2615b9,_0xa9104b){if(!_['isNil'](_0x2615b9)&&intUtil['validateEmail'](_0x2615b9)){var _0x416ad2={'Email':_0x2615b9};var _0x2e10c6={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0xa9104b[_0x0fa5('0x22')]('User')[_0x0fa5('0x24')](_0x416ad2,_0x2e10c6)[_0x0fa5('0x25')]()[_0x0fa5('0x26')](function(_0x3744fe){if(_0x3744fe[_0x0fa5('0x27')]){var _0x3e2ab3=_['find'](_0x3744fe,function(_0x482439){return _0x482439[_0x0fa5('0x28')]===_0x2615b9;});if(_0x3e2ab3){logger[_0x0fa5('0x29')]('Agent\x20%s\x20found.',_0x2615b9);return BPromise['resolve']({'id':_0x3e2ab3['Id'],'name':_0x3e2ab3[_0x0fa5('0x2a')]});}}else{logger[_0x0fa5('0x29')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x2615b9);return _0xa9104b[_0x0fa5('0x2b')]()[_0x0fa5('0x26')](function(_0x524bd3){return BPromise['resolve']({'id':_0x524bd3['user_id'],'name':_0x524bd3[_0x0fa5('0x2c')]});});}});}else{logger[_0x0fa5('0x29')](_0x0fa5('0x2d'),_0x2615b9);return _0xa9104b[_0x0fa5('0x2b')]()[_0x0fa5('0x26')](function(_0x3354e7){return BPromise[_0x0fa5('0x2e')]({'id':_0x3354e7[_0x0fa5('0x2f')],'name':_0x3354e7['display_name']});});}}function getEndUser(_0x220e5c,_0x397bf9,_0x51ac6e,_0x535ab1,_0x6ee068){var _0x273aa7={'$or':{'Phone':_0x535ab1}};var _0x18f86e={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x0fa5('0x2e')]()[_0x0fa5('0x26')](function(){logger[_0x0fa5('0x29')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x535ab1,_0x397bf9['moduleSearch']);switch(_0x397bf9[_0x0fa5('0x30')]){case _0x0fa5('0x31'):var _0x4d8f79=_[_0x0fa5('0x32')](_0x273aa7);if(_0x397bf9[_0x0fa5('0x33')]){var _0x5ec854={};_0x5ec854[_0x397bf9[_0x0fa5('0x33')]]=_0x535ab1;_[_0x0fa5('0x34')](_0x4d8f79[_0x0fa5('0x35')],_0x5ec854);}return _0x6ee068['sobject']('Contact')[_0x0fa5('0x24')](_0x4d8f79,_0x18f86e)[_0x0fa5('0x25')]()[_0x0fa5('0x26')](function(_0x58fbc1){if(_0x58fbc1&&_0x58fbc1['length']){return _0x58fbc1;}else{var _0x38d88b=_[_0x0fa5('0x32')](_0x273aa7);if(_0x397bf9[_0x0fa5('0x36')]){var _0x59692a={};_0x59692a[_0x397bf9[_0x0fa5('0x36')]]=_0x535ab1;_['merge'](_0x38d88b[_0x0fa5('0x35')],_0x59692a);}return _0x6ee068[_0x0fa5('0x22')](_0x0fa5('0x37'))['find'](_0x38d88b,_0x18f86e);}});case _0x0fa5('0x38'):var _0xaa44ff=_[_0x0fa5('0x32')](_0x273aa7);if(_0x397bf9[_0x0fa5('0x39')]){var _0x5ec854={};_0x5ec854[_0x397bf9[_0x0fa5('0x39')]]=_0x535ab1;_['merge'](_0xaa44ff[_0x0fa5('0x35')],_0x5ec854);}return _0x6ee068[_0x0fa5('0x22')](_0x0fa5('0x3a'))['find'](_0xaa44ff,_0x18f86e)['execute']()[_0x0fa5('0x26')](function(_0x7afa4c){if(_0x7afa4c&&_0x7afa4c[_0x0fa5('0x27')]){return _0x7afa4c;}else{var _0x5dd680=_[_0x0fa5('0x32')](_0x273aa7);if(_0x397bf9['additionalSearchContact']){var _0x4834d4={};_0x4834d4[_0x397bf9[_0x0fa5('0x33')]]=_0x535ab1;_['merge'](_0x5dd680[_0x0fa5('0x35')],_0x4834d4);}return _0x6ee068['sobject'](_0x0fa5('0x3b'))[_0x0fa5('0x24')](_0x5dd680,_0x18f86e)['then'](function(_0x54423a){if(_0x54423a&&_0x54423a['length']){return _0x54423a;}else{var _0x2d2a2c=_[_0x0fa5('0x32')](_0x273aa7);if(_0x397bf9[_0x0fa5('0x36')]){var _0xd2255e={};_0xd2255e[_0x397bf9[_0x0fa5('0x36')]]=_0x535ab1;_[_0x0fa5('0x34')](_0x2d2a2c[_0x0fa5('0x35')],_0xd2255e);}return _0x6ee068['sobject'](_0x0fa5('0x37'))[_0x0fa5('0x24')](_0x2d2a2c,_0x18f86e);}});}});case _0x0fa5('0x17'):var _0x4d8f79=_[_0x0fa5('0x32')](_0x273aa7);if(_0x397bf9[_0x0fa5('0x33')]){var _0x5ec854={};_0x5ec854[_0x397bf9['additionalSearchContact']]=_0x535ab1;_[_0x0fa5('0x34')](_0x4d8f79['$or'],_0x5ec854);}return _0x6ee068[_0x0fa5('0x22')](_0x0fa5('0x3b'))[_0x0fa5('0x24')](_0x4d8f79,_0x18f86e)[_0x0fa5('0x25')]();case'lead':var _0x3f640b=_['cloneDeep'](_0x273aa7);if(_0x397bf9[_0x0fa5('0x36')]){var _0x5ec854={};_0x5ec854[_0x397bf9[_0x0fa5('0x36')]]=_0x535ab1;_['merge'](_0x3f640b[_0x0fa5('0x35')],_0x5ec854);}return _0x6ee068[_0x0fa5('0x22')](_0x0fa5('0x37'))[_0x0fa5('0x24')](_0x3f640b,_0x18f86e);case _0x0fa5('0x1e'):var _0xaa44ff=_[_0x0fa5('0x32')](_0x273aa7);if(_0x397bf9[_0x0fa5('0x39')]){var _0x5ec854={};_0x5ec854[_0x397bf9[_0x0fa5('0x39')]]=_0x535ab1;_[_0x0fa5('0x34')](_0xaa44ff[_0x0fa5('0x35')],_0x5ec854);}return _0x6ee068[_0x0fa5('0x22')](_0x0fa5('0x3a'))[_0x0fa5('0x24')](_0xaa44ff,_0x18f86e);default:return null;}})[_0x0fa5('0x26')](function(_0x3f0b7d){if(_0x3f0b7d&&_0x3f0b7d['length']){var _0x172dff=_[_0x0fa5('0x3c')](_0x3f0b7d);if(_0x172dff){return BPromise[_0x0fa5('0x2e')]({'id':_0x172dff['Id'],'name':_0x172dff[_0x0fa5('0x2a')],'phone':_0x172dff[_0x0fa5('0x3d')],'endUserType':_0x172dff[_0x0fa5('0x3e')][_0x0fa5('0x3f')]['toLowerCase']()});}}})['then'](function(_0x3b8a70){if(_0x3b8a70){logger[_0x0fa5('0x29')](_0x0fa5('0x40'),_0x3b8a70['endUserType'],_0x535ab1);return BPromise[_0x0fa5('0x2e')](_0x3b8a70);}else{logger[_0x0fa5('0x29')](_0x0fa5('0x41'),_0x535ab1);var _0x227952={'Phone':_0x535ab1};if(_0x397bf9[_0x0fa5('0x42')]){if(_0x397bf9[_0x0fa5('0x42')]===_0x0fa5('0x17')){logger[_0x0fa5('0x29')](_0x0fa5('0x43'),_0x535ab1,_0x397bf9[_0x0fa5('0x42')]);_0x227952[_0x0fa5('0x44')]=_0x51ac6e!=='<unknown>'?_0x51ac6e:util[_0x0fa5('0x45')](_0x0fa5('0x46'),_0x535ab1);}else if(_0x397bf9[_0x0fa5('0x42')]===_0x0fa5('0x19')){logger[_0x0fa5('0x29')](_0x0fa5('0x43'),_0x535ab1,_0x397bf9[_0x0fa5('0x42')]);_0x227952[_0x0fa5('0x44')]=_0x51ac6e!==_0x0fa5('0x47')?_0x51ac6e:util[_0x0fa5('0x45')](_0x0fa5('0x46'),_0x535ab1);_0x227952['Company']=_0x0fa5('0x48');}else if(_0x397bf9['moduleCreate']===_0x0fa5('0x1e')){logger[_0x0fa5('0x29')](_0x0fa5('0x43'),_0x535ab1,_0x397bf9[_0x0fa5('0x42')]);_0x227952[_0x0fa5('0x2a')]=_0x51ac6e!==_0x0fa5('0x47')?_0x51ac6e:util[_0x0fa5('0x45')](_0x0fa5('0x46'),_0x535ab1);}else{return null;}}return _0x6ee068[_0x0fa5('0x22')](_['upperFirst'](_0x397bf9['moduleCreate']))[_0x0fa5('0x23')](_0x227952)[_0x0fa5('0x26')](function(_0x805147){return BPromise[_0x0fa5('0x2e')]({'id':_0x805147['id'],'endUserType':_0x397bf9[_0x0fa5('0x42')]});});}});}function getCustomFields(_0xa0de85,_0x38bdaa){var _0x26a863={};if(_0xa0de85[_0x0fa5('0x27')]>0x0){_[_0x0fa5('0x49')](_0xa0de85,function(_0x1a4d6c){if(_['includes']([_0x0fa5('0x4a'),_0x0fa5('0x4b')],_0x1a4d6c[_0x0fa5('0x3f')])&&_0x1a4d6c[_0x0fa5('0x4c')]){_0x26a863[_0x1a4d6c[_0x0fa5('0x4c')]]=_0x1a4d6c[_0x0fa5('0x4d')][_0x0fa5('0x4e')]();}else if(_0x1a4d6c[_0x0fa5('0x3f')]===_0x0fa5('0x4f')&&_0x1a4d6c[_0x0fa5('0x50')]&&_0x1a4d6c[_0x0fa5('0x4c')]){_0x38bdaa[_0x1a4d6c['variableName']]&&(_0x26a863[_0x1a4d6c[_0x0fa5('0x4c')]]=_0x38bdaa[_0x1a4d6c[_0x0fa5('0x50')]][_0x0fa5('0x4e')]());}else if(_0x1a4d6c[_0x0fa5('0x3f')]===_0x0fa5('0x51')&&_0x1a4d6c[_0x0fa5('0x52')]&&_0x1a4d6c['Variable'][_0x0fa5('0x53')]&&_0x1a4d6c['idField']){_0x38bdaa[_0x1a4d6c[_0x0fa5('0x52')][_0x0fa5('0x53')]['toLowerCase']()]&&(_0x26a863[_0x1a4d6c[_0x0fa5('0x4c')]]=_0x38bdaa[_0x1a4d6c['Variable']['name'][_0x0fa5('0x54')]()][_0x0fa5('0x4e')]());}});}return _0x26a863;}function getConnection(_0x41ad75){var _0x14e160=_0x41ad75[_0x0fa5('0x55')]['concat'](_0x41ad75[_0x0fa5('0x56')]);var _0x51f957=new jsforce[(_0x0fa5('0x57'))]({'oauth2':{'loginUrl':_0x41ad75[_0x0fa5('0x58')]||'https://login.salesforce.com','clientId':_0x41ad75['clientId'],'clientSecret':_0x41ad75['clientSecret']}});return _0x51f957[_0x0fa5('0x59')](_0x41ad75[_0x0fa5('0x5a')],_0x14e160)[_0x0fa5('0x26')](function(){logger[_0x0fa5('0x29')]('Connection\x20established.');return _0x51f957;});}exports[_0x0fa5('0x5b')]=function(_0x468a65,_0x2b6d60,_0x1d5662,_0x5b08ba,_0x37aa1c,_0x361910){var _0x3f9c92,_0x599d7a,_0x1926e5,_0x83285d;_0x361910['serverUrl']=intUtil[_0x0fa5('0x5c')](_0x361910[_0x0fa5('0x5d')]);_0x361910[_0x0fa5('0x58')]=intUtil['stripTrailingSlash'](_0x361910[_0x0fa5('0x58')]);if(_0x37aa1c&&_0x37aa1c[_0x0fa5('0x5e')]){logger['info'](_0x0fa5('0x5f'),_0x0fa5('0x60'));_0x2b6d60[_0x0fa5('0x61')]=util[_0x0fa5('0x45')](_0x0fa5('0x62'),_0x361910[_0x0fa5('0x5d')],_0x2b6d60[_0x0fa5('0x63')],md5(_0x2b6d60[_0x0fa5('0x63')]));}else{_0x2b6d60[_0x0fa5('0x61')]='';}return getConnection(_0x361910)['then'](function(_0x2636af){_0x83285d=_0x2636af;return getUser(_0x361910,_0x5b08ba[_0x0fa5('0x64')],_0x83285d);})[_0x0fa5('0x26')](function(_0x17e919){_0x3f9c92=_0x17e919;return getEndUser(_0x361910,_0x1d5662,_0x2b6d60['calleridname'],_0x2b6d60[_0x0fa5('0x65')],_0x83285d);})[_0x0fa5('0x26')](function(_0x5df1ad){_0x599d7a=_0x5df1ad;return getTicket(_0x361910,_0x3f9c92,_0x599d7a,_0x1d5662,_0x2b6d60,_0x1d5662['Fields'],_0x83285d,_0x0fa5('0x5b'));})[_0x0fa5('0x26')](function(_0x3a64d3){_0x1926e5=_0x3a64d3;logger[_0x0fa5('0x29')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x1926e5['id']);logger['info']('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x1926e5['id'],_0x5b08ba['name'],_0x361910[_0x0fa5('0x3f')]);switch(_0x361910[_0x0fa5('0x3f')]){case _0x0fa5('0x66'):emit(util[_0x0fa5('0x45')](_0x0fa5('0x67'),_0x5b08ba[_0x0fa5('0x53')]),_0x0fa5('0x68'),{'recordId':_0x1926e5['id']});break;case'newTab':emit(util[_0x0fa5('0x45')](_0x0fa5('0x67'),_0x5b08ba['name']),_0x0fa5('0x69'),{'uri':util['format'](_0x0fa5('0x6a'),_0x83285d['instanceUrl'],_0x1926e5['id'])});break;default:logger[_0x0fa5('0x6b')](_0x0fa5('0x6c'));}})['catch'](function(_0x5cd0f0){logger[_0x0fa5('0x6b')](_0x0fa5('0x5f'),_0x5cd0f0);});};exports[_0x0fa5('0x6d')]=function(_0x52d9e1,_0x28dc60,_0xc3694f,_0x84d823,_0xeae698,_0x42424f,_0xbb520b){var _0x1b1f55,_0x57b6fb,_0x4908d8,_0x209eb0;_0x42424f[_0x0fa5('0x5d')]=intUtil[_0x0fa5('0x5c')](_0x42424f[_0x0fa5('0x5d')]);_0x42424f['remoteUri']=intUtil[_0x0fa5('0x5c')](_0x42424f[_0x0fa5('0x58')]);if(_0xbb520b&&_0xbb520b['recordingFormat']&&_0xbb520b[_0x0fa5('0x6e')]!=='none'){logger[_0x0fa5('0x29')](_0x0fa5('0x6f'),_0x0fa5('0x60'));_0x28dc60['recordingURL']=util[_0x0fa5('0x45')](_0x0fa5('0x62'),_0x42424f[_0x0fa5('0x5d')],_0x28dc60[_0x0fa5('0x63')],md5(_0x28dc60[_0x0fa5('0x63')]));}return getConnection(_0x42424f)[_0x0fa5('0x26')](function(_0x3e3927){_0x209eb0=_0x3e3927;return getUser(_0x42424f,_0x84d823[_0x0fa5('0x64')],_0x209eb0);})['then'](function(_0x5b950e){_0x1b1f55=_0x5b950e;return getEndUser(_0x42424f,_0xc3694f,_0x28dc60[_0x0fa5('0x70')],_0x28dc60[_0x0fa5('0x71')],_0x209eb0);})['then'](function(_0x45b917){_0x57b6fb=_0x45b917;return getTicket(_0x42424f,_0x1b1f55,_0x57b6fb,_0xc3694f,_0x28dc60,_0xc3694f[_0x0fa5('0x72')],_0x209eb0,'outbound');})[_0x0fa5('0x26')](function(_0x37189a){_0x4908d8=_0x37189a;logger[_0x0fa5('0x29')](_0x0fa5('0x73'),_0x4908d8['id']);logger[_0x0fa5('0x29')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x4908d8['id'],_0x84d823[_0x0fa5('0x53')],_0x42424f[_0x0fa5('0x3f')]);switch(_0x42424f[_0x0fa5('0x3f')]){case _0x0fa5('0x66'):emit(util[_0x0fa5('0x45')]('user:%s',_0x84d823[_0x0fa5('0x53')]),_0x0fa5('0x68'),{'recordId':_0x4908d8['id']});break;case _0x0fa5('0x74'):emit(util[_0x0fa5('0x45')](_0x0fa5('0x67'),_0x84d823[_0x0fa5('0x53')]),'trigger:browser:url',{'uri':util[_0x0fa5('0x45')](_0x0fa5('0x6a'),_0x209eb0['instanceUrl'],_0x4908d8['id'])});break;default:logger['error']('[OUTBOUND]',_0x0fa5('0x75'));}})[_0x0fa5('0x76')](function(_0x1846be){logger['error']('[OUTBOUND]',_0x1846be);});};exports[_0x0fa5('0x77')]=function(_0x53f936,_0x3fd45f,_0x31df78,_0x1b6377,_0x4351a2,_0x11409f){var _0x2c6ded,_0x365dc7,_0x355b98,_0x13b2c3;_0x11409f[_0x0fa5('0x5d')]=intUtil[_0x0fa5('0x5c')](_0x11409f[_0x0fa5('0x5d')]);_0x11409f[_0x0fa5('0x58')]=intUtil['stripTrailingSlash'](_0x11409f[_0x0fa5('0x58')]);if(_0x4351a2&&_0x4351a2['monitor_format']){logger['info']('['+_0x3fd45f['lastevent'][_0x0fa5('0x78')]()+']','Recording\x20is\x20enabled!');_0x3fd45f[_0x0fa5('0x61')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x11409f['serverUrl'],_0x3fd45f[_0x0fa5('0x63')],md5(_0x3fd45f[_0x0fa5('0x63')]));}else{_0x3fd45f['recordingURL']='';}return getConnection(_0x11409f)[_0x0fa5('0x26')](function(_0x15bebb){_0x13b2c3=_0x15bebb;if(!_[_0x0fa5('0x79')](_0x1b6377)){return getUser(_0x11409f,_0x1b6377[_0x0fa5('0x53')],_0x13b2c3);}else{return getUser(_0x11409f,null,_0x13b2c3);}})['then'](function(_0x189082){_0x2c6ded=_0x189082;return getEndUser(_0x11409f,_0x31df78,_0x3fd45f[_0x0fa5('0x7a')],_0x3fd45f[_0x0fa5('0x65')],_0x13b2c3);})[_0x0fa5('0x26')](function(_0x41c3d7){_0x365dc7=_0x41c3d7;return getTicket(_0x11409f,_0x2c6ded,_0x365dc7,_0x31df78,_0x3fd45f,_0x31df78[_0x0fa5('0x72')],_0x13b2c3);})[_0x0fa5('0x26')](function(_0x366326){_0x355b98=_0x366326;logger[_0x0fa5('0x29')]('['+_0x3fd45f[_0x0fa5('0x7b')][_0x0fa5('0x78')]()+_0x0fa5('0x7c'),_0x355b98['id']);logger[_0x0fa5('0x29')]('['+_0x3fd45f['lastevent']['toUpperCase']()+_0x0fa5('0x7d'),_0x11409f[_0x0fa5('0x3f')]);})['catch'](function(_0x383c52){logger[_0x0fa5('0x6b')]('['+_0x3fd45f[_0x0fa5('0x7b')][_0x0fa5('0x78')]()+']',_0x383c52);});};
\ No newline at end of file
+var _0xd38f=['stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','catch','outbound','recordingFormat','[OUTBOUND]','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','integrationTab','user:%s','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','toUpperCase','isNil','lastevent',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','request-promise','moment','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','assign','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','info','sobject','create','validateEmail','find','execute','then','Email','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','cloneDeep','additionalSearchContact','merge','length','additionalSearchLead','$or','Lead','account_contact_lead','additionalSearchAccount','Contact','first','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','forEach','includes','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','Connection\x20established.','queue','serverUrl'];(function(_0x9bc277,_0x361003){var _0x2d3fc0=function(_0x27ea86){while(--_0x27ea86){_0x9bc277['push'](_0x9bc277['shift']());}};_0x2d3fc0(++_0x361003);}(_0xd38f,0x123));var _0xfd38=function(_0x5d960a,_0x36d84d){_0x5d960a=_0x5d960a-0x0;var _0x17a0ff=_0xd38f[_0x5d960a];return _0x17a0ff;};'use strict';var _=require('lodash');var rp=require(_0xfd38('0x0'));var moment=require(_0xfd38('0x1'));var BPromise=require('bluebird');var md5=require(_0xfd38('0x2'));var jsforce=require(_0xfd38('0x3'));var util=require(_0xfd38('0x4'));var Redis=require(_0xfd38('0x5'));var intUtil=require(_0xfd38('0x6'));var config=require(_0xfd38('0x7'));var logger=require(_0xfd38('0x8'))(_0xfd38('0x9'));config[_0xfd38('0xa')]=_[_0xfd38('0xb')](config[_0xfd38('0xa')],{'host':_0xfd38('0xc'),'port':0x18eb});var io=require(_0xfd38('0xd'))(new Redis(config[_0xfd38('0xa')]));function emit(_0x25db23,_0xb92f5f,_0x43e88b){io['to'](_0x25db23)['emit'](_0xb92f5f,_0x43e88b);}function getTicket(_0x1779cd,_0x54ab04,_0x13a57e,_0x3c8cdc,_0x46aee8,_0x3ec054,_0x5c3b56,_0x2abe17){var _0x3704d4=Object[_0xfd38('0xe')]({},{'OwnerId':_0x54ab04['id'],'Subject':intUtil['getString'](_0x3c8cdc['Subjects'],_0x46aee8,'\x20'),'Description':intUtil[_0xfd38('0xf')](_0x3c8cdc[_0xfd38('0x10')],_0x46aee8,'\x0a')},getCustomFields(_0x3ec054,_0x46aee8));if(_0x13a57e){if(_0x3c8cdc[_0xfd38('0x11')]===_0xfd38('0x12')){_0x3704d4[_0xfd38('0x13')]=moment[_0xfd38('0x14')]();_0x3704d4[_0xfd38('0x15')]=![];_0x3704d4[_0xfd38('0x16')]=![];if(_0x13a57e[_0xfd38('0x17')]===_0xfd38('0x18')||_0x13a57e[_0xfd38('0x17')]===_0xfd38('0x19')){_0x3704d4[_0xfd38('0x1a')]=_0x13a57e['id'];}else if(_0x13a57e[_0xfd38('0x17')]===_0xfd38('0x1b')){_0x3704d4[_0xfd38('0x1c')]=_0x13a57e['id'];}}else if(_0x3c8cdc[_0xfd38('0x11')]===_0xfd38('0x1d')){if(_0x13a57e[_0xfd38('0x17')]===_0xfd38('0x18')){_0x3704d4[_0xfd38('0x1e')]=_0x13a57e['id'];}else if(_0x13a57e[_0xfd38('0x17')]===_0xfd38('0x1b')){_0x3704d4[_0xfd38('0x1f')]=_0x13a57e['id'];}else if(_0x13a57e[_0xfd38('0x17')]==='lead'&&_0x3c8cdc[_0xfd38('0x20')]){_0x3704d4[_0x3c8cdc[_0xfd38('0x20')]]=_0x13a57e['id'];}else{logger[_0xfd38('0x21')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x5c3b56[_0xfd38('0x22')](_0x3c8cdc['ticketType'])[_0xfd38('0x23')](_0x3704d4);}function getUser(_0x7f4a11,_0x273f81,_0x359314){if(!_['isNil'](_0x273f81)&&intUtil[_0xfd38('0x24')](_0x273f81)){var _0x5391bd={'Email':_0x273f81};var _0x5c5643={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x359314['sobject']('User')[_0xfd38('0x25')](_0x5391bd,_0x5c5643)[_0xfd38('0x26')]()[_0xfd38('0x27')](function(_0x3dee58){if(_0x3dee58['length']){var _0x58bf5b=_[_0xfd38('0x25')](_0x3dee58,function(_0x2e0ea7){return _0x2e0ea7[_0xfd38('0x28')]===_0x273f81;});if(_0x58bf5b){logger[_0xfd38('0x21')]('Agent\x20%s\x20found.',_0x273f81);return BPromise[_0xfd38('0x29')]({'id':_0x58bf5b['Id'],'name':_0x58bf5b[_0xfd38('0x2a')]});}}else{logger[_0xfd38('0x21')](_0xfd38('0x2b'),_0x273f81);return _0x359314[_0xfd38('0x2c')]()[_0xfd38('0x27')](function(_0x56e650){return BPromise[_0xfd38('0x29')]({'id':_0x56e650[_0xfd38('0x2d')],'name':_0x56e650[_0xfd38('0x2e')]});});}});}else{logger['info'](_0xfd38('0x2b'),_0x273f81);return _0x359314['identity']()[_0xfd38('0x27')](function(_0x491729){return BPromise[_0xfd38('0x29')]({'id':_0x491729[_0xfd38('0x2d')],'name':_0x491729[_0xfd38('0x2e')]});});}}function getEndUser(_0x5d689f,_0x5157d0,_0x131b28,_0x24c9fe,_0xe87328){var _0xbcc96d={'$or':{'Phone':_0x24c9fe}};var _0x5dd37b={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0xfd38('0x27')](function(){logger['info'](_0xfd38('0x2f'),_0x24c9fe,_0x5157d0['moduleSearch']);switch(_0x5157d0['moduleSearch']){case'contact_lead':var _0x4c656a=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x31')]){var _0x5cb156={};_0x5cb156[_0x5157d0[_0xfd38('0x31')]]=_0x24c9fe;_[_0xfd38('0x32')](_0x4c656a['$or'],_0x5cb156);}return _0xe87328[_0xfd38('0x22')]('Contact')['find'](_0x4c656a,_0x5dd37b)[_0xfd38('0x26')]()[_0xfd38('0x27')](function(_0x3cbfff){if(_0x3cbfff&&_0x3cbfff[_0xfd38('0x33')]){return _0x3cbfff;}else{var _0x814153=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0['additionalSearchLead']){var _0x32e9a2={};_0x32e9a2[_0x5157d0[_0xfd38('0x34')]]=_0x24c9fe;_['merge'](_0x814153[_0xfd38('0x35')],_0x32e9a2);}return _0xe87328['sobject'](_0xfd38('0x36'))[_0xfd38('0x25')](_0x814153,_0x5dd37b);}});case _0xfd38('0x37'):var _0x107dc6=_['cloneDeep'](_0xbcc96d);if(_0x5157d0[_0xfd38('0x38')]){var _0x5cb156={};_0x5cb156[_0x5157d0[_0xfd38('0x38')]]=_0x24c9fe;_[_0xfd38('0x32')](_0x107dc6[_0xfd38('0x35')],_0x5cb156);}return _0xe87328[_0xfd38('0x22')]('Account')[_0xfd38('0x25')](_0x107dc6,_0x5dd37b)[_0xfd38('0x26')]()[_0xfd38('0x27')](function(_0x5f062c){if(_0x5f062c&&_0x5f062c[_0xfd38('0x33')]){return _0x5f062c;}else{var _0x22ed6a=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x31')]){var _0x3b85a6={};_0x3b85a6[_0x5157d0['additionalSearchContact']]=_0x24c9fe;_['merge'](_0x22ed6a[_0xfd38('0x35')],_0x3b85a6);}return _0xe87328['sobject']('Contact')[_0xfd38('0x25')](_0x22ed6a,_0x5dd37b)['then'](function(_0x40fb54){if(_0x40fb54&&_0x40fb54['length']){return _0x40fb54;}else{var _0x4ce836=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x34')]){var _0x51bfb2={};_0x51bfb2[_0x5157d0['additionalSearchLead']]=_0x24c9fe;_['merge'](_0x4ce836[_0xfd38('0x35')],_0x51bfb2);}return _0xe87328[_0xfd38('0x22')](_0xfd38('0x36'))[_0xfd38('0x25')](_0x4ce836,_0x5dd37b);}});}});case _0xfd38('0x18'):var _0x4c656a=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x31')]){var _0x5cb156={};_0x5cb156[_0x5157d0[_0xfd38('0x31')]]=_0x24c9fe;_[_0xfd38('0x32')](_0x4c656a[_0xfd38('0x35')],_0x5cb156);}return _0xe87328[_0xfd38('0x22')](_0xfd38('0x39'))[_0xfd38('0x25')](_0x4c656a,_0x5dd37b)[_0xfd38('0x26')]();case'lead':var _0x1c53b2=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x34')]){var _0x5cb156={};_0x5cb156[_0x5157d0['additionalSearchLead']]=_0x24c9fe;_[_0xfd38('0x32')](_0x1c53b2[_0xfd38('0x35')],_0x5cb156);}return _0xe87328[_0xfd38('0x22')](_0xfd38('0x36'))[_0xfd38('0x25')](_0x1c53b2,_0x5dd37b);case _0xfd38('0x1b'):var _0x107dc6=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x38')]){var _0x5cb156={};_0x5cb156[_0x5157d0[_0xfd38('0x38')]]=_0x24c9fe;_[_0xfd38('0x32')](_0x107dc6[_0xfd38('0x35')],_0x5cb156);}return _0xe87328[_0xfd38('0x22')]('Account')[_0xfd38('0x25')](_0x107dc6,_0x5dd37b);default:return null;}})['then'](function(_0x5e9ec0){if(_0x5e9ec0&&_0x5e9ec0[_0xfd38('0x33')]){var _0x56a0a3=_[_0xfd38('0x3a')](_0x5e9ec0);if(_0x56a0a3){return BPromise[_0xfd38('0x29')]({'id':_0x56a0a3['Id'],'name':_0x56a0a3[_0xfd38('0x2a')],'phone':_0x56a0a3[_0xfd38('0x3b')],'endUserType':_0x56a0a3[_0xfd38('0x3c')][_0xfd38('0x3d')][_0xfd38('0x3e')]()});}}})[_0xfd38('0x27')](function(_0x28d44e){if(_0x28d44e){logger[_0xfd38('0x21')](_0xfd38('0x3f'),_0x28d44e[_0xfd38('0x17')],_0x24c9fe);return BPromise[_0xfd38('0x29')](_0x28d44e);}else{logger['info']('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x24c9fe);var _0xfbe339={'Phone':_0x24c9fe};if(_0x5157d0[_0xfd38('0x40')]){if(_0x5157d0[_0xfd38('0x40')]===_0xfd38('0x18')){logger['info'](_0xfd38('0x41'),_0x24c9fe,_0x5157d0[_0xfd38('0x40')]);_0xfbe339[_0xfd38('0x42')]=_0x131b28!==_0xfd38('0x43')?_0x131b28:util[_0xfd38('0x44')](_0xfd38('0x45'),_0x24c9fe);}else if(_0x5157d0['moduleCreate']===_0xfd38('0x19')){logger[_0xfd38('0x21')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x24c9fe,_0x5157d0['moduleCreate']);_0xfbe339[_0xfd38('0x42')]=_0x131b28!==_0xfd38('0x43')?_0x131b28:util[_0xfd38('0x44')](_0xfd38('0x45'),_0x24c9fe);_0xfbe339[_0xfd38('0x46')]=_0xfd38('0x47');}else if(_0x5157d0['moduleCreate']===_0xfd38('0x1b')){logger[_0xfd38('0x21')](_0xfd38('0x41'),_0x24c9fe,_0x5157d0['moduleCreate']);_0xfbe339[_0xfd38('0x2a')]=_0x131b28!==_0xfd38('0x43')?_0x131b28:util['format']('Caller\x20-\x20%s',_0x24c9fe);}else{return null;}}return _0xe87328['sobject'](_[_0xfd38('0x48')](_0x5157d0[_0xfd38('0x40')]))[_0xfd38('0x23')](_0xfbe339)['then'](function(_0x34920c){return BPromise[_0xfd38('0x29')]({'id':_0x34920c['id'],'endUserType':_0x5157d0['moduleCreate']});});}});}function getCustomFields(_0x279073,_0x488e15){var _0x2a0501={};if(_0x279073[_0xfd38('0x33')]>0x0){_[_0xfd38('0x49')](_0x279073,function(_0x917a51){if(_[_0xfd38('0x4a')]([_0xfd38('0x4b'),_0xfd38('0x4c')],_0x917a51[_0xfd38('0x3d')])&&_0x917a51[_0xfd38('0x4d')]){_0x2a0501[_0x917a51[_0xfd38('0x4d')]]=_0x917a51[_0xfd38('0x4e')][_0xfd38('0x4f')]();}else if(_0x917a51[_0xfd38('0x3d')]===_0xfd38('0x50')&&_0x917a51[_0xfd38('0x51')]&&_0x917a51[_0xfd38('0x4d')]){_0x488e15[_0x917a51[_0xfd38('0x51')]]&&(_0x2a0501[_0x917a51['idField']]=_0x488e15[_0x917a51[_0xfd38('0x51')]][_0xfd38('0x4f')]());}else if(_0x917a51[_0xfd38('0x3d')]===_0xfd38('0x52')&&_0x917a51[_0xfd38('0x53')]&&_0x917a51[_0xfd38('0x53')][_0xfd38('0x54')]&&_0x917a51[_0xfd38('0x4d')]){_0x488e15[_0x917a51['Variable']['name'][_0xfd38('0x3e')]()]&&(_0x2a0501[_0x917a51['idField']]=_0x488e15[_0x917a51[_0xfd38('0x53')][_0xfd38('0x54')]['toLowerCase']()][_0xfd38('0x4f')]());}});}return _0x2a0501;}function getConnection(_0x32a523){var _0x4da1bf=_0x32a523['password'][_0xfd38('0x55')](_0x32a523[_0xfd38('0x56')]);var _0x235ff7=new jsforce[(_0xfd38('0x57'))]({'oauth2':{'loginUrl':_0x32a523[_0xfd38('0x58')]||_0xfd38('0x59'),'clientId':_0x32a523[_0xfd38('0x5a')],'clientSecret':_0x32a523[_0xfd38('0x5b')]}});return _0x235ff7[_0xfd38('0x5c')](_0x32a523['username'],_0x4da1bf)[_0xfd38('0x27')](function(){logger['info'](_0xfd38('0x5d'));return _0x235ff7;});}exports[_0xfd38('0x5e')]=function(_0x3fb76c,_0x4f0fd0,_0x2e5ff2,_0x542af8,_0x354e56,_0x3d0e2d){var _0xc7b7e9,_0x5a26fd,_0x2233f7,_0x7d7568;_0x3d0e2d[_0xfd38('0x5f')]=intUtil['stripTrailingSlash'](_0x3d0e2d[_0xfd38('0x5f')]);_0x3d0e2d[_0xfd38('0x58')]=intUtil[_0xfd38('0x60')](_0x3d0e2d[_0xfd38('0x58')]);if(_0x354e56&&_0x354e56[_0xfd38('0x61')]){logger[_0xfd38('0x21')](_0xfd38('0x62'),_0xfd38('0x63'));_0x4f0fd0['recordingURL']=util[_0xfd38('0x44')](_0xfd38('0x64'),_0x3d0e2d[_0xfd38('0x5f')],_0x4f0fd0[_0xfd38('0x65')],md5(_0x4f0fd0['uniqueid']));}else{_0x4f0fd0[_0xfd38('0x66')]='';}return getConnection(_0x3d0e2d)['then'](function(_0x21e0c2){_0x7d7568=_0x21e0c2;return getUser(_0x3d0e2d,_0x542af8[_0xfd38('0x67')],_0x7d7568);})[_0xfd38('0x27')](function(_0x2303d8){_0xc7b7e9=_0x2303d8;return getEndUser(_0x3d0e2d,_0x2e5ff2,_0x4f0fd0[_0xfd38('0x68')],_0x4f0fd0[_0xfd38('0x69')],_0x7d7568);})[_0xfd38('0x27')](function(_0x35ed79){_0x5a26fd=_0x35ed79;return getTicket(_0x3d0e2d,_0xc7b7e9,_0x5a26fd,_0x2e5ff2,_0x4f0fd0,_0x2e5ff2['Fields'],_0x7d7568,_0xfd38('0x5e'));})[_0xfd38('0x27')](function(_0x13673b){_0x2233f7=_0x13673b;logger[_0xfd38('0x21')](_0xfd38('0x6a'),_0x2233f7['id']);logger[_0xfd38('0x21')](_0xfd38('0x6b'),_0x2233f7['id'],_0x542af8[_0xfd38('0x54')],_0x3d0e2d['type']);switch(_0x3d0e2d[_0xfd38('0x3d')]){case'integrationTab':emit(util['format']('user:%s',_0x542af8[_0xfd38('0x54')]),_0xfd38('0x6c'),{'recordId':_0x2233f7['id']});break;case _0xfd38('0x6d'):emit(util['format']('user:%s',_0x542af8[_0xfd38('0x54')]),_0xfd38('0x6e'),{'uri':util['format'](_0xfd38('0x6f'),_0x7d7568[_0xfd38('0x70')],_0x2233f7['id'])});break;default:logger[_0xfd38('0x71')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0xfd38('0x72')](function(_0x35db86){logger['error'](_0xfd38('0x62'),_0x35db86);});};exports[_0xfd38('0x73')]=function(_0x5bbab1,_0x2223f1,_0x4e1399,_0x4b9df9,_0x50b647,_0x159ed5,_0x4136ae){var _0x494cbd,_0x4c2b15,_0x10de54,_0x1710e5;_0x159ed5[_0xfd38('0x5f')]=intUtil[_0xfd38('0x60')](_0x159ed5[_0xfd38('0x5f')]);_0x159ed5[_0xfd38('0x58')]=intUtil[_0xfd38('0x60')](_0x159ed5[_0xfd38('0x58')]);if(_0x4136ae&&_0x4136ae[_0xfd38('0x74')]&&_0x4136ae[_0xfd38('0x74')]!=='none'){logger[_0xfd38('0x21')](_0xfd38('0x75'),_0xfd38('0x63'));_0x2223f1['recordingURL']=util[_0xfd38('0x44')](_0xfd38('0x64'),_0x159ed5[_0xfd38('0x5f')],_0x2223f1[_0xfd38('0x65')],md5(_0x2223f1[_0xfd38('0x65')]));}return getConnection(_0x159ed5)['then'](function(_0x116105){_0x1710e5=_0x116105;return getUser(_0x159ed5,_0x4b9df9[_0xfd38('0x67')],_0x1710e5);})['then'](function(_0x160d40){_0x494cbd=_0x160d40;return getEndUser(_0x159ed5,_0x4e1399,_0x2223f1['destcalleridname'],_0x2223f1['destcalleridnum'],_0x1710e5);})[_0xfd38('0x27')](function(_0x3faed0){_0x4c2b15=_0x3faed0;return getTicket(_0x159ed5,_0x494cbd,_0x4c2b15,_0x4e1399,_0x2223f1,_0x4e1399[_0xfd38('0x76')],_0x1710e5,'outbound');})['then'](function(_0x4a0963){_0x10de54=_0x4a0963;logger['info'](_0xfd38('0x77'),_0x10de54['id']);logger['info']('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x10de54['id'],_0x4b9df9['name'],_0x159ed5[_0xfd38('0x3d')]);switch(_0x159ed5[_0xfd38('0x3d')]){case _0xfd38('0x78'):emit(util[_0xfd38('0x44')](_0xfd38('0x79'),_0x4b9df9[_0xfd38('0x54')]),_0xfd38('0x6c'),{'recordId':_0x10de54['id']});break;case _0xfd38('0x6d'):emit(util[_0xfd38('0x44')](_0xfd38('0x79'),_0x4b9df9[_0xfd38('0x54')]),_0xfd38('0x6e'),{'uri':util[_0xfd38('0x44')](_0xfd38('0x6f'),_0x1710e5['instanceUrl'],_0x10de54['id'])});break;default:logger[_0xfd38('0x71')](_0xfd38('0x75'),_0xfd38('0x7a'));}})['catch'](function(_0x4f8548){logger[_0xfd38('0x71')]('[OUTBOUND]',_0x4f8548);});};exports[_0xfd38('0x7b')]=function(_0x34c72d,_0x4d574f,_0x123b60,_0x1fb06a,_0x34e3d4,_0x53adce){var _0x4f475b,_0x4d6435,_0x54ba87,_0x440712;_0x53adce[_0xfd38('0x5f')]=intUtil[_0xfd38('0x60')](_0x53adce[_0xfd38('0x5f')]);_0x53adce[_0xfd38('0x58')]=intUtil[_0xfd38('0x60')](_0x53adce[_0xfd38('0x58')]);if(_0x34e3d4&&_0x34e3d4[_0xfd38('0x61')]){logger[_0xfd38('0x21')]('['+_0x4d574f['lastevent'][_0xfd38('0x7c')]()+']',_0xfd38('0x63'));_0x4d574f[_0xfd38('0x66')]=util[_0xfd38('0x44')](_0xfd38('0x64'),_0x53adce['serverUrl'],_0x4d574f[_0xfd38('0x65')],md5(_0x4d574f['uniqueid']));}else{_0x4d574f[_0xfd38('0x66')]='';}return getConnection(_0x53adce)['then'](function(_0x3ae8d2){_0x440712=_0x3ae8d2;if(!_[_0xfd38('0x7d')](_0x1fb06a)){return getUser(_0x53adce,_0x1fb06a[_0xfd38('0x54')],_0x440712);}else{return getUser(_0x53adce,null,_0x440712);}})[_0xfd38('0x27')](function(_0x4c7062){_0x4f475b=_0x4c7062;return getEndUser(_0x53adce,_0x123b60,_0x4d574f[_0xfd38('0x68')],_0x4d574f[_0xfd38('0x69')],_0x440712);})[_0xfd38('0x27')](function(_0x39ede3){_0x4d6435=_0x39ede3;return getTicket(_0x53adce,_0x4f475b,_0x4d6435,_0x123b60,_0x4d574f,_0x123b60[_0xfd38('0x76')],_0x440712);})[_0xfd38('0x27')](function(_0x29a6be){_0x54ba87=_0x29a6be;logger['info']('['+_0x4d574f[_0xfd38('0x7e')][_0xfd38('0x7c')]()+_0xfd38('0x7f'),_0x54ba87['id']);logger[_0xfd38('0x21')]('['+_0x4d574f[_0xfd38('0x7e')][_0xfd38('0x7c')]()+_0xfd38('0x80'),_0x53adce[_0xfd38('0x3d')]);})[_0xfd38('0x72')](function(_0x3bda5a){logger[_0xfd38('0x71')]('['+_0x4d574f[_0xfd38('0x7e')][_0xfd38('0x7c')]()+']',_0x3bda5a);});};
\ No newline at end of file
index 3cedaf1..ed6512a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bc3=['%s/api/now/table/','isNil','email','outbound','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','result','length','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','validateEmail','userEmail','sys_user?sysparm_query=email%3D','then','active','true','userId','adminId','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','includes','picklist','type','customField','toLowerCase','toString','string','content','variableName','idField','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','POST','incident','assign','getString','Subjects','Descriptions','Fields','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','forEach','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','format','user:%s','emit','trigger:browser:url','password','sysparm_limit=1','stripTrailingSlash','remoteUri','serverUrl'];(function(_0x45bd7f,_0x324d30){var _0x4335e0=function(_0x484733){while(--_0x484733){_0x45bd7f['push'](_0x45bd7f['shift']());}};_0x4335e0(++_0x324d30);}(_0x3bc3,0x80));var _0x33bc=function(_0x12cf3a,_0x50d495){_0x12cf3a=_0x12cf3a-0x0;var _0x4bbcaf=_0x3bc3[_0x12cf3a];return _0x4bbcaf;};'use strict';var _=require(_0x33bc('0x0'));var Promise=require(_0x33bc('0x1'));var rp=require(_0x33bc('0x2'));var util=require(_0x33bc('0x3'));var md5=require(_0x33bc('0x4'));var Redis=require(_0x33bc('0x5'));var intUtil=require(_0x33bc('0x6'));var config=require(_0x33bc('0x7'));var logger=require(_0x33bc('0x8'))('servicenow');config[_0x33bc('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x33bc('0xa'))(new Redis(config[_0x33bc('0x9')]));function getAdminUser(_0x5bb94,_0x23211d,_0x5e3ec0,_0x323802,_0x2addd0,_0x5c81d1){return new Promise(function(_0x460fde,_0x4cda5c){var _0x2d128b={'method':_0x33bc('0xb'),'uri':_0x323802+_0x33bc('0xc')+'&'+_0x2addd0+'&'+_0x5c81d1,'auth':_0x23211d,'json':!![]};return rp(_0x2d128b)['then'](function(_0x2c9032){if(_0x2c9032[_0x33bc('0xd')][_0x33bc('0xe')]>0x0){_0x5e3ec0['adminId']=_0x2c9032[_0x33bc('0xd')][0x0][_0x33bc('0xf')];}logger[_0x33bc('0x10')]('['+[_0x5bb94[_0x33bc('0x11')]()]+_0x33bc('0x12'),_0x5e3ec0);_0x460fde(_0x5e3ec0);})[_0x33bc('0x13')](function(_0x2677af){logger[_0x33bc('0x14')]('['+[_0x5bb94[_0x33bc('0x11')]()]+']',_0x2677af['message']);_0x4cda5c(_0x2677af[_0x33bc('0x15')]);});});}function getUser(_0x209384,_0x4dc84b,_0x186278,_0x1207a4,_0x2d5db3){return function(_0x229011){logger[_0x33bc('0x10')]('['+[_0x209384['toUpperCase']()]+'],\x20getUser\x20input\x20crm',_0x229011);return new Promise(function(_0x257c79,_0x948b92){if(intUtil[_0x33bc('0x16')](_0x229011[_0x33bc('0x17')])){var _0x25d8e3={'method':_0x33bc('0xb'),'uri':_0x186278+_0x33bc('0x18')+_0x229011[_0x33bc('0x17')]+'&'+_0x1207a4+'&'+_0x2d5db3,'auth':_0x4dc84b,'json':!![]};logger[_0x33bc('0x10')]('['+[_0x209384[_0x33bc('0x11')]()]+'],\x20getUser\x20rp\x20obj',_0x25d8e3);return rp(_0x25d8e3)[_0x33bc('0x19')](function(_0x2a148b){logger[_0x33bc('0x10')]('['+[_0x209384['toUpperCase']()]+'],\x20getUser\x20entity',_0x2a148b);if(_0x2a148b[_0x33bc('0xd')][_0x33bc('0xe')]>0x0&&String(_0x2a148b['result'][0x0][_0x33bc('0x1a')])===_0x33bc('0x1b')){_0x229011[_0x33bc('0x1c')]=_0x2a148b[_0x33bc('0xd')][0x0][_0x33bc('0xf')];}else{_0x229011[_0x33bc('0x1c')]=_0x229011[_0x33bc('0x1d')];_0x229011[_0x33bc('0x17')]=_0x229011['adminEmail'];}logger[_0x33bc('0x10')]('['+[_0x209384[_0x33bc('0x11')]()]+_0x33bc('0x1e'),_0x229011);_0x257c79(_0x229011);})[_0x33bc('0x13')](function(_0x2793ee){logger[_0x33bc('0x14')]('['+[_0x209384[_0x33bc('0x11')]()]+']',_0x2793ee['message']);_0x948b92(_0x2793ee[_0x33bc('0x15')]);});}else{logger['info']('['+[_0x209384[_0x33bc('0x11')]()]+_0x33bc('0x1f'));_0x229011[_0x33bc('0x1c')]=_0x229011[_0x33bc('0x1d')];_0x229011['userEmail']=_0x229011[_0x33bc('0x20')];_0x257c79(_0x229011);}});};}function createEndUser(_0x20094c,_0x2526af,_0x9a2ed1,_0x23498d,_0x5b78f5){logger[_0x33bc('0x10')]('['+[_0x20094c[_0x33bc('0x11')]()]+_0x33bc('0x21'),_0x9a2ed1);return new Promise(function(_0x4cc30b,_0x43089c){var _0x275d5e={'method':'POST','uri':_0x23498d+_0x33bc('0x22')+_0x5b78f5,'body':{'user_name':_0x9a2ed1[_0x33bc('0x23')],'roles':_0x33bc('0x24'),'first_name':_0x9a2ed1[_0x33bc('0x23')],'active':_0x33bc('0x1b'),'date_format':_0x33bc('0x25'),'phone':_0x9a2ed1[_0x33bc('0x23')]},'auth':_0x2526af,'json':!![]};return rp(_0x275d5e)[_0x33bc('0x19')](function(_0x192d79){logger[_0x33bc('0x10')]('['+[_0x20094c[_0x33bc('0x11')]()]+_0x33bc('0x26'),_0x192d79[_0x33bc('0xd')]);_0x9a2ed1[_0x33bc('0x27')]=_0x192d79[_0x33bc('0xd')][_0x33bc('0xf')];_0x4cc30b(_0x9a2ed1);})[_0x33bc('0x13')](function(_0x95aef2){logger[_0x33bc('0x14')]('['+[_0x20094c['toUpperCase']()]+']',_0x95aef2[_0x33bc('0x15')]);_0x43089c(_0x95aef2[_0x33bc('0x15')]);});});}function getEndUser(_0x58fcd0,_0x49c839,_0x3dc5d1,_0x260980,_0x4882c1){return function(_0x9eb4d9){logger['info']('['+[_0x58fcd0[_0x33bc('0x11')]()]+_0x33bc('0x28'),_0x9eb4d9);return new Promise(function(_0x1a5daf,_0x44b78d){var _0x7350a3={'method':_0x33bc('0xb'),'uri':_0x3dc5d1+_0x33bc('0x29')+_0x9eb4d9[_0x33bc('0x23')]+'&'+_0x260980+'&'+_0x4882c1,'auth':_0x49c839,'json':!![]};return rp(_0x7350a3)[_0x33bc('0x19')](function(_0x4eaca0){if(_0x4eaca0[_0x33bc('0xd')]['length']>0x0){_0x9eb4d9[_0x33bc('0x27')]=_0x4eaca0['result'][0x0][_0x33bc('0xf')];logger[_0x33bc('0x10')]('['+[_0x58fcd0[_0x33bc('0x11')]()]+_0x33bc('0x2a'),_0x9eb4d9);_0x1a5daf(_0x9eb4d9);}else{return createEndUser(_0x58fcd0,_0x49c839,_0x9eb4d9,_0x3dc5d1,_0x260980)['then'](function(_0x3dffca){logger[_0x33bc('0x10')]('['+[_0x58fcd0[_0x33bc('0x11')]()]+'],\x20createEndUser\x20crm',_0x3dffca);_0x1a5daf(_0x3dffca);});}})[_0x33bc('0x13')](function(_0x35130c){logger['error']('['+[_0x58fcd0[_0x33bc('0x11')]()]+']',_0x35130c['message']);_0x44b78d(_0x35130c['message']);});});};}function getCustomFields(_0x241315,_0xf8dcbb){var _0x4d0c40={};if(_0x241315[_0x33bc('0xe')]>0x0){_['forEach'](_0x241315,function(_0x1d4f5b){if(_[_0x33bc('0x2b')](['string',_0x33bc('0x2c')],_0x1d4f5b[_0x33bc('0x2d')])&&_0x1d4f5b['nameField']&&!_0x1d4f5b[_0x33bc('0x2e')]){_0x4d0c40[_0x1d4f5b['nameField'][_0x33bc('0x2f')]()]=_0x1d4f5b['content'][_0x33bc('0x30')]();}else if(_['includes']([_0x33bc('0x31'),_0x33bc('0x2c')],_0x1d4f5b['type'])&&_0x1d4f5b['idField']&&_0x1d4f5b[_0x33bc('0x2e')]){_0x4d0c40[_0x1d4f5b['idField'][_0x33bc('0x2f')]()]=_0x1d4f5b[_0x33bc('0x32')][_0x33bc('0x30')]();}else if(_0x1d4f5b[_0x33bc('0x2d')]==='variable'&&_0x1d4f5b[_0x33bc('0x33')]&&_0x1d4f5b[_0x33bc('0x34')]&&_0x1d4f5b['customField']){_0x4d0c40[_0x1d4f5b[_0x33bc('0x34')][_0x33bc('0x2f')]()]=_0xf8dcbb[_0x1d4f5b[_0x33bc('0x33')]]['toString']();}else if(_0x1d4f5b[_0x33bc('0x2d')]===_0x33bc('0x35')&&_0x1d4f5b[_0x33bc('0x36')]&&_0x1d4f5b[_0x33bc('0x36')][_0x33bc('0x37')]&&_0x1d4f5b['idField']&&_0x1d4f5b['customField']){_0x4d0c40[_0x1d4f5b[_0x33bc('0x34')]['toLowerCase']()]=_0xf8dcbb[_0x1d4f5b[_0x33bc('0x36')][_0x33bc('0x37')][_0x33bc('0x2f')]()]['toString']();}});}return _0x4d0c40;}function getTicket(_0x39443c,_0x45632f,_0x2ecf20,_0x2d6f53,_0x1ff84b,_0x3041e4){return function(_0x48f9f6){logger['info']('['+[_0x39443c[_0x33bc('0x11')]()]+_0x33bc('0x38'),_0x48f9f6);return new Promise(function(_0x31007f,_0x22c782){var _0x414899=_0x39443c[_0x33bc('0x2f')]()==='outbound'?_0x48f9f6[_0x33bc('0x1c')]:_0x48f9f6['endUserId'];var _0x397077={'method':_0x33bc('0x39'),'uri':_0x2ecf20+_0x33bc('0x3a')+'?'+_0x3041e4,'body':Object[_0x33bc('0x3b')]({},{'active':_0x33bc('0x1b'),'caller_id':_0x414899,'assigned_to':_0x48f9f6[_0x33bc('0x1c')],'short_description':intUtil[_0x33bc('0x3c')](_0x2d6f53[_0x33bc('0x3d')],_0x1ff84b,'\x20'),'description':intUtil[_0x33bc('0x3c')](_0x2d6f53[_0x33bc('0x3e')],_0x1ff84b,'\x0a')},getCustomFields(_0x2d6f53[_0x33bc('0x3f')],_0x1ff84b)),'auth':_0x45632f,'json':!![]};return rp(_0x397077)[_0x33bc('0x19')](function(_0x70a6ff){logger[_0x33bc('0x10')]('['+[_0x39443c[_0x33bc('0x11')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x70a6ff[_0x33bc('0xd')]);_0x48f9f6[_0x33bc('0x40')]=_0x70a6ff[_0x33bc('0xd')]['sys_id'];_0x48f9f6[_0x33bc('0x41')]=_0x70a6ff[_0x33bc('0xd')][_0x33bc('0x42')];logger['info']('['+[_0x39443c[_0x33bc('0x11')]()]+']\x20getTicket\x20crm',_0x48f9f6);_0x31007f(_0x48f9f6);})['catch'](function(_0xb3cfbb){logger['error']('['+[_0x39443c['toUpperCase']()]+']',_0xb3cfbb[_0x33bc('0x15')]);_0x22c782(_0xb3cfbb[_0x33bc('0x15')]);});});};}function createRemoteTag(_0x221af9,_0x6f94dc,_0x3d1f09,_0x13d36d){return new Promise(function(_0x42c058,_0x188f4c){var _0x1b047f={'method':_0x33bc('0x39'),'uri':_0x3d1f09+_0x33bc('0x43')+'?'+_0x13d36d,'body':{'short_description':_0x221af9,'global':!![],'active':!![],'name':_0x221af9},'auth':_0x6f94dc,'json':!![]};return rp(_0x1b047f)[_0x33bc('0x19')](function(_0x476662){var _0x9c427=_0x476662[_0x33bc('0xd')][_0x33bc('0xf')];_0x42c058(_0x9c427);});});}function getRemoteTag(_0x3813ea,_0x21a0cc,_0x371abf,_0xc8447d,_0x51c06d){return new Promise(function(_0x555d8f,_0x5b3147){var _0x4cadf7={'method':_0x33bc('0xb'),'uri':_0x371abf+'label'+_0x33bc('0x44')+_0x3813ea+'&'+_0xc8447d,'auth':_0x21a0cc,'json':!![]};return rp(_0x4cadf7)['then'](function(_0xb6cca7){if(_0xb6cca7['result'][_0x33bc('0xe')]>0x0){var _0xae4340=_0xb6cca7[_0x33bc('0xd')][0x0][_0x33bc('0xf')];_0x555d8f(_0xae4340);}else{return createRemoteTag(_0x3813ea,_0x21a0cc,_0x371abf,_0xc8447d)['then'](function(_0xb3dc7c){_0x555d8f(_0xb3dc7c);});}});});}function assignTagToIncident(_0x581fb2,_0x325506,_0xbc7282,_0x6a9e6a,_0x44b2e8){return new Promise(function(_0x2af7af,_0x24724f){var _0x4245ff={'method':_0x33bc('0x39'),'uri':_0xbc7282+_0x33bc('0x45')+'?'+_0x44b2e8,'body':{'label':_0x581fb2,'table':_0x33bc('0x3a'),'id_type':_0x33bc('0x46'),'table_key':_0x6a9e6a['ticketId'],'title':_0x33bc('0x47')+_0x6a9e6a[_0x33bc('0x41')],'id_display':_0x6a9e6a[_0x33bc('0x41')]},'auth':_0x325506,'json':!![]};return rp(_0x4245ff)[_0x33bc('0x19')](function(_0x30063a){_0x2af7af();})[_0x33bc('0x13')](function(){_0x2af7af();});});}function manageTags(_0x1ab94f,_0x54b326,_0x2cd576,_0x3a89ff,_0x3dd1d9,_0x5cf8cb,_0x1d75a0){return new Promise(function(_0x237fa8,_0x8da00a){var _0x9a7ece=[];_0x54b326[_0x33bc('0x48')](function(_0x1cdd9c){_0x9a7ece[_0x33bc('0x49')](getRemoteTag(_0x1cdd9c,_0x2cd576,_0x3a89ff,_0x5cf8cb,_0x1d75a0));});return Promise[_0x33bc('0x4a')](_0x9a7ece)[_0x33bc('0x19')](function(_0x2142fe){if(_0x2142fe[_0x33bc('0xe')]){logger[_0x33bc('0x10')]('['+[_0x1ab94f[_0x33bc('0x11')]()]+_0x33bc('0x4b'),_0x2142fe);var _0x14154d=[];_0x2142fe[_0x33bc('0x48')](function(_0x4093d4){_0x14154d['push'](assignTagToIncident(_0x4093d4,_0x2cd576,_0x3a89ff,_0x3dd1d9,_0x5cf8cb));});return Promise['all'](_0x14154d)['then'](function(){_0x237fa8();})[_0x33bc('0x13')](function(){_0x237fa8();});}else{_0x237fa8();}});});}function getTags(_0xac6e38,_0x293ced,_0x5270c5,_0x6acf8,_0x4f0c25,_0x2860ae){return function(_0xdf7e4c){return new Promise(function(_0x187f06,_0x5690f6){var _0x47a7ab=[];var _0x54764c=_0x6acf8['Tags'];if(_0x54764c&&_0x54764c['length']>0x0){_0x47a7ab=_['map'](_0x54764c,_0x33bc('0x37'));}if(_0x47a7ab[_0x33bc('0xe')]>0x0){return manageTags(_0xac6e38,_0x47a7ab,_0x293ced,_0x5270c5,_0xdf7e4c,_0x4f0c25,_0x2860ae)['then'](function(){_0x187f06(_0xdf7e4c);});}else{_0x187f06(_0xdf7e4c);}});};}function emit(_0x56df86,_0x5925d5,_0xfdc44d){var _0x493537=_0x33bc('0x4c')+_0x33bc('0x4d')+_0x33bc('0x4e')+'%255EORDERBYDESCnumber';var _0x5c146a={'uri':_0x56df86+'/nav_to.do?uri=incident.do?sys_id%3D'+_0xfdc44d+_0x493537};io['to'](util[_0x33bc('0x4f')](_0x33bc('0x50'),_0x5925d5))[_0x33bc('0x51')](_0x33bc('0x52'),_0x5c146a);}exports['cs']=function(_0x171e77,_0x4198b4,_0x4d970e,_0x419895,_0x533606,_0x99176e,_0xe08b07,_0x5984c3){var _0x9265ef={};var _0x174784={'user':_0x99176e['username'],'pass':_0x99176e[_0x33bc('0x53')]};var _0x289b72=_0x33bc('0x54');var _0x4d452d='sysparm_display_value=true';_0x99176e['remoteUri']=intUtil[_0x33bc('0x55')](_0x99176e[_0x33bc('0x56')]);_0x99176e[_0x33bc('0x57')]=intUtil['stripTrailingSlash'](_0x99176e[_0x33bc('0x57')]);var _0x3e8cec=util['format'](_0x33bc('0x58'),_0x99176e[_0x33bc('0x56')]);_0x9265ef[_0x33bc('0x17')]=!_[_0x33bc('0x59')](_0x419895)?_0x419895[_0x33bc('0x5a')]:null;_0x9265ef['adminEmail']=_0x99176e[_0x33bc('0x5a')];_0x9265ef[_0x33bc('0x23')]=_0x5984c3['toLowerCase']()===_0x33bc('0x5b')?_0x4198b4['destcalleridnum']:_0x4198b4[_0x33bc('0x5c')];_0x9265ef[_0x33bc('0x5d')]=_0x5984c3===_0x33bc('0x5e')||_0x5984c3===_0x33bc('0x5f')?_0x33bc('0x5e'):_0x33bc('0x5b');var _0x1b5ab3=util[_0x33bc('0x4f')](_0x33bc('0x60'),_0x99176e[_0x33bc('0x57')],_0x4198b4[_0x33bc('0x61')],md5(_0x4198b4[_0x33bc('0x61')]));if(_0x533606&&_0x533606[_0x33bc('0x62')]){logger[_0x33bc('0x10')](_0x33bc('0x63'),_0x33bc('0x64'));_0x4198b4[_0x33bc('0x65')]=_0x1b5ab3;}else if(_0xe08b07&&_0xe08b07['recordingFormat']&&_0xe08b07[_0x33bc('0x66')]!=='none'){logger['info']('[OUTBOUND]',_0x33bc('0x64'));_0x4198b4[_0x33bc('0x65')]=_0x1b5ab3;}else{_0x4198b4['recordingURL']='';}return getAdminUser(_0x5984c3,_0x174784,_0x9265ef,_0x3e8cec,_0x4d452d,_0x289b72)[_0x33bc('0x19')](getUser(_0x5984c3,_0x174784,_0x3e8cec,_0x4d452d,_0x289b72))[_0x33bc('0x19')](getEndUser(_0x5984c3,_0x174784,_0x3e8cec,_0x4d452d,_0x289b72))[_0x33bc('0x19')](getTicket(_0x5984c3,_0x174784,_0x3e8cec,_0x4d970e,_0x4198b4,_0x4d452d))['then'](function(_0x256c97){logger[_0x33bc('0x10')](util[_0x33bc('0x4f')](_0x33bc('0x67'),_0x256c97[_0x33bc('0x40')]));logger[_0x33bc('0x10')](util[_0x33bc('0x4f')](_0x33bc('0x68'),_0x5984c3));if(_0x5984c3!==_0x33bc('0x5f')){logger[_0x33bc('0x10')]('['+[_0x5984c3[_0x33bc('0x11')]()]+']',_0x33bc('0x69'));emit(_0x99176e['remoteUri'],_0x419895[_0x33bc('0x37')],_0x256c97['ticketId']);}})[_0x33bc('0x13')](function(_0x30bcf0){logger[_0x33bc('0x14')]('['+[_0x5984c3[_0x33bc('0x11')]()]+_0x33bc('0x6a'),util[_0x33bc('0x6b')](_0x30bcf0,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x4d5e=['serverUrl','stripTrailingSlash','%s/api/now/table/','isNil','email','calleridnum','callDirection','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','inspect','bluebird','request-promise','md5','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','then','result','length','adminId','sys_id','catch','error','toUpperCase','message','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','info','],\x20getUser\x20entity','active','true','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','POST','endUserNumber','user','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','nameField','customField','toString','type','idField','toLowerCase','content','variable','variableName','customVariable','Variable','incident','assign','getString','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','name','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','trigger:browser:url','password','sysparm_limit=1','sysparm_display_value=true','remoteUri'];(function(_0x59103d,_0x203fea){var _0x3ba108=function(_0x47c609){while(--_0x47c609){_0x59103d['push'](_0x59103d['shift']());}};_0x3ba108(++_0x203fea);}(_0x4d5e,0x1ad));var _0xe4d5=function(_0x56e154,_0x3e904d){_0x56e154=_0x56e154-0x0;var _0x1db6cb=_0x4d5e[_0x56e154];return _0x1db6cb;};'use strict';var _=require('lodash');var Promise=require(_0xe4d5('0x0'));var rp=require(_0xe4d5('0x1'));var util=require('util');var md5=require(_0xe4d5('0x2'));var Redis=require('ioredis');var intUtil=require(_0xe4d5('0x3'));var config=require(_0xe4d5('0x4'));var logger=require(_0xe4d5('0x5'))(_0xe4d5('0x6'));config[_0xe4d5('0x7')]=_[_0xe4d5('0x8')](config[_0xe4d5('0x7')],{'host':_0xe4d5('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe4d5('0x7')]));function getAdminUser(_0x1e1c38,_0x1e0f9b,_0x4ab16d,_0x308bde,_0x1e372e,_0x4a4412){return new Promise(function(_0x211811,_0x5703b5){var _0x43cdb8={'method':'GET','uri':_0x308bde+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x1e372e+'&'+_0x4a4412,'auth':_0x1e0f9b,'json':!![]};return rp(_0x43cdb8)[_0xe4d5('0xa')](function(_0x2e8adc){if(_0x2e8adc[_0xe4d5('0xb')][_0xe4d5('0xc')]>0x0){_0x4ab16d[_0xe4d5('0xd')]=_0x2e8adc[_0xe4d5('0xb')][0x0][_0xe4d5('0xe')];}logger['info']('['+[_0x1e1c38['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0x4ab16d);_0x211811(_0x4ab16d);})[_0xe4d5('0xf')](function(_0x217116){logger[_0xe4d5('0x10')]('['+[_0x1e1c38[_0xe4d5('0x11')]()]+']',_0x217116[_0xe4d5('0x12')]);_0x5703b5(_0x217116['message']);});});}function getUser(_0x46139b,_0x5a0953,_0x4bf3f6,_0x1dca72,_0x59237b){return function(_0x5892a6){logger['info']('['+[_0x46139b[_0xe4d5('0x11')]()]+'],\x20getUser\x20input\x20crm',_0x5892a6);return new Promise(function(_0x3f69f1,_0x1f4c16){if(intUtil[_0xe4d5('0x13')](_0x5892a6[_0xe4d5('0x14')])){var _0x39231c={'method':_0xe4d5('0x15'),'uri':_0x4bf3f6+_0xe4d5('0x16')+_0x5892a6[_0xe4d5('0x14')]+'&'+_0x1dca72+'&'+_0x59237b,'auth':_0x5a0953,'json':!![]};logger[_0xe4d5('0x17')]('['+[_0x46139b['toUpperCase']()]+'],\x20getUser\x20rp\x20obj',_0x39231c);return rp(_0x39231c)[_0xe4d5('0xa')](function(_0x502458){logger[_0xe4d5('0x17')]('['+[_0x46139b[_0xe4d5('0x11')]()]+_0xe4d5('0x18'),_0x502458);if(_0x502458['result'][_0xe4d5('0xc')]>0x0&&String(_0x502458[_0xe4d5('0xb')][0x0][_0xe4d5('0x19')])===_0xe4d5('0x1a')){_0x5892a6[_0xe4d5('0x1b')]=_0x502458[_0xe4d5('0xb')][0x0][_0xe4d5('0xe')];}else{_0x5892a6[_0xe4d5('0x1b')]=_0x5892a6[_0xe4d5('0xd')];_0x5892a6['userEmail']=_0x5892a6[_0xe4d5('0x1c')];}logger['info']('['+[_0x46139b['toUpperCase']()]+_0xe4d5('0x1d'),_0x5892a6);_0x3f69f1(_0x5892a6);})[_0xe4d5('0xf')](function(_0x1c4fa6){logger[_0xe4d5('0x10')]('['+[_0x46139b[_0xe4d5('0x11')]()]+']',_0x1c4fa6['message']);_0x1f4c16(_0x1c4fa6[_0xe4d5('0x12')]);});}else{logger[_0xe4d5('0x17')]('['+[_0x46139b[_0xe4d5('0x11')]()]+_0xe4d5('0x1e'));_0x5892a6[_0xe4d5('0x1b')]=_0x5892a6[_0xe4d5('0xd')];_0x5892a6[_0xe4d5('0x14')]=_0x5892a6[_0xe4d5('0x1c')];_0x3f69f1(_0x5892a6);}});};}function createEndUser(_0x1eb65c,_0x40299a,_0xbcd0c,_0x4f1698,_0xf3701d){logger['info']('['+[_0x1eb65c['toUpperCase']()]+'],\x20createEndUser\x20input\x20crm',_0xbcd0c);return new Promise(function(_0x55b0d2,_0x4408b2){var _0x430249={'method':_0xe4d5('0x1f'),'uri':_0x4f1698+'sys_user?'+_0xf3701d,'body':{'user_name':_0xbcd0c[_0xe4d5('0x20')],'roles':_0xe4d5('0x21'),'first_name':_0xbcd0c[_0xe4d5('0x20')],'active':_0xe4d5('0x1a'),'date_format':_0xe4d5('0x22'),'phone':_0xbcd0c[_0xe4d5('0x20')]},'auth':_0x40299a,'json':!![]};return rp(_0x430249)[_0xe4d5('0xa')](function(_0x1254d6){logger[_0xe4d5('0x17')]('['+[_0x1eb65c[_0xe4d5('0x11')]()]+_0xe4d5('0x23'),_0x1254d6[_0xe4d5('0xb')]);_0xbcd0c['endUserId']=_0x1254d6[_0xe4d5('0xb')][_0xe4d5('0xe')];_0x55b0d2(_0xbcd0c);})[_0xe4d5('0xf')](function(_0x291f1d){logger[_0xe4d5('0x10')]('['+[_0x1eb65c['toUpperCase']()]+']',_0x291f1d[_0xe4d5('0x12')]);_0x4408b2(_0x291f1d[_0xe4d5('0x12')]);});});}function getEndUser(_0x5d0269,_0x90d943,_0x564b1d,_0x166ccb,_0x2730f4){return function(_0x50339e){logger[_0xe4d5('0x17')]('['+[_0x5d0269[_0xe4d5('0x11')]()]+_0xe4d5('0x24'),_0x50339e);return new Promise(function(_0x37c041,_0x499160){var _0x124f18={'method':_0xe4d5('0x15'),'uri':_0x564b1d+_0xe4d5('0x25')+_0x50339e[_0xe4d5('0x20')]+'&'+_0x166ccb+'&'+_0x2730f4,'auth':_0x90d943,'json':!![]};return rp(_0x124f18)[_0xe4d5('0xa')](function(_0x305307){if(_0x305307[_0xe4d5('0xb')]['length']>0x0){_0x50339e[_0xe4d5('0x26')]=_0x305307[_0xe4d5('0xb')][0x0][_0xe4d5('0xe')];logger[_0xe4d5('0x17')]('['+[_0x5d0269[_0xe4d5('0x11')]()]+_0xe4d5('0x27'),_0x50339e);_0x37c041(_0x50339e);}else{return createEndUser(_0x5d0269,_0x90d943,_0x50339e,_0x564b1d,_0x166ccb)[_0xe4d5('0xa')](function(_0x1417b5){logger[_0xe4d5('0x17')]('['+[_0x5d0269[_0xe4d5('0x11')]()]+_0xe4d5('0x28'),_0x1417b5);_0x37c041(_0x1417b5);});}})[_0xe4d5('0xf')](function(_0x35db03){logger[_0xe4d5('0x10')]('['+[_0x5d0269[_0xe4d5('0x11')]()]+']',_0x35db03['message']);_0x499160(_0x35db03[_0xe4d5('0x12')]);});});};}function getCustomFields(_0x2be959,_0x115a06){var _0xda217f={};if(_0x2be959[_0xe4d5('0xc')]>0x0){_[_0xe4d5('0x29')](_0x2be959,function(_0x2116aa){if(_[_0xe4d5('0x2a')]([_0xe4d5('0x2b'),_0xe4d5('0x2c')],_0x2116aa['type'])&&_0x2116aa[_0xe4d5('0x2d')]&&!_0x2116aa[_0xe4d5('0x2e')]){_0xda217f[_0x2116aa[_0xe4d5('0x2d')]['toLowerCase']()]=_0x2116aa['content'][_0xe4d5('0x2f')]();}else if(_['includes'](['string',_0xe4d5('0x2c')],_0x2116aa[_0xe4d5('0x30')])&&_0x2116aa[_0xe4d5('0x31')]&&_0x2116aa[_0xe4d5('0x2e')]){_0xda217f[_0x2116aa['idField'][_0xe4d5('0x32')]()]=_0x2116aa[_0xe4d5('0x33')][_0xe4d5('0x2f')]();}else if(_0x2116aa[_0xe4d5('0x30')]===_0xe4d5('0x34')&&_0x2116aa[_0xe4d5('0x35')]&&_0x2116aa['idField']&&_0x2116aa[_0xe4d5('0x2e')]){_0xda217f[_0x2116aa[_0xe4d5('0x31')][_0xe4d5('0x32')]()]=_0x115a06[_0x2116aa['variableName']][_0xe4d5('0x2f')]();}else if(_0x2116aa[_0xe4d5('0x30')]===_0xe4d5('0x36')&&_0x2116aa['Variable']&&_0x2116aa[_0xe4d5('0x37')]['name']&&_0x2116aa[_0xe4d5('0x31')]&&_0x2116aa[_0xe4d5('0x2e')]){_0xda217f[_0x2116aa[_0xe4d5('0x31')][_0xe4d5('0x32')]()]=_0x115a06[_0x2116aa[_0xe4d5('0x37')]['name']['toLowerCase']()][_0xe4d5('0x2f')]();}});}return _0xda217f;}function getTicket(_0x177bce,_0x4b8ea3,_0x22aad0,_0x1a64d5,_0x4be76a,_0x8093ea){return function(_0x5c12eb){logger[_0xe4d5('0x17')]('['+[_0x177bce[_0xe4d5('0x11')]()]+']\x20getTicket\x20input\x20crm',_0x5c12eb);return new Promise(function(_0x464ff9,_0x2215c9){var _0x564945=_0x177bce[_0xe4d5('0x32')]()==='outbound'?_0x5c12eb[_0xe4d5('0x1b')]:_0x5c12eb[_0xe4d5('0x26')];var _0xc1cbb4={'method':_0xe4d5('0x1f'),'uri':_0x22aad0+_0xe4d5('0x38')+'?'+_0x8093ea,'body':Object[_0xe4d5('0x39')]({},{'active':_0xe4d5('0x1a'),'caller_id':_0x564945,'assigned_to':_0x5c12eb['userId'],'short_description':intUtil[_0xe4d5('0x3a')](_0x1a64d5['Subjects'],_0x4be76a,'\x20'),'description':intUtil[_0xe4d5('0x3a')](_0x1a64d5[_0xe4d5('0x3b')],_0x4be76a,'\x0a')},getCustomFields(_0x1a64d5['Fields'],_0x4be76a)),'auth':_0x4b8ea3,'json':!![]};return rp(_0xc1cbb4)[_0xe4d5('0xa')](function(_0x4fcbb7){logger[_0xe4d5('0x17')]('['+[_0x177bce[_0xe4d5('0x11')]()]+_0xe4d5('0x3c'),_0x4fcbb7[_0xe4d5('0xb')]);_0x5c12eb[_0xe4d5('0x3d')]=_0x4fcbb7['result']['sys_id'];_0x5c12eb[_0xe4d5('0x3e')]=_0x4fcbb7[_0xe4d5('0xb')]['number'];logger[_0xe4d5('0x17')]('['+[_0x177bce[_0xe4d5('0x11')]()]+_0xe4d5('0x3f'),_0x5c12eb);_0x464ff9(_0x5c12eb);})[_0xe4d5('0xf')](function(_0x348eb1){logger['error']('['+[_0x177bce[_0xe4d5('0x11')]()]+']',_0x348eb1[_0xe4d5('0x12')]);_0x2215c9(_0x348eb1[_0xe4d5('0x12')]);});});};}function createRemoteTag(_0x36d610,_0xf24a11,_0x3a739a,_0x204132){return new Promise(function(_0x343051,_0x22f84a){var _0x30923d={'method':_0xe4d5('0x1f'),'uri':_0x3a739a+_0xe4d5('0x40')+'?'+_0x204132,'body':{'short_description':_0x36d610,'global':!![],'active':!![],'name':_0x36d610},'auth':_0xf24a11,'json':!![]};return rp(_0x30923d)[_0xe4d5('0xa')](function(_0x5b509c){var _0x210b0c=_0x5b509c[_0xe4d5('0xb')][_0xe4d5('0xe')];_0x343051(_0x210b0c);});});}function getRemoteTag(_0xca0f52,_0x5d15f1,_0xbba546,_0x3fc8e,_0x1f1f45){return new Promise(function(_0x52453d,_0x38176e){var _0x1cdc02={'method':'GET','uri':_0xbba546+_0xe4d5('0x40')+_0xe4d5('0x41')+_0xca0f52+'&'+_0x3fc8e,'auth':_0x5d15f1,'json':!![]};return rp(_0x1cdc02)[_0xe4d5('0xa')](function(_0x4825c9){if(_0x4825c9[_0xe4d5('0xb')][_0xe4d5('0xc')]>0x0){var _0x40e68e=_0x4825c9[_0xe4d5('0xb')][0x0][_0xe4d5('0xe')];_0x52453d(_0x40e68e);}else{return createRemoteTag(_0xca0f52,_0x5d15f1,_0xbba546,_0x3fc8e)['then'](function(_0x1d003a){_0x52453d(_0x1d003a);});}});});}function assignTagToIncident(_0x14ed0c,_0x3c691e,_0x4458d0,_0x4b6674,_0x11511a){return new Promise(function(_0x58142e,_0xfc491b){var _0x26dc22={'method':_0xe4d5('0x1f'),'uri':_0x4458d0+_0xe4d5('0x42')+'?'+_0x11511a,'body':{'label':_0x14ed0c,'table':'incident','id_type':'Incident','table_key':_0x4b6674['ticketId'],'title':'Incident\x20-\x20'+_0x4b6674[_0xe4d5('0x3e')],'id_display':_0x4b6674[_0xe4d5('0x3e')]},'auth':_0x3c691e,'json':!![]};return rp(_0x26dc22)[_0xe4d5('0xa')](function(_0x1d10ae){_0x58142e();})[_0xe4d5('0xf')](function(){_0x58142e();});});}function manageTags(_0x5fe943,_0xa593d9,_0x23da82,_0x5e4ab4,_0x17cf52,_0x44799f,_0x2287f1){return new Promise(function(_0x5b272a,_0x4bfe4d){var _0x21d204=[];_0xa593d9['forEach'](function(_0x3b6290){_0x21d204[_0xe4d5('0x43')](getRemoteTag(_0x3b6290,_0x23da82,_0x5e4ab4,_0x44799f,_0x2287f1));});return Promise['all'](_0x21d204)[_0xe4d5('0xa')](function(_0x3fa7ee){if(_0x3fa7ee[_0xe4d5('0xc')]){logger['info']('['+[_0x5fe943[_0xe4d5('0x11')]()]+_0xe4d5('0x44'),_0x3fa7ee);var _0x5712a8=[];_0x3fa7ee[_0xe4d5('0x29')](function(_0xe64ee4){_0x5712a8['push'](assignTagToIncident(_0xe64ee4,_0x23da82,_0x5e4ab4,_0x17cf52,_0x44799f));});return Promise['all'](_0x5712a8)[_0xe4d5('0xa')](function(){_0x5b272a();})['catch'](function(){_0x5b272a();});}else{_0x5b272a();}});});}function getTags(_0x246beb,_0x1e2e67,_0x1ec02d,_0x58fc21,_0x7ed088,_0x2c773c){return function(_0x29c5dc){return new Promise(function(_0x3cf30b,_0x448048){var _0x34d1bb=[];var _0x4a81cc=_0x58fc21[_0xe4d5('0x45')];if(_0x4a81cc&&_0x4a81cc[_0xe4d5('0xc')]>0x0){_0x34d1bb=_[_0xe4d5('0x46')](_0x4a81cc,_0xe4d5('0x47'));}if(_0x34d1bb[_0xe4d5('0xc')]>0x0){return manageTags(_0x246beb,_0x34d1bb,_0x1e2e67,_0x1ec02d,_0x29c5dc,_0x7ed088,_0x2c773c)[_0xe4d5('0xa')](function(){_0x3cf30b(_0x29c5dc);});}else{_0x3cf30b(_0x29c5dc);}});};}function emit(_0x5b6b5c,_0x5ccc6b,_0x4564e3){var _0x39aeca='%26sysparm_record_target%3Dincident'+_0xe4d5('0x48')+_0xe4d5('0x49')+_0xe4d5('0x4a');var _0x5b78bf={'uri':_0x5b6b5c+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x4564e3+_0x39aeca};io['to'](util[_0xe4d5('0x4b')]('user:%s',_0x5ccc6b))['emit'](_0xe4d5('0x4c'),_0x5b78bf);}exports['cs']=function(_0x57480a,_0x5c621d,_0x2292cd,_0x173833,_0x453a95,_0x253201,_0xbdff2c,_0x389b50){var _0x2abfa0={};var _0x5e33da={'user':_0x253201['username'],'pass':_0x253201[_0xe4d5('0x4d')]};var _0x270503=_0xe4d5('0x4e');var _0x52715f=_0xe4d5('0x4f');_0x253201[_0xe4d5('0x50')]=intUtil['stripTrailingSlash'](_0x253201[_0xe4d5('0x50')]);_0x253201[_0xe4d5('0x51')]=intUtil[_0xe4d5('0x52')](_0x253201['serverUrl']);var _0x18bc4f=util['format'](_0xe4d5('0x53'),_0x253201[_0xe4d5('0x50')]);_0x2abfa0[_0xe4d5('0x14')]=!_[_0xe4d5('0x54')](_0x173833)?_0x173833[_0xe4d5('0x55')]:null;_0x2abfa0[_0xe4d5('0x1c')]=_0x253201[_0xe4d5('0x55')];_0x2abfa0['endUserNumber']=_0x389b50[_0xe4d5('0x32')]()==='outbound'?_0x5c621d['destcalleridnum']:_0x5c621d[_0xe4d5('0x56')];_0x2abfa0[_0xe4d5('0x57')]=_0x389b50===_0xe4d5('0x58')||_0x389b50===_0xe4d5('0x59')?_0xe4d5('0x58'):_0xe4d5('0x5a');var _0x52ca43=util[_0xe4d5('0x4b')](_0xe4d5('0x5b'),_0x253201[_0xe4d5('0x51')],_0x5c621d[_0xe4d5('0x5c')],md5(_0x5c621d[_0xe4d5('0x5c')]));if(_0x453a95&&_0x453a95['monitor_format']){logger[_0xe4d5('0x17')](_0xe4d5('0x5d'),_0xe4d5('0x5e'));_0x5c621d['recordingURL']=_0x52ca43;}else if(_0xbdff2c&&_0xbdff2c[_0xe4d5('0x5f')]&&_0xbdff2c[_0xe4d5('0x5f')]!=='none'){logger[_0xe4d5('0x17')](_0xe4d5('0x60'),_0xe4d5('0x5e'));_0x5c621d[_0xe4d5('0x61')]=_0x52ca43;}else{_0x5c621d['recordingURL']='';}return getAdminUser(_0x389b50,_0x5e33da,_0x2abfa0,_0x18bc4f,_0x52715f,_0x270503)[_0xe4d5('0xa')](getUser(_0x389b50,_0x5e33da,_0x18bc4f,_0x52715f,_0x270503))[_0xe4d5('0xa')](getEndUser(_0x389b50,_0x5e33da,_0x18bc4f,_0x52715f,_0x270503))[_0xe4d5('0xa')](getTicket(_0x389b50,_0x5e33da,_0x18bc4f,_0x2292cd,_0x5c621d,_0x52715f))[_0xe4d5('0xa')](function(_0x2bd7ac){logger[_0xe4d5('0x17')](util[_0xe4d5('0x4b')](_0xe4d5('0x62'),_0x2bd7ac[_0xe4d5('0x3d')]));logger['info'](util[_0xe4d5('0x4b')](_0xe4d5('0x63'),_0x389b50));if(_0x389b50!=='unmanaged'){logger[_0xe4d5('0x17')]('['+[_0x389b50[_0xe4d5('0x11')]()]+']',_0xe4d5('0x64'));emit(_0x253201[_0xe4d5('0x50')],_0x173833[_0xe4d5('0x47')],_0x2bd7ac[_0xe4d5('0x3d')]);}})[_0xe4d5('0xf')](function(_0x568044){logger[_0xe4d5('0x10')]('['+[_0x389b50['toUpperCase']()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0xe4d5('0x65')](_0x568044,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 7b90415..05eb1f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb85=['set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','contacts','version','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','error','uri','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','Fields','Outbound','The\x20Ticket\x20ID\x20is:','users','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','lastevent','toUpperCase','Inbound','lodash','request-promise','bluebird','md5','util','./util','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','emit','info','Subjects','assigned_user_id','created_by','description','getString','Descriptions','toISOString','duration_hours','parent_id','parent_name','direction','forEach','variableName','idField','set_entry','JSON','stringify','Calls','Basic\x20%s','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','format','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','length','find','name_value_list','value','Agent\x20found!','resolve','name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Enduser\x20created.','debug','[HTTP]','merge','type','string','nameField','customField','toLowerCase','custom_fields','push','content','customVariable','Variable','username','password','sessionID','Account\x20%d\x20is\x20not\x20valid'];(function(_0x2816f5,_0x5cd8ed){var _0x13929a=function(_0x2dc8f1){while(--_0x2dc8f1){_0x2816f5['push'](_0x2816f5['shift']());}};_0x13929a(++_0x5cd8ed);}(_0xdb85,0x18d));var _0x5db8=function(_0x31172e,_0xa59e5){_0x31172e=_0x31172e-0x0;var _0x414ada=_0xdb85[_0x31172e];return _0x414ada;};'use strict';var _=require(_0x5db8('0x0'));var rp=require(_0x5db8('0x1'));var BPromise=require(_0x5db8('0x2'));var md5=require(_0x5db8('0x3'));var util=require(_0x5db8('0x4'));var Redis=require('ioredis');var intUtil=require(_0x5db8('0x5'));var config=require(_0x5db8('0x6'));var logger=require(_0x5db8('0x7'))('sugarcrm');config['redis']=_[_0x5db8('0x8')](config[_0x5db8('0x9')],{'host':_0x5db8('0xa'),'port':0x18eb});var io=require(_0x5db8('0xb'))(new Redis(config[_0x5db8('0x9')]));var def={'method':'POST','json':!![]};function emit(_0x3ac882,_0x1090ba,_0x1f8d5c){io['to'](_0x3ac882)[_0x5db8('0xc')](_0x1090ba,_0x1f8d5c);}function getTicket(_0x2094cb,_0x1324f9,_0x217c8b,_0x26919b,_0x3e23f6,_0x254c70,_0x103cee,_0x198afa){logger[_0x5db8('0xd')]('Creating\x20new\x20ticket...');var _0x2e64e4=new Date();var _0x5934d2=[{'name':'name','value':intUtil['getString'](_0x26919b[_0x5db8('0xe')],_0x3e23f6,'\x20')},{'name':_0x5db8('0xf'),'value':_0x1324f9['id']},{'name':_0x5db8('0x10'),'value':_0x1324f9['id']},{'name':_0x5db8('0x11'),'value':intUtil[_0x5db8('0x12')](_0x26919b[_0x5db8('0x13')],_0x3e23f6,'\x0a')},{'name':'date_start','value':_0x2e64e4[_0x5db8('0x14')]()['slice'](0x0,0x13)['replace']('T','\x20')},{'name':_0x5db8('0x15'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':_0x5db8('0x16'),'value':_0x217c8b['id']},{'name':'parent_type','value':'Contacts'},{'name':_0x5db8('0x17'),'value':_0x217c8b['name']},{'name':_0x5db8('0x18'),'value':_0x198afa}];if(_0x254c70['length']){_[_0x5db8('0x19')](_0x254c70,function(_0xf2e9de){if(_0x3e23f6[_0xf2e9de[_0x5db8('0x1a')]]){_0x5934d2['push']({'name':_0xf2e9de[_0x5db8('0x1b')],'value':_0x3e23f6[_0xf2e9de['variableName']]});}});}return request({'form':{'method':_0x5db8('0x1c'),'input_type':_0x5db8('0x1d'),'response_type':_0x5db8('0x1d'),'rest_data':JSON[_0x5db8('0x1e')]({'session':_0x103cee['id'],'module_name':_0x5db8('0x1f'),'name_value_list':_0x5934d2})}});}function getAuth(_0x3a9309){return util['format'](_0x5db8('0x20'),new Buffer(_0x3a9309['apiKey']+':X')[_0x5db8('0x21')](_0x5db8('0x22')));}function getServerInfo(_0x2f5018){return request({'form':{'method':_0x5db8('0x23'),'input_type':_0x5db8('0x1d'),'response_type':_0x5db8('0x1d'),'rest_data':JSON['stringify']({'session':_0x2f5018['id']})}});}function getUser(_0x325d91,_0x4faedb,_0x211696){if(!_[_0x5db8('0x24')](_0x4faedb)){logger['info'](_0x5db8('0x25'),_0x4faedb);return request({'form':{'method':_0x5db8('0x26'),'input_type':_0x5db8('0x1d'),'response_type':'JSON','rest_data':JSON[_0x5db8('0x1e')]({'session':_0x211696['id'],'module_name':'Employees','query':util[_0x5db8('0x27')](_0x5db8('0x28'),_0x4faedb),'order_by':'','offset':'0','select_fields':['id','name',_0x5db8('0x29')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x5db8('0x2a')](function(_0x7ca3bc){if(_0x7ca3bc[_0x5db8('0x2b')][_0x5db8('0x2c')]){var _0x216706=_[_0x5db8('0x2d')](_0x7ca3bc['entry_list'],function(_0x379b7d){return _0x379b7d[_0x5db8('0x2e')]['user_name'][_0x5db8('0x2f')]===_0x4faedb;});if(_0x216706){logger[_0x5db8('0xd')](_0x5db8('0x30'));return BPromise[_0x5db8('0x31')]({'id':_0x216706[_0x5db8('0x2e')]['id'][_0x5db8('0x2f')],'name':_0x216706['name_value_list'][_0x5db8('0x32')][_0x5db8('0x2f')]});}}logger['info'](_0x5db8('0x33'));return BPromise[_0x5db8('0x31')]({'id':_0x211696[_0x5db8('0x2e')][_0x5db8('0x34')][_0x5db8('0x2f')],'name':_0x211696['name_value_list'][_0x5db8('0x29')][_0x5db8('0x2f')]});});}else{logger['info'](_0x5db8('0x35'));return BPromise[_0x5db8('0x31')]({'id':_0x211696[_0x5db8('0x2e')][_0x5db8('0x34')][_0x5db8('0x2f')],'name':_0x211696[_0x5db8('0x2e')][_0x5db8('0x29')][_0x5db8('0x2f')]});}}function getEndUser(_0x7f8d3d,_0x21a017,_0x2a12b1,_0x6cf14){logger[_0x5db8('0xd')]('Searching\x20enduser\x20with\x20phone',_0x2a12b1);return request({'form':{'method':_0x5db8('0x26'),'input_type':_0x5db8('0x1d'),'response_type':_0x5db8('0x1d'),'rest_data':JSON['stringify']({'session':_0x6cf14['id'],'module_name':_0x5db8('0x36'),'query':util[_0x5db8('0x27')](_0x5db8('0x37'),_0x2a12b1),'order_by':'','offset':'0','select_fields':['id','name','phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x5db8('0x2a')](function(_0x25b55a){if(_0x25b55a['entry_list'][_0x5db8('0x2c')]){var _0xa12877=_[_0x5db8('0x2d')](_0x25b55a[_0x5db8('0x2b')],function(_0x4a6f45){return _0x4a6f45['name_value_list'][_0x5db8('0x38')][_0x5db8('0x2f')]===_0x2a12b1;});if(_0xa12877){logger['info'](_0x5db8('0x39'));return BPromise[_0x5db8('0x31')]({'id':_0xa12877[_0x5db8('0x2e')]['id'][_0x5db8('0x2f')],'name':_0xa12877[_0x5db8('0x2e')][_0x5db8('0x32')]['value'],'phone':_0xa12877[_0x5db8('0x2e')][_0x5db8('0x38')][_0x5db8('0x2f')]});}}else{logger['info'](_0x5db8('0x3a'));return request({'form':{'method':_0x5db8('0x1c'),'input_type':_0x5db8('0x1d'),'response_type':_0x5db8('0x1d'),'rest_data':JSON[_0x5db8('0x1e')]({'session':_0x6cf14['id'],'module_name':'Contacts','name_value_list':[{'name':_0x5db8('0x3b'),'value':_0x21a017!==_0x5db8('0x3c')?_0x21a017:util['format']('Caller\x20-\x20%s',_0x2a12b1)},{'name':_0x5db8('0x38'),'value':_0x2a12b1}]})}})[_0x5db8('0x2a')](function(_0x38d7e2){logger['info'](_0x5db8('0x3d'));return BPromise[_0x5db8('0x31')]({'id':_0x38d7e2['id'],'name':_0x38d7e2[_0x5db8('0x2b')][_0x5db8('0x3b')][_0x5db8('0x2f')],'phone':_0x38d7e2[_0x5db8('0x2b')][_0x5db8('0x38')][_0x5db8('0x2f')]});});}});}function request(_0x24c026){logger[_0x5db8('0x3e')](_0x5db8('0x3f'),JSON['stringify'](_0x24c026));return rp(_[_0x5db8('0x40')](def,_0x24c026));}function getTags(_0x5005ae,_0x4d8565){var _0x39c6b2=[];if(_0x5005ae&&_0x5005ae['length']>0x0){_0x39c6b2=_['map'](_0x5005ae,_0x4d8565);}return _0x39c6b2;}function getCustomFields(_0x292937,_0x391cd3){var _0x5351c0=[];var _0x4aa6e7={'custom_fields':[]};if(_0x292937['length']>0x0){_[_0x5db8('0x19')](_0x292937,function(_0x22e845){if(_0x22e845[_0x5db8('0x41')]===_0x5db8('0x42')&&_0x22e845[_0x5db8('0x43')]&&!_0x22e845[_0x5db8('0x44')]){_0x4aa6e7[_0x22e845[_0x5db8('0x43')][_0x5db8('0x45')]()]=_0x22e845['content']['toString']();}else if(_0x22e845[_0x5db8('0x41')]===_0x5db8('0x42')&&_0x22e845[_0x5db8('0x1b')]&&_0x22e845[_0x5db8('0x44')]){_0x4aa6e7[_0x5db8('0x46')][_0x5db8('0x47')]({'id':_0x22e845[_0x5db8('0x1b')],'value':_0x22e845[_0x5db8('0x48')]['toString']()});}else if(_0x22e845['type']==='variable'&&_0x22e845[_0x5db8('0x1a')]&&_0x22e845['idField']&&_0x22e845['customField']){_0x391cd3[_0x22e845['variableName']]&&_0x4aa6e7[_0x5db8('0x46')]['push']({'id':_0x22e845[_0x5db8('0x1b')],'value':_0x391cd3[_0x22e845['variableName']][_0x5db8('0x21')]()});}else if(_0x22e845[_0x5db8('0x41')]===_0x5db8('0x49')&&_0x22e845[_0x5db8('0x4a')]&&_0x22e845[_0x5db8('0x4a')][_0x5db8('0x32')]&&_0x22e845[_0x5db8('0x1b')]&&_0x22e845['customField']){_0x391cd3[_0x22e845[_0x5db8('0x4a')][_0x5db8('0x32')][_0x5db8('0x45')]()]&&_0x4aa6e7[_0x5db8('0x46')][_0x5db8('0x47')]({'id':_0x22e845[_0x5db8('0x1b')],'value':_0x391cd3[_0x22e845['Variable'][_0x5db8('0x32')]['toLowerCase']()][_0x5db8('0x21')]()});}});}return _0x4aa6e7;}function getConnection(_0x33e9be){return request({'method':'POST','form':{'method':'login','input_type':_0x5db8('0x1d'),'response_type':_0x5db8('0x1d'),'rest_data':JSON[_0x5db8('0x1e')]({'user_auth':{'user_name':_0x33e9be[_0x5db8('0x4b')],'password':_0x33e9be[_0x5db8('0x4c')],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20integration'})}})[_0x5db8('0x2a')](function(_0x32e72d){var _0x2be228=_0x32e72d;if(_0x2be228['id']){def[_0x5db8('0x4d')]=_0x2be228['id'];return BPromise['resolve'](_0x2be228);}else{throw new Error(util['format'](_0x5db8('0x4e'),_0x33e9be['id']));}});}function setRelationship(_0x418731,_0x402ab1,_0x24540f,_0x426549){return request({'form':{'method':_0x5db8('0x4f'),'input_type':_0x5db8('0x1d'),'response_type':_0x5db8('0x1d'),'rest_data':JSON[_0x5db8('0x1e')]({'session':_0x418731['id'],'module_name':_0x5db8('0x1f'),'module_id':_0x24540f['id'],'link_field_name':_0x426549,'related_ids':[_0x402ab1['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x5db8('0x50')]=function(_0x547fb1,_0x156da0,_0x9f998b,_0x44fba0,_0x5bba81,_0x3235bb){var _0x3f5ac8,_0x29a85b,_0x417af9,_0x8d856e;_0x3235bb[_0x5db8('0x51')]=intUtil[_0x5db8('0x52')](_0x3235bb[_0x5db8('0x51')]);_0x3235bb[_0x5db8('0x53')]=intUtil[_0x5db8('0x52')](_0x3235bb[_0x5db8('0x53')]);def['uri']=util[_0x5db8('0x27')](_0x5db8('0x54'),_0x3235bb[_0x5db8('0x51')]);if(_0x5bba81&&_0x5bba81[_0x5db8('0x55')]){logger[_0x5db8('0xd')](_0x5db8('0x56'),_0x5db8('0x57'));_0x156da0[_0x5db8('0x58')]=util[_0x5db8('0x27')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3235bb['serverUrl'],_0x156da0[_0x5db8('0x59')],md5(_0x156da0[_0x5db8('0x59')]));}else{_0x156da0['recordingURL']='';}return getConnection(_0x3235bb)[_0x5db8('0x2a')](function(_0x2d99ff){_0x8d856e=_0x2d99ff;return getUser(_0x3235bb,_0x44fba0[_0x5db8('0x32')],_0x8d856e);})['then'](function(_0x289ad1){_0x3f5ac8=_0x289ad1;logger['info'](_0x5db8('0x5a'),_0x3f5ac8['id']);return getEndUser(_0x3235bb,_0x156da0[_0x5db8('0x5b')],_0x156da0[_0x5db8('0x5c')],_0x8d856e);})['then'](function(_0x5f08b7){_0x29a85b=_0x5f08b7;logger[_0x5db8('0xd')](_0x5db8('0x5d'),_0x29a85b['id']);return getTicket(_0x3235bb,_0x3f5ac8,_0x29a85b,_0x9f998b,_0x156da0,_0x9f998b['Fields'],_0x8d856e,'Inbound');})[_0x5db8('0x2a')](function(_0x11fe2f){_0x417af9=_0x11fe2f;logger[_0x5db8('0xd')](_0x5db8('0x5e'));logger[_0x5db8('0xd')]('The\x20Ticket\x20ID\x20is:',_0x417af9['id']);return setRelationship(_0x8d856e,_0x3f5ac8,_0x417af9,'users');})[_0x5db8('0x2a')](function(){return setRelationship(_0x8d856e,_0x29a85b,_0x417af9,_0x5db8('0x5f'));})['then'](function(){return getServerInfo(_0x8d856e);})[_0x5db8('0x2a')](function(_0x4e94bc){var _0x1900f5=parseInt(_0x4e94bc[_0x5db8('0x60')]['charAt'](0x0));var _0x4ed68b=util[_0x5db8('0x27')](_0x5db8('0x61'),_0x3235bb[_0x5db8('0x51')],_0x417af9['id']);if(_0x1900f5>0x6){_0x4ed68b=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x3235bb[_0x5db8('0x51')],_0x417af9['id']);}logger[_0x5db8('0xd')](_0x5db8('0x56'),_0x5db8('0x62'));emit(util[_0x5db8('0x27')]('user:%s',_0x44fba0[_0x5db8('0x32')]),_0x5db8('0x63'),{'uri':_0x4ed68b});})[_0x5db8('0x64')](function(_0x498294){logger[_0x5db8('0x65')]('[QUEUE]',JSON[_0x5db8('0x1e')](_0x498294));});};exports['outbound']=function(_0x449ab5,_0x5734cf,_0xa42559,_0x43da86,_0x5d3ddd,_0x5547fb,_0x20a934){var _0x105af3,_0x59d1d3,_0x58cca1,_0x382793;_0x5547fb['remoteUri']=intUtil[_0x5db8('0x52')](_0x5547fb['remoteUri']);_0x5547fb[_0x5db8('0x53')]=intUtil[_0x5db8('0x52')](_0x5547fb[_0x5db8('0x53')]);def[_0x5db8('0x66')]=util['format'](_0x5db8('0x54'),_0x5547fb['remoteUri']);if(_0x20a934&&_0x20a934['recordingFormat']&&_0x20a934[_0x5db8('0x67')]!==_0x5db8('0x68')){logger[_0x5db8('0xd')](_0x5db8('0x69'),_0x5db8('0x57'));_0x5734cf['recordingURL']=util['format'](_0x5db8('0x6a'),_0x5547fb[_0x5db8('0x53')],_0x5734cf[_0x5db8('0x59')],md5(_0x5734cf[_0x5db8('0x59')]));}return getConnection(_0x5547fb)['then'](function(_0x17e9f7){_0x382793=_0x17e9f7;return getUser(_0x5547fb,_0x43da86[_0x5db8('0x32')],_0x382793);})[_0x5db8('0x2a')](function(_0x1572b8){_0x105af3=_0x1572b8;logger[_0x5db8('0xd')](_0x5db8('0x5a'),_0x105af3['id']);return getEndUser(_0x5547fb,_0x5734cf[_0x5db8('0x6b')],_0x5734cf[_0x5db8('0x6c')],_0x382793);})[_0x5db8('0x2a')](function(_0x308bfb){_0x59d1d3=_0x308bfb;logger[_0x5db8('0xd')]('The\x20Enduser\x20ID\x20is:',_0x59d1d3['id']);return getTicket(_0x5547fb,_0x105af3,_0x59d1d3,_0xa42559,_0x5734cf,_0xa42559[_0x5db8('0x6d')],_0x382793,_0x5db8('0x6e'));})[_0x5db8('0x2a')](function(_0x1cd53b){_0x58cca1=_0x1cd53b;logger[_0x5db8('0xd')]('Ticket\x20created!');logger[_0x5db8('0xd')](_0x5db8('0x6f'),_0x58cca1['id']);return setRelationship(_0x382793,_0x105af3,_0x58cca1,_0x5db8('0x70'));})['then'](function(){return setRelationship(_0x382793,_0x59d1d3,_0x58cca1,'contacts');})[_0x5db8('0x2a')](function(){return getServerInfo(_0x382793);})['then'](function(_0x1a17f9){var _0x41f334=parseInt(_0x1a17f9[_0x5db8('0x60')][_0x5db8('0x71')](0x0));var _0x4f0612=util[_0x5db8('0x27')](_0x5db8('0x61'),_0x5547fb[_0x5db8('0x51')],_0x58cca1['id']);if(_0x41f334>0x6){_0x4f0612=util[_0x5db8('0x27')](_0x5db8('0x72'),_0x5547fb['remoteUri'],_0x58cca1['id']);}logger[_0x5db8('0xd')](_0x5db8('0x69'),_0x5db8('0x62'));emit(util[_0x5db8('0x27')](_0x5db8('0x73'),_0x43da86[_0x5db8('0x32')]),'trigger:browser:url',{'uri':_0x4f0612});})['catch'](function(_0x205fe8){logger[_0x5db8('0x65')](_0x5db8('0x69'),JSON['stringify'](_0x205fe8));});};exports['unmanaged']=function(_0xdcb4b8,_0x5c2c5e,_0x3fa004,_0x5c5138,_0x3636b0,_0x5dd7ba){var _0x1bd587,_0x54cc4f,_0x4a2798,_0x2ee925;_0x5dd7ba[_0x5db8('0x51')]=intUtil[_0x5db8('0x52')](_0x5dd7ba[_0x5db8('0x51')]);_0x5dd7ba[_0x5db8('0x53')]=intUtil[_0x5db8('0x52')](_0x5dd7ba[_0x5db8('0x53')]);def[_0x5db8('0x66')]=util[_0x5db8('0x27')]('%s/service/v4_1/rest.php',_0x5dd7ba[_0x5db8('0x51')]);if(_0x3636b0&&_0x3636b0[_0x5db8('0x55')]){logger[_0x5db8('0xd')]('['+_0x5c2c5e[_0x5db8('0x74')][_0x5db8('0x75')]()+']',_0x5db8('0x57'));_0x5c2c5e[_0x5db8('0x58')]=util[_0x5db8('0x27')](_0x5db8('0x6a'),_0x5dd7ba[_0x5db8('0x53')],_0x5c2c5e['uniqueid'],md5(_0x5c2c5e[_0x5db8('0x59')]));}else{_0x5c2c5e['recordingURL']='';}return getConnection(_0x5dd7ba)['then'](function(_0x1e4778){_0x2ee925=_0x1e4778;if(!_[_0x5db8('0x24')](_0x5c5138)){return getUser(_0x5dd7ba,_0x5c5138[_0x5db8('0x32')],_0x2ee925);}else{return getUser(_0x5dd7ba,null,_0x2ee925);}})['then'](function(_0x1bfb1a){_0x1bd587=_0x1bfb1a;logger[_0x5db8('0xd')]('The\x20User\x20ID\x20is:',_0x1bd587['id']);return getEndUser(_0x5dd7ba,_0x5c2c5e[_0x5db8('0x5b')],_0x5c2c5e[_0x5db8('0x5c')],_0x2ee925);})['then'](function(_0x545c4e){_0x54cc4f=_0x545c4e;logger['info']('The\x20Enduser\x20ID\x20is:',_0x54cc4f['id']);return getTicket(_0x5dd7ba,_0x1bd587,_0x54cc4f,_0x3fa004,_0x5c2c5e,_0x3fa004['Fields'],_0x2ee925,_0x5db8('0x76'));})['then'](function(_0x6bd83f){_0x4a2798=_0x6bd83f;logger['info']('Ticket\x20created!');logger[_0x5db8('0xd')](_0x5db8('0x6f'),_0x4a2798['id']);return setRelationship(_0x2ee925,_0x1bd587,_0x4a2798,_0x5db8('0x70'));})['then'](function(){return setRelationship(_0x2ee925,_0x54cc4f,_0x4a2798,_0x5db8('0x5f'));})[_0x5db8('0x2a')](function(){return getServerInfo(_0x2ee925);})['catch'](function(_0x1c234f){logger[_0x5db8('0x65')]('['+_0x5c2c5e[_0x5db8('0x74')][_0x5db8('0x75')]()+']',JSON[_0x5db8('0x1e')](_0x1c234f));});};
\ No newline at end of file
+var _0x6779=['toLowerCase','content','custom_fields','variable','customVariable','Variable','login','username','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','Calls','queue','remoteUri','stripTrailingSlash','serverUrl','uri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','recordingURL','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','users','version','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','outbound','%s/service/v4_1/rest.php','none','[OUTBOUND]','uniqueid','The\x20User\x20ID\x20is:','destcalleridname','Outbound','Ticket\x20created!','contacts','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','unmanaged','lastevent','isNil','calleridnum','Inbound','catch','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','date_start','slice','duration_hours','duration_minutes','parent_id','parent_type','Contacts','direction','length','forEach','variableName','push','idField','set_entry','JSON','stringify','format','Basic\x20%s','apiKey','toString','get_server_info','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','find','entry_list','resolve','value','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','Enduser\x20created.','[HTTP]','merge','map','type','string','nameField','customField'];(function(_0x321bbc,_0x2b45d8){var _0xcfe5b6=function(_0xcf10b8){while(--_0xcf10b8){_0x321bbc['push'](_0x321bbc['shift']());}};_0xcfe5b6(++_0x2b45d8);}(_0x6779,0x11e));var _0x9677=function(_0xfca14d,_0x104400){_0xfca14d=_0xfca14d-0x0;var _0x306f5c=_0x6779[_0xfca14d];return _0x306f5c;};'use strict';var _=require(_0x9677('0x0'));var rp=require(_0x9677('0x1'));var BPromise=require('bluebird');var md5=require(_0x9677('0x2'));var util=require(_0x9677('0x3'));var Redis=require(_0x9677('0x4'));var intUtil=require(_0x9677('0x5'));var config=require(_0x9677('0x6'));var logger=require(_0x9677('0x7'))(_0x9677('0x8'));config[_0x9677('0x9')]=_[_0x9677('0xa')](config[_0x9677('0x9')],{'host':_0x9677('0xb'),'port':0x18eb});var io=require(_0x9677('0xc'))(new Redis(config[_0x9677('0x9')]));var def={'method':_0x9677('0xd'),'json':!![]};function emit(_0x1649fe,_0x1ed7b5,_0x3eb53d){io['to'](_0x1649fe)[_0x9677('0xe')](_0x1ed7b5,_0x3eb53d);}function getTicket(_0x29c306,_0x11d720,_0x36b118,_0xbb69bb,_0x4e181f,_0x2471cf,_0x5405c7,_0x1e6f8e){logger[_0x9677('0xf')](_0x9677('0x10'));var _0x413474=new Date();var _0x29dd21=[{'name':_0x9677('0x11'),'value':intUtil[_0x9677('0x12')](_0xbb69bb[_0x9677('0x13')],_0x4e181f,'\x20')},{'name':'assigned_user_id','value':_0x11d720['id']},{'name':_0x9677('0x14'),'value':_0x11d720['id']},{'name':'description','value':intUtil[_0x9677('0x12')](_0xbb69bb['Descriptions'],_0x4e181f,'\x0a')},{'name':_0x9677('0x15'),'value':_0x413474['toISOString']()[_0x9677('0x16')](0x0,0x13)['replace']('T','\x20')},{'name':_0x9677('0x17'),'value':'0'},{'name':_0x9677('0x18'),'value':'15'},{'name':_0x9677('0x19'),'value':_0x36b118['id']},{'name':_0x9677('0x1a'),'value':_0x9677('0x1b')},{'name':'parent_name','value':_0x36b118['name']},{'name':_0x9677('0x1c'),'value':_0x1e6f8e}];if(_0x2471cf[_0x9677('0x1d')]){_[_0x9677('0x1e')](_0x2471cf,function(_0x2e2a9b){if(_0x4e181f[_0x2e2a9b[_0x9677('0x1f')]]){_0x29dd21[_0x9677('0x20')]({'name':_0x2e2a9b[_0x9677('0x21')],'value':_0x4e181f[_0x2e2a9b[_0x9677('0x1f')]]});}});}return request({'form':{'method':_0x9677('0x22'),'input_type':_0x9677('0x23'),'response_type':_0x9677('0x23'),'rest_data':JSON[_0x9677('0x24')]({'session':_0x5405c7['id'],'module_name':'Calls','name_value_list':_0x29dd21})}});}function getAuth(_0x2ce154){return util[_0x9677('0x25')](_0x9677('0x26'),new Buffer(_0x2ce154[_0x9677('0x27')]+':X')[_0x9677('0x28')]('base64'));}function getServerInfo(_0x41555e){return request({'form':{'method':_0x9677('0x29'),'input_type':_0x9677('0x23'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x41555e['id']})}});}function getUser(_0x573387,_0x3e5ec1,_0x3e8778){if(!_['isNil'](_0x3e5ec1)){logger[_0x9677('0xf')]('Getting\x20agent\x20with\x20name',_0x3e5ec1);return request({'form':{'method':_0x9677('0x2a'),'input_type':'JSON','response_type':_0x9677('0x23'),'rest_data':JSON[_0x9677('0x24')]({'session':_0x3e8778['id'],'module_name':_0x9677('0x2b'),'query':util['format'](_0x9677('0x2c'),_0x3e5ec1),'order_by':'','offset':'0','select_fields':['id',_0x9677('0x11'),_0x9677('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x9677('0x2e')](function(_0x15a4cf){if(_0x15a4cf['entry_list'][_0x9677('0x1d')]){var _0x22477e=_[_0x9677('0x2f')](_0x15a4cf[_0x9677('0x30')],function(_0x2190f5){return _0x2190f5['name_value_list']['user_name']['value']===_0x3e5ec1;});if(_0x22477e){logger[_0x9677('0xf')]('Agent\x20found!');return BPromise[_0x9677('0x31')]({'id':_0x22477e['name_value_list']['id'][_0x9677('0x32')],'name':_0x22477e[_0x9677('0x33')][_0x9677('0x11')][_0x9677('0x32')]});}}logger[_0x9677('0xf')](_0x9677('0x34'));return BPromise['resolve']({'id':_0x3e8778[_0x9677('0x33')][_0x9677('0x35')]['value'],'name':_0x3e8778[_0x9677('0x33')][_0x9677('0x2d')][_0x9677('0x32')]});});}else{logger[_0x9677('0xf')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0x9677('0x31')]({'id':_0x3e8778[_0x9677('0x33')]['user_id']['value'],'name':_0x3e8778[_0x9677('0x33')][_0x9677('0x2d')][_0x9677('0x32')]});}}function getEndUser(_0x3828a5,_0x13cc77,_0x5705a3,_0x2dac0a){logger[_0x9677('0xf')](_0x9677('0x36'),_0x5705a3);return request({'form':{'method':_0x9677('0x2a'),'input_type':_0x9677('0x23'),'response_type':_0x9677('0x23'),'rest_data':JSON[_0x9677('0x24')]({'session':_0x2dac0a['id'],'module_name':'Contacts','query':util['format'](_0x9677('0x37'),_0x5705a3),'order_by':'','offset':'0','select_fields':['id','name',_0x9677('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x9677('0x2e')](function(_0x1064e0){if(_0x1064e0[_0x9677('0x30')][_0x9677('0x1d')]){var _0x589746=_[_0x9677('0x2f')](_0x1064e0[_0x9677('0x30')],function(_0x599a33){return _0x599a33[_0x9677('0x33')][_0x9677('0x38')][_0x9677('0x32')]===_0x5705a3;});if(_0x589746){logger[_0x9677('0xf')](_0x9677('0x39'));return BPromise[_0x9677('0x31')]({'id':_0x589746['name_value_list']['id'][_0x9677('0x32')],'name':_0x589746[_0x9677('0x33')]['name'][_0x9677('0x32')],'phone':_0x589746['name_value_list'][_0x9677('0x38')][_0x9677('0x32')]});}}else{logger[_0x9677('0xf')](_0x9677('0x3a'));return request({'form':{'method':_0x9677('0x22'),'input_type':'JSON','response_type':_0x9677('0x23'),'rest_data':JSON['stringify']({'session':_0x2dac0a['id'],'module_name':_0x9677('0x1b'),'name_value_list':[{'name':_0x9677('0x3b'),'value':_0x13cc77!=='<unknown>'?_0x13cc77:util['format']('Caller\x20-\x20%s',_0x5705a3)},{'name':_0x9677('0x38'),'value':_0x5705a3}]})}})[_0x9677('0x2e')](function(_0x3b485a){logger['info'](_0x9677('0x3c'));return BPromise['resolve']({'id':_0x3b485a['id'],'name':_0x3b485a[_0x9677('0x30')][_0x9677('0x3b')][_0x9677('0x32')],'phone':_0x3b485a[_0x9677('0x30')]['phone_home']['value']});});}});}function request(_0x49f47e){logger['debug'](_0x9677('0x3d'),JSON[_0x9677('0x24')](_0x49f47e));return rp(_[_0x9677('0x3e')](def,_0x49f47e));}function getTags(_0x8405ff,_0x2a287c){var _0x508c58=[];if(_0x8405ff&&_0x8405ff[_0x9677('0x1d')]>0x0){_0x508c58=_[_0x9677('0x3f')](_0x8405ff,_0x2a287c);}return _0x508c58;}function getCustomFields(_0x43be30,_0x12c1e2){var _0x59c0ac=[];var _0x500e98={'custom_fields':[]};if(_0x43be30['length']>0x0){_[_0x9677('0x1e')](_0x43be30,function(_0x5a21d5){if(_0x5a21d5[_0x9677('0x40')]===_0x9677('0x41')&&_0x5a21d5[_0x9677('0x42')]&&!_0x5a21d5[_0x9677('0x43')]){_0x500e98[_0x5a21d5['nameField'][_0x9677('0x44')]()]=_0x5a21d5[_0x9677('0x45')][_0x9677('0x28')]();}else if(_0x5a21d5[_0x9677('0x40')]===_0x9677('0x41')&&_0x5a21d5[_0x9677('0x21')]&&_0x5a21d5[_0x9677('0x43')]){_0x500e98[_0x9677('0x46')][_0x9677('0x20')]({'id':_0x5a21d5[_0x9677('0x21')],'value':_0x5a21d5[_0x9677('0x45')]['toString']()});}else if(_0x5a21d5[_0x9677('0x40')]===_0x9677('0x47')&&_0x5a21d5[_0x9677('0x1f')]&&_0x5a21d5[_0x9677('0x21')]&&_0x5a21d5[_0x9677('0x43')]){_0x12c1e2[_0x5a21d5[_0x9677('0x1f')]]&&_0x500e98['custom_fields'][_0x9677('0x20')]({'id':_0x5a21d5[_0x9677('0x21')],'value':_0x12c1e2[_0x5a21d5[_0x9677('0x1f')]][_0x9677('0x28')]()});}else if(_0x5a21d5[_0x9677('0x40')]===_0x9677('0x48')&&_0x5a21d5['Variable']&&_0x5a21d5[_0x9677('0x49')][_0x9677('0x11')]&&_0x5a21d5[_0x9677('0x21')]&&_0x5a21d5[_0x9677('0x43')]){_0x12c1e2[_0x5a21d5[_0x9677('0x49')]['name']['toLowerCase']()]&&_0x500e98[_0x9677('0x46')][_0x9677('0x20')]({'id':_0x5a21d5[_0x9677('0x21')],'value':_0x12c1e2[_0x5a21d5[_0x9677('0x49')][_0x9677('0x11')][_0x9677('0x44')]()][_0x9677('0x28')]()});}});}return _0x500e98;}function getConnection(_0x55f7b1){return request({'method':_0x9677('0xd'),'form':{'method':_0x9677('0x4a'),'input_type':_0x9677('0x23'),'response_type':_0x9677('0x23'),'rest_data':JSON[_0x9677('0x24')]({'user_auth':{'user_name':_0x55f7b1[_0x9677('0x4b')],'password':_0x55f7b1['password'],'encryption':'PLAIN'},'application':_0x9677('0x4c')})}})[_0x9677('0x2e')](function(_0x393af4){var _0x58db5f=_0x393af4;if(_0x58db5f['id']){def['sessionID']=_0x58db5f['id'];return BPromise['resolve'](_0x58db5f);}else{throw new Error(util['format'](_0x9677('0x4d'),_0x55f7b1['id']));}});}function setRelationship(_0x5400f9,_0x2e4681,_0x8fa37e,_0x491e00){return request({'form':{'method':_0x9677('0x4e'),'input_type':_0x9677('0x23'),'response_type':_0x9677('0x23'),'rest_data':JSON[_0x9677('0x24')]({'session':_0x5400f9['id'],'module_name':_0x9677('0x4f'),'module_id':_0x8fa37e['id'],'link_field_name':_0x491e00,'related_ids':[_0x2e4681['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x9677('0x50')]=function(_0xd9b6a0,_0x2c123a,_0x49bf6b,_0x46efc3,_0x3b9e28,_0x51204c){var _0x525f1c,_0xafc08e,_0x529b7c,_0x283c62;_0x51204c[_0x9677('0x51')]=intUtil['stripTrailingSlash'](_0x51204c[_0x9677('0x51')]);_0x51204c['serverUrl']=intUtil[_0x9677('0x52')](_0x51204c[_0x9677('0x53')]);def[_0x9677('0x54')]=util[_0x9677('0x25')]('%s/service/v4_1/rest.php',_0x51204c[_0x9677('0x51')]);if(_0x3b9e28&&_0x3b9e28[_0x9677('0x55')]){logger[_0x9677('0xf')](_0x9677('0x56'),_0x9677('0x57'));_0x2c123a['recordingURL']=util[_0x9677('0x25')](_0x9677('0x58'),_0x51204c[_0x9677('0x53')],_0x2c123a['uniqueid'],md5(_0x2c123a['uniqueid']));}else{_0x2c123a[_0x9677('0x59')]='';}return getConnection(_0x51204c)[_0x9677('0x2e')](function(_0x408a86){_0x283c62=_0x408a86;return getUser(_0x51204c,_0x46efc3[_0x9677('0x11')],_0x283c62);})['then'](function(_0x49c61a){_0x525f1c=_0x49c61a;logger['info']('The\x20User\x20ID\x20is:',_0x525f1c['id']);return getEndUser(_0x51204c,_0x2c123a[_0x9677('0x5a')],_0x2c123a['calleridnum'],_0x283c62);})[_0x9677('0x2e')](function(_0x4fb1aa){_0xafc08e=_0x4fb1aa;logger[_0x9677('0xf')](_0x9677('0x5b'),_0xafc08e['id']);return getTicket(_0x51204c,_0x525f1c,_0xafc08e,_0x49bf6b,_0x2c123a,_0x49bf6b['Fields'],_0x283c62,'Inbound');})[_0x9677('0x2e')](function(_0x237ada){_0x529b7c=_0x237ada;logger['info']('Ticket\x20created!');logger['info'](_0x9677('0x5c'),_0x529b7c['id']);return setRelationship(_0x283c62,_0x525f1c,_0x529b7c,_0x9677('0x5d'));})['then'](function(){return setRelationship(_0x283c62,_0xafc08e,_0x529b7c,'contacts');})[_0x9677('0x2e')](function(){return getServerInfo(_0x283c62);})['then'](function(_0x8bc9df){var _0x20a81b=parseInt(_0x8bc9df[_0x9677('0x5e')][_0x9677('0x5f')](0x0));var _0x5159c8=util[_0x9677('0x25')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x51204c[_0x9677('0x51')],_0x529b7c['id']);if(_0x20a81b>0x6){_0x5159c8=util[_0x9677('0x25')](_0x9677('0x60'),_0x51204c[_0x9677('0x51')],_0x529b7c['id']);}logger['info'](_0x9677('0x56'),_0x9677('0x61'));emit(util[_0x9677('0x25')](_0x9677('0x62'),_0x46efc3['name']),_0x9677('0x63'),{'uri':_0x5159c8});})['catch'](function(_0x159e27){logger[_0x9677('0x64')](_0x9677('0x56'),JSON[_0x9677('0x24')](_0x159e27));});};exports[_0x9677('0x65')]=function(_0x3760f4,_0x51a2ba,_0x3a1b7a,_0x57fe9a,_0x191dc1,_0x2d37b0,_0x34ab95){var _0x2b6e0d,_0x190987,_0x5277c,_0x7e8040;_0x2d37b0[_0x9677('0x51')]=intUtil[_0x9677('0x52')](_0x2d37b0['remoteUri']);_0x2d37b0['serverUrl']=intUtil[_0x9677('0x52')](_0x2d37b0[_0x9677('0x53')]);def[_0x9677('0x54')]=util[_0x9677('0x25')](_0x9677('0x66'),_0x2d37b0[_0x9677('0x51')]);if(_0x34ab95&&_0x34ab95['recordingFormat']&&_0x34ab95['recordingFormat']!==_0x9677('0x67')){logger['info'](_0x9677('0x68'),_0x9677('0x57'));_0x51a2ba[_0x9677('0x59')]=util[_0x9677('0x25')](_0x9677('0x58'),_0x2d37b0[_0x9677('0x53')],_0x51a2ba['uniqueid'],md5(_0x51a2ba[_0x9677('0x69')]));}return getConnection(_0x2d37b0)['then'](function(_0x1d5bf3){_0x7e8040=_0x1d5bf3;return getUser(_0x2d37b0,_0x57fe9a[_0x9677('0x11')],_0x7e8040);})[_0x9677('0x2e')](function(_0x5768dc){_0x2b6e0d=_0x5768dc;logger['info'](_0x9677('0x6a'),_0x2b6e0d['id']);return getEndUser(_0x2d37b0,_0x51a2ba[_0x9677('0x6b')],_0x51a2ba['destcalleridnum'],_0x7e8040);})[_0x9677('0x2e')](function(_0x5f9d86){_0x190987=_0x5f9d86;logger[_0x9677('0xf')](_0x9677('0x5b'),_0x190987['id']);return getTicket(_0x2d37b0,_0x2b6e0d,_0x190987,_0x3a1b7a,_0x51a2ba,_0x3a1b7a['Fields'],_0x7e8040,_0x9677('0x6c'));})[_0x9677('0x2e')](function(_0x497055){_0x5277c=_0x497055;logger[_0x9677('0xf')](_0x9677('0x6d'));logger[_0x9677('0xf')](_0x9677('0x5c'),_0x5277c['id']);return setRelationship(_0x7e8040,_0x2b6e0d,_0x5277c,_0x9677('0x5d'));})['then'](function(){return setRelationship(_0x7e8040,_0x190987,_0x5277c,_0x9677('0x6e'));})['then'](function(){return getServerInfo(_0x7e8040);})[_0x9677('0x2e')](function(_0x566541){var _0x96ff96=parseInt(_0x566541[_0x9677('0x5e')][_0x9677('0x5f')](0x0));var _0x7dd742=util[_0x9677('0x25')](_0x9677('0x6f'),_0x2d37b0[_0x9677('0x51')],_0x5277c['id']);if(_0x96ff96>0x6){_0x7dd742=util[_0x9677('0x25')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x2d37b0[_0x9677('0x51')],_0x5277c['id']);}logger[_0x9677('0xf')](_0x9677('0x68'),_0x9677('0x61'));emit(util['format']('user:%s',_0x57fe9a[_0x9677('0x11')]),_0x9677('0x63'),{'uri':_0x7dd742});})['catch'](function(_0x3194d8){logger['error'](_0x9677('0x68'),JSON[_0x9677('0x24')](_0x3194d8));});};exports[_0x9677('0x70')]=function(_0x38a5e8,_0x5b03ce,_0x5375a6,_0x5482ba,_0xb55af5,_0x197191){var _0x4f8ad7,_0x33bd33,_0x412686,_0x5576ba;_0x197191['remoteUri']=intUtil[_0x9677('0x52')](_0x197191['remoteUri']);_0x197191[_0x9677('0x53')]=intUtil['stripTrailingSlash'](_0x197191['serverUrl']);def[_0x9677('0x54')]=util[_0x9677('0x25')]('%s/service/v4_1/rest.php',_0x197191[_0x9677('0x51')]);if(_0xb55af5&&_0xb55af5[_0x9677('0x55')]){logger[_0x9677('0xf')]('['+_0x5b03ce[_0x9677('0x71')]['toUpperCase']()+']',_0x9677('0x57'));_0x5b03ce['recordingURL']=util[_0x9677('0x25')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x197191[_0x9677('0x53')],_0x5b03ce[_0x9677('0x69')],md5(_0x5b03ce['uniqueid']));}else{_0x5b03ce[_0x9677('0x59')]='';}return getConnection(_0x197191)[_0x9677('0x2e')](function(_0x1f9b13){_0x5576ba=_0x1f9b13;if(!_[_0x9677('0x72')](_0x5482ba)){return getUser(_0x197191,_0x5482ba[_0x9677('0x11')],_0x5576ba);}else{return getUser(_0x197191,null,_0x5576ba);}})[_0x9677('0x2e')](function(_0x4d541e){_0x4f8ad7=_0x4d541e;logger[_0x9677('0xf')](_0x9677('0x6a'),_0x4f8ad7['id']);return getEndUser(_0x197191,_0x5b03ce[_0x9677('0x5a')],_0x5b03ce[_0x9677('0x73')],_0x5576ba);})[_0x9677('0x2e')](function(_0x55a20c){_0x33bd33=_0x55a20c;logger[_0x9677('0xf')](_0x9677('0x5b'),_0x33bd33['id']);return getTicket(_0x197191,_0x4f8ad7,_0x33bd33,_0x5375a6,_0x5b03ce,_0x5375a6['Fields'],_0x5576ba,_0x9677('0x74'));})[_0x9677('0x2e')](function(_0x2dd837){_0x412686=_0x2dd837;logger[_0x9677('0xf')](_0x9677('0x6d'));logger[_0x9677('0xf')](_0x9677('0x5c'),_0x412686['id']);return setRelationship(_0x5576ba,_0x4f8ad7,_0x412686,'users');})[_0x9677('0x2e')](function(){return setRelationship(_0x5576ba,_0x33bd33,_0x412686,'contacts');})[_0x9677('0x2e')](function(){return getServerInfo(_0x5576ba);})[_0x9677('0x75')](function(_0x1344b9){logger[_0x9677('0x64')]('['+_0x5b03ce[_0x9677('0x71')]['toUpperCase']()+']',JSON[_0x9677('0x24')](_0x1344b9));});};
\ No newline at end of file
index 41bfed8..f2407a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf151=['slice','substring','lastIndexOf','validateEmail','isNil','test','lodash','util','length','sortBy','type','string','variable','variableName','push','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','format','%s:\x20%s','key','keyContent'];(function(_0x5e0049,_0x45196a){var _0x1ce0f5=function(_0x4c0fcf){while(--_0x4c0fcf){_0x5e0049['push'](_0x5e0049['shift']());}};_0x1ce0f5(++_0x45196a);}(_0xf151,0x1f4));var _0x1f15=function(_0x4925d0,_0xa820e){_0x4925d0=_0x4925d0-0x0;var _0x3b7b03=_0xf151[_0x4925d0];return _0x3b7b03;};'use strict';var _=require(_0x1f15('0x0'));var util=require(_0x1f15('0x1'));exports['getString']=function(_0x200573,_0x3b70f6,_0x258ac0){var _0xeb041f=[];if(_0x200573[_0x1f15('0x2')]>0x0){var _0x4df796=_[_0x1f15('0x3')](_0x200573,['id']);for(var _0x4d5647=0x0;_0x4d5647<_0x4df796[_0x1f15('0x2')];_0x4d5647++){var _0x22ec34=_0x4df796[_0x4d5647];if(_0x22ec34[_0x1f15('0x4')]===_0x1f15('0x5')){_0xeb041f['push'](_0x22ec34['content']);}else if(_0x22ec34[_0x1f15('0x4')]===_0x1f15('0x6')&&_0x22ec34[_0x1f15('0x7')]){_0x3b70f6[_0x22ec34['variableName']]&&_0xeb041f[_0x1f15('0x8')](_0x3b70f6[_0x22ec34['variableName']][_0x1f15('0x9')]());}else if(_0x22ec34[_0x1f15('0x4')]===_0x1f15('0xa')&&_0x22ec34[_0x1f15('0xb')]&&_0x22ec34['Variable'][_0x1f15('0xc')]){_0x3b70f6[_0x22ec34[_0x1f15('0xb')][_0x1f15('0xc')][_0x1f15('0xd')]()]&&_0xeb041f[_0x1f15('0x8')](_0x3b70f6[_0x22ec34[_0x1f15('0xb')]['name'][_0x1f15('0xd')]()][_0x1f15('0x9')]());}else if(_0x22ec34[_0x1f15('0x4')]===_0x1f15('0xe')){if(_0x22ec34[_0x1f15('0xf')]==='string'&&_0x22ec34['key']){_0xeb041f[_0x1f15('0x8')](util[_0x1f15('0x10')](_0x1f15('0x11'),_0x22ec34[_0x1f15('0x12')],_0x22ec34[_0x1f15('0x13')]));}else if(_0x22ec34[_0x1f15('0xf')]===_0x1f15('0x6')&&_0x22ec34[_0x1f15('0x7')]&&_0x22ec34[_0x1f15('0x12')]){_0x3b70f6[_0x22ec34[_0x1f15('0x7')]]&&_0xeb041f[_0x1f15('0x8')](util['format']('%s:\x20%s',_0x22ec34[_0x1f15('0x12')],_0x3b70f6[_0x22ec34['variableName']]));}else if(_0x22ec34[_0x1f15('0xf')]===_0x1f15('0xa')&&_0x22ec34['Variable']&&_0x22ec34[_0x1f15('0xb')][_0x1f15('0xc')]&&_0x22ec34[_0x1f15('0x12')]){_0x3b70f6[_0x22ec34[_0x1f15('0xb')]['name']['toLowerCase']()]&&_0xeb041f[_0x1f15('0x8')](util['format'](_0x1f15('0x11'),_0x22ec34[_0x1f15('0x12')],_0x3b70f6[_0x22ec34[_0x1f15('0xb')][_0x1f15('0xc')][_0x1f15('0xd')]()]));}}}}return _0xeb041f['join'](_0x258ac0);};exports['stripTrailingSlash']=function(_0x17769d){var _0x2c8f7f=_0x17769d[_0x1f15('0x14')](-0x1);if(_0x2c8f7f==='/'){_0x17769d=_0x17769d[_0x1f15('0x15')](0x0,_0x17769d[_0x1f15('0x16')](_0x2c8f7f));}return _0x17769d;};exports[_0x1f15('0x17')]=function(_0x34ecaa){if(!_[_0x1f15('0x18')](_0x34ecaa)&&_0x34ecaa!==''){var _0xeb53cf=/^(([^<>()\[\]\\.,;:\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 _0xeb53cf[_0x1f15('0x19')](String(_0x34ecaa)[_0x1f15('0xd')]());}else{return![];}};
\ No newline at end of file
+var _0x28c3=['key','format','%s:\x20%s','join','stripTrailingSlash','slice','substring','lastIndexOf','test','util','getString','length','sortBy','type','string','push','content','variableName','customVariable','Variable','toLowerCase','name','keyValue','keyType'];(function(_0x1e435e,_0x19298d){var _0x258ba9=function(_0x394d4b){while(--_0x394d4b){_0x1e435e['push'](_0x1e435e['shift']());}};_0x258ba9(++_0x19298d);}(_0x28c3,0x1e9));var _0x328c=function(_0x16321b,_0x50131c){_0x16321b=_0x16321b-0x0;var _0x2c33a7=_0x28c3[_0x16321b];return _0x2c33a7;};'use strict';var _=require('lodash');var util=require(_0x328c('0x0'));exports[_0x328c('0x1')]=function(_0x3fa6c6,_0x8eadcf,_0x5a7c0e){var _0x10cf3d=[];if(_0x3fa6c6[_0x328c('0x2')]>0x0){var _0x5b8c6d=_[_0x328c('0x3')](_0x3fa6c6,['id']);for(var _0x432465=0x0;_0x432465<_0x5b8c6d[_0x328c('0x2')];_0x432465++){var _0xbfb61f=_0x5b8c6d[_0x432465];if(_0xbfb61f[_0x328c('0x4')]===_0x328c('0x5')){_0x10cf3d[_0x328c('0x6')](_0xbfb61f[_0x328c('0x7')]);}else if(_0xbfb61f[_0x328c('0x4')]==='variable'&&_0xbfb61f[_0x328c('0x8')]){_0x8eadcf[_0xbfb61f[_0x328c('0x8')]]&&_0x10cf3d[_0x328c('0x6')](_0x8eadcf[_0xbfb61f[_0x328c('0x8')]]['toString']());}else if(_0xbfb61f[_0x328c('0x4')]===_0x328c('0x9')&&_0xbfb61f['Variable']&&_0xbfb61f[_0x328c('0xa')]['name']){_0x8eadcf[_0xbfb61f[_0x328c('0xa')]['name'][_0x328c('0xb')]()]&&_0x10cf3d[_0x328c('0x6')](_0x8eadcf[_0xbfb61f[_0x328c('0xa')][_0x328c('0xc')]['toLowerCase']()]['toString']());}else if(_0xbfb61f['type']===_0x328c('0xd')){if(_0xbfb61f[_0x328c('0xe')]==='string'&&_0xbfb61f[_0x328c('0xf')]){_0x10cf3d[_0x328c('0x6')](util[_0x328c('0x10')]('%s:\x20%s',_0xbfb61f['key'],_0xbfb61f['keyContent']));}else if(_0xbfb61f[_0x328c('0xe')]==='variable'&&_0xbfb61f[_0x328c('0x8')]&&_0xbfb61f[_0x328c('0xf')]){_0x8eadcf[_0xbfb61f['variableName']]&&_0x10cf3d[_0x328c('0x6')](util[_0x328c('0x10')]('%s:\x20%s',_0xbfb61f[_0x328c('0xf')],_0x8eadcf[_0xbfb61f[_0x328c('0x8')]]));}else if(_0xbfb61f[_0x328c('0xe')]===_0x328c('0x9')&&_0xbfb61f[_0x328c('0xa')]&&_0xbfb61f[_0x328c('0xa')]['name']&&_0xbfb61f['key']){_0x8eadcf[_0xbfb61f[_0x328c('0xa')][_0x328c('0xc')][_0x328c('0xb')]()]&&_0x10cf3d['push'](util['format'](_0x328c('0x11'),_0xbfb61f[_0x328c('0xf')],_0x8eadcf[_0xbfb61f['Variable']['name']['toLowerCase']()]));}}}}return _0x10cf3d[_0x328c('0x12')](_0x5a7c0e);};exports[_0x328c('0x13')]=function(_0x318a14){var _0x2952e8=_0x318a14[_0x328c('0x14')](-0x1);if(_0x2952e8==='/'){_0x318a14=_0x318a14[_0x328c('0x15')](0x0,_0x318a14[_0x328c('0x16')](_0x2952e8));}return _0x318a14;};exports['validateEmail']=function(_0x402191){if(!_['isNil'](_0x402191)&&_0x402191!==''){var _0x3bd054=/^(([^<>()\[\]\\.,;:\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 _0x3bd054[_0x328c('0x17')](String(_0x402191)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index 6a55392..1839d73 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(_0x53455f,_0x50f4df){var _0x185dae=function(_0x4e8a7c){while(--_0x4e8a7c){_0x53455f['push'](_0x53455f['shift']());}};_0x185dae(++_0x50f4df);}(_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 _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
index c8e9c67..bbfcb65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa36f=['newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','email','destcalleridname','user:%s','Zendesk\x20account\x20type\x20not\x20recognized','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','calleridnum','lastevent','\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','ioredis','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','getString','Fields','Ticket\x20created!','ticket','Getting\x20agent\x20with\x20email','type:user\x20role:agent\x20email:%s','then','count','Agent\x20found!','find','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','user','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','toString','base64','debug','[HTTP]','stringify','forEach','string','picklist','customField','includes','type','idField','push','content','variable','variableName','custom_fields','customVariable','Variable','name','toLowerCase','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json'];(function(_0x50f392,_0x1d8441){var _0x5926f2=function(_0x17df32){while(--_0x17df32){_0x50f392['push'](_0x50f392['shift']());}};_0x5926f2(++_0x1d8441);}(_0xa36f,0x161));var _0xfa36=function(_0x4287b0,_0x5e551c){_0x4287b0=_0x4287b0-0x0;var _0x1e6a1e=_0xa36f[_0x4287b0];return _0x1e6a1e;};'use strict';var _=require(_0xfa36('0x0'));var rp=require('request-promise');var md5=require(_0xfa36('0x1'));var util=require('util');var Redis=require(_0xfa36('0x2'));var intUtil=require(_0xfa36('0x3'));var config=require(_0xfa36('0x4'));var logger=require('../../../../config/logger')('zendesk');config[_0xfa36('0x5')]=_[_0xfa36('0x6')](config[_0xfa36('0x5')],{'host':_0xfa36('0x7'),'port':0x18eb});var io=require(_0xfa36('0x8'))(new Redis(config[_0xfa36('0x5')]));function emit(_0x498e89,_0xa6646d,_0xfb4f75){io['to'](_0x498e89)[_0xfa36('0x9')](_0xa6646d,_0xfb4f75);}var headers={'Content-Type':_0xfa36('0xa'),'Accept':_0xfa36('0xa')};function getTicket(_0x2b3f3a,_0x4faf13,_0x3f7fbe,_0x216b23,_0x33569f){logger[_0xfa36('0xb')](_0xfa36('0xc'));return request({'uri':util[_0xfa36('0xd')](_0xfa36('0xe'),_0x2b3f3a[_0xfa36('0xf')]),'method':_0xfa36('0x10'),'body':{'ticket':_[_0xfa36('0x11')]({'requester_id':_0x3f7fbe['id'],'submitter_id':_0x4faf13?_0x4faf13['id']:undefined,'assignee_id':_0x4faf13?_0x4faf13['id']:undefined,'tags':getTags(_0x216b23['Tags'],'name'),'subject':intUtil[_0xfa36('0x12')](_0x216b23['Subjects'],_0x33569f,'\x20'),'description':intUtil[_0xfa36('0x12')](_0x216b23['Descriptions'],_0x33569f,'\x0a'),'comment':{'public':![],'body':intUtil[_0xfa36('0x12')](_0x216b23['Descriptions'],_0x33569f,'\x0a')}},getCustomFields(_0x216b23[_0xfa36('0x13')],_0x33569f))}})['then'](function(_0x59e522){logger[_0xfa36('0xb')](_0xfa36('0x14'));return _0x59e522[_0xfa36('0x15')];});}function getUser(_0x193207,_0x489dc4){if(intUtil['validateEmail'](_0x489dc4)){logger['info'](_0xfa36('0x16'),_0x489dc4);return request({'uri':util[_0xfa36('0xd')]('%s/search.json',_0x193207[_0xfa36('0xf')]),'qs':{'query':util[_0xfa36('0xd')](_0xfa36('0x17'),_0x489dc4)}})[_0xfa36('0x18')](function(_0x5e2a64){if(_0x5e2a64[_0xfa36('0x19')]){logger[_0xfa36('0xb')](_0xfa36('0x1a'));return _[_0xfa36('0x1b')](_0x5e2a64[_0xfa36('0x1c')],{'email':_0x489dc4,'role':'agent'});}else{logger['info'](_0xfa36('0x1d'));return request({'uri':util[_0xfa36('0xd')](_0xfa36('0x1e'),_0x193207[_0xfa36('0xf')])})[_0xfa36('0x18')](function(_0x17b3c3){logger[_0xfa36('0xb')]('Admin\x20account\x20selected.');return _0x17b3c3[_0xfa36('0x1f')];});}});}else{logger[_0xfa36('0xb')](_0xfa36('0x1d'));return request({'uri':util['format'](_0xfa36('0x1e'),_0x193207[_0xfa36('0xf')])})[_0xfa36('0x18')](function(_0x1d18f3){logger[_0xfa36('0xb')]('Admin\x20account\x20selected.');return _0x1d18f3[_0xfa36('0x1f')];});}}function getEndUser(_0x170594,_0x55ef4a,_0x43d95d){logger[_0xfa36('0xb')](_0xfa36('0x20'),_0x43d95d);return request({'uri':util[_0xfa36('0xd')](_0xfa36('0x21'),_0x170594[_0xfa36('0xf')]),'qs':{'query':util[_0xfa36('0xd')](_0xfa36('0x22'),_0x43d95d)}})[_0xfa36('0x18')](function(_0x5c611a){var _0x2e85ee;if(_0x5c611a['results'][_0xfa36('0x23')]){_0x5c611a[_0xfa36('0x1c')]=_[_0xfa36('0x24')](_0x5c611a[_0xfa36('0x1c')],{'suspended':![],'role':_0xfa36('0x25')});if(_0x5c611a[_0xfa36('0x1c')][_0xfa36('0x23')]){_0x2e85ee=_[_0xfa36('0x26')](_0x5c611a[_0xfa36('0x1c')]);}}if(_0x2e85ee){logger[_0xfa36('0xb')](_0xfa36('0x27'));return _0x2e85ee;}else{logger['info'](_0xfa36('0x28'));return request({'uri':util['format'](_0xfa36('0x29'),_0x170594[_0xfa36('0xf')]),'method':_0xfa36('0x10'),'body':{'user':{'role':_0xfa36('0x25'),'name':util[_0xfa36('0xd')](_0xfa36('0x2a'),_0x55ef4a||_0x43d95d),'phone':_0x43d95d}}})[_0xfa36('0x18')](function(_0x29533b){logger['info'](_0xfa36('0x2b'));return _0x29533b[_0xfa36('0x1f')];});}});}function getAuth(_0x3a16d2){var _0x74b7af;if(_0x3a16d2[_0xfa36('0x2c')]===_0xfa36('0x2d')){_0x74b7af=util[_0xfa36('0xd')](_0xfa36('0x2e'),_0x3a16d2[_0xfa36('0x2f')],_0x3a16d2[_0xfa36('0x2d')]);}else if(_0x3a16d2[_0xfa36('0x2c')]===_0xfa36('0x30')){_0x74b7af=util['format'](_0xfa36('0x31'),_0x3a16d2[_0xfa36('0x2f')],_0x3a16d2[_0xfa36('0x30')]);}return util[_0xfa36('0xd')]('Basic\x20%s',new Buffer(_0x74b7af)[_0xfa36('0x32')](_0xfa36('0x33')));}function request(_0x2fa654){logger[_0xfa36('0x34')](_0xfa36('0x35'),JSON[_0xfa36('0x36')](_0x2fa654));return rp(_['defaults'](_0x2fa654,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x4af4e0,_0x56d93b){var _0x3b6ebc=[];if(_0x4af4e0&&_0x4af4e0[_0xfa36('0x23')]>0x0){_0x3b6ebc=_['map'](_0x4af4e0,_0x56d93b);}return _0x3b6ebc;}function getCustomFields(_0xcd5d19,_0x23a3f1){var _0x51fba7=[];var _0x5cd66b={'custom_fields':[]};if(_0xcd5d19[_0xfa36('0x23')]>0x0){_[_0xfa36('0x37')](_0xcd5d19,function(_0x2edf61){if(_['includes']([_0xfa36('0x38'),_0xfa36('0x39')],_0x2edf61['type'])&&_0x2edf61['nameField']&&!_0x2edf61[_0xfa36('0x3a')]){_0x5cd66b[_0x2edf61['nameField']['toLowerCase']()]=_0x2edf61['content'][_0xfa36('0x32')]();}else if(_[_0xfa36('0x3b')]([_0xfa36('0x38'),_0xfa36('0x39')],_0x2edf61[_0xfa36('0x3c')])&&_0x2edf61[_0xfa36('0x3d')]&&_0x2edf61[_0xfa36('0x3a')]){_0x5cd66b['custom_fields'][_0xfa36('0x3e')]({'id':_0x2edf61[_0xfa36('0x3d')],'value':_0x2edf61[_0xfa36('0x3f')][_0xfa36('0x32')]()});}else if(_0x2edf61[_0xfa36('0x3c')]===_0xfa36('0x40')&&_0x2edf61['variableName']&&_0x2edf61['idField']&&_0x2edf61[_0xfa36('0x3a')]){_0x23a3f1[_0x2edf61[_0xfa36('0x41')]]&&_0x5cd66b[_0xfa36('0x42')][_0xfa36('0x3e')]({'id':_0x2edf61[_0xfa36('0x3d')],'value':_0x23a3f1[_0x2edf61[_0xfa36('0x41')]][_0xfa36('0x32')]()});}else if(_0x2edf61[_0xfa36('0x3c')]===_0xfa36('0x43')&&_0x2edf61[_0xfa36('0x44')]&&_0x2edf61[_0xfa36('0x44')][_0xfa36('0x45')]&&_0x2edf61[_0xfa36('0x3d')]&&_0x2edf61[_0xfa36('0x3a')]){_0x23a3f1[_0x2edf61['Variable'][_0xfa36('0x45')][_0xfa36('0x46')]()]&&_0x5cd66b['custom_fields'][_0xfa36('0x3e')]({'id':_0x2edf61[_0xfa36('0x3d')],'value':_0x23a3f1[_0x2edf61['Variable'][_0xfa36('0x45')][_0xfa36('0x46')]()][_0xfa36('0x32')]()});}});}return _0x5cd66b;}exports[_0xfa36('0x47')]=function(_0x3906ff,_0x500020,_0x15fef8,_0x101877,_0x4389f8,_0x55019c){var _0x2a7eac,_0x535155;_0x55019c[_0xfa36('0xf')]=intUtil['stripTrailingSlash'](_0x55019c['remoteUri']);_0x55019c[_0xfa36('0x48')]=intUtil[_0xfa36('0x49')](_0x55019c['serverUrl']);if(_0x4389f8&&_0x4389f8[_0xfa36('0x4a')]){logger[_0xfa36('0xb')](_0xfa36('0x4b'),_0xfa36('0x4c'));_0x500020[_0xfa36('0x4d')]=util[_0xfa36('0xd')](_0xfa36('0x4e'),_0x55019c[_0xfa36('0x48')],_0x500020['uniqueid'],md5(_0x500020[_0xfa36('0x4f')]));}else{_0x500020[_0xfa36('0x4d')]='';}headers[_0xfa36('0x50')]=getAuth(_0x55019c);return getUser(_0x55019c,_0x101877['email'])[_0xfa36('0x18')](function(_0x3b2197){_0x2a7eac=_0x3b2197;logger[_0xfa36('0xb')](_0xfa36('0x51'),_0x2a7eac['id']);return getEndUser(_0x55019c,_0x500020[_0xfa36('0x52')],_0x500020['calleridnum']);})[_0xfa36('0x18')](function(_0x3f16a9){_0x535155=_0x3f16a9;logger['info'](_0xfa36('0x53'),_0x535155['id']);return getTicket(_0x55019c,_0x2a7eac,_0x535155,_0x15fef8,_0x500020);})['then'](function(_0x40796f){if(_0x40796f){logger['info'](_0xfa36('0x54'),_0x40796f['id']);switch(_0x55019c[_0xfa36('0x3c')]){case'integrationTab':logger[_0xfa36('0xb')]('[QUEUE]',_0xfa36('0x55'));return request({'uri':util[_0xfa36('0xd')](_0xfa36('0x56'),_0x55019c[_0xfa36('0xf')],_0x2a7eac['id'],_0x40796f['id']),'method':_0xfa36('0x10')});case _0xfa36('0x57'):logger['info'](_0xfa36('0x4b'),_0xfa36('0x58'));emit(util[_0xfa36('0xd')]('user:%s',_0x101877[_0xfa36('0x45')]),_0xfa36('0x59'),{'uri':util[_0xfa36('0xd')](_0xfa36('0x5a'),_0x55019c[_0xfa36('0xf')][_0xfa36('0x5b')](_0xfa36('0x5c'),''),_0x40796f['id'])});break;default:logger['error']('[QUEUE]','Zendesk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0x1e82e7){logger[_0xfa36('0x5d')](_0xfa36('0x5e'),util[_0xfa36('0x5f')](_0x1e82e7,{'showHidden':!![],'depth':null}));});};exports[_0xfa36('0x60')]=function(_0x294ce5,_0x3c3690,_0x4e8c74,_0xb90b43,_0x3193cd,_0x3fc03c,_0x31da99){var _0x236a79,_0x3ebb0a;_0x3fc03c['remoteUri']=intUtil['stripTrailingSlash'](_0x3fc03c[_0xfa36('0xf')]);_0x3fc03c[_0xfa36('0x48')]=intUtil[_0xfa36('0x49')](_0x3fc03c[_0xfa36('0x48')]);if(_0x31da99&&_0x31da99[_0xfa36('0x61')]&&_0x31da99[_0xfa36('0x61')]!==_0xfa36('0x62')){logger['info'](_0xfa36('0x63'),_0xfa36('0x4c'));_0x3c3690['recordingURL']=util[_0xfa36('0xd')](_0xfa36('0x4e'),_0x3fc03c['serverUrl'],_0x3c3690['uniqueid'],md5(_0x3c3690[_0xfa36('0x4f')]));}headers['Authorization']=getAuth(_0x3fc03c);return getUser(_0x3fc03c,_0xb90b43[_0xfa36('0x64')])[_0xfa36('0x18')](function(_0x2abef4){_0x236a79=_0x2abef4;logger[_0xfa36('0xb')](_0xfa36('0x51'),_0x236a79['id']);return getEndUser(_0x3fc03c,_0x3c3690[_0xfa36('0x65')],_0x3c3690['destcalleridnum']);})[_0xfa36('0x18')](function(_0x5eadd4){_0x3ebb0a=_0x5eadd4;logger[_0xfa36('0xb')](_0xfa36('0x53'),_0x3ebb0a['id']);return getTicket(_0x3fc03c,_0x236a79,_0x3ebb0a,_0x4e8c74,_0x3c3690);})[_0xfa36('0x18')](function(_0x45e71b){if(_0x45e71b){logger[_0xfa36('0xb')]('The\x20Ticket\x20ID\x20is:',_0x45e71b['id']);switch(_0x3fc03c[_0xfa36('0x3c')]){case'integrationTab':logger['info'](_0xfa36('0x63'),_0xfa36('0x55'));return request({'uri':util[_0xfa36('0xd')](_0xfa36('0x56'),_0x3fc03c['remoteUri'],_0x236a79['id'],_0x45e71b['id']),'method':_0xfa36('0x10')});case'newTab':logger[_0xfa36('0xb')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xfa36('0xd')](_0xfa36('0x66'),_0xb90b43[_0xfa36('0x45')]),_0xfa36('0x59'),{'uri':util[_0xfa36('0xd')](_0xfa36('0x5a'),_0x3fc03c[_0xfa36('0xf')][_0xfa36('0x5b')](_0xfa36('0x5c'),''),_0x45e71b['id'])});break;default:logger[_0xfa36('0x5d')](_0xfa36('0x63'),_0xfa36('0x67'));}}})[_0xfa36('0x68')](function(_0x549795){logger[_0xfa36('0x5d')](_0xfa36('0x69'),util['inspect'](_0x549795,{'showHidden':!![],'depth':null}));});};exports[_0xfa36('0x6a')]=function(_0x3f98a5,_0x2f7706,_0x1c3589,_0x40a973,_0x24230d,_0x41b718){var _0x3bfdba,_0x4b0fdf;_0x41b718['remoteUri']=intUtil[_0xfa36('0x49')](_0x41b718[_0xfa36('0xf')]);_0x41b718[_0xfa36('0x48')]=intUtil['stripTrailingSlash'](_0x41b718['serverUrl']);if(_0x24230d&&_0x24230d[_0xfa36('0x4a')]){logger['info']('['+_0x2f7706['lastevent']['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x2f7706[_0xfa36('0x4d')]=util['format'](_0xfa36('0x4e'),_0x41b718[_0xfa36('0x48')],_0x2f7706[_0xfa36('0x4f')],md5(_0x2f7706[_0xfa36('0x4f')]));}else{_0x2f7706[_0xfa36('0x4d')]='';}headers[_0xfa36('0x50')]=getAuth(_0x41b718);return getUser(_0x41b718)[_0xfa36('0x18')](function(_0x9353a9){_0x3bfdba=_0x9353a9;logger['info'](_0xfa36('0x51'),_0x3bfdba['id']);return getEndUser(_0x41b718,_0x2f7706[_0xfa36('0x52')],_0x2f7706[_0xfa36('0x6b')]);})[_0xfa36('0x18')](function(_0x2ac68f){_0x4b0fdf=_0x2ac68f;logger[_0xfa36('0xb')](_0xfa36('0x53'),_0x4b0fdf['id']);return getTicket(_0x41b718,_0x3bfdba,_0x4b0fdf,_0x1c3589,_0x2f7706);})['then'](function(_0x4bd876){if(_0x4bd876){logger[_0xfa36('0xb')](_0xfa36('0x54'),_0x4bd876['id']);}})[_0xfa36('0x68')](function(_0x2a0a8e){logger[_0xfa36('0x5d')]('['+_0x2f7706[_0xfa36('0x6c')]['toUpperCase']()+']'+_0xfa36('0x6d'),util[_0xfa36('0x5f')](_0x2a0a8e,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xb491=['custom_fields','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','Authorization','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','destcalleridnum','user:%s','trigger:browser:url','replace','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','then','count','find','results','agent','%s/users/me.json','Admin\x20account\x20selected.','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','password','%s:%s','username','authType','token','Basic\x20%s','base64','debug','[HTTP]','stringify','defaults','length','map','forEach','includes','string','picklist','customField','nameField','toLowerCase','type','idField','content','toString','variable','variableName'];(function(_0xa91905,_0x23f6a6){var _0x401bc8=function(_0x36b93f){while(--_0x36b93f){_0xa91905['push'](_0xa91905['shift']());}};_0x401bc8(++_0x23f6a6);}(_0xb491,0x18d));var _0x1b49=function(_0x333fed,_0x3d2122){_0x333fed=_0x333fed-0x0;var _0x12cac2=_0xb491[_0x333fed];return _0x12cac2;};'use strict';var _=require(_0x1b49('0x0'));var rp=require(_0x1b49('0x1'));var md5=require(_0x1b49('0x2'));var util=require('util');var Redis=require(_0x1b49('0x3'));var intUtil=require(_0x1b49('0x4'));var config=require(_0x1b49('0x5'));var logger=require(_0x1b49('0x6'))(_0x1b49('0x7'));config[_0x1b49('0x8')]=_['defaults'](config[_0x1b49('0x8')],{'host':_0x1b49('0x9'),'port':0x18eb});var io=require(_0x1b49('0xa'))(new Redis(config[_0x1b49('0x8')]));function emit(_0x3236bc,_0x4b37cb,_0x3620f4){io['to'](_0x3236bc)[_0x1b49('0xb')](_0x4b37cb,_0x3620f4);}var headers={'Content-Type':_0x1b49('0xc'),'Accept':_0x1b49('0xc')};function getTicket(_0x3ae2f9,_0xee792b,_0x4dd0b2,_0x33f2ec,_0x577de2){logger[_0x1b49('0xd')](_0x1b49('0xe'));return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x10'),_0x3ae2f9['remoteUri']),'method':_0x1b49('0x11'),'body':{'ticket':_[_0x1b49('0x12')]({'requester_id':_0x4dd0b2['id'],'submitter_id':_0xee792b?_0xee792b['id']:undefined,'assignee_id':_0xee792b?_0xee792b['id']:undefined,'tags':getTags(_0x33f2ec[_0x1b49('0x13')],_0x1b49('0x14')),'subject':intUtil[_0x1b49('0x15')](_0x33f2ec[_0x1b49('0x16')],_0x577de2,'\x20'),'description':intUtil[_0x1b49('0x15')](_0x33f2ec[_0x1b49('0x17')],_0x577de2,'\x0a'),'comment':{'public':![],'body':intUtil[_0x1b49('0x15')](_0x33f2ec['Descriptions'],_0x577de2,'\x0a')}},getCustomFields(_0x33f2ec[_0x1b49('0x18')],_0x577de2))}})['then'](function(_0x185173){logger[_0x1b49('0xd')](_0x1b49('0x19'));return _0x185173[_0x1b49('0x1a')];});}function getUser(_0x146580,_0x223c5f){if(intUtil[_0x1b49('0x1b')](_0x223c5f)){logger[_0x1b49('0xd')](_0x1b49('0x1c'),_0x223c5f);return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x1d'),_0x146580[_0x1b49('0x1e')]),'qs':{'query':util['format'](_0x1b49('0x1f'),_0x223c5f)}})[_0x1b49('0x20')](function(_0x340276){if(_0x340276[_0x1b49('0x21')]){logger[_0x1b49('0xd')]('Agent\x20found!');return _[_0x1b49('0x22')](_0x340276[_0x1b49('0x23')],{'email':_0x223c5f,'role':_0x1b49('0x24')});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x25'),_0x146580[_0x1b49('0x1e')])})['then'](function(_0x3b0098){logger['info'](_0x1b49('0x26'));return _0x3b0098['user'];});}});}else{logger['info'](_0x1b49('0x27'));return request({'uri':util['format'](_0x1b49('0x25'),_0x146580[_0x1b49('0x1e')])})[_0x1b49('0x20')](function(_0x479d93){logger[_0x1b49('0xd')](_0x1b49('0x26'));return _0x479d93[_0x1b49('0x28')];});}}function getEndUser(_0x5b5aed,_0x1940f3,_0x4666c0){logger[_0x1b49('0xd')](_0x1b49('0x29'),_0x4666c0);return request({'uri':util['format'](_0x1b49('0x1d'),_0x5b5aed[_0x1b49('0x1e')]),'qs':{'query':util['format'](_0x1b49('0x2a'),_0x4666c0)}})['then'](function(_0x3bf714){var _0x5bda9d;if(_0x3bf714[_0x1b49('0x23')]['length']){_0x3bf714[_0x1b49('0x23')]=_[_0x1b49('0x2b')](_0x3bf714['results'],{'suspended':![],'role':_0x1b49('0x2c')});if(_0x3bf714[_0x1b49('0x23')]['length']){_0x5bda9d=_[_0x1b49('0x2d')](_0x3bf714[_0x1b49('0x23')]);}}if(_0x5bda9d){logger[_0x1b49('0xd')](_0x1b49('0x2e'));return _0x5bda9d;}else{logger[_0x1b49('0xd')](_0x1b49('0x2f'));return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x30'),_0x5b5aed[_0x1b49('0x1e')]),'method':_0x1b49('0x11'),'body':{'user':{'role':_0x1b49('0x2c'),'name':util[_0x1b49('0xf')]('Caller\x20-\x20%s',_0x1940f3||_0x4666c0),'phone':_0x4666c0}}})[_0x1b49('0x20')](function(_0xf03aac){logger[_0x1b49('0xd')]('Enduser\x20created.');return _0xf03aac[_0x1b49('0x28')];});}});}function getAuth(_0xbec6fe){var _0x19231d;if(_0xbec6fe['authType']===_0x1b49('0x31')){_0x19231d=util[_0x1b49('0xf')](_0x1b49('0x32'),_0xbec6fe[_0x1b49('0x33')],_0xbec6fe[_0x1b49('0x31')]);}else if(_0xbec6fe[_0x1b49('0x34')]===_0x1b49('0x35')){_0x19231d=util[_0x1b49('0xf')]('%s/token:%s',_0xbec6fe['username'],_0xbec6fe[_0x1b49('0x35')]);}return util[_0x1b49('0xf')](_0x1b49('0x36'),new Buffer(_0x19231d)['toString'](_0x1b49('0x37')));}function request(_0x591099){logger[_0x1b49('0x38')](_0x1b49('0x39'),JSON[_0x1b49('0x3a')](_0x591099));return rp(_[_0x1b49('0x3b')](_0x591099,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x2b1884,_0x3fa610){var _0x34ba02=[];if(_0x2b1884&&_0x2b1884[_0x1b49('0x3c')]>0x0){_0x34ba02=_[_0x1b49('0x3d')](_0x2b1884,_0x3fa610);}return _0x34ba02;}function getCustomFields(_0x3bdad2,_0x53ffda){var _0x4f2b18=[];var _0x23666d={'custom_fields':[]};if(_0x3bdad2[_0x1b49('0x3c')]>0x0){_[_0x1b49('0x3e')](_0x3bdad2,function(_0x44d5aa){if(_[_0x1b49('0x3f')]([_0x1b49('0x40'),_0x1b49('0x41')],_0x44d5aa['type'])&&_0x44d5aa['nameField']&&!_0x44d5aa[_0x1b49('0x42')]){_0x23666d[_0x44d5aa[_0x1b49('0x43')][_0x1b49('0x44')]()]=_0x44d5aa['content']['toString']();}else if(_[_0x1b49('0x3f')]([_0x1b49('0x40'),_0x1b49('0x41')],_0x44d5aa[_0x1b49('0x45')])&&_0x44d5aa[_0x1b49('0x46')]&&_0x44d5aa[_0x1b49('0x42')]){_0x23666d['custom_fields']['push']({'id':_0x44d5aa[_0x1b49('0x46')],'value':_0x44d5aa[_0x1b49('0x47')][_0x1b49('0x48')]()});}else if(_0x44d5aa[_0x1b49('0x45')]===_0x1b49('0x49')&&_0x44d5aa[_0x1b49('0x4a')]&&_0x44d5aa[_0x1b49('0x46')]&&_0x44d5aa[_0x1b49('0x42')]){_0x53ffda[_0x44d5aa[_0x1b49('0x4a')]]&&_0x23666d[_0x1b49('0x4b')][_0x1b49('0x4c')]({'id':_0x44d5aa[_0x1b49('0x46')],'value':_0x53ffda[_0x44d5aa['variableName']]['toString']()});}else if(_0x44d5aa[_0x1b49('0x45')]===_0x1b49('0x4d')&&_0x44d5aa[_0x1b49('0x4e')]&&_0x44d5aa['Variable'][_0x1b49('0x14')]&&_0x44d5aa[_0x1b49('0x46')]&&_0x44d5aa['customField']){_0x53ffda[_0x44d5aa['Variable']['name']['toLowerCase']()]&&_0x23666d[_0x1b49('0x4b')][_0x1b49('0x4c')]({'id':_0x44d5aa[_0x1b49('0x46')],'value':_0x53ffda[_0x44d5aa[_0x1b49('0x4e')][_0x1b49('0x14')][_0x1b49('0x44')]()][_0x1b49('0x48')]()});}});}return _0x23666d;}exports[_0x1b49('0x4f')]=function(_0x401b31,_0xa07620,_0x1c0b33,_0x507f7e,_0x2f99f6,_0x58d010){var _0x3f78cd,_0x1b421a;_0x58d010['remoteUri']=intUtil[_0x1b49('0x50')](_0x58d010[_0x1b49('0x1e')]);_0x58d010[_0x1b49('0x51')]=intUtil[_0x1b49('0x50')](_0x58d010['serverUrl']);if(_0x2f99f6&&_0x2f99f6[_0x1b49('0x52')]){logger[_0x1b49('0xd')](_0x1b49('0x53'),_0x1b49('0x54'));_0xa07620[_0x1b49('0x55')]=util[_0x1b49('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x58d010[_0x1b49('0x51')],_0xa07620['uniqueid'],md5(_0xa07620['uniqueid']));}else{_0xa07620[_0x1b49('0x55')]='';}headers[_0x1b49('0x56')]=getAuth(_0x58d010);return getUser(_0x58d010,_0x507f7e['email'])[_0x1b49('0x20')](function(_0x5ab56b){_0x3f78cd=_0x5ab56b;logger[_0x1b49('0xd')](_0x1b49('0x57'),_0x3f78cd['id']);return getEndUser(_0x58d010,_0xa07620[_0x1b49('0x58')],_0xa07620[_0x1b49('0x59')]);})[_0x1b49('0x20')](function(_0x1bf710){_0x1b421a=_0x1bf710;logger[_0x1b49('0xd')](_0x1b49('0x5a'),_0x1b421a['id']);return getTicket(_0x58d010,_0x3f78cd,_0x1b421a,_0x1c0b33,_0xa07620);})['then'](function(_0x225c3c){if(_0x225c3c){logger[_0x1b49('0xd')]('The\x20Ticket\x20ID\x20is:',_0x225c3c['id']);switch(_0x58d010[_0x1b49('0x45')]){case _0x1b49('0x5b'):logger['info'](_0x1b49('0x53'),_0x1b49('0x5c'));return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x5d'),_0x58d010[_0x1b49('0x1e')],_0x3f78cd['id'],_0x225c3c['id']),'method':'POST'});case _0x1b49('0x5e'):logger[_0x1b49('0xd')]('[QUEUE]',_0x1b49('0x5f'));emit(util[_0x1b49('0xf')]('user:%s',_0x507f7e[_0x1b49('0x14')]),'trigger:browser:url',{'uri':util[_0x1b49('0xf')](_0x1b49('0x60'),_0x58d010['remoteUri']['replace']('/api/v2',''),_0x225c3c['id'])});break;default:logger[_0x1b49('0x61')]('[QUEUE]',_0x1b49('0x62'));}}})[_0x1b49('0x63')](function(_0x4285c8){logger[_0x1b49('0x61')](_0x1b49('0x64'),util[_0x1b49('0x65')](_0x4285c8,{'showHidden':!![],'depth':null}));});};exports[_0x1b49('0x66')]=function(_0xa7fe17,_0x34977c,_0x474bc7,_0x391e09,_0x433007,_0x39341d,_0x13b730){var _0x1d2243,_0x4a8e41;_0x39341d[_0x1b49('0x1e')]=intUtil[_0x1b49('0x50')](_0x39341d[_0x1b49('0x1e')]);_0x39341d[_0x1b49('0x51')]=intUtil[_0x1b49('0x50')](_0x39341d['serverUrl']);if(_0x13b730&&_0x13b730['recordingFormat']&&_0x13b730[_0x1b49('0x67')]!==_0x1b49('0x68')){logger['info'](_0x1b49('0x69'),_0x1b49('0x54'));_0x34977c[_0x1b49('0x55')]=util[_0x1b49('0xf')](_0x1b49('0x6a'),_0x39341d['serverUrl'],_0x34977c[_0x1b49('0x6b')],md5(_0x34977c[_0x1b49('0x6b')]));}headers['Authorization']=getAuth(_0x39341d);return getUser(_0x39341d,_0x391e09[_0x1b49('0x6c')])['then'](function(_0x199e9e){_0x1d2243=_0x199e9e;logger['info'](_0x1b49('0x57'),_0x1d2243['id']);return getEndUser(_0x39341d,_0x34977c['destcalleridname'],_0x34977c[_0x1b49('0x6d')]);})[_0x1b49('0x20')](function(_0x4f077f){_0x4a8e41=_0x4f077f;logger['info']('The\x20Enduser\x20ID\x20is:',_0x4a8e41['id']);return getTicket(_0x39341d,_0x1d2243,_0x4a8e41,_0x474bc7,_0x34977c);})[_0x1b49('0x20')](function(_0x11613f){if(_0x11613f){logger[_0x1b49('0xd')]('The\x20Ticket\x20ID\x20is:',_0x11613f['id']);switch(_0x39341d[_0x1b49('0x45')]){case _0x1b49('0x5b'):logger[_0x1b49('0xd')]('[OUTBOUND]',_0x1b49('0x5c'));return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x5d'),_0x39341d[_0x1b49('0x1e')],_0x1d2243['id'],_0x11613f['id']),'method':_0x1b49('0x11')});case _0x1b49('0x5e'):logger[_0x1b49('0xd')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x1b49('0xf')](_0x1b49('0x6e'),_0x391e09[_0x1b49('0x14')]),_0x1b49('0x6f'),{'uri':util[_0x1b49('0xf')](_0x1b49('0x60'),_0x39341d[_0x1b49('0x1e')][_0x1b49('0x70')]('/api/v2',''),_0x11613f['id'])});break;default:logger[_0x1b49('0x61')](_0x1b49('0x69'),_0x1b49('0x62'));}}})[_0x1b49('0x63')](function(_0x347a9f){logger[_0x1b49('0x61')](_0x1b49('0x71'),util[_0x1b49('0x65')](_0x347a9f,{'showHidden':!![],'depth':null}));});};exports[_0x1b49('0x72')]=function(_0x5d3ed7,_0x4ecd77,_0x8371ff,_0x468482,_0x479947,_0x50e1e6){var _0x14a050,_0x1f223c;_0x50e1e6['remoteUri']=intUtil[_0x1b49('0x50')](_0x50e1e6[_0x1b49('0x1e')]);_0x50e1e6[_0x1b49('0x51')]=intUtil[_0x1b49('0x50')](_0x50e1e6[_0x1b49('0x51')]);if(_0x479947&&_0x479947[_0x1b49('0x52')]){logger[_0x1b49('0xd')]('['+_0x4ecd77[_0x1b49('0x73')][_0x1b49('0x74')]()+']',_0x1b49('0x54'));_0x4ecd77[_0x1b49('0x55')]=util[_0x1b49('0xf')](_0x1b49('0x6a'),_0x50e1e6[_0x1b49('0x51')],_0x4ecd77[_0x1b49('0x6b')],md5(_0x4ecd77['uniqueid']));}else{_0x4ecd77[_0x1b49('0x55')]='';}headers[_0x1b49('0x56')]=getAuth(_0x50e1e6);return getUser(_0x50e1e6)['then'](function(_0x52445c){_0x14a050=_0x52445c;logger['info']('The\x20User\x20ID\x20is:',_0x14a050['id']);return getEndUser(_0x50e1e6,_0x4ecd77['calleridname'],_0x4ecd77[_0x1b49('0x59')]);})['then'](function(_0x19b193){_0x1f223c=_0x19b193;logger[_0x1b49('0xd')](_0x1b49('0x5a'),_0x1f223c['id']);return getTicket(_0x50e1e6,_0x14a050,_0x1f223c,_0x8371ff,_0x4ecd77);})[_0x1b49('0x20')](function(_0x4996ea){if(_0x4996ea){logger['info']('The\x20Ticket\x20ID\x20is:',_0x4996ea['id']);}})[_0x1b49('0x63')](function(_0x377abe){logger[_0x1b49('0x61')]('['+_0x4ecd77[_0x1b49('0x73')][_0x1b49('0x74')]()+']'+_0x1b49('0x75'),util['inspect'](_0x377abe,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 70036eb..4051834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16b7=['trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','destcalleridname','Outbound','unmanaged','request-promise','md5','util','./util','ioredis','bluebird','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','length','forEach','includes','string','picklist','type','idField','variable','variableName','toString','customVariable','Variable','name','toLowerCase','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','clientSecret','then','add','seconds','catch','stack','info','Search\x20user','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','isArrayLikeObject','users','findIndex','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','error','The\x20failing\x20result\x20is','stringify','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','startCase','role','first_name','last_name','code','SUCCESS','details','moduleCreate','Error:\x20','log','CREATE\x20ERROR','GET','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','lead','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Subjects','Description','Descriptions','Who_Id','Full_Name','Last_Name','What_Id','First_Name','$se_module','utc','format','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','Called','complete','connect','Answered','Rejected','abandoned','Abandoned','timeout','Timeout','outbound','agentcalledAt','Call_Type','Inbound','merge','Fields','err','queue','stripTrailingSlash','host','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','/downloads?type=uniqueid&token=','uniqueid','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s'];(function(_0x59dccc,_0x184c1c){var _0xc97bcb=function(_0x1ddbcb){while(--_0x1ddbcb){_0x59dccc['push'](_0x59dccc['shift']());}};_0xc97bcb(++_0x184c1c);}(_0x16b7,0x1e0));var _0x716b=function(_0x5e8eeb,_0x1eacfd){_0x5e8eeb=_0x5e8eeb-0x0;var _0x1815b8=_0x16b7[_0x5e8eeb];return _0x1815b8;};'use strict';var _=require('lodash');var rp=require(_0x716b('0x0'));var md5=require(_0x716b('0x1'));var util=require(_0x716b('0x2'));var intUtil=require(_0x716b('0x3'));var moment=require('moment');var Redis=require(_0x716b('0x4'));var BPromise=require(_0x716b('0x5'));var config=require('../../../../config/environment');var logger=require(_0x716b('0x6'))(_0x716b('0x7'));config[_0x716b('0x8')]=_[_0x716b('0x9')](config[_0x716b('0x8')],{'host':_0x716b('0xa'),'port':0x18eb});var io=require(_0x716b('0xb'))(new Redis(config['redis']));function emit(_0x4747c0,_0x3cfecd,_0x584e0f){io['to'](_0x4747c0)[_0x716b('0xc')](_0x3cfecd,_0x584e0f);}function request(_0x30aa76){logger[_0x716b('0xd')](_0x716b('0xe'),JSON['stringify'](_0x30aa76));return rp(_0x30aa76);}function getCustomFields(_0x5632ca,_0x419c14){var _0xf86d6={};if(_0x5632ca[_0x716b('0xf')]>0x0){_[_0x716b('0x10')](_0x5632ca,function(_0x45b166){if(_[_0x716b('0x11')]([_0x716b('0x12'),_0x716b('0x13')],_0x45b166[_0x716b('0x14')])&&_0x45b166[_0x716b('0x15')]){_0xf86d6[_0x45b166[_0x716b('0x15')]]=_0x45b166['content']['toString']();}else if(_0x45b166[_0x716b('0x14')]===_0x716b('0x16')&&_0x45b166[_0x716b('0x17')]&&_0x45b166[_0x716b('0x15')]&&_0x419c14[_0x45b166['variableName']]){_0xf86d6[_0x45b166[_0x716b('0x15')]]=_0x419c14[_0x45b166['variableName']][_0x716b('0x18')]();}else if(_0x45b166[_0x716b('0x14')]===_0x716b('0x19')&&_0x45b166['Variable']&&_0x45b166[_0x716b('0x1a')][_0x716b('0x1b')]&&_0x45b166[_0x716b('0x15')]&&_0x419c14[_0x45b166['Variable'][_0x716b('0x1b')][_0x716b('0x1c')]()]){_0xf86d6[_0x45b166['idField']]=_0x419c14[_0x45b166[_0x716b('0x1a')]['name']['toLowerCase']()]['toString']();}});}return _0xf86d6;}function getName(_0x58f099){if(_0x58f099['indexOf']('\x20')>0x0){var _0xd97aa8=_0x58f099[_0x716b('0x1d')](/ (.+)/);if(_0xd97aa8[0x1]){return _0xd97aa8;}}return[_0x58f099,_0x58f099];}var accountsTokens={};function getAccessToken(_0x25cb1e){return new Promise(function(_0x7784b3,_0x5515a4){if(!_[_0x716b('0x1e')](accountsTokens[_0x25cb1e['id']])&&!_[_0x716b('0x1e')](accountsTokens[_0x25cb1e['id']][_0x716b('0x1f')])){if(moment()[_0x716b('0x20')](accountsTokens[_0x25cb1e['id']][_0x716b('0x21')])){_0x7784b3(accountsTokens[_0x25cb1e['id']][_0x716b('0x1f')]);}}var _0x463d64;switch(_0x25cb1e[_0x716b('0x22')]){case'US':_0x463d64=_0x716b('0x23');break;case'AU':_0x463d64='https://accounts.zoho.com.au';break;case'EU':_0x463d64=_0x716b('0x24');break;case'IN':_0x463d64=_0x716b('0x25');break;case'CN':_0x463d64=_0x716b('0x26');break;default:_0x463d64=_0x716b('0x24');break;}var _0xe5ab9e={'method':_0x716b('0x27'),'uri':_0x463d64+'/oauth/v2/token','qs':{'refresh_token':_0x25cb1e[_0x716b('0x28')],'client_id':_0x25cb1e[_0x716b('0x29')],'client_secret':_0x25cb1e[_0x716b('0x2a')],'grant_type':'refresh_token'},'json':!![]};return rp(_0xe5ab9e)[_0x716b('0x2b')](function(_0x11c0cb){accountsTokens[_0x25cb1e['id']]={'access_token':_0x11c0cb[_0x716b('0x1f')],'expires_in':moment()[_0x716b('0x2c')](_0x11c0cb[_0x716b('0x21')],_0x716b('0x2d'))};_0x7784b3(_0x11c0cb[_0x716b('0x1f')]);})[_0x716b('0x2e')](function(_0x533dbf){logger['error']('Failing\x20creating\x20the\x20access_token',_0x533dbf[_0x716b('0x2f')]);_0x5515a4(_0x533dbf);});});}function getUser(_0x5d3a3f,_0x1cdd0d,_0x2dd8c3,_0x5753fe){logger[_0x716b('0x30')](_0x716b('0x31'));return request({'method':'GET','uri':util['format'](_0x716b('0x32'),_0x1cdd0d),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x716b('0x33')+_0x5d3a3f},'json':!![]})[_0x716b('0x2b')](function(_0x482379){if(_0x482379['users']){var _0x5ca0c7=-0x1;if(_[_0x716b('0x34')](_0x482379[_0x716b('0x35')])){if(!_[_0x716b('0x1e')](_0x5753fe)){_0x5ca0c7=_[_0x716b('0x36')](_0x482379[_0x716b('0x35')],function(_0x3001ef){return _0x3001ef['email']===_0x5753fe;});}if(_0x5ca0c7>=0x0){logger[_0x716b('0x30')](_0x716b('0x37'));}else{logger[_0x716b('0x30')](_0x716b('0x38'));_0x5ca0c7=_[_0x716b('0x36')](_0x482379[_0x716b('0x35')],function(_0xd041ca){return _0xd041ca[_0x716b('0x39')][_0x716b('0x1b')]===_0x716b('0x3a');});}return _0x482379[_0x716b('0x35')][_0x5ca0c7];}else{if(_0x482379[_0x716b('0x3b')][_0x716b('0x39')][_0x716b('0x1b')]===_0x716b('0x3a')){logger['info']('Using\x20the\x20admin\x20account!');user=_0x482379[_0x716b('0x3b')];return user;}else{logger[_0x716b('0x3c')](_0x716b('0x3d'),JSON[_0x716b('0x3e')](_0x482379));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x716b('0x3e')](_0x482379));}}}else{logger[_0x716b('0x3c')]('The\x20failing\x20result\x20is',JSON['stringify'](_0x482379));throw new Error(_0x716b('0x3f')+JSON[_0x716b('0x3e')](_0x482379));}})[_0x716b('0x2e')](function(_0x4be649){console[_0x716b('0x3c')](_0x4be649);});}function getZohoUser(_0xf3e0c3,_0x14c5f1){return new BPromise(function(_0x475849,_0x5c86eb){request(_0xf3e0c3)['then'](function(_0x54c11a){var _0x2017f9=null;if(_0x54c11a){_0x2017f9=_0x54c11a[_0x716b('0x40')][0x0];_0x2017f9[_0x716b('0x41')]=_0x14c5f1;}_0x475849(_0x2017f9);})[_0x716b('0x2e')](function(_0x56b925){_0x5c86eb(_0x56b925);});});}function createEndUser(_0x256ddc,_0x4263c8,_0x288472,_0x4a994e,_0x2ff0f8,_0x3fee82){var _0x288472=getName(_0x288472);return request({'method':'POST','uri':_0x716b('0x42')+_0x4263c8+'/crm/v2/'+_[_0x716b('0x43')](_0x3fee82['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x288472[0x1],'First_Name':_0x288472[0x0],'Phone':_0x4a994e,'Owner':{'name':!_[_0x716b('0x1e')](_0x2ff0f8[_0x716b('0x44')][_0x716b('0x1b')])?_0x2ff0f8[_0x716b('0x44')][_0x716b('0x1b')]:!_[_0x716b('0x1e')](_0x2ff0f8[_0x716b('0x45')])?_0x2ff0f8[_0x716b('0x45')]+'\x20'+_0x2ff0f8[_0x716b('0x46')]:_0x2ff0f8['last_name'],'id':_0x2ff0f8['id']}}]},'headers':{'Authorization':_0x716b('0x33')+_0x256ddc},'json':!![]})['then'](function(_0x1c8152){if(_0x1c8152&&_0x1c8152[_0x716b('0x40')][0x0][_0x716b('0x47')]===_0x716b('0x48')){var _0x1cdc3a=_0x1c8152[_0x716b('0x40')][0x0][_0x716b('0x49')];_0x1cdc3a[_0x716b('0x41')]=_[_0x716b('0x43')](_0x3fee82[_0x716b('0x4a')])+'s';return _0x1cdc3a;}logger[_0x716b('0x3c')](_0x716b('0x3d'),JSON[_0x716b('0x3e')](data));throw new Error(_0x716b('0x4b')+JSON[_0x716b('0x3e')](data));})['catch'](function(_0x1fd5f8){console[_0x716b('0x4c')](_0x716b('0x4d'),_0x1fd5f8);});}function getEndUser(_0xbc3bc0,_0x1a1f59,_0x2ddd78,_0x277512,_0x58a50a,_0x1fa9a8,_0x508c39){var _0x12d5bb={'method':_0x716b('0x4e'),'uri':'','headers':{'Authorization':_0x716b('0x33')+_0xbc3bc0},'json':!![]};switch(_0x508c39[_0x716b('0x4f')]){case _0x716b('0x50'):_0x12d5bb[_0x716b('0x51')]=_0x716b('0x42')+_0x1a1f59+_0x716b('0x52')+_0x58a50a+'))';return getZohoUser(_0x12d5bb,_0x716b('0x53'))[_0x716b('0x2b')](function(_0x3fbe37){if(_0x3fbe37)return _0x3fbe37;_0x12d5bb[_0x716b('0x51')]='https://www.zohoapis.'+_0x1a1f59+_0x716b('0x54')+_0x58a50a+'))';return getZohoUser(_0x12d5bb,_0x716b('0x55'))[_0x716b('0x2b')](function(_0x26751f){if(_0x26751f)return _0x26751f;if(_0x508c39[_0x716b('0x4a')]!='nothing'){return createEndUser(_0xbc3bc0,_0x1a1f59,_0x277512,_0x58a50a,_0x1fa9a8,_0x508c39);}else{return{};}});});break;case'contact':_0x12d5bb[_0x716b('0x51')]='https://www.zohoapis.'+_0x1a1f59+_0x716b('0x52')+_0x58a50a+'))';return getZohoUser(_0x12d5bb,'Contacts')[_0x716b('0x2b')](function(_0x2ee3b9){if(_0x2ee3b9)return _0x2ee3b9;if(_0x508c39[_0x716b('0x4a')]!=_0x716b('0x56')){return createEndUser(_0xbc3bc0,_0x1a1f59,_0x277512,_0x58a50a,_0x1fa9a8,_0x508c39);}else{return{};}});break;case _0x716b('0x57'):_0x12d5bb[_0x716b('0x51')]=_0x716b('0x42')+_0x1a1f59+_0x716b('0x54')+_0x58a50a+'))';return getZohoUser(_0x12d5bb,'Leads')['then'](function(_0x1f9377){if(_0x1f9377)return _0x1f9377;if(_0x508c39[_0x716b('0x4a')]!=_0x716b('0x56')){return createEndUser(_0xbc3bc0,_0x1a1f59,_0x277512,_0x58a50a,_0x1fa9a8,_0x508c39);}else{return{};}});break;}}function getCall(_0x3f3502,_0x4f869c,_0x13c98f,_0x2dba80,_0x34de96,_0x3f55bb,_0x4990ce,_0x47d3c5){logger[_0x716b('0x30')](_0x716b('0x58'));var _0x7e51ff={};_0x7e51ff[_0x716b('0x59')]={'name':!_[_0x716b('0x1e')](_0x2dba80['role'][_0x716b('0x1b')])&&!_[_0x716b('0x1e')](_0x2dba80['profile'][_0x716b('0x1b')])&&_0x2dba80[_0x716b('0x39')][_0x716b('0x1b')]===_0x716b('0x5a')?_0x2dba80[_0x716b('0x44')][_0x716b('0x1b')]:!_['isNil'](_0x2dba80[_0x716b('0x45')])?_0x2dba80[_0x716b('0x45')]+'\x20'+_0x2dba80[_0x716b('0x46')]:_0x2dba80[_0x716b('0x46')],'id':_0x2dba80['id']};_0x7e51ff[_0x716b('0x5b')]=intUtil[_0x716b('0x5c')](_0x3f55bb[_0x716b('0x5d')],_0x4990ce,'\x20');_0x7e51ff[_0x716b('0x5e')]=intUtil[_0x716b('0x5c')](_0x3f55bb[_0x716b('0x5f')],_0x4990ce,'\x0a');if(_0x34de96[_0x716b('0x41')]===_0x716b('0x53')){_0x7e51ff[_0x716b('0x60')]={'name':!_[_0x716b('0x1e')](_0x34de96[_0x716b('0x61')])?_0x34de96['Full_Name']:!_['isNil'](_0x34de96['First_Name'])?_0x34de96['First_Name']+'\x20'+_0x34de96[_0x716b('0x62')]:_0x34de96[_0x716b('0x62')],'id':_0x34de96['id']};}if(_0x34de96[_0x716b('0x41')]===_0x716b('0x55')){_0x7e51ff[_0x716b('0x63')]={'name':!_[_0x716b('0x1e')](_0x34de96[_0x716b('0x61')])?_0x34de96[_0x716b('0x61')]:!_['isNil'](_0x34de96['First_Name'])?_0x34de96[_0x716b('0x64')]+'\x20'+_0x34de96[_0x716b('0x62')]:_0x34de96[_0x716b('0x62')],'id':_0x34de96['id']};_0x7e51ff[_0x716b('0x65')]=_[_0x716b('0x43')](_0x34de96['enduserType']);}if(_0x4990ce['talktime']){_0x7e51ff['Call_Duration']=moment[_0x716b('0x66')](parseInt(_0x4990ce['talktime'])*0x3e8)[_0x716b('0x67')](_0x716b('0x68'));}else if(_0x4990ce[_0x716b('0x69')]&&_0x4990ce[_0x716b('0x6a')]){_0x7e51ff['Call_Duration']=moment['utc'](moment(_0x4990ce[_0x716b('0x6a')],_0x716b('0x6b'))[_0x716b('0x6c')](moment(_0x4990ce[_0x716b('0x6d')],_0x716b('0x6b'))))[_0x716b('0x67')](_0x716b('0x68'));}switch(_0x4990ce[_0x716b('0x6e')]){case _0x716b('0x6f'):_0x7e51ff[_0x716b('0x70')]=_0x716b('0x71');break;case _0x716b('0x72'):case _0x716b('0x73'):_0x7e51ff[_0x716b('0x70')]=_0x716b('0x74');break;case'rejected':_0x7e51ff['Call_Result']=_0x716b('0x75');break;case _0x716b('0x76'):_0x7e51ff['Call_Result']=_0x716b('0x77');break;case _0x716b('0x78'):_0x7e51ff[_0x716b('0x70')]=_0x716b('0x79');default:}_0x7e51ff['Call_Start_Time']=(_0x47d3c5===_0x716b('0x7a')?moment(_0x4990ce[_0x716b('0x6d')])[_0x716b('0x67')](_0x716b('0x6b')):moment(_0x4990ce[_0x716b('0x7b')])[_0x716b('0x67')](_0x716b('0x6b')))||moment()[_0x716b('0x67')](_0x716b('0x6b'));_0x7e51ff[_0x716b('0x7c')]=_0x47d3c5||_0x716b('0x7d');_0x7e51ff=_[_0x716b('0x7e')](_0x7e51ff,getCustomFields(_0x3f55bb[_0x716b('0x7f')],_0x4990ce));return request({'method':_0x716b('0x27'),'uri':_0x716b('0x42')+_0x4f869c+'/crm/v2/Calls','headers':{'Authorization':_0x716b('0x33')+_0x3f3502},'body':{'data':[_0x7e51ff]},'json':!![]})[_0x716b('0x2b')](function(_0x3a23e2){if(_0x3a23e2&&_0x3a23e2[_0x716b('0x40')][0x0][_0x716b('0x47')]===_0x716b('0x48')){logger[_0x716b('0x30')]('Call\x20created!');return{'id':_0x3a23e2['data'][0x0]['details']['id']};}})['catch'](function(_0x1c23d7){logger[_0x716b('0x30')](_0x716b('0x80'),_0x1c23d7[_0x716b('0x2f')]);console['log'](_0x716b('0x80'),_0x1c23d7);});}exports[_0x716b('0x81')]=function(_0x483663,_0x27df1c,_0x511410,_0x531944,_0x4a74a1,_0x3b8774){var _0xfe3861,_0x5c5696,_0x4d1279;_0x3b8774['host']=intUtil[_0x716b('0x82')](_0x3b8774[_0x716b('0x83')]);_0x3b8774[_0x716b('0x84')]=intUtil[_0x716b('0x82')](_0x3b8774['serverUrl']);if(_0x4a74a1&&_0x4a74a1[_0x716b('0x85')]){logger[_0x716b('0x30')](_0x716b('0x86'),_0x716b('0x87'));_0x27df1c[_0x716b('0x88')]=_0x3b8774['serverUrl']+_0x716b('0x89')+_0x27df1c['uniqueid']+_0x716b('0x8a')+md5(_0x27df1c[_0x716b('0x8b')]);}else{_0x27df1c[_0x716b('0x88')]='';}var _0x3ff3a3=_0x3b8774[_0x716b('0x83')]===_0x716b('0x8c')?'eu':_0x716b('0x8d');return getAccessToken(_0x3b8774)['then'](function(_0x3443b3){_0x4d1279=_0x3443b3;return getUser(_0x4d1279,_0x3ff3a3,_0x3b8774,_0x531944['email']);})['then'](function(_0x270b9b){_0xfe3861=_0x270b9b;logger[_0x716b('0x30')](_0x716b('0x8e'),_0xfe3861['id']);return getEndUser(_0x4d1279,_0x3ff3a3,_0x3b8774,_0x27df1c[_0x716b('0x8f')],_0x27df1c[_0x716b('0x90')],_0xfe3861,_0x511410);})['then'](function(_0x7fc1b4){_0x5c5696=_0x7fc1b4;return getCall(_0x4d1279,_0x3ff3a3,_0x3b8774,_0xfe3861,_0x5c5696,_0x511410,_0x27df1c,_0x716b('0x7d'));})[_0x716b('0x2b')](function(_0x10c9d1){if(_0x10c9d1){logger[_0x716b('0x30')](_0x716b('0x91'),_0x10c9d1['id']);logger[_0x716b('0x30')](_0x716b('0x86'),_0x716b('0x92'));emit(util[_0x716b('0x67')](_0x716b('0x93'),_0x531944[_0x716b('0x1b')]),_0x716b('0x94'),{'uri':_0x716b('0x95')+_0x3b8774[_0x716b('0x83')]+_0x716b('0x96')+_0x10c9d1['id']});}})[_0x716b('0x2e')](function(_0x352eab){logger[_0x716b('0x3c')](_0x716b('0x86'),JSON[_0x716b('0x3e')](_0x352eab));});};exports[_0x716b('0x7a')]=function(_0x19b490,_0x1d771c,_0x551a60,_0x54596f,_0x1d3f2d,_0x381dc9,_0x500419){var _0x3be73f,_0x36a30a,_0x4cd4f9;_0x381dc9[_0x716b('0x83')]=intUtil[_0x716b('0x82')](_0x381dc9[_0x716b('0x83')]);_0x381dc9[_0x716b('0x84')]=intUtil['stripTrailingSlash'](_0x381dc9[_0x716b('0x84')]);if(_0x500419&&_0x500419['recordingFormat']&&_0x500419[_0x716b('0x97')]!==_0x716b('0x98')){logger[_0x716b('0x30')](_0x716b('0x99'),_0x716b('0x87'));_0x1d771c[_0x716b('0x88')]=_0x381dc9[_0x716b('0x84')]+_0x716b('0x89')+_0x1d771c['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x1d771c[_0x716b('0x8b')]);}var _0x14c6f4=_0x381dc9[_0x716b('0x83')]===_0x716b('0x8c')?'eu':_0x716b('0x8d');return getAccessToken(_0x381dc9)[_0x716b('0x2b')](function(_0x4fb4d6){_0x4cd4f9=_0x4fb4d6;return getUser(_0x4cd4f9,_0x14c6f4,_0x381dc9,_0x54596f['email']);})['then'](function(_0x330855){_0x3be73f=_0x330855;logger[_0x716b('0x30')](_0x716b('0x8e'),_0x3be73f['id']);return getEndUser(_0x4cd4f9,_0x14c6f4,_0x381dc9,_0x1d771c[_0x716b('0x9a')],_0x1d771c['destcalleridnum'],_0x3be73f,_0x551a60);})[_0x716b('0x2b')](function(_0x364d13){_0x36a30a=_0x364d13;return getCall(_0x4cd4f9,_0x14c6f4,_0x381dc9,_0x3be73f,_0x36a30a,_0x551a60,_0x1d771c,_0x716b('0x9b'));})['then'](function(_0x1f526e){if(_0x1f526e){logger[_0x716b('0x30')](_0x716b('0x91'),_0x1f526e['id']);logger['info'](_0x716b('0x99'),_0x716b('0x92'));emit(util[_0x716b('0x67')](_0x716b('0x93'),_0x54596f[_0x716b('0x1b')]),_0x716b('0x94'),{'uri':_0x716b('0x95')+_0x381dc9[_0x716b('0x83')]+_0x716b('0x96')+_0x1f526e['id']});}})[_0x716b('0x2e')](function(_0xa06de2){logger['error']('[OUTBOUND]',JSON[_0x716b('0x3e')](_0xa06de2));});};exports[_0x716b('0x9c')]=function(_0x368bf3,_0x16ddb4,_0x4c4191,_0x4fd08f,_0x138aef,_0x2296b3){var _0xf81cbc,_0x4e3a17,_0x48ef9c;_0x2296b3[_0x716b('0x83')]=intUtil[_0x716b('0x82')](_0x2296b3['host']);_0x2296b3['serverUrl']=intUtil[_0x716b('0x82')](_0x2296b3[_0x716b('0x84')]);if(_0x138aef&&_0x138aef[_0x716b('0x85')]){logger[_0x716b('0x30')]('['+_0x16ddb4[_0x716b('0x6e')]['toUpperCase']()+']',_0x716b('0x87'));_0x16ddb4['recordingURL']=_0x2296b3[_0x716b('0x84')]+'/api/voice/recordings/'+_0x16ddb4[_0x716b('0x8b')]+_0x716b('0x8a')+md5(_0x16ddb4[_0x716b('0x8b')]);}else{_0x16ddb4['recordingURL']='';}var _0x25ba92=_0x2296b3[_0x716b('0x83')]===_0x716b('0x8c')?'eu':'com';return getAccessToken(_0x2296b3)[_0x716b('0x2b')](function(_0x159c1a){_0x48ef9c=_0x159c1a;return getUser(_0x48ef9c,_0x25ba92,_0x2296b3);})[_0x716b('0x2b')](function(_0x10b8f2){_0xf81cbc=_0x10b8f2;logger['info'](_0x716b('0x8e'),_0xf81cbc['id']);return getEndUser(_0x48ef9c,_0x25ba92,_0x2296b3,_0x16ddb4['calleridname'],_0x16ddb4[_0x716b('0x90')],_0xf81cbc,_0x4c4191);})[_0x716b('0x2b')](function(_0x27747a){_0x4e3a17=_0x27747a;return getCall(_0x48ef9c,_0x25ba92,_0x2296b3,_0xf81cbc,_0x4e3a17,_0x4c4191,_0x16ddb4,'Inbound');})[_0x716b('0x2b')](function(_0x410767){if(_0x410767){logger[_0x716b('0x30')](_0x716b('0x91'),_0x410767['id']);}})[_0x716b('0x2e')](function(_0x511e91){logger[_0x716b('0x3c')]('['+_0x16ddb4[_0x716b('0x6e')]['toUpperCase']()+']',JSON[_0x716b('0x3e')](_0x511e91));});};
\ No newline at end of file
+var _0x9406=['queue','stripTrailingSlash','host','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','serverUrl','/api/voice/recordings/','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','[OUTBOUND]','com','destcalleridname','destcalleridnum','Outbound','trigger:browser:url','unmanaged','toUpperCase','md5','util','moment','ioredis','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','length','forEach','includes','picklist','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.eu','POST','/oauth/v2/token','clientId','clientSecret','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','/crm/v2/','role','first_name','last_name','code','details','startCase','moduleCreate','Error:\x20','log','CREATE\x20ERROR','contact_lead','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','nothing','contact','lead','administrator','Subject','getString','Who_Id','Full_Name','First_Name','Last_Name','Leads','What_Id','Call_Duration','utc','talktime','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','starttime','lastevent','Call_Result','Called','complete','connect','rejected','Rejected','abandoned','Abandoned','timeout','Timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','merge','/crm/v2/Calls','SUCCESS','Call\x20created!','err'];(function(_0x4da300,_0x558d4d){var _0x347a48=function(_0x3fc0f0){while(--_0x3fc0f0){_0x4da300['push'](_0x4da300['shift']());}};_0x347a48(++_0x558d4d);}(_0x9406,0x14b));var _0x6940=function(_0x242d17,_0x30a922){_0x242d17=_0x242d17-0x0;var _0x501a6d=_0x9406[_0x242d17];return _0x501a6d;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x6940('0x0'));var util=require(_0x6940('0x1'));var intUtil=require('./util');var moment=require(_0x6940('0x2'));var Redis=require(_0x6940('0x3'));var BPromise=require('bluebird');var config=require('../../../../config/environment');var logger=require(_0x6940('0x4'))(_0x6940('0x5'));config[_0x6940('0x6')]=_[_0x6940('0x7')](config[_0x6940('0x6')],{'host':_0x6940('0x8'),'port':0x18eb});var io=require(_0x6940('0x9'))(new Redis(config[_0x6940('0x6')]));function emit(_0x187340,_0x482d5b,_0x14b378){io['to'](_0x187340)[_0x6940('0xa')](_0x482d5b,_0x14b378);}function request(_0x125705){logger[_0x6940('0xb')](_0x6940('0xc'),JSON[_0x6940('0xd')](_0x125705));return rp(_0x125705);}function getCustomFields(_0xec0ffa,_0x4e2d55){var _0xe4bc3a={};if(_0xec0ffa[_0x6940('0xe')]>0x0){_[_0x6940('0xf')](_0xec0ffa,function(_0x5f3473){if(_[_0x6940('0x10')](['string',_0x6940('0x11')],_0x5f3473[_0x6940('0x12')])&&_0x5f3473[_0x6940('0x13')]){_0xe4bc3a[_0x5f3473[_0x6940('0x13')]]=_0x5f3473[_0x6940('0x14')][_0x6940('0x15')]();}else if(_0x5f3473[_0x6940('0x12')]===_0x6940('0x16')&&_0x5f3473[_0x6940('0x17')]&&_0x5f3473[_0x6940('0x13')]&&_0x4e2d55[_0x5f3473[_0x6940('0x17')]]){_0xe4bc3a[_0x5f3473[_0x6940('0x13')]]=_0x4e2d55[_0x5f3473[_0x6940('0x17')]][_0x6940('0x15')]();}else if(_0x5f3473['type']===_0x6940('0x18')&&_0x5f3473[_0x6940('0x19')]&&_0x5f3473['Variable']['name']&&_0x5f3473['idField']&&_0x4e2d55[_0x5f3473[_0x6940('0x19')][_0x6940('0x1a')][_0x6940('0x1b')]()]){_0xe4bc3a[_0x5f3473[_0x6940('0x13')]]=_0x4e2d55[_0x5f3473[_0x6940('0x19')][_0x6940('0x1a')][_0x6940('0x1b')]()][_0x6940('0x15')]();}});}return _0xe4bc3a;}function getName(_0x445153){if(_0x445153[_0x6940('0x1c')]('\x20')>0x0){var _0x560aa0=_0x445153[_0x6940('0x1d')](/ (.+)/);if(_0x560aa0[0x1]){return _0x560aa0;}}return[_0x445153,_0x445153];}var accountsTokens={};function getAccessToken(_0x2c4a1a){return new Promise(function(_0x16437e,_0x4ef8ef){if(!_[_0x6940('0x1e')](accountsTokens[_0x2c4a1a['id']])&&!_[_0x6940('0x1e')](accountsTokens[_0x2c4a1a['id']][_0x6940('0x1f')])){if(moment()['isBefore'](accountsTokens[_0x2c4a1a['id']][_0x6940('0x20')])){_0x16437e(accountsTokens[_0x2c4a1a['id']]['access_token']);}}var _0x220575;switch(_0x2c4a1a[_0x6940('0x21')]){case'US':_0x220575=_0x6940('0x22');break;case'AU':_0x220575='https://accounts.zoho.com.au';break;case'EU':_0x220575=_0x6940('0x23');break;case'IN':_0x220575='https://accounts.zoho.in';break;case'CN':_0x220575='https://accounts.zoho.com.cn';break;default:_0x220575=_0x6940('0x23');break;}var _0x209d11={'method':_0x6940('0x24'),'uri':_0x220575+_0x6940('0x25'),'qs':{'refresh_token':_0x2c4a1a['refreshToken'],'client_id':_0x2c4a1a[_0x6940('0x26')],'client_secret':_0x2c4a1a[_0x6940('0x27')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x209d11)[_0x6940('0x28')](function(_0x51eadd){accountsTokens[_0x2c4a1a['id']]={'access_token':_0x51eadd[_0x6940('0x1f')],'expires_in':moment()[_0x6940('0x29')](_0x51eadd[_0x6940('0x20')],_0x6940('0x2a'))};_0x16437e(_0x51eadd[_0x6940('0x1f')]);})[_0x6940('0x2b')](function(_0x33a4e0){logger[_0x6940('0x2c')](_0x6940('0x2d'),_0x33a4e0[_0x6940('0x2e')]);_0x4ef8ef(_0x33a4e0);});});}function getUser(_0xa4e0b5,_0x35b44a,_0x506dfd,_0x40ac15){logger[_0x6940('0x2f')](_0x6940('0x30'));return request({'method':_0x6940('0x31'),'uri':util[_0x6940('0x32')](_0x6940('0x33'),_0x35b44a),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x6940('0x34')+_0xa4e0b5},'json':!![]})[_0x6940('0x28')](function(_0x5e9541){if(_0x5e9541[_0x6940('0x35')]){var _0x1ef281=-0x1;if(_[_0x6940('0x36')](_0x5e9541[_0x6940('0x35')])){if(!_['isNil'](_0x40ac15)){_0x1ef281=_[_0x6940('0x37')](_0x5e9541['users'],function(_0x48a196){return _0x48a196['email']===_0x40ac15;});}if(_0x1ef281>=0x0){logger[_0x6940('0x2f')](_0x6940('0x38'));}else{logger[_0x6940('0x2f')](_0x6940('0x39'));_0x1ef281=_[_0x6940('0x37')](_0x5e9541[_0x6940('0x35')],function(_0x4c9ac9){return _0x4c9ac9[_0x6940('0x3a')][_0x6940('0x1a')]===_0x6940('0x3b');});}return _0x5e9541[_0x6940('0x35')][_0x1ef281];}else{if(_0x5e9541[_0x6940('0x3c')][_0x6940('0x3a')][_0x6940('0x1a')]===_0x6940('0x3b')){logger[_0x6940('0x2f')](_0x6940('0x39'));user=_0x5e9541[_0x6940('0x3c')];return user;}else{logger['error'](_0x6940('0x3d'),JSON['stringify'](_0x5e9541));throw new Error(_0x6940('0x3e')+JSON[_0x6940('0xd')](_0x5e9541));}}}else{logger[_0x6940('0x2c')]('The\x20failing\x20result\x20is',JSON[_0x6940('0xd')](_0x5e9541));throw new Error(_0x6940('0x3e')+JSON[_0x6940('0xd')](_0x5e9541));}})['catch'](function(_0x2b5bd8){console[_0x6940('0x2c')](_0x2b5bd8);});}function getZohoUser(_0x8906fc,_0x3b6d11){return new BPromise(function(_0x3d2cdc,_0x5e4200){request(_0x8906fc)[_0x6940('0x28')](function(_0x25dd91){var _0x2d8192=null;if(_0x25dd91){_0x2d8192=_0x25dd91[_0x6940('0x3f')][0x0];_0x2d8192[_0x6940('0x40')]=_0x3b6d11;}_0x3d2cdc(_0x2d8192);})[_0x6940('0x2b')](function(_0x25563a){_0x5e4200(_0x25563a);});});}function createEndUser(_0x3b95dc,_0x3614bd,_0x2f1253,_0x4a2c82,_0x11a614,_0x1bf252){var _0x2f1253=getName(_0x2f1253);return request({'method':_0x6940('0x24'),'uri':'https://www.zohoapis.'+_0x3614bd+_0x6940('0x41')+_['startCase'](_0x1bf252['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x2f1253[0x1],'First_Name':_0x2f1253[0x0],'Phone':_0x4a2c82,'Owner':{'name':!_[_0x6940('0x1e')](_0x11a614[_0x6940('0x42')]['name'])?_0x11a614[_0x6940('0x42')]['name']:!_[_0x6940('0x1e')](_0x11a614[_0x6940('0x43')])?_0x11a614[_0x6940('0x43')]+'\x20'+_0x11a614[_0x6940('0x44')]:_0x11a614[_0x6940('0x44')],'id':_0x11a614['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3b95dc},'json':!![]})[_0x6940('0x28')](function(_0x446d7b){if(_0x446d7b&&_0x446d7b[_0x6940('0x3f')][0x0][_0x6940('0x45')]==='SUCCESS'){var _0x5dda15=_0x446d7b[_0x6940('0x3f')][0x0][_0x6940('0x46')];_0x5dda15['enduserType']=_[_0x6940('0x47')](_0x1bf252[_0x6940('0x48')])+'s';return _0x5dda15;}logger['error'](_0x6940('0x3d'),JSON['stringify'](data));throw new Error(_0x6940('0x49')+JSON['stringify'](data));})['catch'](function(_0x233a93){console[_0x6940('0x4a')](_0x6940('0x4b'),_0x233a93);});}function getEndUser(_0x1e74c5,_0x247492,_0xc07b5f,_0xcee348,_0x1d9bc6,_0x3e1996,_0x518ab9){var _0x183d1e={'method':_0x6940('0x31'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x1e74c5},'json':!![]};switch(_0x518ab9['moduleSearch']){case _0x6940('0x4c'):_0x183d1e[_0x6940('0x4d')]=_0x6940('0x4e')+_0x247492+_0x6940('0x4f')+_0x1d9bc6+'))';return getZohoUser(_0x183d1e,_0x6940('0x50'))[_0x6940('0x28')](function(_0x28d2ee){if(_0x28d2ee)return _0x28d2ee;_0x183d1e['uri']=_0x6940('0x4e')+_0x247492+_0x6940('0x51')+_0x1d9bc6+'))';return getZohoUser(_0x183d1e,'Leads')['then'](function(_0x1bd103){if(_0x1bd103)return _0x1bd103;if(_0x518ab9[_0x6940('0x48')]!=_0x6940('0x52')){return createEndUser(_0x1e74c5,_0x247492,_0xcee348,_0x1d9bc6,_0x3e1996,_0x518ab9);}else{return{};}});});break;case _0x6940('0x53'):_0x183d1e['uri']=_0x6940('0x4e')+_0x247492+_0x6940('0x4f')+_0x1d9bc6+'))';return getZohoUser(_0x183d1e,_0x6940('0x50'))[_0x6940('0x28')](function(_0x151521){if(_0x151521)return _0x151521;if(_0x518ab9[_0x6940('0x48')]!=_0x6940('0x52')){return createEndUser(_0x1e74c5,_0x247492,_0xcee348,_0x1d9bc6,_0x3e1996,_0x518ab9);}else{return{};}});break;case _0x6940('0x54'):_0x183d1e['uri']='https://www.zohoapis.'+_0x247492+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x1d9bc6+'))';return getZohoUser(_0x183d1e,'Leads')[_0x6940('0x28')](function(_0x168144){if(_0x168144)return _0x168144;if(_0x518ab9['moduleCreate']!='nothing'){return createEndUser(_0x1e74c5,_0x247492,_0xcee348,_0x1d9bc6,_0x3e1996,_0x518ab9);}else{return{};}});break;}}function getCall(_0x167c3b,_0x2e8a8b,_0x2ed362,_0x590853,_0x4fea73,_0x244be0,_0x30c2a6,_0x529e16){logger[_0x6940('0x2f')]('Creating\x20new\x20call...');var _0x50f066={};_0x50f066['Owner']={'name':!_['isNil'](_0x590853[_0x6940('0x42')][_0x6940('0x1a')])&&!_[_0x6940('0x1e')](_0x590853[_0x6940('0x3a')]['name'])&&_0x590853[_0x6940('0x3a')][_0x6940('0x1a')]===_0x6940('0x55')?_0x590853[_0x6940('0x42')][_0x6940('0x1a')]:!_[_0x6940('0x1e')](_0x590853['first_name'])?_0x590853[_0x6940('0x43')]+'\x20'+_0x590853[_0x6940('0x44')]:_0x590853['last_name'],'id':_0x590853['id']};_0x50f066[_0x6940('0x56')]=intUtil[_0x6940('0x57')](_0x244be0['Subjects'],_0x30c2a6,'\x20');_0x50f066['Description']=intUtil[_0x6940('0x57')](_0x244be0['Descriptions'],_0x30c2a6,'\x0a');if(_0x4fea73[_0x6940('0x40')]===_0x6940('0x50')){_0x50f066[_0x6940('0x58')]={'name':!_['isNil'](_0x4fea73[_0x6940('0x59')])?_0x4fea73[_0x6940('0x59')]:!_[_0x6940('0x1e')](_0x4fea73[_0x6940('0x5a')])?_0x4fea73[_0x6940('0x5a')]+'\x20'+_0x4fea73['Last_Name']:_0x4fea73[_0x6940('0x5b')],'id':_0x4fea73['id']};}if(_0x4fea73[_0x6940('0x40')]===_0x6940('0x5c')){_0x50f066[_0x6940('0x5d')]={'name':!_[_0x6940('0x1e')](_0x4fea73[_0x6940('0x59')])?_0x4fea73[_0x6940('0x59')]:!_[_0x6940('0x1e')](_0x4fea73[_0x6940('0x5a')])?_0x4fea73[_0x6940('0x5a')]+'\x20'+_0x4fea73[_0x6940('0x5b')]:_0x4fea73['Last_Name'],'id':_0x4fea73['id']};_0x50f066['$se_module']=_[_0x6940('0x47')](_0x4fea73[_0x6940('0x40')]);}if(_0x30c2a6['talktime']){_0x50f066[_0x6940('0x5e')]=moment[_0x6940('0x5f')](parseInt(_0x30c2a6[_0x6940('0x60')])*0x3e8)[_0x6940('0x32')](_0x6940('0x61'));}else if(_0x30c2a6[_0x6940('0x62')]&&_0x30c2a6[_0x6940('0x63')]){_0x50f066[_0x6940('0x5e')]=moment['utc'](moment(_0x30c2a6[_0x6940('0x63')],_0x6940('0x64'))['diff'](moment(_0x30c2a6[_0x6940('0x65')],_0x6940('0x64'))))[_0x6940('0x32')](_0x6940('0x61'));}switch(_0x30c2a6[_0x6940('0x66')]){case'called':_0x50f066[_0x6940('0x67')]=_0x6940('0x68');break;case _0x6940('0x69'):case _0x6940('0x6a'):_0x50f066[_0x6940('0x67')]='Answered';break;case _0x6940('0x6b'):_0x50f066[_0x6940('0x67')]=_0x6940('0x6c');break;case _0x6940('0x6d'):_0x50f066[_0x6940('0x67')]=_0x6940('0x6e');break;case _0x6940('0x6f'):_0x50f066['Call_Result']=_0x6940('0x70');default:}_0x50f066[_0x6940('0x71')]=(_0x529e16===_0x6940('0x72')?moment(_0x30c2a6[_0x6940('0x65')])['format'](_0x6940('0x64')):moment(_0x30c2a6[_0x6940('0x73')])['format']('YYYY-MM-DDTHH:mm:ss'))||moment()['format'](_0x6940('0x64'));_0x50f066[_0x6940('0x74')]=_0x529e16||'Inbound';_0x50f066=_[_0x6940('0x75')](_0x50f066,getCustomFields(_0x244be0['Fields'],_0x30c2a6));return request({'method':_0x6940('0x24'),'uri':'https://www.zohoapis.'+_0x2e8a8b+_0x6940('0x76'),'headers':{'Authorization':_0x6940('0x34')+_0x167c3b},'body':{'data':[_0x50f066]},'json':!![]})[_0x6940('0x28')](function(_0x53dc03){if(_0x53dc03&&_0x53dc03[_0x6940('0x3f')][0x0]['code']===_0x6940('0x77')){logger[_0x6940('0x2f')](_0x6940('0x78'));return{'id':_0x53dc03[_0x6940('0x3f')][0x0][_0x6940('0x46')]['id']};}})[_0x6940('0x2b')](function(_0x257b5){logger[_0x6940('0x2f')]('err',_0x257b5['stack']);console['log'](_0x6940('0x79'),_0x257b5);});}exports[_0x6940('0x7a')]=function(_0x5ca79b,_0x183c1b,_0x28493c,_0x432e44,_0x1f4d64,_0x12fb34){var _0xd0797b,_0x500329,_0x2f12e9;_0x12fb34['host']=intUtil[_0x6940('0x7b')](_0x12fb34[_0x6940('0x7c')]);_0x12fb34['serverUrl']=intUtil['stripTrailingSlash'](_0x12fb34['serverUrl']);if(_0x1f4d64&&_0x1f4d64[_0x6940('0x7d')]){logger[_0x6940('0x2f')](_0x6940('0x7e'),_0x6940('0x7f'));_0x183c1b[_0x6940('0x80')]=_0x12fb34[_0x6940('0x81')]+_0x6940('0x82')+_0x183c1b['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x183c1b[_0x6940('0x83')]);}else{_0x183c1b['recordingURL']='';}var _0x5e18df=_0x12fb34['host']==='zoho.eu'?'eu':'com';return getAccessToken(_0x12fb34)[_0x6940('0x28')](function(_0x2641c1){_0x2f12e9=_0x2641c1;return getUser(_0x2f12e9,_0x5e18df,_0x12fb34,_0x432e44[_0x6940('0x84')]);})[_0x6940('0x28')](function(_0x269134){_0xd0797b=_0x269134;logger[_0x6940('0x2f')](_0x6940('0x85'),_0xd0797b['id']);return getEndUser(_0x2f12e9,_0x5e18df,_0x12fb34,_0x183c1b[_0x6940('0x86')],_0x183c1b[_0x6940('0x87')],_0xd0797b,_0x28493c);})[_0x6940('0x28')](function(_0x412b67){_0x500329=_0x412b67;return getCall(_0x2f12e9,_0x5e18df,_0x12fb34,_0xd0797b,_0x500329,_0x28493c,_0x183c1b,_0x6940('0x88'));})[_0x6940('0x28')](function(_0x53f6f1){if(_0x53f6f1){logger[_0x6940('0x2f')](_0x6940('0x89'),_0x53f6f1['id']);logger[_0x6940('0x2f')](_0x6940('0x7e'),_0x6940('0x8a'));emit(util[_0x6940('0x32')](_0x6940('0x8b'),_0x432e44[_0x6940('0x1a')]),'trigger:browser:url',{'uri':_0x6940('0x8c')+_0x12fb34['host']+_0x6940('0x8d')+_0x53f6f1['id']});}})[_0x6940('0x2b')](function(_0x219764){logger[_0x6940('0x2c')](_0x6940('0x7e'),JSON[_0x6940('0xd')](_0x219764));});};exports['outbound']=function(_0x1914ff,_0xf195c3,_0x5f4200,_0x587a0d,_0xb62daa,_0x1c5335,_0x4e3336){var _0x30362c,_0x5f1e08,_0x28a50c;_0x1c5335[_0x6940('0x7c')]=intUtil['stripTrailingSlash'](_0x1c5335[_0x6940('0x7c')]);_0x1c5335[_0x6940('0x81')]=intUtil[_0x6940('0x7b')](_0x1c5335['serverUrl']);if(_0x4e3336&&_0x4e3336[_0x6940('0x8e')]&&_0x4e3336[_0x6940('0x8e')]!=='none'){logger[_0x6940('0x2f')](_0x6940('0x8f'),_0x6940('0x7f'));_0xf195c3[_0x6940('0x80')]=_0x1c5335[_0x6940('0x81')]+_0x6940('0x82')+_0xf195c3['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0xf195c3[_0x6940('0x83')]);}var _0x646a0b=_0x1c5335['host']==='zoho.eu'?'eu':_0x6940('0x90');return getAccessToken(_0x1c5335)[_0x6940('0x28')](function(_0x54dce1){_0x28a50c=_0x54dce1;return getUser(_0x28a50c,_0x646a0b,_0x1c5335,_0x587a0d['email']);})['then'](function(_0x2f735f){_0x30362c=_0x2f735f;logger[_0x6940('0x2f')](_0x6940('0x85'),_0x30362c['id']);return getEndUser(_0x28a50c,_0x646a0b,_0x1c5335,_0xf195c3[_0x6940('0x91')],_0xf195c3[_0x6940('0x92')],_0x30362c,_0x5f4200);})[_0x6940('0x28')](function(_0x235aae){_0x5f1e08=_0x235aae;return getCall(_0x28a50c,_0x646a0b,_0x1c5335,_0x30362c,_0x5f1e08,_0x5f4200,_0xf195c3,_0x6940('0x93'));})[_0x6940('0x28')](function(_0x1a53df){if(_0x1a53df){logger[_0x6940('0x2f')](_0x6940('0x89'),_0x1a53df['id']);logger[_0x6940('0x2f')](_0x6940('0x8f'),_0x6940('0x8a'));emit(util[_0x6940('0x32')](_0x6940('0x8b'),_0x587a0d[_0x6940('0x1a')]),_0x6940('0x94'),{'uri':_0x6940('0x8c')+_0x1c5335[_0x6940('0x7c')]+_0x6940('0x8d')+_0x1a53df['id']});}})[_0x6940('0x2b')](function(_0x336e89){logger[_0x6940('0x2c')](_0x6940('0x8f'),JSON[_0x6940('0xd')](_0x336e89));});};exports[_0x6940('0x95')]=function(_0x189d3f,_0x50cb11,_0x1c5722,_0x252c0d,_0x2f682f,_0x1dbf93){var _0x4b70f1,_0x160e75,_0x27acca;_0x1dbf93[_0x6940('0x7c')]=intUtil[_0x6940('0x7b')](_0x1dbf93[_0x6940('0x7c')]);_0x1dbf93['serverUrl']=intUtil[_0x6940('0x7b')](_0x1dbf93[_0x6940('0x81')]);if(_0x2f682f&&_0x2f682f[_0x6940('0x7d')]){logger[_0x6940('0x2f')]('['+_0x50cb11['lastevent'][_0x6940('0x96')]()+']',_0x6940('0x7f'));_0x50cb11[_0x6940('0x80')]=_0x1dbf93['serverUrl']+_0x6940('0x82')+_0x50cb11[_0x6940('0x83')]+'/downloads?type=uniqueid&token='+md5(_0x50cb11[_0x6940('0x83')]);}else{_0x50cb11[_0x6940('0x80')]='';}var _0x201739=_0x1dbf93[_0x6940('0x7c')]==='zoho.eu'?'eu':_0x6940('0x90');return getAccessToken(_0x1dbf93)[_0x6940('0x28')](function(_0x5d924b){_0x27acca=_0x5d924b;return getUser(_0x27acca,_0x201739,_0x1dbf93);})[_0x6940('0x28')](function(_0x51fb1e){_0x4b70f1=_0x51fb1e;logger[_0x6940('0x2f')](_0x6940('0x85'),_0x4b70f1['id']);return getEndUser(_0x27acca,_0x201739,_0x1dbf93,_0x50cb11[_0x6940('0x86')],_0x50cb11[_0x6940('0x87')],_0x4b70f1,_0x1c5722);})[_0x6940('0x28')](function(_0x2f1b36){_0x160e75=_0x2f1b36;return getCall(_0x27acca,_0x201739,_0x1dbf93,_0x4b70f1,_0x160e75,_0x1c5722,_0x50cb11,_0x6940('0x88'));})[_0x6940('0x28')](function(_0x34d3b3){if(_0x34d3b3){logger[_0x6940('0x2f')](_0x6940('0x89'),_0x34d3b3['id']);}})[_0x6940('0x2b')](function(_0x177c2a){logger[_0x6940('0x2c')]('['+_0x50cb11[_0x6940('0x66')]['toUpperCase']()+']',JSON[_0x6940('0xd')](_0x177c2a));});};
\ No newline at end of file
index a4007d3..9bc0b38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39b5=['../../../../config/logger','data2','Script','data3','exec','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','shelljs'];(function(_0x3faf78,_0x5ba090){var _0x316556=function(_0x20d26b){while(--_0x20d26b){_0x3faf78['push'](_0x3faf78['shift']());}};_0x316556(++_0x5ba090);}(_0x39b5,0xda));var _0x539b=function(_0x4634c,_0x3fb0da){_0x4634c=_0x4634c-0x0;var _0x3f2685=_0x39b5[_0x4634c];return _0x3f2685;};'use strict';var util=require(_0x539b('0x0'));var sh=require(_0x539b('0x1'));var Mustache=require('mustache');var logger=require(_0x539b('0x2'))('trigger');exports['exec']=function(_0x31f1a7,_0x2c9d16){var _0x16b40b=_0x31f1a7[_0x539b('0x3')]?_0x31f1a7[_0x539b('0x3')]:_0x539b('0x4');var _0xa2679=_0x31f1a7[_0x539b('0x5')]?Mustache['render'](_0x31f1a7[_0x539b('0x5')],_0x2c9d16):_0x2c9d16;sh[_0x539b('0x6')](_0xa2679,function(_0x2ea3a0,_0x159727,_0x487241){if(_0x2ea3a0!==0x0){logger[_0x539b('0x7')](util[_0x539b('0x8')](_0x539b('0x9'),_0x16b40b,_0xa2679,_0x2ea3a0,_0x487241));}else{logger[_0x539b('0xa')](util['format']('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x16b40b,_0xa2679,_0x159727));}});};
\ No newline at end of file
+var _0xacb2=['data2','data3','render','format','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','mustache','trigger','exec'];(function(_0x179be6,_0x262c08){var _0x44df7d=function(_0x257f80){while(--_0x257f80){_0x179be6['push'](_0x179be6['shift']());}};_0x44df7d(++_0x262c08);}(_0xacb2,0x100));var _0x2acb=function(_0x30ea6a,_0x4c4936){_0x30ea6a=_0x30ea6a-0x0;var _0x4af4eb=_0xacb2[_0x30ea6a];return _0x4af4eb;};'use strict';var util=require(_0x2acb('0x0'));var sh=require('shelljs');var Mustache=require(_0x2acb('0x1'));var logger=require('../../../../config/logger')(_0x2acb('0x2'));exports[_0x2acb('0x3')]=function(_0xe1764c,_0x4521ca){var _0x6ef9e9=_0xe1764c[_0x2acb('0x4')]?_0xe1764c[_0x2acb('0x4')]:'Script';var _0x2f44ba=_0xe1764c[_0x2acb('0x5')]?Mustache[_0x2acb('0x6')](_0xe1764c[_0x2acb('0x5')],_0x4521ca):_0x4521ca;sh[_0x2acb('0x3')](_0x2f44ba,function(_0x568fd9,_0xb0a24b,_0x12f949){if(_0x568fd9!==0x0){logger['error'](util[_0x2acb('0x7')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x6ef9e9,_0x2f44ba,_0x568fd9,_0x12f949));}else{logger[_0x2acb('0x8')](util[_0x2acb('0x7')](_0x2acb('0x9'),_0x6ef9e9,_0x2f44ba,_0xb0a24b));}});};
\ No newline at end of file
index 2e2b949..ce70b20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55f4=['%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','util','lodash','mustache','../../../../config/logger','exec','toUpperCase','render','data2','number','data5','headers','data6','parse','error','stack','GET','PUT','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','data1','stringify','object'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x55f4,0x1c6));var _0x455f=function(_0xb1df1b,_0x3cc823){_0xb1df1b=_0xb1df1b-0x0;var _0x56863c=_0x55f4[_0xb1df1b];return _0x56863c;};'use strict';var rp=require('request-promise');var util=require(_0x455f('0x0'));var _=require(_0x455f('0x1'));var Mustache=require(_0x455f('0x2'));var logger=require(_0x455f('0x3'))('trigger');exports[_0x455f('0x4')]=function(_0x1c6579,_0x43cfc4){var _0x5179bf,_0x530342;var _0x3bb41d={'method':_0x1c6579['data1'][_0x455f('0x5')](),'uri':Mustache[_0x455f('0x6')](_0x1c6579[_0x455f('0x7')],_0x43cfc4),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x1c6579['data5'])===_0x455f('0x8')&&parseInt(_0x1c6579[_0x455f('0x9')])>=0x1&&parseInt(_0x1c6579[_0x455f('0x9')])<=0xa?parseInt(_0x1c6579[_0x455f('0x9')])*0x3e8:0x5*0x3e8};try{_0x3bb41d[_0x455f('0xa')]=_0x1c6579[_0x455f('0xb')]?JSON[_0x455f('0xc')](Mustache[_0x455f('0x6')](_0x1c6579['data6'],_0x43cfc4)):{};}catch(_0x4b7ecf){logger[_0x455f('0xd')](_0x4b7ecf[_0x455f('0xe')]);}switch(_0x1c6579['data1'][_0x455f('0x5')]()){case _0x455f('0xf'):case'DELETE':_0x5179bf=null;_0x3bb41d['qs']=_0x43cfc4;break;case'POST':case _0x455f('0x10'):if(_0x1c6579[_0x455f('0x11')]){try{_0x5179bf=JSON['parse'](Mustache[_0x455f('0x6')](_0x1c6579[_0x455f('0x11')],_0x43cfc4));_0x3bb41d[_0x455f('0x12')]=_0x5179bf;}catch(_0x2c9c0c){logger[_0x455f('0xd')](_0x2c9c0c[_0x455f('0xe')]);logger[_0x455f('0xd')](_0x455f('0x13'));}}else{_0x5179bf=_0x43cfc4;_0x3bb41d[_0x455f('0x12')]=_0x5179bf;}break;}logger[_0x455f('0x14')](util[_0x455f('0x15')](_0x455f('0x16'),_0x1c6579[_0x455f('0x17')],_0x1c6579['data2'],JSON[_0x455f('0x18')](_0x3bb41d)));rp(_0x3bb41d)['then'](function(_0x170340){_0x5179bf=!_['isNil'](_0x5179bf)?',\x20request\x20body:\x20'+_0x5179bf:'';_0x530342=typeof _0x170340['body']===_0x455f('0x19')?JSON[_0x455f('0x18')](_0x170340[_0x455f('0x12')]):_0x170340[_0x455f('0x12')];logger[_0x455f('0x14')](util[_0x455f('0x15')](_0x455f('0x1a'),_0x1c6579['data1'],_0x1c6579[_0x455f('0x7')],_0x170340[_0x455f('0x1b')],_0x530342));})['catch'](function(_0x5deb00){logger[_0x455f('0xd')](util[_0x455f('0x15')](_0x455f('0x1c'),_0x1c6579['data1'],_0x1c6579[_0x455f('0x7')],_0x5deb00['statusCode'],_0x5deb00['name'],_0x5deb00[_0x455f('0x1d')]));});};
\ No newline at end of file
+var _0x8999=['mustache','trigger','exec','data1','toUpperCase','data2','data5','number','headers','data6','parse','error','stack','GET','DELETE','POST','PUT','data7','render','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then',',\x20request\x20body:\x20','body','format','%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'];(function(_0x1b9e2e,_0x35956b){var _0x5ab59c=function(_0x4fcea8){while(--_0x4fcea8){_0x1b9e2e['push'](_0x1b9e2e['shift']());}};_0x5ab59c(++_0x35956b);}(_0x8999,0x1bf));var _0x9899=function(_0x567fff,_0xd8acd8){_0x567fff=_0x567fff-0x0;var _0x465a37=_0x8999[_0x567fff];return _0x465a37;};'use strict';var rp=require(_0x9899('0x0'));var util=require('util');var _=require('lodash');var Mustache=require(_0x9899('0x1'));var logger=require('../../../../config/logger')(_0x9899('0x2'));exports[_0x9899('0x3')]=function(_0x3c412a,_0x4a8aa1){var _0x2fdcf6,_0x4846a5;var _0x4cb53d={'method':_0x3c412a[_0x9899('0x4')][_0x9899('0x5')](),'uri':Mustache['render'](_0x3c412a[_0x9899('0x6')],_0x4a8aa1),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x3c412a[_0x9899('0x7')])===_0x9899('0x8')&&parseInt(_0x3c412a['data5'])>=0x1&&parseInt(_0x3c412a[_0x9899('0x7')])<=0xa?parseInt(_0x3c412a['data5'])*0x3e8:0x5*0x3e8};try{_0x4cb53d[_0x9899('0x9')]=_0x3c412a[_0x9899('0xa')]?JSON[_0x9899('0xb')](Mustache['render'](_0x3c412a['data6'],_0x4a8aa1)):{};}catch(_0x53d10d){logger[_0x9899('0xc')](_0x53d10d[_0x9899('0xd')]);}switch(_0x3c412a[_0x9899('0x4')][_0x9899('0x5')]()){case _0x9899('0xe'):case _0x9899('0xf'):_0x2fdcf6=null;_0x4cb53d['qs']=_0x4a8aa1;break;case _0x9899('0x10'):case _0x9899('0x11'):if(_0x3c412a[_0x9899('0x12')]){try{_0x2fdcf6=JSON[_0x9899('0xb')](Mustache[_0x9899('0x13')](_0x3c412a['data7'],_0x4a8aa1));_0x4cb53d['body']=_0x2fdcf6;}catch(_0x54c35a){logger[_0x9899('0xc')](_0x54c35a[_0x9899('0xd')]);logger[_0x9899('0xc')](_0x9899('0x14'));}}else{_0x2fdcf6=_0x4a8aa1;_0x4cb53d['body']=_0x2fdcf6;}break;}logger[_0x9899('0x15')](util['format'](_0x9899('0x16'),_0x3c412a['data1'],_0x3c412a[_0x9899('0x6')],JSON[_0x9899('0x17')](_0x4cb53d)));rp(_0x4cb53d)[_0x9899('0x18')](function(_0x4698ff){_0x2fdcf6=!_['isNil'](_0x2fdcf6)?_0x9899('0x19')+_0x2fdcf6:'';_0x4846a5=typeof _0x4698ff[_0x9899('0x1a')]==='object'?JSON[_0x9899('0x17')](_0x4698ff[_0x9899('0x1a')]):_0x4698ff[_0x9899('0x1a')];logger['info'](util[_0x9899('0x1b')](_0x9899('0x1c'),_0x3c412a[_0x9899('0x4')],_0x3c412a[_0x9899('0x6')],_0x4698ff[_0x9899('0x1d')],_0x4846a5));})['catch'](function(_0x6ed908){logger[_0x9899('0xc')](util[_0x9899('0x1b')](_0x9899('0x1e'),_0x3c412a[_0x9899('0x4')],_0x3c412a['data2'],_0x6ed908['statusCode'],_0x6ed908['name'],_0x6ed908[_0x9899('0x1f')]));});};
\ No newline at end of file
index 1db1e93..bb12039 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x163a=['error','message','catch','exports','bluebird','../../config/logger','routing','client','http','request','rpc'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x163a,0xf6));var _0xa163=function(_0x334651,_0x6e99f6){_0x334651=_0x334651-0x0;var _0x29657c=_0x163a[_0x334651];return _0x29657c;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xa163('0x0'));var logger=require(_0xa163('0x1'))(_0xa163('0x2'));var client=jayson[_0xa163('0x3')][_0xa163('0x4')]({'port':0x2329});client['Request']=function(_0x77ac46,_0x119084){return new BPromise(function(_0x1d8156,_0x28afe8){return client[_0xa163('0x5')](_0x77ac46,_0x119084)['then'](function(_0x25ba9c){logger['debug'](_0xa163('0x6'),_0xa163('0x2'),_0x77ac46,_0x119084,_0x25ba9c);if(_0x25ba9c[_0xa163('0x7')]){logger[_0xa163('0x7')](_0xa163('0x6'),_0xa163('0x2'),_0x77ac46,_0x25ba9c[_0xa163('0x7')][_0xa163('0x8')],_0x119084);return _0x28afe8(_0x25ba9c[_0xa163('0x7')][_0xa163('0x8')]);}else{return _0x1d8156(_0x25ba9c['result']);}})[_0xa163('0x9')](function(_0xde1903){logger[_0xa163('0x7')](_0xa163('0x6'),'routing',_0x77ac46,_0xde1903,_0x119084);return _0x28afe8(_0xde1903);});});};module[_0xa163('0xa')]=client;
\ No newline at end of file
+var _0x1b81=['rpc','error','message','catch','exports','jayson/promise','../../config/logger','routing','client','Request','request','debug'];(function(_0x16402c,_0x2102fa){var _0x2e6040=function(_0x247ef9){while(--_0x247ef9){_0x16402c['push'](_0x16402c['shift']());}};_0x2e6040(++_0x2102fa);}(_0x1b81,0xf5));var _0x11b8=function(_0x29f2b9,_0x4859bf){_0x29f2b9=_0x29f2b9-0x0;var _0x2db192=_0x1b81[_0x29f2b9];return _0x2db192;};'use strict';var jayson=require(_0x11b8('0x0'));var BPromise=require('bluebird');var logger=require(_0x11b8('0x1'))(_0x11b8('0x2'));var client=jayson[_0x11b8('0x3')]['http']({'port':0x2329});client[_0x11b8('0x4')]=function(_0x270d44,_0x57b4e2){return new BPromise(function(_0x32c7a3,_0x194814){return client[_0x11b8('0x5')](_0x270d44,_0x57b4e2)['then'](function(_0xc8996c){logger[_0x11b8('0x6')](_0x11b8('0x7'),'routing',_0x270d44,_0x57b4e2,_0xc8996c);if(_0xc8996c[_0x11b8('0x8')]){logger[_0x11b8('0x8')](_0x11b8('0x7'),_0x11b8('0x2'),_0x270d44,_0xc8996c['error'][_0x11b8('0x9')],_0x57b4e2);return _0x194814(_0xc8996c[_0x11b8('0x8')][_0x11b8('0x9')]);}else{return _0x32c7a3(_0xc8996c['result']);}})[_0x11b8('0xa')](function(_0x3a2e23){logger[_0x11b8('0x8')](_0x11b8('0x7'),_0x11b8('0x2'),_0x270d44,_0x3a2e23,_0x57b4e2);return _0x194814(_0x3a2e23);});});};module[_0x11b8('0xb')]=client;
\ No newline at end of file
index b4639e2..f45a946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0e4=['email','then','refresh','catch','error','Email\x20service\x20initialization','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting'];(function(_0x291b70,_0x1bc6db){var _0x40770b=function(_0x4c3c94){while(--_0x4c3c94){_0x291b70['push'](_0x291b70['shift']());}};_0x40770b(++_0x1bc6db);}(_0xe0e4,0xec));var _0x4e0e=function(_0x3629da,_0x35b3d1){_0x3629da=_0x3629da-0x0;var _0x30d762=_0xe0e4[_0x3629da];return _0x30d762;};'use strict';var server=require('./server');var Realtime=require(_0x4e0e('0x0'));var EmailChannel=require(_0x4e0e('0x1'));var mailAccount=require(_0x4e0e('0x2'));var setting=require(_0x4e0e('0x3'));var logger=require('../../config/logger')(_0x4e0e('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise['resolve']()[_0x4e0e('0x5')](mailAccount['getMailAccounts']())[_0x4e0e('0x5')](realtime['initMailAccounts']())['then'](function(){email[_0x4e0e('0x6')](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)[_0x4e0e('0x5')](function(){return initRealtime();})[_0x4e0e('0x5')](function(){return setting['getSettings']();})[_0x4e0e('0x5')](function(_0x29202b){return setInterval(initRealtime,_0x29202b['loginMailFrequency']*0x3e8);})[_0x4e0e('0x7')](function(_0x5cfd68){logger[_0x4e0e('0x8')](_0x4e0e('0x9'),_0x5cfd68);});}main();
\ No newline at end of file
+var _0x7312=['./rpc/mailAccount','./rpc/setting','../../config/logger','email','resolve','then','getMailAccounts','initMailAccounts','refresh','mailAccounts','listen','loginMailFrequency','error','Email\x20service\x20initialization','./server','./realtime'];(function(_0x20d08e,_0x4cc575){var _0x2cbd12=function(_0x3de355){while(--_0x3de355){_0x20d08e['push'](_0x20d08e['shift']());}};_0x2cbd12(++_0x4cc575);}(_0x7312,0x13e));var _0x2731=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0x7312[_0x1b2ff7];return _0x31656a;};'use strict';var server=require(_0x2731('0x0'));var Realtime=require(_0x2731('0x1'));var EmailChannel=require('./lib/email');var mailAccount=require(_0x2731('0x2'));var setting=require(_0x2731('0x3'));var logger=require(_0x2731('0x4'))(_0x2731('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x2731('0x6')]()[_0x2731('0x7')](mailAccount[_0x2731('0x8')]())['then'](realtime[_0x2731('0x9')]())[_0x2731('0x7')](function(){email[_0x2731('0xa')](realtime[_0x2731('0xb')]);return realtime;});}function main(){return server[_0x2731('0xc')](realtime,email)[_0x2731('0x7')](function(){return initRealtime();})[_0x2731('0x7')](function(){return setting['getSettings']();})[_0x2731('0x7')](function(_0x20d0a9){return setInterval(initRealtime,_0x20d0a9[_0x2731('0xd')]*0x3e8);})['catch'](function(_0x55b1a3){logger[_0x2731('0xe')](_0x2731('0xf'),_0x55b1a3);});}main();
\ No newline at end of file
index b768635..3171f62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0b7=['Imap','status','total','stringify','emit','refresh','hasOwnProperty','service','provider','custom','handleImapBox','handleImapEmail','handleImapEnd','bind','error','isNil','messageStatus','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','then','Mail\x20accepted\x20from\x20routing','catch','lastSync','handleImapError','send','verifySmtp','Smtp','verify','verified','lodash','bluebird','md5','../../../config/environment','email','defaults','redis','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp','prototype','name','key','active'];(function(_0x572ef2,_0x5c1281){var _0x3f74d6=function(_0x36e76c){while(--_0x36e76c){_0x572ef2['push'](_0x572ef2['shift']());}};_0x3f74d6(++_0x5c1281);}(_0xd0b7,0x83));var _0x7d0b=function(_0x58c2da,_0x595558){_0x58c2da=_0x58c2da-0x0;var _0x2ad118=_0xd0b7[_0x58c2da];return _0x2ad118;};'use strict';var _=require(_0x7d0b('0x0'));var moment=require('moment');var BPromise=require(_0x7d0b('0x1'));var md5=require(_0x7d0b('0x2'));var Redis=require('ioredis');var config=require(_0x7d0b('0x3'));var logger=require('../../../config/logger')(_0x7d0b('0x4'));config['redis']=_[_0x7d0b('0x5')](config[_0x7d0b('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x7d0b('0x7'))(new Redis(config['redis']));var EmailImap=require(_0x7d0b('0x8'));var EmailSmtp=require(_0x7d0b('0x9'));var mailAccount=require(_0x7d0b('0xa'));var md5Accounts={};function EmailChannel(_0x35552f){logger[_0x7d0b('0xb')]('start\x20email\x20channel');this[_0x7d0b('0xc')]=_0x35552f[_0x7d0b('0xc')];this[_0x7d0b('0xd')]={};this[_0x7d0b('0xe')]=new EmailSmtp();}EmailChannel[_0x7d0b('0xf')]['emit']=function(_0x378c1f){var _0x3696be=this[_0x7d0b('0xc')][_0x378c1f];var _0x3edfd1={'id':_0x3696be['id'],'name':_0x3696be[_0x7d0b('0x10')],'key':_0x3696be[_0x7d0b('0x11')],'active':_0x3696be[_0x7d0b('0x12')],'Imap':{'status':_0x3696be[_0x7d0b('0x13')][_0x7d0b('0x14')],'messageStatus':_0x3696be['Imap']['messageStatus'],'total':_0x3696be[_0x7d0b('0x13')][_0x7d0b('0x15')]}};if(_['isNil'](md5Accounts[_0x378c1f])){md5Accounts[_0x378c1f]={};}var _0x3e6a9d=md5(JSON[_0x7d0b('0x16')](_0x3edfd1));if(md5Accounts[_0x378c1f][_0x7d0b('0x2')]!==_0x3e6a9d){md5Accounts[_0x378c1f][_0x7d0b('0x2')]=_0x3e6a9d;io[_0x7d0b('0x17')]('mailAccount:update',_0x3edfd1);}};EmailChannel['prototype'][_0x7d0b('0x18')]=function(_0x17bb01){for(var _0x16183e in _0x17bb01){if(_0x17bb01[_0x7d0b('0x19')](_0x16183e)){if(_0x17bb01[_0x16183e][_0x7d0b('0x13')]&&_0x17bb01[_0x16183e][_0x7d0b('0x12')]){var _0x404e7d=_0x17bb01[_0x16183e][_0x7d0b('0x13')];if(!_0x404e7d[_0x7d0b('0x1a')]&&_0x17bb01[_0x16183e][_0x7d0b('0x1b')]!==_0x7d0b('0x1c'))_0x404e7d[_0x7d0b('0x1a')]=_0x17bb01[_0x16183e]['provider'];if(!this[_0x7d0b('0xd')][_0x7d0b('0x19')](_0x404e7d['id'])){this[_0x7d0b('0xd')][_0x404e7d['id']]=new EmailImap(_0x404e7d,_0x17bb01[_0x16183e][_0x7d0b('0x4')]);this['imapAccounts'][_0x404e7d['id']]['on']('box',this[_0x7d0b('0x1d')]['bind'](this,_0x16183e));this[_0x7d0b('0xd')][_0x404e7d['id']]['on'](_0x7d0b('0x4'),this[_0x7d0b('0x1e')]['bind'](this,_0x16183e));this[_0x7d0b('0xd')][_0x404e7d['id']]['on']('end',this[_0x7d0b('0x1f')][_0x7d0b('0x20')](this,_0x16183e));this['imapAccounts'][_0x404e7d['id']]['on'](_0x7d0b('0x21'),this['handleImapError'][_0x7d0b('0x20')](this,_0x16183e));}}else{if(_[_0x7d0b('0x22')](this['mailAccounts'][_0x16183e]['Imap'])){this[_0x7d0b('0xc')][_0x16183e]['Imap']={};}this[_0x7d0b('0xc')][_0x16183e]['Imap'][_0x7d0b('0x14')]='disabled';this['mailAccounts'][_0x16183e][_0x7d0b('0x13')][_0x7d0b('0x23')]='';this[_0x7d0b('0x17')](_0x16183e);}}}};EmailChannel[_0x7d0b('0xf')]['handleImapBox']=function(_0x143067,_0xc1efff){if(this[_0x7d0b('0xc')][_0x143067]){this[_0x7d0b('0xc')][_0x143067][_0x7d0b('0x13')][_0x7d0b('0x14')]='connected';this[_0x7d0b('0xc')][_0x143067][_0x7d0b('0x13')]['messageStatus']=_0xc1efff[_0x7d0b('0x10')];if(_0xc1efff[_0x7d0b('0x24')]){this[_0x7d0b('0xc')][_0x143067][_0x7d0b('0x13')][_0x7d0b('0x15')]=_0xc1efff['messages'][_0x7d0b('0x15')];}return this['emit'](_0x143067);}};EmailChannel[_0x7d0b('0xf')][_0x7d0b('0x1e')]=function(_0x1c7a30,_0x25dd59){logger[_0x7d0b('0xb')](_0x7d0b('0x25'),_0x25dd59[_0x7d0b('0x26')],_0x25dd59[_0x7d0b('0x27')],_0x25dd59['from'],_0x1c7a30);if(this['mailAccounts'][_0x1c7a30]){return mailAccount['notify'](_0x1c7a30,_0x25dd59)[_0x7d0b('0x28')](function(_0x37ebd9){if(_0x37ebd9){logger[_0x7d0b('0xb')](_0x7d0b('0x29'));}})[_0x7d0b('0x2a')](function(_0x101df3){logger[_0x7d0b('0x21')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x7d0b('0x16')](_0x101df3));});}};EmailChannel[_0x7d0b('0xf')][_0x7d0b('0x1f')]=function(_0x2d4439){if(this[_0x7d0b('0xc')][_0x2d4439]&&this['mailAccounts'][_0x2d4439]['Imap']){if(this[_0x7d0b('0xd')][this[_0x7d0b('0xc')][_0x2d4439][_0x7d0b('0x13')]['id']]){delete this[_0x7d0b('0xd')][this['mailAccounts'][_0x2d4439][_0x7d0b('0x13')]['id']];}this[_0x7d0b('0xc')][_0x2d4439][_0x7d0b('0x13')][_0x7d0b('0x2b')]=moment();this[_0x7d0b('0x17')](_0x2d4439);}};EmailChannel[_0x7d0b('0xf')][_0x7d0b('0x2c')]=function(_0x3ef025,_0x5dc6b1){if(this['mailAccounts'][_0x3ef025]){this['mailAccounts'][_0x3ef025][_0x7d0b('0x13')][_0x7d0b('0x14')]=_0x7d0b('0x21');this[_0x7d0b('0xc')][_0x3ef025][_0x7d0b('0x13')][_0x7d0b('0x23')]=_0x5dc6b1;return this[_0x7d0b('0x17')](_0x3ef025);}};EmailChannel[_0x7d0b('0xf')]['sendMail']=function(_0x35ce99,_0x40099f){return this['smtp'][_0x7d0b('0x2d')](_0x35ce99,_0x40099f);};EmailChannel[_0x7d0b('0xf')][_0x7d0b('0x2e')]=function(_0x337735){var _0x400a30=this;if(this[_0x7d0b('0xc')][_0x337735['id']]){if(_[_0x7d0b('0x22')](this[_0x7d0b('0xc')][_0x337735['id']]['Smtp'])){this[_0x7d0b('0xc')][_0x337735['id']][_0x7d0b('0x2f')]={};}this[_0x7d0b('0xc')][_0x337735['id']][_0x7d0b('0x2f')][_0x7d0b('0x2b')]=moment();return new BPromise(function(_0x318eae,_0x58ff7b){return _0x400a30[_0x7d0b('0xe')][_0x7d0b('0x30')](_0x337735)[_0x7d0b('0x28')](function(_0x488e2e){_0x400a30[_0x7d0b('0xc')][_0x337735['id']]['Smtp'][_0x7d0b('0x14')]=_0x7d0b('0x31');_0x400a30[_0x7d0b('0xc')][_0x337735['id']]['Smtp'][_0x7d0b('0x23')]='';_0x400a30[_0x7d0b('0x17')](_0x337735['id']);_0x318eae(_0x488e2e);})['catch'](function(_0x40a779){_0x400a30['mailAccounts'][_0x337735['id']]['Smtp'][_0x7d0b('0x14')]='error';_0x400a30['mailAccounts'][_0x337735['id']][_0x7d0b('0x2f')][_0x7d0b('0x23')]=_0x40a779;_0x400a30['emit'](_0x337735['id']);_0x58ff7b(_0x40a779);});});}return this[_0x7d0b('0xe')][_0x7d0b('0x30')](_0x337735);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0x7324=['lastName','from','then','Mail\x20accepted\x20from\x20routing','catch','lastSync','sendMail','send','verifySmtp','Smtp','verify','verified','exports','moment','bluebird','md5','ioredis','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','key','active','Imap','messageStatus','total','stringify','mailAccount:update','prototype','service','provider','hasOwnProperty','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','isNil','status','emit','connected','name','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s'];(function(_0x4b4230,_0x1c70ab){var _0x489754=function(_0x921f07){while(--_0x921f07){_0x4b4230['push'](_0x4b4230['shift']());}};_0x489754(++_0x1c70ab);}(_0x7324,0x7d));var _0x4732=function(_0x19c272,_0x2ec13d){_0x19c272=_0x19c272-0x0;var _0x29a2e5=_0x7324[_0x19c272];return _0x29a2e5;};'use strict';var _=require('lodash');var moment=require(_0x4732('0x0'));var BPromise=require(_0x4732('0x1'));var md5=require(_0x4732('0x2'));var Redis=require(_0x4732('0x3'));var config=require('../../../config/environment');var logger=require(_0x4732('0x4'))(_0x4732('0x5'));config[_0x4732('0x6')]=_[_0x4732('0x7')](config[_0x4732('0x6')],{'host':_0x4732('0x8'),'port':0x18eb});var io=require(_0x4732('0x9'))(new Redis(config[_0x4732('0x6')]));var EmailImap=require('./imap');var EmailSmtp=require(_0x4732('0xa'));var mailAccount=require(_0x4732('0xb'));var md5Accounts={};function EmailChannel(_0x10048e){logger[_0x4732('0xc')](_0x4732('0xd'));this[_0x4732('0xe')]=_0x10048e[_0x4732('0xe')];this[_0x4732('0xf')]={};this[_0x4732('0x10')]=new EmailSmtp();}EmailChannel['prototype']['emit']=function(_0x226346){var _0x5252fa=this[_0x4732('0xe')][_0x226346];var _0x55ec01={'id':_0x5252fa['id'],'name':_0x5252fa['name'],'key':_0x5252fa[_0x4732('0x11')],'active':_0x5252fa[_0x4732('0x12')],'Imap':{'status':_0x5252fa[_0x4732('0x13')]['status'],'messageStatus':_0x5252fa[_0x4732('0x13')][_0x4732('0x14')],'total':_0x5252fa[_0x4732('0x13')][_0x4732('0x15')]}};if(_['isNil'](md5Accounts[_0x226346])){md5Accounts[_0x226346]={};}var _0x2ad190=md5(JSON[_0x4732('0x16')](_0x55ec01));if(md5Accounts[_0x226346][_0x4732('0x2')]!==_0x2ad190){md5Accounts[_0x226346]['md5']=_0x2ad190;io['emit'](_0x4732('0x17'),_0x55ec01);}};EmailChannel[_0x4732('0x18')]['refresh']=function(_0x2b829f){for(var _0x6fcc11 in _0x2b829f){if(_0x2b829f['hasOwnProperty'](_0x6fcc11)){if(_0x2b829f[_0x6fcc11][_0x4732('0x13')]&&_0x2b829f[_0x6fcc11][_0x4732('0x12')]){var _0x608f5b=_0x2b829f[_0x6fcc11][_0x4732('0x13')];if(!_0x608f5b[_0x4732('0x19')]&&_0x2b829f[_0x6fcc11][_0x4732('0x1a')]!=='custom')_0x608f5b['service']=_0x2b829f[_0x6fcc11][_0x4732('0x1a')];if(!this['imapAccounts'][_0x4732('0x1b')](_0x608f5b['id'])){this[_0x4732('0xf')][_0x608f5b['id']]=new EmailImap(_0x608f5b,_0x2b829f[_0x6fcc11][_0x4732('0x5')]);this[_0x4732('0xf')][_0x608f5b['id']]['on'](_0x4732('0x1c'),this[_0x4732('0x1d')][_0x4732('0x1e')](this,_0x6fcc11));this['imapAccounts'][_0x608f5b['id']]['on'](_0x4732('0x5'),this[_0x4732('0x1f')][_0x4732('0x1e')](this,_0x6fcc11));this[_0x4732('0xf')][_0x608f5b['id']]['on'](_0x4732('0x20'),this[_0x4732('0x21')][_0x4732('0x1e')](this,_0x6fcc11));this['imapAccounts'][_0x608f5b['id']]['on'](_0x4732('0x22'),this[_0x4732('0x23')][_0x4732('0x1e')](this,_0x6fcc11));}}else{if(_[_0x4732('0x24')](this['mailAccounts'][_0x6fcc11]['Imap'])){this[_0x4732('0xe')][_0x6fcc11][_0x4732('0x13')]={};}this['mailAccounts'][_0x6fcc11]['Imap'][_0x4732('0x25')]='disabled';this[_0x4732('0xe')][_0x6fcc11]['Imap'][_0x4732('0x14')]='';this[_0x4732('0x26')](_0x6fcc11);}}}};EmailChannel[_0x4732('0x18')][_0x4732('0x1d')]=function(_0x3fbf95,_0x27b9e8){if(this['mailAccounts'][_0x3fbf95]){this[_0x4732('0xe')][_0x3fbf95]['Imap']['status']=_0x4732('0x27');this[_0x4732('0xe')][_0x3fbf95][_0x4732('0x13')][_0x4732('0x14')]=_0x27b9e8[_0x4732('0x28')];if(_0x27b9e8[_0x4732('0x29')]){this['mailAccounts'][_0x3fbf95][_0x4732('0x13')]['total']=_0x27b9e8[_0x4732('0x29')][_0x4732('0x15')];}return this['emit'](_0x3fbf95);}};EmailChannel[_0x4732('0x18')][_0x4732('0x1f')]=function(_0x51a7ef,_0x4a83b8){logger[_0x4732('0xc')](_0x4732('0x2a'),_0x4a83b8['firstName'],_0x4a83b8[_0x4732('0x2b')],_0x4a83b8[_0x4732('0x2c')],_0x51a7ef);if(this['mailAccounts'][_0x51a7ef]){return mailAccount['notify'](_0x51a7ef,_0x4a83b8)[_0x4732('0x2d')](function(_0x1aab8b){if(_0x1aab8b){logger['info'](_0x4732('0x2e'));}})[_0x4732('0x2f')](function(_0x141e76){logger[_0x4732('0x22')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON['stringify'](_0x141e76));});}};EmailChannel['prototype'][_0x4732('0x21')]=function(_0x408968){if(this[_0x4732('0xe')][_0x408968]&&this['mailAccounts'][_0x408968][_0x4732('0x13')]){if(this['imapAccounts'][this[_0x4732('0xe')][_0x408968]['Imap']['id']]){delete this['imapAccounts'][this['mailAccounts'][_0x408968][_0x4732('0x13')]['id']];}this[_0x4732('0xe')][_0x408968][_0x4732('0x13')][_0x4732('0x30')]=moment();this['emit'](_0x408968);}};EmailChannel['prototype'][_0x4732('0x23')]=function(_0x209dc6,_0x41efb9){if(this[_0x4732('0xe')][_0x209dc6]){this[_0x4732('0xe')][_0x209dc6]['Imap'][_0x4732('0x25')]=_0x4732('0x22');this[_0x4732('0xe')][_0x209dc6][_0x4732('0x13')][_0x4732('0x14')]=_0x41efb9;return this[_0x4732('0x26')](_0x209dc6);}};EmailChannel[_0x4732('0x18')][_0x4732('0x31')]=function(_0x110548,_0x423aa8){return this[_0x4732('0x10')][_0x4732('0x32')](_0x110548,_0x423aa8);};EmailChannel[_0x4732('0x18')][_0x4732('0x33')]=function(_0x2003c8){var _0x456fa4=this;if(this[_0x4732('0xe')][_0x2003c8['id']]){if(_[_0x4732('0x24')](this[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')])){this[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')]={};}this[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')][_0x4732('0x30')]=moment();return new BPromise(function(_0x2ad693,_0x520504){return _0x456fa4[_0x4732('0x10')][_0x4732('0x35')](_0x2003c8)['then'](function(_0x31bc2f){_0x456fa4[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')][_0x4732('0x25')]=_0x4732('0x36');_0x456fa4[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')]['messageStatus']='';_0x456fa4[_0x4732('0x26')](_0x2003c8['id']);_0x2ad693(_0x31bc2f);})[_0x4732('0x2f')](function(_0x260573){_0x456fa4[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')][_0x4732('0x25')]=_0x4732('0x22');_0x456fa4[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')][_0x4732('0x14')]=_0x260573;_0x456fa4[_0x4732('0x26')](_0x2003c8['id']);_0x520504(_0x260573);});});}return this[_0x4732('0x10')][_0x4732('0x35')](_0x2003c8);};module[_0x4732('0x37')]=EmailChannel;
\ No newline at end of file
index 496b381..0a5c643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45ea=['error','handleError','connect','inherits','prototype','connTimeout','authTimeout','user','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','host','port','tls','autotls','required','handleOpenBox','emit','box','readUnseen','search','UNSEEN','handleReadUnseen','fetch','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleCloseBox','textCode','hasOwnProperty','upperFirst','lodash','util','imap','mailparser','simpleParser','iconv','Iconv','EventEmitter','./utils','../../../config/logger','email','mailbox','account','getAccount','once','ready','handleReady','bind','end','handleEnd'];(function(_0x154f42,_0x4ab271){var _0x2157aa=function(_0x17a0ff){while(--_0x17a0ff){_0x154f42['push'](_0x154f42['shift']());}};_0x2157aa(++_0x4ab271);}(_0x45ea,0x160));var _0xa45e=function(_0x5c017e,_0x4b6eda){_0x5c017e=_0x5c017e-0x0;var _0x351ffa=_0x45ea[_0x5c017e];return _0x351ffa;};'use strict';var _=require(_0xa45e('0x0'));var util=require(_0xa45e('0x1'));var Imap=require(_0xa45e('0x2'));var simpleParser=require(_0xa45e('0x3'))[_0xa45e('0x4')];var Iconv=require(_0xa45e('0x5'))[_0xa45e('0x6')];var EventEmitter=require('events')[_0xa45e('0x7')];var utils=require(_0xa45e('0x8'));var logger=require(_0xa45e('0x9'))(_0xa45e('0xa'));function EmailImap(_0x1d5bce,_0x47ba89){this[_0xa45e('0xb')]=_0x1d5bce[_0xa45e('0xb')];this[_0xa45e('0xc')]=this[_0xa45e('0xd')](_0x1d5bce,_0x47ba89);this['imap']=new Imap(this[_0xa45e('0xc')]);this[_0xa45e('0x2')][_0xa45e('0xe')](_0xa45e('0xf'),this[_0xa45e('0x10')][_0xa45e('0x11')](this));this[_0xa45e('0x2')][_0xa45e('0xe')](_0xa45e('0x12'),this[_0xa45e('0x13')][_0xa45e('0x11')](this));this[_0xa45e('0x2')]['on'](_0xa45e('0x14'),this[_0xa45e('0x15')]['bind'](this));this[_0xa45e('0x2')][_0xa45e('0x16')]();}util[_0xa45e('0x17')](EmailImap,EventEmitter);EmailImap[_0xa45e('0x18')][_0xa45e('0xd')]=function(_0x1ae6b7,_0x5d118e){var _0x27344b={'connTimeout':_0x1ae6b7[_0xa45e('0x19')]?_0x1ae6b7[_0xa45e('0x19')]*0x3e8:0x2710,'authTimeout':_0x1ae6b7[_0xa45e('0x1a')]?_0x1ae6b7['authTimeout']*0x3e8:0x1388};if(_0x1ae6b7['service']){_0x27344b[_0xa45e('0x1b')]=_0x1ae6b7[_0xa45e('0x1b')];if(_0x1ae6b7['modernAuthentication']){_0x27344b[_0xa45e('0x1c')]=utils[_0xa45e('0x1d')](_0x1ae6b7[_0xa45e('0x1e')][_0xa45e('0x1f')],_0x1ae6b7[_0xa45e('0x1b')]);}else{_0x27344b[_0xa45e('0x20')]=_0x1ae6b7[_0xa45e('0x20')];}}else{if(_0x1ae6b7[_0xa45e('0x21')]){_0x27344b[_0xa45e('0x1b')]=_0x1ae6b7[_0xa45e('0x1b')];_0x27344b[_0xa45e('0x20')]=_0x1ae6b7[_0xa45e('0x20')];}}_0x27344b[_0xa45e('0xa')]=_0x5d118e||_0x1ae6b7['user']||'anonymous@xcally.com';_0x27344b[_0xa45e('0x22')]=_0x1ae6b7[_0xa45e('0x22')];_0x27344b[_0xa45e('0x23')]=_0x1ae6b7[_0xa45e('0x23')]||0x3e1;if(_0x1ae6b7[_0xa45e('0x24')]){_0x27344b[_0xa45e('0x24')]=!![];}else{_0x27344b[_0xa45e('0x24')]=![];_0x27344b[_0xa45e('0x25')]=_0xa45e('0x26');}return _0x27344b;};EmailImap['prototype'][_0xa45e('0x10')]=function(){this[_0xa45e('0x2')]['openBox'](this[_0xa45e('0xb')],![],this[_0xa45e('0x27')][_0xa45e('0x11')](this));};EmailImap[_0xa45e('0x18')][_0xa45e('0x27')]=function(_0xc8206c,_0xc4fb5e){if(_0xc8206c){this[_0xa45e('0x15')](_0xc8206c,!![]);}else{this[_0xa45e('0x28')](_0xa45e('0x29'),_0xc4fb5e);this[_0xa45e('0x2a')]();}};EmailImap[_0xa45e('0x18')]['handleCloseBox']=function(_0x1a7f33){if(_0x1a7f33){this[_0xa45e('0x15')](_0x1a7f33,!![]);}else{this[_0xa45e('0x2')][_0xa45e('0x12')]();}};EmailImap['prototype'][_0xa45e('0x2a')]=function(){this[_0xa45e('0x2')][_0xa45e('0x2b')]([_0xa45e('0x2c')],this[_0xa45e('0x2d')][_0xa45e('0x11')](this));};EmailImap[_0xa45e('0x18')]['handleReadUnseen']=function(_0x2b300f,_0x28c4e3){if(_0x2b300f){this[_0xa45e('0x15')](_0x2b300f,!![]);}else{if(_0x28c4e3['length']){try{var _0x3bf9ff=this['imap'][_0xa45e('0x2e')](_0x28c4e3,{'bodies':'','markSeen':!![]});_0x3bf9ff['on'](_0xa45e('0x2f'),this[_0xa45e('0x30')][_0xa45e('0x11')](this));_0x3bf9ff['once'](_0xa45e('0x14'),this[_0xa45e('0x31')]['bind'](this));_0x3bf9ff[_0xa45e('0xe')](_0xa45e('0x12'),this[_0xa45e('0x32')]['bind'](this));}catch(_0x33d576){logger[_0xa45e('0x14')](_0x33d576);}}else{this[_0xa45e('0x2')][_0xa45e('0x33')](!![],this['handleCloseBox'][_0xa45e('0x11')](this));}}};EmailImap[_0xa45e('0x18')][_0xa45e('0x30')]=function(_0x2fb593){_0x2fb593['on']('body',this[_0xa45e('0x34')][_0xa45e('0x11')](this));_0x2fb593[_0xa45e('0xe')](_0xa45e('0x35'),this[_0xa45e('0x36')]['bind'](this));_0x2fb593['once'](_0xa45e('0x12'),this[_0xa45e('0x37')][_0xa45e('0x11')](this));};EmailImap[_0xa45e('0x18')]['handleMessageBody']=function(_0x5f39dd){simpleParser(_0x5f39dd,{'Iconv':Iconv},this[_0xa45e('0x38')][_0xa45e('0x11')](this));};EmailImap[_0xa45e('0x18')][_0xa45e('0x36')]=function(){};EmailImap[_0xa45e('0x18')][_0xa45e('0x37')]=function(){};EmailImap[_0xa45e('0x18')]['handleSimpleParser']=function(_0x5b5032,_0x5ad390){if(_0x5b5032){logger[_0xa45e('0x14')](_0x5b5032);}else{var _0x56973b=this;utils[_0xa45e('0x39')](this[_0xa45e('0xc')],_0x5ad390,function(_0x2fef74){_0x56973b['emit'](_0xa45e('0xa'),_0x2fef74);});}};EmailImap[_0xa45e('0x18')][_0xa45e('0x32')]=function(){this[_0xa45e('0x2')][_0xa45e('0x33')](!![],this[_0xa45e('0x3a')][_0xa45e('0x11')](this));};EmailImap[_0xa45e('0x18')][_0xa45e('0x31')]=function(_0x1fa344){this[_0xa45e('0x15')](_0x1fa344);this[_0xa45e('0x2')]['closeBox'](!![],this[_0xa45e('0x3a')][_0xa45e('0x11')](this));};EmailImap['prototype'][_0xa45e('0x13')]=function(){this[_0xa45e('0x28')]('end');};EmailImap[_0xa45e('0x18')][_0xa45e('0x15')]=function(_0x5b5f69,_0x1b4fac){logger[_0xa45e('0x14')]('handleError',this[_0xa45e('0xc')][_0xa45e('0xa')],JSON['stringify'](_0x5b5f69));var _0x15463b='';if(_0x5b5f69){if(_0x5b5f69[_0xa45e('0x3b')]){_0x15463b=_0x5b5f69[_0xa45e('0x3b')];}else{for(var _0x568fe6 in _0x5b5f69){if(_0x5b5f69[_0xa45e('0x3c')](_0x568fe6)){_0x15463b+=_[_0xa45e('0x3d')](_0x568fe6)+':\x20'+_0x5b5f69[_0x568fe6]+'\x0a';}}}}if(_0x1b4fac){this['imap']['end']();}else{this['emit'](_0xa45e('0x14'),_0x15463b);this[_0xa45e('0x28')](_0xa45e('0x12'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x057b=['iconv','events','./utils','../../../config/logger','mailbox','account','getAccount','imap','ready','handleReady','bind','end','handleEnd','error','handleError','connect','inherits','prototype','connTimeout','authTimeout','service','user','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','anonymous@xcally.com','host','port','tls','required','openBox','handleOpenBox','emit','readUnseen','handleCloseBox','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','once','handleFetchEnd','body','attributes','handleMessageBody','handleSimpleParser','handleMessageAttributes','handleMessageEnd','parser','email','closeBox','handleFetchError','stringify','textCode','hasOwnProperty','upperFirst','lodash','util','mailparser','simpleParser'];(function(_0x5a6f86,_0x1d6822){var _0x43812d=function(_0x3a0408){while(--_0x3a0408){_0x5a6f86['push'](_0x5a6f86['shift']());}};_0x43812d(++_0x1d6822);}(_0x057b,0x1c3));var _0xb057=function(_0x5f595e,_0x5d56af){_0x5f595e=_0x5f595e-0x0;var _0x3ba9ed=_0x057b[_0x5f595e];return _0x3ba9ed;};'use strict';var _=require(_0xb057('0x0'));var util=require(_0xb057('0x1'));var Imap=require('imap');var simpleParser=require(_0xb057('0x2'))[_0xb057('0x3')];var Iconv=require(_0xb057('0x4'))['Iconv'];var EventEmitter=require(_0xb057('0x5'))['EventEmitter'];var utils=require(_0xb057('0x6'));var logger=require(_0xb057('0x7'))('email');function EmailImap(_0x37ec1a,_0x40fed9){this[_0xb057('0x8')]=_0x37ec1a[_0xb057('0x8')];this[_0xb057('0x9')]=this[_0xb057('0xa')](_0x37ec1a,_0x40fed9);this[_0xb057('0xb')]=new Imap(this['account']);this['imap']['once'](_0xb057('0xc'),this[_0xb057('0xd')][_0xb057('0xe')](this));this['imap']['once'](_0xb057('0xf'),this[_0xb057('0x10')][_0xb057('0xe')](this));this[_0xb057('0xb')]['on'](_0xb057('0x11'),this[_0xb057('0x12')][_0xb057('0xe')](this));this[_0xb057('0xb')][_0xb057('0x13')]();}util[_0xb057('0x14')](EmailImap,EventEmitter);EmailImap[_0xb057('0x15')][_0xb057('0xa')]=function(_0x5f1776,_0x3a409a){var _0x315fe8={'connTimeout':_0x5f1776[_0xb057('0x16')]?_0x5f1776['connTimeout']*0x3e8:0x2710,'authTimeout':_0x5f1776[_0xb057('0x17')]?_0x5f1776[_0xb057('0x17')]*0x3e8:0x1388};if(_0x5f1776[_0xb057('0x18')]){_0x315fe8[_0xb057('0x19')]=_0x5f1776[_0xb057('0x19')];if(_0x5f1776[_0xb057('0x1a')]){_0x315fe8[_0xb057('0x1b')]=utils[_0xb057('0x1c')](_0x5f1776[_0xb057('0x1d')][_0xb057('0x1e')],_0x5f1776['user']);}else{_0x315fe8['password']=_0x5f1776[_0xb057('0x1f')];}}else{if(_0x5f1776[_0xb057('0x20')]){_0x315fe8['user']=_0x5f1776[_0xb057('0x19')];_0x315fe8[_0xb057('0x1f')]=_0x5f1776[_0xb057('0x1f')];}}_0x315fe8['email']=_0x3a409a||_0x5f1776['user']||_0xb057('0x21');_0x315fe8['host']=_0x5f1776[_0xb057('0x22')];_0x315fe8[_0xb057('0x23')]=_0x5f1776[_0xb057('0x23')]||0x3e1;if(_0x5f1776[_0xb057('0x24')]){_0x315fe8[_0xb057('0x24')]=!![];}else{_0x315fe8['tls']=![];_0x315fe8['autotls']=_0xb057('0x25');}return _0x315fe8;};EmailImap[_0xb057('0x15')][_0xb057('0xd')]=function(){this[_0xb057('0xb')][_0xb057('0x26')](this[_0xb057('0x8')],![],this[_0xb057('0x27')][_0xb057('0xe')](this));};EmailImap['prototype']['handleOpenBox']=function(_0x24ca8b,_0x5e3326){if(_0x24ca8b){this[_0xb057('0x12')](_0x24ca8b,!![]);}else{this[_0xb057('0x28')]('box',_0x5e3326);this[_0xb057('0x29')]();}};EmailImap[_0xb057('0x15')][_0xb057('0x2a')]=function(_0x3b3008){if(_0x3b3008){this[_0xb057('0x12')](_0x3b3008,!![]);}else{this['imap']['end']();}};EmailImap[_0xb057('0x15')][_0xb057('0x29')]=function(){this[_0xb057('0xb')]['search']([_0xb057('0x2b')],this[_0xb057('0x2c')]['bind'](this));};EmailImap[_0xb057('0x15')][_0xb057('0x2c')]=function(_0x35c67f,_0x39ee5a){if(_0x35c67f){this[_0xb057('0x12')](_0x35c67f,!![]);}else{if(_0x39ee5a[_0xb057('0x2d')]){try{var _0x28ee82=this[_0xb057('0xb')][_0xb057('0x2e')](_0x39ee5a,{'bodies':'','markSeen':!![]});_0x28ee82['on'](_0xb057('0x2f'),this[_0xb057('0x30')]['bind'](this));_0x28ee82[_0xb057('0x31')](_0xb057('0x11'),this['handleFetchError'][_0xb057('0xe')](this));_0x28ee82[_0xb057('0x31')](_0xb057('0xf'),this[_0xb057('0x32')]['bind'](this));}catch(_0x47df7d){logger[_0xb057('0x11')](_0x47df7d);}}else{this[_0xb057('0xb')]['closeBox'](!![],this['handleCloseBox'][_0xb057('0xe')](this));}}};EmailImap[_0xb057('0x15')]['handleFetchMessage']=function(_0x2f0019){_0x2f0019['on'](_0xb057('0x33'),this['handleMessageBody'][_0xb057('0xe')](this));_0x2f0019[_0xb057('0x31')](_0xb057('0x34'),this['handleMessageAttributes']['bind'](this));_0x2f0019[_0xb057('0x31')](_0xb057('0xf'),this['handleMessageEnd']['bind'](this));};EmailImap['prototype'][_0xb057('0x35')]=function(_0x43f37c){simpleParser(_0x43f37c,{'Iconv':Iconv},this[_0xb057('0x36')]['bind'](this));};EmailImap['prototype'][_0xb057('0x37')]=function(){};EmailImap[_0xb057('0x15')][_0xb057('0x38')]=function(){};EmailImap[_0xb057('0x15')][_0xb057('0x36')]=function(_0x5a9857,_0x40ec0b){if(_0x5a9857){logger[_0xb057('0x11')](_0x5a9857);}else{var _0x5b5255=this;utils[_0xb057('0x39')](this['account'],_0x40ec0b,function(_0x33631b){_0x5b5255[_0xb057('0x28')](_0xb057('0x3a'),_0x33631b);});}};EmailImap[_0xb057('0x15')][_0xb057('0x32')]=function(){this[_0xb057('0xb')][_0xb057('0x3b')](!![],this[_0xb057('0x2a')]['bind'](this));};EmailImap[_0xb057('0x15')][_0xb057('0x3c')]=function(_0x46b93a){this[_0xb057('0x12')](_0x46b93a);this['imap'][_0xb057('0x3b')](!![],this[_0xb057('0x2a')][_0xb057('0xe')](this));};EmailImap[_0xb057('0x15')][_0xb057('0x10')]=function(){this['emit'](_0xb057('0xf'));};EmailImap['prototype'][_0xb057('0x12')]=function(_0x455c0d,_0x4ab58c){logger[_0xb057('0x11')](_0xb057('0x12'),this[_0xb057('0x9')][_0xb057('0x3a')],JSON[_0xb057('0x3d')](_0x455c0d));var _0x2b4f5a='';if(_0x455c0d){if(_0x455c0d[_0xb057('0x3e')]){_0x2b4f5a=_0x455c0d[_0xb057('0x3e')];}else{for(var _0x18b319 in _0x455c0d){if(_0x455c0d[_0xb057('0x3f')](_0x18b319)){_0x2b4f5a+=_[_0xb057('0x40')](_0x18b319)+':\x20'+_0x455c0d[_0x18b319]+'\x0a';}}}}if(_0x4ab58c){this[_0xb057('0xb')]['end']();}else{this[_0xb057('0x28')](_0xb057('0x11'),_0x2b4f5a);this[_0xb057('0x28')](_0xb057('0xf'));}};module['exports']=EmailImap;
\ No newline at end of file
index 3da2b35..7567ad1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd7a=['send','createTransport','use','sendMail','toString','verify','exports','nodemailer','prototype'];(function(_0x1e03e4,_0x362f76){var _0x4a887e=function(_0x13f548){while(--_0x13f548){_0x1e03e4['push'](_0x1e03e4['shift']());}};_0x4a887e(++_0x362f76);}(_0xbd7a,0x181));var _0xabd7=function(_0x464251,_0x41951f){_0x464251=_0x464251-0x0;var _0x47b041=_0xbd7a[_0x464251];return _0x47b041;};'use strict';var nodemailer=require(_0xabd7('0x0'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0xabd7('0x1')][_0xabd7('0x2')]=function(_0x305a6,_0x1f6166){return new Promise(function(_0x170310,_0x12041c){var _0x4219b1=nodemailer[_0xabd7('0x3')](_0x305a6);_0x4219b1[_0xabd7('0x4')]('compile',inlineBase64());_0x4219b1[_0xabd7('0x5')](_0x1f6166,function(_0x3d6848,_0x52b953){if(_0x3d6848){_0x12041c(_0x3d6848[_0xabd7('0x6')]());}else{_0x170310(_0x52b953);}});});};EmailSmtp[_0xabd7('0x1')][_0xabd7('0x7')]=function(_0x4e1ae8){return new Promise(function(_0x15d7a0,_0x270e78){var _0x4e431a=nodemailer[_0xabd7('0x3')](_0x4e1ae8);_0x4e431a['verify'](function(_0x447d76,_0x2dec6e){if(_0x447d76){_0x270e78(_0x447d76[_0xabd7('0x6')]());}else{if(_0x2dec6e){_0x15d7a0(_0x2dec6e);}else{_0x270e78('Not\x20verifired');}}});});};module[_0xabd7('0x8')]=EmailSmtp;
\ No newline at end of file
+var _0xcaf3=['compile','sendMail','verify','createTransport','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64','prototype','send','use'];(function(_0x515079,_0x46d209){var _0xf36fa0=function(_0x33da59){while(--_0x33da59){_0x515079['push'](_0x515079['shift']());}};_0xf36fa0(++_0x46d209);}(_0xcaf3,0x1ea));var _0x3caf=function(_0x532d78,_0x25b6a8){_0x532d78=_0x532d78-0x0;var _0x5990c4=_0xcaf3[_0x532d78];return _0x5990c4;};'use strict';var nodemailer=require(_0x3caf('0x0'));var inlineBase64=require(_0x3caf('0x1'));function EmailSmtp(){}EmailSmtp[_0x3caf('0x2')][_0x3caf('0x3')]=function(_0x718939,_0x50bbe8){return new Promise(function(_0x23041b,_0x39c439){var _0x2970f2=nodemailer['createTransport'](_0x718939);_0x2970f2[_0x3caf('0x4')](_0x3caf('0x5'),inlineBase64());_0x2970f2[_0x3caf('0x6')](_0x50bbe8,function(_0x3195ce,_0x28e2b8){if(_0x3195ce){_0x39c439(_0x3195ce['toString']());}else{_0x23041b(_0x28e2b8);}});});};EmailSmtp[_0x3caf('0x2')][_0x3caf('0x7')]=function(_0x1ab8fb){return new Promise(function(_0x3f8c17,_0x487e70){var _0x5546e8=nodemailer[_0x3caf('0x8')](_0x1ab8fb);_0x5546e8[_0x3caf('0x7')](function(_0x24ef6c,_0x9c13de){if(_0x24ef6c){_0x487e70(_0x24ef6c['toString']());}else{if(_0x9c13de){_0x3f8c17(_0x9c13de);}else{_0x487e70(_0x3caf('0x9'));}}});});};module[_0x3caf('0xa')]=EmailSmtp;
\ No newline at end of file
index b2f35f7..48723c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f49=['user=','auth=Bearer\x20','utf-8','toString','base64','lodash','moment','randomstring','util','node-tnef','email','../../../config/environment','value','address','@xcally.com','head','name','indexOf','split','length','slice','join','Anonymous','pop','anonymous','generate','html','test','includes','<img','attachments','forEach','push','replace','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','originTo','isEmpty','originCc','bcc','attach','attachment','filename','attachment-','format','%s-%s','root','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','Precedence:\x20auto_reply','line','parser','from','subject','messageId','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','BodyHTML','Attachments','Title','<p>Empty\x20message</p>'];(function(_0x59172a,_0x2826d2){var _0x43da11=function(_0x306e76){while(--_0x306e76){_0x59172a['push'](_0x59172a['shift']());}};_0x43da11(++_0x2826d2);}(_0x2f49,0x16d));var _0x92f4=function(_0x5c6eaa,_0x1a022f){_0x5c6eaa=_0x5c6eaa-0x0;var _0x516c44=_0x2f49[_0x5c6eaa];return _0x516c44;};'use strict';var _=require(_0x92f4('0x0'));var moment=require(_0x92f4('0x1'));var random=require(_0x92f4('0x2'));var fs=require('fs');var path=require('path');var util=require(_0x92f4('0x3'));var tnef=require(_0x92f4('0x4'));var logger=require('../../../config/logger')(_0x92f4('0x5'));var config=require(_0x92f4('0x6'));function getAddress(_0x3fc90b){var _0x249982=_['head'](_0x3fc90b[_0x92f4('0x7')]);return _0x249982&&_0x249982[_0x92f4('0x8')]?_0x249982[_0x92f4('0x8')]:'anonymous'+random['generate'](0x6)+_0x92f4('0x9');}function getFirstName(_0x48ae39){var _0x419628=_[_0x92f4('0xa')](_0x48ae39[_0x92f4('0x7')]);if(_0x419628&&_0x419628[_0x92f4('0xb')]){if(_0x419628['name']==_0x419628['address']){return _0x419628[_0x92f4('0xb')]['substring'](0x0,_0x419628[_0x92f4('0xb')][_0x92f4('0xc')]('@'));}var _0x44eaa3=_0x419628['name'][_0x92f4('0xd')](/\s+/);return _0x44eaa3[_0x92f4('0xe')]>0x1?_0x44eaa3[_0x92f4('0xf')](0x0,-0x1)[_0x92f4('0x10')]('\x20'):_0x419628[_0x92f4('0xb')];}return _0x92f4('0x11');}function getLastName(_0x3d1193){var _0x3b5a33=_['head'](_0x3d1193[_0x92f4('0x7')]);if(_0x3b5a33&&_0x3b5a33[_0x92f4('0xb')]){var _0x75799b=_0x3b5a33[_0x92f4('0xb')][_0x92f4('0xd')](/\s+/);return _0x75799b[_0x92f4('0xe')]>0x1?_0x75799b[_0x92f4('0x12')]():'';}return'';}function getMails(_0x321347,_0x2c14dc){var _0x5cb2d9='';for(var _0x5baa2b=0x0;_0x5baa2b<_0x2c14dc[_0x92f4('0x7')][_0x92f4('0xe')];_0x5baa2b+=0x1){if(_0x2c14dc[_0x92f4('0x7')][_0x5baa2b][_0x92f4('0x8')]!==_0x321347){if(!_['isEmpty'](_0x5cb2d9)){_0x5cb2d9+=',';}_0x5cb2d9+=_0x2c14dc[_0x92f4('0x7')][_0x5baa2b][_0x92f4('0xb')]||_0x2c14dc[_0x92f4('0x7')][_0x5baa2b][_0x92f4('0x8')]||'';_0x5cb2d9+='\x20<';_0x5cb2d9+=_0x2c14dc[_0x92f4('0x7')][_0x5baa2b]['address']?_0x2c14dc['value'][_0x5baa2b][_0x92f4('0x8')]:_0x92f4('0x13')+random[_0x92f4('0x14')](0x6)+'@xcally.com';_0x5cb2d9+='>';}}return _0x5cb2d9;}function parseEmail(_0x137274,_0x22323e,_0x213a16){if(_0x22323e[_0x92f4('0x15')]){var _0x376316=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x376316[_0x92f4('0x16')](_0x22323e['html'])){_0x22323e[_0x92f4('0x15')]=_0x22323e[_0x92f4('0x15')]['replace'](_0x376316,'');}if(_0x22323e[_0x92f4('0x15')][_0x92f4('0x17')](_0x92f4('0x18'))){var _0x15bfec=[];_0x22323e[_0x92f4('0x19')][_0x92f4('0x1a')](_0x554a8e=>{_0x15bfec[_0x92f4('0x1b')](_0x554a8e['filename']);});var _0x114363=/<img.*? _SRC(.*?)[^>]+>/g;var _0xa4572a=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x397797=_0x22323e['html'][_0x92f4('0x1c')](_0xa4572a,_0x92f4('0x1d'));var _0x58bae0=_0x397797[_0x92f4('0x1c')](_0x114363,_0x92f4('0x1e'));for(let _0x18390a=0x0;_0x18390a<_0x15bfec[_0x92f4('0xe')];_0x18390a++){var _0x3b214b=_0x58bae0['replace'](_0x92f4('0x1e'),_0x92f4('0x1f')+_0x15bfec[_0x18390a]+_0x92f4('0x20'));_0x58bae0=_0x3b214b;}_0x22323e['html']=_0x58bae0;}_0x213a16[_0x92f4('0x21')]=_0x22323e[_0x92f4('0x15')];}else{_0x213a16[_0x92f4('0x21')]=_0x22323e['textAsHtml'];}if(_0x213a16[_0x92f4('0x21')]){_0x213a16['body']=_0x213a16[_0x92f4('0x21')][_0x92f4('0x1c')](/<a\s+/gi,_0x92f4('0x22'));}if(_0x22323e['to']){_0x213a16[_0x92f4('0x23')][_0x92f4('0x24')]=getMails(null,_0x22323e['to']);var _0x505b6f=getMails(_0x137274[_0x92f4('0x5')],_0x22323e['to']);if(!_[_0x92f4('0x25')](_0x505b6f)){_0x213a16['message']['cc']+=_0x505b6f;}}if(_0x22323e['cc']){_0x213a16['message'][_0x92f4('0x26')]=getMails(null,_0x22323e['cc']);var _0x4d1e70=getMails(_0x137274['email'],_0x22323e['cc']);if(!_[_0x92f4('0x25')](_0x4d1e70)){if(!_[_0x92f4('0x25')](_0x213a16[_0x92f4('0x23')]['cc'])){_0x213a16['message']['cc']+=',';}_0x213a16[_0x92f4('0x23')]['cc']+=_0x4d1e70;}}if(!_[_0x92f4('0x17')](_0x213a16[_0x92f4('0x23')][_0x92f4('0x24')],_0x137274['email'])&&!_[_0x92f4('0x17')](_0x213a16[_0x92f4('0x23')]['originCc'],_0x137274['email'])){_0x213a16[_0x92f4('0x23')][_0x92f4('0x27')]=_0x137274[_0x92f4('0x5')];}if(_0x22323e[_0x92f4('0x19')]&&_0x22323e[_0x92f4('0x19')][_0x92f4('0xe')]){_0x213a16['message'][_0x92f4('0x28')]=_0x22323e[_0x92f4('0x19')]['length'];for(var _0x21e504=0x0,_0x3d5294,_0x1c0219,_0x188faa;_0x21e504<_0x22323e[_0x92f4('0x19')]['length'];_0x21e504+=0x1){if(_0x22323e[_0x92f4('0x19')][_0x21e504]['type']===_0x92f4('0x29')){_0x188faa=_0x22323e[_0x92f4('0x19')][_0x21e504][_0x92f4('0x2a')]||_0x92f4('0x2b')+_0x21e504;_0x3d5294=util[_0x92f4('0x2c')](_0x92f4('0x2d'),Date['now'](),_0x188faa);_0x1c0219=path[_0x92f4('0x10')](config[_0x92f4('0x2e')],'server/files/attachments/',_0x3d5294);fs['writeFileSync'](_0x1c0219,_0x22323e[_0x92f4('0x19')][_0x21e504][_0x92f4('0x2f')]);_0x213a16[_0x92f4('0x23')][_0x92f4('0x19')][_0x92f4('0x1b')]({'name':_0x188faa,'basename':_0x3d5294,'type':_0x22323e[_0x92f4('0x19')][_0x21e504][_0x92f4('0x30')],'filepath':_0x1c0219});}}}if(_0x22323e[_0x92f4('0x31')]&&_0x22323e['headerLines'][_0x92f4('0xe')]>0x0){var _0x1cd47a=[_0x92f4('0x32'),'X-Auto-Response-Suppress:\x20All',_0x92f4('0x33')];for(var _0x3d3cde=0x0;_0x3d3cde<_0x22323e[_0x92f4('0x31')][_0x92f4('0xe')];_0x3d3cde++){var _0x4ceb54=_[_0x92f4('0xc')](_0x1cd47a,_0x22323e[_0x92f4('0x31')][_0x3d3cde][_0x92f4('0x34')]);if(_0x4ceb54>=0x0){_0x213a16['isAutoreply']=!![];}}}return _0x213a16;}exports[_0x92f4('0x35')]=function(_0x15028a,_0x5f5a3d,_0x5aea7f){var _0x23458b={'from':getAddress(_0x5f5a3d[_0x92f4('0x36')]),'firstName':getFirstName(_0x5f5a3d['from']),'lastName':getLastName(_0x5f5a3d[_0x92f4('0x36')]),'mapKey':'email','message':{'from':getMails(_0x15028a[_0x92f4('0x5')],_0x5f5a3d[_0x92f4('0x36')]),'to':_0x15028a['email'],'cc':'','subject':_0x5f5a3d[_0x92f4('0x37')]||'','messageId':_0x5f5a3d[_0x92f4('0x38')],'inReplyTo':_0x5f5a3d['inReplyTo'],'sentAt':moment(_0x5f5a3d['date'])[_0x92f4('0x2c')](_0x92f4('0x39')),'attach':![],'attachments':[]}};if(!_0x5f5a3d[_0x92f4('0x15')]&&!_0x5f5a3d[_0x92f4('0x3a')]){var _0x2f91cf=_[_0x92f4('0x3b')](_0x5f5a3d['attachments'],{'contentType':_0x92f4('0x3c')});if(_0x2f91cf[_0x92f4('0xe')]){logger['info'](util[_0x92f4('0x2c')](_0x92f4('0x3d'),_0x5f5a3d[_0x92f4('0x38')]));tnef[_0x92f4('0x3e')](_['first'](_0x2f91cf)[_0x92f4('0x2f')],function(_0x2e9c5a,_0x38f431){if(_0x38f431){_0x5f5a3d[_0x92f4('0x15')]=_0x38f431[_0x92f4('0x3f')]||'<p>Empty\x20message</p>';if(_0x38f431['Attachments']){for(var _0x542ce1=0x0;_0x542ce1<_0x38f431[_0x92f4('0x40')][_0x92f4('0xe')];_0x542ce1++){var _0x3db027=_0x38f431['Attachments'][_0x542ce1];_0x23458b['message'][_0x92f4('0x19')][_0x92f4('0x1b')]({'filename':_0x3db027[_0x92f4('0x41')],'content':Buffer[_0x92f4('0x36')](_0x3db027['Data'])});}}}_0x5aea7f(parseEmail(_0x15028a,_0x5f5a3d,_0x23458b));});}else{_0x5f5a3d[_0x92f4('0x15')]=_0x92f4('0x42');_0x5aea7f(parseEmail(_0x15028a,_0x5f5a3d,_0x23458b));}}else{_0x5aea7f(parseEmail(_0x15028a,_0x5f5a3d,_0x23458b));}};exports['generateXOAuth2Token']=function(_0xbb7d71,_0xd75712){var _0x5888dd=[_0x92f4('0x43')+(_0xd75712||''),_0x92f4('0x44')+_0xbb7d71,'',''];return Buffer['from'](_0x5888dd[_0x92f4('0x10')]('\ 1'),_0x92f4('0x45'))[_0x92f4('0x46')](_0x92f4('0x47'));};
\ No newline at end of file
+var _0xd5bc=['pop','isEmpty','html','replace','includes','<img','attachments','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','textAsHtml','body','<a\x20target=\x22_blank\x22\x20','message','originTo','bcc','attach','type','attachment','attachment-','now','root','content','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','BodyHTML','Attachments','Title','Data','<p>Empty\x20message</p>','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','moment','util','node-tnef','../../../config/logger','email','../../../config/environment','head','address','anonymous','generate','@xcally.com','value','name','substring','indexOf','split','slice','join','Anonymous','length'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0xd5bc,0xc4));var _0xcd5b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd5bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var moment=require(_0xcd5b('0x0'));var random=require('randomstring');var fs=require('fs');var path=require('path');var util=require(_0xcd5b('0x1'));var tnef=require(_0xcd5b('0x2'));var logger=require(_0xcd5b('0x3'))(_0xcd5b('0x4'));var config=require(_0xcd5b('0x5'));function getAddress(_0x569578){var _0x58efd2=_[_0xcd5b('0x6')](_0x569578['value']);return _0x58efd2&&_0x58efd2[_0xcd5b('0x7')]?_0x58efd2[_0xcd5b('0x7')]:_0xcd5b('0x8')+random[_0xcd5b('0x9')](0x6)+_0xcd5b('0xa');}function getFirstName(_0x471332){var _0x68a0e1=_[_0xcd5b('0x6')](_0x471332[_0xcd5b('0xb')]);if(_0x68a0e1&&_0x68a0e1[_0xcd5b('0xc')]){if(_0x68a0e1[_0xcd5b('0xc')]==_0x68a0e1[_0xcd5b('0x7')]){return _0x68a0e1[_0xcd5b('0xc')][_0xcd5b('0xd')](0x0,_0x68a0e1[_0xcd5b('0xc')][_0xcd5b('0xe')]('@'));}var _0x22bbf2=_0x68a0e1[_0xcd5b('0xc')][_0xcd5b('0xf')](/\s+/);return _0x22bbf2['length']>0x1?_0x22bbf2[_0xcd5b('0x10')](0x0,-0x1)[_0xcd5b('0x11')]('\x20'):_0x68a0e1[_0xcd5b('0xc')];}return _0xcd5b('0x12');}function getLastName(_0x32aaf2){var _0x3cc539=_['head'](_0x32aaf2[_0xcd5b('0xb')]);if(_0x3cc539&&_0x3cc539['name']){var _0x1c6017=_0x3cc539[_0xcd5b('0xc')][_0xcd5b('0xf')](/\s+/);return _0x1c6017[_0xcd5b('0x13')]>0x1?_0x1c6017[_0xcd5b('0x14')]():'';}return'';}function getMails(_0x5f3a27,_0x48d690){var _0x270a8b='';for(var _0x2c02dc=0x0;_0x2c02dc<_0x48d690[_0xcd5b('0xb')][_0xcd5b('0x13')];_0x2c02dc+=0x1){if(_0x48d690['value'][_0x2c02dc][_0xcd5b('0x7')]!==_0x5f3a27){if(!_[_0xcd5b('0x15')](_0x270a8b)){_0x270a8b+=',';}_0x270a8b+=_0x48d690[_0xcd5b('0xb')][_0x2c02dc]['name']||_0x48d690[_0xcd5b('0xb')][_0x2c02dc]['address']||'';_0x270a8b+='\x20<';_0x270a8b+=_0x48d690[_0xcd5b('0xb')][_0x2c02dc][_0xcd5b('0x7')]?_0x48d690[_0xcd5b('0xb')][_0x2c02dc][_0xcd5b('0x7')]:_0xcd5b('0x8')+random['generate'](0x6)+_0xcd5b('0xa');_0x270a8b+='>';}}return _0x270a8b;}function parseEmail(_0x8b9432,_0x8636,_0x156e85){if(_0x8636['html']){var _0x3a9006=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x3a9006['test'](_0x8636['html'])){_0x8636['html']=_0x8636[_0xcd5b('0x16')][_0xcd5b('0x17')](_0x3a9006,'');}if(_0x8636[_0xcd5b('0x16')][_0xcd5b('0x18')](_0xcd5b('0x19'))){var _0x797381=[];_0x8636[_0xcd5b('0x1a')][_0xcd5b('0x1b')](_0x4ad060=>{_0x797381[_0xcd5b('0x1c')](_0x4ad060[_0xcd5b('0x1d')]);});var _0x433df6=/<img.*? _SRC(.*?)[^>]+>/g;var _0x1adcbd=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x557bc0=_0x8636[_0xcd5b('0x16')][_0xcd5b('0x17')](_0x1adcbd,'_SRC');var _0x370ddc=_0x557bc0['replace'](_0x433df6,_0xcd5b('0x1e'));for(let _0x1c58e7=0x0;_0x1c58e7<_0x797381['length'];_0x1c58e7++){var _0x7b43c3=_0x370ddc[_0xcd5b('0x17')](_0xcd5b('0x1e'),_0xcd5b('0x1f')+_0x797381[_0x1c58e7]+'\x20]</span>');_0x370ddc=_0x7b43c3;}_0x8636['html']=_0x370ddc;}_0x156e85['body']=_0x8636[_0xcd5b('0x16')];}else{_0x156e85['body']=_0x8636[_0xcd5b('0x20')];}if(_0x156e85[_0xcd5b('0x21')]){_0x156e85[_0xcd5b('0x21')]=_0x156e85[_0xcd5b('0x21')][_0xcd5b('0x17')](/<a\s+/gi,_0xcd5b('0x22'));}if(_0x8636['to']){_0x156e85[_0xcd5b('0x23')]['originTo']=getMails(null,_0x8636['to']);var _0x5c0fcd=getMails(_0x8b9432['email'],_0x8636['to']);if(!_[_0xcd5b('0x15')](_0x5c0fcd)){_0x156e85['message']['cc']+=_0x5c0fcd;}}if(_0x8636['cc']){_0x156e85['message']['originCc']=getMails(null,_0x8636['cc']);var _0x4f9b34=getMails(_0x8b9432[_0xcd5b('0x4')],_0x8636['cc']);if(!_[_0xcd5b('0x15')](_0x4f9b34)){if(!_[_0xcd5b('0x15')](_0x156e85[_0xcd5b('0x23')]['cc'])){_0x156e85['message']['cc']+=',';}_0x156e85[_0xcd5b('0x23')]['cc']+=_0x4f9b34;}}if(!_['includes'](_0x156e85[_0xcd5b('0x23')][_0xcd5b('0x24')],_0x8b9432['email'])&&!_[_0xcd5b('0x18')](_0x156e85['message']['originCc'],_0x8b9432['email'])){_0x156e85[_0xcd5b('0x23')][_0xcd5b('0x25')]=_0x8b9432[_0xcd5b('0x4')];}if(_0x8636[_0xcd5b('0x1a')]&&_0x8636[_0xcd5b('0x1a')]['length']){_0x156e85['message'][_0xcd5b('0x26')]=_0x8636[_0xcd5b('0x1a')][_0xcd5b('0x13')];for(var _0x1d29e4=0x0,_0x4913e8,_0x5458c8,_0x24c0ee;_0x1d29e4<_0x8636[_0xcd5b('0x1a')]['length'];_0x1d29e4+=0x1){if(_0x8636[_0xcd5b('0x1a')][_0x1d29e4][_0xcd5b('0x27')]===_0xcd5b('0x28')){_0x24c0ee=_0x8636['attachments'][_0x1d29e4][_0xcd5b('0x1d')]||_0xcd5b('0x29')+_0x1d29e4;_0x4913e8=util['format']('%s-%s',Date[_0xcd5b('0x2a')](),_0x24c0ee);_0x5458c8=path['join'](config[_0xcd5b('0x2b')],'server/files/attachments/',_0x4913e8);fs['writeFileSync'](_0x5458c8,_0x8636['attachments'][_0x1d29e4][_0xcd5b('0x2c')]);_0x156e85['message'][_0xcd5b('0x1a')]['push']({'name':_0x24c0ee,'basename':_0x4913e8,'type':_0x8636[_0xcd5b('0x1a')][_0x1d29e4]['contentType'],'filepath':_0x5458c8});}}}if(_0x8636['headerLines']&&_0x8636[_0xcd5b('0x2d')]['length']>0x0){var _0x30e8e7=[_0xcd5b('0x2e'),_0xcd5b('0x2f'),_0xcd5b('0x30')];for(var _0x586797=0x0;_0x586797<_0x8636['headerLines'][_0xcd5b('0x13')];_0x586797++){var _0x281027=_[_0xcd5b('0xe')](_0x30e8e7,_0x8636['headerLines'][_0x586797][_0xcd5b('0x31')]);if(_0x281027>=0x0){_0x156e85[_0xcd5b('0x32')]=!![];}}}return _0x156e85;}exports[_0xcd5b('0x33')]=function(_0x195af1,_0x56d9f0,_0x32293d){var _0x16b1a0={'from':getAddress(_0x56d9f0[_0xcd5b('0x34')]),'firstName':getFirstName(_0x56d9f0['from']),'lastName':getLastName(_0x56d9f0[_0xcd5b('0x34')]),'mapKey':_0xcd5b('0x4'),'message':{'from':getMails(_0x195af1[_0xcd5b('0x4')],_0x56d9f0[_0xcd5b('0x34')]),'to':_0x195af1['email'],'cc':'','subject':_0x56d9f0[_0xcd5b('0x35')]||'','messageId':_0x56d9f0[_0xcd5b('0x36')],'inReplyTo':_0x56d9f0[_0xcd5b('0x37')],'sentAt':moment(_0x56d9f0[_0xcd5b('0x38')])['format'](_0xcd5b('0x39')),'attach':![],'attachments':[]}};if(!_0x56d9f0['html']&&!_0x56d9f0[_0xcd5b('0x20')]){var _0x3f1a7d=_[_0xcd5b('0x3a')](_0x56d9f0[_0xcd5b('0x1a')],{'contentType':_0xcd5b('0x3b')});if(_0x3f1a7d[_0xcd5b('0x13')]){logger[_0xcd5b('0x3c')](util['format']('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x56d9f0['messageId']));tnef['parseBuffer'](_['first'](_0x3f1a7d)['content'],function(_0x37570f,_0x360336){if(_0x360336){_0x56d9f0[_0xcd5b('0x16')]=_0x360336[_0xcd5b('0x3d')]||'<p>Empty\x20message</p>';if(_0x360336[_0xcd5b('0x3e')]){for(var _0x4f9f99=0x0;_0x4f9f99<_0x360336[_0xcd5b('0x3e')]['length'];_0x4f9f99++){var _0x540096=_0x360336[_0xcd5b('0x3e')][_0x4f9f99];_0x16b1a0[_0xcd5b('0x23')][_0xcd5b('0x1a')][_0xcd5b('0x1c')]({'filename':_0x540096[_0xcd5b('0x3f')],'content':Buffer[_0xcd5b('0x34')](_0x540096[_0xcd5b('0x40')])});}}}_0x32293d(parseEmail(_0x195af1,_0x56d9f0,_0x16b1a0));});}else{_0x56d9f0[_0xcd5b('0x16')]=_0xcd5b('0x41');_0x32293d(parseEmail(_0x195af1,_0x56d9f0,_0x16b1a0));}}else{_0x32293d(parseEmail(_0x195af1,_0x56d9f0,_0x16b1a0));}};exports[_0xcd5b('0x42')]=function(_0x16b0c6,_0x2c9c00){var _0x15b818=[_0xcd5b('0x43')+(_0x2c9c00||''),_0xcd5b('0x44')+_0x16b0c6,'',''];return Buffer['from'](_0x15b818[_0xcd5b('0x11')]('\ 1'),_0xcd5b('0x45'))[_0xcd5b('0x46')](_0xcd5b('0x47'));};
\ No newline at end of file
index 1f27ae8..53bf9b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1236=['active','Imap','Smtp','exports','lodash','name','Service','key','SERV'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x1236,0x9d));var _0x6123=function(_0x2d83fa,_0x40d38f){_0x2d83fa=_0x2d83fa-0x0;var _0x5cf8af=_0x1236[_0x2d83fa];return _0x5cf8af;};'use strict';var _=require(_0x6123('0x0'));function MailAccount(_0x5393cf){this['id']=_0x5393cf['id']||0x0;this[_0x6123('0x1')]=_0x5393cf[_0x6123('0x1')]||_0x6123('0x2');this['key']=_0x5393cf[_0x6123('0x3')]||_0x6123('0x4');this['active']=_0x5393cf[_0x6123('0x5')]||![];this[_0x6123('0x6')]=_0x5393cf['Imap']||[];this[_0x6123('0x7')]=_0x5393cf[_0x6123('0x7')]||[];}module[_0x6123('0x8')]=MailAccount;
\ No newline at end of file
+var _0x25f9=['SERV','active','Imap','Smtp','exports','lodash','name','Service','key'];(function(_0x22eb96,_0x3c2d8d){var _0x5e1adf=function(_0x22e392){while(--_0x22e392){_0x22eb96['push'](_0x22eb96['shift']());}};_0x5e1adf(++_0x3c2d8d);}(_0x25f9,0x1d0));var _0x925f=function(_0x1a00d5,_0x487d49){_0x1a00d5=_0x1a00d5-0x0;var _0x4a74ed=_0x25f9[_0x1a00d5];return _0x4a74ed;};'use strict';var _=require(_0x925f('0x0'));function MailAccount(_0x2b24f6){this['id']=_0x2b24f6['id']||0x0;this[_0x925f('0x1')]=_0x2b24f6[_0x925f('0x1')]||_0x925f('0x2');this[_0x925f('0x3')]=_0x2b24f6['key']||_0x925f('0x4');this['active']=_0x2b24f6[_0x925f('0x5')]||![];this[_0x925f('0x6')]=_0x2b24f6['Imap']||[];this[_0x925f('0x7')]=_0x2b24f6['Smtp']||[];}module[_0x925f('0x8')]=MailAccount;
\ No newline at end of file
index e726cfe..7d4b31b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56f3=['exports','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined'];(function(_0x58d4f0,_0x78cd7){var _0x28ff3c=function(_0x3518b9){while(--_0x3518b9){_0x58d4f0['push'](_0x58d4f0['shift']());}};_0x28ff3c(++_0x78cd7);}(_0x56f3,0x109));var _0x356f=function(_0x4b7215,_0x329f5f){_0x4b7215=_0x4b7215-0x0;var _0x3c0680=_0x56f3[_0x4b7215];return _0x3c0680;};'use strict';var _=require(_0x356f('0x0'));var MailAccount=require(_0x356f('0x1'));var Realtime=function(){this[_0x356f('0x2')]={};};function freeIsNotKey(_0x3f47c5,_0x1ff14c,_0x545690){var _0x168052=_[_0x356f('0x3')](_0x3f47c5,function(_0x22c19d,_0x223d01){return _0x22c19d[_0x545690];});for(var _0x425a3d in _0x1ff14c){if(_0x1ff14c[_0x356f('0x4')](_0x425a3d)){if(!_0x168052[_0x425a3d]){delete _0x1ff14c[_0x425a3d];}}}}Realtime[_0x356f('0x5')][_0x356f('0x6')]=function(_0x402a59,_0x461e09){for(var _0x330bd3 in _0x461e09){if(_0x402a59['hasOwnProperty'](_0x330bd3)){_0x402a59[_0x330bd3]=_0x461e09[_0x330bd3];}}};Realtime['prototype'][_0x356f('0x7')]=function(){var _0x582909=this;return function(_0x5898ef){if(_0x5898ef){freeIsNotKey(_0x5898ef,_0x582909['mailAccounts'],'id');for(var _0x4813d1=0x0,_0x20743={},_0x45d30e={};_0x4813d1<_0x5898ef[_0x356f('0x8')];_0x4813d1+=0x1){_0x20743=_0x5898ef[_0x4813d1];if(_[_0x356f('0x9')](_0x582909['mailAccounts'][_0x20743['id']])){_0x582909[_0x356f('0x2')][_0x20743['id']]=new MailAccount(_0x20743);}else{_['merge'](_0x582909[_0x356f('0x2')][_0x20743['id']],_0x20743);}}}return _0x582909[_0x356f('0x2')];};};module[_0x356f('0xa')]=Realtime;
\ No newline at end of file
+var _0xc7f0=['hasOwnProperty','prototype','initMailAccounts','length','mailAccounts','merge','exports','lodash','mapKeys'];(function(_0x1abeb2,_0x79f462){var _0x48da20=function(_0x42a90b){while(--_0x42a90b){_0x1abeb2['push'](_0x1abeb2['shift']());}};_0x48da20(++_0x79f462);}(_0xc7f0,0x178));var _0x0c7f=function(_0x532654,_0x412915){_0x532654=_0x532654-0x0;var _0x4d4fe4=_0xc7f0[_0x532654];return _0x4d4fe4;};'use strict';var _=require(_0x0c7f('0x0'));var MailAccount=require('../model/mailAccount');var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x421afe,_0x4a4cc3,_0x3ea50e){var _0x374e03=_[_0x0c7f('0x1')](_0x421afe,function(_0xed29f7,_0x2a5f76){return _0xed29f7[_0x3ea50e];});for(var _0x5e9287 in _0x4a4cc3){if(_0x4a4cc3[_0x0c7f('0x2')](_0x5e9287)){if(!_0x374e03[_0x5e9287]){delete _0x4a4cc3[_0x5e9287];}}}}Realtime[_0x0c7f('0x3')]['mergeFromDatabase']=function(_0x1d2507,_0x178e40){for(var _0x175d84 in _0x178e40){if(_0x1d2507[_0x0c7f('0x2')](_0x175d84)){_0x1d2507[_0x175d84]=_0x178e40[_0x175d84];}}};Realtime[_0x0c7f('0x3')][_0x0c7f('0x4')]=function(){var _0x3ab3d6=this;return function(_0x29d440){if(_0x29d440){freeIsNotKey(_0x29d440,_0x3ab3d6['mailAccounts'],'id');for(var _0x3da90a=0x0,_0xdd3dfe={},_0x5759bb={};_0x3da90a<_0x29d440[_0x0c7f('0x5')];_0x3da90a+=0x1){_0xdd3dfe=_0x29d440[_0x3da90a];if(_['isUndefined'](_0x3ab3d6[_0x0c7f('0x6')][_0xdd3dfe['id']])){_0x3ab3d6[_0x0c7f('0x6')][_0xdd3dfe['id']]=new MailAccount(_0xdd3dfe);}else{_[_0x0c7f('0x7')](_0x3ab3d6[_0x0c7f('0x6')][_0xdd3dfe['id']],_0xdd3dfe);}}}return _0x3ab3d6['mailAccounts'];};};module[_0x0c7f('0x8')]=Realtime;
\ No newline at end of file
index b46993c..4a25bc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd991=['key','ListId','TemplateId','Imap','CloudProvider','type','data5','MailServerOut','Smtp','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service','email','active'];(function(_0x43ba80,_0x291da8){var _0x11772b=function(_0x3a8217){while(--_0x3a8217){_0x43ba80['push'](_0x43ba80['shift']());}};_0x11772b(++_0x291da8);}(_0xd991,0x115));var _0x1d99=function(_0x49df6b,_0x5c70d6){_0x49df6b=_0x49df6b-0x0;var _0x3b4a60=_0xd991[_0x49df6b];return _0x3b4a60;};'use strict';var client=require(_0x1d99('0x0'));exports[_0x1d99('0x1')]=function(){return function(){return client[_0x1d99('0x2')](_0x1d99('0x3'),{'options':{'attributes':['id',_0x1d99('0x4'),'provider',_0x1d99('0x5'),_0x1d99('0x6'),_0x1d99('0x7'),_0x1d99('0x8'),_0x1d99('0x9'),_0x1d99('0xa')],'raw':![],'include':[{'model':'MailServerIn','as':_0x1d99('0xb'),'include':[{'model':_0x1d99('0xc'),'attributes':['id','name',_0x1d99('0x5'),_0x1d99('0xd'),_0x1d99('0xe')],'as':_0x1d99('0xc')}]},{'model':_0x1d99('0xf'),'as':_0x1d99('0x10'),'include':[{'model':_0x1d99('0xc'),'attributes':['id',_0x1d99('0x4'),_0x1d99('0x5'),'type',_0x1d99('0xe')],'as':_0x1d99('0xc')}]}]},'log':'getMailAccount'});};};exports[_0x1d99('0x11')]=function(_0xa64b21,_0x38c1de){return client['Request'](_0x1d99('0x12'),{'account':{'id':_0xa64b21},'body':_0x38c1de,'log':_0x1d99('0x12')});};
\ No newline at end of file
+var _0x0e76=['MailServerIn','Imap','CloudProvider','name','data5','MailServerOut','type','notify','NotifyMailAccount','../client','GetMailAccount','provider','service','email','active','key','TemplateId'];(function(_0x855e77,_0x348ad7){var _0x1edd15=function(_0x2a8fb8){while(--_0x2a8fb8){_0x855e77['push'](_0x855e77['shift']());}};_0x1edd15(++_0x348ad7);}(_0x0e76,0xc4));var _0x60e7=function(_0x3a3c81,_0x253ca1){_0x3a3c81=_0x3a3c81-0x0;var _0x53acaf=_0x0e76[_0x3a3c81];return _0x53acaf;};'use strict';var client=require(_0x60e7('0x0'));exports['getMailAccounts']=function(){return function(){return client['Request'](_0x60e7('0x1'),{'options':{'attributes':['id','name',_0x60e7('0x2'),_0x60e7('0x3'),_0x60e7('0x4'),_0x60e7('0x5'),_0x60e7('0x6'),'ListId',_0x60e7('0x7')],'raw':![],'include':[{'model':_0x60e7('0x8'),'as':_0x60e7('0x9'),'include':[{'model':_0x60e7('0xa'),'attributes':['id',_0x60e7('0xb'),_0x60e7('0x3'),'type',_0x60e7('0xc')],'as':_0x60e7('0xa')}]},{'model':_0x60e7('0xd'),'as':'Smtp','include':[{'model':_0x60e7('0xa'),'attributes':['id','name',_0x60e7('0x3'),_0x60e7('0xe'),'data5'],'as':_0x60e7('0xa')}]}]},'log':'getMailAccount'});};};exports[_0x60e7('0xf')]=function(_0x423f83,_0x520a5e){return client['Request'](_0x60e7('0x10'),{'account':{'id':_0x423f83},'body':_0x520a5e,'log':_0x60e7('0x10')});};
\ No newline at end of file
index 8089de2..102c4f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x384e=['Request','ShowSetting','loginMailFrequency','GetSettings'];(function(_0x562ec2,_0x33932b){var _0xd3a205=function(_0x21aac4){while(--_0x21aac4){_0x562ec2['push'](_0x562ec2['shift']());}};_0xd3a205(++_0x33932b);}(_0x384e,0x1c0));var _0xe384=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x384e[_0x14add3];return _0x4a174f;};'use strict';var client=require('../client');exports['getSettings']=function(){return client[_0xe384('0x0')](_0xe384('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xe384('0x2')]},'log':_0xe384('0x3')});};
\ No newline at end of file
+var _0x404b=['Request','ShowSetting','../client','getSettings'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x404b,0x1ae));var _0xb404=function(_0x49d2b8,_0x103075){_0x49d2b8=_0x49d2b8-0x0;var _0x240b01=_0x404b[_0x49d2b8];return _0x240b01;};'use strict';var client=require(_0xb404('0x0'));exports[_0xb404('0x1')]=function(){return client[_0xb404('0x2')](_0xb404('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':'GetSettings'});};
\ No newline at end of file
index 81cb75b..4b2a606 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'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 6edb39b..b34b861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6684=['../../config/express','../../routes','once','listening','log','exports','lodash','http','express','sticky-session','createServer','timeout','listen','port','socket.io','polling','localhost','adapter','socket.io-redis','redis','../../config/triggers','../../config/socketio','default'];(function(_0x4b6228,_0x3eb5a2){var _0x337693=function(_0x4ed545){while(--_0x4ed545){_0x4b6228['push'](_0x4b6228['shift']());}};_0x337693(++_0x3eb5a2);}(_0x6684,0x11a));var _0x4668=function(_0x11a220,_0x4e470a){_0x11a220=_0x11a220-0x0;var _0x20d8fe=_0x6684[_0x11a220];return _0x20d8fe;};'use strict';var _=require(_0x4668('0x0'));var http=require(_0x4668('0x1'));var express=require(_0x4668('0x2'));var sticky=require(_0x4668('0x3'));var Redis=require('ioredis');var config=require('../../config/environment');var app=express();var server=http[_0x4668('0x4')](app);server[_0x4668('0x5')]=0xdbba0;if(sticky[_0x4668('0x6')](server,config[_0x4668('0x7')])){var socketio=require(_0x4668('0x8'))(server,{'transports':['websocket',_0x4668('0x9')]});config['redis']=_['defaults'](config['redis'],{'host':_0x4668('0xa'),'port':0x18eb});socketio[_0x4668('0xb')](require(_0x4668('0xc'))({'pubClient':new Redis(config[_0x4668('0xd')]),'subClient':new Redis(config[_0x4668('0xd')])}));require(_0x4668('0xe'))['default']();require(_0x4668('0xf'))[_0x4668('0x10')](socketio);require(_0x4668('0x11'))[_0x4668('0x10')](app);require(_0x4668('0x12'))[_0x4668('0x10')](app);}else{server[_0x4668('0x13')](_0x4668('0x14'),function(){console[_0x4668('0x15')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config['port']);});}exports=module[_0x4668('0x16')]=app;
\ No newline at end of file
+var _0x4ab2=['socket.io-redis','default','../../config/express','../../routes','once','log','Express\x20server\x20listening\x20on\x20port\x20%d!','port','http','express','ioredis','timeout','listen','socket.io','websocket','polling','redis','adapter'];(function(_0x3293dd,_0xb1e551){var _0x1765a4=function(_0x2061d2){while(--_0x2061d2){_0x3293dd['push'](_0x3293dd['shift']());}};_0x1765a4(++_0xb1e551);}(_0x4ab2,0x14c));var _0x24ab=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x4ab2[_0x178e48];return _0x440d7e;};'use strict';var _=require('lodash');var http=require(_0x24ab('0x0'));var express=require(_0x24ab('0x1'));var sticky=require('sticky-session');var Redis=require(_0x24ab('0x2'));var config=require('../../config/environment');var app=express();var server=http['createServer'](app);server[_0x24ab('0x3')]=0xdbba0;if(sticky[_0x24ab('0x4')](server,config['port'])){var socketio=require(_0x24ab('0x5'))(server,{'transports':[_0x24ab('0x6'),_0x24ab('0x7')]});config['redis']=_['defaults'](config[_0x24ab('0x8')],{'host':'localhost','port':0x18eb});socketio[_0x24ab('0x9')](require(_0x24ab('0xa'))({'pubClient':new Redis(config[_0x24ab('0x8')]),'subClient':new Redis(config[_0x24ab('0x8')])}));require('../../config/triggers')[_0x24ab('0xb')]();require('../../config/socketio')['default'](socketio);require(_0x24ab('0xc'))[_0x24ab('0xb')](app);require(_0x24ab('0xd'))[_0x24ab('0xb')](app);}else{server[_0x24ab('0xe')]('listening',function(){console[_0x24ab('0xf')](_0x24ab('0x10'),config[_0x24ab('0x11')]);});}exports=module['exports']=app;
\ No newline at end of file
index 070e030..c079fc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x341a=['debug','error','message','result','catch','rpc','jayson/promise','bluebird','routing','client','Request','request','then'];(function(_0x513789,_0x3d7067){var _0xbdc2f3=function(_0x4610ac){while(--_0x4610ac){_0x513789['push'](_0x513789['shift']());}};_0xbdc2f3(++_0x3d7067);}(_0x341a,0x6e));var _0xa341=function(_0x5680f5,_0x578208){_0x5680f5=_0x5680f5-0x0;var _0x5797b0=_0x341a[_0x5680f5];return _0x5797b0;};'use strict';var jayson=require(_0xa341('0x0'));var BPromise=require(_0xa341('0x1'));var logger=require('../../config/logger')(_0xa341('0x2'));var client=jayson[_0xa341('0x3')]['http']({'port':0x2329});client[_0xa341('0x4')]=function(_0x4c7331,_0x5bfd11){return new BPromise(function(_0x581d9b,_0x7eb419){return client[_0xa341('0x5')](_0x4c7331,_0x5bfd11)[_0xa341('0x6')](function(_0xeb9fa7){logger[_0xa341('0x7')]('rpc',_0xa341('0x2'),_0x4c7331,_0x5bfd11,_0xeb9fa7);if(_0xeb9fa7[_0xa341('0x8')]){logger[_0xa341('0x8')]('rpc',_0xa341('0x2'),_0x4c7331,_0xeb9fa7['error']['message'],_0x5bfd11);return _0x7eb419(_0xeb9fa7['error'][_0xa341('0x9')]);}else{return _0x581d9b(_0xeb9fa7[_0xa341('0xa')]);}})[_0xa341('0xb')](function(_0x3d1b99){logger[_0xa341('0x8')](_0xa341('0xc'),_0xa341('0x2'),_0x4c7331,_0x3d1b99,_0x5bfd11);return _0x7eb419(_0x3d1b99);});});};module['exports']=client;
\ No newline at end of file
+var _0xc8c5=['result','catch','exports','jayson/promise','routing','http','Request','request','then','debug','rpc','error','message'];(function(_0x30cb22,_0x8cea7a){var _0x1b8ebb=function(_0x54fb88){while(--_0x54fb88){_0x30cb22['push'](_0x30cb22['shift']());}};_0x1b8ebb(++_0x8cea7a);}(_0xc8c5,0x155));var _0x5c8c=function(_0x4f749a,_0x541f4f){_0x4f749a=_0x4f749a-0x0;var _0x1152b7=_0xc8c5[_0x4f749a];return _0x1152b7;};'use strict';var jayson=require(_0x5c8c('0x0'));var BPromise=require('bluebird');var logger=require('../../config/logger')(_0x5c8c('0x1'));var client=jayson['client'][_0x5c8c('0x2')]({'port':0x2329});client[_0x5c8c('0x3')]=function(_0x4e1caf,_0x1794a8){return new BPromise(function(_0x49d921,_0x221888){return client[_0x5c8c('0x4')](_0x4e1caf,_0x1794a8)[_0x5c8c('0x5')](function(_0x4bc8e0){logger[_0x5c8c('0x6')]('rpc',_0x5c8c('0x1'),_0x4e1caf,_0x1794a8,_0x4bc8e0);if(_0x4bc8e0['error']){logger['error'](_0x5c8c('0x7'),_0x5c8c('0x1'),_0x4e1caf,_0x4bc8e0[_0x5c8c('0x8')][_0x5c8c('0x9')],_0x1794a8);return _0x221888(_0x4bc8e0[_0x5c8c('0x8')][_0x5c8c('0x9')]);}else{return _0x49d921(_0x4bc8e0[_0x5c8c('0xa')]);}})[_0x5c8c('0xb')](function(_0x3dc5ee){logger[_0x5c8c('0x8')](_0x5c8c('0x7'),_0x5c8c('0x1'),_0x4e1caf,_0x3dc5ee,_0x1794a8);return _0x221888(_0x3dc5ee);});});};module[_0x5c8c('0xc')]=client;
\ No newline at end of file
index 897834d..e99a9d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2921=['./rpc/smsQueue','./rpc/whatsappQueue','resolve','getAgents','then','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','initWhatsappQueues','listen','catch','log','./server','./rpc/user','./rpc/interval','./rpc/chatQueue'];(function(_0x33e981,_0x432df5){var _0x3e43ca=function(_0x279a35){while(--_0x279a35){_0x33e981['push'](_0x33e981['shift']());}};_0x3e43ca(++_0x432df5);}(_0x2921,0xc2));var _0x1292=function(_0x2fe80f,_0xfafbbe){_0x2fe80f=_0x2fe80f-0x0;var _0x589b68=_0x2921[_0x2fe80f];return _0x589b68;};'use strict';var BPromise=require('bluebird');var server=require(_0x1292('0x0'));var Realtime=require('./realtime');var user=require(_0x1292('0x1'));var interval=require(_0x1292('0x2'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x1292('0x3'));var smsQueue=require(_0x1292('0x4'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x1292('0x5'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x1292('0x6')]()['then'](user[_0x1292('0x7')]())[_0x1292('0x8')](realtime[_0x1292('0x9')]())[_0x1292('0x8')](interval[_0x1292('0xa')]())[_0x1292('0x8')](realtime[_0x1292('0xb')]())[_0x1292('0x8')](openchannelQueue[_0x1292('0xc')]())[_0x1292('0x8')](realtime[_0x1292('0xd')]())[_0x1292('0x8')](chatQueue['getChatQueues']())[_0x1292('0x8')](realtime['initChatQueues']())['then'](smsQueue[_0x1292('0xe')]())['then'](realtime[_0x1292('0xf')]())[_0x1292('0x8')](mailQueue[_0x1292('0x10')]())[_0x1292('0x8')](realtime[_0x1292('0x11')]())[_0x1292('0x8')](faxQueue['getFaxQueues']())[_0x1292('0x8')](realtime['initFaxQueues']())[_0x1292('0x8')](whatsappQueue['getWhatsappQueues']())[_0x1292('0x8')](realtime[_0x1292('0x12')]())['then'](function(){return realtime;});}function main(){return server[_0x1292('0x13')](realtime)[_0x1292('0x8')](function(_0x251035){return initRealtime();})[_0x1292('0x8')](function(_0x12957f){return setInterval(initRealtime,0x1388);})[_0x1292('0x14')](function(_0x2db671){console[_0x1292('0x15')](_0x2db671);});}main();
\ No newline at end of file
+var _0x8fd1=['initIntervals','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','getMailQueues','initMailQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','bluebird','./realtime','./rpc/user','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals'];(function(_0x39726c,_0x3f7905){var _0x401a36=function(_0x50a184){while(--_0x50a184){_0x39726c['push'](_0x39726c['shift']());}};_0x401a36(++_0x3f7905);}(_0x8fd1,0xfb));var _0x18fd=function(_0x40001a,_0x57f2ae){_0x40001a=_0x40001a-0x0;var _0x4cec45=_0x8fd1[_0x40001a];return _0x4cec45;};'use strict';var BPromise=require(_0x18fd('0x0'));var server=require('./server');var Realtime=require(_0x18fd('0x1'));var user=require(_0x18fd('0x2'));var interval=require('./rpc/interval');var openchannelQueue=require(_0x18fd('0x3'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x18fd('0x4'));var mailQueue=require(_0x18fd('0x5'));var faxQueue=require(_0x18fd('0x6'));var whatsappQueue=require(_0x18fd('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x18fd('0x8')]()[_0x18fd('0x9')](user[_0x18fd('0xa')]())[_0x18fd('0x9')](realtime[_0x18fd('0xb')]())['then'](interval[_0x18fd('0xc')]())[_0x18fd('0x9')](realtime[_0x18fd('0xd')]())['then'](openchannelQueue['getOpenchannelQueues']())[_0x18fd('0x9')](realtime[_0x18fd('0xe')]())['then'](chatQueue[_0x18fd('0xf')]())[_0x18fd('0x9')](realtime[_0x18fd('0x10')]())[_0x18fd('0x9')](smsQueue[_0x18fd('0x11')]())['then'](realtime['initSmsQueues']())[_0x18fd('0x9')](mailQueue[_0x18fd('0x12')]())[_0x18fd('0x9')](realtime[_0x18fd('0x13')]())['then'](faxQueue['getFaxQueues']())['then'](realtime['initFaxQueues']())[_0x18fd('0x9')](whatsappQueue[_0x18fd('0x14')]())[_0x18fd('0x9')](realtime[_0x18fd('0x15')]())['then'](function(){return realtime;});}function main(){return server[_0x18fd('0x16')](realtime)['then'](function(_0x31905d){return initRealtime();})[_0x18fd('0x9')](function(_0x38ea71){return setInterval(initRealtime,0x1388);})[_0x18fd('0x17')](function(_0x47e2c5){console['log'](_0x47e2c5);});}main();
\ No newline at end of file
index ed2c7dc..908b8b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1261,0x144));var _0x1126=function(_0x2a0346,_0x2c1300){_0x2a0346=_0x2a0346-0x0;var _0x1f5232=_0x1261[_0x2a0346];return _0x1f5232;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var EventEmitter=require(_0x1126('0x1'))[_0x1126('0x2')];function RuleEngine(_0x331a2c,_0x39b786){this[_0x1126('0x3')]();if(!_[_0x1126('0x4')](_0x331a2c)){this[_0x1126('0x5')](_0x331a2c);}if(_0x39b786){this[_0x1126('0x6')]=_0x39b786[_0x1126('0x6')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x1126('0x3')]=function(_0x907180){this['rules']=[];this[_0x1126('0x7')]=[];};RuleEngine[_0x1126('0x8')][_0x1126('0x5')]=function(_0x3abb0b){if(Array[_0x1126('0x9')](_0x3abb0b)){this['rules']=this[_0x1126('0xa')][_0x1126('0xb')](_0x3abb0b);}else if(_0x3abb0b!==null&&_[_0x1126('0xc')](_0x3abb0b)){this['rules'][_0x1126('0xd')](_0x3abb0b);}this['sync']();};RuleEngine['prototype'][_0x1126('0xe')]=function(){this['activeRules']=this[_0x1126('0xa')][_0x1126('0xf')](function(_0xd26a32){if(_[_0x1126('0x4')](_0xd26a32['on'])){_0xd26a32['on']=!![];}if(_0xd26a32['on']===!![]){return _0xd26a32;}});this[_0x1126('0x7')]=_[_0x1126('0x10')](this[_0x1126('0x7')],['p'],[_0x1126('0x11')]);};RuleEngine[_0x1126('0x8')]['execute']=function(_0x5de9a7,_0x1af673){var _0x154e20=![];_0x5de9a7[_0x1126('0x12')]=!![];var _0x4be0c6=_[_0x1126('0x13')](_0x5de9a7);var _0x4794a7=_[_0x1126('0x13')](_0x5de9a7);var _0x42f379=this[_0x1126('0x7')];var _0x4e1c97=[];var _0x245cd7=this[_0x1126('0x6')];(function FnRuleLoop(_0x4a7b49){var _0x4d2b38={'rules':function(){return _0x42f379;},'rule':function(){return _0x42f379[_0x4a7b49];},'when':function(_0x22ae0b){if(_0x22ae0b){var _0x2b2487=_0x42f379[_0x4a7b49]['consequence'];_0x2b2487['ruleRef']=_0x42f379[_0x4a7b49]['id']||_0x42f379[_0x4a7b49][_0x1126('0x14')]||'index_'+_0x4a7b49;process[_0x1126('0x15')](function(){_0x4e1c97[_0x1126('0xd')](_0x2b2487[_0x1126('0x16')]);_0x2b2487['call'](_0x4be0c6,_0x4d2b38);});}else{process[_0x1126('0x15')](function(){_0x4d2b38['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x154e20=!![];return FnRuleLoop(0x0);},'next':function(_0x56efeb){if(!_0x245cd7&&!_[_0x1126('0x17')](_0x4794a7,_0x4be0c6)){_0x4794a7=_[_0x1126('0x13')](_0x4be0c6);process[_0x1126('0x15')](function(){_0x4d2b38[_0x1126('0x18')]();});}else{process['nextTick'](function(){if(_[_0x1126('0x4')](_0x56efeb)){return FnRuleLoop(_0x4a7b49+0x1);}else{return FnRuleLoop(_0x56efeb);}});}}};if(_0x4a7b49<_0x42f379[_0x1126('0x19')]&&_0x154e20===![]){var _0x48a08d=_0x42f379[_0x4a7b49][_0x1126('0x1a')];_0x48a08d['call'](_0x4be0c6,_0x4d2b38);}else{process['nextTick'](function(){_0x4be0c6['matchPath']=_0x4e1c97;return _0x1af673?_0x1af673(_0x4be0c6):_[_0x1126('0x1b')]();});}}(0x0));};RuleEngine[_0x1126('0x8')][_0x1126('0x1c')]=function(_0x34bcf1){if(_[_0x1126('0x4')](_0x34bcf1)){return this[_0x1126('0xa')];}else{var _0xea0971=_[_0x1126('0x1d')](_0x34bcf1);return _['filter'](this[_0x1126('0xa')],_0xea0971);}};RuleEngine[_0x1126('0x8')][_0x1126('0x1e')]=function(_0x5ddf63,_0x541bc9){var _0xeb7d89=_0x5ddf63==='on'||_0x5ddf63==='ON'?!![]:![];var _0x39bf0e=this['findRules'](_0x541bc9);for(var _0x2fb797=0x0,_0x23d2bc=_0x39bf0e['length'];_0x2fb797<_0x23d2bc;_0x2fb797+=0x1){_0x39bf0e[_0x2fb797]['on']=_0xeb7d89;}this[_0x1126('0xe')]();};RuleEngine['prototype'][_0x1126('0x1f')]=function(_0x4bd50b,_0x771bb8){_0x4bd50b=parseInt(_0x4bd50b,0xa);var _0x583ce6=this[_0x1126('0x1c')](_0x771bb8);for(var _0x5f2611=0x0,_0x5252e0=_0x583ce6['length'];_0x5f2611<_0x5252e0;_0x5f2611+=0x1){_0x583ce6[_0x5f2611][_0x1126('0x20')]=_0x4bd50b;}this[_0x1126('0xe')]();};RuleEngine[_0x1126('0x8')]['toJSON']=function(){var _0x2a3055=this[_0x1126('0xa')];if(_0x2a3055 instanceof Array){_0x2a3055=_0x2a3055['map'](function(_0x3dd50e){_0x3dd50e[_0x1126('0x1a')]=_0x3dd50e[_0x1126('0x1a')][_0x1126('0x21')]();_0x3dd50e['consequence']=_0x3dd50e['consequence'][_0x1126('0x21')]();return _0x3dd50e;});}else if(!_[_0x1126('0x4')](_0x2a3055)){_0x2a3055[_0x1126('0x1a')]=_0x2a3055[_0x1126('0x1a')]['toString']();_0x2a3055[_0x1126('0x22')]=_0x2a3055[_0x1126('0x22')][_0x1126('0x21')]();}return _0x2a3055;};RuleEngine[_0x1126('0x8')][_0x1126('0x23')]=function(_0x5df232){this[_0x1126('0x3')]();if(_[_0x1126('0x24')](_0x5df232)){_0x5df232=JSON[_0x1126('0x25')](_0x5df232);}if(_0x5df232 instanceof Array){_0x5df232=_0x5df232[_0x1126('0x26')](function(_0x5c019d){_0x5c019d['condition']=eval('('+_0x5c019d[_0x1126('0x1a')]+')');_0x5c019d[_0x1126('0x22')]=eval('('+_0x5c019d['consequence']+')');return _0x5c019d;});}else if(_0x5df232!==null&&typeof _0x5df232==_0x1126('0x27')){_0x5df232[_0x1126('0x1a')]=eval('('+_0x5df232[_0x1126('0x1a')]+')');_0x5df232['consequence']=eval('('+_0x5df232['consequence']+')');}this[_0x1126('0x5')](_0x5df232);};module[_0x1126('0x28')]=RuleEngine;
\ No newline at end of file
+var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x55abcb,_0x1c8ce0){var _0x10b891=function(_0x2d58cd){while(--_0x2d58cd){_0x55abcb['push'](_0x55abcb['shift']());}};_0x10b891(++_0x1c8ce0);}(_0x326f,0xd1));var _0xf326=function(_0x483018,_0x32664a){_0x483018=_0x483018-0x0;var _0x57c965=_0x326f[_0x483018];return _0x57c965;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
index eefca58..0a41c46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9016=['message','result','sendMailMessage','SendMail','bluebird','client','http','request','then','error'];(function(_0xde2226,_0x192faf){var _0x1b6cf3=function(_0x3e8f10){while(--_0x3e8f10){_0xde2226['push'](_0xde2226['shift']());}};_0x1b6cf3(++_0x192faf);}(_0x9016,0xb8));var _0x6901=function(_0x2d49b9,_0x10b663){_0x2d49b9=_0x2d49b9-0x0;var _0x374c7b=_0x9016[_0x2d49b9];return _0x374c7b;};'use strict';var BPromise=require(_0x6901('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x6901('0x1')][_0x6901('0x2')]({'port':0x232b});function request(_0x135d6a,_0x309abb){return new BPromise(function(_0x2ad591,_0x4bdd6e){return client[_0x6901('0x3')](_0x135d6a,_0x309abb)[_0x6901('0x4')](function(_0x5653be){if(_0x5653be[_0x6901('0x5')]){return _0x4bdd6e(_0x5653be[_0x6901('0x5')][_0x6901('0x6')]);}else{return _0x2ad591(_0x5653be[_0x6901('0x7')]);}})['catch'](function(_0x20a729){return _0x4bdd6e(_0x20a729);});});}exports[_0x6901('0x8')]=function(_0x4a99c2,_0xe5b947){return request(_0x6901('0x9'),{'account':_0x4a99c2,'message':_0xe5b947});};
\ No newline at end of file
+var _0x1e3b=['sendMailMessage','SendMail','bluebird','client','http','then','error'];(function(_0x42e207,_0x389d8e){var _0x39f83d=function(_0x56d094){while(--_0x56d094){_0x42e207['push'](_0x42e207['shift']());}};_0x39f83d(++_0x389d8e);}(_0x1e3b,0x8e));var _0xb1e3=function(_0x474735,_0x307301){_0x474735=_0x474735-0x0;var _0xbef520=_0x1e3b[_0x474735];return _0xbef520;};'use strict';var BPromise=require(_0xb1e3('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xb1e3('0x1')][_0xb1e3('0x2')]({'port':0x232b});function request(_0x5f11ad,_0x4fbc4a){return new BPromise(function(_0x20cb27,_0x475bf9){return client['request'](_0x5f11ad,_0x4fbc4a)[_0xb1e3('0x3')](function(_0x34d9bb){if(_0x34d9bb['error']){return _0x475bf9(_0x34d9bb[_0xb1e3('0x4')]['message']);}else{return _0x20cb27(_0x34d9bb['result']);}})['catch'](function(_0x21f268){return _0x475bf9(_0x21f268);});});}exports[_0xb1e3('0x5')]=function(_0x19ed4a,_0x3fe3a7){return request(_0xb1e3('0x6'),{'account':_0x19ed4a,'message':_0x3fe3a7});};
\ No newline at end of file
index eee4763..22f52c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0adf=['../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','unknown','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','mailWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','openchannel','fax','sms','whatsapp','length','Status','StatusTime','toNumber','format','chatStatusTime','faxStatusTime','openchannelCurrentCapacity','openchannelWaitingInteractions','stringify','emit','user:routing:update','exports','lodash','md5','moment'];(function(_0x5bd012,_0x2fd62b){var _0x1fccf7=function(_0x16e3cd){while(--_0x16e3cd){_0x5bd012['push'](_0x5bd012['shift']());}};_0x1fccf7(++_0x2fd62b);}(_0x0adf,0x1d2));var _0xf0ad=function(_0x733dd9,_0x2d7bd9){_0x733dd9=_0x733dd9-0x0;var _0x5322ac=_0x0adf[_0x733dd9];return _0x5322ac;};'use strict';var _=require(_0xf0ad('0x0'));var md5=require(_0xf0ad('0x1'));var moment=require(_0xf0ad('0x2'));var Redis=require('ioredis');var config=require(_0xf0ad('0x3'));config[_0xf0ad('0x4')]=_[_0xf0ad('0x5')](config[_0xf0ad('0x4')],{'host':_0xf0ad('0x6'),'port':0x18eb});var io=require(_0xf0ad('0x7'))(new Redis(config[_0xf0ad('0x4')]));function Agent(_0x59a588){this['id']=_0x59a588['id']||0x0;this[_0xf0ad('0x8')]=_0x59a588['name']||'';this[_0xf0ad('0x9')]=_0x59a588[_0xf0ad('0x9')]||!![];this[_0xf0ad('0xa')]=_0x59a588[_0xf0ad('0xa')]||![];this[_0xf0ad('0xb')]=_0x59a588[_0xf0ad('0xb')]||![];this[_0xf0ad('0xc')]=_0x59a588['mailPause']||![];this[_0xf0ad('0xd')]=_0x59a588['faxPause']||![];this[_0xf0ad('0xe')]=_0x59a588[_0xf0ad('0xe')]||![];this[_0xf0ad('0xf')]=_0x59a588[_0xf0ad('0xf')]||![];this[_0xf0ad('0x10')]='unknown';this['chatStatusTime']=0x0;this[_0xf0ad('0x11')]=_0x59a588[_0xf0ad('0x11')]||0x0;this[_0xf0ad('0x12')]=0x0;this[_0xf0ad('0x13')]='unknown';this[_0xf0ad('0x14')]=0x0;this[_0xf0ad('0x15')]=_0x59a588['mailCapacity']||0x0;this['mailCurrentCapacity']=0x0;this['faxStatus']=_0xf0ad('0x16');this['faxStatusTime']=0x0;this[_0xf0ad('0x17')]=_0x59a588[_0xf0ad('0x17')]||0x0;this[_0xf0ad('0x18')]=0x0;this[_0xf0ad('0x19')]=_0xf0ad('0x16');this['smsStatusTime']=0x0;this[_0xf0ad('0x1a')]=_0x59a588[_0xf0ad('0x1a')]||0x0;this[_0xf0ad('0x1b')]=0x0;this[_0xf0ad('0x1c')]='unknown';this['whatsappStatusTime']=0x0;this[_0xf0ad('0x1d')]=_0x59a588[_0xf0ad('0x1d')]||0x0;this['whatsappCurrentCapacity']=0x0;this[_0xf0ad('0x1e')]=_0xf0ad('0x16');this[_0xf0ad('0x1f')]=0x0;this[_0xf0ad('0x20')]=_0x59a588['openchannelCapacity']||0x0;this['openchannelCurrentCapacity']=0x0;this[_0xf0ad('0x21')]=![];this[_0xf0ad('0x22')]=undefined;this[_0xf0ad('0x1')]='';this[_0xf0ad('0x23')]={};this[_0xf0ad('0x24')]={};this[_0xf0ad('0x25')]={};this['openchannelWaitingInteractions']={};this[_0xf0ad('0x26')]={};this[_0xf0ad('0x27')]={};this[_0xf0ad('0x28')]();}Agent[_0xf0ad('0x29')][_0xf0ad('0x2a')]=function(_0x88b47b){if(this[_0x88b47b+_0xf0ad('0x2b')]>0x0){if(this[_0x88b47b+_0xf0ad('0x2c')]>0x0&&this[_0x88b47b+_0xf0ad('0x2b')]>=this[_0x88b47b+_0xf0ad('0x2c')]){return _0xf0ad('0x2d');}else{return _0xf0ad('0x2e');}}else{return _0xf0ad('0x2f');}};Agent[_0xf0ad('0x29')][_0xf0ad('0x28')]=function(){var _0x557f90=[_0xf0ad('0x30'),_0xf0ad('0x31'),_0xf0ad('0x32'),_0xf0ad('0x33'),_0xf0ad('0x34'),_0xf0ad('0x35')];for(var _0x560417=0x0;_0x560417<_0x557f90[_0xf0ad('0x36')];_0x560417+=0x1){var _0x19a32a=this[_0xf0ad('0x2a')](_0x557f90[_0x560417]);if(this[_0x557f90[_0x560417]+_0xf0ad('0x37')]!==_0x19a32a){this[_0x557f90[_0x560417]+_0xf0ad('0x38')]=_[_0xf0ad('0x39')](moment()[_0xf0ad('0x3a')]('x'));}this[_0x557f90[_0x560417]+_0xf0ad('0x37')]=_0x19a32a;}var _0x2386e8={'id':this['id'],'name':this[_0xf0ad('0x8')],'online':this[_0xf0ad('0x9')],'voicePause':this['voicePause'],'chatPause':this[_0xf0ad('0xb')],'mailPause':this['mailPause'],'smsPause':this[_0xf0ad('0xe')],'faxPause':this['faxPause'],'openchannelPause':this[_0xf0ad('0xf')],'chatStatus':this[_0xf0ad('0x10')],'chatStatusTime':this[_0xf0ad('0x3b')],'chatCapacity':this[_0xf0ad('0x11')],'chatCurrentCapacity':this[_0xf0ad('0x12')],'mailStatus':this[_0xf0ad('0x13')],'mailStatusTime':this[_0xf0ad('0x14')],'mailCapacity':this[_0xf0ad('0x15')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0xf0ad('0x3c')],'faxCapacity':this[_0xf0ad('0x17')],'faxCurrentCapacity':this[_0xf0ad('0x18')],'smsStatus':this[_0xf0ad('0x19')],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0xf0ad('0x1a')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0xf0ad('0x1c')],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this[_0xf0ad('0x1d')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0xf0ad('0x1e')],'openchannelStatusTime':this[_0xf0ad('0x1f')],'openchannelCapacity':this[_0xf0ad('0x20')],'openchannelCurrentCapacity':this[_0xf0ad('0x3d')],'busy':this[_0xf0ad('0x21')],'busyQueue':this[_0xf0ad('0x22')],'chatWaitingInteractions':this[_0xf0ad('0x23')],'faxWaitingInteractions':this[_0xf0ad('0x24')],'mailWaitingInteractions':this['mailWaitingInteractions'],'openchannelWaitingInteractions':this[_0xf0ad('0x3e')],'smsWaitingInteractions':this['smsWaitingInteractions'],'whatsappWaitingInteractions':this[_0xf0ad('0x27')]};var _0x506a56=md5(JSON[_0xf0ad('0x3f')](_0x2386e8));if(this[_0xf0ad('0x1')]!==_0x506a56){this[_0xf0ad('0x1')]=_0x506a56;io[_0xf0ad('0x40')](_0xf0ad('0x41'),_['omit'](_0x2386e8,[_0xf0ad('0x9')]));}};module[_0xf0ad('0x42')]=Agent;
\ No newline at end of file
+var _0xbbbc=['chatStatusTime','chatCapacity','mailStatus','mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatusTime','whatsappCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','idle','mail','sms','length','Status','StatusTime','toNumber','format','chatStatus','chatCurrentCapacity','mailCurrentCapacity','faxCurrentCapacity','whatsappStatus','whatsappCurrentCapacity','openchannelStatus','mailWaitingInteractions','stringify','emit','lodash','md5','moment','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','unknown'];(function(_0x4e658c,_0x3139a5){var _0x3a2973=function(_0x479a80){while(--_0x479a80){_0x4e658c['push'](_0x4e658c['shift']());}};_0x3a2973(++_0x3139a5);}(_0xbbbc,0xf6));var _0xcbbb=function(_0xe441a6,_0x3459f6){_0xe441a6=_0xe441a6-0x0;var _0x5faec8=_0xbbbc[_0xe441a6];return _0x5faec8;};'use strict';var _=require(_0xcbbb('0x0'));var md5=require(_0xcbbb('0x1'));var moment=require(_0xcbbb('0x2'));var Redis=require(_0xcbbb('0x3'));var config=require(_0xcbbb('0x4'));config[_0xcbbb('0x5')]=_[_0xcbbb('0x6')](config['redis'],{'host':_0xcbbb('0x7'),'port':0x18eb});var io=require(_0xcbbb('0x8'))(new Redis(config[_0xcbbb('0x5')]));function Agent(_0x3ccbf6){this['id']=_0x3ccbf6['id']||0x0;this[_0xcbbb('0x9')]=_0x3ccbf6['name']||'';this[_0xcbbb('0xa')]=_0x3ccbf6[_0xcbbb('0xa')]||!![];this[_0xcbbb('0xb')]=_0x3ccbf6[_0xcbbb('0xb')]||![];this[_0xcbbb('0xc')]=_0x3ccbf6[_0xcbbb('0xc')]||![];this[_0xcbbb('0xd')]=_0x3ccbf6['mailPause']||![];this[_0xcbbb('0xe')]=_0x3ccbf6['faxPause']||![];this['smsPause']=_0x3ccbf6[_0xcbbb('0xf')]||![];this['openchannelPause']=_0x3ccbf6[_0xcbbb('0x10')]||![];this['chatStatus']=_0xcbbb('0x11');this[_0xcbbb('0x12')]=0x0;this['chatCapacity']=_0x3ccbf6[_0xcbbb('0x13')]||0x0;this['chatCurrentCapacity']=0x0;this[_0xcbbb('0x14')]='unknown';this[_0xcbbb('0x15')]=0x0;this[_0xcbbb('0x16')]=_0x3ccbf6[_0xcbbb('0x16')]||0x0;this['mailCurrentCapacity']=0x0;this[_0xcbbb('0x17')]=_0xcbbb('0x11');this[_0xcbbb('0x18')]=0x0;this[_0xcbbb('0x19')]=_0x3ccbf6['faxCapacity']||0x0;this['faxCurrentCapacity']=0x0;this[_0xcbbb('0x1a')]=_0xcbbb('0x11');this[_0xcbbb('0x1b')]=0x0;this[_0xcbbb('0x1c')]=_0x3ccbf6['smsCapacity']||0x0;this[_0xcbbb('0x1d')]=0x0;this['whatsappStatus']=_0xcbbb('0x11');this[_0xcbbb('0x1e')]=0x0;this[_0xcbbb('0x1f')]=_0x3ccbf6['whatsappCapacity']||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']=_0xcbbb('0x11');this[_0xcbbb('0x20')]=0x0;this[_0xcbbb('0x21')]=_0x3ccbf6[_0xcbbb('0x21')]||0x0;this[_0xcbbb('0x22')]=0x0;this[_0xcbbb('0x23')]=![];this[_0xcbbb('0x24')]=undefined;this[_0xcbbb('0x1')]='';this[_0xcbbb('0x25')]={};this[_0xcbbb('0x26')]={};this['mailWaitingInteractions']={};this[_0xcbbb('0x27')]={};this[_0xcbbb('0x28')]={};this[_0xcbbb('0x29')]={};this[_0xcbbb('0x2a')]();}Agent[_0xcbbb('0x2b')][_0xcbbb('0x2c')]=function(_0x297eae){if(this[_0x297eae+_0xcbbb('0x2d')]>0x0){if(this[_0x297eae+_0xcbbb('0x2e')]>0x0&&this[_0x297eae+'CurrentCapacity']>=this[_0x297eae+_0xcbbb('0x2e')]){return _0xcbbb('0x2f');}else{return'working';}}else{return _0xcbbb('0x30');}};Agent['prototype']['updateRealtime']=function(){var _0x575d56=[_0xcbbb('0x31'),'chat','openchannel','fax',_0xcbbb('0x32'),'whatsapp'];for(var _0x4da775=0x0;_0x4da775<_0x575d56[_0xcbbb('0x33')];_0x4da775+=0x1){var _0x2902c6=this[_0xcbbb('0x2c')](_0x575d56[_0x4da775]);if(this[_0x575d56[_0x4da775]+_0xcbbb('0x34')]!==_0x2902c6){this[_0x575d56[_0x4da775]+_0xcbbb('0x35')]=_[_0xcbbb('0x36')](moment()[_0xcbbb('0x37')]('x'));}this[_0x575d56[_0x4da775]+_0xcbbb('0x34')]=_0x2902c6;}var _0x2a023f={'id':this['id'],'name':this[_0xcbbb('0x9')],'online':this[_0xcbbb('0xa')],'voicePause':this[_0xcbbb('0xb')],'chatPause':this[_0xcbbb('0xc')],'mailPause':this[_0xcbbb('0xd')],'smsPause':this[_0xcbbb('0xf')],'faxPause':this[_0xcbbb('0xe')],'openchannelPause':this[_0xcbbb('0x10')],'chatStatus':this[_0xcbbb('0x38')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0xcbbb('0x13')],'chatCurrentCapacity':this[_0xcbbb('0x39')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0xcbbb('0x15')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0xcbbb('0x3a')],'faxStatus':this[_0xcbbb('0x17')],'faxStatusTime':this[_0xcbbb('0x18')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0xcbbb('0x3b')],'smsStatus':this[_0xcbbb('0x1a')],'smsStatusTime':this[_0xcbbb('0x1b')],'smsCapacity':this[_0xcbbb('0x1c')],'smsCurrentCapacity':this[_0xcbbb('0x1d')],'whatsappStatus':this[_0xcbbb('0x3c')],'whatsappStatusTime':this[_0xcbbb('0x1e')],'whatsappCapacity':this[_0xcbbb('0x1f')],'whatsappCurrentCapacity':this[_0xcbbb('0x3d')],'openchannelStatus':this[_0xcbbb('0x3e')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this['busy'],'busyQueue':this[_0xcbbb('0x24')],'chatWaitingInteractions':this[_0xcbbb('0x25')],'faxWaitingInteractions':this[_0xcbbb('0x26')],'mailWaitingInteractions':this[_0xcbbb('0x3f')],'openchannelWaitingInteractions':this[_0xcbbb('0x27')],'smsWaitingInteractions':this[_0xcbbb('0x28')],'whatsappWaitingInteractions':this[_0xcbbb('0x29')]};var _0x39a417=md5(JSON[_0xcbbb('0x40')](_0x2a023f));if(this[_0xcbbb('0x1')]!==_0x39a417){this[_0xcbbb('0x1')]=_0x39a417;io[_0xcbbb('0x41')]('user:routing:update',_['omit'](_0x2a023f,[_0xcbbb('0xa')]));}};module['exports']=Agent;
\ No newline at end of file
index f61e452..f7502d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1489=['_rr','map','loggedIn','paused','length','chatPause','available','format','emit','chat_queue:save','exports','lodash','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1489,0x13f));var _0x9148=function(_0x102dc9,_0x419a5f){_0x102dc9=_0x102dc9-0x0;var _0x24f570=_0x1489[_0x102dc9];return _0x24f570;};'use strict';var _=require(_0x9148('0x0'));var md5=require(_0x9148('0x1'));var util=require(_0x9148('0x2'));var Redis=require('ioredis');var config=require(_0x9148('0x3'));config[_0x9148('0x4')]=_[_0x9148('0x5')](config[_0x9148('0x4')],{'host':_0x9148('0x6'),'port':0x18eb});var io=require(_0x9148('0x7'))(new Redis(config[_0x9148('0x4')]));function ChatQueue(_0x86e7e){this['id']=_0x86e7e['id']||0x0;this['name']=_0x86e7e[_0x9148('0x8')]||'';this[_0x9148('0x9')]=_0x86e7e['timeout']||0xa;this[_0x9148('0xa')]=_0x86e7e[_0x9148('0xa')]||'beepall';this[_0x9148('0xb')]=_0x86e7e[_0x9148('0xb')];this['mapAgentsId']={};this[_0x9148('0xc')]=0x0;this[_0x9148('0x1')]='';this[_0x9148('0xd')]();this[_0x9148('0xe')]();}ChatQueue[_0x9148('0xf')][_0x9148('0xd')]=function(){var _0x47c758=this[_0x9148('0x10')][_0x9148('0x11')];this[_0x9148('0x10')]=_[_0x9148('0x12')](this[_0x9148('0xb')],'id');this[_0x9148('0x10')][_0x9148('0x11')]=_0x47c758;};ChatQueue[_0x9148('0xf')][_0x9148('0xe')]=function(){this[_0x9148('0x13')]=0x0;this[_0x9148('0x14')]=0x0;for(var _0x146f88=0x0;_0x146f88<this[_0x9148('0xb')][_0x9148('0x15')];_0x146f88+=0x1){if(this[_0x9148('0xb')][_0x146f88]['online']){this['loggedIn']+=0x1;}if(this[_0x9148('0xb')][_0x146f88][_0x9148('0x16')]){this[_0x9148('0x14')]+=0x1;}}this[_0x9148('0x17')]=this[_0x9148('0x13')]-this[_0x9148('0x14')];this[_0x9148('0x17')]=this[_0x9148('0x17')]>=0x0?this[_0x9148('0x17')]:0x0;var _0x1458cd={'id':this['id'],'available':this[_0x9148('0x17')],'loggedIn':this[_0x9148('0x13')],'name':this[_0x9148('0x8')],'paused':this[_0x9148('0x14')],'waiting':this[_0x9148('0xc')]};var _0x1cbd79=md5(JSON['stringify'](_0x1458cd));if(this[_0x9148('0x1')]!==_0x1cbd79){this[_0x9148('0x1')]=_0x1cbd79;io['to'](util[_0x9148('0x18')]('chat:queue:%s',_0x1458cd[_0x9148('0x8')]))[_0x9148('0x19')](_0x9148('0x1a'),_0x1458cd);}};module[_0x9148('0x1b')]=ChatQueue;
\ No newline at end of file
+var _0x4e9c=['map','loggedIn','paused','length','online','chatPause','available','stringify','format','chat:queue:%s','emit','chat_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','updateRouting','updateRealtime','prototype','_rr','mapAgentsId'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x4e9c,0x175));var _0xc4e9=function(_0x3534bd,_0x295f41){_0x3534bd=_0x3534bd-0x0;var _0x483f57=_0x4e9c[_0x3534bd];return _0x483f57;};'use strict';var _=require('lodash');var md5=require(_0xc4e9('0x0'));var util=require(_0xc4e9('0x1'));var Redis=require(_0xc4e9('0x2'));var config=require(_0xc4e9('0x3'));config[_0xc4e9('0x4')]=_[_0xc4e9('0x5')](config[_0xc4e9('0x4')],{'host':_0xc4e9('0x6'),'port':0x18eb});var io=require(_0xc4e9('0x7'))(new Redis(config[_0xc4e9('0x4')]));function ChatQueue(_0x3c1e70){this['id']=_0x3c1e70['id']||0x0;this[_0xc4e9('0x8')]=_0x3c1e70[_0xc4e9('0x8')]||'';this[_0xc4e9('0x9')]=_0x3c1e70[_0xc4e9('0x9')]||0xa;this[_0xc4e9('0xa')]=_0x3c1e70[_0xc4e9('0xa')]||'beepall';this[_0xc4e9('0xb')]=_0x3c1e70[_0xc4e9('0xb')];this['mapAgentsId']={};this['waiting']=0x0;this[_0xc4e9('0x0')]='';this[_0xc4e9('0xc')]();this[_0xc4e9('0xd')]();}ChatQueue[_0xc4e9('0xe')]['updateRouting']=function(){var _0x5d3a6a=this['mapAgentsId'][_0xc4e9('0xf')];this[_0xc4e9('0x10')]=_[_0xc4e9('0x11')](this['Agents'],'id');this[_0xc4e9('0x10')]['_rr']=_0x5d3a6a;};ChatQueue[_0xc4e9('0xe')][_0xc4e9('0xd')]=function(){this[_0xc4e9('0x12')]=0x0;this[_0xc4e9('0x13')]=0x0;for(var _0x5b92fb=0x0;_0x5b92fb<this['Agents'][_0xc4e9('0x14')];_0x5b92fb+=0x1){if(this[_0xc4e9('0xb')][_0x5b92fb][_0xc4e9('0x15')]){this[_0xc4e9('0x12')]+=0x1;}if(this[_0xc4e9('0xb')][_0x5b92fb][_0xc4e9('0x16')]){this[_0xc4e9('0x13')]+=0x1;}}this[_0xc4e9('0x17')]=this['loggedIn']-this[_0xc4e9('0x13')];this[_0xc4e9('0x17')]=this[_0xc4e9('0x17')]>=0x0?this[_0xc4e9('0x17')]:0x0;var _0x65ffe9={'id':this['id'],'available':this[_0xc4e9('0x17')],'loggedIn':this[_0xc4e9('0x12')],'name':this[_0xc4e9('0x8')],'paused':this[_0xc4e9('0x13')],'waiting':this['waiting']};var _0x2b29bb=md5(JSON[_0xc4e9('0x18')](_0x65ffe9));if(this['md5']!==_0x2b29bb){this[_0xc4e9('0x0')]=_0x2b29bb;io['to'](util[_0xc4e9('0x19')](_0xc4e9('0x1a'),_0x65ffe9['name']))[_0xc4e9('0x1b')](_0xc4e9('0x1c'),_0x65ffe9);}};module[_0xc4e9('0x1d')]=ChatQueue;
\ No newline at end of file
index f55cfd0..72b9eb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc31d=['faxPause','available','stringify','format','fax:queue:%s','fax_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','strategy','beepall','Agents','mapAgentsId','waiting','prototype','_rr','map','updateRealtime','loggedIn','paused','online'];(function(_0x13606d,_0x30f265){var _0x1b85b0=function(_0x285c1b){while(--_0x285c1b){_0x13606d['push'](_0x13606d['shift']());}};_0x1b85b0(++_0x30f265);}(_0xc31d,0x93));var _0xdc31=function(_0x5d88c0,_0x5d7d83){_0x5d88c0=_0x5d88c0-0x0;var _0x1b40f0=_0xc31d[_0x5d88c0];return _0x1b40f0;};'use strict';var _=require(_0xdc31('0x0'));var md5=require(_0xdc31('0x1'));var util=require(_0xdc31('0x2'));var Redis=require(_0xdc31('0x3'));var config=require(_0xdc31('0x4'));config[_0xdc31('0x5')]=_[_0xdc31('0x6')](config[_0xdc31('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xdc31('0x7'))(new Redis(config[_0xdc31('0x5')]));function FaxQueue(_0x566ee1){this['id']=_0x566ee1['id']||0x0;this['name']=_0x566ee1[_0xdc31('0x8')]||'';this['timeout']=_0x566ee1['timeout']||0xa;this[_0xdc31('0x9')]=_0x566ee1[_0xdc31('0x9')]||_0xdc31('0xa');this[_0xdc31('0xb')]=_0x566ee1[_0xdc31('0xb')];this[_0xdc31('0xc')]={};this[_0xdc31('0xd')]=0x0;this['md5']='';this['updateRouting']();this['updateRealtime']();}FaxQueue[_0xdc31('0xe')]['updateRouting']=function(){var _0x3559ff=this[_0xdc31('0xc')][_0xdc31('0xf')];this[_0xdc31('0xc')]=_[_0xdc31('0x10')](this[_0xdc31('0xb')],'id');this[_0xdc31('0xc')][_0xdc31('0xf')]=_0x3559ff;};FaxQueue[_0xdc31('0xe')][_0xdc31('0x11')]=function(){this[_0xdc31('0x12')]=0x0;this[_0xdc31('0x13')]=0x0;for(var _0xc1b78=0x0;_0xc1b78<this['Agents']['length'];_0xc1b78+=0x1){if(this[_0xdc31('0xb')][_0xc1b78][_0xdc31('0x14')]){this['loggedIn']+=0x1;}if(this[_0xdc31('0xb')][_0xc1b78][_0xdc31('0x15')]){this[_0xdc31('0x13')]+=0x1;}}this[_0xdc31('0x16')]=this[_0xdc31('0x12')]-this[_0xdc31('0x13')];this['available']=this['available']>=0x0?this['available']:0x0;var _0x37af5c={'id':this['id'],'available':this[_0xdc31('0x16')],'loggedIn':this[_0xdc31('0x12')],'name':this[_0xdc31('0x8')],'paused':this[_0xdc31('0x13')],'waiting':this[_0xdc31('0xd')]};var _0x1c0f51=md5(JSON[_0xdc31('0x17')](_0x37af5c));if(this[_0xdc31('0x1')]!==_0x1c0f51){this[_0xdc31('0x1')]=_0x1c0f51;io['to'](util[_0xdc31('0x18')](_0xdc31('0x19'),_0x37af5c[_0xdc31('0x8')]))['emit'](_0xdc31('0x1a'),_0x37af5c);}};module[_0xdc31('0x1b')]=FaxQueue;
\ No newline at end of file
+var _0x2ce1=['name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','_rr','updateRealtime','loggedIn','paused','length','online','faxPause','available','format','fax:queue:%s','emit','lodash','md5','util','redis','defaults','localhost','socket.io-emitter'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x2ce1,0x122));var _0x12ce=function(_0x2cd21,_0x324108){_0x2cd21=_0x2cd21-0x0;var _0x3d86ec=_0x2ce1[_0x2cd21];return _0x3d86ec;};'use strict';var _=require(_0x12ce('0x0'));var md5=require(_0x12ce('0x1'));var util=require(_0x12ce('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x12ce('0x3')]=_[_0x12ce('0x4')](config[_0x12ce('0x3')],{'host':_0x12ce('0x5'),'port':0x18eb});var io=require(_0x12ce('0x6'))(new Redis(config[_0x12ce('0x3')]));function FaxQueue(_0x2bbc54){this['id']=_0x2bbc54['id']||0x0;this[_0x12ce('0x7')]=_0x2bbc54[_0x12ce('0x7')]||'';this[_0x12ce('0x8')]=_0x2bbc54[_0x12ce('0x8')]||0xa;this['strategy']=_0x2bbc54[_0x12ce('0x9')]||_0x12ce('0xa');this['Agents']=_0x2bbc54[_0x12ce('0xb')];this['mapAgentsId']={};this[_0x12ce('0xc')]=0x0;this[_0x12ce('0x1')]='';this[_0x12ce('0xd')]();this['updateRealtime']();}FaxQueue[_0x12ce('0xe')]['updateRouting']=function(){var _0x1d18be=this[_0x12ce('0xf')][_0x12ce('0x10')];this[_0x12ce('0xf')]=_['map'](this[_0x12ce('0xb')],'id');this['mapAgentsId'][_0x12ce('0x10')]=_0x1d18be;};FaxQueue['prototype'][_0x12ce('0x11')]=function(){this[_0x12ce('0x12')]=0x0;this[_0x12ce('0x13')]=0x0;for(var _0x2d99c8=0x0;_0x2d99c8<this['Agents'][_0x12ce('0x14')];_0x2d99c8+=0x1){if(this[_0x12ce('0xb')][_0x2d99c8][_0x12ce('0x15')]){this[_0x12ce('0x12')]+=0x1;}if(this[_0x12ce('0xb')][_0x2d99c8][_0x12ce('0x16')]){this['paused']+=0x1;}}this[_0x12ce('0x17')]=this[_0x12ce('0x12')]-this['paused'];this[_0x12ce('0x17')]=this[_0x12ce('0x17')]>=0x0?this[_0x12ce('0x17')]:0x0;var _0x2a3d41={'id':this['id'],'available':this[_0x12ce('0x17')],'loggedIn':this['loggedIn'],'name':this[_0x12ce('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x336d7e=md5(JSON['stringify'](_0x2a3d41));if(this[_0x12ce('0x1')]!==_0x336d7e){this[_0x12ce('0x1')]=_0x336d7e;io['to'](util[_0x12ce('0x18')](_0x12ce('0x19'),_0x2a3d41[_0x12ce('0x7')]))[_0x12ce('0x1a')]('fax_queue:save',_0x2a3d41);}};module['exports']=FaxQueue;
\ No newline at end of file
index a46e607..138ab8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x966f=['exports','name','Intervals'];(function(_0x224067,_0x401dbf){var _0x1c1dfd=function(_0x4ba655){while(--_0x4ba655){_0x224067['push'](_0x224067['shift']());}};_0x1c1dfd(++_0x401dbf);}(_0x966f,0x178));var _0xf966=function(_0xc7648d,_0x497ba2){_0xc7648d=_0xc7648d-0x0;var _0x2594d2=_0x966f[_0xc7648d];return _0x2594d2;};'use strict';function Interval(_0x369618){this['id']=_0x369618['id']||0x0;this[_0xf966('0x0')]=_0x369618['name']||'';this['Intervals']=_0x369618[_0xf966('0x1')]||{};}module[_0xf966('0x2')]=Interval;
\ No newline at end of file
+var _0x60b3=['Intervals','name'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x60b3,0xbf));var _0x360b=function(_0x57cc54,_0x6862b1){_0x57cc54=_0x57cc54-0x0;var _0xa93acc=_0x60b3[_0x57cc54];return _0xa93acc;};'use strict';function Interval(_0x41eab1){this['id']=_0x41eab1['id']||0x0;this['name']=_0x41eab1[_0x360b('0x0')]||'';this[_0x360b('0x1')]=_0x41eab1[_0x360b('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
index 12ed56f..25d2c56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cd9=['emit','mail_queue:save','exports','lodash','md5','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','Agents','mapAgentsId','updateRealtime','prototype','updateRouting','map','_rr','paused','length','online','loggedIn','available','waiting','format'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0x8cd9,0x1a3));var _0x98cd=function(_0x4fa421,_0x2b395d){_0x4fa421=_0x4fa421-0x0;var _0x3cf06f=_0x8cd9[_0x4fa421];return _0x3cf06f;};'use strict';var _=require(_0x98cd('0x0'));var md5=require(_0x98cd('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0x98cd('0x2'));config[_0x98cd('0x3')]=_[_0x98cd('0x4')](config[_0x98cd('0x3')],{'host':_0x98cd('0x5'),'port':0x18eb});var io=require(_0x98cd('0x6'))(new Redis(config['redis']));function MailQueue(_0x1a83a1){this['id']=_0x1a83a1['id']||0x0;this[_0x98cd('0x7')]=_0x1a83a1[_0x98cd('0x7')]||'';this[_0x98cd('0x8')]=_0x1a83a1['timeout']||0xa;this['strategy']=_0x1a83a1['strategy']||'beepall';this[_0x98cd('0x9')]=_0x1a83a1['Agents'];this[_0x98cd('0xa')]={};this['waiting']=0x0;this[_0x98cd('0x1')]='';this['updateRouting']();this[_0x98cd('0xb')]();}MailQueue[_0x98cd('0xc')][_0x98cd('0xd')]=function(){var _0x39e31e=this['mapAgentsId']['_rr'];this[_0x98cd('0xa')]=_[_0x98cd('0xe')](this[_0x98cd('0x9')],'id');this[_0x98cd('0xa')][_0x98cd('0xf')]=_0x39e31e;};MailQueue['prototype']['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x98cd('0x10')]=0x0;for(var _0x5dfd93=0x0;_0x5dfd93<this[_0x98cd('0x9')][_0x98cd('0x11')];_0x5dfd93+=0x1){if(this[_0x98cd('0x9')][_0x5dfd93][_0x98cd('0x12')]){this[_0x98cd('0x13')]+=0x1;}if(this[_0x98cd('0x9')][_0x5dfd93]['mailPause']){this[_0x98cd('0x10')]+=0x1;}}this[_0x98cd('0x14')]=this['loggedIn']-this['paused'];this[_0x98cd('0x14')]=this[_0x98cd('0x14')]>=0x0?this['available']:0x0;var _0xf08c05={'id':this['id'],'available':this[_0x98cd('0x14')],'loggedIn':this[_0x98cd('0x13')],'name':this[_0x98cd('0x7')],'paused':this['paused'],'waiting':this[_0x98cd('0x15')]};var _0x297522=md5(JSON['stringify'](_0xf08c05));if(this[_0x98cd('0x1')]!==_0x297522){this[_0x98cd('0x1')]=_0x297522;io['to'](util[_0x98cd('0x16')]('mail:queue:%s',_0xf08c05['name']))[_0x98cd('0x17')](_0x98cd('0x18'),_0xf08c05);}};module[_0x98cd('0x19')]=MailQueue;
\ No newline at end of file
+var _0x4a63=['mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','online','mailPause','available','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents'];(function(_0x5723b1,_0xa7acb4){var _0x2645d4=function(_0x18919a){while(--_0x18919a){_0x5723b1['push'](_0x5723b1['shift']());}};_0x2645d4(++_0xa7acb4);}(_0x4a63,0x129));var _0x34a6=function(_0x7f3667,_0x30c3f1){_0x7f3667=_0x7f3667-0x0;var _0x2c4c24=_0x4a63[_0x7f3667];return _0x2c4c24;};'use strict';var _=require('lodash');var md5=require(_0x34a6('0x0'));var util=require(_0x34a6('0x1'));var Redis=require(_0x34a6('0x2'));var config=require(_0x34a6('0x3'));config[_0x34a6('0x4')]=_[_0x34a6('0x5')](config[_0x34a6('0x4')],{'host':_0x34a6('0x6'),'port':0x18eb});var io=require(_0x34a6('0x7'))(new Redis(config['redis']));function MailQueue(_0x18a63f){this['id']=_0x18a63f['id']||0x0;this['name']=_0x18a63f[_0x34a6('0x8')]||'';this['timeout']=_0x18a63f[_0x34a6('0x9')]||0xa;this[_0x34a6('0xa')]=_0x18a63f[_0x34a6('0xa')]||_0x34a6('0xb');this[_0x34a6('0xc')]=_0x18a63f['Agents'];this[_0x34a6('0xd')]={};this[_0x34a6('0xe')]=0x0;this[_0x34a6('0x0')]='';this[_0x34a6('0xf')]();this[_0x34a6('0x10')]();}MailQueue[_0x34a6('0x11')][_0x34a6('0xf')]=function(){var _0x313916=this[_0x34a6('0xd')][_0x34a6('0x12')];this[_0x34a6('0xd')]=_[_0x34a6('0x13')](this[_0x34a6('0xc')],'id');this[_0x34a6('0xd')]['_rr']=_0x313916;};MailQueue['prototype']['updateRealtime']=function(){this[_0x34a6('0x14')]=0x0;this[_0x34a6('0x15')]=0x0;for(var _0x1aba06=0x0;_0x1aba06<this[_0x34a6('0xc')]['length'];_0x1aba06+=0x1){if(this[_0x34a6('0xc')][_0x1aba06][_0x34a6('0x16')]){this[_0x34a6('0x14')]+=0x1;}if(this[_0x34a6('0xc')][_0x1aba06][_0x34a6('0x17')]){this[_0x34a6('0x15')]+=0x1;}}this[_0x34a6('0x18')]=this[_0x34a6('0x14')]-this['paused'];this[_0x34a6('0x18')]=this['available']>=0x0?this[_0x34a6('0x18')]:0x0;var _0x4f7b33={'id':this['id'],'available':this['available'],'loggedIn':this[_0x34a6('0x14')],'name':this[_0x34a6('0x8')],'paused':this['paused'],'waiting':this[_0x34a6('0xe')]};var _0x4f9b1c=md5(JSON[_0x34a6('0x19')](_0x4f7b33));if(this[_0x34a6('0x0')]!==_0x4f9b1c){this[_0x34a6('0x0')]=_0x4f9b1c;io['to'](util[_0x34a6('0x1a')](_0x34a6('0x1b'),_0x4f7b33[_0x34a6('0x8')]))[_0x34a6('0x1c')](_0x34a6('0x1d'),_0x4f7b33);}};module[_0x34a6('0x1e')]=MailQueue;
\ No newline at end of file
index 90dbfc2..91c31c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x18f152,_0x41585a){var _0xa10b34=function(_0x1e9798){while(--_0x1e9798){_0x18f152['push'](_0x18f152['shift']());}};_0xa10b34(++_0x41585a);}(_0x1261,0x144));var _0x1126=function(_0x3dfea6,_0x5cd685){_0x3dfea6=_0x3dfea6-0x0;var _0x567aca=_0x1261[_0x3dfea6];return _0x567aca;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0x5fc3=['format','openchannel:queue:%s','name','emit','openchannel_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','prototype','loggedIn','paused','openchannelPause','available'];(function(_0x330412,_0xfeadf4){var _0x3f18b4=function(_0x4a929d){while(--_0x4a929d){_0x330412['push'](_0x330412['shift']());}};_0x3f18b4(++_0xfeadf4);}(_0x5fc3,0xa8));var _0x35fc=function(_0x553a87,_0x1d621f){_0x553a87=_0x553a87-0x0;var _0x12d1e6=_0x5fc3[_0x553a87];return _0x12d1e6;};'use strict';var _=require(_0x35fc('0x0'));var md5=require(_0x35fc('0x1'));var util=require('util');var Redis=require(_0x35fc('0x2'));var config=require(_0x35fc('0x3'));config[_0x35fc('0x4')]=_[_0x35fc('0x5')](config[_0x35fc('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x35fc('0x6'))(new Redis(config[_0x35fc('0x4')]));function OpenchannelQueue(_0x186a06){this['id']=_0x186a06['id']||0x0;this['name']=_0x186a06['name']||'';this[_0x35fc('0x7')]=_0x186a06['timeout']||0xa;this[_0x35fc('0x8')]=_0x186a06[_0x35fc('0x8')]||_0x35fc('0x9');this[_0x35fc('0xa')]=_0x186a06[_0x35fc('0xa')];this[_0x35fc('0xb')]={};this[_0x35fc('0xc')]=0x0;this['md5']='';this[_0x35fc('0xd')]();this[_0x35fc('0xe')]();}OpenchannelQueue['prototype'][_0x35fc('0xd')]=function(){var _0x33f491=this['mapAgentsId'][_0x35fc('0xf')];this[_0x35fc('0xb')]=_['map'](this['Agents'],'id');this[_0x35fc('0xb')]['_rr']=_0x33f491;};OpenchannelQueue[_0x35fc('0x10')][_0x35fc('0xe')]=function(){this[_0x35fc('0x11')]=0x0;this[_0x35fc('0x12')]=0x0;for(var _0x38d9f2=0x0;_0x38d9f2<this['Agents']['length'];_0x38d9f2+=0x1){if(this['Agents'][_0x38d9f2]['online']){this[_0x35fc('0x11')]+=0x1;}if(this[_0x35fc('0xa')][_0x38d9f2][_0x35fc('0x13')]){this[_0x35fc('0x12')]+=0x1;}}this[_0x35fc('0x14')]=this[_0x35fc('0x11')]-this['paused'];this[_0x35fc('0x14')]=this[_0x35fc('0x14')]>=0x0?this['available']:0x0;var _0x41e165={'id':this['id'],'available':this[_0x35fc('0x14')],'loggedIn':this[_0x35fc('0x11')],'name':this['name'],'paused':this[_0x35fc('0x12')],'waiting':this[_0x35fc('0xc')]};var _0x465eb3=md5(JSON['stringify'](_0x41e165));if(this[_0x35fc('0x1')]!==_0x465eb3){this[_0x35fc('0x1')]=_0x465eb3;io['to'](util[_0x35fc('0x15')](_0x35fc('0x16'),_0x41e165[_0x35fc('0x17')]))[_0x35fc('0x18')](_0x35fc('0x19'),_0x41e165);}};module[_0x35fc('0x1a')]=OpenchannelQueue;
\ No newline at end of file
index 2e59b17..2616c8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf403=['sms:queue:%s','emit','sms_queue:save','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','loggedIn','length','online','smsPause','paused','available','md5','format'];(function(_0x5c0cb5,_0x19d413){var _0x15952e=function(_0x124a97){while(--_0x124a97){_0x5c0cb5['push'](_0x5c0cb5['shift']());}};_0x15952e(++_0x19d413);}(_0xf403,0x1d3));var _0x3f40=function(_0x36a474,_0x5475ff){_0x36a474=_0x36a474-0x0;var _0x401139=_0xf403[_0x36a474];return _0x401139;};'use strict';var _=require(_0x3f40('0x0'));var md5=require('md5');var util=require(_0x3f40('0x1'));var Redis=require(_0x3f40('0x2'));var config=require(_0x3f40('0x3'));config[_0x3f40('0x4')]=_[_0x3f40('0x5')](config[_0x3f40('0x4')],{'host':_0x3f40('0x6'),'port':0x18eb});var io=require(_0x3f40('0x7'))(new Redis(config['redis']));function SmsQueue(_0x4e91bb){this['id']=_0x4e91bb['id']||0x0;this[_0x3f40('0x8')]=_0x4e91bb[_0x3f40('0x8')]||'';this[_0x3f40('0x9')]=_0x4e91bb[_0x3f40('0x9')]||0xa;this['strategy']=_0x4e91bb[_0x3f40('0xa')]||'beepall';this['Agents']=_0x4e91bb[_0x3f40('0xb')];this[_0x3f40('0xc')]={};this[_0x3f40('0xd')]=0x0;this['md5']='';this['updateRouting']();this[_0x3f40('0xe')]();}SmsQueue[_0x3f40('0xf')][_0x3f40('0x10')]=function(){var _0x4e30e2=this[_0x3f40('0xc')][_0x3f40('0x11')];this[_0x3f40('0xc')]=_['map'](this[_0x3f40('0xb')],'id');this['mapAgentsId'][_0x3f40('0x11')]=_0x4e30e2;};SmsQueue[_0x3f40('0xf')][_0x3f40('0xe')]=function(){this[_0x3f40('0x12')]=0x0;this['paused']=0x0;for(var _0x2b2bfe=0x0;_0x2b2bfe<this[_0x3f40('0xb')][_0x3f40('0x13')];_0x2b2bfe+=0x1){if(this[_0x3f40('0xb')][_0x2b2bfe][_0x3f40('0x14')]){this['loggedIn']+=0x1;}if(this[_0x3f40('0xb')][_0x2b2bfe][_0x3f40('0x15')]){this['paused']+=0x1;}}this['available']=this['loggedIn']-this[_0x3f40('0x16')];this[_0x3f40('0x17')]=this[_0x3f40('0x17')]>=0x0?this[_0x3f40('0x17')]:0x0;var _0x374644={'id':this['id'],'available':this['available'],'loggedIn':this[_0x3f40('0x12')],'name':this[_0x3f40('0x8')],'paused':this[_0x3f40('0x16')],'waiting':this[_0x3f40('0xd')]};var _0x3129e2=md5(JSON['stringify'](_0x374644));if(this[_0x3f40('0x18')]!==_0x3129e2){this['md5']=_0x3129e2;io['to'](util[_0x3f40('0x19')](_0x3f40('0x1a'),_0x374644[_0x3f40('0x8')]))[_0x3f40('0x1b')](_0x3f40('0x1c'),_0x374644);}};module['exports']=SmsQueue;
\ No newline at end of file
+var _0x593e=['online','smsPause','paused','available','stringify','format','emit','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','loggedIn'];(function(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0x593e,0xcb));var _0xe593=function(_0x361fb4,_0x989320){_0x361fb4=_0x361fb4-0x0;var _0x84b75c=_0x593e[_0x361fb4];return _0x84b75c;};'use strict';var _=require(_0xe593('0x0'));var md5=require(_0xe593('0x1'));var util=require(_0xe593('0x2'));var Redis=require(_0xe593('0x3'));var config=require(_0xe593('0x4'));config[_0xe593('0x5')]=_[_0xe593('0x6')](config[_0xe593('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xe593('0x7'))(new Redis(config[_0xe593('0x5')]));function SmsQueue(_0x404e3a){this['id']=_0x404e3a['id']||0x0;this[_0xe593('0x8')]=_0x404e3a[_0xe593('0x8')]||'';this[_0xe593('0x9')]=_0x404e3a[_0xe593('0x9')]||0xa;this[_0xe593('0xa')]=_0x404e3a[_0xe593('0xa')]||_0xe593('0xb');this['Agents']=_0x404e3a[_0xe593('0xc')];this[_0xe593('0xd')]={};this[_0xe593('0xe')]=0x0;this['md5']='';this['updateRouting']();this[_0xe593('0xf')]();}SmsQueue[_0xe593('0x10')][_0xe593('0x11')]=function(){var _0x55fb84=this[_0xe593('0xd')][_0xe593('0x12')];this[_0xe593('0xd')]=_[_0xe593('0x13')](this[_0xe593('0xc')],'id');this[_0xe593('0xd')][_0xe593('0x12')]=_0x55fb84;};SmsQueue[_0xe593('0x10')][_0xe593('0xf')]=function(){this[_0xe593('0x14')]=0x0;this['paused']=0x0;for(var _0x2907e4=0x0;_0x2907e4<this[_0xe593('0xc')]['length'];_0x2907e4+=0x1){if(this[_0xe593('0xc')][_0x2907e4][_0xe593('0x15')]){this['loggedIn']+=0x1;}if(this[_0xe593('0xc')][_0x2907e4][_0xe593('0x16')]){this[_0xe593('0x17')]+=0x1;}}this[_0xe593('0x18')]=this[_0xe593('0x14')]-this[_0xe593('0x17')];this['available']=this[_0xe593('0x18')]>=0x0?this[_0xe593('0x18')]:0x0;var _0x5f57ce={'id':this['id'],'available':this[_0xe593('0x18')],'loggedIn':this[_0xe593('0x14')],'name':this['name'],'paused':this[_0xe593('0x17')],'waiting':this[_0xe593('0xe')]};var _0x862672=md5(JSON[_0xe593('0x19')](_0x5f57ce));if(this[_0xe593('0x1')]!==_0x862672){this[_0xe593('0x1')]=_0x862672;io['to'](util[_0xe593('0x1a')]('sms:queue:%s',_0x5f57ce['name']))[_0xe593('0x1b')]('sms_queue:save',_0x5f57ce);}};module['exports']=SmsQueue;
\ No newline at end of file
index b6cb992..a931be8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4096=['localhost','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','paused','length','online','whatsappPause','available','stringify','whatsapp:queue:%s','emit','whatsapp_queue:save','lodash','md5','util','ioredis','../../../config/environment','defaults','redis'];(function(_0x4f3ee5,_0x38db22){var _0x5280c7=function(_0x43a850){while(--_0x43a850){_0x4f3ee5['push'](_0x4f3ee5['shift']());}};_0x5280c7(++_0x38db22);}(_0x4096,0x161));var _0x6409=function(_0x45ba20,_0x3062f9){_0x45ba20=_0x45ba20-0x0;var _0x8cff45=_0x4096[_0x45ba20];return _0x8cff45;};'use strict';var _=require(_0x6409('0x0'));var md5=require(_0x6409('0x1'));var util=require(_0x6409('0x2'));var Redis=require(_0x6409('0x3'));var config=require(_0x6409('0x4'));config['redis']=_[_0x6409('0x5')](config[_0x6409('0x6')],{'host':_0x6409('0x7'),'port':0x18eb});var io=require(_0x6409('0x8'))(new Redis(config[_0x6409('0x6')]));function WhatsappQueue(_0x36f511){this['id']=_0x36f511['id']||0x0;this['name']=_0x36f511[_0x6409('0x9')]||'';this[_0x6409('0xa')]=_0x36f511['timeout']||0xa;this['strategy']=_0x36f511[_0x6409('0xb')]||'beepall';this[_0x6409('0xc')]=_0x36f511[_0x6409('0xc')];this['mapAgentsId']={};this[_0x6409('0xd')]=0x0;this[_0x6409('0x1')]='';this[_0x6409('0xe')]();this[_0x6409('0xf')]();}WhatsappQueue[_0x6409('0x10')][_0x6409('0xe')]=function(){var _0x1b1e43=this[_0x6409('0x11')][_0x6409('0x12')];this[_0x6409('0x11')]=_[_0x6409('0x13')](this[_0x6409('0xc')],'id');this['mapAgentsId'][_0x6409('0x12')]=_0x1b1e43;};WhatsappQueue['prototype'][_0x6409('0xf')]=function(){this[_0x6409('0x14')]=0x0;this[_0x6409('0x15')]=0x0;for(var _0x10ec73=0x0;_0x10ec73<this[_0x6409('0xc')][_0x6409('0x16')];_0x10ec73+=0x1){if(this[_0x6409('0xc')][_0x10ec73][_0x6409('0x17')]){this[_0x6409('0x14')]+=0x1;}if(this['Agents'][_0x10ec73][_0x6409('0x18')]){this[_0x6409('0x15')]+=0x1;}}this['available']=this[_0x6409('0x14')]-this['paused'];this[_0x6409('0x19')]=this[_0x6409('0x19')]>=0x0?this[_0x6409('0x19')]:0x0;var _0x1ea9fd={'id':this['id'],'available':this[_0x6409('0x19')],'loggedIn':this[_0x6409('0x14')],'name':this[_0x6409('0x9')],'paused':this[_0x6409('0x15')],'waiting':this[_0x6409('0xd')]};var _0x2332e9=md5(JSON[_0x6409('0x1a')](_0x1ea9fd));if(this[_0x6409('0x1')]!==_0x2332e9){this[_0x6409('0x1')]=_0x2332e9;io['to'](util['format'](_0x6409('0x1b'),_0x1ea9fd[_0x6409('0x9')]))[_0x6409('0x1c')](_0x6409('0x1d'),_0x1ea9fd);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0x3ba7=['available','format','whatsapp:queue:%s','emit','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','beepall','Agents','mapAgentsId','waiting','md5','updateRealtime','prototype','updateRouting','_rr','map','paused','length','online','loggedIn'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x3ba7,0x1e1));var _0x73ba=function(_0xaa2d32,_0x1af92a){_0xaa2d32=_0xaa2d32-0x0;var _0x17dc8c=_0x3ba7[_0xaa2d32];return _0x17dc8c;};'use strict';var _=require(_0x73ba('0x0'));var md5=require('md5');var util=require(_0x73ba('0x1'));var Redis=require(_0x73ba('0x2'));var config=require(_0x73ba('0x3'));config[_0x73ba('0x4')]=_[_0x73ba('0x5')](config[_0x73ba('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x73ba('0x6'))(new Redis(config[_0x73ba('0x4')]));function WhatsappQueue(_0xe66ac2){this['id']=_0xe66ac2['id']||0x0;this[_0x73ba('0x7')]=_0xe66ac2[_0x73ba('0x7')]||'';this[_0x73ba('0x8')]=_0xe66ac2['timeout']||0xa;this['strategy']=_0xe66ac2['strategy']||_0x73ba('0x9');this['Agents']=_0xe66ac2[_0x73ba('0xa')];this[_0x73ba('0xb')]={};this[_0x73ba('0xc')]=0x0;this[_0x73ba('0xd')]='';this['updateRouting']();this[_0x73ba('0xe')]();}WhatsappQueue[_0x73ba('0xf')][_0x73ba('0x10')]=function(){var _0x228daf=this[_0x73ba('0xb')][_0x73ba('0x11')];this['mapAgentsId']=_[_0x73ba('0x12')](this[_0x73ba('0xa')],'id');this['mapAgentsId'][_0x73ba('0x11')]=_0x228daf;};WhatsappQueue[_0x73ba('0xf')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x73ba('0x13')]=0x0;for(var _0x4c6fe9=0x0;_0x4c6fe9<this[_0x73ba('0xa')][_0x73ba('0x14')];_0x4c6fe9+=0x1){if(this[_0x73ba('0xa')][_0x4c6fe9][_0x73ba('0x15')]){this[_0x73ba('0x16')]+=0x1;}if(this[_0x73ba('0xa')][_0x4c6fe9]['whatsappPause']){this[_0x73ba('0x13')]+=0x1;}}this[_0x73ba('0x17')]=this['loggedIn']-this['paused'];this[_0x73ba('0x17')]=this['available']>=0x0?this['available']:0x0;var _0x382a3f={'id':this['id'],'available':this[_0x73ba('0x17')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0x73ba('0x13')],'waiting':this[_0x73ba('0xc')]};var _0x510ba0=md5(JSON['stringify'](_0x382a3f));if(this[_0x73ba('0xd')]!==_0x510ba0){this[_0x73ba('0xd')]=_0x510ba0;io['to'](util[_0x73ba('0x18')](_0x73ba('0x19'),_0x382a3f[_0x73ba('0x7')]))[_0x73ba('0x1a')]('whatsapp_queue:save',_0x382a3f);}};module[_0x73ba('0x1b')]=WhatsappQueue;
\ No newline at end of file
index f83ca2b..ac5d7d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x3c3136,_0x57ca26){var _0x1ecd6d=function(_0x48a627){while(--_0x48a627){_0x3c3136['push'](_0x3c3136['shift']());}};_0x1ecd6d(++_0x57ca26);}(_0xb10b,0x12a));var _0xbb10=function(_0x1abbaa,_0x1b7a38){_0x1abbaa=_0x1abbaa-0x0;var _0x40ed52=_0xb10b[_0x1abbaa];return _0x40ed52;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
+var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x42b95e,_0x3bcf77){var _0x88c923=function(_0x3a125d){while(--_0x3a125d){_0x42b95e['push'](_0x42b95e['shift']());}};_0x88c923(++_0x3bcf77);}(_0xb10b,0x12a));var _0xbb10=function(_0xa8ccab,_0x4d7cae){_0xa8ccab=_0xa8ccab-0x0;var _0x570d5f=_0xb10b[_0xa8ccab];return _0x570d5f;};'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 8b83791..958d09e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd13d=['update','Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client'];(function(_0x431970,_0x3d390b){var _0x3a347a=function(_0x44cb66){while(--_0x44cb66){_0x431970['push'](_0x431970['shift']());}};_0x3a347a(++_0x3d390b);}(_0xd13d,0x8f));var _0xdd13=function(_0xdeb9e,_0x1b7a39){_0xdeb9e=_0xdeb9e-0x0;var _0x57b259=_0xd13d[_0xdeb9e];return _0x57b259;};'use strict';var client=require(_0xdd13('0x0'));exports[_0xdd13('0x1')]=function(_0x10f4ca,_0x179360){return client[_0xdd13('0x2')](_0xdd13('0x3'),{'body':_0x179360,'options':{'where':{'id':_0x10f4ca}},'log':_0xdd13('0x4')});};exports[_0xdd13('0x5')]=function(_0x2d960a,_0x2b2b26){return client['Request'](_0xdd13('0x6'),{'body':_0x2b2b26,'options':{'where':{'id':_0x2d960a}},'log':_0xdd13('0x7')});};
\ No newline at end of file
+var _0xd24f=['../client','update','addTags','Request','AddTagsToChatInteraction','addTagsToChatInteraction'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xd24f,0x16e));var _0xfd24=function(_0x1e2e30,_0x48b693){_0x1e2e30=_0x1e2e30-0x0;var _0x49169c=_0xd24f[_0x1e2e30];return _0x49169c;};'use strict';var client=require(_0xfd24('0x0'));exports[_0xfd24('0x1')]=function(_0x298f2b,_0x5c883f){return client['Request']('UpdateChatInteraction',{'body':_0x5c883f,'options':{'where':{'id':_0x298f2b}},'log':'updateChatInteraction'});};exports[_0xfd24('0x2')]=function(_0x484a7f,_0x5d85ce){return client[_0xfd24('0x3')](_0xfd24('0x4'),{'body':_0x5d85ce,'options':{'where':{'id':_0x484a7f}},'log':_0xfd24('0x5')});};
\ No newline at end of file
index daff5ee..6f267f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c1e=['../client','create','Request','CreateChatMessage','createChatMessage'];(function(_0x2fac21,_0x35d264){var _0x37fc1a=function(_0x157772){while(--_0x157772){_0x2fac21['push'](_0x2fac21['shift']());}};_0x37fc1a(++_0x35d264);}(_0x1c1e,0x87));var _0xe1c1=function(_0x435b2f,_0x4c44da){_0x435b2f=_0x435b2f-0x0;var _0x181648=_0x1c1e[_0x435b2f];return _0x181648;};'use strict';var client=require(_0xe1c1('0x0'));exports[_0xe1c1('0x1')]=function(_0x30daae){return client[_0xe1c1('0x2')](_0xe1c1('0x3'),{'body':_0x30daae,'log':_0xe1c1('0x4')});};
\ No newline at end of file
+var _0xc5fd=['createChatMessage','../client','create','Request','CreateChatMessage'];(function(_0x38fe3f,_0x12c118){var _0x5cd1c0=function(_0x3fa901){while(--_0x3fa901){_0x38fe3f['push'](_0x38fe3f['shift']());}};_0x5cd1c0(++_0x12c118);}(_0xc5fd,0x92));var _0xdc5f=function(_0x5e1b91,_0x236f17){_0x5e1b91=_0x5e1b91-0x0;var _0x59b52f=_0xc5fd[_0x5e1b91];return _0x59b52f;};'use strict';var client=require(_0xdc5f('0x0'));exports[_0xdc5f('0x1')]=function(_0x105e7c){return client[_0xdc5f('0x2')](_0xdc5f('0x3'),{'body':_0x105e7c,'log':_0xdc5f('0x4')});};
\ No newline at end of file
index f3720d7..2c9e004 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fa4=['../client','name','timeout','strategy','User','Agents','online','getChatQueues'];(function(_0x4fe736,_0xb0474f){var _0x2fe9c3=function(_0x10d3ad){while(--_0x10d3ad){_0x4fe736['push'](_0x4fe736['shift']());}};_0x2fe9c3(++_0xb0474f);}(_0x3fa4,0xf0));var _0x43fa=function(_0x5f4c50,_0x1f96ef){_0x5f4c50=_0x5f4c50-0x0;var _0x41adf6=_0x3fa4[_0x5f4c50];return _0x41adf6;};'use strict';var client=require(_0x43fa('0x0'));exports['getChatQueues']=function(){return function(){return client['Request']('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x43fa('0x1'),_0x43fa('0x2'),_0x43fa('0x3')],'include':[{'model':_0x43fa('0x4'),'as':_0x43fa('0x5'),'attributes':['id',_0x43fa('0x1'),_0x43fa('0x6'),'chatPause']}]},'log':_0x43fa('0x7')});};};
\ No newline at end of file
+var _0x639d=['User','../client','getChatQueues','Request','name','timeout'];(function(_0x43f489,_0x2b4fea){var _0x4134b4=function(_0x4365f6){while(--_0x4365f6){_0x43f489['push'](_0x43f489['shift']());}};_0x4134b4(++_0x2b4fea);}(_0x639d,0xbb));var _0xd639=function(_0x5a0748,_0xa78cba){_0x5a0748=_0x5a0748-0x0;var _0x42bfa7=_0x639d[_0x5a0748];return _0x42bfa7;};'use strict';var client=require(_0xd639('0x0'));exports[_0xd639('0x1')]=function(){return function(){return client[_0xd639('0x2')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0xd639('0x3'),_0xd639('0x4'),'strategy'],'include':[{'model':_0xd639('0x5'),'as':'Agents','attributes':['id',_0xd639('0x3'),'online','chatPause']}]},'log':_0xd639('0x1')});};};
\ No newline at end of file
index 84674f9..10e6916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7f=['create','Request','CreateChatQueueReport','UpdateChatQueueReport','DESC'];(function(_0x54c805,_0xdb4a71){var _0x29ee73=function(_0x40bc17){while(--_0x40bc17){_0x54c805['push'](_0x54c805['shift']());}};_0x29ee73(++_0xdb4a71);}(_0x6f7f,0x177));var _0xf6f7=function(_0x42a263,_0x5ebe85){_0x42a263=_0x42a263-0x0;var _0x212dfa=_0x6f7f[_0x42a263];return _0x212dfa;};'use strict';var client=require('../client');exports[_0xf6f7('0x0')]=function(_0x2d025d){return client[_0xf6f7('0x1')](_0xf6f7('0x2'),{'body':_0x2d025d,'log':_0xf6f7('0x2')});};exports['update']=function(_0x1933e9,_0x52ca83){return client[_0xf6f7('0x1')](_0xf6f7('0x3'),{'body':_0x52ca83,'options':{'where':{'uniqueid':_0x1933e9},'order':[['id',_0xf6f7('0x4')]],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
+var _0x9f94=['update','Request','DESC','UpdateChatQueueReport','../client','create','CreateChatQueueReport'];(function(_0x28b7ab,_0x16a764){var _0x56791b=function(_0x25d20d){while(--_0x25d20d){_0x28b7ab['push'](_0x28b7ab['shift']());}};_0x56791b(++_0x16a764);}(_0x9f94,0x1e7));var _0x49f9=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9f94[_0x4565bf];return _0x5610ba;};'use strict';var client=require(_0x49f9('0x0'));exports[_0x49f9('0x1')]=function(_0x2ca96a){return client['Request']('CreateChatQueueReport',{'body':_0x2ca96a,'log':_0x49f9('0x2')});};exports[_0x49f9('0x3')]=function(_0xb643ef,_0x375856){return client[_0x49f9('0x4')]('UpdateChatQueueReport',{'body':_0x375856,'options':{'where':{'uniqueid':_0xb643ef},'order':[['id',_0x49f9('0x5')]],'limit':0x1},'log':_0x49f9('0x6')});};
\ No newline at end of file
index 1a4abba..06f7251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x4178af,_0x388652){var _0x20f4b1=function(_0x504188){while(--_0x504188){_0x4178af['push'](_0x4178af['shift']());}};_0x20f4b1(++_0x388652);}(_0x7a54,0x106));var _0x47a5=function(_0x304c76,_0x18e881){_0x304c76=_0x304c76-0x0;var _0x1a160b=_0x7a54[_0x304c76];return _0x1a160b;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x1ca5e4,_0xf63e43){var _0x282232=function(_0x11fd8b){while(--_0x11fd8b){_0x1ca5e4['push'](_0x1ca5e4['shift']());}};_0x282232(++_0xf63e43);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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 f588d61..dc34449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb03=['Request','CreateFaxMessage','createFaxMessage','../client','create'];(function(_0x81dcac,_0x8ff7db){var _0xc7803b=function(_0x499b29){while(--_0x499b29){_0x81dcac['push'](_0x81dcac['shift']());}};_0xc7803b(++_0x8ff7db);}(_0xfb03,0xe4));var _0x3fb0=function(_0x29b118,_0x426f51){_0x29b118=_0x29b118-0x0;var _0x4e8622=_0xfb03[_0x29b118];return _0x4e8622;};'use strict';var client=require(_0x3fb0('0x0'));exports[_0x3fb0('0x1')]=function(_0x151498){return client[_0x3fb0('0x2')](_0x3fb0('0x3'),{'body':_0x151498,'log':_0x3fb0('0x4')});};
\ No newline at end of file
+var _0xd257=['create','CreateFaxMessage'];(function(_0xe6232c,_0xb5902d){var _0x2a373a=function(_0x49306a){while(--_0x49306a){_0xe6232c['push'](_0xe6232c['shift']());}};_0x2a373a(++_0xb5902d);}(_0xd257,0x1e8));var _0x7d25=function(_0x9df3d8,_0x4074e3){_0x9df3d8=_0x9df3d8-0x0;var _0x366da1=_0xd257[_0x9df3d8];return _0x366da1;};'use strict';var client=require('../client');exports[_0x7d25('0x0')]=function(_0x581341){return client['Request'](_0x7d25('0x1'),{'body':_0x581341,'log':'createFaxMessage'});};
\ No newline at end of file
index 4ee56ec..aabb28d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28b3=['getFaxQueues','Request','GetFaxQueue','name','timeout','strategy','User','Agents','online','../client'];(function(_0xf9794a,_0x1c7a40){var _0x220483=function(_0x4d3ef6){while(--_0x4d3ef6){_0xf9794a['push'](_0xf9794a['shift']());}};_0x220483(++_0x1c7a40);}(_0x28b3,0x167));var _0x328b=function(_0x310c8a,_0x24b154){_0x310c8a=_0x310c8a-0x0;var _0x25a984=_0x28b3[_0x310c8a];return _0x25a984;};'use strict';var client=require(_0x328b('0x0'));exports[_0x328b('0x1')]=function(){return function(){return client[_0x328b('0x2')](_0x328b('0x3'),{'options':{'raw':![],'attributes':['id',_0x328b('0x4'),_0x328b('0x5'),_0x328b('0x6')],'include':[{'model':_0x328b('0x7'),'as':_0x328b('0x8'),'attributes':['id',_0x328b('0x4'),_0x328b('0x9'),'faxPause']}]},'log':'getFaxQueues'});};};
\ No newline at end of file
+var _0x2fb1=['GetFaxQueue','name','timeout','strategy','Agents','../client','getFaxQueues','Request'];(function(_0x3257c6,_0x3f2494){var _0x57f90a=function(_0x3c96ad){while(--_0x3c96ad){_0x3257c6['push'](_0x3257c6['shift']());}};_0x57f90a(++_0x3f2494);}(_0x2fb1,0x65));var _0x12fb=function(_0x2aff3b,_0x1ab4c5){_0x2aff3b=_0x2aff3b-0x0;var _0x5cc69d=_0x2fb1[_0x2aff3b];return _0x5cc69d;};'use strict';var client=require(_0x12fb('0x0'));exports[_0x12fb('0x1')]=function(){return function(){return client[_0x12fb('0x2')](_0x12fb('0x3'),{'options':{'raw':![],'attributes':['id',_0x12fb('0x4'),_0x12fb('0x5'),_0x12fb('0x6')],'include':[{'model':'User','as':_0x12fb('0x7'),'attributes':['id',_0x12fb('0x4'),'online','faxPause']}]},'log':'getFaxQueues'});};};
\ No newline at end of file
index 3052061..3548f9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cdf=['CreateFaxQueueReport','UpdateFaxQueueReport','DESC','../client'];(function(_0x15c336,_0x26ccbb){var _0x1196e0=function(_0x41d284){while(--_0x41d284){_0x15c336['push'](_0x15c336['shift']());}};_0x1196e0(++_0x26ccbb);}(_0x1cdf,0xc7));var _0xf1cd=function(_0x104f85,_0x5368d3){_0x104f85=_0x104f85-0x0;var _0xa8036b=_0x1cdf[_0x104f85];return _0xa8036b;};'use strict';var client=require(_0xf1cd('0x0'));exports['create']=function(_0x270b32){return client['Request'](_0xf1cd('0x1'),{'body':_0x270b32,'log':_0xf1cd('0x1')});};exports['update']=function(_0x4a7ac1,_0x45e76e){return client['Request'](_0xf1cd('0x2'),{'body':_0x45e76e,'options':{'where':{'uniqueid':_0x4a7ac1},'order':[['id',_0xf1cd('0x3')]],'limit':0x1},'log':_0xf1cd('0x2')});};
\ No newline at end of file
+var _0xf6af=['CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client','create','Request'];(function(_0x4214e5,_0x255fd1){var _0x1cff40=function(_0x401d9c){while(--_0x401d9c){_0x4214e5['push'](_0x4214e5['shift']());}};_0x1cff40(++_0x255fd1);}(_0xf6af,0x1bd));var _0xff6a=function(_0x3db756,_0x73c125){_0x3db756=_0x3db756-0x0;var _0x2c1ff1=_0xf6af[_0x3db756];return _0x2c1ff1;};'use strict';var client=require(_0xff6a('0x0'));exports[_0xff6a('0x1')]=function(_0x336375){return client[_0xff6a('0x2')](_0xff6a('0x3'),{'body':_0x336375,'log':'CreateFaxQueueReport'});};exports[_0xff6a('0x4')]=function(_0x576278,_0x17afe5){return client[_0xff6a('0x2')](_0xff6a('0x5'),{'body':_0x17afe5,'options':{'where':{'uniqueid':_0x576278},'order':[['id',_0xff6a('0x6')]],'limit':0x1},'log':_0xff6a('0x5')});};
\ No newline at end of file
index a049c1d..73a1b85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ed2=['../client','Request','GetInterval','name','Intervals','interval'];(function(_0xdbdb5f,_0x10f18b){var _0x4dfa9d=function(_0x20ce9c){while(--_0x20ce9c){_0xdbdb5f['push'](_0xdbdb5f['shift']());}};_0x4dfa9d(++_0x10f18b);}(_0x7ed2,0x1d4));var _0x27ed=function(_0x3503ca,_0x32bb78){_0x3503ca=_0x3503ca-0x0;var _0x593ae5=_0x7ed2[_0x3503ca];return _0x593ae5;};'use strict';var client=require(_0x27ed('0x0'));exports['getIntervals']=function(){return function(){return client[_0x27ed('0x1')](_0x27ed('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x27ed('0x3')],'include':[{'model':'Interval','as':_0x27ed('0x4'),'attributes':['id','name',_0x27ed('0x5')]}]},'log':'getIntervals'});};};
\ No newline at end of file
+var _0x155c=['name','Interval','Intervals','interval','../client','getIntervals','Request','GetInterval'];(function(_0x3fd50c,_0x1b41ed){var _0x4cebb2=function(_0x56a546){while(--_0x56a546){_0x3fd50c['push'](_0x3fd50c['shift']());}};_0x4cebb2(++_0x1b41ed);}(_0x155c,0x94));var _0xc155=function(_0x41a4d6,_0x3cd62b){_0x41a4d6=_0x41a4d6-0x0;var _0x2f8a4a=_0x155c[_0x41a4d6];return _0x2f8a4a;};'use strict';var client=require(_0xc155('0x0'));exports[_0xc155('0x1')]=function(){return function(){return client[_0xc155('0x2')](_0xc155('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xc155('0x4')],'include':[{'model':_0xc155('0x5'),'as':_0xc155('0x6'),'attributes':['id',_0xc155('0x4'),_0xc155('0x7')]}]},'log':'getIntervals'});};};
\ No newline at end of file
index b13495d..c0f1548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2da6=['UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','Request'];(function(_0x38ad8e,_0x33ebc2){var _0xe17df5=function(_0x235752){while(--_0x235752){_0x38ad8e['push'](_0x38ad8e['shift']());}};_0xe17df5(++_0x33ebc2);}(_0x2da6,0x1dd));var _0x62da=function(_0x4ff00d,_0x2e42ec){_0x4ff00d=_0x4ff00d-0x0;var _0x36f3cd=_0x2da6[_0x4ff00d];return _0x36f3cd;};'use strict';var client=require(_0x62da('0x0'));exports[_0x62da('0x1')]=function(_0x1d3698,_0xbbb39b){return client[_0x62da('0x2')](_0x62da('0x3'),{'body':_0xbbb39b,'options':{'where':{'id':_0x1d3698}},'log':_0x62da('0x4')});};exports[_0x62da('0x5')]=function(_0x4c079d,_0x4a8428){return client[_0x62da('0x2')](_0x62da('0x6'),{'body':_0x4a8428,'options':{'where':{'id':_0x4c079d}},'log':_0x62da('0x7')});};
\ No newline at end of file
+var _0xd4a2=['UpdateMailInteraction','addTags','Request','AddTagsToMailInteraction','addTagsToChatInteraction','../client'];(function(_0x38d4f6,_0x30c2dc){var _0xceaf9a=function(_0x112037){while(--_0x112037){_0x38d4f6['push'](_0x38d4f6['shift']());}};_0xceaf9a(++_0x30c2dc);}(_0xd4a2,0x173));var _0x2d4a=function(_0x4da1fa,_0x16cd4b){_0x4da1fa=_0x4da1fa-0x0;var _0x444b5d=_0xd4a2[_0x4da1fa];return _0x444b5d;};'use strict';var client=require(_0x2d4a('0x0'));exports['update']=function(_0x4e88a9,_0xfba415){return client['Request'](_0x2d4a('0x1'),{'body':_0xfba415,'options':{'where':{'id':_0x4e88a9}},'log':'updateMailInteraction'});};exports[_0x2d4a('0x2')]=function(_0x5d435a,_0x32af9e){return client[_0x2d4a('0x3')](_0x2d4a('0x4'),{'body':_0x32af9e,'options':{'where':{'id':_0x5d435a}},'log':_0x2d4a('0x5')});};
\ No newline at end of file
index 19d4db2..5ad4e87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed90=['createMailMessage'];(function(_0x59399a,_0x44cae6){var _0x41c108=function(_0x8fa218){while(--_0x8fa218){_0x59399a['push'](_0x59399a['shift']());}};_0x41c108(++_0x44cae6);}(_0xed90,0x97));var _0x0ed9=function(_0x101fe4,_0x3f8b9b){_0x101fe4=_0x101fe4-0x0;var _0x3f8d86=_0xed90[_0x101fe4];return _0x3f8d86;};'use strict';var client=require('../client');exports['create']=function(_0x352328){return client['Request']('CreateMailMessage',{'body':_0x352328,'log':_0x0ed9('0x0')});};
\ No newline at end of file
+var _0x9625=['../client','create'];(function(_0x264545,_0x214037){var _0x114d10=function(_0x9e3461){while(--_0x9e3461){_0x264545['push'](_0x264545['shift']());}};_0x114d10(++_0x214037);}(_0x9625,0xe8));var _0x5962=function(_0x34b981,_0x55c311){_0x34b981=_0x34b981-0x0;var _0xaff882=_0x9625[_0x34b981];return _0xaff882;};'use strict';var client=require(_0x5962('0x0'));exports[_0x5962('0x1')]=function(_0x5fd812){return client['Request']('CreateMailMessage',{'body':_0x5fd812,'log':'createMailMessage'});};
\ No newline at end of file
index aab81b4..d2f3da4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdd3=['timeout','strategy','User','online','../client','getMailQueues','Request','GetMailQueue','name'];(function(_0x28d23b,_0x4d2b82){var _0x54a911=function(_0x192aec){while(--_0x192aec){_0x28d23b['push'](_0x28d23b['shift']());}};_0x54a911(++_0x4d2b82);}(_0xcdd3,0x109));var _0x3cdd=function(_0x3a359d,_0x23162f){_0x3a359d=_0x3a359d-0x0;var _0x459121=_0xcdd3[_0x3a359d];return _0x459121;};'use strict';var client=require(_0x3cdd('0x0'));exports[_0x3cdd('0x1')]=function(){return function(){return client[_0x3cdd('0x2')](_0x3cdd('0x3'),{'options':{'raw':![],'attributes':['id',_0x3cdd('0x4'),_0x3cdd('0x5'),_0x3cdd('0x6')],'include':[{'model':_0x3cdd('0x7'),'as':'Agents','attributes':['id','name',_0x3cdd('0x8'),'mailPause']}]},'log':_0x3cdd('0x1')});};};
\ No newline at end of file
+var _0xad7e=['Request','GetMailQueue','name','timeout','strategy','User','online','mailPause','getMailQueues','../client'];(function(_0x46582a,_0x554998){var _0x37ff40=function(_0x59694f){while(--_0x59694f){_0x46582a['push'](_0x46582a['shift']());}};_0x37ff40(++_0x554998);}(_0xad7e,0x1f3));var _0xead7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xad7e[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xead7('0x0'));exports['getMailQueues']=function(){return function(){return client[_0xead7('0x1')](_0xead7('0x2'),{'options':{'raw':![],'attributes':['id',_0xead7('0x3'),_0xead7('0x4'),_0xead7('0x5')],'include':[{'model':_0xead7('0x6'),'as':'Agents','attributes':['id',_0xead7('0x3'),_0xead7('0x7'),_0xead7('0x8')]}]},'log':_0xead7('0x9')});};};
\ No newline at end of file
index fa053db..4e3a10f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeb1=['UpdateMailQueueReport','DESC','../client','Request','CreateMailQueueReport','update'];(function(_0x54d9f6,_0x2ecf42){var _0x355986=function(_0x15ca12){while(--_0x15ca12){_0x54d9f6['push'](_0x54d9f6['shift']());}};_0x355986(++_0x2ecf42);}(_0xfeb1,0x17c));var _0x1feb=function(_0x360ba7,_0x3ffe53){_0x360ba7=_0x360ba7-0x0;var _0x2ceb9e=_0xfeb1[_0x360ba7];return _0x2ceb9e;};'use strict';var client=require(_0x1feb('0x0'));exports['create']=function(_0x216678){return client[_0x1feb('0x1')]('CreateMailQueueReport',{'body':_0x216678,'log':_0x1feb('0x2')});};exports[_0x1feb('0x3')]=function(_0xd0d554,_0xdf0911){return client[_0x1feb('0x1')](_0x1feb('0x4'),{'body':_0xdf0911,'options':{'where':{'uniqueid':_0xd0d554},'order':[['id',_0x1feb('0x5')]],'limit':0x1},'log':_0x1feb('0x4')});};
\ No newline at end of file
+var _0xa6c8=['Request','CreateMailQueueReport','update','UpdateMailQueueReport','DESC','../client','create'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa6c8,0x116));var _0x8a6c=function(_0x5f34e1,_0x4bd8b2){_0x5f34e1=_0x5f34e1-0x0;var _0x348060=_0xa6c8[_0x5f34e1];return _0x348060;};'use strict';var client=require(_0x8a6c('0x0'));exports[_0x8a6c('0x1')]=function(_0x29476e){return client[_0x8a6c('0x2')](_0x8a6c('0x3'),{'body':_0x29476e,'log':_0x8a6c('0x3')});};exports[_0x8a6c('0x4')]=function(_0x409235,_0x26e47b){return client[_0x8a6c('0x2')](_0x8a6c('0x5'),{'body':_0x26e47b,'options':{'where':{'uniqueid':_0x409235},'order':[['id',_0x8a6c('0x6')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
index 635e5bd..afd7de2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54d4=['addTagsToChatInteraction','../client','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x54d4,0x1dd));var _0x454d=function(_0x183a54,_0x55b00b){_0x183a54=_0x183a54-0x0;var _0x58a000=_0x54d4[_0x183a54];return _0x58a000;};'use strict';var client=require(_0x454d('0x0'));exports['update']=function(_0x286142,_0x2bc9c5){return client[_0x454d('0x1')](_0x454d('0x2'),{'body':_0x2bc9c5,'options':{'where':{'id':_0x286142}},'log':_0x454d('0x3')});};exports[_0x454d('0x4')]=function(_0x2eeb23,_0x1086e0){return client[_0x454d('0x1')](_0x454d('0x5'),{'body':_0x1086e0,'options':{'where':{'id':_0x2eeb23}},'log':_0x454d('0x6')});};
\ No newline at end of file
+var _0x54cb=['UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','Request'];(function(_0x44278,_0x1bd66f){var _0x2d97f9=function(_0x18a1a3){while(--_0x18a1a3){_0x44278['push'](_0x44278['shift']());}};_0x2d97f9(++_0x1bd66f);}(_0x54cb,0x1e7));var _0xb54c=function(_0x2f08de,_0x43f5ed){_0x2f08de=_0x2f08de-0x0;var _0x1ff46c=_0x54cb[_0x2f08de];return _0x1ff46c;};'use strict';var client=require('../client');exports['update']=function(_0x306a86,_0x5463a1){return client[_0xb54c('0x0')](_0xb54c('0x1'),{'body':_0x5463a1,'options':{'where':{'id':_0x306a86}},'log':_0xb54c('0x2')});};exports[_0xb54c('0x3')]=function(_0x566cf8,_0x249428){return client[_0xb54c('0x0')]('AddTagsToOpenchannelInteraction',{'body':_0x249428,'options':{'where':{'id':_0x566cf8}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 3c67b93..2892a2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4e7=['createOpenchannelMessage','create','CreateOpenchannelMessage'];(function(_0x5e6cb8,_0x16cf56){var _0x3faeb3=function(_0x1a7355){while(--_0x1a7355){_0x5e6cb8['push'](_0x5e6cb8['shift']());}};_0x3faeb3(++_0x16cf56);}(_0xc4e7,0x1b7));var _0x7c4e=function(_0x4dde94,_0x52b903){_0x4dde94=_0x4dde94-0x0;var _0x30acf7=_0xc4e7[_0x4dde94];return _0x30acf7;};'use strict';var client=require('../client');exports[_0x7c4e('0x0')]=function(_0x19f161){return client['Request'](_0x7c4e('0x1'),{'body':_0x19f161,'log':_0x7c4e('0x2')});};
\ No newline at end of file
+var _0x62d4=['createOpenchannelMessage','create','Request','CreateOpenchannelMessage'];(function(_0x13e6b3,_0x39fc2a){var _0x32433f=function(_0x124f05){while(--_0x124f05){_0x13e6b3['push'](_0x13e6b3['shift']());}};_0x32433f(++_0x39fc2a);}(_0x62d4,0xb9));var _0x462d=function(_0x13c7c1,_0x72ed60){_0x13c7c1=_0x13c7c1-0x0;var _0x2a8045=_0x62d4[_0x13c7c1];return _0x2a8045;};'use strict';var client=require('../client');exports[_0x462d('0x0')]=function(_0x18b7b5){return client[_0x462d('0x1')](_0x462d('0x2'),{'body':_0x18b7b5,'log':_0x462d('0x3')});};
\ No newline at end of file
index 695cfe6..54985a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b20=['online','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout','User','Agents'];(function(_0x2dd390,_0x1bc894){var _0x3afe47=function(_0x42d8d3){while(--_0x42d8d3){_0x2dd390['push'](_0x2dd390['shift']());}};_0x3afe47(++_0x1bc894);}(_0x3b20,0x1de));var _0x03b2=function(_0x593a76,_0x3a25ef){_0x593a76=_0x593a76-0x0;var _0x24a453=_0x3b20[_0x593a76];return _0x24a453;};'use strict';var client=require(_0x03b2('0x0'));exports[_0x03b2('0x1')]=function(){return function(){return client[_0x03b2('0x2')](_0x03b2('0x3'),{'options':{'raw':![],'attributes':['id',_0x03b2('0x4'),_0x03b2('0x5'),'strategy'],'include':[{'model':_0x03b2('0x6'),'as':_0x03b2('0x7'),'attributes':['id',_0x03b2('0x4'),_0x03b2('0x8'),'openchannelPause']}]},'log':_0x03b2('0x1')});};};
\ No newline at end of file
+var _0x9219=['strategy','User','Agents','online','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout'];(function(_0x32f470,_0x3726c6){var _0x43cc20=function(_0x33a259){while(--_0x33a259){_0x32f470['push'](_0x32f470['shift']());}};_0x43cc20(++_0x3726c6);}(_0x9219,0xc0));var _0x9921=function(_0x1dbf09,_0xd95808){_0x1dbf09=_0x1dbf09-0x0;var _0x4bd700=_0x9219[_0x1dbf09];return _0x4bd700;};'use strict';var client=require(_0x9921('0x0'));exports[_0x9921('0x1')]=function(){return function(){return client[_0x9921('0x2')](_0x9921('0x3'),{'options':{'raw':![],'attributes':['id',_0x9921('0x4'),_0x9921('0x5'),_0x9921('0x6')],'include':[{'model':_0x9921('0x7'),'as':_0x9921('0x8'),'attributes':['id','name',_0x9921('0x9'),_0x9921('0xa')]}]},'log':_0x9921('0x1')});};};
\ No newline at end of file
index 12224ae..44bc12b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac5f=['DESC','../client','Request','CreateOpenchannelQueueReport'];(function(_0x1db481,_0x1627b2){var _0x3db95b=function(_0x2d54e4){while(--_0x2d54e4){_0x1db481['push'](_0x1db481['shift']());}};_0x3db95b(++_0x1627b2);}(_0xac5f,0x139));var _0xfac5=function(_0xef99,_0x590779){_0xef99=_0xef99-0x0;var _0x350c23=_0xac5f[_0xef99];return _0x350c23;};'use strict';var client=require(_0xfac5('0x0'));exports['create']=function(_0x5ad85c){return client[_0xfac5('0x1')](_0xfac5('0x2'),{'body':_0x5ad85c,'log':_0xfac5('0x2')});};exports['update']=function(_0x4ffedc,_0x187c4e){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x187c4e,'options':{'where':{'uniqueid':_0x4ffedc},'order':[['id',_0xfac5('0x3')]],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
+var _0x0e1e=['UpdateOpenchannelQueueReport','DESC','../client','create','Request','CreateOpenchannelQueueReport','update'];(function(_0xd02bb,_0x26e2d0){var _0x1cdf23=function(_0x18fd05){while(--_0x18fd05){_0xd02bb['push'](_0xd02bb['shift']());}};_0x1cdf23(++_0x26e2d0);}(_0x0e1e,0x13d));var _0xe0e1=function(_0x1ae14d,_0x41bab5){_0x1ae14d=_0x1ae14d-0x0;var _0x5bfc99=_0x0e1e[_0x1ae14d];return _0x5bfc99;};'use strict';var client=require(_0xe0e1('0x0'));exports[_0xe0e1('0x1')]=function(_0x22bdf4){return client[_0xe0e1('0x2')](_0xe0e1('0x3'),{'body':_0x22bdf4,'log':_0xe0e1('0x3')});};exports[_0xe0e1('0x4')]=function(_0xddb556,_0x8e7537){return client[_0xe0e1('0x2')](_0xe0e1('0x5'),{'body':_0x8e7537,'options':{'where':{'uniqueid':_0xddb556},'order':[['id',_0xe0e1('0x6')]],'limit':0x1},'log':_0xe0e1('0x5')});};
\ No newline at end of file
index ad02286..4e8b2c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207d=['Request','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','UpdateSmsInteraction','addTags'];(function(_0x4691cc,_0x16c9ce){var _0x204696=function(_0x59ac5b){while(--_0x59ac5b){_0x4691cc['push'](_0x4691cc['shift']());}};_0x204696(++_0x16c9ce);}(_0x207d,0x10d));var _0xd207=function(_0x560289,_0x245433){_0x560289=_0x560289-0x0;var _0x2a4290=_0x207d[_0x560289];return _0x2a4290;};'use strict';var client=require(_0xd207('0x0'));exports[_0xd207('0x1')]=function(_0x302062,_0x27a1dc){return client['Request'](_0xd207('0x2'),{'body':_0x27a1dc,'options':{'where':{'id':_0x302062}},'log':'updateSmsInteraction'});};exports[_0xd207('0x3')]=function(_0x422501,_0x5351ed){return client[_0xd207('0x4')](_0xd207('0x5'),{'body':_0x5351ed,'options':{'where':{'id':_0x422501}},'log':_0xd207('0x6')});};
\ No newline at end of file
+var _0x7a08=['Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x7a08,0x11e));var _0x87a0=function(_0x20ea26,_0x5512f8){_0x20ea26=_0x20ea26-0x0;var _0xcbc4d7=_0x7a08[_0x20ea26];return _0xcbc4d7;};'use strict';var client=require(_0x87a0('0x0'));exports[_0x87a0('0x1')]=function(_0x48ea54,_0x59cb8c){return client[_0x87a0('0x2')](_0x87a0('0x3'),{'body':_0x59cb8c,'options':{'where':{'id':_0x48ea54}},'log':_0x87a0('0x4')});};exports[_0x87a0('0x5')]=function(_0x28c28f,_0x122d33){return client[_0x87a0('0x2')](_0x87a0('0x6'),{'body':_0x122d33,'options':{'where':{'id':_0x28c28f}},'log':_0x87a0('0x7')});};
\ No newline at end of file
index aa65b1e..4371c55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6462=['Request','CreateSmsMessage','createSmsMessage','create'];(function(_0x18b8c7,_0x6ae826){var _0x5ec1e1=function(_0x503262){while(--_0x503262){_0x18b8c7['push'](_0x18b8c7['shift']());}};_0x5ec1e1(++_0x6ae826);}(_0x6462,0x16f));var _0x2646=function(_0x4a7995,_0x1b0149){_0x4a7995=_0x4a7995-0x0;var _0x46a6f9=_0x6462[_0x4a7995];return _0x46a6f9;};'use strict';var client=require('../client');exports[_0x2646('0x0')]=function(_0x4fef64){return client[_0x2646('0x1')](_0x2646('0x2'),{'body':_0x4fef64,'log':_0x2646('0x3')});};
\ No newline at end of file
+var _0xf397=['CreateSmsMessage','createSmsMessage','../client','Request'];(function(_0x45fd3b,_0x29dab8){var _0x50a042=function(_0x1eeb3e){while(--_0x1eeb3e){_0x45fd3b['push'](_0x45fd3b['shift']());}};_0x50a042(++_0x29dab8);}(_0xf397,0xae));var _0x7f39=function(_0x530c6f,_0x9ecccf){_0x530c6f=_0x530c6f-0x0;var _0x371d45=_0xf397[_0x530c6f];return _0x371d45;};'use strict';var client=require(_0x7f39('0x0'));exports['create']=function(_0x296ce1){return client[_0x7f39('0x1')](_0x7f39('0x2'),{'body':_0x296ce1,'log':_0x7f39('0x3')});};
\ No newline at end of file
index 3488c67..6070ab8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['Request','GetSmsQueue','name','timeout','strategy','User','online','getSmsQueues'];(function(_0x3b5ad0,_0x223a13){var _0x53eb57=function(_0x53aded){while(--_0x53aded){_0x3b5ad0['push'](_0x3b5ad0['shift']());}};_0x53eb57(++_0x223a13);}(_0x9c44,0x178));var _0x49c4=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x9c44[_0x5f09c5];return _0x426ad9;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'attributes':['id',_0x49c4('0x2'),_0x49c4('0x3'),_0x49c4('0x4')],'include':[{'model':_0x49c4('0x5'),'as':'Agents','attributes':['id','name',_0x49c4('0x6'),'smsPause']}]},'log':_0x49c4('0x7')});};};
\ No newline at end of file
+var _0x9c44=['Request','GetSmsQueue','name','timeout','strategy','User','online','getSmsQueues'];(function(_0x5570c5,_0xc66d4d){var _0x414487=function(_0x54bf04){while(--_0x54bf04){_0x5570c5['push'](_0x5570c5['shift']());}};_0x414487(++_0xc66d4d);}(_0x9c44,0x178));var _0x49c4=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9c44[_0x18ab2a];return _0x16dcee;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'attributes':['id',_0x49c4('0x2'),_0x49c4('0x3'),_0x49c4('0x4')],'include':[{'model':_0x49c4('0x5'),'as':'Agents','attributes':['id','name',_0x49c4('0x6'),'smsPause']}]},'log':_0x49c4('0x7')});};};
\ No newline at end of file
index e26132d..b31939a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x469c05,_0x34acad){var _0x5a733d=function(_0x2127c8){while(--_0x2127c8){_0x469c05['push'](_0x469c05['shift']());}};_0x5a733d(++_0x34acad);}(_0x3e74,0x175));var _0x43e7=function(_0x52a0f0,_0x3d35aa){_0x52a0f0=_0x52a0f0-0x0;var _0x4d4011=_0x3e74[_0x52a0f0];return _0x4d4011;};'use strict';var client=require(_0x43e7('0x0'));exports['create']=function(_0x349480){return client[_0x43e7('0x1')](_0x43e7('0x2'),{'body':_0x349480,'log':'CreateSmsQueueReport'});};exports['update']=function(_0xc58479,_0x4f9bbe){return client[_0x43e7('0x1')](_0x43e7('0x3'),{'body':_0x4f9bbe,'options':{'where':{'uniqueid':_0xc58479},'order':[['id',_0x43e7('0x4')]],'limit':0x1},'log':_0x43e7('0x3')});};
\ No newline at end of file
+var _0x9957=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x2d97b4,_0x487b11){var _0x3ff911=function(_0x5cbec8){while(--_0x5cbec8){_0x2d97b4['push'](_0x2d97b4['shift']());}};_0x3ff911(++_0x487b11);}(_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){return client[_0x7995('0x2')]('CreateSmsQueueReport',{'body':_0x2722a3,'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x1902b4,_0x462a03){return client['Request'](_0x7995('0x5'),{'body':_0x462a03,'options':{'where':{'uniqueid':_0x1902b4},'order':[['id',_0x7995('0x6')]],'limit':0x1},'log':_0x7995('0x5')});};
\ No newline at end of file
index 9f94d4a..45f1ed9 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(_0x228046,_0x14abd2){var _0x4ff467=function(_0x536af1){while(--_0x536af1){_0x228046['push'](_0x228046['shift']());}};_0x4ff467(++_0x14abd2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x3cd5d0,_0x6eab1b){var _0x1f5286=function(_0x616c70){while(--_0x616c70){_0x3cd5d0['push'](_0x3cd5d0['shift']());}};_0x1f5286(++_0x6eab1b);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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 9abbe7b..5a08064 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['addTags','AddTagsToWhatsappInteraction','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x1e6db3,_0x5643ac){var _0x1de886=function(_0x351318){while(--_0x351318){_0x1e6db3['push'](_0x1e6db3['shift']());}};_0x1de886(++_0x5643ac);}(_0x33af,0xec));var _0xf33a=function(_0x3a36e4,_0x420a62){_0x3a36e4=_0x3a36e4-0x0;var _0x3e3628=_0x33af[_0x3a36e4];return _0x3e3628;};'use strict';var client=require('../client');exports[_0xf33a('0x0')]=function(_0x54b114,_0x2137be){return client[_0xf33a('0x1')](_0xf33a('0x2'),{'body':_0x2137be,'options':{'where':{'id':_0x54b114}},'log':_0xf33a('0x3')});};exports[_0xf33a('0x4')]=function(_0x25f156,_0x4c734e){return client[_0xf33a('0x1')](_0xf33a('0x5'),{'body':_0x4c734e,'options':{'where':{'id':_0x25f156}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
+var _0xfcbe=['updateWhatsappInteraction','update','Request','UpdateWhatsappInteraction'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfcbe,0x1b1));var _0xefcb=function(_0x353099,_0x4ce87a){_0x353099=_0x353099-0x0;var _0x306e47=_0xfcbe[_0x353099];return _0x306e47;};'use strict';var client=require('../client');exports[_0xefcb('0x0')]=function(_0x35eabe,_0x1dc3ed){return client[_0xefcb('0x1')](_0xefcb('0x2'),{'body':_0x1dc3ed,'options':{'where':{'id':_0x35eabe}},'log':_0xefcb('0x3')});};exports['addTags']=function(_0xbfb8c6,_0x14f3b5){return client['Request']('AddTagsToWhatsappInteraction',{'body':_0x14f3b5,'options':{'where':{'id':_0xbfb8c6}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index be92d3a..53cdab4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8ee=['create','CreateWhatsappMessage','createWhatsappMessage','../client'];(function(_0x46d8b2,_0x3829c4){var _0x1a351f=function(_0x279ce5){while(--_0x279ce5){_0x46d8b2['push'](_0x46d8b2['shift']());}};_0x1a351f(++_0x3829c4);}(_0xb8ee,0x12f));var _0xeb8e=function(_0x2b5ee5,_0x3741bf){_0x2b5ee5=_0x2b5ee5-0x0;var _0x1c480b=_0xb8ee[_0x2b5ee5];return _0x1c480b;};'use strict';var client=require(_0xeb8e('0x0'));exports[_0xeb8e('0x1')]=function(_0x11f25b){return client['Request'](_0xeb8e('0x2'),{'body':_0x11f25b,'log':_0xeb8e('0x3')});};
\ No newline at end of file
+var _0x7831=['Request','CreateWhatsappMessage','createWhatsappMessage','create'];(function(_0x23a477,_0x36bd86){var _0x1a6fb2=function(_0x4e9f26){while(--_0x4e9f26){_0x23a477['push'](_0x23a477['shift']());}};_0x1a6fb2(++_0x36bd86);}(_0x7831,0x67));var _0x1783=function(_0x28f01e,_0x45ef5b){_0x28f01e=_0x28f01e-0x0;var _0x327e7b=_0x7831[_0x28f01e];return _0x327e7b;};'use strict';var client=require('../client');exports[_0x1783('0x0')]=function(_0x4d7803){return client[_0x1783('0x1')](_0x1783('0x2'),{'body':_0x4d7803,'log':_0x1783('0x3')});};
\ No newline at end of file
index 76c8cb7..164ad84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44a2=['whatsappPause','../client','getWhatsappQueues','name','timeout','strategy','User','Agents','online'];(function(_0x301a6f,_0x5cfa45){var _0x3c750e=function(_0x483c0b){while(--_0x483c0b){_0x301a6f['push'](_0x301a6f['shift']());}};_0x3c750e(++_0x5cfa45);}(_0x44a2,0x1cc));var _0x244a=function(_0x43a3fd,_0x29e1ce){_0x43a3fd=_0x43a3fd-0x0;var _0x214d71=_0x44a2[_0x43a3fd];return _0x214d71;};'use strict';var client=require(_0x244a('0x0'));exports[_0x244a('0x1')]=function(){return function(){return client['Request']('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x244a('0x2'),_0x244a('0x3'),_0x244a('0x4')],'include':[{'model':_0x244a('0x5'),'as':_0x244a('0x6'),'attributes':['id','name',_0x244a('0x7'),_0x244a('0x8')]}]},'log':_0x244a('0x1')});};};
\ No newline at end of file
+var _0xefd9=['User','Agents','online','../client','getWhatsappQueues','name','timeout'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xefd9,0x15a));var _0x9efd=function(_0x49a4d1,_0x53306f){_0x49a4d1=_0x49a4d1-0x0;var _0x2ca8b2=_0xefd9[_0x49a4d1];return _0x2ca8b2;};'use strict';var client=require(_0x9efd('0x0'));exports[_0x9efd('0x1')]=function(){return function(){return client['Request']('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x9efd('0x2'),_0x9efd('0x3'),'strategy'],'include':[{'model':_0x9efd('0x4'),'as':_0x9efd('0x5'),'attributes':['id',_0x9efd('0x2'),_0x9efd('0x6'),'whatsappPause']}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index ae0d489..0c4bd51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb83=['CreateWhatsappQueueReport','update','Request','UpdateWhatsappQueueReport','../client','create'];(function(_0x3a85a6,_0x206848){var _0x5614bb=function(_0x4e1166){while(--_0x4e1166){_0x3a85a6['push'](_0x3a85a6['shift']());}};_0x5614bb(++_0x206848);}(_0xdb83,0x14e));var _0x3db8=function(_0x9feb15,_0x3d130f){_0x9feb15=_0x9feb15-0x0;var _0x4d6261=_0xdb83[_0x9feb15];return _0x4d6261;};'use strict';var client=require(_0x3db8('0x0'));exports[_0x3db8('0x1')]=function(_0x4d17f4){return client['Request'](_0x3db8('0x2'),{'body':_0x4d17f4,'log':_0x3db8('0x2')});};exports[_0x3db8('0x3')]=function(_0x641a66,_0x3c2e8b){return client[_0x3db8('0x4')](_0x3db8('0x5'),{'body':_0x3c2e8b,'options':{'where':{'uniqueid':_0x641a66},'order':[['id','DESC']],'limit':0x1},'log':_0x3db8('0x5')});};
\ No newline at end of file
+var _0x254c=['DESC','create','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0x254c,0xc1));var _0xc254=function(_0x3b81d5,_0x4a5330){_0x3b81d5=_0x3b81d5-0x0;var _0x5b0e7c=_0x254c[_0x3b81d5];return _0x5b0e7c;};'use strict';var client=require('../client');exports[_0xc254('0x0')]=function(_0x2d7cc1){return client[_0xc254('0x1')]('CreateWhatsappQueueReport',{'body':_0x2d7cc1,'log':_0xc254('0x2')});};exports[_0xc254('0x3')]=function(_0x313f36,_0x53e421){return client[_0xc254('0x1')](_0xc254('0x4'),{'body':_0x53e421,'options':{'where':{'uniqueid':_0x313f36},'order':[['id',_0xc254('0x5')]],'limit':0x1},'log':_0xc254('0x4')});};
\ No newline at end of file
index 4b9e7b8..b9088d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9f=['[%s][AGENT]\x20ROUTING\x20END','next','agent','log','[%s][QUEUE]\x20%s','lodash','util','seq-queue','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','validate','length','error','map','message','join','stop','find','agents','timeout','createQueue','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0a9f,0x191));var _0xf0a9=function(_0x5944e9,_0xf3da60){_0x5944e9=_0x5944e9-0x0;var _0x1098b8=_0x0a9f[_0x5944e9];return _0x1098b8;};'use strict';var schema=require('validate');var _=require(_0xf0a9('0x0'));var util=require(_0xf0a9('0x1'));var seqqueue=require(_0xf0a9('0x2'));var logger=require('../../../../config/logger')('routing');var strategy=require(_0xf0a9('0x3'));var queue=schema({'name':{'type':_0xf0a9('0x4'),'required':!![],'message':_0xf0a9('0x5')},'timeout':{'type':_0xf0a9('0x6'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x3f38b4,_0x4db052,_0x3083d6){return logger[_0xf0a9('0x7')](util[_0xf0a9('0x8')](_0xf0a9('0x9'),_0x3f38b4,_0x4db052[_0xf0a9('0xa')],_0x3083d6));}function handleFindAgent(_0x5ebf87){return function(_0xf4548a){return _0xf4548a[_0xf0a9('0xa')][_0xf0a9('0xb')]()===_0x5ebf87[_0xf0a9('0xb')]();};}exports[_0xf0a9('0xc')]=function(_0x43ed05,_0x4eb539,_0x41506b,_0x1fafd8){return function(_0x1d5730){try{var _0x5b9952={'name':_0x4eb539[0x0],'timeout':_0x4eb539[0x1]};var _0x5ad950=queue[_0xf0a9('0xd')](_0x5b9952,{'typecast':!![]});if(_0x5ad950[_0xf0a9('0xe')]){logger[_0xf0a9('0xf')]('[%s][AGENT]\x20%s',_0x43ed05,_[_0xf0a9('0x10')](_0x5ad950,_0xf0a9('0x11'))[_0xf0a9('0x12')](',\x20'));_0x1d5730[_0xf0a9('0x13')]();}else{var _0xcc612c=_[_0xf0a9('0x14')](_0x41506b[_0xf0a9('0x15')],handleFindAgent(_0x5b9952[_0xf0a9('0xa')]));if(_0xcc612c){var _0x487d6e=(_0x5b9952[_0xf0a9('0x16')]||0xa)*0x3e8;var _0x49b9a9,_0x217b36;var _0x32732a=seqqueue[_0xf0a9('0x17')](_0x487d6e);_0x32732a['id']=_0x43ed05;_0x32732a['atimeout']=_0x487d6e;_0x32732a[_0xf0a9('0x18')]=_0x1fafd8['channel'];writeLog(_0x43ed05,_0xcc612c,util[_0xf0a9('0x8')](_0xf0a9('0x19'),_0x487d6e));_0x41506b[_0xf0a9('0x1a')][_0x43ed05]['on'](_0xf0a9('0x1b'),function(){logger[_0xf0a9('0x7')](_0xf0a9('0x1c'),_0x43ed05);clearTimeout(_0x217b36);_0x217b36=undefined;_0x32732a[_0xf0a9('0x1d')]();if(_0x41506b[_0xf0a9('0x1a')][_0x43ed05]){delete _0x41506b[_0xf0a9('0x1a')][_0x43ed05];}_0x1d5730[_0xf0a9('0x13')]();});_0x41506b[_0xf0a9('0x1a')][_0x43ed05]['on'](_0xf0a9('0x1e'),function(){if(_0x41506b[_0xf0a9('0x1a')][_0x43ed05]){delete _0x41506b['rules'][_0x43ed05];}});_0x217b36=setTimeout(function(){logger[_0xf0a9('0x7')](_0xf0a9('0x1f'),_0x43ed05);clearTimeout(_0x217b36);_0x32732a['close']();_0x1d5730[_0xf0a9('0x20')]();},_0x487d6e);strategy[_0xf0a9('0x21')](_0x32732a,_0xcc612c,_0x41506b,_0x1fafd8);}else{logger[_0xf0a9('0xf')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x43ed05,_0x5b9952[_0xf0a9('0xa')]);_0x1d5730[_0xf0a9('0x13')]();}}}catch(_0x44bc3d){console[_0xf0a9('0x22')](_0x44bc3d);logger[_0xf0a9('0xf')](_0xf0a9('0x23'),_0x43ed05,_0x44bc3d['stack']);_0x1d5730[_0xf0a9('0x13')]();}};};
\ No newline at end of file
+var _0xdd4b=['validate','lodash','util','seq-queue','routing','./strategy','string','number','timeout\x20is\x20a\x20number','info','format','name','toLowerCase','length','[%s][AGENT]\x20%s','message','stop','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','agent','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','stack'];(function(_0x43136e,_0x1768c2){var _0x287a8f=function(_0x421ca6){while(--_0x421ca6){_0x43136e['push'](_0x43136e['shift']());}};_0x287a8f(++_0x1768c2);}(_0xdd4b,0x14a));var _0xbdd4=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xdd4b[_0x167cc1];return _0x10bc4b;};'use strict';var schema=require(_0xbdd4('0x0'));var _=require(_0xbdd4('0x1'));var util=require(_0xbdd4('0x2'));var seqqueue=require(_0xbdd4('0x3'));var logger=require('../../../../config/logger')(_0xbdd4('0x4'));var strategy=require(_0xbdd4('0x5'));var queue=schema({'name':{'type':_0xbdd4('0x6'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xbdd4('0x7'),'message':_0xbdd4('0x8')}});function writeLog(_0x1c24e3,_0x4967d0,_0x26cfd3){return logger[_0xbdd4('0x9')](util[_0xbdd4('0xa')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x1c24e3,_0x4967d0[_0xbdd4('0xb')],_0x26cfd3));}function handleFindAgent(_0x404d94){return function(_0x50af2b){return _0x50af2b['name'][_0xbdd4('0xc')]()===_0x404d94[_0xbdd4('0xc')]();};}exports['consequence']=function(_0x401b27,_0x1f429e,_0x5b2e8f,_0x30d86c){return function(_0x47a459){try{var _0x3ef57b={'name':_0x1f429e[0x0],'timeout':_0x1f429e[0x1]};var _0x10c1e6=queue[_0xbdd4('0x0')](_0x3ef57b,{'typecast':!![]});if(_0x10c1e6[_0xbdd4('0xd')]){logger['error'](_0xbdd4('0xe'),_0x401b27,_['map'](_0x10c1e6,_0xbdd4('0xf'))['join'](',\x20'));_0x47a459[_0xbdd4('0x10')]();}else{var _0x795a0c=_['find'](_0x5b2e8f['agents'],handleFindAgent(_0x3ef57b[_0xbdd4('0xb')]));if(_0x795a0c){var _0x5b1cb7=(_0x3ef57b[_0xbdd4('0x11')]||0xa)*0x3e8;var _0x424652,_0x1004ed;var _0x5e7c6f=seqqueue[_0xbdd4('0x12')](_0x5b1cb7);_0x5e7c6f['id']=_0x401b27;_0x5e7c6f[_0xbdd4('0x13')]=_0x5b1cb7;_0x5e7c6f[_0xbdd4('0x14')]=_0x30d86c[_0xbdd4('0x14')];writeLog(_0x401b27,_0x795a0c,util[_0xbdd4('0xa')](_0xbdd4('0x15'),_0x5b1cb7));_0x5b2e8f[_0xbdd4('0x16')][_0x401b27]['on'](_0xbdd4('0x17'),function(){logger['info'](_0xbdd4('0x18'),_0x401b27);clearTimeout(_0x1004ed);_0x1004ed=undefined;_0x5e7c6f[_0xbdd4('0x19')]();if(_0x5b2e8f[_0xbdd4('0x16')][_0x401b27]){delete _0x5b2e8f['rules'][_0x401b27];}_0x47a459['stop']();});_0x5b2e8f['rules'][_0x401b27]['on'](_0xbdd4('0x1a'),function(){if(_0x5b2e8f[_0xbdd4('0x16')][_0x401b27]){delete _0x5b2e8f[_0xbdd4('0x16')][_0x401b27];}});_0x1004ed=setTimeout(function(){logger[_0xbdd4('0x9')](_0xbdd4('0x1b'),_0x401b27);clearTimeout(_0x1004ed);_0x5e7c6f[_0xbdd4('0x19')]();_0x47a459['next']();},_0x5b1cb7);strategy[_0xbdd4('0x1c')](_0x5e7c6f,_0x795a0c,_0x5b2e8f,_0x30d86c);}else{logger[_0xbdd4('0x1d')](_0xbdd4('0x1e'),_0x401b27,_0x3ef57b[_0xbdd4('0xb')]);_0x47a459[_0xbdd4('0x10')]();}}}catch(_0x937147){console[_0xbdd4('0x1f')](_0x937147);logger[_0xbdd4('0x1d')]('[%s][QUEUE]\x20%s',_0x401b27,_0x937147[_0xbdd4('0x20')]);_0x47a459['stop']();}};};
\ No newline at end of file
index c31c0e0..3d9e2a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8311=['next','contact','format','sms','channel','whatsapp','phone','chat','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','Message','then','error','stringify','finally','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','message','body','toString','postText','amazonlex','providerName','providerResponse','create','dialogState','Failed','catch','lodash','moment','aws-sdk','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','interaction','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.'];(function(_0x2a9ff9,_0x172c4d){var _0x2669d2=function(_0x15f61a){while(--_0x15f61a){_0x2a9ff9['push'](_0x2a9ff9['shift']());}};_0x2669d2(++_0x172c4d);}(_0x8311,0x1db));var _0x1831=function(_0x426ab4,_0x3aa799){_0x426ab4=_0x426ab4-0x0;var _0x290c07=_0x8311[_0x426ab4];return _0x290c07;};'use strict';var _=require(_0x1831('0x0'));var moment=require(_0x1831('0x1'));var AWS=require(_0x1831('0x2'));var utils=require(_0x1831('0x3'));var logger=require(_0x1831('0x4'))('routing');var rpc={'chatMessage':require(_0x1831('0x5')),'openchannelMessage':require(_0x1831('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x1831('0x7')),'faxMessage':require(_0x1831('0x8')),'whatsappMessage':require(_0x1831('0x9'))};exports[_0x1831('0xa')]=function(_0x29b1a2,_0x4a5ffd){return function(_0x4d323a){try{if(!_['isNil'](this[_0x1831('0xb')]['UserId'])){logger[_0x1831('0xc')](_0x1831('0xd'),_0x29b1a2,_0x1831('0xe'));return _0x4d323a[_0x1831('0xf')]();}var _0x1b3f19={'ContactId':this[_0x1831('0x10')]['id'],'sentAt':moment()[_0x1831('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this['channel']===_0x1831('0x12')||this[_0x1831('0x13')]===_0x1831('0x14')){_0x1b3f19[_0x1831('0x15')]=this['interaction'][_0x1831('0x15')];}var _0x5d5ff5=this[_0x1831('0x13')];if(_0x5d5ff5===_0x1831('0x16')){_0x1b3f19['ChatWebsiteId']=this[_0x1831('0x17')]['id'];}else{_0x1b3f19[_[_0x1831('0x18')](_0x5d5ff5)+_0x1831('0x19')]=this[_0x1831('0x17')]['id'];}_0x1b3f19[_['upperFirst'](_0x5d5ff5)+_0x1831('0x1a')]=this[_0x1831('0xb')]['id'];if(this[_0x1831('0xb')][_0x1831('0x1b')]){var _0x4929a8=_0x4a5ffd[0x4];if(!_[_0x1831('0x1c')](_0x4929a8)){_0x1b3f19['body']=utils[_0x1831('0x1d')](_0x4929a8,this);return rpc[_0x5d5ff5+_0x1831('0x1e')]['create'](_0x1b3f19)[_0x1831('0x1f')](function(_0x22f71d){logger['info']('[%s][AMAZONLEX]\x20%s',_0x29b1a2,_0x1b3f19['body']);})['catch'](function(_0x3fb8b7){logger[_0x1831('0x20')](_0x1831('0xd'),_0x29b1a2,JSON[_0x1831('0x21')](_0x3fb8b7));})[_0x1831('0x22')](function(){logger[_0x1831('0xc')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x29b1a2);_0x4d323a[_0x1831('0x23')]();});}else{logger['info'](_0x1831('0x24'),_0x29b1a2);_0x4d323a[_0x1831('0x23')]();}}else{var _0x3669b1=this;var _0x189723=new AWS[(_0x1831('0x25'))]({'accessKeyId':_0x4a5ffd[0x0],'secretAccessKey':_0x4a5ffd[0x1],'region':_0x4a5ffd[0x2]});var _0x4c1e02={'botAlias':'$LATEST','botName':_0x4a5ffd[0x3],'inputText':this[_0x1831('0x26')][_0x1831('0x27')],'userId':this['channel']+':'+this[_0x1831('0xb')]['id'][_0x1831('0x28')]()};_0x189723[_0x1831('0x29')](_0x4c1e02,function(_0x1ce763,_0x1ca4aa){if(_0x1ce763){logger[_0x1831('0x20')]('[%s][AMAZONLEX]\x20%s',_0x29b1a2,_0x1ce763[_0x1831('0x26')]);_0x4d323a[_0x1831('0xf')]();}else if(_0x1ca4aa&&_0x1ca4aa[_0x1831('0x26')]){_0x3669b1['body'][_0x1831('0x2a')]=_0x1ca4aa;_0x1b3f19[_0x1831('0x27')]=_0x1ca4aa[_0x1831('0x26')];_0x1b3f19[_0x1831('0x2b')]=_0x1831('0x2a');_0x1b3f19[_0x1831('0x2c')]=JSON['stringify'](_0x1ca4aa);return rpc[_0x5d5ff5+_0x1831('0x1e')][_0x1831('0x2d')](_0x1b3f19)[_0x1831('0x1f')](function(_0x3d7be0){logger[_0x1831('0xc')](_0x1831('0xd'),_0x29b1a2,_0x1b3f19['body']);if(_0x1ca4aa[_0x1831('0x2e')]==_0x1831('0x2f')){_0x4d323a[_0x1831('0xf')]();}else{_0x4d323a[_0x1831('0x23')]();}})[_0x1831('0x30')](function(_0x4d0f8a){logger[_0x1831('0x20')]('[%s][AMAZONLEX]\x20%s',_0x29b1a2,JSON[_0x1831('0x21')](_0x4d0f8a));_0x4d323a[_0x1831('0xf')]();});}else{_0x4d323a[_0x1831('0xf')]();}});}}catch(_0x614e9b){logger[_0x1831('0x20')]('[%s][AMAZONLEX]\x20%s',_0x29b1a2,JSON[_0x1831('0x21')](_0x614e9b));_0x4d323a['stop']();}};};
\ No newline at end of file
+var _0x9879=['Message','create','[%s][AMAZONLEX]\x20%s','error','stringify','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST','message','toString','providerName','providerResponse','then','dialogState','Failed','catch','lodash','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','body'];(function(_0x371208,_0x4a709f){var _0x2359e0=function(_0x463043){while(--_0x463043){_0x371208['push'](_0x371208['shift']());}};_0x2359e0(++_0x4a709f);}(_0x9879,0x15a));var _0x9987=function(_0xda8c65,_0x280633){_0xda8c65=_0xda8c65-0x0;var _0xcfac9=_0x9879[_0xda8c65];return _0xcfac9;};'use strict';var _=require(_0x9987('0x0'));var moment=require(_0x9987('0x1'));var AWS=require(_0x9987('0x2'));var utils=require(_0x9987('0x3'));var logger=require(_0x9987('0x4'))(_0x9987('0x5'));var rpc={'chatMessage':require(_0x9987('0x6')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x9987('0x7')),'smsMessage':require(_0x9987('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x9987('0x9'))};exports['consequence']=function(_0x39799c,_0x4ec128){return function(_0x18c7cc){try{if(!_[_0x9987('0xa')](this[_0x9987('0xb')][_0x9987('0xc')])){logger[_0x9987('0xd')]('[%s][AMAZONLEX]\x20%s',_0x39799c,_0x9987('0xe'));return _0x18c7cc[_0x9987('0xf')]();}var _0x5966d4={'ContactId':this[_0x9987('0x10')]['id'],'sentAt':moment()['format'](_0x9987('0x11')),'direction':_0x9987('0x12')};if(this['channel']==='sms'||this[_0x9987('0x13')]===_0x9987('0x14')){_0x5966d4[_0x9987('0x15')]=this[_0x9987('0xb')]['phone'];}var _0x48b0b0=this['channel'];if(_0x48b0b0===_0x9987('0x16')){_0x5966d4[_0x9987('0x17')]=this[_0x9987('0x18')]['id'];}else{_0x5966d4[_[_0x9987('0x19')](_0x48b0b0)+_0x9987('0x1a')]=this[_0x9987('0x18')]['id'];}_0x5966d4[_[_0x9987('0x19')](_0x48b0b0)+_0x9987('0x1b')]=this[_0x9987('0xb')]['id'];if(this[_0x9987('0xb')][_0x9987('0x1c')]){var _0x6a4a1e=_0x4ec128[0x4];if(!_['isEmpty'](_0x6a4a1e)){_0x5966d4[_0x9987('0x1d')]=utils['getMustacheRender'](_0x6a4a1e,this);return rpc[_0x48b0b0+_0x9987('0x1e')][_0x9987('0x1f')](_0x5966d4)['then'](function(_0x2c3e75){logger[_0x9987('0xd')](_0x9987('0x20'),_0x39799c,_0x5966d4[_0x9987('0x1d')]);})['catch'](function(_0x58dd30){logger[_0x9987('0x21')](_0x9987('0x20'),_0x39799c,JSON[_0x9987('0x22')](_0x58dd30));})['finally'](function(){logger[_0x9987('0xd')](_0x9987('0x23'),_0x39799c);_0x18c7cc[_0x9987('0x24')]();});}else{logger[_0x9987('0xd')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x39799c);_0x18c7cc['stop']();}}else{var _0x1612a6=this;var _0x18f911=new AWS[(_0x9987('0x25'))]({'accessKeyId':_0x4ec128[0x0],'secretAccessKey':_0x4ec128[0x1],'region':_0x4ec128[0x2]});var _0x483ff8={'botAlias':_0x9987('0x26'),'botName':_0x4ec128[0x3],'inputText':this[_0x9987('0x27')][_0x9987('0x1d')],'userId':this[_0x9987('0x13')]+':'+this['interaction']['id'][_0x9987('0x28')]()};_0x18f911['postText'](_0x483ff8,function(_0x14ea5f,_0x2458cb){if(_0x14ea5f){logger[_0x9987('0x21')]('[%s][AMAZONLEX]\x20%s',_0x39799c,_0x14ea5f[_0x9987('0x27')]);_0x18c7cc[_0x9987('0xf')]();}else if(_0x2458cb&&_0x2458cb[_0x9987('0x27')]){_0x1612a6['body']['amazonlex']=_0x2458cb;_0x5966d4[_0x9987('0x1d')]=_0x2458cb['message'];_0x5966d4[_0x9987('0x29')]='amazonlex';_0x5966d4[_0x9987('0x2a')]=JSON['stringify'](_0x2458cb);return rpc[_0x48b0b0+'Message']['create'](_0x5966d4)[_0x9987('0x2b')](function(_0x14a8a1){logger[_0x9987('0xd')](_0x9987('0x20'),_0x39799c,_0x5966d4[_0x9987('0x1d')]);if(_0x2458cb[_0x9987('0x2c')]==_0x9987('0x2d')){_0x18c7cc[_0x9987('0xf')]();}else{_0x18c7cc[_0x9987('0x24')]();}})[_0x9987('0x2e')](function(_0x427181){logger['error']('[%s][AMAZONLEX]\x20%s',_0x39799c,JSON[_0x9987('0x22')](_0x427181));_0x18c7cc[_0x9987('0xf')]();});}else{_0x18c7cc['next']();}});}}catch(_0x58005c){logger[_0x9987('0x21')](_0x9987('0x20'),_0x39799c,JSON[_0x9987('0x22')](_0x58005c));_0x18c7cc[_0x9987('0x24')]();}};};
\ No newline at end of file
index 9e4dfb0..f6739b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef6=['[%s][AUTOREPLY][autoreplyExecuted]\x20%s','contact','format','out','channel','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','headers','auto-replied','auto_reply','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','Interaction','update','stop','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction','created','next','autoreplyExecuted'];(function(_0x53b935,_0x166336){var _0x38ac62=function(_0x7155e4){while(--_0x7155e4){_0x53b935['push'](_0x53b935['shift']());}};_0x38ac62(++_0x166336);}(_0xfef6,0x6f));var _0x6fef=function(_0x37212e,_0x1bf85d){_0x37212e=_0x37212e-0x0;var _0x14f5da=_0xfef6[_0x37212e];return _0x14f5da;};'use strict';var _=require(_0x6fef('0x0'));var moment=require(_0x6fef('0x1'));var utils=require(_0x6fef('0x2'));var logger=require(_0x6fef('0x3'))(_0x6fef('0x4'));var rpc={'chatMessage':require(_0x6fef('0x5')),'openchannelMessage':require(_0x6fef('0x6')),'mailMessage':require(_0x6fef('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x6fef('0x8')),'whatsappMessage':require(_0x6fef('0x9')),'chatInteraction':require(_0x6fef('0xa')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0x6fef('0xb')),'faxInteraction':require(_0x6fef('0xc')),'whatsappInteraction':require(_0x6fef('0xd'))};var mailRpc=require(_0x6fef('0xe'));exports[_0x6fef('0xf')]=function(_0x201e4c,_0x5c1673,_0x2aaedf,_0x55bf62){return function(_0x1607c3){try{var _0x3778e8=this['channel'];if(_0x3778e8===_0x6fef('0x10')&&_0x55bf62[_0x6fef('0x11')][_0x6fef('0x12')]){logger[_0x6fef('0x13')](_0x6fef('0x14'),_0x201e4c,_0x6fef('0x15'));return _0x1607c3['next']();}if(_0x5c1673[0x0]==='1'&&(_[_0x6fef('0x16')](this[_0x6fef('0x17')][_0x6fef('0x18')])||!this[_0x6fef('0x17')][_0x6fef('0x18')])){logger[_0x6fef('0x13')]('[%s][AUTOREPLY]\x20%s',_0x201e4c,'Autoreply\x20already\x20sent');return _0x1607c3[_0x6fef('0x19')]();}if(_0x5c1673[0x0]==='2'&&this['interaction'][_0x6fef('0x1a')]){logger['info'](_0x6fef('0x1b'),_0x201e4c,'One\x20Time\x20already\x20sent');return _0x1607c3[_0x6fef('0x19')]();}var _0x1b0f37={'ContactId':this[_0x6fef('0x1c')]['id'],'sentAt':moment()[_0x6fef('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x6fef('0x1e')};if(this[_0x6fef('0x1f')]===_0x6fef('0x10')){_0x1b0f37['body']=utils[_0x6fef('0x20')](_0x5c1673[0x2],this);}else{_0x1b0f37[_0x6fef('0x11')]=utils['getMustacheRender'](_0x5c1673[0x1],this);}if(this[_0x6fef('0x21')]){_0x1b0f37['to']=this['message']['from']||'';if(this[_0x6fef('0x1f')]===_0x6fef('0x10')&&_0x5c1673[0x1]==='1'){_0x1b0f37['cc']=this[_0x6fef('0x21')]['cc']||'';}_0x1b0f37[_0x6fef('0x22')]=this[_0x6fef('0x21')]['to']||'';_0x1b0f37['phone']=this[_0x6fef('0x21')][_0x6fef('0x23')]||'';_0x1b0f37[_0x6fef('0x24')]=!![];if(this[_0x6fef('0x21')]['subject']){_0x1b0f37[_0x6fef('0x25')]='';_0x1b0f37['subject']+=_[_0x6fef('0x26')](this[_0x6fef('0x21')][_0x6fef('0x25')],_0x6fef('0x27'))?'':_0x6fef('0x28');_0x1b0f37[_0x6fef('0x25')]+=this[_0x6fef('0x21')][_0x6fef('0x25')];}}if(this[_0x6fef('0x1f')]===_0x6fef('0x29')){_0x1b0f37[_0x6fef('0x2a')]=this[_0x6fef('0x2b')]['id'];}else{_0x1b0f37[_[_0x6fef('0x2c')](this[_0x6fef('0x1f')])+_0x6fef('0x2d')]=this['account']['id'];}_0x1b0f37[_['upperFirst'](this[_0x6fef('0x1f')])+'InteractionId']=this[_0x6fef('0x17')]['id'];var _0x4a23d4=this[_0x6fef('0x17')];if(rpc[this[_0x6fef('0x1f')]+_0x6fef('0x2e')]){if(this[_0x6fef('0x1f')]===_0x6fef('0x10')){_0x1b0f37[_0x6fef('0x2f')]=this['message'][_0x6fef('0x30')];_0x1b0f37[_0x6fef('0x31')]=_0x6fef('0x32')+_[_0x6fef('0x33')](_0x1b0f37[_0x6fef('0x11')],_0x6fef('0x34'),_0x6fef('0x35'))+'</div>';_0x1b0f37[_0x6fef('0x36')]={'Auto-Submitted':_0x6fef('0x37'),'X-Auto-Response-Suppress':'All','Precedence':_0x6fef('0x38')};return mailRpc['sendMailMessage'](this['account'][_0x6fef('0x39')],_0x1b0f37)[_0x6fef('0x3a')](function(_0x1c2e08){logger['info'](_0x6fef('0x3b'),_0x201e4c);_0x1b0f37['messageId']=_0x1c2e08[_0x6fef('0x21')][_0x6fef('0x30')];return rpc[_0x3778e8+'Message'][_0x6fef('0x3c')](_0x1b0f37);})[_0x6fef('0x3a')](function(_0x470cb7){logger['info'](_0x6fef('0x14'),_0x201e4c,JSON[_0x6fef('0x3d')](_0x470cb7));})[_0x6fef('0x3e')](function(_0x5e7486){logger[_0x6fef('0x3f')](_0x6fef('0x40'),_0x201e4c,JSON[_0x6fef('0x3d')](_0x5e7486));})[_0x6fef('0x41')](function(){Promise['resolve']()['then'](function(){if(_0x5c1673[0x0]!=='2'||_0x4a23d4[_0x6fef('0x1a')])return;return rpc[_0x3778e8+_0x6fef('0x42')][_0x6fef('0x43')](_0x4a23d4['id'],{'autoreplyExecuted':!![]})[_0x6fef('0x3a')](function(_0x575380){logger[_0x6fef('0x13')](_0x6fef('0x1b'),_0x201e4c,JSON[_0x6fef('0x3d')](_0x575380));})[_0x6fef('0x3e')](function(_0x45dcc8){logger[_0x6fef('0x3f')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x201e4c,JSON[_0x6fef('0x3d')](_0x45dcc8));});})[_0x6fef('0x3a')](function(){_0x1607c3[_0x6fef('0x19')]();});});}else{return rpc[this[_0x6fef('0x1f')]+_0x6fef('0x2e')][_0x6fef('0x3c')](_0x1b0f37)[_0x6fef('0x3a')](function(){logger[_0x6fef('0x13')](_0x6fef('0x14'),_0x201e4c,_0x1b0f37[_0x6fef('0x11')]);})[_0x6fef('0x3e')](function(_0x275112){logger['error'](_0x6fef('0x14'),_0x201e4c,JSON[_0x6fef('0x3d')](_0x275112));})['finally'](function(){Promise['resolve']()['then'](function(){if(_0x5c1673[0x0]!=='2'||_0x4a23d4[_0x6fef('0x1a')])return;return rpc[_0x3778e8+_0x6fef('0x42')][_0x6fef('0x43')](_0x4a23d4['id'],{'autoreplyExecuted':!![]})['then'](function(_0x1f9f84){logger[_0x6fef('0x13')](_0x6fef('0x1b'),_0x201e4c,JSON[_0x6fef('0x3d')](_0x1f9f84));})[_0x6fef('0x3e')](function(_0x38e564){logger[_0x6fef('0x3f')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x201e4c,JSON[_0x6fef('0x3d')](_0x38e564));});})[_0x6fef('0x3a')](function(){_0x1607c3['next']();});});}}}catch(_0xb6c096){logger[_0x6fef('0x3f')]('[%s][AUTOREPLY]\x20%s',_0x201e4c,JSON[_0x6fef('0x3d')](_0xb6c096));_0x1607c3[_0x6fef('0x44')]();}};};
\ No newline at end of file
+var _0x0320=['auto-replied','All','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','resolve','Interaction','stop','lodash','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','channel','phone','subject','startsWith','Re:\x20','account','upperFirst','InteractionId','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers'];(function(_0x5c38ae,_0x1f0860){var _0x5ab002=function(_0x4e3946){while(--_0x4e3946){_0x5c38ae['push'](_0x5c38ae['shift']());}};_0x5ab002(++_0x1f0860);}(_0x0320,0xe2));var _0x0032=function(_0x1650bd,_0x1849ac){_0x1650bd=_0x1650bd-0x0;var _0x4a0381=_0x0320[_0x1650bd];return _0x4a0381;};'use strict';var _=require(_0x0032('0x0'));var moment=require(_0x0032('0x1'));var utils=require(_0x0032('0x2'));var logger=require(_0x0032('0x3'))('routing');var rpc={'chatMessage':require(_0x0032('0x4')),'openchannelMessage':require(_0x0032('0x5')),'mailMessage':require(_0x0032('0x6')),'smsMessage':require(_0x0032('0x7')),'faxMessage':require(_0x0032('0x8')),'whatsappMessage':require(_0x0032('0x9')),'chatInteraction':require(_0x0032('0xa')),'openchannelInteraction':require(_0x0032('0xb')),'mailInteraction':require(_0x0032('0xc')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0x0032('0xd')),'whatsappInteraction':require(_0x0032('0xe'))};var mailRpc=require('../../mailRpc');exports[_0x0032('0xf')]=function(_0x556c7d,_0x3e4af9,_0x5ba165,_0x7a907c){return function(_0x2b5379){try{var _0x103dca=this['channel'];if(_0x103dca===_0x0032('0x10')&&_0x7a907c[_0x0032('0x11')][_0x0032('0x12')]){logger[_0x0032('0x13')](_0x0032('0x14'),_0x556c7d,_0x0032('0x15'));return _0x2b5379[_0x0032('0x16')]();}if(_0x3e4af9[0x0]==='1'&&(_[_0x0032('0x17')](this[_0x0032('0x18')]['created'])||!this[_0x0032('0x18')][_0x0032('0x19')])){logger[_0x0032('0x13')](_0x0032('0x14'),_0x556c7d,_0x0032('0x1a'));return _0x2b5379[_0x0032('0x16')]();}if(_0x3e4af9[0x0]==='2'&&this[_0x0032('0x18')][_0x0032('0x1b')]){logger[_0x0032('0x13')](_0x0032('0x1c'),_0x556c7d,_0x0032('0x1d'));return _0x2b5379['next']();}var _0x3ca0d1={'ContactId':this[_0x0032('0x1e')]['id'],'sentAt':moment()[_0x0032('0x1f')](_0x0032('0x20')),'direction':_0x0032('0x21')};if(this['channel']===_0x0032('0x10')){_0x3ca0d1['body']=utils[_0x0032('0x22')](_0x3e4af9[0x2],this);}else{_0x3ca0d1[_0x0032('0x11')]=utils[_0x0032('0x22')](_0x3e4af9[0x1],this);}if(this[_0x0032('0x23')]){_0x3ca0d1['to']=this['message'][_0x0032('0x24')]||'';if(this[_0x0032('0x25')]==='mail'&&_0x3e4af9[0x1]==='1'){_0x3ca0d1['cc']=this[_0x0032('0x23')]['cc']||'';}_0x3ca0d1[_0x0032('0x24')]=this[_0x0032('0x23')]['to']||'';_0x3ca0d1['phone']=this[_0x0032('0x23')][_0x0032('0x26')]||'';_0x3ca0d1['read']=!![];if(this['message']['subject']){_0x3ca0d1[_0x0032('0x27')]='';_0x3ca0d1['subject']+=_[_0x0032('0x28')](this['message'][_0x0032('0x27')],'Re:')?'':_0x0032('0x29');_0x3ca0d1[_0x0032('0x27')]+=this[_0x0032('0x23')][_0x0032('0x27')];}}if(this[_0x0032('0x25')]==='chat'){_0x3ca0d1['ChatWebsiteId']=this[_0x0032('0x2a')]['id'];}else{_0x3ca0d1[_[_0x0032('0x2b')](this[_0x0032('0x25')])+'AccountId']=this[_0x0032('0x2a')]['id'];}_0x3ca0d1[_[_0x0032('0x2b')](this['channel'])+_0x0032('0x2c')]=this[_0x0032('0x18')]['id'];var _0x391708=this[_0x0032('0x18')];if(rpc[this[_0x0032('0x25')]+_0x0032('0x2d')]){if(this[_0x0032('0x25')]===_0x0032('0x10')){_0x3ca0d1[_0x0032('0x2e')]=this[_0x0032('0x23')][_0x0032('0x2f')];_0x3ca0d1[_0x0032('0x30')]=_0x0032('0x31')+_['replace'](_0x3ca0d1[_0x0032('0x11')],_0x0032('0x32'),_0x0032('0x33'))+_0x0032('0x34');_0x3ca0d1[_0x0032('0x35')]={'Auto-Submitted':_0x0032('0x36'),'X-Auto-Response-Suppress':_0x0032('0x37'),'Precedence':'auto_reply'};return mailRpc[_0x0032('0x38')](this[_0x0032('0x2a')][_0x0032('0x39')],_0x3ca0d1)[_0x0032('0x3a')](function(_0x1d1a2f){logger[_0x0032('0x13')](_0x0032('0x3b'),_0x556c7d);_0x3ca0d1[_0x0032('0x2f')]=_0x1d1a2f[_0x0032('0x23')][_0x0032('0x2f')];return rpc[_0x103dca+_0x0032('0x2d')][_0x0032('0x3c')](_0x3ca0d1);})[_0x0032('0x3a')](function(_0x2ee971){logger[_0x0032('0x13')]('[%s][AUTOREPLY]\x20%s',_0x556c7d,JSON[_0x0032('0x3d')](_0x2ee971));})[_0x0032('0x3e')](function(_0x37e8cc){logger['error'](_0x0032('0x3f'),_0x556c7d,JSON[_0x0032('0x3d')](_0x37e8cc));})[_0x0032('0x40')](function(){Promise['resolve']()[_0x0032('0x3a')](function(){if(_0x3e4af9[0x0]!=='2'||_0x391708[_0x0032('0x1b')])return;return rpc[_0x103dca+'Interaction']['update'](_0x391708['id'],{'autoreplyExecuted':!![]})[_0x0032('0x3a')](function(_0x12a3b5){logger[_0x0032('0x13')](_0x0032('0x1c'),_0x556c7d,JSON[_0x0032('0x3d')](_0x12a3b5));})[_0x0032('0x3e')](function(_0xb8091a){logger['error'](_0x0032('0x41'),_0x556c7d,JSON['stringify'](_0xb8091a));});})[_0x0032('0x3a')](function(){_0x2b5379[_0x0032('0x16')]();});});}else{return rpc[this[_0x0032('0x25')]+_0x0032('0x2d')]['create'](_0x3ca0d1)[_0x0032('0x3a')](function(){logger[_0x0032('0x13')](_0x0032('0x14'),_0x556c7d,_0x3ca0d1[_0x0032('0x11')]);})[_0x0032('0x3e')](function(_0x661038){logger[_0x0032('0x42')](_0x0032('0x14'),_0x556c7d,JSON[_0x0032('0x3d')](_0x661038));})[_0x0032('0x40')](function(){Promise[_0x0032('0x43')]()[_0x0032('0x3a')](function(){if(_0x3e4af9[0x0]!=='2'||_0x391708[_0x0032('0x1b')])return;return rpc[_0x103dca+_0x0032('0x44')]['update'](_0x391708['id'],{'autoreplyExecuted':!![]})[_0x0032('0x3a')](function(_0x1e3fb6){logger[_0x0032('0x13')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x556c7d,JSON['stringify'](_0x1e3fb6));})[_0x0032('0x3e')](function(_0x56bd2e){logger[_0x0032('0x42')](_0x0032('0x41'),_0x556c7d,JSON[_0x0032('0x3d')](_0x56bd2e));});})['then'](function(){_0x2b5379[_0x0032('0x16')]();});});}}}catch(_0x370989){logger[_0x0032('0x42')](_0x0032('0x14'),_0x556c7d,JSON[_0x0032('0x3d')](_0x370989));_0x2b5379[_0x0032('0x45')]();}};};
\ No newline at end of file
index 570c86c..e14575b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3969=['channel','Interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','[%s][CLOSE]\x20%s','stringify','finally','stop','error','../../../../config/logger','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xb1ed15,_0x59423c){var _0x57bb67=function(_0x2eeb07){while(--_0x2eeb07){_0xb1ed15['push'](_0xb1ed15['shift']());}};_0x57bb67(++_0x59423c);}(_0x3969,0x1c2));var _0x9396=function(_0xac254b,_0x13af7e){_0xac254b=_0xac254b-0x0;var _0x54d336=_0x3969[_0xac254b];return _0x54d336;};'use strict';var moment=require('moment');var logger=require(_0x9396('0x0'))('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x9396('0x1')),'smsInteraction':require(_0x9396('0x2')),'mailInteraction':require(_0x9396('0x3')),'faxInteraction':require(_0x9396('0x4')),'whatsappInteraction':require(_0x9396('0x5'))};exports[_0x9396('0x6')]=function(_0x241add,_0x3139bc,_0x23bc96,_0x15561e){return function(_0x24630f){try{logger[_0x9396('0x7')](_0x9396('0x8'),_0x241add,_0x3139bc[0x0]);var _0x334e47={'closed':0x1,'closedAt':moment()['format'](_0x9396('0x9')),'closeReason':'system','disposition':_0x3139bc[0x0]};if(rpc[_0x15561e[_0x9396('0xa')]+_0x9396('0xb')]){rpc[_0x15561e['channel']+_0x9396('0xb')]['update'](_0x15561e['interaction']['id'],_0x334e47)[_0x9396('0xc')](function(_0x3ad41c){logger['info'](_0x9396('0xd'),_0x241add,_0x15561e[_0x9396('0xe')]['id']);})['catch'](function(_0x336d9e){logger['error'](_0x9396('0xf'),_0x241add,JSON[_0x9396('0x10')](_0x336d9e));})[_0x9396('0x11')](function(){_0x24630f[_0x9396('0x12')]();});}}catch(_0x444bd3){logger[_0x9396('0x13')](_0x9396('0xf'),_0x241add,JSON[_0x9396('0x10')](_0x444bd3));_0x24630f['stop']();}};};
\ No newline at end of file
+var _0xa7b1=['format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','[%s][CLOSE]\x20reason\x20%s'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xa7b1,0x1a7));var _0x1a7b=function(_0x12f9b9,_0x25ef19){_0x12f9b9=_0x12f9b9-0x0;var _0x1738d6=_0xa7b1[_0x12f9b9];return _0x1738d6;};'use strict';var moment=require(_0x1a7b('0x0'));var logger=require('../../../../config/logger')(_0x1a7b('0x1'));var rpc={'chatInteraction':require(_0x1a7b('0x2')),'openchannelInteraction':require(_0x1a7b('0x3')),'smsInteraction':require(_0x1a7b('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x1a7b('0x5')),'whatsappInteraction':require(_0x1a7b('0x6'))};exports[_0x1a7b('0x7')]=function(_0x39d306,_0x39b078,_0x58bbee,_0x196a5e){return function(_0x4a9627){try{logger['info'](_0x1a7b('0x8'),_0x39d306,_0x39b078[0x0]);var _0x2b1fac={'closed':0x1,'closedAt':moment()[_0x1a7b('0x9')](_0x1a7b('0xa')),'closeReason':_0x1a7b('0xb'),'disposition':_0x39b078[0x0]};if(rpc[_0x196a5e['channel']+'Interaction']){rpc[_0x196a5e[_0x1a7b('0xc')]+_0x1a7b('0xd')][_0x1a7b('0xe')](_0x196a5e['interaction']['id'],_0x2b1fac)[_0x1a7b('0xf')](function(_0x327c48){logger['info'](_0x1a7b('0x10'),_0x39d306,_0x196a5e[_0x1a7b('0x11')]['id']);})[_0x1a7b('0x12')](function(_0x60cf3){logger[_0x1a7b('0x13')](_0x1a7b('0x14'),_0x39d306,JSON[_0x1a7b('0x15')](_0x60cf3));})[_0x1a7b('0x16')](function(){_0x4a9627[_0x1a7b('0x17')]();});}}catch(_0xdb6341){logger[_0x1a7b('0x13')](_0x1a7b('0x14'),_0x39d306,JSON[_0x1a7b('0x15')](_0xdb6341));_0x4a9627[_0x1a7b('0x17')]();}};};
\ No newline at end of file
index 0f0b411..6b241c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91c6=['then','info','error','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','message','dialogflow','result','speech','providerName','providerResponse','catch','lodash','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','created','body','getMustacheRender','Message','create'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x91c6,0xf9));var _0x691c=function(_0x68410e,_0x592b35){_0x68410e=_0x68410e-0x0;var _0xa0bcbd=_0x91c6[_0x68410e];return _0xa0bcbd;};'use strict';var _=require(_0x691c('0x0'));var moment=require('moment');var apiai=require('apiai-promise');var md5=require(_0x691c('0x1'));var utils=require(_0x691c('0x2'));var logger=require(_0x691c('0x3'))(_0x691c('0x4'));var rpc={'chatMessage':require(_0x691c('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x691c('0x6')),'smsMessage':require(_0x691c('0x7')),'faxMessage':require(_0x691c('0x8')),'whatsappMessage':require(_0x691c('0x9'))};exports[_0x691c('0xa')]=function(_0x29876a,_0x5ccbe0){return function(_0x93b7b0){try{if(!_[_0x691c('0xb')](this[_0x691c('0xc')][_0x691c('0xd')])){logger['info'](_0x691c('0xe'),_0x29876a,_0x691c('0xf'));return _0x93b7b0[_0x691c('0x10')]();}var _0x53c1eb={'ContactId':this['contact']['id'],'sentAt':moment()['format'](_0x691c('0x11')),'direction':_0x691c('0x12')};if(this[_0x691c('0x13')]===_0x691c('0x14')||this['channel']==='whatsapp'){_0x53c1eb[_0x691c('0x15')]=this[_0x691c('0xc')][_0x691c('0x15')];}var _0x445f33=this[_0x691c('0x13')];if(_0x445f33===_0x691c('0x16')){_0x53c1eb[_0x691c('0x17')]=this[_0x691c('0x18')]['id'];}else{_0x53c1eb[_['upperFirst'](_0x445f33)+_0x691c('0x19')]=this[_0x691c('0x18')]['id'];}_0x53c1eb[_[_0x691c('0x1a')](_0x445f33)+_0x691c('0x1b')]=this[_0x691c('0xc')]['id'];if(this[_0x691c('0xc')][_0x691c('0x1c')]){var _0x6b9f85=_0x5ccbe0[0x2];if(!_['isEmpty'](_0x6b9f85)){_0x53c1eb[_0x691c('0x1d')]=utils[_0x691c('0x1e')](_0x6b9f85,this);return rpc[_0x445f33+_0x691c('0x1f')][_0x691c('0x20')](_0x53c1eb)[_0x691c('0x21')](function(_0x522ad0){logger[_0x691c('0x22')](_0x691c('0xe'),_0x29876a,_0x53c1eb['body']);})['catch'](function(_0x5ae47e){logger[_0x691c('0x23')]('[%s][DIALOGFLOW]\x20%s',_0x29876a,JSON[_0x691c('0x24')](_0x5ae47e));})['finally'](function(){logger['info'](_0x691c('0x25'),_0x29876a);_0x93b7b0[_0x691c('0x26')]();});}else{logger[_0x691c('0x22')](_0x691c('0x27'),_0x29876a);_0x93b7b0[_0x691c('0x26')]();}}else{var _0x59d3de=this;var _0xd1e967=apiai(_0x5ccbe0[0x0],{'language':_0x5ccbe0[0x1]||'en'});return _0xd1e967['textRequest'](this[_0x691c('0x28')]['body'],{'sessionId':md5(this[_0x691c('0xc')]['id'])})[_0x691c('0x21')](function(_0x63e21c){_0x59d3de[_0x691c('0x1d')][_0x691c('0x29')]=_0x63e21c;_0x53c1eb['body']=_0x63e21c[_0x691c('0x2a')]['fulfillment'][_0x691c('0x2b')];_0x53c1eb[_0x691c('0x2c')]=_0x691c('0x29');_0x53c1eb[_0x691c('0x2d')]=JSON[_0x691c('0x24')](_0x63e21c);return rpc[_0x445f33+_0x691c('0x1f')][_0x691c('0x20')](_0x53c1eb)[_0x691c('0x21')](function(_0x54a16d){logger[_0x691c('0x22')](_0x691c('0xe'),_0x29876a,_0x53c1eb[_0x691c('0x1d')]);if(_0x63e21c[_0x691c('0x2a')]['metadata']['endConversation']){_0x93b7b0[_0x691c('0x10')]();}else{_0x93b7b0[_0x691c('0x26')]();}})['catch'](function(_0x26dfb1){logger['error'](_0x691c('0xe'),_0x29876a,JSON['stringify'](_0x26dfb1));_0x93b7b0[_0x691c('0x10')]();});})[_0x691c('0x2e')](function(_0x21c531){logger['error']('[%s][DIALOGFLOW]\x20%s',_0x29876a,_0x21c531[_0x691c('0x28')]);_0x93b7b0[_0x691c('0x10')]();});}}catch(_0x203e2e){logger[_0x691c('0x23')](_0x691c('0xe'),_0x29876a,JSON[_0x691c('0x24')](_0x203e2e));_0x93b7b0[_0x691c('0x26')]();}};};
\ No newline at end of file
+var _0xb5dd=['phone','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','catch','error','stringify','info','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','textRequest','result','providerName','dialogflow','providerResponse','metadata','lodash','moment','apiai-promise','md5','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp'];(function(_0x5c14f6,_0x2979d8){var _0x4949b3=function(_0xcc4206){while(--_0xcc4206){_0x5c14f6['push'](_0x5c14f6['shift']());}};_0x4949b3(++_0x2979d8);}(_0xb5dd,0xd9));var _0xdb5d=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xb5dd[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xdb5d('0x0'));var moment=require(_0xdb5d('0x1'));var apiai=require(_0xdb5d('0x2'));var md5=require(_0xdb5d('0x3'));var utils=require(_0xdb5d('0x4'));var logger=require('../../../../config/logger')(_0xdb5d('0x5'));var rpc={'chatMessage':require(_0xdb5d('0x6')),'openchannelMessage':require(_0xdb5d('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xdb5d('0x8')),'faxMessage':require(_0xdb5d('0x9')),'whatsappMessage':require(_0xdb5d('0xa'))};exports[_0xdb5d('0xb')]=function(_0x2d980b,_0x89fa9e){return function(_0x344631){try{if(!_[_0xdb5d('0xc')](this[_0xdb5d('0xd')][_0xdb5d('0xe')])){logger['info'](_0xdb5d('0xf'),_0x2d980b,_0xdb5d('0x10'));return _0x344631[_0xdb5d('0x11')]();}var _0x4fb3ab={'ContactId':this['contact']['id'],'sentAt':moment()[_0xdb5d('0x12')](_0xdb5d('0x13')),'direction':_0xdb5d('0x14')};if(this['channel']==='sms'||this[_0xdb5d('0x15')]===_0xdb5d('0x16')){_0x4fb3ab[_0xdb5d('0x17')]=this[_0xdb5d('0xd')][_0xdb5d('0x17')];}var _0x114c34=this[_0xdb5d('0x15')];if(_0x114c34==='chat'){_0x4fb3ab[_0xdb5d('0x18')]=this[_0xdb5d('0x19')]['id'];}else{_0x4fb3ab[_[_0xdb5d('0x1a')](_0x114c34)+'AccountId']=this[_0xdb5d('0x19')]['id'];}_0x4fb3ab[_[_0xdb5d('0x1a')](_0x114c34)+_0xdb5d('0x1b')]=this['interaction']['id'];if(this['interaction'][_0xdb5d('0x1c')]){var _0x5d334c=_0x89fa9e[0x2];if(!_[_0xdb5d('0x1d')](_0x5d334c)){_0x4fb3ab[_0xdb5d('0x1e')]=utils[_0xdb5d('0x1f')](_0x5d334c,this);return rpc[_0x114c34+_0xdb5d('0x20')][_0xdb5d('0x21')](_0x4fb3ab)[_0xdb5d('0x22')](function(_0x427bf7){logger['info'](_0xdb5d('0xf'),_0x2d980b,_0x4fb3ab['body']);})[_0xdb5d('0x23')](function(_0x405d3d){logger[_0xdb5d('0x24')](_0xdb5d('0xf'),_0x2d980b,JSON[_0xdb5d('0x25')](_0x405d3d));})['finally'](function(){logger[_0xdb5d('0x26')](_0xdb5d('0x27'),_0x2d980b);_0x344631['stop']();});}else{logger['info'](_0xdb5d('0x28'),_0x2d980b);_0x344631[_0xdb5d('0x29')]();}}else{var _0x598a03=this;var _0x2e6b0c=apiai(_0x89fa9e[0x0],{'language':_0x89fa9e[0x1]||'en'});return _0x2e6b0c[_0xdb5d('0x2a')](this['message'][_0xdb5d('0x1e')],{'sessionId':md5(this['interaction']['id'])})[_0xdb5d('0x22')](function(_0x4c6a0a){_0x598a03[_0xdb5d('0x1e')]['dialogflow']=_0x4c6a0a;_0x4fb3ab['body']=_0x4c6a0a[_0xdb5d('0x2b')]['fulfillment']['speech'];_0x4fb3ab[_0xdb5d('0x2c')]=_0xdb5d('0x2d');_0x4fb3ab[_0xdb5d('0x2e')]=JSON[_0xdb5d('0x25')](_0x4c6a0a);return rpc[_0x114c34+_0xdb5d('0x20')]['create'](_0x4fb3ab)[_0xdb5d('0x22')](function(_0xd966ed){logger[_0xdb5d('0x26')](_0xdb5d('0xf'),_0x2d980b,_0x4fb3ab[_0xdb5d('0x1e')]);if(_0x4c6a0a[_0xdb5d('0x2b')][_0xdb5d('0x2f')]['endConversation']){_0x344631[_0xdb5d('0x11')]();}else{_0x344631[_0xdb5d('0x29')]();}})[_0xdb5d('0x23')](function(_0x528304){logger['error'](_0xdb5d('0xf'),_0x2d980b,JSON['stringify'](_0x528304));_0x344631[_0xdb5d('0x11')]();});})[_0xdb5d('0x23')](function(_0x3affd3){logger[_0xdb5d('0x24')](_0xdb5d('0xf'),_0x2d980b,_0x3affd3['message']);_0x344631['next']();});}}catch(_0x16ddea){logger[_0xdb5d('0x24')](_0xdb5d('0xf'),_0x2d980b,JSON[_0xdb5d('0x25')](_0x16ddea));_0x344631[_0xdb5d('0x29')]();}};};
\ No newline at end of file
index 991c352..1aff5ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe27a=['sessionPath','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','fulfillmentText','all','message','lodash','dialogflow','moment','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','clone','body','create','then','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','isNil','interaction','UserId','info','next','format','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient'];(function(_0x382c73,_0x199cab){var _0x1dd0bf=function(_0x358747){while(--_0x358747){_0x382c73['push'](_0x382c73['shift']());}};_0x1dd0bf(++_0x199cab);}(_0xe27a,0x184));var _0xae27=function(_0x3c2caa,_0x138dcf){_0x3c2caa=_0x3c2caa-0x0;var _0x164a9d=_0xe27a[_0x3c2caa];return _0x164a9d;};'use strict';var _=require(_0xae27('0x0'));var dialogflow=require(_0xae27('0x1'));var md5=require('md5');var moment=require(_0xae27('0x2'));var Promise=require('bluebird');var logger=require(_0xae27('0x3'))(_0xae27('0x4'));var utils=require(_0xae27('0x5'));var rpc={'chatMessage':require(_0xae27('0x6')),'openchannelMessage':require(_0xae27('0x7')),'mailMessage':require(_0xae27('0x8')),'smsMessage':require(_0xae27('0x9')),'faxMessage':require(_0xae27('0xa')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x30be4b,_0x5268d5,_0x4b5ec7,_0x5902bb){return new Promise(function(_0x307250,_0x861678){var _0x22d01b=_[_0xae27('0xb')](_0x4b5ec7);_0x22d01b[_0xae27('0xc')]=_0x5902bb;return rpc[_0x5268d5+'Message'][_0xae27('0xd')](_0x22d01b)[_0xae27('0xe')](function(){logger['info'](_0xae27('0xf'),_0x30be4b,_0x22d01b['body']);_0x307250();})[_0xae27('0x10')](function(_0x874121){logger[_0xae27('0x11')](_0xae27('0xf'),_0x30be4b,JSON[_0xae27('0x12')](_0x874121));_0x861678(_0x874121);});});}exports['consequence']=function(_0x358bc8,_0x21e23a){return function(_0x3d652f){try{if(!_[_0xae27('0x13')](this[_0xae27('0x14')][_0xae27('0x15')])){logger[_0xae27('0x16')](_0xae27('0xf'),_0x358bc8,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x3d652f[_0xae27('0x17')]();}var _0x54505e={'ContactId':this['contact']['id'],'sentAt':moment()[_0xae27('0x18')](_0xae27('0x19')),'direction':'out'};if(this[_0xae27('0x1a')]==='sms'||this[_0xae27('0x1a')]===_0xae27('0x1b')){_0x54505e[_0xae27('0x1c')]=this[_0xae27('0x14')][_0xae27('0x1c')];}var _0x53630e=this['channel'];if(_0x53630e===_0xae27('0x1d')){_0x54505e[_0xae27('0x1e')]=this[_0xae27('0x1f')]['id'];}else{_0x54505e[_['upperFirst'](_0x53630e)+_0xae27('0x20')]=this[_0xae27('0x1f')]['id'];}_0x54505e[_[_0xae27('0x21')](_0x53630e)+_0xae27('0x22')]=this['interaction']['id'];if(this[_0xae27('0x14')][_0xae27('0x23')]){var _0x414a59=_0x21e23a[0x4];if(!_[_0xae27('0x24')](_0x414a59)){_0x54505e[_0xae27('0xc')]=utils[_0xae27('0x25')](_0x414a59,this);return rpc[_0x53630e+_0xae27('0x26')][_0xae27('0xd')](_0x54505e)[_0xae27('0xe')](function(_0x550341){logger['info'](_0xae27('0xf'),_0x358bc8,_0x54505e[_0xae27('0xc')]);})[_0xae27('0x10')](function(_0x4bb88a){logger[_0xae27('0x11')](_0xae27('0xf'),_0x358bc8,JSON[_0xae27('0x12')](_0x4bb88a));})[_0xae27('0x27')](function(){logger['info'](_0xae27('0x28'),_0x358bc8);_0x3d652f[_0xae27('0x29')]();});}else{logger[_0xae27('0x16')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x358bc8);_0x3d652f[_0xae27('0x29')]();}}else{var _0x46030c=this;var _0x5c41fe=_0x21e23a[0x2][_0xae27('0x2a')](/\\n/g,'\x0a');var _0x340866={'credentials':{'private_key':_0x5c41fe,'client_email':_0x21e23a[0x1]}};var _0x1f8fee=new dialogflow[(_0xae27('0x2b'))](_0x340866);var _0xc99c13=_0x1f8fee[_0xae27('0x2c')](_0x21e23a[0x0],md5(_0x46030c['interaction']['id']));var _0x5c587f={'session':_0xc99c13,'queryInput':{'text':{'text':_0x46030c['message']['body'],'languageCode':_0x21e23a[0x3]||'en'}}};return _0x1f8fee[_0xae27('0x2d')](_0x5c587f)[_0xae27('0xe')](function(_0x3584c9){if(_0x3584c9&&_0x3584c9[_0xae27('0x2e')]){_0x46030c[_0xae27('0xc')][_0xae27('0x2f')]=_0x3584c9;var _0x3490e9=_0x3584c9[0x0];var _0x4dcd40=_0x3490e9[_0xae27('0x30')][_0xae27('0x31')]&&_0x3490e9[_0xae27('0x30')][_0xae27('0x31')]['fields']?_0x3490e9[_0xae27('0x30')][_0xae27('0x31')][_0xae27('0x32')][_0xae27('0x33')][_0xae27('0x34')]:![];_0x46030c[_0xae27('0xc')][_0xae27('0x35')]=_0x3490e9[_0xae27('0x30')][_0xae27('0x36')];_0x46030c['body'][_0xae27('0x37')]=_0x3490e9[_0xae27('0x30')][_0xae27('0x38')];_0x46030c['body'][_0xae27('0x39')]=_0x3490e9[_0xae27('0x30')][_0xae27('0x31')]&&_0x3490e9[_0xae27('0x30')][_0xae27('0x31')]['fields']?_0x3490e9[_0xae27('0x30')]['diagnosticInfo']['fields'][_0xae27('0x33')][_0xae27('0x34')]:![];_0x46030c[_0xae27('0xc')][_0xae27('0x3a')]=_0x3490e9[_0xae27('0x30')][_0xae27('0x3b')][_0xae27('0x3c')];_0x46030c[_0xae27('0xc')][_0xae27('0x3d')]=_0x3490e9[_0xae27('0x30')]['intent']['displayName'];_0x46030c[_0xae27('0xc')][_0xae27('0x3e')]=_0x3490e9['queryResult'][_0xae27('0x3b')][_0xae27('0x3f')];_0x46030c[_0xae27('0xc')][_0xae27('0x40')]=_0x3490e9[_0xae27('0x30')]['languageCode'];_0x46030c[_0xae27('0xc')]['DIALOGFLOWV2_QUERYTEXT']=_0x3490e9[_0xae27('0x30')][_0xae27('0x41')];_0x46030c[_0xae27('0xc')][_0xae27('0x42')]=_0x3490e9[_0xae27('0x30')][_0xae27('0x43')];_0x54505e[_0xae27('0x44')]=_0xae27('0x2f');_0x54505e['providerResponse']=JSON[_0xae27('0x12')](_0x3584c9);var _0x4838f0=[];for(var _0x3cffc7=0x0;_0x3cffc7<_0x3584c9['length'];_0x3cffc7++){var _0x36f740=_0x3584c9[_0x3cffc7];if(_0x36f740&&_0x36f740['queryResult']&&_0x36f740[_0xae27('0x30')]['fulfillmentText']){_0x4838f0['push'](createMessage(_0x358bc8,_0x53630e,_0x54505e,_0x36f740[_0xae27('0x30')][_0xae27('0x45')]));}}return Promise[_0xae27('0x46')](_0x4838f0)[_0xae27('0xe')](function(){if(_0x4dcd40){_0x3d652f[_0xae27('0x17')]();}else{_0x3d652f[_0xae27('0x29')]();}})[_0xae27('0x10')](function(_0xc55233){logger[_0xae27('0x11')](_0xae27('0xf'),_0x358bc8,JSON['stringify'](_0xc55233));_0x3d652f[_0xae27('0x17')]();});}})[_0xae27('0x10')](function(_0x25eed6){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x358bc8,_0x25eed6[_0xae27('0x47')],_0x25eed6['stack']);_0x3d652f[_0xae27('0x17')]();});}}catch(_0x2e91fd){logger[_0xae27('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x358bc8,JSON[_0xae27('0x12')](_0x2e91fd));_0x3d652f[_0xae27('0x29')]();}};};
\ No newline at end of file
+var _0xa1ae=['bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','body','Message','create','then','catch','error','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','created','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','message','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerName','providerResponse','fulfillmentText','push','all','stack','lodash','md5'];(function(_0x16ca76,_0x258915){var _0xbfbbad=function(_0x5e1266){while(--_0x5e1266){_0x16ca76['push'](_0x16ca76['shift']());}};_0xbfbbad(++_0x258915);}(_0xa1ae,0x170));var _0xea1a=function(_0x5371e0,_0x188058){_0x5371e0=_0x5371e0-0x0;var _0x433319=_0xa1ae[_0x5371e0];return _0x433319;};'use strict';var _=require(_0xea1a('0x0'));var dialogflow=require('dialogflow');var md5=require(_0xea1a('0x1'));var moment=require('moment');var Promise=require(_0xea1a('0x2'));var logger=require(_0xea1a('0x3'))(_0xea1a('0x4'));var utils=require(_0xea1a('0x5'));var rpc={'chatMessage':require(_0xea1a('0x6')),'openchannelMessage':require(_0xea1a('0x7')),'mailMessage':require(_0xea1a('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xea1a('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x5d0547,_0x5057f3,_0x329cdc,_0x23dc4f){return new Promise(function(_0x2c10aa,_0x529afe){var _0x427952=_['clone'](_0x329cdc);_0x427952[_0xea1a('0xa')]=_0x23dc4f;return rpc[_0x5057f3+_0xea1a('0xb')][_0xea1a('0xc')](_0x427952)[_0xea1a('0xd')](function(){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x5d0547,_0x427952[_0xea1a('0xa')]);_0x2c10aa();})[_0xea1a('0xe')](function(_0x5b8438){logger[_0xea1a('0xf')](_0xea1a('0x10'),_0x5d0547,JSON[_0xea1a('0x11')](_0x5b8438));_0x529afe(_0x5b8438);});});}exports[_0xea1a('0x12')]=function(_0x21abec,_0x36bdae){return function(_0x5318b5){try{if(!_[_0xea1a('0x13')](this[_0xea1a('0x14')][_0xea1a('0x15')])){logger[_0xea1a('0x16')]('[%s][DIALOGFLOWV2]\x20%s',_0x21abec,_0xea1a('0x17'));return _0x5318b5[_0xea1a('0x18')]();}var _0x1a7a7f={'ContactId':this[_0xea1a('0x19')]['id'],'sentAt':moment()[_0xea1a('0x1a')](_0xea1a('0x1b')),'direction':_0xea1a('0x1c')};if(this[_0xea1a('0x1d')]===_0xea1a('0x1e')||this[_0xea1a('0x1d')]===_0xea1a('0x1f')){_0x1a7a7f['phone']=this[_0xea1a('0x14')][_0xea1a('0x20')];}var _0x1a2512=this[_0xea1a('0x1d')];if(_0x1a2512===_0xea1a('0x21')){_0x1a7a7f[_0xea1a('0x22')]=this[_0xea1a('0x23')]['id'];}else{_0x1a7a7f[_['upperFirst'](_0x1a2512)+_0xea1a('0x24')]=this[_0xea1a('0x23')]['id'];}_0x1a7a7f[_[_0xea1a('0x25')](_0x1a2512)+_0xea1a('0x26')]=this[_0xea1a('0x14')]['id'];if(this[_0xea1a('0x14')][_0xea1a('0x27')]){var _0x2a0aa7=_0x36bdae[0x4];if(!_['isEmpty'](_0x2a0aa7)){_0x1a7a7f['body']=utils[_0xea1a('0x28')](_0x2a0aa7,this);return rpc[_0x1a2512+'Message'][_0xea1a('0xc')](_0x1a7a7f)[_0xea1a('0xd')](function(_0x3e0c7c){logger[_0xea1a('0x16')]('[%s][DIALOGFLOWV2]\x20%s',_0x21abec,_0x1a7a7f['body']);})['catch'](function(_0x2087d9){logger[_0xea1a('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x21abec,JSON[_0xea1a('0x11')](_0x2087d9));})[_0xea1a('0x29')](function(){logger[_0xea1a('0x16')](_0xea1a('0x2a'),_0x21abec);_0x5318b5[_0xea1a('0x2b')]();});}else{logger['info'](_0xea1a('0x2c'),_0x21abec);_0x5318b5[_0xea1a('0x2b')]();}}else{var _0x521b7e=this;var _0x276ca8=_0x36bdae[0x2][_0xea1a('0x2d')](/\\n/g,'\x0a');var _0x5586ff={'credentials':{'private_key':_0x276ca8,'client_email':_0x36bdae[0x1]}};var _0x410023=new dialogflow[(_0xea1a('0x2e'))](_0x5586ff);var _0xbee85=_0x410023['sessionPath'](_0x36bdae[0x0],md5(_0x521b7e[_0xea1a('0x14')]['id']));var _0x499d10={'session':_0xbee85,'queryInput':{'text':{'text':_0x521b7e[_0xea1a('0x2f')][_0xea1a('0xa')],'languageCode':_0x36bdae[0x3]||'en'}}};return _0x410023['detectIntent'](_0x499d10)[_0xea1a('0xd')](function(_0xc9181c){if(_0xc9181c&&_0xc9181c[_0xea1a('0x30')]){_0x521b7e[_0xea1a('0xa')][_0xea1a('0x31')]=_0xc9181c;var _0x338918=_0xc9181c[0x0];var _0x55ffea=_0x338918[_0xea1a('0x32')]['diagnosticInfo']&&_0x338918['queryResult'][_0xea1a('0x33')][_0xea1a('0x34')]?_0x338918['queryResult'][_0xea1a('0x33')]['fields'][_0xea1a('0x35')]['boolValue']:![];_0x521b7e['body']['DIALOGFLOWV2_ACTION']=_0x338918[_0xea1a('0x32')]['action'];_0x521b7e[_0xea1a('0xa')][_0xea1a('0x36')]=_0x338918[_0xea1a('0x32')][_0xea1a('0x37')];_0x521b7e['body'][_0xea1a('0x38')]=_0x338918['queryResult']['diagnosticInfo']&&_0x338918['queryResult'][_0xea1a('0x33')][_0xea1a('0x34')]?_0x338918[_0xea1a('0x32')][_0xea1a('0x33')][_0xea1a('0x34')][_0xea1a('0x35')]['boolValue']:![];_0x521b7e['body'][_0xea1a('0x39')]=_0x338918[_0xea1a('0x32')][_0xea1a('0x3a')]['name'];_0x521b7e[_0xea1a('0xa')][_0xea1a('0x3b')]=_0x338918[_0xea1a('0x32')][_0xea1a('0x3a')][_0xea1a('0x3c')];_0x521b7e['body'][_0xea1a('0x3d')]=_0x338918[_0xea1a('0x32')]['intent'][_0xea1a('0x3e')];_0x521b7e[_0xea1a('0xa')][_0xea1a('0x3f')]=_0x338918[_0xea1a('0x32')][_0xea1a('0x40')];_0x521b7e[_0xea1a('0xa')][_0xea1a('0x41')]=_0x338918[_0xea1a('0x32')][_0xea1a('0x42')];_0x521b7e[_0xea1a('0xa')][_0xea1a('0x43')]=_0x338918[_0xea1a('0x32')]['intentDetectionConfidence'];_0x1a7a7f[_0xea1a('0x44')]=_0xea1a('0x31');_0x1a7a7f[_0xea1a('0x45')]=JSON[_0xea1a('0x11')](_0xc9181c);var _0x2b2027=[];for(var _0x562c19=0x0;_0x562c19<_0xc9181c[_0xea1a('0x30')];_0x562c19++){var _0x176a0c=_0xc9181c[_0x562c19];if(_0x176a0c&&_0x176a0c[_0xea1a('0x32')]&&_0x176a0c[_0xea1a('0x32')][_0xea1a('0x46')]){_0x2b2027[_0xea1a('0x47')](createMessage(_0x21abec,_0x1a2512,_0x1a7a7f,_0x176a0c[_0xea1a('0x32')][_0xea1a('0x46')]));}}return Promise[_0xea1a('0x48')](_0x2b2027)['then'](function(){if(_0x55ffea){_0x5318b5[_0xea1a('0x18')]();}else{_0x5318b5['stop']();}})[_0xea1a('0xe')](function(_0x107fac){logger[_0xea1a('0xf')](_0xea1a('0x10'),_0x21abec,JSON['stringify'](_0x107fac));_0x5318b5[_0xea1a('0x18')]();});}})[_0xea1a('0xe')](function(_0x32dcc4){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x21abec,_0x32dcc4[_0xea1a('0x2f')],_0x32dcc4[_0xea1a('0x49')]);_0x5318b5[_0xea1a('0x18')]();});}}catch(_0x1ec154){logger[_0xea1a('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x21abec,JSON[_0xea1a('0x11')](_0x1ec154));_0x5318b5[_0xea1a('0x2b')]();}};};
\ No newline at end of file
index 75415f3..70be554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f16=['replace','validate','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','rules','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','lodash','html-to-text','./utils','../../../../config/logger','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString'];(function(_0x1f0529,_0x57e665){var _0x43bfe6=function(_0x26d886){while(--_0x26d886){_0x1f0529['push'](_0x1f0529['shift']());}};_0x43bfe6(++_0x57e665);}(_0x8f16,0x139));var _0x68f1=function(_0x5518cd,_0xa3de1d){_0x5518cd=_0x5518cd-0x0;var _0x227323=_0x8f16[_0x5518cd];return _0x227323;};'use strict';var schema=require('validate');var _=require(_0x68f1('0x0'));var htmlToText=require(_0x68f1('0x1'));var utils=require(_0x68f1('0x2'));var logger=require(_0x68f1('0x3'))(_0x68f1('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0x68f1('0x5')},'priorityTrue':{'type':_0x68f1('0x6'),'message':_0x68f1('0x7')},'priorityFalse':{'type':_0x68f1('0x6'),'message':_0x68f1('0x8')}});exports[_0x68f1('0x9')]=function(_0x226f26,_0x6b5cf9){return function(_0x53e854){try{var _0x39b9bd={'condition':htmlToText[_0x68f1('0xa')](utils['getMustacheRender'](_0x6b5cf9[0x0],this),{'wordwrap':![]})[_0x68f1('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x6b5cf9[0x1],'priorityFalse':_0x6b5cf9[0x2]};var _0x307147=gotoif[_0x68f1('0xc')](_0x39b9bd,{'typecast':!![]});if(_0x307147[_0x68f1('0xd')]){logger[_0x68f1('0xe')](_0x68f1('0xf'),_0x226f26,_[_0x68f1('0x10')](_0x307147,_0x68f1('0x11'))[_0x68f1('0x12')](',\x20'));_0x53e854[_0x68f1('0x13')]();}else{try{var _0x461398=eval('('+_0x39b9bd[_0x68f1('0x14')]+')');var _0xfcebc9=_0x461398?_0x39b9bd['priorityTrue']:_0x39b9bd['priorityFalse'];logger[_0x68f1('0x15')](_0x68f1('0x16'),_0x226f26,_0x39b9bd[_0x68f1('0x14')],_0x461398,_0xfcebc9||_0x68f1('0x17'));if(_0xfcebc9){var _0x1ed3d8=_['findIndex'](_0x53e854[_0x68f1('0x18')](),{'p':_0xfcebc9});if(_0x1ed3d8>=0x0){logger[_0x68f1('0x15')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x226f26,_0xfcebc9||_0x68f1('0x17'),_0x1ed3d8);_0x53e854[_0x68f1('0x17')](_0x1ed3d8);}else{logger[_0x68f1('0x15')](_0x68f1('0x19'),_0x226f26,_0xfcebc9||_0x68f1('0x17'));_0x53e854['stop']();}}else{_0x53e854[_0x68f1('0x17')]();}}catch(_0x46bf20){logger[_0x68f1('0xe')](_0x68f1('0x1a'),_0x226f26,_0x46bf20['message']);_0x53e854[_0x68f1('0x13')]();}}}catch(_0x430120){logger['error'](_0x68f1('0xf'),_0x226f26,JSON['stringify'](_0x430120));_0x53e854[_0x68f1('0x13')]();}};};
\ No newline at end of file
+var _0x930b=['rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stringify','lodash','html-to-text','./utils','../../../../config/logger','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','fromString','getMustacheRender','replace','validate','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','info','findIndex'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0x930b,0x161));var _0xb930=function(_0x465556,_0x599881){_0x465556=_0x465556-0x0;var _0x5f3ae7=_0x930b[_0x465556];return _0x5f3ae7;};'use strict';var schema=require('validate');var _=require(_0xb930('0x0'));var htmlToText=require(_0xb930('0x1'));var utils=require(_0xb930('0x2'));var logger=require(_0xb930('0x3'))(_0xb930('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0xb930('0x5')},'priorityTrue':{'type':_0xb930('0x6'),'message':_0xb930('0x7')},'priorityFalse':{'type':_0xb930('0x6'),'message':_0xb930('0x8')}});exports['consequence']=function(_0x15526b,_0x2f2cd5){return function(_0x2b8761){try{var _0x22cf6f={'condition':htmlToText[_0xb930('0x9')](utils[_0xb930('0xa')](_0x2f2cd5[0x0],this),{'wordwrap':![]})[_0xb930('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x2f2cd5[0x1],'priorityFalse':_0x2f2cd5[0x2]};var _0x2b72b2=gotoif[_0xb930('0xc')](_0x22cf6f,{'typecast':!![]});if(_0x2b72b2[_0xb930('0xd')]){logger[_0xb930('0xe')](_0xb930('0xf'),_0x15526b,_[_0xb930('0x10')](_0x2b72b2,_0xb930('0x11'))[_0xb930('0x12')](',\x20'));_0x2b8761[_0xb930('0x13')]();}else{try{var _0xc67c8f=eval('('+_0x22cf6f[_0xb930('0x14')]+')');var _0x42f326=_0xc67c8f?_0x22cf6f[_0xb930('0x15')]:_0x22cf6f['priorityFalse'];logger[_0xb930('0x16')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x15526b,_0x22cf6f['condition'],_0xc67c8f,_0x42f326||'next');if(_0x42f326){var _0x4e0b13=_[_0xb930('0x17')](_0x2b8761[_0xb930('0x18')](),{'p':_0x42f326});if(_0x4e0b13>=0x0){logger[_0xb930('0x16')](_0xb930('0x19'),_0x15526b,_0x42f326||_0xb930('0x1a'),_0x4e0b13);_0x2b8761[_0xb930('0x1a')](_0x4e0b13);}else{logger[_0xb930('0x16')](_0xb930('0x1b'),_0x15526b,_0x42f326||_0xb930('0x1a'));_0x2b8761['stop']();}}else{_0x2b8761[_0xb930('0x1a')]();}}catch(_0x175f26){logger['error']('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x15526b,_0x175f26['message']);_0x2b8761[_0xb930('0x13')]();}}}catch(_0x3f5026){logger['error'](_0xb930('0xf'),_0x15526b,JSON[_0xb930('0x1c')](_0x3f5026));_0x2b8761[_0xb930('0x13')]();}};};
\ No newline at end of file
index b207821..2122de2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','length','error','[%s][GOTOP]\x20%s','map','message','join','stop','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','stringify','validate','routing','number'];(function(_0x3185fa,_0x51be5a){var _0x395f28=function(_0xbad167){while(--_0xbad167){_0x3185fa['push'](_0x3185fa['shift']());}};_0x395f28(++_0x51be5a);}(_0xb62e,0x12d));var _0xeb62=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xb62e[_0x501510];return _0x1e6ee5;};'use strict';var schema=require(_0xeb62('0x0'));var _=require('lodash');var logger=require('../../../../config/logger')(_0xeb62('0x1'));var gotop=schema({'priority':{'type':_0xeb62('0x2'),'required':!![],'message':_0xeb62('0x3')}});exports['consequence']=function(_0x5d5fde,_0x2037d5){return function(_0x104d45){try{var _0xf3266={'priority':_0x2037d5[0x0]};var _0x43a54e=gotop['validate'](_0xf3266,{'typecast':!![]});if(_0x43a54e[_0xeb62('0x4')]){logger[_0xeb62('0x5')](_0xeb62('0x6'),_0x5d5fde,_[_0xeb62('0x7')](_0x43a54e,_0xeb62('0x8'))[_0xeb62('0x9')](',\x20'));_0x104d45[_0xeb62('0xa')]();}else{logger['info'](_0xeb62('0xb'),_0x5d5fde,_0xf3266[_0xeb62('0xc')]);if(_0xf3266[_0xeb62('0xc')]){var _0x507e55=_[_0xeb62('0xd')](_0x104d45[_0xeb62('0xe')](),{'p':_0xf3266['priority']});if(_0x507e55>=0x0){logger[_0xeb62('0xf')](_0xeb62('0x10'),_0x5d5fde,_0xf3266[_0xeb62('0xc')]||_0xeb62('0x11'),_0x507e55);_0x104d45[_0xeb62('0x11')](_0x507e55);}else{logger[_0xeb62('0xf')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x5d5fde,_0xf3266[_0xeb62('0xc')]||_0xeb62('0x11'));_0x104d45['stop']();}}else{_0x104d45['next']();}}}catch(_0xe69b8d){logger[_0xeb62('0x5')](_0xeb62('0x6'),_0x5d5fde,JSON[_0xeb62('0x12')](_0xe69b8d));_0x104d45['stop']();}};};
\ No newline at end of file
+var _0x7079=['next','info','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','validate','lodash','routing','number','consequence','length','error','[%s][GOTOP]\x20%s','map','message','join','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s'];(function(_0x5f4902,_0x1198fb){var _0x743933=function(_0x5e7082){while(--_0x5e7082){_0x5f4902['push'](_0x5f4902['shift']());}};_0x743933(++_0x1198fb);}(_0x7079,0x68));var _0x9707=function(_0x254161,_0x1019e3){_0x254161=_0x254161-0x0;var _0x30b6e7=_0x7079[_0x254161];return _0x30b6e7;};'use strict';var schema=require(_0x9707('0x0'));var _=require(_0x9707('0x1'));var logger=require('../../../../config/logger')(_0x9707('0x2'));var gotop=schema({'priority':{'type':_0x9707('0x3'),'required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0x9707('0x4')]=function(_0x2435ee,_0x11b496){return function(_0x49896c){try{var _0x1f11c8={'priority':_0x11b496[0x0]};var _0x223a40=gotop[_0x9707('0x0')](_0x1f11c8,{'typecast':!![]});if(_0x223a40[_0x9707('0x5')]){logger[_0x9707('0x6')](_0x9707('0x7'),_0x2435ee,_[_0x9707('0x8')](_0x223a40,_0x9707('0x9'))[_0x9707('0xa')](',\x20'));_0x49896c['stop']();}else{logger['info'](_0x9707('0xb'),_0x2435ee,_0x1f11c8[_0x9707('0xc')]);if(_0x1f11c8[_0x9707('0xc')]){var _0x1d276f=_[_0x9707('0xd')](_0x49896c[_0x9707('0xe')](),{'p':_0x1f11c8[_0x9707('0xc')]});if(_0x1d276f>=0x0){logger['info'](_0x9707('0xf'),_0x2435ee,_0x1f11c8['priority']||_0x9707('0x10'),_0x1d276f);_0x49896c[_0x9707('0x10')](_0x1d276f);}else{logger[_0x9707('0x11')](_0x9707('0x12'),_0x2435ee,_0x1f11c8[_0x9707('0xc')]||'next');_0x49896c[_0x9707('0x13')]();}}else{_0x49896c['next']();}}}catch(_0x3b2de1){logger[_0x9707('0x6')](_0x9707('0x7'),_0x2435ee,JSON['stringify'](_0x3b2de1));_0x49896c[_0x9707('0x13')]();}};};
\ No newline at end of file
index 687e56d..58f32c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d3=['error','stringify','stop','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','contact','channel','chat','ChatWebsiteId','AccountId','account','upperFirst','InteractionId','interaction','Message','then','info','[%s][MESSAGE]\x20%s','next','catch'];(function(_0x1778e1,_0x3e1727){var _0x2bc4c6=function(_0x359c65){while(--_0x359c65){_0x1778e1['push'](_0x1778e1['shift']());}};_0x2bc4c6(++_0x3e1727);}(_0x30d3,0x9f));var _0x330d=function(_0x1e66e1,_0x283405){_0x1e66e1=_0x1e66e1-0x0;var _0x1f51b0=_0x30d3[_0x1e66e1];return _0x1f51b0;};'use strict';var _=require('lodash');var utils=require('./utils');var logger=require(_0x330d('0x0'))(_0x330d('0x1'));var rpc={'chatMessage':require(_0x330d('0x2')),'openchannelMessage':require(_0x330d('0x3')),'mailMessage':require(_0x330d('0x4')),'smsMessage':require(_0x330d('0x5')),'faxMessage':require(_0x330d('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x330d('0x7')]=function(_0x3b3165,_0xd8503){return function(_0x2a330f){try{var _0x5ee451={'body':utils['getMustacheRender'](_0xd8503[0x0],this),'ContactId':this[_0x330d('0x8')]['id']};if(this[_0x330d('0x9')]===_0x330d('0xa')){_0x5ee451[_0x330d('0xb')]=this['account']['id'];}else{_0x5ee451[_['upperFirst'](this[_0x330d('0x9')])+_0x330d('0xc')]=this[_0x330d('0xd')]['id'];}_0x5ee451[_[_0x330d('0xe')](this[_0x330d('0x9')])+_0x330d('0xf')]=this[_0x330d('0x10')]['id'];if(rpc[this['channel']+_0x330d('0x11')]){return rpc[this[_0x330d('0x9')]+_0x330d('0x11')]['create'](_0x5ee451)[_0x330d('0x12')](function(_0xb093cd){logger[_0x330d('0x13')](_0x330d('0x14'),_0x3b3165,_0x5ee451['body']);_0x2a330f[_0x330d('0x15')]();})[_0x330d('0x16')](function(_0x528b86){logger[_0x330d('0x17')]('[%s][MESSAGE]\x20%s',_0x3b3165,JSON[_0x330d('0x18')](_0x528b86));_0x2a330f[_0x330d('0x19')]();});}}catch(_0x3801f4){logger['error']('[%s][MESSAGE]\x20%s',_0x3b3165,JSON[_0x330d('0x18')](_0x3801f4));_0x2a330f[_0x330d('0x19')]();}};};
\ No newline at end of file
+var _0x0b25=['error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','getMustacheRender','channel','chat','ChatWebsiteId','account','upperFirst','InteractionId','Message','create','then','info','[%s][MESSAGE]\x20%s','body','next','catch'];(function(_0x2a75d4,_0x5506e2){var _0x539682=function(_0xb7c33b){while(--_0xb7c33b){_0x2a75d4['push'](_0x2a75d4['shift']());}};_0x539682(++_0x5506e2);}(_0x0b25,0x155));var _0x50b2=function(_0x2aa48b,_0x5a4446){_0x2aa48b=_0x2aa48b-0x0;var _0x48caf8=_0x0b25[_0x2aa48b];return _0x48caf8;};'use strict';var _=require(_0x50b2('0x0'));var utils=require(_0x50b2('0x1'));var logger=require(_0x50b2('0x2'))(_0x50b2('0x3'));var rpc={'chatMessage':require(_0x50b2('0x4')),'openchannelMessage':require(_0x50b2('0x5')),'mailMessage':require(_0x50b2('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x50b2('0x7'))};exports['consequence']=function(_0x1df99a,_0x1b77e0){return function(_0x3cbc65){try{var _0x29278f={'body':utils[_0x50b2('0x8')](_0x1b77e0[0x0],this),'ContactId':this['contact']['id']};if(this[_0x50b2('0x9')]===_0x50b2('0xa')){_0x29278f[_0x50b2('0xb')]=this[_0x50b2('0xc')]['id'];}else{_0x29278f[_['upperFirst'](this[_0x50b2('0x9')])+'AccountId']=this[_0x50b2('0xc')]['id'];}_0x29278f[_[_0x50b2('0xd')](this['channel'])+_0x50b2('0xe')]=this['interaction']['id'];if(rpc[this['channel']+_0x50b2('0xf')]){return rpc[this[_0x50b2('0x9')]+_0x50b2('0xf')][_0x50b2('0x10')](_0x29278f)[_0x50b2('0x11')](function(_0x3ab9e6){logger[_0x50b2('0x12')](_0x50b2('0x13'),_0x1df99a,_0x29278f[_0x50b2('0x14')]);_0x3cbc65[_0x50b2('0x15')]();})[_0x50b2('0x16')](function(_0x4d6650){logger[_0x50b2('0x17')](_0x50b2('0x13'),_0x1df99a,JSON[_0x50b2('0x18')](_0x4d6650));_0x3cbc65['stop']();});}}catch(_0x3c3fd6){logger[_0x50b2('0x17')](_0x50b2('0x13'),_0x1df99a,JSON[_0x50b2('0x18')](_0x3c3fd6));_0x3cbc65[_0x50b2('0x19')]();}};};
\ No newline at end of file
index 40e20b6..8001ef5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45c6=['getMustacheRender','next','../../../../config/logger','routing','consequence','[%s][NOOP]\x20%s'];(function(_0x33b76e,_0x521078){var _0x3558fe=function(_0x127340){while(--_0x127340){_0x33b76e['push'](_0x33b76e['shift']());}};_0x3558fe(++_0x521078);}(_0x45c6,0x74));var _0x645c=function(_0x384858,_0x3a5c43){_0x384858=_0x384858-0x0;var _0x3a1d3b=_0x45c6[_0x384858];return _0x3a1d3b;};'use strict';var utils=require('./utils');var logger=require(_0x645c('0x0'))(_0x645c('0x1'));exports[_0x645c('0x2')]=function(_0x5e072c,_0x16cd2b){return function(_0x2a1724){try{logger['info'](_0x645c('0x3'),_0x5e072c,utils[_0x645c('0x4')](_0x16cd2b[0x0],this));_0x2a1724[_0x645c('0x5')]();}catch(_0x3a8962){logger['error'](_0x645c('0x3'),_0x5e072c,JSON['stringify'](_0x3a8962));_0x2a1724['stop']();}};};
\ No newline at end of file
+var _0xadcb=['../../../../config/logger','routing','info','[%s][NOOP]\x20%s','getMustacheRender','next','stop','./utils'];(function(_0x2deccf,_0x172359){var _0x273d60=function(_0x48b7bd){while(--_0x48b7bd){_0x2deccf['push'](_0x2deccf['shift']());}};_0x273d60(++_0x172359);}(_0xadcb,0xbf));var _0xbadc=function(_0x2cbc04,_0x1a059f){_0x2cbc04=_0x2cbc04-0x0;var _0x23c5ae=_0xadcb[_0x2cbc04];return _0x23c5ae;};'use strict';var utils=require(_0xbadc('0x0'));var logger=require(_0xbadc('0x1'))(_0xbadc('0x2'));exports['consequence']=function(_0x58b89d,_0xc2bbd7){return function(_0x5d0c97){try{logger[_0xbadc('0x3')](_0xbadc('0x4'),_0x58b89d,utils[_0xbadc('0x5')](_0xc2bbd7[0x0],this));_0x5d0c97[_0xbadc('0x6')]();}catch(_0x132253){logger['error'](_0xbadc('0x4'),_0x58b89d,JSON['stringify'](_0x132253));_0x5d0c97[_0xbadc('0x7')]();}};};
\ No newline at end of file
index 395712f..2c44b8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31a3=['end','[%s][QUEUE]\x20ROUTING\x20STOPPED','complete','[%s][QUEUE]\x20APPLICATION\x20END','close','next','strategy','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','stack','stop','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','joinAt','emit','clone','queue','push','InteractionId','format','pick','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','../../rpc/chatInteraction','../../rpc/faxInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','from','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','interaction','MessageId','message','chat','AccountId','WebsiteId','info','name','QueueReport','create','catch','error','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','Interaction','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','[%s][QUEUE]\x20%s','map','join','find','Queues','createQueue','atimeout','qtimeout','rules'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0x31a3,0x183));var _0x331a=function(_0x2ef9e2,_0x376185){_0x2ef9e2=_0x2ef9e2-0x0;var _0x2d4632=_0x31a3[_0x2ef9e2];return _0x2d4632;};'use strict';var schema=require(_0x331a('0x0'));var _=require(_0x331a('0x1'));var util=require(_0x331a('0x2'));var seqqueue=require(_0x331a('0x3'));var moment=require(_0x331a('0x4'));var Redis=require(_0x331a('0x5'));var config=require(_0x331a('0x6'));var logger=require(_0x331a('0x7'))(_0x331a('0x8'));var strategy=require(_0x331a('0x9'));config[_0x331a('0xa')]=_[_0x331a('0xb')](config[_0x331a('0xa')],{'host':_0x331a('0xc'),'port':0x18eb});var io=require(_0x331a('0xd'))(new Redis(config[_0x331a('0xa')]));var attributes=['id',_0x331a('0xe'),_0x331a('0xf'),'queue','from',_0x331a('0x10')];function emit(_0x27b061,_0xab84da,_0x7897f4){io['to'](_0x27b061)[_0x331a('0x11')](_0xab84da,_0x7897f4);}function emitChannelQueueInteraction(_0x375b2a,_0x27f46d,_0x1b976e,_0x4d5f29,_0x372e01,_0x1dc2b6,_0x212cdf,_0x159e51){var _0x226e0d=_[_0x331a('0x12')](_0x1b976e);_0x226e0d[_0x331a('0xe')]=_0x159e51;_0x226e0d[_0x331a('0x13')]=_0x27f46d;_0x226e0d[_0x331a('0xf')]=_0x4d5f29;_0x226e0d['id']=_0x372e01;if(_0x1dc2b6){attributes[_0x331a('0x14')](_['capitalize'](_0x375b2a)+_0x331a('0x15'));_0x212cdf[util[_0x331a('0x16')]('%sQueuesWaitingInteractions',_0x375b2a)][_0x372e01]=_[_0x331a('0x17')](_0x226e0d,attributes);}else{delete _0x212cdf[util['format'](_0x331a('0x18'),_0x375b2a)][_0x372e01];}emit(util[_0x331a('0x16')](_0x331a('0x19'),_0x375b2a,_0x27f46d),util[_0x331a('0x16')](_0x331a('0x1a'),_0x375b2a,_0x1dc2b6?_0x331a('0x1b'):_0x331a('0x1c')),_[_0x331a('0x17')](_0x226e0d,attributes));}var rpc={'openchannelQueueReport':require(_0x331a('0x1d')),'mailQueueReport':require(_0x331a('0x1e')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x331a('0x1f')),'faxQueueReport':require(_0x331a('0x20')),'whatsappQueueReport':require(_0x331a('0x21')),'chatInteraction':require(_0x331a('0x22')),'faxInteraction':require(_0x331a('0x23')),'mailInteraction':require('../../rpc/mailInteraction'),'openchannelInteraction':require(_0x331a('0x24')),'smsInteraction':require(_0x331a('0x25')),'whatsappInteraction':require(_0x331a('0x26'))};var queue=schema({'name':{'type':_0x331a('0x27'),'required':!![],'message':_0x331a('0x28')},'timeout':{'type':_0x331a('0x29'),'message':_0x331a('0x2a')}});function startRouting(_0x124fa5,_0x17b2d5,_0x1cb292,_0x194114){if(_0x124fa5&&_0x17b2d5&&_0x1cb292){_0x17b2d5[_0x331a('0x2b')]+=0x1;var _0x3558ca={'uniqueid':_0x124fa5,'from':_0x1cb292[_0x331a('0x2c')]?_0x1cb292[_0x331a('0x2c')][_0x331a('0x2d')]:'','joinAt':moment()[_0x331a('0x16')](_0x331a('0x2e')),'ContactId':_0x1cb292[_0x331a('0x2f')]?_0x1cb292[_0x331a('0x2f')]['id']:null,'ListId':_0x1cb292[_0x331a('0x30')]?_0x1cb292[_0x331a('0x30')]['id']:null};_0x3558ca[_[_0x331a('0x31')](_0x1cb292[_0x331a('0x32')])+_0x331a('0x33')]=_0x17b2d5['id']||null;_0x3558ca[_[_0x331a('0x31')](_0x1cb292[_0x331a('0x32')])+_0x331a('0x15')]=_0x1cb292[_0x331a('0x34')]?_0x1cb292[_0x331a('0x34')]['id']:null;_0x3558ca[_['upperFirst'](_0x1cb292[_0x331a('0x32')])+_0x331a('0x35')]=_0x1cb292[_0x331a('0x36')]?_0x1cb292[_0x331a('0x36')]['id']:null;_0x3558ca[_[_0x331a('0x31')](_0x1cb292[_0x331a('0x32')])+(_0x1cb292['channel']!==_0x331a('0x37')?_0x331a('0x38'):_0x331a('0x39'))]=_0x1cb292[_0x331a('0xf')]?_0x1cb292[_0x331a('0xf')]['id']:null;logger[_0x331a('0x3a')](util[_0x331a('0x16')]('[%s][START:QUEUE][NAME:%s]',_0x124fa5,_0x17b2d5[_0x331a('0x3b')]));emitChannelQueueInteraction(_0x1cb292[_0x331a('0x32')],_0x17b2d5['name'],_0x3558ca,_0x1cb292[_0x331a('0xf')][_0x331a('0x3b')],_0x1cb292[_0x331a('0x36')]['id'],!![],_0x194114,_0x17b2d5['id']);if(rpc[_0x1cb292[_0x331a('0x32')]+_0x331a('0x3c')]){return rpc[_0x1cb292[_0x331a('0x32')]+_0x331a('0x3c')][_0x331a('0x3d')](_0x3558ca)[_0x331a('0x3e')](function(_0x7a9aa7){logger[_0x331a('0x3f')](_0x331a('0x40'),_0x7a9aa7);});}}}function stopRouting(_0x3f2763,_0x503043,_0x18b08f,_0x20fd29){if(_0x3f2763&&_0x503043){_0x503043[_0x331a('0x2b')]-=0x1;var _0x154b06={'leaveAt':moment()[_0x331a('0x16')](_0x331a('0x2e')),'acceptAt':moment()[_0x331a('0x16')](_0x331a('0x2e')),'reason':_0x331a('0x41')};logger['info'](util['format'](_0x331a('0x42'),_0x3f2763,_0x503043[_0x331a('0x3b')]));emitChannelQueueInteraction(_0x18b08f[_0x331a('0x32')],_0x503043[_0x331a('0x3b')],_0x18b08f[_0x331a('0x2c')],_0x18b08f[_0x331a('0xf')][_0x331a('0x3b')],_0x18b08f[_0x331a('0x36')]['id'],![],_0x20fd29,_0x503043['id']);return rpc[_0x18b08f[_0x331a('0x32')]+_0x331a('0x43')][_0x331a('0x44')](_0x18b08f['interaction']['id'],{'queueId':_0x503043['id']})['then'](function(){if(rpc[_0x18b08f[_0x331a('0x32')]+_0x331a('0x3c')]){return rpc[_0x18b08f[_0x331a('0x32')]+_0x331a('0x3c')]['update'](_0x3f2763,_0x154b06)['catch'](function(_0x2c981f){logger[_0x331a('0x3f')](_0x331a('0x45'),_0x2c981f);});}});}}function endRouting(_0x1e9210,_0x415a7f,_0x17b9f5,_0xa3b7f){if(_0x1e9210&&_0x415a7f){_0x415a7f['waiting']-=0x1;var _0x23d17e={'leaveAt':moment()[_0x331a('0x16')](_0x331a('0x2e')),'exitAt':moment()[_0x331a('0x16')](_0x331a('0x2e')),'reason':_0x331a('0x46')};logger['info'](util[_0x331a('0x16')](_0x331a('0x47'),_0x1e9210,_0x415a7f[_0x331a('0x3b')]));emitChannelQueueInteraction(_0x17b9f5[_0x331a('0x32')],_0x415a7f['name'],_0x17b9f5[_0x331a('0x2c')],_0x17b9f5['account'][_0x331a('0x3b')],_0x17b9f5[_0x331a('0x36')]['id'],![],_0xa3b7f);if(rpc[_0x17b9f5[_0x331a('0x32')]+'QueueReport']){return rpc[_0x17b9f5[_0x331a('0x32')]+'QueueReport'][_0x331a('0x44')](_0x1e9210,_0x23d17e)[_0x331a('0x3e')](function(_0x674c45){logger['error'](_0x331a('0x45'),_0x674c45);});}}}function handleFindQueue(_0x209208){return function(_0x3b8b55){return _0x3b8b55[_0x331a('0x3b')][_0x331a('0x48')]()===_0x209208[_0x331a('0x48')]();};}exports[_0x331a('0x49')]=function(_0x58cf4a,_0x1f1956,_0x12a090,_0x14bb74){return function(_0x26613f){try{var _0x303dbf={'name':_0x1f1956[0x0],'timeout':_0x1f1956[0x1]};var _0xfe70b2=queue[_0x331a('0x0')](_0x303dbf,{'typecast':!![]});if(_0xfe70b2['length']){logger[_0x331a('0x3f')](_0x331a('0x4a'),_0x58cf4a,_[_0x331a('0x4b')](_0xfe70b2,_0x331a('0x36'))[_0x331a('0x4c')](',\x20'));_0x26613f['stop']();}else{var _0x4c5cc4=_[_0x331a('0x4d')](_0x12a090[_0x14bb74['channel']+_0x331a('0x4e')],handleFindQueue(_0x303dbf[_0x331a('0x3b')]));if(_0x4c5cc4){startRouting(_0x58cf4a,_0x4c5cc4,_0x14bb74,_0x12a090);var _0x19126a=(_0x4c5cc4[_0x331a('0x46')]||0xa)*0x3e8;var _0x171733=(_0x303dbf[_0x331a('0x46')]||0x14)*0x3e8;var _0x3e4393;if(_0x19126a>_0x171733){_0x171733=_0x19126a;}var _0x29fb4d=seqqueue[_0x331a('0x4f')](_0x19126a);_0x29fb4d['id']=_0x58cf4a;_0x29fb4d[_0x331a('0x50')]=_0x19126a;_0x29fb4d[_0x331a('0x51')]=_0x171733;_0x29fb4d[_0x331a('0x32')]=_0x14bb74['channel'];_0x12a090[_0x331a('0x52')][_0x58cf4a]['on'](_0x331a('0x53'),function(){logger[_0x331a('0x3a')](_0x331a('0x54'),_0x58cf4a);stopRouting(_0x58cf4a,_0x4c5cc4,_0x14bb74,_0x12a090);clearTimeout(_0x3e4393);_0x3e4393=undefined;_0x29fb4d['close'](!![]);if(_0x12a090[_0x331a('0x52')][_0x58cf4a]){delete _0x12a090[_0x331a('0x52')][_0x58cf4a];}_0x26613f['stop']();});_0x12a090[_0x331a('0x52')][_0x58cf4a]['on'](_0x331a('0x55'),function(){if(_0x12a090[_0x331a('0x52')][_0x58cf4a]){delete _0x12a090[_0x331a('0x52')][_0x58cf4a];}});_0x3e4393=setTimeout(function(){logger['info'](_0x331a('0x56'),_0x58cf4a);endRouting(_0x58cf4a,_0x4c5cc4,_0x14bb74,_0x12a090);clearTimeout(_0x3e4393);_0x29fb4d[_0x331a('0x57')](!![]);_0x26613f[_0x331a('0x58')]();},_0x171733);switch(_0x4c5cc4[_0x331a('0x59')]){case _0x331a('0x5a'):strategy['rrmemory'](_0x29fb4d,_0x4c5cc4,_0x12a090,_0x14bb74);break;default:strategy['beepall'](_0x29fb4d,_0x4c5cc4,_0x12a090,_0x14bb74);}}else{logger[_0x331a('0x3f')](_0x331a('0x5b'),_0x58cf4a,_0x303dbf[_0x331a('0x3b')]);_0x26613f['stop']();}}}catch(_0x3a838c){logger[_0x331a('0x3f')]('[%s][QUEUE]\x20%s',_0x58cf4a,_0x3a838c[_0x331a('0x5c')]);_0x26613f[_0x331a('0x5d')]();}};};
\ No newline at end of file
+var _0x64b7=['list','channel','InteractionId','interaction','upperFirst','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','accepted','Interaction','update','update\x20queue\x20report','toLowerCase','consequence','length','map','join','Queues','timeout','createQueue','atimeout','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','rules','stop','[%s][QUEUE]\x20APPLICATION\x20END','next','rrmemory','beepall','stack','validate','lodash','util','seq-queue','moment','../../../../config/environment','../../../../config/logger','routing','defaults','redis','localhost','socket.io-emitter','queue_id','account','joinAt','emit','clone','push','capitalize','%sQueuesWaitingInteractions','pick','format','save','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','waiting','body','from','YYYY-MM-DD\x20HH:mm:ss','contact'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x64b7,0x78));var _0x764b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x64b7[_0x3dd15e];return _0x231fd0;};'use strict';var schema=require(_0x764b('0x0'));var _=require(_0x764b('0x1'));var util=require(_0x764b('0x2'));var seqqueue=require(_0x764b('0x3'));var moment=require(_0x764b('0x4'));var Redis=require('ioredis');var config=require(_0x764b('0x5'));var logger=require(_0x764b('0x6'))(_0x764b('0x7'));var strategy=require('./strategy');config['redis']=_[_0x764b('0x8')](config[_0x764b('0x9')],{'host':_0x764b('0xa'),'port':0x18eb});var io=require(_0x764b('0xb'))(new Redis(config[_0x764b('0x9')]));var attributes=['id',_0x764b('0xc'),_0x764b('0xd'),'queue','from',_0x764b('0xe')];function emit(_0x3dcf91,_0x1cec4c,_0x9e15d9){io['to'](_0x3dcf91)[_0x764b('0xf')](_0x1cec4c,_0x9e15d9);}function emitChannelQueueInteraction(_0x37e7b1,_0x584fc2,_0x57e337,_0x510390,_0x3ec2cb,_0x5215bf,_0x30f2d7,_0x3987c6){var _0x333b2d=_[_0x764b('0x10')](_0x57e337);_0x333b2d[_0x764b('0xc')]=_0x3987c6;_0x333b2d['queue']=_0x584fc2;_0x333b2d[_0x764b('0xd')]=_0x510390;_0x333b2d['id']=_0x3ec2cb;if(_0x5215bf){attributes[_0x764b('0x11')](_[_0x764b('0x12')](_0x37e7b1)+'InteractionId');_0x30f2d7[util['format'](_0x764b('0x13'),_0x37e7b1)][_0x3ec2cb]=_[_0x764b('0x14')](_0x333b2d,attributes);}else{delete _0x30f2d7[util[_0x764b('0x15')](_0x764b('0x13'),_0x37e7b1)][_0x3ec2cb];}emit(util[_0x764b('0x15')]('%s:queue:%s',_0x37e7b1,_0x584fc2),util[_0x764b('0x15')]('%s_queue_waiting_interaction:%s',_0x37e7b1,_0x5215bf?_0x764b('0x16'):'remove'),_['pick'](_0x333b2d,attributes));}var rpc={'openchannelQueueReport':require(_0x764b('0x17')),'mailQueueReport':require(_0x764b('0x18')),'chatQueueReport':require(_0x764b('0x19')),'smsQueueReport':require(_0x764b('0x1a')),'faxQueueReport':require(_0x764b('0x1b')),'whatsappQueueReport':require(_0x764b('0x1c')),'chatInteraction':require(_0x764b('0x1d')),'faxInteraction':require('../../rpc/faxInteraction'),'mailInteraction':require(_0x764b('0x1e')),'openchannelInteraction':require(_0x764b('0x1f')),'smsInteraction':require(_0x764b('0x20')),'whatsappInteraction':require(_0x764b('0x21'))};var queue=schema({'name':{'type':_0x764b('0x22'),'required':!![],'message':_0x764b('0x23')},'timeout':{'type':_0x764b('0x24'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x20b994,_0x5eb4bf,_0x52ac82,_0x2ee69e){if(_0x20b994&&_0x5eb4bf&&_0x52ac82){_0x5eb4bf[_0x764b('0x25')]+=0x1;var _0x5bb323={'uniqueid':_0x20b994,'from':_0x52ac82['body']?_0x52ac82[_0x764b('0x26')][_0x764b('0x27')]:'','joinAt':moment()[_0x764b('0x15')](_0x764b('0x28')),'ContactId':_0x52ac82['contact']?_0x52ac82[_0x764b('0x29')]['id']:null,'ListId':_0x52ac82[_0x764b('0x2a')]?_0x52ac82[_0x764b('0x2a')]['id']:null};_0x5bb323[_['upperFirst'](_0x52ac82[_0x764b('0x2b')])+'QueueId']=_0x5eb4bf['id']||null;_0x5bb323[_['upperFirst'](_0x52ac82[_0x764b('0x2b')])+_0x764b('0x2c')]=_0x52ac82[_0x764b('0x2d')]?_0x52ac82['interaction']['id']:null;_0x5bb323[_[_0x764b('0x2e')](_0x52ac82[_0x764b('0x2b')])+_0x764b('0x2f')]=_0x52ac82[_0x764b('0x30')]?_0x52ac82[_0x764b('0x30')]['id']:null;_0x5bb323[_[_0x764b('0x2e')](_0x52ac82['channel'])+(_0x52ac82[_0x764b('0x2b')]!==_0x764b('0x31')?_0x764b('0x32'):'WebsiteId')]=_0x52ac82[_0x764b('0xd')]?_0x52ac82[_0x764b('0xd')]['id']:null;logger[_0x764b('0x33')](util[_0x764b('0x15')](_0x764b('0x34'),_0x20b994,_0x5eb4bf['name']));emitChannelQueueInteraction(_0x52ac82[_0x764b('0x2b')],_0x5eb4bf[_0x764b('0x35')],_0x5bb323,_0x52ac82['account'][_0x764b('0x35')],_0x52ac82['message']['id'],!![],_0x2ee69e,_0x5eb4bf['id']);if(rpc[_0x52ac82['channel']+_0x764b('0x36')]){return rpc[_0x52ac82['channel']+_0x764b('0x36')][_0x764b('0x37')](_0x5bb323)[_0x764b('0x38')](function(_0x1fefdc){logger[_0x764b('0x39')](_0x764b('0x3a'),_0x1fefdc);});}}}function stopRouting(_0x5a2484,_0x51b522,_0xd85795,_0x3d7846){if(_0x5a2484&&_0x51b522){_0x51b522[_0x764b('0x25')]-=0x1;var _0x4dc9fc={'leaveAt':moment()[_0x764b('0x15')](_0x764b('0x28')),'acceptAt':moment()[_0x764b('0x15')](_0x764b('0x28')),'reason':_0x764b('0x3b')};logger[_0x764b('0x33')](util['format']('[%s][STOP:QUEUE][NAME:%s]',_0x5a2484,_0x51b522[_0x764b('0x35')]));emitChannelQueueInteraction(_0xd85795['channel'],_0x51b522[_0x764b('0x35')],_0xd85795['body'],_0xd85795[_0x764b('0xd')]['name'],_0xd85795['message']['id'],![],_0x3d7846,_0x51b522['id']);return rpc[_0xd85795['channel']+_0x764b('0x3c')][_0x764b('0x3d')](_0xd85795[_0x764b('0x2d')]['id'],{'queueId':_0x51b522['id']})['then'](function(){if(rpc[_0xd85795[_0x764b('0x2b')]+_0x764b('0x36')]){return rpc[_0xd85795[_0x764b('0x2b')]+'QueueReport']['update'](_0x5a2484,_0x4dc9fc)[_0x764b('0x38')](function(_0x40873c){logger[_0x764b('0x39')]('update\x20queue\x20report',_0x40873c);});}});}}function endRouting(_0x2e8b36,_0x3cdbde,_0x56f904,_0x2eb571){if(_0x2e8b36&&_0x3cdbde){_0x3cdbde['waiting']-=0x1;var _0xd6787b={'leaveAt':moment()[_0x764b('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0x764b('0x15')](_0x764b('0x28')),'reason':'timeout'};logger[_0x764b('0x33')](util[_0x764b('0x15')]('[%s][END:QUEUE][NAME:%s]',_0x2e8b36,_0x3cdbde['name']));emitChannelQueueInteraction(_0x56f904[_0x764b('0x2b')],_0x3cdbde[_0x764b('0x35')],_0x56f904[_0x764b('0x26')],_0x56f904['account'][_0x764b('0x35')],_0x56f904[_0x764b('0x30')]['id'],![],_0x2eb571);if(rpc[_0x56f904[_0x764b('0x2b')]+_0x764b('0x36')]){return rpc[_0x56f904[_0x764b('0x2b')]+'QueueReport']['update'](_0x2e8b36,_0xd6787b)[_0x764b('0x38')](function(_0x573793){logger[_0x764b('0x39')](_0x764b('0x3e'),_0x573793);});}}}function handleFindQueue(_0x42c6e1){return function(_0xd314ac){return _0xd314ac[_0x764b('0x35')][_0x764b('0x3f')]()===_0x42c6e1['toLowerCase']();};}exports[_0x764b('0x40')]=function(_0x21c69e,_0x596da9,_0xc8099a,_0x1b6c67){return function(_0x358885){try{var _0x152e7d={'name':_0x596da9[0x0],'timeout':_0x596da9[0x1]};var _0x1dcedd=queue['validate'](_0x152e7d,{'typecast':!![]});if(_0x1dcedd[_0x764b('0x41')]){logger[_0x764b('0x39')]('[%s][QUEUE]\x20%s',_0x21c69e,_[_0x764b('0x42')](_0x1dcedd,'message')[_0x764b('0x43')](',\x20'));_0x358885['stop']();}else{var _0xe76063=_['find'](_0xc8099a[_0x1b6c67[_0x764b('0x2b')]+_0x764b('0x44')],handleFindQueue(_0x152e7d[_0x764b('0x35')]));if(_0xe76063){startRouting(_0x21c69e,_0xe76063,_0x1b6c67,_0xc8099a);var _0x3fc5a5=(_0xe76063[_0x764b('0x45')]||0xa)*0x3e8;var _0x3df2f3=(_0x152e7d[_0x764b('0x45')]||0x14)*0x3e8;var _0x1e8dd6;if(_0x3fc5a5>_0x3df2f3){_0x3df2f3=_0x3fc5a5;}var _0x465709=seqqueue[_0x764b('0x46')](_0x3fc5a5);_0x465709['id']=_0x21c69e;_0x465709[_0x764b('0x47')]=_0x3fc5a5;_0x465709['qtimeout']=_0x3df2f3;_0x465709[_0x764b('0x2b')]=_0x1b6c67['channel'];_0xc8099a['rules'][_0x21c69e]['on']('end',function(){logger[_0x764b('0x33')](_0x764b('0x48'),_0x21c69e);stopRouting(_0x21c69e,_0xe76063,_0x1b6c67,_0xc8099a);clearTimeout(_0x1e8dd6);_0x1e8dd6=undefined;_0x465709[_0x764b('0x49')](!![]);if(_0xc8099a[_0x764b('0x4a')][_0x21c69e]){delete _0xc8099a[_0x764b('0x4a')][_0x21c69e];}_0x358885[_0x764b('0x4b')]();});_0xc8099a[_0x764b('0x4a')][_0x21c69e]['on']('complete',function(){if(_0xc8099a[_0x764b('0x4a')][_0x21c69e]){delete _0xc8099a[_0x764b('0x4a')][_0x21c69e];}});_0x1e8dd6=setTimeout(function(){logger[_0x764b('0x33')](_0x764b('0x4c'),_0x21c69e);endRouting(_0x21c69e,_0xe76063,_0x1b6c67,_0xc8099a);clearTimeout(_0x1e8dd6);_0x465709['close'](!![]);_0x358885[_0x764b('0x4d')]();},_0x3df2f3);switch(_0xe76063['strategy']){case _0x764b('0x4e'):strategy[_0x764b('0x4e')](_0x465709,_0xe76063,_0xc8099a,_0x1b6c67);break;default:strategy[_0x764b('0x4f')](_0x465709,_0xe76063,_0xc8099a,_0x1b6c67);}}else{logger[_0x764b('0x39')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x21c69e,_0x152e7d[_0x764b('0x35')]);_0x358885[_0x764b('0x4b')]();}}}catch(_0x555444){logger['error']('[%s][QUEUE]\x20%s',_0x21c69e,_0x555444[_0x764b('0x50')]);_0x358885['stop']();}};};
\ No newline at end of file
index 17f3c29..af04a43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0bb=['RINGING','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','busyQueue','removeWaitingNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','routing','notificationId','agent','realtime','squeue','push','bind','handleTimeout','timeout','drained','prototype','handleRun','handleDrained','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','debug','forcedOwnership','isAgentAvailable','channel','busy','saveWaitingNotification','showNotification','writeLog'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x47a491,_0x45e171){_0x47a491=_0x47a491-0x0;var _0x3b176b=_0xd0bb[_0x47a491];return _0x3b176b;};'use strict';var _=require(_0xbd0b('0x0'));var uuid=require(_0xbd0b('0x1'));var util=require(_0xbd0b('0x2'));var logger=require('../../../../../config/logger')(_0xbd0b('0x3'));var Agent=function(_0x4ab08f,_0x39b03a,_0x1f6ec3,_0x53e6ce){this[_0xbd0b('0x4')]=uuid['v4']();this['squeue']=_0x4ab08f;this[_0xbd0b('0x5')]=_0x39b03a;this[_0xbd0b('0x6')]=_0x1f6ec3;this[_0xbd0b('0x3')]=_0x53e6ce;this[_0xbd0b('0x7')][_0xbd0b('0x8')](this['handleRun'][_0xbd0b('0x9')](this),this[_0xbd0b('0xa')][_0xbd0b('0x9')](this));this[_0xbd0b('0x7')]['on'](_0xbd0b('0xb'),this['handleTimeout']['bind'](this));this[_0xbd0b('0x7')]['on'](_0xbd0b('0xc'),this['handleDrained'][_0xbd0b('0x9')](this));};Agent[_0xbd0b('0xd')]['push']=function(){this[_0xbd0b('0x7')][_0xbd0b('0x8')](this[_0xbd0b('0xe')][_0xbd0b('0x9')](this),this[_0xbd0b('0xa')][_0xbd0b('0x9')](this));};Agent[_0xbd0b('0xd')][_0xbd0b('0xf')]=function(){this[_0xbd0b('0xa')](!![]);};Agent[_0xbd0b('0xd')][_0xbd0b('0xe')]=function(){logger['debug'](_0xbd0b('0x10'),this['squeue']['id'],this['agent']['id']);if(_[_0xbd0b('0x11')](this[_0xbd0b('0x6')][_0xbd0b('0x12')][this[_0xbd0b('0x5')]['id']])){logger[_0xbd0b('0x13')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0xbd0b('0x5')]['id']);setTimeout(this[_0xbd0b('0x8')][_0xbd0b('0x9')](this),0x3e8);}else{if(this[_0xbd0b('0x3')][_0xbd0b('0x14')]||util[_0xbd0b('0x15')](this['squeue']['id'],this[_0xbd0b('0x6')]['agents'][this[_0xbd0b('0x5')]['id']],this[_0xbd0b('0x7')][_0xbd0b('0x16')],![])){this[_0xbd0b('0x6')]['agents'][this[_0xbd0b('0x5')]['id']][_0xbd0b('0x17')]=!![];this[_0xbd0b('0x6')]['agents'][this[_0xbd0b('0x5')]['id']]['busyQueue']=undefined;util[_0xbd0b('0x18')](this[_0xbd0b('0x6')],this[_0xbd0b('0x3')],this[_0xbd0b('0x5')],this[_0xbd0b('0x7')]['channel']);util[_0xbd0b('0x19')](this['notificationId'],this[_0xbd0b('0x7')]['id'],this[_0xbd0b('0x6')][_0xbd0b('0x12')][this[_0xbd0b('0x5')]['id']],null,this[_0xbd0b('0x3')]);util[_0xbd0b('0x1a')](this['squeue']['id'],this[_0xbd0b('0x6')][_0xbd0b('0x12')][this[_0xbd0b('0x5')]['id']],_0xbd0b('0x1b')+(this[_0xbd0b('0x3')][_0xbd0b('0x14')]?':FORCED':''));}else{logger[_0xbd0b('0x13')](_0xbd0b('0x1c'),this[_0xbd0b('0x7')]['id'],this['agent']['id']);setTimeout(this['push'][_0xbd0b('0x9')](this),0x3e8);}}};Agent[_0xbd0b('0xd')][_0xbd0b('0xa')]=function(_0xf4ba04){if(_[_0xbd0b('0x11')](this[_0xbd0b('0x6')][_0xbd0b('0x12')][this['agent']['id']])){return logger[_0xbd0b('0x13')](_0xbd0b('0x1d'),this['squeue']['id'],this['agent']['id']);}else{logger[_0xbd0b('0x13')](_0xbd0b('0x1e'),this['squeue']['id'],this[_0xbd0b('0x5')]['id']);util[_0xbd0b('0x1f')](this[_0xbd0b('0x4')],this[_0xbd0b('0x7')]['id'],this[_0xbd0b('0x6')][_0xbd0b('0x12')][this['agent']['id']],null,this[_0xbd0b('0x3')]);this[_0xbd0b('0x6')][_0xbd0b('0x12')][this[_0xbd0b('0x5')]['id']][_0xbd0b('0x17')]=![];this[_0xbd0b('0x6')][_0xbd0b('0x12')][this[_0xbd0b('0x5')]['id']][_0xbd0b('0x20')]=undefined;util[_0xbd0b('0x21')](this[_0xbd0b('0x6')],this[_0xbd0b('0x3')],this[_0xbd0b('0x5')],this[_0xbd0b('0x7')]['channel']);util[_0xbd0b('0x1a')](this[_0xbd0b('0x7')]['id'],this['realtime'][_0xbd0b('0x12')][this[_0xbd0b('0x5')]['id']],_0xf4ba04?_0xbd0b('0x22'):_0xbd0b('0x23'));}if(!_0xf4ba04){setTimeout(this[_0xbd0b('0x8')][_0xbd0b('0x9')](this),0x3e8);}};function agent(_0x4c8ff5,_0x327425,_0x11cf5a,_0x3b5098){return new Agent(_0x4c8ff5,_0x327425,_0x11cf5a,_0x3b5098);}module[_0xbd0b('0x24')]=agent;
\ No newline at end of file
+var _0x24ca=['busy','busyQueue','saveWaitingNotification','showNotification','RINGING','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','removeWaitingNotification','writeLog','STOP','exports','lodash','../../../../../config/logger','notificationId','squeue','agent','push','handleRun','bind','handleTimeout','prototype','handleDrained','[%s][AGENT]\x20try\x20with\x20%s','realtime','agents','debug','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','routing','forcedOwnership','isAgentAvailable','channel'];(function(_0x646a49,_0x12b079){var _0x360989=function(_0x45bcb5){while(--_0x45bcb5){_0x646a49['push'](_0x646a49['shift']());}};_0x360989(++_0x12b079);}(_0x24ca,0x8c));var _0xa24c=function(_0x1911ed,_0x4e8c73){_0x1911ed=_0x1911ed-0x0;var _0x11edaa=_0x24ca[_0x1911ed];return _0x11edaa;};'use strict';var _=require(_0xa24c('0x0'));var uuid=require('uuid');var util=require('./util');var logger=require(_0xa24c('0x1'))('routing');var Agent=function(_0x155c49,_0x1efd39,_0xe69cdd,_0x49f276){this[_0xa24c('0x2')]=uuid['v4']();this[_0xa24c('0x3')]=_0x155c49;this[_0xa24c('0x4')]=_0x1efd39;this['realtime']=_0xe69cdd;this['routing']=_0x49f276;this['squeue'][_0xa24c('0x5')](this[_0xa24c('0x6')][_0xa24c('0x7')](this),this[_0xa24c('0x8')][_0xa24c('0x7')](this));this[_0xa24c('0x3')]['on']('timeout',this[_0xa24c('0x8')][_0xa24c('0x7')](this));this[_0xa24c('0x3')]['on']('drained',this['handleDrained'][_0xa24c('0x7')](this));};Agent[_0xa24c('0x9')][_0xa24c('0x5')]=function(){this[_0xa24c('0x3')][_0xa24c('0x5')](this[_0xa24c('0x6')]['bind'](this),this['handleTimeout']['bind'](this));};Agent[_0xa24c('0x9')][_0xa24c('0xa')]=function(){this[_0xa24c('0x8')](!![]);};Agent[_0xa24c('0x9')][_0xa24c('0x6')]=function(){logger['debug'](_0xa24c('0xb'),this['squeue']['id'],this['agent']['id']);if(_['isNil'](this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']])){logger[_0xa24c('0xe')](_0xa24c('0xf'),this[_0xa24c('0x3')]['id'],this[_0xa24c('0x4')]['id']);setTimeout(this[_0xa24c('0x5')][_0xa24c('0x7')](this),0x3e8);}else{if(this[_0xa24c('0x10')][_0xa24c('0x11')]||util[_0xa24c('0x12')](this[_0xa24c('0x3')]['id'],this[_0xa24c('0xc')]['agents'][this[_0xa24c('0x4')]['id']],this['squeue'][_0xa24c('0x13')],![])){this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']][_0xa24c('0x14')]=!![];this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']][_0xa24c('0x15')]=undefined;util[_0xa24c('0x16')](this[_0xa24c('0xc')],this['routing'],this['agent'],this[_0xa24c('0x3')][_0xa24c('0x13')]);util[_0xa24c('0x17')](this[_0xa24c('0x2')],this[_0xa24c('0x3')]['id'],this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']],null,this[_0xa24c('0x10')]);util['writeLog'](this[_0xa24c('0x3')]['id'],this['realtime'][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']],_0xa24c('0x18')+(this[_0xa24c('0x10')]['forcedOwnership']?':FORCED':''));}else{logger['debug']('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0xa24c('0x3')]['id'],this[_0xa24c('0x4')]['id']);setTimeout(this[_0xa24c('0x5')][_0xa24c('0x7')](this),0x3e8);}}};Agent[_0xa24c('0x9')]['handleTimeout']=function(_0x5c8113){if(_[_0xa24c('0x19')](this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']])){return logger[_0xa24c('0xe')](_0xa24c('0xf'),this[_0xa24c('0x3')]['id'],this[_0xa24c('0x4')]['id']);}else{logger[_0xa24c('0xe')](_0xa24c('0x1a'),this['squeue']['id'],this[_0xa24c('0x4')]['id']);util[_0xa24c('0x1b')](this['notificationId'],this[_0xa24c('0x3')]['id'],this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']],null,this[_0xa24c('0x10')]);this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']][_0xa24c('0x14')]=![];this[_0xa24c('0xc')]['agents'][this['agent']['id']]['busyQueue']=undefined;util[_0xa24c('0x1c')](this['realtime'],this[_0xa24c('0x10')],this[_0xa24c('0x4')],this[_0xa24c('0x3')]['channel']);util[_0xa24c('0x1d')](this[_0xa24c('0x3')]['id'],this[_0xa24c('0xc')]['agents'][this[_0xa24c('0x4')]['id']],_0x5c8113?_0xa24c('0x1e'):'TIMEOUT');}if(!_0x5c8113){setTimeout(this[_0xa24c('0x5')][_0xa24c('0x7')](this),0x3e8);}};function agent(_0xd837dc,_0x570d7c,_0x45c429,_0x2c63da){return new Agent(_0xd837dc,_0x570d7c,_0x45c429,_0x2c63da);}module[_0xa24c('0x1f')]=agent;
\ No newline at end of file
index ae572ca..152c3fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2125=['queue','Agents','length','realtime','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','busy','busyQueue','name','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','STOP','TIMEOUT','removeWaitingNotification','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','push','handleRun','handleTimeout','timeout','squeue','drained','prototype','bind','handleDrained','isNil'];(function(_0x4ba7f7,_0x195477){var _0x4b25ae=function(_0x5c91d6){while(--_0x5c91d6){_0x4ba7f7['push'](_0x4ba7f7['shift']());}};_0x4b25ae(++_0x195477);}(_0x2125,0xbc));var _0x5212=function(_0x4dd7f8,_0x21f412){_0x4dd7f8=_0x4dd7f8-0x0;var _0x4c82dc=_0x2125[_0x4dd7f8];return _0x4c82dc;};'use strict';var _=require(_0x5212('0x0'));var uuid=require(_0x5212('0x1'));var util=require(_0x5212('0x2'));var logger=require(_0x5212('0x3'))(_0x5212('0x4'));var Beepall=function(_0x10124e,_0x2859a0,_0x42be67,_0x261185){this[_0x5212('0x5')]=uuid['v4']();this['squeue']=_0x10124e;this['queue']=_0x2859a0;this['realtime']=_0x42be67;this[_0x5212('0x4')]=_0x261185;this['squeue'][_0x5212('0x6')](this[_0x5212('0x7')]['bind'](this),this[_0x5212('0x8')]['bind'](this));this['squeue']['on'](_0x5212('0x9'),this['handleTimeout']['bind'](this));this[_0x5212('0xa')]['on'](_0x5212('0xb'),this['handleDrained']['bind'](this));};Beepall[_0x5212('0xc')][_0x5212('0x6')]=function(){this[_0x5212('0xa')]['push'](this[_0x5212('0x7')][_0x5212('0xd')](this),this['handleTimeout'][_0x5212('0xd')](this));};Beepall[_0x5212('0xc')][_0x5212('0xe')]=function(){this[_0x5212('0x8')](!![]);};Beepall[_0x5212('0xc')]['handleRun']=function(){var _0x357332=!![];if(!_[_0x5212('0xf')](this[_0x5212('0x10')])&&!_[_0x5212('0xf')](this['queue'][_0x5212('0x11')])&&this['queue'][_0x5212('0x11')][_0x5212('0x12')]>0x0){for(var _0x5ef12d=0x0,_0x38eb7f;_0x5ef12d<this['queue']['Agents']['length'];_0x5ef12d+=0x1){_0x38eb7f=this['queue'][_0x5212('0x11')][_0x5ef12d]['id'];if(_[_0x5212('0xf')](this[_0x5212('0x13')][_0x5212('0x14')][_0x38eb7f])){logger[_0x5212('0x15')](_0x5212('0x16'),this[_0x5212('0xa')]['id'],_0x38eb7f);}else{if(util[_0x5212('0x17')](this[_0x5212('0xa')]['id'],this[_0x5212('0x13')][_0x5212('0x14')][_0x38eb7f],this[_0x5212('0xa')][_0x5212('0x18')],!![])){_0x357332=![];util[_0x5212('0x19')](this['squeue']['id'],this['realtime']['agents'][_0x38eb7f],'RINGING');this[_0x5212('0x13')][_0x5212('0x14')][_0x38eb7f][_0x5212('0x1a')]=!![];this[_0x5212('0x13')][_0x5212('0x14')][_0x38eb7f][_0x5212('0x1b')]=this['queue'][_0x5212('0x1c')];util['saveWaitingNotification'](this[_0x5212('0x13')],this[_0x5212('0x4')],this[_0x5212('0x10')][_0x5212('0x11')][_0x5ef12d],this[_0x5212('0xa')][_0x5212('0x18')]);util['showNotification'](this['notificationId'],this['squeue']['id'],this['realtime'][_0x5212('0x14')][_0x38eb7f],this[_0x5212('0x10')],this['routing']);}}}if(_0x357332){logger[_0x5212('0x15')](_0x5212('0x1d'),this[_0x5212('0xa')]['id']);setTimeout(this[_0x5212('0x6')]['bind'](this),0x3e8);}}else{logger[_0x5212('0x15')](_0x5212('0x1e'),this[_0x5212('0xa')]['id']);setTimeout(this[_0x5212('0x6')]['bind'](this),0x3e8);}};Beepall[_0x5212('0xc')][_0x5212('0x8')]=function(_0x37f045){if(!_[_0x5212('0xf')](this[_0x5212('0x10')])&&!_[_0x5212('0xf')](this[_0x5212('0x10')][_0x5212('0x11')])){for(var _0x5dfb2f=0x0,_0x36e8df;_0x5dfb2f<this[_0x5212('0x10')]['Agents'][_0x5212('0x12')];_0x5dfb2f+=0x1){_0x36e8df=this[_0x5212('0x10')][_0x5212('0x11')][_0x5dfb2f]['id'];if(_[_0x5212('0xf')](this[_0x5212('0x13')][_0x5212('0x14')][_0x36e8df])){logger[_0x5212('0x15')](_0x5212('0x16'),this[_0x5212('0xa')]['id'],_0x36e8df);}else{util['hideNotification'](this[_0x5212('0x5')],this[_0x5212('0xa')]['id'],this['realtime'][_0x5212('0x14')][_0x36e8df],this['queue'],this[_0x5212('0x4')]);util[_0x5212('0x19')](this[_0x5212('0xa')]['id'],this[_0x5212('0x13')][_0x5212('0x14')][_0x36e8df],_0x37f045?_0x5212('0x1f'):_0x5212('0x20'));this[_0x5212('0x13')][_0x5212('0x14')][_0x36e8df][_0x5212('0x1a')]=![];this[_0x5212('0x13')][_0x5212('0x14')][_0x36e8df][_0x5212('0x1b')]=undefined;util[_0x5212('0x21')](this['realtime'],this[_0x5212('0x4')],this[_0x5212('0x13')][_0x5212('0x14')][_0x36e8df],this[_0x5212('0xa')][_0x5212('0x18')]);}}}if(!_0x37f045){setTimeout(this[_0x5212('0x6')][_0x5212('0xd')](this),0x3e8);}};function beepall(_0x3f6a9f,_0x151cda,_0x202d1d,_0x49ff49){return new Beepall(_0x3f6a9f,_0x151cda,_0x202d1d,_0x49ff49);}module['exports']=beepall;
\ No newline at end of file
+var _0x42fe=['Agents','length','isNil','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busy','busyQueue','saveWaitingNotification','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','debug','[%s][QUEUE]\x20EMPTY','hideNotification','writeLog','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','realtime','routing','push','bind','handleTimeout','timeout','handleDrained','prototype','queue'];(function(_0x14a513,_0x3239f){var _0x47236c=function(_0x394191){while(--_0x394191){_0x14a513['push'](_0x14a513['shift']());}};_0x47236c(++_0x3239f);}(_0x42fe,0x1b1));var _0xe42f=function(_0x55fa10,_0x555718){_0x55fa10=_0x55fa10-0x0;var _0x4155ca=_0x42fe[_0x55fa10];return _0x4155ca;};'use strict';var _=require(_0xe42f('0x0'));var uuid=require(_0xe42f('0x1'));var util=require(_0xe42f('0x2'));var logger=require(_0xe42f('0x3'))('routing');var Beepall=function(_0xec5fa8,_0x40efa4,_0x1cc6ca,_0x2671ce){this[_0xe42f('0x4')]=uuid['v4']();this[_0xe42f('0x5')]=_0xec5fa8;this['queue']=_0x40efa4;this[_0xe42f('0x6')]=_0x1cc6ca;this[_0xe42f('0x7')]=_0x2671ce;this[_0xe42f('0x5')][_0xe42f('0x8')](this['handleRun'][_0xe42f('0x9')](this),this[_0xe42f('0xa')][_0xe42f('0x9')](this));this['squeue']['on'](_0xe42f('0xb'),this['handleTimeout'][_0xe42f('0x9')](this));this[_0xe42f('0x5')]['on']('drained',this[_0xe42f('0xc')][_0xe42f('0x9')](this));};Beepall[_0xe42f('0xd')][_0xe42f('0x8')]=function(){this[_0xe42f('0x5')][_0xe42f('0x8')](this['handleRun']['bind'](this),this[_0xe42f('0xa')][_0xe42f('0x9')](this));};Beepall[_0xe42f('0xd')][_0xe42f('0xc')]=function(){this[_0xe42f('0xa')](!![]);};Beepall[_0xe42f('0xd')]['handleRun']=function(){var _0x515fcc=!![];if(!_['isNil'](this['queue'])&&!_['isNil'](this[_0xe42f('0xe')][_0xe42f('0xf')])&&this['queue']['Agents']['length']>0x0){for(var _0x238965=0x0,_0x4d7efe;_0x238965<this[_0xe42f('0xe')][_0xe42f('0xf')][_0xe42f('0x10')];_0x238965+=0x1){_0x4d7efe=this[_0xe42f('0xe')][_0xe42f('0xf')][_0x238965]['id'];if(_[_0xe42f('0x11')](this[_0xe42f('0x6')][_0xe42f('0x12')][_0x4d7efe])){logger['debug'](_0xe42f('0x13'),this[_0xe42f('0x5')]['id'],_0x4d7efe);}else{if(util[_0xe42f('0x14')](this[_0xe42f('0x5')]['id'],this[_0xe42f('0x6')]['agents'][_0x4d7efe],this[_0xe42f('0x5')][_0xe42f('0x15')],!![])){_0x515fcc=![];util['writeLog'](this['squeue']['id'],this[_0xe42f('0x6')][_0xe42f('0x12')][_0x4d7efe],'RINGING');this[_0xe42f('0x6')]['agents'][_0x4d7efe][_0xe42f('0x16')]=!![];this['realtime']['agents'][_0x4d7efe][_0xe42f('0x17')]=this['queue']['name'];util[_0xe42f('0x18')](this[_0xe42f('0x6')],this['routing'],this['queue'][_0xe42f('0xf')][_0x238965],this[_0xe42f('0x5')]['channel']);util[_0xe42f('0x19')](this['notificationId'],this[_0xe42f('0x5')]['id'],this[_0xe42f('0x6')][_0xe42f('0x12')][_0x4d7efe],this[_0xe42f('0xe')],this['routing']);}}}if(_0x515fcc){logger['debug'](_0xe42f('0x1a'),this[_0xe42f('0x5')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}}else{logger[_0xe42f('0x1b')](_0xe42f('0x1c'),this[_0xe42f('0x5')]['id']);setTimeout(this[_0xe42f('0x8')][_0xe42f('0x9')](this),0x3e8);}};Beepall['prototype'][_0xe42f('0xa')]=function(_0x426681){if(!_['isNil'](this[_0xe42f('0xe')])&&!_[_0xe42f('0x11')](this['queue'][_0xe42f('0xf')])){for(var _0x43ff9f=0x0,_0x3b2133;_0x43ff9f<this[_0xe42f('0xe')]['Agents']['length'];_0x43ff9f+=0x1){_0x3b2133=this[_0xe42f('0xe')][_0xe42f('0xf')][_0x43ff9f]['id'];if(_[_0xe42f('0x11')](this[_0xe42f('0x6')]['agents'][_0x3b2133])){logger[_0xe42f('0x1b')](_0xe42f('0x13'),this[_0xe42f('0x5')]['id'],_0x3b2133);}else{util[_0xe42f('0x1d')](this[_0xe42f('0x4')],this['squeue']['id'],this['realtime'][_0xe42f('0x12')][_0x3b2133],this[_0xe42f('0xe')],this[_0xe42f('0x7')]);util[_0xe42f('0x1e')](this[_0xe42f('0x5')]['id'],this[_0xe42f('0x6')][_0xe42f('0x12')][_0x3b2133],_0x426681?'STOP':'TIMEOUT');this['realtime']['agents'][_0x3b2133]['busy']=![];this[_0xe42f('0x6')]['agents'][_0x3b2133]['busyQueue']=undefined;util['removeWaitingNotification'](this['realtime'],this[_0xe42f('0x7')],this[_0xe42f('0x6')][_0xe42f('0x12')][_0x3b2133],this[_0xe42f('0x5')][_0xe42f('0x15')]);}}}if(!_0x426681){setTimeout(this[_0xe42f('0x8')][_0xe42f('0x9')](this),0x3e8);}};function beepall(_0x1e4e3f,_0x8c9f63,_0x265914,_0xcb565c){return new Beepall(_0x1e4e3f,_0x8c9f63,_0x265914,_0xcb565c);}module[_0xe42f('0x1f')]=beepall;
\ No newline at end of file
index e40c9e1..9b9c405 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4db0=['./beepall','./rrmemory'];(function(_0x3d6d00,_0x234f27){var _0x280edd=function(_0x1934d2){while(--_0x1934d2){_0x3d6d00['push'](_0x3d6d00['shift']());}};_0x280edd(++_0x234f27);}(_0x4db0,0xb7));var _0x04db=function(_0x3b76e9,_0x39efb2){_0x3b76e9=_0x3b76e9-0x0;var _0x43489c=_0x4db0[_0x3b76e9];return _0x43489c;};'use strict';module['exports']={'rrmemory':require(_0x04db('0x0')),'beepall':require(_0x04db('0x1')),'agent':require('./agent')};
\ No newline at end of file
+var _0x06a2=['exports','./rrmemory','./beepall','./agent'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0x06a2,0x78));var _0x206a=function(_0x44193a,_0x4b195c){_0x44193a=_0x44193a-0x0;var _0x519ca4=_0x06a2[_0x44193a];return _0x519ca4;};'use strict';module[_0x206a('0x0')]={'rrmemory':require(_0x206a('0x1')),'beepall':require(_0x206a('0x2')),'agent':require(_0x206a('0x3'))};
\ No newline at end of file
index ac6b2b2..47e4bf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b8c=['queue','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','channel','busy','busyQueue','name','saveWaitingNotification','writeLog','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','removeWaitingNotification','exports','lodash','uuid','../../../../../config/logger','routing','notificationId','squeue','realtime','intervals','push','handleRun','bind','handleTimeout','module','timeout','drained','prototype','handleDrained','isAgentAvailable','agents','agentId','debug','done'];(function(_0x468e21,_0x3ab1e3){var _0x10aa40=function(_0x42450f){while(--_0x42450f){_0x468e21['push'](_0x468e21['shift']());}};_0x10aa40(++_0x3ab1e3);}(_0x2b8c,0xd4));var _0xc2b8=function(_0x59950a,_0x1b95a3){_0x59950a=_0x59950a-0x0;var _0x504776=_0x2b8c[_0x59950a];return _0x504776;};'use strict';var rr=require('rr');var _=require(_0xc2b8('0x0'));var uuid=require(_0xc2b8('0x1'));var util=require('./util');var logger=require(_0xc2b8('0x2'))(_0xc2b8('0x3'));var RRMemory=function(_0x4d1c0c,_0x4ef61f,_0x1f8e0b,_0x3423fc){this[_0xc2b8('0x4')]=uuid['v4']();this[_0xc2b8('0x5')]=_0x4d1c0c;this['queue']=_0x4ef61f;this[_0xc2b8('0x6')]=_0x1f8e0b;this[_0xc2b8('0x3')]=_0x3423fc;this[_0xc2b8('0x7')]={};this[_0xc2b8('0x5')][_0xc2b8('0x8')](this[_0xc2b8('0x9')][_0xc2b8('0xa')](this),this[_0xc2b8('0xb')][_0xc2b8('0xa')](this),this[_0xc2b8('0xc')]);this[_0xc2b8('0x5')]['on'](_0xc2b8('0xd'),this['handleTimeout']['bind'](this));this[_0xc2b8('0x5')]['on'](_0xc2b8('0xe'),this['handleDrained'][_0xc2b8('0xa')](this));};RRMemory[_0xc2b8('0xf')][_0xc2b8('0x8')]=function(){this['squeue']['push'](this[_0xc2b8('0x9')]['bind'](this),this[_0xc2b8('0xb')]['bind'](this));};RRMemory[_0xc2b8('0xf')][_0xc2b8('0x10')]=function(){this[_0xc2b8('0xb')](!![]);};RRMemory[_0xc2b8('0xf')]['handleCheckReject']=function(_0x377dd3){if(util[_0xc2b8('0x11')](this[_0xc2b8('0x5')]['id'],this['realtime'][_0xc2b8('0x12')][this[_0xc2b8('0x13')]],this['squeue']['channel'],!![])){logger[_0xc2b8('0x14')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0xc2b8('0x5')]['id'],this[_0xc2b8('0x13')]);clearInterval(this[_0xc2b8('0x7')][this[_0xc2b8('0x13')]]);_0x377dd3[_0xc2b8('0x15')]();setTimeout(this[_0xc2b8('0x8')][_0xc2b8('0xa')](this),0x3e8);}};RRMemory['prototype'][_0xc2b8('0x9')]=function(_0x2b0be2){this[_0xc2b8('0x13')]=rr(this[_0xc2b8('0x16')][_0xc2b8('0x17')]);logger[_0xc2b8('0x14')](_0xc2b8('0x18'),this['squeue']['id'],this['agentId']);if(_[_0xc2b8('0x19')](this[_0xc2b8('0x6')][_0xc2b8('0x12')][this[_0xc2b8('0x13')]])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xc2b8('0x5')]['id'],this[_0xc2b8('0x13')]);_0x2b0be2[_0xc2b8('0x15')]();setTimeout(this[_0xc2b8('0x8')][_0xc2b8('0xa')](this),0x3e8);}else{if(util[_0xc2b8('0x11')](this[_0xc2b8('0x5')]['id'],this['realtime']['agents'][this[_0xc2b8('0x13')]],this[_0xc2b8('0x5')][_0xc2b8('0x1a')],!![])){this['realtime'][_0xc2b8('0x12')][this[_0xc2b8('0x13')]][_0xc2b8('0x1b')]=!![];this[_0xc2b8('0x6')][_0xc2b8('0x12')][this[_0xc2b8('0x13')]][_0xc2b8('0x1c')]=this['queue'][_0xc2b8('0x1d')];util[_0xc2b8('0x1e')](this['realtime'],this[_0xc2b8('0x3')],this[_0xc2b8('0x6')]['agents'][this[_0xc2b8('0x13')]],this[_0xc2b8('0x5')][_0xc2b8('0x1a')]);util['showNotification'](this['notificationId'],this[_0xc2b8('0x5')]['id'],this[_0xc2b8('0x6')]['agents'][this['agentId']],this[_0xc2b8('0x16')],this[_0xc2b8('0x3')]);util[_0xc2b8('0x1f')](this[_0xc2b8('0x5')]['id'],this[_0xc2b8('0x6')][_0xc2b8('0x12')][this[_0xc2b8('0x13')]],_0xc2b8('0x20'));this[_0xc2b8('0x7')][this['agentId']]=setInterval(this[_0xc2b8('0x21')][_0xc2b8('0xa')](this,_0x2b0be2),0x3e8);}else{logger['debug'](_0xc2b8('0x22'),this[_0xc2b8('0x5')]['id'],this[_0xc2b8('0x13')]);_0x2b0be2['done']();setTimeout(this[_0xc2b8('0x8')][_0xc2b8('0xa')](this),0x3e8);}}};RRMemory[_0xc2b8('0xf')]['handleTimeout']=function(_0x2f8699){logger[_0xc2b8('0x14')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this['squeue']['id'],this[_0xc2b8('0x13')]);if(_[_0xc2b8('0x19')](this[_0xc2b8('0x6')][_0xc2b8('0x12')][this['agentId']])){logger[_0xc2b8('0x14')](_0xc2b8('0x23'),this[_0xc2b8('0x5')]['id'],this[_0xc2b8('0x13')]);}else{clearInterval(this[_0xc2b8('0x7')][this[_0xc2b8('0x13')]]);util[_0xc2b8('0x24')](this[_0xc2b8('0x4')],this['squeue']['id'],this[_0xc2b8('0x6')][_0xc2b8('0x12')][this[_0xc2b8('0x13')]],this[_0xc2b8('0x16')],this[_0xc2b8('0x3')]);util[_0xc2b8('0x1f')](this[_0xc2b8('0x5')]['id'],this[_0xc2b8('0x6')][_0xc2b8('0x12')][this[_0xc2b8('0x13')]],'TIMEOUT');this[_0xc2b8('0x6')][_0xc2b8('0x12')][this['agentId']]['busy']=![];this[_0xc2b8('0x6')]['agents'][this[_0xc2b8('0x13')]][_0xc2b8('0x1c')]=undefined;util[_0xc2b8('0x25')](this[_0xc2b8('0x6')],this[_0xc2b8('0x3')],this[_0xc2b8('0x6')]['agents'][this[_0xc2b8('0x13')]],this['squeue']['channel']);}if(!_0x2f8699){setTimeout(this[_0xc2b8('0x8')][_0xc2b8('0xa')](this),0x3e8);}};function rrmemory(_0x3419dc,_0x2642ac,_0x321a31,_0x5392c0){return new RRMemory(_0x3419dc,_0x2642ac,_0x321a31,_0x5392c0);}module[_0xc2b8('0x26')]=rrmemory;
\ No newline at end of file
+var _0xf680=['debug','intervals','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','busy','busyQueue','name','saveWaitingNotification','channel','showNotification','writeLog','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','TIMEOUT','removeWaitingNotification','lodash','uuid','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','handleRun','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','isAgentAvailable','agents','agentId'];(function(_0x31e04c,_0x13b624){var _0x180fe0=function(_0x18a799){while(--_0x18a799){_0x31e04c['push'](_0x31e04c['shift']());}};_0x180fe0(++_0x13b624);}(_0xf680,0xb4));var _0x0f68=function(_0x2f8eae,_0x39d8ca){_0x2f8eae=_0x2f8eae-0x0;var _0x2adcdb=_0xf680[_0x2f8eae];return _0x2adcdb;};'use strict';var rr=require('rr');var _=require(_0x0f68('0x0'));var uuid=require(_0x0f68('0x1'));var util=require('./util');var logger=require(_0x0f68('0x2'))(_0x0f68('0x3'));var RRMemory=function(_0x482c19,_0x4de015,_0x35a9ca,_0x2e5653){this[_0x0f68('0x4')]=uuid['v4']();this[_0x0f68('0x5')]=_0x482c19;this[_0x0f68('0x6')]=_0x4de015;this[_0x0f68('0x7')]=_0x35a9ca;this[_0x0f68('0x3')]=_0x2e5653;this['intervals']={};this[_0x0f68('0x5')][_0x0f68('0x8')](this[_0x0f68('0x9')][_0x0f68('0xa')](this),this[_0x0f68('0xb')][_0x0f68('0xa')](this),this[_0x0f68('0xc')]);this[_0x0f68('0x5')]['on'](_0x0f68('0xd'),this['handleTimeout'][_0x0f68('0xa')](this));this[_0x0f68('0x5')]['on'](_0x0f68('0xe'),this[_0x0f68('0xf')][_0x0f68('0xa')](this));};RRMemory[_0x0f68('0x10')]['push']=function(){this[_0x0f68('0x5')][_0x0f68('0x8')](this[_0x0f68('0x9')][_0x0f68('0xa')](this),this[_0x0f68('0xb')][_0x0f68('0xa')](this));};RRMemory[_0x0f68('0x10')]['handleDrained']=function(){this[_0x0f68('0xb')](!![]);};RRMemory['prototype']['handleCheckReject']=function(_0x128a8f){if(util[_0x0f68('0x11')](this[_0x0f68('0x5')]['id'],this[_0x0f68('0x7')][_0x0f68('0x12')][this[_0x0f68('0x13')]],this[_0x0f68('0x5')]['channel'],!![])){logger[_0x0f68('0x14')]('[%s][QUEUE]\x20available\x20again\x20%s',this['squeue']['id'],this['agentId']);clearInterval(this[_0x0f68('0x15')][this[_0x0f68('0x13')]]);_0x128a8f[_0x0f68('0x16')]();setTimeout(this[_0x0f68('0x8')]['bind'](this),0x3e8);}};RRMemory[_0x0f68('0x10')][_0x0f68('0x9')]=function(_0x10b9fe){this['agentId']=rr(this[_0x0f68('0x6')][_0x0f68('0x17')]);logger[_0x0f68('0x14')](_0x0f68('0x18'),this[_0x0f68('0x5')]['id'],this[_0x0f68('0x13')]);if(_[_0x0f68('0x19')](this['realtime']['agents'][this[_0x0f68('0x13')]])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x0f68('0x5')]['id'],this[_0x0f68('0x13')]);_0x10b9fe[_0x0f68('0x16')]();setTimeout(this[_0x0f68('0x8')]['bind'](this),0x3e8);}else{if(util[_0x0f68('0x11')](this['squeue']['id'],this[_0x0f68('0x7')][_0x0f68('0x12')][this['agentId']],this['squeue']['channel'],!![])){this[_0x0f68('0x7')][_0x0f68('0x12')][this[_0x0f68('0x13')]][_0x0f68('0x1a')]=!![];this[_0x0f68('0x7')]['agents'][this['agentId']][_0x0f68('0x1b')]=this[_0x0f68('0x6')][_0x0f68('0x1c')];util[_0x0f68('0x1d')](this[_0x0f68('0x7')],this[_0x0f68('0x3')],this[_0x0f68('0x7')][_0x0f68('0x12')][this[_0x0f68('0x13')]],this[_0x0f68('0x5')][_0x0f68('0x1e')]);util[_0x0f68('0x1f')](this['notificationId'],this['squeue']['id'],this['realtime']['agents'][this[_0x0f68('0x13')]],this[_0x0f68('0x6')],this[_0x0f68('0x3')]);util[_0x0f68('0x20')](this[_0x0f68('0x5')]['id'],this['realtime'][_0x0f68('0x12')][this[_0x0f68('0x13')]],_0x0f68('0x21'));this[_0x0f68('0x15')][this[_0x0f68('0x13')]]=setInterval(this[_0x0f68('0x22')][_0x0f68('0xa')](this,_0x10b9fe),0x3e8);}else{logger[_0x0f68('0x14')](_0x0f68('0x23'),this['squeue']['id'],this['agentId']);_0x10b9fe['done']();setTimeout(this[_0x0f68('0x8')]['bind'](this),0x3e8);}}};RRMemory[_0x0f68('0x10')][_0x0f68('0xb')]=function(_0x211f42){logger[_0x0f68('0x14')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this['squeue']['id'],this['agentId']);if(_[_0x0f68('0x19')](this[_0x0f68('0x7')][_0x0f68('0x12')][this[_0x0f68('0x13')]])){logger['debug'](_0x0f68('0x24'),this['squeue']['id'],this[_0x0f68('0x13')]);}else{clearInterval(this['intervals'][this[_0x0f68('0x13')]]);util[_0x0f68('0x25')](this[_0x0f68('0x4')],this[_0x0f68('0x5')]['id'],this[_0x0f68('0x7')]['agents'][this[_0x0f68('0x13')]],this[_0x0f68('0x6')],this[_0x0f68('0x3')]);util[_0x0f68('0x20')](this['squeue']['id'],this['realtime']['agents'][this['agentId']],_0x0f68('0x26'));this[_0x0f68('0x7')][_0x0f68('0x12')][this[_0x0f68('0x13')]][_0x0f68('0x1a')]=![];this['realtime'][_0x0f68('0x12')][this[_0x0f68('0x13')]][_0x0f68('0x1b')]=undefined;util[_0x0f68('0x27')](this['realtime'],this[_0x0f68('0x3')],this[_0x0f68('0x7')][_0x0f68('0x12')][this['agentId']],this[_0x0f68('0x5')]['channel']);}if(!_0x211f42){setTimeout(this[_0x0f68('0x8')]['bind'](this),0x3e8);}};function rrmemory(_0xd5e801,_0x2c00fb,_0x3615f5,_0x18788a){return new RRMemory(_0xd5e801,_0x2c00fb,_0x3615f5,_0x18788a);}module['exports']=rrmemory;
\ No newline at end of file
index 1ce5cba..f74f48c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x845a=['split','name','account','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','format','[%s][QUEUE]\x20%s','message','user:%s','emit','notification:%s','save','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','OFFLINE','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','checkWaitingNotifications','interaction','UserId','channel','QueuesWaitingInteractions','capitalize','InteractionId','agents','saveWaitingNotification','WaitingInteractions','removeWaitingNotification','writeLog','lodash','util','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','localhost','socket.io-emitter'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0x845a,0x1af));var _0xa845=function(_0x41a07f,_0x2f06fb){_0x41a07f=_0x41a07f-0x0;var _0x2de0ed=_0x845a[_0x41a07f];return _0x2de0ed;};'use strict';var _=require(_0xa845('0x0'));var util=require(_0xa845('0x1'));var utils=require(_0xa845('0x2'));var Redis=require(_0xa845('0x3'));var config=require(_0xa845('0x4'));var logger=require(_0xa845('0x5'))(_0xa845('0x6'));config[_0xa845('0x7')]=_['defaults'](config[_0xa845('0x7')],{'host':_0xa845('0x8'),'port':0x18eb});var io=require(_0xa845('0x9'))(new Redis(config[_0xa845('0x7')]));function sendNotification(_0x11fdee,_0x5bc811,_0xa971f,_0x228c45,_0x5711bf,_0x591bd0){var _0x1333ca=_0x591bd0||{};var _0x49147d=_0xa971f[_0xa845('0xa')]('.');var _0x39eb10={'uniqueid':_0x5bc811,'channel':_0x49147d[0x0],'id':_0x49147d[0x1],'title':_0x49147d[0x0]+'\x20interaction','interactionId':_0x49147d[0x2],'queue':_0x5711bf?_0x5711bf[_0xa845('0xb')]:null,'sound':_0x1333ca[_0xa845('0xc')]['notificationSound'],'shake':_0x1333ca['account'][_0xa845('0xd')]};try{if(!_0x1333ca[_0xa845('0xe')]){_0x1333ca['body']={};}if(_0x5711bf){_0x1333ca[_0xa845('0xe')][_0xa845('0xf')]=_0x5711bf;}else if(_0x1333ca[_0xa845('0xe')]['queue']){delete _0x1333ca['body'][_0xa845('0xf')];}_0x39eb10[_0xa845('0x10')]=utils[_0xa845('0x11')](_0x1333ca[_0xa845('0xc')][_0xa845('0x12')],_0x1333ca);}catch(_0x163696){_0x39eb10[_0xa845('0x10')]='I\x20can\x27t\x20render\x20your\x20template';logger['error'](util[_0xa845('0x13')](_0xa845('0x14'),_0x5bc811,_0x163696[_0xa845('0x15')]));}io['to'](util[_0xa845('0x13')](_0xa845('0x16'),_0x228c45[_0xa845('0xb')]))[_0xa845('0x17')](util[_0xa845('0x13')](_0xa845('0x18'),_0x11fdee?_0xa845('0x19'):'remove'),_0x39eb10);}function writeLog(_0xdaa8ff,_0x32934c,_0x596423){return logger[_0xa845('0x1a')](util[_0xa845('0x13')](_0xa845('0x1b'),_0xdaa8ff,_0x32934c[_0xa845('0xb')],_0x596423));}exports[_0xa845('0x1c')]=function(_0x16f639,_0x1066a7,_0x29154e,_0x377cdb){if(_0x1066a7[_0xa845('0x1d')]){writeLog(_0x16f639,_0x1066a7,'BUSY');return![];}if(!_0x1066a7['online']){writeLog(_0x16f639,_0x1066a7,_0xa845('0x1e'));return![];}if(_0x1066a7[_0x29154e+'Pause']){writeLog(_0x16f639,_0x1066a7,_0xa845('0x1f'));return![];}if(_0x377cdb&&_0x1066a7[_0xa845('0x20')](_0x29154e+_0xa845('0x21'))&&_0x1066a7[_0xa845('0x20')](_0x29154e+_0xa845('0x22'))){if(_0x1066a7[_0x29154e+_0xa845('0x21')]>0x0&&_0x1066a7[_0x29154e+_0xa845('0x22')]>=_0x1066a7[_0x29154e+_0xa845('0x21')]){writeLog(_0x16f639,_0x1066a7,_0x29154e[_0xa845('0x23')]()+_0xa845('0x24'));return![];}}return!![];};exports['showNotification']=function(_0x4e6a01,_0x5056b6,_0x4639ca,_0x3a88fe,_0x345a6f){return sendNotification(!![],_0x4e6a01,_0x5056b6,_0x4639ca,_0x3a88fe,_0x345a6f);};exports['hideNotification']=function(_0x5b0bfd,_0xece811,_0x4846ed,_0x8582c0,_0x22b31c){return sendNotification(![],_0x5b0bfd,_0xece811,_0x4846ed,_0x8582c0,_0x22b31c);};exports[_0xa845('0x25')]=function(_0x4f29af,_0x4606cb,_0x42b7cf){var _0x19df91=_0x4606cb[_0xa845('0x26')][_0xa845('0x27')];if(!_0x19df91&&_0x42b7cf){_0x19df91=_0x42b7cf['id'];}var _0x1cdeac=_['some'](_0x4f29af[_0x4606cb[_0xa845('0x28')]+_0xa845('0x29')],function(_0x1faa36){var _0x46fa03=_[_0xa845('0x2a')](_0x4606cb['channel'])+_0xa845('0x2b');return _0x1faa36[_0x46fa03]===_0x4606cb[_0xa845('0x26')]['id'];});if(!_0x1cdeac&&_0x19df91&&_0x4f29af[_0xa845('0x2c')][_0x19df91]){_0x1cdeac=_['some'](_0x4f29af[_0xa845('0x2c')][_0x19df91][_0x4606cb[_0xa845('0x28')]+'WaitingInteractions'],function(_0x524564){return _0x524564['id']===_0x4606cb['interaction']['id'];});}return _0x1cdeac;};exports[_0xa845('0x2d')]=function(_0x36a863,_0x29260d,_0xb49675,_0xa39f5e){if(_0xb49675&&_0xb49675['id']&&_0x36a863['agents']&&_0x36a863['agents'][_0xb49675['id']]){_0x36a863[_0xa845('0x2c')][_0xb49675['id']][_0xa39f5e+_0xa845('0x2e')][_0x29260d['message']['id']]={'id':_0x29260d[_0xa845('0x26')]['id']};}};exports[_0xa845('0x2f')]=function(_0x2f649b,_0x32a97a,_0x11a222,_0x3019ed){if(_0x11a222&&_0x11a222['id']&&_0x2f649b[_0xa845('0x2c')]&&_0x2f649b[_0xa845('0x2c')][_0x11a222['id']]){delete _0x2f649b[_0xa845('0x2c')][_0x11a222['id']][_0x3019ed+_0xa845('0x2e')][_0x32a97a[_0xa845('0x15')]['id']];}};exports[_0xa845('0x30')]=writeLog;
\ No newline at end of file
+var _0xd0ee=['emit','notification:%s','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','busy','BUSY','online','Pause','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','showNotification','hideNotification','checkWaitingNotifications','interaction','some','QueuesWaitingInteractions','channel','InteractionId','WaitingInteractions','saveWaitingNotification','agents','removeWaitingNotification','util','ioredis','../../../../../config/environment','routing','redis','localhost','socket.io-emitter','split','name','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','error','format','[%s][QUEUE]\x20%s','message','user:%s'];(function(_0xaefbcb,_0x2b9614){var _0x51d74f=function(_0x17daca){while(--_0x17daca){_0xaefbcb['push'](_0xaefbcb['shift']());}};_0x51d74f(++_0x2b9614);}(_0xd0ee,0x19a));var _0xed0e=function(_0x5b8633,_0x30e8a6){_0x5b8633=_0x5b8633-0x0;var _0x47cf87=_0xd0ee[_0x5b8633];return _0x47cf87;};'use strict';var _=require('lodash');var util=require(_0xed0e('0x0'));var utils=require('../utils');var Redis=require(_0xed0e('0x1'));var config=require(_0xed0e('0x2'));var logger=require('../../../../../config/logger')(_0xed0e('0x3'));config[_0xed0e('0x4')]=_['defaults'](config[_0xed0e('0x4')],{'host':_0xed0e('0x5'),'port':0x18eb});var io=require(_0xed0e('0x6'))(new Redis(config[_0xed0e('0x4')]));function sendNotification(_0x53dfad,_0x5adddb,_0x48cf19,_0x216aac,_0x4b3ff0,_0xd684a7){var _0x1e38bc=_0xd684a7||{};var _0x4f391e=_0x48cf19[_0xed0e('0x7')]('.');var _0x14b038={'uniqueid':_0x5adddb,'channel':_0x4f391e[0x0],'id':_0x4f391e[0x1],'title':_0x4f391e[0x0]+'\x20interaction','interactionId':_0x4f391e[0x2],'queue':_0x4b3ff0?_0x4b3ff0[_0xed0e('0x8')]:null,'sound':_0x1e38bc[_0xed0e('0x9')][_0xed0e('0xa')],'shake':_0x1e38bc['account'][_0xed0e('0xb')]};try{if(!_0x1e38bc[_0xed0e('0xc')]){_0x1e38bc[_0xed0e('0xc')]={};}if(_0x4b3ff0){_0x1e38bc[_0xed0e('0xc')][_0xed0e('0xd')]=_0x4b3ff0;}else if(_0x1e38bc['body'][_0xed0e('0xd')]){delete _0x1e38bc[_0xed0e('0xc')][_0xed0e('0xd')];}_0x14b038[_0xed0e('0xe')]=utils[_0xed0e('0xf')](_0x1e38bc['account'][_0xed0e('0x10')],_0x1e38bc);}catch(_0x99ea3d){_0x14b038[_0xed0e('0xe')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0xed0e('0x11')](util[_0xed0e('0x12')](_0xed0e('0x13'),_0x5adddb,_0x99ea3d[_0xed0e('0x14')]));}io['to'](util[_0xed0e('0x12')](_0xed0e('0x15'),_0x216aac['name']))[_0xed0e('0x16')](util[_0xed0e('0x12')](_0xed0e('0x17'),_0x53dfad?_0xed0e('0x18'):_0xed0e('0x19')),_0x14b038);}function writeLog(_0x3392ba,_0x39e5ce,_0x154f07){return logger[_0xed0e('0x1a')](util['format'](_0xed0e('0x1b'),_0x3392ba,_0x39e5ce[_0xed0e('0x8')],_0x154f07));}exports['isAgentAvailable']=function(_0x4ee793,_0x2220cb,_0x3ab499,_0x4ce4ba){if(_0x2220cb[_0xed0e('0x1c')]){writeLog(_0x4ee793,_0x2220cb,_0xed0e('0x1d'));return![];}if(!_0x2220cb[_0xed0e('0x1e')]){writeLog(_0x4ee793,_0x2220cb,'OFFLINE');return![];}if(_0x2220cb[_0x3ab499+_0xed0e('0x1f')]){writeLog(_0x4ee793,_0x2220cb,'PAUSE');return![];}if(_0x4ce4ba&&_0x2220cb[_0xed0e('0x20')](_0x3ab499+_0xed0e('0x21'))&&_0x2220cb[_0xed0e('0x20')](_0x3ab499+_0xed0e('0x22'))){if(_0x2220cb[_0x3ab499+'Capacity']>0x0&&_0x2220cb[_0x3ab499+_0xed0e('0x22')]>=_0x2220cb[_0x3ab499+'Capacity']){writeLog(_0x4ee793,_0x2220cb,_0x3ab499[_0xed0e('0x23')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0xed0e('0x24')]=function(_0x358fe1,_0x4bdbb0,_0x79526c,_0x84458a,_0x5b202e){return sendNotification(!![],_0x358fe1,_0x4bdbb0,_0x79526c,_0x84458a,_0x5b202e);};exports[_0xed0e('0x25')]=function(_0x4f6528,_0x2c0e5f,_0x4a7596,_0x2cf5ac,_0x2d2385){return sendNotification(![],_0x4f6528,_0x2c0e5f,_0x4a7596,_0x2cf5ac,_0x2d2385);};exports[_0xed0e('0x26')]=function(_0x19e4b9,_0x8d953b,_0x4a3cff){var _0x4c9a95=_0x8d953b[_0xed0e('0x27')]['UserId'];if(!_0x4c9a95&&_0x4a3cff){_0x4c9a95=_0x4a3cff['id'];}var _0xe9f485=_[_0xed0e('0x28')](_0x19e4b9[_0x8d953b['channel']+_0xed0e('0x29')],function(_0x2c3ef3){var _0x1a15c2=_['capitalize'](_0x8d953b[_0xed0e('0x2a')])+_0xed0e('0x2b');return _0x2c3ef3[_0x1a15c2]===_0x8d953b[_0xed0e('0x27')]['id'];});if(!_0xe9f485&&_0x4c9a95&&_0x19e4b9['agents'][_0x4c9a95]){_0xe9f485=_['some'](_0x19e4b9['agents'][_0x4c9a95][_0x8d953b[_0xed0e('0x2a')]+_0xed0e('0x2c')],function(_0x2a160){return _0x2a160['id']===_0x8d953b[_0xed0e('0x27')]['id'];});}return _0xe9f485;};exports[_0xed0e('0x2d')]=function(_0x53e5bc,_0xf79db,_0x220175,_0x37221f){if(_0x220175&&_0x220175['id']&&_0x53e5bc[_0xed0e('0x2e')]&&_0x53e5bc[_0xed0e('0x2e')][_0x220175['id']]){_0x53e5bc['agents'][_0x220175['id']][_0x37221f+'WaitingInteractions'][_0xf79db[_0xed0e('0x14')]['id']]={'id':_0xf79db[_0xed0e('0x27')]['id']};}};exports[_0xed0e('0x2f')]=function(_0x42f984,_0x399daa,_0x58a1ec,_0x409f74){if(_0x58a1ec&&_0x58a1ec['id']&&_0x42f984['agents']&&_0x42f984['agents'][_0x58a1ec['id']]){delete _0x42f984[_0xed0e('0x2e')][_0x58a1ec['id']][_0x409f74+_0xed0e('0x2c')][_0x399daa[_0xed0e('0x14')]['id']];}};exports['writeLog']=writeLog;
\ No newline at end of file
index 9a85b0e..e47dc55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3487=['message','info','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','error','isObject','stringify','validate','shelljs','lodash','../../../../config/logger','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','map'];(function(_0xe51596,_0x314d5b){var _0x22c705=function(_0x4c6f94){while(--_0x4c6f94){_0xe51596['push'](_0xe51596['shift']());}};_0x22c705(++_0x314d5b);}(_0x3487,0xd8));var _0x7348=function(_0x3f55de,_0x3ae98f){_0x3f55de=_0x3f55de-0x0;var _0x2698de=_0x3487[_0x3f55de];return _0x2698de;};'use strict';var schema=require(_0x7348('0x0'));var sh=require(_0x7348('0x1'));var _=require(_0x7348('0x2'));var utils=require('./utils');var logger=require(_0x7348('0x3'))(_0x7348('0x4'));var system=schema({'command':{'type':'string','required':!![],'message':_0x7348('0x5')}});exports[_0x7348('0x6')]=function(_0x5bdefd,_0x209f16){return function(_0x31cd38){try{var _0x4157b9={'command':_0x209f16[0x0]};var _0x1b60d7=system['validate'](_0x4157b9,{'typecast':!![]});if(_0x1b60d7[_0x7348('0x7')]){logger['error']('[%s][SYSTEM]\x20%s',_0x5bdefd,_[_0x7348('0x8')](_0x1b60d7,_0x7348('0x9'))['join'](',\x20'));logger[_0x7348('0xa')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x5bdefd);_0x31cd38[_0x7348('0xb')]();}else{var _0x46cd0b=this;var _0x313788=utils[_0x7348('0xc')](_0x209f16[0x0],this);logger['info'](_0x7348('0xd'),_0x5bdefd,_0x313788);sh[_0x7348('0xe')](_[_0x7348('0xf')](_0x313788),function(_0x9cd47e,_0x2b3f57){logger['info'](_0x7348('0x10'),_0x5bdefd,_0x9cd47e);if(_0x9cd47e==0x0){var _0x3099c3=_0x2b3f57['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x7348('0x11')](_0x209f16[0x1])||_[_0x7348('0x12')](_0x209f16[0x1])){logger['info'](_0x7348('0x13'),_0x5bdefd);_0x46cd0b[_0x7348('0x14')][_0x209f16[0x1]]=_0x3099c3;}else{logger[_0x7348('0xa')](_0x7348('0x15'),_0x5bdefd,_0x209f16[0x1],_0x3099c3);_0x46cd0b[_0x7348('0x14')][_0x209f16[0x1]]=_0x3099c3;}}_0x31cd38['next']();});}}catch(_0x5cc3){logger[_0x7348('0x16')]('[%s][SYSTEM]\x20%s',_0x5bdefd,_[_0x7348('0x17')](_0x5cc3)?JSON[_0x7348('0x18')](_0x5cc3):_0x5cc3);logger[_0x7348('0xa')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x5bdefd);_0x31cd38[_0x7348('0xb')]();}};};
\ No newline at end of file
+var _0x0140=['[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','trim','info','[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','error','[%s][SYSTEM]\x20%s','isObject','stringify','next','validate','shelljs','lodash','./utils','routing','consequence','map','join'];(function(_0xef0ce4,_0x5c2cba){var _0x4193c3=function(_0x3aebe9){while(--_0x3aebe9){_0xef0ce4['push'](_0xef0ce4['shift']());}};_0x4193c3(++_0x5c2cba);}(_0x0140,0x148));var _0x0014=function(_0x243217,_0x522951){_0x243217=_0x243217-0x0;var _0x478029=_0x0140[_0x243217];return _0x478029;};'use strict';var schema=require(_0x0014('0x0'));var sh=require(_0x0014('0x1'));var _=require(_0x0014('0x2'));var utils=require(_0x0014('0x3'));var logger=require('../../../../config/logger')(_0x0014('0x4'));var system=schema({'command':{'type':'string','required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x0014('0x5')]=function(_0x992794,_0x57661b){return function(_0x18f35f){try{var _0x1e4548={'command':_0x57661b[0x0]};var _0x5d69ef=system[_0x0014('0x0')](_0x1e4548,{'typecast':!![]});if(_0x5d69ef['length']){logger['error']('[%s][SYSTEM]\x20%s',_0x992794,_[_0x0014('0x6')](_0x5d69ef,'message')[_0x0014('0x7')](',\x20'));logger['info'](_0x0014('0x8'),_0x992794);_0x18f35f['next']();}else{var _0x429fc8=this;var _0x34c29a=utils[_0x0014('0x9')](_0x57661b[0x0],this);logger['info'](_0x0014('0xa'),_0x992794,_0x34c29a);sh['exec'](_[_0x0014('0xb')](_0x34c29a),function(_0x1684ca,_0x21670c){logger[_0x0014('0xc')](_0x0014('0xd'),_0x992794,_0x1684ca);if(_0x1684ca==0x0){var _0x10bae2=_0x21670c['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x0014('0xe')](_0x57661b[0x1])||_[_0x0014('0xf')](_0x57661b[0x1])){logger[_0x0014('0xc')](_0x0014('0x10'),_0x992794);_0x429fc8[_0x0014('0x11')][_0x57661b[0x1]]=_0x10bae2;}else{logger[_0x0014('0xc')](_0x0014('0x12'),_0x992794,_0x57661b[0x1],_0x10bae2);_0x429fc8[_0x0014('0x11')][_0x57661b[0x1]]=_0x10bae2;}}_0x18f35f['next']();});}}catch(_0x3c0381){logger[_0x0014('0x13')](_0x0014('0x14'),_0x992794,_[_0x0014('0x15')](_0x3c0381)?JSON[_0x0014('0x16')](_0x3c0381):_0x3c0381);logger['info'](_0x0014('0x8'),_0x992794);_0x18f35f[_0x0014('0x17')]();}};};
\ No newline at end of file
index 826ad1f..6eaa4a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4410=['catch','error','[%s][TAG]\x20%s','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','next','isObject','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','validate','message','channel','Interaction','addTags','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction'];(function(_0x26d823,_0x3f2031){var _0x5c24b1=function(_0x205a09){while(--_0x205a09){_0x26d823['push'](_0x26d823['shift']());}};_0x5c24b1(++_0x3f2031);}(_0x4410,0x68));var _0x0441=function(_0x3fc97b,_0x20ca29){_0x3fc97b=_0x3fc97b-0x0;var _0x3a0c82=_0x4410[_0x3fc97b];return _0x3a0c82;};'use strict';var schema=require('validate');var _=require('lodash');var rpc={'chatInteraction':require(_0x0441('0x0')),'openchannelInteraction':require(_0x0441('0x1')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x0441('0x2')),'faxInteraction':require(_0x0441('0x3')),'whatsappInteraction':require(_0x0441('0x4'))};var logger=require(_0x0441('0x5'))(_0x0441('0x6'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x0441('0x7')}});exports[_0x0441('0x8')]=function(_0x5dbdf5,_0x4dc83a,_0x21a1fd,_0x59e802){return function(_0xb376ff){try{var _0x62408f={'tag':_0x4dc83a[0x0]};var _0x3592de=tag[_0x0441('0x9')](_0x62408f,{'typecast':!![]});if(_0x3592de['length']){logger['error']('[%s][TAG]\x20%s',_0x5dbdf5,_['map'](_0x3592de,_0x0441('0xa'))['join'](',\x20'));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x5dbdf5);_0xb376ff['next']();}else{var _0x3d4f35={'ids':[_0x4dc83a[0x0]]};if(rpc[_0x59e802[_0x0441('0xb')]+'Interaction']){rpc[_0x59e802['channel']+_0x0441('0xc')][_0x0441('0xd')](_0x59e802['interaction']['id'],_0x3d4f35)['then'](function(_0x267e3d){logger['info'](_0x0441('0xe'),_0x5dbdf5,_0x4dc83a[0x1],_0x59e802[_0x0441('0xb')],_0x59e802[_0x0441('0xf')]['id']);})[_0x0441('0x10')](function(_0x28283d){logger[_0x0441('0x11')](_0x0441('0x12'),_0x5dbdf5,JSON[_0x0441('0x13')](_0x28283d));logger['info'](_0x0441('0x14'),_0x5dbdf5);})[_0x0441('0x15')](function(){_0xb376ff[_0x0441('0x16')]();});}}}catch(_0x20ff5b){logger[_0x0441('0x11')](_0x0441('0x12'),_0x5dbdf5,_[_0x0441('0x17')](_0x20ff5b)?JSON[_0x0441('0x13')](_0x20ff5b):_0x20ff5b);logger['info'](_0x0441('0x14'),_0x5dbdf5);_0xb376ff[_0x0441('0x16')]();}};};
\ No newline at end of file
+var _0x3a97=['../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][TAG]\x20%s','map','join','info','next','channel','Interaction','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','finally','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x3a97,0x124));var _0x73a9=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x3a97[_0x397e5f];return _0x5302b8;};'use strict';var schema=require(_0x73a9('0x0'));var _=require(_0x73a9('0x1'));var rpc={'chatInteraction':require(_0x73a9('0x2')),'openchannelInteraction':require(_0x73a9('0x3')),'smsInteraction':require(_0x73a9('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x73a9('0x5')),'whatsappInteraction':require(_0x73a9('0x6'))};var logger=require(_0x73a9('0x7'))(_0x73a9('0x8'));var tag=schema({'tag':{'type':_0x73a9('0x9'),'required':!![],'message':_0x73a9('0xa')}});exports['consequence']=function(_0x2577ed,_0x28cca5,_0x271a55,_0x4c0a42){return function(_0x3876d5){try{var _0x5a4130={'tag':_0x28cca5[0x0]};var _0x50aa23=tag[_0x73a9('0x0')](_0x5a4130,{'typecast':!![]});if(_0x50aa23[_0x73a9('0xb')]){logger[_0x73a9('0xc')](_0x73a9('0xd'),_0x2577ed,_[_0x73a9('0xe')](_0x50aa23,'message')[_0x73a9('0xf')](',\x20'));logger[_0x73a9('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x2577ed);_0x3876d5[_0x73a9('0x11')]();}else{var _0x1aed47={'ids':[_0x28cca5[0x0]]};if(rpc[_0x4c0a42['channel']+'Interaction']){rpc[_0x4c0a42[_0x73a9('0x12')]+_0x73a9('0x13')]['addTags'](_0x4c0a42[_0x73a9('0x14')]['id'],_0x1aed47)[_0x73a9('0x15')](function(_0x51e9be){logger[_0x73a9('0x10')](_0x73a9('0x16'),_0x2577ed,_0x28cca5[0x1],_0x4c0a42[_0x73a9('0x12')],_0x4c0a42[_0x73a9('0x14')]['id']);})[_0x73a9('0x17')](function(_0x5ef7e4){logger[_0x73a9('0xc')](_0x73a9('0xd'),_0x2577ed,JSON[_0x73a9('0x18')](_0x5ef7e4));logger[_0x73a9('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x2577ed);})[_0x73a9('0x19')](function(){_0x3876d5['next']();});}}}catch(_0x116285){logger[_0x73a9('0xc')]('[%s][TAG]\x20%s',_0x2577ed,_['isObject'](_0x116285)?JSON['stringify'](_0x116285):_0x116285);logger[_0x73a9('0x10')](_0x73a9('0x1a'),_0x2577ed);_0x3876d5[_0x73a9('0x11')]();}};};
\ No newline at end of file
index a335874..6ab8b94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1249=['push','urlOnAnswer','?params=','urlOnRing','title','jsonrpc','login','stringify','utf8','application/json-rpc','then','parse','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&sessionId=','&data=','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','error','[%s][TVOX]\x20%s','info','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','../../../../config/logger','routing','lodash','consequence','replace','\x20-\x20','includes'];(function(_0x24210f,_0x3510de){var _0x37b6db=function(_0x53a3ba){while(--_0x53a3ba){_0x24210f['push'](_0x24210f['shift']());}};_0x37b6db(++_0x3510de);}(_0x1249,0x1c7));var _0x9124=function(_0x1e1a04,_0x145339){_0x1e1a04=_0x1e1a04-0x0;var _0x8e1b87=_0x1249[_0x1e1a04];return _0x8e1b87;};'use strict';var rp=require('request-promise');var logger=require(_0x9124('0x0'))(_0x9124('0x1'));var _=require(_0x9124('0x2'));var arr=[];exports[_0x9124('0x3')]=function(_0x6c1139,_0x5b2dd2){return function(_0x4404da){var _0x19d7d9=_0x5b2dd2[0xa];var _0x2af81d=_0x5b2dd2[0xb];var _0x1529b3=_0x5b2dd2[0xc];var _0x34cff7=_0x5b2dd2[0xd];var _0x3d62ad=_0x5b2dd2[0xe];var _0x5b0de1=_0x5b2dd2[0xf][_0x9124('0x4')](/\n/g,_0x9124('0x5'));var _0x3b11b3=_0x5b2dd2[0x10][_0x9124('0x4')](/\n/g,'\x20');if(!arr[_0x9124('0x6')](_0x2af81d)){arr[_0x9124('0x7')](_0x2af81d);var _0x102d15=_0x5b2dd2[0x3];var _0x4b2c82=_0x5b2dd2[0x4];var _0x181504=_0x5b2dd2[0x1];var _0x288e56=_0x5b2dd2[0x0];var _0x31729e={};_0x31729e[_0x9124('0x8')]=_0x5b2dd2[0x8]+_0x9124('0x9')+_0x1529b3+'|'+_0x19d7d9+'|'+_0x34cff7+'|'+_0x2af81d+'|'+_0x3d62ad;_0x31729e[_0x9124('0xa')]=_0x5b2dd2[0x7]+_0x9124('0x9')+_0x1529b3+'|'+_0x19d7d9+'|'+_0x34cff7+'|'+_0x2af81d+'|'+_0x3d62ad+'|'+_0x5b0de1+'|'+_0x3b11b3;_0x31729e[_0x9124('0xb')]=_0x5b2dd2[0x9];var _0x3a5505={};_0x3a5505[_0x9124('0xc')]='2.0';_0x3a5505['method']=_0x9124('0xd');var _0x1bb656=[];_0x1bb656[_0x9124('0x7')](_0x5b2dd2[0x2]);_0x1bb656[_0x9124('0x7')](_0x5b2dd2[0x5]);_0x1bb656[_0x9124('0x7')](_0x5b2dd2[0x6]);_0x3a5505['params']=_0x1bb656;_0x3a5505['id']=0x1;var _0x2c6c36=JSON[_0x9124('0xe')](_0x3a5505);var _0x18ca28={'encoding':_0x9124('0xf'),'method':'POST','timeout':0x2710,'url':_0x102d15,'headers':{'Content-Type':_0x9124('0x10')},'body':_0x2c6c36};return rp(_0x18ca28)[_0x9124('0x11')](function(_0x3a32da){const _0x2d3c0c=JSON[_0x9124('0x12')](_0x3a32da);if(!_0x2d3c0c['result'][_0x9124('0x13')]){throw new Error(_0x9124('0x14'));}var _0x23a587=_0x2af81d;var _0x4b946b=_0x9124('0x15')+_0x181504+_0x9124('0x16')+_0x288e56+_0x9124('0x17')+_0x23a587+_0x9124('0x18')+JSON[_0x9124('0xe')](_0x31729e);var _0x48ccdc=_0x4b2c82+'?'+_0x4b946b;return rp(_0x48ccdc);})[_0x9124('0x11')](function(_0x3174a2){logger['info'](_0x9124('0x19'),_0x6c1139,_0x3174a2);_0x4404da[_0x9124('0x1a')]();})[_0x9124('0x1b')](function(_0x29f51f){logger[_0x9124('0x1c')](_0x9124('0x1d'),_0x6c1139,_['isObject'](_0x29f51f)?JSON[_0x9124('0xe')](_0x29f51f):_0x29f51f);_0x4404da[_0x9124('0x1a')]();});}else{logger[_0x9124('0x1e')](_0x9124('0x1f'),_0x6c1139);_0x4404da[_0x9124('0x20')]();}};};
\ No newline at end of file
+var _0x94cf=['[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','routing','consequence','replace','includes','push','?params=','urlOnRing','title','2.0','method','stringify','utf8','POST','application/json-rpc','then','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','error'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x94cf,0x15a));var _0xf94c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x94cf[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require('request-promise');var logger=require('../../../../config/logger')(_0xf94c('0x0'));var _=require('lodash');var arr=[];exports[_0xf94c('0x1')]=function(_0x331051,_0x1e2795){return function(_0x429fcd){var _0x91c310=_0x1e2795[0xa];var _0x3e80cd=_0x1e2795[0xb];var _0x3a14ae=_0x1e2795[0xc];var _0x1196ba=_0x1e2795[0xd];var _0x317637=_0x1e2795[0xe];var _0x2bccb7=_0x1e2795[0xf]['replace'](/\n/g,'\x20-\x20');var _0xb8f201=_0x1e2795[0x10][_0xf94c('0x2')](/\n/g,'\x20');if(!arr[_0xf94c('0x3')](_0x3e80cd)){arr[_0xf94c('0x4')](_0x3e80cd);var _0x331767=_0x1e2795[0x3];var _0x5aa7b1=_0x1e2795[0x4];var _0x47f6c1=_0x1e2795[0x1];var _0x51e9b5=_0x1e2795[0x0];var _0x500ead={};_0x500ead['urlOnAnswer']=_0x1e2795[0x8]+_0xf94c('0x5')+_0x3a14ae+'|'+_0x91c310+'|'+_0x1196ba+'|'+_0x3e80cd+'|'+_0x317637;_0x500ead[_0xf94c('0x6')]=_0x1e2795[0x7]+'?params='+_0x3a14ae+'|'+_0x91c310+'|'+_0x1196ba+'|'+_0x3e80cd+'|'+_0x317637+'|'+_0x2bccb7+'|'+_0xb8f201;_0x500ead[_0xf94c('0x7')]=_0x1e2795[0x9];var _0x47ab67={};_0x47ab67['jsonrpc']=_0xf94c('0x8');_0x47ab67[_0xf94c('0x9')]='login';var _0x590a7d=[];_0x590a7d[_0xf94c('0x4')](_0x1e2795[0x2]);_0x590a7d[_0xf94c('0x4')](_0x1e2795[0x5]);_0x590a7d['push'](_0x1e2795[0x6]);_0x47ab67['params']=_0x590a7d;_0x47ab67['id']=0x1;var _0x544835=JSON[_0xf94c('0xa')](_0x47ab67);var _0x20f66a={'encoding':_0xf94c('0xb'),'method':_0xf94c('0xc'),'timeout':0x2710,'url':_0x331767,'headers':{'Content-Type':_0xf94c('0xd')},'body':_0x544835};return rp(_0x20f66a)[_0xf94c('0xe')](function(_0x5e97e5){const _0x46bf2f=JSON[_0xf94c('0xf')](_0x5e97e5);if(!_0x46bf2f[_0xf94c('0x10')][_0xf94c('0x11')]){throw new Error(_0xf94c('0x12'));}var _0x26bd72=_0x3e80cd;var _0x35ffb2='channelId='+_0x47f6c1+'&serviceId='+_0x51e9b5+'&sessionId='+_0x26bd72+'&data='+JSON[_0xf94c('0xa')](_0x500ead);var _0x137a50=_0x5aa7b1+'?'+_0x35ffb2;return rp(_0x137a50);})['then'](function(_0x2e1080){logger['info'](_0xf94c('0x13'),_0x331051,_0x2e1080);_0x429fcd[_0xf94c('0x14')]();})['catch'](function(_0x4a5696){logger[_0xf94c('0x15')]('[%s][TVOX]\x20%s',_0x331051,_['isObject'](_0x4a5696)?JSON[_0xf94c('0xa')](_0x4a5696):_0x4a5696);_0x429fcd['stop']();});}else{logger['info'](_0xf94c('0x16'),_0x331051);_0x429fcd['next']();}};};
\ No newline at end of file
index 1b205e1..0a54dde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['list','lodash','exports','render','merge','contact','message','account','interaction'];(function(_0x13a1f0,_0x509a26){var _0x88ae18=function(_0x53459b){while(--_0x53459b){_0x13a1f0['push'](_0x13a1f0['shift']());}};_0x88ae18(++_0x509a26);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xbaf0[_0x6131cd];return _0x47e916;};'use strict';var Mustache=require('mustache');var _=require(_0x0baf('0x0'));module[_0x0baf('0x1')]={'getMustacheRender':function(_0x1e212d,_0x263f79){return Mustache[_0x0baf('0x2')](_0x1e212d,_[_0x0baf('0x3')](_0x263f79['body'],{'contact':_0x263f79[_0x0baf('0x4')],'message':_0x263f79[_0x0baf('0x5')],'account':_0x263f79[_0x0baf('0x6')],'interaction':_0x263f79[_0x0baf('0x7')],'list':_0x263f79[_0x0baf('0x8')]}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x3a58d4,_0xc051ad){var _0x432e1a=function(_0x2d5ffb){while(--_0x2d5ffb){_0x3a58d4['push'](_0x3a58d4['shift']());}};_0x432e1a(++_0xc051ad);}(_0xe706,0xa3));var _0x6e70=function(_0x4d967a,_0xc56013){_0x4d967a=_0x4d967a-0x0;var _0x362726=_0xe706[_0x4d967a];return _0x362726;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
index 2b0f999..13b6b6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb8a=['condition','intervals','consequence','priority','info','on\x20interval','\x20|\x20','error','.js','rules','execute','Applications\x20executed','stringify','emit','complete','Skipped\x20routing\x20for\x20%s','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','find','chatQueues','available','loggedIn','name','mailQueues','paused','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','listen','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','./applications/utils','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','channel','message','interaction','transfer','applications','isArray','length','existsSync','app','toLowerCase','autoreply','appdata','split','push','join','dialogflow','slice','dialogflowv2','amazonlex','tag','TagId','getMustacheRender','account','notificationTemplate','ContactId','body'];(function(_0x5288da,_0x2d77cc){var _0x2ac233=function(_0x57de57){while(--_0x57de57){_0x5288da['push'](_0x5288da['shift']());}};_0x2ac233(++_0x2d77cc);}(_0xfb8a,0x109));var _0xafb8=function(_0x2c76b2,_0x35fa8b){_0x2c76b2=_0x2c76b2-0x0;var _0x11b6f4=_0xfb8a[_0x2c76b2];return _0x11b6f4;};'use strict';var _=require(_0xafb8('0x0'));var util=require(_0xafb8('0x1'));var path=require(_0xafb8('0x2'));var fs=require('fs');var jayson=require(_0xafb8('0x3'));var BPromise=require('bluebird');var utils=require(_0xafb8('0x4'));var sUtils=require('./applications/strategy/util');var logger=require(_0xafb8('0x5'))(_0xafb8('0x6'));var rpc={'openchannelQueueReport':require(_0xafb8('0x7')),'mailQueueReport':require(_0xafb8('0x8')),'chatQueueReport':require(_0xafb8('0x9')),'smsQueueReport':require(_0xafb8('0xa')),'faxQueueReport':require(_0xafb8('0xb')),'whatsappQueueReport':require(_0xafb8('0xc'))};var RuleEngine=require(_0xafb8('0xd'));function getId(_0x694212,_0x1f3121,_0x3bf691){return util[_0xafb8('0xe')](_0xafb8('0xf'),_0x694212,_0x1f3121||0x0,_0x3bf691||0x0);}function getIntervals(_0x49a78d,_0x2b312e){var _0x5a77c6=[];if(!_[_0xafb8('0x10')](_0x2b312e[_0xafb8('0x11')])&&!_['isNil'](_0x49a78d[_0x2b312e['IntervalId']])&&!_['isNil'](_0x49a78d[_0x2b312e[_0xafb8('0x11')]][_0xafb8('0x12')])){_0x5a77c6=_[_0xafb8('0x13')](_0x49a78d[_0x2b312e['IntervalId']][_0xafb8('0x12')],'interval');}else if(!_[_0xafb8('0x10')](_0x2b312e[_0xafb8('0x14')])){_0x5a77c6=[_0x2b312e[_0xafb8('0x14')]];}return _0x5a77c6;}exports['listen']=function(_0x3010c5){_0x3010c5['rules']={};return new BPromise(function(_0x20efb8,_0x4579f2){var _0x2fe3b5={'Start':function(_0x4223a5){var _0x40e7d8=this;return new Promise(function(_0x1816aa,_0x322c81){if(_0x4223a5){try{var _0x166253=[];var _0x110b1d=getId(_0x4223a5[_0xafb8('0x15')],_0x4223a5[_0xafb8('0x16')]?_0x4223a5['message']['id']:0x0,_0x4223a5[_0xafb8('0x17')]?_0x4223a5['interaction']['id']:0x0);var _0x9dc30c=sUtils['checkWaitingNotifications'](_0x3010c5,_0x4223a5);if(_0x4223a5[_0xafb8('0x18')]||!_0x9dc30c&&_0x4223a5[_0xafb8('0x19')]&&_[_0xafb8('0x1a')](_0x4223a5[_0xafb8('0x19')])&&_0x4223a5['applications'][_0xafb8('0x1b')]){for(var _0x3a2d37=0x0;_0x3a2d37<_0x4223a5[_0xafb8('0x19')][_0xafb8('0x1b')];_0x3a2d37+=0x1){var _0x243810=_0x4223a5[_0xafb8('0x19')][_0x3a2d37];if(fs[_0xafb8('0x1c')](path['join'](__dirname,'applications',_0x243810[_0xafb8('0x1d')]+'.js'))){var _0x5e9e93=[];switch(_0x243810[_0xafb8('0x1d')][_0xafb8('0x1e')]()){case _0xafb8('0x1f'):var _0x1741ee=_0x243810[_0xafb8('0x20')][_0xafb8('0x21')](',');if(_0x4223a5[_0xafb8('0x15')]==='mail'){_0x5e9e93[_0xafb8('0x22')](_0x1741ee[0x0]);_0x5e9e93['push'](_0x1741ee[0x1]);_0x5e9e93[_0xafb8('0x22')](_0x1741ee['slice'](0x2,_0x1741ee['length'])['join'](','));}else{_0x5e9e93[_0xafb8('0x22')](_0x1741ee[0x0]);_0x5e9e93['push'](_0x1741ee['slice'](0x1,_0x1741ee[_0xafb8('0x1b')])[_0xafb8('0x23')](','));}break;case _0xafb8('0x24'):var _0x117f43=_0x243810[_0xafb8('0x20')][_0xafb8('0x21')](',');_0x5e9e93[_0xafb8('0x22')](_0x117f43[0x0]);_0x5e9e93[_0xafb8('0x22')](_0x117f43[0x1]);_0x5e9e93['push'](_0x117f43[_0xafb8('0x25')](0x2,_0x117f43[_0xafb8('0x1b')])[_0xafb8('0x23')](','));break;case _0xafb8('0x26'):var _0x1b777a=_0x243810[_0xafb8('0x20')][_0xafb8('0x21')](',');_0x5e9e93[_0xafb8('0x22')](_0x1b777a[0x0]);_0x5e9e93['push'](_0x1b777a[0x1]);_0x5e9e93[_0xafb8('0x22')](_0x1b777a[0x2]);_0x5e9e93['push'](_0x1b777a[0x3]);_0x5e9e93[_0xafb8('0x22')](_0x1b777a[_0xafb8('0x25')](0x4,_0x1b777a[_0xafb8('0x1b')])[_0xafb8('0x23')](','));break;case _0xafb8('0x27'):var _0x13e35e=_0x243810[_0xafb8('0x20')][_0xafb8('0x21')](',');_0x5e9e93['push'](_0x13e35e[0x0]);_0x5e9e93[_0xafb8('0x22')](_0x13e35e[0x1]);_0x5e9e93[_0xafb8('0x22')](_0x13e35e[0x2]);_0x5e9e93[_0xafb8('0x22')](_0x13e35e[0x3]);_0x5e9e93[_0xafb8('0x22')](_0x13e35e[_0xafb8('0x25')](0x4,_0x13e35e[_0xafb8('0x1b')])[_0xafb8('0x23')](','));break;case _0xafb8('0x16'):_0x5e9e93[_0xafb8('0x22')](_0x243810['appdata']);break;case _0xafb8('0x28'):_0x5e9e93[_0xafb8('0x22')](_0x243810[_0xafb8('0x29')]);_0x5e9e93['push'](_0x243810[_0xafb8('0x20')]);break;case'tvox':var _0x1b8ad8=utils[_0xafb8('0x2a')](_0x4223a5[_0xafb8('0x2b')][_0xafb8('0x2c')],_0x4223a5);var _0x12f4fa=_0x243810[_0xafb8('0x20')][_0xafb8('0x21')](',');_0x5e9e93['push'](_0x12f4fa[0x0]);_0x5e9e93[_0xafb8('0x22')](_0x12f4fa[0x1]);_0x5e9e93['push'](_0x12f4fa[0x2]);_0x5e9e93[_0xafb8('0x22')](_0x12f4fa[0x3]);_0x5e9e93[_0xafb8('0x22')](_0x12f4fa[0x4]);_0x5e9e93['push'](_0x12f4fa[0x5]);_0x5e9e93[_0xafb8('0x22')](_0x12f4fa[0x6]);_0x5e9e93['push'](_0x12f4fa[0x7]);_0x5e9e93[_0xafb8('0x22')](_0x12f4fa[0x8]);_0x5e9e93[_0xafb8('0x22')](_0x12f4fa[0x9]);_0x5e9e93['push'](_0x12f4fa[0xa]);_0x5e9e93['push'](_0x4223a5['interaction']['id']);_0x5e9e93[_0xafb8('0x22')](_0x4223a5[_0xafb8('0x16')]['id']);_0x5e9e93[_0xafb8('0x22')](_0x243810['ChatWebsiteId']);_0x5e9e93[_0xafb8('0x22')](_0x4223a5[_0xafb8('0x17')][_0xafb8('0x2d')]);_0x5e9e93[_0xafb8('0x22')](_0x4223a5[_0xafb8('0x2e')][_0xafb8('0x2e')]);_0x5e9e93['push'](_0x1b8ad8);break;default:_0x5e9e93=_[_0xafb8('0x10')](_0x243810[_0xafb8('0x20')])?[]:_0x243810[_0xafb8('0x20')][_0xafb8('0x21')](',');}var _0x303a20={'id':util[_0xafb8('0xe')]('%s:%s:%s',_0x110b1d,_0x243810['id'],_0x243810[_0xafb8('0x1d')]),'condition':require('./interval')[_0xafb8('0x2f')](_0x110b1d,getIntervals(_0x3010c5[_0xafb8('0x30')],_0x243810),_0x3010c5),'consequence':require('./applications/'+_0x243810[_0xafb8('0x1d')])[_0xafb8('0x31')](_0x110b1d,_0x5e9e93,_0x3010c5,_0x4223a5),'p':_0x243810[_0xafb8('0x32')]||0x0};logger[_0xafb8('0x33')]('Push\x20new\x20rule',_0x303a20['id'],_0xafb8('0x34'),getIntervals(_0x3010c5[_0xafb8('0x30')],_0x243810)[_0xafb8('0x23')](_0xafb8('0x35')));_0x166253[_0xafb8('0x22')](_0x303a20);}else{logger[_0xafb8('0x36')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0xafb8('0x23')](__dirname,_0xafb8('0x19'),_0x243810[_0xafb8('0x1d')]+_0xafb8('0x37')));}}_0x3010c5[_0xafb8('0x38')][_0x110b1d]=new RuleEngine(_0x166253);_0x3010c5[_0xafb8('0x38')][_0x110b1d][_0xafb8('0x39')](_0x4223a5,function(_0x3e09d4){logger['info'](_0xafb8('0x3a'),JSON[_0xafb8('0x3b')](_0x3e09d4['matchPath']));if(_0x3010c5[_0xafb8('0x38')][_0x110b1d]){_0x3010c5[_0xafb8('0x38')][_0x110b1d][_0xafb8('0x3c')](_0xafb8('0x3d'));}});return _0x1816aa({'code':0xc8,'message':_0x4223a5});}else{if(_0x9dc30c){logger[_0xafb8('0x33')](util['format'](_0xafb8('0x3e'),_0x110b1d));}else{logger[_0xafb8('0x33')]('No\x20applications\x20to\x20execute');}return _0x1816aa({'code':0xc8,'message':_0x4223a5});}}catch(_0x28f699){logger[_0xafb8('0x36')](_0x28f699['stack']);return _0x322c81(_0x40e7d8[_0xafb8('0x36')](0x1f4,_0x28f699));}}return _0x322c81(_0xafb8('0x3f'));});},'AcceptMessage':function(_0xc2ba19){var _0x23df0c=this;return new Promise(function(_0x52d6b5,_0x21920f){if(_0xc2ba19[_0xafb8('0x40')]&&_0xc2ba19[_0xafb8('0x40')]['id']){if(_0x3010c5[_0xafb8('0x41')][_0xc2ba19[_0xafb8('0x40')]['id']]){_0x3010c5[_0xafb8('0x41')][_0xc2ba19['agent']['id']][_0xafb8('0x42')]=![];_0x3010c5[_0xafb8('0x41')][_0xc2ba19[_0xafb8('0x40')]['id']][_0xafb8('0x43')]=undefined;}}if(_0xc2ba19[_0xafb8('0x16')]&&_0xc2ba19[_0xafb8('0x16')]['id']){try{var _0x14d07=getId(_0xc2ba19[_0xafb8('0x15')],_0xc2ba19[_0xafb8('0x16')]?_0xc2ba19[_0xafb8('0x16')]['id']:0x0,_0xc2ba19[_0xafb8('0x17')]?_0xc2ba19[_0xafb8('0x17')]['id']:0x0);if(_0x3010c5[_0xafb8('0x38')][_0x14d07]){_0x3010c5['rules'][_0x14d07][_0xafb8('0x3c')](_0xafb8('0x44'));if(rpc[_0xc2ba19[_0xafb8('0x15')]+_0xafb8('0x45')]){rpc[_0xc2ba19[_0xafb8('0x15')]+_0xafb8('0x45')][_0xafb8('0x46')](_0x14d07,{'UserId':_0xc2ba19['message']['UserId']})[_0xafb8('0x47')](function(){logger[_0xafb8('0x36')](_0xafb8('0x48'));});}}return _0x52d6b5({'code':0xc8,'message':_0xc2ba19});}catch(_0x14dae7){logger[_0xafb8('0x36')](_0x14dae7[_0xafb8('0x49')]);return _0x21920f(_0x23df0c[_0xafb8('0x36')](0x1f4,_0x14dae7));}}logger[_0xafb8('0x36')](_0xafb8('0x4a'));return _0x21920f(_0x23df0c[_0xafb8('0x36')](0x1f4,_0xafb8('0x4a')));});},'RejectMessage':function(_0x5ea3e9){var _0xe31143=this;return new Promise(function(_0x44a376,_0x1a017b){if(_0x5ea3e9['agent']&&_0x5ea3e9[_0xafb8('0x40')]['id']){try{if(_0x3010c5[_0xafb8('0x41')][_0x5ea3e9[_0xafb8('0x40')]['id']]){_0x3010c5[_0xafb8('0x41')][_0x5ea3e9[_0xafb8('0x40')]['id']][_0xafb8('0x42')]=![];_0x3010c5[_0xafb8('0x41')][_0x5ea3e9['agent']['id']][_0xafb8('0x43')]=undefined;}return _0x44a376({'code':0xc8,'message':_0x5ea3e9});}catch(_0x19df8f){logger[_0xafb8('0x36')](_0x19df8f[_0xafb8('0x49')]);return _0x1a017b(_0xe31143[_0xafb8('0x36')](0x1f4,_0x19df8f));}}logger[_0xafb8('0x36')](_0xafb8('0x4a'));return _0x1a017b(_0xe31143['error'](0x1f4,_0xafb8('0x4a')));});},'AbandonInteraction':function(_0x9ff6b3){var _0x7b78ee=this;return new Promise(function(_0x1642b9,_0x24c99e){if(_0x9ff6b3[_0xafb8('0x15')]&&_0x9ff6b3[_0xafb8('0x17')]&&_0x9ff6b3['interaction']['id']){try{var _0x55f914=getId(_0x9ff6b3['channel'],_0x9ff6b3[_0xafb8('0x16')]?_0x9ff6b3[_0xafb8('0x16')]['id']:0x0,_0x9ff6b3[_0xafb8('0x17')]?_0x9ff6b3[_0xafb8('0x17')]['id']:0x0);if(_0x3010c5[_0xafb8('0x38')][_0x55f914]){_0x3010c5[_0xafb8('0x38')][_0x55f914]['emit'](_0xafb8('0x44'));}return _0x1642b9({'code':0xc8,'message':_0x9ff6b3});}catch(_0x56c8eb){logger['error'](_0x56c8eb['stack']);return _0x24c99e(_0x7b78ee[_0xafb8('0x36')](0x1f4,_0x56c8eb));}}logger['error']('message\x20is\x20empty');return _0x24c99e(_0x7b78ee[_0xafb8('0x36')](0x1f4,_0xafb8('0x4a')));});},'AgentCapacity':function(_0x2c2749){var _0x3119e3=this;return new Promise(function(_0x2a81c7,_0x47d0cb){if(_0x3010c5[_0xafb8('0x41')][_0xafb8('0x4b')](_0x2c2749['id'])){for(var _0x5c390a in _0x2c2749[_0xafb8('0x4c')]){if(_0x2c2749['capacity'][_0xafb8('0x4b')](_0x5c390a)){if(_0x3010c5[_0xafb8('0x41')][_0x2c2749['id']][_0xafb8('0x4b')](_0x5c390a+_0xafb8('0x4d'))){_0x3010c5[_0xafb8('0x41')][_0x2c2749['id']][_0x5c390a+_0xafb8('0x4d')]=parseInt(_0x2c2749['capacity'][_0x5c390a],0xa);}}}_0x3010c5[_0xafb8('0x41')][_0x2c2749['id']]['updateRealtime']();return _0x2a81c7({'code':0xc8,'message':_0x3010c5[_0xafb8('0x41')][_0x2c2749['id']]});}else{return _0x47d0cb(_0x3119e3[_0xafb8('0x36')](0x1f4,_0xafb8('0x4e')));}});},'Agents':function(_0x2d0cc0){return new Promise(function(_0x32d684){var _0x1efb9d=_['values'](_0x3010c5[_0xafb8('0x41')]);if(_0x2d0cc0&&_0x2d0cc0['id']){var _0x1e37c7=_[_0xafb8('0x4f')](_0x1efb9d,function(_0x241c22){return _0x241c22['id']===_0x2d0cc0['id'];});_0x32d684(_0x1e37c7);}else{_0x32d684({'count':_0x1efb9d['length'],'rows':_0x1efb9d});}});},'ChatQueues':function(){return new Promise(function(_0x179c4f){var _0x43a394=[];for(var _0x1ba6f9 in _0x3010c5[_0xafb8('0x50')]){if(_0x3010c5[_0xafb8('0x50')][_0xafb8('0x4b')](_0x1ba6f9)){var _0x39c68c=_0x3010c5[_0xafb8('0x50')][_0x1ba6f9];var _0x115072={'id':_0x39c68c['id'],'available':_0x39c68c[_0xafb8('0x51')],'loggedIn':_0x39c68c[_0xafb8('0x52')],'name':_0x39c68c[_0xafb8('0x53')],'paused':_0x39c68c['paused'],'waiting':_0x39c68c['waiting']};_0x43a394[_0xafb8('0x22')](_0x115072);}}_0x179c4f({'count':_0x43a394[_0xafb8('0x1b')],'rows':_0x43a394});});},'MailQueues':function(){return new Promise(function(_0x4fb794){var _0xcca3f7=[];for(var _0x55f825 in _0x3010c5['mailQueues']){if(_0x3010c5[_0xafb8('0x54')][_0xafb8('0x4b')](_0x55f825)){var _0x47f668=_0x3010c5['mailQueues'][_0x55f825];var _0xa67b2a={'id':_0x47f668['id'],'available':_0x47f668[_0xafb8('0x51')],'loggedIn':_0x47f668['loggedIn'],'name':_0x47f668[_0xafb8('0x53')],'paused':_0x47f668[_0xafb8('0x55')],'waiting':_0x47f668[_0xafb8('0x56')]};_0xcca3f7[_0xafb8('0x22')](_0xa67b2a);}}_0x4fb794({'count':_0xcca3f7[_0xafb8('0x1b')],'rows':_0xcca3f7});});},'OpenchannelQueues':function(){return new Promise(function(_0x10fa9d){var _0x940207=[];for(var _0x1bcd7a in _0x3010c5[_0xafb8('0x57')]){if(_0x3010c5['openchannelQueues']['hasOwnProperty'](_0x1bcd7a)){var _0x36e372=_0x3010c5[_0xafb8('0x57')][_0x1bcd7a];var _0x23352e={'id':_0x36e372['id'],'available':_0x36e372['available'],'loggedIn':_0x36e372['loggedIn'],'name':_0x36e372[_0xafb8('0x53')],'paused':_0x36e372[_0xafb8('0x55')],'waiting':_0x36e372[_0xafb8('0x56')]};_0x940207['push'](_0x23352e);}}_0x10fa9d({'count':_0x940207[_0xafb8('0x1b')],'rows':_0x940207});});},'SmsQueues':function(){return new Promise(function(_0x9e6c17){var _0xb2bfeb=[];for(var _0x2ba07b in _0x3010c5[_0xafb8('0x58')]){if(_0x3010c5[_0xafb8('0x58')][_0xafb8('0x4b')](_0x2ba07b)){var _0x1274fc=_0x3010c5[_0xafb8('0x58')][_0x2ba07b];var _0xe16e5e={'id':_0x1274fc['id'],'available':_0x1274fc['available'],'loggedIn':_0x1274fc[_0xafb8('0x52')],'name':_0x1274fc[_0xafb8('0x53')],'paused':_0x1274fc[_0xafb8('0x55')],'waiting':_0x1274fc['waiting']};_0xb2bfeb[_0xafb8('0x22')](_0xe16e5e);}}_0x9e6c17({'count':_0xb2bfeb[_0xafb8('0x1b')],'rows':_0xb2bfeb});});},'FaxQueues':function(){return new Promise(function(_0x1f5b2b){var _0x3f19fb=[];for(var _0x21d17a in _0x3010c5[_0xafb8('0x59')]){if(_0x3010c5[_0xafb8('0x59')]['hasOwnProperty'](_0x21d17a)){var _0x334453=_0x3010c5[_0xafb8('0x59')][_0x21d17a];var _0x39439c={'id':_0x334453['id'],'available':_0x334453[_0xafb8('0x51')],'loggedIn':_0x334453[_0xafb8('0x52')],'name':_0x334453['name'],'paused':_0x334453[_0xafb8('0x55')],'waiting':_0x334453[_0xafb8('0x56')]};_0x3f19fb['push'](_0x39439c);}}_0x1f5b2b({'count':_0x3f19fb[_0xafb8('0x1b')],'rows':_0x3f19fb});});},'WhatsappQueues':function(){return new Promise(function(_0x6bf82f){var _0x4e813b=[];for(var _0x59d6a3 in _0x3010c5[_0xafb8('0x5a')]){if(_0x3010c5[_0xafb8('0x5a')][_0xafb8('0x4b')](_0x59d6a3)){var _0x533e5a=_0x3010c5[_0xafb8('0x5a')][_0x59d6a3];var _0x509f4e={'id':_0x533e5a['id'],'available':_0x533e5a[_0xafb8('0x51')],'loggedIn':_0x533e5a[_0xafb8('0x52')],'name':_0x533e5a[_0xafb8('0x53')],'paused':_0x533e5a[_0xafb8('0x55')],'waiting':_0x533e5a[_0xafb8('0x56')]};_0x4e813b[_0xafb8('0x22')](_0x509f4e);}}_0x6bf82f({'count':_0x4e813b[_0xafb8('0x1b')],'rows':_0x4e813b});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x882f01){var _0x3e3144=_[_0xafb8('0x5b')](_0x3010c5[_0xafb8('0x5c')]);_0x882f01({'count':_0x3e3144[_0xafb8('0x1b')],'rows':_0x3e3144});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x971cb8){var _0x579112=_[_0xafb8('0x5b')](_0x3010c5[_0xafb8('0x5d')]);_0x971cb8({'count':_0x579112[_0xafb8('0x1b')],'rows':_0x579112});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x300efa){var _0x20c479=_[_0xafb8('0x5b')](_0x3010c5[_0xafb8('0x5e')]);_0x300efa({'count':_0x20c479[_0xafb8('0x1b')],'rows':_0x20c479});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x3744e1){var _0x11c42e=_[_0xafb8('0x5b')](_0x3010c5[_0xafb8('0x5f')]);_0x3744e1({'count':_0x11c42e[_0xafb8('0x1b')],'rows':_0x11c42e});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x28c359){var _0x18d449=_[_0xafb8('0x5b')](_0x3010c5[_0xafb8('0x60')]);_0x28c359({'count':_0x18d449[_0xafb8('0x1b')],'rows':_0x18d449});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x2a1694){var _0x2b146b=_[_0xafb8('0x5b')](_0x3010c5['whatsappQueuesWaitingInteractions']);_0x2a1694({'count':_0x2b146b[_0xafb8('0x1b')],'rows':_0x2b146b});});}};var _0x4dba3b=jayson[_0xafb8('0x61')](_0x2fe3b5)[_0xafb8('0x62')]();_0x4dba3b['on']('error',function(_0x5c049e){logger[_0xafb8('0x36')](JSON[_0xafb8('0x3b')](_0x5c049e));return _0x4579f2(_0x5c049e);});_0x4dba3b[_0xafb8('0x63')](0x232c,_0xafb8('0x64'),function(){console[_0xafb8('0x65')](_0xafb8('0x66'),0x232c);return _0x20efb8(_0xafb8('0x67')+0x232c);});});};
\ No newline at end of file
+var _0xfd49=['Intervals','map','interval','listen','channel','message','interaction','checkWaitingNotifications','applications','isArray','length','existsSync','join','app','.js','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','tvox','getMustacheRender','notificationTemplate','ChatWebsiteId','body','format','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','info','Push\x20new\x20rule','on\x20interval','error','rules','execute','stringify','matchPath','emit','complete','Skipped\x20routing\x20for\x20%s','stack','routing\x20is\x20empty','agent','agents','busyQueue','end','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','hasOwnProperty','capacity','CurrentCapacity','find','chatQueues','available','loggedIn','paused','waiting','mailQueues','name','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','./applications/strategy/util','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/faxQueueReport','%s.%s.%s','isNil','IntervalId'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xfd49,0x121));var _0x9fd4=function(_0x31324f,_0x21655d){_0x31324f=_0x31324f-0x0;var _0x38d138=_0xfd49[_0x31324f];return _0x38d138;};'use strict';var _=require(_0x9fd4('0x0'));var util=require(_0x9fd4('0x1'));var path=require(_0x9fd4('0x2'));var fs=require('fs');var jayson=require(_0x9fd4('0x3'));var BPromise=require(_0x9fd4('0x4'));var utils=require('./applications/utils');var sUtils=require(_0x9fd4('0x5'));var logger=require(_0x9fd4('0x6'))(_0x9fd4('0x7'));var rpc={'openchannelQueueReport':require(_0x9fd4('0x8')),'mailQueueReport':require(_0x9fd4('0x9')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0x9fd4('0xa')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0x2ea444,_0x5aa18c,_0x19c5cf){return util['format'](_0x9fd4('0xb'),_0x2ea444,_0x5aa18c||0x0,_0x19c5cf||0x0);}function getIntervals(_0x1e59dd,_0x4c2f58){var _0x191bc2=[];if(!_[_0x9fd4('0xc')](_0x4c2f58[_0x9fd4('0xd')])&&!_['isNil'](_0x1e59dd[_0x4c2f58[_0x9fd4('0xd')]])&&!_[_0x9fd4('0xc')](_0x1e59dd[_0x4c2f58[_0x9fd4('0xd')]][_0x9fd4('0xe')])){_0x191bc2=_[_0x9fd4('0xf')](_0x1e59dd[_0x4c2f58[_0x9fd4('0xd')]][_0x9fd4('0xe')],_0x9fd4('0x10'));}else if(!_[_0x9fd4('0xc')](_0x4c2f58['interval'])){_0x191bc2=[_0x4c2f58[_0x9fd4('0x10')]];}return _0x191bc2;}exports[_0x9fd4('0x11')]=function(_0x2bdb31){_0x2bdb31['rules']={};return new BPromise(function(_0x3ef064,_0x2749bf){var _0x1a609a={'Start':function(_0x1b92af){var _0x2ae467=this;return new Promise(function(_0x54efaa,_0x59143e){if(_0x1b92af){try{var _0x5bcca3=[];var _0x16e7a8=getId(_0x1b92af[_0x9fd4('0x12')],_0x1b92af[_0x9fd4('0x13')]?_0x1b92af[_0x9fd4('0x13')]['id']:0x0,_0x1b92af[_0x9fd4('0x14')]?_0x1b92af[_0x9fd4('0x14')]['id']:0x0);var _0x33e2f4=sUtils[_0x9fd4('0x15')](_0x2bdb31,_0x1b92af);if(_0x1b92af['transfer']||!_0x33e2f4&&_0x1b92af[_0x9fd4('0x16')]&&_[_0x9fd4('0x17')](_0x1b92af[_0x9fd4('0x16')])&&_0x1b92af[_0x9fd4('0x16')][_0x9fd4('0x18')]){for(var _0x1d8810=0x0;_0x1d8810<_0x1b92af[_0x9fd4('0x16')]['length'];_0x1d8810+=0x1){var _0x22851f=_0x1b92af[_0x9fd4('0x16')][_0x1d8810];if(fs[_0x9fd4('0x19')](path[_0x9fd4('0x1a')](__dirname,'applications',_0x22851f[_0x9fd4('0x1b')]+_0x9fd4('0x1c')))){var _0x2a44dc=[];switch(_0x22851f[_0x9fd4('0x1b')]['toLowerCase']()){case _0x9fd4('0x1d'):var _0x4d18da=_0x22851f[_0x9fd4('0x1e')][_0x9fd4('0x1f')](',');if(_0x1b92af[_0x9fd4('0x12')]===_0x9fd4('0x20')){_0x2a44dc['push'](_0x4d18da[0x0]);_0x2a44dc[_0x9fd4('0x21')](_0x4d18da[0x1]);_0x2a44dc[_0x9fd4('0x21')](_0x4d18da[_0x9fd4('0x22')](0x2,_0x4d18da['length'])['join'](','));}else{_0x2a44dc['push'](_0x4d18da[0x0]);_0x2a44dc[_0x9fd4('0x21')](_0x4d18da[_0x9fd4('0x22')](0x1,_0x4d18da[_0x9fd4('0x18')])[_0x9fd4('0x1a')](','));}break;case _0x9fd4('0x23'):var _0x24cc70=_0x22851f['appdata'][_0x9fd4('0x1f')](',');_0x2a44dc['push'](_0x24cc70[0x0]);_0x2a44dc[_0x9fd4('0x21')](_0x24cc70[0x1]);_0x2a44dc[_0x9fd4('0x21')](_0x24cc70[_0x9fd4('0x22')](0x2,_0x24cc70['length'])[_0x9fd4('0x1a')](','));break;case _0x9fd4('0x24'):var _0xe4191e=_0x22851f['appdata']['split'](',');_0x2a44dc[_0x9fd4('0x21')](_0xe4191e[0x0]);_0x2a44dc[_0x9fd4('0x21')](_0xe4191e[0x1]);_0x2a44dc[_0x9fd4('0x21')](_0xe4191e[0x2]);_0x2a44dc[_0x9fd4('0x21')](_0xe4191e[0x3]);_0x2a44dc['push'](_0xe4191e['slice'](0x4,_0xe4191e[_0x9fd4('0x18')])[_0x9fd4('0x1a')](','));break;case _0x9fd4('0x25'):var _0x119d89=_0x22851f[_0x9fd4('0x1e')]['split'](',');_0x2a44dc['push'](_0x119d89[0x0]);_0x2a44dc[_0x9fd4('0x21')](_0x119d89[0x1]);_0x2a44dc['push'](_0x119d89[0x2]);_0x2a44dc[_0x9fd4('0x21')](_0x119d89[0x3]);_0x2a44dc[_0x9fd4('0x21')](_0x119d89['slice'](0x4,_0x119d89[_0x9fd4('0x18')])[_0x9fd4('0x1a')](','));break;case'message':_0x2a44dc[_0x9fd4('0x21')](_0x22851f['appdata']);break;case _0x9fd4('0x26'):_0x2a44dc[_0x9fd4('0x21')](_0x22851f[_0x9fd4('0x27')]);_0x2a44dc[_0x9fd4('0x21')](_0x22851f[_0x9fd4('0x1e')]);break;case _0x9fd4('0x28'):var _0x15ebd4=utils[_0x9fd4('0x29')](_0x1b92af['account'][_0x9fd4('0x2a')],_0x1b92af);var _0x4f1909=_0x22851f['appdata'][_0x9fd4('0x1f')](',');_0x2a44dc[_0x9fd4('0x21')](_0x4f1909[0x0]);_0x2a44dc['push'](_0x4f1909[0x1]);_0x2a44dc['push'](_0x4f1909[0x2]);_0x2a44dc[_0x9fd4('0x21')](_0x4f1909[0x3]);_0x2a44dc['push'](_0x4f1909[0x4]);_0x2a44dc['push'](_0x4f1909[0x5]);_0x2a44dc[_0x9fd4('0x21')](_0x4f1909[0x6]);_0x2a44dc['push'](_0x4f1909[0x7]);_0x2a44dc[_0x9fd4('0x21')](_0x4f1909[0x8]);_0x2a44dc['push'](_0x4f1909[0x9]);_0x2a44dc[_0x9fd4('0x21')](_0x4f1909[0xa]);_0x2a44dc['push'](_0x1b92af['interaction']['id']);_0x2a44dc[_0x9fd4('0x21')](_0x1b92af[_0x9fd4('0x13')]['id']);_0x2a44dc['push'](_0x22851f[_0x9fd4('0x2b')]);_0x2a44dc['push'](_0x1b92af[_0x9fd4('0x14')]['ContactId']);_0x2a44dc[_0x9fd4('0x21')](_0x1b92af[_0x9fd4('0x2c')][_0x9fd4('0x2c')]);_0x2a44dc[_0x9fd4('0x21')](_0x15ebd4);break;default:_0x2a44dc=_[_0x9fd4('0xc')](_0x22851f['appdata'])?[]:_0x22851f['appdata'][_0x9fd4('0x1f')](',');}var _0x40af9a={'id':util[_0x9fd4('0x2d')](_0x9fd4('0x2e'),_0x16e7a8,_0x22851f['id'],_0x22851f['app']),'condition':require(_0x9fd4('0x2f'))[_0x9fd4('0x30')](_0x16e7a8,getIntervals(_0x2bdb31[_0x9fd4('0x31')],_0x22851f),_0x2bdb31),'consequence':require(_0x9fd4('0x32')+_0x22851f[_0x9fd4('0x1b')])[_0x9fd4('0x33')](_0x16e7a8,_0x2a44dc,_0x2bdb31,_0x1b92af),'p':_0x22851f['priority']||0x0};logger[_0x9fd4('0x34')](_0x9fd4('0x35'),_0x40af9a['id'],_0x9fd4('0x36'),getIntervals(_0x2bdb31['intervals'],_0x22851f)[_0x9fd4('0x1a')]('\x20|\x20'));_0x5bcca3[_0x9fd4('0x21')](_0x40af9a);}else{logger[_0x9fd4('0x37')]('Please\x20create\x20a\x20new\x20file\x20under',path['join'](__dirname,_0x9fd4('0x16'),_0x22851f[_0x9fd4('0x1b')]+_0x9fd4('0x1c')));}}_0x2bdb31['rules'][_0x16e7a8]=new RuleEngine(_0x5bcca3);_0x2bdb31[_0x9fd4('0x38')][_0x16e7a8][_0x9fd4('0x39')](_0x1b92af,function(_0x5c3b2c){logger[_0x9fd4('0x34')]('Applications\x20executed',JSON[_0x9fd4('0x3a')](_0x5c3b2c[_0x9fd4('0x3b')]));if(_0x2bdb31['rules'][_0x16e7a8]){_0x2bdb31[_0x9fd4('0x38')][_0x16e7a8][_0x9fd4('0x3c')](_0x9fd4('0x3d'));}});return _0x54efaa({'code':0xc8,'message':_0x1b92af});}else{if(_0x33e2f4){logger[_0x9fd4('0x34')](util[_0x9fd4('0x2d')](_0x9fd4('0x3e'),_0x16e7a8));}else{logger['info']('No\x20applications\x20to\x20execute');}return _0x54efaa({'code':0xc8,'message':_0x1b92af});}}catch(_0x5ef2e1){logger[_0x9fd4('0x37')](_0x5ef2e1[_0x9fd4('0x3f')]);return _0x59143e(_0x2ae467[_0x9fd4('0x37')](0x1f4,_0x5ef2e1));}}return _0x59143e(_0x9fd4('0x40'));});},'AcceptMessage':function(_0x18b8f3){var _0x2b1811=this;return new Promise(function(_0xa9cb7a,_0x17ffd8){if(_0x18b8f3[_0x9fd4('0x41')]&&_0x18b8f3['agent']['id']){if(_0x2bdb31['agents'][_0x18b8f3['agent']['id']]){_0x2bdb31[_0x9fd4('0x42')][_0x18b8f3[_0x9fd4('0x41')]['id']]['busy']=![];_0x2bdb31[_0x9fd4('0x42')][_0x18b8f3[_0x9fd4('0x41')]['id']][_0x9fd4('0x43')]=undefined;}}if(_0x18b8f3['message']&&_0x18b8f3['message']['id']){try{var _0x24972f=getId(_0x18b8f3[_0x9fd4('0x12')],_0x18b8f3[_0x9fd4('0x13')]?_0x18b8f3['message']['id']:0x0,_0x18b8f3[_0x9fd4('0x14')]?_0x18b8f3[_0x9fd4('0x14')]['id']:0x0);if(_0x2bdb31[_0x9fd4('0x38')][_0x24972f]){_0x2bdb31[_0x9fd4('0x38')][_0x24972f][_0x9fd4('0x3c')](_0x9fd4('0x44'));if(rpc[_0x18b8f3[_0x9fd4('0x12')]+'QueueReport']){rpc[_0x18b8f3['channel']+'QueueReport'][_0x9fd4('0x45')](_0x24972f,{'UserId':_0x18b8f3['message'][_0x9fd4('0x46')]})[_0x9fd4('0x47')](function(){logger[_0x9fd4('0x37')](_0x9fd4('0x48'));});}}return _0xa9cb7a({'code':0xc8,'message':_0x18b8f3});}catch(_0x12df65){logger[_0x9fd4('0x37')](_0x12df65[_0x9fd4('0x3f')]);return _0x17ffd8(_0x2b1811[_0x9fd4('0x37')](0x1f4,_0x12df65));}}logger[_0x9fd4('0x37')](_0x9fd4('0x49'));return _0x17ffd8(_0x2b1811['error'](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x34176f){var _0x3835bb=this;return new Promise(function(_0x1eb939,_0x5c87ad){if(_0x34176f[_0x9fd4('0x41')]&&_0x34176f[_0x9fd4('0x41')]['id']){try{if(_0x2bdb31['agents'][_0x34176f[_0x9fd4('0x41')]['id']]){_0x2bdb31[_0x9fd4('0x42')][_0x34176f['agent']['id']][_0x9fd4('0x4a')]=![];_0x2bdb31[_0x9fd4('0x42')][_0x34176f[_0x9fd4('0x41')]['id']][_0x9fd4('0x43')]=undefined;}return _0x1eb939({'code':0xc8,'message':_0x34176f});}catch(_0x179377){logger[_0x9fd4('0x37')](_0x179377[_0x9fd4('0x3f')]);return _0x5c87ad(_0x3835bb['error'](0x1f4,_0x179377));}}logger['error']('message\x20is\x20empty');return _0x5c87ad(_0x3835bb['error'](0x1f4,_0x9fd4('0x49')));});},'AbandonInteraction':function(_0x17f9fd){var _0x342623=this;return new Promise(function(_0x47995a,_0x65d322){if(_0x17f9fd[_0x9fd4('0x12')]&&_0x17f9fd[_0x9fd4('0x14')]&&_0x17f9fd['interaction']['id']){try{var _0x23f7b5=getId(_0x17f9fd[_0x9fd4('0x12')],_0x17f9fd[_0x9fd4('0x13')]?_0x17f9fd[_0x9fd4('0x13')]['id']:0x0,_0x17f9fd[_0x9fd4('0x14')]?_0x17f9fd['interaction']['id']:0x0);if(_0x2bdb31[_0x9fd4('0x38')][_0x23f7b5]){_0x2bdb31['rules'][_0x23f7b5]['emit']('end');}return _0x47995a({'code':0xc8,'message':_0x17f9fd});}catch(_0x3ae019){logger[_0x9fd4('0x37')](_0x3ae019[_0x9fd4('0x3f')]);return _0x65d322(_0x342623[_0x9fd4('0x37')](0x1f4,_0x3ae019));}}logger[_0x9fd4('0x37')](_0x9fd4('0x49'));return _0x65d322(_0x342623[_0x9fd4('0x37')](0x1f4,_0x9fd4('0x49')));});},'AgentCapacity':function(_0x58fc12){var _0x494b9a=this;return new Promise(function(_0x793c6b,_0x2eb5e4){if(_0x2bdb31[_0x9fd4('0x42')][_0x9fd4('0x4b')](_0x58fc12['id'])){for(var _0xd78877 in _0x58fc12['capacity']){if(_0x58fc12[_0x9fd4('0x4c')][_0x9fd4('0x4b')](_0xd78877)){if(_0x2bdb31[_0x9fd4('0x42')][_0x58fc12['id']][_0x9fd4('0x4b')](_0xd78877+_0x9fd4('0x4d'))){_0x2bdb31[_0x9fd4('0x42')][_0x58fc12['id']][_0xd78877+_0x9fd4('0x4d')]=parseInt(_0x58fc12[_0x9fd4('0x4c')][_0xd78877],0xa);}}}_0x2bdb31['agents'][_0x58fc12['id']]['updateRealtime']();return _0x793c6b({'code':0xc8,'message':_0x2bdb31[_0x9fd4('0x42')][_0x58fc12['id']]});}else{return _0x2eb5e4(_0x494b9a[_0x9fd4('0x37')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x637201){return new Promise(function(_0x278e0b){var _0x1c948d=_['values'](_0x2bdb31[_0x9fd4('0x42')]);if(_0x637201&&_0x637201['id']){var _0x31dfe7=_[_0x9fd4('0x4e')](_0x1c948d,function(_0x3dfc45){return _0x3dfc45['id']===_0x637201['id'];});_0x278e0b(_0x31dfe7);}else{_0x278e0b({'count':_0x1c948d[_0x9fd4('0x18')],'rows':_0x1c948d});}});},'ChatQueues':function(){return new Promise(function(_0x190886){var _0xdaf432=[];for(var _0x3e8855 in _0x2bdb31[_0x9fd4('0x4f')]){if(_0x2bdb31['chatQueues']['hasOwnProperty'](_0x3e8855)){var _0x321235=_0x2bdb31[_0x9fd4('0x4f')][_0x3e8855];var _0x5be654={'id':_0x321235['id'],'available':_0x321235[_0x9fd4('0x50')],'loggedIn':_0x321235[_0x9fd4('0x51')],'name':_0x321235['name'],'paused':_0x321235[_0x9fd4('0x52')],'waiting':_0x321235[_0x9fd4('0x53')]};_0xdaf432[_0x9fd4('0x21')](_0x5be654);}}_0x190886({'count':_0xdaf432[_0x9fd4('0x18')],'rows':_0xdaf432});});},'MailQueues':function(){return new Promise(function(_0x5d05cc){var _0x35e232=[];for(var _0x2b9e9e in _0x2bdb31['mailQueues']){if(_0x2bdb31[_0x9fd4('0x54')][_0x9fd4('0x4b')](_0x2b9e9e)){var _0x41db74=_0x2bdb31[_0x9fd4('0x54')][_0x2b9e9e];var _0x43839a={'id':_0x41db74['id'],'available':_0x41db74[_0x9fd4('0x50')],'loggedIn':_0x41db74[_0x9fd4('0x51')],'name':_0x41db74[_0x9fd4('0x55')],'paused':_0x41db74[_0x9fd4('0x52')],'waiting':_0x41db74['waiting']};_0x35e232['push'](_0x43839a);}}_0x5d05cc({'count':_0x35e232[_0x9fd4('0x18')],'rows':_0x35e232});});},'OpenchannelQueues':function(){return new Promise(function(_0x44b622){var _0x2a401d=[];for(var _0x3509bc in _0x2bdb31[_0x9fd4('0x56')]){if(_0x2bdb31[_0x9fd4('0x56')][_0x9fd4('0x4b')](_0x3509bc)){var _0x429d28=_0x2bdb31[_0x9fd4('0x56')][_0x3509bc];var _0x3d23d8={'id':_0x429d28['id'],'available':_0x429d28[_0x9fd4('0x50')],'loggedIn':_0x429d28['loggedIn'],'name':_0x429d28[_0x9fd4('0x55')],'paused':_0x429d28['paused'],'waiting':_0x429d28[_0x9fd4('0x53')]};_0x2a401d[_0x9fd4('0x21')](_0x3d23d8);}}_0x44b622({'count':_0x2a401d['length'],'rows':_0x2a401d});});},'SmsQueues':function(){return new Promise(function(_0x3106b9){var _0x41f5fd=[];for(var _0x20ffbc in _0x2bdb31['smsQueues']){if(_0x2bdb31['smsQueues']['hasOwnProperty'](_0x20ffbc)){var _0x2844ce=_0x2bdb31[_0x9fd4('0x57')][_0x20ffbc];var _0x4f14ec={'id':_0x2844ce['id'],'available':_0x2844ce[_0x9fd4('0x50')],'loggedIn':_0x2844ce[_0x9fd4('0x51')],'name':_0x2844ce[_0x9fd4('0x55')],'paused':_0x2844ce[_0x9fd4('0x52')],'waiting':_0x2844ce[_0x9fd4('0x53')]};_0x41f5fd[_0x9fd4('0x21')](_0x4f14ec);}}_0x3106b9({'count':_0x41f5fd[_0x9fd4('0x18')],'rows':_0x41f5fd});});},'FaxQueues':function(){return new Promise(function(_0x1da300){var _0x246fc3=[];for(var _0x326f83 in _0x2bdb31[_0x9fd4('0x58')]){if(_0x2bdb31['faxQueues'][_0x9fd4('0x4b')](_0x326f83)){var _0x67031e=_0x2bdb31[_0x9fd4('0x58')][_0x326f83];var _0xb661c0={'id':_0x67031e['id'],'available':_0x67031e['available'],'loggedIn':_0x67031e['loggedIn'],'name':_0x67031e[_0x9fd4('0x55')],'paused':_0x67031e['paused'],'waiting':_0x67031e[_0x9fd4('0x53')]};_0x246fc3[_0x9fd4('0x21')](_0xb661c0);}}_0x1da300({'count':_0x246fc3[_0x9fd4('0x18')],'rows':_0x246fc3});});},'WhatsappQueues':function(){return new Promise(function(_0x4110a2){var _0x5c3eea=[];for(var _0x34ae5d in _0x2bdb31['whatsappQueues']){if(_0x2bdb31['whatsappQueues'][_0x9fd4('0x4b')](_0x34ae5d)){var _0x134d7b=_0x2bdb31[_0x9fd4('0x59')][_0x34ae5d];var _0x393780={'id':_0x134d7b['id'],'available':_0x134d7b[_0x9fd4('0x50')],'loggedIn':_0x134d7b['loggedIn'],'name':_0x134d7b[_0x9fd4('0x55')],'paused':_0x134d7b['paused'],'waiting':_0x134d7b['waiting']};_0x5c3eea['push'](_0x393780);}}_0x4110a2({'count':_0x5c3eea[_0x9fd4('0x18')],'rows':_0x5c3eea});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0xa3bcd6){var _0x2d9d70=_[_0x9fd4('0x5a')](_0x2bdb31[_0x9fd4('0x5b')]);_0xa3bcd6({'count':_0x2d9d70[_0x9fd4('0x18')],'rows':_0x2d9d70});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x1682d3){var _0x22a05a=_[_0x9fd4('0x5a')](_0x2bdb31[_0x9fd4('0x5c')]);_0x1682d3({'count':_0x22a05a[_0x9fd4('0x18')],'rows':_0x22a05a});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x432918){var _0x4093a2=_[_0x9fd4('0x5a')](_0x2bdb31[_0x9fd4('0x5d')]);_0x432918({'count':_0x4093a2[_0x9fd4('0x18')],'rows':_0x4093a2});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x206be5){var _0x56cb16=_[_0x9fd4('0x5a')](_0x2bdb31[_0x9fd4('0x5e')]);_0x206be5({'count':_0x56cb16[_0x9fd4('0x18')],'rows':_0x56cb16});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x5c4f23){var _0x2eb0d3=_[_0x9fd4('0x5a')](_0x2bdb31[_0x9fd4('0x5f')]);_0x5c4f23({'count':_0x2eb0d3[_0x9fd4('0x18')],'rows':_0x2eb0d3});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x25e3f7){var _0x2cde31=_['values'](_0x2bdb31[_0x9fd4('0x60')]);_0x25e3f7({'count':_0x2cde31['length'],'rows':_0x2cde31});});}};var _0x15d1ac=jayson[_0x9fd4('0x61')](_0x1a609a)[_0x9fd4('0x62')]();_0x15d1ac['on'](_0x9fd4('0x37'),function(_0x18bde2){logger[_0x9fd4('0x37')](JSON[_0x9fd4('0x3a')](_0x18bde2));return _0x2749bf(_0x18bde2);});_0x15d1ac[_0x9fd4('0x11')](0x232c,_0x9fd4('0x63'),function(){console['log']('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x3ef064(_0x9fd4('0x64')+0x232c);});});};
\ No newline at end of file
index d5cc021..d17502c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdec1=['condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','map','some','[%s][INTERVAL\x20VALID]\x20%s\x20%s','\x20|\x20','when','[%s][INTERVAL\x20NOT\x20VALID]\x20%s\x20%s','lodash','../../../utils/iftime','iftime','../../../config/logger','routing'];(function(_0x1f6958,_0x584893){var _0x1342ab=function(_0x4c17f9){while(--_0x4c17f9){_0x1f6958['push'](_0x1f6958['shift']());}};_0x1342ab(++_0x584893);}(_0xdec1,0x17b));var _0x1dec=function(_0x2f9661,_0x595a0b){_0x2f9661=_0x2f9661-0x0;var _0x9324de=_0xdec1[_0x2f9661];return _0x9324de;};'use strict';var _=require(_0x1dec('0x0'));var iftime=require(_0x1dec('0x1'))[_0x1dec('0x2')];var logger=require(_0x1dec('0x3'))(_0x1dec('0x4'));exports[_0x1dec('0x5')]=function(_0x1c9397,_0x1589d1,_0x147f23){return function(_0x5bd322){if(_0x147f23[_0x1dec('0x6')]&&!_0x147f23['rules'][_0x1c9397]){logger[_0x1dec('0x7')](_0x1dec('0x8'),_0x1c9397);return _0x5bd322[_0x1dec('0x9')]();}var _0x5c0c86=_0x1589d1[_0x1dec('0xa')](function(_0xef1c4b){return iftime(_0xef1c4b);});var _0x4f01f6=_[_0x1dec('0xb')](_0x5c0c86);if(_0x4f01f6){logger[_0x1dec('0x7')](_0x1dec('0xc'),_0x1c9397,_0x1589d1['join'](_0x1dec('0xd')),_0x4f01f6);_0x5bd322[_0x1dec('0xe')](_0x4f01f6);}else{logger['info'](_0x1dec('0xf'),_0x1c9397,_0x1589d1['join']('\x20|\x20'));_0x5bd322[_0x1dec('0x9')]();}};};
\ No newline at end of file
+var _0xffe2=['when','info','stop','lodash','iftime','routing','condition','rules','map','some','[%s][INTERVAL\x20VALID]\x20%s\x20%s','join','\x20|\x20'];(function(_0x5a2520,_0x2cd6d8){var _0x4f38a7=function(_0x2258b3){while(--_0x2258b3){_0x5a2520['push'](_0x5a2520['shift']());}};_0x4f38a7(++_0x2cd6d8);}(_0xffe2,0x1b0));var _0x2ffe=function(_0x54cc08,_0x38d3ef){_0x54cc08=_0x54cc08-0x0;var _0x28989a=_0xffe2[_0x54cc08];return _0x28989a;};'use strict';var _=require(_0x2ffe('0x0'));var iftime=require('../../../utils/iftime')[_0x2ffe('0x1')];var logger=require('../../../config/logger')(_0x2ffe('0x2'));exports[_0x2ffe('0x3')]=function(_0x10510a,_0x3139cb,_0x1faf1c){return function(_0xd1fbd6){if(_0x1faf1c[_0x2ffe('0x4')]&&!_0x1faf1c[_0x2ffe('0x4')][_0x10510a]){logger['info']('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x10510a);return _0xd1fbd6['stop']();}var _0x982ae1=_0x3139cb[_0x2ffe('0x5')](function(_0x2c7539){return iftime(_0x2c7539);});var _0x5701f7=_[_0x2ffe('0x6')](_0x982ae1);if(_0x5701f7){logger['info'](_0x2ffe('0x7'),_0x10510a,_0x3139cb[_0x2ffe('0x8')](_0x2ffe('0x9')),_0x5701f7);_0xd1fbd6[_0x2ffe('0xa')](_0x5701f7);}else{logger[_0x2ffe('0xb')]('[%s][INTERVAL\x20NOT\x20VALID]\x20%s\x20%s',_0x10510a,_0x3139cb[_0x2ffe('0x8')](_0x2ffe('0x9')));_0xd1fbd6[_0x2ffe('0xc')]();}};};
\ No newline at end of file
index 4cb7229..5d6e9b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc9d=['[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','diffTime','agent','lodash','util','./utils','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','getVoiceQueueByName','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','debug','format','[%s][agents][agentcalled]','destuniqueid','agentcalledAt','now','lastevent','called','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswer','agentringnoanswerAt','timeout','reason','ringtime','push','queuecallerabandon','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','forIn','talktime','answered_elsewhere','answeredelsewheremembername','isNil','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','ATTENDED','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected'];(function(_0x59fdc6,_0x206a97){var _0x2517b1=function(_0x1d50de){while(--_0x1d50de){_0x59fdc6['push'](_0x59fdc6['shift']());}};_0x2517b1(++_0x206a97);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x59536b,_0x2630de){_0x59536b=_0x59536b-0x0;var _0x300afa=_0xbc9d[_0x59536b];return _0x300afa;};'use strict';var _=require(_0xdbc9('0x0'));var util=require(_0xdbc9('0x1'));var utils=require(_0xdbc9('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x434f6e,_0x35f89c){utils['info'](util['format']('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x434f6e[_0xdbc9('0x3')],_0x434f6e[_0xdbc9('0x4')],_0x434f6e[_0xdbc9('0x5')],_0x434f6e[_0xdbc9('0x6')],_0x434f6e[_0xdbc9('0x7')],_0x434f6e[_0xdbc9('0x8')],_0x434f6e[_0xdbc9('0x9')],_0x434f6e['lastevent']));if(_0x434f6e[_0xdbc9('0x5')]){utils[_0xdbc9('0xa')](_0x434f6e[_0xdbc9('0x5')])['then'](function(_0x2c7ba5){if(_0x2c7ba5){_0x434f6e['type']=_0x2c7ba5['type'];_0x434f6e[_0xdbc9('0xb')]=_0x434f6e[_0xdbc9('0xc')]?_0x2c7ba5[_0xdbc9('0xd')]:![];_0x434f6e[_0xdbc9('0xe')]=_0x434f6e['agentacw']?_0x2c7ba5[_0xdbc9('0xf')]:0x0;}utils[_0xdbc9('0x10')](_0xdbc9('0x11'),_0x434f6e);});}else{utils[_0xdbc9('0x10')](_0xdbc9('0x11'),_0x434f6e);}if(_0x35f89c){delete transfers[_0x434f6e[_0xdbc9('0x3')]];}else{delete agents[_0x434f6e['destuniqueid']];}}exports['agentcalled']=function(_0x3d0fdd){try{utils[_0xdbc9('0x12')](util[_0xdbc9('0x13')](_0xdbc9('0x14'),_0x3d0fdd[_0xdbc9('0x3')]),_0x3d0fdd);agents[_0x3d0fdd['destuniqueid']]=_0x3d0fdd;agents[_0x3d0fdd[_0xdbc9('0x15')]][_0xdbc9('0x16')]=utils[_0xdbc9('0x17')]();agents[_0x3d0fdd['destuniqueid']][_0xdbc9('0x18')]=_0xdbc9('0x19');agents[_0x3d0fdd['destuniqueid']][_0xdbc9('0x9')]=null;agents[_0x3d0fdd[_0xdbc9('0x15')]][_0xdbc9('0x1a')]=null;utils[_0xdbc9('0x1b')](util[_0xdbc9('0x13')](_0xdbc9('0x1c'),_0x3d0fdd[_0xdbc9('0x3')],agents[_0x3d0fdd[_0xdbc9('0x15')]][_0xdbc9('0x6')],_0x3d0fdd[_0xdbc9('0x15')]));}catch(_0x57a546){utils[_0xdbc9('0x1d')](util['format'](_0xdbc9('0x14'),_0x3d0fdd[_0xdbc9('0x3')]),_0x57a546);}};exports['agentringnoanswer']=function(_0x4408e9){try{if(!_['isNil'](agents[_0x4408e9['destuniqueid']])){utils['debug'](util['format'](_0xdbc9('0x1e'),_0x4408e9[_0xdbc9('0x3')]),_0x4408e9);utils['info'](util[_0xdbc9('0x13')](_0xdbc9('0x1f'),_0x4408e9['uniqueid'],agents[_0x4408e9[_0xdbc9('0x15')]][_0xdbc9('0x6')],_0x4408e9[_0xdbc9('0x15')]));agents[_0x4408e9[_0xdbc9('0x15')]][_0xdbc9('0x20')]=!![];agents[_0x4408e9[_0xdbc9('0x15')]][_0xdbc9('0x21')]=utils[_0xdbc9('0x17')]();agents[_0x4408e9[_0xdbc9('0x15')]]['lastevent']=_0xdbc9('0x22');agents[_0x4408e9[_0xdbc9('0x15')]][_0xdbc9('0x23')]=_0xdbc9('0x22');agents[_0x4408e9[_0xdbc9('0x15')]]['holdtime']=_0x4408e9[_0xdbc9('0x24')]?parseInt(_0x4408e9[_0xdbc9('0x24')])/0x3e8:0x0;agents[_0x4408e9['destuniqueid']]['talktime']=0x0;unanswered[_0xdbc9('0x25')](_0x4408e9[_0xdbc9('0x15')]);}}catch(_0x473430){utils['error'](util[_0xdbc9('0x13')]('[%s][agents][agentringnoanswer]',_0x4408e9['uniqueid']),_0x473430);}};exports[_0xdbc9('0x26')]=function(_0x49da36){try{_['forIn'](agents,function(_0x417b17,_0x20eb4f){if(_0x417b17[_0xdbc9('0x3')]==_0x49da36['uniqueid']&&!_[_0xdbc9('0x27')](unanswered,_0x417b17[_0xdbc9('0x15')])){utils['debug'](util['format'](_0xdbc9('0x28'),_0x49da36[_0xdbc9('0x3')]),_0x49da36);utils[_0xdbc9('0x1b')](util[_0xdbc9('0x13')](_0xdbc9('0x29'),_0x49da36[_0xdbc9('0x3')],_0x417b17[_0xdbc9('0x6')],_0x417b17['destuniqueid']));_0x417b17[_0xdbc9('0x20')]=!![];_0x417b17[_0xdbc9('0x21')]=utils[_0xdbc9('0x17')]();_0x417b17[_0xdbc9('0x18')]=_0xdbc9('0x2a');_0x417b17[_0xdbc9('0x23')]='abandoned';_0x417b17[_0xdbc9('0x2b')]=_0x49da36['holdtime'];_0x417b17['talktime']=0x0;writeDB(_0x417b17);}});}catch(_0x495c0e){utils['error'](util['format'](_0xdbc9('0x28'),_0x49da36[_0xdbc9('0x3')]),_0x495c0e);}};exports[_0xdbc9('0x2c')]=function(_0x5527fc){try{if(agents[_0x5527fc[_0xdbc9('0x15')]]){utils[_0xdbc9('0x12')](util[_0xdbc9('0x13')](_0xdbc9('0x2d'),_0x5527fc[_0xdbc9('0x3')]),_0x5527fc);utils[_0xdbc9('0x1b')](util['format'](_0xdbc9('0x2e'),_0x5527fc[_0xdbc9('0x3')],agents[_0x5527fc[_0xdbc9('0x15')]]['membername'],_0x5527fc[_0xdbc9('0x15')]));agents[_0x5527fc[_0xdbc9('0x15')]][_0xdbc9('0x2f')]=utils[_0xdbc9('0x17')]();agents[_0x5527fc['destuniqueid']]['connectedlinenum']=_0x5527fc[_0xdbc9('0x9')];agents[_0x5527fc[_0xdbc9('0x15')]][_0xdbc9('0x1a')]=_0x5527fc[_0xdbc9('0x1a')];agents[_0x5527fc['destuniqueid']][_0xdbc9('0x2b')]=_0x5527fc[_0xdbc9('0x24')];agents[_0x5527fc[_0xdbc9('0x15')]]['lastevent']=_0xdbc9('0x30');_[_0xdbc9('0x31')](agents,function(_0x444219,_0x523c79){if(_0x444219[_0xdbc9('0x15')]!=_0x5527fc[_0xdbc9('0x15')]&&_0x444219['uniqueid']==_0x5527fc['uniqueid']){_0x444219[_0xdbc9('0x32')]=0x0;_0x444219[_0xdbc9('0x2b')]=_0x5527fc[_0xdbc9('0x24')];_0x444219[_0xdbc9('0x20')]=!![];_0x444219['agentringnoanswerAt']=utils[_0xdbc9('0x17')]();_0x444219[_0xdbc9('0x18')]='answered_elsewhere';_0x444219[_0xdbc9('0x23')]=_0xdbc9('0x33');_0x444219['answeredelsewheredestinationuniqueid']=_0x5527fc[_0xdbc9('0x15')];_0x444219[_0xdbc9('0x34')]=_0x5527fc[_0xdbc9('0x6')];writeDB(_0x444219);}});}}catch(_0x3415c3){utils[_0xdbc9('0x1d')](util[_0xdbc9('0x13')](_0xdbc9('0x2d'),_0x5527fc['uniqueid']),_0x3415c3);}};exports['agentcomplete']=function(_0x768856){try{if(!_[_0xdbc9('0x35')](agents[_0x768856[_0xdbc9('0x15')]])){utils[_0xdbc9('0x12')](util[_0xdbc9('0x13')](_0xdbc9('0x36'),_0x768856[_0xdbc9('0x3')]),_0x768856);utils[_0xdbc9('0x1b')](util[_0xdbc9('0x13')](_0xdbc9('0x37'),_0x768856[_0xdbc9('0x3')],agents[_0x768856['destuniqueid']]['membername'],_0x768856[_0xdbc9('0x15')]));agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0xc')]=!![];agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0x38')]=utils[_0xdbc9('0x17')]();agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0x32')]=utils['diffTime'](agents[_0x768856['destuniqueid']][_0xdbc9('0x38')],agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0x2f')]);agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0x23')]=_0x768856[_0xdbc9('0x23')];agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0x18')]=_0xdbc9('0x39');writeDB(agents[_0x768856['destuniqueid']]);}}catch(_0x2c24a9){utils[_0xdbc9('0x1d')](util['format']('[%s][agents][agentcomplete]',_0x768856[_0xdbc9('0x3')]),_0x2c24a9);}};exports[_0xdbc9('0x3a')]=function(_0x133a13){try{if(!_['isNil'](agents[_0x133a13[_0xdbc9('0x3b')]])){utils[_0xdbc9('0x12')](util[_0xdbc9('0x13')](_0xdbc9('0x3c'),_0x133a13['uniqueid']),_0x133a13);utils[_0xdbc9('0x1b')](util[_0xdbc9('0x13')](_0xdbc9('0x3d'),_0x133a13[_0xdbc9('0x3')],agents[_0x133a13['transfereruniqueid']][_0xdbc9('0x6')],agents[_0x133a13[_0xdbc9('0x3b')]][_0xdbc9('0x3')]));agents[_0x133a13[_0xdbc9('0x3b')]][_0xdbc9('0x3e')]=!![];agents[_0x133a13[_0xdbc9('0x3b')]][_0xdbc9('0x3f')]=_0xdbc9('0x40');agents[_0x133a13['transfereruniqueid']][_0xdbc9('0x41')]=_0x133a13['extension'];agents[_0x133a13[_0xdbc9('0x3b')]][_0xdbc9('0x42')]=agents[_0x133a13['transfereruniqueid']]['uniqueid'];}}catch(_0xc7335d){utils['error'](util[_0xdbc9('0x13')](_0xdbc9('0x3c'),_0x133a13[_0xdbc9('0x3')]),_0xc7335d);}};exports['attendedtransfer']=function(_0x32b38d){try{utils[_0xdbc9('0x12')](util[_0xdbc9('0x13')](_0xdbc9('0x43'),_0x32b38d[_0xdbc9('0x44')]),_0x32b38d);if(_0x32b38d[_0xdbc9('0x44')]==_0x32b38d[_0xdbc9('0x45')]){if(!_[_0xdbc9('0x35')](agents[_0x32b38d['secondtransfereruniqueid']])){utils['info'](util['format'](_0xdbc9('0x46'),_0x32b38d[_0xdbc9('0x44')],agents[_0x32b38d[_0xdbc9('0x47')]]['membername']));agents[_0x32b38d['secondtransfereruniqueid']][_0xdbc9('0x3e')]=!![];agents[_0x32b38d[_0xdbc9('0x47')]]['transfertype']='ATTENDED';agents[_0x32b38d[_0xdbc9('0x47')]][_0xdbc9('0x41')]=_0x32b38d[_0xdbc9('0x48')];agents[_0x32b38d[_0xdbc9('0x47')]][_0xdbc9('0x42')]=_0x32b38d[_0xdbc9('0x44')];}if(_0x32b38d['transfereeuniqueid']&&agents[_0x32b38d[_0xdbc9('0x49')]]){agents[_0x32b38d[_0xdbc9('0x49')]][_0xdbc9('0x4a')]=0x1;transfers[_0x32b38d['transfereeuniqueid']]=_[_0xdbc9('0x4b')](agents[_0x32b38d[_0xdbc9('0x49')]]);transfers[_0x32b38d[_0xdbc9('0x49')]]['calleridnum']=agents[_0x32b38d[_0xdbc9('0x47')]]['calleridnum'];transfers[_0x32b38d[_0xdbc9('0x49')]][_0xdbc9('0x4c')]=agents[_0x32b38d[_0xdbc9('0x47')]][_0xdbc9('0x4c')];transfers[_0x32b38d[_0xdbc9('0x49')]][_0xdbc9('0x16')]=utils['now']();transfers[_0x32b38d[_0xdbc9('0x49')]]['agentconnectAt']=utils[_0xdbc9('0x17')]();transfers[_0x32b38d[_0xdbc9('0x49')]]['holdtime']=0x0;transfers[_0x32b38d[_0xdbc9('0x49')]][_0xdbc9('0x4a')]=0x2;}}else if(_0x32b38d['secondtransfereruniqueid']==_0x32b38d['secondtransfererlinkedid']){if(!_[_0xdbc9('0x35')](agents[_0x32b38d[_0xdbc9('0x44')]])){utils[_0xdbc9('0x1b')](util['format'](_0xdbc9('0x46'),_0x32b38d[_0xdbc9('0x44')],agents[_0x32b38d['origtransfereruniqueid']][_0xdbc9('0x6')]));agents[_0x32b38d[_0xdbc9('0x44')]]['transfer']=!![];agents[_0x32b38d['origtransfereruniqueid']][_0xdbc9('0x3f')]=_0xdbc9('0x4d');agents[_0x32b38d[_0xdbc9('0x44')]][_0xdbc9('0x41')]=_0x32b38d[_0xdbc9('0x4e')];agents[_0x32b38d[_0xdbc9('0x44')]][_0xdbc9('0x42')]=_0x32b38d[_0xdbc9('0x47')];}if(_0x32b38d['transfertargetuniqueid']&&agents[_0x32b38d[_0xdbc9('0x4f')]]){agents[_0x32b38d[_0xdbc9('0x4f')]][_0xdbc9('0x4a')]=0x1;transfers[_0x32b38d[_0xdbc9('0x4f')]]=_[_0xdbc9('0x4b')](agents[_0x32b38d[_0xdbc9('0x4f')]]);transfers[_0x32b38d[_0xdbc9('0x4f')]][_0xdbc9('0x8')]=agents[_0x32b38d['origtransfereruniqueid']][_0xdbc9('0x8')];transfers[_0x32b38d['transfertargetuniqueid']][_0xdbc9('0x4c')]=agents[_0x32b38d['origtransfereruniqueid']][_0xdbc9('0x4c')];transfers[_0x32b38d[_0xdbc9('0x4f')]]['agentcalledAt']=utils['now']();transfers[_0x32b38d['transfertargetuniqueid']][_0xdbc9('0x2f')]=utils[_0xdbc9('0x17')]();transfers[_0x32b38d[_0xdbc9('0x4f')]]['holdtime']=0x0;transfers[_0x32b38d[_0xdbc9('0x4f')]][_0xdbc9('0x4a')]=0x2;}}}catch(_0x53843c){utils[_0xdbc9('0x1d')](util[_0xdbc9('0x13')](_0xdbc9('0x43'),_0x32b38d[_0xdbc9('0x44')]),_0x53843c);}};exports[_0xdbc9('0x50')]=function(_0xfdfb20){try{utils['debug'](util[_0xdbc9('0x13')](_0xdbc9('0x51'),_0xfdfb20['uniqueid']),_0xfdfb20);if(agents[_0xfdfb20['uniqueid']]&&agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x23')]===_0xdbc9('0x22')){if(_0xfdfb20[_0xdbc9('0x52')]==='21'){agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x23')]=_0xdbc9('0x53');agents[_0xfdfb20['uniqueid']][_0xdbc9('0x18')]=_0xdbc9('0x53');}utils[_0xdbc9('0x1b')](util['format'](_0xdbc9('0x54'),_0xfdfb20[_0xdbc9('0x3')],agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x6')],agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x23')],agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x18')]));writeDB(agents[_0xfdfb20[_0xdbc9('0x3')]]);var _0x1afbcd=unanswered[_0xdbc9('0x55')](_0xfdfb20[_0xdbc9('0x3')]);if(_0x1afbcd>-0x1){unanswered['splice'](_0x1afbcd,0x1);}}if(transfers[_0xfdfb20['uniqueid']]){transfers[_0xfdfb20[_0xdbc9('0x3')]]['agentcomplete']=!![];transfers[_0xfdfb20['uniqueid']][_0xdbc9('0x38')]=utils[_0xdbc9('0x17')]();transfers[_0xfdfb20[_0xdbc9('0x3')]]['talktime']=utils[_0xdbc9('0x56')](transfers[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x38')],transfers[_0xfdfb20['uniqueid']][_0xdbc9('0x2f')]);transfers[_0xfdfb20[_0xdbc9('0x3')]]['reason']=_0xdbc9('0x57');transfers[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x18')]=_0xdbc9('0x39');utils[_0xdbc9('0x1b')](util['format']('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0xfdfb20[_0xdbc9('0x3')],transfers[_0xfdfb20[_0xdbc9('0x3')]]['membername'],transfers[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x23')],transfers[_0xfdfb20[_0xdbc9('0x3')]]['lastevent']));writeDB(transfers[_0xfdfb20[_0xdbc9('0x3')]],!![]);}if(agents[_0xfdfb20[_0xdbc9('0x3')]]&&agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x2f')]){agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0xc')]=!![];agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x38')]=utils['now']();agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x32')]=utils[_0xdbc9('0x56')](agents[_0xfdfb20[_0xdbc9('0x3')]]['agentcompleteAt'],agents[_0xfdfb20[_0xdbc9('0x3')]]['agentconnectAt']);agents[_0xfdfb20['uniqueid']][_0xdbc9('0x23')]=agents[_0xfdfb20[_0xdbc9('0x3')]]['transfer']?_0xdbc9('0x3e'):_0xdbc9('0x57');agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x18')]=_0xdbc9('0x39');utils[_0xdbc9('0x1b')](util[_0xdbc9('0x13')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0xfdfb20['uniqueid'],agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x6')],agents[_0xfdfb20[_0xdbc9('0x3')]]['reason'],agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x18')]));writeDB(agents[_0xfdfb20[_0xdbc9('0x3')]]);}}catch(_0x1839e4){utils[_0xdbc9('0x1d')](util[_0xdbc9('0x13')](_0xdbc9('0x51'),_0xfdfb20[_0xdbc9('0x3')]),_0x1839e4);}};
\ No newline at end of file
+var _0x4522=['agent','./utils','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentcomplete','agentacw','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalledAt','called','info','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','now','reason','timeout','holdtime','ringtime','talktime','queuecallerabandon','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','agentconnect','debug','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connect','forIn','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','transfer','transfertype','extension','transferuniqueid','[%s][agents][blindtransfer]','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','transferexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','splice','agentcompleteAt'];(function(_0x270b8c,_0x43bf26){var _0x5a76df=function(_0xc35bea){while(--_0xc35bea){_0x270b8c['push'](_0x270b8c['shift']());}};_0x5a76df(++_0x43bf26);}(_0x4522,0x1a0));var _0x2452=function(_0x3dffd6,_0x2198ba){_0x3dffd6=_0x3dffd6-0x0;var _0x37a687=_0x4522[_0x3dffd6];return _0x37a687;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x2452('0x0'));var agents={};var transfers={};var unanswered=[];function writeDB(_0xa5f6b7,_0x4a08d4){utils['info'](util[_0x2452('0x1')](_0x2452('0x2'),_0xa5f6b7[_0x2452('0x3')],_0xa5f6b7[_0x2452('0x4')],_0xa5f6b7[_0x2452('0x5')],_0xa5f6b7[_0x2452('0x6')],_0xa5f6b7[_0x2452('0x7')],_0xa5f6b7[_0x2452('0x8')],_0xa5f6b7[_0x2452('0x9')],_0xa5f6b7[_0x2452('0xa')]));if(_0xa5f6b7[_0x2452('0x5')]){utils[_0x2452('0xb')](_0xa5f6b7[_0x2452('0x5')])[_0x2452('0xc')](function(_0x2e5caa){if(_0x2e5caa){_0xa5f6b7[_0x2452('0xd')]=_0x2e5caa['type'];_0xa5f6b7['agentacw']=_0xa5f6b7[_0x2452('0xe')]?_0x2e5caa['acw']:![];_0xa5f6b7['acwtime']=_0xa5f6b7[_0x2452('0xf')]?_0x2e5caa[_0x2452('0x10')]:0x0;}utils[_0x2452('0x11')](_0x2452('0x12'),_0xa5f6b7);});}else{utils[_0x2452('0x11')](_0x2452('0x12'),_0xa5f6b7);}if(_0x4a08d4){delete transfers[_0xa5f6b7[_0x2452('0x3')]];}else{delete agents[_0xa5f6b7[_0x2452('0x13')]];}}exports['agentcalled']=function(_0x529fb2){try{utils['debug'](util[_0x2452('0x1')]('[%s][agents][agentcalled]',_0x529fb2[_0x2452('0x3')]),_0x529fb2);agents[_0x529fb2['destuniqueid']]=_0x529fb2;agents[_0x529fb2[_0x2452('0x13')]][_0x2452('0x14')]=utils['now']();agents[_0x529fb2[_0x2452('0x13')]]['lastevent']=_0x2452('0x15');agents[_0x529fb2[_0x2452('0x13')]][_0x2452('0x9')]=null;agents[_0x529fb2[_0x2452('0x13')]]['connectedlinename']=null;utils[_0x2452('0x16')](util[_0x2452('0x1')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x529fb2['uniqueid'],agents[_0x529fb2[_0x2452('0x13')]][_0x2452('0x6')],_0x529fb2[_0x2452('0x13')]));}catch(_0x57cb03){utils[_0x2452('0x17')](util[_0x2452('0x1')](_0x2452('0x18'),_0x529fb2[_0x2452('0x3')]),_0x57cb03);}};exports[_0x2452('0x19')]=function(_0x1c70cb){try{if(!_[_0x2452('0x1a')](agents[_0x1c70cb[_0x2452('0x13')]])){utils['debug'](util['format'](_0x2452('0x1b'),_0x1c70cb[_0x2452('0x3')]),_0x1c70cb);utils['info'](util[_0x2452('0x1')](_0x2452('0x1c'),_0x1c70cb[_0x2452('0x3')],agents[_0x1c70cb[_0x2452('0x13')]][_0x2452('0x6')],_0x1c70cb[_0x2452('0x13')]));agents[_0x1c70cb[_0x2452('0x13')]]['agentringnoanswer']=!![];agents[_0x1c70cb[_0x2452('0x13')]][_0x2452('0x1d')]=utils[_0x2452('0x1e')]();agents[_0x1c70cb[_0x2452('0x13')]][_0x2452('0xa')]='timeout';agents[_0x1c70cb['destuniqueid']][_0x2452('0x1f')]=_0x2452('0x20');agents[_0x1c70cb[_0x2452('0x13')]][_0x2452('0x21')]=_0x1c70cb[_0x2452('0x22')]?parseInt(_0x1c70cb['ringtime'])/0x3e8:0x0;agents[_0x1c70cb[_0x2452('0x13')]][_0x2452('0x23')]=0x0;unanswered['push'](_0x1c70cb['destuniqueid']);}}catch(_0x332878){utils[_0x2452('0x17')](util[_0x2452('0x1')](_0x2452('0x1b'),_0x1c70cb[_0x2452('0x3')]),_0x332878);}};exports[_0x2452('0x24')]=function(_0x504162){try{_['forIn'](agents,function(_0x46b611,_0x454e0a){if(_0x46b611[_0x2452('0x3')]==_0x504162['uniqueid']&&!_[_0x2452('0x25')](unanswered,_0x46b611[_0x2452('0x13')])){utils['debug'](util[_0x2452('0x1')](_0x2452('0x26'),_0x504162[_0x2452('0x3')]),_0x504162);utils[_0x2452('0x16')](util[_0x2452('0x1')](_0x2452('0x27'),_0x504162[_0x2452('0x3')],_0x46b611[_0x2452('0x6')],_0x46b611[_0x2452('0x13')]));_0x46b611[_0x2452('0x19')]=!![];_0x46b611[_0x2452('0x1d')]=utils[_0x2452('0x1e')]();_0x46b611[_0x2452('0xa')]='abandoned';_0x46b611[_0x2452('0x1f')]=_0x2452('0x28');_0x46b611['holdtime']=_0x504162[_0x2452('0x21')];_0x46b611['talktime']=0x0;writeDB(_0x46b611);}});}catch(_0x2c6843){utils[_0x2452('0x17')](util['format'](_0x2452('0x26'),_0x504162[_0x2452('0x3')]),_0x2c6843);}};exports[_0x2452('0x29')]=function(_0x5ce5fb){try{if(agents[_0x5ce5fb[_0x2452('0x13')]]){utils[_0x2452('0x2a')](util['format'](_0x2452('0x2b'),_0x5ce5fb[_0x2452('0x3')]),_0x5ce5fb);utils[_0x2452('0x16')](util[_0x2452('0x1')](_0x2452('0x2c'),_0x5ce5fb['uniqueid'],agents[_0x5ce5fb['destuniqueid']]['membername'],_0x5ce5fb[_0x2452('0x13')]));agents[_0x5ce5fb[_0x2452('0x13')]][_0x2452('0x2d')]=utils[_0x2452('0x1e')]();agents[_0x5ce5fb[_0x2452('0x13')]]['connectedlinenum']=_0x5ce5fb[_0x2452('0x9')];agents[_0x5ce5fb['destuniqueid']]['connectedlinename']=_0x5ce5fb[_0x2452('0x2e')];agents[_0x5ce5fb['destuniqueid']][_0x2452('0x21')]=_0x5ce5fb[_0x2452('0x22')];agents[_0x5ce5fb['destuniqueid']][_0x2452('0xa')]=_0x2452('0x2f');_[_0x2452('0x30')](agents,function(_0x34d7f9,_0x2babbe){if(_0x34d7f9[_0x2452('0x13')]!=_0x5ce5fb[_0x2452('0x13')]&&_0x34d7f9[_0x2452('0x3')]==_0x5ce5fb['uniqueid']){_0x34d7f9[_0x2452('0x23')]=0x0;_0x34d7f9['holdtime']=_0x5ce5fb[_0x2452('0x22')];_0x34d7f9[_0x2452('0x19')]=!![];_0x34d7f9['agentringnoanswerAt']=utils[_0x2452('0x1e')]();_0x34d7f9[_0x2452('0xa')]=_0x2452('0x31');_0x34d7f9[_0x2452('0x1f')]=_0x2452('0x31');_0x34d7f9['answeredelsewheredestinationuniqueid']=_0x5ce5fb[_0x2452('0x13')];_0x34d7f9[_0x2452('0x32')]=_0x5ce5fb['membername'];writeDB(_0x34d7f9);}});}}catch(_0xfabbd8){utils[_0x2452('0x17')](util[_0x2452('0x1')](_0x2452('0x2b'),_0x5ce5fb['uniqueid']),_0xfabbd8);}};exports[_0x2452('0xe')]=function(_0x304942){try{if(!_[_0x2452('0x1a')](agents[_0x304942[_0x2452('0x13')]])){utils[_0x2452('0x2a')](util[_0x2452('0x1')]('[%s][agents][agentcomplete]',_0x304942[_0x2452('0x3')]),_0x304942);utils['info'](util[_0x2452('0x1')](_0x2452('0x33'),_0x304942['uniqueid'],agents[_0x304942['destuniqueid']]['membername'],_0x304942['destuniqueid']));agents[_0x304942[_0x2452('0x13')]]['agentcomplete']=!![];agents[_0x304942[_0x2452('0x13')]]['agentcompleteAt']=utils[_0x2452('0x1e')]();agents[_0x304942[_0x2452('0x13')]]['talktime']=utils['diffTime'](agents[_0x304942[_0x2452('0x13')]]['agentcompleteAt'],agents[_0x304942[_0x2452('0x13')]][_0x2452('0x2d')]);agents[_0x304942[_0x2452('0x13')]][_0x2452('0x1f')]=_0x304942['reason'];agents[_0x304942['destuniqueid']][_0x2452('0xa')]=_0x2452('0x34');writeDB(agents[_0x304942[_0x2452('0x13')]]);}}catch(_0x2d06f2){utils[_0x2452('0x17')](util['format'](_0x2452('0x35'),_0x304942['uniqueid']),_0x2d06f2);}};exports[_0x2452('0x36')]=function(_0x53fd05){try{if(!_[_0x2452('0x1a')](agents[_0x53fd05[_0x2452('0x37')]])){utils['debug'](util[_0x2452('0x1')]('[%s][agents][blindtransfer]',_0x53fd05[_0x2452('0x3')]),_0x53fd05);utils['info'](util['format']('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x53fd05[_0x2452('0x3')],agents[_0x53fd05[_0x2452('0x37')]][_0x2452('0x6')],agents[_0x53fd05['transfereruniqueid']][_0x2452('0x3')]));agents[_0x53fd05[_0x2452('0x37')]][_0x2452('0x38')]=!![];agents[_0x53fd05[_0x2452('0x37')]][_0x2452('0x39')]='blind';agents[_0x53fd05[_0x2452('0x37')]]['transferexten']=_0x53fd05[_0x2452('0x3a')];agents[_0x53fd05[_0x2452('0x37')]][_0x2452('0x3b')]=agents[_0x53fd05[_0x2452('0x37')]][_0x2452('0x3')];}}catch(_0x2096e2){utils[_0x2452('0x17')](util[_0x2452('0x1')](_0x2452('0x3c'),_0x53fd05['uniqueid']),_0x2096e2);}};exports[_0x2452('0x3d')]=function(_0x595f9f){try{utils[_0x2452('0x2a')](util['format'](_0x2452('0x3e'),_0x595f9f[_0x2452('0x3f')]),_0x595f9f);if(_0x595f9f['origtransfereruniqueid']==_0x595f9f[_0x2452('0x40')]){if(!_[_0x2452('0x1a')](agents[_0x595f9f[_0x2452('0x41')]])){utils[_0x2452('0x16')](util[_0x2452('0x1')](_0x2452('0x42'),_0x595f9f[_0x2452('0x3f')],agents[_0x595f9f[_0x2452('0x41')]][_0x2452('0x6')]));agents[_0x595f9f[_0x2452('0x41')]][_0x2452('0x38')]=!![];agents[_0x595f9f['secondtransfereruniqueid']][_0x2452('0x39')]='ATTENDED';agents[_0x595f9f[_0x2452('0x41')]]['transferexten']=_0x595f9f[_0x2452('0x43')];agents[_0x595f9f[_0x2452('0x41')]][_0x2452('0x3b')]=_0x595f9f[_0x2452('0x3f')];}if(_0x595f9f[_0x2452('0x44')]&&agents[_0x595f9f[_0x2452('0x44')]]){agents[_0x595f9f[_0x2452('0x44')]][_0x2452('0x45')]=0x1;transfers[_0x595f9f[_0x2452('0x44')]]=_[_0x2452('0x46')](agents[_0x595f9f[_0x2452('0x44')]]);transfers[_0x595f9f['transfereeuniqueid']][_0x2452('0x8')]=agents[_0x595f9f[_0x2452('0x41')]][_0x2452('0x8')];transfers[_0x595f9f[_0x2452('0x44')]][_0x2452('0x47')]=agents[_0x595f9f[_0x2452('0x41')]]['calleridname'];transfers[_0x595f9f[_0x2452('0x44')]][_0x2452('0x14')]=utils['now']();transfers[_0x595f9f[_0x2452('0x44')]][_0x2452('0x2d')]=utils[_0x2452('0x1e')]();transfers[_0x595f9f[_0x2452('0x44')]][_0x2452('0x21')]=0x0;transfers[_0x595f9f[_0x2452('0x44')]][_0x2452('0x45')]=0x2;}}else if(_0x595f9f[_0x2452('0x41')]==_0x595f9f[_0x2452('0x48')]){if(!_[_0x2452('0x1a')](agents[_0x595f9f[_0x2452('0x3f')]])){utils['info'](util['format'](_0x2452('0x42'),_0x595f9f['origtransfereruniqueid'],agents[_0x595f9f[_0x2452('0x3f')]][_0x2452('0x6')]));agents[_0x595f9f[_0x2452('0x3f')]][_0x2452('0x38')]=!![];agents[_0x595f9f[_0x2452('0x3f')]][_0x2452('0x39')]='ATTENDED';agents[_0x595f9f['origtransfereruniqueid']][_0x2452('0x49')]=_0x595f9f['secondtransfererexten'];agents[_0x595f9f[_0x2452('0x3f')]]['transferuniqueid']=_0x595f9f[_0x2452('0x41')];}if(_0x595f9f[_0x2452('0x4a')]&&agents[_0x595f9f[_0x2452('0x4a')]]){agents[_0x595f9f[_0x2452('0x4a')]]['agententerreason']=0x1;transfers[_0x595f9f['transfertargetuniqueid']]=_['clone'](agents[_0x595f9f[_0x2452('0x4a')]]);transfers[_0x595f9f[_0x2452('0x4a')]]['calleridnum']=agents[_0x595f9f['origtransfereruniqueid']]['calleridnum'];transfers[_0x595f9f['transfertargetuniqueid']]['calleridname']=agents[_0x595f9f[_0x2452('0x3f')]]['calleridname'];transfers[_0x595f9f['transfertargetuniqueid']][_0x2452('0x14')]=utils[_0x2452('0x1e')]();transfers[_0x595f9f[_0x2452('0x4a')]][_0x2452('0x2d')]=utils[_0x2452('0x1e')]();transfers[_0x595f9f[_0x2452('0x4a')]]['holdtime']=0x0;transfers[_0x595f9f[_0x2452('0x4a')]][_0x2452('0x45')]=0x2;}}}catch(_0x45c850){utils['error'](util['format'](_0x2452('0x3e'),_0x595f9f[_0x2452('0x3f')]),_0x45c850);}};exports[_0x2452('0x4b')]=function(_0x1dec54){try{utils[_0x2452('0x2a')](util[_0x2452('0x1')](_0x2452('0x4c'),_0x1dec54[_0x2452('0x3')]),_0x1dec54);if(agents[_0x1dec54['uniqueid']]&&agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0x1f')]===_0x2452('0x20')){if(_0x1dec54[_0x2452('0x4d')]==='21'){agents[_0x1dec54['uniqueid']][_0x2452('0x1f')]=_0x2452('0x4e');agents[_0x1dec54['uniqueid']][_0x2452('0xa')]=_0x2452('0x4e');}utils[_0x2452('0x16')](util[_0x2452('0x1')](_0x2452('0x4f'),_0x1dec54[_0x2452('0x3')],agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0x6')],agents[_0x1dec54['uniqueid']]['reason'],agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0xa')]));writeDB(agents[_0x1dec54[_0x2452('0x3')]]);var _0x1530fe=unanswered['indexOf'](_0x1dec54[_0x2452('0x3')]);if(_0x1530fe>-0x1){unanswered[_0x2452('0x50')](_0x1530fe,0x1);}}if(transfers[_0x1dec54[_0x2452('0x3')]]){transfers[_0x1dec54[_0x2452('0x3')]]['agentcomplete']=!![];transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0x51')]=utils[_0x2452('0x1e')]();transfers[_0x1dec54[_0x2452('0x3')]]['talktime']=utils['diffTime'](transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0x51')],transfers[_0x1dec54['uniqueid']][_0x2452('0x2d')]);transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0x1f')]=_0x2452('0x52');transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0xa')]=_0x2452('0x34');utils[_0x2452('0x16')](util[_0x2452('0x1')](_0x2452('0x4f'),_0x1dec54[_0x2452('0x3')],transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0x6')],transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0x1f')],transfers[_0x1dec54[_0x2452('0x3')]]['lastevent']));writeDB(transfers[_0x1dec54[_0x2452('0x3')]],!![]);}if(agents[_0x1dec54[_0x2452('0x3')]]&&agents[_0x1dec54[_0x2452('0x3')]]['agentconnectAt']){agents[_0x1dec54['uniqueid']]['agentcomplete']=!![];agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0x51')]=utils[_0x2452('0x1e')]();agents[_0x1dec54[_0x2452('0x3')]]['talktime']=utils['diffTime'](agents[_0x1dec54['uniqueid']][_0x2452('0x51')],agents[_0x1dec54['uniqueid']][_0x2452('0x2d')]);agents[_0x1dec54['uniqueid']][_0x2452('0x1f')]=agents[_0x1dec54['uniqueid']][_0x2452('0x38')]?'transfer':_0x2452('0x52');agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0xa')]=_0x2452('0x34');utils[_0x2452('0x16')](util['format'](_0x2452('0x4f'),_0x1dec54[_0x2452('0x3')],agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0x6')],agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0x1f')],agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0xa')]));writeDB(agents[_0x1dec54[_0x2452('0x3')]]);}}catch(_0x3b681c){utils[_0x2452('0x17')](util['format'](_0x2452('0x4c'),_0x1dec54['uniqueid']),_0x3b681c);}};
\ No newline at end of file
index 26b6862..d6e33d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf27a=['xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','noop','execif','lodash','./utils','NO\x20ANSWER','FAILED','ANSWERED','info','format','channel','queue','membername','interface','connectedlinenum','accountcode','then','UserId','request','CreateVoiceCallReport','uniqueid','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','calleridnum','now','error','newstate','debug','isNil','channelstate','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','toNumber','[%s][calls][newstate]','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','duration','diffTime','starttime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfereruniqueid','origtransfererchannel','[%s][calls][attendedtransfer]','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','varset','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','variable','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmcs-queue','xmd-queue','lastapplication','lastdata'];(function(_0x485f53,_0x104081){var _0x480f1e=function(_0x2d61d2){while(--_0x2d61d2){_0x485f53['push'](_0x485f53['shift']());}};_0x480f1e(++_0x104081);}(_0xf27a,0xea));var _0xaf27=function(_0x19965d,_0x157a68){_0x19965d=_0x19965d-0x0;var _0x1656d1=_0xf27a[_0x19965d];return _0x1656d1;};'use strict';var _=require(_0xaf27('0x0'));var util=require('util');var utils=require(_0xaf27('0x1'));var dispositions=[_0xaf27('0x2'),_0xaf27('0x3'),_0xaf27('0x3'),_0xaf27('0x2'),_0xaf27('0x2'),'NO\x20ANSWER',_0xaf27('0x4'),'BUSY',_0xaf27('0x3'),_0xaf27('0x3'),_0xaf27('0x3')];var channels={};function writeDB(_0x3b2871){utils[_0xaf27('0x5')](util[_0xaf27('0x6')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x3b2871['uniqueid'],_0x3b2871[_0xaf27('0x7')],_0x3b2871[_0xaf27('0x8')],_0x3b2871[_0xaf27('0x9')],_0x3b2871[_0xaf27('0xa')],_0x3b2871['calleridnum'],_0x3b2871[_0xaf27('0xb')],_0x3b2871['lastevent']));if(_0x3b2871['accountcode']){utils['getUserByInternal'](_0x3b2871[_0xaf27('0xc')])[_0xaf27('0xd')](function(_0x17d46f){if(_0x17d46f){_0x3b2871[_0xaf27('0xe')]=_0x17d46f['id'];}utils[_0xaf27('0xf')]('CreateVoiceCallReport',_0x3b2871);});}else{utils[_0xaf27('0xf')](_0xaf27('0x10'),_0x3b2871);}if(channels[_0x3b2871[_0xaf27('0x11')]]){delete channels[_0x3b2871[_0xaf27('0x11')]];}}exports['newchannel']=function(_0x24075d){try{utils['debug'](util[_0xaf27('0x6')](_0xaf27('0x12'),_0x24075d[_0xaf27('0x11')]),_0x24075d);if(_0x24075d['uniqueid']==_0x24075d[_0xaf27('0x13')]&&_0x24075d[_0xaf27('0x7')]!=_0xaf27('0x14')){utils['info'](util[_0xaf27('0x6')](_0xaf27('0x15'),_0x24075d['uniqueid'],_0x24075d[_0xaf27('0x16')],_0x24075d[_0xaf27('0x17')]));channels[_0x24075d[_0xaf27('0x11')]]={'uniqueid':_0x24075d[_0xaf27('0x11')],'accountcode':_0x24075d[_0xaf27('0xc')],'source':_0x24075d[_0xaf27('0x18')],'destination':_0x24075d[_0xaf27('0x17')],'destinationcontext':_0x24075d[_0xaf27('0x16')],'channel':_0x24075d[_0xaf27('0x7')],'starttime':utils[_0xaf27('0x19')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':'DOCUMENTATION'};}}catch(_0x126664){utils[_0xaf27('0x1a')](util[_0xaf27('0x6')](_0xaf27('0x12'),_0x24075d['uniqueid']),_0x126664);}};exports[_0xaf27('0x1b')]=function(_0x47b26f){try{utils[_0xaf27('0x1c')](util[_0xaf27('0x6')]('[%s][calls][newstate]',_0x47b26f[_0xaf27('0x11')]),_0x47b26f);if(!_[_0xaf27('0x1d')](channels[_0x47b26f[_0xaf27('0x11')]])&&_0x47b26f[_0xaf27('0x1e')]==0x6){utils[_0xaf27('0x5')](util['format']('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x47b26f['uniqueid'],_0x47b26f['context'],_0x47b26f[_0xaf27('0x7')]));if(_[_0xaf27('0x1d')](channels[_0x47b26f['uniqueid']][_0xaf27('0x1f')])){channels[_0x47b26f[_0xaf27('0x11')]][_0xaf27('0x1f')]=utils[_0xaf27('0x19')]();}}else if(!_['isNil'](channels[_0x47b26f[_0xaf27('0x13')]])&&_0x47b26f['channelstate']==0x6&&_0x47b26f[_0xaf27('0x16')]!=_0xaf27('0x20')){utils[_0xaf27('0x5')](util[_0xaf27('0x6')](_0xaf27('0x21'),_0x47b26f[_0xaf27('0x11')],_0x47b26f['linkedid'],_0x47b26f[_0xaf27('0x16')],_0x47b26f['channel']));channels[_0x47b26f[_0xaf27('0x13')]][_0xaf27('0xc')]=_0x47b26f[_0xaf27('0xc')];channels[_0x47b26f[_0xaf27('0x13')]][_0xaf27('0x22')]=_0x47b26f['channel'];if(_['isNil'](channels[_0x47b26f[_0xaf27('0x13')]][_0xaf27('0x23')])){channels[_0x47b26f[_0xaf27('0x13')]][_0xaf27('0x23')]=utils['now']();}channels[_0x47b26f[_0xaf27('0x13')]]['disposition']=dispositions[_[_0xaf27('0x24')](_0x47b26f[_0xaf27('0x1e')])]||_0xaf27('0x4');}}catch(_0x7cc4cc){utils['error'](util[_0xaf27('0x6')](_0xaf27('0x25'),_0x47b26f[_0xaf27('0x11')]),_0x7cc4cc);}};exports[_0xaf27('0x26')]=function(_0x332bcc){try{if(!_[_0xaf27('0x1d')](channels[_0x332bcc[_0xaf27('0x11')]])){utils[_0xaf27('0x1c')](util[_0xaf27('0x6')](_0xaf27('0x27'),_0x332bcc[_0xaf27('0x11')]),_0x332bcc);if(_['isNil'](channels[_0x332bcc[_0xaf27('0x11')]][_0xaf27('0x28')])){channels[_0x332bcc[_0xaf27('0x11')]]['callerid']=_0x332bcc[_0xaf27('0x29')]+'\x20<'+_0x332bcc[_0xaf27('0x18')]+'>';}utils[_0xaf27('0x5')](util[_0xaf27('0x6')](_0xaf27('0x2a'),_0x332bcc['uniqueid'],channels[_0x332bcc[_0xaf27('0x11')]][_0xaf27('0x28')],_0x332bcc['cause-txt']));channels[_0x332bcc[_0xaf27('0x11')]][_0xaf27('0x2b')]=utils['now']();channels[_0x332bcc[_0xaf27('0x11')]][_0xaf27('0x2c')]=utils[_0xaf27('0x2d')](channels[_0x332bcc['uniqueid']][_0xaf27('0x2b')],channels[_0x332bcc[_0xaf27('0x11')]][_0xaf27('0x2e')]);channels[_0x332bcc[_0xaf27('0x11')]][_0xaf27('0x2f')]=channels[_0x332bcc[_0xaf27('0x11')]][_0xaf27('0x23')]?utils[_0xaf27('0x2d')](channels[_0x332bcc[_0xaf27('0x11')]]['endtime'],channels[_0x332bcc[_0xaf27('0x11')]][_0xaf27('0x23')]):0x0;writeDB(channels[_0x332bcc[_0xaf27('0x11')]]);}}catch(_0x1d4493){utils[_0xaf27('0x1a')](util['format'](_0xaf27('0x27'),_0x332bcc[_0xaf27('0x11')]),_0x1d4493);}};exports[_0xaf27('0x30')]=function(_0x4584b0){try{if(!_['isNil'](channels[_0x4584b0[_0xaf27('0x31')]])){utils[_0xaf27('0x1c')](util[_0xaf27('0x6')]('[%s][calls][attendedtransfer]',_0x4584b0['origtransfereruniqueid']),_0x4584b0);if(channels[_0x4584b0['localtwolinkedid']]['channel']==_0x4584b0['transfereechannel']){utils[_0xaf27('0x5')](util['format'](_0xaf27('0x32'),_0x4584b0['origtransfereruniqueid'],_0x4584b0[_0xaf27('0x31')],_0x4584b0[_0xaf27('0x33')]));channels[_0x4584b0[_0xaf27('0x31')]][_0xaf27('0x22')]=_0x4584b0[_0xaf27('0x33')];channels[_0x4584b0['localtwolinkedid']][_0xaf27('0x34')]=_0xaf27('0x35');}else if(channels[_0x4584b0['localtwolinkedid']][_0xaf27('0x7')]=_0x4584b0[_0xaf27('0x36')]){utils[_0xaf27('0x5')](util['format']('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x4584b0[_0xaf27('0x37')],_0x4584b0['localtwolinkedid'],_0x4584b0['origtransfererchannel']));channels[_0x4584b0['localtwolinkedid']][_0xaf27('0x22')]=_0x4584b0[_0xaf27('0x38')];channels[_0x4584b0[_0xaf27('0x31')]][_0xaf27('0x34')]=_0xaf27('0x35');}}}catch(_0x53b0d2){utils[_0xaf27('0x1a')](util[_0xaf27('0x6')](_0xaf27('0x39'),_0x4584b0[_0xaf27('0x37')]),_0x53b0d2);}};exports[_0xaf27('0x3a')]=function(_0x532474){try{if(!_[_0xaf27('0x1d')](channels[_0x532474[_0xaf27('0x11')]])){utils[_0xaf27('0x1c')](util[_0xaf27('0x6')](_0xaf27('0x3b'),_0x532474['uniqueid']),_0x532474);channels[_0x532474[_0xaf27('0x11')]][_0xaf27('0x3c')]=utils[_0xaf27('0x19')]();utils[_0xaf27('0x5')](util[_0xaf27('0x6')](_0xaf27('0x3d'),_0x532474['uniqueid'],channels[_0x532474[_0xaf27('0x11')]][_0xaf27('0x3c')]));}}catch(_0x26c1bf){utils[_0xaf27('0x1a')](util[_0xaf27('0x6')](_0xaf27('0x3b'),_0x532474[_0xaf27('0x11')]),_0x26c1bf);}};exports[_0xaf27('0x3e')]=function(_0x53168b){try{if(!_[_0xaf27('0x1d')](channels[_0x53168b['uniqueid']])){utils[_0xaf27('0x1c')](util[_0xaf27('0x6')](_0xaf27('0x3f'),_0x53168b[_0xaf27('0x11')]),_0x53168b);if(!_['isNil'](channels[_0x53168b[_0xaf27('0x11')]][_0xaf27('0x3c')])){channels[_0x53168b[_0xaf27('0x11')]][_0xaf27('0x40')]+=utils[_0xaf27('0x2d')](utils[_0xaf27('0x19')](),channels[_0x53168b['uniqueid']]['musiconholdstartAt']);utils[_0xaf27('0x5')](util[_0xaf27('0x6')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x53168b[_0xaf27('0x11')],channels[_0x53168b[_0xaf27('0x11')]]['mohtime']));delete channels[_0x53168b[_0xaf27('0x11')]][_0xaf27('0x3c')];}}}catch(_0xc6e5d4){utils[_0xaf27('0x1a')](util[_0xaf27('0x6')](_0xaf27('0x3f'),_0x53168b['uniqueid']),_0xc6e5d4);}};exports[_0xaf27('0x41')]=function(_0x16036a){try{if(!_['isNil'](channels[_0x16036a[_0xaf27('0x11')]])){utils[_0xaf27('0x1c')](util[_0xaf27('0x6')]('[%s][calls][varset]',_0x16036a['uniqueid']),_0x16036a);if(!_[_0xaf27('0x1d')](_0x16036a['variable'][_0xaf27('0x42')])){utils[_0xaf27('0x5')](util[_0xaf27('0x6')](_0xaf27('0x43'),_0x16036a[_0xaf27('0x11')],_0x16036a['value']));channels[_0x16036a[_0xaf27('0x11')]][_0xaf27('0x44')]=_0x16036a[_0xaf27('0x45')];}if(!_[_0xaf27('0x1d')](_0x16036a[_0xaf27('0x46')]['xmd-phone'])){utils['info'](util[_0xaf27('0x6')](_0xaf27('0x47'),_0x16036a['uniqueid'],_0x16036a[_0xaf27('0x45')]));channels[_0x16036a[_0xaf27('0x11')]][_0xaf27('0x48')]=_0x16036a[_0xaf27('0x45')];channels[_0x16036a[_0xaf27('0x11')]]['callerid']='\x22'+_0x16036a['value']+_0xaf27('0x49')+_0x16036a['value']+'>';}if(!_[_0xaf27('0x1d')](_0x16036a['variable'][_0xaf27('0x4a')])||!_[_0xaf27('0x1d')](_0x16036a['variable'][_0xaf27('0x4b')])){utils[_0xaf27('0x5')](util['format'](_0xaf27('0x4c'),_0x16036a['uniqueid'],!_[_0xaf27('0x1d')](_0x16036a[_0xaf27('0x46')][_0xaf27('0x4a')])?_0xaf27('0x4a'):_0xaf27('0x4b'),_0x16036a[_0xaf27('0x45')]));channels[_0x16036a['uniqueid']][_0xaf27('0x28')]=_0x16036a[_0xaf27('0x45')];}if(!_[_0xaf27('0x1d')](_0x16036a[_0xaf27('0x46')]['xmd-queue'])||!_[_0xaf27('0x1d')](_0x16036a['variable'][_0xaf27('0x4d')])){utils['info'](util[_0xaf27('0x6')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x16036a['uniqueid'],!_[_0xaf27('0x1d')](_0x16036a['variable'][_0xaf27('0x4e')])?_0xaf27('0x4e'):'xmcs-queue',_0x16036a[_0xaf27('0x45')]));channels[_0x16036a[_0xaf27('0x11')]][_0xaf27('0x4f')]='Queue';channels[_0x16036a[_0xaf27('0x11')]][_0xaf27('0x50')]=_0x16036a[_0xaf27('0x45')];channels[_0x16036a[_0xaf27('0x11')]][_0xaf27('0x8')]=!![];}if(!_[_0xaf27('0x1d')](_0x16036a[_0xaf27('0x46')][_0xaf27('0x51')])){utils[_0xaf27('0x5')](util[_0xaf27('0x6')](_0xaf27('0x52'),_0x16036a['uniqueid'],_0x16036a[_0xaf27('0x45')]));channels[_0x16036a[_0xaf27('0x11')]][_0xaf27('0x53')]=_0x16036a['value'];}if(!_[_0xaf27('0x1d')](_0x16036a['variable'][_0xaf27('0x54')])){utils[_0xaf27('0x5')](util[_0xaf27('0x6')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x16036a[_0xaf27('0x11')],_0x16036a['value']));channels[_0x16036a[_0xaf27('0x11')]][_0xaf27('0x55')]=_0x16036a['value'];}if(!_[_0xaf27('0x1d')](_0x16036a[_0xaf27('0x46')]['outboundrouteid'])){utils[_0xaf27('0x5')](util[_0xaf27('0x6')](_0xaf27('0x56'),_0x16036a[_0xaf27('0x11')],_0x16036a[_0xaf27('0x45')]));channels[_0x16036a[_0xaf27('0x11')]][_0xaf27('0x57')]=_0x16036a['value'];}if(!_[_0xaf27('0x1d')](_0x16036a[_0xaf27('0x46')][_0xaf27('0x58')])){utils[_0xaf27('0x5')](util[_0xaf27('0x6')](_0xaf27('0x59'),_0x16036a[_0xaf27('0x11')],_0x16036a[_0xaf27('0x45')]));channels[_0x16036a[_0xaf27('0x11')]][_0xaf27('0x58')]=_0x16036a[_0xaf27('0x45')];}}}catch(_0x90346a){utils[_0xaf27('0x1a')](util[_0xaf27('0x6')](_0xaf27('0x5a'),_0x16036a['uniqueid']),_0x90346a);}};exports[_0xaf27('0x5b')]=function(_0x5d061a){try{if(!_['isNil'](channels[_0x5d061a[_0xaf27('0x11')]])){utils[_0xaf27('0x1c')](util['format'](_0xaf27('0x5c'),_0x5d061a[_0xaf27('0x11')]),_0x5d061a);utils[_0xaf27('0x5')](util[_0xaf27('0x6')](_0xaf27('0x5d'),_0x5d061a['uniqueid'],_0x5d061a[_0xaf27('0x5e')],_0x5d061a[_0xaf27('0x5f')]));if(_0x5d061a[_0xaf27('0x5e')][_0xaf27('0x60')]()==_0xaf27('0x61')&&_[_0xaf27('0x62')](_0x5d061a[_0xaf27('0x5f')][_0xaf27('0x60')](),_0xaf27('0x63'))){var _0x5dbd50=_0x5d061a[_0xaf27('0x5f')][_0xaf27('0x64')]('=');var _0x1a2f07=_0x5dbd50[0x0][_0xaf27('0x65')](_0x5dbd50[0x0][_0xaf27('0x66')]('(')+0x1,_0x5dbd50[0x0]['lastIndexOf'](')'));var _0x127738=_0x5dbd50[0x1];channels[_0x5d061a['uniqueid']][_0x1a2f07]=_0x127738;}if(!_['includes']([_0xaf27('0x26'),_0xaf27('0x67'),_0xaf27('0x68'),'set','gotoif'],_0x5d061a['application'][_0xaf27('0x60')]())){channels[_0x5d061a['uniqueid']][_0xaf27('0x4f')]=_0x5d061a[_0xaf27('0x5e')];channels[_0x5d061a[_0xaf27('0x11')]][_0xaf27('0x50')]=_0x5d061a[_0xaf27('0x5f')];}}}catch(_0xfc4d1a){utils[_0xaf27('0x1a')](util[_0xaf27('0x6')](_0xaf27('0x5c'),_0x5d061a[_0xaf27('0x11')]),_0xfc4d1a);}};
\ No newline at end of file
+var _0xc175=['billableseconds','[%s][calls][hangup]','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','mohtime','[%s][calls][musiconholdstop]','varset','[%s][calls][varset]','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','destination','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid-preview','xmd-queue','xmcs-queue','lastapplication','lastdata','xmd-contactid','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith','split','substring','lastIndexOf','includes','noop','execif','set','gotoif','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','format','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','context','now','error','[%s][calls][newchannel]','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','duration','diffTime','starttime'];(function(_0x307086,_0x3bfe4e){var _0x699043=function(_0x1a7677){while(--_0x1a7677){_0x307086['push'](_0x307086['shift']());}};_0x699043(++_0x3bfe4e);}(_0xc175,0x178));var _0x5c17=function(_0x4c4ba3,_0x449300){_0x4c4ba3=_0x4c4ba3-0x0;var _0x41501a=_0xc175[_0x4c4ba3];return _0x41501a;};'use strict';var _=require(_0x5c17('0x0'));var util=require(_0x5c17('0x1'));var utils=require(_0x5c17('0x2'));var dispositions=[_0x5c17('0x3'),_0x5c17('0x4'),_0x5c17('0x4'),_0x5c17('0x3'),_0x5c17('0x3'),_0x5c17('0x3'),_0x5c17('0x5'),_0x5c17('0x6'),_0x5c17('0x4'),'FAILED',_0x5c17('0x4')];var channels={};function writeDB(_0xb6a745){utils[_0x5c17('0x7')](util['format'](_0x5c17('0x8'),_0xb6a745[_0x5c17('0x9')],_0xb6a745[_0x5c17('0xa')],_0xb6a745[_0x5c17('0xb')],_0xb6a745[_0x5c17('0xc')],_0xb6a745['interface'],_0xb6a745[_0x5c17('0xd')],_0xb6a745[_0x5c17('0xe')],_0xb6a745[_0x5c17('0xf')]));if(_0xb6a745[_0x5c17('0x10')]){utils[_0x5c17('0x11')](_0xb6a745[_0x5c17('0x10')])[_0x5c17('0x12')](function(_0x1d9c8d){if(_0x1d9c8d){_0xb6a745[_0x5c17('0x13')]=_0x1d9c8d['id'];}utils[_0x5c17('0x14')](_0x5c17('0x15'),_0xb6a745);});}else{utils[_0x5c17('0x14')](_0x5c17('0x15'),_0xb6a745);}if(channels[_0xb6a745[_0x5c17('0x9')]]){delete channels[_0xb6a745['uniqueid']];}}exports[_0x5c17('0x16')]=function(_0xea8226){try{utils[_0x5c17('0x17')](util[_0x5c17('0x18')]('[%s][calls][newchannel]',_0xea8226[_0x5c17('0x9')]),_0xea8226);if(_0xea8226[_0x5c17('0x9')]==_0xea8226[_0x5c17('0x19')]&&_0xea8226[_0x5c17('0xa')]!=_0x5c17('0x1a')){utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x1b'),_0xea8226[_0x5c17('0x9')],_0xea8226['context'],_0xea8226[_0x5c17('0x1c')]));channels[_0xea8226[_0x5c17('0x9')]]={'uniqueid':_0xea8226[_0x5c17('0x9')],'accountcode':_0xea8226[_0x5c17('0x10')],'source':_0xea8226[_0x5c17('0xd')],'destination':_0xea8226[_0x5c17('0x1c')],'destinationcontext':_0xea8226[_0x5c17('0x1d')],'channel':_0xea8226['channel'],'starttime':utils[_0x5c17('0x1e')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x5c17('0x3'),'amaflags':'DOCUMENTATION'};}}catch(_0x551729){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x20'),_0xea8226['uniqueid']),_0x551729);}};exports[_0x5c17('0x21')]=function(_0x162c58){try{utils[_0x5c17('0x17')](util[_0x5c17('0x18')](_0x5c17('0x22'),_0x162c58['uniqueid']),_0x162c58);if(!_[_0x5c17('0x23')](channels[_0x162c58[_0x5c17('0x9')]])&&_0x162c58[_0x5c17('0x24')]==0x6){utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x25'),_0x162c58[_0x5c17('0x9')],_0x162c58['context'],_0x162c58[_0x5c17('0xa')]));if(_[_0x5c17('0x23')](channels[_0x162c58[_0x5c17('0x9')]]['systemanswertime'])){channels[_0x162c58[_0x5c17('0x9')]][_0x5c17('0x26')]=utils['now']();}}else if(!_[_0x5c17('0x23')](channels[_0x162c58['linkedid']])&&_0x162c58[_0x5c17('0x24')]==0x6&&_0x162c58[_0x5c17('0x1d')]!=_0x5c17('0x27')){utils[_0x5c17('0x7')](util['format'](_0x5c17('0x28'),_0x162c58[_0x5c17('0x9')],_0x162c58['linkedid'],_0x162c58[_0x5c17('0x1d')],_0x162c58[_0x5c17('0xa')]));channels[_0x162c58[_0x5c17('0x19')]]['accountcode']=_0x162c58[_0x5c17('0x10')];channels[_0x162c58[_0x5c17('0x19')]][_0x5c17('0x29')]=_0x162c58[_0x5c17('0xa')];if(_[_0x5c17('0x23')](channels[_0x162c58['linkedid']][_0x5c17('0x2a')])){channels[_0x162c58[_0x5c17('0x19')]][_0x5c17('0x2a')]=utils[_0x5c17('0x1e')]();}channels[_0x162c58[_0x5c17('0x19')]][_0x5c17('0x2b')]=dispositions[_['toNumber'](_0x162c58[_0x5c17('0x24')])]||_0x5c17('0x5');}}catch(_0x50f090){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x22'),_0x162c58[_0x5c17('0x9')]),_0x50f090);}};exports[_0x5c17('0x2c')]=function(_0x57ad96){try{if(!_[_0x5c17('0x23')](channels[_0x57ad96['uniqueid']])){utils['debug'](util[_0x5c17('0x18')]('[%s][calls][hangup]',_0x57ad96[_0x5c17('0x9')]),_0x57ad96);if(_[_0x5c17('0x23')](channels[_0x57ad96['uniqueid']][_0x5c17('0x2d')])){channels[_0x57ad96['uniqueid']][_0x5c17('0x2d')]=_0x57ad96[_0x5c17('0x2e')]+'\x20<'+_0x57ad96[_0x5c17('0xd')]+'>';}utils[_0x5c17('0x7')](util['format'](_0x5c17('0x2f'),_0x57ad96[_0x5c17('0x9')],channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x2d')],_0x57ad96['cause-txt']));channels[_0x57ad96['uniqueid']][_0x5c17('0x30')]=utils[_0x5c17('0x1e')]();channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x31')]=utils[_0x5c17('0x32')](channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x30')],channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x33')]);channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x34')]=channels[_0x57ad96['uniqueid']][_0x5c17('0x2a')]?utils[_0x5c17('0x32')](channels[_0x57ad96['uniqueid']][_0x5c17('0x30')],channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x2a')]):0x0;writeDB(channels[_0x57ad96[_0x5c17('0x9')]]);}}catch(_0x179828){utils[_0x5c17('0x1f')](util['format'](_0x5c17('0x35'),_0x57ad96[_0x5c17('0x9')]),_0x179828);}};exports['attendedtransfer']=function(_0x4ff965){try{if(!_[_0x5c17('0x23')](channels[_0x4ff965['localtwolinkedid']])){utils[_0x5c17('0x17')](util['format'](_0x5c17('0x36'),_0x4ff965[_0x5c17('0x37')]),_0x4ff965);if(channels[_0x4ff965[_0x5c17('0x38')]][_0x5c17('0xa')]==_0x4ff965[_0x5c17('0x39')]){utils[_0x5c17('0x7')](util['format'](_0x5c17('0x3a'),_0x4ff965[_0x5c17('0x37')],_0x4ff965[_0x5c17('0x38')],_0x4ff965[_0x5c17('0x3b')]));channels[_0x4ff965[_0x5c17('0x38')]]['destinationchannel']=_0x4ff965[_0x5c17('0x3b')];channels[_0x4ff965[_0x5c17('0x38')]][_0x5c17('0x3c')]=_0x5c17('0x3d');}else if(channels[_0x4ff965[_0x5c17('0x38')]][_0x5c17('0xa')]=_0x4ff965['transfertargetchannel']){utils[_0x5c17('0x7')](util['format']('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x4ff965[_0x5c17('0x37')],_0x4ff965['localtwolinkedid'],_0x4ff965[_0x5c17('0x3e')]));channels[_0x4ff965['localtwolinkedid']][_0x5c17('0x29')]=_0x4ff965[_0x5c17('0x3e')];channels[_0x4ff965[_0x5c17('0x38')]][_0x5c17('0x3c')]='_attended';}}}catch(_0x2a23b7){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x36'),_0x4ff965[_0x5c17('0x37')]),_0x2a23b7);}};exports[_0x5c17('0x3f')]=function(_0x55a3ad){try{if(!_[_0x5c17('0x23')](channels[_0x55a3ad[_0x5c17('0x9')]])){utils[_0x5c17('0x17')](util[_0x5c17('0x18')](_0x5c17('0x40'),_0x55a3ad[_0x5c17('0x9')]),_0x55a3ad);channels[_0x55a3ad['uniqueid']]['musiconholdstartAt']=utils['now']();utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x41'),_0x55a3ad[_0x5c17('0x9')],channels[_0x55a3ad['uniqueid']][_0x5c17('0x42')]));}}catch(_0x2d65fb){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x40'),_0x55a3ad[_0x5c17('0x9')]),_0x2d65fb);}};exports[_0x5c17('0x43')]=function(_0x585169){try{if(!_['isNil'](channels[_0x585169[_0x5c17('0x9')]])){utils[_0x5c17('0x17')](util[_0x5c17('0x18')]('[%s][calls][musiconholdstop]',_0x585169[_0x5c17('0x9')]),_0x585169);if(!_[_0x5c17('0x23')](channels[_0x585169['uniqueid']]['musiconholdstartAt'])){channels[_0x585169[_0x5c17('0x9')]][_0x5c17('0x44')]+=utils[_0x5c17('0x32')](utils[_0x5c17('0x1e')](),channels[_0x585169[_0x5c17('0x9')]][_0x5c17('0x42')]);utils[_0x5c17('0x7')](util['format']('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x585169['uniqueid'],channels[_0x585169[_0x5c17('0x9')]][_0x5c17('0x44')]));delete channels[_0x585169[_0x5c17('0x9')]]['musiconholdstartAt'];}}}catch(_0x329c56){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x45'),_0x585169[_0x5c17('0x9')]),_0x329c56);}};exports[_0x5c17('0x46')]=function(_0x583942){try{if(!_[_0x5c17('0x23')](channels[_0x583942['uniqueid']])){utils[_0x5c17('0x17')](util[_0x5c17('0x18')](_0x5c17('0x47'),_0x583942['uniqueid']),_0x583942);if(!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')]['xmd-originatecalleridnum'])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x49'),_0x583942[_0x5c17('0x9')],_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x4b')]=_0x583942[_0x5c17('0x4a')];}if(!_[_0x5c17('0x23')](_0x583942['variable']['xmd-phone'])){utils[_0x5c17('0x7')](util['format']('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x583942[_0x5c17('0x9')],_0x583942['value']));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x4c')]=_0x583942[_0x5c17('0x4a')];channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x2d')]='\x22'+_0x583942['value']+'\x22\x20<'+_0x583942[_0x5c17('0x4a')]+'>';}if(!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')]['xmd-callerid-preview'])||!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')][_0x5c17('0x4d')])){utils['info'](util[_0x5c17('0x18')](_0x5c17('0x4e'),_0x583942[_0x5c17('0x9')],!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')][_0x5c17('0x4f')])?_0x5c17('0x4f'):_0x5c17('0x4d'),_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x2d')]=_0x583942[_0x5c17('0x4a')];}if(!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')][_0x5c17('0x50')])||!_[_0x5c17('0x23')](_0x583942['variable'][_0x5c17('0x51')])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x4e'),_0x583942[_0x5c17('0x9')],!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')]['xmd-queue'])?'xmd-queue':_0x5c17('0x51'),_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x52')]='Queue';channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x53')]=_0x583942[_0x5c17('0x4a')];channels[_0x583942['uniqueid']][_0x5c17('0xb')]=!![];}if(!_[_0x5c17('0x23')](_0x583942['variable'][_0x5c17('0x54')])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x583942[_0x5c17('0x9')],_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x55')]=_0x583942[_0x5c17('0x4a')];}if(!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')][_0x5c17('0x56')])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x57'),_0x583942[_0x5c17('0x9')],_0x583942['value']));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x58')]=_0x583942['value'];}if(!_[_0x5c17('0x23')](_0x583942['variable'][_0x5c17('0x59')])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x583942[_0x5c17('0x9')],_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x5a')]=_0x583942[_0x5c17('0x4a')];}if(!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')][_0x5c17('0x5b')])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x583942[_0x5c17('0x9')],_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]]['sipcallid']=_0x583942['value'];}}}catch(_0x3f11e4){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x47'),_0x583942[_0x5c17('0x9')]),_0x3f11e4);}};exports[_0x5c17('0x5c')]=function(_0x3843f9){try{if(!_[_0x5c17('0x23')](channels[_0x3843f9[_0x5c17('0x9')]])){utils[_0x5c17('0x17')](util[_0x5c17('0x18')](_0x5c17('0x5d'),_0x3843f9[_0x5c17('0x9')]),_0x3843f9);utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x5e'),_0x3843f9[_0x5c17('0x9')],_0x3843f9[_0x5c17('0x5f')],_0x3843f9[_0x5c17('0x60')]));if(_0x3843f9[_0x5c17('0x5f')][_0x5c17('0x61')]()=='set'&&_[_0x5c17('0x62')](_0x3843f9[_0x5c17('0x60')][_0x5c17('0x61')](),'cdr')){var _0x2fe018=_0x3843f9[_0x5c17('0x60')][_0x5c17('0x63')]('=');var _0x3e70ca=_0x2fe018[0x0][_0x5c17('0x64')](_0x2fe018[0x0][_0x5c17('0x65')]('(')+0x1,_0x2fe018[0x0][_0x5c17('0x65')](')'));var _0x50170b=_0x2fe018[0x1];channels[_0x3843f9[_0x5c17('0x9')]][_0x3e70ca]=_0x50170b;}if(!_[_0x5c17('0x66')]([_0x5c17('0x2c'),_0x5c17('0x67'),_0x5c17('0x68'),_0x5c17('0x69'),_0x5c17('0x6a')],_0x3843f9[_0x5c17('0x5f')][_0x5c17('0x61')]())){channels[_0x3843f9[_0x5c17('0x9')]]['lastapplication']=_0x3843f9[_0x5c17('0x5f')];channels[_0x3843f9[_0x5c17('0x9')]][_0x5c17('0x53')]=_0x3843f9[_0x5c17('0x60')];}}}catch(_0x246b9b){utils[_0x5c17('0x1f')](util['format'](_0x5c17('0x5d'),_0x3843f9['uniqueid']),_0x246b9b);}};
\ No newline at end of file
index 5359b5c..e980cb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbec=['[core]\x20close','managerevent','./utils','connect','info','[core]\x20connected','error','[core]\x20error','close'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0xbbec,0xad));var _0xcbbe=function(_0x4aa6f1,_0x4fc7e9){_0x4aa6f1=_0x4aa6f1-0x0;var _0x3b896e=_0xbbec[_0x4aa6f1];return _0x3b896e;};'use strict';var utils=require(_0xcbbe('0x0'));exports[_0xcbbe('0x1')]=function(){utils[_0xcbbe('0x2')](_0xcbbe('0x3'));};exports['shutdown']=function(){utils['info']('[core]\x20shutdown');};exports['fullybooted']=function(){utils['info']('[core]\x20fullybooted');};exports[_0xcbbe('0x4')]=function(_0x328fc4){utils[_0xcbbe('0x4')](_0xcbbe('0x5'),_0x328fc4);};exports[_0xcbbe('0x6')]=function(){utils[_0xcbbe('0x2')](_0xcbbe('0x7'));};exports[_0xcbbe('0x8')]=function(_0x580149){};
\ No newline at end of file
+var _0x54f2=['[core]\x20connected','[core]\x20fullybooted','[core]\x20error','[core]\x20close','managerevent','./utils','connect','info'];(function(_0x1e0168,_0x4303ab){var _0x201289=function(_0x1a3b95){while(--_0x1a3b95){_0x1e0168['push'](_0x1e0168['shift']());}};_0x201289(++_0x4303ab);}(_0x54f2,0x18d));var _0x254f=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0x54f2[_0x20589d];return _0x422de9;};'use strict';var utils=require(_0x254f('0x0'));exports[_0x254f('0x1')]=function(){utils[_0x254f('0x2')](_0x254f('0x3'));};exports['shutdown']=function(){utils['info']('[core]\x20shutdown');};exports['fullybooted']=function(){utils['info'](_0x254f('0x4'));};exports['error']=function(_0x1ef6f0){utils['error'](_0x254f('0x5'),_0x1ef6f0);};exports['close']=function(){utils[_0x254f('0x2')](_0x254f('0x6'));};exports[_0x254f('0x7')]=function(_0x4c6153){};
\ No newline at end of file
index f7cf58d..c44b56c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89fe=['[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','uniqueid','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','startsWith','appdata','toLowerCase','error','varset','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','[%s][dials][varset]','dialbegin','[%s][dials][dialbegin]','starttime','now','lastevent','called','dialend','ANSWER','assign','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','hangup','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','duration','endtime','holdtime','diffTime','[%s][dials][hangup]','lodash','util','./utils','format'];(function(_0x31f5b0,_0x3ceb60){var _0x25dfd3=function(_0x4f81da){while(--_0x4f81da){_0x31f5b0['push'](_0x31f5b0['shift']());}};_0x25dfd3(++_0x3ceb60);}(_0x89fe,0x13a));var _0xe89f=function(_0x10d6b9,_0x5961b3){_0x10d6b9=_0x10d6b9-0x0;var _0x3b2694=_0x89fe[_0x10d6b9];return _0x3b2694;};'use strict';var _=require(_0xe89f('0x0'));var util=require(_0xe89f('0x1'));var utils=require(_0xe89f('0x2'));var dials={};function writeDB(_0x28bc90){utils['info'](util[_0xe89f('0x3')](_0xe89f('0x4'),_0x28bc90['uniqueid'],_0x28bc90[_0xe89f('0x5')],_0x28bc90[_0xe89f('0x6')],_0x28bc90[_0xe89f('0x7')],_0x28bc90[_0xe89f('0x8')],_0x28bc90[_0xe89f('0x9')]));utils[_0xe89f('0xa')](_0xe89f('0xb'),_0x28bc90);delete dials[_0x28bc90['uniqueid']];}exports[_0xe89f('0xc')]=function(_0x24212f){try{utils[_0xe89f('0xd')](util[_0xe89f('0x3')](_0xe89f('0xe'),_0x24212f[_0xe89f('0xf')]),_0x24212f);utils[_0xe89f('0x10')](util[_0xe89f('0x3')](_0xe89f('0x11'),_0x24212f[_0xe89f('0xf')],_0x24212f[_0xe89f('0x12')],_0x24212f['appdata']));if(_0x24212f['application']['toLowerCase']()=='set'&&_[_0xe89f('0x13')](_0x24212f[_0xe89f('0x14')][_0xe89f('0x15')](),'cdr(routeid)')){var _0x256c37=_0x24212f[_0xe89f('0x14')]['split']('=');dials[_0x24212f[_0xe89f('0xf')]]={'routeId':_0x256c37[0x1]};}}catch(_0x8b0009){utils[_0xe89f('0x16')](util[_0xe89f('0x3')]('[%s][dials][newexten]',_0x24212f[_0xe89f('0xf')]),_0x8b0009);}};exports[_0xe89f('0x17')]=function(_0x1498e7){try{utils['debug'](util['format']('[%s][dials][varset]',_0x1498e7[_0xe89f('0xf')]),_0x1498e7);if(!_[_0xe89f('0x18')](_0x1498e7[_0xe89f('0x19')][_0xe89f('0x1a')])){utils[_0xe89f('0x10')](util[_0xe89f('0x3')](_0xe89f('0x1b'),_0x1498e7['uniqueid'],_0x1498e7[_0xe89f('0x1c')]));dials[_0x1498e7[_0xe89f('0xf')]]={'routeId':_0x1498e7[_0xe89f('0x1c')]};}}catch(_0x30c0cf){utils[_0xe89f('0x16')](util[_0xe89f('0x3')](_0xe89f('0x1d'),_0x1498e7[_0xe89f('0xf')]),_0x30c0cf);}};exports[_0xe89f('0x1e')]=function(_0xffd4f6){try{if(!_['isNil'](dials[_0xffd4f6[_0xe89f('0xf')]])){utils[_0xe89f('0xd')](util[_0xe89f('0x3')](_0xe89f('0x1f'),_0xffd4f6[_0xe89f('0xf')]),_0xffd4f6);dials[_0xffd4f6['uniqueid']]=_['assign'](dials[_0xffd4f6[_0xe89f('0xf')]],_0xffd4f6);dials[_0xffd4f6[_0xe89f('0xf')]][_0xe89f('0x20')]=utils[_0xe89f('0x21')]();dials[_0xffd4f6[_0xe89f('0xf')]][_0xe89f('0x22')]=_0xe89f('0x23');utils[_0xe89f('0x10')](util[_0xe89f('0x3')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0xffd4f6[_0xe89f('0xf')],dials[_0xffd4f6['uniqueid']][_0xe89f('0x20')]));}}catch(_0x2a7774){utils[_0xe89f('0x16')](util[_0xe89f('0x3')]('[%s][dials][dialbegin]',_0xffd4f6[_0xe89f('0xf')]),_0x2a7774);}};exports[_0xe89f('0x24')]=function(_0xdde56d){try{if(!_[_0xe89f('0x18')](dials[_0xdde56d['uniqueid']])){utils[_0xe89f('0xd')](util[_0xe89f('0x3')]('[%s][dials][dialend]',_0xdde56d[_0xe89f('0xf')]),_0xdde56d);dials[_0xdde56d[_0xe89f('0xf')]]['dialstatus']=_0xdde56d[_0xe89f('0x9')];if(_0xdde56d[_0xe89f('0x9')]==_0xe89f('0x25')){dials[_0xdde56d[_0xe89f('0xf')]]=_[_0xe89f('0x26')](dials[_0xdde56d['uniqueid']],_0xdde56d);dials[_0xdde56d[_0xe89f('0xf')]]['answertime']=utils[_0xe89f('0x21')]();dials[_0xdde56d[_0xe89f('0xf')]][_0xe89f('0x22')]=_0xe89f('0x27');utils[_0xe89f('0x10')](util[_0xe89f('0x3')](_0xe89f('0x28'),_0xdde56d['uniqueid'],_0xdde56d[_0xe89f('0x9')],dials[_0xdde56d[_0xe89f('0xf')]][_0xe89f('0x29')]));}else{utils[_0xe89f('0x10')](util[_0xe89f('0x3')](_0xe89f('0x2a'),_0xdde56d[_0xe89f('0xf')],_0xdde56d['dialstatus']));}}}catch(_0x6039cf){utils['error'](util['format'](_0xe89f('0x2b'),_0xdde56d['uniqueid']),_0x6039cf);}};exports[_0xe89f('0x2c')]=function(_0x279414){try{if(!_[_0xe89f('0x18')](dials[_0x279414[_0xe89f('0xf')]])){utils[_0xe89f('0xd')](util['format']('[%s][dials][hangup]',_0x279414[_0xe89f('0xf')]),_0x279414);utils[_0xe89f('0x10')](util['format'](_0xe89f('0x2d'),_0x279414[_0xe89f('0xf')],_0x279414[_0xe89f('0x7')],_0x279414[_0xe89f('0x2e')],_0x279414[_0xe89f('0x2f')]));dials[_0x279414[_0xe89f('0xf')]]=_[_0xe89f('0x26')](dials[_0x279414[_0xe89f('0xf')]],{'endtime':utils[_0xe89f('0x21')](),'lastevent':'complete'});dials[_0x279414['uniqueid']][_0xe89f('0x30')]=utils['diffTime'](dials[_0x279414['uniqueid']][_0xe89f('0x31')],dials[_0x279414['uniqueid']][_0xe89f('0x20')]);dials[_0x279414[_0xe89f('0xf')]][_0xe89f('0x32')]=utils[_0xe89f('0x33')](dials[_0x279414[_0xe89f('0xf')]]['answertime']||dials[_0x279414['uniqueid']][_0xe89f('0x31')],dials[_0x279414[_0xe89f('0xf')]][_0xe89f('0x20')]);dials[_0x279414['uniqueid']]['billableseconds']=dials[_0x279414[_0xe89f('0xf')]]['answertime']?utils[_0xe89f('0x33')](dials[_0x279414['uniqueid']][_0xe89f('0x31')],dials[_0x279414[_0xe89f('0xf')]]['answertime']):0x0;writeDB(dials[_0x279414[_0xe89f('0xf')]]);}}catch(_0x12a663){utils[_0xe89f('0x16')](util['format'](_0xe89f('0x34'),_0x279414[_0xe89f('0xf')]),_0x12a663);}};
\ No newline at end of file
+var _0x23c9=['./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith','cdr(routeid)','varset','[%s][dials][varset]','variable','outboundrouteid','value','error','dialbegin','isNil','debug','[%s][dials][dialbegin]','assign','starttime','now','lastevent','dialend','[%s][dials][dialend]','ANSWER','connect','[%s][dials][dialend]\x20dialstatus:%s','cause-txt','duration','diffTime','endtime','billableseconds','answertime','lodash','util'];(function(_0x2f8d7d,_0x1996e4){var _0x3aa58e=function(_0x11e3dd){while(--_0x11e3dd){_0x2f8d7d['push'](_0x2f8d7d['shift']());}};_0x3aa58e(++_0x1996e4);}(_0x23c9,0xb2));var _0x923c=function(_0x28a627,_0x4ac654){_0x28a627=_0x28a627-0x0;var _0x40b112=_0x23c9[_0x28a627];return _0x40b112;};'use strict';var _=require(_0x923c('0x0'));var util=require(_0x923c('0x1'));var utils=require(_0x923c('0x2'));var dials={};function writeDB(_0x446a86){utils[_0x923c('0x3')](util[_0x923c('0x4')](_0x923c('0x5'),_0x446a86[_0x923c('0x6')],_0x446a86[_0x923c('0x7')],_0x446a86[_0x923c('0x8')],_0x446a86[_0x923c('0x9')],_0x446a86[_0x923c('0xa')],_0x446a86[_0x923c('0xb')]));utils[_0x923c('0xc')](_0x923c('0xd'),_0x446a86);delete dials[_0x446a86[_0x923c('0x6')]];}exports['newexten']=function(_0x52f8b2){try{utils['debug'](util[_0x923c('0x4')]('[%s][dials][newexten]',_0x52f8b2['uniqueid']),_0x52f8b2);utils['info'](util['format'](_0x923c('0xe'),_0x52f8b2[_0x923c('0x6')],_0x52f8b2[_0x923c('0xf')],_0x52f8b2[_0x923c('0x10')]));if(_0x52f8b2[_0x923c('0xf')][_0x923c('0x11')]()=='set'&&_[_0x923c('0x12')](_0x52f8b2[_0x923c('0x10')][_0x923c('0x11')](),_0x923c('0x13'))){var _0x17fb35=_0x52f8b2['appdata']['split']('=');dials[_0x52f8b2[_0x923c('0x6')]]={'routeId':_0x17fb35[0x1]};}}catch(_0x5510b1){utils['error'](util['format']('[%s][dials][newexten]',_0x52f8b2[_0x923c('0x6')]),_0x5510b1);}};exports[_0x923c('0x14')]=function(_0x205d1e){try{utils['debug'](util[_0x923c('0x4')](_0x923c('0x15'),_0x205d1e['uniqueid']),_0x205d1e);if(!_['isNil'](_0x205d1e[_0x923c('0x16')][_0x923c('0x17')])){utils[_0x923c('0x3')](util[_0x923c('0x4')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x205d1e['uniqueid'],_0x205d1e[_0x923c('0x18')]));dials[_0x205d1e[_0x923c('0x6')]]={'routeId':_0x205d1e[_0x923c('0x18')]};}}catch(_0x822cab){utils[_0x923c('0x19')](util[_0x923c('0x4')](_0x923c('0x15'),_0x205d1e[_0x923c('0x6')]),_0x822cab);}};exports[_0x923c('0x1a')]=function(_0x43b6b5){try{if(!_[_0x923c('0x1b')](dials[_0x43b6b5[_0x923c('0x6')]])){utils[_0x923c('0x1c')](util['format'](_0x923c('0x1d'),_0x43b6b5[_0x923c('0x6')]),_0x43b6b5);dials[_0x43b6b5['uniqueid']]=_[_0x923c('0x1e')](dials[_0x43b6b5[_0x923c('0x6')]],_0x43b6b5);dials[_0x43b6b5[_0x923c('0x6')]][_0x923c('0x1f')]=utils[_0x923c('0x20')]();dials[_0x43b6b5['uniqueid']][_0x923c('0x21')]='called';utils['info'](util['format']('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x43b6b5[_0x923c('0x6')],dials[_0x43b6b5[_0x923c('0x6')]][_0x923c('0x1f')]));}}catch(_0x514941){utils[_0x923c('0x19')](util[_0x923c('0x4')]('[%s][dials][dialbegin]',_0x43b6b5[_0x923c('0x6')]),_0x514941);}};exports[_0x923c('0x22')]=function(_0x845e36){try{if(!_['isNil'](dials[_0x845e36[_0x923c('0x6')]])){utils[_0x923c('0x1c')](util[_0x923c('0x4')](_0x923c('0x23'),_0x845e36['uniqueid']),_0x845e36);dials[_0x845e36[_0x923c('0x6')]][_0x923c('0xb')]=_0x845e36[_0x923c('0xb')];if(_0x845e36[_0x923c('0xb')]==_0x923c('0x24')){dials[_0x845e36[_0x923c('0x6')]]=_[_0x923c('0x1e')](dials[_0x845e36[_0x923c('0x6')]],_0x845e36);dials[_0x845e36['uniqueid']]['answertime']=utils[_0x923c('0x20')]();dials[_0x845e36[_0x923c('0x6')]]['lastevent']=_0x923c('0x25');utils[_0x923c('0x3')](util['format']('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x845e36[_0x923c('0x6')],_0x845e36[_0x923c('0xb')],dials[_0x845e36[_0x923c('0x6')]]['answertime']));}else{utils[_0x923c('0x3')](util[_0x923c('0x4')](_0x923c('0x26'),_0x845e36[_0x923c('0x6')],_0x845e36[_0x923c('0xb')]));}}}catch(_0x2af86f){utils[_0x923c('0x19')](util[_0x923c('0x4')]('[%s][dials][dialend]',_0x845e36[_0x923c('0x6')]),_0x2af86f);}};exports['hangup']=function(_0x32c2df){try{if(!_[_0x923c('0x1b')](dials[_0x32c2df[_0x923c('0x6')]])){utils[_0x923c('0x1c')](util['format']('[%s][dials][hangup]',_0x32c2df[_0x923c('0x6')]),_0x32c2df);utils[_0x923c('0x3')](util[_0x923c('0x4')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x32c2df[_0x923c('0x6')],_0x32c2df[_0x923c('0x9')],_0x32c2df['calleridname'],_0x32c2df[_0x923c('0x27')]));dials[_0x32c2df[_0x923c('0x6')]]=_[_0x923c('0x1e')](dials[_0x32c2df['uniqueid']],{'endtime':utils[_0x923c('0x20')](),'lastevent':'complete'});dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x28')]=utils[_0x923c('0x29')](dials[_0x32c2df['uniqueid']][_0x923c('0x2a')],dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x1f')]);dials[_0x32c2df[_0x923c('0x6')]]['holdtime']=utils[_0x923c('0x29')](dials[_0x32c2df['uniqueid']]['answertime']||dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x2a')],dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x1f')]);dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x2b')]=dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x2c')]?utils[_0x923c('0x29')](dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x2a')],dials[_0x32c2df[_0x923c('0x6')]]['answertime']):0x0;writeDB(dials[_0x32c2df[_0x923c('0x6')]]);}}catch(_0x318868){utils['error'](util['format']('[%s][dials][hangup]',_0x32c2df[_0x923c('0x6')]),_0x318868);}};
\ No newline at end of file
index a13fcb6..22bbfc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4398=['close','managerevent','devicestatechange','debug','[%s][index][devicestatechange]','device','error','agentcalled','format','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][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]','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','xdr','disabled','env','production','local','port','asterisk','username','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','fullybooted'];(function(_0x4aad79,_0x1849ae){var _0x33ab95=function(_0x29086c){while(--_0x29086c){_0x4aad79['push'](_0x4aad79['shift']());}};_0x33ab95(++_0x1849ae);}(_0x4398,0x10d));var _0x8439=function(_0x589b96,_0x2b9dbb){_0x589b96=_0x589b96-0x0;var _0x1f38cd=_0x4398[_0x589b96];return _0x1f38cd;};var AsteriskManager=require(_0x8439('0x0'));var config=require(_0x8439('0x1'));var utils=require(_0x8439('0x2'));var util=require('util');var isXDREnabled=config[_0x8439('0x3')]&&config[_0x8439('0x3')][_0x8439('0x4')]?!config[_0x8439('0x3')][_0x8439('0x4')]:!![];var isProduction=config[_0x8439('0x5')]===_0x8439('0x6')||![];var isLocalAsterisk=config[_0x8439('0x3')]&&config[_0x8439('0x3')][_0x8439('0x7')]===!![]||![];var ami=new AsteriskManager(config['asterisk'][_0x8439('0x8')],config['asterisk']['ip'],config[_0x8439('0x9')][_0x8439('0xa')],config[_0x8439('0x9')][_0x8439('0xb')],!![]);ami[_0x8439('0xc')]();if(!isXDREnabled){utils[_0x8439('0xd')](_0x8439('0xe'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x8439('0xd')](_0x8439('0xf'));}else{var agents=require(_0x8439('0x10'));var calls=require(_0x8439('0x11'));var queues=require(_0x8439('0x12'));var recordings=require(_0x8439('0x13'));var members=require(_0x8439('0x14'));var dials=require(_0x8439('0x15'));var transfers=require(_0x8439('0x16'));var core=require(_0x8439('0x17'));ami['on'](_0x8439('0x18'),core[_0x8439('0x18')]);ami['on']('shutdown',core[_0x8439('0x19')]);ami['on'](_0x8439('0x1a'),core[_0x8439('0x1a')]);ami['on']('error',core['error']);ami['on'](_0x8439('0x1b'),core[_0x8439('0x1b')]);ami['on'](_0x8439('0x1c'),core[_0x8439('0x1c')]);ami['on'](_0x8439('0x1d'),function(_0x3fe3a4){try{utils[_0x8439('0x1e')](util['format'](_0x8439('0x1f'),_0x3fe3a4[_0x8439('0x20')]),_0x3fe3a4);members['devicestatechange'](_0x3fe3a4);}catch(_0x2892ba){utils[_0x8439('0x21')](util['format']('[%s][index][devicestatechange]',_0x3fe3a4[_0x8439('0x20')]),_0x2892ba);}});ami['on'](_0x8439('0x22'),function(_0x325688){try{utils['debug'](util[_0x8439('0x23')](_0x8439('0x24'),_0x325688[_0x8439('0x25')]),_0x325688);agents[_0x8439('0x22')](_0x325688);}catch(_0x39ed34){utils[_0x8439('0x21')](util[_0x8439('0x23')]('[%s][index][agentcalled]',_0x325688[_0x8439('0x25')]),_0x39ed34);}});ami['on'](_0x8439('0x26'),function(_0x4037b5){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')]('[%s][index][agentringnoanswer]',_0x4037b5[_0x8439('0x25')]),_0x4037b5);agents[_0x8439('0x26')](_0x4037b5);}catch(_0x1ad1c6){utils[_0x8439('0x21')](util['format'](_0x8439('0x27'),_0x4037b5[_0x8439('0x25')]),_0x1ad1c6);}});ami['on'](_0x8439('0x28'),function(_0x1ee1f9){try{utils[_0x8439('0x1e')](util['format']('[%s][index][agentconnect]',_0x1ee1f9[_0x8439('0x25')]),_0x1ee1f9);agents[_0x8439('0x28')](_0x1ee1f9);queues['agentconnect'](_0x1ee1f9);}catch(_0x2088d8){utils[_0x8439('0x21')](util[_0x8439('0x23')](_0x8439('0x29'),_0x1ee1f9['uniqueid']),_0x2088d8);}});ami['on'](_0x8439('0x2a'),function(_0x322d1e){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')](_0x8439('0x2b'),_0x322d1e[_0x8439('0x25')]),_0x322d1e);agents[_0x8439('0x2a')](_0x322d1e);queues[_0x8439('0x2a')](_0x322d1e);members[_0x8439('0x2a')](_0x322d1e);}catch(_0x33bd66){utils[_0x8439('0x21')](util[_0x8439('0x23')](_0x8439('0x2b'),_0x322d1e[_0x8439('0x25')]),_0x33bd66);}});ami['on'](_0x8439('0x2c'),function(_0x31984e){try{utils[_0x8439('0x1e')](util['format'](_0x8439('0x2d'),_0x31984e[_0x8439('0x25')]),_0x31984e);agents[_0x8439('0x2c')](_0x31984e);queues['queuecallerabandon'](_0x31984e);}catch(_0x5a3767){utils[_0x8439('0x21')](util['format']('[%s][index][queuecallerabandon]',_0x31984e['uniqueid']),_0x5a3767);}});ami['on'](_0x8439('0x2e'),function(_0xcff554){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')]('[%s][index][queuecallerjoin]',_0xcff554['uniqueid']),_0xcff554);queues['queuecallerjoin'](_0xcff554);recordings['queuecallerjoin'](_0xcff554);}catch(_0x2fb486){utils[_0x8439('0x21')](util[_0x8439('0x23')](_0x8439('0x2f'),_0xcff554[_0x8439('0x25')]),_0x2fb486);}});ami['on'](_0x8439('0x30'),function(_0x17b478){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')](_0x8439('0x31'),_0x17b478[_0x8439('0x25')]),_0x17b478);queues[_0x8439('0x30')](_0x17b478);}catch(_0x3611b1){utils[_0x8439('0x21')](util[_0x8439('0x23')](_0x8439('0x31'),_0x17b478[_0x8439('0x25')]),_0x3611b1);}});ami['on'](_0x8439('0x32'),function(_0x1fa1c3){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')](_0x8439('0x33'),_0x1fa1c3[_0x8439('0x25')]),_0x1fa1c3);queues[_0x8439('0x32')](_0x1fa1c3);calls['musiconholdstart'](_0x1fa1c3);}catch(_0x415fab){utils[_0x8439('0x21')](util['format'](_0x8439('0x33'),_0x1fa1c3[_0x8439('0x25')]),_0x415fab);}});ami['on'](_0x8439('0x34'),function(_0x146d7b){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')]('[%s][index][musiconholdstop]',_0x146d7b[_0x8439('0x25')]),_0x146d7b);queues[_0x8439('0x34')](_0x146d7b);calls[_0x8439('0x34')](_0x146d7b);}catch(_0x2e514b){utils[_0x8439('0x21')](util['format']('[%s][index][musiconholdstop]',_0x146d7b['uniqueid']),_0x2e514b);}});ami['on'](_0x8439('0x35'),function(_0x340a14){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')](_0x8439('0x36'),_0x340a14[_0x8439('0x25')]),_0x340a14);calls['newstate'](_0x340a14);recordings[_0x8439('0x35')](_0x340a14);}catch(_0x4b948f){utils[_0x8439('0x21')](util['format'](_0x8439('0x36'),_0x340a14[_0x8439('0x25')]),_0x4b948f);}});ami['on'](_0x8439('0x37'),function(_0x312540){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')](_0x8439('0x38'),_0x312540[_0x8439('0x25')]),_0x312540);calls[_0x8439('0x37')](_0x312540);recordings[_0x8439('0x37')](_0x312540);dials[_0x8439('0x37')](_0x312540);agents['hangup'](_0x312540);queues[_0x8439('0x37')](_0x312540);}catch(_0x12132f){utils[_0x8439('0x21')](util[_0x8439('0x23')](_0x8439('0x38'),_0x312540['uniqueid']),_0x12132f);}});ami['on'](_0x8439('0x39'),function(_0x28f1ab){try{utils[_0x8439('0x1e')](util['format']('[%s][index][cdr]',_0x28f1ab[_0x8439('0x25')]),_0x28f1ab);members['cdr'](_0x28f1ab);}catch(_0x1f4bc7){utils[_0x8439('0x21')](util['format'](_0x8439('0x3a'),_0x28f1ab['uniqueid']),_0x1f4bc7);}});ami['on'](_0x8439('0x3b'),function(_0x127528){try{utils['debug'](util[_0x8439('0x23')](_0x8439('0x3c'),_0x127528['uniqueid']),_0x127528);queues[_0x8439('0x3b')](_0x127528);agents['blindtransfer'](_0x127528);transfers['blindtransfer'](_0x127528);}catch(_0xa3dc35){utils['error'](util[_0x8439('0x23')](_0x8439('0x3c'),_0x127528[_0x8439('0x25')]),_0xa3dc35);}});ami['on'](_0x8439('0x3d'),function(_0x3212bc){try{utils[_0x8439('0x1e')](util['format']('[%s][index][attendedtransfer]',_0x3212bc[_0x8439('0x3e')]),_0x3212bc);queues['attendedtransfer'](_0x3212bc);transfers['attendedtransfer'](_0x3212bc);agents['attendedtransfer'](_0x3212bc);calls[_0x8439('0x3d')](_0x3212bc);}catch(_0x5c8dec){utils[_0x8439('0x21')](util[_0x8439('0x23')](_0x8439('0x3f'),_0x3212bc[_0x8439('0x3e')]),_0x5c8dec);}});ami['on'](_0x8439('0x40'),function(_0x47e03c){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')](_0x8439('0x41'),_0x47e03c[_0x8439('0x25')]),_0x47e03c);queues[_0x8439('0x40')](_0x47e03c);recordings['varset'](_0x47e03c);calls[_0x8439('0x40')](_0x47e03c);dials[_0x8439('0x40')](_0x47e03c);}catch(_0x5d47e3){utils[_0x8439('0x21')](util[_0x8439('0x23')](_0x8439('0x41'),_0x47e03c['uniqueid']),_0x5d47e3);}});ami['on'](_0x8439('0x42'),function(_0x511871){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')](_0x8439('0x43'),_0x511871[_0x8439('0x25')]),_0x511871);calls[_0x8439('0x42')](_0x511871);recordings[_0x8439('0x42')](_0x511871);dials[_0x8439('0x42')](_0x511871);}catch(_0x4b4ba2){utils['error'](util[_0x8439('0x23')](_0x8439('0x43'),_0x511871[_0x8439('0x25')]),_0x4b4ba2);}});ami['on'](_0x8439('0x44'),function(_0x492a02){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')]('[%s][index][newchannel]',_0x492a02[_0x8439('0x25')]),_0x492a02);calls[_0x8439('0x44')](_0x492a02);recordings[_0x8439('0x44')](_0x492a02);}catch(_0x12d520){utils[_0x8439('0x21')](util[_0x8439('0x23')](_0x8439('0x45'),_0x492a02['uniqueid']),_0x12d520);}});ami['on'](_0x8439('0x46'),function(_0x97cf38){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')](_0x8439('0x47'),_0x97cf38[_0x8439('0x25')]),_0x97cf38);dials[_0x8439('0x46')](_0x97cf38);}catch(_0x1b86d7){utils[_0x8439('0x21')](util[_0x8439('0x23')]('[%s]dialbegin',_0x97cf38[_0x8439('0x25')]),_0x1b86d7);}});ami['on'](_0x8439('0x48'),function(_0x272fc8){try{utils[_0x8439('0x1e')](util[_0x8439('0x23')]('[%s][index][dialend]',_0x272fc8[_0x8439('0x25')]),_0x272fc8);dials[_0x8439('0x48')](_0x272fc8);}catch(_0x2b9ecf){utils[_0x8439('0x21')](util[_0x8439('0x23')](_0x8439('0x49'),_0x272fc8['uniqueid']),_0x2b9ecf);}});}
\ No newline at end of file
+var _0xf56e=['dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','xdr','disabled','env','asterisk','username','keepConnected','info','XDR\x20DISABLED','./agents.controller','./queues.controller','./recordings.controller','./dials.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','[%s][index][newstate]','newstate','[%s][index][hangup]','hangup','cdr','[%s][index][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]','[%s]dialbegin'];(function(_0x1aa9eb,_0x571fbe){var _0x2d2345=function(_0x47f327){while(--_0x47f327){_0x1aa9eb['push'](_0x1aa9eb['shift']());}};_0x2d2345(++_0x571fbe);}(_0xf56e,0x112));var _0xef56=function(_0x2a403a,_0x4ec334){_0x2a403a=_0x2a403a-0x0;var _0x3a0f0d=_0xf56e[_0x2a403a];return _0x3a0f0d;};var AsteriskManager=require(_0xef56('0x0'));var config=require(_0xef56('0x1'));var utils=require(_0xef56('0x2'));var util=require(_0xef56('0x3'));var isXDREnabled=config[_0xef56('0x4')]&&config[_0xef56('0x4')]['disabled']?!config['xdr'][_0xef56('0x5')]:!![];var isProduction=config[_0xef56('0x6')]==='production'||![];var isLocalAsterisk=config[_0xef56('0x4')]&&config[_0xef56('0x4')]['local']===!![]||![];var ami=new AsteriskManager(config[_0xef56('0x7')]['port'],config[_0xef56('0x7')]['ip'],config['asterisk'][_0xef56('0x8')],config[_0xef56('0x7')]['password'],!![]);ami[_0xef56('0x9')]();if(!isXDREnabled){utils[_0xef56('0xa')](_0xef56('0xb'));}else if(!isProduction&&!isLocalAsterisk){utils[_0xef56('0xa')]('Asterisk\x20disabled\x20on\x20localhost');}else{var agents=require(_0xef56('0xc'));var calls=require('./calls.controller');var queues=require(_0xef56('0xd'));var recordings=require(_0xef56('0xe'));var members=require('./members.controller');var dials=require(_0xef56('0xf'));var transfers=require(_0xef56('0x10'));var core=require('./core.controller');ami['on']('connect',core[_0xef56('0x11')]);ami['on'](_0xef56('0x12'),core['shutdown']);ami['on'](_0xef56('0x13'),core[_0xef56('0x13')]);ami['on'](_0xef56('0x14'),core[_0xef56('0x14')]);ami['on'](_0xef56('0x15'),core[_0xef56('0x15')]);ami['on'](_0xef56('0x16'),core['managerevent']);ami['on'](_0xef56('0x17'),function(_0x25d166){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x1a'),_0x25d166['device']),_0x25d166);members['devicestatechange'](_0x25d166);}catch(_0xba6303){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x1a'),_0x25d166[_0xef56('0x1b')]),_0xba6303);}});ami['on'](_0xef56('0x1c'),function(_0xfadb1f){try{utils['debug'](util[_0xef56('0x19')](_0xef56('0x1d'),_0xfadb1f[_0xef56('0x1e')]),_0xfadb1f);agents['agentcalled'](_0xfadb1f);}catch(_0x103410){utils[_0xef56('0x14')](util['format']('[%s][index][agentcalled]',_0xfadb1f[_0xef56('0x1e')]),_0x103410);}});ami['on'](_0xef56('0x1f'),function(_0x1c2b98){try{utils[_0xef56('0x18')](util['format'](_0xef56('0x20'),_0x1c2b98[_0xef56('0x1e')]),_0x1c2b98);agents[_0xef56('0x1f')](_0x1c2b98);}catch(_0x4d4bf8){utils['error'](util[_0xef56('0x19')](_0xef56('0x20'),_0x1c2b98[_0xef56('0x1e')]),_0x4d4bf8);}});ami['on']('agentconnect',function(_0x2c9464){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x21'),_0x2c9464[_0xef56('0x1e')]),_0x2c9464);agents['agentconnect'](_0x2c9464);queues['agentconnect'](_0x2c9464);}catch(_0x4c8502){utils[_0xef56('0x14')](util[_0xef56('0x19')]('[%s][index][agentconnect]',_0x2c9464[_0xef56('0x1e')]),_0x4c8502);}});ami['on'](_0xef56('0x22'),function(_0x2c82ef){try{utils['debug'](util['format'](_0xef56('0x23'),_0x2c82ef['uniqueid']),_0x2c82ef);agents[_0xef56('0x22')](_0x2c82ef);queues[_0xef56('0x22')](_0x2c82ef);members[_0xef56('0x22')](_0x2c82ef);}catch(_0x4f8d12){utils['error'](util[_0xef56('0x19')]('[%s][index][agentcomplete]',_0x2c82ef[_0xef56('0x1e')]),_0x4f8d12);}});ami['on'](_0xef56('0x24'),function(_0xadb5cb){try{utils[_0xef56('0x18')](util['format'](_0xef56('0x25'),_0xadb5cb[_0xef56('0x1e')]),_0xadb5cb);agents[_0xef56('0x24')](_0xadb5cb);queues[_0xef56('0x24')](_0xadb5cb);}catch(_0x15d515){utils[_0xef56('0x14')](util[_0xef56('0x19')]('[%s][index][queuecallerabandon]',_0xadb5cb[_0xef56('0x1e')]),_0x15d515);}});ami['on'](_0xef56('0x26'),function(_0x507264){try{utils[_0xef56('0x18')](util['format']('[%s][index][queuecallerjoin]',_0x507264['uniqueid']),_0x507264);queues[_0xef56('0x26')](_0x507264);recordings[_0xef56('0x26')](_0x507264);}catch(_0x579389){utils['error'](util[_0xef56('0x19')](_0xef56('0x27'),_0x507264['uniqueid']),_0x579389);}});ami['on'](_0xef56('0x28'),function(_0x57416f){try{utils[_0xef56('0x18')](util[_0xef56('0x19')]('[%s][index][queuecallerleave]',_0x57416f['uniqueid']),_0x57416f);queues[_0xef56('0x28')](_0x57416f);}catch(_0x6861d3){utils[_0xef56('0x14')](util['format'](_0xef56('0x29'),_0x57416f[_0xef56('0x1e')]),_0x6861d3);}});ami['on'](_0xef56('0x2a'),function(_0x3464ee){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x2b'),_0x3464ee[_0xef56('0x1e')]),_0x3464ee);queues[_0xef56('0x2a')](_0x3464ee);calls['musiconholdstart'](_0x3464ee);}catch(_0x5517c0){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x2b'),_0x3464ee[_0xef56('0x1e')]),_0x5517c0);}});ami['on']('musiconholdstop',function(_0x935a2c){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x2c'),_0x935a2c[_0xef56('0x1e')]),_0x935a2c);queues[_0xef56('0x2d')](_0x935a2c);calls['musiconholdstop'](_0x935a2c);}catch(_0x3664a1){utils[_0xef56('0x14')](util[_0xef56('0x19')]('[%s][index][musiconholdstop]',_0x935a2c[_0xef56('0x1e')]),_0x3664a1);}});ami['on']('newstate',function(_0x133fca){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x2e'),_0x133fca['uniqueid']),_0x133fca);calls[_0xef56('0x2f')](_0x133fca);recordings[_0xef56('0x2f')](_0x133fca);}catch(_0x593e2d){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x2e'),_0x133fca['uniqueid']),_0x593e2d);}});ami['on']('hangup',function(_0x3c24db){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x30'),_0x3c24db[_0xef56('0x1e')]),_0x3c24db);calls[_0xef56('0x31')](_0x3c24db);recordings[_0xef56('0x31')](_0x3c24db);dials[_0xef56('0x31')](_0x3c24db);agents[_0xef56('0x31')](_0x3c24db);queues[_0xef56('0x31')](_0x3c24db);}catch(_0x460716){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x30'),_0x3c24db['uniqueid']),_0x460716);}});ami['on'](_0xef56('0x32'),function(_0x22d66d){try{utils['debug'](util[_0xef56('0x19')]('[%s][index][cdr]',_0x22d66d[_0xef56('0x1e')]),_0x22d66d);members[_0xef56('0x32')](_0x22d66d);}catch(_0x2053d2){utils['error'](util[_0xef56('0x19')](_0xef56('0x33'),_0x22d66d['uniqueid']),_0x2053d2);}});ami['on'](_0xef56('0x34'),function(_0x4ebf3b){try{utils['debug'](util[_0xef56('0x19')](_0xef56('0x35'),_0x4ebf3b['uniqueid']),_0x4ebf3b);queues['blindtransfer'](_0x4ebf3b);agents['blindtransfer'](_0x4ebf3b);transfers['blindtransfer'](_0x4ebf3b);}catch(_0x24b9ff){utils[_0xef56('0x14')](util[_0xef56('0x19')]('[%s][index][blindtransfer]',_0x4ebf3b[_0xef56('0x1e')]),_0x24b9ff);}});ami['on'](_0xef56('0x36'),function(_0xa9f3a5){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x37'),_0xa9f3a5[_0xef56('0x38')]),_0xa9f3a5);queues['attendedtransfer'](_0xa9f3a5);transfers[_0xef56('0x36')](_0xa9f3a5);agents['attendedtransfer'](_0xa9f3a5);calls[_0xef56('0x36')](_0xa9f3a5);}catch(_0x1f3438){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x37'),_0xa9f3a5[_0xef56('0x38')]),_0x1f3438);}});ami['on'](_0xef56('0x39'),function(_0xd5f786){try{utils['debug'](util[_0xef56('0x19')](_0xef56('0x3a'),_0xd5f786['uniqueid']),_0xd5f786);queues[_0xef56('0x39')](_0xd5f786);recordings['varset'](_0xd5f786);calls[_0xef56('0x39')](_0xd5f786);dials[_0xef56('0x39')](_0xd5f786);}catch(_0x1b24da){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x3a'),_0xd5f786[_0xef56('0x1e')]),_0x1b24da);}});ami['on'](_0xef56('0x3b'),function(_0x45da68){try{utils['debug'](util['format']('[%s][index][newexten]',_0x45da68[_0xef56('0x1e')]),_0x45da68);calls['newexten'](_0x45da68);recordings[_0xef56('0x3b')](_0x45da68);dials['newexten'](_0x45da68);}catch(_0x444db0){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x3c'),_0x45da68[_0xef56('0x1e')]),_0x444db0);}});ami['on']('newchannel',function(_0x23a21f){try{utils[_0xef56('0x18')](util[_0xef56('0x19')]('[%s][index][newchannel]',_0x23a21f[_0xef56('0x1e')]),_0x23a21f);calls[_0xef56('0x3d')](_0x23a21f);recordings[_0xef56('0x3d')](_0x23a21f);}catch(_0xf828fb){utils['error'](util[_0xef56('0x19')](_0xef56('0x3e'),_0x23a21f[_0xef56('0x1e')]),_0xf828fb);}});ami['on'](_0xef56('0x3f'),function(_0xad128e){try{utils['debug'](util[_0xef56('0x19')](_0xef56('0x40'),_0xad128e[_0xef56('0x1e')]),_0xad128e);dials['dialbegin'](_0xad128e);}catch(_0x26a1eb){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x41'),_0xad128e[_0xef56('0x1e')]),_0x26a1eb);}});ami['on'](_0xef56('0x42'),function(_0x2467eb){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x43'),_0x2467eb['uniqueid']),_0x2467eb);dials[_0xef56('0x42')](_0x2467eb);}catch(_0xefe003){utils[_0xef56('0x14')](util[_0xef56('0x19')]('[%s][index][dialend]',_0x2467eb[_0xef56('0x1e')]),_0xefe003);}});}
\ No newline at end of file
index c429040..2471601 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d1b=['enterAt','queue','assign','[%s][members][agentcomplete]','channel','data1','source','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','isNil','[%s][members][cdr]','lodash','util','./utils','Local/_attended@transfer','Queue:','info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','data2','membername','type','interface','getUserByInterface','then','name','internal','request','CreateMemberReport','getUserByName','split','catch','error','format','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','NOT_INUSE','exitAt','now','duration','diffTime'];(function(_0x5ef905,_0x564b87){var _0x367808=function(_0x14f487){while(--_0x14f487){_0x5ef905['push'](_0x5ef905['shift']());}};_0x367808(++_0x564b87);}(_0x1d1b,0x110));var _0xb1d1=function(_0x22d598,_0x259d66){_0x22d598=_0x22d598-0x0;var _0x47477f=_0x1d1b[_0x22d598];return _0x47477f;};'use strict';var _=require(_0xb1d1('0x0'));var util=require(_0xb1d1('0x1'));var utils=require(_0xb1d1('0x2'));var members={};var exclude=[_0xb1d1('0x3'),_0xb1d1('0x4')];function writeDB(_0x4093d1){utils[_0xb1d1('0x5')](util['format'](_0xb1d1('0x6'),_0x4093d1[_0xb1d1('0x7')],_0x4093d1['interface'],_0x4093d1['channel'],_0x4093d1[_0xb1d1('0x8')],_0x4093d1[_0xb1d1('0x9')],_0x4093d1[_0xb1d1('0xa')]));if(_0x4093d1[_0xb1d1('0xb')]){utils[_0xb1d1('0xc')](_0x4093d1[_0xb1d1('0xb')])[_0xb1d1('0xd')](function(_0x4cb976){if(_0x4cb976){_0x4093d1[_0xb1d1('0x9')]=_0x4cb976[_0xb1d1('0xe')];_0x4093d1[_0xb1d1('0xf')]=_0x4cb976['internal'];utils[_0xb1d1('0x10')](_0xb1d1('0x11'),_0x4093d1);}else{utils[_0xb1d1('0x12')](_0x4093d1[_0xb1d1('0xb')][_0xb1d1('0x13')]('/')[0x1])[_0xb1d1('0xd')](function(_0x21fddb){if(_0x21fddb){_0x4093d1[_0xb1d1('0x9')]=_0x21fddb['name'];_0x4093d1[_0xb1d1('0xf')]=_0x21fddb[_0xb1d1('0xf')];utils['request']('CreateMemberReport',_0x4093d1);}});}})[_0xb1d1('0x14')](function(_0x575c09){utils[_0xb1d1('0x15')](util[_0xb1d1('0x16')](_0xb1d1('0x17'),_0x4093d1[_0xb1d1('0x7')]),_0x575c09);});}delete members[_0x4093d1['interface']];}function startsWith(_0x78c813,_0x2f8c8e){return _[_0xb1d1('0x18')](_0x78c813,function(_0x482703){return _[_0xb1d1('0x19')](_0x2f8c8e,_0x482703);});}exports[_0xb1d1('0x1a')]=function(_0x2fc136){try{utils[_0xb1d1('0x1b')](util[_0xb1d1('0x16')]('[%s][members][devicestatechange]',members[_0x2fc136[_0xb1d1('0x1c')]]?members[_0x2fc136[_0xb1d1('0x1c')]][_0xb1d1('0x7')]:_0x2fc136[_0xb1d1('0x1c')]),_0x2fc136);utils[_0xb1d1('0x5')](util[_0xb1d1('0x16')](_0xb1d1('0x1d'),members[_0x2fc136[_0xb1d1('0x1c')]]?members[_0x2fc136[_0xb1d1('0x1c')]]['uniqueid']:_0x2fc136['device'],_0x2fc136[_0xb1d1('0x1e')],_0x2fc136[_0xb1d1('0x1c')]));switch(_0x2fc136[_0xb1d1('0x1e')]){case _0xb1d1('0x1f'):case _0xb1d1('0x20'):if(!startsWith(exclude,_0x2fc136['device'])){members[_0x2fc136[_0xb1d1('0x1c')]]={'channel':_0xb1d1('0x21'),'interface':_0x2fc136['device'],'type':_0xb1d1('0x22'),'enterAt':utils['now'](),'role':'agent'};}break;case _0xb1d1('0x23'):if(!_['isNil'](members[_0x2fc136[_0xb1d1('0x1c')]])){members[_0x2fc136[_0xb1d1('0x1c')]][_0xb1d1('0x24')]=utils[_0xb1d1('0x25')]();members[_0x2fc136[_0xb1d1('0x1c')]][_0xb1d1('0x26')]=utils[_0xb1d1('0x27')](members[_0x2fc136[_0xb1d1('0x1c')]]['exitAt'],members[_0x2fc136['device']][_0xb1d1('0x28')]);if(members[_0x2fc136[_0xb1d1('0x1c')]][_0xb1d1('0x7')]){writeDB(members[_0x2fc136[_0xb1d1('0x1c')]]);}}break;default:break;}}catch(_0x303cba){utils['error'](util[_0xb1d1('0x16')]('[%s][members][devicestatechange]',members[_0x2fc136[_0xb1d1('0x1c')]]?members[_0x2fc136[_0xb1d1('0x1c')]][_0xb1d1('0x7')]:_0x2fc136[_0xb1d1('0x1c')]),_0x303cba);}};exports['agentcomplete']=function(_0x27d019){try{if(!_['isNil'](members[_0x27d019[_0xb1d1('0xb')]])){utils[_0xb1d1('0x1b')](util[_0xb1d1('0x16')]('[%s][members][agentcomplete]',_0x27d019[_0xb1d1('0x7')]),_0x27d019);utils[_0xb1d1('0x5')](util[_0xb1d1('0x16')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x27d019[_0xb1d1('0x7')],_0x27d019[_0xb1d1('0xb')],_0x27d019[_0xb1d1('0x29')]));members[_0x27d019['interface']]=_[_0xb1d1('0x2a')](members[_0x27d019[_0xb1d1('0xb')]],{'data4':_0x27d019[_0xb1d1('0x29')],'uniqueid':_0x27d019[_0xb1d1('0x7')]});}}catch(_0x1bab69){utils[_0xb1d1('0x15')](util['format'](_0xb1d1('0x2b'),_0x27d019[_0xb1d1('0x7')]),_0x1bab69);}};exports['cdr']=function(_0x435671){try{utils[_0xb1d1('0x1b')](util['format']('[%s][members][cdr]',_0x435671[_0xb1d1('0x7')]),_0x435671);if(_0x435671[_0xb1d1('0x2c')]){var _0x4788e2=_0x435671[_0xb1d1('0x2c')][_0xb1d1('0x13')]('-')[0x0];if(!_['isNil'](members[_0x4788e2])){members[_0x4788e2]=_[_0xb1d1('0x2a')](members[_0x4788e2],{'data1':members[_0x4788e2][_0xb1d1('0x2d')]||_0x435671['type'],'data2':members[_0x4788e2]['data2']||_0x435671[_0xb1d1('0x2e')],'data3':members[_0x4788e2][_0xb1d1('0x2f')]||_0x435671['destination'],'uniqueid':members[_0x4788e2]['uniqueid']||_0x435671['uniqueid']});utils[_0xb1d1('0x5')](util[_0xb1d1('0x16')](_0xb1d1('0x30'),_0x435671[_0xb1d1('0x7')],members[_0x4788e2][_0xb1d1('0x2d')],members[_0x4788e2][_0xb1d1('0x8')],members[_0x4788e2][_0xb1d1('0x2f')]));if(members[_0x4788e2][_0xb1d1('0x24')]){writeDB(members[_0x4788e2]);}}}if(_0x435671['destinationchannel']){var _0x5054b6=_0x435671[_0xb1d1('0x31')][_0xb1d1('0x13')]('-')[0x0];if(!_[_0xb1d1('0x32')](members[_0x5054b6])){members[_0x5054b6]=_[_0xb1d1('0x2a')](members[_0x5054b6],{'data1':members[_0x5054b6][_0xb1d1('0x2d')]||_0x435671[_0xb1d1('0xa')],'data2':members[_0x5054b6][_0xb1d1('0x8')]||_0x435671[_0xb1d1('0x2e')],'data3':members[_0x5054b6]['data3']||_0x435671['destination'],'uniqueid':members[_0x5054b6][_0xb1d1('0x7')]||_0x435671[_0xb1d1('0x7')]});utils[_0xb1d1('0x5')](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x435671[_0xb1d1('0x7')],members[_0x5054b6][_0xb1d1('0x2d')],members[_0x5054b6][_0xb1d1('0x8')],members[_0x5054b6][_0xb1d1('0x2f')]));if(members[_0x5054b6][_0xb1d1('0x24')]){writeDB(members[_0x5054b6]);}}}}catch(_0x885ab1){utils['error'](util['format'](_0xb1d1('0x33'),_0x435671[_0xb1d1('0x7')]),_0x885ab1);}};
\ No newline at end of file
+var _0x9bdf=['isNil','exitAt','duration','error','[%s][members][devicestatechange]','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','[%s][members][cdr]','type','data3','destinationchannel','source','destination','data1','lodash','Queue:','info','format','interface','channel','data2','membername','getUserByInterface','then','internal','CreateMemberReport','getUserByName','split','request','catch','[%s][members][writeDB]','uniqueid','some','startsWith','debug','device','state','INUSE','BUSY','voice','now','agent','NOT_INUSE'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x9bdf,0x1dd));var _0xf9bd=function(_0x4e7eec,_0x13cd74){_0x4e7eec=_0x4e7eec-0x0;var _0x79b028=_0x9bdf[_0x4e7eec];return _0x79b028;};'use strict';var _=require(_0xf9bd('0x0'));var util=require('util');var utils=require('./utils');var members={};var exclude=['Local/_attended@transfer',_0xf9bd('0x1')];function writeDB(_0x4a69db){utils[_0xf9bd('0x2')](util[_0xf9bd('0x3')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0x4a69db['uniqueid'],_0x4a69db[_0xf9bd('0x4')],_0x4a69db[_0xf9bd('0x5')],_0x4a69db[_0xf9bd('0x6')],_0x4a69db[_0xf9bd('0x7')],_0x4a69db['type']));if(_0x4a69db[_0xf9bd('0x4')]){utils[_0xf9bd('0x8')](_0x4a69db[_0xf9bd('0x4')])[_0xf9bd('0x9')](function(_0x4e05b1){if(_0x4e05b1){_0x4a69db[_0xf9bd('0x7')]=_0x4e05b1['name'];_0x4a69db[_0xf9bd('0xa')]=_0x4e05b1[_0xf9bd('0xa')];utils['request'](_0xf9bd('0xb'),_0x4a69db);}else{utils[_0xf9bd('0xc')](_0x4a69db['interface'][_0xf9bd('0xd')]('/')[0x1])[_0xf9bd('0x9')](function(_0xfd7f17){if(_0xfd7f17){_0x4a69db[_0xf9bd('0x7')]=_0xfd7f17['name'];_0x4a69db[_0xf9bd('0xa')]=_0xfd7f17[_0xf9bd('0xa')];utils[_0xf9bd('0xe')](_0xf9bd('0xb'),_0x4a69db);}});}})[_0xf9bd('0xf')](function(_0x3dcfc8){utils['error'](util['format'](_0xf9bd('0x10'),_0x4a69db[_0xf9bd('0x11')]),_0x3dcfc8);});}delete members[_0x4a69db[_0xf9bd('0x4')]];}function startsWith(_0x409858,_0x83bc53){return _[_0xf9bd('0x12')](_0x409858,function(_0x521075){return _[_0xf9bd('0x13')](_0x83bc53,_0x521075);});}exports['devicestatechange']=function(_0x13594d){try{utils[_0xf9bd('0x14')](util['format']('[%s][members][devicestatechange]',members[_0x13594d[_0xf9bd('0x15')]]?members[_0x13594d[_0xf9bd('0x15')]][_0xf9bd('0x11')]:_0x13594d[_0xf9bd('0x15')]),_0x13594d);utils[_0xf9bd('0x2')](util[_0xf9bd('0x3')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x13594d[_0xf9bd('0x15')]]?members[_0x13594d[_0xf9bd('0x15')]][_0xf9bd('0x11')]:_0x13594d['device'],_0x13594d[_0xf9bd('0x16')],_0x13594d[_0xf9bd('0x15')]));switch(_0x13594d[_0xf9bd('0x16')]){case _0xf9bd('0x17'):case _0xf9bd('0x18'):if(!startsWith(exclude,_0x13594d['device'])){members[_0x13594d[_0xf9bd('0x15')]]={'channel':_0xf9bd('0x19'),'interface':_0x13594d['device'],'type':'TALKING','enterAt':utils[_0xf9bd('0x1a')](),'role':_0xf9bd('0x1b')};}break;case _0xf9bd('0x1c'):if(!_[_0xf9bd('0x1d')](members[_0x13594d[_0xf9bd('0x15')]])){members[_0x13594d[_0xf9bd('0x15')]][_0xf9bd('0x1e')]=utils[_0xf9bd('0x1a')]();members[_0x13594d['device']][_0xf9bd('0x1f')]=utils['diffTime'](members[_0x13594d[_0xf9bd('0x15')]][_0xf9bd('0x1e')],members[_0x13594d[_0xf9bd('0x15')]]['enterAt']);if(members[_0x13594d['device']]['uniqueid']){writeDB(members[_0x13594d[_0xf9bd('0x15')]]);}}break;default:break;}}catch(_0x176305){utils[_0xf9bd('0x20')](util['format'](_0xf9bd('0x21'),members[_0x13594d[_0xf9bd('0x15')]]?members[_0x13594d[_0xf9bd('0x15')]]['uniqueid']:_0x13594d[_0xf9bd('0x15')]),_0x176305);}};exports[_0xf9bd('0x22')]=function(_0x47fcc2){try{if(!_[_0xf9bd('0x1d')](members[_0x47fcc2['interface']])){utils[_0xf9bd('0x14')](util[_0xf9bd('0x3')](_0xf9bd('0x23'),_0x47fcc2[_0xf9bd('0x11')]),_0x47fcc2);utils[_0xf9bd('0x2')](util['format'](_0xf9bd('0x24'),_0x47fcc2['uniqueid'],_0x47fcc2[_0xf9bd('0x4')],_0x47fcc2[_0xf9bd('0x25')]));members[_0x47fcc2['interface']]=_[_0xf9bd('0x26')](members[_0x47fcc2['interface']],{'data4':_0x47fcc2[_0xf9bd('0x25')],'uniqueid':_0x47fcc2[_0xf9bd('0x11')]});}}catch(_0x5a0397){utils[_0xf9bd('0x20')](util[_0xf9bd('0x3')](_0xf9bd('0x23'),_0x47fcc2['uniqueid']),_0x5a0397);}};exports['cdr']=function(_0x27ad8b){try{utils['debug'](util[_0xf9bd('0x3')](_0xf9bd('0x27'),_0x27ad8b[_0xf9bd('0x11')]),_0x27ad8b);if(_0x27ad8b['channel']){var _0x4d1a84=_0x27ad8b[_0xf9bd('0x5')][_0xf9bd('0xd')]('-')[0x0];if(!_[_0xf9bd('0x1d')](members[_0x4d1a84])){members[_0x4d1a84]=_[_0xf9bd('0x26')](members[_0x4d1a84],{'data1':members[_0x4d1a84]['data1']||_0x27ad8b[_0xf9bd('0x28')],'data2':members[_0x4d1a84][_0xf9bd('0x6')]||_0x27ad8b['source'],'data3':members[_0x4d1a84][_0xf9bd('0x29')]||_0x27ad8b['destination'],'uniqueid':members[_0x4d1a84][_0xf9bd('0x11')]||_0x27ad8b[_0xf9bd('0x11')]});utils[_0xf9bd('0x2')](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x27ad8b[_0xf9bd('0x11')],members[_0x4d1a84]['data1'],members[_0x4d1a84][_0xf9bd('0x6')],members[_0x4d1a84]['data3']));if(members[_0x4d1a84]['exitAt']){writeDB(members[_0x4d1a84]);}}}if(_0x27ad8b[_0xf9bd('0x2a')]){var _0x1054b5=_0x27ad8b[_0xf9bd('0x2a')]['split']('-')[0x0];if(!_['isNil'](members[_0x1054b5])){members[_0x1054b5]=_['assign'](members[_0x1054b5],{'data1':members[_0x1054b5]['data1']||_0x27ad8b[_0xf9bd('0x28')],'data2':members[_0x1054b5][_0xf9bd('0x6')]||_0x27ad8b[_0xf9bd('0x2b')],'data3':members[_0x1054b5][_0xf9bd('0x29')]||_0x27ad8b[_0xf9bd('0x2c')],'uniqueid':members[_0x1054b5][_0xf9bd('0x11')]||_0x27ad8b[_0xf9bd('0x11')]});utils[_0xf9bd('0x2')](util[_0xf9bd('0x3')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x27ad8b[_0xf9bd('0x11')],members[_0x1054b5][_0xf9bd('0x2d')],members[_0x1054b5][_0xf9bd('0x6')],members[_0x1054b5][_0xf9bd('0x29')]));if(members[_0x1054b5][_0xf9bd('0x1e')]){writeDB(members[_0x1054b5]);}}}}catch(_0x12ef0d){utils[_0xf9bd('0x20')](util[_0xf9bd('0x3')](_0xf9bd('0x27'),_0x27ad8b[_0xf9bd('0x11')]),_0x12ef0d);}};
\ No newline at end of file
index 485b0d1..996e092 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd2=['TRANSFER','COMPLETEDBY','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','extension','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererlinkedid','origtransfererexten','ATTENDED','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','queuecallerenterreason','clone','transfertargetuniqueid','calleridnum','calleridname','holdtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]','musiconholdstartAt','[%s][queues][musiconholdstart]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','lodash','util','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','accountcode','queuecallerexitreason','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','hangup','debug','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','info','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','varset','variable','value','toUpperCase','CONTINUE','isNil','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexitAt','ABANDONED','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','queuecallerjoinAt','[%s][queues][agentconnect]','membername','destaccountcode','agentcomplete','[%s][queues][agentcomplete]','assigned','lastAssignedTo','queuecallercompleteAt','reason','transfer'];(function(_0x50a004,_0x193d84){var _0x5e9992=function(_0x3c8c37){while(--_0x3c8c37){_0x50a004['push'](_0x50a004['shift']());}};_0x5e9992(++_0x193d84);}(_0x5cd2,0x1b0));var _0x25cd=function(_0x2ae51c,_0x35ee1b){_0x2ae51c=_0x2ae51c-0x0;var _0x27df57=_0x5cd2[_0x2ae51c];return _0x27df57;};'use strict';var _=require(_0x25cd('0x0'));var util=require(_0x25cd('0x1'));var utils=require('./utils');var queues={};function writeDB(_0x4c97e5){utils['info'](util[_0x25cd('0x2')](_0x25cd('0x3'),_0x4c97e5[_0x25cd('0x4')],_0x4c97e5[_0x25cd('0x5')],_0x4c97e5[_0x25cd('0x6')],_0x4c97e5['lastAssignedTo'],_0x4c97e5['calleridnum'],_0x4c97e5[_0x25cd('0x7')],_0x4c97e5[_0x25cd('0x8')]));if(_0x4c97e5[_0x25cd('0x6')]){utils['getVoiceQueueByName'](_0x4c97e5[_0x25cd('0x6')])[_0x25cd('0x9')](function(_0x1fc96f){if(_0x1fc96f){_0x4c97e5[_0x25cd('0xa')]=_0x1fc96f[_0x25cd('0xa')];}utils['request']('CreateVoiceQueueReport',_0x4c97e5);});}else{utils[_0x25cd('0xb')](_0x25cd('0xc'),_0x4c97e5);}if(_0x4c97e5[_0x25cd('0xd')]){delete queues[_0x4c97e5[_0x25cd('0xd')]];}else{delete queues[_0x4c97e5[_0x25cd('0x4')]];}}exports[_0x25cd('0xe')]=function(_0x50531d){try{utils['debug'](util[_0x25cd('0x2')](_0x25cd('0xf'),_0x50531d[_0x25cd('0x4')]),_0x50531d);utils['info'](util[_0x25cd('0x2')](_0x25cd('0x10'),_0x50531d[_0x25cd('0x4')],_0x50531d[_0x25cd('0x6')],_0x50531d[_0x25cd('0x11')]));queues[_0x50531d[_0x25cd('0x4')]]=_[_0x25cd('0x12')](_0x50531d,{'originalposition':_0x50531d['position'],'queuecallerjoinAt':utils[_0x25cd('0x13')](),'mohtime':0x0});}catch(_0x14322b){utils[_0x25cd('0x14')](util['format'](_0x25cd('0xf'),_0x50531d[_0x25cd('0x4')]),_0x14322b);}};exports[_0x25cd('0x15')]=function(_0x2f39b8){try{if(!_['isNil'](queues[_0x2f39b8['uniqueid']])){utils[_0x25cd('0x16')](util['format'](_0x25cd('0x17'),_0x2f39b8[_0x25cd('0x4')]),_0x2f39b8);if(queues[_0x2f39b8[_0x25cd('0x4')]][_0x25cd('0x18')]){if(!queues[_0x2f39b8[_0x25cd('0x4')]][_0x25cd('0x19')]&&!queues[_0x2f39b8['uniqueid']][_0x25cd('0x1a')]){queues[_0x2f39b8[_0x25cd('0x4')]][_0x25cd('0x1b')]=!![];queues[_0x2f39b8[_0x25cd('0x4')]]['queuecallercompleteAt']=utils[_0x25cd('0x13')]();queues[_0x2f39b8['uniqueid']]['queuecallerexitreason']='COMPLETEDBYAGENT';}utils[_0x25cd('0x1c')](util['format'](_0x25cd('0x1d'),_0x2f39b8[_0x25cd('0x4')],queues[_0x2f39b8[_0x25cd('0x4')]][_0x25cd('0x1e')],queues[_0x2f39b8[_0x25cd('0x4')]]['queuecallerexitreason']));writeDB(queues[_0x2f39b8[_0x25cd('0x4')]]);}else if(queues[_0x2f39b8['uniqueid']][_0x25cd('0xd')]){utils[_0x25cd('0x1c')](util[_0x25cd('0x2')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x2f39b8[_0x25cd('0x4')],queues[_0x2f39b8['uniqueid']][_0x25cd('0x1e')],queues[_0x2f39b8[_0x25cd('0x4')]][_0x25cd('0xd')]));queues[queues[_0x2f39b8[_0x25cd('0x4')]][_0x25cd('0xd')]]=queues[_0x2f39b8[_0x25cd('0x4')]];queues[queues[_0x2f39b8[_0x25cd('0x4')]]['transfereduniqueid']]['queuecallerenterreason']=0x2;delete queues[_0x2f39b8['uniqueid']];}}}catch(_0x231f83){utils['error'](util[_0x25cd('0x2')](_0x25cd('0x17'),_0x2f39b8[_0x25cd('0x4')]),_0x231f83);}};exports[_0x25cd('0x1f')]=function(_0x562eb9){try{utils[_0x25cd('0x16')](util[_0x25cd('0x2')]('[%s][queues][varset]',_0x562eb9[_0x25cd('0x4')]),_0x562eb9);if(!_['isNil'](_0x562eb9[_0x25cd('0x20')]['queuestatus'])&&_0x562eb9[_0x25cd('0x21')][_0x25cd('0x22')]()!==_0x25cd('0x23')){if(!_[_0x25cd('0x24')](queues[_0x562eb9['uniqueid']])){queues[_0x562eb9[_0x25cd('0x4')]]['queuecallerabandon']=![];queues[_0x562eb9[_0x25cd('0x4')]][_0x25cd('0x25')]=null;queues[_0x562eb9['uniqueid']][_0x25cd('0x1a')]=!![];queues[_0x562eb9[_0x25cd('0x4')]]['queuecallerexitAt']=utils['now']();queues[_0x562eb9[_0x25cd('0x4')]][_0x25cd('0x8')]=_0x562eb9[_0x25cd('0x21')][_0x25cd('0x22')]();utils[_0x25cd('0x1c')](util[_0x25cd('0x2')](_0x25cd('0x26'),_0x562eb9['uniqueid'],queues[_0x562eb9['uniqueid']][_0x25cd('0x1e')],_0x562eb9[_0x25cd('0x21')],queues[_0x562eb9[_0x25cd('0x4')]][_0x25cd('0x8')]));writeDB(queues[_0x562eb9['uniqueid']]);}}else if(!_[_0x25cd('0x24')](_0x562eb9[_0x25cd('0x20')][_0x25cd('0x27')])){if(!_[_0x25cd('0x24')](queues[_0x562eb9[_0x25cd('0x4')]])&&!queues[_0x562eb9[_0x25cd('0x4')]][_0x25cd('0x19')]){queues[_0x562eb9[_0x25cd('0x4')]]['queuecallerabandon']=![];queues[_0x562eb9[_0x25cd('0x4')]][_0x25cd('0x25')]=null;queues[_0x562eb9['uniqueid']][_0x25cd('0x1a')]=!![];queues[_0x562eb9['uniqueid']][_0x25cd('0x28')]=utils['now']();queues[_0x562eb9['uniqueid']][_0x25cd('0x8')]='EXITWITHKEY';utils[_0x25cd('0x1c')](util[_0x25cd('0x2')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x562eb9['uniqueid'],queues[_0x562eb9[_0x25cd('0x4')]][_0x25cd('0x1e')],_0x562eb9[_0x25cd('0x21')],queues[_0x562eb9[_0x25cd('0x4')]][_0x25cd('0x8')]));}}}catch(_0x35b47c){utils[_0x25cd('0x14')](util['format']('[%s][queues][varset]',_0x562eb9[_0x25cd('0x4')]),_0x35b47c);}};exports[_0x25cd('0x19')]=function(_0x5b1701){try{if(!_['isNil'](queues[_0x5b1701[_0x25cd('0x4')]])){utils['debug'](util['format']('[%s][queues][queuecallerabandon]',_0x5b1701[_0x25cd('0x4')]),_0x5b1701);queues[_0x5b1701['uniqueid']][_0x25cd('0x1a')]=![];queues[_0x5b1701[_0x25cd('0x4')]][_0x25cd('0x28')]=null;queues[_0x5b1701[_0x25cd('0x4')]]['queuecallerabandon']=!![];queues[_0x5b1701[_0x25cd('0x4')]][_0x25cd('0x25')]=utils['now']();queues[_0x5b1701[_0x25cd('0x4')]]['queuecallerexitreason']=_0x25cd('0x29');utils[_0x25cd('0x1c')](util[_0x25cd('0x2')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x5b1701['uniqueid'],queues[_0x5b1701[_0x25cd('0x4')]][_0x25cd('0x1e')],queues[_0x5b1701[_0x25cd('0x4')]][_0x25cd('0x8')]));}}catch(_0x1137c9){utils['error'](util['format']('[%s][queues][queuecallerabandon]',_0x5b1701[_0x25cd('0x4')]),_0x1137c9);}};exports[_0x25cd('0x2a')]=function(_0x130115){try{if(!_[_0x25cd('0x24')](queues[_0x130115[_0x25cd('0x4')]])){utils[_0x25cd('0x16')](util[_0x25cd('0x2')](_0x25cd('0x2b'),_0x130115[_0x25cd('0x4')]),_0x130115);utils[_0x25cd('0x1c')](util[_0x25cd('0x2')](_0x25cd('0x2c'),_0x130115['uniqueid'],queues[_0x130115[_0x25cd('0x4')]][_0x25cd('0x1e')],_0x130115[_0x25cd('0x2d')],_0x130115[_0x25cd('0x2e')]));queues[_0x130115[_0x25cd('0x4')]][_0x25cd('0x2a')]=!![];queues[_0x130115[_0x25cd('0x4')]][_0x25cd('0x18')]=utils[_0x25cd('0x13')]();queues[_0x130115['uniqueid']]['holdtime']=utils['diffTime'](queues[_0x130115[_0x25cd('0x4')]][_0x25cd('0x18')],queues[_0x130115[_0x25cd('0x4')]][_0x25cd('0x2f')]);queues[_0x130115[_0x25cd('0x4')]][_0x25cd('0x11')]=_0x130115[_0x25cd('0x11')];queues[_0x130115['uniqueid']]['count']=_0x130115['count'];queues[_0x130115[_0x25cd('0x4')]][_0x25cd('0x2d')]=_0x130115[_0x25cd('0x2d')];queues[_0x130115[_0x25cd('0x4')]]['connectedlinename']=_0x130115[_0x25cd('0x2e')];}}catch(_0x4be0b8){utils[_0x25cd('0x14')](util['format']('[%s][queues][queuecallerleave]',_0x130115[_0x25cd('0x4')]),_0x4be0b8);}};exports['agentconnect']=function(_0x1e2fb5){try{if(!_[_0x25cd('0x24')](queues[_0x1e2fb5['uniqueid']])){utils['debug'](util[_0x25cd('0x2')](_0x25cd('0x30'),_0x1e2fb5[_0x25cd('0x4')]),_0x1e2fb5);utils[_0x25cd('0x1c')](util[_0x25cd('0x2')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x1e2fb5[_0x25cd('0x4')],queues[_0x1e2fb5[_0x25cd('0x4')]]['name'],_0x1e2fb5[_0x25cd('0x31')],_0x1e2fb5[_0x25cd('0x32')]));queues[_0x1e2fb5[_0x25cd('0x4')]]['queuecallerabandon']=![];queues[_0x1e2fb5['uniqueid']][_0x25cd('0x19')]=![];queues[_0x1e2fb5[_0x25cd('0x4')]][_0x25cd('0x25')]=null;queues[_0x1e2fb5['uniqueid']][_0x25cd('0x1a')]=![];queues[_0x1e2fb5[_0x25cd('0x4')]][_0x25cd('0x8')]=null;queues[_0x1e2fb5[_0x25cd('0x4')]][_0x25cd('0x28')]=null;queues[_0x1e2fb5[_0x25cd('0x4')]]['assigned']=!![];queues[_0x1e2fb5['uniqueid']][_0x25cd('0x7')]=_0x1e2fb5[_0x25cd('0x32')];queues[_0x1e2fb5[_0x25cd('0x4')]]['lastAssignedTo']=_0x1e2fb5[_0x25cd('0x31')];}}catch(_0x21ae2d){utils[_0x25cd('0x14')](util[_0x25cd('0x2')](_0x25cd('0x30'),_0x1e2fb5[_0x25cd('0x4')]),_0x21ae2d);}};exports[_0x25cd('0x33')]=function(_0x1a77a0){try{if(!_['isNil'](queues[_0x1a77a0[_0x25cd('0x4')]])){if(queues[_0x1a77a0[_0x25cd('0x4')]][_0x25cd('0x18')]){utils[_0x25cd('0x16')](util[_0x25cd('0x2')](_0x25cd('0x34'),_0x1a77a0[_0x25cd('0x4')]),_0x1a77a0);queues[_0x1a77a0[_0x25cd('0x4')]][_0x25cd('0x19')]=![];queues[_0x1a77a0[_0x25cd('0x4')]][_0x25cd('0x19')]=![];queues[_0x1a77a0[_0x25cd('0x4')]][_0x25cd('0x25')]=null;queues[_0x1a77a0[_0x25cd('0x4')]]['queuecallerexit']=![];queues[_0x1a77a0['uniqueid']]['queuecallerexitAt']=null;queues[_0x1a77a0[_0x25cd('0x4')]][_0x25cd('0x35')]=!![];queues[_0x1a77a0[_0x25cd('0x4')]][_0x25cd('0x36')]=_0x1a77a0[_0x25cd('0x31')];queues[_0x1a77a0[_0x25cd('0x4')]][_0x25cd('0x1b')]=!![];queues[_0x1a77a0['uniqueid']][_0x25cd('0x37')]=utils[_0x25cd('0x13')]();if(_0x1a77a0[_0x25cd('0x38')]==_0x25cd('0x39')){if(!queues[_0x1a77a0['uniqueid']][_0x25cd('0x39')]){queues[_0x1a77a0['uniqueid']][_0x25cd('0x8')]=_0x25cd('0x3a');}}else{queues[_0x1a77a0['uniqueid']]['queuecallerexitreason']=_0x25cd('0x3b')+_0x1a77a0[_0x25cd('0x38')]['toUpperCase']();}utils['info'](util[_0x25cd('0x2')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x1a77a0['uniqueid'],queues[_0x1a77a0[_0x25cd('0x4')]][_0x25cd('0x1e')],_0x1a77a0['membername'],queues[_0x1a77a0[_0x25cd('0x4')]][_0x25cd('0x8')]));writeDB(queues[_0x1a77a0['uniqueid']]);}}}catch(_0x16bd65){utils[_0x25cd('0x14')](util[_0x25cd('0x2')](_0x25cd('0x34'),_0x1a77a0[_0x25cd('0x4')]),_0x16bd65);}};exports[_0x25cd('0x3c')]=function(_0x14a00e){try{if(!_[_0x25cd('0x24')](queues[_0x14a00e[_0x25cd('0x3d')]])){utils[_0x25cd('0x16')](util[_0x25cd('0x2')](_0x25cd('0x3e'),_0x14a00e[_0x25cd('0x4')]),_0x14a00e);queues[_0x14a00e[_0x25cd('0x3d')]][_0x25cd('0x39')]=!![];queues[_0x14a00e[_0x25cd('0x3d')]][_0x25cd('0x3f')]=_0x25cd('0x40');queues[_0x14a00e[_0x25cd('0x3d')]][_0x25cd('0x41')]=_0x14a00e[_0x25cd('0x42')];queues[_0x14a00e[_0x25cd('0x3d')]]['transferuniqueid']=_0x14a00e[_0x25cd('0x3d')];queues[_0x14a00e[_0x25cd('0x3d')]][_0x25cd('0x8')]=_0x25cd('0x43');utils['info'](util['format'](_0x25cd('0x44'),_0x14a00e[_0x25cd('0x4')],queues[_0x14a00e['transfereeuniqueid']]['name'],_0x14a00e['transfereeuniqueid'],_0x14a00e[_0x25cd('0x42')]));}}catch(_0x424850){utils[_0x25cd('0x14')](util[_0x25cd('0x2')]('[%s][queues][blindtransfer]',_0x14a00e[_0x25cd('0x4')]),_0x424850);}};exports[_0x25cd('0x45')]=function(_0x19587d){try{utils['debug'](util['format']('[%s][queues][attendedtransfer]',_0x19587d[_0x25cd('0x46')]),_0x19587d);if(_0x19587d[_0x25cd('0x46')]==_0x19587d[_0x25cd('0x47')]){if(!_['isNil'](queues[_0x19587d['secondtransfererlinkedid']])){utils[_0x25cd('0x1c')](util[_0x25cd('0x2')](_0x25cd('0x48'),_0x19587d['origtransfereruniqueid'],queues[_0x19587d[_0x25cd('0x49')]]['name'],_0x19587d[_0x25cd('0x4a')]));queues[_0x19587d[_0x25cd('0x49')]][_0x25cd('0x39')]=!![];queues[_0x19587d[_0x25cd('0x49')]][_0x25cd('0x3f')]=_0x25cd('0x4b');queues[_0x19587d[_0x25cd('0x49')]][_0x25cd('0x41')]=_0x19587d[_0x25cd('0x4a')];queues[_0x19587d[_0x25cd('0x49')]][_0x25cd('0x4c')]=_0x19587d[_0x25cd('0x46')];queues[_0x19587d[_0x25cd('0x49')]][_0x25cd('0x8')]=_0x25cd('0x4d');}if(!_[_0x25cd('0x24')](queues[_0x19587d[_0x25cd('0x47')]])){if(_0x19587d[_0x25cd('0x4e')]&&queues[_0x19587d[_0x25cd('0x4e')]]){queues[_0x19587d[_0x25cd('0x4e')]][_0x25cd('0x4f')]=0x1;queues[_0x19587d[_0x25cd('0x3d')]]=_[_0x25cd('0x50')](queues[_0x19587d[_0x25cd('0x4e')]]);queues[_0x19587d[_0x25cd('0x3d')]][_0x25cd('0xd')]=_0x19587d[_0x25cd('0x51')];queues[_0x19587d['transfereeuniqueid']][_0x25cd('0x4f')]=0x2;queues[_0x19587d['transfereeuniqueid']][_0x25cd('0x52')]=queues[_0x19587d[_0x25cd('0x49')]][_0x25cd('0x52')];queues[_0x19587d[_0x25cd('0x3d')]]['calleridname']=queues[_0x19587d[_0x25cd('0x49')]][_0x25cd('0x53')];queues[_0x19587d['transfereeuniqueid']]['queuecallerjoinAt']=utils[_0x25cd('0x13')]();queues[_0x19587d[_0x25cd('0x3d')]][_0x25cd('0x18')]=utils[_0x25cd('0x13')]();queues[_0x19587d[_0x25cd('0x3d')]][_0x25cd('0x54')]=0x0;queues[_0x19587d[_0x25cd('0x3d')]]['mohtime']=0x0;utils['info'](util[_0x25cd('0x2')](_0x25cd('0x55'),_0x19587d[_0x25cd('0x46')],queues[_0x19587d[_0x25cd('0x3d')]][_0x25cd('0x1e')],queues[_0x19587d[_0x25cd('0x3d')]]['calleridnum'],queues[_0x19587d['transfereeuniqueid']][_0x25cd('0x53')]));}else{utils[_0x25cd('0x1c')](util[_0x25cd('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x19587d[_0x25cd('0x46')],queues[_0x19587d[_0x25cd('0x47')]]['name'],_0x19587d[_0x25cd('0x49')]));queues[_0x19587d[_0x25cd('0x47')]][_0x25cd('0xd')]=_0x19587d[_0x25cd('0x49')];}}}else if(_0x19587d[_0x25cd('0x56')]==_0x19587d[_0x25cd('0x49')]){if(!_[_0x25cd('0x24')](queues[_0x19587d[_0x25cd('0x47')]])){utils[_0x25cd('0x1c')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x19587d[_0x25cd('0x46')],queues[_0x19587d[_0x25cd('0x47')]][_0x25cd('0x1e')],_0x19587d[_0x25cd('0x56')],_0x19587d[_0x25cd('0x57')]));queues[_0x19587d[_0x25cd('0x47')]][_0x25cd('0x39')]=!![];queues[_0x19587d[_0x25cd('0x47')]]['transfertype']=_0x25cd('0x4b');queues[_0x19587d[_0x25cd('0x47')]][_0x25cd('0x41')]=_0x19587d[_0x25cd('0x57')];queues[_0x19587d[_0x25cd('0x47')]][_0x25cd('0x4c')]=_0x19587d['secondtransfereruniqueid'];queues[_0x19587d['origtransfererlinkedid']][_0x25cd('0x8')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x19587d[_0x25cd('0x49')]])){if(_0x19587d[_0x25cd('0x58')]&&queues[_0x19587d[_0x25cd('0x58')]]){queues[_0x19587d[_0x25cd('0x58')]]['queuecallerenterreason']=0x1;queues[_0x19587d[_0x25cd('0x51')]]=_[_0x25cd('0x50')](queues[_0x19587d[_0x25cd('0x58')]]);queues[_0x19587d[_0x25cd('0x51')]][_0x25cd('0xd')]=_0x19587d[_0x25cd('0x51')];queues[_0x19587d[_0x25cd('0x51')]][_0x25cd('0x4f')]=0x2;queues[_0x19587d[_0x25cd('0x51')]][_0x25cd('0x52')]=queues[_0x19587d['origtransfererlinkedid']]['calleridnum'];queues[_0x19587d['transfertargetuniqueid']]['calleridname']=queues[_0x19587d[_0x25cd('0x47')]][_0x25cd('0x53')];queues[_0x19587d['transfertargetuniqueid']][_0x25cd('0x2f')]=utils[_0x25cd('0x13')]();queues[_0x19587d['transfertargetuniqueid']][_0x25cd('0x18')]=utils[_0x25cd('0x13')]();queues[_0x19587d['transfertargetuniqueid']][_0x25cd('0x54')]=0x0;queues[_0x19587d[_0x25cd('0x51')]][_0x25cd('0x59')]=0x0;utils[_0x25cd('0x1c')](util[_0x25cd('0x2')](_0x25cd('0x5a'),_0x19587d['origtransfereruniqueid'],queues[_0x19587d[_0x25cd('0x51')]]['name'],queues[_0x19587d['transfertargetuniqueid']][_0x25cd('0xd')],queues[_0x19587d['transfertargetuniqueid']]['calleridnum'],queues[_0x19587d[_0x25cd('0x51')]]['calleridname']));}else{utils[_0x25cd('0x1c')](util[_0x25cd('0x2')](_0x25cd('0x5b'),_0x19587d[_0x25cd('0x46')],queues[_0x19587d[_0x25cd('0x49')]][_0x25cd('0x1e')],_0x19587d['origtransfererlinkedid']));queues[_0x19587d[_0x25cd('0x49')]][_0x25cd('0xd')]=_0x19587d['origtransfererlinkedid'];}}}}catch(_0x514809){utils['error'](util[_0x25cd('0x2')](_0x25cd('0x5c'),_0x19587d[_0x25cd('0x46')]),_0x514809);}};exports['musiconholdstart']=function(_0x11db35){try{if(!_[_0x25cd('0x24')](queues[_0x11db35[_0x25cd('0x4')]])){utils[_0x25cd('0x16')](util[_0x25cd('0x2')]('[%s][queues][musiconholdstart]',_0x11db35[_0x25cd('0x4')]),_0x11db35);queues[_0x11db35[_0x25cd('0x4')]][_0x25cd('0x5d')]=utils[_0x25cd('0x13')]();utils[_0x25cd('0x1c')](util['format']('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x11db35[_0x25cd('0x4')],queues[_0x11db35[_0x25cd('0x4')]][_0x25cd('0x1e')],queues[_0x11db35[_0x25cd('0x4')]]['musiconholdstartAt']));}}catch(_0x227b1a){utils['error'](util['format'](_0x25cd('0x5e'),_0x11db35[_0x25cd('0x4')]),_0x227b1a);}};exports['musiconholdstop']=function(_0x109bad){try{if(!_['isNil'](queues[_0x109bad[_0x25cd('0x4')]])){if(!_[_0x25cd('0x24')](queues[_0x109bad[_0x25cd('0x4')]][_0x25cd('0x5d')])){utils[_0x25cd('0x16')](util['format']('[%s][queues][musiconholdstop]',_0x109bad[_0x25cd('0x4')]),_0x109bad);queues[_0x109bad[_0x25cd('0x4')]]['mohtime']+=utils[_0x25cd('0x5f')](utils[_0x25cd('0x13')](),queues[_0x109bad[_0x25cd('0x4')]][_0x25cd('0x5d')]);utils[_0x25cd('0x1c')](util[_0x25cd('0x2')](_0x25cd('0x60'),_0x109bad['uniqueid'],queues[_0x109bad['uniqueid']][_0x25cd('0x1e')],queues[_0x109bad[_0x25cd('0x4')]]['mohtime']));delete queues[_0x109bad['uniqueid']]['musiconholdstartAt'];}}}catch(_0x25e573){utils[_0x25cd('0x14')](util[_0x25cd('0x2')](_0x25cd('0x61'),_0x109bad['uniqueid']),_0x25e573);}};
\ No newline at end of file
+var _0x6f61=['queuecallerexit','queuecallercomplete','queuecallercompleteAt','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandon','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','[%s][queues][varset]','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','queuecallerjoinAt','count','connectedlinenum','connectedlinename','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','ATTENDED','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','clone','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','secondtransfereruniqueid','transfertargetlinkedid','transfertargetuniqueid','holdtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','lodash','util','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','format','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','position','now','error','hangup','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt'];(function(_0x379968,_0x351ce2){var _0x2c8d7f=function(_0x32971a){while(--_0x32971a){_0x379968['push'](_0x379968['shift']());}};_0x2c8d7f(++_0x351ce2);}(_0x6f61,0x1f4));var _0x16f6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6f61[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x16f6('0x0'));var util=require(_0x16f6('0x1'));var utils=require(_0x16f6('0x2'));var queues={};function writeDB(_0x20b4ff){utils[_0x16f6('0x3')](util['format'](_0x16f6('0x4'),_0x20b4ff[_0x16f6('0x5')],_0x20b4ff['channel'],_0x20b4ff[_0x16f6('0x6')],_0x20b4ff[_0x16f6('0x7')],_0x20b4ff[_0x16f6('0x8')],_0x20b4ff[_0x16f6('0x9')],_0x20b4ff[_0x16f6('0xa')]));if(_0x20b4ff['queue']){utils[_0x16f6('0xb')](_0x20b4ff['queue'])[_0x16f6('0xc')](function(_0x2c0c33){if(_0x2c0c33){_0x20b4ff[_0x16f6('0xd')]=_0x2c0c33[_0x16f6('0xd')];}utils[_0x16f6('0xe')]('CreateVoiceQueueReport',_0x20b4ff);});}else{utils[_0x16f6('0xe')](_0x16f6('0xf'),_0x20b4ff);}if(_0x20b4ff[_0x16f6('0x10')]){delete queues[_0x20b4ff[_0x16f6('0x10')]];}else{delete queues[_0x20b4ff[_0x16f6('0x5')]];}}exports[_0x16f6('0x11')]=function(_0x33b17e){try{utils['debug'](util[_0x16f6('0x12')](_0x16f6('0x13'),_0x33b17e[_0x16f6('0x5')]),_0x33b17e);utils['info'](util[_0x16f6('0x12')](_0x16f6('0x14'),_0x33b17e['uniqueid'],_0x33b17e[_0x16f6('0x6')],_0x33b17e['position']));queues[_0x33b17e['uniqueid']]=_[_0x16f6('0x15')](_0x33b17e,{'originalposition':_0x33b17e[_0x16f6('0x16')],'queuecallerjoinAt':utils[_0x16f6('0x17')](),'mohtime':0x0});}catch(_0x18bd5c){utils[_0x16f6('0x18')](util[_0x16f6('0x12')]('[%s][queues][queuecallerjoin]',_0x33b17e['uniqueid']),_0x18bd5c);}};exports[_0x16f6('0x19')]=function(_0x5a4015){try{if(!_[_0x16f6('0x1a')](queues[_0x5a4015[_0x16f6('0x5')]])){utils[_0x16f6('0x1b')](util['format'](_0x16f6('0x1c'),_0x5a4015[_0x16f6('0x5')]),_0x5a4015);if(queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x1d')]){if(!queues[_0x5a4015[_0x16f6('0x5')]]['queuecallerabandon']&&!queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x1e')]){queues[_0x5a4015['uniqueid']][_0x16f6('0x1f')]=!![];queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x20')]=utils[_0x16f6('0x17')]();queues[_0x5a4015['uniqueid']]['queuecallerexitreason']='COMPLETEDBYAGENT';}utils['info'](util['format'](_0x16f6('0x21'),_0x5a4015[_0x16f6('0x5')],queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x22')],queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0xa')]));writeDB(queues[_0x5a4015[_0x16f6('0x5')]]);}else if(queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x10')]){utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x23'),_0x5a4015['uniqueid'],queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x22')],queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x10')]));queues[queues[_0x5a4015['uniqueid']][_0x16f6('0x10')]]=queues[_0x5a4015[_0x16f6('0x5')]];queues[queues[_0x5a4015['uniqueid']][_0x16f6('0x10')]][_0x16f6('0x24')]=0x2;delete queues[_0x5a4015[_0x16f6('0x5')]];}}}catch(_0x448dd3){utils[_0x16f6('0x18')](util['format']('[%s][queues][hangup]',_0x5a4015['uniqueid']),_0x448dd3);}};exports[_0x16f6('0x25')]=function(_0x5b8abb){try{utils[_0x16f6('0x1b')](util[_0x16f6('0x12')]('[%s][queues][varset]',_0x5b8abb['uniqueid']),_0x5b8abb);if(!_[_0x16f6('0x1a')](_0x5b8abb[_0x16f6('0x26')][_0x16f6('0x27')])&&_0x5b8abb[_0x16f6('0x28')][_0x16f6('0x29')]()!==_0x16f6('0x2a')){if(!_[_0x16f6('0x1a')](queues[_0x5b8abb[_0x16f6('0x5')]])){queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x2b')]=![];queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x2c')]=null;queues[_0x5b8abb['uniqueid']]['queuecallerexit']=!![];queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x2d')]=utils[_0x16f6('0x17')]();queues[_0x5b8abb['uniqueid']][_0x16f6('0xa')]=_0x5b8abb[_0x16f6('0x28')][_0x16f6('0x29')]();utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x2e'),_0x5b8abb[_0x16f6('0x5')],queues[_0x5b8abb[_0x16f6('0x5')]]['name'],_0x5b8abb[_0x16f6('0x28')],queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0xa')]));writeDB(queues[_0x5b8abb[_0x16f6('0x5')]]);}}else if(!_[_0x16f6('0x1a')](_0x5b8abb[_0x16f6('0x26')][_0x16f6('0x2f')])){if(!_[_0x16f6('0x1a')](queues[_0x5b8abb['uniqueid']])&&!queues[_0x5b8abb['uniqueid']]['queuecallerabandon']){queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x2b')]=![];queues[_0x5b8abb[_0x16f6('0x5')]]['queuecallerabandonAt']=null;queues[_0x5b8abb['uniqueid']][_0x16f6('0x1e')]=!![];queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x2d')]=utils[_0x16f6('0x17')]();queues[_0x5b8abb[_0x16f6('0x5')]]['queuecallerexitreason']='EXITWITHKEY';utils[_0x16f6('0x3')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x5b8abb['uniqueid'],queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x22')],_0x5b8abb['value'],queues[_0x5b8abb['uniqueid']][_0x16f6('0xa')]));}}}catch(_0x349548){utils['error'](util[_0x16f6('0x12')](_0x16f6('0x30'),_0x5b8abb['uniqueid']),_0x349548);}};exports[_0x16f6('0x2b')]=function(_0x1a6f54){try{if(!_['isNil'](queues[_0x1a6f54[_0x16f6('0x5')]])){utils[_0x16f6('0x1b')](util[_0x16f6('0x12')](_0x16f6('0x31'),_0x1a6f54[_0x16f6('0x5')]),_0x1a6f54);queues[_0x1a6f54[_0x16f6('0x5')]][_0x16f6('0x1e')]=![];queues[_0x1a6f54['uniqueid']]['queuecallerexitAt']=null;queues[_0x1a6f54[_0x16f6('0x5')]][_0x16f6('0x2b')]=!![];queues[_0x1a6f54[_0x16f6('0x5')]][_0x16f6('0x2c')]=utils[_0x16f6('0x17')]();queues[_0x1a6f54[_0x16f6('0x5')]]['queuecallerexitreason']='ABANDONED';utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x32'),_0x1a6f54[_0x16f6('0x5')],queues[_0x1a6f54[_0x16f6('0x5')]]['name'],queues[_0x1a6f54[_0x16f6('0x5')]][_0x16f6('0xa')]));}}catch(_0x516ca1){utils[_0x16f6('0x18')](util[_0x16f6('0x12')](_0x16f6('0x31'),_0x1a6f54['uniqueid']),_0x516ca1);}};exports['queuecallerleave']=function(_0x2718fe){try{if(!_['isNil'](queues[_0x2718fe[_0x16f6('0x5')]])){utils[_0x16f6('0x1b')](util[_0x16f6('0x12')]('[%s][queues][queuecallerleave]',_0x2718fe[_0x16f6('0x5')]),_0x2718fe);utils[_0x16f6('0x3')](util[_0x16f6('0x12')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x2718fe[_0x16f6('0x5')],queues[_0x2718fe[_0x16f6('0x5')]][_0x16f6('0x22')],_0x2718fe['connectedlinenum'],_0x2718fe['connectedlinename']));queues[_0x2718fe['uniqueid']][_0x16f6('0x33')]=!![];queues[_0x2718fe['uniqueid']]['queuecallerleaveAt']=utils[_0x16f6('0x17')]();queues[_0x2718fe[_0x16f6('0x5')]]['holdtime']=utils['diffTime'](queues[_0x2718fe['uniqueid']][_0x16f6('0x1d')],queues[_0x2718fe['uniqueid']][_0x16f6('0x34')]);queues[_0x2718fe[_0x16f6('0x5')]][_0x16f6('0x16')]=_0x2718fe[_0x16f6('0x16')];queues[_0x2718fe[_0x16f6('0x5')]][_0x16f6('0x35')]=_0x2718fe['count'];queues[_0x2718fe[_0x16f6('0x5')]][_0x16f6('0x36')]=_0x2718fe[_0x16f6('0x36')];queues[_0x2718fe['uniqueid']][_0x16f6('0x37')]=_0x2718fe[_0x16f6('0x37')];}}catch(_0x7865c){utils[_0x16f6('0x18')](util[_0x16f6('0x12')](_0x16f6('0x38'),_0x2718fe['uniqueid']),_0x7865c);}};exports[_0x16f6('0x39')]=function(_0x2072db){try{if(!_[_0x16f6('0x1a')](queues[_0x2072db['uniqueid']])){utils[_0x16f6('0x1b')](util[_0x16f6('0x12')](_0x16f6('0x3a'),_0x2072db['uniqueid']),_0x2072db);utils['info'](util['format'](_0x16f6('0x3b'),_0x2072db[_0x16f6('0x5')],queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0x22')],_0x2072db[_0x16f6('0x3c')],_0x2072db[_0x16f6('0x3d')]));queues[_0x2072db['uniqueid']][_0x16f6('0x2b')]=![];queues[_0x2072db['uniqueid']][_0x16f6('0x2b')]=![];queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0x2c')]=null;queues[_0x2072db[_0x16f6('0x5')]]['queuecallerexit']=![];queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0xa')]=null;queues[_0x2072db['uniqueid']][_0x16f6('0x2d')]=null;queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0x3e')]=!![];queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0x9')]=_0x2072db[_0x16f6('0x3d')];queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0x7')]=_0x2072db[_0x16f6('0x3c')];}}catch(_0xe71c52){utils[_0x16f6('0x18')](util[_0x16f6('0x12')](_0x16f6('0x3a'),_0x2072db[_0x16f6('0x5')]),_0xe71c52);}};exports[_0x16f6('0x3f')]=function(_0x1bf57f){try{if(!_[_0x16f6('0x1a')](queues[_0x1bf57f[_0x16f6('0x5')]])){if(queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x1d')]){utils['debug'](util[_0x16f6('0x12')](_0x16f6('0x40'),_0x1bf57f['uniqueid']),_0x1bf57f);queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x2b')]=![];queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x2b')]=![];queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x2c')]=null;queues[_0x1bf57f[_0x16f6('0x5')]]['queuecallerexit']=![];queues[_0x1bf57f['uniqueid']][_0x16f6('0x2d')]=null;queues[_0x1bf57f['uniqueid']][_0x16f6('0x3e')]=!![];queues[_0x1bf57f['uniqueid']][_0x16f6('0x7')]=_0x1bf57f['membername'];queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x1f')]=!![];queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x20')]=utils[_0x16f6('0x17')]();if(_0x1bf57f[_0x16f6('0x41')]==_0x16f6('0x42')){if(!queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x42')]){queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0xa')]=_0x16f6('0x43');}}else{queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0xa')]=_0x16f6('0x44')+_0x1bf57f['reason'][_0x16f6('0x29')]();}utils[_0x16f6('0x3')](util['format'](_0x16f6('0x45'),_0x1bf57f[_0x16f6('0x5')],queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x22')],_0x1bf57f['membername'],queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0xa')]));writeDB(queues[_0x1bf57f[_0x16f6('0x5')]]);}}}catch(_0x137f0b){utils[_0x16f6('0x18')](util[_0x16f6('0x12')](_0x16f6('0x40'),_0x1bf57f[_0x16f6('0x5')]),_0x137f0b);}};exports[_0x16f6('0x46')]=function(_0x3553f1){try{if(!_[_0x16f6('0x1a')](queues[_0x3553f1[_0x16f6('0x47')]])){utils[_0x16f6('0x1b')](util[_0x16f6('0x12')](_0x16f6('0x48'),_0x3553f1[_0x16f6('0x5')]),_0x3553f1);queues[_0x3553f1[_0x16f6('0x47')]][_0x16f6('0x42')]=!![];queues[_0x3553f1[_0x16f6('0x47')]][_0x16f6('0x49')]=_0x16f6('0x4a');queues[_0x3553f1[_0x16f6('0x47')]][_0x16f6('0x4b')]=_0x3553f1['extension'];queues[_0x3553f1[_0x16f6('0x47')]][_0x16f6('0x4c')]=_0x3553f1[_0x16f6('0x47')];queues[_0x3553f1['transfereeuniqueid']][_0x16f6('0xa')]=_0x16f6('0x4d');utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x4e'),_0x3553f1['uniqueid'],queues[_0x3553f1[_0x16f6('0x47')]]['name'],_0x3553f1[_0x16f6('0x47')],_0x3553f1[_0x16f6('0x4f')]));}}catch(_0x48243a){utils['error'](util[_0x16f6('0x12')](_0x16f6('0x48'),_0x3553f1[_0x16f6('0x5')]),_0x48243a);}};exports[_0x16f6('0x50')]=function(_0x5ab014){try{utils[_0x16f6('0x1b')](util[_0x16f6('0x12')]('[%s][queues][attendedtransfer]',_0x5ab014[_0x16f6('0x51')]),_0x5ab014);if(_0x5ab014[_0x16f6('0x51')]==_0x5ab014[_0x16f6('0x52')]){if(!_[_0x16f6('0x1a')](queues[_0x5ab014['secondtransfererlinkedid']])){utils[_0x16f6('0x3')](util[_0x16f6('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x5ab014['origtransfereruniqueid'],queues[_0x5ab014[_0x16f6('0x53')]]['name'],_0x5ab014['origtransfererexten']));queues[_0x5ab014['secondtransfererlinkedid']][_0x16f6('0x42')]=!![];queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x49')]=_0x16f6('0x54');queues[_0x5ab014[_0x16f6('0x53')]]['transferexten']=_0x5ab014[_0x16f6('0x55')];queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x4c')]=_0x5ab014['origtransfereruniqueid'];queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0xa')]=_0x16f6('0x56');}if(!_[_0x16f6('0x1a')](queues[_0x5ab014[_0x16f6('0x52')]])){if(_0x5ab014['transfereelinkedid']&&queues[_0x5ab014[_0x16f6('0x57')]]){queues[_0x5ab014[_0x16f6('0x57')]][_0x16f6('0x24')]=0x1;queues[_0x5ab014['transfereeuniqueid']]=_[_0x16f6('0x58')](queues[_0x5ab014[_0x16f6('0x57')]]);queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x10')]=_0x5ab014['transfertargetuniqueid'];queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x24')]=0x2;queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x8')]=queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x8')];queues[_0x5ab014['transfereeuniqueid']][_0x16f6('0x59')]=queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x59')];queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x34')]=utils[_0x16f6('0x17')]();queues[_0x5ab014[_0x16f6('0x47')]]['queuecallerleaveAt']=utils[_0x16f6('0x17')]();queues[_0x5ab014['transfereeuniqueid']]['holdtime']=0x0;queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x5a')]=0x0;utils[_0x16f6('0x3')](util['format'](_0x16f6('0x5b'),_0x5ab014[_0x16f6('0x51')],queues[_0x5ab014[_0x16f6('0x47')]]['name'],queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x8')],queues[_0x5ab014[_0x16f6('0x47')]]['calleridname']));}else{utils['info'](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x5ab014[_0x16f6('0x51')],queues[_0x5ab014['origtransfererlinkedid']][_0x16f6('0x22')],_0x5ab014[_0x16f6('0x53')]));queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0x10')]=_0x5ab014['secondtransfererlinkedid'];}}}else if(_0x5ab014['secondtransfereruniqueid']==_0x5ab014[_0x16f6('0x53')]){if(!_[_0x16f6('0x1a')](queues[_0x5ab014[_0x16f6('0x52')]])){utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x5c'),_0x5ab014[_0x16f6('0x51')],queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0x22')],_0x5ab014['secondtransfereruniqueid'],_0x5ab014[_0x16f6('0x5d')]));queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0x42')]=!![];queues[_0x5ab014[_0x16f6('0x52')]]['transfertype']='ATTENDED';queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0x4b')]=_0x5ab014['secondtransfererexten'];queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0x4c')]=_0x5ab014[_0x16f6('0x5e')];queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0xa')]=_0x16f6('0x56');}if(!_[_0x16f6('0x1a')](queues[_0x5ab014[_0x16f6('0x53')]])){if(_0x5ab014['transfertargetlinkedid']&&queues[_0x5ab014[_0x16f6('0x5f')]]){queues[_0x5ab014[_0x16f6('0x5f')]][_0x16f6('0x24')]=0x1;queues[_0x5ab014[_0x16f6('0x60')]]=_[_0x16f6('0x58')](queues[_0x5ab014[_0x16f6('0x5f')]]);queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x10')]=_0x5ab014[_0x16f6('0x60')];queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x24')]=0x2;queues[_0x5ab014['transfertargetuniqueid']][_0x16f6('0x8')]=queues[_0x5ab014['origtransfererlinkedid']][_0x16f6('0x8')];queues[_0x5ab014[_0x16f6('0x60')]]['calleridname']=queues[_0x5ab014[_0x16f6('0x52')]]['calleridname'];queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x34')]=utils[_0x16f6('0x17')]();queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x1d')]=utils['now']();queues[_0x5ab014['transfertargetuniqueid']][_0x16f6('0x61')]=0x0;queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x5a')]=0x0;utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x62'),_0x5ab014['origtransfereruniqueid'],queues[_0x5ab014['transfertargetuniqueid']][_0x16f6('0x22')],queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x10')],queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x8')],queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x59')]));}else{utils[_0x16f6('0x3')](util[_0x16f6('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x5ab014[_0x16f6('0x51')],queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x22')],_0x5ab014[_0x16f6('0x52')]));queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x10')]=_0x5ab014[_0x16f6('0x52')];}}}}catch(_0x21f965){utils['error'](util['format'](_0x16f6('0x63'),_0x5ab014[_0x16f6('0x51')]),_0x21f965);}};exports[_0x16f6('0x64')]=function(_0x42e4e5){try{if(!_[_0x16f6('0x1a')](queues[_0x42e4e5[_0x16f6('0x5')]])){utils[_0x16f6('0x1b')](util[_0x16f6('0x12')](_0x16f6('0x65'),_0x42e4e5['uniqueid']),_0x42e4e5);queues[_0x42e4e5[_0x16f6('0x5')]][_0x16f6('0x66')]=utils['now']();utils['info'](util[_0x16f6('0x12')](_0x16f6('0x67'),_0x42e4e5[_0x16f6('0x5')],queues[_0x42e4e5[_0x16f6('0x5')]][_0x16f6('0x22')],queues[_0x42e4e5['uniqueid']][_0x16f6('0x66')]));}}catch(_0x25e344){utils['error'](util[_0x16f6('0x12')](_0x16f6('0x65'),_0x42e4e5[_0x16f6('0x5')]),_0x25e344);}};exports[_0x16f6('0x68')]=function(_0x30933f){try{if(!_[_0x16f6('0x1a')](queues[_0x30933f['uniqueid']])){if(!_['isNil'](queues[_0x30933f[_0x16f6('0x5')]]['musiconholdstartAt'])){utils['debug'](util[_0x16f6('0x12')](_0x16f6('0x69'),_0x30933f['uniqueid']),_0x30933f);queues[_0x30933f[_0x16f6('0x5')]][_0x16f6('0x5a')]+=utils['diffTime'](utils[_0x16f6('0x17')](),queues[_0x30933f['uniqueid']][_0x16f6('0x66')]);utils['info'](util[_0x16f6('0x12')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x30933f['uniqueid'],queues[_0x30933f[_0x16f6('0x5')]][_0x16f6('0x22')],queues[_0x30933f[_0x16f6('0x5')]]['mohtime']));delete queues[_0x30933f[_0x16f6('0x5')]][_0x16f6('0x66')];}}}catch(_0x464e01){utils['error'](util[_0x16f6('0x12')](_0x16f6('0x69'),_0x30933f[_0x16f6('0x5')]),_0x464e01);}};
\ No newline at end of file
index c7938ca..f5e4f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb93=['.WAV','find','monitors','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone','newexten','[%s][recordings][newexten]','appdata','application','toLowerCase','startsWith','cdr','split','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','util','./utils','info','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','membername','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','format','context','exten','channel','error','newstate','[%s][recordings][newstate]','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','isNil','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith'];(function(_0x409a1,_0x2742ca){var _0x7dcf8c=function(_0x519b45){while(--_0x519b45){_0x409a1['push'](_0x409a1['shift']());}};_0x7dcf8c(++_0x2742ca);}(_0xfb93,0x118));var _0x3fb9=function(_0x52f59a,_0x12276b){_0x52f59a=_0x52f59a-0x0;var _0x3183c6=_0xfb93[_0x52f59a];return _0x3183c6;};'use strict';var _=require(_0x3fb9('0x0'));var util=require(_0x3fb9('0x1'));var utils=require(_0x3fb9('0x2'));var recordings={};function writeDB(_0x6be07){utils[_0x3fb9('0x3')](util['format'](_0x3fb9('0x4'),_0x6be07[_0x3fb9('0x5')]));if(_0x6be07[_0x3fb9('0x6')]){utils[_0x3fb9('0x7')](_0x6be07['accountcode'])[_0x3fb9('0x8')](function(_0x1228b1){if(_0x1228b1){_0x6be07[_0x3fb9('0x9')]=_0x1228b1['name'];_0x6be07[_0x3fb9('0xa')]=_0x1228b1['id'];}utils[_0x3fb9('0xb')](_0x3fb9('0xc'),_0x6be07);});}else{utils['request']('CreateVoiceRecording',_0x6be07);}}exports[_0x3fb9('0xd')]=function(_0x3eb1f2){try{utils[_0x3fb9('0xe')](util['format'](_0x3fb9('0xf'),_0x3eb1f2[_0x3fb9('0x5')]),_0x3eb1f2);if(_0x3eb1f2[_0x3fb9('0x5')]==_0x3eb1f2[_0x3fb9('0x10')]){utils[_0x3fb9('0x3')](util[_0x3fb9('0x11')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x3eb1f2[_0x3fb9('0x5')],_0x3eb1f2[_0x3fb9('0x12')],_0x3eb1f2[_0x3fb9('0x13')]));recordings[_0x3eb1f2[_0x3fb9('0x5')]]={'uniqueid':_0x3eb1f2[_0x3fb9('0x5')],'accountcode':_0x3eb1f2[_0x3fb9('0x6')],'exten':_0x3eb1f2[_0x3fb9('0x13')],'context':_0x3eb1f2[_0x3fb9('0x12')],'channel':_0x3eb1f2[_0x3fb9('0x14')],'monitors':[]};}}catch(_0x369d8d){utils[_0x3fb9('0x15')](util[_0x3fb9('0x11')](_0x3fb9('0xf'),_0x3eb1f2[_0x3fb9('0x5')]),_0x369d8d);}};exports[_0x3fb9('0x16')]=function(_0x2589cf){try{utils[_0x3fb9('0xe')](util['format'](_0x3fb9('0x17'),_0x2589cf[_0x3fb9('0x5')]),_0x2589cf);if(!_['isNil'](recordings[_0x2589cf[_0x3fb9('0x5')]])&&_0x2589cf[_0x3fb9('0x18')]==0x6){utils[_0x3fb9('0x3')](util[_0x3fb9('0x11')](_0x3fb9('0x19'),_0x2589cf['uniqueid'],_0x2589cf[_0x3fb9('0x12')],_0x2589cf[_0x3fb9('0x14')]));}else if(!_[_0x3fb9('0x1a')](recordings[_0x2589cf[_0x3fb9('0x10')]])&&_0x2589cf[_0x3fb9('0x18')]==0x6&&_0x2589cf['context']!=_0x3fb9('0x1b')){utils[_0x3fb9('0x3')](util[_0x3fb9('0x11')](_0x3fb9('0x1c'),_0x2589cf[_0x3fb9('0x5')],_0x2589cf[_0x3fb9('0x10')],_0x2589cf[_0x3fb9('0x12')],_0x2589cf['channel']));recordings[_0x2589cf[_0x3fb9('0x10')]][_0x3fb9('0x6')]=_0x2589cf[_0x3fb9('0x6')];}}catch(_0x384287){utils[_0x3fb9('0x15')](util[_0x3fb9('0x11')](_0x3fb9('0x17'),_0x2589cf[_0x3fb9('0x5')]),_0x384287);}};exports[_0x3fb9('0x1d')]=function(_0x5d359f){try{if(!_[_0x3fb9('0x1a')](_0x5d359f[_0x3fb9('0x1e')])&&!_['isNil'](_0x5d359f[_0x3fb9('0x1e')][_0x3fb9('0x1f')])){utils[_0x3fb9('0xe')](util['format']('[%s][recordings][varset]',_0x5d359f[_0x3fb9('0x5')]),_0x5d359f);utils[_0x3fb9('0x3')](util[_0x3fb9('0x11')](_0x3fb9('0x20'),_0x5d359f[_0x3fb9('0x5')],_0x5d359f[_0x3fb9('0x1e')],_0x5d359f[_0x3fb9('0x21')]));if(_[_0x3fb9('0x22')](_0x5d359f['value'],'.wav49')){_0x5d359f[_0x3fb9('0x21')]=_0x5d359f[_0x3fb9('0x21')]['replace']('.wav49',_0x3fb9('0x23'));}if(recordings[_0x5d359f[_0x3fb9('0x10')]]){var _0x558e1c=_[_0x3fb9('0x24')](recordings[_0x5d359f[_0x3fb9('0x10')]][_0x3fb9('0x25')],{'value':_0x5d359f['value']});if(_[_0x3fb9('0x1a')](_0x558e1c)){recordings[_0x5d359f[_0x3fb9('0x10')]]['monitors']['push']({'value':_0x5d359f[_0x3fb9('0x21')]});}}}}catch(_0x2250df){utils[_0x3fb9('0x15')](util[_0x3fb9('0x11')](_0x3fb9('0x26'),_0x5d359f[_0x3fb9('0x5')]),_0x2250df);}};exports[_0x3fb9('0x27')]=function(_0x43b8ed){try{if(!_[_0x3fb9('0x1a')](recordings[_0x43b8ed[_0x3fb9('0x5')]])){utils[_0x3fb9('0xe')](util[_0x3fb9('0x11')](_0x3fb9('0x28'),_0x43b8ed[_0x3fb9('0x5')]),_0x43b8ed);utils['info'](util[_0x3fb9('0x11')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x43b8ed[_0x3fb9('0x5')],_0x43b8ed[_0x3fb9('0x29')],_0x43b8ed[_0x3fb9('0x2a')],_0x43b8ed[_0x3fb9('0x2b')]));recordings[_0x43b8ed['uniqueid']][_0x3fb9('0x29')]=_0x43b8ed[_0x3fb9('0x29')];recordings[_0x43b8ed[_0x3fb9('0x5')]]['calleridname']=_0x43b8ed[_0x3fb9('0x2a')];recordings[_0x43b8ed['uniqueid']][_0x3fb9('0x2c')]=_0x43b8ed['connectedlinenum'];recordings[_0x43b8ed[_0x3fb9('0x5')]][_0x3fb9('0x2d')]=_0x43b8ed['connectedlinename'];if(recordings[_0x43b8ed[_0x3fb9('0x5')]][_0x3fb9('0x2e')]==_0x3fb9('0x2f')&&recordings[_0x43b8ed[_0x3fb9('0x5')]][_0x3fb9('0x6')]){recordings[_0x43b8ed['uniqueid']][_0x3fb9('0x2c')]=recordings[_0x43b8ed[_0x3fb9('0x5')]][_0x3fb9('0x6')];recordings[_0x43b8ed[_0x3fb9('0x5')]][_0x3fb9('0x2d')]='';}recordings[_0x43b8ed[_0x3fb9('0x5')]][_0x3fb9('0x25')][_0x3fb9('0x30')](function(_0x514cb2){var _0x8ad9cd=_[_0x3fb9('0x31')](recordings[_0x43b8ed[_0x3fb9('0x5')]]);_0x8ad9cd[_0x3fb9('0x21')]=_0x514cb2['value'];writeDB(_0x8ad9cd);});delete recordings[_0x43b8ed[_0x3fb9('0x5')]];}}catch(_0x449b90){utils['error'](util[_0x3fb9('0x11')](_0x3fb9('0x28'),_0x43b8ed[_0x3fb9('0x5')]),_0x449b90);}};exports[_0x3fb9('0x32')]=function(_0x1fd98b){try{if(!_['isNil'](recordings[_0x1fd98b['uniqueid']])){utils['debug'](util[_0x3fb9('0x11')](_0x3fb9('0x33'),_0x1fd98b[_0x3fb9('0x5')]),_0x1fd98b);utils[_0x3fb9('0x3')](util[_0x3fb9('0x11')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x1fd98b[_0x3fb9('0x5')],_0x1fd98b['application'],_0x1fd98b[_0x3fb9('0x34')]));if(_0x1fd98b[_0x3fb9('0x35')][_0x3fb9('0x36')]()=='set'&&_[_0x3fb9('0x37')](_0x1fd98b[_0x3fb9('0x34')][_0x3fb9('0x36')](),_0x3fb9('0x38'))){var _0x492794=_0x1fd98b[_0x3fb9('0x34')][_0x3fb9('0x39')]('=');var _0x5398ae=_0x492794[0x0]['substring'](_0x492794[0x0][_0x3fb9('0x3a')]('(')+0x1,_0x492794[0x0][_0x3fb9('0x3a')](')'));var _0x1e3d02=_0x492794[0x1];recordings[_0x1fd98b[_0x3fb9('0x5')]][_0x5398ae]=_0x1e3d02;}}}catch(_0x43f466){utils['error'](util[_0x3fb9('0x11')](_0x3fb9('0x33'),_0x1fd98b[_0x3fb9('0x5')]),_0x43f466);}};exports[_0x3fb9('0x3b')]=function(_0x196a6f){try{if(!_[_0x3fb9('0x1a')](recordings[_0x196a6f['uniqueid']])){utils[_0x3fb9('0xe')](util[_0x3fb9('0x11')](_0x3fb9('0x3c'),_0x196a6f[_0x3fb9('0x5')]),_0x196a6f);utils['info'](util['format'](_0x3fb9('0x3d'),_0x196a6f['uniqueid'],_0x196a6f[_0x3fb9('0x3e')]));recordings[_0x196a6f['uniqueid']]['queue']=_0x196a6f[_0x3fb9('0x3e')];}}catch(_0x267486){utils[_0x3fb9('0x15')](util['format'](_0x3fb9('0x3c'),_0x196a6f[_0x3fb9('0x5')]),_0x267486);}};
\ No newline at end of file
+var _0x1d7c=['[%s][recordings][newchannel]','linkedid','context','exten','channel','error','[%s][recordings][newstate]','isNil','channelstate','info','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][varset]','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','cause-txt','calleridname','connectedlinenum','connectedlinename','outbound','clone','newexten','[%s][recordings][newexten]','application','appdata','toLowerCase','set','startsWith','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','util','./utils','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','membername','UserId','request','CreateVoiceRecording','debug','format'];(function(_0x3be7ff,_0x12e714){var _0x186721=function(_0x2bc9e1){while(--_0x2bc9e1){_0x3be7ff['push'](_0x3be7ff['shift']());}};_0x186721(++_0x12e714);}(_0x1d7c,0x150));var _0xc1d7=function(_0x1a6363,_0x205f25){_0x1a6363=_0x1a6363-0x0;var _0xd22157=_0x1d7c[_0x1a6363];return _0xd22157;};'use strict';var _=require('lodash');var util=require(_0xc1d7('0x0'));var utils=require(_0xc1d7('0x1'));var recordings={};function writeDB(_0x236f78){utils['info'](util['format'](_0xc1d7('0x2'),_0x236f78[_0xc1d7('0x3')]));if(_0x236f78[_0xc1d7('0x4')]){utils[_0xc1d7('0x5')](_0x236f78[_0xc1d7('0x4')])['then'](function(_0x460506){if(_0x460506){_0x236f78[_0xc1d7('0x6')]=_0x460506['name'];_0x236f78[_0xc1d7('0x7')]=_0x460506['id'];}utils[_0xc1d7('0x8')](_0xc1d7('0x9'),_0x236f78);});}else{utils[_0xc1d7('0x8')](_0xc1d7('0x9'),_0x236f78);}}exports['newchannel']=function(_0x4cd185){try{utils[_0xc1d7('0xa')](util[_0xc1d7('0xb')](_0xc1d7('0xc'),_0x4cd185['uniqueid']),_0x4cd185);if(_0x4cd185['uniqueid']==_0x4cd185[_0xc1d7('0xd')]){utils['info'](util[_0xc1d7('0xb')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x4cd185['uniqueid'],_0x4cd185[_0xc1d7('0xe')],_0x4cd185[_0xc1d7('0xf')]));recordings[_0x4cd185['uniqueid']]={'uniqueid':_0x4cd185[_0xc1d7('0x3')],'accountcode':_0x4cd185[_0xc1d7('0x4')],'exten':_0x4cd185[_0xc1d7('0xf')],'context':_0x4cd185[_0xc1d7('0xe')],'channel':_0x4cd185[_0xc1d7('0x10')],'monitors':[]};}}catch(_0x896326){utils[_0xc1d7('0x11')](util[_0xc1d7('0xb')](_0xc1d7('0xc'),_0x4cd185[_0xc1d7('0x3')]),_0x896326);}};exports['newstate']=function(_0x33cf77){try{utils['debug'](util['format'](_0xc1d7('0x12'),_0x33cf77['uniqueid']),_0x33cf77);if(!_[_0xc1d7('0x13')](recordings[_0x33cf77['uniqueid']])&&_0x33cf77[_0xc1d7('0x14')]==0x6){utils[_0xc1d7('0x15')](util[_0xc1d7('0xb')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x33cf77['uniqueid'],_0x33cf77[_0xc1d7('0xe')],_0x33cf77[_0xc1d7('0x10')]));}else if(!_[_0xc1d7('0x13')](recordings[_0x33cf77[_0xc1d7('0xd')]])&&_0x33cf77[_0xc1d7('0x14')]==0x6&&_0x33cf77[_0xc1d7('0xe')]!=_0xc1d7('0x16')){utils[_0xc1d7('0x15')](util[_0xc1d7('0xb')](_0xc1d7('0x17'),_0x33cf77['uniqueid'],_0x33cf77[_0xc1d7('0xd')],_0x33cf77[_0xc1d7('0xe')],_0x33cf77[_0xc1d7('0x10')]));recordings[_0x33cf77[_0xc1d7('0xd')]][_0xc1d7('0x4')]=_0x33cf77[_0xc1d7('0x4')];}}catch(_0x375c99){utils[_0xc1d7('0x11')](util['format'](_0xc1d7('0x12'),_0x33cf77[_0xc1d7('0x3')]),_0x375c99);}};exports[_0xc1d7('0x18')]=function(_0x477487){try{if(!_[_0xc1d7('0x13')](_0x477487['variable'])&&!_['isNil'](_0x477487[_0xc1d7('0x19')][_0xc1d7('0x1a')])){utils['debug'](util[_0xc1d7('0xb')]('[%s][recordings][varset]',_0x477487[_0xc1d7('0x3')]),_0x477487);utils[_0xc1d7('0x15')](util[_0xc1d7('0xb')](_0xc1d7('0x1b'),_0x477487[_0xc1d7('0x3')],_0x477487[_0xc1d7('0x19')],_0x477487[_0xc1d7('0x1c')]));if(_[_0xc1d7('0x1d')](_0x477487[_0xc1d7('0x1c')],_0xc1d7('0x1e'))){_0x477487['value']=_0x477487['value'][_0xc1d7('0x1f')]('.wav49',_0xc1d7('0x20'));}if(recordings[_0x477487[_0xc1d7('0xd')]]){var _0x1cd043=_[_0xc1d7('0x21')](recordings[_0x477487[_0xc1d7('0xd')]]['monitors'],{'value':_0x477487[_0xc1d7('0x1c')]});if(_[_0xc1d7('0x13')](_0x1cd043)){recordings[_0x477487[_0xc1d7('0xd')]][_0xc1d7('0x22')][_0xc1d7('0x23')]({'value':_0x477487[_0xc1d7('0x1c')]});}}}}catch(_0x1ac20c){utils[_0xc1d7('0x11')](util[_0xc1d7('0xb')](_0xc1d7('0x24'),_0x477487[_0xc1d7('0x3')]),_0x1ac20c);}};exports['hangup']=function(_0x229034){try{if(!_[_0xc1d7('0x13')](recordings[_0x229034['uniqueid']])){utils['debug'](util[_0xc1d7('0xb')](_0xc1d7('0x25'),_0x229034['uniqueid']),_0x229034);utils[_0xc1d7('0x15')](util[_0xc1d7('0xb')](_0xc1d7('0x26'),_0x229034[_0xc1d7('0x3')],_0x229034[_0xc1d7('0x27')],_0x229034['calleridname'],_0x229034[_0xc1d7('0x28')]));recordings[_0x229034[_0xc1d7('0x3')]][_0xc1d7('0x27')]=_0x229034[_0xc1d7('0x27')];recordings[_0x229034[_0xc1d7('0x3')]][_0xc1d7('0x29')]=_0x229034[_0xc1d7('0x29')];recordings[_0x229034[_0xc1d7('0x3')]][_0xc1d7('0x2a')]=_0x229034['connectedlinenum'];recordings[_0x229034['uniqueid']][_0xc1d7('0x2b')]=_0x229034['connectedlinename'];if(recordings[_0x229034[_0xc1d7('0x3')]]['type']==_0xc1d7('0x2c')&&recordings[_0x229034[_0xc1d7('0x3')]]['accountcode']){recordings[_0x229034[_0xc1d7('0x3')]]['connectedlinenum']=recordings[_0x229034[_0xc1d7('0x3')]]['accountcode'];recordings[_0x229034[_0xc1d7('0x3')]][_0xc1d7('0x2b')]='';}recordings[_0x229034[_0xc1d7('0x3')]][_0xc1d7('0x22')]['forEach'](function(_0x1a506f){var _0x2a98b2=_[_0xc1d7('0x2d')](recordings[_0x229034[_0xc1d7('0x3')]]);_0x2a98b2[_0xc1d7('0x1c')]=_0x1a506f['value'];writeDB(_0x2a98b2);});delete recordings[_0x229034[_0xc1d7('0x3')]];}}catch(_0x2a440a){utils[_0xc1d7('0x11')](util['format'](_0xc1d7('0x25'),_0x229034[_0xc1d7('0x3')]),_0x2a440a);}};exports[_0xc1d7('0x2e')]=function(_0x24e486){try{if(!_[_0xc1d7('0x13')](recordings[_0x24e486[_0xc1d7('0x3')]])){utils['debug'](util['format'](_0xc1d7('0x2f'),_0x24e486['uniqueid']),_0x24e486);utils[_0xc1d7('0x15')](util[_0xc1d7('0xb')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x24e486[_0xc1d7('0x3')],_0x24e486[_0xc1d7('0x30')],_0x24e486[_0xc1d7('0x31')]));if(_0x24e486[_0xc1d7('0x30')][_0xc1d7('0x32')]()==_0xc1d7('0x33')&&_[_0xc1d7('0x34')](_0x24e486[_0xc1d7('0x31')][_0xc1d7('0x32')](),'cdr')){var _0x1f0b25=_0x24e486[_0xc1d7('0x31')]['split']('=');var _0x523fe3=_0x1f0b25[0x0][_0xc1d7('0x35')](_0x1f0b25[0x0]['lastIndexOf']('(')+0x1,_0x1f0b25[0x0][_0xc1d7('0x36')](')'));var _0x467f33=_0x1f0b25[0x1];recordings[_0x24e486[_0xc1d7('0x3')]][_0x523fe3]=_0x467f33;}}}catch(_0x188cfd){utils[_0xc1d7('0x11')](util[_0xc1d7('0xb')](_0xc1d7('0x2f'),_0x24e486['uniqueid']),_0x188cfd);}};exports[_0xc1d7('0x37')]=function(_0x50c06f){try{if(!_[_0xc1d7('0x13')](recordings[_0x50c06f[_0xc1d7('0x3')]])){utils[_0xc1d7('0xa')](util[_0xc1d7('0xb')]('[%s][recordings][queuecallerjoin]',_0x50c06f[_0xc1d7('0x3')]),_0x50c06f);utils['info'](util[_0xc1d7('0xb')](_0xc1d7('0x38'),_0x50c06f['uniqueid'],_0x50c06f[_0xc1d7('0x39')]));recordings[_0x50c06f[_0xc1d7('0x3')]][_0xc1d7('0x39')]=_0x50c06f['queue'];}}catch(_0x50bdd3){utils['error'](util[_0xc1d7('0xb')]('[%s][recordings][queuecallerjoin]',_0x50c06f[_0xc1d7('0x3')]),_0x50bdd3);}};
\ No newline at end of file
index 4609403..f8bc213 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f33=['transfertargetcontext','transfertargetexten','util','info','format','[%s][transfers][writeDB]\x20type:%s','origtransfereruniqueid','type','request','CreateVoiceTransferReport','debug','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridname','blind','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','attended','isNil','transfereechannel','assign','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode'];(function(_0xd94092,_0x457c9f){var _0x35e3b8=function(_0x1bf3b4){while(--_0x1bf3b4){_0xd94092['push'](_0xd94092['shift']());}};_0x35e3b8(++_0x457c9f);}(_0x6f33,0xca));var _0x36f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6f33[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x36f3('0x0'));var utils=require('./utils');function writeDB(_0x3d94fe){utils[_0x36f3('0x1')](util[_0x36f3('0x2')](_0x36f3('0x3'),_0x3d94fe['type']==='attended'?_0x3d94fe[_0x36f3('0x4')]:_0x3d94fe['uniqueid'],_0x3d94fe[_0x36f3('0x5')]));utils[_0x36f3('0x6')](_0x36f3('0x7'),_0x3d94fe);}exports['blindtransfer']=function(_0x523b5e){try{utils[_0x36f3('0x8')](util[_0x36f3('0x2')](_0x36f3('0x9'),_0x523b5e[_0x36f3('0xa')]),_0x523b5e);utils['info'](util[_0x36f3('0x2')](_0x36f3('0xb'),_0x523b5e[_0x36f3('0xa')],_0x523b5e[_0x36f3('0xc')],_0x523b5e[_0x36f3('0xd')],_0x523b5e['transfereecalleridnum'],_0x523b5e[_0x36f3('0xe')]));_0x523b5e['type']=_0x36f3('0xf');writeDB(_0x523b5e);}catch(_0x465b8f){utils[_0x36f3('0x10')](util[_0x36f3('0x2')]('[%s][transfers][blindtransfer]',_0x523b5e[_0x36f3('0xa')]),_0x465b8f);}};exports[_0x36f3('0x11')]=function(_0x48d09d){try{utils[_0x36f3('0x8')](util['format'](_0x36f3('0x12'),_0x48d09d[_0x36f3('0x4')]),_0x48d09d);utils[_0x36f3('0x1')](util[_0x36f3('0x2')](_0x36f3('0x13'),_0x48d09d['origtransfereruniqueid'],_0x48d09d[_0x36f3('0x14')],_0x48d09d[_0x36f3('0x15')],_0x48d09d[_0x36f3('0x16')],_0x48d09d['transfertargetcalleridname']));_0x48d09d=_['assign'](_0x48d09d,{'transfererchannel':_0x48d09d[_0x36f3('0x17')],'transferercalleridnum':_0x48d09d[_0x36f3('0x14')],'transferercalleridname':_0x48d09d[_0x36f3('0x15')],'transfererconnectedlinenum':_0x48d09d[_0x36f3('0x18')],'transfererconnectedlinename':_0x48d09d[_0x36f3('0x19')],'transfereraccountcode':_0x48d09d[_0x36f3('0x1a')],'transferercontext':_0x48d09d[_0x36f3('0x1b')],'transfererexten':_0x48d09d['secondtransfererexten'],'transfererlinkedid':_0x48d09d[_0x36f3('0x1c')],'context':_0x48d09d['origtransferercontext'],'extension':_0x48d09d['origtransfererexten'],'type':_0x36f3('0x1d')});if(_[_0x36f3('0x1e')](_0x48d09d[_0x36f3('0x1f')])){_0x48d09d=_[_0x36f3('0x20')](_0x48d09d,{'transfereechannel':_0x48d09d[_0x36f3('0x21')],'transfereecalleridnum':_0x48d09d[_0x36f3('0x16')],'transfereecalleridname':_0x48d09d[_0x36f3('0x22')],'transfereeconnectedlinenum':_0x48d09d[_0x36f3('0x23')],'transfereeconnectedlinename':_0x48d09d[_0x36f3('0x24')],'transfereeaccountcode':_0x48d09d[_0x36f3('0x25')],'transfereecontext':_0x48d09d[_0x36f3('0x26')],'transfereeexten':_0x48d09d[_0x36f3('0x27')],'transfereelinkedid':_0x48d09d['transfertargetlinkedid']});}writeDB(_0x48d09d);}catch(_0x1e068a){utils[_0x36f3('0x10')](util['format'](_0x36f3('0x12'),_0x48d09d[_0x36f3('0x4')]),_0x1e068a);}};
\ No newline at end of file
+var _0x3290=['secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','blind','error','attendedtransfer','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinename','origtransfereraccountcode'];(function(_0x6a2857,_0x507f15){var _0x32be04=function(_0x27c744){while(--_0x27c744){_0x6a2857['push'](_0x6a2857['shift']());}};_0x32be04(++_0x507f15);}(_0x3290,0x17f));var _0x0329=function(_0x19b8e1,_0x4592e8){_0x19b8e1=_0x19b8e1-0x0;var _0x31d796=_0x3290[_0x19b8e1];return _0x31d796;};'use strict';var _=require('lodash');var util=require(_0x0329('0x0'));var utils=require(_0x0329('0x1'));function writeDB(_0x1a637c){utils[_0x0329('0x2')](util[_0x0329('0x3')](_0x0329('0x4'),_0x1a637c[_0x0329('0x5')]===_0x0329('0x6')?_0x1a637c[_0x0329('0x7')]:_0x1a637c[_0x0329('0x8')],_0x1a637c[_0x0329('0x5')]));utils['request']('CreateVoiceTransferReport',_0x1a637c);}exports['blindtransfer']=function(_0x58d345){try{utils[_0x0329('0x9')](util['format'](_0x0329('0xa'),_0x58d345[_0x0329('0x8')]),_0x58d345);utils[_0x0329('0x2')](util['format'](_0x0329('0xb'),_0x58d345[_0x0329('0x8')],_0x58d345[_0x0329('0xc')],_0x58d345[_0x0329('0xd')],_0x58d345['transfereecalleridnum'],_0x58d345['transfereecalleridname']));_0x58d345[_0x0329('0x5')]=_0x0329('0xe');writeDB(_0x58d345);}catch(_0x5c2fa2){utils[_0x0329('0xf')](util[_0x0329('0x3')](_0x0329('0xa'),_0x58d345['uniqueid']),_0x5c2fa2);}};exports[_0x0329('0x10')]=function(_0xf2f1e8){try{utils[_0x0329('0x9')](util[_0x0329('0x3')]('[%s][transfers][attendedtransfer]',_0xf2f1e8['origtransfereruniqueid']),_0xf2f1e8);utils[_0x0329('0x2')](util[_0x0329('0x3')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0xf2f1e8['origtransfereruniqueid'],_0xf2f1e8[_0x0329('0x11')],_0xf2f1e8[_0x0329('0x12')],_0xf2f1e8[_0x0329('0x13')],_0xf2f1e8[_0x0329('0x14')]));_0xf2f1e8=_[_0x0329('0x15')](_0xf2f1e8,{'transfererchannel':_0xf2f1e8[_0x0329('0x16')],'transferercalleridnum':_0xf2f1e8[_0x0329('0x11')],'transferercalleridname':_0xf2f1e8[_0x0329('0x12')],'transfererconnectedlinenum':_0xf2f1e8['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0xf2f1e8[_0x0329('0x17')],'transfereraccountcode':_0xf2f1e8[_0x0329('0x18')],'transferercontext':_0xf2f1e8[_0x0329('0x19')],'transfererexten':_0xf2f1e8[_0x0329('0x1a')],'transfererlinkedid':_0xf2f1e8[_0x0329('0x1b')],'context':_0xf2f1e8[_0x0329('0x1c')],'extension':_0xf2f1e8['origtransfererexten'],'type':_0x0329('0x6')});if(_['isNil'](_0xf2f1e8['transfereechannel'])){_0xf2f1e8=_[_0x0329('0x15')](_0xf2f1e8,{'transfereechannel':_0xf2f1e8[_0x0329('0x1d')],'transfereecalleridnum':_0xf2f1e8[_0x0329('0x13')],'transfereecalleridname':_0xf2f1e8[_0x0329('0x14')],'transfereeconnectedlinenum':_0xf2f1e8[_0x0329('0x1e')],'transfereeconnectedlinename':_0xf2f1e8[_0x0329('0x1f')],'transfereeaccountcode':_0xf2f1e8['transfertargetaccountcode'],'transfereecontext':_0xf2f1e8[_0x0329('0x20')],'transfereeexten':_0xf2f1e8[_0x0329('0x21')],'transfereelinkedid':_0xf2f1e8['transfertargetlinkedid']});}writeDB(_0xf2f1e8);}catch(_0x22638e){utils[_0x0329('0xf')](util['format']('[%s][transfers][attendedtransfer]',_0xf2f1e8[_0x0329('0x7')]),_0x22638e);}};
\ No newline at end of file
index 7b1a377..83b9572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x576b=['[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','seconds','subtractTime','format','diffTime','diff','sumTime','now','YYYY-MM-DD\x20HH:mm:ss','isBefore','util','client','../../config/logger','xdr','info','inspect','debug','error','request','then','catch','[utils][request]\x20name:%s','GetUser','internal','name','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','found','notfound','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw'];(function(_0x4adb02,_0x1d073b){var _0x181f1c=function(_0x212e9f){while(--_0x212e9f){_0x4adb02['push'](_0x4adb02['shift']());}};_0x181f1c(++_0x1d073b);}(_0x576b,0x1d9));var _0xb576=function(_0x4fb8b4,_0x10886e){_0x4fb8b4=_0x4fb8b4-0x0;var _0x45d897=_0x576b[_0x4fb8b4];return _0x45d897;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var moment=require('moment');var util=require(_0xb576('0x0'));var client=jayson[_0xb576('0x1')]['http']({'port':0x2329});var logger=require(_0xb576('0x2'))(_0xb576('0x3'));exports['info']=function(_0x20cb85,_0x25bfec){logger[_0xb576('0x4')](_0x20cb85,_0x25bfec?util[_0xb576('0x5')](_0x25bfec,{'showHidden':![],'depth':null}):'');};exports[_0xb576('0x6')]=function(_0x22cbae,_0x42affb){logger[_0xb576('0x6')](_0x22cbae,_0x42affb?util[_0xb576('0x5')](_0x42affb,{'showHidden':![],'depth':null}):'');};exports[_0xb576('0x7')]=function(_0x1148c2,_0x1f7321){logger[_0xb576('0x7')](_0x1148c2,_0x1f7321?util[_0xb576('0x5')](_0x1f7321,{'showHidden':![],'depth':null}):'');};exports[_0xb576('0x8')]=function(_0x4b209b,_0x3e21fe){return client['request'](_0x4b209b,{'body':_0x3e21fe})[_0xb576('0x9')](function(_0x2a0f32){logger[_0xb576('0x6')]('[utils][request]\x20name:%s',_0x4b209b,_0x2a0f32?util['inspect'](_0x2a0f32,{'showHidden':![],'depth':null}):'');})[_0xb576('0xa')](function(_0x420041){logger[_0xb576('0x7')](_0xb576('0xb'),_0x4b209b,_0x420041?util[_0xb576('0x5')](_0x420041,{'showHidden':![],'depth':null}):'');});};function getUser(_0x47edcc){return client[_0xb576('0x8')](_0xb576('0xc'),{'options':{'raw':!![],'attributes':['id',_0xb576('0xd'),_0xb576('0xe'),'interface'],'where':_0x47edcc,'limit':0x1}})['then'](function(_0x5cf596){logger[_0xb576('0x6')](_0xb576('0xf'),JSON[_0xb576('0x10')](_0x47edcc),_0x5cf596?util[_0xb576('0x5')](_0x5cf596,{'showHidden':![],'depth':null}):'');return _0x5cf596[_0xb576('0x11')][_0xb576('0x12')]?_0x5cf596['result'][0x0]:null;});}exports[_0xb576('0x13')]=function(_0x2bf599){return new BPromise(function(_0x5406c9,_0x52a0ca){if(_0x2bf599){return getUser({'internal':_0x2bf599})[_0xb576('0x9')](function(_0x3da216){logger[_0xb576('0x4')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x2bf599,_0x3da216?'found':'notfound');return _0x5406c9(_0x3da216);})[_0xb576('0xa')](function(_0x5a2ae9){logger['error'](_0xb576('0x14'),_0x5a2ae9?util[_0xb576('0x5')](_0x5a2ae9,{'showHidden':![],'depth':null}):'');return _0x5406c9(null);});}return _0x5406c9(null);});};exports[_0xb576('0x15')]=function(_0x2a95a3){return new BPromise(function(_0x52a6ef,_0x230e91){if(_0x2a95a3){return getUser({'interface':_0x2a95a3})[_0xb576('0x9')](function(_0xde0fb1){logger[_0xb576('0x4')](_0xb576('0x16'),_0x2a95a3,_0xde0fb1?_0xb576('0x17'):_0xb576('0x18'));return _0x52a6ef(_0xde0fb1);})[_0xb576('0xa')](function(_0x23d3e7){logger[_0xb576('0x7')](_0xb576('0x19'),_0x23d3e7?util[_0xb576('0x5')](_0x23d3e7,{'showHidden':![],'depth':null}):'');return _0x52a6ef(null);});}return _0x52a6ef(null);});};exports[_0xb576('0x1a')]=function(_0x1025bc){return new BPromise(function(_0x5c343f,_0x456648){if(_0x1025bc){return getUser({'name':_0x1025bc})[_0xb576('0x9')](function(_0x1e858d){logger[_0xb576('0x4')](_0xb576('0x1b'),_0x1025bc,_0x1e858d?_0xb576('0x17'):_0xb576('0x18'));return _0x5c343f(_0x1e858d);})['catch'](function(_0x30d966){logger[_0xb576('0x7')](_0xb576('0x1c'),_0x30d966?util[_0xb576('0x5')](_0x30d966,{'showHidden':![],'depth':null}):'');return _0x5c343f(null);});}return _0x5c343f(null);});};exports[_0xb576('0x1d')]=function(_0x592dfc){return new BPromise(function(_0x13d833,_0x5a7b3d){if(_0x592dfc){return client[_0xb576('0x8')](_0xb576('0x1e'),{'options':{'raw':!![],'attributes':['id',_0xb576('0xe'),_0xb576('0x1f'),_0xb576('0x20'),'acwTimeout'],'where':{'name':_0x592dfc},'limit':0x1}})[_0xb576('0x9')](function(_0x5e3860){logger[_0xb576('0x6')](_0xb576('0x21'),_0x592dfc,_0x5e3860?util['inspect'](_0x5e3860,{'showHidden':![],'depth':null}):'');logger[_0xb576('0x4')](_0xb576('0x22'),_0x592dfc,_0x5e3860?_0xb576('0x17'):'notfound');return _0x13d833(_0x5e3860['result']['length']?_0x5e3860[_0xb576('0x11')][0x0]:null);})[_0xb576('0xa')](function(_0xd053f1){logger[_0xb576('0x7')](_0xb576('0x23'),_0xd053f1?util[_0xb576('0x5')](_0xd053f1,{'showHidden':![],'depth':null}):'');return _0x13d833(null);});}return _0x13d833(null);});};exports[_0xb576('0x24')]=function(_0x38ce86,_0x1be7ab){return moment(_0x38ce86)['add'](_0x1be7ab,_0xb576('0x25'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xb576('0x26')]=function(_0x42f8ea,_0x1e446a){return moment(_0x42f8ea)['subtract'](_0x1e446a,_0xb576('0x25'))[_0xb576('0x27')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xb576('0x28')]=function(_0x453824,_0x84b663){return moment(_0x453824)[_0xb576('0x29')](moment(_0x84b663),_0xb576('0x25'));};exports[_0xb576('0x2a')]=function(_0xe4afbc,_0x368a80){return parseInt(_0xe4afbc,0xa)+parseInt(_0x368a80,0xa);};exports[_0xb576('0x2b')]=function(){return moment()[_0xb576('0x27')](_0xb576('0x2c'));};exports['isAfter']=function(_0x5b9f8d,_0x1c95a5){if(_0x1c95a5){return moment(_0x5b9f8d)['isAfter'](_0x1c95a5);}return!![];};exports[_0xb576('0x2d')]=function(_0x131ac5,_0x1c875f){if(_0x1c875f){return moment(_0x131ac5)[_0xb576('0x2d')](_0x1c875f);}else if(_0x131ac5){return!![];}return![];};
\ No newline at end of file
+var _0x8fee=['interface','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','notfound','[utils][getUserByName]','GetVoiceQueue','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','isAfter','isBefore','bluebird','jayson/promise','util','client','http','info','inspect','error','request','then','debug','[utils][request]\x20name:%s','catch','internal','name'];(function(_0x3e1f2a,_0x46917a){var _0x3009f9=function(_0x36ec81){while(--_0x36ec81){_0x3e1f2a['push'](_0x3e1f2a['shift']());}};_0x3009f9(++_0x46917a);}(_0x8fee,0x195));var _0xe8fe=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0x8fee[_0x42bdad];return _0x122626;};'use strict';var BPromise=require(_0xe8fe('0x0'));var jayson=require(_0xe8fe('0x1'));var moment=require('moment');var util=require(_0xe8fe('0x2'));var client=jayson[_0xe8fe('0x3')][_0xe8fe('0x4')]({'port':0x2329});var logger=require('../../config/logger')('xdr');exports[_0xe8fe('0x5')]=function(_0xc593fd,_0x1c247f){logger[_0xe8fe('0x5')](_0xc593fd,_0x1c247f?util[_0xe8fe('0x6')](_0x1c247f,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x286e5c,_0x1e8de5){logger['debug'](_0x286e5c,_0x1e8de5?util[_0xe8fe('0x6')](_0x1e8de5,{'showHidden':![],'depth':null}):'');};exports[_0xe8fe('0x7')]=function(_0x3570a1,_0xa75af6){logger[_0xe8fe('0x7')](_0x3570a1,_0xa75af6?util[_0xe8fe('0x6')](_0xa75af6,{'showHidden':![],'depth':null}):'');};exports[_0xe8fe('0x8')]=function(_0x281150,_0x3f3ca5){return client[_0xe8fe('0x8')](_0x281150,{'body':_0x3f3ca5})[_0xe8fe('0x9')](function(_0x54613b){logger[_0xe8fe('0xa')](_0xe8fe('0xb'),_0x281150,_0x54613b?util[_0xe8fe('0x6')](_0x54613b,{'showHidden':![],'depth':null}):'');})[_0xe8fe('0xc')](function(_0x200aef){logger[_0xe8fe('0x7')](_0xe8fe('0xb'),_0x281150,_0x200aef?util[_0xe8fe('0x6')](_0x200aef,{'showHidden':![],'depth':null}):'');});};function getUser(_0x5ce79a){return client[_0xe8fe('0x8')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0xe8fe('0xd'),_0xe8fe('0xe'),_0xe8fe('0xf')],'where':_0x5ce79a,'limit':0x1}})['then'](function(_0x22057e){logger[_0xe8fe('0xa')]('[utils][getUser]\x20where:%s',JSON['stringify'](_0x5ce79a),_0x22057e?util[_0xe8fe('0x6')](_0x22057e,{'showHidden':![],'depth':null}):'');return _0x22057e[_0xe8fe('0x10')][_0xe8fe('0x11')]?_0x22057e[_0xe8fe('0x10')][0x0]:null;});}exports[_0xe8fe('0x12')]=function(_0x1c2811){return new BPromise(function(_0x34747d,_0x1e6483){if(_0x1c2811){return getUser({'internal':_0x1c2811})['then'](function(_0x3b9098){logger[_0xe8fe('0x5')](_0xe8fe('0x13'),_0x1c2811,_0x3b9098?_0xe8fe('0x14'):'notfound');return _0x34747d(_0x3b9098);})[_0xe8fe('0xc')](function(_0x45274a){logger['error'](_0xe8fe('0x15'),_0x45274a?util[_0xe8fe('0x6')](_0x45274a,{'showHidden':![],'depth':null}):'');return _0x34747d(null);});}return _0x34747d(null);});};exports[_0xe8fe('0x16')]=function(_0x37e62c){return new BPromise(function(_0x27c655,_0x146448){if(_0x37e62c){return getUser({'interface':_0x37e62c})[_0xe8fe('0x9')](function(_0x5d5889){logger[_0xe8fe('0x5')](_0xe8fe('0x17'),_0x37e62c,_0x5d5889?_0xe8fe('0x14'):'notfound');return _0x27c655(_0x5d5889);})[_0xe8fe('0xc')](function(_0x242a54){logger['error'](_0xe8fe('0x18'),_0x242a54?util[_0xe8fe('0x6')](_0x242a54,{'showHidden':![],'depth':null}):'');return _0x27c655(null);});}return _0x27c655(null);});};exports['getUserByName']=function(_0x37ca04){return new BPromise(function(_0x2007d4,_0x15b57b){if(_0x37ca04){return getUser({'name':_0x37ca04})[_0xe8fe('0x9')](function(_0x17d8a7){logger[_0xe8fe('0x5')](_0xe8fe('0x19'),_0x37ca04,_0x17d8a7?_0xe8fe('0x14'):_0xe8fe('0x1a'));return _0x2007d4(_0x17d8a7);})[_0xe8fe('0xc')](function(_0x4744af){logger['error'](_0xe8fe('0x1b'),_0x4744af?util['inspect'](_0x4744af,{'showHidden':![],'depth':null}):'');return _0x2007d4(null);});}return _0x2007d4(null);});};exports['getVoiceQueueByName']=function(_0x18dc3d){return new BPromise(function(_0x5d9518,_0x373259){if(_0x18dc3d){return client[_0xe8fe('0x8')](_0xe8fe('0x1c'),{'options':{'raw':!![],'attributes':['id',_0xe8fe('0xe'),_0xe8fe('0x1d'),'acw',_0xe8fe('0x1e')],'where':{'name':_0x18dc3d},'limit':0x1}})[_0xe8fe('0x9')](function(_0x58d858){logger['debug'](_0xe8fe('0x1f'),_0x18dc3d,_0x58d858?util[_0xe8fe('0x6')](_0x58d858,{'showHidden':![],'depth':null}):'');logger[_0xe8fe('0x5')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x18dc3d,_0x58d858?'found':'notfound');return _0x5d9518(_0x58d858[_0xe8fe('0x10')][_0xe8fe('0x11')]?_0x58d858['result'][0x0]:null);})[_0xe8fe('0xc')](function(_0x1a93da){logger[_0xe8fe('0x7')]('[utils][getVoiceQueueByName]',_0x1a93da?util[_0xe8fe('0x6')](_0x1a93da,{'showHidden':![],'depth':null}):'');return _0x5d9518(null);});}return _0x5d9518(null);});};exports['addTime']=function(_0x453301,_0x55bd60){return moment(_0x453301)[_0xe8fe('0x20')](_0x55bd60,_0xe8fe('0x21'))[_0xe8fe('0x22')](_0xe8fe('0x23'));};exports[_0xe8fe('0x24')]=function(_0x2ee871,_0x283961){return moment(_0x2ee871)[_0xe8fe('0x25')](_0x283961,_0xe8fe('0x21'))[_0xe8fe('0x22')](_0xe8fe('0x23'));};exports[_0xe8fe('0x26')]=function(_0x87b172,_0x229488){return moment(_0x87b172)[_0xe8fe('0x27')](moment(_0x229488),'seconds');};exports['sumTime']=function(_0x58b368,_0x50d813){return parseInt(_0x58b368,0xa)+parseInt(_0x50d813,0xa);};exports['now']=function(){return moment()['format'](_0xe8fe('0x23'));};exports[_0xe8fe('0x28')]=function(_0x148ba8,_0x1778b6){if(_0x1778b6){return moment(_0x148ba8)[_0xe8fe('0x28')](_0x1778b6);}return!![];};exports[_0xe8fe('0x29')]=function(_0x2acce0,_0x17c196){if(_0x17c196){return moment(_0x2acce0)[_0xe8fe('0x29')](_0x17c196);}else if(_0x2acce0){return!![];}return![];};
\ No newline at end of file
index 1cfec53..9594e0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x967d=['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','\x20body=%s','body','format','method','headers','x-forwarded-for','url','statusCode','responseTime','role','%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)','connection','remoteAddress','agent_name','test','setupLoggers','fs-extra','lodash','express-winston','path','fileLogger','./safe-template','safeTemplate','./mask-sensitive-data','/var','log','xcally','join','client','name','then','user','no-user','data'];(function(_0x66c591,_0x2e194f){var _0x1637fb=function(_0x3fbfb7){while(--_0x3fbfb7){_0x66c591['push'](_0x66c591['shift']());}};_0x1637fb(++_0x2e194f);}(_0x967d,0x78));var _0xd967=function(_0x4b36b7,_0x14659b){_0x4b36b7=_0x4b36b7-0x0;var _0x51f8ba=_0x967d[_0x4b36b7];return _0x51f8ba;};var fs=require(_0xd967('0x0'));var _=require(_0xd967('0x1'));var ewinston=require(_0xd967('0x2'));var path=require(_0xd967('0x3'));var util=require('util');var fileLogger=require('./loggers')[_0xd967('0x4')];var safeTemplate=require(_0xd967('0x5'))[_0xd967('0x6')];var maskSensitiveData=require(_0xd967('0x7'))['maskSensitiveData'];function ClientSideLogger(){function _0x308090(_0x27c15a){var _0xba1977=path['join'](_0xd967('0x8'),_0xd967('0x9'),_0xd967('0xa'));var _0x6296a1=path[_0xd967('0xb')](_0xd967('0xc'),_0x27c15a['role']+'-'+_0x27c15a[_0xd967('0xd')]);return fs['ensureDir'](path['join'](_0xba1977,_0x6296a1))[_0xd967('0xe')](function(){var _0x395e97=fileLogger(_0xd967('0xc'),path['join'](_0xba1977,_0x6296a1));return _0x395e97;})['catch'](function(_0x30bec2){throw _0x30bec2;});}this[_0xd967('0x9')]=function(_0xcbae5f,_0x46d65b,_0x4dcf7a,_0x4ddb82){return _0x308090(_0xcbae5f[_0xd967('0xf')])['then'](function(_0x3afc2e){var _0xe8e3e0=_0x3afc2e[_0x46d65b];return _0xe8e3e0;})[_0xd967('0xe')](function(_0x411ffa){var _0x24c0b1=_0xcbae5f[_0xd967('0xf')]?_0xcbae5f[_0xd967('0xf')]['id']:_0xd967('0x10');var _0x31f281=_0x4ddb82[_0xd967('0x11')];var _0x3ae437=_0x4ddb82[_0xd967('0x12')];var _0x27cbdf=new Date(Number(_0x3ae437));return _0x411ffa(_0x24c0b1,_0x27cbdf,_0x4dcf7a,_0x31f281);})[_0xd967('0x13')](function(_0x673148){fileLogger('client')[_0xd967('0x14')](_0x673148);});};}function setupLoggers(_0x16fc7e){return new Promise(function(_0x23026b){var _0x196d80=new ClientSideLogger();var _0x3c9424=fileLogger(_0xd967('0x15'));var _0x32652a=fileLogger(_0xd967('0x16'));_0x16fc7e['set'](_0xd967('0x17'),_0x196d80);_0x16fc7e[_0xd967('0x18')](ewinston[_0xd967('0x19')]({'winstonInstance':_0x3c9424,'meta':![],'statusLevels':!![],'msg':function(_0x5e0034,_0x386b23){var _0xb18447=_0xd967('0x1a');if(!_['isEmpty'](_0x5e0034['body'])){_0xb18447+=_0xd967('0x1b');var _0x39963b=_0x5e0034[_0xd967('0x1c')];maskSensitiveData(_0x39963b);}return safeTemplate(util[_0xd967('0x1d')](_0xb18447,_0x5e0034[_0xd967('0x1e')],_0x5e0034[_0xd967('0x1f')]['x-forwarded-for']?_0x5e0034['headers'][_0xd967('0x20')]:_0x5e0034['connection']['remoteAddress']||_0x5e0034['ip'],_0x5e0034[_0xd967('0x21')],_0x386b23[_0xd967('0x22')],_0x386b23[_0xd967('0x23')],_0x5e0034[_0xd967('0xf')]?_0x5e0034['user']['id']:null,_0x5e0034['user']?_0x5e0034[_0xd967('0xf')][_0xd967('0xd')]:null,_0x5e0034[_0xd967('0xf')]?_0x5e0034[_0xd967('0xf')][_0xd967('0x24')]:null,_0x39963b?util['inspect'](_0x39963b,![],null):''));}}));_0x16fc7e['use'](ewinston[_0xd967('0x19')]({'winstonInstance':_0x32652a,'meta':![],'statusLevels':!![],'msg':function(_0x5c5f97,_0x53e26c){var _0x3b10b9=_0xd967('0x25');if(_0x5c5f97['body']&&_0x5c5f97[_0xd967('0x1c')][_0xd967('0x26')]&&_0x5c5f97[_0xd967('0x1c')][_0xd967('0x27')]){_0x3b10b9=_0xd967('0x28');}return util['format'](_0x3b10b9,_0x5c5f97['method'],_0x5c5f97['headers']['x-forwarded-for']?_0x5c5f97[_0xd967('0x1f')]['x-forwarded-for']:_0x5c5f97[_0xd967('0x29')][_0xd967('0x2a')]||_0x5c5f97['ip'],_0x5c5f97[_0xd967('0x21')],_0x53e26c[_0xd967('0x22')],_0x53e26c['responseTime'],_0x5c5f97[_0xd967('0xf')]?_0x5c5f97[_0xd967('0xf')]['id']:null,_0x5c5f97[_0xd967('0xf')]?_0x5c5f97['user']['name']:null,_0x5c5f97[_0xd967('0xf')]?_0x5c5f97[_0xd967('0xf')][_0xd967('0x24')]:null,_0x5c5f97['body']&&_0x5c5f97['body']['device']?_0x5c5f97[_0xd967('0x1c')][_0xd967('0x26')]:'other',_0x5c5f97[_0xd967('0x1c')]&&_0x5c5f97[_0xd967('0x1c')][_0xd967('0x27')]?_0x5c5f97['body'][_0xd967('0x27')]:'',_0x5c5f97[_0xd967('0x1c')]&&_0x5c5f97[_0xd967('0x1c')][_0xd967('0x2b')]?_0x5c5f97['body'][_0xd967('0x2b')]:'');},'ignoreRoute':function(_0x1b8efa){var _0xe6c9e8=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0xe6c9e8[_0xd967('0x2c')](_0x1b8efa[_0xd967('0x21')]);}}));return _0x23026b();});}exports[_0xd967('0x2d')]=setupLoggers;
\ No newline at end of file
+var _0xf999=['auth','set','client-side-logger','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','\x20body=%s','body','method','headers','x-forwarded-for','connection','remoteAddress','statusCode','responseTime','inspect','logger','%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)','format','name','agent_name','test','url','setupLoggers','fs-extra','lodash','express-winston','./loggers','./safe-template','safeTemplate','./mask-sensitive-data','/var','log','join','client','role','ensureDir','then','catch','user','no-user','error','api'];(function(_0x3c148f,_0x3eafcf){var _0x4d956a=function(_0x4a98b4){while(--_0x4a98b4){_0x3c148f['push'](_0x3c148f['shift']());}};_0x4d956a(++_0x3eafcf);}(_0xf999,0xa1));var _0x9f99=function(_0x2dc5e8,_0x207265){_0x2dc5e8=_0x2dc5e8-0x0;var _0x11c2f1=_0xf999[_0x2dc5e8];return _0x11c2f1;};var fs=require(_0x9f99('0x0'));var _=require(_0x9f99('0x1'));var ewinston=require(_0x9f99('0x2'));var path=require('path');var util=require('util');var fileLogger=require(_0x9f99('0x3'))['fileLogger'];var safeTemplate=require(_0x9f99('0x4'))[_0x9f99('0x5')];var maskSensitiveData=require(_0x9f99('0x6'))['maskSensitiveData'];function ClientSideLogger(){function _0x189391(_0x432fbf){var _0x4a2ec9=path['join'](_0x9f99('0x7'),_0x9f99('0x8'),'xcally');var _0x207b1c=path[_0x9f99('0x9')](_0x9f99('0xa'),_0x432fbf[_0x9f99('0xb')]+'-'+_0x432fbf['name']);return fs[_0x9f99('0xc')](path[_0x9f99('0x9')](_0x4a2ec9,_0x207b1c))[_0x9f99('0xd')](function(){var _0xc17c56=fileLogger(_0x9f99('0xa'),path['join'](_0x4a2ec9,_0x207b1c));return _0xc17c56;})[_0x9f99('0xe')](function(_0x246094){throw _0x246094;});}this['log']=function(_0x5d4bb1,_0x3b25a,_0x51b478,_0x590c4d){return _0x189391(_0x5d4bb1[_0x9f99('0xf')])[_0x9f99('0xd')](function(_0x472047){var _0x58595d=_0x472047[_0x3b25a];return _0x58595d;})[_0x9f99('0xd')](function(_0xd0382e){var _0x42a7f8=_0x5d4bb1['user']?_0x5d4bb1[_0x9f99('0xf')]['id']:_0x9f99('0x10');var _0x2c0af6=_0x590c4d['data'];var _0x5ad640=_0x590c4d['timestamp'];var _0x3856f7=new Date(Number(_0x5ad640));return _0xd0382e(_0x42a7f8,_0x3856f7,_0x51b478,_0x2c0af6);})[_0x9f99('0xe')](function(_0x21679e){fileLogger(_0x9f99('0xa'))[_0x9f99('0x11')](_0x21679e);});};}function setupLoggers(_0x38c417){return new Promise(function(_0x3e7934){var _0x55600=new ClientSideLogger();var _0x5a6528=fileLogger(_0x9f99('0x12'));var _0xaa97fe=fileLogger(_0x9f99('0x13'));_0x38c417[_0x9f99('0x14')](_0x9f99('0x15'),_0x55600);_0x38c417[_0x9f99('0x16')](ewinston['logger']({'winstonInstance':_0x5a6528,'meta':![],'statusLevels':!![],'msg':function(_0x3294c3,_0x3c5d5e){var _0x4484c3=_0x9f99('0x17');if(!_[_0x9f99('0x18')](_0x3294c3['body'])){_0x4484c3+=_0x9f99('0x19');var _0x4b2608=_0x3294c3[_0x9f99('0x1a')];maskSensitiveData(_0x4b2608);}return safeTemplate(util['format'](_0x4484c3,_0x3294c3[_0x9f99('0x1b')],_0x3294c3[_0x9f99('0x1c')][_0x9f99('0x1d')]?_0x3294c3[_0x9f99('0x1c')][_0x9f99('0x1d')]:_0x3294c3[_0x9f99('0x1e')][_0x9f99('0x1f')]||_0x3294c3['ip'],_0x3294c3['url'],_0x3c5d5e[_0x9f99('0x20')],_0x3c5d5e[_0x9f99('0x21')],_0x3294c3[_0x9f99('0xf')]?_0x3294c3[_0x9f99('0xf')]['id']:null,_0x3294c3[_0x9f99('0xf')]?_0x3294c3[_0x9f99('0xf')]['name']:null,_0x3294c3[_0x9f99('0xf')]?_0x3294c3[_0x9f99('0xf')]['role']:null,_0x4b2608?util[_0x9f99('0x22')](_0x4b2608,![],null):''));}}));_0x38c417['use'](ewinston[_0x9f99('0x23')]({'winstonInstance':_0xaa97fe,'meta':![],'statusLevels':!![],'msg':function(_0x425bbb,_0x27ed37){var _0xad23db=_0x9f99('0x24');if(_0x425bbb[_0x9f99('0x1a')]&&_0x425bbb[_0x9f99('0x1a')]['device']&&_0x425bbb['body'][_0x9f99('0x25')]){_0xad23db=_0x9f99('0x26');}return util[_0x9f99('0x27')](_0xad23db,_0x425bbb['method'],_0x425bbb[_0x9f99('0x1c')][_0x9f99('0x1d')]?_0x425bbb['headers'][_0x9f99('0x1d')]:_0x425bbb['connection'][_0x9f99('0x1f')]||_0x425bbb['ip'],_0x425bbb['url'],_0x27ed37[_0x9f99('0x20')],_0x27ed37['responseTime'],_0x425bbb['user']?_0x425bbb['user']['id']:null,_0x425bbb[_0x9f99('0xf')]?_0x425bbb['user'][_0x9f99('0x28')]:null,_0x425bbb[_0x9f99('0xf')]?_0x425bbb[_0x9f99('0xf')][_0x9f99('0xb')]:null,_0x425bbb[_0x9f99('0x1a')]&&_0x425bbb['body']['device']?_0x425bbb[_0x9f99('0x1a')]['device']:'other',_0x425bbb[_0x9f99('0x1a')]&&_0x425bbb[_0x9f99('0x1a')][_0x9f99('0x25')]?_0x425bbb[_0x9f99('0x1a')][_0x9f99('0x25')]:'',_0x425bbb[_0x9f99('0x1a')]&&_0x425bbb[_0x9f99('0x1a')][_0x9f99('0x29')]?_0x425bbb[_0x9f99('0x1a')][_0x9f99('0x29')]:'');},'ignoreRoute':function(_0x184951){var _0x1d0c87=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x1d0c87[_0x9f99('0x2a')](_0x184951[_0x9f99('0x2b')]);}}));return _0x3e7934();});}exports[_0x9f99('0x2c')]=setupLoggers;
\ No newline at end of file
index bbcf03d..7e1d50e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26df=['includes','dowCompare','date','max','min','domCompare','MMM','guess','padStart','length','iftime','moment-timezone','map','source','join','Interval\x20string\x20not\x20valid','Date\x20not\x20valid','isValid','split','locale','weekdaysShort','toLowerCase','indexOf','slice','concat','circularDoWInterval','monthsShort','exports','circularMonthInterval','clone','hours','minutes','isBefore','day','endOf','isBetween','format','ddd'];(function(_0x11844d,_0xb8b111){var _0x36f6bb=function(_0x4a7b72){while(--_0x4a7b72){_0x11844d['push'](_0x11844d['shift']());}};_0x36f6bb(++_0xb8b111);}(_0x26df,0x187));var _0xf26d=function(_0x2a5b3b,_0x4ebe31){_0x2a5b3b=_0x2a5b3b-0x0;var _0xae665a=_0x26df[_0x2a5b3b];return _0xae665a;};var _=require('lodash');var moment=require(_0xf26d('0x0'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx][_0xf26d('0x1')](function(_0x51b482){return _0x51b482[_0xf26d('0x2')];})[_0xf26d('0x3')](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING=_0xf26d('0x4');var EINVALID_DATE=_0xf26d('0x5');function throwIfDateNotValid(_0x3966db){if(!_0x3966db[_0xf26d('0x6')]()){throw new Error(EINVALID_DATE);}}function extractTime(_0x42bef4){var _0xfdbf51=_0x42bef4[_0xf26d('0x7')](':')[_0xf26d('0x1')](function(_0x49cb77){return parseInt(_0x49cb77,0xa);});var _0x975b16=_0xfdbf51[0x0];var _0x35e516=_0xfdbf51[0x1];if(_0x975b16<0x0||_0x975b16>0x17||_0x35e516<0x0||_0x35e516>0x3b){throw new Error(EINVALID_DATE);}return[_0x975b16,_0x35e516];}function circularDoWInterval(_0x1296ca,_0x5395ca){if(_0x1296ca===_0x5395ca){return[_0x1296ca];}else{var _0xa8ccdd=moment[_0xf26d('0x8')]();moment[_0xf26d('0x8')]('en');var _0x47db5f=moment[_0xf26d('0x9')]()[_0xf26d('0x1')](function(_0x171d8a){return _0x171d8a[_0xf26d('0xa')]();});moment[_0xf26d('0x8')](_0xa8ccdd);var _0x52385d=_0x47db5f[_0xf26d('0xb')](_0x1296ca);var _0x48ea1a=_0x47db5f[_0xf26d('0xb')](_0x5395ca);if(_0x48ea1a>_0x52385d){return _0x47db5f[_0xf26d('0xc')](_0x52385d,_0x48ea1a+0x1);}else{var _0x3965b6=_0x47db5f[_0xf26d('0xc')](0x0,_0x48ea1a+0x1);var _0x50d75a=_0x47db5f[_0xf26d('0xc')](_0x52385d);return _0x50d75a[_0xf26d('0xd')](_0x3965b6);}}}module['exports'][_0xf26d('0xe')]=circularDoWInterval;function circularMonthInterval(_0x3af8b2,_0x21b095){if(_0x3af8b2===_0x21b095){return[_0x3af8b2];}else{var _0x1c8cae=moment[_0xf26d('0x8')]();moment[_0xf26d('0x8')]('en');var _0x2ece7d=moment[_0xf26d('0xf')]()['map'](function(_0x1af358){return _0x1af358[_0xf26d('0xa')]();});moment[_0xf26d('0x8')](_0x1c8cae);var _0x5856c3=_0x2ece7d[_0xf26d('0xb')](_0x3af8b2);var _0x5adf87=_0x2ece7d['indexOf'](_0x21b095);if(_0x5adf87>_0x5856c3){return _0x2ece7d[_0xf26d('0xc')](_0x5856c3,_0x5adf87+0x1);}else{var _0x6ddc5a=_0x2ece7d[_0xf26d('0xc')](0x0,_0x5adf87+0x1);var _0x545e6d=_0x2ece7d[_0xf26d('0xc')](_0x5856c3);return _0x545e6d[_0xf26d('0xd')](_0x6ddc5a);}}}module[_0xf26d('0x10')][_0xf26d('0x11')]=circularMonthInterval;function parseDom(_0x118485){var _0x2357db=parseInt(_0x118485,0xa);if(_0x2357db<0x1||_0x2357db>0x1f){throw new Error(EINVALID_DATE);}return _0x2357db;}function timeCompare(_0x6917ba,_0x1a0394,_0x297dd3){var _0x674b20=_0x6917ba[_0xf26d('0x12')]();var _0x13cae1=extractTime(_0x1a0394);var _0x2feb0e=_0x13cae1[0x0];var _0x1852b4=_0x13cae1[0x1];var _0x39fb15=_0x6917ba[_0xf26d('0x12')]()[_0xf26d('0x13')](_0x2feb0e)[_0xf26d('0x14')](_0x1852b4);throwIfDateNotValid(_0x39fb15);var _0x15d7df=extractTime(_0x297dd3);var _0x34bdcc=_0x15d7df[0x0];var _0x3d2b6d=_0x15d7df[0x1];var _0x10c082=_0x6917ba[_0xf26d('0x12')]()['hours'](_0x34bdcc)['minutes'](_0x3d2b6d);throwIfDateNotValid(_0x10c082);if(_0x10c082[_0xf26d('0x15')](_0x39fb15)){var _0x3b740d=_0x674b20[_0xf26d('0x12')]()['startOf'](_0xf26d('0x16'));var _0x3ada2f=_0x674b20[_0xf26d('0x12')]()[_0xf26d('0x17')](_0xf26d('0x16'));return _0x674b20[_0xf26d('0x18')](_0x39fb15,_0x3ada2f,undefined,'[]')||_0x674b20['isBetween'](_0x3b740d,_0x10c082,undefined,'[]');}else{return _0x674b20[_0xf26d('0x18')](_0x39fb15,_0x10c082,undefined,'[]');}}module[_0xf26d('0x10')]['timeCompare']=timeCompare;function dowCompare(_0x20b7a7,_0x14c041,_0x3cb626){var _0x261d94=_0x20b7a7[_0xf26d('0x8')]('en')[_0xf26d('0x19')](_0xf26d('0x1a'))[_0xf26d('0xa')]();return circularDoWInterval(_0x14c041,_0x3cb626)[_0xf26d('0x1b')](_0x261d94);}module['exports'][_0xf26d('0x1c')]=dowCompare;function domCompare(_0x40420f,_0x29b499,_0x2a9ddf){var _0xb8c2b0=_0x40420f[_0xf26d('0x1d')]();if(_0x29b499===_0x2a9ddf){return _0xb8c2b0===_0x29b499;}else{var _0x7552ae=_0x40420f['daysInMonth']();var _0x47c507=_0x29b499<_0x2a9ddf;let _0x370bc9=![];var _0x48d452=0x0;var _0x404959=0x0;if(_0x47c507){_0x48d452=Math[_0xf26d('0x1e')](0x1,_0x29b499);_0x404959=Math[_0xf26d('0x1f')](_0x2a9ddf,_0x7552ae);_0x370bc9=_0xb8c2b0>=_0x48d452&&_0xb8c2b0<=_0x404959;}else{_0x48d452=Math['min'](_0x29b499,_0x7552ae);_0x404959=Math['max'](0x1,_0x2a9ddf);_0x370bc9=_0xb8c2b0>=_0x48d452||_0xb8c2b0<=_0x404959;}return _0x370bc9;}}module[_0xf26d('0x10')][_0xf26d('0x20')]=domCompare;function monthCompare(_0x26503e,_0x5cd493,_0x4266c4){var _0x418b39=_0x26503e[_0xf26d('0x8')]('en')[_0xf26d('0x19')](_0xf26d('0x21'))[_0xf26d('0xa')]();return circularMonthInterval(_0x5cd493,_0x4266c4)[_0xf26d('0x1b')](_0x418b39);}module[_0xf26d('0x10')]['monthCompare']=monthCompare;function iftime(_0x1cea80,_0x5329e3=moment['tz'][_0xf26d('0x22')](),_0x3826d8=moment()){if(!validateRx['test'](_0x1cea80)){throw new Error(EINVALID_STRING);}else{var _0x2f982a=(moment['isMoment'](_0x3826d8)?_0x3826d8[_0xf26d('0x12')]():moment(_0x3826d8))['tz'](_0x5329e3)[_0xf26d('0x8')]('en');throwIfDateNotValid(_0x2f982a);var _0x50712a=_0x1cea80['split'](',');var _0x40a766=_0x50712a[0x0];var _0x824eba=_0x50712a[0x1];var _0x479570=_0x50712a[0x2];var _0x1b60dd=_0x50712a[0x3];let _0x1878b5=!![];if(_0x40a766!=='*'){var _0x42d8b5=_0x40a766[_0xf26d('0x7')]('-');var _0x9ade96=_[_0xf26d('0x23')](_0x42d8b5[0x0],0x5,'0');var _0x37def5=_0x42d8b5[_0xf26d('0x24')]===0x2?_['padStart'](_0x42d8b5[0x1],0x5,'0'):_0x9ade96;_0x1878b5=timeCompare(_0x2f982a,_0x9ade96,_0x37def5);}let _0x255794=!![];if(_0x824eba!=='*'){var _0x4f8218=_0x824eba['split']('-');var _0x1cf6ec=_0x4f8218[0x0];var _0x7727fc=_0x4f8218[_0xf26d('0x24')]===0x2?_0x4f8218[0x1]:_0x1cf6ec;_0x255794=dowCompare(_0x2f982a,_0x1cf6ec,_0x7727fc);}let _0x303224=!![];if(_0x479570!=='*'){var _0x16e570=_0x479570[_0xf26d('0x7')]('-');var _0x292544=parseDom(_0x16e570[0x0]);var _0x1414de=_0x16e570[_0xf26d('0x24')]===0x2?parseDom(_0x16e570[0x1]):_0x292544;_0x303224=domCompare(_0x2f982a,_0x292544,_0x1414de);}let _0x1b1a6c=!![];if(_0x1b60dd!=='*'){var _0x2924f2=_0x1b60dd['split']('-');var _0x547230=_0x2924f2[0x0];var _0x3cf8c9=_0x2924f2[_0xf26d('0x24')]===0x2?_0x2924f2[0x1]:_0x2924f2[0x0];_0x1b1a6c=monthCompare(_0x2f982a,_0x547230,_0x3cf8c9);}return _0x1878b5&&_0x255794&&_0x303224&&_0x1b1a6c;}}module[_0xf26d('0x10')][_0xf26d('0x25')]=iftime;
\ No newline at end of file
+var _0x0749=['hours','minutes','isBefore','startOf','day','isBetween','ddd','date','max','min','domCompare','format','MMM','monthCompare','guess','test','isMoment','padStart','length','lodash','moment-timezone','source','join','Interval\x20string\x20not\x20valid','isValid','split','map','locale','toLowerCase','slice','concat','exports','circularDoWInterval','monthsShort','indexOf','circularMonthInterval','clone'];(function(_0x443b90,_0x5e53de){var _0x529e5e=function(_0x2dcedd){while(--_0x2dcedd){_0x443b90['push'](_0x443b90['shift']());}};_0x529e5e(++_0x5e53de);}(_0x0749,0x1aa));var _0x9074=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x0749[_0x126558];return _0x1f6d14;};var _=require(_0x9074('0x0'));var moment=require(_0x9074('0x1'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx]['map'](function(_0x287418){return _0x287418[_0x9074('0x2')];})[_0x9074('0x3')](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING=_0x9074('0x4');var EINVALID_DATE='Date\x20not\x20valid';function throwIfDateNotValid(_0x4d4600){if(!_0x4d4600[_0x9074('0x5')]()){throw new Error(EINVALID_DATE);}}function extractTime(_0x47378d){var _0x15990e=_0x47378d[_0x9074('0x6')](':')[_0x9074('0x7')](function(_0x2e9d76){return parseInt(_0x2e9d76,0xa);});var _0x1b7f87=_0x15990e[0x0];var _0x3518aa=_0x15990e[0x1];if(_0x1b7f87<0x0||_0x1b7f87>0x17||_0x3518aa<0x0||_0x3518aa>0x3b){throw new Error(EINVALID_DATE);}return[_0x1b7f87,_0x3518aa];}function circularDoWInterval(_0x559442,_0x40e36d){if(_0x559442===_0x40e36d){return[_0x559442];}else{var _0x1dfcc2=moment[_0x9074('0x8')]();moment[_0x9074('0x8')]('en');var _0x57bae6=moment['weekdaysShort']()[_0x9074('0x7')](function(_0x43941a){return _0x43941a[_0x9074('0x9')]();});moment[_0x9074('0x8')](_0x1dfcc2);var _0x5117d1=_0x57bae6['indexOf'](_0x559442);var _0x37a17d=_0x57bae6['indexOf'](_0x40e36d);if(_0x37a17d>_0x5117d1){return _0x57bae6[_0x9074('0xa')](_0x5117d1,_0x37a17d+0x1);}else{var _0x2023a2=_0x57bae6['slice'](0x0,_0x37a17d+0x1);var _0x50df97=_0x57bae6[_0x9074('0xa')](_0x5117d1);return _0x50df97[_0x9074('0xb')](_0x2023a2);}}}module[_0x9074('0xc')][_0x9074('0xd')]=circularDoWInterval;function circularMonthInterval(_0x1436f3,_0x475e29){if(_0x1436f3===_0x475e29){return[_0x1436f3];}else{var _0x5929da=moment['locale']();moment[_0x9074('0x8')]('en');var _0x2ce8d5=moment[_0x9074('0xe')]()['map'](function(_0x224680){return _0x224680[_0x9074('0x9')]();});moment[_0x9074('0x8')](_0x5929da);var _0x3f61f6=_0x2ce8d5[_0x9074('0xf')](_0x1436f3);var _0x2c43c8=_0x2ce8d5[_0x9074('0xf')](_0x475e29);if(_0x2c43c8>_0x3f61f6){return _0x2ce8d5[_0x9074('0xa')](_0x3f61f6,_0x2c43c8+0x1);}else{var _0x5605ac=_0x2ce8d5[_0x9074('0xa')](0x0,_0x2c43c8+0x1);var _0x503f5f=_0x2ce8d5[_0x9074('0xa')](_0x3f61f6);return _0x503f5f[_0x9074('0xb')](_0x5605ac);}}}module['exports'][_0x9074('0x10')]=circularMonthInterval;function parseDom(_0x1ef2a1){var _0x237b3a=parseInt(_0x1ef2a1,0xa);if(_0x237b3a<0x1||_0x237b3a>0x1f){throw new Error(EINVALID_DATE);}return _0x237b3a;}function timeCompare(_0x12873c,_0x549dcf,_0xf8ebc4){var _0x18c9f0=_0x12873c[_0x9074('0x11')]();var _0x4e0f0e=extractTime(_0x549dcf);var _0x2befbf=_0x4e0f0e[0x0];var _0x4198b5=_0x4e0f0e[0x1];var _0x48fa06=_0x12873c[_0x9074('0x11')]()[_0x9074('0x12')](_0x2befbf)[_0x9074('0x13')](_0x4198b5);throwIfDateNotValid(_0x48fa06);var _0x21ea6e=extractTime(_0xf8ebc4);var _0x45025b=_0x21ea6e[0x0];var _0xaa8a69=_0x21ea6e[0x1];var _0x3de678=_0x12873c[_0x9074('0x11')]()[_0x9074('0x12')](_0x45025b)[_0x9074('0x13')](_0xaa8a69);throwIfDateNotValid(_0x3de678);if(_0x3de678[_0x9074('0x14')](_0x48fa06)){var _0x4445af=_0x18c9f0[_0x9074('0x11')]()[_0x9074('0x15')]('day');var _0x1c5150=_0x18c9f0[_0x9074('0x11')]()['endOf'](_0x9074('0x16'));return _0x18c9f0['isBetween'](_0x48fa06,_0x1c5150,undefined,'[]')||_0x18c9f0[_0x9074('0x17')](_0x4445af,_0x3de678,undefined,'[]');}else{return _0x18c9f0['isBetween'](_0x48fa06,_0x3de678,undefined,'[]');}}module[_0x9074('0xc')]['timeCompare']=timeCompare;function dowCompare(_0x1b9269,_0x1953cb,_0x752db0){var _0x3f75b0=_0x1b9269[_0x9074('0x8')]('en')['format'](_0x9074('0x18'))[_0x9074('0x9')]();return circularDoWInterval(_0x1953cb,_0x752db0)['includes'](_0x3f75b0);}module[_0x9074('0xc')]['dowCompare']=dowCompare;function domCompare(_0x1f0935,_0x428c0c,_0x556351){var _0x4ca963=_0x1f0935[_0x9074('0x19')]();if(_0x428c0c===_0x556351){return _0x4ca963===_0x428c0c;}else{var _0x145190=_0x1f0935['daysInMonth']();var _0xb334f9=_0x428c0c<_0x556351;let _0x2e9016=![];var _0x1f4841=0x0;var _0x394ba7=0x0;if(_0xb334f9){_0x1f4841=Math[_0x9074('0x1a')](0x1,_0x428c0c);_0x394ba7=Math[_0x9074('0x1b')](_0x556351,_0x145190);_0x2e9016=_0x4ca963>=_0x1f4841&&_0x4ca963<=_0x394ba7;}else{_0x1f4841=Math['min'](_0x428c0c,_0x145190);_0x394ba7=Math[_0x9074('0x1a')](0x1,_0x556351);_0x2e9016=_0x4ca963>=_0x1f4841||_0x4ca963<=_0x394ba7;}return _0x2e9016;}}module['exports'][_0x9074('0x1c')]=domCompare;function monthCompare(_0x434c1f,_0x21de92,_0xe590d4){var _0x170dda=_0x434c1f[_0x9074('0x8')]('en')[_0x9074('0x1d')](_0x9074('0x1e'))[_0x9074('0x9')]();return circularMonthInterval(_0x21de92,_0xe590d4)['includes'](_0x170dda);}module[_0x9074('0xc')][_0x9074('0x1f')]=monthCompare;function iftime(_0x659e4c,_0x326ee8=moment['tz'][_0x9074('0x20')](),_0x2082d5=moment()){if(!validateRx[_0x9074('0x21')](_0x659e4c)){throw new Error(EINVALID_STRING);}else{var _0x147607=(moment[_0x9074('0x22')](_0x2082d5)?_0x2082d5[_0x9074('0x11')]():moment(_0x2082d5))['tz'](_0x326ee8)[_0x9074('0x8')]('en');throwIfDateNotValid(_0x147607);var _0x842c97=_0x659e4c[_0x9074('0x6')](',');var _0x25e96f=_0x842c97[0x0];var _0x588b0f=_0x842c97[0x1];var _0x3d5fdc=_0x842c97[0x2];var _0x152c09=_0x842c97[0x3];let _0x487be3=!![];if(_0x25e96f!=='*'){var _0x12bb83=_0x25e96f[_0x9074('0x6')]('-');var _0x1e6ce6=_[_0x9074('0x23')](_0x12bb83[0x0],0x5,'0');var _0x470f58=_0x12bb83[_0x9074('0x24')]===0x2?_[_0x9074('0x23')](_0x12bb83[0x1],0x5,'0'):_0x1e6ce6;_0x487be3=timeCompare(_0x147607,_0x1e6ce6,_0x470f58);}let _0x3d11c2=!![];if(_0x588b0f!=='*'){var _0x402872=_0x588b0f[_0x9074('0x6')]('-');var _0x1aa62a=_0x402872[0x0];var _0xbba806=_0x402872['length']===0x2?_0x402872[0x1]:_0x1aa62a;_0x3d11c2=dowCompare(_0x147607,_0x1aa62a,_0xbba806);}let _0x3dd63d=!![];if(_0x3d5fdc!=='*'){var _0x86579a=_0x3d5fdc['split']('-');var _0x159bfe=parseDom(_0x86579a[0x0]);var _0x23dfd3=_0x86579a[_0x9074('0x24')]===0x2?parseDom(_0x86579a[0x1]):_0x159bfe;_0x3dd63d=domCompare(_0x147607,_0x159bfe,_0x23dfd3);}let _0x219812=!![];if(_0x152c09!=='*'){var _0x278fd4=_0x152c09[_0x9074('0x6')]('-');var _0x21931c=_0x278fd4[0x0];var _0x38ed70=_0x278fd4[_0x9074('0x24')]===0x2?_0x278fd4[0x1]:_0x278fd4[0x0];_0x219812=monthCompare(_0x147607,_0x21931c,_0x38ed70);}return _0x487be3&&_0x3d11c2&&_0x3dd63d&&_0x219812;}}module[_0x9074('0xc')]['iftime']=iftime;
\ No newline at end of file
index e39e9e8..c1ca4bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc89=['length','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','transports','Console','warn','File','error','%s-%s','consoleLogger','fileLogger','path','moment','../config/environment','debugLevel','toLowerCase','red','bold\x20yellow','white','bold\x20white','bold\x20green','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','join','%s-%s.log','message','{{{','replace','}}}','format','level','toUpperCase','meta'];(function(_0x14a862,_0x2b559d){var _0x245eb5=function(_0x6e014c){while(--_0x6e014c){_0x14a862['push'](_0x14a862['shift']());}};_0x245eb5(++_0x2b559d);}(_0xcc89,0x134));var _0x9cc8=function(_0x47da59,_0x2a4006){_0x47da59=_0x47da59-0x0;var _0x4c59ed=_0xcc89[_0x47da59];return _0x4c59ed;};'use strict';var path=require(_0x9cc8('0x0'));var util=require('util');var moment=require(_0x9cc8('0x1'));var winston=require('winston');var config=require(_0x9cc8('0x2'));var debugLevel=config[_0x9cc8('0x3')]?config[_0x9cc8('0x3')][_0x9cc8('0x4')]():'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':_0x9cc8('0x5'),'warn':_0x9cc8('0x6'),'info':_0x9cc8('0x7'),'print':_0x9cc8('0x8'),'success':_0x9cc8('0x9'),'http':'gray','verbose':_0x9cc8('0xa'),'debug':_0x9cc8('0xb'),'silly':_0x9cc8('0xc')};winston[_0x9cc8('0xd')](XC_LOG_COLORS);function getLogFileName(_0x58ade2,_0x36547d,_0x3a26c6){var _0x154855=_0x58ade2||_0x9cc8('0xe');return path[_0x9cc8('0xf')](_0x154855,util['format'](_0x9cc8('0x10'),_0x36547d,_0x3a26c6));}function formatter(_0x2817af,_0x667e5f){_0x667e5f[_0x9cc8('0x11')]=_0x667e5f[_0x9cc8('0x11')]['replace'](/@@{/g,_0x9cc8('0x12'))[_0x9cc8('0x13')](/}@@/g,_0x9cc8('0x14'))[_0x9cc8('0x13')](/@{/g,'{{')[_0x9cc8('0x13')](/}@/g,'}}');return util[_0x9cc8('0x15')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0x9cc8('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),_0x667e5f[_0x9cc8('0x16')][_0x9cc8('0x17')](),_0x2817af,_0x667e5f[_0x9cc8('0x11')]);}function fileFormat(_0x151fd6,_0x570269){_0x570269[_0x9cc8('0x11')]=_0x570269[_0x9cc8('0x11')]['replace'](/@@{/g,_0x9cc8('0x12'))[_0x9cc8('0x13')](/}@@/g,_0x9cc8('0x14'))['replace'](/@{/g,'{{')[_0x9cc8('0x13')](/}@/g,'}}');var _0x1b1b71=_0x570269['meta']&&Object['keys'](_0x570269[_0x9cc8('0x18')])[_0x9cc8('0x19')]?'\x0a\x09'+JSON[_0x9cc8('0x1a')](_0x570269['meta']):'';return util[_0x9cc8('0x15')](_0x9cc8('0x1b'),moment()[_0x9cc8('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),_0x570269[_0x9cc8('0x16')][_0x9cc8('0x17')](),_0x151fd6,_0x570269[_0x9cc8('0x11')],_0x1b1b71);}function consoleLogger(){var _0x101ad1=new winston[(_0x9cc8('0x1c'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x9cc8('0x1d'))][(_0x9cc8('0x1e'))]({'level':_0x9cc8('0x1f'),'json':![],'formatter':function(_0x3e773a){return formatter('',_0x3e773a);}})]});return _0x101ad1;}function fileLogger(_0x40f229,_0x3f6d2f){var _0xcc76b3=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x9cc8('0x1d'))][(_0x9cc8('0x20'))]({'name':util[_0x9cc8('0x15')]('%s-%s',_0x40f229,_0x9cc8('0x21')),'filename':getLogFileName(_0x3f6d2f,_0x40f229,'error'),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x26d47d){return fileFormat(_0x40f229,_0x26d47d);}}),new winston[(_0x9cc8('0x1d'))]['File']({'name':util[_0x9cc8('0x15')](_0x9cc8('0x22'),_0x40f229,debugLevel),'filename':getLogFileName(_0x3f6d2f,_0x40f229,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xf1ab75){return fileFormat(_0x40f229,_0xf1ab75);}}),new winston[(_0x9cc8('0x1d'))][(_0x9cc8('0x1e'))]({'level':'warn','json':![],'formatter':function(_0x2284cf){return fileFormat(_0x40f229,_0x2284cf);}})]});return _0xcc76b3;}exports[_0x9cc8('0x23')]=consoleLogger;exports[_0x9cc8('0x24')]=fileLogger;
\ No newline at end of file
+var _0x349a=['[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','YYYY-MM-DD\x20HH:mm:ss','toUpperCase','Logger','transports','Console','warn','File','error','%s-%s','consoleLogger','fileLogger','path','util','moment','winston','../config/environment','debugLevel','toLowerCase','red','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','level','{{{','meta','length','stringify'];(function(_0x1663ae,_0x10484a){var _0x30ffb8=function(_0x21e006){while(--_0x21e006){_0x1663ae['push'](_0x1663ae['shift']());}};_0x30ffb8(++_0x10484a);}(_0x349a,0x144));var _0xa349=function(_0x260ce2,_0x2e22b8){_0x260ce2=_0x260ce2-0x0;var _0x16b105=_0x349a[_0x260ce2];return _0x16b105;};'use strict';var path=require(_0xa349('0x0'));var util=require(_0xa349('0x1'));var moment=require(_0xa349('0x2'));var winston=require(_0xa349('0x3'));var config=require(_0xa349('0x4'));var debugLevel=config[_0xa349('0x5')]?config[_0xa349('0x5')][_0xa349('0x6')]():'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':_0xa349('0x7'),'warn':_0xa349('0x8'),'info':_0xa349('0x9'),'print':'bold\x20white','success':'bold\x20green','http':_0xa349('0xa'),'verbose':_0xa349('0xb'),'debug':_0xa349('0xc'),'silly':_0xa349('0xd')};winston[_0xa349('0xe')](XC_LOG_COLORS);function getLogFileName(_0x4ed48e,_0x19184f,_0x340bb9){var _0x2fcd68=_0x4ed48e||'/var/log/xcally';return path[_0xa349('0xf')](_0x2fcd68,util[_0xa349('0x10')](_0xa349('0x11'),_0x19184f,_0x340bb9));}function formatter(_0x31d69d,_0x1b0c0d){_0x1b0c0d[_0xa349('0x12')]=_0x1b0c0d[_0xa349('0x12')][_0xa349('0x13')](/@@{/g,'{{{')['replace'](/}@@/g,_0xa349('0x14'))[_0xa349('0x13')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0xa349('0x10')](_0xa349('0x15'),moment()[_0xa349('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),_0x1b0c0d[_0xa349('0x16')]['toUpperCase'](),_0x31d69d,_0x1b0c0d['message']);}function fileFormat(_0x2b4410,_0x3d69dc){_0x3d69dc[_0xa349('0x12')]=_0x3d69dc['message'][_0xa349('0x13')](/@@{/g,_0xa349('0x17'))[_0xa349('0x13')](/}@@/g,'}}}')[_0xa349('0x13')](/@{/g,'{{')[_0xa349('0x13')](/}@/g,'}}');var _0x4a2eab=_0x3d69dc[_0xa349('0x18')]&&Object['keys'](_0x3d69dc['meta'])[_0xa349('0x19')]?'\x0a\x09'+JSON[_0xa349('0x1a')](_0x3d69dc[_0xa349('0x18')]):'';return util[_0xa349('0x10')](_0xa349('0x1b'),moment()[_0xa349('0x10')](_0xa349('0x1c')),_0x3d69dc[_0xa349('0x16')][_0xa349('0x1d')](),_0x2b4410,_0x3d69dc['message'],_0x4a2eab);}function consoleLogger(){var _0x32cf68=new winston[(_0xa349('0x1e'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xa349('0x1f'))][(_0xa349('0x20'))]({'level':_0xa349('0x21'),'json':![],'formatter':function(_0x539a42){return formatter('',_0x539a42);}})]});return _0x32cf68;}function fileLogger(_0x589ac1,_0x406b70){var _0x30e83a=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xa349('0x1f'))][(_0xa349('0x22'))]({'name':util[_0xa349('0x10')]('%s-%s',_0x589ac1,_0xa349('0x23')),'filename':getLogFileName(_0x406b70,_0x589ac1,_0xa349('0x23')),'level':_0xa349('0x23'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x45f3ca){return fileFormat(_0x589ac1,_0x45f3ca);}}),new winston['transports']['File']({'name':util[_0xa349('0x10')](_0xa349('0x24'),_0x589ac1,debugLevel),'filename':getLogFileName(_0x406b70,_0x589ac1,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x540f26){return fileFormat(_0x589ac1,_0x540f26);}}),new winston['transports'][(_0xa349('0x20'))]({'level':_0xa349('0x21'),'json':![],'formatter':function(_0x307065){return fileFormat(_0x589ac1,_0x307065);}})]});return _0x30e83a;}exports[_0xa349('0x25')]=consoleLogger;exports[_0xa349('0x26')]=fileLogger;
\ No newline at end of file
index b0e336c..1226669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['email','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','calleridname','calleridnum','exten','vidaooApiKey','privateKey','secretaccesskey','user','pass','dsn','registry','oldPassword','length','isPlainObject','@@{','replace','}@@','includes','exports','maskSensitiveData','lodash','username','password','newPassword','apiKey','firstName','street','phone','fax'];(function(_0xb096ae,_0x439a75){var _0x1033eb=function(_0x4668e4){while(--_0x4668e4){_0xb096ae['push'](_0xb096ae['shift']());}};_0x1033eb(++_0x439a75);}(_0x2ef3,0xba));var _0x32ef=function(_0x194767,_0x1821ff){_0x194767=_0x194767-0x0;var _0xbb2abe=_0x2ef3[_0x194767];return _0xbb2abe;};var _=require(_0x32ef('0x0'));var sensitiveFields=[_0x32ef('0x1'),_0x32ef('0x2'),_0x32ef('0x3'),_0x32ef('0x4'),_0x32ef('0x5'),'lastName',_0x32ef('0x6'),_0x32ef('0x7'),'mobile',_0x32ef('0x8'),_0x32ef('0x9'),'clientId','clientSecret',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'consumerSecret','membername',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'clientEmail',_0x32ef('0x18'),'accesskeyid',_0x32ef('0x19'),'key',_0x32ef('0x1a'),_0x32ef('0x1b'),'accountSid','localstationid',_0x32ef('0x1c'),'secret',_0x32ef('0x1d'),_0x32ef('0x1e')];function maskSensitiveData(_0x93d492){const _0x54c7f5=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x93d492)){for(const _0x55bf0b in _0x93d492){if(_['isArray'](_0x93d492[_0x55bf0b])){for(let _0x13db1a=0x0;_0x13db1a<_0x93d492[_0x55bf0b][_0x32ef('0x1f')];_0x13db1a++){maskSensitiveData(_0x93d492[_0x55bf0b][_0x13db1a]);}}else if(_[_0x32ef('0x20')](_0x93d492[_0x55bf0b])){maskSensitiveData(_0x93d492[_0x55bf0b]);}else if(_['isString'](_0x93d492[_0x55bf0b])){_0x93d492[_0x55bf0b]=_0x93d492[_0x55bf0b]['replace'](/{{{/g,_0x32ef('0x21'))[_0x32ef('0x22')](/}}}/g,_0x32ef('0x23'))['replace'](/{{/g,'@{')[_0x32ef('0x22')](/}}/g,'}@');if(_[_0x32ef('0x24')](sensitiveFields,_0x55bf0b)){_0x93d492[_0x55bf0b]=_0x93d492[_0x55bf0b]['replace'](_0x54c7f5,'*');}}}}}module[_0x32ef('0x25')][_0x32ef('0x26')]=maskSensitiveData;
\ No newline at end of file
+var _0x1261=['fax','clientSecret','securityToken','accessKey','tenantId','token','channelSecret','accessToken','authToken','consumerKey','consumerSecret','calleridname','vidaooApiKey','privateKey','accesskeyid','secretaccesskey','key','user','pass','accountSid','localstationid','dsn','oldPassword','length','isPlainObject','replace','@@{','exports','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile'];(function(_0x20a90f,_0x48c8b3){var _0x1e4f80=function(_0x31bd23){while(--_0x31bd23){_0x20a90f['push'](_0x20a90f['shift']());}};_0x1e4f80(++_0x48c8b3);}(_0x1261,0x144));var _0x1126=function(_0x50b66d,_0x11c61c){_0x50b66d=_0x50b66d-0x0;var _0x41aa8e=_0x1261[_0x50b66d];return _0x41aa8e;};var _=require('lodash');var sensitiveFields=[_0x1126('0x0'),_0x1126('0x1'),_0x1126('0x2'),_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'email','clientId',_0x1126('0xa'),_0x1126('0xb'),'code',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'accessTokenSecret',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'membername',_0x1126('0x14'),'calleridnum','exten',_0x1126('0x15'),'clientEmail',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'secret','registry',_0x1126('0x1f')];function maskSensitiveData(_0x154e20){const _0x279455=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x154e20)){for(const _0x45149c in _0x154e20){if(_['isArray'](_0x154e20[_0x45149c])){for(let _0x35fe9f=0x0;_0x35fe9f<_0x154e20[_0x45149c][_0x1126('0x20')];_0x35fe9f++){maskSensitiveData(_0x154e20[_0x45149c][_0x35fe9f]);}}else if(_[_0x1126('0x21')](_0x154e20[_0x45149c])){maskSensitiveData(_0x154e20[_0x45149c]);}else if(_['isString'](_0x154e20[_0x45149c])){_0x154e20[_0x45149c]=_0x154e20[_0x45149c][_0x1126('0x22')](/{{{/g,_0x1126('0x23'))['replace'](/}}}/g,'}@@')[_0x1126('0x22')](/{{/g,'@{')[_0x1126('0x22')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x45149c)){_0x154e20[_0x45149c]=_0x154e20[_0x45149c]['replace'](_0x279455,'*');}}}}}module[_0x1126('0x24')]['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
index 40aa921..824b819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['replace','isArray','map','isPlainObject','reduce','exports','lodash','\x20}\x20}','string'];(function(_0x402803,_0x484504){var _0x369837=function(_0x2449c3){while(--_0x2449c3){_0x402803['push'](_0x402803['shift']());}};_0x369837(++_0x484504);}(_0xefda,0x96));var _0xaefd=function(_0x41601d,_0x36ad17){_0x41601d=_0x41601d-0x0;var _0x1d5fb2=_0xefda[_0x41601d];return _0x1d5fb2;};var _=require(_0xaefd('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x4ae616){return _0x4ae616==='{{'?'{\x20{\x20':_0xaefd('0x1');}function safeTemplate(_0x2ccc67){var _0x4ae272=_0x2ccc67;if(typeof _0x2ccc67===_0xaefd('0x2')){_0x4ae272=_0x2ccc67[_0xaefd('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0xaefd('0x4')](_0x2ccc67)){_0x4ae272=_0x2ccc67[_0xaefd('0x5')](function(_0x1ef6b4){return safeTemplate(_0x1ef6b4);});}else if(_[_0xaefd('0x6')](_0x2ccc67)){_0x4ae272=Object['keys'](_0x2ccc67)[_0xaefd('0x7')](function(_0x3b9736,_0x24d10c){_0x3b9736[_0x24d10c]=safeTemplate(_0x2ccc67[_0x24d10c]);return _0x3b9736;},{});}return _0x4ae272;}module[_0xaefd('0x8')]['safeTemplate']=safeTemplate;
\ No newline at end of file
+var _0x4cf8=['safeTemplate','lodash','{\x20{\x20','\x20}\x20}','string','replace','isArray','map','isPlainObject','exports'];(function(_0x23190f,_0x3f6fad){var _0x122d2b=function(_0xb26b6d){while(--_0xb26b6d){_0x23190f['push'](_0x23190f['shift']());}};_0x122d2b(++_0x3f6fad);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x4052c0,_0x4271ab){_0x4052c0=_0x4052c0-0x0;var _0x296f04=_0x4cf8[_0x4052c0];return _0x296f04;};var _=require(_0x84cf('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x2d03b6){return _0x2d03b6==='{{'?_0x84cf('0x1'):_0x84cf('0x2');}function safeTemplate(_0xae953){var _0x28455b=_0xae953;if(typeof _0xae953===_0x84cf('0x3')){_0x28455b=_0xae953[_0x84cf('0x4')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x84cf('0x5')](_0xae953)){_0x28455b=_0xae953[_0x84cf('0x6')](function(_0x5844d7){return safeTemplate(_0x5844d7);});}else if(_[_0x84cf('0x7')](_0xae953)){_0x28455b=Object['keys'](_0xae953)['reduce'](function(_0x455345,_0x56c5cc){_0x455345[_0x56c5cc]=safeTemplate(_0xae953[_0x56c5cc]);return _0x455345;},{});}return _0x28455b;}module[_0x84cf('0x8')][_0x84cf('0x9')]=safeTemplate;
\ No newline at end of file
index d25da1e..9b3396d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe88b=['info','Updating\x20app.json','writeJSON','fs-extra','../config/environment','root','resolve','server/app.json','legacy-libs','isArray','apps','name','env','NODE_PATH','string','pathExists','then','readJSON','updated'];(function(_0x179914,_0x575a92){var _0x4a75af=function(_0x464432){while(--_0x464432){_0x179914['push'](_0x179914['shift']());}};_0x4a75af(++_0x575a92);}(_0xe88b,0x1cb));var _0xbe88=function(_0x3e21f4,_0x43d310){_0x3e21f4=_0x3e21f4-0x0;var _0x40fc49=_0xe88b[_0x3e21f4];return _0x40fc49;};var fs=require(_0xbe88('0x0'));var path=require('path');var config=require(_0xbe88('0x1'));var root=config[_0xbe88('0x2')];var APP_JSON_PATH=path[_0xbe88('0x3')](root,_0xbe88('0x4'));var NODEPATH=path['resolve'](root,_0xbe88('0x5'));function setLegacyLibsNodeEnvPath(_0x5577b5){let _0x486678=![];if(Array[_0xbe88('0x6')](_0x5577b5[_0xbe88('0x7')])){var _0x319931=_0x5577b5[_0xbe88('0x7')]['findIndex'](function(_0x1e4074){return _0x1e4074[_0xbe88('0x8')]==='motion2';});if(_0x319931>-0x1){var _0xff07ec=_0x5577b5[_0xbe88('0x7')][_0x319931];if(typeof _0xff07ec[_0xbe88('0x9')][_0xbe88('0xa')]!==_0xbe88('0xb')){_0xff07ec['env'][_0xbe88('0xa')]=NODEPATH;_0x486678=!![];}}return{'appConfig':_0x5577b5,'updated':_0x486678};}}function updateAppConfig(_0x155b22){return fs[_0xbe88('0xc')](APP_JSON_PATH)[_0xbe88('0xd')](function(_0x35f361){if(_0x35f361){return fs[_0xbe88('0xe')](APP_JSON_PATH)[_0xbe88('0xd')](function(_0x3886d6){var _0xc197a5=setLegacyLibsNodeEnvPath(_0x3886d6);if(_0xc197a5[_0xbe88('0xf')]){_0x155b22[_0xbe88('0x10')](_0xbe88('0x11'));return fs[_0xbe88('0x12')](APP_JSON_PATH,_0x3886d6,{'spaces':0x2});}else{return Promise[_0xbe88('0x3')]();}});}else{return Promise[_0xbe88('0x3')]();}});}module['exports']=updateAppConfig;
\ No newline at end of file
+var _0x5f62=['pathExists','readJSON','then','info','Updating\x20app.json','writeJSON','exports','fs-extra','../config/environment','root','resolve','legacy-libs','isArray','apps','findIndex','name','env','NODE_PATH','string'];(function(_0x534e8b,_0x1f8fd9){var _0x5542cc=function(_0x1f31f2){while(--_0x1f31f2){_0x534e8b['push'](_0x534e8b['shift']());}};_0x5542cc(++_0x1f8fd9);}(_0x5f62,0x1a9));var _0x25f6=function(_0x18959e,_0x24e830){_0x18959e=_0x18959e-0x0;var _0x308aba=_0x5f62[_0x18959e];return _0x308aba;};var fs=require(_0x25f6('0x0'));var path=require('path');var config=require(_0x25f6('0x1'));var root=config[_0x25f6('0x2')];var APP_JSON_PATH=path[_0x25f6('0x3')](root,'server/app.json');var NODEPATH=path['resolve'](root,_0x25f6('0x4'));function setLegacyLibsNodeEnvPath(_0x5bcbb2){let _0x18b245=![];if(Array[_0x25f6('0x5')](_0x5bcbb2[_0x25f6('0x6')])){var _0x1fa0e9=_0x5bcbb2[_0x25f6('0x6')][_0x25f6('0x7')](function(_0x295492){return _0x295492[_0x25f6('0x8')]==='motion2';});if(_0x1fa0e9>-0x1){var _0x2da051=_0x5bcbb2[_0x25f6('0x6')][_0x1fa0e9];if(typeof _0x2da051[_0x25f6('0x9')][_0x25f6('0xa')]!==_0x25f6('0xb')){_0x2da051[_0x25f6('0x9')][_0x25f6('0xa')]=NODEPATH;_0x18b245=!![];}}return{'appConfig':_0x5bcbb2,'updated':_0x18b245};}}function updateAppConfig(_0x344d17){return fs[_0x25f6('0xc')](APP_JSON_PATH)['then'](function(_0xde74bf){if(_0xde74bf){return fs[_0x25f6('0xd')](APP_JSON_PATH)[_0x25f6('0xe')](function(_0x372df7){var _0x4c3daf=setLegacyLibsNodeEnvPath(_0x372df7);if(_0x4c3daf['updated']){_0x344d17[_0x25f6('0xf')](_0x25f6('0x10'));return fs[_0x25f6('0x11')](APP_JSON_PATH,_0x372df7,{'spaces':0x2});}else{return Promise[_0x25f6('0x3')]();}});}else{return Promise[_0x25f6('0x3')]();}});}module[_0x25f6('0x12')]=updateAppConfig;
\ No newline at end of file
similarity index 69%
rename from snippet/3.8.0/assets/fonts/db15fb94f19c4e36b451.woff
rename to snippet/3.5.0/assets/fonts/db15fb94f19c4e36b451.woff
index 41ea1e237f964f8d842d946e1ae9dacc703e4322..c06e349b6d6d8998aac4ac60c76a74dbc02efd17 100644 (file)
@@ -26,4 +26,4 @@
                 status != 'online' &&
                 status != 'offline' &&
                 status != 'unmanaged'
-              " ng-click="vm.close(); $event.stopPropagation();"><i class="mdi mdi-close mdi-light" ng-click="vm.close(); $event.stopPropagation();"></i></md-button><div ng-if="settings.alignment == 'bottom_right'" aria-label="Reduce"><i class="mdi mdi-light mdi-light" ng-class="layout.up === true ? 'mdi-chevron-down' : 'mdi-chevron-up'"></i></div></div></md-toolbar><md-content class="chat-content"><ui-view></ui-view></md-content></div></div><script>window['buildInfo'] = {"name":"motion-chat","version":"3.8.0","shortHash":"152f3d15","branch":"develop","tag":"","committedOn":"2022-11-21T16:33:42.000Z","buildDate":"2022-11-23T17:14:26.317Z"};</script><script src="scripts/app.js"></script><script src="scripts/runtime.js"></script><script src="scripts/vendor-index.js"></script><script src="scripts/vendor-angular-76f2ed34.js"></script><script src="scripts/vendor-angular-58d021f3.js"></script><script src="scripts/vendor-ng-embed.js"></script><script src="scripts/vendor-moment.js"></script><script src="scripts/vendor-jquery.js"></script><script src="scripts/vendor-jquery.textcomplete.js"></script><script src="scripts/vendor-emojionearea.js"></script><script src="scripts/vendor-emojione.js"></script><script src="scripts/vendor-angular-sanitize.js"></script><script src="scripts/vendor-angular-resource.js"></script><script src="scripts/vendor-angular-messages.js"></script><script src="scripts/vendor-angular-material.js"></script><script src="scripts/vendor-angular-local-storage.js"></script><script src="scripts/vendor-angular-animate.js"></script><script src="scripts/vendor-urlMatcher.js"></script><script src="scripts/vendor-transition.js"></script><script src="scripts/vendor-stateService.js"></script><script src="scripts/vendor-stateDirectives.js"></script><script src="scripts/vendor-flow.js"></script><script src="scripts/chat.js"></script></body></html>
\ No newline at end of file
+              " ng-click="vm.close(); $event.stopPropagation();"><i class="mdi mdi-close mdi-light" ng-click="vm.close(); $event.stopPropagation();"></i></md-button><div ng-if="settings.alignment == 'bottom_right'" aria-label="Reduce"><i class="mdi mdi-light mdi-light" ng-class="layout.up === true ? 'mdi-chevron-down' : 'mdi-chevron-up'"></i></div></div></md-toolbar><md-content class="chat-content"><ui-view></ui-view></md-content></div></div><script>window['buildInfo'] = {"name":"motion-chat","version":"3.5.0","shortHash":"ca0cc42","branch":"develop","tag":"","committedOn":"2022-10-12T16:22:10.000Z","buildDate":"2022-10-21T09:01:40.793Z"};</script><script src="scripts/app.js"></script><script src="scripts/runtime.js"></script><script src="scripts/vendor-index.js"></script><script src="scripts/vendor-angular-76f2ed34.js"></script><script src="scripts/vendor-angular-58d021f3.js"></script><script src="scripts/vendor-ng-embed.js"></script><script src="scripts/vendor-moment.js"></script><script src="scripts/vendor-jquery.js"></script><script src="scripts/vendor-jquery.textcomplete.js"></script><script src="scripts/vendor-emojionearea.js"></script><script src="scripts/vendor-emojione.js"></script><script src="scripts/vendor-angular-sanitize.js"></script><script src="scripts/vendor-angular-resource.js"></script><script src="scripts/vendor-angular-messages.js"></script><script src="scripts/vendor-angular-material.js"></script><script src="scripts/vendor-angular-local-storage.js"></script><script src="scripts/vendor-angular-animate.js"></script><script src="scripts/vendor-urlMatcher.js"></script><script src="scripts/vendor-transition.js"></script><script src="scripts/vendor-stateService.js"></script><script src="scripts/vendor-stateDirectives.js"></script><script src="scripts/vendor-flow.js"></script><script src="scripts/chat.js"></script></body></html>
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..49ad0c7b7f75e9cf689e34ec082d77f1db053400
--- /dev/null
@@ -0,0 +1,3 @@
+/*! For license information please see chat.js.LICENSE.txt */
+(self.webpackChunkmotion_chat=self.webpackChunkmotion_chat||[]).push([["chat"],{"./node_modules/@flowjs/ng-flow/dist/ng-flow.js":(e,t,n)=>{var o=n("./node_modules/@flowjs/flow.js/src/flow.js");angular.module("flow.provider",[]).provider("flowFactory",(function(){"use strict";this.defaults={},this.factory=function(e){return new o(e)},this.events=[],this.on=function(e,t){this.events.push([e,t])},this.$get=function(){var e=this.factory,t=this.defaults,n=this.events;return{create:function(o){var r=e(angular.extend({},t,o));return angular.forEach(n,(function(e){r.on(e[0],e[1])})),r}}}})),angular.module("flow.init",["flow.provider"]).controller("flowCtrl",["$scope","$attrs","$parse","flowFactory",function(e,t,n,o){var r=angular.extend({},e.$eval(t.flowInit)),s=e.$eval(t.flowObject)||o.create(r),a=function(t){var n=Array.prototype.slice.call(arguments);n.shift();var o=e.$broadcast.apply(e,["flow::"+t,s].concat(n));if({progress:1,filesSubmitted:1,fileSuccess:1,fileError:1,complete:1}[t]&&e.$applyAsync(),o.defaultPrevented)return!1};s.on("catchAll",a),e.$on("$destroy",(function(){s.off("catchAll",a)})),e.$flow=s,t.hasOwnProperty("flowName")&&(n(t.flowName).assign(e,s),e.$on("$destroy",(function(){n(t.flowName).assign(e)})))}]).directive("flowInit",[function(){return{scope:!0,controller:"flowCtrl"}}]),angular.module("flow.btn",["flow.init"]).directive("flowBtn",[function(){return{restrict:"EA",scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.hasOwnProperty("flowDirectory"),r=n.hasOwnProperty("flowSingleFile"),s=n.hasOwnProperty("flowAttrs")&&e.$eval(n.flowAttrs);e.$flow.assignBrowse(t,o,r,s)}}}]),angular.module("flow.dragEvents",["flow.init"]).directive("flowPreventDrop",(function(){return{scope:!1,link:function(e,t,n){t.bind("drop dragover",(function(e){e.preventDefault()}))}}})).directive("flowDragEnter",["$timeout",function(e){return{scope:!1,link:function(t,n,o){var r,s=!1;n.bind("dragover",(function(n){var a,i,d;i=!1,d=(a=n).dataTransfer||a.originalEvent.dataTransfer,angular.forEach(d&&d.types,(function(e){"Files"===e&&(i=!0)})),i&&(s||(t.$apply(o.flowDragEnter),s=!0),e.cancel(r),n.preventDefault())})),n.bind("dragleave drop",(function(n){e.cancel(r),r=e((function(){t.$eval(o.flowDragLeave),r=null,s=!1}),100)}))}}}]),angular.module("flow.drop",["flow.init"]).directive("flowDrop",(function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){function o(){e.$flow.assignDrop(t)}n.flowDropEnabled?e.$watch(n.flowDropEnabled,(function(n){n?o():e.$flow.unAssignDrop(t)})):o()}}})),function(e){"use strict";var t=e.module("flow.events",["flow.init"]);e.forEach({fileSuccess:["$file","$message"],fileProgress:["$file"],fileAdded:["$file","$event"],filesAdded:["$files","$event"],filesSubmitted:["$files","$event"],fileRetry:["$file"],fileRemoved:["$file"],fileError:["$file","$message"],uploadStart:[],complete:[],progress:[],error:["$message","$file"]},(function(n,o){var r,s="flow"+((r=o).charAt(0).toUpperCase()+r.slice(1));"flowUploadStart"==s&&(s="flowUploadStarted"),t.directive(s,[function(){return{require:"^flowInit",controller:["$scope","$attrs",function(t,r){t.$on("flow::"+o,(function(){var o=Array.prototype.slice.call(arguments),a=o.shift();if(t.$flow===o.shift()){var i={};e.forEach(n,(function(e,t){i[e]=o[t]})),!1===t.$eval(r[s],i)&&a.preventDefault()}}))}]}}])}))}(angular),angular.module("flow.img",["flow.init"]).directive("flowImg",[function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.flowImg;e.$watch(o,(function(t){if(t){var o=new FileReader;o.readAsDataURL(t.file),o.onload=function(t){e.$apply((function(){n.$set("src",t.target.result)}))}}}))}}}]),angular.module("flow.transfers",["flow.init"]).directive("flowTransfers",[function(){return{scope:!0,require:"^flowInit",link:function(e){e.transfers=e.$flow.files}}}]),angular.module("flow",["flow.provider","flow.init","flow.events","flow.btn","flow.drop","flow.transfers","flow.img","flow.dragEvents"])},"./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js":(e,t,n)=>{"use strict";var o,r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),a=n("./node_modules/@uirouter/angularjs/lib-esm/services.js"),i=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js");function d(e,t,n,o,i){var d=(0,r.parse)("viewDecl.controllerAs"),u=(0,r.parse)("viewDecl.resolveAs");return{restrict:"ECA",priority:-400,compile:function(o){var m=o.html();return o.empty(),function(o,_){var c=_.data("$uiView");if(!c)return _.html(m),void e(_.contents())(o);var h=c.$cfg||{viewDecl:{},getTemplate:r.noop},f=h.path&&new r.ResolveContext(h.path);_.html(h.getTemplate(_,f)||m),r.trace.traceUIViewFill(c.$uiView,_.html());var p=e(_.contents()),M=h.controller,y=d(h),L=u(h),g=f&&(0,a.D)(f);if(o[L]=g,M){var Y=t(M,(0,r.extend)({},g,{$scope:o,$element:_}));y&&(o[y]=Y,o[y][L]=g),_.data("$ngControllerController",Y),_.children().data("$ngControllerController",Y),l(i,n,Y,o,h)}if((0,r.isString)(h.component))var v=(0,r.kebobString)(h.component),k=new RegExp("^(x-|data-)?"+v+"$","i"),j=o.$watch((function(){var e=[].slice.call(_[0].children).filter((function(e){return e&&e.tagName&&k.exec(e.tagName)}));return e&&s.ng.element(e).data("$"+h.component+"Controller")}),(function(e){e&&(l(i,n,e,o,h),j())}));p(o)}}}}o=["$view","$animate","$uiViewScroll","$interpolate","$q",function(e,t,n,o,a){var d={$cfg:{viewDecl:{$context:e._pluginapi._rootViewContext()}},$uiView:{}},u={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(m,l,_){return function(m,l,c){var h,f,p,M,y=c.onload||"",L=c.autoscroll,g=function(e,n,o){s.ng.version.minor>2?t.enter(e,null,n).then(o):t.enter(e,null,n,o)},Y=function(e,n){s.ng.version.minor>2?t.leave(e).then(n):t.leave(e,n)},v=l.inheritedData("$uiView")||d,k=o(c.uiView||c.name||"")(m)||"$default",j={$type:"ng1",id:u.count++,name:k,fqn:v.$uiView.fqn?v.$uiView.fqn+"."+k:k,config:null,configUpdated:function(e){(!e||e instanceof i.qO)&&(M!==e&&(r.trace.traceUIViewConfigUpdated(j,e&&e.viewDecl&&e.viewDecl.$context),M=e,b(e)))},get creationContext(){var e=(0,r.parse)("$cfg.viewDecl.$context")(v),t=(0,r.parse)("$uiView.creationContext")(v);return e||t}};r.trace.traceUIViewEvent("Linking",j),l.data("$uiView",{$uiView:j}),b();var w=e.registerUIView(j);function b(e){var t=m.$new(),o=a.defer(),s=a.defer(),i={$cfg:e,$uiView:j},d={$animEnter:o.promise,$animLeave:s.promise,$$animLeave:s};t.$emit("$viewContentLoading",k);var u=_(t,(function(e){e.data("$uiViewAnim",d),e.data("$uiView",i),g(e,l,(function(){o.resolve(),p&&p.$emit("$viewContentAnimationEnded"),((0,r.isDefined)(L)&&!L||m.$eval(L))&&n(e)})),function(){if(h&&(r.trace.traceUIViewEvent("Removing (previous) el",h.data("$uiView")),h.remove(),h=null),p&&(r.trace.traceUIViewEvent("Destroying scope",j),p.$destroy(),p=null),f){var e=f.data("$uiViewAnim");r.trace.traceUIViewEvent("Animate out",e),Y(f,(function(){e.$$animLeave.resolve(),h=null})),h=f,f=null}}()}));f=u,(p=t).$emit("$viewContentLoaded",e||M),p.$eval(y)}m.$on("$destroy",(function(){r.trace.traceUIViewEvent("Destroying/Unregistering",j),w()}))}}};return u}],d.$inject=["$compile","$controller","$transitions","$view","$q"];var u="function"==typeof s.ng.module("ui.router").component,m=0;function l(e,t,n,o,s){!(0,r.isFunction)(n.$onInit)||(s.viewDecl.component||s.viewDecl.componentProvider)&&u||n.$onInit();var a=(0,r.tail)(s.path).state.self,i={bind:n};if((0,r.isFunction)(n.uiOnParamsChanged)){var d=new r.ResolveContext(s.path).getResolvable("$transition$").data;o.$on("$destroy",t.onSuccess({},(function(e){if(e!==d&&-1===e.exiting().indexOf(a)){var t=e.params("to"),o=e.params("from"),s=function(e){return e.paramSchema},i=e.treeChanges("to").map(s).reduce(r.unnestR,[]),u=e.treeChanges("from").map(s).reduce(r.unnestR,[]),m=i.filter((function(e){var n=u.indexOf(e);return-1===n||!u[n].type.equals(t[e.id],o[e.id])}));if(m.length){var l=m.map((function(e){return e.id})),_=(0,r.filter)(t,(function(e,t){return-1!==l.indexOf(t)}));n.uiOnParamsChanged(_,e)}}}),i))}if((0,r.isFunction)(n.uiCanExit)){var l=m++,_="_uiCanExitIds",c=function(e){return!!e&&(e[_]&&!0===e[_][l]||c(e.redirectedFrom()))},h={exiting:a.name};o.$on("$destroy",t.onBefore(h,(function(t){var o,r=t[_]=t[_]||{};return c(t)||(o=e.when(n.uiCanExit(t))).then((function(e){return r[l]=!1!==e})),o}),i))}}s.ng.module("ui.router.state").directive("uiView",o),s.ng.module("ui.router.state").directive("uiView",d)},"./node_modules/@uirouter/angularjs/lib-esm/interface.js":()=>{},"./node_modules/@uirouter/angularjs/lib-esm/services.js":(e,t,n)=>{"use strict";n.d(t,{D:()=>k});var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js"),a=function(){function e(){var e=this;this._useHttp=o.ng.version.minor<3,this.$get=["$http","$templateCache","$injector",function(t,n,o){return e.$templateRequest=o.has&&o.has("$templateRequest")&&o.get("$templateRequest"),e.$http=t,e.$templateCache=n,e}]}return e.prototype.useHttpService=function(e){this._useHttp=e},e.prototype.fromConfig=function(e,t,n){var o=function(e){return r.services.$q.when(e).then((function(e){return{template:e}}))},s=function(e){return r.services.$q.when(e).then((function(e){return{component:e}}))};return(0,r.isDefined)(e.template)?o(this.fromString(e.template,t)):(0,r.isDefined)(e.templateUrl)?o(this.fromUrl(e.templateUrl,t)):(0,r.isDefined)(e.templateProvider)?o(this.fromProvider(e.templateProvider,t,n)):(0,r.isDefined)(e.component)?s(e.component):(0,r.isDefined)(e.componentProvider)?s(this.fromComponentProvider(e.componentProvider,t,n)):o("<ui-view></ui-view>")},e.prototype.fromString=function(e,t){return(0,r.isFunction)(e)?e(t):e},e.prototype.fromUrl=function(e,t){return(0,r.isFunction)(e)&&(e=e(t)),null==e?null:this._useHttp?this.$http.get(e,{cache:this.$templateCache,headers:{Accept:"text/html"}}).then((function(e){return e.data})):this.$templateRequest(e)},e.prototype.fromProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.fromComponentProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.makeComponentTemplate=function(e,t,n,s){s=s||{};var a=o.ng.version.minor>=3?"::":"",d=function(e){var t=(0,r.kebobString)(e);return/^(x|data)-/.exec(t)?"x-"+t:t},u=function(e){var t=r.services.$injector.get(e+"Directive");if(!t||!t.length)throw new Error("Unable to find component named '"+e+"'");return t.map(i).reduce(r.unnestR,[])}(n).map((function(n){var o=n.name,i=n.type,u=d(o);if(e.attr(u)&&!s[o])return u+"='"+e.attr(u)+"'";var m=s[o]||o;if("@"===i)return u+"='{{"+a+"$resolve."+m+"}}'";if("&"===i){var l=t.getResolvable(m),_=l&&l.data,c=_&&r.services.$injector.annotate(_)||[];return u+"='$resolve."+m+((0,r.isArray)(_)?"["+(_.length-1)+"]":"")+"("+c.join(",")+")'"}return u+"='"+a+"$resolve."+m+"'"})).join(" "),m=d(n);return"<"+m+" "+u+"></"+m+">"},e}(),i=function(e){return(0,r.isObject)(e.bindToController)?d(e.bindToController):d(e.scope)},d=function(e){return Object.keys(e||{}).map((function(t){return[t,/^([=<@&])[?]?(.*)/.exec(e[t])]})).filter((function(e){return(0,r.isDefined)(e)&&(0,r.isArray)(e[1])})).map((function(e){return{name:e[1][2]||e[0],type:e[1][1]}}))},u=n("./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js"),m=function(e){return function(t){var n=t[e],o="onExit"===e?"from":"to";return n?function(e,t){var s=new r.ResolveContext(e.treeChanges(o)).subContext(t.$$state()),a=(0,r.extend)(k(s),{$state$:t,$transition$:e});return r.services.$injector.invoke(n,this,a)}:void 0}},l=function(){function e(e){this._urlListeners=[],this.$locationProvider=e;var t=(0,r.val)(e);(0,r.createProxyFunctions)(t,this,t,["hashPrefix"])}return e.monkeyPatchPathParameterType=function(e){var t=e.urlMatcherFactory.type("path");t.encode=function(e){return null!=e?e.toString().replace(/(~|\/)/g,(function(e){return{"~":"~~","/":"~2F"}[e]})):e},t.decode=function(e){return null!=e?e.toString().replace(/(~~|~2F)/g,(function(e){return{"~~":"~","~2F":"/"}[e]})):e}},e.prototype.dispose=function(){},e.prototype.onChange=function(e){var t=this;return this._urlListeners.push(e),function(){return(0,r.removeFrom)(t._urlListeners)(e)}},e.prototype.html5Mode=function(){var e=this.$locationProvider.html5Mode();return(e=(0,r.isObject)(e)?e.enabled:e)&&this.$sniffer.history},e.prototype.baseHref=function(){return this._baseHref||(this._baseHref=this.$browser.baseHref()||this.$window.location.pathname)},e.prototype.url=function(e,t,n){return void 0===t&&(t=!1),(0,r.isDefined)(e)&&this.$location.url(e),t&&this.$location.replace(),n&&this.$location.state(n),this.$location.url()},e.prototype._runtimeServices=function(e,t,n,o,s){var a=this;this.$location=t,this.$sniffer=n,this.$browser=o,this.$window=s,e.$on("$locationChangeSuccess",(function(e){return a._urlListeners.forEach((function(t){return t(e)}))}));var i=(0,r.val)(t);(0,r.createProxyFunctions)(i,this,i,["replace","path","search","hash"]),(0,r.createProxyFunctions)(i,this,i,["port","protocol","host"])},e}(),_=n("./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js");o.ng.module("ui.router.angular1",[]);var c=o.ng.module("ui.router.init",["ng"]),h=o.ng.module("ui.router.util",["ui.router.init"]),f=o.ng.module("ui.router.router",["ui.router.util"]),p=o.ng.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),M=o.ng.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),y=(o.ng.module("ui.router.compat",["ui.router"]),null);function L(e){(y=this.router=new r.UIRouter).stateProvider=new u.X(y.stateRegistry,y.stateService),y.stateRegistry.decorator("views",s.LB),y.stateRegistry.decorator("onExit",m("onExit")),y.stateRegistry.decorator("onRetain",m("onRetain")),y.stateRegistry.decorator("onEnter",m("onEnter")),y.viewService._pluginapi._viewConfigFactory("ng1",(0,s.OB)()),y.urlService.config._decodeParams=!1;var t=y.locationService=y.locationConfig=new l(e);function n(e,n,o,r,s,a,i){return t._runtimeServices(s,e,r,n,o),delete y.router,delete y.$get,y}return l.monkeyPatchPathParameterType(y),y.router=y,y.$get=n,n.$inject=["$location","$browser","$window","$sniffer","$rootScope","$http","$templateCache"],y}L.$inject=["$locationProvider"];var g=function(e){return["$uiRouterProvider",function(t){var n=t.router[e];return n.$get=function(){return n},n}]};function Y(e,t,n){if(r.services.$injector=e,r.services.$q=t,!Object.prototype.hasOwnProperty.call(e,"strictDi"))try{e.invoke((function(e){}))}catch(t){e.strictDi=!!/strict mode/.exec(t&&t.toString())}n.stateRegistry.get().map((function(e){return e.$$state().resolvables})).reduce(r.unnestR,[]).filter((function(e){return"deferred"===e.deps})).forEach((function(t){return t.deps=e.annotate(t.resolveFn,e.strictDi)}))}function v(e){e.$watch((function(){r.trace.approximateDigests++}))}Y.$inject=["$injector","$q","$uiRouter"],v.$inject=["$rootScope"],c.provider("$uiRouter",L),f.provider("$urlRouter",["$uiRouterProvider",function(e){return e.urlRouterProvider=new _.L(e)}]),h.provider("$urlService",g("urlService")),h.provider("$urlMatcherFactory",["$uiRouterProvider",function(){return y.urlMatcherFactory}]),h.provider("$templateFactory",(function(){return new a})),p.provider("$stateRegistry",g("stateRegistry")),p.provider("$uiRouterGlobals",g("globals")),p.provider("$transitions",g("transitionService")),p.provider("$state",["$uiRouterProvider",function(){return(0,r.extend)(y.stateProvider,{$get:function(){return y.stateService}})}]),p.factory("$stateParams",["$uiRouter",function(e){return e.globals.params}]),M.factory("$view",(function(){return y.viewService})),M.service("$trace",(function(){return r.trace})),M.run(v),h.run(["$urlMatcherFactory",function(e){}]),p.run(["$state",function(e){}]),f.run(["$urlRouter",function(e){}]),c.run(Y);var k=function(e){return e.getTokens().filter(r.isString).map((function(t){var n=e.getResolvable(t);return[t,"NOWAIT"===e.getPolicy(n).async?n.promise:n.data]})).reduce(r.applyPairs,{})}},"./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js");function r(e){var t=function(t,n,o){return e.is(t,n,o)};return t.$stateful=!0,t}function s(e){var t=function(t,n,o){return e.includes(t,n,o)};return t.$stateful=!0,t}r.$inject=["$state"],s.$inject=["$state"],o.ng.module("ui.router.state").filter("isState",r).filter("includedByState",s)},"./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(t,n){this.stateRegistry=t,this.stateService=n,(0,o.createProxyFunctions)((0,o.val)(e.prototype),this,(0,o.val)(this))}return e.prototype.decorator=function(e,t){return this.stateRegistry.decorator(e,t)||this},e.prototype.state=function(e,t){return(0,o.isObject)(e)?t=e:t.name=e,this.stateRegistry.register(t),this},e.prototype.onInvalid=function(e){return this.stateService.onInvalid(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js":(e,t,n)=>{"use strict";n.d(t,{OB:()=>r,LB:()=>a,qO:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/index.js");function r(){var e=null;return function(t,n){return e=e||o.services.$injector.get("$templateFactory"),[new d(t,n,e)]}}var s=function(e,t){return e.reduce((function(e,n){return e||(0,o.isDefined)(t[n])}),!1)};function a(e){if(!e.parent)return{};var t=["component","bindings","componentProvider"],n=["templateProvider","templateUrl","template","notify","async"].concat(["controller","controllerProvider","controllerAs","resolveAs"]),r=t.concat(n);if((0,o.isDefined)(e.views)&&s(r,e))throw new Error("State '"+e.name+"' has a 'views' object. It cannot also have \"view properties\" at the state level.  Move the following properties into a view (in the 'views' object):  "+r.filter((function(t){return(0,o.isDefined)(e[t])})).join(", "));var a={},i=e.views||{$default:(0,o.pick)(e,r)};return(0,o.forEach)(i,(function(r,i){if(i=i||"$default",(0,o.isString)(r)&&(r={component:r}),r=(0,o.extend)({},r),s(t,r)&&s(n,r))throw new Error("Cannot combine: "+t.join("|")+" with: "+n.join("|")+" in stateview: '"+i+"@"+e.name+"'");r.resolveAs=r.resolveAs||"$resolve",r.$type="ng1",r.$context=e,r.$name=i;var d=o.ViewService.normalizeUIViewTarget(r.$context,r.$name);r.$uiViewName=d.uiViewName,r.$uiViewContextAnchor=d.uiViewContextAnchor,a[i]=r})),a}var i=0,d=function(){function e(e,t,n){var o=this;this.path=e,this.viewDecl=t,this.factory=n,this.$id=i++,this.loaded=!1,this.getTemplate=function(e,t){return o.component?o.factory.makeComponentTemplate(e,t,o.component,o.viewDecl.bindings):o.template}}return e.prototype.load=function(){var e=this,t=o.services.$q,n=new o.ResolveContext(this.path),r=this.path.reduce((function(e,t){return(0,o.extend)(e,t.paramValues)}),{}),s={template:t.when(this.factory.fromConfig(this.viewDecl,r,n)),controller:t.when(this.getController(n))};return t.all(s).then((function(t){return o.trace.traceViewServiceEvent("Loaded",e),e.controller=t.controller,(0,o.extend)(e,t.template),e}))},e.prototype.getController=function(e){var t=this.viewDecl.controllerProvider;if(!(0,o.isInjectable)(t))return this.viewDecl.controller;var n=o.services.$injector.annotate(t),r=(0,o.isArray)(t)?(0,o.tail)(t):t;return new o.Resolvable("",r,n).get(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(e){this.router=e}return e.injectableHandler=function(e,t){return function(n){return o.services.$injector.invoke(t,null,{$match:n,$stateParams:e.globals.params})}},e.prototype.$get=function(){var e=this.router.urlService;return this.router.urlRouter.update(!0),e.interceptDeferred||e.listen(),this.router.urlRouter},e.prototype.rule=function(e){var t=this;if(!(0,o.isFunction)(e))throw new Error("'rule' must be a function");var n=new o.BaseUrlRule((function(){return e(o.services.$injector,t.router.locationService)}),o.identity);return this.router.urlService.rules.rule(n),this},e.prototype.otherwise=function(e){var t=this,n=this.router.urlService.rules;if((0,o.isString)(e))n.otherwise(e);else{if(!(0,o.isFunction)(e))throw new Error("'rule' must be a string or function");n.otherwise((function(){return e(o.services.$injector,t.router.locationService)}))}return this},e.prototype.when=function(t,n){return((0,o.isArray)(n)||(0,o.isFunction)(n))&&(n=e.injectableHandler(this.router,n)),this.router.urlService.rules.when(t,n),this},e.prototype.deferIntercept=function(e){this.router.urlService.deferIntercept(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/angularjs/lib-esm/angular.js").ng.module("ui.router.state").provider("$uiViewScroll",(function(){var e=!1;this.useAnchorScroll=function(){e=!0},this.$get=["$anchorScroll","$timeout",function(t,n){return e?t:function(e){return n((function(){e[0].scrollIntoView()}),0,!1)}}]}))},"./node_modules/@uirouter/core/lib-esm/common/common.js":(e,t,n)=>{"use strict";n.d(t,{Jz:()=>i,xZ:()=>u,Qs:()=>m,Ed:()=>l,l7:()=>_,fS:()=>c,yR:()=>h,ZT:()=>f,WR:()=>p,ED:()=>M,d3:()=>y,nA:()=>L,LH:()=>g,Wk:()=>Y,ce:()=>v,LQ:()=>k,mX:()=>j,ei:()=>w,CE:()=>b,hX:()=>D,sE:()=>T,js:()=>S,UI:()=>H,VO:()=>x,XC:()=>E,o8:()=>P,M7:()=>O,FN:()=>$,Ez:()=>A,v_:()=>R,UW:()=>F,sp:()=>W,ym:()=>C,bb:()=>I,Gb:()=>z,JG:()=>J,HX:()=>V,jv:()=>N});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),a=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o},i="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g||void 0,d=i.angular||{},u=d.fromJson||JSON.parse.bind(JSON),m=d.toJson||JSON.stringify.bind(JSON),l=d.forEach||function(e,t,n){if((0,o.kJ)(e))return e.forEach(t,n);Object.keys(e).forEach((function(n){return t(e[n],n)}))},_=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];if(n)for(var o=Object.keys(n),r=0;r<o.length;r++)e[o[r]]=n[o[r]]}return e},c=d.equals||function e(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!=t&&n!=n)return!0;var s=typeof t;if(s!==typeof n||"object"!==s)return!1;var a,i,d=[t,n];if((0,r.$6)(o.kJ)(d))return i=n,(a=t).length===i.length&&C(a,i).reduce((function(t,n){return t&&e(n[0],n[1])}),!0);if((0,r.$6)(o.J_)(d))return t.getTime()===n.getTime();if((0,r.$6)(o.Kj)(d))return t.toString()===n.toString();if((0,r.$6)(o.mf)(d))return!0;if([o.mf,o.kJ,o.J_,o.Kj].map(r.Yj).reduce((function(e,t){return e||!!t(d)}),!1))return!1;var u={};for(var m in t){if(!e(t[m],n[m]))return!1;u[m]=!0}for(var m in n)if(!u[m])return!1;return!0};function h(e){return e}function f(){}function p(e,t,n,o,r){void 0===r&&(r=!1);var s=function(t){return e()[t].bind(n())};return(o=o||Object.keys(e())).reduce((function(e,n){var o;return e[n]=r?(o=n,function(){return t[o]=s(o),t[o].apply(null,arguments)}):s(n),e}),t)}var M=function(e,t){return _(Object.create(e),t)},y=(0,r.WA)((function(e,t){return-1!==e.indexOf(t)})),L=(0,r.WA)((function(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),e})),g=(0,r.WA)((function(e,t){return e.push(t),t})),Y=function(e){return e.slice().forEach((function(t){"function"==typeof t&&t(),L(e,t)}))};function v(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var o=_.apply(void 0,a([{}],t.reverse()));return _(o,w(e||{},Object.keys(o)))}var k=function(e,t){return _(e,t)};function j(e,t){var n=[];for(var o in e.path){if(e.path[o]!==t.path[o])break;n.push(e.path[o])}return n}function w(e,t){var n={};for(var o in e)-1!==t.indexOf(o)&&(n[o]=e[o]);return n}function b(e,t){return Object.keys(e).filter((0,r.ff)(y(t))).reduce((function(t,n){return t[n]=e[n],t}),{})}function D(e,t){var n=(0,o.kJ)(e),r=n?[]:{},s=n?function(e){return r.push(e)}:function(e,t){return r[t]=e};return l(e,(function(e,n){t(e,n)&&s(e,n)})),r}function T(e,t){var n;return l(e,(function(e,o){n||t(e,o)&&(n=e)})),n}var S=H;function H(e,t,n){return n=n||((0,o.kJ)(e)?[]:{}),l(e,(function(e,o){return n[o]=t(e,o)})),n}var x=function(e){return Object.keys(e).map((function(t){return e[t]}))},E=function(e,t){return e&&t},P=function(e,t){return e||t},O=function(e,t){return e.concat(t)},$=function(e,t){return(0,o.kJ)(t)?e.concat(t.reduce($,[])):A(e,t)};function A(e,t){return e.push(t),e}var R=function(e,t){return y(e,t)?e:A(e,t)},F=function(e){return e.reduce(O,[])},W=function(e,t){return void 0===t&&(t="assert failure"),function(n){var r=e(n);if(!r)throw new Error((0,o.mf)(t)?t(n):t);return r}};function C(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(0===e.length)return[];for(var n=e.reduce((function(e,t){return Math.min(t.length,e)}),9007199254740991),o=[],r=function(t){switch(e.length){case 1:o.push([e[0][t]]);break;case 2:o.push([e[0][t],e[1][t]]);break;case 3:o.push([e[0][t],e[1][t],e[2][t]]);break;case 4:o.push([e[0][t],e[1][t],e[2][t],e[3][t]]);break;default:o.push(e.map((function(e){return e[t]})))}},s=0;s<n;s++)r(s);return o}function I(e,t){var n,r;if((0,o.kJ)(t)&&(n=t[0],r=t[1]),!(0,o.HD)(n))throw new Error("invalid parameters to applyPairs");return e[n]=r,e}function z(e){return e.length&&e[e.length-1]||void 0}function J(e,t){return t&&Object.keys(t).forEach((function(e){return delete t[e]})),t||(t={}),_(t,e)}var V=function(e){return e.catch((function(e){return 0}))&&e},N=function(e){return V(s.u.$q.reject(e))}},"./node_modules/@uirouter/core/lib-esm/common/coreservices.js":(e,t,n)=>{"use strict";n.d(t,{H:()=>o,u:()=>r});var o=function(e,t){return t.reduce((function(t,n){return t[n]=(o=e+"."+n+"()",function(){throw new Error("No implementation for "+o+". The framework specific code did not implement this method.")}),t;var o}),{})},r={$q:void 0,$injector:void 0}},"./node_modules/@uirouter/core/lib-esm/common/glob.js":(e,t,n)=>{"use strict";n.d(t,{r:()=>o});var o=function(){function e(e){this.text=e,this.glob=e.split(".");var t=this.text.split(".").map((function(e){return"**"===e?"(?:|(?:\\.[^.]*)*)":"*"===e?"\\.[^.]*":"\\."+e})).join("");this.regexp=new RegExp("^"+t+"$")}return e.is=function(e){return!!/[!,*]+/.exec(e)},e.fromString=function(t){return e.is(t)?new e(t):null},e.prototype.matches=function(e){return this.regexp.test("."+e)},e}()},"./node_modules/@uirouter/core/lib-esm/common/hof.js":(e,t,n)=>{"use strict";n.d(t,{WA:()=>r,zG:()=>a,vg:()=>i,OH:()=>d,Qc:()=>u,ff:()=>m,xD:()=>l,or:()=>_,$6:()=>c,Yj:()=>h,is:()=>f,P0:()=>p,uj:()=>M});var o=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o};function r(e){return function t(){if(arguments.length>=e.length)return e.apply(this,arguments);var n=Array.prototype.slice.call(arguments);return t.bind.apply(t,o([this],n))}}function s(){var e=arguments,t=e.length-1;return function(){for(var n=t,o=e[t].apply(this,arguments);n--;)o=e[n].call(this,o);return o}}function a(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return s.apply(null,[].slice.call(arguments).reverse())}var i=function(e){return function(t){return t&&t[e]}},d=r((function(e,t,n){return n&&n[e]===t})),u=function(e){return a.apply(null,e.split(".").map(i))},m=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return!e.apply(null,t)}};function l(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)&&t.apply(null,n)}}function _(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)||t.apply(null,n)}}var c=function(e){return function(t){return t.reduce((function(t,n){return t&&!!e(n)}),!0)}},h=function(e){return function(t){return t.reduce((function(t,n){return t||!!e(n)}),!1)}},f=function(e){return function(t){return null!=t&&t.constructor===e||t instanceof e}},p=function(e){return function(){return e}};function M(e){return function(t){for(var n=0;n<e.length;n++)if(e[n][0](t))return e[n][1](t)}}},"./node_modules/@uirouter/core/lib-esm/common/predicates.js":(e,t,n)=>{"use strict";n.d(t,{o8:()=>a,$K:()=>i,Ft:()=>d,le:()=>u,mf:()=>m,hj:()=>l,HD:()=>_,Kn:()=>c,kJ:()=>h,J_:()=>f,Kj:()=>p,Qh:()=>M,tI:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),r=Object.prototype.toString,s=function(e){return function(t){return typeof t===e}},a=s("undefined"),i=(0,o.ff)(a),d=function(e){return null===e},u=(0,o.or)(d,a),m=s("function"),l=s("number"),_=s("string"),c=function(e){return null!==e&&"object"==typeof e},h=Array.isArray,f=function(e){return"[object Date]"===r.call(e)},p=function(e){return"[object RegExp]"===r.call(e)};function M(e){if(h(e)&&e.length){var t=e.slice(0,-1),n=e.slice(-1);return!(t.filter((0,o.ff)(_)).length||n.filter((0,o.ff)(m)).length)}return m(e)}var y=(0,o.xD)(c,(0,o.zG)((0,o.vg)("then"),m))},"./node_modules/@uirouter/core/lib-esm/common/queue.js":(e,t,n)=>{"use strict";n.d(t,{c:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e,t){void 0===e&&(e=[]),void 0===t&&(t=null),this._items=e,this._limit=t,this._evictListeners=[],this.onEvict=(0,o.LH)(this._evictListeners)}return e.prototype.enqueue=function(e){var t=this._items;return t.push(e),this._limit&&t.length>this._limit&&this.evict(),e},e.prototype.evict=function(){var e=this._items.shift();return this._evictListeners.forEach((function(t){return t(e)})),e},e.prototype.dequeue=function(){if(this.size())return this._items.splice(0,1)[0]},e.prototype.clear=function(){var e=this._items;return this._items=[],e},e.prototype.size=function(){return this._items.length},e.prototype.remove=function(e){var t=this._items.indexOf(e);return t>-1&&this._items.splice(t,1)[0]},e.prototype.peekTail=function(){return this._items[this._items.length-1]},e.prototype.peekHead=function(){if(this.size())return this._items[0]},e}()},"./node_modules/@uirouter/core/lib-esm/common/safeConsole.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r={log:o.ZT,error:o.ZT,table:o.ZT},s="undefined"!=typeof document&&document.documentMode&&9===document.documentMode?window&&window.console?function(e){var t=function(t){return Function.prototype.bind.call(t,e)};return{log:t(e.log),error:t(e.log),table:t(e.log)}}(window.console):r:console.table&&console.error?console:function(e){var t=e.log.bind(e);return{log:t,error:e.error?e.error.bind(e):t,table:e.table?e.table.bind(e):t}}(console)},"./node_modules/@uirouter/core/lib-esm/common/strings.js":(e,t,n)=>{"use strict";n.d(t,{BS:()=>i,NE:()=>d,L$:()=>u,XF:()=>m,iC:()=>l,Pz:()=>h,Lb:()=>p,cW:()=>M,C7:()=>y,Fb:()=>L,HV:()=>g,PX:()=>Y,iV:()=>v});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");function i(e,t){return t.length<=e?t:t.substr(0,e-3)+"..."}function d(e,t){for(;t.length<e;)t+=" ";return t}function u(e){return e.replace(/^([A-Z])/,(function(e){return e.toLowerCase()})).replace(/([A-Z])/g,(function(e){return"-"+e.toLowerCase()}))}function m(e){var t=l(e),n=t.match(/^(function [^ ]+\([^)]*\))/),o=n?n[1]:t,r=e.name||"";return r&&o.match(/function \(/)?"function "+r+o.substr(9):o}function l(e){var t=(0,o.kJ)(e)?e.slice(-1)[0]:e;return t&&t.toString()||"undefined"}var _=r.i.isRejectionPromise,c=(0,a.uj)([[o.o8,(0,a.P0)("undefined")],[o.Ft,(0,a.P0)("null")],[o.tI,(0,a.P0)("[Promise]")],[_,function(e){return e._transitionRejection.toString()}],[function(e){return(0,o.Kn)(e)&&!(0,o.kJ)(e)&&e.constructor!==Object&&(0,o.mf)(e.toString)},function(e){return e.toString()}],[o.Qh,m],[(0,a.P0)(!0),s.yR]]);function h(e){var t=[];function n(e){if((0,o.Kn)(e)){if(-1!==t.indexOf(e))return"[circular ref]";t.push(e)}return c(e)}return(0,o.o8)(e)?n(e):JSON.stringify(e,(function(e,t){return n(t)})).replace(/\\"/g,'"')}var f=function(e){return function(t){if(!t)return["",""];var n=t.indexOf(e);return-1===n?[t,""]:[t.substr(0,n),t.substr(n+1)]}},p=function(e){return e.replace(/\/[^/]*$/,"")},M=f("#"),y=f("?"),L=f("="),g=function(e){return e?e.replace(/^#/,""):""};function Y(e){var t=new RegExp("("+e+")","g");return function(e){return e.split(t).filter(s.yR)}}function v(e,t){return(0,o.HD)((0,s.Gb)(e))&&(0,o.HD)(t)?e.slice(0,-1).concat((0,s.Gb)(e)+t):(0,s.Ez)(e,t)}},"./node_modules/@uirouter/core/lib-esm/common/trace.js":(e,t,n)=>{"use strict";n.d(t,{g4:()=>c});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js");function d(e){if(!e)return"ui-view (defunct)";var t=e.creationContext?e.creationContext.name||"(root)":"(none)";return"[ui-view#"+e.id+" "+e.$type+":"+e.fqn+" ("+e.name+"@"+t+")]"}function u(e){return(0,s.hj)(e)?o[e]:o[o[e]]}!function(e){e[e.RESOLVE=0]="RESOLVE",e[e.TRANSITION=1]="TRANSITION",e[e.HOOK=2]="HOOK",e[e.UIVIEW=3]="UIVIEW",e[e.VIEWCONFIG=4]="VIEWCONFIG"}(o||(o={}));var m=(0,r.Qc)("$id"),l=(0,r.Qc)("router.$id"),_=function(e){return"Transition #"+m(e)+"-"+l(e)},c=new(function(){function e(){this._enabled={},this.approximateDigests=0}return e.prototype._set=function(e,t){var n=this;t.length||(t=Object.keys(o).map((function(e){return parseInt(e,10)})).filter((function(e){return!isNaN(e)})).map((function(e){return o[e]}))),t.map(u).forEach((function(t){return n._enabled[t]=e}))},e.prototype.enable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!0,e)},e.prototype.disable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!1,e)},e.prototype.enabled=function(e){return!!this._enabled[u(e)]},e.prototype.traceTransitionStart=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Started  -> "+(0,a.Pz)(e))},e.prototype.traceTransitionIgnored=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Ignored  <> "+(0,a.Pz)(e))},e.prototype.traceHookInvocation=function(e,t,n){if(this.enabled(o.HOOK)){var s=(0,r.Qc)("traceData.hookType")(n)||"internal",d=(0,r.Qc)("traceData.context.state.name")(n)||(0,r.Qc)("traceData.context")(n)||"unknown",u=(0,a.XF)(e.registeredHook.callback);i.L.log(_(t)+":   Hook -> "+s+" context: "+d+", "+(0,a.BS)(200,u))}},e.prototype.traceHookResult=function(e,t,n){this.enabled(o.HOOK)&&i.L.log(_(t)+":   <- Hook returned: "+(0,a.BS)(200,(0,a.Pz)(e)))},e.prototype.traceResolvePath=function(e,t,n){this.enabled(o.RESOLVE)&&i.L.log(_(n)+":         Resolving "+e+" ("+t+")")},e.prototype.traceResolvableResolved=function(e,t){this.enabled(o.RESOLVE)&&i.L.log(_(t)+":               <- Resolved  "+e+" to: "+(0,a.BS)(200,(0,a.Pz)(e.data)))},e.prototype.traceError=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Rejected "+(0,a.Pz)(t)+", reason: "+e)},e.prototype.traceSuccess=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Success  "+(0,a.Pz)(t)+", final state: "+e.name)},e.prototype.traceUIViewEvent=function(e,t,n){void 0===n&&(n=""),this.enabled(o.UIVIEW)&&i.L.log("ui-view: "+(0,a.NE)(30,e)+" "+d(t)+n)},e.prototype.traceUIViewConfigUpdated=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Updating",e," with ViewConfig from context='"+t+"'")},e.prototype.traceUIViewFill=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Fill",e," with: "+(0,a.BS)(200,t))},e.prototype.traceViewSync=function(e){if(this.enabled(o.VIEWCONFIG)){var t="uiview component fqn",n=e.map((function(e){var n,o=e.uiView,r=e.viewConfig,s=o&&o.fqn,a=r&&r.viewDecl.$context.name+": ("+r.viewDecl.$name+")";return(n={})[t]=s,n["view config state (view name)"]=a,n})).sort((function(e,n){return(e[t]||"").localeCompare(n[t]||"")}));i.L.table(n)}},e.prototype.traceViewServiceEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+function(e){var t=e.viewDecl,n=t.$context.name||"(root)";return"[View#"+e.$id+" from '"+n+"' state]: target ui-view: '"+t.$uiViewName+"@"+t.$uiViewContextAnchor+"'"}(t))},e.prototype.traceViewServiceUIViewEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+d(t))},e}())},"./node_modules/@uirouter/core/lib-esm/globals.js":(e,t,n)=>{"use strict";n.d(t,{k:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/stateParams.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/queue.js"),s=function(){function e(){this.params=new o.i,this.lastStartedTransitionId=-1,this.transitionHistory=new r.c([],1),this.successfulTransitions=new r.c([],1)}return e.prototype.dispose=function(){this.transitionHistory.clear(),this.successfulTransitions.clear(),this.transition=null},e}()},"./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js":(e,t,n)=>{"use strict";n.d(t,{v:()=>s,A:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),r=function(e){var t=e.router,n=e.entering().filter((function(e){return!!e.$$state().lazyLoad})).map((function(t){return a(e,t)}));return o.u.$q.all(n).then((function(){if("url"!==e.originalTransition().options().source){var n=e.targetState();return t.stateService.target(n.identifier(),n.params(),n.options())}var o=t.urlService,r=o.match(o.parts()),s=r&&r.rule;if(s&&"STATE"===s.type){var a=s.state,i=r.match;return t.stateService.target(a,i,e.options())}t.urlService.sync()}))},s=function(e){return e.onBefore({entering:function(e){return!!e.lazyLoad}},r)};function a(e,t){var n=t.$$state().lazyLoad,r=n._promise;return r||(r=n._promise=o.u.$q.when(n(e,t)).then((function(t){return t&&Array.isArray(t.states)&&t.states.forEach((function(t){return e.router.stateRegistry.register(t)})),t})).then((function(e){return delete t.lazyLoad,delete t.$$state().lazyLoad,delete n._promise,e}),(function(e){return delete n._promise,o.u.$q.reject(e)}))),r}},"./node_modules/@uirouter/core/lib-esm/interface.js":(e,t,n)=>{},"./node_modules/@uirouter/core/lib-esm/params/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/params/param.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>o,d:()=>m});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=Object.prototype.hasOwnProperty;!function(e){e[e.PATH=0]="PATH",e[e.SEARCH=1]="SEARCH",e[e.CONFIG=2]="CONFIG"}(o||(o={}));var m=function(){function e(e,t,n,i,m){var l=function(e,t,n){var s=!1===n.reloadOnSearch&&t===o.SEARCH||void 0,i=(0,r.sE)([n.dynamic,s],a.$K),d=(0,a.$K)(i)?{dynamic:i}:{},m=function(e){function t(){return e.value}e=function(e){return 0===["value","type","squash","array","dynamic"].filter(u.bind(e||{})).length}(e)?{value:e}:e,t.__cacheable=!0;var n=(0,a.Qh)(e.value)?e.value:t;return(0,r.l7)(e,{$$fn:n})}(n&&n.params&&n.params[e]);return(0,r.l7)(d,m)}(e,n,m);t=function(e,t,n,r,s){if(e.type&&t&&"string"!==t.name)throw new Error("Param '"+r+"' has two type configurations.");if(e.type&&t&&"string"===t.name&&s.type(e.type))return s.type(e.type);if(t)return t;if(!e.type){var a=n===o.CONFIG?"any":n===o.PATH?"path":n===o.SEARCH?"query":"string";return s.type(a)}return e.type instanceof d._?e.type:s.type(e.type)}(l,t,n,e,i.paramTypes);var _,c,h=(_={array:n===o.SEARCH&&"auto"},c=e.match(/\[\]$/)?{array:!0}:{},(0,r.l7)(_,c,l).array);t=h?t.$asArray(h,n===o.SEARCH):t;var f=void 0!==l.value||n===o.SEARCH,p=(0,a.$K)(l.dynamic)?!!l.dynamic:!!t.dynamic,M=(0,a.$K)(l.raw)?!!l.raw:!!t.raw,y=function(e,t,n){var o=e.squash;if(!t||!1===o)return!1;if(!(0,a.$K)(o)||null==o)return n;if(!0===o||(0,a.HD)(o))return o;throw new Error("Invalid squash policy: '"+o+"'. Valid policies: false, true, or arbitrary string")}(l,f,i.defaultSquashPolicy()),L=function(e,t,n,o){var i=[{from:"",to:n||t?void 0:""},{from:null,to:n||t?void 0:""}],d=(0,a.kJ)(e.replace)?e.replace:[];(0,a.HD)(o)&&d.push({from:o,to:void 0});var u=(0,r.UI)(d,(0,s.vg)("from"));return(0,r.hX)(i,(function(e){return-1===u.indexOf(e.from)})).concat(d)}(l,h,f,y),g=(0,a.$K)(l.inherit)?!!l.inherit:!!t.inherit;(0,r.l7)(this,{id:e,type:t,location:n,isOptional:f,dynamic:p,raw:M,squash:y,replace:L,inherit:g,array:h,config:l})}return e.values=function(e,t){void 0===t&&(t={});for(var n={},o=0,r=e;o<r.length;o++){var s=r[o];n[s.id]=s.value(t[s.id])}return n},e.changed=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e.filter((function(e){return!e.type.equals(t[e.id],n[e.id])}))},e.equals=function(t,n,o){return void 0===n&&(n={}),void 0===o&&(o={}),0===e.changed(t,n,o).length},e.validates=function(e,t){return void 0===t&&(t={}),e.map((function(e){return e.validates(t[e.id])})).reduce(r.XC,!0)},e.prototype.isDefaultValue=function(e){return this.isOptional&&this.type.equals(this.value(),e)},e.prototype.value=function(e){var t=this;return e=function(e){for(var n=0,o=t.replace;n<o.length;n++){var r=o[n];if(r.from===e)return r.to}return e}(e),(0,a.o8)(e)?function(){if(t._defaultValueCache)return t._defaultValueCache.defaultValue;if(!i.u.$injector)throw new Error("Injectable functions cannot be called at configuration time");var e=i.u.$injector.invoke(t.config.$$fn);if(null!=e&&!t.type.is(e))throw new Error("Default value ("+e+") for parameter '"+t.id+"' is not an instance of ParamType ("+t.type.name+")");return t.config.$$fn.__cacheable&&(t._defaultValueCache={defaultValue:e}),e}():this.type.$normalize(e)},e.prototype.isSearch=function(){return this.location===o.SEARCH},e.prototype.validates=function(e){if(((0,a.o8)(e)||null===e)&&this.isOptional)return!0;var t=this.type.$normalize(e);if(!this.type.is(t))return!1;var n=this.type.encode(t);return!((0,a.HD)(n)&&!this.type.pattern.exec(n))},e.prototype.toString=function(){return"{Param:"+this.id+" "+this.type+" squash: '"+this.squash+"' optional: "+this.isOptional+"}"},e}()},"./node_modules/@uirouter/core/lib-esm/params/paramType.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=function(){function e(e){this.pattern=/.*/,this.inherit=!0,(0,o.l7)(this,e)}return e.prototype.is=function(e,t){return!0},e.prototype.encode=function(e,t){return e},e.prototype.decode=function(e,t){return e},e.prototype.equals=function(e,t){return e==t},e.prototype.$subPattern=function(){var e=this.pattern.toString();return e.substr(1,e.length-2)},e.prototype.toString=function(){return"{ParamType:"+this.name+"}"},e.prototype.$normalize=function(e){return this.is(e)?e:this.decode(e)},e.prototype.$asArray=function(e,t){if(!e)return this;if("auto"===e&&!t)throw new Error("'auto' array mode is for query parameters only");return new a(this,e)},e}();function a(e,t){var n=this;function s(e){return(0,r.kJ)(e)?e:(0,r.$K)(e)?[e]:[]}function a(e,n){return function(a){if((0,r.kJ)(a)&&0===a.length)return a;var i=s(a),d=(0,o.UI)(i,e);return!0===n?0===(0,o.hX)(d,(function(e){return!e})).length:function(e){switch(e.length){case 0:return;case 1:return"auto"===t?e[0]:e;default:return e}}(d)}}function i(e){return function(t,n){var o=s(t),r=s(n);if(o.length!==r.length)return!1;for(var a=0;a<o.length;a++)if(!e(o[a],r[a]))return!1;return!0}}["encode","decode","equals","$normalize"].forEach((function(t){var o=e[t].bind(e),r="equals"===t?i:a;n[t]=r(o)})),(0,o.l7)(this,{dynamic:e.dynamic,name:e.name,pattern:e.pattern,inherit:e.inherit,raw:e.raw,is:a(e.is.bind(e),!0),$arrayMode:t})}},"./node_modules/@uirouter/core/lib-esm/params/paramTypes.js":(e,t,n)=>{"use strict";n.d(t,{p:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=function(){function e(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes=(0,r.ei)(e.prototype,["hash","string","query","path","int","bool","date","json","any"]),this.types=(0,r.ED)((0,r.UI)(this.defaultTypes,(function(e,t){return new d._((0,r.l7)({name:t},e))})),{})}return e.prototype.dispose=function(){this.types={}},e.prototype.type=function(e,t,n){if(!(0,s.$K)(t))return this.types[e];if(this.types.hasOwnProperty(e))throw new Error("A type named '"+e+"' has already been defined.");return this.types[e]=new d._((0,r.l7)({name:e},t)),n&&(this.typeQueue.push({name:e,def:n}),this.enqueue||this._flushTypeQueue()),this},e.prototype._flushTypeQueue=function(){for(;this.typeQueue.length;){var e=this.typeQueue.shift();if(e.pattern)throw new Error("You cannot override a type's .pattern at runtime.");(0,r.l7)(this.types[e.name],i.u.$injector.invoke(e.def))}},e}();o=function(e){var t=function(e){return null!=e?e.toString():e},n={encode:t,decode:t,is:(0,a.is)(String),pattern:/.*/,equals:function(e,t){return e==t}};return(0,r.l7)({},n,e)},(0,r.l7)(u.prototype,{string:o({}),path:o({pattern:/[^/]*/}),query:o({}),hash:o({inherit:!1}),int:o({decode:function(e){return parseInt(e,10)},is:function(e){return!(0,s.le)(e)&&this.decode(e.toString())===e},pattern:/-?\d+/}),bool:o({encode:function(e){return e?1:0},decode:function(e){return 0!==parseInt(e,10)},is:(0,a.is)(Boolean),pattern:/0|1/}),date:o({encode:function(e){return this.is(e)?[e.getFullYear(),("0"+(e.getMonth()+1)).slice(-2),("0"+e.getDate()).slice(-2)].join("-"):void 0},decode:function(e){if(this.is(e))return e;var t=this.capture.exec(e);return t?new Date(t[1],t[2]-1,t[3]):void 0},is:function(e){return e instanceof Date&&!isNaN(e.valueOf())},equals:function(e,t){return["getFullYear","getMonth","getDate"].reduce((function(n,o){return n&&e[o]()===t[o]()}),!0)},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/}),json:o({encode:r.Qs,decode:r.xZ,is:(0,a.is)(Object),equals:r.fS,pattern:/[^/]*/}),any:o({encode:r.yR,decode:r.yR,is:function(){return!0},equals:r.fS})})},"./node_modules/@uirouter/core/lib-esm/params/stateParams.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e){void 0===e&&(e={}),(0,o.l7)(this,e)}return e.prototype.$inherit=function(e,t,n){var r,s=(0,o.mX)(t,n),a={},i=[];for(var d in s)if(s[d]&&s[d].params&&(r=Object.keys(s[d].params)).length)for(var u in r)i.indexOf(r[u])>=0||(i.push(r[u]),a[r[u]]=this[r[u]]);return(0,o.l7)({},a,e)},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathNode.js":(e,t,n)=>{"use strict";n.d(t,{V:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/param.js"),a=function(){function e(t){if(t instanceof e){var n=t;this.state=n.state,this.paramSchema=n.paramSchema.slice(),this.paramValues=(0,o.l7)({},n.paramValues),this.resolvables=n.resolvables.slice(),this.views=n.views&&n.views.slice()}else{var r=t;this.state=r,this.paramSchema=r.parameters({inherit:!1}),this.paramValues={},this.resolvables=r.resolvables.map((function(e){return e.clone()}))}}return e.prototype.clone=function(){return new e(this)},e.prototype.applyRawParams=function(e){return this.paramValues=this.paramSchema.reduce((function(t,n){return(0,o.bb)(t,[(r=n).id,r.value(e[r.id])]);var r}),{}),this},e.prototype.parameter=function(e){return(0,o.sE)(this.paramSchema,(0,r.OH)("id",e))},e.prototype.equals=function(e,t){var n=this.diff(e,t);return n&&0===n.length},e.prototype.diff=function(e,t){if(this.state!==e.state)return!1;var n=t?t(this):this.paramSchema;return s.d.changed(n,this.paramValues,e.paramValues)},e.clone=function(e){return e.clone()},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathUtils.js":(e,t,n)=>{"use strict";n.d(t,{C:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),a=n("./node_modules/@uirouter/core/lib-esm/path/pathNode.js"),i=function(){function e(){}return e.makeTargetState=function(e,t){var n=(0,o.Gb)(t).state;return new s.F(e,n,t.map((0,r.vg)("paramValues")).reduce(o.LQ,{}),{})},e.buildPath=function(e){var t=e.params();return e.$state().path.map((function(e){return new a.V(e).applyRawParams(t)}))},e.buildToPath=function(t,n){var o=e.buildPath(n);return n.options().inherit?e.inheritParams(t,o,Object.keys(n.params())):o},e.applyViewConfigs=function(t,n,r){n.filter((function(e){return(0,o.d3)(r,e.state)})).forEach((function(r){var s=(0,o.VO)(r.state.views||{}),a=e.subPath(n,(function(e){return e===r})),i=s.map((function(e){return t.createViewConfig(a,e)}));r.views=i.reduce(o.M7,[])}))},e.inheritParams=function(e,t,n){void 0===n&&(n=[]);var s=e.map((function(e){return e.paramSchema})).reduce(o.M7,[]).filter((function(e){return!e.inherit})).map((0,r.vg)("id"));return t.map((function(t){var i=(0,o.l7)({},t&&t.paramValues),d=(0,o.ei)(i,n);i=(0,o.CE)(i,n);var u,m,l,_=(0,o.CE)((u=e,m=t.state,l=(0,o.sE)(u,(0,r.OH)("state",m)),(0,o.l7)({},l&&l.paramValues)||{}),s),c=(0,o.l7)(i,_,d);return new a.V(t.state).applyRawParams(c)}))},e.treeChanges=function(t,n,o){for(var r,s,a,i,d,u,m=Math.min(t.length,n.length),l=0;l<m&&t[l].state!==o&&(r=t[l],s=n[l],r.equals(s,e.nonDynamicParams));)l++;i=(a=t).slice(0,l),d=a.slice(l);var _=i.map((function(e,t){var o=e.clone();return o.paramValues=n[t].paramValues,o}));return u=n.slice(l),{from:a,to:_.concat(u),retained:i,retainedWithToParams:_,exiting:d,entering:u}},e.matching=function(e,t,n){var r=!1;return(0,o.ym)(e,t).reduce((function(e,t){var o=t[0],s=t[1];return(r=r||!o.equals(s,n))?e:e.concat(o)}),[])},e.equals=function(t,n,o){return t.length===n.length&&e.matching(t,n,o).length===t.length},e.subPath=function(e,t){var n=(0,o.sE)(e,t),r=e.indexOf(n);return-1===r?void 0:e.slice(0,r+1)},e.nonDynamicParams=function(e){return e.state.parameters({inherit:!1}).filter((function(e){return!e.dynamic}))},e.paramValues=function(e){return e.reduce((function(e,t){return(0,o.l7)(e,t.paramValues)}),{})},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/interface.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>o});var o={when:{LAZY:"LAZY",EAGER:"EAGER"},async:{WAIT:"WAIT",NOWAIT:"NOWAIT"}}},"./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),d=function(){function e(t,n,s,a,d){if(this.resolved=!1,this.promise=void 0,t instanceof e)(0,o.l7)(this,t);else if((0,i.mf)(n)){if((0,i.le)(t))throw new Error("new Resolvable(): token argument is required");if(!(0,i.mf)(n))throw new Error("new Resolvable(): resolveFn argument must be a function");this.token=t,this.policy=a,this.resolveFn=n,this.deps=s||[],this.data=d,this.resolved=void 0!==d,this.promise=this.resolved?r.u.$q.when(this.data):void 0}else if((0,i.Kn)(t)&&t.token&&(t.hasOwnProperty("resolveFn")||t.hasOwnProperty("data"))){var u=t;return new e(u.token,u.resolveFn,u.deps,u.policy,u.data)}}return e.prototype.getPolicy=function(e){var t=this.policy||{},n=e&&e.resolvePolicy||{};return{when:t.when||n.when||"LAZY",async:t.async||n.async||"WAIT"}},e.prototype.resolve=function(e,t){var n=this,a=r.u.$q,d=e.findNode(this),u=d&&d.state,m=this.getPolicy(u).async,l=(0,i.mf)(m)?m:o.yR;return this.promise=a.when().then((function(){return a.all(e.getDependencies(n).map((function(n){return n.get(e,t)})))})).then((function(e){return n.resolveFn.apply(null,e)})).then(l).then((function(e){return n.data=e,n.resolved=!0,n.resolveFn=null,s.g4.traceResolvableResolved(n,t),n.data}))},e.prototype.get=function(e,t){return this.promise||this.resolve(e,t)},e.prototype.toString=function(){return"Resolvable(token: "+(0,a.Pz)(this.token)+", requires: ["+this.deps.map(a.Pz)+"])"},e.prototype.clone=function(){return new e(this)},e.fromData=function(t,n){return new e(t,(function(){return n}),null,null,n)},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>f});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/interface.js"),d=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),u=n("./node_modules/@uirouter/core/lib-esm/path/pathUtils.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),_=i.u.when,c=[_.EAGER,_.LAZY],h=[_.EAGER],f=function(){function e(e){this._path=e}return e.prototype.getTokens=function(){return this._path.reduce((function(e,t){return e.concat(t.resolvables.map((function(e){return e.token})))}),[]).reduce(o.v_,[])},e.prototype.getResolvable=function(e){var t=this._path.map((function(e){return e.resolvables})).reduce(o.M7,[]).filter((function(t){return t.token===e}));return(0,o.Gb)(t)},e.prototype.getPolicy=function(e){var t=this.findNode(e);return e.getPolicy(t.state)},e.prototype.subContext=function(t){return new e(u.C.subPath(this._path,(function(e){return e.state===t})))},e.prototype.addResolvables=function(e,t){var n=(0,o.sE)(this._path,(0,r.OH)("state",t)),s=e.map((function(e){return e.token}));n.resolvables=n.resolvables.filter((function(e){return-1===s.indexOf(e.token)})).concat(e)},e.prototype.resolvePath=function(e,t){var n=this;void 0===e&&(e="LAZY");var d=((0,o.d3)(c,e)?e:"LAZY")===i.u.when.EAGER?h:c;s.g4.traceResolvePath(this._path,e,t);var u=function(e,t){return function(r){return(0,o.d3)(e,n.getPolicy(r)[t])}},m=this._path.reduce((function(e,o){var s=o.resolvables.filter(u(d,"when")),a=s.filter(u(["NOWAIT"],"async")),i=s.filter((0,r.ff)(u(["NOWAIT"],"async"))),m=n.subContext(o.state),l=function(e){return e.get(m,t).then((function(t){return{token:e.token,value:t}}))};return a.forEach(l),e.concat(i.map(l))}),[]);return a.u.$q.all(m)},e.prototype.injector=function(){return this._injector||(this._injector=new p(this))},e.prototype.findNode=function(e){return(0,o.sE)(this._path,(function(t){return(0,o.d3)(t.resolvables,e)}))},e.prototype.getDependencies=function(e){var t=this,n=this.findNode(e),r=(u.C.subPath(this._path,(function(e){return e===n}))||this._path).reduce((function(e,t){return e.concat(t.resolvables)}),[]).filter((function(t){return t!==e}));return e.deps.map((function(e){var n=r.filter((function(t){return t.token===e}));if(n.length)return(0,o.Gb)(n);var s=t.injector().getNative(e);if((0,l.wV)(s))throw new Error("Could not find Dependency Injection token: "+(0,m.Pz)(e));return new d.X(e,(function(){return s}),[],s)}))},e}(),p=function(){function e(e){this.context=e,this.native=this.get("Native Injector")||a.u.$injector}return e.prototype.get=function(e){var t=this.context.getResolvable(e);if(t){if("NOWAIT"===this.context.getPolicy(t).async)return t.get(this.context);if(!t.resolved)throw new Error("Resolvable async .get() not complete:"+(0,m.Pz)(t.token));return t.data}return this.getNative(e)},e.prototype.getAsync=function(e){var t=this.context.getResolvable(e);return t?t.get(this.context):a.u.$q.when(this.native.get(e))},e.prototype.getNative=function(e){return this.native&&this.native.get(e)},e}()},"./node_modules/@uirouter/core/lib-esm/router.js":(e,t,n)=>{"use strict";n.d(t,{a:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRouter.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/transitionService.js"),a=n("./node_modules/@uirouter/core/lib-esm/view/view.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js"),d=n("./node_modules/@uirouter/core/lib-esm/state/stateService.js"),u=n("./node_modules/@uirouter/core/lib-esm/globals.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),_=n("./node_modules/@uirouter/core/lib-esm/url/urlService.js"),c=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),f=0,p=(0,h.HV)("LocationServices",["url","path","search","hash","onChange"]),M=(0,h.HV)("LocationConfig",["port","protocol","host","baseHref","html5Mode","hashPrefix"]),y=function(){function e(e,t){void 0===e&&(e=p),void 0===t&&(t=M),this.locationService=e,this.locationConfig=t,this.$id=f++,this._disposed=!1,this._disposables=[],this.trace=c.g4,this.viewService=new a.s(this),this.globals=new u.k,this.transitionService=new s.Z(this),this.urlMatcherFactory=new o.y(this),this.urlRouter=new r.g(this),this.urlService=new _.i(this),this.stateRegistry=new i.q(this),this.stateService=new d.b(this),this._plugins={},this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self,this.disposable(this.globals),this.disposable(this.stateService),this.disposable(this.stateRegistry),this.disposable(this.transitionService),this.disposable(this.urlService),this.disposable(e),this.disposable(t)}return e.prototype.disposable=function(e){this._disposables.push(e)},e.prototype.dispose=function(e){var t=this;e&&(0,l.mf)(e.dispose)?e.dispose(this):(this._disposed=!0,this._disposables.slice().forEach((function(e){try{"function"==typeof e.dispose&&e.dispose(t),(0,m.nA)(t._disposables,e)}catch(e){}})))},e.prototype.plugin=function(e,t){void 0===t&&(t={});var n=new e(this,t);if(!n.name)throw new Error("Required property `name` missing on plugin: "+n);return this._disposables.push(n),this._plugins[n.name]=n},e.prototype.getPlugin=function(e){return e?this._plugins[e]:(0,m.VO)(this._plugins)},e}()},"./node_modules/@uirouter/core/lib-esm/state/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>M});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js");function u(e){return e.name}function m(e){return e.self.$$state=function(){return e},e.self}function l(e){return e.parent&&e.parent.data&&(e.data=e.self.data=(0,o.ED)(e.parent.data,e.data)),e.data}var _=function(e,t){return function(n){var s=n.self;if(s&&s.url&&s.name&&s.name.match(/\.\*\*$/)){var a={};(0,o.JG)(s,a),a.url+="{remainder:any}",s=a}var i=n.parent,d=function(e){if(!(0,r.HD)(e))return!1;var t="^"===e.charAt(0);return{val:t?e.substring(1):e,root:t}}(s.url),u=d?e.compile(d.val,{state:s}):s.url;if(!u)return null;if(!e.isMatcher(u))throw new Error("Invalid url '"+u+"' in state '"+n+"'");return d&&d.root?u:(i&&i.navigable||t()).url.append(u)}},c=function(e){return function(t){return!e(t)&&t.url?t:t.parent?t.parent.navigable:null}};function h(e){return e.parent?e.parent.path.concat(e):[e]}function f(e){var t=e.parent?(0,o.l7)({},e.parent.includes):{};return t[e.name]=!0,t}function p(e){var t,n,u=function(e){return e.provide||e.token},m=(0,a.uj)([[(0,a.vg)("resolveFn"),function(e){return new i.X(u(e),e.resolveFn,e.deps,e.policy)}],[(0,a.vg)("useFactory"),function(e){return new i.X(u(e),e.useFactory,e.deps||e.dependencies,e.policy)}],[(0,a.vg)("useClass"),function(e){return new i.X(u(e),(function(){return new e.useClass}),[],e.policy)}],[(0,a.vg)("useValue"),function(e){return new i.X(u(e),(function(){return e.useValue}),[],e.policy,e.useValue)}],[(0,a.vg)("useExisting"),function(e){return new i.X(u(e),o.yR,[e.useExisting],e.policy)}]]),l=(0,a.uj)([[(0,a.zG)((0,a.vg)("val"),r.HD),function(e){return new i.X(e.token,o.yR,[e.val],e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.kJ),function(e){return new i.X(e.token,(0,o.Gb)(e.val),e.val.slice(0,-1),e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.mf),function(e){return new i.X(e.token,e.val,(t=e.val,n=d.u.$injector,t.$inject||n&&n.annotate(t,n.strictDi)||"deferred"),e.policy);var t,n}]]),_=(0,a.uj)([[(0,a.is)(i.X),function(e){return e}],[function(e){return!(!e.token||!e.resolveFn)},m],[function(e){return!(!e.provide&&!e.token||!(e.useValue||e.useFactory||e.useExisting||e.useClass))},m],[function(e){return!!(e&&e.val&&((0,r.HD)(e.val)||(0,r.kJ)(e.val)||(0,r.mf)(e.val)))},l],[(0,a.P0)(!0),function(e){throw new Error("Invalid resolve value: "+(0,s.Pz)(e))}]]),c=e.resolve;return((0,r.kJ)(c)?c:(t=c,n=e.resolvePolicy||{},Object.keys(t||{}).map((function(e){return{token:e,val:t[e],deps:void 0,policy:n[e]}})))).map(_)}var M=function(){function e(e,t){this.matcher=e;var n,r=this,s=function(){return e.find("")},i=function(e){return""===e.name};this.builders={name:[u],self:[m],parent:[function(t){return i(t)?null:e.find(r.parentName(t))||s()}],data:[l],url:[_(t,s)],navigable:[c(i)],params:[(n=t.paramFactory,function(e){var t=e.url&&e.url.parameters({inherit:!1})||[],r=(0,o.VO)((0,o.js)((0,o.CE)(e.params||{},t.map((0,a.vg)("id"))),(function(t,o){return n.fromConfig(o,null,e.self)})));return t.concat(r).map((function(e){return[e.id,e]})).reduce(o.bb,{})})],views:[],path:[h],includes:[f],resolvables:[p]}}return e.prototype.builder=function(e,t){var n=this.builders,o=n[e]||[];return(0,r.HD)(e)&&!(0,r.$K)(t)?o.length>1?o:o[0]:(0,r.HD)(e)&&(0,r.mf)(t)?(n[e]=o,n[e].push(t),function(){return n[e].splice(n[e].indexOf(t,1))&&null}):void 0},e.prototype.build=function(e){var t=this.matcher,n=this.builders,r=this.parentName(e);if(r&&!t.find(r,void 0,!1))return null;for(var s in n)if(n.hasOwnProperty(s)){var a=n[s].reduce((function(e,t){return function(n){return t(n,e)}}),o.ZT);e[s]=a(e)}return e},e.prototype.parentName=function(e){var t=e.name||"",n=t.split(".");if("**"===n.pop()&&n.pop(),n.length){if(e.parent)throw new Error("States that specify the 'parent:' property should not have a '.' in their name ("+t+")");return n.join(".")}return e.parent?(0,r.HD)(e.parent)?e.parent:e.parent.name:""},e.prototype.name=function(e){var t=e.name;if(-1!==t.indexOf(".")||!e.parent)return t;var n=(0,r.HD)(e.parent)?e.parent:e.parent.name;return n?n+"."+t:t},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js":(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js"),a=function(){function e(e){this._states=e}return e.prototype.isRelative=function(e){return 0===(e=e||"").indexOf(".")||0===e.indexOf("^")},e.prototype.find=function(e,t,n){if(void 0===n&&(n=!0),e||""===e){var a=(0,o.HD)(e),i=a?e:e.name;this.isRelative(i)&&(i=this.resolvePath(i,t));var d=this._states[i];if(d&&(a||!(a||d!==e&&d.self!==e)))return d;if(a&&n){var u=(0,r.VO)(this._states).filter((function(e){return e.__stateObjectCache.nameGlob&&e.__stateObjectCache.nameGlob.matches(i)}));return u.length>1&&s.L.error("stateMatcher.find: Found multiple matches for "+i+" using glob: ",u.map((function(e){return e.name}))),u[0]}}},e.prototype.resolvePath=function(e,t){if(!t)throw new Error("No reference point given for path '"+e+"'");for(var n=this.find(t),o=e.split("."),r=o.length,s=0,a=n;s<r;s++)if(""!==o[s]||0!==s){if("^"!==o[s])break;if(!a.parent)throw new Error("Path '"+e+"' not valid for state '"+n.name+"'");a=a.parent}else a=n;var i=o.slice(s).join(".");return a.name+(a.name&&i?".":"")+i},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateObject.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/glob.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=function(){function e(t){return e.create(t||{})}return e.create=function(t){t=e.isStateClass(t)?new t:t;var n=(0,o.ED)((0,o.ED)(t,e.prototype));return t.$$state=function(){return n},n.self=t,n.__stateObjectCache={nameGlob:s.r.fromString(n.name)},n},e.prototype.is=function(e){return this===e||this.self===e||this.fqn()===e},e.prototype.fqn=function(){if(!(this.parent&&this.parent instanceof this.constructor))return this.name;var e=this.parent.fqn();return e?e+"."+this.name:this.name},e.prototype.root=function(){return this.parent&&this.parent.root()||this},e.prototype.parameters=function(e){return((e=(0,o.ce)(e,{inherit:!0,matchingKeys:null})).inherit&&this.parent&&this.parent.parameters()||[]).concat((0,o.VO)(this.params)).filter((function(t){return!e.matchingKeys||e.matchingKeys.hasOwnProperty(t.id)}))},e.prototype.parameter=function(e,t){return void 0===t&&(t={}),this.url&&this.url.parameter(e,t)||(0,o.sE)((0,o.VO)(this.params),(0,r.OH)("id",e))||t.inherit&&this.parent&&this.parent.parameter(e)},e.prototype.toString=function(){return this.fqn()},e.isStateClass=function(e){return(0,a.mf)(e)&&!0===e.__uiRouterState},e.isStateDeclaration=function(e){return(0,a.mf)(e.$$state)},e.isState=function(e){return(0,a.Kn)(e.__stateObjectCache)},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),s=function(){function e(e,t,n,o){this.router=e,this.states=t,this.builder=n,this.listeners=o,this.queue=[]}return e.prototype.dispose=function(){this.queue=[]},e.prototype.register=function(e){var t=this.queue,n=r.l.create(e),s=n.name;if(!(0,o.HD)(s))throw new Error("State must have a valid name");if(this.states.hasOwnProperty(s)||(0,o.d3)(t.map((0,o.vg)("name")),s))throw new Error("State '"+s+"' is already defined");return t.push(n),this.flush(),n},e.prototype.flush=function(){for(var e=this,t=this,n=t.queue,o=t.states,r=t.builder,s=[],a=[],i={},d=function(t){return e.states.hasOwnProperty(t)&&e.states[t]},u=function(){s.length&&e.listeners.forEach((function(e){return e("registered",s.map((function(e){return e.self})))}))};n.length>0;){var m=n.shift(),l=m.name,_=r.build(m),c=a.indexOf(m);if(_){var h=d(l);if(h&&h.name===l)throw new Error("State '"+l+"' is already defined");var f=d(l+".**");f&&this.router.stateRegistry.deregister(f),o[l]=m,this.attachRoute(m),c>=0&&a.splice(c,1),s.push(m)}else{var p=i[l];if(i[l]=n.length,c>=0&&p===n.length)return n.push(m),u(),o;c<0&&a.push(m),n.push(m)}}return u(),o},e.prototype.attachRoute=function(e){if(!e.abstract&&e.url){var t=this.router.urlService.rules;t.rule(t.urlRuleFactory.create(e))}},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js":(e,t,n)=>{"use strict";n.d(t,{q:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=function(){function e(e){this.router=e,this.states={},this.listeners=[],this.matcher=new o.Q(this.states),this.builder=new r.t(this.matcher,e.urlMatcherFactory),this.stateQueue=new s.L(e,this.states,this.builder,this.listeners),this._registerRoot()}return e.prototype._registerRoot=function(){(this._root=this.stateQueue.register({name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},abstract:!0})).navigable=null},e.prototype.dispose=function(){var e=this;this.stateQueue.dispose(),this.listeners=[],this.get().forEach((function(t){return e.get(t)&&e.deregister(t)}))},e.prototype.onStatesChanged=function(e){return this.listeners.push(e),function(){(0,a.nA)(this.listeners)(e)}.bind(this)},e.prototype.root=function(){return this._root},e.prototype.register=function(e){return this.stateQueue.register(e)},e.prototype._deregisterTree=function(e){var t=this,n=this.get().map((function(e){return e.$$state()})),o=function(e){var t=n.filter((function(t){return-1!==e.indexOf(t.parent)}));return 0===t.length?t:t.concat(o(t))},r=o([e]),s=[e].concat(r).reverse();return s.forEach((function(e){var n=t.router.urlService.rules;n.rules().filter((0,i.OH)("state",e)).forEach((function(e){return n.removeRule(e)})),delete t.states[e.name]})),s},e.prototype.deregister=function(e){var t=this.get(e);if(!t)throw new Error("Can't deregister state; not found: "+e);var n=this._deregisterTree(t.$$state());return this.listeners.forEach((function(e){return e("deregistered",n.map((function(e){return e.self})))})),n},e.prototype.get=function(e,t){var n=this;if(0===arguments.length)return Object.keys(this.states).map((function(e){return n.states[e].self}));var o=this.matcher.find(e,t);return o&&o.self||null},e.prototype.decorator=function(e,t){return this.builder.builder(e,t)},e}()},"./node_modules/@uirouter/core/lib-esm/state/targetState.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=function(){function e(e,t,n,o){this._stateRegistry=e,this._identifier=t,this._identifier=t,this._params=(0,s.l7)({},n||{}),this._options=(0,s.l7)({},o||{}),this._definition=e.matcher.find(t,this._options.relative)}return e.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},e.prototype.identifier=function(){return this._identifier},e.prototype.params=function(){return this._params},e.prototype.$state=function(){return this._definition},e.prototype.state=function(){return this._definition&&this._definition.self},e.prototype.options=function(){return this._options},e.prototype.exists=function(){return!(!this._definition||!this._definition.self)},e.prototype.valid=function(){return!this.error()},e.prototype.error=function(){var e=this.options().relative;if(!this._definition&&e){var t=e.name?e.name:e;return"Could not resolve '"+this.name()+"' from state '"+t+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},e.prototype.toString=function(){return"'"+this.name()+"'"+(0,r.Pz)(this.params())},e.prototype.withState=function(t){return new e(this._stateRegistry,t,this._params,this._options)},e.prototype.withParams=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._params,t);return new e(this._stateRegistry,this._identifier,o,this._options)},e.prototype.withOptions=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._options,t);return new e(this._stateRegistry,this._identifier,this._params,o)},e.isDef=function(e){return e&&e.state&&((0,o.HD)(e.state)||(0,o.Kn)(e.state)&&(0,o.HD)(e.state.name))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),a=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),i=function(){function e(e){this.transition=e}return e.prototype.buildHooksForPhase=function(e){var t=this;return this.transition.router.transitionService._pluginapi._getEvents(e).map((function(e){return t.buildHooks(e)})).reduce(o.M7,[]).filter(o.yR)},e.prototype.buildHooks=function(e){var t=this.transition,n=t.treeChanges(),r=this.getMatchingHooks(e,n,t);if(!r)return[];var i,d={transition:t,current:t.options().current};return r.map((function(r){return r.matches(n,t)[e.criteriaMatchPath.name].map((function(n){var i=(0,o.l7)({bind:r.bind,traceData:{hookType:e.name,context:n}},d),u=e.criteriaMatchPath.scope===s.c.STATE?n.state.self:null,m=new a.I(t,u,r,i);return{hook:r,node:n,transitionHook:m}}))})).reduce(o.M7,[]).sort((i=e.reverseSort,void 0===i&&(i=!1),function(e,t){var n=i?-1:1,o=(e.node.state.path.length-t.node.state.path.length)*n;return 0!==o?o:t.hook.priority-e.hook.priority})).map((function(e){return e.transitionHook}))},e.prototype.getMatchingHooks=function(e,t,n){var a=e.hookPhase===s.k.CREATE,i=this.transition.router.transitionService;return(a?[i]:[this.transition,i]).map((function(t){return t.getHooks(e.name)})).filter((0,o.sp)(r.kJ,"broken event named: "+e.name)).reduce(o.M7,[]).filter((function(e){return e.matches(t,n)}))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js":(e,t,n)=>{"use strict";n.d(t,{cN:()=>s,BU:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js");function s(e,t,n){var r=(0,o.HD)(t)?[t]:t;return!!((0,o.mf)(r)?r:function(e){for(var t=r,n=0;n<t.length;n++){var s=new o.rR(t[n]);if(s&&s.matches(e.name)||!s&&t[n]===e.name)return!0}return!1})(e,n)}var a=function(){function e(e,t,n,o,r,s){void 0===s&&(s={}),this.tranSvc=e,this.eventType=t,this.callback=n,this.matchCriteria=o,this.removeHookFromRegistry=r,this.invokeCount=0,this._deregistered=!1,this.priority=s.priority||0,this.bind=s.bind||null,this.invokeLimit=s.invokeLimit}return e.prototype._matchingNodes=function(e,t,n){if(!0===t)return e;var o=e.filter((function(e){return s(e.state,t,n)}));return o.length?o:null},e.prototype._getDefaultMatchCriteria=function(){return(0,o.js)(this.tranSvc._pluginapi._getPathTypes(),(function(){return!0}))},e.prototype._getMatchingNodes=function(e,t){var n=this,s=(0,o.l7)(this._getDefaultMatchCriteria(),this.matchCriteria);return(0,o.VO)(this.tranSvc._pluginapi._getPathTypes()).reduce((function(a,i){var d=i.scope===r.c.STATE,u=e[i.name]||[],m=d?u:[(0,o.Gb)(u)];return a[i.name]=n._matchingNodes(m,s[i.name],t),a}),{})},e.prototype.matches=function(e,t){var n=this._getMatchingNodes(e,t);return(0,o.VO)(n).every(o.yR)?n:null},e.prototype.deregister=function(){this.removeHookFromRegistry(this),this._deregistered=!0},e}();function i(e,t,n){var r=(e._registeredHooks=e._registeredHooks||{})[n.name]=[],s=(0,o.nA)(r);function i(e,o,i){void 0===i&&(i={});var d=new a(t,n,o,e,s,i);return r.push(d),d.deregister.bind(d)}return e[n.name]=i,i}},"./node_modules/@uirouter/core/lib-esm/transition/interface.js":(e,t,n)=>{"use strict";var o,r;n.d(t,{k:()=>o,c:()=>r}),function(e){e[e.CREATE=0]="CREATE",e[e.BEFORE=1]="BEFORE",e[e.RUN=2]="RUN",e[e.SUCCESS=3]="SUCCESS",e[e.ERROR=4]="ERROR"}(o||(o={})),function(e){e[e.TRANSITION=0]="TRANSITION",e[e.STATE=1]="STATE"}(r||(r={}))},"./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js":(e,t,n)=>{"use strict";n.d(t,{K:()=>o,i:()=>d});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");!function(e){e[e.SUPERSEDED=2]="SUPERSEDED",e[e.ABORTED=3]="ABORTED",e[e.INVALID=4]="INVALID",e[e.IGNORED=5]="IGNORED",e[e.ERROR=6]="ERROR"}(o||(o={}));var i=0,d=function(){function e(e,t,n){this.$id=i++,this.type=e,this.message=t,this.detail=n}return e.isRejectionPromise=function(t){return t&&"function"==typeof t.then&&(0,a.is)(e)(t._transitionRejection)},e.superseded=function(t,n){var r=new e(o.SUPERSEDED,"The transition has been superseded by a different transition",t);return n&&n.redirected&&(r.redirected=!0),r},e.redirected=function(t){return e.superseded(t,{redirected:!0})},e.invalid=function(t){return new e(o.INVALID,"This transition is invalid",t)},e.ignored=function(t){return new e(o.IGNORED,"The transition was ignored",t)},e.aborted=function(t){return new e(o.ABORTED,"The transition has been aborted",t)},e.errored=function(t){return new e(o.ERROR,"The transition errored",t)},e.normalize=function(t){return(0,a.is)(e)(t)?t:e.errored(t)},e.prototype.toString=function(){var e,t=(e=this.detail)&&e.toString!==Object.prototype.toString?e.toString():(0,s.Pz)(e),n=this;return"Transition Rejection($id: "+n.$id+" type: "+n.type+", message: "+n.message+", detail: "+t+")"},e.prototype.toPromise=function(){return(0,r.l7)((0,r.jv)(this),{_transitionRejection:this})},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),r=function(e,t,n,r,s,a,i,d){void 0===s&&(s=!1),void 0===a&&(a=o.I.HANDLE_RESULT),void 0===i&&(i=o.I.REJECT_ERROR),void 0===d&&(d=!1),this.name=e,this.hookPhase=t,this.hookOrder=n,this.criteriaMatchPath=r,this.reverseSort=s,this.getResultHandler=a,this.getErrorHandler=i,this.synchronous=d}},"./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>c});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),u=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),m=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),l=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),_={current:r.ZT,transition:null,traceData:{},bind:null},c=function(){function e(e,t,n,s){var a=this;this.transition=e,this.stateContext=t,this.registeredHook=n,this.options=s,this.isSuperseded=function(){return a.type.hookPhase===o.k.RUN&&!a.options.transition.isActive()},this.options=(0,r.ce)(s,_),this.type=n.eventType}return e.chain=function(e,t){return e.reduce((function(e,t){return e.then((function(){return t.invokeHook()}))}),t||u.u.$q.when())},e.invokeHooks=function(t,n){for(var o=0;o<t.length;o++){var r=t[o].invokeHook();if((0,a.tI)(r)){var s=t.slice(o+1);return e.chain(s,r).then(n)}}return n()},e.runAllHooks=function(e){e.forEach((function(e){return e.invokeHook()}))},e.prototype.logError=function(e){this.transition.router.stateService.defaultErrorHandler()(e)},e.prototype.invokeHook=function(){var e=this,t=this.registeredHook;if(!t._deregistered){var n=this.getNotCurrentRejection();if(n)return n;var o=this.options;d.g4.traceHookInvocation(this,this.transition,o);var r=function(n){return t.eventType.getErrorHandler(e)(n)},s=function(n){return t.eventType.getResultHandler(e)(n)};try{var i=t.callback.call(o.bind,e.transition,e.stateContext);return!this.type.synchronous&&(0,a.tI)(i)?i.catch((function(e){return m.i.normalize(e).toPromise()})).then(s,r):s(i)}catch(e){return r(m.i.normalize(e))}finally{t.invokeLimit&&++t.invokeCount>=t.invokeLimit&&t.deregister()}}},e.prototype.handleHookResult=function(e){var t=this;return this.getNotCurrentRejection()||((0,a.tI)(e)?e.then((function(e){return t.handleHookResult(e)})):(d.g4.traceHookResult(e,this.transition,this.options),!1===e?m.i.aborted("Hook aborted transition").toPromise():(0,i.is)(l.F)(e)?m.i.redirected(e).toPromise():void 0))},e.prototype.getNotCurrentRejection=function(){var e=this.transition.router;return e._disposed?m.i.aborted("UIRouter instance #"+e.$id+" has been stopped (disposed)").toPromise():this.transition._aborted?m.i.aborted().toPromise():this.isSuperseded()?m.i.superseded(this.options.current()).toPromise():void 0},e.prototype.toString=function(){var e=this.options,t=this.registeredHook,n=(0,i.Qc)("traceData.hookType")(e)||"internal",o=(0,i.Qc)("traceData.context.state.name")(e)||(0,i.Qc)("traceData.context")(e)||"unknown",r=(0,s.iC)(t.callback);return n+" context: "+o+", "+(0,s.BS)(200,r)},e.HANDLE_RESULT=function(e){return function(t){return e.handleHookResult(t)}},e.LOG_REJECTED_RESULT=function(e){return function(t){(0,a.tI)(t)&&t.catch((function(t){return e.logError(m.i.normalize(t))}))}},e.LOG_ERROR=function(e){return function(t){return e.logError(t)}},e.REJECT_ERROR=function(e){return function(e){return(0,r.jv)(e)}},e.THROW_ERROR=function(e){return function(e){throw e}},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionService.js":(e,t,n)=>{"use strict";n.d(t,{Z:()=>C,q:()=>W});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/transition.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js"),a=n("./node_modules/@uirouter/core/lib-esm/router.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/index.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/index.js");function u(e){e.addResolvable(i.XU.fromData(a.a,e.router),""),e.addResolvable(i.XU.fromData(r.u,e),""),e.addResolvable(i.XU.fromData("$transition$",e),""),e.addResolvable(i.XU.fromData("$stateParams",e.params()),""),e.entering().forEach((function(t){e.addResolvable(i.XU.fromData("$state$",t),t)}))}var m=["$transition$",r.u],l=(0,d.d3)(m),_=function(e){var t=(0,d.VO)(e.treeChanges()).reduce(d.M7,[]).reduce(d.v_,[]),n=function(e){return l(e.token)?i.XU.fromData(e.token,null):e};t.forEach((function(e){e.resolvables=e.resolvables.map(n)}))},c=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),f=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),p=function(e){var t=e.to().redirectTo;if(t){var n=e.router.stateService;return(0,c.mf)(t)?h.u.$q.when(t(e)).then(o):o(t)}function o(t){if(t)return t instanceof f.F?t:(0,c.HD)(t)?n.target(t,e.params(),e.options()):t.state||t.params?n.target(t.state||e.to(),t.params||e.params(),e.options()):void 0}};function M(e){return function(t,n){return(0,n.$$state()[e])(t,n)}}var y=M("onExit"),L=M("onRetain"),g=M("onEnter"),Y=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),v=n("./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js"),k=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),j=1e3,w=function(e){return new v.l(e.treeChanges().to).resolvePath("EAGER",e).then(Y.ZT)},b=function(e,t){return new v.l(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY",e).then(Y.ZT)},D=function(e){return new v.l(e.treeChanges().to).resolvePath("LAZY",e).then(Y.ZT)},T=function(e){var t=h.u.$q,n=e.views("entering");if(n.length)return t.all(n.map((function(e){return t.when(e.load())}))).then(Y.ZT)},S=function(e){var t=e.views("entering"),n=e.views("exiting");if(t.length||n.length){var o=e.router.viewService;n.forEach((function(e){return o.deactivateViewConfig(e)})),t.forEach((function(e){return o.activateViewConfig(e)})),o.sync()}},H=function(e){var t=e.router.globals,n=function(){t.transition===e&&(t.transition=null)};e.onSuccess({},(function(){t.successfulTransitions.enqueue(e),t.$current=e.$to(),t.current=t.$current.self,(0,Y.JG)(e.params(),t.params)}),{priority:1e4}),e.promise.then(n,n)},x=function(e){var t=e.options(),n=e.router.stateService,o=e.router.urlRouter;if("url"!==t.source&&t.location&&n.$current.navigable){var r={replace:"replace"===t.location};o.push(n.$current.navigable.url,n.params,r)}o.update(!0)},E=n("./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js"),P=n("./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js"),O=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),$=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),A=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js");function R(e){var t=e._ignoredReason();if(t){$.g4.traceTransitionIgnored(e);var n=e.router.globals.transition;return"SameAsCurrent"===t&&n&&n.abort(),A.i.ignored().toPromise()}}function F(e){if(!e.valid())throw new Error(e.error().toString())}var W={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,supercede:!0,custom:{},current:function(){return null},source:"unknown"},C=function(){function e(e){this._transitionCount=0,this._eventTypes=[],this._registeredHooks={},this._criteriaPaths={},this._router=e,this.$view=e.viewService,this._deregisterHookFns={},this._pluginapi=(0,Y.WR)((0,k.P0)(this),{},(0,k.P0)(this),["_definePathType","_defineEvent","_getPathTypes","_getEvents","getHooks"]),this._defineCorePaths(),this._defineCoreEvents(),this._registerCoreTransitionHooks(),e.globals.successfulTransitions.onEvict(_)}return e.prototype.onCreate=function(e,t,n){},e.prototype.onBefore=function(e,t,n){},e.prototype.onStart=function(e,t,n){},e.prototype.onExit=function(e,t,n){},e.prototype.onRetain=function(e,t,n){},e.prototype.onEnter=function(e,t,n){},e.prototype.onFinish=function(e,t,n){},e.prototype.onSuccess=function(e,t,n){},e.prototype.onError=function(e,t,n){},e.prototype.dispose=function(e){(0,Y.VO)(this._registeredHooks).forEach((function(e){return e.forEach((function(t){t._deregistered=!0,(0,Y.nA)(e,t)}))}))},e.prototype.create=function(e,t){return new r.u(e,t,this._router)},e.prototype._defineCoreEvents=function(){var e=o.k,t=O.I,n=this._criteriaPaths,r=!1,s=!0;this._defineEvent("onCreate",e.CREATE,0,n.to,r,t.LOG_REJECTED_RESULT,t.THROW_ERROR,s),this._defineEvent("onBefore",e.BEFORE,0,n.to),this._defineEvent("onStart",e.RUN,0,n.to),this._defineEvent("onExit",e.RUN,100,n.exiting,!0),this._defineEvent("onRetain",e.RUN,200,n.retained),this._defineEvent("onEnter",e.RUN,300,n.entering),this._defineEvent("onFinish",e.RUN,400,n.to),this._defineEvent("onSuccess",e.SUCCESS,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s),this._defineEvent("onError",e.ERROR,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s)},e.prototype._defineCorePaths=function(){var e=o.c.STATE,t=o.c.TRANSITION;this._definePathType("to",t),this._definePathType("from",t),this._definePathType("exiting",e),this._definePathType("retained",e),this._definePathType("entering",e)},e.prototype._defineEvent=function(e,t,n,o,r,a,i,d){void 0===r&&(r=!1),void 0===a&&(a=O.I.HANDLE_RESULT),void 0===i&&(i=O.I.REJECT_ERROR),void 0===d&&(d=!1);var u=new P.t(e,t,n,o,r,a,i,d);this._eventTypes.push(u),(0,s.BU)(this,this,u)},e.prototype._getEvents=function(e){return((0,c.$K)(e)?this._eventTypes.filter((function(t){return t.hookPhase===e})):this._eventTypes.slice()).sort((function(e,t){var n=e.hookPhase-t.hookPhase;return 0===n?e.hookOrder-t.hookOrder:n}))},e.prototype._definePathType=function(e,t){this._criteriaPaths[e]={name:e,scope:t}},e.prototype._getPathTypes=function(){return this._criteriaPaths},e.prototype.getHooks=function(e){return this._registeredHooks[e]},e.prototype._registerCoreTransitionHooks=function(){var e=this._deregisterHookFns;e.addCoreResolves=this.onCreate({},u),e.ignored=this.onBefore({},R,{priority:-9999}),e.invalid=function(e){return e.onBefore({},F,{priority:-1e4})}(this),e.redirectTo=function(e){return e.onStart({to:function(e){return!!e.redirectTo}},p)}(this),e.onExit=function(e){return e.onExit({exiting:function(e){return!!e.onExit}},y)}(this),e.onRetain=function(e){return e.onRetain({retained:function(e){return!!e.onRetain}},L)}(this),e.onEnter=function(e){return e.onEnter({entering:function(e){return!!e.onEnter}},g)}(this),e.eagerResolve=function(e){return e.onStart({},w,{priority:j})}(this),e.lazyResolve=function(e){return e.onEnter({entering:(0,k.P0)(!0)},b,{priority:j})}(this),e.resolveAll=function(e){return e.onFinish({},D,{priority:j})}(this),e.loadViews=function(e){return e.onFinish({},T)}(this),e.activateViews=function(e){return e.onSuccess({},S)}(this),e.updateGlobals=function(e){return e.onCreate({},H)}(this),e.updateUrl=function(e){return e.onSuccess({},x,{priority:9999})}(this),e.lazyLoad=(0,E.v)(this)},e}()},"./node_modules/@uirouter/core/lib-esm/url/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/url/urlConfig.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=function(){function e(e){var t=this;this.router=e,this.paramTypes=new o.ParamTypes,this._decodeParams=!0,this._isCaseInsensitive=!1,this._isStrictMode=!0,this._defaultSquashPolicy=!1,this.dispose=function(){return t.paramTypes.dispose()},this.baseHref=function(){return t.router.locationConfig.baseHref()},this.hashPrefix=function(e){return t.router.locationConfig.hashPrefix(e)},this.host=function(){return t.router.locationConfig.host()},this.html5Mode=function(){return t.router.locationConfig.html5Mode()},this.port=function(){return t.router.locationConfig.port()},this.protocol=function(){return t.router.locationConfig.protocol()}}return e.prototype.caseInsensitive=function(e){return this._isCaseInsensitive=(0,r.$K)(e)?e:this._isCaseInsensitive},e.prototype.defaultSquashPolicy=function(e){if((0,r.$K)(e)&&!0!==e&&!1!==e&&!(0,r.HD)(e))throw new Error("Invalid squash policy: "+e+". Valid policies: false, true, arbitrary-string");return this._defaultSquashPolicy=(0,r.$K)(e)?e:this._defaultSquashPolicy},e.prototype.strictMode=function(e){return this._isStrictMode=(0,r.$K)(e)?e:this._isStrictMode},e.prototype.type=function(e,t,n){var o=this.paramTypes.type(e,t,n);return(0,r.$K)(t)?this:o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js":(e,t,n)=>{"use strict";n.d(t,{y:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),a=function(){return(a=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},i=function(){function e(e){this.router=e}return e.prototype.fromConfig=function(e,t,n){return new s.Param(e,t,s.DefType.CONFIG,this.router.urlService.config,n)},e.prototype.fromPath=function(e,t,n){return new s.Param(e,t,s.DefType.PATH,this.router.urlService.config,n)},e.prototype.fromSearch=function(e,t,n){return new s.Param(e,t,s.DefType.SEARCH,this.router.urlService.config,n)},e}(),d=function(){function e(e){var t=this;this.router=e,this.paramFactory=new i(this.router),this.UrlMatcher=r.x,this.Param=s.Param,this.caseInsensitive=function(e){return t.router.urlService.config.caseInsensitive(e)},this.defaultSquashPolicy=function(e){return t.router.urlService.config.defaultSquashPolicy(e)},this.strictMode=function(e){return t.router.urlService.config.strictMode(e)},this.type=function(e,n,o){return t.router.urlService.config.type(e,n,o)||t}}return e.prototype.compile=function(e,t){var n=this.router.urlService.config,s=t&&!t.state&&t.params;t=s?a({state:{params:s}},t):t;var i={strict:n._isStrictMode,caseInsensitive:n._isCaseInsensitive,decodeParams:n._decodeParams};return new r.x(e,n.paramTypes,this.paramFactory,(0,o.l7)(i,t))},e.prototype.isMatcher=function(e){if(!(0,o.Kn)(e))return!1;var t=!0;return(0,o.Ed)(r.x.prototype,(function(n,r){(0,o.mf)(n)&&(t=t&&(0,o.$K)(e[r])&&(0,o.mf)(e[r]))})),t},e.prototype.$get=function(){var e=this.router.urlService.config;return e.paramTypes.enqueue=!1,e.paramTypes._flushTypeQueue(),this},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRouter.js":(e,t,n)=>{"use strict";n.d(t,{g:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js"),s=function(){function e(e){var t=this;this.router=e,this.sync=function(e){return t.router.urlService.sync(e)},this.listen=function(e){return t.router.urlService.listen(e)},this.deferIntercept=function(e){return t.router.urlService.deferIntercept(e)},this.match=function(e){return t.router.urlService.match(e)},this.initial=function(e){return t.router.urlService.rules.initial(e)},this.otherwise=function(e){return t.router.urlService.rules.otherwise(e)},this.removeRule=function(e){return t.router.urlService.rules.removeRule(e)},this.rule=function(e){return t.router.urlService.rules.rule(e)},this.rules=function(){return t.router.urlService.rules.rules()},this.sort=function(e){return t.router.urlService.rules.sort(e)},this.when=function(e,n,o){return t.router.urlService.rules.when(e,n,o)},this.urlRuleFactory=new r.I(e)}return e.prototype.update=function(e){var t=this.router.locationService;e?this.location=t.url():t.url()!==this.location&&t.url(this.location,!0)},e.prototype.push=function(e,t,n){var o=n&&!!n.replace;this.router.urlService.url(e.format(t||{}),o)},e.prototype.href=function(e,t,n){var r=e.format(t);if(null==r)return null;n=n||{absolute:!1};var s=this.router.urlService.config,a=s.html5Mode();if(a||null===r||(r="#"+s.hashPrefix()+r),r=function(e,t,n,r){return"/"===r?e:t?(0,o.Lb)(r)+e:n?r.slice(1)+e:e}(r,a,n.absolute,s.baseHref()),!n.absolute||!r)return r;var i=!a&&r?"/":"",d=s.port(),u=80===d||443===d?"":":"+d;return[s.protocol(),"://",s.host(),u,i,r].join("")},Object.defineProperty(e.prototype,"interceptDeferred",{get:function(){return this.router.urlService.interceptDeferred},enumerable:!1,configurable:!0}),e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRule.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>d,n:()=>u});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),d=function(){function e(e){this.router=e}return e.prototype.compile=function(e){return this.router.urlMatcherFactory.compile(e)},e.prototype.create=function(e,t){var n=this,s=i.l.isState,d=i.l.isStateDeclaration,m=(0,a.uj)([[r.HD,function(e){return m(n.compile(e))}],[(0,a.is)(o.x),function(e){return n.fromUrlMatcher(e,t)}],[(0,a.or)(s,d),function(e){return n.fromState(e,n.router)}],[(0,a.is)(RegExp),function(e){return n.fromRegExp(e,t)}],[r.mf,function(e){return new u(e,t)}]]),l=m(e);if(!l)throw new Error("invalid 'what' in when()");return l},e.prototype.fromUrlMatcher=function(e,t){var n=t;(0,r.HD)(t)&&(t=this.router.urlMatcherFactory.compile(t)),(0,a.is)(o.x)(t)&&(n=function(e){return t.format(e)});var i={urlMatcher:e,matchPriority:function(t){var n=e.parameters().filter((function(e){return e.isOptional}));return n.length?n.filter((function(e){return t[e.id]})).length/n.length:1e-6},type:"URLMATCHER"};return(0,s.l7)(new u((function(t){var n=e.exec(t.path,t.search,t.hash);return e.validates(n)&&n}),n),i)},e.prototype.fromState=function(e,t){var n=i.l.isStateDeclaration(e)?e.$$state():e,o={state:n,type:"STATE"};return(0,s.l7)(this.fromUrlMatcher(n.url,(function(e){var o=t.stateService,r=t.globals;o.href(n,e)!==o.href(r.current,r.params)&&o.transitionTo(n,e,{inherit:!0,source:"url"})})),o)},e.prototype.fromRegExp=function(e,t){if(e.global||e.sticky)throw new Error("Rule RegExp must not be global or sticky");var n=(0,r.HD)(t)?function(e){return t.replace(/\$(\$|\d{1,2})/,(function(t,n){return e["$"===n?0:Number(n)]}))}:t,o={regexp:e,type:"REGEXP"};return(0,s.l7)(new u((function(t){return e.exec(t.path)}),n),o)},e.isUrlRule=function(e){return e&&["type","match","handler"].every((function(t){return(0,r.$K)(e[t])}))},e}(),u=function(e,t){var n=this;this.match=e,this.type="RAW",this.matchPriority=function(e){return 0-n.$id},this.handler=t||s.yR}},"./node_modules/@uirouter/core/lib-esm/url/urlRules.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),i=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js");function d(e){if(!((0,a.mf)(e)||(0,a.HD)(e)||(0,a.is)(r.TargetState)(e)||r.TargetState.isDef(e)))throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");return(0,a.mf)(e)?e:(0,a.P0)(e)}o=function(e,t){var n=function(e,t){return(t.priority||0)-(e.priority||0)}(e,t);return 0!==n||0!==(n=function(e,t){var n={STATE:4,URLMATCHER:4,REGEXP:3,RAW:2,OTHER:1};return(n[e.type]||0)-(n[t.type]||0)}(e,t))||0!==(n=function(e,t){return e.urlMatcher&&t.urlMatcher?s.x.compare(e.urlMatcher,t.urlMatcher):0}(e,t))?n:function(e,t){var n={STATE:!0,URLMATCHER:!0};return n[e.type]&&n[t.type]?0:(e.$id||0)-(t.$id||0)}(e,t)};var u=function(){function e(e){this.router=e,this._sortFn=o,this._rules=[],this._id=0,this.urlRuleFactory=new i.I(e)}return e.prototype.dispose=function(e){this._rules=[],delete this._otherwiseFn},e.prototype.initial=function(e){var t=d(e);this.rule(this.urlRuleFactory.create((function(e,t){return 0===t.globals.transitionHistory.size()&&!!/^\/?$/.exec(e.path)}),t))},e.prototype.otherwise=function(e){var t=d(e);this._otherwiseFn=this.urlRuleFactory.create((0,a.P0)(!0),t),this._sorted=!1},e.prototype.removeRule=function(e){(0,a.nA)(this._rules,e)},e.prototype.rule=function(e){var t=this;if(!i.I.isUrlRule(e))throw new Error("invalid rule");return e.$id=this._id++,e.priority=e.priority||0,this._rules.push(e),this._sorted=!1,function(){return t.removeRule(e)}},e.prototype.rules=function(){return this.ensureSorted(),this._rules.concat(this._otherwiseFn?[this._otherwiseFn]:[])},e.prototype.sort=function(e){for(var t=this.stableSort(this._rules,this._sortFn=e||this._sortFn),n=0,o=0;o<t.length;o++)t[o]._group=n,o<t.length-1&&0!==this._sortFn(t[o],t[o+1])&&n++;this._rules=t,this._sorted=!0},e.prototype.ensureSorted=function(){this._sorted||this.sort()},e.prototype.stableSort=function(e,t){var n=e.map((function(e,t){return{elem:e,idx:t}}));return n.sort((function(e,n){var o=t(e.elem,n.elem);return 0===o?e.idx-n.idx:o})),n.map((function(e){return e.elem}))},e.prototype.when=function(e,t,n){var o=this.urlRuleFactory.create(e,t);return(0,a.$K)(n&&n.priority)&&(o.priority=n.priority),this.rule(o),o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlService.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRules.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlConfig.js"),a=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),i=function(){function e(e){var t=this;this.router=e,this.interceptDeferred=!1,this.rules=new r.h(this.router),this.config=new s.F(this.router),this.url=function(e,n,o){return t.router.locationService.url(e,n,o)},this.path=function(){return t.router.locationService.path()},this.search=function(){return t.router.locationService.search()},this.hash=function(){return t.router.locationService.hash()},this.onChange=function(e){return t.router.locationService.onChange(e)}}return e.prototype.dispose=function(){this.listen(!1),this.rules.dispose()},e.prototype.parts=function(){return{path:this.path(),search:this.search(),hash:this.hash()}},e.prototype.sync=function(e){if(!e||!e.defaultPrevented){var t=this.router,n=t.urlService,r=t.stateService,s={path:n.path(),search:n.search(),hash:n.hash()},i=this.match(s);(0,o.uj)([[o.HD,function(e){return n.url(e,!0)}],[a.TargetState.isDef,function(e){return r.go(e.state,e.params,e.options)}],[(0,o.is)(a.TargetState),function(e){return r.go(e.state(),e.params(),e.options())}]])(i&&i.rule.handler(i.match,s,this.router))}},e.prototype.listen=function(e){var t=this;if(!1!==e)return this._stopListeningFn=this._stopListeningFn||this.router.urlService.onChange((function(e){return t.sync(e)}));this._stopListeningFn&&this._stopListeningFn(),delete this._stopListeningFn},e.prototype.deferIntercept=function(e){void 0===e&&(e=!0),this.interceptDeferred=e},e.prototype.match=function(e){e=(0,o.l7)({path:"",search:{},hash:""},e);for(var t,n,r,s=this.rules.rules(),a=0;a<s.length&&(!t||t.rule._group===s[a]._group);a++){var i=(void 0,(r=(n=s[a]).match(e,this.router))&&{match:r,rule:n,weight:n.matchPriority(r)});t=!t||i&&i.weight>t.weight?i:t}return t},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla.js":(e,t,n)=>{"use strict";n.d(t,{$q:()=>o.$q});var o=n("./node_modules/@uirouter/core/lib-esm/vanilla/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js":(e,t,n)=>{"use strict";n.d(t,{U:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),s=function(){function e(e,t){var n=this;this.fireAfterUpdate=t,this._listeners=[],this._listener=function(e){return n._listeners.forEach((function(t){return t(e)}))},this.hash=function(){return(0,r.en)(n._get()).hash},this.path=function(){return(0,r.en)(n._get()).path},this.search=function(){return(0,r.Qf)((0,r.en)(n._get()).search)},this._location=o.Jz.location,this._history=o.Jz.history}return e.prototype.url=function(e,t){return void 0===t&&(t=!0),(0,o.$K)(e)&&e!==this._get()&&(this._set(null,null,e,t),this.fireAfterUpdate&&this._listeners.forEach((function(t){return t({url:e})}))),(0,r.Q2)(this)},e.prototype.onChange=function(e){var t=this;return this._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}},e.prototype.dispose=function(e){(0,o.Wk)(this._listeners)},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=function(){function e(e,t){void 0===t&&(t=!1),this._isHtml5=t,this._baseHref=void 0,this._hashPrefix=""}return e.prototype.port=function(){return location.port?Number(location.port):"https"===this.protocol()?443:80},e.prototype.protocol=function(){return location.protocol.replace(/:/g,"")},e.prototype.host=function(){return location.hostname},e.prototype.html5Mode=function(){return this._isHtml5},e.prototype.hashPrefix=function(e){return(0,o.$K)(e)?this._hashPrefix=e:this._hashPrefix},e.prototype.baseHref=function(e){return(0,o.$K)(e)&&(this._baseHref=e),(0,o.o8)(this._baseHref)&&(this._baseHref=this.getBaseHref()),this._baseHref},e.prototype.getBaseHref=function(){var e=document.getElementsByTagName("base")[0];return e&&e.href?e.href.replace(/^([^/:]*:)?\/\/[^/]*/,""):this._isHtml5?"/":location.pathname||"/"},e.prototype.dispose=function(){},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js":(e,t,n)=>{"use strict";n.d(t,{R:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!1)||this;return r.Jz.addEventListener("hashchange",n._listener,!1),n}return a(t,e),t.prototype._get=function(){return(0,r.Ld)(this._location.hash)},t.prototype._set=function(e,t,n,o){this._location.hash=n},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),r.Jz.removeEventListener("hashchange",this._listener)},t}(s.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/injector.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/core/lib-esm/common/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{W:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=function(){var e=this;this.dispose=r.ZT,this._baseHref="",this._port=80,this._protocol="http",this._host="localhost",this._hashPrefix="",this.port=function(){return e._port},this.protocol=function(){return e._protocol},this.host=function(){return e._host},this.baseHref=function(){return e._baseHref},this.html5Mode=function(){return!1},this.hashPrefix=function(t){return(0,o.$K)(t)?e._hashPrefix=t:e._hashPrefix}}},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>a});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),a=function(e){function t(t){return e.call(this,t,!0)||this}return s(t,e),t.prototype._get=function(){return this._url},t.prototype._set=function(e,t,n,o){this._url=n},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),a=n("./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js"),i=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js"),d=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js");n("./node_modules/@uirouter/core/lib-esm/vanilla/injector.js"),n("./node_modules/@uirouter/core/lib-esm/vanilla/q.js"),n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),(0,s._D)("vanilla.hashBangLocation",!1,r.R,o.u),(0,s._D)("vanilla.pushStateLocation",!0,a.h,o.u),(0,s._D)("vanilla.memoryLocation",!1,i.I,d.W)},"./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!0)||this;return n._config=t.urlService.config,s.Jz.addEventListener("popstate",n._listener,!1),n}return a(t,e),t.prototype._getBasePrefix=function(){return(0,s.Lb)(this._config.baseHref())},t.prototype._get=function(){var e=this._location,t=e.pathname,n=e.hash,o=e.search;o=(0,s.C7)(o)[1],n=(0,s.cW)(n)[1];var r=this._getBasePrefix(),a=t===this._config.baseHref(),i=t.substr(0,r.length)===r;return(t=a?"/":i?t.substring(r.length):t)+(o?"?"+o:"")+(n?"#"+n:"")},t.prototype._set=function(e,t,n,o){var r=this._getBasePrefix(),s=n&&"/"!==n[0]?"/":"",a=""===n||"/"===n?this._config.baseHref():r+s+n;o?this._history.replaceState(e,t,a):this._history.pushState(e,t,a)},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),s.Jz.removeEventListener("popstate",this._listener)},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/q.js":(e,t,n)=>{"use strict";n.d(t,{$q:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r={when:function(e){return new Promise((function(t,n){return t(e)}))},reject:function(e){return new Promise((function(t,n){n(e)}))},defer:function(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e},all:function(e){if((0,o.kJ)(e))return Promise.all(e);if((0,o.Kn)(e)){var t=Object.keys(e).map((function(t){return e[t].then((function(e){return{key:t,val:e}}))}));return r.all(t).then((function(e){return e.reduce((function(e,t){return e[t.key]=t.val,e}),{})}))}}}},"./node_modules/@uirouter/core/lib-esm/vanilla/utils.js":(e,t,n)=>{"use strict";n.d(t,{Qf:()=>s,en:()=>a,Q2:()=>i,_D:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=function(e,t){var n=t[0],r=t[1];return e.hasOwnProperty(n)?(0,o.kJ)(e[n])?e[n].push(r):e[n]=[e[n],r]:e[n]=r,e},s=function(e){return e.split("&").filter(o.yR).map(o.Fb).reduce(r,{})};function a(e){var t=function(e){return e||""},n=(0,o.cW)(e).map(t),r=n[0],s=n[1],a=(0,o.C7)(r).map(t);return{path:a[0],search:a[1],hash:s,url:e}}var i=function(e){var t=e.path(),n=e.search(),r=e.hash(),s=Object.keys(n).map((function(e){var t=n[e];return((0,o.kJ)(t)?t:[t]).map((function(t){return e+"="+t}))})).reduce(o.M7,[]).join("&");return t+(s?"?"+s:"")+(r?"#"+r:"")};function d(e,t,n,o){return function(r){var s=r.locationService=new n(r),a=r.locationConfig=new o(r,t);return{name:e,service:s,configuration:a,dispose:function(e){e.dispose(s),e.dispose(a)}}}}},"./node_modules/@uirouter/core/lib-esm/view/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/view/view.js":(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),i=function(){function e(e){var t=this;this.router=e,this._uiViews=[],this._viewConfigs=[],this._viewConfigFactories={},this._listeners=[],this._pluginapi={_rootViewContext:this._rootViewContext.bind(this),_viewConfigFactory:this._viewConfigFactory.bind(this),_registeredUIView:function(e){return(0,o.sE)(t._uiViews,(function(n){return t.router.$id+"."+n.id===e}))},_registeredUIViews:function(){return t._uiViews},_activeViewConfigs:function(){return t._viewConfigs},_onSync:function(e){return t._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}}}}return e.normalizeUIViewTarget=function(e,t){void 0===t&&(t="");var n=t.split("@"),o=n[0]||"$default",r=(0,s.HD)(n[1])?n[1]:"^",a=/^(\^(?:\.\^)*)\.(.*$)/.exec(o);if(a&&(r=a[1],o=a[2]),"!"===o.charAt(0)&&(o=o.substr(1),r=""),/^(\^(?:\.\^)*)$/.exec(r)){var i=r.split(".").reduce((function(e,t){return e.parent}),e);r=i.name}else"."===r&&(r=e.name);return{uiViewName:o,uiViewContextAnchor:r}},e.prototype._rootViewContext=function(e){return this._rootContext=e||this._rootContext},e.prototype._viewConfigFactory=function(e,t){this._viewConfigFactories[e]=t},e.prototype.createViewConfig=function(e,t){var n=this._viewConfigFactories[t.$type];if(!n)throw new Error("ViewService: No view config factory registered for type "+t.$type);var o=n(e,t);return(0,s.kJ)(o)?o:[o]},e.prototype.deactivateViewConfig=function(e){a.g4.traceViewServiceEvent("<- Removing",e),(0,o.nA)(this._viewConfigs,e)},e.prototype.activateViewConfig=function(e){a.g4.traceViewServiceEvent("-> Registering",e),this._viewConfigs.push(e)},e.prototype.sync=function(){var t=this,n=this._uiViews.map((function(e){return[e.fqn,e]})).reduce(o.bb,{});function s(e){for(var t=e.viewDecl.$context,n=0;++n&&t.parent;)t=t.parent;return n}var i=(0,r.WA)((function(e,t,n,o){return t*(e(n)-e(o))})),d=this._uiViews.sort(i((function(e){var t=function(e){return e&&e.parent?t(e.parent)+1:1};return 1e4*e.fqn.split(".").length+t(e.creationContext)}),1)).map((function(o){var r=t._viewConfigs.filter(e.matches(n,o));return r.length>1&&r.sort(i(s,-1)),{uiView:o,viewConfig:r[0]}})),u=d.map((function(e){return e.viewConfig})),m=this._viewConfigs.filter((function(e){return!(0,o.d3)(u,e)})).map((function(e){return{uiView:void 0,viewConfig:e}}));d.forEach((function(e){-1!==t._uiViews.indexOf(e.uiView)&&e.uiView.configUpdated(e.viewConfig)}));var l=d.concat(m);this._listeners.forEach((function(e){return e(l)})),a.g4.traceViewSync(l)},e.prototype.registerUIView=function(e){a.g4.traceViewServiceUIViewEvent("-> Registering",e);var t=this._uiViews;return t.filter((function(t){return t.fqn===e.fqn&&t.$type===e.$type})).length&&a.g4.traceViewServiceUIViewEvent("!!!! duplicate uiView named:",e),t.push(e),this.sync(),function(){-1!==t.indexOf(e)?(a.g4.traceViewServiceUIViewEvent("<- Deregistering",e),(0,o.nA)(t)(e)):a.g4.traceViewServiceUIViewEvent("Tried removing non-registered uiView",e)}},e.prototype.available=function(){return this._uiViews.map((0,r.vg)("fqn"))},e.prototype.active=function(){return this._uiViews.filter((0,r.vg)("$config")).map((0,r.vg)("name"))},e.matches=function(e,t){return function(n){if(t.$type!==n.viewDecl.$type)return!1;var r=n.viewDecl,s=r.$uiViewName.split("."),a=t.fqn.split(".");if(!(0,o.fS)(s,a.slice(0-s.length)))return!1;var i=1-s.length||void 0,d=a.slice(0,i).join("."),u=e[d].creationContext;return r.$uiViewContextAnchor===(u&&u.name)}},e}()},"./node_modules/angular-aria/angular-aria.js":()=>{!function(e,t){"use strict";var n="ngAriaDisable",o=t.module("ngAria",["ng"]).info({angularVersion:"1.8.2"}).provider("$aria",(function(){var e={ariaHidden:!0,ariaChecked:!0,ariaReadonly:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaValue:!0,tabindex:!0,bindKeydown:!0,bindRoleForClick:!0};function o(t,o,r,a){return function(i,d,u){if(!u.hasOwnProperty(n)){var m=u.$normalize(o);!e[m]||s(d,r)||u[m]||i.$watch(u[t],(function(e){e=a?!e:!!e,d.attr(o,e)}))}}}this.config=function(n){e=t.extend(e,n)},this.$get=function(){return{config:function(t){return e[t]},$$watchExpr:o}}})),r=["BUTTON","A","INPUT","TEXTAREA","SELECT","DETAILS","SUMMARY"],s=function(e,t){if(-1!==t.indexOf(e[0].nodeName))return!0};o.directive("ngShow",["$aria",function(e){return e.$$watchExpr("ngShow","aria-hidden",[],!0)}]).directive("ngHide",["$aria",function(e){return e.$$watchExpr("ngHide","aria-hidden",[],!1)}]).directive("ngValue",["$aria",function(e){return e.$$watchExpr("ngValue","aria-checked",r,!1)}]).directive("ngChecked",["$aria",function(e){return e.$$watchExpr("ngChecked","aria-checked",r,!1)}]).directive("ngReadonly",["$aria",function(e){return e.$$watchExpr("ngReadonly","aria-readonly",r,!1)}]).directive("ngRequired",["$aria",function(e){return e.$$watchExpr("ngRequired","aria-required",r,!1)}]).directive("ngModel",["$aria",function(e){function t(t,n,o,a){return e.config(n)&&!o.attr(t)&&(a||!s(o,r))&&("hidden"!==o.attr("type")||"INPUT"!==o[0].nodeName)}function o(e,t){return!t.attr("role")&&t.attr("type")===e&&!s(t,r)}return{restrict:"A",require:"ngModel",priority:200,compile:function(r,s){if(!s.hasOwnProperty(n)){var a=function(e,t){var n=e.type,o=e.role;return"checkbox"===(n||o)||"menuitemcheckbox"===o?"checkbox":"radio"===(n||o)||"menuitemradio"===o?"radio":"range"===n||"progressbar"===o||"slider"===o?"range":""}(s);return{post:function(n,r,s,i){var d=t("tabindex","tabindex",r,!1);function u(){return i.$modelValue}switch(a){case"radio":case"checkbox":o(a,r)&&r.attr("role",a),t("aria-checked","ariaChecked",r,!1)&&n.$watch(u,"radio"===a?function(e){var t=s.value==i.$viewValue;r.attr("aria-checked",t)}:function(){r.attr("aria-checked",!i.$isEmpty(i.$viewValue))}),d&&r.attr("tabindex",0);break;case"range":if(o(a,r)&&r.attr("role","slider"),e.config("ariaValue")){var m=!r.attr("aria-valuemin")&&(s.hasOwnProperty("min")||s.hasOwnProperty("ngMin")),l=!r.attr("aria-valuemax")&&(s.hasOwnProperty("max")||s.hasOwnProperty("ngMax")),_=!r.attr("aria-valuenow");m&&s.$observe("min",(function(e){r.attr("aria-valuemin",e)})),l&&s.$observe("max",(function(e){r.attr("aria-valuemax",e)})),_&&n.$watch(u,(function(e){r.attr("aria-valuenow",e)}))}d&&r.attr("tabindex",0)}!s.hasOwnProperty("ngRequired")&&i.$validators.required&&t("aria-required","ariaRequired",r,!1)&&s.$observe("required",(function(){r.attr("aria-required",!!s.required)})),t("aria-invalid","ariaInvalid",r,!0)&&n.$watch((function(){return i.$invalid}),(function(e){r.attr("aria-invalid",!!e)}))}}}}}}]).directive("ngDisabled",["$aria",function(e){return e.$$watchExpr("ngDisabled","aria-disabled",r,!1)}]).directive("ngMessages",(function(){return{restrict:"A",require:"?ngMessages",link:function(e,t,o,r){o.hasOwnProperty(n)||t.attr("aria-live")||t.attr("aria-live","assertive")}}})).directive("ngClick",["$aria","$parse",function(e,t){return{restrict:"A",compile:function(o,a){if(!a.hasOwnProperty(n)){var i=t(a.ngClick);return function(t,n,o){s(n,r)||(e.config("bindRoleForClick")&&!n.attr("role")&&n.attr("role","button"),e.config("tabindex")&&!n.attr("tabindex")&&n.attr("tabindex",0),!e.config("bindKeydown")||o.ngKeydown||o.ngKeypress||o.ngKeyup||n.on("keydown",(function(e){var n=e.which||e.keyCode;13!==n&&32!==n||(-1!==r.indexOf(e.target.nodeName)||e.target.isContentEditable||e.preventDefault(),t.$apply((function(){i(t,{$event:e})})))})))}}}}}]).directive("ngDblclick",["$aria",function(e){return function(t,o,a){a.hasOwnProperty(n)||!e.config("tabindex")||o.attr("tabindex")||s(o,r)||o.attr("tabindex",0)}}])}(window,window.angular)},"./node_modules/angular-rateit/dist/ng-rateit.js":()=>{angular.module("ngRateIt",["ng"]).directive("ngRateIt",["$q",function(e){"use strict";return{scope:{ngModel:"=",min:"=?min",max:"=?max",step:"=?step",readOnly:"&?readOnly",pristine:"=?pristine",resetable:"&?resetable",starWidth:"=?starWidth",starHeight:"=?starHeight",canelWidth:"=?canelWidth",cancelHeight:"=?cancelHeight",rated:"&?rated",reset:"&?reset",beforeRated:"&?beforeRated",beforeReset:"&?beforeReset"},templateUrl:"ngRateIt/ng-rate-it.html",require:"ngModel",replace:!0,link:function(t,n,o){o.readOnly||(t.readOnly=function(){return!1}),o.resetable||(t.resetable=function(){return!0}),o.beforeRated||(t.beforeRated=function(){var t=e.defer();return t.resolve(),t.promise}),o.rated||(t.rated=function(){}),o.beforeReset||(t.beforeReset=function(){var t=e.defer();return t.resolve(),t.promise}),o.reset||(t.reset=function(){})},controller:"ngRateItController"}}]).controller("ngRateItController",["$scope","$timeout",function(e,t){"use strict";e.isTouch=!!window.hasOwnProperty("ontouchstart")||window.navigator.msMaxTouchPoints>0,e.orgValue=angular.copy(e.ngModel),e.min=e.min||0,e.max=e.max||5,e.step=e.step||.5,e.pristine=e.orgValue===e.ngModel,e.starWidth=e.starWidth||16,e.starPartWidth=e.starWidth*e.step,e.starHeight=e.starHeight||16,e.canelWidth=e.canelWidth||e.starWidth,e.cancelHeight=e.cancelHeight||e.starHeight;var n=e.max-e.min,o=n/e.step,r=e.$watch("ngModel",(function(){e.pristine=e.orgValue===e.ngModel})),s=function(e){return(e+1)/o*n};e.getStartParts=function(){return new Array(o)},e.getStarOffset=function(t){var n=1/e.step;return-e.starWidth/n*(t%n)},e.isSelected=function(t){return s(t)<=e.ngModel-e.min},e.removeRating=function(){e.resetable()&&!e.readOnly()&&e.beforeReset({rating:e.ngModel}).then((function(){e.ngModel=e.min,e.reset({rating:e.ngModel})}))},e.setValue=function(n){if(!e.readOnly()){var o=angular.copy(e.min+s(n));e.beforeRated({rating:o}).then((function(){e.ngModel=o,t((function(){e.rated({rating:e.ngModel})}))}))}},e.$on("$destroy",(function(){r()}))}]).run(["$templateCache",function(e){"use strict";e.put("ngRateIt/ng-rate-it.html",'<div class="ngrateiti needsclick" ng-class="{\'ngrateit-readonly\': readOnly()}"><a ng-if="!readOnly() && resetable()"ng-click="removeRating()"class="ngrateit-reset ngrateit-star needsclick"ng-style="{\'width\': canelWidth+\'px\', \'height\':cancelHeight+\'px\'}"></a><div ng-if="!hide" id="origin" class="ngrateit-rating needsclick" ng-class="{\'ngrateit-hashover\':!isTouch}"><span class="ngrateit-star ngrateit-bg-star needsclick"ng-repeat="i in getStartParts() track by $index" ng-class="{\'ngrateit-selected\': isSelected($index) }"ng-click="setValue($index)"ng-style="{\'width\': starPartWidth+\'px\', \'height\':starHeight+\'px\', \'background-position\': getStarOffset($index)+\'px 0\'}"></span></div></div>')}])},"./src/js/index.module.js":(e,t,n)=>{"use strict";n("./node_modules/angular-animate/index.js"),n("./node_modules/angular-aria/index.js"),n("./node_modules/angular-messages/index.js"),n("./node_modules/angular-material/index.js"),n("./node_modules/angular-resource/index.js"),n("./node_modules/angular-sanitize/index.js"),n("./node_modules/ng-csv/build/ng-csv.min.js"),n("./node_modules/ng-embed/src/ng-embed.js");var o=n("./node_modules/@uirouter/angularjs/lib-esm/index.js"),r=(n("./node_modules/angular-local-storage/index.js"),n("./node_modules/angular-rateit/dist/ng-rateit.js"),n("./node_modules/@flowjs/ng-flow/dist/ng-flow.js"),n("./node_modules/emojionearea/dist/emojionearea.js"),n("./node_modules/jquery-textcomplete/dist/jquery.textcomplete.js"),n("./node_modules/moment/moment.js")),s=n.n(r),a=n("./node_modules/lodash.map/index.js"),i=n.n(a);function d(e,t,n,o,r,a,d,u,m,l){const _=this;function c(n){a.updateStorage(u,{up:n}).then((o=>{var r;e.layout=o,r=!0===n?"show":"hide",t.parent.postMessage({cmd:r},"*"),l((()=>{e.$apply()}))})).catch(a.onStorageError)}_.$onInit=function(){console.debug("IndexController::onInit() VISITOR",e.visitor),e.status="init";const o=e.settings.color,s=e.settings.textColor,i=e.settings.textButtonColor||e.settings.textColor,d=e.settings.color_button,l=e.settings.backgroundColor,_=Math.max(document.documentElement.clientHeight,window.innerHeight||0),h=document.documentElement.clientWidth;document.documentElement.style.setProperty("--xc-ws-div-color",o),document.documentElement.style.setProperty("--xc-ws-text-color",s),document.documentElement.style.setProperty("--xc-ws-text-button-color",i),document.documentElement.style.setProperty("--xc-ws-button-color",d),document.documentElement.style.setProperty("--xc-ws-background-color",l),document.documentElement.style.setProperty("--xc-ws-client-height",_),document.documentElement.style.setProperty("--xc-ws-client-width",h);let f=!1;const p=t=>null!==t&&t[e.location]||{},M=a.getItem(m).then(p),y=a.getItem(u).then(p);r.all([M,y]).then((r=>{let[a,i]=r;e.visitor=a,e.layout=i,e.visitor.interaction&&e.layout.up?f=!0:e.layout.up=!0,"bottom_right"===e.settings.alignment&&c(f),n.go(function(){var t,n;const o=e.settings.online,r=!(null==e||null===(t=e.visitor)||void 0===t||null===(n=t.interaction)||void 0===n||!n.id),s=Number(e.settings.maxInteractions)&&Number(e.settings.openedInteractions)>=Number(e.settings.maxInteractions);return!!(r||!s&&o)}()?"app.online":"app.offline",null,{location:"replace"});let d="";d=e.settings.online||!e.settings.hideWhenOffline?"init":"offline",t.parent.postMessage({cmd:d,div_color:o,text_color:s,client_height:_,client_width:h},"*");const u=document.createElement("style");document.head.appendChild(u),u.sheet.insertRule(".mdi-send:before {color:"+e.settings.color+"!important}")})).catch(a.onStorageError)},_.close=function(){const t=e.visitor.interaction;if(t&&t.id){const r=o.confirm().parent(angular.element(document.querySelector("#chat-app"))).clickOutsideToClose(!0).title(e.settings.closingQuestion||"Do you want to close the interaction?").ok("Ok").cancel("Cancel");o.show(r).then((function(){return d.chatInteraction.customUpdate({id:t.id,closed:!0,closeReason:"contact"}).$promise})).then((function(){n.go("app.closing",null,{location:"replace"})})).catch((function(e){console.error("keep open",e)}))}},_.toggle=c,_.download=function(){const t=r.defer(),n=e.visitor.interaction;return n&&n.id&&d.chatInteraction.getMessages({intid:n.id,includeAll:!0}).$promise.then((function(n){t.resolve(i()(n.rows.slice(1),(function(t){let n;if("in"===t.direction&&(n=e.settings.customerAlias||e.visitor.from||"Visitor"+t.ContactId),"out"===t.direction)switch(e.settings.agentIdentifier){case"website_alias":n=t.UserId?e.settings.agentAlias+t.UserId:"System";break;case"agent_alias":n=t.UserId?t.User.alias||t.User.fullname:"System";break;case"agent_fullname":n=t.UserId?t.User.fullname:"System";break;default:n=t.UserId?e.settings.agentAlias+t.UserId:"System"}return{sender:n,message:t.body,createdAt:s()(t.createdAt).format("MM/DD/YYYY HH:mm:ss")}})))})).catch((function(e){console.error(e)})),t.promise},_.getHeaderShape=function(){return"rounded"===e.settings.header_shape?"15px":"0px"};const h={online:["online","chat","waiting","closing","unmanaged"],offline:["offline"]};Object.defineProperty(e,"actualTitle",{get(){let t=e.settings.defaultTitle;return h.online.includes(e.status)?t=e.settings.header_online:h.offline.includes(e.status)&&(t=e.settings.header_offline),t}}),window.addEventListener("message",(function(e){"show"===e.data.evt?c(!0):"hide"===e.data.evt&&c(!1)}),!1)}d.$inject=["$rootScope","$window","$state","$mdDialog","$q","RemoteStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR","$timeout"];var u=n("./node_modules/lodash.forin/index.js"),m=n.n(u),l=n("./node_modules/lodash.isnil/index.js"),_=n.n(l),c=n("./src/js/chat/chat.tpl.html"),h=n("./src/js/closing/closing.tpl.html"),f=n("./src/js/offline/offline.tpl.html"),p=n("./src/js/online/online.tpl.html"),M=n("./src/js/unmanaged/unmanaged.tpl.html"),y=n("./src/js/waiting/waiting.tpl.html");function L(e,t){const n=t.search();e.settings={cursor:"pointer",hide:!0},m()(n,(function(t,n){""===t||_()(t)||("true"===t&&(t=!0),"false"===t&&(t=!1),e.settings[n]=t)})),e.location=e.settings.location,e.layout={up:!1},e.visitor={}}function g(e,t,n,o,r){t.html5Mode(!0),n.defaults.headers.get||(n.defaults.headers.get={}),n.defaults.headers.get["If-Modified-Since"]="Mon, 26 Jul 1997 05:00:00 GMT",n.defaults.headers.get["Cache-Control"]="no-cache",n.defaults.headers.get.Pragma="no-cache",o.setPrefix(r),e.state("app",{abstract:!0}).state("app.waiting",{url:"/waiting",templateUrl:y,controller:"WaitingController as vm"}).state("app.online",{url:"/online",templateUrl:p,controller:"OnlineController as vm"}).state("app.offline",{url:"/offline",templateUrl:f,controller:"OfflineController as vm"}).state("app.chat",{url:"/chat",templateUrl:c,controller:"ChatController as vm"}).state("app.unmanaged",{url:"/unmanaged",templateUrl:M,controller:"UnmanagedController as vm"}).state("app.closing",{url:"/closing",templateUrl:h,controller:"ClosingController as vm"})}g.$inject=["$stateProvider","$locationProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX"],L.$inject=["$rootScope","$location"];var Y=n("./node_modules/lodash.merge/index.js"),v=n.n(Y);function k(e,t,n,o,r,s,a,i){const d=this;function u(t){return function(o){d.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").position("top");n.show(r)}}function m(){e.loading=!1}function l(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function _(){d.form={},d.upColor=null,d.downColor=null,d.userForm.$setPristine(),d.userForm.$setUntouched(),delete e.visitor.interaction,e.enableDownload=!1}d.$onInit=function(){console.debug("ClosingController::onInit() VISITOR",e.visitor),e.status="closing",r.all([s.removeItem(a).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(s.onStorageError),s.removeItem(i).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(s.onStorageError)]).then((()=>e.loading=!1))},d.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.close(v()({id:e.visitor.interaction.id,ratingType:e.settings.ratingType,customer:e.settings.customerAlias||e.visitor.from},d.form)).$promise.then((function(){delete d.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(_).then(l).catch(u("submit")).finally(m):(m(),u("submit"))},d.skip=function(){_(),l()},d.form={},d.errors={}}function j(e,t){const n={id:"@id",token:e.settings.token},o={};return o.baseUrl=e.settings.remote+"/api/",o.chatWebsite=t(o.baseUrl+"chat/websites/:id",n,{notify:{method:"POST",url:o.baseUrl+"chat/websites/:id/notify"},offline:{method:"POST",url:o.baseUrl+"chat/websites/:id/offline"},getFields:{method:"GET",url:o.baseUrl+"chat/websites/:id/fields"}}),o.chatInteraction=t(o.baseUrl+"chat/interactions/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/interactions/:id"},customUpdate:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/custom_update"},close:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/close"},getMessages:{method:"GET",url:o.baseUrl+"chat/interactions/:intid/my_messages"},uploadAttachment:{method:"POST",url:o.baseUrl+"chat/interactions/:id/attachment_upload",headers:{"Content-Type":void 0},transformRequest:angular.identity},downloadAttachment:{method:"GET",url:o.baseUrl+"chat/interactions/:id/attachment_download"},abandon:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/abandon"}}),o.chatMessage=t(o.baseUrl+"chat/messages/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/messages/:id"}}),o}k.$inject=["$rootScope","$state","$mdToast","api","$q","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"],j.$inject=["$rootScope","$resource"];var w=n("./node_modules/lodash.find/index.js"),b=n.n(w),D=n("./node_modules/lodash.values/index.js"),T=n.n(D),S=n("./node_modules/jquery/dist/jquery.js");function H(e,t,n,r,s,a,i,d,u,m,l,c){const h=this;let f,p,M,y;function L(){o.$q.all([m.removeItem(l).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(m.onStorageError),m.removeItem(c).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(m.onStorageError)]).then((()=>{t.settings.online?a.go("app.online",null,{location:"replace"}):a.go("app.offline",null,{location:"replace"})}))}function g(){n((function(){const e=s[0].getElementsByClassName("chat-messages")[0];e&&(e.scrollTop=e.scrollHeight)}))}function Y(){h.errors={},t.$emit("hide");const e=d.simple().textContent("FILE TOO BIG: The max allowed size is 16MB").toastClass("md-warning-toast size "+t.settings.header_shape).parent(angular.element(document.querySelector("#chat-toolbar")));d.show(e)}function k(e){return function(t){h.errors[e]=t.data,g()}}function j(e){u.chatWebsite.notify(e).$promise.then((function(e){h.errors={};let n=!1;_()(t.visitor.interaction)&&(t.visitor.interaction={id:e.interaction.id},n=!0),t.visitor.interactionStarted||(t.visitor.interactionStarted=!0,n=!0),n&&m.updateStorage(l,t.visitor).then((e=>{t.visitor=e})).catch(m.onStorageError),f[0].emojioneArea.setText(""),g()})).catch(k("chatMessageError"))}function w(){t.visitor&&t.visitor.interaction&&t.visitor.interaction.id&&u.chatInteraction.get({id:t.visitor.interaction.id}).$promise.then((function(e){delete h.errors.getInteraction,e.closed&&(t.visitor.interaction.closed=!0,m.updateStorage(l,t.visitor).then((e=>{t.visitor=e})).catch(m.onStorageError),"unmanaged"===e.disposition?a.go("app.unmanaged",null,{location:"replace"}):a.go("app.closing",null,{location:"replace"}))})).catch((function(e){switch(e.status){case 403:a.go("app.closing",null,{location:"replace"});break;case 404:L();break;case 405:a.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}function D(e){const n=f[0].emojioneArea.getText();e&&13===e.keyCode&&e.shiftKey||e&&13!==e.keyCode||""!==n&&j(v()({body:n},t.visitor))}function H(){var e,n;null!=t&&null!==(e=t.visitor)&&void 0!==e&&null!==(n=e.interaction)&&void 0!==n&&n.id&&u.chatInteraction.getMessages({intid:t.visitor.interaction.id,includeAgent:!0,id:y||void 0}).$promise.then((function(e){if(delete h.errors.interaction,e.count){let o=!1,r=0;for(r=0,o=!1;r<e.rows.length;r++){const s=b()(t.messages,{id:e.rows[r].id});s?e.rows[r].read&&(s.read=!0):(o=!0,t.messages.push(e.rows[r])),"out"!==e.rows[r].direction||e.rows[r].read||(n=e.rows[r].id,u.chatMessage.update({id:n,read:!0}).$promise.catch((function(e){console.error(e)})))}o&&g(),e.rows[r-1].read&&(y=e.rows[r-1].id),y&&!t.visitor.interactionStarted&&m.updateStorage(l,{...t.visitor,interactionStarted:!0}).then((e=>{t.visitor=e}))}var n})).catch((function(e){switch(e.status){case 403:a.go("app.closing",null,{location:"replace"});break;case 405:a.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}h.errors={},t.messages=[],h.emojiOptions={watchEmbedData:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank"},h.ngFlowOptions={allowDuplicateUploads:!0},h.$onInit=function(){console.debug("ChatController::onInit() VISITOR",t.visitor),t.status="chat",t.loading=!1,t.settings.showMenu=!0,h.replyMessage="",t.visitor.interaction&&t.visitor.interaction.closed?L():(w(),p=r(H,2e3),M=r(w,3e3)),f=S("#emojionearea").emojioneArea({placeholder:t.settings.placeholderMessage||"Type a message",events:{keyup:function(e,t){D(t)},ready:function(){this.setFocus()}}})},h.reply=D,h.reply_button=function(){const e=f[0].emojioneArea.getText();""!==e&&(j(v()({body:e},t.visitor)),f[0].emojioneArea.setFocus())},h.fileAdded=function(e){if(e.size>16777216)return void Y();const n=new FormData;n.append("file",e.file),i.post(t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_upload?token="+t.settings.token,n,{transformRequest:angular.identity,headers:{"Content-Type":void 0}}).then((function(e){(e=e.data).id?(h.errors={},j(v()({body:'<a href="'+t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_download?attachId="+e.id+"&token="+t.settings.token+'" target="_blank">'+e.name+"</a>",AttachmentId:e.id},t.visitor))):k("sendAttachment")}),k("sendAttachment"))},h.handleSizeError=Y,e.$on("$destroy",(function(){r.cancel(p),r.cancel(M),p=null,M=null})),t.$on("$download",(function(e,n){n&&n(T()(t.messages))}))}H.$inject=["$scope","$rootScope","$timeout","$interval","$document","$state","$http","$mdToast","api","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"];var x=n("./node_modules/lodash.random/index.js"),E=n.n(x),P=n("./node_modules/lodash.clonedeep/index.js"),O=n.n(P),$=n("./node_modules/json-form-data/src/jsonToFormData.js"),A=n.n($);function R(e,t,n,o,r,s,a){const i=this;let d=null,u=null;t.typeField="";const m={showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}};function l(){delete i.errors.submit,t.$emit("hide"),i.fields=O()(u),i.form={},i.userForm.$setPristine(),i.userForm.$setUntouched();const e=r.simple().textContent(t.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));r.show(e)}i.trustAsHtml=function(e){return n.trustAsHtml(e)},i.initUploadButton=function(t){const n=i.fields[t],o=s.find(".upload-item");if(o.length){const t=angular.element(o[0].querySelector(".upload-button")),r=angular.element(o[0].querySelector("input[type=file]")),s=t.find("label");s.length&&s.css("display","none"),t.on("click",(()=>{s.css("display","none"),"function"==typeof r.trigger?r.trigger("click"):r[0].click()})),r.on("change",(t=>{e.$apply((function(){"string"==typeof n.props.error&&(n.props.error=null);const e=Array.from(t.target.files),o=1048576*n.config.size;e.some((e=>e.size>=o))?(n.options=[],n.props.error=n.config.sizeErrMessage):n.options=e.map((e=>{const{name:t,size:n,type:o}=e;return{name:t,size:n,type:o,file:e}})),i.form[n.props.title]=n.options}))}))}},i.removeFileItem=function(e,t){e.options.splice(t,1),i.form[e.props.title]=e.options},i.setupFileInput=function(e){console.log("form item setup",e);const t=s.find(".upload-item"),n=angular.element(t[0].querySelector("input[type=file]")),{multipleUpload:o,accept:r}=e.config;o&&n.attr("multiple","multiple"),r&&n[0].setAttribute("accept",r)},i.makeFileOptionsVisible=function(){const e=Array.from(s.find(".filename-label")),t=e[e.length-1];t&&t.scrollIntoView&&t.scrollIntoView()},i.$onInit=function(){console.debug("OfflineController::onInit() VISITOR",t.visitor),t.status="offline",i.visitor={id:t.settings.id,mapKeyOffline:"firstName",from:"Anonymous"+E()(1,1e6)},t.settings.showMenu=!1,t.loading=!1,o.chatWebsite.getFields({id:t.settings.id,online:!1}).$promise.then((function(e){e.count&&(d=e.fromKey,u=O()(e.rows),i.fields=O()(u))})).then((function(){for(let e=0;e<i.fields.length;e++){const n=i.fields[e];if(t.typeField+=n.type,void 0!==n.props&&n.props.helpText){const t=RegExp.prototype.test.bind(/(<([^>]+)>)/i);i.checkHTML[e]=t(n.props.helpText)}}})).catch((function(e){console.error(e)}))},i.submit=function(){t.loading=!0;const e={...i.form};for(let n=0;n<i.fields.length;n++){const o=i.fields[n];o.props&&void 0!==e[o.props.title]&&(_()(o.cmField)||(i.visitor[o.cmField]=Array.isArray(e[o.props.title])?e[o.props.title].join():e[o.props.title]),n===d&&(_()(t.settings.mapKeyOffline)||(i.visitor.mapKeyOffline=t.settings.mapKeyOffline,i.visitor.from=Array.isArray(e[o.props.title])?e[o.props.title].join():e[o.props.title])),"upload"===o.type&&(e[o.props.title]=e[o.props.title].map((e=>e.file))))}const n=Array.isArray(i.fields)?i.fields.filter((e=>"upload"===e.type)):[],s=v()({body:e},i.visitor),u=null!=e&&n.length>0,c=null!==e&&"{}"!==JSON.stringify(e);var h,f;(u?(h=s,a({url:`${o.baseUrl}chat/websites/${h.id}/offline`,headers:{"Content-Type":void 0},data:A()(h,{...m,initialFormData:new FormData}),method:"POST"})):c?o.chatWebsite.offline(s).$promise:Promise.reject("INVALID_FORM")).then(l).catch((f="submit",function(e){const n=r.simple().textContent(t.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").parent(angular.element(document.querySelector("#chat-toolbar")));r.show(n),i.errors[f]=e.data})).finally((()=>{i.form.invalid||(i.form={}),t.loading=!1}))},i.toggle=function(e,t){i.form[e]||(i.form[e]=[]);const n=i.form[e].indexOf(t);n>-1?i.form[e].splice(n,1):i.form[e].push(t)},i.exists=function(e,t){return i.form[e]||(i.form[e]=[]),i.form[e].indexOf(t)>-1},i.checkHTML=[],i.form={},i.errors={},i.userForm={}}function F(e,t,n,o,r,s){const a=this;let i=null;function d(){return e.visitor={id:e.settings.id,mapKey:"firstName",from:"Anonymous"+E()(1,1e6)},e.settings.showMenu=!1,r.updateStorage(s,e.visitor).then((t=>(e.visitor=t,o.chatWebsite.getFields({id:e.settings.id,online:!0}).$promise.then((function(e){e.count&&(i=e.fromKey,a.fields=e.rows)})).then((function(){for(let e=0;e<a.fields.length;e++){const t=a.fields[e];if(t.props.helpText){const n=RegExp.prototype.test.bind(/(<([^>]+)>)/i);a.checkHTML[e]=n(t.props.helpText)}}})).catch((function(e){console.error(e)}))))).catch(r.onStorageError)}a.checkHTML=[],a.form={},a.errors={},a.userForm={},a.disableItem=!1,a.trustAsHtml=function(e){return n.trustAsHtml(e)},a.$onInit=function(){if(console.debug("OnlineController::onInit() VISITOR",e.visitor),e.status="online",e.visitor&&e.visitor.interaction)if(e.visitor.interaction.id)if(!0===e.visitor.interactionStarted)t.go("app.chat",null,{location:"replace"});else{var n,r;const t=e.visitor.interaction.id,s=null==e||null===(n=e.visitor)||void 0===n||null===(r=n.message)||void 0===r?void 0:r.id;if(s){const e={id:t,channel:"chat",interaction:{id:t},message:{id:s},disposition:"abandoned",closed:!0,closeReason:"contact"};o.chatInteraction.abandon(e).$promise.finally((()=>d()))}}else t.go("app.waiting",null,{location:"replace"});else d()},a.submit=function(){let n="New chat request \n";for(let t=0;t<a.fields.length;t++){const o=a.fields[t];o.props&&void 0!==a.form[o.props.title]&&(_()(o.variable)||(e.visitor[o.variable]=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title]),_()(o.cmField)||(e.visitor[o.cmField]=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title]),t===i&&(_()(e.settings.mapKey)||(e.visitor.mapKey=e.settings.mapKey,e.visitor.from=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title])),a.form[o.props.title]&&(n+=o.props.title+": "+a.form[o.props.title]+"\n"))}var d;d=v()({body:n,referer:e.settings.referer,customerIp:e.settings.customerIp},e.visitor),a.disableItem=!0,o.chatWebsite.notify(d).$promise.then((function(n){delete a.errors.chatMessageError,e.visitor.message={id:n.message.id},e.visitor.interaction={id:n.interaction.id},r.updateStorage(s,e.visitor).then((t=>{e.visitor=t})).catch(r.onStorageError),a.disableItem=!1,e.settings.enableCustomerWriting?t.go("app.chat",null,{location:"replace"}):t.go("app.waiting",null,{location:"replace"})})).catch((function(e){a.disableItem=!1,console.error(e)}))},a.toggle=function(e,t){a.form[e]||(a.form[e]=[]);const n=a.form[e].indexOf(t);n>-1?a.form[e].splice(n,1):a.form[e].push(t)},a.exists=function(e,t){return a.form[e]||(a.form[e]=[]),a.form[e].indexOf(t)>-1}}function W(e,t,n,o,r,s,a,i){const d=this;function u(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function m(){d.form={},d.upColor=null,d.downColor=null,d.userForm.$setPristine(),d.userForm.$setUntouched(),e.visitor={},e.enableDownload=!1,e.$emit("hide")}function l(t){return function(o){d.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(r)}}function _(){e.loading=!1}d.form={},d.errors={},d.$onInit=function(){console.debug("UnmanagedController::onInit() VISITOR",e.visitor),e.status="unmanaged",r.all([s.removeItem(a).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(s.onStorageError),s.removeItem(i).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(s.onStorageError)]).then((()=>e.loading=!1))},d.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.customUpdate({id:e.visitor.interaction.id,note:d.form.note}).$promise.then((function(){delete d.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(m).then(u).catch(l("submit")).finally(_):(_(),l("submit"))},d.skip=function(){m(),u()}}function C(e,t,n,o,r,s,a){let i=null;function d(){let t={},n=!1;r.chatInteraction.get({id:e.visitor.interaction.id}).$promise.then((function(n){return t=n,r.chatInteraction.getMessages({intid:e.visitor.interaction.id}).$promise})).then((function(r){n=r.rows.length>1,t.closed?(e.visitor.interaction.closed=!0,s.updateStorage(a,e.visitor).then((n=>{e.visitor=n,"unmanaged"===t.disposition&&o.go("app.unmanaged",null,{location:"replace"})})).catch(s.onStorageError)):(t.UserId||n)&&(t.UserId&&(e.visitor.interaction.UserId=t.UserId),s.updateStorage(a,{...e.visitor,interactionStarted:!0}).then((t=>{e.visitor=t,o.go("app.chat",null,{location:"replace"})})).catch(s.onStorageError))})).catch((function(e){switch(e.status){case 403:o.go("app.closing",null,{location:"replace"});break;case 405:o.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}this.$onInit=function(){console.debug("WaitingController::onInit() VISITOR",e.visitor),e.status="waiting",e.visitor&&e.visitor.interaction&&e.visitor.interaction.id&&(i=n(d,3e3))},t.$on("$destroy",(function(){n.cancel(i)}))}function I(e,t){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.add(e)}function z(e,t,n){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return n}R.$inject=["$scope","$rootScope","$sce","api","$mdToast","$element","$http"],F.$inject=["$rootScope","$state","$sce","api","RemoteStorageService","STORAGE_VISITOR"],W.$inject=["$rootScope","$state","$mdToast","api","$q","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"],C.$inject=["$rootScope","$scope","$interval","$state","api","RemoteStorageService","STORAGE_VISITOR"];var J=new WeakSet,V=new WeakSet;class N{constructor(e,t,n){I(this,V),I(this,J),this.remoteAddress=new URL(t.settings.address).origin,this.location=t.settings.location,this.$q=n,this.$window=e}setItem(e,t){const n="setItem";return this.$q((o=>{z(this,J,U).call(this,n,e,(()=>{o()})),this.$window.parent.postMessage({action:n,key:e,value:t},this.remoteAddress)}))}getItem(e){const t="getItem";return this.$q((n=>{z(this,J,U).call(this,t,e,((e,t)=>{n(t)})),this.$window.parent.postMessage({action:t,key:e},this.remoteAddress)}))}removeItem(e){const t="removeItem";return this.$q((n=>{z(this,J,U).call(this,t,e,(()=>{n()})),this.$window.parent.postMessage({action:t,key:e},this.remoteAddress)}))}updateStorage(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this.getItem(e).then((o=>{const r=z(this,V,q).call(this,o)||{};return n?delete r[this.location]:r[this.location]=t,this.setItem(e,r).then((()=>r[this.location]))}))}onStorageError(e){console.error("Storage Error",e)}}function U(e,t,n){const o=r=>{const s=`${e}Result`;if(r.origin===this.remoteAddress&&t===r.data.key&&s===r.data.action){const{action:e,item:s}=r.data;switch(console.debug(`[Key = ${t}] Action "${e}" event from parent`,r),e){case"setItemResult":n(t);break;case"getItemResult":n(t,s);break;case"removeItemResult":n(t);break;default:console.debug("Unsupported action",e)}this.$window.removeEventListener("message",o,!1)}};this.$window.addEventListener("message",o,!1)}function q(e){let t=e;if("string"==typeof t)try{t=JSON.parse(e)}catch(n){console.warn(`Could not parse "${e}"`,n),t=e}return t}function G(e){return function(t){return e.trustAsHtml(t)}}N.$inject=["$window","$rootScope","$q"],G.$inject=["$sce"],angular.module("motion-chat",["ngAnimate","ngAria","ngMessages","ngMaterial","ngResource","ngSanitize","ngCsv","ngEmbed","ui.router","LocalStorageModule","ngRateIt","flow"]).filter("toTrusted",G).constant("STORAGE_PREFIX","motion_chat").constant("STORAGE_VISITOR","visitor").constant("STORAGE_LAYOUT","layout").service("RemoteStorageService",N).directive("ngEnter",(function(){return function(e,t,n){t.bind("keydown keypress",(function(t){13===t.which&&(e.$apply((function(){e.$eval(n.ngEnter)})),t.preventDefault())}))}})).directive("ngPrint",(function(){return{link:function(e,t){t.on("click",(function(){document.getElementById("chatContent1")&&function(e,t){const n=document.createElement("div"),o=t.visitor,r=t.settings;let a;for(let e=0;e<t.messages.length;e++){const i=t.messages[e];let d="Sender: ";const u="Message: "+i.body,m="Sent At: "+s()(i.createdAt).format("YYYY-MM-DD HH:mm:ss");if(0!==e){switch(t.settings.agentIdentifier){case"website_alias":d+="out"===i.direction?i.UserId?r.agentAlias+i.UserId:"System":r.customerAlias||o.from||"Visitor"+i.ContactId;break;case"agent_alias":d+="out"===i.direction?i.UserId?i.User.alias||i.User.fullname:"System":r.customerAlias||o.from||"Visitor"+i.ContactId;break;case"agent_fullname":d+="out"===i.direction?i.UserId?i.User.fullname:"System":r.customerAlias||o.from||"Visitor"+i.ContactId;break;default:d+="out"===i.direction?i.UserId?(r.agentAlias||"Agent")+i.UserId:"System":r.customerAlias||o.from||"Visitor"+i.ContactId}n.appendChild(document.createTextNode(d)),n.appendChild(document.createElement("br")),n.appendChild(document.createTextNode(u)),n.appendChild(document.createElement("br")),n.appendChild(document.createTextNode(m)),n.appendChild(document.createElement("br")),n.appendChild(document.createElement("br"))}else a=i.createdAt}const i=window.open();i.document.write("<html><head><title>"+document.title+"</title>"),i.document.write("</head><body >"),i.document.write("<h3> Website: "+r.referer+"</h3>"),i.document.write("<h3> Start Time: "+s()(a).format("YYYY-MM-DD HH:mm:ss")+"</h3>"),i.document.write("<h3> Print Time: "+s()().format("YYYY-MM-DD HH:mm:ss")+"</h3>"),i.document.write(n.innerHTML),i.document.write("</body></html>"),i.document.close(),i.focus(),i.print(),i.close()}(0,e)}))},restrict:"A"}})).controller("ChatController",H).controller("ClosingController",k).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("IndexController",d).factory("api",j).config(g).run(L).controller("OfflineController",R).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("OnlineController",F).controller("UnmanagedController",W).controller("WaitingController",C)},"./node_modules/expose-loader/dist/runtime/getGlobalThis.js":(e,t,n)=>{"use strict";e.exports=function(){if("object"==typeof globalThis)return globalThis;var e;try{e=this||new Function("return this")()}catch(e){if("object"==typeof window)return window;if("object"==typeof self)return self;if(void 0!==n.g)return n.g}return e}()},"./node_modules/json-form-data/src/jsonToFormData.js":function(e,t){var n,o;(o=this)||(o={}),void 0===(n=function(){return o.jsonToFormData=function(){function e(e){return"[object Array]"==={}.toString.call(e)}function t(t){return!(e(t)||"object"!=typeof t||!t||t instanceof Blob||t instanceof Date)}function n(){return"function"==typeof FormData}function o(){if(n())return new FormData}function r(n,o,s,a){var i=0;for(var d in n){if(n.hasOwnProperty(d)){var u=a||d,m=o.mapping(n[d]);if(a&&t(n)&&(u=a+"["+d+"]"),a&&e(n)&&(u=e(m)||o.showLeafArrayIndexes?a+"["+i+"]":a+"[]"),e(m)||t(m))r(m,o,s,u);else if(m instanceof FileList)for(var l=0;l<m.length;l++)s.append(u+"["+l+"]",m.item(l));else m instanceof Blob?s.append(u,m,m.name):m instanceof Date?s.append(u,m.toISOString()):(null===m&&o.includeNullValues||null!==m)&&void 0!==m&&s.append(u,m)}i++}return s}return function(e,t){if(t&&t.initialFormData){if("function"!=typeof t.initialFormData.append)throw"initialFormData must have an append function."}else if(!n())throw"This environment does not have global form data. options.initialFormData must be specified.";var s=[{initialFormData:o(),showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}},t||{}].reduce((function(e,t){return Object.keys(t).forEach((function(n){e[n]=t[n]})),e}),{});return r(e,s,s.initialFormData)}}()}.apply(t,[]))||(e.exports=n)},"./node_modules/moment/locale/af.js":function(e,t,n){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-dz.js":function(e,t,n){!function(e){"use strict";var t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(o,r,s,a){var i=t(o),d=n[e][t(o)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,o)}},r=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-dz",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-kw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ly.js":function(e,t,n){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,r,s,a){var i=n(t),d=o[e][n(t)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,t)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ma.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-sa.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-tn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(t,n,s,a){var i=o(t),d=r[e][o(t)];return 2===i&&(d=d[n?0:1]),d.replace(/%d/i,t)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/az.js":function(e,t,n){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/be.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",w:"седмица",ww:"%d седмици",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn-bd.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn-bd",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t?e<4?e:e+12:"ভোর"===t||"সকাল"===t?e:"দুপুর"===t?e>=3?e:e+12:"বিকাল"===t||"সন্ধ্যা"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"রাত":e<6?"ভোর":e<12?"সকাল":e<15?"দুপুর":e<18?"বিকাল":e<20?"সন্ধ্যা":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bo.js":function(e,t,n){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/br.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}function n(e){return e>9?n(e%10):e}var o=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],r=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,s=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];e.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:s,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:s,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,t,n){return e<12?"a.m.":"g.m."}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bs.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cs.js":function(e,t,n){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),o=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function s(e){return e>1&&e<5&&1!=~~(e/10)}function a(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"pár sekund":"pár sekundami";case"ss":return t||o?r+(s(e)?"sekundy":"sekund"):r+"sekundami";case"m":return t?"minuta":o?"minutu":"minutou";case"mm":return t||o?r+(s(e)?"minuty":"minut"):r+"minutami";case"h":return t?"hodina":o?"hodinu":"hodinou";case"hh":return t||o?r+(s(e)?"hodiny":"hodin"):r+"hodinami";case"d":return t||o?"den":"dnem";case"dd":return t||o?r+(s(e)?"dny":"dní"):r+"dny";case"M":return t||o?"měsíc":"měsícem";case"MM":return t||o?r+(s(e)?"měsíce":"měsíců"):r+"měsíci";case"y":return t||o?"rok":"rokem";case"yy":return t||o?r+(s(e)?"roky":"let"):r+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cy.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/da.js":function(e,t,n){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-at.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-ch.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/dv.js":function(e,t,n){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/el.js":function(e,t,n){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,o=this._calendarEl[e],r=t&&t.hours();return n=o,("undefined"!=typeof Function&&n instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(o=o.apply(t)),o.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-au.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-gb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ie.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-il.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-in.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-nz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-sg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-do.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-mx.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-us.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/et.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?r[n][2]?r[n][2]:r[n][1]:o?r[n][0]:r[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eu.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fa.js":function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fi.js":function(e,t,n){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function o(e,o,r,s){var a="";switch(r){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":a=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":a=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":a=s?"tunnin":"tuntia";break;case"d":return s?"päivän":"päivä";case"dd":a=s?"päivän":"päivää";break;case"M":return s?"kuukauden":"kuukausi";case"MM":a=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":a=s?"vuoden":"vuotta"}return function(e,o){return e<10?o?n[e]:t[e]:e}(e,s)+" "+a}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fil.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr.js":function(e,t,n){!function(e){"use strict";var t=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,n=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fy.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ga.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],weekdaysShort:["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],weekdaysMin:["Do","Lu","Má","Cé","Dé","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gd.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gl.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-deva.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),format:"जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार".split("_"),weekdaysShort:"आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.".split("_"),weekdaysMin:"आ_सो_मं_बु_ब्रे_सु_शे".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [वाजतां]",LTS:"A h:mm:ss [वाजतां]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [वाजतां]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [वाजतां]",llll:"ddd, D MMM YYYY, A h:mm [वाजतां]"},calendar:{sameDay:"[आयज] LT",nextDay:"[फाल्यां] LT",nextWeek:"[फुडलो] dddd[,] LT",lastDay:"[काल] LT",lastWeek:"[फाटलो] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s आदीं",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(वेर)/,ordinal:function(e,t){switch(t){case"D":return e+"वेर";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/राती|सकाळीं|दनपारां|सांजे/,meridiemHour:function(e,t){return 12===e&&(e=0),"राती"===t?e<4?e:e+12:"सकाळीं"===t?e:"दनपारां"===t?e>12?e:e+12:"सांजे"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"राती":e<12?"सकाळीं":e<16?"दनपारां":e<20?"सांजे":"राती"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-latn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokallim"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gu.js":function(e,t,n){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પહેલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/he.js":function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hi.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},o=[/^जन/i,/^फ़र|फर/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सितं|सित/i,/^अक्टू/i,/^नव|नवं/i,/^दिसं|दिस/i];e.defineLocale("hi",{months:{format:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),standalone:"जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर".split("_")},monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},monthsParse:o,longMonthsParse:o,shortMonthsParse:[/^जन/i,/^फ़र/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सित/i,/^अक्टू/i,/^नव/i,/^दिस/i],monthsRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsShortRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsStrictRegex:/^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,monthsShortStrictRegex:/^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hr.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hu.js":function(e,t,n){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,o){var r=e;switch(n){case"s":return o||t?"néhány másodperc":"néhány másodperce";case"ss":return r+(o||t)?" másodperc":" másodperce";case"m":return"egy"+(o||t?" perc":" perce");case"mm":return r+(o||t?" perc":" perce");case"h":return"egy"+(o||t?" óra":" órája");case"hh":return r+(o||t?" óra":" órája");case"d":return"egy"+(o||t?" nap":" napja");case"dd":return r+(o||t?" nap":" napja");case"M":return"egy"+(o||t?" hónap":" hónapja");case"MM":return r+(o||t?" hónap":" hónapja");case"y":return"egy"+(o||t?" év":" éve");case"yy":return r+(o||t?" év":" éve")}return""}function o(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return o.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return o.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hy-am.js":function(e,t,n){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/id.js":function(e,t,n){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/is.js":function(e,t,n){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function n(e,n,o,r){var s=e+" ";switch(o){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?s+(n||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?s+(n||r?"mínútur":"mínútum"):n?s+"mínúta":s+"mínútu";case"hh":return t(e)?s+(n||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return t(e)?n?s+"dagar":s+(r?"daga":"dögum"):n?s+"dagur":s+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return t(e)?n?s+"mánuðir":s+(r?"mánuði":"mánuðum"):n?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return t(e)?s+(n||r?"ár":"árum"):s+(n||r?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ja.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,t){return"元"===t[1]?1:parseInt(t[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/jv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ka.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,(function(e,t,n){return"ი"===n?t+"ში":t+n+"ში"}))},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kk.js":function(e,t,n){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/km.js":function(e,t,n){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kn.js":function(e,t,n){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ko.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ku.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:o,monthsShort:o,weekdays:"یه\200cكشه\200cممه\200c_دووشه\200cممه\200c_سێشه\200cممه\200c_چوارشه\200cممه\200c_پێنجشه\200cممه\200c_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysShort:"یه\200cكشه\200cم_دووشه\200cم_سێشه\200cم_چوارشه\200cم_پێنجشه\200cم_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره\200c|به\200cیانی/,isPM:function(e){return/ئێواره\200c/.test(e)},meridiem:function(e,t,n){return e<12?"به\200cیانی":"ئێواره\200c"},calendar:{sameDay:"[ئه\200cمرۆ كاتژمێر] LT",nextDay:"[به\200cیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له\200c %s",past:"%s",s:"چه\200cند چركه\200cیه\200cك",ss:"چركه\200c %d",m:"یه\200cك خوله\200cك",mm:"%d خوله\200cك",h:"یه\200cك كاتژمێر",hh:"%d كاتژمێر",d:"یه\200cك ڕۆژ",dd:"%d ڕۆژ",M:"یه\200cك مانگ",MM:"%d مانگ",y:"یه\200cك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ky.js":function(e,t,n){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lb.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?r[n][0]:r[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lt.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,o){return t?r(n)[0]:o?r(n)[1]:r(n)[2]}function o(e){return e%10==0||e>10&&e<20}function r(e){return t[e].split("_")}function s(e,t,s,a){var i=e+" ";return 1===e?i+n(0,t,s[0],a):t?i+(o(e)?r(s)[1]:r(s)[0]):a?i+r(s)[1]:i+(o(e)?r(s)[1]:r(s)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,o){return t?"kelios sekundės":o?"kelių sekundžių":"kelias sekundes"},ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lv.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function o(e,o,r){return e+" "+n(t[r],e,o)}function r(e,o,r){return n(t[r],e,o)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:o,m:r,mm:o,h:r,hh:o,d:r,dd:o,M:r,MM:o,y:r,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/me.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ml.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mr.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function o(e,t,n,o){var r="";if(t)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(e,t){return 12===e&&(e=0),"पहाटे"===t||"सकाळी"===t?e:"दुपारी"===t||"सायंकाळी"===t||"रात्री"===t?e>=12?e:e+12:void 0},meridiem:function(e,t,n){return e>=0&&e<6?"पहाटे":e<12?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms-my.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/my.js":function(e,t,n){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ne.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl-be.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",w:"één week",ww:"%d weken",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/oc-lnc.js":function(e,t,n){!function(e){"use strict";e.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pa-in.js":function(e,t,n){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pl.js":function(e,t,n){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),o=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function r(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function s(e,t,n){var o=e+" ";switch(n){case"ss":return o+(r(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return o+(r(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return o+(r(e)?"godziny":"godzin");case"ww":return o+(r(e)?"tygodnie":"tygodni");case"MM":return o+(r(e)?"miesiące":"miesięcy");case"yy":return o+(r(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,o){return e?/D MMMM/.test(o)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:s,m:s,mm:s,h:s,hh:s,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:s,M:"miesiąc",MM:s,y:"rok",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt-br.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",invalidDate:"Data inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ro.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=" ";return(e%100>=20||e>=100&&e%100==0)&&(o=" de "),e+o+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"săptămâni",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,w:"o săptămână",ww:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ru.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"минута":"минуту":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,w:"неделя",ww:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sd.js":function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/se.js":function(e,t,n){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/si.js":function(e,t,n){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්\200dරේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්\200dරහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්\200dරහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්\200dර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sk.js":function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function o(e){return e>1&&e<5}function r(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(o(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(o(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(o(e)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(o(e)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(o(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(o(e)?"roky":"rokov"):s+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===e?t?"sekundo":"sekundi":2===e?t||o?"sekundi":"sekundah":e<5?t||o?"sekunde":"sekundah":"sekund");case"m":return t?"ena minuta":"eno minuto";case"mm":return r+(1===e?t?"minuta":"minuto":2===e?t||o?"minuti":"minutama":e<5?t||o?"minute":"minutami":t||o?"minut":"minutami");case"h":return t?"ena ura":"eno uro";case"hh":return r+(1===e?t?"ura":"uro":2===e?t||o?"uri":"urama":e<5?t||o?"ure":"urami":t||o?"ur":"urami");case"d":return t||o?"en dan":"enim dnem";case"dd":return r+(1===e?t||o?"dan":"dnem":2===e?t||o?"dni":"dnevoma":t||o?"dni":"dnevi");case"M":return t||o?"en mesec":"enim mesecem";case"MM":return r+(1===e?t||o?"mesec":"mesecem":2===e?t||o?"meseca":"mesecema":e<5?t||o?"mesece":"meseci":t||o?"mesecev":"meseci");case"y":return t||o?"eno leto":"enim letom";case"yy":return r+(1===e?t||o?"leto":"letom":2===e?t||o?"leti":"letoma":e<5?t||o?"leta":"leti":t||o?"let":"leti")}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sq.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr-cyrl.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ss.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?":e":1===t||2===t?":a":":e")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ta.js":function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/te.js":function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tet.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tg.js":function(e,t,n){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/th.js":function(e,t,n){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",w:"1 สัปดาห์",ww:"%d สัปดาห์",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tk.js":function(e,t,n){!function(e){"use strict";var t={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tl-ph.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tlh.js":function(e,t,n){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,o,r){var s=function(e){var n=Math.floor(e%1e3/100),o=Math.floor(e%100/10),r=e%10,s="";return n>0&&(s+=t[n]+"vatlh"),o>0&&(s+=(""!==s?" ":"")+t[o]+"maH"),r>0&&(s+=(""!==s?" ":"")+t[r]),""===s?"pagh":s}(e);switch(o){case"ss":return s+" lup";case"mm":return s+" tup";case"hh":return s+" rep";case"dd":return s+" jaj";case"MM":return s+" jar";case"yy":return s+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tr.js":function(e,t,n){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,n){return e<12?n?"öö":"ÖÖ":n?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return"ös"===e||"ÖS"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return o||t?r[n][0]:r[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ug-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"يېرىم كېچە":o<900?"سەھەر":o<1130?"چۈشتىن بۇرۇن":o<1230?"چۈش":o<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uk.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(o=+e,r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ur.js":function(e,t,n){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/vi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",w:"một tuần",ww:"%d tuần",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/x-pseudo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/yo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-hk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1200?"上午":1200===o?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-mo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-tw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale sync recursive ^\\.\\/.*$":(e,t,n)=>{var o={"./af":"./node_modules/moment/locale/af.js","./af.js":"./node_modules/moment/locale/af.js","./ar":"./node_modules/moment/locale/ar.js","./ar-dz":"./node_modules/moment/locale/ar-dz.js","./ar-dz.js":"./node_modules/moment/locale/ar-dz.js","./ar-kw":"./node_modules/moment/locale/ar-kw.js","./ar-kw.js":"./node_modules/moment/locale/ar-kw.js","./ar-ly":"./node_modules/moment/locale/ar-ly.js","./ar-ly.js":"./node_modules/moment/locale/ar-ly.js","./ar-ma":"./node_modules/moment/locale/ar-ma.js","./ar-ma.js":"./node_modules/moment/locale/ar-ma.js","./ar-sa":"./node_modules/moment/locale/ar-sa.js","./ar-sa.js":"./node_modules/moment/locale/ar-sa.js","./ar-tn":"./node_modules/moment/locale/ar-tn.js","./ar-tn.js":"./node_modules/moment/locale/ar-tn.js","./ar.js":"./node_modules/moment/locale/ar.js","./az":"./node_modules/moment/locale/az.js","./az.js":"./node_modules/moment/locale/az.js","./be":"./node_modules/moment/locale/be.js","./be.js":"./node_modules/moment/locale/be.js","./bg":"./node_modules/moment/locale/bg.js","./bg.js":"./node_modules/moment/locale/bg.js","./bm":"./node_modules/moment/locale/bm.js","./bm.js":"./node_modules/moment/locale/bm.js","./bn":"./node_modules/moment/locale/bn.js","./bn-bd":"./node_modules/moment/locale/bn-bd.js","./bn-bd.js":"./node_modules/moment/locale/bn-bd.js","./bn.js":"./node_modules/moment/locale/bn.js","./bo":"./node_modules/moment/locale/bo.js","./bo.js":"./node_modules/moment/locale/bo.js","./br":"./node_modules/moment/locale/br.js","./br.js":"./node_modules/moment/locale/br.js","./bs":"./node_modules/moment/locale/bs.js","./bs.js":"./node_modules/moment/locale/bs.js","./ca":"./node_modules/moment/locale/ca.js","./ca.js":"./node_modules/moment/locale/ca.js","./cs":"./node_modules/moment/locale/cs.js","./cs.js":"./node_modules/moment/locale/cs.js","./cv":"./node_modules/moment/locale/cv.js","./cv.js":"./node_modules/moment/locale/cv.js","./cy":"./node_modules/moment/locale/cy.js","./cy.js":"./node_modules/moment/locale/cy.js","./da":"./node_modules/moment/locale/da.js","./da.js":"./node_modules/moment/locale/da.js","./de":"./node_modules/moment/locale/de.js","./de-at":"./node_modules/moment/locale/de-at.js","./de-at.js":"./node_modules/moment/locale/de-at.js","./de-ch":"./node_modules/moment/locale/de-ch.js","./de-ch.js":"./node_modules/moment/locale/de-ch.js","./de.js":"./node_modules/moment/locale/de.js","./dv":"./node_modules/moment/locale/dv.js","./dv.js":"./node_modules/moment/locale/dv.js","./el":"./node_modules/moment/locale/el.js","./el.js":"./node_modules/moment/locale/el.js","./en-au":"./node_modules/moment/locale/en-au.js","./en-au.js":"./node_modules/moment/locale/en-au.js","./en-ca":"./node_modules/moment/locale/en-ca.js","./en-ca.js":"./node_modules/moment/locale/en-ca.js","./en-gb":"./node_modules/moment/locale/en-gb.js","./en-gb.js":"./node_modules/moment/locale/en-gb.js","./en-ie":"./node_modules/moment/locale/en-ie.js","./en-ie.js":"./node_modules/moment/locale/en-ie.js","./en-il":"./node_modules/moment/locale/en-il.js","./en-il.js":"./node_modules/moment/locale/en-il.js","./en-in":"./node_modules/moment/locale/en-in.js","./en-in.js":"./node_modules/moment/locale/en-in.js","./en-nz":"./node_modules/moment/locale/en-nz.js","./en-nz.js":"./node_modules/moment/locale/en-nz.js","./en-sg":"./node_modules/moment/locale/en-sg.js","./en-sg.js":"./node_modules/moment/locale/en-sg.js","./eo":"./node_modules/moment/locale/eo.js","./eo.js":"./node_modules/moment/locale/eo.js","./es":"./node_modules/moment/locale/es.js","./es-do":"./node_modules/moment/locale/es-do.js","./es-do.js":"./node_modules/moment/locale/es-do.js","./es-mx":"./node_modules/moment/locale/es-mx.js","./es-mx.js":"./node_modules/moment/locale/es-mx.js","./es-us":"./node_modules/moment/locale/es-us.js","./es-us.js":"./node_modules/moment/locale/es-us.js","./es.js":"./node_modules/moment/locale/es.js","./et":"./node_modules/moment/locale/et.js","./et.js":"./node_modules/moment/locale/et.js","./eu":"./node_modules/moment/locale/eu.js","./eu.js":"./node_modules/moment/locale/eu.js","./fa":"./node_modules/moment/locale/fa.js","./fa.js":"./node_modules/moment/locale/fa.js","./fi":"./node_modules/moment/locale/fi.js","./fi.js":"./node_modules/moment/locale/fi.js","./fil":"./node_modules/moment/locale/fil.js","./fil.js":"./node_modules/moment/locale/fil.js","./fo":"./node_modules/moment/locale/fo.js","./fo.js":"./node_modules/moment/locale/fo.js","./fr":"./node_modules/moment/locale/fr.js","./fr-ca":"./node_modules/moment/locale/fr-ca.js","./fr-ca.js":"./node_modules/moment/locale/fr-ca.js","./fr-ch":"./node_modules/moment/locale/fr-ch.js","./fr-ch.js":"./node_modules/moment/locale/fr-ch.js","./fr.js":"./node_modules/moment/locale/fr.js","./fy":"./node_modules/moment/locale/fy.js","./fy.js":"./node_modules/moment/locale/fy.js","./ga":"./node_modules/moment/locale/ga.js","./ga.js":"./node_modules/moment/locale/ga.js","./gd":"./node_modules/moment/locale/gd.js","./gd.js":"./node_modules/moment/locale/gd.js","./gl":"./node_modules/moment/locale/gl.js","./gl.js":"./node_modules/moment/locale/gl.js","./gom-deva":"./node_modules/moment/locale/gom-deva.js","./gom-deva.js":"./node_modules/moment/locale/gom-deva.js","./gom-latn":"./node_modules/moment/locale/gom-latn.js","./gom-latn.js":"./node_modules/moment/locale/gom-latn.js","./gu":"./node_modules/moment/locale/gu.js","./gu.js":"./node_modules/moment/locale/gu.js","./he":"./node_modules/moment/locale/he.js","./he.js":"./node_modules/moment/locale/he.js","./hi":"./node_modules/moment/locale/hi.js","./hi.js":"./node_modules/moment/locale/hi.js","./hr":"./node_modules/moment/locale/hr.js","./hr.js":"./node_modules/moment/locale/hr.js","./hu":"./node_modules/moment/locale/hu.js","./hu.js":"./node_modules/moment/locale/hu.js","./hy-am":"./node_modules/moment/locale/hy-am.js","./hy-am.js":"./node_modules/moment/locale/hy-am.js","./id":"./node_modules/moment/locale/id.js","./id.js":"./node_modules/moment/locale/id.js","./is":"./node_modules/moment/locale/is.js","./is.js":"./node_modules/moment/locale/is.js","./it":"./node_modules/moment/locale/it.js","./it-ch":"./node_modules/moment/locale/it-ch.js","./it-ch.js":"./node_modules/moment/locale/it-ch.js","./it.js":"./node_modules/moment/locale/it.js","./ja":"./node_modules/moment/locale/ja.js","./ja.js":"./node_modules/moment/locale/ja.js","./jv":"./node_modules/moment/locale/jv.js","./jv.js":"./node_modules/moment/locale/jv.js","./ka":"./node_modules/moment/locale/ka.js","./ka.js":"./node_modules/moment/locale/ka.js","./kk":"./node_modules/moment/locale/kk.js","./kk.js":"./node_modules/moment/locale/kk.js","./km":"./node_modules/moment/locale/km.js","./km.js":"./node_modules/moment/locale/km.js","./kn":"./node_modules/moment/locale/kn.js","./kn.js":"./node_modules/moment/locale/kn.js","./ko":"./node_modules/moment/locale/ko.js","./ko.js":"./node_modules/moment/locale/ko.js","./ku":"./node_modules/moment/locale/ku.js","./ku.js":"./node_modules/moment/locale/ku.js","./ky":"./node_modules/moment/locale/ky.js","./ky.js":"./node_modules/moment/locale/ky.js","./lb":"./node_modules/moment/locale/lb.js","./lb.js":"./node_modules/moment/locale/lb.js","./lo":"./node_modules/moment/locale/lo.js","./lo.js":"./node_modules/moment/locale/lo.js","./lt":"./node_modules/moment/locale/lt.js","./lt.js":"./node_modules/moment/locale/lt.js","./lv":"./node_modules/moment/locale/lv.js","./lv.js":"./node_modules/moment/locale/lv.js","./me":"./node_modules/moment/locale/me.js","./me.js":"./node_modules/moment/locale/me.js","./mi":"./node_modules/moment/locale/mi.js","./mi.js":"./node_modules/moment/locale/mi.js","./mk":"./node_modules/moment/locale/mk.js","./mk.js":"./node_modules/moment/locale/mk.js","./ml":"./node_modules/moment/locale/ml.js","./ml.js":"./node_modules/moment/locale/ml.js","./mn":"./node_modules/moment/locale/mn.js","./mn.js":"./node_modules/moment/locale/mn.js","./mr":"./node_modules/moment/locale/mr.js","./mr.js":"./node_modules/moment/locale/mr.js","./ms":"./node_modules/moment/locale/ms.js","./ms-my":"./node_modules/moment/locale/ms-my.js","./ms-my.js":"./node_modules/moment/locale/ms-my.js","./ms.js":"./node_modules/moment/locale/ms.js","./mt":"./node_modules/moment/locale/mt.js","./mt.js":"./node_modules/moment/locale/mt.js","./my":"./node_modules/moment/locale/my.js","./my.js":"./node_modules/moment/locale/my.js","./nb":"./node_modules/moment/locale/nb.js","./nb.js":"./node_modules/moment/locale/nb.js","./ne":"./node_modules/moment/locale/ne.js","./ne.js":"./node_modules/moment/locale/ne.js","./nl":"./node_modules/moment/locale/nl.js","./nl-be":"./node_modules/moment/locale/nl-be.js","./nl-be.js":"./node_modules/moment/locale/nl-be.js","./nl.js":"./node_modules/moment/locale/nl.js","./nn":"./node_modules/moment/locale/nn.js","./nn.js":"./node_modules/moment/locale/nn.js","./oc-lnc":"./node_modules/moment/locale/oc-lnc.js","./oc-lnc.js":"./node_modules/moment/locale/oc-lnc.js","./pa-in":"./node_modules/moment/locale/pa-in.js","./pa-in.js":"./node_modules/moment/locale/pa-in.js","./pl":"./node_modules/moment/locale/pl.js","./pl.js":"./node_modules/moment/locale/pl.js","./pt":"./node_modules/moment/locale/pt.js","./pt-br":"./node_modules/moment/locale/pt-br.js","./pt-br.js":"./node_modules/moment/locale/pt-br.js","./pt.js":"./node_modules/moment/locale/pt.js","./ro":"./node_modules/moment/locale/ro.js","./ro.js":"./node_modules/moment/locale/ro.js","./ru":"./node_modules/moment/locale/ru.js","./ru.js":"./node_modules/moment/locale/ru.js","./sd":"./node_modules/moment/locale/sd.js","./sd.js":"./node_modules/moment/locale/sd.js","./se":"./node_modules/moment/locale/se.js","./se.js":"./node_modules/moment/locale/se.js","./si":"./node_modules/moment/locale/si.js","./si.js":"./node_modules/moment/locale/si.js","./sk":"./node_modules/moment/locale/sk.js","./sk.js":"./node_modules/moment/locale/sk.js","./sl":"./node_modules/moment/locale/sl.js","./sl.js":"./node_modules/moment/locale/sl.js","./sq":"./node_modules/moment/locale/sq.js","./sq.js":"./node_modules/moment/locale/sq.js","./sr":"./node_modules/moment/locale/sr.js","./sr-cyrl":"./node_modules/moment/locale/sr-cyrl.js","./sr-cyrl.js":"./node_modules/moment/locale/sr-cyrl.js","./sr.js":"./node_modules/moment/locale/sr.js","./ss":"./node_modules/moment/locale/ss.js","./ss.js":"./node_modules/moment/locale/ss.js","./sv":"./node_modules/moment/locale/sv.js","./sv.js":"./node_modules/moment/locale/sv.js","./sw":"./node_modules/moment/locale/sw.js","./sw.js":"./node_modules/moment/locale/sw.js","./ta":"./node_modules/moment/locale/ta.js","./ta.js":"./node_modules/moment/locale/ta.js","./te":"./node_modules/moment/locale/te.js","./te.js":"./node_modules/moment/locale/te.js","./tet":"./node_modules/moment/locale/tet.js","./tet.js":"./node_modules/moment/locale/tet.js","./tg":"./node_modules/moment/locale/tg.js","./tg.js":"./node_modules/moment/locale/tg.js","./th":"./node_modules/moment/locale/th.js","./th.js":"./node_modules/moment/locale/th.js","./tk":"./node_modules/moment/locale/tk.js","./tk.js":"./node_modules/moment/locale/tk.js","./tl-ph":"./node_modules/moment/locale/tl-ph.js","./tl-ph.js":"./node_modules/moment/locale/tl-ph.js","./tlh":"./node_modules/moment/locale/tlh.js","./tlh.js":"./node_modules/moment/locale/tlh.js","./tr":"./node_modules/moment/locale/tr.js","./tr.js":"./node_modules/moment/locale/tr.js","./tzl":"./node_modules/moment/locale/tzl.js","./tzl.js":"./node_modules/moment/locale/tzl.js","./tzm":"./node_modules/moment/locale/tzm.js","./tzm-latn":"./node_modules/moment/locale/tzm-latn.js","./tzm-latn.js":"./node_modules/moment/locale/tzm-latn.js","./tzm.js":"./node_modules/moment/locale/tzm.js","./ug-cn":"./node_modules/moment/locale/ug-cn.js","./ug-cn.js":"./node_modules/moment/locale/ug-cn.js","./uk":"./node_modules/moment/locale/uk.js","./uk.js":"./node_modules/moment/locale/uk.js","./ur":"./node_modules/moment/locale/ur.js","./ur.js":"./node_modules/moment/locale/ur.js","./uz":"./node_modules/moment/locale/uz.js","./uz-latn":"./node_modules/moment/locale/uz-latn.js","./uz-latn.js":"./node_modules/moment/locale/uz-latn.js","./uz.js":"./node_modules/moment/locale/uz.js","./vi":"./node_modules/moment/locale/vi.js","./vi.js":"./node_modules/moment/locale/vi.js","./x-pseudo":"./node_modules/moment/locale/x-pseudo.js","./x-pseudo.js":"./node_modules/moment/locale/x-pseudo.js","./yo":"./node_modules/moment/locale/yo.js","./yo.js":"./node_modules/moment/locale/yo.js","./zh-cn":"./node_modules/moment/locale/zh-cn.js","./zh-cn.js":"./node_modules/moment/locale/zh-cn.js","./zh-hk":"./node_modules/moment/locale/zh-hk.js","./zh-hk.js":"./node_modules/moment/locale/zh-hk.js","./zh-mo":"./node_modules/moment/locale/zh-mo.js","./zh-mo.js":"./node_modules/moment/locale/zh-mo.js","./zh-tw":"./node_modules/moment/locale/zh-tw.js","./zh-tw.js":"./node_modules/moment/locale/zh-tw.js"};function r(e){var t=s(e);return n(t)}function s(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=s,e.exports=r,r.id="./node_modules/moment/locale sync recursive ^\\.\\/.*$"},"./node_modules/ng-csv/build/ng-csv.min.js":(e,t)=>{var n;n=window,document,angular.module("ngCsv.config",[]).value("ngCsv.config",{debug:!0}).config(["$compileProvider",function(e){angular.isDefined(e.urlSanitizationWhitelist)?e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/):e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)}]),angular.module("ngCsv.directives",["ngCsv.services"]),angular.module("ngCsv.services",[]),angular.module("ngCsv",["ngCsv.config","ngCsv.services","ngCsv.directives","ngSanitize"]),e.exports===t&&(e.exports="ngCsv"),angular.module("ngCsv.services").service("CSV",["$q",function(e){var t="\r\n",n={"\\t":"\t","\\b":"\b","\\v":"\v","\\f":"\f","\\r":"\r"};this.stringifyField=function(e,t){return"locale"===t.decimalSep&&this.isFloat(e)?e.toLocaleString():"."!==t.decimalSep&&this.isFloat(e)?e.toString().replace(".",t.decimalSep):"string"==typeof e?(e=e.replace(/"/g,'""'),(t.quoteStrings||e.indexOf(",")>-1||e.indexOf("\n")>-1||e.indexOf("\r")>-1)&&(e=t.txtDelim+e+t.txtDelim),e):"boolean"==typeof e?e?"TRUE":"FALSE":e},this.isFloat=function(e){return+e===e&&(!isFinite(e)||Boolean(e%1))},this.stringify=function(n,o){var r=e.defer(),s=this,a="",i="",d=e.when(n).then((function(e){var n,d;angular.isDefined(o.header)&&o.header&&(n=[],angular.forEach(o.header,(function(e){this.push(s.stringifyField(e,o))}),n),d=n.join(o.fieldSep?o.fieldSep:","),i+=d+t);var u,m,l=[];angular.isArray(e)?l=e:angular.isFunction(e)&&(l=e()),angular.isDefined(o.label)&&o.label&&"boolean"==typeof o.label&&(u=[],angular.forEach(l[0],(function(e,t){this.push(s.stringifyField(t,o))}),u),m=u.join(o.fieldSep?o.fieldSep:","),i+=m+t),angular.forEach(l,(function(e,n){var r,a,d=angular.copy(l[n]);a=[];var u=o.columnOrder?o.columnOrder:d;angular.forEach(u,(function(e){var t=o.columnOrder?d[e]:e;this.push(s.stringifyField(t,o))}),a),r=a.join(o.fieldSep?o.fieldSep:","),i+=n<l.length?r+t:r})),o.addByteOrderMarker&&(a+="\ufeff"),a+=i,r.resolve(a)}));return"function"==typeof d.catch&&d.catch((function(e){r.reject(e)})),r.promise},this.isSpecialChar=function(e){return void 0!==n[e]},this.getSpecialChar=function(e){return n[e]}}]),angular.module("ngCsv.directives").directive("ngCsv",["$parse","$q","CSV","$document","$timeout",function(e,t,o,r,s){return{restrict:"AC",scope:{data:"&ngCsv",filename:"@filename",header:"&csvHeader",columnOrder:"&csvColumnOrder",txtDelim:"@textDelimiter",decimalSep:"@decimalSeparator",quoteStrings:"@quoteStrings",fieldSep:"@fieldSeparator",lazyLoad:"@lazyLoad",addByteOrderMarker:"@addBom",ngClick:"&",charset:"@charset",label:"&csvLabel"},controller:["$scope","$element","$attrs","$transclude",function(e,n,r){e.csv="",angular.isDefined(e.lazyLoad)&&"true"==e.lazyLoad||angular.isArray(e.data)&&e.$watch("data",(function(){e.buildCSV()}),!0),e.getFilename=function(){return e.filename||"download.csv"},e.buildCSV=function(){var s=t.defer();return n.addClass(r.ngCsvLoadingClass||"ng-csv-loading"),o.stringify(e.data(),function(){var t={txtDelim:e.txtDelim?e.txtDelim:'"',decimalSep:e.decimalSep?e.decimalSep:".",quoteStrings:e.quoteStrings,addByteOrderMarker:e.addByteOrderMarker};return angular.isDefined(r.csvHeader)&&(t.header=e.$eval(e.header)),angular.isDefined(r.csvColumnOrder)&&(t.columnOrder=e.$eval(e.columnOrder)),angular.isDefined(r.csvLabel)&&(t.label=e.$eval(e.label)),t.fieldSep=e.fieldSep?e.fieldSep:",",t.fieldSep=o.isSpecialChar(t.fieldSep)?o.getSpecialChar(t.fieldSep):t.fieldSep,t}()).then((function(t){e.csv=t,n.removeClass(r.ngCsvLoadingClass||"ng-csv-loading"),s.resolve(t)})),e.$apply(),s.promise}}],link:function(e,t){t.bind("click",(function(){e.buildCSV().then((function(){!function(){var t=e.charset||"utf-8",o=new Blob([e.csv],{type:"text/csv;charset="+t+";"});if(n.navigator.msSaveOrOpenBlob)navigator.msSaveBlob(o,e.getFilename());else{var a=angular.element('<div data-tap-disabled="true"><a></a></div>'),i=angular.element(a.children()[0]);i.attr("href",n.URL.createObjectURL(o)),i.attr("download",e.getFilename()),i.attr("target","_blank"),r.find("body").append(a),s((function(){i[0].click(),i.remove()}),null)}}()})),e.$apply()}))}}}])},"./src/js/chat/chat.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/dc49a9ba939f8c099868.html"},"./src/js/closing/closing.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/00860aee362cdeeb1080.html"},"./src/js/offline/offline.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/9962474df74f9405ac72.html"},"./src/js/online/online.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/caf0e553108b226443aa.html"},"./src/js/unmanaged/unmanaged.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/3f18dac5f545add792db.html"},"./src/js/waiting/waiting.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/6043a16afdb829ba5934.html"}},e=>{var t=t=>e(e.s=t);e.O(0,["vendor-index","vendor-angular-76f2ed34","vendor-angular-58d021f3","vendor-ng-embed","vendor-moment","vendor-jquery","vendor-jquery.textcomplete","vendor-emojionearea","vendor-emojione","vendor-angular-sanitize","vendor-angular-resource","vendor-angular-messages","vendor-angular-material","vendor-angular-local-storage","vendor-angular-animate","vendor-urlMatcher","vendor-transition","vendor-stateService","vendor-stateDirectives","vendor-flow"],(()=>(t("./node_modules/jquery/dist/jquery.js"),t("./node_modules/angular/index-exposed.js"),t("./node_modules/moment/moment.js"),t("./node_modules/@flowjs/flow.js/src/flow.js"),t("./node_modules/emojione/lib/js/emojione.js"),t("./src/js/index.module.js")))),e.O()}]);
+//# sourceMappingURL=chat.js.map
\ No newline at end of file
similarity index 52%
rename from snippet/3.8.0/assets/images/369ccd33e5368870b112.png
rename to snippet/3.5.0/assets/images/369ccd33e5368870b112.png
index 4fe6373c869a64203c973731c2f7c9e449439672..1f082e3e708c305a5fe39a181d53c76f7d103a30 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"scripts/chat.js","mappings":";iMAOAA,QAAQC,OAAO,gBAAiB,IAC/BC,SAAS,eAAe,WACvB,aAMAC,KAAKC,SAAW,GAQhBD,KAAKE,QAAU,SAAUC,GACvB,OAAO,IAAIC,EAAKD,IASlBH,KAAKK,OAAS,GASdL,KAAKM,GAAK,SAAUC,EAAOC,GACzBR,KAAKK,OAAOI,KAAK,CAACF,EAAOC,KAG3BR,KAAKU,KAAO,WACV,IAAIC,EAAKX,KAAKE,QACVD,EAAWD,KAAKC,SAChBI,EAASL,KAAKK,OAClB,MAAO,CACL,OAAU,SAASO,GAEjB,IAAIC,EAAOF,EAAGd,QAAQiB,OAAO,GAAIb,EAAUW,IAI3C,OAHAf,QAAQkB,QAAQV,GAAQ,SAAUE,GAChCM,EAAKP,GAAGC,EAAM,GAAIA,EAAM,OAEnBM,QAKfhB,QAAQC,OAAO,YAAa,CAAC,kBAC1BkB,WAAW,WAAY,CAAC,SAAU,SAAU,SAAU,cACvD,SAAUC,EAAQC,EAAQC,EAAQC,GAEhC,IAAIjB,EAAUN,QAAQiB,OAAO,GAAIG,EAAOI,MAAMH,EAAOI,WAGjDT,EAAQI,EAAOI,MAAMH,EAAOK,aAAeH,EAAYI,OAAOrB,GAE9DsB,EAAkB,SAASC,GAC7B,IAAIC,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtCL,EAAKM,QACL,IAAI1B,EAAQU,EAAOiB,WAAWC,MAAMlB,EAAQ,CAAC,SAAWS,EAAWb,GAAMuB,OAAOT,IAMhF,GALI,CACF,SAAW,EAAG,eAAiB,EAAG,YAAe,EAAG,UAAa,EAAG,SAAY,GAChFD,IACAT,EAAOoB,cAEL9B,EAAM+B,iBACR,OAAO,GAIXzB,EAAKP,GAAG,WAAYmB,GACpBR,EAAOsB,IAAI,YAAY,WACnB1B,EAAK2B,IAAI,WAAYf,MAGzBR,EAAOwB,MAAQ5B,EAEXK,EAAOwB,eAAe,cACxBvB,EAAOD,EAAOyB,UAAUC,OAAO3B,EAAQJ,GACvCI,EAAOsB,IAAI,YAAY,WACrBpB,EAAOD,EAAOyB,UAAUC,OAAO3B,UAIpC4B,UAAU,WAAY,CAAC,WACtB,MAAO,CACLC,OAAO,EACP9B,WAAY,eAGlBnB,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,SAAY,KACZ,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAIC,EAAcD,EAAMN,eAAe,iBACnCQ,EAAeF,EAAMN,eAAe,kBACpCS,EAAaH,EAAMN,eAAe,cAAgBI,EAAMzB,MAAM2B,EAAMI,WACxEN,EAAML,MAAMY,aAAaN,EAASE,EAAaC,EAAcC,QAInEtD,QAAQC,OAAO,kBAAmB,CAAC,cAKhC+C,UAAU,mBAAmB,WAC5B,MAAO,CACL,OAAS,EACT,KAAQ,SAASC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,iBAAiB,SAAU/C,GACtCA,EAAMgD,yBASbV,UAAU,gBAAiB,CAAC,WAAY,SAASW,GAChD,MAAO,CACL,OAAS,EACT,KAAQ,SAASV,EAAOC,EAASC,GAC/B,IAAIS,EACAC,GAAQ,EACZX,EAAQO,KAAK,YAAY,SAAU/C,GAmBnC,IAAoBoD,EACdC,EACAC,EADAD,GAAW,EACXC,GAFcF,EAlBFpD,GAoBasD,cAAgBF,EAAUG,cAAcD,aACrEhE,QAAQkB,QAAQ8C,GAAgBA,EAAaE,OAAO,SAASC,GAC/C,UAARA,IACFJ,GAAW,MAGRA,IAvBFF,IACHZ,EAAMmB,OAAOjB,EAAMkB,eACnBR,GAAQ,GAEVF,EAASW,OAAOV,GAChBlD,EAAMgD,qBAERR,EAAQO,KAAK,kBAAkB,SAAU/C,GACvCiD,EAASW,OAAOV,GAChBA,EAAUD,GAAS,WACjBV,EAAMzB,MAAM2B,EAAMoB,eAClBX,EAAU,KACVC,GAAQ,IACP,aAgBb7D,QAAQC,OAAO,YAAa,CAAC,cAC5B+C,UAAU,YAAY,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAY/B,SAASqB,IACPvB,EAAML,MAAM4B,WAAWtB,GAZrBC,EAAMsB,gBACRxB,EAAMyB,OAAOvB,EAAMsB,iBAAiB,SAAUE,GACxCA,EACFH,IAYJvB,EAAML,MAAMgC,aAAa1B,MANzBsB,SAYP,SAAUxE,GAAU,aACnB,IAAIC,EAASD,EAAQC,OAAO,cAAe,CAAC,cAgB5CD,EAAQkB,QAfK,CACX2D,YAAa,CAAC,QAAS,YACvBC,aAAc,CAAC,SACfC,UAAW,CAAC,QAAS,UACrBC,WAAY,CAAC,SAAU,UACvBC,eAAgB,CAAC,SAAU,UAC3BC,UAAW,CAAC,SACZC,YAAa,CAAC,SACdC,UAAW,CAAC,QAAS,YACrBC,YAAa,GACbC,SAAU,GACVC,SAAU,GACVC,MAAO,CAAC,WAAY,WAGE,SAAUC,EAAW5D,GAC3C,IA4B6B6D,EA5BzBC,EAAO,SA4BkBD,EA5Ba7D,GA6B5B+D,OAAO,GAAGC,cAAgBH,EAAOzD,MAAM,IA5BzC,mBAAR0D,IACFA,EAAO,qBAET1F,EAAO+C,UAAU2C,EAAM,CAAC,WACtB,MAAO,CACLG,QAAS,YACT3E,WAAY,CAAC,SAAU,SAAU,SAAUC,EAAQC,GACjDD,EAAOsB,IAAI,SAAWb,GAAW,WAC/B,IAAIkE,EAAWhE,MAAMC,UAAUC,MAAMC,KAAKC,WACtCzB,EAAQqF,EAAS3D,QAErB,GAAIhB,EAAOwB,QAAUmD,EAAS3D,QAA9B,CAGA,IAAIN,EAAO,GACX9B,EAAQkB,QAAQuE,GAAW,SAASd,EAAOqB,GACzClE,EAAK6C,GAASoB,EAASC,OAEgB,IAArC5E,EAAOI,MAAMH,EAAOsE,GAAO7D,IAC7BpB,EAAMgD,8BAtCnB,CAiDC1D,SAEFA,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAI8C,EAAO9C,EAAM+C,QACjBjD,EAAMyB,OAAOuB,GAAM,SAAUA,GAC3B,GAAKA,EAAL,CAGA,IAAIE,EAAa,IAAIC,WACrBD,EAAWE,cAAcJ,EAAKA,MAC9BE,EAAWG,OAAS,SAAU5F,GAC5BuC,EAAMmB,QAAO,WACXjB,EAAMoD,KAAK,MAAO7F,EAAM8F,OAAOC,qBAO3CzG,QAAQC,OAAO,iBAAkB,CAAC,cACjC+C,UAAU,gBAAiB,CAAC,WAC3B,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,GACfA,EAAMyD,UAAYzD,EAAML,MAAM+D,WAIpC3G,QAAQC,OAAO,OAAQ,CAAC,gBAAiB,YAAa,cAAe,WACnE,YAAa,iBAAkB,WAAY,yHC9JlC2G,4PAkKX,SAASC,EAAmBC,EAAUC,EAAaC,EAAcC,EAAOC,GACpE,IAAIC,GAAkB,IAAAC,OAAM,yBACxBC,GAAe,IAAAD,OAAM,sBACzB,MAAO,CACHE,SAAU,MACVC,UAAW,IACXC,QAAS,SAAUC,GACf,IAAIC,EAAUD,EAASE,OAEvB,OADAF,EAASG,QACF,SAAU3E,EAAO4E,GACpB,IAAIC,EAAOD,EAASC,KAAK,WACzB,IAAKA,EAGD,OAFAD,EAASF,KAAKD,QACdZ,EAASe,EAASE,WAAlBjB,CAA8B7D,GAGlC,IAAI+E,EAAMF,EAAKG,MAAQ,CAAEC,SAAU,GAAIC,YAAa,EAAAC,MAChDC,EAAaL,EAAIM,MAAQ,IAAI,EAAAC,eAAeP,EAAIM,MACpDT,EAASF,KAAKK,EAAIG,YAAYN,EAAUQ,IAAeX,GACvD,EAAAc,MAAA,gBAAsBV,EAAKW,QAASZ,EAASF,QAC7C,IAAIe,EAAO5B,EAASe,EAASE,YACzB5G,EAAa6G,EAAI7G,WACjBwH,EAAexB,EAAgBa,GAC/BY,EAAYvB,EAAaW,GACzBa,EAASR,IAAc,OAAUA,GAErC,GADApF,EAAM2F,GAAaC,EACf1H,EAAY,CACZ,IAAI2H,EAAsB/B,EAAY5F,GAAY,IAAAF,QAAO,GAAI4H,EAAQ,CAAEzH,OAAQ6B,EAAO4E,SAAUA,KAC5Fc,IACA1F,EAAM0F,GAAgBG,EACtB7F,EAAM0F,GAAcC,GAAaC,GAMrChB,EAASC,KAAK,0BAA2BgB,GACzCjB,EAASkB,WAAWjB,KAAK,0BAA2BgB,GACpDE,EAA4B9B,EAAIF,EAAc8B,EAAoB7F,EAAO+E,GAG7E,IAAI,IAAAiB,UAASjB,EAAIkB,WACb,IAAIC,GAAY,IAAAC,aAAYpB,EAAIkB,WAC5BG,EAAc,IAAIC,OAAO,eAAiBH,EAAY,IAAK,KAO3DI,EAAoBtG,EAAMyB,QAND,WACzB,IAAI8E,EAAc,GAAGvH,MAChBC,KAAK2F,EAAS,GAAGkB,UACjBU,QAAO,SAAUC,GAAM,OAAOA,GAAMA,EAAGC,SAAWN,EAAYO,KAAKF,EAAGC,YAC3E,OAAOH,GAAe,aAAgBA,GAAa1B,KAAK,IAAME,EAAIkB,UAAY,iBAErB,SAAUW,GAC9DA,IAELb,EAA4B9B,EAAIF,EAAc6C,EAAc5G,EAAO+E,GACnEuB,QAGRb,EAAKzF,MAzNrB2D,EAAS,CACL,QACA,WACA,gBACA,eACA,KACA,SAAwBK,EAAO6C,EAAUC,EAAeC,EAAc9C,GAwBlE,IAAI+C,EAAW,CACXhC,KAAM,CAAEC,SAAU,CAAEgC,SAAUjD,EAAMkD,WAAWC,qBAC/C3B,QAAS,IAETzF,EAAY,CACZqH,MAAO,EACP/C,SAAU,MACVgD,UAAU,EACV/C,SAAU,IACVgD,WAAY,UACZ/C,QAAS,SAAUC,EAAU+C,EAAQC,GACjC,OAAO,SAAUxH,EAAO4E,EAAU1E,GAC9B,IACIuH,EAAYC,EAAWC,EAAcC,EADrCC,EAAY3H,EAAc,QAAK,GAAI4H,EAAgB5H,EAAkB,WAAG6H,EAjCzE,SAAU9H,EAASsD,EAAQyE,GAC1B,mBAAwB,EACxBnB,EAASjG,MAAMX,EAAS,KAAMsD,GAAQ0E,KAAKD,GAG3CnB,EAASjG,MAAMX,EAAS,KAAMsD,EAAQyE,IA4BkCD,EAzBzE,SAAU9H,EAAS+H,GAClB,mBAAwB,EACxBnB,EAASqB,MAAMjI,GAASgI,KAAKD,GAG7BnB,EAASqB,MAAMjI,EAAS+H,IAoB0EG,EAAYvD,EAASwD,cAAc,YAAcpB,EAAUtE,EAAOqE,EAAa7G,EAAc,QAAKA,EAAY,MAAK,GAAjD6G,CAAqD/G,IAAU,WAEnOqI,EAAe,CACfC,MAAO,MACPC,GAAIxI,EAAUqH,QACd1E,KAAMA,EACN8F,IAAKL,EAAU3C,QAAQgD,IAAML,EAAU3C,QAAQgD,IAAM,IAAM9F,EAAOA,EAClE+F,OAAQ,KACRC,cAWJ,SAA+BD,KACvBA,GAAYA,aAAkB,QAEjBb,IAAYa,IAE7B,EAAAlD,MAAA,yBAA+B8C,EAAcI,GAAUA,EAAOxD,UAAYwD,EAAOxD,SAASgC,UAC1FW,EAAaa,EACbE,EAAWF,MAjBX,sBAEI,IAAIG,GAAsB,IAAAzE,OAAM,yBAAN,CAAgCgE,GAGtDU,GAAgB,IAAA1E,OAAM,0BAAN,CAAiCgE,GACrD,OAAOS,GAAuBC,IAGtC,EAAAtD,MAAA,iBAAuB,UAAW8C,GAUlCzD,EAASC,KAAK,UAAW,CAAEW,QAAS6C,IACpCM,IACA,IAAIG,EAAa9E,EAAM+E,eAAeV,GA2BtC,SAASM,EAAWF,GAChB,IAAIO,EAAWhJ,EAAMiJ,OACjBC,EAAYjF,EAAGkF,QAASC,EAAYnF,EAAGkF,QACvCE,EAAc,CACdrE,KAAMyD,EACNjD,QAAS6C,GAETiB,EAAc,CACdC,WAAYL,EAAUvI,QACtB6I,WAAYJ,EAAUzI,QACtB8I,YAAaL,GAcjBJ,EAASU,MAAM,sBAAuBhH,GACtC,IAAIiH,EAASnC,EAAYwB,GAAU,SAAUY,GACzCA,EAAM/E,KAAK,cAAeyE,GAC1BM,EAAM/E,KAAK,UAAWwE,GACtBtB,EAAe6B,EAAOhF,GAAU,WAC5BsE,EAAUW,UACNlC,GACAA,EAAa+B,MAAM,gCAClB,IAAAI,WAAUhC,KAAmBA,GAAkB9H,EAAMzB,MAAMuJ,KAC5DhB,EAAc8C,MAvD9B,WAWI,GAVInC,IACA,EAAAlC,MAAA,iBAAuB,yBAA0BkC,EAAW5C,KAAK,YACjE4C,EAAWsC,SACXtC,EAAa,MAEbE,IACA,EAAApC,MAAA,iBAAuB,mBAAoB8C,GAC3CV,EAAaqC,WACbrC,EAAe,MAEfD,EAAW,CACX,IAAIuC,EAAcvC,EAAU7C,KAAK,eACjC,EAAAU,MAAA,iBAAuB,cAAe0E,GACtClC,EAAeL,GAAW,WACtBuC,EAAYR,YAAYI,UACxBpC,EAAa,QAEjBA,EAAaC,EACbA,EAAY,MAuCZwC,MAEJxC,EAAYiC,GACZhC,EAAeqB,GAWFU,MAAM,qBAAsBjB,GAAUb,GACnDD,EAAapJ,MAAMsJ,GA7EvB7H,EAAMP,IAAI,YAAY,WAClB,EAAA8F,MAAA,iBAAuB,2BAA4B8C,GACnDS,UAgFhB,OAAO/I,IAGf6D,EAAmBuG,QAAU,CAAC,WAAY,cAAe,eAAgB,QAAS,MAiElF,IAAIC,EAAuE,mBAA7C,YAAe,aAAwB,UAEjEC,EAAe,EAEnB,SAAStE,EAA4B9B,EAAIF,EAAc8B,EAAoB1H,EAAQ4G,KAE3E,IAAAuF,YAAWzE,EAAmB0E,WAC3BxF,EAAIE,SAASgB,WAAalB,EAAIE,SAASuF,oBAAsBJ,GAChEvE,EAAmB0E,UAEvB,IAAIE,GAAY,IAAAC,MAAK3F,EAAIM,MAAMsF,MAAMC,KACjCC,EAAc,CAAErK,KAAMqF,GAE1B,IAAI,IAAAyE,YAAWzE,EAAmBiF,mBAAoB,CAClD,IACIC,EADiB,IAAI,EAAAzF,eAAeP,EAAIM,MACH2F,cAAc,gBAAgBnG,KAyBvE1G,EAAOsB,IAAI,WAAYsE,EAAakH,UAAU,IAvB1B,SAAUC,GAG1B,GAAIA,IAAiBH,IAAsE,IAA/CG,EAAaC,UAAUC,QAAQX,GAA3E,CAEA,IAAIY,EAAWH,EAAaI,OAAO,MAC/BC,EAAaL,EAAaI,OAAO,QACjCE,EAAgB,SAAUC,GAAQ,OAAOA,EAAKC,aAC9CC,EAAWT,EAAaU,YAAY,MAAMC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAC7EC,EAAad,EAAaU,YAAY,QAAQC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAEjFE,EAAkBN,EAASnF,QAAO,SAAU0F,GAC5C,IAAIC,EAAMH,EAAWZ,QAAQc,GAC7B,OAAgB,IAATC,IAAeH,EAAWG,GAAKC,KAAKC,OAAOhB,EAASa,EAAM3D,IAAKgD,EAAWW,EAAM3D,QAG3F,GAAI0D,EAAgBK,OAAQ,CACxB,IAAIC,EAAgBN,EAAgBJ,KAAI,SAAUW,GAAK,OAAOA,EAAEjE,MAE5DkE,GAAY,IAAAjG,QAAO6E,GAAU,SAAUnK,EAAK6B,GAAO,OAAuC,IAAhCwJ,EAAcnB,QAAQrI,MACpF8C,EAAmBiF,kBAAkB2B,EAAWvB,OAGSL,IAGrE,IAAI,IAAAP,YAAWzE,EAAmB6G,WAAY,CAC1C,IAAIC,EAAOtC,IACPuC,EAAc,gBAEdC,EAAqB,SAAUC,GAC/B,QAASA,IAAWA,EAAMF,KAA6C,IAA7BE,EAAMF,GAAaD,IAAmBE,EAAmBC,EAAMC,oBAYzGC,EAAW,CAAE7B,QAASV,EAAU/H,MACpCvE,EAAOsB,IAAI,WAAYsE,EAAakJ,SAASD,GAV3B,SAAUF,GACxB,IAAInM,EACAuM,EAAOJ,EAAMF,GAAeE,EAAMF,IAAgB,GAKtD,OAJKC,EAAmBC,KACpBnM,EAAUsD,EAAGkJ,KAAKtH,EAAmB6G,UAAUI,KACvC7E,MAAK,SAAU/G,GAAO,OAAQgM,EAAIP,IAAgB,IAARzL,KAE/CP,IAGyDkK,KAG5E,YAAe,mBAAmB9K,UAAU,SAAU4D,GACtD,YAAe,mBAAmB5D,UAAU,SAAU6D,sWC9ZlDwJ,EAAiC,WACjC,SAASA,IACL,IAAIC,EAAQnQ,KACGA,KAAKoQ,SAAWvQ,EAAQ,GAAR,cAAwB,EACxCG,KAAKU,KAAO,CACvB,QACA,iBACA,YACA,SAAU2P,EAAOC,EAAgBC,GAI7B,OAHAJ,EAAMK,iBAAmBD,EAAUE,KAAOF,EAAUE,IAAI,qBAAuBF,EAAUG,IAAI,oBAC7FP,EAAME,MAAQA,EACdF,EAAMG,eAAiBA,EAChBH,IAyJnB,OApJAD,EAAgBrO,UAAU8O,eAAiB,SAAUnM,GACjDxE,KAAKoQ,SAAW5L,GAepB0L,EAAgBrO,UAAU+O,WAAa,SAAUrF,EAAQ6C,EAAQyC,GAC7D,IACIC,EAAa,SAAUxK,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGC,SAAUD,OAC3GE,EAAc,SAAU5K,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGjI,UAAWiI,OACjH,OAAO,IAAApE,WAAUrB,EAAO0F,UAClBH,EAAW9Q,KAAKmR,WAAW5F,EAAO0F,SAAU7C,KAC5C,IAAAxB,WAAUrB,EAAO6F,aACbN,EAAW9Q,KAAKqR,QAAQ9F,EAAO6F,YAAahD,KAC5C,IAAAxB,WAAUrB,EAAO+F,kBACbR,EAAW9Q,KAAKuR,aAAahG,EAAO+F,iBAAkBlD,EAAQyC,KAC9D,IAAAjE,WAAUrB,EAAOxC,WACbmI,EAAY3F,EAAOxC,YACnB,IAAA6D,WAAUrB,EAAO+B,mBACb4D,EAAYlR,KAAKwR,sBAAsBjG,EAAO+B,kBAAmBc,EAAQyC,IACzEC,EAbA,wBAwB1BZ,EAAgBrO,UAAUsP,WAAa,SAAUF,EAAU7C,GACvD,OAAO,IAAAhB,YAAW6D,GAAYA,EAAS7C,GAAU6C,GAWrDf,EAAgBrO,UAAUwP,QAAU,SAAUI,EAAKrD,GAG/C,OAFI,IAAAhB,YAAWqE,KACXA,EAAMA,EAAIrD,IACH,MAAPqD,EACO,KACPzR,KAAKoQ,SACEpQ,KAAKqQ,MACPK,IAAIe,EAAK,CAAEC,MAAO1R,KAAKsQ,eAAgBqB,QAAS,CAAEC,OAAQ,eAC1D7G,MAAK,SAAU8G,GAChB,OAAOA,EAASlK,QAGjB3H,KAAKwQ,iBAAiBiB,IAUjCvB,EAAgBrO,UAAU0P,aAAe,SAAUxR,EAAUqO,EAAQyC,GACjE,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAS1BX,EAAgBrO,UAAU2P,sBAAwB,SAAUzR,EAAUqO,EAAQyC,GAC1E,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAgB1BX,EAAgBrO,UAAUqQ,sBAAwB,SAAUzL,EAAQoK,EAAS9H,EAAWoJ,GACpFA,EAAWA,GAAY,GAEvB,IAAIC,EAASvS,EAAQ,GAAR,eAAyB,EAAI,KAAO,GAE7CwS,EAAQ,SAAUC,GAClB,IAAIC,GAAU,IAAAtJ,aAAYqJ,GAC1B,MAAO,aAAa7I,KAAK8I,GAAW,KAAOA,EAAUA,GA6BrDvP,EAQZ,SAA8BwC,GAC1B,IAAIgN,EAAU,EAAAzB,SAAA,cAAuBvL,EAAO,aAC5C,IAAKgN,IAAYA,EAAQpD,OACrB,MAAM,IAAIqD,MAAM,mCAAqCjN,EAAO,KAChE,OAAOgN,EAAQ7D,IAAI+D,GAAa9D,OAAO,EAAAC,QAAS,IAZhC8D,CAAqB5J,GAAW4F,KA3BzB,SAAUiE,GACzB,IAAIpN,EAAOoN,EAAMpN,KAAM0J,EAAO0D,EAAM1D,KAChC2D,EAAWR,EAAM7M,GAIrB,GAAIiB,EAAOqM,KAAKD,KAAcV,EAAS3M,GACnC,OAAOqN,EAAW,KAAOpM,EAAOqM,KAAKD,GAAY,IACrD,IAAIE,EAAcZ,EAAS3M,IAASA,EAGpC,GAAa,MAAT0J,EACA,OAAO2D,EAAW,OAAST,EAAS,YAAcW,EAAc,MAIpE,GAAa,MAAT7D,EAAc,CACd,IAAI8D,EAAMnC,EAAQ/C,cAAciF,GAC5BpS,EAAKqS,GAAOA,EAAIrL,KAChBhG,EAAQhB,GAAM,EAAAoQ,SAAA,mBAA4BpQ,IAAQ,GAGtD,OAAOkS,EAAW,cAAgBE,IADhB,IAAAf,SAAQrR,GAAM,KAAOA,EAAGyO,OAAS,GAAK,IAAM,IACA,IAAMzN,EAAKsR,KAAK,KAAO,KAGzF,OAAOJ,EAAW,KAAOT,EAAS,YAAcW,EAAc,OAEJE,KAAK,KAC/DjK,EAAYqJ,EAAMtJ,GACtB,MAAO,IAAMC,EAAY,IAAMhG,EAAQ,MAAQgG,EAAY,KAExDkH,EArKyB,GAiLhCwC,EAAc,SAAUQ,GACxB,OAAI,IAAAC,UAASD,EAAIE,kBACNC,EAAcH,EAAIE,kBACtBC,EAAcH,EAAIpQ,QAIzBuQ,EAAgB,SAAUC,GAC1B,OAAOC,OAAOC,KAAKF,GAAe,IAE7B3E,KAAI,SAAU9I,GAAO,MAAO,CAACA,EAAK,oBAAoB4D,KAAK6J,EAAYzN,QAEvEyD,QAAO,SAAUmK,GAAS,OAAO,IAAA7G,WAAU6G,KAAU,IAAAzB,SAAQyB,EAAM,OAEnE9E,KAAI,SAAU8E,GAAS,MAAO,CAAGjO,KAAMiO,EAAM,GAAG,IAAMA,EAAM,GAAIvE,KAAMuE,EAAM,GAAG,2ECzL7EC,EAAsB,SAAUC,GACvC,OAAO,SAA0BC,GAC7B,IAAIC,EAAOD,EAAYD,GACnBG,EAAwB,WAAbH,EAAwB,OAAS,KAOhD,OAAOE,EANP,SAA0BjE,EAAOnC,GAC7B,IACIsG,EADiB,IAAI,EAAA3L,eAAewH,EAAMlB,YAAYoF,IAC1BC,WAAWtG,EAAMuG,WAC7CtL,GAAS,IAAA5H,QAAOmT,EAAUF,GAAa,CAAEG,QAASzG,EAAOO,aAAc4B,IAC3E,OAAO,EAAAmB,SAAA,iBAA0B8C,EAAM7T,KAAM0I,SAEhByL,ICfrCC,EAAqC,WACrC,SAASA,EAAoBC,GAEzBrU,KAAKsU,cAAgB,GACrBtU,KAAKqU,kBAAoBA,EACzB,IAAIE,GAAM,IAAAvQ,KAAIqQ,IACd,IAAAG,sBAAqBD,EAAKvU,KAAMuU,EAAK,CAAC,eA8D1C,OAhDAH,EAAoBK,6BAA+B,SAAUC,GACzD,IAAIC,EAAWD,EAAOE,kBAAkB1F,KAAK,QAC7CyF,EAASE,OAAS,SAAUvF,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,WAAW,SAAUC,GAAK,MAAQ,CAAE,IAAK,KAAM,IAAK,OAAQA,MAAU1F,GAElHqF,EAASM,OAAS,SAAU3F,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,aAAa,SAAUC,GAAK,MAAQ,CAAE,KAAM,IAAK,MAAO,KAAMA,MAAU1F,IAIxH8E,EAAoBvS,UAAUqT,QAAU,aACxCd,EAAoBvS,UAAUsT,SAAW,SAAU3U,GAC/C,IAAI2P,EAAQnQ,KAEZ,OADAA,KAAKsU,cAAc7T,KAAKD,GACjB,WAAc,OAAO,IAAA4U,YAAWjF,EAAMmE,cAAjB,CAAgC9T,KAEhE4T,EAAoBvS,UAAUwT,UAAY,WACtC,IAAIA,EAAYrV,KAAKqU,kBAAkBgB,YAEvC,OADAA,GAAY,IAAAlC,UAASkC,GAAaA,EAAUC,QAAUD,IAClCrV,KAAKuV,SAASC,SAEtCpB,EAAoBvS,UAAU4T,SAAW,WACrC,OAAOzV,KAAK0V,YAAc1V,KAAK0V,UAAY1V,KAAK2V,SAASF,YAAczV,KAAK4V,QAAQC,SAAS/B,WAEjGM,EAAoBvS,UAAU4P,IAAM,SAAUqE,EAAQf,EAAStH,GAQ3D,YAPgB,IAAZsH,IAAsBA,GAAU,IAChC,IAAAnI,WAAUkJ,IACV9V,KAAK+V,UAAUtE,IAAIqE,GACnBf,GACA/U,KAAK+V,UAAUhB,UACftH,GACAzN,KAAK+V,UAAUtI,MAAMA,GAClBzN,KAAK+V,UAAUtE,OAE1B2C,EAAoBvS,UAAUmU,iBAAmB,SAAUC,EAAYF,EAAWR,EAAUI,EAAUC,GAClG,IAAIzF,EAAQnQ,KACZA,KAAK+V,UAAYA,EACjB/V,KAAKuV,SAAWA,EAChBvV,KAAK2V,SAAWA,EAChB3V,KAAK4V,QAAUA,EAEfK,EAAW1T,IAAI,0BAA0B,SAAU2T,GAAO,OAAO/F,EAAMmE,cAAcvT,SAAQ,SAAUJ,GAAM,OAAOA,EAAGuV,SACvH,IAAIC,GAAO,IAAAnS,KAAI+R,IAEf,IAAAvB,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,UAAW,OAAQ,SAAU,UAErE,IAAA3B,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,OAAQ,WAAY,UAEzD/B,EApE6B,0ECaxCvU,EAAQ,GAAR,OAAe,qBAAsB,IACrC,IAAIuW,EAAWvW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,OAC7CwW,EAAWxW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,mBAC7CyW,EAAUzW,EAAQ,GAAR,OAAe,mBAAoB,CAAC,mBAC9C0W,EAAY1W,EAAQ,GAAR,OAAe,kBAAmB,CAAC,mBAAoB,iBAAkB,uBACrF2W,EAAW3W,EAAQ,GAAR,OAAe,YAAa,CAAC,iBAAkB,kBAAmB,uBAE7E6U,GADW7U,EAAQ,GAAR,OAAe,mBAAoB,CAAC,cACtC,MAGb,SAAS4W,EAAkBpC,IAEvBK,EAAS1U,KAAK0U,OAAS,IAAI,EAAAgC,UACpBC,cAAgB,IAAI,IAAcjC,EAAOkC,cAAelC,EAAOmC,cAEtEnC,EAAOkC,cAAcE,UAAU,QAAS,MACxCpC,EAAOkC,cAAcE,UAAU,SAAUpD,EAAoB,WAC7DgB,EAAOkC,cAAcE,UAAU,WAAYpD,EAAoB,aAC/DgB,EAAOkC,cAAcE,UAAU,UAAWpD,EAAoB,YAC9DgB,EAAOqC,YAAY/M,WAAWgN,mBAAmB,OAAO,WAExDtC,EAAOuC,WAAW1L,OAAO2L,eAAgB,EACzC,IAAIC,EAAsBzC,EAAO0C,gBAAkB1C,EAAO2C,eAAiB,IAAIjD,EAAoBC,GAMnG,SAAS3T,EAAKqV,EAAWJ,EAAUC,EAASL,EAAUU,EAAY5F,EAAOC,GAIrE,OAHA6G,EAAmBnB,iBAAiBC,EAAYF,EAAWR,EAAUI,EAAUC,UACxElB,EAAe,cACfA,EAAa,KACbA,EAEX,OAXAN,EAAoBK,6BAA6BC,GAEjDA,EAAe,OAAIA,EACnBA,EAAa,KAAIhU,EACjBA,EAAKuM,QAAU,CAAC,YAAa,WAAY,UAAW,WAAY,aAAc,QAAS,kBAOhFyH,EA1BX+B,EAAkBxJ,QAAU,CAAC,qBA4B7B,IAAIqK,EAAiB,SAAUC,GAAe,MAAO,CACjD,oBACA,SAAUC,GACN,IAAIC,EAAUD,EAAK9C,OAAO6C,GAE1B,OADAE,EAAc,KAAI,WAAc,OAAOA,GAChCA,KAKf,SAASC,EAASnH,EAAWxJ,EAAI4Q,GAI7B,GAHA,EAAA5G,SAAA,UAAqBR,EACrB,EAAAQ,SAAA,GAAchK,GAETwM,OAAO1R,UAAUa,eAAeX,KAAKwO,EAAW,YACjD,IACIA,EAAUqH,QAAO,SAAUC,OAE/B,MAAOxS,GACHkL,EAAUuH,WAAa,cAAcrO,KAAKpE,GAASA,EAAMyP,YAKjE6C,EAAUf,cACLlG,MACA/B,KAAI,SAAUW,GAAK,OAAOA,EAAE0E,UAAU+D,eACtCnJ,OAAO,EAAAC,QAAS,IAChBvF,QAAO,SAAUgG,GAAK,MAAkB,aAAXA,EAAEwC,QAC/B/Q,SAAQ,SAAUiX,GAAc,OAAQA,EAAWlG,KAAOvB,EAAU0H,SAASD,EAAWE,UAAW3H,EAAUuH,aAQ/G,SAASK,EAAalC,GACzBA,EAAW1R,QAAO,WACd,EAAA8D,MAAA,wBA9BRqP,EAASzK,QAAU,CAAC,YAAa,KAAM,aA2BvCkL,EAAalL,QAAU,CAAC,cAMxBmJ,EAASrW,SAAS,YAAa0W,GAC/BH,EAAQvW,SAAS,aAAc,CAAC,oBAXL,SAAUqY,GAAY,OAAQA,EAASC,kBAAoB,IAAI,IAAkBD,MAY5G/B,EAAStW,SAAS,cAAeuX,EAAe,eAChDjB,EAAStW,SAAS,qBAAsB,CAAC,oBAAqB,WAAc,OAAO2U,EAAOE,qBAC1FyB,EAAStW,SAAS,oBAAoB,WAAc,OAAO,IAAImQ,KAC/DqG,EAAUxW,SAAS,iBAAkBuX,EAAe,kBACpDf,EAAUxW,SAAS,mBAAoBuX,EAAe,YACtDf,EAAUxW,SAAS,eAAgBuX,EAAe,sBAClDf,EAAUxW,SAAS,SAAU,CAAC,oBAfP,WAAc,OAAO,IAAAe,QAAO4T,EAAOiC,cAAe,CAAEjW,KAAM,WAAc,OAAOgU,EAAOmC,mBAgB7GN,EAAUrW,QAAQ,eAAgB,CAAC,YAAa,SAAUyX,GAAa,OAAOA,EAAUW,QAAQlK,UAChGoI,EAAStW,QAAQ,SAAS,WAAc,OAAOwU,EAAOqC,eACtDP,EAASiB,QAAQ,UAAU,WAAc,OAAO,EAAApP,SAChDmO,EAAS+B,IAAIJ,GACb9B,EAASkC,IAAI,CAAC,qBAAsB,SAAUC,OAC9CjC,EAAUgC,IAAI,CAAC,SAAU,SAAUE,OACnCnC,EAAQiC,IAAI,CAAC,aAAc,SAAUG,OACrCtC,EAASmC,IAAIb,GAEN,IAAIzD,EAAY,SAAU0E,GAO7B,OANaA,EAAIC,YAAYtP,OAAO,EAAAR,UAChB6F,KAAI,SAAU9I,GAC9B,IAAImS,EAAaW,EAAI7K,cAAcjI,GAEnC,MAAO,CAACA,EAAoB,WADX8S,EAAIE,UAAUb,GAAYc,MACJd,EAAWvU,QAAUuU,EAAWrQ,SAE7DiH,OAAO,EAAAmK,WAAY,2JC9GrC,SAASC,EAAeP,GACpB,IAAIQ,EAAW,SAAUxL,EAAOW,EAAQjO,GACpC,OAAOsY,EAAOS,GAAGzL,EAAOW,EAAQjO,IAGpC,OADA8Y,EAASE,WAAY,EACdF,EAaX,SAASG,EAAuBX,GAC5B,IAAIY,EAAiB,SAAU5L,EAAOW,EAAQjO,GAC1C,OAAOsY,EAAOa,SAAS7L,EAAOW,EAAQjO,IAG1C,OADAkZ,EAAeF,WAAY,EACpBE,EAxBXL,EAAe/L,QAAU,CAAC,UAkB1BmM,EAAuBnM,QAAU,CAAC,UAQlC,YAAe,mBAAmB3D,OAAO,UAAW0P,GAAgB1P,OAAO,kBAAmB8P,oKCpB1FG,EAA+B,WAC/B,SAASA,EAAc3C,EAAeC,GAClC7W,KAAK4W,cAAgBA,EACrB5W,KAAK6W,aAAeA,GACpB,IAAArC,uBAAqB,IAAAxQ,KAAIuV,EAAc1X,WAAY7B,MAAM,IAAAgE,KAAIhE,OAgHjE,OArBAuZ,EAAc1X,UAAUiV,UAAY,SAAUtR,EAAMgU,GAChD,OAAOxZ,KAAK4W,cAAcE,UAAUtR,EAAMgU,IAASxZ,MAEvDuZ,EAAc1X,UAAU4L,MAAQ,SAAUjI,EAAMiU,GAQ5C,OAPI,IAAAtG,UAAS3N,GACTiU,EAAajU,EAGbiU,EAAWjU,KAAOA,EAEtBxF,KAAK4W,cAAc8C,SAASD,GACrBzZ,MAOXuZ,EAAc1X,UAAU8X,UAAY,SAAUnZ,GAC1C,OAAOR,KAAK6W,aAAa8C,UAAUnZ,IAEhC+Y,EApHuB,6LCf3B,SAASK,IACZ,IAAIC,EAAkB,KACtB,OAAO,SAAU1R,EAAM2R,GAEnB,OADAD,EAAkBA,GAAmB,EAAA9I,SAAA,cAAuB,oBACrD,CAAC,IAAIgJ,EAAc5R,EAAM2R,EAAMD,KAI9C,IAAIG,EAAY,SAAUxG,EAAMyG,GAAO,OAAOzG,EAAK5E,QAAO,SAAUsL,EAAKrU,GAAO,OAAOqU,IAAO,IAAAtN,WAAUqN,EAAIpU,OAAU,IAY/G,SAASsU,EAAgB1M,GAE5B,IAAKA,EAAM2M,OACP,MAAO,GACX,IAAgKC,EAAW,CAAC,YAAa,WAAY,qBAAsBC,EAA7M,CAAC,mBAAoB,cAAe,WAAY,SAAU,SAAyKlY,OAApJ,CAAC,aAAc,qBAAsB,eAAgB,cAAiHmY,EAAcF,EAASjY,OAAOkY,GAIjS,IAAI,IAAA1N,WAAUa,EAAM+M,QAAUR,EAAUO,EAAa9M,GACjD,MAAM,IAAIgF,MAAM,UAAYhF,EAAMjI,KAAlB,4JAGL+U,EAAYjR,QAAO,SAAUzD,GAAO,OAAO,IAAA+G,WAAUa,EAAM5H,OAAUoN,KAAK,OAEzF,IAAIuH,EAAQ,GAAIC,EAAchN,EAAM+M,OAAS,CAAEE,UAAU,IAAAC,MAAKlN,EAAO8M,IAsBrE,OArBA,IAAAxZ,SAAQ0Z,GAAa,SAAUlP,EAAQ/F,GASnC,GAPAA,EAAOA,GAAQ,YAEX,IAAAsD,UAASyC,KACTA,EAAS,CAAExC,UAAWwC,IAE1BA,GAAS,IAAAzK,QAAO,GAAIyK,GAEhByO,EAAUK,EAAU9O,IAAWyO,EAAUM,EAAa/O,GACtD,MAAM,IAAIkH,MAAM,mBAAqB4H,EAASpH,KAAK,KAAO,UAAYqH,EAAYrH,KAAK,KAAO,mBAAqBzN,EAAO,IAAMiI,EAAMjI,KAAO,KAEjJ+F,EAAO9C,UAAY8C,EAAO9C,WAAa,WACvC8C,EAAOH,MAAQ,MACfG,EAAOxB,SAAW0D,EAClBlC,EAAOqP,MAAQpV,EACf,IAAIqV,EAAa,EAAAC,YAAA,sBAAkCvP,EAAOxB,SAAUwB,EAAOqP,OAC3ErP,EAAOwP,YAAcF,EAAWG,WAChCzP,EAAO0P,qBAAuBJ,EAAWK,oBACzCV,EAAMhV,GAAQ+F,KAEXiP,EAGX,IAAInP,EAAK,EAEL0O,EAA+B,WAC/B,SAASA,EAAc5R,EAAMJ,EAAU7H,GACnC,IAAIiQ,EAAQnQ,KACZA,KAAKmI,KAAOA,EACZnI,KAAK+H,SAAWA,EAChB/H,KAAKE,QAAUA,EACfF,KAAKmb,IAAM9P,IACXrL,KAAKob,QAAS,EACdpb,KAAKgI,YAAc,SAAUvB,EAAQoK,GACjC,OAAOV,EAAMpH,UACPoH,EAAMjQ,QAAQgS,sBAAsBzL,EAAQoK,EAASV,EAAMpH,UAAWoH,EAAMpI,SAASoK,UACrFhC,EAAMc,UAiCpB,OA9BA8I,EAAclY,UAAUwZ,KAAO,WAC3B,IAAIlL,EAAQnQ,KACR+G,EAAK,EAAAgK,SAAA,GACLF,EAAU,IAAI,EAAAzI,eAAepI,KAAKmI,MAClCiG,EAASpO,KAAKmI,KAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,IAAAzN,QAAOoZ,EAAK3L,EAAK+M,eAAiB,IAC1FC,EAAW,CACXtK,SAAUlK,EAAGkJ,KAAKjQ,KAAKE,QAAQ0Q,WAAW5Q,KAAK+H,SAAUqG,EAAQyC,IACjE7P,WAAY+F,EAAGkJ,KAAKjQ,KAAKwb,cAAc3K,KAE3C,OAAO9J,EAAG0U,IAAIF,GAAUxQ,MAAK,SAAU2Q,GAInC,OAHA,EAAArT,MAAA,sBAA4B,SAAU8H,GACtCA,EAAMnP,WAAa0a,EAAQ1a,YAC3B,IAAAF,QAAOqP,EAAOuL,EAAQzK,UACfd,MAQf4J,EAAclY,UAAU2Z,cAAgB,SAAU3K,GAC9C,IAAI9Q,EAAWC,KAAK+H,SAAS4T,mBAC7B,KAAK,IAAAC,cAAa7b,GACd,OAAOC,KAAK+H,SAAS/G,WACzB,IAAI8Q,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAEnBkJ,EA5CuB,wKC9C9B8B,EAAmC,WAEnC,SAASA,EAAiCnH,GACtC1U,KAAK0U,OAASA,EA2KlB,OAzKAmH,EAAkBC,kBAAoB,SAAUpH,EAAQqH,GACpD,OAAO,SAAUC,GAAS,OAAO,EAAAjL,SAAA,iBAA0BgL,EAAS,KAAM,CAAEE,OAAQD,EAAOE,aAAcxH,EAAO4D,QAAQlK,WAG5HyN,EAAkBha,UAAUnB,KAAO,WAC/B,IAAIuW,EAAajX,KAAK0U,OAAOuC,WAI7B,OAHAjX,KAAK0U,OAAOyH,UAAUC,QAAO,GACxBnF,EAAWoF,mBACZpF,EAAWqF,SACRtc,KAAK0U,OAAOyH,WAiCvBN,EAAkBha,UAAU0a,KAAO,SAAUC,GACzC,IAAIrM,EAAQnQ,KACZ,KAAK,IAAAoN,YAAWoP,GACZ,MAAM,IAAI/J,MAAM,6BACpB,IACI8J,EAAO,IAAI,EAAAE,aADH,WAAc,OAAOD,EAAO,EAAAzL,SAAA,UAAoBZ,EAAMuE,OAAO0C,mBACvC,EAAAsF,UAElC,OADA1c,KAAK0U,OAAOuC,WAAW0F,MAAMJ,KAAKA,GAC3Bvc,MA4BX6b,EAAkBha,UAAU+a,UAAY,SAAUL,GAC9C,IAAIpM,EAAQnQ,KACR6c,EAAW7c,KAAK0U,OAAOuC,WAAW0F,MACtC,IAAI,IAAA7T,UAASyT,GACTM,EAASD,UAAUL,OAElB,MAAI,IAAAnP,YAAWmP,GAIhB,MAAM,IAAI9J,MAAM,uCAHhBoK,EAASD,WAAU,WAAc,OAAOL,EAAK,EAAAxL,SAAA,UAAoBZ,EAAMuE,OAAO0C,oBAKlF,OAAOpX,MAwCX6b,EAAkBha,UAAUoO,KAAO,SAAU6M,EAAMf,GAK/C,QAJI,IAAA/J,SAAQ+J,KAAY,IAAA3O,YAAW2O,MAC/BA,EAAUF,EAAkBC,kBAAkB9b,KAAK0U,OAAQqH,IAE/D/b,KAAK0U,OAAOuC,WAAW0F,MAAM1M,KAAK6M,EAAMf,GACjC/b,MAgCX6b,EAAkBha,UAAUkb,eAAiB,SAAU9Q,GACnDjM,KAAK0U,OAAOuC,WAAW8F,eAAe9Q,IAEnC4P,EA9K2B,iJCKtC,UAAe,mBAAmB9b,SAAS,iBApB3C,WACI,IAAIid,GAAkB,EACtBhd,KAAKgd,gBAAkB,WACnBA,GAAkB,GAEtBhd,KAAKU,KAAO,CACR,gBACA,WACA,SAAUuc,EAAezZ,GACrB,OAAIwZ,EACOC,EAEJ,SAAUvV,GACb,OAAOlE,GAAS,WACZkE,EAAS,GAAGwV,mBACb,GAAG,8nBClBlBC,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GAaAK,EAAwB,iBAATlQ,MAAqBA,KAAKA,OAASA,MAAQA,MAC9C,iBAAX,EAAAmQ,GAAuB,EAAAA,EAAOC,SAAW,EAAAD,GAAU,EAAAA,QAC3D,EACAhe,EAAU+d,EAAK/d,SAAW,GACnBke,EAAWle,EAAQke,UAAYC,KAAK/W,MAAM3D,KAAK0a,MAC/CC,EAASpe,EAAQoe,QAAUD,KAAKE,UAAU5a,KAAK0a,MAC/Cjd,EAAUlB,EAAQkB,SAqc7B,SAAkBkZ,EAAKnP,EAAIqF,GACvB,IAAI,QAAQ8J,GACR,OAAOA,EAAIlZ,QAAQ+J,EAAIqF,GAC3BoD,OAAOC,KAAKyG,GAAKlZ,SAAQ,SAAU8E,GAAO,OAAOiF,EAAGmP,EAAIpU,GAAMA,OAvcvD/E,EAASyS,OAAO3Q,QAycpB,SAAiBub,GACpB,IAAK,IAAId,EAAI,EAAGA,EAAIrb,UAAUoN,OAAQiO,IAAK,CACvC,IAAIpD,EAAMjY,UAAUqb,GACpB,GAAKpD,EAGL,IADA,IAAIzG,EAAOD,OAAOC,KAAKyG,GACdyD,EAAI,EAAGA,EAAIlK,EAAKpE,OAAQsO,IAC7BS,EAAM3K,EAAKkK,IAAMzD,EAAIzG,EAAKkK,IAGlC,OAAOS,GAldAhP,EAAStP,EAAQsP,QAod5B,SAASiP,EAAQC,EAAIC,GACjB,GAAID,IAAOC,EACP,OAAO,EACX,GAAW,OAAPD,GAAsB,OAAPC,EACf,OAAO,EACX,GAAID,GAAOA,GAAMC,GAAOA,EACpB,OAAO,EACX,IAAIC,SAAYF,EAChB,GAAIE,WAD4BD,GACR,WAAPC,EACb,OAAO,EACX,IAyBeC,EAAIC,EAzBfC,EAAM,CAACL,EAAIC,GACf,IAAI,QAAI,KAAJ,CAAaI,GACb,OAuBeD,EAvBMH,GAuBVE,EAvBMH,GAwBdjP,SAAWqP,EAAGrP,QAEduP,EAAYH,EAAIC,GAAI7P,QAAO,SAAUgQ,EAAGC,GAAK,OAAOD,GAAKR,EAAQS,EAAE,GAAIA,EAAE,OAAQ,GAzBxF,IAAI,QAAI,KAAJ,CAAYH,GACZ,OAAOL,EAAGS,YAAcR,EAAGQ,UAC/B,IAAI,QAAI,KAAJ,CAAcJ,GACd,OAAOL,EAAGvJ,aAAewJ,EAAGxJ,WAChC,IAAI,QAAI,KAAJ,CAAgB4J,GAChB,OAAO,EAEX,GADiB,CAAC,KAAY,KAAS,KAAQ,MAChC/P,IAAI,MAAKC,QAAO,SAAUgQ,EAAGje,GAAM,OAAOie,KAAOje,EAAG+d,MAAS,GACxE,OAAO,EACX,IAAIlL,EAAO,GAEX,IAAK,IAAI3N,KAAOwY,EAAI,CAChB,IAAKD,EAAQC,EAAGxY,GAAMyY,EAAGzY,IACrB,OAAO,EACX2N,EAAK3N,IAAO,EAEhB,IAAK,IAAIA,KAAOyY,EACZ,IAAK9K,EAAK3N,GACN,OAAO,EAEf,OAAO,GApfJ,SAAS6W,EAASpN,GACrB,OAAOA,EAEJ,SAASrH,KAyDT,SAASuM,EAAqBuK,EAAQ1Y,EAAQ/C,EAAM0b,EAASC,QAC/C,IAAbA,IAAuBA,GAAW,GACtC,IAAIC,EAAe,SAAUC,GAAU,OAAOJ,IAASI,GAAQ7b,KAAKA,MAQpE,OADA0b,EAAUA,GAAWzL,OAAOC,KAAKuL,MAClBnQ,QAAO,SAAUsL,EAAK1U,GAPd,IAAU2Z,EAS7B,OADAjF,EAAI1U,GAAQyZ,GARiBE,EAQW3Z,EAPjC,WAEH,OADAa,EAAO8Y,GAAUD,EAAaC,GACvB9Y,EAAO8Y,GAAQhd,MAAM,KAAMH,aAKUkd,EAAa1Z,GACtD0U,IACR7T,GAMA,IAAI+Y,EAAU,SAAUhF,EAAQiF,GAAS,OAAOve,EAAOyS,OAAO/R,OAAO4Y,GAASiF,IAE1EC,GAAU,SACd,SAAkBC,EAAOtF,GAC5B,OAA+B,IAAxBsF,EAAMrR,QAAQ+L,MAMd7E,GAAa,SACjB,SAAqBmK,EAAOtF,GAC/B,IAAIhL,EAAMsQ,EAAMrR,QAAQ+L,GAGxB,OAFIhL,GAAO,GACPsQ,EAAMC,OAAOvQ,EAAK,GACfsQ,KAGAE,GAAS,SACb,SAAiBC,EAAK1b,GACzB,OAAO0b,EAAIjf,KAAKuD,GAAMA,KAGf2b,EAAW,SAAUC,GAC5B,OAAOA,EAAU9d,QAAQf,SAAQ,SAAUJ,GACzB,mBAAPA,GAAqBA,IAC5ByU,EAAWwK,EAAWjf,OAQvB,SAASV,EAASW,GAErB,IADA,IAAIif,EAAe,GACVC,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCD,EAAaC,EAAK,GAAK9d,UAAU8d,GAErC,IAAIC,EAAcjf,EAAOqB,WAAM,EAAQgb,EAAe,CAAC,IAAK0C,EAAaG,YACzE,OAAOlf,EAAOif,EAAapF,EAAK/Z,GAAQ,GAAI2S,OAAOC,KAAKuM,KAGrD,IAAIE,EAAS,SAAUC,EAAMC,GAAQ,OAAOrf,EAAOof,EAAMC,IAQzD,SAASC,EAAUC,EAAOC,GAC7B,IAAInY,EAAO,GAEX,IAAK,IAAIoY,KAAKF,EAAMlY,KAAM,CACtB,GAAIkY,EAAMlY,KAAKoY,KAAOD,EAAOnY,KAAKoY,GAC9B,MACJpY,EAAK1H,KAAK4f,EAAMlY,KAAKoY,IAEzB,OAAOpY,EAaJ,SAASwS,EAAKV,EAAKuG,GACtB,IAAIC,EAAU,GACd,IAAK,IAAIC,KAASzG,GACoB,IAA9BuG,EAAUtS,QAAQwS,KAClBD,EAAQC,GAASzG,EAAIyG,IAG7B,OAAOD,EAcJ,SAASE,EAAK1G,EAAKuG,GACtB,OAAOjN,OAAOC,KAAKyG,GACd3Q,QAAO,QAAIgW,EAAQkB,KACnB5R,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,GAAOoU,EAAIpU,GAAOqU,IAAS,IASvE,SAAS5Q,EAAOsX,EAAYpgB,GAC/B,IAAIkf,GAAM,QAAQkB,GAAata,EAASoZ,EAAM,GAAK,GAC/CmB,EAASnB,EAAM,SAAUpQ,GAAK,OAAOhJ,EAAO7F,KAAK6O,IAAQ,SAAUA,EAAGzJ,GAAO,OAAQS,EAAOT,GAAOyJ,GAKvG,OAJAvO,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B7c,EAAS2f,EAAM9C,IACfwD,EAAOV,EAAM9C,MAEd/W,EAGJ,SAASwa,EAAKF,EAAYpgB,GAC7B,IAAI8F,EAOJ,OANAvF,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B/W,GAEA9F,EAAS2f,EAAM9C,KACf/W,EAAS6Z,MAEV7Z,EAGJ,IAAIya,EAASpS,EAEb,SAASA,EAAIiS,EAAYpgB,EAAU6F,GAGtC,OAFAA,EAASA,KAAW,QAAQua,GAAc,GAAK,IAC/C7f,EAAQ6f,GAAY,SAAUT,EAAM9C,GAAK,OAAQhX,EAAOgX,GAAK7c,EAAS2f,EAAM9C,MACrEhX,EAYJ,IAAI2a,EAAS,SAAU/G,GAAO,OAAO1G,OAAOC,KAAKyG,GAAKtL,KAAI,SAAU9I,GAAO,OAAOoU,EAAIpU,OAclFob,EAAW,SAAUf,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAclDC,EAAW,SAAUjB,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAUlDrS,EAAU,SAAUqR,EAAMgB,GAAQ,OAAOhB,EAAK9d,OAAO8e,IAWrDE,EAAW,SAAUlB,EAAMgB,GAClC,OAAO,QAAQA,GAAQhB,EAAK9d,OAAO8e,EAAKtS,OAAOwS,EAAU,KAAOC,EAAMnB,EAAMgB,IAMzE,SAASG,EAAM3B,EAAKzF,GAEvB,OADAyF,EAAIjf,KAAKwZ,GACFyF,EAGJ,IAAI4B,EAAQ,SAAUpH,EAAKqH,GAAS,OAAQjC,EAAQpF,EAAKqH,GAASrH,EAAMmH,EAAMnH,EAAKqH,IAW/EC,EAAS,SAAU9B,GAAO,OAAOA,EAAI9Q,OAAOC,EAAS,KAyBrD4S,EAkBJ,SAAkBC,EAAgBC,GAErC,YADe,IAAXA,IAAqBA,EAAS,kBAC3B,SAAU1H,GACb,IAAI3T,EAASob,EAAezH,GAC5B,IAAK3T,EACD,MAAM,IAAImM,OAAM,QAAWkP,GAAUA,EAAO1H,GAAO0H,GAEvD,OAAOrb,IA2BR,SAASqY,IAEZ,IADA,IAAIhd,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,GAAoB,IAAhBne,EAAKyN,OACL,MAAO,GAwBX,IAvBA,IAAIwS,EAAcjgB,EAAKiN,QAAO,SAAUiT,EAAKnC,GAAO,OAAOoC,KAAKD,IAAInC,EAAItQ,OAAQyS,KAAS,kBACrFvb,EAAS,GACTyb,EAAU,SAAU1E,GAGpB,OAAQ1b,EAAKyN,QACT,KAAK,EACD9I,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,KACrB,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACjC,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KAC7C,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACzD,MACJ,QACI/W,EAAO7F,KAAKkB,EAAKgN,KAAI,SAAU4Q,GAAS,OAAOA,EAAMlC,SAIxDA,EAAI,EAAGA,EAAIuE,EAAavE,IAC7B0E,EAAQ1E,GAEZ,OAAO/W,EAsBJ,SAASyS,EAAWmH,EAAM8B,GAC7B,IAAInc,EAAKrB,EAGT,IAFI,QAAQwd,KACRnc,EAAMmc,EAAY,GAAIxd,EAAQwd,EAAY,MACzC,QAASnc,GACV,MAAM,IAAI4M,MAAM,oCAEpB,OADAyN,EAAKra,GAAOrB,EACL0b,EAGJ,SAAS1S,EAAKkS,GACjB,OAAQA,EAAItQ,QAAUsQ,EAAIA,EAAItQ,OAAS,SAAO+E,EAK3C,SAAS8N,EAAKC,EAAKC,GAKtB,OAJIA,GACA5O,OAAOC,KAAK2O,GAAMphB,SAAQ,SAAU8E,GAAO,cAAcsc,EAAKtc,MAC7Dsc,IACDA,EAAO,IACJrhB,EAAOqhB,EAAMD,GA6DjB,IAAIE,EAA2B,SAAU3e,GAAW,OAAOA,EAAQ4e,OAAM,SAAUC,GAAK,OAAO,MAAS7e,GACpG8e,EAAkB,SAAUld,GAAS,OAAO+c,EAAyB,cAAmB/c,qHCxhBnG,IAGWmd,EAAW,SAAU/K,EAASgL,GACrC,OAAOA,EAAQ7T,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,IAJtC6c,EAIoDjL,EAAU,IAAM5R,EAAM,KAJzD,WACpC,MAAM,IAAI4M,MAAM,yBAA2BiQ,EAAS,kEAGiDxI,EAJ5F,IAAUwI,IAI2F,KAE9G3R,EAAW,CACXhK,QAAIoN,EACJ5D,eAAW4D,mGCyCf,IAAIwO,EAAsB,WACtB,SAASA,EAAKC,GACV5iB,KAAK4iB,KAAOA,EACZ5iB,KAAK6iB,KAAOD,EAAKE,MAAM,KACvB,IAAIC,EAAe/iB,KAAK4iB,KACnBE,MAAM,KACNnU,KAAI,SAAUqU,GACf,MAAY,OAARA,EACO,qBACC,MAARA,EACO,WACJ,MAAQA,KAEd/P,KAAK,IACVjT,KAAKijB,OAAS,IAAI9Z,OAAO,IAAM4Z,EAAe,KAalD,OAVAJ,EAAKzJ,GAAK,SAAU0J,GAChB,QAAS,SAASnZ,KAAKmZ,IAG3BD,EAAKxR,WAAa,SAAUyR,GACxB,OAAOD,EAAKzJ,GAAG0J,GAAQ,IAAID,EAAKC,GAAQ,MAE5CD,EAAK9gB,UAAUqhB,QAAU,SAAU1d,GAC/B,OAAOxF,KAAKijB,OAAOE,KAAK,IAAM3d,IAE3Bmd,EA3Bc,+MC1CzB,IAAIxF,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GA2CJ,SAAS6F,EAAMziB,GAClB,OAAO,SAAS0iB,IACZ,GAAIrhB,UAAUoN,QAAUzO,EAAGyO,OACvB,OAAOzO,EAAGwB,MAAMnC,KAAMgC,WAE1B,IAAIL,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtC,OAAOqhB,EAAQ/f,KAAKnB,MAAMkhB,EAASlG,EAAe,CAACnd,MAAO2B,KAS3D,SAAS2hB,IACZ,IAAI3hB,EAAOK,UACPuhB,EAAQ5hB,EAAKyN,OAAS,EAC1B,OAAO,WAEH,IADA,IAAIiO,EAAIkG,EAAOjd,EAAS3E,EAAK4hB,GAAOphB,MAAMnC,KAAMgC,WACzCqb,KACH/W,EAAS3E,EAAK0b,GAAGtb,KAAK/B,KAAMsG,GAChC,OAAOA,GASR,SAASkd,IAEZ,IADA,IAAIC,EAAQ,GACH3D,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpC2D,EAAM3D,GAAM9d,UAAU8d,GAE1B,OAAOwD,EAAQnhB,MAAM,KAAM,GAAGL,MAAMC,KAAKC,WAAWge,WAQjD,IAAI0D,EAAO,SAAUle,GAAQ,OAAO,SAAUyU,GAAO,OAAOA,GAAOA,EAAIzU,KAQnEme,EAASP,GAAM,SAAU5d,EAAMoe,EAAM3J,GAAO,OAAOA,GAAOA,EAAIzU,KAAUoe,KASxE3c,EAAQ,SAAUzB,GAAQ,OAAOge,EAAKrhB,MAAM,KAAMqD,EAAKsd,MAAM,KAAKnU,IAAI+U,KAKtEG,EAAM,SAAUljB,GAAM,OAAO,WAEpC,IADA,IAAIgB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAQnf,EAAGwB,MAAM,KAAMR,KAMpB,SAASmiB,EAAIC,EAAKC,GACrB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IAOjD,SAASsiB,EAAGF,EAAKC,GACpB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IASjD,IAAI8Z,EAAM,SAAUsI,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4U,EAAM,SAAUH,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4J,EAAK,SAAUiL,GAAQ,OAAO,SAAUlK,GAC/C,OAAe,MAAPA,GAAeA,EAAImK,cAAgBD,GAASlK,aAAekK,IAK5DngB,EAAM,SAAUqgB,GAAK,OAAO,WAAc,OAAOA,IA4CrD,SAASC,EAAQC,GACpB,OAAO,SAAUjV,GACb,IAAK,IAAI+N,EAAI,EAAGA,EAAIkH,EAAOnV,OAAQiO,IAC/B,GAAIkH,EAAOlH,GAAG,GAAG/N,GACb,OAAOiV,EAAOlH,GAAG,GAAG/N,uRCjNhCkV,EAAQjR,OAAO1R,UAAUiT,SACzB2P,EAAM,SAAU5F,GAAK,OAAO,SAAUvP,GAAK,cAAcA,IAAMuP,IACxD6F,EAAcD,EAAI,aAClB7X,GAAY,QAAI8X,GAChBC,EAAS,SAAUC,GAAK,OAAa,OAANA,GAC/BC,GAAoB,IAAAZ,IAAGU,EAAQD,GAC/BtX,EAAaqX,EAAI,YACjBK,EAAWL,EAAI,UACf3b,EAAW2b,EAAI,UACftR,EAAW,SAAU7D,GAAK,OAAa,OAANA,GAA2B,iBAANA,GACtD0C,EAAUpQ,MAAMoQ,QAChB+S,EAAS,SAAWzV,GAAK,MAAyB,kBAAlBkV,EAAMziB,KAAKuN,IAC3C0V,EAAW,SAAW1V,GAAK,MAAyB,oBAAlBkV,EAAMziB,KAAKuN,IAOjD,SAASsM,EAAa5X,GACzB,GAAIgO,EAAQhO,IAAQA,EAAIoL,OAAQ,CAC5B,IAAI6V,EAAOjhB,EAAIlC,MAAM,GAAI,GAAI0L,EAAOxJ,EAAIlC,OAAO,GAC/C,QAASmjB,EAAK3b,QAAO,QAAIR,IAAWsG,QAAU5B,EAAKlE,QAAO,QAAI8D,IAAagC,QAE/E,OAAOhC,EAAWpJ,GAOf,IAAIkhB,GAAY,QAAI/R,GAAU,SAAK,QAAK,QAAS/F,uKCvCpD+X,EAAuB,WACvB,SAASA,EAAMC,EAAQC,QACJ,IAAXD,IAAqBA,EAAS,SACnB,IAAXC,IAAqBA,EAAS,MAClCrlB,KAAKolB,OAASA,EACdplB,KAAKqlB,OAASA,EACdrlB,KAAKslB,gBAAkB,GACvBtlB,KAAKulB,SAAU,QAAOvlB,KAAKslB,iBAqC/B,OAnCAH,EAAMtjB,UAAU2jB,QAAU,SAAUrF,GAChC,IAAIsF,EAAQzlB,KAAKolB,OAIjB,OAHAK,EAAMhlB,KAAK0f,GACPngB,KAAKqlB,QAAUI,EAAMrW,OAASpP,KAAKqlB,QACnCrlB,KAAK0lB,QACFvF,GAEXgF,EAAMtjB,UAAU6jB,MAAQ,WACpB,IAAIvF,EAAOngB,KAAKolB,OAAOnjB,QAEvB,OADAjC,KAAKslB,gBAAgBvkB,SAAQ,SAAUJ,GAAM,OAAOA,EAAGwf,MAChDA,GAEXgF,EAAMtjB,UAAU8jB,QAAU,WACtB,GAAI3lB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO5F,OAAO,EAAG,GAAG,IAExC2F,EAAMtjB,UAAUgkB,MAAQ,WACpB,IAAIC,EAAU9lB,KAAKolB,OAEnB,OADAplB,KAAKolB,OAAS,GACPU,GAEXX,EAAMtjB,UAAU+jB,KAAO,WACnB,OAAO5lB,KAAKolB,OAAOhW,QAEvB+V,EAAMtjB,UAAUgL,OAAS,SAAUsT,GAC/B,IAAIlR,EAAMjP,KAAKolB,OAAOlX,QAAQiS,GAC9B,OAAOlR,GAAO,GAAKjP,KAAKolB,OAAO5F,OAAOvQ,EAAK,GAAG,IAElDkW,EAAMtjB,UAAUkkB,SAAW,WACvB,OAAO/lB,KAAKolB,OAAOplB,KAAKolB,OAAOhW,OAAS,IAE5C+V,EAAMtjB,UAAUmkB,SAAW,WACvB,GAAIhmB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO,IAEpBD,EA5Ce,4KCKtBc,EAAkB,CAAEC,IAAK,KAAM7gB,MAAO,KAAM8gB,MAAO,MA4B5CC,EAXyB,oBAAbC,UAA4BA,SAASC,cAA0C,IAA1BD,SAASC,aAEtEC,QAAUA,OAAOC,QAlBhC,SAAoBA,GAChB,IAAIC,EAAQ,SAAU9lB,GAAM,OAAO+lB,SAAS7kB,UAAUyB,KAAKvB,KAAKpB,EAAI6lB,IACpE,MAAO,CACHN,IAAKO,EAAMD,EAAQN,KACnB7gB,MAAOohB,EAAMD,EAAQN,KACrBC,MAAOM,EAAMD,EAAQN,MAaaS,CAAWJ,OAAOC,SAAWP,EAEzDO,QAAQL,OAAUK,QAAQnhB,MAIzBmhB,QAhBf,SAAyBA,GACrB,IAAIN,EAAMM,EAAQN,IAAI5iB,KAAKkjB,GAG3B,MAAO,CAAEN,IAAKA,EAAK7gB,MAFPmhB,EAAQnhB,MAAQmhB,EAAQnhB,MAAM/B,KAAKkjB,GAAWN,EAEzBC,MADrBK,EAAQL,MAAQK,EAAQL,MAAM7iB,KAAKkjB,GAAWN,GAU/CU,CAAgBJ,ieCRxB,SAASK,EAAUC,EAAK9V,GAC3B,OAAIA,EAAI5B,QAAU0X,EACP9V,EACJA,EAAI+V,OAAO,EAAGD,EAAM,GAAK,MAW7B,SAASE,EAAU5X,EAAQ4B,GAC9B,KAAOA,EAAI5B,OAASA,GAChB4B,GAAO,IACX,OAAOA,EAEJ,SAAS/H,EAAYqJ,GACxB,OAAOA,EACFyC,QAAQ,YAAY,SAAUkS,GAAM,OAAOA,EAAGC,iBAC9CnS,QAAQ,YAAY,SAAUkS,GAAM,MAAO,IAAMA,EAAGC,iBAEtD,SAASC,EAAiBxmB,GAC7B,IAAIymB,EAAQC,EAAW1mB,GACnB2mB,EAAqBF,EAAMpL,MAAM,8BACjCwI,EAAQ8C,EAAqBA,EAAmB,GAAKF,EACrDjI,EAASxe,EAAS,MAAK,GAC3B,OAAIwe,GAAUqF,EAAMxI,MAAM,eACf,YAAcmD,EAASqF,EAAMuC,OAAO,GAExCvC,EAEJ,SAAS6C,EAAW1mB,GACvB,IAAI4mB,GAAM,QAAQ5mB,GAAMA,EAAGmB,OAAO,GAAG,GAAKnB,EAC1C,OAAQ4mB,GAAOA,EAAIzS,YAAe,YAEtC,IAAI0S,EAAc,uBAIdC,GAAmB,QAAQ,CAC3B,CAAC,MAAa,QAAI,cAClB,CAAC,MAAQ,QAAI,SACb,CAAC,MAAW,QAAI,cAChB,CAACD,EAAa,SAAUlY,GAAK,OAAOA,EAAEoY,qBAAqB5S,aAC3D,CARc,SAAUmF,GACxB,OAAO,QAASA,MAAS,QAAQA,IAAQA,EAAImK,cAAgB7Q,SAAU,QAAW0G,EAAInF,WAOxE,SAAUxF,GAAK,OAAOA,EAAEwF,aACtC,CAAC,KAAcqS,GACf,EAAC,SAAI,GAAO,QAET,SAASjJ,EAAU0G,GACtB,IAAI+C,EAAO,GACX,SAASC,EAAOpjB,GACZ,IAAI,QAASA,GAAQ,CACjB,IAA6B,IAAzBmjB,EAAKzZ,QAAQ1J,GACb,MAAO,iBACXmjB,EAAKlnB,KAAK+D,GAEd,OAAOijB,EAAiBjjB,GAE5B,OAAI,QAAYogB,GAILgD,EAAOhD,GAEX5G,KAAKE,UAAU0G,GAAG,SAAU/e,EAAKrB,GAAS,OAAOojB,EAAOpjB,MAAWuQ,QAAQ,OAAQ,KAGvF,IAAI8S,EAAoB,SAAUC,GAAQ,OAAO,SAAU9W,GAC9D,IAAKA,EACD,MAAO,CAAC,GAAI,IAChB,IAAI/B,EAAM+B,EAAI9C,QAAQ4Z,GACtB,OAAa,IAAT7Y,EACO,CAAC+B,EAAK,IACV,CAACA,EAAI+V,OAAO,EAAG9X,GAAM+B,EAAI+V,OAAO9X,EAAM,MAGtC8Y,EAAuB,SAAU/W,GAAO,OAAOA,EAAI+D,QAAQ,WAAY,KACvEiT,EAAYH,EAAkB,KAC9BI,EAAaJ,EAAkB,KAC/BK,EAAaL,EAAkB,KAC/BM,EAAc,SAAUnX,GAAO,OAAQA,EAAMA,EAAI+D,QAAQ,KAAM,IAAM,IAWzE,SAASqT,EAAaC,GACzB,IAAIC,EAAK,IAAInf,OAAO,IAAMkf,EAAQ,IAAK,KACvC,OAAO,SAAUrX,GAAO,OAAOA,EAAI8R,MAAMwF,GAAIhf,OAAO,OAcjD,SAASif,EAAerO,EAAK5K,GAChC,OAAI,SAAS,QAAK4K,MAAS,QAAS5K,GACzB4K,EAAIpY,MAAM,GAAI,GAAGM,QAAO,QAAK8X,GAAO5K,IACxC,QAAM4K,EAAK5K,0GCpElBkZ,iQA3BJ,SAASC,EAAaC,GAClB,IAAKA,EACD,MAAO,oBACX,IAAIjb,EAAQib,EAAOC,gBAAkBD,EAAOC,gBAAgBnjB,MAAQ,SAAW,SAC/E,MAAO,YAAckjB,EAAOrd,GAAK,IAAMqd,EAAOtd,MAAQ,IAAMsd,EAAOpd,IAAM,KAAOod,EAAOljB,KAAO,IAAMiI,EAAQ,KAOhH,SAASmb,EAAchW,GACnB,OAAO,QAASA,GAAS4V,EAAS5V,GAAS4V,EAASA,EAAS5V,KAgBjE,SAAW4V,GACPA,EAASA,EAAkB,QAAI,GAAK,UACpCA,EAASA,EAAqB,WAAI,GAAK,aACvCA,EAASA,EAAe,KAAI,GAAK,OACjCA,EAASA,EAAiB,OAAI,GAAK,SACnCA,EAASA,EAAqB,WAAI,GAAK,aAL3C,CAMGA,IAAaA,EAAW,KAE3B,IAAIK,GAAO,QAAM,OACbC,GAAO,QAAM,cACbC,EAAW,SAAUnZ,GAAS,MAAO,eAAiBiZ,EAAKjZ,GAAS,IAAMkZ,EAAKlZ,IA6J/EvH,EAAQ,IAzJe,WAEvB,SAAS2gB,IAELhpB,KAAKipB,SAAW,GAChBjpB,KAAKkpB,mBAAqB,EAwI9B,OArIAF,EAAMnnB,UAAUsnB,KAAO,SAAU7T,EAAS8T,GACtC,IAAIjZ,EAAQnQ,KACPopB,EAAWha,SACZga,EAAa7V,OAAOC,KAAKgV,GACpB7Z,KAAI,SAAU6O,GAAK,OAAO6L,SAAS7L,EAAG,OACtClU,QAAO,SAAUkU,GAAK,OAAQ8L,MAAM9L,MACpC7O,KAAI,SAAU9I,GAAO,OAAO2iB,EAAS3iB,OAE9CujB,EAAWza,IAAIia,GAAe7nB,SAAQ,SAAUwoB,GAAY,OAAQpZ,EAAM8Y,SAASM,GAAYjU,MAEnG0T,EAAMnnB,UAAU2nB,OAAS,WAErB,IADA,IAAIJ,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAMC,IAEpBJ,EAAMnnB,UAAU4nB,QAAU,WAEtB,IADA,IAAIL,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAOC,IAWrBJ,EAAMnnB,UAAUyT,QAAU,SAAUiU,GAChC,QAASvpB,KAAKipB,SAASL,EAAcW,KAGzCP,EAAMnnB,UAAU6nB,qBAAuB,SAAU9Z,GACxC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAU+nB,uBAAyB,SAAUha,GAC1C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAUgoB,oBAAsB,SAAUC,EAAMla,EAAOzP,GACzD,GAAKH,KAAKsV,QAAQkT,EAASuB,MAA3B,CAEA,IAAIxpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAiBskB,EAAKE,eAAexpB,UAC1N,QAAgBuoB,EAASnZ,GAAS,eAAiBrP,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,MAG9GwjB,EAAMnnB,UAAUooB,gBAAkB,SAAUC,EAAYta,EAAOua,GACtDnqB,KAAKsV,QAAQkT,EAASuB,OAE3B,QAAgBhB,EAASnZ,GAAS,0BAA2B,QAAU,KAAK,QAAUsa,MAG1FlB,EAAMnnB,UAAUuoB,iBAAmB,SAAUjiB,EAAM8H,EAAML,GAChD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,uBAAyBzH,EAAO,KAAO8H,EAAO,MAGpF+Y,EAAMnnB,UAAUyoB,wBAA0B,SAAUtS,EAAYpI,GACvD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,gCAAkCoI,EAAa,SAAU,QAAU,KAAK,QAAUA,EAAWrQ,SAGnIqhB,EAAMnnB,UAAU0oB,WAAa,SAAUC,EAAQ5a,GACtC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,aAAe4a,IAG3FxB,EAAMnnB,UAAU4oB,aAAe,SAAUC,EAAY9a,GAC5C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,kBAAoB8a,EAAWllB,OAG3GwjB,EAAMnnB,UAAU8oB,iBAAmB,SAAUpqB,EAAOqqB,EAAUvL,QAC5C,IAAVA,IAAoBA,EAAQ,IAC3Brf,KAAKsV,QAAQkT,EAASqC,SAE3B,QAAgB,aAAc,QAAU,GAAItqB,GAAS,IAAMkoB,EAAamC,GAAYvL,IAGxF2J,EAAMnnB,UAAUipB,yBAA2B,SAAUF,EAAU/Z,GACtD7Q,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,WAAYC,EAAU,kCAAoC/Z,EAAU,MAG9FmY,EAAMnnB,UAAUkpB,gBAAkB,SAAUH,EAAUpjB,GAC7CxH,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,OAAQC,EAAU,WAAY,QAAU,IAAKpjB,KAGvEwhB,EAAMnnB,UAAUmpB,cAAgB,SAAUC,GACtC,GAAKjrB,KAAKsV,QAAQkT,EAAS0C,YAA3B,CAEA,IAAIC,EAAY,uBAEZC,EAAUH,EACTtc,KAAI,SAAU0c,GACf,IAAIC,EACA7kB,EAAS4kB,EAAG5kB,OAAQiE,EAAa2gB,EAAG3gB,WACpC6gB,EAAM9kB,GAAUA,EAAO6E,IACvBzD,EAAM6C,GAAcA,EAAW3C,SAASgC,SAASvE,KAAO,MAAQkF,EAAW3C,SAAS6S,MAAQ,IAChG,OAAO0Q,EAAK,IAAOH,GAAaI,EAAKD,EAPzB,iCAOyCzjB,EAAKyjB,KAEzDE,MAAK,SAAU/N,EAAGmB,GAAK,OAAQnB,EAAE0N,IAAc,IAAIM,cAAc7M,EAAEuM,IAAc,OACtF,UAAkBC,KAGtBpC,EAAMnnB,UAAU6pB,sBAAwB,SAAUnrB,EAAOmK,GAChD1K,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAzK1B,SAAUmK,GAC7B,IAAIoP,EAAOpP,EAAW3C,SAClB0F,EAAQqM,EAAK/P,SAASvE,MAAQ,SAClC,MAAO,SAAWkF,EAAWyQ,IAAM,UAAY1N,EAAQ,8BAAgCqM,EAAKiB,YAAc,IAAMjB,EAAKmB,qBAAuB,IAsKzF0Q,CAAiBjhB,KAGpEse,EAAMnnB,UAAU+pB,4BAA8B,SAAUrrB,EAAOqqB,GACtD5qB,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAAMkoB,EAAamC,KAEzD5B,EA7Ie,oOCxEtB6C,EAAiC,WACjC,SAASA,IAML7rB,KAAKoO,OAAS,IAAI,IAElBpO,KAAK8rB,yBAA2B,EAEhC9rB,KAAK+rB,kBAAoB,IAAI,IAAM,GAAI,GAEvC/rB,KAAKgsB,sBAAwB,IAAI,IAAM,GAAI,GAO/C,OALAH,EAAgBhqB,UAAUqT,QAAU,WAChClV,KAAK+rB,kBAAkBlG,QACvB7lB,KAAKgsB,sBAAsBnG,QAC3B7lB,KAAKisB,WAAa,MAEfJ,EApByB,sLCiBhCK,EAAe,SAAUD,GACzB,IAAIvX,EAASuX,EAAWvX,OAuBpB6G,EAAW0Q,EACVE,WACA7iB,QAAO,SAAUmE,GAAS,QAASA,EAAMuG,UAAUoY,YACnDzd,KAAI,SAAUlB,GAAS,OAAO4e,EAAcJ,EAAYxe,MAC7D,OAAO,WAAgB8N,GAAUxQ,MA1BjC,WACI,GAAyD,QAArDkhB,EAAWK,qBAAqBnsB,UAAU4e,OAAkB,CAG5D,IAAIwN,EAAON,EAAWO,cACtB,OAAO9X,EAAOmC,aAAaxQ,OAAOkmB,EAAKE,aAAcF,EAAKne,SAAUme,EAAKpsB,WAI7E,IAAIusB,EAAOhY,EAAOuC,WACd3Q,EAASomB,EAAK1Q,MAAM0Q,EAAKC,SACzBpQ,EAAOjW,GAAUA,EAAOiW,KAG5B,GAAIA,GAAsB,UAAdA,EAAKrN,KAAkB,CAC/B,IAAIzB,EAAQ8O,EAAK9O,MACbW,EAAS9H,EAAO0V,MACpB,OAAOtH,EAAOmC,aAAaxQ,OAAOoH,EAAOW,EAAQ6d,EAAW9rB,WAGhEuU,EAAOuC,WAAW2V,WAQfC,EAAuB,SAAUC,GACxC,OAAOA,EAAkB/c,SAAS,CAAEoc,SAAU,SAAU1e,GAAS,QAASA,EAAM2e,WAAeF,IAS5F,SAASG,EAAcJ,EAAYxe,GACtC,IAAIsf,EAAatf,EAAMuG,UAAUoY,SAE7B3oB,EAAUspB,EAAqB,SAwBnC,OAvBKtpB,IAWDA,EAAUspB,EAAqB,SAAI,YACzBA,EAAWd,EAAYxe,IAC5B1C,MAIT,SAA6BzE,GAIzB,OAHIA,GAAU1E,MAAMoQ,QAAQ1L,EAAO0mB,SAC/B1mB,EAAO0mB,OAAOjsB,SAAQ,SAAUksB,GAAU,OAAOhB,EAAWvX,OAAOkC,cAAc8C,SAASuT,MAEvF3mB,KAPFyE,MAbS,SAAUzE,GAIpB,cAHOmH,EAAM2e,gBACN3e,EAAMuG,UAAUoY,gBAChBW,EAAqB,SACrBzmB,KAEC,SAAU4mB,GAElB,cADOH,EAAqB,SACrB,cAAmBG,OAc3BzpB,oPCnFP0pB,kUAJAC,EAAS7Z,OAAO1R,UAAUa,gBAK9B,SAAWyqB,GACPA,EAAQA,EAAc,KAAI,GAAK,OAC/BA,EAAQA,EAAgB,OAAI,GAAK,SACjCA,EAAQA,EAAgB,OAAI,GAAK,SAHrC,CAIGA,IAAYA,EAAU,KA2DzB,IAAIE,EAAuB,WACvB,SAASA,EAAMhiB,EAAI6D,EAAM2G,EAAUyX,EAAW7f,GAC1C,IAAIlC,EA3DZ,SAA6BgiB,EAAW1X,EAAUpI,GAC9C,IAAI+f,GAA6C,IAAzB/f,EAAMggB,gBAA4B5X,IAAasX,EAAQO,aAAWvZ,EACtFwZ,GAAU,QAAK,CAAClgB,EAAMkgB,QAASH,GAAmB,MAClDI,GAAgB,QAAUD,GAAW,CAAEA,QAASA,GAAY,GAC5DE,EAGR,SAAyBhmB,GAGrB,SAASimB,IACL,OAAOjmB,EAAIrD,MAHfqD,EAlBc,SAAUA,GACxB,OAAiG,IAA1F,CAAC,QAAS,OAAQ,SAAU,QAAS,WAAWyB,OAAO8jB,EAAO9pB,KAAKuE,GAAO,KAAKuH,OAiBhF2e,CAAYlmB,GAAO,CAAErD,MAAOqD,GAAQA,EAC1CimB,EAAmC,aAAI,EAIvC,IAAIE,GAAO,QAAanmB,EAAIrD,OAASqD,EAAIrD,MAAQspB,EACjD,OAAO,QAAOjmB,EAAK,CAAEmmB,KAAMA,IAVTC,CAAgBxgB,GAASA,EAAMW,QAAUX,EAAMW,OAAOmf,IACxE,OAAO,QAAOK,EAAeC,GAsDZK,CAAoB7iB,EAAIwK,EAAUpI,GAC/CyB,EA5CR,SAAiBrH,EAAKsmB,EAAStY,EAAUxK,EAAI+iB,GACzC,GAAIvmB,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,KAC/B,MAAM,IAAIiN,MAAM,UAAYpH,EAAK,kCACrC,GAAIxD,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,MAAqB4oB,EAAWlf,KAAKrH,EAAIqH,MACxE,OAAOkf,EAAWlf,KAAKrH,EAAIqH,MAC/B,GAAIif,EACA,OAAOA,EACX,IAAKtmB,EAAIqH,KAAM,CACX,IAAIA,EAAO2G,IAAasX,EAAQkB,OAC1B,MACAxY,IAAasX,EAAQmB,KACjB,OACAzY,IAAasX,EAAQO,OACjB,QACA,SACd,OAAOU,EAAWlf,KAAKA,GAE3B,OAAOrH,EAAIqH,gBAAgB,IAAYrH,EAAIqH,KAAOkf,EAAWlf,KAAKrH,EAAIqH,MA2B3Dqf,CAAQhjB,EAAQ2D,EAAM2G,EAAUxK,EAAIiiB,EAAUc,YACrD,IAUQI,EACAC,EAXJC,GAUIF,EAAgB,CAAEjP,MAAO1J,IAAasX,EAAQO,QAAS,QACvDe,EAAyBpjB,EAAG2Q,MAAM,SAAW,CAAEuD,OAAO,GAAS,IAC5D,QAAOiP,EAAeC,EAAwBljB,GAAQgU,OAXjErQ,EAAOwf,EAAYxf,EAAKyf,SAASD,EAAW7Y,IAAasX,EAAQO,QAAUxe,EAC3E,IAAI0f,OAA8Bza,IAAjB5I,EAAO/G,OAAuBqR,IAAasX,EAAQO,OAChEC,GAAU,QAAUpiB,EAAOoiB,WAAapiB,EAAOoiB,UAAYze,EAAKye,QAChEkB,GAAM,QAAUtjB,EAAOsjB,OAAStjB,EAAOsjB,MAAQ3f,EAAK2f,IACpDC,EA9BZ,SAAyBvjB,EAAQqjB,EAAYG,GACzC,IAAID,EAASvjB,EAAOujB,OACpB,IAAKF,IAAyB,IAAXE,EACf,OAAO,EACX,KAAK,QAAUA,IAAqB,MAAVA,EACtB,OAAOC,EACX,IAAe,IAAXD,IAAmB,QAASA,GAC5B,OAAOA,EACX,MAAM,IAAIrc,MAAM,2BAA6Bqc,EAAS,uDAsBrCE,CAAgBzjB,EAAQqjB,EAAYtB,EAAU2B,uBACvDla,EArBZ,SAAoBxJ,EAAQmjB,EAAWE,EAAYE,GAC/C,IAAIC,EAAgB,CAChB,CAAEG,KAAM,GAAIC,GAAIP,GAAcF,OAAYva,EAAY,IACtD,CAAE+a,KAAM,KAAMC,GAAIP,GAAcF,OAAYva,EAAY,KAExDY,GAAU,QAAQxJ,EAAOwJ,SAAWxJ,EAAOwJ,QAAU,IACrD,QAAS+Z,IACT/Z,EAAQtU,KAAK,CAAEyuB,KAAMJ,EAAQK,QAAIhb,IACrC,IAAIib,GAAiB,QAAIra,GAAS,QAAK,SACvC,OAAO,QAAOga,GAAe,SAAU5O,GAAQ,OAA8C,IAAvCiP,EAAelhB,QAAQiS,EAAK+O,SAAiB9sB,OAAO2S,GAYxFsa,CAAW9jB,EAAQmjB,EAAWE,EAAYE,GACpD1P,GAAU,QAAU7T,EAAO6T,WAAa7T,EAAO6T,UAAYlQ,EAAKkQ,SAOpE,QAAOpf,KAAM,CAAEqL,GAAIA,EAAI6D,KAAMA,EAAM2G,SAAUA,EAAU+Y,WAAYA,EAAYjB,QAASA,EAASkB,IAAKA,EAAKC,OAAQA,EAAQ/Z,QAASA,EAASqK,QAASA,EAASG,MAAOmP,EAAWnjB,OAAQA,IAoG7L,OAlGA8hB,EAAMrM,OAAS,SAAU5S,EAAQ4S,QACd,IAAXA,IAAqBA,EAAS,IAElC,IADA,IAAI1F,EAAc,GACTwE,EAAK,EAAGwP,EAAWlhB,EAAQ0R,EAAKwP,EAASlgB,OAAQ0Q,IAAM,CAC5D,IAAI9Q,EAAQsgB,EAASxP,GACrBxE,EAAYtM,EAAM3D,IAAM2D,EAAMxK,MAAMwc,EAAOhS,EAAM3D,KAErD,OAAOiQ,GAaX+R,EAAMkC,QAAU,SAAUnhB,EAAQohB,EAASC,GAGvC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IAC7BrhB,EAAO9E,QAAO,SAAU0F,GAAS,OAAQA,EAAME,KAAKC,OAAOqgB,EAAQxgB,EAAM3D,IAAKokB,EAAQzgB,EAAM3D,SAWvGgiB,EAAMle,OAAS,SAAUf,EAAQohB,EAASC,GAGtC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IACsB,IAAnDpC,EAAMkC,QAAQnhB,EAAQohB,EAASC,GAASrgB,QAGnDie,EAAMqC,UAAY,SAAUthB,EAAQ4S,GAEhC,YADe,IAAXA,IAAqBA,EAAS,IAC3B5S,EAAOO,KAAI,SAAUK,GAAS,OAAOA,EAAM0gB,UAAU1O,EAAOhS,EAAM3D,QAASuD,OAAO,MAAU,IAEvGye,EAAMxrB,UAAU8tB,eAAiB,SAAUnrB,GACvC,OAAOxE,KAAK4uB,YAAc5uB,KAAKkP,KAAKC,OAAOnP,KAAKwE,QAASA,IAM7D6oB,EAAMxrB,UAAU2C,MAAQ,SAAUA,GAC9B,IAAI2L,EAAQnQ,KA0BZ,OADAwE,EAR2B,SAAUR,GACjC,IAAK,IAAI8b,EAAK,EAAGuL,EAAKlb,EAAM4E,QAAS+K,EAAKuL,EAAGjc,OAAQ0Q,IAAM,CACvD,IAAIrM,EAAQ4X,EAAGvL,GACf,GAAIrM,EAAMyb,OAASlrB,EACf,OAAOyP,EAAM0b,GAErB,OAAOnrB,EAEH4rB,CAAqBprB,IACtB,QAAYA,GAtBG,WAClB,GAAI2L,EAAM0f,mBACN,OAAO1f,EAAM0f,mBAAmBC,aACpC,IAAK,cACD,MAAM,IAAIrd,MAAM,+DACpB,IAAIqd,EAAe,qBAA0B3f,EAAM5E,OAAOyiB,MAC1D,GAAI8B,MAAAA,IAAwD3f,EAAMjB,KAAKgK,GAAG4W,GACtE,MAAM,IAAIrd,MAAM,kBAAoBqd,EAAe,oBAAsB3f,EAAM9E,GAAK,sCAAwC8E,EAAMjB,KAAK1J,KAAO,KAIlJ,OAHI2K,EAAM5E,OAAOyiB,KAAkB,cAC/B7d,EAAM0f,mBAAqB,CAAEC,aAAcA,IAExCA,EAWiBC,GAAoB/vB,KAAKkP,KAAK8gB,WAAWxrB,IAEzE6oB,EAAMxrB,UAAUouB,SAAW,WACvB,OAAOjwB,KAAK6V,WAAasX,EAAQO,QAErCL,EAAMxrB,UAAU6tB,UAAY,SAAUlrB,GAElC,KAAK,QAAYA,IAAoB,OAAVA,IAAmBxE,KAAK4uB,WAC/C,OAAO,EAEX,IAAI/T,EAAa7a,KAAKkP,KAAK8gB,WAAWxrB,GACtC,IAAKxE,KAAKkP,KAAKgK,GAAG2B,GACd,OAAO,EAEX,IAAIqV,EAAUlwB,KAAKkP,KAAK2F,OAAOgG,GAC/B,SAAS,QAASqV,KAAalwB,KAAKkP,KAAKoV,QAAQ7a,KAAKymB,KAE1D7C,EAAMxrB,UAAUiT,SAAW,WACvB,MAAO,UAAY9U,KAAKqL,GAAK,IAAMrL,KAAKkP,KAAO,aAAelP,KAAK8uB,OAAS,eAAiB9uB,KAAK4uB,WAAa,KAE5GvB,EAtHe,4OChDtB8C,EAA2B,WAM3B,SAASA,EAAUjd,GAEflT,KAAKskB,QAAU,KAEftkB,KAAKof,SAAU,GACf,QAAOpf,KAAMkT,GAgDjB,OA5CAid,EAAUtuB,UAAUqX,GAAK,SAAUlV,EAAK6B,GACpC,OAAO,GAGXsqB,EAAUtuB,UAAUgT,OAAS,SAAU7Q,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUoT,OAAS,SAAUjR,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUsN,OAAS,SAAUsO,EAAGmB,GAEtC,OAAOnB,GAAKmB,GAEhBuR,EAAUtuB,UAAUuuB,YAAc,WAC9B,IAAIC,EAAMrwB,KAAKskB,QAAQxP,WACvB,OAAOub,EAAItJ,OAAO,EAAGsJ,EAAIjhB,OAAS,IAEtC+gB,EAAUtuB,UAAUiT,SAAW,WAC3B,MAAO,cAAgB9U,KAAKwF,KAAO,KAGvC2qB,EAAUtuB,UAAUmuB,WAAa,SAAUhsB,GACvC,OAAOhE,KAAKkZ,GAAGlV,GAAOA,EAAMhE,KAAKiV,OAAOjR,IAY5CmsB,EAAUtuB,UAAU8sB,SAAW,SAAU2B,EAAML,GAC3C,IAAKK,EACD,OAAOtwB,KACX,GAAa,SAATswB,IAAoBL,EACpB,MAAM,IAAIxd,MAAM,kDACpB,OAAO,IAAI8d,EAAUvwB,KAAMswB,IAExBH,EA3DmB,GA+D9B,SAASI,EAAUrhB,EAAMohB,GACrB,IAAIngB,EAAQnQ,KAEZ,SAASwwB,EAAUxsB,GACf,OAAO,QAAQA,GAAOA,GAAM,QAAUA,GAAO,CAACA,GAAO,GAczD,SAASysB,EAAajwB,EAAUkwB,GAC5B,OAAO,SAAqB1sB,GACxB,IAAI,QAAQA,IAAuB,IAAfA,EAAIoL,OACpB,OAAOpL,EACX,IAAI0b,EAAM8Q,EAAUxsB,GAChBsC,GAAS,QAAIoZ,EAAKlf,GACtB,OAAyB,IAAlBkwB,EAAgF,KAAvD,QAAOpqB,GAAQ,SAAUgJ,GAAK,OAAQA,KAAMF,OAjBpF,SAAqBpL,GACjB,OAAQA,EAAIoL,QACR,KAAK,EACD,OACJ,KAAK,EACD,MAAgB,SAATkhB,EAAkBtsB,EAAI,GAAKA,EACtC,QACI,OAAOA,GAUgF2sB,CAAYrqB,IAI/G,SAASsqB,EAAmBpwB,GACxB,OAAO,SAAqBqwB,EAAMC,GAC9B,IAAIC,EAAOP,EAAUK,GAAOG,EAAQR,EAAUM,GAC9C,GAAIC,EAAK3hB,SAAW4hB,EAAM5hB,OACtB,OAAO,EACX,IAAK,IAAIiO,EAAI,EAAGA,EAAI0T,EAAK3hB,OAAQiO,IAC7B,IAAK7c,EAASuwB,EAAK1T,GAAI2T,EAAM3T,IACzB,OAAO,EAEf,OAAO,GAGf,CAAC,SAAU,SAAU,SAAU,cAActc,SAAQ,SAAUyE,GAC3D,IAAIyrB,EAAc/hB,EAAK1J,GAAMlC,KAAK4L,GAC9BgiB,EAAqB,WAAT1rB,EAAoBorB,EAAqBH,EACzDtgB,EAAM3K,GAAQ0rB,EAAUD,OAE5B,QAAOjxB,KAAM,CACT2tB,QAASze,EAAKye,QACdnoB,KAAM0J,EAAK1J,KACX8e,QAASpV,EAAKoV,QACdlF,QAASlQ,EAAKkQ,QACdyP,IAAK3f,EAAK2f,IACV3V,GAAIuX,EAAavhB,EAAKgK,GAAG5V,KAAK4L,IAAO,GACrCiiB,WAAYb,+GC5DZc,kUApDJC,EAA4B,WAC5B,SAASA,IACLrxB,KAAKwlB,SAAU,EACfxlB,KAAKsxB,UAAY,GACjBtxB,KAAKuxB,cAAe,QAAKF,EAAWxvB,UAAW,CAC3C,OACA,SACA,QACA,OACA,MACA,OACA,OACA,OACA,QAIJ7B,KAAK+D,OAAQ,SAAQ,QAAI/D,KAAKuxB,cADf,SAAU9X,EAAYjU,GAAQ,OAAO,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,OAClC,IA+B3D,OA7BA4X,EAAWxvB,UAAUqT,QAAU,WAC3BlV,KAAK+D,MAAQ,IAOjBstB,EAAWxvB,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpD,KAAK,QAAU/X,GACX,OAAOzZ,KAAK+D,MAAMyB,GACtB,GAAIxF,KAAK+D,MAAMrB,eAAe8C,GAC1B,MAAM,IAAIiN,MAAM,iBAAmBjN,EAAO,+BAO9C,OANAxF,KAAK+D,MAAMyB,GAAQ,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,IACpD+X,IACAxxB,KAAKsxB,UAAU7wB,KAAK,CAAE+E,KAAMA,EAAM0N,IAAKse,IAClCxxB,KAAKwlB,SACNxlB,KAAKyxB,mBAENzxB,MAEXqxB,EAAWxvB,UAAU4vB,gBAAkB,WACnC,KAAOzxB,KAAKsxB,UAAUliB,QAAQ,CAC1B,IAAIF,EAAOlP,KAAKsxB,UAAUrvB,QAC1B,GAAIiN,EAAKoV,QACL,MAAM,IAAI7R,MAAM,sDACpB,QAAOzS,KAAK+D,MAAMmL,EAAK1J,MAAO,qBAA0B0J,EAAKgE,QAG9Dme,EAhDoB,GAoDvBD,EAAkB,SAAUle,GAC5B,IAAIwe,EAAc,SAAU1tB,GAAO,OAAe,MAAPA,EAAcA,EAAI8Q,WAAa9Q,GACtE2tB,EAAkB,CAClB9c,OAAQ6c,EACRzc,OAAQyc,EACRxY,IAAI,IAAAA,IAAG0Y,QACPtN,QAAS,KAETnV,OAAQ,SAAUsO,EAAGmB,GAAK,OAAOnB,GAAKmB,IAE1C,OAAO,QAAO,GAAI+S,EAAiBze,KAGvC,QAAOme,EAAWxvB,UAAW,CACzB0D,OAAQ6rB,EAAgB,IACxBjpB,KAAMipB,EAAgB,CAClB9M,QAAS,UAEbuN,MAAOT,EAAgB,IACvBU,KAAMV,EAAgB,CAClBhS,SAAS,IAEb2S,IAAKX,EAAgB,CACjBnc,OAAQ,SAAUjR,GAAO,OAAOqlB,SAASrlB,EAAK,KAC9CkV,GAAI,SAAUlV,GACV,QAAQ,QAAkBA,IAAQhE,KAAKiV,OAAOjR,EAAI8Q,cAAgB9Q,GAEtEsgB,QAAS,UAEb0N,KAAMZ,EAAgB,CAClBvc,OAAQ,SAAU7Q,GAAO,OAAQA,EAAO,EAAM,GAC9CiR,OAAQ,SAAUjR,GAAO,OAA6B,IAAtBqlB,SAASrlB,EAAK,KAC9CkV,IAAI,IAAAA,IAAG+Y,SACP3N,QAAS,QAEb4N,KAAMd,EAAgB,CAClBvc,OAAQ,SAAU7Q,GACd,OAAQhE,KAAKkZ,GAAGlV,GAEV,CAACA,EAAImuB,eAAgB,KAAOnuB,EAAIouB,WAAa,IAAItwB,OAAO,IAAK,IAAMkC,EAAIquB,WAAWvwB,OAAO,IAAImR,KAAK,UADlGkB,GAGVc,OAAQ,SAAUjR,GACd,GAAIhE,KAAKkZ,GAAGlV,GACR,OAAOA,EACX,IAAIgY,EAAQhc,KAAKsyB,QAAQ7oB,KAAKzF,GAC9B,OAAOgY,EAAQ,IAAIuW,KAAKvW,EAAM,GAAIA,EAAM,GAAK,EAAGA,EAAM,SAAM7H,GAEhE+E,GAAI,SAAUlV,GAAO,OAAOA,aAAeuuB,OAASjJ,MAAMtlB,EAAIwuB,YAC9DrjB,OAAQ,SAAUsjB,EAAGlV,GACjB,MAAO,CAAC,cAAe,WAAY,WAAW3O,QAAO,SAAUsL,EAAKvZ,GAAM,OAAOuZ,GAAOuY,EAAE9xB,OAAU4c,EAAE5c,QAAU,IAEpH2jB,QAAS,0DACTgO,QAAS,0DAEbI,KAAMtB,EAAgB,CAClBvc,OAAQ,KACRI,OAAQ,KACRiE,IAAI,IAAAA,IAAG3F,QACPpE,OAAQ,KACRmV,QAAS,UAGbJ,IAAKkN,EAAgB,CACjBvc,OAAQ,KACRI,OAAQ,KACRiE,GAAI,WAAc,OAAO,GACzB/J,OAAQ,kLCjJhBwjB,EAA6B,WAC7B,SAASA,EAAYvkB,QACF,IAAXA,IAAqBA,EAAS,KAClC,QAAOpO,KAAMoO,GA4BjB,OAlBAukB,EAAY9wB,UAAU+wB,SAAW,SAAUC,EAAWC,EAAUC,GAC5D,IAAIC,EACAC,GAAU,QAAUH,EAAUC,GAAM9nB,EAAY,GAAIioB,EAAc,GACtE,IAAK,IAAI7V,KAAK4V,EACV,GAAKA,EAAQ5V,IAAO4V,EAAQ5V,GAAGjP,SAE/B4kB,EAAezf,OAAOC,KAAKyf,EAAQ5V,GAAGjP,SACpBgB,OAElB,IAAK,IAAIsO,KAAKsV,EACNE,EAAYhlB,QAAQ8kB,EAAatV,KAAO,IAE5CwV,EAAYzyB,KAAKuyB,EAAatV,IAC9BzS,EAAU+nB,EAAatV,IAAM1d,KAAKgzB,EAAatV,KAGvD,OAAO,QAAO,GAAIzS,EAAW4nB,IAE1BF,EA/BqB,+RCS5BQ,EAA0B,WAC1B,SAASA,EAASC,GACd,GAAIA,aAAuBD,EAAU,CACjC,IAAI5kB,EAAO6kB,EACXpzB,KAAKyN,MAAQc,EAAKd,MAClBzN,KAAKwO,YAAcD,EAAKC,YAAY1M,QACpC9B,KAAKsb,aAAc,QAAO,GAAI/M,EAAK+M,aACnCtb,KAAK+X,YAAcxJ,EAAKwJ,YAAYjW,QACpC9B,KAAKwa,MAAQjM,EAAKiM,OAASjM,EAAKiM,MAAM1Y,YAErC,CACD,IAAI2L,EAAQ2lB,EACZpzB,KAAKyN,MAAQA,EACbzN,KAAKwO,YAAcf,EAAM4lB,WAAW,CAAEjU,SAAS,IAC/Cpf,KAAKsb,YAAc,GACnBtb,KAAK+X,YAActK,EAAMsK,YAAYpJ,KAAI,SAAUqE,GAAO,OAAOA,EAAItG,YA+C7E,OA5CAymB,EAAStxB,UAAU6K,MAAQ,WACvB,OAAO,IAAIymB,EAASnzB,OAGxBmzB,EAAStxB,UAAUyxB,eAAiB,SAAUllB,GAG1C,OADApO,KAAKsb,YAActb,KAAKwO,YAAYI,QAAO,SAAUsR,EAAMqT,GAAQ,OAAO,QAAWrT,EADtC,EAAnBsT,EAC2ED,GAD9CloB,GAAImoB,EAAShvB,MAAM4J,EAAOolB,EAASnoB,OAA1E,IAAUmoB,IACsF,IAC3GxzB,MAGXmzB,EAAStxB,UAAU4xB,UAAY,SAAUjuB,GACrC,OAAO,QAAKxF,KAAKwO,aAAa,QAAO,KAAMhJ,KAM/C2tB,EAAStxB,UAAUsN,OAAS,SAAUZ,EAAMmlB,GACxC,IAAIC,EAAO3zB,KAAK2zB,KAAKplB,EAAMmlB,GAC3B,OAAOC,GAAwB,IAAhBA,EAAKvkB,QAcxB+jB,EAAStxB,UAAU8xB,KAAO,SAAUplB,EAAMmlB,GACtC,GAAI1zB,KAAKyN,QAAUc,EAAKd,MACpB,OAAO,EACX,IAAIW,EAASslB,EAAWA,EAAS1zB,MAAQA,KAAKwO,YAC9C,OAAO,YAAcJ,EAAQpO,KAAKsb,YAAa/M,EAAK+M,cAMxD6X,EAASzmB,MAAQ,SAAU6B,GAAQ,OAAOA,EAAK7B,SACxCymB,EA9DkB,mWCHzBS,EAA2B,WAC3B,SAASA,KA4JT,OAzJAA,EAAUC,gBAAkB,SAAUC,EAAU3rB,GAC5C,IAAIsF,GAAQ,QAAKtF,GAAMsF,MACvB,OAAO,IAAI,IAAYqmB,EAAUrmB,EAAOtF,EAAKwG,KAAI,QAAK,gBAAgBC,OAAO,KAAQ,IAAK,KAE9FglB,EAAUG,UAAY,SAAUvH,GAC5B,IAAIre,EAAWqe,EAAYpe,SAC3B,OAAOoe,EAAY/T,SAAStQ,KAAKwG,KAAI,SAAUlB,GAAS,OAAO,IAAI,IAASA,GAAO6lB,eAAenlB,OAGtGylB,EAAUI,YAAc,SAAUC,EAAUzH,GACxC,IAAI0H,EAASN,EAAUG,UAAUvH,GACjC,OAAIA,EAAYrsB,UAAUif,QACfwU,EAAUO,cAAcF,EAAUC,EAAQ3gB,OAAOC,KAAKgZ,EAAYpe,WAEtE8lB,GAOXN,EAAUQ,iBAAmB,SAAUttB,EAAOqB,EAAM6kB,GAEhD7kB,EACKmB,QAAO,SAAUiF,GAAQ,OAAO,QAAQye,EAAQze,EAAKd,UACrD1M,SAAQ,SAAUwN,GACnB,IAAI8lB,GAAY,QAAO9lB,EAAKd,MAAM+M,OAAS,IACvC8Z,EAAUV,EAAUU,QAAQnsB,GAAM,SAAUoY,GAAK,OAAOA,IAAMhS,KAC9DgmB,EAAcF,EAAU1lB,KAAI,SAAUmL,GAAQ,OAAOhT,EAAM0tB,iBAAiBF,EAASxa,MACzFvL,EAAKiM,MAAQ+Z,EAAY3lB,OAAO,KAAS,QAcjDglB,EAAUO,cAAgB,SAAUF,EAAUC,EAAQO,QACnC,IAAXA,IAAqBA,EAAS,IAKlC,IAAIC,EAAYT,EACXtlB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKC,eAClCI,OAAO,KAAS,IAChBtF,QAAO,SAAU0F,GAAS,OAAQA,EAAMoQ,WACxCzQ,KAAI,QAAK,OAiBd,OAAOulB,EAAOvlB,KAZd,SAAiCgmB,GAE7B,IAAIC,GAAc,QAAO,GAAID,GAAUA,EAAOrZ,aAE1CuZ,GAAoB,QAAKD,EAAaH,GAC1CG,GAAc,QAAKA,EAAaH,GAChC,IAnBmBtsB,EAAMsF,EACrBc,EAkBAumB,GAAgB,SAnBD3sB,EAmBoB8rB,EAnBdxmB,EAmBwBknB,EAAOlnB,MAlBpDc,GAAO,QAAKpG,GAAM,QAAO,QAASsF,KAC/B,QAAO,GAAIc,GAAQA,EAAK+M,cAiBmC,IAAIoZ,GAElEK,GAAe,QAAOH,EAAaE,EAAeD,GACtD,OAAO,IAAI,IAASF,EAAOlnB,OAAO6lB,eAAeyB,OAQzDnB,EAAUllB,YAAc,SAAUulB,EAAUC,EAAQc,GAIhD,IAHA,IAE2BC,EAAOC,EAU9BhG,EAAMiG,EAAUlnB,EAASke,EAZzBrF,EAAMhF,KAAKD,IAAIoS,EAAS7kB,OAAQ8kB,EAAO9kB,QACvCgmB,EAAO,EAEJA,EAAOtO,GAAOmN,EAASmB,GAAM3nB,QAAUunB,IADnBC,EAC6ChB,EAASmB,GAD/CF,EACsDhB,EAAOkB,GAD7CH,EAAM9lB,OAAO+lB,EAAOtB,EAAUyB,oBAE5ED,IAUJD,GADAjG,EAAO+E,GACSnyB,MAAM,EAAGszB,GACzBnnB,EAAUihB,EAAKptB,MAAMszB,GAErB,IAAIE,EAAuBH,EAASxmB,KAVpC,SAAuB4mB,EAActmB,GACjC,IAAIxC,EAAS8oB,EAAa7oB,QAE1B,OADAD,EAAO6O,YAAc4Y,EAAOjlB,GAAKqM,YAC1B7O,KAUX,OAFA0f,EAAW+H,EAAOpyB,MAAMszB,GAEjB,CAAElG,KAAMA,EAAMC,GADhBmG,EAAqBlzB,OAAO+pB,GACJgJ,SAAUA,EAAUG,qBAAsBA,EAAsBrnB,QAASA,EAASke,SAAUA,IAiB7HyH,EAAU4B,SAAW,SAAUC,EAAOC,EAAOhC,GACzC,IAAIiC,GAAO,EAEX,OADa,QAAYF,EAAOC,GAClB9mB,QAAO,SAAU4mB,EAAUnK,GACrC,IAAIuK,EAAQvK,EAAG,GAAIwK,EAAQxK,EAAG,GAE9B,OADAsK,EAAOA,IAASC,EAAMzmB,OAAO0mB,EAAOnC,IACtB8B,EAAWA,EAASpzB,OAAOwzB,KAC1C,KAUPhC,EAAUzkB,OAAS,SAAUsmB,EAAOC,EAAOhC,GACvC,OAAO+B,EAAMrmB,SAAWsmB,EAAMtmB,QAAUwkB,EAAU4B,SAASC,EAAOC,EAAOhC,GAAUtkB,SAAWqmB,EAAMrmB,QAYxGwkB,EAAUU,QAAU,SAAUnsB,EAAM2tB,GAChC,IAAIvnB,GAAO,QAAKpG,EAAM2tB,GAClBC,EAAa5tB,EAAK+F,QAAQK,GAC9B,OAAuB,IAAhBwnB,OAAoB5hB,EAAYhM,EAAKrG,MAAM,EAAGi0B,EAAa,IAEtEnC,EAAUyB,iBAAmB,SAAU9mB,GACnC,OAAOA,EAAKd,MAAM4lB,WAAW,CAAEjU,SAAS,IAAS9V,QAAO,SAAU0F,GAAS,OAAQA,EAAM2e,YAG7FiG,EAAUtY,YAAc,SAAUnT,GAAQ,OAAOA,EAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,QAAO2L,EAAK3L,EAAK+M,eAAiB,KACtHsY,EA7JmB,yGCPvB,IAAIoC,EAAkB,CACzB/lB,KAAM,CACFgmB,KAAM,OACNC,MAAO,SAEXpd,MAAO,CACHqd,KAAM,OACNC,OAAQ,sbCgBZnkB,EAA4B,WAC5B,SAASA,EAAWokB,EAAMne,EAAWpG,EAAMwkB,EAAQ3uB,GAG/C,GAFA3H,KAAKu2B,UAAW,EAChBv2B,KAAKyD,aAAU0Q,EACXkiB,aAAgBpkB,GAChB,QAAOjS,KAAMq2B,QAEZ,IAAI,QAAWne,GAAY,CAC5B,IAAI,QAAkBme,GAClB,MAAM,IAAI5jB,MAAM,gDACpB,KAAK,QAAWyF,GACZ,MAAM,IAAIzF,MAAM,2DACpBzS,KAAKuhB,MAAQ8U,EACbr2B,KAAKs2B,OAASA,EACdt2B,KAAKkY,UAAYA,EACjBlY,KAAK8R,KAAOA,GAAQ,GACpB9R,KAAK2H,KAAOA,EACZ3H,KAAKu2B,cAAoBpiB,IAATxM,EAChB3H,KAAKyD,QAAUzD,KAAKu2B,SAAW,YAAiBv2B,KAAK2H,WAAQwM,OAE5D,IAAI,QAASkiB,IAASA,EAAK9U,QAAU8U,EAAK3zB,eAAe,cAAgB2zB,EAAK3zB,eAAe,SAAU,CACxG,IAAI8zB,EAAUH,EACd,OAAO,IAAIpkB,EAAWukB,EAAQjV,MAAOiV,EAAQte,UAAWse,EAAQ1kB,KAAM0kB,EAAQF,OAAQE,EAAQ7uB,OA+DtG,OA5DAsK,EAAWpQ,UAAUgX,UAAY,SAAUpL,GACvC,IAAIgpB,EAAaz2B,KAAKs2B,QAAU,GAC5BI,EAAejpB,GAASA,EAAMkpB,eAAkB,GACpD,MAAO,CACH1mB,KAAMwmB,EAAWxmB,MAAQymB,EAAYzmB,MA5CvC,OA6CE6I,MAAO2d,EAAW3d,OAAS4d,EAAY5d,OA5CxC,SAsDP7G,EAAWpQ,UAAU8K,QAAU,SAAUiqB,EAAgBhnB,GACrD,IAAIO,EAAQnQ,KACR+G,EAAK,OAOLwH,EAAOqoB,EAAeC,SAAS72B,MAC/ByN,EAAQc,GAAQA,EAAKd,MACrBqpB,EAAc92B,KAAK6Y,UAAUpL,GAAOqL,MACpCie,GAAoB,QAAWD,GAAeA,EAAc,KAUhE,OAAQ92B,KAAKyD,QAAUsD,EAClBkJ,OACAlF,MApB2B,WAC5B,OAAOhE,EAAG0U,IAAImb,EAAeI,gBAAgB7mB,GAAOxB,KAAI,SAAUqJ,GAAc,OAAOA,EAAWtH,IAAIkmB,EAAgBhnB,UAoBrH7E,MAjBiB,SAAUksB,GAAgB,OAAO9mB,EAAM+H,UAAU/V,MAAM,KAAM80B,MAkB9ElsB,KAAKgsB,GACLhsB,MAboB,SAAUmsB,GAK/B,OAJA/mB,EAAMxI,KAAOuvB,EACb/mB,EAAMomB,UAAW,EACjBpmB,EAAM+H,UAAY,KAClB,6BAA8B/H,EAAOP,GAC9BO,EAAMxI,SAgBrBsK,EAAWpQ,UAAU6O,IAAM,SAAUkmB,EAAgBhnB,GACjD,OAAO5P,KAAKyD,SAAWzD,KAAK2M,QAAQiqB,EAAgBhnB,IAExDqC,EAAWpQ,UAAUiT,SAAW,WAC5B,MAAO,sBAAuB,QAAU9U,KAAKuhB,OAAS,gBAAkBvhB,KAAK8R,KAAKnD,IAAI,MAAa,MAEvGsD,EAAWpQ,UAAU6K,MAAQ,WACzB,OAAO,IAAIuF,EAAWjS,OAE1BiS,EAAWklB,SAAW,SAAU5V,EAAO5Z,GAAQ,OAAO,IAAIsK,EAAWsP,GAAO,WAAc,OAAO5Z,IAAS,KAAM,KAAMA,IAC/GsK,EArFoB,4qBCd3BmlB,EAAQ,SACRC,EAAY,CAACD,EAAMlB,MAAOkB,EAAMnB,MAChCqB,EAAc,CAACF,EAAMlB,OAarB9tB,EAAgC,WAChC,SAASA,EAAemvB,GACpBv3B,KAAKu3B,MAAQA,EA8IjB,OA3IAnvB,EAAevG,UAAU+W,UAAY,WACjC,OAAO5Y,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO2L,EAAI9X,OAAOmM,EAAKwJ,YAAYpJ,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,YAAe,IAAI3S,OAAO,KAAO,KAQpJxG,EAAevG,UAAUiM,cAAgB,SAAUyT,GAC/C,IAAIiU,EAAWx1B,KAAKu3B,MACf5oB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKwJ,eAClCnJ,OAAO,KAAS,IAChBtF,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC9C,OAAO,QAAKiU,IAGhBptB,EAAevG,UAAUgX,UAAY,SAAUb,GAC3C,IAAIzJ,EAAOvO,KAAK62B,SAAS7e,GACzB,OAAOA,EAAWa,UAAUtK,EAAKd,QAyBrCrF,EAAevG,UAAUkS,WAAa,SAAUtG,GAC5C,OAAO,IAAIrF,EAAe,YAAkBpI,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAOA,EAAKd,QAAUA,OAiBpGrF,EAAevG,UAAU21B,eAAiB,SAAUC,EAAgBhqB,GAChE,IAAIc,GAAO,QAAKvO,KAAKu3B,OAAO,QAAO,QAAS9pB,IACxC+F,EAAOikB,EAAe9oB,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,SACtDhT,EAAKwJ,YAAcxJ,EAAKwJ,YAAYzO,QAAO,SAAUiU,GAAK,OAAkC,IAA3B/J,EAAKtF,QAAQqP,EAAEgE,UAAkBnf,OAAOq1B,IAS7GrvB,EAAevG,UAAU61B,YAAc,SAAUznB,EAAML,GACnD,IAAIO,EAAQnQ,UACC,IAATiQ,IAAmBA,EAAO,QAE9B,IAGI0nB,IAHa,QAAQN,EAAWpnB,GAAQA,EAAO,UAGjB,eAA6BqnB,EAAcD,EAE7E,sBAAuBr3B,KAAKu3B,MAAOtnB,EAAML,GACzC,IAAIgoB,EAAgB,SAAUC,EAAcC,GAAe,OAAO,SAAU9f,GACxE,OAAO,QAAQ6f,EAAc1nB,EAAM0I,UAAUb,GAAY8f,MAIzDvc,EAAWvb,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAC5C,IAAIwpB,EAAkBxpB,EAAKwJ,YAAYzO,OAAOsuB,EAAcD,EAAc,SACtEK,EAASD,EAAgBzuB,OAAOsuB,EAAc,CAAC,UAAW,UAC1DK,EAAOF,EAAgBzuB,QAAO,QAAIsuB,EAAc,CAAC,UAAW,WAE5D7jB,EAAa5D,EAAM4D,WAAWxF,EAAKd,OACnCyqB,EAAY,SAAU3a,GACtB,OAAOA,EACF7M,IAAIqD,EAAYnE,GAEhB7E,MAAK,SAAUvG,GAAS,MAAO,CAAG+c,MAAOhE,EAAEgE,MAAO/c,MAAOA,OAGlE,OADAwzB,EAAOj3B,QAAQm3B,GACRhe,EAAI9X,OAAO61B,EAAKtpB,IAAIupB,MAC5B,IAEH,OAAO,WAAgB3c,IAE3BnT,EAAevG,UAAUs2B,SAAW,WAChC,OAAOn4B,KAAKo4B,YAAcp4B,KAAKo4B,UAAY,IAAIC,EAAer4B,QAElEoI,EAAevG,UAAUg1B,SAAW,SAAU7e,GAC1C,OAAO,QAAKhY,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAO,QAAQA,EAAKwJ,YAAaC,OAO/E5P,EAAevG,UAAUm1B,gBAAkB,SAAUhf,GACjD,IAAI7H,EAAQnQ,KACRuO,EAAOvO,KAAK62B,SAAS7e,GAIrBsgB,GADU,YAAkBt4B,KAAKu3B,OAAO,SAAUjoB,GAAK,OAAOA,IAAMf,MAAYvO,KAAKu3B,OAEpF3oB,QAAO,SAAUsL,EAAKqe,GAAS,OAAOre,EAAI9X,OAAOm2B,EAAMxgB,eAAiB,IACxEzO,QAAO,SAAU0J,GAAO,OAAOA,IAAQgF,KAW5C,OAAOA,EAAWlG,KAAKnD,KAVH,SAAU4S,GAC1B,IAAIiU,EAAW8C,EAAqBhvB,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC7E,GAAIiU,EAASpmB,OACT,OAAO,QAAKomB,GAChB,IAAIgD,EAAeroB,EAAMgoB,WAAWM,UAAUlX,GAC9C,IAAI,QAAYiX,GACZ,MAAM,IAAI/lB,MAAM,+CAAgD,QAAU8O,IAE9E,OAAO,IAAI,IAAWA,GAAO,WAAc,OAAOiX,IAAiB,GAAIA,OAIxEpwB,EAhJwB,GAoJ/BiwB,EAAgC,WAChC,SAASA,EAAexnB,GACpB7Q,KAAK6Q,QAAUA,EACf7Q,KAAK04B,OAAS14B,KAAK0Q,IAlKQ,oBAkKsB,cAwBrD,OAtBA2nB,EAAex2B,UAAU6O,IAAM,SAAU6Q,GACrC,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,GAAIvJ,EAAY,CACZ,GAAiD,WAA7ChY,KAAK6Q,QAAQgI,UAAUb,GAAYc,MACnC,OAAOd,EAAWtH,IAAI1Q,KAAK6Q,SAE/B,IAAKmH,EAAWue,SACZ,MAAM,IAAI9jB,MAAM,yCAA0C,QAAUuF,EAAWuJ,QAEnF,OAAOvJ,EAAWrQ,KAEtB,OAAO3H,KAAKy4B,UAAUlX,IAE1B8W,EAAex2B,UAAU82B,SAAW,SAAUpX,GAC1C,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,OAAIvJ,EACOA,EAAWtH,IAAI1Q,KAAK6Q,SACxB,YAAiB7Q,KAAK04B,OAAOhoB,IAAI6Q,KAE5C8W,EAAex2B,UAAU42B,UAAY,SAAUlX,GAC3C,OAAOvhB,KAAK04B,QAAU14B,KAAK04B,OAAOhoB,IAAI6Q,IAEnC8W,EA3BwB,q2BC/J/BO,EAAkB,EAMlBC,GAAsB,QAAS,mBAJnB,CAAC,MAAO,OAAQ,SAAU,OAAQ,aAM9CC,GAAqB,QAAS,iBAJlB,CAAC,OAAQ,WAAY,OAAQ,WAAY,YAAa,eAUlEpiB,EAA0B,WAQ1B,SAASA,EAASU,EAAiBC,QACP,IAApBD,IAA8BA,EAAkByhB,QAC7B,IAAnBxhB,IAA6BA,EAAiByhB,GAClD94B,KAAKoX,gBAAkBA,EACvBpX,KAAKqX,eAAiBA,EACLrX,KAAKmb,IAAMyd,IACX54B,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAe,GAErCh5B,KAAKqI,MAAQ,KAEbrI,KAAK+W,YAAc,IAAI,IAAY/W,MAEnCA,KAAKsY,QAAU,IAAI,IAEnBtY,KAAK8sB,kBAAoB,IAAI,IAAkB9sB,MAK/CA,KAAK4U,kBAAoB,IAAI,IAAkB5U,MAK/CA,KAAKmc,UAAY,IAAI,IAAUnc,MAE/BA,KAAKiX,WAAa,IAAI,IAAWjX,MAEjCA,KAAK4W,cAAgB,IAAI,IAAc5W,MAEvCA,KAAK6W,aAAe,IAAI,IAAa7W,MAErCA,KAAKi5B,SAAW,GAChBj5B,KAAK+W,YAAY/M,WAAWC,iBAAiBjK,KAAK4W,cAAcgH,QAChE5d,KAAKsY,QAAQwa,SAAW9yB,KAAK4W,cAAcgH,OAC3C5d,KAAKsY,QAAQwN,QAAU9lB,KAAKsY,QAAQwa,SAASplB,KAC7C1N,KAAKk5B,WAAWl5B,KAAKsY,SACrBtY,KAAKk5B,WAAWl5B,KAAK6W,cACrB7W,KAAKk5B,WAAWl5B,KAAK4W,eACrB5W,KAAKk5B,WAAWl5B,KAAK8sB,mBACrB9sB,KAAKk5B,WAAWl5B,KAAKiX,YACrBjX,KAAKk5B,WAAW9hB,GAChBpX,KAAKk5B,WAAW7hB,GAgGpB,OA7FAX,EAAS7U,UAAUq3B,WAAa,SAAUA,GACtCl5B,KAAKg5B,aAAav4B,KAAKy4B,IAa3BxiB,EAAS7U,UAAUqT,QAAU,SAAUgkB,GACnC,IAAI/oB,EAAQnQ,KACRk5B,IAAc,QAAWA,EAAWhkB,SACpCgkB,EAAWhkB,QAAQlV,OAGvBA,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAal3B,QAAQf,SAAQ,SAAUo4B,GACxC,IACyB,mBAAdA,EAAEjkB,SAA0BikB,EAAEjkB,QAAQ/E,IAC7C,QAAWA,EAAM6oB,aAAcG,GAEnC,MAAOC,UAwDf1iB,EAAS7U,UAAUw3B,OAAS,SAAUA,EAAQl5B,QAC1B,IAAZA,IAAsBA,EAAU,IACpC,IAAIm5B,EAAiB,IAAID,EAAOr5B,KAAMG,GACtC,IAAKm5B,EAAe9zB,KAChB,MAAM,IAAIiN,MAAM,+CAAiD6mB,GAErE,OADAt5B,KAAKg5B,aAAav4B,KAAK64B,GACft5B,KAAKi5B,SAASK,EAAe9zB,MAAQ8zB,GAEjD5iB,EAAS7U,UAAU03B,UAAY,SAAUC,GACrC,OAAOA,EAAax5B,KAAKi5B,SAASO,IAAc,QAAOx5B,KAAKi5B,WAEzDviB,EAnJkB,ijBCf7B,SAAS+iB,EAAYhsB,GACjB,OAAOA,EAAMjI,KAEjB,SAASk0B,EAAYjsB,GAEjB,OADAA,EAAMC,KAAKsG,QAAU,WAAc,OAAOvG,GACnCA,EAAMC,KAEjB,SAASisB,EAAYlsB,GAIjB,OAHIA,EAAM2M,QAAU3M,EAAM2M,OAAOzS,OAC7B8F,EAAM9F,KAAO8F,EAAMC,KAAK/F,MAAO,QAAQ8F,EAAM2M,OAAOzS,KAAM8F,EAAM9F,OAE7D8F,EAAM9F,KAEjB,IAAIiyB,EAAgB,SAAUC,EAA4Bjc,GACtD,OAAO,SAAoBhK,GACvB,IAAIkmB,EAAWlmB,EAAYlG,KAG3B,GAAIosB,GAAYA,EAASroB,KAAOqoB,EAASt0B,MAAQs0B,EAASt0B,KAAKwW,MAAM,WAAY,CAC7E,IAAI+d,EAAc,IAClB,QAAKD,EAAUC,GACfA,EAAYtoB,KAAO,kBACnBqoB,EAAWC,EAEf,IAAI3f,EAASxG,EAAYwG,OACrB4f,EA/BG,SAAUvoB,GACrB,KAAK,QAASA,GACV,OAAO,EACX,IAAImM,EAAyB,MAAlBnM,EAAIhM,OAAO,GACtB,MAAO,CAAEzB,IAAK4Z,EAAOnM,EAAIwoB,UAAU,GAAKxoB,EAAKmM,KAAMA,GA2BlCsc,CAASJ,EAASroB,KAC3BA,EAAOuoB,EAAwBH,EAA2BxyB,QAAQ2yB,EAAOh2B,IAAK,CAAEyJ,MAAOqsB,IAAvEA,EAASroB,IAC7B,IAAKA,EACD,OAAO,KACX,IAAKooB,EAA2BM,UAAU1oB,GACtC,MAAM,IAAIgB,MAAM,gBAAkBhB,EAAM,eAAiBmC,EAAc,KAC3E,OAAOomB,GAAUA,EAAOpc,KAAOnM,GAAQ2I,GAAUA,EAAOggB,WAAcxc,KAAQnM,IAAI4oB,OAAO5oB,KAG7F6oB,EAAsB,SAAUC,GAChC,OAAO,SAA0B9sB,GAC7B,OAAQ8sB,EAAO9sB,IAAUA,EAAMgE,IAAMhE,EAAQA,EAAM2M,OAAS3M,EAAM2M,OAAOggB,UAAY,OAc7F,SAASI,EAAY/sB,GACjB,OAAOA,EAAM2M,OAAS3M,EAAM2M,OAAOjS,KAAK/F,OAAOqL,GAAkB,CAACA,GAEtE,SAASgtB,EAAgBhtB,GACrB,IAAI6L,EAAW7L,EAAM2M,QAAS,QAAO,GAAI3M,EAAM2M,OAAOd,UAAY,GAElE,OADAA,EAAS7L,EAAMjI,OAAQ,EAChB8T,EA2CJ,SAASohB,EAAmBjtB,GAE/B,IAA+BktB,EAAY3E,EA2BvC4E,EAAW,SAAUC,GAAK,OAAOA,EAAEC,SAAWD,EAAEtZ,OAEhDwZ,GAAqB,QAAQ,CAC7B,EAAC,QAAK,aAAc,SAAUF,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAE3iB,UAAW2iB,EAAE/oB,KAAM+oB,EAAEvE,UAC7F,EAAC,QAAK,cAAe,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAEG,WAAYH,EAAE/oB,MAAQ+oB,EAAEI,aAAcJ,EAAEvE,UACjH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAO,IAAIA,EAAEK,WAAe,GAAIL,EAAEvE,UACrH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAOA,EAAEM,WAAa,GAAIN,EAAEvE,OAAQuE,EAAEM,YACzH,EAAC,QAAK,eAAgB,SAAUN,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAI,KAAU,CAACA,EAAEO,aAAcP,EAAEvE,YAGrG+E,GAAmB,QAAQ,CAC3B,EAAC,SAAK,QAAK,OAAQ,MAAW,SAAU5nB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO,KAAU,CAAC9N,EAAMzP,KAAMyP,EAAM6iB,UACjH,EAAC,SAAK,QAAK,OAAQ,MAAU,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,OAAO,QAAK9N,EAAMzP,KAAMyP,EAAMzP,IAAIlC,MAAM,GAAI,GAAI2R,EAAM6iB,UAClI,EAAC,SAAK,QAAK,OAAQ,MAAa,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO9N,EAAMzP,KA/BvErD,EA+BqF8S,EAAMzP,IA9B5GuM,EAAY,cAIT5P,EAAY,SAAM4P,GAAaA,EAAU0H,SAAStX,EAAI4P,EAAUuH,WAAc,YA0BiCrE,EAAM6iB,QA/BjH,IAAU31B,EACjB4P,MAiCJ+qB,GAAkB,QAAQ,CAC1B,EAAC,IAAApiB,IAAG,KAAa,SAAUqE,GAAK,OAAOA,IACvC,CA5BmB,SAAUtD,GAAO,SAAUA,EAAIsH,QAAStH,EAAI/B,YA4B5C6iB,GACnB,CA3BoB,SAAU9gB,GAC9B,SAAWA,EAAI6gB,UAAW7gB,EAAIsH,SAAWtH,EAAIkhB,UAAYlhB,EAAI+gB,YAAc/gB,EAAImhB,aAAenhB,EAAIihB,YA0B9EH,GACpB,CAxBiB,SAAU9gB,GAC3B,SAAUA,GAAOA,EAAIjW,OAAQ,QAASiW,EAAIjW,OAAQ,QAAQiW,EAAIjW,OAAQ,QAAWiW,EAAIjW,QAuBpEq3B,GACjB,EAAC,SAAI,GAAO,SAAUphB,GAAO,MAAM,IAAIxH,MAAM,2BAA4B,QAAUwH,QAInFshB,EAAO9tB,EAAMd,QAEjB,QADY,QAAQ4uB,GAAQA,GArDGZ,EAqDmBY,EArDPvF,EAqDavoB,EAAMkpB,eAAiB,GApDpEpjB,OAAOC,KAAKmnB,GAAc,IAAIhsB,KAAI,SAAU4S,GAAS,MAAO,CAC/DA,MAAOA,EACPvd,IAAK22B,EAAWpZ,GAChBzP,UAAMqC,EACNmiB,OAAQN,EAAgBzU,SAiDnB5S,IAAI2sB,GAcrB,IAAIE,EAA8B,WAC9B,SAASA,EAAaC,EAAS7mB,GAC3B5U,KAAKy7B,QAAUA,EACf,IArIyBC,EAqIrBhuB,EAAO1N,KACP4d,EAAO,WAAc,OAAO6d,EAAQ3a,KAAK,KACzCyZ,EAAS,SAAU9sB,GAAS,MAAsB,KAAfA,EAAMjI,MAM7CxF,KAAK27B,SAAW,CACZn2B,KAAM,CAACi0B,GACP/rB,KAAM,CAACgsB,GACPtf,OAAQ,CARZ,SAAuB3M,GACnB,OAAI8sB,EAAO9sB,GACA,KACJguB,EAAQ3a,KAAKpT,EAAKkuB,WAAWnuB,KAAWmQ,MAM/CjW,KAAM,CAACgyB,GAEPloB,IAAK,CAACmoB,EAAchlB,EAAmBgJ,IAEvCwc,UAAW,CAACE,EAAoBC,IAChCnsB,OAAQ,EAtJastB,EAsJK9mB,EAAkB8mB,aArJ7C,SAAuBjuB,GAC1B,IACIouB,EAAapuB,EAAMgE,KAAOhE,EAAMgE,IAAI4hB,WAAW,CAAEjU,SAAS,KAAa,GACvE0c,GAAe,SAAO,SAAO,QAAKruB,EAAMW,QAAU,GAAIytB,EAAUltB,KAAI,QAAK,SAFvD,SAAUpD,EAAQF,GAAM,OAAOqwB,EAAa9qB,WAAWvF,EAAI,KAAMoC,EAAMC,UAG7F,OAAOmuB,EACFz5B,OAAO05B,GACPntB,KAAI,SAAUksB,GAAK,MAAO,CAACA,EAAExvB,GAAIwvB,MACjCjsB,OAAO,KAAY,OAiJpB4L,MAAO,GAEPrS,KAAM,CAACqyB,GAEPlhB,SAAU,CAACmhB,GACX1iB,YAAa,CAAC2iB,IAgEtB,OA7DAc,EAAa35B,UAAUk6B,QAAU,SAAUv2B,EAAM7E,GAC7C,IAAIg7B,EAAW37B,KAAK27B,SAChBpc,EAAQoc,EAASn2B,IAAS,GAE9B,OAAI,QAASA,MAAU,QAAU7E,GACtB4e,EAAMnQ,OAAS,EAAImQ,EAAQA,EAAM,IACvC,QAAS/Z,KAAU,QAAW7E,IAEnCg7B,EAASn2B,GAAQ+Z,EACjBoc,EAASn2B,GAAM/E,KAAKE,GACb,WAAc,OAAOg7B,EAASn2B,GAAMga,OAAOmc,EAASn2B,GAAM0I,QAAQvN,EAAI,KAAO,YAJpF,GAaJ66B,EAAa35B,UAAUm6B,MAAQ,SAAUvuB,GACrC,IAAeguB,EAANz7B,KAAmBy7B,QAASE,EAA5B37B,KAA0C27B,SAC/CvhB,EAASpa,KAAK47B,WAAWnuB,GAC7B,GAAI2M,IAAWqhB,EAAQ3a,KAAK1G,OAAQjG,GAAW,GAC3C,OAAO,KAEX,IAAK,IAAItO,KAAO81B,EACZ,GAAKA,EAASj5B,eAAemD,GAA7B,CAEA,IAAIo2B,EAAQN,EAAS91B,GAAK+I,QAAO,SAAUstB,EAAUpS,GAAQ,OAAO,SAAUmD,GAAU,OAAOnD,EAAKmD,EAAQiP,MAAiB,MAC7HzuB,EAAM5H,GAAOo2B,EAAMxuB,GAEvB,OAAOA,GAEX+tB,EAAa35B,UAAU+5B,WAAa,SAAUnuB,GAE1C,IAAIjI,EAAOiI,EAAMjI,MAAQ,GAErB22B,EAAW32B,EAAKsd,MAAM,KAM1B,GAFoB,OAFFqZ,EAASC,OAGvBD,EAASC,MACTD,EAAS/sB,OAAQ,CACjB,GAAI3B,EAAM2M,OACN,MAAM,IAAI3H,MAAM,mFAAqFjN,EAAO,KAGhH,OAAO22B,EAASlpB,KAAK,KAEzB,OAAKxF,EAAM2M,QAEJ,QAAS3M,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KADjD,IAGfg2B,EAAa35B,UAAU2D,KAAO,SAAUiI,GACpC,IAAIjI,EAAOiI,EAAMjI,KACjB,IAA2B,IAAvBA,EAAK0I,QAAQ,OAAgBT,EAAM2M,OACnC,OAAO5U,EACX,IAAIo2B,GAAa,QAASnuB,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KACtE,OAAOo2B,EAAaA,EAAa,IAAMp2B,EAAOA,GAE3Cg2B,EA5FsB,iTClL7Ba,EAA8B,WAC9B,SAASA,EAAaC,GAClBt8B,KAAKs8B,QAAUA,EAmDnB,OAjDAD,EAAax6B,UAAU06B,WAAa,SAAUC,GAE1C,OAAkC,KADlCA,EAAYA,GAAa,IACRtuB,QAAQ,MAAyC,IAA3BsuB,EAAUtuB,QAAQ,MAE7DmuB,EAAax6B,UAAUif,KAAO,SAAU2b,EAAaC,EAAMC,GAEvD,QADkB,IAAdA,IAAwBA,GAAY,GACnCF,GAA+B,KAAhBA,EAApB,CAEA,IAAIG,GAAQ,QAASH,GACjBj3B,EAAOo3B,EAAQH,EAAcA,EAAYj3B,KACzCxF,KAAKu8B,WAAW/2B,KAChBA,EAAOxF,KAAK03B,YAAYlyB,EAAMk3B,IAClC,IAAIjvB,EAAQzN,KAAKs8B,QAAQ92B,GACzB,GAAIiI,IAAUmvB,KAAWA,GAAUnvB,IAAUgvB,GAAehvB,EAAMC,OAAS+uB,IACvE,OAAOhvB,EAEN,GAAImvB,GAASD,EAAW,CACzB,IACIzZ,GADU,QAAOljB,KAAKs8B,SACJhzB,QAAO,SAAU2jB,GAAU,OAAOA,EAAO4P,mBAAmBC,UAAY7P,EAAO4P,mBAAmBC,SAAS5Z,QAAQ1d,MAIzI,OAHI0d,EAAQ9T,OAAS,GACjB,UAAkB,iDAAmD5J,EAAO,gBAAiB0d,EAAQvU,KAAI,SAAUqN,GAAS,OAAOA,EAAMxW,SAEtI0d,EAAQ,MAIvBmZ,EAAax6B,UAAU61B,YAAc,SAAUlyB,EAAMk3B,GACjD,IAAKA,EACD,MAAM,IAAIjqB,MAAM,sCAAwCjN,EAAO,KAKnE,IAJA,IAAIu3B,EAAY/8B,KAAK8gB,KAAK4b,GACtBM,EAAYx3B,EAAKsd,MAAM,KACvBma,EAAaD,EAAU5tB,OACvBiO,EAAI,EAAGyI,EAAUiX,EACd1f,EAAI4f,EAAY5f,IACnB,GAAqB,KAAjB2f,EAAU3f,IAAmB,IAANA,EAA3B,CAIA,GAAqB,MAAjB2f,EAAU3f,GAMd,MALI,IAAKyI,EAAQ1L,OACT,MAAM,IAAI3H,MAAM,SAAWjN,EAAO,0BAA4Bu3B,EAAUv3B,KAAO,KACnFsgB,EAAUA,EAAQ1L,YANlB0L,EAAUiX,EAWlB,IAAIG,EAAUF,EAAUl7B,MAAMub,GAAGpK,KAAK,KACtC,OAAO6S,EAAQtgB,MAAQsgB,EAAQtgB,MAAQ03B,EAAU,IAAM,IAAMA,GAE1Db,EArDsB,oWCW7Bc,EAA6B,WAE7B,SAASA,EAAY5xB,GACjB,OAAO4xB,EAAY37B,OAAO+J,GAAU,IA4FxC,OAlFA4xB,EAAY37B,OAAS,SAAU47B,GAC3BA,EAAYD,EAAYE,aAAaD,GAAa,IAAIA,EAAcA,EACpE,IAAI3vB,GAAQ,SAAQ,QAAQ2vB,EAAWD,EAAYt7B,YAMnD,OALAu7B,EAAUppB,QAAU,WAAc,OAAOvG,GACzCA,EAAMC,KAAO0vB,EACb3vB,EAAMovB,mBAAqB,CACvBC,SAAU,eAAgBrvB,EAAMjI,OAE7BiI,GAaX0vB,EAAYt7B,UAAUqX,GAAK,SAAUokB,GACjC,OAAOt9B,OAASs9B,GAAOt9B,KAAK0N,OAAS4vB,GAAOt9B,KAAKsL,QAAUgyB,GAM/DH,EAAYt7B,UAAUyJ,IAAM,WACxB,KAAKtL,KAAKoa,QAAYpa,KAAKoa,kBAAkBpa,KAAKokB,aAC9C,OAAOpkB,KAAKwF,KAChB,IAAIA,EAAOxF,KAAKoa,OAAO9O,MACvB,OAAO9F,EAAOA,EAAO,IAAMxF,KAAKwF,KAAOxF,KAAKwF,MAOhD23B,EAAYt7B,UAAU+b,KAAO,WACzB,OAAQ5d,KAAKoa,QAAUpa,KAAKoa,OAAOwD,QAAW5d,MAWlDm9B,EAAYt7B,UAAUwxB,WAAa,SAAUzyB,GAGzC,QAFAA,GAAO,QAASA,EAAM,CAAEwe,SAAS,EAAMme,aAAc,QAC/Bne,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOiZ,cAAiB,IAExEjxB,QAAO,QAAOpC,KAAKoO,SACnB9E,QAAO,SAAU0F,GAAS,OAAQpO,EAAK28B,cAAgB38B,EAAK28B,aAAa76B,eAAesM,EAAM3D,QASvG8xB,EAAYt7B,UAAU4xB,UAAY,SAAUpoB,EAAIzK,GAE5C,YADa,IAATA,IAAmBA,EAAO,IACrBZ,KAAKyR,KAAOzR,KAAKyR,IAAIgiB,UAAUpoB,EAAIzK,KACxC,SAAK,QAAOZ,KAAKoO,SAAS,QAAO,KAAM/C,KACtCzK,EAAKwe,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOqZ,UAAUpoB,IAE9D8xB,EAAYt7B,UAAUiT,SAAW,WAC7B,OAAO9U,KAAKsL,OAGhB6xB,EAAYE,aAAe,SAAUD,GACjC,OAAO,QAAWA,KAA+C,IAAjCA,EAA2B,iBAG/DD,EAAYK,mBAAqB,SAAUvjB,GAAO,OAAO,QAAWA,EAAa,UAEjFkjB,EAAYM,QAAU,SAAUxjB,GAAO,OAAO,QAASA,EAAwB,qBACxEkjB,EA/FqB,kPCZ5BO,EAAmC,WACnC,SAASA,EAAkBhpB,EAAQsY,EAAQ+O,EAAS4B,GAChD39B,KAAK0U,OAASA,EACd1U,KAAKgtB,OAASA,EACdhtB,KAAK+7B,QAAUA,EACf/7B,KAAK29B,UAAYA,EACjB39B,KAAK49B,MAAQ,GA4EjB,OA1EAF,EAAkB77B,UAAUqT,QAAU,WAClClV,KAAK49B,MAAQ,IAEjBF,EAAkB77B,UAAU6X,SAAW,SAAU0jB,GAC7C,IAAIQ,EAAQ59B,KAAK49B,MACbnwB,EAAQ,WAAmB2vB,GAC3B53B,EAAOiI,EAAMjI,KACjB,KAAK,QAASA,GACV,MAAM,IAAIiN,MAAM,gCACpB,GAAIzS,KAAKgtB,OAAOtqB,eAAe8C,KAAS,QAAQo4B,EAAMjvB,KAAI,QAAK,SAAUnJ,GACrE,MAAM,IAAIiN,MAAM,UAAYjN,EAAO,wBAGvC,OAFAo4B,EAAMn9B,KAAKgN,GACXzN,KAAK69B,QACEpwB,GAEXiwB,EAAkB77B,UAAUg8B,MAAQ,WAchC,IAbA,IAAI1tB,EAAQnQ,KACRqrB,EAAKrrB,KAAM49B,EAAQvS,EAAGuS,MAAO5Q,EAAS3B,EAAG2B,OAAQ+O,EAAU1Q,EAAG0Q,QAC9D+B,EAAa,GACjBC,EAAU,GACVC,EAAsB,GAClBC,EAAW,SAAUz4B,GAAQ,OAAO2K,EAAM6c,OAAOtqB,eAAe8C,IAAS2K,EAAM6c,OAAOxnB,IACtF04B,EAAkB,WACdJ,EAAW1uB,QACXe,EAAMwtB,UAAU58B,SAAQ,SAAUo9B,GAC9B,OAAOA,EAAS,aAAcL,EAAWnvB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,aAI1EkwB,EAAMxuB,OAAS,GAAG,CACrB,IAAI3B,EAAQmwB,EAAM37B,QACdm8B,EAAS3wB,EAAMjI,KACfc,EAASy1B,EAAQC,MAAMvuB,GACvB4wB,EAAYN,EAAQ7vB,QAAQT,GAChC,GAAInH,EAAJ,CACI,IAAIg4B,EAAgBL,EAASG,GAC7B,GAAIE,GAAiBA,EAAc94B,OAAS44B,EACxC,MAAM,IAAI3rB,MAAM,UAAY2rB,EAAS,wBAEzC,IAAIG,EAAsBN,EAASG,EAAS,OACxCG,GAEAv+B,KAAK0U,OAAOkC,cAAc4nB,WAAWD,GAEzCvR,EAAOoR,GAAU3wB,EACjBzN,KAAKy+B,YAAYhxB,GACb4wB,GAAa,GACbN,EAAQve,OAAO6e,EAAW,GAC9BP,EAAWr9B,KAAKgN,OAdpB,CAiBA,IAAIixB,EAAOV,EAAoBI,GAE/B,GADAJ,EAAoBI,GAAUR,EAAMxuB,OAChCivB,GAAa,GAAKK,IAASd,EAAMxuB,OAKjC,OAFAwuB,EAAMn9B,KAAKgN,GACXywB,IACOlR,EAEFqR,EAAY,GACjBN,EAAQt9B,KAAKgN,GAEjBmwB,EAAMn9B,KAAKgN,IAGf,OADAywB,IACOlR,GAEX0Q,EAAkB77B,UAAU48B,YAAc,SAAUhxB,GAChD,IAAIA,EAAMkxB,UAAalxB,EAAMgE,IAA7B,CAEA,IAAImtB,EAAW5+B,KAAK0U,OAAOuC,WAAW0F,MACtCiiB,EAASriB,KAAKqiB,EAASC,eAAer9B,OAAOiM,MAE1CiwB,EAlF2B,sbCQlCoB,EAA+B,WAE/B,SAASA,EAAcpqB,GACnB1U,KAAK0U,OAASA,EACd1U,KAAKgtB,OAAS,GAEdhtB,KAAK29B,UAAY,GACjB39B,KAAKy7B,QAAU,IAAI,IAAaz7B,KAAKgtB,QACrChtB,KAAK+7B,QAAU,IAAI,IAAa/7B,KAAKy7B,QAAS/mB,EAAOE,mBACrD5U,KAAK++B,WAAa,IAAI,IAAkBrqB,EAAQ1U,KAAKgtB,OAAQhtB,KAAK+7B,QAAS/7B,KAAK29B,WAChF39B,KAAKg/B,gBAmJT,OAhJAF,EAAcj9B,UAAUm9B,cAAgB,YAUvBh/B,KAAKi/B,MAAQj/B,KAAK++B,WAAWrlB,SATvB,CACflU,KAAM,GACNiM,IAAK,IACL+I,MAAO,KACPpM,OAAQ,CACJ,IAAK,CAAE5J,MAAO,KAAM0K,KAAM,OAAQye,SAAS,IAE/CgR,UAAU,KAGRvE,UAAY,MAGtB0E,EAAcj9B,UAAUqT,QAAU,WAC9B,IAAI/E,EAAQnQ,KACZA,KAAK++B,WAAW7pB,UAChBlV,KAAK29B,UAAY,GACjB39B,KAAK0Q,MAAM3P,SAAQ,SAAU0M,GAAS,OAAO0C,EAAMO,IAAIjD,IAAU0C,EAAMquB,WAAW/wB,OAgCtFqxB,EAAcj9B,UAAUq9B,gBAAkB,SAAUf,GAEhD,OADAn+B,KAAK29B,UAAUl9B,KAAK09B,GACb,YACH,QAAWn+B,KAAK29B,UAAhB,CAA2BQ,IAC7B76B,KAAKtD,OAWX8+B,EAAcj9B,UAAU+b,KAAO,WAC3B,OAAO5d,KAAKi/B,OAchBH,EAAcj9B,UAAU6X,SAAW,SAAUylB,GACzC,OAAOn/B,KAAK++B,WAAWrlB,SAASylB,IAGpCL,EAAcj9B,UAAUu9B,gBAAkB,SAAU3xB,GAChD,IAAI0C,EAAQnQ,KACRyb,EAAMzb,KAAK0Q,MAAM/B,KAAI,SAAUyO,GAAK,OAAOA,EAAEpJ,aAC7CqrB,EAAc,SAAUrS,GACxB,IAAIsS,EAAY7jB,EAAInS,QAAO,SAAU8T,GAAK,OAAqC,IAA9B4P,EAAO9e,QAAQkP,EAAEhD,WAClE,OAA4B,IAArBklB,EAAUlwB,OAAekwB,EAAYA,EAAUl9B,OAAOi9B,EAAYC,KAEzE12B,EAAWy2B,EAAY,CAAC5xB,IACxB8xB,EAAe,CAAC9xB,GAAOrL,OAAOwG,GAAUoX,UAW5C,OAVAuf,EAAax+B,SAAQ,SAAUksB,GAC3B,IAAI2R,EAAWzuB,EAAMuE,OAAOuC,WAAW0F,MAEvCiiB,EACKjiB,QACArT,QAAO,QAAO,QAAS2jB,IACvBlsB,SAAQ,SAAUwb,GAAQ,OAAOqiB,EAASY,WAAWjjB,aAEnDpM,EAAM6c,OAAOC,EAAOznB,SAExB+5B,GAWXT,EAAcj9B,UAAU28B,WAAa,SAAU/B,GAC3C,IAAIxP,EAASjtB,KAAK0Q,IAAI+rB,GACtB,IAAKxP,EACD,MAAM,IAAIxa,MAAM,sCAAwCgqB,GAC5D,IAAIgD,EAAqBz/B,KAAKo/B,gBAAgBnS,EAAOjZ,WAIrD,OAHAhU,KAAK29B,UAAU58B,SAAQ,SAAUo9B,GAC7B,OAAOA,EAAS,eAAgBsB,EAAmB9wB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,YAE5E+xB,GAEXX,EAAcj9B,UAAU6O,IAAM,SAAU+rB,EAAaC,GACjD,IAAIvsB,EAAQnQ,KACZ,GAAyB,IAArBgC,UAAUoN,OACV,OAAOmE,OAAOC,KAAKxT,KAAKgtB,QAAQre,KAAI,SAAUnJ,GAAQ,OAAO2K,EAAM6c,OAAOxnB,GAAMkI,QACpF,IAAIgyB,EAAQ1/B,KAAKy7B,QAAQ3a,KAAK2b,EAAaC,GAC3C,OAAQgD,GAASA,EAAMhyB,MAAS,MAYpCoxB,EAAcj9B,UAAUiV,UAAY,SAAU6oB,EAAUC,GACpD,OAAO5/B,KAAK+7B,QAAQA,QAAQ4D,EAAUC,IAEnCd,EA7JuB,2SCsB9Be,EAA6B,WAe7B,SAASA,EAAYC,EAAgBC,EAAaC,EAASC,GACvDjgC,KAAK8/B,eAAiBA,EACtB9/B,KAAK+/B,YAAcA,EACnB//B,KAAK+/B,YAAcA,EACnB//B,KAAKggC,SAAU,QAAO,GAAIA,GAAW,IACrChgC,KAAKigC,UAAW,QAAO,GAAIA,GAAY,IACvCjgC,KAAKkgC,YAAcJ,EAAerE,QAAQ3a,KAAKif,EAAa//B,KAAKigC,SAASE,UAsF9E,OAnFAN,EAAYh+B,UAAU2D,KAAO,WACzB,OAAQxF,KAAKkgC,aAAelgC,KAAKkgC,YAAY16B,MAASxF,KAAK+/B,aAG/DF,EAAYh+B,UAAU4qB,WAAa,WAC/B,OAAOzsB,KAAK+/B,aAGhBF,EAAYh+B,UAAUuM,OAAS,WAC3B,OAAOpO,KAAKggC,SAGhBH,EAAYh+B,UAAU4W,OAAS,WAC3B,OAAOzY,KAAKkgC,aAGhBL,EAAYh+B,UAAU4L,MAAQ,WAC1B,OAAOzN,KAAKkgC,aAAelgC,KAAKkgC,YAAYxyB,MAGhDmyB,EAAYh+B,UAAU1B,QAAU,WAC5B,OAAOH,KAAKigC,UAGhBJ,EAAYh+B,UAAUu+B,OAAS,WAC3B,SAAUpgC,KAAKkgC,cAAelgC,KAAKkgC,YAAYxyB,OAGnDmyB,EAAYh+B,UAAUw+B,MAAQ,WAC1B,OAAQrgC,KAAKqF,SAGjBw6B,EAAYh+B,UAAUwD,MAAQ,WAC1B,IAAIq3B,EAAO18B,KAAKG,UAAUggC,SAC1B,IAAKngC,KAAKkgC,aAAiBxD,EAAM,CAC7B,IAAIF,EAAYE,EAAKl3B,KAAOk3B,EAAKl3B,KAAOk3B,EACxC,MAAO,sBAAwB18B,KAAKwF,OAAS,iBAAmBg3B,EAAY,IAEhF,OAAKx8B,KAAKkgC,YAELlgC,KAAKkgC,YAAYxyB,UAAtB,EACW,UAAY1N,KAAKwF,OAAS,8BAF1B,kBAAoBxF,KAAKwF,OAAS,KAIjDq6B,EAAYh+B,UAAUiT,SAAW,WAC7B,MAAO,IAAM9U,KAAKwF,OAAS,KAAM,QAAUxF,KAAKoO,WAQpDyxB,EAAYh+B,UAAUy+B,UAAY,SAAU7yB,GACxC,OAAO,IAAIoyB,EAAY7/B,KAAK8/B,eAAgBryB,EAAOzN,KAAKggC,QAAShgC,KAAKigC,WAS1EJ,EAAYh+B,UAAU0+B,WAAa,SAAUnyB,EAAQ2G,QACjC,IAAZA,IAAsBA,GAAU,GACpC,IAAI8d,EAAY9d,EAAU3G,GAAS,QAAO,GAAIpO,KAAKggC,QAAS5xB,GAC5D,OAAO,IAAIyxB,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAalN,EAAW7yB,KAAKigC,WASlFJ,EAAYh+B,UAAU2+B,YAAc,SAAUrgC,EAAS4U,QACnC,IAAZA,IAAsBA,GAAU,GACpC,IAAI0rB,EAAU1rB,EAAU5U,GAAU,QAAO,GAAIH,KAAKigC,SAAU9/B,GAC5D,OAAO,IAAI0/B,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAa//B,KAAKggC,QAASS,IAGhFZ,EAAYa,MAAQ,SAAUzmB,GAC1B,OAAOA,GAAOA,EAAIxM,SAAU,QAASwM,EAAIxM,SAAW,QAASwM,EAAIxM,SAAU,QAASwM,EAAIxM,MAAMjI,QAE3Fq6B,EA3GqB,iYCf5Bc,EAA6B,WAC7B,SAASA,EAAY1U,GACjBjsB,KAAKisB,WAAaA,EA2EtB,OAzEA0U,EAAY9+B,UAAU++B,mBAAqB,SAAUC,GACjD,IAAI1wB,EAAQnQ,KAEZ,OADmBA,KAAKisB,WAAWvX,OAAOoY,kBACtB9iB,WACf82B,WAAWD,GACXlyB,KAAI,SAAUO,GAAQ,OAAOiB,EAAM4wB,WAAW7xB,MAC9CN,OAAO,KAAS,IAChBtF,OAAO,OAWhBq3B,EAAY9+B,UAAUk/B,WAAa,SAAUC,GACzC,IAAI/U,EAAajsB,KAAKisB,WAClBvd,EAAcud,EAAWvd,cAEzBuyB,EAAgBjhC,KAAKkhC,iBAAiBF,EAAUtyB,EAAaud,GACjE,IAAKgV,EACD,MAAO,GACX,IA4DWE,EA5DPC,EAAkB,CAClBnV,WAAYA,EACZnG,QAASmG,EAAW9rB,UAAU2lB,SAkBlC,OAAOmb,EACFtyB,KAjBqB,SAAUkF,GAMhC,OAJcA,EAAKqP,QAAQxU,EAAaud,GAEZ+U,EAASK,kBAAkB77B,MAElCmJ,KAAI,SAAUJ,GAC/B,IAAI0xB,GAAW,QAAO,CAClB38B,KAAMuQ,EAAKvQ,KACXg+B,UAAW,CAAEN,SAAUA,EAASx7B,KAAMqL,QAAStC,IAChD6yB,GACC3zB,EAAQuzB,EAASK,kBAAkBv+B,QAAU,UAA4ByL,EAAKd,MAAMC,KAAO,KAC3F6zB,EAAiB,IAAI,IAAetV,EAAYxe,EAAOoG,EAAMosB,GACjE,MAAO,CAAEpsB,KAAMA,EAAMtF,KAAMA,EAAMgzB,eAAgBA,SAKpD3yB,OAAO,KAAS,IAChB4c,MAqCM2V,EArCSH,EAASQ,iBAsCR,IAArBL,IAA+BA,GAAmB,GAC/C,SAA+B1O,EAAGlV,GACrC,IAAIkkB,EAASN,GAAoB,EAAI,EACjCO,GAAcjP,EAAElkB,KAAKd,MAAMtF,KAAKiH,OAASmO,EAAEhP,KAAKd,MAAMtF,KAAKiH,QAAUqyB,EACzE,OAAsB,IAAfC,EAAmBA,EAAankB,EAAE1J,KAAKzM,SAAWqrB,EAAE5e,KAAKzM,YAzC3DuH,KAAI,SAAU8E,GAAS,OAAOA,EAAM8tB,mBAa7CZ,EAAY9+B,UAAUq/B,iBAAmB,SAAUF,EAAUtyB,EAAaud,GACtE,IAAI0V,EAAWX,EAASY,YAAc,WAElC/6B,EAAe7G,KAAKisB,WAAWvX,OAAOoY,kBAE1C,OADiB6U,EAAW,CAAC96B,GAAgB,CAAC7G,KAAKisB,WAAYplB,IAE1D8H,KAAI,SAAUkzB,GAAO,OAAOA,EAAIC,SAASd,EAASx7B,SAClD8D,QAAO,QAAgB,KAAS,uBAAyB03B,EAASx7B,OAClEoJ,OAAO,KAAS,IAChBtF,QAAO,SAAUuK,GAAQ,OAAOA,EAAKqP,QAAQxU,EAAaud,OAE5D0U,EA7EqB,+PCDzB,SAASoB,EAAWt0B,EAAOu0B,EAAW/V,GACzC,IAAIgW,GAAU,QAASD,GAAa,CAACA,GAAaA,EAYlD,UADe,QAAWC,GAAWA,EAVrC,SAAoBhV,GAEhB,IADA,IAAIiV,EAAcD,EACT5kB,EAAI,EAAGA,EAAI6kB,EAAY9yB,OAAQiO,IAAK,CACzC,IAAIwF,EAAO,IAAI,KAAKqf,EAAY7kB,IAChC,GAAKwF,GAAQA,EAAKK,QAAQ+J,EAAOznB,QAAYqd,GAAQqf,EAAY7kB,KAAO4P,EAAOznB,KAC3E,OAAO,EAGf,OAAO,IAGMiI,EAAOwe,GAK5B,IAAIkW,EAAgC,WAChC,SAASA,EAAeC,EAASC,EAAW7hC,EAAU8hC,EAAeC,EAAwBpiC,QACzE,IAAZA,IAAsBA,EAAU,IACpCH,KAAKoiC,QAAUA,EACfpiC,KAAKqiC,UAAYA,EACjBriC,KAAKQ,SAAWA,EAChBR,KAAKsiC,cAAgBA,EACrBtiC,KAAKuiC,uBAAyBA,EAC9BviC,KAAKwiC,YAAc,EACnBxiC,KAAKyiC,eAAgB,EACrBziC,KAAKoH,SAAWjH,EAAQiH,UAAY,EACpCpH,KAAKsD,KAAOnD,EAAQmD,MAAQ,KAC5BtD,KAAK0iC,YAAcviC,EAAQuiC,YAqF/B,OApEAP,EAAetgC,UAAU8gC,eAAiB,SAAUC,EAAOZ,EAAW/V,GAClE,IAAkB,IAAd+V,EACA,OAAOY,EACX,IAAIpN,EAAWoN,EAAMt5B,QAAO,SAAUiF,GAAQ,OAAOwzB,EAAWxzB,EAAKd,MAAOu0B,EAAW/V,MACvF,OAAOuJ,EAASpmB,OAASomB,EAAW,MAgBxC2M,EAAetgC,UAAUghC,yBAA2B,WAChD,OAAO,QAAO7iC,KAAKoiC,QAAQp4B,WAAW84B,iBAAiB,WAAc,OAAO,MAiBhFX,EAAetgC,UAAUkhC,kBAAoB,SAAUr0B,EAAaud,GAChE,IAAI9b,EAAQnQ,KACR8P,GAAW,QAAO9P,KAAK6iC,2BAA4B7iC,KAAKsiC,eAE5D,OADY,QAAOtiC,KAAKoiC,QAAQp4B,WAAW84B,iBAC9Bl0B,QAAO,SAAUo0B,EAAIC,GAG9B,IAAIC,EAAcD,EAASngC,QAAU,UACjCqF,EAAOuG,EAAYu0B,EAASz9B,OAAS,GACrCo9B,EAAQM,EAAc/6B,EAAO,EAAC,QAAKA,IAEvC,OADA66B,EAAGC,EAASz9B,MAAQ2K,EAAMwyB,eAAeC,EAAO9yB,EAASmzB,EAASz9B,MAAOymB,GAClE+W,IACR,KAQPb,EAAetgC,UAAUqhB,QAAU,SAAUxU,EAAaud,GACtD,IAAI/I,EAAUljB,KAAK+iC,kBAAkBr0B,EAAaud,GAGlD,OADiB,QAAO/I,GAASigB,MAAM,MACnBjgB,EAAU,MAElCif,EAAetgC,UAAU28B,WAAa,WAClCx+B,KAAKuiC,uBAAuBviC,MAC5BA,KAAKyiC,eAAgB,GAElBN,EAjGwB,GAqG5B,SAASiB,EAAUtP,EAAUhH,EAAmBuV,GAEnD,IACIgB,GADoBvP,EAASwP,iBAAmBxP,EAASwP,kBAAoB,IACnDjB,EAAU78B,MAAQ,GAC5C+9B,GAAe,QAAWF,GAG9B,SAASG,EAAmBC,EAAajjC,EAAUL,QAC/B,IAAZA,IAAsBA,EAAU,IACpC,IAAI6pB,EAAiB,IAAImY,EAAerV,EAAmBuV,EAAW7hC,EAAUijC,EAAaF,EAAcpjC,GAE3G,OADAkjC,EAAM5iC,KAAKupB,GACJA,EAAewU,WAAWl7B,KAAK0mB,GAE1C,OAPA8J,EAASuO,EAAU78B,MAAQg+B,EAOpBA,2FCpJX,IAAIE,EAQAC,2BAPJ,SAAWD,GACPA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAAyB,IAAI,GAAK,MACtDA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA2B,MAAI,GAAK,QAL5D,CAMGA,IAAwBA,EAAsB,KAEjD,SAAWC,GACPA,EAAoBA,EAAgC,WAAI,GAAK,aAC7DA,EAAoBA,EAA2B,MAAI,GAAK,QAF5D,CAGGA,IAAwBA,EAAsB,8HCP7CC,2LACJ,SAAWA,GAOPA,EAAWA,EAAuB,WAAI,GAAK,aAM3CA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAoB,QAAI,GAAK,UAWxCA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAkB,MAAI,GAAK,QApC1C,CAqCGA,IAAeA,EAAa,KAG/B,IAAIv4B,EAAK,EACLw4B,EAA2B,WAC3B,SAASA,EAAU30B,EAAM40B,EAASC,GAE9B/jC,KAAKmb,IAAM9P,IACXrL,KAAKkP,KAAOA,EACZlP,KAAK8jC,QAAUA,EACf9jC,KAAK+jC,OAASA,EA4DlB,OAzDAF,EAAUG,mBAAqB,SAAU/pB,GACrC,OAAOA,GAA2B,mBAAbA,EAAIlP,OAAuB,IAAAmO,IAAG2qB,EAAH,CAAc5pB,EAAIyN,uBAGtEmc,EAAUI,WAAa,SAAUF,EAAQ5jC,GACrC,IACI+jC,EAAY,IAAIL,EAAUD,EAAWO,WAD3B,+DACgDJ,GAI9D,OAHI5jC,GAAWA,EAAQikC,aACnBF,EAAUE,YAAa,GAEpBF,GAGXL,EAAUO,WAAa,SAAUL,GAC7B,OAAOF,EAAUI,WAAWF,EAAQ,CAAEK,YAAY,KAGtDP,EAAUQ,QAAU,SAAUN,GAE1B,OAAO,IAAIF,EAAUD,EAAWU,QADlB,6BACoCP,IAGtDF,EAAUzK,QAAU,SAAU2K,GAE1B,OAAO,IAAIF,EAAUD,EAAWW,QADlB,6BACoCR,IAGtDF,EAAUW,QAAU,SAAUT,GAE1B,OAAO,IAAIF,EAAUD,EAAWa,QADlB,kCACoCV,IAGtDF,EAAUa,QAAU,SAAUX,GAE1B,OAAO,IAAIF,EAAUD,EAAWe,MADlB,yBACkCZ,IAWpDF,EAAUe,UAAY,SAAUb,GAC5B,OAAO,IAAA7qB,IAAG2qB,EAAH,CAAcE,GAAUA,EAASF,EAAUa,QAAQX,IAE9DF,EAAUhiC,UAAUiT,SAAW,WAC3B,IAA6BqkB,EACzB4K,GADyB5K,EACHn5B,KAAK+jC,SADgB5K,EAAErkB,WAAavB,OAAO1R,UAAUiT,SAAWqkB,EAAErkB,YAAa,QAAUqkB,GAE/G9N,EAAKrrB,KACT,MAAO,6BADcqrB,EAAGlQ,IACoB,UADRkQ,EAAGnc,KACwB,cADRmc,EAAGyY,QAC+B,aAAeC,EAAS,KAErHF,EAAUhiC,UAAUgjC,UAAY,WAC5B,OAAO,SAAO,QAAgB7kC,MAAO,CAAE0nB,qBAAsB1nB,QAE1D6jC,EAlEmB,oMC1C1BiB,EAEA,SAA6Bt/B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QACpG,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5CllC,KAAKwF,KAAOA,EACZxF,KAAK4hC,UAAYA,EACjB5hC,KAAK+kC,UAAYA,EACjB/kC,KAAKqhC,kBAAoBA,EACzBrhC,KAAKwhC,YAAcA,EACnBxhC,KAAKglC,iBAAmBA,EACxBhlC,KAAKilC,gBAAkBA,EACvBjlC,KAAKklC,YAAcA,gsBCVvBC,EAAiB,CACjBrf,QAAS,KACTmG,WAAY,KACZqV,UAAW,GACXh+B,KAAM,MAEN8hC,EAAgC,WAChC,SAASA,EAAenZ,EAAYoZ,EAAcrb,EAAgB7pB,GAC9D,IAAIgQ,EAAQnQ,KACZA,KAAKisB,WAAaA,EAClBjsB,KAAKqlC,aAAeA,EACpBrlC,KAAKgqB,eAAiBA,EACtBhqB,KAAKG,QAAUA,EACfH,KAAKslC,aAAe,WAAc,OAAOn1B,EAAMjB,KAAK0yB,YAAc,UAA4BzxB,EAAMhQ,QAAQ8rB,WAAWsZ,YACvHvlC,KAAKG,SAAU,QAASA,EAASglC,GACjCnlC,KAAKkP,KAAO8a,EAAeqY,UAyK/B,OArJA+C,EAAenJ,MAAQ,SAAUoH,EAAOmC,GAGpC,OAAOnC,EAAMz0B,QADU,SAAU8vB,EAAM+G,GAAY,OAAO/G,EAAK3zB,MAAK,WAAc,OAAO06B,EAASC,kBAC5DF,GAAW,gBAarDJ,EAAeO,YAAc,SAAUtC,EAAOuC,GAC1C,IAAK,IAAI32B,EAAM,EAAGA,EAAMo0B,EAAMj0B,OAAQH,IAAO,CACzC,IAAIib,EAAamZ,EAAMp0B,GAAKy2B,aAC5B,IAAI,QAAUxb,GAAa,CACvB,IAAI2b,EAAiBxC,EAAMvhC,MAAMmN,EAAM,GACvC,OAAOm2B,EAAenJ,MAAM4J,EAAgB3b,GAAYnf,KAAK66B,IAGrE,OAAOA,KAKXR,EAAeU,YAAc,SAAUzC,GACnCA,EAAMtiC,SAAQ,SAAU8S,GAAQ,OAAOA,EAAK6xB,iBAEhDN,EAAevjC,UAAUkkC,SAAW,SAAU7Y,GAC1CltB,KAAKisB,WAAWvX,OAAOmC,aAAamvB,qBAApChmC,CAA0DktB,IAE9DkY,EAAevjC,UAAU6jC,WAAa,WAClC,IAAIv1B,EAAQnQ,KACR6T,EAAO7T,KAAKgqB,eAChB,IAAInW,EAAK4uB,cAAT,CAEA,IAAIwD,EAAajmC,KAAKkmC,yBACtB,GAAID,EACA,OAAOA,EACX,IAAI9lC,EAAUH,KAAKG,QACnB,yBAA0BH,KAAMA,KAAKisB,WAAY9rB,GACjD,IAEIgmC,EAAc,SAAUjZ,GAAO,OAAOrZ,EAAKwuB,UAAU4C,gBAAgB90B,EAA/B0D,CAAsCqZ,IAC5EkZ,EAAe,SAAU9/B,GAAU,OAAOuN,EAAKwuB,UAAU2C,iBAAiB70B,EAAhC0D,CAAuCvN,IACrF,IACI,IAAIA,EALkCuN,EAAKrT,SAASuB,KAAK5B,EAAQmD,KAAM6M,EAAM8b,WAAY9b,EAAMk1B,cAM/F,OAAKrlC,KAAKkP,KAAKg2B,cAAe,QAAU5+B,GAC7BA,EAAO+b,OANH,SAAU6K,GAAO,OAAO,cAAoBA,GAAK2X,eAM1B95B,KAAKq7B,EAAcD,GAG9CC,EAAa9/B,GAG5B,MAAO4mB,GAEH,OAAOiZ,EAAY,cAAoBjZ,IAE3C,QACQrZ,EAAK6uB,eAAiB7uB,EAAK2uB,aAAe3uB,EAAK6uB,aAC/C7uB,EAAK2qB,gBAajB4G,EAAevjC,UAAUwkC,iBAAmB,SAAU//B,GAClD,IAAI6J,EAAQnQ,KAEZ,OADiBA,KAAKkmC,4BAIlB,QAAU5/B,GAEHA,EAAOyE,MAAK,SAAU/G,GAAO,OAAOmM,EAAMk2B,iBAAiBriC,OAEtE,qBAAsBsC,EAAQtG,KAAKisB,WAAYjsB,KAAKG,UAErC,IAAXmG,EAEO,YAAkB,2BAA2Bu+B,aAEpC,IAAA3rB,IAAG,IAEnBotB,CAAchgC,GAEP,eAAqBA,GAAQu+B,iBAFxC,KASJO,EAAevjC,UAAUqkC,uBAAyB,WAC9C,IAAIxxB,EAAS1U,KAAKisB,WAAWvX,OAE7B,OAAIA,EAAOqkB,UACA,YAAkB,sBAAwBrkB,EAAOyG,IAAM,gCAAgC0pB,YAE9F7kC,KAAKisB,WAAWsa,SACT,cAAoB1B,YAI3B7kC,KAAKslC,eAEE,eAAqBtlC,KAAKG,QAAQ2lB,WAAW+e,iBAFxD,GAKJO,EAAevjC,UAAUiT,SAAW,WAChC,IAAe3U,EAANH,KAAmBG,QAAS6pB,EAA5BhqB,KAAgDgqB,eACrDzpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAWwkB,EAAexpB,UAC/M,OAAOD,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,IAMlE4/B,EAAeoB,cAAgB,SAAU3yB,GAAQ,OAAO,SAAUvN,GAC9D,OAAOuN,EAAKwyB,iBAAiB//B,KAMjC8+B,EAAeqB,oBAAsB,SAAU5yB,GAAQ,OAAO,SAAUvN,IACpE,QAAUA,IAAWA,EAAO+b,OAAM,SAAU6K,GAAO,OAAOrZ,EAAKkyB,SAAS,cAAoB7Y,SAOhGkY,EAAesB,UAAY,SAAU7yB,GAAQ,OAAO,SAAUxO,GAAS,OAAOwO,EAAKkyB,SAAS1gC,KAC5F+/B,EAAeuB,aAAe,SAAU9yB,GAAQ,OAAO,SAAUxO,GAAS,OAAO,QAAgBA,KACjG+/B,EAAewB,YAAc,SAAU/yB,GAAQ,OAAO,SAAUxO,GAC5D,MAAMA,IAEH+/B,EAlLwB,qgBCXnC,SAASyB,EAAmBj3B,GACxBA,EAAMk3B,cAAc,cAAoB,IAAUl3B,EAAM8E,QAAS,IACjE9E,EAAMk3B,cAAc,cAAoB,IAAYl3B,GAAQ,IAC5DA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,GAAQ,IAChEA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,EAAMxB,UAAW,IACzEwB,EAAMuc,WAAWprB,SAAQ,SAAU0M,GAC/BmC,EAAMk3B,cAAc,cAAoB,UAAWr5B,GAAQA,MAG5D,IAGHs5B,EAAoB,CAAC,eAAgB,KACrCC,GAAe,QAAQD,GAKhBE,EAAqB,SAAUr3B,GACtC,IAAIgzB,GAAQ,QAAOhzB,EAAMlB,eAAeE,OAAO,KAAS,IAAIA,OAAO,KAAO,IAEtEs4B,EAA4B,SAAU3pB,GACtC,OAAOypB,EAAazpB,EAAEgE,OAAS,cAAoBhE,EAAEgE,MAAO,MAAQhE,GAExEqlB,EAAM7hC,SAAQ,SAAUwN,GACpBA,EAAKwJ,YAAcxJ,EAAKwJ,YAAYpJ,IAAIu4B,+MCnB5CC,EAAiB,SAAUv3B,GAC3B,IAAIw3B,EAAWx3B,EAAMuf,KAAKkY,WAC1B,GAAKD,EAAL,CAEA,IAAI3uB,EAAS7I,EAAM8E,OAAOmC,aAW1B,OAAI,QAAWuwB,GACJ,YAAiBA,EAASx3B,IAAQ7E,KAAKq7B,GAE3CA,EAAagB,GAbpB,SAAShB,EAAa9/B,GAClB,GAAKA,EAEL,OAAIA,aAAkB,IACXA,GACP,QAASA,GACFmS,EAAOpS,OAAOC,EAAQsJ,EAAMxB,SAAUwB,EAAMzP,WACnDmG,EAAc,OAAKA,EAAe,OAC3BmS,EAAOpS,OAAOC,EAAc,OAAKsJ,EAAMuf,KAAM7oB,EAAe,QAAKsJ,EAAMxB,SAAUwB,EAAMzP,gBADlG,IChBR,SAASmnC,EAAwB3zB,GAC7B,OAAO,SAAUsY,EAAYxe,GAGzB,OAAO85B,EAFM95B,EAAMuG,UACCL,IACNsY,EAAYxe,IAYlC,IAAI+5B,EAAaF,EAAwB,UAarCG,EAAeH,EAAwB,YAavCI,EAAcJ,EAAwB,2MC7C/BK,EAAwB,IAU/BC,EAAmB,SAAUh4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,QAAS9nB,GAAO7E,KAAK,OAcnF88B,EAAmB,SAAUj4B,EAAOnC,GACpC,OAAO,IAAI,IAAemC,EAAMlB,cAAcygB,IAAIpb,WAAWtG,EAAMuG,WAAW0jB,YAAY,OAAQ9nB,GAAO7E,KAAK,OAe9G+8B,EAAmB,SAAUl4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,OAAQ9nB,GAAO7E,KAAK,OCnClFg9B,EAAoB,SAAU9b,GAC9B,IAAIllB,EAAK,OACLihC,EAAgB/b,EAAWzR,MAAM,YACrC,GAAKwtB,EAAc54B,OAEnB,OAAOrI,EAAG0U,IAAIusB,EAAcr5B,KAAI,SAAUmL,GAAQ,OAAO/S,EAAGkJ,KAAK6J,EAAKuB,YAAatQ,KAAK,OAexFk9B,EAAgB,SAAUhc,GAC1B,IAAI+b,EAAgB/b,EAAWzR,MAAM,YACjC0tB,EAAejc,EAAWzR,MAAM,WACpC,GAAKwtB,EAAc54B,QAAW84B,EAAa94B,OAA3C,CAEA,IAAItI,EAAQmlB,EAAWvX,OAAOqC,YAC9BmxB,EAAannC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMshC,qBAAqBD,MACvEH,EAAcjnC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMuhC,mBAAmBF,MACtErhC,EAAM8lB,SCzBN0b,EAAoB,SAAU14B,GAC9B,IAAI0I,EAAU1I,EAAM8E,OAAO4D,QAOvBiwB,EAAyB,WAErBjwB,EAAQ2T,aAAerc,IACvB0I,EAAQ2T,WAAa,OAE7Brc,EAAM7B,UAAU,IAXW,WACvBuK,EAAQ0T,sBAAsBxG,QAAQ5V,GACtC0I,EAAQwa,SAAWljB,EAAMmjB,MACzBza,EAAQwN,QAAUxN,EAAQwa,SAASplB,MACnC,QAAKkC,EAAMxB,SAAUkK,EAAQlK,UAOS,CAAEhH,SAAU,MACtDwI,EAAMnM,QAAQsH,KAAKw9B,EAAwBA,ICtB3CC,EAAY,SAAUvc,GACtB,IAAI9rB,EAAU8rB,EAAW9rB,UACrBsY,EAASwT,EAAWvX,OAAOmC,aAC3B6B,EAAauT,EAAWvX,OAAOyH,UAKnC,GAAuB,QAAnBhc,EAAQ4e,QAAoB5e,EAAQ0V,UAAY4C,EAAOqa,SAASsH,UAAW,CAC3E,IAAIqO,EAAa,CAAE1zB,QAA8B,YAArB5U,EAAQ0V,UACpC6C,EAAWjY,KAAKgY,EAAOqa,SAASsH,UAAU3oB,IAAKgH,EAAOrK,OAAQq6B,GAElE/vB,EAAW0D,QAAO,kWCPtB,SAASssB,EAAY94B,GACjB,IAAI+4B,EAAgB/4B,EAAMg5B,iBAC1B,GAAKD,EAAL,CAEAtgC,EAAA,0BAA6BuH,GAC7B,IAAIi5B,EAAUj5B,EAAM8E,OAAO4D,QAAQ2T,WAOnC,MAHsB,kBAAlB0c,GAAqCE,GACrCA,EAAQC,QAEL,cAAoBjE,aCf/B,SAASkE,EAAsBn5B,GAC3B,IAAKA,EAAMywB,QACP,MAAM,IAAI5tB,MAAM7C,EAAMvK,QAAQyP,YAG/B,ICaIk0B,EAAmB,CAC1BnzB,UAAU,EACVsqB,SAAU,KACV/gB,SAAS,EACT6pB,QAAQ,EACRC,QAAQ,EACRC,WAAW,EACXC,OAAQ,GACRtjB,QAAS,WAAc,OAAO,MAC9B/G,OAAQ,WAaRsqB,EAAmC,WAEnC,SAASA,EAAkBC,GAEvBtpC,KAAKupC,iBAAmB,EAExBvpC,KAAKwpC,YAAc,GAEnBxpC,KAAKsjC,iBAAmB,GAExBtjC,KAAKypC,eAAiB,GACtBzpC,KAAKspC,QAAUA,EACftpC,KAAK8G,MAAQwiC,EAAQvyB,YACrB/W,KAAK0pC,mBAAqB,GAC1B1pC,KAAKgK,YAAc,SAAqB,QAAIhK,MAAO,IAAI,QAAIA,MAAO,CAC9D,kBACA,eACA,gBACA,aACA,aAEJA,KAAK2pC,mBACL3pC,KAAK4pC,oBACL5pC,KAAK6pC,+BACLP,EAAQhxB,QAAQ0T,sBAAsBzG,QAAQ0hB,GAuLlD,OA9JAoC,EAAkBxnC,UAAUioC,SAAW,SAAUh6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkO,SAAW,SAAUD,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkoC,QAAU,SAAUj6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUmoC,OAAS,SAAUl6B,EAAUtP,EAAUL,KAInEkpC,EAAkBxnC,UAAUooC,SAAW,SAAUn6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUqoC,QAAU,SAAUp6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUsoC,SAAW,SAAUr6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkM,UAAY,SAAU+B,EAAUtP,EAAUL,KAItEkpC,EAAkBxnC,UAAUuoC,QAAU,SAAUt6B,EAAUtP,EAAUL,KAOpEkpC,EAAkBxnC,UAAUqT,QAAU,SAAUR,IAC5C,QAAO1U,KAAKsjC,kBAAkBviC,SAAQ,SAAUspC,GAC5C,OAAOA,EAAWtpC,SAAQ,SAAU8S,GAChCA,EAAK4uB,eAAgB,GACrB,QAAW4H,EAAYx2B,UAenCw1B,EAAkBxnC,UAAUL,OAAS,SAAUyyB,EAAUzH,GACrD,OAAO,IAAI,IAAWyH,EAAUzH,EAAaxsB,KAAKspC,UAGtDD,EAAkBxnC,UAAU+nC,kBAAoB,WAC5C,IAAIU,EAAQ,IACRC,EAAK,IACLC,EAAQxqC,KAAKypC,eACbgB,GAAc,EACdC,GAAc,EAClB1qC,KAAK2qC,aAAa,WAAYL,EAAMM,OAAQ,EAAGJ,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG3D,YAAa8D,GAC9G1qC,KAAK2qC,aAAa,WAAYL,EAAMO,OAAQ,EAAGL,EAAMrb,IACrDnvB,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,EAAGN,EAAMrb,IACjDnvB,KAAK2qC,aAAa,SAAUL,EAAMQ,IAAK,IAAKN,EAAMv8B,SALV,GAMxCjO,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrV,UACpDn1B,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,IAAKN,EAAMre,UACnDnsB,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrb,IACpDnvB,KAAK2qC,aAAa,YAAaL,EAAMS,QAAS,EAAGP,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,GAC9G1qC,KAAK2qC,aAAa,UAAWL,EAAM3F,MAAO,EAAG6F,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,IAG9GrB,EAAkBxnC,UAAU8nC,iBAAmB,WAC3C,IAAIqB,EAAQ,UAA2BrhB,EAAa,eACpD3pB,KAAKirC,gBAAgB,KAAMthB,GAC3B3pB,KAAKirC,gBAAgB,OAAQthB,GAC7B3pB,KAAKirC,gBAAgB,UAAWD,GAChChrC,KAAKirC,gBAAgB,WAAYD,GACjChrC,KAAKirC,gBAAgB,WAAYD,IAGrC3B,EAAkBxnC,UAAU8oC,aAAe,SAAUnlC,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QAC5H,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5C,IAAI7C,EAAY,IAAI,IAAoB78B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,GACvIllC,KAAKwpC,YAAY/oC,KAAK4hC,IACtB,QAAUriC,KAAMA,KAAMqiC,IAG1BgH,EAAkBxnC,UAAUi/B,WAAa,SAAUD,GAI/C,QAH0B,QAAUA,GAC9B7gC,KAAKwpC,YAAYlgC,QAAO,SAAU4F,GAAQ,OAAOA,EAAK0yB,YAAcf,KACpE7gC,KAAKwpC,YAAY1nC,SACI0pB,MAAK,SAAUiH,EAAGlV,GACzC,IAAI2tB,EAAazY,EAAEmP,UAAYrkB,EAAEqkB,UACjC,OAAsB,IAAfsJ,EAAmBzY,EAAEsS,UAAYxnB,EAAEwnB,UAAYmG,MAgB9D7B,EAAkBxnC,UAAUopC,gBAAkB,SAAUzlC,EAAM2lC,GAC1DnrC,KAAKypC,eAAejkC,GAAQ,CAAEA,KAAMA,EAAM1C,MAAOqoC,IAIrD9B,EAAkBxnC,UAAUihC,cAAgB,WACxC,OAAO9iC,KAAKypC,gBAGhBJ,EAAkBxnC,UAAUigC,SAAW,SAAUnuB,GAC7C,OAAO3T,KAAKsjC,iBAAiB3vB,IAGjC01B,EAAkBxnC,UAAUgoC,6BAA+B,WACvD,IAAIuB,EAAMprC,KAAK0pC,mBACf0B,EAAIC,gBAA6CrrC,KTzN5B8pC,SAAS,GAAIjD,GS0NlCuE,EAAIhS,QAAwCp5B,KF/MvB+P,SAAS,GAAI24B,EAAa,CAAEthC,UAAW,OEgN5DgkC,EAAI/G,QD7N+B,SAAUvX,GACjD,OAAOA,EAAkB/c,SAAS,GAAIg5B,EAAuB,CAAE3hC,UAAW,MC4NxDkkC,CAA8BtrC,MAE5CorC,EAAI/D,WR7MwB,SAAUva,GAC1C,OAAOA,EAAkBid,QAAQ,CAAE5a,GAAI,SAAU1hB,GAAS,QAASA,EAAM45B,aAAiBF,GQ4MrEoE,CAAuBvrC,MAExCorC,EAAIpB,OPtNoB,SAAUld,GACtC,OAAOA,EAAkBkd,OAAO,CAAE/7B,QAAS,SAAUR,GAAS,QAASA,EAAMu8B,SAAaxC,GOqNzEgE,CAAmBxrC,MAChCorC,EAAInB,SP1MsB,SAAUnd,GACxC,OAAOA,EAAkBmd,SAAS,CAAE9U,SAAU,SAAU1nB,GAAS,QAASA,EAAMw8B,WAAexC,GOyM5EgE,CAAqBzrC,MACpCorC,EAAIlB,QP9LqB,SAAUpd,GACvC,OAAOA,EAAkBod,QAAQ,CAAE/d,SAAU,SAAU1e,GAAS,QAASA,EAAMy8B,UAAcxC,GO6L3EgE,CAAoB1rC,MAElCorC,EAAIO,aNjO0B,SAAU7e,GAC5C,OAAOA,EAAkBid,QAAQ,GAAInC,EAAkB,CAAExgC,SAAUugC,IMgO5CiE,CAAyB5rC,MAC5CorC,EAAIS,YNnN0B,SAAU/e,GAC5C,OAAOA,EAAkBod,QAAQ,CAAE/d,UAAU,SAAI,IAAS0b,EAAkB,CAAEzgC,SAAUugC,IMkNlEmE,CAAyB9rC,MAC3CorC,EAAIW,WNpM0B,SAAUjf,GAC5C,OAAOA,EAAkBqd,SAAS,GAAIrC,EAAkB,CAAE1gC,SAAUugC,IMmM/CqE,CAAyBhsC,MAE1CorC,EAAIa,ULpO2B,SAAUnf,GAC7C,OAAOA,EAAkBqd,SAAS,GAAIpC,GKmOlBmE,CAA0BlsC,MAC1CorC,EAAInD,cL9MuB,SAAUnb,GACzC,OAAOA,EAAkB/e,UAAU,GAAIk6B,GK6MfkE,CAAsBnsC,MAE1CorC,EAAIgB,cJ3N2B,SAAUtf,GAC7C,OAAOA,EAAkBgd,SAAS,GAAIxB,GI0Nd+D,CAA0BrsC,MAE9CorC,EAAI5C,UHvOmB,SAAU1b,GACrC,OAAOA,EAAkB/e,UAAU,GAAIy6B,EAAW,CAAEphC,SAAU,OGsO1CklC,CAAkBtsC,MAElCorC,EAAIhf,UAAW,OAAqBpsB,OAEjCqpC,EA/M2B,mSChClCkD,EAA2B,WACV,SAASA,EAA2B73B,GACjD,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKouB,WAAa,IAAI,EAAAiD,WACtBrxB,KAAKkX,eAAgB,EACrBlX,KAAKwsC,oBAAqB,EAC1BxsC,KAAKysC,eAAgB,EACrBzsC,KAAK0sC,sBAAuB,EAC5B1sC,KAAKkV,QAAU,WAAc,OAAO/E,EAAMie,WAAWlZ,WAOtElV,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuE,OAAO2C,eAAe5B,YAUjEzV,KAAK2sC,WAAa,SAAUC,GAAa,OAAOz8B,EAAMuE,OAAO2C,eAAes1B,WAAWC,IAMvF5sC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMuE,OAAO2C,eAAew1B,QAM7D7sC,KAAKqV,UAAY,WAAc,OAAOlF,EAAMuE,OAAO2C,eAAehC,aAMlErV,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMuE,OAAO2C,eAAey1B,QAM7D9sC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMuE,OAAO2C,eAAe01B,YAwFrE,OA1EAR,EAAU1qC,UAAUmrC,gBAAkB,SAAUxoC,GAC5C,OAAQxE,KAAKwsC,oBAAqB,QAAUhoC,GAASA,EAAQxE,KAAKwsC,oBAmBtED,EAAU1qC,UAAUotB,oBAAsB,SAAUzqB,GAChD,IAAI,QAAUA,KAAoB,IAAVA,IAA4B,IAAVA,KAAoB,QAASA,GACnE,MAAM,IAAIiO,MAAM,0BAA4BjO,EAAQ,mDACxD,OAAQxE,KAAK0sC,sBAAuB,QAAUloC,GAASA,EAAQxE,KAAK0sC,sBAcxEH,EAAU1qC,UAAUorC,WAAa,SAAUzoC,GACvC,OAAQxE,KAAKysC,eAAgB,QAAUjoC,GAASA,EAAQxE,KAAKysC,eAgCjEF,EAAU1qC,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACnD,IAAItiB,EAAOlP,KAAKouB,WAAWlf,KAAK1J,EAAMiU,EAAY+X,GAClD,OAAQ,QAAU/X,GAAqBzZ,KAAPkP,GAE7Bq9B,EA1ImB,0SCf1BW,EAAsC,WAStC,OARAA,EAAW35B,OAAO3Q,QAAU,SAASic,GACjC,IAAK,IAAIzB,EAAGC,EAAI,EAAGkD,EAAIve,UAAUoN,OAAQiO,EAAIkD,EAAGlD,IAE5C,IAAK,IAAIwd,KADTzd,EAAIpb,UAAUqb,GACO9J,OAAO1R,UAAUa,eAAeX,KAAKqb,EAAGyd,KACzDhc,EAAEgc,GAAKzd,EAAEyd,IAEjB,OAAOhc,IAEK1c,MAAMnC,KAAMgC,YAK5BmrC,EAA8B,WAC9B,SAASA,EAAaz4B,GAClB1U,KAAK0U,OAASA,EAWlB,OATAy4B,EAAatrC,UAAU+O,WAAa,SAAUvF,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE9E0/B,EAAatrC,UAAUoyB,SAAW,SAAU5oB,EAAI6D,EAAMzB,GAClD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,KAAcntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE5E0/B,EAAatrC,UAAUurC,WAAa,SAAU/hC,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAEvE0/B,EAbsB,GAsB7BE,EAAmC,WAEnC,SAASA,EAAmC34B,GACxC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAEd1U,KAAK07B,aAAe,IAAIyR,EAAantC,KAAK0U,QAE1C1U,KAAKstC,WAAa,IAClBttC,KAAKqtB,MAAQ,EAAAA,MAEbrtB,KAAKgtC,gBAAkB,SAAUxoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAOyhC,gBAAgBxoC,IAEhGxE,KAAKivB,oBAAsB,SAAUzqB,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0jB,oBAAoBzqB,IAExGxE,KAAKitC,WAAa,SAAUzoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0hC,WAAWzoC,IAEtFxE,KAAKkP,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpC,OAAOrhB,EAAMuE,OAAOuC,WAAW1L,OAAO2D,KAAK1J,EAAMiU,EAAY+X,IAAiBrhB,GA+CtF,OArCAk9B,EAAkBxrC,UAAUwF,QAAU,SAAUid,EAAS/Y,GACrD,IAAI+hB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAEnC6C,EAAS7C,IAAWA,EAAOkC,OAASlC,EAAO6C,OAC/C7C,EAAS6C,EAAS8+B,EAAS,CAAEz/B,MAAO,CAAEW,OAAQA,IAAY7C,GAAUA,EACpE,IAAIgiC,EAAe,CACfC,OAAQlgB,EAAUmf,cAClBO,gBAAiB1f,EAAUkf,mBAC3BiB,aAAcngB,EAAUpW,eAE5B,OAAO,IAAI,IAAWoN,EAASgJ,EAAUc,WAAYpuB,KAAK07B,cAAc,QAAO6R,EAAchiC,KASjG8hC,EAAkBxrC,UAAUs4B,UAAY,SAAUuT,GAE9C,KAAK,QAASA,GACV,OAAO,EACX,IAAIpnC,GAAS,EAKb,OAJA,QAAQ,eAAsB,SAAUtC,EAAKwB,IACrC,QAAWxB,KACXsC,EAASA,IAAU,QAAUonC,EAAOloC,MAAU,QAAWkoC,EAAOloC,QAEjEc,GAGX+mC,EAAkBxrC,UAAUnB,KAAO,WAC/B,IAAI4sB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAGvC,OAFA+hB,EAAUc,WAAW5I,SAAU,EAC/B8H,EAAUc,WAAWqD,kBACdzxB,MAEJqtC,EAjE2B,kOCjBlCM,EAA2B,WAE3B,SAASA,EAA2Bj5B,GAChC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAGd1U,KAAK4sB,KAAO,SAAU1W,GAAO,OAAO/F,EAAMuE,OAAOuC,WAAW2V,KAAK1W,IAEjElW,KAAKsc,OAAS,SAAUhH,GAAW,OAAOnF,EAAMuE,OAAOuC,WAAWqF,OAAOhH,IAEzEtV,KAAK+c,eAAiB,SAAU9Q,GAAS,OAAOkE,EAAMuE,OAAOuC,WAAW8F,eAAe9Q,IAEvFjM,KAAKgc,MAAQ,SAAU4xB,GAAY,OAAOz9B,EAAMuE,OAAOuC,WAAW+E,MAAM4xB,IAGxE5tC,KAAKuH,QAAU,SAAUwU,GACrB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMpV,QAAQwU,IAGjD/b,KAAK4c,UAAY,SAAUb,GACvB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMC,UAAUb,IAGnD/b,KAAKw/B,WAAa,SAAUjjB,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAM6iB,WAAWjjB,IAEpFvc,KAAKuc,KAAO,SAAUA,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAMJ,KAAKA,IAExEvc,KAAK2c,MAAQ,WAAc,OAAOxM,EAAMuE,OAAOuC,WAAW0F,MAAMA,SAEhE3c,KAAKwrB,KAAO,SAAUqiB,GAAa,OAAO19B,EAAMuE,OAAOuC,WAAW0F,MAAM6O,KAAKqiB,IAE7E7tC,KAAKiQ,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAAW,OAAOgQ,EAAMuE,OAAOuC,WAAW0F,MAAM1M,KAAKwrB,EAAS1f,EAAS5b,IAC/GH,KAAK6+B,eAAiB,IAAI,IAAenqB,GAyE7C,OAtEAi5B,EAAU9rC,UAAUua,OAAS,SAAU0xB,GACnC,IAAIphB,EAAO1sB,KAAK0U,OAAO0C,gBACnB02B,EACA9tC,KAAK6V,SAAW6W,EAAKjb,MAGrBib,EAAKjb,QAAUzR,KAAK6V,UAExB6W,EAAKjb,IAAIzR,KAAK6V,UAAU,IAY5B83B,EAAU9rC,UAAUpB,KAAO,SAAUstC,EAAY3/B,EAAQjO,GACrD,IAAI4U,EAAU5U,KAAaA,EAAQ4U,QACnC/U,KAAK0U,OAAOuC,WAAWxF,IAAIs8B,EAAWnmB,OAAOxZ,GAAU,IAAK2G,IAqBhE44B,EAAU9rC,UAAUmsC,KAAO,SAAUD,EAAY3/B,EAAQjO,GACrD,IAAIsR,EAAMs8B,EAAWnmB,OAAOxZ,GAC5B,GAAW,MAAPqD,EACA,OAAO,KACXtR,EAAUA,GAAW,CAAE8tC,UAAU,GACjC,IAAIpmC,EAAM7H,KAAK0U,OAAOuC,WAAW1L,OAC7B2iC,EAAUrmC,EAAIwN,YAKlB,GAJK64B,GAAmB,OAARz8B,IACZA,EAAM,IAAM5J,EAAI8kC,aAAel7B,GAEnCA,EA1GR,SAAwBA,EAAKy8B,EAASD,EAAUx4B,GAC5C,MAAiB,MAAbA,EACOhE,EACPy8B,GACO,QAAqBz4B,GAAYhE,EACxCw8B,EACOx4B,EAAS3T,MAAM,GAAK2P,EACxBA,EAmGG08B,CAAe18B,EAAKy8B,EAAS/tC,EAAQ8tC,SAAUpmC,EAAI4N,aACpDtV,EAAQ8tC,WAAax8B,EACtB,OAAOA,EAEX,IAAI28B,GAASF,GAAWz8B,EAAM,IAAM,GAChC48B,EAAUxmC,EAAIilC,OACdA,EAAoB,KAAZuB,GAA8B,MAAZA,EAAkB,GAAK,IAAMA,EAC3D,MAAO,CAACxmC,EAAIklC,WAAY,MAAOllC,EAAIglC,OAAQC,EAAMsB,EAAO38B,GAAKwB,KAAK,KAEtEM,OAAO+6B,eAAeX,EAAU9rC,UAAW,oBAAqB,CAE5D6O,IAAK,WACD,OAAO1Q,KAAK0U,OAAOuC,WAAWoF,mBAElCkyB,YAAY,EACZC,cAAc,IAEXb,EA1GmB,2aCJ1Bc,EAAgC,WAChC,SAASA,EAAe/5B,GACpB1U,KAAK0U,OAASA,EAiKlB,OA/JA+5B,EAAe5sC,UAAUwF,QAAU,SAAU2J,GACzC,OAAOhR,KAAK0U,OAAOE,kBAAkBvN,QAAQ2J,IAEjDy9B,EAAe5sC,UAAUL,OAAS,SAAUsb,EAAMf,GAC9C,IAAI5L,EAAQnQ,KACRy9B,EAAU,YAAqBD,EAAqB,uBACpDkR,GAAW,QAAQ,CACnB,CAAC,KAAU,SAAUC,GAAS,OAAOD,EAASv+B,EAAM9I,QAAQsnC,MAC5D,EAAC,IAAAz1B,IAAG,KAAa,SAAUy1B,GAAS,OAAOx+B,EAAMy+B,eAAeD,EAAO5yB,KACvE,EAAC,IAAAkI,IAAGwZ,EAASD,GAAqB,SAAUmR,GAAS,OAAOx+B,EAAM0+B,UAAUF,EAAOx+B,EAAMuE,UACzF,EAAC,IAAAwE,IAAG/P,QAAS,SAAUwlC,GAAS,OAAOx+B,EAAM2+B,WAAWH,EAAO5yB,KAC/D,CAAC,KAAY,SAAU4yB,GAAS,OAAO,IAAIlyB,EAAYkyB,EAAO5yB,OAE9DQ,EAAOmyB,EAAS5xB,GACpB,IAAKP,EACD,MAAM,IAAI9J,MAAM,4BACpB,OAAO8J,GAsCXkyB,EAAe5sC,UAAU+sC,eAAiB,SAAUb,EAAYhyB,GAC5D,IAAIgzB,EAAWhzB,GACX,QAASA,KACTA,EAAU/b,KAAK0U,OAAOE,kBAAkBvN,QAAQ0U,KAChD,IAAA7C,IAAG,IAAH,CAAe6C,KACfgzB,EAAW,SAAU/yB,GAAS,OAAOD,EAAQ6L,OAAO5L,KAiBxD,IAAIgzB,EAAU,CAAEjB,WAAYA,EAAYkB,cAPxC,SAAuB7gC,GACnB,IAAI8gC,EAAWnB,EAAW1a,aAAa/pB,QAAO,SAAU0F,GAAS,OAAOA,EAAM4f,cAC9E,OAAKsgB,EAAS9/B,OAEA8/B,EAAS5lC,QAAO,SAAU0F,GAAS,OAAOZ,EAAOY,EAAM3D,OACtD+D,OAAS8/B,EAAS9/B,OAFtB,MAIuDF,KAAM,cAC5E,OAAO,QAAO,IAAIuN,GAjBlB,SAA2BhL,GACvB,IAAIrD,EAAS2/B,EAAWtkC,KAAKgI,EAAItJ,KAAMsJ,EAAI09B,OAAQ19B,EAAIqgB,MACvD,OAAOic,EAAWre,UAAUthB,IAAWA,IAeM2gC,GAAWC,IAahEP,EAAe5sC,UAAUgtC,UAAY,SAAUO,EAAa16B,GACxD,IAAIjH,EAAQ,uBAA+B2hC,GAAeA,EAAYp7B,UAAYo7B,EAe9EJ,EAAU,CAAEvhC,MAAOA,EAAOyB,KAAM,SACpC,OAAO,QAAOlP,KAAK4uC,eAAenhC,EAAMgE,KAR1B,SAAUuK,GACpB,IAAIvD,EAAS/D,EAAOmC,aAChByB,EAAU5D,EAAO4D,QACjBG,EAAOu1B,KAAKvgC,EAAOuO,KAAWvD,EAAOu1B,KAAK11B,EAAQwN,QAASxN,EAAQlK,SACnEqK,EAAO42B,aAAa5hC,EAAOuO,EAAO,CAAEoD,SAAS,EAAML,OAAQ,WAIZiwB,IAkC3DP,EAAe5sC,UAAUitC,WAAa,SAAU7rB,EAAQlH,GACpD,GAAIkH,EAAOnF,QAAUmF,EAAOqsB,OACxB,MAAM,IAAI78B,MAAM,4CAMpB,IAIIs8B,GAAW,QAAShzB,GAJJ,SAAUC,GAE1B,OAAOD,EAAQhH,QAAQ,kBAAkB,SAAUC,EAAG8H,GAAQ,OAAOd,EAAe,MAATc,EAAe,EAAIyyB,OAAOzyB,QAEtDf,EAE/CizB,EAAU,CAAE/rB,OAAQA,EAAQ/T,KAAM,UACtC,OAAO,QAAO,IAAIuN,GAFU,SAAUhL,GAAO,OAAOwR,EAAOxZ,KAAKgI,EAAItJ,QAEf4mC,GAAWC,IAEpEP,EAAee,UAAY,SAAUv1B,GAAO,OAAOA,GAAO,CAAC,OAAQ,QAAS,WAAWkpB,OAAM,SAAUt9B,GAAO,OAAO,QAAUoU,EAAIpU,QAC5H4oC,EAnKwB,GA4K/BhyB,EACA,SAAqBT,EAAOD,GACxB,IAAI5L,EAAQnQ,KACZA,KAAKgc,MAAQA,EACbhc,KAAKkP,KAAO,MACZlP,KAAKivC,cAAgB,SAAUjzB,GAAS,OAAO,EAAI7L,EAAMgL,KACzDnb,KAAK+b,QAAUA,GAAW,2GCnK9B0zB,sPAaJ,SAASC,EAAa3zB,GAClB,MAAK,QAAWA,KAAa,QAASA,KAAa,IAAA7C,IAAG,EAAA2mB,YAAH,CAAgB9jB,IAAa,EAAA8jB,YAAA,MAAkB9jB,IAC9F,MAAM,IAAItJ,MAAM,4FAEpB,OAAO,QAAWsJ,GAAWA,GAAU,QAAIA,GAhB/C0zB,EAAoB,SAAUhyB,EAAGmB,GAC7B,IAAI+wB,EA5BW,SAAUlyB,EAAGmB,GAAK,OAAQA,EAAExX,UAAY,IAAMqW,EAAErW,UAAY,GA4BjEwoC,CAAanyB,EAAGmB,GAC1B,OAAY,IAAR+wB,GAGQ,KADZA,EA9BW,SAAUlyB,EAAGmB,GACxB,IAAIixB,EAAU,CAAE7E,MAAO,EAAG8E,WAAY,EAAGC,OAAQ,EAAGC,IAAK,EAAGC,MAAO,GACnE,OAAQJ,EAAQpyB,EAAEvO,OAAS,IAAM2gC,EAAQjxB,EAAE1P,OAAS,GA4B9CghC,CAASzyB,EAAGmB,KAIN,KADZ+wB,EA7BiB,SAAUlyB,EAAGmB,GAC9B,OAAQnB,EAAEswB,YAAenvB,EAAEmvB,WAAiB,YAAmBtwB,EAAEswB,WAAYnvB,EAAEmvB,YAAvC,EA4BlCoC,CAAe1yB,EAAGmB,IAJb+wB,EAtBF,SAAUlyB,EAAGmB,GAEtB,IAAIwxB,EAAmB,CAAEpF,OAAO,EAAM8E,YAAY,GAElD,OADYM,EAAiB3yB,EAAEvO,OAASkhC,EAAiBxxB,EAAE1P,MAC5C,GAAKuO,EAAEtC,KAAO,IAAMyD,EAAEzD,KAAO,GAyBrCk1B,CAAO5yB,EAAGmB,IAkBrB,IAAI0xB,EAA0B,WAE1B,SAASA,EAA0B57B,GAC/B1U,KAAK0U,OAASA,EACG1U,KAAKuwC,QAAUd,EACfzvC,KAAKwwC,OAAS,GACdxwC,KAAKywC,IAAM,EAC5BzwC,KAAK6+B,eAAiB,IAAI,IAAenqB,GA8Q7C,OA3QA47B,EAASzuC,UAAUqT,QAAU,SAAUR,GACnC1U,KAAKwwC,OAAS,UACPxwC,KAAK0wC,cAqChBJ,EAASzuC,UAAU0F,QAAU,SAAUwU,GACnC,IAAI40B,EAAYjB,EAAa3zB,GAI7B/b,KAAKuc,KAAKvc,KAAK6+B,eAAer9B,QAHhB,SAAUosC,EAAUl5B,GAC9B,OAAmD,IAA5CA,EAAO4D,QAAQyT,kBAAkBnG,UAAkB,QAAQnc,KAAKmkC,EAASzlC,QAEtCwoC,KA6ClDL,EAASzuC,UAAU+a,UAAY,SAAUb,GACrC,IAAI40B,EAAYjB,EAAa3zB,GAC7B/b,KAAK0wC,aAAe1wC,KAAK6+B,eAAer9B,QAAO,SAAI,GAAOmvC,GAC1D3wC,KAAK4wC,SAAU,GAOnBN,EAASzuC,UAAU29B,WAAa,SAAUjjB,IACtC,QAAWvc,KAAKwwC,OAAQj0B,IAc5B+zB,EAASzuC,UAAU0a,KAAO,SAAUA,GAChC,IAAIpM,EAAQnQ,KACZ,IAAK,cAAyBuc,GAC1B,MAAM,IAAI9J,MAAM,gBAKpB,OAJA8J,EAAKpB,IAAMnb,KAAKywC,MAChBl0B,EAAKnV,SAAWmV,EAAKnV,UAAY,EACjCpH,KAAKwwC,OAAO/vC,KAAK8b,GACjBvc,KAAK4wC,SAAU,EACR,WAAc,OAAOzgC,EAAMqvB,WAAWjjB,KAOjD+zB,EAASzuC,UAAU8a,MAAQ,WAEvB,OADA3c,KAAK6wC,eACE7wC,KAAKwwC,OAAOpuC,OAAOpC,KAAK0wC,aAAe,CAAC1wC,KAAK0wC,cAAgB,KA4CxEJ,EAASzuC,UAAU2pB,KAAO,SAAUqiB,GAIhC,IAHA,IAAIiD,EAAS9wC,KAAK+wC,WAAW/wC,KAAKwwC,OAASxwC,KAAKuwC,QAAU1C,GAAa7tC,KAAKuwC,SAExES,EAAQ,EACH3zB,EAAI,EAAGA,EAAIyzB,EAAO1hC,OAAQiO,IAC/ByzB,EAAOzzB,GAAG4zB,OAASD,EACf3zB,EAAIyzB,EAAO1hC,OAAS,GAAgD,IAA3CpP,KAAKuwC,QAAQO,EAAOzzB,GAAIyzB,EAAOzzB,EAAI,KAC5D2zB,IAGRhxC,KAAKwwC,OAASM,EACd9wC,KAAK4wC,SAAU,GAGnBN,EAASzuC,UAAUgvC,aAAe,WAC9B7wC,KAAK4wC,SAAW5wC,KAAKwrB,QAGzB8kB,EAASzuC,UAAUkvC,WAAa,SAAUrxB,EAAKmuB,GAC3C,IAAIqD,EAAexxB,EAAI/Q,KAAI,SAAUuS,EAAMjS,GAAO,MAAO,CAAGiS,KAAMA,EAAMjS,IAAKA,MAK7E,OAJAiiC,EAAa1lB,MAAK,SAAU2lB,EAAUC,GAClC,IAAIC,EAAUxD,EAAUsD,EAASjwB,KAAMkwB,EAASlwB,MAChD,OAAmB,IAAZmwB,EAAgBF,EAASliC,IAAMmiC,EAASniC,IAAMoiC,KAElDH,EAAaviC,KAAI,SAAU2iC,GAAW,OAAOA,EAAQpwB,SA6DhEovB,EAASzuC,UAAUoO,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAClD,IAAIoc,EAAOvc,KAAK6+B,eAAer9B,OAAOi6B,EAAS1f,GAI/C,OAHI,QAAU5b,GAAWA,EAAQiH,YAC7BmV,EAAKnV,SAAWjH,EAAQiH,UAC5BpH,KAAKuc,KAAKA,GACHA,GAEJ+zB,EArRkB,8VCpDzBiB,EAA4B,WAE5B,SAASA,EAA4B78B,GACjC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKqc,mBAAoB,EAM1Crc,KAAK2c,MAAQ,IAAI,IAAS3c,KAAK0U,QAM/B1U,KAAKuL,OAAS,IAAI,IAAUvL,KAAK0U,QAsDjC1U,KAAKyR,IAAM,SAAU+/B,EAAQz8B,EAAStH,GAClC,OAAO0C,EAAMuE,OAAO0C,gBAAgB3F,IAAI+/B,EAAQz8B,EAAStH,IAS7DzN,KAAKmI,KAAO,WAAc,OAAOgI,EAAMuE,OAAO0C,gBAAgBjP,QAQ9DnI,KAAKmvC,OAAS,WAAc,OAAOh/B,EAAMuE,OAAO0C,gBAAgB+3B,UAQhEnvC,KAAK8xB,KAAO,WAAc,OAAO3hB,EAAMuE,OAAO0C,gBAAgB0a,QAgB9D9xB,KAAKmV,SAAW,SAAU3U,GAAY,OAAO2P,EAAMuE,OAAO0C,gBAAgBjC,SAAS3U,IA4IvF,OAzIA+wC,EAAW1vC,UAAUqT,QAAU,WAC3BlV,KAAKsc,QAAO,GACZtc,KAAK2c,MAAMzH,WAOfq8B,EAAW1vC,UAAU8qB,MAAQ,WACzB,MAAO,CAAExkB,KAAMnI,KAAKmI,OAAQgnC,OAAQnvC,KAAKmvC,SAAUrd,KAAM9xB,KAAK8xB,SAsBlEyf,EAAW1vC,UAAU+qB,KAAO,SAAU1W,GAClC,IAAIA,IAAOA,EAAI5T,iBAAf,CAEA,IAAI+oB,EAAKrrB,KAAK0U,OAAQuC,EAAaoU,EAAGpU,WAAYJ,EAAewU,EAAGxU,aAChEpF,EAAM,CAAEtJ,KAAM8O,EAAW9O,OAAQgnC,OAAQl4B,EAAWk4B,SAAUrd,KAAM7a,EAAW6a,QAC/E2f,EAAOzxC,KAAKgc,MAAMvK,IACJ,QAAQ,CACtB,CAAC,KAAU,SAAU+/B,GAAU,OAAOv6B,EAAWxF,IAAI+/B,GAAQ,KAC7D,CAAC,EAAA3R,YAAA,MAAmB,SAAU3sB,GAAO,OAAO2D,EAAa66B,GAAGx+B,EAAIzF,MAAOyF,EAAI9E,OAAQ8E,EAAI/S,WACvF,EAAC,IAAA+Y,IAAG,EAAA2mB,aAAc,SAAUx5B,GAAU,OAAOwQ,EAAa66B,GAAGrrC,EAAOoH,QAASpH,EAAO+H,SAAU/H,EAAOlG,cAEzGwxC,CAAYF,GAAQA,EAAKl1B,KAAKR,QAAQ01B,EAAKz1B,MAAOvK,EAAKzR,KAAK0U,WAwBhE68B,EAAW1vC,UAAUya,OAAS,SAAUhH,GACpC,IAAInF,EAAQnQ,KACZ,IAAgB,IAAZsV,EAKA,OAAQtV,KAAK4xC,iBACT5xC,KAAK4xC,kBAAoB5xC,KAAK0U,OAAOuC,WAAW9B,UAAS,SAAUe,GAAO,OAAO/F,EAAMyc,KAAK1W,MALhGlW,KAAK4xC,kBAAoB5xC,KAAK4xC,0BACvB5xC,KAAK4xC,kBA+BpBL,EAAW1vC,UAAUkb,eAAiB,SAAU9Q,QAC9BkI,IAAVlI,IACAA,GAAQ,GACZjM,KAAKqc,kBAAoBpQ,GAQ7BslC,EAAW1vC,UAAUma,MAAQ,SAAUvK,GAEnCA,GAAM,QAAO,CAAEtJ,KAAM,GAAIgnC,OAAQ,GAAIrd,KAAM,IAAMrgB,GAYjD,IAXA,IAUIggC,EARsBl1B,EAClBP,EAHJW,EAAQ3c,KAAK2c,MAAMA,QAWdU,EAAI,EAAGA,EAAIV,EAAMvN,UAElBqiC,GAAQA,EAAKl1B,KAAK00B,SAAWt0B,EAAMU,GAAG4zB,QAFZ5zB,IAAK,CAInC,IAAIyI,QAZA9J,GAAAA,GADkBO,EAaEI,EAAMU,IAZbrB,MAAMvK,EALfzR,KAK0B0U,UAClB,CAAEsH,MAAOA,EAAOO,KAAMA,EAAMs1B,OAAQt1B,EAAK0yB,cAAcjzB,KAavEy1B,GAAQA,GAAS3rB,GAAWA,EAAQ+rB,OAASJ,EAAKI,OAAU/rB,EAAU2rB,EAE1E,OAAOA,GAEJF,EA7PoB,oZCJ3BO,EAAsC,WACtC,SAASA,EAAqBp9B,EAAQq9B,GAClC,IAAI5hC,EAAQnQ,KACZA,KAAK+xC,gBAAkBA,EACvB/xC,KAAKgyC,WAAa,GAClBhyC,KAAKiyC,UAAY,SAAU/7B,GAAO,OAAO/F,EAAM6hC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAGoL,OAC5FlW,KAAK8xB,KAAO,WAAc,OAAO,QAAS3hB,EAAM+hC,QAAQpgB,MACxD9xB,KAAKmI,KAAO,WAAc,OAAO,QAASgI,EAAM+hC,QAAQ/pC,MACxDnI,KAAKmvC,OAAS,WAAc,OAAO,SAAU,QAASh/B,EAAM+hC,QAAQ/C,SACpEnvC,KAAKmyC,UAAY,cACjBnyC,KAAKoyC,SAAW,aAoBpB,OAlBAN,EAAqBjwC,UAAU4P,IAAM,SAAUA,EAAKsD,GAQhD,YAPgB,IAAZA,IAAsBA,GAAU,IAChC,QAAUtD,IAAQA,IAAQzR,KAAKkyC,SAC/BlyC,KAAKmpB,KAAK,KAAM,KAAM1X,EAAKsD,GACvB/U,KAAK+xC,iBACL/xC,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAG,CAAE2G,IAAKA,SAG1D,QAASzR,OAEpB8xC,EAAqBjwC,UAAUsT,SAAW,SAAUrK,GAChD,IAAIqF,EAAQnQ,KAEZ,OADAA,KAAKgyC,WAAWvxC,KAAKqK,GACd,WAAc,OAAO,QAAWqF,EAAM6hC,WAAYlnC,KAE7DgnC,EAAqBjwC,UAAUqT,QAAU,SAAUR,IAC/C,QAAS1U,KAAKgyC,aAEXF,EA9B8B,2LCDrCO,EAAuC,WACvC,SAASA,EAAsB39B,EAAQ49B,QAClB,IAAbA,IAAuBA,GAAW,GACtCtyC,KAAKsyC,SAAWA,EAChBtyC,KAAK0V,eAAYvB,EACjBnU,KAAKuyC,YAAc,GAmCvB,OAjCAF,EAAsBxwC,UAAUirC,KAAO,WACnC,OAAIj3B,SAASi3B,KACFyC,OAAO15B,SAASi3B,MAEA,UAApB9sC,KAAK+sC,WAAyB,IAAM,IAE/CsF,EAAsBxwC,UAAUkrC,SAAW,WACvC,OAAOl3B,SAASk3B,SAASh4B,QAAQ,KAAM,KAE3Cs9B,EAAsBxwC,UAAUgrC,KAAO,WACnC,OAAOh3B,SAAS28B,UAEpBH,EAAsBxwC,UAAUwT,UAAY,WACxC,OAAOrV,KAAKsyC,UAEhBD,EAAsBxwC,UAAU8qC,WAAa,SAAUC,GACnD,OAAO,QAAUA,GAAc5sC,KAAKuyC,YAAc3F,EAAa5sC,KAAKuyC,aAExEF,EAAsBxwC,UAAU4T,SAAW,SAAUu4B,GAKjD,OAJI,QAAUA,KACVhuC,KAAK0V,UAAYs4B,IACjB,QAAYhuC,KAAK0V,aACjB1V,KAAK0V,UAAY1V,KAAKyyC,eACnBzyC,KAAK0V,WAEhB28B,EAAsBxwC,UAAU4wC,YAAc,WAC1C,IAAIC,EAAUrsB,SAASssB,qBAAqB,QAAQ,GACpD,OAAID,GAAWA,EAAQ1E,KACZ0E,EAAQ1E,KAAKj5B,QAAQ,uBAAwB,IAEjD/U,KAAKsyC,SAAW,IAAMz8B,SAAS/B,UAAY,KAEtDu+B,EAAsBxwC,UAAUqT,QAAU,aACnCm9B,EAxC+B,uHCDlCO,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAMnFC,EAAqC,SAAUC,GAE/C,SAASD,EAAoBv+B,GACzB,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAU1U,KAEhD,OADA,sBAAsB,aAAcmQ,EAAM8hC,WAAW,GAC9C9hC,EAYX,OAhBA0iC,EAAUI,EAAqBC,GAM/BD,EAAoBpxC,UAAUqwC,KAAO,WACjC,OAAO,QAAYlyC,KAAKmyC,UAAUrgB,OAEtCmhB,EAAoBpxC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAC9D/U,KAAKmyC,UAAUrgB,KAAOrgB,GAE1BwhC,EAAoBpxC,UAAUqT,QAAU,SAAUR,GAC9Cw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,aAAc1U,KAAKiyC,YAEzCgB,EAjB6B,CAkBtC,6cC/BEG,EACA,WACI,IAAIjjC,EAAQnQ,KACZA,KAAKkV,QAAU,KACflV,KAAK0V,UAAY,GACjB1V,KAAKqzC,MAAQ,GACbrzC,KAAKszC,UAAY,OACjBtzC,KAAKuzC,MAAQ,YACbvzC,KAAKuyC,YAAc,GACnBvyC,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMkjC,OACvCrzC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMmjC,WAC3CtzC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMojC,OACvCvzC,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuF,WAC3C1V,KAAKqV,UAAY,WAAc,OAAO,GACtCrV,KAAK2sC,WAAa,SAAU6G,GAAU,OAAQ,QAAUA,GAAWrjC,EAAMoiC,YAAciB,EAAUrjC,EAAMoiC,oIChBvGK,8EADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAKnFS,EAAuC,SAAUP,GAEjD,SAASO,EAAsB/+B,GAC3B,OAAOw+B,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAQ9C,OAVA6yC,EAAUY,EAAuBP,GAIjCO,EAAsB5xC,UAAUqwC,KAAO,WACnC,OAAOlyC,KAAK0zC,MAEhBD,EAAsB5xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAChE/U,KAAK0zC,KAAOjiC,GAETgiC,EAX+B,CAYxC,0tBCZ8B,QAAsB,4BAA4B,EAAO,IAAqB,MAEzE,QAAsB,6BAA6B,EAAM,IAA0B,MAEtF,QAAsB,0BAA0B,EAAO,IAAuB,8HClBxGb,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAUnFW,EAA0C,SAAUT,GAEpD,SAASS,EAAyBj/B,GAC9B,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAG/C,OAFAmQ,EAAMyjC,QAAUl/B,EAAOuC,WAAW1L,OAClC,sBAAsB,WAAY4E,EAAM8hC,WAAW,GAC5C9hC,EA8CX,OAnDA0iC,EAAUc,EAA0BT,GAuBpCS,EAAyB9xC,UAAUgyC,eAAiB,WAChD,OAAO,QAAqB7zC,KAAK4zC,QAAQn+B,aAE7Ck+B,EAAyB9xC,UAAUqwC,KAAO,WACtC,IAAI7mB,EAAKrrB,KAAKmyC,UAAWr+B,EAAWuX,EAAGvX,SAAUge,EAAOzG,EAAGyG,KAAMqd,EAAS9jB,EAAG8jB,OAC7EA,GAAS,QAAWA,GAAQ,GAC5Brd,GAAO,QAAUA,GAAM,GACvB,IAAIgiB,EAAa9zC,KAAK6zC,iBAClBE,EAAqBjgC,IAAa9T,KAAK4zC,QAAQn+B,WAC/Cu+B,EAAiBlgC,EAASiT,OAAO,EAAG+sB,EAAW1kC,UAAY0kC,EAE/D,OADAhgC,EAAWigC,EAAqB,IAAMC,EAAiBlgC,EAASmmB,UAAU6Z,EAAW1kC,QAAU0E,IAC5Eq7B,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE1E6hB,EAAyB9xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GACnE,IAAI++B,EAAa9zC,KAAK6zC,iBAClBzF,EAAQ38B,GAAkB,MAAXA,EAAI,GAAa,IAAM,GACtCwiC,EAAkB,KAARxiC,GAAsB,MAARA,EAAczR,KAAK4zC,QAAQn+B,WAAaq+B,EAAa1F,EAAQ38B,EACrFsD,EACA/U,KAAKoyC,SAAS8B,aAAazmC,EAAO0lC,EAAOc,GAGzCj0C,KAAKoyC,SAAS+B,UAAU1mC,EAAO0lC,EAAOc,IAG9CN,EAAyB9xC,UAAUqT,QAAU,SAAUR,GACnDw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,WAAY1U,KAAKiyC,YAEvC0B,EApDkC,CAqD3C,qKCzDS5sC,EAAK,CAEZkJ,KAAM,SAAUjM,GAAO,OAAO,IAAIowC,SAAQ,SAAUznC,EAAS0nC,GAAU,OAAO1nC,EAAQ3I,OAEtFqwC,OAAQ,SAAUrwC,GACd,OAAO,IAAIowC,SAAQ,SAAUznC,EAAS0nC,GAClCA,EAAOrwC,OAIfiI,MAAO,WACH,IAAIqoC,EAAW,GAKf,OAJAA,EAAS7wC,QAAU,IAAI2wC,SAAQ,SAAUznC,EAAS0nC,GAC9CC,EAAS3nC,QAAUA,EACnB2nC,EAASD,OAASA,KAEfC,GAGX74B,IAAK,SAAUF,GACX,IAAI,QAAQA,GACR,OAAO64B,QAAQ34B,IAAIF,GAEvB,IAAI,QAASA,GAAW,CAGpB,IAAI0gB,EAAQ1oB,OAAOC,KAAK+H,GAAU5M,KAAI,SAAU9I,GAAO,OAAO0V,EAAS1V,GAAKkF,MAAK,SAAU/G,GAAO,MAAO,CAAG6B,IAAKA,EAAK7B,IAAKA,SAE3H,OAAO+C,EAAG0U,IAAIwgB,GAAOlxB,MAAK,SAAUiW,GAChC,OAAOA,EAAOpS,QAAO,SAAUsL,EAAKzG,GAEhC,OADAyG,EAAIzG,EAAM5N,KAAO4N,EAAMzP,IAChBkW,IACR,yMC/CRq6B,EAAmB,SAAUC,EAAOnpB,GAC3C,IAAIxlB,EAAMwlB,EAAG,GAAIrnB,EAAMqnB,EAAG,GAU1B,OATKmpB,EAAM9xC,eAAemD,IAGjB,QAAQ2uC,EAAM3uC,IACnB2uC,EAAM3uC,GAAKpF,KAAKuD,GAGhBwwC,EAAM3uC,GAAO,CAAC2uC,EAAM3uC,GAAM7B,GAN1BwwC,EAAM3uC,GAAO7B,EAQVwwC,GAEAC,EAAY,SAAUC,GAC7B,OAAOA,EAAY5xB,MAAM,KAAKxZ,OAAO,MAAUqF,IAAI,MAAYC,OAAO2lC,EAAkB,KAErF,SAASra,EAASzoB,GACrB,IAAIkjC,EAAgB,SAAUrlC,GAAK,OAAOA,GAAK,IAC3C+b,GAAK,QAAU5Z,GAAK9C,IAAIgmC,GAAgBC,EAAavpB,EAAG,GAAIyG,EAAOzG,EAAG,GACtEC,GAAK,QAAWspB,GAAYjmC,IAAIgmC,GACpC,MAAO,CAAExsC,KADkDmjB,EAAG,GACzC6jB,OADsD7jB,EAAG,GACzCwG,KAAMA,EAAMrgB,IAAKA,GAEnD,IAAIojC,EAAW,SAAUC,GAC5B,IAAI3sC,EAAO2sC,EAAI3sC,OACX4sC,EAAeD,EAAI3F,SACnBrd,EAAOgjB,EAAIhjB,OACXqd,EAAS57B,OAAOC,KAAKuhC,GACpBpmC,KAAI,SAAU9I,GACf,IAAImJ,EAAQ+lC,EAAalvC,GAEzB,QADW,QAAQmJ,GAASA,EAAQ,CAACA,IACzBL,KAAI,SAAU3K,GAAO,OAAO6B,EAAM,IAAM7B,QAEnD4K,OAAO,KAAS,IAChBqE,KAAK,KACV,OAAO9K,GAAQgnC,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE/D,SAASkjB,EAAsBxvC,EAAM0oC,EAAS+G,EAAcC,GAC/D,OAAO,SAAU98B,GACb,IAAIX,EAAWW,EAAShB,gBAAkB,IAAI69B,EAAa78B,GACvD+8B,EAAiB/8B,EAASf,eAAiB,IAAI69B,EAAmB98B,EAAU81B,GAKhF,MAAO,CAAE1oC,KAAMA,EAAMiS,QAASA,EAAS09B,cAAeA,EAAejgC,QAJrE,SAAiBR,GACbA,EAAOQ,QAAQuC,GACf/C,EAAOQ,QAAQigC,kaCvBvBr6B,EAA6B,WAE7B,SAASA,EAA6BpG,GAClC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKo1C,SAAW,GAChBp1C,KAAKq1C,aAAe,GACpBr1C,KAAKs1C,qBAAuB,GAC5Bt1C,KAAKgyC,WAAa,GAEnChyC,KAAKgK,WAAa,CACdC,iBAAkBjK,KAAKiK,iBAAiB3G,KAAKtD,MAC7CgX,mBAAoBhX,KAAKgX,mBAAmB1T,KAAKtD,MACjDu1C,kBAAmB,SAAUlqC,GAAM,OAAO,QAAK8E,EAAMilC,UAAU,SAAUt7B,GAAQ,OAAO3J,EAAMuE,OAAOyG,IAAM,IAAMrB,EAAKzO,KAAOA,MAC7HmqC,mBAAoB,WAAc,OAAOrlC,EAAMilC,UAC/CK,mBAAoB,WAAc,OAAOtlC,EAAMklC,cAC/CK,QAAS,SAAUvX,GAEf,OADAhuB,EAAM6hC,WAAWvxC,KAAK09B,GACf,WAAc,OAAO,QAAWhuB,EAAM6hC,WAAY7T,MAwPrE,OAzOArjB,EAAY66B,sBAAwB,SAAU9kC,EAAS+kC,QAC/B,IAAhBA,IAA0BA,EAAc,IAI5C,IAAIC,EAAgBD,EAAY9yB,MAAM,KAClC9H,EAAa66B,EAAc,IAAM,WACjC36B,GAAsB,QAAS26B,EAAc,IAAMA,EAAc,GAAK,IAGtEC,EAAwB,wBAAwBrsC,KAAKuR,GAYzD,GAXI86B,IAEA56B,EAAsB46B,EAAsB,GAC5C96B,EAAa86B,EAAsB,IAEV,MAAzB96B,EAAWvV,OAAO,KAClBuV,EAAaA,EAAW+L,OAAO,GAC/B7L,EAAsB,IAGN,kBACFzR,KAAKyR,GAAsB,CACzC,IAAI66B,EAAc76B,EAAoB4H,MAAM,KAAKlU,QAAO,SAAUonC,EAAQ1mC,GAAK,OAAO0mC,EAAO57B,SAAWvJ,GACxGqK,EAAsB66B,EAAYvwC,SAEL,MAAxB0V,IACLA,EAAsBrK,EAAQrL,MAElC,MAAO,CAAEwV,WAAYA,EAAYE,oBAAqBA,IAG1DJ,EAAYjZ,UAAUoI,iBAAmB,SAAU4G,GAC/C,OAAQ7Q,KAAKi2C,aAAeplC,GAAW7Q,KAAKi2C,cAGhDn7B,EAAYjZ,UAAUmV,mBAAqB,SAAUk/B,EAAUh2C,GAC3DF,KAAKs1C,qBAAqBY,GAAYh2C,GAE1C4a,EAAYjZ,UAAU2yB,iBAAmB,SAAUrsB,EAAMozB,GACrD,IAAI4a,EAAan2C,KAAKs1C,qBAAqB/Z,EAAKnwB,OAChD,IAAK+qC,EACD,MAAM,IAAI1jC,MAAM,2DAA6D8oB,EAAKnwB,OACtF,IAAIgrC,EAAOD,EAAWhuC,EAAMozB,GAC5B,OAAO,QAAQ6a,GAAQA,EAAO,CAACA,IAUnCt7B,EAAYjZ,UAAUumC,qBAAuB,SAAU19B,GACnD,2BAA4B,cAAeA,IAC3C,QAAW1K,KAAKq1C,aAAc3qC,IAElCoQ,EAAYjZ,UAAUwmC,mBAAqB,SAAU39B,GACjD,2BAA4B,iBAAkBA,GAC9C1K,KAAKq1C,aAAa50C,KAAKiK,IAE3BoQ,EAAYjZ,UAAU+qB,KAAO,WACzB,IAAIzc,EAAQnQ,KACRq2C,EAAer2C,KAAKo1C,SAASzmC,KAAI,SAAU4c,GAAO,MAAO,CAACA,EAAIjgB,IAAKigB,MAAS3c,OAAO,KAAY,IASnG,SAAS0nC,EAAgB/qC,GAErB,IADA,IAAIsF,EAAUtF,EAAOxD,SAASgC,SAAUG,EAAQ,IACvCA,GAAS2G,EAAQuJ,QACtBvJ,EAAUA,EAAQuJ,OACtB,OAAOlQ,EAGX,IAAIqsC,GAAe,SAAM,SAAUC,EAASC,EAAQ1lB,EAAMC,GAAS,OAAOylB,GAAUD,EAAQzlB,GAAQylB,EAAQxlB,OAkBxG0lB,EAAe12C,KAAKo1C,SAAS5pB,KAAK+qB,GA9BtC,SAAqB9vC,GACjB,IAAIkwC,EAAa,SAAU9lC,GAAW,OAAQA,GAAWA,EAAQuJ,OAASu8B,EAAW9lC,EAAQuJ,QAAU,EAAI,GAC3G,OAAsC,IAA/B3T,EAAO6E,IAAIwX,MAAM,KAAK1T,OAAiBunC,EAAWlwC,EAAOkiB,mBA4BJ,IAAIha,KAjB3C,SAAUlI,GAC/B,IAAImwC,EAAkBzmC,EAAMklC,aAAa/rC,OAAOwR,EAAYoI,QAAQmzB,EAAc5vC,IAOlF,OANImwC,EAAgBxnC,OAAS,GAIzBwnC,EAAgBprB,KAAK+qB,EAAaD,GAAkB,IAEjD,CAAE7vC,OAAQA,EAAQiE,WAAYksC,EAAgB,OAUrDC,EAAqBH,EAAa/nC,KAAI,SAAU8E,GAAS,OAAOA,EAAM/I,cACtEosC,EAAwB92C,KAAKq1C,aAC5B/rC,QAAO,SAAUiC,GAAU,QAAQ,QAAQsrC,EAAoBtrC,MAC/DoD,KAAI,SAAUjE,GAAc,MAAO,CAAGjE,YAAQ0N,EAAWzJ,WAAYA,MAC1EgsC,EAAa31C,SAZS,SAAU0S,IAGkB,IAA1CtD,EAAMilC,SAASlnC,QAAQuF,EAAMhN,SAC7BgN,EAAMhN,OAAO+E,cAAciI,EAAM/I,eASzC,IAAIqsC,EAAYL,EAAat0C,OAAO00C,GACpC92C,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAGisC,MAClD,mBAAoBA,IAiBxBj8B,EAAYjZ,UAAUgK,eAAiB,SAAUpF,GAC7C,iCAAkC,iBAAkBA,GACpD,IAAIuwC,EAAUh3C,KAAKo1C,SAMnB,OAJI4B,EAAQ1tC,QADY,SAAUiiB,GAAO,OAAOA,EAAIjgB,MAAQ7E,EAAO6E,KAAOigB,EAAIngB,QAAU3E,EAAO2E,SACzDgE,QAClC,iCAAkC,+BAAgC3I,GACtEuwC,EAAQv2C,KAAKgG,GACbzG,KAAK4sB,OACE,YAEU,IADHoqB,EAAQ9oC,QAAQzH,IAK1B,iCAAkC,mBAAoBA,IACtD,QAAWuwC,EAAX,CAAoBvwC,IAJhB,iCAAkC,uCAAwCA,KAYtFqU,EAAYjZ,UAAUo1C,UAAY,WAC9B,OAAOj3C,KAAKo1C,SAASzmC,KAAI,QAAK,SAOlCmM,EAAYjZ,UAAUq1C,OAAS,WAC3B,OAAOl3C,KAAKo1C,SAAS9rC,QAAO,QAAK,YAAYqF,KAAI,QAAK,UA2D1DmM,EAAYoI,QAAU,SAAUmzB,EAAc5vC,GAAU,OAAO,SAAUiE,GAErE,GAAIjE,EAAO2E,QAAUV,EAAW3C,SAASqD,MACrC,OAAO,EAEX,IAAI+8B,EAAKz9B,EAAW3C,SAChBovC,EAAahP,EAAGptB,YAAY+H,MAAM,KAClCs0B,EAAc3wC,EAAO6E,IAAIwX,MAAM,KAGnC,KAAK,QAAOq0B,EAAYC,EAAYt1C,MAAM,EAAIq1C,EAAW/nC,SACrD,OAAO,EAGX,IAAIioC,EAAY,EAAIF,EAAW/nC,aAAU+E,EACrCmjC,EAAoBF,EAAYt1C,MAAM,EAAGu1C,GAAWpkC,KAAK,KACzDskC,EAAgBlB,EAAaiB,GAAmB3uB,gBACpD,OAAOwf,EAAGltB,wBAA0Bs8B,GAAiBA,EAAc/xC,QAEhEsV,EA1QqB,wDCfhC,SAAUyL,EAAQ1mB,GAAU,aAyD5B,IAAI23C,EAAoB,gBAEpBC,EAAe53C,EAAQC,OAAO,SAAU,CAAC,OACrB43C,KAAK,CAAEC,eAAgB,UACvB53C,SAAS,SAkCjC,WACE,IAAIwL,EAAS,CACXqsC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,kBAAkB,GAgCpB,SAASC,EAAUzlC,EAAU0lC,EAAUC,EAAqBC,GAC1D,OAAO,SAAS31C,EAAOoe,EAAMpO,GAC3B,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAIkB,EAAgB5lC,EAAKkd,WAAWuoB,IAChChtC,EAAOmtC,IAAmBC,EAAYz3B,EAAMs3B,IAAyB1lC,EAAK4lC,IAC5E51C,EAAMyB,OAAOuO,EAAKD,IAAW,SAAS+lC,GAEpCA,EAAUH,GAAUG,IAAYA,EAChC13B,EAAKpO,KAAKylC,EAAUK,QAb5B54C,KAAKuL,OAAS,SAASstC,GACrBttC,EAAS1L,EAAQiB,OAAOyK,EAAQstC,IAkElC74C,KAAKU,KAAO,WACV,MAAO,CACL6K,OAAQ,SAAS1F,GACf,OAAO0F,EAAO1F,IAEhBizC,YAAaR,OA5IfE,EAAsB,CAAC,SAAU,IAAK,QAAS,WAAY,SAAU,UAAW,WAEhFG,EAAc,SAASz3B,EAAM63B,GAC/B,IAAiD,IAA7CA,EAAc7qC,QAAQgT,EAAK,GAAG83B,UAChC,OAAO,GA8IXvB,EAAa50C,UAAU,SAAU,CAAC,QAAS,SAASo2C,GAClD,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvDj2C,UAAU,SAAU,CAAC,QAAS,SAASo2C,GACtC,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvDj2C,UAAU,UAAW,CAAC,QAAS,SAASo2C,GACvC,OAAOA,EAAMH,YAAY,UAAW,eAAgBN,GAAqB,MAE1E31C,UAAU,YAAa,CAAC,QAAS,SAASo2C,GACzC,OAAOA,EAAMH,YAAY,YAAa,eAAgBN,GAAqB,MAE5E31C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,UAAW,CAAC,QAAS,SAASo2C,GAEvC,SAASC,EAAiBpmC,EAAMqmC,EAAgBj4B,EAAMk4B,GACpD,OAAOH,EAAM1tC,OAAO4tC,KACjBj4B,EAAKpO,KAAKA,KACVsmC,IAAsBT,EAAYz3B,EAAMs3B,MAClB,WAAtBt3B,EAAKpO,KAAK,SAA6C,UAArBoO,EAAK,GAAG83B,UAG/C,SAASK,EAAiBC,EAAMp4B,GAI9B,OAAQA,EAAKpO,KAAK,SAAYoO,EAAKpO,KAAK,UAAYwmC,IAAUX,EAAYz3B,EAAMs3B,GAYlF,MAAO,CACLrxC,SAAU,IACVxB,QAAS,UACTyB,SAAU,IACVC,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAI+B,EAhBR,SAAkBzmC,EAAMoO,GACtB,IAAIhS,EAAO4D,EAAK5D,KACZoqC,EAAOxmC,EAAKwmC,KAEhB,MAA2B,cAAlBpqC,GAAQoqC,IAAiC,qBAATA,EAA+B,WAC7C,WAAlBpqC,GAAQoqC,IAAiC,kBAATA,EAA4B,QACpD,UAATpqC,GAA0C,gBAAToqC,GAAmC,WAATA,EAAqB,QAAU,GAUpFE,CAAS1mC,GAErB,MAAO,CACL2mC,KAAM,SAAS32C,EAAOoe,EAAMpO,EAAM4mC,GAChC,IAAIC,EAAgBT,EAAiB,WAAY,WAAYh4B,GAAM,GAEnE,SAAS04B,IACP,OAAOF,EAAQG,YAcjB,OAAQN,GACN,IAAK,QACL,IAAK,WACCF,EAAiBE,EAAOr4B,IAC1BA,EAAKpO,KAAK,OAAQymC,GAEhBL,EAAiB,eAAgB,cAAeh4B,GAAM,IACxDpe,EAAMyB,OAAOq1C,EAAiC,UAAVL,EAlB1C,SAA0BO,GAGxB,IAAIlB,EAAW9lC,EAAKtO,OAASk1C,EAAQK,WACrC74B,EAAKpO,KAAK,eAAgB8lC,IAG5B,WACE13B,EAAKpO,KAAK,gBAAiB4mC,EAAQM,SAASN,EAAQK,eAa9CJ,GACFz4B,EAAKpO,KAAK,WAAY,GAExB,MACF,IAAK,QAIH,GAHIumC,EAAiBE,EAAOr4B,IAC1BA,EAAKpO,KAAK,OAAQ,UAEhBmmC,EAAM1tC,OAAO,aAAc,CAC7B,IAAI0uC,GAAqB/4B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDw3C,GAAqBh5B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDy3C,GAAqBj5B,EAAKpO,KAAK,iBAE/BmnC,GACFnnC,EAAKsnC,SAAS,OAAO,SAAgCN,GACnD54B,EAAKpO,KAAK,gBAAiBgnC,MAG3BI,GACFpnC,EAAKsnC,SAAS,OAAO,SAAgCN,GACnD54B,EAAKpO,KAAK,gBAAiBgnC,MAG3BK,GACFr3C,EAAMyB,OAAOq1C,GAAuB,SAAgCE,GAClE54B,EAAKpO,KAAK,gBAAiBgnC,MAI7BH,GACFz4B,EAAKpO,KAAK,WAAY,IAKvBA,EAAKpQ,eAAe,eAAiBg3C,EAAQW,YAAYC,UACzDpB,EAAiB,gBAAiB,eAAgBh4B,GAAM,IAE3DpO,EAAKsnC,SAAS,YAAY,WACxBl5B,EAAKpO,KAAK,kBAAmBA,EAAe,aAI5ComC,EAAiB,eAAgB,cAAeh4B,GAAM,IACxDpe,EAAMyB,QAAO,WACX,OAAOm1C,EAAQa,YACd,SAA+BT,GAChC54B,EAAKpO,KAAK,iBAAkBgnC,cAQzCj3C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,cAAc,WACvB,MAAO,CACLsE,SAAU,IACVxB,QAAS,cACT4C,KAAM,SAASzF,EAAOoe,EAAMpO,EAAM0nC,GAC5B1nC,EAAKpQ,eAAe80C,IAEnBt2B,EAAKpO,KAAK,cACboO,EAAKpO,KAAK,YAAa,kBAK9BjQ,UAAU,UAAU,CAAC,QAAS,SAAU,SAASo2C,EAAO93C,GACvD,MAAO,CACLgG,SAAU,IACVE,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAI72C,EAAKQ,EAAO2R,EAAK2nC,SACrB,OAAO,SAAS33C,EAAOoe,EAAMpO,GAEtB6lC,EAAYz3B,EAAMs3B,KAEjBS,EAAM1tC,OAAO,sBAAwB2V,EAAKpO,KAAK,SACjDoO,EAAKpO,KAAK,OAAQ,UAGhBmmC,EAAM1tC,OAAO,cAAgB2V,EAAKpO,KAAK,aACzCoO,EAAKpO,KAAK,WAAY,IAGpBmmC,EAAM1tC,OAAO,gBAAmBuH,EAAK4nC,WAAc5nC,EAAK6nC,YAAe7nC,EAAK8nC,SAC9E15B,EAAK5gB,GAAG,WAAW,SAASC,GAC1B,IAAIs6C,EAAUt6C,EAAMu6C,OAASv6C,EAAMs6C,QAEnB,KAAZA,GAA8B,KAAZA,KAEwC,IAAxDrC,EAAoBtqC,QAAQ3N,EAAM8F,OAAO2yC,WAAqBz4C,EAAM8F,OAAO00C,mBAG7Ex6C,EAAMgD,iBAERT,EAAMmB,QAGR,WACEtD,EAAGmC,EAAO,CAAEk4C,OAAQz6C,mBASnCsC,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAO,SAASn2C,EAAOoe,EAAMpO,GACvBA,EAAKpQ,eAAe80C,KAEpByB,EAAM1tC,OAAO,aAAgB2V,EAAKpO,KAAK,aAAgB6lC,EAAYz3B,EAAMs3B,IAC3Et3B,EAAKpO,KAAK,WAAY,OA9Z5B,CAoaGyT,OAAQA,OAAO1mB,iECzalBA,QAAQC,OAAO,WAAY,CAAC,OAC3B+C,UAAU,WAAY,CAAC,KAAM,SAAUkE,GACvC,aAgCA,MAAO,CACNjE,MAAM,CACL42C,QAAe,IACf73B,IAAe,QACfiF,IAAe,QACfgD,KAAe,SACfmxB,SAAe,aACfC,SAAe,aACfC,UAAe,cACfC,UAAe,cACfC,WAAe,eACfC,WAAe,eACfC,aAAe,iBACfC,MAAe,UACfC,MAAe,UACfC,YAAe,gBACfC,YAAe,iBAEhBvqC,YAAa,2BACPzL,QAAS,UACToP,SAAS,EACTxM,KAlDI,SAAUtH,EAAQyG,EAAUxG,GAElCA,EAAO+5C,WACVh6C,EAAOg6C,SAAW,WAAW,OAAO,IAGjC/5C,EAAOi6C,YACVl6C,EAAOk6C,UAAY,WAAW,OAAO,IAGlCj6C,EAAOw6C,cACVz6C,EAAOy6C,YAAc,WAAW,IAAIviB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOs6C,QACVv6C,EAAOu6C,MAAQ,cAGZt6C,EAAOy6C,cACV16C,EAAO06C,YAAc,WAAW,IAAIxiB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOu6C,QACVx6C,EAAOw6C,MAAQ,eA4BVz6C,WAAY,yBAInBA,WAAW,qBAAsB,CAAC,SAAU,WAAY,SAAWC,EAAQuC,GAC3E,aAEAvC,EAAO26C,UAAar1B,OAAO7jB,eAAe,iBAAmB6jB,OAAOs1B,UAAUC,iBAAmB,EACjG76C,EAAO86C,SAAWl8C,QAAQoiB,KAAKhhB,EAAOy4C,SAEtCz4C,EAAO4gB,IAAM5gB,EAAO4gB,KAAO,EAC3B5gB,EAAO6lB,IAAM7lB,EAAO6lB,KAAO,EAC3B7lB,EAAO6oB,KAAO7oB,EAAO6oB,MAAQ,GAE7B7oB,EAAOi6C,SAAWj6C,EAAO86C,WAAa96C,EAAOy4C,QAE7Cz4C,EAAOm6C,UAAYn6C,EAAOm6C,WAAa,GACvCn6C,EAAO+6C,cAAgB/6C,EAAOm6C,UAAYn6C,EAAO6oB,KACjD7oB,EAAOo6C,WAAap6C,EAAOo6C,YAAc,GACzCp6C,EAAOq6C,WAAar6C,EAAOq6C,YAAcr6C,EAAOm6C,UAChDn6C,EAAOs6C,aAAet6C,EAAOs6C,cAAgBt6C,EAAOo6C,WAEpD,IAAI1nB,EAAO1yB,EAAO6lB,IAAM7lB,EAAO4gB,IAC/Bo6B,EAAQtoB,EAAO1yB,EAAO6oB,KACtBoyB,EAAUj7C,EAAOsD,OAAO,WAAW,WAClCtD,EAAOi6C,SAAWj6C,EAAO86C,WAAa96C,EAAOy4C,WAG9CyC,EAAW,SAAUC,GACpB,OAAQA,EAAM,GAAKH,EAAQtoB,GAG5B1yB,EAAOo7C,cAAgB,WACtB,OAAO,IAAIz6C,MAAMq6C,IAGlBh7C,EAAOq7C,cAAgB,SAAUF,GAChC,IAAIG,EAAQ,EAAEt7C,EAAO6oB,KAErB,OADW7oB,EAAOm6C,UAAUmB,GAAQH,EAAMG,IAI3Ct7C,EAAOu7C,WAAa,SAAUJ,GAC7B,OAAOD,EAASC,IAAUn7C,EAAOy4C,QAAQz4C,EAAO4gB,KAGjD5gB,EAAOw7C,aAAe,WACjBx7C,EAAOk6C,cAAgBl6C,EAAOg6C,YACjCh6C,EAAO06C,YAAY,CAACe,OAAOz7C,EAAOy4C,UAAU3uC,MAAK,WAChD9J,EAAOy4C,QAAUz4C,EAAO4gB,IACxB5gB,EAAOw6C,MAAM,CAACiB,OAAOz7C,EAAOy4C,cAK/Bz4C,EAAO07C,SAAW,SAAUP,GAC3B,IAAKn7C,EAAOg6C,WAAY,CACvB,IAAI2B,EAAW/8C,QAAQoiB,KAAKhhB,EAAO4gB,IAAMs6B,EAASC,IAElDn7C,EAAOy6C,YAAY,CAACgB,OAAOE,IAAW7xC,MAAK,WAC1C9J,EAAOy4C,QAAUkD,EACjBp5C,GAAS,WACRvC,EAAOu6C,MAAM,CAACkB,OAAOz7C,EAAOy4C,kBAMhCz4C,EAAOsB,IAAI,YAAY,WACtB25C,UAID3jC,IAAI,CAAC,iBAAkB,SAAUjI,GACjC,aAEAA,EAAeusC,IAAI,2BAElB,0iDCtHF,SAASC,EACP7mC,EACAL,EACA6C,EACAskC,EACAh2C,EACAi2C,EACAC,EACAC,EACAC,EACA35C,GAEA,MAAM45C,EAAKp9C,KA4CX,SAASq9C,EAAOC,GAEdN,EAAqBO,cAAcL,EAAgB,CAAEI,GAAAA,IAClDvyC,MAAMvG,IAhBX,IAAqBg5C,EAiBfvnC,EAAWwnC,OAASj5C,EAjBLg5C,GAkBI,IAAPF,EAAc,OAAS,OAjBvC1nC,EAAQwE,OAAOsjC,YACb,CACEF,IAAAA,GAEF,KAcEh6C,GAAS,KACPyS,EAAWhS,eAGdoe,MAAM26B,EAAqBW,gBA8MhCP,EAAG/vC,QArGH,WACEmZ,QAAQo3B,MAAM,oCAAqC3nC,EAAW4nC,SAC9D5nC,EAAW6nC,OAAS,OAEpB,MAAMC,EAAY9nC,EAAW+nC,SAASC,MAChCC,EAAajoC,EAAW+nC,SAASG,UACjCC,EACJnoC,EAAW+nC,SAASK,iBAAmBpoC,EAAW+nC,SAASG,UACvDG,EAAeroC,EAAW+nC,SAASO,aACnCC,EAAmBvoC,EAAW+nC,SAASS,gBACvCC,EAAgB58B,KAAKgF,IACzBT,SAASs4B,gBAAgBC,aACzBr4B,OAAOs4B,aAAe,GAElBC,EAAez4B,SAASs4B,gBAAgBI,YAG9C14B,SAASs4B,gBAAgBK,MAAMC,YAAY,oBAAqBlB,GAChE13B,SAASs4B,gBAAgBK,MAAMC,YAAY,qBAAsBf,GACjE73B,SAASs4B,gBAAgBK,MAAMC,YAC7B,4BACAb,GAEF/3B,SAASs4B,gBAAgBK,MAAMC,YAC7B,uBACAX,GAEFj4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,2BACAT,GAEFn4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,wBACAP,GAEFr4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,uBACAH,GAGF,IAAII,GAAK,EAET,MAAMC,EAA8B36C,GAChB,OAAVA,GAAkBA,EAAMyR,EAAWJ,WAAc,GAGrDupC,EAAwBpC,EAAqBqC,QACjDlC,GACApyC,KAAKo0C,GACDG,EAAuBtC,EAAqBqC,QAChDnC,GACAnyC,KAAKo0C,GACPp4C,EAAG0U,IAAI,CAAC2jC,EAAuBE,IAC5Bv0C,MAAK,IAAiC,IAA/Bw0C,EAAcC,GAAiB,EACrCvpC,EAAW4nC,QAAU0B,EACrBtpC,EAAWwnC,OAAS+B,EAEhBvpC,EAAW4nC,QAAQ4B,aAAexpC,EAAWwnC,OAAOH,GACtD4B,GAAK,EAELjpC,EAAWwnC,OAAOH,IAAK,EAGa,iBAAlCrnC,EAAW+nC,SAAS0B,WACtBrC,EAAO6B,GAzMbzmC,EAAOi5B,GAjBT,WAAoB,QAClB,MAAMiO,EAAS1pC,EAAW+nC,SAAS2B,OAC7B9B,IAAU5nC,MAAAA,GAAA,UAAAA,EAAY4nC,eAAZ,mBAAqB4B,mBAArB,UAAkCp0C,IAE5Cu0C,EACJrQ,OAAOt5B,EAAW+nC,SAAS6B,kBAC3BtQ,OAAOt5B,EAAW+nC,SAAS8B,qBACzBvQ,OAAOt5B,EAAW+nC,SAAS6B,iBAE/B,SAAMhC,IAAa+B,GAAYD,GAQrBI,GAAa,aAAe,cAAe,KAAM,CACzDlqC,SAAU,YA8MR,IAAI2nC,EAAM,GAKRA,EAHAvnC,EAAW+nC,SAAS2B,SACnB1pC,EAAW+nC,SAASgC,gBAEf,OAEA,UAGRpqC,EAAQwE,OAAOsjC,YACb,CACEF,IAAAA,EACAO,UAAAA,EACAG,WAAAA,EACAQ,cAAAA,EACAI,aAAAA,GAEF,KAGF,MAAME,EAAQ34B,SAAS45B,cAAc,SACrC55B,SAASpB,KAAKi7B,YAAYlB,GAC1BA,EAAMmB,MAAMC,WACV,2BAA6BnqC,EAAW+nC,SAASC,MAAQ,kBAG5D57B,MAAM26B,EAAqBW,iBAKhCP,EAAGiD,MA5MH,WACE,MAAMZ,EAAcxpC,EAAW4nC,QAAQ4B,YAEvC,GAAIA,GAAeA,EAAYp0C,GAAI,CAEjC,MAAMi1C,EAAUvD,EACbuD,UACAlmC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,eAC9CC,qBAAoB,GACpBrN,MACCl9B,EAAW+nC,SAASyC,iBAClB,yCAEHC,GAAG,MACHv8C,OAAO,UAEV44C,EACG4D,KAAKL,GACLv1C,MAAK,WACJ,OAAOkyC,EAAI2D,gBAAgBC,aAAa,CACtCx1C,GAAIo0C,EAAYp0C,GAChBy1C,QAAQ,EACRC,YAAa,YAEZC,YAEJj2C,MAAK,WACJ0N,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,eAGbwM,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM,YAAa6nB,QA6KnCkwB,EAAGC,OAASA,EACZD,EAAG6D,SAzKH,WACE,MAAM3M,EAAWvtC,EAAGkF,QACdwzC,EAAcxpC,EAAW4nC,QAAQ4B,YA4DvC,OA1DIA,GAAeA,EAAYp0C,IAC7B4xC,EAAI2D,gBACDM,YAAY,CACXC,MAAO1B,EAAYp0C,GACnB+1C,YAAY,EACZC,eAAe,IAEhBL,SAASj2C,MAAK,SAAUpD,GACvB2sC,EAAS3nC,QACP20C,GAAAA,CAAK35C,EAAK45C,KAAKz/C,MAAM,IAAI,SAAU0/C,GACjC,IAAIC,EASJ,GAPsB,OAAlBD,EAAIE,YACND,EACExrC,EAAW+nC,SAAS2D,eACpB1rC,EAAW4nC,QAAQ3uB,MACnB,UAAYsyB,EAAII,WAGE,QAAlBJ,EAAIE,UACN,OAAQzrC,EAAW+nC,SAAS6D,iBAC1B,IAAK,gBACHJ,EAASD,EAAIM,OACT7rC,EAAW+nC,SAAS+D,WAAaP,EAAIM,OACrC,SACJ,MAEF,IAAK,cACHL,EAASD,EAAIM,OACTN,EAAIQ,KAAKC,OAAST,EAAIQ,KAAKE,SAC3B,SACJ,MAEF,IAAK,iBACHT,EAASD,EAAIM,OAASN,EAAIQ,KAAKE,SAAW,SAC1C,MAEF,QACET,EAASD,EAAIM,OACT7rC,EAAW+nC,SAAS+D,WAAaP,EAAIM,OACrC,SAKV,MAAO,CACLL,OAAQA,EACR3d,QAAS0d,EAAIW,KACbC,UAAWC,GAAAA,CAAOb,EAAIY,WAAWx6B,OAAO,+BAK/CvF,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,MAIbonB,EAAS7wC,SA4GlB25C,EAAGkF,eA7OH,WACE,MAA4C,YAArCrsC,EAAW+nC,SAASuE,aAA6B,OAAS,OA6OnE,MAAMC,EAAgB,CACpB7C,OAAQ,CAAC,SAAU,OAAQ,UAAW,UAAW,aACjD8C,QAAS,CAAC,YAKZlvC,OAAO+6B,eAAer4B,EAAY,cAAe,CAC/CvF,MACE,IAAIpK,EAAS2P,EAAW+nC,SAAS0E,aAMjC,OALIF,EAAc7C,OAAOrmC,SAASrD,EAAW6nC,QAC3Cx3C,EAAS2P,EAAW+nC,SAAS2E,cACpBH,EAAcC,QAAQnpC,SAASrD,EAAW6nC,UACnDx3C,EAAS2P,EAAW+nC,SAAS4E,gBAExBt8C,KAIXigB,OAAOs8B,iBACL,WACA,SAAU3sC,GACa,SAAjBA,EAAIvO,KAAKuO,IACXmnC,GAAO,GACmB,SAAjBnnC,EAAIvO,KAAKuO,KAClBmnC,GAAO,MAGX,2eCvTJ,SAASyF,EAAS7sC,EAAYF,GAE5B,MAAM3H,EAAS2H,EAAUo5B,SAGzBl5B,EAAW+nC,SAAW,CACpB+E,OAAQ,UACRC,MAAM,GAGRC,GAAAA,CAAO70C,GAAQ,SAAU5J,EAAOqB,GAChB,KAAVrB,GAAiB0+C,GAAAA,CAAO1+C,KACZ,SAAVA,IACFA,GAAQ,GAGI,UAAVA,IACFA,GAAQ,GAGVyR,EAAW+nC,SAASn4C,GAAOrB,MAI/ByR,EAAWJ,SAAWI,EAAW+nC,SAASnoC,SAC1CI,EAAWwnC,OAAS,CAAEH,IAAI,GAC1BrnC,EAAW4nC,QAAU,GAWvB,SAASsF,EACPC,EACA/uC,EACAgvC,EACAC,EACAC,GAEAlvC,EAAkBgB,WAAU,GAGvBguC,EAAcpjD,SAAS0R,QAAQjB,MAClC2yC,EAAcpjD,SAAS0R,QAAQjB,IAAM,IAIvC2yC,EAAcpjD,SAAS0R,QAAQjB,IAAI,qBACjC,gCAEF2yC,EAAcpjD,SAAS0R,QAAQjB,IAAI,iBAAmB,WACtD2yC,EAAcpjD,SAAS0R,QAAQjB,IAAI8yC,OAAS,WAG5CF,EAA4BG,UAAUF,GAGtCH,EACG31C,MAAM,MAAO,CACZkxB,UAAU,IAEXlxB,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAasyC,EACb1iD,WAAY,4BAEbyM,MAAM,aAAc,CACnBgE,IAAK,UACLL,YAAauyC,EACb3iD,WAAY,2BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAawyC,EACb5iD,WAAY,4BAEbyM,MAAM,WAAY,CACjBgE,IAAK,QACLL,YAAayyC,EACb7iD,WAAY,yBAEbyM,MAAM,gBAAiB,CACtBgE,IAAK,aACLL,YAAa0yC,EACb9iD,WAAY,8BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAa2yC,EACb/iD,WAAY,0OC3FlB,SAASgjD,EACP/tC,EACAwC,EACAwrC,EACAhH,EACAl2C,EACAi2C,EACAG,EACAD,GAEA,MAAME,EAAKp9C,KAIX,SAASmmC,EAAY3gC,GACnB,OAAO,SAAU0nB,GACfkwB,EAAG8G,OAAO1+C,GAAQ0nB,EAAIvlB,KAEtB,MAAMw8C,EAAQF,EACXG,SACAC,YACCpuC,EAAW+nC,SAASsG,0BAClB,yBAEHC,WAAW,oBACXC,SAAS,OAEZP,EAAStD,KAAKwD,IAIlB,SAASM,IACPxuC,EAAWyuC,SAAU,EAkBvB,SAASC,IACH1uC,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAAS4lC,IACP2B,EAAGwH,KAAO,GACVxH,EAAGyH,QAAU,KACbzH,EAAG0H,UAAY,KACf1H,EAAG2H,SAASC,eACZ5H,EAAG2H,SAASE,uBAELhvC,EAAW4nC,QAAQ4B,YAE1BxpC,EAAWivC,gBAAiB,EAiD9B9H,EAAG/vC,QAjFH,WACEmZ,QAAQo3B,MAAM,sCAAuC3nC,EAAW4nC,SAChE5nC,EAAW6nC,OAAS,UAGpB/2C,EAAG0U,IAAI,CACLuhC,EAAqBmI,WAAWhI,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBmI,WAAWjI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,IAAOkL,EAAWyuC,SAAU,KAsEtCtH,EAAGgI,OA1CH,WACEnvC,EAAWyuC,SAAU,EAEjBzuC,EAAW4nC,QAAQ4B,aAAexpC,EAAW4nC,QAAQ4B,YAAYp0C,GACnE4xC,EAAI2D,gBACDP,MACCgF,GAAAA,CACE,CACEh6C,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,GACnCi6C,WAAYrvC,EAAW+nC,SAASsH,WAChCC,SACEtvC,EAAW+nC,SAAS2D,eAAiB1rC,EAAW4nC,QAAQ3uB,MAE5DkuB,EAAGwH,OAGN5D,SAASj2C,MAAK,kBACNqyC,EAAG8G,OAAOkB,OAEjB,MAAMjB,EAAQF,EACXG,SACAC,YACCpuC,EAAW+nC,SAASwH,0BAClB,2BAEHjB,WAAW,oBACXnqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjD0D,EAAStD,KAAKwD,MAEfp5C,KAAK0wC,GACL1wC,KAAK45C,GACLtiC,MAAM8jB,EAAY,WAClBsf,QAAQhB,IAEXA,IACAte,EAAY,YAOhBiX,EAAGsI,KAhDH,WACEjK,IACAkJ,KAgDFvH,EAAGwH,KAAO,GACVxH,EAAG8G,OAAS,GCjId,SAASyB,EAAW1vC,EAAY2vC,GAC9B,MAAMC,EAAgB,CACpBx6C,GAAI,MACJkW,MAAOtL,EAAW+nC,SAASz8B,OAGvB07B,EAAM,GAyEZ,OAvEAA,EAAI6I,QAAU7vC,EAAW+nC,SAAS+H,OAAS,QAE3C9I,EAAI+I,YAAcJ,EAChB3I,EAAI6I,QAAU,oBACdD,EACA,CACE5c,OAAQ,CACNgd,OAAQ,OACRx0C,IAAKwrC,EAAI6I,QAAU,4BAErBrD,QAAS,CACPwD,OAAQ,OACRx0C,IAAKwrC,EAAI6I,QAAU,6BAErBI,UAAW,CACTD,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,8BAKzB7I,EAAI2D,gBAAkBgF,EACpB3I,EAAI6I,QAAU,wBACdD,EACA,CACEzpC,OAAQ,CACN6pC,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,yBAErBjF,aAAc,CACZoF,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,uCAErBzF,MAAO,CACL4F,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,+BAErB5E,YAAa,CACX+E,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,wCAErBK,iBAAkB,CAChBF,OAAQ,OACRx0C,IAAKwrC,EAAI6I,QAAU,0CACnBn0C,QAAS,CACP,oBAAgBwC,GAElBiyC,iBAAkBvmD,QAAQ6c,UAE5B2pC,mBAAoB,CAClBJ,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,6CAErBQ,QAAS,CACPL,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,mCAKzB7I,EAAIsJ,YAAcX,EAChB3I,EAAI6I,QAAU,oBACdD,EACA,CACEzpC,OAAQ,CACN6pC,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,uBAKlB7I,mTChET,SAASuJ,EACPvlD,EACAgV,EACAzS,EACAijD,EACAC,EACAjuC,EACApI,EACA4zC,EACAhH,EACAD,EACAG,EACAD,GAEA,MAAME,EAAKp9C,KACX,IAAI2mD,EACAC,EACAC,EACAC,EA4BJ,SAASC,IAEPhgD,EAAAA,GAAAA,IAAO,CACLi2C,EAAqBmI,WAAWhI,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBmI,WAAWjI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,KAhBJkL,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,eAoB/C,SAASmxC,IACPxjD,GAAS,WACP,MAAMT,EAAU2jD,EAAU,GAAGO,uBAAuB,iBAAiB,GAEjElkD,IACFA,EAAQmkD,UAAYnkD,EAAQokD,iBAKlC,SAASC,IACPhK,EAAG8G,OAAS,GACZjuC,EAAWzJ,MAAM,QAEjB,MAAM23C,EAAQF,EACXG,SACAC,YACC,8CAEDE,WAAW,yBAA2BtuC,EAAW+nC,SAASuE,cAC1DnoC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjD0D,EAAStD,KAAKwD,GAIhB,SAAShe,EAAY3gC,GACnB,OAAO,SAAU0nB,GAAK,UAEC,OAAnB,UAAAA,EAAIvlB,YAAJ,eAAU0/C,OACkB,mBAA5B,UAAAn6B,EAAIvlB,YAAJ,mBAAUqnC,eAAV,eAAmB9/B,OAEnB+G,EAAW+nC,SAAS2B,QAAS,EAC7B1pC,EAAW+nC,SAASsJ,eAAgB,EACpC7uC,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,cAGZunC,EAAG8G,OAAO1+C,GAAQ0nB,EAAIvlB,KACtBq/C,MAKN,SAASO,EAAYzjB,GACnBmZ,EAAI+I,YACD/c,OAAOnF,GACPkd,SAASj2C,MAAK,SAAUpD,GACvBy1C,EAAG8G,OAAS,GACZ,IAAIsD,GAAkB,EAClBtE,GAAAA,CAAOjtC,EAAW4nC,QAAQ4B,eAC5BxpC,EAAW4nC,QAAQ4B,YAAc,CAC/Bp0C,GAAI1D,EAAK83C,YAAYp0C,IAEvBm8C,GAAkB,GAEfvxC,EAAW4nC,QAAQ4J,qBACtBxxC,EAAW4nC,QAAQ4J,oBAAqB,EACxCD,GAAkB,GAGhBA,GACFxK,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAEhCgJ,EAAU,GAAGe,aAAaC,QAAQ,IAElCX,OAED3kC,MAAM8jB,EAAY,qBA0EvB,SAASyhB,IAEL3xC,EAAW4nC,SACX5nC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYp0C,IAE/B4xC,EAAI2D,gBACDlwC,IAAI,CACHrF,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,KAEpC21C,SAASj2C,MAAK,SAAUpD,UAChBy1C,EAAG8G,OAAO0D,eAGbjgD,EAAKm5C,SACP7qC,EAAW4nC,QAAQ4B,YAAYqB,QAAS,EACxC9D,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAEL,cAArBh2C,EAAKkgD,YACPpvC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAE7C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,gBAIhDwM,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACHkxC,IACA,MACF,KAAK,IACHtuC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAQ1B,SAAS46B,EAAM9M,GACb,MAAMmH,EAAOwE,EAAU,GAAGe,aAAaK,UAEnC/M,GAA6B,KAAnBA,EAAOH,SAAkBG,EAAOgN,UAK1ChN,GAA6B,KAAnBA,EAAOH,SAKR,KAATsH,GAKJoF,EACElC,GAAAA,CACE,CACElD,KAAMA,GAERlsC,EAAW4nC,UAqCjB,SAASqD,IAAc,QACjBjrC,MAAAA,GAAJ,UAAIA,EAAY4nC,eAAhB,iBAAI,EAAqB4B,mBAAzB,OAAI,EAAkCp0C,IACpC4xC,EAAI2D,gBACDM,YAAY,CACXC,MAAOlrC,EAAW4nC,QAAQ4B,YAAYp0C,GACtC48C,cAAc,EACd58C,GAAIy7C,QAAiB3yC,IAEtB6sC,SAASj2C,MAAK,SAAUpD,GAIvB,UAHOy1C,EAAG8G,OAAOzE,YAGb93C,EAAKuC,MAAO,CACd,IAAIg+C,GAAQ,EACR7qC,EAAI,EACR,IAAKA,EAAI,EAAG6qC,GAAQ,EAAO7qC,EAAI1V,EAAK45C,KAAKnyC,OAAQiO,IAAK,CACpD,MAAMrI,EAAImzC,GAAAA,CAAMlyC,EAAWmyC,SAAU,CACnC/8C,GAAI1D,EAAK45C,KAAKlkC,GAAGhS,KAEd2J,EAGMrN,EAAK45C,KAAKlkC,GAAGywB,OACtB94B,EAAE84B,MAAO,IAHToa,GAAQ,EACRjyC,EAAWmyC,SAAS3nD,KAAKkH,EAAK45C,KAAKlkC,KAMN,QAA3B1V,EAAK45C,KAAKlkC,GAAGqkC,WAAwB/5C,EAAK45C,KAAKlkC,GAAGywB,OAtC3CziC,EAuCK1D,EAAK45C,KAAKlkC,GAAGhS,GAtChC4xC,EAAIsJ,YACRnqC,OAAO,CACN/Q,GAAIA,EACJyiC,MAAM,IAEPkT,SAAS3+B,OAAM,SAAU6K,GACxB1G,QAAQnhB,MAAM6nB,OAoCNg7B,GAEFlB,IAGEr/C,EAAK45C,KAAKlkC,EAAI,GAAGywB,OACnBgZ,EAAgBn/C,EAAK45C,KAAKlkC,EAAI,GAAGhS,IAG/By7C,IAAkB7wC,EAAW4nC,QAAQ4J,oBACvCzK,EAAqBO,cAAcJ,EAAiB,IAC/ClnC,EAAW4nC,QACd4J,oBAAoB,IACnB18C,MAAMvG,IACPyR,EAAW4nC,QAAUr5C,KAzDnC,IAAuB6G,KA8DhBgX,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAvW1BkwB,EAAG8G,OAAS,GACZjuC,EAAWmyC,SAAW,GACtBhL,EAAGiL,aAAe,CAChBC,gBAAgB,EAChBC,YAAY,EACZC,OAAO,EACPjgD,MAAM,EACNkgD,WAAY,UAGdrL,EAAGsL,cAAgB,CACjBC,uBAAuB,GAuYzBvL,EAAG/vC,QArCH,WACEmZ,QAAQo3B,MAAM,mCAAoC3nC,EAAW4nC,SAC7D5nC,EAAW6nC,OAAS,OACpB7nC,EAAWyuC,SAAU,EACrBzuC,EAAW+nC,SAAS4K,UAAW,EAE/BxL,EAAGyL,aAAe,GAGhB5yC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYqB,OAG/BiG,KAGAa,IAGAhB,EAAsBH,EAAUvF,EAAa,KAC7C2F,EAAyBJ,EAAUmB,EAAgB,MAGrDjB,EAAYmC,EAAE,iBAAiBpB,aAAa,CAC1CqB,YAAa9yC,EAAW+nC,SAASgL,oBAAsB,iBACvD3oD,OAAQ,CACN4oD,MAAO,SAAUC,EAAQlO,GACvB8M,EAAM9M,IAERmO,MAAO,WACLnpD,KAAKopD,gBAQbhM,EAAG0K,MAAQA,EACX1K,EAAGiM,aAzIH,WACE,MAAMlH,EAAOwE,EAAU,GAAGe,aAAaK,UAG1B,KAAT5F,IAKJoF,EACElC,GAAAA,CACE,CACElD,KAAMA,GAERlsC,EAAW4nC,UAIf8I,EAAU,GAAGe,aAAa0B,aAwH5BhM,EAAGx4C,UAjSH,SAAmB+C,GACjB,GAAIA,EAAKie,KAxHS0jC,SA0HhB,YADAlC,IAIF,MAAMmC,EAAK,IAAIC,SAEfD,EAAGlvB,OAAO,OAAQ1yB,EAAK7B,MAEvBuK,EACGopC,KACCxjC,EAAW+nC,SAAS+H,OAClB,0BACA9vC,EAAW4nC,QAAQ4B,YAAYp0C,GAC/B,4BACA4K,EAAW+nC,SAASz8B,MACtBgoC,EACA,CACEnD,iBAAkBvmD,QAAQ6c,SAC1B/K,QAAS,CACP,oBAAgBwC,KAIrBpJ,MAAK,SAAUpD,IACdA,EAAOA,EAAKA,MAEH0D,IACP+xC,EAAG8G,OAAS,GAEZqD,EACElC,GAAAA,CACE,CACElD,KACE,YACAlsC,EAAW+nC,SAAS+H,OACpB,0BACA9vC,EAAW4nC,QAAQ4B,YAAYp0C,GAC/B,iCACA1D,EAAK0D,GACL,UACA4K,EAAW+nC,SAASz8B,MACpB,qBACA5Z,EAAKnC,KACL,OACFikD,aAAc9hD,EAAK0D,IAErB4K,EAAW4nC,WAIf1X,EAAY,oBAEbA,EAAY,oBA4OnBiX,EAAGgK,gBAAkBA,EAGrBnmD,EAAOsB,IAAI,YA5OX,WACEkkD,EAAUtiD,OAAOyiD,GACjBH,EAAUtiD,OAAO0iD,GAEjBD,EAAsB,KACtBC,EAAyB,QAwO3B5wC,EAAW1T,IAAI,aArOf,SAAoBoF,EAAMnH,GACpBA,GACFA,EAASkpD,GAAAA,CAAQzzC,EAAWmyC,sWCjNlC,SAASuB,EACP1oD,EACAgV,EACA2zC,EACA3M,EACAgH,EACAv8C,EACA2I,GAEA,MAAM+sC,EAAKp9C,KACX,IAAI6pD,EAAU,KACVC,EAAgB,KACpB7zC,EAAW8zC,UAAY,GAEvB,MAAMC,EAAkB,CACtBC,sBAAsB,EACtBC,mBAAmB,EACnB9+B,QAAS,SAAU5mB,GACjB,MAAqB,kBAAVA,GACDA,EAAQ,IAAM,IAEjBA,IA+IX,SAAS2lD,WACA/M,EAAG8G,OAAOkB,OACjBnvC,EAAWzJ,MAAM,QAGjB4wC,EAAGgN,OAASC,GAAAA,CAAWP,GAEvB1M,EAAGwH,KAAO,GACVxH,EAAG2H,SAASC,eACZ5H,EAAG2H,SAASE,gBAEZ,MAAMd,EAAQF,EACXG,SACAC,YACCpuC,EAAW+nC,SAASwH,0BAClB,2BAEHjB,WAAW,yBAA2BtuC,EAAW+nC,SAASuE,cAC1DnoC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjD0D,EAAStD,KAAKwD,GA/JhB/G,EAAGkN,YAAc,SAAU/kD,GACzB,OAAOqkD,EAAKU,YAAY/kD,IAkT1B63C,EAAGmN,iBAtDH,SAA0BnO,GAExB,MAAMoO,EAAWpN,EAAGgN,OAAOhO,GACrBqO,EAAa/iD,EAASoZ,KAAK,gBACjC,GAAI2pC,EAAWr7C,OAAQ,CACrB,MAAMs7C,EAAS7qD,QAAQkD,QACrB0nD,EAAW,GAAGlK,cAAc,mBAExB3tC,EAAQ/S,QAAQkD,QACpB0nD,EAAW,GAAGlK,cAAc,qBAExBoK,EAAQD,EAAO5pC,KAAK,SAEtB6pC,EAAMv7C,QACRu7C,EAAMC,IAAI,UAAW,QAGvBF,EAAOpqD,GAAG,SAAS,KACjBqqD,EAAMC,IAAI,UAAW,QACI,mBAAlBh4C,EAAMi4C,QACTj4C,EAAMi4C,QAAQ,SACdj4C,EAAM,GAAGk4C,WAGfl4C,EAAMtS,GAAG,UAAWgiB,IAClBrhB,EAAOgD,QAAO,WACwB,iBAAzBumD,EAASO,MAAM1lD,QACxBmlD,EAASO,MAAM1lD,MAAQ,MAKzB,MAAMmB,EAAQ5E,MAAMstB,KAAK5M,EAAEjc,OAAOG,OAE5BwkD,EAnUL,QAmUiBR,EAASj/C,OAAOqa,KACdpf,EAAMykD,MAAMnlD,GAASA,EAAK8f,MAAQolC,KAKpDR,EAASrqD,QAAU,GACnBqqD,EAASO,MAAM1lD,MAAQmlD,EAASj/C,OAAO2/C,eAtLjD,SAAyBF,GACvB5N,EAAG8G,OAAS,GACZjuC,EAAWzJ,MAAM,QACjB,MAAM23C,EAAQF,EACXG,SACAC,YAAY,yCAA2C2G,EAAY,MACnEzG,WAAW,yBAA2BtuC,EAAW+nC,SAASuE,cAC1DnoC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBACjD0D,EAAStD,KAAKwD,GA+KNiD,CAAgBoD,EAASj/C,OAAOqa,OAEhC4kC,EAASrqD,QAAUqG,EAAMmI,KAAK7I,IAC5B,MAAM,KAAEN,EAAF,KAAQogB,EAAR,KAAc1W,GAASpJ,EAC7B,MAAO,CAAEN,KAAAA,EAAMogB,KAAAA,EAAM1W,KAAAA,EAAMpJ,KAAAA,MAG/Bs3C,EAAGwH,KAAK4F,EAASO,MAAM5X,OAASqX,EAASrqD,gBAkBjDi9C,EAAG+N,eANH,SAAwBX,EAAUpO,GAGhCoO,EAASrqD,QAAQqf,OAAO48B,EAAO,GAC/BgB,EAAGwH,KAAK4F,EAASO,MAAM5X,OAASqX,EAASrqD,SAuB3Ci9C,EAAGgO,eAfH,SAAwBZ,GACtBhkC,QAAQN,IAAI,kBAAmBskC,GAC/B,MAAMC,EAAa/iD,EAASoZ,KAAK,gBAC3BlO,EAAQ/S,QAAQkD,QACpB0nD,EAAW,GAAGlK,cAAc,sBAExB,eAAE8K,EAAF,OAAkBxqC,GAAW2pC,EAASj/C,OACxC8/C,GACFz4C,EAAME,KAAK,WAAY,YAErB+N,GACFjO,EAAM,GAAG04C,aAAa,SAAUzqC,IAapCu8B,EAAGmO,uBAPH,WACE,MAAMC,EAAW5pD,MAAMstB,KAAKxnB,EAASoZ,KAAK,oBACpC2qC,EAAUD,EAASA,EAASp8C,OAAS,GACvCq8C,GAAWA,EAAQvuC,gBACrBuuC,EAAQvuC,kBAMZkgC,EAAG/vC,QAzUH,WACEmZ,QAAQo3B,MAAM,sCAAuC3nC,EAAW4nC,SAChE5nC,EAAW6nC,OAAS,UAGpBV,EAAGS,QAAU,CACXxyC,GAAI4K,EAAW+nC,SAAS3yC,GACxBqgD,cAAe,YACfx8B,KA3BK,YAAcy8B,GAAAA,CAAQ,EAAG,MA8BhC11C,EAAW+nC,SAAS4K,UAAW,EAC/B3yC,EAAWyuC,SAAU,EAErBzH,EAAI+I,YACDE,UAAU,CACT76C,GAAI4K,EAAW+nC,SAAS3yC,GACxBs0C,QAAQ,IAETqB,SAASj2C,MAAK,SAAUpD,GACnBA,EAAKuC,QACP2/C,EAAUliD,EAAKkiD,QACfC,EAAgBO,GAAAA,CAAW1iD,EAAK45C,MAChCnE,EAAGgN,OAASC,GAAAA,CAAWP,OAG1B/+C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI+/B,EAAGgN,OAAOh7C,OAAQiO,IAAK,CACzC,MAAMuuC,EAAQxO,EAAGgN,OAAO/sC,GAExB,GADApH,EAAW8zC,WAAa6B,EAAM18C,UACH,IAAhB08C,EAAMb,OACXa,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAAS3iD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C85C,EAAG2O,UAAU1uC,GAAKyuC,EAAOF,EAAMb,MAAMc,eAK5CxpC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,MAEfu4B,SAAQ,WACP,GAAIxvC,EAAW+nC,SAASsJ,cAAe,CACrCrxC,EAAW+nC,SAASsJ,eAAgB,EAEpC,MAAMnD,EAvDLF,EACJG,SACAC,YACC,oEAED2H,UAAU,KACVzH,WAAW,oBACXnqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAiD3C0D,EAAStD,KAAKwD,QA4RtB/G,EAAGgI,OA7LH,WAEEnvC,EAAWyuC,SAAU,EAErB,MAAM/8C,EAAO,IAAKy1C,EAAGwH,MAErB,IAAK,IAAIvnC,EAAI,EAAGA,EAAI+/B,EAAGgN,OAAOh7C,OAAQiO,IAAK,CACzC,MAAMuuC,EAAQxO,EAAGgN,OAAO/sC,GACpBuuC,EAAMb,YAA4C,IAA5BpjD,EAAKikD,EAAMb,MAAM5X,SAEpC+P,GAAAA,CAAO0I,EAAMK,WAChB7O,EAAGS,QAAQ+N,EAAMK,SAAWrqD,MAAMoQ,QAAQrK,EAAKikD,EAAMb,MAAM5X,QACvDxrC,EAAKikD,EAAMb,MAAM5X,OAAOlgC,OACxBtL,EAAKikD,EAAMb,MAAM5X,QAGnB91B,IAAMwsC,IACH3G,GAAAA,CAAOjtC,EAAW+nC,SAAS0N,iBAC9BtO,EAAGS,QAAQ6N,cAAgBz1C,EAAW+nC,SAAS0N,cAC/CtO,EAAGS,QAAQ3uB,KAAOttB,MAAMoQ,QAAQrK,EAAKikD,EAAMb,MAAM5X,QAC7CxrC,EAAKikD,EAAMb,MAAM5X,OAAOlgC,OACxBtL,EAAKikD,EAAMb,MAAM5X,SAIN,WAAfyY,EAAM18C,OACRvH,EAAKikD,EAAMb,MAAM5X,OAASxrC,EAAKikD,EAAMb,MAAM5X,OAAOxkC,KAC/C+U,GAASA,EAAK5d,SAMvB,MAAMomD,EAAetqD,MAAMoQ,QAAQorC,EAAGgN,QAClChN,EAAGgN,OAAO9gD,QAAQsiD,GAAyB,WAAfA,EAAM18C,OAClC,GAEEi9C,EAAU9G,GAAAA,CACd,CACElD,KAAMx6C,GAERy1C,EAAGS,SAGCuO,EAA4B,MAARzkD,GAAgBukD,EAAa98C,OAAS,EAC1Di9C,EAAyB,OAAT1kD,GAA0C,OAAzBqW,KAAKE,UAAUvW,GAnFxD,IAAgB2kD,EAnDK9mD,GAuIG4mD,GApFRE,EAqFHH,EApFJ97C,EAAM,CACXoB,IAAM,GAAEwrC,EAAI6I,wBAAwBwG,EAAQjhD,aAC5CsG,QAAS,CAAE,oBAAgBwC,GAC3BxM,KAAM4kD,GAAAA,CAAeD,EAAS,IACzBtC,EACHwC,gBAAiB,IAAIhD,WAEvBvD,OAAQ,UA8ENoG,EACApP,EAAI+I,YAAYvD,QAAQ0J,GAASnL,SACjC5M,QAAQC,OAAO,iBAGhBtpC,KAAKo/C,GACL9nC,OA/IgB7c,EA+IE,SA9HZ,SAAU0nB,GACf,MAAMi3B,EAAQF,EACXG,SACAC,YACCpuC,EAAW+nC,SAASsG,0BAClB,yBAEHC,WACC,yBAA2BtuC,EAAW+nC,SAASuE,cAEhDnoC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjD0D,EAAStD,KAAKwD,GAEd/G,EAAG8G,OAAO1+C,GAAQ0nB,EAAIvlB,QAiHvB89C,SAAQ,KACFrI,EAAGwH,KAAKvgB,UACX+Y,EAAGwH,KAAO,IApNhB3uC,EAAWyuC,SAAU,MAyVvBtH,EAAGC,OA/HH,SAAgB73C,EAAM2a,GACfi9B,EAAGwH,KAAKp/C,KACX43C,EAAGwH,KAAKp/C,GAAQ,IAGlB,MAAMyJ,EAAMmuC,EAAGwH,KAAKp/C,GAAM0I,QAAQiS,GAC9BlR,GAAO,EACTmuC,EAAGwH,KAAKp/C,GAAMga,OAAOvQ,EAAK,GAE1BmuC,EAAGwH,KAAKp/C,GAAM/E,KAAK0f,IAuHvBi9B,EAAGhd,OAnHH,SAAgB56B,EAAM2a,GAKpB,OAJKi9B,EAAGwH,KAAKp/C,KACX43C,EAAGwH,KAAKp/C,GAAQ,IAGX43C,EAAGwH,KAAKp/C,GAAM0I,QAAQiS,IAAS,GA+GxCi9B,EAAG2O,UAAY,GAEf3O,EAAGwH,KAAO,GACVxH,EAAG8G,OAAS,GACZ9G,EAAG2H,SAAW,GCtYhB,SAAS0H,EACPx2C,EACAwC,EACAmxC,EACA3M,EACAD,EACAG,GAEA,MAAMC,EAAKp9C,KACX,IAAI6pD,EAAU,KAed,SAAS6C,IACFz2C,EAAW+nC,SAAS2B,OAKb1pC,EAAW+nC,SAAS2O,sBAO9Bl0C,EAAOi5B,GAAG,WAAY,KAAM,CAC1B77B,SAAU,YANZ4C,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,aAPZI,EAAW+nC,SAASsJ,eAAgB,EACpC7uC,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,aA6IhB,SAAS+2C,IASP,OARA32C,EAAW4nC,QAAU,CACnBxyC,GAAI4K,EAAW+nC,SAAS3yC,GACxBwhD,OAAQ,YACR39B,KAhCK,YAAcy8B,GAAAA,CAAQ,EAAG,MAmChC11C,EAAW+nC,SAAS4K,UAAW,EAExB5L,EAAqBO,cAC1BJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,EACdy4C,EAAI+I,YACRE,UAAU,CACT76C,GAAI4K,EAAW+nC,SAAS3yC,GACxBs0C,QAAQ,IAETqB,SAASj2C,MAAK,SAAUpD,GACnBA,EAAKuC,QACP2/C,EAAUliD,EAAKkiD,QACfzM,EAAGgN,OAASziD,EAAK45C,SAGpBx2C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI+/B,EAAGgN,OAAOh7C,OAAQiO,IAAK,CACzC,MAAMuuC,EAAQxO,EAAGgN,OAAO/sC,GACxB,GAAIuuC,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAAS3iD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C85C,EAAG2O,UAAU1uC,GAAKyuC,EAAOF,EAAMb,MAAMc,eAI1CxpC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,SAGnB7K,MAAM26B,EAAqBW,gBAtMhCP,EAAG2O,UAAY,GAGf3O,EAAGwH,KAAO,GACVxH,EAAG8G,OAAS,GACZ9G,EAAG2H,SAAW,GACd3H,EAAG0P,aAAc,EAEjB1P,EAAGkN,YAAc,SAAU/kD,GACzB,OAAOqkD,EAAKU,YAAY/kD,IAgP1B63C,EAAG/vC,QAhDH,WAKE,GAJAmZ,QAAQo3B,MAAM,qCAAsC3nC,EAAW4nC,SAE/D5nC,EAAW6nC,OAAS,SAEhB7nC,EAAW4nC,SAAW5nC,EAAW4nC,QAAQ4B,YAC3C,GAAIxpC,EAAW4nC,QAAQ4B,YAAYp0C,GACjC,IAA8C,IAA1C4K,EAAW4nC,QAAQ4J,mBAErBhvC,EAAOi5B,GAAG,WAAY,KAAM,CAC1B77B,SAAU,gBAEP,SACL,MAAMk3C,EAAoB92C,EAAW4nC,QAAQ4B,YAAYp0C,GACnD2hD,EAAY/2C,MAAAA,GAAH,UAAGA,EAAY4nC,eAAf,iBAAG,EAAqB/Z,eAAxB,aAAG,EAA8Bz4B,GAChD,GAAI2hD,EAAW,CACb,MAAMrlD,EAAO,CACX0D,GAAI0hD,EACJE,QAAS,OACTxN,YAAa,CACXp0C,GAAI0hD,GAENjpB,QAAS,CACPz4B,GAAI2hD,GAENnF,YAAa,YACb/G,QAAQ,EACRC,YAAa,WAIf9D,EAAI2D,gBAAgB0F,QAAQ3+C,GAAMq5C,SAASyE,SAAQ,IAC1CmH,YAMbn0C,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,iBAId+2C,KAMJxP,EAAGgI,OA5KH,WACE,IAAIjD,EAAO,sBAEX,IAAK,IAAI9kC,EAAI,EAAGA,EAAI+/B,EAAGgN,OAAOh7C,OAAQiO,IAAK,CACzC,MAAMuuC,EAAQxO,EAAGgN,OAAO/sC,GAEpBuuC,EAAMb,YAA+C,IAA/B3N,EAAGwH,KAAKgH,EAAMb,MAAM5X,SAEvC+P,GAAAA,CAAO0I,EAAMsB,YAChBj3C,EAAW4nC,QAAQ+N,EAAMsB,UAAYtrD,MAAMoQ,QACzCorC,EAAGwH,KAAKgH,EAAMb,MAAM5X,QAElBiK,EAAGwH,KAAKgH,EAAMb,MAAM5X,OAAOlgC,OAC3BmqC,EAAGwH,KAAKgH,EAAMb,MAAM5X,QAGrB+P,GAAAA,CAAO0I,EAAMK,WAChBh2C,EAAW4nC,QAAQ+N,EAAMK,SAAWrqD,MAAMoQ,QACxCorC,EAAGwH,KAAKgH,EAAMb,MAAM5X,QAElBiK,EAAGwH,KAAKgH,EAAMb,MAAM5X,OAAOlgC,OAC3BmqC,EAAGwH,KAAKgH,EAAMb,MAAM5X,QAGtB91B,IAAMwsC,IACH3G,GAAAA,CAAOjtC,EAAW+nC,SAAS6O,UAC9B52C,EAAW4nC,QAAQgP,OAAS52C,EAAW+nC,SAAS6O,OAChD52C,EAAW4nC,QAAQ3uB,KAAOttB,MAAMoQ,QAAQorC,EAAGwH,KAAKgH,EAAMb,MAAM5X,QACxDiK,EAAGwH,KAAKgH,EAAMb,MAAM5X,OAAOlgC,OAC3BmqC,EAAGwH,KAAKgH,EAAMb,MAAM5X,SAIxBiK,EAAGwH,KAAKgH,EAAMb,MAAM5X,SACtBgP,GAAQyJ,EAAMb,MAAM5X,MAAQ,KAAOiK,EAAGwH,KAAKgH,EAAMb,MAAM5X,OAAS,OA/ExE,IAAqBrP,EAAAA,EAsFjBuhB,GAAAA,CACE,CACElD,KAAMA,EACNgL,QAASl3C,EAAW+nC,SAASmP,QAC7BC,WAAYn3C,EAAW+nC,SAASoP,YAElCn3C,EAAW4nC,SA3FfT,EAAG0P,aAAc,EAEjB7P,EAAI+I,YACD/c,OAAOnF,GACPkd,SAASj2C,MAAK,SAAUpD,UAChBy1C,EAAG8G,OAAOmJ,iBAEjBp3C,EAAW4nC,QAAQ/Z,QAAU,CAC3Bz4B,GAAI1D,EAAKm8B,QAAQz4B,IAGnB4K,EAAW4nC,QAAQ4B,YAAc,CAC/Bp0C,GAAI1D,EAAK83C,YAAYp0C,IAIvB2xC,EAAqBO,cAAcJ,EAAiBlnC,EAAW4nC,SAC5D9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAG9BP,EAAG0P,aAAc,EAGjBJ,OAEDrqC,OAAM,SAAU6K,GAAK,UAEpBkwB,EAAG0P,aAAc,EAGI,OAAnB,UAAA5/B,EAAIvlB,YAAJ,eAAU0/C,OACkB,mBAA5B,UAAAn6B,EAAIvlB,YAAJ,mBAAUqnC,eAAV,eAAmB9/B,OAEnB+G,EAAW+nC,SAAS2B,QAAS,EAC7B+M,KAEAlmC,QAAQnhB,MAAM6nB,OAkLtBkwB,EAAGC,OArHH,SAAgB73C,EAAM2a,GACfi9B,EAAGwH,KAAKp/C,KACX43C,EAAGwH,KAAKp/C,GAAQ,IAGlB,MAAMyJ,EAAMmuC,EAAGwH,KAAKp/C,GAAM0I,QAAQiS,GAC9BlR,GAAO,EACTmuC,EAAGwH,KAAKp/C,GAAMga,OAAOvQ,EAAK,GAE1BmuC,EAAGwH,KAAKp/C,GAAM/E,KAAK0f,IA6GvBi9B,EAAGhd,OAzGH,SAAgB56B,EAAM2a,GAKpB,OAJKi9B,EAAGwH,KAAKp/C,KACX43C,EAAGwH,KAAKp/C,GAAQ,IAGX43C,EAAGwH,KAAKp/C,GAAM0I,QAAQiS,IAAS,GCrK1C,SAASmtC,EACPr3C,EACAwC,EACAwrC,EACAhH,EACAl2C,EACAi2C,EACAG,EACAD,GAEA,MAAME,EAAKp9C,KAQX,SAAS2kD,IACH1uC,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAAS4lC,IACP2B,EAAGwH,KAAO,GACVxH,EAAGyH,QAAU,KACbzH,EAAG0H,UAAY,KACf1H,EAAG2H,SAASC,eACZ5H,EAAG2H,SAASE,gBAEZhvC,EAAW4nC,QAAU,GAErB5nC,EAAWivC,gBAAiB,EAC5BjvC,EAAWzJ,MAAM,QAQnB,SAAS25B,EAAY3gC,GACnB,OAAO,SAAU0nB,GACfkwB,EAAG8G,OAAO1+C,GAAQ0nB,EAAIvlB,KAEtB,MAAMw8C,EAAQF,EACXG,SACAC,YACCpuC,EAAW+nC,SAASsG,0BAClB,yBAEHC,WAAW,oBACXnqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjD0D,EAAStD,KAAKwD,IAIlB,SAASM,IACPxuC,EAAWyuC,SAAU,EAjDvBtH,EAAGwH,KAAO,GACVxH,EAAG8G,OAAS,GAoGZ9G,EAAG/vC,QAhBH,WACEmZ,QAAQo3B,MAAM,wCAAyC3nC,EAAW4nC,SAClE5nC,EAAW6nC,OAAS,YAGpB/2C,EAAG0U,IAAI,CACLuhC,EAAqBmI,WAAWhI,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBmI,WAAWjI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,IAAOkL,EAAWyuC,SAAU,KAKtCtH,EAAGgI,OAlDH,WACEnvC,EAAWyuC,SAAU,EAEjBzuC,EAAW4nC,QAAQ4B,aAAexpC,EAAW4nC,QAAQ4B,YAAYp0C,GACnE4xC,EAAI2D,gBACDC,aAAa,CACZx1C,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,GACnCkiD,KAAMnQ,EAAGwH,KAAK2I,OAEfvM,SAASj2C,MAAK,kBACNqyC,EAAG8G,OAAOkB,OAEjB,MAAMjB,EAAQF,EACXG,SACAC,YACCpuC,EAAW+nC,SAASwH,0BAClB,2BAEHjB,WAAW,oBACXnqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjD0D,EAAStD,KAAKwD,MAEfp5C,KAAK0wC,GACL1wC,KAAK45C,GACLtiC,MAAM8jB,EAAY,WAClBsf,QAAQhB,IAEXA,IACAte,EAAY,YAsBhBiX,EAAGsI,KA7EH,WACEjK,IACAkJ,KCxCJ,SAAS6I,EACPv3C,EACAhV,EACAwlD,EACAhuC,EACAwkC,EACAD,EACAG,GAGA,IAAIsQ,EAA+B,KAGnC,SAAS7F,IACP,IAAInI,EAAc,GACdiO,GAAO,EAEXzQ,EAAI2D,gBACDlwC,IAAI,CACHrF,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,KAEpC21C,SAASj2C,MAAK,SAAUpD,GAGvB,OAFA83C,EAAc93C,EAEPs1C,EAAI2D,gBAAgBM,YAAY,CACrCC,MAAOlrC,EAAW4nC,QAAQ4B,YAAYp0C,KACrC21C,YAEJj2C,MAAK,SAAUpD,GACd+lD,EAAO/lD,EAAK45C,KAAKnyC,OAAS,EAEtBqwC,EAAYqB,QACd7qC,EAAW4nC,QAAQ4B,YAAYqB,QAAS,EACxC9D,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,EACW,cAA5Bi7C,EAAYoI,aACdpvC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,eAGhDwM,MAAM26B,EAAqBW,kBACrB8B,EAAYqC,QAAU4L,KAE3BjO,EAAYqC,SACd7rC,EAAW4nC,QAAQ4B,YAAYqC,OAASrC,EAAYqC,QAEtD9E,EAAqBO,cAAcJ,EAAiB,IAC/ClnC,EAAW4nC,QACd4J,oBAAoB,IAEnB18C,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,EACrBiU,EAAOi5B,GAAG,WAAY,KAAM,CAAE77B,SAAU,eAEzCwM,MAAM26B,EAAqBW,oBAKjCt7B,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OA9DbltB,KAqFRqN,QAdH,WACEmZ,QAAQo3B,MAAM,sCAAuC3nC,EAAW4nC,SAChE5nC,EAAW6nC,OAAS,UAGlB7nC,EAAW4nC,SACX5nC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYp0C,KAG/BoiD,EAA+BhH,EAAUmB,EAAgB,OAQ7D3mD,EAAOsB,IAAI,YAtBX,WACEkkD,EAAUtiD,OAAOspD,iqBCzFrB,MAAMzQ,EAOJ54B,YAAYxO,EAASK,EAAYlP,GAAI,oBACnC/G,KAAK2tD,cAAgB,IAAIC,IAAI33C,EAAW+nC,SAAS6P,SAASC,OAC1D9tD,KAAK6V,SAAWI,EAAW+nC,SAASnoC,SACpC7V,KAAK+G,GAAKA,EACV/G,KAAK4V,QAAUA,EA4CjBm4C,QAAQloD,EAAKrB,GACX,MAAMwpD,EAAS,UACf,OAAOhuD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwBguD,EAAQnoD,GAAK,KACnC8G,OAEF3M,KAAK4V,QAAQwE,OAAOsjC,YAClB,CAAEsQ,OAAAA,EAAQnoD,IAAAA,EAAKrB,MAAAA,GACfxE,KAAK2tD,kBASXtO,QAAQx5C,GACN,MAAMmoD,EAAS,UACf,OAAOhuD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwBguD,EAAQnoD,GAAK,CAAC2X,EAAG2C,KACvCxT,EAAQwT,MAEVngB,KAAK4V,QAAQwE,OAAOsjC,YAAY,CAAEsQ,OAAAA,EAAQnoD,IAAAA,GAAO7F,KAAK2tD,kBAQ1DxI,WAAWt/C,GACT,MAAMmoD,EAAS,aACf,OAAOhuD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwBguD,EAAQnoD,GAAK,KACnC8G,OAEF3M,KAAK4V,QAAQwE,OAAOsjC,YAAY,CAAEsQ,OAAAA,EAAQnoD,IAAAA,GAAO7F,KAAK2tD,kBAuB1DpQ,cAAc13C,EAAK8B,GAAsB,IAAhBkF,EAAgB,wDAEvC,OAAO7M,KAAKq/C,QAAQx5C,GAAKkF,MAAMoV,IAC7B,MAAM8tC,EAAU,EAAAjuD,KAAA,UAAAA,KAAgBmgB,IAAS,GAMzC,OALItT,SACKohD,EAAQjuD,KAAK6V,UAEpBo4C,EAAQjuD,KAAK6V,UAAYlO,EAEpB3H,KAAK+tD,QAAQloD,EAAKooD,GAASljD,MAAK,IAAMkjD,EAAQjuD,KAAK6V,eAQ9D8nC,eAAezwB,GACb1G,QAAQnhB,MAAM,gBAAiB6nB,eAnHd8gC,EAAQnoD,EAAKrF,GAE9B,MAAM29B,EAAY7b,IAChB,MAAM4rC,EAAkB,GAAEF,UAC1B,GACE1rC,EAAEwrC,SAAW9tD,KAAK2tD,eAClB9nD,IAAQyc,EAAE3a,KAAK9B,KACfqoD,IAAmB5rC,EAAE3a,KAAKqmD,OAC1B,CACA,MAAM,OAAEA,EAAF,KAAU7tC,GAASmC,EAAE3a,KAE3B,OADA6e,QAAQo3B,MAAO,UAAS/3C,cAAgBmoD,uBAA6B1rC,GAC7D0rC,GACN,IAAK,gBACHxtD,EAASqF,GACT,MACF,IAAK,gBACHrF,EAASqF,EAAKsa,GACd,MACF,IAAK,mBACH3f,EAASqF,GACT,MACF,QACE2gB,QAAQo3B,MAAM,qBAAsBoQ,GAIxChuD,KAAK4V,QAAQu4C,oBAAoB,UAAWhwB,GAAU,KAG1Dn+B,KAAK4V,QAAQitC,iBAAiB,UAAW1kB,GAAU,cAiD1CiwB,GACT,IAAIp0B,EAASo0B,EACb,GAAsB,iBAAXp0B,EACT,IACEA,EAAShc,KAAK/W,MAAMmnD,GACpB,MAAO/oD,GACPmhB,QAAQ6nC,KAAM,oBAAmBD,KAAe/oD,GAChD20B,EAASo0B,EAGb,OAAOp0B,EC3EX,SAASs0B,EAAgB1E,GACvB,OAAO,SAAUplD,GACf,OAAOolD,EAAKU,YAAY9lD,+DAoI5B3E,QACGC,OAFiB,cAEG,CACnB,YACA,SACA,aACA,aACA,aACA,aACA,QACA,UACA,YACA,qBACA,WACA,SAEDwJ,OAAO,YAAaglD,GACpBC,SAAS,iBAAkB,eAC3BA,SAAS,kBAAmB,WAC5BA,SAAS,iBAAkB,UAC3B92C,QAAQ,uBAAwBulC,GAChCn6C,UAAU,WAnCb,WACE,OAAO,SAAUC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,oBAAoB,SAAU/C,GACrB,KAAhBA,EAAMu6C,QACRh4C,EAAMmB,QAAO,WACXnB,EAAMzB,MAAM2B,EAAMwrD,YAEpBjuD,EAAMgD,yBA6BXV,UAAU,WApJb,WAyGE,MAAO,CACL0F,KATF,SAAczF,EAAOC,GACnBA,EAAQzC,GAAG,SAAS,WACdwC,EAAMslD,SAASh5C,OAAS,GAlGhC,SAAsBtM,GAEpB,MAAM2rD,EAAMpoC,SAAS45B,cAAc,OAC7BpC,EAAU/6C,EAAM+6C,QAChBG,EAAWl7C,EAAMk7C,SACvB,IAAI0Q,EAEJ,IAAK,IAAIrxC,EAAI,EAAGA,EAAIva,EAAMslD,SAASh5C,OAAQiO,IAAK,CAC9C,MAAMymB,EAAUhhC,EAAMslD,SAAS/qC,GAC/B,IAAIokC,EAAS,WACb,MAAMU,EAAO,YAAcre,EAAQqe,KAC7BwM,EACJ,YAActM,GAAAA,CAAOve,EAAQse,WAAWx6B,OAAO,uBAEjD,GAAU,IAANvK,EAAJ,CAKA,OAAQva,EAAMk7C,SAAS6D,iBACrB,IAAK,gBACHJ,GACwB,QAAtB3d,EAAQ4d,UACJ5d,EAAQge,OACN9D,EAAS+D,WAAaje,EAAQge,OAC9B,SACF9D,EAAS2D,eACT9D,EAAQ3uB,MACR,UAAY4U,EAAQ8d,UAC1B,MAEF,IAAK,cACHH,GACwB,QAAtB3d,EAAQ4d,UACJ5d,EAAQge,OACNhe,EAAQke,KAAKC,OAASne,EAAQke,KAAKE,SACnC,SACFlE,EAAS2D,eACT9D,EAAQ3uB,MACR,UAAY4U,EAAQ8d,UAC1B,MAEF,IAAK,iBACHH,GACwB,QAAtB3d,EAAQ4d,UACJ5d,EAAQge,OACNhe,EAAQke,KAAKE,SACb,SACFlE,EAAS2D,eACT9D,EAAQ3uB,MACR,UAAY4U,EAAQ8d,UAC1B,MAEF,QACEH,GACwB,QAAtB3d,EAAQ4d,UACJ5d,EAAQge,QACL9D,EAAS+D,YAAc,SAAWje,EAAQge,OAC3C,SACF9D,EAAS2D,eACT9D,EAAQ3uB,MACR,UAAY4U,EAAQ8d,UAG9B6M,EAAIvO,YAAY75B,SAASuoC,eAAenN,IACxCgN,EAAIvO,YAAY75B,SAAS45B,cAAc,OACvCwO,EAAIvO,YAAY75B,SAASuoC,eAAezM,IACxCsM,EAAIvO,YAAY75B,SAAS45B,cAAc,OACvCwO,EAAIvO,YAAY75B,SAASuoC,eAAeD,IACxCF,EAAIvO,YAAY75B,SAAS45B,cAAc,OACvCwO,EAAIvO,YAAY75B,SAAS45B,cAAc,YAvDrCyO,EAAY5qB,EAAQse,UA0DxB,MAAMyM,EAAWtoC,OAAOmnC,OAExBmB,EAASxoC,SAASyoC,MAAM,sBAAwBzoC,SAAS8sB,MAAQ,YACjE0b,EAASxoC,SAASyoC,MAAM,kBACxBD,EAASxoC,SAASyoC,MAAM,iBAAmB9Q,EAASmP,QAAU,SAC9D0B,EAASxoC,SAASyoC,MAChB,oBACEzM,GAAAA,CAAOqM,GAAW9mC,OAAO,uBACzB,SAEJinC,EAASxoC,SAASyoC,MAChB,oBAAsBzM,GAAAA,GAASz6B,OAAO,uBAAyB,SAEjEinC,EAASxoC,SAASyoC,MAAML,EAAIM,WAC5BF,EAASxoC,SAASyoC,MAAM,kBAExBD,EAASxoC,SAASg6B,QAClBwO,EAASG,QAETH,EAASI,QACTJ,EAASxO,QAML6O,CAAapsD,OAOjBqE,SAAU,QA2CXnG,WAAW,iBAAkBwlD,GAE7BxlD,WAAW,oBAAqBgjD,GAEhCz4C,OA3BH,sBA2BU,SAAU4jD,GAChBA,EAAmBC,qBAEpBpuD,WAAW,kBAAmB87C,GAE9B58C,QAAQ,MAAOylD,GAEfp6C,OAAO43C,GACP5qC,IAAIuqC,GAEJ9hD,WAAW,oBAAqB2oD,GAEhCp+C,OAvCH,sBAuCU,SAAU4jD,GAChBA,EAAmBC,qBAEpBpuD,WAAW,mBAAoByrD,GAE/BzrD,WAAW,sBAAuBssD,GAElCtsD,WAAW,oBAAqBwsD,wFChNnC1tD,EAAOuvD,QAAU,WACf,GAA0B,iBAAfC,WACT,OAAOA,WAGT,IAAIzxC,EAEJ,IAGEA,EAAI7d,MAAQ,IAAI0mB,SAAS,cAAb,GACZ,MAAOpE,GAEP,GAAsB,iBAAXiE,OACT,OAAOA,OAIT,GAAoB,iBAAT7Y,KACT,OAAOA,KAIT,QAAsB,IAAX,EAAAmQ,EACT,OAAO,EAAAA,EAIX,OAAOA,EA5BQ,wECHjB,WAoBE7d,QAjBM4d,EAAO,SAON,KAFU,EAAF,WACL,OAAQA,EAAK2uC,eAWjB,WAWJ,SAASv6C,EAAQhO,GAEb,MAAmC,mBAA5B,GAAK8Q,SAAS/S,KAAKiC,GAG9B,SAASurD,EAAavrD,GAElB,QAAQgO,EAAQhO,IAAuB,iBAARA,IAAsBA,GAASA,aAAewrD,MAAWxrD,aAAeuuB,MAQ3G,SAASk9B,IAEL,MAA2B,mBAAbjG,SAGlB,SAASkG,IAEL,GAAID,IACA,OAAO,IAAIjG,SAkCnB,SAASmG,EAAmBC,EAAYzvD,EAAS0vD,EAAUC,GAEvD,IAAI1T,EAAQ,EAEZ,IAAK,IAAIv2C,KAAO+pD,EAAY,CAExB,GAAIA,EAAWltD,eAAemD,GAAM,CAEhC,IAAIkqD,EAAWD,GAAajqD,EACxBrB,EAAQrE,EAAQirB,QAAQwkC,EAAW/pD,IAevC,GAbIiqD,GAAaP,EAAaK,KAC1BG,EAAWD,EAAY,IAAMjqD,EAAM,KAGnCiqD,GAAa99C,EAAQ49C,KAGjBG,EADA/9C,EAAQxN,IAAUrE,EAAQ8pD,qBACf6F,EAAY,IAAM1T,EAAQ,IAE1B0T,EAAY,MAI3B99C,EAAQxN,IAAU+qD,EAAa/qD,GAE/BmrD,EAAmBnrD,EAAOrE,EAAS0vD,EAAUE,QAE1C,GAAIvrD,aAAiBwrD,SAExB,IAAK,IAAItyC,EAAI,EAAGA,EAAIlZ,EAAM4K,OAAQsO,IAC9BmyC,EAASx1B,OAAO01B,EAAW,IAAMryC,EAAI,IAAKlZ,EAAM2b,KAAKzC,SAElDlZ,aAAiBgrD,KAExBK,EAASx1B,OAAO01B,EAAUvrD,EAAOA,EAAMgB,MAEhChB,aAAiB+tB,KAExBs9B,EAASx1B,OAAO01B,EAAUvrD,EAAMyrD,gBAEb,OAAVzrD,GAAkBrE,EAAQ+pD,mBAAgC,OAAV1lD,SAA6B2P,IAAV3P,GAE5EqrD,EAASx1B,OAAO01B,EAAUvrD,GAGlC43C,IAEJ,OAAOyT,EAEX,OAhFA,SAAiBD,EAAYzvD,GAEzB,GAAIA,GAAWA,EAAQqsD,iBAEnB,GAnB8B,mBAmBDrsD,EAAQqsD,gBAnBlBnyB,OAqBf,KAAM,qDAEP,IAAKo1B,IAER,KAAM,8FA3Bd,IA0CQS,EA5DG,CAgDc,CACjB1D,gBAAiBkD,IACjBzF,sBAAsB,EACtBC,mBAAmB,EACnB9+B,QAAS,SAAS5mB,GACd,MAAqB,kBAAVA,GACCA,EAAQ,IAAK,IAElBA,IAIkCrE,GAAW,IA5DlCyO,QAAO,SAAUuhD,EAAOC,GAI9C,OAHA78C,OAAOC,KAAK48C,GAAervD,SAAQ,SAAUsvD,GACzCF,EAAME,GAAaD,EAAcC,MAE9BF,IACR,IAyDH,OAAOR,EAAmBC,EAAYM,EAAeA,EAAc1D,kBA5EjCtsD,IACjC,QAFM,OAEN,oECDD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,8FAA8FztC,MAClG,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,4DAA4D3tC,MAClE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C8tC,cAAe,SACfC,KAAM,SAAUj+C,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExBk+C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,eACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACN90C,EAAG,mBACH+0C,GAAI,cACJn9C,EAAG,YACHo9C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJn5B,EAAG,SACHo5B,GAAI,SACJC,EAAG,WACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyB/yD,CAAQ,EAAQ,8FCOlD,SAAWmiD,GAAU,aAIzB,IAAI6Q,EAAa,SAAU3yC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEV4yC,EAAU,CACN/1C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJq9C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJl5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJq5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe/tD,EAAQguD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf9hD,EAAMmiD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAxiD,EAAMA,EAAIsiD,EAAgB,EAAI,IAE3BtiD,EAAI+D,QAAQ,MAAO+9C,KAGlCvC,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGGlO,EAAOiO,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,wCAAwC5tC,MAAM,KAC7D6tC,YAAa,gBAAgB7tC,MAAM,KACnC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAUj+C,GACZ,MAAO,MAAQA,GAEnBk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN90C,EAAGg2C,EAAU,KACbjB,GAAIiB,EAAU,KACdp+C,EAAGo+C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACdj6B,EAAGi6B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBQ,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCg+C,KAAM,CACFC,IAAK,EACLC,IAAK,KAtJyB/yD,CAAQ,EAAQ,8FCDlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wEAAwEztC,MAC5E,KAEJ0tC,YAAa,wEAAwE1tC,MACjF,KAEJ2tC,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,wCAAwC5tC,MAAM,KAC7D6tC,YAAa,gBAAgB7tC,MAAM,KACnC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,OACH+0C,GAAI,WACJn9C,EAAG,QACHo9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJn5B,EAAG,MACHo5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MApDyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPX,EAAa,SAAU3yC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEV4yC,EAAU,CACN/1C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJq9C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJl5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJq5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe/tD,EAAQguD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf9hD,EAAMmiD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAxiD,EAAMA,EAAIsiD,EAAgB,EAAI,IAE3BtiD,EAAI+D,QAAQ,MAAO+9C,KAGlCvC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGGlO,EAAOiO,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,wCAAwC5tC,MAAM,KAC7D6tC,YAAa,gBAAgB7tC,MAAM,KACnC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAUj+C,GACZ,MAAO,MAAQA,GAEnBk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN90C,EAAGg2C,EAAU,KACbjB,GAAIiB,EAAU,KACdp+C,EAAGo+C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACdj6B,EAAGi6B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBU,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC6+C,WAAY,SAAUruD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO63C,EAAU73C,MAEpBjH,QAAQ,KAAM,MAEvBg+C,KAAM,CACFC,IAAK,EACLC,IAAK,MAzKyB/yD,CAAQ,EAAQ,8FCIlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wEAAwEztC,MAC5E,KAEJ0tC,YAAa,wEAAwE1tC,MACjF,KAEJ2tC,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,wCAAwC5tC,MAAM,KAC7D6tC,YAAa,gBAAgB7tC,MAAM,KACnC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,OACH+0C,GAAI,WACJn9C,EAAG,QACHo9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJn5B,EAAG,MACHo5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB/yD,CAAQ,EAAQ,8FCElD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGF1R,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,6EAA6EztC,MACjF,KAEJ0tC,YAAa,6EAA6E1tC,MACtF,KAEJ2tC,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,wCAAwC5tC,MAAM,KAC7D6tC,YAAa,gBAAgB7tC,MAAM,KACnC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAUj+C,GACZ,MAAO,MAAQA,GAEnBk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,OACH+0C,GAAI,WACJn9C,EAAG,QACHo9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJn5B,EAAG,MACHo5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO+3C,EAAU/3C,MAEpBjH,QAAQ,KAAM,MAEvB6+C,WAAY,SAAUruD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO63C,EAAU73C,MAEpBjH,QAAQ,KAAM,MAEvBg+C,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,yEAAyEztC,MAC7E,KAEJ0tC,YAAa,yEAAyE1tC,MAClF,KAEJ2tC,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,wCAAwC5tC,MAAM,KAC7D6tC,YAAa,gBAAgB7tC,MAAM,KACnC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,OACH+0C,GAAI,WACJn9C,EAAG,QACHo9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJn5B,EAAG,MACHo5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB/yD,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETb,EAAa,SAAU3yC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEV4yC,EAAU,CACN/1C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJq9C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJl5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJq5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe/tD,EAAQguD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf9hD,EAAMmiD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAxiD,EAAMA,EAAIsiD,EAAgB,EAAI,IAE3BtiD,EAAI+D,QAAQ,MAAO+9C,KAGlCvC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGClO,EAAOiO,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,wCAAwC5tC,MAAM,KAC7D6tC,YAAa,gBAAgB7tC,MAAM,KACnC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAUj+C,GACZ,MAAO,MAAQA,GAEnBk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN90C,EAAGg2C,EAAU,KACbjB,GAAIiB,EAAU,KACdp+C,EAAGo+C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACdj6B,EAAGi6B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBU,SAAU,SAAUvuD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO+3C,EAAU/3C,MAEpBjH,QAAQ,KAAM,MAEvB6+C,WAAY,SAAUruD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO63C,EAAU73C,MAEpBjH,QAAQ,KAAM,MAEvBg+C,KAAM,CACFC,IAAK,EACLC,IAAK,MAzLyB/yD,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAI2R,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC3R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EztC,MACnF,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,qEAAqE3tC,MAC3E,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,+BACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN90C,EAAG,kBACH+0C,GAAI,YACJn9C,EAAG,aACHo9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJn5B,EAAG,UACHo5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,SACHC,GAAI,SAER/B,cAAe,0BACfC,KAAM,SAAUj+C,GACZ,MAAO,mBAAmBuQ,KAAKvQ,IAEnCk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SAEA,SAGfd,uBAAwB,wCACxBC,QAAS,SAAUC,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIr1C,EAAIq1C,EAAS,GAGjB,OAAOA,GAAUkB,EAASv2C,IAAMu2C,EAFvBlB,EAAS,IAAOr1C,IAEsBu2C,EADvClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyB/yD,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAYzB,SAAS4R,EAAuBnB,EAAQQ,EAAeztD,GASnD,MAAY,MAARA,EACOytD,EAAgB,UAAY,UACpB,MAARztD,EACAytD,EAAgB,UAAY,UAE5BR,EAAS,KAtBFoB,GAsB6BpB,EArB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,yBAA2B,yBAC/ChB,GAAIgB,EAAgB,yBAA2B,yBAC/Cf,GAAI,iBACJE,GAAI,uBACJE,GAAI,kBAOgC9sD,GArBvBid,MAAM,KAChBoxC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAyBC9R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,CACJ3oC,OAAQ,uGAAuG9E,MAC3G,KAEJsxC,WAAY,qGAAqGtxC,MAC7G,MAGR0tC,YAAa,0DAA0D1tC,MACnE,KAEJ2tC,SAAU,CACN7oC,OAAQ,0DAA0D9E,MAC9D,KAEJsxC,WAAY,0DAA0DtxC,MAClE,KAEJuxC,SAAU,+CAEd3D,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBACTE,QAAS,eACTD,SAAU,WACN,MAAO,mBAEXE,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN90C,EAAG,kBACHpI,EAAGi/C,EACH7B,GAAI6B,EACJ5B,EAAG4B,EACH3B,GAAI2B,EACJ96B,EAAG,QACHo5B,GAAI0B,EACJzB,EAAG,QACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAERrD,cAAe,yBACfC,KAAM,SAAUj+C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjCk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQzB,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,KADTA,EAAS,KAEnB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB/yD,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFztC,MACxF,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,yDAAyD3tC,MAC/D,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN90C,EAAG,kBACH+0C,GAAI,aACJn9C,EAAG,SACHo9C,GAAI,YACJC,EAAG,MACHC,GAAI,UACJn5B,EAAG,MACHo5B,GAAI,UACJiC,EAAG,UACHC,GAAI,aACJjC,EAAG,QACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI4B,EAAY5B,EAAS,GACrB6B,EAAc7B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB6B,EACA7B,EAAS,MACT6B,EAAc,IAAMA,EAAc,GAClC7B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,GAAiC,IAAdA,EACnB5B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KArFyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IztC,MAClJ,KAEJ0tC,YAAa,iDAAiD1tC,MAAM,KACpE2tC,SAAU,+CAA+C3tC,MAAM,KAC/D4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN90C,EAAG,kBACH+0C,GAAI,aACJn9C,EAAG,eACHo9C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJn5B,EAAG,aACHo5B,GAAI,UACJC,EAAG,aACHC,GAAI,UACJC,EAAG,YACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGF1R,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,0FAA0FztC,MAC9F,KAEJ0tC,YAAa,mEAAmE1tC,MAC5E,KAEJ2tC,SAAU,4DAA4D3tC,MAClE,KAEJ4tC,cAAe,uCAAuC5tC,MAAM,KAC5D6tC,YAAa,kCAAkC7tC,MAAM,KACrDouC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN90C,EAAG,eACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAIzB40C,cAAe,uCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,QAAb5C,GAEa,SAAbA,EADA4C,EAGa,UAAb5C,EACA4C,GAAQ,EAAIA,EAAOA,EAAO,GACb,UAAb5C,GAEa,YAAbA,EADA4C,EAAO,QACX,GAKX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,EACP,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QACAA,EAAO,GACP,UAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KA9HyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ1R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FztC,MAC9F,KAEJ0tC,YAAa,mEAAmE1tC,MAC5E,KAEJ2tC,SAAU,4DAA4D3tC,MAClE,KAEJ4tC,cAAe,uCAAuC5tC,MAAM,KAC5D6tC,YAAa,kCAAkC7tC,MAAM,KACrDouC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN90C,EAAG,eACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAGzB40C,cAAe,2BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,QAAb5C,GAAsB4C,GAAQ,GACjB,UAAb5C,GAAwB4C,EAAO,GACnB,UAAb5C,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ1R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,qJAAqJztC,MACzJ,KAEJ0tC,YAAa,iEAAiE1tC,MAC1E,KAEJ+xC,iBAAkB,gBAClBC,kBAAkB,EAClBrE,SAAU,gFAAgF3tC,MACtF,KAEJ4tC,cAAe,oDAAoD5tC,MAC/D,KAEJ6tC,YAAa,6BAA6B7tC,MAAM,KAChDouC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,YACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN90C,EAAG,QACH+0C,GAAI,YACJn9C,EAAG,aACHo9C,GAAI,WACJC,EAAG,cACHC,GAAI,YACJn5B,EAAG,WACHo5B,GAAI,UACJC,EAAG,YACHC,GAAI,UACJC,EAAG,UACHC,GAAI,SAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAGzB40C,cAAe,wCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,WAAb5C,GAAyB4C,GAAQ,GACpB,YAAb5C,GAA0B4C,EAAO,GACrB,YAAb5C,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,UACAA,EAAO,GACP,UACAA,EAAO,GACP,UAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAxHyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,SAAS0S,EAAyBjC,EAAQQ,EAAeztD,GAMrD,OAAOitD,EAAS,IAoBpB,SAAkBlwC,EAAMkwC,GACpB,OAAe,IAAXA,EAKR,SAAsBlwC,GAClB,IAAIoyC,EAAgB,CAChBhgD,EAAG,IACH4J,EAAG,IACHua,EAAG,KAEP,YAAsChlB,IAAlC6gD,EAAcpyC,EAAKnd,OAAO,IACnBmd,EAEJoyC,EAAcpyC,EAAKnd,OAAO,IAAMmd,EAAKqX,UAAU,GAb3Cg7B,CAAaryC,GAEjBA,EAxBesyC,CALT,CACT9C,GAAI,WACJK,GAAI,MACJF,GAAI,UAE8B1sD,GAAMitD,GAchD,SAASqC,EAAWrC,GAChB,OAAIA,EAAS,EACFqC,EAAWrC,EAAS,IAExBA,EAoBX,IAAIsC,EAAc,CACV,QACA,cACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJC,EAAc,6IAqBdC,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QAGCjT,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,gFAAgFztC,MACpF,KAEJ0tC,YAAa,mDAAmD1tC,MAAM,KACtE2tC,SAAU,6CAA6C3tC,MAAM,KAC7D4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,wBAAwB7tC,MAAM,KAC3CyyC,cAAeD,EACfE,kBArCoB,CAChB,QACA,QACA,WACA,iBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJH,iBAAkBA,EAElBD,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA7CoB,wFA8CpBC,uBA7CyB,2DA8CzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBlE,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,SACN90C,EAAG,wBACH+0C,GAAI,YACJn9C,EAAG,cACHo9C,GAAI2C,EACJ1C,EAAG,SACHC,GAAI,SACJn5B,EAAG,YACHo5B,GAAIwC,EACJvC,EAAG,SACHC,GAAIsC,EACJrC,EAAG,WACHC,GApIR,SAAiCG,GAC7B,OAAQqC,EAAWrC,IACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,YA6HxBF,uBAAwB,kBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,KAAO,QAGvCC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,YACfC,KAAM,SAAUtvC,GACZ,MAAiB,SAAVA,GAEXuvC,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAOyC,EAAO,GAAK,OAAS,UAnKExzD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,SAASyT,EAAUhD,EAAQQ,EAAeztD,GACtC,IAAIS,EAASwsD,EAAS,IACtB,OAAQjtD,GACJ,IAAK,KAQD,OANIS,GADW,IAAXwsD,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIhtD,GADW,IAAXwsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIhtD,GADW,IAAXwsD,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIxsD,GADW,IAAXwsD,EACU,MAEA,QAGlB,IAAK,KAQD,OANIxsD,GADW,IAAXwsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIxsD,GADW,IAAXwsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBzQ,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFztC,MACzF,KAEJ0tC,YAAa,8DAA8D1tC,MACvE,KAEJgyC,kBAAkB,EAClBrE,SAAU,4DAA4D3tC,MAClE,KAEJ4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQ5xD,KAAKs0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN90C,EAAG,cACH+0C,GAAI2D,EACJ9gD,EAAG8gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJ38B,EAAG,MACHo5B,GAAIuD,EACJtD,EAAG,SACHC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAlJyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,CACJ6D,WAAY,oFAAoFtxC,MAC5F,KAEJ8E,OAAQ,qHAAqH9E,MACzH,KAEJuxC,SAAU,mBAEd7D,YAAa,8DAA8D1tC,MACvE,KAEJgyC,kBAAkB,EAClBrE,SAAU,8DAA8D3tC,MACpE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJyE,GAAI,aACJxE,IAAK,gCACLyE,IAAK,mBACLxE,KAAM,qCACNyE,KAAM,wBAEVxE,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjB1xD,KAAK+wD,QAAgB,MAAQ,MAAQ,QAE9DY,QAAS,WACL,MAAO,YAA+B,IAAjB3xD,KAAK+wD,QAAgB,MAAQ,MAAQ,QAE9Da,SAAU,WACN,MAAO,YAA+B,IAAjB5xD,KAAK+wD,QAAgB,MAAQ,MAAQ,QAE9Dc,QAAS,WACL,MAAO,YAA+B,IAAjB7xD,KAAK+wD,QAAgB,MAAQ,MAAQ,QAE9De,SAAU,WACN,MACI,wBACkB,IAAjB9xD,KAAK+wD,QAAgB,MAAQ,MAC9B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACN90C,EAAG,aACH+0C,GAAI,YACJn9C,EAAG,WACHo9C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQyB,GACvB,IAAI2B,EACW,IAAXpD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXyB,GAA6B,MAAXA,IAClB2B,EAAS,KAENpD,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KA/FyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIkO,EAAS,oFAAoFztC,MACzF,KAEJ0tC,EAAc,kDAAkD1tC,MAAM,KACtEsyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIJC,EAAc,wJAElB,SAASc,EAAO51C,GACZ,OAAOA,EAAI,GAAKA,EAAI,GAAoB,MAAZA,EAAI,IAEpC,SAASu1C,EAAUhD,EAAQQ,EAAeztD,EAAK0tD,GAC3C,IAAIjtD,EAASwsD,EAAS,IACtB,OAAQjtD,GACJ,IAAK,IACD,OAAOytD,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,UAAY,UAEvCxsD,EAAS,YAExB,IAAK,IACD,OAAOgtD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,SAAW,SAEtCxsD,EAAS,WAExB,IAAK,IACD,OAAOgtD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,SAAW,SAEtCxsD,EAAS,WAExB,IAAK,IACD,OAAOgtD,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,MAAQ,OAEnCxsD,EAAS,MAExB,IAAK,IACD,OAAOgtD,GAAiBC,EAAW,QAAU,UACjD,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,SAAW,UAEtCxsD,EAAS,SAExB,IAAK,IACD,OAAOgtD,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,OAAS,OAEpCxsD,EAAS,QAKvB+7C,EAAOiO,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACb6E,YAAaA,EACbR,iBAAkBQ,EAGlBK,kBAAmB,uKACnBC,uBAAwB,sDACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,mDAAmD3tC,MAAM,KACnE4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN/+B,EAAG,cAEPg/B,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQ5xD,KAAKs0D,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,mBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACX,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,0BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN90C,EAAG04C,EACH3D,GAAI2D,EACJ9gD,EAAG8gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJ38B,EAAG28B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzKyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,gEAAgEztC,MACpE,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,oEAAoE3tC,MAC1E,KAEJ4tC,cAAe,6BAA6B5tC,MAAM,KAClD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sCACJC,IAAK,6CACLC,KAAM,oDAEVC,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTE,QAAS,sBACTD,SAAU,4BACVE,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUiE,GAMd,OAAOA,GALK,UAAUzsD,KAAKysD,GACrB,MACA,QAAQzsD,KAAKysD,GACb,MACA,QAGVhE,KAAM,YACN90C,EAAG,iBACH+0C,GAAI,aACJn9C,EAAG,YACHo9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJn5B,EAAG,UACHo5B,GAAI,SACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyB/yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFztC,MAC7F,KAEJ0tC,YAAa,qDAAqD1tC,MAC9D,KAEJ2tC,SAAU,+EAA+E3tC,MACrF,KAEJ4tC,cAAe,+BAA+B5tC,MAAM,KACpD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EAEpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN90C,EAAG,mBACH+0C,GAAI,YACJn9C,EAAG,QACHo9C,GAAI,WACJC,EAAG,MACHC,GAAI,SACJn5B,EAAG,UACHo5B,GAAI,aACJC,EAAG,MACHC,GAAI,SACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,mCAExBC,QAAS,SAAUC,GACf,IACIoD,EAAS,GAiCb,OAlCQpD,EAyBA,GAEAoD,EADM,KA1BNpD,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MA7BTA,EA+BO,IACXoD,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBApD,IAkCDA,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KA9FyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFztC,MAC1F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,qDAAqD3tC,MAAM,KACrE4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,mBACVC,QAAS,iBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN90C,EAAG,cACH+0C,GAAI,cACJn9C,EAAG,WACHo9C,GAAI,cACJC,EAAG,UACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,UACJC,EAAG,WACHC,GAAI,aACJC,EAAG,QACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB/yD,CAAQ,EAAQ,8FCMlD,SAAWmiD,GAAU,aAIzB,SAAS+T,EAAoBtD,EAAQQ,EAAeztD,EAAK0tD,GACrD,IAAI3rC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBq9C,EAAG,CAAC,cAAe,gBACnBl5B,EAAG,CAAC,UAAW,aACfo5B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgB1rC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7Cw8C,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,qFAAqFztC,MACzF,KAEJ0tC,YAAa,6DAA6D1tC,MACtE,KAEJgyC,kBAAkB,EAClBrE,SAAU,8DAA8D3tC,MACpE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,oBACH+0C,GAAI,cACJn9C,EAAGohD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJn5B,EAAGi9B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB/yD,CAAQ,EAAQ,8FCAlD,SAAWmiD,GAAU,aAIzB,SAAS+T,EAAoBtD,EAAQQ,EAAeztD,EAAK0tD,GACrD,IAAI3rC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBq9C,EAAG,CAAC,cAAe,gBACnBl5B,EAAG,CAAC,UAAW,aACfo5B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgB1rC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7Cw8C,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,qFAAqFztC,MACzF,KAEJ0tC,YAAa,6DAA6D1tC,MACtE,KAEJgyC,kBAAkB,EAClBrE,SAAU,8DAA8D3tC,MACpE,KAEJ4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,oBACH+0C,GAAI,cACJn9C,EAAGohD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJn5B,EAAGi9B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB/yD,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIzB,SAAS+T,EAAoBtD,EAAQQ,EAAeztD,EAAK0tD,GACrD,IAAI3rC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBq9C,EAAG,CAAC,cAAe,gBACnBl5B,EAAG,CAAC,UAAW,aACfo5B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgB1rC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG/Cw8C,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFztC,MACzF,KAEJ0tC,YAAa,6DAA6D1tC,MACtE,KAEJgyC,kBAAkB,EAClBrE,SAAU,8DAA8D3tC,MACpE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,oBACH+0C,GAAI,cACJn9C,EAAGohD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJn5B,EAAGi9B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB/yD,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAIkO,EAAS,CACL,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEJE,EAAW,CACP,WACA,OACA,WACA,OACA,aACA,SACA,YAGCpO,EAAOiO,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUA,EACVC,cAAeD,EACfE,YAAa,qCAAqC7tC,MAAM,KACxDouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,QACfC,KAAM,SAAUj+C,GACZ,MAAO,OAASA,GAEpBk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,UACVC,QAAS,cACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,YACN90C,EAAG,iBACH+0C,GAAI,cACJn9C,EAAG,WACHo9C,GAAI,YACJC,EAAG,aACHC,GAAI,cACJn5B,EAAG,WACHo5B,GAAI,YACJC,EAAG,SACHC,GAAI,UACJC,EAAG,WACHC,GAAI,aAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC6+C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCg+C,KAAM,CACFC,IAAK,EACLC,IAAK,MAxFyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAWhBA,EAAOiO,aAAa,KAAM,CAC/B+F,mBAAoB,qHAAqHvzC,MACrI,KAEJwzC,iBAAkB,qHAAqHxzC,MACnI,KAEJytC,OAAQ,SAAUgG,EAAgB3uC,GAC9B,OAAK2uC,EAGiB,iBAAX3uC,GACP,IAAIzE,KAAKyE,EAAOqS,UAAU,EAAGrS,EAAO1Z,QAAQ,UAGrClO,KAAKw2D,kBAAkBD,EAAeE,SAEtCz2D,KAAK02D,oBAAoBH,EAAeE,SARxCz2D,KAAK02D,qBAWpBlG,YAAa,oDAAoD1tC,MAAM,KACvE2tC,SAAU,yDAAyD3tC,MAC/D,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CguC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCJ,KAAM,SAAUj+C,GACZ,MAAyC,OAAjCA,EAAQ,IAAIsU,cAAc,IAEtC0pC,cAAe,gBACfM,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVmF,WAAY,CACRjF,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACD,MAAO,gCACX,QACI,MAAO,mCAGnBvC,SAAU,KAEdN,SAAU,SAAU5rD,EAAK+wD,GACrB,IApEYhkD,EAoERsjD,EAASl2D,KAAK62D,YAAYhxD,GAC1BkrD,EAAQ6F,GAAOA,EAAI7F,QAIvB,OAzEYn+C,EAsEGsjD,GApEM,oBAAbxvC,UAA4B9T,aAAiB8T,UACX,sBAA1CnT,OAAO1R,UAAUiT,SAAS/S,KAAK6Q,MAoE3BsjD,EAASA,EAAO/zD,MAAMy0D,IAEnBV,EAAOnhD,QAAQ,KAAMg8C,EAAQ,IAAO,EAAI,MAAQ,SAE3DiB,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN90C,EAAG,oBACH+0C,GAAI,kBACJn9C,EAAG,YACHo9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJn5B,EAAG,WACHo5B,GAAI,WACJC,EAAG,aACHC,GAAI,WACJC,EAAG,cACHC,GAAI,aAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJn5B,EAAG,QACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBm0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJn5B,EAAG,QACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJn5B,EAAG,QACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBm0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJn5B,EAAG,QACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBm0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJn5B,EAAG,QACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJn5B,EAAG,QACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBm0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJn5B,EAAG,QACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBm0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJn5B,EAAG,QACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBm0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/yD,CAAQ,EAAQ,2FCMlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FztC,MACjG,KAEJ0tC,YAAa,oDAAoD1tC,MAAM,KACvE2tC,SAAU,qDAAqD3tC,MAAM,KACrE4tC,cAAe,gCAAgC5tC,MAAM,KACrD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNyE,KAAM,uCAEVrF,cAAe,cACfC,KAAM,SAAUj+C,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3B4pC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,SAAW,SAErBA,EAAU,SAAW,UAGpCQ,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN90C,EAAG,kBACH+0C,GAAI,cACJn9C,EAAG,aACHo9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,WACHo5B,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA/DyB/yD,CAAQ,EAAQ,8FCDlD,SAAWmiD,GAAU,aAIzB,IAAIyU,EAAiB,8DAA8Dh0C,MAC3E,KAEJ0tC,EAAc,kDAAkD1tC,MAAM,KACtEsyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPhT,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,2FAA2FztC,MAC/F,KAEJ0tC,YAAa,SAAUx7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACb4oC,EAAYx7C,EAAEyhD,SAEdK,EAAe9hD,EAAEyhD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuD3tC,MAAM,KACvE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB1xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjB3xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjB5xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB7xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB9xD,KAAK+wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN90C,EAAG,gBACH+0C,GAAI,cACJn9C,EAAG,YACHo9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB/yD,CAAQ,EAAQ,8FCIlD,SAAWmiD,GAAU,aAIzB,IAAIyU,EAAiB,8DAA8Dh0C,MAC3E,KAEJ0tC,EAAc,kDAAkD1tC,MAAM,KACtEsyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPhT,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,2FAA2FztC,MAC/F,KAEJ0tC,YAAa,SAAUx7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACb4oC,EAAYx7C,EAAEyhD,SAEdK,EAAe9hD,EAAEyhD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuD3tC,MAAM,KACvE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB1xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjB3xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjB5xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB7xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB9xD,KAAK+wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN90C,EAAG,gBACH+0C,GAAI,cACJn9C,EAAG,YACHo9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET8D,YAAa,mBAzGqB72D,CAAQ,EAAQ,8FCIlD,SAAWmiD,GAAU,aAIzB,IAAIyU,EAAiB,8DAA8Dh0C,MAC3E,KAEJ0tC,EAAc,kDAAkD1tC,MAAM,KACtEsyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPhT,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,2FAA2FztC,MAC/F,KAEJ0tC,YAAa,SAAUx7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACb4oC,EAAYx7C,EAAEyhD,SAEdK,EAAe9hD,EAAEyhD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuD3tC,MAAM,KACvE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB1xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjB3xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjB5xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB7xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB9xD,KAAK+wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN90C,EAAG,gBACH+0C,GAAI,cACJn9C,EAAG,YACHo9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIzB,IAAIyU,EAAiB,8DAA8Dh0C,MAC3E,KAEJ0tC,EAAc,kDAAkD1tC,MAAM,KACtEsyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEThT,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FztC,MAC/F,KAEJ0tC,YAAa,SAAUx7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACb4oC,EAAYx7C,EAAEyhD,SAEdK,EAAe9hD,EAAEyhD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuD3tC,MAAM,KACvE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB1xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjB3xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjB5xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB7xD,KAAK+wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB9xD,KAAK+wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN90C,EAAG,gBACH+0C,GAAI,cACJn9C,EAAG,YACHo9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET8D,YAAa,mBAzGqB72D,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,SAAS+T,EAAoBtD,EAAQQ,EAAeztD,EAAK0tD,GACrD,IAAI3rC,EAAS,CACTxK,EAAG,CAAC,eAAgB,cAAe,iBACnC+0C,GAAI,CAACW,EAAS,UAAWA,EAAS,YAClC99C,EAAG,CAAC,aAAc,aAClBo9C,GAAI,CAACU,EAAS,UAAWA,EAAS,YAClCT,EAAG,CAAC,YAAa,YAAa,YAC9BC,GAAI,CAACQ,EAAS,SAAUA,EAAS,UACjC35B,EAAG,CAAC,YAAa,YACjBq5B,EAAG,CAAC,UAAW,WAAY,WAC3BC,GAAI,CAACK,EAAS,OAAQA,EAAS,SAC/BJ,EAAG,CAAC,YAAa,QAAS,aAC1BC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAIQ,EACO1rC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAElD0tD,EAAW3rC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG1Cw8C,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FztC,MACjG,KAEJ0tC,YAAa,6DAA6D1tC,MACtE,KAEJ2tC,SAAU,iEAAiE3tC,MACvE,KAEJ4tC,cAAe,gBAAgB5tC,MAAM,KACrC6tC,YAAa,gBAAgB7tC,MAAM,KACnCouC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,qBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACN90C,EAAGg5C,EACHjE,GAAIiE,EACJphD,EAAGohD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJj9B,EAAGi9B,EACH7D,GAAI,WACJC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,+FAA+FztC,MACnG,KAEJ0tC,YAAa,8DAA8D1tC,MACvE,KAEJgyC,kBAAkB,EAClBrE,SAAU,sEAAsE3tC,MAC5E,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACN/+B,EAAG,WACHsjC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAEVxE,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN90C,EAAG,iBACH+0C,GAAI,aACJn9C,EAAG,aACHo9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJn5B,EAAG,WACHo5B,GAAI,UACJC,EAAG,eACHC,GAAI,cACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ1R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,wEAAwEztC,MAC5E,KAEJ0tC,YAAa,wEAAwE1tC,MACjF,KAEJ2tC,SAAU,qDAAoE3tC,MAC1E,KAEJ4tC,cAAe,qDAAoE5tC,MAC/E,KAEJ6tC,YAAa,gBAAgB7tC,MAAM,KACnC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,wBACfC,KAAM,SAAUj+C,GACZ,MAAO,aAAauQ,KAAKvQ,IAE7Bk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,aAEA,cAGfjC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,YACH+0C,GAAI,WACJn9C,EAAG,WACHo9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJn5B,EAAG,SACHo5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EACFwP,QAAQ,UAAU,SAAUiH,GACzB,OAAO+3C,EAAU/3C,MAEpBjH,QAAQ,KAAM,MAEvB6+C,WAAY,SAAUruD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO63C,EAAU73C,MAEpBjH,QAAQ,KAAM,MAEvB69C,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,MA5GyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI2U,EAAc,wEAAwEl0C,MAClF,KAEJm0C,EAAgB,CACZ,QACA,QACA,SACA,SACA,SACA,SACA,SACAD,EAAY,GACZA,EAAY,GACZA,EAAY,IAEpB,SAASlB,EAAUhD,EAAQQ,EAAeztD,EAAK0tD,GAC3C,IAAIjtD,EAAS,GACb,OAAQT,GACJ,IAAK,IACD,OAAO0tD,EAAW,oBAAsB,kBAC5C,IAAK,KACDjtD,EAASitD,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACDjtD,EAASitD,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDjtD,EAASitD,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDjtD,EAASitD,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACDjtD,EAASitD,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDjtD,EAASitD,EAAW,SAAW,SAIvC,OAEJ,SAAsBT,EAAQS,GAC1B,OAAOT,EAAS,GACVS,EACI0D,EAAcnE,GACdkE,EAAYlE,GAChBA,EARGoE,CAAapE,EAAQS,GAAY,IAAMjtD,EAW3C+7C,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,2GAA2GztC,MAC/G,KAEJ0tC,YAAa,uEAAuE1tC,MAChF,KAEJ2tC,SAAU,qEAAqE3tC,MAC3E,KAEJ4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACN/+B,EAAG,WACHsjC,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAEVxE,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACN90C,EAAG04C,EACH3D,GAAI2D,EACJ9gD,EAAG8gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJ38B,EAAG28B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB/yD,CAAQ,EAAQ,4FCIlD,SAAWmiD,GAAU,aAIfA,EAAOiO,aAAa,MAAO,CACjCC,OAAQ,0FAA0FztC,MAC9F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,yDAAyD3tC,MAC/D,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,wBAAwB7tC,MAAM,KAC3CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,eACHo9C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJn5B,EAAG,aACHo5B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFztC,MACzF,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,4EAA4E3tC,MAClF,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACN90C,EAAG,YACH+0C,GAAI,cACJn9C,EAAG,eACHo9C,GAAI,cACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,YACHo5B,GAAI,WACJC,EAAG,cACHC,GAAI,aACJC,EAAG,UACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB/yD,CAAQ,EAAQ,8FCElD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,uFAAuFztC,MAC3F,KAEJ0tC,YAAa,iEAAiE1tC,MAC1E,KAEJgyC,kBAAkB,EAClBrE,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN90C,EAAG,oBACH+0C,GAAI,cACJn9C,EAAG,aACHo9C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJn5B,EAAG,UACHo5B,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,SAlEjB5yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,uFAAuFztC,MAC3F,KAEJ0tC,YAAa,iEAAiE1tC,MAC1E,KAEJgyC,kBAAkB,EAClBrE,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN90C,EAAG,oBACH+0C,GAAI,cACJn9C,EAAG,aACHo9C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJn5B,EAAG,UACHo5B,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAEIgT,EAAc,yKACdD,EAAc,CACV,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAGC/S,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFztC,MAC3F,KAEJ0tC,YAAa,iEAAiE1tC,MAC1E,KAEJuyC,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA3BoB,2FA4BpBC,uBA3ByB,oFA4BzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN90C,EAAG,oBACH+0C,GAAI,cACJn9C,EAAG,aACHo9C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJn5B,EAAG,UACHo5B,GAAI,WACJiC,EAAG,cACHC,GAAI,cACJjC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI8U,EAAsB,6DAA6Dr0C,MAC/E,KAEJs0C,EAAyB,kDAAkDt0C,MACvE,KAGCu/B,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,iGAAiGztC,MACrG,KAEJ0tC,YAAa,SAAUx7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbwvC,EAAuBpiD,EAAEyhD,SAEzBU,EAAoBniD,EAAEyhD,SAJtBU,GAOfrC,kBAAkB,EAClBrE,SAAU,wDAAwD3tC,MAC9D,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN90C,EAAG,mBACH+0C,GAAI,cACJn9C,EAAG,YACHo9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,UACHo5B,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aA4ChBA,EAAOiO,aAAa,KAAM,CAC/BC,OAzCS,CACL,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BJC,YA5Bc,CACV,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBJsE,kBAAkB,EAClBrE,SAhBW,CACP,eACA,WACA,WACA,cACA,YACA,YACA,eAUJC,cARgB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QASnEC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MASlDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,YACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,UACHo9C,GAAI,aACJC,EAAG,iBACHC,GAAI,oBACJn5B,EAAG,KACHo5B,GAAI,QACJC,EAAG,KACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aA4ChBA,EAAOiO,aAAa,KAAM,CAC/BC,OAzCS,CACL,gBACA,aACA,UACA,aACA,aACA,eACA,cACA,cACA,eACA,aACA,eACA,gBA8BJC,YA5Bc,CACV,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QAiBJsE,kBAAkB,EAClBrE,SAhBW,CACP,cACA,UACA,UACA,YACA,YACA,WACA,eAUJC,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASnDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACN90C,EAAG,gBACH+0C,GAAI,YACJn9C,EAAG,UACHo9C,GAAI,gBACJC,EAAG,OACHC,GAAI,aACJn5B,EAAG,QACHo5B,GAAI,WACJC,EAAG,OACHC,GAAI,YACJC,EAAG,WACHC,GAAI,eAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFztC,MAC7F,KAEJ0tC,YAAa,8DAA8D1tC,MACvE,KAEJgyC,kBAAkB,EAClBrE,SAAU,mDAAmD3tC,MAAM,KACnE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjB1xD,KAAK+wD,QAAgB,KAAO,KAAO,QAE1DY,QAAS,WACL,MAAO,UAA6B,IAAjB3xD,KAAK+wD,QAAgB,KAAO,KAAO,QAE1Da,SAAU,WACN,MAAO,UAA6B,IAAjB5xD,KAAK+wD,QAAgB,KAAO,KAAO,QAE1Dc,QAAS,WACL,MAAO,UAA6B,IAAjB7xD,KAAK+wD,QAAgB,IAAM,KAAO,QAEzDe,SAAU,WACN,MACI,qBAAwC,IAAjB9xD,KAAK+wD,QAAgB,KAAO,KAAO,QAGlEgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUjhD,GACd,OAA0B,IAAtBA,EAAI9C,QAAQ,MACL,IAAM8C,EAEV,MAAQA,GAEnBkhD,KAAM,SACN90C,EAAG,eACH+0C,GAAI,cACJn9C,EAAG,YACHo9C,GAAI,aACJC,EAAG,YACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxEyB/yD,CAAQ,EAAQ,iGCGlD,SAAWmiD,GAAU,aAIzB,SAAS+T,EAAoBtD,EAAQQ,EAAeztD,EAAK0tD,GACrD,IAAI3rC,EAAS,CACTxK,EAAG,CAAC,kBAAmB,cACvB+0C,GAAI,CAACW,EAAS,aAAcA,EAAS,UACrC99C,EAAG,CAAC,aAAc,YAClBo9C,GAAI,CAACU,EAAS,YAAaA,EAAS,WACpCT,EAAG,CAAC,WAAY,SAChBC,GAAI,CAACQ,EAAS,UAAWA,EAAS,SAClC35B,EAAG,CAAC,YAAa,UACjBo5B,GAAI,CAACO,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,gBAAiB,aACrBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,WAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAW3rC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrCw8C,EAAOiO,aAAa,WAAY,CAC1CC,OAAQ,CACJ6D,WAAY,wFAAwFtxC,MAChG,KAEJ8E,OAAQ,mJAAmJ9E,MACvJ,KAEJuxC,SAAU,mBAEd7D,YAAa,4EAA4E1tC,MACrF,KAEJgyC,kBAAkB,EAClBrE,SAAU,qDAAqD3tC,MAAM,KACrE4tC,cAAe,4CAA4C5tC,MAAM,KACjE6tC,YAAa,wBAAwB7tC,MAAM,KAC3C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,kBACJC,IAAK,qBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,8BACLC,KAAM,uCACNyE,KAAM,oCAEVxE,SAAU,CACNC,QAAS,WACTC,QAAS,eACTC,SAAU,qBACVC,QAAS,WACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACN90C,EAAGg5C,EACHjE,GAAIiE,EACJphD,EAAGohD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJj9B,EAAGi9B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzB,EAAS,MACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,4BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,WAAb5C,EACA4C,EACa,YAAb5C,EACA4C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,UACAA,EAAO,GACP,QAEA,UAzHmBxzD,CAAQ,EAAQ,iGCGlD,SAAWmiD,GAAU,aAIzB,SAAS+T,EAAoBtD,EAAQQ,EAAeztD,EAAK0tD,GACrD,IAAI3rC,EAAS,CACTxK,EAAG,CAAC,qBAAsB,iBAC1B+0C,GAAI,CAACW,EAAS,cAAeA,EAAS,WACtC99C,EAAG,CAAC,aAAc,YAClBo9C,GAAI,CAACU,EAAS,YAAaA,EAAS,WACpCT,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACQ,EAAS,WAAYA,EAAS,UACnC35B,EAAG,CAAC,YAAa,UACjBo5B,GAAI,CAACO,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,eAAgB,aACpBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,YAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAW3rC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrCw8C,EAAOiO,aAAa,WAAY,CAC1CC,OAAQ,CACJ6D,WAAY,4EAA4EtxC,MACpF,KAEJ8E,OAAQ,wIAAwI9E,MAC5I,KAEJuxC,SAAU,mBAEd7D,YAAa,4DAA4D1tC,MACrE,KAEJgyC,kBAAkB,EAClBrE,SAAU,uDAAuD3tC,MAAM,KACvE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,iBACJC,IAAK,oBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNyE,KAAM,mCAEVxE,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACN90C,EAAGg5C,EACHjE,GAAIiE,EACJphD,EAAGohD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJj9B,EAAGi9B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,cACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzB,EAAS,KACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,+BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb5C,EACA4C,EACa,aAAb5C,EACA4C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAzHmBxzD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ1R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFztC,MAC7F,KAEJ0tC,YAAa,yEAAyE1tC,MAClF,KAEJgyC,kBAAkB,EAClBrE,SAAU,wDAAwD3tC,MAC9D,KAEJ4tC,cAAe,mCAAmC5tC,MAAM,KACxD6tC,YAAa,qBAAqB7tC,MAAM,KACxCouC,eAAgB,CACZC,GAAI,gBACJC,IAAK,mBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN90C,EAAG,WACH+0C,GAAI,WACJn9C,EAAG,WACHo9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJn5B,EAAG,UACHo5B,GAAI,UACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAKzB40C,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,SAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,OACAA,EAAO,GACP,OAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB/yD,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,0EAA0EztC,MAC9E,KAEJ0tC,YAAa,4DAA4D1tC,MACrE,KAEJ2tC,SAAU,uCAAuC3tC,MAAM,KACvD4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,gBAAgB7tC,MAAM,KACnCouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,6BACN/+B,EAAG,WACHsjC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVxE,SAAU,CACNC,QAAS,cACTC,QAAS,aACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN90C,EAAG,aACH+0C,GAAI,WACJn9C,EAAG,MACHo9C,GAAI,UACJC,EAAG,MACHC,GAAI,SAAUQ,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpB35B,EAAG,MACHo5B,GAAI,SAAUO,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBN,EAAG,OACHC,GAAI,SAAUK,GACV,OAAe,IAAXA,EACO,UAEJA,EAAS,WAEpBJ,EAAG,MACHC,GAAI,SAAUG,GACV,OAAe,IAAXA,EACO,SACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,OAEbA,EAAS,UAGxBlC,cAAe,gEACfC,KAAM,SAAUj+C,GACZ,MAAO,8BAA8BuQ,KAAKvQ,IAE9Ck+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,aACAA,EAAO,GACP,QACAA,EAAO,GACPzC,EAAU,SAAW,eACrByC,EAAO,GACPzC,EAAU,QAAU,eAEpB,UAzFmB/wD,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETqB,EAAc,CACV,OACA,WACA,UACA,UACA,OACA,QACA,QACA,OACA,aACA,UACA,WACA,cAiBC/S,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,CACJ3oC,OAAQ,8EAA8E9E,MAClF,KAEJsxC,WAAY,0EAA0EtxC,MAClF,MAGR0tC,YAAa,6DAA6D1tC,MACtE,KAEJ2tC,SAAU,uDAAuD3tC,MAAM,KACvE4tC,cAAe,kCAAkC5tC,MAAM,KACvD6tC,YAAa,qBAAqB7tC,MAAM,KACxCouC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAGV4D,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAzCmB,CACf,OACA,QACA,UACA,UACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,SA+BJR,YAAa,+KAEbR,iBAAkB,+KAElBa,kBAAmB,uIAEnBC,uBAAwB,sFAExBlE,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN90C,EAAG,cACH+0C,GAAI,WACJn9C,EAAG,UACHo9C,GAAI,UACJC,EAAG,UACHC,GAAI,UACJn5B,EAAG,SACHo5B,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAKzB40C,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,QAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAlKyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,SAASyT,EAAUhD,EAAQQ,EAAeztD,GACtC,IAAIS,EAASwsD,EAAS,IACtB,OAAQjtD,GACJ,IAAK,KAQD,OANIS,GADW,IAAXwsD,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIhtD,GADW,IAAXwsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIhtD,GADW,IAAXwsD,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIxsD,GADW,IAAXwsD,EACU,MAEA,QAGlB,IAAK,KAQD,OANIxsD,GADW,IAAXwsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIxsD,GADW,IAAXwsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBzQ,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,CACJ3oC,OAAQ,oGAAoG9E,MACxG,KAEJsxC,WAAY,gGAAgGtxC,MACxG,MAGR0tC,YAAa,+DAA+D1tC,MACxE,KAEJgyC,kBAAkB,EAClBrE,SAAU,4DAA4D3tC,MAClE,KAEJ4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQ5xD,KAAKs0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN90C,EAAG,cACH+0C,GAAI2D,EACJ9gD,EAAG8gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJ38B,EAAG,MACHo5B,GAAIuD,EACJtD,EAAG,SACHC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxJyB/yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,IAAIgV,EAAc,gEAAgEv0C,MAC9E,KAEJ,SAASgzC,EAAUhD,EAAQQ,EAAeztD,EAAK0tD,GAC3C,IAAIW,EAAMpB,EACV,OAAQjtD,GACJ,IAAK,IACD,OAAO0tD,GAAYD,EACb,mBACA,oBACV,IAAK,KACD,OAAOY,GAAOX,GAAYD,GACpB,aACA,cACV,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,SAAW,YAC3D,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,SAAW,YACzD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,MAAQ,QACxD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,MAAQ,QAE1D,MAAO,GAEX,SAASP,EAAKQ,GACV,OACKA,EAAW,GAAK,WACjB,IACA8D,EAAYr3D,KAAKs0D,OACjB,aAICjS,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGztC,MACxG,KAEJ0tC,YAAa,iEAAiE1tC,MAC1E,KAEJgyC,kBAAkB,EAClBrE,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,gCAAgC5tC,MAAM,KACrD6tC,YAAa,qBAAqB7tC,MAAM,KACxCouC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVZ,cAAe,SACfC,KAAM,SAAUj+C,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3B4pC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,IACW,IAAZE,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,MAGzCQ,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAOmB,EAAKhxD,KAAK/B,MAAM,IAE3B6xD,QAAS,oBACTC,SAAU,WACN,OAAOiB,EAAKhxD,KAAK/B,MAAM,IAE3B+xD,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,KACN90C,EAAG04C,EACH3D,GAAI2D,EACJ9gD,EAAG8gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJ38B,EAAG28B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB/yD,CAAQ,EAAQ,8FCElD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,CACJ3oC,OAAQ,4GAA4G9E,MAChH,KAEJsxC,WAAY,gGAAgGtxC,MACxG,MAGR0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,gEAAgE3tC,MACtE,KAEJ4tC,cAAe,+BAA+B5tC,MAAM,KACpD6tC,YAAa,+BAA+B7tC,MAAM,KAClDouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTE,QAAS,YACTD,SAAU,WACN,MAAO,sBAEXE,SAAU,WACN,MAAO,8BAEXC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN90C,EAAG,mBACH+0C,GAAI,cACJn9C,EAAG,OACHo9C,GAAI,UACJC,EAAG,MACHC,GAAI,SACJn5B,EAAG,KACHo5B,GAAI,QACJC,EAAG,OACHC,GAAI,UACJC,EAAG,OACHC,GAAI,WAER/B,cAAe,oCACfC,KAAM,SAAUj+C,GACZ,MAAO,uBAAuBuQ,KAAKvQ,IAEvCk+C,SAAU,SAAU4C,GAChB,OAAIA,EAAO,EACA,UACAA,EAAO,GACP,WACAA,EAAO,GACP,UAEA,YAGfd,uBAAwB,0BACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAXzB,EACOA,EAAS,MAEbA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB/yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFztC,MAC7F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,6CAA6C3tC,MAAM,KAC7D4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,wBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,GAAoC,UAAbA,EACvB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,eACN90C,EAAG,iBACH+0C,GAAI,WACJn9C,EAAG,UACHo9C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJn5B,EAAG,SACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIzB,SAAS8T,EAAO51C,GACZ,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,EAK1B,SAASu1C,EAAUhD,EAAQQ,EAAeztD,EAAK0tD,GAC3C,IAAIjtD,EAASwsD,EAAS,IACtB,OAAQjtD,GACJ,IAAK,IACD,OAAOytD,GAAiBC,EAClB,mBACA,mBACV,IAAK,KACD,OAAI4C,EAAOrD,GAEHxsD,GACCgtD,GAAiBC,EAAW,WAAa,YAG3CjtD,EAAS,UACpB,IAAK,IACD,OAAOgtD,EAAgB,SAAW,SACtC,IAAK,KACD,OAAI6C,EAAOrD,GAEHxsD,GAAUgtD,GAAiBC,EAAW,UAAY,WAE/CD,EACAhtD,EAAS,SAEbA,EAAS,SACpB,IAAK,KACD,OAAI6vD,EAAOrD,GAEHxsD,GACCgtD,GAAiBC,EACZ,gBACA,iBAGPjtD,EAAS,cACpB,IAAK,IACD,OAAIgtD,EACO,QAEJC,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAI4C,EAAOrD,GACHQ,EACOhtD,EAAS,QAEbA,GAAUitD,EAAW,OAAS,SAC9BD,EACAhtD,EAAS,QAEbA,GAAUitD,EAAW,MAAQ,QACxC,IAAK,IACD,OAAID,EACO,UAEJC,EAAW,QAAU,SAChC,IAAK,KACD,OAAI4C,EAAOrD,GACHQ,EACOhtD,EAAS,UAEbA,GAAUitD,EAAW,SAAW,WAChCD,EACAhtD,EAAS,UAEbA,GAAUitD,EAAW,QAAU,UAC1C,IAAK,IACD,OAAOD,GAAiBC,EAAW,KAAO,MAC9C,IAAK,KACD,OAAI4C,EAAOrD,GACAxsD,GAAUgtD,GAAiBC,EAAW,KAAO,QAEjDjtD,GAAUgtD,GAAiBC,EAAW,KAAO,QAIvDlR,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFztC,MACxF,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,mFAAmF3tC,MACzF,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,iBACN90C,EAAG04C,EACH3D,GAAI2D,EACJ9gD,EAAG8gD,EACH1D,GAAI0D,EACJzD,EAAG,cACHC,GAAIwD,EACJ38B,EAAG28B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,gGAAgGztC,MACpG,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACD,MAAO,6BACX,QACI,MAAO,+BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU70C,GACd,OAAQ,YAAY+F,KAAK/F,GAAK,MAAQ,MAAQ,IAAMA,GAExD80C,KAAM,QACN90C,EAAG,iBACH+0C,GAAI,aACJn9C,EAAG,YACHo9C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJn5B,EAAG,YACHo5B,GAAI,YACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA9DyB/yD,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,gGAAgGztC,MACpG,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,WACL,MACI,WACC1xD,KAAK+wD,QAAU,EAAI,OAA0B,IAAjB/wD,KAAK+wD,QAAgB,IAAM,OACxD,OAGRY,QAAS,WACL,MACI,aACC3xD,KAAK+wD,QAAU,EAAI,OAA0B,IAAjB/wD,KAAK+wD,QAAgB,IAAM,OACxD,OAGRa,SAAU,WACN,MACI,WACC5xD,KAAK+wD,QAAU,EAAI,OAA0B,IAAjB/wD,KAAK+wD,QAAgB,IAAM,OACxD,OAGRc,QAAS,WACL,MACI,WACC7xD,KAAK+wD,QAAU,EAAI,OAA0B,IAAjB/wD,KAAK+wD,QAAgB,IAAM,OACxD,OAGRe,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACD,MACI,uBACCt0D,KAAK+wD,QAAU,EACV,OACiB,IAAjB/wD,KAAK+wD,QACL,IACA,OACN,MAER,QACI,MACI,uBACC/wD,KAAK+wD,QAAU,EACV,OACiB,IAAjB/wD,KAAK+wD,QACL,IACA,OACN,QAIhBgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN90C,EAAG,iBACH+0C,GAAI,aACJn9C,EAAG,YACHo9C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJn5B,EAAG,YACHo5B,GAAI,YACJiC,EAAG,gBACHC,GAAI,eACJjC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB/yD,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BgH,KAAM,CACF,CACIC,MAAO,aACPC,OAAQ,EACRhyD,KAAM,KACNiyD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRhyD,KAAM,KACNiyD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRhyD,KAAM,KACNiyD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRhyD,KAAM,KACNiyD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRhyD,KAAM,KACNiyD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRhyD,KAAM,KACNiyD,OAAQ,KACRC,KAAM,MAEV,CACIH,MAAO,aACPI,OAAO,IACPH,OAAQ,EACRhyD,KAAM,MACNiyD,OAAQ,KACRC,KAAM,OAGdE,oBAAqB,WACrBC,oBAAqB,SAAUjlD,EAAOoJ,GAClC,MAAoB,MAAbA,EAAM,GAAa,EAAIqN,SAASrN,EAAM,IAAMpJ,EAAO,KAE9D29C,OAAQ,yCAAyCztC,MAAM,KACvD0tC,YAAa,yCAAyC1tC,MAClD,KAEJ2tC,SAAU,8BAA8B3tC,MAAM,KAC9C4tC,cAAe,gBAAgB5tC,MAAM,KACrC6tC,YAAa,gBAAgB7tC,MAAM,KACnCouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBACN/+B,EAAG,aACHsjC,GAAI,YACJC,IAAK,kBACLC,KAAM,wBAEVrF,cAAe,SACfC,KAAM,SAAUj+C,GACZ,MAAiB,OAAVA,GAEXk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,SAAUkG,GAChB,OAAIA,EAAI/E,SAAW/yD,KAAK+yD,OACb,cAEA,WAGflB,QAAS,UACTC,SAAU,SAAUgG,GAChB,OAAI93D,KAAK+yD,SAAW+E,EAAI/E,OACb,cAEA,WAGfhB,SAAU,KAEda,uBAAwB,WACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAXzB,EAAe,KAAOA,EAAS,IAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN90C,EAAG,KACH+0C,GAAI,MACJn9C,EAAG,KACHo9C,GAAI,MACJC,EAAG,MACHC,GAAI,OACJn5B,EAAG,KACHo5B,GAAI,MACJC,EAAG,MACHC,GAAI,OACJC,EAAG,KACHC,GAAI,SAlJ0BzyD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFztC,MAC7F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,+CAA+C3tC,MAAM,KAC/D4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,6BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACN90C,EAAG,kBACH+0C,GAAI,WACJn9C,EAAG,kBACHo9C,GAAI,WACJC,EAAG,gBACHC,GAAI,SACJn5B,EAAG,WACHo5B,GAAI,YACJC,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGztC,MACzG,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,CACN2D,WAAY,gEAAgEtxC,MACxE,KAEJ8E,OAAQ,iEAAiE9E,MACrE,KAEJuxC,SAAU,iBAEd3D,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTE,QAAS,kBACTD,SAAU,wBACVE,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU70C,GACd,OAAOA,EAAErI,QAAQ,iCAAiC,SAC9CgjD,EACA9wC,EACA+wC,GAEA,MAAc,MAAPA,EAAa/wC,EAAK,KAAOA,EAAK+wC,EAAK,SAGlD9F,KAAM,SAAU90C,GACZ,MAAI,4BAA4B+F,KAAK/F,GAC1BA,EAAErI,QAAQ,SAAU,UAE3B,OAAOoO,KAAK/F,GACLA,EAAErI,QAAQ,QAAS,YAEvBqI,GAEXA,EAAG,iBACH+0C,GAAI,UACJn9C,EAAG,OACHo9C,GAAI,UACJC,EAAG,QACHC,GAAI,WACJn5B,EAAG,MACHo5B,GAAI,SACJC,EAAG,MACHC,GAAI,SACJC,EAAG,OACHC,GAAI,WAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,MAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,MAAQA,EAEZA,EAAS,MAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI2R,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGA3R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFztC,MACzF,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,0DAA0D3tC,MAChE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,kBACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN90C,EAAG,iBACH+0C,GAAI,YACJn9C,EAAG,YACHo9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJn5B,EAAG,UACHo5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhFyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ1R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,yEAAyEztC,MAC7E,KAEJ0tC,YAAa,yEAAyE1tC,MAClF,KAEJ2tC,SAAU,iDAAiD3tC,MAAM,KACjE4tC,cAAe,oBAAoB5tC,MAAM,KACzC6tC,YAAa,oBAAoB7tC,MAAM,KACvC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,cACfC,KAAM,SAAUj+C,GACZ,MAAiB,UAAVA,GAEXk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,QAEA,SAGfjC,SAAU,CACNC,QAAS,oBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,qBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN90C,EAAG,iBACH+0C,GAAI,YACJn9C,EAAG,UACHo9C,GAAI,UACJC,EAAG,UACHC,GAAI,UACJn5B,EAAG,UACHo5B,GAAI,UACJC,EAAG,QACHC,GAAI,QACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,OACTiB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAGzB+2C,KAAM,CACFC,IAAK,EACLC,IAAK,KApGyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ1R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FztC,MACjG,KAEJ0tC,YAAa,2EAA2E1tC,MACpF,KAEJgyC,kBAAkB,EAClBrE,SAAU,0DAA0D3tC,MAChE,KAEJ4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,wBAAwB7tC,MAAM,KAC3CouC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN90C,EAAG,gBACH+0C,GAAI,gBACJn9C,EAAG,aACHo9C,GAAI,WACJC,EAAG,YACHC,GAAI,UACJn5B,EAAG,WACHo5B,GAAI,SACJC,EAAG,cACHC,GAAI,YACJC,EAAG,YACHC,GAAI,WAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAGzB40C,cAAe,gCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb5C,EACA4C,EACa,aAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,OAEA,UAGfd,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyB/yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,yCAAyCztC,MAAM,KACvD0tC,YAAa,yCAAyC1tC,MAClD,KAEJ2tC,SAAU,8BAA8B3tC,MAAM,KAC9C4tC,cAAe,gBAAgB5tC,MAAM,KACrC6tC,YAAa,gBAAgB7tC,MAAM,KACnCouC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,uBACLC,KAAM,4BACN/+B,EAAG,cACHsjC,GAAI,gBACJC,IAAK,uBACLC,KAAM,6BAEVxE,SAAU,CACNC,QAAS,QACTC,QAAS,QACTC,SAAU,UACVC,QAAS,QACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,OACN90C,EAAG,MACH+0C,GAAI,MACJn9C,EAAG,KACHo9C,GAAI,MACJC,EAAG,OACHC,GAAI,OACJn5B,EAAG,KACHo5B,GAAI,MACJC,EAAG,MACHC,GAAI,MACJC,EAAG,MACHC,GAAI,OAERC,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBlC,cAAe,QACfC,KAAM,SAAUtvC,GACZ,MAAiB,OAAVA,GAEXuvC,SAAU,SAAU4C,EAAMC,EAAQsE,GAC9B,OAAOvE,EAAO,GAAK,KAAO,QAxEIxzD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETxD,EAAS,CACL,eACA,QACA,QACA,QACA,QACA,WACA,SACA,MACA,UACA,eACA,eACA,gBAGClO,EAAOiO,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,0EAA0E3tC,MAChF,KAEJ4tC,cAAe,2DAA2D5tC,MACtE,KAEJ6tC,YAAa,gBAAgB7tC,MAAM,KACnC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,kBACfC,KAAM,SAAUj+C,GACZ,MAAO,UAAUuQ,KAAKvQ,IAE1Bk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,UAEA,WAGfjC,SAAU,CACNC,QAAS,sBACTC,QAAS,uBACTC,SAAU,oBACVC,QAAS,qBACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,KACN90C,EAAG,kBACH+0C,GAAI,WACJn9C,EAAG,cACHo9C,GAAI,YACJC,EAAG,eACHC,GAAI,aACJn5B,EAAG,WACHo5B,GAAI,SACJC,EAAG,YACHC,GAAI,UACJC,EAAG,WACHC,GAAI,UAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO+3C,EAAU/3C,MAEpBjH,QAAQ,KAAM,MAEvB6+C,WAAY,SAAUruD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO63C,EAAU73C,MAEpBjH,QAAQ,KAAM,MAEvBg+C,KAAM,CACFC,IAAK,EACLC,IAAK,MApHyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI2R,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGA3R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,kFAAkFztC,MACtF,KAEJ0tC,YAAa,qDAAqD1tC,MAC9D,KAEJ2tC,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,wCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN90C,EAAG,iBACH+0C,GAAI,YACJn9C,EAAG,YACHo9C,GAAI,WACJC,EAAG,WACHC,GAAI,UACJn5B,EAAG,UACHo5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,wBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlFyB/yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,SAAS+T,EAAoBtD,EAAQQ,EAAeztD,EAAK0tD,GACrD,IAAI3rC,EAAS,CACT5S,EAAG,CAAC,aAAc,gBAClBq9C,EAAG,CAAC,YAAa,eACjBl5B,EAAG,CAAC,UAAW,aACfq5B,EAAG,CAAC,WAAY,eAChBE,EAAG,CAAC,UAAW,eAEnB,OAAOY,EAAgB1rC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAuBxD,SAASqyD,EAA4BpF,GAEjC,GADAA,EAASzpC,SAASypC,EAAQ,IACtBxpC,MAAMwpC,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAI4B,EAAY5B,EAAS,GAEzB,OACWoF,EADO,IAAdxD,EADa5B,EAAS,GAIS4B,GAChC,GAAI5B,EAAS,IAAO,CAEvB,KAAOA,GAAU,IACbA,GAAkB,GAEtB,OAAOoF,EAA4BpF,GAInC,OAAOoF,EADPpF,GAAkB,KAKjBzQ,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFztC,MAC3F,KAEJ0tC,YAAa,+DAA+D1tC,MACxE,KAEJgyC,kBAAkB,EAClBrE,SAAU,mEAAmE3tC,MACzE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,cACJC,IAAK,iBACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEVC,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,WAEN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,4BAIvBtC,aAAc,CACVC,OAhGR,SAA2B1sD,GAEvB,OAAI2yD,EADS3yD,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,KAAO3I,EAEX,MAAQA,GA4FX2sD,KA1FR,SAAyB3sD,GAErB,OAAI2yD,EADS3yD,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,QAAU3I,EAEd,SAAWA,GAsFd6X,EAAG,kBACH+0C,GAAI,cACJn9C,EAAGohD,EACHhE,GAAI,cACJC,EAAG+D,EACH9D,GAAI,aACJn5B,EAAGi9B,EACH7D,GAAI,UACJC,EAAG4D,EACH3D,GAAI,WACJC,EAAG0D,EACHzD,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApIyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,6EAA6EztC,MACjF,KAEJ0tC,YAAa,6EAA6E1tC,MACtF,KAEJ2tC,SAAU,sCAAsC3tC,MAAM,KACtD4tC,cAAe,oCAAoC5tC,MAAM,KACzD6tC,YAAa,mBAAmB7tC,MAAM,KACtC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,6BAEVZ,cAAe,kBACfC,KAAM,SAAUj+C,GACZ,MAAiB,WAAVA,GAEXk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,WAEA,UAGfjC,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,wBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN90C,EAAG,mBACH+0C,GAAI,YACJn9C,EAAG,SACHo9C,GAAI,UACJC,EAAG,YACHC,GAAI,aACJn5B,EAAG,QACHo5B,GAAI,SACJC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,SAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,MAAO,MAAQA,KA/De5yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI8V,EAAQ,CACRhG,GAAI,6BACJn9C,EAAG,wBACHo9C,GAAI,0BACJC,EAAG,2BACHC,GAAI,4BACJn5B,EAAG,qBACHo5B,GAAI,sBACJC,EAAG,uBACHC,GAAI,4BACJC,EAAG,mBACHC,GAAI,oBASR,SAASyF,EAAkBtF,EAAQQ,EAAeztD,EAAK0tD,GACnD,OAAOD,EACDa,EAAMtuD,GAAK,GACX0tD,EACAY,EAAMtuD,GAAK,GACXsuD,EAAMtuD,GAAK,GAErB,SAASwyD,EAAQvF,GACb,OAAOA,EAAS,IAAO,GAAMA,EAAS,IAAMA,EAAS,GAEzD,SAASqB,EAAMtuD,GACX,OAAOsyD,EAAMtyD,GAAKid,MAAM,KAE5B,SAASgzC,EAAUhD,EAAQQ,EAAeztD,EAAK0tD,GAC3C,IAAIjtD,EAASwsD,EAAS,IACtB,OAAe,IAAXA,EAEIxsD,EAAS8xD,EAAkBtF,EAAQQ,EAAeztD,EAAI,GAAI0tD,GAEvDD,EACAhtD,GAAU+xD,EAAQvF,GAAUqB,EAAMtuD,GAAK,GAAKsuD,EAAMtuD,GAAK,IAE1D0tD,EACOjtD,EAAS6tD,EAAMtuD,GAAK,GAEpBS,GAAU+xD,EAAQvF,GAAUqB,EAAMtuD,GAAK,GAAKsuD,EAAMtuD,GAAK,IAIjEw8C,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,CACJ3oC,OAAQ,oGAAoG9E,MACxG,KAEJsxC,WAAY,kGAAkGtxC,MAC1G,KAEJuxC,SAAU,+DAEd7D,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,CACN7oC,OAAQ,oFAAoF9E,MACxF,KAEJsxC,WAAY,2FAA2FtxC,MACnG,KAEJuxC,SAAU,cAEd3D,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,iBAAiB7tC,MAAM,KACpC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN/+B,EAAG,aACHsjC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEVxE,SAAU,CACNC,QAAS,gBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN90C,EAlFR,SAA0B01C,EAAQQ,EAAeztD,EAAK0tD,GAClD,OAAID,EACO,kBAEAC,EAAW,kBAAoB,mBA+EtCpB,GAAI2D,EACJ9gD,EAAGojD,EACHhG,GAAI0D,EACJzD,EAAG+F,EACH9F,GAAIwD,EACJ38B,EAAGi/B,EACH7F,GAAIuD,EACJtD,EAAG4F,EACH3F,GAAIqD,EACJpD,EAAG0F,EACHzF,GAAImD,GAERlD,uBAAwB,cACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,QAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyB/yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,IAAI8V,EAAQ,CACRhG,GAAI,qCAAqCrvC,MAAM,KAC/C9N,EAAG,iCAAiC8N,MAAM,KAC1CsvC,GAAI,iCAAiCtvC,MAAM,KAC3CuvC,EAAG,iCAAiCvvC,MAAM,KAC1CwvC,GAAI,iCAAiCxvC,MAAM,KAC3CqW,EAAG,6BAA6BrW,MAAM,KACtCyvC,GAAI,6BAA6BzvC,MAAM,KACvC0vC,EAAG,iCAAiC1vC,MAAM,KAC1C2vC,GAAI,iCAAiC3vC,MAAM,KAC3C4vC,EAAG,wBAAwB5vC,MAAM,KACjC6vC,GAAI,wBAAwB7vC,MAAM,MAKtC,SAAS8E,EAAOusC,EAAOrB,EAAQQ,GAC3B,OAAIA,EAEOR,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKqB,EAAM,GAAKA,EAAM,GAI5DrB,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKqB,EAAM,GAAKA,EAAM,GAG3E,SAASF,EAAuBnB,EAAQQ,EAAeztD,GACnD,OAAOitD,EAAS,IAAMlrC,EAAOuwC,EAAMtyD,GAAMitD,EAAQQ,GAErD,SAASgF,EAAyBxF,EAAQQ,EAAeztD,GACrD,OAAO+hB,EAAOuwC,EAAMtyD,GAAMitD,EAAQQ,GAM7BjR,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,uGAAuGztC,MAC3G,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,0EAA0E3tC,MAChF,KAEJ4tC,cAAe,kBAAkB5tC,MAAM,KACvC6tC,YAAa,kBAAkB7tC,MAAM,KACrC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN90C,EAlCR,SAAyB01C,EAAQQ,GAC7B,OAAOA,EAAgB,iBAAmB,kBAkCtCnB,GAAI8B,EACJj/C,EAAGsjD,EACHlG,GAAI6B,EACJ5B,EAAGiG,EACHhG,GAAI2B,EACJ96B,EAAGm/B,EACH/F,GAAI0B,EACJzB,EAAG8F,EACH7F,GAAIwB,EACJvB,EAAG4F,EACH3F,GAAIsB,GAERrB,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIzB,IAAIkW,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,SAAU,UAAW,WAC1Bn9C,EAAG,CAAC,cAAe,iBACnBo9C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,SAAU,UAAW,WAC1BE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAeztD,GACxC,IAAI6yD,EAAUH,EAAWC,MAAM3yD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACGkkD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAMjDrW,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFztC,MACvF,KAEJ0tC,YAAa,2DAA2D1tC,MACpE,KAEJgyC,kBAAkB,EAClBrE,SAAU,4DAA4D3tC,MAClE,KAEJ4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQ5xD,KAAKs0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,6BACA,iCACA,4BACA,4BACA,8BACA,2BACA,4BAEgB9xD,KAAKs0D,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN90C,EAAG,mBACH+0C,GAAIoG,EAAWzC,UACf9gD,EAAGujD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACf38B,EAAG,MACHo5B,GAAIgG,EAAWzC,UACftD,EAAG,SACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IztC,MAClJ,KAEJ0tC,YAAa,iEAAiE1tC,MAC1E,KAEJuyC,YAAa,yCACbK,kBAAmB,yCACnBb,iBAAkB,yCAClBc,uBAAwB,yCACxBlF,SAAU,kDAAkD3tC,MAAM,KAClE4tC,cAAe,wBAAwB5tC,MAAM,KAC7C6tC,YAAa,wBAAwB7tC,MAAM,KAC3CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,WACN90C,EAAG,mBACH+0C,GAAI,YACJn9C,EAAG,YACHo9C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,QACHo5B,GAAI,QACJC,EAAG,YACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB/yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFztC,MAC3F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,wDAAwD3tC,MAC9D,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,oBACVC,QAAS,gBACTC,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN90C,EAAG,kBACH+0C,GAAI,aACJn9C,EAAG,cACHo9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJn5B,EAAG,WACHo5B,GAAI,UACJC,EAAG,aACHC,GAAI,YACJC,EAAG,cACHC,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI4B,EAAY5B,EAAS,GACrB6B,EAAc7B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB6B,EACA7B,EAAS,MACT6B,EAAc,IAAMA,EAAc,GAClC7B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,GAAiC,IAAdA,EACnB5B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnFyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFztC,MAC7F,KAEJ0tC,YAAa,yEAAyE1tC,MAClF,KAEJgyC,kBAAkB,EAClBrE,SAAU,wEAAwE3tC,MAC9E,KAEJ4tC,cAAe,2CAA2C5tC,MAAM,KAChE6tC,YAAa,wBAAwB7tC,MAAM,KAC3CouC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN90C,EAAG,gBACH+0C,GAAI,cACJn9C,EAAG,eACHo9C,GAAI,cACJC,EAAG,eACHC,GAAI,cACJn5B,EAAG,YACHo5B,GAAI,WACJC,EAAG,WACHC,GAAI,UACJC,EAAG,WACHC,GAAI,WAER/B,cAAe,gDACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,WAAb5C,GAAyB4C,GAAQ,GACrB,iBAAb5C,GACa,eAAbA,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,SACAA,EAAO,GACP,eACAA,EAAO,GACP,aAEA,YA7EmBxzD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,SAASyT,EAAUhD,EAAQQ,EAAeztD,EAAK0tD,GAC3C,OAAQ1tD,GACJ,IAAK,IACD,OAAOytD,EAAgB,gBAAkB,kBAC7C,IAAK,KACD,OAAOR,GAAUQ,EAAgB,UAAY,aACjD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,SAAW,YAChD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,QAAU,WAC/C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,UAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,QACI,OAAOR,GAIVzQ,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,+LAA+LztC,MACnM,KAEJ0tC,YAAa,6EAA6E1tC,MACtF,KAEJgyC,kBAAkB,EAClBrE,SAAU,6CAA6C3tC,MAAM,KAC7D4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,iCAEVZ,cAAe,SACfC,KAAM,SAAUj+C,GACZ,MAAiB,OAAVA,GAEXk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACN90C,EAAG04C,EACH3D,GAAI2D,EACJ9gD,EAAG8gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJ38B,EAAG28B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,QACpB,QACI,OAAOA,MAhGe5yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGb,SAAS4E,EAAe7F,EAAQQ,EAAe/tD,EAAQguD,GACnD,IAAI2C,EAAS,GACb,GAAI5C,EACA,OAAQ/tD,GACJ,IAAK,IACD2wD,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,KACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,gBAIjB,OAAQ3wD,GACJ,IAAK,IACD2wD,EAAS,eACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,cACT,MACJ,IAAK,KACDA,EAAS,cACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YAIrB,OAAOA,EAAOnhD,QAAQ,MAAO+9C,GAGxBzQ,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,gFAAgF1tC,MACzF,KAEJgyC,kBAAkB,EAClBrE,SAAU,uDAAuD3tC,MAAM,KACvE4tC,cAAe,kCAAkC5tC,MAAM,KACvD6tC,YAAa,qBAAqB7tC,MAAM,KACxCouC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,WACVC,QAAS,WACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN90C,EAAGu7C,EACHxG,GAAIwG,EACJ3jD,EAAG2jD,EACHvG,GAAIuG,EACJtG,EAAGsG,EACHrG,GAAIqG,EACJx/B,EAAGw/B,EACHpG,GAAIoG,EACJnG,EAAGmG,EACHlG,GAAIkG,EACJjG,EAAGiG,EACHhG,GAAIgG,GAER7E,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAGzB40C,cAAe,qCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,UAAb5C,GAAqC,UAAbA,EACjB4C,EAEM,WAAb5C,GACa,aAAbA,GACa,WAAbA,EAEO4C,GAAQ,GAAKA,EAAOA,EAAO,QAL/B,GAQX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,GAAQ,GAAKA,EAAO,EACb,QACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,WAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvMyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,oFAAoFztC,MACxF,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,6CAA6C3tC,MAAM,KAC7D4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN90C,EAAG,gBACH+0C,GAAI,UACJn9C,EAAG,UACHo9C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJn5B,EAAG,SACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFztC,MACxF,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,6CAA6C3tC,MAAM,KAC7D4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN90C,EAAG,gBACH+0C,GAAI,UACJn9C,EAAG,UACHo9C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJn5B,EAAG,SACHo5B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,iEAAiE3tC,MACvE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,eACH+0C,GAAI,aACJn9C,EAAG,SACHo9C,GAAI,YACJC,EAAG,SACHC,GAAI,aACJn5B,EAAG,UACHo5B,GAAI,YACJC,EAAG,QACHC,GAAI,UACJC,EAAG,OACHC,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB/yD,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ1R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FztC,MAC/F,KAEJ0tC,YAAa,mDAAmD1tC,MAAM,KACtE2tC,SAAU,wDAAwD3tC,MAC9D,KAEJ4tC,cAAe,2BAA2B5tC,MAAM,KAChD6tC,YAAa,2BAA2B7tC,MAAM,KAE9CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,kBACN90C,EAAG,kBACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJn5B,EAAG,SACHo5B,GAAI,SACJC,EAAG,OACHC,GAAI,OACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAGzB+2C,KAAM,CACFC,IAAK,EACLC,IAAK,KAvFyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFztC,MACzF,KAEJ0tC,YAAa,6DAA6D1tC,MACtE,KAEJgyC,kBAAkB,EAClBrE,SAAU,qDAAqD3tC,MAAM,KACrE4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN90C,EAAG,gBACH+0C,GAAI,cACJn9C,EAAG,aACHo9C,GAAI,cACJC,EAAG,UACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,WACJiC,EAAG,SACHC,GAAI,UACJjC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB/yD,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ1R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFztC,MAC3F,KAEJ0tC,YAAa,uEAAuE1tC,MAChF,KAEJgyC,kBAAkB,EAClBrE,SAAU,wDAAwD3tC,MAC9D,KAEJ4tC,cAAe,0CAA0C5tC,MAAM,KAC/D6tC,YAAa,4BAA4B7tC,MAAM,KAC/C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVsC,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAGzB40C,cAAe,yBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb5C,EACA4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,QAGfjC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,qBACVC,QAAS,YACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,WACN90C,EAAG,YACH+0C,GAAI,aACJn9C,EAAG,WACHo9C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAtHyB/yD,CAAQ,EAAQ,8FCIlD,SAAWmiD,GAAU,aAIzB,IAAI8U,EAAsB,6DAA6Dr0C,MAC/E,KAEJs0C,EAAyB,kDAAkDt0C,MACvE,KAEJsyC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAEPhT,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,0FAA0FztC,MAC9F,KAEJ0tC,YAAa,SAAUx7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbwvC,EAAuBpiD,EAAEyhD,SAEzBU,EAAoBniD,EAAEyhD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElB3E,SAAU,6DAA6D3tC,MACnE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN90C,EAAG,oBACH+0C,GAAI,cACJn9C,EAAG,aACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,SACJn5B,EAAG,UACHo5B,GAAI,WACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI8U,EAAsB,6DAA6Dr0C,MAC/E,KAEJs0C,EAAyB,kDAAkDt0C,MACvE,KAEJsyC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAEThT,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FztC,MAC9F,KAEJ0tC,YAAa,SAAUx7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbwvC,EAAuBpiD,EAAEyhD,SAEzBU,EAAoBniD,EAAEyhD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElB3E,SAAU,6DAA6D3tC,MACnE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN90C,EAAG,oBACH+0C,GAAI,cACJn9C,EAAG,aACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,SACJn5B,EAAG,UACHo5B,GAAI,WACJiC,EAAG,WACHC,GAAI,WACJjC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArGyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFztC,MACzF,KAEJ0tC,YAAa,6DAA6D1tC,MACtE,KAEJgyC,kBAAkB,EAClBrE,SAAU,qDAAqD3tC,MAAM,KACrE4tC,cAAe,+BAA+B5tC,MAAM,KACpD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN90C,EAAG,eACH+0C,GAAI,YACJn9C,EAAG,aACHo9C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,UACHo5B,GAAI,WACJiC,EAAG,UACHC,GAAI,WACJjC,EAAG,YACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB/yD,CAAQ,EAAQ,+FCElD,SAAWmiD,GAAU,aAIbA,EAAOiO,aAAa,SAAU,CACtCC,OAAQ,CACJ6D,WAAY,qFAAqFtxC,MAC7F,KAEJ8E,OAAQ,sHAAsH9E,MAC1H,KAEJuxC,SAAU,mBAEd7D,YAAa,+DAA+D1tC,MACxE,KAEJgyC,kBAAkB,EAClBrE,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJyE,GAAI,aACJxE,IAAK,4BACLyE,IAAK,mBACLxE,KAAM,iCACNyE,KAAM,wBAEVxE,SAAU,CACNC,QAAS,aACTC,QAAS,eACTC,SAAU,cACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACN90C,EAAG,gBACH+0C,GAAI,cACJn9C,EAAG,aACHo9C,GAAI,aACJC,EAAG,UACHC,GAAI,UACJn5B,EAAG,UACHo5B,GAAI,WACJC,EAAG,SACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQyB,GACvB,IAAI2B,EACW,IAAXpD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXyB,GAA6B,MAAXA,IAClB2B,EAAS,KAENpD,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGF1R,EAAOiO,aAAa,QAAS,CAEpCC,OAAQ,sEAAsEztC,MAC1E,KAEJ0tC,YAAa,sEAAsE1tC,MAC/E,KAEJ2tC,SAAU,yDAAyD3tC,MAC/D,KAEJ4tC,cAAe,iCAAiC5tC,MAAM,KACtD6tC,YAAa,iCAAiC7tC,MAAM,KACpDouC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,kBACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN90C,EAAG,YACH+0C,GAAI,WACJn9C,EAAG,UACHo9C,GAAI,UACJC,EAAG,WACHC,GAAI,UACJn5B,EAAG,UACHo5B,GAAI,SACJC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAKzB40C,cAAe,uBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIuW,EAAmB,mGAAmG91C,MAClH,KAEJ+1C,EAAmB,qGAAqG/1C,MACpH,KAEJsyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAER,SAASe,EAAO51C,GACZ,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,IAAO,EAE3D,SAASu1C,EAAUhD,EAAQQ,EAAeztD,GACtC,IAAIS,EAASwsD,EAAS,IACtB,OAAQjtD,GACJ,IAAK,KACD,OAAOS,GAAU6vD,EAAOrD,GAAU,UAAY,UAClD,IAAK,IACD,OAAOQ,EAAgB,SAAW,SACtC,IAAK,KACD,OAAOhtD,GAAU6vD,EAAOrD,GAAU,SAAW,SACjD,IAAK,IACD,OAAOQ,EAAgB,UAAY,UACvC,IAAK,KACD,OAAOhtD,GAAU6vD,EAAOrD,GAAU,UAAY,UAClD,IAAK,KACD,OAAOxsD,GAAU6vD,EAAOrD,GAAU,WAAa,WACnD,IAAK,KACD,OAAOxsD,GAAU6vD,EAAOrD,GAAU,WAAa,YACnD,IAAK,KACD,OAAOxsD,GAAU6vD,EAAOrD,GAAU,OAAS,QAI9CzQ,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,SAAUgG,EAAgB3uC,GAC9B,OAAK2uC,EAEM,SAASpzC,KAAKyE,GACdixC,EAAiBtC,EAAeE,SAEhCmC,EAAiBrC,EAAeE,SAJhCmC,GAOfpI,YAAa,kDAAkD1tC,MAAM,KACrEsyC,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,6DAA6D3tC,MACnE,KAEJ4tC,cAAe,2BAA2B5tC,MAAM,KAChD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQ5xD,KAAKs0D,OACT,KAAK,EACD,MAAO,qBAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,iBAEX,KAAK,EACD,MAAO,kBAEX,QACI,MAAO,oBAGnBzC,QAAS,iBACTC,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,QACI,MAAO,2BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN90C,EAAG,eACH+0C,GAAI2D,EACJ9gD,EAAG8gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJ38B,EAAG,UACHo5B,GAAI,SACJiC,EAAG,UACHC,GAAIqB,EACJtD,EAAG,UACHC,GAAIqD,EACJpD,EAAG,MACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,2FAA2FztC,MAC/F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,iFAAiF3tC,MACvF,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,mCACLC,KAAM,0CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAf9xD,KAAKs0D,OAA8B,IAAft0D,KAAKs0D,MAC1B,wBACA,yBAEVvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN90C,EAAG,kBACH+0C,GAAI,cACJn9C,EAAG,YACHo9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTkE,YAAa,kBAxDqB72D,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FztC,MAC/F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,iFAAiF3tC,MACvF,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAf9xD,KAAKs0D,OAA8B,IAAft0D,KAAKs0D,MAC1B,wBACA,yBAEVvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN90C,EAAG,WACH+0C,GAAI,cACJn9C,EAAG,YACHo9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyB/yD,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIzB,SAAS4R,EAAuBnB,EAAQQ,EAAeztD,GACnD,IASIizD,EAAY,IAIhB,OAHIhG,EAAS,KAAO,IAAOA,GAAU,KAAOA,EAAS,KAAQ,KACzDgG,EAAY,QAEThG,EAASgG,EAbH,CACL3G,GAAI,UACJC,GAAI,SACJE,GAAI,MACJC,GAAI,OACJkC,GAAI,YACJhC,GAAI,OACJE,GAAI,OAMuB9sD,GAG9Bw8C,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGztC,MACxG,KAEJ0tC,YAAa,+DAA+D1tC,MACxE,KAEJgyC,kBAAkB,EAClBrE,SAAU,kDAAkD3tC,MAAM,KAClE4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,aACN90C,EAAG,iBACH+0C,GAAI8B,EACJj/C,EAAG,WACHo9C,GAAI6B,EACJ5B,EAAG,QACHC,GAAI2B,EACJ96B,EAAG,OACHo5B,GAAI0B,EACJO,EAAG,cACHC,GAAIR,EACJzB,EAAG,SACHC,GAAIwB,EACJvB,EAAG,QACHC,GAAIsB,GAERlB,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAYzB,SAAS4R,EAAuBnB,EAAQQ,EAAeztD,GAUnD,MAAY,MAARA,EACOytD,EAAgB,SAAW,SAE3BR,EAAS,KArBFoB,GAqB6BpB,EApB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,sBAAwB,sBAC5ChB,GAAI,iBACJC,GAAI,gBACJkC,GAAI,uBACJhC,GAAI,uBACJE,GAAI,gBAKgC9sD,GApBvBid,MAAM,KAChBoxC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAuBR,IAAIiB,EAAc,CACd,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMK/S,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,CACJ3oC,OAAQ,oFAAoF9E,MACxF,KAEJsxC,WAAY,kFAAkFtxC,MAC1F,MAGR0tC,YAAa,CAET5oC,OAAQ,gEAAgE9E,MACpE,KAEJsxC,WAAY,gEAAgEtxC,MACxE,MAGR2tC,SAAU,CACN2D,WAAY,gEAAgEtxC,MACxE,KAEJ8E,OAAQ,gEAAgE9E,MACpE,KAEJuxC,SAAU,iDAEd3D,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,uBAAuB7tC,MAAM,KAC1CsyC,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAGlBC,YAAa,2MAGbR,iBAAkB,2MAGlBa,kBAAmB,wHAGnBC,uBAAwB,6FACxBzE,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,8BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTE,QAAS,gBACTD,SAAU,SAAUkG,GAChB,GAAIA,EAAI/E,SAAW/yD,KAAK+yD,OAcpB,OAAmB,IAAf/yD,KAAKs0D,MACE,oBAEA,mBAhBX,OAAQt0D,KAAKs0D,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,+BAUvBxC,SAAU,SAAUgG,GAChB,GAAIA,EAAI/E,SAAW/yD,KAAK+yD,OAcpB,OAAmB,IAAf/yD,KAAKs0D,MACE,oBAEA,mBAhBX,OAAQt0D,KAAKs0D,OACT,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BAUvBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN90C,EAAG,mBACH+0C,GAAI8B,EACJj/C,EAAGi/C,EACH7B,GAAI6B,EACJ5B,EAAG,MACHC,GAAI2B,EACJ96B,EAAG,OACHo5B,GAAI0B,EACJO,EAAG,SACHC,GAAIR,EACJzB,EAAG,QACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAERrD,cAAe,wBACfC,KAAM,SAAUj+C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjCk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,OACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,KACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1MyB/yD,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAIkO,EAAS,CACL,QACA,UACA,OACA,QACA,MACA,MACA,SACA,OACA,UACA,SACA,QACA,SAEJwI,EAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,MAAO,QAElD1W,EAAOiO,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUsI,EACVrI,cAAeqI,EACfpI,YAAaoI,EACb7H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAUj+C,GACZ,MAAO,QAAUA,GAErBk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,MAEJ,OAEXjC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,yBACVC,QAAS,aACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN90C,EAAG,YACH+0C,GAAI,WACJn9C,EAAG,SACHo9C,GAAI,SACJC,EAAG,UACHC,GAAI,UACJn5B,EAAG,WACHo5B,GAAI,WACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC6+C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCg+C,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,mJAAmJztC,MACvJ,KAEJ0tC,YAAa,6DAA6D1tC,MACtE,KAEJ2tC,SAAU,6EAA6E3tC,MACnF,KAEJ4tC,cAAe,mCAAmC5tC,MAAM,KACxD6tC,YAAa,gBAAgB7tC,MAAM,KACnCouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN90C,EAAG,mBACH+0C,GAAI,eACJn9C,EAAG,eACHo9C,GAAI,cACJC,EAAG,cACHC,GAAI,aACJn5B,EAAG,cACHo5B,GAAI,cACJC,EAAG,aACHC,GAAI,WACJC,EAAG,aACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAKhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,kGAAkGztC,MACtG,KAEJ0tC,YAAa,wDAAwD1tC,MACjE,KAEJ2tC,SAAU,gEAAgE3tC,MACtE,KAEJ4tC,cAAe,gCAAgC5tC,MAAM,KACrD6tC,YAAa,qBAAqB7tC,MAAM,KACxC2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,aACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN90C,EAAG,eACH+0C,GAAI,WACJn9C,EAAG,YACHo9C,GAAI,cACJC,EAAG,MACHC,GAAI,SACJn5B,EAAG,OACHo5B,GAAI,SACJC,EAAG,OACHC,GAAI,SACJC,EAAG,MACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,SAEpBlC,cAAe,4BACfC,KAAM,SAAUj+C,GACZ,MAAiB,SAAVA,GAA8B,YAAVA,GAE/Bk+C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,OAAS,UAEnBA,EAAU,QAAU,aAjED/wD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,IAAIkO,EAAS,oFAAoFztC,MACzF,KAEJ0tC,EAAc,kDAAkD1tC,MAAM,KAC1E,SAASqzC,EAAO51C,GACZ,OAAOA,EAAI,GAAKA,EAAI,EAExB,SAASu1C,EAAUhD,EAAQQ,EAAeztD,EAAK0tD,GAC3C,IAAIjtD,EAASwsD,EAAS,IACtB,OAAQjtD,GACJ,IAAK,IACD,OAAOytD,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,UAAY,UAEvCxsD,EAAS,YAExB,IAAK,IACD,OAAOgtD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,SAAW,SAEtCxsD,EAAS,WAExB,IAAK,IACD,OAAOgtD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,SAAW,SAEtCxsD,EAAS,WAExB,IAAK,IACD,OAAOgtD,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,MAAQ,OAEnCxsD,EAAS,QAExB,IAAK,IACD,OAAOgtD,GAAiBC,EAAW,SAAW,WAClD,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,UAAY,YAEvCxsD,EAAS,WAExB,IAAK,IACD,OAAOgtD,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACVjtD,GAAU6vD,EAAOrD,GAAU,OAAS,SAEpCxsD,EAAS,SAKvB+7C,EAAOiO,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACbC,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQ5xD,KAAKs0D,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN90C,EAAG04C,EACH3D,GAAI2D,EACJ9gD,EAAG8gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJ38B,EAAG28B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7IyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIzB,SAAS+T,EAAoBtD,EAAQQ,EAAeztD,EAAK0tD,GACrD,IAAIjtD,EAASwsD,EAAS,IACtB,OAAQjtD,GACJ,IAAK,IACD,OAAOytD,GAAiBC,EAClB,eACA,kBACV,IAAK,KAUD,OARIjtD,GADW,IAAXwsD,EACUQ,EAAgB,UAAY,UACpB,IAAXR,EACGQ,GAAiBC,EAAW,UAAY,WAC3CT,EAAS,EACNQ,GAAiBC,EAAW,UAAY,WAExC,UAGlB,IAAK,IACD,OAAOD,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARIhtD,GADW,IAAXwsD,EACUQ,EAAgB,SAAW,SACnB,IAAXR,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,WAEvCD,GAAiBC,EAAW,QAAU,YAGxD,IAAK,IACD,OAAOD,EAAgB,UAAY,UACvC,IAAK,KAUD,OARIhtD,GADW,IAAXwsD,EACUQ,EAAgB,MAAQ,MAChB,IAAXR,EACGQ,GAAiBC,EAAW,MAAQ,QACvCT,EAAS,EACNQ,GAAiBC,EAAW,MAAQ,QAEpCD,GAAiBC,EAAW,KAAO,SAGrD,IAAK,IACD,OAAOD,GAAiBC,EAAW,SAAW,YAClD,IAAK,KAQD,OANIjtD,GADW,IAAXwsD,EACUQ,GAAiBC,EAAW,MAAQ,OAC5B,IAAXT,EACGQ,GAAiBC,EAAW,MAAQ,UAEpCD,GAAiBC,EAAW,MAAQ,SAGtD,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,eACpD,IAAK,KAUD,OARIjtD,GADW,IAAXwsD,EACUQ,GAAiBC,EAAW,QAAU,UAC9B,IAAXT,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,SAEvCD,GAAiBC,EAAW,UAAY,UAG1D,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,aACpD,IAAK,KAUD,OARIjtD,GADW,IAAXwsD,EACUQ,GAAiBC,EAAW,OAAS,QAC7B,IAAXT,EACGQ,GAAiBC,EAAW,OAAS,SACxCT,EAAS,EACNQ,GAAiBC,EAAW,OAAS,OAErCD,GAAiBC,EAAW,MAAQ,SAMrDlR,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,8DAA8D1tC,MACvE,KAEJgyC,kBAAkB,EAClBrE,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQ5xD,KAAKs0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,qBAGnBzC,QAAS,iBACTC,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN90C,EAAGg5C,EACHjE,GAAIiE,EACJphD,EAAGohD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJj9B,EAAGi9B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxKyB/yD,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,gFAAgFztC,MACpF,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,4DAA4D3tC,MAClE,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,mBAAmB7tC,MAAM,KACtC2wC,oBAAoB,EACpB7C,cAAe,QACfC,KAAM,SAAUj+C,GACZ,MAA2B,MAApBA,EAAMnN,OAAO,IAExBqrD,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAOF,EAAQ,GAAK,KAAO,MAE/BG,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,cACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,aACN90C,EAAG,eACH+0C,GAAI,aACJn9C,EAAG,aACHo9C,GAAI,YACJC,EAAG,UACHC,GAAI,SACJn5B,EAAG,WACHo5B,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB/yD,CAAQ,EAAQ,gGCElD,SAAWmiD,GAAU,aAIzB,IAAIkW,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,UAAW,UAAW,WAC3Bn9C,EAAG,CAAC,cAAe,gBACnBo9C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAeztD,GACxC,IAAI6yD,EAAUH,EAAWC,MAAM3yD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACGkkD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAM7CrW,EAAOiO,aAAa,UAAW,CACxCC,OAAQ,mFAAmFztC,MACvF,KAEJ0tC,YAAa,2DAA2D1tC,MACpE,KAEJgyC,kBAAkB,EAClBrE,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQ5xD,KAAKs0D,OACT,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,2BACA,+BACA,4BACA,0BACA,8BACA,2BACA,4BAEgB9xD,KAAKs0D,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,mBACH+0C,GAAIoG,EAAWzC,UACf9gD,EAAGujD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACf38B,EAAG,MACHo5B,GAAIgG,EAAWzC,UACftD,EAAG,QACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjHyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIkW,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,UAAW,UAAW,WAC3Bn9C,EAAG,CAAC,cAAe,gBACnBo9C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAeztD,GACxC,IAAI6yD,EAAUH,EAAWC,MAAM3yD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACGkkD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAMjDrW,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFztC,MACvF,KAEJ0tC,YAAa,2DAA2D1tC,MACpE,KAEJgyC,kBAAkB,EAClBrE,SAAU,wDAAwD3tC,MAC9D,KAEJ4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQ5xD,KAAKs0D,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEgB9xD,KAAKs0D,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN90C,EAAG,mBACH+0C,GAAIoG,EAAWzC,UACf9gD,EAAGujD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACf38B,EAAG,MACHo5B,GAAIgG,EAAWzC,UACftD,EAAG,QACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB/yD,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,mHAAmHztC,MACvH,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,sEAAsE3tC,MAC5E,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACN90C,EAAG,qBACH+0C,GAAI,cACJn9C,EAAG,SACHo9C,GAAI,aACJC,EAAG,SACHC,GAAI,aACJn5B,EAAG,UACHo5B,GAAI,cACJC,EAAG,UACHC,GAAI,cACJC,EAAG,UACHC,GAAI,eAER/B,cAAe,mCACfE,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,WAGf6D,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,YAAb5C,EACO4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAb5C,GAA0C,YAAbA,EACvB,IAAT4C,EACO,EAEJA,EAAO,QAJX,GAOXd,uBAAwB,UACxBC,QAAS,KACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,oDAAoD3tC,MAAM,KACpE4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNwE,IAAK,mBACLC,KAAM,wBAEVxE,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,YACTD,SAAU,eACVE,SAAU,iBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,eACN90C,EAAG,iBACH+0C,GAAI,cACJn9C,EAAG,WACHo9C,GAAI,aACJC,EAAG,WACHC,GAAI,YACJn5B,EAAG,SACHo5B,GAAI,WACJC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,GAEM,IAANA,EADA,KAIA,OAIlBm0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFztC,MAC1F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,8DAA8D3tC,MACpE,KAEJ4tC,cAAe,kCAAkC5tC,MAAM,KACvD6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,UACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN90C,EAAG,aACH+0C,GAAI,aACJn9C,EAAG,cACHo9C,GAAI,YACJC,EAAG,aACHC,GAAI,WACJn5B,EAAG,YACHo5B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,cACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ1R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FztC,MAC9F,KAEJ0tC,YAAa,0FAA0F1tC,MACnG,KAEJ2tC,SAAU,8FAA8F3tC,MACpG,KAEJ4tC,cAAe,mDAAmD5tC,MAC9D,KAEJ6tC,YAAa,sBAAsB7tC,MAAM,KACzCouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN90C,EAAG,oBACH+0C,GAAI,eACJn9C,EAAG,cACHo9C,GAAI,gBACJC,EAAG,gBACHC,GAAI,eACJn5B,EAAG,WACHo5B,GAAI,aACJC,EAAG,YACHC,GAAI,cACJC,EAAG,aACHC,GAAI,eAERC,uBAAwB,aACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBgB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO+3C,EAAU/3C,OAGzB43C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO63C,EAAU73C,OAIzB40C,cAAe,wCACfE,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,EACP,SACAA,EAAO,GACP,QACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAGfkB,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,UAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb5C,GAAqC,SAAbA,GAEX,YAAbA,GACA4C,GAAQ,GAFRA,EAIAA,EAAO,IAGtBX,KAAM,CACFC,IAAK,EACLC,IAAK,KA/HyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,mEAAmE1tC,MAC5E,KAEJgyC,kBAAkB,EAClBrE,SAAU,8DAA8D3tC,MACpE,KAEJ4tC,cAAe,kCAAkC5tC,MAAM,KACvD6tC,YAAa,qBAAqB7tC,MAAM,KACxCouC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACN90C,EAAG,iBACH+0C,GAAI,aACJn9C,EAAG,YACHo9C,GAAI,cACJC,EAAG,SACHC,GAAI,WACJn5B,EAAG,UACHo5B,GAAI,YACJC,EAAG,SACHC,GAAI,WACJC,EAAG,cACHC,GAAI,iBAERC,uBAAwB,WACxBC,QAAS,MACTjC,cAAe,iCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,aAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,OACAA,EAAO,GACP,YACAA,EAAO,GACP,WAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KApFyB/yD,CAAQ,EAAQ,4FCKlD,SAAWmiD,GAAU,aAIfA,EAAOiO,aAAa,MAAO,CACjCC,OAAQ,0FAA0FztC,MAC9F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,kDAAkD3tC,MAAM,KAClE4tC,cAAe,iCAAiC5tC,MAAM,KACtD6tC,YAAa,yBAAyB7tC,MAAM,KAC5CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,aACHo9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJn5B,EAAG,YACHo5B,GAAI,WACJC,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBm0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyB/yD,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAI2R,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGA3R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,CACJ3oC,OAAQ,qFAAqF9E,MACzF,KAEJsxC,WAAY,yEAAyEtxC,MACjF,MAGR0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,yDAAyD3tC,MAC/D,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTE,QAAS,mBACTD,SAAU,kCACVE,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,SACN90C,EAAG,eACHpI,EAAG,YACHo9C,GAAI,YACJC,EAAG,UACHC,GAAI,UACJn5B,EAAG,SACHo5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAER/B,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,QAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,MACAA,EAAO,GACP,QAEA,OAGfd,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlHyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGztC,MACxG,KAEJ0tC,YAAa,iEAAiE1tC,MAC1E,KAEJgyC,kBAAkB,EAClBrE,SAAU,iDAAiD3tC,MAAM,KACjE4tC,cAAe,8CAA8C5tC,MAAM,KACnE6tC,YAAa,yBAAyB7tC,MAAM,KAC5C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,oCAEVZ,cAAe,wBACfC,KAAM,SAAUj+C,GACZ,MAAiB,eAAVA,GAEXk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,aAEA,cAGfjC,SAAU,CACNC,QAAS,mBACTC,QAAS,qBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACN90C,EAAG,eACH+0C,GAAI,YACJn9C,EAAG,SACHo9C,GAAI,UACJC,EAAG,YACHC,GAAI,aACJn5B,EAAG,QACHo5B,GAAI,SACJiC,EAAG,YACHC,GAAI,aACJjC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,WA9D0BzyD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI2R,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC3R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EztC,MACnF,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,wDAAwD3tC,MAC9D,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,YACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN90C,EAAG,iBACHpI,EAAG,YACHo9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJn5B,EAAG,UACHo5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERE,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIr1C,EAAIq1C,EAAS,GAGjB,OAAOA,GAAUkB,EAASv2C,IAAMu2C,EAFvBlB,EAAS,IAAOr1C,IAEsBu2C,EADvClB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzFyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,0FAA0FztC,MAC9F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,yDAAyD3tC,MAC/D,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,wBAAwB7tC,MAAM,KAC3CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN90C,EAAG,gBACH+0C,GAAI,aACJn9C,EAAG,eACHo9C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJn5B,EAAG,aACHo5B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB/yD,CAAQ,EAAQ,4FCGlD,SAAWmiD,GAAU,aAIzB,IAAI2W,EAAe,iDAAiDl2C,MAAM,KA4B1E,SAASgzC,EAAUhD,EAAQQ,EAAe/tD,EAAQguD,GAC9C,IAAI0F,EAiBR,SAAsBnG,GAClB,IAAIoG,EAAUp3C,KAAKq3C,MAAOrG,EAAS,IAAQ,KACvCsG,EAAMt3C,KAAKq3C,MAAOrG,EAAS,IAAO,IAClCuG,EAAMvG,EAAS,GACfwG,EAAO,GAUX,OATIJ,EAAU,IACVI,GAAQN,EAAaE,GAAW,SAEhCE,EAAM,IACNE,IAAkB,KAATA,EAAc,IAAM,IAAMN,EAAaI,GAAO,OAEvDC,EAAM,IACNC,IAAkB,KAATA,EAAc,IAAM,IAAMN,EAAaK,IAEpC,KAATC,EAAc,OAASA,EA/BbC,CAAazG,GAC9B,OAAQvtD,GACJ,IAAK,KACD,OAAO0zD,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,QAqBtB5W,EAAOiO,aAAa,MAAO,CACjCC,OAAQ,kMAAkMztC,MACtM,KAEJ0tC,YAAa,0HAA0H1tC,MACnI,KAEJgyC,kBAAkB,EAClBrE,SAAU,2DAA2D3tC,MACjE,KAEJ4tC,cAAe,2DAA2D5tC,MACtE,KAEJ6tC,YAAa,2DAA2D7tC,MACpE,KAEJouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,MACVC,QAAS,cACTC,SAAU,MACVC,SAAU,KAEdC,aAAc,CACVC,OA/FR,SAAyBiE,GACrB,IAAIsD,EAAOtD,EASX,OAP+B,IAA3BA,EAAOhoD,QAAQ,OACTsrD,EAAK13D,MAAM,GAAI,GAAK,OACO,IAA3Bo0D,EAAOhoD,QAAQ,OACfsrD,EAAK13D,MAAM,GAAI,GAAK,OACO,IAA3Bo0D,EAAOhoD,QAAQ,OACfsrD,EAAK13D,MAAM,GAAI,GAAK,MACpB03D,EAAO,QAuFbtH,KAnFR,SAAuBgE,GACnB,IAAIsD,EAAOtD,EASX,OAP+B,IAA3BA,EAAOhoD,QAAQ,OACTsrD,EAAK13D,MAAM,GAAI,GAAK,OACO,IAA3Bo0D,EAAOhoD,QAAQ,OACfsrD,EAAK13D,MAAM,GAAI,GAAK,OACO,IAA3Bo0D,EAAOhoD,QAAQ,OACfsrD,EAAK13D,MAAM,GAAI,GAAK,MACpB03D,EAAO,QA2Ebp8C,EAAG,UACH+0C,GAAI2D,EACJ9gD,EAAG,UACHo9C,GAAI0D,EACJzD,EAAG,UACHC,GAAIwD,EACJ38B,EAAG,UACHo5B,GAAIuD,EACJtD,EAAG,UACHC,GAAIqD,EACJpD,EAAG,UACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3HyB/yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,IAAI2R,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC3R,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,6EAA6EztC,MACjF,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,wDAAwD3tC,MAC9D,KAEJ4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CguC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCL,cAAe,cACfC,KAAM,SAAUj+C,GACZ,MAAiB,OAAVA,GAA4B,OAAVA,GAE7Bs+C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,2BACVC,QAAS,WACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACN90C,EAAG,gBACH+0C,GAAI,YACJn9C,EAAG,aACHo9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJn5B,EAAG,UACHo5B,GAAI,SACJiC,EAAG,YACHC,GAAI,WACJjC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERE,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIr1C,EAAIq1C,EAAS,GAGjB,OAAOA,GAAUkB,EAASv2C,IAAMu2C,EAFvBlB,EAAS,IAAOr1C,IAEsBu2C,EADvClB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB/yD,CAAQ,EAAQ,4FCGlD,SAAWmiD,GAAU,aAiEzB,SAAS+T,EAAoBtD,EAAQQ,EAAeztD,EAAK0tD,GACrD,IAAI3rC,EAAS,CACTxK,EAAG,CAAC,kBAAmB,mBACvB+0C,GAAI,CAACW,EAAS,WAAiBA,EAAS,YACxC99C,EAAG,CAAC,UAAW,cACfo9C,GAAI,CAACU,EAAS,SAAeA,EAAS,UACtCT,EAAG,CAAC,UAAW,eACfC,GAAI,CAACQ,EAAS,SAAeA,EAAS,UACtC35B,EAAG,CAAC,UAAW,eACfo5B,GAAI,CAACO,EAAS,SAAeA,EAAS,UACtCN,EAAG,CAAC,SAAU,aACdC,GAAI,CAACK,EAAS,SAAeA,EAAS,UACtCJ,EAAG,CAAC,QAAS,YACbC,GAAI,CAACG,EAAS,OAAaA,EAAS,SAExC,OAAOS,GAEDD,EADA1rC,EAAO/hB,GAAK,GAGZ+hB,EAAO/hB,GAAK,GA9EZw8C,EAAOiO,aAAa,MAAO,CACjCC,OAAQ,sFAAsFztC,MAC1F,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,sDAAsD3tC,MAAM,KACtE4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVZ,cAAe,aACfC,KAAM,SAAUj+C,GACZ,MAAO,QAAUA,EAAMsU,eAE3B4pC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,MAAQ,MAElBA,EAAU,MAAQ,OAGjCQ,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,OACN90C,EAAGg5C,EACHjE,GAAIiE,EACJphD,EAAGohD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJj9B,EAAGi9B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyB/yD,CAAQ,EAAQ,iGCElD,SAAWmiD,GAAU,aAIXA,EAAOiO,aAAa,WAAY,CAC1CC,OAAQ,wFAAwFztC,MAC5F,KAEJ0tC,YAAa,wFAAwF1tC,MACjG,KAEJ2tC,SAAU,kDAAkD3tC,MAAM,KAClE4tC,cAAe,kDAAkD5tC,MAAM,KACvE6tC,YAAa,kDAAkD7tC,MAAM,KACrEouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACN90C,EAAG,OACH+0C,GAAI,UACJn9C,EAAG,QACHo9C,GAAI,WACJC,EAAG,OACHC,GAAI,cACJn5B,EAAG,MACHo5B,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyB/yD,CAAQ,EAAQ,4FCGlD,SAAWmiD,GAAU,aAIfA,EAAOiO,aAAa,MAAO,CACjCC,OAAQ,kFAAkFztC,MACtF,KAEJ0tC,YAAa,kFAAkF1tC,MAC3F,KAEJ2tC,SAAU,kDAAkD3tC,MAAM,KAClE4tC,cAAe,kDAAkD5tC,MAAM,KACvE6tC,YAAa,kDAAkD7tC,MAAM,KACrEouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,SACN90C,EAAG,OACH+0C,GAAI,UACJn9C,EAAG,QACHo9C,GAAI,WACJC,EAAG,OACHC,GAAI,cACJn5B,EAAG,MACHo5B,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyB/yD,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,sFAAsFztC,MAC1F,KAEJ0tC,YAAa,sFAAsF1tC,MAC/F,KAEJ2tC,SAAU,yDAAyD3tC,MAC/D,KAEJ4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,wCAEVZ,cAAe,qDACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGM,eAAb5C,GACa,UAAbA,GACa,iBAAbA,EAEO4C,EACa,iBAAb5C,GAA4C,QAAbA,EAC/B4C,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,aACAA,EAAK,IACL,QACAA,EAAK,KACL,eACAA,EAAK,KACL,MACAA,EAAK,KACL,eAEA,OAGfhI,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,4BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN90C,EAAG,eACH+0C,GAAI,YACJn9C,EAAG,YACHo9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJn5B,EAAG,UACHo5B,GAAI,SACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAGRC,uBAAwB,6BACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,QACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBgB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC6+C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCg+C,KAAM,CAEFC,IAAK,EACLC,IAAK,KA5GyB/yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAYzB,SAAS4R,EAAuBnB,EAAQQ,EAAeztD,GASnD,MAAY,MAARA,EACOytD,EAAgB,UAAY,UACpB,MAARztD,EACAytD,EAAgB,SAAW,SAE3BR,EAAS,KAtBFoB,GAsB6BpB,EArB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,yBAA2B,yBAC/ChB,GAAIgB,EAAgB,sBAAwB,sBAC5Cf,GAAI,gBACJE,GAAI,wBACJE,GAAI,kBAOgC9sD,GArBvBid,MAAM,KAChBoxC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAsDR,SAASuF,EAAqB1oD,GAC1B,OAAO,WACH,OAAOA,EAAM,KAAwB,KAAjBhR,KAAK+wD,QAAiB,IAAM,IAAM,QAIrD1O,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,CACJ3oC,OAAQ,yFAAyF9E,MAC7F,KAEJsxC,WAAY,iGAAiGtxC,MACzG,MAGR0tC,YAAa,yDAAyD1tC,MAClE,KAEJ2tC,SAhDJ,SAA6Bz7C,EAAG4S,GAC5B,IAAI6oC,EAAW,CACPkJ,WAAY,0DAA0D72C,MAClE,KAEJ82C,WAAY,0DAA0D92C,MAClE,KAEJ+2C,SAAU,4DAA4D/2C,MAClE,MAKZ,OAAU,IAAN9N,EACOy7C,EAAqB,WACvB3uD,MAAM,EAAG,GACTM,OAAOquD,EAAqB,WAAE3uD,MAAM,EAAG,IAE3CkT,EASEy7C,EALI,qBAAqBttC,KAAKyE,GAC/B,aACA,sCAAsCzE,KAAKyE,GAC3C,WACA,cACoB5S,EAAEs/C,OARjB7D,EAAqB,YA6BhCC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAASgI,EAAqB,cAC9B/H,QAAS+H,EAAqB,YAC9B7H,QAAS6H,EAAqB,WAC9B9H,SAAU8H,EAAqB,cAC/B5H,SAAU,WACN,OAAQ9xD,KAAKs0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOoF,EAAqB,oBAAoB33D,KAAK/B,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAO05D,EAAqB,qBAAqB33D,KAAK/B,QAGlE+xD,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN90C,EAAG,kBACH+0C,GAAI8B,EACJj/C,EAAGi/C,EACH7B,GAAI6B,EACJ5B,EAAG,SACHC,GAAI2B,EACJ96B,EAAG,OACHo5B,GAAI0B,EACJzB,EAAG,SACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAGRrD,cAAe,wBACfC,KAAM,SAAUj+C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjCk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAOzB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhKyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIkO,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEJwI,EAAO,CAAC,QAAS,MAAO,OAAQ,MAAO,SAAU,OAAQ,QAEpD1W,EAAOiO,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUsI,EACVrI,cAAeqI,EACfpI,YAAaoI,EACb7H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAUj+C,GACZ,MAAO,QAAUA,GAErBk+C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,MAEJ,OAEXjC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,sBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN90C,EAAG,YACH+0C,GAAI,WACJn9C,EAAG,UACHo9C,GAAI,SACJC,EAAG,YACHC,GAAI,WACJn5B,EAAG,SACHo5B,GAAI,QACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAERmB,SAAU,SAAUvuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC6+C,WAAY,SAAUruD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCg+C,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyB/yD,CAAQ,EAAQ,gGCElD,SAAWmiD,GAAU,aAIZA,EAAOiO,aAAa,UAAW,CACxCC,OAAQ,6EAA6EztC,MACjF,KAEJ0tC,YAAa,oDAAoD1tC,MAAM,KACvE2tC,SAAU,+DAA+D3tC,MACrE,KAEJ4tC,cAAe,kCAAkC5tC,MAAM,KACvD6tC,YAAa,yBAAyB7tC,MAAM,KAC5CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACN90C,EAAG,SACH+0C,GAAI,YACJn9C,EAAG,aACHo9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJn5B,EAAG,UACHo5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,yEAAyEztC,MAC7E,KAEJ0tC,YAAa,kDAAkD1tC,MAAM,KACrE2tC,SAAU,uDAAuD3tC,MAAM,KACvE4tC,cAAe,8BAA8B5tC,MAAM,KACnD6tC,YAAa,uBAAuB7tC,MAAM,KAC1CouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,sBACTC,SAAU,mCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,oBACN90C,EAAG,SACH+0C,GAAI,YACJn9C,EAAG,aACHo9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJn5B,EAAG,UACHo5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyB/yD,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGztC,MACzG,KAEJ0tC,YAAa,sFAAsF1tC,MAC/F,KAEJgyC,kBAAkB,EAClBrE,SAAU,yDAAyD3tC,MAC/D,KAEJ4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,uBAAuB7tC,MAAM,KAC1C2wC,oBAAoB,EACpB7C,cAAe,SACfC,KAAM,SAAUj+C,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExBk+C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCACN/+B,EAAG,YACHsjC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVxE,SAAU,CACNC,QAAS,mBACTC,QAAS,oBACTC,SAAU,yBACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN90C,EAAG,WACH+0C,GAAI,UACJn9C,EAAG,WACHo9C,GAAI,UACJC,EAAG,UACHC,GAAI,SACJn5B,EAAG,WACHo5B,GAAI,UACJiC,EAAG,WACHC,GAAI,UACJjC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KA5EyB/yD,CAAQ,EAAQ,iGCElD,SAAWmiD,GAAU,aAIXA,EAAOiO,aAAa,WAAY,CAC1CC,OAAQ,6GAA6GztC,MACjH,KAEJ0tC,YAAa,8DAA8D1tC,MACvE,KAEJgyC,kBAAkB,EAClBrE,SAAU,yEAAyE3tC,MAC/E,KAEJ4tC,cAAe,qCAAqC5tC,MAAM,KAC1D6tC,YAAa,4BAA4B7tC,MAAM,KAC/C2wC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,eACVC,QAAS,uBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN90C,EAAG,mBACH+0C,GAAI,eACJn9C,EAAG,aACHo9C,GAAI,eACJC,EAAG,YACHC,GAAI,YACJn5B,EAAG,SACHo5B,GAAI,WACJC,EAAG,YACHC,GAAI,cACJC,EAAG,UACHC,GAAI,aAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIl0C,EAAIk0C,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANl0C,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBm0C,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyB/yD,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOiO,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FztC,MAC9F,KAEJ0tC,YAAa,gEAAgE1tC,MAAM,KACnF2tC,SAAU,uDAAuD3tC,MAAM,KACvE4tC,cAAe,sCAAsC5tC,MAAM,KAC3D6tC,YAAa,2BAA2B7tC,MAAM,KAC9CouC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,8BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN90C,EAAG,oBACH+0C,GAAI,WACJn9C,EAAG,cACHo9C,GAAI,aACJC,EAAG,cACHC,GAAI,aACJn5B,EAAG,WACHo5B,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,gBACxBC,QAAS,UACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB/yD,CAAQ,EAAQ,8FCKlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wCAAwCztC,MAC5C,KAEJ0tC,YAAa,yCAAyC1tC,MAClD,KAEJ2tC,SAAU,8BAA8B3tC,MAAM,KAC9C4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,gBAAgB7tC,MAAM,KACnCouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN/+B,EAAG,WACHsjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,SAAUkG,GAChB,OAAIA,EAAI/E,SAAW/yD,KAAK+yD,OACb,WAEA,YAGflB,QAAS,SACTC,SAAU,SAAUgG,GAChB,OAAI93D,KAAK+yD,SAAW+E,EAAI/E,OACb,WAEA,YAGfhB,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN90C,EAAG,KACH+0C,GAAI,OACJn9C,EAAG,OACHo9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJn5B,EAAG,MACHo5B,GAAI,OACJiC,EAAG,MACHC,GAAI,OACJjC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,QAERI,KAAM,CAEFC,IAAK,EACLC,IAAK,KApHyB/yD,CAAQ,EAAQ,8FCIlD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wCAAwCztC,MAC5C,KAEJ0tC,YAAa,yCAAyC1tC,MAClD,KAEJ2tC,SAAU,8BAA8B3tC,MAAM,KAC9C4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,gBAAgB7tC,MAAM,KACnCouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN/+B,EAAG,WACHsjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACO,OAAPA,EACA,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,YACVC,QAAS,SACTC,SAAU,YACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN90C,EAAG,KACH+0C,GAAI,OACJn9C,EAAG,OACHo9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJn5B,EAAG,MACHo5B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BzyD,CAAQ,EAAQ,8FCElD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wCAAwCztC,MAC5C,KAEJ0tC,YAAa,yCAAyC1tC,MAClD,KAEJ2tC,SAAU,8BAA8B3tC,MAAM,KAC9C4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,gBAAgB7tC,MAAM,KACnCouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN/+B,EAAG,WACHsjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN90C,EAAG,KACH+0C,GAAI,OACJn9C,EAAG,OACHo9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJn5B,EAAG,MACHo5B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BzyD,CAAQ,EAAQ,8FCElD,SAAWmiD,GAAU,aAIdA,EAAOiO,aAAa,QAAS,CACpCC,OAAQ,wCAAwCztC,MAC5C,KAEJ0tC,YAAa,yCAAyC1tC,MAClD,KAEJ2tC,SAAU,8BAA8B3tC,MAAM,KAC9C4tC,cAAe,uBAAuB5tC,MAAM,KAC5C6tC,YAAa,gBAAgB7tC,MAAM,KACnCouC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN/+B,EAAG,WACHsjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN90C,EAAG,KACH+0C,GAAI,OACJn9C,EAAG,OACHo9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJn5B,EAAG,MACHo5B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BzyD,CAAQ,EAAQ,wGCP1D,IAAIyO,EAAM,CACT,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,WAAY,yCACZ,cAAe,yCACf,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,QAAS,sCACT,aAAc,2CACd,gBAAiB,2CACjB,WAAY,sCACZ,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,yCAIf,SAASmrD,EAAeC,GACvB,IAAI1uD,EAAK2uD,EAAsBD,GAC/B,OAAOE,EAAoB5uD,GAE5B,SAAS2uD,EAAsBD,GAC9B,IAAIE,EAAoBr1C,EAAEjW,EAAKorD,GAAM,CACpC,IAAIz3C,EAAI,IAAI7P,MAAM,uBAAyBsnD,EAAM,KAEjD,MADAz3C,EAAE+kC,KAAO,mBACH/kC,EAEP,OAAO3T,EAAIorD,GAEZD,EAAetmD,KAAO,WACrB,OAAOD,OAAOC,KAAK7E,IAEpBmrD,EAAentD,QAAUqtD,EACzBl6D,EAAOuvD,QAAUyK,EACjBA,EAAezuD,GAAK,8GClSnB,IAASoS,EAAAA,EAAqiI8I,OAAOF,SAAziIxmB,QAAQC,OAAO,eAAe,IAAI0E,MAAM,eAAe,CAACo5C,OAAM,IAAKryC,OAAO,CAAC,mBAAmB,SAASkS,GAAG5d,QAAQ+M,UAAU6Q,EAAEy8C,0BAA0Bz8C,EAAEy8C,yBAAyB,sCAAsCz8C,EAAE08C,2BAA2B,yCAAyCt6D,QAAQC,OAAO,mBAAmB,CAAC,mBAAmBD,QAAQC,OAAO,iBAAiB,IAAID,QAAQC,OAAO,QAAQ,CAAC,eAAe,iBAAiB,mBAAmB,eAAwEA,EAAOuvD,UAAUA,IAAUvvD,EAAOuvD,QAAQ,SAASxvD,QAAQC,OAAO,kBAAkB2X,QAAQ,MAAM,CAAC,KAAK,SAASgG,GAAG,IAAImB,EAAE,OAAaua,EAAE,CAAC,MAAM,KAAI,MAAM,KAAK,MAAM,KAAI,MAAM,KAAK,MAAM,MAAMn5B,KAAKo6D,eAAe,SAAS38C,EAAEmB,GAAG,MAAM,WAAWA,EAAEy7C,YAAYr6D,KAAKs6D,QAAQ78C,GAAGA,EAAE88C,iBAAiB,MAAM37C,EAAEy7C,YAAYr6D,KAAKs6D,QAAQ78C,GAAGA,EAAE3I,WAAWC,QAAQ,IAAI6J,EAAEy7C,YAAY,iBAAiB58C,GAAGA,EAAEA,EAAE1I,QAAQ,KAAK,OAAO6J,EAAE47C,cAAc/8C,EAAEvP,QAAQ,MAAM,GAAGuP,EAAEvP,QAAQ,OAAO,GAAGuP,EAAEvP,QAAQ,OAAO,KAAKuP,EAAEmB,EAAE67C,SAASh9C,EAAEmB,EAAE67C,UAAUh9C,GAAG,kBAAkBA,EAAEA,EAAE,OAAO,QAAQA,GAAGzd,KAAKs6D,QAAQ,SAAS78C,GAAG,OAAOA,IAAIA,KAAKi9C,SAASj9C,IAAIwU,QAAQxU,EAAE,KAAKzd,KAAKke,UAAU,SAASib,EAAE7W,GAAG,IAAIkxC,EAAE/1C,EAAExR,QAAQ4R,EAAE7d,KAAKqyD,EAAE,GAAGh1C,EAAE,GAAGK,EAAED,EAAExN,KAAKkpB,GAAGpuB,MAAK,SAAS0S,GAA6C,IAAI0b,EAAEzb,EAA7C7d,QAAQ+M,UAAU0V,EAAEq4C,SAASr4C,EAAEq4C,SAAgBxhC,EAAE,GAAGt5B,QAAQkB,QAAQuhB,EAAEq4C,QAAO,SAASl9C,GAAGzd,KAAKS,KAAKod,EAAEu8C,eAAe38C,EAAE6E,MAAK6W,GAAGzb,EAAEyb,EAAElmB,KAAKqP,EAAEs4C,SAASt4C,EAAEs4C,SAAS,KAAKv9C,GAAGK,EAAEkB,GAAE,IAAsI6T,EAAEzd,EAApIwI,EAAE,GAAM3d,QAAQmS,QAAQyL,GAAGD,EAAEC,EAAE5d,QAAQuN,WAAWqQ,KAAKD,EAAEC,KAAK5d,QAAQ+M,UAAU0V,EAAEqoC,QAAQroC,EAAEqoC,OAAO,kBAAkBroC,EAAEqoC,QAAel4B,EAAE,GAAG5yB,QAAQkB,QAAQyc,EAAE,IAAG,SAASC,EAAEmB,GAAG5e,KAAKS,KAAKod,EAAEu8C,eAAex7C,EAAE0D,MAAKmQ,GAAGzd,EAAEyd,EAAExf,KAAKqP,EAAEs4C,SAASt4C,EAAEs4C,SAAS,KAAKv9C,GAAGrI,EAAE4J,GAAE/e,QAAQkB,QAAQyc,GAAE,SAASC,EAAEo9C,GAAG,IAAI1hC,EAAEq6B,EAAEnB,EAAExyD,QAAQoiB,KAAKzE,EAAEq9C,IAAIrH,EAAE,GAAG,IAAI91C,EAAE4E,EAAEw4C,YAAYx4C,EAAEw4C,YAAYzI,EAAExyD,QAAQkB,QAAQ2c,GAAE,SAASD,GAAG,IAAImB,EAAE0D,EAAEw4C,YAAYzI,EAAE50C,GAAGA,EAAEzd,KAAKS,KAAKod,EAAEu8C,eAAex7C,EAAE0D,MAAKkxC,GAAGr6B,EAAEq6B,EAAEvgD,KAAKqP,EAAEs4C,SAASt4C,EAAEs4C,SAAS,KAAKv9C,GAAGw9C,EAAEr9C,EAAEpO,OAAO+pB,EAAEva,EAAEua,KAAI7W,EAAEy4C,qBAAqB1I,GAA9wC,UAAoxCA,GAAGh1C,EAAEm2C,EAAE7mD,QAAQ0lD,MAAK,MAAM,mBAAmB30C,EAAS,OAAGA,EAAS,OAAE,SAASD,GAAG+1C,EAAEnf,OAAO52B,MAAK+1C,EAAE/vD,SAASzD,KAAKg7D,cAAc,SAASv9C,GAAG,YAAO,IAAS0b,EAAE1b,IAAIzd,KAAKi7D,eAAe,SAASx9C,GAAG,OAAO0b,EAAE1b,OAAO5d,QAAQC,OAAO,oBAAoB+C,UAAU,QAAQ,CAAC,SAAS,KAAK,MAAM,YAAY,WAAW,SAAS+b,EAAEi8C,EAAE1hC,EAAE7W,EAAEkxC,GAAG,MAAM,CAACrsD,SAAS,KAAKrE,MAAM,CAAC6E,KAAK,SAASuzD,SAAS,YAAYP,OAAO,aAAaG,YAAY,kBAAkBL,SAAS,iBAAiBJ,WAAW,oBAAoBG,aAAa,gBAAgBI,SAAS,kBAAkBxuC,SAAS,YAAY2uC,mBAAmB,UAAUtgB,QAAQ,IAAI0gB,QAAQ,WAAWxQ,MAAM,aAAa3pD,WAAW,CAAC,SAAS,WAAW,SAAS,cAAc,SAASyc,EAAEmB,EAAE0D,GAAwe7E,EAAE29C,IAAI,GAAGv7D,QAAQ+M,UAAU6Q,EAAE2O,WAAW,QAAQ3O,EAAE2O,UAAUvsB,QAAQmS,QAAQyL,EAAE9V,OAAO8V,EAAElZ,OAAO,QAAO,WAAWkZ,EAAE49C,cAAY,GAAI59C,EAAE69C,YAAY,WAAW,OAAO79C,EAAEy9C,UAAU,gBAAgBz9C,EAAE49C,SAAS,WAAW,IAAIx9C,EAAEg9C,EAAE5uD,QAAQ,OAAO2S,EAAE28C,SAASj5C,EAAEk5C,mBAAmB,kBAAkBriC,EAAEjb,UAAUT,EAAE9V,OAAhxB,WAAa,IAAIiX,EAAE,CAAC67C,SAASh9C,EAAEg9C,SAASh9C,EAAEg9C,SAAS,IAAIJ,WAAW58C,EAAE48C,WAAW58C,EAAE48C,WAAW,IAAIG,aAAa/8C,EAAE+8C,aAAaO,mBAAmBt9C,EAAEs9C,oBAAoB,OAAOl7D,QAAQ+M,UAAU0V,EAAEm5C,aAAa78C,EAAE+7C,OAAOl9C,EAAEpc,MAAMoc,EAAEk9C,SAAS96D,QAAQ+M,UAAU0V,EAAEo5C,kBAAkB98C,EAAEk8C,YAAYr9C,EAAEpc,MAAMoc,EAAEq9C,cAAcj7D,QAAQ+M,UAAU0V,EAAEq5C,YAAY/8C,EAAE+rC,MAAMltC,EAAEpc,MAAMoc,EAAEktC,QAAQ/rC,EAAEg8C,SAASn9C,EAAEm9C,SAASn9C,EAAEm9C,SAAS,IAAIh8C,EAAEg8C,SAASzhC,EAAE6hC,cAAcp8C,EAAEg8C,UAAUzhC,EAAE8hC,eAAer8C,EAAEg8C,UAAUh8C,EAAEg8C,SAASh8C,EAAoT40C,IAAKzoD,MAAK,SAAS8vD,GAAGp9C,EAAE29C,IAAIP,EAAEj8C,EAAEg9C,YAAYt5C,EAAEk5C,mBAAmB,kBAAkB39C,EAAElR,QAAQkuD,MAAKp9C,EAAExZ,SAAS4Z,EAAEpa,WAAW8E,KAAK,SAASqW,EAAEi8C,GAA8bA,EAAEv3D,KAAK,SAAQ,WAAWsb,EAAEy8C,WAAWtwD,MAAK,YAAve,WAAa,IAAI8vD,EAAEj8C,EAAEu8C,SAAS,QAAQhiC,EAAE,IAAIq2B,KAAK,CAAC5wC,EAAEw8C,KAAK,CAAClsD,KAAK,oBAAoB2rD,EAAE,MAAM,GAAGp9C,EAAEo+B,UAAUggB,iBAAiBhgB,UAAUigB,WAAW3iC,EAAEva,EAAE08C,mBAAmB,CAAC,IAAIz9C,EAAEhe,QAAQkD,QAAQ,+CAA+CsvD,EAAExyD,QAAQkD,QAAQ8a,EAAEjV,WAAW,IAAIypD,EAAEv/C,KAAK,OAAO2K,EAAEmwC,IAAImO,gBAAgB5iC,IAAIk5B,EAAEv/C,KAAK,WAAW8L,EAAE08C,eAAejJ,EAAEv/C,KAAK,SAAS,UAAUwP,EAAExB,KAAK,QAAQuZ,OAAOxc,GAAG21C,GAAE,WAAWnB,EAAE,GAAGvH,QAAQuH,EAAExlD,WAAU,OAA8DssB,MAAMva,EAAE3a","sources":["webpack://motion-chat/./node_modules/@flowjs/ng-flow/dist/ng-flow.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/templateFactory.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/locationServices.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/services.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/common.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/coreservices.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/glob.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/hof.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/predicates.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/queue.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/safeConsole.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/strings.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/trace.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/globals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/param.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramTypes.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/stateParams.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathNode.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathUtils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/router.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateObject.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/targetState.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/coreResolvables.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/redirectTo.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/resolve.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/views.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/updateGlobals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/url.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/ignoredTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/invalidTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRouter.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRule.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRules.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/q.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/utils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/view/view.js","webpack://motion-chat/./node_modules/angular-aria/angular-aria.js","webpack://motion-chat/./node_modules/angular-rateit/dist/ng-rateit.js","webpack://motion-chat/./src/js/index.controller.js","webpack://motion-chat/./src/js/index.route.js","webpack://motion-chat/./src/js/closing/closing.controller.js","webpack://motion-chat/./src/js/index.factory.js","webpack://motion-chat/./src/js/chat/chat.controller.js","webpack://motion-chat/./src/js/offline/offline.controller.js","webpack://motion-chat/./src/js/online/online.controller.js","webpack://motion-chat/./src/js/unmanaged/unmanaged.controller.js","webpack://motion-chat/./src/js/waiting/waiting.controller.js","webpack://motion-chat/./src/js/common/remote-storage.service.js","webpack://motion-chat/./src/js/index.module.js","webpack://motion-chat/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://motion-chat/./node_modules/json-form-data/src/jsonToFormData.js","webpack://motion-chat/./node_modules/moment/locale/af.js","webpack://motion-chat/./node_modules/moment/locale/ar-dz.js","webpack://motion-chat/./node_modules/moment/locale/ar-kw.js","webpack://motion-chat/./node_modules/moment/locale/ar-ly.js","webpack://motion-chat/./node_modules/moment/locale/ar-ma.js","webpack://motion-chat/./node_modules/moment/locale/ar-sa.js","webpack://motion-chat/./node_modules/moment/locale/ar-tn.js","webpack://motion-chat/./node_modules/moment/locale/ar.js","webpack://motion-chat/./node_modules/moment/locale/az.js","webpack://motion-chat/./node_modules/moment/locale/be.js","webpack://motion-chat/./node_modules/moment/locale/bg.js","webpack://motion-chat/./node_modules/moment/locale/bm.js","webpack://motion-chat/./node_modules/moment/locale/bn-bd.js","webpack://motion-chat/./node_modules/moment/locale/bn.js","webpack://motion-chat/./node_modules/moment/locale/bo.js","webpack://motion-chat/./node_modules/moment/locale/br.js","webpack://motion-chat/./node_modules/moment/locale/bs.js","webpack://motion-chat/./node_modules/moment/locale/ca.js","webpack://motion-chat/./node_modules/moment/locale/cs.js","webpack://motion-chat/./node_modules/moment/locale/cv.js","webpack://motion-chat/./node_modules/moment/locale/cy.js","webpack://motion-chat/./node_modules/moment/locale/da.js","webpack://motion-chat/./node_modules/moment/locale/de-at.js","webpack://motion-chat/./node_modules/moment/locale/de-ch.js","webpack://motion-chat/./node_modules/moment/locale/de.js","webpack://motion-chat/./node_modules/moment/locale/dv.js","webpack://motion-chat/./node_modules/moment/locale/el.js","webpack://motion-chat/./node_modules/moment/locale/en-au.js","webpack://motion-chat/./node_modules/moment/locale/en-ca.js","webpack://motion-chat/./node_modules/moment/locale/en-gb.js","webpack://motion-chat/./node_modules/moment/locale/en-ie.js","webpack://motion-chat/./node_modules/moment/locale/en-il.js","webpack://motion-chat/./node_modules/moment/locale/en-in.js","webpack://motion-chat/./node_modules/moment/locale/en-nz.js","webpack://motion-chat/./node_modules/moment/locale/en-sg.js","webpack://motion-chat/./node_modules/moment/locale/eo.js","webpack://motion-chat/./node_modules/moment/locale/es-do.js","webpack://motion-chat/./node_modules/moment/locale/es-mx.js","webpack://motion-chat/./node_modules/moment/locale/es-us.js","webpack://motion-chat/./node_modules/moment/locale/es.js","webpack://motion-chat/./node_modules/moment/locale/et.js","webpack://motion-chat/./node_modules/moment/locale/eu.js","webpack://motion-chat/./node_modules/moment/locale/fa.js","webpack://motion-chat/./node_modules/moment/locale/fi.js","webpack://motion-chat/./node_modules/moment/locale/fil.js","webpack://motion-chat/./node_modules/moment/locale/fo.js","webpack://motion-chat/./node_modules/moment/locale/fr-ca.js","webpack://motion-chat/./node_modules/moment/locale/fr-ch.js","webpack://motion-chat/./node_modules/moment/locale/fr.js","webpack://motion-chat/./node_modules/moment/locale/fy.js","webpack://motion-chat/./node_modules/moment/locale/ga.js","webpack://motion-chat/./node_modules/moment/locale/gd.js","webpack://motion-chat/./node_modules/moment/locale/gl.js","webpack://motion-chat/./node_modules/moment/locale/gom-deva.js","webpack://motion-chat/./node_modules/moment/locale/gom-latn.js","webpack://motion-chat/./node_modules/moment/locale/gu.js","webpack://motion-chat/./node_modules/moment/locale/he.js","webpack://motion-chat/./node_modules/moment/locale/hi.js","webpack://motion-chat/./node_modules/moment/locale/hr.js","webpack://motion-chat/./node_modules/moment/locale/hu.js","webpack://motion-chat/./node_modules/moment/locale/hy-am.js","webpack://motion-chat/./node_modules/moment/locale/id.js","webpack://motion-chat/./node_modules/moment/locale/is.js","webpack://motion-chat/./node_modules/moment/locale/it-ch.js","webpack://motion-chat/./node_modules/moment/locale/it.js","webpack://motion-chat/./node_modules/moment/locale/ja.js","webpack://motion-chat/./node_modules/moment/locale/jv.js","webpack://motion-chat/./node_modules/moment/locale/ka.js","webpack://motion-chat/./node_modules/moment/locale/kk.js","webpack://motion-chat/./node_modules/moment/locale/km.js","webpack://motion-chat/./node_modules/moment/locale/kn.js","webpack://motion-chat/./node_modules/moment/locale/ko.js","webpack://motion-chat/./node_modules/moment/locale/ku.js","webpack://motion-chat/./node_modules/moment/locale/ky.js","webpack://motion-chat/./node_modules/moment/locale/lb.js","webpack://motion-chat/./node_modules/moment/locale/lo.js","webpack://motion-chat/./node_modules/moment/locale/lt.js","webpack://motion-chat/./node_modules/moment/locale/lv.js","webpack://motion-chat/./node_modules/moment/locale/me.js","webpack://motion-chat/./node_modules/moment/locale/mi.js","webpack://motion-chat/./node_modules/moment/locale/mk.js","webpack://motion-chat/./node_modules/moment/locale/ml.js","webpack://motion-chat/./node_modules/moment/locale/mn.js","webpack://motion-chat/./node_modules/moment/locale/mr.js","webpack://motion-chat/./node_modules/moment/locale/ms-my.js","webpack://motion-chat/./node_modules/moment/locale/ms.js","webpack://motion-chat/./node_modules/moment/locale/mt.js","webpack://motion-chat/./node_modules/moment/locale/my.js","webpack://motion-chat/./node_modules/moment/locale/nb.js","webpack://motion-chat/./node_modules/moment/locale/ne.js","webpack://motion-chat/./node_modules/moment/locale/nl-be.js","webpack://motion-chat/./node_modules/moment/locale/nl.js","webpack://motion-chat/./node_modules/moment/locale/nn.js","webpack://motion-chat/./node_modules/moment/locale/oc-lnc.js","webpack://motion-chat/./node_modules/moment/locale/pa-in.js","webpack://motion-chat/./node_modules/moment/locale/pl.js","webpack://motion-chat/./node_modules/moment/locale/pt-br.js","webpack://motion-chat/./node_modules/moment/locale/pt.js","webpack://motion-chat/./node_modules/moment/locale/ro.js","webpack://motion-chat/./node_modules/moment/locale/ru.js","webpack://motion-chat/./node_modules/moment/locale/sd.js","webpack://motion-chat/./node_modules/moment/locale/se.js","webpack://motion-chat/./node_modules/moment/locale/si.js","webpack://motion-chat/./node_modules/moment/locale/sk.js","webpack://motion-chat/./node_modules/moment/locale/sl.js","webpack://motion-chat/./node_modules/moment/locale/sq.js","webpack://motion-chat/./node_modules/moment/locale/sr-cyrl.js","webpack://motion-chat/./node_modules/moment/locale/sr.js","webpack://motion-chat/./node_modules/moment/locale/ss.js","webpack://motion-chat/./node_modules/moment/locale/sv.js","webpack://motion-chat/./node_modules/moment/locale/sw.js","webpack://motion-chat/./node_modules/moment/locale/ta.js","webpack://motion-chat/./node_modules/moment/locale/te.js","webpack://motion-chat/./node_modules/moment/locale/tet.js","webpack://motion-chat/./node_modules/moment/locale/tg.js","webpack://motion-chat/./node_modules/moment/locale/th.js","webpack://motion-chat/./node_modules/moment/locale/tk.js","webpack://motion-chat/./node_modules/moment/locale/tl-ph.js","webpack://motion-chat/./node_modules/moment/locale/tlh.js","webpack://motion-chat/./node_modules/moment/locale/tr.js","webpack://motion-chat/./node_modules/moment/locale/tzl.js","webpack://motion-chat/./node_modules/moment/locale/tzm-latn.js","webpack://motion-chat/./node_modules/moment/locale/tzm.js","webpack://motion-chat/./node_modules/moment/locale/ug-cn.js","webpack://motion-chat/./node_modules/moment/locale/uk.js","webpack://motion-chat/./node_modules/moment/locale/ur.js","webpack://motion-chat/./node_modules/moment/locale/uz-latn.js","webpack://motion-chat/./node_modules/moment/locale/uz.js","webpack://motion-chat/./node_modules/moment/locale/vi.js","webpack://motion-chat/./node_modules/moment/locale/x-pseudo.js","webpack://motion-chat/./node_modules/moment/locale/yo.js","webpack://motion-chat/./node_modules/moment/locale/zh-cn.js","webpack://motion-chat/./node_modules/moment/locale/zh-hk.js","webpack://motion-chat/./node_modules/moment/locale/zh-mo.js","webpack://motion-chat/./node_modules/moment/locale/zh-tw.js","webpack://motion-chat//home/fabio/Work/Xenialab/MotionV3/motion-server/motion-chat/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://motion-chat/./node_modules/ng-csv/build/ng-csv.min.js"],"names":["angular","module","provider","this","defaults","factory","options","Flow","events","on","event","callback","push","$get","fn","opts","flow","extend","forEach","controller","$scope","$attrs","$parse","flowFactory","$eval","flowInit","flowObject","create","catchAllHandler","eventName","args","Array","prototype","slice","call","arguments","shift","$broadcast","apply","concat","$applyAsync","defaultPrevented","$on","off","$flow","hasOwnProperty","flowName","assign","directive","scope","element","attrs","isDirectory","isSingleFile","inputAttrs","flowAttrs","assignBrowse","bind","preventDefault","$timeout","promise","enter","dragEvent","fileDrag","dataTransfer","originalEvent","types","val","$apply","flowDragEnter","cancel","flowDragLeave","assignDrop","flowDropEnabled","$watch","value","unAssignDrop","fileSuccess","fileProgress","fileAdded","filesAdded","filesSubmitted","fileRetry","fileRemoved","fileError","uploadStart","complete","progress","error","eventArgs","string","name","charAt","toUpperCase","require","funcArgs","key","file","flowImg","fileReader","FileReader","readAsDataURL","onload","$set","target","result","transfers","files","uiView","$ViewDirectiveFill","$compile","$controller","$transitions","$view","$q","getControllerAs","parse","getResolveAs","restrict","priority","compile","tElement","initial","html","empty","$element","data","contents","cfg","$cfg","viewDecl","getTemplate","noop","resolveCtx","path","ResolveContext","trace","$uiView","link","controllerAs","resolveAs","locals","controllerInstance","children","registerControllerCallbacks","isString","component","kebobName","kebobString","tagRegexp_1","RegExp","deregisterWatch_1","directiveEl","filter","el","tagName","exec","ctrlInstance","$animate","$uiViewScroll","$interpolate","rootData","$context","_pluginapi","_rootViewContext","count","terminal","transclude","tAttrs","$transclude","previousEl","currentEl","currentScope","viewConfig","onloadExp","autoScrollExp","renderer","cb","then","leave","inherited","inheritedData","activeUIView","$type","id","fqn","config","configUpdated","updateView","fromParentTagConfig","fromParentTag","unregister","registerUIView","newScope","$new","animEnter","defer","animLeave","$uiViewData","$uiViewAnim","$animEnter","$animLeave","$$animLeave","$emit","cloned","clone","resolve","isDefined","remove","$destroy","_viewData_1","cleanupLastView","$inject","hasComponentImpl","_uiCanExitId","isFunction","$onInit","componentProvider","viewState","tail","state","self","hookOptions","uiOnParamsChanged","viewCreationTrans_1","getResolvable","onSuccess","$transition$","exiting","indexOf","toParams","params","fromParams","getNodeSchema","node","paramSchema","toSchema","treeChanges","map","reduce","unnestR","fromSchema","changedToParams","param","idx","type","equals","length","changedKeys_1","x","newValues","uiCanExit","id_1","cacheProp_1","prevTruthyAnswer_1","trans","redirectedFrom","criteria","onBefore","ids","when","TemplateFactory","_this","_useHttp","$http","$templateCache","$injector","$templateRequest","has","get","useHttpService","fromConfig","context","asTemplate","services","str","template","asComponent","fromString","templateUrl","fromUrl","templateProvider","fromProvider","fromComponentProvider","url","cache","headers","Accept","response","deps","providerFn","isArray","Resolvable","makeComponentTemplate","bindings","prefix","kebob","camelCase","kebobed","cmpDefs","Error","getBindings","getComponentBindings","input","attrName","attr","resolveName","res","join","def","isObject","bindToController","scopeBindings","bindingsObj","Object","keys","tuple","getStateHookBuilder","hookName","stateObject","hook","pathname","subContext","$$state","getLocals","$state$","undefined","Ng1LocationServices","$locationProvider","_urlListeners","_lp","createProxyFunctions","monkeyPatchPathParameterType","router","pathType","urlMatcherFactory","encode","toString","replace","m","decode","dispose","onChange","removeFrom","html5Mode","enabled","$sniffer","history","baseHref","_baseHref","$browser","$window","location","newUrl","$location","_runtimeServices","$rootScope","evt","_loc","mod_init","mod_util","mod_rtr","mod_state","mod_main","$uiRouterProvider","UIRouter","stateProvider","stateRegistry","stateService","decorator","viewService","_viewConfigFactory","urlService","_decodeParams","ng1LocationService","locationService","locationConfig","getProviderFor","serviceName","$urp","service","runBlock","$uiRouter","invoke","checkStrictDi","strictDi","resolvables","resolvable","annotate","resolveFn","watchDigests","uiRouter","urlRouterProvider","globals","run","$urlMatcherFactory","$state","$urlRouter","ctx","getTokens","getPolicy","async","applyPairs","$IsStateFilter","isFilter","is","$stateful","$IncludedByStateFilter","includesFilter","includes","StateProvider","func","definition","register","onInvalid","getNg1ViewConfigFactory","templateFactory","view","Ng1ViewConfig","hasAnyKey","obj","acc","ng1ViewsBuilder","parent","compKeys","nonCompKeys","allViewKeys","views","viewsObject","$default","pick","$name","normalized","ViewService","$uiViewName","uiViewName","$uiViewContextAnchor","uiViewContextAnchor","$id","loaded","load","paramValues","promises","getController","all","results","controllerProvider","isInjectable","UrlRouterProvider","injectableHandler","handler","match","$match","$stateParams","urlRouter","update","interceptDeferred","listen","rule","ruleFn","BaseUrlRule","identity","rules","otherwise","urlRules","what","deferIntercept","useAnchorScroll","$anchorScroll","scrollIntoView","__spreadArrays","s","i","il","r","k","a","j","jl","root","g","global","fromJson","JSON","toJson","stringify","toObj","_equals","o1","o2","t1","a1","a2","tup","arrayTuples","b","t","getTime","source","fnNames","latebind","bindFunction","fnName","inherit","extra","inArray","array","splice","pushTo","arr","deregAll","functions","defaultsList","_i","defaultVals","reverse","mergeR","memo","item","ancestors","first","second","n","propNames","objCopy","_prop","omit","collection","accept","find","mapObj","values","allTrueR","elem","anyTrueR","flattenR","pushR","uniqR","token","unnest","assertPredicate","predicateOrMap","errMsg","maxArrayLen","min","Math","_loop_1","keyValTuple","copy","src","dest","silenceUncaughtInPromise","catch","e","silentRejection","makeStub","methods","fnname","Glob","text","glob","split","regexpString","seg","regexp","matches","test","curry","curried","compose","start","pipe","funcs","prop","propEq","_val","not","and","fn1","fn2","or","any","ctor","constructor","v","pattern","struct","toStr","tis","isUndefined","isNull","o","isNullOrUndefined","isNumber","isDate","isRegExp","head","isPromise","Queue","_items","_limit","_evictListeners","onEvict","enqueue","items","evict","dequeue","size","clear","current","peekTail","peekHead","noopConsoleStub","log","table","safeConsole","document","documentMode","window","console","bound","Function","ie9Console","fallbackConsole","maxLength","max","substr","padString","$1","toLowerCase","functionToString","fnStr","fnToString","namedFunctionMatch","_fn","isRejection","stringifyPattern","_transitionRejection","seen","format","beforeAfterSubstr","char","stripLastPathElement","splitHash","splitQuery","splitEqual","trimHashVal","splitOnDelim","delim","re","joinNeighborsR","Category","uiViewString","uiview","creationContext","normalizedCat","_tid","_rid","transLbl","Trace","_enabled","approximateDigests","_set","categories","parseInt","isNaN","category","enable","disable","traceTransitionStart","TRANSITION","traceTransitionIgnored","traceHookInvocation","step","HOOK","registeredHook","traceHookResult","hookResult","transitionOptions","traceResolvePath","RESOLVE","traceResolvableResolved","traceError","reason","traceSuccess","finalState","traceUIViewEvent","viewData","UIVIEW","traceUIViewConfigUpdated","traceUIViewFill","traceViewSync","pairs","VIEWCONFIG","uivheader","mapping","_a","_b","uiv","sort","localeCompare","traceViewServiceEvent","viewConfigString","traceViewServiceUIViewEvent","UIRouterGlobals","lastStartedTransitionId","transitionHistory","successfulTransitions","transition","lazyLoadHook","entering","lazyLoad","lazyLoadState","originalTransition","orig","targetState","identifier","$url","parts","sync","registerLazyLoadHook","transitionService","lazyLoadFn","states","_state","err","DefType","hasOwn","Param","urlConfig","paramName","noReloadOnSearch","reloadOnSearch","SEARCH","dynamic","defaultConfig","paramConfig","getStaticDefaultValue","isShorthand","$$fn","unwrapShorthand","getParamDeclaration","urlType","paramTypes","CONFIG","PATH","getType","arrayDefaults","arrayParamNomenclature","arrayMode","$asArray","isOptional","raw","squash","defaultPolicy","getSquashPolicy","defaultSquashPolicy","from","to","configuredKeys","getReplace","params_1","changed","values1","values2","validates","isDefaultValue","replaceSpecialValues","_defaultValueCache","defaultValue","getDefaultValue","$normalize","isSearch","encoded","ParamType","$subPattern","sub","mode","ArrayType","arrayWrap","arrayHandler","allTruthyMode","arrayUnwrap","arrayEqualsHandler","val1","val2","left","right","paramTypeFn","wrapperFn","$arrayMode","makeDefaultType","ParamTypes","typeQueue","defaultTypes","definitionFn","_flushTypeQueue","valToString","defaultTypeBase","String","query","hash","int","bool","Boolean","date","getFullYear","getMonth","getDate","capture","Date","valueOf","l","json","StateParams","$inherit","newParams","$current","$to","parentParams","parents","inheritList","PathNode","stateOrNode","parameters","applyRawParams","pDef","paramDef","parameter","paramsFn","diff","PathUtils","makeTargetState","registry","buildPath","buildToPath","fromPath","toPath","inheritParams","applyViewConfigs","viewDecls","subPath","viewConfigs","createViewConfig","toKeys","noInherit","toNode","toParamVals","incomingParamVals","fromParamVals","ownParamVals","reloadState","node1","node2","retained","keep","nonDynamicParams","retainedWithToParams","retainedNode","matching","pathA","pathB","done","nodeA","nodeB","predicate","elementIdx","resolvePolicies","LAZY","EAGER","WAIT","NOWAIT","arg1","policy","resolved","literal","thisPolicy","statePolicy","resolvePolicy","resolveContext","findNode","asyncPolicy","customAsyncPolicy","getDependencies","resolvedDeps","resolvedValue","fromData","whens","ALL_WHENS","EAGER_WHENS","_path","addResolvables","newResolvables","resolvePath","matchedWhens","matchesPolicy","acceptedVals","whenOrAsync","nodeResolvables","nowait","wait","getResult","injector","_injector","UIInjectorImpl","availableResolvables","_node","fromInjector","getNative","native","getAsync","_routerInstance","locationServiceStub","locationConfigStub","_disposed","_disposables","_plugins","disposable","d","ignored","plugin","pluginInstance","getPlugin","pluginName","nameBuilder","selfBuilder","dataBuilder","getUrlBuilder","$urlMatcherFactoryProvider","stateDec","newStateDec","parsed","substring","parseUrl","isMatcher","navigable","append","getNavigableBuilder","isRoot","pathBuilder","includesBuilder","resolvablesBuilder","resolveObj","getToken","p","provide","literal2Resolvable","useFactory","dependencies","useClass","useValue","useExisting","tuple2Resolvable","item2Resolvable","decl","StateBuilder","matcher","paramFactory","builders","parentName","urlParams","nonUrlParams","builder","build","chain","parentFn","segments","pop","StateMatcher","_states","isRelative","stateName","stateOrName","base","matchGlob","isStr","__stateObjectCache","nameGlob","baseState","splitName","pathLength","relName","StateObject","stateDecl","isStateClass","ref","matchingKeys","isStateDeclaration","isState","StateQueueManager","listeners","queue","flush","registered","orphans","previousQueueLength","getState","notifyListeners","listener","name_1","orphanIdx","existingState","existingFutureState","deregister","attachRoute","prev","abstract","rulesApi","urlRuleFactory","StateRegistry","stateQueue","_registerRoot","_root","onStatesChanged","stateDefinition","_deregisterTree","getChildren","_children","deregistered","removeRule","deregisteredStates","found","property","builderFunction","TargetState","_stateRegistry","_identifier","_params","_options","_definition","relative","exists","valid","withState","withParams","withOptions","newOpts","isDef","HookBuilder","buildHooksForPhase","phase","_getEvents","buildHooks","hookType","matchingHooks","getMatchingHooks","reverseDepthSort","baseHookOptions","criteriaMatchPath","traceData","transitionHook","reverseSort","factor","depthDelta","isCreate","hookPhase","reg","getHooks","matchState","criterion","toMatch","globStrings","RegisteredHook","tranSvc","eventType","matchCriteria","removeHookFromRegistry","invokeCount","_deregistered","invokeLimit","_matchingNodes","nodes","_getDefaultMatchCriteria","_getPathTypes","_getMatchingNodes","mn","pathtype","isStateHook","every","makeEvent","hooks","_registeredHooks","removeHookFn","hookRegistrationFn","matchObject","TransitionHookPhase","TransitionHookScope","RejectType","Rejection","message","detail","isRejectionPromise","superseded","rejection","SUPERSEDED","redirected","invalid","INVALID","IGNORED","aborted","ABORTED","errored","ERROR","normalize","toPromise","TransitionEventType","hookOrder","getResultHandler","getErrorHandler","synchronous","defaultOptions","TransitionHook","stateContext","isSuperseded","isActive","waitFor","nextHook","invokeHook","invokeHooks","doneCallback","remainingHooks","runAllHooks","logError","defaultErrorHandler","notCurrent","getNotCurrentRejection","handleError","handleResult","handleHookResult","isTargetState","_aborted","HANDLE_RESULT","LOG_REJECTED_RESULT","LOG_ERROR","REJECT_ERROR","THROW_ERROR","addCoreResolvables","addResolvable","TRANSITION_TOKENS","isTransition","treeChangesCleanup","replaceTransitionWithNull","redirectToHook","redirect","redirectTo","makeEnterExitRetainHook","hookFn","onExitHook","onRetainHook","onEnterHook","RESOLVE_HOOK_PRIORITY","eagerResolvePath","lazyResolveState","resolveRemaining","loadEnteringViews","enteringViews","activateViews","exitingViews","vc","deactivateViewConfig","activateViewConfig","updateGlobalState","clearCurrentTransition","updateUrl","urlOptions","ignoredHook","ignoredReason","_ignoredReason","pending","abort","invalidTransitionHook","defaultTransOpts","notify","reload","supercede","custom","TransitionService","_router","_transitionCount","_eventTypes","_criteriaPaths","_deregisterHookFns","_defineCorePaths","_defineCoreEvents","_registerCoreTransitionHooks","onCreate","onStart","onExit","onRetain","onEnter","onFinish","onError","hooksArray","Phase","TH","paths","NORMAL_SORT","SYNCHRONOUS","_defineEvent","CREATE","BEFORE","RUN","SUCCESS","STATE","_definePathType","cmpByPhase","hookScope","fns","addCoreResolves","registerInvalidTransitionHook","registerRedirectToHook","registerOnExitHook","registerOnRetainHook","registerOnEnterHook","eagerResolve","registerEagerResolvePath","lazyResolve","registerLazyResolveState","resolveAll","registerResolveRemaining","loadViews","registerLoadEnteringViews","registerActivateViews","updateGlobals","registerUpdateGlobalState","registerUpdateUrl","UrlConfig","_isCaseInsensitive","_isStrictMode","_defaultSquashPolicy","hashPrefix","newprefix","host","port","protocol","caseInsensitive","strictMode","__assign","ParamFactory","fromSearch","UrlMatcherFactory","UrlMatcher","globalConfig","strict","decodeParams","object","UrlRouter","urlParts","compareFn","read","urlMatcher","href","absolute","isHtml5","appendBasePath","slash","cfgPort","defineProperty","enumerable","configurable","UrlRuleFactory","makeRule","_what","fromUrlMatcher","fromState","fromRegExp","_handler","details","matchPriority","optional","search","stateOrDecl","transitionTo","sticky","Number","isUrlRule","defaultRuleSortFn","getHandlerFn","cmp","prioritySort","weights","URLMATCHER","REGEXP","RAW","OTHER","typeSort","urlMatcherSort","useMatchPriority","idSort","UrlRules","_sortFn","_rules","_id","_otherwiseFn","handlerFn","_sorted","ensureSorted","sorted","stableSort","group","_group","arrOfWrapper","wrapperA","wrapperB","cmpDiff","wrapper","UrlService","newurl","best","go","applyResult","_stopListeningFn","weight","BaseLocationServices","fireAfterUpdate","_listeners","_listener","_get","_location","_history","BrowserLocationConfig","_isHtml5","_hashPrefix","hostname","getBaseHref","baseTag","getElementsByTagName","extendStatics","__extends","setPrototypeOf","__proto__","__","HashLocationService","_super","title","MemoryLocationConfig","_port","_protocol","_host","newval","MemoryLocationService","_url","PushStateLocationService","_config","_getBasePrefix","basePrefix","exactBaseHrefMatch","startsWithBase","fullUrl","replaceState","pushState","Promise","reject","deferred","keyValsToObjectR","accum","getParams","queryString","orEmptyString","beforehash","buildUrl","loc","searchObject","locationPluginFactory","serviceClass","configurationClass","configuration","_uiViews","_viewConfigs","_viewConfigFactories","_registeredUIView","_registeredUIViews","_activeViewConfigs","_onSync","normalizeUIViewTarget","rawViewName","viewAtContext","relativeViewNameSugar","anchorState","anchor","_rootContext","viewType","cfgFactory","cfgs","uiViewsByFqn","viewConfigDepth","depthCompare","depthFn","posNeg","uiViewTuples","stateDepth","matchingConfigs","matchedViewConfigs","unmatchedConfigTuples","allTuples","uiViews","available","active","vcSegments","uivSegments","negOffset","fqnToFirstSegment","uiViewContext","ARIA_DISABLE_ATTR","ngAriaModule","info","angularVersion","ariaHidden","ariaChecked","ariaReadonly","ariaDisabled","ariaRequired","ariaInvalid","ariaValue","tabindex","bindKeydown","bindRoleForClick","watchExpr","ariaAttr","nativeAriaNodeNames","negate","ariaCamelName","isNodeOneOf","boolVal","newConfig","$$watchExpr","nodeTypeArray","nodeName","$aria","shouldAttachAttr","normalizedAttr","allowNonAriaNodes","shouldAttachRole","role","shape","getShape","post","ngModel","needsTabIndex","ngAriaWatchModelValue","$modelValue","newVal","$viewValue","$isEmpty","needsAriaValuemin","needsAriaValuemax","needsAriaValuenow","$observe","$validators","required","$invalid","ngMessages","ngClick","ngKeydown","ngKeypress","ngKeyup","keyCode","which","isContentEditable","$event","readOnly","pristine","resetable","starWidth","starHeight","canelWidth","cancelHeight","rated","reset","beforeRated","beforeReset","isTouch","navigator","msMaxTouchPoints","orgValue","starPartWidth","steps","garbage","getValue","index","getStartParts","getStarOffset","ratio","isSelected","removeRating","rating","setValue","tmpValue","put","IndexController","$mdDialog","RemoteStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR","vm","toggle","up","updateStorage","cmd","layout","postMessage","onStorageError","debug","visitor","status","div_color","settings","color","text_color","textColor","text_button_color","textButtonColor","button_color","color_button","background_color","backgroundColor","client_height","documentElement","clientHeight","innerHeight","client_width","clientWidth","style","setProperty","tg","getStoredValueWithLocation","visitorStoragePromise","getItem","layoutStoragePromise","visitorValue","layoutValue","interaction","alignment","online","exceeded","maxInteractions","openedInteractions","isOnline","hideWhenOffline","createElement","appendChild","sheet","insertRule","close","confirm","querySelector","clickOutsideToClose","closingQuestion","ok","show","chatInteraction","customUpdate","closed","closeReason","$promise","download","getMessages","intid","includeAll","forceDownload","_map","rows","row","sender","direction","customerAlias","ContactId","agentIdentifier","UserId","agentAlias","User","alias","fullname","body","createdAt","moment","getHeaderShape","header_shape","CHAT_STATUSES","offline","defaultTitle","header_online","header_offline","addEventListener","routeRun","cursor","hide","_forIn","_isNil","routeConfig","$stateProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX","Pragma","setPrefix","waitingTemplate","onlineTemplate","offlineTemplate","chatTemplate","unmanagedTemplate","closingTemplate","ClosingController","$mdToast","errors","toast","simple","textContent","formSubmitFailureMessage","toastClass","position","stopLoading","loading","goToIfTime","form","upColor","downColor","userForm","$setPristine","$setUntouched","enableDownload","removeItem","submit","_merge","ratingType","customer","formSubmitSuccessMessage","finally","skip","apiService","$resource","paramDefaults","baseUrl","remote","chatWebsite","method","getFields","uploadAttachment","transformRequest","downloadAttachment","abandon","chatMessage","ChatController","$interval","$document","emojiArea","getMessagesInterval","getInteractionInterval","lastMessageId","clearStorage","scrollToBottomOfChat","getElementsByClassName","scrollTop","scrollHeight","handleSizeError","code","outOfInterval","sendMessage","updateRootscope","interactionStarted","emojioneArea","setText","getInteraction","disposition","reply","getText","shiftKey","includeAgent","added","_find","messages","emojiOptions","watchEmbedData","fontSmiley","emoji","linkTarget","ngFlowOptions","allowDuplicateUploads","showMenu","replyMessage","$","placeholder","placeholderMessage","keyup","editor","ready","setFocus","reply_button","maxFileSizeMb","fd","FormData","AttachmentId","_values","OfflineController","$sce","fromKey","initialFields","typeField","optJsonFormData","showLeafArrayIndexes","includeNullValues","onSubmitSuccess","fields","_cloneDeep","trustAsHtml","initUploadButton","formItem","uploadItem","button","label","css","trigger","click","props","maxSizeMB","some","sizeErrMessage","removeFileItem","setupFileInput","multipleUpload","setAttribute","makeFileOptionsVisible","fileOpts","lastOpt","mapKeyOffline","_random","field","helpText","isHTML","checkHTML","hideDelay","cmField","uploadFields","payLoad","isFormDataPayload","isJsonPayload","payload","jsonToFormData","initialFormData","OnlineController","goToIf","enableCustomerWriting","initVisitorForm","mapKey","disableItem","chatInteractionId","messageId","channel","variable","referer","customerIp","chatMessageError","UnmanagedController","note","WaitingController","getInteractionIntervalHandle","open","remoteAddress","URL","address","origin","setItem","action","storage","expectedAction","removeEventListener","stringData","warn","toTrustedFilter","constant","ngEnter","div","startTime","sentAt","createTextNode","myWindow","write","innerHTML","focus","print","printElement","$mdGestureProvider","skipClickHijack","exports","globalThis","isJsonObject","Blob","isGlobalFormDataPresent","getDefaultFormData","convertRecursively","jsonObject","formData","parentKey","propName","FileList","toISOString","mergedOptions","carry","objectToMerge","objectKey","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","h","hh","dd","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","pluralForm","plurals","pluralize","u","withoutSuffix","isFuture","f","weekdaysParseExact","hour","minute","postformat","symbolMap","preparse","numberMap","suffixes","relativeTimeWithPlural","num","forms","standalone","isFormat","day","period","w","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","mutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","translate","ll","lll","llll","output","plural","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","month","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","offset","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","now","$0","$2","isUpper","eifelerRegelAppliesToNumber","units","translateSingular","special","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","separator","days","numbersNouns","numberNoun","hundred","floor","ten","one","word","numberAsNoun","time","hm","processHoursFunction","nominative","accusative","genitive","webpackContext","req","webpackContextResolve","__webpack_require__","urlSanitizationWhitelist","aHrefSanitizationWhitelist","stringifyField","decimalSep","isFloat","toLocaleString","quoteStrings","txtDelim","isFinite","header","fieldSep","c","columnOrder","addByteOrderMarker","isSpecialChar","getSpecialChar","filename","charset","csv","buildCSV","getFilename","addClass","ngCsvLoadingClass","csvHeader","csvColumnOrder","csvLabel","removeClass","msSaveOrOpenBlob","msSaveBlob","createObjectURL"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"scripts/chat.js","mappings":";iMAOAA,QAAQC,OAAO,gBAAiB,IAC/BC,SAAS,eAAe,WACvB,aAMAC,KAAKC,SAAW,GAQhBD,KAAKE,QAAU,SAAUC,GACvB,OAAO,IAAIC,EAAKD,IASlBH,KAAKK,OAAS,GASdL,KAAKM,GAAK,SAAUC,EAAOC,GACzBR,KAAKK,OAAOI,KAAK,CAACF,EAAOC,KAG3BR,KAAKU,KAAO,WACV,IAAIC,EAAKX,KAAKE,QACVD,EAAWD,KAAKC,SAChBI,EAASL,KAAKK,OAClB,MAAO,CACL,OAAU,SAASO,GAEjB,IAAIC,EAAOF,EAAGd,QAAQiB,OAAO,GAAIb,EAAUW,IAI3C,OAHAf,QAAQkB,QAAQV,GAAQ,SAAUE,GAChCM,EAAKP,GAAGC,EAAM,GAAIA,EAAM,OAEnBM,QAKfhB,QAAQC,OAAO,YAAa,CAAC,kBAC1BkB,WAAW,WAAY,CAAC,SAAU,SAAU,SAAU,cACvD,SAAUC,EAAQC,EAAQC,EAAQC,GAEhC,IAAIjB,EAAUN,QAAQiB,OAAO,GAAIG,EAAOI,MAAMH,EAAOI,WAGjDT,EAAQI,EAAOI,MAAMH,EAAOK,aAAeH,EAAYI,OAAOrB,GAE9DsB,EAAkB,SAASC,GAC7B,IAAIC,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtCL,EAAKM,QACL,IAAI1B,EAAQU,EAAOiB,WAAWC,MAAMlB,EAAQ,CAAC,SAAWS,EAAWb,GAAMuB,OAAOT,IAMhF,GALI,CACF,SAAW,EAAG,eAAiB,EAAG,YAAe,EAAG,UAAa,EAAG,SAAY,GAChFD,IACAT,EAAOoB,cAEL9B,EAAM+B,iBACR,OAAO,GAIXzB,EAAKP,GAAG,WAAYmB,GACpBR,EAAOsB,IAAI,YAAY,WACnB1B,EAAK2B,IAAI,WAAYf,MAGzBR,EAAOwB,MAAQ5B,EAEXK,EAAOwB,eAAe,cACxBvB,EAAOD,EAAOyB,UAAUC,OAAO3B,EAAQJ,GACvCI,EAAOsB,IAAI,YAAY,WACrBpB,EAAOD,EAAOyB,UAAUC,OAAO3B,UAIpC4B,UAAU,WAAY,CAAC,WACtB,MAAO,CACLC,OAAO,EACP9B,WAAY,eAGlBnB,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,SAAY,KACZ,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAIC,EAAcD,EAAMN,eAAe,iBACnCQ,EAAeF,EAAMN,eAAe,kBACpCS,EAAaH,EAAMN,eAAe,cAAgBI,EAAMzB,MAAM2B,EAAMI,WACxEN,EAAML,MAAMY,aAAaN,EAASE,EAAaC,EAAcC,QAInEtD,QAAQC,OAAO,kBAAmB,CAAC,cAKhC+C,UAAU,mBAAmB,WAC5B,MAAO,CACL,OAAS,EACT,KAAQ,SAASC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,iBAAiB,SAAU/C,GACtCA,EAAMgD,yBASbV,UAAU,gBAAiB,CAAC,WAAY,SAASW,GAChD,MAAO,CACL,OAAS,EACT,KAAQ,SAASV,EAAOC,EAASC,GAC/B,IAAIS,EACAC,GAAQ,EACZX,EAAQO,KAAK,YAAY,SAAU/C,GAmBnC,IAAoBoD,EACdC,EACAC,EADAD,GAAW,EACXC,GAFcF,EAlBFpD,GAoBasD,cAAgBF,EAAUG,cAAcD,aACrEhE,QAAQkB,QAAQ8C,GAAgBA,EAAaE,OAAO,SAASC,GAC/C,UAARA,IACFJ,GAAW,MAGRA,IAvBFF,IACHZ,EAAMmB,OAAOjB,EAAMkB,eACnBR,GAAQ,GAEVF,EAASW,OAAOV,GAChBlD,EAAMgD,qBAERR,EAAQO,KAAK,kBAAkB,SAAU/C,GACvCiD,EAASW,OAAOV,GAChBA,EAAUD,GAAS,WACjBV,EAAMzB,MAAM2B,EAAMoB,eAClBX,EAAU,KACVC,GAAQ,IACP,aAgBb7D,QAAQC,OAAO,YAAa,CAAC,cAC5B+C,UAAU,YAAY,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAY/B,SAASqB,IACPvB,EAAML,MAAM4B,WAAWtB,GAZrBC,EAAMsB,gBACRxB,EAAMyB,OAAOvB,EAAMsB,iBAAiB,SAAUE,GACxCA,EACFH,IAYJvB,EAAML,MAAMgC,aAAa1B,MANzBsB,SAYP,SAAUxE,GAAU,aACnB,IAAIC,EAASD,EAAQC,OAAO,cAAe,CAAC,cAgB5CD,EAAQkB,QAfK,CACX2D,YAAa,CAAC,QAAS,YACvBC,aAAc,CAAC,SACfC,UAAW,CAAC,QAAS,UACrBC,WAAY,CAAC,SAAU,UACvBC,eAAgB,CAAC,SAAU,UAC3BC,UAAW,CAAC,SACZC,YAAa,CAAC,SACdC,UAAW,CAAC,QAAS,YACrBC,YAAa,GACbC,SAAU,GACVC,SAAU,GACVC,MAAO,CAAC,WAAY,WAGE,SAAUC,EAAW5D,GAC3C,IA4B6B6D,EA5BzBC,EAAO,SA4BkBD,EA5Ba7D,GA6B5B+D,OAAO,GAAGC,cAAgBH,EAAOzD,MAAM,IA5BzC,mBAAR0D,IACFA,EAAO,qBAET1F,EAAO+C,UAAU2C,EAAM,CAAC,WACtB,MAAO,CACLG,QAAS,YACT3E,WAAY,CAAC,SAAU,SAAU,SAAUC,EAAQC,GACjDD,EAAOsB,IAAI,SAAWb,GAAW,WAC/B,IAAIkE,EAAWhE,MAAMC,UAAUC,MAAMC,KAAKC,WACtCzB,EAAQqF,EAAS3D,QAErB,GAAIhB,EAAOwB,QAAUmD,EAAS3D,QAA9B,CAGA,IAAIN,EAAO,GACX9B,EAAQkB,QAAQuE,GAAW,SAASd,EAAOqB,GACzClE,EAAK6C,GAASoB,EAASC,OAEgB,IAArC5E,EAAOI,MAAMH,EAAOsE,GAAO7D,IAC7BpB,EAAMgD,8BAtCnB,CAiDC1D,SAEFA,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAI8C,EAAO9C,EAAM+C,QACjBjD,EAAMyB,OAAOuB,GAAM,SAAUA,GAC3B,GAAKA,EAAL,CAGA,IAAIE,EAAa,IAAIC,WACrBD,EAAWE,cAAcJ,EAAKA,MAC9BE,EAAWG,OAAS,SAAU5F,GAC5BuC,EAAMmB,QAAO,WACXjB,EAAMoD,KAAK,MAAO7F,EAAM8F,OAAOC,qBAO3CzG,QAAQC,OAAO,iBAAkB,CAAC,cACjC+C,UAAU,gBAAiB,CAAC,WAC3B,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,GACfA,EAAMyD,UAAYzD,EAAML,MAAM+D,WAIpC3G,QAAQC,OAAO,OAAQ,CAAC,gBAAiB,YAAa,cAAe,WACnE,YAAa,iBAAkB,WAAY,yHC9JlC2G,4PAkKX,SAASC,EAAmBC,EAAUC,EAAaC,EAAcC,EAAOC,GACpE,IAAIC,GAAkB,IAAAC,OAAM,yBACxBC,GAAe,IAAAD,OAAM,sBACzB,MAAO,CACHE,SAAU,MACVC,UAAW,IACXC,QAAS,SAAUC,GACf,IAAIC,EAAUD,EAASE,OAEvB,OADAF,EAASG,QACF,SAAU3E,EAAO4E,GACpB,IAAIC,EAAOD,EAASC,KAAK,WACzB,IAAKA,EAGD,OAFAD,EAASF,KAAKD,QACdZ,EAASe,EAASE,WAAlBjB,CAA8B7D,GAGlC,IAAI+E,EAAMF,EAAKG,MAAQ,CAAEC,SAAU,GAAIC,YAAa,EAAAC,MAChDC,EAAaL,EAAIM,MAAQ,IAAI,EAAAC,eAAeP,EAAIM,MACpDT,EAASF,KAAKK,EAAIG,YAAYN,EAAUQ,IAAeX,GACvD,EAAAc,MAAA,gBAAsBV,EAAKW,QAASZ,EAASF,QAC7C,IAAIe,EAAO5B,EAASe,EAASE,YACzB5G,EAAa6G,EAAI7G,WACjBwH,EAAexB,EAAgBa,GAC/BY,EAAYvB,EAAaW,GACzBa,EAASR,IAAc,OAAUA,GAErC,GADApF,EAAM2F,GAAaC,EACf1H,EAAY,CACZ,IAAI2H,EAAsB/B,EAAY5F,GAAY,IAAAF,QAAO,GAAI4H,EAAQ,CAAEzH,OAAQ6B,EAAO4E,SAAUA,KAC5Fc,IACA1F,EAAM0F,GAAgBG,EACtB7F,EAAM0F,GAAcC,GAAaC,GAMrChB,EAASC,KAAK,0BAA2BgB,GACzCjB,EAASkB,WAAWjB,KAAK,0BAA2BgB,GACpDE,EAA4B9B,EAAIF,EAAc8B,EAAoB7F,EAAO+E,GAG7E,IAAI,IAAAiB,UAASjB,EAAIkB,WACb,IAAIC,GAAY,IAAAC,aAAYpB,EAAIkB,WAC5BG,EAAc,IAAIC,OAAO,eAAiBH,EAAY,IAAK,KAO3DI,EAAoBtG,EAAMyB,QAND,WACzB,IAAI8E,EAAc,GAAGvH,MAChBC,KAAK2F,EAAS,GAAGkB,UACjBU,QAAO,SAAUC,GAAM,OAAOA,GAAMA,EAAGC,SAAWN,EAAYO,KAAKF,EAAGC,YAC3E,OAAOH,GAAe,aAAgBA,GAAa1B,KAAK,IAAME,EAAIkB,UAAY,iBAErB,SAAUW,GAC9DA,IAELb,EAA4B9B,EAAIF,EAAc6C,EAAc5G,EAAO+E,GACnEuB,QAGRb,EAAKzF,MAzNrB2D,EAAS,CACL,QACA,WACA,gBACA,eACA,KACA,SAAwBK,EAAO6C,EAAUC,EAAeC,EAAc9C,GAwBlE,IAAI+C,EAAW,CACXhC,KAAM,CAAEC,SAAU,CAAEgC,SAAUjD,EAAMkD,WAAWC,qBAC/C3B,QAAS,IAETzF,EAAY,CACZqH,MAAO,EACP/C,SAAU,MACVgD,UAAU,EACV/C,SAAU,IACVgD,WAAY,UACZ/C,QAAS,SAAUC,EAAU+C,EAAQC,GACjC,OAAO,SAAUxH,EAAO4E,EAAU1E,GAC9B,IACIuH,EAAYC,EAAWC,EAAcC,EADrCC,EAAY3H,EAAc,QAAK,GAAI4H,EAAgB5H,EAAkB,WAAG6H,EAjCzE,SAAU9H,EAASsD,EAAQyE,GAC1B,mBAAwB,EACxBnB,EAASjG,MAAMX,EAAS,KAAMsD,GAAQ0E,KAAKD,GAG3CnB,EAASjG,MAAMX,EAAS,KAAMsD,EAAQyE,IA4BkCD,EAzBzE,SAAU9H,EAAS+H,GAClB,mBAAwB,EACxBnB,EAASqB,MAAMjI,GAASgI,KAAKD,GAG7BnB,EAASqB,MAAMjI,EAAS+H,IAoB0EG,EAAYvD,EAASwD,cAAc,YAAcpB,EAAUtE,EAAOqE,EAAa7G,EAAc,QAAKA,EAAY,MAAK,GAAjD6G,CAAqD/G,IAAU,WAEnOqI,EAAe,CACfC,MAAO,MACPC,GAAIxI,EAAUqH,QACd1E,KAAMA,EACN8F,IAAKL,EAAU3C,QAAQgD,IAAML,EAAU3C,QAAQgD,IAAM,IAAM9F,EAAOA,EAClE+F,OAAQ,KACRC,cAWJ,SAA+BD,KACvBA,GAAYA,aAAkB,QAEjBb,IAAYa,IAE7B,EAAAlD,MAAA,yBAA+B8C,EAAcI,GAAUA,EAAOxD,UAAYwD,EAAOxD,SAASgC,UAC1FW,EAAaa,EACbE,EAAWF,MAjBX,sBAEI,IAAIG,GAAsB,IAAAzE,OAAM,yBAAN,CAAgCgE,GAGtDU,GAAgB,IAAA1E,OAAM,0BAAN,CAAiCgE,GACrD,OAAOS,GAAuBC,IAGtC,EAAAtD,MAAA,iBAAuB,UAAW8C,GAUlCzD,EAASC,KAAK,UAAW,CAAEW,QAAS6C,IACpCM,IACA,IAAIG,EAAa9E,EAAM+E,eAAeV,GA2BtC,SAASM,EAAWF,GAChB,IAAIO,EAAWhJ,EAAMiJ,OACjBC,EAAYjF,EAAGkF,QAASC,EAAYnF,EAAGkF,QACvCE,EAAc,CACdrE,KAAMyD,EACNjD,QAAS6C,GAETiB,EAAc,CACdC,WAAYL,EAAUvI,QACtB6I,WAAYJ,EAAUzI,QACtB8I,YAAaL,GAcjBJ,EAASU,MAAM,sBAAuBhH,GACtC,IAAIiH,EAASnC,EAAYwB,GAAU,SAAUY,GACzCA,EAAM/E,KAAK,cAAeyE,GAC1BM,EAAM/E,KAAK,UAAWwE,GACtBtB,EAAe6B,EAAOhF,GAAU,WAC5BsE,EAAUW,UACNlC,GACAA,EAAa+B,MAAM,gCAClB,IAAAI,WAAUhC,KAAmBA,GAAkB9H,EAAMzB,MAAMuJ,KAC5DhB,EAAc8C,MAvD9B,WAWI,GAVInC,IACA,EAAAlC,MAAA,iBAAuB,yBAA0BkC,EAAW5C,KAAK,YACjE4C,EAAWsC,SACXtC,EAAa,MAEbE,IACA,EAAApC,MAAA,iBAAuB,mBAAoB8C,GAC3CV,EAAaqC,WACbrC,EAAe,MAEfD,EAAW,CACX,IAAIuC,EAAcvC,EAAU7C,KAAK,eACjC,EAAAU,MAAA,iBAAuB,cAAe0E,GACtClC,EAAeL,GAAW,WACtBuC,EAAYR,YAAYI,UACxBpC,EAAa,QAEjBA,EAAaC,EACbA,EAAY,MAuCZwC,MAEJxC,EAAYiC,GACZhC,EAAeqB,GAWFU,MAAM,qBAAsBjB,GAAUb,GACnDD,EAAapJ,MAAMsJ,GA7EvB7H,EAAMP,IAAI,YAAY,WAClB,EAAA8F,MAAA,iBAAuB,2BAA4B8C,GACnDS,UAgFhB,OAAO/I,IAGf6D,EAAmBuG,QAAU,CAAC,WAAY,cAAe,eAAgB,QAAS,MAiElF,IAAIC,EAAuE,mBAA7C,YAAe,aAAwB,UAEjEC,EAAe,EAEnB,SAAStE,EAA4B9B,EAAIF,EAAc8B,EAAoB1H,EAAQ4G,KAE3E,IAAAuF,YAAWzE,EAAmB0E,WAC3BxF,EAAIE,SAASgB,WAAalB,EAAIE,SAASuF,oBAAsBJ,GAChEvE,EAAmB0E,UAEvB,IAAIE,GAAY,IAAAC,MAAK3F,EAAIM,MAAMsF,MAAMC,KACjCC,EAAc,CAAErK,KAAMqF,GAE1B,IAAI,IAAAyE,YAAWzE,EAAmBiF,mBAAoB,CAClD,IACIC,EADiB,IAAI,EAAAzF,eAAeP,EAAIM,MACH2F,cAAc,gBAAgBnG,KAyBvE1G,EAAOsB,IAAI,WAAYsE,EAAakH,UAAU,IAvB1B,SAAUC,GAG1B,GAAIA,IAAiBH,IAAsE,IAA/CG,EAAaC,UAAUC,QAAQX,GAA3E,CAEA,IAAIY,EAAWH,EAAaI,OAAO,MAC/BC,EAAaL,EAAaI,OAAO,QACjCE,EAAgB,SAAUC,GAAQ,OAAOA,EAAKC,aAC9CC,EAAWT,EAAaU,YAAY,MAAMC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAC7EC,EAAad,EAAaU,YAAY,QAAQC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAEjFE,EAAkBN,EAASnF,QAAO,SAAU0F,GAC5C,IAAIC,EAAMH,EAAWZ,QAAQc,GAC7B,OAAgB,IAATC,IAAeH,EAAWG,GAAKC,KAAKC,OAAOhB,EAASa,EAAM3D,IAAKgD,EAAWW,EAAM3D,QAG3F,GAAI0D,EAAgBK,OAAQ,CACxB,IAAIC,EAAgBN,EAAgBJ,KAAI,SAAUW,GAAK,OAAOA,EAAEjE,MAE5DkE,GAAY,IAAAjG,QAAO6E,GAAU,SAAUnK,EAAK6B,GAAO,OAAuC,IAAhCwJ,EAAcnB,QAAQrI,MACpF8C,EAAmBiF,kBAAkB2B,EAAWvB,OAGSL,IAGrE,IAAI,IAAAP,YAAWzE,EAAmB6G,WAAY,CAC1C,IAAIC,EAAOtC,IACPuC,EAAc,gBAEdC,EAAqB,SAAUC,GAC/B,QAASA,IAAWA,EAAMF,KAA6C,IAA7BE,EAAMF,GAAaD,IAAmBE,EAAmBC,EAAMC,oBAYzGC,EAAW,CAAE7B,QAASV,EAAU/H,MACpCvE,EAAOsB,IAAI,WAAYsE,EAAakJ,SAASD,GAV3B,SAAUF,GACxB,IAAInM,EACAuM,EAAOJ,EAAMF,GAAeE,EAAMF,IAAgB,GAKtD,OAJKC,EAAmBC,KACpBnM,EAAUsD,EAAGkJ,KAAKtH,EAAmB6G,UAAUI,KACvC7E,MAAK,SAAU/G,GAAO,OAAQgM,EAAIP,IAAgB,IAARzL,KAE/CP,IAGyDkK,KAG5E,YAAe,mBAAmB9K,UAAU,SAAU4D,GACtD,YAAe,mBAAmB5D,UAAU,SAAU6D,sWC9ZlDwJ,EAAiC,WACjC,SAASA,IACL,IAAIC,EAAQnQ,KACGA,KAAKoQ,SAAWvQ,EAAQ,GAAR,cAAwB,EACxCG,KAAKU,KAAO,CACvB,QACA,iBACA,YACA,SAAU2P,EAAOC,EAAgBC,GAI7B,OAHAJ,EAAMK,iBAAmBD,EAAUE,KAAOF,EAAUE,IAAI,qBAAuBF,EAAUG,IAAI,oBAC7FP,EAAME,MAAQA,EACdF,EAAMG,eAAiBA,EAChBH,IAyJnB,OApJAD,EAAgBrO,UAAU8O,eAAiB,SAAUnM,GACjDxE,KAAKoQ,SAAW5L,GAepB0L,EAAgBrO,UAAU+O,WAAa,SAAUrF,EAAQ6C,EAAQyC,GAC7D,IACIC,EAAa,SAAUxK,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGC,SAAUD,OAC3GE,EAAc,SAAU5K,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGjI,UAAWiI,OACjH,OAAO,IAAApE,WAAUrB,EAAO0F,UAClBH,EAAW9Q,KAAKmR,WAAW5F,EAAO0F,SAAU7C,KAC5C,IAAAxB,WAAUrB,EAAO6F,aACbN,EAAW9Q,KAAKqR,QAAQ9F,EAAO6F,YAAahD,KAC5C,IAAAxB,WAAUrB,EAAO+F,kBACbR,EAAW9Q,KAAKuR,aAAahG,EAAO+F,iBAAkBlD,EAAQyC,KAC9D,IAAAjE,WAAUrB,EAAOxC,WACbmI,EAAY3F,EAAOxC,YACnB,IAAA6D,WAAUrB,EAAO+B,mBACb4D,EAAYlR,KAAKwR,sBAAsBjG,EAAO+B,kBAAmBc,EAAQyC,IACzEC,EAbA,wBAwB1BZ,EAAgBrO,UAAUsP,WAAa,SAAUF,EAAU7C,GACvD,OAAO,IAAAhB,YAAW6D,GAAYA,EAAS7C,GAAU6C,GAWrDf,EAAgBrO,UAAUwP,QAAU,SAAUI,EAAKrD,GAG/C,OAFI,IAAAhB,YAAWqE,KACXA,EAAMA,EAAIrD,IACH,MAAPqD,EACO,KACPzR,KAAKoQ,SACEpQ,KAAKqQ,MACPK,IAAIe,EAAK,CAAEC,MAAO1R,KAAKsQ,eAAgBqB,QAAS,CAAEC,OAAQ,eAC1D7G,MAAK,SAAU8G,GAChB,OAAOA,EAASlK,QAGjB3H,KAAKwQ,iBAAiBiB,IAUjCvB,EAAgBrO,UAAU0P,aAAe,SAAUxR,EAAUqO,EAAQyC,GACjE,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAS1BX,EAAgBrO,UAAU2P,sBAAwB,SAAUzR,EAAUqO,EAAQyC,GAC1E,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAgB1BX,EAAgBrO,UAAUqQ,sBAAwB,SAAUzL,EAAQoK,EAAS9H,EAAWoJ,GACpFA,EAAWA,GAAY,GAEvB,IAAIC,EAASvS,EAAQ,GAAR,eAAyB,EAAI,KAAO,GAE7CwS,EAAQ,SAAUC,GAClB,IAAIC,GAAU,IAAAtJ,aAAYqJ,GAC1B,MAAO,aAAa7I,KAAK8I,GAAW,KAAOA,EAAUA,GA6BrDvP,EAQZ,SAA8BwC,GAC1B,IAAIgN,EAAU,EAAAzB,SAAA,cAAuBvL,EAAO,aAC5C,IAAKgN,IAAYA,EAAQpD,OACrB,MAAM,IAAIqD,MAAM,mCAAqCjN,EAAO,KAChE,OAAOgN,EAAQ7D,IAAI+D,GAAa9D,OAAO,EAAAC,QAAS,IAZhC8D,CAAqB5J,GAAW4F,KA3BzB,SAAUiE,GACzB,IAAIpN,EAAOoN,EAAMpN,KAAM0J,EAAO0D,EAAM1D,KAChC2D,EAAWR,EAAM7M,GAIrB,GAAIiB,EAAOqM,KAAKD,KAAcV,EAAS3M,GACnC,OAAOqN,EAAW,KAAOpM,EAAOqM,KAAKD,GAAY,IACrD,IAAIE,EAAcZ,EAAS3M,IAASA,EAGpC,GAAa,MAAT0J,EACA,OAAO2D,EAAW,OAAST,EAAS,YAAcW,EAAc,MAIpE,GAAa,MAAT7D,EAAc,CACd,IAAI8D,EAAMnC,EAAQ/C,cAAciF,GAC5BpS,EAAKqS,GAAOA,EAAIrL,KAChBhG,EAAQhB,GAAM,EAAAoQ,SAAA,mBAA4BpQ,IAAQ,GAGtD,OAAOkS,EAAW,cAAgBE,IADhB,IAAAf,SAAQrR,GAAM,KAAOA,EAAGyO,OAAS,GAAK,IAAM,IACA,IAAMzN,EAAKsR,KAAK,KAAO,KAGzF,OAAOJ,EAAW,KAAOT,EAAS,YAAcW,EAAc,OAEJE,KAAK,KAC/DjK,EAAYqJ,EAAMtJ,GACtB,MAAO,IAAMC,EAAY,IAAMhG,EAAQ,MAAQgG,EAAY,KAExDkH,EArKyB,GAiLhCwC,EAAc,SAAUQ,GACxB,OAAI,IAAAC,UAASD,EAAIE,kBACNC,EAAcH,EAAIE,kBACtBC,EAAcH,EAAIpQ,QAIzBuQ,EAAgB,SAAUC,GAC1B,OAAOC,OAAOC,KAAKF,GAAe,IAE7B3E,KAAI,SAAU9I,GAAO,MAAO,CAACA,EAAK,oBAAoB4D,KAAK6J,EAAYzN,QAEvEyD,QAAO,SAAUmK,GAAS,OAAO,IAAA7G,WAAU6G,KAAU,IAAAzB,SAAQyB,EAAM,OAEnE9E,KAAI,SAAU8E,GAAS,MAAO,CAAGjO,KAAMiO,EAAM,GAAG,IAAMA,EAAM,GAAIvE,KAAMuE,EAAM,GAAG,2ECzL7EC,EAAsB,SAAUC,GACvC,OAAO,SAA0BC,GAC7B,IAAIC,EAAOD,EAAYD,GACnBG,EAAwB,WAAbH,EAAwB,OAAS,KAOhD,OAAOE,EANP,SAA0BjE,EAAOnC,GAC7B,IACIsG,EADiB,IAAI,EAAA3L,eAAewH,EAAMlB,YAAYoF,IAC1BC,WAAWtG,EAAMuG,WAC7CtL,GAAS,IAAA5H,QAAOmT,EAAUF,GAAa,CAAEG,QAASzG,EAAOO,aAAc4B,IAC3E,OAAO,EAAAmB,SAAA,iBAA0B8C,EAAM7T,KAAM0I,SAEhByL,ICfrCC,EAAqC,WACrC,SAASA,EAAoBC,GAEzBrU,KAAKsU,cAAgB,GACrBtU,KAAKqU,kBAAoBA,EACzB,IAAIE,GAAM,IAAAvQ,KAAIqQ,IACd,IAAAG,sBAAqBD,EAAKvU,KAAMuU,EAAK,CAAC,eA8D1C,OAhDAH,EAAoBK,6BAA+B,SAAUC,GACzD,IAAIC,EAAWD,EAAOE,kBAAkB1F,KAAK,QAC7CyF,EAASE,OAAS,SAAUvF,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,WAAW,SAAUC,GAAK,MAAQ,CAAE,IAAK,KAAM,IAAK,OAAQA,MAAU1F,GAElHqF,EAASM,OAAS,SAAU3F,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,aAAa,SAAUC,GAAK,MAAQ,CAAE,KAAM,IAAK,MAAO,KAAMA,MAAU1F,IAIxH8E,EAAoBvS,UAAUqT,QAAU,aACxCd,EAAoBvS,UAAUsT,SAAW,SAAU3U,GAC/C,IAAI2P,EAAQnQ,KAEZ,OADAA,KAAKsU,cAAc7T,KAAKD,GACjB,WAAc,OAAO,IAAA4U,YAAWjF,EAAMmE,cAAjB,CAAgC9T,KAEhE4T,EAAoBvS,UAAUwT,UAAY,WACtC,IAAIA,EAAYrV,KAAKqU,kBAAkBgB,YAEvC,OADAA,GAAY,IAAAlC,UAASkC,GAAaA,EAAUC,QAAUD,IAClCrV,KAAKuV,SAASC,SAEtCpB,EAAoBvS,UAAU4T,SAAW,WACrC,OAAOzV,KAAK0V,YAAc1V,KAAK0V,UAAY1V,KAAK2V,SAASF,YAAczV,KAAK4V,QAAQC,SAAS/B,WAEjGM,EAAoBvS,UAAU4P,IAAM,SAAUqE,EAAQf,EAAStH,GAQ3D,YAPgB,IAAZsH,IAAsBA,GAAU,IAChC,IAAAnI,WAAUkJ,IACV9V,KAAK+V,UAAUtE,IAAIqE,GACnBf,GACA/U,KAAK+V,UAAUhB,UACftH,GACAzN,KAAK+V,UAAUtI,MAAMA,GAClBzN,KAAK+V,UAAUtE,OAE1B2C,EAAoBvS,UAAUmU,iBAAmB,SAAUC,EAAYF,EAAWR,EAAUI,EAAUC,GAClG,IAAIzF,EAAQnQ,KACZA,KAAK+V,UAAYA,EACjB/V,KAAKuV,SAAWA,EAChBvV,KAAK2V,SAAWA,EAChB3V,KAAK4V,QAAUA,EAEfK,EAAW1T,IAAI,0BAA0B,SAAU2T,GAAO,OAAO/F,EAAMmE,cAAcvT,SAAQ,SAAUJ,GAAM,OAAOA,EAAGuV,SACvH,IAAIC,GAAO,IAAAnS,KAAI+R,IAEf,IAAAvB,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,UAAW,OAAQ,SAAU,UAErE,IAAA3B,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,OAAQ,WAAY,UAEzD/B,EApE6B,0ECaxCvU,EAAQ,GAAR,OAAe,qBAAsB,IACrC,IAAIuW,EAAWvW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,OAC7CwW,EAAWxW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,mBAC7CyW,EAAUzW,EAAQ,GAAR,OAAe,mBAAoB,CAAC,mBAC9C0W,EAAY1W,EAAQ,GAAR,OAAe,kBAAmB,CAAC,mBAAoB,iBAAkB,uBACrF2W,EAAW3W,EAAQ,GAAR,OAAe,YAAa,CAAC,iBAAkB,kBAAmB,uBAE7E6U,GADW7U,EAAQ,GAAR,OAAe,mBAAoB,CAAC,cACtC,MAGb,SAAS4W,EAAkBpC,IAEvBK,EAAS1U,KAAK0U,OAAS,IAAI,EAAAgC,UACpBC,cAAgB,IAAI,IAAcjC,EAAOkC,cAAelC,EAAOmC,cAEtEnC,EAAOkC,cAAcE,UAAU,QAAS,MACxCpC,EAAOkC,cAAcE,UAAU,SAAUpD,EAAoB,WAC7DgB,EAAOkC,cAAcE,UAAU,WAAYpD,EAAoB,aAC/DgB,EAAOkC,cAAcE,UAAU,UAAWpD,EAAoB,YAC9DgB,EAAOqC,YAAY/M,WAAWgN,mBAAmB,OAAO,WAExDtC,EAAOuC,WAAW1L,OAAO2L,eAAgB,EACzC,IAAIC,EAAsBzC,EAAO0C,gBAAkB1C,EAAO2C,eAAiB,IAAIjD,EAAoBC,GAMnG,SAAS3T,EAAKqV,EAAWJ,EAAUC,EAASL,EAAUU,EAAY5F,EAAOC,GAIrE,OAHA6G,EAAmBnB,iBAAiBC,EAAYF,EAAWR,EAAUI,EAAUC,UACxElB,EAAe,cACfA,EAAa,KACbA,EAEX,OAXAN,EAAoBK,6BAA6BC,GAEjDA,EAAe,OAAIA,EACnBA,EAAa,KAAIhU,EACjBA,EAAKuM,QAAU,CAAC,YAAa,WAAY,UAAW,WAAY,aAAc,QAAS,kBAOhFyH,EA1BX+B,EAAkBxJ,QAAU,CAAC,qBA4B7B,IAAIqK,EAAiB,SAAUC,GAAe,MAAO,CACjD,oBACA,SAAUC,GACN,IAAIC,EAAUD,EAAK9C,OAAO6C,GAE1B,OADAE,EAAc,KAAI,WAAc,OAAOA,GAChCA,KAKf,SAASC,EAASnH,EAAWxJ,EAAI4Q,GAI7B,GAHA,EAAA5G,SAAA,UAAqBR,EACrB,EAAAQ,SAAA,GAAchK,GAETwM,OAAO1R,UAAUa,eAAeX,KAAKwO,EAAW,YACjD,IACIA,EAAUqH,QAAO,SAAUC,OAE/B,MAAOxS,GACHkL,EAAUuH,WAAa,cAAcrO,KAAKpE,GAASA,EAAMyP,YAKjE6C,EAAUf,cACLlG,MACA/B,KAAI,SAAUW,GAAK,OAAOA,EAAE0E,UAAU+D,eACtCnJ,OAAO,EAAAC,QAAS,IAChBvF,QAAO,SAAUgG,GAAK,MAAkB,aAAXA,EAAEwC,QAC/B/Q,SAAQ,SAAUiX,GAAc,OAAQA,EAAWlG,KAAOvB,EAAU0H,SAASD,EAAWE,UAAW3H,EAAUuH,aAQ/G,SAASK,EAAalC,GACzBA,EAAW1R,QAAO,WACd,EAAA8D,MAAA,wBA9BRqP,EAASzK,QAAU,CAAC,YAAa,KAAM,aA2BvCkL,EAAalL,QAAU,CAAC,cAMxBmJ,EAASrW,SAAS,YAAa0W,GAC/BH,EAAQvW,SAAS,aAAc,CAAC,oBAXL,SAAUqY,GAAY,OAAQA,EAASC,kBAAoB,IAAI,IAAkBD,MAY5G/B,EAAStW,SAAS,cAAeuX,EAAe,eAChDjB,EAAStW,SAAS,qBAAsB,CAAC,oBAAqB,WAAc,OAAO2U,EAAOE,qBAC1FyB,EAAStW,SAAS,oBAAoB,WAAc,OAAO,IAAImQ,KAC/DqG,EAAUxW,SAAS,iBAAkBuX,EAAe,kBACpDf,EAAUxW,SAAS,mBAAoBuX,EAAe,YACtDf,EAAUxW,SAAS,eAAgBuX,EAAe,sBAClDf,EAAUxW,SAAS,SAAU,CAAC,oBAfP,WAAc,OAAO,IAAAe,QAAO4T,EAAOiC,cAAe,CAAEjW,KAAM,WAAc,OAAOgU,EAAOmC,mBAgB7GN,EAAUrW,QAAQ,eAAgB,CAAC,YAAa,SAAUyX,GAAa,OAAOA,EAAUW,QAAQlK,UAChGoI,EAAStW,QAAQ,SAAS,WAAc,OAAOwU,EAAOqC,eACtDP,EAASiB,QAAQ,UAAU,WAAc,OAAO,EAAApP,SAChDmO,EAAS+B,IAAIJ,GACb9B,EAASkC,IAAI,CAAC,qBAAsB,SAAUC,OAC9CjC,EAAUgC,IAAI,CAAC,SAAU,SAAUE,OACnCnC,EAAQiC,IAAI,CAAC,aAAc,SAAUG,OACrCtC,EAASmC,IAAIb,GAEN,IAAIzD,EAAY,SAAU0E,GAO7B,OANaA,EAAIC,YAAYtP,OAAO,EAAAR,UAChB6F,KAAI,SAAU9I,GAC9B,IAAImS,EAAaW,EAAI7K,cAAcjI,GAEnC,MAAO,CAACA,EAAoB,WADX8S,EAAIE,UAAUb,GAAYc,MACJd,EAAWvU,QAAUuU,EAAWrQ,SAE7DiH,OAAO,EAAAmK,WAAY,2JC9GrC,SAASC,EAAeP,GACpB,IAAIQ,EAAW,SAAUxL,EAAOW,EAAQjO,GACpC,OAAOsY,EAAOS,GAAGzL,EAAOW,EAAQjO,IAGpC,OADA8Y,EAASE,WAAY,EACdF,EAaX,SAASG,EAAuBX,GAC5B,IAAIY,EAAiB,SAAU5L,EAAOW,EAAQjO,GAC1C,OAAOsY,EAAOa,SAAS7L,EAAOW,EAAQjO,IAG1C,OADAkZ,EAAeF,WAAY,EACpBE,EAxBXL,EAAe/L,QAAU,CAAC,UAkB1BmM,EAAuBnM,QAAU,CAAC,UAQlC,YAAe,mBAAmB3D,OAAO,UAAW0P,GAAgB1P,OAAO,kBAAmB8P,oKCpB1FG,EAA+B,WAC/B,SAASA,EAAc3C,EAAeC,GAClC7W,KAAK4W,cAAgBA,EACrB5W,KAAK6W,aAAeA,GACpB,IAAArC,uBAAqB,IAAAxQ,KAAIuV,EAAc1X,WAAY7B,MAAM,IAAAgE,KAAIhE,OAgHjE,OArBAuZ,EAAc1X,UAAUiV,UAAY,SAAUtR,EAAMgU,GAChD,OAAOxZ,KAAK4W,cAAcE,UAAUtR,EAAMgU,IAASxZ,MAEvDuZ,EAAc1X,UAAU4L,MAAQ,SAAUjI,EAAMiU,GAQ5C,OAPI,IAAAtG,UAAS3N,GACTiU,EAAajU,EAGbiU,EAAWjU,KAAOA,EAEtBxF,KAAK4W,cAAc8C,SAASD,GACrBzZ,MAOXuZ,EAAc1X,UAAU8X,UAAY,SAAUnZ,GAC1C,OAAOR,KAAK6W,aAAa8C,UAAUnZ,IAEhC+Y,EApHuB,6LCf3B,SAASK,IACZ,IAAIC,EAAkB,KACtB,OAAO,SAAU1R,EAAM2R,GAEnB,OADAD,EAAkBA,GAAmB,EAAA9I,SAAA,cAAuB,oBACrD,CAAC,IAAIgJ,EAAc5R,EAAM2R,EAAMD,KAI9C,IAAIG,EAAY,SAAUxG,EAAMyG,GAAO,OAAOzG,EAAK5E,QAAO,SAAUsL,EAAKrU,GAAO,OAAOqU,IAAO,IAAAtN,WAAUqN,EAAIpU,OAAU,IAY/G,SAASsU,EAAgB1M,GAE5B,IAAKA,EAAM2M,OACP,MAAO,GACX,IAAgKC,EAAW,CAAC,YAAa,WAAY,qBAAsBC,EAA7M,CAAC,mBAAoB,cAAe,WAAY,SAAU,SAAyKlY,OAApJ,CAAC,aAAc,qBAAsB,eAAgB,cAAiHmY,EAAcF,EAASjY,OAAOkY,GAIjS,IAAI,IAAA1N,WAAUa,EAAM+M,QAAUR,EAAUO,EAAa9M,GACjD,MAAM,IAAIgF,MAAM,UAAYhF,EAAMjI,KAAlB,4JAGL+U,EAAYjR,QAAO,SAAUzD,GAAO,OAAO,IAAA+G,WAAUa,EAAM5H,OAAUoN,KAAK,OAEzF,IAAIuH,EAAQ,GAAIC,EAAchN,EAAM+M,OAAS,CAAEE,UAAU,IAAAC,MAAKlN,EAAO8M,IAsBrE,OArBA,IAAAxZ,SAAQ0Z,GAAa,SAAUlP,EAAQ/F,GASnC,GAPAA,EAAOA,GAAQ,YAEX,IAAAsD,UAASyC,KACTA,EAAS,CAAExC,UAAWwC,IAE1BA,GAAS,IAAAzK,QAAO,GAAIyK,GAEhByO,EAAUK,EAAU9O,IAAWyO,EAAUM,EAAa/O,GACtD,MAAM,IAAIkH,MAAM,mBAAqB4H,EAASpH,KAAK,KAAO,UAAYqH,EAAYrH,KAAK,KAAO,mBAAqBzN,EAAO,IAAMiI,EAAMjI,KAAO,KAEjJ+F,EAAO9C,UAAY8C,EAAO9C,WAAa,WACvC8C,EAAOH,MAAQ,MACfG,EAAOxB,SAAW0D,EAClBlC,EAAOqP,MAAQpV,EACf,IAAIqV,EAAa,EAAAC,YAAA,sBAAkCvP,EAAOxB,SAAUwB,EAAOqP,OAC3ErP,EAAOwP,YAAcF,EAAWG,WAChCzP,EAAO0P,qBAAuBJ,EAAWK,oBACzCV,EAAMhV,GAAQ+F,KAEXiP,EAGX,IAAInP,EAAK,EAEL0O,EAA+B,WAC/B,SAASA,EAAc5R,EAAMJ,EAAU7H,GACnC,IAAIiQ,EAAQnQ,KACZA,KAAKmI,KAAOA,EACZnI,KAAK+H,SAAWA,EAChB/H,KAAKE,QAAUA,EACfF,KAAKmb,IAAM9P,IACXrL,KAAKob,QAAS,EACdpb,KAAKgI,YAAc,SAAUvB,EAAQoK,GACjC,OAAOV,EAAMpH,UACPoH,EAAMjQ,QAAQgS,sBAAsBzL,EAAQoK,EAASV,EAAMpH,UAAWoH,EAAMpI,SAASoK,UACrFhC,EAAMc,UAiCpB,OA9BA8I,EAAclY,UAAUwZ,KAAO,WAC3B,IAAIlL,EAAQnQ,KACR+G,EAAK,EAAAgK,SAAA,GACLF,EAAU,IAAI,EAAAzI,eAAepI,KAAKmI,MAClCiG,EAASpO,KAAKmI,KAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,IAAAzN,QAAOoZ,EAAK3L,EAAK+M,eAAiB,IAC1FC,EAAW,CACXtK,SAAUlK,EAAGkJ,KAAKjQ,KAAKE,QAAQ0Q,WAAW5Q,KAAK+H,SAAUqG,EAAQyC,IACjE7P,WAAY+F,EAAGkJ,KAAKjQ,KAAKwb,cAAc3K,KAE3C,OAAO9J,EAAG0U,IAAIF,GAAUxQ,MAAK,SAAU2Q,GAInC,OAHA,EAAArT,MAAA,sBAA4B,SAAU8H,GACtCA,EAAMnP,WAAa0a,EAAQ1a,YAC3B,IAAAF,QAAOqP,EAAOuL,EAAQzK,UACfd,MAQf4J,EAAclY,UAAU2Z,cAAgB,SAAU3K,GAC9C,IAAI9Q,EAAWC,KAAK+H,SAAS4T,mBAC7B,KAAK,IAAAC,cAAa7b,GACd,OAAOC,KAAK+H,SAAS/G,WACzB,IAAI8Q,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAEnBkJ,EA5CuB,wKC9C9B8B,EAAmC,WAEnC,SAASA,EAAiCnH,GACtC1U,KAAK0U,OAASA,EA2KlB,OAzKAmH,EAAkBC,kBAAoB,SAAUpH,EAAQqH,GACpD,OAAO,SAAUC,GAAS,OAAO,EAAAjL,SAAA,iBAA0BgL,EAAS,KAAM,CAAEE,OAAQD,EAAOE,aAAcxH,EAAO4D,QAAQlK,WAG5HyN,EAAkBha,UAAUnB,KAAO,WAC/B,IAAIuW,EAAajX,KAAK0U,OAAOuC,WAI7B,OAHAjX,KAAK0U,OAAOyH,UAAUC,QAAO,GACxBnF,EAAWoF,mBACZpF,EAAWqF,SACRtc,KAAK0U,OAAOyH,WAiCvBN,EAAkBha,UAAU0a,KAAO,SAAUC,GACzC,IAAIrM,EAAQnQ,KACZ,KAAK,IAAAoN,YAAWoP,GACZ,MAAM,IAAI/J,MAAM,6BACpB,IACI8J,EAAO,IAAI,EAAAE,aADH,WAAc,OAAOD,EAAO,EAAAzL,SAAA,UAAoBZ,EAAMuE,OAAO0C,mBACvC,EAAAsF,UAElC,OADA1c,KAAK0U,OAAOuC,WAAW0F,MAAMJ,KAAKA,GAC3Bvc,MA4BX6b,EAAkBha,UAAU+a,UAAY,SAAUL,GAC9C,IAAIpM,EAAQnQ,KACR6c,EAAW7c,KAAK0U,OAAOuC,WAAW0F,MACtC,IAAI,IAAA7T,UAASyT,GACTM,EAASD,UAAUL,OAElB,MAAI,IAAAnP,YAAWmP,GAIhB,MAAM,IAAI9J,MAAM,uCAHhBoK,EAASD,WAAU,WAAc,OAAOL,EAAK,EAAAxL,SAAA,UAAoBZ,EAAMuE,OAAO0C,oBAKlF,OAAOpX,MAwCX6b,EAAkBha,UAAUoO,KAAO,SAAU6M,EAAMf,GAK/C,QAJI,IAAA/J,SAAQ+J,KAAY,IAAA3O,YAAW2O,MAC/BA,EAAUF,EAAkBC,kBAAkB9b,KAAK0U,OAAQqH,IAE/D/b,KAAK0U,OAAOuC,WAAW0F,MAAM1M,KAAK6M,EAAMf,GACjC/b,MAgCX6b,EAAkBha,UAAUkb,eAAiB,SAAU9Q,GACnDjM,KAAK0U,OAAOuC,WAAW8F,eAAe9Q,IAEnC4P,EA9K2B,iJCKtC,UAAe,mBAAmB9b,SAAS,iBApB3C,WACI,IAAIid,GAAkB,EACtBhd,KAAKgd,gBAAkB,WACnBA,GAAkB,GAEtBhd,KAAKU,KAAO,CACR,gBACA,WACA,SAAUuc,EAAezZ,GACrB,OAAIwZ,EACOC,EAEJ,SAAUvV,GACb,OAAOlE,GAAS,WACZkE,EAAS,GAAGwV,mBACb,GAAG,8nBClBlBC,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GAaAK,EAAwB,iBAATlQ,MAAqBA,KAAKA,OAASA,MAAQA,MAC9C,iBAAX,EAAAmQ,GAAuB,EAAAA,EAAOC,SAAW,EAAAD,GAAU,EAAAA,QAC3D,EACAhe,EAAU+d,EAAK/d,SAAW,GACnBke,EAAWle,EAAQke,UAAYC,KAAK/W,MAAM3D,KAAK0a,MAC/CC,EAASpe,EAAQoe,QAAUD,KAAKE,UAAU5a,KAAK0a,MAC/Cjd,EAAUlB,EAAQkB,SAqc7B,SAAkBkZ,EAAKnP,EAAIqF,GACvB,IAAI,QAAQ8J,GACR,OAAOA,EAAIlZ,QAAQ+J,EAAIqF,GAC3BoD,OAAOC,KAAKyG,GAAKlZ,SAAQ,SAAU8E,GAAO,OAAOiF,EAAGmP,EAAIpU,GAAMA,OAvcvD/E,EAASyS,OAAO3Q,QAycpB,SAAiBub,GACpB,IAAK,IAAId,EAAI,EAAGA,EAAIrb,UAAUoN,OAAQiO,IAAK,CACvC,IAAIpD,EAAMjY,UAAUqb,GACpB,GAAKpD,EAGL,IADA,IAAIzG,EAAOD,OAAOC,KAAKyG,GACdyD,EAAI,EAAGA,EAAIlK,EAAKpE,OAAQsO,IAC7BS,EAAM3K,EAAKkK,IAAMzD,EAAIzG,EAAKkK,IAGlC,OAAOS,GAldAhP,EAAStP,EAAQsP,QAod5B,SAASiP,EAAQC,EAAIC,GACjB,GAAID,IAAOC,EACP,OAAO,EACX,GAAW,OAAPD,GAAsB,OAAPC,EACf,OAAO,EACX,GAAID,GAAOA,GAAMC,GAAOA,EACpB,OAAO,EACX,IAAIC,SAAYF,EAChB,GAAIE,WAD4BD,GACR,WAAPC,EACb,OAAO,EACX,IAyBeC,EAAIC,EAzBfC,EAAM,CAACL,EAAIC,GACf,IAAI,QAAI,KAAJ,CAAaI,GACb,OAuBeD,EAvBMH,GAuBVE,EAvBMH,GAwBdjP,SAAWqP,EAAGrP,QAEduP,EAAYH,EAAIC,GAAI7P,QAAO,SAAUgQ,EAAGC,GAAK,OAAOD,GAAKR,EAAQS,EAAE,GAAIA,EAAE,OAAQ,GAzBxF,IAAI,QAAI,KAAJ,CAAYH,GACZ,OAAOL,EAAGS,YAAcR,EAAGQ,UAC/B,IAAI,QAAI,KAAJ,CAAcJ,GACd,OAAOL,EAAGvJ,aAAewJ,EAAGxJ,WAChC,IAAI,QAAI,KAAJ,CAAgB4J,GAChB,OAAO,EAEX,GADiB,CAAC,KAAY,KAAS,KAAQ,MAChC/P,IAAI,MAAKC,QAAO,SAAUgQ,EAAGje,GAAM,OAAOie,KAAOje,EAAG+d,MAAS,GACxE,OAAO,EACX,IAAIlL,EAAO,GAEX,IAAK,IAAI3N,KAAOwY,EAAI,CAChB,IAAKD,EAAQC,EAAGxY,GAAMyY,EAAGzY,IACrB,OAAO,EACX2N,EAAK3N,IAAO,EAEhB,IAAK,IAAIA,KAAOyY,EACZ,IAAK9K,EAAK3N,GACN,OAAO,EAEf,OAAO,GApfJ,SAAS6W,EAASpN,GACrB,OAAOA,EAEJ,SAASrH,KAyDT,SAASuM,EAAqBuK,EAAQ1Y,EAAQ/C,EAAM0b,EAASC,QAC/C,IAAbA,IAAuBA,GAAW,GACtC,IAAIC,EAAe,SAAUC,GAAU,OAAOJ,IAASI,GAAQ7b,KAAKA,MAQpE,OADA0b,EAAUA,GAAWzL,OAAOC,KAAKuL,MAClBnQ,QAAO,SAAUsL,EAAK1U,GAPd,IAAU2Z,EAS7B,OADAjF,EAAI1U,GAAQyZ,GARiBE,EAQW3Z,EAPjC,WAEH,OADAa,EAAO8Y,GAAUD,EAAaC,GACvB9Y,EAAO8Y,GAAQhd,MAAM,KAAMH,aAKUkd,EAAa1Z,GACtD0U,IACR7T,GAMA,IAAI+Y,EAAU,SAAUhF,EAAQiF,GAAS,OAAOve,EAAOyS,OAAO/R,OAAO4Y,GAASiF,IAE1EC,GAAU,SACd,SAAkBC,EAAOtF,GAC5B,OAA+B,IAAxBsF,EAAMrR,QAAQ+L,MAMd7E,GAAa,SACjB,SAAqBmK,EAAOtF,GAC/B,IAAIhL,EAAMsQ,EAAMrR,QAAQ+L,GAGxB,OAFIhL,GAAO,GACPsQ,EAAMC,OAAOvQ,EAAK,GACfsQ,KAGAE,GAAS,SACb,SAAiBC,EAAK1b,GACzB,OAAO0b,EAAIjf,KAAKuD,GAAMA,KAGf2b,EAAW,SAAUC,GAC5B,OAAOA,EAAU9d,QAAQf,SAAQ,SAAUJ,GACzB,mBAAPA,GAAqBA,IAC5ByU,EAAWwK,EAAWjf,OAQvB,SAASV,EAASW,GAErB,IADA,IAAIif,EAAe,GACVC,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCD,EAAaC,EAAK,GAAK9d,UAAU8d,GAErC,IAAIC,EAAcjf,EAAOqB,WAAM,EAAQgb,EAAe,CAAC,IAAK0C,EAAaG,YACzE,OAAOlf,EAAOif,EAAapF,EAAK/Z,GAAQ,GAAI2S,OAAOC,KAAKuM,KAGrD,IAAIE,EAAS,SAAUC,EAAMC,GAAQ,OAAOrf,EAAOof,EAAMC,IAQzD,SAASC,EAAUC,EAAOC,GAC7B,IAAInY,EAAO,GAEX,IAAK,IAAIoY,KAAKF,EAAMlY,KAAM,CACtB,GAAIkY,EAAMlY,KAAKoY,KAAOD,EAAOnY,KAAKoY,GAC9B,MACJpY,EAAK1H,KAAK4f,EAAMlY,KAAKoY,IAEzB,OAAOpY,EAaJ,SAASwS,EAAKV,EAAKuG,GACtB,IAAIC,EAAU,GACd,IAAK,IAAIC,KAASzG,GACoB,IAA9BuG,EAAUtS,QAAQwS,KAClBD,EAAQC,GAASzG,EAAIyG,IAG7B,OAAOD,EAcJ,SAASE,EAAK1G,EAAKuG,GACtB,OAAOjN,OAAOC,KAAKyG,GACd3Q,QAAO,QAAIgW,EAAQkB,KACnB5R,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,GAAOoU,EAAIpU,GAAOqU,IAAS,IASvE,SAAS5Q,EAAOsX,EAAYpgB,GAC/B,IAAIkf,GAAM,QAAQkB,GAAata,EAASoZ,EAAM,GAAK,GAC/CmB,EAASnB,EAAM,SAAUpQ,GAAK,OAAOhJ,EAAO7F,KAAK6O,IAAQ,SAAUA,EAAGzJ,GAAO,OAAQS,EAAOT,GAAOyJ,GAKvG,OAJAvO,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B7c,EAAS2f,EAAM9C,IACfwD,EAAOV,EAAM9C,MAEd/W,EAGJ,SAASwa,EAAKF,EAAYpgB,GAC7B,IAAI8F,EAOJ,OANAvF,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B/W,GAEA9F,EAAS2f,EAAM9C,KACf/W,EAAS6Z,MAEV7Z,EAGJ,IAAIya,EAASpS,EAEb,SAASA,EAAIiS,EAAYpgB,EAAU6F,GAGtC,OAFAA,EAASA,KAAW,QAAQua,GAAc,GAAK,IAC/C7f,EAAQ6f,GAAY,SAAUT,EAAM9C,GAAK,OAAQhX,EAAOgX,GAAK7c,EAAS2f,EAAM9C,MACrEhX,EAYJ,IAAI2a,EAAS,SAAU/G,GAAO,OAAO1G,OAAOC,KAAKyG,GAAKtL,KAAI,SAAU9I,GAAO,OAAOoU,EAAIpU,OAclFob,EAAW,SAAUf,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAclDC,EAAW,SAAUjB,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAUlDrS,EAAU,SAAUqR,EAAMgB,GAAQ,OAAOhB,EAAK9d,OAAO8e,IAWrDE,EAAW,SAAUlB,EAAMgB,GAClC,OAAO,QAAQA,GAAQhB,EAAK9d,OAAO8e,EAAKtS,OAAOwS,EAAU,KAAOC,EAAMnB,EAAMgB,IAMzE,SAASG,EAAM3B,EAAKzF,GAEvB,OADAyF,EAAIjf,KAAKwZ,GACFyF,EAGJ,IAAI4B,EAAQ,SAAUpH,EAAKqH,GAAS,OAAQjC,EAAQpF,EAAKqH,GAASrH,EAAMmH,EAAMnH,EAAKqH,IAW/EC,EAAS,SAAU9B,GAAO,OAAOA,EAAI9Q,OAAOC,EAAS,KAyBrD4S,EAkBJ,SAAkBC,EAAgBC,GAErC,YADe,IAAXA,IAAqBA,EAAS,kBAC3B,SAAU1H,GACb,IAAI3T,EAASob,EAAezH,GAC5B,IAAK3T,EACD,MAAM,IAAImM,OAAM,QAAWkP,GAAUA,EAAO1H,GAAO0H,GAEvD,OAAOrb,IA2BR,SAASqY,IAEZ,IADA,IAAIhd,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,GAAoB,IAAhBne,EAAKyN,OACL,MAAO,GAwBX,IAvBA,IAAIwS,EAAcjgB,EAAKiN,QAAO,SAAUiT,EAAKnC,GAAO,OAAOoC,KAAKD,IAAInC,EAAItQ,OAAQyS,KAAS,kBACrFvb,EAAS,GACTyb,EAAU,SAAU1E,GAGpB,OAAQ1b,EAAKyN,QACT,KAAK,EACD9I,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,KACrB,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACjC,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KAC7C,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACzD,MACJ,QACI/W,EAAO7F,KAAKkB,EAAKgN,KAAI,SAAU4Q,GAAS,OAAOA,EAAMlC,SAIxDA,EAAI,EAAGA,EAAIuE,EAAavE,IAC7B0E,EAAQ1E,GAEZ,OAAO/W,EAsBJ,SAASyS,EAAWmH,EAAM8B,GAC7B,IAAInc,EAAKrB,EAGT,IAFI,QAAQwd,KACRnc,EAAMmc,EAAY,GAAIxd,EAAQwd,EAAY,MACzC,QAASnc,GACV,MAAM,IAAI4M,MAAM,oCAEpB,OADAyN,EAAKra,GAAOrB,EACL0b,EAGJ,SAAS1S,EAAKkS,GACjB,OAAQA,EAAItQ,QAAUsQ,EAAIA,EAAItQ,OAAS,SAAO+E,EAK3C,SAAS8N,EAAKC,EAAKC,GAKtB,OAJIA,GACA5O,OAAOC,KAAK2O,GAAMphB,SAAQ,SAAU8E,GAAO,cAAcsc,EAAKtc,MAC7Dsc,IACDA,EAAO,IACJrhB,EAAOqhB,EAAMD,GA6DjB,IAAIE,EAA2B,SAAU3e,GAAW,OAAOA,EAAQ4e,OAAM,SAAUC,GAAK,OAAO,MAAS7e,GACpG8e,EAAkB,SAAUld,GAAS,OAAO+c,EAAyB,cAAmB/c,qHCxhBnG,IAGWmd,EAAW,SAAU/K,EAASgL,GACrC,OAAOA,EAAQ7T,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,IAJtC6c,EAIoDjL,EAAU,IAAM5R,EAAM,KAJzD,WACpC,MAAM,IAAI4M,MAAM,yBAA2BiQ,EAAS,kEAGiDxI,EAJ5F,IAAUwI,IAI2F,KAE9G3R,EAAW,CACXhK,QAAIoN,EACJ5D,eAAW4D,mGCyCf,IAAIwO,EAAsB,WACtB,SAASA,EAAKC,GACV5iB,KAAK4iB,KAAOA,EACZ5iB,KAAK6iB,KAAOD,EAAKE,MAAM,KACvB,IAAIC,EAAe/iB,KAAK4iB,KACnBE,MAAM,KACNnU,KAAI,SAAUqU,GACf,MAAY,OAARA,EACO,qBACC,MAARA,EACO,WACJ,MAAQA,KAEd/P,KAAK,IACVjT,KAAKijB,OAAS,IAAI9Z,OAAO,IAAM4Z,EAAe,KAalD,OAVAJ,EAAKzJ,GAAK,SAAU0J,GAChB,QAAS,SAASnZ,KAAKmZ,IAG3BD,EAAKxR,WAAa,SAAUyR,GACxB,OAAOD,EAAKzJ,GAAG0J,GAAQ,IAAID,EAAKC,GAAQ,MAE5CD,EAAK9gB,UAAUqhB,QAAU,SAAU1d,GAC/B,OAAOxF,KAAKijB,OAAOE,KAAK,IAAM3d,IAE3Bmd,EA3Bc,+MC1CzB,IAAIxF,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GA2CJ,SAAS6F,EAAMziB,GAClB,OAAO,SAAS0iB,IACZ,GAAIrhB,UAAUoN,QAAUzO,EAAGyO,OACvB,OAAOzO,EAAGwB,MAAMnC,KAAMgC,WAE1B,IAAIL,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtC,OAAOqhB,EAAQ/f,KAAKnB,MAAMkhB,EAASlG,EAAe,CAACnd,MAAO2B,KAS3D,SAAS2hB,IACZ,IAAI3hB,EAAOK,UACPuhB,EAAQ5hB,EAAKyN,OAAS,EAC1B,OAAO,WAEH,IADA,IAAIiO,EAAIkG,EAAOjd,EAAS3E,EAAK4hB,GAAOphB,MAAMnC,KAAMgC,WACzCqb,KACH/W,EAAS3E,EAAK0b,GAAGtb,KAAK/B,KAAMsG,GAChC,OAAOA,GASR,SAASkd,IAEZ,IADA,IAAIC,EAAQ,GACH3D,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpC2D,EAAM3D,GAAM9d,UAAU8d,GAE1B,OAAOwD,EAAQnhB,MAAM,KAAM,GAAGL,MAAMC,KAAKC,WAAWge,WAQjD,IAAI0D,EAAO,SAAUle,GAAQ,OAAO,SAAUyU,GAAO,OAAOA,GAAOA,EAAIzU,KAQnEme,EAASP,GAAM,SAAU5d,EAAMoe,EAAM3J,GAAO,OAAOA,GAAOA,EAAIzU,KAAUoe,KASxE3c,EAAQ,SAAUzB,GAAQ,OAAOge,EAAKrhB,MAAM,KAAMqD,EAAKsd,MAAM,KAAKnU,IAAI+U,KAKtEG,EAAM,SAAUljB,GAAM,OAAO,WAEpC,IADA,IAAIgB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAQnf,EAAGwB,MAAM,KAAMR,KAMpB,SAASmiB,EAAIC,EAAKC,GACrB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IAOjD,SAASsiB,EAAGF,EAAKC,GACpB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IASjD,IAAI8Z,EAAM,SAAUsI,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4U,EAAM,SAAUH,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4J,EAAK,SAAUiL,GAAQ,OAAO,SAAUlK,GAC/C,OAAe,MAAPA,GAAeA,EAAImK,cAAgBD,GAASlK,aAAekK,IAK5DngB,EAAM,SAAUqgB,GAAK,OAAO,WAAc,OAAOA,IA4CrD,SAASC,EAAQC,GACpB,OAAO,SAAUjV,GACb,IAAK,IAAI+N,EAAI,EAAGA,EAAIkH,EAAOnV,OAAQiO,IAC/B,GAAIkH,EAAOlH,GAAG,GAAG/N,GACb,OAAOiV,EAAOlH,GAAG,GAAG/N,uRCjNhCkV,EAAQjR,OAAO1R,UAAUiT,SACzB2P,EAAM,SAAU5F,GAAK,OAAO,SAAUvP,GAAK,cAAcA,IAAMuP,IACxD6F,EAAcD,EAAI,aAClB7X,GAAY,QAAI8X,GAChBC,EAAS,SAAUC,GAAK,OAAa,OAANA,GAC/BC,GAAoB,IAAAZ,IAAGU,EAAQD,GAC/BtX,EAAaqX,EAAI,YACjBK,EAAWL,EAAI,UACf3b,EAAW2b,EAAI,UACftR,EAAW,SAAU7D,GAAK,OAAa,OAANA,GAA2B,iBAANA,GACtD0C,EAAUpQ,MAAMoQ,QAChB+S,EAAS,SAAWzV,GAAK,MAAyB,kBAAlBkV,EAAMziB,KAAKuN,IAC3C0V,EAAW,SAAW1V,GAAK,MAAyB,oBAAlBkV,EAAMziB,KAAKuN,IAOjD,SAASsM,EAAa5X,GACzB,GAAIgO,EAAQhO,IAAQA,EAAIoL,OAAQ,CAC5B,IAAI6V,EAAOjhB,EAAIlC,MAAM,GAAI,GAAI0L,EAAOxJ,EAAIlC,OAAO,GAC/C,QAASmjB,EAAK3b,QAAO,QAAIR,IAAWsG,QAAU5B,EAAKlE,QAAO,QAAI8D,IAAagC,QAE/E,OAAOhC,EAAWpJ,GAOf,IAAIkhB,GAAY,QAAI/R,GAAU,SAAK,QAAK,QAAS/F,uKCvCpD+X,EAAuB,WACvB,SAASA,EAAMC,EAAQC,QACJ,IAAXD,IAAqBA,EAAS,SACnB,IAAXC,IAAqBA,EAAS,MAClCrlB,KAAKolB,OAASA,EACdplB,KAAKqlB,OAASA,EACdrlB,KAAKslB,gBAAkB,GACvBtlB,KAAKulB,SAAU,QAAOvlB,KAAKslB,iBAqC/B,OAnCAH,EAAMtjB,UAAU2jB,QAAU,SAAUrF,GAChC,IAAIsF,EAAQzlB,KAAKolB,OAIjB,OAHAK,EAAMhlB,KAAK0f,GACPngB,KAAKqlB,QAAUI,EAAMrW,OAASpP,KAAKqlB,QACnCrlB,KAAK0lB,QACFvF,GAEXgF,EAAMtjB,UAAU6jB,MAAQ,WACpB,IAAIvF,EAAOngB,KAAKolB,OAAOnjB,QAEvB,OADAjC,KAAKslB,gBAAgBvkB,SAAQ,SAAUJ,GAAM,OAAOA,EAAGwf,MAChDA,GAEXgF,EAAMtjB,UAAU8jB,QAAU,WACtB,GAAI3lB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO5F,OAAO,EAAG,GAAG,IAExC2F,EAAMtjB,UAAUgkB,MAAQ,WACpB,IAAIC,EAAU9lB,KAAKolB,OAEnB,OADAplB,KAAKolB,OAAS,GACPU,GAEXX,EAAMtjB,UAAU+jB,KAAO,WACnB,OAAO5lB,KAAKolB,OAAOhW,QAEvB+V,EAAMtjB,UAAUgL,OAAS,SAAUsT,GAC/B,IAAIlR,EAAMjP,KAAKolB,OAAOlX,QAAQiS,GAC9B,OAAOlR,GAAO,GAAKjP,KAAKolB,OAAO5F,OAAOvQ,EAAK,GAAG,IAElDkW,EAAMtjB,UAAUkkB,SAAW,WACvB,OAAO/lB,KAAKolB,OAAOplB,KAAKolB,OAAOhW,OAAS,IAE5C+V,EAAMtjB,UAAUmkB,SAAW,WACvB,GAAIhmB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO,IAEpBD,EA5Ce,4KCKtBc,EAAkB,CAAEC,IAAK,KAAM7gB,MAAO,KAAM8gB,MAAO,MA4B5CC,EAXyB,oBAAbC,UAA4BA,SAASC,cAA0C,IAA1BD,SAASC,aAEtEC,QAAUA,OAAOC,QAlBhC,SAAoBA,GAChB,IAAIC,EAAQ,SAAU9lB,GAAM,OAAO+lB,SAAS7kB,UAAUyB,KAAKvB,KAAKpB,EAAI6lB,IACpE,MAAO,CACHN,IAAKO,EAAMD,EAAQN,KACnB7gB,MAAOohB,EAAMD,EAAQN,KACrBC,MAAOM,EAAMD,EAAQN,MAaaS,CAAWJ,OAAOC,SAAWP,EAEzDO,QAAQL,OAAUK,QAAQnhB,MAIzBmhB,QAhBf,SAAyBA,GACrB,IAAIN,EAAMM,EAAQN,IAAI5iB,KAAKkjB,GAG3B,MAAO,CAAEN,IAAKA,EAAK7gB,MAFPmhB,EAAQnhB,MAAQmhB,EAAQnhB,MAAM/B,KAAKkjB,GAAWN,EAEzBC,MADrBK,EAAQL,MAAQK,EAAQL,MAAM7iB,KAAKkjB,GAAWN,GAU/CU,CAAgBJ,ieCRxB,SAASK,EAAUC,EAAK9V,GAC3B,OAAIA,EAAI5B,QAAU0X,EACP9V,EACJA,EAAI+V,OAAO,EAAGD,EAAM,GAAK,MAW7B,SAASE,EAAU5X,EAAQ4B,GAC9B,KAAOA,EAAI5B,OAASA,GAChB4B,GAAO,IACX,OAAOA,EAEJ,SAAS/H,EAAYqJ,GACxB,OAAOA,EACFyC,QAAQ,YAAY,SAAUkS,GAAM,OAAOA,EAAGC,iBAC9CnS,QAAQ,YAAY,SAAUkS,GAAM,MAAO,IAAMA,EAAGC,iBAEtD,SAASC,EAAiBxmB,GAC7B,IAAIymB,EAAQC,EAAW1mB,GACnB2mB,EAAqBF,EAAMpL,MAAM,8BACjCwI,EAAQ8C,EAAqBA,EAAmB,GAAKF,EACrDjI,EAASxe,EAAS,MAAK,GAC3B,OAAIwe,GAAUqF,EAAMxI,MAAM,eACf,YAAcmD,EAASqF,EAAMuC,OAAO,GAExCvC,EAEJ,SAAS6C,EAAW1mB,GACvB,IAAI4mB,GAAM,QAAQ5mB,GAAMA,EAAGmB,OAAO,GAAG,GAAKnB,EAC1C,OAAQ4mB,GAAOA,EAAIzS,YAAe,YAEtC,IAAI0S,EAAc,uBAIdC,GAAmB,QAAQ,CAC3B,CAAC,MAAa,QAAI,cAClB,CAAC,MAAQ,QAAI,SACb,CAAC,MAAW,QAAI,cAChB,CAACD,EAAa,SAAUlY,GAAK,OAAOA,EAAEoY,qBAAqB5S,aAC3D,CARc,SAAUmF,GACxB,OAAO,QAASA,MAAS,QAAQA,IAAQA,EAAImK,cAAgB7Q,SAAU,QAAW0G,EAAInF,WAOxE,SAAUxF,GAAK,OAAOA,EAAEwF,aACtC,CAAC,KAAcqS,GACf,EAAC,SAAI,GAAO,QAET,SAASjJ,EAAU0G,GACtB,IAAI+C,EAAO,GACX,SAASC,EAAOpjB,GACZ,IAAI,QAASA,GAAQ,CACjB,IAA6B,IAAzBmjB,EAAKzZ,QAAQ1J,GACb,MAAO,iBACXmjB,EAAKlnB,KAAK+D,GAEd,OAAOijB,EAAiBjjB,GAE5B,OAAI,QAAYogB,GAILgD,EAAOhD,GAEX5G,KAAKE,UAAU0G,GAAG,SAAU/e,EAAKrB,GAAS,OAAOojB,EAAOpjB,MAAWuQ,QAAQ,OAAQ,KAGvF,IAAI8S,EAAoB,SAAUC,GAAQ,OAAO,SAAU9W,GAC9D,IAAKA,EACD,MAAO,CAAC,GAAI,IAChB,IAAI/B,EAAM+B,EAAI9C,QAAQ4Z,GACtB,OAAa,IAAT7Y,EACO,CAAC+B,EAAK,IACV,CAACA,EAAI+V,OAAO,EAAG9X,GAAM+B,EAAI+V,OAAO9X,EAAM,MAGtC8Y,EAAuB,SAAU/W,GAAO,OAAOA,EAAI+D,QAAQ,WAAY,KACvEiT,EAAYH,EAAkB,KAC9BI,EAAaJ,EAAkB,KAC/BK,EAAaL,EAAkB,KAC/BM,EAAc,SAAUnX,GAAO,OAAQA,EAAMA,EAAI+D,QAAQ,KAAM,IAAM,IAWzE,SAASqT,EAAaC,GACzB,IAAIC,EAAK,IAAInf,OAAO,IAAMkf,EAAQ,IAAK,KACvC,OAAO,SAAUrX,GAAO,OAAOA,EAAI8R,MAAMwF,GAAIhf,OAAO,OAcjD,SAASif,EAAerO,EAAK5K,GAChC,OAAI,SAAS,QAAK4K,MAAS,QAAS5K,GACzB4K,EAAIpY,MAAM,GAAI,GAAGM,QAAO,QAAK8X,GAAO5K,IACxC,QAAM4K,EAAK5K,0GCpElBkZ,iQA3BJ,SAASC,EAAaC,GAClB,IAAKA,EACD,MAAO,oBACX,IAAIjb,EAAQib,EAAOC,gBAAkBD,EAAOC,gBAAgBnjB,MAAQ,SAAW,SAC/E,MAAO,YAAckjB,EAAOrd,GAAK,IAAMqd,EAAOtd,MAAQ,IAAMsd,EAAOpd,IAAM,KAAOod,EAAOljB,KAAO,IAAMiI,EAAQ,KAOhH,SAASmb,EAAchW,GACnB,OAAO,QAASA,GAAS4V,EAAS5V,GAAS4V,EAASA,EAAS5V,KAgBjE,SAAW4V,GACPA,EAASA,EAAkB,QAAI,GAAK,UACpCA,EAASA,EAAqB,WAAI,GAAK,aACvCA,EAASA,EAAe,KAAI,GAAK,OACjCA,EAASA,EAAiB,OAAI,GAAK,SACnCA,EAASA,EAAqB,WAAI,GAAK,aAL3C,CAMGA,IAAaA,EAAW,KAE3B,IAAIK,GAAO,QAAM,OACbC,GAAO,QAAM,cACbC,EAAW,SAAUnZ,GAAS,MAAO,eAAiBiZ,EAAKjZ,GAAS,IAAMkZ,EAAKlZ,IA6J/EvH,EAAQ,IAzJe,WAEvB,SAAS2gB,IAELhpB,KAAKipB,SAAW,GAChBjpB,KAAKkpB,mBAAqB,EAwI9B,OArIAF,EAAMnnB,UAAUsnB,KAAO,SAAU7T,EAAS8T,GACtC,IAAIjZ,EAAQnQ,KACPopB,EAAWha,SACZga,EAAa7V,OAAOC,KAAKgV,GACpB7Z,KAAI,SAAU6O,GAAK,OAAO6L,SAAS7L,EAAG,OACtClU,QAAO,SAAUkU,GAAK,OAAQ8L,MAAM9L,MACpC7O,KAAI,SAAU9I,GAAO,OAAO2iB,EAAS3iB,OAE9CujB,EAAWza,IAAIia,GAAe7nB,SAAQ,SAAUwoB,GAAY,OAAQpZ,EAAM8Y,SAASM,GAAYjU,MAEnG0T,EAAMnnB,UAAU2nB,OAAS,WAErB,IADA,IAAIJ,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAMC,IAEpBJ,EAAMnnB,UAAU4nB,QAAU,WAEtB,IADA,IAAIL,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAOC,IAWrBJ,EAAMnnB,UAAUyT,QAAU,SAAUiU,GAChC,QAASvpB,KAAKipB,SAASL,EAAcW,KAGzCP,EAAMnnB,UAAU6nB,qBAAuB,SAAU9Z,GACxC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAU+nB,uBAAyB,SAAUha,GAC1C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAUgoB,oBAAsB,SAAUC,EAAMla,EAAOzP,GACzD,GAAKH,KAAKsV,QAAQkT,EAASuB,MAA3B,CAEA,IAAIxpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAiBskB,EAAKE,eAAexpB,UAC1N,QAAgBuoB,EAASnZ,GAAS,eAAiBrP,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,MAG9GwjB,EAAMnnB,UAAUooB,gBAAkB,SAAUC,EAAYta,EAAOua,GACtDnqB,KAAKsV,QAAQkT,EAASuB,OAE3B,QAAgBhB,EAASnZ,GAAS,0BAA2B,QAAU,KAAK,QAAUsa,MAG1FlB,EAAMnnB,UAAUuoB,iBAAmB,SAAUjiB,EAAM8H,EAAML,GAChD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,uBAAyBzH,EAAO,KAAO8H,EAAO,MAGpF+Y,EAAMnnB,UAAUyoB,wBAA0B,SAAUtS,EAAYpI,GACvD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,gCAAkCoI,EAAa,SAAU,QAAU,KAAK,QAAUA,EAAWrQ,SAGnIqhB,EAAMnnB,UAAU0oB,WAAa,SAAUC,EAAQ5a,GACtC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,aAAe4a,IAG3FxB,EAAMnnB,UAAU4oB,aAAe,SAAUC,EAAY9a,GAC5C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,kBAAoB8a,EAAWllB,OAG3GwjB,EAAMnnB,UAAU8oB,iBAAmB,SAAUpqB,EAAOqqB,EAAUvL,QAC5C,IAAVA,IAAoBA,EAAQ,IAC3Brf,KAAKsV,QAAQkT,EAASqC,SAE3B,QAAgB,aAAc,QAAU,GAAItqB,GAAS,IAAMkoB,EAAamC,GAAYvL,IAGxF2J,EAAMnnB,UAAUipB,yBAA2B,SAAUF,EAAU/Z,GACtD7Q,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,WAAYC,EAAU,kCAAoC/Z,EAAU,MAG9FmY,EAAMnnB,UAAUkpB,gBAAkB,SAAUH,EAAUpjB,GAC7CxH,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,OAAQC,EAAU,WAAY,QAAU,IAAKpjB,KAGvEwhB,EAAMnnB,UAAUmpB,cAAgB,SAAUC,GACtC,GAAKjrB,KAAKsV,QAAQkT,EAAS0C,YAA3B,CAEA,IAAIC,EAAY,uBAEZC,EAAUH,EACTtc,KAAI,SAAU0c,GACf,IAAIC,EACA7kB,EAAS4kB,EAAG5kB,OAAQiE,EAAa2gB,EAAG3gB,WACpC6gB,EAAM9kB,GAAUA,EAAO6E,IACvBzD,EAAM6C,GAAcA,EAAW3C,SAASgC,SAASvE,KAAO,MAAQkF,EAAW3C,SAAS6S,MAAQ,IAChG,OAAO0Q,EAAK,IAAOH,GAAaI,EAAKD,EAPzB,iCAOyCzjB,EAAKyjB,KAEzDE,MAAK,SAAU/N,EAAGmB,GAAK,OAAQnB,EAAE0N,IAAc,IAAIM,cAAc7M,EAAEuM,IAAc,OACtF,UAAkBC,KAGtBpC,EAAMnnB,UAAU6pB,sBAAwB,SAAUnrB,EAAOmK,GAChD1K,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAzK1B,SAAUmK,GAC7B,IAAIoP,EAAOpP,EAAW3C,SAClB0F,EAAQqM,EAAK/P,SAASvE,MAAQ,SAClC,MAAO,SAAWkF,EAAWyQ,IAAM,UAAY1N,EAAQ,8BAAgCqM,EAAKiB,YAAc,IAAMjB,EAAKmB,qBAAuB,IAsKzF0Q,CAAiBjhB,KAGpEse,EAAMnnB,UAAU+pB,4BAA8B,SAAUrrB,EAAOqqB,GACtD5qB,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAAMkoB,EAAamC,KAEzD5B,EA7Ie,oOCxEtB6C,EAAiC,WACjC,SAASA,IAML7rB,KAAKoO,OAAS,IAAI,IAElBpO,KAAK8rB,yBAA2B,EAEhC9rB,KAAK+rB,kBAAoB,IAAI,IAAM,GAAI,GAEvC/rB,KAAKgsB,sBAAwB,IAAI,IAAM,GAAI,GAO/C,OALAH,EAAgBhqB,UAAUqT,QAAU,WAChClV,KAAK+rB,kBAAkBlG,QACvB7lB,KAAKgsB,sBAAsBnG,QAC3B7lB,KAAKisB,WAAa,MAEfJ,EApByB,sLCiBhCK,EAAe,SAAUD,GACzB,IAAIvX,EAASuX,EAAWvX,OAuBpB6G,EAAW0Q,EACVE,WACA7iB,QAAO,SAAUmE,GAAS,QAASA,EAAMuG,UAAUoY,YACnDzd,KAAI,SAAUlB,GAAS,OAAO4e,EAAcJ,EAAYxe,MAC7D,OAAO,WAAgB8N,GAAUxQ,MA1BjC,WACI,GAAyD,QAArDkhB,EAAWK,qBAAqBnsB,UAAU4e,OAAkB,CAG5D,IAAIwN,EAAON,EAAWO,cACtB,OAAO9X,EAAOmC,aAAaxQ,OAAOkmB,EAAKE,aAAcF,EAAKne,SAAUme,EAAKpsB,WAI7E,IAAIusB,EAAOhY,EAAOuC,WACd3Q,EAASomB,EAAK1Q,MAAM0Q,EAAKC,SACzBpQ,EAAOjW,GAAUA,EAAOiW,KAG5B,GAAIA,GAAsB,UAAdA,EAAKrN,KAAkB,CAC/B,IAAIzB,EAAQ8O,EAAK9O,MACbW,EAAS9H,EAAO0V,MACpB,OAAOtH,EAAOmC,aAAaxQ,OAAOoH,EAAOW,EAAQ6d,EAAW9rB,WAGhEuU,EAAOuC,WAAW2V,WAQfC,EAAuB,SAAUC,GACxC,OAAOA,EAAkB/c,SAAS,CAAEoc,SAAU,SAAU1e,GAAS,QAASA,EAAM2e,WAAeF,IAS5F,SAASG,EAAcJ,EAAYxe,GACtC,IAAIsf,EAAatf,EAAMuG,UAAUoY,SAE7B3oB,EAAUspB,EAAqB,SAwBnC,OAvBKtpB,IAWDA,EAAUspB,EAAqB,SAAI,YACzBA,EAAWd,EAAYxe,IAC5B1C,MAIT,SAA6BzE,GAIzB,OAHIA,GAAU1E,MAAMoQ,QAAQ1L,EAAO0mB,SAC/B1mB,EAAO0mB,OAAOjsB,SAAQ,SAAUksB,GAAU,OAAOhB,EAAWvX,OAAOkC,cAAc8C,SAASuT,MAEvF3mB,KAPFyE,MAbS,SAAUzE,GAIpB,cAHOmH,EAAM2e,gBACN3e,EAAMuG,UAAUoY,gBAChBW,EAAqB,SACrBzmB,KAEC,SAAU4mB,GAElB,cADOH,EAAqB,SACrB,cAAmBG,OAc3BzpB,oPCnFP0pB,kUAJAC,EAAS7Z,OAAO1R,UAAUa,gBAK9B,SAAWyqB,GACPA,EAAQA,EAAc,KAAI,GAAK,OAC/BA,EAAQA,EAAgB,OAAI,GAAK,SACjCA,EAAQA,EAAgB,OAAI,GAAK,SAHrC,CAIGA,IAAYA,EAAU,KA2DzB,IAAIE,EAAuB,WACvB,SAASA,EAAMhiB,EAAI6D,EAAM2G,EAAUyX,EAAW7f,GAC1C,IAAIlC,EA3DZ,SAA6BgiB,EAAW1X,EAAUpI,GAC9C,IAAI+f,GAA6C,IAAzB/f,EAAMggB,gBAA4B5X,IAAasX,EAAQO,aAAWvZ,EACtFwZ,GAAU,QAAK,CAAClgB,EAAMkgB,QAASH,GAAmB,MAClDI,GAAgB,QAAUD,GAAW,CAAEA,QAASA,GAAY,GAC5DE,EAGR,SAAyBhmB,GAGrB,SAASimB,IACL,OAAOjmB,EAAIrD,MAHfqD,EAlBc,SAAUA,GACxB,OAAiG,IAA1F,CAAC,QAAS,OAAQ,SAAU,QAAS,WAAWyB,OAAO8jB,EAAO9pB,KAAKuE,GAAO,KAAKuH,OAiBhF2e,CAAYlmB,GAAO,CAAErD,MAAOqD,GAAQA,EAC1CimB,EAAmC,aAAI,EAIvC,IAAIE,GAAO,QAAanmB,EAAIrD,OAASqD,EAAIrD,MAAQspB,EACjD,OAAO,QAAOjmB,EAAK,CAAEmmB,KAAMA,IAVTC,CAAgBxgB,GAASA,EAAMW,QAAUX,EAAMW,OAAOmf,IACxE,OAAO,QAAOK,EAAeC,GAsDZK,CAAoB7iB,EAAIwK,EAAUpI,GAC/CyB,EA5CR,SAAiBrH,EAAKsmB,EAAStY,EAAUxK,EAAI+iB,GACzC,GAAIvmB,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,KAC/B,MAAM,IAAIiN,MAAM,UAAYpH,EAAK,kCACrC,GAAIxD,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,MAAqB4oB,EAAWlf,KAAKrH,EAAIqH,MACxE,OAAOkf,EAAWlf,KAAKrH,EAAIqH,MAC/B,GAAIif,EACA,OAAOA,EACX,IAAKtmB,EAAIqH,KAAM,CACX,IAAIA,EAAO2G,IAAasX,EAAQkB,OAC1B,MACAxY,IAAasX,EAAQmB,KACjB,OACAzY,IAAasX,EAAQO,OACjB,QACA,SACd,OAAOU,EAAWlf,KAAKA,GAE3B,OAAOrH,EAAIqH,gBAAgB,IAAYrH,EAAIqH,KAAOkf,EAAWlf,KAAKrH,EAAIqH,MA2B3Dqf,CAAQhjB,EAAQ2D,EAAM2G,EAAUxK,EAAIiiB,EAAUc,YACrD,IAUQI,EACAC,EAXJC,GAUIF,EAAgB,CAAEjP,MAAO1J,IAAasX,EAAQO,QAAS,QACvDe,EAAyBpjB,EAAG2Q,MAAM,SAAW,CAAEuD,OAAO,GAAS,IAC5D,QAAOiP,EAAeC,EAAwBljB,GAAQgU,OAXjErQ,EAAOwf,EAAYxf,EAAKyf,SAASD,EAAW7Y,IAAasX,EAAQO,QAAUxe,EAC3E,IAAI0f,OAA8Bza,IAAjB5I,EAAO/G,OAAuBqR,IAAasX,EAAQO,OAChEC,GAAU,QAAUpiB,EAAOoiB,WAAapiB,EAAOoiB,UAAYze,EAAKye,QAChEkB,GAAM,QAAUtjB,EAAOsjB,OAAStjB,EAAOsjB,MAAQ3f,EAAK2f,IACpDC,EA9BZ,SAAyBvjB,EAAQqjB,EAAYG,GACzC,IAAID,EAASvjB,EAAOujB,OACpB,IAAKF,IAAyB,IAAXE,EACf,OAAO,EACX,KAAK,QAAUA,IAAqB,MAAVA,EACtB,OAAOC,EACX,IAAe,IAAXD,IAAmB,QAASA,GAC5B,OAAOA,EACX,MAAM,IAAIrc,MAAM,2BAA6Bqc,EAAS,uDAsBrCE,CAAgBzjB,EAAQqjB,EAAYtB,EAAU2B,uBACvDla,EArBZ,SAAoBxJ,EAAQmjB,EAAWE,EAAYE,GAC/C,IAAIC,EAAgB,CAChB,CAAEG,KAAM,GAAIC,GAAIP,GAAcF,OAAYva,EAAY,IACtD,CAAE+a,KAAM,KAAMC,GAAIP,GAAcF,OAAYva,EAAY,KAExDY,GAAU,QAAQxJ,EAAOwJ,SAAWxJ,EAAOwJ,QAAU,IACrD,QAAS+Z,IACT/Z,EAAQtU,KAAK,CAAEyuB,KAAMJ,EAAQK,QAAIhb,IACrC,IAAIib,GAAiB,QAAIra,GAAS,QAAK,SACvC,OAAO,QAAOga,GAAe,SAAU5O,GAAQ,OAA8C,IAAvCiP,EAAelhB,QAAQiS,EAAK+O,SAAiB9sB,OAAO2S,GAYxFsa,CAAW9jB,EAAQmjB,EAAWE,EAAYE,GACpD1P,GAAU,QAAU7T,EAAO6T,WAAa7T,EAAO6T,UAAYlQ,EAAKkQ,SAOpE,QAAOpf,KAAM,CAAEqL,GAAIA,EAAI6D,KAAMA,EAAM2G,SAAUA,EAAU+Y,WAAYA,EAAYjB,QAASA,EAASkB,IAAKA,EAAKC,OAAQA,EAAQ/Z,QAASA,EAASqK,QAASA,EAASG,MAAOmP,EAAWnjB,OAAQA,IAoG7L,OAlGA8hB,EAAMrM,OAAS,SAAU5S,EAAQ4S,QACd,IAAXA,IAAqBA,EAAS,IAElC,IADA,IAAI1F,EAAc,GACTwE,EAAK,EAAGwP,EAAWlhB,EAAQ0R,EAAKwP,EAASlgB,OAAQ0Q,IAAM,CAC5D,IAAI9Q,EAAQsgB,EAASxP,GACrBxE,EAAYtM,EAAM3D,IAAM2D,EAAMxK,MAAMwc,EAAOhS,EAAM3D,KAErD,OAAOiQ,GAaX+R,EAAMkC,QAAU,SAAUnhB,EAAQohB,EAASC,GAGvC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IAC7BrhB,EAAO9E,QAAO,SAAU0F,GAAS,OAAQA,EAAME,KAAKC,OAAOqgB,EAAQxgB,EAAM3D,IAAKokB,EAAQzgB,EAAM3D,SAWvGgiB,EAAMle,OAAS,SAAUf,EAAQohB,EAASC,GAGtC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IACsB,IAAnDpC,EAAMkC,QAAQnhB,EAAQohB,EAASC,GAASrgB,QAGnDie,EAAMqC,UAAY,SAAUthB,EAAQ4S,GAEhC,YADe,IAAXA,IAAqBA,EAAS,IAC3B5S,EAAOO,KAAI,SAAUK,GAAS,OAAOA,EAAM0gB,UAAU1O,EAAOhS,EAAM3D,QAASuD,OAAO,MAAU,IAEvGye,EAAMxrB,UAAU8tB,eAAiB,SAAUnrB,GACvC,OAAOxE,KAAK4uB,YAAc5uB,KAAKkP,KAAKC,OAAOnP,KAAKwE,QAASA,IAM7D6oB,EAAMxrB,UAAU2C,MAAQ,SAAUA,GAC9B,IAAI2L,EAAQnQ,KA0BZ,OADAwE,EAR2B,SAAUR,GACjC,IAAK,IAAI8b,EAAK,EAAGuL,EAAKlb,EAAM4E,QAAS+K,EAAKuL,EAAGjc,OAAQ0Q,IAAM,CACvD,IAAIrM,EAAQ4X,EAAGvL,GACf,GAAIrM,EAAMyb,OAASlrB,EACf,OAAOyP,EAAM0b,GAErB,OAAOnrB,EAEH4rB,CAAqBprB,IACtB,QAAYA,GAtBG,WAClB,GAAI2L,EAAM0f,mBACN,OAAO1f,EAAM0f,mBAAmBC,aACpC,IAAK,cACD,MAAM,IAAIrd,MAAM,+DACpB,IAAIqd,EAAe,qBAA0B3f,EAAM5E,OAAOyiB,MAC1D,GAAI8B,MAAAA,IAAwD3f,EAAMjB,KAAKgK,GAAG4W,GACtE,MAAM,IAAIrd,MAAM,kBAAoBqd,EAAe,oBAAsB3f,EAAM9E,GAAK,sCAAwC8E,EAAMjB,KAAK1J,KAAO,KAIlJ,OAHI2K,EAAM5E,OAAOyiB,KAAkB,cAC/B7d,EAAM0f,mBAAqB,CAAEC,aAAcA,IAExCA,EAWiBC,GAAoB/vB,KAAKkP,KAAK8gB,WAAWxrB,IAEzE6oB,EAAMxrB,UAAUouB,SAAW,WACvB,OAAOjwB,KAAK6V,WAAasX,EAAQO,QAErCL,EAAMxrB,UAAU6tB,UAAY,SAAUlrB,GAElC,KAAK,QAAYA,IAAoB,OAAVA,IAAmBxE,KAAK4uB,WAC/C,OAAO,EAEX,IAAI/T,EAAa7a,KAAKkP,KAAK8gB,WAAWxrB,GACtC,IAAKxE,KAAKkP,KAAKgK,GAAG2B,GACd,OAAO,EAEX,IAAIqV,EAAUlwB,KAAKkP,KAAK2F,OAAOgG,GAC/B,SAAS,QAASqV,KAAalwB,KAAKkP,KAAKoV,QAAQ7a,KAAKymB,KAE1D7C,EAAMxrB,UAAUiT,SAAW,WACvB,MAAO,UAAY9U,KAAKqL,GAAK,IAAMrL,KAAKkP,KAAO,aAAelP,KAAK8uB,OAAS,eAAiB9uB,KAAK4uB,WAAa,KAE5GvB,EAtHe,4OChDtB8C,EAA2B,WAM3B,SAASA,EAAUjd,GAEflT,KAAKskB,QAAU,KAEftkB,KAAKof,SAAU,GACf,QAAOpf,KAAMkT,GAgDjB,OA5CAid,EAAUtuB,UAAUqX,GAAK,SAAUlV,EAAK6B,GACpC,OAAO,GAGXsqB,EAAUtuB,UAAUgT,OAAS,SAAU7Q,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUoT,OAAS,SAAUjR,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUsN,OAAS,SAAUsO,EAAGmB,GAEtC,OAAOnB,GAAKmB,GAEhBuR,EAAUtuB,UAAUuuB,YAAc,WAC9B,IAAIC,EAAMrwB,KAAKskB,QAAQxP,WACvB,OAAOub,EAAItJ,OAAO,EAAGsJ,EAAIjhB,OAAS,IAEtC+gB,EAAUtuB,UAAUiT,SAAW,WAC3B,MAAO,cAAgB9U,KAAKwF,KAAO,KAGvC2qB,EAAUtuB,UAAUmuB,WAAa,SAAUhsB,GACvC,OAAOhE,KAAKkZ,GAAGlV,GAAOA,EAAMhE,KAAKiV,OAAOjR,IAY5CmsB,EAAUtuB,UAAU8sB,SAAW,SAAU2B,EAAML,GAC3C,IAAKK,EACD,OAAOtwB,KACX,GAAa,SAATswB,IAAoBL,EACpB,MAAM,IAAIxd,MAAM,kDACpB,OAAO,IAAI8d,EAAUvwB,KAAMswB,IAExBH,EA3DmB,GA+D9B,SAASI,EAAUrhB,EAAMohB,GACrB,IAAIngB,EAAQnQ,KAEZ,SAASwwB,EAAUxsB,GACf,OAAO,QAAQA,GAAOA,GAAM,QAAUA,GAAO,CAACA,GAAO,GAczD,SAASysB,EAAajwB,EAAUkwB,GAC5B,OAAO,SAAqB1sB,GACxB,IAAI,QAAQA,IAAuB,IAAfA,EAAIoL,OACpB,OAAOpL,EACX,IAAI0b,EAAM8Q,EAAUxsB,GAChBsC,GAAS,QAAIoZ,EAAKlf,GACtB,OAAyB,IAAlBkwB,EAAgF,KAAvD,QAAOpqB,GAAQ,SAAUgJ,GAAK,OAAQA,KAAMF,OAjBpF,SAAqBpL,GACjB,OAAQA,EAAIoL,QACR,KAAK,EACD,OACJ,KAAK,EACD,MAAgB,SAATkhB,EAAkBtsB,EAAI,GAAKA,EACtC,QACI,OAAOA,GAUgF2sB,CAAYrqB,IAI/G,SAASsqB,EAAmBpwB,GACxB,OAAO,SAAqBqwB,EAAMC,GAC9B,IAAIC,EAAOP,EAAUK,GAAOG,EAAQR,EAAUM,GAC9C,GAAIC,EAAK3hB,SAAW4hB,EAAM5hB,OACtB,OAAO,EACX,IAAK,IAAIiO,EAAI,EAAGA,EAAI0T,EAAK3hB,OAAQiO,IAC7B,IAAK7c,EAASuwB,EAAK1T,GAAI2T,EAAM3T,IACzB,OAAO,EAEf,OAAO,GAGf,CAAC,SAAU,SAAU,SAAU,cAActc,SAAQ,SAAUyE,GAC3D,IAAIyrB,EAAc/hB,EAAK1J,GAAMlC,KAAK4L,GAC9BgiB,EAAqB,WAAT1rB,EAAoBorB,EAAqBH,EACzDtgB,EAAM3K,GAAQ0rB,EAAUD,OAE5B,QAAOjxB,KAAM,CACT2tB,QAASze,EAAKye,QACdnoB,KAAM0J,EAAK1J,KACX8e,QAASpV,EAAKoV,QACdlF,QAASlQ,EAAKkQ,QACdyP,IAAK3f,EAAK2f,IACV3V,GAAIuX,EAAavhB,EAAKgK,GAAG5V,KAAK4L,IAAO,GACrCiiB,WAAYb,+GC5DZc,kUApDJC,EAA4B,WAC5B,SAASA,IACLrxB,KAAKwlB,SAAU,EACfxlB,KAAKsxB,UAAY,GACjBtxB,KAAKuxB,cAAe,QAAKF,EAAWxvB,UAAW,CAC3C,OACA,SACA,QACA,OACA,MACA,OACA,OACA,OACA,QAIJ7B,KAAK+D,OAAQ,SAAQ,QAAI/D,KAAKuxB,cADf,SAAU9X,EAAYjU,GAAQ,OAAO,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,OAClC,IA+B3D,OA7BA4X,EAAWxvB,UAAUqT,QAAU,WAC3BlV,KAAK+D,MAAQ,IAOjBstB,EAAWxvB,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpD,KAAK,QAAU/X,GACX,OAAOzZ,KAAK+D,MAAMyB,GACtB,GAAIxF,KAAK+D,MAAMrB,eAAe8C,GAC1B,MAAM,IAAIiN,MAAM,iBAAmBjN,EAAO,+BAO9C,OANAxF,KAAK+D,MAAMyB,GAAQ,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,IACpD+X,IACAxxB,KAAKsxB,UAAU7wB,KAAK,CAAE+E,KAAMA,EAAM0N,IAAKse,IAClCxxB,KAAKwlB,SACNxlB,KAAKyxB,mBAENzxB,MAEXqxB,EAAWxvB,UAAU4vB,gBAAkB,WACnC,KAAOzxB,KAAKsxB,UAAUliB,QAAQ,CAC1B,IAAIF,EAAOlP,KAAKsxB,UAAUrvB,QAC1B,GAAIiN,EAAKoV,QACL,MAAM,IAAI7R,MAAM,sDACpB,QAAOzS,KAAK+D,MAAMmL,EAAK1J,MAAO,qBAA0B0J,EAAKgE,QAG9Dme,EAhDoB,GAoDvBD,EAAkB,SAAUle,GAC5B,IAAIwe,EAAc,SAAU1tB,GAAO,OAAe,MAAPA,EAAcA,EAAI8Q,WAAa9Q,GACtE2tB,EAAkB,CAClB9c,OAAQ6c,EACRzc,OAAQyc,EACRxY,IAAI,IAAAA,IAAG0Y,QACPtN,QAAS,KAETnV,OAAQ,SAAUsO,EAAGmB,GAAK,OAAOnB,GAAKmB,IAE1C,OAAO,QAAO,GAAI+S,EAAiBze,KAGvC,QAAOme,EAAWxvB,UAAW,CACzB0D,OAAQ6rB,EAAgB,IACxBjpB,KAAMipB,EAAgB,CAClB9M,QAAS,UAEbuN,MAAOT,EAAgB,IACvBU,KAAMV,EAAgB,CAClBhS,SAAS,IAEb2S,IAAKX,EAAgB,CACjBnc,OAAQ,SAAUjR,GAAO,OAAOqlB,SAASrlB,EAAK,KAC9CkV,GAAI,SAAUlV,GACV,QAAQ,QAAkBA,IAAQhE,KAAKiV,OAAOjR,EAAI8Q,cAAgB9Q,GAEtEsgB,QAAS,UAEb0N,KAAMZ,EAAgB,CAClBvc,OAAQ,SAAU7Q,GAAO,OAAQA,EAAO,EAAM,GAC9CiR,OAAQ,SAAUjR,GAAO,OAA6B,IAAtBqlB,SAASrlB,EAAK,KAC9CkV,IAAI,IAAAA,IAAG+Y,SACP3N,QAAS,QAEb4N,KAAMd,EAAgB,CAClBvc,OAAQ,SAAU7Q,GACd,OAAQhE,KAAKkZ,GAAGlV,GAEV,CAACA,EAAImuB,eAAgB,KAAOnuB,EAAIouB,WAAa,IAAItwB,OAAO,IAAK,IAAMkC,EAAIquB,WAAWvwB,OAAO,IAAImR,KAAK,UADlGkB,GAGVc,OAAQ,SAAUjR,GACd,GAAIhE,KAAKkZ,GAAGlV,GACR,OAAOA,EACX,IAAIgY,EAAQhc,KAAKsyB,QAAQ7oB,KAAKzF,GAC9B,OAAOgY,EAAQ,IAAIuW,KAAKvW,EAAM,GAAIA,EAAM,GAAK,EAAGA,EAAM,SAAM7H,GAEhE+E,GAAI,SAAUlV,GAAO,OAAOA,aAAeuuB,OAASjJ,MAAMtlB,EAAIwuB,YAC9DrjB,OAAQ,SAAUsjB,EAAGlV,GACjB,MAAO,CAAC,cAAe,WAAY,WAAW3O,QAAO,SAAUsL,EAAKvZ,GAAM,OAAOuZ,GAAOuY,EAAE9xB,OAAU4c,EAAE5c,QAAU,IAEpH2jB,QAAS,0DACTgO,QAAS,0DAEbI,KAAMtB,EAAgB,CAClBvc,OAAQ,KACRI,OAAQ,KACRiE,IAAI,IAAAA,IAAG3F,QACPpE,OAAQ,KACRmV,QAAS,UAGbJ,IAAKkN,EAAgB,CACjBvc,OAAQ,KACRI,OAAQ,KACRiE,GAAI,WAAc,OAAO,GACzB/J,OAAQ,kLCjJhBwjB,EAA6B,WAC7B,SAASA,EAAYvkB,QACF,IAAXA,IAAqBA,EAAS,KAClC,QAAOpO,KAAMoO,GA4BjB,OAlBAukB,EAAY9wB,UAAU+wB,SAAW,SAAUC,EAAWC,EAAUC,GAC5D,IAAIC,EACAC,GAAU,QAAUH,EAAUC,GAAM9nB,EAAY,GAAIioB,EAAc,GACtE,IAAK,IAAI7V,KAAK4V,EACV,GAAKA,EAAQ5V,IAAO4V,EAAQ5V,GAAGjP,SAE/B4kB,EAAezf,OAAOC,KAAKyf,EAAQ5V,GAAGjP,SACpBgB,OAElB,IAAK,IAAIsO,KAAKsV,EACNE,EAAYhlB,QAAQ8kB,EAAatV,KAAO,IAE5CwV,EAAYzyB,KAAKuyB,EAAatV,IAC9BzS,EAAU+nB,EAAatV,IAAM1d,KAAKgzB,EAAatV,KAGvD,OAAO,QAAO,GAAIzS,EAAW4nB,IAE1BF,EA/BqB,+RCS5BQ,EAA0B,WAC1B,SAASA,EAASC,GACd,GAAIA,aAAuBD,EAAU,CACjC,IAAI5kB,EAAO6kB,EACXpzB,KAAKyN,MAAQc,EAAKd,MAClBzN,KAAKwO,YAAcD,EAAKC,YAAY1M,QACpC9B,KAAKsb,aAAc,QAAO,GAAI/M,EAAK+M,aACnCtb,KAAK+X,YAAcxJ,EAAKwJ,YAAYjW,QACpC9B,KAAKwa,MAAQjM,EAAKiM,OAASjM,EAAKiM,MAAM1Y,YAErC,CACD,IAAI2L,EAAQ2lB,EACZpzB,KAAKyN,MAAQA,EACbzN,KAAKwO,YAAcf,EAAM4lB,WAAW,CAAEjU,SAAS,IAC/Cpf,KAAKsb,YAAc,GACnBtb,KAAK+X,YAActK,EAAMsK,YAAYpJ,KAAI,SAAUqE,GAAO,OAAOA,EAAItG,YA+C7E,OA5CAymB,EAAStxB,UAAU6K,MAAQ,WACvB,OAAO,IAAIymB,EAASnzB,OAGxBmzB,EAAStxB,UAAUyxB,eAAiB,SAAUllB,GAG1C,OADApO,KAAKsb,YAActb,KAAKwO,YAAYI,QAAO,SAAUsR,EAAMqT,GAAQ,OAAO,QAAWrT,EADtC,EAAnBsT,EAC2ED,GAD9CloB,GAAImoB,EAAShvB,MAAM4J,EAAOolB,EAASnoB,OAA1E,IAAUmoB,IACsF,IAC3GxzB,MAGXmzB,EAAStxB,UAAU4xB,UAAY,SAAUjuB,GACrC,OAAO,QAAKxF,KAAKwO,aAAa,QAAO,KAAMhJ,KAM/C2tB,EAAStxB,UAAUsN,OAAS,SAAUZ,EAAMmlB,GACxC,IAAIC,EAAO3zB,KAAK2zB,KAAKplB,EAAMmlB,GAC3B,OAAOC,GAAwB,IAAhBA,EAAKvkB,QAcxB+jB,EAAStxB,UAAU8xB,KAAO,SAAUplB,EAAMmlB,GACtC,GAAI1zB,KAAKyN,QAAUc,EAAKd,MACpB,OAAO,EACX,IAAIW,EAASslB,EAAWA,EAAS1zB,MAAQA,KAAKwO,YAC9C,OAAO,YAAcJ,EAAQpO,KAAKsb,YAAa/M,EAAK+M,cAMxD6X,EAASzmB,MAAQ,SAAU6B,GAAQ,OAAOA,EAAK7B,SACxCymB,EA9DkB,mWCHzBS,EAA2B,WAC3B,SAASA,KA4JT,OAzJAA,EAAUC,gBAAkB,SAAUC,EAAU3rB,GAC5C,IAAIsF,GAAQ,QAAKtF,GAAMsF,MACvB,OAAO,IAAI,IAAYqmB,EAAUrmB,EAAOtF,EAAKwG,KAAI,QAAK,gBAAgBC,OAAO,KAAQ,IAAK,KAE9FglB,EAAUG,UAAY,SAAUvH,GAC5B,IAAIre,EAAWqe,EAAYpe,SAC3B,OAAOoe,EAAY/T,SAAStQ,KAAKwG,KAAI,SAAUlB,GAAS,OAAO,IAAI,IAASA,GAAO6lB,eAAenlB,OAGtGylB,EAAUI,YAAc,SAAUC,EAAUzH,GACxC,IAAI0H,EAASN,EAAUG,UAAUvH,GACjC,OAAIA,EAAYrsB,UAAUif,QACfwU,EAAUO,cAAcF,EAAUC,EAAQ3gB,OAAOC,KAAKgZ,EAAYpe,WAEtE8lB,GAOXN,EAAUQ,iBAAmB,SAAUttB,EAAOqB,EAAM6kB,GAEhD7kB,EACKmB,QAAO,SAAUiF,GAAQ,OAAO,QAAQye,EAAQze,EAAKd,UACrD1M,SAAQ,SAAUwN,GACnB,IAAI8lB,GAAY,QAAO9lB,EAAKd,MAAM+M,OAAS,IACvC8Z,EAAUV,EAAUU,QAAQnsB,GAAM,SAAUoY,GAAK,OAAOA,IAAMhS,KAC9DgmB,EAAcF,EAAU1lB,KAAI,SAAUmL,GAAQ,OAAOhT,EAAM0tB,iBAAiBF,EAASxa,MACzFvL,EAAKiM,MAAQ+Z,EAAY3lB,OAAO,KAAS,QAcjDglB,EAAUO,cAAgB,SAAUF,EAAUC,EAAQO,QACnC,IAAXA,IAAqBA,EAAS,IAKlC,IAAIC,EAAYT,EACXtlB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKC,eAClCI,OAAO,KAAS,IAChBtF,QAAO,SAAU0F,GAAS,OAAQA,EAAMoQ,WACxCzQ,KAAI,QAAK,OAiBd,OAAOulB,EAAOvlB,KAZd,SAAiCgmB,GAE7B,IAAIC,GAAc,QAAO,GAAID,GAAUA,EAAOrZ,aAE1CuZ,GAAoB,QAAKD,EAAaH,GAC1CG,GAAc,QAAKA,EAAaH,GAChC,IAnBmBtsB,EAAMsF,EACrBc,EAkBAumB,GAAgB,SAnBD3sB,EAmBoB8rB,EAnBdxmB,EAmBwBknB,EAAOlnB,MAlBpDc,GAAO,QAAKpG,GAAM,QAAO,QAASsF,KAC/B,QAAO,GAAIc,GAAQA,EAAK+M,cAiBmC,IAAIoZ,GAElEK,GAAe,QAAOH,EAAaE,EAAeD,GACtD,OAAO,IAAI,IAASF,EAAOlnB,OAAO6lB,eAAeyB,OAQzDnB,EAAUllB,YAAc,SAAUulB,EAAUC,EAAQc,GAIhD,IAHA,IAE2BC,EAAOC,EAU9BhG,EAAMiG,EAAUlnB,EAASke,EAZzBrF,EAAMhF,KAAKD,IAAIoS,EAAS7kB,OAAQ8kB,EAAO9kB,QACvCgmB,EAAO,EAEJA,EAAOtO,GAAOmN,EAASmB,GAAM3nB,QAAUunB,IADnBC,EAC6ChB,EAASmB,GAD/CF,EACsDhB,EAAOkB,GAD7CH,EAAM9lB,OAAO+lB,EAAOtB,EAAUyB,oBAE5ED,IAUJD,GADAjG,EAAO+E,GACSnyB,MAAM,EAAGszB,GACzBnnB,EAAUihB,EAAKptB,MAAMszB,GAErB,IAAIE,EAAuBH,EAASxmB,KAVpC,SAAuB4mB,EAActmB,GACjC,IAAIxC,EAAS8oB,EAAa7oB,QAE1B,OADAD,EAAO6O,YAAc4Y,EAAOjlB,GAAKqM,YAC1B7O,KAUX,OAFA0f,EAAW+H,EAAOpyB,MAAMszB,GAEjB,CAAElG,KAAMA,EAAMC,GADhBmG,EAAqBlzB,OAAO+pB,GACJgJ,SAAUA,EAAUG,qBAAsBA,EAAsBrnB,QAASA,EAASke,SAAUA,IAiB7HyH,EAAU4B,SAAW,SAAUC,EAAOC,EAAOhC,GACzC,IAAIiC,GAAO,EAEX,OADa,QAAYF,EAAOC,GAClB9mB,QAAO,SAAU4mB,EAAUnK,GACrC,IAAIuK,EAAQvK,EAAG,GAAIwK,EAAQxK,EAAG,GAE9B,OADAsK,EAAOA,IAASC,EAAMzmB,OAAO0mB,EAAOnC,IACtB8B,EAAWA,EAASpzB,OAAOwzB,KAC1C,KAUPhC,EAAUzkB,OAAS,SAAUsmB,EAAOC,EAAOhC,GACvC,OAAO+B,EAAMrmB,SAAWsmB,EAAMtmB,QAAUwkB,EAAU4B,SAASC,EAAOC,EAAOhC,GAAUtkB,SAAWqmB,EAAMrmB,QAYxGwkB,EAAUU,QAAU,SAAUnsB,EAAM2tB,GAChC,IAAIvnB,GAAO,QAAKpG,EAAM2tB,GAClBC,EAAa5tB,EAAK+F,QAAQK,GAC9B,OAAuB,IAAhBwnB,OAAoB5hB,EAAYhM,EAAKrG,MAAM,EAAGi0B,EAAa,IAEtEnC,EAAUyB,iBAAmB,SAAU9mB,GACnC,OAAOA,EAAKd,MAAM4lB,WAAW,CAAEjU,SAAS,IAAS9V,QAAO,SAAU0F,GAAS,OAAQA,EAAM2e,YAG7FiG,EAAUtY,YAAc,SAAUnT,GAAQ,OAAOA,EAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,QAAO2L,EAAK3L,EAAK+M,eAAiB,KACtHsY,EA7JmB,yGCPvB,IAAIoC,EAAkB,CACzB/lB,KAAM,CACFgmB,KAAM,OACNC,MAAO,SAEXpd,MAAO,CACHqd,KAAM,OACNC,OAAQ,sbCgBZnkB,EAA4B,WAC5B,SAASA,EAAWokB,EAAMne,EAAWpG,EAAMwkB,EAAQ3uB,GAG/C,GAFA3H,KAAKu2B,UAAW,EAChBv2B,KAAKyD,aAAU0Q,EACXkiB,aAAgBpkB,GAChB,QAAOjS,KAAMq2B,QAEZ,IAAI,QAAWne,GAAY,CAC5B,IAAI,QAAkBme,GAClB,MAAM,IAAI5jB,MAAM,gDACpB,KAAK,QAAWyF,GACZ,MAAM,IAAIzF,MAAM,2DACpBzS,KAAKuhB,MAAQ8U,EACbr2B,KAAKs2B,OAASA,EACdt2B,KAAKkY,UAAYA,EACjBlY,KAAK8R,KAAOA,GAAQ,GACpB9R,KAAK2H,KAAOA,EACZ3H,KAAKu2B,cAAoBpiB,IAATxM,EAChB3H,KAAKyD,QAAUzD,KAAKu2B,SAAW,YAAiBv2B,KAAK2H,WAAQwM,OAE5D,IAAI,QAASkiB,IAASA,EAAK9U,QAAU8U,EAAK3zB,eAAe,cAAgB2zB,EAAK3zB,eAAe,SAAU,CACxG,IAAI8zB,EAAUH,EACd,OAAO,IAAIpkB,EAAWukB,EAAQjV,MAAOiV,EAAQte,UAAWse,EAAQ1kB,KAAM0kB,EAAQF,OAAQE,EAAQ7uB,OA+DtG,OA5DAsK,EAAWpQ,UAAUgX,UAAY,SAAUpL,GACvC,IAAIgpB,EAAaz2B,KAAKs2B,QAAU,GAC5BI,EAAejpB,GAASA,EAAMkpB,eAAkB,GACpD,MAAO,CACH1mB,KAAMwmB,EAAWxmB,MAAQymB,EAAYzmB,MA5CvC,OA6CE6I,MAAO2d,EAAW3d,OAAS4d,EAAY5d,OA5CxC,SAsDP7G,EAAWpQ,UAAU8K,QAAU,SAAUiqB,EAAgBhnB,GACrD,IAAIO,EAAQnQ,KACR+G,EAAK,OAOLwH,EAAOqoB,EAAeC,SAAS72B,MAC/ByN,EAAQc,GAAQA,EAAKd,MACrBqpB,EAAc92B,KAAK6Y,UAAUpL,GAAOqL,MACpCie,GAAoB,QAAWD,GAAeA,EAAc,KAUhE,OAAQ92B,KAAKyD,QAAUsD,EAClBkJ,OACAlF,MApB2B,WAC5B,OAAOhE,EAAG0U,IAAImb,EAAeI,gBAAgB7mB,GAAOxB,KAAI,SAAUqJ,GAAc,OAAOA,EAAWtH,IAAIkmB,EAAgBhnB,UAoBrH7E,MAjBiB,SAAUksB,GAAgB,OAAO9mB,EAAM+H,UAAU/V,MAAM,KAAM80B,MAkB9ElsB,KAAKgsB,GACLhsB,MAboB,SAAUmsB,GAK/B,OAJA/mB,EAAMxI,KAAOuvB,EACb/mB,EAAMomB,UAAW,EACjBpmB,EAAM+H,UAAY,KAClB,6BAA8B/H,EAAOP,GAC9BO,EAAMxI,SAgBrBsK,EAAWpQ,UAAU6O,IAAM,SAAUkmB,EAAgBhnB,GACjD,OAAO5P,KAAKyD,SAAWzD,KAAK2M,QAAQiqB,EAAgBhnB,IAExDqC,EAAWpQ,UAAUiT,SAAW,WAC5B,MAAO,sBAAuB,QAAU9U,KAAKuhB,OAAS,gBAAkBvhB,KAAK8R,KAAKnD,IAAI,MAAa,MAEvGsD,EAAWpQ,UAAU6K,MAAQ,WACzB,OAAO,IAAIuF,EAAWjS,OAE1BiS,EAAWklB,SAAW,SAAU5V,EAAO5Z,GAAQ,OAAO,IAAIsK,EAAWsP,GAAO,WAAc,OAAO5Z,IAAS,KAAM,KAAMA,IAC/GsK,EArFoB,4qBCd3BmlB,EAAQ,SACRC,EAAY,CAACD,EAAMlB,MAAOkB,EAAMnB,MAChCqB,EAAc,CAACF,EAAMlB,OAarB9tB,EAAgC,WAChC,SAASA,EAAemvB,GACpBv3B,KAAKu3B,MAAQA,EA8IjB,OA3IAnvB,EAAevG,UAAU+W,UAAY,WACjC,OAAO5Y,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO2L,EAAI9X,OAAOmM,EAAKwJ,YAAYpJ,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,YAAe,IAAI3S,OAAO,KAAO,KAQpJxG,EAAevG,UAAUiM,cAAgB,SAAUyT,GAC/C,IAAIiU,EAAWx1B,KAAKu3B,MACf5oB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKwJ,eAClCnJ,OAAO,KAAS,IAChBtF,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC9C,OAAO,QAAKiU,IAGhBptB,EAAevG,UAAUgX,UAAY,SAAUb,GAC3C,IAAIzJ,EAAOvO,KAAK62B,SAAS7e,GACzB,OAAOA,EAAWa,UAAUtK,EAAKd,QAyBrCrF,EAAevG,UAAUkS,WAAa,SAAUtG,GAC5C,OAAO,IAAIrF,EAAe,YAAkBpI,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAOA,EAAKd,QAAUA,OAiBpGrF,EAAevG,UAAU21B,eAAiB,SAAUC,EAAgBhqB,GAChE,IAAIc,GAAO,QAAKvO,KAAKu3B,OAAO,QAAO,QAAS9pB,IACxC+F,EAAOikB,EAAe9oB,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,SACtDhT,EAAKwJ,YAAcxJ,EAAKwJ,YAAYzO,QAAO,SAAUiU,GAAK,OAAkC,IAA3B/J,EAAKtF,QAAQqP,EAAEgE,UAAkBnf,OAAOq1B,IAS7GrvB,EAAevG,UAAU61B,YAAc,SAAUznB,EAAML,GACnD,IAAIO,EAAQnQ,UACC,IAATiQ,IAAmBA,EAAO,QAE9B,IAGI0nB,IAHa,QAAQN,EAAWpnB,GAAQA,EAAO,UAGjB,eAA6BqnB,EAAcD,EAE7E,sBAAuBr3B,KAAKu3B,MAAOtnB,EAAML,GACzC,IAAIgoB,EAAgB,SAAUC,EAAcC,GAAe,OAAO,SAAU9f,GACxE,OAAO,QAAQ6f,EAAc1nB,EAAM0I,UAAUb,GAAY8f,MAIzDvc,EAAWvb,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAC5C,IAAIwpB,EAAkBxpB,EAAKwJ,YAAYzO,OAAOsuB,EAAcD,EAAc,SACtEK,EAASD,EAAgBzuB,OAAOsuB,EAAc,CAAC,UAAW,UAC1DK,EAAOF,EAAgBzuB,QAAO,QAAIsuB,EAAc,CAAC,UAAW,WAE5D7jB,EAAa5D,EAAM4D,WAAWxF,EAAKd,OACnCyqB,EAAY,SAAU3a,GACtB,OAAOA,EACF7M,IAAIqD,EAAYnE,GAEhB7E,MAAK,SAAUvG,GAAS,MAAO,CAAG+c,MAAOhE,EAAEgE,MAAO/c,MAAOA,OAGlE,OADAwzB,EAAOj3B,QAAQm3B,GACRhe,EAAI9X,OAAO61B,EAAKtpB,IAAIupB,MAC5B,IAEH,OAAO,WAAgB3c,IAE3BnT,EAAevG,UAAUs2B,SAAW,WAChC,OAAOn4B,KAAKo4B,YAAcp4B,KAAKo4B,UAAY,IAAIC,EAAer4B,QAElEoI,EAAevG,UAAUg1B,SAAW,SAAU7e,GAC1C,OAAO,QAAKhY,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAO,QAAQA,EAAKwJ,YAAaC,OAO/E5P,EAAevG,UAAUm1B,gBAAkB,SAAUhf,GACjD,IAAI7H,EAAQnQ,KACRuO,EAAOvO,KAAK62B,SAAS7e,GAIrBsgB,GADU,YAAkBt4B,KAAKu3B,OAAO,SAAUjoB,GAAK,OAAOA,IAAMf,MAAYvO,KAAKu3B,OAEpF3oB,QAAO,SAAUsL,EAAKqe,GAAS,OAAOre,EAAI9X,OAAOm2B,EAAMxgB,eAAiB,IACxEzO,QAAO,SAAU0J,GAAO,OAAOA,IAAQgF,KAW5C,OAAOA,EAAWlG,KAAKnD,KAVH,SAAU4S,GAC1B,IAAIiU,EAAW8C,EAAqBhvB,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC7E,GAAIiU,EAASpmB,OACT,OAAO,QAAKomB,GAChB,IAAIgD,EAAeroB,EAAMgoB,WAAWM,UAAUlX,GAC9C,IAAI,QAAYiX,GACZ,MAAM,IAAI/lB,MAAM,+CAAgD,QAAU8O,IAE9E,OAAO,IAAI,IAAWA,GAAO,WAAc,OAAOiX,IAAiB,GAAIA,OAIxEpwB,EAhJwB,GAoJ/BiwB,EAAgC,WAChC,SAASA,EAAexnB,GACpB7Q,KAAK6Q,QAAUA,EACf7Q,KAAK04B,OAAS14B,KAAK0Q,IAlKQ,oBAkKsB,cAwBrD,OAtBA2nB,EAAex2B,UAAU6O,IAAM,SAAU6Q,GACrC,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,GAAIvJ,EAAY,CACZ,GAAiD,WAA7ChY,KAAK6Q,QAAQgI,UAAUb,GAAYc,MACnC,OAAOd,EAAWtH,IAAI1Q,KAAK6Q,SAE/B,IAAKmH,EAAWue,SACZ,MAAM,IAAI9jB,MAAM,yCAA0C,QAAUuF,EAAWuJ,QAEnF,OAAOvJ,EAAWrQ,KAEtB,OAAO3H,KAAKy4B,UAAUlX,IAE1B8W,EAAex2B,UAAU82B,SAAW,SAAUpX,GAC1C,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,OAAIvJ,EACOA,EAAWtH,IAAI1Q,KAAK6Q,SACxB,YAAiB7Q,KAAK04B,OAAOhoB,IAAI6Q,KAE5C8W,EAAex2B,UAAU42B,UAAY,SAAUlX,GAC3C,OAAOvhB,KAAK04B,QAAU14B,KAAK04B,OAAOhoB,IAAI6Q,IAEnC8W,EA3BwB,q2BC/J/BO,EAAkB,EAMlBC,GAAsB,QAAS,mBAJnB,CAAC,MAAO,OAAQ,SAAU,OAAQ,aAM9CC,GAAqB,QAAS,iBAJlB,CAAC,OAAQ,WAAY,OAAQ,WAAY,YAAa,eAUlEpiB,EAA0B,WAQ1B,SAASA,EAASU,EAAiBC,QACP,IAApBD,IAA8BA,EAAkByhB,QAC7B,IAAnBxhB,IAA6BA,EAAiByhB,GAClD94B,KAAKoX,gBAAkBA,EACvBpX,KAAKqX,eAAiBA,EACLrX,KAAKmb,IAAMyd,IACX54B,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAe,GAErCh5B,KAAKqI,MAAQ,KAEbrI,KAAK+W,YAAc,IAAI,IAAY/W,MAEnCA,KAAKsY,QAAU,IAAI,IAEnBtY,KAAK8sB,kBAAoB,IAAI,IAAkB9sB,MAK/CA,KAAK4U,kBAAoB,IAAI,IAAkB5U,MAK/CA,KAAKmc,UAAY,IAAI,IAAUnc,MAE/BA,KAAKiX,WAAa,IAAI,IAAWjX,MAEjCA,KAAK4W,cAAgB,IAAI,IAAc5W,MAEvCA,KAAK6W,aAAe,IAAI,IAAa7W,MAErCA,KAAKi5B,SAAW,GAChBj5B,KAAK+W,YAAY/M,WAAWC,iBAAiBjK,KAAK4W,cAAcgH,QAChE5d,KAAKsY,QAAQwa,SAAW9yB,KAAK4W,cAAcgH,OAC3C5d,KAAKsY,QAAQwN,QAAU9lB,KAAKsY,QAAQwa,SAASplB,KAC7C1N,KAAKk5B,WAAWl5B,KAAKsY,SACrBtY,KAAKk5B,WAAWl5B,KAAK6W,cACrB7W,KAAKk5B,WAAWl5B,KAAK4W,eACrB5W,KAAKk5B,WAAWl5B,KAAK8sB,mBACrB9sB,KAAKk5B,WAAWl5B,KAAKiX,YACrBjX,KAAKk5B,WAAW9hB,GAChBpX,KAAKk5B,WAAW7hB,GAgGpB,OA7FAX,EAAS7U,UAAUq3B,WAAa,SAAUA,GACtCl5B,KAAKg5B,aAAav4B,KAAKy4B,IAa3BxiB,EAAS7U,UAAUqT,QAAU,SAAUgkB,GACnC,IAAI/oB,EAAQnQ,KACRk5B,IAAc,QAAWA,EAAWhkB,SACpCgkB,EAAWhkB,QAAQlV,OAGvBA,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAal3B,QAAQf,SAAQ,SAAUo4B,GACxC,IACyB,mBAAdA,EAAEjkB,SAA0BikB,EAAEjkB,QAAQ/E,IAC7C,QAAWA,EAAM6oB,aAAcG,GAEnC,MAAOC,UAwDf1iB,EAAS7U,UAAUw3B,OAAS,SAAUA,EAAQl5B,QAC1B,IAAZA,IAAsBA,EAAU,IACpC,IAAIm5B,EAAiB,IAAID,EAAOr5B,KAAMG,GACtC,IAAKm5B,EAAe9zB,KAChB,MAAM,IAAIiN,MAAM,+CAAiD6mB,GAErE,OADAt5B,KAAKg5B,aAAav4B,KAAK64B,GACft5B,KAAKi5B,SAASK,EAAe9zB,MAAQ8zB,GAEjD5iB,EAAS7U,UAAU03B,UAAY,SAAUC,GACrC,OAAOA,EAAax5B,KAAKi5B,SAASO,IAAc,QAAOx5B,KAAKi5B,WAEzDviB,EAnJkB,ijBCf7B,SAAS+iB,EAAYhsB,GACjB,OAAOA,EAAMjI,KAEjB,SAASk0B,EAAYjsB,GAEjB,OADAA,EAAMC,KAAKsG,QAAU,WAAc,OAAOvG,GACnCA,EAAMC,KAEjB,SAASisB,EAAYlsB,GAIjB,OAHIA,EAAM2M,QAAU3M,EAAM2M,OAAOzS,OAC7B8F,EAAM9F,KAAO8F,EAAMC,KAAK/F,MAAO,QAAQ8F,EAAM2M,OAAOzS,KAAM8F,EAAM9F,OAE7D8F,EAAM9F,KAEjB,IAAIiyB,EAAgB,SAAUC,EAA4Bjc,GACtD,OAAO,SAAoBhK,GACvB,IAAIkmB,EAAWlmB,EAAYlG,KAG3B,GAAIosB,GAAYA,EAASroB,KAAOqoB,EAASt0B,MAAQs0B,EAASt0B,KAAKwW,MAAM,WAAY,CAC7E,IAAI+d,EAAc,IAClB,QAAKD,EAAUC,GACfA,EAAYtoB,KAAO,kBACnBqoB,EAAWC,EAEf,IAAI3f,EAASxG,EAAYwG,OACrB4f,EA/BG,SAAUvoB,GACrB,KAAK,QAASA,GACV,OAAO,EACX,IAAImM,EAAyB,MAAlBnM,EAAIhM,OAAO,GACtB,MAAO,CAAEzB,IAAK4Z,EAAOnM,EAAIwoB,UAAU,GAAKxoB,EAAKmM,KAAMA,GA2BlCsc,CAASJ,EAASroB,KAC3BA,EAAOuoB,EAAwBH,EAA2BxyB,QAAQ2yB,EAAOh2B,IAAK,CAAEyJ,MAAOqsB,IAAvEA,EAASroB,IAC7B,IAAKA,EACD,OAAO,KACX,IAAKooB,EAA2BM,UAAU1oB,GACtC,MAAM,IAAIgB,MAAM,gBAAkBhB,EAAM,eAAiBmC,EAAc,KAC3E,OAAOomB,GAAUA,EAAOpc,KAAOnM,GAAQ2I,GAAUA,EAAOggB,WAAcxc,KAAQnM,IAAI4oB,OAAO5oB,KAG7F6oB,EAAsB,SAAUC,GAChC,OAAO,SAA0B9sB,GAC7B,OAAQ8sB,EAAO9sB,IAAUA,EAAMgE,IAAMhE,EAAQA,EAAM2M,OAAS3M,EAAM2M,OAAOggB,UAAY,OAc7F,SAASI,EAAY/sB,GACjB,OAAOA,EAAM2M,OAAS3M,EAAM2M,OAAOjS,KAAK/F,OAAOqL,GAAkB,CAACA,GAEtE,SAASgtB,EAAgBhtB,GACrB,IAAI6L,EAAW7L,EAAM2M,QAAS,QAAO,GAAI3M,EAAM2M,OAAOd,UAAY,GAElE,OADAA,EAAS7L,EAAMjI,OAAQ,EAChB8T,EA2CJ,SAASohB,EAAmBjtB,GAE/B,IAA+BktB,EAAY3E,EA2BvC4E,EAAW,SAAUC,GAAK,OAAOA,EAAEC,SAAWD,EAAEtZ,OAEhDwZ,GAAqB,QAAQ,CAC7B,EAAC,QAAK,aAAc,SAAUF,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAE3iB,UAAW2iB,EAAE/oB,KAAM+oB,EAAEvE,UAC7F,EAAC,QAAK,cAAe,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAEG,WAAYH,EAAE/oB,MAAQ+oB,EAAEI,aAAcJ,EAAEvE,UACjH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAO,IAAIA,EAAEK,WAAe,GAAIL,EAAEvE,UACrH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAOA,EAAEM,WAAa,GAAIN,EAAEvE,OAAQuE,EAAEM,YACzH,EAAC,QAAK,eAAgB,SAAUN,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAI,KAAU,CAACA,EAAEO,aAAcP,EAAEvE,YAGrG+E,GAAmB,QAAQ,CAC3B,EAAC,SAAK,QAAK,OAAQ,MAAW,SAAU5nB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO,KAAU,CAAC9N,EAAMzP,KAAMyP,EAAM6iB,UACjH,EAAC,SAAK,QAAK,OAAQ,MAAU,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,OAAO,QAAK9N,EAAMzP,KAAMyP,EAAMzP,IAAIlC,MAAM,GAAI,GAAI2R,EAAM6iB,UAClI,EAAC,SAAK,QAAK,OAAQ,MAAa,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO9N,EAAMzP,KA/BvErD,EA+BqF8S,EAAMzP,IA9B5GuM,EAAY,cAIT5P,EAAY,SAAM4P,GAAaA,EAAU0H,SAAStX,EAAI4P,EAAUuH,WAAc,YA0BiCrE,EAAM6iB,QA/BjH,IAAU31B,EACjB4P,MAiCJ+qB,GAAkB,QAAQ,CAC1B,EAAC,IAAApiB,IAAG,KAAa,SAAUqE,GAAK,OAAOA,IACvC,CA5BmB,SAAUtD,GAAO,SAAUA,EAAIsH,QAAStH,EAAI/B,YA4B5C6iB,GACnB,CA3BoB,SAAU9gB,GAC9B,SAAWA,EAAI6gB,UAAW7gB,EAAIsH,SAAWtH,EAAIkhB,UAAYlhB,EAAI+gB,YAAc/gB,EAAImhB,aAAenhB,EAAIihB,YA0B9EH,GACpB,CAxBiB,SAAU9gB,GAC3B,SAAUA,GAAOA,EAAIjW,OAAQ,QAASiW,EAAIjW,OAAQ,QAAQiW,EAAIjW,OAAQ,QAAWiW,EAAIjW,QAuBpEq3B,GACjB,EAAC,SAAI,GAAO,SAAUphB,GAAO,MAAM,IAAIxH,MAAM,2BAA4B,QAAUwH,QAInFshB,EAAO9tB,EAAMd,QAEjB,QADY,QAAQ4uB,GAAQA,GArDGZ,EAqDmBY,EArDPvF,EAqDavoB,EAAMkpB,eAAiB,GApDpEpjB,OAAOC,KAAKmnB,GAAc,IAAIhsB,KAAI,SAAU4S,GAAS,MAAO,CAC/DA,MAAOA,EACPvd,IAAK22B,EAAWpZ,GAChBzP,UAAMqC,EACNmiB,OAAQN,EAAgBzU,SAiDnB5S,IAAI2sB,GAcrB,IAAIE,EAA8B,WAC9B,SAASA,EAAaC,EAAS7mB,GAC3B5U,KAAKy7B,QAAUA,EACf,IArIyBC,EAqIrBhuB,EAAO1N,KACP4d,EAAO,WAAc,OAAO6d,EAAQ3a,KAAK,KACzCyZ,EAAS,SAAU9sB,GAAS,MAAsB,KAAfA,EAAMjI,MAM7CxF,KAAK27B,SAAW,CACZn2B,KAAM,CAACi0B,GACP/rB,KAAM,CAACgsB,GACPtf,OAAQ,CARZ,SAAuB3M,GACnB,OAAI8sB,EAAO9sB,GACA,KACJguB,EAAQ3a,KAAKpT,EAAKkuB,WAAWnuB,KAAWmQ,MAM/CjW,KAAM,CAACgyB,GAEPloB,IAAK,CAACmoB,EAAchlB,EAAmBgJ,IAEvCwc,UAAW,CAACE,EAAoBC,IAChCnsB,OAAQ,EAtJastB,EAsJK9mB,EAAkB8mB,aArJ7C,SAAuBjuB,GAC1B,IACIouB,EAAapuB,EAAMgE,KAAOhE,EAAMgE,IAAI4hB,WAAW,CAAEjU,SAAS,KAAa,GACvE0c,GAAe,SAAO,SAAO,QAAKruB,EAAMW,QAAU,GAAIytB,EAAUltB,KAAI,QAAK,SAFvD,SAAUpD,EAAQF,GAAM,OAAOqwB,EAAa9qB,WAAWvF,EAAI,KAAMoC,EAAMC,UAG7F,OAAOmuB,EACFz5B,OAAO05B,GACPntB,KAAI,SAAUksB,GAAK,MAAO,CAACA,EAAExvB,GAAIwvB,MACjCjsB,OAAO,KAAY,OAiJpB4L,MAAO,GAEPrS,KAAM,CAACqyB,GAEPlhB,SAAU,CAACmhB,GACX1iB,YAAa,CAAC2iB,IAgEtB,OA7DAc,EAAa35B,UAAUk6B,QAAU,SAAUv2B,EAAM7E,GAC7C,IAAIg7B,EAAW37B,KAAK27B,SAChBpc,EAAQoc,EAASn2B,IAAS,GAE9B,OAAI,QAASA,MAAU,QAAU7E,GACtB4e,EAAMnQ,OAAS,EAAImQ,EAAQA,EAAM,IACvC,QAAS/Z,KAAU,QAAW7E,IAEnCg7B,EAASn2B,GAAQ+Z,EACjBoc,EAASn2B,GAAM/E,KAAKE,GACb,WAAc,OAAOg7B,EAASn2B,GAAMga,OAAOmc,EAASn2B,GAAM0I,QAAQvN,EAAI,KAAO,YAJpF,GAaJ66B,EAAa35B,UAAUm6B,MAAQ,SAAUvuB,GACrC,IAAeguB,EAANz7B,KAAmBy7B,QAASE,EAA5B37B,KAA0C27B,SAC/CvhB,EAASpa,KAAK47B,WAAWnuB,GAC7B,GAAI2M,IAAWqhB,EAAQ3a,KAAK1G,OAAQjG,GAAW,GAC3C,OAAO,KAEX,IAAK,IAAItO,KAAO81B,EACZ,GAAKA,EAASj5B,eAAemD,GAA7B,CAEA,IAAIo2B,EAAQN,EAAS91B,GAAK+I,QAAO,SAAUstB,EAAUpS,GAAQ,OAAO,SAAUmD,GAAU,OAAOnD,EAAKmD,EAAQiP,MAAiB,MAC7HzuB,EAAM5H,GAAOo2B,EAAMxuB,GAEvB,OAAOA,GAEX+tB,EAAa35B,UAAU+5B,WAAa,SAAUnuB,GAE1C,IAAIjI,EAAOiI,EAAMjI,MAAQ,GAErB22B,EAAW32B,EAAKsd,MAAM,KAM1B,GAFoB,OAFFqZ,EAASC,OAGvBD,EAASC,MACTD,EAAS/sB,OAAQ,CACjB,GAAI3B,EAAM2M,OACN,MAAM,IAAI3H,MAAM,mFAAqFjN,EAAO,KAGhH,OAAO22B,EAASlpB,KAAK,KAEzB,OAAKxF,EAAM2M,QAEJ,QAAS3M,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KADjD,IAGfg2B,EAAa35B,UAAU2D,KAAO,SAAUiI,GACpC,IAAIjI,EAAOiI,EAAMjI,KACjB,IAA2B,IAAvBA,EAAK0I,QAAQ,OAAgBT,EAAM2M,OACnC,OAAO5U,EACX,IAAIo2B,GAAa,QAASnuB,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KACtE,OAAOo2B,EAAaA,EAAa,IAAMp2B,EAAOA,GAE3Cg2B,EA5FsB,iTClL7Ba,EAA8B,WAC9B,SAASA,EAAaC,GAClBt8B,KAAKs8B,QAAUA,EAmDnB,OAjDAD,EAAax6B,UAAU06B,WAAa,SAAUC,GAE1C,OAAkC,KADlCA,EAAYA,GAAa,IACRtuB,QAAQ,MAAyC,IAA3BsuB,EAAUtuB,QAAQ,MAE7DmuB,EAAax6B,UAAUif,KAAO,SAAU2b,EAAaC,EAAMC,GAEvD,QADkB,IAAdA,IAAwBA,GAAY,GACnCF,GAA+B,KAAhBA,EAApB,CAEA,IAAIG,GAAQ,QAASH,GACjBj3B,EAAOo3B,EAAQH,EAAcA,EAAYj3B,KACzCxF,KAAKu8B,WAAW/2B,KAChBA,EAAOxF,KAAK03B,YAAYlyB,EAAMk3B,IAClC,IAAIjvB,EAAQzN,KAAKs8B,QAAQ92B,GACzB,GAAIiI,IAAUmvB,KAAWA,GAAUnvB,IAAUgvB,GAAehvB,EAAMC,OAAS+uB,IACvE,OAAOhvB,EAEN,GAAImvB,GAASD,EAAW,CACzB,IACIzZ,GADU,QAAOljB,KAAKs8B,SACJhzB,QAAO,SAAU2jB,GAAU,OAAOA,EAAO4P,mBAAmBC,UAAY7P,EAAO4P,mBAAmBC,SAAS5Z,QAAQ1d,MAIzI,OAHI0d,EAAQ9T,OAAS,GACjB,UAAkB,iDAAmD5J,EAAO,gBAAiB0d,EAAQvU,KAAI,SAAUqN,GAAS,OAAOA,EAAMxW,SAEtI0d,EAAQ,MAIvBmZ,EAAax6B,UAAU61B,YAAc,SAAUlyB,EAAMk3B,GACjD,IAAKA,EACD,MAAM,IAAIjqB,MAAM,sCAAwCjN,EAAO,KAKnE,IAJA,IAAIu3B,EAAY/8B,KAAK8gB,KAAK4b,GACtBM,EAAYx3B,EAAKsd,MAAM,KACvBma,EAAaD,EAAU5tB,OACvBiO,EAAI,EAAGyI,EAAUiX,EACd1f,EAAI4f,EAAY5f,IACnB,GAAqB,KAAjB2f,EAAU3f,IAAmB,IAANA,EAA3B,CAIA,GAAqB,MAAjB2f,EAAU3f,GAMd,MALI,IAAKyI,EAAQ1L,OACT,MAAM,IAAI3H,MAAM,SAAWjN,EAAO,0BAA4Bu3B,EAAUv3B,KAAO,KACnFsgB,EAAUA,EAAQ1L,YANlB0L,EAAUiX,EAWlB,IAAIG,EAAUF,EAAUl7B,MAAMub,GAAGpK,KAAK,KACtC,OAAO6S,EAAQtgB,MAAQsgB,EAAQtgB,MAAQ03B,EAAU,IAAM,IAAMA,GAE1Db,EArDsB,oWCW7Bc,EAA6B,WAE7B,SAASA,EAAY5xB,GACjB,OAAO4xB,EAAY37B,OAAO+J,GAAU,IA4FxC,OAlFA4xB,EAAY37B,OAAS,SAAU47B,GAC3BA,EAAYD,EAAYE,aAAaD,GAAa,IAAIA,EAAcA,EACpE,IAAI3vB,GAAQ,SAAQ,QAAQ2vB,EAAWD,EAAYt7B,YAMnD,OALAu7B,EAAUppB,QAAU,WAAc,OAAOvG,GACzCA,EAAMC,KAAO0vB,EACb3vB,EAAMovB,mBAAqB,CACvBC,SAAU,eAAgBrvB,EAAMjI,OAE7BiI,GAaX0vB,EAAYt7B,UAAUqX,GAAK,SAAUokB,GACjC,OAAOt9B,OAASs9B,GAAOt9B,KAAK0N,OAAS4vB,GAAOt9B,KAAKsL,QAAUgyB,GAM/DH,EAAYt7B,UAAUyJ,IAAM,WACxB,KAAKtL,KAAKoa,QAAYpa,KAAKoa,kBAAkBpa,KAAKokB,aAC9C,OAAOpkB,KAAKwF,KAChB,IAAIA,EAAOxF,KAAKoa,OAAO9O,MACvB,OAAO9F,EAAOA,EAAO,IAAMxF,KAAKwF,KAAOxF,KAAKwF,MAOhD23B,EAAYt7B,UAAU+b,KAAO,WACzB,OAAQ5d,KAAKoa,QAAUpa,KAAKoa,OAAOwD,QAAW5d,MAWlDm9B,EAAYt7B,UAAUwxB,WAAa,SAAUzyB,GAGzC,QAFAA,GAAO,QAASA,EAAM,CAAEwe,SAAS,EAAMme,aAAc,QAC/Bne,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOiZ,cAAiB,IAExEjxB,QAAO,QAAOpC,KAAKoO,SACnB9E,QAAO,SAAU0F,GAAS,OAAQpO,EAAK28B,cAAgB38B,EAAK28B,aAAa76B,eAAesM,EAAM3D,QASvG8xB,EAAYt7B,UAAU4xB,UAAY,SAAUpoB,EAAIzK,GAE5C,YADa,IAATA,IAAmBA,EAAO,IACrBZ,KAAKyR,KAAOzR,KAAKyR,IAAIgiB,UAAUpoB,EAAIzK,KACxC,SAAK,QAAOZ,KAAKoO,SAAS,QAAO,KAAM/C,KACtCzK,EAAKwe,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOqZ,UAAUpoB,IAE9D8xB,EAAYt7B,UAAUiT,SAAW,WAC7B,OAAO9U,KAAKsL,OAGhB6xB,EAAYE,aAAe,SAAUD,GACjC,OAAO,QAAWA,KAA+C,IAAjCA,EAA2B,iBAG/DD,EAAYK,mBAAqB,SAAUvjB,GAAO,OAAO,QAAWA,EAAa,UAEjFkjB,EAAYM,QAAU,SAAUxjB,GAAO,OAAO,QAASA,EAAwB,qBACxEkjB,EA/FqB,kPCZ5BO,EAAmC,WACnC,SAASA,EAAkBhpB,EAAQsY,EAAQ+O,EAAS4B,GAChD39B,KAAK0U,OAASA,EACd1U,KAAKgtB,OAASA,EACdhtB,KAAK+7B,QAAUA,EACf/7B,KAAK29B,UAAYA,EACjB39B,KAAK49B,MAAQ,GA4EjB,OA1EAF,EAAkB77B,UAAUqT,QAAU,WAClClV,KAAK49B,MAAQ,IAEjBF,EAAkB77B,UAAU6X,SAAW,SAAU0jB,GAC7C,IAAIQ,EAAQ59B,KAAK49B,MACbnwB,EAAQ,WAAmB2vB,GAC3B53B,EAAOiI,EAAMjI,KACjB,KAAK,QAASA,GACV,MAAM,IAAIiN,MAAM,gCACpB,GAAIzS,KAAKgtB,OAAOtqB,eAAe8C,KAAS,QAAQo4B,EAAMjvB,KAAI,QAAK,SAAUnJ,GACrE,MAAM,IAAIiN,MAAM,UAAYjN,EAAO,wBAGvC,OAFAo4B,EAAMn9B,KAAKgN,GACXzN,KAAK69B,QACEpwB,GAEXiwB,EAAkB77B,UAAUg8B,MAAQ,WAchC,IAbA,IAAI1tB,EAAQnQ,KACRqrB,EAAKrrB,KAAM49B,EAAQvS,EAAGuS,MAAO5Q,EAAS3B,EAAG2B,OAAQ+O,EAAU1Q,EAAG0Q,QAC9D+B,EAAa,GACjBC,EAAU,GACVC,EAAsB,GAClBC,EAAW,SAAUz4B,GAAQ,OAAO2K,EAAM6c,OAAOtqB,eAAe8C,IAAS2K,EAAM6c,OAAOxnB,IACtF04B,EAAkB,WACdJ,EAAW1uB,QACXe,EAAMwtB,UAAU58B,SAAQ,SAAUo9B,GAC9B,OAAOA,EAAS,aAAcL,EAAWnvB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,aAI1EkwB,EAAMxuB,OAAS,GAAG,CACrB,IAAI3B,EAAQmwB,EAAM37B,QACdm8B,EAAS3wB,EAAMjI,KACfc,EAASy1B,EAAQC,MAAMvuB,GACvB4wB,EAAYN,EAAQ7vB,QAAQT,GAChC,GAAInH,EAAJ,CACI,IAAIg4B,EAAgBL,EAASG,GAC7B,GAAIE,GAAiBA,EAAc94B,OAAS44B,EACxC,MAAM,IAAI3rB,MAAM,UAAY2rB,EAAS,wBAEzC,IAAIG,EAAsBN,EAASG,EAAS,OACxCG,GAEAv+B,KAAK0U,OAAOkC,cAAc4nB,WAAWD,GAEzCvR,EAAOoR,GAAU3wB,EACjBzN,KAAKy+B,YAAYhxB,GACb4wB,GAAa,GACbN,EAAQve,OAAO6e,EAAW,GAC9BP,EAAWr9B,KAAKgN,OAdpB,CAiBA,IAAIixB,EAAOV,EAAoBI,GAE/B,GADAJ,EAAoBI,GAAUR,EAAMxuB,OAChCivB,GAAa,GAAKK,IAASd,EAAMxuB,OAKjC,OAFAwuB,EAAMn9B,KAAKgN,GACXywB,IACOlR,EAEFqR,EAAY,GACjBN,EAAQt9B,KAAKgN,GAEjBmwB,EAAMn9B,KAAKgN,IAGf,OADAywB,IACOlR,GAEX0Q,EAAkB77B,UAAU48B,YAAc,SAAUhxB,GAChD,IAAIA,EAAMkxB,UAAalxB,EAAMgE,IAA7B,CAEA,IAAImtB,EAAW5+B,KAAK0U,OAAOuC,WAAW0F,MACtCiiB,EAASriB,KAAKqiB,EAASC,eAAer9B,OAAOiM,MAE1CiwB,EAlF2B,sbCQlCoB,EAA+B,WAE/B,SAASA,EAAcpqB,GACnB1U,KAAK0U,OAASA,EACd1U,KAAKgtB,OAAS,GAEdhtB,KAAK29B,UAAY,GACjB39B,KAAKy7B,QAAU,IAAI,IAAaz7B,KAAKgtB,QACrChtB,KAAK+7B,QAAU,IAAI,IAAa/7B,KAAKy7B,QAAS/mB,EAAOE,mBACrD5U,KAAK++B,WAAa,IAAI,IAAkBrqB,EAAQ1U,KAAKgtB,OAAQhtB,KAAK+7B,QAAS/7B,KAAK29B,WAChF39B,KAAKg/B,gBAmJT,OAhJAF,EAAcj9B,UAAUm9B,cAAgB,YAUvBh/B,KAAKi/B,MAAQj/B,KAAK++B,WAAWrlB,SATvB,CACflU,KAAM,GACNiM,IAAK,IACL+I,MAAO,KACPpM,OAAQ,CACJ,IAAK,CAAE5J,MAAO,KAAM0K,KAAM,OAAQye,SAAS,IAE/CgR,UAAU,KAGRvE,UAAY,MAGtB0E,EAAcj9B,UAAUqT,QAAU,WAC9B,IAAI/E,EAAQnQ,KACZA,KAAK++B,WAAW7pB,UAChBlV,KAAK29B,UAAY,GACjB39B,KAAK0Q,MAAM3P,SAAQ,SAAU0M,GAAS,OAAO0C,EAAMO,IAAIjD,IAAU0C,EAAMquB,WAAW/wB,OAgCtFqxB,EAAcj9B,UAAUq9B,gBAAkB,SAAUf,GAEhD,OADAn+B,KAAK29B,UAAUl9B,KAAK09B,GACb,YACH,QAAWn+B,KAAK29B,UAAhB,CAA2BQ,IAC7B76B,KAAKtD,OAWX8+B,EAAcj9B,UAAU+b,KAAO,WAC3B,OAAO5d,KAAKi/B,OAchBH,EAAcj9B,UAAU6X,SAAW,SAAUylB,GACzC,OAAOn/B,KAAK++B,WAAWrlB,SAASylB,IAGpCL,EAAcj9B,UAAUu9B,gBAAkB,SAAU3xB,GAChD,IAAI0C,EAAQnQ,KACRyb,EAAMzb,KAAK0Q,MAAM/B,KAAI,SAAUyO,GAAK,OAAOA,EAAEpJ,aAC7CqrB,EAAc,SAAUrS,GACxB,IAAIsS,EAAY7jB,EAAInS,QAAO,SAAU8T,GAAK,OAAqC,IAA9B4P,EAAO9e,QAAQkP,EAAEhD,WAClE,OAA4B,IAArBklB,EAAUlwB,OAAekwB,EAAYA,EAAUl9B,OAAOi9B,EAAYC,KAEzE12B,EAAWy2B,EAAY,CAAC5xB,IACxB8xB,EAAe,CAAC9xB,GAAOrL,OAAOwG,GAAUoX,UAW5C,OAVAuf,EAAax+B,SAAQ,SAAUksB,GAC3B,IAAI2R,EAAWzuB,EAAMuE,OAAOuC,WAAW0F,MAEvCiiB,EACKjiB,QACArT,QAAO,QAAO,QAAS2jB,IACvBlsB,SAAQ,SAAUwb,GAAQ,OAAOqiB,EAASY,WAAWjjB,aAEnDpM,EAAM6c,OAAOC,EAAOznB,SAExB+5B,GAWXT,EAAcj9B,UAAU28B,WAAa,SAAU/B,GAC3C,IAAIxP,EAASjtB,KAAK0Q,IAAI+rB,GACtB,IAAKxP,EACD,MAAM,IAAIxa,MAAM,sCAAwCgqB,GAC5D,IAAIgD,EAAqBz/B,KAAKo/B,gBAAgBnS,EAAOjZ,WAIrD,OAHAhU,KAAK29B,UAAU58B,SAAQ,SAAUo9B,GAC7B,OAAOA,EAAS,eAAgBsB,EAAmB9wB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,YAE5E+xB,GAEXX,EAAcj9B,UAAU6O,IAAM,SAAU+rB,EAAaC,GACjD,IAAIvsB,EAAQnQ,KACZ,GAAyB,IAArBgC,UAAUoN,OACV,OAAOmE,OAAOC,KAAKxT,KAAKgtB,QAAQre,KAAI,SAAUnJ,GAAQ,OAAO2K,EAAM6c,OAAOxnB,GAAMkI,QACpF,IAAIgyB,EAAQ1/B,KAAKy7B,QAAQ3a,KAAK2b,EAAaC,GAC3C,OAAQgD,GAASA,EAAMhyB,MAAS,MAYpCoxB,EAAcj9B,UAAUiV,UAAY,SAAU6oB,EAAUC,GACpD,OAAO5/B,KAAK+7B,QAAQA,QAAQ4D,EAAUC,IAEnCd,EA7JuB,2SCsB9Be,EAA6B,WAe7B,SAASA,EAAYC,EAAgBC,EAAaC,EAASC,GACvDjgC,KAAK8/B,eAAiBA,EACtB9/B,KAAK+/B,YAAcA,EACnB//B,KAAK+/B,YAAcA,EACnB//B,KAAKggC,SAAU,QAAO,GAAIA,GAAW,IACrChgC,KAAKigC,UAAW,QAAO,GAAIA,GAAY,IACvCjgC,KAAKkgC,YAAcJ,EAAerE,QAAQ3a,KAAKif,EAAa//B,KAAKigC,SAASE,UAsF9E,OAnFAN,EAAYh+B,UAAU2D,KAAO,WACzB,OAAQxF,KAAKkgC,aAAelgC,KAAKkgC,YAAY16B,MAASxF,KAAK+/B,aAG/DF,EAAYh+B,UAAU4qB,WAAa,WAC/B,OAAOzsB,KAAK+/B,aAGhBF,EAAYh+B,UAAUuM,OAAS,WAC3B,OAAOpO,KAAKggC,SAGhBH,EAAYh+B,UAAU4W,OAAS,WAC3B,OAAOzY,KAAKkgC,aAGhBL,EAAYh+B,UAAU4L,MAAQ,WAC1B,OAAOzN,KAAKkgC,aAAelgC,KAAKkgC,YAAYxyB,MAGhDmyB,EAAYh+B,UAAU1B,QAAU,WAC5B,OAAOH,KAAKigC,UAGhBJ,EAAYh+B,UAAUu+B,OAAS,WAC3B,SAAUpgC,KAAKkgC,cAAelgC,KAAKkgC,YAAYxyB,OAGnDmyB,EAAYh+B,UAAUw+B,MAAQ,WAC1B,OAAQrgC,KAAKqF,SAGjBw6B,EAAYh+B,UAAUwD,MAAQ,WAC1B,IAAIq3B,EAAO18B,KAAKG,UAAUggC,SAC1B,IAAKngC,KAAKkgC,aAAiBxD,EAAM,CAC7B,IAAIF,EAAYE,EAAKl3B,KAAOk3B,EAAKl3B,KAAOk3B,EACxC,MAAO,sBAAwB18B,KAAKwF,OAAS,iBAAmBg3B,EAAY,IAEhF,OAAKx8B,KAAKkgC,YAELlgC,KAAKkgC,YAAYxyB,UAAtB,EACW,UAAY1N,KAAKwF,OAAS,8BAF1B,kBAAoBxF,KAAKwF,OAAS,KAIjDq6B,EAAYh+B,UAAUiT,SAAW,WAC7B,MAAO,IAAM9U,KAAKwF,OAAS,KAAM,QAAUxF,KAAKoO,WAQpDyxB,EAAYh+B,UAAUy+B,UAAY,SAAU7yB,GACxC,OAAO,IAAIoyB,EAAY7/B,KAAK8/B,eAAgBryB,EAAOzN,KAAKggC,QAAShgC,KAAKigC,WAS1EJ,EAAYh+B,UAAU0+B,WAAa,SAAUnyB,EAAQ2G,QACjC,IAAZA,IAAsBA,GAAU,GACpC,IAAI8d,EAAY9d,EAAU3G,GAAS,QAAO,GAAIpO,KAAKggC,QAAS5xB,GAC5D,OAAO,IAAIyxB,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAalN,EAAW7yB,KAAKigC,WASlFJ,EAAYh+B,UAAU2+B,YAAc,SAAUrgC,EAAS4U,QACnC,IAAZA,IAAsBA,GAAU,GACpC,IAAI0rB,EAAU1rB,EAAU5U,GAAU,QAAO,GAAIH,KAAKigC,SAAU9/B,GAC5D,OAAO,IAAI0/B,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAa//B,KAAKggC,QAASS,IAGhFZ,EAAYa,MAAQ,SAAUzmB,GAC1B,OAAOA,GAAOA,EAAIxM,SAAU,QAASwM,EAAIxM,SAAW,QAASwM,EAAIxM,SAAU,QAASwM,EAAIxM,MAAMjI,QAE3Fq6B,EA3GqB,iYCf5Bc,EAA6B,WAC7B,SAASA,EAAY1U,GACjBjsB,KAAKisB,WAAaA,EA2EtB,OAzEA0U,EAAY9+B,UAAU++B,mBAAqB,SAAUC,GACjD,IAAI1wB,EAAQnQ,KAEZ,OADmBA,KAAKisB,WAAWvX,OAAOoY,kBACtB9iB,WACf82B,WAAWD,GACXlyB,KAAI,SAAUO,GAAQ,OAAOiB,EAAM4wB,WAAW7xB,MAC9CN,OAAO,KAAS,IAChBtF,OAAO,OAWhBq3B,EAAY9+B,UAAUk/B,WAAa,SAAUC,GACzC,IAAI/U,EAAajsB,KAAKisB,WAClBvd,EAAcud,EAAWvd,cAEzBuyB,EAAgBjhC,KAAKkhC,iBAAiBF,EAAUtyB,EAAaud,GACjE,IAAKgV,EACD,MAAO,GACX,IA4DWE,EA5DPC,EAAkB,CAClBnV,WAAYA,EACZnG,QAASmG,EAAW9rB,UAAU2lB,SAkBlC,OAAOmb,EACFtyB,KAjBqB,SAAUkF,GAMhC,OAJcA,EAAKqP,QAAQxU,EAAaud,GAEZ+U,EAASK,kBAAkB77B,MAElCmJ,KAAI,SAAUJ,GAC/B,IAAI0xB,GAAW,QAAO,CAClB38B,KAAMuQ,EAAKvQ,KACXg+B,UAAW,CAAEN,SAAUA,EAASx7B,KAAMqL,QAAStC,IAChD6yB,GACC3zB,EAAQuzB,EAASK,kBAAkBv+B,QAAU,UAA4ByL,EAAKd,MAAMC,KAAO,KAC3F6zB,EAAiB,IAAI,IAAetV,EAAYxe,EAAOoG,EAAMosB,GACjE,MAAO,CAAEpsB,KAAMA,EAAMtF,KAAMA,EAAMgzB,eAAgBA,SAKpD3yB,OAAO,KAAS,IAChB4c,MAqCM2V,EArCSH,EAASQ,iBAsCR,IAArBL,IAA+BA,GAAmB,GAC/C,SAA+B1O,EAAGlV,GACrC,IAAIkkB,EAASN,GAAoB,EAAI,EACjCO,GAAcjP,EAAElkB,KAAKd,MAAMtF,KAAKiH,OAASmO,EAAEhP,KAAKd,MAAMtF,KAAKiH,QAAUqyB,EACzE,OAAsB,IAAfC,EAAmBA,EAAankB,EAAE1J,KAAKzM,SAAWqrB,EAAE5e,KAAKzM,YAzC3DuH,KAAI,SAAU8E,GAAS,OAAOA,EAAM8tB,mBAa7CZ,EAAY9+B,UAAUq/B,iBAAmB,SAAUF,EAAUtyB,EAAaud,GACtE,IAAI0V,EAAWX,EAASY,YAAc,WAElC/6B,EAAe7G,KAAKisB,WAAWvX,OAAOoY,kBAE1C,OADiB6U,EAAW,CAAC96B,GAAgB,CAAC7G,KAAKisB,WAAYplB,IAE1D8H,KAAI,SAAUkzB,GAAO,OAAOA,EAAIC,SAASd,EAASx7B,SAClD8D,QAAO,QAAgB,KAAS,uBAAyB03B,EAASx7B,OAClEoJ,OAAO,KAAS,IAChBtF,QAAO,SAAUuK,GAAQ,OAAOA,EAAKqP,QAAQxU,EAAaud,OAE5D0U,EA7EqB,+PCDzB,SAASoB,EAAWt0B,EAAOu0B,EAAW/V,GACzC,IAAIgW,GAAU,QAASD,GAAa,CAACA,GAAaA,EAYlD,UADe,QAAWC,GAAWA,EAVrC,SAAoBhV,GAEhB,IADA,IAAIiV,EAAcD,EACT5kB,EAAI,EAAGA,EAAI6kB,EAAY9yB,OAAQiO,IAAK,CACzC,IAAIwF,EAAO,IAAI,KAAKqf,EAAY7kB,IAChC,GAAKwF,GAAQA,EAAKK,QAAQ+J,EAAOznB,QAAYqd,GAAQqf,EAAY7kB,KAAO4P,EAAOznB,KAC3E,OAAO,EAGf,OAAO,IAGMiI,EAAOwe,GAK5B,IAAIkW,EAAgC,WAChC,SAASA,EAAeC,EAASC,EAAW7hC,EAAU8hC,EAAeC,EAAwBpiC,QACzE,IAAZA,IAAsBA,EAAU,IACpCH,KAAKoiC,QAAUA,EACfpiC,KAAKqiC,UAAYA,EACjBriC,KAAKQ,SAAWA,EAChBR,KAAKsiC,cAAgBA,EACrBtiC,KAAKuiC,uBAAyBA,EAC9BviC,KAAKwiC,YAAc,EACnBxiC,KAAKyiC,eAAgB,EACrBziC,KAAKoH,SAAWjH,EAAQiH,UAAY,EACpCpH,KAAKsD,KAAOnD,EAAQmD,MAAQ,KAC5BtD,KAAK0iC,YAAcviC,EAAQuiC,YAqF/B,OApEAP,EAAetgC,UAAU8gC,eAAiB,SAAUC,EAAOZ,EAAW/V,GAClE,IAAkB,IAAd+V,EACA,OAAOY,EACX,IAAIpN,EAAWoN,EAAMt5B,QAAO,SAAUiF,GAAQ,OAAOwzB,EAAWxzB,EAAKd,MAAOu0B,EAAW/V,MACvF,OAAOuJ,EAASpmB,OAASomB,EAAW,MAgBxC2M,EAAetgC,UAAUghC,yBAA2B,WAChD,OAAO,QAAO7iC,KAAKoiC,QAAQp4B,WAAW84B,iBAAiB,WAAc,OAAO,MAiBhFX,EAAetgC,UAAUkhC,kBAAoB,SAAUr0B,EAAaud,GAChE,IAAI9b,EAAQnQ,KACR8P,GAAW,QAAO9P,KAAK6iC,2BAA4B7iC,KAAKsiC,eAE5D,OADY,QAAOtiC,KAAKoiC,QAAQp4B,WAAW84B,iBAC9Bl0B,QAAO,SAAUo0B,EAAIC,GAG9B,IAAIC,EAAcD,EAASngC,QAAU,UACjCqF,EAAOuG,EAAYu0B,EAASz9B,OAAS,GACrCo9B,EAAQM,EAAc/6B,EAAO,EAAC,QAAKA,IAEvC,OADA66B,EAAGC,EAASz9B,MAAQ2K,EAAMwyB,eAAeC,EAAO9yB,EAASmzB,EAASz9B,MAAOymB,GAClE+W,IACR,KAQPb,EAAetgC,UAAUqhB,QAAU,SAAUxU,EAAaud,GACtD,IAAI/I,EAAUljB,KAAK+iC,kBAAkBr0B,EAAaud,GAGlD,OADiB,QAAO/I,GAASigB,MAAM,MACnBjgB,EAAU,MAElCif,EAAetgC,UAAU28B,WAAa,WAClCx+B,KAAKuiC,uBAAuBviC,MAC5BA,KAAKyiC,eAAgB,GAElBN,EAjGwB,GAqG5B,SAASiB,EAAUtP,EAAUhH,EAAmBuV,GAEnD,IACIgB,GADoBvP,EAASwP,iBAAmBxP,EAASwP,kBAAoB,IACnDjB,EAAU78B,MAAQ,GAC5C+9B,GAAe,QAAWF,GAG9B,SAASG,EAAmBC,EAAajjC,EAAUL,QAC/B,IAAZA,IAAsBA,EAAU,IACpC,IAAI6pB,EAAiB,IAAImY,EAAerV,EAAmBuV,EAAW7hC,EAAUijC,EAAaF,EAAcpjC,GAE3G,OADAkjC,EAAM5iC,KAAKupB,GACJA,EAAewU,WAAWl7B,KAAK0mB,GAE1C,OAPA8J,EAASuO,EAAU78B,MAAQg+B,EAOpBA,2FCpJX,IAAIE,EAQAC,2BAPJ,SAAWD,GACPA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAAyB,IAAI,GAAK,MACtDA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA2B,MAAI,GAAK,QAL5D,CAMGA,IAAwBA,EAAsB,KAEjD,SAAWC,GACPA,EAAoBA,EAAgC,WAAI,GAAK,aAC7DA,EAAoBA,EAA2B,MAAI,GAAK,QAF5D,CAGGA,IAAwBA,EAAsB,8HCP7CC,2LACJ,SAAWA,GAOPA,EAAWA,EAAuB,WAAI,GAAK,aAM3CA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAoB,QAAI,GAAK,UAWxCA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAkB,MAAI,GAAK,QApC1C,CAqCGA,IAAeA,EAAa,KAG/B,IAAIv4B,EAAK,EACLw4B,EAA2B,WAC3B,SAASA,EAAU30B,EAAM40B,EAASC,GAE9B/jC,KAAKmb,IAAM9P,IACXrL,KAAKkP,KAAOA,EACZlP,KAAK8jC,QAAUA,EACf9jC,KAAK+jC,OAASA,EA4DlB,OAzDAF,EAAUG,mBAAqB,SAAU/pB,GACrC,OAAOA,GAA2B,mBAAbA,EAAIlP,OAAuB,IAAAmO,IAAG2qB,EAAH,CAAc5pB,EAAIyN,uBAGtEmc,EAAUI,WAAa,SAAUF,EAAQ5jC,GACrC,IACI+jC,EAAY,IAAIL,EAAUD,EAAWO,WAD3B,+DACgDJ,GAI9D,OAHI5jC,GAAWA,EAAQikC,aACnBF,EAAUE,YAAa,GAEpBF,GAGXL,EAAUO,WAAa,SAAUL,GAC7B,OAAOF,EAAUI,WAAWF,EAAQ,CAAEK,YAAY,KAGtDP,EAAUQ,QAAU,SAAUN,GAE1B,OAAO,IAAIF,EAAUD,EAAWU,QADlB,6BACoCP,IAGtDF,EAAUzK,QAAU,SAAU2K,GAE1B,OAAO,IAAIF,EAAUD,EAAWW,QADlB,6BACoCR,IAGtDF,EAAUW,QAAU,SAAUT,GAE1B,OAAO,IAAIF,EAAUD,EAAWa,QADlB,kCACoCV,IAGtDF,EAAUa,QAAU,SAAUX,GAE1B,OAAO,IAAIF,EAAUD,EAAWe,MADlB,yBACkCZ,IAWpDF,EAAUe,UAAY,SAAUb,GAC5B,OAAO,IAAA7qB,IAAG2qB,EAAH,CAAcE,GAAUA,EAASF,EAAUa,QAAQX,IAE9DF,EAAUhiC,UAAUiT,SAAW,WAC3B,IAA6BqkB,EACzB4K,GADyB5K,EACHn5B,KAAK+jC,SADgB5K,EAAErkB,WAAavB,OAAO1R,UAAUiT,SAAWqkB,EAAErkB,YAAa,QAAUqkB,GAE/G9N,EAAKrrB,KACT,MAAO,6BADcqrB,EAAGlQ,IACoB,UADRkQ,EAAGnc,KACwB,cADRmc,EAAGyY,QAC+B,aAAeC,EAAS,KAErHF,EAAUhiC,UAAUgjC,UAAY,WAC5B,OAAO,SAAO,QAAgB7kC,MAAO,CAAE0nB,qBAAsB1nB,QAE1D6jC,EAlEmB,oMC1C1BiB,EAEA,SAA6Bt/B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QACpG,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5CllC,KAAKwF,KAAOA,EACZxF,KAAK4hC,UAAYA,EACjB5hC,KAAK+kC,UAAYA,EACjB/kC,KAAKqhC,kBAAoBA,EACzBrhC,KAAKwhC,YAAcA,EACnBxhC,KAAKglC,iBAAmBA,EACxBhlC,KAAKilC,gBAAkBA,EACvBjlC,KAAKklC,YAAcA,gsBCVvBC,EAAiB,CACjBrf,QAAS,KACTmG,WAAY,KACZqV,UAAW,GACXh+B,KAAM,MAEN8hC,EAAgC,WAChC,SAASA,EAAenZ,EAAYoZ,EAAcrb,EAAgB7pB,GAC9D,IAAIgQ,EAAQnQ,KACZA,KAAKisB,WAAaA,EAClBjsB,KAAKqlC,aAAeA,EACpBrlC,KAAKgqB,eAAiBA,EACtBhqB,KAAKG,QAAUA,EACfH,KAAKslC,aAAe,WAAc,OAAOn1B,EAAMjB,KAAK0yB,YAAc,UAA4BzxB,EAAMhQ,QAAQ8rB,WAAWsZ,YACvHvlC,KAAKG,SAAU,QAASA,EAASglC,GACjCnlC,KAAKkP,KAAO8a,EAAeqY,UAyK/B,OArJA+C,EAAenJ,MAAQ,SAAUoH,EAAOmC,GAGpC,OAAOnC,EAAMz0B,QADU,SAAU8vB,EAAM+G,GAAY,OAAO/G,EAAK3zB,MAAK,WAAc,OAAO06B,EAASC,kBAC5DF,GAAW,gBAarDJ,EAAeO,YAAc,SAAUtC,EAAOuC,GAC1C,IAAK,IAAI32B,EAAM,EAAGA,EAAMo0B,EAAMj0B,OAAQH,IAAO,CACzC,IAAIib,EAAamZ,EAAMp0B,GAAKy2B,aAC5B,IAAI,QAAUxb,GAAa,CACvB,IAAI2b,EAAiBxC,EAAMvhC,MAAMmN,EAAM,GACvC,OAAOm2B,EAAenJ,MAAM4J,EAAgB3b,GAAYnf,KAAK66B,IAGrE,OAAOA,KAKXR,EAAeU,YAAc,SAAUzC,GACnCA,EAAMtiC,SAAQ,SAAU8S,GAAQ,OAAOA,EAAK6xB,iBAEhDN,EAAevjC,UAAUkkC,SAAW,SAAU7Y,GAC1CltB,KAAKisB,WAAWvX,OAAOmC,aAAamvB,qBAApChmC,CAA0DktB,IAE9DkY,EAAevjC,UAAU6jC,WAAa,WAClC,IAAIv1B,EAAQnQ,KACR6T,EAAO7T,KAAKgqB,eAChB,IAAInW,EAAK4uB,cAAT,CAEA,IAAIwD,EAAajmC,KAAKkmC,yBACtB,GAAID,EACA,OAAOA,EACX,IAAI9lC,EAAUH,KAAKG,QACnB,yBAA0BH,KAAMA,KAAKisB,WAAY9rB,GACjD,IAEIgmC,EAAc,SAAUjZ,GAAO,OAAOrZ,EAAKwuB,UAAU4C,gBAAgB90B,EAA/B0D,CAAsCqZ,IAC5EkZ,EAAe,SAAU9/B,GAAU,OAAOuN,EAAKwuB,UAAU2C,iBAAiB70B,EAAhC0D,CAAuCvN,IACrF,IACI,IAAIA,EALkCuN,EAAKrT,SAASuB,KAAK5B,EAAQmD,KAAM6M,EAAM8b,WAAY9b,EAAMk1B,cAM/F,OAAKrlC,KAAKkP,KAAKg2B,cAAe,QAAU5+B,GAC7BA,EAAO+b,OANH,SAAU6K,GAAO,OAAO,cAAoBA,GAAK2X,eAM1B95B,KAAKq7B,EAAcD,GAG9CC,EAAa9/B,GAG5B,MAAO4mB,GAEH,OAAOiZ,EAAY,cAAoBjZ,IAE3C,QACQrZ,EAAK6uB,eAAiB7uB,EAAK2uB,aAAe3uB,EAAK6uB,aAC/C7uB,EAAK2qB,gBAajB4G,EAAevjC,UAAUwkC,iBAAmB,SAAU//B,GAClD,IAAI6J,EAAQnQ,KAEZ,OADiBA,KAAKkmC,4BAIlB,QAAU5/B,GAEHA,EAAOyE,MAAK,SAAU/G,GAAO,OAAOmM,EAAMk2B,iBAAiBriC,OAEtE,qBAAsBsC,EAAQtG,KAAKisB,WAAYjsB,KAAKG,UAErC,IAAXmG,EAEO,YAAkB,2BAA2Bu+B,aAEpC,IAAA3rB,IAAG,IAEnBotB,CAAchgC,GAEP,eAAqBA,GAAQu+B,iBAFxC,KASJO,EAAevjC,UAAUqkC,uBAAyB,WAC9C,IAAIxxB,EAAS1U,KAAKisB,WAAWvX,OAE7B,OAAIA,EAAOqkB,UACA,YAAkB,sBAAwBrkB,EAAOyG,IAAM,gCAAgC0pB,YAE9F7kC,KAAKisB,WAAWsa,SACT,cAAoB1B,YAI3B7kC,KAAKslC,eAEE,eAAqBtlC,KAAKG,QAAQ2lB,WAAW+e,iBAFxD,GAKJO,EAAevjC,UAAUiT,SAAW,WAChC,IAAe3U,EAANH,KAAmBG,QAAS6pB,EAA5BhqB,KAAgDgqB,eACrDzpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAWwkB,EAAexpB,UAC/M,OAAOD,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,IAMlE4/B,EAAeoB,cAAgB,SAAU3yB,GAAQ,OAAO,SAAUvN,GAC9D,OAAOuN,EAAKwyB,iBAAiB//B,KAMjC8+B,EAAeqB,oBAAsB,SAAU5yB,GAAQ,OAAO,SAAUvN,IACpE,QAAUA,IAAWA,EAAO+b,OAAM,SAAU6K,GAAO,OAAOrZ,EAAKkyB,SAAS,cAAoB7Y,SAOhGkY,EAAesB,UAAY,SAAU7yB,GAAQ,OAAO,SAAUxO,GAAS,OAAOwO,EAAKkyB,SAAS1gC,KAC5F+/B,EAAeuB,aAAe,SAAU9yB,GAAQ,OAAO,SAAUxO,GAAS,OAAO,QAAgBA,KACjG+/B,EAAewB,YAAc,SAAU/yB,GAAQ,OAAO,SAAUxO,GAC5D,MAAMA,IAEH+/B,EAlLwB,qgBCXnC,SAASyB,EAAmBj3B,GACxBA,EAAMk3B,cAAc,cAAoB,IAAUl3B,EAAM8E,QAAS,IACjE9E,EAAMk3B,cAAc,cAAoB,IAAYl3B,GAAQ,IAC5DA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,GAAQ,IAChEA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,EAAMxB,UAAW,IACzEwB,EAAMuc,WAAWprB,SAAQ,SAAU0M,GAC/BmC,EAAMk3B,cAAc,cAAoB,UAAWr5B,GAAQA,MAG5D,IAGHs5B,EAAoB,CAAC,eAAgB,KACrCC,GAAe,QAAQD,GAKhBE,EAAqB,SAAUr3B,GACtC,IAAIgzB,GAAQ,QAAOhzB,EAAMlB,eAAeE,OAAO,KAAS,IAAIA,OAAO,KAAO,IAEtEs4B,EAA4B,SAAU3pB,GACtC,OAAOypB,EAAazpB,EAAEgE,OAAS,cAAoBhE,EAAEgE,MAAO,MAAQhE,GAExEqlB,EAAM7hC,SAAQ,SAAUwN,GACpBA,EAAKwJ,YAAcxJ,EAAKwJ,YAAYpJ,IAAIu4B,+MCnB5CC,EAAiB,SAAUv3B,GAC3B,IAAIw3B,EAAWx3B,EAAMuf,KAAKkY,WAC1B,GAAKD,EAAL,CAEA,IAAI3uB,EAAS7I,EAAM8E,OAAOmC,aAW1B,OAAI,QAAWuwB,GACJ,YAAiBA,EAASx3B,IAAQ7E,KAAKq7B,GAE3CA,EAAagB,GAbpB,SAAShB,EAAa9/B,GAClB,GAAKA,EAEL,OAAIA,aAAkB,IACXA,GACP,QAASA,GACFmS,EAAOpS,OAAOC,EAAQsJ,EAAMxB,SAAUwB,EAAMzP,WACnDmG,EAAc,OAAKA,EAAe,OAC3BmS,EAAOpS,OAAOC,EAAc,OAAKsJ,EAAMuf,KAAM7oB,EAAe,QAAKsJ,EAAMxB,SAAUwB,EAAMzP,gBADlG,IChBR,SAASmnC,EAAwB3zB,GAC7B,OAAO,SAAUsY,EAAYxe,GAGzB,OAAO85B,EAFM95B,EAAMuG,UACCL,IACNsY,EAAYxe,IAYlC,IAAI+5B,EAAaF,EAAwB,UAarCG,EAAeH,EAAwB,YAavCI,EAAcJ,EAAwB,2MC7C/BK,EAAwB,IAU/BC,EAAmB,SAAUh4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,QAAS9nB,GAAO7E,KAAK,OAcnF88B,EAAmB,SAAUj4B,EAAOnC,GACpC,OAAO,IAAI,IAAemC,EAAMlB,cAAcygB,IAAIpb,WAAWtG,EAAMuG,WAAW0jB,YAAY,OAAQ9nB,GAAO7E,KAAK,OAe9G+8B,EAAmB,SAAUl4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,OAAQ9nB,GAAO7E,KAAK,OCnClFg9B,EAAoB,SAAU9b,GAC9B,IAAIllB,EAAK,OACLihC,EAAgB/b,EAAWzR,MAAM,YACrC,GAAKwtB,EAAc54B,OAEnB,OAAOrI,EAAG0U,IAAIusB,EAAcr5B,KAAI,SAAUmL,GAAQ,OAAO/S,EAAGkJ,KAAK6J,EAAKuB,YAAatQ,KAAK,OAexFk9B,EAAgB,SAAUhc,GAC1B,IAAI+b,EAAgB/b,EAAWzR,MAAM,YACjC0tB,EAAejc,EAAWzR,MAAM,WACpC,GAAKwtB,EAAc54B,QAAW84B,EAAa94B,OAA3C,CAEA,IAAItI,EAAQmlB,EAAWvX,OAAOqC,YAC9BmxB,EAAannC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMshC,qBAAqBD,MACvEH,EAAcjnC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMuhC,mBAAmBF,MACtErhC,EAAM8lB,SCzBN0b,EAAoB,SAAU14B,GAC9B,IAAI0I,EAAU1I,EAAM8E,OAAO4D,QAOvBiwB,EAAyB,WAErBjwB,EAAQ2T,aAAerc,IACvB0I,EAAQ2T,WAAa,OAE7Brc,EAAM7B,UAAU,IAXW,WACvBuK,EAAQ0T,sBAAsBxG,QAAQ5V,GACtC0I,EAAQwa,SAAWljB,EAAMmjB,MACzBza,EAAQwN,QAAUxN,EAAQwa,SAASplB,MACnC,QAAKkC,EAAMxB,SAAUkK,EAAQlK,UAOS,CAAEhH,SAAU,MACtDwI,EAAMnM,QAAQsH,KAAKw9B,EAAwBA,ICtB3CC,EAAY,SAAUvc,GACtB,IAAI9rB,EAAU8rB,EAAW9rB,UACrBsY,EAASwT,EAAWvX,OAAOmC,aAC3B6B,EAAauT,EAAWvX,OAAOyH,UAKnC,GAAuB,QAAnBhc,EAAQ4e,QAAoB5e,EAAQ0V,UAAY4C,EAAOqa,SAASsH,UAAW,CAC3E,IAAIqO,EAAa,CAAE1zB,QAA8B,YAArB5U,EAAQ0V,UACpC6C,EAAWjY,KAAKgY,EAAOqa,SAASsH,UAAU3oB,IAAKgH,EAAOrK,OAAQq6B,GAElE/vB,EAAW0D,QAAO,kWCPtB,SAASssB,EAAY94B,GACjB,IAAI+4B,EAAgB/4B,EAAMg5B,iBAC1B,GAAKD,EAAL,CAEAtgC,EAAA,0BAA6BuH,GAC7B,IAAIi5B,EAAUj5B,EAAM8E,OAAO4D,QAAQ2T,WAOnC,MAHsB,kBAAlB0c,GAAqCE,GACrCA,EAAQC,QAEL,cAAoBjE,aCf/B,SAASkE,EAAsBn5B,GAC3B,IAAKA,EAAMywB,QACP,MAAM,IAAI5tB,MAAM7C,EAAMvK,QAAQyP,YAG/B,ICaIk0B,EAAmB,CAC1BnzB,UAAU,EACVsqB,SAAU,KACV/gB,SAAS,EACT6pB,QAAQ,EACRC,QAAQ,EACRC,WAAW,EACXC,OAAQ,GACRtjB,QAAS,WAAc,OAAO,MAC9B/G,OAAQ,WAaRsqB,EAAmC,WAEnC,SAASA,EAAkBC,GAEvBtpC,KAAKupC,iBAAmB,EAExBvpC,KAAKwpC,YAAc,GAEnBxpC,KAAKsjC,iBAAmB,GAExBtjC,KAAKypC,eAAiB,GACtBzpC,KAAKspC,QAAUA,EACftpC,KAAK8G,MAAQwiC,EAAQvyB,YACrB/W,KAAK0pC,mBAAqB,GAC1B1pC,KAAKgK,YAAc,SAAqB,QAAIhK,MAAO,IAAI,QAAIA,MAAO,CAC9D,kBACA,eACA,gBACA,aACA,aAEJA,KAAK2pC,mBACL3pC,KAAK4pC,oBACL5pC,KAAK6pC,+BACLP,EAAQhxB,QAAQ0T,sBAAsBzG,QAAQ0hB,GAuLlD,OA9JAoC,EAAkBxnC,UAAUioC,SAAW,SAAUh6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkO,SAAW,SAAUD,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkoC,QAAU,SAAUj6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUmoC,OAAS,SAAUl6B,EAAUtP,EAAUL,KAInEkpC,EAAkBxnC,UAAUooC,SAAW,SAAUn6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUqoC,QAAU,SAAUp6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUsoC,SAAW,SAAUr6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkM,UAAY,SAAU+B,EAAUtP,EAAUL,KAItEkpC,EAAkBxnC,UAAUuoC,QAAU,SAAUt6B,EAAUtP,EAAUL,KAOpEkpC,EAAkBxnC,UAAUqT,QAAU,SAAUR,IAC5C,QAAO1U,KAAKsjC,kBAAkBviC,SAAQ,SAAUspC,GAC5C,OAAOA,EAAWtpC,SAAQ,SAAU8S,GAChCA,EAAK4uB,eAAgB,GACrB,QAAW4H,EAAYx2B,UAenCw1B,EAAkBxnC,UAAUL,OAAS,SAAUyyB,EAAUzH,GACrD,OAAO,IAAI,IAAWyH,EAAUzH,EAAaxsB,KAAKspC,UAGtDD,EAAkBxnC,UAAU+nC,kBAAoB,WAC5C,IAAIU,EAAQ,IACRC,EAAK,IACLC,EAAQxqC,KAAKypC,eACbgB,GAAc,EACdC,GAAc,EAClB1qC,KAAK2qC,aAAa,WAAYL,EAAMM,OAAQ,EAAGJ,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG3D,YAAa8D,GAC9G1qC,KAAK2qC,aAAa,WAAYL,EAAMO,OAAQ,EAAGL,EAAMrb,IACrDnvB,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,EAAGN,EAAMrb,IACjDnvB,KAAK2qC,aAAa,SAAUL,EAAMQ,IAAK,IAAKN,EAAMv8B,SALV,GAMxCjO,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrV,UACpDn1B,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,IAAKN,EAAMre,UACnDnsB,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrb,IACpDnvB,KAAK2qC,aAAa,YAAaL,EAAMS,QAAS,EAAGP,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,GAC9G1qC,KAAK2qC,aAAa,UAAWL,EAAM3F,MAAO,EAAG6F,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,IAG9GrB,EAAkBxnC,UAAU8nC,iBAAmB,WAC3C,IAAIqB,EAAQ,UAA2BrhB,EAAa,eACpD3pB,KAAKirC,gBAAgB,KAAMthB,GAC3B3pB,KAAKirC,gBAAgB,OAAQthB,GAC7B3pB,KAAKirC,gBAAgB,UAAWD,GAChChrC,KAAKirC,gBAAgB,WAAYD,GACjChrC,KAAKirC,gBAAgB,WAAYD,IAGrC3B,EAAkBxnC,UAAU8oC,aAAe,SAAUnlC,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QAC5H,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5C,IAAI7C,EAAY,IAAI,IAAoB78B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,GACvIllC,KAAKwpC,YAAY/oC,KAAK4hC,IACtB,QAAUriC,KAAMA,KAAMqiC,IAG1BgH,EAAkBxnC,UAAUi/B,WAAa,SAAUD,GAI/C,QAH0B,QAAUA,GAC9B7gC,KAAKwpC,YAAYlgC,QAAO,SAAU4F,GAAQ,OAAOA,EAAK0yB,YAAcf,KACpE7gC,KAAKwpC,YAAY1nC,SACI0pB,MAAK,SAAUiH,EAAGlV,GACzC,IAAI2tB,EAAazY,EAAEmP,UAAYrkB,EAAEqkB,UACjC,OAAsB,IAAfsJ,EAAmBzY,EAAEsS,UAAYxnB,EAAEwnB,UAAYmG,MAgB9D7B,EAAkBxnC,UAAUopC,gBAAkB,SAAUzlC,EAAM2lC,GAC1DnrC,KAAKypC,eAAejkC,GAAQ,CAAEA,KAAMA,EAAM1C,MAAOqoC,IAIrD9B,EAAkBxnC,UAAUihC,cAAgB,WACxC,OAAO9iC,KAAKypC,gBAGhBJ,EAAkBxnC,UAAUigC,SAAW,SAAUnuB,GAC7C,OAAO3T,KAAKsjC,iBAAiB3vB,IAGjC01B,EAAkBxnC,UAAUgoC,6BAA+B,WACvD,IAAIuB,EAAMprC,KAAK0pC,mBACf0B,EAAIC,gBAA6CrrC,KTzN5B8pC,SAAS,GAAIjD,GS0NlCuE,EAAIhS,QAAwCp5B,KF/MvB+P,SAAS,GAAI24B,EAAa,CAAEthC,UAAW,OEgN5DgkC,EAAI/G,QD7N+B,SAAUvX,GACjD,OAAOA,EAAkB/c,SAAS,GAAIg5B,EAAuB,CAAE3hC,UAAW,MC4NxDkkC,CAA8BtrC,MAE5CorC,EAAI/D,WR7MwB,SAAUva,GAC1C,OAAOA,EAAkBid,QAAQ,CAAE5a,GAAI,SAAU1hB,GAAS,QAASA,EAAM45B,aAAiBF,GQ4MrEoE,CAAuBvrC,MAExCorC,EAAIpB,OPtNoB,SAAUld,GACtC,OAAOA,EAAkBkd,OAAO,CAAE/7B,QAAS,SAAUR,GAAS,QAASA,EAAMu8B,SAAaxC,GOqNzEgE,CAAmBxrC,MAChCorC,EAAInB,SP1MsB,SAAUnd,GACxC,OAAOA,EAAkBmd,SAAS,CAAE9U,SAAU,SAAU1nB,GAAS,QAASA,EAAMw8B,WAAexC,GOyM5EgE,CAAqBzrC,MACpCorC,EAAIlB,QP9LqB,SAAUpd,GACvC,OAAOA,EAAkBod,QAAQ,CAAE/d,SAAU,SAAU1e,GAAS,QAASA,EAAMy8B,UAAcxC,GO6L3EgE,CAAoB1rC,MAElCorC,EAAIO,aNjO0B,SAAU7e,GAC5C,OAAOA,EAAkBid,QAAQ,GAAInC,EAAkB,CAAExgC,SAAUugC,IMgO5CiE,CAAyB5rC,MAC5CorC,EAAIS,YNnN0B,SAAU/e,GAC5C,OAAOA,EAAkBod,QAAQ,CAAE/d,UAAU,SAAI,IAAS0b,EAAkB,CAAEzgC,SAAUugC,IMkNlEmE,CAAyB9rC,MAC3CorC,EAAIW,WNpM0B,SAAUjf,GAC5C,OAAOA,EAAkBqd,SAAS,GAAIrC,EAAkB,CAAE1gC,SAAUugC,IMmM/CqE,CAAyBhsC,MAE1CorC,EAAIa,ULpO2B,SAAUnf,GAC7C,OAAOA,EAAkBqd,SAAS,GAAIpC,GKmOlBmE,CAA0BlsC,MAC1CorC,EAAInD,cL9MuB,SAAUnb,GACzC,OAAOA,EAAkB/e,UAAU,GAAIk6B,GK6MfkE,CAAsBnsC,MAE1CorC,EAAIgB,cJ3N2B,SAAUtf,GAC7C,OAAOA,EAAkBgd,SAAS,GAAIxB,GI0Nd+D,CAA0BrsC,MAE9CorC,EAAI5C,UHvOmB,SAAU1b,GACrC,OAAOA,EAAkB/e,UAAU,GAAIy6B,EAAW,CAAEphC,SAAU,OGsO1CklC,CAAkBtsC,MAElCorC,EAAIhf,UAAW,OAAqBpsB,OAEjCqpC,EA/M2B,mSChClCkD,EAA2B,WACV,SAASA,EAA2B73B,GACjD,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKouB,WAAa,IAAI,EAAAiD,WACtBrxB,KAAKkX,eAAgB,EACrBlX,KAAKwsC,oBAAqB,EAC1BxsC,KAAKysC,eAAgB,EACrBzsC,KAAK0sC,sBAAuB,EAC5B1sC,KAAKkV,QAAU,WAAc,OAAO/E,EAAMie,WAAWlZ,WAOtElV,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuE,OAAO2C,eAAe5B,YAUjEzV,KAAK2sC,WAAa,SAAUC,GAAa,OAAOz8B,EAAMuE,OAAO2C,eAAes1B,WAAWC,IAMvF5sC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMuE,OAAO2C,eAAew1B,QAM7D7sC,KAAKqV,UAAY,WAAc,OAAOlF,EAAMuE,OAAO2C,eAAehC,aAMlErV,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMuE,OAAO2C,eAAey1B,QAM7D9sC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMuE,OAAO2C,eAAe01B,YAwFrE,OA1EAR,EAAU1qC,UAAUmrC,gBAAkB,SAAUxoC,GAC5C,OAAQxE,KAAKwsC,oBAAqB,QAAUhoC,GAASA,EAAQxE,KAAKwsC,oBAmBtED,EAAU1qC,UAAUotB,oBAAsB,SAAUzqB,GAChD,IAAI,QAAUA,KAAoB,IAAVA,IAA4B,IAAVA,KAAoB,QAASA,GACnE,MAAM,IAAIiO,MAAM,0BAA4BjO,EAAQ,mDACxD,OAAQxE,KAAK0sC,sBAAuB,QAAUloC,GAASA,EAAQxE,KAAK0sC,sBAcxEH,EAAU1qC,UAAUorC,WAAa,SAAUzoC,GACvC,OAAQxE,KAAKysC,eAAgB,QAAUjoC,GAASA,EAAQxE,KAAKysC,eAgCjEF,EAAU1qC,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACnD,IAAItiB,EAAOlP,KAAKouB,WAAWlf,KAAK1J,EAAMiU,EAAY+X,GAClD,OAAQ,QAAU/X,GAAqBzZ,KAAPkP,GAE7Bq9B,EA1ImB,0SCf1BW,EAAsC,WAStC,OARAA,EAAW35B,OAAO3Q,QAAU,SAASic,GACjC,IAAK,IAAIzB,EAAGC,EAAI,EAAGkD,EAAIve,UAAUoN,OAAQiO,EAAIkD,EAAGlD,IAE5C,IAAK,IAAIwd,KADTzd,EAAIpb,UAAUqb,GACO9J,OAAO1R,UAAUa,eAAeX,KAAKqb,EAAGyd,KACzDhc,EAAEgc,GAAKzd,EAAEyd,IAEjB,OAAOhc,IAEK1c,MAAMnC,KAAMgC,YAK5BmrC,EAA8B,WAC9B,SAASA,EAAaz4B,GAClB1U,KAAK0U,OAASA,EAWlB,OATAy4B,EAAatrC,UAAU+O,WAAa,SAAUvF,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE9E0/B,EAAatrC,UAAUoyB,SAAW,SAAU5oB,EAAI6D,EAAMzB,GAClD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,KAAcntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE5E0/B,EAAatrC,UAAUurC,WAAa,SAAU/hC,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAEvE0/B,EAbsB,GAsB7BE,EAAmC,WAEnC,SAASA,EAAmC34B,GACxC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAEd1U,KAAK07B,aAAe,IAAIyR,EAAantC,KAAK0U,QAE1C1U,KAAKstC,WAAa,IAClBttC,KAAKqtB,MAAQ,EAAAA,MAEbrtB,KAAKgtC,gBAAkB,SAAUxoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAOyhC,gBAAgBxoC,IAEhGxE,KAAKivB,oBAAsB,SAAUzqB,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0jB,oBAAoBzqB,IAExGxE,KAAKitC,WAAa,SAAUzoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0hC,WAAWzoC,IAEtFxE,KAAKkP,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpC,OAAOrhB,EAAMuE,OAAOuC,WAAW1L,OAAO2D,KAAK1J,EAAMiU,EAAY+X,IAAiBrhB,GA+CtF,OArCAk9B,EAAkBxrC,UAAUwF,QAAU,SAAUid,EAAS/Y,GACrD,IAAI+hB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAEnC6C,EAAS7C,IAAWA,EAAOkC,OAASlC,EAAO6C,OAC/C7C,EAAS6C,EAAS8+B,EAAS,CAAEz/B,MAAO,CAAEW,OAAQA,IAAY7C,GAAUA,EACpE,IAAIgiC,EAAe,CACfC,OAAQlgB,EAAUmf,cAClBO,gBAAiB1f,EAAUkf,mBAC3BiB,aAAcngB,EAAUpW,eAE5B,OAAO,IAAI,IAAWoN,EAASgJ,EAAUc,WAAYpuB,KAAK07B,cAAc,QAAO6R,EAAchiC,KASjG8hC,EAAkBxrC,UAAUs4B,UAAY,SAAUuT,GAE9C,KAAK,QAASA,GACV,OAAO,EACX,IAAIpnC,GAAS,EAKb,OAJA,QAAQ,eAAsB,SAAUtC,EAAKwB,IACrC,QAAWxB,KACXsC,EAASA,IAAU,QAAUonC,EAAOloC,MAAU,QAAWkoC,EAAOloC,QAEjEc,GAGX+mC,EAAkBxrC,UAAUnB,KAAO,WAC/B,IAAI4sB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAGvC,OAFA+hB,EAAUc,WAAW5I,SAAU,EAC/B8H,EAAUc,WAAWqD,kBACdzxB,MAEJqtC,EAjE2B,kOCjBlCM,EAA2B,WAE3B,SAASA,EAA2Bj5B,GAChC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAGd1U,KAAK4sB,KAAO,SAAU1W,GAAO,OAAO/F,EAAMuE,OAAOuC,WAAW2V,KAAK1W,IAEjElW,KAAKsc,OAAS,SAAUhH,GAAW,OAAOnF,EAAMuE,OAAOuC,WAAWqF,OAAOhH,IAEzEtV,KAAK+c,eAAiB,SAAU9Q,GAAS,OAAOkE,EAAMuE,OAAOuC,WAAW8F,eAAe9Q,IAEvFjM,KAAKgc,MAAQ,SAAU4xB,GAAY,OAAOz9B,EAAMuE,OAAOuC,WAAW+E,MAAM4xB,IAGxE5tC,KAAKuH,QAAU,SAAUwU,GACrB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMpV,QAAQwU,IAGjD/b,KAAK4c,UAAY,SAAUb,GACvB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMC,UAAUb,IAGnD/b,KAAKw/B,WAAa,SAAUjjB,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAM6iB,WAAWjjB,IAEpFvc,KAAKuc,KAAO,SAAUA,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAMJ,KAAKA,IAExEvc,KAAK2c,MAAQ,WAAc,OAAOxM,EAAMuE,OAAOuC,WAAW0F,MAAMA,SAEhE3c,KAAKwrB,KAAO,SAAUqiB,GAAa,OAAO19B,EAAMuE,OAAOuC,WAAW0F,MAAM6O,KAAKqiB,IAE7E7tC,KAAKiQ,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAAW,OAAOgQ,EAAMuE,OAAOuC,WAAW0F,MAAM1M,KAAKwrB,EAAS1f,EAAS5b,IAC/GH,KAAK6+B,eAAiB,IAAI,IAAenqB,GAyE7C,OAtEAi5B,EAAU9rC,UAAUua,OAAS,SAAU0xB,GACnC,IAAIphB,EAAO1sB,KAAK0U,OAAO0C,gBACnB02B,EACA9tC,KAAK6V,SAAW6W,EAAKjb,MAGrBib,EAAKjb,QAAUzR,KAAK6V,UAExB6W,EAAKjb,IAAIzR,KAAK6V,UAAU,IAY5B83B,EAAU9rC,UAAUpB,KAAO,SAAUstC,EAAY3/B,EAAQjO,GACrD,IAAI4U,EAAU5U,KAAaA,EAAQ4U,QACnC/U,KAAK0U,OAAOuC,WAAWxF,IAAIs8B,EAAWnmB,OAAOxZ,GAAU,IAAK2G,IAqBhE44B,EAAU9rC,UAAUmsC,KAAO,SAAUD,EAAY3/B,EAAQjO,GACrD,IAAIsR,EAAMs8B,EAAWnmB,OAAOxZ,GAC5B,GAAW,MAAPqD,EACA,OAAO,KACXtR,EAAUA,GAAW,CAAE8tC,UAAU,GACjC,IAAIpmC,EAAM7H,KAAK0U,OAAOuC,WAAW1L,OAC7B2iC,EAAUrmC,EAAIwN,YAKlB,GAJK64B,GAAmB,OAARz8B,IACZA,EAAM,IAAM5J,EAAI8kC,aAAel7B,GAEnCA,EA1GR,SAAwBA,EAAKy8B,EAASD,EAAUx4B,GAC5C,MAAiB,MAAbA,EACOhE,EACPy8B,GACO,QAAqBz4B,GAAYhE,EACxCw8B,EACOx4B,EAAS3T,MAAM,GAAK2P,EACxBA,EAmGG08B,CAAe18B,EAAKy8B,EAAS/tC,EAAQ8tC,SAAUpmC,EAAI4N,aACpDtV,EAAQ8tC,WAAax8B,EACtB,OAAOA,EAEX,IAAI28B,GAASF,GAAWz8B,EAAM,IAAM,GAChC48B,EAAUxmC,EAAIilC,OACdA,EAAoB,KAAZuB,GAA8B,MAAZA,EAAkB,GAAK,IAAMA,EAC3D,MAAO,CAACxmC,EAAIklC,WAAY,MAAOllC,EAAIglC,OAAQC,EAAMsB,EAAO38B,GAAKwB,KAAK,KAEtEM,OAAO+6B,eAAeX,EAAU9rC,UAAW,oBAAqB,CAE5D6O,IAAK,WACD,OAAO1Q,KAAK0U,OAAOuC,WAAWoF,mBAElCkyB,YAAY,EACZC,cAAc,IAEXb,EA1GmB,2aCJ1Bc,EAAgC,WAChC,SAASA,EAAe/5B,GACpB1U,KAAK0U,OAASA,EAiKlB,OA/JA+5B,EAAe5sC,UAAUwF,QAAU,SAAU2J,GACzC,OAAOhR,KAAK0U,OAAOE,kBAAkBvN,QAAQ2J,IAEjDy9B,EAAe5sC,UAAUL,OAAS,SAAUsb,EAAMf,GAC9C,IAAI5L,EAAQnQ,KACRy9B,EAAU,YAAqBD,EAAqB,uBACpDkR,GAAW,QAAQ,CACnB,CAAC,KAAU,SAAUC,GAAS,OAAOD,EAASv+B,EAAM9I,QAAQsnC,MAC5D,EAAC,IAAAz1B,IAAG,KAAa,SAAUy1B,GAAS,OAAOx+B,EAAMy+B,eAAeD,EAAO5yB,KACvE,EAAC,IAAAkI,IAAGwZ,EAASD,GAAqB,SAAUmR,GAAS,OAAOx+B,EAAM0+B,UAAUF,EAAOx+B,EAAMuE,UACzF,EAAC,IAAAwE,IAAG/P,QAAS,SAAUwlC,GAAS,OAAOx+B,EAAM2+B,WAAWH,EAAO5yB,KAC/D,CAAC,KAAY,SAAU4yB,GAAS,OAAO,IAAIlyB,EAAYkyB,EAAO5yB,OAE9DQ,EAAOmyB,EAAS5xB,GACpB,IAAKP,EACD,MAAM,IAAI9J,MAAM,4BACpB,OAAO8J,GAsCXkyB,EAAe5sC,UAAU+sC,eAAiB,SAAUb,EAAYhyB,GAC5D,IAAIgzB,EAAWhzB,GACX,QAASA,KACTA,EAAU/b,KAAK0U,OAAOE,kBAAkBvN,QAAQ0U,KAChD,IAAA7C,IAAG,IAAH,CAAe6C,KACfgzB,EAAW,SAAU/yB,GAAS,OAAOD,EAAQ6L,OAAO5L,KAiBxD,IAAIgzB,EAAU,CAAEjB,WAAYA,EAAYkB,cAPxC,SAAuB7gC,GACnB,IAAI8gC,EAAWnB,EAAW1a,aAAa/pB,QAAO,SAAU0F,GAAS,OAAOA,EAAM4f,cAC9E,OAAKsgB,EAAS9/B,OAEA8/B,EAAS5lC,QAAO,SAAU0F,GAAS,OAAOZ,EAAOY,EAAM3D,OACtD+D,OAAS8/B,EAAS9/B,OAFtB,MAIuDF,KAAM,cAC5E,OAAO,QAAO,IAAIuN,GAjBlB,SAA2BhL,GACvB,IAAIrD,EAAS2/B,EAAWtkC,KAAKgI,EAAItJ,KAAMsJ,EAAI09B,OAAQ19B,EAAIqgB,MACvD,OAAOic,EAAWre,UAAUthB,IAAWA,IAeM2gC,GAAWC,IAahEP,EAAe5sC,UAAUgtC,UAAY,SAAUO,EAAa16B,GACxD,IAAIjH,EAAQ,uBAA+B2hC,GAAeA,EAAYp7B,UAAYo7B,EAe9EJ,EAAU,CAAEvhC,MAAOA,EAAOyB,KAAM,SACpC,OAAO,QAAOlP,KAAK4uC,eAAenhC,EAAMgE,KAR1B,SAAUuK,GACpB,IAAIvD,EAAS/D,EAAOmC,aAChByB,EAAU5D,EAAO4D,QACjBG,EAAOu1B,KAAKvgC,EAAOuO,KAAWvD,EAAOu1B,KAAK11B,EAAQwN,QAASxN,EAAQlK,SACnEqK,EAAO42B,aAAa5hC,EAAOuO,EAAO,CAAEoD,SAAS,EAAML,OAAQ,WAIZiwB,IAkC3DP,EAAe5sC,UAAUitC,WAAa,SAAU7rB,EAAQlH,GACpD,GAAIkH,EAAOnF,QAAUmF,EAAOqsB,OACxB,MAAM,IAAI78B,MAAM,4CAMpB,IAIIs8B,GAAW,QAAShzB,GAJJ,SAAUC,GAE1B,OAAOD,EAAQhH,QAAQ,kBAAkB,SAAUC,EAAG8H,GAAQ,OAAOd,EAAe,MAATc,EAAe,EAAIyyB,OAAOzyB,QAEtDf,EAE/CizB,EAAU,CAAE/rB,OAAQA,EAAQ/T,KAAM,UACtC,OAAO,QAAO,IAAIuN,GAFU,SAAUhL,GAAO,OAAOwR,EAAOxZ,KAAKgI,EAAItJ,QAEf4mC,GAAWC,IAEpEP,EAAee,UAAY,SAAUv1B,GAAO,OAAOA,GAAO,CAAC,OAAQ,QAAS,WAAWkpB,OAAM,SAAUt9B,GAAO,OAAO,QAAUoU,EAAIpU,QAC5H4oC,EAnKwB,GA4K/BhyB,EACA,SAAqBT,EAAOD,GACxB,IAAI5L,EAAQnQ,KACZA,KAAKgc,MAAQA,EACbhc,KAAKkP,KAAO,MACZlP,KAAKivC,cAAgB,SAAUjzB,GAAS,OAAO,EAAI7L,EAAMgL,KACzDnb,KAAK+b,QAAUA,GAAW,2GCnK9B0zB,sPAaJ,SAASC,EAAa3zB,GAClB,MAAK,QAAWA,KAAa,QAASA,KAAa,IAAA7C,IAAG,EAAA2mB,YAAH,CAAgB9jB,IAAa,EAAA8jB,YAAA,MAAkB9jB,IAC9F,MAAM,IAAItJ,MAAM,4FAEpB,OAAO,QAAWsJ,GAAWA,GAAU,QAAIA,GAhB/C0zB,EAAoB,SAAUhyB,EAAGmB,GAC7B,IAAI+wB,EA5BW,SAAUlyB,EAAGmB,GAAK,OAAQA,EAAExX,UAAY,IAAMqW,EAAErW,UAAY,GA4BjEwoC,CAAanyB,EAAGmB,GAC1B,OAAY,IAAR+wB,GAGQ,KADZA,EA9BW,SAAUlyB,EAAGmB,GACxB,IAAIixB,EAAU,CAAE7E,MAAO,EAAG8E,WAAY,EAAGC,OAAQ,EAAGC,IAAK,EAAGC,MAAO,GACnE,OAAQJ,EAAQpyB,EAAEvO,OAAS,IAAM2gC,EAAQjxB,EAAE1P,OAAS,GA4B9CghC,CAASzyB,EAAGmB,KAIN,KADZ+wB,EA7BiB,SAAUlyB,EAAGmB,GAC9B,OAAQnB,EAAEswB,YAAenvB,EAAEmvB,WAAiB,YAAmBtwB,EAAEswB,WAAYnvB,EAAEmvB,YAAvC,EA4BlCoC,CAAe1yB,EAAGmB,IAJb+wB,EAtBF,SAAUlyB,EAAGmB,GAEtB,IAAIwxB,EAAmB,CAAEpF,OAAO,EAAM8E,YAAY,GAElD,OADYM,EAAiB3yB,EAAEvO,OAASkhC,EAAiBxxB,EAAE1P,MAC5C,GAAKuO,EAAEtC,KAAO,IAAMyD,EAAEzD,KAAO,GAyBrCk1B,CAAO5yB,EAAGmB,IAkBrB,IAAI0xB,EAA0B,WAE1B,SAASA,EAA0B57B,GAC/B1U,KAAK0U,OAASA,EACG1U,KAAKuwC,QAAUd,EACfzvC,KAAKwwC,OAAS,GACdxwC,KAAKywC,IAAM,EAC5BzwC,KAAK6+B,eAAiB,IAAI,IAAenqB,GA8Q7C,OA3QA47B,EAASzuC,UAAUqT,QAAU,SAAUR,GACnC1U,KAAKwwC,OAAS,UACPxwC,KAAK0wC,cAqChBJ,EAASzuC,UAAU0F,QAAU,SAAUwU,GACnC,IAAI40B,EAAYjB,EAAa3zB,GAI7B/b,KAAKuc,KAAKvc,KAAK6+B,eAAer9B,QAHhB,SAAUosC,EAAUl5B,GAC9B,OAAmD,IAA5CA,EAAO4D,QAAQyT,kBAAkBnG,UAAkB,QAAQnc,KAAKmkC,EAASzlC,QAEtCwoC,KA6ClDL,EAASzuC,UAAU+a,UAAY,SAAUb,GACrC,IAAI40B,EAAYjB,EAAa3zB,GAC7B/b,KAAK0wC,aAAe1wC,KAAK6+B,eAAer9B,QAAO,SAAI,GAAOmvC,GAC1D3wC,KAAK4wC,SAAU,GAOnBN,EAASzuC,UAAU29B,WAAa,SAAUjjB,IACtC,QAAWvc,KAAKwwC,OAAQj0B,IAc5B+zB,EAASzuC,UAAU0a,KAAO,SAAUA,GAChC,IAAIpM,EAAQnQ,KACZ,IAAK,cAAyBuc,GAC1B,MAAM,IAAI9J,MAAM,gBAKpB,OAJA8J,EAAKpB,IAAMnb,KAAKywC,MAChBl0B,EAAKnV,SAAWmV,EAAKnV,UAAY,EACjCpH,KAAKwwC,OAAO/vC,KAAK8b,GACjBvc,KAAK4wC,SAAU,EACR,WAAc,OAAOzgC,EAAMqvB,WAAWjjB,KAOjD+zB,EAASzuC,UAAU8a,MAAQ,WAEvB,OADA3c,KAAK6wC,eACE7wC,KAAKwwC,OAAOpuC,OAAOpC,KAAK0wC,aAAe,CAAC1wC,KAAK0wC,cAAgB,KA4CxEJ,EAASzuC,UAAU2pB,KAAO,SAAUqiB,GAIhC,IAHA,IAAIiD,EAAS9wC,KAAK+wC,WAAW/wC,KAAKwwC,OAASxwC,KAAKuwC,QAAU1C,GAAa7tC,KAAKuwC,SAExES,EAAQ,EACH3zB,EAAI,EAAGA,EAAIyzB,EAAO1hC,OAAQiO,IAC/ByzB,EAAOzzB,GAAG4zB,OAASD,EACf3zB,EAAIyzB,EAAO1hC,OAAS,GAAgD,IAA3CpP,KAAKuwC,QAAQO,EAAOzzB,GAAIyzB,EAAOzzB,EAAI,KAC5D2zB,IAGRhxC,KAAKwwC,OAASM,EACd9wC,KAAK4wC,SAAU,GAGnBN,EAASzuC,UAAUgvC,aAAe,WAC9B7wC,KAAK4wC,SAAW5wC,KAAKwrB,QAGzB8kB,EAASzuC,UAAUkvC,WAAa,SAAUrxB,EAAKmuB,GAC3C,IAAIqD,EAAexxB,EAAI/Q,KAAI,SAAUuS,EAAMjS,GAAO,MAAO,CAAGiS,KAAMA,EAAMjS,IAAKA,MAK7E,OAJAiiC,EAAa1lB,MAAK,SAAU2lB,EAAUC,GAClC,IAAIC,EAAUxD,EAAUsD,EAASjwB,KAAMkwB,EAASlwB,MAChD,OAAmB,IAAZmwB,EAAgBF,EAASliC,IAAMmiC,EAASniC,IAAMoiC,KAElDH,EAAaviC,KAAI,SAAU2iC,GAAW,OAAOA,EAAQpwB,SA6DhEovB,EAASzuC,UAAUoO,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAClD,IAAIoc,EAAOvc,KAAK6+B,eAAer9B,OAAOi6B,EAAS1f,GAI/C,OAHI,QAAU5b,GAAWA,EAAQiH,YAC7BmV,EAAKnV,SAAWjH,EAAQiH,UAC5BpH,KAAKuc,KAAKA,GACHA,GAEJ+zB,EArRkB,8VCpDzBiB,EAA4B,WAE5B,SAASA,EAA4B78B,GACjC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKqc,mBAAoB,EAM1Crc,KAAK2c,MAAQ,IAAI,IAAS3c,KAAK0U,QAM/B1U,KAAKuL,OAAS,IAAI,IAAUvL,KAAK0U,QAsDjC1U,KAAKyR,IAAM,SAAU+/B,EAAQz8B,EAAStH,GAClC,OAAO0C,EAAMuE,OAAO0C,gBAAgB3F,IAAI+/B,EAAQz8B,EAAStH,IAS7DzN,KAAKmI,KAAO,WAAc,OAAOgI,EAAMuE,OAAO0C,gBAAgBjP,QAQ9DnI,KAAKmvC,OAAS,WAAc,OAAOh/B,EAAMuE,OAAO0C,gBAAgB+3B,UAQhEnvC,KAAK8xB,KAAO,WAAc,OAAO3hB,EAAMuE,OAAO0C,gBAAgB0a,QAgB9D9xB,KAAKmV,SAAW,SAAU3U,GAAY,OAAO2P,EAAMuE,OAAO0C,gBAAgBjC,SAAS3U,IA4IvF,OAzIA+wC,EAAW1vC,UAAUqT,QAAU,WAC3BlV,KAAKsc,QAAO,GACZtc,KAAK2c,MAAMzH,WAOfq8B,EAAW1vC,UAAU8qB,MAAQ,WACzB,MAAO,CAAExkB,KAAMnI,KAAKmI,OAAQgnC,OAAQnvC,KAAKmvC,SAAUrd,KAAM9xB,KAAK8xB,SAsBlEyf,EAAW1vC,UAAU+qB,KAAO,SAAU1W,GAClC,IAAIA,IAAOA,EAAI5T,iBAAf,CAEA,IAAI+oB,EAAKrrB,KAAK0U,OAAQuC,EAAaoU,EAAGpU,WAAYJ,EAAewU,EAAGxU,aAChEpF,EAAM,CAAEtJ,KAAM8O,EAAW9O,OAAQgnC,OAAQl4B,EAAWk4B,SAAUrd,KAAM7a,EAAW6a,QAC/E2f,EAAOzxC,KAAKgc,MAAMvK,IACJ,QAAQ,CACtB,CAAC,KAAU,SAAU+/B,GAAU,OAAOv6B,EAAWxF,IAAI+/B,GAAQ,KAC7D,CAAC,EAAA3R,YAAA,MAAmB,SAAU3sB,GAAO,OAAO2D,EAAa66B,GAAGx+B,EAAIzF,MAAOyF,EAAI9E,OAAQ8E,EAAI/S,WACvF,EAAC,IAAA+Y,IAAG,EAAA2mB,aAAc,SAAUx5B,GAAU,OAAOwQ,EAAa66B,GAAGrrC,EAAOoH,QAASpH,EAAO+H,SAAU/H,EAAOlG,cAEzGwxC,CAAYF,GAAQA,EAAKl1B,KAAKR,QAAQ01B,EAAKz1B,MAAOvK,EAAKzR,KAAK0U,WAwBhE68B,EAAW1vC,UAAUya,OAAS,SAAUhH,GACpC,IAAInF,EAAQnQ,KACZ,IAAgB,IAAZsV,EAKA,OAAQtV,KAAK4xC,iBACT5xC,KAAK4xC,kBAAoB5xC,KAAK0U,OAAOuC,WAAW9B,UAAS,SAAUe,GAAO,OAAO/F,EAAMyc,KAAK1W,MALhGlW,KAAK4xC,kBAAoB5xC,KAAK4xC,0BACvB5xC,KAAK4xC,kBA+BpBL,EAAW1vC,UAAUkb,eAAiB,SAAU9Q,QAC9BkI,IAAVlI,IACAA,GAAQ,GACZjM,KAAKqc,kBAAoBpQ,GAQ7BslC,EAAW1vC,UAAUma,MAAQ,SAAUvK,GAEnCA,GAAM,QAAO,CAAEtJ,KAAM,GAAIgnC,OAAQ,GAAIrd,KAAM,IAAMrgB,GAYjD,IAXA,IAUIggC,EARsBl1B,EAClBP,EAHJW,EAAQ3c,KAAK2c,MAAMA,QAWdU,EAAI,EAAGA,EAAIV,EAAMvN,UAElBqiC,GAAQA,EAAKl1B,KAAK00B,SAAWt0B,EAAMU,GAAG4zB,QAFZ5zB,IAAK,CAInC,IAAIyI,QAZA9J,GAAAA,GADkBO,EAaEI,EAAMU,IAZbrB,MAAMvK,EALfzR,KAK0B0U,UAClB,CAAEsH,MAAOA,EAAOO,KAAMA,EAAMs1B,OAAQt1B,EAAK0yB,cAAcjzB,KAavEy1B,GAAQA,GAAS3rB,GAAWA,EAAQ+rB,OAASJ,EAAKI,OAAU/rB,EAAU2rB,EAE1E,OAAOA,GAEJF,EA7PoB,oZCJ3BO,EAAsC,WACtC,SAASA,EAAqBp9B,EAAQq9B,GAClC,IAAI5hC,EAAQnQ,KACZA,KAAK+xC,gBAAkBA,EACvB/xC,KAAKgyC,WAAa,GAClBhyC,KAAKiyC,UAAY,SAAU/7B,GAAO,OAAO/F,EAAM6hC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAGoL,OAC5FlW,KAAK8xB,KAAO,WAAc,OAAO,QAAS3hB,EAAM+hC,QAAQpgB,MACxD9xB,KAAKmI,KAAO,WAAc,OAAO,QAASgI,EAAM+hC,QAAQ/pC,MACxDnI,KAAKmvC,OAAS,WAAc,OAAO,SAAU,QAASh/B,EAAM+hC,QAAQ/C,SACpEnvC,KAAKmyC,UAAY,cACjBnyC,KAAKoyC,SAAW,aAoBpB,OAlBAN,EAAqBjwC,UAAU4P,IAAM,SAAUA,EAAKsD,GAQhD,YAPgB,IAAZA,IAAsBA,GAAU,IAChC,QAAUtD,IAAQA,IAAQzR,KAAKkyC,SAC/BlyC,KAAKmpB,KAAK,KAAM,KAAM1X,EAAKsD,GACvB/U,KAAK+xC,iBACL/xC,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAG,CAAE2G,IAAKA,SAG1D,QAASzR,OAEpB8xC,EAAqBjwC,UAAUsT,SAAW,SAAUrK,GAChD,IAAIqF,EAAQnQ,KAEZ,OADAA,KAAKgyC,WAAWvxC,KAAKqK,GACd,WAAc,OAAO,QAAWqF,EAAM6hC,WAAYlnC,KAE7DgnC,EAAqBjwC,UAAUqT,QAAU,SAAUR,IAC/C,QAAS1U,KAAKgyC,aAEXF,EA9B8B,2LCDrCO,EAAuC,WACvC,SAASA,EAAsB39B,EAAQ49B,QAClB,IAAbA,IAAuBA,GAAW,GACtCtyC,KAAKsyC,SAAWA,EAChBtyC,KAAK0V,eAAYvB,EACjBnU,KAAKuyC,YAAc,GAmCvB,OAjCAF,EAAsBxwC,UAAUirC,KAAO,WACnC,OAAIj3B,SAASi3B,KACFyC,OAAO15B,SAASi3B,MAEA,UAApB9sC,KAAK+sC,WAAyB,IAAM,IAE/CsF,EAAsBxwC,UAAUkrC,SAAW,WACvC,OAAOl3B,SAASk3B,SAASh4B,QAAQ,KAAM,KAE3Cs9B,EAAsBxwC,UAAUgrC,KAAO,WACnC,OAAOh3B,SAAS28B,UAEpBH,EAAsBxwC,UAAUwT,UAAY,WACxC,OAAOrV,KAAKsyC,UAEhBD,EAAsBxwC,UAAU8qC,WAAa,SAAUC,GACnD,OAAO,QAAUA,GAAc5sC,KAAKuyC,YAAc3F,EAAa5sC,KAAKuyC,aAExEF,EAAsBxwC,UAAU4T,SAAW,SAAUu4B,GAKjD,OAJI,QAAUA,KACVhuC,KAAK0V,UAAYs4B,IACjB,QAAYhuC,KAAK0V,aACjB1V,KAAK0V,UAAY1V,KAAKyyC,eACnBzyC,KAAK0V,WAEhB28B,EAAsBxwC,UAAU4wC,YAAc,WAC1C,IAAIC,EAAUrsB,SAASssB,qBAAqB,QAAQ,GACpD,OAAID,GAAWA,EAAQ1E,KACZ0E,EAAQ1E,KAAKj5B,QAAQ,uBAAwB,IAEjD/U,KAAKsyC,SAAW,IAAMz8B,SAAS/B,UAAY,KAEtDu+B,EAAsBxwC,UAAUqT,QAAU,aACnCm9B,EAxC+B,uHCDlCO,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAMnFC,EAAqC,SAAUC,GAE/C,SAASD,EAAoBv+B,GACzB,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAU1U,KAEhD,OADA,sBAAsB,aAAcmQ,EAAM8hC,WAAW,GAC9C9hC,EAYX,OAhBA0iC,EAAUI,EAAqBC,GAM/BD,EAAoBpxC,UAAUqwC,KAAO,WACjC,OAAO,QAAYlyC,KAAKmyC,UAAUrgB,OAEtCmhB,EAAoBpxC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAC9D/U,KAAKmyC,UAAUrgB,KAAOrgB,GAE1BwhC,EAAoBpxC,UAAUqT,QAAU,SAAUR,GAC9Cw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,aAAc1U,KAAKiyC,YAEzCgB,EAjB6B,CAkBtC,6cC/BEG,EACA,WACI,IAAIjjC,EAAQnQ,KACZA,KAAKkV,QAAU,KACflV,KAAK0V,UAAY,GACjB1V,KAAKqzC,MAAQ,GACbrzC,KAAKszC,UAAY,OACjBtzC,KAAKuzC,MAAQ,YACbvzC,KAAKuyC,YAAc,GACnBvyC,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMkjC,OACvCrzC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMmjC,WAC3CtzC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMojC,OACvCvzC,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuF,WAC3C1V,KAAKqV,UAAY,WAAc,OAAO,GACtCrV,KAAK2sC,WAAa,SAAU6G,GAAU,OAAQ,QAAUA,GAAWrjC,EAAMoiC,YAAciB,EAAUrjC,EAAMoiC,oIChBvGK,8EADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAKnFS,EAAuC,SAAUP,GAEjD,SAASO,EAAsB/+B,GAC3B,OAAOw+B,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAQ9C,OAVA6yC,EAAUY,EAAuBP,GAIjCO,EAAsB5xC,UAAUqwC,KAAO,WACnC,OAAOlyC,KAAK0zC,MAEhBD,EAAsB5xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAChE/U,KAAK0zC,KAAOjiC,GAETgiC,EAX+B,CAYxC,0tBCZ8B,QAAsB,4BAA4B,EAAO,IAAqB,MAEzE,QAAsB,6BAA6B,EAAM,IAA0B,MAEtF,QAAsB,0BAA0B,EAAO,IAAuB,8HClBxGb,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAUnFW,EAA0C,SAAUT,GAEpD,SAASS,EAAyBj/B,GAC9B,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAG/C,OAFAmQ,EAAMyjC,QAAUl/B,EAAOuC,WAAW1L,OAClC,sBAAsB,WAAY4E,EAAM8hC,WAAW,GAC5C9hC,EA8CX,OAnDA0iC,EAAUc,EAA0BT,GAuBpCS,EAAyB9xC,UAAUgyC,eAAiB,WAChD,OAAO,QAAqB7zC,KAAK4zC,QAAQn+B,aAE7Ck+B,EAAyB9xC,UAAUqwC,KAAO,WACtC,IAAI7mB,EAAKrrB,KAAKmyC,UAAWr+B,EAAWuX,EAAGvX,SAAUge,EAAOzG,EAAGyG,KAAMqd,EAAS9jB,EAAG8jB,OAC7EA,GAAS,QAAWA,GAAQ,GAC5Brd,GAAO,QAAUA,GAAM,GACvB,IAAIgiB,EAAa9zC,KAAK6zC,iBAClBE,EAAqBjgC,IAAa9T,KAAK4zC,QAAQn+B,WAC/Cu+B,EAAiBlgC,EAASiT,OAAO,EAAG+sB,EAAW1kC,UAAY0kC,EAE/D,OADAhgC,EAAWigC,EAAqB,IAAMC,EAAiBlgC,EAASmmB,UAAU6Z,EAAW1kC,QAAU0E,IAC5Eq7B,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE1E6hB,EAAyB9xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GACnE,IAAI++B,EAAa9zC,KAAK6zC,iBAClBzF,EAAQ38B,GAAkB,MAAXA,EAAI,GAAa,IAAM,GACtCwiC,EAAkB,KAARxiC,GAAsB,MAARA,EAAczR,KAAK4zC,QAAQn+B,WAAaq+B,EAAa1F,EAAQ38B,EACrFsD,EACA/U,KAAKoyC,SAAS8B,aAAazmC,EAAO0lC,EAAOc,GAGzCj0C,KAAKoyC,SAAS+B,UAAU1mC,EAAO0lC,EAAOc,IAG9CN,EAAyB9xC,UAAUqT,QAAU,SAAUR,GACnDw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,WAAY1U,KAAKiyC,YAEvC0B,EApDkC,CAqD3C,qKCzDS5sC,EAAK,CAEZkJ,KAAM,SAAUjM,GAAO,OAAO,IAAIowC,SAAQ,SAAUznC,EAAS0nC,GAAU,OAAO1nC,EAAQ3I,OAEtFqwC,OAAQ,SAAUrwC,GACd,OAAO,IAAIowC,SAAQ,SAAUznC,EAAS0nC,GAClCA,EAAOrwC,OAIfiI,MAAO,WACH,IAAIqoC,EAAW,GAKf,OAJAA,EAAS7wC,QAAU,IAAI2wC,SAAQ,SAAUznC,EAAS0nC,GAC9CC,EAAS3nC,QAAUA,EACnB2nC,EAASD,OAASA,KAEfC,GAGX74B,IAAK,SAAUF,GACX,IAAI,QAAQA,GACR,OAAO64B,QAAQ34B,IAAIF,GAEvB,IAAI,QAASA,GAAW,CAGpB,IAAI0gB,EAAQ1oB,OAAOC,KAAK+H,GAAU5M,KAAI,SAAU9I,GAAO,OAAO0V,EAAS1V,GAAKkF,MAAK,SAAU/G,GAAO,MAAO,CAAG6B,IAAKA,EAAK7B,IAAKA,SAE3H,OAAO+C,EAAG0U,IAAIwgB,GAAOlxB,MAAK,SAAUiW,GAChC,OAAOA,EAAOpS,QAAO,SAAUsL,EAAKzG,GAEhC,OADAyG,EAAIzG,EAAM5N,KAAO4N,EAAMzP,IAChBkW,IACR,yMC/CRq6B,EAAmB,SAAUC,EAAOnpB,GAC3C,IAAIxlB,EAAMwlB,EAAG,GAAIrnB,EAAMqnB,EAAG,GAU1B,OATKmpB,EAAM9xC,eAAemD,IAGjB,QAAQ2uC,EAAM3uC,IACnB2uC,EAAM3uC,GAAKpF,KAAKuD,GAGhBwwC,EAAM3uC,GAAO,CAAC2uC,EAAM3uC,GAAM7B,GAN1BwwC,EAAM3uC,GAAO7B,EAQVwwC,GAEAC,EAAY,SAAUC,GAC7B,OAAOA,EAAY5xB,MAAM,KAAKxZ,OAAO,MAAUqF,IAAI,MAAYC,OAAO2lC,EAAkB,KAErF,SAASra,EAASzoB,GACrB,IAAIkjC,EAAgB,SAAUrlC,GAAK,OAAOA,GAAK,IAC3C+b,GAAK,QAAU5Z,GAAK9C,IAAIgmC,GAAgBC,EAAavpB,EAAG,GAAIyG,EAAOzG,EAAG,GACtEC,GAAK,QAAWspB,GAAYjmC,IAAIgmC,GACpC,MAAO,CAAExsC,KADkDmjB,EAAG,GACzC6jB,OADsD7jB,EAAG,GACzCwG,KAAMA,EAAMrgB,IAAKA,GAEnD,IAAIojC,EAAW,SAAUC,GAC5B,IAAI3sC,EAAO2sC,EAAI3sC,OACX4sC,EAAeD,EAAI3F,SACnBrd,EAAOgjB,EAAIhjB,OACXqd,EAAS57B,OAAOC,KAAKuhC,GACpBpmC,KAAI,SAAU9I,GACf,IAAImJ,EAAQ+lC,EAAalvC,GAEzB,QADW,QAAQmJ,GAASA,EAAQ,CAACA,IACzBL,KAAI,SAAU3K,GAAO,OAAO6B,EAAM,IAAM7B,QAEnD4K,OAAO,KAAS,IAChBqE,KAAK,KACV,OAAO9K,GAAQgnC,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE/D,SAASkjB,EAAsBxvC,EAAM0oC,EAAS+G,EAAcC,GAC/D,OAAO,SAAU98B,GACb,IAAIX,EAAWW,EAAShB,gBAAkB,IAAI69B,EAAa78B,GACvD+8B,EAAiB/8B,EAASf,eAAiB,IAAI69B,EAAmB98B,EAAU81B,GAKhF,MAAO,CAAE1oC,KAAMA,EAAMiS,QAASA,EAAS09B,cAAeA,EAAejgC,QAJrE,SAAiBR,GACbA,EAAOQ,QAAQuC,GACf/C,EAAOQ,QAAQigC,kaCvBvBr6B,EAA6B,WAE7B,SAASA,EAA6BpG,GAClC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKo1C,SAAW,GAChBp1C,KAAKq1C,aAAe,GACpBr1C,KAAKs1C,qBAAuB,GAC5Bt1C,KAAKgyC,WAAa,GAEnChyC,KAAKgK,WAAa,CACdC,iBAAkBjK,KAAKiK,iBAAiB3G,KAAKtD,MAC7CgX,mBAAoBhX,KAAKgX,mBAAmB1T,KAAKtD,MACjDu1C,kBAAmB,SAAUlqC,GAAM,OAAO,QAAK8E,EAAMilC,UAAU,SAAUt7B,GAAQ,OAAO3J,EAAMuE,OAAOyG,IAAM,IAAMrB,EAAKzO,KAAOA,MAC7HmqC,mBAAoB,WAAc,OAAOrlC,EAAMilC,UAC/CK,mBAAoB,WAAc,OAAOtlC,EAAMklC,cAC/CK,QAAS,SAAUvX,GAEf,OADAhuB,EAAM6hC,WAAWvxC,KAAK09B,GACf,WAAc,OAAO,QAAWhuB,EAAM6hC,WAAY7T,MAwPrE,OAzOArjB,EAAY66B,sBAAwB,SAAU9kC,EAAS+kC,QAC/B,IAAhBA,IAA0BA,EAAc,IAI5C,IAAIC,EAAgBD,EAAY9yB,MAAM,KAClC9H,EAAa66B,EAAc,IAAM,WACjC36B,GAAsB,QAAS26B,EAAc,IAAMA,EAAc,GAAK,IAGtEC,EAAwB,wBAAwBrsC,KAAKuR,GAYzD,GAXI86B,IAEA56B,EAAsB46B,EAAsB,GAC5C96B,EAAa86B,EAAsB,IAEV,MAAzB96B,EAAWvV,OAAO,KAClBuV,EAAaA,EAAW+L,OAAO,GAC/B7L,EAAsB,IAGN,kBACFzR,KAAKyR,GAAsB,CACzC,IAAI66B,EAAc76B,EAAoB4H,MAAM,KAAKlU,QAAO,SAAUonC,EAAQ1mC,GAAK,OAAO0mC,EAAO57B,SAAWvJ,GACxGqK,EAAsB66B,EAAYvwC,SAEL,MAAxB0V,IACLA,EAAsBrK,EAAQrL,MAElC,MAAO,CAAEwV,WAAYA,EAAYE,oBAAqBA,IAG1DJ,EAAYjZ,UAAUoI,iBAAmB,SAAU4G,GAC/C,OAAQ7Q,KAAKi2C,aAAeplC,GAAW7Q,KAAKi2C,cAGhDn7B,EAAYjZ,UAAUmV,mBAAqB,SAAUk/B,EAAUh2C,GAC3DF,KAAKs1C,qBAAqBY,GAAYh2C,GAE1C4a,EAAYjZ,UAAU2yB,iBAAmB,SAAUrsB,EAAMozB,GACrD,IAAI4a,EAAan2C,KAAKs1C,qBAAqB/Z,EAAKnwB,OAChD,IAAK+qC,EACD,MAAM,IAAI1jC,MAAM,2DAA6D8oB,EAAKnwB,OACtF,IAAIgrC,EAAOD,EAAWhuC,EAAMozB,GAC5B,OAAO,QAAQ6a,GAAQA,EAAO,CAACA,IAUnCt7B,EAAYjZ,UAAUumC,qBAAuB,SAAU19B,GACnD,2BAA4B,cAAeA,IAC3C,QAAW1K,KAAKq1C,aAAc3qC,IAElCoQ,EAAYjZ,UAAUwmC,mBAAqB,SAAU39B,GACjD,2BAA4B,iBAAkBA,GAC9C1K,KAAKq1C,aAAa50C,KAAKiK,IAE3BoQ,EAAYjZ,UAAU+qB,KAAO,WACzB,IAAIzc,EAAQnQ,KACRq2C,EAAer2C,KAAKo1C,SAASzmC,KAAI,SAAU4c,GAAO,MAAO,CAACA,EAAIjgB,IAAKigB,MAAS3c,OAAO,KAAY,IASnG,SAAS0nC,EAAgB/qC,GAErB,IADA,IAAIsF,EAAUtF,EAAOxD,SAASgC,SAAUG,EAAQ,IACvCA,GAAS2G,EAAQuJ,QACtBvJ,EAAUA,EAAQuJ,OACtB,OAAOlQ,EAGX,IAAIqsC,GAAe,SAAM,SAAUC,EAASC,EAAQ1lB,EAAMC,GAAS,OAAOylB,GAAUD,EAAQzlB,GAAQylB,EAAQxlB,OAkBxG0lB,EAAe12C,KAAKo1C,SAAS5pB,KAAK+qB,GA9BtC,SAAqB9vC,GACjB,IAAIkwC,EAAa,SAAU9lC,GAAW,OAAQA,GAAWA,EAAQuJ,OAASu8B,EAAW9lC,EAAQuJ,QAAU,EAAI,GAC3G,OAAsC,IAA/B3T,EAAO6E,IAAIwX,MAAM,KAAK1T,OAAiBunC,EAAWlwC,EAAOkiB,mBA4BJ,IAAIha,KAjB3C,SAAUlI,GAC/B,IAAImwC,EAAkBzmC,EAAMklC,aAAa/rC,OAAOwR,EAAYoI,QAAQmzB,EAAc5vC,IAOlF,OANImwC,EAAgBxnC,OAAS,GAIzBwnC,EAAgBprB,KAAK+qB,EAAaD,GAAkB,IAEjD,CAAE7vC,OAAQA,EAAQiE,WAAYksC,EAAgB,OAUrDC,EAAqBH,EAAa/nC,KAAI,SAAU8E,GAAS,OAAOA,EAAM/I,cACtEosC,EAAwB92C,KAAKq1C,aAC5B/rC,QAAO,SAAUiC,GAAU,QAAQ,QAAQsrC,EAAoBtrC,MAC/DoD,KAAI,SAAUjE,GAAc,MAAO,CAAGjE,YAAQ0N,EAAWzJ,WAAYA,MAC1EgsC,EAAa31C,SAZS,SAAU0S,IAGkB,IAA1CtD,EAAMilC,SAASlnC,QAAQuF,EAAMhN,SAC7BgN,EAAMhN,OAAO+E,cAAciI,EAAM/I,eASzC,IAAIqsC,EAAYL,EAAat0C,OAAO00C,GACpC92C,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAGisC,MAClD,mBAAoBA,IAiBxBj8B,EAAYjZ,UAAUgK,eAAiB,SAAUpF,GAC7C,iCAAkC,iBAAkBA,GACpD,IAAIuwC,EAAUh3C,KAAKo1C,SAMnB,OAJI4B,EAAQ1tC,QADY,SAAUiiB,GAAO,OAAOA,EAAIjgB,MAAQ7E,EAAO6E,KAAOigB,EAAIngB,QAAU3E,EAAO2E,SACzDgE,QAClC,iCAAkC,+BAAgC3I,GACtEuwC,EAAQv2C,KAAKgG,GACbzG,KAAK4sB,OACE,YAEU,IADHoqB,EAAQ9oC,QAAQzH,IAK1B,iCAAkC,mBAAoBA,IACtD,QAAWuwC,EAAX,CAAoBvwC,IAJhB,iCAAkC,uCAAwCA,KAYtFqU,EAAYjZ,UAAUo1C,UAAY,WAC9B,OAAOj3C,KAAKo1C,SAASzmC,KAAI,QAAK,SAOlCmM,EAAYjZ,UAAUq1C,OAAS,WAC3B,OAAOl3C,KAAKo1C,SAAS9rC,QAAO,QAAK,YAAYqF,KAAI,QAAK,UA2D1DmM,EAAYoI,QAAU,SAAUmzB,EAAc5vC,GAAU,OAAO,SAAUiE,GAErE,GAAIjE,EAAO2E,QAAUV,EAAW3C,SAASqD,MACrC,OAAO,EAEX,IAAI+8B,EAAKz9B,EAAW3C,SAChBovC,EAAahP,EAAGptB,YAAY+H,MAAM,KAClCs0B,EAAc3wC,EAAO6E,IAAIwX,MAAM,KAGnC,KAAK,QAAOq0B,EAAYC,EAAYt1C,MAAM,EAAIq1C,EAAW/nC,SACrD,OAAO,EAGX,IAAIioC,EAAY,EAAIF,EAAW/nC,aAAU+E,EACrCmjC,EAAoBF,EAAYt1C,MAAM,EAAGu1C,GAAWpkC,KAAK,KACzDskC,EAAgBlB,EAAaiB,GAAmB3uB,gBACpD,OAAOwf,EAAGltB,wBAA0Bs8B,GAAiBA,EAAc/xC,QAEhEsV,EA1QqB,wDCfhC,SAAUyL,EAAQ1mB,GAAU,aAyD5B,IAAI23C,EAAoB,gBAEpBC,EAAe53C,EAAQC,OAAO,SAAU,CAAC,OACrB43C,KAAK,CAAEC,eAAgB,UACvB53C,SAAS,SAkCjC,WACE,IAAIwL,EAAS,CACXqsC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,kBAAkB,GAgCpB,SAASC,EAAUzlC,EAAU0lC,EAAUC,EAAqBC,GAC1D,OAAO,SAAS31C,EAAOoe,EAAMpO,GAC3B,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAIkB,EAAgB5lC,EAAKkd,WAAWuoB,IAChChtC,EAAOmtC,IAAmBC,EAAYz3B,EAAMs3B,IAAyB1lC,EAAK4lC,IAC5E51C,EAAMyB,OAAOuO,EAAKD,IAAW,SAAS+lC,GAEpCA,EAAUH,GAAUG,IAAYA,EAChC13B,EAAKpO,KAAKylC,EAAUK,QAb5B54C,KAAKuL,OAAS,SAASstC,GACrBttC,EAAS1L,EAAQiB,OAAOyK,EAAQstC,IAkElC74C,KAAKU,KAAO,WACV,MAAO,CACL6K,OAAQ,SAAS1F,GACf,OAAO0F,EAAO1F,IAEhBizC,YAAaR,OA5IfE,EAAsB,CAAC,SAAU,IAAK,QAAS,WAAY,SAAU,UAAW,WAEhFG,EAAc,SAASz3B,EAAM63B,GAC/B,IAAiD,IAA7CA,EAAc7qC,QAAQgT,EAAK,GAAG83B,UAChC,OAAO,GA8IXvB,EAAa50C,UAAU,SAAU,CAAC,QAAS,SAASo2C,GAClD,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvDj2C,UAAU,SAAU,CAAC,QAAS,SAASo2C,GACtC,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvDj2C,UAAU,UAAW,CAAC,QAAS,SAASo2C,GACvC,OAAOA,EAAMH,YAAY,UAAW,eAAgBN,GAAqB,MAE1E31C,UAAU,YAAa,CAAC,QAAS,SAASo2C,GACzC,OAAOA,EAAMH,YAAY,YAAa,eAAgBN,GAAqB,MAE5E31C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,UAAW,CAAC,QAAS,SAASo2C,GAEvC,SAASC,EAAiBpmC,EAAMqmC,EAAgBj4B,EAAMk4B,GACpD,OAAOH,EAAM1tC,OAAO4tC,KACjBj4B,EAAKpO,KAAKA,KACVsmC,IAAsBT,EAAYz3B,EAAMs3B,MAClB,WAAtBt3B,EAAKpO,KAAK,SAA6C,UAArBoO,EAAK,GAAG83B,UAG/C,SAASK,EAAiBC,EAAMp4B,GAI9B,OAAQA,EAAKpO,KAAK,SAAYoO,EAAKpO,KAAK,UAAYwmC,IAAUX,EAAYz3B,EAAMs3B,GAYlF,MAAO,CACLrxC,SAAU,IACVxB,QAAS,UACTyB,SAAU,IACVC,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAI+B,EAhBR,SAAkBzmC,EAAMoO,GACtB,IAAIhS,EAAO4D,EAAK5D,KACZoqC,EAAOxmC,EAAKwmC,KAEhB,MAA2B,cAAlBpqC,GAAQoqC,IAAiC,qBAATA,EAA+B,WAC7C,WAAlBpqC,GAAQoqC,IAAiC,kBAATA,EAA4B,QACpD,UAATpqC,GAA0C,gBAAToqC,GAAmC,WAATA,EAAqB,QAAU,GAUpFE,CAAS1mC,GAErB,MAAO,CACL2mC,KAAM,SAAS32C,EAAOoe,EAAMpO,EAAM4mC,GAChC,IAAIC,EAAgBT,EAAiB,WAAY,WAAYh4B,GAAM,GAEnE,SAAS04B,IACP,OAAOF,EAAQG,YAcjB,OAAQN,GACN,IAAK,QACL,IAAK,WACCF,EAAiBE,EAAOr4B,IAC1BA,EAAKpO,KAAK,OAAQymC,GAEhBL,EAAiB,eAAgB,cAAeh4B,GAAM,IACxDpe,EAAMyB,OAAOq1C,EAAiC,UAAVL,EAlB1C,SAA0BO,GAGxB,IAAIlB,EAAW9lC,EAAKtO,OAASk1C,EAAQK,WACrC74B,EAAKpO,KAAK,eAAgB8lC,IAG5B,WACE13B,EAAKpO,KAAK,gBAAiB4mC,EAAQM,SAASN,EAAQK,eAa9CJ,GACFz4B,EAAKpO,KAAK,WAAY,GAExB,MACF,IAAK,QAIH,GAHIumC,EAAiBE,EAAOr4B,IAC1BA,EAAKpO,KAAK,OAAQ,UAEhBmmC,EAAM1tC,OAAO,aAAc,CAC7B,IAAI0uC,GAAqB/4B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDw3C,GAAqBh5B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDy3C,GAAqBj5B,EAAKpO,KAAK,iBAE/BmnC,GACFnnC,EAAKsnC,SAAS,OAAO,SAAgCN,GACnD54B,EAAKpO,KAAK,gBAAiBgnC,MAG3BI,GACFpnC,EAAKsnC,SAAS,OAAO,SAAgCN,GACnD54B,EAAKpO,KAAK,gBAAiBgnC,MAG3BK,GACFr3C,EAAMyB,OAAOq1C,GAAuB,SAAgCE,GAClE54B,EAAKpO,KAAK,gBAAiBgnC,MAI7BH,GACFz4B,EAAKpO,KAAK,WAAY,IAKvBA,EAAKpQ,eAAe,eAAiBg3C,EAAQW,YAAYC,UACzDpB,EAAiB,gBAAiB,eAAgBh4B,GAAM,IAE3DpO,EAAKsnC,SAAS,YAAY,WACxBl5B,EAAKpO,KAAK,kBAAmBA,EAAe,aAI5ComC,EAAiB,eAAgB,cAAeh4B,GAAM,IACxDpe,EAAMyB,QAAO,WACX,OAAOm1C,EAAQa,YACd,SAA+BT,GAChC54B,EAAKpO,KAAK,iBAAkBgnC,cAQzCj3C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,cAAc,WACvB,MAAO,CACLsE,SAAU,IACVxB,QAAS,cACT4C,KAAM,SAASzF,EAAOoe,EAAMpO,EAAM0nC,GAC5B1nC,EAAKpQ,eAAe80C,IAEnBt2B,EAAKpO,KAAK,cACboO,EAAKpO,KAAK,YAAa,kBAK9BjQ,UAAU,UAAU,CAAC,QAAS,SAAU,SAASo2C,EAAO93C,GACvD,MAAO,CACLgG,SAAU,IACVE,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAI72C,EAAKQ,EAAO2R,EAAK2nC,SACrB,OAAO,SAAS33C,EAAOoe,EAAMpO,GAEtB6lC,EAAYz3B,EAAMs3B,KAEjBS,EAAM1tC,OAAO,sBAAwB2V,EAAKpO,KAAK,SACjDoO,EAAKpO,KAAK,OAAQ,UAGhBmmC,EAAM1tC,OAAO,cAAgB2V,EAAKpO,KAAK,aACzCoO,EAAKpO,KAAK,WAAY,IAGpBmmC,EAAM1tC,OAAO,gBAAmBuH,EAAK4nC,WAAc5nC,EAAK6nC,YAAe7nC,EAAK8nC,SAC9E15B,EAAK5gB,GAAG,WAAW,SAASC,GAC1B,IAAIs6C,EAAUt6C,EAAMu6C,OAASv6C,EAAMs6C,QAEnB,KAAZA,GAA8B,KAAZA,KAEwC,IAAxDrC,EAAoBtqC,QAAQ3N,EAAM8F,OAAO2yC,WAAqBz4C,EAAM8F,OAAO00C,mBAG7Ex6C,EAAMgD,iBAERT,EAAMmB,QAGR,WACEtD,EAAGmC,EAAO,CAAEk4C,OAAQz6C,mBASnCsC,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAO,SAASn2C,EAAOoe,EAAMpO,GACvBA,EAAKpQ,eAAe80C,KAEpByB,EAAM1tC,OAAO,aAAgB2V,EAAKpO,KAAK,aAAgB6lC,EAAYz3B,EAAMs3B,IAC3Et3B,EAAKpO,KAAK,WAAY,OA9Z5B,CAoaGyT,OAAQA,OAAO1mB,iECzalBA,QAAQC,OAAO,WAAY,CAAC,OAC3B+C,UAAU,WAAY,CAAC,KAAM,SAAUkE,GACvC,aAgCA,MAAO,CACNjE,MAAM,CACL42C,QAAe,IACf73B,IAAe,QACfiF,IAAe,QACfgD,KAAe,SACfmxB,SAAe,aACfC,SAAe,aACfC,UAAe,cACfC,UAAe,cACfC,WAAe,eACfC,WAAe,eACfC,aAAe,iBACfC,MAAe,UACfC,MAAe,UACfC,YAAe,gBACfC,YAAe,iBAEhBvqC,YAAa,2BACPzL,QAAS,UACToP,SAAS,EACTxM,KAlDI,SAAUtH,EAAQyG,EAAUxG,GAElCA,EAAO+5C,WACVh6C,EAAOg6C,SAAW,WAAW,OAAO,IAGjC/5C,EAAOi6C,YACVl6C,EAAOk6C,UAAY,WAAW,OAAO,IAGlCj6C,EAAOw6C,cACVz6C,EAAOy6C,YAAc,WAAW,IAAIviB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOs6C,QACVv6C,EAAOu6C,MAAQ,cAGZt6C,EAAOy6C,cACV16C,EAAO06C,YAAc,WAAW,IAAIxiB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOu6C,QACVx6C,EAAOw6C,MAAQ,eA4BVz6C,WAAY,yBAInBA,WAAW,qBAAsB,CAAC,SAAU,WAAY,SAAWC,EAAQuC,GAC3E,aAEAvC,EAAO26C,UAAar1B,OAAO7jB,eAAe,iBAAmB6jB,OAAOs1B,UAAUC,iBAAmB,EACjG76C,EAAO86C,SAAWl8C,QAAQoiB,KAAKhhB,EAAOy4C,SAEtCz4C,EAAO4gB,IAAM5gB,EAAO4gB,KAAO,EAC3B5gB,EAAO6lB,IAAM7lB,EAAO6lB,KAAO,EAC3B7lB,EAAO6oB,KAAO7oB,EAAO6oB,MAAQ,GAE7B7oB,EAAOi6C,SAAWj6C,EAAO86C,WAAa96C,EAAOy4C,QAE7Cz4C,EAAOm6C,UAAYn6C,EAAOm6C,WAAa,GACvCn6C,EAAO+6C,cAAgB/6C,EAAOm6C,UAAYn6C,EAAO6oB,KACjD7oB,EAAOo6C,WAAap6C,EAAOo6C,YAAc,GACzCp6C,EAAOq6C,WAAar6C,EAAOq6C,YAAcr6C,EAAOm6C,UAChDn6C,EAAOs6C,aAAet6C,EAAOs6C,cAAgBt6C,EAAOo6C,WAEpD,IAAI1nB,EAAO1yB,EAAO6lB,IAAM7lB,EAAO4gB,IAC/Bo6B,EAAQtoB,EAAO1yB,EAAO6oB,KACtBoyB,EAAUj7C,EAAOsD,OAAO,WAAW,WAClCtD,EAAOi6C,SAAWj6C,EAAO86C,WAAa96C,EAAOy4C,WAG9CyC,EAAW,SAAUC,GACpB,OAAQA,EAAM,GAAKH,EAAQtoB,GAG5B1yB,EAAOo7C,cAAgB,WACtB,OAAO,IAAIz6C,MAAMq6C,IAGlBh7C,EAAOq7C,cAAgB,SAAUF,GAChC,IAAIG,EAAQ,EAAEt7C,EAAO6oB,KAErB,OADW7oB,EAAOm6C,UAAUmB,GAAQH,EAAMG,IAI3Ct7C,EAAOu7C,WAAa,SAAUJ,GAC7B,OAAOD,EAASC,IAAUn7C,EAAOy4C,QAAQz4C,EAAO4gB,KAGjD5gB,EAAOw7C,aAAe,WACjBx7C,EAAOk6C,cAAgBl6C,EAAOg6C,YACjCh6C,EAAO06C,YAAY,CAACe,OAAOz7C,EAAOy4C,UAAU3uC,MAAK,WAChD9J,EAAOy4C,QAAUz4C,EAAO4gB,IACxB5gB,EAAOw6C,MAAM,CAACiB,OAAOz7C,EAAOy4C,cAK/Bz4C,EAAO07C,SAAW,SAAUP,GAC3B,IAAKn7C,EAAOg6C,WAAY,CACvB,IAAI2B,EAAW/8C,QAAQoiB,KAAKhhB,EAAO4gB,IAAMs6B,EAASC,IAElDn7C,EAAOy6C,YAAY,CAACgB,OAAOE,IAAW7xC,MAAK,WAC1C9J,EAAOy4C,QAAUkD,EACjBp5C,GAAS,WACRvC,EAAOu6C,MAAM,CAACkB,OAAOz7C,EAAOy4C,kBAMhCz4C,EAAOsB,IAAI,YAAY,WACtB25C,UAID3jC,IAAI,CAAC,iBAAkB,SAAUjI,GACjC,aAEAA,EAAeusC,IAAI,2BAElB,0iDCtHF,SAASC,EACP7mC,EACAL,EACA6C,EACAskC,EACAh2C,EACAi2C,EACAC,EACAC,EACAC,EACA35C,GAEA,MAAM45C,EAAKp9C,KA4CX,SAASq9C,EAAOC,GAEdN,EAAqBO,cAAcL,EAAgB,CAAEI,GAAAA,IAClDvyC,MAAMvG,IAhBX,IAAqBg5C,EAiBfvnC,EAAWwnC,OAASj5C,EAjBLg5C,GAkBI,IAAPF,EAAc,OAAS,OAjBvC1nC,EAAQwE,OAAOsjC,YACb,CACEF,IAAAA,GAEF,KAcEh6C,GAAS,KACPyS,EAAWhS,eAGdoe,MAAM26B,EAAqBW,gBA6MhCP,EAAG/vC,QArGH,WACEmZ,QAAQo3B,MAAM,oCAAqC3nC,EAAW4nC,SAC9D5nC,EAAW6nC,OAAS,OAEpB,MAAMC,EAAY9nC,EAAW+nC,SAASC,MAChCC,EAAajoC,EAAW+nC,SAASG,UACjCC,EACJnoC,EAAW+nC,SAASK,iBAAmBpoC,EAAW+nC,SAASG,UACvDG,EAAeroC,EAAW+nC,SAASO,aACnCC,EAAmBvoC,EAAW+nC,SAASS,gBACvCC,EAAgB58B,KAAKgF,IACzBT,SAASs4B,gBAAgBC,aACzBr4B,OAAOs4B,aAAe,GAElBC,EAAez4B,SAASs4B,gBAAgBI,YAG9C14B,SAASs4B,gBAAgBK,MAAMC,YAAY,oBAAqBlB,GAChE13B,SAASs4B,gBAAgBK,MAAMC,YAAY,qBAAsBf,GACjE73B,SAASs4B,gBAAgBK,MAAMC,YAC7B,4BACAb,GAEF/3B,SAASs4B,gBAAgBK,MAAMC,YAC7B,uBACAX,GAEFj4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,2BACAT,GAEFn4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,wBACAP,GAEFr4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,uBACAH,GAGF,IAAII,GAAK,EAET,MAAMC,EAA8B36C,GAChB,OAAVA,GAAkBA,EAAMyR,EAAWJ,WAAc,GAGrDupC,EAAwBpC,EAAqBqC,QACjDlC,GACApyC,KAAKo0C,GACDG,EAAuBtC,EAAqBqC,QAChDnC,GACAnyC,KAAKo0C,GACPp4C,EAAG0U,IAAI,CAAC2jC,EAAuBE,IAC5Bv0C,MAAK,IAAiC,IAA/Bw0C,EAAcC,GAAiB,EACrCvpC,EAAW4nC,QAAU0B,EACrBtpC,EAAWwnC,OAAS+B,EAEhBvpC,EAAW4nC,QAAQ4B,aAAexpC,EAAWwnC,OAAOH,GACtD4B,GAAK,EAELjpC,EAAWwnC,OAAOH,IAAK,EAGa,iBAAlCrnC,EAAW+nC,SAAS0B,WACtBrC,EAAO6B,GAxMbzmC,EAAOi5B,GAjBT,WAAoB,QAClB,MAAMiO,EAAS1pC,EAAW+nC,SAAS2B,OAC7B9B,IAAU5nC,MAAAA,GAAA,UAAAA,EAAY4nC,eAAZ,mBAAqB4B,mBAArB,UAAkCp0C,IAE5Cu0C,EACJrQ,OAAOt5B,EAAW+nC,SAAS6B,kBAC3BtQ,OAAOt5B,EAAW+nC,SAAS8B,qBACzBvQ,OAAOt5B,EAAW+nC,SAAS6B,iBAE/B,SAAMhC,IAAa+B,GAAYD,GAQrBI,GAAa,aAAe,cAAe,KAAM,CACzDlqC,SAAU,YA6MR,IAAI2nC,EAAM,GAKRA,EAHAvnC,EAAW+nC,SAAS2B,SACnB1pC,EAAW+nC,SAASgC,gBAEf,OAEA,UAGRpqC,EAAQwE,OAAOsjC,YACb,CACEF,IAAAA,EACAO,UAAAA,EACAG,WAAAA,EACAQ,cAAAA,EACAI,aAAAA,GAEF,KAGF,MAAME,EAAQ34B,SAAS45B,cAAc,SACrC55B,SAASpB,KAAKi7B,YAAYlB,GAC1BA,EAAMmB,MAAMC,WACV,2BAA6BnqC,EAAW+nC,SAASC,MAAQ,kBAG5D57B,MAAM26B,EAAqBW,iBAKhCP,EAAGiD,MA3MH,WACE,MAAMZ,EAAcxpC,EAAW4nC,QAAQ4B,YAEvC,GAAIA,GAAeA,EAAYp0C,GAAI,CAEjC,MAAMi1C,EAAUvD,EACbuD,UACAlmC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,eAC9CC,qBAAoB,GACpBrN,MACCl9B,EAAW+nC,SAASyC,iBAClB,yCAEHC,GAAG,MACHv8C,OAAO,UAEV44C,EACG4D,KAAKL,GACLv1C,MAAK,WACJ,OAAOkyC,EAAI2D,gBAAgBC,aAAa,CACtCx1C,GAAIo0C,EAAYp0C,GAChBy1C,QAAQ,EACRC,YAAa,YAEZC,YAEJj2C,MAAK,WACJ0N,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,eAGbwM,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM,YAAa6nB,QA4KnCkwB,EAAGC,OAASA,EACZD,EAAG6D,SAxKH,WACE,MAAM3M,EAAWvtC,EAAGkF,QACdwzC,EAAcxpC,EAAW4nC,QAAQ4B,YA2DvC,OAzDIA,GAAeA,EAAYp0C,IAC7B4xC,EAAI2D,gBACDM,YAAY,CACXC,MAAO1B,EAAYp0C,GACnB+1C,YAAY,IAEbJ,SAASj2C,MAAK,SAAUpD,GACvB2sC,EAAS3nC,QACP00C,GAAAA,CAAK15C,EAAK25C,KAAKx/C,MAAM,IAAI,SAAUy/C,GACjC,IAAIC,EASJ,GAPsB,OAAlBD,EAAIE,YACND,EACEvrC,EAAW+nC,SAAS0D,eACpBzrC,EAAW4nC,QAAQ3uB,MACnB,UAAYqyB,EAAII,WAGE,QAAlBJ,EAAIE,UACN,OAAQxrC,EAAW+nC,SAAS4D,iBAC1B,IAAK,gBACHJ,EAASD,EAAIM,OACT5rC,EAAW+nC,SAAS8D,WAAaP,EAAIM,OACrC,SACJ,MAEF,IAAK,cACHL,EAASD,EAAIM,OACTN,EAAIQ,KAAKC,OAAST,EAAIQ,KAAKE,SAC3B,SACJ,MAEF,IAAK,iBACHT,EAASD,EAAIM,OAASN,EAAIQ,KAAKE,SAAW,SAC1C,MAEF,QACET,EAASD,EAAIM,OACT5rC,EAAW+nC,SAAS8D,WAAaP,EAAIM,OACrC,SAKV,MAAO,CACLL,OAAQA,EACR1d,QAASyd,EAAIW,KACbC,UAAWC,GAAAA,CAAOb,EAAIY,WAAWv6B,OAAO,+BAK/CvF,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,MAIbonB,EAAS7wC,SA4GlB25C,EAAGiF,eA5OH,WACE,MAA4C,YAArCpsC,EAAW+nC,SAASsE,aAA6B,OAAS,OA4OnE,MAAMC,EAAgB,CACpB5C,OAAQ,CAAC,SAAU,OAAQ,UAAW,UAAW,aACjD6C,QAAS,CAAC,YAKZjvC,OAAO+6B,eAAer4B,EAAY,cAAe,CAC/CvF,MACE,IAAIpK,EAAS2P,EAAW+nC,SAASyE,aAMjC,OALIF,EAAc5C,OAAOrmC,SAASrD,EAAW6nC,QAC3Cx3C,EAAS2P,EAAW+nC,SAAS0E,cACpBH,EAAcC,QAAQlpC,SAASrD,EAAW6nC,UACnDx3C,EAAS2P,EAAW+nC,SAAS2E,gBAExBr8C,KAIXigB,OAAOq8B,iBACL,WACA,SAAU1sC,GACa,SAAjBA,EAAIvO,KAAKuO,IACXmnC,GAAO,GACmB,SAAjBnnC,EAAIvO,KAAKuO,KAClBmnC,GAAO,MAGX,2eCtTJ,SAASwF,EAAS5sC,EAAYF,GAE5B,MAAM3H,EAAS2H,EAAUo5B,SAGzBl5B,EAAW+nC,SAAW,CACpB8E,OAAQ,UACRC,MAAM,GAGRC,GAAAA,CAAO50C,GAAQ,SAAU5J,EAAOqB,GAChB,KAAVrB,GAAiBy+C,GAAAA,CAAOz+C,KACZ,SAAVA,IACFA,GAAQ,GAGI,UAAVA,IACFA,GAAQ,GAGVyR,EAAW+nC,SAASn4C,GAAOrB,MAI/ByR,EAAWJ,SAAWI,EAAW+nC,SAASnoC,SAC1CI,EAAWwnC,OAAS,CAAEH,IAAI,GAC1BrnC,EAAW4nC,QAAU,GAWvB,SAASqF,EACPC,EACA9uC,EACA+uC,EACAC,EACAC,GAEAjvC,EAAkBgB,WAAU,GAGvB+tC,EAAcnjD,SAAS0R,QAAQjB,MAClC0yC,EAAcnjD,SAAS0R,QAAQjB,IAAM,IAIvC0yC,EAAcnjD,SAAS0R,QAAQjB,IAAI,qBACjC,gCAEF0yC,EAAcnjD,SAAS0R,QAAQjB,IAAI,iBAAmB,WACtD0yC,EAAcnjD,SAAS0R,QAAQjB,IAAI6yC,OAAS,WAG5CF,EAA4BG,UAAUF,GAGtCH,EACG11C,MAAM,MAAO,CACZkxB,UAAU,IAEXlxB,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAaqyC,EACbziD,WAAY,4BAEbyM,MAAM,aAAc,CACnBgE,IAAK,UACLL,YAAasyC,EACb1iD,WAAY,2BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAauyC,EACb3iD,WAAY,4BAEbyM,MAAM,WAAY,CACjBgE,IAAK,QACLL,YAAawyC,EACb5iD,WAAY,yBAEbyM,MAAM,gBAAiB,CACtBgE,IAAK,aACLL,YAAayyC,EACb7iD,WAAY,8BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAa0yC,EACb9iD,WAAY,0OC3FlB,SAAS+iD,EACP9tC,EACAwC,EACAurC,EACA/G,EACAl2C,EACAi2C,EACAG,EACAD,GAEA,MAAME,EAAKp9C,KAIX,SAASmmC,EAAY3gC,GACnB,OAAO,SAAU0nB,GACfkwB,EAAG6G,OAAOz+C,GAAQ0nB,EAAIvlB,KAEtB,MAAMu8C,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASqG,0BAClB,yBAEHC,WAAW,oBACXC,SAAS,OAEZP,EAASrD,KAAKuD,IAIlB,SAASM,IACPvuC,EAAWwuC,SAAU,EAkBvB,SAASC,IACHzuC,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAAS4lC,IACP2B,EAAGuH,KAAO,GACVvH,EAAGwH,QAAU,KACbxH,EAAGyH,UAAY,KACfzH,EAAG0H,SAASC,eACZ3H,EAAG0H,SAASE,uBAEL/uC,EAAW4nC,QAAQ4B,YAE1BxpC,EAAWgvC,gBAAiB,EAiD9B7H,EAAG/vC,QAjFH,WACEmZ,QAAQo3B,MAAM,sCAAuC3nC,EAAW4nC,SAChE5nC,EAAW6nC,OAAS,UAGpB/2C,EAAG0U,IAAI,CACLuhC,EAAqBkI,WAAW/H,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBkI,WAAWhI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,IAAOkL,EAAWwuC,SAAU,KAsEtCrH,EAAG+H,OA1CH,WACElvC,EAAWwuC,SAAU,EAEjBxuC,EAAW4nC,QAAQ4B,aAAexpC,EAAW4nC,QAAQ4B,YAAYp0C,GACnE4xC,EAAI2D,gBACDP,MACC+E,GAAAA,CACE,CACE/5C,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,GACnCg6C,WAAYpvC,EAAW+nC,SAASqH,WAChCC,SACErvC,EAAW+nC,SAAS0D,eAAiBzrC,EAAW4nC,QAAQ3uB,MAE5DkuB,EAAGuH,OAGN3D,SAASj2C,MAAK,kBACNqyC,EAAG6G,OAAOkB,OAEjB,MAAMjB,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASuH,0BAClB,2BAEHjB,WAAW,oBACXlqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,MAEfn5C,KAAK0wC,GACL1wC,KAAK25C,GACLriC,MAAM8jB,EAAY,WAClBqf,QAAQhB,IAEXA,IACAre,EAAY,YAOhBiX,EAAGqI,KAhDH,WACEhK,IACAiJ,KAgDFtH,EAAGuH,KAAO,GACVvH,EAAG6G,OAAS,GCjId,SAASyB,EAAWzvC,EAAY0vC,GAC9B,MAAMC,EAAgB,CACpBv6C,GAAI,MACJkW,MAAOtL,EAAW+nC,SAASz8B,OAGvB07B,EAAM,GAyEZ,OAvEAA,EAAI4I,QAAU5vC,EAAW+nC,SAAS8H,OAAS,QAE3C7I,EAAI8I,YAAcJ,EAChB1I,EAAI4I,QAAU,oBACdD,EACA,CACE3c,OAAQ,CACN+c,OAAQ,OACRv0C,IAAKwrC,EAAI4I,QAAU,4BAErBrD,QAAS,CACPwD,OAAQ,OACRv0C,IAAKwrC,EAAI4I,QAAU,6BAErBI,UAAW,CACTD,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,8BAKzB5I,EAAI2D,gBAAkB+E,EACpB1I,EAAI4I,QAAU,wBACdD,EACA,CACExpC,OAAQ,CACN4pC,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,yBAErBhF,aAAc,CACZmF,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,uCAErBxF,MAAO,CACL2F,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,+BAErB3E,YAAa,CACX8E,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,wCAErBK,iBAAkB,CAChBF,OAAQ,OACRv0C,IAAKwrC,EAAI4I,QAAU,0CACnBl0C,QAAS,CACP,oBAAgBwC,GAElBgyC,iBAAkBtmD,QAAQ6c,UAE5B0pC,mBAAoB,CAClBJ,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,6CAErBQ,QAAS,CACPL,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,mCAKzB5I,EAAIqJ,YAAcX,EAChB1I,EAAI4I,QAAU,oBACdD,EACA,CACExpC,OAAQ,CACN4pC,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,uBAKlB5I,mTChET,SAASsJ,EACPtlD,EACAgV,EACAzS,EACAgjD,EACAC,EACAhuC,EACApI,EACA2zC,EACA/G,EACAD,EACAG,EACAD,GAEA,MAAME,EAAKp9C,KACX,IAAI0mD,EACAC,EACAC,EACAC,EA4BJ,SAASC,IAEP//C,EAAAA,GAAAA,IAAO,CACLi2C,EAAqBkI,WAAW/H,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBkI,WAAWhI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,KAhBJkL,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,eAoB/C,SAASkxC,IACPvjD,GAAS,WACP,MAAMT,EAAU0jD,EAAU,GAAGO,uBAAuB,iBAAiB,GAEjEjkD,IACFA,EAAQkkD,UAAYlkD,EAAQmkD,iBAKlC,SAASC,IACP/J,EAAG6G,OAAS,GACZhuC,EAAWzJ,MAAM,QAEjB,MAAM03C,EAAQF,EACXG,SACAC,YACC,8CAEDE,WAAW,yBAA2BruC,EAAW+nC,SAASsE,cAC1DloC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,GAIhB,SAAS/d,EAAY3gC,GACnB,OAAO,SAAU0nB,GACfkwB,EAAG6G,OAAOz+C,GAAQ0nB,EAAIvlB,KAEtBo/C,KAIJ,SAASK,EAAYtjB,GACnBmZ,EAAI8I,YACD9c,OAAOnF,GACPkd,SAASj2C,MAAK,SAAUpD,GACvBy1C,EAAG6G,OAAS,GACZ,IAAIoD,GAAkB,EAClBpE,GAAAA,CAAOhtC,EAAW4nC,QAAQ4B,eAC5BxpC,EAAW4nC,QAAQ4B,YAAc,CAC/Bp0C,GAAI1D,EAAK83C,YAAYp0C,IAEvBg8C,GAAkB,GAEfpxC,EAAW4nC,QAAQyJ,qBACtBrxC,EAAW4nC,QAAQyJ,oBAAqB,EACxCD,GAAkB,GAGhBA,GACFrK,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAEhC+I,EAAU,GAAGa,aAAaC,QAAQ,IAElCT,OAED1kC,MAAM8jB,EAAY,qBA0EvB,SAASshB,IAELxxC,EAAW4nC,SACX5nC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYp0C,IAE/B4xC,EAAI2D,gBACDlwC,IAAI,CACHrF,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,KAEpC21C,SAASj2C,MAAK,SAAUpD,UAChBy1C,EAAG6G,OAAOwD,eAGb9/C,EAAKm5C,SACP7qC,EAAW4nC,QAAQ4B,YAAYqB,QAAS,EACxC9D,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAEL,cAArBh2C,EAAK+/C,YACPjvC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAE7C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,gBAIhDwM,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACHixC,IACA,MACF,KAAK,IACHruC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAQ1B,SAASy6B,EAAM3M,GACb,MAAMkH,EAAOwE,EAAU,GAAGa,aAAaK,UAEnC5M,GAA6B,KAAnBA,EAAOH,SAAkBG,EAAO6M,UAK1C7M,GAA6B,KAAnBA,EAAOH,SAKR,KAATqH,GAKJkF,EACEhC,GAAAA,CACE,CACElD,KAAMA,GAERjsC,EAAW4nC,UAqCjB,SAASqD,IAAc,QACjBjrC,MAAAA,GAAJ,UAAIA,EAAY4nC,eAAhB,iBAAI,EAAqB4B,mBAAzB,OAAI,EAAkCp0C,IACpC4xC,EAAI2D,gBACDM,YAAY,CACXC,MAAOlrC,EAAW4nC,QAAQ4B,YAAYp0C,GACtCy8C,cAAc,EACdz8C,GAAIw7C,QAAiB1yC,IAEtB6sC,SAASj2C,MAAK,SAAUpD,GAIvB,UAHOy1C,EAAG6G,OAAOxE,YAGb93C,EAAKuC,MAAO,CACd,IAAI69C,GAAQ,EACR1qC,EAAI,EACR,IAAKA,EAAI,EAAG0qC,GAAQ,EAAO1qC,EAAI1V,EAAK25C,KAAKlyC,OAAQiO,IAAK,CACpD,MAAMrI,EAAIgzC,GAAAA,CAAM/xC,EAAWgyC,SAAU,CACnC58C,GAAI1D,EAAK25C,KAAKjkC,GAAGhS,KAEd2J,EAGMrN,EAAK25C,KAAKjkC,GAAGywB,OACtB94B,EAAE84B,MAAO,IAHTia,GAAQ,EACR9xC,EAAWgyC,SAASxnD,KAAKkH,EAAK25C,KAAKjkC,KAMN,QAA3B1V,EAAK25C,KAAKjkC,GAAGokC,WAAwB95C,EAAK25C,KAAKjkC,GAAGywB,OAtC3CziC,EAuCK1D,EAAK25C,KAAKjkC,GAAGhS,GAtChC4xC,EAAIqJ,YACRlqC,OAAO,CACN/Q,GAAIA,EACJyiC,MAAM,IAEPkT,SAAS3+B,OAAM,SAAU6K,GACxB1G,QAAQnhB,MAAM6nB,OAoCN66B,GAEFhB,IAGEp/C,EAAK25C,KAAKjkC,EAAI,GAAGywB,OACnB+Y,EAAgBl/C,EAAK25C,KAAKjkC,EAAI,GAAGhS,IAG/Bw7C,IAAkB5wC,EAAW4nC,QAAQyJ,oBACvCtK,EAAqBO,cAAcJ,EAAiB,IAC/ClnC,EAAW4nC,QACdyJ,oBAAoB,IACnBv8C,MAAMvG,IACPyR,EAAW4nC,QAAUr5C,KAzDnC,IAAuB6G,KA8DhBgX,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OA7V1BkwB,EAAG6G,OAAS,GACZhuC,EAAWgyC,SAAW,GACtB7K,EAAG8K,aAAe,CAChBC,gBAAgB,EAChBC,YAAY,EACZC,OAAO,EACP9/C,MAAM,EACN+/C,WAAY,UAGdlL,EAAGmL,cAAgB,CACjBC,uBAAuB,GA6XzBpL,EAAG/vC,QArCH,WACEmZ,QAAQo3B,MAAM,mCAAoC3nC,EAAW4nC,SAC7D5nC,EAAW6nC,OAAS,OACpB7nC,EAAWwuC,SAAU,EACrBxuC,EAAW+nC,SAASyK,UAAW,EAE/BrL,EAAGsL,aAAe,GAGhBzyC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYqB,OAG/BgG,KAGAW,IAGAd,EAAsBH,EAAUtF,EAAa,KAC7C0F,EAAyBJ,EAAUiB,EAAgB,MAGrDf,EAAYiC,EAAE,iBAAiBpB,aAAa,CAC1CqB,YAAa3yC,EAAW+nC,SAAS6K,oBAAsB,iBACvDxoD,OAAQ,CACNyoD,MAAO,SAAUC,EAAQ/N,GACvB2M,EAAM3M,IAERgO,MAAO,WACLhpD,KAAKipD,gBAQb7L,EAAGuK,MAAQA,EACXvK,EAAG8L,aAzIH,WACE,MAAMhH,EAAOwE,EAAU,GAAGa,aAAaK,UAG1B,KAAT1F,IAKJkF,EACEhC,GAAAA,CACE,CACElD,KAAMA,GAERjsC,EAAW4nC,UAIf6I,EAAU,GAAGa,aAAa0B,aAwH5B7L,EAAGx4C,UAjSH,SAAmB+C,GACjB,GAAIA,EAAKie,KA9GSujC,SAgHhB,YADAhC,IAIF,MAAMiC,EAAK,IAAIC,SAEfD,EAAG/uB,OAAO,OAAQ1yB,EAAK7B,MAEvBuK,EACGopC,KACCxjC,EAAW+nC,SAAS8H,OAClB,0BACA7vC,EAAW4nC,QAAQ4B,YAAYp0C,GAC/B,4BACA4K,EAAW+nC,SAASz8B,MACtB6nC,EACA,CACEjD,iBAAkBtmD,QAAQ6c,SAC1B/K,QAAS,CACP,oBAAgBwC,KAIrBpJ,MAAK,SAAUpD,IACdA,EAAOA,EAAKA,MAEH0D,IACP+xC,EAAG6G,OAAS,GAEZmD,EACEhC,GAAAA,CACE,CACElD,KACE,YACAjsC,EAAW+nC,SAAS8H,OACpB,0BACA7vC,EAAW4nC,QAAQ4B,YAAYp0C,GAC/B,iCACA1D,EAAK0D,GACL,UACA4K,EAAW+nC,SAASz8B,MACpB,qBACA5Z,EAAKnC,KACL,OACF8jD,aAAc3hD,EAAK0D,IAErB4K,EAAW4nC,WAIf1X,EAAY,oBAEbA,EAAY,oBA4OnBiX,EAAG+J,gBAAkBA,EAGrBlmD,EAAOsB,IAAI,YA5OX,WACEikD,EAAUriD,OAAOwiD,GACjBH,EAAUriD,OAAOyiD,GAEjBD,EAAsB,KACtBC,EAAyB,QAwO3B3wC,EAAW1T,IAAI,aArOf,SAAoBoF,EAAMnH,GACpBA,GACFA,EAAS+oD,GAAAA,CAAQtzC,EAAWgyC,sWCvMlC,SAASuB,EACPvoD,EACAgV,EACAwzC,EACAxM,EACA+G,EACAt8C,EACA2I,GAEA,MAAM+sC,EAAKp9C,KACX,IAAI0pD,EAAU,KACVC,EAAgB,KACpB1zC,EAAW2zC,UAAY,GAEvB,MAAMC,EAAkB,CACtBC,sBAAsB,EACtBC,mBAAmB,EACnB3+B,QAAS,SAAU5mB,GACjB,MAAqB,kBAAVA,GACDA,EAAQ,IAAM,IAEjBA,IA6GX,SAASwlD,WACA5M,EAAG6G,OAAOkB,OACjBlvC,EAAWzJ,MAAM,QAGjB4wC,EAAG6M,OAASC,GAAAA,CAAWP,GAEvBvM,EAAGuH,KAAO,GACVvH,EAAG0H,SAASC,eACZ3H,EAAG0H,SAASE,gBAEZ,MAAMd,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASuH,0BAClB,2BAEHjB,WAAW,oBACXlqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,GA7HhB9G,EAAG+M,YAAc,SAAU5kD,GACzB,OAAOkkD,EAAKU,YAAY5kD,IA+Q1B63C,EAAGgN,iBArDH,SAA0BhO,GAExB,MAAMiO,EAAWjN,EAAG6M,OAAO7N,GACrBkO,EAAa5iD,EAASoZ,KAAK,gBACjC,GAAIwpC,EAAWl7C,OAAQ,CACrB,MAAMm7C,EAAS1qD,QAAQkD,QACrBunD,EAAW,GAAG/J,cAAc,mBAExB3tC,EAAQ/S,QAAQkD,QACpBunD,EAAW,GAAG/J,cAAc,qBAExBiK,EAAQD,EAAOzpC,KAAK,SAEtB0pC,EAAMp7C,QACRo7C,EAAMC,IAAI,UAAW,QAGvBF,EAAOjqD,GAAG,SAAS,KACjBkqD,EAAMC,IAAI,UAAW,QACI,mBAAlB73C,EAAM83C,QACT93C,EAAM83C,QAAQ,SACd93C,EAAM,GAAG+3C,WAGf/3C,EAAMtS,GAAG,UAAWgiB,IAClBrhB,EAAOgD,QAAO,WACwB,iBAAzBomD,EAASO,MAAMvlD,QACxBglD,EAASO,MAAMvlD,MAAQ,MAKzB,MAAMmB,EAAQ5E,MAAMstB,KAAK5M,EAAEjc,OAAOG,OAE5BqkD,EAjSL,QAiSiBR,EAAS9+C,OAAOqa,KACdpf,EAAMskD,MAAMhlD,GAASA,EAAK8f,MAAQilC,KAKpDR,EAASlqD,QAAU,GACnBkqD,EAASO,MAAMvlD,MAAQglD,EAAS9+C,OAAOw/C,gBAEvCV,EAASlqD,QAAUqG,EAAMmI,KAAK7I,IAC5B,MAAM,KAAEN,EAAF,KAAQogB,EAAR,KAAc1W,GAASpJ,EAC7B,MAAO,CAAEN,KAAAA,EAAMogB,KAAAA,EAAM1W,KAAAA,EAAMpJ,KAAAA,MAG/Bs3C,EAAGuH,KAAK0F,EAASO,MAAMzX,OAASkX,EAASlqD,gBAkBjDi9C,EAAG4N,eANH,SAAwBX,EAAUjO,GAGhCiO,EAASlqD,QAAQqf,OAAO48B,EAAO,GAC/BgB,EAAGuH,KAAK0F,EAASO,MAAMzX,OAASkX,EAASlqD,SAuB3Ci9C,EAAG6N,eAfH,SAAwBZ,GACtB7jC,QAAQN,IAAI,kBAAmBmkC,GAC/B,MAAMC,EAAa5iD,EAASoZ,KAAK,gBAC3BlO,EAAQ/S,QAAQkD,QACpBunD,EAAW,GAAG/J,cAAc,sBAExB,eAAE2K,EAAF,OAAkBrqC,GAAWwpC,EAAS9+C,OACxC2/C,GACFt4C,EAAME,KAAK,WAAY,YAErB+N,GACFjO,EAAM,GAAGu4C,aAAa,SAAUtqC,IAapCu8B,EAAGgO,uBAPH,WACE,MAAMC,EAAWzpD,MAAMstB,KAAKxnB,EAASoZ,KAAK,oBACpCwqC,EAAUD,EAASA,EAASj8C,OAAS,GACvCk8C,GAAWA,EAAQpuC,gBACrBouC,EAAQpuC,kBAMZkgC,EAAG/vC,QAjTH,WACEmZ,QAAQo3B,MAAM,sCAAuC3nC,EAAW4nC,SAChE5nC,EAAW6nC,OAAS,UAGpBV,EAAGS,QAAU,CACXxyC,GAAI4K,EAAW+nC,SAAS3yC,GACxBkgD,cAAe,YACfr8B,KAhBK,YAAcs8B,GAAAA,CAAQ,EAAG,MAmBhCv1C,EAAW+nC,SAASyK,UAAW,EAC/BxyC,EAAWwuC,SAAU,EAErBxH,EAAI8I,YACDE,UAAU,CACT56C,GAAI4K,EAAW+nC,SAAS3yC,GACxBs0C,QAAQ,IAETqB,SAASj2C,MAAK,SAAUpD,GACnBA,EAAKuC,QACPw/C,EAAU/hD,EAAK+hD,QACfC,EAAgBO,GAAAA,CAAWviD,EAAK25C,MAChClE,EAAG6M,OAASC,GAAAA,CAAWP,OAG1B5+C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI+/B,EAAG6M,OAAO76C,OAAQiO,IAAK,CACzC,MAAMouC,EAAQrO,EAAG6M,OAAO5sC,GAExB,GADApH,EAAW2zC,WAAa6B,EAAMv8C,UACH,IAAhBu8C,EAAMb,OACXa,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAASxiD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C85C,EAAGwO,UAAUvuC,GAAKsuC,EAAOF,EAAMb,MAAMc,eAK5CrpC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,OA2QpBkwB,EAAG+H,OA5LH,WAEElvC,EAAWwuC,SAAU,EAErB,MAAM98C,EAAO,IAAKy1C,EAAGuH,MAErB,IAAK,IAAItnC,EAAI,EAAGA,EAAI+/B,EAAG6M,OAAO76C,OAAQiO,IAAK,CACzC,MAAMouC,EAAQrO,EAAG6M,OAAO5sC,GACpBouC,EAAMb,YAA4C,IAA5BjjD,EAAK8jD,EAAMb,MAAMzX,SAEpC8P,GAAAA,CAAOwI,EAAMI,WAChBzO,EAAGS,QAAQ4N,EAAMI,SAAWjqD,MAAMoQ,QAAQrK,EAAK8jD,EAAMb,MAAMzX,QACvDxrC,EAAK8jD,EAAMb,MAAMzX,OAAOlgC,OACxBtL,EAAK8jD,EAAMb,MAAMzX,QAGnB91B,IAAMqsC,IACHzG,GAAAA,CAAOhtC,EAAW+nC,SAASuN,iBAC9BnO,EAAGS,QAAQ0N,cAAgBt1C,EAAW+nC,SAASuN,cAC/CnO,EAAGS,QAAQ3uB,KAAOttB,MAAMoQ,QAAQrK,EAAK8jD,EAAMb,MAAMzX,QAC7CxrC,EAAK8jD,EAAMb,MAAMzX,OAAOlgC,OACxBtL,EAAK8jD,EAAMb,MAAMzX,SAIN,WAAfsY,EAAMv8C,OACRvH,EAAK8jD,EAAMb,MAAMzX,OAASxrC,EAAK8jD,EAAMb,MAAMzX,OAAOxkC,KAC/C+U,GAASA,EAAK5d,SAMvB,MAAMgmD,EAAelqD,MAAMoQ,QAAQorC,EAAG6M,QAClC7M,EAAG6M,OAAO3gD,QAAQmiD,GAAyB,WAAfA,EAAMv8C,OAClC,GAEE68C,EAAU3G,GAAAA,CACd,CACElD,KAAMv6C,GAERy1C,EAAGS,SAGCmO,EAA4B,MAARrkD,GAAgBmkD,EAAa18C,OAAS,EAC1D68C,EAAyB,OAATtkD,GAA0C,OAAzBqW,KAAKE,UAAUvW,GAnFxD,IAAgBukD,EApCK1mD,GAwHGwmD,GApFRE,EAqFHH,EApFJ17C,EAAM,CACXoB,IAAM,GAAEwrC,EAAI4I,wBAAwBqG,EAAQ7gD,aAC5CsG,QAAS,CAAE,oBAAgBwC,GAC3BxM,KAAMwkD,GAAAA,CAAeD,EAAS,IACzBrC,EACHuC,gBAAiB,IAAI/C,WAEvBrD,OAAQ,UA8ENiG,EACAhP,EAAI8I,YAAYvD,QAAQuJ,GAAS/K,SACjC5M,QAAQC,OAAO,iBAGhBtpC,KAAKi/C,GACL3nC,OAhIgB7c,EAgIE,SAjHZ,SAAU0nB,GACf,MAAMg3B,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASqG,0BAClB,yBAEHC,WAAW,oBACXlqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,GAEd9G,EAAG6G,OAAOz+C,GAAQ0nB,EAAIvlB,QAsGvB69C,SAAQ,KACFpI,EAAGuH,KAAKtgB,UACX+Y,EAAGuH,KAAO,IAlLhB1uC,EAAWwuC,SAAU,MAsTvBrH,EAAGC,OA9HH,SAAgB73C,EAAM2a,GACfi9B,EAAGuH,KAAKn/C,KACX43C,EAAGuH,KAAKn/C,GAAQ,IAGlB,MAAMyJ,EAAMmuC,EAAGuH,KAAKn/C,GAAM0I,QAAQiS,GAC9BlR,GAAO,EACTmuC,EAAGuH,KAAKn/C,GAAMga,OAAOvQ,EAAK,GAE1BmuC,EAAGuH,KAAKn/C,GAAM/E,KAAK0f,IAsHvBi9B,EAAGhd,OAlHH,SAAgB56B,EAAM2a,GAKpB,OAJKi9B,EAAGuH,KAAKn/C,KACX43C,EAAGuH,KAAKn/C,GAAQ,IAGX43C,EAAGuH,KAAKn/C,GAAM0I,QAAQiS,IAAS,GA8GxCi9B,EAAGwO,UAAY,GAEfxO,EAAGuH,KAAO,GACVvH,EAAG6G,OAAS,GACZ7G,EAAG0H,SAAW,GCnWhB,SAASuH,EACPp2C,EACAwC,EACAgxC,EACAxM,EACAD,EACAG,GAEA,MAAMC,EAAKp9C,KACX,IAAI0pD,EAAU,KAmJd,SAAS4C,IASP,OARAr2C,EAAW4nC,QAAU,CACnBxyC,GAAI4K,EAAW+nC,SAAS3yC,GACxBkhD,OAAQ,YACRr9B,KAhCK,YAAcs8B,GAAAA,CAAQ,EAAG,MAmChCv1C,EAAW+nC,SAASyK,UAAW,EAExBzL,EAAqBO,cAC1BJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,EACdy4C,EAAI8I,YACRE,UAAU,CACT56C,GAAI4K,EAAW+nC,SAAS3yC,GACxBs0C,QAAQ,IAETqB,SAASj2C,MAAK,SAAUpD,GACnBA,EAAKuC,QACPw/C,EAAU/hD,EAAK+hD,QACftM,EAAG6M,OAAStiD,EAAK25C,SAGpBv2C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI+/B,EAAG6M,OAAO76C,OAAQiO,IAAK,CACzC,MAAMouC,EAAQrO,EAAG6M,OAAO5sC,GACxB,GAAIouC,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAASxiD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C85C,EAAGwO,UAAUvuC,GAAKsuC,EAAOF,EAAMb,MAAMc,eAI1CrpC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,SAGnB7K,MAAM26B,EAAqBW,gBAzLhCP,EAAGwO,UAAY,GAGfxO,EAAGuH,KAAO,GACVvH,EAAG6G,OAAS,GACZ7G,EAAG0H,SAAW,GACd1H,EAAGoP,aAAc,EAEjBpP,EAAG+M,YAAc,SAAU5kD,GACzB,OAAOkkD,EAAKU,YAAY5kD,IAmO1B63C,EAAG/vC,QAhDH,WAKE,GAJAmZ,QAAQo3B,MAAM,qCAAsC3nC,EAAW4nC,SAE/D5nC,EAAW6nC,OAAS,SAEhB7nC,EAAW4nC,SAAW5nC,EAAW4nC,QAAQ4B,YAC3C,GAAIxpC,EAAW4nC,QAAQ4B,YAAYp0C,GACjC,IAA8C,IAA1C4K,EAAW4nC,QAAQyJ,mBAErB7uC,EAAOi5B,GAAG,WAAY,KAAM,CAC1B77B,SAAU,gBAEP,SACL,MAAM42C,EAAoBx2C,EAAW4nC,QAAQ4B,YAAYp0C,GACnDqhD,EAAYz2C,MAAAA,GAAH,UAAGA,EAAY4nC,eAAf,iBAAG,EAAqB/Z,eAAxB,aAAG,EAA8Bz4B,GAChD,GAAIqhD,EAAW,CACb,MAAM/kD,EAAO,CACX0D,GAAIohD,EACJE,QAAS,OACTlN,YAAa,CACXp0C,GAAIohD,GAEN3oB,QAAS,CACPz4B,GAAIqhD,GAENhF,YAAa,YACb5G,QAAQ,EACRC,YAAa,WAIf9D,EAAI2D,gBAAgByF,QAAQ1+C,GAAMq5C,SAASwE,SAAQ,IAC1C8G,YAMb7zC,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,iBAIdy2C,KAMJlP,EAAG+H,OA5KH,WACE,IAAIjD,EAAO,sBAEX,IAAK,IAAI7kC,EAAI,EAAGA,EAAI+/B,EAAG6M,OAAO76C,OAAQiO,IAAK,CACzC,MAAMouC,EAAQrO,EAAG6M,OAAO5sC,GAEpBouC,EAAMb,YAA+C,IAA/BxN,EAAGuH,KAAK8G,EAAMb,MAAMzX,SAEvC8P,GAAAA,CAAOwI,EAAMmB,YAChB32C,EAAW4nC,QAAQ4N,EAAMmB,UAAYhrD,MAAMoQ,QACzCorC,EAAGuH,KAAK8G,EAAMb,MAAMzX,QAElBiK,EAAGuH,KAAK8G,EAAMb,MAAMzX,OAAOlgC,OAC3BmqC,EAAGuH,KAAK8G,EAAMb,MAAMzX,QAGrB8P,GAAAA,CAAOwI,EAAMI,WAChB51C,EAAW4nC,QAAQ4N,EAAMI,SAAWjqD,MAAMoQ,QACxCorC,EAAGuH,KAAK8G,EAAMb,MAAMzX,QAElBiK,EAAGuH,KAAK8G,EAAMb,MAAMzX,OAAOlgC,OAC3BmqC,EAAGuH,KAAK8G,EAAMb,MAAMzX,QAGtB91B,IAAMqsC,IACHzG,GAAAA,CAAOhtC,EAAW+nC,SAASuO,UAC9Bt2C,EAAW4nC,QAAQ0O,OAASt2C,EAAW+nC,SAASuO,OAChDt2C,EAAW4nC,QAAQ3uB,KAAOttB,MAAMoQ,QAAQorC,EAAGuH,KAAK8G,EAAMb,MAAMzX,QACxDiK,EAAGuH,KAAK8G,EAAMb,MAAMzX,OAAOlgC,OAC3BmqC,EAAGuH,KAAK8G,EAAMb,MAAMzX,SAIxBiK,EAAGuH,KAAK8G,EAAMb,MAAMzX,SACtB+O,GAAQuJ,EAAMb,MAAMzX,MAAQ,KAAOiK,EAAGuH,KAAK8G,EAAMb,MAAMzX,OAAS,OAvExE,IAAqBrP,EAAAA,EA8EjBshB,GAAAA,CACE,CACElD,KAAMA,EACN2K,QAAS52C,EAAW+nC,SAAS6O,QAC7BC,WAAY72C,EAAW+nC,SAAS8O,YAElC72C,EAAW4nC,SAnFfT,EAAGoP,aAAc,EAEjBvP,EAAI8I,YACD9c,OAAOnF,GACPkd,SAASj2C,MAAK,SAAUpD,UAChBy1C,EAAG6G,OAAO8I,iBAEjB92C,EAAW4nC,QAAQ/Z,QAAU,CAC3Bz4B,GAAI1D,EAAKm8B,QAAQz4B,IAGnB4K,EAAW4nC,QAAQ4B,YAAc,CAC/Bp0C,GAAI1D,EAAK83C,YAAYp0C,IAIvB2xC,EAAqBO,cAAcJ,EAAiBlnC,EAAW4nC,SAC5D9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAG9BP,EAAGoP,aAAc,EArChBv2C,EAAW+nC,SAASgP,sBAOvBv0C,EAAOi5B,GAAG,WAAY,KAAM,CAC1B77B,SAAU,YANZ4C,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,eAuCXwM,OAAM,SAAU6K,GAEfkwB,EAAGoP,aAAc,EAEjBhmC,QAAQnhB,MAAM6nB,OAiLpBkwB,EAAGC,OArHH,SAAgB73C,EAAM2a,GACfi9B,EAAGuH,KAAKn/C,KACX43C,EAAGuH,KAAKn/C,GAAQ,IAGlB,MAAMyJ,EAAMmuC,EAAGuH,KAAKn/C,GAAM0I,QAAQiS,GAC9BlR,GAAO,EACTmuC,EAAGuH,KAAKn/C,GAAMga,OAAOvQ,EAAK,GAE1BmuC,EAAGuH,KAAKn/C,GAAM/E,KAAK0f,IA6GvBi9B,EAAGhd,OAzGH,SAAgB56B,EAAM2a,GAKpB,OAJKi9B,EAAGuH,KAAKn/C,KACX43C,EAAGuH,KAAKn/C,GAAQ,IAGX43C,EAAGuH,KAAKn/C,GAAM0I,QAAQiS,IAAS,GCxJ1C,SAAS8sC,EACPh3C,EACAwC,EACAurC,EACA/G,EACAl2C,EACAi2C,EACAG,EACAD,GAEA,MAAME,EAAKp9C,KAQX,SAAS0kD,IACHzuC,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAAS4lC,IACP2B,EAAGuH,KAAO,GACVvH,EAAGwH,QAAU,KACbxH,EAAGyH,UAAY,KACfzH,EAAG0H,SAASC,eACZ3H,EAAG0H,SAASE,gBAEZ/uC,EAAW4nC,QAAU,GAErB5nC,EAAWgvC,gBAAiB,EAC5BhvC,EAAWzJ,MAAM,QAQnB,SAAS25B,EAAY3gC,GACnB,OAAO,SAAU0nB,GACfkwB,EAAG6G,OAAOz+C,GAAQ0nB,EAAIvlB,KAEtB,MAAMu8C,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASqG,0BAClB,yBAEHC,WAAW,oBACXlqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,IAIlB,SAASM,IACPvuC,EAAWwuC,SAAU,EAjDvBrH,EAAGuH,KAAO,GACVvH,EAAG6G,OAAS,GAoGZ7G,EAAG/vC,QAhBH,WACEmZ,QAAQo3B,MAAM,wCAAyC3nC,EAAW4nC,SAClE5nC,EAAW6nC,OAAS,YAGpB/2C,EAAG0U,IAAI,CACLuhC,EAAqBkI,WAAW/H,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBkI,WAAWhI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,IAAOkL,EAAWwuC,SAAU,KAKtCrH,EAAG+H,OAlDH,WACElvC,EAAWwuC,SAAU,EAEjBxuC,EAAW4nC,QAAQ4B,aAAexpC,EAAW4nC,QAAQ4B,YAAYp0C,GACnE4xC,EAAI2D,gBACDC,aAAa,CACZx1C,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,GACnC6hD,KAAM9P,EAAGuH,KAAKuI,OAEflM,SAASj2C,MAAK,kBACNqyC,EAAG6G,OAAOkB,OAEjB,MAAMjB,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASuH,0BAClB,2BAEHjB,WAAW,oBACXlqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,MAEfn5C,KAAK0wC,GACL1wC,KAAK25C,GACLriC,MAAM8jB,EAAY,WAClBqf,QAAQhB,IAEXA,IACAre,EAAY,YAsBhBiX,EAAGqI,KA7EH,WACEhK,IACAiJ,KCxCJ,SAASyI,EACPl3C,EACAhV,EACAulD,EACA/tC,EACAwkC,EACAD,EACAG,GAGA,IAAIiQ,EAA+B,KAGnC,SAAS3F,IACP,IAAIhI,EAAc,GACd4N,GAAO,EAEXpQ,EAAI2D,gBACDlwC,IAAI,CACHrF,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,KAEpC21C,SAASj2C,MAAK,SAAUpD,GAGvB,OAFA83C,EAAc93C,EAEPs1C,EAAI2D,gBAAgBM,YAAY,CACrCC,MAAOlrC,EAAW4nC,QAAQ4B,YAAYp0C,KACrC21C,YAEJj2C,MAAK,SAAUpD,GACd0lD,EAAO1lD,EAAK25C,KAAKlyC,OAAS,EAEtBqwC,EAAYqB,QACd7qC,EAAW4nC,QAAQ4B,YAAYqB,QAAS,EACxC9D,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,EACW,cAA5Bi7C,EAAYiI,aACdjvC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,eAGhDwM,MAAM26B,EAAqBW,kBACrB8B,EAAYoC,QAAUwL,KAE3B5N,EAAYoC,SACd5rC,EAAW4nC,QAAQ4B,YAAYoC,OAASpC,EAAYoC,QAEtD7E,EAAqBO,cAAcJ,EAAiB,IAC/ClnC,EAAW4nC,QACdyJ,oBAAoB,IAEnBv8C,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,EACrBiU,EAAOi5B,GAAG,WAAY,KAAM,CAAE77B,SAAU,eAEzCwM,MAAM26B,EAAqBW,oBAKjCt7B,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OA9DbltB,KAqFRqN,QAdH,WACEmZ,QAAQo3B,MAAM,sCAAuC3nC,EAAW4nC,SAChE5nC,EAAW6nC,OAAS,UAGlB7nC,EAAW4nC,SACX5nC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYp0C,KAG/B+hD,EAA+B5G,EAAUiB,EAAgB,OAQ7DxmD,EAAOsB,IAAI,YAtBX,WACEikD,EAAUriD,OAAOipD,iqBCzFrB,MAAMpQ,EAOJ54B,YAAYxO,EAASK,EAAYlP,GAAI,oBACnC/G,KAAKstD,cAAgB,IAAIC,IAAIt3C,EAAW+nC,SAASwP,SAASC,OAC1DztD,KAAK6V,SAAWI,EAAW+nC,SAASnoC,SACpC7V,KAAK+G,GAAKA,EACV/G,KAAK4V,QAAUA,EA4CjB83C,QAAQ7nD,EAAKrB,GACX,MAAMmpD,EAAS,UACf,OAAO3tD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwB2tD,EAAQ9nD,GAAK,KACnC8G,OAEF3M,KAAK4V,QAAQwE,OAAOsjC,YAClB,CAAEiQ,OAAAA,EAAQ9nD,IAAAA,EAAKrB,MAAAA,GACfxE,KAAKstD,kBASXjO,QAAQx5C,GACN,MAAM8nD,EAAS,UACf,OAAO3tD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwB2tD,EAAQ9nD,GAAK,CAAC2X,EAAG2C,KACvCxT,EAAQwT,MAEVngB,KAAK4V,QAAQwE,OAAOsjC,YAAY,CAAEiQ,OAAAA,EAAQ9nD,IAAAA,GAAO7F,KAAKstD,kBAQ1DpI,WAAWr/C,GACT,MAAM8nD,EAAS,aACf,OAAO3tD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwB2tD,EAAQ9nD,GAAK,KACnC8G,OAEF3M,KAAK4V,QAAQwE,OAAOsjC,YAAY,CAAEiQ,OAAAA,EAAQ9nD,IAAAA,GAAO7F,KAAKstD,kBAuB1D/P,cAAc13C,EAAK8B,GAAsB,IAAhBkF,EAAgB,wDAEvC,OAAO7M,KAAKq/C,QAAQx5C,GAAKkF,MAAMoV,IAC7B,MAAMytC,EAAU,EAAA5tD,KAAA,UAAAA,KAAgBmgB,IAAS,GAMzC,OALItT,SACK+gD,EAAQ5tD,KAAK6V,UAEpB+3C,EAAQ5tD,KAAK6V,UAAYlO,EAEpB3H,KAAK0tD,QAAQ7nD,EAAK+nD,GAAS7iD,MAAK,IAAM6iD,EAAQ5tD,KAAK6V,eAQ9D8nC,eAAezwB,GACb1G,QAAQnhB,MAAM,gBAAiB6nB,eAnHdygC,EAAQ9nD,EAAKrF,GAE9B,MAAM29B,EAAY7b,IAChB,MAAMurC,EAAkB,GAAEF,UAC1B,GACErrC,EAAEmrC,SAAWztD,KAAKstD,eAClBznD,IAAQyc,EAAE3a,KAAK9B,KACfgoD,IAAmBvrC,EAAE3a,KAAKgmD,OAC1B,CACA,MAAM,OAAEA,EAAF,KAAUxtC,GAASmC,EAAE3a,KAE3B,OADA6e,QAAQo3B,MAAO,UAAS/3C,cAAgB8nD,uBAA6BrrC,GAC7DqrC,GACN,IAAK,gBACHntD,EAASqF,GACT,MACF,IAAK,gBACHrF,EAASqF,EAAKsa,GACd,MACF,IAAK,mBACH3f,EAASqF,GACT,MACF,QACE2gB,QAAQo3B,MAAM,qBAAsB+P,GAIxC3tD,KAAK4V,QAAQk4C,oBAAoB,UAAW3vB,GAAU,KAG1Dn+B,KAAK4V,QAAQgtC,iBAAiB,UAAWzkB,GAAU,cAiD1C4vB,GACT,IAAI/zB,EAAS+zB,EACb,GAAsB,iBAAX/zB,EACT,IACEA,EAAShc,KAAK/W,MAAM8mD,GACpB,MAAO1oD,GACPmhB,QAAQwnC,KAAM,oBAAmBD,KAAe1oD,GAChD20B,EAAS+zB,EAGb,OAAO/zB,EC3EX,SAASi0B,EAAgBxE,GACvB,OAAO,SAAUjlD,GACf,OAAOilD,EAAKU,YAAY3lD,+DAqI5B3E,QACGC,OAFiB,cAEG,CACnB,YACA,SACA,aACA,aACA,aACA,aACA,QACA,UACA,YACA,qBACA,WACA,SAEDwJ,OAAO,YAAa2kD,GACpBC,SAAS,iBAAkB,eAC3BA,SAAS,kBAAmB,WAC5BA,SAAS,iBAAkB,UAC3Bz2C,QAAQ,uBAAwBulC,GAChCn6C,UAAU,WAnCb,WACE,OAAO,SAAUC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,oBAAoB,SAAU/C,GACrB,KAAhBA,EAAMu6C,QACRh4C,EAAMmB,QAAO,WACXnB,EAAMzB,MAAM2B,EAAMmrD,YAEpB5tD,EAAMgD,yBA6BXV,UAAU,WArJb,WA0GE,MAAO,CACL0F,KAVF,SAAczF,EAAOC,GACnBA,EAAQzC,GAAG,SAAS,WACE+lB,SAAS+nC,eAAe,iBAlGhD,SAAsBltC,EAAMpe,GAE1B,MAAMurD,EAAMhoC,SAAS45B,cAAc,OAC7BpC,EAAU/6C,EAAM+6C,QAChBG,EAAWl7C,EAAMk7C,SACvB,IAAIsQ,EAEJ,IAAK,IAAIjxC,EAAI,EAAGA,EAAIva,EAAMmlD,SAAS74C,OAAQiO,IAAK,CAC9C,MAAMymB,EAAUhhC,EAAMmlD,SAAS5qC,GAC/B,IAAImkC,EAAS,WACb,MAAMU,EAAO,YAAcpe,EAAQoe,KAC7BqM,EACJ,YAAcnM,GAAAA,CAAOte,EAAQqe,WAAWv6B,OAAO,uBAEjD,GAAU,IAANvK,EAAJ,CAKA,OAAQva,EAAMk7C,SAAS4D,iBACrB,IAAK,gBACHJ,GACwB,QAAtB1d,EAAQ2d,UACJ3d,EAAQ+d,OACN7D,EAAS8D,WAAahe,EAAQ+d,OAC9B,SACF7D,EAAS0D,eACT7D,EAAQ3uB,MACR,UAAY4U,EAAQ6d,UAC1B,MAEF,IAAK,cACHH,GACwB,QAAtB1d,EAAQ2d,UACJ3d,EAAQ+d,OACN/d,EAAQie,KAAKC,OAASle,EAAQie,KAAKE,SACnC,SACFjE,EAAS0D,eACT7D,EAAQ3uB,MACR,UAAY4U,EAAQ6d,UAC1B,MAEF,IAAK,iBACHH,GACwB,QAAtB1d,EAAQ2d,UACJ3d,EAAQ+d,OACN/d,EAAQie,KAAKE,SACb,SACFjE,EAAS0D,eACT7D,EAAQ3uB,MACR,UAAY4U,EAAQ6d,UAC1B,MAEF,QACEH,GACwB,QAAtB1d,EAAQ2d,UACJ3d,EAAQ+d,QACL7D,EAAS8D,YAAc,SAAWhe,EAAQ+d,OAC3C,SACF7D,EAAS0D,eACT7D,EAAQ3uB,MACR,UAAY4U,EAAQ6d,UAG9B0M,EAAInO,YAAY75B,SAASmoC,eAAehN,IACxC6M,EAAInO,YAAY75B,SAAS45B,cAAc,OACvCoO,EAAInO,YAAY75B,SAASmoC,eAAetM,IACxCmM,EAAInO,YAAY75B,SAAS45B,cAAc,OACvCoO,EAAInO,YAAY75B,SAASmoC,eAAeD,IACxCF,EAAInO,YAAY75B,SAAS45B,cAAc,OACvCoO,EAAInO,YAAY75B,SAAS45B,cAAc,YAvDrCqO,EAAYxqB,EAAQqe,UA0DxB,MAAMsM,EAAWloC,OAAO8mC,OAExBoB,EAASpoC,SAASqoC,MAAM,sBAAwBroC,SAAS8sB,MAAQ,YACjEsb,EAASpoC,SAASqoC,MAAM,kBACxBD,EAASpoC,SAASqoC,MAAM,iBAAmB1Q,EAAS6O,QAAU,SAC9D4B,EAASpoC,SAASqoC,MAChB,oBACEtM,GAAAA,CAAOkM,GAAW1mC,OAAO,uBACzB,SAEJ6mC,EAASpoC,SAASqoC,MAChB,oBAAsBtM,GAAAA,GAASx6B,OAAO,uBAAyB,SAEjE6mC,EAASpoC,SAASqoC,MAAML,EAAIM,WAC5BF,EAASpoC,SAASqoC,MAAM,kBAExBD,EAASpoC,SAASg6B,QAClBoO,EAASG,QAETH,EAASI,QACTJ,EAASpO,QAOLyO,CAAaC,EAAajsD,OAO9BqE,SAAU,QA2CXnG,WAAW,iBAAkBulD,GAE7BvlD,WAAW,oBAAqB+iD,GAEhCx4C,OA3BH,sBA2BU,SAAUyjD,GAChBA,EAAmBC,qBAEpBjuD,WAAW,kBAAmB87C,GAE9B58C,QAAQ,MAAOwlD,GAEfn6C,OAAO23C,GACP3qC,IAAIsqC,GAEJ7hD,WAAW,oBAAqBwoD,GAEhCj+C,OAvCH,sBAuCU,SAAUyjD,GAChBA,EAAmBC,qBAEpBjuD,WAAW,mBAAoBqrD,GAE/BrrD,WAAW,sBAAuBisD,GAElCjsD,WAAW,oBAAqBmsD,wFCjNnCrtD,EAAOovD,QAAU,WACf,GAA0B,iBAAfC,WACT,OAAOA,WAGT,IAAItxC,EAEJ,IAGEA,EAAI7d,MAAQ,IAAI0mB,SAAS,cAAb,GACZ,MAAOpE,GAEP,GAAsB,iBAAXiE,OACT,OAAOA,OAIT,GAAoB,iBAAT7Y,KACT,OAAOA,KAIT,QAAsB,IAAX,EAAAmQ,EACT,OAAO,EAAAA,EAIX,OAAOA,EA5BQ,wECHjB,WAoBE7d,QAjBM4d,EAAO,SAON,KAFU,EAAF,WACL,OAAQA,EAAKuuC,eAWjB,WAWJ,SAASn6C,EAAQhO,GAEb,MAAmC,mBAA5B,GAAK8Q,SAAS/S,KAAKiC,GAG9B,SAASorD,EAAaprD,GAElB,QAAQgO,EAAQhO,IAAuB,iBAARA,IAAsBA,GAASA,aAAeqrD,MAAWrrD,aAAeuuB,MAQ3G,SAAS+8B,IAEL,MAA2B,mBAAbjG,SAGlB,SAASkG,IAEL,GAAID,IACA,OAAO,IAAIjG,SAkCnB,SAASmG,EAAmBC,EAAYtvD,EAASuvD,EAAUC,GAEvD,IAAIvT,EAAQ,EAEZ,IAAK,IAAIv2C,KAAO4pD,EAAY,CAExB,GAAIA,EAAW/sD,eAAemD,GAAM,CAEhC,IAAI+pD,EAAWD,GAAa9pD,EACxBrB,EAAQrE,EAAQirB,QAAQqkC,EAAW5pD,IAevC,GAbI8pD,GAAaP,EAAaK,KAC1BG,EAAWD,EAAY,IAAM9pD,EAAM,KAGnC8pD,GAAa39C,EAAQy9C,KAGjBG,EADA59C,EAAQxN,IAAUrE,EAAQ2pD,qBACf6F,EAAY,IAAMvT,EAAQ,IAE1BuT,EAAY,MAI3B39C,EAAQxN,IAAU4qD,EAAa5qD,GAE/BgrD,EAAmBhrD,EAAOrE,EAASuvD,EAAUE,QAE1C,GAAIprD,aAAiBqrD,SAExB,IAAK,IAAInyC,EAAI,EAAGA,EAAIlZ,EAAM4K,OAAQsO,IAC9BgyC,EAASr1B,OAAOu1B,EAAW,IAAMlyC,EAAI,IAAKlZ,EAAM2b,KAAKzC,SAElDlZ,aAAiB6qD,KAExBK,EAASr1B,OAAOu1B,EAAUprD,EAAOA,EAAMgB,MAEhChB,aAAiB+tB,KAExBm9B,EAASr1B,OAAOu1B,EAAUprD,EAAMsrD,gBAEb,OAAVtrD,GAAkBrE,EAAQ4pD,mBAAgC,OAAVvlD,SAA6B2P,IAAV3P,GAE5EkrD,EAASr1B,OAAOu1B,EAAUprD,GAGlC43C,IAEJ,OAAOsT,EAEX,OAhFA,SAAiBD,EAAYtvD,GAEzB,GAAIA,GAAWA,EAAQisD,iBAEnB,GAnB8B,mBAmBDjsD,EAAQisD,gBAnBlB/xB,OAqBf,KAAM,qDAEP,IAAKi1B,IAER,KAAM,8FA3Bd,IA0CQS,EA5DG,CAgDc,CACjB3D,gBAAiBmD,IACjBzF,sBAAsB,EACtBC,mBAAmB,EACnB3+B,QAAS,SAAS5mB,GACd,MAAqB,kBAAVA,GACCA,EAAQ,IAAK,IAElBA,IAIkCrE,GAAW,IA5DlCyO,QAAO,SAAUohD,EAAOC,GAI9C,OAHA18C,OAAOC,KAAKy8C,GAAelvD,SAAQ,SAAUmvD,GACzCF,EAAME,GAAaD,EAAcC,MAE9BF,IACR,IAyDH,OAAOR,EAAmBC,EAAYM,EAAeA,EAAc3D,kBA5EjClsD,IACjC,QAFM,OAEN,oECDD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,8FAA8FttC,MAClG,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1C2tC,cAAe,SACfC,KAAM,SAAU99C,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExB+9C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,eACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACN30C,EAAG,mBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,WACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyB5yD,CAAQ,EAAQ,8FCOlD,SAAWkiD,GAAU,aAIzB,IAAI2Q,EAAa,SAAUxyC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVyyC,EAAU,CACN51C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJk9C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ/4B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJk5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe5tD,EAAQ6tD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf3hD,EAAMgiD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAriD,EAAMA,EAAImiD,EAAgB,EAAI,IAE3BniD,EAAI+D,QAAQ,MAAO49C,KAGlCvC,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGGhO,EAAO+N,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU99C,GACZ,MAAO,MAAQA,GAEnB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG61C,EAAU,KACbjB,GAAIiB,EAAU,KACdj+C,EAAGi+C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd95B,EAAG85B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBQ,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC69C,KAAM,CACFC,IAAK,EACLC,IAAK,KAtJyB5yD,CAAQ,EAAQ,8FCDlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wEAAwEttC,MAC5E,KAEJutC,YAAa,wEAAwEvtC,MACjF,KAEJwtC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,WACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh5B,EAAG,MACHi5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MApDyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPX,EAAa,SAAUxyC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVyyC,EAAU,CACN51C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJk9C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ/4B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJk5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe5tD,EAAQ6tD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf3hD,EAAMgiD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAriD,EAAMA,EAAImiD,EAAgB,EAAI,IAE3BniD,EAAI+D,QAAQ,MAAO49C,KAGlCvC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGGhO,EAAO+N,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU99C,GACZ,MAAO,MAAQA,GAEnB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG61C,EAAU,KACbjB,GAAIiB,EAAU,KACdj+C,EAAGi+C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd95B,EAAG85B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBU,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC0+C,WAAY,SAAUluD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO03C,EAAU13C,MAEpBjH,QAAQ,KAAM,MAEvB69C,KAAM,CACFC,IAAK,EACLC,IAAK,MAzKyB5yD,CAAQ,EAAQ,8FCIlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wEAAwEttC,MAC5E,KAEJutC,YAAa,wEAAwEvtC,MACjF,KAEJwtC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,WACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh5B,EAAG,MACHi5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB5yD,CAAQ,EAAQ,8FCElD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFxR,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,6EAA6EttC,MACjF,KAEJutC,YAAa,6EAA6EvtC,MACtF,KAEJwtC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU99C,GACZ,MAAO,MAAQA,GAEnB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,WACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh5B,EAAG,MACHi5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO43C,EAAU53C,MAEpBjH,QAAQ,KAAM,MAEvB0+C,WAAY,SAAUluD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO03C,EAAU13C,MAEpBjH,QAAQ,KAAM,MAEvB69C,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,yEAAyEttC,MAC7E,KAEJutC,YAAa,yEAAyEvtC,MAClF,KAEJwtC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,WACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh5B,EAAG,MACHi5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETb,EAAa,SAAUxyC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVyyC,EAAU,CACN51C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJk9C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ/4B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJk5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe5tD,EAAQ6tD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf3hD,EAAMgiD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAriD,EAAMA,EAAImiD,EAAgB,EAAI,IAE3BniD,EAAI+D,QAAQ,MAAO49C,KAGlCvC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGChO,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU99C,GACZ,MAAO,MAAQA,GAEnB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG61C,EAAU,KACbjB,GAAIiB,EAAU,KACdj+C,EAAGi+C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd95B,EAAG85B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBU,SAAU,SAAUpuD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO43C,EAAU53C,MAEpBjH,QAAQ,KAAM,MAEvB0+C,WAAY,SAAUluD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO03C,EAAU13C,MAEpBjH,QAAQ,KAAM,MAEvB69C,KAAM,CACFC,IAAK,EACLC,IAAK,MAzLyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EttC,MACnF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,qEAAqExtC,MAC3E,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,+BACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN30C,EAAG,kBACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,SACHC,GAAI,SAER/B,cAAe,0BACfC,KAAM,SAAU99C,GACZ,MAAO,mBAAmBuQ,KAAKvQ,IAEnC+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SAEA,SAGfd,uBAAwB,wCACxBC,QAAS,SAAUC,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIl1C,EAAIk1C,EAAS,GAGjB,OAAOA,GAAUkB,EAASp2C,IAAMo2C,EAFvBlB,EAAS,IAAOl1C,IAEsBo2C,EADvClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAYzB,SAAS0R,EAAuBnB,EAAQQ,EAAettD,GASnD,MAAY,MAARA,EACOstD,EAAgB,UAAY,UACpB,MAARttD,EACAstD,EAAgB,UAAY,UAE5BR,EAAS,KAtBFoB,GAsB6BpB,EArB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,yBAA2B,yBAC/ChB,GAAIgB,EAAgB,yBAA2B,yBAC/Cf,GAAI,iBACJE,GAAI,uBACJE,GAAI,kBAOgC3sD,GArBvBid,MAAM,KAChBixC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAyBC5R,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,uGAAuG9E,MAC3G,KAEJmxC,WAAY,qGAAqGnxC,MAC7G,MAGRutC,YAAa,0DAA0DvtC,MACnE,KAEJwtC,SAAU,CACN1oC,OAAQ,0DAA0D9E,MAC9D,KAEJmxC,WAAY,0DAA0DnxC,MAClE,KAEJoxC,SAAU,+CAEd3D,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBACTE,QAAS,eACTD,SAAU,WACN,MAAO,mBAEXE,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN30C,EAAG,kBACHpI,EAAG8+C,EACH7B,GAAI6B,EACJ5B,EAAG4B,EACH3B,GAAI2B,EACJ36B,EAAG,QACHi5B,GAAI0B,EACJzB,EAAG,QACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAERrD,cAAe,yBACfC,KAAM,SAAU99C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQzB,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,KADTA,EAAS,KAEnB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFttC,MACxF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAG,kBACH40C,GAAI,aACJh9C,EAAG,SACHi9C,GAAI,YACJC,EAAG,MACHC,GAAI,UACJh5B,EAAG,MACHi5B,GAAI,UACJiC,EAAG,UACHC,GAAI,aACJjC,EAAG,QACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI4B,EAAY5B,EAAS,GACrB6B,EAAc7B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB6B,EACA7B,EAAS,MACT6B,EAAc,IAAMA,EAAc,GAClC7B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,GAAiC,IAAdA,EACnB5B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KArFyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IttC,MAClJ,KAEJutC,YAAa,iDAAiDvtC,MAAM,KACpEwtC,SAAU,+CAA+CxtC,MAAM,KAC/DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN30C,EAAG,kBACH40C,GAAI,aACJh9C,EAAG,eACHi9C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJh5B,EAAG,aACHi5B,GAAI,UACJC,EAAG,aACHC,GAAI,UACJC,EAAG,YACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFxR,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,mEAAmEvtC,MAC5E,KAEJwtC,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,uCAAuCztC,MAAM,KAC5D0tC,YAAa,kCAAkC1tC,MAAM,KACrDiuC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG,eACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAIzBy0C,cAAe,uCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,QAAb5C,GAEa,SAAbA,EADA4C,EAGa,UAAb5C,EACA4C,GAAQ,EAAIA,EAAOA,EAAO,GACb,UAAb5C,GAEa,YAAbA,EADA4C,EAAO,QACX,GAKX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,EACP,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QACAA,EAAO,GACP,UAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KA9HyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,mEAAmEvtC,MAC5E,KAEJwtC,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,uCAAuCztC,MAAM,KAC5D0tC,YAAa,kCAAkC1tC,MAAM,KACrDiuC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG,eACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzBy0C,cAAe,2BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,QAAb5C,GAAsB4C,GAAQ,GACjB,UAAb5C,GAAwB4C,EAAO,GACnB,UAAb5C,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qJAAqJttC,MACzJ,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJ4xC,iBAAkB,gBAClBC,kBAAkB,EAClBrE,SAAU,gFAAgFxtC,MACtF,KAEJytC,cAAe,oDAAoDztC,MAC/D,KAEJ0tC,YAAa,6BAA6B1tC,MAAM,KAChDiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,YACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,QACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,WACJC,EAAG,cACHC,GAAI,YACJh5B,EAAG,WACHi5B,GAAI,UACJC,EAAG,YACHC,GAAI,UACJC,EAAG,UACHC,GAAI,SAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzBy0C,cAAe,wCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,WAAb5C,GAAyB4C,GAAQ,GACpB,YAAb5C,GAA0B4C,EAAO,GACrB,YAAb5C,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,UACAA,EAAO,GACP,UACAA,EAAO,GACP,UAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAxHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,SAASwS,EAAyBjC,EAAQQ,EAAettD,GAMrD,OAAO8sD,EAAS,IAoBpB,SAAkB/vC,EAAM+vC,GACpB,OAAe,IAAXA,EAKR,SAAsB/vC,GAClB,IAAIiyC,EAAgB,CAChB7/C,EAAG,IACH4J,EAAG,IACHua,EAAG,KAEP,YAAsChlB,IAAlC0gD,EAAcjyC,EAAKnd,OAAO,IACnBmd,EAEJiyC,EAAcjyC,EAAKnd,OAAO,IAAMmd,EAAKqX,UAAU,GAb3C66B,CAAalyC,GAEjBA,EAxBemyC,CALT,CACT9C,GAAI,WACJK,GAAI,MACJF,GAAI,UAE8BvsD,GAAM8sD,GAchD,SAASqC,EAAWrC,GAChB,OAAIA,EAAS,EACFqC,EAAWrC,EAAS,IAExBA,EAoBX,IAAIsC,EAAc,CACV,QACA,cACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJC,EAAc,6IAqBdC,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QAGC/S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,gFAAgFttC,MACpF,KAEJutC,YAAa,mDAAmDvtC,MAAM,KACtEwtC,SAAU,6CAA6CxtC,MAAM,KAC7DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,wBAAwB1tC,MAAM,KAC3CsyC,cAAeD,EACfE,kBArCoB,CAChB,QACA,QACA,WACA,iBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJH,iBAAkBA,EAElBD,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA7CoB,wFA8CpBC,uBA7CyB,2DA8CzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBlE,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,SACN30C,EAAG,wBACH40C,GAAI,YACJh9C,EAAG,cACHi9C,GAAI2C,EACJ1C,EAAG,SACHC,GAAI,SACJh5B,EAAG,YACHi5B,GAAIwC,EACJvC,EAAG,SACHC,GAAIsC,EACJrC,EAAG,WACHC,GApIR,SAAiCG,GAC7B,OAAQqC,EAAWrC,IACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,YA6HxBF,uBAAwB,kBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,KAAO,QAGvCC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,YACfC,KAAM,SAAUnvC,GACZ,MAAiB,SAAVA,GAEXovC,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAOyC,EAAO,GAAK,OAAS,UAnKErzD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,SAASuT,EAAUhD,EAAQQ,EAAettD,GACtC,IAAIS,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,KAQD,OANIS,GADW,IAAXqsD,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANI7sD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANI7sD,GADW,IAAXqsD,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIrsD,GADW,IAAXqsD,EACU,MAEA,QAGlB,IAAK,KAQD,OANIrsD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIrsD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,cACH40C,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAG,MACHi5B,GAAIuD,EACJtD,EAAG,SACHC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAlJyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJ6D,WAAY,oFAAoFnxC,MAC5F,KAEJ8E,OAAQ,qHAAqH9E,MACzH,KAEJoxC,SAAU,mBAEd7D,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJyE,GAAI,aACJxE,IAAK,gCACLyE,IAAK,mBACLxE,KAAM,qCACNyE,KAAM,wBAEVxE,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjBvxD,KAAK4wD,QAAgB,MAAQ,MAAQ,QAE9DY,QAAS,WACL,MAAO,YAA+B,IAAjBxxD,KAAK4wD,QAAgB,MAAQ,MAAQ,QAE9Da,SAAU,WACN,MAAO,YAA+B,IAAjBzxD,KAAK4wD,QAAgB,MAAQ,MAAQ,QAE9Dc,QAAS,WACL,MAAO,YAA+B,IAAjB1xD,KAAK4wD,QAAgB,MAAQ,MAAQ,QAE9De,SAAU,WACN,MACI,wBACkB,IAAjB3xD,KAAK4wD,QAAgB,MAAQ,MAC9B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACN30C,EAAG,aACH40C,GAAI,YACJh9C,EAAG,WACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQyB,GACvB,IAAI2B,EACW,IAAXpD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXyB,GAA6B,MAAXA,IAClB2B,EAAS,KAENpD,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KA/FyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIgO,EAAS,oFAAoFttC,MACzF,KAEJutC,EAAc,kDAAkDvtC,MAAM,KACtEmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIJC,EAAc,wJAElB,SAASc,EAAOz1C,GACZ,OAAOA,EAAI,GAAKA,EAAI,GAAoB,MAAZA,EAAI,IAEpC,SAASo1C,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAI9sD,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,IACD,OAAOstD,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,UAAY,UAEvCrsD,EAAS,YAExB,IAAK,IACD,OAAO6sD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,SAAW,SAEtCrsD,EAAS,WAExB,IAAK,IACD,OAAO6sD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,SAAW,SAEtCrsD,EAAS,WAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,MAAQ,OAEnCrsD,EAAS,MAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,QAAU,UACjD,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,SAAW,UAEtCrsD,EAAS,SAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,OAAS,OAEpCrsD,EAAS,QAKvB87C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACb6E,YAAaA,EACbR,iBAAkBQ,EAGlBK,kBAAmB,uKACnBC,uBAAwB,sDACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,mDAAmDxtC,MAAM,KACnEytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN5+B,EAAG,cAEP6+B,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,mBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACX,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,0BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzKyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,gEAAgEttC,MACpE,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,oEAAoExtC,MAC1E,KAEJytC,cAAe,6BAA6BztC,MAAM,KAClD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sCACJC,IAAK,6CACLC,KAAM,oDAEVC,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTE,QAAS,sBACTD,SAAU,4BACVE,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUiE,GAMd,OAAOA,GALK,UAAUtsD,KAAKssD,GACrB,MACA,QAAQtsD,KAAKssD,GACb,MACA,QAGVhE,KAAM,YACN30C,EAAG,iBACH40C,GAAI,aACJh9C,EAAG,YACHi9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,qDAAqDvtC,MAC9D,KAEJwtC,SAAU,+EAA+ExtC,MACrF,KAEJytC,cAAe,+BAA+BztC,MAAM,KACpD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EAEpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAI,YACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,MACHC,GAAI,SACJh5B,EAAG,UACHi5B,GAAI,aACJC,EAAG,MACHC,GAAI,SACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,mCAExBC,QAAS,SAAUC,GACf,IACIoD,EAAS,GAiCb,OAlCQpD,EAyBA,GAEAoD,EADM,KA1BNpD,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MA7BTA,EA+BO,IACXoD,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBApD,IAkCDA,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KA9FyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFttC,MAC1F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,qDAAqDxtC,MAAM,KACrEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,mBACVC,QAAS,iBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,cACH40C,GAAI,cACJh9C,EAAG,WACHi9C,GAAI,cACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,WACHC,GAAI,aACJC,EAAG,QACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB5yD,CAAQ,EAAQ,8FCMlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBk9C,EAAG,CAAC,cAAe,gBACnB/4B,EAAG,CAAC,UAAW,aACfi5B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBvrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7Cu8C,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAGihD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJh5B,EAAG88B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB5yD,CAAQ,EAAQ,8FCAlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBk9C,EAAG,CAAC,cAAe,gBACnB/4B,EAAG,CAAC,UAAW,aACfi5B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBvrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7Cu8C,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAGihD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJh5B,EAAG88B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBk9C,EAAG,CAAC,cAAe,gBACnB/4B,EAAG,CAAC,UAAW,aACfi5B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBvrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG/Cu8C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAGihD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJh5B,EAAG88B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIgO,EAAS,CACL,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEJE,EAAW,CACP,WACA,OACA,WACA,OACA,aACA,SACA,YAGClO,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUA,EACVC,cAAeD,EACfE,YAAa,qCAAqC1tC,MAAM,KACxDiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,QACfC,KAAM,SAAU99C,GACZ,MAAO,OAASA,GAEpB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,UACVC,QAAS,cACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,YACN30C,EAAG,iBACH40C,GAAI,cACJh9C,EAAG,WACHi9C,GAAI,YACJC,EAAG,aACHC,GAAI,cACJh5B,EAAG,WACHi5B,GAAI,YACJC,EAAG,SACHC,GAAI,UACJC,EAAG,WACHC,GAAI,aAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC0+C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC69C,KAAM,CACFC,IAAK,EACLC,IAAK,MAxFyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAWhBA,EAAO+N,aAAa,KAAM,CAC/B+F,mBAAoB,qHAAqHpzC,MACrI,KAEJqzC,iBAAkB,qHAAqHrzC,MACnI,KAEJstC,OAAQ,SAAUgG,EAAgBxuC,GAC9B,OAAKwuC,EAGiB,iBAAXxuC,GACP,IAAIzE,KAAKyE,EAAOqS,UAAU,EAAGrS,EAAO1Z,QAAQ,UAGrClO,KAAKq2D,kBAAkBD,EAAeE,SAEtCt2D,KAAKu2D,oBAAoBH,EAAeE,SARxCt2D,KAAKu2D,qBAWpBlG,YAAa,oDAAoDvtC,MAAM,KACvEwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1C6tC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCJ,KAAM,SAAU99C,GACZ,MAAyC,OAAjCA,EAAQ,IAAIsU,cAAc,IAEtCupC,cAAe,gBACfM,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVmF,WAAY,CACRjF,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,gCACX,QACI,MAAO,mCAGnBvC,SAAU,KAEdN,SAAU,SAAUzrD,EAAK4wD,GACrB,IApEY7jD,EAoERmjD,EAAS/1D,KAAK02D,YAAY7wD,GAC1B+qD,EAAQ6F,GAAOA,EAAI7F,QAIvB,OAzEYh+C,EAsEGmjD,GApEM,oBAAbrvC,UAA4B9T,aAAiB8T,UACX,sBAA1CnT,OAAO1R,UAAUiT,SAAS/S,KAAK6Q,MAoE3BmjD,EAASA,EAAO5zD,MAAMs0D,IAEnBV,EAAOhhD,QAAQ,KAAM67C,EAAQ,IAAO,EAAI,MAAQ,SAE3DiB,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,oBACH40C,GAAI,kBACJh9C,EAAG,YACHi9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,WACHi5B,GAAI,WACJC,EAAG,aACHC,GAAI,WACJC,EAAG,cACHC,GAAI,aAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,2FCMlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FttC,MACjG,KAEJutC,YAAa,oDAAoDvtC,MAAM,KACvEwtC,SAAU,qDAAqDxtC,MAAM,KACrEytC,cAAe,gCAAgCztC,MAAM,KACrD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNyE,KAAM,uCAEVrF,cAAe,cACfC,KAAM,SAAU99C,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3BypC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,SAAW,SAErBA,EAAU,SAAW,UAGpCQ,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAG,kBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,WACHi5B,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA/DyB5yD,CAAQ,EAAQ,8FCDlD,SAAWkiD,GAAU,aAIzB,IAAIuU,EAAiB,8DAA8D7zC,MAC3E,KAEJutC,EAAc,kDAAkDvtC,MAAM,KACtEmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEP9S,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbyoC,EAAYr7C,EAAEshD,SAEdK,EAAe3hD,EAAEshD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1xD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3xD,KAAK4wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB5yD,CAAQ,EAAQ,8FCIlD,SAAWkiD,GAAU,aAIzB,IAAIuU,EAAiB,8DAA8D7zC,MAC3E,KAEJutC,EAAc,kDAAkDvtC,MAAM,KACtEmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEP9S,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbyoC,EAAYr7C,EAAEshD,SAEdK,EAAe3hD,EAAEshD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1xD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3xD,KAAK4wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET8D,YAAa,mBAzGqB12D,CAAQ,EAAQ,8FCIlD,SAAWkiD,GAAU,aAIzB,IAAIuU,EAAiB,8DAA8D7zC,MAC3E,KAEJutC,EAAc,kDAAkDvtC,MAAM,KACtEmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEP9S,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbyoC,EAAYr7C,EAAEshD,SAEdK,EAAe3hD,EAAEshD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1xD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3xD,KAAK4wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIzB,IAAIuU,EAAiB,8DAA8D7zC,MAC3E,KAEJutC,EAAc,kDAAkDvtC,MAAM,KACtEmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAET9S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbyoC,EAAYr7C,EAAEshD,SAEdK,EAAe3hD,EAAEshD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1xD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3xD,KAAK4wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET8D,YAAa,mBAzGqB12D,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACTxK,EAAG,CAAC,eAAgB,cAAe,iBACnC40C,GAAI,CAACW,EAAS,UAAWA,EAAS,YAClC39C,EAAG,CAAC,aAAc,aAClBi9C,GAAI,CAACU,EAAS,UAAWA,EAAS,YAClCT,EAAG,CAAC,YAAa,YAAa,YAC9BC,GAAI,CAACQ,EAAS,SAAUA,EAAS,UACjCx5B,EAAG,CAAC,YAAa,YACjBk5B,EAAG,CAAC,UAAW,WAAY,WAC3BC,GAAI,CAACK,EAAS,OAAQA,EAAS,SAC/BJ,EAAG,CAAC,YAAa,QAAS,aAC1BC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAIQ,EACOvrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAElDutD,EAAWxrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG1Cu8C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FttC,MACjG,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJwtC,SAAU,iEAAiExtC,MACvE,KAEJytC,cAAe,gBAAgBztC,MAAM,KACrC0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,qBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACN30C,EAAG64C,EACHjE,GAAIiE,EACJjhD,EAAGihD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ98B,EAAG88B,EACH7D,GAAI,WACJC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,+FAA+FttC,MACnG,KAEJutC,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sEAAsExtC,MAC5E,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACN5+B,EAAG,WACHmjC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAEVxE,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN30C,EAAG,iBACH40C,GAAI,aACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,WACHi5B,GAAI,UACJC,EAAG,eACHC,GAAI,cACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wEAAwEttC,MAC5E,KAEJutC,YAAa,wEAAwEvtC,MACjF,KAEJwtC,SAAU,qDAAoExtC,MAC1E,KAEJytC,cAAe,qDAAoEztC,MAC/E,KAEJ0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,wBACfC,KAAM,SAAU99C,GACZ,MAAO,aAAauQ,KAAKvQ,IAE7B+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,aAEA,cAGfjC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,YACH40C,GAAI,WACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EACFwP,QAAQ,UAAU,SAAUiH,GACzB,OAAO43C,EAAU53C,MAEpBjH,QAAQ,KAAM,MAEvB0+C,WAAY,SAAUluD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO03C,EAAU13C,MAEpBjH,QAAQ,KAAM,MAEvB09C,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,MA5GyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIyU,EAAc,wEAAwE/zC,MAClF,KAEJg0C,EAAgB,CACZ,QACA,QACA,SACA,SACA,SACA,SACA,SACAD,EAAY,GACZA,EAAY,GACZA,EAAY,IAEpB,SAASlB,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAI9sD,EAAS,GACb,OAAQT,GACJ,IAAK,IACD,OAAOutD,EAAW,oBAAsB,kBAC5C,IAAK,KACD9sD,EAAS8sD,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACD9sD,EAAS8sD,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD9sD,EAAS8sD,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD9sD,EAAS8sD,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACD9sD,EAAS8sD,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD9sD,EAAS8sD,EAAW,SAAW,SAIvC,OAEJ,SAAsBT,EAAQS,GAC1B,OAAOT,EAAS,GACVS,EACI0D,EAAcnE,GACdkE,EAAYlE,GAChBA,EARGoE,CAAapE,EAAQS,GAAY,IAAM9sD,EAW3C87C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,2GAA2GttC,MAC/G,KAEJutC,YAAa,uEAAuEvtC,MAChF,KAEJwtC,SAAU,qEAAqExtC,MAC3E,KAEJytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACN5+B,EAAG,WACHmjC,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAEVxE,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB5yD,CAAQ,EAAQ,4FCIlD,SAAWkiD,GAAU,aAIfA,EAAO+N,aAAa,MAAO,CACjCC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,wBAAwB1tC,MAAM,KAC3CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,eACHi9C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJh5B,EAAG,aACHi5B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,4EAA4ExtC,MAClF,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACN30C,EAAG,YACH40C,GAAI,cACJh9C,EAAG,eACHi9C,GAAI,cACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,YACHi5B,GAAI,WACJC,EAAG,cACHC,GAAI,aACJC,EAAG,UACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB5yD,CAAQ,EAAQ,8FCElD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJh5B,EAAG,UACHi5B,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,SAlEjBzyD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJh5B,EAAG,UACHi5B,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAEI8S,EAAc,yKACdD,EAAc,CACV,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAGC7S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJoyC,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA3BoB,2FA4BpBC,uBA3ByB,oFA4BzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJh5B,EAAG,UACHi5B,GAAI,WACJiC,EAAG,cACHC,GAAI,cACJjC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAI4U,EAAsB,6DAA6Dl0C,MAC/E,KAEJm0C,EAAyB,kDAAkDn0C,MACvE,KAGCs/B,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,iGAAiGttC,MACrG,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbqvC,EAAuBjiD,EAAEshD,SAEzBU,EAAoBhiD,EAAEshD,SAJtBU,GAOfrC,kBAAkB,EAClBrE,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG,mBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aA4ChBA,EAAO+N,aAAa,KAAM,CAC/BC,OAzCS,CACL,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BJC,YA5Bc,CACV,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBJsE,kBAAkB,EAClBrE,SAhBW,CACP,eACA,WACA,WACA,cACA,YACA,YACA,eAUJC,cARgB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QASnEC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MASlDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,YACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,UACHi9C,GAAI,aACJC,EAAG,iBACHC,GAAI,oBACJh5B,EAAG,KACHi5B,GAAI,QACJC,EAAG,KACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aA4ChBA,EAAO+N,aAAa,KAAM,CAC/BC,OAzCS,CACL,gBACA,aACA,UACA,aACA,aACA,eACA,cACA,cACA,eACA,aACA,eACA,gBA8BJC,YA5Bc,CACV,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QAiBJsE,kBAAkB,EAClBrE,SAhBW,CACP,cACA,UACA,UACA,YACA,YACA,WACA,eAUJC,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASnDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACN30C,EAAG,gBACH40C,GAAI,YACJh9C,EAAG,UACHi9C,GAAI,gBACJC,EAAG,OACHC,GAAI,aACJh5B,EAAG,QACHi5B,GAAI,WACJC,EAAG,OACHC,GAAI,YACJC,EAAG,WACHC,GAAI,eAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,mDAAmDxtC,MAAM,KACnEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjBvxD,KAAK4wD,QAAgB,KAAO,KAAO,QAE1DY,QAAS,WACL,MAAO,UAA6B,IAAjBxxD,KAAK4wD,QAAgB,KAAO,KAAO,QAE1Da,SAAU,WACN,MAAO,UAA6B,IAAjBzxD,KAAK4wD,QAAgB,KAAO,KAAO,QAE1Dc,QAAS,WACL,MAAO,UAA6B,IAAjB1xD,KAAK4wD,QAAgB,IAAM,KAAO,QAEzDe,SAAU,WACN,MACI,qBAAwC,IAAjB3xD,KAAK4wD,QAAgB,KAAO,KAAO,QAGlEgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU9gD,GACd,OAA0B,IAAtBA,EAAI9C,QAAQ,MACL,IAAM8C,EAEV,MAAQA,GAEnB+gD,KAAM,SACN30C,EAAG,eACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxEyB5yD,CAAQ,EAAQ,iGCGlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACTxK,EAAG,CAAC,kBAAmB,cACvB40C,GAAI,CAACW,EAAS,aAAcA,EAAS,UACrC39C,EAAG,CAAC,aAAc,YAClBi9C,GAAI,CAACU,EAAS,YAAaA,EAAS,WACpCT,EAAG,CAAC,WAAY,SAChBC,GAAI,CAACQ,EAAS,UAAWA,EAAS,SAClCx5B,EAAG,CAAC,YAAa,UACjBi5B,GAAI,CAACO,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,gBAAiB,aACrBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,WAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAWxrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrCu8C,EAAO+N,aAAa,WAAY,CAC1CC,OAAQ,CACJ6D,WAAY,wFAAwFnxC,MAChG,KAEJ8E,OAAQ,mJAAmJ9E,MACvJ,KAEJoxC,SAAU,mBAEd7D,YAAa,4EAA4EvtC,MACrF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,qDAAqDxtC,MAAM,KACrEytC,cAAe,4CAA4CztC,MAAM,KACjE0tC,YAAa,wBAAwB1tC,MAAM,KAC3CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,kBACJC,IAAK,qBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,8BACLC,KAAM,uCACNyE,KAAM,oCAEVxE,SAAU,CACNC,QAAS,WACTC,QAAS,eACTC,SAAU,qBACVC,QAAS,WACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACN30C,EAAG64C,EACHjE,GAAIiE,EACJjhD,EAAGihD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ98B,EAAG88B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzB,EAAS,MACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,4BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,WAAb5C,EACA4C,EACa,YAAb5C,EACA4C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,UACAA,EAAO,GACP,QAEA,UAzHmBrzD,CAAQ,EAAQ,iGCGlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACTxK,EAAG,CAAC,qBAAsB,iBAC1B40C,GAAI,CAACW,EAAS,cAAeA,EAAS,WACtC39C,EAAG,CAAC,aAAc,YAClBi9C,GAAI,CAACU,EAAS,YAAaA,EAAS,WACpCT,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACQ,EAAS,WAAYA,EAAS,UACnCx5B,EAAG,CAAC,YAAa,UACjBi5B,GAAI,CAACO,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,eAAgB,aACpBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,YAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAWxrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrCu8C,EAAO+N,aAAa,WAAY,CAC1CC,OAAQ,CACJ6D,WAAY,4EAA4EnxC,MACpF,KAEJ8E,OAAQ,wIAAwI9E,MAC5I,KAEJoxC,SAAU,mBAEd7D,YAAa,4DAA4DvtC,MACrE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,iBACJC,IAAK,oBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNyE,KAAM,mCAEVxE,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACN30C,EAAG64C,EACHjE,GAAIiE,EACJjhD,EAAGihD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ98B,EAAG88B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,cACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzB,EAAS,KACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,+BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb5C,EACA4C,EACa,aAAb5C,EACA4C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAzHmBrzD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,yEAAyEvtC,MAClF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,mCAAmCztC,MAAM,KACxD0tC,YAAa,qBAAqB1tC,MAAM,KACxCiuC,eAAgB,CACZC,GAAI,gBACJC,IAAK,mBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,WACH40C,GAAI,WACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,UACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAKzBy0C,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,SAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,OACAA,EAAO,GACP,OAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,0EAA0EttC,MAC9E,KAEJutC,YAAa,4DAA4DvtC,MACrE,KAEJwtC,SAAU,uCAAuCxtC,MAAM,KACvDytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,6BACN5+B,EAAG,WACHmjC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVxE,SAAU,CACNC,QAAS,cACTC,QAAS,aACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN30C,EAAG,aACH40C,GAAI,WACJh9C,EAAG,MACHi9C,GAAI,UACJC,EAAG,MACHC,GAAI,SAAUQ,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBx5B,EAAG,MACHi5B,GAAI,SAAUO,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBN,EAAG,OACHC,GAAI,SAAUK,GACV,OAAe,IAAXA,EACO,UAEJA,EAAS,WAEpBJ,EAAG,MACHC,GAAI,SAAUG,GACV,OAAe,IAAXA,EACO,SACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,OAEbA,EAAS,UAGxBlC,cAAe,gEACfC,KAAM,SAAU99C,GACZ,MAAO,8BAA8BuQ,KAAKvQ,IAE9C+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,aACAA,EAAO,GACP,QACAA,EAAO,GACPzC,EAAU,SAAW,eACrByC,EAAO,GACPzC,EAAU,QAAU,eAEpB,UAzFmB5wD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETqB,EAAc,CACV,OACA,WACA,UACA,UACA,OACA,QACA,QACA,OACA,aACA,UACA,WACA,cAiBC7S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,8EAA8E9E,MAClF,KAEJmxC,WAAY,0EAA0EnxC,MAClF,MAGRutC,YAAa,6DAA6DvtC,MACtE,KAEJwtC,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,kCAAkCztC,MAAM,KACvD0tC,YAAa,qBAAqB1tC,MAAM,KACxCiuC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAGV4D,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAzCmB,CACf,OACA,QACA,UACA,UACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,SA+BJR,YAAa,+KAEbR,iBAAkB,+KAElBa,kBAAmB,uIAEnBC,uBAAwB,sFAExBlE,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN30C,EAAG,cACH40C,GAAI,WACJh9C,EAAG,UACHi9C,GAAI,UACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAKzBy0C,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,QAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAlKyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,SAASuT,EAAUhD,EAAQQ,EAAettD,GACtC,IAAIS,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,KAQD,OANIS,GADW,IAAXqsD,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANI7sD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANI7sD,GADW,IAAXqsD,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIrsD,GADW,IAAXqsD,EACU,MAEA,QAGlB,IAAK,KAQD,OANIrsD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIrsD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,oGAAoG9E,MACxG,KAEJmxC,WAAY,gGAAgGnxC,MACxG,MAGRutC,YAAa,+DAA+DvtC,MACxE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,cACH40C,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAG,MACHi5B,GAAIuD,EACJtD,EAAG,SACHC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxJyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,IAAI8U,EAAc,gEAAgEp0C,MAC9E,KAEJ,SAAS6yC,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAIW,EAAMpB,EACV,OAAQ9sD,GACJ,IAAK,IACD,OAAOutD,GAAYD,EACb,mBACA,oBACV,IAAK,KACD,OAAOY,GAAOX,GAAYD,GACpB,aACA,cACV,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,SAAW,YAC3D,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,SAAW,YACzD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,MAAQ,QACxD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,MAAQ,QAE1D,MAAO,GAEX,SAASP,EAAKQ,GACV,OACKA,EAAW,GAAK,WACjB,IACA8D,EAAYl3D,KAAKm0D,OACjB,aAIC/R,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGttC,MACxG,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,gCAAgCztC,MAAM,KACrD0tC,YAAa,qBAAqB1tC,MAAM,KACxCiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVZ,cAAe,SACfC,KAAM,SAAU99C,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3BypC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,IACW,IAAZE,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,MAGzCQ,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAOmB,EAAK7wD,KAAK/B,MAAM,IAE3B0xD,QAAS,oBACTC,SAAU,WACN,OAAOiB,EAAK7wD,KAAK/B,MAAM,IAE3B4xD,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,KACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB5yD,CAAQ,EAAQ,8FCElD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,CACJxoC,OAAQ,4GAA4G9E,MAChH,KAEJmxC,WAAY,gGAAgGnxC,MACxG,MAGRutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,gEAAgExtC,MACtE,KAEJytC,cAAe,+BAA+BztC,MAAM,KACpD0tC,YAAa,+BAA+B1tC,MAAM,KAClDiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTE,QAAS,YACTD,SAAU,WACN,MAAO,sBAEXE,SAAU,WACN,MAAO,8BAEXC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN30C,EAAG,mBACH40C,GAAI,cACJh9C,EAAG,OACHi9C,GAAI,UACJC,EAAG,MACHC,GAAI,SACJh5B,EAAG,KACHi5B,GAAI,QACJC,EAAG,OACHC,GAAI,UACJC,EAAG,OACHC,GAAI,WAER/B,cAAe,oCACfC,KAAM,SAAU99C,GACZ,MAAO,uBAAuBuQ,KAAKvQ,IAEvC+9C,SAAU,SAAU4C,GAChB,OAAIA,EAAO,EACA,UACAA,EAAO,GACP,WACAA,EAAO,GACP,UAEA,YAGfd,uBAAwB,0BACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAXzB,EACOA,EAAS,MAEbA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,6CAA6CxtC,MAAM,KAC7DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,wBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,GAAoC,UAAbA,EACvB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,eACN30C,EAAG,iBACH40C,GAAI,WACJh9C,EAAG,UACHi9C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIzB,SAAS4T,EAAOz1C,GACZ,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,EAK1B,SAASo1C,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAI9sD,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,IACD,OAAOstD,GAAiBC,EAClB,mBACA,mBACV,IAAK,KACD,OAAI4C,EAAOrD,GAEHrsD,GACC6sD,GAAiBC,EAAW,WAAa,YAG3C9sD,EAAS,UACpB,IAAK,IACD,OAAO6sD,EAAgB,SAAW,SACtC,IAAK,KACD,OAAI6C,EAAOrD,GAEHrsD,GAAU6sD,GAAiBC,EAAW,UAAY,WAE/CD,EACA7sD,EAAS,SAEbA,EAAS,SACpB,IAAK,KACD,OAAI0vD,EAAOrD,GAEHrsD,GACC6sD,GAAiBC,EACZ,gBACA,iBAGP9sD,EAAS,cACpB,IAAK,IACD,OAAI6sD,EACO,QAEJC,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAI4C,EAAOrD,GACHQ,EACO7sD,EAAS,QAEbA,GAAU8sD,EAAW,OAAS,SAC9BD,EACA7sD,EAAS,QAEbA,GAAU8sD,EAAW,MAAQ,QACxC,IAAK,IACD,OAAID,EACO,UAEJC,EAAW,QAAU,SAChC,IAAK,KACD,OAAI4C,EAAOrD,GACHQ,EACO7sD,EAAS,UAEbA,GAAU8sD,EAAW,SAAW,WAChCD,EACA7sD,EAAS,UAEbA,GAAU8sD,EAAW,QAAU,UAC1C,IAAK,IACD,OAAOD,GAAiBC,EAAW,KAAO,MAC9C,IAAK,KACD,OAAI4C,EAAOrD,GACArsD,GAAU6sD,GAAiBC,EAAW,KAAO,QAEjD9sD,GAAU6sD,GAAiBC,EAAW,KAAO,QAIvDhR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFttC,MACxF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,mFAAmFxtC,MACzF,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,iBACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAG,cACHC,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,gGAAgGttC,MACpG,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,6BACX,QACI,MAAO,+BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU10C,GACd,OAAQ,YAAY+F,KAAK/F,GAAK,MAAQ,MAAQ,IAAMA,GAExD20C,KAAM,QACN30C,EAAG,iBACH40C,GAAI,aACJh9C,EAAG,YACHi9C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJh5B,EAAG,YACHi5B,GAAI,YACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA9DyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,gGAAgGttC,MACpG,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,WACL,MACI,WACCvxD,KAAK4wD,QAAU,EAAI,OAA0B,IAAjB5wD,KAAK4wD,QAAgB,IAAM,OACxD,OAGRY,QAAS,WACL,MACI,aACCxxD,KAAK4wD,QAAU,EAAI,OAA0B,IAAjB5wD,KAAK4wD,QAAgB,IAAM,OACxD,OAGRa,SAAU,WACN,MACI,WACCzxD,KAAK4wD,QAAU,EAAI,OAA0B,IAAjB5wD,KAAK4wD,QAAgB,IAAM,OACxD,OAGRc,QAAS,WACL,MACI,WACC1xD,KAAK4wD,QAAU,EAAI,OAA0B,IAAjB5wD,KAAK4wD,QAAgB,IAAM,OACxD,OAGRe,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MACI,uBACCn0D,KAAK4wD,QAAU,EACV,OACiB,IAAjB5wD,KAAK4wD,QACL,IACA,OACN,MAER,QACI,MACI,uBACC5wD,KAAK4wD,QAAU,EACV,OACiB,IAAjB5wD,KAAK4wD,QACL,IACA,OACN,QAIhBgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN30C,EAAG,iBACH40C,GAAI,aACJh9C,EAAG,YACHi9C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJh5B,EAAG,YACHi5B,GAAI,YACJiC,EAAG,gBACHC,GAAI,eACJjC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BgH,KAAM,CACF,CACIC,MAAO,aACPC,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,KACRC,KAAM,MAEV,CACIH,MAAO,aACPI,OAAO,IACPH,OAAQ,EACR7xD,KAAM,MACN8xD,OAAQ,KACRC,KAAM,OAGdE,oBAAqB,WACrBC,oBAAqB,SAAU9kD,EAAOoJ,GAClC,MAAoB,MAAbA,EAAM,GAAa,EAAIqN,SAASrN,EAAM,IAAMpJ,EAAO,KAE9Dw9C,OAAQ,yCAAyCttC,MAAM,KACvDutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,gBAAgBztC,MAAM,KACrC0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBACN5+B,EAAG,aACHmjC,GAAI,YACJC,IAAK,kBACLC,KAAM,wBAEVrF,cAAe,SACfC,KAAM,SAAU99C,GACZ,MAAiB,OAAVA,GAEX+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,SAAUkG,GAChB,OAAIA,EAAI/E,SAAW5yD,KAAK4yD,OACb,cAEA,WAGflB,QAAS,UACTC,SAAU,SAAUgG,GAChB,OAAI33D,KAAK4yD,SAAW+E,EAAI/E,OACb,cAEA,WAGfhB,SAAU,KAEda,uBAAwB,WACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAXzB,EAAe,KAAOA,EAAS,IAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN30C,EAAG,KACH40C,GAAI,MACJh9C,EAAG,KACHi9C,GAAI,MACJC,EAAG,MACHC,GAAI,OACJh5B,EAAG,KACHi5B,GAAI,MACJC,EAAG,MACHC,GAAI,OACJC,EAAG,KACHC,GAAI,SAlJ0BtyD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,+CAA+CxtC,MAAM,KAC/DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,6BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACN30C,EAAG,kBACH40C,GAAI,WACJh9C,EAAG,kBACHi9C,GAAI,WACJC,EAAG,gBACHC,GAAI,SACJh5B,EAAG,WACHi5B,GAAI,YACJC,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGttC,MACzG,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,CACN2D,WAAY,gEAAgEnxC,MACxE,KAEJ8E,OAAQ,iEAAiE9E,MACrE,KAEJoxC,SAAU,iBAEd3D,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTE,QAAS,kBACTD,SAAU,wBACVE,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU10C,GACd,OAAOA,EAAErI,QAAQ,iCAAiC,SAC9C6iD,EACA3wC,EACA4wC,GAEA,MAAc,MAAPA,EAAa5wC,EAAK,KAAOA,EAAK4wC,EAAK,SAGlD9F,KAAM,SAAU30C,GACZ,MAAI,4BAA4B+F,KAAK/F,GAC1BA,EAAErI,QAAQ,SAAU,UAE3B,OAAOoO,KAAK/F,GACLA,EAAErI,QAAQ,QAAS,YAEvBqI,GAEXA,EAAG,iBACH40C,GAAI,UACJh9C,EAAG,OACHi9C,GAAI,UACJC,EAAG,QACHC,GAAI,WACJh5B,EAAG,MACHi5B,GAAI,SACJC,EAAG,MACHC,GAAI,SACJC,EAAG,OACHC,GAAI,WAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,MAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,MAAQA,EAEZA,EAAS,MAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGAzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,0DAA0DxtC,MAChE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,kBACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN30C,EAAG,iBACH40C,GAAI,YACJh9C,EAAG,YACHi9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhFyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yEAAyEttC,MAC7E,KAEJutC,YAAa,yEAAyEvtC,MAClF,KAEJwtC,SAAU,iDAAiDxtC,MAAM,KACjEytC,cAAe,oBAAoBztC,MAAM,KACzC0tC,YAAa,oBAAoB1tC,MAAM,KACvCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,cACfC,KAAM,SAAU99C,GACZ,MAAiB,UAAVA,GAEX+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,QAEA,SAGfjC,SAAU,CACNC,QAAS,oBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,qBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN30C,EAAG,iBACH40C,GAAI,YACJh9C,EAAG,UACHi9C,GAAI,UACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,UACJC,EAAG,QACHC,GAAI,QACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,OACTiB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzB42C,KAAM,CACFC,IAAK,EACLC,IAAK,KApGyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FttC,MACjG,KAEJutC,YAAa,2EAA2EvtC,MACpF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,0DAA0DxtC,MAChE,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,wBAAwB1tC,MAAM,KAC3CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAG,gBACH40C,GAAI,gBACJh9C,EAAG,aACHi9C,GAAI,WACJC,EAAG,YACHC,GAAI,UACJh5B,EAAG,WACHi5B,GAAI,SACJC,EAAG,cACHC,GAAI,YACJC,EAAG,YACHC,GAAI,WAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzBy0C,cAAe,gCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb5C,EACA4C,EACa,aAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,OAEA,UAGfd,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yCAAyCttC,MAAM,KACvDutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,gBAAgBztC,MAAM,KACrC0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,uBACLC,KAAM,4BACN5+B,EAAG,cACHmjC,GAAI,gBACJC,IAAK,uBACLC,KAAM,6BAEVxE,SAAU,CACNC,QAAS,QACTC,QAAS,QACTC,SAAU,UACVC,QAAS,QACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,OACN30C,EAAG,MACH40C,GAAI,MACJh9C,EAAG,KACHi9C,GAAI,MACJC,EAAG,OACHC,GAAI,OACJh5B,EAAG,KACHi5B,GAAI,MACJC,EAAG,MACHC,GAAI,MACJC,EAAG,MACHC,GAAI,OAERC,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBlC,cAAe,QACfC,KAAM,SAAUnvC,GACZ,MAAiB,OAAVA,GAEXovC,SAAU,SAAU4C,EAAMC,EAAQsE,GAC9B,OAAOvE,EAAO,GAAK,KAAO,QAxEIrzD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETxD,EAAS,CACL,eACA,QACA,QACA,QACA,QACA,WACA,SACA,MACA,UACA,eACA,eACA,gBAGChO,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,0EAA0ExtC,MAChF,KAEJytC,cAAe,2DAA2DztC,MACtE,KAEJ0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,kBACfC,KAAM,SAAU99C,GACZ,MAAO,UAAUuQ,KAAKvQ,IAE1B+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,UAEA,WAGfjC,SAAU,CACNC,QAAS,sBACTC,QAAS,uBACTC,SAAU,oBACVC,QAAS,qBACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,KACN30C,EAAG,kBACH40C,GAAI,WACJh9C,EAAG,cACHi9C,GAAI,YACJC,EAAG,eACHC,GAAI,aACJh5B,EAAG,WACHi5B,GAAI,SACJC,EAAG,YACHC,GAAI,UACJC,EAAG,WACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO43C,EAAU53C,MAEpBjH,QAAQ,KAAM,MAEvB0+C,WAAY,SAAUluD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO03C,EAAU13C,MAEpBjH,QAAQ,KAAM,MAEvB69C,KAAM,CACFC,IAAK,EACLC,IAAK,MApHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGAzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,kFAAkFttC,MACtF,KAEJutC,YAAa,qDAAqDvtC,MAC9D,KAEJwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,wCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN30C,EAAG,iBACH40C,GAAI,YACJh9C,EAAG,YACHi9C,GAAI,WACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,wBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlFyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACT5S,EAAG,CAAC,aAAc,gBAClBk9C,EAAG,CAAC,YAAa,eACjB/4B,EAAG,CAAC,UAAW,aACfk5B,EAAG,CAAC,WAAY,eAChBE,EAAG,CAAC,UAAW,eAEnB,OAAOY,EAAgBvrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAuBxD,SAASkyD,EAA4BpF,GAEjC,GADAA,EAAStpC,SAASspC,EAAQ,IACtBrpC,MAAMqpC,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAI4B,EAAY5B,EAAS,GAEzB,OACWoF,EADO,IAAdxD,EADa5B,EAAS,GAIS4B,GAChC,GAAI5B,EAAS,IAAO,CAEvB,KAAOA,GAAU,IACbA,GAAkB,GAEtB,OAAOoF,EAA4BpF,GAInC,OAAOoF,EADPpF,GAAkB,KAKjBvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,+DAA+DvtC,MACxE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,mEAAmExtC,MACzE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,cACJC,IAAK,iBACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEVC,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,WAEN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,4BAIvBtC,aAAc,CACVC,OAhGR,SAA2BvsD,GAEvB,OAAIwyD,EADSxyD,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,KAAO3I,EAEX,MAAQA,GA4FXwsD,KA1FR,SAAyBxsD,GAErB,OAAIwyD,EADSxyD,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,QAAU3I,EAEd,SAAWA,GAsFd6X,EAAG,kBACH40C,GAAI,cACJh9C,EAAGihD,EACHhE,GAAI,cACJC,EAAG+D,EACH9D,GAAI,aACJh5B,EAAG88B,EACH7D,GAAI,UACJC,EAAG4D,EACH3D,GAAI,WACJC,EAAG0D,EACHzD,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApIyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,6EAA6EttC,MACjF,KAEJutC,YAAa,6EAA6EvtC,MACtF,KAEJwtC,SAAU,sCAAsCxtC,MAAM,KACtDytC,cAAe,oCAAoCztC,MAAM,KACzD0tC,YAAa,mBAAmB1tC,MAAM,KACtCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,6BAEVZ,cAAe,kBACfC,KAAM,SAAU99C,GACZ,MAAiB,WAAVA,GAEX+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,WAEA,UAGfjC,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,wBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAI,YACJh9C,EAAG,SACHi9C,GAAI,UACJC,EAAG,YACHC,GAAI,aACJh5B,EAAG,QACHi5B,GAAI,SACJC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,SAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,MAAO,MAAQA,KA/DezyD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAI4V,EAAQ,CACRhG,GAAI,6BACJh9C,EAAG,wBACHi9C,GAAI,0BACJC,EAAG,2BACHC,GAAI,4BACJh5B,EAAG,qBACHi5B,GAAI,sBACJC,EAAG,uBACHC,GAAI,4BACJC,EAAG,mBACHC,GAAI,oBASR,SAASyF,EAAkBtF,EAAQQ,EAAettD,EAAKutD,GACnD,OAAOD,EACDa,EAAMnuD,GAAK,GACXutD,EACAY,EAAMnuD,GAAK,GACXmuD,EAAMnuD,GAAK,GAErB,SAASqyD,EAAQvF,GACb,OAAOA,EAAS,IAAO,GAAMA,EAAS,IAAMA,EAAS,GAEzD,SAASqB,EAAMnuD,GACX,OAAOmyD,EAAMnyD,GAAKid,MAAM,KAE5B,SAAS6yC,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAI9sD,EAASqsD,EAAS,IACtB,OAAe,IAAXA,EAEIrsD,EAAS2xD,EAAkBtF,EAAQQ,EAAettD,EAAI,GAAIutD,GAEvDD,EACA7sD,GAAU4xD,EAAQvF,GAAUqB,EAAMnuD,GAAK,GAAKmuD,EAAMnuD,GAAK,IAE1DutD,EACO9sD,EAAS0tD,EAAMnuD,GAAK,GAEpBS,GAAU4xD,EAAQvF,GAAUqB,EAAMnuD,GAAK,GAAKmuD,EAAMnuD,GAAK,IAIjEu8C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,oGAAoG9E,MACxG,KAEJmxC,WAAY,kGAAkGnxC,MAC1G,KAEJoxC,SAAU,+DAEd7D,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,CACN1oC,OAAQ,oFAAoF9E,MACxF,KAEJmxC,WAAY,2FAA2FnxC,MACnG,KAEJoxC,SAAU,cAEd3D,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,iBAAiB1tC,MAAM,KACpCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN5+B,EAAG,aACHmjC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEVxE,SAAU,CACNC,QAAS,gBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAlFR,SAA0Bu1C,EAAQQ,EAAettD,EAAKutD,GAClD,OAAID,EACO,kBAEAC,EAAW,kBAAoB,mBA+EtCpB,GAAI2D,EACJ3gD,EAAGijD,EACHhG,GAAI0D,EACJzD,EAAG+F,EACH9F,GAAIwD,EACJx8B,EAAG8+B,EACH7F,GAAIuD,EACJtD,EAAG4F,EACH3F,GAAIqD,EACJpD,EAAG0F,EACHzF,GAAImD,GAERlD,uBAAwB,cACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,QAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,IAAI4V,EAAQ,CACRhG,GAAI,qCAAqClvC,MAAM,KAC/C9N,EAAG,iCAAiC8N,MAAM,KAC1CmvC,GAAI,iCAAiCnvC,MAAM,KAC3CovC,EAAG,iCAAiCpvC,MAAM,KAC1CqvC,GAAI,iCAAiCrvC,MAAM,KAC3CqW,EAAG,6BAA6BrW,MAAM,KACtCsvC,GAAI,6BAA6BtvC,MAAM,KACvCuvC,EAAG,iCAAiCvvC,MAAM,KAC1CwvC,GAAI,iCAAiCxvC,MAAM,KAC3CyvC,EAAG,wBAAwBzvC,MAAM,KACjC0vC,GAAI,wBAAwB1vC,MAAM,MAKtC,SAAS8E,EAAOosC,EAAOrB,EAAQQ,GAC3B,OAAIA,EAEOR,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKqB,EAAM,GAAKA,EAAM,GAI5DrB,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKqB,EAAM,GAAKA,EAAM,GAG3E,SAASF,EAAuBnB,EAAQQ,EAAettD,GACnD,OAAO8sD,EAAS,IAAM/qC,EAAOowC,EAAMnyD,GAAM8sD,EAAQQ,GAErD,SAASgF,EAAyBxF,EAAQQ,EAAettD,GACrD,OAAO+hB,EAAOowC,EAAMnyD,GAAM8sD,EAAQQ,GAM7B/Q,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,uGAAuGttC,MAC3G,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,0EAA0ExtC,MAChF,KAEJytC,cAAe,kBAAkBztC,MAAM,KACvC0tC,YAAa,kBAAkB1tC,MAAM,KACrCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAlCR,SAAyBu1C,EAAQQ,GAC7B,OAAOA,EAAgB,iBAAmB,kBAkCtCnB,GAAI8B,EACJ9+C,EAAGmjD,EACHlG,GAAI6B,EACJ5B,EAAGiG,EACHhG,GAAI2B,EACJ36B,EAAGg/B,EACH/F,GAAI0B,EACJzB,EAAG8F,EACH7F,GAAIwB,EACJvB,EAAG4F,EACH3F,GAAIsB,GAERrB,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIzB,IAAIgW,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,SAAU,UAAW,WAC1Bh9C,EAAG,CAAC,cAAe,iBACnBi9C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,SAAU,UAAW,WAC1BE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAettD,GACxC,IAAI0yD,EAAUH,EAAWC,MAAMxyD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG+jD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAMjDnW,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFttC,MACvF,KAEJutC,YAAa,2DAA2DvtC,MACpE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,6BACA,iCACA,4BACA,4BACA,8BACA,2BACA,4BAEgB3xD,KAAKm0D,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAIoG,EAAWzC,UACf3gD,EAAGojD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfx8B,EAAG,MACHi5B,GAAIgG,EAAWzC,UACftD,EAAG,SACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IttC,MAClJ,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJoyC,YAAa,yCACbK,kBAAmB,yCACnBb,iBAAkB,yCAClBc,uBAAwB,yCACxBlF,SAAU,kDAAkDxtC,MAAM,KAClEytC,cAAe,wBAAwBztC,MAAM,KAC7C0tC,YAAa,wBAAwB1tC,MAAM,KAC3CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAI,YACJh9C,EAAG,YACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,QACJC,EAAG,YACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,oBACVC,QAAS,gBACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,kBACH40C,GAAI,aACJh9C,EAAG,cACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,WACHi5B,GAAI,UACJC,EAAG,aACHC,GAAI,YACJC,EAAG,cACHC,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI4B,EAAY5B,EAAS,GACrB6B,EAAc7B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB6B,EACA7B,EAAS,MACT6B,EAAc,IAAMA,EAAc,GAClC7B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,GAAiC,IAAdA,EACnB5B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnFyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,yEAAyEvtC,MAClF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,wEAAwExtC,MAC9E,KAEJytC,cAAe,2CAA2CztC,MAAM,KAChE0tC,YAAa,wBAAwB1tC,MAAM,KAC3CiuC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,eACHi9C,GAAI,cACJC,EAAG,eACHC,GAAI,cACJh5B,EAAG,YACHi5B,GAAI,WACJC,EAAG,WACHC,GAAI,UACJC,EAAG,WACHC,GAAI,WAER/B,cAAe,gDACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,WAAb5C,GAAyB4C,GAAQ,GACrB,iBAAb5C,GACa,eAAbA,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,SACAA,EAAO,GACP,eACAA,EAAO,GACP,aAEA,YA7EmBrzD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,SAASuT,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,OAAQvtD,GACJ,IAAK,IACD,OAAOstD,EAAgB,gBAAkB,kBAC7C,IAAK,KACD,OAAOR,GAAUQ,EAAgB,UAAY,aACjD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,SAAW,YAChD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,QAAU,WAC/C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,UAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,QACI,OAAOR,GAIVvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,+LAA+LttC,MACnM,KAEJutC,YAAa,6EAA6EvtC,MACtF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,6CAA6CxtC,MAAM,KAC7DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,iCAEVZ,cAAe,SACfC,KAAM,SAAU99C,GACZ,MAAiB,OAAVA,GAEX+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,QACpB,QACI,OAAOA,MAhGezyD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGb,SAAS4E,EAAe7F,EAAQQ,EAAe5tD,EAAQ6tD,GACnD,IAAI2C,EAAS,GACb,GAAI5C,EACA,OAAQ5tD,GACJ,IAAK,IACDwwD,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,KACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,gBAIjB,OAAQxwD,GACJ,IAAK,IACDwwD,EAAS,eACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,cACT,MACJ,IAAK,KACDA,EAAS,cACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YAIrB,OAAOA,EAAOhhD,QAAQ,MAAO49C,GAGxBvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,gFAAgFvtC,MACzF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,kCAAkCztC,MAAM,KACvD0tC,YAAa,qBAAqB1tC,MAAM,KACxCiuC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,WACVC,QAAS,WACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAGo7C,EACHxG,GAAIwG,EACJxjD,EAAGwjD,EACHvG,GAAIuG,EACJtG,EAAGsG,EACHrG,GAAIqG,EACJr/B,EAAGq/B,EACHpG,GAAIoG,EACJnG,EAAGmG,EACHlG,GAAIkG,EACJjG,EAAGiG,EACHhG,GAAIgG,GAER7E,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzBy0C,cAAe,qCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,UAAb5C,GAAqC,UAAbA,EACjB4C,EAEM,WAAb5C,GACa,aAAbA,GACa,WAAbA,EAEO4C,GAAQ,GAAKA,EAAOA,EAAO,QAL/B,GAQX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,GAAQ,GAAKA,EAAO,EACb,QACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,WAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvMyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,oFAAoFttC,MACxF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,6CAA6CxtC,MAAM,KAC7DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN30C,EAAG,gBACH40C,GAAI,UACJh9C,EAAG,UACHi9C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFttC,MACxF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,6CAA6CxtC,MAAM,KAC7DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN30C,EAAG,gBACH40C,GAAI,UACJh9C,EAAG,UACHi9C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,iEAAiExtC,MACvE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,eACH40C,GAAI,aACJh9C,EAAG,SACHi9C,GAAI,YACJC,EAAG,SACHC,GAAI,aACJh5B,EAAG,UACHi5B,GAAI,YACJC,EAAG,QACHC,GAAI,UACJC,EAAG,OACHC,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,mDAAmDvtC,MAAM,KACtEwtC,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,2BAA2BztC,MAAM,KAChD0tC,YAAa,2BAA2B1tC,MAAM,KAE9CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,kBACN30C,EAAG,kBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,OACHC,GAAI,OACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzB42C,KAAM,CACFC,IAAK,EACLC,IAAK,KAvFyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,qDAAqDxtC,MAAM,KACrEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,cACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,WACJiC,EAAG,SACHC,GAAI,UACJjC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,uEAAuEvtC,MAChF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,0CAA0CztC,MAAM,KAC/D0tC,YAAa,4BAA4B1tC,MAAM,KAC/CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVsC,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzBy0C,cAAe,yBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb5C,EACA4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,QAGfjC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,qBACVC,QAAS,YACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,WACN30C,EAAG,YACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAtHyB5yD,CAAQ,EAAQ,8FCIlD,SAAWkiD,GAAU,aAIzB,IAAI4U,EAAsB,6DAA6Dl0C,MAC/E,KAEJm0C,EAAyB,kDAAkDn0C,MACvE,KAEJmyC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAEP9S,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbqvC,EAAuBjiD,EAAEshD,SAEzBU,EAAoBhiD,EAAEshD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElB3E,SAAU,6DAA6DxtC,MACnE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,SACJh5B,EAAG,UACHi5B,GAAI,WACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAI4U,EAAsB,6DAA6Dl0C,MAC/E,KAEJm0C,EAAyB,kDAAkDn0C,MACvE,KAEJmyC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAET9S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbqvC,EAAuBjiD,EAAEshD,SAEzBU,EAAoBhiD,EAAEshD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElB3E,SAAU,6DAA6DxtC,MACnE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,SACJh5B,EAAG,UACHi5B,GAAI,WACJiC,EAAG,WACHC,GAAI,WACJjC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArGyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,qDAAqDxtC,MAAM,KACrEytC,cAAe,+BAA+BztC,MAAM,KACpD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,eACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,WACJiC,EAAG,UACHC,GAAI,WACJjC,EAAG,YACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB5yD,CAAQ,EAAQ,+FCElD,SAAWkiD,GAAU,aAIbA,EAAO+N,aAAa,SAAU,CACtCC,OAAQ,CACJ6D,WAAY,qFAAqFnxC,MAC7F,KAEJ8E,OAAQ,sHAAsH9E,MAC1H,KAEJoxC,SAAU,mBAEd7D,YAAa,+DAA+DvtC,MACxE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJyE,GAAI,aACJxE,IAAK,4BACLyE,IAAK,mBACLxE,KAAM,iCACNyE,KAAM,wBAEVxE,SAAU,CACNC,QAAS,aACTC,QAAS,eACTC,SAAU,cACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,WACJC,EAAG,SACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQyB,GACvB,IAAI2B,EACW,IAAXpD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXyB,GAA6B,MAAXA,IAClB2B,EAAS,KAENpD,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFxR,EAAO+N,aAAa,QAAS,CAEpCC,OAAQ,sEAAsEttC,MAC1E,KAEJutC,YAAa,sEAAsEvtC,MAC/E,KAEJwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,iCAAiCztC,MAAM,KACtD0tC,YAAa,iCAAiC1tC,MAAM,KACpDiuC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,kBACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAG,YACH40C,GAAI,WACJh9C,EAAG,UACHi9C,GAAI,UACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAKzBy0C,cAAe,uBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIqW,EAAmB,mGAAmG31C,MAClH,KAEJ41C,EAAmB,qGAAqG51C,MACpH,KAEJmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAER,SAASe,EAAOz1C,GACZ,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,IAAO,EAE3D,SAASo1C,EAAUhD,EAAQQ,EAAettD,GACtC,IAAIS,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,KACD,OAAOS,GAAU0vD,EAAOrD,GAAU,UAAY,UAClD,IAAK,IACD,OAAOQ,EAAgB,SAAW,SACtC,IAAK,KACD,OAAO7sD,GAAU0vD,EAAOrD,GAAU,SAAW,SACjD,IAAK,IACD,OAAOQ,EAAgB,UAAY,UACvC,IAAK,KACD,OAAO7sD,GAAU0vD,EAAOrD,GAAU,UAAY,UAClD,IAAK,KACD,OAAOrsD,GAAU0vD,EAAOrD,GAAU,WAAa,WACnD,IAAK,KACD,OAAOrsD,GAAU0vD,EAAOrD,GAAU,WAAa,YACnD,IAAK,KACD,OAAOrsD,GAAU0vD,EAAOrD,GAAU,OAAS,QAI9CvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,SAAUgG,EAAgBxuC,GAC9B,OAAKwuC,EAEM,SAASjzC,KAAKyE,GACd8wC,EAAiBtC,EAAeE,SAEhCmC,EAAiBrC,EAAeE,SAJhCmC,GAOfpI,YAAa,kDAAkDvtC,MAAM,KACrEmyC,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,6DAA6DxtC,MACnE,KAEJytC,cAAe,2BAA2BztC,MAAM,KAChD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,qBAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,iBAEX,KAAK,EACD,MAAO,kBAEX,QACI,MAAO,oBAGnBzC,QAAS,iBACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,QACI,MAAO,2BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,eACH40C,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAG,UACHi5B,GAAI,SACJiC,EAAG,UACHC,GAAIqB,EACJtD,EAAG,UACHC,GAAIqD,EACJpD,EAAG,MACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,iFAAiFxtC,MACvF,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,mCACLC,KAAM,0CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAf3xD,KAAKm0D,OAA8B,IAAfn0D,KAAKm0D,MAC1B,wBACA,yBAEVvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN30C,EAAG,kBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTkE,YAAa,kBAxDqB12D,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,iFAAiFxtC,MACvF,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAf3xD,KAAKm0D,OAA8B,IAAfn0D,KAAKm0D,MAC1B,wBACA,yBAEVvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN30C,EAAG,WACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIzB,SAAS0R,EAAuBnB,EAAQQ,EAAettD,GACnD,IASI8yD,EAAY,IAIhB,OAHIhG,EAAS,KAAO,IAAOA,GAAU,KAAOA,EAAS,KAAQ,KACzDgG,EAAY,QAEThG,EAASgG,EAbH,CACL3G,GAAI,UACJC,GAAI,SACJE,GAAI,MACJC,GAAI,OACJkC,GAAI,YACJhC,GAAI,OACJE,GAAI,OAMuB3sD,GAG9Bu8C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGttC,MACxG,KAEJutC,YAAa,+DAA+DvtC,MACxE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,kDAAkDxtC,MAAM,KAClEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,aACN30C,EAAG,iBACH40C,GAAI8B,EACJ9+C,EAAG,WACHi9C,GAAI6B,EACJ5B,EAAG,QACHC,GAAI2B,EACJ36B,EAAG,OACHi5B,GAAI0B,EACJO,EAAG,cACHC,GAAIR,EACJzB,EAAG,SACHC,GAAIwB,EACJvB,EAAG,QACHC,GAAIsB,GAERlB,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAYzB,SAAS0R,EAAuBnB,EAAQQ,EAAettD,GAUnD,MAAY,MAARA,EACOstD,EAAgB,SAAW,SAE3BR,EAAS,KArBFoB,GAqB6BpB,EApB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,sBAAwB,sBAC5ChB,GAAI,iBACJC,GAAI,gBACJkC,GAAI,uBACJhC,GAAI,uBACJE,GAAI,gBAKgC3sD,GApBvBid,MAAM,KAChBixC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAuBR,IAAIiB,EAAc,CACd,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMK7S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,oFAAoF9E,MACxF,KAEJmxC,WAAY,kFAAkFnxC,MAC1F,MAGRutC,YAAa,CAETzoC,OAAQ,gEAAgE9E,MACpE,KAEJmxC,WAAY,gEAAgEnxC,MACxE,MAGRwtC,SAAU,CACN2D,WAAY,gEAAgEnxC,MACxE,KAEJ8E,OAAQ,gEAAgE9E,MACpE,KAEJoxC,SAAU,iDAEd3D,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CmyC,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAGlBC,YAAa,2MAGbR,iBAAkB,2MAGlBa,kBAAmB,wHAGnBC,uBAAwB,6FACxBzE,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,8BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTE,QAAS,gBACTD,SAAU,SAAUkG,GAChB,GAAIA,EAAI/E,SAAW5yD,KAAK4yD,OAcpB,OAAmB,IAAf5yD,KAAKm0D,MACE,oBAEA,mBAhBX,OAAQn0D,KAAKm0D,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,+BAUvBxC,SAAU,SAAUgG,GAChB,GAAIA,EAAI/E,SAAW5yD,KAAK4yD,OAcpB,OAAmB,IAAf5yD,KAAKm0D,MACE,oBAEA,mBAhBX,OAAQn0D,KAAKm0D,OACT,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BAUvBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAI8B,EACJ9+C,EAAG8+C,EACH7B,GAAI6B,EACJ5B,EAAG,MACHC,GAAI2B,EACJ36B,EAAG,OACHi5B,GAAI0B,EACJO,EAAG,SACHC,GAAIR,EACJzB,EAAG,QACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAERrD,cAAe,wBACfC,KAAM,SAAU99C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,OACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,KACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1MyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIgO,EAAS,CACL,QACA,UACA,OACA,QACA,MACA,MACA,SACA,OACA,UACA,SACA,QACA,SAEJwI,EAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,MAAO,QAElDxW,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUsI,EACVrI,cAAeqI,EACfpI,YAAaoI,EACb7H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAU99C,GACZ,MAAO,QAAUA,GAErB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,MAEJ,OAEXjC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,yBACVC,QAAS,aACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN30C,EAAG,YACH40C,GAAI,WACJh9C,EAAG,SACHi9C,GAAI,SACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,WACHi5B,GAAI,WACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC0+C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC69C,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,mJAAmJttC,MACvJ,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJwtC,SAAU,6EAA6ExtC,MACnF,KAEJytC,cAAe,mCAAmCztC,MAAM,KACxD0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAI,eACJh9C,EAAG,eACHi9C,GAAI,cACJC,EAAG,cACHC,GAAI,aACJh5B,EAAG,cACHi5B,GAAI,cACJC,EAAG,aACHC,GAAI,WACJC,EAAG,aACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAKhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,kGAAkGttC,MACtG,KAEJutC,YAAa,wDAAwDvtC,MACjE,KAEJwtC,SAAU,gEAAgExtC,MACtE,KAEJytC,cAAe,gCAAgCztC,MAAM,KACrD0tC,YAAa,qBAAqB1tC,MAAM,KACxCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,aACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAAG,eACH40C,GAAI,WACJh9C,EAAG,YACHi9C,GAAI,cACJC,EAAG,MACHC,GAAI,SACJh5B,EAAG,OACHi5B,GAAI,SACJC,EAAG,OACHC,GAAI,SACJC,EAAG,MACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,SAEpBlC,cAAe,4BACfC,KAAM,SAAU99C,GACZ,MAAiB,SAAVA,GAA8B,YAAVA,GAE/B+9C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,OAAS,UAEnBA,EAAU,QAAU,aAjED5wD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,IAAIgO,EAAS,oFAAoFttC,MACzF,KAEJutC,EAAc,kDAAkDvtC,MAAM,KAC1E,SAASkzC,EAAOz1C,GACZ,OAAOA,EAAI,GAAKA,EAAI,EAExB,SAASo1C,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAI9sD,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,IACD,OAAOstD,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,UAAY,UAEvCrsD,EAAS,YAExB,IAAK,IACD,OAAO6sD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,SAAW,SAEtCrsD,EAAS,WAExB,IAAK,IACD,OAAO6sD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,SAAW,SAEtCrsD,EAAS,WAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,MAAQ,OAEnCrsD,EAAS,QAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,SAAW,WAClD,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,UAAY,YAEvCrsD,EAAS,WAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,OAAS,SAEpCrsD,EAAS,SAKvB87C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACbC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7IyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAI9sD,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,IACD,OAAOstD,GAAiBC,EAClB,eACA,kBACV,IAAK,KAUD,OARI9sD,GADW,IAAXqsD,EACUQ,EAAgB,UAAY,UACpB,IAAXR,EACGQ,GAAiBC,EAAW,UAAY,WAC3CT,EAAS,EACNQ,GAAiBC,EAAW,UAAY,WAExC,UAGlB,IAAK,IACD,OAAOD,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARI7sD,GADW,IAAXqsD,EACUQ,EAAgB,SAAW,SACnB,IAAXR,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,WAEvCD,GAAiBC,EAAW,QAAU,YAGxD,IAAK,IACD,OAAOD,EAAgB,UAAY,UACvC,IAAK,KAUD,OARI7sD,GADW,IAAXqsD,EACUQ,EAAgB,MAAQ,MAChB,IAAXR,EACGQ,GAAiBC,EAAW,MAAQ,QACvCT,EAAS,EACNQ,GAAiBC,EAAW,MAAQ,QAEpCD,GAAiBC,EAAW,KAAO,SAGrD,IAAK,IACD,OAAOD,GAAiBC,EAAW,SAAW,YAClD,IAAK,KAQD,OANI9sD,GADW,IAAXqsD,EACUQ,GAAiBC,EAAW,MAAQ,OAC5B,IAAXT,EACGQ,GAAiBC,EAAW,MAAQ,UAEpCD,GAAiBC,EAAW,MAAQ,SAGtD,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,eACpD,IAAK,KAUD,OARI9sD,GADW,IAAXqsD,EACUQ,GAAiBC,EAAW,QAAU,UAC9B,IAAXT,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,SAEvCD,GAAiBC,EAAW,UAAY,UAG1D,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,aACpD,IAAK,KAUD,OARI9sD,GADW,IAAXqsD,EACUQ,GAAiBC,EAAW,OAAS,QAC7B,IAAXT,EACGQ,GAAiBC,EAAW,OAAS,SACxCT,EAAS,EACNQ,GAAiBC,EAAW,OAAS,OAErCD,GAAiBC,EAAW,MAAQ,SAMrDhR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,qBAGnBzC,QAAS,iBACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN30C,EAAG64C,EACHjE,GAAIiE,EACJjhD,EAAGihD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ98B,EAAG88B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxKyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,gFAAgFttC,MACpF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,mBAAmB1tC,MAAM,KACtCwwC,oBAAoB,EACpB7C,cAAe,QACfC,KAAM,SAAU99C,GACZ,MAA2B,MAApBA,EAAMnN,OAAO,IAExBkrD,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAOF,EAAQ,GAAK,KAAO,MAE/BG,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,cACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,aACN30C,EAAG,eACH40C,GAAI,aACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,UACHC,GAAI,SACJh5B,EAAG,WACHi5B,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB5yD,CAAQ,EAAQ,gGCElD,SAAWkiD,GAAU,aAIzB,IAAIgW,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,UAAW,UAAW,WAC3Bh9C,EAAG,CAAC,cAAe,gBACnBi9C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAettD,GACxC,IAAI0yD,EAAUH,EAAWC,MAAMxyD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG+jD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAM7CnW,EAAO+N,aAAa,UAAW,CACxCC,OAAQ,mFAAmFttC,MACvF,KAEJutC,YAAa,2DAA2DvtC,MACpE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,2BACA,+BACA,4BACA,0BACA,8BACA,2BACA,4BAEgB3xD,KAAKm0D,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,mBACH40C,GAAIoG,EAAWzC,UACf3gD,EAAGojD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfx8B,EAAG,MACHi5B,GAAIgG,EAAWzC,UACftD,EAAG,QACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIgW,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,UAAW,UAAW,WAC3Bh9C,EAAG,CAAC,cAAe,gBACnBi9C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAettD,GACxC,IAAI0yD,EAAUH,EAAWC,MAAMxyD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG+jD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAMjDnW,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFttC,MACvF,KAEJutC,YAAa,2DAA2DvtC,MACpE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEgB3xD,KAAKm0D,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,mBACH40C,GAAIoG,EAAWzC,UACf3gD,EAAGojD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfx8B,EAAG,MACHi5B,GAAIgG,EAAWzC,UACftD,EAAG,QACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,mHAAmHttC,MACvH,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,sEAAsExtC,MAC5E,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACN30C,EAAG,qBACH40C,GAAI,cACJh9C,EAAG,SACHi9C,GAAI,aACJC,EAAG,SACHC,GAAI,aACJh5B,EAAG,UACHi5B,GAAI,cACJC,EAAG,UACHC,GAAI,cACJC,EAAG,UACHC,GAAI,eAER/B,cAAe,mCACfE,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,WAGf6D,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,YAAb5C,EACO4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAb5C,GAA0C,YAAbA,EACvB,IAAT4C,EACO,EAEJA,EAAO,QAJX,GAOXd,uBAAwB,UACxBC,QAAS,KACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,oDAAoDxtC,MAAM,KACpEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNwE,IAAK,mBACLC,KAAM,wBAEVxE,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,YACTD,SAAU,eACVE,SAAU,iBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,eACN30C,EAAG,iBACH40C,GAAI,cACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,YACJh5B,EAAG,SACHi5B,GAAI,WACJC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,GAEM,IAANA,EADA,KAIA,OAIlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFttC,MAC1F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,kCAAkCztC,MAAM,KACvD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,UACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN30C,EAAG,aACH40C,GAAI,aACJh9C,EAAG,cACHi9C,GAAI,YACJC,EAAG,aACHC,GAAI,WACJh5B,EAAG,YACHi5B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,cACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,0FAA0FvtC,MACnG,KAEJwtC,SAAU,8FAA8FxtC,MACpG,KAEJytC,cAAe,mDAAmDztC,MAC9D,KAEJ0tC,YAAa,sBAAsB1tC,MAAM,KACzCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN30C,EAAG,oBACH40C,GAAI,eACJh9C,EAAG,cACHi9C,GAAI,gBACJC,EAAG,gBACHC,GAAI,eACJh5B,EAAG,WACHi5B,GAAI,aACJC,EAAG,YACHC,GAAI,cACJC,EAAG,aACHC,GAAI,eAERC,uBAAwB,aACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBgB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAIzBy0C,cAAe,wCACfE,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,EACP,SACAA,EAAO,GACP,QACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAGfkB,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,UAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb5C,GAAqC,SAAbA,GAEX,YAAbA,GACA4C,GAAQ,GAFRA,EAIAA,EAAO,IAGtBX,KAAM,CACFC,IAAK,EACLC,IAAK,KA/HyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,mEAAmEvtC,MAC5E,KAEJ6xC,kBAAkB,EAClBrE,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,kCAAkCztC,MAAM,KACvD0tC,YAAa,qBAAqB1tC,MAAM,KACxCiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACN30C,EAAG,iBACH40C,GAAI,aACJh9C,EAAG,YACHi9C,GAAI,cACJC,EAAG,SACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,YACJC,EAAG,SACHC,GAAI,WACJC,EAAG,cACHC,GAAI,iBAERC,uBAAwB,WACxBC,QAAS,MACTjC,cAAe,iCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,aAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,OACAA,EAAO,GACP,YACAA,EAAO,GACP,WAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KApFyB5yD,CAAQ,EAAQ,4FCKlD,SAAWkiD,GAAU,aAIfA,EAAO+N,aAAa,MAAO,CACjCC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,kDAAkDxtC,MAAM,KAClEytC,cAAe,iCAAiCztC,MAAM,KACtD0tC,YAAa,yBAAyB1tC,MAAM,KAC5CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,YACHi5B,GAAI,WACJC,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGAzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,qFAAqF9E,MACzF,KAEJmxC,WAAY,yEAAyEnxC,MACjF,MAGRutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTE,QAAS,mBACTD,SAAU,kCACVE,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,SACN30C,EAAG,eACHpI,EAAG,YACHi9C,GAAI,YACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAER/B,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,QAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,MACAA,EAAO,GACP,QAEA,OAGfd,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGttC,MACxG,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJ6xC,kBAAkB,EAClBrE,SAAU,iDAAiDxtC,MAAM,KACjEytC,cAAe,8CAA8CztC,MAAM,KACnE0tC,YAAa,yBAAyB1tC,MAAM,KAC5CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,oCAEVZ,cAAe,wBACfC,KAAM,SAAU99C,GACZ,MAAiB,eAAVA,GAEX+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,aAEA,cAGfjC,SAAU,CACNC,QAAS,mBACTC,QAAS,qBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACN30C,EAAG,eACH40C,GAAI,YACJh9C,EAAG,SACHi9C,GAAI,UACJC,EAAG,YACHC,GAAI,aACJh5B,EAAG,QACHi5B,GAAI,SACJiC,EAAG,YACHC,GAAI,aACJjC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,WA9D0BtyD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EttC,MACnF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,YACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN30C,EAAG,iBACHpI,EAAG,YACHi9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERE,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIl1C,EAAIk1C,EAAS,GAGjB,OAAOA,GAAUkB,EAASp2C,IAAMo2C,EAFvBlB,EAAS,IAAOl1C,IAEsBo2C,EADvClB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzFyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,wBAAwB1tC,MAAM,KAC3CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,eACHi9C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJh5B,EAAG,aACHi5B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB5yD,CAAQ,EAAQ,4FCGlD,SAAWkiD,GAAU,aAIzB,IAAIyW,EAAe,iDAAiD/1C,MAAM,KA4B1E,SAAS6yC,EAAUhD,EAAQQ,EAAe5tD,EAAQ6tD,GAC9C,IAAI0F,EAiBR,SAAsBnG,GAClB,IAAIoG,EAAUj3C,KAAKk3C,MAAOrG,EAAS,IAAQ,KACvCsG,EAAMn3C,KAAKk3C,MAAOrG,EAAS,IAAO,IAClCuG,EAAMvG,EAAS,GACfwG,EAAO,GAUX,OATIJ,EAAU,IACVI,GAAQN,EAAaE,GAAW,SAEhCE,EAAM,IACNE,IAAkB,KAATA,EAAc,IAAM,IAAMN,EAAaI,GAAO,OAEvDC,EAAM,IACNC,IAAkB,KAATA,EAAc,IAAM,IAAMN,EAAaK,IAEpC,KAATC,EAAc,OAASA,EA/BbC,CAAazG,GAC9B,OAAQptD,GACJ,IAAK,KACD,OAAOuzD,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,QAqBtB1W,EAAO+N,aAAa,MAAO,CACjCC,OAAQ,kMAAkMttC,MACtM,KAEJutC,YAAa,0HAA0HvtC,MACnI,KAEJ6xC,kBAAkB,EAClBrE,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,2DAA2DztC,MACtE,KAEJ0tC,YAAa,2DAA2D1tC,MACpE,KAEJiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,MACVC,QAAS,cACTC,SAAU,MACVC,SAAU,KAEdC,aAAc,CACVC,OA/FR,SAAyBiE,GACrB,IAAIsD,EAAOtD,EASX,OAP+B,IAA3BA,EAAO7nD,QAAQ,OACTmrD,EAAKv3D,MAAM,GAAI,GAAK,OACO,IAA3Bi0D,EAAO7nD,QAAQ,OACfmrD,EAAKv3D,MAAM,GAAI,GAAK,OACO,IAA3Bi0D,EAAO7nD,QAAQ,OACfmrD,EAAKv3D,MAAM,GAAI,GAAK,MACpBu3D,EAAO,QAuFbtH,KAnFR,SAAuBgE,GACnB,IAAIsD,EAAOtD,EASX,OAP+B,IAA3BA,EAAO7nD,QAAQ,OACTmrD,EAAKv3D,MAAM,GAAI,GAAK,OACO,IAA3Bi0D,EAAO7nD,QAAQ,OACfmrD,EAAKv3D,MAAM,GAAI,GAAK,OACO,IAA3Bi0D,EAAO7nD,QAAQ,OACfmrD,EAAKv3D,MAAM,GAAI,GAAK,MACpBu3D,EAAO,QA2Ebj8C,EAAG,UACH40C,GAAI2D,EACJ3gD,EAAG,UACHi9C,GAAI0D,EACJzD,EAAG,UACHC,GAAIwD,EACJx8B,EAAG,UACHi5B,GAAIuD,EACJtD,EAAG,UACHC,GAAIqD,EACJpD,EAAG,UACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3HyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,6EAA6EttC,MACjF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1C6tC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCL,cAAe,cACfC,KAAM,SAAU99C,GACZ,MAAiB,OAAVA,GAA4B,OAAVA,GAE7Bm+C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,2BACVC,QAAS,WACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACN30C,EAAG,gBACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJiC,EAAG,YACHC,GAAI,WACJjC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERE,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIl1C,EAAIk1C,EAAS,GAGjB,OAAOA,GAAUkB,EAASp2C,IAAMo2C,EAFvBlB,EAAS,IAAOl1C,IAEsBo2C,EADvClB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB5yD,CAAQ,EAAQ,4FCGlD,SAAWkiD,GAAU,aAiEzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACTxK,EAAG,CAAC,kBAAmB,mBACvB40C,GAAI,CAACW,EAAS,WAAiBA,EAAS,YACxC39C,EAAG,CAAC,UAAW,cACfi9C,GAAI,CAACU,EAAS,SAAeA,EAAS,UACtCT,EAAG,CAAC,UAAW,eACfC,GAAI,CAACQ,EAAS,SAAeA,EAAS,UACtCx5B,EAAG,CAAC,UAAW,eACfi5B,GAAI,CAACO,EAAS,SAAeA,EAAS,UACtCN,EAAG,CAAC,SAAU,aACdC,GAAI,CAACK,EAAS,SAAeA,EAAS,UACtCJ,EAAG,CAAC,QAAS,YACbC,GAAI,CAACG,EAAS,OAAaA,EAAS,SAExC,OAAOS,GAEDD,EADAvrC,EAAO/hB,GAAK,GAGZ+hB,EAAO/hB,GAAK,GA9EZu8C,EAAO+N,aAAa,MAAO,CACjCC,OAAQ,sFAAsFttC,MAC1F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVZ,cAAe,aACfC,KAAM,SAAU99C,GACZ,MAAO,QAAUA,EAAMsU,eAE3BypC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,MAAQ,MAElBA,EAAU,MAAQ,OAGjCQ,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,OACN30C,EAAG64C,EACHjE,GAAIiE,EACJjhD,EAAGihD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ98B,EAAG88B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyB5yD,CAAQ,EAAQ,iGCElD,SAAWkiD,GAAU,aAIXA,EAAO+N,aAAa,WAAY,CAC1CC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,wFAAwFvtC,MACjG,KAEJwtC,SAAU,kDAAkDxtC,MAAM,KAClEytC,cAAe,kDAAkDztC,MAAM,KACvE0tC,YAAa,kDAAkD1tC,MAAM,KACrEiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,UACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,cACJh5B,EAAG,MACHi5B,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyB5yD,CAAQ,EAAQ,4FCGlD,SAAWkiD,GAAU,aAIfA,EAAO+N,aAAa,MAAO,CACjCC,OAAQ,kFAAkFttC,MACtF,KAEJutC,YAAa,kFAAkFvtC,MAC3F,KAEJwtC,SAAU,kDAAkDxtC,MAAM,KAClEytC,cAAe,kDAAkDztC,MAAM,KACvE0tC,YAAa,kDAAkD1tC,MAAM,KACrEiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,UACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,cACJh5B,EAAG,MACHi5B,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,sFAAsFttC,MAC1F,KAEJutC,YAAa,sFAAsFvtC,MAC/F,KAEJwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,wCAEVZ,cAAe,qDACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGM,eAAb5C,GACa,UAAbA,GACa,iBAAbA,EAEO4C,EACa,iBAAb5C,GAA4C,QAAbA,EAC/B4C,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,aACAA,EAAK,IACL,QACAA,EAAK,KACL,eACAA,EAAK,KACL,MACAA,EAAK,KACL,eAEA,OAGfhI,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,4BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN30C,EAAG,eACH40C,GAAI,YACJh9C,EAAG,YACHi9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAGRC,uBAAwB,6BACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,QACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBgB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC0+C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC69C,KAAM,CAEFC,IAAK,EACLC,IAAK,KA5GyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAYzB,SAAS0R,EAAuBnB,EAAQQ,EAAettD,GASnD,MAAY,MAARA,EACOstD,EAAgB,UAAY,UACpB,MAARttD,EACAstD,EAAgB,SAAW,SAE3BR,EAAS,KAtBFoB,GAsB6BpB,EArB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,yBAA2B,yBAC/ChB,GAAIgB,EAAgB,sBAAwB,sBAC5Cf,GAAI,gBACJE,GAAI,wBACJE,GAAI,kBAOgC3sD,GArBvBid,MAAM,KAChBixC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAsDR,SAASuF,EAAqBvoD,GAC1B,OAAO,WACH,OAAOA,EAAM,KAAwB,KAAjBhR,KAAK4wD,QAAiB,IAAM,IAAM,QAIrDxO,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,yFAAyF9E,MAC7F,KAEJmxC,WAAY,iGAAiGnxC,MACzG,MAGRutC,YAAa,yDAAyDvtC,MAClE,KAEJwtC,SAhDJ,SAA6Bt7C,EAAG4S,GAC5B,IAAI0oC,EAAW,CACPkJ,WAAY,0DAA0D12C,MAClE,KAEJ22C,WAAY,0DAA0D32C,MAClE,KAEJ42C,SAAU,4DAA4D52C,MAClE,MAKZ,OAAU,IAAN9N,EACOs7C,EAAqB,WACvBxuD,MAAM,EAAG,GACTM,OAAOkuD,EAAqB,WAAExuD,MAAM,EAAG,IAE3CkT,EASEs7C,EALI,qBAAqBntC,KAAKyE,GAC/B,aACA,sCAAsCzE,KAAKyE,GAC3C,WACA,cACoB5S,EAAEm/C,OARjB7D,EAAqB,YA6BhCC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAASgI,EAAqB,cAC9B/H,QAAS+H,EAAqB,YAC9B7H,QAAS6H,EAAqB,WAC9B9H,SAAU8H,EAAqB,cAC/B5H,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOoF,EAAqB,oBAAoBx3D,KAAK/B,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOu5D,EAAqB,qBAAqBx3D,KAAK/B,QAGlE4xD,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,kBACH40C,GAAI8B,EACJ9+C,EAAG8+C,EACH7B,GAAI6B,EACJ5B,EAAG,SACHC,GAAI2B,EACJ36B,EAAG,OACHi5B,GAAI0B,EACJzB,EAAG,SACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAGRrD,cAAe,wBACfC,KAAM,SAAU99C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAOzB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhKyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIgO,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEJwI,EAAO,CAAC,QAAS,MAAO,OAAQ,MAAO,SAAU,OAAQ,QAEpDxW,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUsI,EACVrI,cAAeqI,EACfpI,YAAaoI,EACb7H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAU99C,GACZ,MAAO,QAAUA,GAErB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,MAEJ,OAEXjC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,sBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG,YACH40C,GAAI,WACJh9C,EAAG,UACHi9C,GAAI,SACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,QACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC0+C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC69C,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyB5yD,CAAQ,EAAQ,gGCElD,SAAWkiD,GAAU,aAIZA,EAAO+N,aAAa,UAAW,CACxCC,OAAQ,6EAA6EttC,MACjF,KAEJutC,YAAa,oDAAoDvtC,MAAM,KACvEwtC,SAAU,+DAA+DxtC,MACrE,KAEJytC,cAAe,kCAAkCztC,MAAM,KACvD0tC,YAAa,yBAAyB1tC,MAAM,KAC5CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACN30C,EAAG,SACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yEAAyEttC,MAC7E,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,sBACTC,SAAU,mCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,oBACN30C,EAAG,SACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGttC,MACzG,KAEJutC,YAAa,sFAAsFvtC,MAC/F,KAEJ6xC,kBAAkB,EAClBrE,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpB7C,cAAe,SACfC,KAAM,SAAU99C,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExB+9C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCACN5+B,EAAG,YACHmjC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVxE,SAAU,CACNC,QAAS,mBACTC,QAAS,oBACTC,SAAU,yBACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAAG,WACH40C,GAAI,UACJh9C,EAAG,WACHi9C,GAAI,UACJC,EAAG,UACHC,GAAI,SACJh5B,EAAG,WACHi5B,GAAI,UACJiC,EAAG,WACHC,GAAI,UACJjC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KA5EyB5yD,CAAQ,EAAQ,iGCElD,SAAWkiD,GAAU,aAIXA,EAAO+N,aAAa,WAAY,CAC1CC,OAAQ,6GAA6GttC,MACjH,KAEJutC,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,yEAAyExtC,MAC/E,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,4BAA4B1tC,MAAM,KAC/CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,eACVC,QAAS,uBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN30C,EAAG,mBACH40C,GAAI,eACJh9C,EAAG,aACHi9C,GAAI,eACJC,EAAG,YACHC,GAAI,YACJh5B,EAAG,SACHi5B,GAAI,WACJC,EAAG,YACHC,GAAI,cACJC,EAAG,UACHC,GAAI,aAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,gEAAgEvtC,MAAM,KACnFwtC,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,sCAAsCztC,MAAM,KAC3D0tC,YAAa,2BAA2B1tC,MAAM,KAC9CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,8BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAAG,oBACH40C,GAAI,WACJh9C,EAAG,cACHi9C,GAAI,aACJC,EAAG,cACHC,GAAI,aACJh5B,EAAG,WACHi5B,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,gBACxBC,QAAS,UACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB5yD,CAAQ,EAAQ,8FCKlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wCAAwCttC,MAC5C,KAEJutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5+B,EAAG,WACHmjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,SAAUkG,GAChB,OAAIA,EAAI/E,SAAW5yD,KAAK4yD,OACb,WAEA,YAGflB,QAAS,SACTC,SAAU,SAAUgG,GAChB,OAAI33D,KAAK4yD,SAAW+E,EAAI/E,OACb,WAEA,YAGfhB,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN30C,EAAG,KACH40C,GAAI,OACJh9C,EAAG,OACHi9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh5B,EAAG,MACHi5B,GAAI,OACJiC,EAAG,MACHC,GAAI,OACJjC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,QAERI,KAAM,CAEFC,IAAK,EACLC,IAAK,KApHyB5yD,CAAQ,EAAQ,8FCIlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wCAAwCttC,MAC5C,KAEJutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5+B,EAAG,WACHmjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACO,OAAPA,EACA,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,YACVC,QAAS,SACTC,SAAU,YACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN30C,EAAG,KACH40C,GAAI,OACJh9C,EAAG,OACHi9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh5B,EAAG,MACHi5B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BtyD,CAAQ,EAAQ,8FCElD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wCAAwCttC,MAC5C,KAEJutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5+B,EAAG,WACHmjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN30C,EAAG,KACH40C,GAAI,OACJh9C,EAAG,OACHi9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh5B,EAAG,MACHi5B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BtyD,CAAQ,EAAQ,8FCElD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wCAAwCttC,MAC5C,KAEJutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5+B,EAAG,WACHmjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN30C,EAAG,KACH40C,GAAI,OACJh9C,EAAG,OACHi9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh5B,EAAG,MACHi5B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BtyD,CAAQ,EAAQ,wGCP1D,IAAIyO,EAAM,CACT,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,WAAY,yCACZ,cAAe,yCACf,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,QAAS,sCACT,aAAc,2CACd,gBAAiB,2CACjB,WAAY,sCACZ,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,yCAIf,SAASgrD,EAAeC,GACvB,IAAIvuD,EAAKwuD,EAAsBD,GAC/B,OAAOE,EAAoBzuD,GAE5B,SAASwuD,EAAsBD,GAC9B,IAAIE,EAAoBl1C,EAAEjW,EAAKirD,GAAM,CACpC,IAAIt3C,EAAI,IAAI7P,MAAM,uBAAyBmnD,EAAM,KAEjD,MADAt3C,EAAEy3C,KAAO,mBACHz3C,EAEP,OAAO3T,EAAIirD,GAEZD,EAAenmD,KAAO,WACrB,OAAOD,OAAOC,KAAK7E,IAEpBgrD,EAAehtD,QAAUktD,EACzB/5D,EAAOovD,QAAUyK,EACjBA,EAAetuD,GAAK,8GClSnB,IAASoS,EAAAA,EAAqiI8I,OAAOF,SAAziIxmB,QAAQC,OAAO,eAAe,IAAI0E,MAAM,eAAe,CAACo5C,OAAM,IAAKryC,OAAO,CAAC,mBAAmB,SAASkS,GAAG5d,QAAQ+M,UAAU6Q,EAAEu8C,0BAA0Bv8C,EAAEu8C,yBAAyB,sCAAsCv8C,EAAEw8C,2BAA2B,yCAAyCp6D,QAAQC,OAAO,mBAAmB,CAAC,mBAAmBD,QAAQC,OAAO,iBAAiB,IAAID,QAAQC,OAAO,QAAQ,CAAC,eAAe,iBAAiB,mBAAmB,eAAwEA,EAAOovD,UAAUA,IAAUpvD,EAAOovD,QAAQ,SAASrvD,QAAQC,OAAO,kBAAkB2X,QAAQ,MAAM,CAAC,KAAK,SAASgG,GAAG,IAAImB,EAAE,OAAaua,EAAE,CAAC,MAAM,KAAI,MAAM,KAAK,MAAM,KAAI,MAAM,KAAK,MAAM,MAAMn5B,KAAKk6D,eAAe,SAASz8C,EAAEmB,GAAG,MAAM,WAAWA,EAAEu7C,YAAYn6D,KAAKo6D,QAAQ38C,GAAGA,EAAE48C,iBAAiB,MAAMz7C,EAAEu7C,YAAYn6D,KAAKo6D,QAAQ38C,GAAGA,EAAE3I,WAAWC,QAAQ,IAAI6J,EAAEu7C,YAAY,iBAAiB18C,GAAGA,EAAEA,EAAE1I,QAAQ,KAAK,OAAO6J,EAAE07C,cAAc78C,EAAEvP,QAAQ,MAAM,GAAGuP,EAAEvP,QAAQ,OAAO,GAAGuP,EAAEvP,QAAQ,OAAO,KAAKuP,EAAEmB,EAAE27C,SAAS98C,EAAEmB,EAAE27C,UAAU98C,GAAG,kBAAkBA,EAAEA,EAAE,OAAO,QAAQA,GAAGzd,KAAKo6D,QAAQ,SAAS38C,GAAG,OAAOA,IAAIA,KAAK+8C,SAAS/8C,IAAIwU,QAAQxU,EAAE,KAAKzd,KAAKke,UAAU,SAASib,EAAE7W,GAAG,IAAI+wC,EAAE51C,EAAExR,QAAQ4R,EAAE7d,KAAKkyD,EAAE,GAAG70C,EAAE,GAAGK,EAAED,EAAExN,KAAKkpB,GAAGpuB,MAAK,SAAS0S,GAA6C,IAAI0b,EAAEzb,EAA7C7d,QAAQ+M,UAAU0V,EAAEm4C,SAASn4C,EAAEm4C,SAAgBthC,EAAE,GAAGt5B,QAAQkB,QAAQuhB,EAAEm4C,QAAO,SAASh9C,GAAGzd,KAAKS,KAAKod,EAAEq8C,eAAez8C,EAAE6E,MAAK6W,GAAGzb,EAAEyb,EAAElmB,KAAKqP,EAAEo4C,SAASp4C,EAAEo4C,SAAS,KAAKr9C,GAAGK,EAAEkB,GAAE,IAAsI6T,EAAEzd,EAApIwI,EAAE,GAAM3d,QAAQmS,QAAQyL,GAAGD,EAAEC,EAAE5d,QAAQuN,WAAWqQ,KAAKD,EAAEC,KAAK5d,QAAQ+M,UAAU0V,EAAEkoC,QAAQloC,EAAEkoC,OAAO,kBAAkBloC,EAAEkoC,QAAe/3B,EAAE,GAAG5yB,QAAQkB,QAAQyc,EAAE,IAAG,SAASC,EAAEmB,GAAG5e,KAAKS,KAAKod,EAAEq8C,eAAet7C,EAAE0D,MAAKmQ,GAAGzd,EAAEyd,EAAExf,KAAKqP,EAAEo4C,SAASp4C,EAAEo4C,SAAS,KAAKr9C,GAAGrI,EAAE4J,GAAE/e,QAAQkB,QAAQyc,GAAE,SAASC,EAAEk9C,GAAG,IAAIxhC,EAAEk6B,EAAEnB,EAAEryD,QAAQoiB,KAAKzE,EAAEm9C,IAAItH,EAAE,GAAG,IAAI31C,EAAE4E,EAAEs4C,YAAYt4C,EAAEs4C,YAAY1I,EAAEryD,QAAQkB,QAAQ2c,GAAE,SAASD,GAAG,IAAImB,EAAE0D,EAAEs4C,YAAY1I,EAAEz0C,GAAGA,EAAEzd,KAAKS,KAAKod,EAAEq8C,eAAet7C,EAAE0D,MAAK+wC,GAAGl6B,EAAEk6B,EAAEpgD,KAAKqP,EAAEo4C,SAASp4C,EAAEo4C,SAAS,KAAKr9C,GAAGs9C,EAAEn9C,EAAEpO,OAAO+pB,EAAEva,EAAEua,KAAI7W,EAAEu4C,qBAAqB3I,GAA9wC,UAAoxCA,GAAG70C,EAAEg2C,EAAE1mD,QAAQulD,MAAK,MAAM,mBAAmBx0C,EAAS,OAAGA,EAAS,OAAE,SAASD,GAAG41C,EAAEhf,OAAO52B,MAAK41C,EAAE5vD,SAASzD,KAAK86D,cAAc,SAASr9C,GAAG,YAAO,IAAS0b,EAAE1b,IAAIzd,KAAK+6D,eAAe,SAASt9C,GAAG,OAAO0b,EAAE1b,OAAO5d,QAAQC,OAAO,oBAAoB+C,UAAU,QAAQ,CAAC,SAAS,KAAK,MAAM,YAAY,WAAW,SAAS+b,EAAE+7C,EAAExhC,EAAE7W,EAAE+wC,GAAG,MAAM,CAAClsD,SAAS,KAAKrE,MAAM,CAAC6E,KAAK,SAASqzD,SAAS,YAAYP,OAAO,aAAaG,YAAY,kBAAkBL,SAAS,iBAAiBJ,WAAW,oBAAoBG,aAAa,gBAAgBI,SAAS,kBAAkBtuC,SAAS,YAAYyuC,mBAAmB,UAAUpgB,QAAQ,IAAIwgB,QAAQ,WAAWzQ,MAAM,aAAaxpD,WAAW,CAAC,SAAS,WAAW,SAAS,cAAc,SAASyc,EAAEmB,EAAE0D,GAAwe7E,EAAEy9C,IAAI,GAAGr7D,QAAQ+M,UAAU6Q,EAAE2O,WAAW,QAAQ3O,EAAE2O,UAAUvsB,QAAQmS,QAAQyL,EAAE9V,OAAO8V,EAAElZ,OAAO,QAAO,WAAWkZ,EAAE09C,cAAY,GAAI19C,EAAE29C,YAAY,WAAW,OAAO39C,EAAEu9C,UAAU,gBAAgBv9C,EAAE09C,SAAS,WAAW,IAAIt9C,EAAE88C,EAAE1uD,QAAQ,OAAO2S,EAAEy8C,SAAS/4C,EAAEg5C,mBAAmB,kBAAkBniC,EAAEjb,UAAUT,EAAE9V,OAAhxB,WAAa,IAAIiX,EAAE,CAAC27C,SAAS98C,EAAE88C,SAAS98C,EAAE88C,SAAS,IAAIJ,WAAW18C,EAAE08C,WAAW18C,EAAE08C,WAAW,IAAIG,aAAa78C,EAAE68C,aAAaO,mBAAmBp9C,EAAEo9C,oBAAoB,OAAOh7D,QAAQ+M,UAAU0V,EAAEi5C,aAAa38C,EAAE67C,OAAOh9C,EAAEpc,MAAMoc,EAAEg9C,SAAS56D,QAAQ+M,UAAU0V,EAAEk5C,kBAAkB58C,EAAEg8C,YAAYn9C,EAAEpc,MAAMoc,EAAEm9C,cAAc/6D,QAAQ+M,UAAU0V,EAAEm5C,YAAY78C,EAAE4rC,MAAM/sC,EAAEpc,MAAMoc,EAAE+sC,QAAQ5rC,EAAE87C,SAASj9C,EAAEi9C,SAASj9C,EAAEi9C,SAAS,IAAI97C,EAAE87C,SAASvhC,EAAE2hC,cAAcl8C,EAAE87C,UAAUvhC,EAAE4hC,eAAen8C,EAAE87C,UAAU97C,EAAE87C,SAAS97C,EAAoTy0C,IAAKtoD,MAAK,SAAS4vD,GAAGl9C,EAAEy9C,IAAIP,EAAE/7C,EAAE88C,YAAYp5C,EAAEg5C,mBAAmB,kBAAkBz9C,EAAElR,QAAQguD,MAAKl9C,EAAExZ,SAAS4Z,EAAEpa,WAAW8E,KAAK,SAASqW,EAAE+7C,GAA8bA,EAAEr3D,KAAK,SAAQ,WAAWsb,EAAEu8C,WAAWpwD,MAAK,YAAve,WAAa,IAAI4vD,EAAE/7C,EAAEq8C,SAAS,QAAQ9hC,EAAE,IAAIk2B,KAAK,CAACzwC,EAAEs8C,KAAK,CAAChsD,KAAK,oBAAoByrD,EAAE,MAAM,GAAGl9C,EAAEo+B,UAAU8f,iBAAiB9f,UAAU+f,WAAWziC,EAAEva,EAAEw8C,mBAAmB,CAAC,IAAIv9C,EAAEhe,QAAQkD,QAAQ,+CAA+CmvD,EAAEryD,QAAQkD,QAAQ8a,EAAEjV,WAAW,IAAIspD,EAAEp/C,KAAK,OAAO2K,EAAE8vC,IAAIsO,gBAAgB1iC,IAAI+4B,EAAEp/C,KAAK,WAAW8L,EAAEw8C,eAAelJ,EAAEp/C,KAAK,SAAS,UAAUwP,EAAExB,KAAK,QAAQuZ,OAAOxc,GAAGw1C,GAAE,WAAWnB,EAAE,GAAGvH,QAAQuH,EAAErlD,WAAU,OAA8DssB,MAAMva,EAAE3a","sources":["webpack://motion-chat/./node_modules/@flowjs/ng-flow/dist/ng-flow.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/templateFactory.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/locationServices.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/services.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/common.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/coreservices.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/glob.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/hof.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/predicates.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/queue.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/safeConsole.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/strings.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/trace.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/globals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/param.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramTypes.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/stateParams.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathNode.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathUtils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/router.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateObject.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/targetState.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/coreResolvables.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/redirectTo.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/resolve.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/views.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/updateGlobals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/url.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/ignoredTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/invalidTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRouter.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRule.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRules.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/q.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/utils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/view/view.js","webpack://motion-chat/./node_modules/angular-aria/angular-aria.js","webpack://motion-chat/./node_modules/angular-rateit/dist/ng-rateit.js","webpack://motion-chat/./src/js/index.controller.js","webpack://motion-chat/./src/js/index.route.js","webpack://motion-chat/./src/js/closing/closing.controller.js","webpack://motion-chat/./src/js/index.factory.js","webpack://motion-chat/./src/js/chat/chat.controller.js","webpack://motion-chat/./src/js/offline/offline.controller.js","webpack://motion-chat/./src/js/online/online.controller.js","webpack://motion-chat/./src/js/unmanaged/unmanaged.controller.js","webpack://motion-chat/./src/js/waiting/waiting.controller.js","webpack://motion-chat/./src/js/common/remote-storage.service.js","webpack://motion-chat/./src/js/index.module.js","webpack://motion-chat/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://motion-chat/./node_modules/json-form-data/src/jsonToFormData.js","webpack://motion-chat/./node_modules/moment/locale/af.js","webpack://motion-chat/./node_modules/moment/locale/ar-dz.js","webpack://motion-chat/./node_modules/moment/locale/ar-kw.js","webpack://motion-chat/./node_modules/moment/locale/ar-ly.js","webpack://motion-chat/./node_modules/moment/locale/ar-ma.js","webpack://motion-chat/./node_modules/moment/locale/ar-sa.js","webpack://motion-chat/./node_modules/moment/locale/ar-tn.js","webpack://motion-chat/./node_modules/moment/locale/ar.js","webpack://motion-chat/./node_modules/moment/locale/az.js","webpack://motion-chat/./node_modules/moment/locale/be.js","webpack://motion-chat/./node_modules/moment/locale/bg.js","webpack://motion-chat/./node_modules/moment/locale/bm.js","webpack://motion-chat/./node_modules/moment/locale/bn-bd.js","webpack://motion-chat/./node_modules/moment/locale/bn.js","webpack://motion-chat/./node_modules/moment/locale/bo.js","webpack://motion-chat/./node_modules/moment/locale/br.js","webpack://motion-chat/./node_modules/moment/locale/bs.js","webpack://motion-chat/./node_modules/moment/locale/ca.js","webpack://motion-chat/./node_modules/moment/locale/cs.js","webpack://motion-chat/./node_modules/moment/locale/cv.js","webpack://motion-chat/./node_modules/moment/locale/cy.js","webpack://motion-chat/./node_modules/moment/locale/da.js","webpack://motion-chat/./node_modules/moment/locale/de-at.js","webpack://motion-chat/./node_modules/moment/locale/de-ch.js","webpack://motion-chat/./node_modules/moment/locale/de.js","webpack://motion-chat/./node_modules/moment/locale/dv.js","webpack://motion-chat/./node_modules/moment/locale/el.js","webpack://motion-chat/./node_modules/moment/locale/en-au.js","webpack://motion-chat/./node_modules/moment/locale/en-ca.js","webpack://motion-chat/./node_modules/moment/locale/en-gb.js","webpack://motion-chat/./node_modules/moment/locale/en-ie.js","webpack://motion-chat/./node_modules/moment/locale/en-il.js","webpack://motion-chat/./node_modules/moment/locale/en-in.js","webpack://motion-chat/./node_modules/moment/locale/en-nz.js","webpack://motion-chat/./node_modules/moment/locale/en-sg.js","webpack://motion-chat/./node_modules/moment/locale/eo.js","webpack://motion-chat/./node_modules/moment/locale/es-do.js","webpack://motion-chat/./node_modules/moment/locale/es-mx.js","webpack://motion-chat/./node_modules/moment/locale/es-us.js","webpack://motion-chat/./node_modules/moment/locale/es.js","webpack://motion-chat/./node_modules/moment/locale/et.js","webpack://motion-chat/./node_modules/moment/locale/eu.js","webpack://motion-chat/./node_modules/moment/locale/fa.js","webpack://motion-chat/./node_modules/moment/locale/fi.js","webpack://motion-chat/./node_modules/moment/locale/fil.js","webpack://motion-chat/./node_modules/moment/locale/fo.js","webpack://motion-chat/./node_modules/moment/locale/fr-ca.js","webpack://motion-chat/./node_modules/moment/locale/fr-ch.js","webpack://motion-chat/./node_modules/moment/locale/fr.js","webpack://motion-chat/./node_modules/moment/locale/fy.js","webpack://motion-chat/./node_modules/moment/locale/ga.js","webpack://motion-chat/./node_modules/moment/locale/gd.js","webpack://motion-chat/./node_modules/moment/locale/gl.js","webpack://motion-chat/./node_modules/moment/locale/gom-deva.js","webpack://motion-chat/./node_modules/moment/locale/gom-latn.js","webpack://motion-chat/./node_modules/moment/locale/gu.js","webpack://motion-chat/./node_modules/moment/locale/he.js","webpack://motion-chat/./node_modules/moment/locale/hi.js","webpack://motion-chat/./node_modules/moment/locale/hr.js","webpack://motion-chat/./node_modules/moment/locale/hu.js","webpack://motion-chat/./node_modules/moment/locale/hy-am.js","webpack://motion-chat/./node_modules/moment/locale/id.js","webpack://motion-chat/./node_modules/moment/locale/is.js","webpack://motion-chat/./node_modules/moment/locale/it-ch.js","webpack://motion-chat/./node_modules/moment/locale/it.js","webpack://motion-chat/./node_modules/moment/locale/ja.js","webpack://motion-chat/./node_modules/moment/locale/jv.js","webpack://motion-chat/./node_modules/moment/locale/ka.js","webpack://motion-chat/./node_modules/moment/locale/kk.js","webpack://motion-chat/./node_modules/moment/locale/km.js","webpack://motion-chat/./node_modules/moment/locale/kn.js","webpack://motion-chat/./node_modules/moment/locale/ko.js","webpack://motion-chat/./node_modules/moment/locale/ku.js","webpack://motion-chat/./node_modules/moment/locale/ky.js","webpack://motion-chat/./node_modules/moment/locale/lb.js","webpack://motion-chat/./node_modules/moment/locale/lo.js","webpack://motion-chat/./node_modules/moment/locale/lt.js","webpack://motion-chat/./node_modules/moment/locale/lv.js","webpack://motion-chat/./node_modules/moment/locale/me.js","webpack://motion-chat/./node_modules/moment/locale/mi.js","webpack://motion-chat/./node_modules/moment/locale/mk.js","webpack://motion-chat/./node_modules/moment/locale/ml.js","webpack://motion-chat/./node_modules/moment/locale/mn.js","webpack://motion-chat/./node_modules/moment/locale/mr.js","webpack://motion-chat/./node_modules/moment/locale/ms-my.js","webpack://motion-chat/./node_modules/moment/locale/ms.js","webpack://motion-chat/./node_modules/moment/locale/mt.js","webpack://motion-chat/./node_modules/moment/locale/my.js","webpack://motion-chat/./node_modules/moment/locale/nb.js","webpack://motion-chat/./node_modules/moment/locale/ne.js","webpack://motion-chat/./node_modules/moment/locale/nl-be.js","webpack://motion-chat/./node_modules/moment/locale/nl.js","webpack://motion-chat/./node_modules/moment/locale/nn.js","webpack://motion-chat/./node_modules/moment/locale/oc-lnc.js","webpack://motion-chat/./node_modules/moment/locale/pa-in.js","webpack://motion-chat/./node_modules/moment/locale/pl.js","webpack://motion-chat/./node_modules/moment/locale/pt-br.js","webpack://motion-chat/./node_modules/moment/locale/pt.js","webpack://motion-chat/./node_modules/moment/locale/ro.js","webpack://motion-chat/./node_modules/moment/locale/ru.js","webpack://motion-chat/./node_modules/moment/locale/sd.js","webpack://motion-chat/./node_modules/moment/locale/se.js","webpack://motion-chat/./node_modules/moment/locale/si.js","webpack://motion-chat/./node_modules/moment/locale/sk.js","webpack://motion-chat/./node_modules/moment/locale/sl.js","webpack://motion-chat/./node_modules/moment/locale/sq.js","webpack://motion-chat/./node_modules/moment/locale/sr-cyrl.js","webpack://motion-chat/./node_modules/moment/locale/sr.js","webpack://motion-chat/./node_modules/moment/locale/ss.js","webpack://motion-chat/./node_modules/moment/locale/sv.js","webpack://motion-chat/./node_modules/moment/locale/sw.js","webpack://motion-chat/./node_modules/moment/locale/ta.js","webpack://motion-chat/./node_modules/moment/locale/te.js","webpack://motion-chat/./node_modules/moment/locale/tet.js","webpack://motion-chat/./node_modules/moment/locale/tg.js","webpack://motion-chat/./node_modules/moment/locale/th.js","webpack://motion-chat/./node_modules/moment/locale/tk.js","webpack://motion-chat/./node_modules/moment/locale/tl-ph.js","webpack://motion-chat/./node_modules/moment/locale/tlh.js","webpack://motion-chat/./node_modules/moment/locale/tr.js","webpack://motion-chat/./node_modules/moment/locale/tzl.js","webpack://motion-chat/./node_modules/moment/locale/tzm-latn.js","webpack://motion-chat/./node_modules/moment/locale/tzm.js","webpack://motion-chat/./node_modules/moment/locale/ug-cn.js","webpack://motion-chat/./node_modules/moment/locale/uk.js","webpack://motion-chat/./node_modules/moment/locale/ur.js","webpack://motion-chat/./node_modules/moment/locale/uz-latn.js","webpack://motion-chat/./node_modules/moment/locale/uz.js","webpack://motion-chat/./node_modules/moment/locale/vi.js","webpack://motion-chat/./node_modules/moment/locale/x-pseudo.js","webpack://motion-chat/./node_modules/moment/locale/yo.js","webpack://motion-chat/./node_modules/moment/locale/zh-cn.js","webpack://motion-chat/./node_modules/moment/locale/zh-hk.js","webpack://motion-chat/./node_modules/moment/locale/zh-mo.js","webpack://motion-chat/./node_modules/moment/locale/zh-tw.js","webpack://motion-chat//home/vito/Development/MOTION_V3/motion-server/motion-chat/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://motion-chat/./node_modules/ng-csv/build/ng-csv.min.js"],"names":["angular","module","provider","this","defaults","factory","options","Flow","events","on","event","callback","push","$get","fn","opts","flow","extend","forEach","controller","$scope","$attrs","$parse","flowFactory","$eval","flowInit","flowObject","create","catchAllHandler","eventName","args","Array","prototype","slice","call","arguments","shift","$broadcast","apply","concat","$applyAsync","defaultPrevented","$on","off","$flow","hasOwnProperty","flowName","assign","directive","scope","element","attrs","isDirectory","isSingleFile","inputAttrs","flowAttrs","assignBrowse","bind","preventDefault","$timeout","promise","enter","dragEvent","fileDrag","dataTransfer","originalEvent","types","val","$apply","flowDragEnter","cancel","flowDragLeave","assignDrop","flowDropEnabled","$watch","value","unAssignDrop","fileSuccess","fileProgress","fileAdded","filesAdded","filesSubmitted","fileRetry","fileRemoved","fileError","uploadStart","complete","progress","error","eventArgs","string","name","charAt","toUpperCase","require","funcArgs","key","file","flowImg","fileReader","FileReader","readAsDataURL","onload","$set","target","result","transfers","files","uiView","$ViewDirectiveFill","$compile","$controller","$transitions","$view","$q","getControllerAs","parse","getResolveAs","restrict","priority","compile","tElement","initial","html","empty","$element","data","contents","cfg","$cfg","viewDecl","getTemplate","noop","resolveCtx","path","ResolveContext","trace","$uiView","link","controllerAs","resolveAs","locals","controllerInstance","children","registerControllerCallbacks","isString","component","kebobName","kebobString","tagRegexp_1","RegExp","deregisterWatch_1","directiveEl","filter","el","tagName","exec","ctrlInstance","$animate","$uiViewScroll","$interpolate","rootData","$context","_pluginapi","_rootViewContext","count","terminal","transclude","tAttrs","$transclude","previousEl","currentEl","currentScope","viewConfig","onloadExp","autoScrollExp","renderer","cb","then","leave","inherited","inheritedData","activeUIView","$type","id","fqn","config","configUpdated","updateView","fromParentTagConfig","fromParentTag","unregister","registerUIView","newScope","$new","animEnter","defer","animLeave","$uiViewData","$uiViewAnim","$animEnter","$animLeave","$$animLeave","$emit","cloned","clone","resolve","isDefined","remove","$destroy","_viewData_1","cleanupLastView","$inject","hasComponentImpl","_uiCanExitId","isFunction","$onInit","componentProvider","viewState","tail","state","self","hookOptions","uiOnParamsChanged","viewCreationTrans_1","getResolvable","onSuccess","$transition$","exiting","indexOf","toParams","params","fromParams","getNodeSchema","node","paramSchema","toSchema","treeChanges","map","reduce","unnestR","fromSchema","changedToParams","param","idx","type","equals","length","changedKeys_1","x","newValues","uiCanExit","id_1","cacheProp_1","prevTruthyAnswer_1","trans","redirectedFrom","criteria","onBefore","ids","when","TemplateFactory","_this","_useHttp","$http","$templateCache","$injector","$templateRequest","has","get","useHttpService","fromConfig","context","asTemplate","services","str","template","asComponent","fromString","templateUrl","fromUrl","templateProvider","fromProvider","fromComponentProvider","url","cache","headers","Accept","response","deps","providerFn","isArray","Resolvable","makeComponentTemplate","bindings","prefix","kebob","camelCase","kebobed","cmpDefs","Error","getBindings","getComponentBindings","input","attrName","attr","resolveName","res","join","def","isObject","bindToController","scopeBindings","bindingsObj","Object","keys","tuple","getStateHookBuilder","hookName","stateObject","hook","pathname","subContext","$$state","getLocals","$state$","undefined","Ng1LocationServices","$locationProvider","_urlListeners","_lp","createProxyFunctions","monkeyPatchPathParameterType","router","pathType","urlMatcherFactory","encode","toString","replace","m","decode","dispose","onChange","removeFrom","html5Mode","enabled","$sniffer","history","baseHref","_baseHref","$browser","$window","location","newUrl","$location","_runtimeServices","$rootScope","evt","_loc","mod_init","mod_util","mod_rtr","mod_state","mod_main","$uiRouterProvider","UIRouter","stateProvider","stateRegistry","stateService","decorator","viewService","_viewConfigFactory","urlService","_decodeParams","ng1LocationService","locationService","locationConfig","getProviderFor","serviceName","$urp","service","runBlock","$uiRouter","invoke","checkStrictDi","strictDi","resolvables","resolvable","annotate","resolveFn","watchDigests","uiRouter","urlRouterProvider","globals","run","$urlMatcherFactory","$state","$urlRouter","ctx","getTokens","getPolicy","async","applyPairs","$IsStateFilter","isFilter","is","$stateful","$IncludedByStateFilter","includesFilter","includes","StateProvider","func","definition","register","onInvalid","getNg1ViewConfigFactory","templateFactory","view","Ng1ViewConfig","hasAnyKey","obj","acc","ng1ViewsBuilder","parent","compKeys","nonCompKeys","allViewKeys","views","viewsObject","$default","pick","$name","normalized","ViewService","$uiViewName","uiViewName","$uiViewContextAnchor","uiViewContextAnchor","$id","loaded","load","paramValues","promises","getController","all","results","controllerProvider","isInjectable","UrlRouterProvider","injectableHandler","handler","match","$match","$stateParams","urlRouter","update","interceptDeferred","listen","rule","ruleFn","BaseUrlRule","identity","rules","otherwise","urlRules","what","deferIntercept","useAnchorScroll","$anchorScroll","scrollIntoView","__spreadArrays","s","i","il","r","k","a","j","jl","root","g","global","fromJson","JSON","toJson","stringify","toObj","_equals","o1","o2","t1","a1","a2","tup","arrayTuples","b","t","getTime","source","fnNames","latebind","bindFunction","fnName","inherit","extra","inArray","array","splice","pushTo","arr","deregAll","functions","defaultsList","_i","defaultVals","reverse","mergeR","memo","item","ancestors","first","second","n","propNames","objCopy","_prop","omit","collection","accept","find","mapObj","values","allTrueR","elem","anyTrueR","flattenR","pushR","uniqR","token","unnest","assertPredicate","predicateOrMap","errMsg","maxArrayLen","min","Math","_loop_1","keyValTuple","copy","src","dest","silenceUncaughtInPromise","catch","e","silentRejection","makeStub","methods","fnname","Glob","text","glob","split","regexpString","seg","regexp","matches","test","curry","curried","compose","start","pipe","funcs","prop","propEq","_val","not","and","fn1","fn2","or","any","ctor","constructor","v","pattern","struct","toStr","tis","isUndefined","isNull","o","isNullOrUndefined","isNumber","isDate","isRegExp","head","isPromise","Queue","_items","_limit","_evictListeners","onEvict","enqueue","items","evict","dequeue","size","clear","current","peekTail","peekHead","noopConsoleStub","log","table","safeConsole","document","documentMode","window","console","bound","Function","ie9Console","fallbackConsole","maxLength","max","substr","padString","$1","toLowerCase","functionToString","fnStr","fnToString","namedFunctionMatch","_fn","isRejection","stringifyPattern","_transitionRejection","seen","format","beforeAfterSubstr","char","stripLastPathElement","splitHash","splitQuery","splitEqual","trimHashVal","splitOnDelim","delim","re","joinNeighborsR","Category","uiViewString","uiview","creationContext","normalizedCat","_tid","_rid","transLbl","Trace","_enabled","approximateDigests","_set","categories","parseInt","isNaN","category","enable","disable","traceTransitionStart","TRANSITION","traceTransitionIgnored","traceHookInvocation","step","HOOK","registeredHook","traceHookResult","hookResult","transitionOptions","traceResolvePath","RESOLVE","traceResolvableResolved","traceError","reason","traceSuccess","finalState","traceUIViewEvent","viewData","UIVIEW","traceUIViewConfigUpdated","traceUIViewFill","traceViewSync","pairs","VIEWCONFIG","uivheader","mapping","_a","_b","uiv","sort","localeCompare","traceViewServiceEvent","viewConfigString","traceViewServiceUIViewEvent","UIRouterGlobals","lastStartedTransitionId","transitionHistory","successfulTransitions","transition","lazyLoadHook","entering","lazyLoad","lazyLoadState","originalTransition","orig","targetState","identifier","$url","parts","sync","registerLazyLoadHook","transitionService","lazyLoadFn","states","_state","err","DefType","hasOwn","Param","urlConfig","paramName","noReloadOnSearch","reloadOnSearch","SEARCH","dynamic","defaultConfig","paramConfig","getStaticDefaultValue","isShorthand","$$fn","unwrapShorthand","getParamDeclaration","urlType","paramTypes","CONFIG","PATH","getType","arrayDefaults","arrayParamNomenclature","arrayMode","$asArray","isOptional","raw","squash","defaultPolicy","getSquashPolicy","defaultSquashPolicy","from","to","configuredKeys","getReplace","params_1","changed","values1","values2","validates","isDefaultValue","replaceSpecialValues","_defaultValueCache","defaultValue","getDefaultValue","$normalize","isSearch","encoded","ParamType","$subPattern","sub","mode","ArrayType","arrayWrap","arrayHandler","allTruthyMode","arrayUnwrap","arrayEqualsHandler","val1","val2","left","right","paramTypeFn","wrapperFn","$arrayMode","makeDefaultType","ParamTypes","typeQueue","defaultTypes","definitionFn","_flushTypeQueue","valToString","defaultTypeBase","String","query","hash","int","bool","Boolean","date","getFullYear","getMonth","getDate","capture","Date","valueOf","l","json","StateParams","$inherit","newParams","$current","$to","parentParams","parents","inheritList","PathNode","stateOrNode","parameters","applyRawParams","pDef","paramDef","parameter","paramsFn","diff","PathUtils","makeTargetState","registry","buildPath","buildToPath","fromPath","toPath","inheritParams","applyViewConfigs","viewDecls","subPath","viewConfigs","createViewConfig","toKeys","noInherit","toNode","toParamVals","incomingParamVals","fromParamVals","ownParamVals","reloadState","node1","node2","retained","keep","nonDynamicParams","retainedWithToParams","retainedNode","matching","pathA","pathB","done","nodeA","nodeB","predicate","elementIdx","resolvePolicies","LAZY","EAGER","WAIT","NOWAIT","arg1","policy","resolved","literal","thisPolicy","statePolicy","resolvePolicy","resolveContext","findNode","asyncPolicy","customAsyncPolicy","getDependencies","resolvedDeps","resolvedValue","fromData","whens","ALL_WHENS","EAGER_WHENS","_path","addResolvables","newResolvables","resolvePath","matchedWhens","matchesPolicy","acceptedVals","whenOrAsync","nodeResolvables","nowait","wait","getResult","injector","_injector","UIInjectorImpl","availableResolvables","_node","fromInjector","getNative","native","getAsync","_routerInstance","locationServiceStub","locationConfigStub","_disposed","_disposables","_plugins","disposable","d","ignored","plugin","pluginInstance","getPlugin","pluginName","nameBuilder","selfBuilder","dataBuilder","getUrlBuilder","$urlMatcherFactoryProvider","stateDec","newStateDec","parsed","substring","parseUrl","isMatcher","navigable","append","getNavigableBuilder","isRoot","pathBuilder","includesBuilder","resolvablesBuilder","resolveObj","getToken","p","provide","literal2Resolvable","useFactory","dependencies","useClass","useValue","useExisting","tuple2Resolvable","item2Resolvable","decl","StateBuilder","matcher","paramFactory","builders","parentName","urlParams","nonUrlParams","builder","build","chain","parentFn","segments","pop","StateMatcher","_states","isRelative","stateName","stateOrName","base","matchGlob","isStr","__stateObjectCache","nameGlob","baseState","splitName","pathLength","relName","StateObject","stateDecl","isStateClass","ref","matchingKeys","isStateDeclaration","isState","StateQueueManager","listeners","queue","flush","registered","orphans","previousQueueLength","getState","notifyListeners","listener","name_1","orphanIdx","existingState","existingFutureState","deregister","attachRoute","prev","abstract","rulesApi","urlRuleFactory","StateRegistry","stateQueue","_registerRoot","_root","onStatesChanged","stateDefinition","_deregisterTree","getChildren","_children","deregistered","removeRule","deregisteredStates","found","property","builderFunction","TargetState","_stateRegistry","_identifier","_params","_options","_definition","relative","exists","valid","withState","withParams","withOptions","newOpts","isDef","HookBuilder","buildHooksForPhase","phase","_getEvents","buildHooks","hookType","matchingHooks","getMatchingHooks","reverseDepthSort","baseHookOptions","criteriaMatchPath","traceData","transitionHook","reverseSort","factor","depthDelta","isCreate","hookPhase","reg","getHooks","matchState","criterion","toMatch","globStrings","RegisteredHook","tranSvc","eventType","matchCriteria","removeHookFromRegistry","invokeCount","_deregistered","invokeLimit","_matchingNodes","nodes","_getDefaultMatchCriteria","_getPathTypes","_getMatchingNodes","mn","pathtype","isStateHook","every","makeEvent","hooks","_registeredHooks","removeHookFn","hookRegistrationFn","matchObject","TransitionHookPhase","TransitionHookScope","RejectType","Rejection","message","detail","isRejectionPromise","superseded","rejection","SUPERSEDED","redirected","invalid","INVALID","IGNORED","aborted","ABORTED","errored","ERROR","normalize","toPromise","TransitionEventType","hookOrder","getResultHandler","getErrorHandler","synchronous","defaultOptions","TransitionHook","stateContext","isSuperseded","isActive","waitFor","nextHook","invokeHook","invokeHooks","doneCallback","remainingHooks","runAllHooks","logError","defaultErrorHandler","notCurrent","getNotCurrentRejection","handleError","handleResult","handleHookResult","isTargetState","_aborted","HANDLE_RESULT","LOG_REJECTED_RESULT","LOG_ERROR","REJECT_ERROR","THROW_ERROR","addCoreResolvables","addResolvable","TRANSITION_TOKENS","isTransition","treeChangesCleanup","replaceTransitionWithNull","redirectToHook","redirect","redirectTo","makeEnterExitRetainHook","hookFn","onExitHook","onRetainHook","onEnterHook","RESOLVE_HOOK_PRIORITY","eagerResolvePath","lazyResolveState","resolveRemaining","loadEnteringViews","enteringViews","activateViews","exitingViews","vc","deactivateViewConfig","activateViewConfig","updateGlobalState","clearCurrentTransition","updateUrl","urlOptions","ignoredHook","ignoredReason","_ignoredReason","pending","abort","invalidTransitionHook","defaultTransOpts","notify","reload","supercede","custom","TransitionService","_router","_transitionCount","_eventTypes","_criteriaPaths","_deregisterHookFns","_defineCorePaths","_defineCoreEvents","_registerCoreTransitionHooks","onCreate","onStart","onExit","onRetain","onEnter","onFinish","onError","hooksArray","Phase","TH","paths","NORMAL_SORT","SYNCHRONOUS","_defineEvent","CREATE","BEFORE","RUN","SUCCESS","STATE","_definePathType","cmpByPhase","hookScope","fns","addCoreResolves","registerInvalidTransitionHook","registerRedirectToHook","registerOnExitHook","registerOnRetainHook","registerOnEnterHook","eagerResolve","registerEagerResolvePath","lazyResolve","registerLazyResolveState","resolveAll","registerResolveRemaining","loadViews","registerLoadEnteringViews","registerActivateViews","updateGlobals","registerUpdateGlobalState","registerUpdateUrl","UrlConfig","_isCaseInsensitive","_isStrictMode","_defaultSquashPolicy","hashPrefix","newprefix","host","port","protocol","caseInsensitive","strictMode","__assign","ParamFactory","fromSearch","UrlMatcherFactory","UrlMatcher","globalConfig","strict","decodeParams","object","UrlRouter","urlParts","compareFn","read","urlMatcher","href","absolute","isHtml5","appendBasePath","slash","cfgPort","defineProperty","enumerable","configurable","UrlRuleFactory","makeRule","_what","fromUrlMatcher","fromState","fromRegExp","_handler","details","matchPriority","optional","search","stateOrDecl","transitionTo","sticky","Number","isUrlRule","defaultRuleSortFn","getHandlerFn","cmp","prioritySort","weights","URLMATCHER","REGEXP","RAW","OTHER","typeSort","urlMatcherSort","useMatchPriority","idSort","UrlRules","_sortFn","_rules","_id","_otherwiseFn","handlerFn","_sorted","ensureSorted","sorted","stableSort","group","_group","arrOfWrapper","wrapperA","wrapperB","cmpDiff","wrapper","UrlService","newurl","best","go","applyResult","_stopListeningFn","weight","BaseLocationServices","fireAfterUpdate","_listeners","_listener","_get","_location","_history","BrowserLocationConfig","_isHtml5","_hashPrefix","hostname","getBaseHref","baseTag","getElementsByTagName","extendStatics","__extends","setPrototypeOf","__proto__","__","HashLocationService","_super","title","MemoryLocationConfig","_port","_protocol","_host","newval","MemoryLocationService","_url","PushStateLocationService","_config","_getBasePrefix","basePrefix","exactBaseHrefMatch","startsWithBase","fullUrl","replaceState","pushState","Promise","reject","deferred","keyValsToObjectR","accum","getParams","queryString","orEmptyString","beforehash","buildUrl","loc","searchObject","locationPluginFactory","serviceClass","configurationClass","configuration","_uiViews","_viewConfigs","_viewConfigFactories","_registeredUIView","_registeredUIViews","_activeViewConfigs","_onSync","normalizeUIViewTarget","rawViewName","viewAtContext","relativeViewNameSugar","anchorState","anchor","_rootContext","viewType","cfgFactory","cfgs","uiViewsByFqn","viewConfigDepth","depthCompare","depthFn","posNeg","uiViewTuples","stateDepth","matchingConfigs","matchedViewConfigs","unmatchedConfigTuples","allTuples","uiViews","available","active","vcSegments","uivSegments","negOffset","fqnToFirstSegment","uiViewContext","ARIA_DISABLE_ATTR","ngAriaModule","info","angularVersion","ariaHidden","ariaChecked","ariaReadonly","ariaDisabled","ariaRequired","ariaInvalid","ariaValue","tabindex","bindKeydown","bindRoleForClick","watchExpr","ariaAttr","nativeAriaNodeNames","negate","ariaCamelName","isNodeOneOf","boolVal","newConfig","$$watchExpr","nodeTypeArray","nodeName","$aria","shouldAttachAttr","normalizedAttr","allowNonAriaNodes","shouldAttachRole","role","shape","getShape","post","ngModel","needsTabIndex","ngAriaWatchModelValue","$modelValue","newVal","$viewValue","$isEmpty","needsAriaValuemin","needsAriaValuemax","needsAriaValuenow","$observe","$validators","required","$invalid","ngMessages","ngClick","ngKeydown","ngKeypress","ngKeyup","keyCode","which","isContentEditable","$event","readOnly","pristine","resetable","starWidth","starHeight","canelWidth","cancelHeight","rated","reset","beforeRated","beforeReset","isTouch","navigator","msMaxTouchPoints","orgValue","starPartWidth","steps","garbage","getValue","index","getStartParts","getStarOffset","ratio","isSelected","removeRating","rating","setValue","tmpValue","put","IndexController","$mdDialog","RemoteStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR","vm","toggle","up","updateStorage","cmd","layout","postMessage","onStorageError","debug","visitor","status","div_color","settings","color","text_color","textColor","text_button_color","textButtonColor","button_color","color_button","background_color","backgroundColor","client_height","documentElement","clientHeight","innerHeight","client_width","clientWidth","style","setProperty","tg","getStoredValueWithLocation","visitorStoragePromise","getItem","layoutStoragePromise","visitorValue","layoutValue","interaction","alignment","online","exceeded","maxInteractions","openedInteractions","isOnline","hideWhenOffline","createElement","appendChild","sheet","insertRule","close","confirm","querySelector","clickOutsideToClose","closingQuestion","ok","show","chatInteraction","customUpdate","closed","closeReason","$promise","download","getMessages","intid","includeAll","_map","rows","row","sender","direction","customerAlias","ContactId","agentIdentifier","UserId","agentAlias","User","alias","fullname","body","createdAt","moment","getHeaderShape","header_shape","CHAT_STATUSES","offline","defaultTitle","header_online","header_offline","addEventListener","routeRun","cursor","hide","_forIn","_isNil","routeConfig","$stateProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX","Pragma","setPrefix","waitingTemplate","onlineTemplate","offlineTemplate","chatTemplate","unmanagedTemplate","closingTemplate","ClosingController","$mdToast","errors","toast","simple","textContent","formSubmitFailureMessage","toastClass","position","stopLoading","loading","goToIfTime","form","upColor","downColor","userForm","$setPristine","$setUntouched","enableDownload","removeItem","submit","_merge","ratingType","customer","formSubmitSuccessMessage","finally","skip","apiService","$resource","paramDefaults","baseUrl","remote","chatWebsite","method","getFields","uploadAttachment","transformRequest","downloadAttachment","abandon","chatMessage","ChatController","$interval","$document","emojiArea","getMessagesInterval","getInteractionInterval","lastMessageId","clearStorage","scrollToBottomOfChat","getElementsByClassName","scrollTop","scrollHeight","handleSizeError","sendMessage","updateRootscope","interactionStarted","emojioneArea","setText","getInteraction","disposition","reply","getText","shiftKey","includeAgent","added","_find","messages","emojiOptions","watchEmbedData","fontSmiley","emoji","linkTarget","ngFlowOptions","allowDuplicateUploads","showMenu","replyMessage","$","placeholder","placeholderMessage","keyup","editor","ready","setFocus","reply_button","maxFileSizeMb","fd","FormData","AttachmentId","_values","OfflineController","$sce","fromKey","initialFields","typeField","optJsonFormData","showLeafArrayIndexes","includeNullValues","onSubmitSuccess","fields","_cloneDeep","trustAsHtml","initUploadButton","formItem","uploadItem","button","label","css","trigger","click","props","maxSizeMB","some","sizeErrMessage","removeFileItem","setupFileInput","multipleUpload","setAttribute","makeFileOptionsVisible","fileOpts","lastOpt","mapKeyOffline","_random","field","helpText","isHTML","checkHTML","cmField","uploadFields","payLoad","isFormDataPayload","isJsonPayload","payload","jsonToFormData","initialFormData","OnlineController","initVisitorForm","mapKey","disableItem","chatInteractionId","messageId","channel","variable","referer","customerIp","chatMessageError","enableCustomerWriting","UnmanagedController","note","WaitingController","getInteractionIntervalHandle","open","remoteAddress","URL","address","origin","setItem","action","storage","expectedAction","removeEventListener","stringData","warn","toTrustedFilter","constant","ngEnter","getElementById","div","startTime","sentAt","createTextNode","myWindow","write","innerHTML","focus","print","printElement","elemToPrint","$mdGestureProvider","skipClickHijack","exports","globalThis","isJsonObject","Blob","isGlobalFormDataPresent","getDefaultFormData","convertRecursively","jsonObject","formData","parentKey","propName","FileList","toISOString","mergedOptions","carry","objectToMerge","objectKey","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","h","hh","dd","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","pluralForm","plurals","pluralize","u","withoutSuffix","isFuture","f","weekdaysParseExact","hour","minute","postformat","symbolMap","preparse","numberMap","suffixes","relativeTimeWithPlural","num","forms","standalone","isFormat","day","period","w","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","mutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","translate","ll","lll","llll","output","plural","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","month","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","offset","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","now","$0","$2","isUpper","eifelerRegelAppliesToNumber","units","translateSingular","special","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","separator","days","numbersNouns","numberNoun","hundred","floor","ten","one","word","numberAsNoun","time","hm","processHoursFunction","nominative","accusative","genitive","webpackContext","req","webpackContextResolve","__webpack_require__","code","urlSanitizationWhitelist","aHrefSanitizationWhitelist","stringifyField","decimalSep","isFloat","toLocaleString","quoteStrings","txtDelim","isFinite","header","fieldSep","c","columnOrder","addByteOrderMarker","isSpecialChar","getSpecialChar","filename","charset","csv","buildCSV","getFilename","addClass","ngCsvLoadingClass","csvHeader","csvColumnOrder","csvLabel","removeClass","msSaveOrOpenBlob","msSaveBlob","createObjectURL"],"sourceRoot":""}
\ No newline at end of file
diff --git a/snippet/3.5.0/scripts/chat.js b/snippet/3.5.0/scripts/chat.js
similarity index 100%
rename from
rename to snippet/3.5.0/scripts/chat.js
similarity index 99%
rename from snippet/3.8.0/scripts/vendor-ng-embed.js.map
rename to snippet/3.5.0/scripts/vendor-ng-embed.js.map
index 289bcace9e9d002be42ec25b802bd4bb2d5cbd14..eee3e316b5ba05ee745bdcd4826f85d802233170 100644 (file)
@@ -23,6 +23,6 @@
  * https://github.com/angular/material
  * @license MIT
  * v1.2.3
- */html,body{height:100%;position:relative}body{margin:0;padding:0}[tabindex="-1"]:focus{outline:none}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:normal;background-color:inherit;text-align:left;border:none;padding:0;margin:0}select,button,textarea,input{vertical-align:baseline}input[type=reset],input[type=submit],html input[type=button],button{cursor:pointer;-webkit-appearance:button}input[type=reset][disabled],input[type=submit][disabled],html input[type=button][disabled],button[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-decoration,input[type=search]::-webkit-search-cancel-button{-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(0.4, 0, 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(0.25, 0.8, 0.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(0.25, 0.8, 0.25, 1),border .9s cubic-bezier(0.25, 0.8, 0.25, 1),width .9s cubic-bezier(0.25, 0.8, 0.25, 1),height .9s cubic-bezier(0.25, 0.8, 0.25, 1),opacity .9s cubic-bezier(0.25, 0.8, 0.25, 1),transform .9s cubic-bezier(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0px)}@media(min-width: 960px){.md-padding{padding:16px}}html[dir=rtl],html[dir=ltr],body[dir=rtl],body[dir=ltr]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}html,body{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:default;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:-0.01em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-0.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:.01em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.01em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.02em}.md-button{letter-spacing:.01em}button,select,html,textarea,input{font-family:Roboto,"Helvetica Neue",sans-serif}select,button,textarea,input{font-size:100%}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}.md-panel-inner-wrapper{position:fixed}._md-panel-offscreen{left:-9999px}._md-panel-hidden{display:none}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:relative}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(0.4, 0, 1, 1)}.md-panel._md-panel-animate-scale-out,.md-panel._md-panel-animate-fade-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:fixed;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(0.4, 0, 1, 1)}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}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:transparent;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] .md-show-clear-button button{display:block;position:absolute;right:0;top:20px;width:30px;height:30px}md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:30px}[dir=rtl] md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:0;padding-left: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 md-input-container,md-autocomplete md-autocomplete-wrap input{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:none;background:transparent;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete .md-show-clear-button 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:transparent;margin:auto 5px}md-autocomplete .md-show-clear-button 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(0.25, 0.8, 0.25, 1)}md-autocomplete .md-show-clear-button button:focus{outline:none}md-autocomplete .md-show-clear-button button:focus:after{transform:scale(1);opacity:1}md-autocomplete .md-show-clear-button button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%, -50%, 0) scale(0.9)}md-autocomplete .md-show-clear-button button md-icon path{stroke-width:0}md-autocomplete .md-show-clear-button button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete .md-show-clear-button button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete .md-show-clear-button button.ng-leave{transition:transform .15s ease-out}md-autocomplete .md-show-clear-button 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 .md-autocomplete-suggestion:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container,.md-standard-list-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);z-index:100;height:100%}.md-virtual-repeat-container.md-autocomplete-suggestions-container .highlight,.md-standard-list-container.md-autocomplete-suggestions-container .highlight{font-weight:bold}.md-standard-list-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;overflow-y:auto;padding:0}.md-virtual-repeat-container.md-not-found,.md-standard-list-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions .md-autocomplete-suggestion{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 .md-autocomplete-suggestion:focus{outline:none}.md-autocomplete-suggestions .md-autocomplete-suggestion:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast: active){md-autocomplete,.md-autocomplete-suggestions{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 400ms}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(0.25, 0.8, 0.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(0.55, 0, 0.55, 0.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:none}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:2px;box-sizing:border-box;user-select:none;outline:none;border:0;padding:0 8px;margin:6px 8px;background:transparent;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(0.25, 0.8, 0.25, 1),background-color .4s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){min-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){line-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){font-size:13px}.md-button:focus{outline:none}.md-button:hover,.md-button:focus{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:none}.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-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(0.55, 0, 0.55, 0.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-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button.md-fab[disabled]{box-shadow:none}.md-button:not([disabled]).md-raised.md-focused,.md-button:not([disabled]).md-fab.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-raised:active,.md-button:not([disabled]).md-fab:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:inherit;background-clip:padding-box;overflow:hidden;-webkit-transform:translateZ(0)}.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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 0px 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0px 0px 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0px 2px 2px 0px}@media screen and (-ms-high-contrast: active){.md-button.md-raised,.md-button.md-fab{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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-icon>svg{height:inherit;width:inherit}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>img,md-card>md-card-header img,md-card md-card-title-media 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-card-actions{margin:8px}md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}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-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}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-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[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-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[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-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-inline-form md-checkbox{margin-top:14px;margin-bottom:auto}md-checkbox{box-sizing:border-box;display:inline-block;white-space:nowrap;cursor:pointer;outline:none;user-select:none;position:relative;min-width:18px;min-height:48px}.md-dense>md-checkbox:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) md-checkbox:not(.md-dense-disabled){min-height:36px}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-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:18px;height:18px;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:18px;height:18px;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:4px;top:0px;display:table;width:6px;height:12px;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:10.8px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-checkbox .md-container{top:auto;left:auto;right:auto;margin:3px;margin-top:21px}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-top:10px;margin-bottom:auto;margin-left:36px}[dir=rtl] md-checkbox .md-label{margin-left:0;margin-right:36px}md-checkbox .md-label:empty{margin-left:24px;margin-right:0}[dir=rtl] md-checkbox .md-label:empty{margin-left:0}[dir=rtl] md-checkbox .md-label:empty{margin-right:24px}md-input-container .md-checkbox-link-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;cursor:pointer;top:-21px;margin-left:18px;margin-right:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-left:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-right:18px}.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-name,.md-contact-suggestion .md-contact-email{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}md-chips{display:flex}.md-chips{display:flex;flex-wrap:wrap;flex-grow:1;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:13px;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:28px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:28px}.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:none}.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:transparent;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;min-height:18px;min-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;flex-grow:1;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{width:100%}.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=url],.md-chips .md-chip-input-container input[type=text]{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=url]:focus,.md-chips .md-chip-input-container input[type=text]:focus{outline:none}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:transparent;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:none}.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:transparent;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-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(0.25, 0.8, 0.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-label.md-calendar-label-clickable{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:normal}.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;vertical-align:middle}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:none;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:none;background:transparent;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:-16px;top:13.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label .md-input{float:none}._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-has-triangle-icon{padding-right:18px;margin-right:-18px}[dir=rtl] ._md-datepicker-has-triangle-icon{padding-right:0;padding-left:18px}[dir=rtl] ._md-datepicker-has-triangle-icon{margin-right:auto;margin-left:-18px}.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:transparent;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(0.25, 0.8, 0.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:transparent;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(0.5, 0, 0.25, 1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:none}.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;bottom:-2.5px;transform:translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform: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-value>label,.md-datepicker-open.md-input-has-placeholder>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(0.25, 0.8, 0.25, 1);transition-delay:.125s}.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:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 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(0.25, 0.8, 0.25, 1);transform:translate(0, 0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate(0, 100%) scale(0.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:none}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-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-dialog-actions{padding-right:16px}[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}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}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-divider,.layout-gt-xs-row:not(.layout-sm-column)>md-divider,.layout-sm-row:not(.layout-sm-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-sm-row:not(.layout-md-column)>md-divider,.layout-md-row:not(.layout-md-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-md-row:not(.layout-lg-column)>md-divider,.layout-lg-row:not(.layout-lg-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>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-trigger,md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item{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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all 200ms 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:-0.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-0.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(0.55, 0, 0.55, 0.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>figure,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile-footer{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-header,md-grid-list md-grid-tile md-grid-tile-footer{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-header h3,md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-footer h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer 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 0px;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 textarea,md-input-container input[type=text],md-input-container input[type=password],md-input-container input[type=datetime],md-input-container input[type=datetime-local],md-input-container input[type=date],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week],md-input-container input[type=number],md-input-container input[type=email],md-input-container input[type=url],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=color]{-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:30px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:30px;-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 label:not(.md-no-float):not(.md-container-ignore),md-input-container .md-placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;padding-right:0;z-index:1;transform:translate3d(0, 28px, 0) scale(1);transition:transform .4s cubic-bezier(0.25, 0.8, 0.25, 1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-left:0}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-right:2px}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{transform-origin:right top}md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-input-has-value .md-placeholder{padding-left:3px;padding-right:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-left:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-right:3px}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):not(.md-input-has-placeholder) input:not(:focus){color:transparent}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-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:none;padding-top:2px;padding-bottom:1px;padding-left:0;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;transition:border-color .4s cubic-bezier(0.25, 0.8, 0.25, 1);width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{padding-left:2px}[dir=rtl] md-input-container .md-input{padding-right:0}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:none}md-input-container .md-input:invalid{outline:none;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-message-animation,md-input-container .md-char-counter{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);opacity:1;margin-top:0;padding-top:8px}md-input-container .md-input-message-animation:not(.md-char-counter),md-input-container .md-char-counter:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter: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.ng-enter-prepare{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter:not(.ng-enter-active){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(0.75);transition:transform cubic-bezier(0.25, 0.8, 0.25, 1) .4s,width cubic-bezier(0.25, 0.8, 0.25, 1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container.md-input-focused .md-input,md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}md-input-container .md-input[disabled],[disabled] md-input-container .md-input{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(0.25, 0.8, 0.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:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder{width:calc(100% - 36px);padding:0}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:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left.md-icon-right>label .md-placeholder{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:transparent;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 0px 8px 0px}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:1.2em}md-list.md-dense:not(.md-dense-disabled) md-list-item,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner{min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item::before,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner::before{content:"";min-height:40px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner md-icon:first-child{width:20px;height:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:36px;margin-top:4px;margin-bottom:4px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px;margin-top:6px;margin-bottom:6px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container .md-secondary.md-button,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container .md-secondary.md-button{margin-top:4px;margin-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container md-checkbox:not(.md-dense-disabled),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container md-checkbox:not(.md-dense-disabled){min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) 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:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px;padding-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style::before{content:"";min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style::before{content:"";min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}md-list.md-dense:not(.md-dense-disabled) .md-subheader-inner{padding-top:12px;padding-bottom:12px}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:0px 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%}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner::before{content:"";min-height:inherit;visibility:hidden;display:inline-block}md-list-item.md-no-proxy,md-list-item .md-no-style{position:relative;padding:0px 16px;flex:1 1 auto}md-list-item.md-no-proxy.md-button,md-list-item .md-no-style.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-proxy.md-button,[dir=rtl] md-list-item .md-no-style.md-button{text-align:right}md-list-item.md-no-proxy.md-button>.md-ripple-container,md-list-item .md-no-style.md-button>.md-ripple-container{border-radius:0}md-list-item.md-no-proxy:focus,md-list-item .md-no-style:focus{outline:none}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::before,md-list-item .md-list-item-inner::before{content:"";min-height:48px;visibility:hidden;display:inline-block}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:first-child:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),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:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox,md-list-item 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-list-item-inner md-checkbox.md-secondary{align-self:center}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,md-list-item 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-list-item-inner md-checkbox.md-secondary .md-label{display:none}md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item .md-list-item-inner>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-checkbox,md-list-item .md-list-item-inner>md-checkbox{width:24px;min-height:40px;margin-left:0px;margin-right:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-left:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-right:0px}md-list-item .md-secondary-container,md-list-item .md-list-item-inner .md-secondary-container{display:flex;align-items:center;position:relative;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-left:0}md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type,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{margin-right:0}[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,[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{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-checkbox,md-list-item .md-list-item-inner .md-secondary-container md-checkbox{margin:0 6px;padding:0 8px;min-height:40px}md-list-item .md-secondary-container md-checkbox:last-child,md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{width:40px;margin-right:0}[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-switch,md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-secondary-container md-switch,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item>p,md-list-item>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item .md-list-item-inner>.md-list-item-inner>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:.01em;margin:0 0 0 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:.01em;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:.01em;margin:0 0 0 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,md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list-item.md-2-line>md-icon:first-child,md-list-item.md-2-line>.md-no-style>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-icon:first-child,md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px;max-height:calc(100vh - 10px);overflow:auto}.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(0.25, 0.8, 0.25, 1);transition-duration:200ms}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:200ms;transition-delay:100ms}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.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:32px}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-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px}md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:right}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:right;margin:0 8px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:left}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-item>.md-button,md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.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:normal;border-radius:0px;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:"▼";position:absolute;top:0px;speak:none;transform:rotate(270deg) scaleY(0.45) scaleX(0.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(0.45) scaleX(0.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:none;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(0.35, 0, 0.25, 1)}.md-button._md-nav-button:focus{outline:none}md-nav-ink-bar{background-color:#000;position:absolute;bottom:0;left:0;width:100%;height:2px;transform-origin:left top;will-change:transform;transition:transform .125s cubic-bezier(0.35, 0, 0.25, 1)}md-nav-ink-bar.ng-animate{transition:none}md-nav-extra-content{min-height:48px;padding-right:12px}@keyframes indeterminate-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block;transform:scale(1, 1)}[dir=rtl] md-progress-circular{transform:scale(-1, 1)}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 1568.63ms 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;transform:scale(1, 1)}[dir=rtl] md-progress-linear{transform:scale(-1, 1)}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:0px -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(0.39, 0.575, 0.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(0.3, 1)}100%{opacity:0;transform:translateX(-50%) scale(0, 1)}}@keyframes buffer{0%{opacity:1;background-position:0px -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(0.1);animation-timing-function:linear}36.6%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.334731432, 0.124819821, 0.785843996, 1)}69.15%{transform:scaleX(0.83);animation-timing-function:cubic-bezier(0.225732004, 0, 0.233648906, 1.3709798)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.1666666667%;animation-timing-function:linear}20%{left:-105.1666666667%;animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(0.302435, 0.38135197, 0.55, 0.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.205028172, 0.057050836, 0.57660995, 0.453970841)}19.15%{transform:scaleX(0.57);animation-timing-function:cubic-bezier(0.152312994, 0.196431957, 0.648373778, 1.00431535)}44.15%{transform:scaleX(0.91);animation-timing-function:cubic-bezier(0.25775882, -0.003163357, 0.211761916, 1.38178961)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(0.15, 0, 0.5150584, 0.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(0.3103299, 0.284057684, 0.8, 0.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(0.4, 0.627034903, 0.6, 0.902025796)}100%{left:117.3888888889%}}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(0.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:focus{outline:none}md-radio-group.md-focused.ng-not-empty .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group.md-focused.ng-empty>md-radio-button:first-child .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}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-radio-button,.layout-xs-row>md-radio-button{margin-bottom:0}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-radio-button,.layout-gt-xs-row:not(.layout-sm-column)>md-radio-button,.layout-sm-row:not(.layout-sm-column)>md-radio-button{margin-bottom:0}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-sm-row:not(.layout-md-column)>md-radio-button,.layout-md-row:not(.layout-md-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-md-row:not(.layout-lg-column)>md-radio-button,.layout-lg-row:not(.layout-lg-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button{margin-bottom:0}}.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 10px 2px 6px;box-sizing:border-box;margin-top:0;margin-bottom:0}.md-inline-form md-radio-group md-radio-button .md-label{top:4px}.md-inline-form md-radio-group md-radio-button .md-container{margin-top:2px}@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(0.25, 0.8, 0.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:not([placeholder]) .md-select-placeholder span:first-child{transform:translate(-2px, -22px) scale(0.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(0.25, 0.8, 0.25, 1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transition-delay:100ms}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:250ms}.md-inline-form md-select{margin-top:20px}md-input-container>md-select,.md-inline-form md-input-container>md-select{margin-top:0px}md-input-container>md-select{order:2}md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select.ng-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}md-select[required].ng-empty.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select.ng-required.ng-empty.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:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x;padding-bottom:2px;padding-top:1px;transform:translateY(1px)}md-select:focus{outline:none}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]):focus .md-select-value{border-bottom-style:solid;border-bottom-width:2px;padding-bottom:0px}md-input-container md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px}md-input-container md-select[disabled] .md-select-value{background-position:bottom -1px left 0}md-input-container md-select .md-select-value{min-height:26px;border-bottom-width:1px;padding-bottom:1px}md-input-container md-select .md-select-value.md-select-placeholder{padding-left:0;padding-right:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-left:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-right:0}.md-select-value{display:flex;align-items:center;padding-top:2px;padding-bottom:1px;padding-left:0;padding-right:2px;border-bottom-width:1px;border-bottom-style:solid;background-color:rgba(0,0,0,0);position:relative;box-sizing:content-box;min-width:88px;min-height:26px;margin-bottom:auto;-ms-flex-item-align:start;flex-grow:1}[dir=rtl] .md-select-value{padding-left:2px}[dir=rtl] .md-select-value{padding-right:0}.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:right;width:24px;transform:translateY(-2px);font-size:1.2rem}[dir=rtl] .md-select-value .md-select-icon{align-items:flex-start}[dir=rtl] .md-select-value .md-select-icon{text-align:left}.md-select-value .md-select-icon:after{display:block;content:"▼";position:relative;top:2px;right:-4px;left:auto;speak:none;font-size:13px;transform:scaleY(0.5)}[dir=rtl] .md-select-value .md-select-icon:after{right:auto}[dir=rtl] .md-select-value .md-select-icon:after{left:-4px}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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:none}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:18px;height:18px;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:18px;height:18px;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:4px;top:0px;display:table;width:6px;height:12px;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:10.8px;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(0.25, 0.8, 0.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.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.md-closed{position:static;display:flex;transform:translate3d(0, 0, 0)}md-sidenav.md-closed.md-locked-open-add{position:static;display:flex;transform:translate3d(0%, 0, 0)}md-sidenav.md-closed.md-locked-open-add:not(.md-locked-open-add-active){transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}.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(0.7)}30%{transform:scale(1)}100%{transform:scale(0.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(0.7)}50%{transform:scale(0.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(0.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:none;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(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0.7);transition:all .4s cubic-bezier(0.25, 0.8, 0.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(0.4) translate3d(0, 67.5px, 0);transition:all .3s cubic-bezier(0.35, 0, 0.25, 1)}md-slider .md-sign:after{position:absolute;content:"";left:0px;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(0.35, 0, 0.25, 1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0px}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:bold}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(0.7);opacity:0;transition:all .35s cubic-bezier(0.35, 0, 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(0.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:none}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-track-ticks,md-slider:not([md-discrete]) .md-sign{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(0.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(0.35, 0, 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(0.35, 0, 0.25, 1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(0.35, 0, 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(0.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(0.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:bold}md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete] .md-focused .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(0.25, 0.8, 0.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:0px 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0px 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 0 0 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-swipe-left],[md-swipe-right]{touch-action:pan-y}[md-swipe-up],[md-swipe-down]{touch-action:pan-x}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:none;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:0px;margin-left:8px}md-switch.md-inverted .md-container{margin-right:initial;margin-left:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-right:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-left:initial}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}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:none;height:20px;width:20px;border-radius:50%;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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-container,md-switch:not(.md-dragging) .md-thumb{transition:all .08s linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:.05s}@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:translate(0, 0)}md-tabs-wrapper md-prev-button,md-tabs-wrapper md-next-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(0.35, 0, 0.25, 1)}md-tabs-wrapper md-prev-button:focus,md-tabs-wrapper md-next-button:focus{outline:none}md-tabs-wrapper md-prev-button.md-disabled,md-tabs-wrapper md-next-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-prev-button.ng-leave,md-tabs-wrapper md-next-button.ng-leave{transition:none}md-tabs-wrapper md-prev-button md-icon,md-tabs-wrapper md-next-button md-icon{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}[dir=rtl] md-tabs-wrapper md-prev-button,[dir=rtl] md-tabs-wrapper md-next-button{transform:rotateY(180deg) translateY(-50%)}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:translate(-50%, -50%) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;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:flex;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);position:absolute;left:0;transform:translate(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;justify-content:center}md-pagination-wrapper md-tab-item{min-width:72px}@media(min-width: 600px){md-pagination-wrapper md-tab-item{min-width:160px}}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:flex;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);overflow:auto;transform:translate(0, 0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.ng-leave,md-tab-content.md-no-transition{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;visibility:hidden}[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;visibility:hidden}[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{flex:1 0 100%;min-width:0}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 .125s cubic-bezier(0.35, 0, 0.25, 1),right .25s cubic-bezier(0.35, 0, 0.25, 1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(0.35, 0, 0.25, 1),right .125s cubic-bezier(0.35, 0, 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;transition:background-color .35s cubic-bezier(0.35, 0, 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,.md-tab:focus{box-shadow:none;outline:none}.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,md-toolbar+md-dialog-content md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 8px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-toast .md-toast-content{display:flex;flex-direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 16px;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(0deg);transition:all .4s cubic-bezier(0.25, 0.8, 0.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(0.55, 0, 0.55, 0.2)}md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content,md-toast.md-swipedown .md-toast-content{transition:all .4s cubic-bezier(0.25, 0.8, 0.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:8px}[dir=rtl] md-toast .md-button{margin-right:8px}[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(0.35, 0, 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 *:before,md-toolbar *:after{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-checkbox{margin:inherit}.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(0.35, 0, 0.25, 1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.ng-animate,.md-toolbar-tools .md-button.md-icon-button md-icon.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{display:inline-block;pointer-events:none;border-radius:4px;overflow:hidden;opacity:0;font-weight:500;font-size:14px;white-space:nowrap;text-overflow:ellipsis;height:32px;line-height:32px;padding-right:16px;padding-left:16px}.md-tooltip.md-origin-top{transform-origin:center bottom;margin-top:-24px}.md-tooltip.md-origin-right{transform-origin:left center;margin-left:24px}.md-tooltip.md-origin-bottom{transform-origin:center top;margin-top:24px}.md-tooltip.md-origin-left{transform-origin:right center;margin-left:-24px}@media(min-width: 960px){.md-tooltip{font-size:10px;height:22px;line-height:22px;padding-right:8px;padding-left:8px}.md-tooltip.md-origin-top{margin-top:-14px}.md-tooltip.md-origin-right{margin-left:14px}.md-tooltip.md-origin-bottom{margin-top:14px}.md-tooltip.md-origin-left{margin-left:-14px}}.md-tooltip.md-show-add{transform:scale(0)}.md-tooltip.md-show{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-duration:150ms;transform:scale(1);opacity:.9}.md-tooltip.md-hide{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transform:scale(0);opacity:0}.md-truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.md-truncate.md-clip{text-overflow:clip}.md-truncate.flex{width:0}.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:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0px 1px 5px 0px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0px 1px 8px 0px rgba(0,0,0,.2),0px 3px 4px 0px rgba(0,0,0,.14),0px 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 5px 8px 0px rgba(0,0,0,.14),0px 1px 14px 0px rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0px 4px 5px -2px rgba(0,0,0,.2),0px 7px 10px 1px rgba(0,0,0,.14),0px 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0px 5px 6px -3px rgba(0,0,0,.2),0px 9px 12px 1px rgba(0,0,0,.14),0px 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0px 6px 6px -3px rgba(0,0,0,.2),0px 10px 14px 1px rgba(0,0,0,.14),0px 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0px 6px 7px -4px rgba(0,0,0,.2),0px 11px 15px 1px rgba(0,0,0,.14),0px 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 12px 17px 2px rgba(0,0,0,.14),0px 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0px 7px 9px -4px rgba(0,0,0,.2),0px 14px 21px 2px rgba(0,0,0,.14),0px 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0px 8px 9px -5px rgba(0,0,0,.2),0px 15px 22px 2px rgba(0,0,0,.14),0px 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0px 8px 10px -5px rgba(0,0,0,.2),0px 16px 24px 2px rgba(0,0,0,.14),0px 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0px 8px 11px -5px rgba(0,0,0,.2),0px 17px 26px 2px rgba(0,0,0,.14),0px 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0px 9px 11px -5px rgba(0,0,0,.2),0px 18px 28px 2px rgba(0,0,0,.14),0px 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0px 9px 12px -6px rgba(0,0,0,.2),0px 19px 29px 2px rgba(0,0,0,.14),0px 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 20px 31px 3px rgba(0,0,0,.14),0px 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 21px 33px 3px rgba(0,0,0,.14),0px 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0px 10px 14px -6px rgba(0,0,0,.2),0px 22px 35px 3px rgba(0,0,0,.14),0px 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0px 11px 14px -7px rgba(0,0,0,.2),0px 23px 36px 3px rgba(0,0,0,.14),0px 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0px 11px 15px -7px rgba(0,0,0,.2),0px 24px 38px 3px rgba(0,0,0,.14),0px 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],[ng-cloak],[data-ng-cloak],[x-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}.offset-0,.flex-offset-0,.layout-margin .flex-offset-0,.layout-margin .offset-0{margin-left:0}[dir=rtl] .offset-0,[dir=rtl] .flex-offset-0,[dir=rtl] .layout-margin .flex-offset-0,[dir=rtl] .layout-margin .offset-0{margin-left:auto;margin-right:0}.offset-5,.flex-offset-5,.layout-margin .flex-offset-5,.layout-margin .offset-5{margin-left:5%}[dir=rtl] .offset-5,[dir=rtl] .flex-offset-5,[dir=rtl] .layout-margin .flex-offset-5,[dir=rtl] .layout-margin .offset-5{margin-left:auto;margin-right:5%}.offset-10,.flex-offset-10,.layout-margin .flex-offset-10,.layout-margin .offset-10{margin-left:10%}[dir=rtl] .offset-10,[dir=rtl] .flex-offset-10,[dir=rtl] .layout-margin .flex-offset-10,[dir=rtl] .layout-margin .offset-10{margin-left:auto;margin-right:10%}.offset-15,.flex-offset-15,.layout-margin .flex-offset-15,.layout-margin .offset-15{margin-left:15%}[dir=rtl] .offset-15,[dir=rtl] .flex-offset-15,[dir=rtl] .layout-margin .flex-offset-15,[dir=rtl] .layout-margin .offset-15{margin-left:auto;margin-right:15%}.offset-20,.flex-offset-20,.layout-margin .flex-offset-20,.layout-margin .offset-20{margin-left:20%}[dir=rtl] .offset-20,[dir=rtl] .flex-offset-20,[dir=rtl] .layout-margin .flex-offset-20,[dir=rtl] .layout-margin .offset-20{margin-left:auto;margin-right:20%}.offset-25,.flex-offset-25,.layout-margin .flex-offset-25,.layout-margin .offset-25{margin-left:25%}[dir=rtl] .offset-25,[dir=rtl] .flex-offset-25,[dir=rtl] .layout-margin .flex-offset-25,[dir=rtl] .layout-margin .offset-25{margin-left:auto;margin-right:25%}.offset-30,.flex-offset-30,.layout-margin .flex-offset-30,.layout-margin .offset-30{margin-left:30%}[dir=rtl] .offset-30,[dir=rtl] .flex-offset-30,[dir=rtl] .layout-margin .flex-offset-30,[dir=rtl] .layout-margin .offset-30{margin-left:auto;margin-right:30%}.offset-35,.flex-offset-35,.layout-margin .flex-offset-35,.layout-margin .offset-35{margin-left:35%}[dir=rtl] .offset-35,[dir=rtl] .flex-offset-35,[dir=rtl] .layout-margin .flex-offset-35,[dir=rtl] .layout-margin .offset-35{margin-left:auto;margin-right:35%}.offset-40,.flex-offset-40,.layout-margin .flex-offset-40,.layout-margin .offset-40{margin-left:40%}[dir=rtl] .offset-40,[dir=rtl] .flex-offset-40,[dir=rtl] .layout-margin .flex-offset-40,[dir=rtl] .layout-margin .offset-40{margin-left:auto;margin-right:40%}.offset-45,.flex-offset-45,.layout-margin .flex-offset-45,.layout-margin .offset-45{margin-left:45%}[dir=rtl] .offset-45,[dir=rtl] .flex-offset-45,[dir=rtl] .layout-margin .flex-offset-45,[dir=rtl] .layout-margin .offset-45{margin-left:auto;margin-right:45%}.offset-50,.flex-offset-50,.layout-margin .flex-offset-50,.layout-margin .offset-50{margin-left:50%}[dir=rtl] .offset-50,[dir=rtl] .flex-offset-50,[dir=rtl] .layout-margin .flex-offset-50,[dir=rtl] .layout-margin .offset-50{margin-left:auto;margin-right:50%}.offset-55,.flex-offset-55,.layout-margin .flex-offset-55,.layout-margin .offset-55{margin-left:55%}[dir=rtl] .offset-55,[dir=rtl] .flex-offset-55,[dir=rtl] .layout-margin .flex-offset-55,[dir=rtl] .layout-margin .offset-55{margin-left:auto;margin-right:55%}.offset-60,.flex-offset-60,.layout-margin .flex-offset-60,.layout-margin .offset-60{margin-left:60%}[dir=rtl] .offset-60,[dir=rtl] .flex-offset-60,[dir=rtl] .layout-margin .flex-offset-60,[dir=rtl] .layout-margin .offset-60{margin-left:auto;margin-right:60%}.offset-65,.flex-offset-65,.layout-margin .flex-offset-65,.layout-margin .offset-65{margin-left:65%}[dir=rtl] .offset-65,[dir=rtl] .flex-offset-65,[dir=rtl] .layout-margin .flex-offset-65,[dir=rtl] .layout-margin .offset-65{margin-left:auto;margin-right:65%}.offset-70,.flex-offset-70,.layout-margin .flex-offset-70,.layout-margin .offset-70{margin-left:70%}[dir=rtl] .offset-70,[dir=rtl] .flex-offset-70,[dir=rtl] .layout-margin .flex-offset-70,[dir=rtl] .layout-margin .offset-70{margin-left:auto;margin-right:70%}.offset-75,.flex-offset-75,.layout-margin .flex-offset-75,.layout-margin .offset-75{margin-left:75%}[dir=rtl] .offset-75,[dir=rtl] .flex-offset-75,[dir=rtl] .layout-margin .flex-offset-75,[dir=rtl] .layout-margin .offset-75{margin-left:auto;margin-right:75%}.offset-80,.flex-offset-80,.layout-margin .flex-offset-80,.layout-margin .offset-80{margin-left:80%}[dir=rtl] .offset-80,[dir=rtl] .flex-offset-80,[dir=rtl] .layout-margin .flex-offset-80,[dir=rtl] .layout-margin .offset-80{margin-left:auto;margin-right:80%}.offset-85,.flex-offset-85,.layout-margin .flex-offset-85,.layout-margin .offset-85{margin-left:85%}[dir=rtl] .offset-85,[dir=rtl] .flex-offset-85,[dir=rtl] .layout-margin .flex-offset-85,[dir=rtl] .layout-margin .offset-85{margin-left:auto;margin-right:85%}.offset-90,.flex-offset-90,.layout-margin .flex-offset-90,.layout-margin .offset-90{margin-left:90%}[dir=rtl] .offset-90,[dir=rtl] .flex-offset-90,[dir=rtl] .layout-margin .flex-offset-90,[dir=rtl] .layout-margin .offset-90{margin-left:auto;margin-right:90%}.offset-95,.flex-offset-95,.layout-margin .flex-offset-95,.layout-margin .offset-95{margin-left:95%}[dir=rtl] .offset-95,[dir=rtl] .flex-offset-95,[dir=rtl] .layout-margin .flex-offset-95,[dir=rtl] .layout-margin .offset-95{margin-left:auto;margin-right:95%}.offset-33,.flex-offset-33,.layout-margin .flex-offset-33,.layout-margin .offset-33{margin-left:33.3333333333%}.offset-66,.flex-offset-66,.layout-margin .flex-offset-66,.layout-margin .offset-66{margin-left:66.6666666667%}[dir=rtl] .offset-66,[dir=rtl] .flex-offset-66,[dir=rtl] .layout-margin .flex-offset-66,[dir=rtl] .layout-margin .offset-66{margin-left:auto;margin-right:66.6666666667%}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-start,.layout-align-center-center,.layout-align-center-end,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-start,.layout-align-end-center,.layout-align-end-end,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-start,.layout-align-space-around-end,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-start,.layout-align-space-between-end,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-start-start,.layout-align-center-start,.layout-align-end-start,.layout-align-space-between-start,.layout-align-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-start-center,.layout-align-center-center,.layout-align-end-center,.layout-align-space-between-center,.layout-align-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-start-center>*,.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-between-center>*,.layout-align-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-start-end,.layout-align-center-end,.layout-align-end-end,.layout-align-space-between-end,.layout-align-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-start-stretch,.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-between-stretch,.layout-align-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 100%;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}.flex-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.flex-66{flex:1 1 100%;max-width:66.66%;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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 100%;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-md,.layout-padding>*,.layout-padding-gt-sm>*,.layout-padding-md>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding-gt-lg>*,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg,.layout-padding>.flex-lg,.layout-padding>.flex-gt-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-md,.layout-margin>*,.layout-margin-gt-sm>*,.layout-margin-md>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin-gt-lg>*,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg,.layout-margin>.flex-gt-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}.offset-xs-0,.flex-offset-xs-0,.layout-margin .flex-offset-xs-0,.layout-margin .offset-xs-0{margin-left:0}[dir=rtl] .offset-xs-0,[dir=rtl] .flex-offset-xs-0,[dir=rtl] .layout-margin .flex-offset-xs-0,[dir=rtl] .layout-margin .offset-xs-0{margin-left:auto;margin-right:0}.offset-xs-5,.flex-offset-xs-5,.layout-margin .flex-offset-xs-5,.layout-margin .offset-xs-5{margin-left:5%}[dir=rtl] .offset-xs-5,[dir=rtl] .flex-offset-xs-5,[dir=rtl] .layout-margin .flex-offset-xs-5,[dir=rtl] .layout-margin .offset-xs-5{margin-left:auto;margin-right:5%}.offset-xs-10,.flex-offset-xs-10,.layout-margin .flex-offset-xs-10,.layout-margin .offset-xs-10{margin-left:10%}[dir=rtl] .offset-xs-10,[dir=rtl] .flex-offset-xs-10,[dir=rtl] .layout-margin .flex-offset-xs-10,[dir=rtl] .layout-margin .offset-xs-10{margin-left:auto;margin-right:10%}.offset-xs-15,.flex-offset-xs-15,.layout-margin .flex-offset-xs-15,.layout-margin .offset-xs-15{margin-left:15%}[dir=rtl] .offset-xs-15,[dir=rtl] .flex-offset-xs-15,[dir=rtl] .layout-margin .flex-offset-xs-15,[dir=rtl] .layout-margin .offset-xs-15{margin-left:auto;margin-right:15%}.offset-xs-20,.flex-offset-xs-20,.layout-margin .flex-offset-xs-20,.layout-margin .offset-xs-20{margin-left:20%}[dir=rtl] .offset-xs-20,[dir=rtl] .flex-offset-xs-20,[dir=rtl] .layout-margin .flex-offset-xs-20,[dir=rtl] .layout-margin .offset-xs-20{margin-left:auto;margin-right:20%}.offset-xs-25,.flex-offset-xs-25,.layout-margin .flex-offset-xs-25,.layout-margin .offset-xs-25{margin-left:25%}[dir=rtl] .offset-xs-25,[dir=rtl] .flex-offset-xs-25,[dir=rtl] .layout-margin .flex-offset-xs-25,[dir=rtl] .layout-margin .offset-xs-25{margin-left:auto;margin-right:25%}.offset-xs-30,.flex-offset-xs-30,.layout-margin .flex-offset-xs-30,.layout-margin .offset-xs-30{margin-left:30%}[dir=rtl] .offset-xs-30,[dir=rtl] .flex-offset-xs-30,[dir=rtl] .layout-margin .flex-offset-xs-30,[dir=rtl] .layout-margin .offset-xs-30{margin-left:auto;margin-right:30%}.offset-xs-35,.flex-offset-xs-35,.layout-margin .flex-offset-xs-35,.layout-margin .offset-xs-35{margin-left:35%}[dir=rtl] .offset-xs-35,[dir=rtl] .flex-offset-xs-35,[dir=rtl] .layout-margin .flex-offset-xs-35,[dir=rtl] .layout-margin .offset-xs-35{margin-left:auto;margin-right:35%}.offset-xs-40,.flex-offset-xs-40,.layout-margin .flex-offset-xs-40,.layout-margin .offset-xs-40{margin-left:40%}[dir=rtl] .offset-xs-40,[dir=rtl] .flex-offset-xs-40,[dir=rtl] .layout-margin .flex-offset-xs-40,[dir=rtl] .layout-margin .offset-xs-40{margin-left:auto;margin-right:40%}.offset-xs-45,.flex-offset-xs-45,.layout-margin .flex-offset-xs-45,.layout-margin .offset-xs-45{margin-left:45%}[dir=rtl] .offset-xs-45,[dir=rtl] .flex-offset-xs-45,[dir=rtl] .layout-margin .flex-offset-xs-45,[dir=rtl] .layout-margin .offset-xs-45{margin-left:auto;margin-right:45%}.offset-xs-50,.flex-offset-xs-50,.layout-margin .flex-offset-xs-50,.layout-margin .offset-xs-50{margin-left:50%}[dir=rtl] .offset-xs-50,[dir=rtl] .flex-offset-xs-50,[dir=rtl] .layout-margin .flex-offset-xs-50,[dir=rtl] .layout-margin .offset-xs-50{margin-left:auto;margin-right:50%}.offset-xs-55,.flex-offset-xs-55,.layout-margin .flex-offset-xs-55,.layout-margin .offset-xs-55{margin-left:55%}[dir=rtl] .offset-xs-55,[dir=rtl] .flex-offset-xs-55,[dir=rtl] .layout-margin .flex-offset-xs-55,[dir=rtl] .layout-margin .offset-xs-55{margin-left:auto;margin-right:55%}.offset-xs-60,.flex-offset-xs-60,.layout-margin .flex-offset-xs-60,.layout-margin .offset-xs-60{margin-left:60%}[dir=rtl] .offset-xs-60,[dir=rtl] .flex-offset-xs-60,[dir=rtl] .layout-margin .flex-offset-xs-60,[dir=rtl] .layout-margin .offset-xs-60{margin-left:auto;margin-right:60%}.offset-xs-65,.flex-offset-xs-65,.layout-margin .flex-offset-xs-65,.layout-margin .offset-xs-65{margin-left:65%}[dir=rtl] .offset-xs-65,[dir=rtl] .flex-offset-xs-65,[dir=rtl] .layout-margin .flex-offset-xs-65,[dir=rtl] .layout-margin .offset-xs-65{margin-left:auto;margin-right:65%}.offset-xs-70,.flex-offset-xs-70,.layout-margin .flex-offset-xs-70,.layout-margin .offset-xs-70{margin-left:70%}[dir=rtl] .offset-xs-70,[dir=rtl] .flex-offset-xs-70,[dir=rtl] .layout-margin .flex-offset-xs-70,[dir=rtl] .layout-margin .offset-xs-70{margin-left:auto;margin-right:70%}.offset-xs-75,.flex-offset-xs-75,.layout-margin .flex-offset-xs-75,.layout-margin .offset-xs-75{margin-left:75%}[dir=rtl] .offset-xs-75,[dir=rtl] .flex-offset-xs-75,[dir=rtl] .layout-margin .flex-offset-xs-75,[dir=rtl] .layout-margin .offset-xs-75{margin-left:auto;margin-right:75%}.offset-xs-80,.flex-offset-xs-80,.layout-margin .flex-offset-xs-80,.layout-margin .offset-xs-80{margin-left:80%}[dir=rtl] .offset-xs-80,[dir=rtl] .flex-offset-xs-80,[dir=rtl] .layout-margin .flex-offset-xs-80,[dir=rtl] .layout-margin .offset-xs-80{margin-left:auto;margin-right:80%}.offset-xs-85,.flex-offset-xs-85,.layout-margin .flex-offset-xs-85,.layout-margin .offset-xs-85{margin-left:85%}[dir=rtl] .offset-xs-85,[dir=rtl] .flex-offset-xs-85,[dir=rtl] .layout-margin .flex-offset-xs-85,[dir=rtl] .layout-margin .offset-xs-85{margin-left:auto;margin-right:85%}.offset-xs-90,.flex-offset-xs-90,.layout-margin .flex-offset-xs-90,.layout-margin .offset-xs-90{margin-left:90%}[dir=rtl] .offset-xs-90,[dir=rtl] .flex-offset-xs-90,[dir=rtl] .layout-margin .flex-offset-xs-90,[dir=rtl] .layout-margin .offset-xs-90{margin-left:auto;margin-right:90%}.offset-xs-95,.flex-offset-xs-95,.layout-margin .flex-offset-xs-95,.layout-margin .offset-xs-95{margin-left:95%}[dir=rtl] .offset-xs-95,[dir=rtl] .flex-offset-xs-95,[dir=rtl] .layout-margin .flex-offset-xs-95,[dir=rtl] .layout-margin .offset-xs-95{margin-left:auto;margin-right:95%}.offset-xs-33,.flex-offset-xs-33,.layout-margin .flex-offset-xs-33,.layout-margin .offset-xs-33{margin-left:33.3333333333%}.offset-xs-66,.flex-offset-xs-66,.layout-margin .flex-offset-xs-66,.layout-margin .offset-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-xs-66,[dir=rtl] .flex-offset-xs-66,[dir=rtl] .layout-margin .flex-offset-xs-66,[dir=rtl] .layout-margin .offset-xs-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-start,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-start,.layout-align-xs-end-center,.layout-align-xs-end-end,.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-start,.layout-align-xs-space-around-end,.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-start,.layout-align-xs-space-between-end,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-start-start,.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-between-start,.layout-align-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-start-center,.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-between-center,.layout-align-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-start-center>*,.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-start-end,.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-between-end,.layout-align-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-start-stretch,.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 100%;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}.offset-gt-xs-0,.flex-offset-gt-xs-0,.layout-margin .flex-offset-gt-xs-0,.layout-margin .offset-gt-xs-0{margin-left:0}[dir=rtl] .offset-gt-xs-0,[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .offset-gt-xs-0{margin-left:auto;margin-right:0}.offset-gt-xs-5,.flex-offset-gt-xs-5,.layout-margin .flex-offset-gt-xs-5,.layout-margin .offset-gt-xs-5{margin-left:5%}[dir=rtl] .offset-gt-xs-5,[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .offset-gt-xs-5{margin-left:auto;margin-right:5%}.offset-gt-xs-10,.flex-offset-gt-xs-10,.layout-margin .flex-offset-gt-xs-10,.layout-margin .offset-gt-xs-10{margin-left:10%}[dir=rtl] .offset-gt-xs-10,[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .offset-gt-xs-10{margin-left:auto;margin-right:10%}.offset-gt-xs-15,.flex-offset-gt-xs-15,.layout-margin .flex-offset-gt-xs-15,.layout-margin .offset-gt-xs-15{margin-left:15%}[dir=rtl] .offset-gt-xs-15,[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .offset-gt-xs-15{margin-left:auto;margin-right:15%}.offset-gt-xs-20,.flex-offset-gt-xs-20,.layout-margin .flex-offset-gt-xs-20,.layout-margin .offset-gt-xs-20{margin-left:20%}[dir=rtl] .offset-gt-xs-20,[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .offset-gt-xs-20{margin-left:auto;margin-right:20%}.offset-gt-xs-25,.flex-offset-gt-xs-25,.layout-margin .flex-offset-gt-xs-25,.layout-margin .offset-gt-xs-25{margin-left:25%}[dir=rtl] .offset-gt-xs-25,[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .offset-gt-xs-25{margin-left:auto;margin-right:25%}.offset-gt-xs-30,.flex-offset-gt-xs-30,.layout-margin .flex-offset-gt-xs-30,.layout-margin .offset-gt-xs-30{margin-left:30%}[dir=rtl] .offset-gt-xs-30,[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .offset-gt-xs-30{margin-left:auto;margin-right:30%}.offset-gt-xs-35,.flex-offset-gt-xs-35,.layout-margin .flex-offset-gt-xs-35,.layout-margin .offset-gt-xs-35{margin-left:35%}[dir=rtl] .offset-gt-xs-35,[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .offset-gt-xs-35{margin-left:auto;margin-right:35%}.offset-gt-xs-40,.flex-offset-gt-xs-40,.layout-margin .flex-offset-gt-xs-40,.layout-margin .offset-gt-xs-40{margin-left:40%}[dir=rtl] .offset-gt-xs-40,[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .offset-gt-xs-40{margin-left:auto;margin-right:40%}.offset-gt-xs-45,.flex-offset-gt-xs-45,.layout-margin .flex-offset-gt-xs-45,.layout-margin .offset-gt-xs-45{margin-left:45%}[dir=rtl] .offset-gt-xs-45,[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .offset-gt-xs-45{margin-left:auto;margin-right:45%}.offset-gt-xs-50,.flex-offset-gt-xs-50,.layout-margin .flex-offset-gt-xs-50,.layout-margin .offset-gt-xs-50{margin-left:50%}[dir=rtl] .offset-gt-xs-50,[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .offset-gt-xs-50{margin-left:auto;margin-right:50%}.offset-gt-xs-55,.flex-offset-gt-xs-55,.layout-margin .flex-offset-gt-xs-55,.layout-margin .offset-gt-xs-55{margin-left:55%}[dir=rtl] .offset-gt-xs-55,[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .offset-gt-xs-55{margin-left:auto;margin-right:55%}.offset-gt-xs-60,.flex-offset-gt-xs-60,.layout-margin .flex-offset-gt-xs-60,.layout-margin .offset-gt-xs-60{margin-left:60%}[dir=rtl] .offset-gt-xs-60,[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .offset-gt-xs-60{margin-left:auto;margin-right:60%}.offset-gt-xs-65,.flex-offset-gt-xs-65,.layout-margin .flex-offset-gt-xs-65,.layout-margin .offset-gt-xs-65{margin-left:65%}[dir=rtl] .offset-gt-xs-65,[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .offset-gt-xs-65{margin-left:auto;margin-right:65%}.offset-gt-xs-70,.flex-offset-gt-xs-70,.layout-margin .flex-offset-gt-xs-70,.layout-margin .offset-gt-xs-70{margin-left:70%}[dir=rtl] .offset-gt-xs-70,[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .offset-gt-xs-70{margin-left:auto;margin-right:70%}.offset-gt-xs-75,.flex-offset-gt-xs-75,.layout-margin .flex-offset-gt-xs-75,.layout-margin .offset-gt-xs-75{margin-left:75%}[dir=rtl] .offset-gt-xs-75,[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .offset-gt-xs-75{margin-left:auto;margin-right:75%}.offset-gt-xs-80,.flex-offset-gt-xs-80,.layout-margin .flex-offset-gt-xs-80,.layout-margin .offset-gt-xs-80{margin-left:80%}[dir=rtl] .offset-gt-xs-80,[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .offset-gt-xs-80{margin-left:auto;margin-right:80%}.offset-gt-xs-85,.flex-offset-gt-xs-85,.layout-margin .flex-offset-gt-xs-85,.layout-margin .offset-gt-xs-85{margin-left:85%}[dir=rtl] .offset-gt-xs-85,[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .offset-gt-xs-85{margin-left:auto;margin-right:85%}.offset-gt-xs-90,.flex-offset-gt-xs-90,.layout-margin .flex-offset-gt-xs-90,.layout-margin .offset-gt-xs-90{margin-left:90%}[dir=rtl] .offset-gt-xs-90,[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .offset-gt-xs-90{margin-left:auto;margin-right:90%}.offset-gt-xs-95,.flex-offset-gt-xs-95,.layout-margin .flex-offset-gt-xs-95,.layout-margin .offset-gt-xs-95{margin-left:95%}[dir=rtl] .offset-gt-xs-95,[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .offset-gt-xs-95{margin-left:auto;margin-right:95%}.offset-gt-xs-33,.flex-offset-gt-xs-33,.layout-margin .flex-offset-gt-xs-33,.layout-margin .offset-gt-xs-33{margin-left:33.3333333333%}.offset-gt-xs-66,.flex-offset-gt-xs-66,.layout-margin .flex-offset-gt-xs-66,.layout-margin .offset-gt-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-xs-66,[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .offset-gt-xs-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.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-start,.layout-align-gt-xs-space-around-end,.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-start,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-start-start,.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-start-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-start-center>*,.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-start-end,.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-start-stretch,.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 100%;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:not(.show-gt-xs):not(.show-sm):not(.show),.hide-gt-xs: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}.offset-sm-0,.flex-offset-sm-0,.layout-margin .flex-offset-sm-0,.layout-margin .offset-sm-0{margin-left:0}[dir=rtl] .offset-sm-0,[dir=rtl] .flex-offset-sm-0,[dir=rtl] .layout-margin .flex-offset-sm-0,[dir=rtl] .layout-margin .offset-sm-0{margin-left:auto;margin-right:0}.offset-sm-5,.flex-offset-sm-5,.layout-margin .flex-offset-sm-5,.layout-margin .offset-sm-5{margin-left:5%}[dir=rtl] .offset-sm-5,[dir=rtl] .flex-offset-sm-5,[dir=rtl] .layout-margin .flex-offset-sm-5,[dir=rtl] .layout-margin .offset-sm-5{margin-left:auto;margin-right:5%}.offset-sm-10,.flex-offset-sm-10,.layout-margin .flex-offset-sm-10,.layout-margin .offset-sm-10{margin-left:10%}[dir=rtl] .offset-sm-10,[dir=rtl] .flex-offset-sm-10,[dir=rtl] .layout-margin .flex-offset-sm-10,[dir=rtl] .layout-margin .offset-sm-10{margin-left:auto;margin-right:10%}.offset-sm-15,.flex-offset-sm-15,.layout-margin .flex-offset-sm-15,.layout-margin .offset-sm-15{margin-left:15%}[dir=rtl] .offset-sm-15,[dir=rtl] .flex-offset-sm-15,[dir=rtl] .layout-margin .flex-offset-sm-15,[dir=rtl] .layout-margin .offset-sm-15{margin-left:auto;margin-right:15%}.offset-sm-20,.flex-offset-sm-20,.layout-margin .flex-offset-sm-20,.layout-margin .offset-sm-20{margin-left:20%}[dir=rtl] .offset-sm-20,[dir=rtl] .flex-offset-sm-20,[dir=rtl] .layout-margin .flex-offset-sm-20,[dir=rtl] .layout-margin .offset-sm-20{margin-left:auto;margin-right:20%}.offset-sm-25,.flex-offset-sm-25,.layout-margin .flex-offset-sm-25,.layout-margin .offset-sm-25{margin-left:25%}[dir=rtl] .offset-sm-25,[dir=rtl] .flex-offset-sm-25,[dir=rtl] .layout-margin .flex-offset-sm-25,[dir=rtl] .layout-margin .offset-sm-25{margin-left:auto;margin-right:25%}.offset-sm-30,.flex-offset-sm-30,.layout-margin .flex-offset-sm-30,.layout-margin .offset-sm-30{margin-left:30%}[dir=rtl] .offset-sm-30,[dir=rtl] .flex-offset-sm-30,[dir=rtl] .layout-margin .flex-offset-sm-30,[dir=rtl] .layout-margin .offset-sm-30{margin-left:auto;margin-right:30%}.offset-sm-35,.flex-offset-sm-35,.layout-margin .flex-offset-sm-35,.layout-margin .offset-sm-35{margin-left:35%}[dir=rtl] .offset-sm-35,[dir=rtl] .flex-offset-sm-35,[dir=rtl] .layout-margin .flex-offset-sm-35,[dir=rtl] .layout-margin .offset-sm-35{margin-left:auto;margin-right:35%}.offset-sm-40,.flex-offset-sm-40,.layout-margin .flex-offset-sm-40,.layout-margin .offset-sm-40{margin-left:40%}[dir=rtl] .offset-sm-40,[dir=rtl] .flex-offset-sm-40,[dir=rtl] .layout-margin .flex-offset-sm-40,[dir=rtl] .layout-margin .offset-sm-40{margin-left:auto;margin-right:40%}.offset-sm-45,.flex-offset-sm-45,.layout-margin .flex-offset-sm-45,.layout-margin .offset-sm-45{margin-left:45%}[dir=rtl] .offset-sm-45,[dir=rtl] .flex-offset-sm-45,[dir=rtl] .layout-margin .flex-offset-sm-45,[dir=rtl] .layout-margin .offset-sm-45{margin-left:auto;margin-right:45%}.offset-sm-50,.flex-offset-sm-50,.layout-margin .flex-offset-sm-50,.layout-margin .offset-sm-50{margin-left:50%}[dir=rtl] .offset-sm-50,[dir=rtl] .flex-offset-sm-50,[dir=rtl] .layout-margin .flex-offset-sm-50,[dir=rtl] .layout-margin .offset-sm-50{margin-left:auto;margin-right:50%}.offset-sm-55,.flex-offset-sm-55,.layout-margin .flex-offset-sm-55,.layout-margin .offset-sm-55{margin-left:55%}[dir=rtl] .offset-sm-55,[dir=rtl] .flex-offset-sm-55,[dir=rtl] .layout-margin .flex-offset-sm-55,[dir=rtl] .layout-margin .offset-sm-55{margin-left:auto;margin-right:55%}.offset-sm-60,.flex-offset-sm-60,.layout-margin .flex-offset-sm-60,.layout-margin .offset-sm-60{margin-left:60%}[dir=rtl] .offset-sm-60,[dir=rtl] .flex-offset-sm-60,[dir=rtl] .layout-margin .flex-offset-sm-60,[dir=rtl] .layout-margin .offset-sm-60{margin-left:auto;margin-right:60%}.offset-sm-65,.flex-offset-sm-65,.layout-margin .flex-offset-sm-65,.layout-margin .offset-sm-65{margin-left:65%}[dir=rtl] .offset-sm-65,[dir=rtl] .flex-offset-sm-65,[dir=rtl] .layout-margin .flex-offset-sm-65,[dir=rtl] .layout-margin .offset-sm-65{margin-left:auto;margin-right:65%}.offset-sm-70,.flex-offset-sm-70,.layout-margin .flex-offset-sm-70,.layout-margin .offset-sm-70{margin-left:70%}[dir=rtl] .offset-sm-70,[dir=rtl] .flex-offset-sm-70,[dir=rtl] .layout-margin .flex-offset-sm-70,[dir=rtl] .layout-margin .offset-sm-70{margin-left:auto;margin-right:70%}.offset-sm-75,.flex-offset-sm-75,.layout-margin .flex-offset-sm-75,.layout-margin .offset-sm-75{margin-left:75%}[dir=rtl] .offset-sm-75,[dir=rtl] .flex-offset-sm-75,[dir=rtl] .layout-margin .flex-offset-sm-75,[dir=rtl] .layout-margin .offset-sm-75{margin-left:auto;margin-right:75%}.offset-sm-80,.flex-offset-sm-80,.layout-margin .flex-offset-sm-80,.layout-margin .offset-sm-80{margin-left:80%}[dir=rtl] .offset-sm-80,[dir=rtl] .flex-offset-sm-80,[dir=rtl] .layout-margin .flex-offset-sm-80,[dir=rtl] .layout-margin .offset-sm-80{margin-left:auto;margin-right:80%}.offset-sm-85,.flex-offset-sm-85,.layout-margin .flex-offset-sm-85,.layout-margin .offset-sm-85{margin-left:85%}[dir=rtl] .offset-sm-85,[dir=rtl] .flex-offset-sm-85,[dir=rtl] .layout-margin .flex-offset-sm-85,[dir=rtl] .layout-margin .offset-sm-85{margin-left:auto;margin-right:85%}.offset-sm-90,.flex-offset-sm-90,.layout-margin .flex-offset-sm-90,.layout-margin .offset-sm-90{margin-left:90%}[dir=rtl] .offset-sm-90,[dir=rtl] .flex-offset-sm-90,[dir=rtl] .layout-margin .flex-offset-sm-90,[dir=rtl] .layout-margin .offset-sm-90{margin-left:auto;margin-right:90%}.offset-sm-95,.flex-offset-sm-95,.layout-margin .flex-offset-sm-95,.layout-margin .offset-sm-95{margin-left:95%}[dir=rtl] .offset-sm-95,[dir=rtl] .flex-offset-sm-95,[dir=rtl] .layout-margin .flex-offset-sm-95,[dir=rtl] .layout-margin .offset-sm-95{margin-left:auto;margin-right:95%}.offset-sm-33,.flex-offset-sm-33,.layout-margin .flex-offset-sm-33,.layout-margin .offset-sm-33{margin-left:33.3333333333%}.offset-sm-66,.flex-offset-sm-66,.layout-margin .flex-offset-sm-66,.layout-margin .offset-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-sm-66,[dir=rtl] .flex-offset-sm-66,[dir=rtl] .layout-margin .flex-offset-sm-66,[dir=rtl] .layout-margin .offset-sm-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-start,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-start,.layout-align-sm-end-center,.layout-align-sm-end-end,.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-start,.layout-align-sm-space-around-end,.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-start,.layout-align-sm-space-between-end,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-start-start,.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-between-start,.layout-align-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-start-center,.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-between-center,.layout-align-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-start-center>*,.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-start-end,.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-between-end,.layout-align-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-start-stretch,.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 100%;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}.offset-gt-sm-0,.flex-offset-gt-sm-0,.layout-margin .flex-offset-gt-sm-0,.layout-margin .offset-gt-sm-0{margin-left:0}[dir=rtl] .offset-gt-sm-0,[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .offset-gt-sm-0{margin-left:auto;margin-right:0}.offset-gt-sm-5,.flex-offset-gt-sm-5,.layout-margin .flex-offset-gt-sm-5,.layout-margin .offset-gt-sm-5{margin-left:5%}[dir=rtl] .offset-gt-sm-5,[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .offset-gt-sm-5{margin-left:auto;margin-right:5%}.offset-gt-sm-10,.flex-offset-gt-sm-10,.layout-margin .flex-offset-gt-sm-10,.layout-margin .offset-gt-sm-10{margin-left:10%}[dir=rtl] .offset-gt-sm-10,[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .offset-gt-sm-10{margin-left:auto;margin-right:10%}.offset-gt-sm-15,.flex-offset-gt-sm-15,.layout-margin .flex-offset-gt-sm-15,.layout-margin .offset-gt-sm-15{margin-left:15%}[dir=rtl] .offset-gt-sm-15,[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .offset-gt-sm-15{margin-left:auto;margin-right:15%}.offset-gt-sm-20,.flex-offset-gt-sm-20,.layout-margin .flex-offset-gt-sm-20,.layout-margin .offset-gt-sm-20{margin-left:20%}[dir=rtl] .offset-gt-sm-20,[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .offset-gt-sm-20{margin-left:auto;margin-right:20%}.offset-gt-sm-25,.flex-offset-gt-sm-25,.layout-margin .flex-offset-gt-sm-25,.layout-margin .offset-gt-sm-25{margin-left:25%}[dir=rtl] .offset-gt-sm-25,[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .offset-gt-sm-25{margin-left:auto;margin-right:25%}.offset-gt-sm-30,.flex-offset-gt-sm-30,.layout-margin .flex-offset-gt-sm-30,.layout-margin .offset-gt-sm-30{margin-left:30%}[dir=rtl] .offset-gt-sm-30,[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .offset-gt-sm-30{margin-left:auto;margin-right:30%}.offset-gt-sm-35,.flex-offset-gt-sm-35,.layout-margin .flex-offset-gt-sm-35,.layout-margin .offset-gt-sm-35{margin-left:35%}[dir=rtl] .offset-gt-sm-35,[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .offset-gt-sm-35{margin-left:auto;margin-right:35%}.offset-gt-sm-40,.flex-offset-gt-sm-40,.layout-margin .flex-offset-gt-sm-40,.layout-margin .offset-gt-sm-40{margin-left:40%}[dir=rtl] .offset-gt-sm-40,[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .offset-gt-sm-40{margin-left:auto;margin-right:40%}.offset-gt-sm-45,.flex-offset-gt-sm-45,.layout-margin .flex-offset-gt-sm-45,.layout-margin .offset-gt-sm-45{margin-left:45%}[dir=rtl] .offset-gt-sm-45,[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .offset-gt-sm-45{margin-left:auto;margin-right:45%}.offset-gt-sm-50,.flex-offset-gt-sm-50,.layout-margin .flex-offset-gt-sm-50,.layout-margin .offset-gt-sm-50{margin-left:50%}[dir=rtl] .offset-gt-sm-50,[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .offset-gt-sm-50{margin-left:auto;margin-right:50%}.offset-gt-sm-55,.flex-offset-gt-sm-55,.layout-margin .flex-offset-gt-sm-55,.layout-margin .offset-gt-sm-55{margin-left:55%}[dir=rtl] .offset-gt-sm-55,[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .offset-gt-sm-55{margin-left:auto;margin-right:55%}.offset-gt-sm-60,.flex-offset-gt-sm-60,.layout-margin .flex-offset-gt-sm-60,.layout-margin .offset-gt-sm-60{margin-left:60%}[dir=rtl] .offset-gt-sm-60,[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .offset-gt-sm-60{margin-left:auto;margin-right:60%}.offset-gt-sm-65,.flex-offset-gt-sm-65,.layout-margin .flex-offset-gt-sm-65,.layout-margin .offset-gt-sm-65{margin-left:65%}[dir=rtl] .offset-gt-sm-65,[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .offset-gt-sm-65{margin-left:auto;margin-right:65%}.offset-gt-sm-70,.flex-offset-gt-sm-70,.layout-margin .flex-offset-gt-sm-70,.layout-margin .offset-gt-sm-70{margin-left:70%}[dir=rtl] .offset-gt-sm-70,[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .offset-gt-sm-70{margin-left:auto;margin-right:70%}.offset-gt-sm-75,.flex-offset-gt-sm-75,.layout-margin .flex-offset-gt-sm-75,.layout-margin .offset-gt-sm-75{margin-left:75%}[dir=rtl] .offset-gt-sm-75,[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .offset-gt-sm-75{margin-left:auto;margin-right:75%}.offset-gt-sm-80,.flex-offset-gt-sm-80,.layout-margin .flex-offset-gt-sm-80,.layout-margin .offset-gt-sm-80{margin-left:80%}[dir=rtl] .offset-gt-sm-80,[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .offset-gt-sm-80{margin-left:auto;margin-right:80%}.offset-gt-sm-85,.flex-offset-gt-sm-85,.layout-margin .flex-offset-gt-sm-85,.layout-margin .offset-gt-sm-85{margin-left:85%}[dir=rtl] .offset-gt-sm-85,[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .offset-gt-sm-85{margin-left:auto;margin-right:85%}.offset-gt-sm-90,.flex-offset-gt-sm-90,.layout-margin .flex-offset-gt-sm-90,.layout-margin .offset-gt-sm-90{margin-left:90%}[dir=rtl] .offset-gt-sm-90,[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .offset-gt-sm-90{margin-left:auto;margin-right:90%}.offset-gt-sm-95,.flex-offset-gt-sm-95,.layout-margin .flex-offset-gt-sm-95,.layout-margin .offset-gt-sm-95{margin-left:95%}[dir=rtl] .offset-gt-sm-95,[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .offset-gt-sm-95{margin-left:auto;margin-right:95%}.offset-gt-sm-33,.flex-offset-gt-sm-33,.layout-margin .flex-offset-gt-sm-33,.layout-margin .offset-gt-sm-33{margin-left:33.3333333333%}.offset-gt-sm-66,.flex-offset-gt-sm-66,.layout-margin .flex-offset-gt-sm-66,.layout-margin .offset-gt-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-sm-66,[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .offset-gt-sm-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.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-start,.layout-align-gt-sm-space-around-end,.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-start,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-start-start,.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-start-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-start-center>*,.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-start-end,.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-start-stretch,.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 100%;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: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-gt-sm: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}.offset-md-0,.flex-offset-md-0,.layout-margin .flex-offset-md-0,.layout-margin .offset-md-0{margin-left:0}[dir=rtl] .offset-md-0,[dir=rtl] .flex-offset-md-0,[dir=rtl] .layout-margin .flex-offset-md-0,[dir=rtl] .layout-margin .offset-md-0{margin-left:auto;margin-right:0}.offset-md-5,.flex-offset-md-5,.layout-margin .flex-offset-md-5,.layout-margin .offset-md-5{margin-left:5%}[dir=rtl] .offset-md-5,[dir=rtl] .flex-offset-md-5,[dir=rtl] .layout-margin .flex-offset-md-5,[dir=rtl] .layout-margin .offset-md-5{margin-left:auto;margin-right:5%}.offset-md-10,.flex-offset-md-10,.layout-margin .flex-offset-md-10,.layout-margin .offset-md-10{margin-left:10%}[dir=rtl] .offset-md-10,[dir=rtl] .flex-offset-md-10,[dir=rtl] .layout-margin .flex-offset-md-10,[dir=rtl] .layout-margin .offset-md-10{margin-left:auto;margin-right:10%}.offset-md-15,.flex-offset-md-15,.layout-margin .flex-offset-md-15,.layout-margin .offset-md-15{margin-left:15%}[dir=rtl] .offset-md-15,[dir=rtl] .flex-offset-md-15,[dir=rtl] .layout-margin .flex-offset-md-15,[dir=rtl] .layout-margin .offset-md-15{margin-left:auto;margin-right:15%}.offset-md-20,.flex-offset-md-20,.layout-margin .flex-offset-md-20,.layout-margin .offset-md-20{margin-left:20%}[dir=rtl] .offset-md-20,[dir=rtl] .flex-offset-md-20,[dir=rtl] .layout-margin .flex-offset-md-20,[dir=rtl] .layout-margin .offset-md-20{margin-left:auto;margin-right:20%}.offset-md-25,.flex-offset-md-25,.layout-margin .flex-offset-md-25,.layout-margin .offset-md-25{margin-left:25%}[dir=rtl] .offset-md-25,[dir=rtl] .flex-offset-md-25,[dir=rtl] .layout-margin .flex-offset-md-25,[dir=rtl] .layout-margin .offset-md-25{margin-left:auto;margin-right:25%}.offset-md-30,.flex-offset-md-30,.layout-margin .flex-offset-md-30,.layout-margin .offset-md-30{margin-left:30%}[dir=rtl] .offset-md-30,[dir=rtl] .flex-offset-md-30,[dir=rtl] .layout-margin .flex-offset-md-30,[dir=rtl] .layout-margin .offset-md-30{margin-left:auto;margin-right:30%}.offset-md-35,.flex-offset-md-35,.layout-margin .flex-offset-md-35,.layout-margin .offset-md-35{margin-left:35%}[dir=rtl] .offset-md-35,[dir=rtl] .flex-offset-md-35,[dir=rtl] .layout-margin .flex-offset-md-35,[dir=rtl] .layout-margin .offset-md-35{margin-left:auto;margin-right:35%}.offset-md-40,.flex-offset-md-40,.layout-margin .flex-offset-md-40,.layout-margin .offset-md-40{margin-left:40%}[dir=rtl] .offset-md-40,[dir=rtl] .flex-offset-md-40,[dir=rtl] .layout-margin .flex-offset-md-40,[dir=rtl] .layout-margin .offset-md-40{margin-left:auto;margin-right:40%}.offset-md-45,.flex-offset-md-45,.layout-margin .flex-offset-md-45,.layout-margin .offset-md-45{margin-left:45%}[dir=rtl] .offset-md-45,[dir=rtl] .flex-offset-md-45,[dir=rtl] .layout-margin .flex-offset-md-45,[dir=rtl] .layout-margin .offset-md-45{margin-left:auto;margin-right:45%}.offset-md-50,.flex-offset-md-50,.layout-margin .flex-offset-md-50,.layout-margin .offset-md-50{margin-left:50%}[dir=rtl] .offset-md-50,[dir=rtl] .flex-offset-md-50,[dir=rtl] .layout-margin .flex-offset-md-50,[dir=rtl] .layout-margin .offset-md-50{margin-left:auto;margin-right:50%}.offset-md-55,.flex-offset-md-55,.layout-margin .flex-offset-md-55,.layout-margin .offset-md-55{margin-left:55%}[dir=rtl] .offset-md-55,[dir=rtl] .flex-offset-md-55,[dir=rtl] .layout-margin .flex-offset-md-55,[dir=rtl] .layout-margin .offset-md-55{margin-left:auto;margin-right:55%}.offset-md-60,.flex-offset-md-60,.layout-margin .flex-offset-md-60,.layout-margin .offset-md-60{margin-left:60%}[dir=rtl] .offset-md-60,[dir=rtl] .flex-offset-md-60,[dir=rtl] .layout-margin .flex-offset-md-60,[dir=rtl] .layout-margin .offset-md-60{margin-left:auto;margin-right:60%}.offset-md-65,.flex-offset-md-65,.layout-margin .flex-offset-md-65,.layout-margin .offset-md-65{margin-left:65%}[dir=rtl] .offset-md-65,[dir=rtl] .flex-offset-md-65,[dir=rtl] .layout-margin .flex-offset-md-65,[dir=rtl] .layout-margin .offset-md-65{margin-left:auto;margin-right:65%}.offset-md-70,.flex-offset-md-70,.layout-margin .flex-offset-md-70,.layout-margin .offset-md-70{margin-left:70%}[dir=rtl] .offset-md-70,[dir=rtl] .flex-offset-md-70,[dir=rtl] .layout-margin .flex-offset-md-70,[dir=rtl] .layout-margin .offset-md-70{margin-left:auto;margin-right:70%}.offset-md-75,.flex-offset-md-75,.layout-margin .flex-offset-md-75,.layout-margin .offset-md-75{margin-left:75%}[dir=rtl] .offset-md-75,[dir=rtl] .flex-offset-md-75,[dir=rtl] .layout-margin .flex-offset-md-75,[dir=rtl] .layout-margin .offset-md-75{margin-left:auto;margin-right:75%}.offset-md-80,.flex-offset-md-80,.layout-margin .flex-offset-md-80,.layout-margin .offset-md-80{margin-left:80%}[dir=rtl] .offset-md-80,[dir=rtl] .flex-offset-md-80,[dir=rtl] .layout-margin .flex-offset-md-80,[dir=rtl] .layout-margin .offset-md-80{margin-left:auto;margin-right:80%}.offset-md-85,.flex-offset-md-85,.layout-margin .flex-offset-md-85,.layout-margin .offset-md-85{margin-left:85%}[dir=rtl] .offset-md-85,[dir=rtl] .flex-offset-md-85,[dir=rtl] .layout-margin .flex-offset-md-85,[dir=rtl] .layout-margin .offset-md-85{margin-left:auto;margin-right:85%}.offset-md-90,.flex-offset-md-90,.layout-margin .flex-offset-md-90,.layout-margin .offset-md-90{margin-left:90%}[dir=rtl] .offset-md-90,[dir=rtl] .flex-offset-md-90,[dir=rtl] .layout-margin .flex-offset-md-90,[dir=rtl] .layout-margin .offset-md-90{margin-left:auto;margin-right:90%}.offset-md-95,.flex-offset-md-95,.layout-margin .flex-offset-md-95,.layout-margin .offset-md-95{margin-left:95%}[dir=rtl] .offset-md-95,[dir=rtl] .flex-offset-md-95,[dir=rtl] .layout-margin .flex-offset-md-95,[dir=rtl] .layout-margin .offset-md-95{margin-left:auto;margin-right:95%}.offset-md-33,.flex-offset-md-33,.layout-margin .flex-offset-md-33,.layout-margin .offset-md-33{margin-left:33.3333333333%}.offset-md-66,.flex-offset-md-66,.layout-margin .flex-offset-md-66,.layout-margin .offset-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-md-66,[dir=rtl] .flex-offset-md-66,[dir=rtl] .layout-margin .flex-offset-md-66,[dir=rtl] .layout-margin .offset-md-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-start,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-start,.layout-align-md-end-center,.layout-align-md-end-end,.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-start,.layout-align-md-space-around-end,.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-start,.layout-align-md-space-between-end,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-start-start,.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-between-start,.layout-align-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-md-start-center,.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-between-center,.layout-align-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-start-center>*,.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-between-center>*,.layout-align-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-start-end,.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-between-end,.layout-align-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-md-start-stretch,.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-between-stretch,.layout-align-md-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 100%;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}.offset-gt-md-0,.flex-offset-gt-md-0,.layout-margin .flex-offset-gt-md-0,.layout-margin .offset-gt-md-0{margin-left:0}[dir=rtl] .offset-gt-md-0,[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .layout-margin .flex-offset-gt-md-0,[dir=rtl] .layout-margin .offset-gt-md-0{margin-left:auto;margin-right:0}.offset-gt-md-5,.flex-offset-gt-md-5,.layout-margin .flex-offset-gt-md-5,.layout-margin .offset-gt-md-5{margin-left:5%}[dir=rtl] .offset-gt-md-5,[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .layout-margin .flex-offset-gt-md-5,[dir=rtl] .layout-margin .offset-gt-md-5{margin-left:auto;margin-right:5%}.offset-gt-md-10,.flex-offset-gt-md-10,.layout-margin .flex-offset-gt-md-10,.layout-margin .offset-gt-md-10{margin-left:10%}[dir=rtl] .offset-gt-md-10,[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .layout-margin .flex-offset-gt-md-10,[dir=rtl] .layout-margin .offset-gt-md-10{margin-left:auto;margin-right:10%}.offset-gt-md-15,.flex-offset-gt-md-15,.layout-margin .flex-offset-gt-md-15,.layout-margin .offset-gt-md-15{margin-left:15%}[dir=rtl] .offset-gt-md-15,[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .layout-margin .flex-offset-gt-md-15,[dir=rtl] .layout-margin .offset-gt-md-15{margin-left:auto;margin-right:15%}.offset-gt-md-20,.flex-offset-gt-md-20,.layout-margin .flex-offset-gt-md-20,.layout-margin .offset-gt-md-20{margin-left:20%}[dir=rtl] .offset-gt-md-20,[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .layout-margin .flex-offset-gt-md-20,[dir=rtl] .layout-margin .offset-gt-md-20{margin-left:auto;margin-right:20%}.offset-gt-md-25,.flex-offset-gt-md-25,.layout-margin .flex-offset-gt-md-25,.layout-margin .offset-gt-md-25{margin-left:25%}[dir=rtl] .offset-gt-md-25,[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .layout-margin .flex-offset-gt-md-25,[dir=rtl] .layout-margin .offset-gt-md-25{margin-left:auto;margin-right:25%}.offset-gt-md-30,.flex-offset-gt-md-30,.layout-margin .flex-offset-gt-md-30,.layout-margin .offset-gt-md-30{margin-left:30%}[dir=rtl] .offset-gt-md-30,[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .layout-margin .flex-offset-gt-md-30,[dir=rtl] .layout-margin .offset-gt-md-30{margin-left:auto;margin-right:30%}.offset-gt-md-35,.flex-offset-gt-md-35,.layout-margin .flex-offset-gt-md-35,.layout-margin .offset-gt-md-35{margin-left:35%}[dir=rtl] .offset-gt-md-35,[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .layout-margin .flex-offset-gt-md-35,[dir=rtl] .layout-margin .offset-gt-md-35{margin-left:auto;margin-right:35%}.offset-gt-md-40,.flex-offset-gt-md-40,.layout-margin .flex-offset-gt-md-40,.layout-margin .offset-gt-md-40{margin-left:40%}[dir=rtl] .offset-gt-md-40,[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .layout-margin .flex-offset-gt-md-40,[dir=rtl] .layout-margin .offset-gt-md-40{margin-left:auto;margin-right:40%}.offset-gt-md-45,.flex-offset-gt-md-45,.layout-margin .flex-offset-gt-md-45,.layout-margin .offset-gt-md-45{margin-left:45%}[dir=rtl] .offset-gt-md-45,[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .layout-margin .flex-offset-gt-md-45,[dir=rtl] .layout-margin .offset-gt-md-45{margin-left:auto;margin-right:45%}.offset-gt-md-50,.flex-offset-gt-md-50,.layout-margin .flex-offset-gt-md-50,.layout-margin .offset-gt-md-50{margin-left:50%}[dir=rtl] .offset-gt-md-50,[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .layout-margin .flex-offset-gt-md-50,[dir=rtl] .layout-margin .offset-gt-md-50{margin-left:auto;margin-right:50%}.offset-gt-md-55,.flex-offset-gt-md-55,.layout-margin .flex-offset-gt-md-55,.layout-margin .offset-gt-md-55{margin-left:55%}[dir=rtl] .offset-gt-md-55,[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .layout-margin .flex-offset-gt-md-55,[dir=rtl] .layout-margin .offset-gt-md-55{margin-left:auto;margin-right:55%}.offset-gt-md-60,.flex-offset-gt-md-60,.layout-margin .flex-offset-gt-md-60,.layout-margin .offset-gt-md-60{margin-left:60%}[dir=rtl] .offset-gt-md-60,[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .layout-margin .flex-offset-gt-md-60,[dir=rtl] .layout-margin .offset-gt-md-60{margin-left:auto;margin-right:60%}.offset-gt-md-65,.flex-offset-gt-md-65,.layout-margin .flex-offset-gt-md-65,.layout-margin .offset-gt-md-65{margin-left:65%}[dir=rtl] .offset-gt-md-65,[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .layout-margin .flex-offset-gt-md-65,[dir=rtl] .layout-margin .offset-gt-md-65{margin-left:auto;margin-right:65%}.offset-gt-md-70,.flex-offset-gt-md-70,.layout-margin .flex-offset-gt-md-70,.layout-margin .offset-gt-md-70{margin-left:70%}[dir=rtl] .offset-gt-md-70,[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .layout-margin .flex-offset-gt-md-70,[dir=rtl] .layout-margin .offset-gt-md-70{margin-left:auto;margin-right:70%}.offset-gt-md-75,.flex-offset-gt-md-75,.layout-margin .flex-offset-gt-md-75,.layout-margin .offset-gt-md-75{margin-left:75%}[dir=rtl] .offset-gt-md-75,[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .layout-margin .flex-offset-gt-md-75,[dir=rtl] .layout-margin .offset-gt-md-75{margin-left:auto;margin-right:75%}.offset-gt-md-80,.flex-offset-gt-md-80,.layout-margin .flex-offset-gt-md-80,.layout-margin .offset-gt-md-80{margin-left:80%}[dir=rtl] .offset-gt-md-80,[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .layout-margin .flex-offset-gt-md-80,[dir=rtl] .layout-margin .offset-gt-md-80{margin-left:auto;margin-right:80%}.offset-gt-md-85,.flex-offset-gt-md-85,.layout-margin .flex-offset-gt-md-85,.layout-margin .offset-gt-md-85{margin-left:85%}[dir=rtl] .offset-gt-md-85,[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .layout-margin .flex-offset-gt-md-85,[dir=rtl] .layout-margin .offset-gt-md-85{margin-left:auto;margin-right:85%}.offset-gt-md-90,.flex-offset-gt-md-90,.layout-margin .flex-offset-gt-md-90,.layout-margin .offset-gt-md-90{margin-left:90%}[dir=rtl] .offset-gt-md-90,[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .layout-margin .flex-offset-gt-md-90,[dir=rtl] .layout-margin .offset-gt-md-90{margin-left:auto;margin-right:90%}.offset-gt-md-95,.flex-offset-gt-md-95,.layout-margin .flex-offset-gt-md-95,.layout-margin .offset-gt-md-95{margin-left:95%}[dir=rtl] .offset-gt-md-95,[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .layout-margin .flex-offset-gt-md-95,[dir=rtl] .layout-margin .offset-gt-md-95{margin-left:auto;margin-right:95%}.offset-gt-md-33,.flex-offset-gt-md-33,.layout-margin .flex-offset-gt-md-33,.layout-margin .offset-gt-md-33{margin-left:33.3333333333%}.offset-gt-md-66,.flex-offset-gt-md-66,.layout-margin .flex-offset-gt-md-66,.layout-margin .offset-gt-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-md-66,[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .layout-margin .flex-offset-gt-md-66,[dir=rtl] .layout-margin .offset-gt-md-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-start,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.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-start,.layout-align-gt-md-space-around-end,.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-start,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-start-start,.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-start-center,.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-start-center>*,.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-start-end,.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-start-stretch,.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 100%;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: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-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-md: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}.offset-lg-0,.flex-offset-lg-0,.layout-margin .flex-offset-lg-0,.layout-margin .offset-lg-0{margin-left:0}[dir=rtl] .offset-lg-0,[dir=rtl] .flex-offset-lg-0,[dir=rtl] .layout-margin .flex-offset-lg-0,[dir=rtl] .layout-margin .offset-lg-0{margin-left:auto;margin-right:0}.offset-lg-5,.flex-offset-lg-5,.layout-margin .flex-offset-lg-5,.layout-margin .offset-lg-5{margin-left:5%}[dir=rtl] .offset-lg-5,[dir=rtl] .flex-offset-lg-5,[dir=rtl] .layout-margin .flex-offset-lg-5,[dir=rtl] .layout-margin .offset-lg-5{margin-left:auto;margin-right:5%}.offset-lg-10,.flex-offset-lg-10,.layout-margin .flex-offset-lg-10,.layout-margin .offset-lg-10{margin-left:10%}[dir=rtl] .offset-lg-10,[dir=rtl] .flex-offset-lg-10,[dir=rtl] .layout-margin .flex-offset-lg-10,[dir=rtl] .layout-margin .offset-lg-10{margin-left:auto;margin-right:10%}.offset-lg-15,.flex-offset-lg-15,.layout-margin .flex-offset-lg-15,.layout-margin .offset-lg-15{margin-left:15%}[dir=rtl] .offset-lg-15,[dir=rtl] .flex-offset-lg-15,[dir=rtl] .layout-margin .flex-offset-lg-15,[dir=rtl] .layout-margin .offset-lg-15{margin-left:auto;margin-right:15%}.offset-lg-20,.flex-offset-lg-20,.layout-margin .flex-offset-lg-20,.layout-margin .offset-lg-20{margin-left:20%}[dir=rtl] .offset-lg-20,[dir=rtl] .flex-offset-lg-20,[dir=rtl] .layout-margin .flex-offset-lg-20,[dir=rtl] .layout-margin .offset-lg-20{margin-left:auto;margin-right:20%}.offset-lg-25,.flex-offset-lg-25,.layout-margin .flex-offset-lg-25,.layout-margin .offset-lg-25{margin-left:25%}[dir=rtl] .offset-lg-25,[dir=rtl] .flex-offset-lg-25,[dir=rtl] .layout-margin .flex-offset-lg-25,[dir=rtl] .layout-margin .offset-lg-25{margin-left:auto;margin-right:25%}.offset-lg-30,.flex-offset-lg-30,.layout-margin .flex-offset-lg-30,.layout-margin .offset-lg-30{margin-left:30%}[dir=rtl] .offset-lg-30,[dir=rtl] .flex-offset-lg-30,[dir=rtl] .layout-margin .flex-offset-lg-30,[dir=rtl] .layout-margin .offset-lg-30{margin-left:auto;margin-right:30%}.offset-lg-35,.flex-offset-lg-35,.layout-margin .flex-offset-lg-35,.layout-margin .offset-lg-35{margin-left:35%}[dir=rtl] .offset-lg-35,[dir=rtl] .flex-offset-lg-35,[dir=rtl] .layout-margin .flex-offset-lg-35,[dir=rtl] .layout-margin .offset-lg-35{margin-left:auto;margin-right:35%}.offset-lg-40,.flex-offset-lg-40,.layout-margin .flex-offset-lg-40,.layout-margin .offset-lg-40{margin-left:40%}[dir=rtl] .offset-lg-40,[dir=rtl] .flex-offset-lg-40,[dir=rtl] .layout-margin .flex-offset-lg-40,[dir=rtl] .layout-margin .offset-lg-40{margin-left:auto;margin-right:40%}.offset-lg-45,.flex-offset-lg-45,.layout-margin .flex-offset-lg-45,.layout-margin .offset-lg-45{margin-left:45%}[dir=rtl] .offset-lg-45,[dir=rtl] .flex-offset-lg-45,[dir=rtl] .layout-margin .flex-offset-lg-45,[dir=rtl] .layout-margin .offset-lg-45{margin-left:auto;margin-right:45%}.offset-lg-50,.flex-offset-lg-50,.layout-margin .flex-offset-lg-50,.layout-margin .offset-lg-50{margin-left:50%}[dir=rtl] .offset-lg-50,[dir=rtl] .flex-offset-lg-50,[dir=rtl] .layout-margin .flex-offset-lg-50,[dir=rtl] .layout-margin .offset-lg-50{margin-left:auto;margin-right:50%}.offset-lg-55,.flex-offset-lg-55,.layout-margin .flex-offset-lg-55,.layout-margin .offset-lg-55{margin-left:55%}[dir=rtl] .offset-lg-55,[dir=rtl] .flex-offset-lg-55,[dir=rtl] .layout-margin .flex-offset-lg-55,[dir=rtl] .layout-margin .offset-lg-55{margin-left:auto;margin-right:55%}.offset-lg-60,.flex-offset-lg-60,.layout-margin .flex-offset-lg-60,.layout-margin .offset-lg-60{margin-left:60%}[dir=rtl] .offset-lg-60,[dir=rtl] .flex-offset-lg-60,[dir=rtl] .layout-margin .flex-offset-lg-60,[dir=rtl] .layout-margin .offset-lg-60{margin-left:auto;margin-right:60%}.offset-lg-65,.flex-offset-lg-65,.layout-margin .flex-offset-lg-65,.layout-margin .offset-lg-65{margin-left:65%}[dir=rtl] .offset-lg-65,[dir=rtl] .flex-offset-lg-65,[dir=rtl] .layout-margin .flex-offset-lg-65,[dir=rtl] .layout-margin .offset-lg-65{margin-left:auto;margin-right:65%}.offset-lg-70,.flex-offset-lg-70,.layout-margin .flex-offset-lg-70,.layout-margin .offset-lg-70{margin-left:70%}[dir=rtl] .offset-lg-70,[dir=rtl] .flex-offset-lg-70,[dir=rtl] .layout-margin .flex-offset-lg-70,[dir=rtl] .layout-margin .offset-lg-70{margin-left:auto;margin-right:70%}.offset-lg-75,.flex-offset-lg-75,.layout-margin .flex-offset-lg-75,.layout-margin .offset-lg-75{margin-left:75%}[dir=rtl] .offset-lg-75,[dir=rtl] .flex-offset-lg-75,[dir=rtl] .layout-margin .flex-offset-lg-75,[dir=rtl] .layout-margin .offset-lg-75{margin-left:auto;margin-right:75%}.offset-lg-80,.flex-offset-lg-80,.layout-margin .flex-offset-lg-80,.layout-margin .offset-lg-80{margin-left:80%}[dir=rtl] .offset-lg-80,[dir=rtl] .flex-offset-lg-80,[dir=rtl] .layout-margin .flex-offset-lg-80,[dir=rtl] .layout-margin .offset-lg-80{margin-left:auto;margin-right:80%}.offset-lg-85,.flex-offset-lg-85,.layout-margin .flex-offset-lg-85,.layout-margin .offset-lg-85{margin-left:85%}[dir=rtl] .offset-lg-85,[dir=rtl] .flex-offset-lg-85,[dir=rtl] .layout-margin .flex-offset-lg-85,[dir=rtl] .layout-margin .offset-lg-85{margin-left:auto;margin-right:85%}.offset-lg-90,.flex-offset-lg-90,.layout-margin .flex-offset-lg-90,.layout-margin .offset-lg-90{margin-left:90%}[dir=rtl] .offset-lg-90,[dir=rtl] .flex-offset-lg-90,[dir=rtl] .layout-margin .flex-offset-lg-90,[dir=rtl] .layout-margin .offset-lg-90{margin-left:auto;margin-right:90%}.offset-lg-95,.flex-offset-lg-95,.layout-margin .flex-offset-lg-95,.layout-margin .offset-lg-95{margin-left:95%}[dir=rtl] .offset-lg-95,[dir=rtl] .flex-offset-lg-95,[dir=rtl] .layout-margin .flex-offset-lg-95,[dir=rtl] .layout-margin .offset-lg-95{margin-left:auto;margin-right:95%}.offset-lg-33,.flex-offset-lg-33,.layout-margin .flex-offset-lg-33,.layout-margin .offset-lg-33{margin-left:33.3333333333%}.offset-lg-66,.flex-offset-lg-66,.layout-margin .flex-offset-lg-66,.layout-margin .offset-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-lg-66,[dir=rtl] .flex-offset-lg-66,[dir=rtl] .layout-margin .flex-offset-lg-66,[dir=rtl] .layout-margin .offset-lg-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-start,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-start,.layout-align-lg-end-center,.layout-align-lg-end-end,.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-start,.layout-align-lg-space-around-end,.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-start,.layout-align-lg-space-between-end,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-start-start,.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-between-start,.layout-align-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-start-center,.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-between-center,.layout-align-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-start-center>*,.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-start-end,.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-between-end,.layout-align-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-start-stretch,.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 100%;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}.offset-gt-lg-0,.flex-offset-gt-lg-0,.layout-margin .flex-offset-gt-lg-0,.layout-margin .offset-gt-lg-0{margin-left:0}[dir=rtl] .offset-gt-lg-0,[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .offset-gt-lg-0{margin-left:auto;margin-right:0}.offset-gt-lg-5,.flex-offset-gt-lg-5,.layout-margin .flex-offset-gt-lg-5,.layout-margin .offset-gt-lg-5{margin-left:5%}[dir=rtl] .offset-gt-lg-5,[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .offset-gt-lg-5{margin-left:auto;margin-right:5%}.offset-gt-lg-10,.flex-offset-gt-lg-10,.layout-margin .flex-offset-gt-lg-10,.layout-margin .offset-gt-lg-10{margin-left:10%}[dir=rtl] .offset-gt-lg-10,[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .offset-gt-lg-10{margin-left:auto;margin-right:10%}.offset-gt-lg-15,.flex-offset-gt-lg-15,.layout-margin .flex-offset-gt-lg-15,.layout-margin .offset-gt-lg-15{margin-left:15%}[dir=rtl] .offset-gt-lg-15,[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .offset-gt-lg-15{margin-left:auto;margin-right:15%}.offset-gt-lg-20,.flex-offset-gt-lg-20,.layout-margin .flex-offset-gt-lg-20,.layout-margin .offset-gt-lg-20{margin-left:20%}[dir=rtl] .offset-gt-lg-20,[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .offset-gt-lg-20{margin-left:auto;margin-right:20%}.offset-gt-lg-25,.flex-offset-gt-lg-25,.layout-margin .flex-offset-gt-lg-25,.layout-margin .offset-gt-lg-25{margin-left:25%}[dir=rtl] .offset-gt-lg-25,[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .offset-gt-lg-25{margin-left:auto;margin-right:25%}.offset-gt-lg-30,.flex-offset-gt-lg-30,.layout-margin .flex-offset-gt-lg-30,.layout-margin .offset-gt-lg-30{margin-left:30%}[dir=rtl] .offset-gt-lg-30,[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .offset-gt-lg-30{margin-left:auto;margin-right:30%}.offset-gt-lg-35,.flex-offset-gt-lg-35,.layout-margin .flex-offset-gt-lg-35,.layout-margin .offset-gt-lg-35{margin-left:35%}[dir=rtl] .offset-gt-lg-35,[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .offset-gt-lg-35{margin-left:auto;margin-right:35%}.offset-gt-lg-40,.flex-offset-gt-lg-40,.layout-margin .flex-offset-gt-lg-40,.layout-margin .offset-gt-lg-40{margin-left:40%}[dir=rtl] .offset-gt-lg-40,[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .offset-gt-lg-40{margin-left:auto;margin-right:40%}.offset-gt-lg-45,.flex-offset-gt-lg-45,.layout-margin .flex-offset-gt-lg-45,.layout-margin .offset-gt-lg-45{margin-left:45%}[dir=rtl] .offset-gt-lg-45,[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .offset-gt-lg-45{margin-left:auto;margin-right:45%}.offset-gt-lg-50,.flex-offset-gt-lg-50,.layout-margin .flex-offset-gt-lg-50,.layout-margin .offset-gt-lg-50{margin-left:50%}[dir=rtl] .offset-gt-lg-50,[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .offset-gt-lg-50{margin-left:auto;margin-right:50%}.offset-gt-lg-55,.flex-offset-gt-lg-55,.layout-margin .flex-offset-gt-lg-55,.layout-margin .offset-gt-lg-55{margin-left:55%}[dir=rtl] .offset-gt-lg-55,[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .offset-gt-lg-55{margin-left:auto;margin-right:55%}.offset-gt-lg-60,.flex-offset-gt-lg-60,.layout-margin .flex-offset-gt-lg-60,.layout-margin .offset-gt-lg-60{margin-left:60%}[dir=rtl] .offset-gt-lg-60,[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .offset-gt-lg-60{margin-left:auto;margin-right:60%}.offset-gt-lg-65,.flex-offset-gt-lg-65,.layout-margin .flex-offset-gt-lg-65,.layout-margin .offset-gt-lg-65{margin-left:65%}[dir=rtl] .offset-gt-lg-65,[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .offset-gt-lg-65{margin-left:auto;margin-right:65%}.offset-gt-lg-70,.flex-offset-gt-lg-70,.layout-margin .flex-offset-gt-lg-70,.layout-margin .offset-gt-lg-70{margin-left:70%}[dir=rtl] .offset-gt-lg-70,[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .offset-gt-lg-70{margin-left:auto;margin-right:70%}.offset-gt-lg-75,.flex-offset-gt-lg-75,.layout-margin .flex-offset-gt-lg-75,.layout-margin .offset-gt-lg-75{margin-left:75%}[dir=rtl] .offset-gt-lg-75,[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .offset-gt-lg-75{margin-left:auto;margin-right:75%}.offset-gt-lg-80,.flex-offset-gt-lg-80,.layout-margin .flex-offset-gt-lg-80,.layout-margin .offset-gt-lg-80{margin-left:80%}[dir=rtl] .offset-gt-lg-80,[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .offset-gt-lg-80{margin-left:auto;margin-right:80%}.offset-gt-lg-85,.flex-offset-gt-lg-85,.layout-margin .flex-offset-gt-lg-85,.layout-margin .offset-gt-lg-85{margin-left:85%}[dir=rtl] .offset-gt-lg-85,[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .offset-gt-lg-85{margin-left:auto;margin-right:85%}.offset-gt-lg-90,.flex-offset-gt-lg-90,.layout-margin .flex-offset-gt-lg-90,.layout-margin .offset-gt-lg-90{margin-left:90%}[dir=rtl] .offset-gt-lg-90,[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .offset-gt-lg-90{margin-left:auto;margin-right:90%}.offset-gt-lg-95,.flex-offset-gt-lg-95,.layout-margin .flex-offset-gt-lg-95,.layout-margin .offset-gt-lg-95{margin-left:95%}[dir=rtl] .offset-gt-lg-95,[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .offset-gt-lg-95{margin-left:auto;margin-right:95%}.offset-gt-lg-33,.flex-offset-gt-lg-33,.layout-margin .flex-offset-gt-lg-33,.layout-margin .offset-gt-lg-33{margin-left:33.3333333333%}.offset-gt-lg-66,.flex-offset-gt-lg-66,.layout-margin .flex-offset-gt-lg-66,.layout-margin .offset-gt-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-lg-66,[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .offset-gt-lg-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.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-start,.layout-align-gt-lg-space-around-end,.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-start,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-start-start,.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-start-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-start-center>*,.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-start-end,.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-start-stretch,.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 100%;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}.offset-xl-0,.flex-offset-xl-0,.layout-margin .flex-offset-xl-0,.layout-margin .offset-xl-0{margin-left:0}[dir=rtl] .offset-xl-0,[dir=rtl] .flex-offset-xl-0,[dir=rtl] .layout-margin .flex-offset-xl-0,[dir=rtl] .layout-margin .offset-xl-0{margin-left:auto;margin-right:0}.offset-xl-5,.flex-offset-xl-5,.layout-margin .flex-offset-xl-5,.layout-margin .offset-xl-5{margin-left:5%}[dir=rtl] .offset-xl-5,[dir=rtl] .flex-offset-xl-5,[dir=rtl] .layout-margin .flex-offset-xl-5,[dir=rtl] .layout-margin .offset-xl-5{margin-left:auto;margin-right:5%}.offset-xl-10,.flex-offset-xl-10,.layout-margin .flex-offset-xl-10,.layout-margin .offset-xl-10{margin-left:10%}[dir=rtl] .offset-xl-10,[dir=rtl] .flex-offset-xl-10,[dir=rtl] .layout-margin .flex-offset-xl-10,[dir=rtl] .layout-margin .offset-xl-10{margin-left:auto;margin-right:10%}.offset-xl-15,.flex-offset-xl-15,.layout-margin .flex-offset-xl-15,.layout-margin .offset-xl-15{margin-left:15%}[dir=rtl] .offset-xl-15,[dir=rtl] .flex-offset-xl-15,[dir=rtl] .layout-margin .flex-offset-xl-15,[dir=rtl] .layout-margin .offset-xl-15{margin-left:auto;margin-right:15%}.offset-xl-20,.flex-offset-xl-20,.layout-margin .flex-offset-xl-20,.layout-margin .offset-xl-20{margin-left:20%}[dir=rtl] .offset-xl-20,[dir=rtl] .flex-offset-xl-20,[dir=rtl] .layout-margin .flex-offset-xl-20,[dir=rtl] .layout-margin .offset-xl-20{margin-left:auto;margin-right:20%}.offset-xl-25,.flex-offset-xl-25,.layout-margin .flex-offset-xl-25,.layout-margin .offset-xl-25{margin-left:25%}[dir=rtl] .offset-xl-25,[dir=rtl] .flex-offset-xl-25,[dir=rtl] .layout-margin .flex-offset-xl-25,[dir=rtl] .layout-margin .offset-xl-25{margin-left:auto;margin-right:25%}.offset-xl-30,.flex-offset-xl-30,.layout-margin .flex-offset-xl-30,.layout-margin .offset-xl-30{margin-left:30%}[dir=rtl] .offset-xl-30,[dir=rtl] .flex-offset-xl-30,[dir=rtl] .layout-margin .flex-offset-xl-30,[dir=rtl] .layout-margin .offset-xl-30{margin-left:auto;margin-right:30%}.offset-xl-35,.flex-offset-xl-35,.layout-margin .flex-offset-xl-35,.layout-margin .offset-xl-35{margin-left:35%}[dir=rtl] .offset-xl-35,[dir=rtl] .flex-offset-xl-35,[dir=rtl] .layout-margin .flex-offset-xl-35,[dir=rtl] .layout-margin .offset-xl-35{margin-left:auto;margin-right:35%}.offset-xl-40,.flex-offset-xl-40,.layout-margin .flex-offset-xl-40,.layout-margin .offset-xl-40{margin-left:40%}[dir=rtl] .offset-xl-40,[dir=rtl] .flex-offset-xl-40,[dir=rtl] .layout-margin .flex-offset-xl-40,[dir=rtl] .layout-margin .offset-xl-40{margin-left:auto;margin-right:40%}.offset-xl-45,.flex-offset-xl-45,.layout-margin .flex-offset-xl-45,.layout-margin .offset-xl-45{margin-left:45%}[dir=rtl] .offset-xl-45,[dir=rtl] .flex-offset-xl-45,[dir=rtl] .layout-margin .flex-offset-xl-45,[dir=rtl] .layout-margin .offset-xl-45{margin-left:auto;margin-right:45%}.offset-xl-50,.flex-offset-xl-50,.layout-margin .flex-offset-xl-50,.layout-margin .offset-xl-50{margin-left:50%}[dir=rtl] .offset-xl-50,[dir=rtl] .flex-offset-xl-50,[dir=rtl] .layout-margin .flex-offset-xl-50,[dir=rtl] .layout-margin .offset-xl-50{margin-left:auto;margin-right:50%}.offset-xl-55,.flex-offset-xl-55,.layout-margin .flex-offset-xl-55,.layout-margin .offset-xl-55{margin-left:55%}[dir=rtl] .offset-xl-55,[dir=rtl] .flex-offset-xl-55,[dir=rtl] .layout-margin .flex-offset-xl-55,[dir=rtl] .layout-margin .offset-xl-55{margin-left:auto;margin-right:55%}.offset-xl-60,.flex-offset-xl-60,.layout-margin .flex-offset-xl-60,.layout-margin .offset-xl-60{margin-left:60%}[dir=rtl] .offset-xl-60,[dir=rtl] .flex-offset-xl-60,[dir=rtl] .layout-margin .flex-offset-xl-60,[dir=rtl] .layout-margin .offset-xl-60{margin-left:auto;margin-right:60%}.offset-xl-65,.flex-offset-xl-65,.layout-margin .flex-offset-xl-65,.layout-margin .offset-xl-65{margin-left:65%}[dir=rtl] .offset-xl-65,[dir=rtl] .flex-offset-xl-65,[dir=rtl] .layout-margin .flex-offset-xl-65,[dir=rtl] .layout-margin .offset-xl-65{margin-left:auto;margin-right:65%}.offset-xl-70,.flex-offset-xl-70,.layout-margin .flex-offset-xl-70,.layout-margin .offset-xl-70{margin-left:70%}[dir=rtl] .offset-xl-70,[dir=rtl] .flex-offset-xl-70,[dir=rtl] .layout-margin .flex-offset-xl-70,[dir=rtl] .layout-margin .offset-xl-70{margin-left:auto;margin-right:70%}.offset-xl-75,.flex-offset-xl-75,.layout-margin .flex-offset-xl-75,.layout-margin .offset-xl-75{margin-left:75%}[dir=rtl] .offset-xl-75,[dir=rtl] .flex-offset-xl-75,[dir=rtl] .layout-margin .flex-offset-xl-75,[dir=rtl] .layout-margin .offset-xl-75{margin-left:auto;margin-right:75%}.offset-xl-80,.flex-offset-xl-80,.layout-margin .flex-offset-xl-80,.layout-margin .offset-xl-80{margin-left:80%}[dir=rtl] .offset-xl-80,[dir=rtl] .flex-offset-xl-80,[dir=rtl] .layout-margin .flex-offset-xl-80,[dir=rtl] .layout-margin .offset-xl-80{margin-left:auto;margin-right:80%}.offset-xl-85,.flex-offset-xl-85,.layout-margin .flex-offset-xl-85,.layout-margin .offset-xl-85{margin-left:85%}[dir=rtl] .offset-xl-85,[dir=rtl] .flex-offset-xl-85,[dir=rtl] .layout-margin .flex-offset-xl-85,[dir=rtl] .layout-margin .offset-xl-85{margin-left:auto;margin-right:85%}.offset-xl-90,.flex-offset-xl-90,.layout-margin .flex-offset-xl-90,.layout-margin .offset-xl-90{margin-left:90%}[dir=rtl] .offset-xl-90,[dir=rtl] .flex-offset-xl-90,[dir=rtl] .layout-margin .flex-offset-xl-90,[dir=rtl] .layout-margin .offset-xl-90{margin-left:auto;margin-right:90%}.offset-xl-95,.flex-offset-xl-95,.layout-margin .flex-offset-xl-95,.layout-margin .offset-xl-95{margin-left:95%}[dir=rtl] .offset-xl-95,[dir=rtl] .flex-offset-xl-95,[dir=rtl] .layout-margin .flex-offset-xl-95,[dir=rtl] .layout-margin .offset-xl-95{margin-left:auto;margin-right:95%}.offset-xl-33,.flex-offset-xl-33,.layout-margin .flex-offset-xl-33,.layout-margin .offset-xl-33{margin-left:33.3333333333%}.offset-xl-66,.flex-offset-xl-66,.layout-margin .flex-offset-xl-66,.layout-margin .offset-xl-66{margin-left:66.6666666667%}[dir=rtl] .offset-xl-66,[dir=rtl] .flex-offset-xl-66,[dir=rtl] .layout-margin .flex-offset-xl-66,[dir=rtl] .layout-margin .offset-xl-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-start,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-start,.layout-align-xl-end-center,.layout-align-xl-end-end,.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-start,.layout-align-xl-space-around-end,.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-start,.layout-align-xl-space-between-end,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-start-start,.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-between-start,.layout-align-xl-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-start-center,.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-between-center,.layout-align-xl-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-start-center>*,.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-start-end,.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-between-end,.layout-align-xl-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-start-stretch,.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 100%;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: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-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-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-lg: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}}:root{--xc-ws-div-color: #011f6a;--xc-ws-text-color: #ffffff;--xc-ws-text-button-color: #ffffff;--xc-ws-button-color: #011f6a;--xc-ws-background-color: #fafafa;--xc-ws-client-height: 450px;--xc-ws-client-width: 295px}span.ng-binding,span.field-description{user-select:none}.centered-text{text-align:center}::-webkit-scrollbar{width:0;background:transparent}::-webkit-scrollbar-thumb{background:transparent;border-radius:0px}.field-description{font-size:13px;line-height:14px;color:gray;padding:5px 0px 5px 0px}.field-description.error{color:#dd2c00}.md-button.upload-button{padding:0 16px;height:36px}md-icon.material-icons{color:inherit !important}.white-label,.md-toolbar-tools .title{user-select:none}.white-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.white-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-fab.upload-button,.md-fab.upload-button.md-button.md-default-theme.md-raised:not([disabled]) md-icon,.md-fab.upload-button.md-button.md-raised:not([disabled]) md-icon{color:var(--xc-ws-text-color) !important;background:var(--xc-ws-div-color) !important}.form-input-container span{word-break:break-all}.chat-online ::-webkit-scrollbar{width:5px;background:var(--xc-ws-div-color)}.chat-online ::-webkit-scrollbar-thumb{background:linear-gradient(13deg, var(--xc-ws-text-color), var(--xc-ws-div-color));border-radius:10px}.chat-online ::-webkit-scrollbar-thumb:hover{background:linear-gradient(13deg, var(--xc-ws-div-color), var(--xc-ws-text-color))}.chat-online form{display:flex;width:100%;height:calc(100% - 20px);overflow:auto;padding:1em 0px 40px 0px;position:relative;max-width:100%;overflow-x:hidden;margin-bottom:10px}.chat-online form .form-field{margin-right:10px;margin-left:10px}.chat-online form .form-input-container{width:100%;height:100%;overflow:auto;scrollbar-width:none}.chat-online form div[ng-switch-when=label] md-content{overflow:hidden}.chat-online form div[ng-switch-when=label] md-content span{overflow:hidden}.chat-online form div.online-button-wrapper,.chat-online form div.offline-button-wrapper{position:fixed;bottom:30px;left:0px;width:calc(100% - 40px);padding:0px 20px;display:flex;background:transparent;align-items:center;justify-content:center}.chat-online form div.online-button-wrapper button,.chat-online form div.offline-button-wrapper button{margin:8px 0px;padding:2px;width:100%}.chat-online form .layout-row,.chat-online form .layout-column{flex-wrap:wrap;justify-content:start}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button,.chat-online form .layout-column md-checkbox,.chat-online form .layout-column md-radio-button{padding:4px 0;margin-left:unset !important;word-break:break-all}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button{min-width:50%;max-width:50%}.chat-online form button.upload-button{margin:6px 8px 6px 0}.chat-online form button.upload-button md-icon{font-size:20px}.chat-unmanaged{display:flex;flex-direction:column}.chat-unmanaged form{flex-grow:1;max-width:100%;overflow-x:hidden}.chat-closing{height:100%;padding:20px;overflow:hidden;align-items:stretch;justify-content:space-between}.chat-closing>md-content,.chat-closing>form{max-width:100%;overflow-x:hidden}.chat-closing>md-content,.chat-closing>md-content span,.chat-closing>form,.chat-closing>form span{width:100%}.logo{width:32px}#attachmentButton:hover .mdi-attachment:before{color:#555 !important;opacity:.85 !important}#input_text{position:relative !important;width:100% !important;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:1px solid #ccc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}#input_text:focus-within{border-color:#66afe9;outline:0;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#attachmentButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}i.icon_color{color:red}#sendButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}.emojionearea,.emojionearea.form-control{display:block;position:relative !important;width:100%;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:0px solid #ccc !important;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-webkit-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.mdi mdi-attachment mdi-24px mdi-light ng-scope::before{color:#a9a9a9}.mdi-attachment:hover{color:#555 !important}.mdi-24px.mdi-set,.mdi-24px.mdi:before{color:#a9a9a9}.md-button.md-fab.md-mini{line-height:20px !important;min-height:24px !important}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter>img{width:19px !important;height:19px !important;margin:0 1px !important}.emojionearea .emojionearea-picker{width:100% !important;right:0 !important;height:220px !important;top:0px !important}.emojionearea .emojionearea-picker .emojionearea-wrapper{position:relative;height:220px !important;width:100% !important}.emojionearea .emojionearea-picker.emojionearea-picker-position-top{margin-top:-100% !important}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-top{margin-top:-236px !important;width:260px !important;min-width:260px !important}.emojionearea .emojionearea-picker .emojionearea-search>input{width:100px !important;min-width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search{width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search-panel+.emojionearea-scroll-area{height:70% !important}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block{padding:0 !important}.emojionearea .emojionearea-picker .emojionearea-filters{background:#f5f7f9;padding:0 !important;height:40px}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter{width:25px !important;padding:7px 3px 0}#id-row,#chat-app{max-width:100%;width:100%;max-height:100%;height:100%}#chat-app{background-color:transparent}#chat-app .header-button{padding:0;margin:0;font-size:18px;cursor:pointer}ui-view{display:block;width:100%;height:100%}#chat-app .chat-toolbar{height:56px;min-height:56px;cursor:pointer;outline:0}#chat-app .chat-content{flex-grow:1;height:calc(100% - 56px);background:#fff;border:1px solid #d3d3d3;-ms-overflow-style:none;overflow:hidden;box-sizing:border-box}#chat-app .chat-content .chat-messages{height:calc(100% - 60px);overflow:auto;border-bottom:1px solid #d3d3d3}#chat-app .chat-content .chat-online{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .chat-content .chat-unmanaged{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .avatar-wrapper{position:relative;bottom:-3px;right:5px}#chat-app .chat-content .message-row .bubble{word-wrap:break-word;position:relative;max-width:190px;padding:6px 7px 8px 9px;background-color:#fff;border-radius:6px}#chat-app .chat-content .message-row .bubble .message{white-space:pre-wrap}#chat-app .chat-content .message-row .bubble .message-done{color:#dcdcdc}#chat-app .chat-content .message-row .bubble .message-done-all{color:#00bfff}#chat-app .chat-content .message-row .bubble:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADGUExURQAAAP////b29vn5+f///wAAAP///wAAAAAAAP///9ra2v////j4+PHx8fv7++Hh4fHx8f////////////////39/QAAAP////////z8/P////39/f39/fz8/P////////////z8/P////////////z8/P////////////v7+/Hx8f///9bW1vz8/K2trf////39/f39/WJiYgAAAExMTFtbWwAAAN3d3cjIyPr6+vX19QAAAO7u7vz8/NTU1Ofn5zMzM////zGPlXsAAABBdFJOUwAcm/kREh4CCDWL1SneR6TfAQffhMYK/A5nRrLWfRc5DW2ih5f+19Kn+9v4g/1LCJuXHwQUKgahcXS6DNnlDMMKKzPoTgAAAKBJREFUKM+V08USwmAQA+C/0NIWd3d3d8/7vxTMcIPkQK7f7CG7s8bQAOY/SCuwFYQU1P+eiCqIK2gpWCmoCrAgoKQgJ8CHgIqAMjg0MxxSQ3DogEMWFBZtUPAHYGB1CyDQWE6AH7BrfXzlAxGAQhECTGAmwN1Okz0Gb/LW4fEItIfrOfNELMh3tck7u+PhcT2zQ7l77/K8iY8yJwV3BeYFqpc/uSyPGdAAAAAASUVORK5CYII=);content:"";position:absolute;left:-11px;bottom:3px;width:12px;height:19px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain}#chat-app .chat-content .message-row .bubble .time{font-size:10px;text-align:right;margin-bottom:5px}#chat-app .chat-content .message-row.out .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.auto{align-items:flex-end;font-style:italic}#chat-app .chat-content .message-row.auto .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-size:17px;font-style:italic;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in{align-items:flex-end}#chat-app .chat-content .message-row.in2{align-items:flex-end}#chat-app .chat-content .message-row.out{align-items:flex-end}#chat-app .chat-content .message-row.in2 .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in2 .bubble{margin-right:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in2 .bubble:before{left:-11px;right:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=);-webkit-transform:rotate(180deg);transform:rotate(180deg)}#chat-app .chat-content .message-row.in .avatar{order:2;margin:0 0 0 16px;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in .bubble:before{right:-11px;left:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=)}#chat-app .chat-footer{width:100%}#waiting{overflow:visible;height:calc(100% - 64px);background:#fff;text-align:center;flex:1 0 auto;padding:32px}#waiting .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54)}.sk-fading-circle{width:40px;height:40px;position:relative}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:"";display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-fading-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-fading-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-fading-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-fading-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-fading-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-fading-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-fading-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-fading-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-fading-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}md-toast.md-success-toast .md-toast-content{background-color:green}md-toast.md-warning-toast .md-toast-content{color:#000;background-color:#f0ad4e}md-toast.md-failure-toast .md-toast-content{background-color:red}md-toast .md-toast-text{white-space:pre-line}md-toast.size .md-toast-content{font-weight:550;padding:0px;text-align:center;height:56px}md-toast.rounded .md-toast-content{border-radius:15px 15px 0px 0px}md-toast.squared .md-toast-content{border-radius:0px 0px 0px 0px}@media(min-device-width: 769px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:block}}@media(max-device-width: 768px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:none}}md-option .md-text{white-space:break-spaces}md-input-container{margin:0px 0px 8px 0px}.no-padding{padding:0 !important}
+ */html,body{height:100%;position:relative}body{margin:0;padding:0}[tabindex="-1"]:focus{outline:none}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:normal;background-color:inherit;text-align:left;border:none;padding:0;margin:0}select,button,textarea,input{vertical-align:baseline}input[type=reset],input[type=submit],html input[type=button],button{cursor:pointer;-webkit-appearance:button}input[type=reset][disabled],input[type=submit][disabled],html input[type=button][disabled],button[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-decoration,input[type=search]::-webkit-search-cancel-button{-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(0.4, 0, 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(0.25, 0.8, 0.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(0.25, 0.8, 0.25, 1),border .9s cubic-bezier(0.25, 0.8, 0.25, 1),width .9s cubic-bezier(0.25, 0.8, 0.25, 1),height .9s cubic-bezier(0.25, 0.8, 0.25, 1),opacity .9s cubic-bezier(0.25, 0.8, 0.25, 1),transform .9s cubic-bezier(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0px)}@media(min-width: 960px){.md-padding{padding:16px}}html[dir=rtl],html[dir=ltr],body[dir=rtl],body[dir=ltr]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}html,body{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:default;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:-0.01em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-0.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:.01em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.01em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.02em}.md-button{letter-spacing:.01em}button,select,html,textarea,input{font-family:Roboto,"Helvetica Neue",sans-serif}select,button,textarea,input{font-size:100%}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}.md-panel-inner-wrapper{position:fixed}._md-panel-offscreen{left:-9999px}._md-panel-hidden{display:none}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:relative}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(0.4, 0, 1, 1)}.md-panel._md-panel-animate-scale-out,.md-panel._md-panel-animate-fade-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:fixed;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(0.4, 0, 1, 1)}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}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:transparent;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] .md-show-clear-button button{display:block;position:absolute;right:0;top:20px;width:30px;height:30px}md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:30px}[dir=rtl] md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:0;padding-left: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 md-input-container,md-autocomplete md-autocomplete-wrap input{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:none;background:transparent;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete .md-show-clear-button 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:transparent;margin:auto 5px}md-autocomplete .md-show-clear-button 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(0.25, 0.8, 0.25, 1)}md-autocomplete .md-show-clear-button button:focus{outline:none}md-autocomplete .md-show-clear-button button:focus:after{transform:scale(1);opacity:1}md-autocomplete .md-show-clear-button button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%, -50%, 0) scale(0.9)}md-autocomplete .md-show-clear-button button md-icon path{stroke-width:0}md-autocomplete .md-show-clear-button button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete .md-show-clear-button button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete .md-show-clear-button button.ng-leave{transition:transform .15s ease-out}md-autocomplete .md-show-clear-button 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 .md-autocomplete-suggestion:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container,.md-standard-list-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);z-index:100;height:100%}.md-virtual-repeat-container.md-autocomplete-suggestions-container .highlight,.md-standard-list-container.md-autocomplete-suggestions-container .highlight{font-weight:bold}.md-standard-list-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;overflow-y:auto;padding:0}.md-virtual-repeat-container.md-not-found,.md-standard-list-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions .md-autocomplete-suggestion{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 .md-autocomplete-suggestion:focus{outline:none}.md-autocomplete-suggestions .md-autocomplete-suggestion:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast: active){md-autocomplete,.md-autocomplete-suggestions{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 400ms}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(0.25, 0.8, 0.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(0.55, 0, 0.55, 0.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:none}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:2px;box-sizing:border-box;user-select:none;outline:none;border:0;padding:0 8px;margin:6px 8px;background:transparent;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(0.25, 0.8, 0.25, 1),background-color .4s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){min-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){line-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){font-size:13px}.md-button:focus{outline:none}.md-button:hover,.md-button:focus{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:none}.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-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(0.55, 0, 0.55, 0.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-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button.md-fab[disabled]{box-shadow:none}.md-button:not([disabled]).md-raised.md-focused,.md-button:not([disabled]).md-fab.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-raised:active,.md-button:not([disabled]).md-fab:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:inherit;background-clip:padding-box;overflow:hidden;-webkit-transform:translateZ(0)}.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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 0px 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0px 0px 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0px 2px 2px 0px}@media screen and (-ms-high-contrast: active){.md-button.md-raised,.md-button.md-fab{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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-icon>svg{height:inherit;width:inherit}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>img,md-card>md-card-header img,md-card md-card-title-media 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-card-actions{margin:8px}md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}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-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}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-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[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-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[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-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-inline-form md-checkbox{margin-top:14px;margin-bottom:auto}md-checkbox{box-sizing:border-box;display:inline-block;white-space:nowrap;cursor:pointer;outline:none;user-select:none;position:relative;min-width:18px;min-height:48px}.md-dense>md-checkbox:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) md-checkbox:not(.md-dense-disabled){min-height:36px}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-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:18px;height:18px;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:18px;height:18px;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:4px;top:0px;display:table;width:6px;height:12px;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:10.8px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-checkbox .md-container{top:auto;left:auto;right:auto;margin:3px;margin-top:21px}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-top:10px;margin-bottom:auto;margin-left:36px}[dir=rtl] md-checkbox .md-label{margin-left:0;margin-right:36px}md-checkbox .md-label:empty{margin-left:24px;margin-right:0}[dir=rtl] md-checkbox .md-label:empty{margin-left:0}[dir=rtl] md-checkbox .md-label:empty{margin-right:24px}md-input-container .md-checkbox-link-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;cursor:pointer;top:-21px;margin-left:18px;margin-right:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-left:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-right:18px}.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-name,.md-contact-suggestion .md-contact-email{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}md-chips{display:flex}.md-chips{display:flex;flex-wrap:wrap;flex-grow:1;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:13px;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:28px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:28px}.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:none}.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:transparent;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;min-height:18px;min-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;flex-grow:1;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{width:100%}.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=url],.md-chips .md-chip-input-container input[type=text]{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=url]:focus,.md-chips .md-chip-input-container input[type=text]:focus{outline:none}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:transparent;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:none}.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:transparent;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-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(0.25, 0.8, 0.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-label.md-calendar-label-clickable{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:normal}.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;vertical-align:middle}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:none;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:none;background:transparent;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:-16px;top:13.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label .md-input{float:none}._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-has-triangle-icon{padding-right:18px;margin-right:-18px}[dir=rtl] ._md-datepicker-has-triangle-icon{padding-right:0;padding-left:18px}[dir=rtl] ._md-datepicker-has-triangle-icon{margin-right:auto;margin-left:-18px}.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:transparent;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(0.25, 0.8, 0.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:transparent;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(0.5, 0, 0.25, 1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:none}.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;bottom:-2.5px;transform:translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform: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-value>label,.md-datepicker-open.md-input-has-placeholder>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(0.25, 0.8, 0.25, 1);transition-delay:.125s}.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:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 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(0.25, 0.8, 0.25, 1);transform:translate(0, 0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate(0, 100%) scale(0.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:none}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-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-dialog-actions{padding-right:16px}[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}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}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-divider,.layout-gt-xs-row:not(.layout-sm-column)>md-divider,.layout-sm-row:not(.layout-sm-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-sm-row:not(.layout-md-column)>md-divider,.layout-md-row:not(.layout-md-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-md-row:not(.layout-lg-column)>md-divider,.layout-lg-row:not(.layout-lg-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>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-trigger,md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item{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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all 200ms 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:-0.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-0.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(0.55, 0, 0.55, 0.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>figure,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile-footer{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-header,md-grid-list md-grid-tile md-grid-tile-footer{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-header h3,md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-footer h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer 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 0px;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 textarea,md-input-container input[type=text],md-input-container input[type=password],md-input-container input[type=datetime],md-input-container input[type=datetime-local],md-input-container input[type=date],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week],md-input-container input[type=number],md-input-container input[type=email],md-input-container input[type=url],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=color]{-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:30px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:30px;-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 label:not(.md-no-float):not(.md-container-ignore),md-input-container .md-placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;padding-right:0;z-index:1;transform:translate3d(0, 28px, 0) scale(1);transition:transform .4s cubic-bezier(0.25, 0.8, 0.25, 1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-left:0}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-right:2px}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{transform-origin:right top}md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-input-has-value .md-placeholder{padding-left:3px;padding-right:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-left:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-right:3px}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):not(.md-input-has-placeholder) input:not(:focus){color:transparent}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-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:none;padding-top:2px;padding-bottom:1px;padding-left:0;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;transition:border-color .4s cubic-bezier(0.25, 0.8, 0.25, 1);width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{padding-left:2px}[dir=rtl] md-input-container .md-input{padding-right:0}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:none}md-input-container .md-input:invalid{outline:none;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-message-animation,md-input-container .md-char-counter{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);opacity:1;margin-top:0;padding-top:8px}md-input-container .md-input-message-animation:not(.md-char-counter),md-input-container .md-char-counter:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter: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.ng-enter-prepare{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter:not(.ng-enter-active){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(0.75);transition:transform cubic-bezier(0.25, 0.8, 0.25, 1) .4s,width cubic-bezier(0.25, 0.8, 0.25, 1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container.md-input-focused .md-input,md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}md-input-container .md-input[disabled],[disabled] md-input-container .md-input{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(0.25, 0.8, 0.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:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder{width:calc(100% - 36px);padding:0}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:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left.md-icon-right>label .md-placeholder{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:transparent;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 0px 8px 0px}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:1.2em}md-list.md-dense:not(.md-dense-disabled) md-list-item,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner{min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item::before,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner::before{content:"";min-height:40px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner md-icon:first-child{width:20px;height:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:36px;margin-top:4px;margin-bottom:4px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px;margin-top:6px;margin-bottom:6px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container .md-secondary.md-button,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container .md-secondary.md-button{margin-top:4px;margin-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container md-checkbox:not(.md-dense-disabled),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container md-checkbox:not(.md-dense-disabled){min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) 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:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px;padding-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style::before{content:"";min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style::before{content:"";min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}md-list.md-dense:not(.md-dense-disabled) .md-subheader-inner{padding-top:12px;padding-bottom:12px}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:0px 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%}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner::before{content:"";min-height:inherit;visibility:hidden;display:inline-block}md-list-item.md-no-proxy,md-list-item .md-no-style{position:relative;padding:0px 16px;flex:1 1 auto}md-list-item.md-no-proxy.md-button,md-list-item .md-no-style.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-proxy.md-button,[dir=rtl] md-list-item .md-no-style.md-button{text-align:right}md-list-item.md-no-proxy.md-button>.md-ripple-container,md-list-item .md-no-style.md-button>.md-ripple-container{border-radius:0}md-list-item.md-no-proxy:focus,md-list-item .md-no-style:focus{outline:none}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::before,md-list-item .md-list-item-inner::before{content:"";min-height:48px;visibility:hidden;display:inline-block}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:first-child:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),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:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox,md-list-item 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-list-item-inner md-checkbox.md-secondary{align-self:center}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,md-list-item 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-list-item-inner md-checkbox.md-secondary .md-label{display:none}md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item .md-list-item-inner>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-checkbox,md-list-item .md-list-item-inner>md-checkbox{width:24px;min-height:40px;margin-left:0px;margin-right:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-left:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-right:0px}md-list-item .md-secondary-container,md-list-item .md-list-item-inner .md-secondary-container{display:flex;align-items:center;position:relative;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-left:0}md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type,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{margin-right:0}[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,[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{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-checkbox,md-list-item .md-list-item-inner .md-secondary-container md-checkbox{margin:0 6px;padding:0 8px;min-height:40px}md-list-item .md-secondary-container md-checkbox:last-child,md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{width:40px;margin-right:0}[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-switch,md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-secondary-container md-switch,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item>p,md-list-item>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item .md-list-item-inner>.md-list-item-inner>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:.01em;margin:0 0 0 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:.01em;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:.01em;margin:0 0 0 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,md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list-item.md-2-line>md-icon:first-child,md-list-item.md-2-line>.md-no-style>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-icon:first-child,md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px;max-height:calc(100vh - 10px);overflow:auto}.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(0.25, 0.8, 0.25, 1);transition-duration:200ms}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:200ms;transition-delay:100ms}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.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:32px}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-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px}md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:right}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:right;margin:0 8px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:left}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-item>.md-button,md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.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:normal;border-radius:0px;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:"▼";position:absolute;top:0px;speak:none;transform:rotate(270deg) scaleY(0.45) scaleX(0.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(0.45) scaleX(0.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:none;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(0.35, 0, 0.25, 1)}.md-button._md-nav-button:focus{outline:none}md-nav-ink-bar{background-color:#000;position:absolute;bottom:0;left:0;width:100%;height:2px;transform-origin:left top;will-change:transform;transition:transform .125s cubic-bezier(0.35, 0, 0.25, 1)}md-nav-ink-bar.ng-animate{transition:none}md-nav-extra-content{min-height:48px;padding-right:12px}@keyframes indeterminate-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block;transform:scale(1, 1)}[dir=rtl] md-progress-circular{transform:scale(-1, 1)}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 1568.63ms 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;transform:scale(1, 1)}[dir=rtl] md-progress-linear{transform:scale(-1, 1)}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:0px -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(0.39, 0.575, 0.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(0.3, 1)}100%{opacity:0;transform:translateX(-50%) scale(0, 1)}}@keyframes buffer{0%{opacity:1;background-position:0px -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(0.1);animation-timing-function:linear}36.6%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.334731432, 0.124819821, 0.785843996, 1)}69.15%{transform:scaleX(0.83);animation-timing-function:cubic-bezier(0.225732004, 0, 0.233648906, 1.3709798)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.1666666667%;animation-timing-function:linear}20%{left:-105.1666666667%;animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(0.302435, 0.38135197, 0.55, 0.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.205028172, 0.057050836, 0.57660995, 0.453970841)}19.15%{transform:scaleX(0.57);animation-timing-function:cubic-bezier(0.152312994, 0.196431957, 0.648373778, 1.00431535)}44.15%{transform:scaleX(0.91);animation-timing-function:cubic-bezier(0.25775882, -0.003163357, 0.211761916, 1.38178961)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(0.15, 0, 0.5150584, 0.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(0.3103299, 0.284057684, 0.8, 0.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(0.4, 0.627034903, 0.6, 0.902025796)}100%{left:117.3888888889%}}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(0.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:focus{outline:none}md-radio-group.md-focused.ng-not-empty .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group.md-focused.ng-empty>md-radio-button:first-child .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}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-radio-button,.layout-xs-row>md-radio-button{margin-bottom:0}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-radio-button,.layout-gt-xs-row:not(.layout-sm-column)>md-radio-button,.layout-sm-row:not(.layout-sm-column)>md-radio-button{margin-bottom:0}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-sm-row:not(.layout-md-column)>md-radio-button,.layout-md-row:not(.layout-md-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-md-row:not(.layout-lg-column)>md-radio-button,.layout-lg-row:not(.layout-lg-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button{margin-bottom:0}}.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 10px 2px 6px;box-sizing:border-box;margin-top:0;margin-bottom:0}.md-inline-form md-radio-group md-radio-button .md-label{top:4px}.md-inline-form md-radio-group md-radio-button .md-container{margin-top:2px}@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(0.25, 0.8, 0.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:not([placeholder]) .md-select-placeholder span:first-child{transform:translate(-2px, -22px) scale(0.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(0.25, 0.8, 0.25, 1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transition-delay:100ms}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:250ms}.md-inline-form md-select{margin-top:20px}md-input-container>md-select,.md-inline-form md-input-container>md-select{margin-top:0px}md-input-container>md-select{order:2}md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select.ng-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}md-select[required].ng-empty.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select.ng-required.ng-empty.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:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x;padding-bottom:2px;padding-top:1px;transform:translateY(1px)}md-select:focus{outline:none}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]):focus .md-select-value{border-bottom-style:solid;border-bottom-width:2px;padding-bottom:0px}md-input-container md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px}md-input-container md-select[disabled] .md-select-value{background-position:bottom -1px left 0}md-input-container md-select .md-select-value{min-height:26px;border-bottom-width:1px;padding-bottom:1px}md-input-container md-select .md-select-value.md-select-placeholder{padding-left:0;padding-right:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-left:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-right:0}.md-select-value{display:flex;align-items:center;padding-top:2px;padding-bottom:1px;padding-left:0;padding-right:2px;border-bottom-width:1px;border-bottom-style:solid;background-color:rgba(0,0,0,0);position:relative;box-sizing:content-box;min-width:88px;min-height:26px;margin-bottom:auto;-ms-flex-item-align:start;flex-grow:1}[dir=rtl] .md-select-value{padding-left:2px}[dir=rtl] .md-select-value{padding-right:0}.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:right;width:24px;transform:translateY(-2px);font-size:1.2rem}[dir=rtl] .md-select-value .md-select-icon{align-items:flex-start}[dir=rtl] .md-select-value .md-select-icon{text-align:left}.md-select-value .md-select-icon:after{display:block;content:"▼";position:relative;top:2px;right:-4px;left:auto;speak:none;font-size:13px;transform:scaleY(0.5)}[dir=rtl] .md-select-value .md-select-icon:after{right:auto}[dir=rtl] .md-select-value .md-select-icon:after{left:-4px}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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:none}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:18px;height:18px;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:18px;height:18px;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:4px;top:0px;display:table;width:6px;height:12px;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:10.8px;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(0.25, 0.8, 0.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.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.md-closed{position:static;display:flex;transform:translate3d(0, 0, 0)}md-sidenav.md-closed.md-locked-open-add{position:static;display:flex;transform:translate3d(0%, 0, 0)}md-sidenav.md-closed.md-locked-open-add:not(.md-locked-open-add-active){transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}.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(0.7)}30%{transform:scale(1)}100%{transform:scale(0.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(0.7)}50%{transform:scale(0.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(0.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:none;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(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0.7);transition:all .4s cubic-bezier(0.25, 0.8, 0.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(0.4) translate3d(0, 67.5px, 0);transition:all .3s cubic-bezier(0.35, 0, 0.25, 1)}md-slider .md-sign:after{position:absolute;content:"";left:0px;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(0.35, 0, 0.25, 1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0px}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:bold}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(0.7);opacity:0;transition:all .35s cubic-bezier(0.35, 0, 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(0.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:none}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-track-ticks,md-slider:not([md-discrete]) .md-sign{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(0.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(0.35, 0, 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(0.35, 0, 0.25, 1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(0.35, 0, 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(0.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(0.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:bold}md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete] .md-focused .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(0.25, 0.8, 0.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:0px 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0px 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 0 0 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-swipe-left],[md-swipe-right]{touch-action:pan-y}[md-swipe-up],[md-swipe-down]{touch-action:pan-x}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:none;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:0px;margin-left:8px}md-switch.md-inverted .md-container{margin-right:initial;margin-left:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-right:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-left:initial}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}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:none;height:20px;width:20px;border-radius:50%;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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-container,md-switch:not(.md-dragging) .md-thumb{transition:all .08s linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:.05s}@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:translate(0, 0)}md-tabs-wrapper md-prev-button,md-tabs-wrapper md-next-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(0.35, 0, 0.25, 1)}md-tabs-wrapper md-prev-button:focus,md-tabs-wrapper md-next-button:focus{outline:none}md-tabs-wrapper md-prev-button.md-disabled,md-tabs-wrapper md-next-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-prev-button.ng-leave,md-tabs-wrapper md-next-button.ng-leave{transition:none}md-tabs-wrapper md-prev-button md-icon,md-tabs-wrapper md-next-button md-icon{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}[dir=rtl] md-tabs-wrapper md-prev-button,[dir=rtl] md-tabs-wrapper md-next-button{transform:rotateY(180deg) translateY(-50%)}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:translate(-50%, -50%) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;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:flex;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);position:absolute;left:0;transform:translate(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;justify-content:center}md-pagination-wrapper md-tab-item{min-width:72px}@media(min-width: 600px){md-pagination-wrapper md-tab-item{min-width:160px}}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:flex;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);overflow:auto;transform:translate(0, 0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.ng-leave,md-tab-content.md-no-transition{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;visibility:hidden}[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;visibility:hidden}[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{flex:1 0 100%;min-width:0}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 .125s cubic-bezier(0.35, 0, 0.25, 1),right .25s cubic-bezier(0.35, 0, 0.25, 1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(0.35, 0, 0.25, 1),right .125s cubic-bezier(0.35, 0, 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;transition:background-color .35s cubic-bezier(0.35, 0, 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,.md-tab:focus{box-shadow:none;outline:none}.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,md-toolbar+md-dialog-content md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 8px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-toast .md-toast-content{display:flex;flex-direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 16px;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(0deg);transition:all .4s cubic-bezier(0.25, 0.8, 0.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(0.55, 0, 0.55, 0.2)}md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content,md-toast.md-swipedown .md-toast-content{transition:all .4s cubic-bezier(0.25, 0.8, 0.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:8px}[dir=rtl] md-toast .md-button{margin-right:8px}[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(0.35, 0, 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 *:before,md-toolbar *:after{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-checkbox{margin:inherit}.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(0.35, 0, 0.25, 1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.ng-animate,.md-toolbar-tools .md-button.md-icon-button md-icon.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{display:inline-block;pointer-events:none;border-radius:4px;overflow:hidden;opacity:0;font-weight:500;font-size:14px;white-space:nowrap;text-overflow:ellipsis;height:32px;line-height:32px;padding-right:16px;padding-left:16px}.md-tooltip.md-origin-top{transform-origin:center bottom;margin-top:-24px}.md-tooltip.md-origin-right{transform-origin:left center;margin-left:24px}.md-tooltip.md-origin-bottom{transform-origin:center top;margin-top:24px}.md-tooltip.md-origin-left{transform-origin:right center;margin-left:-24px}@media(min-width: 960px){.md-tooltip{font-size:10px;height:22px;line-height:22px;padding-right:8px;padding-left:8px}.md-tooltip.md-origin-top{margin-top:-14px}.md-tooltip.md-origin-right{margin-left:14px}.md-tooltip.md-origin-bottom{margin-top:14px}.md-tooltip.md-origin-left{margin-left:-14px}}.md-tooltip.md-show-add{transform:scale(0)}.md-tooltip.md-show{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-duration:150ms;transform:scale(1);opacity:.9}.md-tooltip.md-hide{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transform:scale(0);opacity:0}.md-truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.md-truncate.md-clip{text-overflow:clip}.md-truncate.flex{width:0}.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:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0px 1px 5px 0px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0px 1px 8px 0px rgba(0,0,0,.2),0px 3px 4px 0px rgba(0,0,0,.14),0px 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 5px 8px 0px rgba(0,0,0,.14),0px 1px 14px 0px rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0px 4px 5px -2px rgba(0,0,0,.2),0px 7px 10px 1px rgba(0,0,0,.14),0px 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0px 5px 6px -3px rgba(0,0,0,.2),0px 9px 12px 1px rgba(0,0,0,.14),0px 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0px 6px 6px -3px rgba(0,0,0,.2),0px 10px 14px 1px rgba(0,0,0,.14),0px 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0px 6px 7px -4px rgba(0,0,0,.2),0px 11px 15px 1px rgba(0,0,0,.14),0px 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 12px 17px 2px rgba(0,0,0,.14),0px 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0px 7px 9px -4px rgba(0,0,0,.2),0px 14px 21px 2px rgba(0,0,0,.14),0px 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0px 8px 9px -5px rgba(0,0,0,.2),0px 15px 22px 2px rgba(0,0,0,.14),0px 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0px 8px 10px -5px rgba(0,0,0,.2),0px 16px 24px 2px rgba(0,0,0,.14),0px 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0px 8px 11px -5px rgba(0,0,0,.2),0px 17px 26px 2px rgba(0,0,0,.14),0px 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0px 9px 11px -5px rgba(0,0,0,.2),0px 18px 28px 2px rgba(0,0,0,.14),0px 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0px 9px 12px -6px rgba(0,0,0,.2),0px 19px 29px 2px rgba(0,0,0,.14),0px 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 20px 31px 3px rgba(0,0,0,.14),0px 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 21px 33px 3px rgba(0,0,0,.14),0px 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0px 10px 14px -6px rgba(0,0,0,.2),0px 22px 35px 3px rgba(0,0,0,.14),0px 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0px 11px 14px -7px rgba(0,0,0,.2),0px 23px 36px 3px rgba(0,0,0,.14),0px 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0px 11px 15px -7px rgba(0,0,0,.2),0px 24px 38px 3px rgba(0,0,0,.14),0px 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],[ng-cloak],[data-ng-cloak],[x-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}.offset-0,.flex-offset-0,.layout-margin .flex-offset-0,.layout-margin .offset-0{margin-left:0}[dir=rtl] .offset-0,[dir=rtl] .flex-offset-0,[dir=rtl] .layout-margin .flex-offset-0,[dir=rtl] .layout-margin .offset-0{margin-left:auto;margin-right:0}.offset-5,.flex-offset-5,.layout-margin .flex-offset-5,.layout-margin .offset-5{margin-left:5%}[dir=rtl] .offset-5,[dir=rtl] .flex-offset-5,[dir=rtl] .layout-margin .flex-offset-5,[dir=rtl] .layout-margin .offset-5{margin-left:auto;margin-right:5%}.offset-10,.flex-offset-10,.layout-margin .flex-offset-10,.layout-margin .offset-10{margin-left:10%}[dir=rtl] .offset-10,[dir=rtl] .flex-offset-10,[dir=rtl] .layout-margin .flex-offset-10,[dir=rtl] .layout-margin .offset-10{margin-left:auto;margin-right:10%}.offset-15,.flex-offset-15,.layout-margin .flex-offset-15,.layout-margin .offset-15{margin-left:15%}[dir=rtl] .offset-15,[dir=rtl] .flex-offset-15,[dir=rtl] .layout-margin .flex-offset-15,[dir=rtl] .layout-margin .offset-15{margin-left:auto;margin-right:15%}.offset-20,.flex-offset-20,.layout-margin .flex-offset-20,.layout-margin .offset-20{margin-left:20%}[dir=rtl] .offset-20,[dir=rtl] .flex-offset-20,[dir=rtl] .layout-margin .flex-offset-20,[dir=rtl] .layout-margin .offset-20{margin-left:auto;margin-right:20%}.offset-25,.flex-offset-25,.layout-margin .flex-offset-25,.layout-margin .offset-25{margin-left:25%}[dir=rtl] .offset-25,[dir=rtl] .flex-offset-25,[dir=rtl] .layout-margin .flex-offset-25,[dir=rtl] .layout-margin .offset-25{margin-left:auto;margin-right:25%}.offset-30,.flex-offset-30,.layout-margin .flex-offset-30,.layout-margin .offset-30{margin-left:30%}[dir=rtl] .offset-30,[dir=rtl] .flex-offset-30,[dir=rtl] .layout-margin .flex-offset-30,[dir=rtl] .layout-margin .offset-30{margin-left:auto;margin-right:30%}.offset-35,.flex-offset-35,.layout-margin .flex-offset-35,.layout-margin .offset-35{margin-left:35%}[dir=rtl] .offset-35,[dir=rtl] .flex-offset-35,[dir=rtl] .layout-margin .flex-offset-35,[dir=rtl] .layout-margin .offset-35{margin-left:auto;margin-right:35%}.offset-40,.flex-offset-40,.layout-margin .flex-offset-40,.layout-margin .offset-40{margin-left:40%}[dir=rtl] .offset-40,[dir=rtl] .flex-offset-40,[dir=rtl] .layout-margin .flex-offset-40,[dir=rtl] .layout-margin .offset-40{margin-left:auto;margin-right:40%}.offset-45,.flex-offset-45,.layout-margin .flex-offset-45,.layout-margin .offset-45{margin-left:45%}[dir=rtl] .offset-45,[dir=rtl] .flex-offset-45,[dir=rtl] .layout-margin .flex-offset-45,[dir=rtl] .layout-margin .offset-45{margin-left:auto;margin-right:45%}.offset-50,.flex-offset-50,.layout-margin .flex-offset-50,.layout-margin .offset-50{margin-left:50%}[dir=rtl] .offset-50,[dir=rtl] .flex-offset-50,[dir=rtl] .layout-margin .flex-offset-50,[dir=rtl] .layout-margin .offset-50{margin-left:auto;margin-right:50%}.offset-55,.flex-offset-55,.layout-margin .flex-offset-55,.layout-margin .offset-55{margin-left:55%}[dir=rtl] .offset-55,[dir=rtl] .flex-offset-55,[dir=rtl] .layout-margin .flex-offset-55,[dir=rtl] .layout-margin .offset-55{margin-left:auto;margin-right:55%}.offset-60,.flex-offset-60,.layout-margin .flex-offset-60,.layout-margin .offset-60{margin-left:60%}[dir=rtl] .offset-60,[dir=rtl] .flex-offset-60,[dir=rtl] .layout-margin .flex-offset-60,[dir=rtl] .layout-margin .offset-60{margin-left:auto;margin-right:60%}.offset-65,.flex-offset-65,.layout-margin .flex-offset-65,.layout-margin .offset-65{margin-left:65%}[dir=rtl] .offset-65,[dir=rtl] .flex-offset-65,[dir=rtl] .layout-margin .flex-offset-65,[dir=rtl] .layout-margin .offset-65{margin-left:auto;margin-right:65%}.offset-70,.flex-offset-70,.layout-margin .flex-offset-70,.layout-margin .offset-70{margin-left:70%}[dir=rtl] .offset-70,[dir=rtl] .flex-offset-70,[dir=rtl] .layout-margin .flex-offset-70,[dir=rtl] .layout-margin .offset-70{margin-left:auto;margin-right:70%}.offset-75,.flex-offset-75,.layout-margin .flex-offset-75,.layout-margin .offset-75{margin-left:75%}[dir=rtl] .offset-75,[dir=rtl] .flex-offset-75,[dir=rtl] .layout-margin .flex-offset-75,[dir=rtl] .layout-margin .offset-75{margin-left:auto;margin-right:75%}.offset-80,.flex-offset-80,.layout-margin .flex-offset-80,.layout-margin .offset-80{margin-left:80%}[dir=rtl] .offset-80,[dir=rtl] .flex-offset-80,[dir=rtl] .layout-margin .flex-offset-80,[dir=rtl] .layout-margin .offset-80{margin-left:auto;margin-right:80%}.offset-85,.flex-offset-85,.layout-margin .flex-offset-85,.layout-margin .offset-85{margin-left:85%}[dir=rtl] .offset-85,[dir=rtl] .flex-offset-85,[dir=rtl] .layout-margin .flex-offset-85,[dir=rtl] .layout-margin .offset-85{margin-left:auto;margin-right:85%}.offset-90,.flex-offset-90,.layout-margin .flex-offset-90,.layout-margin .offset-90{margin-left:90%}[dir=rtl] .offset-90,[dir=rtl] .flex-offset-90,[dir=rtl] .layout-margin .flex-offset-90,[dir=rtl] .layout-margin .offset-90{margin-left:auto;margin-right:90%}.offset-95,.flex-offset-95,.layout-margin .flex-offset-95,.layout-margin .offset-95{margin-left:95%}[dir=rtl] .offset-95,[dir=rtl] .flex-offset-95,[dir=rtl] .layout-margin .flex-offset-95,[dir=rtl] .layout-margin .offset-95{margin-left:auto;margin-right:95%}.offset-33,.flex-offset-33,.layout-margin .flex-offset-33,.layout-margin .offset-33{margin-left:33.3333333333%}.offset-66,.flex-offset-66,.layout-margin .flex-offset-66,.layout-margin .offset-66{margin-left:66.6666666667%}[dir=rtl] .offset-66,[dir=rtl] .flex-offset-66,[dir=rtl] .layout-margin .flex-offset-66,[dir=rtl] .layout-margin .offset-66{margin-left:auto;margin-right:66.6666666667%}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-start,.layout-align-center-center,.layout-align-center-end,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-start,.layout-align-end-center,.layout-align-end-end,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-start,.layout-align-space-around-end,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-start,.layout-align-space-between-end,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-start-start,.layout-align-center-start,.layout-align-end-start,.layout-align-space-between-start,.layout-align-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-start-center,.layout-align-center-center,.layout-align-end-center,.layout-align-space-between-center,.layout-align-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-start-center>*,.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-between-center>*,.layout-align-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-start-end,.layout-align-center-end,.layout-align-end-end,.layout-align-space-between-end,.layout-align-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-start-stretch,.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-between-stretch,.layout-align-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 100%;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}.flex-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.flex-66{flex:1 1 100%;max-width:66.66%;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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 100%;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-md,.layout-padding>*,.layout-padding-gt-sm>*,.layout-padding-md>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding-gt-lg>*,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg,.layout-padding>.flex-lg,.layout-padding>.flex-gt-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-md,.layout-margin>*,.layout-margin-gt-sm>*,.layout-margin-md>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin-gt-lg>*,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg,.layout-margin>.flex-gt-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}.offset-xs-0,.flex-offset-xs-0,.layout-margin .flex-offset-xs-0,.layout-margin .offset-xs-0{margin-left:0}[dir=rtl] .offset-xs-0,[dir=rtl] .flex-offset-xs-0,[dir=rtl] .layout-margin .flex-offset-xs-0,[dir=rtl] .layout-margin .offset-xs-0{margin-left:auto;margin-right:0}.offset-xs-5,.flex-offset-xs-5,.layout-margin .flex-offset-xs-5,.layout-margin .offset-xs-5{margin-left:5%}[dir=rtl] .offset-xs-5,[dir=rtl] .flex-offset-xs-5,[dir=rtl] .layout-margin .flex-offset-xs-5,[dir=rtl] .layout-margin .offset-xs-5{margin-left:auto;margin-right:5%}.offset-xs-10,.flex-offset-xs-10,.layout-margin .flex-offset-xs-10,.layout-margin .offset-xs-10{margin-left:10%}[dir=rtl] .offset-xs-10,[dir=rtl] .flex-offset-xs-10,[dir=rtl] .layout-margin .flex-offset-xs-10,[dir=rtl] .layout-margin .offset-xs-10{margin-left:auto;margin-right:10%}.offset-xs-15,.flex-offset-xs-15,.layout-margin .flex-offset-xs-15,.layout-margin .offset-xs-15{margin-left:15%}[dir=rtl] .offset-xs-15,[dir=rtl] .flex-offset-xs-15,[dir=rtl] .layout-margin .flex-offset-xs-15,[dir=rtl] .layout-margin .offset-xs-15{margin-left:auto;margin-right:15%}.offset-xs-20,.flex-offset-xs-20,.layout-margin .flex-offset-xs-20,.layout-margin .offset-xs-20{margin-left:20%}[dir=rtl] .offset-xs-20,[dir=rtl] .flex-offset-xs-20,[dir=rtl] .layout-margin .flex-offset-xs-20,[dir=rtl] .layout-margin .offset-xs-20{margin-left:auto;margin-right:20%}.offset-xs-25,.flex-offset-xs-25,.layout-margin .flex-offset-xs-25,.layout-margin .offset-xs-25{margin-left:25%}[dir=rtl] .offset-xs-25,[dir=rtl] .flex-offset-xs-25,[dir=rtl] .layout-margin .flex-offset-xs-25,[dir=rtl] .layout-margin .offset-xs-25{margin-left:auto;margin-right:25%}.offset-xs-30,.flex-offset-xs-30,.layout-margin .flex-offset-xs-30,.layout-margin .offset-xs-30{margin-left:30%}[dir=rtl] .offset-xs-30,[dir=rtl] .flex-offset-xs-30,[dir=rtl] .layout-margin .flex-offset-xs-30,[dir=rtl] .layout-margin .offset-xs-30{margin-left:auto;margin-right:30%}.offset-xs-35,.flex-offset-xs-35,.layout-margin .flex-offset-xs-35,.layout-margin .offset-xs-35{margin-left:35%}[dir=rtl] .offset-xs-35,[dir=rtl] .flex-offset-xs-35,[dir=rtl] .layout-margin .flex-offset-xs-35,[dir=rtl] .layout-margin .offset-xs-35{margin-left:auto;margin-right:35%}.offset-xs-40,.flex-offset-xs-40,.layout-margin .flex-offset-xs-40,.layout-margin .offset-xs-40{margin-left:40%}[dir=rtl] .offset-xs-40,[dir=rtl] .flex-offset-xs-40,[dir=rtl] .layout-margin .flex-offset-xs-40,[dir=rtl] .layout-margin .offset-xs-40{margin-left:auto;margin-right:40%}.offset-xs-45,.flex-offset-xs-45,.layout-margin .flex-offset-xs-45,.layout-margin .offset-xs-45{margin-left:45%}[dir=rtl] .offset-xs-45,[dir=rtl] .flex-offset-xs-45,[dir=rtl] .layout-margin .flex-offset-xs-45,[dir=rtl] .layout-margin .offset-xs-45{margin-left:auto;margin-right:45%}.offset-xs-50,.flex-offset-xs-50,.layout-margin .flex-offset-xs-50,.layout-margin .offset-xs-50{margin-left:50%}[dir=rtl] .offset-xs-50,[dir=rtl] .flex-offset-xs-50,[dir=rtl] .layout-margin .flex-offset-xs-50,[dir=rtl] .layout-margin .offset-xs-50{margin-left:auto;margin-right:50%}.offset-xs-55,.flex-offset-xs-55,.layout-margin .flex-offset-xs-55,.layout-margin .offset-xs-55{margin-left:55%}[dir=rtl] .offset-xs-55,[dir=rtl] .flex-offset-xs-55,[dir=rtl] .layout-margin .flex-offset-xs-55,[dir=rtl] .layout-margin .offset-xs-55{margin-left:auto;margin-right:55%}.offset-xs-60,.flex-offset-xs-60,.layout-margin .flex-offset-xs-60,.layout-margin .offset-xs-60{margin-left:60%}[dir=rtl] .offset-xs-60,[dir=rtl] .flex-offset-xs-60,[dir=rtl] .layout-margin .flex-offset-xs-60,[dir=rtl] .layout-margin .offset-xs-60{margin-left:auto;margin-right:60%}.offset-xs-65,.flex-offset-xs-65,.layout-margin .flex-offset-xs-65,.layout-margin .offset-xs-65{margin-left:65%}[dir=rtl] .offset-xs-65,[dir=rtl] .flex-offset-xs-65,[dir=rtl] .layout-margin .flex-offset-xs-65,[dir=rtl] .layout-margin .offset-xs-65{margin-left:auto;margin-right:65%}.offset-xs-70,.flex-offset-xs-70,.layout-margin .flex-offset-xs-70,.layout-margin .offset-xs-70{margin-left:70%}[dir=rtl] .offset-xs-70,[dir=rtl] .flex-offset-xs-70,[dir=rtl] .layout-margin .flex-offset-xs-70,[dir=rtl] .layout-margin .offset-xs-70{margin-left:auto;margin-right:70%}.offset-xs-75,.flex-offset-xs-75,.layout-margin .flex-offset-xs-75,.layout-margin .offset-xs-75{margin-left:75%}[dir=rtl] .offset-xs-75,[dir=rtl] .flex-offset-xs-75,[dir=rtl] .layout-margin .flex-offset-xs-75,[dir=rtl] .layout-margin .offset-xs-75{margin-left:auto;margin-right:75%}.offset-xs-80,.flex-offset-xs-80,.layout-margin .flex-offset-xs-80,.layout-margin .offset-xs-80{margin-left:80%}[dir=rtl] .offset-xs-80,[dir=rtl] .flex-offset-xs-80,[dir=rtl] .layout-margin .flex-offset-xs-80,[dir=rtl] .layout-margin .offset-xs-80{margin-left:auto;margin-right:80%}.offset-xs-85,.flex-offset-xs-85,.layout-margin .flex-offset-xs-85,.layout-margin .offset-xs-85{margin-left:85%}[dir=rtl] .offset-xs-85,[dir=rtl] .flex-offset-xs-85,[dir=rtl] .layout-margin .flex-offset-xs-85,[dir=rtl] .layout-margin .offset-xs-85{margin-left:auto;margin-right:85%}.offset-xs-90,.flex-offset-xs-90,.layout-margin .flex-offset-xs-90,.layout-margin .offset-xs-90{margin-left:90%}[dir=rtl] .offset-xs-90,[dir=rtl] .flex-offset-xs-90,[dir=rtl] .layout-margin .flex-offset-xs-90,[dir=rtl] .layout-margin .offset-xs-90{margin-left:auto;margin-right:90%}.offset-xs-95,.flex-offset-xs-95,.layout-margin .flex-offset-xs-95,.layout-margin .offset-xs-95{margin-left:95%}[dir=rtl] .offset-xs-95,[dir=rtl] .flex-offset-xs-95,[dir=rtl] .layout-margin .flex-offset-xs-95,[dir=rtl] .layout-margin .offset-xs-95{margin-left:auto;margin-right:95%}.offset-xs-33,.flex-offset-xs-33,.layout-margin .flex-offset-xs-33,.layout-margin .offset-xs-33{margin-left:33.3333333333%}.offset-xs-66,.flex-offset-xs-66,.layout-margin .flex-offset-xs-66,.layout-margin .offset-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-xs-66,[dir=rtl] .flex-offset-xs-66,[dir=rtl] .layout-margin .flex-offset-xs-66,[dir=rtl] .layout-margin .offset-xs-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-start,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-start,.layout-align-xs-end-center,.layout-align-xs-end-end,.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-start,.layout-align-xs-space-around-end,.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-start,.layout-align-xs-space-between-end,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-start-start,.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-between-start,.layout-align-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-start-center,.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-between-center,.layout-align-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-start-center>*,.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-start-end,.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-between-end,.layout-align-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-start-stretch,.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 100%;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}.offset-gt-xs-0,.flex-offset-gt-xs-0,.layout-margin .flex-offset-gt-xs-0,.layout-margin .offset-gt-xs-0{margin-left:0}[dir=rtl] .offset-gt-xs-0,[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .offset-gt-xs-0{margin-left:auto;margin-right:0}.offset-gt-xs-5,.flex-offset-gt-xs-5,.layout-margin .flex-offset-gt-xs-5,.layout-margin .offset-gt-xs-5{margin-left:5%}[dir=rtl] .offset-gt-xs-5,[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .offset-gt-xs-5{margin-left:auto;margin-right:5%}.offset-gt-xs-10,.flex-offset-gt-xs-10,.layout-margin .flex-offset-gt-xs-10,.layout-margin .offset-gt-xs-10{margin-left:10%}[dir=rtl] .offset-gt-xs-10,[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .offset-gt-xs-10{margin-left:auto;margin-right:10%}.offset-gt-xs-15,.flex-offset-gt-xs-15,.layout-margin .flex-offset-gt-xs-15,.layout-margin .offset-gt-xs-15{margin-left:15%}[dir=rtl] .offset-gt-xs-15,[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .offset-gt-xs-15{margin-left:auto;margin-right:15%}.offset-gt-xs-20,.flex-offset-gt-xs-20,.layout-margin .flex-offset-gt-xs-20,.layout-margin .offset-gt-xs-20{margin-left:20%}[dir=rtl] .offset-gt-xs-20,[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .offset-gt-xs-20{margin-left:auto;margin-right:20%}.offset-gt-xs-25,.flex-offset-gt-xs-25,.layout-margin .flex-offset-gt-xs-25,.layout-margin .offset-gt-xs-25{margin-left:25%}[dir=rtl] .offset-gt-xs-25,[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .offset-gt-xs-25{margin-left:auto;margin-right:25%}.offset-gt-xs-30,.flex-offset-gt-xs-30,.layout-margin .flex-offset-gt-xs-30,.layout-margin .offset-gt-xs-30{margin-left:30%}[dir=rtl] .offset-gt-xs-30,[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .offset-gt-xs-30{margin-left:auto;margin-right:30%}.offset-gt-xs-35,.flex-offset-gt-xs-35,.layout-margin .flex-offset-gt-xs-35,.layout-margin .offset-gt-xs-35{margin-left:35%}[dir=rtl] .offset-gt-xs-35,[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .offset-gt-xs-35{margin-left:auto;margin-right:35%}.offset-gt-xs-40,.flex-offset-gt-xs-40,.layout-margin .flex-offset-gt-xs-40,.layout-margin .offset-gt-xs-40{margin-left:40%}[dir=rtl] .offset-gt-xs-40,[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .offset-gt-xs-40{margin-left:auto;margin-right:40%}.offset-gt-xs-45,.flex-offset-gt-xs-45,.layout-margin .flex-offset-gt-xs-45,.layout-margin .offset-gt-xs-45{margin-left:45%}[dir=rtl] .offset-gt-xs-45,[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .offset-gt-xs-45{margin-left:auto;margin-right:45%}.offset-gt-xs-50,.flex-offset-gt-xs-50,.layout-margin .flex-offset-gt-xs-50,.layout-margin .offset-gt-xs-50{margin-left:50%}[dir=rtl] .offset-gt-xs-50,[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .offset-gt-xs-50{margin-left:auto;margin-right:50%}.offset-gt-xs-55,.flex-offset-gt-xs-55,.layout-margin .flex-offset-gt-xs-55,.layout-margin .offset-gt-xs-55{margin-left:55%}[dir=rtl] .offset-gt-xs-55,[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .offset-gt-xs-55{margin-left:auto;margin-right:55%}.offset-gt-xs-60,.flex-offset-gt-xs-60,.layout-margin .flex-offset-gt-xs-60,.layout-margin .offset-gt-xs-60{margin-left:60%}[dir=rtl] .offset-gt-xs-60,[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .offset-gt-xs-60{margin-left:auto;margin-right:60%}.offset-gt-xs-65,.flex-offset-gt-xs-65,.layout-margin .flex-offset-gt-xs-65,.layout-margin .offset-gt-xs-65{margin-left:65%}[dir=rtl] .offset-gt-xs-65,[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .offset-gt-xs-65{margin-left:auto;margin-right:65%}.offset-gt-xs-70,.flex-offset-gt-xs-70,.layout-margin .flex-offset-gt-xs-70,.layout-margin .offset-gt-xs-70{margin-left:70%}[dir=rtl] .offset-gt-xs-70,[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .offset-gt-xs-70{margin-left:auto;margin-right:70%}.offset-gt-xs-75,.flex-offset-gt-xs-75,.layout-margin .flex-offset-gt-xs-75,.layout-margin .offset-gt-xs-75{margin-left:75%}[dir=rtl] .offset-gt-xs-75,[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .offset-gt-xs-75{margin-left:auto;margin-right:75%}.offset-gt-xs-80,.flex-offset-gt-xs-80,.layout-margin .flex-offset-gt-xs-80,.layout-margin .offset-gt-xs-80{margin-left:80%}[dir=rtl] .offset-gt-xs-80,[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .offset-gt-xs-80{margin-left:auto;margin-right:80%}.offset-gt-xs-85,.flex-offset-gt-xs-85,.layout-margin .flex-offset-gt-xs-85,.layout-margin .offset-gt-xs-85{margin-left:85%}[dir=rtl] .offset-gt-xs-85,[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .offset-gt-xs-85{margin-left:auto;margin-right:85%}.offset-gt-xs-90,.flex-offset-gt-xs-90,.layout-margin .flex-offset-gt-xs-90,.layout-margin .offset-gt-xs-90{margin-left:90%}[dir=rtl] .offset-gt-xs-90,[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .offset-gt-xs-90{margin-left:auto;margin-right:90%}.offset-gt-xs-95,.flex-offset-gt-xs-95,.layout-margin .flex-offset-gt-xs-95,.layout-margin .offset-gt-xs-95{margin-left:95%}[dir=rtl] .offset-gt-xs-95,[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .offset-gt-xs-95{margin-left:auto;margin-right:95%}.offset-gt-xs-33,.flex-offset-gt-xs-33,.layout-margin .flex-offset-gt-xs-33,.layout-margin .offset-gt-xs-33{margin-left:33.3333333333%}.offset-gt-xs-66,.flex-offset-gt-xs-66,.layout-margin .flex-offset-gt-xs-66,.layout-margin .offset-gt-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-xs-66,[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .offset-gt-xs-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.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-start,.layout-align-gt-xs-space-around-end,.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-start,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-start-start,.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-start-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-start-center>*,.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-start-end,.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-start-stretch,.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 100%;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:not(.show-gt-xs):not(.show-sm):not(.show),.hide-gt-xs: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}.offset-sm-0,.flex-offset-sm-0,.layout-margin .flex-offset-sm-0,.layout-margin .offset-sm-0{margin-left:0}[dir=rtl] .offset-sm-0,[dir=rtl] .flex-offset-sm-0,[dir=rtl] .layout-margin .flex-offset-sm-0,[dir=rtl] .layout-margin .offset-sm-0{margin-left:auto;margin-right:0}.offset-sm-5,.flex-offset-sm-5,.layout-margin .flex-offset-sm-5,.layout-margin .offset-sm-5{margin-left:5%}[dir=rtl] .offset-sm-5,[dir=rtl] .flex-offset-sm-5,[dir=rtl] .layout-margin .flex-offset-sm-5,[dir=rtl] .layout-margin .offset-sm-5{margin-left:auto;margin-right:5%}.offset-sm-10,.flex-offset-sm-10,.layout-margin .flex-offset-sm-10,.layout-margin .offset-sm-10{margin-left:10%}[dir=rtl] .offset-sm-10,[dir=rtl] .flex-offset-sm-10,[dir=rtl] .layout-margin .flex-offset-sm-10,[dir=rtl] .layout-margin .offset-sm-10{margin-left:auto;margin-right:10%}.offset-sm-15,.flex-offset-sm-15,.layout-margin .flex-offset-sm-15,.layout-margin .offset-sm-15{margin-left:15%}[dir=rtl] .offset-sm-15,[dir=rtl] .flex-offset-sm-15,[dir=rtl] .layout-margin .flex-offset-sm-15,[dir=rtl] .layout-margin .offset-sm-15{margin-left:auto;margin-right:15%}.offset-sm-20,.flex-offset-sm-20,.layout-margin .flex-offset-sm-20,.layout-margin .offset-sm-20{margin-left:20%}[dir=rtl] .offset-sm-20,[dir=rtl] .flex-offset-sm-20,[dir=rtl] .layout-margin .flex-offset-sm-20,[dir=rtl] .layout-margin .offset-sm-20{margin-left:auto;margin-right:20%}.offset-sm-25,.flex-offset-sm-25,.layout-margin .flex-offset-sm-25,.layout-margin .offset-sm-25{margin-left:25%}[dir=rtl] .offset-sm-25,[dir=rtl] .flex-offset-sm-25,[dir=rtl] .layout-margin .flex-offset-sm-25,[dir=rtl] .layout-margin .offset-sm-25{margin-left:auto;margin-right:25%}.offset-sm-30,.flex-offset-sm-30,.layout-margin .flex-offset-sm-30,.layout-margin .offset-sm-30{margin-left:30%}[dir=rtl] .offset-sm-30,[dir=rtl] .flex-offset-sm-30,[dir=rtl] .layout-margin .flex-offset-sm-30,[dir=rtl] .layout-margin .offset-sm-30{margin-left:auto;margin-right:30%}.offset-sm-35,.flex-offset-sm-35,.layout-margin .flex-offset-sm-35,.layout-margin .offset-sm-35{margin-left:35%}[dir=rtl] .offset-sm-35,[dir=rtl] .flex-offset-sm-35,[dir=rtl] .layout-margin .flex-offset-sm-35,[dir=rtl] .layout-margin .offset-sm-35{margin-left:auto;margin-right:35%}.offset-sm-40,.flex-offset-sm-40,.layout-margin .flex-offset-sm-40,.layout-margin .offset-sm-40{margin-left:40%}[dir=rtl] .offset-sm-40,[dir=rtl] .flex-offset-sm-40,[dir=rtl] .layout-margin .flex-offset-sm-40,[dir=rtl] .layout-margin .offset-sm-40{margin-left:auto;margin-right:40%}.offset-sm-45,.flex-offset-sm-45,.layout-margin .flex-offset-sm-45,.layout-margin .offset-sm-45{margin-left:45%}[dir=rtl] .offset-sm-45,[dir=rtl] .flex-offset-sm-45,[dir=rtl] .layout-margin .flex-offset-sm-45,[dir=rtl] .layout-margin .offset-sm-45{margin-left:auto;margin-right:45%}.offset-sm-50,.flex-offset-sm-50,.layout-margin .flex-offset-sm-50,.layout-margin .offset-sm-50{margin-left:50%}[dir=rtl] .offset-sm-50,[dir=rtl] .flex-offset-sm-50,[dir=rtl] .layout-margin .flex-offset-sm-50,[dir=rtl] .layout-margin .offset-sm-50{margin-left:auto;margin-right:50%}.offset-sm-55,.flex-offset-sm-55,.layout-margin .flex-offset-sm-55,.layout-margin .offset-sm-55{margin-left:55%}[dir=rtl] .offset-sm-55,[dir=rtl] .flex-offset-sm-55,[dir=rtl] .layout-margin .flex-offset-sm-55,[dir=rtl] .layout-margin .offset-sm-55{margin-left:auto;margin-right:55%}.offset-sm-60,.flex-offset-sm-60,.layout-margin .flex-offset-sm-60,.layout-margin .offset-sm-60{margin-left:60%}[dir=rtl] .offset-sm-60,[dir=rtl] .flex-offset-sm-60,[dir=rtl] .layout-margin .flex-offset-sm-60,[dir=rtl] .layout-margin .offset-sm-60{margin-left:auto;margin-right:60%}.offset-sm-65,.flex-offset-sm-65,.layout-margin .flex-offset-sm-65,.layout-margin .offset-sm-65{margin-left:65%}[dir=rtl] .offset-sm-65,[dir=rtl] .flex-offset-sm-65,[dir=rtl] .layout-margin .flex-offset-sm-65,[dir=rtl] .layout-margin .offset-sm-65{margin-left:auto;margin-right:65%}.offset-sm-70,.flex-offset-sm-70,.layout-margin .flex-offset-sm-70,.layout-margin .offset-sm-70{margin-left:70%}[dir=rtl] .offset-sm-70,[dir=rtl] .flex-offset-sm-70,[dir=rtl] .layout-margin .flex-offset-sm-70,[dir=rtl] .layout-margin .offset-sm-70{margin-left:auto;margin-right:70%}.offset-sm-75,.flex-offset-sm-75,.layout-margin .flex-offset-sm-75,.layout-margin .offset-sm-75{margin-left:75%}[dir=rtl] .offset-sm-75,[dir=rtl] .flex-offset-sm-75,[dir=rtl] .layout-margin .flex-offset-sm-75,[dir=rtl] .layout-margin .offset-sm-75{margin-left:auto;margin-right:75%}.offset-sm-80,.flex-offset-sm-80,.layout-margin .flex-offset-sm-80,.layout-margin .offset-sm-80{margin-left:80%}[dir=rtl] .offset-sm-80,[dir=rtl] .flex-offset-sm-80,[dir=rtl] .layout-margin .flex-offset-sm-80,[dir=rtl] .layout-margin .offset-sm-80{margin-left:auto;margin-right:80%}.offset-sm-85,.flex-offset-sm-85,.layout-margin .flex-offset-sm-85,.layout-margin .offset-sm-85{margin-left:85%}[dir=rtl] .offset-sm-85,[dir=rtl] .flex-offset-sm-85,[dir=rtl] .layout-margin .flex-offset-sm-85,[dir=rtl] .layout-margin .offset-sm-85{margin-left:auto;margin-right:85%}.offset-sm-90,.flex-offset-sm-90,.layout-margin .flex-offset-sm-90,.layout-margin .offset-sm-90{margin-left:90%}[dir=rtl] .offset-sm-90,[dir=rtl] .flex-offset-sm-90,[dir=rtl] .layout-margin .flex-offset-sm-90,[dir=rtl] .layout-margin .offset-sm-90{margin-left:auto;margin-right:90%}.offset-sm-95,.flex-offset-sm-95,.layout-margin .flex-offset-sm-95,.layout-margin .offset-sm-95{margin-left:95%}[dir=rtl] .offset-sm-95,[dir=rtl] .flex-offset-sm-95,[dir=rtl] .layout-margin .flex-offset-sm-95,[dir=rtl] .layout-margin .offset-sm-95{margin-left:auto;margin-right:95%}.offset-sm-33,.flex-offset-sm-33,.layout-margin .flex-offset-sm-33,.layout-margin .offset-sm-33{margin-left:33.3333333333%}.offset-sm-66,.flex-offset-sm-66,.layout-margin .flex-offset-sm-66,.layout-margin .offset-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-sm-66,[dir=rtl] .flex-offset-sm-66,[dir=rtl] .layout-margin .flex-offset-sm-66,[dir=rtl] .layout-margin .offset-sm-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-start,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-start,.layout-align-sm-end-center,.layout-align-sm-end-end,.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-start,.layout-align-sm-space-around-end,.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-start,.layout-align-sm-space-between-end,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-start-start,.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-between-start,.layout-align-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-start-center,.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-between-center,.layout-align-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-start-center>*,.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-start-end,.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-between-end,.layout-align-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-start-stretch,.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 100%;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}.offset-gt-sm-0,.flex-offset-gt-sm-0,.layout-margin .flex-offset-gt-sm-0,.layout-margin .offset-gt-sm-0{margin-left:0}[dir=rtl] .offset-gt-sm-0,[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .offset-gt-sm-0{margin-left:auto;margin-right:0}.offset-gt-sm-5,.flex-offset-gt-sm-5,.layout-margin .flex-offset-gt-sm-5,.layout-margin .offset-gt-sm-5{margin-left:5%}[dir=rtl] .offset-gt-sm-5,[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .offset-gt-sm-5{margin-left:auto;margin-right:5%}.offset-gt-sm-10,.flex-offset-gt-sm-10,.layout-margin .flex-offset-gt-sm-10,.layout-margin .offset-gt-sm-10{margin-left:10%}[dir=rtl] .offset-gt-sm-10,[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .offset-gt-sm-10{margin-left:auto;margin-right:10%}.offset-gt-sm-15,.flex-offset-gt-sm-15,.layout-margin .flex-offset-gt-sm-15,.layout-margin .offset-gt-sm-15{margin-left:15%}[dir=rtl] .offset-gt-sm-15,[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .offset-gt-sm-15{margin-left:auto;margin-right:15%}.offset-gt-sm-20,.flex-offset-gt-sm-20,.layout-margin .flex-offset-gt-sm-20,.layout-margin .offset-gt-sm-20{margin-left:20%}[dir=rtl] .offset-gt-sm-20,[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .offset-gt-sm-20{margin-left:auto;margin-right:20%}.offset-gt-sm-25,.flex-offset-gt-sm-25,.layout-margin .flex-offset-gt-sm-25,.layout-margin .offset-gt-sm-25{margin-left:25%}[dir=rtl] .offset-gt-sm-25,[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .offset-gt-sm-25{margin-left:auto;margin-right:25%}.offset-gt-sm-30,.flex-offset-gt-sm-30,.layout-margin .flex-offset-gt-sm-30,.layout-margin .offset-gt-sm-30{margin-left:30%}[dir=rtl] .offset-gt-sm-30,[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .offset-gt-sm-30{margin-left:auto;margin-right:30%}.offset-gt-sm-35,.flex-offset-gt-sm-35,.layout-margin .flex-offset-gt-sm-35,.layout-margin .offset-gt-sm-35{margin-left:35%}[dir=rtl] .offset-gt-sm-35,[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .offset-gt-sm-35{margin-left:auto;margin-right:35%}.offset-gt-sm-40,.flex-offset-gt-sm-40,.layout-margin .flex-offset-gt-sm-40,.layout-margin .offset-gt-sm-40{margin-left:40%}[dir=rtl] .offset-gt-sm-40,[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .offset-gt-sm-40{margin-left:auto;margin-right:40%}.offset-gt-sm-45,.flex-offset-gt-sm-45,.layout-margin .flex-offset-gt-sm-45,.layout-margin .offset-gt-sm-45{margin-left:45%}[dir=rtl] .offset-gt-sm-45,[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .offset-gt-sm-45{margin-left:auto;margin-right:45%}.offset-gt-sm-50,.flex-offset-gt-sm-50,.layout-margin .flex-offset-gt-sm-50,.layout-margin .offset-gt-sm-50{margin-left:50%}[dir=rtl] .offset-gt-sm-50,[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .offset-gt-sm-50{margin-left:auto;margin-right:50%}.offset-gt-sm-55,.flex-offset-gt-sm-55,.layout-margin .flex-offset-gt-sm-55,.layout-margin .offset-gt-sm-55{margin-left:55%}[dir=rtl] .offset-gt-sm-55,[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .offset-gt-sm-55{margin-left:auto;margin-right:55%}.offset-gt-sm-60,.flex-offset-gt-sm-60,.layout-margin .flex-offset-gt-sm-60,.layout-margin .offset-gt-sm-60{margin-left:60%}[dir=rtl] .offset-gt-sm-60,[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .offset-gt-sm-60{margin-left:auto;margin-right:60%}.offset-gt-sm-65,.flex-offset-gt-sm-65,.layout-margin .flex-offset-gt-sm-65,.layout-margin .offset-gt-sm-65{margin-left:65%}[dir=rtl] .offset-gt-sm-65,[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .offset-gt-sm-65{margin-left:auto;margin-right:65%}.offset-gt-sm-70,.flex-offset-gt-sm-70,.layout-margin .flex-offset-gt-sm-70,.layout-margin .offset-gt-sm-70{margin-left:70%}[dir=rtl] .offset-gt-sm-70,[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .offset-gt-sm-70{margin-left:auto;margin-right:70%}.offset-gt-sm-75,.flex-offset-gt-sm-75,.layout-margin .flex-offset-gt-sm-75,.layout-margin .offset-gt-sm-75{margin-left:75%}[dir=rtl] .offset-gt-sm-75,[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .offset-gt-sm-75{margin-left:auto;margin-right:75%}.offset-gt-sm-80,.flex-offset-gt-sm-80,.layout-margin .flex-offset-gt-sm-80,.layout-margin .offset-gt-sm-80{margin-left:80%}[dir=rtl] .offset-gt-sm-80,[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .offset-gt-sm-80{margin-left:auto;margin-right:80%}.offset-gt-sm-85,.flex-offset-gt-sm-85,.layout-margin .flex-offset-gt-sm-85,.layout-margin .offset-gt-sm-85{margin-left:85%}[dir=rtl] .offset-gt-sm-85,[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .offset-gt-sm-85{margin-left:auto;margin-right:85%}.offset-gt-sm-90,.flex-offset-gt-sm-90,.layout-margin .flex-offset-gt-sm-90,.layout-margin .offset-gt-sm-90{margin-left:90%}[dir=rtl] .offset-gt-sm-90,[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .offset-gt-sm-90{margin-left:auto;margin-right:90%}.offset-gt-sm-95,.flex-offset-gt-sm-95,.layout-margin .flex-offset-gt-sm-95,.layout-margin .offset-gt-sm-95{margin-left:95%}[dir=rtl] .offset-gt-sm-95,[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .offset-gt-sm-95{margin-left:auto;margin-right:95%}.offset-gt-sm-33,.flex-offset-gt-sm-33,.layout-margin .flex-offset-gt-sm-33,.layout-margin .offset-gt-sm-33{margin-left:33.3333333333%}.offset-gt-sm-66,.flex-offset-gt-sm-66,.layout-margin .flex-offset-gt-sm-66,.layout-margin .offset-gt-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-sm-66,[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .offset-gt-sm-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.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-start,.layout-align-gt-sm-space-around-end,.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-start,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-start-start,.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-start-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-start-center>*,.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-start-end,.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-start-stretch,.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 100%;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: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-gt-sm: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}.offset-md-0,.flex-offset-md-0,.layout-margin .flex-offset-md-0,.layout-margin .offset-md-0{margin-left:0}[dir=rtl] .offset-md-0,[dir=rtl] .flex-offset-md-0,[dir=rtl] .layout-margin .flex-offset-md-0,[dir=rtl] .layout-margin .offset-md-0{margin-left:auto;margin-right:0}.offset-md-5,.flex-offset-md-5,.layout-margin .flex-offset-md-5,.layout-margin .offset-md-5{margin-left:5%}[dir=rtl] .offset-md-5,[dir=rtl] .flex-offset-md-5,[dir=rtl] .layout-margin .flex-offset-md-5,[dir=rtl] .layout-margin .offset-md-5{margin-left:auto;margin-right:5%}.offset-md-10,.flex-offset-md-10,.layout-margin .flex-offset-md-10,.layout-margin .offset-md-10{margin-left:10%}[dir=rtl] .offset-md-10,[dir=rtl] .flex-offset-md-10,[dir=rtl] .layout-margin .flex-offset-md-10,[dir=rtl] .layout-margin .offset-md-10{margin-left:auto;margin-right:10%}.offset-md-15,.flex-offset-md-15,.layout-margin .flex-offset-md-15,.layout-margin .offset-md-15{margin-left:15%}[dir=rtl] .offset-md-15,[dir=rtl] .flex-offset-md-15,[dir=rtl] .layout-margin .flex-offset-md-15,[dir=rtl] .layout-margin .offset-md-15{margin-left:auto;margin-right:15%}.offset-md-20,.flex-offset-md-20,.layout-margin .flex-offset-md-20,.layout-margin .offset-md-20{margin-left:20%}[dir=rtl] .offset-md-20,[dir=rtl] .flex-offset-md-20,[dir=rtl] .layout-margin .flex-offset-md-20,[dir=rtl] .layout-margin .offset-md-20{margin-left:auto;margin-right:20%}.offset-md-25,.flex-offset-md-25,.layout-margin .flex-offset-md-25,.layout-margin .offset-md-25{margin-left:25%}[dir=rtl] .offset-md-25,[dir=rtl] .flex-offset-md-25,[dir=rtl] .layout-margin .flex-offset-md-25,[dir=rtl] .layout-margin .offset-md-25{margin-left:auto;margin-right:25%}.offset-md-30,.flex-offset-md-30,.layout-margin .flex-offset-md-30,.layout-margin .offset-md-30{margin-left:30%}[dir=rtl] .offset-md-30,[dir=rtl] .flex-offset-md-30,[dir=rtl] .layout-margin .flex-offset-md-30,[dir=rtl] .layout-margin .offset-md-30{margin-left:auto;margin-right:30%}.offset-md-35,.flex-offset-md-35,.layout-margin .flex-offset-md-35,.layout-margin .offset-md-35{margin-left:35%}[dir=rtl] .offset-md-35,[dir=rtl] .flex-offset-md-35,[dir=rtl] .layout-margin .flex-offset-md-35,[dir=rtl] .layout-margin .offset-md-35{margin-left:auto;margin-right:35%}.offset-md-40,.flex-offset-md-40,.layout-margin .flex-offset-md-40,.layout-margin .offset-md-40{margin-left:40%}[dir=rtl] .offset-md-40,[dir=rtl] .flex-offset-md-40,[dir=rtl] .layout-margin .flex-offset-md-40,[dir=rtl] .layout-margin .offset-md-40{margin-left:auto;margin-right:40%}.offset-md-45,.flex-offset-md-45,.layout-margin .flex-offset-md-45,.layout-margin .offset-md-45{margin-left:45%}[dir=rtl] .offset-md-45,[dir=rtl] .flex-offset-md-45,[dir=rtl] .layout-margin .flex-offset-md-45,[dir=rtl] .layout-margin .offset-md-45{margin-left:auto;margin-right:45%}.offset-md-50,.flex-offset-md-50,.layout-margin .flex-offset-md-50,.layout-margin .offset-md-50{margin-left:50%}[dir=rtl] .offset-md-50,[dir=rtl] .flex-offset-md-50,[dir=rtl] .layout-margin .flex-offset-md-50,[dir=rtl] .layout-margin .offset-md-50{margin-left:auto;margin-right:50%}.offset-md-55,.flex-offset-md-55,.layout-margin .flex-offset-md-55,.layout-margin .offset-md-55{margin-left:55%}[dir=rtl] .offset-md-55,[dir=rtl] .flex-offset-md-55,[dir=rtl] .layout-margin .flex-offset-md-55,[dir=rtl] .layout-margin .offset-md-55{margin-left:auto;margin-right:55%}.offset-md-60,.flex-offset-md-60,.layout-margin .flex-offset-md-60,.layout-margin .offset-md-60{margin-left:60%}[dir=rtl] .offset-md-60,[dir=rtl] .flex-offset-md-60,[dir=rtl] .layout-margin .flex-offset-md-60,[dir=rtl] .layout-margin .offset-md-60{margin-left:auto;margin-right:60%}.offset-md-65,.flex-offset-md-65,.layout-margin .flex-offset-md-65,.layout-margin .offset-md-65{margin-left:65%}[dir=rtl] .offset-md-65,[dir=rtl] .flex-offset-md-65,[dir=rtl] .layout-margin .flex-offset-md-65,[dir=rtl] .layout-margin .offset-md-65{margin-left:auto;margin-right:65%}.offset-md-70,.flex-offset-md-70,.layout-margin .flex-offset-md-70,.layout-margin .offset-md-70{margin-left:70%}[dir=rtl] .offset-md-70,[dir=rtl] .flex-offset-md-70,[dir=rtl] .layout-margin .flex-offset-md-70,[dir=rtl] .layout-margin .offset-md-70{margin-left:auto;margin-right:70%}.offset-md-75,.flex-offset-md-75,.layout-margin .flex-offset-md-75,.layout-margin .offset-md-75{margin-left:75%}[dir=rtl] .offset-md-75,[dir=rtl] .flex-offset-md-75,[dir=rtl] .layout-margin .flex-offset-md-75,[dir=rtl] .layout-margin .offset-md-75{margin-left:auto;margin-right:75%}.offset-md-80,.flex-offset-md-80,.layout-margin .flex-offset-md-80,.layout-margin .offset-md-80{margin-left:80%}[dir=rtl] .offset-md-80,[dir=rtl] .flex-offset-md-80,[dir=rtl] .layout-margin .flex-offset-md-80,[dir=rtl] .layout-margin .offset-md-80{margin-left:auto;margin-right:80%}.offset-md-85,.flex-offset-md-85,.layout-margin .flex-offset-md-85,.layout-margin .offset-md-85{margin-left:85%}[dir=rtl] .offset-md-85,[dir=rtl] .flex-offset-md-85,[dir=rtl] .layout-margin .flex-offset-md-85,[dir=rtl] .layout-margin .offset-md-85{margin-left:auto;margin-right:85%}.offset-md-90,.flex-offset-md-90,.layout-margin .flex-offset-md-90,.layout-margin .offset-md-90{margin-left:90%}[dir=rtl] .offset-md-90,[dir=rtl] .flex-offset-md-90,[dir=rtl] .layout-margin .flex-offset-md-90,[dir=rtl] .layout-margin .offset-md-90{margin-left:auto;margin-right:90%}.offset-md-95,.flex-offset-md-95,.layout-margin .flex-offset-md-95,.layout-margin .offset-md-95{margin-left:95%}[dir=rtl] .offset-md-95,[dir=rtl] .flex-offset-md-95,[dir=rtl] .layout-margin .flex-offset-md-95,[dir=rtl] .layout-margin .offset-md-95{margin-left:auto;margin-right:95%}.offset-md-33,.flex-offset-md-33,.layout-margin .flex-offset-md-33,.layout-margin .offset-md-33{margin-left:33.3333333333%}.offset-md-66,.flex-offset-md-66,.layout-margin .flex-offset-md-66,.layout-margin .offset-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-md-66,[dir=rtl] .flex-offset-md-66,[dir=rtl] .layout-margin .flex-offset-md-66,[dir=rtl] .layout-margin .offset-md-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-start,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-start,.layout-align-md-end-center,.layout-align-md-end-end,.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-start,.layout-align-md-space-around-end,.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-start,.layout-align-md-space-between-end,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-start-start,.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-between-start,.layout-align-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-md-start-center,.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-between-center,.layout-align-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-start-center>*,.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-between-center>*,.layout-align-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-start-end,.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-between-end,.layout-align-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-md-start-stretch,.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-between-stretch,.layout-align-md-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 100%;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}.offset-gt-md-0,.flex-offset-gt-md-0,.layout-margin .flex-offset-gt-md-0,.layout-margin .offset-gt-md-0{margin-left:0}[dir=rtl] .offset-gt-md-0,[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .layout-margin .flex-offset-gt-md-0,[dir=rtl] .layout-margin .offset-gt-md-0{margin-left:auto;margin-right:0}.offset-gt-md-5,.flex-offset-gt-md-5,.layout-margin .flex-offset-gt-md-5,.layout-margin .offset-gt-md-5{margin-left:5%}[dir=rtl] .offset-gt-md-5,[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .layout-margin .flex-offset-gt-md-5,[dir=rtl] .layout-margin .offset-gt-md-5{margin-left:auto;margin-right:5%}.offset-gt-md-10,.flex-offset-gt-md-10,.layout-margin .flex-offset-gt-md-10,.layout-margin .offset-gt-md-10{margin-left:10%}[dir=rtl] .offset-gt-md-10,[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .layout-margin .flex-offset-gt-md-10,[dir=rtl] .layout-margin .offset-gt-md-10{margin-left:auto;margin-right:10%}.offset-gt-md-15,.flex-offset-gt-md-15,.layout-margin .flex-offset-gt-md-15,.layout-margin .offset-gt-md-15{margin-left:15%}[dir=rtl] .offset-gt-md-15,[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .layout-margin .flex-offset-gt-md-15,[dir=rtl] .layout-margin .offset-gt-md-15{margin-left:auto;margin-right:15%}.offset-gt-md-20,.flex-offset-gt-md-20,.layout-margin .flex-offset-gt-md-20,.layout-margin .offset-gt-md-20{margin-left:20%}[dir=rtl] .offset-gt-md-20,[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .layout-margin .flex-offset-gt-md-20,[dir=rtl] .layout-margin .offset-gt-md-20{margin-left:auto;margin-right:20%}.offset-gt-md-25,.flex-offset-gt-md-25,.layout-margin .flex-offset-gt-md-25,.layout-margin .offset-gt-md-25{margin-left:25%}[dir=rtl] .offset-gt-md-25,[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .layout-margin .flex-offset-gt-md-25,[dir=rtl] .layout-margin .offset-gt-md-25{margin-left:auto;margin-right:25%}.offset-gt-md-30,.flex-offset-gt-md-30,.layout-margin .flex-offset-gt-md-30,.layout-margin .offset-gt-md-30{margin-left:30%}[dir=rtl] .offset-gt-md-30,[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .layout-margin .flex-offset-gt-md-30,[dir=rtl] .layout-margin .offset-gt-md-30{margin-left:auto;margin-right:30%}.offset-gt-md-35,.flex-offset-gt-md-35,.layout-margin .flex-offset-gt-md-35,.layout-margin .offset-gt-md-35{margin-left:35%}[dir=rtl] .offset-gt-md-35,[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .layout-margin .flex-offset-gt-md-35,[dir=rtl] .layout-margin .offset-gt-md-35{margin-left:auto;margin-right:35%}.offset-gt-md-40,.flex-offset-gt-md-40,.layout-margin .flex-offset-gt-md-40,.layout-margin .offset-gt-md-40{margin-left:40%}[dir=rtl] .offset-gt-md-40,[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .layout-margin .flex-offset-gt-md-40,[dir=rtl] .layout-margin .offset-gt-md-40{margin-left:auto;margin-right:40%}.offset-gt-md-45,.flex-offset-gt-md-45,.layout-margin .flex-offset-gt-md-45,.layout-margin .offset-gt-md-45{margin-left:45%}[dir=rtl] .offset-gt-md-45,[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .layout-margin .flex-offset-gt-md-45,[dir=rtl] .layout-margin .offset-gt-md-45{margin-left:auto;margin-right:45%}.offset-gt-md-50,.flex-offset-gt-md-50,.layout-margin .flex-offset-gt-md-50,.layout-margin .offset-gt-md-50{margin-left:50%}[dir=rtl] .offset-gt-md-50,[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .layout-margin .flex-offset-gt-md-50,[dir=rtl] .layout-margin .offset-gt-md-50{margin-left:auto;margin-right:50%}.offset-gt-md-55,.flex-offset-gt-md-55,.layout-margin .flex-offset-gt-md-55,.layout-margin .offset-gt-md-55{margin-left:55%}[dir=rtl] .offset-gt-md-55,[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .layout-margin .flex-offset-gt-md-55,[dir=rtl] .layout-margin .offset-gt-md-55{margin-left:auto;margin-right:55%}.offset-gt-md-60,.flex-offset-gt-md-60,.layout-margin .flex-offset-gt-md-60,.layout-margin .offset-gt-md-60{margin-left:60%}[dir=rtl] .offset-gt-md-60,[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .layout-margin .flex-offset-gt-md-60,[dir=rtl] .layout-margin .offset-gt-md-60{margin-left:auto;margin-right:60%}.offset-gt-md-65,.flex-offset-gt-md-65,.layout-margin .flex-offset-gt-md-65,.layout-margin .offset-gt-md-65{margin-left:65%}[dir=rtl] .offset-gt-md-65,[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .layout-margin .flex-offset-gt-md-65,[dir=rtl] .layout-margin .offset-gt-md-65{margin-left:auto;margin-right:65%}.offset-gt-md-70,.flex-offset-gt-md-70,.layout-margin .flex-offset-gt-md-70,.layout-margin .offset-gt-md-70{margin-left:70%}[dir=rtl] .offset-gt-md-70,[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .layout-margin .flex-offset-gt-md-70,[dir=rtl] .layout-margin .offset-gt-md-70{margin-left:auto;margin-right:70%}.offset-gt-md-75,.flex-offset-gt-md-75,.layout-margin .flex-offset-gt-md-75,.layout-margin .offset-gt-md-75{margin-left:75%}[dir=rtl] .offset-gt-md-75,[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .layout-margin .flex-offset-gt-md-75,[dir=rtl] .layout-margin .offset-gt-md-75{margin-left:auto;margin-right:75%}.offset-gt-md-80,.flex-offset-gt-md-80,.layout-margin .flex-offset-gt-md-80,.layout-margin .offset-gt-md-80{margin-left:80%}[dir=rtl] .offset-gt-md-80,[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .layout-margin .flex-offset-gt-md-80,[dir=rtl] .layout-margin .offset-gt-md-80{margin-left:auto;margin-right:80%}.offset-gt-md-85,.flex-offset-gt-md-85,.layout-margin .flex-offset-gt-md-85,.layout-margin .offset-gt-md-85{margin-left:85%}[dir=rtl] .offset-gt-md-85,[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .layout-margin .flex-offset-gt-md-85,[dir=rtl] .layout-margin .offset-gt-md-85{margin-left:auto;margin-right:85%}.offset-gt-md-90,.flex-offset-gt-md-90,.layout-margin .flex-offset-gt-md-90,.layout-margin .offset-gt-md-90{margin-left:90%}[dir=rtl] .offset-gt-md-90,[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .layout-margin .flex-offset-gt-md-90,[dir=rtl] .layout-margin .offset-gt-md-90{margin-left:auto;margin-right:90%}.offset-gt-md-95,.flex-offset-gt-md-95,.layout-margin .flex-offset-gt-md-95,.layout-margin .offset-gt-md-95{margin-left:95%}[dir=rtl] .offset-gt-md-95,[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .layout-margin .flex-offset-gt-md-95,[dir=rtl] .layout-margin .offset-gt-md-95{margin-left:auto;margin-right:95%}.offset-gt-md-33,.flex-offset-gt-md-33,.layout-margin .flex-offset-gt-md-33,.layout-margin .offset-gt-md-33{margin-left:33.3333333333%}.offset-gt-md-66,.flex-offset-gt-md-66,.layout-margin .flex-offset-gt-md-66,.layout-margin .offset-gt-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-md-66,[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .layout-margin .flex-offset-gt-md-66,[dir=rtl] .layout-margin .offset-gt-md-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-start,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.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-start,.layout-align-gt-md-space-around-end,.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-start,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-start-start,.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-start-center,.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-start-center>*,.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-start-end,.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-start-stretch,.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 100%;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: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-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-md: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}.offset-lg-0,.flex-offset-lg-0,.layout-margin .flex-offset-lg-0,.layout-margin .offset-lg-0{margin-left:0}[dir=rtl] .offset-lg-0,[dir=rtl] .flex-offset-lg-0,[dir=rtl] .layout-margin .flex-offset-lg-0,[dir=rtl] .layout-margin .offset-lg-0{margin-left:auto;margin-right:0}.offset-lg-5,.flex-offset-lg-5,.layout-margin .flex-offset-lg-5,.layout-margin .offset-lg-5{margin-left:5%}[dir=rtl] .offset-lg-5,[dir=rtl] .flex-offset-lg-5,[dir=rtl] .layout-margin .flex-offset-lg-5,[dir=rtl] .layout-margin .offset-lg-5{margin-left:auto;margin-right:5%}.offset-lg-10,.flex-offset-lg-10,.layout-margin .flex-offset-lg-10,.layout-margin .offset-lg-10{margin-left:10%}[dir=rtl] .offset-lg-10,[dir=rtl] .flex-offset-lg-10,[dir=rtl] .layout-margin .flex-offset-lg-10,[dir=rtl] .layout-margin .offset-lg-10{margin-left:auto;margin-right:10%}.offset-lg-15,.flex-offset-lg-15,.layout-margin .flex-offset-lg-15,.layout-margin .offset-lg-15{margin-left:15%}[dir=rtl] .offset-lg-15,[dir=rtl] .flex-offset-lg-15,[dir=rtl] .layout-margin .flex-offset-lg-15,[dir=rtl] .layout-margin .offset-lg-15{margin-left:auto;margin-right:15%}.offset-lg-20,.flex-offset-lg-20,.layout-margin .flex-offset-lg-20,.layout-margin .offset-lg-20{margin-left:20%}[dir=rtl] .offset-lg-20,[dir=rtl] .flex-offset-lg-20,[dir=rtl] .layout-margin .flex-offset-lg-20,[dir=rtl] .layout-margin .offset-lg-20{margin-left:auto;margin-right:20%}.offset-lg-25,.flex-offset-lg-25,.layout-margin .flex-offset-lg-25,.layout-margin .offset-lg-25{margin-left:25%}[dir=rtl] .offset-lg-25,[dir=rtl] .flex-offset-lg-25,[dir=rtl] .layout-margin .flex-offset-lg-25,[dir=rtl] .layout-margin .offset-lg-25{margin-left:auto;margin-right:25%}.offset-lg-30,.flex-offset-lg-30,.layout-margin .flex-offset-lg-30,.layout-margin .offset-lg-30{margin-left:30%}[dir=rtl] .offset-lg-30,[dir=rtl] .flex-offset-lg-30,[dir=rtl] .layout-margin .flex-offset-lg-30,[dir=rtl] .layout-margin .offset-lg-30{margin-left:auto;margin-right:30%}.offset-lg-35,.flex-offset-lg-35,.layout-margin .flex-offset-lg-35,.layout-margin .offset-lg-35{margin-left:35%}[dir=rtl] .offset-lg-35,[dir=rtl] .flex-offset-lg-35,[dir=rtl] .layout-margin .flex-offset-lg-35,[dir=rtl] .layout-margin .offset-lg-35{margin-left:auto;margin-right:35%}.offset-lg-40,.flex-offset-lg-40,.layout-margin .flex-offset-lg-40,.layout-margin .offset-lg-40{margin-left:40%}[dir=rtl] .offset-lg-40,[dir=rtl] .flex-offset-lg-40,[dir=rtl] .layout-margin .flex-offset-lg-40,[dir=rtl] .layout-margin .offset-lg-40{margin-left:auto;margin-right:40%}.offset-lg-45,.flex-offset-lg-45,.layout-margin .flex-offset-lg-45,.layout-margin .offset-lg-45{margin-left:45%}[dir=rtl] .offset-lg-45,[dir=rtl] .flex-offset-lg-45,[dir=rtl] .layout-margin .flex-offset-lg-45,[dir=rtl] .layout-margin .offset-lg-45{margin-left:auto;margin-right:45%}.offset-lg-50,.flex-offset-lg-50,.layout-margin .flex-offset-lg-50,.layout-margin .offset-lg-50{margin-left:50%}[dir=rtl] .offset-lg-50,[dir=rtl] .flex-offset-lg-50,[dir=rtl] .layout-margin .flex-offset-lg-50,[dir=rtl] .layout-margin .offset-lg-50{margin-left:auto;margin-right:50%}.offset-lg-55,.flex-offset-lg-55,.layout-margin .flex-offset-lg-55,.layout-margin .offset-lg-55{margin-left:55%}[dir=rtl] .offset-lg-55,[dir=rtl] .flex-offset-lg-55,[dir=rtl] .layout-margin .flex-offset-lg-55,[dir=rtl] .layout-margin .offset-lg-55{margin-left:auto;margin-right:55%}.offset-lg-60,.flex-offset-lg-60,.layout-margin .flex-offset-lg-60,.layout-margin .offset-lg-60{margin-left:60%}[dir=rtl] .offset-lg-60,[dir=rtl] .flex-offset-lg-60,[dir=rtl] .layout-margin .flex-offset-lg-60,[dir=rtl] .layout-margin .offset-lg-60{margin-left:auto;margin-right:60%}.offset-lg-65,.flex-offset-lg-65,.layout-margin .flex-offset-lg-65,.layout-margin .offset-lg-65{margin-left:65%}[dir=rtl] .offset-lg-65,[dir=rtl] .flex-offset-lg-65,[dir=rtl] .layout-margin .flex-offset-lg-65,[dir=rtl] .layout-margin .offset-lg-65{margin-left:auto;margin-right:65%}.offset-lg-70,.flex-offset-lg-70,.layout-margin .flex-offset-lg-70,.layout-margin .offset-lg-70{margin-left:70%}[dir=rtl] .offset-lg-70,[dir=rtl] .flex-offset-lg-70,[dir=rtl] .layout-margin .flex-offset-lg-70,[dir=rtl] .layout-margin .offset-lg-70{margin-left:auto;margin-right:70%}.offset-lg-75,.flex-offset-lg-75,.layout-margin .flex-offset-lg-75,.layout-margin .offset-lg-75{margin-left:75%}[dir=rtl] .offset-lg-75,[dir=rtl] .flex-offset-lg-75,[dir=rtl] .layout-margin .flex-offset-lg-75,[dir=rtl] .layout-margin .offset-lg-75{margin-left:auto;margin-right:75%}.offset-lg-80,.flex-offset-lg-80,.layout-margin .flex-offset-lg-80,.layout-margin .offset-lg-80{margin-left:80%}[dir=rtl] .offset-lg-80,[dir=rtl] .flex-offset-lg-80,[dir=rtl] .layout-margin .flex-offset-lg-80,[dir=rtl] .layout-margin .offset-lg-80{margin-left:auto;margin-right:80%}.offset-lg-85,.flex-offset-lg-85,.layout-margin .flex-offset-lg-85,.layout-margin .offset-lg-85{margin-left:85%}[dir=rtl] .offset-lg-85,[dir=rtl] .flex-offset-lg-85,[dir=rtl] .layout-margin .flex-offset-lg-85,[dir=rtl] .layout-margin .offset-lg-85{margin-left:auto;margin-right:85%}.offset-lg-90,.flex-offset-lg-90,.layout-margin .flex-offset-lg-90,.layout-margin .offset-lg-90{margin-left:90%}[dir=rtl] .offset-lg-90,[dir=rtl] .flex-offset-lg-90,[dir=rtl] .layout-margin .flex-offset-lg-90,[dir=rtl] .layout-margin .offset-lg-90{margin-left:auto;margin-right:90%}.offset-lg-95,.flex-offset-lg-95,.layout-margin .flex-offset-lg-95,.layout-margin .offset-lg-95{margin-left:95%}[dir=rtl] .offset-lg-95,[dir=rtl] .flex-offset-lg-95,[dir=rtl] .layout-margin .flex-offset-lg-95,[dir=rtl] .layout-margin .offset-lg-95{margin-left:auto;margin-right:95%}.offset-lg-33,.flex-offset-lg-33,.layout-margin .flex-offset-lg-33,.layout-margin .offset-lg-33{margin-left:33.3333333333%}.offset-lg-66,.flex-offset-lg-66,.layout-margin .flex-offset-lg-66,.layout-margin .offset-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-lg-66,[dir=rtl] .flex-offset-lg-66,[dir=rtl] .layout-margin .flex-offset-lg-66,[dir=rtl] .layout-margin .offset-lg-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-start,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-start,.layout-align-lg-end-center,.layout-align-lg-end-end,.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-start,.layout-align-lg-space-around-end,.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-start,.layout-align-lg-space-between-end,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-start-start,.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-between-start,.layout-align-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-start-center,.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-between-center,.layout-align-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-start-center>*,.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-start-end,.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-between-end,.layout-align-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-start-stretch,.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 100%;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}.offset-gt-lg-0,.flex-offset-gt-lg-0,.layout-margin .flex-offset-gt-lg-0,.layout-margin .offset-gt-lg-0{margin-left:0}[dir=rtl] .offset-gt-lg-0,[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .offset-gt-lg-0{margin-left:auto;margin-right:0}.offset-gt-lg-5,.flex-offset-gt-lg-5,.layout-margin .flex-offset-gt-lg-5,.layout-margin .offset-gt-lg-5{margin-left:5%}[dir=rtl] .offset-gt-lg-5,[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .offset-gt-lg-5{margin-left:auto;margin-right:5%}.offset-gt-lg-10,.flex-offset-gt-lg-10,.layout-margin .flex-offset-gt-lg-10,.layout-margin .offset-gt-lg-10{margin-left:10%}[dir=rtl] .offset-gt-lg-10,[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .offset-gt-lg-10{margin-left:auto;margin-right:10%}.offset-gt-lg-15,.flex-offset-gt-lg-15,.layout-margin .flex-offset-gt-lg-15,.layout-margin .offset-gt-lg-15{margin-left:15%}[dir=rtl] .offset-gt-lg-15,[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .offset-gt-lg-15{margin-left:auto;margin-right:15%}.offset-gt-lg-20,.flex-offset-gt-lg-20,.layout-margin .flex-offset-gt-lg-20,.layout-margin .offset-gt-lg-20{margin-left:20%}[dir=rtl] .offset-gt-lg-20,[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .offset-gt-lg-20{margin-left:auto;margin-right:20%}.offset-gt-lg-25,.flex-offset-gt-lg-25,.layout-margin .flex-offset-gt-lg-25,.layout-margin .offset-gt-lg-25{margin-left:25%}[dir=rtl] .offset-gt-lg-25,[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .offset-gt-lg-25{margin-left:auto;margin-right:25%}.offset-gt-lg-30,.flex-offset-gt-lg-30,.layout-margin .flex-offset-gt-lg-30,.layout-margin .offset-gt-lg-30{margin-left:30%}[dir=rtl] .offset-gt-lg-30,[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .offset-gt-lg-30{margin-left:auto;margin-right:30%}.offset-gt-lg-35,.flex-offset-gt-lg-35,.layout-margin .flex-offset-gt-lg-35,.layout-margin .offset-gt-lg-35{margin-left:35%}[dir=rtl] .offset-gt-lg-35,[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .offset-gt-lg-35{margin-left:auto;margin-right:35%}.offset-gt-lg-40,.flex-offset-gt-lg-40,.layout-margin .flex-offset-gt-lg-40,.layout-margin .offset-gt-lg-40{margin-left:40%}[dir=rtl] .offset-gt-lg-40,[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .offset-gt-lg-40{margin-left:auto;margin-right:40%}.offset-gt-lg-45,.flex-offset-gt-lg-45,.layout-margin .flex-offset-gt-lg-45,.layout-margin .offset-gt-lg-45{margin-left:45%}[dir=rtl] .offset-gt-lg-45,[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .offset-gt-lg-45{margin-left:auto;margin-right:45%}.offset-gt-lg-50,.flex-offset-gt-lg-50,.layout-margin .flex-offset-gt-lg-50,.layout-margin .offset-gt-lg-50{margin-left:50%}[dir=rtl] .offset-gt-lg-50,[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .offset-gt-lg-50{margin-left:auto;margin-right:50%}.offset-gt-lg-55,.flex-offset-gt-lg-55,.layout-margin .flex-offset-gt-lg-55,.layout-margin .offset-gt-lg-55{margin-left:55%}[dir=rtl] .offset-gt-lg-55,[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .offset-gt-lg-55{margin-left:auto;margin-right:55%}.offset-gt-lg-60,.flex-offset-gt-lg-60,.layout-margin .flex-offset-gt-lg-60,.layout-margin .offset-gt-lg-60{margin-left:60%}[dir=rtl] .offset-gt-lg-60,[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .offset-gt-lg-60{margin-left:auto;margin-right:60%}.offset-gt-lg-65,.flex-offset-gt-lg-65,.layout-margin .flex-offset-gt-lg-65,.layout-margin .offset-gt-lg-65{margin-left:65%}[dir=rtl] .offset-gt-lg-65,[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .offset-gt-lg-65{margin-left:auto;margin-right:65%}.offset-gt-lg-70,.flex-offset-gt-lg-70,.layout-margin .flex-offset-gt-lg-70,.layout-margin .offset-gt-lg-70{margin-left:70%}[dir=rtl] .offset-gt-lg-70,[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .offset-gt-lg-70{margin-left:auto;margin-right:70%}.offset-gt-lg-75,.flex-offset-gt-lg-75,.layout-margin .flex-offset-gt-lg-75,.layout-margin .offset-gt-lg-75{margin-left:75%}[dir=rtl] .offset-gt-lg-75,[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .offset-gt-lg-75{margin-left:auto;margin-right:75%}.offset-gt-lg-80,.flex-offset-gt-lg-80,.layout-margin .flex-offset-gt-lg-80,.layout-margin .offset-gt-lg-80{margin-left:80%}[dir=rtl] .offset-gt-lg-80,[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .offset-gt-lg-80{margin-left:auto;margin-right:80%}.offset-gt-lg-85,.flex-offset-gt-lg-85,.layout-margin .flex-offset-gt-lg-85,.layout-margin .offset-gt-lg-85{margin-left:85%}[dir=rtl] .offset-gt-lg-85,[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .offset-gt-lg-85{margin-left:auto;margin-right:85%}.offset-gt-lg-90,.flex-offset-gt-lg-90,.layout-margin .flex-offset-gt-lg-90,.layout-margin .offset-gt-lg-90{margin-left:90%}[dir=rtl] .offset-gt-lg-90,[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .offset-gt-lg-90{margin-left:auto;margin-right:90%}.offset-gt-lg-95,.flex-offset-gt-lg-95,.layout-margin .flex-offset-gt-lg-95,.layout-margin .offset-gt-lg-95{margin-left:95%}[dir=rtl] .offset-gt-lg-95,[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .offset-gt-lg-95{margin-left:auto;margin-right:95%}.offset-gt-lg-33,.flex-offset-gt-lg-33,.layout-margin .flex-offset-gt-lg-33,.layout-margin .offset-gt-lg-33{margin-left:33.3333333333%}.offset-gt-lg-66,.flex-offset-gt-lg-66,.layout-margin .flex-offset-gt-lg-66,.layout-margin .offset-gt-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-lg-66,[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .offset-gt-lg-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.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-start,.layout-align-gt-lg-space-around-end,.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-start,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-start-start,.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-start-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-start-center>*,.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-start-end,.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-start-stretch,.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 100%;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}.offset-xl-0,.flex-offset-xl-0,.layout-margin .flex-offset-xl-0,.layout-margin .offset-xl-0{margin-left:0}[dir=rtl] .offset-xl-0,[dir=rtl] .flex-offset-xl-0,[dir=rtl] .layout-margin .flex-offset-xl-0,[dir=rtl] .layout-margin .offset-xl-0{margin-left:auto;margin-right:0}.offset-xl-5,.flex-offset-xl-5,.layout-margin .flex-offset-xl-5,.layout-margin .offset-xl-5{margin-left:5%}[dir=rtl] .offset-xl-5,[dir=rtl] .flex-offset-xl-5,[dir=rtl] .layout-margin .flex-offset-xl-5,[dir=rtl] .layout-margin .offset-xl-5{margin-left:auto;margin-right:5%}.offset-xl-10,.flex-offset-xl-10,.layout-margin .flex-offset-xl-10,.layout-margin .offset-xl-10{margin-left:10%}[dir=rtl] .offset-xl-10,[dir=rtl] .flex-offset-xl-10,[dir=rtl] .layout-margin .flex-offset-xl-10,[dir=rtl] .layout-margin .offset-xl-10{margin-left:auto;margin-right:10%}.offset-xl-15,.flex-offset-xl-15,.layout-margin .flex-offset-xl-15,.layout-margin .offset-xl-15{margin-left:15%}[dir=rtl] .offset-xl-15,[dir=rtl] .flex-offset-xl-15,[dir=rtl] .layout-margin .flex-offset-xl-15,[dir=rtl] .layout-margin .offset-xl-15{margin-left:auto;margin-right:15%}.offset-xl-20,.flex-offset-xl-20,.layout-margin .flex-offset-xl-20,.layout-margin .offset-xl-20{margin-left:20%}[dir=rtl] .offset-xl-20,[dir=rtl] .flex-offset-xl-20,[dir=rtl] .layout-margin .flex-offset-xl-20,[dir=rtl] .layout-margin .offset-xl-20{margin-left:auto;margin-right:20%}.offset-xl-25,.flex-offset-xl-25,.layout-margin .flex-offset-xl-25,.layout-margin .offset-xl-25{margin-left:25%}[dir=rtl] .offset-xl-25,[dir=rtl] .flex-offset-xl-25,[dir=rtl] .layout-margin .flex-offset-xl-25,[dir=rtl] .layout-margin .offset-xl-25{margin-left:auto;margin-right:25%}.offset-xl-30,.flex-offset-xl-30,.layout-margin .flex-offset-xl-30,.layout-margin .offset-xl-30{margin-left:30%}[dir=rtl] .offset-xl-30,[dir=rtl] .flex-offset-xl-30,[dir=rtl] .layout-margin .flex-offset-xl-30,[dir=rtl] .layout-margin .offset-xl-30{margin-left:auto;margin-right:30%}.offset-xl-35,.flex-offset-xl-35,.layout-margin .flex-offset-xl-35,.layout-margin .offset-xl-35{margin-left:35%}[dir=rtl] .offset-xl-35,[dir=rtl] .flex-offset-xl-35,[dir=rtl] .layout-margin .flex-offset-xl-35,[dir=rtl] .layout-margin .offset-xl-35{margin-left:auto;margin-right:35%}.offset-xl-40,.flex-offset-xl-40,.layout-margin .flex-offset-xl-40,.layout-margin .offset-xl-40{margin-left:40%}[dir=rtl] .offset-xl-40,[dir=rtl] .flex-offset-xl-40,[dir=rtl] .layout-margin .flex-offset-xl-40,[dir=rtl] .layout-margin .offset-xl-40{margin-left:auto;margin-right:40%}.offset-xl-45,.flex-offset-xl-45,.layout-margin .flex-offset-xl-45,.layout-margin .offset-xl-45{margin-left:45%}[dir=rtl] .offset-xl-45,[dir=rtl] .flex-offset-xl-45,[dir=rtl] .layout-margin .flex-offset-xl-45,[dir=rtl] .layout-margin .offset-xl-45{margin-left:auto;margin-right:45%}.offset-xl-50,.flex-offset-xl-50,.layout-margin .flex-offset-xl-50,.layout-margin .offset-xl-50{margin-left:50%}[dir=rtl] .offset-xl-50,[dir=rtl] .flex-offset-xl-50,[dir=rtl] .layout-margin .flex-offset-xl-50,[dir=rtl] .layout-margin .offset-xl-50{margin-left:auto;margin-right:50%}.offset-xl-55,.flex-offset-xl-55,.layout-margin .flex-offset-xl-55,.layout-margin .offset-xl-55{margin-left:55%}[dir=rtl] .offset-xl-55,[dir=rtl] .flex-offset-xl-55,[dir=rtl] .layout-margin .flex-offset-xl-55,[dir=rtl] .layout-margin .offset-xl-55{margin-left:auto;margin-right:55%}.offset-xl-60,.flex-offset-xl-60,.layout-margin .flex-offset-xl-60,.layout-margin .offset-xl-60{margin-left:60%}[dir=rtl] .offset-xl-60,[dir=rtl] .flex-offset-xl-60,[dir=rtl] .layout-margin .flex-offset-xl-60,[dir=rtl] .layout-margin .offset-xl-60{margin-left:auto;margin-right:60%}.offset-xl-65,.flex-offset-xl-65,.layout-margin .flex-offset-xl-65,.layout-margin .offset-xl-65{margin-left:65%}[dir=rtl] .offset-xl-65,[dir=rtl] .flex-offset-xl-65,[dir=rtl] .layout-margin .flex-offset-xl-65,[dir=rtl] .layout-margin .offset-xl-65{margin-left:auto;margin-right:65%}.offset-xl-70,.flex-offset-xl-70,.layout-margin .flex-offset-xl-70,.layout-margin .offset-xl-70{margin-left:70%}[dir=rtl] .offset-xl-70,[dir=rtl] .flex-offset-xl-70,[dir=rtl] .layout-margin .flex-offset-xl-70,[dir=rtl] .layout-margin .offset-xl-70{margin-left:auto;margin-right:70%}.offset-xl-75,.flex-offset-xl-75,.layout-margin .flex-offset-xl-75,.layout-margin .offset-xl-75{margin-left:75%}[dir=rtl] .offset-xl-75,[dir=rtl] .flex-offset-xl-75,[dir=rtl] .layout-margin .flex-offset-xl-75,[dir=rtl] .layout-margin .offset-xl-75{margin-left:auto;margin-right:75%}.offset-xl-80,.flex-offset-xl-80,.layout-margin .flex-offset-xl-80,.layout-margin .offset-xl-80{margin-left:80%}[dir=rtl] .offset-xl-80,[dir=rtl] .flex-offset-xl-80,[dir=rtl] .layout-margin .flex-offset-xl-80,[dir=rtl] .layout-margin .offset-xl-80{margin-left:auto;margin-right:80%}.offset-xl-85,.flex-offset-xl-85,.layout-margin .flex-offset-xl-85,.layout-margin .offset-xl-85{margin-left:85%}[dir=rtl] .offset-xl-85,[dir=rtl] .flex-offset-xl-85,[dir=rtl] .layout-margin .flex-offset-xl-85,[dir=rtl] .layout-margin .offset-xl-85{margin-left:auto;margin-right:85%}.offset-xl-90,.flex-offset-xl-90,.layout-margin .flex-offset-xl-90,.layout-margin .offset-xl-90{margin-left:90%}[dir=rtl] .offset-xl-90,[dir=rtl] .flex-offset-xl-90,[dir=rtl] .layout-margin .flex-offset-xl-90,[dir=rtl] .layout-margin .offset-xl-90{margin-left:auto;margin-right:90%}.offset-xl-95,.flex-offset-xl-95,.layout-margin .flex-offset-xl-95,.layout-margin .offset-xl-95{margin-left:95%}[dir=rtl] .offset-xl-95,[dir=rtl] .flex-offset-xl-95,[dir=rtl] .layout-margin .flex-offset-xl-95,[dir=rtl] .layout-margin .offset-xl-95{margin-left:auto;margin-right:95%}.offset-xl-33,.flex-offset-xl-33,.layout-margin .flex-offset-xl-33,.layout-margin .offset-xl-33{margin-left:33.3333333333%}.offset-xl-66,.flex-offset-xl-66,.layout-margin .flex-offset-xl-66,.layout-margin .offset-xl-66{margin-left:66.6666666667%}[dir=rtl] .offset-xl-66,[dir=rtl] .flex-offset-xl-66,[dir=rtl] .layout-margin .flex-offset-xl-66,[dir=rtl] .layout-margin .offset-xl-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-start,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-start,.layout-align-xl-end-center,.layout-align-xl-end-end,.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-start,.layout-align-xl-space-around-end,.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-start,.layout-align-xl-space-between-end,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-start-start,.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-between-start,.layout-align-xl-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-start-center,.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-between-center,.layout-align-xl-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-start-center>*,.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-start-end,.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-between-end,.layout-align-xl-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-start-stretch,.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 100%;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: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-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-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-lg: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}}:root{--xc-ws-div-color: #011f6a;--xc-ws-text-color: #ffffff;--xc-ws-text-button-color: #ffffff;--xc-ws-button-color: #011f6a;--xc-ws-background-color: #fafafa;--xc-ws-client-height: 450px;--xc-ws-client-width: 295px}span.ng-binding,span.field-description{user-select:none}.centered-text{text-align:center}::-webkit-scrollbar{width:0;background:transparent}::-webkit-scrollbar-thumb{background:transparent;border-radius:0px}.field-description{font-size:13px;line-height:14px;color:gray;padding:5px 0px 5px 0px}.field-description.error{color:#dd2c00}.md-button.upload-button{padding:0 16px;height:36px}md-icon.material-icons{color:inherit !important}.white-label,.md-toolbar-tools .title{user-select:none}.white-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.white-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-fab.upload-button,.md-fab.upload-button.md-button.md-default-theme.md-raised:not([disabled]) md-icon,.md-fab.upload-button.md-button.md-raised:not([disabled]) md-icon{color:var(--xc-ws-text-color) !important;background:var(--xc-ws-div-color) !important}.form-input-container span{word-break:break-all}.chat-online ::-webkit-scrollbar{width:5px;background:var(--xc-ws-div-color)}.chat-online ::-webkit-scrollbar-thumb{background:linear-gradient(13deg, var(--xc-ws-text-color), var(--xc-ws-div-color));border-radius:10px}.chat-online ::-webkit-scrollbar-thumb:hover{background:linear-gradient(13deg, var(--xc-ws-div-color), var(--xc-ws-text-color))}.chat-online form{display:flex;width:100%;height:calc(100% - 20px);overflow:auto;padding:1em 0px 40px 0px;position:relative;max-width:100%;overflow-x:hidden;margin-bottom:10px}.chat-online form .form-field{margin-right:10px;margin-left:10px}.chat-online form .form-input-container{width:100%;height:100%;overflow:auto;scrollbar-width:none}.chat-online form div[ng-switch-when=label] md-content{overflow:hidden}.chat-online form div[ng-switch-when=label] md-content span{overflow:hidden}.chat-online form div.online-button-wrapper,.chat-online form div.offline-button-wrapper{position:fixed;bottom:30px;left:0px;width:calc(100% - 40px);padding:0px 20px;display:flex;background:transparent;align-items:center;justify-content:center}.chat-online form div.online-button-wrapper button,.chat-online form div.offline-button-wrapper button{margin:8px 0px;padding:2px;width:100%}.chat-online form .layout-row,.chat-online form .layout-column{flex-wrap:wrap;justify-content:start}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button,.chat-online form .layout-column md-checkbox,.chat-online form .layout-column md-radio-button{padding:4px 0;margin-left:unset !important;word-break:break-all}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button{min-width:50%;max-width:50%}.chat-online form button.upload-button{margin:6px 8px 6px 0}.chat-online form button.upload-button md-icon{font-size:20px}.chat-unmanaged{display:flex;flex-direction:column}.chat-unmanaged form{flex-grow:1;max-width:100%;overflow-x:hidden}.chat-closing{height:100%;padding:20px;overflow:hidden;align-items:stretch;justify-content:space-between}.chat-closing>md-content,.chat-closing>form{max-width:100%;overflow-x:hidden}.chat-closing>md-content,.chat-closing>md-content span,.chat-closing>form,.chat-closing>form span{width:100%}.logo{width:32px}#attachmentButton:hover .mdi-attachment:before{color:#555 !important;opacity:.85 !important}#input_text{position:relative !important;width:100% !important;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:1px solid #ccc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}#input_text:focus-within{border-color:#66afe9;outline:0;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#attachmentButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}i.icon_color{color:red}#sendButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}.emojionearea,.emojionearea.form-control{display:block;position:relative !important;width:100%;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:0px solid #ccc !important;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-webkit-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.mdi mdi-attachment mdi-24px mdi-light ng-scope::before{color:#a9a9a9}.mdi-attachment:hover{color:#555 !important}.mdi-24px.mdi-set,.mdi-24px.mdi:before{color:#a9a9a9}.md-button.md-fab.md-mini{line-height:20px !important;min-height:24px !important}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter>img{width:19px !important;height:19px !important;margin:0 1px !important}.emojionearea .emojionearea-picker{width:100% !important;right:0 !important;height:220px !important;top:0px !important}.emojionearea .emojionearea-picker .emojionearea-wrapper{position:relative;height:220px !important;width:100% !important}.emojionearea .emojionearea-picker.emojionearea-picker-position-top{margin-top:-100% !important}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-top{margin-top:-236px !important;width:260px !important;min-width:260px !important}.emojionearea .emojionearea-picker .emojionearea-search>input{width:100px !important;min-width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search{width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search-panel+.emojionearea-scroll-area{height:70% !important}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block{padding:0 !important}.emojionearea .emojionearea-picker .emojionearea-filters{background:#f5f7f9;padding:0 !important;height:40px}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter{width:25px !important;padding:7px 3px 0}#id-row,#chat-app{max-width:100%;width:100%;max-height:100%;height:100%}#chat-app{background-color:transparent}#chat-app .header-button{padding:0;margin:0;font-size:18px;cursor:pointer}ui-view{display:block;width:100%;height:100%}#chat-app .chat-toolbar{height:56px;min-height:56px;cursor:pointer;outline:0}#chat-app .chat-content{flex-grow:1;height:calc(100% - 56px);background:#fff;border:1px solid #d3d3d3;-ms-overflow-style:none;overflow:hidden;box-sizing:border-box}#chat-app .chat-content .chat-messages{height:calc(100% - 60px);overflow:auto;border-bottom:1px solid #d3d3d3}#chat-app .chat-content .chat-online{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .chat-content .chat-unmanaged{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .avatar-wrapper{position:relative;bottom:-3px;right:5px}#chat-app .chat-content .message-row .bubble{word-wrap:break-word;position:relative;max-width:190px;padding:6px 7px 8px 9px;background-color:#fff;border-radius:6px}#chat-app .chat-content .message-row .bubble .message{white-space:pre-wrap}#chat-app .chat-content .message-row .bubble .message-done{color:#dcdcdc}#chat-app .chat-content .message-row .bubble .message-done-all{color:#00bfff}#chat-app .chat-content .message-row .bubble:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADGUExURQAAAP////b29vn5+f///wAAAP///wAAAAAAAP///9ra2v////j4+PHx8fv7++Hh4fHx8f////////////////39/QAAAP////////z8/P////39/f39/fz8/P////////////z8/P////////////z8/P////////////v7+/Hx8f///9bW1vz8/K2trf////39/f39/WJiYgAAAExMTFtbWwAAAN3d3cjIyPr6+vX19QAAAO7u7vz8/NTU1Ofn5zMzM////zGPlXsAAABBdFJOUwAcm/kREh4CCDWL1SneR6TfAQffhMYK/A5nRrLWfRc5DW2ih5f+19Kn+9v4g/1LCJuXHwQUKgahcXS6DNnlDMMKKzPoTgAAAKBJREFUKM+V08USwmAQA+C/0NIWd3d3d8/7vxTMcIPkQK7f7CG7s8bQAOY/SCuwFYQU1P+eiCqIK2gpWCmoCrAgoKQgJ8CHgIqAMjg0MxxSQ3DogEMWFBZtUPAHYGB1CyDQWE6AH7BrfXzlAxGAQhECTGAmwN1Okz0Gb/LW4fEItIfrOfNELMh3tck7u+PhcT2zQ7l77/K8iY8yJwV3BeYFqpc/uSyPGdAAAAAASUVORK5CYII=);content:"";position:absolute;left:-11px;bottom:3px;width:12px;height:19px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain}#chat-app .chat-content .message-row .bubble .time{font-size:10px;text-align:right;margin-bottom:5px}#chat-app .chat-content .message-row.out .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.auto{align-items:flex-end;font-style:italic}#chat-app .chat-content .message-row.auto .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-size:17px;font-style:italic;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in{align-items:flex-end}#chat-app .chat-content .message-row.in2{align-items:flex-end}#chat-app .chat-content .message-row.out{align-items:flex-end}#chat-app .chat-content .message-row.in2 .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in2 .bubble{margin-right:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in2 .bubble:before{left:-11px;right:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=);-webkit-transform:rotate(180deg);transform:rotate(180deg)}#chat-app .chat-content .message-row.in .avatar{order:2;margin:0 0 0 16px;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in .bubble:before{right:-11px;left:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=)}#chat-app .chat-footer{width:100%}#waiting{overflow:visible;height:calc(100% - 64px);background:#fff;text-align:center;flex:1 0 auto;padding:32px}#waiting .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54)}.sk-fading-circle{width:40px;height:40px;position:relative}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:"";display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-fading-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-fading-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-fading-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-fading-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-fading-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-fading-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-fading-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-fading-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-fading-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}md-toast.md-success-toast .md-toast-content{background-color:green}md-toast.md-warning-toast .md-toast-content{background-color:#ffd103;color:#383838}md-toast.md-failure-toast .md-toast-content{background-color:red}md-toast.size .md-toast-content{font-weight:550;padding:0px;text-align:center;height:56px}md-toast.rounded .md-toast-content{border-radius:15px 15px 0px 0px}md-toast.squared .md-toast-content{border-radius:0px 0px 0px 0px}@media(min-device-width: 769px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:block}}@media(max-device-width: 768px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:none}}md-option .md-text{white-space:break-spaces}md-input-container{margin:0px 0px 8px 0px}.no-padding{padding:0 !important}
 
 /*# sourceMappingURL=app.css.map*/
\ No newline at end of file
similarity index 99%
rename from snippet/3.8.0/scripts/vendor-stateDirectives.js
rename to snippet/3.5.0/scripts/vendor-stateDirectives.js
index 16765cb28e52888fab920019fe22aa5ff4dca90a..88a6983cdc86e7301ec94a1e956dc775724e53c0 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"styles/app.css","mappings":";;;;;;;;;;;;;;;;;;;;AAEQ,WCFR,mCACE,4CACA,wSACA,mBAKA,kBACA,sBCTF,oBAEE,yDACA,kBACA,oBACA,oBACA,mCACA,kCACA,0BCPE,eACI,kCADJ,eACI,qBADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,2BADJ,eACI,2BADJ,eACI,yBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oCADJ,eACI,sCADJ,eACI,mCADJ,eACI,2CADJ,eACI,6BADJ,eACI,yBADJ,eACI,6BADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,6BADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,mBADJ,eACI,wBADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,0BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,2BADJ,eACI,4BADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,oBADJ,eACI,+BADJ,eACI,uBADJ,eACI,uBADJ,eACI,oBADJ,eACI,qBADJ,eACI,kCADJ,eACI,0BADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,iCADJ,eACI,oCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,4BADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,mCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,uBADJ,eACI,+BADJ,eACI,gCADJ,eACI,4BADJ,eACI,gCADJ,eACI,iCADJ,eACI,uCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,qCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,+BADJ,eACI,gCADJ,eACI,6BADJ,eACI,mCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,yBADJ,eACI,8BADJ,eACI,kCADJ,eACI,0CADJ,eACI,qCADJ,eACI,6CADJ,eACI,8CADJ,eACI,6BADJ,eACI,qCADJ,eACI,6CADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,2BADJ,eACI,+BADJ,eACI,uCADJ,eACI,kCADJ,eACI,0CADJ,eACI,2CADJ,eACI,0BADJ,eACI,kCADJ,eACI,0CADJ,eACI,4BADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,gBADJ,eACI,uBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,+BADJ,eACI,sBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,uBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,oBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,iCADJ,eACI,kCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,sCADJ,eACI,uCADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,6CADJ,eACI,+CADJ,eACI,2BADJ,eACI,8BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,wBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,qBADJ,eACI,uBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,gCADJ,eACI,gCADJ,eACI,kBADJ,eACI,yBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,2BADJ,eACI,mCADJ,eACI,uBADJ,eACI,oCADJ,eACI,+BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,mCADJ,eACI,6BADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,iCADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,uBADJ,eACI,6BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,mBADJ,eACI,mBADJ,eACI,oBADJ,eACI,iBADJ,eACI,4BADJ,eACI,sBADJ,eACI,sBADJ,eACI,iBADJ,eACI,iCADJ,eACI,mCADJ,eACI,+BADJ,eACI,wBADJ,eACI,sBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,yBADJ,eACI,oCADJ,eACI,oCADJ,eACI,qCADJ,eACI,kCADJ,eACI,wBADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,iBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,wBADJ,eACI,2BADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,gCADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,iBADJ,eACI,kBADJ,eACI,2BADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,yBADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,6BADJ,eACI,wBADJ,eACI,gCADJ,eACI,gCADJ,eACI,uBADJ,eACI,sCADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mCADJ,eACI,2CADJ,eACI,oCADJ,eACI,mCADJ,eACI,6BADJ,eACI,oCADJ,eACI,4CADJ,eACI,qCADJ,eACI,qCADJ,eACI,4CADJ,eACI,oDADJ,eACI,6CADJ,eACI,sCADJ,eACI,6CADJ,eACI,qDADJ,eACI,8CADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,wBADJ,eACI,yBADJ,eACI,wBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,0BADJ,eACI,wBADJ,eACI,kBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,kCADJ,eACI,kCADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,uBADJ,eACI,wBADJ,eACI,sBADJ,eACI,uBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,wCADJ,eACI,4BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oCADJ,eACI,8BADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,qBADJ,eACI,0BADJ,eACI,qBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,mCADJ,eACI,8BADJ,eACI,sCADJ,eACI,6BADJ,eACI,kCADJ,eACI,gCADJ,eACI,wCADJ,eACI,8BADJ,eACI,sCADJ,eACI,4BADJ,eACI,oCADJ,eACI,0BADJ,eACI,mCADJ,eACI,2CADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,yBADJ,eACI,+BADJ,eACI,2BADJ,eACI,0BADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,sBADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,mBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kCADJ,eACI,6BADJ,eACI,8BADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,4BADJ,eACI,2BADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,qBADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,oCADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,sBADJ,eACI,4BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,oBADJ,eACI,2BADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,6BADJ,eACI,yBADJ,eACI,2BADJ,eACI,qBADJ,eACI,6BADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,sBADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,6BADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,oBADJ,eACI,4BADJ,eACI,sBADJ,eACI,0BADJ,eACI,iBADJ,eACI,iBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,4BADJ,eACI,6BADJ,eACI,oCADJ,eACI,2BADJ,eACI,kCADJ,eACI,oBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,6BADJ,eACI,2BADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,sBADJ,eACI,+BADJ,eACI,4BADJ,eACI,sBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,2BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,oBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,sBADJ,eACI,4BADJ,eACI,gCADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,sBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,wBADJ,eACI,gCADJ,eACI,kBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,gCADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,kCADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,wBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,6BADJ,eACI,iCADJ,eACI,mCADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,uBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,qBADJ,eACI,kBADJ,eACI,kBADJ,eACI,4BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,mBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,2BADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,6BADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,6BADJ,eACI,mCADJ,eACI,qCADJ,eACI,4BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,2BADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,kBADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,iCADJ,eACI,6BADJ,eACI,sBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,8BADJ,eACI,oCADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,iCADJ,eACI,+BADJ,eACI,+BADJ,eACI,gCADJ,eACI,yBADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,oCADJ,eACI,iCADJ,eACI,oCADJ,eACI,iCADJ,eACI,4CADJ,eACI,0CADJ,eACI,2CADJ,eACI,oCADJ,eACI,oCADJ,eACI,2BADJ,eACI,iCADJ,eACI,+BADJ,eACI,gCADJ,eACI,kCADJ,eACI,uCADJ,eACI,gCADJ,eACI,iCADJ,eACI,+BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,4BADJ,eACI,yBADJ,eACI,kCADJ,eACI,0CADJ,eACI,8BADJ,eACI,gCADJ,eACI,yBADJ,eACI,yCADJ,eACI,yCADJ,eACI,0BADJ,eACI,8BADJ,eACI,0CADJ,eACI,0CADJ,eACI,uCADJ,eACI,gCADJ,eACI,gCADJ,eACI,+BADJ,eACI,oCADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,wBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,wBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,yBADJ,eACI,gCADJ,eACI,gCADJ,eACI,qBADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,yBADJ,eACI,oCADJ,eACI,6BADJ,eACI,mBADJ,eACI,kBADJ,eACI,iBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,4BADJ,eACI,wCADJ,eACI,qCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mCADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,yBADJ,eACI,yBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,iCADJ,eACI,yBADJ,eACI,yBADJ,eACI,6BADJ,eACI,8BADJ,eACI,2BADJ,eACI,iBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,iCADJ,eACI,6BADJ,eACI,wBADJ,eACI,uBADJ,eACI,iCADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,gCADJ,eACI,uBADJ,eACI,2BADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,6BADJ,eACI,iCADJ,eACI,qBADJ,eACI,qBADJ,eACI,yBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,+BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,0BADJ,eACI,0BADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,+BADJ,eACI,6BADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,4BADJ,eACI,2BADJ,eACI,uBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,sCADJ,eACI,uCADJ,eACI,4CADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,kCADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,oBADJ,eACI,mBADJ,eACI,8BADJ,eACI,4BADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,iCADJ,eACI,uBADJ,eACI,wBADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,kBADJ,eACI,oBADJ,eACI,sBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,oBADJ,eACI,iBADJ,eACI,wBADJ,eACI,uBADJ,eACI,sBADJ,eACI,wBADJ,eACI,yBADJ,eACI,sBADJ,eACI,gCADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,iBADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,6BADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,iCADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,kCADJ,eACI,wBADJ,eACI,4BADJ,eACI,iCADJ,eACI,oBADJ,eACI,+BADJ,eACI,wBADJ,eACI,wBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,uBADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,6BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,oBADJ,eACI,uBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,+BADJ,eACI,8BADJ,eACI,iCADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,+BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,2BADJ,eACI,8BADJ,eACI,kCADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,gCADJ,eACI,2BADJ,eACI,gCADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,oBADJ,eACI,uBADJ,eACI,4BADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,iCADJ,eACI,gCADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,sBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qBADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,kCADJ,eACI,sCADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,gCADJ,eACI,kCADJ,eACI,8BADJ,eACI,uBADJ,eACI,0BADJ,eACI,oBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,6BADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,yBADJ,eACI,mBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,sBADJ,eACI,oCADJ,eACI,iBADJ,eACI,kBADJ,eACI,kBADJ,eACI,qBADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,gCADJ,eACI,iDADJ,eACI,wCADJ,eACI,iBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,oBADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,yBADJ,eACI,qBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,mBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,gCADJ,eACI,gCADJ,eACI,sCADJ,eACI,uCADJ,eACI,qBADJ,eACI,8BADJ,eACI,4BADJ,eACI,mBADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,uBADJ,eACI,qBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,qBADJ,eACI,oBADJ,eACI,mBADJ,eACI,iBADJ,eACI,oBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,yBADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,4BADJ,eACI,gCADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,uBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,oCADJ,eACI,mCADJ,eACI,4BADJ,eACI,wBADJ,eACI,gBADJ,eACI,oBADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,+BADJ,eACI,uBADJ,eACI,oBADJ,eACI,oBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kBADJ,eACI,8BADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,oCADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,2BADJ,eACI,6BADJ,eACI,yBADJ,eACI,kBADJ,eACI,kBADJ,eACI,sBADJ,eACI,8BADJ,eACI,yBADJ,eACI,0CADJ,eACI,iCADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,oBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,+BADJ,eACI,qBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,uBADJ,eACI,8BADJ,eACI,qBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,uBADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,qBADJ,eACI,mBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,4BADJ,eACI,wBADJ,eACI,gCADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,iCADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,kBADJ,eACI,kBADJ,eACI,0BADJ,eACI,mBADJ,eACI,oBADJ,eACI,0BADJ,eACI,oBADJ,eACI,uBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,6BADJ,eACI,oBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,iBADJ,eACI,sBADJ,eACI,kBADJ,eACI,wBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,qBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,4BADJ,eACI,qBADJ,eACI,oBADJ,eACI,6BADJ,eACI,kCADJ,eACI,yBADJ,eACI,oBADJ,eACI,gBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,mCADJ,eACI,gCADJ,eACI,iCADJ,eACI,kCADJ,eACI,gCADJ,eACI,iCADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,qBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,6BADJ,eACI,4BADJ,eACI,sBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,mBADJ,eACI,+BADJ,eACI,2BADJ,eACI,wBADJ,eACI,gCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,8BADJ,eACI,4BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,uBADJ,eACI,oBADJ,eACI,uBADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,yBADJ,eACI,8BADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,6BADJ,eACI,8BADJ,eACI,gCADJ,eACI,iBADJ,eACI,uBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,sCADJ,eACI,2BADJ,eACI,kCADJ,eACI,0CADJ,eACI,mBADJ,eACI,mBADJ,eACI,4BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,uBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,2BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,iCADJ,eACI,sCADJ,eACI,iCADJ,eACI,4CADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,wBADJ,eACI,qBADJ,eACI,uBADJ,eACI,4BADJ,eACI,mBADJ,eACI,oBADJ,eACI,wBADJ,eACI,6BADJ,eACI,4BADJ,eACI,yBADJ,eACI,iBADJ,eACI,4BADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,iCADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,4BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qCADJ,eACI,sCADJ,eACI,oBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,iBADJ,eACI,sBADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,qCADJ,eACI,sCADJ,eACI,iCADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,+BADJ,eACI,uBADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,oBADJ,eACI,kBADJ,eACI,mBADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oCADJ,eACI,8BADJ,eACI,4BADJ,eACI,iCADJ,eACI,oCADJ,eACI,gCADJ,eACI,oBADJ,eACI,kBADJ,eACI,qBADJ,eACI,uBADJ,eACI,yBADJ,eACI,4BADJ,eACI,gCADJ,eACI,qBADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,8BADJ,eACI,yBADJ,eACI,+BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,wBADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,iCADJ,eACI,4BADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,8BADJ,eACI,6BADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,qBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,kCADJ,eACI,0BADJ,eACI,mBADJ,eACI,2BADJ,eACI,iBADJ,eACI,yBADJ,eACI,wBADJ,eACI,oBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,8BADJ,eACI,uBADJ,eACI,4BADJ,eACI,kBADJ,eACI,oBADJ,eACI,2BADJ,eACI,8BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,mBADJ,eACI,4BADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,sBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kBADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,kBADJ,eACI,oBADJ,eACI,mCADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,0BADJ,eACI,oCADJ,eACI,kCADJ,eACI,oCADJ,eACI,kCADJ,eACI,qBADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iBADJ,eACI,2BADJ,eACI,yBADJ,eACI,oBADJ,eACI,kCADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,0BADJ,eACI,+BADJ,eACI,kCADJ,eACI,kCADJ,eACI,4BADJ,eACI,iCADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,sBADJ,eACI,0BADJ,eACI,iCADJ,eACI,mCADJ,eACI,8BADJ,eACI,gCADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,oCADJ,eACI,sBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,uBADJ,eACI,mBADJ,eACI,oBADJ,eACI,6BADJ,eACI,0BADJ,eACI,gBADJ,eACI,oBADJ,eACI,uBADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,iBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,oBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,kCADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,iCADJ,eACI,2BADJ,eACI,4BADJ,eACI,iCADJ,eACI,+BADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,oBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,sBADJ,eACI,sCADJ,eACI,gCADJ,eACI,wCADJ,eACI,sCADJ,eACI,iCADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,iBADJ,eACI,kBADJ,eACI,uBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,oBADJ,eACI,kBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,kBADJ,eACI,kBADJ,eACI,6BADJ,eACI,2CADJ,eACI,2CADJ,eACI,0CADJ,eACI,yCADJ,eACI,4CADJ,eACI,6CADJ,eACI,iCADJ,eACI,iBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,kBADJ,eACI,sBADJ,eACI,oCADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,qBADJ,eACI,mBAIR,WACI,kBACA,wCCLI,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,kBAMR,qBACI,+BAEJ,qBACI,mBAIJ,UACI,gCAEJ,0BACI,uBAOA,+BACI,4BACA,wBACA,uBAHJ,+BACI,4BACA,wBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,oBAoBZ,4BACI,qBACA,aACA,mBACA,oBAEJ,4BACI,qBACA,aACA,mBACA,kBC9DJ,6CACI,sCACQ,6BAGZ,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ,sBAId,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ;;;;;ECxBd,CAmkBA,UACE,YACA,kBAGF,KACE,SACA,UAGF,sBACE,aAEF,OACE,aAGF,iCAEE,mBACA,yBACA,gBACA,YACA,UACA,SAGF,6BAIE,wBAIF,oEAIE,eACA,0BAEA,4GACE,eAIJ,SACE,mBACA,cAIA,mBACE,6BACA,uBACA,+BAEA,+FAEE,wBAGJ,uBACE,iBAIJ,oBACE,SACA,mBACA,WACA,YACA,gBACA,UACA,kBACA,oBACA,UAGF,WACE,kBACA,MACA,OACA,SACA,QACA,sBACA,oBAGF,sBA7bE,uCAgcF,sBA5bE,sCAgcF,8BACE,wDAOF,qBACE,oBACA,kBACA,gBACA,OACA,MACA,WACA,YACA,qDAGF,WAEE,kBACA,yCACA,yBACA,UACA,kBACA,4BACE,sRAOF,4BACE,yCAEF,mFACE,WAEF,4BACE,gEAKJ,4BACE,eACA,gBAGF,YACE,YAGF,WACE,WAGF,gBACE,kBACA,6BACA,MACA,QACA,SACA,OACA,UA5oBoB,CA8oBpB,oCACE,cACA,kBACA,yBACA,QACA,MACA,SACA,UAppBsB,CAqpBtB,wCAMJ,gBACE,gCAKF,eACE,yBAGF,yBACE,YACE,cAOF,wDACG,mBAIL,aACE,cACA,2BAEF,aACE,cACA,2BApQA,yBA6CE,4IAnQF,gBA5K0B,CA6K1B,gKACE,aAkQ2E,CAjQ3E,iBA/KwB,EAwY1B,+CAuCE,mRAnQF,gBA5K0B,CA6K1B,iTACE,aAkQ2E,CAjQ3E,iBA/KwB,EA+Y1B,gDAgCE,6ZAnQF,gBA5K0B,CA6K1B,qcACE,aAkQ2E,CAjQ3E,iBA/KwB,EAuZ1B,iDAwBE,ikBAnQF,gBA5K0B,CA6K1B,mnBACE,aAkQ2E,CAjQ3E,iBA/KwB,EAga1B,0BAeE,mzBAnQF,gBA5K0B,CA6K1B,+2BACE,aAkQ2E,CAjQ3E,iBA/KwB,EAipB5B,UACE,0CACA,8BAEA,gBAEA,8BACA,0BAEA,mCACA,kCAMF,cACE,eAhyByB,CAiyBzB,gBACA,uBACA,iBAnyByB,CAqyB3B,cACE,cAryByB,CAsyBzB,gBACA,wBACA,gBAxyByB,CA0yB3B,cACE,cA1yByB,CA2yBzB,gBACA,iBAEF,cACE,cA9yByB,CA+yBzB,gBACA,iBAEF,aACE,cAlzByB,CAmzBzB,gBACA,iBAEF,UA/kBE,cAtOyB,CAuOzB,gBACA,sBAglBF,YA9jBE,cAzPyB,CA0PzB,gBACA,qBACA,iBAikBF,WAllBE,cAzOyB,CA0OzB,gBACA,qBACA,iBAklBF,WA9kBE,cAhPyB,CAiPzB,gBACA,qBACA,iBA8kBF,YACE,cAj0ByB,CAk0BzB,qBAEF,WACE,qBAOF,kCAKE,8CAl2BY,CAq2Bd,6BAIE,eA2bF,wBACE,YACA,OACA,kBACA,MACA,WAGF,wBACE,eAGF,qBACE,aAGF,kBACE,aAIF,2BACE,UACA,gBAGF,UACE,UACA,kBAEA,0BAGE,UACA,gBAGF,kCACE,UACA,6CA7tCa,CAguCf,kCACE,UACA,6CA9tCa,CAiuCf,2EAEE,UAGF,6BACE,YACA,eACA,WAGF,2BACE,YACA,kDAGF,2BACE,kDAIJ,sBACE,gBACA,OACA,gBACA,eACA,eACA,MAQF,gBACE,kBACA,cACA,YACA,kBACA,iBACA,gBAEE,gCACE,eAGJ,mCACE,gBACA,uBACA,YAEA,sDACE,iBAEF,wDACE,YAIA,gEACE,cACA,kBACA,QACA,QA/BuB,CAgCvB,UAjCqB,CAkCrB,WAlCqB,CAqCvB,+DAtmCJ,kBAikC2B,CAhkC3B,yEACE,eAsmCgF,CArmChF,iBA8jCyB,CA2C3B,qCAEE,aACA,mBACA,sBAEA,kBACA,iBACA,YACA,qDACE,WAGF,mGAGE,WACA,sBACA,YAGF,wDACE,kBACA,YACA,OAEA,kEACE,YACA,UACA,SACA,WAEF,+EACE,kBACA,MACA,OACA,WACA,WACA,gBAEA,6FACE,gBACA,WAEF,wFACE,+BACA,wGACE,UAGJ,wFACE,+BACA,wGACE,UAMV,qCAvvCA,eAEA,sBACA,YACA,gBACA,aACA,uBAmvCE,WACA,eACA,iBACA,YAnvCF,gDACE,aAovCF,6CACE,kBACA,iBACA,kBACA,UAjHyB,CAkHzB,WAlHyB,CAmHzB,eACA,YACA,kBACA,UACA,eACA,uBACA,gBACA,mDACE,WACA,kBACA,SACA,WACA,YACA,UACA,kBACA,mBACA,UACA,mDAz5CW,CA25Cb,mDACE,aAEA,yDACE,mBACA,UAGJ,qDACE,kBACA,QACA,SACA,gDACA,0DACE,eAGJ,sDACE,mBACA,mCACA,sEACE,mBAGJ,sDACE,mCACA,sEACE,mBAKN,8CAGE,sBACE,sBAEF,kDACE,YAKN,qIAEE,kBACA,qCACA,WA79CgB,CAi+ChB,YAEA,2JACE,iBAIJ,4BACE,sBACA,cACA,SACA,gBACA,gBACA,UAGF,mFAEE,WA7M4B,CAgN9B,6BACE,SACA,gBACA,UAEA,yDACE,eACA,gBACA,eACA,gBAzN0B,CA0N1B,WA1N0B,CA2N1B,kCACA,SACA,mBACA,uBAEA,+DACE,aAGF,oFACE,eAMN,8CACE,6CAEE,uBAOJ,YACE,yBAEA,kBACA,MACA,SACA,OACA,QAEA,UA3hDiB,CA6hDjB,6BACE,0BACA,WAEF,+BACE,WACA,sBAEF,+BACE,WAEF,qCACE,WAEF,gCACE,WAIF,6BACE,kBAGF,sBAEE,YAEA,+BACE,UAEF,yDACE,YAEF,+BACE,YACA,yBAEF,yDACE,UAeN,gBACE,kBACA,OACA,QACA,SACA,2BACA,UA5lDqB,CA8lDrB,qBACA,uBAEA,kCACA,mDArlDe,CAslDf,8BAEA,8BACE,cAGF,yBACE,UACA,kCAGF,gCACE,UACA,cACA,6CAIF,gCACE,6CACA,mDAtmDY,CAymDd,8BACE,6BACA,8CA7sDU,CA8sDV,gBA1CyB,CA2CzB,UACA,mBAGF,+BACE,qBACA,YACA,WACA,UAGF,6BACE,aACA,aAEA,mCACE,eAKF,qCACE,UACA,mBACA,WArE0B,CA4E9B,wBACE,kBACA,mBACA,cAEA,gCACE,aACA,mBACA,eACA,mBACA,mBAGF,qCACE,sBACA,mBACA,mBAEA,YAEA,cA5uDqB,CA6uDrB,iBA7uDqB,CA+vDrB,yBA1BF,qCAaI,wBACA,wBAFQ,CAKN,yDACE,uBAEF,qDACE,sBASN,gDA9BF,qCAaI,aACA,aAFQ,EAsBV,iDAlCF,qCAaI,wBACA,wBAFQ,EA0BV,0BAtCF,qCAaI,wBACA,wBAFQ,EA+BV,6CACE,aAGF,2DACE,aACA,sBACA,mBACA,WACA,oBAGF,2DACE,6BACA,aACA,sBACA,mBACA,WAGF,mDACE,eAtJwB,CAuJxB,iBACA,eACA,SACA,mBACA,WACA,kBACA,oBACA,gBAOR,8CACE,gBACE,uBA+BJ,mCACE,SAGF,WACE,qBACA,kBACA,eA33CA,eAk2CmB,CA6BnB,cA1BiB,CAr2CjB,gBAk2CmB,CAgCnB,sBACA,mBACA,kBAEA,iBA3CqB,CA4CrB,sBAGA,iBACA,aACA,SAGA,aAzCe,CA0Cf,cA5Cc,CA8Cd,uBACA,mBACA,mBAGA,yBACA,gBAx5CA,cAveyB,CAi4DzB,mBACA,qBACA,oBACA,qBAGA,gBAEA,iHAj6CA,mHAEE,eAg2CuB,CAl2CzB,mHAEE,gBAg2CuB,CAl2CzB,mHAEE,cA61CqB,CAqEvB,iBACE,aAGF,kCACE,qBAMF,uCACE,gBAGF,uBACE,gBAGF,mBACE,UACA,gBAIA,qCA7tDF,uCAkuDA,0BACE,aACA,WAt0DiB,CAu0DjB,YACA,gBA/5DQ,CAg6DR,WAz6DuB,CA06DvB,UAz0DgB,CA00DhB,iBA9GuB,CAiHzB,kBAKE,UAn3DU,CAq3DV,gBA1GqB,CA4GrB,YACA,UAp1De,CAq1Df,WAp1DgB,CAq1DhB,sBAxvDF,uCA2vDE,iBAhIuB,CAiIvB,4BACA,gBAEA,mDAr3DY,CAs3DZ,0DAlpDF,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA+oDA,0BACE,gBAvHwB,CAwHxB,UA1HkB,CA2HlB,WA1HmB,CA6HrB,qDACE,gBAGF,4BACE,gBAOA,6FApxDJ,uCAuxDI,qFAnxDJ,sCAyxDA,gCACE,sBACA,4BACA,gBAIA,gCAQF,kEACE,cAKF,6FAEE,mDA96Da,CA+6Db,kCAEE,4RAEE,kCAON,yGAEE,mDA57Da,CA67Db,mCAEE,oTAEE,mCAMR,iBACE,aACA,OACA,WAEA,4BACE,OAEA,cAEA,gBAEA,QAEA,6BACA,gBAEA,kBACA,uBACA,mBAEA,wCACE,8BAEF,uCACE,uBACA,8BAKN,8CACE,uCAEE,uBAOJ,QACE,sBACA,aACA,sBACA,UA5jEyB,CA8jEzB,0GAriEsB,CAuiEtB,uBACE,YAZW,CAaX,aACA,mBAGE,kDA1yDJ,iBA2yDkD,CA1yDlD,4DACE,iBAyyDsD,CAxyDtD,gBAwyDgD,CAK9C,iDAhzDJ,gBAizDmD,CAhzDnD,2DACE,gBA+yDuD,CA9yDvD,iBA8yDiD,CAIjD,sCACE,WACA,YAEA,oGAEE,kBAGF,8CACE,YACA,kDAEE,eACA,cAIJ,0DACE,gBAEA,oEACE,eAKN,2CACE,aACA,OACA,sBAEA,uDACE,eAKN,uEAGE,sBACA,aACA,cACA,WACA,YAGF,sBACE,uBACA,aACA,cACA,mBAEA,sCACE,cAGF,yCACE,OACA,sBACA,aAEA,qDACE,cACA,eAIA,gEACE,iBAKN,0CACE,gBAEA,uDACE,YACA,WAEF,uDACE,aACA,YAEF,uDACE,aACA,YAKN,wBACE,cACA,YA3HW,CA8HT,sCACE,aAGF,qCACE,gBAIJ,qCACE,aACA,YAIJ,wBACE,UAnsEuB,CAusEnB,sEACE,aAEA,oFACE,aAGF,mFACE,gBAIJ,gEACE,eACA,kBAKN,6CACE,OACA,2BACA,aACA,mBAIA,4EACE,aAEA,0FAz8DN,aA08DqD,CAz8DrD,oGACE,gBAw8DsD,CAv8DtD,cAu8DmD,CAG/C,yFA78DN,cA88DqD,CA78DrD,mGACE,iBA48DsD,CA38DtD,aA28DmD,CAIjD,sEACE,gBACA,iBAEA,oFAt9DN,gBAu9DqD,CAt9DrD,8FACE,gBAq9D2E,CAp9D3E,iBAo9DmD,CAG/C,mFA19DN,iBA29DqD,CA19DrD,6FACE,iBAy9D2E,CAx9D3E,gBAw9DmD,CAIjD,4EACE,OACA,yBACA,aACA,mBAKN,uBACE,gBACA,YAjNW,CAqNf,8CACE,QACE,uBAKF,sBACE,WACA,YAwBF,4BACE,eANkB,CAOlB,mBAIJ,YACE,sBACA,qBACA,mBACA,eACA,aACA,iBACA,kBACA,cA/sEe,CAuXf,eAi0DoB,CAh0DpB,qHAEE,eA+zDwB,CA0BxB,4DACE,UACA,SACA,WACA,YAIA,6EACE,iCA7/DN,0BACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,oCACE,SA4DsB,CA7DxB,oCACE,OA6D0B,CAE1B,iCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,gCACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,+CACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,qBACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,gCACE,yBAEA,sCACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,sBACE,eAIA,4CACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA45DJ,0BAEE,SACA,UACA,WACA,UAlDwB,CAmDxB,gBAGF,sBACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eA9DuB,CA+DvB,mBAlkEF,gBAwgEqB,CAvgErB,gCACE,aAkkEoE,CAjkEpE,iBAqgEmB,CA8DnB,4BA7kEF,gBA+kE8B,CA/kE9B,cAglE+B,CA/kE/B,sCACE,aA6kEiF,CA9kEnF,sCACE,iBA8kEgC,CAKpC,2CACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eAGA,UA/lEA,gBAkmE0B,CAlmE1B,cAmmE2B,CAlmE3B,qDACE,aAgmEiE,CAjmEnE,qDACE,iBAimE4B,CAmB5B,oCAtnEF,kBA+mEqB,CA9mErB,8CACE,kBAqnE+C,CAC7C,uDAxnEJ,UAynE0B,CAxnE1B,iEACE,WAunE8B,CAC1B,2DACE,WApBI,CAqBJ,mBAGJ,qDACE,qBACA,WA1BM,CAhmEZ,eA2nEmD,CA1nEnD,+DACE,gBAynE2D,CAxnE3D,gBAwnEiD,CAKrD,uBACE,YACA,2BACE,WA1BmC,CA2BnC,mBACA,cA3B6B,CA6B/B,wCAvoEA,eA0mE+B,CA+B7B,WA9BsB,CA1mExB,kDACE,gBAsoE8E,CAroE9E,gBAumE6B,CAiC/B,iFACE,qBACA,gBACA,uBAGJ,iCACE,YAEF,SACE,aAEF,UAGE,aACA,eACA,YACA,8CA/8EY,CAg9EZ,cA/De,CAtmEf,mBA6mEkB,CA0DlB,sBAlwEA,gBACE,WACA,cACA,WAyFF,oBACE,mBAoqEwC,CAG1C,+CACE,eAnEU,CAsEZ,4BACE,YAKA,+BA5qEF,kBAmmE0B,CAlmE1B,yCACE,eA2qE6E,CA1qE7E,iBAgmEwB,CA4EtB,gDA/qEJ,iBAgrEqD,CA/qErD,0DACE,eA8qE6D,CA7qE7D,gBA6qEmD,CAMrD,kBACE,eACA,mBACA,cACA,WA1FU,CA2FV,gBA3FU,CAvmEZ,kBA4mEY,CAwFV,qBA5FW,CAxmEb,UAqsEsB,CACpB,sBACA,eACA,kBAvsEF,4BACE,kBAisEmC,CAlsErC,4BACE,WAmsE0B,CAK1B,mCACE,cA3sEJ,UA4sEwB,CACpB,mBACA,eACA,gBACA,uBA/sEJ,6CACE,WA0sE4B,CAK1B,yCACE,aAGJ,mDACE,yBACA,sBACA,wBACA,qBAEF,4CACE,kBArtEJ,OAstEmC,CAC/B,gBAnHoB,CAnmExB,sDACE,UAotEoC,CAntEpC,MAmtEiC,CAGjC,kCACE,kBACA,UA3HQ,CA4HR,WA5HQ,CA6HR,YACA,UACA,uBACA,YACA,gBACA,SACA,kBACA,0CACE,WA9HgB,CA+HhB,UA/HgB,CAgIhB,eAhIgB,CAiIhB,cAjIgB,CAkIhB,kBACA,QACA,SACA,qCAIN,mCACE,cACA,gBAlJU,CAvmEZ,kBA4mEY,CA+IV,SAlJiB,CAmJjB,YA5vEF,UA6vEsB,CA5vEtB,6CACE,kBAwvEmC,CAzvErC,6CACE,WA2vE0B,CAC1B,yCACE,WAEA,0TAME,SACA,WAjKM,CAkKN,gBAlKM,CAmKN,UACA,8VACE,aAIN,2GACE,uBACA,WA3KQ,CA8KR,wEACE,gBAEF,yDACE,kBAGJ,yCACE,SACA,WAvLQ,CAwLR,gBAxLQ,CAyLR,UACA,+CACE,aAGJ,2GACE,WA/LQ,CAiMV,mDACE,gBACA,yDACE,kBAGJ,qDA9yEF,kBA4mEY,CA3mEZ,+DACE,kBA6yEqC,CAErC,yCACE,uBACA,eAIF,iCACE,aAKN,8CACE,iCAEE,sBAEF,yCACE,aAKJ,WAEE,cACA,kBACA,cACA,iCAEA,wBACE,gBACA,kBAEF,wBACE,gBACA,kBAKF,aAlBF,WAmBI,6BAyDJ,YACE,eACA,iBAMF,yBACE,qBACA,gBACA,aAGA,qDAGE,kBACA,iCAEA,wEACE,aAMJ,sDACE,WAKJ,8BAIE,6CAEA,qBACA,aAGA,YAIF,kBAhFE,WAjBsB,CAkBtB,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAKA,8BA33EA,iBA81EyB,CA71EzB,wCACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,6BA/3EA,kBA81EyB,CA71EzB,uCACE,eA83E0E,CA73E1E,iBA21EuB,CAiGzB,4CACE,eAKJ,sCACE,uEAEA,kBACA,qBAEA,UA9G+B,CA+G/B,WA/G+B,CAgH/B,gBAhH+B,CAkH/B,0EACE,eAKJ,yBACE,WA3HsB,CA4HtB,cArHkC,CAsHlC,gBA/9EA,kBAg+EsB,CA/9EtB,mCACE,kBA89EwF,CAE1F,qDACE,eAGF,iCAt+EA,wBAu+E0B,CAt+E1B,2CACE,cAq+EwC,CAG1C,8BACE,sBAKJ,wBAjGE,mBACA,iBACA,yBAkGA,2BAhIA,WAhB0B,CAiB1B,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAwHE,mBAnHF,uCA33EA,iBA81EyB,CA71EzB,iDACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,sCA/3EA,kBA81EyB,CA71EzB,gDACE,eA83E0E,CA73E1E,iBA21EuB,CAqJ3B,aA3GE,mBACA,iBACA,yBA6GA,8BACE,wBACA,0BAMF,yBACE,iCAOF,mDACE,sBACA,uBAcJ,cAEE,mBACA,gBACA,sBAIA,8BACE,gBAKJ,sBACE,qBACA,sBACA,gBACA,sBACA,kBAIA,6BACE,MACA,OACA,SACA,QACA,kBACA,WACA,WAKJ,qBA1oFE,eAEA,sBACA,YACA,gBACA,aACA,uBAsoFA,gBACA,gBACA,gBAroFA,gCACE,aAyoFF,6CAEE,iBAEA,4EACE,YAGF,mEAllFF,UAqlFwB,CACpB,iBACA,WAtlFJ,6EACE,WAmlF4B,CAM9B,yCACE,WAIA,kHAhmFF,UAkmFa,CAlmFb,SAomFuB,CACnB,wBApmFJ,4HACE,UAimF+B,CAlmFjC,4HACE,SAgmFW,CAMX,4FAjmFF,gBAkmFa,CAjmFb,sGACE,gBAimFwD,CAhmFxD,iBA+lFW,CAMf,kCAxmFE,kBA2mF+C,CA3mF/C,kBA4mF6C,CA3mF7C,4CACE,eAymFuF,CAxmFvF,iBAwmF6C,CA1mF/C,4CACE,iBA0mFsF,CAzmFtF,iBAymF2C,CAI/C,+BAEE,kBAEA,wBACA,0BAEA,qBACA,WAEA,+CA1nFA,gBA8gFyB,CA7gFzB,yDACE,gBAynFwE,CAxnFxE,iBA2gFuB,CAgHzB,qDACE,wBAIJ,0CACE,WAIF,6BAKE,kBACA,MACA,WACA,WAp3FsB,CAq3FtB,iBACA,mBACA,uBAEA,mBACA,qBACA,0DAEA,0CACE,mBAKJ,0BACE,WA7IgC,CA8IhC,WA3TkB,CA4TlB,kBACA,gBAEA,uBACA,oBACA,YAIF,wBACE,UAIA,qDAEA,sCACE,UAGF,0CACE,aAOJ,+BAGE,kBACA,QACA,SACA,gCAEA,QACA,SACA,kCACA,mCACA,qBAIF,+BACE,kBA/sFA,OAgtF+B,CAC/B,cAxtFA,yBA2tFwB,CAntFxB,yCACE,UA8sFgC,CA7sFhC,MA6sF6B,CAttF/B,yCACE,0BAytFuC,CAK3C,wDACE,WAxMoC,CAyMpC,UAzMoC,CA0MpC,kBACA,WAzM6B,CA8M7B,uDACE,gCAGF,uDACE,aAKJ,oBACE,gBAEA,sFAEE,gCAGF,mJAGE,aAOJ,sDACE,aAMA,0CACE,4BACA,2DACA,uBAGF,uDACE,wBAMJ,sBACE,gBAGF,qBACE,aACA,uBACA,mBACA,kBACA,MACA,OACA,WACA,YACA,UAjgGe,CAkgGf,gBAGF,UAaE,UACA,gBACA,cACA,eACA,kBACA,cAEA,6GA9iGuB,CAgjGvB,aACA,sBArBA,2BACE,UACA,mDA3/Fa,CA4/Fb,mCAEF,4BACE,UACA,mDAhgGa,CAigGb,wCAeF,eACE,aACA,sBACA,cAGF,6BACE,YAnDa,CAsDf,4BACE,QACA,sBACA,cACA,iCAEA,+EACE,aAGF,kCACE,aAGF,0CACE,SAGF,oDACE,WAGF,uDACE,WACA,sBAIJ,4BACE,aACA,QACA,sBACA,mBACA,yBACA,gBA/2FF,iBArRyB,CAqRzB,iBAi3F6B,CAC3B,gBACA,gBAl3FF,sCACE,kBA82F4C,CA/2F9C,sCACE,gBAvRuB,CA0oGvB,uCACE,iBA3oGqB,CAqRzB,eArRyB,CAqRzB,cAw3F+B,CAC3B,cA9oGqB,CAsRzB,iDACE,aAq3F4C,CAt3F9C,iDACE,gBAvRuB,CAkpGvB,gDACE,qBACA,uBAKN,8CACE,UACE,uBAIJ,yBACE,+BACE,gBACA,eACA,iBAIJ,WACE,cACA,qBACA,uBACA,SAEA,qBAj5FA,gBAk5F+C,CAj5F/C,+BACE,gBAg5FkE,CA/4FlE,iBA+4F6C,CA5rF/C,yBAGI,wEA8rFJ,mBACA,uBACA,0BA7rFA,+CAII,6KAurFJ,mBACA,uBACA,0BAtrFA,gDAKI,qRA+qFJ,mBACA,uBACA,0BA9qFA,iDAMI,uZAsqFJ,mBACA,uBACA,0BArqFA,0BAOI,umBA4pFJ,mBACA,uBACA,0BAGF,kBACE,kBACA,aACA,mBAIA,UA/nGY,CAgPZ,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA84FF,sCAEE,oBAEA,+GAGE,oBAGF,iDAEE,oBAIJ,qCACE,UAppGU,CAwpGV,iDACE,mBAIJ,iCACE,aAGA,YAEA,qDACE,mDAxpGU,CA4pGd,0BACE,sBAEA,yCACE,QAGF,yCACE,sBACA,QAIJ,wBACE,sBAEA,uCACE,QAGF,uCACE,8BACA,QAIJ,0BACE,mBAEA,yCACE,QAGF,yCACE,2BACA,QAEA,6DACE,mDAlsGQ,CAusGd,2BACE,mBAEA,0CACE,QAGF,0CACE,mBACA,QAEA,8DACE,mDAntGQ,CA4tGZ,gHACE,kBAQF,+CACE,UAMF,qEACE,UACA,uBAKF,+CACE,mBACA,mDArvGU,CAwvGV,iCAON,eAME,cAjiGA,mCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,kCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,gCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,+BACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBAiiGF,uCACE,cACA,kBACA,gBAGA,YAGF,8BACE,kBACA,UAjyGU,CAmyGV,qCACE,4BAGF,yDACE,cACA,kBACA,WAEA,UACA,mDAjyGU,CAoyGZ,sCACE,kBACA,WAEA,UAGA,6BAKF,sCAhmGF,OAimGmC,CAhmGnC,gDACE,UA+lGoC,CA9lGpC,MA8lGiC,CAGjC,yCACE,2BAEA,gEAvmGJ,kBAwmGmD,CAvmGnD,0EACE,iBAsmGyD,CArmGzD,iBAqmGiD,CAG/C,gEA3mGJ,mBA4mGmD,CA3mGnD,0EACE,gBA0mG0D,CAzmG1D,oBAymGiD,CAI/C,+DAhnGJ,gBAinGmD,CAhnGnD,yEACE,iBA+mGsD,CA9mGtD,eA8mGiD,CAOjD,uCAxnGF,MAynGmC,CAxnGnC,iDACE,SAunGoC,CAtnGpC,OAsnGiC,CAGjC,0CACE,mBAIJ,0BACE,wCACA,oBACA,WAEA,4CAEE,eACA,eAGF,8CACE,UACA,mBACA,mDA/1GU,CAk2GV,yBAQF,gDACE,gBAEA,wDACE,UAIJ,8CACE,UACA,mBAKN,aACE,sBACA,cACA,kBAEA,6HAIE,sBAGF,0BACE,cACA,kBAEA,iCACE,aACA,mBACA,uBACA,YACA,kBACA,MACA,QACA,SACA,OACA,UACA,SAIF,4FAEE,aACA,mBACA,mBACA,YACA,WACA,2BACA,gBAGA,kBACA,OACA,QAEA,oMAEE,gBACA,kBAGF,kGACE,eAGF,kGACE,eAIJ,8CACE,MAGF,8CACE,SAMN,8CACE,aACE,sBAEF,oBACE,2BAKJ,QACE,YACA,sCACA,qBACA,sBACA,kBACA,WAphHU,CAqhHV,UArhHU,CAwhHV,eAxhHU,CAyhHV,cAzhHU,CA2hHV,YACE,oBACA,cAGF,sBACE,gBAjiHQ,CAkiHR,WAIJ,mBAEE,qBACA,kBACA,WAj8GwB,CAk8GxB,gBACA,sBA33GA,yBACE,WACA,cACA,WA03GF,4BACE,cAKF,qCAxyGA,WAyyGsB,CACpB,eA37GiB,CA87GjB,cA5yGF,+CACE,UAuyG2B,CAO7B,2BACE,kBACA,OA57Gc,CA0IhB,QAmzGqB,CAnzGrB,UAozGsB,CAnzGtB,qCACE,SAizGwB,CAlzG1B,qCACE,SAkzG0B,CAG5B,2iBAgBE,qBACA,wBAEF,+LAKE,gBAEF,4BACE,YACA,gBAEA,qCACE,gBACA,6BAIF,4CACE,YACA,cAIJ,mDACE,kBACA,YAn2GF,MAo2GqB,CAp2GrB,UAq2GsB,CAp2GtB,6DACE,SAk2GsB,CAn2GxB,6DACE,OAm2G0B,CAE1B,qEACE,aACA,eACA,mBAIJ,wGAEE,gBACA,uBACA,mBACA,WACA,QACA,oBACA,mCAt3GF,gBAnKwB,CAmKxB,eAw3G8B,CAC5B,UACA,2CACA,0DAIA,eA/3GF,yBAi4GiC,CAh4GjC,4HACE,cAq3GqD,CAt3GvD,4HACE,iBArKsB,CAoKxB,4HACE,0BA+3GyC,CAGzC,8IAp4GF,gBAs4G+B,CAt4G/B,eAu4GgC,CAt4GhC,kKACE,cAo4G6D,CAr4G/D,kKACE,iBAq4GiC,CAGnC,mCACE,kBACA,MACA,UACA,sCACA,kCAEF,oDACE,UACA,kCAGF,sDACE,gBACA,UAGF,6FACE,kBAEF,q8BAUE,kBAMF,6BACE,QACA,cACA,aAEA,gBACA,eAzkHgB,CA0kHhB,kBAzkHmB,CAoJrB,cAs7G6B,CAt7G7B,iBAnKwB,CA2lHtB,uBACA,gBA/kHgB,CAglHhB,YACA,4BAjlHgB,CAklHhB,gBACA,mBACA,6DAGA,WACA,sBAl8GF,UAu8GsB,CAt8GtB,uCACE,gBArKsB,CAoKxB,uCACE,eAq7GsD,CAt7GxD,uCACE,WAq8G0B,CAE1B,mCACE,aAEF,qCACE,aACA,gBAGF,wCACE,qBAIJ,oCAt9GA,gBAu9G2B,CAv9G3B,iBAnKwB,CAmKxB,cAy9G6B,CAx9G7B,8CACE,eAq9GgC,CAt9GlC,8CACE,eAs9GsD,CAv9GxD,8CACE,gBArKsB,CAkoHxB,gDACE,kBACA,QACA,gBAl+GF,UAm+GsB,CAl+GtB,0DACE,WAi+G0B,CAG5B,mFACE,cAznHoB,CA0nHpB,gBAxnHsB,CAynHtB,gBAEA,mDAprHY,CAurHZ,UACA,aACA,eArwHuB,CAuwHvB,+HAl/GF,iBAo/GgC,CAp/GhC,cAq/G+B,CAp/G/B,mJACE,eAk/GwC,CAn/G1C,mJACE,gBAm/GgC,CAM9B,oFACE,UACA,kBAQJ,gEACE,UACA,kBAIF,8EACE,UACA,kBAOF,8LACE,6CACA,qGAQF,4CACE,gBAKJ,6IAGE,iBACA,uBAIA,+EAIE,uCAGA,wBACA,2BAIJ,iCAEE,2DAEA,uCACE,oBACA,kBAGF,yCACE,OA5sHY,CA0IhB,QAmkHuB,CAnkHvB,UAokHwB,CAnkHxB,mDACE,SAikH0B,CAlkH5B,mDACE,SAkkH4B,CAQ1B,kRAEE,wBACA,UAMN,gCArlHA,iBA5IY,CA4IZ,eAulH8B,CAtlH9B,0CACE,cAolHyC,CArlH3C,0CACE,kBA9IU,CAouHV,sCAxlHF,SA5IY,CA4IZ,UA0lHwB,CAzlHxB,gDACE,SAulHmC,CAxlHrC,gDACE,UA9IU,CA0uHZ,iCA9lHA,cA+lH6B,CA/lH7B,kBA5IY,CA6IZ,2CACE,iBA9IU,CA6IZ,2CACE,eA8lH0C,CAE1C,sDACE,SAnmHJ,SAqmHwB,CArmHxB,SAsmHuB,CArmHvB,gEACE,UAmmH2B,CApmH7B,gEACE,QAomH2B,CAI7B,8CACE,iBAvvHU,CAwvHV,kBAxvHU,CA2vHR,oKAEE,8BAMR,mBAEE,kBAptHA,yBACE,WACA,cACA,WAotHJ,kBACE,kBACA,YACA,OACA,WAtwH2B,CAuwH3B,uBACA,WACA,iBAGF,8CACE,4CACE,WA2CJ,QACE,cACA,wBAEA,sBACE,cAn9HuB,CAo9HvB,gBACA,qBACA,iBA1CsB,CA+CpB,gIAEE,eAxBiB,CAtrHvB,gJACE,WACA,eAorHqB,CAnrHrB,kBACA,qBAgtHI,wKACE,UA5B2B,CA6B3B,WA7B2B,CAgC7B,kNAtsHN,iBAusHqD,CAC7C,cAnEY,CAoEZ,iBApEY,CApoHpB,sOACE,iBAqsHmH,CApsHnH,gBAosHmD,CAI/C,sTA3sHN,iBA4sHqD,CAC7C,eACA,kBA7sHR,8VACE,iBA0sHqH,CAzsHrH,gBAysHmD,CAI/C,sJACE,UACA,UA3C6B,CA4C7B,WA5C6B,CA+C7B,gOACE,cAlFU,CAmFV,iBAnFU,CAqFZ,wPACE,eAv5HS,CAg6HT,8YApuHV,gBAypHwB,CAxpHxB,sbACE,gBAmuHiF,CAluHjF,iBAspHsB,CA+Ed,klCAGE,gBAjEgB,CAkEhB,cAnEc,CAoEd,mBAGF,kXACE,cAzEqB,CAgF3B,6IACE,eArFwB,CAvrHhC,6JACE,WACA,eAqrH8B,CAprH9B,kBACA,qBA2wHM,gVACE,gBAMJ,6IAEE,eAhG0B,CAxrHlC,6JACE,WACA,eAsrHgC,CArrHhC,kBACA,qBAuxHM,wVAEE,gBAKR,6DACE,iBACA,oBAKN,aAEE,kBAEA,oDACE,wCAGF,6BACE,kBAEA,uDAEE,aACA,mBACA,2BAEA,iBACA,SAEA,gBAjzHJ,eAkzH6B,CACzB,mBAlzHJ,iEACE,gBAgzHiC,CAI/B,8EACE,kBACA,MACA,OACA,YAEA,SACA,UAGF,2EAEE,WA90HN,mFACE,WACA,kBA60HqC,CA50HrC,kBACA,qBAk1HF,mDAEE,kBACA,iBAGA,cAEA,uEACE,kBACA,eAp1HJ,eAq1H6B,CACzB,oBACA,WACA,mBACA,uBACA,oBACA,gBACA,SA31HJ,2FACE,gBAm1HiC,CAS/B,iHACE,gBAGJ,+DACE,aAGJ,gCACE,eAGF,wBACE,kBACA,SAr2HF,MAs2HiC,CAC/B,WAt2HF,kCACE,SAo2HkC,CAn2HlC,OAm2H+B,CAE/B,kCAx2HF,SA8pH+B,CA4M3B,wBACA,oBA12HJ,4CACE,SAu2HkE,CAt2HlE,UA2pH6B,CAiN/B,8CAIE,aACA,2BACA,mBAEA,eAxNe,CA2Nf,YA74HF,8DACE,WACA,eAgrHe,CA/qHf,kBACA,qBA44HA,khBAIE,UAtOyB,CAuOzB,gBACA,mBACA,uBAEF,kXAIE,kBACA,kcACE,aAIJ,gIAh5HF,iBAi5HiD,CAh5HjD,oJACE,iBA+4HyG,CA94HzG,gBA84H+C,CAG/C,kJACE,cAjrIqB,CAkrIrB,iBAlrIqB,CA4RzB,iBAu5HiD,CAC7C,kBACA,uBAx5HJ,0LACE,iBAq5H2G,CAp5H3G,gBAo5H+C,CAI/C,oEACE,UACA,UAnQ2B,CAoQ3B,WApQ2B,CAsQ7B,8EACE,YAIA,sFACE,UAzrII,CA0rIJ,WA1rII,CA8rIR,sEACE,WACA,eAzmIe,CAqLnB,eAq7H8B,CAr7H9B,iBAs7H+B,CAr7H/B,0FACE,gBAm7HiC,CAp7HnC,0FACE,gBAo7HmC,CAGnC,8FACE,aACA,mBAGA,kBAMA,cAKA,YAz8HJ,cA28H+B,CA38H/B,gBA48H8B,CA38H9B,kHACE,iBAy8HgC,CA18HlC,kHACE,aA08HkC,CAG9B,sSAx8HN,cA08HqD,CAz8HrD,8UACE,iBAw8HsD,CAv8HtD,aAu8HmD,CAIjD,sHACE,aACA,cACA,eA7oIa,CA+oIb,4IACE,UA/oIU,CA2LlB,cAq9HqD,CAp9HrD,gKACE,iBAm9HsD,CAl9HtD,aAk9HmD,CAIjD,kHACE,aACA,gBA39HN,iBA69HmD,CA59HnD,sIACE,iBA29HuD,CA19HvD,gBA09HiD,CAIjD,4IACE,cACA,SAMF,sHACE,uBACA,uBAEA,0KACE,cA1wImB,CA2wInB,iBA3wImB,CA8wIrB,kMACE,cACA,YACA,uBACA,gBAEA,0OAx/HN,gBAypHwB,CAxpHxB,kRACE,gBAu/H6E,CAt/H7E,iBAspHsB,CAmWlB,8MACE,cAjyIiB,CAkyIjB,gBACA,qBACA,cAzXO,CA0XP,iBAvXgB,CAwXhB,gBACA,mBACA,uBAEF,8MACE,cAzyIiB,CA0yIjB,qBACA,kBAjYO,CAkYP,eAjYY,CAkYZ,iBAjYgB,CAkYhB,gBACA,mBACA,uBAEF,0MACE,cAnzIiB,CAozIjB,gBACA,qBACA,cAzYM,CA0YN,iBAzYW,CAgZjB,2DACE,YAEA,eA/XsB,CAnrH1B,2EACE,WACA,eAirHwB,CAhrHxB,kBACA,qBAijIE,4KACE,gBAGF,mGACE,sBAGF,iGACE,cAMJ,2DACE,YAEA,eAnZwB,CAprH5B,2EACE,WACA,eAkrH0B,CAjrH1B,kBACA,qBAskIE,oLAEE,gBAaR,wBACE,eACA,OACA,MACA,WA/yIa,CAgzIb,UACA,iBAbmB,CAcnB,8BACA,cAEA,wCACE,eACA,kBACA,WACA,eACA,eACA,WAGF,0CACE,UAIF,2CACE,oBAIF,kCACE,UACA,mDAzzIa,CA0zIb,0BACA,oDACE,UACA,mDAzzIU,CA0zIV,0BACA,uBAIJ,iCACE,UACA,mDAj0IY,CAk0IZ,0BAIJ,gBACE,aACA,sBACA,cACA,gBAvDgB,CAwDhB,gBACA,yBACE,gBAzDoB,CA0DpB,sCACE,WA7DmB,CA8DnB,eA9DmB,CAmEzB,aACE,aACA,mBACA,eAvEiB,CAwEjB,WAxEiB,CAyEjB,qBACA,2BAEA,eACE,WACA,cACA,kBACA,mBAQF,yBACE,gBAGF,wBApqIA,eA2qI2B,CAEzB,qBACA,gBACA,cACA,eACA,oBACA,gBACA,YACA,kBACA,mBACA,WAhBA,0CACE,UACA,SAvqIJ,kCACE,gBAyqI+B,CAY/B,gCAvrIF,uBAwrIyB,CAvrIzB,0CACE,uBAsrIsD,CAEtD,0BACE,qBACA,YAEF,6BACE,gBACA,mBAEF,6CACE,sBAMJ,oBACE,YACA,YACA,UAIJ,yBACE,gBACE,gBAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAKN,yBACE,gBACE,eAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAQF,+CACE,iBACA,YACA,aACA,oBAMJ,4BACE,kBACA,WAn9IW,CAu9If,YACE,eACA,cACA,kBACA,UACA,qBACE,qBACA,UACA,kBAEF,mBACE,eACA,eACA,SACA,SACA,6BACA,YAGF,yCACE,WAIJ,0CACE,gBACA,eACA,iEACE,kBACA,yEACE,kBACA,UACA,WACA,QAnxIJ,SAoxImC,CAnxInC,mFACE,SAkxIqD,CAjxIrD,UAixIiC,CAEjC,iKA7xIF,qBA8xI0B,CA7xI1B,qLACE,qBA4xImE,CAGrE,qDACE,aACA,YACA,0DApyIF,UAqyIwB,CApyIxB,oEACE,WAmyI4B,CAE5B,sEAvyIF,WAwyIwB,CACpB,aAxyIJ,gFACE,UAsyI6B,CAI/B,0DACE,aAGF,gIAhzIA,eAizI2B,CAhzI3B,oJACE,gBA+yI+B,CAGjC,mDACE,UACA,8DACE,kBACA,SACA,WACA,oBACA,mBACA,kBArzIJ,iBAszImD,CArzInD,wEACE,cAozIqE,CAnzIrE,kBAmzIiD,CAC/C,oEACE,cACA,YACA,kBACA,QACA,WAn0IN,iDAo0I8B,CA7zI9B,UA8zIqC,CAp0IrC,8EACE,gDAk0IqE,CA5zIvE,8EACE,UA4zIyD,CA3zIzD,SA2zImC,CASvC,YACE,mBACA,qBACA,WALkB,CAMlB,kBAGF,kBACE,aACA,gBACA,SACA,UAGA,sBACA,aACA,mBAGF,2BACE,gBAIF,0BACE,iBACA,aACA,kBACA,gEAEA,gCACE,aAIJ,eAGE,sBACA,kBACA,SACA,OACA,WACA,WACA,0BACA,sBACA,0DAKA,0BACE,gBAKJ,qBACE,gBACA,mBAKF,gCACI,0BACA,+BAIJ,qBACI,kBACA,cAt5IF,qBAw5I0B,CAv5I1B,+BACE,sBAs5IqC,CAErC,oDACI,kBAGJ,+CACI,yDAGJ,yBACI,kBACA,iBACA,MACA,OAMR,mBACE,cACA,kBACA,WACA,UAN2B,CAQ3B,yBACA,2BAn7IA,qBAq7IwB,CAp7IxB,6BACE,sBAm7ImC,CAErC,gDACE,kBAGF,iCACE,cACA,kBACA,gBAEA,WACA,UAvByB,CAyBzB,sCAEA,yCACE,kBAEA,OACA,MACA,SAEA,WACA,UAnCuB,CAsCzB,mDACE,WACA,aACA,kBAEA,aACA,UA5CuB,CA6CvB,WAEA,6BACA,qCACA,8BAGF,oFAKE,gCAQE,wDACE,aAEF,wDACE,0BACA,iEAKJ,8DACE,aAKF,gEACE,8GAGF,gEACE,8GAKJ,wGAEE,eAEA,iHACE,oBAEF,iHACE,oBAON,gDACE,wCAEA,0BAEA,kEACE,cACA,oCAKN,iBACE,GACE,UACA,wCAEF,KACE,UACA,wCAGJ,kBACE,GACE,UACA,8BAEF,IACE,UAEF,KACE,UACA,kCAGJ,oDACE,GACE,sBACA,iCAEF,MACE,sBACA,iFAEF,OACE,uBACA,+EAEF,KACE,uBAGJ,8CACE,GACE,sBACA,iCAEF,IACE,sBACA,sEAEF,OACE,WACA,gFAEF,KACE,qBAGJ,oDACE,GACE,sBACA,0FAEF,OACE,uBACA,0FAEF,OACE,uBACA,0FAEF,KACE,uBAGJ,8CACE,GACE,qBACA,wEAEF,IACE,aACA,iFAEF,OACE,WACA,2EAEF,KACE,sBAoBJ,gBACE,sBACA,cACA,kBAba,CAcb,mBACA,eACA,kBAGA,0BAhBA,eAEA,wCACE,eAiBF,8BACE,kBACA,QACA,2BACA,sBACA,qBACA,UAjCU,CAkCV,WAlCU,CAmCV,eAjqJF,MAkqJqB,CAlqJrB,UAmqJsB,CAlqJtB,wCACE,SAgqJsB,CAjqJxB,wCACE,OAiqJ0B,CAE1B,mDACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAGF,qCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAIJ,mDACG,QAjEY,CAoEf,wBACE,sBACA,kBACA,MACA,OACA,UA5EU,CA6EV,WA7EU,CA8EV,mBACA,iBACA,kBACA,kCAGF,uBACE,sBACA,kBACA,MACA,OACA,UAzFU,CA0FV,WA1FU,CA2FV,kBACA,+BACA,mBAGF,kCACE,qBAGF,0BACE,sBACA,kBACA,qBAruJF,gBAuuJ4B,CAvuJ5B,cAwuJ6B,CAE3B,sBACA,mBACA,oBACA,WA5uJF,oCACE,aAquJ6D,CAtuJ/D,oCACE,iBAsuJ8B,CAUhC,qBACE,aAIA,wEACE,UACA,SACA,WACA,YAIF,oFACE,UACA,SACA,WACA,YAIJ,yCAlIA,eAEA,uDACE,eA36IF,yBAGI,kFA6iJJ,iBA1iJA,+CAII,4LAsiJJ,iBAniJA,gDAKI,ySA8hJJ,iBA3hJA,iDAMI,gbAqhJJ,iBAlhJA,0BAOI,qoBA2gJJ,iBAIA,+BACE,mBACA,+CACE,qBACA,YACA,yBACA,sBACA,aACA,gBAEA,yDACE,QAEF,6DACE,eAMR,8CACE,wCACE,uBA0BA,8EACE,0DAl0JJ,yBAm0JmC,CAl0JnC,wFACE,0BAi0J2C,CAKzC,4HACE,6CAMR,0BACE,eACA,OACA,MACA,UA/iKe,CAgjKf,UACA,aAGA,2BAGA,6CACE,oBAGF,+CACE,cACA,4BAIF,oCACE,cACA,UACA,mDACE,mDAtjKW,CAujKX,0BACA,qDACE,UACA,mDAtjKQ,CAujKR,0BACA,uBAMN,mCACE,UACA,mDAhkKY,CAikKZ,0BAIJ,0BACE,eAnEoB,CAuEpB,0EAEE,cA3Ec,CA6EhB,6BACE,QAUA,4PACE,aACA,eACA,mBAOF,+DACE,0BACA,mBAKN,UACE,aAII,4MACE,aACA,eACA,mBAKN,qCAIE,uCAGA,wBACA,2BAIA,mBACA,gBACA,0BAGF,gBACE,aAEF,0BACE,eAGA,gCACE,eAGA,iDACE,0BACA,wBACA,mBASF,oEACE,uBA9mKqB,CAmnKzB,wDAIE,uCAGJ,8CACE,gBACA,uBA7nKyB,CA8nKzB,mBACA,oEAv+JF,cAw+J+B,CAx+J/B,iBAnKwB,CAoKxB,8EACE,gBArKsB,CAoKxB,8EACE,eAu+JwD,CAK5D,iBACE,aACA,mBACA,eA9LyB,CA+LzB,kBA9L4B,CApzJ5B,cAm/J2B,CAn/J3B,iBAnKwB,CAwpKxB,uBAxM4B,CAyM5B,0BACA,+BACA,kBACA,uBACA,eACA,gBACA,mBACA,0BACA,YA7/JA,2BACE,gBArKsB,CAoKxB,2BACE,eAk/JoD,CAYtD,2CACE,eACA,cACA,uBACA,mBACA,gBAEA,oDACE,eAIJ,iCACE,cA7gKF,oBA8gK4B,CA9gK5B,gBA+gK2B,CACzB,WACA,2BACA,iBAjhKF,2CACE,sBA4gKoC,CA7gKtC,2CACE,eA6gKgC,CAMlC,uCACE,cACA,YACA,kBACA,QAzhKF,UA0hKsB,CA1hKtB,SA2hKqB,CACnB,WACA,eACA,sBA7hKF,iDACE,UAwhK0B,CAzhK5B,iDACE,SAyhKyB,CAM3B,uCACE,aACA,QACA,oBACA,mCACA,UAIJ,eACE,aACA,sBAYA,0GApzKsB,CAqzKtB,iBACA,eA3QqB,CA4QrB,kBA3jKA,yBA6jK+B,CAE/B,mBAlBA,0BACE,8BAIA,4CACE,eAx0KqB,CAy0KrB,kBAz0KqB,CAsRzB,yBACE,0BA2jKuC,CAIzC,0BACE,gBACA,eApRmB,CAqRnB,iBACA,gBAEF,iBACE,UAIJ,UACE,eACA,kBACA,aACA,mBACA,WACA,kCAiBA,sBACA,WArTqB,CAqSrB,oBACE,eAGF,gBACE,aAGF,mBAxtKA,0BAD2B,CAE3B,wBAF2B,CAG3B,uBAH2B,CAI3B,qBAJ2B,CAK3B,oBAL2B,CAM3B,gBAN2B,CA2tKzB,WACA,mBACA,gBACA,uBAMJ,YACE,cACA,kBACE,cACA,eACA,yBACA,aACA,gBAEF,sBACE,kBACA,mBAIJ,8CACE,oBACE,6BAEF,eACE,uBAKF,uDAhoKA,iBAioK6B,CAjoK7B,kBAgzJsB,CA/yJtB,iEACE,iBA8yJoB,CA/yJtB,iEACE,kBAgoKoD,CA9kKtD,qEACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,+EACE,SA4DsB,CA7DxB,+EACE,OA6D0B,CAE1B,4EACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,2EACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,0FACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,gEACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,0EACE,yBAEA,gFACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,iEACE,eAIA,uFACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA0+JF,qEAtoKF,2BAuoK8B,CAvoK9B,iBAwoK+B,CAvoK/B,+EACE,gBAqoK8D,CAtoKhE,+EACE,4BAsoKmC,CASvC,WACE,sBACA,kBACA,sBACA,UA52KgB,CA82KhB,WAVqB,CAWrB,eAXqB,CAYrB,SACA,cACA,iCAEA,cACE,gBASF,qBACE,aAIF,qDAEE,aACA,2BAIF,kGAEE,mDAl4Ka,CAs4Kf,+DAEE,gBACA,aACA,+BAIF,uKAIE,gBACA,aACA,+BAIF,2CACE,gBACA,aACA,+BAIF,wCACE,gBACA,aACA,gCAIF,wEACE,qGAEA,mBACA,uBAIF,+CACE,qGAKF,wCACE,qGAEA,mBACA,uBAKJ,oCACE,aAGF,4BACE,OACA,MACA,gCACA,gDACE,mCAIJ,kBACE,UACA,MACA,8BACA,4BACE,2BAIJ,yBACE,WACE,eA1HoB,EA8HxB,yBACE,WACE,wBACA,4BACA,6BAKJ,8CACE,4BACE,4BAEF,kBACE,4BA8BJ,4BACE,GACE,qBAEF,IACE,mBAEF,KACE,sBAIJ,oCACE,GACE,qBAEF,IACE,qBAEF,KACE,oBAIJ,mCACE,GACE,qBACA,UAEF,IACE,mBACA,UAEF,KACE,oBAaJ,UACE,WAzEa,CA0Eb,eAzEiB,CA0EjB,kBACA,gBACA,iBACA,UACA,cACA,mBAEA,8BACE,sBAGF,6BACE,aACA,WACA,YAGF,6BACE,kBAMF,8BACE,WACA,kBACA,SACA,UApGmB,CAsGrB,oBACE,kBACA,OACA,QACA,YAEF,yBACE,oDACA,iCAEF,0BACE,kBACA,OACA,QACA,YAEF,iCAIE,WACA,YAMF,8BACE,kBA75KF,MA85KiC,CAC/B,QACA,qCACA,oDACA,sCAj6KF,wCACE,SA45KkC,CA35KlC,OA25K+B,CAMjC,oBACE,UA7EF,kBAx1KA,UAy1K+B,CAC/B,SACA,UA/DoB,CAgEpB,WAhEoB,CAiEpB,mBA0FE,qBACA,oDAv7KF,8BACE,SAu1K4C,CAt1K5C,WAs1K6B,CAmF7B,0BACE,WACA,kBACA,UAnJgB,CAoJhB,WApJgB,CAqJhB,mBACA,iBACA,mBACA,mBAQJ,mBAGE,aACA,mBACA,uBAEA,kBACA,WACA,SAtJc,CAuJd,UAxJgB,CAyJhB,WA1JiB,CA2JjB,mBAEA,+CACA,kDAGA,yBACE,kBACA,WAh9KJ,QAi9KmC,CAC/B,kBAxKgB,CAyKhB,SACA,mCACA,oCACA,qBA5KgB,CA6KhB,uBAEA,UACA,kCACA,kDA19KJ,mCACE,SA+8KsF,CA98KtF,SA88KiC,CAajC,kCACE,UACA,eACA,iBAOJ,yBAhJA,kBAx1KA,UAy1K+B,CAC/B,QACA,UArD0B,CAsD1B,WAtD0B,CAuD1B,mBA6IE,qBACA,UAEA,mDA5+KF,mCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAsJ/B,6BAvJA,kBAx1KA,UAy1K+B,CAC/B,SACA,UAsJI,CArJJ,WAsJI,CArJJ,mBAuJE,qBACA,gBAlN2B,CAmN3B,mBACA,aAt/KF,uCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAkK7B,0BACE,UAIJ,gBACE,aAKA,+EAEE,gBAMF,mFAEE,aAKE,gFACE,qBAIA,0FACE,mBACA,UAEF,qFACE,8DAOF,oFACE,mBAWF,oFACE,mBACA,qEAEF,+EACE,sEAMJ,0IACE,mBAEF,4RAEE,UACA,wCAMJ,qDACE,mBAEF,8GAEE,UACA,wCAMJ,mCACE,aAEF,oCACE,UAEF,6CACE,UAEF,8BACE,qBAEF,uCACE,cAIJ,uBACE,sBACA,gBA/Ue,CAgVf,YAEA,0CACE,OACA,iBACA,oBACA,UAvVS,CAwVT,kBACA,aACA,uBAGF,2CACE,YACA,SA5ViB,CA6VjB,MACA,2BAGF,2CACE,SACA,mBACA,qBACA,SAEA,2DACE,SAGF,0DACE,WAIJ,sCACE,SAIA,6CAGE,WACA,SAHW,CAKX,+CAGA,mDACE,SATS,CAUT,UACA,kCACA,eACA,qCACA,sBArXY,CAsXZ,wBAEA,UACA,kCACA,+BAGF,4DACE,UACA,eACA,iBAOF,mMACE,MAMJ,qDACE,mBAEF,8GAEE,UACA,wCAKJ,uDA1sLF,SA2sLuB,CA3sLvB,OA4sLwB,CA3sLxB,iEACE,MAysL2B,CA1sL7B,iEACE,UA0sLyB,CAGvB,iDACE,YACA,MAMR,oBACE,aACA,mBACA,mBAQE,iGACE,cAPU,CAQV,eACA,WATU,CAUV,mDAn7LW,CAo7LX,oCAIJ,iDApuLA,iBAutLe,CAttLf,2DACE,iBAmuL4D,CAluL5D,gBAotLa,CAiBf,gDAxuLA,gBAutLe,CAttLf,0DACE,gBAuuL4D,CAtuL5D,iBAotLa,CAqBf,iCACE,sBAEA,2HAEE,eACA,cACA,kBAKF,0DACE,kBAzvLJ,iBA0vLmD,CAC/C,YACA,iBA3vLJ,oEACE,cAwvLuD,CAvvLvD,kBAuvLiD,CAOrD,8CACE,qCACE,8BAKJ,iBACE,UACA,MACA,OACA,QACA,6BAEA,2CAEA,sCACE,+BACA,oFACE,mDAYN,kCACE,GACE,+BAEF,KACE,wCAPsB,EAU1B,mCACE,GACE,wCAZsB,CAcxB,KACE,gCAMF,gDAKE,+BAJA,8DACE,SAKF,gEACE,UAGF,qEACE,gBAGF,0HACE,oDAMN,cACE,cACA,cAjDoB,CAkDpB,eAhDsB,CAiDtB,eApDsB,CAqDtB,cAjDiB,CAkDjB,kBAEA,kCACE,cACA,YAxDgB,CA2DlB,oCACE,cACA,UACA,kBAIJ,iCACI,mBAGJ,8BACI,mBAUF,0BACE,eAthM8B,CAuhM9B,mBAIJ,UACE,cACA,mBACA,eACA,aACA,iBACA,YACA,iBACA,mBACA,aAl4LA,mBAo4L0B,CAp4L1B,iBAg3Lc,CA/2Ld,oBACE,gBA82LY,CA/2Ld,oBACE,oBAm4LyC,CAE3C,uBAv4LA,mBAw4L4B,CAx4L5B,cAy4L6B,CAx4L7B,iCACE,aAs4LmC,CAv4LrC,iCACE,oBAu4L8B,CAGhC,oBACE,eAEA,kCACE,eAIJ,wBACE,YACA,UA1CW,CA2CX,WA1CY,CA2CZ,kBACA,iBAl5LF,gBAm5L+C,CAC7C,WAn5LF,kCACE,gBAi5LkD,CAh5LlD,eAg5L6C,CAI/C,oCA95LA,oBA+5L6B,CA/5L7B,eAg6L4B,CA/5L5B,8CACE,gBA65LoC,CA95LtC,8CACE,mBA85L+B,CAK/B,2FAEE,gBAKF,sCACE,UACA,SACA,WACA,YAIJ,oBACE,yBACA,eACA,WAGF,kBACE,SACA,WACA,QACA,WAhFgB,CAiFhB,kBACA,kBAGF,8BACE,QACA,OACA,WACA,kBACA,+BACA,UAEF,yCACE,kCAGF,oBACE,kBACA,SACA,OACA,MACA,aACA,WAtGgB,CAuGhB,UAvGgB,CAwGhB,kBACA,0GAptMoB,CAstMpB,2BACE,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,yCACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKF,0HAGE,0BA1rMS,CA2rMT,+CAEF,0EAEE,sBAMN,8CACE,mCACE,sBAEF,8CACE,yBAEF,qCACE,uBAQJ,+BACE,aACA,cACA,gBAGF,YACE,kBACA,MACA,OACA,QACA,SACA,WACA,UAGF,QACE,cACA,SACA,kBACA,gBACA,kBACA,cACA,wDACE,iBAEF,8BACE,mBA7BiB,CA+BjB,8CACE,kBACA,SACA,OACA,QACA,WApCe,CAqCf,UAEF,sDACE,MACA,WAzCe,CA6CjB,kDACE,aACA,kBACA,SACA,UACA,WACA,YACA,iBAGA,mDACE,kBAKJ,0CACE,qBACA,mBAGA,0EACE,SAMR,gBACE,cACA,kBAEA,0BACA,8DACE,YACA,UAlFmB,CAmFnB,kBACA,QACA,2BACA,gBACA,UACA,eACA,eACA,+CACA,iDAhzMgB,CAizMhB,0EACE,aAEF,sFACE,YACA,eAEF,gFACE,gBAEF,8EACE,kBACA,QACA,SACA,gCAIF,kFACE,2CAGJ,+BA3nMA,MA4nMiC,CAC/B,yDA5nMF,yCACE,SA0nMkC,CAznMlC,OAynM+B,CAGjC,+BA/nMA,OAgoMiC,CAC/B,yDAhoMF,yCACE,UA8nMkC,CA7nMlC,MA6nM+B,CAI/B,uCACE,+CAIF,sDACE,WACA,mBACA,kEACE,YAMR,eAEE,kBACA,gBACA,cACA,WA7ImB,CA7mMnB,qBACE,WACA,cACA,WAwvMF,iCACE,kBACA,MA3pMF,MA4pMiC,CA3pMjC,2CACE,SA0pMkC,CAzpMlC,OAypM+B,CAEjC,4BACE,cAEF,8BACE,aACA,sBACA,kBACA,sCACE,WACA,qBAKN,sBAEE,WAnKmB,CAoKnB,aACA,wDACA,kBAjrMA,MAkrM+B,CAC/B,0BArxMA,4BACE,WACA,cACA,WAgGF,gCACE,SAgrMgC,CA/qMhC,OA+qM6B,CAE/B,qCACE,kBACA,uBAEF,kCACE,eAEF,yBACE,kCACE,iBAKN,wBACE,cACA,kBACA,QA1LmB,CA2LnB,OACA,QACA,SACA,gBAGF,eACE,aACA,kBACA,MACA,OACA,QACA,SACA,wDACA,cAEA,0BACA,4BACE,YACA,gBAEF,wDACE,gBAEF,uCAruMA,2BAsuM0B,CACxB,iCACA,kBAvuMF,iDACE,0BAouM2C,CAG3C,yCACE,gCACA,oBAl7MuB,CAm7MvB,kBAGJ,wCA/uMA,0BAgvM0B,CACxB,iCACA,kBAjvMF,kDACE,2BA8uM0C,CAG1C,0CACE,gCACA,oBA57MuB,CA67MvB,kBAGJ,mBACE,cACA,YACA,4BACE,iCAKN,WAGE,kBACA,UACA,WACA,SACA,WACA,mBACE,+FAGF,oBACE,+FAKJ,OACE,kBACA,WACA,aAGF,QACE,eACA,kBACA,iBACA,aACA,gEACA,eACA,mBACA,kBACA,yBAnyMA,UAoyMoB,CACpB,gBACA,sBACA,gBACA,uBAvyMA,kBACE,WAkyMwB,CAK1B,iCACE,gBACA,aAEF,kBACE,eAEF,oBACE,oBACA,mBACA,iBACA,uBACA,WACA,eAEF,iBACE,gBAIJ,wDACE,yBACA,0BAUF,eACE,cAGF,SACE,kBACA,WA/iNc,CAijNd,sBACA,eACA,gBAGA,WA5lNa,CA+lNb,UACA,mDAviNe,CAyiNf,2BACE,aACA,mBACA,mBAEA,iBACA,eAEA,gBAKA,eAEA,uCACA,kBACA,eAEA,gBAGA,6CACA,mDAhkNa,CA6Mf,0BAq3MgC,CAj4MhC,mCACE,WACA,eAi3MiC,CAh3MjC,kBACA,qBASF,qCACE,wBAm3M0C,CAE1C,gCAEE,YACA,sBACA,YAIJ,oBACE,mBAEA,sCACE,mBAKF,2CACE,mDAllNU,CA2lNZ,+JACE,mDAhmNW,CAomNf,kBACE,UACA,oCACE,kCAGA,2CACE,mCAGJ,kCACE,UACA,oDACE,+BASJ,oDACE,UACA,kCAIA,+DACE,kCAIF,iEACE,iCAIF,2DACE,mCAKN,oBACE,iBACA,iBACA,eACA,eACA,yBACA,YAGF,oBACE,YA78MF,cA88M6B,CA98M7B,eAq0M4B,CAp0M5B,8BACE,gBAm0M0B,CAp0M5B,8BACE,aA68MwD,CAI5D,yBACE,SACE,OACA,QACA,WACA,eACA,YACA,gBACA,SACA,UAII,+DACE,kCAIF,iEACE,kCAOV,yBACE,SACE,gBACA,mBACE,SAEF,iBACE,OAEF,kBACE,QAEF,gBACE,MAIF,mBAv/MF,MAw/MmC,CAv/MnC,6BACE,SAs/MoC,CAr/MpC,OAq/MiC,CAGjC,iBA3/MF,OA4/MmC,CA3/MnC,2BACE,UA0/MoC,CAz/MpC,MAy/MiC,CAS7B,iEACE,kCAIF,kEACE,kCAOV,0BAEI,2BACE,iBAKN,8CACE,SACE,uBAMJ,oBACE,2BAiBF,WACE,sBACA,aACA,sBAEA,kBACA,UAEA,eACA,eAtBkB,CAuBlB,WAEA,mCACE,uBA/wNyB,CAgxNzB,yDA/wNgC,CAgxNhC,gDAGF,mEACE,iCAGF,6BACE,WAGF,oDAGE,sBAMF,sBACE,gBAGF,mBACE,YAnDqB,CAoDrB,gBApDqB,CAqDrB,gBArDqB,CAwDvB,0BACE,WA1D4B,CA2D5B,eA3D4B,CA4D5B,eA5D4B,CA8D5B,4CACE,YACA,gBACA,gBAIJ,sBA7mNA,gBA+iNyB,CA9iNzB,gCACE,gBA4mNwE,CA3mNxE,iBA4iNuB,CAmEvB,8BACE,UAGE,iEACE,aAOV,kBACE,cAp6NyB,CAq6NzB,sBACA,sBACA,gBACA,aACA,mBACA,mBAEA,WACA,WAjGkB,CAkGlB,eAlGkB,CAmGlB,eACA,SAEA,+DACE,kBACA,oBACA,eAGF,oBACE,cACA,qBAEF,+BACE,aACA,mBAEF,8BACE,eAEF,6BACE,aACA,gBAEA,iFACE,uBAj3NuB,CAk3NvB,yDAj3N8B,CAk3N9B,gDAKA,uGACE,gBAIN,yCA/qNA,gBAkjN0B,CAjjN1B,mDACE,gBA8qNyE,CA7qNzE,iBA+iNwB,CAgI1B,wCAlrNA,iBAkjN0B,CAjjN1B,kDACE,iBAirNyE,CAhrNzE,gBA+iNwB,CAoI1B,qCAtrNA,iBAkjN0B,CAjjN1B,+CACE,iBAqrNyE,CAprNzE,gBA+iNwB,CAsIxB,gDAxrNF,cAyrNiD,CAxrNjD,0DACE,iBAurNkD,CAtrNlD,aAsrN+C,CAIjD,8CA/DF,kBAgEI,8BAKJ,sEACE,WACE,eAzJgC,CA4JlC,kBACE,WA7JgC,CA8JhC,eA9JgC,EAmKpC,uEACE,WACE,eApKiC,CAuKnC,kBACE,WAxKiC,CAyKjC,eAzKiC,EAwLrC,YACE,qBACA,oBACA,kBACA,gBACA,UACA,gBACA,cAhBoB,CAiBpB,mBACA,uBACA,WAjBkB,CAkBlB,gBAlBkB,CAmBlB,kBAfsB,CAgBtB,iBAhBsB,CAiBtB,0BACE,+BACA,iBAEF,4BACE,6BACA,gBAzBoB,CA2BtB,6BACE,4BACA,eA7BoB,CA+BtB,2BACE,8BACA,kBAGF,yBA/BF,YAgCI,cA1CkB,CA2ClB,WAzCgB,CA0ChB,gBA1CgB,CA2ChB,iBAvCoB,CAwCpB,gBAxCoB,CAyCpB,2CACA,4CA5CoB,CA6CpB,4CA7CoB,CA8CpB,8CAGF,wBACE,mBAEF,oBACE,mDAx+Na,CAy+Nb,0BACA,mBACA,WAEF,oBACE,mDA1+NY,CA2+NZ,0BACA,mBACA,UAIJ,aACE,gBACA,mBAGA,uBAGA,qBACE,mBAIF,kBACE,QAKJ,6BACE,sBACA,cACA,SACA,gBACA,UACA,kBAEA,yDACE,SACA,sBACA,OACA,SACA,kBACA,UACA,kBACA,QACA,MACA,iCAGF,sDACE,sBACA,WACA,cACA,SACA,UACA,UAGF,0DACE,sBACA,OACA,SACA,UACA,kBACA,QACA,MAKF,8EACE,gBACA,kBAGF,+EAGE,WApD6B,CAlzN/B,UAu2NiC,CAC/B,mBAv2NF,yFACE,UAq2NqC,CAp2NrC,SAo2N+B,CAKnC,qCACE,0GAhnOsB,CAknOxB,mBACE,0GAlnOsB,CAonOxB,mBACE,0GApnOsB,CAsnOxB,qCACE,2GAtnOsB,CAwnOxB,mBACE,2GAxnOsB,CA0nOxB,mBACE,4GA1nOsB,CA4nOxB,qCACE,4GA5nOsB,CA8nOxB,mBACE,4GA9nOsB,CAgoOxB,mBACE,4GAhoOsB,CAkoOxB,sCACE,6GAloOuB,CAooOzB,oBACE,6GApoOuB,CAsoOzB,oBACE,6GAtoOuB,CAwoOzB,sCACE,6GAxoOuB,CA0oOzB,oBACE,6GA1oOuB,CA4oOzB,oBACE,6GA5oOuB,CA8oOzB,oBACE,8GA9oOuB,CAgpOzB,oBACE,8GAhpOuB,CAkpOzB,oBACE,8GAlpOuB,CAopOzB,oBACE,8GAppOuB,CAspOzB,oBACE,+GAtpOuB,CAwpOzB,oBACE,+GAxpOuB,CA0pOzB,oBACE,+GA1pOuB,CA4pOzB,oBACE,+GA5pOuB,CA8pOzB,oBACE,+GA9pOuB,CAiqOzB,8CACE,cACE,uBAIJ,aACE,8BACE,uBAOJ,0EACE,wBAaF,4BACE,aACE,SACA,WACA,gBACA,aA/4MA,YACC,QAeD,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SAmBF,gFA5mBF,aA8mByD,CA7mBzD,wHACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,gFA5mBF,cA6mB+D,CA5mB/D,wHACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,oFACE,2BAeF,oFA7oBF,0BA8oBiD,CA7oBjD,4HACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,0CAGE,2BACA,sBACA,oBAIF,6HAME,2BAIF,kIAME,uBAIF,mHAME,yBAIF,gKAME,6BAIF,qKAME,8BAUF,gJAME,uBACA,yBAIF,qJAME,mBACA,qBACA,eAIF,+JAME,eACA,sBAIF,sIAME,qBACA,uBAIF,0JAME,oBACA,sBA9NF,mCAEA,+CACA,kDACA,+CACA,+CACA,mDACA,iDAME,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAGe,YAGjB,uBACE,cACA,eACA,cACA,sBArBF,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAMF,uBACE,cACA,eACA,cACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,UACE,cACA,eACA,gBACA,sBAGF,sBACE,cACA,eACA,gBACA,sBAMF,yBACE,cACA,eACA,gBACA,sBA2BF,8EACA,8EAIA,4FACA,4FAIA,+FACA,+FAIA,0FACA,0FAGA,8BAIA,6FACA,6FAGA,kCA9GF,mCACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,qCACA,+BAkPA,8CAGE,YAGF,mMAaE,YAIF,+KASE,aAKF,4CAGE,WAGF,0LAaE,WAIF,gJAQE,YAGF,aACE,eAGF,eACI,iBAGJ,aACE,SACA,WACA,gBACA,YAwgMJ,yBAGI,iEACE,aAz5MF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAu1MF,yBA/5MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCA61MF,+CAEI,sGACE,aAGJ,mDACE,aA56MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA02MF,yBAl7MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAg3MF,gDAGI,+MACE,aAGJ,oEACE,aAh8MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA63MF,0BAr8MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAk4MF,iDAGI,0VACE,aAGJ,qFACE,aAl9MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAg5MF,0BAx9MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,qCAxEE,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,kCAs5ME,ugBACE,aAGJ,sGACE,cAMJ,aAEE,wCACE,yBN13OJ,MACE,2BACA,4BACA,mCACA,8BACA,kCACA,6BACA,4BAIA,uCAEE,iBAUJ,eACE,kBAIF,oBACE,QACA,uBAGF,0BACE,uBACA,kBAGF,mBACE,eACA,iBACA,WACA,wBAEA,yBACE,cAIJ,yBACE,eACA,YAGF,uBACE,yBAGF,sCAEE,iBAGF,aACE,mBACA,gBACA,uBAIA,kBACE,gBACA,uBACA,mBAKF,2KAGE,yCACA,6CAKF,2BACE,qBAKF,iCACE,UACA,kCAGF,uCACE,mFAKA,mBAEA,6CACE,mFAQJ,kBACE,aACA,WACA,yBACA,cACA,yBACA,kBACA,eACA,kBACA,mBAEA,8BACE,kBACA,iBAGF,wCACE,WACA,YACA,cAEA,qBAIF,uDACE,gBAEA,4DACE,gBAMJ,yFAEE,eACA,YACA,SACA,wBACA,iBACA,aACA,uBACA,mBACA,uBACA,uGACE,eACA,YACA,WAIJ,+DAEE,eACA,sBACA,sLAEE,cACA,6BACA,qBAKF,wFAEE,cACA,cAIJ,uCACE,qBACA,+CACE,eAMR,gBACE,aACA,sBACA,qBACE,YACA,eACA,kBAIJ,cACE,YACA,aACA,gBACA,oBACA,8BAEA,4CAEE,eACA,kBACA,kGAEE,WAKN,MACE,WAGF,+CACE,sBACA,uBAGF,YACE,6BACA,sBACA,YACA,UACA,eACA,SACA,sBACA,sBACA,uBACA,0BACA,kBACA,iDACA,oDACA,4CACA,+EAEA,wEACA,qFAEA,qEAGF,yBACE,qBACA,UACA,8EAEA,iFAEA,yEAIF,kBACE,kCACA,kDACA,sBACA,2BACA,uCAGF,aACE,UAGF,YACE,kCACA,kDACA,sBACA,2BACA,uCAGF,yCAEE,cACA,6BACA,WACA,YACA,UACA,eACA,SACA,sBACA,iCACA,uBACA,0BACA,kBACA,4DACA,+DACA,uDACA,+EAEA,wEACA,qFAEA,qEAGF,wDACE,cAGF,sBACE,sBAGF,uCAEE,cAGF,0BACE,4BAGA,2BAGF,kFAKE,sBACA,uBACA,wBAGF,mCACE,sBACA,mBACA,wBACA,mBAGF,yDACE,kBACA,wBACA,sBAGF,oEACE,4BAGF,4EACE,6BACA,uBACA,2BAGF,8DACE,uBACA,2BAGF,wDACE,uBAGF,wFAIE,sBAGF,0FAIE,qBAGF,yDACE,mBACA,qBACA,YAGF,8EACE,sBACA,kBAGF,kBAEE,eACA,WACA,gBACA,YAOF,UAGE,6BAGF,yBACE,UACA,SACA,eACA,eAIF,QACE,cACA,WACA,YAKF,wBAEE,WAJoB,CAKpB,eALoB,CAQpB,eACA,UAGF,wBAEE,YACA,yBAGA,gBAEA,yBACA,wBACA,gBACA,sBAGF,uCACE,yBACA,cACA,gCAGF,qCACE,yBACA,wBACA,kBACA,gBAGF,wCACE,yBACA,wBACA,kBACA,gBAGF,0BACE,kBACA,YACA,UAGF,6CACE,qBACA,kBACA,gBACA,wBACA,sBACA,kBAGF,sDACE,qBAGF,2DACE,cAGF,+DACE,cAEF,oDACE,yDACA,WACA,kBACA,WACA,WACA,WACA,YACA,4BACA,4BACA,wBAGF,mDACE,eACA,iBACA,kBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,0CACE,qBACA,kBAGF,kDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,eACA,kBACA,gBACA,kBACA,WAGF,wCACE,qBAGF,yCACE,qBAGF,yCACE,qBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,iDACE,kBACA,yBACA,yBACA,QAGF,wDACE,WACA,WACA,yDACA,iCACA,yBAGF,gDACE,QACA,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,gDACE,iBACA,yBACA,yBACA,QAGF,uDACE,YACA,UACA,yDAGF,uBACE,WAIF,SACE,iBACA,yBAEA,gBACA,kBACA,cACA,aAGF,mBACE,cACA,gBACA,sBAGF,kBACE,WACA,YACA,kBAGF,6BACE,WACA,YACA,kBACA,OACA,MAGF,oCACE,WACA,cACA,cACA,UACA,WACA,sBACA,mBACA,oEACA,4DAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,qCACE,8BACA,sBAGF,qCACE,4BACA,oBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,YAGE,UAGF,IACE,WAIJ,8BACE,YAGE,UAGF,IACE,WAIJ,4CACE,uBAGF,4CACE,WACA,yBAGF,4CACE,qBAGF,wBACE,qBAGF,gCACE,gBACA,YACA,kBACA,YAGF,mCACE,gCAGF,mCACE,8BAGF,gCACE,uDAEE,eAIJ,gCACE,uDAEE,cAIJ,mBACE,yBAGF,mBACE,uBAGF,YACE","sources":["webpack://motion-chat/./src/styles/app.scss","webpack://motion-chat/./node_modules/mdi/scss/_path.scss","webpack://motion-chat/./node_modules/mdi/scss/_core.scss","webpack://motion-chat/./node_modules/mdi/scss/_icons.scss","webpack://motion-chat/./node_modules/mdi/scss/_extras.scss","webpack://motion-chat/./node_modules/mdi/scss/_animated.scss","webpack://motion-chat/./node_modules/angular-material/angular-material.scss"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"styles/app.css","mappings":";;;;;;;;;;;;;;;;;;;;AAEQ,WCFR,mCACE,4CACA,wSACA,mBAKA,kBACA,sBCTF,oBAEE,yDACA,kBACA,oBACA,oBACA,mCACA,kCACA,0BCPE,eACI,kCADJ,eACI,qBADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,2BADJ,eACI,2BADJ,eACI,yBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oCADJ,eACI,sCADJ,eACI,mCADJ,eACI,2CADJ,eACI,6BADJ,eACI,yBADJ,eACI,6BADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,6BADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,mBADJ,eACI,wBADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,0BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,2BADJ,eACI,4BADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,oBADJ,eACI,+BADJ,eACI,uBADJ,eACI,uBADJ,eACI,oBADJ,eACI,qBADJ,eACI,kCADJ,eACI,0BADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,iCADJ,eACI,oCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,4BADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,mCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,uBADJ,eACI,+BADJ,eACI,gCADJ,eACI,4BADJ,eACI,gCADJ,eACI,iCADJ,eACI,uCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,qCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,+BADJ,eACI,gCADJ,eACI,6BADJ,eACI,mCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,yBADJ,eACI,8BADJ,eACI,kCADJ,eACI,0CADJ,eACI,qCADJ,eACI,6CADJ,eACI,8CADJ,eACI,6BADJ,eACI,qCADJ,eACI,6CADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,2BADJ,eACI,+BADJ,eACI,uCADJ,eACI,kCADJ,eACI,0CADJ,eACI,2CADJ,eACI,0BADJ,eACI,kCADJ,eACI,0CADJ,eACI,4BADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,gBADJ,eACI,uBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,+BADJ,eACI,sBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,uBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,oBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,iCADJ,eACI,kCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,sCADJ,eACI,uCADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,6CADJ,eACI,+CADJ,eACI,2BADJ,eACI,8BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,wBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,qBADJ,eACI,uBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,gCADJ,eACI,gCADJ,eACI,kBADJ,eACI,yBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,2BADJ,eACI,mCADJ,eACI,uBADJ,eACI,oCADJ,eACI,+BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,mCADJ,eACI,6BADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,iCADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,uBADJ,eACI,6BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,mBADJ,eACI,mBADJ,eACI,oBADJ,eACI,iBADJ,eACI,4BADJ,eACI,sBADJ,eACI,sBADJ,eACI,iBADJ,eACI,iCADJ,eACI,mCADJ,eACI,+BADJ,eACI,wBADJ,eACI,sBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,yBADJ,eACI,oCADJ,eACI,oCADJ,eACI,qCADJ,eACI,kCADJ,eACI,wBADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,iBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,wBADJ,eACI,2BADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,gCADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,iBADJ,eACI,kBADJ,eACI,2BADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,yBADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,6BADJ,eACI,wBADJ,eACI,gCADJ,eACI,gCADJ,eACI,uBADJ,eACI,sCADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mCADJ,eACI,2CADJ,eACI,oCADJ,eACI,mCADJ,eACI,6BADJ,eACI,oCADJ,eACI,4CADJ,eACI,qCADJ,eACI,qCADJ,eACI,4CADJ,eACI,oDADJ,eACI,6CADJ,eACI,sCADJ,eACI,6CADJ,eACI,qDADJ,eACI,8CADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,wBADJ,eACI,yBADJ,eACI,wBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,0BADJ,eACI,wBADJ,eACI,kBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,kCADJ,eACI,kCADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,uBADJ,eACI,wBADJ,eACI,sBADJ,eACI,uBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,wCADJ,eACI,4BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oCADJ,eACI,8BADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,qBADJ,eACI,0BADJ,eACI,qBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,mCADJ,eACI,8BADJ,eACI,sCADJ,eACI,6BADJ,eACI,kCADJ,eACI,gCADJ,eACI,wCADJ,eACI,8BADJ,eACI,sCADJ,eACI,4BADJ,eACI,oCADJ,eACI,0BADJ,eACI,mCADJ,eACI,2CADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,yBADJ,eACI,+BADJ,eACI,2BADJ,eACI,0BADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,sBADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,mBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kCADJ,eACI,6BADJ,eACI,8BADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,4BADJ,eACI,2BADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,qBADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,oCADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,sBADJ,eACI,4BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,oBADJ,eACI,2BADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,6BADJ,eACI,yBADJ,eACI,2BADJ,eACI,qBADJ,eACI,6BADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,sBADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,6BADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,oBADJ,eACI,4BADJ,eACI,sBADJ,eACI,0BADJ,eACI,iBADJ,eACI,iBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,4BADJ,eACI,6BADJ,eACI,oCADJ,eACI,2BADJ,eACI,kCADJ,eACI,oBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,6BADJ,eACI,2BADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,sBADJ,eACI,+BADJ,eACI,4BADJ,eACI,sBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,2BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,oBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,sBADJ,eACI,4BADJ,eACI,gCADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,sBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,wBADJ,eACI,gCADJ,eACI,kBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,gCADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,kCADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,wBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,6BADJ,eACI,iCADJ,eACI,mCADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,uBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,qBADJ,eACI,kBADJ,eACI,kBADJ,eACI,4BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,mBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,2BADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,6BADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,6BADJ,eACI,mCADJ,eACI,qCADJ,eACI,4BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,2BADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,kBADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,iCADJ,eACI,6BADJ,eACI,sBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,8BADJ,eACI,oCADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,iCADJ,eACI,+BADJ,eACI,+BADJ,eACI,gCADJ,eACI,yBADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,oCADJ,eACI,iCADJ,eACI,oCADJ,eACI,iCADJ,eACI,4CADJ,eACI,0CADJ,eACI,2CADJ,eACI,oCADJ,eACI,oCADJ,eACI,2BADJ,eACI,iCADJ,eACI,+BADJ,eACI,gCADJ,eACI,kCADJ,eACI,uCADJ,eACI,gCADJ,eACI,iCADJ,eACI,+BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,4BADJ,eACI,yBADJ,eACI,kCADJ,eACI,0CADJ,eACI,8BADJ,eACI,gCADJ,eACI,yBADJ,eACI,yCADJ,eACI,yCADJ,eACI,0BADJ,eACI,8BADJ,eACI,0CADJ,eACI,0CADJ,eACI,uCADJ,eACI,gCADJ,eACI,gCADJ,eACI,+BADJ,eACI,oCADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,wBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,wBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,yBADJ,eACI,gCADJ,eACI,gCADJ,eACI,qBADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,yBADJ,eACI,oCADJ,eACI,6BADJ,eACI,mBADJ,eACI,kBADJ,eACI,iBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,4BADJ,eACI,wCADJ,eACI,qCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mCADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,yBADJ,eACI,yBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,iCADJ,eACI,yBADJ,eACI,yBADJ,eACI,6BADJ,eACI,8BADJ,eACI,2BADJ,eACI,iBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,iCADJ,eACI,6BADJ,eACI,wBADJ,eACI,uBADJ,eACI,iCADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,gCADJ,eACI,uBADJ,eACI,2BADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,6BADJ,eACI,iCADJ,eACI,qBADJ,eACI,qBADJ,eACI,yBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,+BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,0BADJ,eACI,0BADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,+BADJ,eACI,6BADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,4BADJ,eACI,2BADJ,eACI,uBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,sCADJ,eACI,uCADJ,eACI,4CADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,kCADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,oBADJ,eACI,mBADJ,eACI,8BADJ,eACI,4BADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,iCADJ,eACI,uBADJ,eACI,wBADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,kBADJ,eACI,oBADJ,eACI,sBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,oBADJ,eACI,iBADJ,eACI,wBADJ,eACI,uBADJ,eACI,sBADJ,eACI,wBADJ,eACI,yBADJ,eACI,sBADJ,eACI,gCADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,iBADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,6BADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,iCADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,kCADJ,eACI,wBADJ,eACI,4BADJ,eACI,iCADJ,eACI,oBADJ,eACI,+BADJ,eACI,wBADJ,eACI,wBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,uBADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,6BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,oBADJ,eACI,uBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,+BADJ,eACI,8BADJ,eACI,iCADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,+BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,2BADJ,eACI,8BADJ,eACI,kCADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,gCADJ,eACI,2BADJ,eACI,gCADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,oBADJ,eACI,uBADJ,eACI,4BADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,iCADJ,eACI,gCADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,sBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qBADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,kCADJ,eACI,sCADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,gCADJ,eACI,kCADJ,eACI,8BADJ,eACI,uBADJ,eACI,0BADJ,eACI,oBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,6BADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,yBADJ,eACI,mBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,sBADJ,eACI,oCADJ,eACI,iBADJ,eACI,kBADJ,eACI,kBADJ,eACI,qBADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,gCADJ,eACI,iDADJ,eACI,wCADJ,eACI,iBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,oBADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,yBADJ,eACI,qBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,mBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,gCADJ,eACI,gCADJ,eACI,sCADJ,eACI,uCADJ,eACI,qBADJ,eACI,8BADJ,eACI,4BADJ,eACI,mBADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,uBADJ,eACI,qBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,qBADJ,eACI,oBADJ,eACI,mBADJ,eACI,iBADJ,eACI,oBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,yBADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,4BADJ,eACI,gCADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,uBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,oCADJ,eACI,mCADJ,eACI,4BADJ,eACI,wBADJ,eACI,gBADJ,eACI,oBADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,+BADJ,eACI,uBADJ,eACI,oBADJ,eACI,oBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kBADJ,eACI,8BADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,oCADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,2BADJ,eACI,6BADJ,eACI,yBADJ,eACI,kBADJ,eACI,kBADJ,eACI,sBADJ,eACI,8BADJ,eACI,yBADJ,eACI,0CADJ,eACI,iCADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,oBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,+BADJ,eACI,qBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,uBADJ,eACI,8BADJ,eACI,qBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,uBADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,qBADJ,eACI,mBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,4BADJ,eACI,wBADJ,eACI,gCADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,iCADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,kBADJ,eACI,kBADJ,eACI,0BADJ,eACI,mBADJ,eACI,oBADJ,eACI,0BADJ,eACI,oBADJ,eACI,uBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,6BADJ,eACI,oBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,iBADJ,eACI,sBADJ,eACI,kBADJ,eACI,wBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,qBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,4BADJ,eACI,qBADJ,eACI,oBADJ,eACI,6BADJ,eACI,kCADJ,eACI,yBADJ,eACI,oBADJ,eACI,gBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,mCADJ,eACI,gCADJ,eACI,iCADJ,eACI,kCADJ,eACI,gCADJ,eACI,iCADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,qBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,6BADJ,eACI,4BADJ,eACI,sBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,mBADJ,eACI,+BADJ,eACI,2BADJ,eACI,wBADJ,eACI,gCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,8BADJ,eACI,4BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,uBADJ,eACI,oBADJ,eACI,uBADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,yBADJ,eACI,8BADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,6BADJ,eACI,8BADJ,eACI,gCADJ,eACI,iBADJ,eACI,uBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,sCADJ,eACI,2BADJ,eACI,kCADJ,eACI,0CADJ,eACI,mBADJ,eACI,mBADJ,eACI,4BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,uBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,2BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,iCADJ,eACI,sCADJ,eACI,iCADJ,eACI,4CADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,wBADJ,eACI,qBADJ,eACI,uBADJ,eACI,4BADJ,eACI,mBADJ,eACI,oBADJ,eACI,wBADJ,eACI,6BADJ,eACI,4BADJ,eACI,yBADJ,eACI,iBADJ,eACI,4BADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,iCADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,4BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qCADJ,eACI,sCADJ,eACI,oBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,iBADJ,eACI,sBADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,qCADJ,eACI,sCADJ,eACI,iCADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,+BADJ,eACI,uBADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,oBADJ,eACI,kBADJ,eACI,mBADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oCADJ,eACI,8BADJ,eACI,4BADJ,eACI,iCADJ,eACI,oCADJ,eACI,gCADJ,eACI,oBADJ,eACI,kBADJ,eACI,qBADJ,eACI,uBADJ,eACI,yBADJ,eACI,4BADJ,eACI,gCADJ,eACI,qBADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,8BADJ,eACI,yBADJ,eACI,+BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,wBADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,iCADJ,eACI,4BADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,8BADJ,eACI,6BADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,qBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,kCADJ,eACI,0BADJ,eACI,mBADJ,eACI,2BADJ,eACI,iBADJ,eACI,yBADJ,eACI,wBADJ,eACI,oBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,8BADJ,eACI,uBADJ,eACI,4BADJ,eACI,kBADJ,eACI,oBADJ,eACI,2BADJ,eACI,8BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,mBADJ,eACI,4BADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,sBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kBADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,kBADJ,eACI,oBADJ,eACI,mCADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,0BADJ,eACI,oCADJ,eACI,kCADJ,eACI,oCADJ,eACI,kCADJ,eACI,qBADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iBADJ,eACI,2BADJ,eACI,yBADJ,eACI,oBADJ,eACI,kCADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,0BADJ,eACI,+BADJ,eACI,kCADJ,eACI,kCADJ,eACI,4BADJ,eACI,iCADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,sBADJ,eACI,0BADJ,eACI,iCADJ,eACI,mCADJ,eACI,8BADJ,eACI,gCADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,oCADJ,eACI,sBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,uBADJ,eACI,mBADJ,eACI,oBADJ,eACI,6BADJ,eACI,0BADJ,eACI,gBADJ,eACI,oBADJ,eACI,uBADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,iBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,oBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,kCADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,iCADJ,eACI,2BADJ,eACI,4BADJ,eACI,iCADJ,eACI,+BADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,oBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,sBADJ,eACI,sCADJ,eACI,gCADJ,eACI,wCADJ,eACI,sCADJ,eACI,iCADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,iBADJ,eACI,kBADJ,eACI,uBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,oBADJ,eACI,kBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,kBADJ,eACI,kBADJ,eACI,6BADJ,eACI,2CADJ,eACI,2CADJ,eACI,0CADJ,eACI,yCADJ,eACI,4CADJ,eACI,6CADJ,eACI,iCADJ,eACI,iBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,kBADJ,eACI,sBADJ,eACI,oCADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,qBADJ,eACI,mBAIR,WACI,kBACA,wCCLI,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,kBAMR,qBACI,+BAEJ,qBACI,mBAIJ,UACI,gCAEJ,0BACI,uBAOA,+BACI,4BACA,wBACA,uBAHJ,+BACI,4BACA,wBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,oBAoBZ,4BACI,qBACA,aACA,mBACA,oBAEJ,4BACI,qBACA,aACA,mBACA,kBC9DJ,6CACI,sCACQ,6BAGZ,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ,sBAId,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ;;;;;ECxBd,CAmkBA,UACE,YACA,kBAGF,KACE,SACA,UAGF,sBACE,aAEF,OACE,aAGF,iCAEE,mBACA,yBACA,gBACA,YACA,UACA,SAGF,6BAIE,wBAIF,oEAIE,eACA,0BAEA,4GACE,eAIJ,SACE,mBACA,cAIA,mBACE,6BACA,uBACA,+BAEA,+FAEE,wBAGJ,uBACE,iBAIJ,oBACE,SACA,mBACA,WACA,YACA,gBACA,UACA,kBACA,oBACA,UAGF,WACE,kBACA,MACA,OACA,SACA,QACA,sBACA,oBAGF,sBA7bE,uCAgcF,sBA5bE,sCAgcF,8BACE,wDAOF,qBACE,oBACA,kBACA,gBACA,OACA,MACA,WACA,YACA,qDAGF,WAEE,kBACA,yCACA,yBACA,UACA,kBACA,4BACE,sRAOF,4BACE,yCAEF,mFACE,WAEF,4BACE,gEAKJ,4BACE,eACA,gBAGF,YACE,YAGF,WACE,WAGF,gBACE,kBACA,6BACA,MACA,QACA,SACA,OACA,UA5oBoB,CA8oBpB,oCACE,cACA,kBACA,yBACA,QACA,MACA,SACA,UAppBsB,CAqpBtB,wCAMJ,gBACE,gCAKF,eACE,yBAGF,yBACE,YACE,cAOF,wDACG,mBAIL,aACE,cACA,2BAEF,aACE,cACA,2BApQA,yBA6CE,4IAnQF,gBA5K0B,CA6K1B,gKACE,aAkQ2E,CAjQ3E,iBA/KwB,EAwY1B,+CAuCE,mRAnQF,gBA5K0B,CA6K1B,iTACE,aAkQ2E,CAjQ3E,iBA/KwB,EA+Y1B,gDAgCE,6ZAnQF,gBA5K0B,CA6K1B,qcACE,aAkQ2E,CAjQ3E,iBA/KwB,EAuZ1B,iDAwBE,ikBAnQF,gBA5K0B,CA6K1B,mnBACE,aAkQ2E,CAjQ3E,iBA/KwB,EAga1B,0BAeE,mzBAnQF,gBA5K0B,CA6K1B,+2BACE,aAkQ2E,CAjQ3E,iBA/KwB,EAipB5B,UACE,0CACA,8BAEA,gBAEA,8BACA,0BAEA,mCACA,kCAMF,cACE,eAhyByB,CAiyBzB,gBACA,uBACA,iBAnyByB,CAqyB3B,cACE,cAryByB,CAsyBzB,gBACA,wBACA,gBAxyByB,CA0yB3B,cACE,cA1yByB,CA2yBzB,gBACA,iBAEF,cACE,cA9yByB,CA+yBzB,gBACA,iBAEF,aACE,cAlzByB,CAmzBzB,gBACA,iBAEF,UA/kBE,cAtOyB,CAuOzB,gBACA,sBAglBF,YA9jBE,cAzPyB,CA0PzB,gBACA,qBACA,iBAikBF,WAllBE,cAzOyB,CA0OzB,gBACA,qBACA,iBAklBF,WA9kBE,cAhPyB,CAiPzB,gBACA,qBACA,iBA8kBF,YACE,cAj0ByB,CAk0BzB,qBAEF,WACE,qBAOF,kCAKE,8CAl2BY,CAq2Bd,6BAIE,eA2bF,wBACE,YACA,OACA,kBACA,MACA,WAGF,wBACE,eAGF,qBACE,aAGF,kBACE,aAIF,2BACE,UACA,gBAGF,UACE,UACA,kBAEA,0BAGE,UACA,gBAGF,kCACE,UACA,6CA7tCa,CAguCf,kCACE,UACA,6CA9tCa,CAiuCf,2EAEE,UAGF,6BACE,YACA,eACA,WAGF,2BACE,YACA,kDAGF,2BACE,kDAIJ,sBACE,gBACA,OACA,gBACA,eACA,eACA,MAQF,gBACE,kBACA,cACA,YACA,kBACA,iBACA,gBAEE,gCACE,eAGJ,mCACE,gBACA,uBACA,YAEA,sDACE,iBAEF,wDACE,YAIA,gEACE,cACA,kBACA,QACA,QA/BuB,CAgCvB,UAjCqB,CAkCrB,WAlCqB,CAqCvB,+DAtmCJ,kBAikC2B,CAhkC3B,yEACE,eAsmCgF,CArmChF,iBA8jCyB,CA2C3B,qCAEE,aACA,mBACA,sBAEA,kBACA,iBACA,YACA,qDACE,WAGF,mGAGE,WACA,sBACA,YAGF,wDACE,kBACA,YACA,OAEA,kEACE,YACA,UACA,SACA,WAEF,+EACE,kBACA,MACA,OACA,WACA,WACA,gBAEA,6FACE,gBACA,WAEF,wFACE,+BACA,wGACE,UAGJ,wFACE,+BACA,wGACE,UAMV,qCAvvCA,eAEA,sBACA,YACA,gBACA,aACA,uBAmvCE,WACA,eACA,iBACA,YAnvCF,gDACE,aAovCF,6CACE,kBACA,iBACA,kBACA,UAjHyB,CAkHzB,WAlHyB,CAmHzB,eACA,YACA,kBACA,UACA,eACA,uBACA,gBACA,mDACE,WACA,kBACA,SACA,WACA,YACA,UACA,kBACA,mBACA,UACA,mDAz5CW,CA25Cb,mDACE,aAEA,yDACE,mBACA,UAGJ,qDACE,kBACA,QACA,SACA,gDACA,0DACE,eAGJ,sDACE,mBACA,mCACA,sEACE,mBAGJ,sDACE,mCACA,sEACE,mBAKN,8CAGE,sBACE,sBAEF,kDACE,YAKN,qIAEE,kBACA,qCACA,WA79CgB,CAi+ChB,YAEA,2JACE,iBAIJ,4BACE,sBACA,cACA,SACA,gBACA,gBACA,UAGF,mFAEE,WA7M4B,CAgN9B,6BACE,SACA,gBACA,UAEA,yDACE,eACA,gBACA,eACA,gBAzN0B,CA0N1B,WA1N0B,CA2N1B,kCACA,SACA,mBACA,uBAEA,+DACE,aAGF,oFACE,eAMN,8CACE,6CAEE,uBAOJ,YACE,yBAEA,kBACA,MACA,SACA,OACA,QAEA,UA3hDiB,CA6hDjB,6BACE,0BACA,WAEF,+BACE,WACA,sBAEF,+BACE,WAEF,qCACE,WAEF,gCACE,WAIF,6BACE,kBAGF,sBAEE,YAEA,+BACE,UAEF,yDACE,YAEF,+BACE,YACA,yBAEF,yDACE,UAeN,gBACE,kBACA,OACA,QACA,SACA,2BACA,UA5lDqB,CA8lDrB,qBACA,uBAEA,kCACA,mDArlDe,CAslDf,8BAEA,8BACE,cAGF,yBACE,UACA,kCAGF,gCACE,UACA,cACA,6CAIF,gCACE,6CACA,mDAtmDY,CAymDd,8BACE,6BACA,8CA7sDU,CA8sDV,gBA1CyB,CA2CzB,UACA,mBAGF,+BACE,qBACA,YACA,WACA,UAGF,6BACE,aACA,aAEA,mCACE,eAKF,qCACE,UACA,mBACA,WArE0B,CA4E9B,wBACE,kBACA,mBACA,cAEA,gCACE,aACA,mBACA,eACA,mBACA,mBAGF,qCACE,sBACA,mBACA,mBAEA,YAEA,cA5uDqB,CA6uDrB,iBA7uDqB,CA+vDrB,yBA1BF,qCAaI,wBACA,wBAFQ,CAKN,yDACE,uBAEF,qDACE,sBASN,gDA9BF,qCAaI,aACA,aAFQ,EAsBV,iDAlCF,qCAaI,wBACA,wBAFQ,EA0BV,0BAtCF,qCAaI,wBACA,wBAFQ,EA+BV,6CACE,aAGF,2DACE,aACA,sBACA,mBACA,WACA,oBAGF,2DACE,6BACA,aACA,sBACA,mBACA,WAGF,mDACE,eAtJwB,CAuJxB,iBACA,eACA,SACA,mBACA,WACA,kBACA,oBACA,gBAOR,8CACE,gBACE,uBA+BJ,mCACE,SAGF,WACE,qBACA,kBACA,eA33CA,eAk2CmB,CA6BnB,cA1BiB,CAr2CjB,gBAk2CmB,CAgCnB,sBACA,mBACA,kBAEA,iBA3CqB,CA4CrB,sBAGA,iBACA,aACA,SAGA,aAzCe,CA0Cf,cA5Cc,CA8Cd,uBACA,mBACA,mBAGA,yBACA,gBAx5CA,cAveyB,CAi4DzB,mBACA,qBACA,oBACA,qBAGA,gBAEA,iHAj6CA,mHAEE,eAg2CuB,CAl2CzB,mHAEE,gBAg2CuB,CAl2CzB,mHAEE,cA61CqB,CAqEvB,iBACE,aAGF,kCACE,qBAMF,uCACE,gBAGF,uBACE,gBAGF,mBACE,UACA,gBAIA,qCA7tDF,uCAkuDA,0BACE,aACA,WAt0DiB,CAu0DjB,YACA,gBA/5DQ,CAg6DR,WAz6DuB,CA06DvB,UAz0DgB,CA00DhB,iBA9GuB,CAiHzB,kBAKE,UAn3DU,CAq3DV,gBA1GqB,CA4GrB,YACA,UAp1De,CAq1Df,WAp1DgB,CAq1DhB,sBAxvDF,uCA2vDE,iBAhIuB,CAiIvB,4BACA,gBAEA,mDAr3DY,CAs3DZ,0DAlpDF,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA+oDA,0BACE,gBAvHwB,CAwHxB,UA1HkB,CA2HlB,WA1HmB,CA6HrB,qDACE,gBAGF,4BACE,gBAOA,6FApxDJ,uCAuxDI,qFAnxDJ,sCAyxDA,gCACE,sBACA,4BACA,gBAIA,gCAQF,kEACE,cAKF,6FAEE,mDA96Da,CA+6Db,kCAEE,4RAEE,kCAON,yGAEE,mDA57Da,CA67Db,mCAEE,oTAEE,mCAMR,iBACE,aACA,OACA,WAEA,4BACE,OAEA,cAEA,gBAEA,QAEA,6BACA,gBAEA,kBACA,uBACA,mBAEA,wCACE,8BAEF,uCACE,uBACA,8BAKN,8CACE,uCAEE,uBAOJ,QACE,sBACA,aACA,sBACA,UA5jEyB,CA8jEzB,0GAriEsB,CAuiEtB,uBACE,YAZW,CAaX,aACA,mBAGE,kDA1yDJ,iBA2yDkD,CA1yDlD,4DACE,iBAyyDsD,CAxyDtD,gBAwyDgD,CAK9C,iDAhzDJ,gBAizDmD,CAhzDnD,2DACE,gBA+yDuD,CA9yDvD,iBA8yDiD,CAIjD,sCACE,WACA,YAEA,oGAEE,kBAGF,8CACE,YACA,kDAEE,eACA,cAIJ,0DACE,gBAEA,oEACE,eAKN,2CACE,aACA,OACA,sBAEA,uDACE,eAKN,uEAGE,sBACA,aACA,cACA,WACA,YAGF,sBACE,uBACA,aACA,cACA,mBAEA,sCACE,cAGF,yCACE,OACA,sBACA,aAEA,qDACE,cACA,eAIA,gEACE,iBAKN,0CACE,gBAEA,uDACE,YACA,WAEF,uDACE,aACA,YAEF,uDACE,aACA,YAKN,wBACE,cACA,YA3HW,CA8HT,sCACE,aAGF,qCACE,gBAIJ,qCACE,aACA,YAIJ,wBACE,UAnsEuB,CAusEnB,sEACE,aAEA,oFACE,aAGF,mFACE,gBAIJ,gEACE,eACA,kBAKN,6CACE,OACA,2BACA,aACA,mBAIA,4EACE,aAEA,0FAz8DN,aA08DqD,CAz8DrD,oGACE,gBAw8DsD,CAv8DtD,cAu8DmD,CAG/C,yFA78DN,cA88DqD,CA78DrD,mGACE,iBA48DsD,CA38DtD,aA28DmD,CAIjD,sEACE,gBACA,iBAEA,oFAt9DN,gBAu9DqD,CAt9DrD,8FACE,gBAq9D2E,CAp9D3E,iBAo9DmD,CAG/C,mFA19DN,iBA29DqD,CA19DrD,6FACE,iBAy9D2E,CAx9D3E,gBAw9DmD,CAIjD,4EACE,OACA,yBACA,aACA,mBAKN,uBACE,gBACA,YAjNW,CAqNf,8CACE,QACE,uBAKF,sBACE,WACA,YAwBF,4BACE,eANkB,CAOlB,mBAIJ,YACE,sBACA,qBACA,mBACA,eACA,aACA,iBACA,kBACA,cA/sEe,CAuXf,eAi0DoB,CAh0DpB,qHAEE,eA+zDwB,CA0BxB,4DACE,UACA,SACA,WACA,YAIA,6EACE,iCA7/DN,0BACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,oCACE,SA4DsB,CA7DxB,oCACE,OA6D0B,CAE1B,iCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,gCACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,+CACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,qBACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,gCACE,yBAEA,sCACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,sBACE,eAIA,4CACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA45DJ,0BAEE,SACA,UACA,WACA,UAlDwB,CAmDxB,gBAGF,sBACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eA9DuB,CA+DvB,mBAlkEF,gBAwgEqB,CAvgErB,gCACE,aAkkEoE,CAjkEpE,iBAqgEmB,CA8DnB,4BA7kEF,gBA+kE8B,CA/kE9B,cAglE+B,CA/kE/B,sCACE,aA6kEiF,CA9kEnF,sCACE,iBA8kEgC,CAKpC,2CACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eAGA,UA/lEA,gBAkmE0B,CAlmE1B,cAmmE2B,CAlmE3B,qDACE,aAgmEiE,CAjmEnE,qDACE,iBAimE4B,CAmB5B,oCAtnEF,kBA+mEqB,CA9mErB,8CACE,kBAqnE+C,CAC7C,uDAxnEJ,UAynE0B,CAxnE1B,iEACE,WAunE8B,CAC1B,2DACE,WApBI,CAqBJ,mBAGJ,qDACE,qBACA,WA1BM,CAhmEZ,eA2nEmD,CA1nEnD,+DACE,gBAynE2D,CAxnE3D,gBAwnEiD,CAKrD,uBACE,YACA,2BACE,WA1BmC,CA2BnC,mBACA,cA3B6B,CA6B/B,wCAvoEA,eA0mE+B,CA+B7B,WA9BsB,CA1mExB,kDACE,gBAsoE8E,CAroE9E,gBAumE6B,CAiC/B,iFACE,qBACA,gBACA,uBAGJ,iCACE,YAEF,SACE,aAEF,UAGE,aACA,eACA,YACA,8CA/8EY,CAg9EZ,cA/De,CAtmEf,mBA6mEkB,CA0DlB,sBAlwEA,gBACE,WACA,cACA,WAyFF,oBACE,mBAoqEwC,CAG1C,+CACE,eAnEU,CAsEZ,4BACE,YAKA,+BA5qEF,kBAmmE0B,CAlmE1B,yCACE,eA2qE6E,CA1qE7E,iBAgmEwB,CA4EtB,gDA/qEJ,iBAgrEqD,CA/qErD,0DACE,eA8qE6D,CA7qE7D,gBA6qEmD,CAMrD,kBACE,eACA,mBACA,cACA,WA1FU,CA2FV,gBA3FU,CAvmEZ,kBA4mEY,CAwFV,qBA5FW,CAxmEb,UAqsEsB,CACpB,sBACA,eACA,kBAvsEF,4BACE,kBAisEmC,CAlsErC,4BACE,WAmsE0B,CAK1B,mCACE,cA3sEJ,UA4sEwB,CACpB,mBACA,eACA,gBACA,uBA/sEJ,6CACE,WA0sE4B,CAK1B,yCACE,aAGJ,mDACE,yBACA,sBACA,wBACA,qBAEF,4CACE,kBArtEJ,OAstEmC,CAC/B,gBAnHoB,CAnmExB,sDACE,UAotEoC,CAntEpC,MAmtEiC,CAGjC,kCACE,kBACA,UA3HQ,CA4HR,WA5HQ,CA6HR,YACA,UACA,uBACA,YACA,gBACA,SACA,kBACA,0CACE,WA9HgB,CA+HhB,UA/HgB,CAgIhB,eAhIgB,CAiIhB,cAjIgB,CAkIhB,kBACA,QACA,SACA,qCAIN,mCACE,cACA,gBAlJU,CAvmEZ,kBA4mEY,CA+IV,SAlJiB,CAmJjB,YA5vEF,UA6vEsB,CA5vEtB,6CACE,kBAwvEmC,CAzvErC,6CACE,WA2vE0B,CAC1B,yCACE,WAEA,0TAME,SACA,WAjKM,CAkKN,gBAlKM,CAmKN,UACA,8VACE,aAIN,2GACE,uBACA,WA3KQ,CA8KR,wEACE,gBAEF,yDACE,kBAGJ,yCACE,SACA,WAvLQ,CAwLR,gBAxLQ,CAyLR,UACA,+CACE,aAGJ,2GACE,WA/LQ,CAiMV,mDACE,gBACA,yDACE,kBAGJ,qDA9yEF,kBA4mEY,CA3mEZ,+DACE,kBA6yEqC,CAErC,yCACE,uBACA,eAIF,iCACE,aAKN,8CACE,iCAEE,sBAEF,yCACE,aAKJ,WAEE,cACA,kBACA,cACA,iCAEA,wBACE,gBACA,kBAEF,wBACE,gBACA,kBAKF,aAlBF,WAmBI,6BAyDJ,YACE,eACA,iBAMF,yBACE,qBACA,gBACA,aAGA,qDAGE,kBACA,iCAEA,wEACE,aAMJ,sDACE,WAKJ,8BAIE,6CAEA,qBACA,aAGA,YAIF,kBAhFE,WAjBsB,CAkBtB,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAKA,8BA33EA,iBA81EyB,CA71EzB,wCACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,6BA/3EA,kBA81EyB,CA71EzB,uCACE,eA83E0E,CA73E1E,iBA21EuB,CAiGzB,4CACE,eAKJ,sCACE,uEAEA,kBACA,qBAEA,UA9G+B,CA+G/B,WA/G+B,CAgH/B,gBAhH+B,CAkH/B,0EACE,eAKJ,yBACE,WA3HsB,CA4HtB,cArHkC,CAsHlC,gBA/9EA,kBAg+EsB,CA/9EtB,mCACE,kBA89EwF,CAE1F,qDACE,eAGF,iCAt+EA,wBAu+E0B,CAt+E1B,2CACE,cAq+EwC,CAG1C,8BACE,sBAKJ,wBAjGE,mBACA,iBACA,yBAkGA,2BAhIA,WAhB0B,CAiB1B,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAwHE,mBAnHF,uCA33EA,iBA81EyB,CA71EzB,iDACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,sCA/3EA,kBA81EyB,CA71EzB,gDACE,eA83E0E,CA73E1E,iBA21EuB,CAqJ3B,aA3GE,mBACA,iBACA,yBA6GA,8BACE,wBACA,0BAMF,yBACE,iCAOF,mDACE,sBACA,uBAcJ,cAEE,mBACA,gBACA,sBAIA,8BACE,gBAKJ,sBACE,qBACA,sBACA,gBACA,sBACA,kBAIA,6BACE,MACA,OACA,SACA,QACA,kBACA,WACA,WAKJ,qBA1oFE,eAEA,sBACA,YACA,gBACA,aACA,uBAsoFA,gBACA,gBACA,gBAroFA,gCACE,aAyoFF,6CAEE,iBAEA,4EACE,YAGF,mEAllFF,UAqlFwB,CACpB,iBACA,WAtlFJ,6EACE,WAmlF4B,CAM9B,yCACE,WAIA,kHAhmFF,UAkmFa,CAlmFb,SAomFuB,CACnB,wBApmFJ,4HACE,UAimF+B,CAlmFjC,4HACE,SAgmFW,CAMX,4FAjmFF,gBAkmFa,CAjmFb,sGACE,gBAimFwD,CAhmFxD,iBA+lFW,CAMf,kCAxmFE,kBA2mF+C,CA3mF/C,kBA4mF6C,CA3mF7C,4CACE,eAymFuF,CAxmFvF,iBAwmF6C,CA1mF/C,4CACE,iBA0mFsF,CAzmFtF,iBAymF2C,CAI/C,+BAEE,kBAEA,wBACA,0BAEA,qBACA,WAEA,+CA1nFA,gBA8gFyB,CA7gFzB,yDACE,gBAynFwE,CAxnFxE,iBA2gFuB,CAgHzB,qDACE,wBAIJ,0CACE,WAIF,6BAKE,kBACA,MACA,WACA,WAp3FsB,CAq3FtB,iBACA,mBACA,uBAEA,mBACA,qBACA,0DAEA,0CACE,mBAKJ,0BACE,WA7IgC,CA8IhC,WA3TkB,CA4TlB,kBACA,gBAEA,uBACA,oBACA,YAIF,wBACE,UAIA,qDAEA,sCACE,UAGF,0CACE,aAOJ,+BAGE,kBACA,QACA,SACA,gCAEA,QACA,SACA,kCACA,mCACA,qBAIF,+BACE,kBA/sFA,OAgtF+B,CAC/B,cAxtFA,yBA2tFwB,CAntFxB,yCACE,UA8sFgC,CA7sFhC,MA6sF6B,CAttF/B,yCACE,0BAytFuC,CAK3C,wDACE,WAxMoC,CAyMpC,UAzMoC,CA0MpC,kBACA,WAzM6B,CA8M7B,uDACE,gCAGF,uDACE,aAKJ,oBACE,gBAEA,sFAEE,gCAGF,mJAGE,aAOJ,sDACE,aAMA,0CACE,4BACA,2DACA,uBAGF,uDACE,wBAMJ,sBACE,gBAGF,qBACE,aACA,uBACA,mBACA,kBACA,MACA,OACA,WACA,YACA,UAjgGe,CAkgGf,gBAGF,UAaE,UACA,gBACA,cACA,eACA,kBACA,cAEA,6GA9iGuB,CAgjGvB,aACA,sBArBA,2BACE,UACA,mDA3/Fa,CA4/Fb,mCAEF,4BACE,UACA,mDAhgGa,CAigGb,wCAeF,eACE,aACA,sBACA,cAGF,6BACE,YAnDa,CAsDf,4BACE,QACA,sBACA,cACA,iCAEA,+EACE,aAGF,kCACE,aAGF,0CACE,SAGF,oDACE,WAGF,uDACE,WACA,sBAIJ,4BACE,aACA,QACA,sBACA,mBACA,yBACA,gBA/2FF,iBArRyB,CAqRzB,iBAi3F6B,CAC3B,gBACA,gBAl3FF,sCACE,kBA82F4C,CA/2F9C,sCACE,gBAvRuB,CA0oGvB,uCACE,iBA3oGqB,CAqRzB,eArRyB,CAqRzB,cAw3F+B,CAC3B,cA9oGqB,CAsRzB,iDACE,aAq3F4C,CAt3F9C,iDACE,gBAvRuB,CAkpGvB,gDACE,qBACA,uBAKN,8CACE,UACE,uBAIJ,yBACE,+BACE,gBACA,eACA,iBAIJ,WACE,cACA,qBACA,uBACA,SAEA,qBAj5FA,gBAk5F+C,CAj5F/C,+BACE,gBAg5FkE,CA/4FlE,iBA+4F6C,CA5rF/C,yBAGI,wEA8rFJ,mBACA,uBACA,0BA7rFA,+CAII,6KAurFJ,mBACA,uBACA,0BAtrFA,gDAKI,qRA+qFJ,mBACA,uBACA,0BA9qFA,iDAMI,uZAsqFJ,mBACA,uBACA,0BArqFA,0BAOI,umBA4pFJ,mBACA,uBACA,0BAGF,kBACE,kBACA,aACA,mBAIA,UA/nGY,CAgPZ,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA84FF,sCAEE,oBAEA,+GAGE,oBAGF,iDAEE,oBAIJ,qCACE,UAppGU,CAwpGV,iDACE,mBAIJ,iCACE,aAGA,YAEA,qDACE,mDAxpGU,CA4pGd,0BACE,sBAEA,yCACE,QAGF,yCACE,sBACA,QAIJ,wBACE,sBAEA,uCACE,QAGF,uCACE,8BACA,QAIJ,0BACE,mBAEA,yCACE,QAGF,yCACE,2BACA,QAEA,6DACE,mDAlsGQ,CAusGd,2BACE,mBAEA,0CACE,QAGF,0CACE,mBACA,QAEA,8DACE,mDAntGQ,CA4tGZ,gHACE,kBAQF,+CACE,UAMF,qEACE,UACA,uBAKF,+CACE,mBACA,mDArvGU,CAwvGV,iCAON,eAME,cAjiGA,mCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,kCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,gCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,+BACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBAiiGF,uCACE,cACA,kBACA,gBAGA,YAGF,8BACE,kBACA,UAjyGU,CAmyGV,qCACE,4BAGF,yDACE,cACA,kBACA,WAEA,UACA,mDAjyGU,CAoyGZ,sCACE,kBACA,WAEA,UAGA,6BAKF,sCAhmGF,OAimGmC,CAhmGnC,gDACE,UA+lGoC,CA9lGpC,MA8lGiC,CAGjC,yCACE,2BAEA,gEAvmGJ,kBAwmGmD,CAvmGnD,0EACE,iBAsmGyD,CArmGzD,iBAqmGiD,CAG/C,gEA3mGJ,mBA4mGmD,CA3mGnD,0EACE,gBA0mG0D,CAzmG1D,oBAymGiD,CAI/C,+DAhnGJ,gBAinGmD,CAhnGnD,yEACE,iBA+mGsD,CA9mGtD,eA8mGiD,CAOjD,uCAxnGF,MAynGmC,CAxnGnC,iDACE,SAunGoC,CAtnGpC,OAsnGiC,CAGjC,0CACE,mBAIJ,0BACE,wCACA,oBACA,WAEA,4CAEE,eACA,eAGF,8CACE,UACA,mBACA,mDA/1GU,CAk2GV,yBAQF,gDACE,gBAEA,wDACE,UAIJ,8CACE,UACA,mBAKN,aACE,sBACA,cACA,kBAEA,6HAIE,sBAGF,0BACE,cACA,kBAEA,iCACE,aACA,mBACA,uBACA,YACA,kBACA,MACA,QACA,SACA,OACA,UACA,SAIF,4FAEE,aACA,mBACA,mBACA,YACA,WACA,2BACA,gBAGA,kBACA,OACA,QAEA,oMAEE,gBACA,kBAGF,kGACE,eAGF,kGACE,eAIJ,8CACE,MAGF,8CACE,SAMN,8CACE,aACE,sBAEF,oBACE,2BAKJ,QACE,YACA,sCACA,qBACA,sBACA,kBACA,WAphHU,CAqhHV,UArhHU,CAwhHV,eAxhHU,CAyhHV,cAzhHU,CA2hHV,YACE,oBACA,cAGF,sBACE,gBAjiHQ,CAkiHR,WAIJ,mBAEE,qBACA,kBACA,WAj8GwB,CAk8GxB,gBACA,sBA33GA,yBACE,WACA,cACA,WA03GF,4BACE,cAKF,qCAxyGA,WAyyGsB,CACpB,eA37GiB,CA87GjB,cA5yGF,+CACE,UAuyG2B,CAO7B,2BACE,kBACA,OA57Gc,CA0IhB,QAmzGqB,CAnzGrB,UAozGsB,CAnzGtB,qCACE,SAizGwB,CAlzG1B,qCACE,SAkzG0B,CAG5B,2iBAgBE,qBACA,wBAEF,+LAKE,gBAEF,4BACE,YACA,gBAEA,qCACE,gBACA,6BAIF,4CACE,YACA,cAIJ,mDACE,kBACA,YAn2GF,MAo2GqB,CAp2GrB,UAq2GsB,CAp2GtB,6DACE,SAk2GsB,CAn2GxB,6DACE,OAm2G0B,CAE1B,qEACE,aACA,eACA,mBAIJ,wGAEE,gBACA,uBACA,mBACA,WACA,QACA,oBACA,mCAt3GF,gBAnKwB,CAmKxB,eAw3G8B,CAC5B,UACA,2CACA,0DAIA,eA/3GF,yBAi4GiC,CAh4GjC,4HACE,cAq3GqD,CAt3GvD,4HACE,iBArKsB,CAoKxB,4HACE,0BA+3GyC,CAGzC,8IAp4GF,gBAs4G+B,CAt4G/B,eAu4GgC,CAt4GhC,kKACE,cAo4G6D,CAr4G/D,kKACE,iBAq4GiC,CAGnC,mCACE,kBACA,MACA,UACA,sCACA,kCAEF,oDACE,UACA,kCAGF,sDACE,gBACA,UAGF,6FACE,kBAEF,q8BAUE,kBAMF,6BACE,QACA,cACA,aAEA,gBACA,eAzkHgB,CA0kHhB,kBAzkHmB,CAoJrB,cAs7G6B,CAt7G7B,iBAnKwB,CA2lHtB,uBACA,gBA/kHgB,CAglHhB,YACA,4BAjlHgB,CAklHhB,gBACA,mBACA,6DAGA,WACA,sBAl8GF,UAu8GsB,CAt8GtB,uCACE,gBArKsB,CAoKxB,uCACE,eAq7GsD,CAt7GxD,uCACE,WAq8G0B,CAE1B,mCACE,aAEF,qCACE,aACA,gBAGF,wCACE,qBAIJ,oCAt9GA,gBAu9G2B,CAv9G3B,iBAnKwB,CAmKxB,cAy9G6B,CAx9G7B,8CACE,eAq9GgC,CAt9GlC,8CACE,eAs9GsD,CAv9GxD,8CACE,gBArKsB,CAkoHxB,gDACE,kBACA,QACA,gBAl+GF,UAm+GsB,CAl+GtB,0DACE,WAi+G0B,CAG5B,mFACE,cAznHoB,CA0nHpB,gBAxnHsB,CAynHtB,gBAEA,mDAprHY,CAurHZ,UACA,aACA,eArwHuB,CAuwHvB,+HAl/GF,iBAo/GgC,CAp/GhC,cAq/G+B,CAp/G/B,mJACE,eAk/GwC,CAn/G1C,mJACE,gBAm/GgC,CAM9B,oFACE,UACA,kBAQJ,gEACE,UACA,kBAIF,8EACE,UACA,kBAOF,8LACE,6CACA,qGAQF,4CACE,gBAKJ,6IAGE,iBACA,uBAIA,+EAIE,uCAGA,wBACA,2BAIJ,iCAEE,2DAEA,uCACE,oBACA,kBAGF,yCACE,OA5sHY,CA0IhB,QAmkHuB,CAnkHvB,UAokHwB,CAnkHxB,mDACE,SAikH0B,CAlkH5B,mDACE,SAkkH4B,CAQ1B,kRAEE,wBACA,UAMN,gCArlHA,iBA5IY,CA4IZ,eAulH8B,CAtlH9B,0CACE,cAolHyC,CArlH3C,0CACE,kBA9IU,CAouHV,sCAxlHF,SA5IY,CA4IZ,UA0lHwB,CAzlHxB,gDACE,SAulHmC,CAxlHrC,gDACE,UA9IU,CA0uHZ,iCA9lHA,cA+lH6B,CA/lH7B,kBA5IY,CA6IZ,2CACE,iBA9IU,CA6IZ,2CACE,eA8lH0C,CAE1C,sDACE,SAnmHJ,SAqmHwB,CArmHxB,SAsmHuB,CArmHvB,gEACE,UAmmH2B,CApmH7B,gEACE,QAomH2B,CAI7B,8CACE,iBAvvHU,CAwvHV,kBAxvHU,CA2vHR,oKAEE,8BAMR,mBAEE,kBAptHA,yBACE,WACA,cACA,WAotHJ,kBACE,kBACA,YACA,OACA,WAtwH2B,CAuwH3B,uBACA,WACA,iBAGF,8CACE,4CACE,WA2CJ,QACE,cACA,wBAEA,sBACE,cAn9HuB,CAo9HvB,gBACA,qBACA,iBA1CsB,CA+CpB,gIAEE,eAxBiB,CAtrHvB,gJACE,WACA,eAorHqB,CAnrHrB,kBACA,qBAgtHI,wKACE,UA5B2B,CA6B3B,WA7B2B,CAgC7B,kNAtsHN,iBAusHqD,CAC7C,cAnEY,CAoEZ,iBApEY,CApoHpB,sOACE,iBAqsHmH,CApsHnH,gBAosHmD,CAI/C,sTA3sHN,iBA4sHqD,CAC7C,eACA,kBA7sHR,8VACE,iBA0sHqH,CAzsHrH,gBAysHmD,CAI/C,sJACE,UACA,UA3C6B,CA4C7B,WA5C6B,CA+C7B,gOACE,cAlFU,CAmFV,iBAnFU,CAqFZ,wPACE,eAv5HS,CAg6HT,8YApuHV,gBAypHwB,CAxpHxB,sbACE,gBAmuHiF,CAluHjF,iBAspHsB,CA+Ed,klCAGE,gBAjEgB,CAkEhB,cAnEc,CAoEd,mBAGF,kXACE,cAzEqB,CAgF3B,6IACE,eArFwB,CAvrHhC,6JACE,WACA,eAqrH8B,CAprH9B,kBACA,qBA2wHM,gVACE,gBAMJ,6IAEE,eAhG0B,CAxrHlC,6JACE,WACA,eAsrHgC,CArrHhC,kBACA,qBAuxHM,wVAEE,gBAKR,6DACE,iBACA,oBAKN,aAEE,kBAEA,oDACE,wCAGF,6BACE,kBAEA,uDAEE,aACA,mBACA,2BAEA,iBACA,SAEA,gBAjzHJ,eAkzH6B,CACzB,mBAlzHJ,iEACE,gBAgzHiC,CAI/B,8EACE,kBACA,MACA,OACA,YAEA,SACA,UAGF,2EAEE,WA90HN,mFACE,WACA,kBA60HqC,CA50HrC,kBACA,qBAk1HF,mDAEE,kBACA,iBAGA,cAEA,uEACE,kBACA,eAp1HJ,eAq1H6B,CACzB,oBACA,WACA,mBACA,uBACA,oBACA,gBACA,SA31HJ,2FACE,gBAm1HiC,CAS/B,iHACE,gBAGJ,+DACE,aAGJ,gCACE,eAGF,wBACE,kBACA,SAr2HF,MAs2HiC,CAC/B,WAt2HF,kCACE,SAo2HkC,CAn2HlC,OAm2H+B,CAE/B,kCAx2HF,SA8pH+B,CA4M3B,wBACA,oBA12HJ,4CACE,SAu2HkE,CAt2HlE,UA2pH6B,CAiN/B,8CAIE,aACA,2BACA,mBAEA,eAxNe,CA2Nf,YA74HF,8DACE,WACA,eAgrHe,CA/qHf,kBACA,qBA44HA,khBAIE,UAtOyB,CAuOzB,gBACA,mBACA,uBAEF,kXAIE,kBACA,kcACE,aAIJ,gIAh5HF,iBAi5HiD,CAh5HjD,oJACE,iBA+4HyG,CA94HzG,gBA84H+C,CAG/C,kJACE,cAjrIqB,CAkrIrB,iBAlrIqB,CA4RzB,iBAu5HiD,CAC7C,kBACA,uBAx5HJ,0LACE,iBAq5H2G,CAp5H3G,gBAo5H+C,CAI/C,oEACE,UACA,UAnQ2B,CAoQ3B,WApQ2B,CAsQ7B,8EACE,YAIA,sFACE,UAzrII,CA0rIJ,WA1rII,CA8rIR,sEACE,WACA,eAzmIe,CAqLnB,eAq7H8B,CAr7H9B,iBAs7H+B,CAr7H/B,0FACE,gBAm7HiC,CAp7HnC,0FACE,gBAo7HmC,CAGnC,8FACE,aACA,mBAGA,kBAMA,cAKA,YAz8HJ,cA28H+B,CA38H/B,gBA48H8B,CA38H9B,kHACE,iBAy8HgC,CA18HlC,kHACE,aA08HkC,CAG9B,sSAx8HN,cA08HqD,CAz8HrD,8UACE,iBAw8HsD,CAv8HtD,aAu8HmD,CAIjD,sHACE,aACA,cACA,eA7oIa,CA+oIb,4IACE,UA/oIU,CA2LlB,cAq9HqD,CAp9HrD,gKACE,iBAm9HsD,CAl9HtD,aAk9HmD,CAIjD,kHACE,aACA,gBA39HN,iBA69HmD,CA59HnD,sIACE,iBA29HuD,CA19HvD,gBA09HiD,CAIjD,4IACE,cACA,SAMF,sHACE,uBACA,uBAEA,0KACE,cA1wImB,CA2wInB,iBA3wImB,CA8wIrB,kMACE,cACA,YACA,uBACA,gBAEA,0OAx/HN,gBAypHwB,CAxpHxB,kRACE,gBAu/H6E,CAt/H7E,iBAspHsB,CAmWlB,8MACE,cAjyIiB,CAkyIjB,gBACA,qBACA,cAzXO,CA0XP,iBAvXgB,CAwXhB,gBACA,mBACA,uBAEF,8MACE,cAzyIiB,CA0yIjB,qBACA,kBAjYO,CAkYP,eAjYY,CAkYZ,iBAjYgB,CAkYhB,gBACA,mBACA,uBAEF,0MACE,cAnzIiB,CAozIjB,gBACA,qBACA,cAzYM,CA0YN,iBAzYW,CAgZjB,2DACE,YAEA,eA/XsB,CAnrH1B,2EACE,WACA,eAirHwB,CAhrHxB,kBACA,qBAijIE,4KACE,gBAGF,mGACE,sBAGF,iGACE,cAMJ,2DACE,YAEA,eAnZwB,CAprH5B,2EACE,WACA,eAkrH0B,CAjrH1B,kBACA,qBAskIE,oLAEE,gBAaR,wBACE,eACA,OACA,MACA,WA/yIa,CAgzIb,UACA,iBAbmB,CAcnB,8BACA,cAEA,wCACE,eACA,kBACA,WACA,eACA,eACA,WAGF,0CACE,UAIF,2CACE,oBAIF,kCACE,UACA,mDAzzIa,CA0zIb,0BACA,oDACE,UACA,mDAzzIU,CA0zIV,0BACA,uBAIJ,iCACE,UACA,mDAj0IY,CAk0IZ,0BAIJ,gBACE,aACA,sBACA,cACA,gBAvDgB,CAwDhB,gBACA,yBACE,gBAzDoB,CA0DpB,sCACE,WA7DmB,CA8DnB,eA9DmB,CAmEzB,aACE,aACA,mBACA,eAvEiB,CAwEjB,WAxEiB,CAyEjB,qBACA,2BAEA,eACE,WACA,cACA,kBACA,mBAQF,yBACE,gBAGF,wBApqIA,eA2qI2B,CAEzB,qBACA,gBACA,cACA,eACA,oBACA,gBACA,YACA,kBACA,mBACA,WAhBA,0CACE,UACA,SAvqIJ,kCACE,gBAyqI+B,CAY/B,gCAvrIF,uBAwrIyB,CAvrIzB,0CACE,uBAsrIsD,CAEtD,0BACE,qBACA,YAEF,6BACE,gBACA,mBAEF,6CACE,sBAMJ,oBACE,YACA,YACA,UAIJ,yBACE,gBACE,gBAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAKN,yBACE,gBACE,eAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAQF,+CACE,iBACA,YACA,aACA,oBAMJ,4BACE,kBACA,WAn9IW,CAu9If,YACE,eACA,cACA,kBACA,UACA,qBACE,qBACA,UACA,kBAEF,mBACE,eACA,eACA,SACA,SACA,6BACA,YAGF,yCACE,WAIJ,0CACE,gBACA,eACA,iEACE,kBACA,yEACE,kBACA,UACA,WACA,QAnxIJ,SAoxImC,CAnxInC,mFACE,SAkxIqD,CAjxIrD,UAixIiC,CAEjC,iKA7xIF,qBA8xI0B,CA7xI1B,qLACE,qBA4xImE,CAGrE,qDACE,aACA,YACA,0DApyIF,UAqyIwB,CApyIxB,oEACE,WAmyI4B,CAE5B,sEAvyIF,WAwyIwB,CACpB,aAxyIJ,gFACE,UAsyI6B,CAI/B,0DACE,aAGF,gIAhzIA,eAizI2B,CAhzI3B,oJACE,gBA+yI+B,CAGjC,mDACE,UACA,8DACE,kBACA,SACA,WACA,oBACA,mBACA,kBArzIJ,iBAszImD,CArzInD,wEACE,cAozIqE,CAnzIrE,kBAmzIiD,CAC/C,oEACE,cACA,YACA,kBACA,QACA,WAn0IN,iDAo0I8B,CA7zI9B,UA8zIqC,CAp0IrC,8EACE,gDAk0IqE,CA5zIvE,8EACE,UA4zIyD,CA3zIzD,SA2zImC,CASvC,YACE,mBACA,qBACA,WALkB,CAMlB,kBAGF,kBACE,aACA,gBACA,SACA,UAGA,sBACA,aACA,mBAGF,2BACE,gBAIF,0BACE,iBACA,aACA,kBACA,gEAEA,gCACE,aAIJ,eAGE,sBACA,kBACA,SACA,OACA,WACA,WACA,0BACA,sBACA,0DAKA,0BACE,gBAKJ,qBACE,gBACA,mBAKF,gCACI,0BACA,+BAIJ,qBACI,kBACA,cAt5IF,qBAw5I0B,CAv5I1B,+BACE,sBAs5IqC,CAErC,oDACI,kBAGJ,+CACI,yDAGJ,yBACI,kBACA,iBACA,MACA,OAMR,mBACE,cACA,kBACA,WACA,UAN2B,CAQ3B,yBACA,2BAn7IA,qBAq7IwB,CAp7IxB,6BACE,sBAm7ImC,CAErC,gDACE,kBAGF,iCACE,cACA,kBACA,gBAEA,WACA,UAvByB,CAyBzB,sCAEA,yCACE,kBAEA,OACA,MACA,SAEA,WACA,UAnCuB,CAsCzB,mDACE,WACA,aACA,kBAEA,aACA,UA5CuB,CA6CvB,WAEA,6BACA,qCACA,8BAGF,oFAKE,gCAQE,wDACE,aAEF,wDACE,0BACA,iEAKJ,8DACE,aAKF,gEACE,8GAGF,gEACE,8GAKJ,wGAEE,eAEA,iHACE,oBAEF,iHACE,oBAON,gDACE,wCAEA,0BAEA,kEACE,cACA,oCAKN,iBACE,GACE,UACA,wCAEF,KACE,UACA,wCAGJ,kBACE,GACE,UACA,8BAEF,IACE,UAEF,KACE,UACA,kCAGJ,oDACE,GACE,sBACA,iCAEF,MACE,sBACA,iFAEF,OACE,uBACA,+EAEF,KACE,uBAGJ,8CACE,GACE,sBACA,iCAEF,IACE,sBACA,sEAEF,OACE,WACA,gFAEF,KACE,qBAGJ,oDACE,GACE,sBACA,0FAEF,OACE,uBACA,0FAEF,OACE,uBACA,0FAEF,KACE,uBAGJ,8CACE,GACE,qBACA,wEAEF,IACE,aACA,iFAEF,OACE,WACA,2EAEF,KACE,sBAoBJ,gBACE,sBACA,cACA,kBAba,CAcb,mBACA,eACA,kBAGA,0BAhBA,eAEA,wCACE,eAiBF,8BACE,kBACA,QACA,2BACA,sBACA,qBACA,UAjCU,CAkCV,WAlCU,CAmCV,eAjqJF,MAkqJqB,CAlqJrB,UAmqJsB,CAlqJtB,wCACE,SAgqJsB,CAjqJxB,wCACE,OAiqJ0B,CAE1B,mDACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAGF,qCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAIJ,mDACG,QAjEY,CAoEf,wBACE,sBACA,kBACA,MACA,OACA,UA5EU,CA6EV,WA7EU,CA8EV,mBACA,iBACA,kBACA,kCAGF,uBACE,sBACA,kBACA,MACA,OACA,UAzFU,CA0FV,WA1FU,CA2FV,kBACA,+BACA,mBAGF,kCACE,qBAGF,0BACE,sBACA,kBACA,qBAruJF,gBAuuJ4B,CAvuJ5B,cAwuJ6B,CAE3B,sBACA,mBACA,oBACA,WA5uJF,oCACE,aAquJ6D,CAtuJ/D,oCACE,iBAsuJ8B,CAUhC,qBACE,aAIA,wEACE,UACA,SACA,WACA,YAIF,oFACE,UACA,SACA,WACA,YAIJ,yCAlIA,eAEA,uDACE,eA36IF,yBAGI,kFA6iJJ,iBA1iJA,+CAII,4LAsiJJ,iBAniJA,gDAKI,ySA8hJJ,iBA3hJA,iDAMI,gbAqhJJ,iBAlhJA,0BAOI,qoBA2gJJ,iBAIA,+BACE,mBACA,+CACE,qBACA,YACA,yBACA,sBACA,aACA,gBAEA,yDACE,QAEF,6DACE,eAMR,8CACE,wCACE,uBA0BA,8EACE,0DAl0JJ,yBAm0JmC,CAl0JnC,wFACE,0BAi0J2C,CAKzC,4HACE,6CAMR,0BACE,eACA,OACA,MACA,UA/iKe,CAgjKf,UACA,aAGA,2BAGA,6CACE,oBAGF,+CACE,cACA,4BAIF,oCACE,cACA,UACA,mDACE,mDAtjKW,CAujKX,0BACA,qDACE,UACA,mDAtjKQ,CAujKR,0BACA,uBAMN,mCACE,UACA,mDAhkKY,CAikKZ,0BAIJ,0BACE,eAnEoB,CAuEpB,0EAEE,cA3Ec,CA6EhB,6BACE,QAUA,4PACE,aACA,eACA,mBAOF,+DACE,0BACA,mBAKN,UACE,aAII,4MACE,aACA,eACA,mBAKN,qCAIE,uCAGA,wBACA,2BAIA,mBACA,gBACA,0BAGF,gBACE,aAEF,0BACE,eAGA,gCACE,eAGA,iDACE,0BACA,wBACA,mBASF,oEACE,uBA9mKqB,CAmnKzB,wDAIE,uCAGJ,8CACE,gBACA,uBA7nKyB,CA8nKzB,mBACA,oEAv+JF,cAw+J+B,CAx+J/B,iBAnKwB,CAoKxB,8EACE,gBArKsB,CAoKxB,8EACE,eAu+JwD,CAK5D,iBACE,aACA,mBACA,eA9LyB,CA+LzB,kBA9L4B,CApzJ5B,cAm/J2B,CAn/J3B,iBAnKwB,CAwpKxB,uBAxM4B,CAyM5B,0BACA,+BACA,kBACA,uBACA,eACA,gBACA,mBACA,0BACA,YA7/JA,2BACE,gBArKsB,CAoKxB,2BACE,eAk/JoD,CAYtD,2CACE,eACA,cACA,uBACA,mBACA,gBAEA,oDACE,eAIJ,iCACE,cA7gKF,oBA8gK4B,CA9gK5B,gBA+gK2B,CACzB,WACA,2BACA,iBAjhKF,2CACE,sBA4gKoC,CA7gKtC,2CACE,eA6gKgC,CAMlC,uCACE,cACA,YACA,kBACA,QAzhKF,UA0hKsB,CA1hKtB,SA2hKqB,CACnB,WACA,eACA,sBA7hKF,iDACE,UAwhK0B,CAzhK5B,iDACE,SAyhKyB,CAM3B,uCACE,aACA,QACA,oBACA,mCACA,UAIJ,eACE,aACA,sBAYA,0GApzKsB,CAqzKtB,iBACA,eA3QqB,CA4QrB,kBA3jKA,yBA6jK+B,CAE/B,mBAlBA,0BACE,8BAIA,4CACE,eAx0KqB,CAy0KrB,kBAz0KqB,CAsRzB,yBACE,0BA2jKuC,CAIzC,0BACE,gBACA,eApRmB,CAqRnB,iBACA,gBAEF,iBACE,UAIJ,UACE,eACA,kBACA,aACA,mBACA,WACA,kCAiBA,sBACA,WArTqB,CAqSrB,oBACE,eAGF,gBACE,aAGF,mBAxtKA,0BAD2B,CAE3B,wBAF2B,CAG3B,uBAH2B,CAI3B,qBAJ2B,CAK3B,oBAL2B,CAM3B,gBAN2B,CA2tKzB,WACA,mBACA,gBACA,uBAMJ,YACE,cACA,kBACE,cACA,eACA,yBACA,aACA,gBAEF,sBACE,kBACA,mBAIJ,8CACE,oBACE,6BAEF,eACE,uBAKF,uDAhoKA,iBAioK6B,CAjoK7B,kBAgzJsB,CA/yJtB,iEACE,iBA8yJoB,CA/yJtB,iEACE,kBAgoKoD,CA9kKtD,qEACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,+EACE,SA4DsB,CA7DxB,+EACE,OA6D0B,CAE1B,4EACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,2EACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,0FACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,gEACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,0EACE,yBAEA,gFACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,iEACE,eAIA,uFACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA0+JF,qEAtoKF,2BAuoK8B,CAvoK9B,iBAwoK+B,CAvoK/B,+EACE,gBAqoK8D,CAtoKhE,+EACE,4BAsoKmC,CASvC,WACE,sBACA,kBACA,sBACA,UA52KgB,CA82KhB,WAVqB,CAWrB,eAXqB,CAYrB,SACA,cACA,iCAEA,cACE,gBASF,qBACE,aAIF,qDAEE,aACA,2BAIF,kGAEE,mDAl4Ka,CAs4Kf,+DAEE,gBACA,aACA,+BAIF,uKAIE,gBACA,aACA,+BAIF,2CACE,gBACA,aACA,+BAIF,wCACE,gBACA,aACA,gCAIF,wEACE,qGAEA,mBACA,uBAIF,+CACE,qGAKF,wCACE,qGAEA,mBACA,uBAKJ,oCACE,aAGF,4BACE,OACA,MACA,gCACA,gDACE,mCAIJ,kBACE,UACA,MACA,8BACA,4BACE,2BAIJ,yBACE,WACE,eA1HoB,EA8HxB,yBACE,WACE,wBACA,4BACA,6BAKJ,8CACE,4BACE,4BAEF,kBACE,4BA8BJ,4BACE,GACE,qBAEF,IACE,mBAEF,KACE,sBAIJ,oCACE,GACE,qBAEF,IACE,qBAEF,KACE,oBAIJ,mCACE,GACE,qBACA,UAEF,IACE,mBACA,UAEF,KACE,oBAaJ,UACE,WAzEa,CA0Eb,eAzEiB,CA0EjB,kBACA,gBACA,iBACA,UACA,cACA,mBAEA,8BACE,sBAGF,6BACE,aACA,WACA,YAGF,6BACE,kBAMF,8BACE,WACA,kBACA,SACA,UApGmB,CAsGrB,oBACE,kBACA,OACA,QACA,YAEF,yBACE,oDACA,iCAEF,0BACE,kBACA,OACA,QACA,YAEF,iCAIE,WACA,YAMF,8BACE,kBA75KF,MA85KiC,CAC/B,QACA,qCACA,oDACA,sCAj6KF,wCACE,SA45KkC,CA35KlC,OA25K+B,CAMjC,oBACE,UA7EF,kBAx1KA,UAy1K+B,CAC/B,SACA,UA/DoB,CAgEpB,WAhEoB,CAiEpB,mBA0FE,qBACA,oDAv7KF,8BACE,SAu1K4C,CAt1K5C,WAs1K6B,CAmF7B,0BACE,WACA,kBACA,UAnJgB,CAoJhB,WApJgB,CAqJhB,mBACA,iBACA,mBACA,mBAQJ,mBAGE,aACA,mBACA,uBAEA,kBACA,WACA,SAtJc,CAuJd,UAxJgB,CAyJhB,WA1JiB,CA2JjB,mBAEA,+CACA,kDAGA,yBACE,kBACA,WAh9KJ,QAi9KmC,CAC/B,kBAxKgB,CAyKhB,SACA,mCACA,oCACA,qBA5KgB,CA6KhB,uBAEA,UACA,kCACA,kDA19KJ,mCACE,SA+8KsF,CA98KtF,SA88KiC,CAajC,kCACE,UACA,eACA,iBAOJ,yBAhJA,kBAx1KA,UAy1K+B,CAC/B,QACA,UArD0B,CAsD1B,WAtD0B,CAuD1B,mBA6IE,qBACA,UAEA,mDA5+KF,mCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAsJ/B,6BAvJA,kBAx1KA,UAy1K+B,CAC/B,SACA,UAsJI,CArJJ,WAsJI,CArJJ,mBAuJE,qBACA,gBAlN2B,CAmN3B,mBACA,aAt/KF,uCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAkK7B,0BACE,UAIJ,gBACE,aAKA,+EAEE,gBAMF,mFAEE,aAKE,gFACE,qBAIA,0FACE,mBACA,UAEF,qFACE,8DAOF,oFACE,mBAWF,oFACE,mBACA,qEAEF,+EACE,sEAMJ,0IACE,mBAEF,4RAEE,UACA,wCAMJ,qDACE,mBAEF,8GAEE,UACA,wCAMJ,mCACE,aAEF,oCACE,UAEF,6CACE,UAEF,8BACE,qBAEF,uCACE,cAIJ,uBACE,sBACA,gBA/Ue,CAgVf,YAEA,0CACE,OACA,iBACA,oBACA,UAvVS,CAwVT,kBACA,aACA,uBAGF,2CACE,YACA,SA5ViB,CA6VjB,MACA,2BAGF,2CACE,SACA,mBACA,qBACA,SAEA,2DACE,SAGF,0DACE,WAIJ,sCACE,SAIA,6CAGE,WACA,SAHW,CAKX,+CAGA,mDACE,SATS,CAUT,UACA,kCACA,eACA,qCACA,sBArXY,CAsXZ,wBAEA,UACA,kCACA,+BAGF,4DACE,UACA,eACA,iBAOF,mMACE,MAMJ,qDACE,mBAEF,8GAEE,UACA,wCAKJ,uDA1sLF,SA2sLuB,CA3sLvB,OA4sLwB,CA3sLxB,iEACE,MAysL2B,CA1sL7B,iEACE,UA0sLyB,CAGvB,iDACE,YACA,MAMR,oBACE,aACA,mBACA,mBAQE,iGACE,cAPU,CAQV,eACA,WATU,CAUV,mDAn7LW,CAo7LX,oCAIJ,iDApuLA,iBAutLe,CAttLf,2DACE,iBAmuL4D,CAluL5D,gBAotLa,CAiBf,gDAxuLA,gBAutLe,CAttLf,0DACE,gBAuuL4D,CAtuL5D,iBAotLa,CAqBf,iCACE,sBAEA,2HAEE,eACA,cACA,kBAKF,0DACE,kBAzvLJ,iBA0vLmD,CAC/C,YACA,iBA3vLJ,oEACE,cAwvLuD,CAvvLvD,kBAuvLiD,CAOrD,8CACE,qCACE,8BAKJ,iBACE,UACA,MACA,OACA,QACA,6BAEA,2CAEA,sCACE,+BACA,oFACE,mDAYN,kCACE,GACE,+BAEF,KACE,wCAPsB,EAU1B,mCACE,GACE,wCAZsB,CAcxB,KACE,gCAMF,gDAKE,+BAJA,8DACE,SAKF,gEACE,UAGF,qEACE,gBAGF,0HACE,oDAMN,cACE,cACA,cAjDoB,CAkDpB,eAhDsB,CAiDtB,eApDsB,CAqDtB,cAjDiB,CAkDjB,kBAEA,kCACE,cACA,YAxDgB,CA2DlB,oCACE,cACA,UACA,kBAIJ,iCACI,mBAGJ,8BACI,mBAUF,0BACE,eAthM8B,CAuhM9B,mBAIJ,UACE,cACA,mBACA,eACA,aACA,iBACA,YACA,iBACA,mBACA,aAl4LA,mBAo4L0B,CAp4L1B,iBAg3Lc,CA/2Ld,oBACE,gBA82LY,CA/2Ld,oBACE,oBAm4LyC,CAE3C,uBAv4LA,mBAw4L4B,CAx4L5B,cAy4L6B,CAx4L7B,iCACE,aAs4LmC,CAv4LrC,iCACE,oBAu4L8B,CAGhC,oBACE,eAEA,kCACE,eAIJ,wBACE,YACA,UA1CW,CA2CX,WA1CY,CA2CZ,kBACA,iBAl5LF,gBAm5L+C,CAC7C,WAn5LF,kCACE,gBAi5LkD,CAh5LlD,eAg5L6C,CAI/C,oCA95LA,oBA+5L6B,CA/5L7B,eAg6L4B,CA/5L5B,8CACE,gBA65LoC,CA95LtC,8CACE,mBA85L+B,CAK/B,2FAEE,gBAKF,sCACE,UACA,SACA,WACA,YAIJ,oBACE,yBACA,eACA,WAGF,kBACE,SACA,WACA,QACA,WAhFgB,CAiFhB,kBACA,kBAGF,8BACE,QACA,OACA,WACA,kBACA,+BACA,UAEF,yCACE,kCAGF,oBACE,kBACA,SACA,OACA,MACA,aACA,WAtGgB,CAuGhB,UAvGgB,CAwGhB,kBACA,0GAptMoB,CAstMpB,2BACE,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,yCACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKF,0HAGE,0BA1rMS,CA2rMT,+CAEF,0EAEE,sBAMN,8CACE,mCACE,sBAEF,8CACE,yBAEF,qCACE,uBAQJ,+BACE,aACA,cACA,gBAGF,YACE,kBACA,MACA,OACA,QACA,SACA,WACA,UAGF,QACE,cACA,SACA,kBACA,gBACA,kBACA,cACA,wDACE,iBAEF,8BACE,mBA7BiB,CA+BjB,8CACE,kBACA,SACA,OACA,QACA,WApCe,CAqCf,UAEF,sDACE,MACA,WAzCe,CA6CjB,kDACE,aACA,kBACA,SACA,UACA,WACA,YACA,iBAGA,mDACE,kBAKJ,0CACE,qBACA,mBAGA,0EACE,SAMR,gBACE,cACA,kBAEA,0BACA,8DACE,YACA,UAlFmB,CAmFnB,kBACA,QACA,2BACA,gBACA,UACA,eACA,eACA,+CACA,iDAhzMgB,CAizMhB,0EACE,aAEF,sFACE,YACA,eAEF,gFACE,gBAEF,8EACE,kBACA,QACA,SACA,gCAIF,kFACE,2CAGJ,+BA3nMA,MA4nMiC,CAC/B,yDA5nMF,yCACE,SA0nMkC,CAznMlC,OAynM+B,CAGjC,+BA/nMA,OAgoMiC,CAC/B,yDAhoMF,yCACE,UA8nMkC,CA7nMlC,MA6nM+B,CAI/B,uCACE,+CAIF,sDACE,WACA,mBACA,kEACE,YAMR,eAEE,kBACA,gBACA,cACA,WA7ImB,CA7mMnB,qBACE,WACA,cACA,WAwvMF,iCACE,kBACA,MA3pMF,MA4pMiC,CA3pMjC,2CACE,SA0pMkC,CAzpMlC,OAypM+B,CAEjC,4BACE,cAEF,8BACE,aACA,sBACA,kBACA,sCACE,WACA,qBAKN,sBAEE,WAnKmB,CAoKnB,aACA,wDACA,kBAjrMA,MAkrM+B,CAC/B,0BArxMA,4BACE,WACA,cACA,WAgGF,gCACE,SAgrMgC,CA/qMhC,OA+qM6B,CAE/B,qCACE,kBACA,uBAEF,kCACE,eAEF,yBACE,kCACE,iBAKN,wBACE,cACA,kBACA,QA1LmB,CA2LnB,OACA,QACA,SACA,gBAGF,eACE,aACA,kBACA,MACA,OACA,QACA,SACA,wDACA,cAEA,0BACA,4BACE,YACA,gBAEF,wDACE,gBAEF,uCAruMA,2BAsuM0B,CACxB,iCACA,kBAvuMF,iDACE,0BAouM2C,CAG3C,yCACE,gCACA,oBAl7MuB,CAm7MvB,kBAGJ,wCA/uMA,0BAgvM0B,CACxB,iCACA,kBAjvMF,kDACE,2BA8uM0C,CAG1C,0CACE,gCACA,oBA57MuB,CA67MvB,kBAGJ,mBACE,cACA,YACA,4BACE,iCAKN,WAGE,kBACA,UACA,WACA,SACA,WACA,mBACE,+FAGF,oBACE,+FAKJ,OACE,kBACA,WACA,aAGF,QACE,eACA,kBACA,iBACA,aACA,gEACA,eACA,mBACA,kBACA,yBAnyMA,UAoyMoB,CACpB,gBACA,sBACA,gBACA,uBAvyMA,kBACE,WAkyMwB,CAK1B,iCACE,gBACA,aAEF,kBACE,eAEF,oBACE,oBACA,mBACA,iBACA,uBACA,WACA,eAEF,iBACE,gBAIJ,wDACE,yBACA,0BAUF,eACE,cAGF,SACE,kBACA,WA/iNc,CAijNd,sBACA,eACA,gBAGA,WA5lNa,CA+lNb,UACA,mDAviNe,CAyiNf,2BACE,aACA,mBACA,mBAEA,iBACA,eAEA,gBAKA,eAEA,uCACA,kBACA,eAEA,gBAGA,6CACA,mDAhkNa,CA6Mf,0BAq3MgC,CAj4MhC,mCACE,WACA,eAi3MiC,CAh3MjC,kBACA,qBASF,qCACE,wBAm3M0C,CAE1C,gCAEE,YACA,sBACA,YAIJ,oBACE,mBAEA,sCACE,mBAKF,2CACE,mDAllNU,CA2lNZ,+JACE,mDAhmNW,CAomNf,kBACE,UACA,oCACE,kCAGA,2CACE,mCAGJ,kCACE,UACA,oDACE,+BASJ,oDACE,UACA,kCAIA,+DACE,kCAIF,iEACE,iCAIF,2DACE,mCAKN,oBACE,iBACA,iBACA,eACA,eACA,yBACA,YAGF,oBACE,YA78MF,cA88M6B,CA98M7B,eAq0M4B,CAp0M5B,8BACE,gBAm0M0B,CAp0M5B,8BACE,aA68MwD,CAI5D,yBACE,SACE,OACA,QACA,WACA,eACA,YACA,gBACA,SACA,UAII,+DACE,kCAIF,iEACE,kCAOV,yBACE,SACE,gBACA,mBACE,SAEF,iBACE,OAEF,kBACE,QAEF,gBACE,MAIF,mBAv/MF,MAw/MmC,CAv/MnC,6BACE,SAs/MoC,CAr/MpC,OAq/MiC,CAGjC,iBA3/MF,OA4/MmC,CA3/MnC,2BACE,UA0/MoC,CAz/MpC,MAy/MiC,CAS7B,iEACE,kCAIF,kEACE,kCAOV,0BAEI,2BACE,iBAKN,8CACE,SACE,uBAMJ,oBACE,2BAiBF,WACE,sBACA,aACA,sBAEA,kBACA,UAEA,eACA,eAtBkB,CAuBlB,WAEA,mCACE,uBA/wNyB,CAgxNzB,yDA/wNgC,CAgxNhC,gDAGF,mEACE,iCAGF,6BACE,WAGF,oDAGE,sBAMF,sBACE,gBAGF,mBACE,YAnDqB,CAoDrB,gBApDqB,CAqDrB,gBArDqB,CAwDvB,0BACE,WA1D4B,CA2D5B,eA3D4B,CA4D5B,eA5D4B,CA8D5B,4CACE,YACA,gBACA,gBAIJ,sBA7mNA,gBA+iNyB,CA9iNzB,gCACE,gBA4mNwE,CA3mNxE,iBA4iNuB,CAmEvB,8BACE,UAGE,iEACE,aAOV,kBACE,cAp6NyB,CAq6NzB,sBACA,sBACA,gBACA,aACA,mBACA,mBAEA,WACA,WAjGkB,CAkGlB,eAlGkB,CAmGlB,eACA,SAEA,+DACE,kBACA,oBACA,eAGF,oBACE,cACA,qBAEF,+BACE,aACA,mBAEF,8BACE,eAEF,6BACE,aACA,gBAEA,iFACE,uBAj3NuB,CAk3NvB,yDAj3N8B,CAk3N9B,gDAKA,uGACE,gBAIN,yCA/qNA,gBAkjN0B,CAjjN1B,mDACE,gBA8qNyE,CA7qNzE,iBA+iNwB,CAgI1B,wCAlrNA,iBAkjN0B,CAjjN1B,kDACE,iBAirNyE,CAhrNzE,gBA+iNwB,CAoI1B,qCAtrNA,iBAkjN0B,CAjjN1B,+CACE,iBAqrNyE,CAprNzE,gBA+iNwB,CAsIxB,gDAxrNF,cAyrNiD,CAxrNjD,0DACE,iBAurNkD,CAtrNlD,aAsrN+C,CAIjD,8CA/DF,kBAgEI,8BAKJ,sEACE,WACE,eAzJgC,CA4JlC,kBACE,WA7JgC,CA8JhC,eA9JgC,EAmKpC,uEACE,WACE,eApKiC,CAuKnC,kBACE,WAxKiC,CAyKjC,eAzKiC,EAwLrC,YACE,qBACA,oBACA,kBACA,gBACA,UACA,gBACA,cAhBoB,CAiBpB,mBACA,uBACA,WAjBkB,CAkBlB,gBAlBkB,CAmBlB,kBAfsB,CAgBtB,iBAhBsB,CAiBtB,0BACE,+BACA,iBAEF,4BACE,6BACA,gBAzBoB,CA2BtB,6BACE,4BACA,eA7BoB,CA+BtB,2BACE,8BACA,kBAGF,yBA/BF,YAgCI,cA1CkB,CA2ClB,WAzCgB,CA0ChB,gBA1CgB,CA2ChB,iBAvCoB,CAwCpB,gBAxCoB,CAyCpB,2CACA,4CA5CoB,CA6CpB,4CA7CoB,CA8CpB,8CAGF,wBACE,mBAEF,oBACE,mDAx+Na,CAy+Nb,0BACA,mBACA,WAEF,oBACE,mDA1+NY,CA2+NZ,0BACA,mBACA,UAIJ,aACE,gBACA,mBAGA,uBAGA,qBACE,mBAIF,kBACE,QAKJ,6BACE,sBACA,cACA,SACA,gBACA,UACA,kBAEA,yDACE,SACA,sBACA,OACA,SACA,kBACA,UACA,kBACA,QACA,MACA,iCAGF,sDACE,sBACA,WACA,cACA,SACA,UACA,UAGF,0DACE,sBACA,OACA,SACA,UACA,kBACA,QACA,MAKF,8EACE,gBACA,kBAGF,+EAGE,WApD6B,CAlzN/B,UAu2NiC,CAC/B,mBAv2NF,yFACE,UAq2NqC,CAp2NrC,SAo2N+B,CAKnC,qCACE,0GAhnOsB,CAknOxB,mBACE,0GAlnOsB,CAonOxB,mBACE,0GApnOsB,CAsnOxB,qCACE,2GAtnOsB,CAwnOxB,mBACE,2GAxnOsB,CA0nOxB,mBACE,4GA1nOsB,CA4nOxB,qCACE,4GA5nOsB,CA8nOxB,mBACE,4GA9nOsB,CAgoOxB,mBACE,4GAhoOsB,CAkoOxB,sCACE,6GAloOuB,CAooOzB,oBACE,6GApoOuB,CAsoOzB,oBACE,6GAtoOuB,CAwoOzB,sCACE,6GAxoOuB,CA0oOzB,oBACE,6GA1oOuB,CA4oOzB,oBACE,6GA5oOuB,CA8oOzB,oBACE,8GA9oOuB,CAgpOzB,oBACE,8GAhpOuB,CAkpOzB,oBACE,8GAlpOuB,CAopOzB,oBACE,8GAppOuB,CAspOzB,oBACE,+GAtpOuB,CAwpOzB,oBACE,+GAxpOuB,CA0pOzB,oBACE,+GA1pOuB,CA4pOzB,oBACE,+GA5pOuB,CA8pOzB,oBACE,+GA9pOuB,CAiqOzB,8CACE,cACE,uBAIJ,aACE,8BACE,uBAOJ,0EACE,wBAaF,4BACE,aACE,SACA,WACA,gBACA,aA/4MA,YACC,QAeD,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SAmBF,gFA5mBF,aA8mByD,CA7mBzD,wHACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,gFA5mBF,cA6mB+D,CA5mB/D,wHACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,oFACE,2BAeF,oFA7oBF,0BA8oBiD,CA7oBjD,4HACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,0CAGE,2BACA,sBACA,oBAIF,6HAME,2BAIF,kIAME,uBAIF,mHAME,yBAIF,gKAME,6BAIF,qKAME,8BAUF,gJAME,uBACA,yBAIF,qJAME,mBACA,qBACA,eAIF,+JAME,eACA,sBAIF,sIAME,qBACA,uBAIF,0JAME,oBACA,sBA9NF,mCAEA,+CACA,kDACA,+CACA,+CACA,mDACA,iDAME,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAGe,YAGjB,uBACE,cACA,eACA,cACA,sBArBF,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAMF,uBACE,cACA,eACA,cACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,UACE,cACA,eACA,gBACA,sBAGF,sBACE,cACA,eACA,gBACA,sBAMF,yBACE,cACA,eACA,gBACA,sBA2BF,8EACA,8EAIA,4FACA,4FAIA,+FACA,+FAIA,0FACA,0FAGA,8BAIA,6FACA,6FAGA,kCA9GF,mCACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,qCACA,+BAkPA,8CAGE,YAGF,mMAaE,YAIF,+KASE,aAKF,4CAGE,WAGF,0LAaE,WAIF,gJAQE,YAGF,aACE,eAGF,eACI,iBAGJ,aACE,SACA,WACA,gBACA,YAwgMJ,yBAGI,iEACE,aAz5MF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAu1MF,yBA/5MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCA61MF,+CAEI,sGACE,aAGJ,mDACE,aA56MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA02MF,yBAl7MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAg3MF,gDAGI,+MACE,aAGJ,oEACE,aAh8MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA63MF,0BAr8MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAk4MF,iDAGI,0VACE,aAGJ,qFACE,aAl9MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAg5MF,0BAx9MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,qCAxEE,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,kCAs5ME,ugBACE,aAGJ,sGACE,cAMJ,aAEE,wCACE,yBN13OJ,MACE,2BACA,4BACA,mCACA,8BACA,kCACA,6BACA,4BAIA,uCAEE,iBAUJ,eACE,kBAIF,oBACE,QACA,uBAGF,0BACE,uBACA,kBAGF,mBACE,eACA,iBACA,WACA,wBAEA,yBACE,cAIJ,yBACE,eACA,YAGF,uBACE,yBAGF,sCAEE,iBAGF,aACE,mBACA,gBACA,uBAIA,kBACE,gBACA,uBACA,mBAKF,2KAGE,yCACA,6CAKF,2BACE,qBAKF,iCACE,UACA,kCAGF,uCACE,mFAKA,mBAEA,6CACE,mFAQJ,kBACE,aACA,WACA,yBACA,cACA,yBACA,kBACA,eACA,kBACA,mBAEA,8BACE,kBACA,iBAGF,wCACE,WACA,YACA,cAEA,qBAIF,uDACE,gBAEA,4DACE,gBAMJ,yFAEE,eACA,YACA,SACA,wBACA,iBACA,aACA,uBACA,mBACA,uBACA,uGACE,eACA,YACA,WAIJ,+DAEE,eACA,sBACA,sLAEE,cACA,6BACA,qBAKF,wFAEE,cACA,cAIJ,uCACE,qBACA,+CACE,eAMR,gBACE,aACA,sBACA,qBACE,YACA,eACA,kBAIJ,cACE,YACA,aACA,gBACA,oBACA,8BAEA,4CAEE,eACA,kBACA,kGAEE,WAKN,MACE,WAGF,+CACE,sBACA,uBAGF,YACE,6BACA,sBACA,YACA,UACA,eACA,SACA,sBACA,sBACA,uBACA,0BACA,kBACA,iDACA,oDACA,4CACA,+EAEA,wEACA,qFAEA,qEAGF,yBACE,qBACA,UACA,8EAEA,iFAEA,yEAIF,kBACE,kCACA,kDACA,sBACA,2BACA,uCAGF,aACE,UAGF,YACE,kCACA,kDACA,sBACA,2BACA,uCAGF,yCAEE,cACA,6BACA,WACA,YACA,UACA,eACA,SACA,sBACA,iCACA,uBACA,0BACA,kBACA,4DACA,+DACA,uDACA,+EAEA,wEACA,qFAEA,qEAGF,wDACE,cAGF,sBACE,sBAGF,uCAEE,cAGF,0BACE,4BAGA,2BAGF,kFAKE,sBACA,uBACA,wBAGF,mCACE,sBACA,mBACA,wBACA,mBAGF,yDACE,kBACA,wBACA,sBAGF,oEACE,4BAGF,4EACE,6BACA,uBACA,2BAGF,8DACE,uBACA,2BAGF,wDACE,uBAGF,wFAIE,sBAGF,0FAIE,qBAGF,yDACE,mBACA,qBACA,YAGF,8EACE,sBACA,kBAGF,kBAEE,eACA,WACA,gBACA,YAOF,UAGE,6BAGF,yBACE,UACA,SACA,eACA,eAIF,QACE,cACA,WACA,YAKF,wBAEE,WAJoB,CAKpB,eALoB,CAQpB,eACA,UAGF,wBAEE,YACA,yBAGA,gBAEA,yBACA,wBACA,gBACA,sBAGF,uCACE,yBACA,cACA,gCAGF,qCACE,yBACA,wBACA,kBACA,gBAGF,wCACE,yBACA,wBACA,kBACA,gBAGF,0BACE,kBACA,YACA,UAGF,6CACE,qBACA,kBACA,gBACA,wBACA,sBACA,kBAGF,sDACE,qBAGF,2DACE,cAGF,+DACE,cAEF,oDACE,yDACA,WACA,kBACA,WACA,WACA,WACA,YACA,4BACA,4BACA,wBAGF,mDACE,eACA,iBACA,kBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,0CACE,qBACA,kBAGF,kDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,eACA,kBACA,gBACA,kBACA,WAGF,wCACE,qBAGF,yCACE,qBAGF,yCACE,qBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,iDACE,kBACA,yBACA,yBACA,QAGF,wDACE,WACA,WACA,yDACA,iCACA,yBAGF,gDACE,QACA,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,gDACE,iBACA,yBACA,yBACA,QAGF,uDACE,YACA,UACA,yDAGF,uBACE,WAIF,SACE,iBACA,yBAEA,gBACA,kBACA,cACA,aAGF,mBACE,cACA,gBACA,sBAGF,kBACE,WACA,YACA,kBAGF,6BACE,WACA,YACA,kBACA,OACA,MAGF,oCACE,WACA,cACA,cACA,UACA,WACA,sBACA,mBACA,oEACA,4DAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,qCACE,8BACA,sBAGF,qCACE,4BACA,oBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,YAGE,UAGF,IACE,WAIJ,8BACE,YAGE,UAGF,IACE,WAIJ,4CACE,uBAGF,4CACE,yBACA,cAGF,4CACE,qBAGF,gCACE,gBACA,YACA,kBACA,YAGF,mCACE,gCAGF,mCACE,8BAGF,gCACE,uDAEE,eAIJ,gCACE,uDAEE,cAIJ,mBACE,yBAGF,mBACE,uBAGF,YACE","sources":["webpack://motion-chat/./src/styles/app.scss","webpack://motion-chat/./node_modules/mdi/scss/_path.scss","webpack://motion-chat/./node_modules/mdi/scss/_core.scss","webpack://motion-chat/./node_modules/mdi/scss/_icons.scss","webpack://motion-chat/./node_modules/mdi/scss/_extras.scss","webpack://motion-chat/./node_modules/mdi/scss/_animated.scss","webpack://motion-chat/./node_modules/angular-material/angular-material.scss"],"names":[],"sourceRoot":""}
\ No newline at end of file
deleted file mode 100644 (file)
index 188fe925ccdf4d1b47233bab30e86131ad7fcac6..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! For license information please see chat.js.LICENSE.txt */
-(self.webpackChunkmotion_chat=self.webpackChunkmotion_chat||[]).push([["chat"],{"./node_modules/@flowjs/ng-flow/dist/ng-flow.js":(e,t,n)=>{var o=n("./node_modules/@flowjs/flow.js/src/flow.js");angular.module("flow.provider",[]).provider("flowFactory",(function(){"use strict";this.defaults={},this.factory=function(e){return new o(e)},this.events=[],this.on=function(e,t){this.events.push([e,t])},this.$get=function(){var e=this.factory,t=this.defaults,n=this.events;return{create:function(o){var r=e(angular.extend({},t,o));return angular.forEach(n,(function(e){r.on(e[0],e[1])})),r}}}})),angular.module("flow.init",["flow.provider"]).controller("flowCtrl",["$scope","$attrs","$parse","flowFactory",function(e,t,n,o){var r=angular.extend({},e.$eval(t.flowInit)),s=e.$eval(t.flowObject)||o.create(r),a=function(t){var n=Array.prototype.slice.call(arguments);n.shift();var o=e.$broadcast.apply(e,["flow::"+t,s].concat(n));if({progress:1,filesSubmitted:1,fileSuccess:1,fileError:1,complete:1}[t]&&e.$applyAsync(),o.defaultPrevented)return!1};s.on("catchAll",a),e.$on("$destroy",(function(){s.off("catchAll",a)})),e.$flow=s,t.hasOwnProperty("flowName")&&(n(t.flowName).assign(e,s),e.$on("$destroy",(function(){n(t.flowName).assign(e)})))}]).directive("flowInit",[function(){return{scope:!0,controller:"flowCtrl"}}]),angular.module("flow.btn",["flow.init"]).directive("flowBtn",[function(){return{restrict:"EA",scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.hasOwnProperty("flowDirectory"),r=n.hasOwnProperty("flowSingleFile"),s=n.hasOwnProperty("flowAttrs")&&e.$eval(n.flowAttrs);e.$flow.assignBrowse(t,o,r,s)}}}]),angular.module("flow.dragEvents",["flow.init"]).directive("flowPreventDrop",(function(){return{scope:!1,link:function(e,t,n){t.bind("drop dragover",(function(e){e.preventDefault()}))}}})).directive("flowDragEnter",["$timeout",function(e){return{scope:!1,link:function(t,n,o){var r,s=!1;n.bind("dragover",(function(n){var a,i,d;i=!1,d=(a=n).dataTransfer||a.originalEvent.dataTransfer,angular.forEach(d&&d.types,(function(e){"Files"===e&&(i=!0)})),i&&(s||(t.$apply(o.flowDragEnter),s=!0),e.cancel(r),n.preventDefault())})),n.bind("dragleave drop",(function(n){e.cancel(r),r=e((function(){t.$eval(o.flowDragLeave),r=null,s=!1}),100)}))}}}]),angular.module("flow.drop",["flow.init"]).directive("flowDrop",(function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){function o(){e.$flow.assignDrop(t)}n.flowDropEnabled?e.$watch(n.flowDropEnabled,(function(n){n?o():e.$flow.unAssignDrop(t)})):o()}}})),function(e){"use strict";var t=e.module("flow.events",["flow.init"]);e.forEach({fileSuccess:["$file","$message"],fileProgress:["$file"],fileAdded:["$file","$event"],filesAdded:["$files","$event"],filesSubmitted:["$files","$event"],fileRetry:["$file"],fileRemoved:["$file"],fileError:["$file","$message"],uploadStart:[],complete:[],progress:[],error:["$message","$file"]},(function(n,o){var r,s="flow"+((r=o).charAt(0).toUpperCase()+r.slice(1));"flowUploadStart"==s&&(s="flowUploadStarted"),t.directive(s,[function(){return{require:"^flowInit",controller:["$scope","$attrs",function(t,r){t.$on("flow::"+o,(function(){var o=Array.prototype.slice.call(arguments),a=o.shift();if(t.$flow===o.shift()){var i={};e.forEach(n,(function(e,t){i[e]=o[t]})),!1===t.$eval(r[s],i)&&a.preventDefault()}}))}]}}])}))}(angular),angular.module("flow.img",["flow.init"]).directive("flowImg",[function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.flowImg;e.$watch(o,(function(t){if(t){var o=new FileReader;o.readAsDataURL(t.file),o.onload=function(t){e.$apply((function(){n.$set("src",t.target.result)}))}}}))}}}]),angular.module("flow.transfers",["flow.init"]).directive("flowTransfers",[function(){return{scope:!0,require:"^flowInit",link:function(e){e.transfers=e.$flow.files}}}]),angular.module("flow",["flow.provider","flow.init","flow.events","flow.btn","flow.drop","flow.transfers","flow.img","flow.dragEvents"])},"./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js":(e,t,n)=>{"use strict";var o,r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),a=n("./node_modules/@uirouter/angularjs/lib-esm/services.js"),i=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js");function d(e,t,n,o,i){var d=(0,r.parse)("viewDecl.controllerAs"),u=(0,r.parse)("viewDecl.resolveAs");return{restrict:"ECA",priority:-400,compile:function(o){var m=o.html();return o.empty(),function(o,_){var c=_.data("$uiView");if(!c)return _.html(m),void e(_.contents())(o);var h=c.$cfg||{viewDecl:{},getTemplate:r.noop},f=h.path&&new r.ResolveContext(h.path);_.html(h.getTemplate(_,f)||m),r.trace.traceUIViewFill(c.$uiView,_.html());var p=e(_.contents()),M=h.controller,y=d(h),L=u(h),g=f&&(0,a.D)(f);if(o[L]=g,M){var Y=t(M,(0,r.extend)({},g,{$scope:o,$element:_}));y&&(o[y]=Y,o[y][L]=g),_.data("$ngControllerController",Y),_.children().data("$ngControllerController",Y),l(i,n,Y,o,h)}if((0,r.isString)(h.component))var v=(0,r.kebobString)(h.component),k=new RegExp("^(x-|data-)?"+v+"$","i"),j=o.$watch((function(){var e=[].slice.call(_[0].children).filter((function(e){return e&&e.tagName&&k.exec(e.tagName)}));return e&&s.ng.element(e).data("$"+h.component+"Controller")}),(function(e){e&&(l(i,n,e,o,h),j())}));p(o)}}}}o=["$view","$animate","$uiViewScroll","$interpolate","$q",function(e,t,n,o,a){var d={$cfg:{viewDecl:{$context:e._pluginapi._rootViewContext()}},$uiView:{}},u={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(m,l,_){return function(m,l,c){var h,f,p,M,y=c.onload||"",L=c.autoscroll,g=function(e,n,o){s.ng.version.minor>2?t.enter(e,null,n).then(o):t.enter(e,null,n,o)},Y=function(e,n){s.ng.version.minor>2?t.leave(e).then(n):t.leave(e,n)},v=l.inheritedData("$uiView")||d,k=o(c.uiView||c.name||"")(m)||"$default",j={$type:"ng1",id:u.count++,name:k,fqn:v.$uiView.fqn?v.$uiView.fqn+"."+k:k,config:null,configUpdated:function(e){(!e||e instanceof i.qO)&&(M!==e&&(r.trace.traceUIViewConfigUpdated(j,e&&e.viewDecl&&e.viewDecl.$context),M=e,b(e)))},get creationContext(){var e=(0,r.parse)("$cfg.viewDecl.$context")(v),t=(0,r.parse)("$uiView.creationContext")(v);return e||t}};r.trace.traceUIViewEvent("Linking",j),l.data("$uiView",{$uiView:j}),b();var w=e.registerUIView(j);function b(e){var t=m.$new(),o=a.defer(),s=a.defer(),i={$cfg:e,$uiView:j},d={$animEnter:o.promise,$animLeave:s.promise,$$animLeave:s};t.$emit("$viewContentLoading",k);var u=_(t,(function(e){e.data("$uiViewAnim",d),e.data("$uiView",i),g(e,l,(function(){o.resolve(),p&&p.$emit("$viewContentAnimationEnded"),((0,r.isDefined)(L)&&!L||m.$eval(L))&&n(e)})),function(){if(h&&(r.trace.traceUIViewEvent("Removing (previous) el",h.data("$uiView")),h.remove(),h=null),p&&(r.trace.traceUIViewEvent("Destroying scope",j),p.$destroy(),p=null),f){var e=f.data("$uiViewAnim");r.trace.traceUIViewEvent("Animate out",e),Y(f,(function(){e.$$animLeave.resolve(),h=null})),h=f,f=null}}()}));f=u,(p=t).$emit("$viewContentLoaded",e||M),p.$eval(y)}m.$on("$destroy",(function(){r.trace.traceUIViewEvent("Destroying/Unregistering",j),w()}))}}};return u}],d.$inject=["$compile","$controller","$transitions","$view","$q"];var u="function"==typeof s.ng.module("ui.router").component,m=0;function l(e,t,n,o,s){!(0,r.isFunction)(n.$onInit)||(s.viewDecl.component||s.viewDecl.componentProvider)&&u||n.$onInit();var a=(0,r.tail)(s.path).state.self,i={bind:n};if((0,r.isFunction)(n.uiOnParamsChanged)){var d=new r.ResolveContext(s.path).getResolvable("$transition$").data;o.$on("$destroy",t.onSuccess({},(function(e){if(e!==d&&-1===e.exiting().indexOf(a)){var t=e.params("to"),o=e.params("from"),s=function(e){return e.paramSchema},i=e.treeChanges("to").map(s).reduce(r.unnestR,[]),u=e.treeChanges("from").map(s).reduce(r.unnestR,[]),m=i.filter((function(e){var n=u.indexOf(e);return-1===n||!u[n].type.equals(t[e.id],o[e.id])}));if(m.length){var l=m.map((function(e){return e.id})),_=(0,r.filter)(t,(function(e,t){return-1!==l.indexOf(t)}));n.uiOnParamsChanged(_,e)}}}),i))}if((0,r.isFunction)(n.uiCanExit)){var l=m++,_="_uiCanExitIds",c=function(e){return!!e&&(e[_]&&!0===e[_][l]||c(e.redirectedFrom()))},h={exiting:a.name};o.$on("$destroy",t.onBefore(h,(function(t){var o,r=t[_]=t[_]||{};return c(t)||(o=e.when(n.uiCanExit(t))).then((function(e){return r[l]=!1!==e})),o}),i))}}s.ng.module("ui.router.state").directive("uiView",o),s.ng.module("ui.router.state").directive("uiView",d)},"./node_modules/@uirouter/angularjs/lib-esm/interface.js":()=>{},"./node_modules/@uirouter/angularjs/lib-esm/services.js":(e,t,n)=>{"use strict";n.d(t,{D:()=>k});var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js"),a=function(){function e(){var e=this;this._useHttp=o.ng.version.minor<3,this.$get=["$http","$templateCache","$injector",function(t,n,o){return e.$templateRequest=o.has&&o.has("$templateRequest")&&o.get("$templateRequest"),e.$http=t,e.$templateCache=n,e}]}return e.prototype.useHttpService=function(e){this._useHttp=e},e.prototype.fromConfig=function(e,t,n){var o=function(e){return r.services.$q.when(e).then((function(e){return{template:e}}))},s=function(e){return r.services.$q.when(e).then((function(e){return{component:e}}))};return(0,r.isDefined)(e.template)?o(this.fromString(e.template,t)):(0,r.isDefined)(e.templateUrl)?o(this.fromUrl(e.templateUrl,t)):(0,r.isDefined)(e.templateProvider)?o(this.fromProvider(e.templateProvider,t,n)):(0,r.isDefined)(e.component)?s(e.component):(0,r.isDefined)(e.componentProvider)?s(this.fromComponentProvider(e.componentProvider,t,n)):o("<ui-view></ui-view>")},e.prototype.fromString=function(e,t){return(0,r.isFunction)(e)?e(t):e},e.prototype.fromUrl=function(e,t){return(0,r.isFunction)(e)&&(e=e(t)),null==e?null:this._useHttp?this.$http.get(e,{cache:this.$templateCache,headers:{Accept:"text/html"}}).then((function(e){return e.data})):this.$templateRequest(e)},e.prototype.fromProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.fromComponentProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.makeComponentTemplate=function(e,t,n,s){s=s||{};var a=o.ng.version.minor>=3?"::":"",d=function(e){var t=(0,r.kebobString)(e);return/^(x|data)-/.exec(t)?"x-"+t:t},u=function(e){var t=r.services.$injector.get(e+"Directive");if(!t||!t.length)throw new Error("Unable to find component named '"+e+"'");return t.map(i).reduce(r.unnestR,[])}(n).map((function(n){var o=n.name,i=n.type,u=d(o);if(e.attr(u)&&!s[o])return u+"='"+e.attr(u)+"'";var m=s[o]||o;if("@"===i)return u+"='{{"+a+"$resolve."+m+"}}'";if("&"===i){var l=t.getResolvable(m),_=l&&l.data,c=_&&r.services.$injector.annotate(_)||[];return u+"='$resolve."+m+((0,r.isArray)(_)?"["+(_.length-1)+"]":"")+"("+c.join(",")+")'"}return u+"='"+a+"$resolve."+m+"'"})).join(" "),m=d(n);return"<"+m+" "+u+"></"+m+">"},e}(),i=function(e){return(0,r.isObject)(e.bindToController)?d(e.bindToController):d(e.scope)},d=function(e){return Object.keys(e||{}).map((function(t){return[t,/^([=<@&])[?]?(.*)/.exec(e[t])]})).filter((function(e){return(0,r.isDefined)(e)&&(0,r.isArray)(e[1])})).map((function(e){return{name:e[1][2]||e[0],type:e[1][1]}}))},u=n("./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js"),m=function(e){return function(t){var n=t[e],o="onExit"===e?"from":"to";return n?function(e,t){var s=new r.ResolveContext(e.treeChanges(o)).subContext(t.$$state()),a=(0,r.extend)(k(s),{$state$:t,$transition$:e});return r.services.$injector.invoke(n,this,a)}:void 0}},l=function(){function e(e){this._urlListeners=[],this.$locationProvider=e;var t=(0,r.val)(e);(0,r.createProxyFunctions)(t,this,t,["hashPrefix"])}return e.monkeyPatchPathParameterType=function(e){var t=e.urlMatcherFactory.type("path");t.encode=function(e){return null!=e?e.toString().replace(/(~|\/)/g,(function(e){return{"~":"~~","/":"~2F"}[e]})):e},t.decode=function(e){return null!=e?e.toString().replace(/(~~|~2F)/g,(function(e){return{"~~":"~","~2F":"/"}[e]})):e}},e.prototype.dispose=function(){},e.prototype.onChange=function(e){var t=this;return this._urlListeners.push(e),function(){return(0,r.removeFrom)(t._urlListeners)(e)}},e.prototype.html5Mode=function(){var e=this.$locationProvider.html5Mode();return(e=(0,r.isObject)(e)?e.enabled:e)&&this.$sniffer.history},e.prototype.baseHref=function(){return this._baseHref||(this._baseHref=this.$browser.baseHref()||this.$window.location.pathname)},e.prototype.url=function(e,t,n){return void 0===t&&(t=!1),(0,r.isDefined)(e)&&this.$location.url(e),t&&this.$location.replace(),n&&this.$location.state(n),this.$location.url()},e.prototype._runtimeServices=function(e,t,n,o,s){var a=this;this.$location=t,this.$sniffer=n,this.$browser=o,this.$window=s,e.$on("$locationChangeSuccess",(function(e){return a._urlListeners.forEach((function(t){return t(e)}))}));var i=(0,r.val)(t);(0,r.createProxyFunctions)(i,this,i,["replace","path","search","hash"]),(0,r.createProxyFunctions)(i,this,i,["port","protocol","host"])},e}(),_=n("./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js");o.ng.module("ui.router.angular1",[]);var c=o.ng.module("ui.router.init",["ng"]),h=o.ng.module("ui.router.util",["ui.router.init"]),f=o.ng.module("ui.router.router",["ui.router.util"]),p=o.ng.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),M=o.ng.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),y=(o.ng.module("ui.router.compat",["ui.router"]),null);function L(e){(y=this.router=new r.UIRouter).stateProvider=new u.X(y.stateRegistry,y.stateService),y.stateRegistry.decorator("views",s.LB),y.stateRegistry.decorator("onExit",m("onExit")),y.stateRegistry.decorator("onRetain",m("onRetain")),y.stateRegistry.decorator("onEnter",m("onEnter")),y.viewService._pluginapi._viewConfigFactory("ng1",(0,s.OB)()),y.urlService.config._decodeParams=!1;var t=y.locationService=y.locationConfig=new l(e);function n(e,n,o,r,s,a,i){return t._runtimeServices(s,e,r,n,o),delete y.router,delete y.$get,y}return l.monkeyPatchPathParameterType(y),y.router=y,y.$get=n,n.$inject=["$location","$browser","$window","$sniffer","$rootScope","$http","$templateCache"],y}L.$inject=["$locationProvider"];var g=function(e){return["$uiRouterProvider",function(t){var n=t.router[e];return n.$get=function(){return n},n}]};function Y(e,t,n){if(r.services.$injector=e,r.services.$q=t,!Object.prototype.hasOwnProperty.call(e,"strictDi"))try{e.invoke((function(e){}))}catch(t){e.strictDi=!!/strict mode/.exec(t&&t.toString())}n.stateRegistry.get().map((function(e){return e.$$state().resolvables})).reduce(r.unnestR,[]).filter((function(e){return"deferred"===e.deps})).forEach((function(t){return t.deps=e.annotate(t.resolveFn,e.strictDi)}))}function v(e){e.$watch((function(){r.trace.approximateDigests++}))}Y.$inject=["$injector","$q","$uiRouter"],v.$inject=["$rootScope"],c.provider("$uiRouter",L),f.provider("$urlRouter",["$uiRouterProvider",function(e){return e.urlRouterProvider=new _.L(e)}]),h.provider("$urlService",g("urlService")),h.provider("$urlMatcherFactory",["$uiRouterProvider",function(){return y.urlMatcherFactory}]),h.provider("$templateFactory",(function(){return new a})),p.provider("$stateRegistry",g("stateRegistry")),p.provider("$uiRouterGlobals",g("globals")),p.provider("$transitions",g("transitionService")),p.provider("$state",["$uiRouterProvider",function(){return(0,r.extend)(y.stateProvider,{$get:function(){return y.stateService}})}]),p.factory("$stateParams",["$uiRouter",function(e){return e.globals.params}]),M.factory("$view",(function(){return y.viewService})),M.service("$trace",(function(){return r.trace})),M.run(v),h.run(["$urlMatcherFactory",function(e){}]),p.run(["$state",function(e){}]),f.run(["$urlRouter",function(e){}]),c.run(Y);var k=function(e){return e.getTokens().filter(r.isString).map((function(t){var n=e.getResolvable(t);return[t,"NOWAIT"===e.getPolicy(n).async?n.promise:n.data]})).reduce(r.applyPairs,{})}},"./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js");function r(e){var t=function(t,n,o){return e.is(t,n,o)};return t.$stateful=!0,t}function s(e){var t=function(t,n,o){return e.includes(t,n,o)};return t.$stateful=!0,t}r.$inject=["$state"],s.$inject=["$state"],o.ng.module("ui.router.state").filter("isState",r).filter("includedByState",s)},"./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(t,n){this.stateRegistry=t,this.stateService=n,(0,o.createProxyFunctions)((0,o.val)(e.prototype),this,(0,o.val)(this))}return e.prototype.decorator=function(e,t){return this.stateRegistry.decorator(e,t)||this},e.prototype.state=function(e,t){return(0,o.isObject)(e)?t=e:t.name=e,this.stateRegistry.register(t),this},e.prototype.onInvalid=function(e){return this.stateService.onInvalid(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js":(e,t,n)=>{"use strict";n.d(t,{OB:()=>r,LB:()=>a,qO:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/index.js");function r(){var e=null;return function(t,n){return e=e||o.services.$injector.get("$templateFactory"),[new d(t,n,e)]}}var s=function(e,t){return e.reduce((function(e,n){return e||(0,o.isDefined)(t[n])}),!1)};function a(e){if(!e.parent)return{};var t=["component","bindings","componentProvider"],n=["templateProvider","templateUrl","template","notify","async"].concat(["controller","controllerProvider","controllerAs","resolveAs"]),r=t.concat(n);if((0,o.isDefined)(e.views)&&s(r,e))throw new Error("State '"+e.name+"' has a 'views' object. It cannot also have \"view properties\" at the state level.  Move the following properties into a view (in the 'views' object):  "+r.filter((function(t){return(0,o.isDefined)(e[t])})).join(", "));var a={},i=e.views||{$default:(0,o.pick)(e,r)};return(0,o.forEach)(i,(function(r,i){if(i=i||"$default",(0,o.isString)(r)&&(r={component:r}),r=(0,o.extend)({},r),s(t,r)&&s(n,r))throw new Error("Cannot combine: "+t.join("|")+" with: "+n.join("|")+" in stateview: '"+i+"@"+e.name+"'");r.resolveAs=r.resolveAs||"$resolve",r.$type="ng1",r.$context=e,r.$name=i;var d=o.ViewService.normalizeUIViewTarget(r.$context,r.$name);r.$uiViewName=d.uiViewName,r.$uiViewContextAnchor=d.uiViewContextAnchor,a[i]=r})),a}var i=0,d=function(){function e(e,t,n){var o=this;this.path=e,this.viewDecl=t,this.factory=n,this.$id=i++,this.loaded=!1,this.getTemplate=function(e,t){return o.component?o.factory.makeComponentTemplate(e,t,o.component,o.viewDecl.bindings):o.template}}return e.prototype.load=function(){var e=this,t=o.services.$q,n=new o.ResolveContext(this.path),r=this.path.reduce((function(e,t){return(0,o.extend)(e,t.paramValues)}),{}),s={template:t.when(this.factory.fromConfig(this.viewDecl,r,n)),controller:t.when(this.getController(n))};return t.all(s).then((function(t){return o.trace.traceViewServiceEvent("Loaded",e),e.controller=t.controller,(0,o.extend)(e,t.template),e}))},e.prototype.getController=function(e){var t=this.viewDecl.controllerProvider;if(!(0,o.isInjectable)(t))return this.viewDecl.controller;var n=o.services.$injector.annotate(t),r=(0,o.isArray)(t)?(0,o.tail)(t):t;return new o.Resolvable("",r,n).get(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(e){this.router=e}return e.injectableHandler=function(e,t){return function(n){return o.services.$injector.invoke(t,null,{$match:n,$stateParams:e.globals.params})}},e.prototype.$get=function(){var e=this.router.urlService;return this.router.urlRouter.update(!0),e.interceptDeferred||e.listen(),this.router.urlRouter},e.prototype.rule=function(e){var t=this;if(!(0,o.isFunction)(e))throw new Error("'rule' must be a function");var n=new o.BaseUrlRule((function(){return e(o.services.$injector,t.router.locationService)}),o.identity);return this.router.urlService.rules.rule(n),this},e.prototype.otherwise=function(e){var t=this,n=this.router.urlService.rules;if((0,o.isString)(e))n.otherwise(e);else{if(!(0,o.isFunction)(e))throw new Error("'rule' must be a string or function");n.otherwise((function(){return e(o.services.$injector,t.router.locationService)}))}return this},e.prototype.when=function(t,n){return((0,o.isArray)(n)||(0,o.isFunction)(n))&&(n=e.injectableHandler(this.router,n)),this.router.urlService.rules.when(t,n),this},e.prototype.deferIntercept=function(e){this.router.urlService.deferIntercept(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/angularjs/lib-esm/angular.js").ng.module("ui.router.state").provider("$uiViewScroll",(function(){var e=!1;this.useAnchorScroll=function(){e=!0},this.$get=["$anchorScroll","$timeout",function(t,n){return e?t:function(e){return n((function(){e[0].scrollIntoView()}),0,!1)}}]}))},"./node_modules/@uirouter/core/lib-esm/common/common.js":(e,t,n)=>{"use strict";n.d(t,{Jz:()=>i,xZ:()=>u,Qs:()=>m,Ed:()=>l,l7:()=>_,fS:()=>c,yR:()=>h,ZT:()=>f,WR:()=>p,ED:()=>M,d3:()=>y,nA:()=>L,LH:()=>g,Wk:()=>Y,ce:()=>v,LQ:()=>k,mX:()=>j,ei:()=>w,CE:()=>b,hX:()=>D,sE:()=>T,js:()=>S,UI:()=>H,VO:()=>x,XC:()=>E,o8:()=>P,M7:()=>O,FN:()=>$,Ez:()=>A,v_:()=>R,UW:()=>F,sp:()=>W,ym:()=>C,bb:()=>I,Gb:()=>z,JG:()=>J,HX:()=>V,jv:()=>N});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),a=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o},i="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g||void 0,d=i.angular||{},u=d.fromJson||JSON.parse.bind(JSON),m=d.toJson||JSON.stringify.bind(JSON),l=d.forEach||function(e,t,n){if((0,o.kJ)(e))return e.forEach(t,n);Object.keys(e).forEach((function(n){return t(e[n],n)}))},_=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];if(n)for(var o=Object.keys(n),r=0;r<o.length;r++)e[o[r]]=n[o[r]]}return e},c=d.equals||function e(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!=t&&n!=n)return!0;var s=typeof t;if(s!==typeof n||"object"!==s)return!1;var a,i,d=[t,n];if((0,r.$6)(o.kJ)(d))return i=n,(a=t).length===i.length&&C(a,i).reduce((function(t,n){return t&&e(n[0],n[1])}),!0);if((0,r.$6)(o.J_)(d))return t.getTime()===n.getTime();if((0,r.$6)(o.Kj)(d))return t.toString()===n.toString();if((0,r.$6)(o.mf)(d))return!0;if([o.mf,o.kJ,o.J_,o.Kj].map(r.Yj).reduce((function(e,t){return e||!!t(d)}),!1))return!1;var u={};for(var m in t){if(!e(t[m],n[m]))return!1;u[m]=!0}for(var m in n)if(!u[m])return!1;return!0};function h(e){return e}function f(){}function p(e,t,n,o,r){void 0===r&&(r=!1);var s=function(t){return e()[t].bind(n())};return(o=o||Object.keys(e())).reduce((function(e,n){var o;return e[n]=r?(o=n,function(){return t[o]=s(o),t[o].apply(null,arguments)}):s(n),e}),t)}var M=function(e,t){return _(Object.create(e),t)},y=(0,r.WA)((function(e,t){return-1!==e.indexOf(t)})),L=(0,r.WA)((function(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),e})),g=(0,r.WA)((function(e,t){return e.push(t),t})),Y=function(e){return e.slice().forEach((function(t){"function"==typeof t&&t(),L(e,t)}))};function v(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var o=_.apply(void 0,a([{}],t.reverse()));return _(o,w(e||{},Object.keys(o)))}var k=function(e,t){return _(e,t)};function j(e,t){var n=[];for(var o in e.path){if(e.path[o]!==t.path[o])break;n.push(e.path[o])}return n}function w(e,t){var n={};for(var o in e)-1!==t.indexOf(o)&&(n[o]=e[o]);return n}function b(e,t){return Object.keys(e).filter((0,r.ff)(y(t))).reduce((function(t,n){return t[n]=e[n],t}),{})}function D(e,t){var n=(0,o.kJ)(e),r=n?[]:{},s=n?function(e){return r.push(e)}:function(e,t){return r[t]=e};return l(e,(function(e,n){t(e,n)&&s(e,n)})),r}function T(e,t){var n;return l(e,(function(e,o){n||t(e,o)&&(n=e)})),n}var S=H;function H(e,t,n){return n=n||((0,o.kJ)(e)?[]:{}),l(e,(function(e,o){return n[o]=t(e,o)})),n}var x=function(e){return Object.keys(e).map((function(t){return e[t]}))},E=function(e,t){return e&&t},P=function(e,t){return e||t},O=function(e,t){return e.concat(t)},$=function(e,t){return(0,o.kJ)(t)?e.concat(t.reduce($,[])):A(e,t)};function A(e,t){return e.push(t),e}var R=function(e,t){return y(e,t)?e:A(e,t)},F=function(e){return e.reduce(O,[])},W=function(e,t){return void 0===t&&(t="assert failure"),function(n){var r=e(n);if(!r)throw new Error((0,o.mf)(t)?t(n):t);return r}};function C(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(0===e.length)return[];for(var n=e.reduce((function(e,t){return Math.min(t.length,e)}),9007199254740991),o=[],r=function(t){switch(e.length){case 1:o.push([e[0][t]]);break;case 2:o.push([e[0][t],e[1][t]]);break;case 3:o.push([e[0][t],e[1][t],e[2][t]]);break;case 4:o.push([e[0][t],e[1][t],e[2][t],e[3][t]]);break;default:o.push(e.map((function(e){return e[t]})))}},s=0;s<n;s++)r(s);return o}function I(e,t){var n,r;if((0,o.kJ)(t)&&(n=t[0],r=t[1]),!(0,o.HD)(n))throw new Error("invalid parameters to applyPairs");return e[n]=r,e}function z(e){return e.length&&e[e.length-1]||void 0}function J(e,t){return t&&Object.keys(t).forEach((function(e){return delete t[e]})),t||(t={}),_(t,e)}var V=function(e){return e.catch((function(e){return 0}))&&e},N=function(e){return V(s.u.$q.reject(e))}},"./node_modules/@uirouter/core/lib-esm/common/coreservices.js":(e,t,n)=>{"use strict";n.d(t,{H:()=>o,u:()=>r});var o=function(e,t){return t.reduce((function(t,n){return t[n]=(o=e+"."+n+"()",function(){throw new Error("No implementation for "+o+". The framework specific code did not implement this method.")}),t;var o}),{})},r={$q:void 0,$injector:void 0}},"./node_modules/@uirouter/core/lib-esm/common/glob.js":(e,t,n)=>{"use strict";n.d(t,{r:()=>o});var o=function(){function e(e){this.text=e,this.glob=e.split(".");var t=this.text.split(".").map((function(e){return"**"===e?"(?:|(?:\\.[^.]*)*)":"*"===e?"\\.[^.]*":"\\."+e})).join("");this.regexp=new RegExp("^"+t+"$")}return e.is=function(e){return!!/[!,*]+/.exec(e)},e.fromString=function(t){return e.is(t)?new e(t):null},e.prototype.matches=function(e){return this.regexp.test("."+e)},e}()},"./node_modules/@uirouter/core/lib-esm/common/hof.js":(e,t,n)=>{"use strict";n.d(t,{WA:()=>r,zG:()=>a,vg:()=>i,OH:()=>d,Qc:()=>u,ff:()=>m,xD:()=>l,or:()=>_,$6:()=>c,Yj:()=>h,is:()=>f,P0:()=>p,uj:()=>M});var o=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o};function r(e){return function t(){if(arguments.length>=e.length)return e.apply(this,arguments);var n=Array.prototype.slice.call(arguments);return t.bind.apply(t,o([this],n))}}function s(){var e=arguments,t=e.length-1;return function(){for(var n=t,o=e[t].apply(this,arguments);n--;)o=e[n].call(this,o);return o}}function a(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return s.apply(null,[].slice.call(arguments).reverse())}var i=function(e){return function(t){return t&&t[e]}},d=r((function(e,t,n){return n&&n[e]===t})),u=function(e){return a.apply(null,e.split(".").map(i))},m=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return!e.apply(null,t)}};function l(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)&&t.apply(null,n)}}function _(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)||t.apply(null,n)}}var c=function(e){return function(t){return t.reduce((function(t,n){return t&&!!e(n)}),!0)}},h=function(e){return function(t){return t.reduce((function(t,n){return t||!!e(n)}),!1)}},f=function(e){return function(t){return null!=t&&t.constructor===e||t instanceof e}},p=function(e){return function(){return e}};function M(e){return function(t){for(var n=0;n<e.length;n++)if(e[n][0](t))return e[n][1](t)}}},"./node_modules/@uirouter/core/lib-esm/common/predicates.js":(e,t,n)=>{"use strict";n.d(t,{o8:()=>a,$K:()=>i,Ft:()=>d,le:()=>u,mf:()=>m,hj:()=>l,HD:()=>_,Kn:()=>c,kJ:()=>h,J_:()=>f,Kj:()=>p,Qh:()=>M,tI:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),r=Object.prototype.toString,s=function(e){return function(t){return typeof t===e}},a=s("undefined"),i=(0,o.ff)(a),d=function(e){return null===e},u=(0,o.or)(d,a),m=s("function"),l=s("number"),_=s("string"),c=function(e){return null!==e&&"object"==typeof e},h=Array.isArray,f=function(e){return"[object Date]"===r.call(e)},p=function(e){return"[object RegExp]"===r.call(e)};function M(e){if(h(e)&&e.length){var t=e.slice(0,-1),n=e.slice(-1);return!(t.filter((0,o.ff)(_)).length||n.filter((0,o.ff)(m)).length)}return m(e)}var y=(0,o.xD)(c,(0,o.zG)((0,o.vg)("then"),m))},"./node_modules/@uirouter/core/lib-esm/common/queue.js":(e,t,n)=>{"use strict";n.d(t,{c:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e,t){void 0===e&&(e=[]),void 0===t&&(t=null),this._items=e,this._limit=t,this._evictListeners=[],this.onEvict=(0,o.LH)(this._evictListeners)}return e.prototype.enqueue=function(e){var t=this._items;return t.push(e),this._limit&&t.length>this._limit&&this.evict(),e},e.prototype.evict=function(){var e=this._items.shift();return this._evictListeners.forEach((function(t){return t(e)})),e},e.prototype.dequeue=function(){if(this.size())return this._items.splice(0,1)[0]},e.prototype.clear=function(){var e=this._items;return this._items=[],e},e.prototype.size=function(){return this._items.length},e.prototype.remove=function(e){var t=this._items.indexOf(e);return t>-1&&this._items.splice(t,1)[0]},e.prototype.peekTail=function(){return this._items[this._items.length-1]},e.prototype.peekHead=function(){if(this.size())return this._items[0]},e}()},"./node_modules/@uirouter/core/lib-esm/common/safeConsole.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r={log:o.ZT,error:o.ZT,table:o.ZT},s="undefined"!=typeof document&&document.documentMode&&9===document.documentMode?window&&window.console?function(e){var t=function(t){return Function.prototype.bind.call(t,e)};return{log:t(e.log),error:t(e.log),table:t(e.log)}}(window.console):r:console.table&&console.error?console:function(e){var t=e.log.bind(e);return{log:t,error:e.error?e.error.bind(e):t,table:e.table?e.table.bind(e):t}}(console)},"./node_modules/@uirouter/core/lib-esm/common/strings.js":(e,t,n)=>{"use strict";n.d(t,{BS:()=>i,NE:()=>d,L$:()=>u,XF:()=>m,iC:()=>l,Pz:()=>h,Lb:()=>p,cW:()=>M,C7:()=>y,Fb:()=>L,HV:()=>g,PX:()=>Y,iV:()=>v});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");function i(e,t){return t.length<=e?t:t.substr(0,e-3)+"..."}function d(e,t){for(;t.length<e;)t+=" ";return t}function u(e){return e.replace(/^([A-Z])/,(function(e){return e.toLowerCase()})).replace(/([A-Z])/g,(function(e){return"-"+e.toLowerCase()}))}function m(e){var t=l(e),n=t.match(/^(function [^ ]+\([^)]*\))/),o=n?n[1]:t,r=e.name||"";return r&&o.match(/function \(/)?"function "+r+o.substr(9):o}function l(e){var t=(0,o.kJ)(e)?e.slice(-1)[0]:e;return t&&t.toString()||"undefined"}var _=r.i.isRejectionPromise,c=(0,a.uj)([[o.o8,(0,a.P0)("undefined")],[o.Ft,(0,a.P0)("null")],[o.tI,(0,a.P0)("[Promise]")],[_,function(e){return e._transitionRejection.toString()}],[function(e){return(0,o.Kn)(e)&&!(0,o.kJ)(e)&&e.constructor!==Object&&(0,o.mf)(e.toString)},function(e){return e.toString()}],[o.Qh,m],[(0,a.P0)(!0),s.yR]]);function h(e){var t=[];function n(e){if((0,o.Kn)(e)){if(-1!==t.indexOf(e))return"[circular ref]";t.push(e)}return c(e)}return(0,o.o8)(e)?n(e):JSON.stringify(e,(function(e,t){return n(t)})).replace(/\\"/g,'"')}var f=function(e){return function(t){if(!t)return["",""];var n=t.indexOf(e);return-1===n?[t,""]:[t.substr(0,n),t.substr(n+1)]}},p=function(e){return e.replace(/\/[^/]*$/,"")},M=f("#"),y=f("?"),L=f("="),g=function(e){return e?e.replace(/^#/,""):""};function Y(e){var t=new RegExp("("+e+")","g");return function(e){return e.split(t).filter(s.yR)}}function v(e,t){return(0,o.HD)((0,s.Gb)(e))&&(0,o.HD)(t)?e.slice(0,-1).concat((0,s.Gb)(e)+t):(0,s.Ez)(e,t)}},"./node_modules/@uirouter/core/lib-esm/common/trace.js":(e,t,n)=>{"use strict";n.d(t,{g4:()=>c});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js");function d(e){if(!e)return"ui-view (defunct)";var t=e.creationContext?e.creationContext.name||"(root)":"(none)";return"[ui-view#"+e.id+" "+e.$type+":"+e.fqn+" ("+e.name+"@"+t+")]"}function u(e){return(0,s.hj)(e)?o[e]:o[o[e]]}!function(e){e[e.RESOLVE=0]="RESOLVE",e[e.TRANSITION=1]="TRANSITION",e[e.HOOK=2]="HOOK",e[e.UIVIEW=3]="UIVIEW",e[e.VIEWCONFIG=4]="VIEWCONFIG"}(o||(o={}));var m=(0,r.Qc)("$id"),l=(0,r.Qc)("router.$id"),_=function(e){return"Transition #"+m(e)+"-"+l(e)},c=new(function(){function e(){this._enabled={},this.approximateDigests=0}return e.prototype._set=function(e,t){var n=this;t.length||(t=Object.keys(o).map((function(e){return parseInt(e,10)})).filter((function(e){return!isNaN(e)})).map((function(e){return o[e]}))),t.map(u).forEach((function(t){return n._enabled[t]=e}))},e.prototype.enable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!0,e)},e.prototype.disable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!1,e)},e.prototype.enabled=function(e){return!!this._enabled[u(e)]},e.prototype.traceTransitionStart=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Started  -> "+(0,a.Pz)(e))},e.prototype.traceTransitionIgnored=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Ignored  <> "+(0,a.Pz)(e))},e.prototype.traceHookInvocation=function(e,t,n){if(this.enabled(o.HOOK)){var s=(0,r.Qc)("traceData.hookType")(n)||"internal",d=(0,r.Qc)("traceData.context.state.name")(n)||(0,r.Qc)("traceData.context")(n)||"unknown",u=(0,a.XF)(e.registeredHook.callback);i.L.log(_(t)+":   Hook -> "+s+" context: "+d+", "+(0,a.BS)(200,u))}},e.prototype.traceHookResult=function(e,t,n){this.enabled(o.HOOK)&&i.L.log(_(t)+":   <- Hook returned: "+(0,a.BS)(200,(0,a.Pz)(e)))},e.prototype.traceResolvePath=function(e,t,n){this.enabled(o.RESOLVE)&&i.L.log(_(n)+":         Resolving "+e+" ("+t+")")},e.prototype.traceResolvableResolved=function(e,t){this.enabled(o.RESOLVE)&&i.L.log(_(t)+":               <- Resolved  "+e+" to: "+(0,a.BS)(200,(0,a.Pz)(e.data)))},e.prototype.traceError=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Rejected "+(0,a.Pz)(t)+", reason: "+e)},e.prototype.traceSuccess=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Success  "+(0,a.Pz)(t)+", final state: "+e.name)},e.prototype.traceUIViewEvent=function(e,t,n){void 0===n&&(n=""),this.enabled(o.UIVIEW)&&i.L.log("ui-view: "+(0,a.NE)(30,e)+" "+d(t)+n)},e.prototype.traceUIViewConfigUpdated=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Updating",e," with ViewConfig from context='"+t+"'")},e.prototype.traceUIViewFill=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Fill",e," with: "+(0,a.BS)(200,t))},e.prototype.traceViewSync=function(e){if(this.enabled(o.VIEWCONFIG)){var t="uiview component fqn",n=e.map((function(e){var n,o=e.uiView,r=e.viewConfig,s=o&&o.fqn,a=r&&r.viewDecl.$context.name+": ("+r.viewDecl.$name+")";return(n={})[t]=s,n["view config state (view name)"]=a,n})).sort((function(e,n){return(e[t]||"").localeCompare(n[t]||"")}));i.L.table(n)}},e.prototype.traceViewServiceEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+function(e){var t=e.viewDecl,n=t.$context.name||"(root)";return"[View#"+e.$id+" from '"+n+"' state]: target ui-view: '"+t.$uiViewName+"@"+t.$uiViewContextAnchor+"'"}(t))},e.prototype.traceViewServiceUIViewEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+d(t))},e}())},"./node_modules/@uirouter/core/lib-esm/globals.js":(e,t,n)=>{"use strict";n.d(t,{k:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/stateParams.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/queue.js"),s=function(){function e(){this.params=new o.i,this.lastStartedTransitionId=-1,this.transitionHistory=new r.c([],1),this.successfulTransitions=new r.c([],1)}return e.prototype.dispose=function(){this.transitionHistory.clear(),this.successfulTransitions.clear(),this.transition=null},e}()},"./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js":(e,t,n)=>{"use strict";n.d(t,{v:()=>s,A:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),r=function(e){var t=e.router,n=e.entering().filter((function(e){return!!e.$$state().lazyLoad})).map((function(t){return a(e,t)}));return o.u.$q.all(n).then((function(){if("url"!==e.originalTransition().options().source){var n=e.targetState();return t.stateService.target(n.identifier(),n.params(),n.options())}var o=t.urlService,r=o.match(o.parts()),s=r&&r.rule;if(s&&"STATE"===s.type){var a=s.state,i=r.match;return t.stateService.target(a,i,e.options())}t.urlService.sync()}))},s=function(e){return e.onBefore({entering:function(e){return!!e.lazyLoad}},r)};function a(e,t){var n=t.$$state().lazyLoad,r=n._promise;return r||(r=n._promise=o.u.$q.when(n(e,t)).then((function(t){return t&&Array.isArray(t.states)&&t.states.forEach((function(t){return e.router.stateRegistry.register(t)})),t})).then((function(e){return delete t.lazyLoad,delete t.$$state().lazyLoad,delete n._promise,e}),(function(e){return delete n._promise,o.u.$q.reject(e)}))),r}},"./node_modules/@uirouter/core/lib-esm/interface.js":(e,t,n)=>{},"./node_modules/@uirouter/core/lib-esm/params/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/params/param.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>o,d:()=>m});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=Object.prototype.hasOwnProperty;!function(e){e[e.PATH=0]="PATH",e[e.SEARCH=1]="SEARCH",e[e.CONFIG=2]="CONFIG"}(o||(o={}));var m=function(){function e(e,t,n,i,m){var l=function(e,t,n){var s=!1===n.reloadOnSearch&&t===o.SEARCH||void 0,i=(0,r.sE)([n.dynamic,s],a.$K),d=(0,a.$K)(i)?{dynamic:i}:{},m=function(e){function t(){return e.value}e=function(e){return 0===["value","type","squash","array","dynamic"].filter(u.bind(e||{})).length}(e)?{value:e}:e,t.__cacheable=!0;var n=(0,a.Qh)(e.value)?e.value:t;return(0,r.l7)(e,{$$fn:n})}(n&&n.params&&n.params[e]);return(0,r.l7)(d,m)}(e,n,m);t=function(e,t,n,r,s){if(e.type&&t&&"string"!==t.name)throw new Error("Param '"+r+"' has two type configurations.");if(e.type&&t&&"string"===t.name&&s.type(e.type))return s.type(e.type);if(t)return t;if(!e.type){var a=n===o.CONFIG?"any":n===o.PATH?"path":n===o.SEARCH?"query":"string";return s.type(a)}return e.type instanceof d._?e.type:s.type(e.type)}(l,t,n,e,i.paramTypes);var _,c,h=(_={array:n===o.SEARCH&&"auto"},c=e.match(/\[\]$/)?{array:!0}:{},(0,r.l7)(_,c,l).array);t=h?t.$asArray(h,n===o.SEARCH):t;var f=void 0!==l.value||n===o.SEARCH,p=(0,a.$K)(l.dynamic)?!!l.dynamic:!!t.dynamic,M=(0,a.$K)(l.raw)?!!l.raw:!!t.raw,y=function(e,t,n){var o=e.squash;if(!t||!1===o)return!1;if(!(0,a.$K)(o)||null==o)return n;if(!0===o||(0,a.HD)(o))return o;throw new Error("Invalid squash policy: '"+o+"'. Valid policies: false, true, or arbitrary string")}(l,f,i.defaultSquashPolicy()),L=function(e,t,n,o){var i=[{from:"",to:n||t?void 0:""},{from:null,to:n||t?void 0:""}],d=(0,a.kJ)(e.replace)?e.replace:[];(0,a.HD)(o)&&d.push({from:o,to:void 0});var u=(0,r.UI)(d,(0,s.vg)("from"));return(0,r.hX)(i,(function(e){return-1===u.indexOf(e.from)})).concat(d)}(l,h,f,y),g=(0,a.$K)(l.inherit)?!!l.inherit:!!t.inherit;(0,r.l7)(this,{id:e,type:t,location:n,isOptional:f,dynamic:p,raw:M,squash:y,replace:L,inherit:g,array:h,config:l})}return e.values=function(e,t){void 0===t&&(t={});for(var n={},o=0,r=e;o<r.length;o++){var s=r[o];n[s.id]=s.value(t[s.id])}return n},e.changed=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e.filter((function(e){return!e.type.equals(t[e.id],n[e.id])}))},e.equals=function(t,n,o){return void 0===n&&(n={}),void 0===o&&(o={}),0===e.changed(t,n,o).length},e.validates=function(e,t){return void 0===t&&(t={}),e.map((function(e){return e.validates(t[e.id])})).reduce(r.XC,!0)},e.prototype.isDefaultValue=function(e){return this.isOptional&&this.type.equals(this.value(),e)},e.prototype.value=function(e){var t=this;return e=function(e){for(var n=0,o=t.replace;n<o.length;n++){var r=o[n];if(r.from===e)return r.to}return e}(e),(0,a.o8)(e)?function(){if(t._defaultValueCache)return t._defaultValueCache.defaultValue;if(!i.u.$injector)throw new Error("Injectable functions cannot be called at configuration time");var e=i.u.$injector.invoke(t.config.$$fn);if(null!=e&&!t.type.is(e))throw new Error("Default value ("+e+") for parameter '"+t.id+"' is not an instance of ParamType ("+t.type.name+")");return t.config.$$fn.__cacheable&&(t._defaultValueCache={defaultValue:e}),e}():this.type.$normalize(e)},e.prototype.isSearch=function(){return this.location===o.SEARCH},e.prototype.validates=function(e){if(((0,a.o8)(e)||null===e)&&this.isOptional)return!0;var t=this.type.$normalize(e);if(!this.type.is(t))return!1;var n=this.type.encode(t);return!((0,a.HD)(n)&&!this.type.pattern.exec(n))},e.prototype.toString=function(){return"{Param:"+this.id+" "+this.type+" squash: '"+this.squash+"' optional: "+this.isOptional+"}"},e}()},"./node_modules/@uirouter/core/lib-esm/params/paramType.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=function(){function e(e){this.pattern=/.*/,this.inherit=!0,(0,o.l7)(this,e)}return e.prototype.is=function(e,t){return!0},e.prototype.encode=function(e,t){return e},e.prototype.decode=function(e,t){return e},e.prototype.equals=function(e,t){return e==t},e.prototype.$subPattern=function(){var e=this.pattern.toString();return e.substr(1,e.length-2)},e.prototype.toString=function(){return"{ParamType:"+this.name+"}"},e.prototype.$normalize=function(e){return this.is(e)?e:this.decode(e)},e.prototype.$asArray=function(e,t){if(!e)return this;if("auto"===e&&!t)throw new Error("'auto' array mode is for query parameters only");return new a(this,e)},e}();function a(e,t){var n=this;function s(e){return(0,r.kJ)(e)?e:(0,r.$K)(e)?[e]:[]}function a(e,n){return function(a){if((0,r.kJ)(a)&&0===a.length)return a;var i=s(a),d=(0,o.UI)(i,e);return!0===n?0===(0,o.hX)(d,(function(e){return!e})).length:function(e){switch(e.length){case 0:return;case 1:return"auto"===t?e[0]:e;default:return e}}(d)}}function i(e){return function(t,n){var o=s(t),r=s(n);if(o.length!==r.length)return!1;for(var a=0;a<o.length;a++)if(!e(o[a],r[a]))return!1;return!0}}["encode","decode","equals","$normalize"].forEach((function(t){var o=e[t].bind(e),r="equals"===t?i:a;n[t]=r(o)})),(0,o.l7)(this,{dynamic:e.dynamic,name:e.name,pattern:e.pattern,inherit:e.inherit,raw:e.raw,is:a(e.is.bind(e),!0),$arrayMode:t})}},"./node_modules/@uirouter/core/lib-esm/params/paramTypes.js":(e,t,n)=>{"use strict";n.d(t,{p:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=function(){function e(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes=(0,r.ei)(e.prototype,["hash","string","query","path","int","bool","date","json","any"]),this.types=(0,r.ED)((0,r.UI)(this.defaultTypes,(function(e,t){return new d._((0,r.l7)({name:t},e))})),{})}return e.prototype.dispose=function(){this.types={}},e.prototype.type=function(e,t,n){if(!(0,s.$K)(t))return this.types[e];if(this.types.hasOwnProperty(e))throw new Error("A type named '"+e+"' has already been defined.");return this.types[e]=new d._((0,r.l7)({name:e},t)),n&&(this.typeQueue.push({name:e,def:n}),this.enqueue||this._flushTypeQueue()),this},e.prototype._flushTypeQueue=function(){for(;this.typeQueue.length;){var e=this.typeQueue.shift();if(e.pattern)throw new Error("You cannot override a type's .pattern at runtime.");(0,r.l7)(this.types[e.name],i.u.$injector.invoke(e.def))}},e}();o=function(e){var t=function(e){return null!=e?e.toString():e},n={encode:t,decode:t,is:(0,a.is)(String),pattern:/.*/,equals:function(e,t){return e==t}};return(0,r.l7)({},n,e)},(0,r.l7)(u.prototype,{string:o({}),path:o({pattern:/[^/]*/}),query:o({}),hash:o({inherit:!1}),int:o({decode:function(e){return parseInt(e,10)},is:function(e){return!(0,s.le)(e)&&this.decode(e.toString())===e},pattern:/-?\d+/}),bool:o({encode:function(e){return e?1:0},decode:function(e){return 0!==parseInt(e,10)},is:(0,a.is)(Boolean),pattern:/0|1/}),date:o({encode:function(e){return this.is(e)?[e.getFullYear(),("0"+(e.getMonth()+1)).slice(-2),("0"+e.getDate()).slice(-2)].join("-"):void 0},decode:function(e){if(this.is(e))return e;var t=this.capture.exec(e);return t?new Date(t[1],t[2]-1,t[3]):void 0},is:function(e){return e instanceof Date&&!isNaN(e.valueOf())},equals:function(e,t){return["getFullYear","getMonth","getDate"].reduce((function(n,o){return n&&e[o]()===t[o]()}),!0)},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/}),json:o({encode:r.Qs,decode:r.xZ,is:(0,a.is)(Object),equals:r.fS,pattern:/[^/]*/}),any:o({encode:r.yR,decode:r.yR,is:function(){return!0},equals:r.fS})})},"./node_modules/@uirouter/core/lib-esm/params/stateParams.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e){void 0===e&&(e={}),(0,o.l7)(this,e)}return e.prototype.$inherit=function(e,t,n){var r,s=(0,o.mX)(t,n),a={},i=[];for(var d in s)if(s[d]&&s[d].params&&(r=Object.keys(s[d].params)).length)for(var u in r)i.indexOf(r[u])>=0||(i.push(r[u]),a[r[u]]=this[r[u]]);return(0,o.l7)({},a,e)},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathNode.js":(e,t,n)=>{"use strict";n.d(t,{V:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/param.js"),a=function(){function e(t){if(t instanceof e){var n=t;this.state=n.state,this.paramSchema=n.paramSchema.slice(),this.paramValues=(0,o.l7)({},n.paramValues),this.resolvables=n.resolvables.slice(),this.views=n.views&&n.views.slice()}else{var r=t;this.state=r,this.paramSchema=r.parameters({inherit:!1}),this.paramValues={},this.resolvables=r.resolvables.map((function(e){return e.clone()}))}}return e.prototype.clone=function(){return new e(this)},e.prototype.applyRawParams=function(e){return this.paramValues=this.paramSchema.reduce((function(t,n){return(0,o.bb)(t,[(r=n).id,r.value(e[r.id])]);var r}),{}),this},e.prototype.parameter=function(e){return(0,o.sE)(this.paramSchema,(0,r.OH)("id",e))},e.prototype.equals=function(e,t){var n=this.diff(e,t);return n&&0===n.length},e.prototype.diff=function(e,t){if(this.state!==e.state)return!1;var n=t?t(this):this.paramSchema;return s.d.changed(n,this.paramValues,e.paramValues)},e.clone=function(e){return e.clone()},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathUtils.js":(e,t,n)=>{"use strict";n.d(t,{C:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),a=n("./node_modules/@uirouter/core/lib-esm/path/pathNode.js"),i=function(){function e(){}return e.makeTargetState=function(e,t){var n=(0,o.Gb)(t).state;return new s.F(e,n,t.map((0,r.vg)("paramValues")).reduce(o.LQ,{}),{})},e.buildPath=function(e){var t=e.params();return e.$state().path.map((function(e){return new a.V(e).applyRawParams(t)}))},e.buildToPath=function(t,n){var o=e.buildPath(n);return n.options().inherit?e.inheritParams(t,o,Object.keys(n.params())):o},e.applyViewConfigs=function(t,n,r){n.filter((function(e){return(0,o.d3)(r,e.state)})).forEach((function(r){var s=(0,o.VO)(r.state.views||{}),a=e.subPath(n,(function(e){return e===r})),i=s.map((function(e){return t.createViewConfig(a,e)}));r.views=i.reduce(o.M7,[])}))},e.inheritParams=function(e,t,n){void 0===n&&(n=[]);var s=e.map((function(e){return e.paramSchema})).reduce(o.M7,[]).filter((function(e){return!e.inherit})).map((0,r.vg)("id"));return t.map((function(t){var i=(0,o.l7)({},t&&t.paramValues),d=(0,o.ei)(i,n);i=(0,o.CE)(i,n);var u,m,l,_=(0,o.CE)((u=e,m=t.state,l=(0,o.sE)(u,(0,r.OH)("state",m)),(0,o.l7)({},l&&l.paramValues)||{}),s),c=(0,o.l7)(i,_,d);return new a.V(t.state).applyRawParams(c)}))},e.treeChanges=function(t,n,o){for(var r,s,a,i,d,u,m=Math.min(t.length,n.length),l=0;l<m&&t[l].state!==o&&(r=t[l],s=n[l],r.equals(s,e.nonDynamicParams));)l++;i=(a=t).slice(0,l),d=a.slice(l);var _=i.map((function(e,t){var o=e.clone();return o.paramValues=n[t].paramValues,o}));return u=n.slice(l),{from:a,to:_.concat(u),retained:i,retainedWithToParams:_,exiting:d,entering:u}},e.matching=function(e,t,n){var r=!1;return(0,o.ym)(e,t).reduce((function(e,t){var o=t[0],s=t[1];return(r=r||!o.equals(s,n))?e:e.concat(o)}),[])},e.equals=function(t,n,o){return t.length===n.length&&e.matching(t,n,o).length===t.length},e.subPath=function(e,t){var n=(0,o.sE)(e,t),r=e.indexOf(n);return-1===r?void 0:e.slice(0,r+1)},e.nonDynamicParams=function(e){return e.state.parameters({inherit:!1}).filter((function(e){return!e.dynamic}))},e.paramValues=function(e){return e.reduce((function(e,t){return(0,o.l7)(e,t.paramValues)}),{})},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/interface.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>o});var o={when:{LAZY:"LAZY",EAGER:"EAGER"},async:{WAIT:"WAIT",NOWAIT:"NOWAIT"}}},"./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),d=function(){function e(t,n,s,a,d){if(this.resolved=!1,this.promise=void 0,t instanceof e)(0,o.l7)(this,t);else if((0,i.mf)(n)){if((0,i.le)(t))throw new Error("new Resolvable(): token argument is required");if(!(0,i.mf)(n))throw new Error("new Resolvable(): resolveFn argument must be a function");this.token=t,this.policy=a,this.resolveFn=n,this.deps=s||[],this.data=d,this.resolved=void 0!==d,this.promise=this.resolved?r.u.$q.when(this.data):void 0}else if((0,i.Kn)(t)&&t.token&&(t.hasOwnProperty("resolveFn")||t.hasOwnProperty("data"))){var u=t;return new e(u.token,u.resolveFn,u.deps,u.policy,u.data)}}return e.prototype.getPolicy=function(e){var t=this.policy||{},n=e&&e.resolvePolicy||{};return{when:t.when||n.when||"LAZY",async:t.async||n.async||"WAIT"}},e.prototype.resolve=function(e,t){var n=this,a=r.u.$q,d=e.findNode(this),u=d&&d.state,m=this.getPolicy(u).async,l=(0,i.mf)(m)?m:o.yR;return this.promise=a.when().then((function(){return a.all(e.getDependencies(n).map((function(n){return n.get(e,t)})))})).then((function(e){return n.resolveFn.apply(null,e)})).then(l).then((function(e){return n.data=e,n.resolved=!0,n.resolveFn=null,s.g4.traceResolvableResolved(n,t),n.data}))},e.prototype.get=function(e,t){return this.promise||this.resolve(e,t)},e.prototype.toString=function(){return"Resolvable(token: "+(0,a.Pz)(this.token)+", requires: ["+this.deps.map(a.Pz)+"])"},e.prototype.clone=function(){return new e(this)},e.fromData=function(t,n){return new e(t,(function(){return n}),null,null,n)},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>f});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/interface.js"),d=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),u=n("./node_modules/@uirouter/core/lib-esm/path/pathUtils.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),_=i.u.when,c=[_.EAGER,_.LAZY],h=[_.EAGER],f=function(){function e(e){this._path=e}return e.prototype.getTokens=function(){return this._path.reduce((function(e,t){return e.concat(t.resolvables.map((function(e){return e.token})))}),[]).reduce(o.v_,[])},e.prototype.getResolvable=function(e){var t=this._path.map((function(e){return e.resolvables})).reduce(o.M7,[]).filter((function(t){return t.token===e}));return(0,o.Gb)(t)},e.prototype.getPolicy=function(e){var t=this.findNode(e);return e.getPolicy(t.state)},e.prototype.subContext=function(t){return new e(u.C.subPath(this._path,(function(e){return e.state===t})))},e.prototype.addResolvables=function(e,t){var n=(0,o.sE)(this._path,(0,r.OH)("state",t)),s=e.map((function(e){return e.token}));n.resolvables=n.resolvables.filter((function(e){return-1===s.indexOf(e.token)})).concat(e)},e.prototype.resolvePath=function(e,t){var n=this;void 0===e&&(e="LAZY");var d=((0,o.d3)(c,e)?e:"LAZY")===i.u.when.EAGER?h:c;s.g4.traceResolvePath(this._path,e,t);var u=function(e,t){return function(r){return(0,o.d3)(e,n.getPolicy(r)[t])}},m=this._path.reduce((function(e,o){var s=o.resolvables.filter(u(d,"when")),a=s.filter(u(["NOWAIT"],"async")),i=s.filter((0,r.ff)(u(["NOWAIT"],"async"))),m=n.subContext(o.state),l=function(e){return e.get(m,t).then((function(t){return{token:e.token,value:t}}))};return a.forEach(l),e.concat(i.map(l))}),[]);return a.u.$q.all(m)},e.prototype.injector=function(){return this._injector||(this._injector=new p(this))},e.prototype.findNode=function(e){return(0,o.sE)(this._path,(function(t){return(0,o.d3)(t.resolvables,e)}))},e.prototype.getDependencies=function(e){var t=this,n=this.findNode(e),r=(u.C.subPath(this._path,(function(e){return e===n}))||this._path).reduce((function(e,t){return e.concat(t.resolvables)}),[]).filter((function(t){return t!==e}));return e.deps.map((function(e){var n=r.filter((function(t){return t.token===e}));if(n.length)return(0,o.Gb)(n);var s=t.injector().getNative(e);if((0,l.wV)(s))throw new Error("Could not find Dependency Injection token: "+(0,m.Pz)(e));return new d.X(e,(function(){return s}),[],s)}))},e}(),p=function(){function e(e){this.context=e,this.native=this.get("Native Injector")||a.u.$injector}return e.prototype.get=function(e){var t=this.context.getResolvable(e);if(t){if("NOWAIT"===this.context.getPolicy(t).async)return t.get(this.context);if(!t.resolved)throw new Error("Resolvable async .get() not complete:"+(0,m.Pz)(t.token));return t.data}return this.getNative(e)},e.prototype.getAsync=function(e){var t=this.context.getResolvable(e);return t?t.get(this.context):a.u.$q.when(this.native.get(e))},e.prototype.getNative=function(e){return this.native&&this.native.get(e)},e}()},"./node_modules/@uirouter/core/lib-esm/router.js":(e,t,n)=>{"use strict";n.d(t,{a:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRouter.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/transitionService.js"),a=n("./node_modules/@uirouter/core/lib-esm/view/view.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js"),d=n("./node_modules/@uirouter/core/lib-esm/state/stateService.js"),u=n("./node_modules/@uirouter/core/lib-esm/globals.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),_=n("./node_modules/@uirouter/core/lib-esm/url/urlService.js"),c=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),f=0,p=(0,h.HV)("LocationServices",["url","path","search","hash","onChange"]),M=(0,h.HV)("LocationConfig",["port","protocol","host","baseHref","html5Mode","hashPrefix"]),y=function(){function e(e,t){void 0===e&&(e=p),void 0===t&&(t=M),this.locationService=e,this.locationConfig=t,this.$id=f++,this._disposed=!1,this._disposables=[],this.trace=c.g4,this.viewService=new a.s(this),this.globals=new u.k,this.transitionService=new s.Z(this),this.urlMatcherFactory=new o.y(this),this.urlRouter=new r.g(this),this.urlService=new _.i(this),this.stateRegistry=new i.q(this),this.stateService=new d.b(this),this._plugins={},this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self,this.disposable(this.globals),this.disposable(this.stateService),this.disposable(this.stateRegistry),this.disposable(this.transitionService),this.disposable(this.urlService),this.disposable(e),this.disposable(t)}return e.prototype.disposable=function(e){this._disposables.push(e)},e.prototype.dispose=function(e){var t=this;e&&(0,l.mf)(e.dispose)?e.dispose(this):(this._disposed=!0,this._disposables.slice().forEach((function(e){try{"function"==typeof e.dispose&&e.dispose(t),(0,m.nA)(t._disposables,e)}catch(e){}})))},e.prototype.plugin=function(e,t){void 0===t&&(t={});var n=new e(this,t);if(!n.name)throw new Error("Required property `name` missing on plugin: "+n);return this._disposables.push(n),this._plugins[n.name]=n},e.prototype.getPlugin=function(e){return e?this._plugins[e]:(0,m.VO)(this._plugins)},e}()},"./node_modules/@uirouter/core/lib-esm/state/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>M});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js");function u(e){return e.name}function m(e){return e.self.$$state=function(){return e},e.self}function l(e){return e.parent&&e.parent.data&&(e.data=e.self.data=(0,o.ED)(e.parent.data,e.data)),e.data}var _=function(e,t){return function(n){var s=n.self;if(s&&s.url&&s.name&&s.name.match(/\.\*\*$/)){var a={};(0,o.JG)(s,a),a.url+="{remainder:any}",s=a}var i=n.parent,d=function(e){if(!(0,r.HD)(e))return!1;var t="^"===e.charAt(0);return{val:t?e.substring(1):e,root:t}}(s.url),u=d?e.compile(d.val,{state:s}):s.url;if(!u)return null;if(!e.isMatcher(u))throw new Error("Invalid url '"+u+"' in state '"+n+"'");return d&&d.root?u:(i&&i.navigable||t()).url.append(u)}},c=function(e){return function(t){return!e(t)&&t.url?t:t.parent?t.parent.navigable:null}};function h(e){return e.parent?e.parent.path.concat(e):[e]}function f(e){var t=e.parent?(0,o.l7)({},e.parent.includes):{};return t[e.name]=!0,t}function p(e){var t,n,u=function(e){return e.provide||e.token},m=(0,a.uj)([[(0,a.vg)("resolveFn"),function(e){return new i.X(u(e),e.resolveFn,e.deps,e.policy)}],[(0,a.vg)("useFactory"),function(e){return new i.X(u(e),e.useFactory,e.deps||e.dependencies,e.policy)}],[(0,a.vg)("useClass"),function(e){return new i.X(u(e),(function(){return new e.useClass}),[],e.policy)}],[(0,a.vg)("useValue"),function(e){return new i.X(u(e),(function(){return e.useValue}),[],e.policy,e.useValue)}],[(0,a.vg)("useExisting"),function(e){return new i.X(u(e),o.yR,[e.useExisting],e.policy)}]]),l=(0,a.uj)([[(0,a.zG)((0,a.vg)("val"),r.HD),function(e){return new i.X(e.token,o.yR,[e.val],e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.kJ),function(e){return new i.X(e.token,(0,o.Gb)(e.val),e.val.slice(0,-1),e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.mf),function(e){return new i.X(e.token,e.val,(t=e.val,n=d.u.$injector,t.$inject||n&&n.annotate(t,n.strictDi)||"deferred"),e.policy);var t,n}]]),_=(0,a.uj)([[(0,a.is)(i.X),function(e){return e}],[function(e){return!(!e.token||!e.resolveFn)},m],[function(e){return!(!e.provide&&!e.token||!(e.useValue||e.useFactory||e.useExisting||e.useClass))},m],[function(e){return!!(e&&e.val&&((0,r.HD)(e.val)||(0,r.kJ)(e.val)||(0,r.mf)(e.val)))},l],[(0,a.P0)(!0),function(e){throw new Error("Invalid resolve value: "+(0,s.Pz)(e))}]]),c=e.resolve;return((0,r.kJ)(c)?c:(t=c,n=e.resolvePolicy||{},Object.keys(t||{}).map((function(e){return{token:e,val:t[e],deps:void 0,policy:n[e]}})))).map(_)}var M=function(){function e(e,t){this.matcher=e;var n,r=this,s=function(){return e.find("")},i=function(e){return""===e.name};this.builders={name:[u],self:[m],parent:[function(t){return i(t)?null:e.find(r.parentName(t))||s()}],data:[l],url:[_(t,s)],navigable:[c(i)],params:[(n=t.paramFactory,function(e){var t=e.url&&e.url.parameters({inherit:!1})||[],r=(0,o.VO)((0,o.js)((0,o.CE)(e.params||{},t.map((0,a.vg)("id"))),(function(t,o){return n.fromConfig(o,null,e.self)})));return t.concat(r).map((function(e){return[e.id,e]})).reduce(o.bb,{})})],views:[],path:[h],includes:[f],resolvables:[p]}}return e.prototype.builder=function(e,t){var n=this.builders,o=n[e]||[];return(0,r.HD)(e)&&!(0,r.$K)(t)?o.length>1?o:o[0]:(0,r.HD)(e)&&(0,r.mf)(t)?(n[e]=o,n[e].push(t),function(){return n[e].splice(n[e].indexOf(t,1))&&null}):void 0},e.prototype.build=function(e){var t=this.matcher,n=this.builders,r=this.parentName(e);if(r&&!t.find(r,void 0,!1))return null;for(var s in n)if(n.hasOwnProperty(s)){var a=n[s].reduce((function(e,t){return function(n){return t(n,e)}}),o.ZT);e[s]=a(e)}return e},e.prototype.parentName=function(e){var t=e.name||"",n=t.split(".");if("**"===n.pop()&&n.pop(),n.length){if(e.parent)throw new Error("States that specify the 'parent:' property should not have a '.' in their name ("+t+")");return n.join(".")}return e.parent?(0,r.HD)(e.parent)?e.parent:e.parent.name:""},e.prototype.name=function(e){var t=e.name;if(-1!==t.indexOf(".")||!e.parent)return t;var n=(0,r.HD)(e.parent)?e.parent:e.parent.name;return n?n+"."+t:t},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js":(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js"),a=function(){function e(e){this._states=e}return e.prototype.isRelative=function(e){return 0===(e=e||"").indexOf(".")||0===e.indexOf("^")},e.prototype.find=function(e,t,n){if(void 0===n&&(n=!0),e||""===e){var a=(0,o.HD)(e),i=a?e:e.name;this.isRelative(i)&&(i=this.resolvePath(i,t));var d=this._states[i];if(d&&(a||!(a||d!==e&&d.self!==e)))return d;if(a&&n){var u=(0,r.VO)(this._states).filter((function(e){return e.__stateObjectCache.nameGlob&&e.__stateObjectCache.nameGlob.matches(i)}));return u.length>1&&s.L.error("stateMatcher.find: Found multiple matches for "+i+" using glob: ",u.map((function(e){return e.name}))),u[0]}}},e.prototype.resolvePath=function(e,t){if(!t)throw new Error("No reference point given for path '"+e+"'");for(var n=this.find(t),o=e.split("."),r=o.length,s=0,a=n;s<r;s++)if(""!==o[s]||0!==s){if("^"!==o[s])break;if(!a.parent)throw new Error("Path '"+e+"' not valid for state '"+n.name+"'");a=a.parent}else a=n;var i=o.slice(s).join(".");return a.name+(a.name&&i?".":"")+i},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateObject.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/glob.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=function(){function e(t){return e.create(t||{})}return e.create=function(t){t=e.isStateClass(t)?new t:t;var n=(0,o.ED)((0,o.ED)(t,e.prototype));return t.$$state=function(){return n},n.self=t,n.__stateObjectCache={nameGlob:s.r.fromString(n.name)},n},e.prototype.is=function(e){return this===e||this.self===e||this.fqn()===e},e.prototype.fqn=function(){if(!(this.parent&&this.parent instanceof this.constructor))return this.name;var e=this.parent.fqn();return e?e+"."+this.name:this.name},e.prototype.root=function(){return this.parent&&this.parent.root()||this},e.prototype.parameters=function(e){return((e=(0,o.ce)(e,{inherit:!0,matchingKeys:null})).inherit&&this.parent&&this.parent.parameters()||[]).concat((0,o.VO)(this.params)).filter((function(t){return!e.matchingKeys||e.matchingKeys.hasOwnProperty(t.id)}))},e.prototype.parameter=function(e,t){return void 0===t&&(t={}),this.url&&this.url.parameter(e,t)||(0,o.sE)((0,o.VO)(this.params),(0,r.OH)("id",e))||t.inherit&&this.parent&&this.parent.parameter(e)},e.prototype.toString=function(){return this.fqn()},e.isStateClass=function(e){return(0,a.mf)(e)&&!0===e.__uiRouterState},e.isStateDeclaration=function(e){return(0,a.mf)(e.$$state)},e.isState=function(e){return(0,a.Kn)(e.__stateObjectCache)},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),s=function(){function e(e,t,n,o){this.router=e,this.states=t,this.builder=n,this.listeners=o,this.queue=[]}return e.prototype.dispose=function(){this.queue=[]},e.prototype.register=function(e){var t=this.queue,n=r.l.create(e),s=n.name;if(!(0,o.HD)(s))throw new Error("State must have a valid name");if(this.states.hasOwnProperty(s)||(0,o.d3)(t.map((0,o.vg)("name")),s))throw new Error("State '"+s+"' is already defined");return t.push(n),this.flush(),n},e.prototype.flush=function(){for(var e=this,t=this,n=t.queue,o=t.states,r=t.builder,s=[],a=[],i={},d=function(t){return e.states.hasOwnProperty(t)&&e.states[t]},u=function(){s.length&&e.listeners.forEach((function(e){return e("registered",s.map((function(e){return e.self})))}))};n.length>0;){var m=n.shift(),l=m.name,_=r.build(m),c=a.indexOf(m);if(_){var h=d(l);if(h&&h.name===l)throw new Error("State '"+l+"' is already defined");var f=d(l+".**");f&&this.router.stateRegistry.deregister(f),o[l]=m,this.attachRoute(m),c>=0&&a.splice(c,1),s.push(m)}else{var p=i[l];if(i[l]=n.length,c>=0&&p===n.length)return n.push(m),u(),o;c<0&&a.push(m),n.push(m)}}return u(),o},e.prototype.attachRoute=function(e){if(!e.abstract&&e.url){var t=this.router.urlService.rules;t.rule(t.urlRuleFactory.create(e))}},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js":(e,t,n)=>{"use strict";n.d(t,{q:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=function(){function e(e){this.router=e,this.states={},this.listeners=[],this.matcher=new o.Q(this.states),this.builder=new r.t(this.matcher,e.urlMatcherFactory),this.stateQueue=new s.L(e,this.states,this.builder,this.listeners),this._registerRoot()}return e.prototype._registerRoot=function(){(this._root=this.stateQueue.register({name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},abstract:!0})).navigable=null},e.prototype.dispose=function(){var e=this;this.stateQueue.dispose(),this.listeners=[],this.get().forEach((function(t){return e.get(t)&&e.deregister(t)}))},e.prototype.onStatesChanged=function(e){return this.listeners.push(e),function(){(0,a.nA)(this.listeners)(e)}.bind(this)},e.prototype.root=function(){return this._root},e.prototype.register=function(e){return this.stateQueue.register(e)},e.prototype._deregisterTree=function(e){var t=this,n=this.get().map((function(e){return e.$$state()})),o=function(e){var t=n.filter((function(t){return-1!==e.indexOf(t.parent)}));return 0===t.length?t:t.concat(o(t))},r=o([e]),s=[e].concat(r).reverse();return s.forEach((function(e){var n=t.router.urlService.rules;n.rules().filter((0,i.OH)("state",e)).forEach((function(e){return n.removeRule(e)})),delete t.states[e.name]})),s},e.prototype.deregister=function(e){var t=this.get(e);if(!t)throw new Error("Can't deregister state; not found: "+e);var n=this._deregisterTree(t.$$state());return this.listeners.forEach((function(e){return e("deregistered",n.map((function(e){return e.self})))})),n},e.prototype.get=function(e,t){var n=this;if(0===arguments.length)return Object.keys(this.states).map((function(e){return n.states[e].self}));var o=this.matcher.find(e,t);return o&&o.self||null},e.prototype.decorator=function(e,t){return this.builder.builder(e,t)},e}()},"./node_modules/@uirouter/core/lib-esm/state/targetState.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=function(){function e(e,t,n,o){this._stateRegistry=e,this._identifier=t,this._identifier=t,this._params=(0,s.l7)({},n||{}),this._options=(0,s.l7)({},o||{}),this._definition=e.matcher.find(t,this._options.relative)}return e.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},e.prototype.identifier=function(){return this._identifier},e.prototype.params=function(){return this._params},e.prototype.$state=function(){return this._definition},e.prototype.state=function(){return this._definition&&this._definition.self},e.prototype.options=function(){return this._options},e.prototype.exists=function(){return!(!this._definition||!this._definition.self)},e.prototype.valid=function(){return!this.error()},e.prototype.error=function(){var e=this.options().relative;if(!this._definition&&e){var t=e.name?e.name:e;return"Could not resolve '"+this.name()+"' from state '"+t+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},e.prototype.toString=function(){return"'"+this.name()+"'"+(0,r.Pz)(this.params())},e.prototype.withState=function(t){return new e(this._stateRegistry,t,this._params,this._options)},e.prototype.withParams=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._params,t);return new e(this._stateRegistry,this._identifier,o,this._options)},e.prototype.withOptions=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._options,t);return new e(this._stateRegistry,this._identifier,this._params,o)},e.isDef=function(e){return e&&e.state&&((0,o.HD)(e.state)||(0,o.Kn)(e.state)&&(0,o.HD)(e.state.name))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),a=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),i=function(){function e(e){this.transition=e}return e.prototype.buildHooksForPhase=function(e){var t=this;return this.transition.router.transitionService._pluginapi._getEvents(e).map((function(e){return t.buildHooks(e)})).reduce(o.M7,[]).filter(o.yR)},e.prototype.buildHooks=function(e){var t=this.transition,n=t.treeChanges(),r=this.getMatchingHooks(e,n,t);if(!r)return[];var i,d={transition:t,current:t.options().current};return r.map((function(r){return r.matches(n,t)[e.criteriaMatchPath.name].map((function(n){var i=(0,o.l7)({bind:r.bind,traceData:{hookType:e.name,context:n}},d),u=e.criteriaMatchPath.scope===s.c.STATE?n.state.self:null,m=new a.I(t,u,r,i);return{hook:r,node:n,transitionHook:m}}))})).reduce(o.M7,[]).sort((i=e.reverseSort,void 0===i&&(i=!1),function(e,t){var n=i?-1:1,o=(e.node.state.path.length-t.node.state.path.length)*n;return 0!==o?o:t.hook.priority-e.hook.priority})).map((function(e){return e.transitionHook}))},e.prototype.getMatchingHooks=function(e,t,n){var a=e.hookPhase===s.k.CREATE,i=this.transition.router.transitionService;return(a?[i]:[this.transition,i]).map((function(t){return t.getHooks(e.name)})).filter((0,o.sp)(r.kJ,"broken event named: "+e.name)).reduce(o.M7,[]).filter((function(e){return e.matches(t,n)}))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js":(e,t,n)=>{"use strict";n.d(t,{cN:()=>s,BU:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js");function s(e,t,n){var r=(0,o.HD)(t)?[t]:t;return!!((0,o.mf)(r)?r:function(e){for(var t=r,n=0;n<t.length;n++){var s=new o.rR(t[n]);if(s&&s.matches(e.name)||!s&&t[n]===e.name)return!0}return!1})(e,n)}var a=function(){function e(e,t,n,o,r,s){void 0===s&&(s={}),this.tranSvc=e,this.eventType=t,this.callback=n,this.matchCriteria=o,this.removeHookFromRegistry=r,this.invokeCount=0,this._deregistered=!1,this.priority=s.priority||0,this.bind=s.bind||null,this.invokeLimit=s.invokeLimit}return e.prototype._matchingNodes=function(e,t,n){if(!0===t)return e;var o=e.filter((function(e){return s(e.state,t,n)}));return o.length?o:null},e.prototype._getDefaultMatchCriteria=function(){return(0,o.js)(this.tranSvc._pluginapi._getPathTypes(),(function(){return!0}))},e.prototype._getMatchingNodes=function(e,t){var n=this,s=(0,o.l7)(this._getDefaultMatchCriteria(),this.matchCriteria);return(0,o.VO)(this.tranSvc._pluginapi._getPathTypes()).reduce((function(a,i){var d=i.scope===r.c.STATE,u=e[i.name]||[],m=d?u:[(0,o.Gb)(u)];return a[i.name]=n._matchingNodes(m,s[i.name],t),a}),{})},e.prototype.matches=function(e,t){var n=this._getMatchingNodes(e,t);return(0,o.VO)(n).every(o.yR)?n:null},e.prototype.deregister=function(){this.removeHookFromRegistry(this),this._deregistered=!0},e}();function i(e,t,n){var r=(e._registeredHooks=e._registeredHooks||{})[n.name]=[],s=(0,o.nA)(r);function i(e,o,i){void 0===i&&(i={});var d=new a(t,n,o,e,s,i);return r.push(d),d.deregister.bind(d)}return e[n.name]=i,i}},"./node_modules/@uirouter/core/lib-esm/transition/interface.js":(e,t,n)=>{"use strict";var o,r;n.d(t,{k:()=>o,c:()=>r}),function(e){e[e.CREATE=0]="CREATE",e[e.BEFORE=1]="BEFORE",e[e.RUN=2]="RUN",e[e.SUCCESS=3]="SUCCESS",e[e.ERROR=4]="ERROR"}(o||(o={})),function(e){e[e.TRANSITION=0]="TRANSITION",e[e.STATE=1]="STATE"}(r||(r={}))},"./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js":(e,t,n)=>{"use strict";n.d(t,{K:()=>o,i:()=>d});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");!function(e){e[e.SUPERSEDED=2]="SUPERSEDED",e[e.ABORTED=3]="ABORTED",e[e.INVALID=4]="INVALID",e[e.IGNORED=5]="IGNORED",e[e.ERROR=6]="ERROR"}(o||(o={}));var i=0,d=function(){function e(e,t,n){this.$id=i++,this.type=e,this.message=t,this.detail=n}return e.isRejectionPromise=function(t){return t&&"function"==typeof t.then&&(0,a.is)(e)(t._transitionRejection)},e.superseded=function(t,n){var r=new e(o.SUPERSEDED,"The transition has been superseded by a different transition",t);return n&&n.redirected&&(r.redirected=!0),r},e.redirected=function(t){return e.superseded(t,{redirected:!0})},e.invalid=function(t){return new e(o.INVALID,"This transition is invalid",t)},e.ignored=function(t){return new e(o.IGNORED,"The transition was ignored",t)},e.aborted=function(t){return new e(o.ABORTED,"The transition has been aborted",t)},e.errored=function(t){return new e(o.ERROR,"The transition errored",t)},e.normalize=function(t){return(0,a.is)(e)(t)?t:e.errored(t)},e.prototype.toString=function(){var e,t=(e=this.detail)&&e.toString!==Object.prototype.toString?e.toString():(0,s.Pz)(e),n=this;return"Transition Rejection($id: "+n.$id+" type: "+n.type+", message: "+n.message+", detail: "+t+")"},e.prototype.toPromise=function(){return(0,r.l7)((0,r.jv)(this),{_transitionRejection:this})},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),r=function(e,t,n,r,s,a,i,d){void 0===s&&(s=!1),void 0===a&&(a=o.I.HANDLE_RESULT),void 0===i&&(i=o.I.REJECT_ERROR),void 0===d&&(d=!1),this.name=e,this.hookPhase=t,this.hookOrder=n,this.criteriaMatchPath=r,this.reverseSort=s,this.getResultHandler=a,this.getErrorHandler=i,this.synchronous=d}},"./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>c});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),u=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),m=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),l=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),_={current:r.ZT,transition:null,traceData:{},bind:null},c=function(){function e(e,t,n,s){var a=this;this.transition=e,this.stateContext=t,this.registeredHook=n,this.options=s,this.isSuperseded=function(){return a.type.hookPhase===o.k.RUN&&!a.options.transition.isActive()},this.options=(0,r.ce)(s,_),this.type=n.eventType}return e.chain=function(e,t){return e.reduce((function(e,t){return e.then((function(){return t.invokeHook()}))}),t||u.u.$q.when())},e.invokeHooks=function(t,n){for(var o=0;o<t.length;o++){var r=t[o].invokeHook();if((0,a.tI)(r)){var s=t.slice(o+1);return e.chain(s,r).then(n)}}return n()},e.runAllHooks=function(e){e.forEach((function(e){return e.invokeHook()}))},e.prototype.logError=function(e){this.transition.router.stateService.defaultErrorHandler()(e)},e.prototype.invokeHook=function(){var e=this,t=this.registeredHook;if(!t._deregistered){var n=this.getNotCurrentRejection();if(n)return n;var o=this.options;d.g4.traceHookInvocation(this,this.transition,o);var r=function(n){return t.eventType.getErrorHandler(e)(n)},s=function(n){return t.eventType.getResultHandler(e)(n)};try{var i=t.callback.call(o.bind,e.transition,e.stateContext);return!this.type.synchronous&&(0,a.tI)(i)?i.catch((function(e){return m.i.normalize(e).toPromise()})).then(s,r):s(i)}catch(e){return r(m.i.normalize(e))}finally{t.invokeLimit&&++t.invokeCount>=t.invokeLimit&&t.deregister()}}},e.prototype.handleHookResult=function(e){var t=this;return this.getNotCurrentRejection()||((0,a.tI)(e)?e.then((function(e){return t.handleHookResult(e)})):(d.g4.traceHookResult(e,this.transition,this.options),!1===e?m.i.aborted("Hook aborted transition").toPromise():(0,i.is)(l.F)(e)?m.i.redirected(e).toPromise():void 0))},e.prototype.getNotCurrentRejection=function(){var e=this.transition.router;return e._disposed?m.i.aborted("UIRouter instance #"+e.$id+" has been stopped (disposed)").toPromise():this.transition._aborted?m.i.aborted().toPromise():this.isSuperseded()?m.i.superseded(this.options.current()).toPromise():void 0},e.prototype.toString=function(){var e=this.options,t=this.registeredHook,n=(0,i.Qc)("traceData.hookType")(e)||"internal",o=(0,i.Qc)("traceData.context.state.name")(e)||(0,i.Qc)("traceData.context")(e)||"unknown",r=(0,s.iC)(t.callback);return n+" context: "+o+", "+(0,s.BS)(200,r)},e.HANDLE_RESULT=function(e){return function(t){return e.handleHookResult(t)}},e.LOG_REJECTED_RESULT=function(e){return function(t){(0,a.tI)(t)&&t.catch((function(t){return e.logError(m.i.normalize(t))}))}},e.LOG_ERROR=function(e){return function(t){return e.logError(t)}},e.REJECT_ERROR=function(e){return function(e){return(0,r.jv)(e)}},e.THROW_ERROR=function(e){return function(e){throw e}},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionService.js":(e,t,n)=>{"use strict";n.d(t,{Z:()=>C,q:()=>W});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/transition.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js"),a=n("./node_modules/@uirouter/core/lib-esm/router.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/index.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/index.js");function u(e){e.addResolvable(i.XU.fromData(a.a,e.router),""),e.addResolvable(i.XU.fromData(r.u,e),""),e.addResolvable(i.XU.fromData("$transition$",e),""),e.addResolvable(i.XU.fromData("$stateParams",e.params()),""),e.entering().forEach((function(t){e.addResolvable(i.XU.fromData("$state$",t),t)}))}var m=["$transition$",r.u],l=(0,d.d3)(m),_=function(e){var t=(0,d.VO)(e.treeChanges()).reduce(d.M7,[]).reduce(d.v_,[]),n=function(e){return l(e.token)?i.XU.fromData(e.token,null):e};t.forEach((function(e){e.resolvables=e.resolvables.map(n)}))},c=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),f=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),p=function(e){var t=e.to().redirectTo;if(t){var n=e.router.stateService;return(0,c.mf)(t)?h.u.$q.when(t(e)).then(o):o(t)}function o(t){if(t)return t instanceof f.F?t:(0,c.HD)(t)?n.target(t,e.params(),e.options()):t.state||t.params?n.target(t.state||e.to(),t.params||e.params(),e.options()):void 0}};function M(e){return function(t,n){return(0,n.$$state()[e])(t,n)}}var y=M("onExit"),L=M("onRetain"),g=M("onEnter"),Y=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),v=n("./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js"),k=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),j=1e3,w=function(e){return new v.l(e.treeChanges().to).resolvePath("EAGER",e).then(Y.ZT)},b=function(e,t){return new v.l(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY",e).then(Y.ZT)},D=function(e){return new v.l(e.treeChanges().to).resolvePath("LAZY",e).then(Y.ZT)},T=function(e){var t=h.u.$q,n=e.views("entering");if(n.length)return t.all(n.map((function(e){return t.when(e.load())}))).then(Y.ZT)},S=function(e){var t=e.views("entering"),n=e.views("exiting");if(t.length||n.length){var o=e.router.viewService;n.forEach((function(e){return o.deactivateViewConfig(e)})),t.forEach((function(e){return o.activateViewConfig(e)})),o.sync()}},H=function(e){var t=e.router.globals,n=function(){t.transition===e&&(t.transition=null)};e.onSuccess({},(function(){t.successfulTransitions.enqueue(e),t.$current=e.$to(),t.current=t.$current.self,(0,Y.JG)(e.params(),t.params)}),{priority:1e4}),e.promise.then(n,n)},x=function(e){var t=e.options(),n=e.router.stateService,o=e.router.urlRouter;if("url"!==t.source&&t.location&&n.$current.navigable){var r={replace:"replace"===t.location};o.push(n.$current.navigable.url,n.params,r)}o.update(!0)},E=n("./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js"),P=n("./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js"),O=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),$=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),A=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js");function R(e){var t=e._ignoredReason();if(t){$.g4.traceTransitionIgnored(e);var n=e.router.globals.transition;return"SameAsCurrent"===t&&n&&n.abort(),A.i.ignored().toPromise()}}function F(e){if(!e.valid())throw new Error(e.error().toString())}var W={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,supercede:!0,custom:{},current:function(){return null},source:"unknown"},C=function(){function e(e){this._transitionCount=0,this._eventTypes=[],this._registeredHooks={},this._criteriaPaths={},this._router=e,this.$view=e.viewService,this._deregisterHookFns={},this._pluginapi=(0,Y.WR)((0,k.P0)(this),{},(0,k.P0)(this),["_definePathType","_defineEvent","_getPathTypes","_getEvents","getHooks"]),this._defineCorePaths(),this._defineCoreEvents(),this._registerCoreTransitionHooks(),e.globals.successfulTransitions.onEvict(_)}return e.prototype.onCreate=function(e,t,n){},e.prototype.onBefore=function(e,t,n){},e.prototype.onStart=function(e,t,n){},e.prototype.onExit=function(e,t,n){},e.prototype.onRetain=function(e,t,n){},e.prototype.onEnter=function(e,t,n){},e.prototype.onFinish=function(e,t,n){},e.prototype.onSuccess=function(e,t,n){},e.prototype.onError=function(e,t,n){},e.prototype.dispose=function(e){(0,Y.VO)(this._registeredHooks).forEach((function(e){return e.forEach((function(t){t._deregistered=!0,(0,Y.nA)(e,t)}))}))},e.prototype.create=function(e,t){return new r.u(e,t,this._router)},e.prototype._defineCoreEvents=function(){var e=o.k,t=O.I,n=this._criteriaPaths,r=!1,s=!0;this._defineEvent("onCreate",e.CREATE,0,n.to,r,t.LOG_REJECTED_RESULT,t.THROW_ERROR,s),this._defineEvent("onBefore",e.BEFORE,0,n.to),this._defineEvent("onStart",e.RUN,0,n.to),this._defineEvent("onExit",e.RUN,100,n.exiting,!0),this._defineEvent("onRetain",e.RUN,200,n.retained),this._defineEvent("onEnter",e.RUN,300,n.entering),this._defineEvent("onFinish",e.RUN,400,n.to),this._defineEvent("onSuccess",e.SUCCESS,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s),this._defineEvent("onError",e.ERROR,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s)},e.prototype._defineCorePaths=function(){var e=o.c.STATE,t=o.c.TRANSITION;this._definePathType("to",t),this._definePathType("from",t),this._definePathType("exiting",e),this._definePathType("retained",e),this._definePathType("entering",e)},e.prototype._defineEvent=function(e,t,n,o,r,a,i,d){void 0===r&&(r=!1),void 0===a&&(a=O.I.HANDLE_RESULT),void 0===i&&(i=O.I.REJECT_ERROR),void 0===d&&(d=!1);var u=new P.t(e,t,n,o,r,a,i,d);this._eventTypes.push(u),(0,s.BU)(this,this,u)},e.prototype._getEvents=function(e){return((0,c.$K)(e)?this._eventTypes.filter((function(t){return t.hookPhase===e})):this._eventTypes.slice()).sort((function(e,t){var n=e.hookPhase-t.hookPhase;return 0===n?e.hookOrder-t.hookOrder:n}))},e.prototype._definePathType=function(e,t){this._criteriaPaths[e]={name:e,scope:t}},e.prototype._getPathTypes=function(){return this._criteriaPaths},e.prototype.getHooks=function(e){return this._registeredHooks[e]},e.prototype._registerCoreTransitionHooks=function(){var e=this._deregisterHookFns;e.addCoreResolves=this.onCreate({},u),e.ignored=this.onBefore({},R,{priority:-9999}),e.invalid=function(e){return e.onBefore({},F,{priority:-1e4})}(this),e.redirectTo=function(e){return e.onStart({to:function(e){return!!e.redirectTo}},p)}(this),e.onExit=function(e){return e.onExit({exiting:function(e){return!!e.onExit}},y)}(this),e.onRetain=function(e){return e.onRetain({retained:function(e){return!!e.onRetain}},L)}(this),e.onEnter=function(e){return e.onEnter({entering:function(e){return!!e.onEnter}},g)}(this),e.eagerResolve=function(e){return e.onStart({},w,{priority:j})}(this),e.lazyResolve=function(e){return e.onEnter({entering:(0,k.P0)(!0)},b,{priority:j})}(this),e.resolveAll=function(e){return e.onFinish({},D,{priority:j})}(this),e.loadViews=function(e){return e.onFinish({},T)}(this),e.activateViews=function(e){return e.onSuccess({},S)}(this),e.updateGlobals=function(e){return e.onCreate({},H)}(this),e.updateUrl=function(e){return e.onSuccess({},x,{priority:9999})}(this),e.lazyLoad=(0,E.v)(this)},e}()},"./node_modules/@uirouter/core/lib-esm/url/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/url/urlConfig.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=function(){function e(e){var t=this;this.router=e,this.paramTypes=new o.ParamTypes,this._decodeParams=!0,this._isCaseInsensitive=!1,this._isStrictMode=!0,this._defaultSquashPolicy=!1,this.dispose=function(){return t.paramTypes.dispose()},this.baseHref=function(){return t.router.locationConfig.baseHref()},this.hashPrefix=function(e){return t.router.locationConfig.hashPrefix(e)},this.host=function(){return t.router.locationConfig.host()},this.html5Mode=function(){return t.router.locationConfig.html5Mode()},this.port=function(){return t.router.locationConfig.port()},this.protocol=function(){return t.router.locationConfig.protocol()}}return e.prototype.caseInsensitive=function(e){return this._isCaseInsensitive=(0,r.$K)(e)?e:this._isCaseInsensitive},e.prototype.defaultSquashPolicy=function(e){if((0,r.$K)(e)&&!0!==e&&!1!==e&&!(0,r.HD)(e))throw new Error("Invalid squash policy: "+e+". Valid policies: false, true, arbitrary-string");return this._defaultSquashPolicy=(0,r.$K)(e)?e:this._defaultSquashPolicy},e.prototype.strictMode=function(e){return this._isStrictMode=(0,r.$K)(e)?e:this._isStrictMode},e.prototype.type=function(e,t,n){var o=this.paramTypes.type(e,t,n);return(0,r.$K)(t)?this:o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js":(e,t,n)=>{"use strict";n.d(t,{y:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),a=function(){return(a=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},i=function(){function e(e){this.router=e}return e.prototype.fromConfig=function(e,t,n){return new s.Param(e,t,s.DefType.CONFIG,this.router.urlService.config,n)},e.prototype.fromPath=function(e,t,n){return new s.Param(e,t,s.DefType.PATH,this.router.urlService.config,n)},e.prototype.fromSearch=function(e,t,n){return new s.Param(e,t,s.DefType.SEARCH,this.router.urlService.config,n)},e}(),d=function(){function e(e){var t=this;this.router=e,this.paramFactory=new i(this.router),this.UrlMatcher=r.x,this.Param=s.Param,this.caseInsensitive=function(e){return t.router.urlService.config.caseInsensitive(e)},this.defaultSquashPolicy=function(e){return t.router.urlService.config.defaultSquashPolicy(e)},this.strictMode=function(e){return t.router.urlService.config.strictMode(e)},this.type=function(e,n,o){return t.router.urlService.config.type(e,n,o)||t}}return e.prototype.compile=function(e,t){var n=this.router.urlService.config,s=t&&!t.state&&t.params;t=s?a({state:{params:s}},t):t;var i={strict:n._isStrictMode,caseInsensitive:n._isCaseInsensitive,decodeParams:n._decodeParams};return new r.x(e,n.paramTypes,this.paramFactory,(0,o.l7)(i,t))},e.prototype.isMatcher=function(e){if(!(0,o.Kn)(e))return!1;var t=!0;return(0,o.Ed)(r.x.prototype,(function(n,r){(0,o.mf)(n)&&(t=t&&(0,o.$K)(e[r])&&(0,o.mf)(e[r]))})),t},e.prototype.$get=function(){var e=this.router.urlService.config;return e.paramTypes.enqueue=!1,e.paramTypes._flushTypeQueue(),this},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRouter.js":(e,t,n)=>{"use strict";n.d(t,{g:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js"),s=function(){function e(e){var t=this;this.router=e,this.sync=function(e){return t.router.urlService.sync(e)},this.listen=function(e){return t.router.urlService.listen(e)},this.deferIntercept=function(e){return t.router.urlService.deferIntercept(e)},this.match=function(e){return t.router.urlService.match(e)},this.initial=function(e){return t.router.urlService.rules.initial(e)},this.otherwise=function(e){return t.router.urlService.rules.otherwise(e)},this.removeRule=function(e){return t.router.urlService.rules.removeRule(e)},this.rule=function(e){return t.router.urlService.rules.rule(e)},this.rules=function(){return t.router.urlService.rules.rules()},this.sort=function(e){return t.router.urlService.rules.sort(e)},this.when=function(e,n,o){return t.router.urlService.rules.when(e,n,o)},this.urlRuleFactory=new r.I(e)}return e.prototype.update=function(e){var t=this.router.locationService;e?this.location=t.url():t.url()!==this.location&&t.url(this.location,!0)},e.prototype.push=function(e,t,n){var o=n&&!!n.replace;this.router.urlService.url(e.format(t||{}),o)},e.prototype.href=function(e,t,n){var r=e.format(t);if(null==r)return null;n=n||{absolute:!1};var s=this.router.urlService.config,a=s.html5Mode();if(a||null===r||(r="#"+s.hashPrefix()+r),r=function(e,t,n,r){return"/"===r?e:t?(0,o.Lb)(r)+e:n?r.slice(1)+e:e}(r,a,n.absolute,s.baseHref()),!n.absolute||!r)return r;var i=!a&&r?"/":"",d=s.port(),u=80===d||443===d?"":":"+d;return[s.protocol(),"://",s.host(),u,i,r].join("")},Object.defineProperty(e.prototype,"interceptDeferred",{get:function(){return this.router.urlService.interceptDeferred},enumerable:!1,configurable:!0}),e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRule.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>d,n:()=>u});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),d=function(){function e(e){this.router=e}return e.prototype.compile=function(e){return this.router.urlMatcherFactory.compile(e)},e.prototype.create=function(e,t){var n=this,s=i.l.isState,d=i.l.isStateDeclaration,m=(0,a.uj)([[r.HD,function(e){return m(n.compile(e))}],[(0,a.is)(o.x),function(e){return n.fromUrlMatcher(e,t)}],[(0,a.or)(s,d),function(e){return n.fromState(e,n.router)}],[(0,a.is)(RegExp),function(e){return n.fromRegExp(e,t)}],[r.mf,function(e){return new u(e,t)}]]),l=m(e);if(!l)throw new Error("invalid 'what' in when()");return l},e.prototype.fromUrlMatcher=function(e,t){var n=t;(0,r.HD)(t)&&(t=this.router.urlMatcherFactory.compile(t)),(0,a.is)(o.x)(t)&&(n=function(e){return t.format(e)});var i={urlMatcher:e,matchPriority:function(t){var n=e.parameters().filter((function(e){return e.isOptional}));return n.length?n.filter((function(e){return t[e.id]})).length/n.length:1e-6},type:"URLMATCHER"};return(0,s.l7)(new u((function(t){var n=e.exec(t.path,t.search,t.hash);return e.validates(n)&&n}),n),i)},e.prototype.fromState=function(e,t){var n=i.l.isStateDeclaration(e)?e.$$state():e,o={state:n,type:"STATE"};return(0,s.l7)(this.fromUrlMatcher(n.url,(function(e){var o=t.stateService,r=t.globals;o.href(n,e)!==o.href(r.current,r.params)&&o.transitionTo(n,e,{inherit:!0,source:"url"})})),o)},e.prototype.fromRegExp=function(e,t){if(e.global||e.sticky)throw new Error("Rule RegExp must not be global or sticky");var n=(0,r.HD)(t)?function(e){return t.replace(/\$(\$|\d{1,2})/,(function(t,n){return e["$"===n?0:Number(n)]}))}:t,o={regexp:e,type:"REGEXP"};return(0,s.l7)(new u((function(t){return e.exec(t.path)}),n),o)},e.isUrlRule=function(e){return e&&["type","match","handler"].every((function(t){return(0,r.$K)(e[t])}))},e}(),u=function(e,t){var n=this;this.match=e,this.type="RAW",this.matchPriority=function(e){return 0-n.$id},this.handler=t||s.yR}},"./node_modules/@uirouter/core/lib-esm/url/urlRules.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),i=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js");function d(e){if(!((0,a.mf)(e)||(0,a.HD)(e)||(0,a.is)(r.TargetState)(e)||r.TargetState.isDef(e)))throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");return(0,a.mf)(e)?e:(0,a.P0)(e)}o=function(e,t){var n=function(e,t){return(t.priority||0)-(e.priority||0)}(e,t);return 0!==n||0!==(n=function(e,t){var n={STATE:4,URLMATCHER:4,REGEXP:3,RAW:2,OTHER:1};return(n[e.type]||0)-(n[t.type]||0)}(e,t))||0!==(n=function(e,t){return e.urlMatcher&&t.urlMatcher?s.x.compare(e.urlMatcher,t.urlMatcher):0}(e,t))?n:function(e,t){var n={STATE:!0,URLMATCHER:!0};return n[e.type]&&n[t.type]?0:(e.$id||0)-(t.$id||0)}(e,t)};var u=function(){function e(e){this.router=e,this._sortFn=o,this._rules=[],this._id=0,this.urlRuleFactory=new i.I(e)}return e.prototype.dispose=function(e){this._rules=[],delete this._otherwiseFn},e.prototype.initial=function(e){var t=d(e);this.rule(this.urlRuleFactory.create((function(e,t){return 0===t.globals.transitionHistory.size()&&!!/^\/?$/.exec(e.path)}),t))},e.prototype.otherwise=function(e){var t=d(e);this._otherwiseFn=this.urlRuleFactory.create((0,a.P0)(!0),t),this._sorted=!1},e.prototype.removeRule=function(e){(0,a.nA)(this._rules,e)},e.prototype.rule=function(e){var t=this;if(!i.I.isUrlRule(e))throw new Error("invalid rule");return e.$id=this._id++,e.priority=e.priority||0,this._rules.push(e),this._sorted=!1,function(){return t.removeRule(e)}},e.prototype.rules=function(){return this.ensureSorted(),this._rules.concat(this._otherwiseFn?[this._otherwiseFn]:[])},e.prototype.sort=function(e){for(var t=this.stableSort(this._rules,this._sortFn=e||this._sortFn),n=0,o=0;o<t.length;o++)t[o]._group=n,o<t.length-1&&0!==this._sortFn(t[o],t[o+1])&&n++;this._rules=t,this._sorted=!0},e.prototype.ensureSorted=function(){this._sorted||this.sort()},e.prototype.stableSort=function(e,t){var n=e.map((function(e,t){return{elem:e,idx:t}}));return n.sort((function(e,n){var o=t(e.elem,n.elem);return 0===o?e.idx-n.idx:o})),n.map((function(e){return e.elem}))},e.prototype.when=function(e,t,n){var o=this.urlRuleFactory.create(e,t);return(0,a.$K)(n&&n.priority)&&(o.priority=n.priority),this.rule(o),o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlService.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRules.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlConfig.js"),a=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),i=function(){function e(e){var t=this;this.router=e,this.interceptDeferred=!1,this.rules=new r.h(this.router),this.config=new s.F(this.router),this.url=function(e,n,o){return t.router.locationService.url(e,n,o)},this.path=function(){return t.router.locationService.path()},this.search=function(){return t.router.locationService.search()},this.hash=function(){return t.router.locationService.hash()},this.onChange=function(e){return t.router.locationService.onChange(e)}}return e.prototype.dispose=function(){this.listen(!1),this.rules.dispose()},e.prototype.parts=function(){return{path:this.path(),search:this.search(),hash:this.hash()}},e.prototype.sync=function(e){if(!e||!e.defaultPrevented){var t=this.router,n=t.urlService,r=t.stateService,s={path:n.path(),search:n.search(),hash:n.hash()},i=this.match(s);(0,o.uj)([[o.HD,function(e){return n.url(e,!0)}],[a.TargetState.isDef,function(e){return r.go(e.state,e.params,e.options)}],[(0,o.is)(a.TargetState),function(e){return r.go(e.state(),e.params(),e.options())}]])(i&&i.rule.handler(i.match,s,this.router))}},e.prototype.listen=function(e){var t=this;if(!1!==e)return this._stopListeningFn=this._stopListeningFn||this.router.urlService.onChange((function(e){return t.sync(e)}));this._stopListeningFn&&this._stopListeningFn(),delete this._stopListeningFn},e.prototype.deferIntercept=function(e){void 0===e&&(e=!0),this.interceptDeferred=e},e.prototype.match=function(e){e=(0,o.l7)({path:"",search:{},hash:""},e);for(var t,n,r,s=this.rules.rules(),a=0;a<s.length&&(!t||t.rule._group===s[a]._group);a++){var i=(void 0,(r=(n=s[a]).match(e,this.router))&&{match:r,rule:n,weight:n.matchPriority(r)});t=!t||i&&i.weight>t.weight?i:t}return t},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla.js":(e,t,n)=>{"use strict";n.d(t,{$q:()=>o.$q});var o=n("./node_modules/@uirouter/core/lib-esm/vanilla/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js":(e,t,n)=>{"use strict";n.d(t,{U:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),s=function(){function e(e,t){var n=this;this.fireAfterUpdate=t,this._listeners=[],this._listener=function(e){return n._listeners.forEach((function(t){return t(e)}))},this.hash=function(){return(0,r.en)(n._get()).hash},this.path=function(){return(0,r.en)(n._get()).path},this.search=function(){return(0,r.Qf)((0,r.en)(n._get()).search)},this._location=o.Jz.location,this._history=o.Jz.history}return e.prototype.url=function(e,t){return void 0===t&&(t=!0),(0,o.$K)(e)&&e!==this._get()&&(this._set(null,null,e,t),this.fireAfterUpdate&&this._listeners.forEach((function(t){return t({url:e})}))),(0,r.Q2)(this)},e.prototype.onChange=function(e){var t=this;return this._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}},e.prototype.dispose=function(e){(0,o.Wk)(this._listeners)},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=function(){function e(e,t){void 0===t&&(t=!1),this._isHtml5=t,this._baseHref=void 0,this._hashPrefix=""}return e.prototype.port=function(){return location.port?Number(location.port):"https"===this.protocol()?443:80},e.prototype.protocol=function(){return location.protocol.replace(/:/g,"")},e.prototype.host=function(){return location.hostname},e.prototype.html5Mode=function(){return this._isHtml5},e.prototype.hashPrefix=function(e){return(0,o.$K)(e)?this._hashPrefix=e:this._hashPrefix},e.prototype.baseHref=function(e){return(0,o.$K)(e)&&(this._baseHref=e),(0,o.o8)(this._baseHref)&&(this._baseHref=this.getBaseHref()),this._baseHref},e.prototype.getBaseHref=function(){var e=document.getElementsByTagName("base")[0];return e&&e.href?e.href.replace(/^([^/:]*:)?\/\/[^/]*/,""):this._isHtml5?"/":location.pathname||"/"},e.prototype.dispose=function(){},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js":(e,t,n)=>{"use strict";n.d(t,{R:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!1)||this;return r.Jz.addEventListener("hashchange",n._listener,!1),n}return a(t,e),t.prototype._get=function(){return(0,r.Ld)(this._location.hash)},t.prototype._set=function(e,t,n,o){this._location.hash=n},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),r.Jz.removeEventListener("hashchange",this._listener)},t}(s.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/injector.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/core/lib-esm/common/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{W:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=function(){var e=this;this.dispose=r.ZT,this._baseHref="",this._port=80,this._protocol="http",this._host="localhost",this._hashPrefix="",this.port=function(){return e._port},this.protocol=function(){return e._protocol},this.host=function(){return e._host},this.baseHref=function(){return e._baseHref},this.html5Mode=function(){return!1},this.hashPrefix=function(t){return(0,o.$K)(t)?e._hashPrefix=t:e._hashPrefix}}},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>a});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),a=function(e){function t(t){return e.call(this,t,!0)||this}return s(t,e),t.prototype._get=function(){return this._url},t.prototype._set=function(e,t,n,o){this._url=n},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),a=n("./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js"),i=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js"),d=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js");n("./node_modules/@uirouter/core/lib-esm/vanilla/injector.js"),n("./node_modules/@uirouter/core/lib-esm/vanilla/q.js"),n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),(0,s._D)("vanilla.hashBangLocation",!1,r.R,o.u),(0,s._D)("vanilla.pushStateLocation",!0,a.h,o.u),(0,s._D)("vanilla.memoryLocation",!1,i.I,d.W)},"./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!0)||this;return n._config=t.urlService.config,s.Jz.addEventListener("popstate",n._listener,!1),n}return a(t,e),t.prototype._getBasePrefix=function(){return(0,s.Lb)(this._config.baseHref())},t.prototype._get=function(){var e=this._location,t=e.pathname,n=e.hash,o=e.search;o=(0,s.C7)(o)[1],n=(0,s.cW)(n)[1];var r=this._getBasePrefix(),a=t===this._config.baseHref(),i=t.substr(0,r.length)===r;return(t=a?"/":i?t.substring(r.length):t)+(o?"?"+o:"")+(n?"#"+n:"")},t.prototype._set=function(e,t,n,o){var r=this._getBasePrefix(),s=n&&"/"!==n[0]?"/":"",a=""===n||"/"===n?this._config.baseHref():r+s+n;o?this._history.replaceState(e,t,a):this._history.pushState(e,t,a)},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),s.Jz.removeEventListener("popstate",this._listener)},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/q.js":(e,t,n)=>{"use strict";n.d(t,{$q:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r={when:function(e){return new Promise((function(t,n){return t(e)}))},reject:function(e){return new Promise((function(t,n){n(e)}))},defer:function(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e},all:function(e){if((0,o.kJ)(e))return Promise.all(e);if((0,o.Kn)(e)){var t=Object.keys(e).map((function(t){return e[t].then((function(e){return{key:t,val:e}}))}));return r.all(t).then((function(e){return e.reduce((function(e,t){return e[t.key]=t.val,e}),{})}))}}}},"./node_modules/@uirouter/core/lib-esm/vanilla/utils.js":(e,t,n)=>{"use strict";n.d(t,{Qf:()=>s,en:()=>a,Q2:()=>i,_D:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=function(e,t){var n=t[0],r=t[1];return e.hasOwnProperty(n)?(0,o.kJ)(e[n])?e[n].push(r):e[n]=[e[n],r]:e[n]=r,e},s=function(e){return e.split("&").filter(o.yR).map(o.Fb).reduce(r,{})};function a(e){var t=function(e){return e||""},n=(0,o.cW)(e).map(t),r=n[0],s=n[1],a=(0,o.C7)(r).map(t);return{path:a[0],search:a[1],hash:s,url:e}}var i=function(e){var t=e.path(),n=e.search(),r=e.hash(),s=Object.keys(n).map((function(e){var t=n[e];return((0,o.kJ)(t)?t:[t]).map((function(t){return e+"="+t}))})).reduce(o.M7,[]).join("&");return t+(s?"?"+s:"")+(r?"#"+r:"")};function d(e,t,n,o){return function(r){var s=r.locationService=new n(r),a=r.locationConfig=new o(r,t);return{name:e,service:s,configuration:a,dispose:function(e){e.dispose(s),e.dispose(a)}}}}},"./node_modules/@uirouter/core/lib-esm/view/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/view/view.js":(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),i=function(){function e(e){var t=this;this.router=e,this._uiViews=[],this._viewConfigs=[],this._viewConfigFactories={},this._listeners=[],this._pluginapi={_rootViewContext:this._rootViewContext.bind(this),_viewConfigFactory:this._viewConfigFactory.bind(this),_registeredUIView:function(e){return(0,o.sE)(t._uiViews,(function(n){return t.router.$id+"."+n.id===e}))},_registeredUIViews:function(){return t._uiViews},_activeViewConfigs:function(){return t._viewConfigs},_onSync:function(e){return t._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}}}}return e.normalizeUIViewTarget=function(e,t){void 0===t&&(t="");var n=t.split("@"),o=n[0]||"$default",r=(0,s.HD)(n[1])?n[1]:"^",a=/^(\^(?:\.\^)*)\.(.*$)/.exec(o);if(a&&(r=a[1],o=a[2]),"!"===o.charAt(0)&&(o=o.substr(1),r=""),/^(\^(?:\.\^)*)$/.exec(r)){var i=r.split(".").reduce((function(e,t){return e.parent}),e);r=i.name}else"."===r&&(r=e.name);return{uiViewName:o,uiViewContextAnchor:r}},e.prototype._rootViewContext=function(e){return this._rootContext=e||this._rootContext},e.prototype._viewConfigFactory=function(e,t){this._viewConfigFactories[e]=t},e.prototype.createViewConfig=function(e,t){var n=this._viewConfigFactories[t.$type];if(!n)throw new Error("ViewService: No view config factory registered for type "+t.$type);var o=n(e,t);return(0,s.kJ)(o)?o:[o]},e.prototype.deactivateViewConfig=function(e){a.g4.traceViewServiceEvent("<- Removing",e),(0,o.nA)(this._viewConfigs,e)},e.prototype.activateViewConfig=function(e){a.g4.traceViewServiceEvent("-> Registering",e),this._viewConfigs.push(e)},e.prototype.sync=function(){var t=this,n=this._uiViews.map((function(e){return[e.fqn,e]})).reduce(o.bb,{});function s(e){for(var t=e.viewDecl.$context,n=0;++n&&t.parent;)t=t.parent;return n}var i=(0,r.WA)((function(e,t,n,o){return t*(e(n)-e(o))})),d=this._uiViews.sort(i((function(e){var t=function(e){return e&&e.parent?t(e.parent)+1:1};return 1e4*e.fqn.split(".").length+t(e.creationContext)}),1)).map((function(o){var r=t._viewConfigs.filter(e.matches(n,o));return r.length>1&&r.sort(i(s,-1)),{uiView:o,viewConfig:r[0]}})),u=d.map((function(e){return e.viewConfig})),m=this._viewConfigs.filter((function(e){return!(0,o.d3)(u,e)})).map((function(e){return{uiView:void 0,viewConfig:e}}));d.forEach((function(e){-1!==t._uiViews.indexOf(e.uiView)&&e.uiView.configUpdated(e.viewConfig)}));var l=d.concat(m);this._listeners.forEach((function(e){return e(l)})),a.g4.traceViewSync(l)},e.prototype.registerUIView=function(e){a.g4.traceViewServiceUIViewEvent("-> Registering",e);var t=this._uiViews;return t.filter((function(t){return t.fqn===e.fqn&&t.$type===e.$type})).length&&a.g4.traceViewServiceUIViewEvent("!!!! duplicate uiView named:",e),t.push(e),this.sync(),function(){-1!==t.indexOf(e)?(a.g4.traceViewServiceUIViewEvent("<- Deregistering",e),(0,o.nA)(t)(e)):a.g4.traceViewServiceUIViewEvent("Tried removing non-registered uiView",e)}},e.prototype.available=function(){return this._uiViews.map((0,r.vg)("fqn"))},e.prototype.active=function(){return this._uiViews.filter((0,r.vg)("$config")).map((0,r.vg)("name"))},e.matches=function(e,t){return function(n){if(t.$type!==n.viewDecl.$type)return!1;var r=n.viewDecl,s=r.$uiViewName.split("."),a=t.fqn.split(".");if(!(0,o.fS)(s,a.slice(0-s.length)))return!1;var i=1-s.length||void 0,d=a.slice(0,i).join("."),u=e[d].creationContext;return r.$uiViewContextAnchor===(u&&u.name)}},e}()},"./node_modules/angular-aria/angular-aria.js":()=>{!function(e,t){"use strict";var n="ngAriaDisable",o=t.module("ngAria",["ng"]).info({angularVersion:"1.8.2"}).provider("$aria",(function(){var e={ariaHidden:!0,ariaChecked:!0,ariaReadonly:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaValue:!0,tabindex:!0,bindKeydown:!0,bindRoleForClick:!0};function o(t,o,r,a){return function(i,d,u){if(!u.hasOwnProperty(n)){var m=u.$normalize(o);!e[m]||s(d,r)||u[m]||i.$watch(u[t],(function(e){e=a?!e:!!e,d.attr(o,e)}))}}}this.config=function(n){e=t.extend(e,n)},this.$get=function(){return{config:function(t){return e[t]},$$watchExpr:o}}})),r=["BUTTON","A","INPUT","TEXTAREA","SELECT","DETAILS","SUMMARY"],s=function(e,t){if(-1!==t.indexOf(e[0].nodeName))return!0};o.directive("ngShow",["$aria",function(e){return e.$$watchExpr("ngShow","aria-hidden",[],!0)}]).directive("ngHide",["$aria",function(e){return e.$$watchExpr("ngHide","aria-hidden",[],!1)}]).directive("ngValue",["$aria",function(e){return e.$$watchExpr("ngValue","aria-checked",r,!1)}]).directive("ngChecked",["$aria",function(e){return e.$$watchExpr("ngChecked","aria-checked",r,!1)}]).directive("ngReadonly",["$aria",function(e){return e.$$watchExpr("ngReadonly","aria-readonly",r,!1)}]).directive("ngRequired",["$aria",function(e){return e.$$watchExpr("ngRequired","aria-required",r,!1)}]).directive("ngModel",["$aria",function(e){function t(t,n,o,a){return e.config(n)&&!o.attr(t)&&(a||!s(o,r))&&("hidden"!==o.attr("type")||"INPUT"!==o[0].nodeName)}function o(e,t){return!t.attr("role")&&t.attr("type")===e&&!s(t,r)}return{restrict:"A",require:"ngModel",priority:200,compile:function(r,s){if(!s.hasOwnProperty(n)){var a=function(e,t){var n=e.type,o=e.role;return"checkbox"===(n||o)||"menuitemcheckbox"===o?"checkbox":"radio"===(n||o)||"menuitemradio"===o?"radio":"range"===n||"progressbar"===o||"slider"===o?"range":""}(s);return{post:function(n,r,s,i){var d=t("tabindex","tabindex",r,!1);function u(){return i.$modelValue}switch(a){case"radio":case"checkbox":o(a,r)&&r.attr("role",a),t("aria-checked","ariaChecked",r,!1)&&n.$watch(u,"radio"===a?function(e){var t=s.value==i.$viewValue;r.attr("aria-checked",t)}:function(){r.attr("aria-checked",!i.$isEmpty(i.$viewValue))}),d&&r.attr("tabindex",0);break;case"range":if(o(a,r)&&r.attr("role","slider"),e.config("ariaValue")){var m=!r.attr("aria-valuemin")&&(s.hasOwnProperty("min")||s.hasOwnProperty("ngMin")),l=!r.attr("aria-valuemax")&&(s.hasOwnProperty("max")||s.hasOwnProperty("ngMax")),_=!r.attr("aria-valuenow");m&&s.$observe("min",(function(e){r.attr("aria-valuemin",e)})),l&&s.$observe("max",(function(e){r.attr("aria-valuemax",e)})),_&&n.$watch(u,(function(e){r.attr("aria-valuenow",e)}))}d&&r.attr("tabindex",0)}!s.hasOwnProperty("ngRequired")&&i.$validators.required&&t("aria-required","ariaRequired",r,!1)&&s.$observe("required",(function(){r.attr("aria-required",!!s.required)})),t("aria-invalid","ariaInvalid",r,!0)&&n.$watch((function(){return i.$invalid}),(function(e){r.attr("aria-invalid",!!e)}))}}}}}}]).directive("ngDisabled",["$aria",function(e){return e.$$watchExpr("ngDisabled","aria-disabled",r,!1)}]).directive("ngMessages",(function(){return{restrict:"A",require:"?ngMessages",link:function(e,t,o,r){o.hasOwnProperty(n)||t.attr("aria-live")||t.attr("aria-live","assertive")}}})).directive("ngClick",["$aria","$parse",function(e,t){return{restrict:"A",compile:function(o,a){if(!a.hasOwnProperty(n)){var i=t(a.ngClick);return function(t,n,o){s(n,r)||(e.config("bindRoleForClick")&&!n.attr("role")&&n.attr("role","button"),e.config("tabindex")&&!n.attr("tabindex")&&n.attr("tabindex",0),!e.config("bindKeydown")||o.ngKeydown||o.ngKeypress||o.ngKeyup||n.on("keydown",(function(e){var n=e.which||e.keyCode;13!==n&&32!==n||(-1!==r.indexOf(e.target.nodeName)||e.target.isContentEditable||e.preventDefault(),t.$apply((function(){i(t,{$event:e})})))})))}}}}}]).directive("ngDblclick",["$aria",function(e){return function(t,o,a){a.hasOwnProperty(n)||!e.config("tabindex")||o.attr("tabindex")||s(o,r)||o.attr("tabindex",0)}}])}(window,window.angular)},"./node_modules/angular-rateit/dist/ng-rateit.js":()=>{angular.module("ngRateIt",["ng"]).directive("ngRateIt",["$q",function(e){"use strict";return{scope:{ngModel:"=",min:"=?min",max:"=?max",step:"=?step",readOnly:"&?readOnly",pristine:"=?pristine",resetable:"&?resetable",starWidth:"=?starWidth",starHeight:"=?starHeight",canelWidth:"=?canelWidth",cancelHeight:"=?cancelHeight",rated:"&?rated",reset:"&?reset",beforeRated:"&?beforeRated",beforeReset:"&?beforeReset"},templateUrl:"ngRateIt/ng-rate-it.html",require:"ngModel",replace:!0,link:function(t,n,o){o.readOnly||(t.readOnly=function(){return!1}),o.resetable||(t.resetable=function(){return!0}),o.beforeRated||(t.beforeRated=function(){var t=e.defer();return t.resolve(),t.promise}),o.rated||(t.rated=function(){}),o.beforeReset||(t.beforeReset=function(){var t=e.defer();return t.resolve(),t.promise}),o.reset||(t.reset=function(){})},controller:"ngRateItController"}}]).controller("ngRateItController",["$scope","$timeout",function(e,t){"use strict";e.isTouch=!!window.hasOwnProperty("ontouchstart")||window.navigator.msMaxTouchPoints>0,e.orgValue=angular.copy(e.ngModel),e.min=e.min||0,e.max=e.max||5,e.step=e.step||.5,e.pristine=e.orgValue===e.ngModel,e.starWidth=e.starWidth||16,e.starPartWidth=e.starWidth*e.step,e.starHeight=e.starHeight||16,e.canelWidth=e.canelWidth||e.starWidth,e.cancelHeight=e.cancelHeight||e.starHeight;var n=e.max-e.min,o=n/e.step,r=e.$watch("ngModel",(function(){e.pristine=e.orgValue===e.ngModel})),s=function(e){return(e+1)/o*n};e.getStartParts=function(){return new Array(o)},e.getStarOffset=function(t){var n=1/e.step;return-e.starWidth/n*(t%n)},e.isSelected=function(t){return s(t)<=e.ngModel-e.min},e.removeRating=function(){e.resetable()&&!e.readOnly()&&e.beforeReset({rating:e.ngModel}).then((function(){e.ngModel=e.min,e.reset({rating:e.ngModel})}))},e.setValue=function(n){if(!e.readOnly()){var o=angular.copy(e.min+s(n));e.beforeRated({rating:o}).then((function(){e.ngModel=o,t((function(){e.rated({rating:e.ngModel})}))}))}},e.$on("$destroy",(function(){r()}))}]).run(["$templateCache",function(e){"use strict";e.put("ngRateIt/ng-rate-it.html",'<div class="ngrateiti needsclick" ng-class="{\'ngrateit-readonly\': readOnly()}"><a ng-if="!readOnly() && resetable()"ng-click="removeRating()"class="ngrateit-reset ngrateit-star needsclick"ng-style="{\'width\': canelWidth+\'px\', \'height\':cancelHeight+\'px\'}"></a><div ng-if="!hide" id="origin" class="ngrateit-rating needsclick" ng-class="{\'ngrateit-hashover\':!isTouch}"><span class="ngrateit-star ngrateit-bg-star needsclick"ng-repeat="i in getStartParts() track by $index" ng-class="{\'ngrateit-selected\': isSelected($index) }"ng-click="setValue($index)"ng-style="{\'width\': starPartWidth+\'px\', \'height\':starHeight+\'px\', \'background-position\': getStarOffset($index)+\'px 0\'}"></span></div></div>')}])},"./src/js/index.module.js":(e,t,n)=>{"use strict";n("./node_modules/angular-animate/index.js"),n("./node_modules/angular-aria/index.js"),n("./node_modules/angular-messages/index.js"),n("./node_modules/angular-material/index.js"),n("./node_modules/angular-resource/index.js"),n("./node_modules/angular-sanitize/index.js"),n("./node_modules/ng-csv/build/ng-csv.min.js"),n("./node_modules/ng-embed/src/ng-embed.js");var o=n("./node_modules/@uirouter/angularjs/lib-esm/index.js"),r=(n("./node_modules/angular-local-storage/index.js"),n("./node_modules/angular-rateit/dist/ng-rateit.js"),n("./node_modules/@flowjs/ng-flow/dist/ng-flow.js"),n("./node_modules/emojionearea/dist/emojionearea.js"),n("./node_modules/jquery-textcomplete/dist/jquery.textcomplete.js"),n("./node_modules/moment/moment.js")),s=n.n(r),a=n("./node_modules/lodash.map/index.js"),i=n.n(a);function d(e,t,n,o,r,a,d,u,m,l){const _=this;function c(n){a.updateStorage(u,{up:n}).then((o=>{var r;e.layout=o,r=!0===n?"show":"hide",t.parent.postMessage({cmd:r},"*"),l((()=>{e.$apply()}))})).catch(a.onStorageError)}_.$onInit=function(){console.debug("IndexController::onInit() VISITOR",e.visitor),e.status="init";const o=e.settings.color,s=e.settings.textColor,i=e.settings.textButtonColor||e.settings.textColor,d=e.settings.color_button,l=e.settings.backgroundColor,_=Math.max(document.documentElement.clientHeight,window.innerHeight||0),h=document.documentElement.clientWidth;document.documentElement.style.setProperty("--xc-ws-div-color",o),document.documentElement.style.setProperty("--xc-ws-text-color",s),document.documentElement.style.setProperty("--xc-ws-text-button-color",i),document.documentElement.style.setProperty("--xc-ws-button-color",d),document.documentElement.style.setProperty("--xc-ws-background-color",l),document.documentElement.style.setProperty("--xc-ws-client-height",_),document.documentElement.style.setProperty("--xc-ws-client-width",h);let f=!1;const p=t=>null!==t&&t[e.location]||{},M=a.getItem(m).then(p),y=a.getItem(u).then(p);r.all([M,y]).then((r=>{let[a,i]=r;e.visitor=a,e.layout=i,e.visitor.interaction&&e.layout.up?f=!0:e.layout.up=!0,"bottom_right"===e.settings.alignment&&c(f),n.go(function(){var t,n;const o=e.settings.online,r=!(null==e||null===(t=e.visitor)||void 0===t||null===(n=t.interaction)||void 0===n||!n.id),s=Number(e.settings.maxInteractions)&&Number(e.settings.openedInteractions)>=Number(e.settings.maxInteractions);return!!(r||!s&&o)}()?"app.online":"app.offline",null,{location:"replace"});let d="";d=e.settings.online||!e.settings.hideWhenOffline?"init":"offline",t.parent.postMessage({cmd:d,div_color:o,text_color:s,client_height:_,client_width:h},"*");const u=document.createElement("style");document.head.appendChild(u),u.sheet.insertRule(".mdi-send:before {color:"+e.settings.color+"!important}")})).catch(a.onStorageError)},_.close=function(){const t=e.visitor.interaction;if(t&&t.id){const r=o.confirm().parent(angular.element(document.querySelector("#chat-app"))).clickOutsideToClose(!0).title(e.settings.closingQuestion||"Do you want to close the interaction?").ok("Ok").cancel("Cancel");o.show(r).then((function(){return d.chatInteraction.customUpdate({id:t.id,closed:!0,closeReason:"contact"}).$promise})).then((function(){n.go("app.closing",null,{location:"replace"})})).catch((function(e){console.error("keep open",e)}))}},_.toggle=c,_.download=function(){const t=r.defer(),n=e.visitor.interaction;return n&&n.id&&d.chatInteraction.getMessages({intid:n.id,includeAll:!0,forceDownload:!0}).$promise.then((function(n){t.resolve(i()(n.rows.slice(1),(function(t){let n;if("in"===t.direction&&(n=e.settings.customerAlias||e.visitor.from||"Visitor"+t.ContactId),"out"===t.direction)switch(e.settings.agentIdentifier){case"website_alias":n=t.UserId?e.settings.agentAlias+t.UserId:"System";break;case"agent_alias":n=t.UserId?t.User.alias||t.User.fullname:"System";break;case"agent_fullname":n=t.UserId?t.User.fullname:"System";break;default:n=t.UserId?e.settings.agentAlias+t.UserId:"System"}return{sender:n,message:t.body,createdAt:s()(t.createdAt).format("MM/DD/YYYY HH:mm:ss")}})))})).catch((function(e){console.error(e)})),t.promise},_.getHeaderShape=function(){return"rounded"===e.settings.header_shape?"15px":"0px"};const h={online:["online","chat","waiting","closing","unmanaged"],offline:["offline"]};Object.defineProperty(e,"actualTitle",{get(){let t=e.settings.defaultTitle;return h.online.includes(e.status)?t=e.settings.header_online:h.offline.includes(e.status)&&(t=e.settings.header_offline),t}}),window.addEventListener("message",(function(e){"show"===e.data.evt?c(!0):"hide"===e.data.evt&&c(!1)}),!1)}d.$inject=["$rootScope","$window","$state","$mdDialog","$q","RemoteStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR","$timeout"];var u=n("./node_modules/lodash.forin/index.js"),m=n.n(u),l=n("./node_modules/lodash.isnil/index.js"),_=n.n(l),c=n("./src/js/chat/chat.tpl.html"),h=n("./src/js/closing/closing.tpl.html"),f=n("./src/js/offline/offline.tpl.html"),p=n("./src/js/online/online.tpl.html"),M=n("./src/js/unmanaged/unmanaged.tpl.html"),y=n("./src/js/waiting/waiting.tpl.html");function L(e,t){const n=t.search();e.settings={cursor:"pointer",hide:!0},m()(n,(function(t,n){""===t||_()(t)||("true"===t&&(t=!0),"false"===t&&(t=!1),e.settings[n]=t)})),e.location=e.settings.location,e.layout={up:!1},e.visitor={}}function g(e,t,n,o,r){t.html5Mode(!0),n.defaults.headers.get||(n.defaults.headers.get={}),n.defaults.headers.get["If-Modified-Since"]="Mon, 26 Jul 1997 05:00:00 GMT",n.defaults.headers.get["Cache-Control"]="no-cache",n.defaults.headers.get.Pragma="no-cache",o.setPrefix(r),e.state("app",{abstract:!0}).state("app.waiting",{url:"/waiting",templateUrl:y,controller:"WaitingController as vm"}).state("app.online",{url:"/online",templateUrl:p,controller:"OnlineController as vm"}).state("app.offline",{url:"/offline",templateUrl:f,controller:"OfflineController as vm"}).state("app.chat",{url:"/chat",templateUrl:c,controller:"ChatController as vm"}).state("app.unmanaged",{url:"/unmanaged",templateUrl:M,controller:"UnmanagedController as vm"}).state("app.closing",{url:"/closing",templateUrl:h,controller:"ClosingController as vm"})}g.$inject=["$stateProvider","$locationProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX"],L.$inject=["$rootScope","$location"];var Y=n("./node_modules/lodash.merge/index.js"),v=n.n(Y);function k(e,t,n,o,r,s,a,i){const d=this;function u(t){return function(o){d.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").position("top");n.show(r)}}function m(){e.loading=!1}function l(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function _(){d.form={},d.upColor=null,d.downColor=null,d.userForm.$setPristine(),d.userForm.$setUntouched(),delete e.visitor.interaction,e.enableDownload=!1}d.$onInit=function(){console.debug("ClosingController::onInit() VISITOR",e.visitor),e.status="closing",r.all([s.removeItem(a).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(s.onStorageError),s.removeItem(i).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(s.onStorageError)]).then((()=>e.loading=!1))},d.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.close(v()({id:e.visitor.interaction.id,ratingType:e.settings.ratingType,customer:e.settings.customerAlias||e.visitor.from},d.form)).$promise.then((function(){delete d.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(_).then(l).catch(u("submit")).finally(m):(m(),u("submit"))},d.skip=function(){_(),l()},d.form={},d.errors={}}function j(e,t){const n={id:"@id",token:e.settings.token},o={};return o.baseUrl=e.settings.remote+"/api/",o.chatWebsite=t(o.baseUrl+"chat/websites/:id",n,{notify:{method:"POST",url:o.baseUrl+"chat/websites/:id/notify"},offline:{method:"POST",url:o.baseUrl+"chat/websites/:id/offline"},getFields:{method:"GET",url:o.baseUrl+"chat/websites/:id/fields"}}),o.chatInteraction=t(o.baseUrl+"chat/interactions/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/interactions/:id"},customUpdate:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/custom_update"},close:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/close"},getMessages:{method:"GET",url:o.baseUrl+"chat/interactions/:intid/my_messages"},uploadAttachment:{method:"POST",url:o.baseUrl+"chat/interactions/:id/attachment_upload",headers:{"Content-Type":void 0},transformRequest:angular.identity},downloadAttachment:{method:"GET",url:o.baseUrl+"chat/interactions/:id/attachment_download"},abandon:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/abandon"}}),o.chatMessage=t(o.baseUrl+"chat/messages/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/messages/:id"}}),o}k.$inject=["$rootScope","$state","$mdToast","api","$q","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"],j.$inject=["$rootScope","$resource"];var w=n("./node_modules/lodash.find/index.js"),b=n.n(w),D=n("./node_modules/lodash.values/index.js"),T=n.n(D),S=n("./node_modules/jquery/dist/jquery.js");function H(e,t,n,r,s,a,i,d,u,m,l,c){const h=this;let f,p,M,y;function L(){o.$q.all([m.removeItem(l).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(m.onStorageError),m.removeItem(c).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(m.onStorageError)]).then((()=>{t.settings.online?a.go("app.online",null,{location:"replace"}):a.go("app.offline",null,{location:"replace"})}))}function g(){n((function(){const e=s[0].getElementsByClassName("chat-messages")[0];e&&(e.scrollTop=e.scrollHeight)}))}function Y(){h.errors={},t.$emit("hide");const e=d.simple().textContent("FILE TOO BIG: The max allowed size is 16MB").toastClass("md-warning-toast size "+t.settings.header_shape).parent(angular.element(document.querySelector("#chat-toolbar")));d.show(e)}function k(e){return function(n){var o,r,s;403===(null===(o=n.data)||void 0===o?void 0:o.code)&&"OutOfInterval"===(null===(r=n.data)||void 0===r||null===(s=r.details)||void 0===s?void 0:s.type)?(t.settings.online=!1,t.settings.outOfInterval=!0,a.go("app.offline",null,{location:"replace"})):(h.errors[e]=n.data,g())}}function j(e){u.chatWebsite.notify(e).$promise.then((function(e){h.errors={};let n=!1;_()(t.visitor.interaction)&&(t.visitor.interaction={id:e.interaction.id},n=!0),t.visitor.interactionStarted||(t.visitor.interactionStarted=!0,n=!0),n&&m.updateStorage(l,t.visitor).then((e=>{t.visitor=e})).catch(m.onStorageError),f[0].emojioneArea.setText(""),g()})).catch(k("chatMessageError"))}function w(){t.visitor&&t.visitor.interaction&&t.visitor.interaction.id&&u.chatInteraction.get({id:t.visitor.interaction.id}).$promise.then((function(e){delete h.errors.getInteraction,e.closed&&(t.visitor.interaction.closed=!0,m.updateStorage(l,t.visitor).then((e=>{t.visitor=e})).catch(m.onStorageError),"unmanaged"===e.disposition?a.go("app.unmanaged",null,{location:"replace"}):a.go("app.closing",null,{location:"replace"}))})).catch((function(e){switch(e.status){case 403:a.go("app.closing",null,{location:"replace"});break;case 404:L();break;case 405:a.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}function D(e){const n=f[0].emojioneArea.getText();e&&13===e.keyCode&&e.shiftKey||e&&13!==e.keyCode||""!==n&&j(v()({body:n},t.visitor))}function H(){var e,n;null!=t&&null!==(e=t.visitor)&&void 0!==e&&null!==(n=e.interaction)&&void 0!==n&&n.id&&u.chatInteraction.getMessages({intid:t.visitor.interaction.id,includeAgent:!0,id:y||void 0}).$promise.then((function(e){if(delete h.errors.interaction,e.count){let o=!1,r=0;for(r=0,o=!1;r<e.rows.length;r++){const s=b()(t.messages,{id:e.rows[r].id});s?e.rows[r].read&&(s.read=!0):(o=!0,t.messages.push(e.rows[r])),"out"!==e.rows[r].direction||e.rows[r].read||(n=e.rows[r].id,u.chatMessage.update({id:n,read:!0}).$promise.catch((function(e){console.error(e)})))}o&&g(),e.rows[r-1].read&&(y=e.rows[r-1].id),y&&!t.visitor.interactionStarted&&m.updateStorage(l,{...t.visitor,interactionStarted:!0}).then((e=>{t.visitor=e}))}var n})).catch((function(e){switch(e.status){case 403:a.go("app.closing",null,{location:"replace"});break;case 405:a.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}h.errors={},t.messages=[],h.emojiOptions={watchEmbedData:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank"},h.ngFlowOptions={allowDuplicateUploads:!0},h.$onInit=function(){console.debug("ChatController::onInit() VISITOR",t.visitor),t.status="chat",t.loading=!1,t.settings.showMenu=!0,h.replyMessage="",t.visitor.interaction&&t.visitor.interaction.closed?L():(w(),p=r(H,2e3),M=r(w,3e3)),f=S("#emojionearea").emojioneArea({placeholder:t.settings.placeholderMessage||"Type a message",events:{keyup:function(e,t){D(t)},ready:function(){this.setFocus()}}})},h.reply=D,h.reply_button=function(){const e=f[0].emojioneArea.getText();""!==e&&(j(v()({body:e},t.visitor)),f[0].emojioneArea.setFocus())},h.fileAdded=function(e){if(e.size>16777216)return void Y();const n=new FormData;n.append("file",e.file),i.post(t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_upload?token="+t.settings.token,n,{transformRequest:angular.identity,headers:{"Content-Type":void 0}}).then((function(e){(e=e.data).id?(h.errors={},j(v()({body:'<a href="'+t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_download?attachId="+e.id+"&token="+t.settings.token+'" target="_blank">'+e.name+"</a>",AttachmentId:e.id},t.visitor))):k("sendAttachment")}),k("sendAttachment"))},h.handleSizeError=Y,e.$on("$destroy",(function(){r.cancel(p),r.cancel(M),p=null,M=null})),t.$on("$download",(function(e,n){n&&n(T()(t.messages))}))}H.$inject=["$scope","$rootScope","$timeout","$interval","$document","$state","$http","$mdToast","api","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"];var x=n("./node_modules/lodash.random/index.js"),E=n.n(x),P=n("./node_modules/lodash.clonedeep/index.js"),O=n.n(P),$=n("./node_modules/json-form-data/src/jsonToFormData.js"),A=n.n($);function R(e,t,n,o,r,s,a){const i=this;let d=null,u=null;t.typeField="";const m={showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}};function l(){delete i.errors.submit,t.$emit("hide"),i.fields=O()(u),i.form={},i.userForm.$setPristine(),i.userForm.$setUntouched();const e=r.simple().textContent(t.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast size "+t.settings.header_shape).parent(angular.element(document.querySelector("#chat-toolbar")));r.show(e)}i.trustAsHtml=function(e){return n.trustAsHtml(e)},i.initUploadButton=function(n){const o=i.fields[n],a=s.find(".upload-item");if(a.length){const n=angular.element(a[0].querySelector(".upload-button")),s=angular.element(a[0].querySelector("input[type=file]")),d=n.find("label");d.length&&d.css("display","none"),n.on("click",(()=>{d.css("display","none"),"function"==typeof s.trigger?s.trigger("click"):s[0].click()})),s.on("change",(n=>{e.$apply((function(){"string"==typeof o.props.error&&(o.props.error=null);const e=Array.from(n.target.files),s=1048576*o.config.size;e.some((e=>e.size>=s))?(o.options=[],o.props.error=o.config.sizeErrMessage,function(e){i.errors={},t.$emit("hide");const n=r.simple().textContent("FILE TOO BIG: The max allowed size is "+e+"MB").toastClass("md-warning-toast size "+t.settings.header_shape).parent(angular.element(document.querySelector("#chat-toolbar")));r.show(n)}(o.config.size)):o.options=e.map((e=>{const{name:t,size:n,type:o}=e;return{name:t,size:n,type:o,file:e}})),i.form[o.props.title]=o.options}))}))}},i.removeFileItem=function(e,t){e.options.splice(t,1),i.form[e.props.title]=e.options},i.setupFileInput=function(e){console.log("form item setup",e);const t=s.find(".upload-item"),n=angular.element(t[0].querySelector("input[type=file]")),{multipleUpload:o,accept:r}=e.config;o&&n.attr("multiple","multiple"),r&&n[0].setAttribute("accept",r)},i.makeFileOptionsVisible=function(){const e=Array.from(s.find(".filename-label")),t=e[e.length-1];t&&t.scrollIntoView&&t.scrollIntoView()},i.$onInit=function(){console.debug("OfflineController::onInit() VISITOR",t.visitor),t.status="offline",i.visitor={id:t.settings.id,mapKeyOffline:"firstName",from:"Anonymous"+E()(1,1e6)},t.settings.showMenu=!1,t.loading=!1,o.chatWebsite.getFields({id:t.settings.id,online:!1}).$promise.then((function(e){e.count&&(d=e.fromKey,u=O()(e.rows),i.fields=O()(u))})).then((function(){for(let e=0;e<i.fields.length;e++){const n=i.fields[e];if(t.typeField+=n.type,void 0!==n.props&&n.props.helpText){const t=RegExp.prototype.test.bind(/(<([^>]+)>)/i);i.checkHTML[e]=t(n.props.helpText)}}})).catch((function(e){console.error(e)})).finally((function(){if(t.settings.outOfInterval){t.settings.outOfInterval=!1;const e=r.simple().textContent("Sorry, your message was not sent.\nWe are offline at the moment.").hideDelay(5e3).toastClass("md-warning-toast").parent(angular.element(document.querySelector("#chat-toolbar")));r.show(e)}}))},i.submit=function(){t.loading=!0;const e={...i.form};for(let n=0;n<i.fields.length;n++){const o=i.fields[n];o.props&&void 0!==e[o.props.title]&&(_()(o.cmField)||(i.visitor[o.cmField]=Array.isArray(e[o.props.title])?e[o.props.title].join():e[o.props.title]),n===d&&(_()(t.settings.mapKeyOffline)||(i.visitor.mapKeyOffline=t.settings.mapKeyOffline,i.visitor.from=Array.isArray(e[o.props.title])?e[o.props.title].join():e[o.props.title])),"upload"===o.type&&(e[o.props.title]=e[o.props.title].map((e=>e.file))))}const n=Array.isArray(i.fields)?i.fields.filter((e=>"upload"===e.type)):[],s=v()({body:e},i.visitor),u=null!=e&&n.length>0,c=null!==e&&"{}"!==JSON.stringify(e);var h,f;(u?(h=s,a({url:`${o.baseUrl}chat/websites/${h.id}/offline`,headers:{"Content-Type":void 0},data:A()(h,{...m,initialFormData:new FormData}),method:"POST"})):c?o.chatWebsite.offline(s).$promise:Promise.reject("INVALID_FORM")).then(l).catch((f="submit",function(e){const n=r.simple().textContent(t.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast size "+t.settings.header_shape).parent(angular.element(document.querySelector("#chat-toolbar")));r.show(n),i.errors[f]=e.data})).finally((()=>{i.form.invalid||(i.form={}),t.loading=!1}))},i.toggle=function(e,t){i.form[e]||(i.form[e]=[]);const n=i.form[e].indexOf(t);n>-1?i.form[e].splice(n,1):i.form[e].push(t)},i.exists=function(e,t){return i.form[e]||(i.form[e]=[]),i.form[e].indexOf(t)>-1},i.checkHTML=[],i.form={},i.errors={},i.userForm={}}function F(e,t,n,o,r,s){const a=this;let i=null;function d(){e.settings.online?e.settings.enableCustomerWriting?t.go("app.chat",null,{location:"replace"}):t.go("app.waiting",null,{location:"replace"}):(e.settings.outOfInterval=!0,t.go("app.offline",null,{location:"replace"}))}function u(){return e.visitor={id:e.settings.id,mapKey:"firstName",from:"Anonymous"+E()(1,1e6)},e.settings.showMenu=!1,r.updateStorage(s,e.visitor).then((t=>(e.visitor=t,o.chatWebsite.getFields({id:e.settings.id,online:!0}).$promise.then((function(e){e.count&&(i=e.fromKey,a.fields=e.rows)})).then((function(){for(let e=0;e<a.fields.length;e++){const t=a.fields[e];if(t.props.helpText){const n=RegExp.prototype.test.bind(/(<([^>]+)>)/i);a.checkHTML[e]=n(t.props.helpText)}}})).catch((function(e){console.error(e)}))))).catch(r.onStorageError)}a.checkHTML=[],a.form={},a.errors={},a.userForm={},a.disableItem=!1,a.trustAsHtml=function(e){return n.trustAsHtml(e)},a.$onInit=function(){if(console.debug("OnlineController::onInit() VISITOR",e.visitor),e.status="online",e.visitor&&e.visitor.interaction)if(e.visitor.interaction.id)if(!0===e.visitor.interactionStarted)t.go("app.chat",null,{location:"replace"});else{var n,r;const t=e.visitor.interaction.id,s=null==e||null===(n=e.visitor)||void 0===n||null===(r=n.message)||void 0===r?void 0:r.id;if(s){const e={id:t,channel:"chat",interaction:{id:t},message:{id:s},disposition:"abandoned",closed:!0,closeReason:"contact"};o.chatInteraction.abandon(e).$promise.finally((()=>u()))}}else t.go("app.waiting",null,{location:"replace"});else u()},a.submit=function(){let t="New chat request \n";for(let n=0;n<a.fields.length;n++){const o=a.fields[n];o.props&&void 0!==a.form[o.props.title]&&(_()(o.variable)||(e.visitor[o.variable]=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title]),_()(o.cmField)||(e.visitor[o.cmField]=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title]),n===i&&(_()(e.settings.mapKey)||(e.visitor.mapKey=e.settings.mapKey,e.visitor.from=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title])),a.form[o.props.title]&&(t+=o.props.title+": "+a.form[o.props.title]+"\n"))}var n;n=v()({body:t,referer:e.settings.referer,customerIp:e.settings.customerIp},e.visitor),a.disableItem=!0,o.chatWebsite.notify(n).$promise.then((function(t){delete a.errors.chatMessageError,e.visitor.message={id:t.message.id},e.visitor.interaction={id:t.interaction.id},r.updateStorage(s,e.visitor).then((t=>{e.visitor=t})).catch(r.onStorageError),a.disableItem=!1,d()})).catch((function(t){var n,o,r;a.disableItem=!1,403===(null===(n=t.data)||void 0===n?void 0:n.code)&&"OutOfInterval"===(null===(o=t.data)||void 0===o||null===(r=o.details)||void 0===r?void 0:r.type)?(e.settings.online=!1,d()):console.error(t)}))},a.toggle=function(e,t){a.form[e]||(a.form[e]=[]);const n=a.form[e].indexOf(t);n>-1?a.form[e].splice(n,1):a.form[e].push(t)},a.exists=function(e,t){return a.form[e]||(a.form[e]=[]),a.form[e].indexOf(t)>-1}}function W(e,t,n,o,r,s,a,i){const d=this;function u(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function m(){d.form={},d.upColor=null,d.downColor=null,d.userForm.$setPristine(),d.userForm.$setUntouched(),e.visitor={},e.enableDownload=!1,e.$emit("hide")}function l(t){return function(o){d.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(r)}}function _(){e.loading=!1}d.form={},d.errors={},d.$onInit=function(){console.debug("UnmanagedController::onInit() VISITOR",e.visitor),e.status="unmanaged",r.all([s.removeItem(a).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(s.onStorageError),s.removeItem(i).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(s.onStorageError)]).then((()=>e.loading=!1))},d.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.customUpdate({id:e.visitor.interaction.id,note:d.form.note}).$promise.then((function(){delete d.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(m).then(u).catch(l("submit")).finally(_):(_(),l("submit"))},d.skip=function(){m(),u()}}function C(e,t,n,o,r,s,a){let i=null;function d(){let t={},n=!1;r.chatInteraction.get({id:e.visitor.interaction.id}).$promise.then((function(n){return t=n,r.chatInteraction.getMessages({intid:e.visitor.interaction.id}).$promise})).then((function(r){n=r.rows.length>1,t.closed?(e.visitor.interaction.closed=!0,s.updateStorage(a,e.visitor).then((n=>{e.visitor=n,"unmanaged"===t.disposition&&o.go("app.unmanaged",null,{location:"replace"})})).catch(s.onStorageError)):(t.UserId||n)&&(t.UserId&&(e.visitor.interaction.UserId=t.UserId),s.updateStorage(a,{...e.visitor,interactionStarted:!0}).then((t=>{e.visitor=t,o.go("app.chat",null,{location:"replace"})})).catch(s.onStorageError))})).catch((function(e){switch(e.status){case 403:o.go("app.closing",null,{location:"replace"});break;case 405:o.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}this.$onInit=function(){console.debug("WaitingController::onInit() VISITOR",e.visitor),e.status="waiting",e.visitor&&e.visitor.interaction&&e.visitor.interaction.id&&(i=n(d,3e3))},t.$on("$destroy",(function(){n.cancel(i)}))}function I(e,t){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.add(e)}function z(e,t,n){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return n}R.$inject=["$scope","$rootScope","$sce","api","$mdToast","$element","$http"],F.$inject=["$rootScope","$state","$sce","api","RemoteStorageService","STORAGE_VISITOR"],W.$inject=["$rootScope","$state","$mdToast","api","$q","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"],C.$inject=["$rootScope","$scope","$interval","$state","api","RemoteStorageService","STORAGE_VISITOR"];var J=new WeakSet,V=new WeakSet;class N{constructor(e,t,n){I(this,V),I(this,J),this.remoteAddress=new URL(t.settings.address).origin,this.location=t.settings.location,this.$q=n,this.$window=e}setItem(e,t){const n="setItem";return this.$q((o=>{z(this,J,U).call(this,n,e,(()=>{o()})),this.$window.parent.postMessage({action:n,key:e,value:t},this.remoteAddress)}))}getItem(e){const t="getItem";return this.$q((n=>{z(this,J,U).call(this,t,e,((e,t)=>{n(t)})),this.$window.parent.postMessage({action:t,key:e},this.remoteAddress)}))}removeItem(e){const t="removeItem";return this.$q((n=>{z(this,J,U).call(this,t,e,(()=>{n()})),this.$window.parent.postMessage({action:t,key:e},this.remoteAddress)}))}updateStorage(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this.getItem(e).then((o=>{const r=z(this,V,q).call(this,o)||{};return n?delete r[this.location]:r[this.location]=t,this.setItem(e,r).then((()=>r[this.location]))}))}onStorageError(e){console.error("Storage Error",e)}}function U(e,t,n){const o=r=>{const s=`${e}Result`;if(r.origin===this.remoteAddress&&t===r.data.key&&s===r.data.action){const{action:e,item:s}=r.data;switch(console.debug(`[Key = ${t}] Action "${e}" event from parent`,r),e){case"setItemResult":n(t);break;case"getItemResult":n(t,s);break;case"removeItemResult":n(t);break;default:console.debug("Unsupported action",e)}this.$window.removeEventListener("message",o,!1)}};this.$window.addEventListener("message",o,!1)}function q(e){let t=e;if("string"==typeof t)try{t=JSON.parse(e)}catch(n){console.warn(`Could not parse "${e}"`,n),t=e}return t}function G(e){return function(t){return e.trustAsHtml(t)}}N.$inject=["$window","$rootScope","$q"],G.$inject=["$sce"],angular.module("motion-chat",["ngAnimate","ngAria","ngMessages","ngMaterial","ngResource","ngSanitize","ngCsv","ngEmbed","ui.router","LocalStorageModule","ngRateIt","flow"]).filter("toTrusted",G).constant("STORAGE_PREFIX","motion_chat").constant("STORAGE_VISITOR","visitor").constant("STORAGE_LAYOUT","layout").service("RemoteStorageService",N).directive("ngEnter",(function(){return function(e,t,n){t.bind("keydown keypress",(function(t){13===t.which&&(e.$apply((function(){e.$eval(n.ngEnter)})),t.preventDefault())}))}})).directive("ngPrint",(function(){return{link:function(e,t){t.on("click",(function(){e.messages.length>0&&function(e){const t=document.createElement("div"),n=e.visitor,o=e.settings;let r;for(let a=0;a<e.messages.length;a++){const i=e.messages[a];let d="Sender: ";const u="Message: "+i.body,m="Sent At: "+s()(i.createdAt).format("YYYY-MM-DD HH:mm:ss");if(0!==a){switch(e.settings.agentIdentifier){case"website_alias":d+="out"===i.direction?i.UserId?o.agentAlias+i.UserId:"System":o.customerAlias||n.from||"Visitor"+i.ContactId;break;case"agent_alias":d+="out"===i.direction?i.UserId?i.User.alias||i.User.fullname:"System":o.customerAlias||n.from||"Visitor"+i.ContactId;break;case"agent_fullname":d+="out"===i.direction?i.UserId?i.User.fullname:"System":o.customerAlias||n.from||"Visitor"+i.ContactId;break;default:d+="out"===i.direction?i.UserId?(o.agentAlias||"Agent")+i.UserId:"System":o.customerAlias||n.from||"Visitor"+i.ContactId}t.appendChild(document.createTextNode(d)),t.appendChild(document.createElement("br")),t.appendChild(document.createTextNode(u)),t.appendChild(document.createElement("br")),t.appendChild(document.createTextNode(m)),t.appendChild(document.createElement("br")),t.appendChild(document.createElement("br"))}else r=i.createdAt}const a=window.open();a.document.write("<html><head><title>"+document.title+"</title>"),a.document.write("</head><body >"),a.document.write("<h3> Website: "+o.referer+"</h3>"),a.document.write("<h3> Start Time: "+s()(r).format("YYYY-MM-DD HH:mm:ss")+"</h3>"),a.document.write("<h3> Print Time: "+s()().format("YYYY-MM-DD HH:mm:ss")+"</h3>"),a.document.write(t.innerHTML),a.document.write("</body></html>"),a.document.close(),a.focus(),a.print(),a.close()}(e)}))},restrict:"A"}})).controller("ChatController",H).controller("ClosingController",k).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("IndexController",d).factory("api",j).config(g).run(L).controller("OfflineController",R).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("OnlineController",F).controller("UnmanagedController",W).controller("WaitingController",C)},"./node_modules/expose-loader/dist/runtime/getGlobalThis.js":(e,t,n)=>{"use strict";e.exports=function(){if("object"==typeof globalThis)return globalThis;var e;try{e=this||new Function("return this")()}catch(e){if("object"==typeof window)return window;if("object"==typeof self)return self;if(void 0!==n.g)return n.g}return e}()},"./node_modules/json-form-data/src/jsonToFormData.js":function(e,t){var n,o;(o=this)||(o={}),void 0===(n=function(){return o.jsonToFormData=function(){function e(e){return"[object Array]"==={}.toString.call(e)}function t(t){return!(e(t)||"object"!=typeof t||!t||t instanceof Blob||t instanceof Date)}function n(){return"function"==typeof FormData}function o(){if(n())return new FormData}function r(n,o,s,a){var i=0;for(var d in n){if(n.hasOwnProperty(d)){var u=a||d,m=o.mapping(n[d]);if(a&&t(n)&&(u=a+"["+d+"]"),a&&e(n)&&(u=e(m)||o.showLeafArrayIndexes?a+"["+i+"]":a+"[]"),e(m)||t(m))r(m,o,s,u);else if(m instanceof FileList)for(var l=0;l<m.length;l++)s.append(u+"["+l+"]",m.item(l));else m instanceof Blob?s.append(u,m,m.name):m instanceof Date?s.append(u,m.toISOString()):(null===m&&o.includeNullValues||null!==m)&&void 0!==m&&s.append(u,m)}i++}return s}return function(e,t){if(t&&t.initialFormData){if("function"!=typeof t.initialFormData.append)throw"initialFormData must have an append function."}else if(!n())throw"This environment does not have global form data. options.initialFormData must be specified.";var s=[{initialFormData:o(),showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}},t||{}].reduce((function(e,t){return Object.keys(t).forEach((function(n){e[n]=t[n]})),e}),{});return r(e,s,s.initialFormData)}}()}.apply(t,[]))||(e.exports=n)},"./node_modules/moment/locale/af.js":function(e,t,n){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-dz.js":function(e,t,n){!function(e){"use strict";var t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(o,r,s,a){var i=t(o),d=n[e][t(o)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,o)}},r=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-dz",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-kw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ly.js":function(e,t,n){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,r,s,a){var i=n(t),d=o[e][n(t)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,t)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ma.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-sa.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-tn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(t,n,s,a){var i=o(t),d=r[e][o(t)];return 2===i&&(d=d[n?0:1]),d.replace(/%d/i,t)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/az.js":function(e,t,n){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/be.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",w:"седмица",ww:"%d седмици",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn-bd.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn-bd",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t?e<4?e:e+12:"ভোর"===t||"সকাল"===t?e:"দুপুর"===t?e>=3?e:e+12:"বিকাল"===t||"সন্ধ্যা"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"রাত":e<6?"ভোর":e<12?"সকাল":e<15?"দুপুর":e<18?"বিকাল":e<20?"সন্ধ্যা":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bo.js":function(e,t,n){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/br.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}function n(e){return e>9?n(e%10):e}var o=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],r=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,s=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];e.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:s,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:s,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,t,n){return e<12?"a.m.":"g.m."}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bs.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cs.js":function(e,t,n){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),o=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function s(e){return e>1&&e<5&&1!=~~(e/10)}function a(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"pár sekund":"pár sekundami";case"ss":return t||o?r+(s(e)?"sekundy":"sekund"):r+"sekundami";case"m":return t?"minuta":o?"minutu":"minutou";case"mm":return t||o?r+(s(e)?"minuty":"minut"):r+"minutami";case"h":return t?"hodina":o?"hodinu":"hodinou";case"hh":return t||o?r+(s(e)?"hodiny":"hodin"):r+"hodinami";case"d":return t||o?"den":"dnem";case"dd":return t||o?r+(s(e)?"dny":"dní"):r+"dny";case"M":return t||o?"měsíc":"měsícem";case"MM":return t||o?r+(s(e)?"měsíce":"měsíců"):r+"měsíci";case"y":return t||o?"rok":"rokem";case"yy":return t||o?r+(s(e)?"roky":"let"):r+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cy.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/da.js":function(e,t,n){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-at.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-ch.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/dv.js":function(e,t,n){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/el.js":function(e,t,n){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,o=this._calendarEl[e],r=t&&t.hours();return n=o,("undefined"!=typeof Function&&n instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(o=o.apply(t)),o.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-au.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-gb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ie.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-il.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-in.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-nz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-sg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-do.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-mx.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-us.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/et.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?r[n][2]?r[n][2]:r[n][1]:o?r[n][0]:r[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eu.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fa.js":function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fi.js":function(e,t,n){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function o(e,o,r,s){var a="";switch(r){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":a=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":a=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":a=s?"tunnin":"tuntia";break;case"d":return s?"päivän":"päivä";case"dd":a=s?"päivän":"päivää";break;case"M":return s?"kuukauden":"kuukausi";case"MM":a=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":a=s?"vuoden":"vuotta"}return function(e,o){return e<10?o?n[e]:t[e]:e}(e,s)+" "+a}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fil.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr.js":function(e,t,n){!function(e){"use strict";var t=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,n=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fy.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ga.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],weekdaysShort:["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],weekdaysMin:["Do","Lu","Má","Cé","Dé","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gd.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gl.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-deva.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),format:"जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार".split("_"),weekdaysShort:"आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.".split("_"),weekdaysMin:"आ_सो_मं_बु_ब्रे_सु_शे".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [वाजतां]",LTS:"A h:mm:ss [वाजतां]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [वाजतां]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [वाजतां]",llll:"ddd, D MMM YYYY, A h:mm [वाजतां]"},calendar:{sameDay:"[आयज] LT",nextDay:"[फाल्यां] LT",nextWeek:"[फुडलो] dddd[,] LT",lastDay:"[काल] LT",lastWeek:"[फाटलो] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s आदीं",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(वेर)/,ordinal:function(e,t){switch(t){case"D":return e+"वेर";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/राती|सकाळीं|दनपारां|सांजे/,meridiemHour:function(e,t){return 12===e&&(e=0),"राती"===t?e<4?e:e+12:"सकाळीं"===t?e:"दनपारां"===t?e>12?e:e+12:"सांजे"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"राती":e<12?"सकाळीं":e<16?"दनपारां":e<20?"सांजे":"राती"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-latn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokallim"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gu.js":function(e,t,n){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પહેલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/he.js":function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hi.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},o=[/^जन/i,/^फ़र|फर/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सितं|सित/i,/^अक्टू/i,/^नव|नवं/i,/^दिसं|दिस/i];e.defineLocale("hi",{months:{format:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),standalone:"जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर".split("_")},monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},monthsParse:o,longMonthsParse:o,shortMonthsParse:[/^जन/i,/^फ़र/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सित/i,/^अक्टू/i,/^नव/i,/^दिस/i],monthsRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsShortRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsStrictRegex:/^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,monthsShortStrictRegex:/^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hr.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hu.js":function(e,t,n){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,o){var r=e;switch(n){case"s":return o||t?"néhány másodperc":"néhány másodperce";case"ss":return r+(o||t)?" másodperc":" másodperce";case"m":return"egy"+(o||t?" perc":" perce");case"mm":return r+(o||t?" perc":" perce");case"h":return"egy"+(o||t?" óra":" órája");case"hh":return r+(o||t?" óra":" órája");case"d":return"egy"+(o||t?" nap":" napja");case"dd":return r+(o||t?" nap":" napja");case"M":return"egy"+(o||t?" hónap":" hónapja");case"MM":return r+(o||t?" hónap":" hónapja");case"y":return"egy"+(o||t?" év":" éve");case"yy":return r+(o||t?" év":" éve")}return""}function o(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return o.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return o.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hy-am.js":function(e,t,n){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/id.js":function(e,t,n){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/is.js":function(e,t,n){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function n(e,n,o,r){var s=e+" ";switch(o){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?s+(n||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?s+(n||r?"mínútur":"mínútum"):n?s+"mínúta":s+"mínútu";case"hh":return t(e)?s+(n||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return t(e)?n?s+"dagar":s+(r?"daga":"dögum"):n?s+"dagur":s+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return t(e)?n?s+"mánuðir":s+(r?"mánuði":"mánuðum"):n?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return t(e)?s+(n||r?"ár":"árum"):s+(n||r?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ja.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,t){return"元"===t[1]?1:parseInt(t[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/jv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ka.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,(function(e,t,n){return"ი"===n?t+"ში":t+n+"ში"}))},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kk.js":function(e,t,n){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/km.js":function(e,t,n){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kn.js":function(e,t,n){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ko.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ku.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:o,monthsShort:o,weekdays:"یه\200cكشه\200cممه\200c_دووشه\200cممه\200c_سێشه\200cممه\200c_چوارشه\200cممه\200c_پێنجشه\200cممه\200c_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysShort:"یه\200cكشه\200cم_دووشه\200cم_سێشه\200cم_چوارشه\200cم_پێنجشه\200cم_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره\200c|به\200cیانی/,isPM:function(e){return/ئێواره\200c/.test(e)},meridiem:function(e,t,n){return e<12?"به\200cیانی":"ئێواره\200c"},calendar:{sameDay:"[ئه\200cمرۆ كاتژمێر] LT",nextDay:"[به\200cیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له\200c %s",past:"%s",s:"چه\200cند چركه\200cیه\200cك",ss:"چركه\200c %d",m:"یه\200cك خوله\200cك",mm:"%d خوله\200cك",h:"یه\200cك كاتژمێر",hh:"%d كاتژمێر",d:"یه\200cك ڕۆژ",dd:"%d ڕۆژ",M:"یه\200cك مانگ",MM:"%d مانگ",y:"یه\200cك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ky.js":function(e,t,n){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lb.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?r[n][0]:r[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lt.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,o){return t?r(n)[0]:o?r(n)[1]:r(n)[2]}function o(e){return e%10==0||e>10&&e<20}function r(e){return t[e].split("_")}function s(e,t,s,a){var i=e+" ";return 1===e?i+n(0,t,s[0],a):t?i+(o(e)?r(s)[1]:r(s)[0]):a?i+r(s)[1]:i+(o(e)?r(s)[1]:r(s)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,o){return t?"kelios sekundės":o?"kelių sekundžių":"kelias sekundes"},ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lv.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function o(e,o,r){return e+" "+n(t[r],e,o)}function r(e,o,r){return n(t[r],e,o)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:o,m:r,mm:o,h:r,hh:o,d:r,dd:o,M:r,MM:o,y:r,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/me.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ml.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mr.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function o(e,t,n,o){var r="";if(t)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(e,t){return 12===e&&(e=0),"पहाटे"===t||"सकाळी"===t?e:"दुपारी"===t||"सायंकाळी"===t||"रात्री"===t?e>=12?e:e+12:void 0},meridiem:function(e,t,n){return e>=0&&e<6?"पहाटे":e<12?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms-my.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/my.js":function(e,t,n){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ne.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl-be.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",w:"één week",ww:"%d weken",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/oc-lnc.js":function(e,t,n){!function(e){"use strict";e.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pa-in.js":function(e,t,n){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pl.js":function(e,t,n){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),o=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function r(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function s(e,t,n){var o=e+" ";switch(n){case"ss":return o+(r(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return o+(r(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return o+(r(e)?"godziny":"godzin");case"ww":return o+(r(e)?"tygodnie":"tygodni");case"MM":return o+(r(e)?"miesiące":"miesięcy");case"yy":return o+(r(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,o){return e?/D MMMM/.test(o)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:s,m:s,mm:s,h:s,hh:s,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:s,M:"miesiąc",MM:s,y:"rok",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt-br.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",invalidDate:"Data inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ro.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=" ";return(e%100>=20||e>=100&&e%100==0)&&(o=" de "),e+o+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"săptămâni",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,w:"o săptămână",ww:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ru.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"минута":"минуту":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,w:"неделя",ww:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sd.js":function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/se.js":function(e,t,n){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/si.js":function(e,t,n){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්\200dරේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්\200dරහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්\200dරහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්\200dර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sk.js":function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function o(e){return e>1&&e<5}function r(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(o(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(o(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(o(e)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(o(e)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(o(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(o(e)?"roky":"rokov"):s+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===e?t?"sekundo":"sekundi":2===e?t||o?"sekundi":"sekundah":e<5?t||o?"sekunde":"sekundah":"sekund");case"m":return t?"ena minuta":"eno minuto";case"mm":return r+(1===e?t?"minuta":"minuto":2===e?t||o?"minuti":"minutama":e<5?t||o?"minute":"minutami":t||o?"minut":"minutami");case"h":return t?"ena ura":"eno uro";case"hh":return r+(1===e?t?"ura":"uro":2===e?t||o?"uri":"urama":e<5?t||o?"ure":"urami":t||o?"ur":"urami");case"d":return t||o?"en dan":"enim dnem";case"dd":return r+(1===e?t||o?"dan":"dnem":2===e?t||o?"dni":"dnevoma":t||o?"dni":"dnevi");case"M":return t||o?"en mesec":"enim mesecem";case"MM":return r+(1===e?t||o?"mesec":"mesecem":2===e?t||o?"meseca":"mesecema":e<5?t||o?"mesece":"meseci":t||o?"mesecev":"meseci");case"y":return t||o?"eno leto":"enim letom";case"yy":return r+(1===e?t||o?"leto":"letom":2===e?t||o?"leti":"letoma":e<5?t||o?"leta":"leti":t||o?"let":"leti")}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sq.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr-cyrl.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ss.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?":e":1===t||2===t?":a":":e")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ta.js":function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/te.js":function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tet.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tg.js":function(e,t,n){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/th.js":function(e,t,n){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",w:"1 สัปดาห์",ww:"%d สัปดาห์",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tk.js":function(e,t,n){!function(e){"use strict";var t={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tl-ph.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tlh.js":function(e,t,n){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,o,r){var s=function(e){var n=Math.floor(e%1e3/100),o=Math.floor(e%100/10),r=e%10,s="";return n>0&&(s+=t[n]+"vatlh"),o>0&&(s+=(""!==s?" ":"")+t[o]+"maH"),r>0&&(s+=(""!==s?" ":"")+t[r]),""===s?"pagh":s}(e);switch(o){case"ss":return s+" lup";case"mm":return s+" tup";case"hh":return s+" rep";case"dd":return s+" jaj";case"MM":return s+" jar";case"yy":return s+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tr.js":function(e,t,n){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,n){return e<12?n?"öö":"ÖÖ":n?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return"ös"===e||"ÖS"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return o||t?r[n][0]:r[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ug-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"يېرىم كېچە":o<900?"سەھەر":o<1130?"چۈشتىن بۇرۇن":o<1230?"چۈش":o<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uk.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(o=+e,r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ur.js":function(e,t,n){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/vi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",w:"một tuần",ww:"%d tuần",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/x-pseudo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/yo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-hk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1200?"上午":1200===o?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-mo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-tw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale sync recursive ^\\.\\/.*$":(e,t,n)=>{var o={"./af":"./node_modules/moment/locale/af.js","./af.js":"./node_modules/moment/locale/af.js","./ar":"./node_modules/moment/locale/ar.js","./ar-dz":"./node_modules/moment/locale/ar-dz.js","./ar-dz.js":"./node_modules/moment/locale/ar-dz.js","./ar-kw":"./node_modules/moment/locale/ar-kw.js","./ar-kw.js":"./node_modules/moment/locale/ar-kw.js","./ar-ly":"./node_modules/moment/locale/ar-ly.js","./ar-ly.js":"./node_modules/moment/locale/ar-ly.js","./ar-ma":"./node_modules/moment/locale/ar-ma.js","./ar-ma.js":"./node_modules/moment/locale/ar-ma.js","./ar-sa":"./node_modules/moment/locale/ar-sa.js","./ar-sa.js":"./node_modules/moment/locale/ar-sa.js","./ar-tn":"./node_modules/moment/locale/ar-tn.js","./ar-tn.js":"./node_modules/moment/locale/ar-tn.js","./ar.js":"./node_modules/moment/locale/ar.js","./az":"./node_modules/moment/locale/az.js","./az.js":"./node_modules/moment/locale/az.js","./be":"./node_modules/moment/locale/be.js","./be.js":"./node_modules/moment/locale/be.js","./bg":"./node_modules/moment/locale/bg.js","./bg.js":"./node_modules/moment/locale/bg.js","./bm":"./node_modules/moment/locale/bm.js","./bm.js":"./node_modules/moment/locale/bm.js","./bn":"./node_modules/moment/locale/bn.js","./bn-bd":"./node_modules/moment/locale/bn-bd.js","./bn-bd.js":"./node_modules/moment/locale/bn-bd.js","./bn.js":"./node_modules/moment/locale/bn.js","./bo":"./node_modules/moment/locale/bo.js","./bo.js":"./node_modules/moment/locale/bo.js","./br":"./node_modules/moment/locale/br.js","./br.js":"./node_modules/moment/locale/br.js","./bs":"./node_modules/moment/locale/bs.js","./bs.js":"./node_modules/moment/locale/bs.js","./ca":"./node_modules/moment/locale/ca.js","./ca.js":"./node_modules/moment/locale/ca.js","./cs":"./node_modules/moment/locale/cs.js","./cs.js":"./node_modules/moment/locale/cs.js","./cv":"./node_modules/moment/locale/cv.js","./cv.js":"./node_modules/moment/locale/cv.js","./cy":"./node_modules/moment/locale/cy.js","./cy.js":"./node_modules/moment/locale/cy.js","./da":"./node_modules/moment/locale/da.js","./da.js":"./node_modules/moment/locale/da.js","./de":"./node_modules/moment/locale/de.js","./de-at":"./node_modules/moment/locale/de-at.js","./de-at.js":"./node_modules/moment/locale/de-at.js","./de-ch":"./node_modules/moment/locale/de-ch.js","./de-ch.js":"./node_modules/moment/locale/de-ch.js","./de.js":"./node_modules/moment/locale/de.js","./dv":"./node_modules/moment/locale/dv.js","./dv.js":"./node_modules/moment/locale/dv.js","./el":"./node_modules/moment/locale/el.js","./el.js":"./node_modules/moment/locale/el.js","./en-au":"./node_modules/moment/locale/en-au.js","./en-au.js":"./node_modules/moment/locale/en-au.js","./en-ca":"./node_modules/moment/locale/en-ca.js","./en-ca.js":"./node_modules/moment/locale/en-ca.js","./en-gb":"./node_modules/moment/locale/en-gb.js","./en-gb.js":"./node_modules/moment/locale/en-gb.js","./en-ie":"./node_modules/moment/locale/en-ie.js","./en-ie.js":"./node_modules/moment/locale/en-ie.js","./en-il":"./node_modules/moment/locale/en-il.js","./en-il.js":"./node_modules/moment/locale/en-il.js","./en-in":"./node_modules/moment/locale/en-in.js","./en-in.js":"./node_modules/moment/locale/en-in.js","./en-nz":"./node_modules/moment/locale/en-nz.js","./en-nz.js":"./node_modules/moment/locale/en-nz.js","./en-sg":"./node_modules/moment/locale/en-sg.js","./en-sg.js":"./node_modules/moment/locale/en-sg.js","./eo":"./node_modules/moment/locale/eo.js","./eo.js":"./node_modules/moment/locale/eo.js","./es":"./node_modules/moment/locale/es.js","./es-do":"./node_modules/moment/locale/es-do.js","./es-do.js":"./node_modules/moment/locale/es-do.js","./es-mx":"./node_modules/moment/locale/es-mx.js","./es-mx.js":"./node_modules/moment/locale/es-mx.js","./es-us":"./node_modules/moment/locale/es-us.js","./es-us.js":"./node_modules/moment/locale/es-us.js","./es.js":"./node_modules/moment/locale/es.js","./et":"./node_modules/moment/locale/et.js","./et.js":"./node_modules/moment/locale/et.js","./eu":"./node_modules/moment/locale/eu.js","./eu.js":"./node_modules/moment/locale/eu.js","./fa":"./node_modules/moment/locale/fa.js","./fa.js":"./node_modules/moment/locale/fa.js","./fi":"./node_modules/moment/locale/fi.js","./fi.js":"./node_modules/moment/locale/fi.js","./fil":"./node_modules/moment/locale/fil.js","./fil.js":"./node_modules/moment/locale/fil.js","./fo":"./node_modules/moment/locale/fo.js","./fo.js":"./node_modules/moment/locale/fo.js","./fr":"./node_modules/moment/locale/fr.js","./fr-ca":"./node_modules/moment/locale/fr-ca.js","./fr-ca.js":"./node_modules/moment/locale/fr-ca.js","./fr-ch":"./node_modules/moment/locale/fr-ch.js","./fr-ch.js":"./node_modules/moment/locale/fr-ch.js","./fr.js":"./node_modules/moment/locale/fr.js","./fy":"./node_modules/moment/locale/fy.js","./fy.js":"./node_modules/moment/locale/fy.js","./ga":"./node_modules/moment/locale/ga.js","./ga.js":"./node_modules/moment/locale/ga.js","./gd":"./node_modules/moment/locale/gd.js","./gd.js":"./node_modules/moment/locale/gd.js","./gl":"./node_modules/moment/locale/gl.js","./gl.js":"./node_modules/moment/locale/gl.js","./gom-deva":"./node_modules/moment/locale/gom-deva.js","./gom-deva.js":"./node_modules/moment/locale/gom-deva.js","./gom-latn":"./node_modules/moment/locale/gom-latn.js","./gom-latn.js":"./node_modules/moment/locale/gom-latn.js","./gu":"./node_modules/moment/locale/gu.js","./gu.js":"./node_modules/moment/locale/gu.js","./he":"./node_modules/moment/locale/he.js","./he.js":"./node_modules/moment/locale/he.js","./hi":"./node_modules/moment/locale/hi.js","./hi.js":"./node_modules/moment/locale/hi.js","./hr":"./node_modules/moment/locale/hr.js","./hr.js":"./node_modules/moment/locale/hr.js","./hu":"./node_modules/moment/locale/hu.js","./hu.js":"./node_modules/moment/locale/hu.js","./hy-am":"./node_modules/moment/locale/hy-am.js","./hy-am.js":"./node_modules/moment/locale/hy-am.js","./id":"./node_modules/moment/locale/id.js","./id.js":"./node_modules/moment/locale/id.js","./is":"./node_modules/moment/locale/is.js","./is.js":"./node_modules/moment/locale/is.js","./it":"./node_modules/moment/locale/it.js","./it-ch":"./node_modules/moment/locale/it-ch.js","./it-ch.js":"./node_modules/moment/locale/it-ch.js","./it.js":"./node_modules/moment/locale/it.js","./ja":"./node_modules/moment/locale/ja.js","./ja.js":"./node_modules/moment/locale/ja.js","./jv":"./node_modules/moment/locale/jv.js","./jv.js":"./node_modules/moment/locale/jv.js","./ka":"./node_modules/moment/locale/ka.js","./ka.js":"./node_modules/moment/locale/ka.js","./kk":"./node_modules/moment/locale/kk.js","./kk.js":"./node_modules/moment/locale/kk.js","./km":"./node_modules/moment/locale/km.js","./km.js":"./node_modules/moment/locale/km.js","./kn":"./node_modules/moment/locale/kn.js","./kn.js":"./node_modules/moment/locale/kn.js","./ko":"./node_modules/moment/locale/ko.js","./ko.js":"./node_modules/moment/locale/ko.js","./ku":"./node_modules/moment/locale/ku.js","./ku.js":"./node_modules/moment/locale/ku.js","./ky":"./node_modules/moment/locale/ky.js","./ky.js":"./node_modules/moment/locale/ky.js","./lb":"./node_modules/moment/locale/lb.js","./lb.js":"./node_modules/moment/locale/lb.js","./lo":"./node_modules/moment/locale/lo.js","./lo.js":"./node_modules/moment/locale/lo.js","./lt":"./node_modules/moment/locale/lt.js","./lt.js":"./node_modules/moment/locale/lt.js","./lv":"./node_modules/moment/locale/lv.js","./lv.js":"./node_modules/moment/locale/lv.js","./me":"./node_modules/moment/locale/me.js","./me.js":"./node_modules/moment/locale/me.js","./mi":"./node_modules/moment/locale/mi.js","./mi.js":"./node_modules/moment/locale/mi.js","./mk":"./node_modules/moment/locale/mk.js","./mk.js":"./node_modules/moment/locale/mk.js","./ml":"./node_modules/moment/locale/ml.js","./ml.js":"./node_modules/moment/locale/ml.js","./mn":"./node_modules/moment/locale/mn.js","./mn.js":"./node_modules/moment/locale/mn.js","./mr":"./node_modules/moment/locale/mr.js","./mr.js":"./node_modules/moment/locale/mr.js","./ms":"./node_modules/moment/locale/ms.js","./ms-my":"./node_modules/moment/locale/ms-my.js","./ms-my.js":"./node_modules/moment/locale/ms-my.js","./ms.js":"./node_modules/moment/locale/ms.js","./mt":"./node_modules/moment/locale/mt.js","./mt.js":"./node_modules/moment/locale/mt.js","./my":"./node_modules/moment/locale/my.js","./my.js":"./node_modules/moment/locale/my.js","./nb":"./node_modules/moment/locale/nb.js","./nb.js":"./node_modules/moment/locale/nb.js","./ne":"./node_modules/moment/locale/ne.js","./ne.js":"./node_modules/moment/locale/ne.js","./nl":"./node_modules/moment/locale/nl.js","./nl-be":"./node_modules/moment/locale/nl-be.js","./nl-be.js":"./node_modules/moment/locale/nl-be.js","./nl.js":"./node_modules/moment/locale/nl.js","./nn":"./node_modules/moment/locale/nn.js","./nn.js":"./node_modules/moment/locale/nn.js","./oc-lnc":"./node_modules/moment/locale/oc-lnc.js","./oc-lnc.js":"./node_modules/moment/locale/oc-lnc.js","./pa-in":"./node_modules/moment/locale/pa-in.js","./pa-in.js":"./node_modules/moment/locale/pa-in.js","./pl":"./node_modules/moment/locale/pl.js","./pl.js":"./node_modules/moment/locale/pl.js","./pt":"./node_modules/moment/locale/pt.js","./pt-br":"./node_modules/moment/locale/pt-br.js","./pt-br.js":"./node_modules/moment/locale/pt-br.js","./pt.js":"./node_modules/moment/locale/pt.js","./ro":"./node_modules/moment/locale/ro.js","./ro.js":"./node_modules/moment/locale/ro.js","./ru":"./node_modules/moment/locale/ru.js","./ru.js":"./node_modules/moment/locale/ru.js","./sd":"./node_modules/moment/locale/sd.js","./sd.js":"./node_modules/moment/locale/sd.js","./se":"./node_modules/moment/locale/se.js","./se.js":"./node_modules/moment/locale/se.js","./si":"./node_modules/moment/locale/si.js","./si.js":"./node_modules/moment/locale/si.js","./sk":"./node_modules/moment/locale/sk.js","./sk.js":"./node_modules/moment/locale/sk.js","./sl":"./node_modules/moment/locale/sl.js","./sl.js":"./node_modules/moment/locale/sl.js","./sq":"./node_modules/moment/locale/sq.js","./sq.js":"./node_modules/moment/locale/sq.js","./sr":"./node_modules/moment/locale/sr.js","./sr-cyrl":"./node_modules/moment/locale/sr-cyrl.js","./sr-cyrl.js":"./node_modules/moment/locale/sr-cyrl.js","./sr.js":"./node_modules/moment/locale/sr.js","./ss":"./node_modules/moment/locale/ss.js","./ss.js":"./node_modules/moment/locale/ss.js","./sv":"./node_modules/moment/locale/sv.js","./sv.js":"./node_modules/moment/locale/sv.js","./sw":"./node_modules/moment/locale/sw.js","./sw.js":"./node_modules/moment/locale/sw.js","./ta":"./node_modules/moment/locale/ta.js","./ta.js":"./node_modules/moment/locale/ta.js","./te":"./node_modules/moment/locale/te.js","./te.js":"./node_modules/moment/locale/te.js","./tet":"./node_modules/moment/locale/tet.js","./tet.js":"./node_modules/moment/locale/tet.js","./tg":"./node_modules/moment/locale/tg.js","./tg.js":"./node_modules/moment/locale/tg.js","./th":"./node_modules/moment/locale/th.js","./th.js":"./node_modules/moment/locale/th.js","./tk":"./node_modules/moment/locale/tk.js","./tk.js":"./node_modules/moment/locale/tk.js","./tl-ph":"./node_modules/moment/locale/tl-ph.js","./tl-ph.js":"./node_modules/moment/locale/tl-ph.js","./tlh":"./node_modules/moment/locale/tlh.js","./tlh.js":"./node_modules/moment/locale/tlh.js","./tr":"./node_modules/moment/locale/tr.js","./tr.js":"./node_modules/moment/locale/tr.js","./tzl":"./node_modules/moment/locale/tzl.js","./tzl.js":"./node_modules/moment/locale/tzl.js","./tzm":"./node_modules/moment/locale/tzm.js","./tzm-latn":"./node_modules/moment/locale/tzm-latn.js","./tzm-latn.js":"./node_modules/moment/locale/tzm-latn.js","./tzm.js":"./node_modules/moment/locale/tzm.js","./ug-cn":"./node_modules/moment/locale/ug-cn.js","./ug-cn.js":"./node_modules/moment/locale/ug-cn.js","./uk":"./node_modules/moment/locale/uk.js","./uk.js":"./node_modules/moment/locale/uk.js","./ur":"./node_modules/moment/locale/ur.js","./ur.js":"./node_modules/moment/locale/ur.js","./uz":"./node_modules/moment/locale/uz.js","./uz-latn":"./node_modules/moment/locale/uz-latn.js","./uz-latn.js":"./node_modules/moment/locale/uz-latn.js","./uz.js":"./node_modules/moment/locale/uz.js","./vi":"./node_modules/moment/locale/vi.js","./vi.js":"./node_modules/moment/locale/vi.js","./x-pseudo":"./node_modules/moment/locale/x-pseudo.js","./x-pseudo.js":"./node_modules/moment/locale/x-pseudo.js","./yo":"./node_modules/moment/locale/yo.js","./yo.js":"./node_modules/moment/locale/yo.js","./zh-cn":"./node_modules/moment/locale/zh-cn.js","./zh-cn.js":"./node_modules/moment/locale/zh-cn.js","./zh-hk":"./node_modules/moment/locale/zh-hk.js","./zh-hk.js":"./node_modules/moment/locale/zh-hk.js","./zh-mo":"./node_modules/moment/locale/zh-mo.js","./zh-mo.js":"./node_modules/moment/locale/zh-mo.js","./zh-tw":"./node_modules/moment/locale/zh-tw.js","./zh-tw.js":"./node_modules/moment/locale/zh-tw.js"};function r(e){var t=s(e);return n(t)}function s(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=s,e.exports=r,r.id="./node_modules/moment/locale sync recursive ^\\.\\/.*$"},"./node_modules/ng-csv/build/ng-csv.min.js":(e,t)=>{var n;n=window,document,angular.module("ngCsv.config",[]).value("ngCsv.config",{debug:!0}).config(["$compileProvider",function(e){angular.isDefined(e.urlSanitizationWhitelist)?e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/):e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)}]),angular.module("ngCsv.directives",["ngCsv.services"]),angular.module("ngCsv.services",[]),angular.module("ngCsv",["ngCsv.config","ngCsv.services","ngCsv.directives","ngSanitize"]),e.exports===t&&(e.exports="ngCsv"),angular.module("ngCsv.services").service("CSV",["$q",function(e){var t="\r\n",n={"\\t":"\t","\\b":"\b","\\v":"\v","\\f":"\f","\\r":"\r"};this.stringifyField=function(e,t){return"locale"===t.decimalSep&&this.isFloat(e)?e.toLocaleString():"."!==t.decimalSep&&this.isFloat(e)?e.toString().replace(".",t.decimalSep):"string"==typeof e?(e=e.replace(/"/g,'""'),(t.quoteStrings||e.indexOf(",")>-1||e.indexOf("\n")>-1||e.indexOf("\r")>-1)&&(e=t.txtDelim+e+t.txtDelim),e):"boolean"==typeof e?e?"TRUE":"FALSE":e},this.isFloat=function(e){return+e===e&&(!isFinite(e)||Boolean(e%1))},this.stringify=function(n,o){var r=e.defer(),s=this,a="",i="",d=e.when(n).then((function(e){var n,d;angular.isDefined(o.header)&&o.header&&(n=[],angular.forEach(o.header,(function(e){this.push(s.stringifyField(e,o))}),n),d=n.join(o.fieldSep?o.fieldSep:","),i+=d+t);var u,m,l=[];angular.isArray(e)?l=e:angular.isFunction(e)&&(l=e()),angular.isDefined(o.label)&&o.label&&"boolean"==typeof o.label&&(u=[],angular.forEach(l[0],(function(e,t){this.push(s.stringifyField(t,o))}),u),m=u.join(o.fieldSep?o.fieldSep:","),i+=m+t),angular.forEach(l,(function(e,n){var r,a,d=angular.copy(l[n]);a=[];var u=o.columnOrder?o.columnOrder:d;angular.forEach(u,(function(e){var t=o.columnOrder?d[e]:e;this.push(s.stringifyField(t,o))}),a),r=a.join(o.fieldSep?o.fieldSep:","),i+=n<l.length?r+t:r})),o.addByteOrderMarker&&(a+="\ufeff"),a+=i,r.resolve(a)}));return"function"==typeof d.catch&&d.catch((function(e){r.reject(e)})),r.promise},this.isSpecialChar=function(e){return void 0!==n[e]},this.getSpecialChar=function(e){return n[e]}}]),angular.module("ngCsv.directives").directive("ngCsv",["$parse","$q","CSV","$document","$timeout",function(e,t,o,r,s){return{restrict:"AC",scope:{data:"&ngCsv",filename:"@filename",header:"&csvHeader",columnOrder:"&csvColumnOrder",txtDelim:"@textDelimiter",decimalSep:"@decimalSeparator",quoteStrings:"@quoteStrings",fieldSep:"@fieldSeparator",lazyLoad:"@lazyLoad",addByteOrderMarker:"@addBom",ngClick:"&",charset:"@charset",label:"&csvLabel"},controller:["$scope","$element","$attrs","$transclude",function(e,n,r){e.csv="",angular.isDefined(e.lazyLoad)&&"true"==e.lazyLoad||angular.isArray(e.data)&&e.$watch("data",(function(){e.buildCSV()}),!0),e.getFilename=function(){return e.filename||"download.csv"},e.buildCSV=function(){var s=t.defer();return n.addClass(r.ngCsvLoadingClass||"ng-csv-loading"),o.stringify(e.data(),function(){var t={txtDelim:e.txtDelim?e.txtDelim:'"',decimalSep:e.decimalSep?e.decimalSep:".",quoteStrings:e.quoteStrings,addByteOrderMarker:e.addByteOrderMarker};return angular.isDefined(r.csvHeader)&&(t.header=e.$eval(e.header)),angular.isDefined(r.csvColumnOrder)&&(t.columnOrder=e.$eval(e.columnOrder)),angular.isDefined(r.csvLabel)&&(t.label=e.$eval(e.label)),t.fieldSep=e.fieldSep?e.fieldSep:",",t.fieldSep=o.isSpecialChar(t.fieldSep)?o.getSpecialChar(t.fieldSep):t.fieldSep,t}()).then((function(t){e.csv=t,n.removeClass(r.ngCsvLoadingClass||"ng-csv-loading"),s.resolve(t)})),e.$apply(),s.promise}}],link:function(e,t){t.bind("click",(function(){e.buildCSV().then((function(){!function(){var t=e.charset||"utf-8",o=new Blob([e.csv],{type:"text/csv;charset="+t+";"});if(n.navigator.msSaveOrOpenBlob)navigator.msSaveBlob(o,e.getFilename());else{var a=angular.element('<div data-tap-disabled="true"><a></a></div>'),i=angular.element(a.children()[0]);i.attr("href",n.URL.createObjectURL(o)),i.attr("download",e.getFilename()),i.attr("target","_blank"),r.find("body").append(a),s((function(){i[0].click(),i.remove()}),null)}}()})),e.$apply()}))}}}])},"./src/js/chat/chat.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/f4b04fc57c34408c2d9e.html"},"./src/js/closing/closing.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/2444367602029f7ce07b.html"},"./src/js/offline/offline.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/c1e929900f2af303341f.html"},"./src/js/online/online.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/cd310ba2c496545551ae.html"},"./src/js/unmanaged/unmanaged.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/c6696015a1b93372d614.html"},"./src/js/waiting/waiting.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/66a0b4b6e8658e97c814.html"}},e=>{var t=t=>e(e.s=t);e.O(0,["vendor-index","vendor-angular-76f2ed34","vendor-angular-58d021f3","vendor-ng-embed","vendor-moment","vendor-jquery","vendor-jquery.textcomplete","vendor-emojionearea","vendor-emojione","vendor-angular-sanitize","vendor-angular-resource","vendor-angular-messages","vendor-angular-material","vendor-angular-local-storage","vendor-angular-animate","vendor-urlMatcher","vendor-transition","vendor-stateService","vendor-stateDirectives","vendor-flow"],(()=>(t("./node_modules/jquery/dist/jquery.js"),t("./node_modules/angular/index-exposed.js"),t("./node_modules/moment/moment.js"),t("./node_modules/@flowjs/flow.js/src/flow.js"),t("./node_modules/emojione/lib/js/emojione.js"),t("./src/js/index.module.js")))),e.O()}]);
-//# sourceMappingURL=chat.js.map
\ No newline at end of file
Simple merge
Simple merge
diff --cc snippet/3.8.0/scripts/chat.js
Simple merge